From c5a89fed6722268bb60d4d6b267518ef041c100e Mon Sep 17 00:00:00 2001 From: Dan White Date: Fri, 3 Dec 2021 06:55:55 -0700 Subject: [PATCH] syncing much outdated upstream --- .github/labeler.yml | 1 - .github/workflows/api.yml | 3 +- .github/workflows/cli.yml | 7 +- .github/workflows/develop_api.yml | 3 +- .github/workflows/docs.yml | 2 +- .github/workflows/format.yaml | 25 +- .github/workflows/format_push.yaml | 49 + .github/workflows/lint.yml | 2 +- .github/workflows/unit_test.yml | 30 + .gitignore | 90 +- .gitmodules | 4 - .travis.yml | 38 - .vscode/extensions.json | 3 +- CODE_OF_CONDUCT.md | 24 - Dockerfile | 7 +- Makefile | 123 +- Vagrantfile | 6 +- bin/qmk | 58 - build_full_test.mk | 23 +- build_json.mk | 14 - build_keyboard.mk | 112 +- build_layout.mk | 4 - build_test.mk | 43 +- bootloader.mk => builddefs/bootloader.mk | 49 +- .../disable_features.mk | 3 - builddefs/generic_features.mk | 52 + builddefs/mcu_selection.mk | 697 ++++ message.mk => builddefs/message.mk | 13 +- builddefs/show_options.mk | 148 + common.mk | 25 - common_features.mk | 414 +- data/mappings/info_config.json | 61 +- data/mappings/info_rules.json | 14 +- data/mappings/keyboard_aliases.json | 118 + data/schemas/api_keyboard.jsonschema | 44 +- data/schemas/definitions.jsonschema | 107 + data/schemas/keyboard.jsonschema | 452 ++- data/schemas/keymap.jsonschema | 57 + data/templates/avr/config.h | 138 + data/templates/avr/readme.md | 27 + data/templates/avr/rules.mk | 19 + data/templates/base/%(KEYBOARD)s.c | 4 + data/templates/base/%(KEYBOARD)s.h | 22 + data/templates/base/info.json | 17 + data/templates/base/keymaps/default/keymap.c | 22 + data/templates/base/keymaps/default/readme.md | 1 + data/templates/ps2avrgb/config.h | 128 + data/templates/ps2avrgb/readme.md | 28 + data/templates/ps2avrgb/rules.mk | 17 + docs/ChangeLog/20210529.md | 35 + docs/ChangeLog/20210828.md | 557 +++ docs/ChangeLog/20211127.md | 457 +++ docs/_langs.md | 2 +- docs/_summary.md | 12 +- docs/audio_driver.md | 14 +- docs/breaking_changes.md | 38 +- docs/breaking_changes_history.md | 2 + docs/chibios_upgrade_instructions.md | 59 + docs/cli_commands.md | 96 +- docs/cli_development.md | 6 +- docs/cli_tab_complete.md | 2 +- docs/coding_conventions_python.md | 2 +- docs/compatible_microcontrollers.md | 15 + docs/config_options.md | 69 +- docs/configurator_architecture.md | 61 + docs/configurator_default_keymaps.md | 8 +- docs/configurator_diagram.drawio | 1 + docs/configurator_diagram.svg | 3 + docs/contributing.md | 4 +- docs/custom_matrix.md | 2 +- docs/custom_quantum_functions.md | 80 +- docs/de/README.md | 1 - docs/de/cli.md | 27 +- docs/driver_installation_zadig.md | 88 +- docs/easy_maker.md | 31 + docs/eeprom_driver.md | 3 + docs/es/README.md | 1 - docs/es/hardware_avr.md | 38 +- docs/es/hardware_drivers.md | 4 - docs/es/hardware_keyboard_guidelines.md | 2 - docs/faq_debug.md | 6 +- docs/faq_keymap.md | 16 +- docs/faq_misc.md | 6 +- docs/feature_audio.md | 26 + docs/feature_auto_shift.md | 178 +- docs/feature_backlight.md | 12 +- docs/feature_bluetooth.md | 25 +- docs/feature_bootmagic.md | 141 +- docs/feature_combo.md | 292 +- docs/feature_command.md | 2 +- docs/feature_debounce_type.md | 21 +- docs/feature_digitizer.md | 35 + docs/feature_dip_switch.md | 19 +- docs/feature_encoders.md | 8 +- docs/feature_grave_esc.md | 2 +- docs/feature_haptic_feedback.md | 51 +- docs/feature_joystick.md | 7 +- docs/feature_key_overrides.md | 229 ++ docs/feature_layers.md | 2 +- docs/feature_layouts.md | 2 +- docs/feature_led_indicators.md | 2 + docs/feature_led_matrix.md | 89 +- docs/feature_macros.md | 136 +- docs/feature_midi.md | 2 +- docs/feature_oled_driver.md | 42 +- docs/feature_pointing_device.md | 204 +- docs/feature_programmable_button.md | 74 + docs/feature_ps2_mouse.md | 74 +- docs/feature_rawhid.md | 4 +- docs/feature_rgb_matrix.md | 396 +- docs/feature_rgblight.md | 51 +- docs/feature_split_keyboard.md | 155 +- docs/feature_st7565.md | 274 ++ docs/feature_stenography.md | 22 +- docs/feature_swap_hands.md | 6 +- docs/feature_tap_dance.md | 16 +- docs/feature_userspace.md | 4 +- docs/feature_velocikey.md | 3 +- docs/feature_wpm.md | 26 +- docs/flashing.md | 56 +- docs/flashing_bootloadhid.md | 6 +- docs/fr-fr/README.md | 1 - docs/fr-fr/breaking_changes.md | 1 - docs/fr-fr/cli.md | 27 +- docs/fr-fr/contributing.md | 2 +- docs/fr-fr/faq_debug.md | 4 - docs/fr-fr/faq_keymap.md | 2 +- docs/fr-fr/getting_started_github.md | 1 - docs/getting_started_docker.md | 10 +- docs/getting_started_github.md | 1 - docs/getting_started_make_guide.md | 12 +- docs/getting_started_vagrant.md | 10 +- docs/hand_wire.md | 2 +- docs/hardware_avr.md | 38 +- docs/hardware_drivers.md | 4 - docs/hardware_keyboard_guidelines.md | 34 +- docs/he-il/README.md | 1 - docs/he-il/getting_started_github.md | 1 - docs/how_keyboards_work.md | 2 +- docs/i2c_driver.md | 65 +- docs/internals_gpio_control.md | 2 +- docs/isp_flashing_guide.md | 341 +- docs/ja/README.md | 1 - docs/ja/api_docs.md | 4 +- docs/ja/api_overview.md | 4 +- docs/ja/breaking_changes.md | 1 - docs/ja/cli_commands.md | 14 +- docs/ja/cli_development.md | 4 +- docs/ja/coding_conventions_c.md | 4 +- docs/ja/compatible_microcontrollers.md | 8 +- docs/ja/config_options.md | 28 +- docs/ja/contributing.md | 10 +- docs/ja/custom_quantum_functions.md | 4 +- docs/ja/documentation_templates.md | 4 +- docs/ja/faq_general.md | 4 +- docs/ja/faq_keymap.md | 6 +- docs/ja/faq_misc.md | 4 - docs/ja/feature_advanced_keycodes.md | 176 +- docs/ja/feature_backlight.md | 47 +- docs/ja/feature_bootmagic.md | 2 +- docs/ja/feature_debounce_type.md | 17 - docs/ja/feature_dip_switch.md | 18 +- docs/ja/feature_encoders.md | 10 +- docs/ja/feature_haptic_feedback.md | 7 +- docs/ja/feature_layers.md | 2 +- docs/ja/feature_leader_key.md | 17 +- docs/ja/feature_led_indicators.md | 2 +- docs/ja/feature_led_matrix.md | 4 +- docs/ja/feature_ps2_mouse.md | 37 +- docs/ja/feature_stenography.md | 8 +- docs/ja/feature_swap_hands.md | 4 +- docs/ja/feature_tap_dance.md | 172 +- docs/ja/feature_userspace.md | 4 +- docs/ja/feature_velocikey.md | 1 - docs/ja/getting_started_github.md | 1 - docs/ja/getting_started_vagrant.md | 2 +- docs/ja/hardware_avr.md | 38 +- docs/ja/hardware_drivers.md | 4 - docs/ja/hardware_keyboard_guidelines.md | 2 - docs/ja/how_a_matrix_works.md | 4 +- docs/ja/i2c_driver.md | 11 +- docs/ja/internals_gpio_control.md | 23 +- docs/ja/isp_flashing_guide.md | 22 +- docs/ja/ja_doc_status.sh | 34 + docs/ja/keycodes_basic.md | 261 ++ docs/ja/keycodes_us_ansi_shifted.md | 41 + docs/ja/mod_tap.md | 17 +- docs/ja/newbs_getting_started.md | 8 +- docs/ja/one_shot_keys.md | 11 +- docs/ja/other_eclipse.md | 26 +- docs/ja/other_vscode.md | 5 +- docs/ja/pr_checklist.md | 19 +- docs/ja/proton_c_conversion.md | 4 +- docs/ja/reference_configurator_support.md | 6 +- docs/ja/reference_glossary.md | 4 +- docs/ja/reference_info_json.md | 12 +- docs/ja/syllabus.md | 7 +- docs/ja/understanding_qmk.md | 69 +- docs/keycodes.md | 672 ++-- docs/keycodes_basic.md | 200 +- docs/keycodes_magic.md | 36 + docs/keymap.md | 4 +- docs/ko-kr/README.md | 1 - docs/mod_tap.md | 71 + docs/newbs_getting_started.md | 2 +- docs/newbs_git_resynchronize_a_branch.md | 16 +- docs/one_shot_keys.md | 2 +- docs/other_vscode.md | 18 +- docs/pr_checklist.md | 66 +- docs/pt-br/README.md | 1 - docs/ref_functions.md | 2 +- docs/reference_configurator_support.md | 4 +- docs/reference_glossary.md | 2 +- docs/reference_info_json.md | 106 +- docs/reference_keymap_extras.md | 155 +- docs/ru-ru/README.md | 1 - docs/ru-ru/getting_started_github.md | 1 - docs/serial_driver.md | 19 +- docs/squeezing_avr.md | 180 + docs/syllabus.md | 4 +- docs/tap_hold.md | 196 +- docs/uart_driver.md | 38 +- docs/understanding_qmk.md | 88 +- docs/unit_testing.md | 14 +- docs/ws2812_driver.md | 13 + docs/zh-cn/README.md | 1 - docs/zh-cn/custom_quantum_functions.md | 10 +- docs/zh-cn/faq_debug.md | 5 - docs/zh-cn/faq_keymap.md | 2 +- docs/zh-cn/getting_started_github.md | 1 - doxygen-todo | 15 - drivers/avr/analog.c | 138 - drivers/avr/i2c_master.c | 224 -- drivers/avr/i2c_master.h | 43 - drivers/avr/i2c_slave.c | 86 - drivers/avr/i2c_slave.h | 30 - drivers/avr/serial.c | 563 --- drivers/avr/serial.h | 62 - drivers/avr/uart.c | 170 - drivers/avr/uart.h | 35 - drivers/avr/ws2812.c | 176 - .../bluetooth}/adafruit_ble.cpp | 44 +- .../lufa => drivers/bluetooth}/adafruit_ble.h | 0 .../lufa => drivers/bluetooth}/outputselect.c | 0 .../lufa => drivers/bluetooth}/outputselect.h | 0 .../lufa => drivers/bluetooth}/ringbuffer.hpp | 0 drivers/chibios/analog.c | 321 -- drivers/chibios/i2c_master.c | 121 - drivers/chibios/i2c_master.h | 113 - drivers/chibios/serial.c | 290 -- drivers/chibios/serial.h | 62 - drivers/chibios/serial_usart.c | 208 - drivers/chibios/serial_usart.h | 90 - drivers/chibios/serial_usart_duplex.c | 261 -- drivers/chibios/spi_master.c | 148 - drivers/chibios/spi_master.h | 80 - drivers/chibios/uart.c | 50 - drivers/chibios/uart.h | 77 - drivers/chibios/ws2812.c | 114 - drivers/eeprom/eeprom_i2c.c | 23 +- drivers/eeprom/eeprom_spi.c | 7 +- drivers/haptic/haptic.h | 81 - drivers/haptic/solenoid.c | 17 +- drivers/haptic/solenoid.h | 8 + drivers/lcd/st7565.c | 496 +++ drivers/lcd/st7565.h | 219 ++ drivers/{apa102 => led}/apa102.c | 4 +- drivers/{apa102 => led}/apa102.h | 0 drivers/led/aw20216.c | 142 + drivers/led/aw20216.h | 253 ++ drivers/led/ckled2001.c | 228 ++ drivers/led/ckled2001.h | 339 ++ drivers/{ => led}/issi/is31fl3218.c | 0 drivers/{ => led}/issi/is31fl3218.h | 0 drivers/{ => led}/issi/is31fl3731-simple.c | 13 +- drivers/{ => led}/issi/is31fl3731-simple.h | 3 +- drivers/{ => led}/issi/is31fl3731.c | 13 +- drivers/{ => led}/issi/is31fl3731.h | 3 +- drivers/{ => led}/issi/is31fl3733.c | 25 +- drivers/{ => led}/issi/is31fl3733.h | 12 +- drivers/{ => led}/issi/is31fl3736.c | 19 +- drivers/{ => led}/issi/is31fl3736.h | 13 +- drivers/{ => led}/issi/is31fl3737.c | 62 +- drivers/{ => led}/issi/is31fl3737.h | 13 +- drivers/{ => led}/issi/is31fl3741.c | 36 +- drivers/{ => led}/issi/is31fl3741.h | 16 +- drivers/oled/oled_driver.c | 751 ---- drivers/oled/oled_driver.h | 12 +- drivers/oled/ssd1306_sh1106.c | 781 ++++ {tmk_core/protocol => drivers/ps2}/ps2.h | 0 .../protocol => drivers/ps2}/ps2_busywait.c | 0 .../protocol => drivers/ps2}/ps2_interrupt.c | 91 +- {tmk_core/protocol => drivers/ps2}/ps2_io.h | 0 .../protocol => drivers/ps2}/ps2_mouse.c | 17 +- .../protocol => drivers/ps2}/ps2_mouse.h | 0 drivers/qwiic/micro_oled.c | 482 --- drivers/qwiic/micro_oled.h | 134 - drivers/qwiic/qwiic.c | 31 - drivers/qwiic/qwiic.h | 28 - drivers/qwiic/qwiic.mk | 17 - drivers/qwiic/util/font5x7.h | 39 - drivers/qwiic/util/font8x16.h | 39 - drivers/sensors/adns5050.c | 209 + drivers/sensors/adns5050.h | 72 + drivers/sensors/adns9800.c | 218 ++ drivers/sensors/adns9800.h | 65 + drivers/sensors/adns9800_srom_A6.h | 202 + drivers/sensors/analog_joystick.c | 94 + drivers/sensors/analog_joystick.h | 51 + drivers/sensors/cirque_pinnacle.c | 232 ++ drivers/sensors/cirque_pinnacle.h | 74 + drivers/sensors/cirque_pinnacle_i2c.c | 43 + drivers/sensors/cirque_pinnacle_spi.c | 52 + drivers/sensors/pimoroni_trackball.c | 92 + drivers/sensors/pimoroni_trackball.h | 61 + drivers/sensors/pmw3360.c | 279 ++ drivers/sensors/pmw3360.h | 94 + drivers/sensors/pmw3360_firmware.h | 288 ++ drivers/sensors/pmw3389_firmware.h | 303 ++ drivers/serial.h | 46 + .../is31fl3731c/board_is31fl3731c_template.h | 105 - drivers/ugfx/gdisp/is31fl3731c/driver.mk | 3 - .../gdisp/is31fl3731c/gdisp_is31fl3731c.c | 302 -- .../ugfx/gdisp/is31fl3731c/gdisp_lld_config.h | 36 - .../ugfx/gdisp/st7565/board_st7565_template.h | 96 - drivers/ugfx/gdisp/st7565/driver.mk | 3 - drivers/ugfx/gdisp/st7565/gdisp_lld_ST7565.c | 314 -- drivers/ugfx/gdisp/st7565/gdisp_lld_config.h | 27 - drivers/ugfx/gdisp/st7565/st7565.h | 39 - drivers/usb2422.c | 402 ++ drivers/usb2422.h | 59 + drivers/ws2812.h | 32 +- keyboards/0_sixty/info.json | 2 - keyboards/0_sixty/rules.mk | 7 +- keyboards/0_sixty/underglow/config.h | 62 + keyboards/0_sixty/underglow/rules.mk | 1 + keyboards/0_sixty/underglow/underglow.h | 19 + keyboards/0xc7/61key/61key.c | 17 + keyboards/0xc7/61key/61key.h | 43 + keyboards/0xc7/61key/config.h | 152 + keyboards/0xc7/61key/info.json | 79 + keyboards/0xc7/61key/keymaps/default/keymap.c | 34 + keyboards/0xc7/61key/keymaps/via/keymap.c | 48 + .../61key}/keymaps/via/rules.mk | 0 keyboards/0xc7/61key/readme.md | 27 + keyboards/0xc7/61key/rules.mk | 22 + keyboards/0xcb/1337/1337.c | 7 - keyboards/0xcb/1337/1337.h | 2 + keyboards/0xcb/1337/config.h | 27 +- keyboards/0xcb/1337/gfxfont.c | 3 +- keyboards/0xcb/1337/info.json | 2 - keyboards/0xcb/1337/keymaps/conor/keymap.c | 186 + .../via => 0xcb/1337/keymaps/conor}/rules.mk | 0 keyboards/0xcb/1337/keymaps/default/keymap.c | 98 +- keyboards/0xcb/1337/keymaps/jakob/keymap.c | 71 +- keyboards/0xcb/1337/keymaps/via/keymap.c | 73 +- keyboards/0xcb/1337/readme.md | 12 +- keyboards/0xcb/1337/rules.mk | 11 +- keyboards/0xcb/static/config.h | 69 + keyboards/0xcb/static/gfxfont.c | 277 ++ keyboards/0xcb/static/info.json | 103 + .../0xcb/static/keymaps/bongocat/keymap.c | 298 ++ .../0xcb/static/keymaps/bongocat/rules.mk | 2 + .../0xcb/static/keymaps/default/keymap.c | 191 + keyboards/0xcb/static/keymaps/via/keymap.c | 198 + .../static}/keymaps/via/rules.mk | 0 keyboards/0xcb/static/readme.md | 27 + keyboards/0xcb/static/rules.mk | 24 + keyboards/0xcb/static/static.c | 17 + keyboards/0xcb/static/static.h | 66 + keyboards/10bleoledhub/info.json | 3 - .../10bleoledhub/keymaps/default/keymap.c | 7 +- keyboards/10bleoledhub/keymaps/via/keymap.c | 7 +- keyboards/10bleoledhub/rules.mk | 11 +- keyboards/1upkeyboards/1up60hse/1up60hse.c | 27 - keyboards/1upkeyboards/1up60hse/config.h | 68 - keyboards/1upkeyboards/1up60hse/info.json | 2 - keyboards/1upkeyboards/1up60hse/rules.mk | 18 +- keyboards/1upkeyboards/1up60hte/1up60hte.h | 40 +- keyboards/1upkeyboards/1up60hte/info.json | 149 +- .../1up60hte/keymaps/default/keymap.c | 26 +- .../1up60hte/keymaps/hhkb/keymap.c | 26 +- .../1up60hte/keymaps/via/keymap.c | 52 +- keyboards/1upkeyboards/1up60hte/readme.md | 12 +- keyboards/1upkeyboards/1up60hte/rules.mk | 32 +- keyboards/1upkeyboards/1up60rgb/info.json | 2 - .../1up60rgb/keymaps/default/keymap.c | 42 +- .../1up60rgb/keymaps/iso/keymap.c | 42 +- .../1up60rgb/keymaps/raffle/keymap.c | 2 +- .../1up60rgb/keymaps/tsangan/keymap.c | 42 +- keyboards/1upkeyboards/1up60rgb/rules.mk | 10 +- keyboards/1upkeyboards/super16/config.h | 120 +- keyboards/1upkeyboards/super16/info.json | 2 - .../super16/keymaps/default/keymap.c | 16 - keyboards/1upkeyboards/super16/rules.mk | 18 +- keyboards/1upkeyboards/sweet16/info.json | 2 - .../sweet16/keymaps/ridingintraffic/keymap.c | 44 +- .../sweet16/keymaps/switchtester/rules.mk | 2 +- keyboards/1upkeyboards/sweet16/rules.mk | 3 +- keyboards/1upkeyboards/sweet16/v1/rules.mk | 7 - .../1upkeyboards/sweet16/v2/promicro/rules.mk | 7 - keyboards/2key2crawl/info.json | 2 - keyboards/2key2crawl/rules.mk | 10 +- keyboards/30wer/info.json | 2 - keyboards/30wer/rules.mk | 12 +- keyboards/3keyecosystem/2key2/2key2.c | 35 + keyboards/3keyecosystem/2key2/2key2.h | 33 + keyboards/3keyecosystem/2key2/config.h | 104 + keyboards/3keyecosystem/2key2/info.json | 13 + .../2key2/keymaps/default/keymap.c | 40 + .../3keyecosystem/2key2/keymaps/via/keymap.c | 40 + .../2key2}/keymaps/via/rules.mk | 0 keyboards/3keyecosystem/2key2/readme.md | 24 + keyboards/3keyecosystem/2key2/rules.mk | 21 + keyboards/3w6/info.json | 54 + keyboards/3w6/keymaps/default/keymap.c | 69 + keyboards/3w6/keymaps/helltm/keymap.c | 160 + .../keymaps/manna-harbour_miryoku/config.h | 32 + .../keymaps/manna-harbour_miryoku/keymap.c | 17 + keyboards/3w6/readme.md | 45 + keyboards/3w6/rev1/config.h | 63 + keyboards/3w6/rev1/matrix.c | 258 ++ keyboards/3w6/rev1/readme.md | 32 + keyboards/3w6/rev1/rev1.c | 17 + keyboards/3w6/rev1/rev1.h | 44 + keyboards/3w6/rev1/rules.mk | 26 + keyboards/3w6/rev2/config.h | 63 + .../rev2/keymaps/default_pimoroni/config.h | 21 + .../rev2/keymaps/default_pimoroni/keymap.c | 70 + .../default_pimoroni}/pimoroni_trackball.c | 0 .../default_pimoroni}/pimoroni_trackball.h | 0 .../rev2/keymaps/default_pimoroni/rules.mk | 3 + keyboards/3w6/rev2/matrix.c | 256 ++ keyboards/3w6/rev2/readme.md | 38 + keyboards/3w6/rev2/rev2.c | 34 + keyboards/3w6/rev2/rev2.h | 44 + keyboards/3w6/rev2/rules.mk | 26 + keyboards/40percentclub/25/25.c | 27 - keyboards/40percentclub/25/config.h | 68 - keyboards/40percentclub/25/info.json | 4 - .../40percentclub/25/keymaps/default/keymap.c | 15 - .../40percentclub/25/keymaps/macro/keymap.c | 16 - keyboards/40percentclub/25/rules.mk | 20 +- keyboards/40percentclub/4pack/4pack.c | 23 - keyboards/40percentclub/4pack/config.h | 73 - keyboards/40percentclub/4pack/info.json | 4 +- .../4pack/keymaps/default/keymap.c | 3 - keyboards/40percentclub/4pack/rules.mk | 16 +- keyboards/40percentclub/4x4/4x4.c | 28 - keyboards/40percentclub/4x4/config.h | 68 - keyboards/40percentclub/4x4/info.json | 2 - .../4x4/keymaps/default/keymap.c | 16 - keyboards/40percentclub/4x4/rules.mk | 20 +- keyboards/40percentclub/5x5/5x5.c | 28 - keyboards/40percentclub/5x5/config.h | 68 - keyboards/40percentclub/5x5/info.json | 4 +- .../5x5/keymaps/default/keymap.c | 17 - keyboards/40percentclub/5x5/rules.mk | 18 +- keyboards/40percentclub/6lit/6lit.c | 27 - keyboards/40percentclub/6lit/config.h | 68 - keyboards/40percentclub/6lit/info.json | 4 - .../6lit/keymaps/default/keymap.c | 16 - .../40percentclub/6lit/keymaps/macro/keymap.c | 16 - keyboards/40percentclub/6lit/rules.mk | 20 +- keyboards/40percentclub/foobar/config.h | 68 - keyboards/40percentclub/foobar/foobar.c | 27 - keyboards/40percentclub/foobar/info.json | 4 - .../foobar/keymaps/default/keymap.c | 16 - .../foobar/keymaps/macro/keymap.c | 16 - keyboards/40percentclub/foobar/rules.mk | 18 +- keyboards/40percentclub/gherkin/info.json | 3 - .../gherkin/keymaps/midi/rules.mk | 2 +- .../gherkin/keymaps/steno/rules.mk | 2 +- .../gherkin/keymaps/stevexyz/rules.mk | 2 +- .../gherkin/keymaps/via/keymap.c | 45 + .../gherkin}/keymaps/via/rules.mk | 0 keyboards/40percentclub/gherkin/rules.mk | 10 +- keyboards/40percentclub/half_n_half/config.h | 72 - .../40percentclub/half_n_half/half_n_half.c | 27 - keyboards/40percentclub/half_n_half/info.json | 4 - .../half_n_half/keymaps/default/keymap.c | 12 - keyboards/40percentclub/half_n_half/rules.mk | 18 +- keyboards/40percentclub/i75/config.h | 68 - keyboards/40percentclub/i75/i75.c | 27 - keyboards/40percentclub/i75/info.json | 2 - .../i75/keymaps/default/keymap.c | 12 - keyboards/40percentclub/i75/promicro/rules.mk | 7 - keyboards/40percentclub/i75/rules.mk | 11 +- keyboards/40percentclub/i75/teensy2/rules.mk | 7 - keyboards/40percentclub/luddite/info.json | 2 - keyboards/40percentclub/luddite/rules.mk | 10 +- keyboards/40percentclub/mf68/config.h | 48 - keyboards/40percentclub/mf68/info.json | 2 - .../mf68/keymaps/andyjack/rules.mk | 2 +- .../mf68/keymaps/mf68_ble/rules.mk | 3 +- keyboards/40percentclub/mf68/mf68.c | 7 - keyboards/40percentclub/mf68/rules.mk | 18 +- keyboards/40percentclub/nano/info.json | 2 - .../nano/keymaps/drashna/config.h | 22 + .../nano/keymaps/drashna/keymap.c | 95 - .../nano/keymaps/drashna/rules.mk | 11 +- keyboards/40percentclub/nano/nano.c | 4 - keyboards/40percentclub/nano/rules.mk | 16 +- keyboards/40percentclub/nein/config.h | 73 - keyboards/40percentclub/nein/info.json | 4 +- keyboards/40percentclub/nein/rules.mk | 18 +- keyboards/40percentclub/nori/config.h | 68 - keyboards/40percentclub/nori/info.json | 5 - .../40percentclub/nori/keymaps/macro/keymap.c | 16 - keyboards/40percentclub/nori/nori.c | 27 - keyboards/40percentclub/nori/nori.h | 2 +- keyboards/40percentclub/nori/rules.mk | 20 +- keyboards/40percentclub/polyandry/config.h | 90 + keyboards/40percentclub/polyandry/info.json | 27 + .../polyandry/keymaps/default/keymap.c | 30 + keyboards/40percentclub/polyandry/polyandry.c | 16 + keyboards/40percentclub/polyandry/polyandry.h | 24 + .../40percentclub/polyandry/promicro/config.h | 34 + .../polyandry/promicro/promicro.c | 16 + .../polyandry/promicro/promicro.h | 27 + .../40percentclub/polyandry/promicro/rules.mk | 5 + keyboards/40percentclub/polyandry/readme.md | 53 + keyboards/40percentclub/polyandry/rules.mk | 15 + .../40percentclub/polyandry/teensy2/config.h | 36 + .../40percentclub/polyandry/teensy2/rules.mk | 5 + .../40percentclub/polyandry/teensy2/teensy2.c | 16 + .../40percentclub/polyandry/teensy2/teensy2.h | 32 + keyboards/40percentclub/sixpack/config.h | 7 +- keyboards/40percentclub/sixpack/info.json | 4 +- .../sixpack/keymaps/via/keymap.c | 4 - keyboards/40percentclub/sixpack/rules.mk | 7 +- keyboards/40percentclub/tomato/info.json | 2 - .../tomato/keymaps/default/keymap.c | 44 - keyboards/40percentclub/tomato/rules.mk | 10 +- keyboards/40percentclub/ut47/info.json | 3 - .../ut47/keymaps/nordic/keymap.c | 10 +- .../40percentclub/ut47/keymaps/rgb/keymap.c | 4 +- keyboards/40percentclub/ut47/post_rules.mk | 4 + keyboards/40percentclub/ut47/rules.mk | 23 +- keyboards/40percentclub/ut47/ut47.c | 20 - keyboards/45_ats/info.json | 3 - keyboards/45_ats/rules.mk | 5 +- keyboards/4by3/info.json | 5 - keyboards/4by3/rules.mk | 7 - .../4pplet/aekiso60/keymaps/default/keymap.c | 29 +- .../4pplet/aekiso60/keymaps/via/keymap.c | 56 +- keyboards/4pplet/aekiso60/rev_a/info.json | 2 - keyboards/4pplet/aekiso60/rev_a/rev_a.h | 23 +- keyboards/4pplet/aekiso60/rev_a/rules.mk | 15 +- keyboards/4pplet/bootleg/info.json | 2 - keyboards/4pplet/bootleg/rev_a/rules.mk | 5 +- keyboards/4pplet/eagle_viper_rep/info.json | 5 +- .../4pplet/eagle_viper_rep/rev_a/rules.mk | 3 +- keyboards/4pplet/steezy60/rev_a/info.json | 2 - keyboards/4pplet/steezy60/rev_a/rules.mk | 15 +- keyboards/4pplet/waffling60/info.json | 2 - keyboards/4pplet/waffling60/rev_a/rules.mk | 15 +- keyboards/4pplet/waffling60/rev_b/rules.mk | 5 +- keyboards/6ball/6ball.c | 4 - keyboards/6ball/6ball.h | 16 +- keyboards/6ball/config.h | 5 +- keyboards/6ball/info.json | 2 - keyboards/6ball/rules.mk | 16 +- keyboards/7c8/framework/info.json | 2 - keyboards/7c8/framework/rules.mk | 13 +- keyboards/7skb/info.json | 4 +- keyboards/7skb/keymaps/salicylic/keymap.c | 2 +- keyboards/7skb/rules.mk | 16 +- keyboards/7splus/info.json | 2 - keyboards/7splus/keymaps/salicylic/keymap.c | 2 +- keyboards/7splus/rules.mk | 5 +- keyboards/8pack/info.json | 4 +- keyboards/8pack/rules.mk | 12 +- keyboards/9key/9key.c | 4 - keyboards/9key/9key.h | 16 +- keyboards/9key/config.h | 5 +- keyboards/9key/info.json | 2 - keyboards/9key/keymaps/bcat/keymap.c | 21 +- keyboards/9key/rules.mk | 18 +- keyboards/a_dux/a_dux.c | 37 + keyboards/a_dux/a_dux.h | 47 + keyboards/a_dux/config.h | 83 + keyboards/a_dux/info.json | 52 + keyboards/a_dux/keymaps/daliusd/config.h | 32 + keyboards/a_dux/keymaps/daliusd/keymap.c | 349 ++ keyboards/a_dux/keymaps/daliusd/oneshot.c | 195 + keyboards/a_dux/keymaps/daliusd/oneshot.h | 65 + keyboards/a_dux/keymaps/daliusd/readme.md | 21 + keyboards/a_dux/keymaps/daliusd/rules.mk | 5 + keyboards/a_dux/keymaps/default/config.h | 39 + keyboards/a_dux/keymaps/default/keymap.json | 106 + keyboards/a_dux/keymaps/default/readme.md | 122 + keyboards/a_dux/keymaps/jcmkk3/keymap.c | 130 + keyboards/a_dux/keymaps/jcmkk3/oneshot.c | 72 + keyboards/a_dux/keymaps/jcmkk3/oneshot.h | 46 + keyboards/a_dux/keymaps/jcmkk3/rules.mk | 1 + keyboards/a_dux/readme.md | 45 + keyboards/a_dux/rules.mk | 21 + keyboards/abacus/config.h | 20 - keyboards/abacus/info.json | 3 - keyboards/abacus/keymaps/unicodemap/keymap.c | 3 +- keyboards/abacus/rules.mk | 15 +- keyboards/absinthe/config.h | 6 +- keyboards/absinthe/info.json | 2 - keyboards/absinthe/keymaps/via/keymap.c | 70 + keyboards/absinthe/keymaps/via/rules.mk | 2 + keyboards/absinthe/rules.mk | 15 +- keyboards/abstract/ellipse/info.json | 4 +- .../ellipse/keymaps/abstractkb/keymap.c | 16 - .../abstract/ellipse/keymaps/default/keymap.c | 16 - keyboards/abstract/ellipse/rev1/config.h | 68 - keyboards/abstract/ellipse/rev1/rev1.c | 27 - keyboards/abstract/ellipse/rev1/rules.mk | 16 +- keyboards/acekeyboard/titan60/info.json | 2 - keyboards/acekeyboard/titan60/rules.mk | 5 +- keyboards/acheron/arctic/info.json | 2 - keyboards/acheron/arctic/rules.mk | 7 +- keyboards/acheron/austin/info.json | 3 - keyboards/acheron/austin/keymaps/via/rules.mk | 2 +- keyboards/acheron/austin/rules.mk | 8 +- keyboards/acheron/elongate/config.h | 72 - keyboards/acheron/elongate/info.json | 2 - keyboards/acheron/elongate/rules.mk | 15 +- keyboards/acheron/keebspcb/info.json | 2 - keyboards/acheron/keebspcb/rules.mk | 8 +- keyboards/acheron/lasgweloth/info.json | 2 - keyboards/acheron/lasgweloth/rules.mk | 5 +- keyboards/acheron/shark/config.h | 73 - keyboards/acheron/shark/info.json | 3 - .../acheron/shark/keymaps/ajp10304/readme.md | 7 +- keyboards/acheron/shark/keymaps/via/rules.mk | 2 +- keyboards/acheron/shark/rules.mk | 11 +- keyboards/acheron/shark/shark.c | 35 - keyboards/acr60/acr60.c | 43 +- keyboards/acr60/acr60.h | 173 +- keyboards/acr60/config.h | 24 +- keyboards/acr60/info.json | 471 ++- keyboards/acr60/keymaps/default/keymap.c | 93 +- keyboards/acr60/keymaps/mitch/keymap.c | 38 +- keyboards/acr60/readme.md | 22 +- keyboards/acr60/rules.mk | 10 +- keyboards/adelheid/config.h | 73 - keyboards/adelheid/info.json | 2 - keyboards/adelheid/rules.mk | 5 +- keyboards/adkb96/info.json | 5 +- keyboards/adkb96/rev1/rev1.c | 14 - keyboards/adkb96/rules.mk | 16 +- keyboards/aeboards/aegis/info.json | 2 - keyboards/aeboards/aegis/rules.mk | 18 +- .../aeboards/constellation/rev1/info.json | 2 - .../aeboards/constellation/rev1/rules.mk | 5 +- .../aeboards/constellation/rev2/config.h | 6 +- .../aeboards/constellation/rev2/info.json | 2 - .../aeboards/constellation/rev2/rules.mk | 10 +- keyboards/aeboards/ext65/info.json | 2 - .../aeboards/ext65/keymaps/default/keymap.c | 5 +- keyboards/aeboards/ext65/keymaps/via/keymap.c | 5 +- keyboards/aeboards/ext65/keymaps/via/rules.mk | 2 + keyboards/aeboards/ext65/rev1/rules.mk | 18 +- keyboards/aeboards/ext65/rev2/config.h | 4 +- keyboards/aeboards/ext65/rev2/rev2.c | 4 +- keyboards/aeboards/ext65/rev2/rules.mk | 6 +- keyboards/afternoonlabs/breeze/rev0/info.json | 2 - keyboards/afternoonlabs/breeze/rev0/rules.mk | 5 +- keyboards/afternoonlabs/breeze/rev1/info.json | 2 - keyboards/afternoonlabs/breeze/rev1/rules.mk | 5 +- keyboards/afternoonlabs/gust/rev1/info.json | 2 - keyboards/afternoonlabs/gust/rev1/rules.mk | 5 +- .../afternoonlabs/oceanbreeze/rev1/info.json | 2 - .../afternoonlabs/oceanbreeze/rev1/rules.mk | 5 +- .../southern_breeze/rev1/info.json | 2 - .../southern_breeze/rev1/rules.mk | 5 +- .../summer_breeze/rev1/info.json | 2 - .../afternoonlabs/summer_breeze/rev1/rules.mk | 5 +- keyboards/ai03/andromeda/info.json | 2 - keyboards/ai03/andromeda/rules.mk | 5 +- keyboards/ai03/equinox/config.h | 53 - keyboards/ai03/equinox/info.json | 2 - keyboards/ai03/equinox/rev0/rules.mk | 16 +- keyboards/ai03/equinox/rev1/rules.mk | 16 +- keyboards/ai03/jp60/config.h | 109 + keyboards/ai03/jp60/info.json | 342 ++ keyboards/ai03/jp60/jp60.c | 17 + keyboards/ai03/jp60/jp60.h | 42 + keyboards/ai03/jp60/keymaps/default/config.h | 21 + keyboards/ai03/jp60/keymaps/default/keymap.c | 40 + keyboards/ai03/jp60/keymaps/default/readme.md | 3 + keyboards/ai03/jp60/keymaps/default/rules.mk | 1 + keyboards/ai03/jp60/keymaps/via/config.h | 21 + keyboards/ai03/jp60/keymaps/via/keymap.c | 57 + keyboards/ai03/jp60/keymaps/via/readme.md | 3 + keyboards/ai03/jp60/keymaps/via/rules.mk | 2 + keyboards/ai03/jp60/readme.md | 27 + keyboards/ai03/jp60/rules.mk | 20 + keyboards/ai03/lunar/config.h | 72 - keyboards/ai03/lunar/info.json | 2 - keyboards/ai03/lunar/keymaps/default/keymap.c | 12 - keyboards/ai03/lunar/lunar.c | 6 - keyboards/ai03/lunar/rules.mk | 18 +- keyboards/ai03/orbit/config.h | 68 - keyboards/ai03/orbit/info.json | 4 +- keyboards/ai03/orbit/keymaps/default/keymap.c | 17 - keyboards/ai03/orbit/orbit.c | 16 - keyboards/ai03/orbit/orbit.h | 36 +- keyboards/ai03/orbit/rules.mk | 18 +- keyboards/ai03/orbit/split_util.c | 2 +- keyboards/ai03/orbit_x/config.h | 53 - keyboards/ai03/orbit_x/info.json | 2 - keyboards/ai03/orbit_x/rules.mk | 15 +- keyboards/ai03/polaris/config.h | 53 - keyboards/ai03/polaris/info.json | 2 - keyboards/ai03/polaris/rules.mk | 15 +- keyboards/ai03/quasar/config.h | 73 - keyboards/ai03/quasar/info.json | 4 +- .../ai03/quasar/keymaps/default/keymap.c | 16 - keyboards/ai03/quasar/quasar.c | 35 - keyboards/ai03/quasar/rules.mk | 18 +- keyboards/ai03/soyuz/info.json | 2 - keyboards/ai03/soyuz/keymaps/default/keymap.c | 16 - keyboards/ai03/soyuz/rules.mk | 17 +- keyboards/ai03/soyuz/soyuz.c | 27 - keyboards/ai03/vega/info.json | 2 - keyboards/ai03/vega/rules.mk | 5 +- keyboards/ai03/voyager60_alps/config.h | 2 +- keyboards/ai03/voyager60_alps/info.json | 4 +- keyboards/ai03/voyager60_alps/rules.mk | 5 +- keyboards/ajisai74/info.json | 4 +- keyboards/ajisai74/keymaps/salicylic/keymap.c | 2 +- keyboards/ajisai74/rules.mk | 5 +- keyboards/akb/eb46/eb46.c | 27 - keyboards/akb/eb46/info.json | 2 - keyboards/akb/eb46/rules.mk | 18 +- keyboards/akb/raine/info.json | 2 - keyboards/akb/raine/rules.mk | 18 +- keyboards/akegata_denki/device_one/info.json | 2 - keyboards/akegata_denki/device_one/rules.mk | 2 +- keyboards/al1/al1.c | 1 + keyboards/al1/al1.h | 58 +- keyboards/al1/config.h | 112 +- keyboards/al1/info.json | 219 +- keyboards/al1/keymaps/default/keymap.c | 45 +- keyboards/al1/keymaps/default/readme.md | 1 - keyboards/al1/keymaps/splitbs/keymap.c | 59 +- keyboards/al1/matrix.c | 275 +- keyboards/al1/readme.md | 11 +- keyboards/al1/rules.mk | 23 +- keyboards/aleblazer/zodiark/info.json | 2 - .../zodiark/keymaps/default/config.h | 2 +- .../zodiark/keymaps/default/keymap.c | 5 +- .../zodiark/keymaps/slimoled/config.h | 2 +- .../zodiark/keymaps/slimoled/keymap.c | 5 +- .../aleblazer/zodiark/keymaps/via/config.h | 2 +- .../aleblazer/zodiark/keymaps/via/oled.c | 5 +- keyboards/aleblazer/zodiark/rules.mk | 8 +- keyboards/aleth42/info.json | 4 +- keyboards/aleth42/rev0/rules.mk | 5 +- keyboards/aleth42/rev1/rules.mk | 5 +- keyboards/alf/dc60/config.h | 68 - keyboards/alf/dc60/dc60.h | 31 +- keyboards/alf/dc60/info.json | 2 - keyboards/alf/dc60/keymaps/default/keymap.c | 16 - keyboards/alf/dc60/rules.mk | 18 +- keyboards/alf/x11/config.h | 73 - keyboards/alf/x11/info.json | 3 - keyboards/alf/x11/rules.mk | 20 +- keyboards/alf/x2/config.h | 60 +- keyboards/alf/x2/info.json | 98 +- keyboards/alf/x2/keymaps/default/keymap.c | 65 +- keyboards/alf/x2/keymaps/hhkb_60/keymap.c | 55 +- keyboards/alf/x2/readme.md | 12 +- keyboards/alf/x2/rules.mk | 29 +- keyboards/alf/x2/x2.c | 16 + keyboards/alf/x2/x2.h | 122 +- keyboards/alfredslab/swift65/solder/info.json | 234 +- .../swift65/solder/keymaps/default/keymap.c | 4 +- .../swift65/solder/keymaps/default/readme.md | 3 - .../swift65/solder/keymaps/via/keymap.c | 8 +- .../swift65/solder/keymaps/via/readme.md | 3 - keyboards/alfredslab/swift65/solder/readme.md | 2 +- keyboards/alfredslab/swift65/solder/rules.mk | 5 +- keyboards/alfredslab/swift65/solder/solder.h | 56 +- keyboards/allison/config.h | 73 - keyboards/allison/info.json | 2 - keyboards/allison/rules.mk | 15 +- keyboards/allison_numpad/config.h | 73 - keyboards/allison_numpad/info.json | 65 +- keyboards/allison_numpad/rules.mk | 15 +- keyboards/alpha/alpha.h | 19 +- keyboards/alpha/config.h | 5 +- keyboards/alpha/info.json | 2 - keyboards/alpha/keymaps/default/keymap.c | 6 - keyboards/alpha/rules.mk | 10 +- keyboards/alpine65/info.json | 2 - keyboards/alpine65/rules.mk | 4 +- keyboards/alps64/info.json | 2 - keyboards/alps64/rules.mk | 10 +- keyboards/alu84/alu84.c | 29 - keyboards/alu84/alu84.h | 34 +- keyboards/alu84/config.h | 42 +- keyboards/alu84/info.json | 109 +- keyboards/alu84/keymaps/default/keymap.c | 131 +- keyboards/alu84/keymaps/turbomech/config.h | 9 +- keyboards/alu84/keymaps/turbomech/keymap.c | 103 +- keyboards/alu84/keymaps/turbomech/rules.mk | 14 +- keyboards/alu84/readme.md | 21 +- keyboards/alu84/rules.mk | 32 +- keyboards/amag23/info.json | 2 - keyboards/amag23/rules.mk | 6 +- keyboards/amj40/info.json | 2 - keyboards/amj40/keymaps/fabian/rules.mk | 2 +- .../amj40/keymaps/jetpacktuxedo/rules.mk | 2 +- keyboards/amj40/keymaps/myee/rules.mk | 2 +- keyboards/amj40/rules.mk | 5 +- keyboards/amj60/amj60.c | 16 + keyboards/amj60/amj60.h | 158 +- keyboards/amj60/config.h | 82 +- keyboards/amj60/info.json | 379 +- keyboards/amj60/keymaps/default/keymap.c | 75 +- .../amj60/keymaps/iso_split_rshift/build.sh | 42 - .../amj60/keymaps/iso_split_rshift/keymap.c | 113 - .../amj60/keymaps/iso_split_rshift/readme.md | 30 - .../amj60/keymaps/iso_split_rshift/rules.mk | 20 - .../keymaps/iso_split_rshift/updatemerge.sh | 4 - keyboards/amj60/keymaps/maximized/keymap.c | 55 - keyboards/amj60/readme.md | 22 +- keyboards/amj60/rules.mk | 33 +- keyboards/amj96/amj96.c | 27 - keyboards/amj96/amj96.h | 28 +- keyboards/amj96/config.h | 113 +- keyboards/amj96/info.json | 129 +- keyboards/amj96/keymaps/default/config.h | 20 - keyboards/amj96/keymaps/default/keymap.c | 50 +- keyboards/amj96/keymaps/default/readme.md | 1 - keyboards/amj96/readme.md | 14 +- keyboards/amj96/rules.mk | 19 +- keyboards/amjkeyboard/amj66/amj66.c | 27 - keyboards/amjkeyboard/amj66/info.json | 5 - keyboards/amjkeyboard/amj66/rules.mk | 18 +- keyboards/amjpad/amjpad.h | 59 +- keyboards/amjpad/config.h | 5 +- keyboards/amjpad/info.json | 4 - keyboards/amjpad/keymaps/max/keymap.c | 37 - keyboards/amjpad/rules.mk | 12 +- keyboards/anavi/macropad2/config.h | 69 - keyboards/anavi/macropad2/info.json | 16 - .../anavi/macropad2/keymaps/binary/keymap.c | 30 - .../macropad2/keymaps/copypaste/keymap.c | 30 - .../anavi/macropad2/keymaps/default/keymap.c | 30 - .../anavi/macropad2/keymaps/git/keymap.c | 48 - .../macropad2/keymaps/google-meet/keymap.c | 37 - .../anavi/macropad2/keymaps/jitsi/keymap.c | 36 - .../anavi/macropad2/keymaps/msteams/keymap.c | 41 - .../anavi/macropad2/keymaps/mute/keymap.c | 23 - .../anavi/macropad2/keymaps/mute/rules.mk | 2 - .../anavi/macropad2/keymaps/skype/keymap.c | 41 - .../macropad2/keymaps/tap_dance/keymap.c | 35 - .../anavi/macropad2/keymaps/volume/keymap.c | 23 - .../anavi/macropad2/keymaps/volume/rules.mk | 2 - .../anavi/macropad2/keymaps/zoom/keymap.c | 37 - keyboards/anavi/macropad2/macropad2.c | 18 - keyboards/anavi/macropad2/macropad2.h | 35 - keyboards/anavi/macropad2/readme.md | 55 - keyboards/anavi/macropad2/rules.mk | 34 - keyboards/anavi/macropad8/config.h | 2 +- keyboards/anavi/macropad8/info.json | 2 - .../anavi/macropad8/keymaps/default/config.h | 19 + .../anavi/macropad8/keymaps/default/keymap.c | 5 +- .../anavi/macropad8/keymaps/git/keymap.c | 5 +- .../anavi/macropad8/keymaps/kicad/keymap.c | 7 +- .../anavi/macropad8/keymaps/kodi/keymap.c | 5 +- .../anavi/macropad8/keymaps/obs/keymap.c | 5 +- .../anavi/macropad8/keymaps/vlc/keymap.c | 138 + .../anavi/macropad8/keymaps/zoom/keymap.c | 5 +- keyboards/anavi/macropad8/rules.mk | 19 +- keyboards/angel17/alpha/alpha.c | 35 - keyboards/angel17/alpha/config.h | 73 - keyboards/angel17/alpha/rules.mk | 16 +- keyboards/angel17/info.json | 2 - keyboards/angel17/keymaps/default/keymap.c | 16 - keyboards/angel17/rev1/config.h | 73 - keyboards/angel17/rev1/rev1.c | 35 - keyboards/angel17/rev1/rules.mk | 16 +- keyboards/angel17/rules.mk | 16 +- keyboards/angel64/alpha/alpha.c | 35 - keyboards/angel64/alpha/config.h | 73 - keyboards/angel64/alpha/info.json | 2 - .../angel64/alpha/keymaps/default/keymap.c | 5 +- keyboards/angel64/rev1/config.h | 73 - keyboards/angel64/rev1/info.json | 2 - .../angel64/rev1/keymaps/default/keymap.c | 5 +- .../angel64/rev1/keymaps/kakunpc/keymap.c | 5 +- keyboards/angel64/rev1/rev1.c | 35 - keyboards/angel64/rules.mk | 21 +- keyboards/anomalykb/a65i/a65i.c | 17 + keyboards/anomalykb/a65i/a65i.h | 101 + keyboards/anomalykb/a65i/config.h | 46 + keyboards/anomalykb/a65i/info.json | 395 ++ .../a65i/keymaps/ansi_splitbs/keymap.c | 61 + .../anomalykb/a65i/keymaps/default/keymap.c | 61 + keyboards/anomalykb/a65i/keymaps/iso/keymap.c | 61 + .../a65i/keymaps/iso_splitbs/keymap.c | 61 + keyboards/anomalykb/a65i/keymaps/via/config.h | 19 + keyboards/anomalykb/a65i/keymaps/via/keymap.c | 61 + .../a65i}/keymaps/via/rules.mk | 0 keyboards/anomalykb/a65i/readme.md | 17 + keyboards/anomalykb/a65i/rules.mk | 19 + keyboards/aos/tkl/info.json | 3 - keyboards/aos/tkl/rules.mk | 16 +- keyboards/aozora/aozora.c | 17 + keyboards/aozora/aozora.h | 47 + keyboards/aozora/config.h | 48 + keyboards/aozora/info.json | 83 + keyboards/aozora/keymaps/default/keymap.c | 35 + keyboards/aozora/keymaps/default_all/keymap.c | 36 + keyboards/aozora/keymaps/via/keymap.c | 36 + keyboards/aozora/keymaps/via/rules.mk | 3 + keyboards/aozora/readme.md | 17 + keyboards/aozora/rules.mk | 20 + keyboards/aplyard/aplx6/info.json | 2 - keyboards/aplyard/aplx6/rev1/rules.mk | 15 +- keyboards/aplyard/aplx6/rev2/config.h | 5 +- .../aplx6/rev2/keymaps/default/keymap.c | 5 +- keyboards/aplyard/aplx6/rev2/rules.mk | 8 +- keyboards/arabica37/info.json | 2 - keyboards/arabica37/keymaps/default/keymap.c | 5 +- keyboards/arabica37/keymaps/default/rules.mk | 3 +- keyboards/arabica37/rev1/rules.mk | 15 +- keyboards/arch_36/info.json | 2 - keyboards/arch_36/keymaps/default/keymap.c | 131 +- keyboards/arch_36/keymaps/obosob/config.h | 2 +- keyboards/arch_36/keymaps/obosob/keymap.c | 583 +-- keyboards/arch_36/rules.mk | 8 +- keyboards/ares/ares.h | 33 +- keyboards/ares/config.h | 8 +- keyboards/ares/info.json | 226 +- keyboards/ares/keymaps/default/keymap.c | 36 +- keyboards/ares/readme.md | 6 +- keyboards/ares/rules.mk | 29 +- keyboards/arisu/config.h | 73 - keyboards/arisu/info.json | 2 - keyboards/arisu/rules.mk | 6 +- keyboards/arrayperipherals/1x4p1/info.json | 2 - keyboards/arrayperipherals/1x4p1/rules.mk | 5 +- keyboards/ash1800/config.h | 73 - keyboards/ash1800/info.json | 4 +- keyboards/ash1800/rules.mk | 16 +- keyboards/ash_xiix/info.json | 2 - keyboards/ash_xiix/rules.mk | 5 +- keyboards/ashpil/modelm_usbc/config.h | 55 +- keyboards/ashpil/modelm_usbc/info.json | 2 - keyboards/ashpil/modelm_usbc/rules.mk | 18 +- keyboards/at101_bh/info.json | 2 - keyboards/at101_bh/keymaps/default/keymap.c | 29 +- keyboards/at101_bh/rules.mk | 10 +- keyboards/at_at/660m/info.json | 2 - keyboards/at_at/660m/rules.mk | 4 +- keyboards/atomic/atomic.c | 20 +- keyboards/atomic/atomic.h | 28 +- keyboards/atomic/config.h | 57 +- keyboards/atomic/info.json | 171 +- keyboards/atomic/keymaps/abienz.c | 18 - keyboards/atomic/keymaps/abienz/keymap.c | 19 + keyboards/atomic/keymaps/default/keymap.c | 12 +- keyboards/atomic/keymaps/michelle.c | 169 - keyboards/atomic/keymaps/michelle/keymap.c | 25 + keyboards/atomic/keymaps/pvc/keymap.c | 12 +- keyboards/atomic/keymaps/pvc/rules.mk | 2 +- keyboards/atomic/keymaps/twolayer.c | 63 - keyboards/atomic/keymaps/twolayer/keymap.c | 46 + keyboards/atomic/rules.mk | 25 +- keyboards/atreus/astar/rules.mk | 7 - keyboards/atreus/astar_mirrored/rules.mk | 7 - keyboards/atreus/feather/rules.mk | 10 +- keyboards/atreus/info.json | 2 - keyboards/atreus/keymaps/erlandsona/keymap.c | 15 +- keyboards/atreus/keymaps/khitsule/keymap.c | 24 - .../keymaps/manna-harbour_miryoku/config.h | 22 + .../keymaps/manna-harbour_miryoku/keymap.c | 5 + .../atreus/keymaps/replicaJunction/config.h | 56 +- .../atreus/keymaps/replicaJunction/keymap.c | 135 +- .../replicaJunction/kle/base-layer.txt | 34 - .../keymaps/replicaJunction/kle/e-layer.txt | 34 - .../keymaps/replicaJunction/kle/fn-layer.txt | 35 - .../keymaps/replicaJunction/kle/i-layer.txt | 34 - .../keymaps/replicaJunction/kle/r-layer.txt | 34 - .../replicaJunction/kle/space-layer.txt | 34 - .../atreus/keymaps/replicaJunction/readme.md | 102 +- .../atreus/keymaps/replicaJunction/rules.mk | 34 +- .../atreus/keymaps/ridingqwerty/rules.mk | 2 +- keyboards/atreus/keymaps/via/keymap.c | 65 + keyboards/atreus/keymaps/via/rules.mk | 4 + keyboards/atreus/keymaps/xk/rules.mk | 2 +- keyboards/atreus/promicro/config.h | 2 + keyboards/atreus/promicro/rules.mk | 7 - keyboards/atreus/rules.mk | 10 +- keyboards/atreus/teensy2/rules.mk | 7 - keyboards/atreus62/config.h | 5 +- keyboards/atreus62/info.json | 2 - keyboards/atreus62/keymaps/194h/keymap.c | 2 +- keyboards/atreus62/rules.mk | 14 +- keyboards/atxkb/1894/config.h | 53 - keyboards/atxkb/1894/info.json | 2 - keyboards/atxkb/1894/rules.mk | 15 +- keyboards/aves65/info.json | 630 ++- keyboards/aves65/rules.mk | 5 +- keyboards/axolstudio/helpo/info.json | 2 - keyboards/axolstudio/helpo/rules.mk | 7 +- keyboards/axolstudio/yeti/info.json | 2 - keyboards/axolstudio/yeti/rules.mk | 5 +- keyboards/aya/aya.c | 17 + keyboards/aya/aya.h | 39 + keyboards/aya/config.h | 37 + keyboards/aya/info.json | 10 + keyboards/aya/keymaps/default/config.h | 19 + keyboards/aya/keymaps/default/keymap.c | 87 + keyboards/aya/readme.md | 20 + keyboards/aya/rules.mk | 20 + keyboards/baguette/baguette.c | 20 - keyboards/baguette/baguette.h | 54 +- keyboards/baguette/config.h | 68 - keyboards/baguette/info.json | 2 - keyboards/baguette/keymaps/default/keymap.c | 18 - keyboards/baguette/keymaps/iso/keymap.c | 18 - keyboards/baguette/rules.mk | 18 +- keyboards/bakeneko60/info.json | 2 - keyboards/bakeneko60/rules.mk | 5 +- keyboards/bakeneko65/bakeneko65.c | 17 - keyboards/bakeneko65/config.h | 109 - keyboards/bakeneko65/info.json | 313 -- .../bakeneko65/keymaps/default/readme.md | 1 - keyboards/bakeneko65/readme.md | 17 - keyboards/bakeneko65/rev2/config.h | 109 + keyboards/bakeneko65/rev2/info.json | 311 ++ .../{ => rev2}/keymaps/default/keymap.c | 0 .../bakeneko65/rev2/keymaps/default/readme.md | 1 + .../{ => rev2}/keymaps/via/keymap.c | 0 .../rev2}/keymaps/via/rules.mk | 0 keyboards/bakeneko65/rev2/readme.md | 17 + keyboards/bakeneko65/rev2/rev2.c | 17 + .../bakeneko65/{bakeneko65.h => rev2/rev2.h} | 0 keyboards/bakeneko65/rev2/rules.mk | 21 + keyboards/bakeneko65/rev3/config.h | 109 + keyboards/bakeneko65/rev3/info.json | 10 + .../bakeneko65/rev3/keymaps/default/keymap.c | 38 + .../bakeneko65/rev3/keymaps/default/readme.md | 1 + .../bakeneko65/rev3/keymaps/via/keymap.c | 54 + .../rev3}/keymaps/via/rules.mk | 0 keyboards/bakeneko65/rev3/readme.md | 17 + keyboards/bakeneko65/rev3/rev3.c | 17 + keyboards/bakeneko65/rev3/rev3.h | 33 + keyboards/bakeneko65/rev3/rules.mk | 19 + keyboards/bakeneko65/rules.mk | 24 - keyboards/bakeneko80/config.h | 72 - keyboards/bakeneko80/info.json | 5 +- keyboards/bakeneko80/rules.mk | 15 +- keyboards/bandominedoni/bandominedoni.c | 151 + keyboards/bandominedoni/bandominedoni.h | 84 + keyboards/bandominedoni/config.h | 333 ++ keyboards/bandominedoni/info.json | 102 + .../bandominedoni/keymaps/default/keymap.c | 84 + .../bandominedoni/keymaps/default/readme.md | 1 + keyboards/bandominedoni/keymaps/led/keymap.c | 221 ++ keyboards/bandominedoni/keymaps/led/readme.md | 1 + keyboards/bandominedoni/keymaps/led/rules.mk | 2 + keyboards/bandominedoni/keymaps/via/config.h | 18 + keyboards/bandominedoni/keymaps/via/keymap.c | 150 + keyboards/bandominedoni/keymaps/via/readme.md | 1 + keyboards/bandominedoni/keymaps/via/rules.mk | 3 + keyboards/bandominedoni/readme.md | 22 + keyboards/bandominedoni/rgb_matrix_user.inc | 16 + keyboards/bandominedoni/rules.mk | 26 + keyboards/bantam44/bantam44.h | 26 +- keyboards/bantam44/config.h | 5 +- keyboards/bantam44/info.json | 3 - keyboards/bantam44/rules.mk | 14 +- keyboards/barleycorn/info.json | 2 - keyboards/barleycorn/rules.mk | 7 +- keyboards/barleycorn_smd/info.json | 2 - keyboards/barleycorn_smd/rules.mk | 5 +- keyboards/barracuda/info.json | 4 +- keyboards/barracuda/rules.mk | 7 +- .../basekeys/slice/keymaps/default/keymap.c | 5 +- .../keymaps/default_split_left_space/keymap.c | 5 +- keyboards/basekeys/slice/rev1/info.json | 2 - keyboards/basekeys/slice/rev1/rules.mk | 12 +- keyboards/basekeys/slice/rev1_rgb/info.json | 2 - .../rev1_rgb/keymaps/2moons_rgb/keymap.c | 5 +- .../slice/rev1_rgb/keymaps/via/keymap.c | 5 +- keyboards/basekeys/slice/rev1_rgb/rules.mk | 17 +- keyboards/basekeys/trifecta/config.h | 81 +- keyboards/basekeys/trifecta/info.json | 2 - keyboards/basekeys/trifecta/rules.mk | 5 +- keyboards/basketweave/config.h | 7 +- keyboards/basketweave/info.json | 2 - keyboards/basketweave/keymaps/via/keymap.c | 79 + .../keymaps/via/rules.mk | 0 keyboards/basketweave/rules.mk | 7 +- keyboards/bastardkb/scylla/config.h | 68 +- keyboards/bastardkb/scylla/info.json | 2 - .../bastardkb/scylla/keymaps/cykedev/config.h | 42 + .../bastardkb/scylla/keymaps/cykedev/keymap.c | 198 + .../bastardkb/scylla/keymaps/cykedev/rules.mk | 4 + .../keymaps/manna-harbour_miryoku/config.h | 24 + .../keymaps/manna-harbour_miryoku/keymap.c | 5 + keyboards/bastardkb/scylla/rules.mk | 10 +- keyboards/bastardkb/scylla/scylla.c | 45 +- keyboards/bastardkb/skeletyl/config.h | 103 + keyboards/bastardkb/skeletyl/info.json | 47 + .../skeletyl/keymaps/default/keymap.c | 70 + keyboards/bastardkb/skeletyl/readme.md | 17 + keyboards/bastardkb/skeletyl/rules.mk | 29 + keyboards/bastardkb/skeletyl/skeletyl.c | 81 + keyboards/bastardkb/skeletyl/skeletyl.h | 38 + keyboards/bastardkb/tbk/info.json | 2 - keyboards/bastardkb/tbk/rules.mk | 5 +- keyboards/bastardkb/tbkmini/config.h | 61 +- keyboards/bastardkb/tbkmini/info.json | 2 - keyboards/bastardkb/tbkmini/rules.mk | 13 +- keyboards/bastardkb/tbkmini/tbkmini.c | 43 +- keyboards/bat43/config.h | 73 - keyboards/bat43/rev1/info.json | 2 - keyboards/bat43/rev2/info.json | 2 - keyboards/bat43/rules.mk | 15 +- keyboards/bear_face/rules.mk | 8 +- keyboards/bear_face/v1/info.json | 2 - keyboards/bear_face/v2/info.json | 2 - keyboards/beatervan/info.json | 2 - keyboards/beatervan/rules.mk | 10 +- keyboards/bemeier/bmek/info.json | 2 - keyboards/bemeier/bmek/rev1/rules.mk | 2 +- keyboards/bemeier/bmek/rev2/rules.mk | 2 +- keyboards/bemeier/bmek/rev3/rules.mk | 2 +- keyboards/bfake/bfake.h | 63 +- keyboards/bfake/info.json | 2 - keyboards/bfake/rules.mk | 11 +- keyboards/bigseries/1key/1key.h | 10 +- keyboards/bigseries/1key/config.h | 6 +- keyboards/bigseries/1key/info.json | 2 - .../bigseries/1key/keymaps/default/keymap.c | 37 - .../bigseries/1key/keymaps/tester/keymap.c | 37 - keyboards/bigseries/1key/rules.mk | 13 +- keyboards/bigseries/2key/2key.h | 10 +- keyboards/bigseries/2key/config.h | 6 +- keyboards/bigseries/2key/info.json | 2 - .../bigseries/2key/keymaps/default/keymap.c | 41 - .../bigseries/2key/keymaps/lock/keymap.c | 41 - .../bigseries/2key/keymaps/tester/keymap.c | 41 - keyboards/bigseries/2key/rules.mk | 13 +- keyboards/bigseries/3key/3key.h | 10 +- keyboards/bigseries/3key/config.h | 6 +- keyboards/bigseries/3key/info.json | 2 - .../bigseries/3key/keymaps/default/keymap.c | 37 - .../bigseries/3key/keymaps/tester/keymap.c | 41 - keyboards/bigseries/3key/rules.mk | 13 +- keyboards/bigseries/4key/4key.c | 6 - keyboards/bigseries/4key/4key.h | 14 +- keyboards/bigseries/4key/config.h | 6 +- keyboards/bigseries/4key/info.json | 2 - .../bigseries/4key/keymaps/default/keymap.c | 37 - .../bigseries/4key/keymaps/tester/keymap.c | 41 - keyboards/bigseries/4key/rules.mk | 13 +- keyboards/binepad/bn003/info.json | 2 - keyboards/binepad/bn003/rules.mk | 5 +- keyboards/binepad/bn009/bn009.c | 16 + keyboards/binepad/bn009/bn009.h | 28 + keyboards/binepad/bn009/config.h | 78 + keyboards/binepad/bn009/info.json | 10 + .../binepad/bn009/keymaps/default/keymap.c | 42 + .../binepad/bn009/keymaps/default/readme.md | 1 + keyboards/binepad/bn009/keymaps/via/keymap.c | 44 + .../bn009}/keymaps/via/rules.mk | 0 keyboards/binepad/bn009/readme.md | 17 + keyboards/binepad/bn009/rules.mk | 19 + keyboards/bioi/ble.c | 1 - keyboards/bioi/f60/config.h | 72 + keyboards/bioi/f60/f60.c | 17 + keyboards/bioi/f60/f60.h | 161 + keyboards/bioi/f60/info.json | 670 ++++ keyboards/bioi/f60/keymaps/default/keymap.c | 34 + keyboards/bioi/f60/keymaps/via/keymap.c | 48 + .../default => bioi/f60/keymaps}/via/rules.mk | 0 keyboards/bioi/f60/readme.md | 25 + keyboards/bioi/f60/rules.mk | 21 + keyboards/bioi/g60/info.json | 2 - keyboards/bioi/g60/rules.mk | 11 +- keyboards/bioi/g60ble/info.json | 8 - keyboards/bioi/g60ble/rules.mk | 10 +- keyboards/bioi/main.c | 1 - keyboards/bioi/morgan65/info.json | 2 - keyboards/bioi/morgan65/rules.mk | 11 +- keyboards/bioi/s65/info.json | 2 - keyboards/bioi/s65/rules.mk | 5 +- keyboards/bkf/bkf.c | 16 + keyboards/bkf/bkf.h | 53 + keyboards/bkf/config.h | 60 + keyboards/bkf/info.json | 15 + keyboards/bkf/keymaps/default/keymap.c | 62 + keyboards/bkf/keymaps/default/readme.md | 1 + keyboards/bkf/readme.md | 21 + keyboards/bkf/rules.mk | 21 + keyboards/blackplum/info.json | 2 - keyboards/blackplum/rules.mk | 9 +- keyboards/blank/blank01/blank01.c | 17 + keyboards/blank/blank01/blank01.h | 84 + keyboards/blank/blank01/config.h | 152 + keyboards/blank/blank01/info.json | 146 + .../blank/blank01/keymaps/default/keymap.c | 37 + .../blank/blank01/keymaps/default/readme.md | 1 + keyboards/blank/blank01/keymaps/via/keymap.c | 55 + keyboards/blank/blank01/keymaps/via/readme.md | 1 + .../blank01/keymaps}/via/rules.mk | 0 keyboards/blank/blank01/readme.md | 26 + keyboards/blank/blank01/rules.mk | 19 + keyboards/blank_tehnologii/manibus/info.json | 2 - keyboards/blank_tehnologii/manibus/rules.mk | 6 +- keyboards/blockey/blockey.h | 39 +- keyboards/blockey/config.h | 73 +- keyboards/blockey/info.json | 2 - keyboards/blockey/keymaps/default/keymap.c | 16 - keyboards/blockey/rules.mk | 18 +- keyboards/bm16a/bm16a.c | 43 - keyboards/bm16a/config.h | 214 - keyboards/bm16a/info.json | 30 - keyboards/bm16a/readme.md | 15 - keyboards/bm16a/rules.mk | 33 - keyboards/bm16s/info.json | 30 - keyboards/bm16s/readme.md | 13 - keyboards/bm16s/rules.mk | 28 - keyboards/bm40hsrgb/config.h | 55 - keyboards/bm40hsrgb/info.json | 60 - keyboards/bm40hsrgb/keymaps/signynt/config.h | 80 - keyboards/bm40hsrgb/keymaps/signynt/readme.md | 117 - keyboards/bm40hsrgb/keymaps/signynt/rules.mk | 7 - .../bm40hsrgb/keymaps/signynt_2_loud/config.h | 80 - .../keymaps/signynt_2_loud/readme.md | 117 - .../bm40hsrgb/keymaps/signynt_2_loud/rules.mk | 7 - .../keymaps/signynt_2_quiet/config.h | 80 - .../keymaps/signynt_2_quiet/readme.md | 117 - .../keymaps/signynt_2_quiet/rules.mk | 7 - keyboards/bm40hsrgb/readme.md | 21 - keyboards/bm40hsrgb/rules.mk | 26 - keyboards/bm43a/bm43a.c | 51 - keyboards/bm43a/config.h | 72 - keyboards/bm43a/info.json | 58 - keyboards/bm43a/keymaps/stevexyz/readme.md | 25 - keyboards/bm43a/keymaps/stevexyz/rules.mk | 8 - keyboards/bm43a/readme.md | 16 - keyboards/bm43a/rules.mk | 31 - keyboards/bm60poker/bm60poker.c | 52 - keyboards/bm60poker/config.h | 70 - keyboards/bm60poker/info.json | 74 - keyboards/bm60poker/readme.md | 15 - keyboards/bm60poker/rules.mk | 25 - keyboards/bm60rgb/bm60rgb.c | 77 - keyboards/bm60rgb/bm60rgb.h | 36 - keyboards/bm60rgb/config.h | 58 - keyboards/bm60rgb/info.json | 81 - keyboards/bm60rgb/readme.md | 13 - keyboards/bm60rgb/rules.mk | 39 - keyboards/bm60rgb_iso/bm60rgb_iso.c | 52 - keyboards/bm60rgb_iso/config.h | 72 - keyboards/bm60rgb_iso/info.json | 77 - keyboards/bm60rgb_iso/readme.md | 19 - keyboards/bm60rgb_iso/rules.mk | 25 - keyboards/bm68rgb/bm68rgb.c | 44 - keyboards/bm68rgb/config.h | 122 - keyboards/bm68rgb/info.json | 81 - keyboards/bm68rgb/keymaps/peepeetee/config.h | 132 - keyboards/bm68rgb/readme.md | 24 - keyboards/bm68rgb/rules.mk | 27 - keyboards/boardrun/bizarre/info.json | 2 - keyboards/boardrun/bizarre/rules.mk | 6 +- keyboards/boardrun/classic/info.json | 2 - keyboards/boardrun/classic/rules.mk | 6 +- keyboards/boardsource/3x4/config.h | 70 +- keyboards/boardsource/3x4/info.json | 2 - keyboards/boardsource/3x4/rules.mk | 12 +- keyboards/boardsource/4x12/config.h | 68 - keyboards/boardsource/4x12/info.json | 2 - keyboards/boardsource/4x12/rules.mk | 16 +- keyboards/boardsource/5x12/config.h | 68 - keyboards/boardsource/5x12/info.json | 2 - keyboards/boardsource/5x12/rules.mk | 16 +- keyboards/boardsource/beiwagon/beiwagon.c | 38 + keyboards/boardsource/beiwagon/beiwagon.h | 32 + keyboards/boardsource/beiwagon/config.h | 169 + keyboards/boardsource/beiwagon/info.json | 26 + .../beiwagon/keymaps/default/keymap.c | 47 + .../beiwagon/keymaps/default/readme.md | 1 + .../boardsource/beiwagon/keymaps/via/keymap.c | 47 + .../beiwagon/keymaps/via/readme.md | 1 + .../beiwagon}/keymaps/via/rules.mk | 0 keyboards/boardsource/beiwagon/readme.md | 21 + keyboards/boardsource/beiwagon/rules.mk | 21 + .../boardsource/holiday/spooky/info.json | 4 +- .../holiday/spooky/keymaps/default/keymap.c | 3 +- .../holiday/spooky/keymaps/rip_mx/keymap.c | 67 +- .../holiday/spooky/keymaps/rip_mx/rules.mk | 3 +- .../spooky/keymaps/rip_my_wallet/keymap.c | 67 +- .../spooky/keymaps/rip_my_wallet/rules.mk | 3 +- keyboards/boardsource/holiday/spooky/rules.mk | 7 +- keyboards/boardsource/microdox/info.json | 2 - .../microdox/keymaps/cole/keymap.c | 29 +- .../microdox/keymaps/cole/rules.mk | 3 +- .../boardsource/microdox/keymaps/via/keymap.c | 5 +- .../boardsource/microdox/keymaps/via/rules.mk | 3 +- keyboards/boardsource/microdox/rules.mk | 7 +- keyboards/boardsource/technik_o/config.h | 169 + keyboards/boardsource/technik_o/info.json | 62 + .../technik_o/keymaps/default/keymap.c | 53 + .../technik_o/keymaps/default/readme.md | 1 + .../technik_o/keymaps/via/keymap.c | 53 + .../technik_o/keymaps/via/readme.md | 1 + .../technik_o/keymaps/via}/rules.mk | 0 keyboards/boardsource/technik_o/readme.md | 21 + keyboards/boardsource/technik_o/rules.mk | 22 + keyboards/boardsource/technik_o/technik_o.c | 38 + keyboards/boardsource/technik_o/technik_o.h | 31 + keyboards/boardsource/technik_s/config.h | 169 + keyboards/boardsource/technik_s/info.json | 56 + .../technik_s/keymaps/default/keymap.c | 53 + .../technik_s/keymaps/default/readme.md | 1 + .../technik_s/keymaps/via/keymap.c | 53 + .../technik_s/keymaps/via/readme.md | 1 + .../technik_s}/keymaps/via/rules.mk | 0 keyboards/boardsource/technik_s/readme.md | 22 + keyboards/boardsource/technik_s/rules.mk | 22 + keyboards/boardsource/technik_s/technik_s.c | 38 + keyboards/boardsource/technik_s/technik_s.h | 31 + keyboards/boardsource/the_mark/config.h | 12 +- keyboards/boardsource/the_mark/info.json | 2 - keyboards/boardsource/the_mark/rules.mk | 5 +- keyboards/boardwalk/info.json | 2 - .../boardwalk/keymaps/mcallaster/keymap.c | 2 +- keyboards/boardwalk/keymaps/niclake/keymap.c | 15 +- keyboards/boardwalk/keymaps/niclake/rules.mk | 2 +- keyboards/boardwalk/rules.mk | 14 +- keyboards/bobpad/bobpad.c | 45 + keyboards/bobpad/bobpad.h | 27 + keyboards/bobpad/config.h | 63 + keyboards/bobpad/info.json | 17 + keyboards/bobpad/keymaps/default/keymap.c | 35 + keyboards/bobpad/keymaps/via/keymap.c | 106 + .../{xd68 => bobpad}/keymaps/via/rules.mk | 0 keyboards/bobpad/readme.md | 25 + keyboards/bobpad/rules.mk | 23 + keyboards/bop/info.json | 4 +- keyboards/bop/rules.mk | 5 +- keyboards/boston/config.h | 4 +- keyboards/boston/info.json | 2 - keyboards/boston/rules.mk | 9 +- keyboards/boston_meetup/2019/2019.c | 222 +- keyboards/boston_meetup/2019/config.h | 31 +- keyboards/boston_meetup/2019/info.json | 3 - .../2019/keymaps/default/keymap.c | 20 +- .../boston_meetup/2019/keymaps/readme.md | 22 - keyboards/boston_meetup/2019/rules.mk | 26 +- keyboards/botanicalkeyboards/fm2u/info.json | 2 - keyboards/botanicalkeyboards/fm2u/rules.mk | 15 +- keyboards/box75/info.json | 2 - keyboards/box75/rules.mk | 5 +- keyboards/bpiphany/frosty_flake/config.h | 58 +- .../bpiphany/frosty_flake/frosty_flake.h | 30 +- keyboards/bpiphany/frosty_flake/info.json | 4 +- .../frosty_flake/keymaps/QFR_JM/rules.mk | 2 +- .../frosty_flake/keymaps/default/rules.mk | 8 +- .../frosty_flake/keymaps/nikchi/rules.mk | 2 +- .../frosty_flake/keymaps/tkl/rules.mk | 7 +- keyboards/bpiphany/frosty_flake/rules.mk | 18 +- keyboards/bpiphany/ghost_squid/config.h | 42 + keyboards/bpiphany/ghost_squid/ghost_squid.c | 26 + keyboards/bpiphany/ghost_squid/ghost_squid.h | 44 + .../ghost_squid/keymaps/default/keymap.c | 77 + .../ghost_squid/keymaps/default/readme.md | 1 + keyboards/bpiphany/ghost_squid/matrix.c | 97 + keyboards/bpiphany/ghost_squid/readme.md | 27 + keyboards/bpiphany/ghost_squid/rules.mk | 21 + keyboards/bpiphany/kitten_paw/config.h | 53 +- keyboards/bpiphany/kitten_paw/info.json | 4 - .../kitten_paw/keymaps/default/keymap.c | 16 - .../kitten_paw/keymaps/ickerwx/keymap.c | 154 +- keyboards/bpiphany/kitten_paw/kitten_paw.h | 69 +- keyboards/bpiphany/kitten_paw/rules.mk | 18 +- keyboards/bpiphany/pegasushoof/2013/2013.c | 34 - keyboards/bpiphany/pegasushoof/2013/2013.h | 18 +- keyboards/bpiphany/pegasushoof/2015/2015.c | 33 - keyboards/bpiphany/pegasushoof/2015/2015.h | 36 +- keyboards/bpiphany/pegasushoof/2015/matrix.c | 12 + keyboards/bpiphany/pegasushoof/info.json | 2 - .../pegasushoof/keymaps/blowrak/keymap.c | 8 +- .../pegasushoof/keymaps/blowrak/rules.mk | 2 +- .../pegasushoof/keymaps/citadel/rules.mk | 2 +- .../pegasushoof/keymaps/default/rules.mk | 7 +- .../pegasushoof/keymaps/default_jis/rules.mk | 7 +- keyboards/bpiphany/pegasushoof/rules.mk | 14 +- keyboards/bpiphany/sixshooter/config.h | 48 - keyboards/bpiphany/sixshooter/info.json | 3 - keyboards/bpiphany/sixshooter/rules.mk | 18 +- keyboards/bpiphany/sixshooter/sixshooter.c | 20 - keyboards/bpiphany/sixshooter/sixshooter.h | 16 +- keyboards/bpiphany/tiger_lily/config.h | 58 +- keyboards/bpiphany/tiger_lily/info.json | 2 - .../tiger_lily/keymaps/default/rules.mk | 9 +- .../tiger_lily/keymaps/default_ansi/rules.mk | 9 +- .../bpiphany/tiger_lily/keymaps/via/rules.mk | 4 - keyboards/bpiphany/tiger_lily/rules.mk | 18 +- keyboards/bpiphany/tiger_lily/tiger_lily.h | 73 +- keyboards/bpiphany/unloved_bastard/config.h | 73 +- keyboards/bpiphany/unloved_bastard/info.json | 2 - .../keymaps/default_ansi/keymap.c | 16 - .../keymaps/default_iso/keymap.c | 16 - keyboards/bpiphany/unloved_bastard/rules.mk | 19 +- .../unloved_bastard/unloved_bastard.h | 107 +- keyboards/bt66tech/bt66tech60/config.h | 6 +- keyboards/bt66tech/bt66tech60/info.json | 3 - .../bt66tech/bt66tech60/keymaps/via/keymap.c | 60 + .../bt66tech60}/keymaps/via/rules.mk | 0 keyboards/bt66tech/bt66tech60/rules.mk | 6 +- keyboards/bthlabs/geekpad/config.h | 68 - keyboards/bthlabs/geekpad/geekpad.c | 27 - keyboards/bthlabs/geekpad/geekpad.h | 21 +- keyboards/bthlabs/geekpad/info.json | 2 - keyboards/bthlabs/geekpad/rules.mk | 18 +- keyboards/buildakb/potato65/info.json | 2 - keyboards/buildakb/potato65/rules.mk | 5 +- keyboards/buildakb/potato65hs/info.json | 2 - keyboards/buildakb/potato65hs/rules.mk | 5 +- keyboards/buildakb/potato65s/config.h | 72 + keyboards/buildakb/potato65s/info.json | 83 + .../potato65s/keymaps/default/keymap.c | 39 + .../potato65s/keymaps/default/readme.md | 3 + .../buildakb/potato65s/keymaps/via/keymap.c | 54 + .../buildakb/potato65s/keymaps/via/readme.md | 3 + .../potato65s}/keymaps/via/rules.mk | 0 keyboards/buildakb/potato65s/potato65s.c | 17 + keyboards/buildakb/potato65s/potato65s.h | 33 + keyboards/buildakb/potato65s/readme.md | 24 + keyboards/buildakb/potato65s/rules.mk | 19 + keyboards/business_card/alpha/alpha.c | 35 - keyboards/business_card/alpha/config.h | 73 - keyboards/business_card/alpha/info.json | 2 - .../alpha/keymaps/default/keymap.c | 11 +- keyboards/business_card/alpha/rules.mk | 21 +- keyboards/business_card/beta/beta.c | 35 - keyboards/business_card/beta/config.h | 73 - keyboards/business_card/beta/info.json | 2 - .../beta/keymaps/default/keymap.c | 15 +- keyboards/business_card/beta/rules.mk | 21 +- keyboards/business_card/business_card.c | 35 - keyboards/business_card/rules.mk | 18 +- keyboards/butterstick/butterstick.c | 30 - keyboards/butterstick/info.json | 2 - keyboards/butterstick/rules.mk | 9 +- keyboards/c39/config.h | 12 - keyboards/c39/info.json | 4 +- keyboards/c39/keymaps/drashna/keymap.c | 41 +- keyboards/c39/keymaps/drashna/rules.mk | 27 +- keyboards/c39/keymaps/kuchosauronad0/rules.mk | 2 +- keyboards/c39/rules.mk | 18 +- keyboards/caffeinated/serpent65/info.json | 2 - keyboards/caffeinated/serpent65/rules.mk | 5 +- keyboards/canary/canary60rgb/canary60rgb.c | 117 + keyboards/canary/canary60rgb/canary60rgb.h | 34 + keyboards/canary/canary60rgb/config.h | 18 + keyboards/canary/canary60rgb/info.json | 78 + .../canary60rgb/keymaps/default/keymap.c | 54 + .../canary/canary60rgb/keymaps/via/config.h | 19 + .../canary/canary60rgb/keymaps/via/keymap.c | 54 + .../canary60rgb}/keymaps/via/rules.mk | 0 keyboards/canary/canary60rgb/readme.md | 17 + keyboards/canary/canary60rgb/v1/config.h | 94 + keyboards/canary/canary60rgb/v1/rules.mk | 23 + keyboards/cannonkeys/aella/aella.c | 1 + keyboards/cannonkeys/aella/aella.h | 19 + keyboards/cannonkeys/aella/chconf.h | 31 + keyboards/cannonkeys/aella/config.h | 63 + keyboards/cannonkeys/aella/info.json | 10 + .../cannonkeys/aella/keymaps/default/keymap.c | 48 + .../cannonkeys/aella/keymaps/via/keymap.c | 71 + .../aella}/keymaps/via/rules.mk | 0 keyboards/cannonkeys/aella/readme.md | 10 + keyboards/cannonkeys/aella/rules.mk | 25 + keyboards/cannonkeys/an_c/info.json | 2 - keyboards/cannonkeys/an_c/rules.mk | 4 +- keyboards/cannonkeys/atlas/info.json | 2 - keyboards/cannonkeys/atlas/rules.mk | 6 +- keyboards/cannonkeys/atlas_alps/info.json | 2 - keyboards/cannonkeys/atlas_alps/rules.mk | 5 +- keyboards/cannonkeys/balance/balance.c | 27 + keyboards/cannonkeys/balance/balance.h | 33 + keyboards/cannonkeys/balance/chconf.h | 31 + keyboards/cannonkeys/balance/config.h | 71 + keyboards/cannonkeys/balance/halconf.h | 31 + keyboards/cannonkeys/balance/info.json | 104 + .../balance/keymaps/default/keymap.c | 46 + .../cannonkeys/balance/keymaps/via/keymap.c | 56 + .../balance}/keymaps/via/rules.mk | 0 keyboards/cannonkeys/balance/mcuconf.h | 34 + keyboards/cannonkeys/balance/readme.md | 10 + keyboards/cannonkeys/balance/rules.mk | 26 + keyboards/cannonkeys/bluepill/keyboard.c | 20 - keyboards/cannonkeys/bluepill/ws2812.c | 133 - keyboards/cannonkeys/chimera65/info.json | 2 - keyboards/cannonkeys/chimera65/rules.mk | 4 +- keyboards/cannonkeys/db60/info.json | 2 - keyboards/cannonkeys/db60/rules.mk | 3 +- keyboards/cannonkeys/devastatingtkl/info.json | 2 - keyboards/cannonkeys/devastatingtkl/rules.mk | 4 +- keyboards/cannonkeys/instant60/info.json | 2 - keyboards/cannonkeys/instant60/rules.mk | 4 +- keyboards/cannonkeys/instant65/info.json | 2 - keyboards/cannonkeys/instant65/rules.mk | 5 +- keyboards/cannonkeys/iron165/info.json | 2 - keyboards/cannonkeys/iron165/rules.mk | 4 +- keyboards/cannonkeys/obliterated75/info.json | 2 - keyboards/cannonkeys/obliterated75/rules.mk | 7 +- keyboards/cannonkeys/onyx/info.json | 2 - keyboards/cannonkeys/onyx/rules.mk | 5 +- keyboards/cannonkeys/ortho48/info.json | 2 - keyboards/cannonkeys/ortho48/ortho48.h | 4 +- keyboards/cannonkeys/ortho48/rules.mk | 8 +- keyboards/cannonkeys/ortho60/info.json | 2 - keyboards/cannonkeys/ortho60/ortho60.h | 4 +- keyboards/cannonkeys/ortho60/rules.mk | 8 +- keyboards/cannonkeys/ortho75/info.json | 2 - keyboards/cannonkeys/ortho75/rules.mk | 8 +- keyboards/cannonkeys/practice60/info.json | 2 - keyboards/cannonkeys/practice60/rules.mk | 8 +- keyboards/cannonkeys/practice65/info.json | 2 - keyboards/cannonkeys/practice65/rules.mk | 8 +- keyboards/cannonkeys/rekt1800/info.json | 2 - keyboards/cannonkeys/rekt1800/rules.mk | 4 +- keyboards/cannonkeys/sagittarius/info.json | 2 - keyboards/cannonkeys/sagittarius/rules.mk | 5 +- keyboards/cannonkeys/satisfaction75/config.h | 17 +- .../satisfaction75/keymaps/via/keymap.c | 16 + .../satisfaction75/prototype/info.json | 2 - .../cannonkeys/satisfaction75/rev1/info.json | 2 - keyboards/cannonkeys/satisfaction75/rules.mk | 8 +- .../satisfaction75/satisfaction75.c | 43 +- .../satisfaction75/satisfaction75.h | 16 +- .../satisfaction75/satisfaction_encoder.c | 4 +- .../satisfaction75/satisfaction_oled.c | 488 ++- keyboards/cannonkeys/savage65/info.json | 2 - keyboards/cannonkeys/savage65/rules.mk | 4 +- keyboards/cannonkeys/tmov2/info.json | 2 - keyboards/cannonkeys/tmov2/rules.mk | 4 +- keyboards/cannonkeys/tsukuyomi/info.json | 2 - keyboards/cannonkeys/tsukuyomi/rules.mk | 5 +- keyboards/cannonkeys/vicious40/chconf.h | 31 + keyboards/cannonkeys/vicious40/config.h | 70 + keyboards/cannonkeys/vicious40/halconf.h | 27 + keyboards/cannonkeys/vicious40/info.json | 10 + .../vicious40/keymaps/default/keymap.c | 52 + .../cannonkeys/vicious40/keymaps/via/keymap.c | 60 + .../cannonkeys/vicious40/keymaps/via/rules.mk | 1 + keyboards/cannonkeys/vicious40/mcuconf.h | 28 + keyboards/cannonkeys/vicious40/readme.md | 12 + keyboards/cannonkeys/vicious40/rules.mk | 25 + keyboards/cannonkeys/vicious40/vicious40.c | 17 + keyboards/cannonkeys/vicious40/vicious40.h | 33 + keyboards/capsunlocked/cu65/cu65.h | 14 + keyboards/capsunlocked/cu65/info.json | 79 +- .../cu65/keymaps/iso_split_bs/keymap.c | 61 + .../cu65/keymaps/iso_split_bs/readme.md | 1 + keyboards/capsunlocked/cu65/rules.mk | 9 +- keyboards/capsunlocked/cu7/config.h | 72 + keyboards/capsunlocked/cu7/cu7.c | 14 + keyboards/capsunlocked/cu7/cu7.h | 36 + keyboards/capsunlocked/cu7/info.json | 20 + .../capsunlocked/cu7/keymaps/default/keymap.c | 42 + .../cu7/keymaps/default/readme.md | 1 + keyboards/capsunlocked/cu7/readme.md | 15 + keyboards/capsunlocked/cu7/rules.mk | 20 + keyboards/capsunlocked/cu80/v2_ansi/info.json | 4 +- .../capsunlocked/cu80/v2_ansi/rgb/config.h | 48 + keyboards/capsunlocked/cu80/v2_iso/info.json | 4 +- .../capsunlocked/cu80/v2_iso/rgb/config.h | 48 + keyboards/carbo65/info.json | 2 - keyboards/carbo65/rules.mk | 5 +- keyboards/cassette42/common/oled_helper.c | 2 +- keyboards/cassette42/common/oled_helper.h | 4 +- keyboards/cassette42/info.json | 4 +- keyboards/cassette42/keymaps/default/keymap.c | 7 +- keyboards/cassette42/rules.mk | 8 +- keyboards/catch22/info.json | 2 - keyboards/catch22/rules.mk | 10 +- keyboards/centromere/info.json | 2 - .../centromere/keymaps/default_u2/rules.mk | 7 - keyboards/centromere/rules.mk | 13 +- keyboards/cest73/tkm/config.h | 55 + keyboards/cest73/tkm/info.json | 126 + keyboards/cest73/tkm/keymaps/default/keymap.c | 79 + keyboards/cest73/tkm/readme.md | 22 + keyboards/cest73/tkm/rules.mk | 19 + keyboards/cest73/tkm/tkm.c | 16 + keyboards/cest73/tkm/tkm.h | 66 + keyboards/chalice/chalice.c | 18 + keyboards/chalice/chalice.h | 60 + keyboards/chalice/config.h | 66 + keyboards/chalice/info.json | 160 + keyboards/chalice/keymaps/default/keymap.c | 55 + keyboards/chalice/keymaps/via/keymap.c | 55 + .../{cospad => chalice}/keymaps/via/rules.mk | 0 keyboards/chalice/readme.md | 25 + keyboards/chalice/rules.mk | 19 + keyboards/charue/sunsetter/info.json | 433 ++- .../charue/sunsetter/keymaps/default/keymap.c | 10 +- .../sunsetter/keymaps/default_all/keymap.c | 26 + .../sunsetter/keymaps/default_iso/keymap.c | 26 + .../charue/sunsetter/keymaps/via/keymap.c | 40 +- keyboards/charue/sunsetter/rules.mk | 5 +- keyboards/charue/sunsetter/sunsetter.h | 90 +- keyboards/chavdai40/info.json | 4 +- keyboards/chavdai40/rev1/rules.mk | 5 +- keyboards/chavdai40/rev2/rules.mk | 5 +- keyboards/checkerboards/axon40/axon40.c | 17 + keyboards/checkerboards/axon40/axon40.h | 33 + keyboards/checkerboards/axon40/config.h | 56 + keyboards/checkerboards/axon40/info.json | 10 + .../axon40/keymaps/default/config.h | 20 + .../axon40/keymaps/default/keymap.c | 86 + .../axon40/keymaps/default/readme.md | 2 + .../axon40/keymaps/npspears/config.h | 20 + .../axon40/keymaps/npspears/keymap.c | 85 + .../checkerboards/axon40/keymaps/via/keymap.c | 109 + .../checkerboards/axon40/keymaps/via/rules.mk | 1 + keyboards/checkerboards/axon40/readme.md | 15 + keyboards/checkerboards/axon40/rules.mk | 19 + .../checkerboards/candybar_ortho/info.json | 2 - .../checkerboards/candybar_ortho/rules.mk | 5 +- keyboards/checkerboards/g_idb60/config.h | 48 + keyboards/checkerboards/g_idb60/g_idb60.c | 18 + keyboards/checkerboards/g_idb60/g_idb60.h | 36 + keyboards/checkerboards/g_idb60/info.json | 10 + .../g_idb60/keymaps/default/config.h | 24 + .../g_idb60/keymaps/default/keymap.c | 85 + .../g_idb60/keymaps/via/config.h | 22 + .../g_idb60/keymaps/via/keymap.c | 85 + .../g_idb60/keymaps/via/rules.mk | 1 + keyboards/checkerboards/g_idb60/readme.md | 15 + keyboards/checkerboards/g_idb60/rules.mk | 19 + keyboards/checkerboards/nop60/info.json | 152 +- .../checkerboards/nop60/keymaps/2x3u/keymap.c | 83 - .../checkerboards/nop60/keymaps/7u/keymap.c | 6 +- .../nop60/keymaps/{2x3u => default}/config.h | 0 .../nop60/keymaps/default/keymap.c | 83 + .../checkerboards/nop60/keymaps/via/keymap.c | 8 +- keyboards/checkerboards/nop60/nop60.h | 4 +- keyboards/checkerboards/nop60/rules.mk | 5 +- .../checkerboards/phoenix45_ortho/config.h | 52 + .../checkerboards/phoenix45_ortho/info.json | 16 + .../phoenix45_ortho/keymaps/2x3u/config.h | 19 + .../phoenix45_ortho/keymaps/2x3u/keymap.c | 46 + .../phoenix45_ortho/keymaps/6u/config.h | 19 + .../phoenix45_ortho/keymaps/6u/keymap.c | 46 + .../phoenix45_ortho/keymaps/default/config.h | 19 + .../phoenix45_ortho/keymaps/default/keymap.c | 46 + .../phoenix45_ortho/keymaps/via/config.h | 19 + .../phoenix45_ortho/keymaps/via/keymap.c | 52 + .../phoenix45_ortho/keymaps/via/rules.mk | 1 + .../phoenix45_ortho/phoenix45_ortho.c | 29 + .../phoenix45_ortho/phoenix45_ortho.h | 58 + .../checkerboards/phoenix45_ortho/readme.md | 17 + .../checkerboards/phoenix45_ortho/rules.mk | 24 + keyboards/checkerboards/quark_lp/config.h | 64 + keyboards/checkerboards/quark_lp/info.json | 16 + .../quark_lp/keymaps/2x2u/config.h | 19 + .../quark_lp/keymaps/2x2u/keymap.c | 80 + .../quark_lp/keymaps/default/config.h | 19 + .../quark_lp/keymaps/default/keymap.c | 80 + .../quark_lp/keymaps/mit/config.h | 19 + .../quark_lp/keymaps/mit/keymap.c | 80 + .../quark_lp/keymaps/via/config.h | 19 + .../quark_lp/keymaps/via/keymap.c | 99 + .../quark_lp/keymaps/via/rules.mk | 1 + keyboards/checkerboards/quark_lp/quark_lp.c | 17 + keyboards/checkerboards/quark_lp/quark_lp.h | 58 + keyboards/checkerboards/quark_lp/readme.md | 18 + keyboards/checkerboards/quark_lp/rules.mk | 19 + .../checkerboards/quark_squared/config.h | 55 + .../checkerboards/quark_squared/info.json | 13 + .../quark_squared/keymaps/2u/config.h | 19 + .../quark_squared/keymaps/2u/keymap.c | 80 + .../quark_squared/keymaps/default/config.h | 19 + .../quark_squared/keymaps/default/keymap.c | 80 + .../quark_squared/keymaps/via/config.h | 19 + .../quark_squared/keymaps/via/keymap.c | 102 + .../quark_squared/keymaps/via/rules.mk | 1 + .../quark_squared/quark_squared.c | 17 + .../quark_squared/quark_squared.h | 46 + .../checkerboards/quark_squared/readme.md | 15 + .../checkerboards/quark_squared/rules.mk | 24 + .../checkerboards/ud40_ortho_alt/config.h | 55 + .../checkerboards/ud40_ortho_alt/info.json | 22 + .../ud40_ortho_alt/keymaps/2x3u_alt/config.h | 19 + .../ud40_ortho_alt/keymaps/2x3u_alt/keymap.c | 80 + .../ud40_ortho_alt/keymaps/600u/config.h | 19 + .../ud40_ortho_alt/keymaps/600u/keymap.c | 80 + .../ud40_ortho_alt/keymaps/600u_alt/config.h | 19 + .../ud40_ortho_alt/keymaps/600u_alt/keymap.c | 80 + .../ud40_ortho_alt/keymaps/700u/config.h | 19 + .../ud40_ortho_alt/keymaps/700u/keymap.c | 80 + .../ud40_ortho_alt/keymaps/default/config.h | 19 + .../ud40_ortho_alt/keymaps/default/keymap.c | 80 + .../ud40_ortho_alt/keymaps/default/readme.md | 4 + .../ud40_ortho_alt/keymaps/npspears/config.h | 19 + .../ud40_ortho_alt/keymaps/npspears/keymap.c | 80 + .../ud40_ortho_alt/keymaps/npspears/readme.md | 4 + .../ud40_ortho_alt/keymaps/via/keymap.c | 100 + .../ud40_ortho_alt/keymaps/via/rules.mk | 1 + .../checkerboards/ud40_ortho_alt/readme.md | 17 + .../checkerboards/ud40_ortho_alt/rules.mk | 21 + .../ud40_ortho_alt/ud40_ortho_alt.c | 17 + .../ud40_ortho_alt/ud40_ortho_alt.h | 81 + keyboards/cherrybstudio/cb1800/cb1800.c | 14 + keyboards/cherrybstudio/cb1800/cb1800.h | 38 + keyboards/cherrybstudio/cb1800/config.h | 63 + keyboards/cherrybstudio/cb1800/info.json | 126 + .../cb1800/keymaps/default/keymap.c | 36 + .../cb1800/keymaps/default/readme.md | 1 + .../cherrybstudio/cb1800/keymaps/via/keymap.c | 56 + .../cherrybstudio/cb1800/keymaps/via/rules.mk | 2 + keyboards/cherrybstudio/cb1800/readme.md | 26 + keyboards/cherrybstudio/cb1800/rules.mk | 19 + keyboards/cherrybstudio/cb87/info.json | 2 - keyboards/cherrybstudio/cb87/rules.mk | 5 +- keyboards/cheshire/curiosity/info.json | 2 - keyboards/cheshire/curiosity/rules.mk | 4 +- keyboards/chidori/config.h | 57 - keyboards/chidori/info.json | 2 - .../chidori/keymaps/oled_sample/keymap.c | 5 +- .../chidori/keymaps/oled_sample/rules.mk | 3 +- keyboards/chidori/rules.mk | 18 +- keyboards/chili/config.h | 68 - keyboards/chili/info.json | 2 - keyboards/chili/rules.mk | 14 +- keyboards/chimera_ergo/chimera_ergo.h | 30 +- keyboards/chimera_ergo/config.h | 5 +- keyboards/chimera_ergo/info.json | 3 - keyboards/chimera_ergo/rules.mk | 14 +- keyboards/chimera_ls/chimera_ls.h | 28 +- keyboards/chimera_ls/config.h | 5 +- keyboards/chimera_ls/info.json | 3 - keyboards/chimera_ls/rules.mk | 14 +- keyboards/chimera_ortho/chimera_ortho.h | 28 +- keyboards/chimera_ortho/config.h | 5 +- keyboards/chimera_ortho/info.json | 2 - keyboards/chimera_ortho/rules.mk | 14 +- keyboards/chimera_ortho_plus/info.json | 2 - keyboards/chimera_ortho_plus/rules.mk | 15 +- keyboards/chlx/merro60/info.json | 161 +- keyboards/chlx/merro60/keymaps/ansi/keymap.c | 8 +- .../chlx/merro60/keymaps/default/keymap.c | 4 +- keyboards/chlx/merro60/keymaps/hhkb/keymap.c | 4 +- keyboards/chlx/merro60/keymaps/iso/keymap.c | 4 +- .../chlx/merro60/keymaps/tsangan/keymap.c | 4 +- keyboards/chlx/merro60/keymaps/via/keymap.c | 8 +- keyboards/chlx/merro60/merro60.h | 113 +- keyboards/chlx/merro60/rules.mk | 7 +- keyboards/choc_taro/config.h | 73 - keyboards/choc_taro/info.json | 2 - keyboards/choc_taro/rules.mk | 13 +- keyboards/choco60/info.json | 2 - keyboards/choco60/rev1/rules.mk | 5 +- keyboards/choco60/rev2/rules.mk | 5 +- keyboards/christmas_tree/V2017/V2017.h | 5 +- keyboards/christmas_tree/V2017/config.h | 5 +- keyboards/christmas_tree/V2017/rules.mk | 2 +- keyboards/christmas_tree/christmas_tree.c | 4 - keyboards/christmas_tree/christmas_tree.h | 26 +- keyboards/christmas_tree/config.h | 5 +- keyboards/christmas_tree/info.json | 3 - keyboards/christmas_tree/rules.mk | 18 +- keyboards/ck60i/info.json | 2 - keyboards/ck60i/rules.mk | 4 +- keyboards/ckeys/handwire_101/config.h | 72 +- keyboards/ckeys/handwire_101/handwire_101.c | 43 +- keyboards/ckeys/handwire_101/handwire_101.h | 23 +- keyboards/ckeys/handwire_101/info.json | 40 +- .../handwire_101/keymaps/default/config.h | 3 - .../handwire_101/keymaps/default/keymap.c | 326 +- keyboards/ckeys/handwire_101/rules.mk | 16 +- keyboards/ckeys/nakey/config.h | 73 +- keyboards/ckeys/nakey/info.json | 2 - .../ckeys/nakey/keymaps/default/keymap.c | 16 - keyboards/ckeys/nakey/nakey.c | 27 - keyboards/ckeys/nakey/nakey.h | 24 +- keyboards/ckeys/nakey/rules.mk | 18 +- keyboards/ckeys/obelus/config.h | 53 +- keyboards/ckeys/obelus/info.json | 3 - keyboards/ckeys/obelus/obelus.c | 17 - keyboards/ckeys/obelus/obelus.h | 8 +- keyboards/ckeys/obelus/rules.mk | 19 +- keyboards/ckeys/thedora/config.h | 68 - keyboards/ckeys/thedora/info.json | 37 +- .../ckeys/thedora/keymaps/default/config.h | 3 - .../ckeys/thedora/keymaps/default/keymap.c | 278 +- .../ckeys/thedora/keymaps/default/readme.md | 1 - keyboards/ckeys/thedora/readme.md | 6 +- keyboards/ckeys/thedora/rules.mk | 25 +- keyboards/ckeys/thedora/thedora.c | 53 +- keyboards/ckeys/thedora/thedora.h | 38 +- keyboards/ckeys/washington/config.h | 73 - keyboards/ckeys/washington/info.json | 2 - .../ckeys/washington/keymaps/default/keymap.c | 5 +- keyboards/ckeys/washington/rules.mk | 18 +- keyboards/claw44/keymaps/oled/keymap.c | 5 +- keyboards/claw44/keymaps/oled/rules.mk | 3 +- keyboards/claw44/rev1/info.json | 2 - keyboards/claw44/rev1/rules.mk | 11 +- keyboards/claw44/rules.mk | 15 +- keyboards/clawsome/bookerboard/info.json | 7 +- keyboards/clawsome/bookerboard/rules.mk | 16 +- keyboards/clawsome/coupe/info.json | 4 +- keyboards/clawsome/coupe/rules.mk | 9 +- keyboards/clawsome/doodle/info.json | 5 +- keyboards/clawsome/doodle/rules.mk | 5 +- keyboards/clawsome/fightpad/info.json | 4 +- keyboards/clawsome/fightpad/rules.mk | 5 +- keyboards/clawsome/gamebuddy/config.h | 36 - keyboards/clawsome/gamebuddy/gamebuddy.c | 16 - keyboards/clawsome/gamebuddy/info.json | 41 - keyboards/clawsome/gamebuddy/rules.mk | 24 - keyboards/clawsome/gamebuddy/v1_0/config.h | 36 + keyboards/clawsome/gamebuddy/v1_0/info.json | 37 + .../{ => v1_0}/keymaps/default/keymap.c | 0 .../clawsome/gamebuddy/{ => v1_0}/readme.md | 0 keyboards/clawsome/gamebuddy/v1_0/rules.mk | 19 + keyboards/clawsome/gamebuddy/v1_0/v1_0.c | 16 + .../gamebuddy/{gamebuddy.h => v1_0/v1_0.h} | 0 keyboards/clawsome/gamebuddy/v1_m/config.h | 45 + keyboards/clawsome/gamebuddy/v1_m/info.json | 38 + .../gamebuddy/v1_m/keymaps/default/keymap.c | 29 + keyboards/clawsome/gamebuddy/v1_m/readme.md | 13 + keyboards/clawsome/gamebuddy/v1_m/rules.mk | 19 + keyboards/clawsome/gamebuddy/v1_m/v1_m.c | 16 + keyboards/clawsome/gamebuddy/v1_m/v1_m.h | 33 + keyboards/clawsome/hatchback/hatcback.h | 41 - keyboards/clawsome/hatchback/hatchback.h | 43 + keyboards/clawsome/hatchback/info.json | 4 +- .../{keymap => keymaps}/default/keymap.c | 0 keyboards/clawsome/hatchback/rules.mk | 5 +- keyboards/clawsome/luggage_rack/config.h | 45 + keyboards/clawsome/luggage_rack/info.json | 24 + .../luggage_rack/keymaps/default/keymap.c | 29 + .../clawsome/luggage_rack/luggage_rack.c | 17 + .../clawsome/luggage_rack/luggage_rack.h | 38 + keyboards/clawsome/luggage_rack/readme.md | 13 + keyboards/clawsome/luggage_rack/rules.mk | 19 + keyboards/clawsome/numeros/info.json | 5 +- keyboards/clawsome/numeros/rules.mk | 5 +- keyboards/clawsome/roadster/info.json | 5 +- keyboards/clawsome/roadster/rules.mk | 5 +- keyboards/clawsome/sedan/info.json | 4 +- keyboards/clawsome/sedan/rules.mk | 9 +- keyboards/clawsome/sidekick/info.json | 4 +- keyboards/clawsome/sidekick/rules.mk | 9 +- keyboards/clawsome/suv/info.json | 5 +- .../suv/{keymap => keymaps}/default/keymap.c | 0 keyboards/clawsome/suv/rules.mk | 5 +- keyboards/clueboard/17/17.h | 5 +- keyboards/clueboard/17/config.h | 5 +- keyboards/clueboard/17/info.json | 4 - keyboards/clueboard/2x1800/2018/2018.h | 6 +- keyboards/clueboard/2x1800/2018/info.json | 6 - keyboards/clueboard/2x1800/2019/info.json | 11 - .../ibm_5291 => clueboard/2x1800/2021}/.noci | 0 keyboards/clueboard/2x1800/2021/2021.c | 154 + keyboards/clueboard/2x1800/2021/2021.h | 18 + keyboards/clueboard/2x1800/2021/config.h | 96 + keyboards/clueboard/2x1800/2021/font.h | 156 + keyboards/clueboard/2x1800/2021/info.json | 419 ++ .../2x1800/2021/keymaps/default/keymap.json | 18 + .../2x1800/2021/keymaps/default_4u/keymap.c | 28 + .../2x1800/2021/keymaps/default_4u/readme.md | 1 + .../2x1800/2021/keymaps/default_7u/keymap.c | 49 + .../2x1800/2021/keymaps/default_7u/readme.md | 1 + .../2x1800/2021/keymaps/signboard/config.h | 20 + .../2x1800/2021/keymaps/signboard/keymap.c | 50 + .../2x1800/2021/keymaps/signboard/readme.md | 1 + keyboards/clueboard/2x1800/2021/max7219.c | 318 ++ keyboards/clueboard/2x1800/2021/max7219.h | 87 + keyboards/clueboard/2x1800/2021/readme.md | 17 + keyboards/clueboard/2x1800/2021/rules.mk | 1 + keyboards/clueboard/2x1800/info.json | 3 +- keyboards/clueboard/60/60.c | 8 - keyboards/clueboard/60/60.h | 6 +- keyboards/clueboard/60/info.json | 8 - keyboards/clueboard/66/info.json | 5 +- .../clueboard/66/keymaps/magicmonty/keymap.c | 30 +- .../clueboard/66/keymaps/tetris/keymap.c | 126 +- keyboards/clueboard/66/rev1/info.json | 6 - keyboards/clueboard/66/rev2/info.json | 6 - keyboards/clueboard/66/rev3/info.json | 6 - keyboards/clueboard/66/rev4/info.json | 6 - keyboards/clueboard/66/rev4/rev4.c | 8 +- keyboards/clueboard/66_hotswap/gen1/config.h | 50 +- keyboards/clueboard/66_hotswap/gen1/gen1.c | 2 +- keyboards/clueboard/66_hotswap/gen1/info.json | 4 - .../66_hotswap/gen1/keymaps/66_ansi/keymap.c | 52 + .../{ => gen1}/keymaps/66_ansi/readme.md | 0 .../66_hotswap/gen1/keymaps/default/keymap.c | 139 + .../{ => gen1}/keymaps/default/readme.md | 0 .../{ => gen1}/keymaps/json/keymap.json | 0 .../66_hotswap/keymaps/66_ansi/keymap.c | 36 - .../66_hotswap/keymaps/default/keymap.c | 123 - .../clueboard/66_hotswap/prototype/info.json | 5 - .../prototype/keymaps/66_ansi/keymap.c | 52 + .../prototype/keymaps/66_ansi/readme.md | 11 + .../prototype/keymaps/default/keymap.c | 139 + .../prototype/keymaps/default/readme.md | 8 + .../clueboard/66_hotswap/prototype/rules.mk | 2 +- keyboards/clueboard/card/info.json | 3 - .../clueboard/card/keymaps/default/keymap.c | 10 - .../clueboard/card/keymaps/default/rules.mk | 6 +- .../card/keymaps/rgb_effects/keymap.c | 14 - .../card/keymaps/rgb_effects/rules.mk | 8 +- keyboards/cmm_studio/saka68/hotswap/config.h | 6 +- keyboards/cmm_studio/saka68/hotswap/hotswap.h | 45 +- keyboards/cmm_studio/saka68/hotswap/info.json | 93 +- .../saka68/hotswap/keymaps/default/keymap.c | 34 +- .../saka68/hotswap/keymaps/default/readme.md | 1 - .../saka68/hotswap/keymaps/via/keymap.c | 61 +- keyboards/cmm_studio/saka68/hotswap/rules.mk | 8 +- keyboards/cmm_studio/saka68/solder/config.h | 2 +- keyboards/cmm_studio/saka68/solder/info.json | 248 +- .../saka68/solder/keymaps/default/keymap.c | 16 +- .../saka68/solder/keymaps/via/keymap.c | 40 +- keyboards/cmm_studio/saka68/solder/rules.mk | 7 +- keyboards/cmm_studio/saka68/solder/solder.c | 3 - keyboards/cmm_studio/saka68/solder/solder.h | 45 +- keyboards/coarse/cordillera/info.json | 2 - keyboards/coarse/cordillera/rules.mk | 5 +- .../{peiorisboards => coarse}/ixora/chconf.h | 0 .../{peiorisboards => coarse}/ixora/config.h | 0 .../{peiorisboards => coarse}/ixora/halconf.h | 0 keyboards/coarse/ixora/info.json | 19 + .../{peiorisboards => coarse}/ixora/ixora.c | 0 .../{peiorisboards => coarse}/ixora/ixora.h | 0 .../coarse/ixora/keymaps/default/keymap.c | 30 + .../ixora/keymaps/wntrmln/keymap.c | 0 keyboards/coarse/ixora/readme.md | 22 + keyboards/coarse/ixora/rules.mk | 21 + keyboards/{ => coarse}/vinta/chconf.h | 0 keyboards/coarse/vinta/config.h | 52 + keyboards/{ => coarse}/vinta/halconf.h | 0 keyboards/coarse/vinta/info.json | 16 + .../coarse/vinta/keymaps/default/keymap.c | 39 + keyboards/coarse/vinta/readme.md | 22 + keyboards/coarse/vinta/rules.mk | 23 + keyboards/coarse/vinta/vinta.c | 1 + keyboards/coarse/vinta/vinta.h | 49 + keyboards/cocoa40/cocoa40.c | 27 - keyboards/cocoa40/info.json | 2 - keyboards/cocoa40/rules.mk | 18 +- keyboards/comet46/comet46.h | 27 +- keyboards/comet46/config.h | 5 +- keyboards/comet46/i2c.h | 5 +- keyboards/comet46/info.json | 2 - .../comet46/keymaps/default-rgbled/keymap.c | 2 +- keyboards/comet46/keymaps/satt/keymap.c | 8 +- keyboards/comet46/rules.mk | 14 +- keyboards/compound/compound.c | 18 + keyboards/compound/compound.h | 38 + keyboards/compound/config.h | 48 + keyboards/compound/info.json | 77 + keyboards/compound/keymaps/default/keymap.c | 40 + keyboards/compound/keymaps/via/keymap.c | 49 + keyboards/compound/keymaps/via/rules.mk | 1 + keyboards/compound/readme.md | 30 + keyboards/compound/rules.mk | 19 + keyboards/contra/config.h | 5 +- keyboards/contra/contra.h | 37 +- keyboards/contra/info.json | 4 - keyboards/contra/keymaps/dana/rules.mk | 2 +- keyboards/contra/keymaps/deastiny/keymap.c | 6 +- keyboards/contra/keymaps/default/keymap.c | 2 - .../contra/keymaps/losinggeneration/rules.mk | 2 +- keyboards/contra/keymaps/maxr1998/keymap.c | 8 +- keyboards/contra/rules.mk | 17 +- keyboards/converter/a1200/a1200.c | 16 + keyboards/converter/a1200/a1200.h | 47 + keyboards/converter/a1200/info.json | 110 + .../converter/a1200/keymaps/default/keymap.c | 39 + keyboards/converter/a1200/miss1200/config.h | 62 + keyboards/converter/a1200/miss1200/rules.mk | 19 + keyboards/converter/a1200/readme.md | 55 + keyboards/converter/a1200/teensy2pp/config.h | 61 + keyboards/converter/a1200/teensy2pp/rules.mk | 19 + .../converter/adb_usb}/adb.c | 4 - .../converter/adb_usb}/adb.h | 0 keyboards/converter/adb_usb/adb_usb.h | 95 +- keyboards/converter/adb_usb/info.json | 2 - keyboards/converter/adb_usb/matrix.c | 8 + keyboards/converter/adb_usb/rules.mk | 14 +- keyboards/converter/hp_46010a/info.json | 2 - keyboards/converter/hp_46010a/rules.mk | 17 +- keyboards/converter/ibm_5291/config.h | 39 - keyboards/converter/ibm_5291/ibm_5291.c | 3 - keyboards/converter/ibm_5291/ibm_5291.h | 69 - keyboards/converter/ibm_5291/info.json | 96 - .../ibm_5291/keymaps/default/keymap.c | 233 -- .../keymaps/kbdbabel_doc_ibm5291_kbd.pdf | Bin 13054 -> 0 bytes keyboards/converter/ibm_5291/matrix.c | 284 -- keyboards/converter/ibm_5291/matrix.csv | 96 - keyboards/converter/ibm_5291/readme.md | 72 - keyboards/converter/ibm_5291/rules.mk | 38 - keyboards/converter/ibm_terminal/config.h | 39 +- .../converter/ibm_terminal/ibm_terminal.h | 105 +- keyboards/converter/ibm_terminal/info.json | 2 - .../ibm_terminal/keymaps/default/rules.mk | 11 +- .../ibm_terminal/keymaps/priyadi/rules.mk | 3 +- keyboards/converter/ibm_terminal/rules.mk | 17 +- keyboards/converter/m0110_usb/info.json | 4 - .../converter/m0110_usb}/m0110.c | 0 .../converter/m0110_usb}/m0110.h | 0 keyboards/converter/m0110_usb/m0110_usb.h | 82 +- keyboards/converter/m0110_usb/rules.mk | 11 +- keyboards/converter/modelm101/config.h | 54 +- keyboards/converter/modelm101/info.json | 4 +- .../modelm101/keymaps/default/keymap.c | 16 - keyboards/converter/modelm101/modelm101.c | 21 - keyboards/converter/modelm101/rules.mk | 18 +- keyboards/converter/modelm_ssk/config.h | 76 + keyboards/converter/modelm_ssk/info.json | 455 +++ .../modelm_ssk/keymaps/default/keymap.c | 114 + .../modelm_ssk/keymaps/default/readme.md | 1 + .../modelm_ssk/keymaps/tiltowait/config.h | 21 + .../modelm_ssk/keymaps/tiltowait/keymap.c | 116 + .../modelm_ssk/keymaps/tiltowait/readme.md | 11 + keyboards/converter/modelm_ssk/modelm_ssk.c | 19 + keyboards/converter/modelm_ssk/modelm_ssk.h | 45 + keyboards/converter/modelm_ssk/readme.md | 55 + keyboards/converter/modelm_ssk/rules.mk | 20 + .../converter/numeric_keypad_IIe/info.json | 2 - .../keymaps/default/keymap.c | 20 - .../numeric_keypad_IIe/numeric_keypad_IIe.c | 27 - .../converter/numeric_keypad_IIe/rules.mk | 18 +- keyboards/converter/palm_usb/post_rules.mk | 7 + keyboards/converter/palm_usb/rules.mk | 23 +- .../converter/palm_usb/stowaway/info.json | 2 - keyboards/converter/periboard_512/info.json | 116 + keyboards/converter/periboard_512/rules.mk | 5 +- keyboards/converter/siemens_tastatur/config.h | 4 +- .../converter/siemens_tastatur/info.json | 2 - .../siemens_tastatur/keymaps/default/keymap.c | 4 - keyboards/converter/siemens_tastatur/rules.mk | 4 +- .../siemens_tastatur/siemens_tastatur.c | 28 - keyboards/converter/sun_usb/config.h | 5 +- keyboards/converter/sun_usb/post_rules.mk | 6 + keyboards/converter/sun_usb/rules.mk | 22 +- keyboards/converter/sun_usb/type3/info.json | 2 - keyboards/converter/sun_usb/type3/type3.h | 55 +- keyboards/converter/sun_usb/type5/info.json | 2 - keyboards/converter/sun_usb/type5/type5.h | 144 +- keyboards/converter/usb_usb/ble/ble.h | 5 +- keyboards/converter/usb_usb/ble/rules.mk | 18 +- keyboards/converter/usb_usb/config.h | 5 +- keyboards/converter/usb_usb/hasu/hasu.h | 5 +- keyboards/converter/usb_usb/info.json | 2 - .../converter/usb_usb/keymaps/narze/README.md | 2 +- .../converter/usb_usb/pro_micro/pro_micro.h | 5 +- keyboards/converter/usb_usb/rules.mk | 10 +- keyboards/converter/usb_usb/usb_usb.h | 189 +- keyboards/converter/xt_usb/info.json | 2 - keyboards/converter/xt_usb/rules.mk | 8 +- .../converter/xt_usb}/xt.h | 0 .../converter/xt_usb}/xt_interrupt.c | 0 keyboards/cool836a/info.json | 2 - keyboards/cool836a/rules.mk | 5 +- .../copenhagen_click/click_pad_v1/config.h | 73 - .../copenhagen_click/click_pad_v1/info.json | 4 +- .../click_pad_v1/keymaps/default/keymap.c | 8 - .../copenhagen_click/click_pad_v1/rules.mk | 18 +- keyboards/coseyfannitutti/discipad/config.h | 73 - keyboards/coseyfannitutti/discipad/info.json | 2 - keyboards/coseyfannitutti/discipad/rules.mk | 20 +- keyboards/coseyfannitutti/discipline/config.h | 73 - .../coseyfannitutti/discipline/discipline.h | 12 +- .../coseyfannitutti/discipline/info.json | 616 ++- .../discipline/keymaps/noroadsleft/keymap.c | 2 +- keyboards/coseyfannitutti/discipline/rules.mk | 20 +- keyboards/coseyfannitutti/mullet/config.h | 20 - keyboards/coseyfannitutti/mullet/info.json | 4 +- keyboards/coseyfannitutti/mullet/mullet.c | 7 - keyboards/coseyfannitutti/mullet/rules.mk | 18 +- keyboards/coseyfannitutti/mulletpad/config.h | 22 +- keyboards/coseyfannitutti/mulletpad/info.json | 2 - .../coseyfannitutti/mulletpad/mulletpad.c | 7 - keyboards/coseyfannitutti/mulletpad/rules.mk | 18 +- keyboards/coseyfannitutti/mysterium/config.h | 73 - keyboards/coseyfannitutti/mysterium/info.json | 4 +- keyboards/coseyfannitutti/mysterium/rules.mk | 20 +- keyboards/coseyfannitutti/romeo/config.h | 73 - keyboards/coseyfannitutti/romeo/info.json | 4 +- keyboards/coseyfannitutti/romeo/rules.mk | 18 +- keyboards/cospad/config.h | 223 -- keyboards/cospad/info.json | 172 - keyboards/cospad/keymaps/detrus/keymap.c | 367 -- keyboards/cospad/readme.md | 18 - keyboards/cospad/rules.mk | 32 - keyboards/cozykeys/bloomer/v2/info.json | 2 - keyboards/cozykeys/bloomer/v2/rules.mk | 5 +- keyboards/cozykeys/bloomer/v3/info.json | 2 - keyboards/cozykeys/bloomer/v3/rules.mk | 5 +- keyboards/cozykeys/speedo/v2/info.json | 2 - keyboards/cozykeys/speedo/v2/rules.mk | 5 +- keyboards/cozykeys/speedo/v3/info.json | 2 - keyboards/cozykeys/speedo/v3/rules.mk | 5 +- keyboards/cradio/config.h | 83 + keyboards/cradio/cradio.c | 38 + keyboards/cradio/cradio.h | 50 + keyboards/cradio/info.json | 52 + keyboards/cradio/keymaps/default/config.h | 39 + keyboards/cradio/keymaps/default/keymap.c | 51 + keyboards/cradio/readme.md | 60 + keyboards/cradio/rules.mk | 21 + keyboards/craftwalk/config.h | 53 - keyboards/craftwalk/info.json | 2 - keyboards/craftwalk/keymaps/default/keymap.c | 6 +- keyboards/craftwalk/rules.mk | 5 +- keyboards/crawlpad/info.json | 2 - keyboards/crawlpad/keymaps/default/keymap.c | 37 - keyboards/crawlpad/rules.mk | 10 +- keyboards/crazy_keyboard_68/info.json | 2 - keyboards/crazy_keyboard_68/rules.mk | 5 +- keyboards/crbn/info.json | 2 - keyboards/crbn/rules.mk | 5 +- keyboards/crin/config.h | 38 + keyboards/crin/crin.c | 18 + keyboards/crin/crin.h | 112 + keyboards/crin/info.json | 409 ++ keyboards/crin/keymaps/default/keymap.c | 63 + keyboards/crin/keymaps/via/keymap.c | 63 + keyboards/crin/keymaps/via/rules.mk | 1 + keyboards/crin/readme.md | 24 + keyboards/crin/rules.mk | 22 + keyboards/crkbd/config.h | 21 +- keyboards/crkbd/info.json | 2 - keyboards/crkbd/keymaps/armand1m/keymap.c | 7 +- keyboards/crkbd/keymaps/armand1m/rules.mk | 3 +- keyboards/crkbd/keymaps/blipson/blipsonfont.c | 232 ++ keyboards/crkbd/keymaps/blipson/config.h | 51 + keyboards/crkbd/keymaps/blipson/keymap.c | 140 + keyboards/crkbd/keymaps/blipson/readme.md | 10 + keyboards/crkbd/keymaps/blipson/rules.mk | 3 + keyboards/crkbd/keymaps/curry/rules.mk | 4 +- keyboards/crkbd/keymaps/davidrambo/config.h | 102 + keyboards/crkbd/keymaps/davidrambo/keymap.c | 126 + keyboards/crkbd/keymaps/davidrambo/readme.md | 1 + keyboards/crkbd/keymaps/davidrambo/rules.mk | 3 + keyboards/crkbd/keymaps/default/keymap.c | 7 +- keyboards/crkbd/keymaps/default/rules.mk | 3 +- keyboards/crkbd/keymaps/devdev/config.h | 92 +- keyboards/crkbd/keymaps/devdev/keymap.c | 143 +- keyboards/crkbd/keymaps/devdev/rules.mk | 3 +- keyboards/crkbd/keymaps/dsanchezseco/config.h | 83 +- keyboards/crkbd/keymaps/dsanchezseco/keymap.c | 7 +- keyboards/crkbd/keymaps/dsanchezseco/rules.mk | 2 +- keyboards/crkbd/keymaps/edvorakjp/oled.c | 7 +- keyboards/crkbd/keymaps/edvorakjp/rules.mk | 5 +- keyboards/crkbd/keymaps/gotham/config.h | 74 +- keyboards/crkbd/keymaps/gotham/keymap.c | 4 +- keyboards/crkbd/keymaps/gotham/oled.c | 3 +- keyboards/crkbd/keymaps/gotham/rules.mk | 3 +- keyboards/crkbd/keymaps/jarred/rules.mk | 2 +- keyboards/crkbd/keymaps/kidbrazil/config.h | 86 +- keyboards/crkbd/keymaps/kidbrazil/keymap.c | 9 +- keyboards/crkbd/keymaps/kidbrazil/rules.mk | 3 +- .../keymaps/manna-harbour_miryoku/config.h | 16 - .../keymaps/manna-harbour_miryoku/keymap.c | 1 - keyboards/crkbd/keymaps/mcrown/config.h | 84 +- keyboards/crkbd/keymaps/mcrown/oled.c | 3 +- keyboards/crkbd/keymaps/mcrown/rules.mk | 5 +- keyboards/crkbd/keymaps/ninjonas/config.h | 86 +- keyboards/crkbd/keymaps/ninjonas/rules.mk | 3 +- keyboards/crkbd/keymaps/oled_sample/keymap.c | 5 +- keyboards/crkbd/keymaps/oled_sample/rules.mk | 3 +- keyboards/crkbd/keymaps/oo/keymap.c | 7 +- keyboards/crkbd/keymaps/oo/rules.mk | 3 +- keyboards/crkbd/keymaps/rarick/config.h | 48 + keyboards/crkbd/keymaps/rarick/glcdfont.c | 233 ++ keyboards/crkbd/keymaps/rarick/keymap.c | 178 + keyboards/crkbd/keymaps/rarick/rules.mk | 14 + keyboards/crkbd/keymaps/rjhilgefort/keymap.c | 7 +- keyboards/crkbd/keymaps/rjhilgefort/rules.mk | 3 +- keyboards/crkbd/keymaps/rpbaptist/config.h | 82 +- keyboards/crkbd/keymaps/rpbaptist/keymap.c | 5 +- keyboards/crkbd/keymaps/rpbaptist/readme.md | 2 +- keyboards/crkbd/keymaps/rpbaptist/rules.mk | 5 +- keyboards/crkbd/keymaps/rs/oled.c | 2 +- keyboards/crkbd/keymaps/rs/rules.mk | 2 +- keyboards/crkbd/keymaps/snowe/rules.mk | 5 +- keyboards/crkbd/keymaps/soundmonster/config.h | 76 +- keyboards/crkbd/keymaps/soundmonster/keymap.c | 9 +- keyboards/crkbd/keymaps/soundmonster/rules.mk | 3 +- keyboards/crkbd/keymaps/sulrich/README.md | 72 + keyboards/crkbd/keymaps/sulrich/config.h | 36 + keyboards/crkbd/keymaps/sulrich/keymap.c | 156 + keyboards/crkbd/keymaps/sulrich/rules.mk | 3 + keyboards/crkbd/keymaps/thumb_ctrl/rules.mk | 2 +- keyboards/crkbd/keymaps/vayashiko/config.h | 42 + keyboards/crkbd/keymaps/vayashiko/keymap.c | 183 + keyboards/crkbd/keymaps/vayashiko/rules.mk | 31 + keyboards/crkbd/keymaps/via/config.h | 30 +- keyboards/crkbd/keymaps/via/keymap.c | 7 +- keyboards/crkbd/keymaps/via/rules.mk | 3 +- keyboards/crkbd/keymaps/vxid/rules.mk | 2 +- keyboards/crkbd/keymaps/xyverz/keymap.c | 7 +- keyboards/crkbd/keymaps/xyverz/rules.mk | 3 +- keyboards/crkbd/post_config.h | 43 + keyboards/crkbd/readme.md | 84 +- keyboards/crkbd/rev1/config.h | 11 +- keyboards/crkbd/rules.mk | 37 +- keyboards/cu24/config.h | 73 +- keyboards/cu24/cu24.h | 36 +- keyboards/cu24/info.json | 4 +- keyboards/cu24/rules.mk | 18 +- keyboards/cu75/config.h | 53 +- keyboards/cu75/cu75.c | 15 +- keyboards/cu75/cu75.h | 107 +- keyboards/cu75/info.json | 5 - keyboards/cu75/keymaps/default/keymap.c | 16 - keyboards/cu75/keymaps/default/rules.mk | 10 +- keyboards/cu75/keymaps/iso/keymap.c | 16 - keyboards/cu75/keymaps/iso/rules.mk | 10 +- keyboards/cu75/rules.mk | 7 - keyboards/cu80/info.json | 4 - keyboards/cu80/rules.mk | 16 +- keyboards/custommk/genesis/config.h | 42 - keyboards/custommk/genesis/genesis.c | 38 - keyboards/custommk/genesis/genesis.h | 48 - keyboards/custommk/genesis/info.json | 16 - .../custommk/genesis/keymaps/via/keymap.c | 51 - keyboards/custommk/genesis/readme.md | 4 +- keyboards/custommk/genesis/rev1/config.h | 65 + keyboards/custommk/genesis/rev1/info.json | 14 + .../{ => rev1}/keymaps/default/keymap.c | 0 .../{ => rev1}/keymaps/default/readme.md | 0 .../{ => rev1}/keymaps/numpad/keymap.c | 0 .../{ => rev1}/keymaps/numpad/readme.md | 0 .../genesis/rev1/keymaps/via/keymap.c | 51 + .../genesis/{ => rev1}/keymaps/via/readme.md | 0 .../genesis/rev1}/keymaps/via/rules.mk | 0 keyboards/custommk/genesis/rev1/readme.md | 19 + keyboards/custommk/genesis/rev1/rev1.c | 38 + keyboards/custommk/genesis/rev1/rev1.h | 48 + .../rev2 => custommk/genesis/rev1}/rules.mk | 0 keyboards/custommk/genesis/rev2/config.h | 66 + keyboards/custommk/genesis/rev2/info.json | 74 + .../genesis/rev2/keymaps/default/keymap.c | 76 + .../genesis/rev2/keymaps/default/readme.md | 6 + .../genesis/rev2/keymaps/numpad/keymap.c | 89 + .../genesis/rev2/keymaps/numpad/readme.md | 3 + .../genesis/rev2/keymaps/via/keymap.c | 167 + .../genesis/rev2/keymaps/via/readme.md | 3 + .../genesis/{ => rev2}/keymaps/via/rules.mk | 0 keyboards/custommk/genesis/rev2/readme.md | 19 + keyboards/custommk/genesis/rev2/rev2.c | 39 + keyboards/custommk/genesis/rev2/rev2.h | 66 + keyboards/custommk/genesis/rev2/rules.mk | 20 + keyboards/custommk/genesis/rules.mk | 9 +- keyboards/cutie_club/borsdorf/info.json | 2 - keyboards/cutie_club/borsdorf/rules.mk | 5 +- .../cutie_club/giant_macro_pad/info.json | 430 ++ keyboards/cutie_club/giant_macro_pad/rules.mk | 5 +- keyboards/cutie_club/keebcats/denis/config.h | 50 + keyboards/cutie_club/keebcats/denis/denis.c | 17 + keyboards/cutie_club/keebcats/denis/denis.h | 155 + keyboards/cutie_club/keebcats/denis/info.json | 209 + .../keebcats/denis/keymaps/default/keymap.c | 28 + .../keebcats/denis/keymaps/via/keymap.c | 49 + .../keebcats/denis/keymaps/via/rules.mk | 1 + keyboards/cutie_club/keebcats/denis/readme.md | 18 + keyboards/cutie_club/keebcats/denis/rules.mk | 21 + keyboards/cutie_club/keebcats/dougal/config.h | 50 + keyboards/cutie_club/keebcats/dougal/dougal.c | 17 + keyboards/cutie_club/keebcats/dougal/dougal.h | 34 + .../cutie_club/keebcats/dougal/info.json | 84 + .../keebcats/dougal/keymaps/default/keymap.c | 28 + .../keebcats/dougal/keymaps/via/keymap.c | 49 + .../keebcats/dougal/keymaps/via/rules.mk | 1 + .../cutie_club/keebcats/dougal/readme.md | 18 + keyboards/cutie_club/keebcats/dougal/rules.mk | 19 + keyboards/cutie_club/wraith/config.h | 73 - keyboards/cutie_club/wraith/info.json | 4 - .../wraith/keymaps/default/keymap.c | 9 - .../cutie_club/wraith/keymaps/timer/keymap.c | 9 - keyboards/cutie_club/wraith/rules.mk | 14 +- keyboards/cx60/config.h | 58 + keyboards/cx60/cx60.c | 15 + keyboards/cx60/cx60.h | 33 + keyboards/cx60/info.json | 10 + keyboards/cx60/keymaps/default/keymap.c | 49 + keyboards/cx60/keymaps/default/readme.md | 1 + keyboards/cx60/keymaps/via/keymap.c | 50 + keyboards/cx60/keymaps/via/readme.md | 1 + keyboards/cx60/keymaps/via/rules.mk | 2 + keyboards/cx60/keymaps/via_caps/config.h | 20 + keyboards/cx60/keymaps/via_caps/keymap.c | 80 + keyboards/cx60/keymaps/via_caps/readme.md | 1 + keyboards/cx60/keymaps/via_caps/rules.mk | 2 + keyboards/cx60/readme.md | 15 + keyboards/cx60/rules.mk | 19 + keyboards/cybergear/macro25/info.json | 2 - keyboards/cybergear/macro25/rules.mk | 5 +- keyboards/daisy/config.h | 222 -- keyboards/daisy/info.json | 107 - keyboards/daisy/readme.md | 15 - keyboards/daisy/rules.mk | 30 - keyboards/daji/seis_cinco/info.json | 2 - keyboards/daji/seis_cinco/rules.mk | 5 +- keyboards/db/db63/info.json | 4 +- keyboards/db/db63/rules.mk | 11 +- keyboards/dc01/arrow/info.json | 2 - keyboards/dc01/arrow/rules.mk | 18 +- keyboards/dc01/left/config.h | 22 +- keyboards/dc01/left/i2c.h | 5 +- keyboards/dc01/left/info.json | 2 - keyboards/dc01/left/matrix.c | 5 +- keyboards/dc01/left/rules.mk | 18 +- keyboards/dc01/numpad/info.json | 2 - keyboards/dc01/numpad/rules.mk | 18 +- keyboards/dc01/right/info.json | 2 - keyboards/dc01/right/rules.mk | 18 +- keyboards/dekunukem/duckypad/config.h | 53 +- keyboards/dekunukem/duckypad/info.json | 2 - .../duckypad/keymaps/default/keymap.c | 3 +- .../dekunukem/duckypad/keymaps/m4cs/keymap.c | 3 +- .../duckypad/keymaps/m4cs/sysinfo.py | 1 - .../dekunukem/duckypad/keymaps/via/keymap.c | 4 +- keyboards/dekunukem/duckypad/rules.mk | 8 +- keyboards/delikeeb/flatbread60/config.h | 53 - keyboards/delikeeb/flatbread60/info.json | 2 - keyboards/delikeeb/flatbread60/rules.mk | 5 +- keyboards/delikeeb/vaguettelite/info.json | 2 - keyboards/delikeeb/vaguettelite/rules.mk | 5 +- keyboards/delikeeb/vanana/info.json | 2 - keyboards/delikeeb/vanana/rules.mk | 5 +- keyboards/delikeeb/vaneela/config.h | 53 - keyboards/delikeeb/vaneela/info.json | 2 - keyboards/delikeeb/vaneela/rules.mk | 5 +- keyboards/delikeeb/vaneelaex/config.h | 53 - keyboards/delikeeb/vaneelaex/info.json | 2 - keyboards/delikeeb/vaneelaex/rules.mk | 5 +- keyboards/delikeeb/waaffle/rev3/info.json | 2 - keyboards/delikeeb/waaffle/rev3/rules.mk | 5 +- keyboards/delilah/info.json | 2 - keyboards/delilah/rules.mk | 3 +- keyboards/deltasplit75/info.json | 2 - keyboards/deltasplit75/rules.mk | 15 +- keyboards/dichotomy/config.h | 5 +- keyboards/dichotomy/dichotomy.h | 30 +- keyboards/dichotomy/info.json | 2 - keyboards/dichotomy/rules.mk | 14 +- keyboards/dinofizz/fnrow/v1/chconf.h | 35 + keyboards/dinofizz/fnrow/v1/config.h | 36 + keyboards/dinofizz/fnrow/v1/halconf.h | 51 + keyboards/dinofizz/fnrow/v1/info.json | 76 + .../fnrow/v1/keymaps/default/keymap.c | 22 + .../fnrow/v1/keymaps/default/readme.md | 1 + .../dinofizz/fnrow/v1/keymaps/via/keymap.c | 34 + .../dinofizz/fnrow/v1/keymaps/via/rules.mk | 1 + keyboards/dinofizz/fnrow/v1/mcuconf.h | 28 + keyboards/dinofizz/fnrow/v1/readme.md | 28 + keyboards/dinofizz/fnrow/v1/rules.mk | 22 + keyboards/dinofizz/fnrow/v1/v1.c | 36 + keyboards/dinofizz/fnrow/v1/v1.h | 25 + keyboards/diverge3/config.h | 68 - keyboards/diverge3/diverge3.h | 37 +- keyboards/diverge3/info.json | 3 - keyboards/diverge3/rules.mk | 16 +- keyboards/divergetm2/info.json | 2 - .../divergetm2/keymaps/xtonhasvim/keymap.c | 2 +- keyboards/divergetm2/rules.mk | 17 +- keyboards/dk60/dk60.c | 1 - keyboards/dk60/info.json | 2 - keyboards/dk60/rules.mk | 7 +- keyboards/dm9records/ergoinu/ergoinu.c | 4 - keyboards/dm9records/ergoinu/info.json | 3 - .../ergoinu/keymaps/default/keymap.c | 3 - .../ergoinu/keymaps/default/rules.mk | 10 +- .../ergoinu/keymaps/default_jis/keymap.c | 3 - .../ergoinu/keymaps/default_jis/rules.mk | 10 +- keyboards/dm9records/ergoinu/post_rules.mk | 9 + keyboards/dm9records/ergoinu/rules.mk | 26 +- keyboards/dm9records/plaid/config.h | 73 - keyboards/dm9records/plaid/info.json | 4 - .../plaid/keymaps/brickbots/keymap.c | 6 +- .../plaid/keymaps/thehalfdeafchef/keymap.c | 2 +- keyboards/dm9records/plaid/plaid.c | 27 - keyboards/dm9records/plaid/rules.mk | 20 +- keyboards/dm9records/tartan/config.h | 73 - keyboards/dm9records/tartan/info.json | 8 - keyboards/dm9records/tartan/rules.mk | 20 +- keyboards/dmqdesign/spin/info.json | 2 - .../dmqdesign/spin/keymaps/gorbachev/keymap.c | 5 +- .../dmqdesign/spin/keymaps/gorbachev/rules.mk | 3 +- .../spin/keymaps/spidey3_pad/rules.mk | 2 +- keyboards/dmqdesign/spin/rules.mk | 15 +- keyboards/do60/config.h | 5 +- keyboards/do60/info.json | 4 +- keyboards/do60/rules.mk | 15 +- keyboards/donutcables/budget96/info.json | 2 - keyboards/donutcables/budget96/rules.mk | 11 +- keyboards/donutcables/scrabblepad/config.h | 143 +- keyboards/donutcables/scrabblepad/info.json | 2 - .../scrabblepad/keymaps/default/keymap.c | 87 +- .../scrabblepad/keymaps/default/readme.md | 2 +- .../scrabblepad/keymaps/random/keymap.c | 13 - .../scrabblepad/keymaps/via/keymap.c | 92 + .../scrabblepad/keymaps/via/readme.md | 5 + .../scrabblepad}/keymaps/via/rules.mk | 0 keyboards/donutcables/scrabblepad/rules.mk | 29 +- .../donutcables/scrabblepad/scrabblepad.c | 29 +- .../donutcables/scrabblepad/scrabblepad.h | 3 +- keyboards/doodboard/duckboard/info.json | 2 - .../duckboard/keymaps/default/keymap.c | 5 +- keyboards/doodboard/duckboard/rules.mk | 8 +- keyboards/doodboard/duckboard_r2/info.json | 2 - .../duckboard_r2/keymaps/default/keymap.c | 5 +- .../duckboard_r2/keymaps/via/keymap.c | 5 +- keyboards/doodboard/duckboard_r2/rules.mk | 8 +- keyboards/doppelganger/config.h | 73 - keyboards/doppelganger/info.json | 2 - keyboards/doppelganger/rules.mk | 16 +- keyboards/doro67/multi/info.json | 2 - .../doro67/multi/keymaps/konstantin/config.h | 2 - .../doro67/multi/keymaps/konstantin/rules.mk | 2 +- keyboards/doro67/multi/rules.mk | 19 +- keyboards/doro67/regular/info.json | 4 - keyboards/doro67/regular/rules.mk | 18 +- keyboards/doro67/rgb/config.h | 48 + keyboards/doro67/rgb/info.json | 4 - keyboards/doro67/rgb/rules.mk | 18 +- keyboards/dozen0/config.h | 68 - keyboards/dozen0/dozen0.c | 27 - keyboards/dozen0/info.json | 3 - keyboards/dozen0/keymaps/default/keymap.c | 8 - keyboards/dozen0/rules.mk | 16 +- keyboards/dp60/config.h | 48 + keyboards/dp60/dp60.c | 2 +- keyboards/dp60/dp60.h | 4 +- keyboards/dp60/info.json | 429 +- keyboards/dp60/rules.mk | 18 +- keyboards/draculad/config.h | 4 +- keyboards/draculad/info.json | 2 - keyboards/draculad/keymaps/default/keymap.c | 31 +- keyboards/draculad/keymaps/pimoroni/keymap.c | 32 +- keyboards/draculad/keymaps/pimoroni/rules.mk | 5 +- keyboards/draculad/rules.mk | 8 +- keyboards/draytronics/daisy/info.json | 2 - keyboards/draytronics/daisy/rules.mk | 7 +- keyboards/draytronics/elise/config.h | 70 + keyboards/draytronics/elise/elise.c | 18 + keyboards/draytronics/elise/elise.h | 135 + keyboards/draytronics/elise/info.json | 619 +++ .../elise/keymaps/blake_iso/keymap.c | 68 + .../elise/keymaps/default/keymap.c | 67 + .../elise/keymaps/default_iso/keymap.c | 68 + keyboards/draytronics/elise/readme.md | 32 + keyboards/draytronics/elise/rules.mk | 21 + keyboards/draytronics/elise_v2/config.h | 79 + keyboards/draytronics/elise_v2/elise_v2.c | 18 + keyboards/draytronics/elise_v2/elise_v2.h | 135 + keyboards/draytronics/elise_v2/info.json | 619 +++ .../elise_v2/keymaps/blake_iso/keymap.c | 68 + .../elise_v2/keymaps/default/keymap.c | 67 + .../elise_v2/keymaps/default_iso/keymap.c | 68 + keyboards/draytronics/elise_v2/readme.md | 34 + keyboards/draytronics/elise_v2/rules.mk | 21 + keyboards/draytronics/scarlet/info.json | 2 - keyboards/draytronics/scarlet/rules.mk | 7 +- keyboards/dtisaac/cg108/cg108.c | 17 + keyboards/dtisaac/cg108/cg108.h | 49 + keyboards/dtisaac/cg108/config.h | 62 + keyboards/dtisaac/cg108/info.json | 130 + .../dtisaac/cg108/keymaps/default/keymap.c | 27 + .../dtisaac/cg108/keymaps/default/readme.md | 1 + keyboards/dtisaac/cg108/readme.md | 26 + keyboards/dtisaac/cg108/rules.mk | 20 + keyboards/dtisaac/dosa40rgb/config.h | 113 + keyboards/dtisaac/dosa40rgb/dosa40rgb.c | 39 + keyboards/dtisaac/dosa40rgb/dosa40rgb.h | 40 + keyboards/dtisaac/dosa40rgb/info.json | 53 + .../dosa40rgb/keymaps/default/keymap.c | 74 + .../dosa40rgb/keymaps/default/readme.md | 1 + keyboards/dtisaac/dosa40rgb/readme.md | 26 + keyboards/dtisaac/dosa40rgb/rules.mk | 26 + keyboards/dtisaac/dtisaac01/config.h | 95 + keyboards/dtisaac/dtisaac01/dtisaac01.c | 17 + keyboards/dtisaac/dtisaac01/dtisaac01.h | 49 + keyboards/dtisaac/dtisaac01/info.json | 98 + .../dtisaac01/keymaps/default/keymap.c | 47 + .../dtisaac01/keymaps/default/readme.md | 1 + .../dtisaac/dtisaac01/keymaps/via/keymap.c | 59 + .../dtisaac/dtisaac01/keymaps/via/readme.md | 1 + .../dtisaac01}/keymaps/via/rules.mk | 0 keyboards/dtisaac/dtisaac01/readme.md | 19 + keyboards/dtisaac/dtisaac01/rules.mk | 19 + keyboards/dubba175/info.json | 4 +- keyboards/dubba175/keymaps/default/keymap.c | 24 +- keyboards/dubba175/rules.mk | 5 +- keyboards/duck/eagle_viper/info.json | 19 - keyboards/duck/eagle_viper/readme.md | 7 - keyboards/duck/eagle_viper/rules.mk | 3 - keyboards/duck/eagle_viper/v2/info.json | 362 ++ keyboards/duck/eagle_viper/v2/readme.md | 13 +- keyboards/duck/eagle_viper/v2/rules.mk | 23 +- keyboards/duck/eagle_viper/v2/v2.c | 4 - keyboards/duck/eagle_viper/v2/v2.h | 21 +- keyboards/duck/jetfire/config.h | 69 - keyboards/duck/jetfire/info.json | 2 - keyboards/duck/jetfire/jetfire.c | 10 - .../duck/jetfire/keymaps/default/keymap.c | 16 - keyboards/duck/jetfire/rules.mk | 16 +- keyboards/duck/lightsaver/info.json | 3 - keyboards/duck/lightsaver/lightsaver.c | 4 - keyboards/duck/lightsaver/rules.mk | 16 +- keyboards/duck/octagon/v1/info.json | 3 - keyboards/duck/octagon/v1/rules.mk | 16 +- keyboards/duck/octagon/v1/v1.c | 4 - keyboards/duck/octagon/v2/info.json | 2 - keyboards/duck/octagon/v2/rules.mk | 16 +- keyboards/duck/octagon/v2/v2.c | 4 - keyboards/duck/orion/info.json | 4 +- keyboards/duck/orion/v3/rules.mk | 16 +- keyboards/duck/orion/v3/v3.c | 4 - keyboards/duck/tcv3/info.json | 2 - keyboards/duck/tcv3/rules.mk | 16 +- keyboards/duck/tcv3/tcv3.c | 6 +- keyboards/ducky/one2mini/1861st/1861st.h | 70 + .../1861st/boards/NUC123SD4AN0/board.c | 57 + .../1861st/boards/NUC123SD4AN0/board.h | 961 +++++ .../1861st/boards/NUC123SD4AN0/board.mk | 5 + keyboards/ducky/one2mini/1861st/chconf.h | 23 + keyboards/ducky/one2mini/1861st/config.h | 56 + keyboards/ducky/one2mini/1861st/info.json | 220 ++ keyboards/ducky/one2mini/1861st/mcuconf.h | 51 + keyboards/ducky/one2mini/1861st/readme.md | 29 + keyboards/ducky/one2mini/1861st/rules.mk | 32 + .../ducky/one2mini/keymaps/ansi/keymap.c | 56 + .../ducky/one2mini/keymaps/ansi/readme.md | 1 + .../ducky/one2mini/keymaps/default/config.h | 25 + .../ducky/one2mini/keymaps/default/keymap.c | 56 + .../ducky/one2mini/keymaps/default/readme.md | 1 + keyboards/ducky/one2mini/keymaps/iso/keymap.c | 56 + .../ducky/one2mini/keymaps/iso/readme.md | 1 + keyboards/ducky/one2mini/readme.md | 7 + keyboards/ducky/one2mini/rules.mk | 1 + keyboards/dumbo/info.json | 2 - keyboards/dumbo/keymaps/default/keymap.c | 5 +- keyboards/dumbo/keymaps/default/rules.mk | 3 +- keyboards/dumbo/keymaps/trip-trap/keymap.c | 5 +- keyboards/dumbo/keymaps/trip-trap/rules.mk | 3 +- keyboards/dumbo/rules.mk | 5 +- keyboards/dumbpad/v0x/info.json | 2 - keyboards/dumbpad/v0x/rules.mk | 5 +- keyboards/dumbpad/v0x_dualencoder/info.json | 2 - keyboards/dumbpad/v0x_dualencoder/rules.mk | 5 +- keyboards/dumbpad/v0x_right/info.json | 2 - keyboards/dumbpad/v0x_right/rules.mk | 5 +- keyboards/dumbpad/v1x/info.json | 2 - .../dumbpad/v1x/keymaps/imchipwood/keymap.c | 95 + .../dumbpad/v1x/keymaps/numpad_media/keymap.c | 88 + keyboards/dumbpad/v1x/rules.mk | 5 +- keyboards/dumbpad/v1x_dualencoder/info.json | 2 - keyboards/dumbpad/v1x_dualencoder/rules.mk | 5 +- keyboards/dumbpad/v1x_right/info.json | 2 - keyboards/dumbpad/v1x_right/rules.mk | 5 +- keyboards/durgod/dgk6x/config.h | 138 + keyboards/durgod/dgk6x/dgk6x.c | 73 + keyboards/durgod/dgk6x/dgk6x.h | 47 + keyboards/durgod/dgk6x/galaxy/config.h | 37 + keyboards/durgod/dgk6x/galaxy/galaxy.c | 142 + keyboards/durgod/dgk6x/galaxy/galaxy.h | 40 + keyboards/durgod/dgk6x/galaxy/info.json | 100 + .../dgk6x/galaxy/keymaps/default/keymap.json | 42 + .../dgk6x/galaxy/keymaps/default/readme.md | 14 + .../dgk6x/galaxy/keymaps/via/keymap.json | 138 + .../durgod/dgk6x/galaxy/keymaps/via/readme.md | 14 + .../durgod/dgk6x/galaxy/keymaps/via/rules.mk | 1 + keyboards/durgod/dgk6x/galaxy/readme.md | 26 + keyboards/durgod/dgk6x/galaxy/rules.mk | 1 + keyboards/durgod/dgk6x/hades/config.h | 37 + keyboards/durgod/dgk6x/hades/hades.c | 123 + keyboards/durgod/dgk6x/hades/hades.h | 39 + keyboards/durgod/dgk6x/hades/info.json | 83 + .../dgk6x/hades/keymaps/default/keymap.json | 38 + .../dgk6x/hades/keymaps/default/readme.md | 14 + .../dgk6x/hades/keymaps/via/keymap.json | 122 + .../durgod/dgk6x/hades/keymaps/via/readme.md | 14 + .../durgod/dgk6x/hades/keymaps/via/rules.mk | 1 + keyboards/durgod/dgk6x/hades/readme.md | 26 + keyboards/durgod/dgk6x/hades/rules.mk | 1 + keyboards/durgod/dgk6x/halconf.h | 22 + keyboards/durgod/dgk6x/mcuconf.h | 28 + keyboards/durgod/dgk6x/readme.md | 55 + keyboards/durgod/dgk6x/rules.mk | 28 + keyboards/durgod/dgk6x/venus/config.h | 37 + keyboards/durgod/dgk6x/venus/info.json | 76 + .../dgk6x/venus/keymaps/default/keymap.json | 38 + .../dgk6x/venus/keymaps/default/readme.md | 11 + .../dgk6x/venus/keymaps/via/keymap.json | 122 + .../durgod/dgk6x/venus/keymaps/via/readme.md | 12 + .../durgod/dgk6x/venus/keymaps/via/rules.mk | 1 + keyboards/durgod/dgk6x/venus/readme.md | 26 + keyboards/durgod/dgk6x/venus/rules.mk | 1 + keyboards/durgod/dgk6x/venus/venus.c | 115 + keyboards/durgod/dgk6x/venus/venus.h | 37 + keyboards/durgod/galaxy/readme.md | 3 + keyboards/durgod/galaxy/rules.mk | 1 + keyboards/durgod/hades/readme.md | 3 + keyboards/durgod/hades/rules.mk | 1 + keyboards/durgod/k310/base/readme.md | 6 + keyboards/durgod/k310/base/rules.mk | 1 + keyboards/durgod/k310/readme.md | 4 + keyboards/durgod/k310/rules.mk | 1 + keyboards/durgod/k320/base/readme.md | 6 + keyboards/durgod/k320/base/rules.mk | 1 + keyboards/durgod/k320/config.h | 56 - keyboards/durgod/k320/info.json | 300 -- keyboards/durgod/k320/k320.c | 62 - .../durgod/k320/keymaps/default/keymap.json | 26 - .../durgod/k320/keymaps/default/readme.md | 16 - .../k320/keymaps/default_mac/keymap.json | 26 - .../default_toggle_mac_windows/keymap.c | 367 -- .../default_toggle_mac_windows/readme.md | 65 - .../durgod/k320/keymaps/moults31/config.h | 20 + .../durgod/k320/keymaps/moults31/keymap.c | 84 + .../durgod/k320/keymaps/moults31/readme.md | 10 + .../k320/keymaps/moults31}/rules.mk | 0 keyboards/durgod/k320/keymaps/via/keymap.c | 90 - keyboards/durgod/k320/keymaps/via/readme.md | 12 - keyboards/durgod/k320/keymaps/via/rules.mk | 4 - keyboards/durgod/k320/readme.md | 55 +- keyboards/durgod/k320/rules.mk | 30 +- keyboards/durgod/k3x0/config.h | 56 + keyboards/durgod/k3x0/halconf.h | 22 + keyboards/durgod/k3x0/k310/base/config.h | 23 + keyboards/durgod/k3x0/k310/base/readme.md | 27 + keyboards/durgod/k3x0/k310/base/rules.mk | 1 + keyboards/durgod/k3x0/k310/config.h | 36 + keyboards/durgod/k3x0/k310/info.json | 349 ++ keyboards/durgod/k3x0/k310/k310.h | 78 + keyboards/durgod/k3x0/k310/readme.md | 10 + keyboards/durgod/k3x0/k310/rules.mk | 4 + keyboards/durgod/k3x0/k320/base/config.h | 23 + keyboards/durgod/k3x0/k320/base/readme.md | 27 + keyboards/durgod/k3x0/k320/base/rules.mk | 1 + keyboards/durgod/k3x0/k320/config.h | 33 + keyboards/durgod/k3x0/k320/info.json | 413 ++ keyboards/durgod/{ => k3x0}/k320/k320.h | 44 +- .../{ => k3x0}/k320/keymaps/kuenhlee/keymap.c | 0 .../k320/keymaps/kuenhlee/readme.md | 0 .../{ => k3x0}/k320/keymaps/kuenhlee/rules.mk | 0 keyboards/durgod/k3x0/k320/readme.md | 10 + keyboards/durgod/k3x0/k320/rules.mk | 4 + keyboards/durgod/k3x0/k3x0.c | 96 + keyboards/durgod/k3x0/k3x0.h | 47 + .../durgod/k3x0/keymaps/chimera/keymap.c | 373 ++ .../durgod/k3x0/keymaps/chimera/readme.md | 65 + .../keymaps/chimera}/rules.mk | 0 .../durgod/k3x0/keymaps/default/keymap.json | 26 + .../durgod/k3x0/keymaps/default/readme.md | 16 + .../k3x0/keymaps/default_mac/keymap.json | 26 + .../keymaps/default_mac/readme.md | 0 keyboards/durgod/k3x0/keymaps/typhon/keymap.c | 373 ++ .../durgod/k3x0/keymaps/typhon/readme.md | 65 + keyboards/durgod/k3x0/keymaps/typhon/rules.mk | 2 + keyboards/durgod/k3x0/keymaps/via/keymap.c | 92 + keyboards/durgod/k3x0/keymaps/via/readme.md | 6 + keyboards/durgod/k3x0/keymaps/via/rules.mk | 1 + keyboards/durgod/k3x0/readme.md | 51 + keyboards/durgod/k3x0/rules.mk | 25 + keyboards/durgod/venus/readme.md | 3 + keyboards/durgod/venus/rules.mk | 1 + keyboards/dyz/dyz40/config.h | 42 + keyboards/dyz/dyz40/dyz40.c | 16 + keyboards/dyz/dyz40/dyz40.h | 96 + keyboards/dyz/dyz40/info.json | 280 ++ keyboards/dyz/dyz40/keymaps/default/keymap.c | 43 + keyboards/dyz/dyz40/keymaps/via/keymap.c | 43 + keyboards/dyz/dyz40/keymaps/via/rules.mk | 1 + keyboards/dyz/dyz40/readme.md | 27 + keyboards/dyz/dyz40/rules.mk | 20 + keyboards/dyz/dyz60/config.h | 39 + keyboards/dyz/dyz60/dyz60.c | 16 + keyboards/dyz/dyz60/dyz60.h | 106 + keyboards/dyz/dyz60/info.json | 382 ++ keyboards/dyz/dyz60/keymaps/default/keymap.c | 46 + keyboards/dyz/dyz60/keymaps/via/keymap.c | 46 + keyboards/dyz/dyz60/keymaps/via/rules.mk | 1 + keyboards/dyz/dyz60/readme.md | 19 + keyboards/dyz/dyz60/rules.mk | 20 + keyboards/dyz/dyz_tkl/config.h | 37 + keyboards/dyz/dyz_tkl/dyz_tkl.c | 16 + keyboards/dyz/dyz_tkl/dyz_tkl.h | 152 + keyboards/dyz/dyz_tkl/info.json | 513 +++ .../dyz/dyz_tkl/keymaps/default/keymap.c | 49 + keyboards/dyz/dyz_tkl/keymaps/via/keymap.c | 49 + keyboards/dyz/dyz_tkl/keymaps/via/rules.mk | 1 + keyboards/dyz/dyz_tkl/readme.md | 27 + keyboards/dyz/dyz_tkl/rules.mk | 19 + keyboards/dyz/selka40/config.h | 41 + keyboards/dyz/selka40/info.json | 132 + .../dyz/selka40/keymaps/default/keymap.c | 43 + keyboards/dyz/selka40/keymaps/via/keymap.c | 44 + keyboards/dyz/selka40/keymaps/via/rules.mk | 1 + keyboards/dyz/selka40/readme.md | 26 + keyboards/dyz/selka40/rules.mk | 20 + keyboards/dyz/selka40/selka40.c | 16 + keyboards/dyz/selka40/selka40.h | 58 + keyboards/dz60/dz60.h | 31 +- keyboards/dz60/info.json | 71 +- keyboards/dz60/keymaps/LEdiodes/rules.mk | 2 +- keyboards/dz60/keymaps/billypython/rules.mk | 2 +- keyboards/dz60/keymaps/coppertop/rules.mk | 2 +- keyboards/dz60/keymaps/default_abnt2/keymap.c | 2 +- keyboards/dz60/keymaps/hailbreno/rules.mk | 2 +- keyboards/dz60/keymaps/iso_de_andys8/rules.mk | 2 +- keyboards/dz60/keymaps/iso_de_root/rules.mk | 2 +- keyboards/dz60/keymaps/iso_vim_arrow/rules.mk | 2 +- .../keymaps/iso_vim_arrow_split_rs/rules.mk | 2 +- keyboards/dz60/keymaps/jdelkins/config.h | 41 +- keyboards/dz60/keymaps/jdelkins/keymap.c | 263 +- keyboards/dz60/keymaps/jdelkins/rules.mk | 4 +- keyboards/dz60/keymaps/jdelkins_ss/config.h | 51 - keyboards/dz60/keymaps/jdelkins_ss/keymap.c | 367 -- keyboards/dz60/keymaps/jdelkins_ss/rules.mk | 8 - keyboards/dz60/keymaps/kifinnsson/rules.mk | 2 +- keyboards/dz60/keymaps/konstantin_b/rules.mk | 18 +- keyboards/dz60/keymaps/krusli/rules.mk | 2 +- keyboards/dz60/keymaps/marianas/customLogic.c | 36 +- keyboards/dz60/keymaps/marianas/customLogic.h | 2 +- keyboards/dz60/keymaps/marianas/rules.mk | 2 +- keyboards/dz60/keymaps/mechmerlin/readme.md | 2 +- keyboards/dz60/keymaps/niclake/config.h | 18 + keyboards/dz60/keymaps/niclake/keymap.c | 82 + keyboards/dz60/keymaps/niclake/readme.md | 12 + keyboards/dz60/keymaps/niclake/rules.mk | 3 + .../dz60/keymaps/olligranlund_iso/keymap.c | 87 +- .../dz60/keymaps/olligranlund_iso/readme.md | 4 +- .../dz60/keymaps/olligranlund_iso/rules.mk | 3 + .../dz60/keymaps/olligranlund_iso_v2/keymap.c | 113 + .../keymaps/olligranlund_iso_v2/readme.md | 6 + .../dz60/keymaps/olligranlund_iso_v2/rules.mk | 3 + keyboards/dz60/keymaps/pinpox/rules.mk | 2 +- .../dz60/keymaps/split_space_arrows/rules.mk | 2 +- keyboards/dz60/keymaps/spotpuff/rules.mk | 2 +- .../dz60/keymaps/twschum_b_4_10/rules.mk | 2 +- keyboards/dz60/keymaps/xtonhasvim/keymap.c | 2 +- keyboards/dz60/rules.mk | 5 +- keyboards/dztech/bocc/config.h | 2 +- keyboards/dztech/bocc/info.json | 2 - keyboards/dztech/bocc/rules.mk | 5 +- keyboards/dztech/duo_s/config.h | 64 + keyboards/dztech/duo_s/duo_s.c | 16 + keyboards/dztech/duo_s/duo_s.h | 33 + keyboards/dztech/duo_s/info.json | 10 + .../dztech/duo_s/keymaps/default/keymap.c | 50 + keyboards/dztech/duo_s/keymaps/via/keymap.c | 50 + .../duo_s}/keymaps/via/rules.mk | 0 keyboards/dztech/duo_s/readme.md | 21 + keyboards/dztech/duo_s/rules.mk | 21 + keyboards/dztech/dz60rgb/dz60rgb.c | 2 +- keyboards/dztech/dz60rgb/info.json | 2 - .../dztech/dz60rgb/keymaps/kgreulich/config.h | 74 +- .../dz60rgb/keymaps/matthewrobo/config.h | 74 +- .../dztech/dz60rgb/keymaps/moults31/keymap.c | 42 + .../dztech/dz60rgb/keymaps/moults31/readme.md | 11 + .../dztech/dz60rgb/keymaps/moults31/rules.mk | 1 + .../dztech/dz60rgb/keymaps/piv3rt/config.h | 72 +- .../dztech/dz60rgb/keymaps/piv3rt/keymap.c | 4 +- keyboards/dztech/dz60rgb/keymaps/via/config.h | 21 + .../dztech/dz60rgb/keymaps/xunz/config.h | 75 +- keyboards/dztech/dz60rgb/readme.md | 5 +- keyboards/dztech/dz60rgb/v1/config.h | 60 +- keyboards/dztech/dz60rgb/v1/rules.mk | 8 +- keyboards/dztech/dz60rgb/v2/config.h | 72 +- keyboards/dztech/dz60rgb/v2/rules.mk | 15 +- keyboards/dztech/dz60rgb/v2_1/config.h | 111 + keyboards/dztech/dz60rgb/v2_1/rules.mk | 27 + keyboards/dztech/dz60rgb_ansi/dz60rgb_ansi.c | 2 +- keyboards/dztech/dz60rgb_ansi/info.json | 2 - .../dz60rgb_ansi/keymaps/bingocaller/config.h | 27 + .../dz60rgb_ansi/keymaps/bingocaller/keymap.c | 128 + .../keymaps/bingocaller/readme.md | 51 + keyboards/dztech/dz60rgb_ansi/readme.md | 4 +- keyboards/dztech/dz60rgb_ansi/v1/config.h | 60 +- keyboards/dztech/dz60rgb_ansi/v1/rules.mk | 8 +- keyboards/dztech/dz60rgb_ansi/v2/config.h | 72 +- keyboards/dztech/dz60rgb_ansi/v2/rules.mk | 17 +- keyboards/dztech/dz60rgb_ansi/v2_1/config.h | 111 + keyboards/dztech/dz60rgb_ansi/v2_1/rules.mk | 23 + keyboards/dztech/dz60rgb_wkl/dz60rgb_wkl.c | 2 +- keyboards/dztech/dz60rgb_wkl/info.json | 2 - keyboards/dztech/dz60rgb_wkl/readme.md | 5 +- keyboards/dztech/dz60rgb_wkl/v1/config.h | 60 +- keyboards/dztech/dz60rgb_wkl/v1/rules.mk | 8 +- keyboards/dztech/dz60rgb_wkl/v2/config.h | 72 +- keyboards/dztech/dz60rgb_wkl/v2/rules.mk | 15 +- keyboards/dztech/dz60rgb_wkl/v2_1/config.h | 111 + keyboards/dztech/dz60rgb_wkl/v2_1/rules.mk | 25 + keyboards/dztech/dz65rgb/info.json | 2 - .../dztech/dz65rgb/keymaps/drootz/config.h | 54 +- .../dztech/dz65rgb/keymaps/haervig/keymap.c | 36 + .../dztech/dz65rgb/keymaps/haervig/rules.mk | 3 + .../dztech/dz65rgb/keymaps/jumper149/config.h | 72 +- .../dz65rgb/keymaps/jumper149/readme.md | 4 +- .../dz65rgb/keymaps/matthewrobo/config.h | 74 +- keyboards/dztech/dz65rgb/keymaps/via/config.h | 21 + keyboards/dztech/dz65rgb/v1/config.h | 66 +- keyboards/dztech/dz65rgb/v1/rules.mk | 8 +- keyboards/dztech/dz65rgb/v1/v1.c | 2 +- keyboards/dztech/dz65rgb/v2/config.h | 66 +- keyboards/dztech/dz65rgb/v2/rules.mk | 15 +- keyboards/dztech/dz65rgb/v2/v2.c | 2 +- keyboards/dztech/dz65rgb/v3/config.h | 71 +- keyboards/dztech/dz65rgb/v3/rules.mk | 6 +- keyboards/dztech/dz65rgb/v3/v3.c | 2 +- keyboards/dztech/dz96/info.json | 2 - keyboards/dztech/dz96/rules.mk | 5 +- keyboards/dztech/volcano660/info.json | 12 - keyboards/dztech/volcano660/readme.md | 12 - keyboards/dztech/volcano660/rules.mk | 22 - keyboards/e88/info.json | 2 - keyboards/e88/rules.mk | 5 +- keyboards/ealdin/quadrant/info.json | 2 - keyboards/ealdin/quadrant/rules.mk | 5 +- keyboards/earth_rover/info.json | 2 - keyboards/earth_rover/rules.mk | 5 +- .../ebastler/isometria_75/rev1/info.json | 2 - keyboards/ebastler/isometria_75/rev1/rules.mk | 5 +- keyboards/eco/config.h | 5 +- keyboards/eco/eco.h | 14 +- keyboards/eco/info.json | 3 - keyboards/eco/keymaps/bcat/keymap.c | 9 +- keyboards/eco/keymaps/default/rules.mk | 10 +- keyboards/eco/keymaps/fsck/rules.mk | 2 +- keyboards/eco/keymaps/that_canadian/rules.mk | 2 +- keyboards/eco/keymaps/xyverz/rules.mk | 2 +- keyboards/eco/rev1/config.h | 5 +- keyboards/eco/rev1/rev1.h | 26 +- keyboards/eco/rev2/config.h | 5 +- keyboards/eco/rev2/rev2.h | 26 +- keyboards/eco/rules.mk | 17 +- keyboards/edc40/info.json | 2 - keyboards/edc40/rules.mk | 5 +- keyboards/edda/config.h | 46 + keyboards/edda/edda.c | 50 + keyboards/edda/edda.h | 47 + keyboards/edda/info.json | 154 + keyboards/edda/keymaps/default/keymap.c | 40 + keyboards/edda/keymaps/via/keymap.c | 53 + keyboards/edda/keymaps/via/rules.mk | 1 + keyboards/edda/readme.md | 21 + keyboards/edda/rules.mk | 21 + keyboards/edi/hardlight/mk1/config.h | 109 + .../edi/hardlight/mk1/keymaps/.gitignore | 1 + .../hardlight/mk1/keymaps/default/config.h | 20 + .../hardlight/mk1/keymaps/default/keymap.c | 115 + keyboards/edi/hardlight/mk1/mk1.c | 18 + keyboards/edi/hardlight/mk1/mk1.h | 41 + keyboards/edi/hardlight/mk1/readme.md | 19 + keyboards/edi/hardlight/mk1/rules.mk | 20 + keyboards/eek/info.json | 2 - keyboards/eek/rules.mk | 5 +- keyboards/efreet/info.json | 2 - keyboards/efreet/rules.mk | 5 +- keyboards/eggman/info.json | 2 - keyboards/eggman/rules.mk | 5 +- keyboards/ein_60/config.h | 98 + keyboards/ein_60/ein_60.c | 123 + keyboards/ein_60/ein_60.h | 38 + keyboards/ein_60/glcdfont.c | 233 ++ keyboards/ein_60/info.json | 64 + keyboards/ein_60/keymaps/default/keymap.c | 209 + keyboards/ein_60/keymaps/default/readme.md | 3 + keyboards/ein_60/keymaps/default/rules.mk | 4 + keyboards/ein_60/keymaps/klackygears/config.h | 28 + keyboards/ein_60/keymaps/klackygears/keymap.c | 175 + .../ein_60/keymaps/klackygears/readme.md | 1 + keyboards/ein_60/keymaps/klackygears/rules.mk | 8 + keyboards/ein_60/keymaps/ledtest/keymap.c | 209 + keyboards/ein_60/keymaps/ledtest/readme.md | 1 + keyboards/ein_60/keymaps/ledtest/rules.mk | 4 + keyboards/ein_60/readme.md | 27 + keyboards/ein_60/rules.mk | 24 + keyboards/emajesty/eiri/info.json | 2 - keyboards/emajesty/eiri/rules.mk | 5 +- keyboards/emery65/config.h | 80 + keyboards/emery65/emery65.c | 21 + keyboards/emery65/emery65.h | 34 + keyboards/emery65/info.json | 10 + keyboards/emery65/keymaps/default/keymap.c | 32 + keyboards/emery65/keymaps/default/readme.md | 5 + keyboards/emery65/keymaps/via/keymap.c | 46 + keyboards/emery65/keymaps/via/readme.md | 5 + keyboards/emery65/keymaps/via/rules.mk | 1 + keyboards/emery65/readme.md | 32 + keyboards/emery65/rules.mk | 27 + keyboards/emi20/config.h | 57 + keyboards/emi20/emi20.c | 17 + keyboards/emi20/emi20.h | 33 + keyboards/emi20/info.json | 35 + keyboards/emi20/keymaps/default/keymap.c | 74 + keyboards/emi20/readme.md | 18 + keyboards/emi20/rules.mk | 19 + keyboards/emptystring/NQG/info.json | 2 - keyboards/emptystring/NQG/rules.mk | 14 +- keyboards/eniigmakeyboards/ek60/config.h | 42 + keyboards/eniigmakeyboards/ek60/ek60.c | 18 + keyboards/eniigmakeyboards/ek60/ek60.h | 135 + keyboards/eniigmakeyboards/ek60/info.json | 70 + .../ek60/keymaps/default/keymap.c | 28 + .../ek60/keymaps/via/keymap.c | 49 + .../ek60/keymaps/via/rules.mk | 1 + keyboards/eniigmakeyboards/ek60/readme.md | 11 + keyboards/eniigmakeyboards/ek60/rules.mk | 21 + keyboards/eniigmakeyboards/ek65/config.h | 53 - keyboards/eniigmakeyboards/ek65/info.json | 2 - keyboards/eniigmakeyboards/ek65/rules.mk | 5 +- keyboards/eniigmakeyboards/ek87/config.h | 72 - keyboards/eniigmakeyboards/ek87/info.json | 2 - keyboards/eniigmakeyboards/ek87/rules.mk | 15 +- keyboards/ep/40/40.c | 27 - keyboards/ep/40/40.h | 31 +- keyboards/ep/40/info.json | 2 - keyboards/ep/40/rules.mk | 18 +- keyboards/ep/96/96.c | 27 - keyboards/ep/96/96.h | 35 +- keyboards/ep/96/config.h | 69 - keyboards/ep/96/info.json | 3 - keyboards/ep/96/keymaps/default/keymap.c | 12 - keyboards/ep/96/rules.mk | 18 +- keyboards/ep/comsn/hs68/hs68.c | 27 - keyboards/ep/comsn/hs68/info.json | 2 - keyboards/ep/comsn/hs68/rules.mk | 18 +- keyboards/ep/comsn/mollydooker/config.h | 69 - keyboards/ep/comsn/mollydooker/info.json | 2 - .../mollydooker/keymaps/default/keymap.c | 8 - keyboards/ep/comsn/mollydooker/mollydooker.c | 27 - keyboards/ep/comsn/mollydooker/rules.mk | 18 +- keyboards/ep/comsn/tf_longeboye/info.json | 2 - keyboards/ep/comsn/tf_longeboye/rules.mk | 18 +- .../ep/comsn/tf_longeboye/tf__longeboye.c | 27 - keyboards/epoch80/info.json | 2 - keyboards/epoch80/rules.mk | 5 +- keyboards/ergo42/info.json | 3 - keyboards/ergo42/keymaps/hdbx/keymap.c | 4 +- keyboards/ergo42/keymaps/shinze/keymap.c | 8 +- keyboards/ergo42/rules.mk | 17 +- keyboards/ergoarrows/info.json | 168 +- .../ergoarrows/keymaps/salicylic/keymap.c | 2 +- keyboards/ergoarrows/rules.mk | 5 +- keyboards/ergodash/config.h | 5 +- keyboards/ergodash/mini/info.json | 3 - .../mini/keymaps/yoshimaru46/config.h | 33 + .../mini/keymaps/yoshimaru46/keymap.c | 111 + .../mini/keymaps/yoshimaru46/readme.md | 4 + .../mini/keymaps/yoshimaru46/rules.mk | 4 + keyboards/ergodash/mini/mini.c | 7 - keyboards/ergodash/mini/mini.h | 67 +- keyboards/ergodash/rev1/info.json | 2 - .../ergodash/rev1/keymaps/m47ch4n/keymap.c | 2 +- .../keymaps/yet-another-developer/rules.mk | 2 +- keyboards/ergodash/rev1/rev1.c | 7 - keyboards/ergodash/rev1/rev1.h | 182 +- keyboards/ergodash/rules.mk | 16 +- keyboards/ergodone/config.h | 81 - keyboards/ergodone/ergodone.h | 182 - keyboards/ergodone/i2cmaster.h | 178 - keyboards/ergodone/info.json | 107 - keyboards/ergodone/keymaps/default/keymap.c | 199 - keyboards/ergodone/keymaps/erovia/keymap.c | 229 -- keyboards/ergodone/readme.md | 33 - keyboards/ergodone/rules.mk | 38 - keyboards/ergodone/twimaster.c | 208 - keyboards/ergodox_ez/config.h | 50 +- keyboards/ergodox_ez/ergodox_ez.c | 183 +- keyboards/ergodox_ez/info.json | 3 - .../ergodox_ez/keymaps/bepo_tm_style/keymap.c | 14 +- .../ergodox_ez/keymaps/bepo_tm_style/rules.mk | 3 +- .../keymaps/bpruitt-goddard/keymap.c | 4 +- .../keymaps/bpruitt-goddard/rules.mk | 5 +- .../keymaps/colemak_es_osx/keymap.c | 6 +- keyboards/ergodox_ez/keymaps/default/keymap.c | 156 +- .../ergodox_ez/keymaps/default_osx/keymap.c | 5 - .../ergodox_ez/keymaps/ericgebhart/keymap.c | 2 +- .../ergodox_ez/keymaps/hacker_dvorak/config.h | 2 +- .../ergodox_ez/keymaps/hacker_dvorak/rules.mk | 2 - .../hacker_dvorak/user/layer_set_state_user.c | 2 +- .../keymaps/heartrobotninja/rules.mk | 2 +- .../ergodox_ez/keymaps/ifohancroft/config.h | 23 + .../ergodox_ez/keymaps/ifohancroft/keymap.c | 157 + .../ergodox_ez/keymaps/ifohancroft/readme.md | 19 + .../ergodox_ez/keymaps/ifohancroft/rules.mk | 4 + keyboards/ergodox_ez/keymaps/lukaus/keymap.c | 194 +- .../keymaps/nathanvercaemert/keymap.c | 6 +- keyboards/ergodox_ez/keymaps/nfriend/keymap.c | 2 +- keyboards/ergodox_ez/keymaps/nfriend/rules.mk | 2 +- .../ergodox_ez/keymaps/rgb_layer/keymap.c | 2 +- keyboards/ergodox_ez/keymaps/skug/keymap.c | 13 +- keyboards/ergodox_ez/keymaps/stamm/keymap.c | 4 +- keyboards/ergodox_ez/keymaps/testing/keymap.c | 2 +- keyboards/ergodox_ez/rules.mk | 13 +- keyboards/ergodox_ez/util/compile_keymap.py | 5 - .../keymap_beautifier/KeymapBeautifier.py | 1 - .../ergodox_infinity/board_is31fl3731c.h | 110 - keyboards/ergodox_infinity/board_st7565.h | 96 - keyboards/ergodox_infinity/config.h | 84 +- keyboards/ergodox_infinity/ergodox_infinity.c | 349 +- keyboards/ergodox_infinity/ergodox_infinity.h | 125 +- keyboards/ergodox_infinity/gfxconf.h | 27 - keyboards/ergodox_infinity/info.json | 2 - .../ergodox_infinity/keymaps/default/keymap.c | 8 +- .../keymaps/dudeofawesome/config.h | 2 - .../keymaps/dudeofawesome/keymap.c | 4 +- .../keymaps/dudeofawesome/simple_visualizer.h | 123 - .../keymaps/dudeofawesome/visualizer.c | 79 - .../keymaps/dudeofawesome/visualizer.h | 35 - .../keymaps/halfkeyboard/visualizer.c | 384 -- .../keymaps/halfkeyboard/visualizer.h | 125 - .../ergodox_infinity/keymaps/narze/keymap.c | 8 +- .../ergodox_infinity/keymaps/narze/readme.md | 17 +- .../ergodox_infinity/keymaps/narze/rules.mk | 2 +- keyboards/ergodox_infinity/led.c | 26 - keyboards/ergodox_infinity/matrix.c | 184 - keyboards/ergodox_infinity/readme.md | 24 +- keyboards/ergodox_infinity/rules.mk | 34 +- .../ergodox_infinity/simple_visualizer.h | 123 - keyboards/ergodox_infinity/visualizer.c | 329 -- keyboards/ergodox_stm32/info.json | 3 - keyboards/ergodox_stm32/rules.mk | 3 +- keyboards/ergosaurus/config.h | 74 - keyboards/ergosaurus/info.json | 2 - .../keymaps/{default => }/via/keymap.c | 0 keyboards/ergosaurus/keymaps/via/rules.mk | 2 + keyboards/ergosaurus/rules.mk | 16 +- keyboards/ergoslab/info.json | 3 - keyboards/ergoslab/rules.mk | 16 +- keyboards/ergotaco/ergotaco.h | 2 - keyboards/ergotaco/info.json | 2 - keyboards/ergotaco/keymaps/default/keymap.c | 8 - keyboards/ergotaco/post_rules.mk | 8 + keyboards/ergotaco/rules.mk | 10 - keyboards/ergotravel/info.json | 3 - .../keymaps/manna-harbour_miryoku/config.h | 22 + .../keymaps/manna-harbour_miryoku/keymap.c | 5 + keyboards/ergotravel/keymaps/yanfali/rules.mk | 2 +- keyboards/ergotravel/rev1/rev1.c | 21 - keyboards/ergotravel/rev1/rev1.h | 30 +- keyboards/ergotravel/rules.mk | 9 +- keyboards/ericrlau/numdiscipline/info.json | 2 - .../ericrlau/numdiscipline/rev1/config.h | 73 - .../ericrlau/numdiscipline/rev1/rules.mk | 20 +- keyboards/esca/getawayvan/chconf.h | 61 + keyboards/esca/getawayvan/config.h | 77 + keyboards/esca/getawayvan/getawayvan.c | 17 + keyboards/esca/getawayvan/getawayvan.h | 33 + keyboards/esca/getawayvan/halconf.h | 37 + keyboards/esca/getawayvan/info.json | 10 + keyboards/esca/getawayvan/keymaps/7u/keymap.c | 44 + .../esca/getawayvan/keymaps/default/keymap.c | 45 + .../esca/getawayvan/keymaps/via/keymap.c | 44 + .../esca/getawayvan/keymaps/via/rules.mk | 1 + keyboards/esca/getawayvan/readme.md | 12 + keyboards/esca/getawayvan/rules.mk | 20 + keyboards/esca/getawayvan_f042/chconf.h | 27 + keyboards/esca/getawayvan_f042/config.h | 76 + .../esca/getawayvan_f042/getawayvan_f042.c | 17 + .../esca/getawayvan_f042/getawayvan_f042.h | 33 + keyboards/esca/getawayvan_f042/halconf.h | 37 + keyboards/esca/getawayvan_f042/info.json | 10 + .../esca/getawayvan_f042/keymaps/7u/keymap.c | 44 + .../getawayvan_f042/keymaps/default/keymap.c | 44 + keyboards/esca/getawayvan_f042/readme.md | 12 + keyboards/esca/getawayvan_f042/rules.mk | 20 + keyboards/espectro/info.json | 6 - keyboards/espectro/rules.mk | 11 +- keyboards/eve/meteor/info.json | 2 - keyboards/eve/meteor/rules.mk | 11 +- keyboards/evil80/evil80.h | 36 +- keyboards/evil80/info.json | 5 +- keyboards/evil80/rules.mk | 18 +- keyboards/evolv/config.h | 2 + keyboards/evolv/evolv.c | 12 +- keyboards/evolv/info.json | 2 - keyboards/evolv/keymaps/default/keymap.c | 2 + keyboards/evolv/keymaps/iso/keymap.c | 2 + keyboards/evolv/keymaps/via/keymap.c | 2 + keyboards/evolv/mcuconf.h | 4 - keyboards/evolv/rules.mk | 9 +- .../evyd13/atom47/keymaps/LEdiodes/keymap.c | 57 +- .../evyd13/atom47/keymaps/default/keymap.c | 70 +- .../evyd13/atom47/keymaps/evyd13/keymap.c | 87 +- .../atom47/keymaps/junonum_a47/keymap.c | 47 +- keyboards/evyd13/atom47/keymaps/via/keymap.c | 44 + keyboards/evyd13/atom47/keymaps/via/rules.mk | 1 + keyboards/evyd13/atom47/readme.md | 23 +- keyboards/evyd13/atom47/rev2/config.h | 24 +- keyboards/evyd13/atom47/rev2/info.json | 67 +- keyboards/evyd13/atom47/rev2/rev2.c | 44 +- keyboards/evyd13/atom47/rev2/rev2.h | 42 +- keyboards/evyd13/atom47/rev2/rules.mk | 4 +- keyboards/evyd13/atom47/rev3/config.h | 26 +- keyboards/evyd13/atom47/rev3/info.json | 119 +- keyboards/evyd13/atom47/rev3/rev3.c | 37 +- keyboards/evyd13/atom47/rev3/rev3.h | 54 +- keyboards/evyd13/atom47/rev3/rules.mk | 2 - keyboards/evyd13/atom47/rev4/config.h | 58 + keyboards/evyd13/atom47/rev4/info.json | 113 + keyboards/evyd13/atom47/rev4/rev4.c | 18 + keyboards/evyd13/atom47/rev4/rev4.h | 51 + keyboards/evyd13/atom47/rev4/rules.mk | 7 + keyboards/evyd13/atom47/rev5/config.h | 210 + keyboards/evyd13/atom47/rev5/info.json | 61 + keyboards/evyd13/atom47/rev5/rev5.c | 153 + keyboards/evyd13/atom47/rev5/rev5.h | 38 + keyboards/evyd13/atom47/rev5/rules.mk | 2 + keyboards/evyd13/atom47/rules.mk | 31 +- keyboards/evyd13/eon40/config.h | 73 - keyboards/evyd13/eon40/info.json | 2 - keyboards/evyd13/eon40/rules.mk | 16 +- keyboards/evyd13/eon65/config.h | 73 - keyboards/evyd13/eon65/info.json | 2 - keyboards/evyd13/eon65/rules.mk | 16 +- keyboards/evyd13/eon75/config.h | 74 - keyboards/evyd13/eon75/info.json | 2 - keyboards/evyd13/eon75/rules.mk | 16 +- keyboards/evyd13/eon87/config.h | 73 - keyboards/evyd13/eon87/info.json | 2 - keyboards/evyd13/eon87/rules.mk | 16 +- keyboards/evyd13/eon95/config.h | 73 - keyboards/evyd13/eon95/info.json | 2 - keyboards/evyd13/eon95/rules.mk | 16 +- keyboards/evyd13/gh80_1800/info.json | 4 +- keyboards/evyd13/gh80_1800/rules.mk | 5 +- keyboards/evyd13/gh80_3700/gh80_3700.c | 8 - keyboards/evyd13/gh80_3700/info.json | 2 - .../evyd13/gh80_3700/keymaps/ps2/config.h | 10 +- keyboards/evyd13/gh80_3700/rules.mk | 5 +- keyboards/evyd13/gud70/config.h | 150 + keyboards/evyd13/gud70/gud70.c | 22 + keyboards/evyd13/gud70/gud70.h | 73 + keyboards/evyd13/gud70/info.json | 250 ++ .../evyd13/gud70/keymaps/default/keymap.c | 37 + .../evyd13/gud70/keymaps/evyd13/keymap.c | 31 + keyboards/evyd13/gud70/keymaps/via/keymap.c | 43 + keyboards/evyd13/gud70/keymaps/via/rules.mk | 2 + keyboards/evyd13/gud70/readme.md | 20 + keyboards/evyd13/gud70/rules.mk | 19 + keyboards/evyd13/minitomic/config.h | 73 - keyboards/evyd13/minitomic/info.json | 2 - keyboards/evyd13/minitomic/rules.mk | 16 +- keyboards/evyd13/mx5160/config.h | 73 - keyboards/evyd13/mx5160/info.json | 4 +- keyboards/evyd13/mx5160/rules.mk | 16 +- keyboards/evyd13/nt660/config.h | 73 - keyboards/evyd13/nt660/info.json | 2 - keyboards/evyd13/nt660/rules.mk | 15 +- keyboards/evyd13/nt750/info.json | 4 +- keyboards/evyd13/nt750/rules.mk | 5 +- keyboards/evyd13/nt980/info.json | 4 +- keyboards/evyd13/nt980/rules.mk | 5 +- keyboards/evyd13/omrontkl/config.h | 73 - keyboards/evyd13/omrontkl/info.json | 2 - keyboards/evyd13/omrontkl/rules.mk | 16 +- keyboards/evyd13/plain60/info.json | 2 - .../plain60/keymaps/kwerdenker/keymap.c | 6 +- .../plain60/keymaps/kwerdenker/rules.mk | 2 +- keyboards/evyd13/plain60/rules.mk | 12 +- keyboards/evyd13/pockettype/config.h | 73 - keyboards/evyd13/pockettype/info.json | 2 - keyboards/evyd13/pockettype/pockettype.c | 6 - keyboards/evyd13/pockettype/rules.mk | 12 +- keyboards/evyd13/quackfire/info.json | 2 - keyboards/evyd13/quackfire/rules.mk | 5 +- keyboards/evyd13/solheim68/info.json | 4 +- keyboards/evyd13/solheim68/rules.mk | 5 +- keyboards/evyd13/ta65/info.json | 2 - keyboards/evyd13/ta65/rules.mk | 15 +- keyboards/evyd13/ta65/ta65.c | 12 - keyboards/evyd13/wasdat/config.h | 73 - keyboards/evyd13/wasdat/info.json | 2 - .../evyd13/wasdat/keymaps/konstantin/config.h | 2 - .../evyd13/wasdat/keymaps/konstantin/rules.mk | 2 +- keyboards/evyd13/wasdat/rules.mk | 15 +- keyboards/evyd13/wasdat_code/config.h | 73 - keyboards/evyd13/wasdat_code/info.json | 2 - keyboards/evyd13/wasdat_code/rules.mk | 15 +- keyboards/evyd13/wonderland/info.json | 3 - keyboards/evyd13/wonderland/rules.mk | 12 +- keyboards/exclusive/e65/info.json | 2 - .../exclusive/e65/keymaps/masterzen/keymap.c | 2 +- keyboards/exclusive/e65/rules.mk | 10 +- keyboards/exclusive/e6_rgb/config.h | 6 +- keyboards/exclusive/e6_rgb/e6_rgb.c | 2 +- keyboards/exclusive/e6_rgb/e6_rgb.h | 102 +- keyboards/exclusive/e6_rgb/info.json | 1543 ++------ .../exclusive/e6_rgb/keymaps/60_ansi/keymap.c | 29 - .../keymaps/60_ansi_split_bs_rshift/keymap.c | 18 + .../keymaps/60_ansi_split_bs_shift/keymap.c | 16 - .../exclusive/e6_rgb/keymaps/60_hhkb/keymap.c | 24 +- .../e6_rgb/keymaps/60_tsangan_hhkb/keymap.c | 18 + .../exclusive/e6_rgb/keymaps/60_wkl/keymap.c | 16 - .../e6_rgb/keymaps/60_wkl_split_bs/keymap.c | 16 - .../exclusive/e6_rgb/keymaps/allleds/keymap.c | 26 +- .../exclusive/e6_rgb/keymaps/default/keymap.c | 22 +- .../exclusive/e6_rgb/keymaps/via/keymap.c | 52 +- keyboards/exclusive/e6_rgb/readme.md | 6 +- keyboards/exclusive/e6_rgb/rules.mk | 25 +- keyboards/exclusive/e6v2/le/config.h | 5 +- keyboards/exclusive/e6v2/le/info.json | 3 - keyboards/exclusive/e6v2/le/le.h | 76 +- keyboards/exclusive/e6v2/le/rules.mk | 18 +- keyboards/exclusive/e6v2/le_bmc/info.json | 2 - keyboards/exclusive/e6v2/le_bmc/rules.mk | 20 +- keyboards/exclusive/e6v2/oe/config.h | 5 +- keyboards/exclusive/e6v2/oe/info.json | 2 - keyboards/exclusive/e6v2/oe/oe.c | 21 - keyboards/exclusive/e6v2/oe/oe.h | 99 +- keyboards/exclusive/e6v2/oe/rules.mk | 18 +- keyboards/exclusive/e6v2/oe_bmc/info.json | 2 - keyboards/exclusive/e6v2/oe_bmc/rules.mk | 20 +- keyboards/exclusive/e7v1/info.json | 2 - .../exclusive/e7v1/keymaps/masterzen/keymap.c | 2 +- keyboards/exclusive/e7v1/rules.mk | 10 +- keyboards/exclusive/e7v1se/config.h | 73 - keyboards/exclusive/e7v1se/e7v1se.c | 33 - keyboards/exclusive/e7v1se/info.json | 2 - keyboards/exclusive/e7v1se/rules.mk | 15 +- keyboards/exclusive/e85/config.h | 73 - keyboards/exclusive/e85/hotswap/info.json | 2 - keyboards/exclusive/e85/rules.mk | 5 +- keyboards/exclusive/e85/soldered/info.json | 6 - keyboards/exent/info.json | 2 - keyboards/exent/rules.mk | 7 +- keyboards/eyeohdesigns/babyv/info.json | 2 - .../eyeohdesigns/babyv/keymaps/1u/keymap.c | 14 +- .../eyeohdesigns/babyv/keymaps/1u2u/keymap.c | 14 +- .../eyeohdesigns/babyv/keymaps/2u1u/keymap.c | 14 +- .../babyv/keymaps/default/keymap.c | 14 +- .../babyv/keymaps/melonbred/keymap.c | 0 keyboards/eyeohdesigns/babyv/readme.md | 2 + keyboards/eyeohdesigns/babyv/rules.mk | 5 +- keyboards/eyeohdesigns/sprh/config.h | 44 + keyboards/eyeohdesigns/sprh/info.json | 148 + .../sprh/keymaps/default/keymap.c | 49 + .../eyeohdesigns/sprh/keymaps/split/keymap.c | 49 + keyboards/eyeohdesigns/sprh/readme.md | 21 + keyboards/eyeohdesigns/sprh/rules.mk | 20 + keyboards/eyeohdesigns/sprh/sprh.c | 16 + keyboards/eyeohdesigns/sprh/sprh.h | 55 + .../ez_maker/directpins/promicro/config.h | 20 + .../ez_maker/directpins/promicro/info.json | 49 + .../promicro/keymaps/default/keymap.json | 19 + .../ez_maker/directpins/promicro/promicro.c | 17 + .../ez_maker/directpins/promicro/promicro.h | 19 + .../ez_maker/directpins/promicro/readme.md | 19 + .../directpins/promicro}/rules.mk | 0 .../ez_maker/directpins/proton_c/info.json | 60 + .../proton_c/keymaps/default/keymap.json | 25 + .../proton_c/keymaps/default/readme.md | 1 + .../ez_maker/directpins/proton_c/proton_c.c | 17 + .../ez_maker/directpins/proton_c/proton_c.h | 19 + .../ez_maker/directpins/proton_c/readme.md | 19 + .../directpins/proton_c}/rules.mk | 0 keyboards/ez_maker/directpins/readme.md | 5 + .../ez_maker/directpins/teensy_2/config.h | 20 + .../ez_maker/directpins/teensy_2/info.json | 52 + .../teensy_2/keymaps/default/keymap.json | 20 + .../ez_maker/directpins/teensy_2/readme.md | 19 + .../directpins/teensy_2/rules.mk} | 0 .../ez_maker/directpins/teensy_2/teensy2.c | 17 + .../ez_maker/directpins/teensy_2/teensy2.h | 19 + .../ez_maker/directpins/teensy_2pp/config.h | 20 + .../ez_maker/directpins/teensy_2pp/info.json | 67 + .../teensy_2pp/keymaps/default/keymap.json | 28 + .../ez_maker/directpins/teensy_2pp/readme.md | 19 + .../directpins/teensy_2pp/rules.mk} | 0 .../ez_maker/directpins/teensy_2pp/teensy2.c | 17 + .../ez_maker/directpins/teensy_2pp/teensy2.h | 19 + .../ez_maker/directpins/teensy_32/chconf.h | 53 + .../ez_maker/directpins/teensy_32/config.h | 23 + .../ez_maker/directpins/teensy_32/halconf.h | 27 + .../ez_maker/directpins/teensy_32/info.json | 53 + .../teensy_32/keymaps/default/keymap.json | 22 + .../ez_maker/directpins/teensy_32/mcuconf.h | 51 + .../ez_maker/directpins/teensy_32/readme.md | 19 + .../ez_maker/directpins/teensy_32/rules.mk | 2 + .../ez_maker/directpins/teensy_lc/chconf.h | 53 + .../ez_maker/directpins/teensy_lc/config.h | 23 + .../ez_maker/directpins/teensy_lc/halconf.h | 27 + .../ez_maker/directpins/teensy_lc/info.json | 53 + .../teensy_lc/keymaps/default/keymap.json | 22 + .../ez_maker/directpins/teensy_lc/mcuconf.h | 51 + .../ez_maker/directpins/teensy_lc/readme.md | 19 + .../ez_maker/directpins/teensy_lc/rules.mk | 5 + keyboards/facew/info.json | 2 - keyboards/facew/rules.mk | 11 +- keyboards/fallacy/indicators.c | 4 +- keyboards/fallacy/info.json | 2 - keyboards/fallacy/rules.mk | 8 +- keyboards/fc660c/actuation_point.h | 5 +- keyboards/fc660c/config.h | 5 +- keyboards/fc660c/fc660c.h | 41 +- keyboards/fc660c/i2c.h | 5 +- keyboards/fc660c/info.json | 4 +- keyboards/fc660c/matrix.c | 1 + keyboards/fc660c/rules.mk | 9 +- keyboards/fc980c/actuation_point.h | 5 +- keyboards/fc980c/config.h | 5 +- keyboards/fc980c/i2c.h | 5 +- keyboards/fc980c/info.json | 3 - keyboards/fc980c/matrix.c | 1 + keyboards/fc980c/rules.mk | 9 +- keyboards/feels/feels65/feels65.h | 85 +- keyboards/feels/feels65/info.json | 409 +- .../feels/feels65/keymaps/default/keymap.c | 20 +- keyboards/feels/feels65/keymaps/via/keymap.c | 47 +- keyboards/feels/feels65/rules.mk | 7 +- keyboards/felix/config.h | 73 - keyboards/felix/info.json | 2 - keyboards/felix/rules.mk | 16 +- keyboards/ferris/0_1/rules.mk | 5 +- keyboards/ferris/0_2/bling/bling.c | 77 + keyboards/ferris/0_2/bling/config.h | 82 + keyboards/ferris/0_2/bling/readme.md | 16 + keyboards/ferris/0_2/bling/rules.mk | 2 + keyboards/ferris/0_2/compact/config.h | 23 + keyboards/ferris/0_2/compact/readme.md | 17 + .../.noci => ferris/0_2/compact/rules.mk} | 0 keyboards/ferris/0_2/config.h | 10 +- keyboards/ferris/0_2/high/config.h | 23 + keyboards/ferris/0_2/high/readme.md | 17 + .../rev2/.noci => ferris/0_2/high/rules.mk} | 0 keyboards/ferris/0_2/matrix.c | 5 - keyboards/ferris/0_2/mini/config.h | 23 + keyboards/ferris/0_2/mini/readme.md | 18 + .../.noci => ferris/0_2/mini/rules.mk} | 0 keyboards/ferris/0_2/readme.md | 7 +- keyboards/ferris/0_2/rules.mk | 5 +- keyboards/ferris/info.json | 2 - keyboards/ferris/keymaps/default/config.h | 8 + keyboards/ferris/keymaps/default/keymap.json | 4 +- keyboards/ferris/keymaps/madhatter/rules.mk | 2 +- keyboards/ferris/keymaps/pierrec83/config.h | 8 + .../ferris/keymaps/pierrec83/keymap.json | 4 +- keyboards/ferris/keymaps/test/config.h | 8 + keyboards/ferris/readme.md | 6 +- keyboards/ferris/sweep/config.h | 13 +- keyboards/ferris/sweep/readme.md | 47 +- keyboards/ferris/sweep/rules.mk | 7 +- keyboards/ferris/sweep/sweep.c | 17 + keyboards/ffkeebs/puca/config.h | 69 + keyboards/ffkeebs/puca/info.json | 107 + .../ffkeebs/puca/keymaps/default/keymap.c | 40 + .../puca/keymaps/default_numpad/keymap.c | 38 + .../puca/keymaps/default_ortho/keymap.c | 38 + keyboards/ffkeebs/puca/puca.c | 149 + keyboards/ffkeebs/puca/puca.h | 101 + keyboards/ffkeebs/puca/readme.md | 23 + keyboards/ffkeebs/puca/rules.mk | 23 + keyboards/ffkeebs/siris/info.json | 2 - keyboards/ffkeebs/siris/rules.mk | 5 +- keyboards/fjlabs/7vhotswap/7vhotswap.c | 14 + keyboards/fjlabs/7vhotswap/7vhotswap.h | 34 + keyboards/fjlabs/7vhotswap/config.h | 118 + keyboards/fjlabs/7vhotswap/info.json | 97 + .../fjlabs/7vhotswap/keymaps/default/keymap.c | 41 + .../fjlabs/7vhotswap/keymaps/via/keymap.c | 61 + .../fjlabs/7vhotswap/keymaps/via/rules.mk | 1 + keyboards/fjlabs/7vhotswap/readme.md | 15 + keyboards/fjlabs/7vhotswap/rules.mk | 22 + keyboards/fjlabs/ad65/ad65.c | 14 + keyboards/fjlabs/ad65/ad65.h | 32 + keyboards/fjlabs/ad65/config.h | 105 + keyboards/fjlabs/ad65/info.json | 84 + .../fjlabs/ad65/keymaps/default/keymap.c | 39 + keyboards/fjlabs/ad65/keymaps/via/keymap.c | 57 + keyboards/fjlabs/ad65/keymaps/via/rules.mk | 1 + keyboards/fjlabs/ad65/readme.md | 11 + keyboards/fjlabs/ad65/rules.mk | 22 + keyboards/fjlabs/bks65/config.h | 11 +- keyboards/fjlabs/bks65/info.json | 2 - keyboards/fjlabs/bks65/rules.mk | 6 +- keyboards/fjlabs/bks65solder/bks65solder.h | 26 +- keyboards/fjlabs/bks65solder/config.h | 11 +- keyboards/fjlabs/bks65solder/info.json | 80 +- .../bks65solder/keymaps/default/keymap.c | 24 +- .../fjlabs/bks65solder/keymaps/via/keymap.c | 52 +- keyboards/fjlabs/bks65solder/rules.mk | 6 +- keyboards/fjlabs/bolsa65/config.h | 11 +- keyboards/fjlabs/bolsa65/info.json | 2 - keyboards/fjlabs/bolsa65/rules.mk | 6 +- keyboards/fjlabs/kf87/config.h | 122 + keyboards/fjlabs/kf87/info.json | 103 + .../fjlabs/kf87/keymaps/default/keymap.c | 41 + keyboards/fjlabs/kf87/keymaps/via/keymap.c | 61 + keyboards/fjlabs/kf87/keymaps/via/rules.mk | 1 + keyboards/fjlabs/kf87/kf87.c | 14 + keyboards/fjlabs/kf87/kf87.h | 34 + keyboards/fjlabs/kf87/readme.md | 15 + keyboards/fjlabs/kf87/rules.mk | 22 + keyboards/fjlabs/ldk65/info.json | 2 - keyboards/fjlabs/ldk65/rules.mk | 6 +- keyboards/fjlabs/midway60/info.json | 133 +- .../fjlabs/midway60/keymaps/default/keymap.c | 18 +- .../fjlabs/midway60/keymaps/via/keymap.c | 32 +- keyboards/fjlabs/midway60/midway60.h | 6 +- keyboards/fjlabs/midway60/rules.mk | 5 +- keyboards/fjlabs/mk61rgbansi/config.h | 121 + keyboards/fjlabs/mk61rgbansi/info.json | 76 + .../mk61rgbansi/keymaps/default/keymap.c | 40 + .../fjlabs/mk61rgbansi/keymaps/via/keymap.c | 58 + .../fjlabs/mk61rgbansi/keymaps/via/rules.mk | 1 + keyboards/fjlabs/mk61rgbansi/mk61rgbansi.c | 13 + keyboards/fjlabs/mk61rgbansi/mk61rgbansi.h | 32 + keyboards/fjlabs/mk61rgbansi/readme.md | 14 + keyboards/fjlabs/mk61rgbansi/rules.mk | 24 + keyboards/fjlabs/polaris/info.json | 2 - keyboards/fjlabs/polaris/rules.mk | 5 +- keyboards/fjlabs/ready100/config.h | 119 + keyboards/fjlabs/ready100/info.json | 82 + .../fjlabs/ready100/keymaps/default/keymap.c | 40 + .../fjlabs/ready100/keymaps/via/keymap.c | 58 + .../fjlabs/ready100/keymaps/via/rules.mk | 1 + keyboards/fjlabs/ready100/readme.md | 19 + keyboards/fjlabs/ready100/ready100.c | 14 + keyboards/fjlabs/ready100/ready100.h | 32 + keyboards/fjlabs/ready100/rules.mk | 24 + keyboards/fjlabs/tf60ansi/config.h | 121 + keyboards/fjlabs/tf60ansi/info.json | 76 + .../fjlabs/tf60ansi/keymaps/default/keymap.c | 40 + .../fjlabs/tf60ansi/keymaps/via/keymap.c | 58 + .../fjlabs/tf60ansi/keymaps/via/rules.mk | 1 + keyboards/fjlabs/tf60ansi/readme.md | 27 + keyboards/fjlabs/tf60ansi/rules.mk | 24 + keyboards/fjlabs/tf60ansi/tf60ansi.c | 14 + keyboards/fjlabs/tf60ansi/tf60ansi.h | 32 + keyboards/fjlabs/tf60v2/config.h | 121 + keyboards/fjlabs/tf60v2/info.json | 78 + .../fjlabs/tf60v2/keymaps/default/keymap.c | 40 + keyboards/fjlabs/tf60v2/keymaps/via/keymap.c | 58 + keyboards/fjlabs/tf60v2/keymaps/via/rules.mk | 1 + keyboards/fjlabs/tf60v2/readme.md | 27 + keyboards/fjlabs/tf60v2/rules.mk | 24 + keyboards/fjlabs/tf60v2/tf60v2.c | 14 + keyboards/fjlabs/tf60v2/tf60v2.h | 32 + keyboards/fjlabs/tf65rgbv2/config.h | 121 + keyboards/fjlabs/tf65rgbv2/info.json | 83 + .../fjlabs/tf65rgbv2/keymaps/default/keymap.c | 40 + .../fjlabs/tf65rgbv2/keymaps/via/keymap.c | 58 + .../fjlabs/tf65rgbv2/keymaps/via/rules.mk | 1 + keyboards/fjlabs/tf65rgbv2/readme.md | 27 + keyboards/fjlabs/tf65rgbv2/rules.mk | 25 + keyboards/fjlabs/tf65rgbv2/tf65rgbv2.c | 14 + keyboards/fjlabs/tf65rgbv2/tf65rgbv2.h | 32 + keyboards/flehrad/bigswitch/bigswitch.h | 10 +- keyboards/flehrad/bigswitch/config.h | 6 +- keyboards/flehrad/bigswitch/info.json | 2 - keyboards/flehrad/bigswitch/rules.mk | 10 +- keyboards/flehrad/downbubble/config.h | 68 - keyboards/flehrad/downbubble/info.json | 2 - .../downbubble/keymaps/default/keymap.c | 12 - keyboards/flehrad/downbubble/rules.mk | 24 +- keyboards/flehrad/numbrero/info.json | 2 - .../flehrad/numbrero/keymaps/default/keymap.c | 10 - keyboards/flehrad/numbrero/rules.mk | 16 +- keyboards/flehrad/snagpad/info.json | 3 - .../flehrad/snagpad/keymaps/default/keymap.c | 45 - .../flehrad/snagpad/keymaps/via/keymap.c | 45 - keyboards/flehrad/snagpad/rules.mk | 10 +- keyboards/flehrad/tradestation/config.h | 15 + keyboards/flehrad/tradestation/info.json | 42 +- .../tradestation/keymaps/default/keymap.c | 76 +- .../keymaps/tradestation/keymap.c | 27 + keyboards/flehrad/tradestation/rules.mk | 18 +- keyboards/flehrad/tradestation/tradestation.c | 15 + keyboards/flehrad/tradestation/tradestation.h | 15 + keyboards/fleuron/config.h | 73 +- keyboards/fleuron/fleuron.c | 27 - keyboards/fleuron/fleuron.h | 33 +- keyboards/fleuron/info.json | 2 - keyboards/fleuron/keymaps/default/keymap.c | 12 - keyboards/fleuron/rules.mk | 18 +- keyboards/fluorite/config.h | 72 - keyboards/fluorite/info.json | 2 - keyboards/fluorite/rules.mk | 18 +- keyboards/flx/lodestone/info.json | 2 - keyboards/flx/lodestone/rules.mk | 16 +- keyboards/flx/virgo/config.h | 3 - keyboards/flx/virgo/info.json | 7 +- keyboards/flx/virgo/rules.mk | 16 +- keyboards/flx/virgo/virgo.c | 14 - keyboards/flxlb/zplit/info.json | 68 +- .../flxlb/zplit/keymaps/default/config.h | 28 + .../flxlb/zplit/keymaps/default/keymap.c | 80 + keyboards/flxlb/zplit/keymaps/via/keymap.c | 34 +- keyboards/flxlb/zplit/keymaps/via/rules.mk | 1 + keyboards/flxlb/zplit/rules.mk | 5 +- keyboards/flygone60/rev3/config.h | 60 + keyboards/flygone60/rev3/info.json | 78 + .../flygone60/rev3/keymaps/default/keymap.c | 70 + .../flygone60/rev3/keymaps/default/readme.md | 1 + keyboards/flygone60/rev3/keymaps/via/keymap.c | 86 + .../rev3}/keymaps/via/rules.mk | 0 keyboards/flygone60/rev3/readme.md | 19 + keyboards/flygone60/rev3/rev3.c | 17 + keyboards/flygone60/rev3/rev3.h | 41 + keyboards/flygone60/rev3/rules.mk | 21 + keyboards/foostan/cornelius/info.json | 2 - .../cornelius/keymaps/gipsy-king/keymap.c | 102 + .../cornelius/keymaps/gipsy-king/readme.md | 39 + .../foostan/cornelius/keymaps/hvp/config.h | 20 + .../foostan/cornelius/keymaps/hvp/keymap.c | 66 + .../foostan/cornelius/keymaps/hvp/readme.md | 1 + .../foostan/cornelius/keymaps/hvp/rules.mk | 1 + keyboards/foostan/cornelius/rules.mk | 5 +- keyboards/for_science/config.h | 4 - keyboards/for_science/info.json | 2 - .../keymaps/manna-harbour_miryoku/config.h | 23 + .../keymaps/manna-harbour_miryoku/keymap.c | 5 + keyboards/for_science/rules.mk | 5 +- keyboards/forever65/info.json | 4 +- keyboards/fortitude60/info.json | 2 - keyboards/fortitude60/rules.mk | 16 +- keyboards/four_banger/config.h | 5 +- keyboards/four_banger/four_banger.h | 13 +- keyboards/four_banger/info.json | 2 - keyboards/four_banger/rules.mk | 10 +- keyboards/foxlab/key65/hotswap/config.h | 53 - keyboards/foxlab/key65/hotswap/info.json | 3 - keyboards/foxlab/key65/hotswap/rules.mk | 12 +- keyboards/foxlab/key65/universal/config.h | 53 - keyboards/foxlab/key65/universal/info.json | 6 - keyboards/foxlab/key65/universal/rules.mk | 12 +- keyboards/foxlab/leaf60/hotswap/config.h | 73 - keyboards/foxlab/leaf60/hotswap/info.json | 4 +- .../leaf60/hotswap/keymaps/default/keymap.c | 12 - keyboards/foxlab/leaf60/hotswap/rules.mk | 18 +- keyboards/foxlab/leaf60/universal/config.h | 73 - keyboards/foxlab/leaf60/universal/info.json | 4 +- .../leaf60/universal/keymaps/default/keymap.c | 12 - keyboards/foxlab/leaf60/universal/rules.mk | 18 +- keyboards/foxlab/time80/info.json | 2 - keyboards/foxlab/time80/rules.mk | 6 +- keyboards/foxlab/time_re/hotswap/info.json | 2 - keyboards/foxlab/time_re/hotswap/rules.mk | 5 +- keyboards/foxlab/time_re/universal/info.json | 2 - keyboards/foxlab/time_re/universal/rules.mk | 5 +- keyboards/fr4/southpaw75/info.json | 2 - keyboards/fr4/southpaw75/rules.mk | 5 +- keyboards/fr4/unix60/info.json | 2 - keyboards/fr4/unix60/rules.mk | 5 +- keyboards/fractal/config.h | 5 +- keyboards/fractal/info.json | 2 - keyboards/fractal/keymaps/default/keymap.c | 2 - keyboards/fractal/rules.mk | 17 +- keyboards/free_willy/config.h | 39 + keyboards/free_willy/free_willy.c | 16 + keyboards/free_willy/free_willy.h | 33 + keyboards/free_willy/info.json | 47 + keyboards/free_willy/keymaps/colemak/config.h | 20 + keyboards/free_willy/keymaps/colemak/keymap.c | 75 + .../keymaps/colemak}/rules.mk | 0 keyboards/free_willy/keymaps/default/config.h | 20 + keyboards/free_willy/keymaps/default/keymap.c | 74 + .../keymaps/default}/rules.mk | 0 keyboards/free_willy/readme.md | 21 + keyboards/free_willy/rules.mk | 19 + keyboards/freyr/info.json | 2 - keyboards/freyr/rules.mk | 5 +- keyboards/friedrich/info.json | 4 +- keyboards/friedrich/rules.mk | 5 +- keyboards/frooastboard/config.h | 52 + keyboards/frooastboard/frooastboard.c | 17 + keyboards/frooastboard/frooastboard.h | 27 + keyboards/frooastboard/info.json | 42 + .../frooastboard/keymaps/default/keymap.c | 47 + .../frooastboard/keymaps/safe_mode/keymap.c | 43 + keyboards/frooastboard/keymaps/via/config.h | 30 + keyboards/frooastboard/keymaps/via/keymap.c | 27 + keyboards/frooastboard/keymaps/via/rules.mk | 2 + keyboards/frooastboard/readme.md | 19 + keyboards/frooastboard/rules.mk | 19 + keyboards/ft/mars80/config.h | 4 - keyboards/ft/mars80/info.json | 2 - keyboards/ft/mars80/rules.mk | 11 +- keyboards/function96/v1/info.json | 2 - keyboards/function96/v1/rules.mk | 5 +- keyboards/function96/v2/info.json | 543 ++- keyboards/function96/v2/rules.mk | 5 +- keyboards/funky40/info.json | 4 +- keyboards/funky40/rules.mk | 15 +- keyboards/gami_studio/lex60/info.json | 2 - keyboards/gami_studio/lex60/rules.mk | 15 +- .../gboards/combos/colemakdhm-vim-helpers.def | 9 + keyboards/gboards/g/keymap_combo.h | 6 +- keyboards/gboards/gergoplex/config.h | 52 + keyboards/gboards/gergoplex/gergoplex.c | 68 + keyboards/gboards/gergoplex/gergoplex.h | 56 + .../gergoplex/keymaps/colemak-dhm/combos.def | 10 + .../keymaps/colemak-dhm/gergoplex.def | 11 + .../gergoplex/keymaps/colemak-dhm/keymap.c | 99 + .../gergoplex/keymaps/colemak-dhm/rules.mk | 17 + .../gergoplex/keymaps/default/combos.def | 11 + .../gergoplex/keymaps/default/gergoplex.def | 10 + .../gergoplex/keymaps/default/keymap.c | 113 + .../gergoplex/keymaps/default/rules.mk | 17 + .../gergoplex/keymaps/georgepetri/combos.def | 11 + .../gergoplex/keymaps/georgepetri/config.h | 27 + .../keymaps/georgepetri/gergoplex.def | 7 + .../gergoplex/keymaps/georgepetri/keymap.c | 203 + .../gergoplex/keymaps/georgepetri/readme.md | 6 + .../gergoplex/keymaps/georgepetri/rules.mk | 19 + keyboards/gboards/gergoplex/matrix.c | 241 ++ keyboards/gboards/gergoplex/readme.md | 43 + keyboards/gboards/gergoplex/rules.mk | 18 + keyboards/geekboards/macropad_v2/config.h | 80 +- keyboards/geekboards/macropad_v2/info.json | 2 - keyboards/geekboards/macropad_v2/rules.mk | 5 +- keyboards/geekboards/tester/config.h | 69 +- keyboards/geekboards/tester/info.json | 2 - .../tester/keymaps/default/keymap.c | 12 - keyboards/geekboards/tester/rules.mk | 18 +- keyboards/geekboards/tester/tester.c | 24 +- keyboards/geminate60/info.json | 2 - keyboards/geminate60/readme.md | 1 + keyboards/geminate60/rules.mk | 5 +- keyboards/generic_panda/panda65_01/info.json | 2 - keyboards/generic_panda/panda65_01/rules.mk | 5 +- keyboards/genone/eclipse_65/info.json | 2 - keyboards/genone/eclipse_65/rules.mk | 5 +- keyboards/genone/g1_65/info.json | 2 - keyboards/genone/g1_65/rules.mk | 5 +- keyboards/gentleman65/config.h | 59 + keyboards/gentleman65/gentleman65.c | 30 + keyboards/gentleman65/gentleman65.h | 33 + keyboards/gentleman65/info.json | 10 + .../gentleman65/keymaps/default/keymap.c | 36 + keyboards/gentleman65/keymaps/via/keymap.c | 53 + .../keymaps/via/rules.mk | 0 keyboards/gentleman65/readme.md | 24 + keyboards/gentleman65/rules.mk | 22 + keyboards/georgi/georgi.h | 2 - keyboards/georgi/info.json | 2 - keyboards/georgi/rules.mk | 9 +- keyboards/gergo/gergo.h | 2 - keyboards/gergo/info.json | 2 - keyboards/gergo/keymaps/drashna/keymap.c | 46 +- .../keymaps/manna-harbour_miryoku/config.h | 22 + .../keymaps/manna-harbour_miryoku/keymap.c | 5 + keyboards/gergo/keymaps/oled/keymap.c | 5 +- keyboards/gergo/keymaps/oled/rules.mk | 3 +- keyboards/gergo/rules.mk | 11 +- keyboards/getta25/info.json | 2 - keyboards/getta25/keymaps/oled/keymap.c | 17 +- keyboards/getta25/keymaps/oled/rules.mk | 3 +- keyboards/getta25/rules.mk | 20 +- .../ggkeyboards/genesis/hotswap/config.h | 24 +- .../ggkeyboards/genesis/hotswap/hotswap.c | 5 - .../ggkeyboards/genesis/hotswap/hotswap.h | 9 +- .../ggkeyboards/genesis/hotswap/info.json | 15 +- .../genesis/hotswap/keymaps/default/keymap.c | 23 +- .../genesis/hotswap/keymaps/via/keymap.c | 15 +- .../ggkeyboards/genesis/hotswap/rules.mk | 8 +- keyboards/ggkeyboards/genesis/solder/config.h | 8 +- .../ggkeyboards/genesis/solder/info.json | 265 +- .../genesis/solder/keymaps/default/keymap.c | 22 +- .../genesis/solder/keymaps/via/keymap.c | 16 +- keyboards/ggkeyboards/genesis/solder/rules.mk | 8 +- keyboards/ggkeyboards/genesis/solder/solder.c | 5 - keyboards/ggkeyboards/genesis/solder/solder.h | 19 +- keyboards/gh60/revc/config.h | 48 - keyboards/gh60/revc/info.json | 2 - keyboards/gh60/revc/keymaps/danbee/rules.mk | 1 - keyboards/gh60/revc/keymaps/dbroqua/keymap.c | 71 +- .../gh60/revc/keymaps/dbroqua_7U/keymap.c | 33 +- .../gh60/revc/keymaps/default_abnt2/keymap.c | 2 +- .../gh60/revc/keymaps/robotmaxtron/keymap.c | 100 +- keyboards/gh60/revc/keymaps/sethbc/keymap.c | 39 +- keyboards/gh60/revc/rules.mk | 15 +- keyboards/gh60/satan/info.json | 2 - keyboards/gh60/satan/keymaps/abhixec/rules.mk | 2 +- .../gh60/satan/keymaps/addcninblue/rules.mk | 3 +- .../satan/keymaps/admiralStrokers/rules.mk | 4 +- keyboards/gh60/satan/keymaps/ben_iso/rules.mk | 2 +- keyboards/gh60/satan/keymaps/bri/keymap.c | 6 +- keyboards/gh60/satan/keymaps/chaser/keymap.c | 41 +- keyboards/gh60/satan/keymaps/chaser/rules.mk | 2 +- keyboards/gh60/satan/keymaps/colemak/rules.mk | 2 +- keyboards/gh60/satan/keymaps/dbroqua/keymap.c | 71 +- keyboards/gh60/satan/keymaps/default/rules.mk | 9 +- .../gh60/satan/keymaps/dende_iso/keymap.c | 6 +- .../gh60/satan/keymaps/dende_iso/rules.mk | 2 +- keyboards/gh60/satan/keymaps/denolfe/keymap.c | 104 +- keyboards/gh60/satan/keymaps/denolfe/rules.mk | 2 +- .../gh60/satan/keymaps/dkrieger/rules.mk | 2 +- keyboards/gh60/satan/keymaps/fakb/rules.mk | 2 +- .../gh60/satan/keymaps/gipsy-king/rules.mk | 2 +- keyboards/gh60/satan/keymaps/isoHHKB/keymap.c | 39 +- keyboards/gh60/satan/keymaps/isoHHKB/rules.mk | 2 +- .../satan/keymaps/iso_split_rshift/rules.mk | 2 +- keyboards/gh60/satan/keymaps/lepa/rules.mk | 2 +- keyboards/gh60/satan/keymaps/midi/rules.mk | 2 +- .../satan/keymaps/olligranlund_iso/rules.mk | 2 +- keyboards/gh60/satan/keymaps/sethbc/keymap.c | 40 +- keyboards/gh60/satan/keymaps/sethbc/rules.mk | 2 +- keyboards/gh60/satan/keymaps/smt/rules.mk | 2 +- .../gh60/satan/keymaps/stanleylai/keymap.c | 40 +- keyboards/gh60/satan/keymaps/unxmaal/keymap.c | 39 - keyboards/gh60/satan/keymaps/unxmaal/rules.mk | 2 +- keyboards/gh60/satan/rules.mk | 12 +- keyboards/gh60/v1p3/info.json | 2 - keyboards/gh60/v1p3/rules.mk | 5 +- keyboards/gh80_3000/config.h | 5 +- keyboards/gh80_3000/gh80_3000.h | 217 +- keyboards/gh80_3000/info.json | 8 - keyboards/gh80_3000/rules.mk | 10 +- keyboards/ghs/rar/config.h | 73 - keyboards/ghs/rar/info.json | 2 - keyboards/ghs/rar/rules.mk | 13 +- keyboards/gingham/config.h | 73 - keyboards/gingham/info.json | 2 - keyboards/gingham/rules.mk | 20 +- keyboards/gkeyboard/gkb_m16/info.json | 2 - keyboards/gkeyboard/gkb_m16/rules.mk | 5 +- keyboards/gmmk/pro/ansi/ansi.c | 241 ++ keyboards/gmmk/pro/ansi/ansi.h | 52 + keyboards/gmmk/pro/ansi/config.h | 23 + keyboards/gmmk/pro/ansi/info.json | 109 + .../gmmk/pro/ansi/keymaps/alexmarmon/keymap.c | 66 + .../pro/ansi/keymaps/alexmarmon/readme.md | 7 + .../gmmk/pro/ansi/keymaps/andrebrait/config.h | 22 + .../gmmk/pro/ansi/keymaps/andrebrait/keymap.c | 287 ++ .../pro/ansi/keymaps/andrebrait/readme.md | 23 + .../gmmk/pro/ansi/keymaps/andrebrait/rules.mk | 3 + .../gmmk/pro/ansi/keymaps/benschaeff/keymap.c | 127 + .../pro/ansi/keymaps/benschaeff/readme.md | 19 + .../pro/ansi/keymaps/coryginsberg/config.h | 24 + .../pro/ansi/keymaps/coryginsberg/keymap.c | 111 + .../pro/ansi/keymaps/coryginsberg/readme.md | 15 + .../pro/ansi/keymaps/coryginsberg/rules.mk | 5 + .../gmmk/pro/ansi/keymaps/default/keymap.c | 72 + .../gmmk/pro/ansi/keymaps/jackkenney/keymap.c | 66 + .../gmmk/pro/ansi/keymaps/jonavin/config.h | 39 + .../gmmk/pro/ansi/keymaps/jonavin/keymap.c | 209 + .../gmmk/pro/ansi/keymaps/jonavin/readme.md | 65 + .../pro/ansi/keymaps/jonavin/rgb_matrix_map.h | 144 + .../gmmk/pro/ansi/keymaps/jonavin/rules.mk | 12 + .../gmmk/pro/ansi/keymaps/mattgauf/ansi.c | 241 ++ .../gmmk/pro/ansi/keymaps/mattgauf/config.h | 63 + .../gmmk/pro/ansi/keymaps/mattgauf/helpers.c | 25 + .../gmmk/pro/ansi/keymaps/mattgauf/keymap.c | 220 ++ .../ansi/keymaps/mattgauf/keymap_helpers.h | 165 + .../gmmk/pro/ansi/keymaps/mattgauf/readme.md | 52 + .../gmmk/pro/ansi/keymaps/mattgauf/rules.mk | 6 + .../gmmk/pro/ansi/keymaps/mike1808/.gitignore | 1 + .../gmmk/pro/ansi/keymaps/mike1808/README.md | 19 + .../gmmk/pro/ansi/keymaps/mike1808/config.h | 31 + .../gmmk/pro/ansi/keymaps/mike1808/encoder.c | 111 + .../gmmk/pro/ansi/keymaps/mike1808/encoder.h | 35 + .../gmmk/pro/ansi/keymaps/mike1808/fun.c | 49 + .../gmmk/pro/ansi/keymaps/mike1808/keymap.c | 127 + .../gmmk/pro/ansi/keymaps/mike1808/mike1808.c | 68 + .../gmmk/pro/ansi/keymaps/mike1808/mike1808.h | 111 + .../ansi/keymaps/mike1808/process_record.c | 119 + .../ansi/keymaps/mike1808/process_record.h | 26 + .../keymaps/mike1808/rgb_matrix_ledmaps.c | 71 + .../keymaps/mike1808/rgb_matrix_ledmaps.h | 100 + .../gmmk/pro/ansi/keymaps/mike1808/rules.mk | 25 + .../gmmk/pro/ansi/keymaps/mike1808/utils.c | 64 + .../gmmk/pro/ansi/keymaps/mike1808/utils.h | 32 + .../gmmk/pro/ansi/keymaps/paddlegame/config.h | 24 + .../gmmk/pro/ansi/keymaps/paddlegame/keymap.c | 471 +++ .../pro/ansi/keymaps/paddlegame/paddlegame.h | 46 + .../pro/ansi/keymaps/paddlegame/readme.md | 18 + .../ansi/keymaps/paddlegame/rgb_matrix_map.h | 181 + .../gmmk/pro/ansi/keymaps/paddlegame/rules.mk | 4 + .../pro/ansi/keymaps/stickandgum/config.h | 75 + .../pro/ansi/keymaps/stickandgum/keymap.c | 300 ++ .../pro/ansi/keymaps/stickandgum/readme.md | 63 + .../pro/ansi/keymaps/stickandgum/rules.mk | 2 + keyboards/gmmk/pro/ansi/keymaps/via/keymap.c | 89 + keyboards/gmmk/pro/ansi/keymaps/via/rules.mk | 1 + .../keymaps/wholesomeducky/keymap.c | 0 .../gmmk/pro/ansi/keymaps/willwm/keymap.c | 73 + .../pro/{ => ansi}/keymaps/willwm/keymap.json | 0 .../pro/{ => ansi}/keymaps/willwm/readme.md | 0 .../pro/{ => ansi}/keymaps/willwm/rules.mk | 0 keyboards/gmmk/pro/ansi/readme.md | 37 + keyboards/gmmk/pro/ansi/rules.mk | 22 + keyboards/gmmk/pro/config.h | 97 +- keyboards/gmmk/pro/halconf.h | 7 + keyboards/gmmk/pro/info.json | 111 - keyboards/gmmk/pro/iso/config.h | 23 + keyboards/gmmk/pro/iso/info.json | 110 + keyboards/gmmk/pro/iso/iso.c | 243 ++ keyboards/gmmk/pro/iso/iso.h | 52 + .../gmmk/pro/iso/keymaps/default/keymap.c | 72 + keyboards/gmmk/pro/iso/keymaps/via/keymap.c | 91 + keyboards/gmmk/pro/iso/keymaps/via/rules.mk | 1 + keyboards/gmmk/pro/iso/readme.md | 37 + keyboards/gmmk/pro/iso/rules.mk | 22 + keyboards/gmmk/pro/keymaps/default/keymap.c | 65 - keyboards/gmmk/pro/keymaps/moults31/keymap.c | 92 + keyboards/gmmk/pro/keymaps/via/keymap.c | 75 - keyboards/gmmk/pro/keymaps/willwm/keymap.c | 74 - keyboards/gmmk/pro/mcuconf.h | 6 + keyboards/gmmk/pro/pro.h | 35 +- keyboards/gmmk/pro/readme.md | 23 - keyboards/gmmk/pro/rules.mk | 23 - keyboards/gon/nerd60/config.h | 8 +- keyboards/gon/nerd60/info.json | 2 - keyboards/gon/nerd60/keymaps/mauin/rules.mk | 2 +- keyboards/gon/nerd60/keymaps/via/keymap.c | 52 + keyboards/gon/nerd60/keymaps/via/rules.mk | 3 + keyboards/gon/nerd60/rules.mk | 5 +- keyboards/gon/nerdtkl/info.json | 3 - .../gon/nerdtkl/keymaps/gam3cat/keymap.c | 2 +- .../gon/nerdtkl/keymaps/gam3cat/rules.mk | 3 +- keyboards/gon/nerdtkl/rules.mk | 16 +- keyboards/gorthage_truck/config.h | 60 + keyboards/gorthage_truck/gorthage_truck.c | 29 + keyboards/gorthage_truck/gorthage_truck.h | 77 + keyboards/gorthage_truck/info.json | 208 + keyboards/gorthage_truck/keymaps/10u/keymap.c | 42 + .../gorthage_truck/keymaps/10u/readme.md | 1 + keyboards/gorthage_truck/keymaps/7u/keymap.c | 42 + keyboards/gorthage_truck/keymaps/7u/readme.md | 1 + .../gorthage_truck/keymaps/default/keymap.c | 42 + .../gorthage_truck/keymaps/default/readme.md | 1 + keyboards/gorthage_truck/readme.md | 19 + keyboards/gorthage_truck/rules.mk | 21 + keyboards/gowla/info.json | 2 - keyboards/gowla/rules.mk | 13 +- keyboards/gray_studio/cod67/cod67.c | 27 - keyboards/gray_studio/cod67/cod67.h | 29 +- keyboards/gray_studio/cod67/info.json | 2 - .../cod67/keymaps/default/keymap.c | 16 - keyboards/gray_studio/cod67/rules.mk | 16 +- keyboards/gray_studio/hb85/info.json | 4 +- keyboards/gray_studio/hb85/rules.mk | 11 +- keyboards/gray_studio/space65/config.h | 72 - keyboards/gray_studio/space65/info.json | 2 - .../space65/keymaps/default/keymap.c | 12 - keyboards/gray_studio/space65/rules.mk | 18 +- .../gray_studio/think65/hotswap/info.json | 5 +- .../gray_studio/think65/hotswap/rules.mk | 16 +- .../gray_studio/think65/solder/info.json | 5 - .../solder/keymaps/dangjoeltang/keymap.c | 232 ++ .../solder/keymaps/dangjoeltang/readme.md | 9 + keyboards/gray_studio/think65/solder/rules.mk | 16 +- keyboards/gray_studio/think65/solder/solder.c | 7 - keyboards/grid600/press/info.json | 4 +- .../grid600/press/keymaps/default/keymap.c | 12 - keyboards/grid600/press/rules.mk | 16 +- keyboards/gskt00/config.h | 31 - keyboards/gskt00/gskt00.c | 2 - keyboards/gskt00/gskt00.h | 57 - keyboards/gskt00/info.json | 84 - keyboards/gskt00/keymaps/default/keymap.c | 82 - keyboards/gskt00/readme.md | 17 - keyboards/gskt00/rules.mk | 28 - keyboards/gvalchca/ga150/ga150.h | 2 +- keyboards/gvalchca/ga150/info.json | 2 - keyboards/gvalchca/ga150/rules.mk | 5 +- keyboards/gvalchca/spaccboard/info.json | 4 +- keyboards/gvalchca/spaccboard/rules.mk | 5 +- keyboards/h0oni/hotduck/config.h | 74 + keyboards/h0oni/hotduck/hotduck.c | 18 + keyboards/h0oni/hotduck/hotduck.h | 37 + keyboards/h0oni/hotduck/info.json | 83 + .../h0oni/hotduck/keymaps/default/keymap.c | 52 + keyboards/h0oni/hotduck/keymaps/via/keymap.c | 52 + keyboards/h0oni/hotduck/keymaps/via/rules.mk | 2 + keyboards/h0oni/hotduck/readme.md | 12 + keyboards/h0oni/hotduck/rules.mk | 19 + keyboards/hadron/hadron.h | 44 +- keyboards/hadron/i2c.c | 166 - keyboards/hadron/i2c.h | 49 - keyboards/hadron/info.json | 3 - keyboards/hadron/ver2/config.h | 6 +- .../hadron/ver2/keymaps/default/keymap.c | 121 +- keyboards/hadron/ver2/keymaps/readme.md | 22 - .../hadron/ver2/keymaps/side_numpad/keymap.c | 162 +- keyboards/hadron/ver2/rules.mk | 42 +- keyboards/hadron/ver2/ver2.c | 73 +- keyboards/hadron/ver2/ver2.h | 7 +- keyboards/hadron/ver3/config.h | 37 +- .../hadron/ver3/keymaps/default/config.h | 1 - .../hadron/ver3/keymaps/default/keymap.c | 11 +- keyboards/hadron/ver3/keymaps/ishtob/keymap.c | 2 +- keyboards/hadron/ver3/keymaps/readme.md | 24 - keyboards/hadron/ver3/rules.mk | 11 +- keyboards/hadron/ver3/ver3.c | 224 +- keyboards/halberd/config.h | 68 - keyboards/halberd/halberd.c | 27 - keyboards/halberd/info.json | 3 - keyboards/halberd/keymaps/default/keymap.c | 12 - keyboards/halberd/rules.mk | 18 +- keyboards/halfcliff/config.h | 69 + keyboards/halfcliff/halfcliff.c | 97 + keyboards/halfcliff/halfcliff.h | 58 + keyboards/halfcliff/info.json | 86 + keyboards/halfcliff/keymaps/default/keymap.c | 109 + keyboards/halfcliff/keymaps/default/readme.md | 1 + keyboards/halfcliff/keymaps/via/keymap.c | 112 + keyboards/halfcliff/keymaps/via/readme.md | 1 + keyboards/halfcliff/keymaps/via/rules.mk | 1 + keyboards/halfcliff/matrix.c | 277 ++ keyboards/halfcliff/readme.md | 19 + keyboards/halfcliff/rules.mk | 26 + keyboards/han60/config.h | 152 + keyboards/han60/han60.c | 17 + keyboards/han60/han60.h | 103 + keyboards/han60/info.json | 341 ++ keyboards/han60/keymaps/default/keymap.c | 38 + keyboards/han60/keymaps/default/readme.md | 1 + keyboards/han60/keymaps/via/keymap.c | 54 + keyboards/han60/keymaps/via/rules.mk | 1 + keyboards/han60/readme.md | 27 + keyboards/han60/rules.mk | 18 + keyboards/hand88/info.json | 2 - keyboards/hand88/rules.mk | 5 +- .../handwired/108key_trackpoint/config.h | 10 +- .../handwired/108key_trackpoint/info.json | 3 - .../handwired/108key_trackpoint/rules.mk | 24 +- keyboards/handwired/2x5keypad/config.h | 7 - keyboards/handwired/2x5keypad/info.json | 2 - keyboards/handwired/2x5keypad/rules.mk | 10 +- keyboards/handwired/3dp660/config.h | 8 +- keyboards/handwired/3dp660/info.json | 2 - keyboards/handwired/3dp660/rules.mk | 5 +- keyboards/handwired/412_64/412_64.c | 28 - keyboards/handwired/412_64/412_64.h | 34 +- keyboards/handwired/412_64/config.h | 68 - keyboards/handwired/412_64/info.json | 2 - .../handwired/412_64/keymaps/default/keymap.c | 16 - keyboards/handwired/412_64/rules.mk | 26 +- keyboards/handwired/42/info.json | 2 - keyboards/handwired/42/rules.mk | 20 +- keyboards/handwired/6key/info.json | 3 - .../handwired/6key/keymaps/default/keymap.c | 33 +- keyboards/handwired/6key/rules.mk | 5 +- keyboards/handwired/6macro/info.json | 3 - keyboards/handwired/6macro/rules.mk | 5 +- keyboards/handwired/aek64/config.h | 2 - keyboards/handwired/aek64/info.json | 2 - .../handwired/aek64/keymaps/4sstylz/config.h | 3 + .../aek64/keymaps/4sstylz}/rules.mk | 0 keyboards/handwired/aek64/rules.mk | 18 +- keyboards/handwired/aim65/info.json | 3 - keyboards/handwired/aim65/rules.mk | 5 +- keyboards/handwired/amigopunk/info.json | 2 - .../amigopunk/keymaps/default/keymap.c | 5 +- keyboards/handwired/amigopunk/rules.mk | 8 +- keyboards/handwired/angel/info.json | 2 - keyboards/handwired/angel/rules.mk | 5 +- keyboards/handwired/aplx2/info.json | 2 - keyboards/handwired/aplx2/rules.mk | 16 +- keyboards/handwired/aranck/aranck.c | 27 - keyboards/handwired/aranck/config.h | 73 - keyboards/handwired/aranck/info.json | 3 - keyboards/handwired/aranck/rules.mk | 16 +- keyboards/handwired/arrow_pad/arrow_pad.h | 47 +- keyboards/handwired/arrow_pad/config.h | 53 +- keyboards/handwired/arrow_pad/info.json | 2 - .../arrow_pad/keymaps/pad_21/rules.mk | 5 +- .../arrow_pad/keymaps/pad_24/rules.mk | 5 +- keyboards/handwired/arrow_pad/rules.mk | 23 +- keyboards/handwired/atreus50/atreus50.h | 26 +- keyboards/handwired/atreus50/config.h | 53 +- keyboards/handwired/atreus50/info.json | 2 - .../atreus50/keymaps/ajp10304/config.h | 16 + .../atreus50/keymaps/ajp10304/keymap.c | 26 +- .../atreus50/keymaps/ajp10304/readme.md | 7 +- keyboards/handwired/atreus50/rules.mk | 23 +- keyboards/handwired/axon/info.json | 2 - keyboards/handwired/axon/rules.mk | 7 +- .../battleship_gamepad/battleship_gamepad.c | 30 + .../battleship_gamepad/battleship_gamepad.h | 31 + .../handwired/battleship_gamepad/config.h | 52 + .../handwired/battleship_gamepad/info.json | 215 + .../keymaps/default/keymap.c | 41 + .../keymaps/default/readme.md | 2 + .../battleship_gamepad/keymaps/via/keymap.c | 48 + .../battleship_gamepad/keymaps/via/rules.mk | 2 + .../handwired/battleship_gamepad/readme.md | 29 + .../handwired/battleship_gamepad/rules.mk | 23 + keyboards/handwired/bdn9_ble/info.json | 2 - keyboards/handwired/bdn9_ble/rules.mk | 18 +- keyboards/handwired/bento/info.json | 2 - keyboards/handwired/bento/rev1/rules.mk | 5 +- keyboards/handwired/bigmac/bigmac.c | 3 - keyboards/handwired/bigmac/bigmac.h | 3 - keyboards/handwired/bigmac/config.h | 4 - keyboards/handwired/bigmac/info.json | 3 - keyboards/handwired/bigmac/rules.mk | 8 +- keyboards/handwired/bolek/info.json | 2 - keyboards/handwired/bolek/rules.mk | 5 +- .../handwired/boss566y/redragon_vara/config.h | 6 +- .../boss566y/redragon_vara/info.json | 3 - .../boss566y/redragon_vara/redragon_vara.h | 3 - .../handwired/boss566y/redragon_vara/rules.mk | 14 +- keyboards/handwired/brain/info.json | 2 - keyboards/handwired/brain/rules.mk | 8 +- keyboards/handwired/cans12er/info.json | 2 - keyboards/handwired/cans12er/rules.mk | 15 +- keyboards/handwired/chiron/info.json | 2 - keyboards/handwired/chiron/rules.mk | 15 +- keyboards/handwired/ck4x4/info.json | 2 - keyboards/handwired/ck4x4/rules.mk | 4 +- keyboards/handwired/cmd60/cmd60.c | 7 - keyboards/handwired/cmd60/cmd60.h | 29 +- keyboards/handwired/cmd60/config.h | 53 +- keyboards/handwired/cmd60/info.json | 2 - keyboards/handwired/cmd60/rules.mk | 24 +- keyboards/handwired/co60/info.json | 10 - .../handwired/co60/keymaps/all_keys/keymap.c | 16 - .../handwired/co60/keymaps/default/keymap.c | 16 - keyboards/handwired/co60/rev1/config.h | 48 - keyboards/handwired/co60/rev1/rev1.c | 30 - keyboards/handwired/co60/rev1/rules.mk | 24 +- keyboards/handwired/co60/rev6/rules.mk | 11 +- keyboards/handwired/co60/rev7/rules.mk | 11 +- keyboards/handwired/colorlice/config.h | 51 +- keyboards/handwired/colorlice/info.json | 2 - keyboards/handwired/colorlice/rules.mk | 20 +- .../handwired/concertina/64key/info.json | 3 - .../64key/keymaps/default}/rules.mk | 0 keyboards/handwired/concertina/64key/rules.mk | 7 +- .../handwired/consolekeyboard/18key/info.json | 2 - .../handwired/consolekeyboard/18key/rules.mk | 5 +- .../handwired/consolekeyboard/20key/info.json | 2 - .../handwired/consolekeyboard/20key/rules.mk | 5 +- .../handwired/consolekeyboard/27key/info.json | 2 - .../handwired/consolekeyboard/27key/rules.mk | 5 +- .../handwired/consolekeyboard/30key/info.json | 2 - .../handwired/consolekeyboard/30key/rules.mk | 5 +- keyboards/handwired/curiosity/info.json | 2 - keyboards/handwired/curiosity/rules.mk | 5 +- keyboards/handwired/d48/info.json | 2 - .../handwired/d48/keymaps/anderson/keymap.c | 5 +- .../handwired/d48/keymaps/default/keymap.c | 5 +- keyboards/handwired/d48/rules.mk | 6 +- keyboards/handwired/dactyl/config.h | 5 +- keyboards/handwired/dactyl/dactyl.c | 1 - keyboards/handwired/dactyl/dactyl.h | 77 +- keyboards/handwired/dactyl/i2cmaster.h | 178 - keyboards/handwired/dactyl/info.json | 3 - .../handwired/dactyl/keymaps/default/keymap.c | 9 - keyboards/handwired/dactyl/matrix.c | 101 +- keyboards/handwired/dactyl/rules.mk | 22 +- keyboards/handwired/dactyl/twimaster.c | 207 - keyboards/handwired/dactyl_left/config.h | 73 - keyboards/handwired/dactyl_left/dactyl_left.c | 35 - keyboards/handwired/dactyl_left/info.json | 2 - .../dactyl_left/keymaps/default/keymap.c | 6 - keyboards/handwired/dactyl_left/rules.mk | 22 +- keyboards/handwired/dactyl_manuform/4x5/4x5.c | 22 - keyboards/handwired/dactyl_manuform/4x5/4x5.h | 93 +- .../handwired/dactyl_manuform/4x5/config.h | 7 +- .../handwired/dactyl_manuform/4x5/info.json | 107 +- .../4x5/keymaps/default/config.h | 7 +- .../4x5/keymaps/default/keymap.c | 186 +- .../4x5/keymaps/ibnuda/keymap.c | 43 +- .../keymaps/manna-harbour_miryoku/config.h | 25 + .../keymaps/manna-harbour_miryoku/keymap.c | 5 + .../handwired/dactyl_manuform/4x5/rules.mk | 32 +- keyboards/handwired/dactyl_manuform/4x6/4x6.c | 13 - keyboards/handwired/dactyl_manuform/4x6/4x6.h | 45 +- .../handwired/dactyl_manuform/4x6/config.h | 4 +- .../handwired/dactyl_manuform/4x6/info.json | 121 +- .../4x6/keymaps/default/config.h | 6 +- .../4x6/keymaps/default/keymap.c | 106 +- .../handwired/dactyl_manuform/4x6/rules.mk | 32 +- keyboards/handwired/dactyl_manuform/5x6/5x6.c | 22 - keyboards/handwired/dactyl_manuform/5x6/5x6.h | 56 +- .../handwired/dactyl_manuform/5x6/config.h | 6 +- .../handwired/dactyl_manuform/5x6/info.json | 145 +- .../5x6/keymaps/default/config.h | 6 +- .../5x6/keymaps/default/keymap.c | 71 +- .../keymaps/manna-harbour_miryoku/config.h | 26 + .../keymaps/manna-harbour_miryoku/keymap.c | 5 + .../5x6/keymaps/swedish/keymap.c | 11 +- .../handwired/dactyl_manuform/5x6/rules.mk | 32 +- .../dactyl_manuform/5x6_2_5/5x6_2_5.h | 45 +- .../dactyl_manuform/5x6_2_5/config.h | 13 +- .../dactyl_manuform/5x6_2_5/info.json | 140 +- .../dactyl_manuform/5x6_2_5/rules.mk | 30 +- .../handwired/dactyl_manuform/5x6_5/5x6_5.c | 1 - .../handwired/dactyl_manuform/5x6_5/5x6_5.h | 45 +- .../handwired/dactyl_manuform/5x6_5/config.h | 7 +- .../handwired/dactyl_manuform/5x6_5/info.json | 132 +- .../5x6_5/keymaps/333fred/keymap.c | 3 +- .../5x6_5/keymaps/333fred/rules.mk | 3 +- .../5x6_5/keymaps/cykedev/rules.mk | 2 +- .../handwired/dactyl_manuform/5x6_5/rules.mk | 23 +- .../5x6_right_trackball/5x6_right_trackball.c | 228 -- .../5x6_right_trackball/5x6_right_trackball.h | 73 - .../5x6_right_trackball/config.h | 72 - .../5x6_right_trackball/info.json | 75 - .../keymaps/default/config.h | 22 - .../keymaps/default/keymap.c | 17 - .../keymaps/default/rules.mk | 4 - .../keymaps/drashna/config.h | 39 - .../keymaps/drashna/keymap.c | 250 -- .../keymaps/drashna/rules.mk | 8 - .../5x6_right_trackball/pmw3360.c | 221 -- .../5x6_right_trackball/pmw3360.h | 103 - .../5x6_right_trackball/pmw3360_firmware.h | 300 -- .../5x6_right_trackball/pointer_transport.c | 616 --- .../5x6_right_trackball/post_config.h | 33 - .../5x6_right_trackball/rules.mk | 31 - keyboards/handwired/dactyl_manuform/5x7/5x7.c | 22 - keyboards/handwired/dactyl_manuform/5x7/5x7.h | 54 +- .../handwired/dactyl_manuform/5x7/config.h | 6 +- .../handwired/dactyl_manuform/5x7/info.json | 165 +- .../5x7/keymaps/default/config.h | 6 +- .../5x7/keymaps/default/keymap.c | 122 +- .../dactyl_manuform/5x7/keymaps/via/config.h | 6 +- .../dactyl_manuform/5x7/keymaps/via/keymap.c | 198 +- .../handwired/dactyl_manuform/5x7/rules.mk | 32 +- keyboards/handwired/dactyl_manuform/6x6/6x6.c | 22 - keyboards/handwired/dactyl_manuform/6x6/6x6.h | 63 +- .../handwired/dactyl_manuform/6x6/config.h | 6 +- .../handwired/dactyl_manuform/6x6/info.json | 171 +- .../6x6/keymaps/default/config.h | 6 +- .../6x6/keymaps/default/keymap.c | 73 +- .../handwired/dactyl_manuform/6x6/rules.mk | 32 +- keyboards/handwired/dactyl_manuform/config.h | 30 +- .../dactyl_manuform/dactyl_manuform.h | 43 +- .../dactyl_manuform/dmote/62key/62key.c | 4 - .../dactyl_manuform/dmote/62key/62key.h | 46 +- .../dactyl_manuform/dmote/62key/config.h | 9 +- .../dactyl_manuform/dmote/62key/info.json | 128 +- .../dmote/62key/keymaps/default/keymap.c | 140 +- .../dactyl_manuform/dmote/62key/rules.mk | 4 +- keyboards/handwired/dactyl_manuform/rules.mk | 34 - .../dactyl_promicro/dactyl_promicro.c | 11 - keyboards/handwired/dactyl_promicro/info.json | 2 - keyboards/handwired/dactyl_promicro/rules.mk | 23 +- keyboards/handwired/dactyl_rah/info.json | 2 - keyboards/handwired/dactyl_rah/rules.mk | 5 +- keyboards/handwired/daishi/daishi.c | 21 - keyboards/handwired/daishi/daishi.h | 2 - keyboards/handwired/daishi/info.json | 2 - .../handwired/daishi/keymaps/default/keymap.c | 4 +- keyboards/handwired/daishi/rules.mk | 21 +- keyboards/handwired/datahand/info.json | 2 - .../datahand/keymaps/default/keymap.c | 4 - keyboards/handwired/datahand/matrix.c | 19 +- keyboards/handwired/datahand/rules.mk | 25 +- keyboards/handwired/dc/mc/001/001.c | 17 + keyboards/handwired/dc/mc/001/001.h | 33 + keyboards/handwired/dc/mc/001/config.h | 83 + keyboards/handwired/dc/mc/001/info.json | 16 + .../dc/mc/001/keymaps/default/keymap.c | 31 + .../dc/mc/001/keymaps/default/readme.md | 1 + keyboards/handwired/dc/mc/001/readme.md | 24 + keyboards/handwired/dc/mc/001/rules.mk | 20 + keyboards/handwired/ddg_56/info.json | 2 - keyboards/handwired/ddg_56/rules.mk | 6 +- keyboards/handwired/eagleii/info.json | 3 - keyboards/handwired/eagleii/rules.mk | 10 +- keyboards/handwired/elrgo_s/config.h | 58 + keyboards/handwired/elrgo_s/elrgo_s.c | 17 + keyboards/handwired/elrgo_s/elrgo_s.h | 38 + keyboards/handwired/elrgo_s/info.json | 57 + .../elrgo_s/keymaps/default/config.h | 22 + .../elrgo_s/keymaps/default/keymap.c | 58 + keyboards/handwired/elrgo_s/readme.md | 28 + keyboards/handwired/elrgo_s/rules.mk | 20 + keyboards/handwired/ergocheap/ergocheap.h | 21 +- keyboards/handwired/ergocheap/info.json | 82 +- .../ergocheap/keymaps/default/keymap.c | 22 +- .../handwired/ergocheap/keymaps/via/keymap.c | 44 +- keyboards/handwired/ergocheap/rules.mk | 6 +- keyboards/handwired/evk/v1_3/info.json | 187 +- keyboards/handwired/evk/v1_3/rules.mk | 5 +- keyboards/handwired/evk/v1_3/v1_3.c | 14 - keyboards/handwired/fc200rt_qmk/config.h | 53 - keyboards/handwired/fc200rt_qmk/info.json | 4 +- keyboards/handwired/fc200rt_qmk/rules.mk | 15 +- keyboards/handwired/fivethirteen/config.h | 53 +- .../handwired/fivethirteen/fivethirteen.c | 7 - .../handwired/fivethirteen/fivethirteen.h | 30 +- keyboards/handwired/fivethirteen/info.json | 2 - keyboards/handwired/fivethirteen/rules.mk | 25 +- keyboards/handwired/floorboard/config.h | 73 - keyboards/handwired/floorboard/info.json | 2 - keyboards/handwired/floorboard/rules.mk | 8 +- .../handwired/frankie_macropad/info.json | 2 - .../frankie_macropad/keymaps/default/config.h | 19 + keyboards/handwired/frankie_macropad/rules.mk | 5 +- keyboards/handwired/frenchdev/frenchdev.h | 3 - keyboards/handwired/frenchdev/info.json | 2 - .../frenchdev/keymaps/default/keymap.c | 15 +- keyboards/handwired/frenchdev/rules.mk | 25 +- keyboards/handwired/freoduo/info.json | 2 - keyboards/handwired/freoduo/rules.mk | 9 +- keyboards/handwired/fruity60/fruity60.c | 35 - keyboards/handwired/fruity60/info.json | 2 - keyboards/handwired/fruity60/rules.mk | 25 +- keyboards/handwired/gamenum/config.h | 53 +- keyboards/handwired/gamenum/gamenum.h | 30 +- keyboards/handwired/gamenum/info.json | 2 - keyboards/handwired/gamenum/rules.mk | 24 +- keyboards/handwired/hacked_motospeed/config.h | 73 - .../hacked_motospeed/hacked_motospeed.c | 27 - .../handwired/hacked_motospeed/info.json | 4 +- .../hacked_motospeed/keymaps/default/keymap.c | 12 - keyboards/handwired/hacked_motospeed/rules.mk | 27 +- keyboards/handwired/heisenberg/config.h | 73 - keyboards/handwired/heisenberg/info.json | 3 - keyboards/handwired/heisenberg/rules.mk | 16 +- keyboards/handwired/hexon38/info.json | 2 - .../hexon38/keymaps/default/keymap.c | 2 - keyboards/handwired/hexon38/rules.mk | 16 +- keyboards/handwired/hnah108/config.h | 48 + keyboards/handwired/hnah108/info.json | 2 - keyboards/handwired/hnah108/rules.mk | 5 +- keyboards/handwired/hnah40/config.h | 71 - keyboards/handwired/hnah40/hnah40.c | 27 - keyboards/handwired/hnah40/info.json | 2 - keyboards/handwired/hnah40/rules.mk | 26 +- keyboards/handwired/hnah40rgb/config.h | 50 +- keyboards/handwired/hnah40rgb/info.json | 4 - keyboards/handwired/hnah40rgb/rules.mk | 15 +- keyboards/handwired/ibm122m/config.h | 68 - keyboards/handwired/ibm122m/ibm122m.c | 27 - keyboards/handwired/ibm122m/info.json | 2 - .../ibm122m/keymaps/default/keymap.c | 17 - keyboards/handwired/ibm122m/rules.mk | 24 +- keyboards/handwired/ibm_wheelwriter/info.json | 2 - keyboards/handwired/ibm_wheelwriter/rules.mk | 5 +- keyboards/handwired/jn68m/info.json | 2 - keyboards/handwired/jn68m/jn68m.c | 21 - keyboards/handwired/jn68m/jn68m.h | 48 +- .../handwired/jn68m/keymaps/default/keymap.c | 12 - keyboards/handwired/jn68m/rules.mk | 24 +- keyboards/handwired/jopr/config.h | 2 +- keyboards/handwired/jopr/info.json | 3 - keyboards/handwired/jopr/jopr.c | 4 - keyboards/handwired/jopr/rules.mk | 16 +- keyboards/handwired/jot50/info.json | 2 - keyboards/handwired/jot50/jot50.c | 5 - .../handwired/jot50/keymaps/default/keymap.c | 3 - keyboards/handwired/jot50/rules.mk | 23 +- keyboards/handwired/jotanck/info.json | 2 - keyboards/handwired/jotanck/jotanck.c | 4 - keyboards/handwired/jotanck/rules.mk | 23 +- keyboards/handwired/jotpad16/info.json | 2 - keyboards/handwired/jotpad16/jotpad16.c | 5 - keyboards/handwired/jotpad16/rules.mk | 23 +- .../handwired/jtallbean/split_65/config.h | 73 - .../handwired/jtallbean/split_65/info.json | 2 - .../handwired/jtallbean/split_65/rules.mk | 15 +- keyboards/handwired/juliet/config.h | 73 - keyboards/handwired/juliet/info.json | 4 +- keyboards/handwired/juliet/rules.mk | 16 +- keyboards/handwired/k8split/info.json | 2 - keyboards/handwired/k8split/rules.mk | 13 +- keyboards/handwired/k_numpad17/info.json | 2 - keyboards/handwired/k_numpad17/rules.mk | 13 +- keyboards/handwired/kbod/config.h | 48 - keyboards/handwired/kbod/info.json | 2 - keyboards/handwired/kbod/kbod.c | 27 - keyboards/handwired/kbod/kbod.h | 33 +- .../handwired/kbod/keymaps/default/rules.mk | 8 +- keyboards/handwired/kbod/rules.mk | 24 +- keyboards/handwired/ks63/info.json | 2 - keyboards/handwired/ks63/rules.mk | 5 +- keyboards/handwired/lagrange/info.json | 2 - keyboards/handwired/lagrange/rules.mk | 5 +- keyboards/handwired/leftynumpad/info.json | 2 - keyboards/handwired/leftynumpad/rules.mk | 5 +- keyboards/handwired/lovelive9/info.json | 2 - keyboards/handwired/lovelive9/lovelive9.c | 6 - keyboards/handwired/lovelive9/rules.mk | 23 +- keyboards/handwired/magicforce61/config.h | 48 - keyboards/handwired/magicforce61/info.json | 2 - .../handwired/magicforce61/magicforce61.c | 7 - keyboards/handwired/magicforce61/rules.mk | 24 +- keyboards/handwired/magicforce68/config.h | 53 +- keyboards/handwired/magicforce68/info.json | 2 - .../handwired/magicforce68/magicforce68.c | 7 - .../handwired/magicforce68/magicforce68.h | 29 +- keyboards/handwired/magicforce68/rules.mk | 24 +- keyboards/handwired/marauder/config.h | 16 +- keyboards/handwired/marauder/info.json | 3 - .../handwired/marauder/keymaps/orvia/keymap.c | 199 + .../handwired/marauder/keymaps/orvia/rules.mk | 4 + .../handwired/marauder/keymaps/via/keymap.c | 52 + .../handwired/marauder/keymaps/via/rules.mk | 1 + keyboards/handwired/marauder/marauder.c | 3 - keyboards/handwired/marauder/marauder.h | 3 - keyboards/handwired/marauder/readme.md | 4 +- keyboards/handwired/marauder/rules.mk | 12 +- .../handwired/mechboards_micropad/config.h | 73 - .../handwired/mechboards_micropad/info.json | 4 +- .../keymaps/default/keymap.c | 8 - .../mechboards_micropad/mechboards_micropad.c | 27 - .../handwired/mechboards_micropad/rules.mk | 24 +- keyboards/handwired/minorca/info.json | 2 - .../minorca/keymaps/ridingqwerty/rules.mk | 2 +- keyboards/handwired/minorca/rules.mk | 16 +- keyboards/handwired/ms_sculpt_mobile/config.h | 5 +- .../handwired/ms_sculpt_mobile/info.json | 2 - .../ms_sculpt_mobile/keymaps/default/keymap.c | 16 - .../ms_sculpt_mobile/keymaps/default/rules.mk | 8 +- .../keymaps/milestogo/rules.mk | 2 +- .../ms_sculpt_mobile/ms_sculpt_mobile.h | 73 +- keyboards/handwired/ms_sculpt_mobile/rules.mk | 27 +- keyboards/handwired/myskeeb/info.json | 148 +- .../myskeeb/keymaps/default/keymap.c | 11 +- .../myskeeb/keymaps/default}/rules.mk | 0 keyboards/handwired/myskeeb/myskeeb.h | 16 +- keyboards/handwired/myskeeb/oled.c | 191 +- keyboards/handwired/myskeeb/readme.md | 7 + keyboards/handwired/myskeeb/rules.mk | 20 +- keyboards/handwired/nicekey/config.h | 5 +- keyboards/handwired/nicekey/info.json | 2 - .../nicekey/keymaps/default/keymap.c | 187 +- keyboards/handwired/nicekey/nicekey.h | 9 +- keyboards/handwired/nicekey/readme.md | 9 +- keyboards/handwired/nicekey/rules.mk | 26 +- keyboards/handwired/not_so_minidox/config.h | 5 +- keyboards/handwired/not_so_minidox/i2c.h | 5 +- keyboards/handwired/not_so_minidox/info.json | 3 - .../handwired/not_so_minidox/not_so_minidox.h | 37 +- keyboards/handwired/not_so_minidox/rules.mk | 22 +- keyboards/handwired/not_so_minidox/serial.h | 5 +- .../handwired/not_so_minidox/split_util.h | 5 +- keyboards/handwired/novem/info.json | 2 - keyboards/handwired/novem/rules.mk | 15 +- keyboards/handwired/nozbe_macro/config.h | 57 + keyboards/handwired/nozbe_macro/info.json | 15 + .../nozbe_macro/keymaps/default/keymap.c | 31 + .../nozbe_macro/keymaps/default/readme.md | 1 + keyboards/handwired/nozbe_macro/nozbe_macro.c | 17 + keyboards/handwired/nozbe_macro/nozbe_macro.h | 25 + keyboards/handwired/nozbe_macro/readme.md | 26 + keyboards/handwired/nozbe_macro/rules.mk | 19 + keyboards/handwired/numpad20/config.h | 53 +- keyboards/handwired/numpad20/info.json | 2 - keyboards/handwired/numpad20/numpad20.c | 7 - keyboards/handwired/numpad20/numpad20.h | 27 +- keyboards/handwired/numpad20/rules.mk | 24 +- .../handwired/obuwunkunubi/spaget/info.json | 2 - .../spaget/keymaps/default/keymap.c | 5 +- .../handwired/obuwunkunubi/spaget/rules.mk | 17 +- .../handwired/oem_ansi_fullsize/config.h | 159 + .../handwired/oem_ansi_fullsize/info.json | 120 + .../keymaps/default/keymap.c | 30 + .../keymaps/default/readme.md | 1 + .../oem_ansi_fullsize/oem_ansi_fullsize.c | 17 + .../oem_ansi_fullsize/oem_ansi_fullsize.h | 72 + .../handwired/oem_ansi_fullsize/readme.md | 49 + .../handwired/oem_ansi_fullsize/rules.mk | 21 + .../handwired/oem_iso_fullsize/info.json | 2 - keyboards/handwired/oem_iso_fullsize/rules.mk | 5 +- .../onekey/blackpill_f401/blackpill_f401.c | 2 +- .../handwired/onekey/blackpill_f401/chconf.h | 1 - .../handwired/onekey/blackpill_f401/config.h | 8 +- .../handwired/onekey/blackpill_f401/halconf.h | 1 - .../handwired/onekey/blackpill_f401/mcuconf.h | 1 + .../handwired/onekey/blackpill_f401/readme.md | 4 +- .../handwired/onekey/blackpill_f401/rules.mk | 5 +- .../handwired/onekey/blackpill_f411/chconf.h | 1 - .../handwired/onekey/blackpill_f411/config.h | 8 +- .../handwired/onekey/blackpill_f411/halconf.h | 1 - .../handwired/onekey/blackpill_f411/mcuconf.h | 1 + .../handwired/onekey/blackpill_f411/readme.md | 4 +- .../handwired/onekey/blackpill_f411/rules.mk | 5 +- .../onekey/blackpill_f411_tinyuf2/config.h | 8 +- .../onekey/blackpill_f411_tinyuf2/mcuconf.h | 1 + .../onekey/blackpill_f411_tinyuf2/readme.md | 6 +- .../onekey/blackpill_f411_tinyuf2/rules.mk | 5 +- keyboards/handwired/onekey/bluepill/chconf.h | 1 - keyboards/handwired/onekey/bluepill/config.h | 8 +- keyboards/handwired/onekey/bluepill/halconf.h | 1 - keyboards/handwired/onekey/bluepill/mcuconf.h | 1 - keyboards/handwired/onekey/bluepill/readme.md | 2 +- keyboards/handwired/onekey/config.h | 32 +- keyboards/handwired/onekey/elite_c/config.h | 2 + keyboards/handwired/onekey/elite_c/readme.md | 2 +- keyboards/handwired/onekey/elite_c/rules.mk | 7 - keyboards/handwired/onekey/info.json | 4 +- .../handwired/onekey/keymaps/console/keymap.c | 20 + .../onekey/keymaps/digitizer/keymap.c | 38 + .../onekey/keymaps/digitizer/rules.mk | 1 + .../onekey/keymaps/joystick/rules.mk | 2 +- .../handwired/onekey/keymaps/oled/keymap.c | 3 +- .../handwired/onekey/keymaps/oled/rules.mk | 3 +- .../handwired/onekey/keymaps/quine/rules.mk | 1 - keyboards/handwired/onekey/onekey.c | 2 +- keyboards/handwired/onekey/promicro/config.h | 2 + keyboards/handwired/onekey/promicro/rules.mk | 7 - keyboards/handwired/onekey/proton_c/config.h | 10 +- keyboards/handwired/onekey/proton_c/readme.md | 2 +- keyboards/handwired/onekey/readme.md | 16 +- keyboards/handwired/onekey/rules.mk | 18 +- .../onekey/sipeed_longan_nano/chconf.h | 23 + .../onekey/sipeed_longan_nano/config.h | 37 + .../onekey/sipeed_longan_nano/halconf.h | 23 + .../onekey/sipeed_longan_nano/mcuconf.h | 29 + .../onekey/sipeed_longan_nano/readme.md | 5 + .../onekey/sipeed_longan_nano/rules.mk | 11 + .../handwired/onekey/stm32f0_disco/chconf.h | 1 - .../handwired/onekey/stm32f0_disco/config.h | 10 +- .../handwired/onekey/stm32f0_disco/halconf.h | 1 - .../handwired/onekey/stm32f0_disco/mcuconf.h | 1 - .../handwired/onekey/stm32f0_disco/readme.md | 2 +- .../onekey/stm32f405_feather/config.h | 25 + .../onekey/stm32f405_feather/readme.md | 7 + .../onekey/stm32f405_feather/rules.mk | 8 + keyboards/handwired/onekey/teensy_2/config.h | 2 + keyboards/handwired/onekey/teensy_2/readme.md | 2 +- keyboards/handwired/onekey/teensy_2/rules.mk | 7 - .../handwired/onekey/teensy_2pp/config.h | 2 + .../handwired/onekey/teensy_2pp/readme.md | 2 +- .../handwired/onekey/teensy_2pp/rules.mk | 7 - keyboards/handwired/onekey/teensy_32/chconf.h | 1 - keyboards/handwired/onekey/teensy_32/config.h | 6 +- .../handwired/onekey/teensy_32/halconf.h | 1 - keyboards/handwired/onekey/teensy_lc/chconf.h | 1 - keyboards/handwired/onekey/teensy_lc/config.h | 6 +- .../handwired/onekey/teensy_lc/halconf.h | 1 - keyboards/handwired/ortho5x13/config.h | 53 +- keyboards/handwired/ortho5x13/info.json | 2 - keyboards/handwired/ortho5x13/ortho5x13.c | 7 - keyboards/handwired/ortho5x13/rules.mk | 24 +- keyboards/handwired/ortho5x14/info.json | 4 +- keyboards/handwired/ortho5x14/readme.md | 2 +- keyboards/handwired/ortho5x14/rules.mk | 5 +- keyboards/handwired/owlet60/config.h | 73 - keyboards/handwired/owlet60/info.json | 6 - .../owlet60/keymaps/default/keymap.c | 12 - .../owlet60/keymaps/oled_testing/keymap.c | 17 +- .../owlet60/keymaps/oled_testing/rules.mk | 3 +- keyboards/handwired/owlet60/owlet60.c | 37 - keyboards/handwired/owlet60/rules.mk | 24 +- keyboards/handwired/p1800fl/config.h | 71 - keyboards/handwired/p1800fl/info.json | 99 - .../p1800fl/keymaps/default/keymap.c | 41 - keyboards/handwired/p1800fl/readme.md | 15 - keyboards/handwired/p1800fl/rules.mk | 30 - keyboards/handwired/p65rgb/config.h | 50 +- keyboards/handwired/p65rgb/info.json | 2 - keyboards/handwired/p65rgb/rules.mk | 16 +- keyboards/handwired/pilcrow/config.h | 53 +- keyboards/handwired/pilcrow/info.json | 2 - .../pilcrow/keymaps/default/keymap.c | 16 - .../pilcrow/keymaps/default/rules.mk | 8 +- keyboards/handwired/pilcrow/pilcrow.c | 27 - keyboards/handwired/pilcrow/pilcrow.h | 8 +- keyboards/handwired/pilcrow/rules.mk | 24 +- keyboards/handwired/pill60/info.json | 2 - .../handwired/pill60/keymaps/default/keymap.c | 5 +- keyboards/handwired/pill60/rules.mk | 9 +- keyboards/handwired/postageboard/info.json | 2 - .../handwired/postageboard/mini/rules.mk | 15 +- keyboards/handwired/postageboard/r1/rules.mk | 15 +- keyboards/handwired/prime_exl/info.json | 2 - .../prime_exl/keymaps/default/keymap.c | 5 - .../handwired/prime_exl/keymaps/via/keymap.c | 7 +- keyboards/handwired/prime_exl/prime_exl.c | 28 - keyboards/handwired/prime_exl/prime_exl.h | 38 +- keyboards/handwired/prime_exl/rules.mk | 24 +- keyboards/handwired/prime_exl_plus/info.json | 2 - keyboards/handwired/prime_exl_plus/rules.mk | 16 +- keyboards/handwired/prkl30/feather/config.h | 3 - keyboards/handwired/prkl30/feather/rules.mk | 14 +- keyboards/handwired/prkl30/info.json | 2 - keyboards/handwired/prkl30/promicro/rules.mk | 10 +- keyboards/handwired/promethium/config.h | 370 +- keyboards/handwired/promethium/info.json | 2 - .../promethium/keymaps/default/rules.mk | 11 +- .../promethium/keymaps/priyadi/rules.mk | 4 +- keyboards/handwired/promethium/promethium.c | 13 - keyboards/handwired/promethium/promethium.h | 36 +- keyboards/handwired/promethium/rules.mk | 28 +- keyboards/handwired/pterodactyl/config.h | 4 - keyboards/handwired/pterodactyl/info.json | 3 - keyboards/handwired/pterodactyl/matrix.c | 2 +- keyboards/handwired/pterodactyl/rules.mk | 8 +- keyboards/handwired/pteron/info.json | 2 - .../handwired/pteron/keymaps/FSund/keymap.c | 22 +- keyboards/handwired/pteron/rules.mk | 18 +- keyboards/handwired/pteron38/info.json | 2 - keyboards/handwired/pteron38/rules.mk | 5 +- keyboards/handwired/pteron44/info.json | 2 - keyboards/handwired/pteron44/rules.mk | 5 +- keyboards/handwired/pytest/basic/info.json | 13 +- keyboards/handwired/pytest/config.h | 7 - keyboards/handwired/pytest/info.json | 10 + .../{xd002 => handwired/pytest/macro}/.noci | 0 keyboards/handwired/pytest/macro/info.json | 10 + .../pytest/macro/keymaps/default/keymap.json | 15 + .../pytest/macro/readme.md} | 0 keyboards/handwired/pytest/macro/rules.mk | 1 + keyboards/handwired/qc60/info.json | 10 - keyboards/handwired/qc60/proto/proto.c | 4 - keyboards/handwired/qc60/qc60.h | 9 +- keyboards/handwired/qc60/rules.mk | 23 +- keyboards/handwired/reddot/config.h | 53 +- keyboards/handwired/reddot/info.json | 2 - .../handwired/reddot/keymaps/default/keymap.c | 8 +- keyboards/handwired/reddot/reddot.c | 6 - keyboards/handwired/reddot/rules.mk | 41 +- keyboards/handwired/retro_refit/config.h | 47 +- keyboards/handwired/retro_refit/info.json | 3 - keyboards/handwired/retro_refit/rules.mk | 21 +- keyboards/handwired/riblee_f401/info.json | 2 - keyboards/handwired/riblee_f401/rules.mk | 5 +- keyboards/handwired/riblee_f411/info.json | 2 - keyboards/handwired/riblee_f411/rules.mk | 8 +- keyboards/handwired/rs60/info.json | 2 - keyboards/handwired/rs60/rules.mk | 16 +- keyboards/handwired/selene/info.json | 2 - keyboards/handwired/selene/rules.mk | 5 +- keyboards/handwired/sick68/config.h | 73 - keyboards/handwired/sick68/info.json | 3 - .../handwired/sick68/keymaps/default/keymap.c | 15 - keyboards/handwired/sick68/rules.mk | 15 +- keyboards/handwired/sick_pad/info.json | 2 - keyboards/handwired/sick_pad/rules.mk | 5 +- keyboards/handwired/slash/info.json | 2 - keyboards/handwired/slash/rules.mk | 19 +- keyboards/handwired/sono1/info.json | 2 - keyboards/handwired/sono1/rules.mk | 5 +- keyboards/handwired/space_oddity/info.json | 2 - .../space_oddity/keymaps/default/keymap.c | 40 - .../space_oddity/keymaps/default/rules.mk | 1 + keyboards/handwired/space_oddity/rules.mk | 19 +- keyboards/handwired/split65/info.json | 85 + .../split65/keymaps/default/keymap.c | 65 + .../handwired/split65/keymaps/via/keymap.c | 65 + .../handwired/split65/keymaps/via/rules.mk | 1 + keyboards/handwired/split65/promicro/config.h | 53 + .../handwired/split65/promicro/promicro.c | 16 + .../handwired/split65/promicro/promicro.h | 38 + keyboards/handwired/split65/promicro/rules.mk | 21 + keyboards/handwired/split65/readme.md | 25 + keyboards/handwired/split65/split65.c | 134 + keyboards/handwired/split65/split65.h | 24 + keyboards/handwired/split65/stm32/config.h | 60 + keyboards/handwired/split65/stm32/halconf.h | 21 + keyboards/handwired/split65/stm32/rules.mk | 23 + keyboards/handwired/split65/stm32/stm32.c | 16 + keyboards/handwired/split65/stm32/stm32.h | 38 + keyboards/handwired/split89/info.json | 4 +- .../split89/keymaps/default/keymap.c | 14 +- keyboards/handwired/split89/rules.mk | 5 +- keyboards/handwired/split89/split89.h | 12 +- keyboards/handwired/splittest/info.json | 2 - .../handwired/splittest/promicro/rules.mk | 7 - keyboards/handwired/splittest/rules.mk | 16 +- .../handwired/splittest/teensy_2/rules.mk | 7 - keyboards/handwired/steamvan/info.json | 2 - .../steamvan/keymaps/default/keymap.c | 16 - keyboards/handwired/steamvan/rev1/rules.mk | 11 +- keyboards/handwired/sticc14/config.h | 73 - keyboards/handwired/sticc14/info.json | 2 - keyboards/handwired/sticc14/rules.mk | 15 +- keyboards/handwired/sticc14/sticc14.c | 35 - keyboards/handwired/stream_cheap/2x3/config.h | 10 +- .../handwired/stream_cheap/2x3/info.json | 2 - .../handwired/stream_cheap/2x3/readme.md | 3 + keyboards/handwired/stream_cheap/2x3/rules.mk | 7 +- keyboards/handwired/stream_cheap/2x4/2x4.h | 4 +- keyboards/handwired/stream_cheap/2x4/config.h | 16 +- .../handwired/stream_cheap/2x4/info.json | 2 - .../stream_cheap/2x4/keymaps/via/keymap.c | 38 + .../stream_cheap/2x4/keymaps/via/rules.mk | 1 + .../handwired/stream_cheap/2x4/readme.md | 3 + keyboards/handwired/stream_cheap/2x4/rules.mk | 6 +- keyboards/handwired/stream_cheap/2x5/config.h | 12 +- .../handwired/stream_cheap/2x5/info.json | 2 - .../handwired/stream_cheap/2x5/readme.md | 3 + keyboards/handwired/stream_cheap/2x5/rules.mk | 5 +- keyboards/handwired/stream_cheap/readme.md | 1 + keyboards/handwired/swiftrax/astro65/config.h | 10 +- .../handwired/swiftrax/astro65/info.json | 2 - keyboards/handwired/swiftrax/astro65/rules.mk | 5 +- keyboards/handwired/swiftrax/bebol/info.json | 4 +- keyboards/handwired/swiftrax/bebol/rules.mk | 5 +- .../handwired/swiftrax/beegboy/info.json | 2 - keyboards/handwired/swiftrax/beegboy/rules.mk | 5 +- .../handwired/swiftrax/cowfish/info.json | 4 +- keyboards/handwired/swiftrax/cowfish/rules.mk | 13 +- .../handwired/swiftrax/equator/info.json | 4 +- keyboards/handwired/swiftrax/equator/rules.mk | 5 +- keyboards/handwired/swiftrax/joypad/info.json | 2 - keyboards/handwired/swiftrax/joypad/rules.mk | 5 +- .../swiftrax/koalafications/info.json | 2 - .../koalafications/keymaps/default/keymap.c | 33 +- .../koalafications/keymaps/via/keymap.c | 33 +- .../swiftrax/koalafications/rules.mk | 8 +- keyboards/handwired/swiftrax/nodu/info.json | 2 - .../swiftrax/nodu/keymaps/default/keymap.c | 18 +- .../swiftrax/nodu/keymaps/via/keymap.c | 28 +- keyboards/handwired/swiftrax/nodu/nodu.h | 10 +- keyboards/handwired/swiftrax/nodu/rules.mk | 5 +- .../handwired/swiftrax/pandamic/info.json | 2 - .../handwired/swiftrax/pandamic/rules.mk | 5 +- .../handwired/swiftrax/the_galleon/info.json | 2 - .../the_galleon/keymaps/default/keymap.c | 45 +- .../swiftrax/the_galleon/keymaps/via/keymap.c | 45 +- .../handwired/swiftrax/the_galleon/rules.mk | 8 +- .../handwired/swiftrax/unsplit/info.json | 4 +- keyboards/handwired/swiftrax/unsplit/rules.mk | 5 +- keyboards/handwired/swiftrax/walter/info.json | 4 +- keyboards/handwired/swiftrax/walter/rules.mk | 5 +- .../handwired/symmetric70_proto/config.h | 150 - .../symmetric70_proto/debug_config.h | 33 + .../handwired/symmetric70_proto/info.json | 2 - .../symmetric70_proto/local_features.mk | 108 + .../handwired/symmetric70_proto/matrix.c | 226 -- .../matrix_debug/gpio_extr.h | 10 + .../symmetric70_proto/matrix_debug/matrix.c | 329 ++ .../symmetric70_proto/matrix_debug/readme.md | 200 + .../symmetric70_proto/matrix_fast/cpp_map.h | 53 + .../symmetric70_proto/matrix_fast/gpio_extr.h | 28 + .../symmetric70_proto/matrix_fast/matrix.c | 234 ++ .../matrix_fast/matrix_config_expand.c | 234 ++ .../matrix_fast/matrix_extension_74hc15x.c | 72 + .../matrix_fast/matrix_extr.h | 36 + .../symmetric70_proto/matrix_fast/readme.md | 168 + .../matrix_fast/test_config.h | 21 + .../matrix_fast/test_config_74hc157.h | 28 + .../matrix_fast/test_config_direct.h | 34 + .../handwired/symmetric70_proto/post_rules.mk | 2 + .../symmetric70_proto/promicro/config.h | 157 + .../symmetric70_proto/promicro/fast/config.h | 52 + .../symmetric70_proto/promicro/fast/readme.md | 1 + .../symmetric70_proto/promicro/fast/rules.mk | 3 + .../promicro/normal/config.h | 41 + .../promicro/normal/readme.md | 1 + .../promicro/normal/rules.mk | 3 + .../symmetric70_proto/promicro/readme.md | 27 + .../symmetric70_proto/promicro/rules.mk | 19 + .../symmetric70_proto/proton_c/config.h | 165 + .../symmetric70_proto/proton_c/fast/config.h | 44 + .../symmetric70_proto/proton_c/fast/readme.md | 1 + .../symmetric70_proto/proton_c/fast/rules.mk | 3 + .../proton_c/normal/config.h | 36 + .../proton_c/normal/readme.md | 1 + .../proton_c/normal/rules.mk | 3 + .../symmetric70_proto/proton_c/proton_c.c | 12 + .../symmetric70_proto/proton_c/readme.md | 26 + .../symmetric70_proto/proton_c/rules.mk | 20 + .../handwired/symmetric70_proto/readme.md | 16 +- .../handwired/symmetric70_proto/rules.mk | 27 - keyboards/handwired/symmetry60/info.json | 2 - keyboards/handwired/symmetry60/rules.mk | 18 +- keyboards/handwired/t111/info.json | 2 - keyboards/handwired/t111/rules.mk | 5 +- keyboards/handwired/tennie/config.h | 70 +- keyboards/handwired/tennie/info.json | 2 - keyboards/handwired/tennie/rules.mk | 24 +- keyboards/handwired/tennie/tennie.c | 24 - keyboards/handwired/terminus_mini/config.h | 73 +- keyboards/handwired/terminus_mini/info.json | 2 - .../terminus_mini/keymaps/default/keymap.c | 13 - .../terminus_mini/keymaps/default/rules.mk | 8 +- keyboards/handwired/terminus_mini/rules.mk | 23 +- .../handwired/terminus_mini/terminus_mini.c | 27 - .../handwired/terminus_mini/terminus_mini.h | 27 +- keyboards/handwired/trackpoint/config.h | 10 +- keyboards/handwired/trackpoint/info.json | 2 - keyboards/handwired/trackpoint/rules.mk | 23 +- keyboards/handwired/trackpoint/trackpoint.c | 4 - .../tractyl_manuform/4x6_right/4x6_right.c | 67 + .../tractyl_manuform/4x6_right/4x6_right.h | 47 + .../tractyl_manuform/4x6_right/config.h | 93 + .../tractyl_manuform/4x6_right/info.json | 73 + .../4x6_right/keymaps/default/keymap.c | 62 + .../4x6_right/keymaps/drashna/config.h | 36 + .../4x6_right/keymaps/drashna/keymap.c | 217 ++ .../4x6_right/keymaps/drashna/rules.mk | 9 + .../4x6_right}/readme.md | 0 .../tractyl_manuform/4x6_right/rules.mk | 30 + .../tractyl_manuform/5x6_right/5x6_right.c | 39 + .../tractyl_manuform/5x6_right/5x6_right.h | 61 + .../tractyl_manuform/5x6_right/config.h | 56 + .../5x6_right/elite_c/config.h | 52 + .../5x6_right/elite_c/elite_c.h | 19 + .../5x6_right/elite_c/rules.mk | 11 + .../tractyl_manuform/5x6_right/f303/config.h | 104 + .../tractyl_manuform/5x6_right/f303/f303.c | 17 + .../tractyl_manuform/5x6_right/f303/f303.h | 19 + .../tractyl_manuform/5x6_right/f303/halconf.h | 27 + .../tractyl_manuform/5x6_right/f303/mcuconf.h | 40 + .../tractyl_manuform/5x6_right/f303/readme.md | 24 + .../tractyl_manuform/5x6_right/f303/rules.mk | 13 + .../tractyl_manuform/5x6_right/f411/chconf.h | 38 + .../tractyl_manuform/5x6_right/f411/config.h | 112 + .../tractyl_manuform/5x6_right/f411/f411.c | 33 + .../tractyl_manuform/5x6_right/f411/f411.h | 19 + .../tractyl_manuform/5x6_right/f411/halconf.h | 26 + .../tractyl_manuform/5x6_right/f411/mcuconf.h | 55 + .../tractyl_manuform/5x6_right/f411/readme.md | 37 + .../tractyl_manuform/5x6_right/f411/rules.mk | 16 + .../tractyl_manuform/5x6_right/info.json | 73 + .../5x6_right/keymaps/default/keymap.c | 63 + .../5x6_right/keymaps/drashna/config.h | 22 + .../5x6_right/keymaps/drashna/keymap.c | 423 ++ .../keymaps/drashna/rgblight_breathe_table.h | 117 + .../5x6_right/keymaps/drashna/rules.mk | 14 + .../tractyl_manuform/5x6_right/readme.md | 21 + .../tractyl_manuform/5x6_right/rules.mk | 24 + .../5x6_right/teensy2pp/config.h | 55 + .../5x6_right/teensy2pp/rules.mk | 5 + .../5x6_right/teensy2pp/teensy2pp.h | 19 + keyboards/handwired/tractyl_manuform/config.h | 42 + .../handwired/tractyl_manuform/post_config.h | 96 + .../handwired/tractyl_manuform/readme.md | 25 + .../handwired/tractyl_manuform/tm_sync.c | 179 + .../tractyl_manuform/tractyl_manuform.c | 144 + .../tractyl_manuform/tractyl_manuform.h | 52 + keyboards/handwired/traveller/config.h | 130 +- keyboards/handwired/traveller/info.json | 110 +- .../traveller/keymaps/default/keymap.c | 404 +- .../traveller/keymaps/default/readme.md | 2 - keyboards/handwired/traveller/readme.md | 40 +- keyboards/handwired/traveller/rules.mk | 42 +- keyboards/handwired/traveller/traveller.c | 61 +- keyboards/handwired/traveller/traveller.h | 37 +- keyboards/handwired/tritium_numpad/info.json | 5 - .../tritium_numpad/keymaps/blu/keymap.c | 22 +- keyboards/handwired/tritium_numpad/rules.mk | 24 +- keyboards/handwired/twadlee/tp69/config.h | 72 - keyboards/handwired/twadlee/tp69/info.json | 2 - keyboards/handwired/twadlee/tp69/rules.mk | 8 +- keyboards/handwired/unicomp_mini_m/info.json | 549 +-- keyboards/handwired/unicomp_mini_m/rules.mk | 5 +- keyboards/handwired/unk/info.json | 2 - keyboards/handwired/unk/rules.mk | 13 +- keyboards/handwired/videowriter/info.json | 2 - keyboards/handwired/videowriter/rules.mk | 15 +- keyboards/handwired/wabi/info.json | 3 - keyboards/handwired/wabi/rules.mk | 5 +- keyboards/handwired/woodpad/info.json | 2 - keyboards/handwired/woodpad/rules.mk | 5 +- keyboards/handwired/wulkan/info.json | 3 - .../handwired/wulkan/keymaps/default/keymap.c | 28 +- keyboards/handwired/wulkan/rules.mk | 6 +- keyboards/handwired/wulkan/wulkan.c | 5 - keyboards/handwired/xealous/info.json | 3 - keyboards/handwired/xealous/rev1/config.h | 4 +- keyboards/handwired/xealous/rev1/rev1.c | 4 - keyboards/handwired/xealous/rev1/rev1.h | 40 +- keyboards/handwired/xealous/rules.mk | 27 +- keyboards/handwired/xealousbrown/config.h | 7 + keyboards/handwired/xealousbrown/info.json | 2 - keyboards/handwired/xealousbrown/matrix.c | 9 +- keyboards/handwired/xealousbrown/readme.md | 5 +- keyboards/handwired/xealousbrown/rules.mk | 7 +- .../handwired/xealousbrown/xealousbrown.c | 15 +- keyboards/handwired/z150/info.json | 4 +- keyboards/handwired/z150/rules.mk | 5 +- keyboards/handwired/zergo/info.json | 2 - keyboards/handwired/zergo/rules.mk | 5 +- keyboards/hardlineworks/otd_plus/config.h | 4 +- keyboards/hardlineworks/otd_plus/info.json | 2 - keyboards/hardlineworks/otd_plus/otd_plus.c | 11 - keyboards/hardlineworks/otd_plus/rules.mk | 5 +- keyboards/hecomi/alpha/config.h | 69 - keyboards/hecomi/alpha/info.json | 3 - keyboards/hecomi/alpha/rules.mk | 18 +- keyboards/hecomi/hecomi.c | 27 - keyboards/hecomi/keymaps/default/keymap.c | 12 - keyboards/hecomi/rules.mk | 18 +- keyboards/heliar/wm1_hotswap/info.json | 2 - keyboards/heliar/wm1_hotswap/rules.mk | 16 +- keyboards/helix/local_drivers/i2c.h | 5 +- keyboards/helix/local_drivers/serial.h | 5 +- keyboards/helix/local_drivers/ssd1306.h | 5 +- keyboards/helix/pico/info.json | 2 - keyboards/helix/pico/keymaps/biacco/rules.mk | 4 - keyboards/helix/pico/keymaps/default/config.h | 1 - keyboards/helix/pico/keymaps/default/rules.mk | 6 +- keyboards/helix/pico/keymaps/mtei/rules.mk | 4 - keyboards/helix/pico/local_features.mk | 148 - keyboards/helix/pico/pico.c | 5 - keyboards/helix/pico/post_rules.mk | 147 + keyboards/helix/pico/qmk_conf/rules.mk | 2 +- keyboards/helix/pico/rules.mk | 2 - keyboards/helix/pico/split_util.h | 5 +- keyboards/helix/rev1/info.json | 2 - keyboards/helix/rev1/rev1.c | 18 - keyboards/helix/rev1/split_util.h | 5 +- keyboards/helix/rev2/config.h | 4 +- keyboards/helix/rev2/info.json | 2 - .../helix/rev2/keymaps/default/oled_display.c | 7 +- keyboards/helix/rev2/keymaps/default/rules.mk | 6 +- keyboards/helix/rev2/keymaps/edvorakjp/oled.c | 7 +- .../helix/rev2/keymaps/five_rows/config.h | 6 +- .../five_rows/matrix_output_unselect_delay.c | 31 + .../rev2/keymaps/five_rows/oled_display.c | 99 +- .../helix/rev2/keymaps/five_rows/rules.mk | 16 +- .../helix/rev2/keymaps/five_rows_jis/keymap.c | 4 +- .../helix/rev2/keymaps/five_rows_jis/rules.mk | 4 - .../helix/rev2/keymaps/fraanrosi/config.h | 5 +- .../helix/rev2/keymaps/fraanrosi/rules.mk | 5 +- keyboards/helix/rev2/keymaps/froggy/rules.mk | 4 - .../helix/rev2/keymaps/froggy_106/keymap.c | 6 +- .../helix/rev2/keymaps/froggy_106/rules.mk | 4 - .../helix/rev2/keymaps/led_test/rules.mk | 4 - keyboards/helix/rev2/keymaps/xulkal/rules.mk | 3 +- keyboards/helix/rev2/keymaps/yshrsmz/rules.mk | 4 - keyboards/helix/rev2/local_features.mk | 31 +- keyboards/helix/rev2/post_rules.mk | 3 + keyboards/helix/rev2/rev2.c | 5 - .../helix/rev2/serial_config_simpleapi.h | 5 +- keyboards/helix/rev2/split_scomm.h | 5 +- keyboards/helix/rev2/split_util.h | 5 +- keyboards/helix/rev3_4rows/config.h | 75 +- keyboards/helix/rev3_4rows/info.json | 2 - .../helix/rev3_4rows/keymaps/default/keymap.c | 14 - .../rev3_4rows/keymaps/default/oled_display.c | 113 + .../helix/rev3_4rows/keymaps/via/keymap.c | 14 - .../rev3_4rows/keymaps/via/oled_display.c | 113 + keyboards/helix/rev3_4rows/oled_display.c | 124 +- keyboards/helix/rev3_4rows/rev3_4rows.c | 70 +- keyboards/helix/rev3_4rows/rules.mk | 5 +- keyboards/helix/rev3_5rows/config.h | 75 +- keyboards/helix/rev3_5rows/info.json | 2 - .../helix/rev3_5rows/keymaps/default/keymap.c | 14 - .../rev3_5rows/keymaps/default/oled_display.c | 113 + .../rev3_5rows/keymaps/five_rows/config.h | 6 +- .../five_rows/matrix_output_unselect_delay.c | 31 + .../keymaps/five_rows/oled_display.c | 54 +- .../rev3_5rows/keymaps/five_rows/rules.mk | 17 +- .../helix/rev3_5rows/keymaps/via/keymap.c | 14 - .../rev3_5rows/keymaps/via/oled_display.c | 113 + keyboards/helix/rev3_5rows/oled_display.c | 126 +- keyboards/helix/rev3_5rows/rev3_5rows.c | 70 +- keyboards/helix/rev3_5rows/rules.mk | 5 +- keyboards/helix/rules.mk | 16 +- keyboards/hhkb/ansi/info.json | 2 - keyboards/hhkb/ansi/keymaps/cinaeco/rules.mk | 2 +- .../hhkb/ansi/keymaps/shela/keymap_jis2us.h | 6 +- keyboards/hhkb/ansi/matrix.c | 1 + keyboards/hhkb/ansi/post_rules.mk | 18 + keyboards/hhkb/ansi/rules.mk | 35 +- keyboards/hhkb/jp/info.json | 2 - keyboards/hhkb/jp/matrix.c | 1 + keyboards/hhkb/jp/post_rules.mk | 18 + keyboards/hhkb/jp/rules.mk | 35 +- keyboards/hhkb/rn42/battery.h | 5 +- keyboards/hhkb/rn42/rn42.h | 5 +- keyboards/hhkb/rn42/rn42_task.h | 5 +- keyboards/hhkb_lite_2/info.json | 2 - keyboards/hhkb_lite_2/rules.mk | 5 +- keyboards/hid_liber/config.h | 73 +- keyboards/hid_liber/info.json | 2 - keyboards/hid_liber/keymaps/bakageta/rules.mk | 2 +- keyboards/hid_liber/rules.mk | 16 +- keyboards/hidtech/bastyl/info.json | 2 - .../hidtech/bastyl/keymaps/nstickney/keymap.c | 70 + keyboards/hidtech/bastyl/rules.mk | 5 +- keyboards/hifumi/info.json | 2 - keyboards/hifumi/rules.mk | 14 +- keyboards/hineybush/h10/info.json | 2 - keyboards/hineybush/h10/rules.mk | 6 +- keyboards/hineybush/h60/info.json | 2 - keyboards/hineybush/h60/rules.mk | 7 +- keyboards/hineybush/h660s/info.json | 2 - keyboards/hineybush/h660s/rules.mk | 6 +- keyboards/hineybush/h75_singa/config.h | 73 - keyboards/hineybush/h75_singa/info.json | 2 - keyboards/hineybush/h75_singa/rules.mk | 15 +- keyboards/hineybush/h87a/h87a.c | 20 - keyboards/hineybush/h87a/info.json | 3 - .../hineybush/h87a/keymaps/default/keymap.c | 12 - .../hineybush/h87a/keymaps/gam3cat/keymap.c | 2 +- .../hineybush/h87a/keymaps/gam3cat/rules.mk | 3 +- .../hineybush/h87a/keymaps/peott-fr/keymap.c | 27 + keyboards/hineybush/h87a/rules.mk | 20 +- keyboards/hineybush/h88/h88.c | 20 - keyboards/hineybush/h88/info.json | 3 - .../hineybush/h88/keymaps/default/keymap.c | 14 - keyboards/hineybush/h88/rules.mk | 18 +- keyboards/hineybush/hbcp/hbcp.c | 33 - keyboards/hineybush/hbcp/info.json | 4 - .../hineybush/hbcp/keymaps/default/keymap.c | 8 - keyboards/hineybush/hbcp/rules.mk | 18 +- keyboards/hineybush/hineyg80/info.json | 3 - .../hineyg80/keymaps/default/keymap.c | 16 - .../hineybush/hineyg80/keymaps/wkl/keymap.c | 16 - keyboards/hineybush/hineyg80/rules.mk | 18 +- keyboards/hineybush/physix/config.h | 73 - keyboards/hineybush/physix/info.json | 2 - keyboards/hineybush/physix/rules.mk | 15 +- keyboards/hineybush/sm68/config.h | 73 - keyboards/hineybush/sm68/info.json | 2 - keyboards/hineybush/sm68/rules.mk | 15 +- keyboards/hineybush/sm68/sm68.c | 33 - keyboards/holyswitch/southpaw75/info.json | 2 - keyboards/holyswitch/southpaw75/rules.mk | 5 +- keyboards/honeycomb/info.json | 2 - keyboards/honeycomb/rules.mk | 14 +- keyboards/horizon/config.h | 46 + keyboards/horizon/horizon.c | 17 + keyboards/horizon/horizon.h | 41 + keyboards/horizon/info.json | 63 + keyboards/horizon/keymaps/default/keymap.c | 47 + keyboards/horizon/readme.md | 27 + keyboards/horizon/rules.mk | 19 + keyboards/hotdox/hotdox.h | 3 - keyboards/hotdox/info.json | 3 - keyboards/hotdox/keymaps/default/keymap.c | 8 +- keyboards/hotdox/keymaps/imchipwood/keymap.c | 151 + keyboards/hotdox/keymaps/via/keymap.c | 8 +- keyboards/hotdox/rules.mk | 12 +- keyboards/hp69/config.h | 4 + keyboards/hp69/info.json | 2 - keyboards/hp69/keymaps/via/keymap.c | 12 +- keyboards/hp69/rules.mk | 5 +- keyboards/hs60/v1/config.h | 51 +- keyboards/hs60/v1/info.json | 2 - keyboards/hs60/v1/keymaps/ansi/keymap.c | 12 - keyboards/hs60/v1/keymaps/default/keymap.c | 12 - keyboards/hs60/v1/rules.mk | 18 +- keyboards/hs60/v1/v1.c | 18 +- keyboards/hs60/v1/v1.h | 47 +- keyboards/hs60/v2/ansi/info.json | 3 - .../hs60/v2/ansi/keymaps/default/keymap.c | 12 - keyboards/hs60/v2/ansi/keymaps/via/keymap.c | 12 - keyboards/hs60/v2/ansi/rules.mk | 9 +- keyboards/hs60/v2/hhkb/info.json | 2 - .../hs60/v2/hhkb/keymaps/default/keymap.c | 12 - keyboards/hs60/v2/hhkb/keymaps/via/keymap.c | 12 - keyboards/hs60/v2/hhkb/rules.mk | 9 +- keyboards/hs60/v2/iso/info.json | 3 - .../hs60/v2/iso/keymaps/default/keymap.c | 12 - keyboards/hs60/v2/iso/keymaps/via/keymap.c | 12 - keyboards/hs60/v2/iso/rules.mk | 9 +- keyboards/hub16/info.json | 2 - keyboards/hub16/keymaps/peepeetee/rules.mk | 2 +- keyboards/hub16/rules.mk | 8 +- keyboards/hub20/config.h | 97 +- keyboards/hub20/info.json | 2 - .../hub20/keymaps/left_hand_numpad/keymap.c | 11 +- .../hub20/keymaps/right_hand_numpad/keymap.c | 14 +- keyboards/hub20/rules.mk | 5 +- keyboards/ianklug/grooveboard/config.h | 158 + keyboards/ianklug/grooveboard/grooveboard.c | 17 + keyboards/ianklug/grooveboard/grooveboard.h | 33 + keyboards/ianklug/grooveboard/info.json | 15 + .../grooveboard/keymaps/default/keymap.c | 28 + .../grooveboard/keymaps/default/readme.md | 1 + .../ianklug/grooveboard/keymaps/via/keymap.c | 37 + .../ianklug/grooveboard/keymaps/via/readme.md | 1 + .../ianklug/grooveboard/keymaps/via/rules.mk | 2 + keyboards/ianklug/grooveboard/readme.md | 21 + keyboards/ianklug/grooveboard/rules.mk | 19 + keyboards/ibm/model_m_4th_gen/info.json | 16 + .../model_m_4th_gen/keymaps/default/keymap.c | 33 + .../model_m_4th_gen/keymaps/default/readme.md | 1 + .../model_m_4th_gen/overnumpad_1xb/config.h | 76 + .../overnumpad_1xb/overnumpad_1xb.c | 24 + .../overnumpad_1xb/overnumpad_1xb.h | 91 + .../model_m_4th_gen/overnumpad_1xb/readme.md | 26 + .../model_m_4th_gen/overnumpad_1xb/rules.mk | 24 + keyboards/id67/config.h | 67 + keyboards/id67/id67.c | 17 + keyboards/id67/id67.h | 33 + keyboards/id67/info.json | 85 + keyboards/id67/keymaps/default/keymap.c | 35 + keyboards/id67/keymaps/via/keymap.c | 48 + keyboards/id67/keymaps/via/rules.mk | 2 + keyboards/id67/readme.md | 19 + keyboards/id67/rules.mk | 23 + keyboards/id80/config.h | 3 +- keyboards/id80/id80.c | 20 - keyboards/id80/info.json | 2 - keyboards/id80/rules.mk | 16 +- keyboards/id87/config.h | 2 +- keyboards/id87/id87.c | 17 - keyboards/id87/info.json | 2 - keyboards/id87/rules.mk | 5 +- keyboards/idb/idb_60/config.h | 48 - keyboards/idb/idb_60/idb_60.h | 165 +- keyboards/idb/idb_60/info.json | 456 ++- keyboards/idb/idb_60/keymaps/default/keymap.c | 8 +- keyboards/idb/idb_60/keymaps/via/keymap.c | 8 +- keyboards/idb/idb_60/rules.mk | 12 +- keyboards/idobao/id96/config.h | 82 + keyboards/idobao/id96/id96.c | 19 + keyboards/idobao/id96/id96.h | 63 + keyboards/idobao/id96/info.json | 119 + .../idobao/id96/keymaps/default/keymap.c | 90 + keyboards/idobao/id96/keymaps/via/keymap.c | 62 + keyboards/idobao/id96/keymaps/via/rules.mk | 2 + keyboards/idobao/id96/readme.md | 27 + keyboards/idobao/id96/rules.mk | 19 + keyboards/idobo/config.h | 68 - keyboards/idobo/idobo.c | 27 - keyboards/idobo/idobo.h | 29 +- keyboards/idobo/info.json | 2 - keyboards/idobo/keymaps/default/keymap.c | 12 - keyboards/idobo/keymaps/gkbd_orthon/config.h | 20 + keyboards/idobo/keymaps/gkbd_orthon/keymap.c | 78 + keyboards/idobo/keymaps/gkbd_orthon/readme.md | 11 + keyboards/idobo/keymaps/pathnirvana/config.h | 24 + keyboards/idobo/keymaps/pathnirvana/keymap.c | 44 + keyboards/idobo/keymaps/pathnirvana/rules.mk | 3 + keyboards/idobo/rules.mk | 20 +- keyboards/illuminati/is0/config.h | 73 - keyboards/illuminati/is0/info.json | 2 - keyboards/illuminati/is0/is0.c | 35 - .../is0/keymaps/ctrlaltdel/keymap.c | 16 - .../illuminati/is0/keymaps/default/keymap.c | 12 - keyboards/illuminati/is0/rules.mk | 18 +- keyboards/illusion/rosa/info.json | 10 +- .../illusion/rosa/keymaps/default/keymap.c | 2 +- keyboards/illusion/rosa/keymaps/oggi/keymap.c | 4 +- .../rosa/keymaps/split_bs_rshift/keymap.c | 4 +- .../rosa/keymaps/split_rshift/keymap.c | 4 +- keyboards/illusion/rosa/keymaps/via/keymap.c | 8 +- keyboards/illusion/rosa/rosa.h | 6 +- keyboards/illusion/rosa/rules.mk | 7 +- keyboards/ilumkb/primus75/info.json | 2 - keyboards/ilumkb/primus75/rules.mk | 5 +- .../{dztech => ilumkb}/volcano660/config.h | 0 keyboards/ilumkb/volcano660/info.json | 10 + .../volcano660/keymaps/default/keymap.c | 0 .../volcano660/keymaps/via/keymap.c | 0 .../ilumkb/volcano660/keymaps/via/rules.mk | 2 + keyboards/ilumkb/volcano660/readme.md | 12 + keyboards/ilumkb/volcano660/rules.mk | 19 + .../volcano660/volcano660.c | 0 .../volcano660/volcano660.h | 0 keyboards/inett_studio/sqx/hotswap/config.h | 51 +- keyboards/inett_studio/sqx/hotswap/hotswap.c | 2 +- keyboards/inett_studio/sqx/hotswap/info.json | 2 - keyboards/inett_studio/sqx/hotswap/rules.mk | 5 +- keyboards/inett_studio/sqx/universal/config.h | 51 +- .../inett_studio/sqx/universal/info.json | 2 - keyboards/inett_studio/sqx/universal/rules.mk | 4 +- .../inett_studio/sqx/universal/universal.c | 2 +- keyboards/infinity60/info.json | 2 - .../infinity60/keymaps/jpetermans/keymap.c | 101 +- keyboards/infinity60/rules.mk | 5 +- keyboards/irene/config.h | 150 + keyboards/irene/info.json | 75 + keyboards/irene/irene.c | 17 + keyboards/irene/irene.h | 43 + keyboards/irene/keymaps/default/keymap.c | 33 + keyboards/irene/keymaps/via/keymap.c | 33 + keyboards/irene/keymaps/via/rules.mk | 1 + keyboards/irene/readme.md | 20 + keyboards/irene/rules.mk | 19 + keyboards/iriskeyboards/info.json | 2 - keyboards/iriskeyboards/rules.mk | 5 +- keyboards/iron180/info.json | 2 - keyboards/iron180/rules.mk | 5 +- keyboards/ivy/keymaps/default/keymap.c | 4 - keyboards/ivy/rev1/info.json | 2 - keyboards/ivy/rev1/rev1.c | 4 - keyboards/ivy/rules.mk | 18 +- keyboards/j80/config.h | 4 - keyboards/j80/info.json | 2 - keyboards/j80/rules.mk | 11 +- keyboards/jacky_studio/bear_65/info.json | 2 - .../bear_65/keymaps/stanrc85/keymap.c | 19 - keyboards/jacky_studio/bear_65/rules.mk | 5 +- .../jacky_studio/s7_elephant/rev1/info.json | 2 - .../jacky_studio/s7_elephant/rev1/rules.mk | 3 +- .../jacky_studio/s7_elephant/rev2/info.json | 2 - .../jacky_studio/s7_elephant/rev2/rules.mk | 5 +- keyboards/jadookb/jkb2/config.h | 32 + keyboards/jadookb/jkb2/info.json | 10 + keyboards/jadookb/jkb2/jkb2.c | 16 + keyboards/jadookb/jkb2/jkb2.h | 25 + .../jadookb/jkb2/keymaps/default/keymap.c | 23 + keyboards/jadookb/jkb2/keymaps/via/config.h | 20 + keyboards/jadookb/jkb2/keymaps/via/keymap.c | 34 + keyboards/jadookb/jkb2/keymaps/via/rules.mk | 2 + keyboards/jadookb/jkb2/readme.md | 23 + keyboards/jadookb/jkb2/rules.mk | 19 + keyboards/jadookb/jkb65/config.h | 52 + keyboards/jadookb/jkb65/info.json | 10 + keyboards/jadookb/jkb65/jkb65.c | 53 + keyboards/jadookb/jkb65/jkb65.h | 34 + .../jadookb/jkb65/keymaps/default/keymap.c | 51 + keyboards/jadookb/jkb65/keymaps/via/config.h | 20 + keyboards/jadookb/jkb65/keymaps/via/keymap.c | 51 + keyboards/jadookb/jkb65/keymaps/via/rules.mk | 1 + keyboards/jadookb/jkb65/readme.md | 23 + keyboards/jadookb/jkb65/rules.mk | 22 + keyboards/jae/j01/config.h | 73 - keyboards/jae/j01/info.json | 2 - keyboards/jae/j01/j01.c | 14 - keyboards/jae/j01/rules.mk | 15 +- keyboards/jagdpietr/drakon/drakon.c | 16 +- keyboards/jagdpietr/drakon/info.json | 2 - keyboards/jagdpietr/drakon/rules.mk | 8 +- keyboards/jc65/v32a/info.json | 2 - keyboards/jc65/v32a/rules.mk | 11 +- keyboards/jc65/v32a/v32a.h | 33 +- keyboards/jc65/v32u4/config.h | 5 +- keyboards/jc65/v32u4/info.json | 2 - keyboards/jc65/v32u4/keymaps/gam3cat/keymap.c | 2 +- keyboards/jc65/v32u4/keymaps/gam3cat/rules.mk | 3 +- keyboards/jc65/v32u4/rules.mk | 18 +- keyboards/jc65/v32u4/v32u4.h | 30 +- keyboards/jd40/config.h | 5 +- keyboards/jd40/info.json | 2 - keyboards/jd40/jd40.h | 45 +- keyboards/jd40/rules.mk | 15 +- keyboards/jd45/config.h | 5 +- keyboards/jd45/info.json | 2 - keyboards/jd45/jd45.h | 23 +- keyboards/jd45/keymaps/mjt6u/rules.mk | 2 +- keyboards/jd45/rules.mk | 15 +- keyboards/jels/jels88/config.h | 70 + keyboards/jels/jels88/info.json | 102 + keyboards/jels/jels88/jels88.c | 38 + keyboards/jels/jels88/jels88.h | 89 + .../jels/jels88/keymaps/default/keymap.c | 54 + keyboards/jels/jels88/keymaps/via/keymap.c | 54 + keyboards/jels/jels88/keymaps/via/rules.mk | 1 + keyboards/jels/jels88/readme.md | 25 + keyboards/jels/jels88/rules.mk | 20 + keyboards/jian/handwired/rules.mk | 7 - keyboards/jian/info.json | 2 - keyboards/jian/keymaps/advanced/keymap.c | 2 +- keyboards/jian/nsrev2/rules.mk | 7 - keyboards/jian/rev1/rules.mk | 7 - keyboards/jian/rev2/rules.mk | 7 - keyboards/jiran/info.json | 2 - keyboards/jiran/rules.mk | 5 +- keyboards/jisplit89/info.json | 2 - .../jisplit89/keymaps/salicylic/keymap.c | 2 +- keyboards/jisplit89/rules.mk | 9 +- keyboards/jj40/config.h | 54 - keyboards/jj40/info.json | 23 - keyboards/jj40/keymaps/ajp10304/readme.md | 119 - keyboards/jj40/keymaps/cockpit/readme.md | 55 - keyboards/jj40/keymaps/fun40/rules.mk | 21 - keyboards/jj40/keymaps/oscillope/rules.mk | 14 - keyboards/jj40/keymaps/skewwhiffy/keymap.c | 219 -- keyboards/jj40/keymaps/stevexyz/rules.mk | 19 - keyboards/jj40/keymaps/waples/readme.md | 49 - keyboards/jj40/keymaps/waples/rules.mk | 10 - keyboards/jj40/readme.md | 21 - keyboards/jj40/rules.mk | 37 - keyboards/jj4x4/config.h | 57 - keyboards/jj4x4/info.json | 30 - keyboards/jj4x4/readme.md | 39 - keyboards/jj4x4/rules.mk | 34 - keyboards/jj50/info.json | 13 - keyboards/jj50/keymaps/abstractkb/keymap.c | 135 - .../keymaps/abstractkb_gergomatch/keymap.c | 135 - keyboards/jj50/readme.md | 21 - keyboards/jj50/rules.mk | 27 - keyboards/jkdlab/binary_monkey/info.json | 2 - keyboards/jkdlab/binary_monkey/rules.mk | 5 +- keyboards/jm60/info.json | 2 - keyboards/jm60/rules.mk | 5 +- keyboards/jnao/info.json | 2 - keyboards/jnao/rules.mk | 16 +- keyboards/jones/v03/config.h | 2 +- keyboards/jones/v03/info.json | 2 - keyboards/jones/v03/rules.mk | 5 +- keyboards/jones/v03_1/config.h | 2 +- keyboards/jones/v03_1/info.json | 2 - keyboards/jones/v03_1/rules.mk | 5 +- keyboards/just60/info.json | 2 - keyboards/just60/rules.mk | 15 +- keyboards/k_type/info.json | 2 - keyboards/k_type/is31fl3733-dual.h | 2 +- keyboards/k_type/k_type.c | 2 +- keyboards/k_type/rules.mk | 8 +- keyboards/kabedon/kabedon78s/info.json | 4 - keyboards/kabedon/kabedon78s/rules.mk | 5 +- keyboards/kabedon/kabedon980/info.json | 3 - keyboards/kabedon/kabedon980/rules.mk | 5 +- keyboards/kabedon/kabedon98e/chconf.h | 28 + keyboards/kabedon/kabedon98e/config.h | 64 + keyboards/kabedon/kabedon98e/halconf.h | 26 + keyboards/kabedon/kabedon98e/info.json | 117 + keyboards/kabedon/kabedon98e/kabedon98e.c | 55 + keyboards/kabedon/kabedon98e/kabedon98e.h | 63 + .../kabedon98e/keymaps/default/keymap.c | 71 + .../kabedon/kabedon98e/keymaps/via/keymap.c | 71 + .../kabedon/kabedon98e/keymaps/via/rules.mk | 1 + keyboards/kabedon/kabedon98e/mcuconf.h | 27 + keyboards/kabedon/kabedon98e/readme.md | 17 + keyboards/kabedon/kabedon98e/rules.mk | 21 + keyboards/kagamidget/config.h | 68 - keyboards/kagamidget/info.json | 3 - keyboards/kagamidget/kagamidget.c | 27 - keyboards/kagamidget/keymaps/default/keymap.c | 16 - keyboards/kagamidget/rules.mk | 18 +- keyboards/kapcave/arya/arya.c | 27 + keyboards/kapcave/arya/arya.h | 43 + keyboards/kapcave/arya/chconf.h | 25 + keyboards/kapcave/arya/config.h | 68 + keyboards/kapcave/arya/halconf.h | 23 + keyboards/kapcave/arya/info.json | 77 + .../kapcave/arya/keymaps/default/keymap.c | 34 + .../kapcave/arya/keymaps/default/readme.md | 1 + keyboards/kapcave/arya/keymaps/via/keymap.c | 56 + keyboards/kapcave/arya/keymaps/via/readme.md | 1 + keyboards/kapcave/arya/keymaps/via/rules.mk | 1 + keyboards/kapcave/arya/mcuconf.h | 33 + keyboards/kapcave/arya/readme.md | 23 + keyboards/kapcave/arya/rules.mk | 23 + keyboards/kapcave/gskt00/config.h | 52 + keyboards/kapcave/gskt00/gskt00.c | 18 + keyboards/kapcave/gskt00/gskt00.h | 73 + keyboards/kapcave/gskt00/info.json | 82 + .../gskt00/keymaps/default-poly/config.h | 39 + .../gskt00/keymaps/default-poly/keymap.c | 70 + .../gskt00/keymaps/default-poly/readme.md | 1 + .../gskt00/keymaps/default-poly/rules.mk | 2 + .../kapcave/gskt00/keymaps/default/keymap.c | 38 + .../kapcave/gskt00/keymaps/default/readme.md | 1 + .../gskt00/keymaps/nachie/keymap.c | 0 keyboards/kapcave/gskt00/keymaps/via/keymap.c | 57 + .../kapcave/gskt00/keymaps/via/readme.md | 1 + .../gskt00}/keymaps/via/rules.mk | 0 keyboards/kapcave/gskt00/readme.md | 23 + keyboards/kapcave/gskt00/rules.mk | 20 + keyboards/kapcave/paladin64/config.h | 121 + keyboards/kapcave/paladin64/info.json | 26 + .../paladin64/keymaps/default/keymap.c | 61 + .../paladin64/keymaps/default/readme.md | 1 + .../kapcave/paladin64/keymaps/via/keymap.c | 59 + .../kapcave/paladin64/keymaps/via/readme.md | 1 + .../kapcave/paladin64/keymaps/via/rules.mk | 1 + keyboards/kapcave/paladin64/paladin64.c | 18 + keyboards/kapcave/paladin64/paladin64.h | 106 + keyboards/kapcave/paladin64/readme.md | 24 + keyboards/kapcave/paladin64/rules.mk | 21 + keyboards/kapcave/paladinpad/config.h | 46 + keyboards/kapcave/paladinpad/info.json | 82 + .../kapcave/paladinpad/keymaps/aek/keymap.c | 38 + .../kapcave/paladinpad/keymaps/aek/readme.md | 1 + .../paladinpad/keymaps/default/keymap.c | 38 + .../paladinpad/keymaps/default/readme.md | 1 + .../kapcave/paladinpad/keymaps/ortho/keymap.c | 53 + .../paladinpad/keymaps/ortho/readme.md | 1 + .../kapcave/paladinpad/keymaps/via/keymap.c | 59 + .../kapcave/paladinpad/keymaps/via/rules.mk | 3 + keyboards/kapcave/paladinpad/paladinpad.c | 17 + keyboards/kapcave/paladinpad/paladinpad.h | 103 + keyboards/kapcave/paladinpad/readme.md | 23 + keyboards/kapcave/paladinpad/rev1/config.h | 44 + keyboards/kapcave/paladinpad/rev1/rules.mk | 0 keyboards/kapcave/paladinpad/rev2/config.h | 47 + keyboards/kapcave/paladinpad/rev2/rules.mk | 0 keyboards/kapcave/paladinpad/rules.mk | 22 + keyboards/kb_elmo/67mk_e/67mk_e.c | 17 + keyboards/kb_elmo/67mk_e/67mk_e.h | 105 + keyboards/kb_elmo/67mk_e/config.h | 44 + keyboards/kb_elmo/67mk_e/info.json | 438 +++ .../kb_elmo/67mk_e/keymaps/default/keymap.c | 33 + keyboards/kb_elmo/67mk_e/keymaps/via/keymap.c | 47 + keyboards/kb_elmo/67mk_e/keymaps/via/rules.mk | 2 + keyboards/kb_elmo/67mk_e/readme.md | 21 + keyboards/kb_elmo/67mk_e/rules.mk | 21 + keyboards/kb_elmo/aek2_usb/config.h | 5 +- keyboards/kb_elmo/aek2_usb/info.json | 4 +- .../kb_elmo/aek2_usb/keymaps/via/keymap.c | 8 + .../kb_elmo/aek2_usb/keymaps/via/rules.mk | 1 + keyboards/kb_elmo/aek2_usb/rules.mk | 7 +- keyboards/kb_elmo/elmopad/info.json | 4 +- keyboards/kb_elmo/elmopad/rules.mk | 7 +- keyboards/kb_elmo/isolation/config.h | 62 + keyboards/kb_elmo/isolation/info.json | 12 + keyboards/kb_elmo/isolation/isolation.c | 17 + keyboards/kb_elmo/isolation/isolation.h | 25 + .../isolation/keymaps/default/keymap.c | 22 + keyboards/kb_elmo/isolation/readme.md | 24 + keyboards/kb_elmo/isolation/rules.mk | 22 + keyboards/kb_elmo/m0110a_usb/info.json | 162 +- keyboards/kb_elmo/m0110a_usb/rules.mk | 7 +- keyboards/kb_elmo/m0116_usb/info.json | 169 +- keyboards/kb_elmo/m0116_usb/rules.mk | 7 +- keyboards/kb_elmo/noah_avr/info.json | 112 +- .../kb_elmo/noah_avr/keymaps/default/keymap.c | 4 +- keyboards/kb_elmo/noah_avr/noah_avr.h | 125 +- keyboards/kb_elmo/noah_avr/rules.mk | 7 +- keyboards/kb_elmo/qez/config.h | 44 + keyboards/kb_elmo/qez/info.json | 126 + .../kb_elmo/qez/keymaps/default/keymap.c | 37 + keyboards/kb_elmo/qez/keymaps/via/keymap.c | 43 + keyboards/kb_elmo/qez/keymaps/via/rules.mk | 2 + keyboards/kb_elmo/qez/qez.c | 17 + keyboards/kb_elmo/qez/qez.h | 57 + keyboards/kb_elmo/qez/readme.md | 24 + keyboards/kb_elmo/qez/rules.mk | 19 + keyboards/kb_elmo/sesame/info.json | 2 - keyboards/kb_elmo/sesame/readme.md | 15 +- keyboards/kb_elmo/sesame/rules.mk | 7 +- keyboards/kb_elmo/twelvekey/info.json | 2 - keyboards/kb_elmo/twelvekey/readme.md | 7 +- keyboards/kb_elmo/twelvekey/rules.mk | 7 +- keyboards/kb_elmo/vertex/config.h | 46 + keyboards/kb_elmo/vertex/info.json | 205 + .../kb_elmo/vertex/keymaps/default/keymap.c | 37 + keyboards/kb_elmo/vertex/keymaps/via/keymap.c | 43 + keyboards/kb_elmo/vertex/keymaps/via/rules.mk | 2 + keyboards/kb_elmo/vertex/readme.md | 25 + keyboards/kb_elmo/vertex/rules.mk | 19 + keyboards/kb_elmo/vertex/vertex.c | 17 + keyboards/kb_elmo/vertex/vertex.h | 69 + keyboards/kbdclack/kaishi65/config.h | 73 - keyboards/kbdclack/kaishi65/info.json | 2 - keyboards/kbdclack/kaishi65/rules.mk | 15 +- keyboards/kbdfans/bella/rgb/config.h | 57 +- keyboards/kbdfans/bella/rgb/info.json | 2 - keyboards/kbdfans/bella/rgb/rgb.c | 2 +- keyboards/kbdfans/bella/rgb/rules.mk | 5 +- keyboards/kbdfans/bella/rgb_iso/config.h | 57 +- keyboards/kbdfans/bella/rgb_iso/info.json | 2 - keyboards/kbdfans/bella/rgb_iso/rgb_iso.c | 2 +- keyboards/kbdfans/bella/rgb_iso/rules.mk | 5 +- keyboards/kbdfans/bella/soldered/info.json | 2 - keyboards/kbdfans/bella/soldered/rules.mk | 5 +- keyboards/kbdfans/boop65/rgb/config.h | 105 + keyboards/kbdfans/boop65/rgb/info.json | 10 + .../boop65/rgb/keymaps/default/keymap.c | 44 + .../kbdfans/boop65/rgb/keymaps/via/keymap.c | 43 + .../kbdfans/boop65/rgb/keymaps/via/rules.mk | 2 + keyboards/kbdfans/boop65/rgb/readme.md | 21 + keyboards/kbdfans/boop65/rgb/rgb.c | 148 + keyboards/kbdfans/boop65/rgb/rgb.h | 32 + keyboards/kbdfans/boop65/rgb/rules.mk | 21 + keyboards/kbdfans/kbd19x/config.h | 68 - keyboards/kbdfans/kbd19x/info.json | 4 - .../kbdfans/kbd19x/keymaps/default/keymap.c | 16 - keyboards/kbdfans/kbd19x/rules.mk | 18 +- keyboards/kbdfans/kbd4x/config.h | 68 - keyboards/kbdfans/kbd4x/info.json | 2 - keyboards/kbdfans/kbd4x/kbd4x.c | 27 - .../kbdfans/kbd4x/keymaps/default/keymap.c | 13 - keyboards/kbdfans/kbd4x/readme.md | 6 +- keyboards/kbdfans/kbd4x/rules.mk | 18 +- keyboards/kbdfans/kbd66/config.h | 68 - keyboards/kbdfans/kbd66/info.json | 3 - keyboards/kbdfans/kbd66/kbd66.c | 27 - keyboards/kbdfans/kbd66/keymaps/ansi/keymap.c | 16 - .../kbdfans/kbd66/keymaps/default/keymap.c | 16 - keyboards/kbdfans/kbd66/keymaps/iso/keymap.c | 16 - keyboards/kbdfans/kbd66/readme.md | 8 +- keyboards/kbdfans/kbd66/rules.mk | 18 +- keyboards/kbdfans/kbd67/hotswap/config.h | 68 - keyboards/kbdfans/kbd67/hotswap/hotswap.c | 27 - keyboards/kbdfans/kbd67/hotswap/info.json | 4 +- .../hotswap/keymaps/brandonschlack/rules.mk | 2 +- .../kbd67/hotswap/keymaps/default/keymap.c | 12 - .../hotswap/keymaps/stevanmilic/rules.mk | 2 +- keyboards/kbdfans/kbd67/hotswap/readme.md | 8 +- keyboards/kbdfans/kbd67/hotswap/rules.mk | 18 +- .../kbdfans/kbd67/mkii_soldered/info.json | 2 - .../kbd67/mkii_soldered/mkii_soldered.c | 32 - .../kbdfans/kbd67/mkii_soldered/readme.md | 3 +- .../kbdfans/kbd67/mkii_soldered/rules.mk | 18 +- keyboards/kbdfans/kbd67/mkiirgb/info.json | 5 +- .../kbd67/mkiirgb/keymaps/default/keymap.c | 14 - .../mkiirgb/keymaps/pascalpfeil/config.h | 32 + .../mkiirgb/keymaps/pascalpfeil/keymap.c | 48 + .../mkiirgb/keymaps/pascalpfeil/rules.mk | 2 + keyboards/kbdfans/kbd67/mkiirgb/mkiirgb.c | 134 +- keyboards/kbdfans/kbd67/mkiirgb/mkiirgb.h | 38 +- keyboards/kbdfans/kbd67/mkiirgb/readme.md | 6 +- keyboards/kbdfans/kbd67/mkiirgb/v1/config.h | 67 +- keyboards/kbdfans/kbd67/mkiirgb/v1/readme.md | 4 +- keyboards/kbdfans/kbd67/mkiirgb/v1/rules.mk | 2 +- keyboards/kbdfans/kbd67/mkiirgb/v1/v1.c | 104 + keyboards/kbdfans/kbd67/mkiirgb/v1/v1.h | 32 + keyboards/kbdfans/kbd67/mkiirgb/v2/config.h | 82 +- keyboards/kbdfans/kbd67/mkiirgb/v2/readme.md | 4 + keyboards/kbdfans/kbd67/mkiirgb/v2/rules.mk | 16 +- keyboards/kbdfans/kbd67/mkiirgb/v2/v2.c | 122 + keyboards/kbdfans/kbd67/mkiirgb/v2/v2.h | 32 + keyboards/kbdfans/kbd67/mkiirgb/v3/config.h | 104 + keyboards/kbdfans/kbd67/mkiirgb/v3/readme.md | 19 + keyboards/kbdfans/kbd67/mkiirgb/v3/rules.mk | 25 + keyboards/kbdfans/kbd67/mkiirgb/v3/v3.c | 127 + keyboards/kbdfans/kbd67/mkiirgb/v3/v3.h | 33 + keyboards/kbdfans/kbd67/readme.md | 19 +- keyboards/kbdfans/kbd67/rev1/config.h | 68 - keyboards/kbdfans/kbd67/rev1/info.json | 2 - .../kbd67/rev1/keymaps/default/config.h | 2 +- .../kbd67/rev1/keymaps/default/keymap.c | 12 - keyboards/kbdfans/kbd67/rev1/readme.md | 8 +- keyboards/kbdfans/kbd67/rev1/rules.mk | 18 +- keyboards/kbdfans/kbd67/rev2/config.h | 17 +- keyboards/kbdfans/kbd67/rev2/info.json | 4 +- .../kbd67/rev2/keymaps/default/keymap.c | 12 - .../kbd67/rev2/keymaps/tucznak/rules.mk | 2 +- keyboards/kbdfans/kbd67/rev2/readme.md | 8 +- keyboards/kbdfans/kbd67/rev2/rev2.c | 13 +- keyboards/kbdfans/kbd67/rev2/rules.mk | 20 +- keyboards/kbdfans/kbd6x/config.h | 68 - keyboards/kbdfans/kbd6x/info.json | 4 +- .../kbdfans/kbd6x/keymaps/default/keymap.c | 14 - .../kbdfans/kbd6x/keymaps/konstantin/config.h | 2 - .../kbdfans/kbd6x/keymaps/konstantin/keymap.c | 107 +- .../kbdfans/kbd6x/keymaps/konstantin/rules.mk | 4 +- keyboards/kbdfans/kbd6x/keymaps/othi/keymap.c | 26 +- keyboards/kbdfans/kbd6x/keymaps/othi/rules.mk | 2 +- .../kbdfans/kbd6x/keymaps/peott-fr/keymap.c | 23 + .../kbdfans/kbd6x/keymaps/wanleg/rules.mk | 2 +- keyboards/kbdfans/kbd6x/readme.md | 6 +- keyboards/kbdfans/kbd6x/rules.mk | 18 +- keyboards/kbdfans/kbd75/keymaps/adit/keymap.c | 36 - .../kbdfans/kbd75/keymaps/edulpn/keymap.c | 2 +- .../kbd75/keymaps/noroadsleft/keymap.c | 8 +- .../kbd75/keymaps/noroadsleft/rules.mk | 6 +- .../kbdfans/kbd75/keymaps/tucznak/rules.mk | 2 +- keyboards/kbdfans/kbd75/readme.md | 14 +- keyboards/kbdfans/kbd75/rev1/info.json | 7 - keyboards/kbdfans/kbd75/rev1/rules.mk | 10 +- keyboards/kbdfans/kbd75/rev2/info.json | 7 - keyboards/kbdfans/kbd75/rev2/rules.mk | 10 +- keyboards/kbdfans/kbd75hs/config.h | 68 + keyboards/kbdfans/kbd75hs/info.json | 9 + keyboards/kbdfans/kbd75hs/kbd75hs.c | 17 + keyboards/kbdfans/kbd75hs/kbd75hs.h | 35 + .../kbdfans/kbd75hs/keymaps/default/keymap.c | 55 + .../kbdfans/kbd75hs/keymaps/via/keymap.c | 55 + .../kbdfans/kbd75hs/keymaps/via/rules.mk | 2 + keyboards/kbdfans/kbd75hs/readme.md | 21 + keyboards/kbdfans/kbd75hs/rules.mk | 21 + keyboards/kbdfans/kbd8x/info.json | 2 - keyboards/kbdfans/kbd8x/readme.md | 8 +- keyboards/kbdfans/kbd8x/rules.mk | 12 +- keyboards/kbdfans/kbd8x_mk2/config.h | 73 - keyboards/kbdfans/kbd8x_mk2/info.json | 2 - .../kbdfans/kbd8x_mk2/keymaps/ansi_7/keymap.c | 16 - .../kbd8x_mk2/keymaps/default/keymap.c | 16 - .../kbd8x_mk2/keymaps/iso_625/keymap.c | 16 - .../kbdfans/kbd8x_mk2/keymaps/iso_7/keymap.c | 16 - .../kbdfans/kbd8x_mk2/keymaps/tester/keymap.c | 16 - keyboards/kbdfans/kbd8x_mk2/readme.md | 6 +- keyboards/kbdfans/kbd8x_mk2/rules.mk | 18 +- keyboards/kbdfans/kbdmini/config.h | 72 +- keyboards/kbdfans/kbdmini/info.json | 2 - keyboards/kbdfans/kbdmini/kbdmini.c | 2 +- keyboards/kbdfans/kbdmini/readme.md | 2 - keyboards/kbdfans/kbdmini/rules.mk | 5 +- keyboards/kbdfans/kbdpad/mk1/info.json | 2 - keyboards/kbdfans/kbdpad/mk1/rules.mk | 11 +- keyboards/kbdfans/kbdpad_mk2/config.h | 73 - keyboards/kbdfans/kbdpad_mk2/info.json | 2 - .../kbdpad_mk2/keymaps/default/keymap.c | 16 - .../kbdpad_mk2/keymaps/tester/keymap.c | 16 - keyboards/kbdfans/kbdpad_mk2/rules.mk | 18 +- keyboards/kbdfans/maja/config.h | 67 +- keyboards/kbdfans/maja/info.json | 2 - keyboards/kbdfans/maja/maja.c | 2 +- keyboards/kbdfans/maja/rules.mk | 16 +- keyboards/kbdfans/maja_soldered/info.json | 2 - keyboards/kbdfans/maja_soldered/rules.mk | 5 +- keyboards/kbdfans/odin/rgb/config.h | 90 + keyboards/kbdfans/odin/rgb/info.json | 10 + .../kbdfans/odin/rgb/keymaps/default/keymap.c | 36 + .../kbdfans/odin/rgb/keymaps/via/config.h | 17 + .../kbdfans/odin/rgb/keymaps/via/keymap.c | 36 + .../kbdfans/odin/rgb/keymaps/via/rules.mk | 1 + keyboards/kbdfans/odin/rgb/readme.md | 21 + keyboards/kbdfans/odin/rgb/rgb.c | 59 + keyboards/kbdfans/odin/rgb/rgb.h | 35 + keyboards/kbdfans/odin/rgb/rules.mk | 24 + keyboards/kbdfans/odin/soldered/config.h | 57 + keyboards/kbdfans/odin/soldered/info.json | 10 + .../odin/soldered/keymaps/default/keymap.c | 36 + .../odin/soldered/keymaps/via/config.h | 17 + .../odin/soldered/keymaps/via/keymap.c | 36 + .../odin/soldered/keymaps/via/rules.mk | 1 + keyboards/kbdfans/odin/soldered/readme.md | 21 + keyboards/kbdfans/odin/soldered/rules.mk | 22 + keyboards/kbdfans/odin/soldered/soldered.c | 16 + keyboards/kbdfans/odin/soldered/soldered.h | 35 + keyboards/kbnordic/nordic60/info.json | 361 ++ .../kbnordic/nordic60/keymaps/all/keymap.c | 34 + .../nordic60/keymaps/default/keymap.c | 36 + .../nordic60/keymaps/default_ansi/keymap.c | 36 + .../kbnordic/nordic60/keymaps/via/keymap.c | 48 + .../kbnordic/nordic60/keymaps/via/rules.mk | 1 + keyboards/kbnordic/nordic60/readme.md | 20 + keyboards/kbnordic/nordic60/rev_a/config.h | 61 + keyboards/kbnordic/nordic60/rev_a/readme.md | 12 + keyboards/kbnordic/nordic60/rev_a/rev_a.c | 17 + keyboards/kbnordic/nordic60/rev_a/rev_a.h | 112 + keyboards/kbnordic/nordic60/rev_a/rules.mk | 19 + keyboards/kc60/info.json | 2 - keyboards/kc60/keymaps/noroadsleft/readme.md | 5 +- keyboards/kc60/keymaps/stanleylai/keymap.c | 38 +- keyboards/kc60/keymaps/stanleylai/rules.mk | 4 +- keyboards/kc60/keymaps/wigguno/rules.mk | 4 +- keyboards/kc60/rules.mk | 6 +- keyboards/kc60se/config.h | 68 - keyboards/kc60se/info.json | 7 - keyboards/kc60se/readme.md | 6 +- keyboards/kc60se/rules.mk | 18 +- keyboards/keebio/bdn9/info.json | 2 - keyboards/keebio/bdn9/keymaps/bcat/keymap.c | 30 +- .../keebio/bdn9/keymaps/copface/config.h | 8 + .../keebio/bdn9/keymaps/copface/keymap.c | 93 + .../keebio/bdn9/keymaps/vosechu-ksp/keymap.c | 2 +- keyboards/keebio/bdn9/rev1/rules.mk | 18 +- keyboards/keebio/bdn9/rev2/config.h | 48 + keyboards/keebio/bdn9/rev2/rules.mk | 8 +- keyboards/keebio/bfo9000/info.json | 3 - .../bfo9000/keymaps/abstractkb/keymap.c | 14 +- .../keymaps/insertsnideremarks/keymap.c | 60 +- .../keymaps/insertsnideremarks/rules.mk | 2 +- .../bfo9000/keymaps/tuesdayjohn/keymap.c | 48 +- .../bfo9000/keymaps/tuesdayjohn/rules.mk | 2 +- keyboards/keebio/bfo9000/rules.mk | 16 +- keyboards/keebio/choconum/config.h | 73 - keyboards/keebio/choconum/info.json | 4 - keyboards/keebio/choconum/rules.mk | 8 +- keyboards/keebio/chocopad/config.h | 5 +- keyboards/keebio/chocopad/info.json | 2 - keyboards/keebio/chocopad/rules.mk | 10 +- keyboards/keebio/dilly/config.h | 5 +- keyboards/keebio/dilly/dilly.h | 23 +- keyboards/keebio/dilly/info.json | 3 - keyboards/keebio/dilly/rules.mk | 10 +- keyboards/keebio/dsp40/info.json | 2 - keyboards/keebio/dsp40/rev1/rules.mk | 5 +- keyboards/keebio/ergodicity/config.h | 73 - keyboards/keebio/ergodicity/info.json | 2 - .../ergodicity/keymaps/default/keymap.c | 12 - keyboards/keebio/ergodicity/rules.mk | 16 +- keyboards/keebio/foldkb/info.json | 2 - keyboards/keebio/foldkb/keymaps/via/rules.mk | 2 +- keyboards/keebio/foldkb/rules.mk | 7 +- keyboards/keebio/fourier/info.json | 4 +- keyboards/keebio/fourier/rules.mk | 17 +- keyboards/keebio/iris/config.h | 5 +- keyboards/keebio/iris/info.json | 2 - keyboards/keebio/iris/iris.h | 14 +- .../iris/keymaps/antonlindstrom/keymap.c | 28 +- .../keebio/iris/keymaps/davidrambo/keymap.c | 126 +- keyboards/keebio/iris/keymaps/ddone/rules.mk | 2 +- .../keebio/iris/keymaps/default/keymap.c | 14 +- .../keebio/iris/keymaps/drashna/keymap.c | 72 +- .../keebio/iris/keymaps/drashna/rules.mk | 3 +- .../keebio/iris/keymaps/drashna_lp/config.h | 50 - .../keebio/iris/keymaps/drashna_lp/keymap.c | 1 - .../keebio/iris/keymaps/drashna_lp/rules.mk | 7 - .../keebio/iris/keymaps/drashna_old/config.h | 47 - .../keebio/iris/keymaps/drashna_old/keymap.c | 1 - .../keebio/iris/keymaps/drashna_old/rules.mk | 4 - .../keebio/iris/keymaps/edvorakjp/rules.mk | 2 +- .../iris/keymaps/fluffactually/config.h | 4 +- .../iris/keymaps/fluffactually/keymap.c | 54 +- .../iris/keymaps/fluffactually/readme.md | 19 +- .../keymaps/manna-harbour_miryoku/config.h | 23 + .../keymaps/manna-harbour_miryoku/keymap.c | 5 + keyboards/keebio/iris/keymaps/mnil/keymap.c | 2 +- .../keebio/iris/keymaps/nstickney/README.md | 47 - .../keebio/iris/keymaps/nstickney/config.h | 50 +- .../keebio/iris/keymaps/nstickney/keymap.c | 140 +- .../keebio/iris/keymaps/nstickney/rules.mk | 1 - .../iris/keymaps/olligranlund_nordic/config.h | 22 +- .../iris/keymaps/olligranlund_nordic/keymap.c | 26 +- .../keymaps/olligranlund_nordic/readme.md | 2 +- .../iris/keymaps/olligranlund_nordic/rules.mk | 4 +- .../keymaps/olligranlund_nordic_v2/config.h | 31 + .../keymaps/olligranlund_nordic_v2/keymap.c | 127 + .../keymaps/olligranlund_nordic_v2/readme.md | 8 + .../keymaps/olligranlund_nordic_v2/rules.mk | 4 + keyboards/keebio/iris/keymaps/sq5rix/config.h | 25 + keyboards/keebio/iris/keymaps/sq5rix/keymap.c | 185 + .../keebio/iris/keymaps/sq5rix/readme.md | 17 + keyboards/keebio/iris/keymaps/sq5rix/rules.mk | 4 + keyboards/keebio/iris/keymaps/via/keymap.c | 2 +- keyboards/keebio/iris/keymaps/vyolle/rules.mk | 2 +- keyboards/keebio/iris/rev1/rev1.c | 7 - keyboards/keebio/iris/rev1/rules.mk | 16 +- keyboards/keebio/iris/rev1_led/rev1_led.c | 7 - keyboards/keebio/iris/rev1_led/rules.mk | 16 +- keyboards/keebio/iris/rev2/rules.mk | 18 +- keyboards/keebio/iris/rev3/rules.mk | 19 +- keyboards/keebio/iris/rev4/rules.mk | 20 +- keyboards/keebio/iris/rev5/config.h | 83 + keyboards/keebio/iris/rev5/rev5.c | 14 + keyboards/keebio/iris/rev5/rev5.h | 42 + keyboards/keebio/iris/rev5/rules.mk | 21 + keyboards/keebio/iris/rev6/config.h | 91 + keyboards/keebio/iris/rev6/rev6.c | 65 + keyboards/keebio/iris/rev6/rev6.h | 42 + keyboards/keebio/iris/rev6/rules.mk | 25 + keyboards/keebio/kbo5000/info.json | 2 - keyboards/keebio/kbo5000/keymaps/via/rules.mk | 1 - keyboards/keebio/kbo5000/rules.mk | 18 +- keyboards/keebio/laplace/info.json | 4 +- keyboards/keebio/laplace/rules.mk | 14 +- keyboards/keebio/levinson/config.h | 5 +- keyboards/keebio/levinson/info.json | 2 - .../levinson/keymaps/issmirnov/keymap.c | 2 +- .../keebio/levinson/keymaps/jyh2/rules.mk | 2 +- .../levinson/keymaps/ksamborski/rules.mk | 2 +- .../keymaps/losinggeneration/rules.mk | 2 +- .../keebio/levinson/keymaps/steno/rules.mk | 2 +- .../levinson/keymaps/xtonhasvim/keymap.c | 2 +- keyboards/keebio/levinson/rev1/rev1.c | 21 - keyboards/keebio/levinson/rules.mk | 17 +- keyboards/keebio/nyquist/info.json | 2 - .../keebio/nyquist/keymaps/DivergeJM/rules.mk | 2 +- .../nyquist/keymaps/danielhklein/rules.mk | 2 +- .../nyquist/keymaps/georgepetri/rules.mk | 2 +- .../nyquist/keymaps/georgepetri3/rules.mk | 2 +- .../nyquist/keymaps/losinggeneration/rules.mk | 2 +- .../keebio/nyquist/keymaps/peott-fr/keymap.c | 104 + .../keebio/nyquist/keymaps/pitty/keymap.c | 2 +- .../keebio/nyquist/keymaps/pjanx/config.h | 31 + .../keebio/nyquist/keymaps/pjanx/keymap.c | 113 + .../keebio/nyquist/keymaps/pjanx/rules.mk | 2 + .../keebio/nyquist/keymaps/skug/keymap.c | 18 +- keyboards/keebio/nyquist/nyquist.h | 14 - keyboards/keebio/nyquist/rev1/rev1.c | 21 - keyboards/keebio/nyquist/rev1/rev1.h | 32 + keyboards/keebio/nyquist/rev1/rules.mk | 17 +- keyboards/keebio/nyquist/rev2/rev2.h | 32 + keyboards/keebio/nyquist/rev2/rules.mk | 17 +- keyboards/keebio/nyquist/rev3/rev3.h | 19 + keyboards/keebio/nyquist/rev3/rules.mk | 17 +- keyboards/keebio/quefrency/info.json | 369 -- .../keebio/quefrency/keymaps/bcat/config.h | 26 +- .../keebio/quefrency/keymaps/bcat/keymap.c | 19 +- .../quefrency/keymaps/bjohnson/rules.mk | 2 +- .../quefrency/keymaps/georgepetri/keymap.c | 8 +- .../keebio/quefrency/keymaps/jonavin/config.h | 8 + .../keebio/quefrency/keymaps/jonavin/keymap.c | 174 +- .../quefrency/keymaps/jonavin/readme.md | 27 +- .../keebio/quefrency/keymaps/jonavin/rules.mk | 9 +- .../quefrency/keymaps/rogthefrog/config.h | 2 +- .../quefrency/keymaps/rogthefrog/keymap.c | 12 +- .../keebio/quefrency/keymaps/via/rules.mk | 1 - keyboards/keebio/quefrency/quefrency.h | 3 + keyboards/keebio/quefrency/rev1/info.json | 470 +++ keyboards/keebio/quefrency/rev2/config.h | 5 - keyboards/keebio/quefrency/rev2/info.json | 837 ++++ keyboards/keebio/quefrency/rev2/rev2.h | 2 - keyboards/keebio/quefrency/rev3/config.h | 5 - keyboards/keebio/quefrency/rev3/info.json | 837 ++++ keyboards/keebio/quefrency/rev3/rev3.c | 2 +- keyboards/keebio/quefrency/rev3/rev3.h | 2 - keyboards/keebio/quefrency/rev4/config.h | 60 + keyboards/keebio/quefrency/rev4/info.json | 837 ++++ keyboards/keebio/quefrency/rev4/readme.md | 18 + keyboards/keebio/quefrency/rev4/rev4.c | 17 + keyboards/keebio/quefrency/rev4/rev4.h | 200 + keyboards/keebio/quefrency/rev4/rules.mk | 4 + keyboards/keebio/quefrency/rules.mk | 12 +- keyboards/keebio/rorschach/info.json | 3 - .../keymaps/insertsnideremarks/keymap.c | 2 +- .../keymaps/insertsnideremarks/rules.mk | 2 +- .../rorschach/keymaps/tuesdayjohn/keymap.c | 8 +- .../rorschach/keymaps/tuesdayjohn/rules.mk | 2 +- keyboards/keebio/rorschach/rev1/rev1.c | 13 - keyboards/keebio/rorschach/rules.mk | 16 +- keyboards/keebio/sinc/info.json | 2 - keyboards/keebio/sinc/keymaps/lickel/keymap.c | 109 + .../keebio/sinc/keymaps/lickel/readme.md | 18 + keyboards/keebio/sinc/keymaps/lickel/rules.mk | 2 + keyboards/keebio/sinc/keymaps/via/rules.mk | 1 - keyboards/keebio/sinc/rules.mk | 18 +- keyboards/keebio/stick/config.h | 48 + keyboards/keebio/stick/info.json | 2 - keyboards/keebio/stick/rules.mk | 7 +- keyboards/keebio/tragicforce68/info.json | 2 - keyboards/keebio/tragicforce68/rules.mk | 22 +- .../keebio/tragicforce68/tragicforce68.c | 7 - keyboards/keebio/tukey/info.json | 2 - keyboards/keebio/tukey/rules.mk | 16 +- keyboards/keebio/viterbi/info.json | 2 - .../keebio/viterbi/keymaps/drashna/rules.mk | 3 +- .../viterbi/keymaps/drashna_old/config.h | 25 - .../viterbi/keymaps/drashna_old/keymap.c | 1 - .../viterbi/keymaps/drashna_old/rules.mk | 4 - keyboards/keebio/viterbi/rev2/rules.mk | 2 + keyboards/keebio/viterbi/rules.mk | 22 +- keyboards/keebio/wavelet/info.json | 2 - keyboards/keebio/wavelet/rules.mk | 17 +- keyboards/keebio/wavelet/wavelet.c | 13 - keyboards/keebio/wtf60/info.json | 2 - keyboards/keebio/wtf60/rules.mk | 7 +- keyboards/keebsforall/coarse60/chconf.h | 31 + keyboards/keebsforall/coarse60/coarse60.c | 29 + keyboards/keebsforall/coarse60/coarse60.h | 50 + keyboards/keebsforall/coarse60/config.h | 103 + keyboards/keebsforall/coarse60/halconf.h | 33 + keyboards/keebsforall/coarse60/info.json | 154 + .../coarse60/keymaps/default/keymap.c | 37 + .../keebsforall/coarse60/keymaps/via/keymap.c | 52 + .../keebsforall/coarse60/keymaps/via/rules.mk | 1 + keyboards/keebsforall/coarse60/mcuconf.h | 36 + keyboards/keebsforall/coarse60/readme.md | 22 + keyboards/keebsforall/coarse60/rules.mk | 27 + keyboards/keebsforall/freebird60/info.json | 2 - keyboards/keebsforall/freebird60/rules.mk | 5 +- keyboards/keebsforall/freebirdtkl/config.h | 55 + .../keebsforall/freebirdtkl/freebirdtkl.c | 17 + .../keebsforall/freebirdtkl/freebirdtkl.h | 77 + keyboards/keebsforall/freebirdtkl/info.json | 16 + .../freebirdtkl/keymaps/default/keymap.c | 28 + .../freebirdtkl/keymaps/via/keymap.c | 52 + .../freebirdtkl/keymaps/via/rules.mk | 1 + .../freebirdtkl/keymaps/wkl/keymap.c | 28 + keyboards/keebsforall/freebirdtkl/readme.md | 27 + keyboards/keebsforall/freebirdtkl/rules.mk | 19 + keyboards/keebwerk/mega/ansi/ansi.c | 2 +- keyboards/keebwerk/mega/ansi/info.json | 4 +- keyboards/keebwerk/mega/ansi/rules.mk | 9 +- keyboards/keebwerk/nano_slider/config.h | 73 - keyboards/keebwerk/nano_slider/info.json | 2 - keyboards/keebwerk/nano_slider/rules.mk | 14 +- keyboards/keebzdotnet/fme/fme.h | 2 +- keyboards/keebzdotnet/fme/info.json | 29 + .../keebzdotnet/fme/keymaps/default/keymap.c | 4 +- .../keebzdotnet/fme/keymaps/via/config.h | 19 + .../keebzdotnet/fme/keymaps/via/keymap.c | 4 +- keyboards/keebzdotnet/fme/rules.mk | 5 +- keyboards/keebzdotnet/wazowski/config.h | 73 - keyboards/keebzdotnet/wazowski/info.json | 2 - keyboards/keebzdotnet/wazowski/rules.mk | 13 +- keyboards/kelowna/rgb64/config.h | 51 + keyboards/kelowna/rgb64/info.json | 75 + .../kelowna/rgb64/keymaps/default/keymap.c | 38 + keyboards/kelowna/rgb64/keymaps/via/keymap.c | 47 + keyboards/kelowna/rgb64/keymaps/via/rules.mk | 1 + keyboards/kelowna/rgb64/readme.md | 17 + keyboards/kelowna/rgb64/rgb64.c | 16 + keyboards/kelowna/rgb64/rgb64.h | 31 + keyboards/kelowna/rgb64/rules.mk | 21 + keyboards/keybage/radpad/config.h | 2 +- keyboards/keybage/radpad/info.json | 2 - .../keybage/radpad/keymaps/default/keymap.c | 5 +- keyboards/keybage/radpad/rules.mk | 8 +- keyboards/keybee/keybee65/config.h | 64 + keyboards/keybee/keybee65/info.json | 361 ++ keyboards/keybee/keybee65/keybee65.c | 39 + keyboards/keybee/keybee65/keybee65.h | 32 + .../keybee/keybee65/keymaps/default/keymap.c | 84 + .../keybee/keybee65/keymaps/via/keymap.c | 105 + .../keybee/keybee65/keymaps/via/rules.mk | 1 + keyboards/keybee/keybee65/readme.md | 26 + keyboards/keybee/keybee65/rules.mk | 24 + keyboards/keyboardio/atreus/info.json | 2 - .../keymaps/manna-harbour_miryoku/config.h | 22 + .../keymaps/manna-harbour_miryoku/keymap.c | 5 + .../atreus/keymaps/replicaJunction/config.h | 51 + .../atreus/keymaps/replicaJunction/keymap.c | 94 + .../atreus/keymaps/replicaJunction/readme.md | 6 + .../atreus/keymaps/replicaJunction/rules.mk | 29 + keyboards/keyboardio/atreus/rules.mk | 5 +- keyboards/keyboardio/model01/config.h | 49 + keyboards/keyboardio/model01/info.json | 2 - .../model01/keymaps/tw1t611/keymap.c | 12 +- keyboards/keyboardio/model01/matrix.c | 11 + keyboards/keyboardio/model01/model01.c | 13 - keyboards/keyboardio/model01/rules.mk | 13 +- keyboards/keycapsss/kimiko/info.json | 2 - .../keycapsss/kimiko/keymaps/default/keymap.c | 5 +- .../keycapsss/kimiko/keymaps/default/rules.mk | 3 +- keyboards/keycapsss/kimiko/rules.mk | 5 +- keyboards/keycapsss/o4l_5x12/info.json | 2 - keyboards/keycapsss/o4l_5x12/rules.mk | 5 +- keyboards/keycapsss/plaid_pad/info.json | 3 - .../plaid_pad/keymaps/default/keymap.c | 5 +- .../keycapsss/plaid_pad/keymaps/oled/keymap.c | 5 +- .../keycapsss/plaid_pad/keymaps/oled/rules.mk | 3 +- .../keycapsss/plaid_pad/keymaps/via/keymap.c | 5 +- keyboards/keycapsss/plaid_pad/rev3/rules.mk | 3 +- keyboards/keycapsss/plaid_pad/rules.mk | 7 +- keyboards/keychron/q1/config.h | 96 + keyboards/keychron/q1/q1.c | 35 + keyboards/keychron/q1/q1.h | 26 + keyboards/keychron/q1/readme.md | 21 + keyboards/keychron/q1/rev_0100/config.h | 31 + keyboards/keychron/q1/rev_0100/info.json | 91 + .../q1/rev_0100/keymaps/default/keymap.c | 64 + .../q1/rev_0100/keymaps/gtg465x/README.md | 21 + .../q1/rev_0100/keymaps/gtg465x/config.h | 25 + .../q1/rev_0100/keymaps/gtg465x/keymap.c | 102 + .../q1/rev_0100/keymaps/gtg465x/keymap_user.h | 28 + .../keymaps/gtg465x/rgb_matrix_user.c | 71 + .../keymaps/gtg465x/rgb_matrix_user.h | 24 + .../q1/rev_0100/keymaps/gtg465x/rules.mk | 6 + .../q1/rev_0100/keymaps/mkillewald/config.h | 23 + .../q1/rev_0100/keymaps/mkillewald/keymap.c | 175 + .../rev_0100/keymaps/mkillewald/keymap_user.h | 33 + .../q1/rev_0100/keymaps/mkillewald/readme.md | 54 + .../keymaps/mkillewald/rgb_matrix_user.c | 83 + .../keymaps/mkillewald/rgb_matrix_user.h | 26 + .../q1/rev_0100/keymaps/mkillewald/rules.mk | 6 + .../keychron/q1/rev_0100/keymaps/via/keymap.c | 64 + .../keychron/q1/rev_0100/keymaps/via/rules.mk | 2 + keyboards/keychron/q1/rev_0100/readme.md | 1 + keyboards/keychron/q1/rev_0100/rev_0100.c | 143 + keyboards/keychron/q1/rev_0100/rev_0100.h | 37 + keyboards/keychron/q1/rev_0100/rules.mk | 22 + keyboards/keychron/q1/rev_0102/config.h | 31 + keyboards/keychron/q1/rev_0102/info.json | 99 + .../q1/rev_0102/keymaps/default/keymap.c | 64 + .../rev_0102/keymaps/mkillewald_iso/config.h | 23 + .../rev_0102/keymaps/mkillewald_iso/keymap.c | 175 + .../keymaps/mkillewald_iso/keymap_user.h | 33 + .../rev_0102/keymaps/mkillewald_iso/readme.md | 54 + .../keymaps/mkillewald_iso/rgb_matrix_user.c | 83 + .../keymaps/mkillewald_iso/rgb_matrix_user.h | 26 + .../rev_0102/keymaps/mkillewald_iso/rules.mk | 6 + .../keychron/q1/rev_0102/keymaps/via/keymap.c | 64 + .../keychron/q1/rev_0102/keymaps/via/rules.mk | 2 + keyboards/keychron/q1/rev_0102/readme.md | 1 + keyboards/keychron/q1/rev_0102/rev_0102.c | 143 + keyboards/keychron/q1/rev_0102/rev_0102.h | 37 + keyboards/keychron/q1/rev_0102/rules.mk | 22 + keyboards/keyhive/maypad/config.h | 73 - keyboards/keyhive/maypad/info.json | 2 - .../keyhive/maypad/keymaps/default/keymap.c | 13 - keyboards/keyhive/maypad/maypad.c | 35 - keyboards/keyhive/maypad/rules.mk | 18 +- keyboards/keyprez/bison/bison.c | 35 + keyboards/keyprez/bison/bison.h | 99 + keyboards/keyprez/bison/config.h | 158 + keyboards/keyprez/bison/info.json | 306 ++ .../keyprez/bison/keymaps/default/keymap.c | 226 ++ .../keyprez/bison/keymaps/default/readme.md | 1 + .../bison/keymaps/default_6_6/keymap.c | 226 ++ .../bison/keymaps/default_6_6/readme.md | 1 + .../bison/keymaps/default_6_8/keymap.c | 226 ++ .../bison/keymaps/default_6_8/readme.md | 1 + .../bison/keymaps/default_8_6/keymap.c | 226 ++ .../bison/keymaps/default_8_6/readme.md | 1 + keyboards/keyprez/bison/readme.md | 21 + keyboards/keyprez/bison/rules.mk | 22 + keyboards/keyprez/corgi/info.json | 103 +- .../keyprez/corgi/keymaps/default/keymap.c | 47 +- keyboards/keyprez/corgi/rules.mk | 5 +- keyboards/keyprez/rhino/config.h | 115 + keyboards/keyprez/rhino/info.json | 185 + .../keyprez/rhino/keymaps/default/keymap.c | 116 + .../keyprez/rhino/keymaps/default/readme.md | 1 + .../keyprez/rhino/keymaps/default_7u/keymap.c | 117 + .../rhino/keymaps/default_7u/readme.md | 1 + .../rhino/keymaps/default_ergo/keymap.c | 124 + .../rhino/keymaps/default_ergo/readme.md | 1 + keyboards/keyprez/rhino/readme.md | 22 + keyboards/keyprez/rhino/rhino.c | 32 + keyboards/keyprez/rhino/rhino.h | 80 + keyboards/keyprez/rhino/rules.mk | 20 + keyboards/keysofkings/twokey/config.h | 5 +- keyboards/keysofkings/twokey/info.json | 2 - keyboards/keysofkings/twokey/rules.mk | 5 +- keyboards/kikoslab/kl90/info.json | 2 - .../kikoslab/kl90/keymaps/default/keymap.c | 5 +- keyboards/kikoslab/kl90/keymaps/via/keymap.c | 5 +- keyboards/kikoslab/kl90/rules.mk | 8 +- keyboards/kindakeyboards/conone65/info.json | 2 - keyboards/kindakeyboards/conone65/rules.mk | 7 +- keyboards/kinesis/alvicstep/alvicstep.c | 17 - keyboards/kinesis/alvicstep/alvicstep.h | 135 +- keyboards/kinesis/alvicstep/config.h | 8 +- keyboards/kinesis/config.h | 53 +- keyboards/kinesis/info.json | 4 - keyboards/kinesis/keymaps/carpalx/rules.mk | 2 +- keyboards/kinesis/keymaps/default/keymap.c | 18 +- keyboards/kinesis/keymaps/default/rules.mk | 9 +- .../kinesis/keymaps/default_pretty/keymap.c | 18 +- .../kinesis/keymaps/default_pretty/rules.mk | 9 +- keyboards/kinesis/keymaps/dvorak/keymap.c | 2 +- keyboards/kinesis/keymaps/dvorak/rules.mk | 2 +- .../keymaps/insertsnideremarks/keymap.c | 38 +- .../keymaps/insertsnideremarks/rules.mk | 2 +- keyboards/kinesis/keymaps/jwon/keymap.c | 174 + keyboards/kinesis/keymaps/jwon/readme.md | 8 + keyboards/kinesis/keymaps/jwon/rules.mk | 3 + keyboards/kinesis/keymaps/milestogo/rules.mk | 2 +- keyboards/kinesis/keymaps/peott-fr/keymap.c | 28 + keyboards/kinesis/keymaps/stapelberg/keymap.c | 2 +- keyboards/kinesis/keymaps/stapelberg/rules.mk | 2 +- .../kinesis/keymaps/tuesdayjohn/keymap.c | 40 +- .../kinesis/keymaps/tuesdayjohn/rules.mk | 2 +- keyboards/kinesis/keymaps/tw1t611/keymap.c | 14 +- keyboards/kinesis/keymaps/tw1t611/rules.mk | 2 +- keyboards/kinesis/keymaps/xyverz/rules.mk | 2 +- keyboards/kinesis/kinesis.h | 34 +- keyboards/kinesis/kint2pp/config.h | 12 +- keyboards/kinesis/kint36/config.h | 14 +- .../kinesis/kint36/keymaps/kzar/rules.mk | 2 +- keyboards/kinesis/kint36/rules.mk | 7 +- keyboards/kinesis/kint41/chconf.h | 33 + keyboards/kinesis/kint41/config.h | 109 + keyboards/kinesis/kint41/kint41.c | 52 + keyboards/kinesis/kint41/kint41.h | 92 + keyboards/kinesis/kint41/mcuconf.h | 22 + keyboards/kinesis/kint41/readme.md | 3 + keyboards/kinesis/kint41/rules.mk | 15 + keyboards/kinesis/nguyenvietyen/config.h | 2 +- keyboards/kinesis/nguyenvietyen/rules.mk | 2 +- keyboards/kinesis/rules.mk | 18 +- keyboards/kinesis/stapelberg/config.h | 5 +- keyboards/kinesis/stapelberg/stapelberg.h | 132 +- keyboards/kineticlabs/emu/hotswap/config.h | 42 + keyboards/kineticlabs/emu/hotswap/hotswap.c | 17 + keyboards/kineticlabs/emu/hotswap/hotswap.h | 37 + keyboards/kineticlabs/emu/hotswap/info.json | 98 + .../emu/hotswap/keymaps/default/keymap.c | 37 + .../emu/hotswap/keymaps/via/keymap.c | 55 + .../emu/hotswap/keymaps/via/rules.mk | 2 + keyboards/kineticlabs/emu/hotswap/readme.md | 21 + keyboards/kineticlabs/emu/hotswap/rules.mk | 21 + keyboards/kineticlabs/emu/soldered/config.h | 42 + keyboards/kineticlabs/emu/soldered/info.json | 280 ++ .../emu/soldered/keymaps/default/keymap.c | 37 + .../emu/soldered/keymaps/via/keymap.c | 55 + .../emu/soldered/keymaps/via/rules.mk | 2 + .../emu/soldered/keymaps/wkl/keymap.c | 37 + keyboards/kineticlabs/emu/soldered/readme.md | 21 + keyboards/kineticlabs/emu/soldered/rules.mk | 21 + keyboards/kineticlabs/emu/soldered/soldered.c | 17 + keyboards/kineticlabs/emu/soldered/soldered.h | 69 + keyboards/kingly_keys/ave/ortho/info.json | 2 - keyboards/kingly_keys/ave/ortho/rules.mk | 5 +- keyboards/kingly_keys/ave/staggered/info.json | 2 - keyboards/kingly_keys/ave/staggered/rules.mk | 5 +- keyboards/kingly_keys/little_foot/info.json | 4 - keyboards/kingly_keys/little_foot/rules.mk | 10 +- keyboards/kingly_keys/romac/info.json | 3 - .../romac/keymaps/boss566y/keymap.c | 7 +- .../romac/keymaps/boss566y/rules.mk | 3 +- keyboards/kingly_keys/romac/rules.mk | 10 +- keyboards/kingly_keys/romac_plus/info.json | 3 - .../romac_plus/keymaps/default/keymap.c | 8 +- keyboards/kingly_keys/romac_plus/rules.mk | 21 +- keyboards/kingly_keys/ropro/info.json | 3 - keyboards/kingly_keys/ropro/rules.mk | 17 +- keyboards/kingly_keys/smd_milk/info.json | 4 - keyboards/kingly_keys/smd_milk/rules.mk | 10 +- keyboards/kingly_keys/soap/info.json | 3 - keyboards/kingly_keys/soap/rules.mk | 17 +- keyboards/kira75/config.h | 73 +- keyboards/kira75/info.json | 4 +- keyboards/kira75/keymaps/default/keymap.c | 16 - keyboards/kira75/kira75.c | 27 - keyboards/kira75/kira75.h | 36 +- keyboards/kira75/rules.mk | 18 +- keyboards/kira80/info.json | 2 - keyboards/kira80/rules.mk | 11 +- keyboards/kiwikeebs/macro/config.h | 2 +- keyboards/kiwikeebs/macro/info.json | 4 +- .../kiwikeebs/macro/keymaps/default/keymap.c | 20 +- .../kiwikeebs/macro/keymaps/via/keymap.c | 34 + .../kiwikeebs/macro/keymaps/via/rules.mk | 1 + keyboards/kiwikeebs/macro/readme.md | 19 + keyboards/kiwikeebs/macro/rules.mk | 6 +- keyboards/kiwikeebs/macro_v2/config.h | 108 + keyboards/kiwikeebs/macro_v2/info.json | 19 + .../macro_v2/keymaps/default/keymap.c | 44 + .../kiwikeebs/macro_v2/keymaps/via/keymap.c | 34 + .../kiwikeebs/macro_v2/keymaps/via/rules.mk | 1 + keyboards/kiwikeebs/macro_v2/macro_v2.c | 29 + keyboards/kiwikeebs/macro_v2/macro_v2.h | 35 + keyboards/kiwikeebs/macro_v2/readme.md | 19 + keyboards/kiwikeebs/macro_v2/rules.mk | 19 + keyboards/kiwikeebs/readme.md | 19 - keyboards/kiwikey/kawii9/info.json | 2 - keyboards/kiwikey/kawii9/rules.mk | 5 +- keyboards/kiwikey/wanderland/info.json | 2 - .../wanderland/keymaps/stanrc85/keymap.c | 42 +- .../wanderland/keymaps/stanrc85/rules.mk | 3 +- keyboards/kiwikey/wanderland/rules.mk | 5 +- keyboards/kmac/config.h | 70 +- keyboards/kmac/info.json | 4 - keyboards/kmac/keymaps/default/keymap.c | 6 - .../kmac/keymaps/default_tkl_ansi/keymap.c | 6 - .../keymaps/default_tkl_ansi_wkl/keymap.c | 6 - keyboards/kmac/rules.mk | 16 +- keyboards/kmac_pad/info.json | 2 - keyboards/kmac_pad/rules.mk | 5 +- keyboards/kmini/config.h | 6 +- keyboards/kmini/info.json | 2 - keyboards/kmini/keymaps/default/keymap.c | 13 +- keyboards/kmini/kmini.c | 25 - keyboards/kmini/kmini.h | 29 +- keyboards/kmini/rules.mk | 16 +- keyboards/knobgoblin/info.json | 2 - .../keymaps/{ortho => default}/keymap.c | 0 .../keymaps/{ortho => default}/readme.md | 0 .../knobgoblin/keymaps/moults31/keymap.c | 171 + .../knobgoblin/keymaps/moults31/readme.md | 3 + .../knobgoblin/keymaps/moults31/rules.mk | 3 + keyboards/knobgoblin/keymaps/via/keymap.c | 8 +- keyboards/knobgoblin/knobgoblin.c | 12 +- keyboards/knobgoblin/rules.mk | 8 +- keyboards/knops/mini/config.h | 75 +- keyboards/knops/mini/info.json | 4 +- .../mini/keymaps/default-gsm-newbs/keymap.c | 42 +- keyboards/knops/mini/keymaps/default/keymap.c | 108 +- keyboards/knops/mini/keymaps/knops/keymap.c | 14 +- .../knops/mini/keymaps/mverteuil/keymap.c | 4 +- keyboards/knops/mini/mini.c | 28 - keyboards/knops/mini/mini.h | 9 +- keyboards/knops/mini/rules.mk | 18 +- keyboards/kona_classic/config.h | 73 +- keyboards/kona_classic/info.json | 13 +- keyboards/kona_classic/keymaps/ansi/keymap.c | 12 - keyboards/kona_classic/keymaps/ansi/rules.mk | 9 +- .../kona_classic/keymaps/ansi_arrows/keymap.c | 12 - .../kona_classic/keymaps/ansi_arrows/rules.mk | 9 +- .../keymaps/ansi_arrows_lcap/keymap.c | 12 - .../keymaps/ansi_arrows_lcap/rules.mk | 9 +- .../kona_classic/keymaps/ansi_split/keymap.c | 12 - .../kona_classic/keymaps/ansi_split/rules.mk | 9 +- .../keymaps/ansi_split_arrows/keymap.c | 12 - .../keymaps/ansi_split_arrows/rules.mk | 9 +- .../kona_classic/keymaps/default/keymap.c | 12 - .../kona_classic/keymaps/default/rules.mk | 9 +- keyboards/kona_classic/keymaps/iso/keymap.c | 12 - keyboards/kona_classic/keymaps/iso/rules.mk | 9 +- .../kona_classic/keymaps/iso_arrows/keymap.c | 12 - .../kona_classic/keymaps/iso_arrows/rules.mk | 9 +- .../kona_classic/keymaps/iso_split/keymap.c | 12 - .../kona_classic/keymaps/iso_split/rules.mk | 9 +- .../keymaps/iso_split_arrows/keymap.c | 12 - .../keymaps/iso_split_arrows/rules.mk | 9 +- keyboards/kona_classic/kona_classic.h | 187 +- keyboards/kona_classic/rules.mk | 18 +- keyboards/kopibeng/mnk88/chconf.h | 31 + keyboards/kopibeng/mnk88/config.h | 82 + keyboards/kopibeng/mnk88/info.json | 495 +++ .../kopibeng/mnk88/keymaps/default/keymap.c | 61 + keyboards/kopibeng/mnk88/keymaps/via/keymap.c | 61 + keyboards/kopibeng/mnk88/keymaps/via/rules.mk | 1 + keyboards/kopibeng/mnk88/mnk88.c | 36 + keyboards/kopibeng/mnk88/mnk88.h | 121 + keyboards/kopibeng/mnk88/readme.md | 19 + keyboards/kopibeng/mnk88/rules.mk | 23 + keyboards/kopibeng/xt65/info.json | 306 +- .../kopibeng/xt65/keymaps/default/keymap.c | 6 +- keyboards/kopibeng/xt65/keymaps/via/keymap.c | 8 +- keyboards/kopibeng/xt65/rules.mk | 5 +- keyboards/kopibeng/xt65/xt65.h | 8 +- keyboards/kopibeng/xt8x/chconf.h | 31 + keyboards/kopibeng/xt8x/config.h | 83 + keyboards/kopibeng/xt8x/info.json | 102 + .../kopibeng/xt8x/keymaps/default/keymap.c | 61 + keyboards/kopibeng/xt8x/keymaps/via/keymap.c | 61 + keyboards/kopibeng/xt8x/keymaps/via/rules.mk | 1 + keyboards/kopibeng/xt8x/readme.md | 21 + keyboards/kopibeng/xt8x/rules.mk | 23 + keyboards/kopibeng/xt8x/xt8x.c | 43 + keyboards/kopibeng/xt8x/xt8x.h | 39 + keyboards/kprepublic/bm16a/bm16a.c | 16 + keyboards/{ => kprepublic}/bm16a/bm16a.h | 0 keyboards/kprepublic/bm16a/config.h | 141 + keyboards/kprepublic/bm16a/info.json | 27 + .../bm16a/keymaps/default/config.h | 0 .../bm16a/keymaps/default/keymap.c | 0 .../bm16a/keymaps/default/readme.md | 0 .../bm16a/keymaps/factory/keymap.c | 0 .../bm16a/keymaps/factory/readme.md | 0 .../bm16a/keymaps/via/keymap.c | 0 .../bm16a/keymaps/via/readme.md | 0 .../kprepublic/bm16a/keymaps/via/rules.mk | 2 + keyboards/kprepublic/bm16a/readme.md | 15 + keyboards/kprepublic/bm16a/rules.mk | 21 + keyboards/{ => kprepublic}/bm16s/bm16s.h | 0 keyboards/{ => kprepublic}/bm16s/config.h | 0 keyboards/kprepublic/bm16s/info.json | 27 + .../bm16s/keymaps/default/keymap.c | 0 .../bm16s/keymaps/media/keymap.c | 0 .../bm16s/keymaps/via/keymap.c | 0 .../bm16s/keymaps/via/readme.md | 0 .../kprepublic/bm16s/keymaps/via/rules.mk | 2 + keyboards/kprepublic/bm16s/readme.md | 13 + keyboards/kprepublic/bm16s/rules.mk | 20 + .../{ => kprepublic}/bm40hsrgb/bm40hsrgb.c | 0 .../{ => kprepublic}/bm40hsrgb/bm40hsrgb.h | 0 keyboards/kprepublic/bm40hsrgb/config.h | 105 + keyboards/kprepublic/bm40hsrgb/info.json | 58 + .../bm40hsrgb/keymaps/default/keymap.c | 0 .../bm40hsrgb/keymaps/default/readme.md | 0 .../bm40hsrgb/keymaps/gabustoledo/config.h | 91 + .../bm40hsrgb/keymaps/gabustoledo/keymap.c | 125 + .../bm40hsrgb/keymaps/gabustoledo/readme.md | 47 + .../bm40hsrgb/keymaps/gabustoledo/rules.mk | 5 + .../bm40hsrgb/keymaps/signynt/config.h | 80 + .../bm40hsrgb/keymaps/signynt/keymap.c | 0 .../bm40hsrgb/keymaps/signynt/readme.md | 117 + .../bm40hsrgb/keymaps/signynt/rules.mk | 7 + .../bm40hsrgb/keymaps/signynt_2_loud/config.h | 80 + .../bm40hsrgb/keymaps/signynt_2_loud/keymap.c | 0 .../keymaps/signynt_2_loud/readme.md | 117 + .../bm40hsrgb/keymaps/signynt_2_loud/rules.mk | 7 + .../keymaps/signynt_2_quiet/config.h | 80 + .../keymaps/signynt_2_quiet/keymap.c | 0 .../keymaps/signynt_2_quiet/readme.md | 117 + .../keymaps/signynt_2_quiet/rules.mk | 7 + .../bm40hsrgb/keymaps/via/keymap.c | 0 .../bm40hsrgb/keymaps/via/readme.md | 0 .../kprepublic/bm40hsrgb/keymaps/via/rules.mk | 2 + .../bm40hsrgb/keymaps/wolff_abnt2/keymap.c | 164 + .../bm40hsrgb/keymaps/wolff_abnt2/readme.md | 35 + keyboards/kprepublic/bm40hsrgb/readme.md | 21 + keyboards/kprepublic/bm40hsrgb/rules.mk | 23 + keyboards/kprepublic/bm43a/bm43a.c | 16 + keyboards/{ => kprepublic}/bm43a/bm43a.h | 0 keyboards/kprepublic/bm43a/config.h | 75 + keyboards/kprepublic/bm43a/info.json | 55 + .../bm43a/keymaps/default/config.h | 0 .../bm43a/keymaps/default/keymap.c | 0 .../bm43a/keymaps/default/readme.md | 0 .../bm43a/keymaps/stevexyz/keymap.c | 0 .../bm43a/keymaps/stevexyz/readme.md | 25 + .../bm43a/keymaps/stevexyz/rules.mk | 8 + keyboards/kprepublic/bm43a/readme.md | 15 + keyboards/kprepublic/bm43a/rules.mk | 19 + keyboards/kprepublic/bm43hsrgb/bm43hsrgb.c | 16 + keyboards/kprepublic/bm43hsrgb/bm43hsrgb.h | 30 + keyboards/kprepublic/bm43hsrgb/config.h | 66 + keyboards/kprepublic/bm43hsrgb/info.json | 55 + .../bm43hsrgb/keymaps/bitstarr/config.h | 35 + .../bm43hsrgb/keymaps/bitstarr/keymap.c | 68 + .../bm43hsrgb/keymaps/bitstarr/readme.md | 107 + .../bm43hsrgb/keymaps/bitstarr/rules.mk | 1 + .../bm43hsrgb/keymaps/default/keymap.c | 34 + .../bm43hsrgb/keymaps/default/readme.md | 27 + keyboards/kprepublic/bm43hsrgb/readme.md | 18 + keyboards/kprepublic/bm43hsrgb/rules.mk | 21 + .../bm60hsrgb}/keymaps/default/keymap.c | 0 .../bm60hsrgb}/keymaps/default/readme.md | 0 .../keymaps/jbradforddillon/keymap.c | 0 .../keymaps/jbradforddillon/readme.md | 0 .../bm60hsrgb}/keymaps/via/keymap.c | 0 .../bm60hsrgb}/keymaps/via/readme.md | 0 .../kprepublic/bm60hsrgb/keymaps/via/rules.mk | 1 + keyboards/kprepublic/bm60hsrgb/readme.md | 13 + keyboards/kprepublic/bm60hsrgb/rev1/config.h | 107 + keyboards/kprepublic/bm60hsrgb/rev1/info.json | 77 + keyboards/kprepublic/bm60hsrgb/rev1/rev1.c | 50 + keyboards/kprepublic/bm60hsrgb/rev1/rev1.h | 32 + keyboards/kprepublic/bm60hsrgb/rev1/rules.mk | 24 + .../bm60hsrgb_iso}/keymaps/default/keymap.c | 0 .../bm60hsrgb_iso}/keymaps/default/readme.md | 0 .../keymaps/iso_nordic_sleepmode/config.h | 0 .../keymaps/iso_nordic_sleepmode/keymap.c | 0 .../keymaps/iso_nordic_sleepmode/readme.md | 0 keyboards/kprepublic/bm60hsrgb_iso/readme.md | 19 + .../kprepublic/bm60hsrgb_iso/rev1/config.h | 123 + .../kprepublic/bm60hsrgb_iso/rev1/info.json | 75 + .../kprepublic/bm60hsrgb_iso/rev1/rev1.c | 52 + .../bm60hsrgb_iso/rev1/rev1.h} | 0 .../kprepublic/bm60hsrgb_iso/rev1/rules.mk | 22 + .../keymaps/carlosala/config.h | 6 + .../keymaps/carlosala/keymap.c | 25 + .../keymaps/carlosala/rules.mk | 2 + .../bm60hsrgb_poker/keymaps/david/keymap.c | 58 + .../bm60hsrgb_poker}/keymaps/default/keymap.c | 0 .../keymaps/ipetepete/keymap.c | 0 .../keymaps/ipetepete/readme.md | 0 .../keymaps/ipetepete/rules.mk | 0 .../bm60hsrgb_poker}/keymaps/via/keymap.c | 0 .../bm60hsrgb_poker/keymaps/via/rules.mk | 2 + .../kprepublic/bm60hsrgb_poker/readme.md | 13 + .../kprepublic/bm60hsrgb_poker/rev1/config.h | 121 + .../kprepublic/bm60hsrgb_poker/rev1/info.json | 72 + .../kprepublic/bm60hsrgb_poker/rev1/rev1.c | 52 + .../bm60hsrgb_poker/rev1/rev1.h} | 0 .../kprepublic/bm60hsrgb_poker/rev1/rules.mk | 22 + .../bm65hsrgb/keymaps/default/keymap.c | 34 + .../bm65hsrgb/keymaps/default/readme.md | 1 + keyboards/kprepublic/bm65hsrgb/readme.md | 24 + keyboards/kprepublic/bm65hsrgb/rev1/config.h | 122 + keyboards/kprepublic/bm65hsrgb/rev1/info.json | 82 + keyboards/kprepublic/bm65hsrgb/rev1/readme.md | 24 + keyboards/kprepublic/bm65hsrgb/rev1/rev1.c | 44 + keyboards/kprepublic/bm65hsrgb/rev1/rev1.h | 41 + keyboards/kprepublic/bm65hsrgb/rev1/rules.mk | 24 + .../kprepublic/bm65hsrgb_iso/bm65hsrgb_iso.c | 59 + .../kprepublic/bm65hsrgb_iso/bm65hsrgb_iso.h | 34 + keyboards/kprepublic/bm65hsrgb_iso/config.h | 119 + keyboards/kprepublic/bm65hsrgb_iso/info.json | 83 + .../bm65hsrgb_iso/keymaps/deadolus/config.h | 27 + .../bm65hsrgb_iso/keymaps/deadolus/keymap.c | 283 ++ .../bm65hsrgb_iso/keymaps/deadolus/keymap.h | 63 + .../bm65hsrgb_iso/keymaps/deadolus/readme.md | 20 + .../bm65hsrgb_iso/keymaps/deadolus/rules.mk | 4 + .../bm65hsrgb_iso/keymaps/default/keymap.c | 36 + .../bm65hsrgb_iso/keymaps/via/keymap.c | 52 + .../bm65hsrgb_iso/keymaps/via/readme.md | 1 + .../bm65hsrgb_iso/keymaps/via/rules.mk | 1 + keyboards/kprepublic/bm65hsrgb_iso/readme.md | 24 + keyboards/kprepublic/bm65hsrgb_iso/rules.mk | 24 + keyboards/kprepublic/bm68hsrgb/bm68hsrgb.c | 44 + .../bm68hsrgb/bm68hsrgb.h} | 0 keyboards/kprepublic/bm68hsrgb/config.h | 174 + keyboards/kprepublic/bm68hsrgb/info.json | 79 + .../bm68hsrgb}/keymaps/default/keymap.c | 0 .../bm68hsrgb}/keymaps/default/readme.md | 0 .../bm68hsrgb/keymaps/peepeetee/config.h | 132 + .../bm68hsrgb}/keymaps/peepeetee/keymap.c | 0 .../bm68hsrgb}/keymaps/peepeetee/keymap.h | 0 .../bm68hsrgb}/keymaps/peepeetee/readme.md | 0 .../bm68hsrgb}/keymaps/via/keymap.c | 0 .../bm68hsrgb}/keymaps/via/readme.md | 0 .../kprepublic/bm68hsrgb/keymaps/via/rules.mk | 1 + keyboards/kprepublic/bm68hsrgb/readme.md | 24 + keyboards/kprepublic/bm68hsrgb/rules.mk | 24 + keyboards/kprepublic/bm80hsrgb/bm80hsrgb.c | 142 + keyboards/kprepublic/bm80hsrgb/bm80hsrgb.h | 43 + keyboards/kprepublic/bm80hsrgb/config.h | 142 + keyboards/kprepublic/bm80hsrgb/info.json | 98 + .../bm80hsrgb/keymaps/default/keymap.c | 51 + .../bm80hsrgb/keymaps/default/readme.md | 1 + .../bm80hsrgb/keymaps/peepeetee/config.h | 97 + .../bm80hsrgb/keymaps/peepeetee/keymap.c | 51 + .../kprepublic/bm80hsrgb/keymaps/via/keymap.c | 57 + .../bm80hsrgb/keymaps/via/readme.md | 1 + .../kprepublic/bm80hsrgb/keymaps/via/rules.mk | 1 + keyboards/kprepublic/bm80hsrgb/readme.md | 30 + keyboards/kprepublic/bm80hsrgb/rules.mk | 24 + keyboards/kprepublic/cospad/config.h | 150 + keyboards/{ => kprepublic}/cospad/cospad.c | 0 keyboards/{ => kprepublic}/cospad/cospad.h | 31 + keyboards/kprepublic/cospad/info.json | 196 + .../cospad/keymaps/default/keymap.c | 0 .../kprepublic/cospad/keymaps/detrus/keymap.c | 367 ++ .../keymaps/split_plus_and_zero/keymap.c | 0 .../cospad/keymaps/split_zero/keymap.c | 0 .../cospad/keymaps/via/keymap.c | 0 .../kprepublic/cospad/keymaps/via/rules.mk | 1 + keyboards/kprepublic/cospad/readme.md | 18 + keyboards/kprepublic/cospad/rules.mk | 21 + keyboards/kprepublic/jj40/config.h | 50 + keyboards/kprepublic/jj40/info.json | 18 + keyboards/{ => kprepublic}/jj40/jj40.c | 0 keyboards/{ => kprepublic}/jj40/jj40.h | 0 .../jj40/keymaps/ajp10304/readme.md | 117 + .../jj40/keymaps/cockpit/keymap.c | 0 .../kprepublic/jj40/keymaps/cockpit/readme.md | 55 + .../jj40/keymaps/default/keymap.c | 0 .../jj40/keymaps/fun40/config.h | 0 .../jj40/keymaps/fun40/keymap.c | 0 .../jj40/keymaps/fun40/readme.md | 0 .../kprepublic/jj40/keymaps/fun40/rules.mk | 21 + .../jj40/keymaps/krusli/config.h | 0 .../jj40/keymaps/krusli/keymap.c | 0 .../jj40/keymaps/krusli/numpad.txt | 0 .../jj40/keymaps/krusli/readme.md | 0 .../jj40/keymaps/krusli/rules.mk | 0 .../jj40/keymaps/oscillope/config.h | 0 .../jj40/keymaps/oscillope/keymap.c | 0 .../jj40/keymaps/oscillope/rules.mk | 11 + .../jj40/keymaps/skewwhiffy/keymap.c | 219 ++ .../jj40/keymaps/stevexyz/config.h | 0 .../jj40/keymaps/stevexyz/keymap.c | 0 .../jj40/keymaps/stevexyz/readme.md | 0 .../kprepublic/jj40/keymaps/stevexyz/rules.mk | 19 + .../jj40/keymaps/suzuken/config.h | 0 .../jj40/keymaps/suzuken/keymap.c | 0 .../jj40/keymaps/via/keymap.c | 0 .../jj40/keymaps/via/rules.mk | 0 .../jj40/keymaps/waples/config.h | 0 .../jj40/keymaps/waples/keymap.c | 0 .../kprepublic/jj40/keymaps/waples/readme.md | 49 + .../kprepublic/jj40/keymaps/waples/rules.mk | 10 + keyboards/kprepublic/jj40/readme.md | 21 + keyboards/kprepublic/jj40/rules.mk | 25 + keyboards/kprepublic/jj4x4/config.h | 53 + keyboards/kprepublic/jj4x4/info.json | 27 + keyboards/{ => kprepublic}/jj4x4/jj4x4.c | 0 keyboards/{ => kprepublic}/jj4x4/jj4x4.h | 0 .../jj4x4/keymaps/default/keymap.c | 0 .../jj4x4/keymaps/via/keymap.c | 0 .../kprepublic/jj4x4/keymaps/via/rules.mk | 1 + keyboards/kprepublic/jj4x4/readme.md | 39 + keyboards/kprepublic/jj4x4/rules.mk | 22 + keyboards/{ => kprepublic}/jj50/config.h | 0 keyboards/kprepublic/jj50/info.json | 10 + keyboards/{ => kprepublic}/jj50/jj50.c | 0 keyboards/{ => kprepublic}/jj50/jj50.h | 0 .../jj50/keymaps/abstractkb/config.h | 0 .../jj50/keymaps/abstractkb/keymap.c | 135 + .../jj50/keymaps/abstractkb/readme.md | 0 .../keymaps/abstractkb_gergomatch/config.h | 0 .../keymaps/abstractkb_gergomatch/keymap.c | 135 + .../keymaps/abstractkb_gergomatch/readme.md | 0 .../jj50/keymaps/archetype/README.md | 0 .../jj50/keymaps/archetype/config.h | 0 .../jj50/keymaps/archetype/keymap.c | 0 .../jj50/keymaps/archetype/rules.mk | 0 .../jj50/keymaps/default/README.md | 0 .../jj50/keymaps/default/keymap.c | 0 .../jj50/keymaps/yoonbae81/config.h | 0 .../jj50/keymaps/yoonbae81/keymap.c | 0 .../jj50/keymaps/yoonbae81/rules.mk | 0 keyboards/kprepublic/jj50/readme.md | 21 + keyboards/kprepublic/jj50/rules.mk | 19 + keyboards/ktec/daisy/config.h | 149 + keyboards/{ => ktec}/daisy/daisy.c | 0 keyboards/{ => ktec}/daisy/daisy.h | 0 keyboards/ktec/daisy/info.json | 103 + .../{ => ktec}/daisy/keymaps/default/keymap.c | 0 .../daisy/keymaps/default/readme.md | 0 .../{ => ktec}/daisy/keymaps/via/keymap.c | 0 .../{ => ktec}/daisy/keymaps/via/readme.md | 0 keyboards/ktec/daisy/keymaps/via/rules.mk | 1 + keyboards/ktec/daisy/readme.md | 15 + keyboards/ktec/daisy/rules.mk | 19 + keyboards/ktec/ergodone/config.h | 78 + keyboards/{ => ktec}/ergodone/ergodone.c | 0 keyboards/ktec/ergodone/ergodone.h | 156 + keyboards/{ => ktec}/ergodone/expander.c | 28 +- keyboards/{ => ktec}/ergodone/expander.h | 5 +- keyboards/ktec/ergodone/info.json | 104 + .../{ => ktec}/ergodone/keymaps/art/keymap.c | 0 .../ktec/ergodone/keymaps/default/keymap.c | 193 + .../ergodone/keymaps/default/readme.md | 0 .../ergodone/keymaps/eozaki/keymap.c | 0 .../ergodone/keymaps/eozaki/readme.md | 0 .../ergodone/keymaps/erovia/config.h | 0 .../ktec/ergodone/keymaps/erovia/keymap.c | 229 ++ .../ergodone/keymaps/erovia/readme.md | 0 .../ergodone/keymaps/erovia/rules.mk | 0 .../ergodone/keymaps/kloki/keymap.c | 0 .../ergodone/keymaps/kloki/readme.md | 0 .../{ => ktec}/ergodone/keymaps/vega/keymap.c | 0 .../{ => ktec}/ergodone/keymaps/vega/rules.mk | 0 .../{ => ktec}/ergodone/keymaps/via/config.h | 0 .../{ => ktec}/ergodone/keymaps/via/keymap.c | 0 .../{ => ktec}/ergodone/keymaps/via/readme.md | 0 keyboards/ktec/ergodone/keymaps/via/rules.mk | 2 + keyboards/{ => ktec}/ergodone/matrix.c | 0 keyboards/ktec/ergodone/readme.md | 28 + keyboards/ktec/ergodone/rules.mk | 28 + .../{ => ktec}/staryu/backlight_staryu.h | 0 keyboards/{ => ktec}/staryu/config.h | 0 keyboards/ktec/staryu/info.json | 10 + .../staryu/keymaps/default/README.md | 0 .../staryu/keymaps/default/keymap.c | 0 .../staryu/keymaps/default/rules.mk | 0 .../staryu/keymaps/krusli/README.md | 0 .../{ => ktec}/staryu/keymaps/krusli/keymap.c | 0 keyboards/ktec/staryu/readme.md | 15 + keyboards/ktec/staryu/rules.mk | 19 + keyboards/{ => ktec}/staryu/staryu.c | 0 keyboards/{ => ktec}/staryu/staryu.h | 0 keyboards/kudox/rev1/rev1.c | 21 - keyboards/kudox/rules.mk | 18 +- keyboards/kudox_game/info.json | 2 - keyboards/kudox_game/rev1/rev1.c | 21 - keyboards/kudox_game/rules.mk | 18 +- keyboards/kv/revt/info.json | 2 - keyboards/kv/revt/rules.mk | 8 +- keyboards/kwub/bloop/bloop.c | 17 + keyboards/kwub/bloop/bloop.h | 76 + keyboards/kwub/bloop/config.h | 63 + keyboards/kwub/bloop/info.json | 43 + keyboards/kwub/bloop/keymaps/crispyy/keymap.c | 39 + keyboards/kwub/bloop/keymaps/default/keymap.c | 39 + .../kwub/bloop/keymaps/default/readme.md | 1 + .../kwub/bloop/keymaps/kevin_hhkb/keymap.c | 39 + keyboards/kwub/bloop/keymaps/via/keymap.c | 55 + keyboards/kwub/bloop/keymaps/via/readme.md | 1 + keyboards/kwub/bloop/keymaps/via/rules.mk | 1 + keyboards/kwub/bloop/readme.md | 24 + keyboards/kwub/bloop/rules.mk | 19 + keyboards/ky01/info.json | 515 +-- keyboards/ky01/rules.mk | 5 +- keyboards/kyria/info.json | 63 - keyboards/kyria/keymaps/asapjockey/config.h | 47 - keyboards/kyria/keymaps/asapjockey/keymap.c | 313 -- keyboards/kyria/keymaps/asapjockey/rules.mk | 5 - keyboards/kyria/keymaps/benji/config.h | 34 - keyboards/kyria/keymaps/benji/keymap.c | 247 -- keyboards/kyria/keymaps/benji/rules.mk | 3 - keyboards/kyria/keymaps/cjuniet/config.h | 37 - keyboards/kyria/keymaps/cjuniet/keymap.c | 127 - keyboards/kyria/keymaps/cjuniet/rules.mk | 6 - keyboards/kyria/keymaps/corodiak/config.h | 45 - keyboards/kyria/keymaps/corodiak/rules.mk | 4 - keyboards/kyria/keymaps/cwebster2/config.h | 55 - keyboards/kyria/keymaps/cwebster2/keymap.c | 397 -- keyboards/kyria/keymaps/cwebster2/rules.mk | 5 - keyboards/kyria/keymaps/default/config.h | 33 - keyboards/kyria/keymaps/default/keymap.c | 220 -- keyboards/kyria/keymaps/default/rules.mk | 3 - keyboards/kyria/keymaps/drashna/config.h | 35 - keyboards/kyria/keymaps/drashna/keymap.c | 194 - keyboards/kyria/keymaps/drashna/rules.mk | 21 - keyboards/kyria/keymaps/ghidalgo93/config.h | 41 - keyboards/kyria/keymaps/ghidalgo93/keymap.c | 246 -- keyboards/kyria/keymaps/ghidalgo93/rules.mk | 4 - keyboards/kyria/keymaps/gotham/config.h | 48 - keyboards/kyria/keymaps/gotham/keymap.c | 127 - keyboards/kyria/keymaps/gotham/rules.mk | 21 - keyboards/kyria/keymaps/j-inc/config.h | 45 - keyboards/kyria/keymaps/j-inc/keymap.c | 371 -- keyboards/kyria/keymaps/j-inc/rules.mk | 18 - keyboards/kyria/keymaps/jhelvy/config.h | 33 - keyboards/kyria/keymaps/jhelvy/keymap.c | 202 - keyboards/kyria/keymaps/jhelvy/rules.mk | 8 - keyboards/kyria/keymaps/kejadlen/config.h | 47 - keyboards/kyria/keymaps/kejadlen/rules.mk | 5 - keyboards/kyria/keymaps/mattir/config.h | 55 - keyboards/kyria/keymaps/mattir/keymap.c | 292 -- keyboards/kyria/keymaps/mattir/rules.mk | 4 - keyboards/kyria/keymaps/mattir2/rules.mk | 4 - keyboards/kyria/keymaps/ninjonas/config.h | 37 - keyboards/kyria/keymaps/ninjonas/oled.c | 209 - keyboards/kyria/keymaps/ninjonas/rules.mk | 6 - keyboards/kyria/keymaps/pierrec83/config.h | 65 - keyboards/kyria/keymaps/pierrec83/rules.mk | 5 - keyboards/kyria/keymaps/plattfot/README.md | 168 - keyboards/kyria/keymaps/plattfot/config.h | 40 - keyboards/kyria/keymaps/plattfot/keymap.c | 437 --- keyboards/kyria/keymaps/plattfot/rules.mk | 5 - keyboards/kyria/keymaps/rmw/config.h | 36 - keyboards/kyria/keymaps/rmw/rules.mk | 4 - keyboards/kyria/keymaps/shinze/config.h | 32 - keyboards/kyria/keymaps/shinze/keymap.c | 248 -- keyboards/kyria/keymaps/shinze/rules.mk | 3 - keyboards/kyria/keymaps/tessachka/config.h | 29 - keyboards/kyria/keymaps/tessachka/keymap.c | 241 -- keyboards/kyria/keymaps/tessachka/rules.mk | 3 - keyboards/kyria/keymaps/thomasbaart/config.h | 47 - keyboards/kyria/keymaps/thomasbaart/keymap.c | 359 -- keyboards/kyria/keymaps/thomasbaart/rules.mk | 5 - keyboards/kyria/keymaps/winternebs/config.h | 31 - keyboards/kyria/keymaps/winternebs/keymap.c | 726 ---- keyboards/kyria/keymaps/winternebs/rules.mk | 12 - keyboards/kyria/readme.md | 21 - keyboards/kyria/rev1/config.h | 64 - keyboards/kyria/rev1/rev1.c | 17 - keyboards/kyria/rev1/rev1.h | 82 - keyboards/kyria/rev1/rules.mk | 3 - keyboards/kyria/rules.mk | 27 - keyboards/labyrinth75/info.json | 4 +- keyboards/labyrinth75/rules.mk | 5 +- keyboards/laptreus/info.json | 2 - keyboards/laptreus/laptreus.h | 33 +- keyboards/laptreus/rules.mk | 19 +- keyboards/latin17rgb/config.h | 127 +- keyboards/latin17rgb/info.json | 2 - keyboards/latin17rgb/latin17rgb.c | 2 +- keyboards/latin17rgb/rules.mk | 5 +- keyboards/latin47ble/info.json | 2 - keyboards/latin47ble/rules.mk | 8 +- keyboards/latin60rgb/config.h | 100 +- keyboards/latin60rgb/info.json | 2 - keyboards/latin60rgb/latin60rgb.c | 2 +- keyboards/latin60rgb/rules.mk | 5 +- keyboards/latin64ble/info.json | 2 - keyboards/latin64ble/rules.mk | 8 +- keyboards/latin6rgb/config.h | 106 +- keyboards/latin6rgb/info.json | 2 - keyboards/latin6rgb/latin6rgb.c | 2 +- keyboards/latin6rgb/rules.mk | 7 +- keyboards/latinpad/config.h | 54 +- keyboards/latinpad/info.json | 3 - keyboards/latinpad/keymaps/default/keymap.c | 7 +- keyboards/latinpad/keymaps/via/keymap.c | 7 +- keyboards/latinpad/keymaps/via/rules.mk | 1 + keyboards/latinpad/rules.mk | 13 +- keyboards/latinpadble/config.h | 74 +- keyboards/latinpadble/info.json | 10 +- .../latinpadble/keymaps/default/keymap.c | 7 +- keyboards/latinpadble/keymaps/via/keymap.c | 7 +- keyboards/latinpadble/rules.mk | 40 +- keyboards/lattice60/info.json | 2 - keyboards/lattice60/rules.mk | 17 +- keyboards/launchpad/config.h | 5 +- .../launchpad/keymaps/brandonschlack/rules.mk | 2 +- keyboards/launchpad/keymaps/default/keymap.c | 4 - keyboards/launchpad/keymaps/drashna/rules.mk | 2 +- keyboards/launchpad/launchpad.h | 10 +- keyboards/launchpad/rev1/info.json | 2 - keyboards/launchpad/rev1/rev1.c | 8 - keyboards/launchpad/rev1/rev1.h | 26 +- keyboards/launchpad/rules.mk | 18 +- keyboards/lazydesigners/bolt/info.json | 2 - .../bolt/{ => keymaps}/via/keymap.c | 0 .../lazydesigners/bolt/keymaps/via/rules.mk | 2 + keyboards/lazydesigners/bolt/rules.mk | 5 +- keyboards/lazydesigners/cassette8/cassette8.c | 17 + keyboards/lazydesigners/cassette8/cassette8.h | 28 + keyboards/lazydesigners/cassette8/config.h | 58 + keyboards/lazydesigners/cassette8/info.json | 19 + .../cassette8/keymaps/default/keymap.c | 34 + .../cassette8/keymaps/via/keymap.c | 34 + .../cassette8/keymaps/via/rules.mk | 2 + keyboards/lazydesigners/cassette8/readme.md | 21 + keyboards/lazydesigners/cassette8/rules.mk | 19 + keyboards/lazydesigners/dimple/info.json | 2 - keyboards/lazydesigners/dimple/rules.mk | 9 +- keyboards/lazydesigners/dimpleplus/info.json | 2 - keyboards/lazydesigners/dimpleplus/rules.mk | 5 +- keyboards/lazydesigners/the30/info.json | 3 - keyboards/lazydesigners/the30/rules.mk | 15 +- keyboards/lazydesigners/the40/info.json | 2 - .../lazydesigners/the40/keymaps/via/keymap.c | 40 +- keyboards/lazydesigners/the40/rules.mk | 5 +- keyboards/lazydesigners/the40/the40.h | 2 +- keyboards/lazydesigners/the50/info.json | 3 - keyboards/lazydesigners/the50/rules.mk | 10 +- keyboards/lazydesigners/the60/rev1/info.json | 3 - keyboards/lazydesigners/the60/rev1/rules.mk | 3 +- keyboards/lazydesigners/the60/rev2/info.json | 12 +- keyboards/lazydesigners/the60/rev2/rev2.h | 20 +- keyboards/lazydesigners/the60/rev2/rules.mk | 5 +- keyboards/lck75/config.h | 8 +- keyboards/lck75/info.json | 23 +- keyboards/lck75/keymaps/7u/keymap.c | 42 + keyboards/lck75/keymaps/7u_iso/keymap.c | 42 + keyboards/lck75/keymaps/7u_sbs/keymap.c | 42 + keyboards/lck75/keymaps/default/keymap.c | 30 +- keyboards/lck75/keymaps/iso/keymap.c | 41 + keyboards/lck75/keymaps/iso_sbs/keymap.c | 41 + keyboards/lck75/keymaps/sbs/keymap.c | 41 + keyboards/lck75/keymaps/via/keymap.c | 56 +- keyboards/lck75/lck75.c | 11 +- keyboards/lck75/lck75.h | 137 +- keyboards/lck75/rules.mk | 13 +- keyboards/le_chiffre/config.h | 51 +- keyboards/le_chiffre/info.json | 2 - keyboards/le_chiffre/keymaps/default/keymap.c | 6 +- keyboards/le_chiffre/keymaps/via/keymap.c | 5 +- keyboards/le_chiffre/rules.mk | 13 +- keyboards/leafcutterlabs/bigknob/info.json | 2 - keyboards/leafcutterlabs/bigknob/rules.mk | 5 +- keyboards/leeku/finger65/info.json | 2 - .../leeku/finger65/keymaps/madhatter/keymap.c | 2 +- keyboards/leeku/finger65/rules.mk | 14 +- keyboards/lefishe/config.h | 48 + keyboards/lefishe/info.json | 19 + keyboards/lefishe/keymaps/default/keymap.c | 38 + keyboards/lefishe/keymaps/wk_sbs/keymap.c | 38 + keyboards/lefishe/keymaps/wkl/keymap.c | 38 + keyboards/lefishe/keymaps/wkl_sbs/keymap.c | 38 + keyboards/lefishe/lefishe.c | 17 + keyboards/lefishe/lefishe.h | 76 + keyboards/lefishe/readme.md | 24 + keyboards/lefishe/rules.mk | 21 + keyboards/lefty/config.h | 44 + keyboards/lefty/info.json | 43 + keyboards/lefty/keymaps/default/keymap.c | 64 + keyboards/lefty/keymaps/via/keymap.c | 65 + keyboards/lefty/keymaps/via/rules.mk | 1 + keyboards/lefty/lefty.c | 47 + keyboards/lefty/lefty.h | 37 + keyboards/lefty/readme.md | 27 + keyboards/lefty/rev1/config.h | 22 + keyboards/lefty/rev1/rev1.c | 17 + keyboards/lefty/rev1/rules.mk | 0 keyboards/lefty/rev2/config.h | 21 + keyboards/lefty/rev2/rev2.c | 17 + keyboards/lefty/rev2/rules.mk | 0 keyboards/lefty/rules.mk | 25 + keyboards/lets_split/info.json | 2 - .../keymaps/DE_programming/keymap.c | 6 +- .../lets_split/keymaps/DE_simple/keymap.c | 4 +- .../lets_split/keymaps/OLED_sample/rules.mk | 2 +- .../keymaps/bbaserdem_right/rules.mk | 4 +- .../lets_split/keymaps/cpeters1982/keymap.c | 2 +- .../keymaps/heartrobotninja/rules.mk | 2 +- keyboards/lets_split/keymaps/mjt/rules.mk | 2 +- keyboards/lets_split/keymaps/piemod/rules.mk | 2 +- keyboards/lets_split/keymaps/pyrol/rules.mk | 2 +- .../lets_split/keymaps/shaymdev/config.h | 60 + .../lets_split/keymaps/shaymdev/keymap.c | 188 + .../lets_split/keymaps/shaymdev/rules.mk | 5 + keyboards/lets_split/keymaps/via/config.h | 2 + keyboards/lets_split/keymaps/xk/rules.mk | 2 +- keyboards/lets_split/rev1/rev1.c | 14 - keyboards/lets_split/rev2/rev2.c | 22 - keyboards/lets_split/rules.mk | 17 +- keyboards/lets_split/sockets/config.h | 5 - keyboards/lets_split/sockets/sockets.c | 21 - keyboards/lets_split_eh/eh/info.json | 2 - .../keymaps/mikethetiger/keymap.c | 4 +- keyboards/lets_split_eh/rules.mk | 18 +- keyboards/lfkeyboards/issi.h | 5 +- keyboards/lfkeyboards/lfk65_hs/config.h | 53 +- keyboards/lfkeyboards/lfk65_hs/info.json | 4 +- .../lfk65_hs/keymaps/default/keymap.c | 20 +- keyboards/lfkeyboards/lfk65_hs/lfk65_hs.c | 11 - keyboards/lfkeyboards/lfk65_hs/lfk65_hs.h | 80 +- keyboards/lfkeyboards/lfk78/config.h | 73 - .../lfk78/keymaps/ca178858/keymap.c | 10 +- .../lfk78/keymaps/ca178858/rules.mk | 4 +- keyboards/lfkeyboards/lfk78/post_rules.mk | 14 + keyboards/lfkeyboards/lfk78/revb/info.json | 2 - keyboards/lfkeyboards/lfk78/revc/info.json | 2 - keyboards/lfkeyboards/lfk78/revj/info.json | 2 - keyboards/lfkeyboards/lfk78/rules.mk | 32 +- keyboards/lfkeyboards/lfk87/config.h | 53 +- keyboards/lfkeyboards/lfk87/info.json | 2 - .../lfk87/keymaps/ca178858/keymap.c | 14 +- .../lfk87/keymaps/ca178858/rules.mk | 4 +- .../lfk87/keymaps/default/keymap.c | 24 +- .../lfk87/keymaps/default/rules.mk | 10 +- .../lfkeyboards/lfk87/keymaps/gbchk/keymap.c | 12 +- .../lfkeyboards/lfk87/keymaps/gbchk/rules.mk | 5 +- .../lfkeyboards/lfk87/keymaps/iso/keymap.c | 20 +- .../lfkeyboards/lfk87/keymaps/iso/rules.mk | 10 +- keyboards/lfkeyboards/lfk87/lfk87.c | 4 +- keyboards/lfkeyboards/lfk87/lfk87.h | 165 +- keyboards/lfkeyboards/lfk87/post_rules.mk | 13 + keyboards/lfkeyboards/lfk87/rules.mk | 25 +- keyboards/lfkeyboards/lfkpad/config.h | 73 - keyboards/lfkeyboards/lfkpad/info.json | 2 - .../lfkpad/keymaps/pascalpfeil/config.h | 30 + .../lfkpad/keymaps/pascalpfeil/keymap.c | 73 + .../lfkpad/keymaps/pascalpfeil/rules.mk | 2 + keyboards/lfkeyboards/lfkpad/lfkpad.c | 102 - keyboards/lfkeyboards/lfkpad/lfkpad.h | 36 - keyboards/lfkeyboards/lfkpad/post_rules.mk | 7 + keyboards/lfkeyboards/lfkpad/rules.mk | 28 +- keyboards/lfkeyboards/lighting.h | 6 +- keyboards/lfkeyboards/mini1800/config.h | 53 +- keyboards/lfkeyboards/mini1800/info.json | 2 - .../mini1800/keymaps/ca178858/keymap.c | 10 +- .../mini1800/keymaps/ca178858/rules.mk | 4 +- .../mini1800/keymaps/default/keymap.c | 22 +- .../mini1800/keymaps/default/rules.mk | 10 +- keyboards/lfkeyboards/mini1800/mini1800.c | 4 +- keyboards/lfkeyboards/mini1800/mini1800.h | 58 +- keyboards/lfkeyboards/mini1800/post_rules.mk | 9 + keyboards/lfkeyboards/mini1800/rules.mk | 9 - keyboards/lfkeyboards/smk65/info.json | 2 - .../smk65/keymaps/default/keymap.c | 4 +- .../lfkeyboards/smk65/keymaps/iso/keymap.c | 4 +- keyboards/lfkeyboards/smk65/revb/revb.c | 8 +- keyboards/lfkeyboards/smk65/revb/revb.h | 16 - keyboards/lfkeyboards/smk65/rules.mk | 5 +- keyboards/lily58/keymaps/barabas/keymap.c | 11 +- keyboards/lily58/keymaps/bcat/config.h | 16 + keyboards/lily58/keymaps/bcat/keymap.c | 9 +- keyboards/lily58/keymaps/chuan/keymap.c | 7 +- keyboards/lily58/keymaps/curry/rules.mk | 4 +- keyboards/lily58/keymaps/cykedev/keymap.c | 8 +- keyboards/lily58/keymaps/cykedev/rules.mk | 4 +- keyboards/lily58/keymaps/datadavd/config.h | 53 + keyboards/lily58/keymaps/datadavd/keymap.c | 266 ++ keyboards/lily58/keymaps/datadavd/rules.mk | 6 + keyboards/lily58/keymaps/default/keymap.c | 11 +- keyboards/lily58/keymaps/default/rules.mk | 14 +- keyboards/lily58/keymaps/domnantas/keymap.c | 35 +- keyboards/lily58/keymaps/drasbeck/keymap.c | 11 +- keyboards/lily58/keymaps/drasbeck/rules.mk | 5 +- keyboards/lily58/keymaps/gaston/config.h | 26 + keyboards/lily58/keymaps/gaston/keymap.c | 58 + keyboards/lily58/keymaps/gaston/readme.md | 67 + keyboards/lily58/keymaps/gaston/rules.mk | 9 + keyboards/lily58/keymaps/lily58l/keymap.c | 9 +- .../keymaps/manna-harbour_miryoku/config.h | 23 + .../keymaps/manna-harbour_miryoku/keymap.c | 5 + .../lily58/keymaps/mikefightsbears/keymap.c | 16 +- .../lily58/keymaps/mikefightsbears/rules.mk | 4 +- keyboards/lily58/keymaps/muuko/keymap.c | 5 +- keyboards/lily58/keymaps/muuko/rules.mk | 3 +- keyboards/lily58/keymaps/narze/config.h | 58 + keyboards/lily58/keymaps/narze/keymap.c | 468 +++ keyboards/lily58/keymaps/narze/readme.md | 13 + keyboards/lily58/keymaps/narze/rules.mk | 13 + keyboards/lily58/keymaps/ninjonas/rules.mk | 3 +- keyboards/lily58/keymaps/pttbx/config.h | 46 + keyboards/lily58/keymaps/pttbx/keymap.c | 164 + keyboards/lily58/keymaps/pttbx/rules.mk | 5 + keyboards/lily58/keymaps/via/keymap.c | 9 +- keyboards/lily58/keymaps/via/rules.mk | 3 +- keyboards/lily58/keymaps/yshrsmz/keymap.c | 11 +- keyboards/lily58/keymaps/yshrsmz/rules.mk | 2 +- keyboards/lily58/keymaps/yuchi/keymap.c | 11 +- keyboards/lily58/keymaps/yuchi/rules.mk | 4 +- keyboards/lily58/light/info.json | 2 - keyboards/lily58/lily58.c | 4 - keyboards/lily58/rev1/info.json | 2 - keyboards/lily58/rev1/rev1.c | 7 - keyboards/lily58/rules.mk | 19 +- keyboards/lime/config.h | 20 + keyboards/lime/keymaps/default/config.h | 22 + keyboards/lime/keymaps/default/keymap.c | 714 ++++ keyboards/lime/keymaps/default/readme.md | 52 + keyboards/lime/keymaps/default/rules.mk | 9 + keyboards/lime/lib/glcdfont.c | 232 ++ keyboards/lime/lime.c | 46 + keyboards/lime/lime.h | 21 + keyboards/lime/readme.md | 30 + keyboards/lime/rev1/config.h | 68 + keyboards/lime/rev1/info.json | 77 + keyboards/lime/rev1/rev1.c | 38 + keyboards/lime/rev1/rev1.h | 41 + keyboards/lime/rev1/rules.mk | 4 + keyboards/lime/rules.mk | 22 + keyboards/linworks/fave87/config.h | 55 + keyboards/linworks/fave87/fave87.c | 16 + keyboards/linworks/fave87/fave87.h | 129 + keyboards/linworks/fave87/info.json | 499 +++ .../linworks/fave87/keymaps/default/keymap.c | 35 + .../linworks/fave87/keymaps/via/keymap.c | 35 + .../linworks/fave87/keymaps/via/rules.mk | 1 + keyboards/linworks/fave87/readme.md | 18 + keyboards/linworks/fave87/rules.mk | 20 + keyboards/linworks/whale75/info.json | 802 ++-- .../linworks/whale75/keymaps/default/keymap.c | 8 +- .../linworks/whale75/keymaps/via/keymap.c | 16 +- keyboards/linworks/whale75/rules.mk | 5 +- keyboards/linworks/whale75/whale75.c | 26 + keyboards/linworks/whale75/whale75.h | 143 +- keyboards/littlealby/mute/info.json | 2 - keyboards/littlealby/mute/rules.mk | 5 +- .../lizard_trick/tenkey_plusplus/config.h | 2 +- .../lizard_trick/tenkey_plusplus/info.json | 2 - .../lizard_trick/tenkey_plusplus/rules.mk | 5 +- keyboards/ll3macorn/bongopad/bongopad.c | 124 + keyboards/ll3macorn/bongopad/bongopad.h | 18 + keyboards/ll3macorn/bongopad/config.h | 40 + .../bongopad/keymaps/default/keymap.c | 41 + .../bongopad/keymaps/default/rules.mk | 3 + keyboards/ll3macorn/bongopad/readme.md | 10 + keyboards/ll3macorn/bongopad/rules.mk | 23 + keyboards/lm_keyboard/lm60n/info.json | 2 - keyboards/lm_keyboard/lm60n/lm60n.h | 16 +- keyboards/lm_keyboard/lm60n/rules.mk | 5 +- keyboards/longnald/corin/info.json | 2 - keyboards/longnald/corin/rules.mk | 5 +- keyboards/ls_60/chconf.h | 24 + keyboards/ls_60/config.h | 52 + keyboards/ls_60/info.json | 76 + keyboards/ls_60/keymaps/default/keymap.c | 39 + keyboards/ls_60/keymaps/via/keymap.c | 47 + keyboards/ls_60/keymaps/via/rules.mk | 1 + keyboards/ls_60/ls_60.c | 31 + keyboards/ls_60/ls_60.h | 30 + keyboards/ls_60/readme.md | 17 + keyboards/ls_60/rules.mk | 20 + keyboards/lucid/alexa/alexa.c | 14 + keyboards/lucid/alexa/alexa.h | 60 + keyboards/lucid/alexa/config.h | 105 + keyboards/lucid/alexa/info.json | 158 + .../lucid/alexa/keymaps/default/keymap.c | 38 + keyboards/lucid/alexa/keymaps/via/keymap.c | 54 + keyboards/lucid/alexa/keymaps/via/rules.mk | 1 + keyboards/lucid/alexa/readme.md | 25 + keyboards/lucid/alexa/rules.mk | 24 + keyboards/lucid/kbd8x_hs/info.json | 2 - keyboards/lucid/kbd8x_hs/rules.mk | 6 +- keyboards/lucid/phantom_hs/info.json | 2 - keyboards/lucid/phantom_hs/rules.mk | 6 +- keyboards/lucid/phantom_solder/info.json | 2 - .../phantom_solder/keymaps/default/keymap.c | 20 +- .../lucid/phantom_solder/keymaps/via/keymap.c | 35 +- .../lucid/phantom_solder/phantom_solder.h | 6 +- keyboards/lucid/phantom_solder/rules.mk | 6 +- keyboards/lucid/scarlet/info.json | 2 - keyboards/lucid/scarlet/rules.mk | 5 +- keyboards/lyra/config.h | 19 + keyboards/lyra/keymaps/default/config.h | 30 + keyboards/lyra/keymaps/default/keymap.c | 48 + keyboards/lyra/keymaps/default/rules.mk | 1 + keyboards/lyra/keymaps/via/config.h | 30 + keyboards/lyra/keymaps/via/keymap.c | 56 + keyboards/lyra/keymaps/via/rules.mk | 2 + keyboards/lyra/lyra.c | 93 + keyboards/lyra/lyra.h | 23 + keyboards/lyra/readme.md | 20 + keyboards/lyra/rev1/config.h | 50 + keyboards/lyra/rev1/info.json | 90 + keyboards/lyra/rev1/rev1.c | 17 + keyboards/lyra/rev1/rev1.h | 39 + keyboards/lyra/rev1/rules.mk | 24 + keyboards/m10a/info.json | 2 - keyboards/m10a/keymaps/gam3cat/keymap.c | 2 +- keyboards/m10a/keymaps/gam3cat/rules.mk | 3 +- keyboards/m10a/rules.mk | 6 +- keyboards/m3n3van/info.json | 2 - keyboards/m3n3van/rules.mk | 5 +- keyboards/m65/config.h | 33 + keyboards/m65/info.json | 81 + keyboards/m65/keymaps/default/config.h | 20 + keyboards/m65/keymaps/default/keymap.c | 113 + keyboards/m65/keymaps/default/readme.md | 13 + keyboards/m65/keymaps/dk/config.h | 20 + keyboards/m65/keymaps/dk/keymap.c | 114 + keyboards/m65/keymaps/dk/readme.md | 13 + keyboards/m65/keymaps/uk/config.h | 20 + keyboards/m65/keymaps/uk/keymap.c | 114 + keyboards/m65/keymaps/uk/readme.md | 13 + keyboards/m65/m65.c | 19 + keyboards/m65/m65.h | 34 + keyboards/m65/readme.md | 22 + keyboards/m65/rev1/chconf.h | 29 + keyboards/m65/rev1/config.h | 32 + keyboards/m65/rev1/mcuconf.h | 27 + keyboards/m65/rev1/readme.md | 0 keyboards/m65/rev1/rules.mk | 19 + keyboards/machkeyboards/mach3/config.h | 45 + keyboards/machkeyboards/mach3/info.json | 47 + .../mach3/keymaps/default/keymap.c | 24 + .../mach3/keymaps/default/readme.md | 4 + .../machkeyboards/mach3/keymaps/via/keymap.c | 24 + .../machkeyboards/mach3/keymaps/via/rules.mk | 2 + keyboards/machkeyboards/mach3/mach3.c | 42 + keyboards/machkeyboards/mach3/mach3.h | 29 + keyboards/machkeyboards/mach3/readme.md | 22 + keyboards/machkeyboards/mach3/rules.mk | 21 + keyboards/machkeyboards/readme.md | 7 + keyboards/macro1/config.h | 55 + keyboards/macro1/info.json | 84 + keyboards/macro1/keymaps/default/keymap.c | 64 + keyboards/macro1/keymaps/macropad/keymap.c | 63 + keyboards/macro1/keymaps/southpaw/keymap.c | 63 + keyboards/macro1/keymaps/via/keymap.c | 103 + keyboards/macro1/keymaps/via/rules.mk | 1 + keyboards/macro1/macro1.c | 29 + keyboards/macro1/macro1.h | 115 + keyboards/macro1/readme.md | 22 + keyboards/macro1/rules.mk | 20 + keyboards/macro3/config.h | 39 + keyboards/macro3/info.json | 20 + keyboards/macro3/keymaps/default/keymap.c | 18 + keyboards/macro3/macro3.c | 27 + keyboards/macro3/macro3.h | 16 + keyboards/macro3/post_config.h | 17 + keyboards/macro3/readme.md | 26 + keyboards/macro3/rules.mk | 20 + keyboards/majistic/info.json | 2 - keyboards/majistic/rules.mk | 5 +- keyboards/makrosu/config.h | 5 +- keyboards/makrosu/info.json | 2 - keyboards/makrosu/rules.mk | 5 +- keyboards/manta60/info.json | 2 - keyboards/manta60/post_rules.mk | 3 + keyboards/manta60/rules.mk | 9 +- keyboards/manyboard/macro/config.h | 53 + keyboards/manyboard/macro/info.json | 27 + .../manyboard/macro/keymaps/default/keymap.c | 75 + .../manyboard/macro/keymaps/via/keymap.c | 75 + .../manyboard/macro/keymaps/via/rules.mk | 1 + keyboards/manyboard/macro/macro.c | 17 + keyboards/manyboard/macro/macro.h | 31 + keyboards/manyboard/macro/readme.md | 15 + keyboards/manyboard/macro/rules.mk | 20 + keyboards/marksard/leftover30/info.json | 2 - keyboards/marksard/leftover30/rules.mk | 5 +- .../marksard/rhymestone/common/oled_helper.c | 2 +- .../marksard/rhymestone/common/oled_helper.h | 2 +- keyboards/marksard/rhymestone/info.json | 2 - .../rhymestone/keymaps/default/keymap.c | 5 +- .../rhymestone/keymaps/default/rules.mk | 2 +- .../rhymestone/keymaps/switch_tester/rules.mk | 2 +- keyboards/marksard/rhymestone/rev1/config.h | 84 +- keyboards/marksard/rhymestone/rev1/rev1.c | 48 - keyboards/marksard/rhymestone/rules.mk | 5 +- keyboards/massdrop/alt/alt.c | 21 + keyboards/massdrop/alt/alt.h | 2 +- keyboards/massdrop/alt/config.h | 97 +- keyboards/massdrop/alt/config_led.c | 5 +- keyboards/massdrop/alt/config_led.h | 37 +- keyboards/massdrop/alt/info.json | 2 - .../massdrop/alt/keymaps/default_md/keymap.c | 95 +- .../massdrop/alt/keymaps/ewersp/README.md | 14 +- .../massdrop/alt/keymaps/ewersp/keymap.c | 134 +- .../massdrop/alt/keymaps/mac_md/keymap.c | 87 +- .../massdrop/alt/keymaps/pregame/config.h | 78 +- .../massdrop/alt/keymaps/pregame/rules.mk | 4 +- .../alt/keymaps/urbanvanilla/config.h | 2 +- keyboards/massdrop/alt/matrix.c | 182 - keyboards/massdrop/alt/rules.mk | 14 +- keyboards/massdrop/ctrl/config.h | 96 +- keyboards/massdrop/ctrl/config_led.c | 5 +- keyboards/massdrop/ctrl/config_led.h | 34 +- keyboards/massdrop/ctrl/ctrl.c | 21 + keyboards/massdrop/ctrl/ctrl.h | 2 +- keyboards/massdrop/ctrl/info.json | 2 - .../massdrop/ctrl/keymaps/default/keymap.c | 8 - .../massdrop/ctrl/keymaps/default_md/keymap.c | 107 +- .../massdrop/ctrl/keymaps/endgame/config.h | 76 +- .../massdrop/ctrl/keymaps/endgame/keymap.c | 2 +- .../massdrop/ctrl/keymaps/endgame/keymap.h | 1 - .../massdrop/ctrl/keymaps/endgame/rules.mk | 2 - .../massdrop/ctrl/keymaps/foxx1337/README.md | 18 + .../massdrop/ctrl/keymaps/foxx1337/config.h | 100 + .../ctrl/keymaps/foxx1337/hid_protocol.c | 25 + .../ctrl/keymaps/foxx1337/hid_protocol.h | 80 + .../massdrop/ctrl/keymaps/foxx1337/keymap.c | 268 ++ .../ctrl/keymaps/foxx1337/rgb_matrix_user.inc | 44 + .../massdrop/ctrl/keymaps/foxx1337/rules.mk | 6 + .../massdrop/ctrl/keymaps/mac_md/keymap.c | 87 +- .../ctrl/keymaps/matthewrobo/config.h | 76 +- .../ctrl/keymaps/matthewrobo/rules.mk | 2 - .../massdrop/ctrl/keymaps/r-pufky/config.h | 2 + .../massdrop/ctrl/keymaps/r-pufky/keymap.c | 105 +- .../massdrop/ctrl/keymaps/r-pufky/readme.md | 34 +- keyboards/massdrop/ctrl/matrix.c | 182 - keyboards/massdrop/ctrl/rules.mk | 14 +- keyboards/masterworks/classy_tkl/info.json | 2 - .../masterworks/classy_tkl/rev_a/rules.mk | 8 +- keyboards/matchstickworks/southpad/config.h | 100 + keyboards/matchstickworks/southpad/info.json | 37 + .../southpad/keymaps/default/keymap.c | 27 + keyboards/matchstickworks/southpad/readme.md | 23 + keyboards/matchstickworks/southpad/rules.mk | 19 + keyboards/matchstickworks/southpad/southpad.c | 16 + keyboards/matchstickworks/southpad/southpad.h | 44 + keyboards/matrix/abelx/abelx.c | 99 + keyboards/matrix/abelx/abelx.h | 61 + keyboards/matrix/abelx/aw9523b.c | 100 + keyboards/matrix/abelx/aw9523b.h | 62 + .../matrix/abelx/boards/abelx_bd/board.c | 268 ++ .../matrix/abelx/boards/abelx_bd/board.h | 1299 +++++++ .../matrix/abelx/boards/abelx_bd/board.mk | 9 + keyboards/matrix/abelx/bootloader_defs.h | 7 + keyboards/matrix/abelx/chconf.h | 27 + keyboards/matrix/abelx/config.h | 108 + keyboards/matrix/abelx/halconf.h | 31 + keyboards/matrix/abelx/info.json | 15 + .../matrix/abelx/keymaps/default/keymap.c | 41 + keyboards/matrix/abelx/keymaps/iso/keymap.c | 39 + keyboards/matrix/abelx/ld/abelx_boot.ld | 85 + keyboards/matrix/abelx/matrix.c | 108 + keyboards/matrix/abelx/mcuconf.h | 253 ++ keyboards/matrix/abelx/readme.md | 11 + keyboards/matrix/abelx/rules.mk | 55 + keyboards/matrix/abelx/tca6424.c | 117 + keyboards/matrix/abelx/tca6424.h | 42 + keyboards/matrix/cain_re/info.json | 2 - keyboards/matrix/cain_re/rules.mk | 5 +- keyboards/matrix/falcon/config.h | 72 + keyboards/matrix/falcon/falcon.c | 28 + keyboards/matrix/falcon/falcon.h | 51 + keyboards/matrix/falcon/info.json | 145 + .../matrix/falcon/keymaps/default/keymap.c | 32 + keyboards/matrix/falcon/keymaps/via/keymap.c | 46 + keyboards/matrix/falcon/keymaps/via/rules.mk | 2 + keyboards/matrix/falcon/readme.md | 25 + keyboards/matrix/falcon/rules.mk | 21 + keyboards/matrix/m12og/rev1/info.json | 2 - keyboards/matrix/m12og/rev1/rules.mk | 5 +- keyboards/matrix/m12og/rev2/info.json | 2 - keyboards/matrix/m12og/rev2/rules.mk | 10 +- keyboards/matrix/m20add/config.h | 4 +- keyboards/matrix/m20add/info.json | 2 - keyboards/matrix/m20add/m20add.c | 8 +- keyboards/matrix/m20add/mcuconf.h | 65 +- keyboards/matrix/m20add/rgb_ring.c | 4 +- keyboards/matrix/m20add/rules.mk | 4 +- keyboards/matrix/me/config.h | 68 + keyboards/matrix/me/info.json | 13 + keyboards/matrix/me/keymaps/default/keymap.c | 37 + keyboards/matrix/me/keymaps/via/keymap.c | 56 + keyboards/matrix/me/keymaps/via/rules.mk | 2 + keyboards/matrix/me/me.c | 17 + keyboards/matrix/me/me.h | 70 + keyboards/matrix/me/readme.md | 25 + keyboards/matrix/me/rules.mk | 19 + keyboards/matrix/noah/config.h | 52 +- keyboards/matrix/noah/info.json | 6 - keyboards/matrix/noah/matrix.c | 11 + keyboards/matrix/noah/mcuconf.h | 65 +- keyboards/matrix/noah/noah.c | 10 +- keyboards/matrix/noah/rules.mk | 2 +- keyboards/maxipad/info.json | 2 - keyboards/maxipad/promicro/rules.mk | 7 - keyboards/maxipad/rules.mk | 11 +- keyboards/maxipad/teensy2/rules.mk | 7 - keyboards/maxr1998/phoebe/info.json | 3 - .../maxr1998/phoebe/keymaps/default/keymap.c | 14 +- keyboards/maxr1998/phoebe/rules.mk | 17 +- keyboards/maxr1998/pulse4k/info.json | 3 - .../maxr1998/pulse4k/keymaps/default/keymap.c | 20 +- .../pulse4k/keymaps/maxr1998/keymap.c | 8 +- keyboards/maxr1998/pulse4k/rules.mk | 16 +- keyboards/mb44/info.json | 8 +- keyboards/mb44/keymaps/2u1u_space/keymap.c | 3 +- keyboards/mb44/keymaps/2u_space/keymap.c | 3 +- keyboards/mb44/keymaps/3u_space/keymap.c | 3 +- keyboards/mb44/keymaps/default/keymap.c | 3 +- keyboards/mb44/mb44.h | 4 +- keyboards/mb44/rules.mk | 5 +- keyboards/mc_76k/info.json | 4 +- keyboards/mc_76k/rules.mk | 15 +- keyboards/mechanickeys/miniashen40/config.h | 53 + keyboards/mechanickeys/miniashen40/info.json | 15 + .../miniashen40/keymaps/default/keymap.c | 47 + .../miniashen40/keymaps/via/keymap.c | 47 + .../miniashen40/keymaps/via/rules.mk | 2 + .../mechanickeys/miniashen40/miniashen40.c | 17 + .../mechanickeys/miniashen40/miniashen40.h | 42 + keyboards/mechanickeys/miniashen40/readme.md | 40 + keyboards/mechanickeys/miniashen40/rules.mk | 19 + keyboards/mechanickeys/undead60m/config.h | 75 + keyboards/mechanickeys/undead60m/info.json | 86 + .../undead60m/keymaps/default/keymap.c | 51 + .../undead60m/keymaps/via/keymap.c | 52 + .../undead60m/keymaps/via/rules.mk | 1 + keyboards/mechanickeys/undead60m/readme.md | 27 + keyboards/mechanickeys/undead60m/rules.mk | 21 + keyboards/mechanickeys/undead60m/undead60m.c | 60 + keyboards/mechanickeys/undead60m/undead60m.h | 34 + keyboards/mechkeys/mk60/config.h | 73 - keyboards/mechkeys/mk60/info.json | 4 - .../mechkeys/mk60/keymaps/default/keymap.c | 12 - keyboards/mechkeys/mk60/rules.mk | 18 +- keyboards/mechllama/g35/info.json | 3 - .../mechllama/g35/keymaps/default/keymap.c | 5 +- keyboards/mechllama/g35/rules.mk | 10 +- keyboards/mechlovin/adelais/adelais.h | 44 +- keyboards/mechlovin/adelais/config.h | 9 +- keyboards/mechlovin/adelais/info.json | 170 +- keyboards/mechlovin/adelais/rgb_led/config.h | 21 + keyboards/mechlovin/adelais/rgb_led/readme.md | 16 - .../mechlovin/adelais/rgb_led/rev1/config.h | 57 +- .../mechlovin/adelais/rgb_led/rev1/rev1.h | 58 + .../mechlovin/adelais/rgb_led/rev2/config.h | 59 +- .../mechlovin/adelais/rgb_led/rev2/rev2.c | 2 +- .../mechlovin/adelais/rgb_led/rev2/rev2.h | 58 + .../mechlovin/adelais/rgb_led/rev3/config.h | 120 + .../mechlovin/adelais/rgb_led/rev3/halconf.h | 26 + .../mechlovin/adelais/rgb_led/rev3/mcuconf.h | 35 + .../mechlovin/adelais/rgb_led/rev3/rev3.c | 166 + .../mechlovin/adelais/rgb_led/rev3/rev3.h | 78 + .../mechlovin/adelais/rgb_led/rev3/rules.mk | 5 + keyboards/mechlovin/adelais/rules.mk | 10 +- .../mechlovin/adelais/standard_led/arm/.noci | 0 .../adelais/standard_led/arm/chconf.h | 24 + .../adelais/standard_led/arm/config.h | 42 + .../adelais/standard_led/arm/halconf.h | 24 + .../adelais/standard_led/arm/mcuconf.h | 29 + .../adelais/standard_led/arm/readme.md | 16 + .../adelais/standard_led/arm/rev2/.noci | 0 .../standard_led/{ => arm}/rev2/config.h | 0 .../adelais/standard_led/arm/rev2/rev2.h | 77 + .../adelais/standard_led/arm/rev2/rules.mk | 0 .../standard_led/{ => arm}/rev3/config.h | 0 .../adelais/standard_led/arm/rev3/rev3.h | 77 + .../standard_led/{ => arm}/rev3/rules.mk | 0 .../standard_led/arm/rev4/apm32f103/rules.mk | 5 + .../standard_led/{ => arm}/rev4/config.h | 0 .../adelais/standard_led/arm/rev4/readme.md | 16 + .../adelais/standard_led/arm/rev4/rev4.h | 77 + .../standard_led/{ => arm}/rev4/rules.mk | 0 .../standard_led/arm/rev4/stm32f303/rules.mk | 6 + .../adelais/standard_led/arm/rules.mk | 2 + .../mechlovin/adelais/standard_led/avr/.noci | 0 .../adelais/standard_led/avr/readme.md | 16 + .../adelais/standard_led/avr/rev1/config.h | 67 + .../adelais/standard_led/avr/rev1/matrix.c | 363 ++ .../adelais/standard_led/avr/rev1/readme.md | 16 + .../adelais/standard_led/avr/rev1/rev1.h | 77 + .../adelais/standard_led/avr/rev1/rules.mk | 13 + .../adelais/standard_led/avr/rules.mk | 2 + .../mechlovin/adelais/standard_led/config.h | 34 - .../mechlovin/adelais/standard_led/halconf.h | 27 - .../mechlovin/adelais/standard_led/mcuconf.h | 36 - .../mechlovin/adelais/standard_led/readme.md | 16 - .../adelais/standard_led/rev4/readme.md | 16 - .../mechlovin/adelais/standard_led/rules.mk | 8 +- keyboards/mechlovin/delphine/delphine.h | 38 + keyboards/mechlovin/delphine/info.json | 35 +- keyboards/mechlovin/delphine/rgb_led/config.h | 55 +- .../mechlovin/delphine/rgb_led/rgb_led.c | 2 +- keyboards/mechlovin/delphine/rules.mk | 10 +- keyboards/mechlovin/hannah60rgb/rev1/config.h | 52 +- .../mechlovin/hannah60rgb/rev1/info.json | 6 +- keyboards/mechlovin/hannah60rgb/rev1/rev1.c | 7 - keyboards/mechlovin/hannah60rgb/rev1/rev1.h | 59 +- keyboards/mechlovin/hannah60rgb/rev2/config.h | 52 +- .../mechlovin/hannah60rgb/rev2/info.json | 145 +- keyboards/mechlovin/hannah60rgb/rev2/rev2.c | 2 +- keyboards/mechlovin/hannah60rgb/rev2/rev2.h | 57 +- keyboards/mechlovin/hannah60rgb/rules.mk | 10 +- keyboards/mechlovin/hannah65/hannah65.h | 2 - .../mechlovin/hannah65/mechlovin9/config.h | 5 - .../mechlovin/hannah65/mechlovin9/info.json | 80 - .../mechlovin/hannah65/mechlovin9/readme.md | 15 - keyboards/mechlovin/hannah65/rev1/config.h | 5 - .../mechlovin/hannah65/rev1/haus/config.h | 22 + .../mechlovin/hannah65/rev1/haus/readme.md | 23 + .../mechlovin/hannah65/rev1/haus/rules.mk | 0 keyboards/mechlovin/hannah65/rev1/info.json | 2 - keyboards/mechlovin/hannah65/rev1/readme.md | 19 + keyboards/mechlovin/hannah65/rev1/rules.mk | 1 + keyboards/mechlovin/hannah65/rules.mk | 7 +- keyboards/mechlovin/hannah910/config.h | 73 - keyboards/mechlovin/hannah910/hannah910.c | 6 +- keyboards/mechlovin/hannah910/rev1/info.json | 7 +- keyboards/mechlovin/hannah910/rev1/rules.mk | 16 +- keyboards/mechlovin/hannah910/rev2/info.json | 2 - keyboards/mechlovin/hannah910/rev2/rules.mk | 5 +- keyboards/mechlovin/hannah910/rev3/config.h | 2 +- keyboards/mechlovin/hannah910/rev3/info.json | 2 - keyboards/mechlovin/hannah910/rev3/rules.mk | 5 +- keyboards/mechlovin/hex4b/config.h | 64 + keyboards/mechlovin/hex4b/hex4b.c | 17 + keyboards/mechlovin/hex4b/hex4b.h | 104 + keyboards/mechlovin/hex4b/info.json | 371 ++ .../mechlovin/hex4b/keymaps/default/keymap.c | 28 + .../mechlovin/hex4b/keymaps/default/readme.md | 1 + .../mechlovin/hex4b/keymaps/via/keymap.c | 52 + .../mechlovin/hex4b/keymaps/via/rules.mk | 1 + keyboards/mechlovin/hex4b/readme.md | 21 + keyboards/mechlovin/hex4b/rules.mk | 22 + keyboards/mechlovin/hex6c/info.json | 2 - keyboards/mechlovin/hex6c/rules.mk | 5 +- .../infinity87/rev1/rogue87/info.json | 4 +- .../infinity87/rev1/rouge87/info.json | 4 +- .../infinity87/rev1/standard/info.json | 3 - keyboards/mechlovin/infinity87/rev2/config.h | 46 +- keyboards/mechlovin/infinity87/rev2/info.json | 6 +- keyboards/mechlovin/infinity87/rev2/matrix.c | 344 +- keyboards/mechlovin/infinity87/rev2/readme.md | 4 +- keyboards/mechlovin/infinity87/rev2/rev2.c | 42 +- keyboards/mechlovin/infinity87/rev2/rules.mk | 11 +- .../mechlovin/infinity87/rgb_rev1/config.h | 60 +- .../mechlovin/infinity87/rgb_rev1/info.json | 2 - .../mechlovin/infinity87/rgb_rev1/rgb_rev1.c | 2 +- keyboards/mechlovin/infinity87/rules.mk | 5 +- keyboards/mechlovin/infinity88/config.h | 3 - keyboards/mechlovin/infinity88/infinity88.h | 67 +- keyboards/mechlovin/infinity88/info.json | 199 +- keyboards/mechlovin/infinity88/rules.mk | 4 +- keyboards/mechlovin/infinityce/infinityce.c | 7 - keyboards/mechlovin/infinityce/info.json | 7 +- keyboards/mechlovin/infinityce/rules.mk | 15 +- keyboards/mechlovin/jay60/config.h | 147 + keyboards/mechlovin/jay60/info.json | 78 + keyboards/mechlovin/jay60/jay60.c | 17 + keyboards/mechlovin/jay60/jay60.h | 41 + .../mechlovin/jay60/keymaps/default/keymap.c | 36 + .../mechlovin/jay60/keymaps/default/readme.md | 1 + .../mechlovin/jay60/keymaps/via/keymap.c | 50 + .../mechlovin/jay60/keymaps/via/rules.mk | 1 + keyboards/mechlovin/jay60/readme.md | 26 + keyboards/mechlovin/jay60/rules.mk | 22 + keyboards/mechlovin/kanu/info.json | 2 - keyboards/mechlovin/kanu/kanu.c | 4 - keyboards/mechlovin/kanu/rules.mk | 5 +- keyboards/mechlovin/mechlovin9/config.h | 30 + keyboards/mechlovin/mechlovin9/info.json | 78 + .../mechlovin9/keymaps/default/keymap.c | 0 .../mechlovin9/keymaps/default/readme.md | 0 .../mechlovin9/keymaps/via/keymap.c | 0 .../mechlovin/mechlovin9/keymaps/via/rules.mk | 1 + keyboards/mechlovin/mechlovin9/mechlovin9.c | 17 + .../{hannah65 => }/mechlovin9/mechlovin9.h | 2 +- keyboards/mechlovin/mechlovin9/readme.md | 17 + keyboards/mechlovin/mechlovin9/rev1/config.h | 42 + keyboards/mechlovin/mechlovin9/rev1/readme.md | 17 + keyboards/mechlovin/mechlovin9/rev1/rules.mk | 10 + keyboards/mechlovin/mechlovin9/rev2/config.h | 44 + keyboards/mechlovin/mechlovin9/rev2/readme.md | 17 + keyboards/mechlovin/mechlovin9/rev2/rules.mk | 8 + keyboards/mechlovin/mechlovin9/rules.mk | 15 + keyboards/mechlovin/olly/bb/bb.c | 36 + keyboards/mechlovin/olly/bb/bb.h | 33 + keyboards/mechlovin/olly/bb/config.h | 72 + keyboards/mechlovin/olly/bb/info.json | 101 + .../olly/bb/keymaps/default/keymap.c | 48 + .../olly/bb/keymaps/default/readme.md | 1 + .../mechlovin/olly/bb/keymaps/via/keymap.c | 48 + .../mechlovin/olly/bb/keymaps/via/readme.md | 1 + .../mechlovin/olly/bb/keymaps/via/rules.mk | 2 + keyboards/mechlovin/olly/bb/matrix.c | 363 ++ keyboards/mechlovin/olly/bb/readme.md | 23 + keyboards/mechlovin/olly/bb/rules.mk | 25 + keyboards/mechlovin/olly/jf/config.h | 74 + keyboards/mechlovin/olly/jf/info.json | 119 + keyboards/mechlovin/olly/jf/jf.c | 39 + keyboards/mechlovin/olly/jf/jf.h | 35 + .../olly/jf/keymaps/default/keymap.c | 52 + .../olly/jf/keymaps/default/readme.md | 1 + .../mechlovin/olly/jf/keymaps/via/config.h | 22 + .../mechlovin/olly/jf/keymaps/via/keymap.c | 68 + .../mechlovin/olly/jf/keymaps/via/readme.md | 1 + .../mechlovin/olly/jf/keymaps/via/rules.mk | 2 + keyboards/mechlovin/olly/jf/matrix.c | 462 +++ keyboards/mechlovin/olly/jf/readme.md | 23 + keyboards/mechlovin/olly/jf/rules.mk | 25 + keyboards/mechlovin/pisces/config.h | 3 - keyboards/mechlovin/pisces/info.json | 87 +- .../mechlovin/pisces/keymaps/default/keymap.c | 28 +- .../mechlovin/pisces/keymaps/via/keymap.c | 52 +- keyboards/mechlovin/pisces/pisces.h | 47 +- keyboards/mechlovin/pisces/rules.mk | 15 +- keyboards/mechlovin/serratus/config.h | 89 + keyboards/mechlovin/serratus/info.json | 103 + .../serratus/keymaps/default/keymap.c | 27 + .../serratus/keymaps/default/readme.md | 1 + .../mechlovin/serratus/keymaps/via/keymap.c | 52 + .../mechlovin/serratus/keymaps/via/readme.md | 1 + .../mechlovin/serratus/keymaps/via/rules.mk | 2 + keyboards/mechlovin/serratus/matrix.c | 388 ++ keyboards/mechlovin/serratus/readme.md | 21 + keyboards/mechlovin/serratus/rules.mk | 22 + keyboards/mechlovin/serratus/serratus.c | 17 + keyboards/mechlovin/serratus/serratus.h | 35 + keyboards/mechlovin/th1800/info.json | 2 - keyboards/mechlovin/th1800/rules.mk | 7 +- keyboards/mechlovin/tmkl/config.h | 4 +- keyboards/mechlovin/tmkl/info.json | 2 - keyboards/mechlovin/tmkl/rules.mk | 4 +- keyboards/mechmini/mechmini.h | 15 +- keyboards/mechmini/v1/info.json | 51 +- .../mechmini/v1/keymaps/default/keymap.c | 59 +- keyboards/mechmini/v1/rules.mk | 9 +- keyboards/mechmini/v1/v1.h | 44 +- keyboards/mechmini/v2/config.h | 6 +- keyboards/mechmini/v2/info.json | 2 - .../v2/keymaps/2u_space_ortho/keymap.c | 81 +- .../mechmini/v2/keymaps/625_space/keymap.c | 37 +- keyboards/mechmini/v2/keymaps/arkag/rules.mk | 2 +- .../mechmini/v2/keymaps/default/keymap.c | 40 - .../v2/keymaps/lbibass_625_space/rules.mk | 2 +- .../v2/keymaps/lbibass_split_space/rules.mk | 2 +- keyboards/mechmini/v2/keymaps/ortho/keymap.c | 81 +- .../v2/keymaps/spacebarracecar/keymap.c | 2 +- .../v2/keymaps/spacebarracecar/rules.mk | 2 +- .../mechmini/v2/keymaps/split_space/keymap.c | 37 +- .../mechmini/v2/keymaps/wsturgiss/keymap.c | 6 +- .../mechmini/v2/keymaps/wsturgiss/rules.mk | 2 +- keyboards/mechmini/v2/rules.mk | 10 +- keyboards/mechmini/v2/v2.h | 71 +- keyboards/mechstudio/dawn/info.json | 2 - keyboards/mechstudio/dawn/rules.mk | 5 +- keyboards/mechstudio/ud_40_ortho/info.json | 2 - .../ud_40_ortho/keymaps/via/keymap.c | 2 +- keyboards/mechstudio/ud_40_ortho/rules.mk | 5 +- keyboards/mechwild/bde/lefty/info.json | 2 - keyboards/mechwild/bde/lefty/rules.mk | 5 +- keyboards/mechwild/bde/righty/info.json | 4 +- keyboards/mechwild/bde/righty/rules.mk | 5 +- keyboards/mechwild/mercutio/info.json | 4 +- .../mercutio/keymaps/bongocat/keymap.c | 5 +- .../mercutio/keymaps/default/keymap.c | 5 +- .../mechwild/mercutio/keymaps/fancy/keymap.c | 7 +- .../mercutio/keymaps/jonavin/config.h | 2 + .../mercutio/keymaps/jonavin/keymap.c | 150 +- .../mercutio/keymaps/jonavin/readme.md | 48 +- .../mercutio/keymaps/jonavin/rules.mk | 4 + .../mechwild/mercutio/keymaps/via/keymap.c | 5 +- keyboards/mechwild/mercutio/rules.mk | 10 +- keyboards/mechwild/murphpad/info.json | 2 - .../murphpad/keymaps/default/keymap.c | 9 +- .../murphpad/keymaps/jonavin/config.h | 26 + .../murphpad/keymaps/jonavin/keymap.c | 424 ++ .../keymaps/jonavin/layout_landscape.h | 43 + .../murphpad/keymaps/jonavin/readme.md | 76 + .../murphpad/keymaps/jonavin/rules.mk | 5 + .../mechwild/murphpad/keymaps/via/keymap.c | 15 +- keyboards/mechwild/murphpad/rules.mk | 8 +- keyboards/mechwild/obe/config.h | 149 + keyboards/mechwild/obe/f401/halconf.h | 22 + keyboards/mechwild/obe/f401/mcuconf.h | 22 + keyboards/mechwild/obe/f401/rules.mk | 5 + keyboards/mechwild/obe/f411/halconf.h | 22 + keyboards/mechwild/obe/f411/mcuconf.h | 23 + keyboards/mechwild/obe/f411/rules.mk | 5 + keyboards/mechwild/obe/info.json | 81 + .../mechwild/obe/keymaps/default/keymap.c | 43 + .../mechwild/obe/keymaps/jonavin/config.h | 39 + .../mechwild/obe/keymaps/jonavin/keymap.c | 119 + .../mechwild/obe/keymaps/jonavin/readme.md | 54 + .../mechwild/obe/keymaps/jonavin/rules.mk | 14 + keyboards/mechwild/obe/keymaps/via/keymap.c | 57 + keyboards/mechwild/obe/keymaps/via/rules.mk | 2 + keyboards/mechwild/obe/obe.c | 39 + keyboards/mechwild/obe/obe.h | 43 + keyboards/mechwild/obe/readme.md | 19 + keyboards/mechwild/obe/rules.mk | 18 + keyboards/mehkee96/info.json | 2 - keyboards/mehkee96/mehkee96.h | 35 +- keyboards/mehkee96/rules.mk | 11 +- keyboards/meira/config.h | 5 +- keyboards/meira/featherble/config.h | 76 +- keyboards/meira/featherble/featherble.c | 16 + keyboards/meira/featherble/featherble.h | 24 +- keyboards/meira/featherble/rules.mk | 2 +- keyboards/meira/info.json | 5 +- keyboards/meira/issi.h | 5 +- keyboards/meira/keymaps/cole/keymap.c | 8 +- keyboards/meira/keymaps/default/keymap.c | 471 ++- keyboards/meira/keymaps/grahampheath/keymap.c | 14 +- keyboards/meira/keymaps/takmiya/keymap.c | 8 +- keyboards/meira/lighting.c | 2 +- keyboards/meira/lighting.h | 5 +- keyboards/meira/matrix.c | 2 +- keyboards/meira/meira.c | 7 +- keyboards/meira/meira.h | 27 +- keyboards/meira/promicro/config.h | 77 +- keyboards/meira/promicro/promicro.c | 17 +- keyboards/meira/promicro/promicro.h | 23 +- keyboards/meira/promicro/rules.mk | 2 - keyboards/meira/readme.md | 25 +- keyboards/meira/rules.mk | 32 +- keyboards/meishi/config.h | 68 - keyboards/meishi/info.json | 2 - keyboards/meishi/keymaps/default/keymap.c | 16 - keyboards/meishi/meishi.c | 27 - keyboards/meishi/rules.mk | 18 +- keyboards/meishi2/config.h | 73 - keyboards/meishi2/info.json | 3 - keyboards/meishi2/keymaps/default/keymap.c | 13 - keyboards/meishi2/keymaps/via/keymap.c | 31 + keyboards/meishi2/keymaps/via/rules.mk | 3 + keyboards/meishi2/meishi2.c | 35 - keyboards/meishi2/rules.mk | 18 +- keyboards/meletrix/zoom65/config.h | 51 + keyboards/meletrix/zoom65/info.json | 623 +++ .../zoom65/keymaps/65_ansi_blocker/keymap.c | 34 + .../zoom65/keymaps/65_ansi_blocker/readme.md | 1 + .../keymaps/65_ansi_blocker_split_bs/keymap.c | 34 + .../65_ansi_blocker_split_bs/readme.md | 1 + .../65_ansi_blocker_split_lshift/keymap.c | 34 + .../65_ansi_blocker_split_lshift/readme.md | 1 + .../65_ansi_blocker_split_space/keymap.c | 34 + .../65_ansi_blocker_split_space/readme.md | 1 + .../zoom65/keymaps/65_iso_blocker/keymap.c | 34 + .../zoom65/keymaps/65_iso_blocker/readme.md | 1 + .../keymaps/65_iso_blocker_split_bs/keymap.c | 34 + .../keymaps/65_iso_blocker_split_bs/readme.md | 1 + .../65_iso_blocker_split_space/keymap.c | 34 + .../65_iso_blocker_split_space/readme.md | 1 + .../meletrix/zoom65/keymaps/default/keymap.c | 34 + .../meletrix/zoom65/keymaps/default/readme.md | 1 + .../meletrix/zoom65/keymaps/via/keymap.c | 48 + .../meletrix/zoom65/keymaps/via/readme.md | 1 + .../meletrix/zoom65/keymaps/via/rules.mk | 2 + keyboards/meletrix/zoom65/readme.md | 26 + keyboards/meletrix/zoom65/rules.mk | 22 + keyboards/meletrix/zoom65/zoom65.c | 66 + keyboards/meletrix/zoom65/zoom65.h | 243 ++ keyboards/melgeek/mach80/config.h | 95 + keyboards/melgeek/mach80/info.json | 196 + .../melgeek/mach80/keymaps/default/keymap.c | 37 + keyboards/melgeek/mach80/keymaps/tkl/keymap.c | 37 + keyboards/melgeek/mach80/keymaps/via/keymap.c | 53 + keyboards/melgeek/mach80/keymaps/via/rules.mk | 1 + keyboards/melgeek/mach80/keymaps/wkl/keymap.c | 37 + keyboards/melgeek/mach80/mach80.c | 17 + keyboards/melgeek/mach80/mach80.h | 53 + keyboards/melgeek/mach80/readme.md | 21 + keyboards/melgeek/mach80/rev1/config.h | 42 + keyboards/melgeek/mach80/rev1/rev1.c | 193 + keyboards/melgeek/mach80/rev1/rules.mk | 24 + keyboards/melgeek/mj61/config.h | 54 +- keyboards/melgeek/mj61/info.json | 2 - keyboards/melgeek/mj61/rev1/config.h | 3 +- keyboards/melgeek/mj61/rev1/rev1.c | 2 +- keyboards/melgeek/mj61/rev1/rules.mk | 5 +- keyboards/melgeek/mj61/rev2/config.h | 3 +- keyboards/melgeek/mj61/rev2/rev2.c | 2 +- keyboards/melgeek/mj61/rev2/rules.mk | 5 +- keyboards/melgeek/mj63/config.h | 54 +- keyboards/melgeek/mj63/info.json | 2 - keyboards/melgeek/mj63/rev1/config.h | 3 +- keyboards/melgeek/mj63/rev1/rev1.c | 8 +- keyboards/melgeek/mj63/rev1/rules.mk | 5 +- keyboards/melgeek/mj63/rev2/config.h | 3 +- keyboards/melgeek/mj63/rev2/rev2.c | 2 +- keyboards/melgeek/mj63/rev2/rules.mk | 5 +- keyboards/melgeek/mj64/config.h | 54 +- keyboards/melgeek/mj64/info.json | 2 - keyboards/melgeek/mj64/rev1/config.h | 3 +- keyboards/melgeek/mj64/rev1/rev1.c | 2 +- keyboards/melgeek/mj64/rev1/rules.mk | 5 +- keyboards/melgeek/mj64/rev2/config.h | 3 +- keyboards/melgeek/mj64/rev2/rev2.c | 2 +- keyboards/melgeek/mj64/rev2/rules.mk | 5 +- keyboards/melgeek/mj64/rev3/config.h | 3 +- keyboards/melgeek/mj64/rev3/rev3.c | 2 +- keyboards/melgeek/mj64/rev3/rules.mk | 5 +- keyboards/melgeek/mj65/config.h | 54 +- keyboards/melgeek/mj65/info.json | 2 - keyboards/melgeek/mj65/rev3/config.h | 3 +- keyboards/melgeek/mj65/rev3/rev3.c | 2 +- keyboards/melgeek/mj65/rev3/rules.mk | 5 +- keyboards/melgeek/mj6xy/config.h | 40 + keyboards/melgeek/mj6xy/info.json | 3456 +++++++++++++++++ .../melgeek/mj6xy/keymaps/60_ansi/keymap.c | 35 + .../mj6xy/keymaps/60_ansi_7u_spc/keymap.c | 35 + .../keymaps/60_ansi_7u_spc_split_bs/keymap.c | 35 + .../mj6xy/keymaps/60_ansi_arrow/keymap.c | 35 + .../keymaps/60_ansi_arrow_3u_spc/keymap.c | 35 + .../60_ansi_arrow_3u_spc_split_bs/keymap.c | 35 + .../keymaps/60_ansi_arrow_6u_spc/keymap.c | 35 + .../60_ansi_arrow_6u_spc_split_bs/keymap.c | 36 + .../60_ansi_arrow_split_3u_spc/keymap.c | 35 + .../keymaps/60_ansi_arrow_split_bs/keymap.c | 35 + .../60_ansi_arrow_split_bs_3u_spc/keymap.c | 35 + .../mj6xy/keymaps/60_ansi_split_bs/keymap.c | 35 + .../melgeek/mj6xy/keymaps/60_iso/keymap.c | 35 + .../keymap.c | 39 + .../keymap.c | 39 + .../60_iso_1u_lshift_split_bs_rshift/keymap.c | 39 + .../60_iso_1u_lshift_split_rshift/keymap.c | 39 + .../mj6xy/keymaps/60_iso_7u_spc/keymap.c | 35 + .../keymaps/60_iso_7u_spc_split_bs/keymap.c | 35 + .../60_iso_7u_spc_split_bs_rshift/keymap.c | 39 + .../60_iso_7u_spc_split_rshift/keymap.c | 39 + .../mj6xy/keymaps/60_iso_arrow/keymap.c | 35 + .../keymaps/60_iso_arrow_3u_spc/keymap.c | 35 + .../60_iso_arrow_3u_spc_split_bs/keymap.c | 35 + .../keymaps/60_iso_arrow_6u_spc/keymap.c | 35 + .../60_iso_arrow_6u_spc_split_bs/keymap.c | 35 + .../60_iso_arrow_split_3u_spc/keymap.c | 35 + .../keymaps/60_iso_arrow_split_bs/keymap.c | 35 + .../60_iso_arrow_split_bs_3u_spc/keymap.c | 35 + .../mj6xy/keymaps/60_iso_split_bs/keymap.c | 35 + .../keymaps/60_iso_split_bs_rshift/keymap.c | 39 + .../keymaps/60_iso_split_rshift/keymap.c | 39 + .../melgeek/mj6xy/keymaps/64_ansi/keymap.c | 35 + .../mj6xy/keymaps/64_ansi_3u_spc/keymap.c | 35 + .../keymaps/64_ansi_3u_spc_split_bs/keymap.c | 35 + .../mj6xy/keymaps/64_ansi_6u_spc/keymap.c | 35 + .../keymaps/64_ansi_6u_spc_split_bs/keymap.c | 35 + .../keymaps/64_ansi_split_3u_spc/keymap.c | 35 + .../mj6xy/keymaps/64_ansi_split_bs/keymap.c | 35 + .../keymaps/64_ansi_split_bs_3u_spc/keymap.c | 35 + .../melgeek/mj6xy/keymaps/64_iso/keymap.c | 35 + .../mj6xy/keymaps/64_iso_3u_spc/keymap.c | 35 + .../keymaps/64_iso_3u_spc_split_bs/keymap.c | 35 + .../mj6xy/keymaps/64_iso_6u_spc/keymap.c | 35 + .../keymaps/64_iso_6u_spc_split_bs/keymap.c | 35 + .../keymaps/64_iso_split_3u_spc/keymap.c | 35 + .../mj6xy/keymaps/64_iso_split_bs/keymap.c | 35 + .../keymaps/64_iso_split_bs_3u_spc/keymap.c | 35 + .../melgeek/mj6xy/keymaps/default/keymap.c | 35 + keyboards/melgeek/mj6xy/keymaps/via/keymap.c | 49 + keyboards/melgeek/mj6xy/keymaps/via/rules.mk | 2 + keyboards/melgeek/mj6xy/mj6xy.c | 17 + keyboards/melgeek/mj6xy/mj6xy.h | 693 ++++ keyboards/melgeek/mj6xy/readme.md | 17 + keyboards/melgeek/mj6xy/rev3/config.h | 52 + keyboards/melgeek/mj6xy/rev3/rev3.c | 18 + keyboards/melgeek/mj6xy/rev3/rules.mk | 22 + keyboards/melgeek/mojo68/config.h | 94 + keyboards/melgeek/mojo68/info.json | 83 + .../melgeek/mojo68/keymaps/default/keymap.c | 35 + keyboards/melgeek/mojo68/keymaps/via/keymap.c | 49 + keyboards/melgeek/mojo68/keymaps/via/rules.mk | 2 + keyboards/melgeek/mojo68/mojo68.c | 17 + keyboards/melgeek/mojo68/mojo68.h | 35 + keyboards/melgeek/mojo68/readme.md | 15 + keyboards/melgeek/mojo68/rev1/config.h | 38 + keyboards/melgeek/mojo68/rev1/rev1.c | 161 + keyboards/melgeek/mojo68/rev1/rules.mk | 22 + keyboards/melgeek/mojo75/config.h | 54 +- keyboards/melgeek/mojo75/info.json | 2 - keyboards/melgeek/mojo75/rev1/config.h | 3 +- keyboards/melgeek/mojo75/rev1/rev1.c | 2 +- keyboards/melgeek/mojo75/rev1/rules.mk | 5 +- keyboards/melgeek/z70ultra/config.h | 57 +- keyboards/melgeek/z70ultra/info.json | 2 - keyboards/melgeek/z70ultra/rev1/rules.mk | 5 +- keyboards/melgeek/z70ultra/z70ultra.c | 2 +- keyboards/melody96/info.json | 2 - keyboards/melody96/keymaps/dvz/config.h | 34 + keyboards/melody96/keymaps/dvz/keymap.c | 161 + keyboards/melody96/keymaps/dvz/readme.md | 3 + keyboards/melody96/keymaps/dvz/rules.mk | 5 + .../melody96/keymaps/konstantin/rules.mk | 3 +- keyboards/melody96/rules.mk | 10 +- keyboards/meme/config.h | 73 +- keyboards/meme/info.json | 2 - keyboards/meme/meme.c | 27 - keyboards/meme/meme.h | 141 +- keyboards/meme/rules.mk | 18 +- keyboards/meow65/config.h | 147 + keyboards/meow65/info.json | 78 + keyboards/meow65/keymaps/default/keymap.c | 40 + keyboards/meow65/keymaps/default/readme.md | 1 + keyboards/meow65/keymaps/via/keymap.c | 54 + keyboards/meow65/keymaps/via/readme.md | 1 + keyboards/meow65/keymaps/via/rules.mk | 1 + keyboards/meow65/meow65.c | 17 + keyboards/meow65/meow65.h | 41 + keyboards/meow65/readme.md | 27 + keyboards/meow65/rules.mk | 19 + keyboards/merge/iso_macro/info.json | 2 - keyboards/merge/iso_macro/rules.mk | 5 +- keyboards/merge/uc1/info.json | 2 - keyboards/merge/uc1/rules.mk | 5 +- keyboards/merge/um70/info.json | 2 - keyboards/merge/um70/keymaps/default/keymap.c | 5 +- keyboards/merge/um70/keymaps/via/keymap.c | 5 +- keyboards/merge/um70/keymaps/via/rules.mk | 5 +- keyboards/merge/um70/rules.mk | 8 +- keyboards/mesa/mesa_tkl/config.h | 2 +- keyboards/mesa/mesa_tkl/info.json | 2 - keyboards/mesa/mesa_tkl/rules.mk | 5 +- keyboards/meson/config.h | 53 - keyboards/meson/info.json | 3 - keyboards/meson/keymaps/default/keymap.c | 12 - keyboards/meson/meson.c | 35 - keyboards/meson/rules.mk | 18 +- keyboards/metamechs/timberwolf/config.h | 61 - keyboards/metamechs/timberwolf/info.json | 765 +++- keyboards/metamechs/timberwolf/rules.mk | 12 +- keyboards/mexsistor/ludmila/info.json | 2 - keyboards/mexsistor/ludmila/rules.mk | 5 +- keyboards/miller/gm862/config.h | 72 +- keyboards/miller/gm862/gm862.c | 2 +- keyboards/miller/gm862/info.json | 2 - keyboards/miller/gm862/rules.mk | 15 +- keyboards/millipad/info.json | 2 - keyboards/millipad/rules.mk | 5 +- keyboards/mini_elixivy/config.h | 108 + keyboards/mini_elixivy/info.json | 25 + keyboards/mini_elixivy/keymaps/ansi/keymap.c | 66 + keyboards/mini_elixivy/keymaps/ansi/readme.md | 2 + .../mini_elixivy/keymaps/default/keymap.c | 66 + .../mini_elixivy/keymaps/default/readme.md | 2 + keyboards/mini_elixivy/keymaps/iso/keymap.c | 66 + keyboards/mini_elixivy/keymaps/iso/readme.md | 2 + keyboards/mini_elixivy/mini_elixivy.c | 28 + keyboards/mini_elixivy/mini_elixivy.h | 78 + keyboards/mini_elixivy/readme.md | 24 + keyboards/mini_elixivy/rules.mk | 22 + keyboards/miniaxe/config.h | 68 - keyboards/miniaxe/info.json | 2 - keyboards/miniaxe/keymaps/default/keymap.c | 9 - keyboards/miniaxe/keymaps/underglow/keymap.c | 9 - keyboards/miniaxe/miniaxe.c | 27 - keyboards/miniaxe/miniaxe.h | 35 +- keyboards/miniaxe/rules.mk | 19 +- keyboards/minidox/keymaps/bepo/keymap.c | 14 +- keyboards/minidox/keymaps/tw1t611/keymap.c | 8 +- keyboards/minidox/rev1/info.json | 3 - keyboards/minidox/rules.mk | 15 +- keyboards/minim/info.json | 2 - keyboards/minim/rules.mk | 5 +- keyboards/minimacro5/info.json | 2 - keyboards/minimacro5/rules.mk | 5 +- keyboards/minimon/index_tab/config.h | 64 + keyboards/minimon/index_tab/index_tab.c | 14 + keyboards/minimon/index_tab/index_tab.h | 94 + keyboards/minimon/index_tab/info.json | 263 ++ .../index_tab/keymaps/default/keymap.c | 44 + .../index_tab/keymaps/default/readme.md | 6 + .../index_tab/keymaps/default_2x2u/keymap.c | 37 + .../keymaps/default_7u_space/keymap.c | 39 + .../minimon/index_tab/keymaps/via/keymap.c | 53 + .../minimon/index_tab/keymaps/via/rules.mk | 1 + keyboards/minimon/index_tab/readme.md | 35 + keyboards/minimon/index_tab/rules.mk | 19 + keyboards/minimon/info.json | 4 + keyboards/minimon/readme.md | 9 + keyboards/mint60/config.h | 69 - keyboards/mint60/info.json | 2 - keyboards/mint60/rules.mk | 18 +- keyboards/mio/info.json | 2 - keyboards/mio/rules.mk | 5 +- .../misonoworks/chocolatebar/chocolatebar.c | 54 + .../misonoworks/chocolatebar/chocolatebar.h | 32 + keyboards/misonoworks/chocolatebar/config.h | 63 + keyboards/misonoworks/chocolatebar/info.json | 69 + .../chocolatebar/keymaps/default/keymap.c | 53 + .../chocolatebar/keymaps/via/keymap.c | 53 + .../chocolatebar/keymaps/via/rules.mk | 2 + keyboards/misonoworks/chocolatebar/readme.md | 16 + keyboards/misonoworks/chocolatebar/rules.mk | 22 + keyboards/misonoworks/karina/info.json | 2 - keyboards/misonoworks/karina/rules.mk | 5 +- keyboards/misterknife/knife66/info.json | 2 - keyboards/misterknife/knife66/rules.mk | 5 +- keyboards/misterknife/knife66_iso/info.json | 2 - keyboards/misterknife/knife66_iso/rules.mk | 5 +- keyboards/mitosis/config.h | 5 +- keyboards/mitosis/info.json | 2 - keyboards/mitosis/keymaps/datagrok/rules.mk | 2 +- keyboards/mitosis/keymaps/mjt/rules.mk | 4 +- keyboards/mitosis/mitosis.h | 31 +- keyboards/mitosis/rules.mk | 13 +- keyboards/miuni32/config.h | 53 +- keyboards/miuni32/info.json | 4 - keyboards/miuni32/keymaps/adam-lee/rules.mk | 2 +- keyboards/miuni32/keymaps/default/keymap.c | 44 - keyboards/miuni32/keymaps/ht_156/rules.mk | 2 +- keyboards/miuni32/keymaps/kifinnsson/rules.mk | 2 +- keyboards/miuni32/miuni32.c | 27 - keyboards/miuni32/miuni32.h | 35 +- keyboards/miuni32/rules.mk | 18 +- keyboards/mixi/info.json | 2 - keyboards/mixi/rules.mk | 10 +- keyboards/mnk1800s/config.h | 76 + keyboards/mnk1800s/info.json | 98 + keyboards/mnk1800s/keymaps/default/keymap.c | 32 + keyboards/mnk1800s/keymaps/default/readme.md | 5 + keyboards/mnk1800s/keymaps/via/keymap.c | 46 + keyboards/mnk1800s/keymaps/via/readme.md | 5 + keyboards/mnk1800s/keymaps/via/rules.mk | 1 + keyboards/mnk1800s/mnk1800s.c | 16 + keyboards/mnk1800s/mnk1800s.h | 34 + keyboards/mnk1800s/readme.md | 32 + keyboards/mnk1800s/rules.mk | 22 + keyboards/mnk50/config.h | 76 + keyboards/mnk50/info.json | 170 + keyboards/mnk50/keymaps/default/keymap.c | 30 + keyboards/mnk50/keymaps/default/readme.md | 5 + keyboards/mnk50/keymaps/via/keymap.c | 42 + keyboards/mnk50/keymaps/via/readme.md | 5 + keyboards/mnk50/keymaps/via/rules.mk | 1 + keyboards/mnk50/mnk50.c | 16 + keyboards/mnk50/mnk50.h | 71 + keyboards/mnk50/readme.md | 32 + keyboards/mnk50/rules.mk | 24 + keyboards/mode/eighty/m80h/info.json | 2 - keyboards/mode/eighty/m80h/rules.mk | 5 +- keyboards/mode/eighty/m80s/info.json | 2 - keyboards/mode/eighty/m80s/rules.mk | 5 +- keyboards/mode/m65ha_alpha/chconf.h | 25 + keyboards/mode/m65ha_alpha/config.h | 73 + keyboards/mode/m65ha_alpha/halconf.h | 21 + keyboards/mode/m65ha_alpha/info.json | 82 + .../mode/m65ha_alpha/keymaps/default/keymap.c | 49 + .../mode/m65ha_alpha/keymaps/via/keymap.c | 49 + .../mode/m65ha_alpha/keymaps/via/rules.mk | 1 + keyboards/mode/m65ha_alpha/m65ha_alpha.c | 67 + keyboards/mode/m65ha_alpha/m65ha_alpha.h | 37 + keyboards/mode/m65ha_alpha/mcuconf.h | 35 + keyboards/mode/m65ha_alpha/readme.md | 16 + keyboards/mode/m65ha_alpha/rules.mk | 24 + keyboards/mode/m65hi_alpha/chconf.h | 25 + keyboards/mode/m65hi_alpha/config.h | 73 + keyboards/mode/m65hi_alpha/halconf.h | 21 + keyboards/mode/m65hi_alpha/info.json | 83 + .../mode/m65hi_alpha/keymaps/default/keymap.c | 49 + .../mode/m65hi_alpha/keymaps/via/keymap.c | 49 + .../mode/m65hi_alpha/keymaps/via/rules.mk | 1 + keyboards/mode/m65hi_alpha/m65hi_alpha.c | 67 + keyboards/mode/m65hi_alpha/m65hi_alpha.h | 37 + keyboards/mode/m65hi_alpha/mcuconf.h | 40 + keyboards/mode/m65hi_alpha/readme.md | 15 + keyboards/mode/m65hi_alpha/rules.mk | 24 + keyboards/mode/m65s/chconf.h | 30 + keyboards/mode/m65s/config.h | 75 + keyboards/mode/m65s/halconf.h | 26 + keyboards/mode/m65s/info.json | 85 + keyboards/mode/m65s/keymaps/default/keymap.c | 49 + keyboards/mode/m65s/keymaps/via/keymap.c | 49 + keyboards/mode/m65s/keymaps/via/rules.mk | 1 + keyboards/mode/m65s/m65s.c | 68 + keyboards/mode/m65s/m65s.h | 37 + keyboards/mode/m65s/mcuconf.h | 40 + keyboards/mode/m65s/readme.md | 19 + keyboards/mode/m65s/rules.mk | 20 + keyboards/model_v/config.h | 62 + keyboards/model_v/info.json | 151 + keyboards/model_v/keymaps/default/keymap.c | 41 + keyboards/model_v/keymaps/via/keymap.c | 48 + keyboards/model_v/keymaps/via/rules.mk | 1 + keyboards/model_v/model_v.c | 18 + keyboards/model_v/model_v.h | 61 + keyboards/model_v/readme.md | 20 + keyboards/model_v/rules.mk | 19 + keyboards/mokey/README.md | 7 + keyboards/mokey/ginkgo65/config.h | 41 + keyboards/mokey/ginkgo65/ginkgo65.c | 16 + keyboards/mokey/ginkgo65/ginkgo65.h | 216 ++ keyboards/mokey/ginkgo65/info.json | 544 +++ .../mokey/ginkgo65/keymaps/default/keymap.c | 51 + keyboards/mokey/ginkgo65/keymaps/via/keymap.c | 51 + keyboards/mokey/ginkgo65/keymaps/via/rules.mk | 2 + keyboards/mokey/ginkgo65/readme.md | 21 + keyboards/mokey/ginkgo65/rules.mk | 21 + keyboards/mokey/mokey63/config.h | 40 + keyboards/mokey/mokey63/info.json | 152 + .../mokey/mokey63/keymaps/default/keymap.c | 27 + keyboards/mokey/mokey63/keymaps/via/keymap.c | 51 + keyboards/mokey/mokey63/keymaps/via/rules.mk | 1 + keyboards/mokey/mokey63/mokey63.c | 15 + keyboards/mokey/mokey63/mokey63.h | 75 + keyboards/mokey/mokey63/readme.md | 21 + keyboards/mokey/mokey63/rules.mk | 19 + keyboards/mokey/mokey64/config.h | 37 + keyboards/mokey/mokey64/info.json | 79 + .../mokey/mokey64/keymaps/default/keymap.c | 31 + keyboards/mokey/mokey64/keymaps/via/keymap.c | 49 + keyboards/mokey/mokey64/keymaps/via/rules.mk | 1 + keyboards/mokey/mokey64/mokey64.c | 17 + keyboards/mokey/mokey64/mokey64.h | 48 + keyboards/mokey/mokey64/readme.md | 22 + keyboards/mokey/mokey64/rules.mk | 19 + keyboards/mokey/xox70/config.h | 36 + keyboards/mokey/xox70/info.json | 248 ++ .../mokey/xox70/keymaps/default/keymap.c | 35 + keyboards/mokey/xox70/keymaps/via/keymap.c | 51 + keyboards/mokey/xox70/keymaps/via/rules.mk | 1 + keyboards/mokey/xox70/readme.md | 20 + keyboards/mokey/xox70/rules.mk | 19 + keyboards/mokey/xox70/xox70.c | 15 + keyboards/mokey/xox70/xox70.h | 65 + keyboards/molecule/info.json | 250 +- keyboards/molecule/keymaps/default/keymap.c | 40 +- keyboards/molecule/molecule.h | 9 +- keyboards/molecule/rules.mk | 5 +- keyboards/momoka_ergo/config.h | 131 + keyboards/momoka_ergo/info.json | 88 + .../momoka_ergo/keymaps/default/keymap.c | 58 + .../momoka_ergo/keymaps/default/readme.md | 1 + keyboards/momoka_ergo/momoka_ergo.c | 17 + keyboards/momoka_ergo/momoka_ergo.h | 56 + keyboards/momoka_ergo/readme.md | 29 + keyboards/momoka_ergo/rules.mk | 20 + keyboards/monarch/info.json | 2 - keyboards/monarch/rules.mk | 6 +- keyboards/monstargear/xo87/rgb/config.h | 50 +- keyboards/monstargear/xo87/rgb/info.json | 2 - keyboards/monstargear/xo87/rgb/rules.mk | 5 +- .../monstargear/xo87/solderable/info.json | 2 - .../monstargear/xo87/solderable/rules.mk | 5 +- keyboards/montex/config.h | 64 + keyboards/montex/info.json | 43 + keyboards/montex/keymaps/default/keymap.c | 67 + keyboards/montex/keymaps/via/keymap.c | 52 + keyboards/montex/keymaps/via/rules.mk | 2 + keyboards/montex/montex.c | 17 + keyboards/montex/montex.h | 35 + keyboards/montex/readme.md | 21 + keyboards/montex/rules.mk | 19 + keyboards/montsinger/rebound/rev1/info.json | 4 +- keyboards/montsinger/rebound/rev1/rules.mk | 15 +- keyboards/montsinger/rebound/rev2/info.json | 4 +- keyboards/montsinger/rebound/rev2/rules.mk | 15 +- keyboards/montsinger/rebound/rev3/info.json | 2 - .../rebound/rev3/keymaps/rossman360/keymap.c | 5 +- .../rebound/rev3/keymaps/rossman360/rules.mk | 2 +- keyboards/montsinger/rebound/rev3/rules.mk | 15 +- keyboards/montsinger/rebound/rev4/info.json | 2 - .../rebound/rev4/keymaps/rossman360/keymap.c | 5 +- .../rebound/rev4/keymaps/rossman360/rules.mk | 2 +- keyboards/montsinger/rebound/rev4/rules.mk | 15 +- keyboards/montsinger/rewind/info.json | 3 - keyboards/montsinger/rewind/rules.mk | 15 +- keyboards/moon/info.json | 8 - keyboards/moon/rules.mk | 18 +- keyboards/moonlander/config.h | 55 +- keyboards/moonlander/halconf.h | 22 + keyboards/moonlander/info.json | 3 - keyboards/moonlander/keymaps/default/config.h | 2 +- keyboards/moonlander/keymaps/default/keymap.c | 2 +- keyboards/moonlander/keymaps/drashna/keymap.c | 108 +- keyboards/moonlander/keymaps/drashna/rules.mk | 2 +- .../moonlander/keymaps/jjerrell/config.h | 27 + .../moonlander/keymaps/jjerrell/keymap.c | 117 + .../moonlander/keymaps/jjerrell/readme.md | 3 + .../moonlander/keymaps/jjerrell/rules.mk | 1 + .../keymaps/manna-harbour_miryoku/config.h | 24 + .../keymaps/manna-harbour_miryoku/keymap.c | 5 + keyboards/moonlander/keymaps/via/keymap.c | 126 + keyboards/moonlander/keymaps/via/readme.md | 7 + keyboards/moonlander/keymaps/via/rules.mk | 1 + keyboards/moonlander/matrix.c | 264 +- keyboards/moonlander/mcuconf.h | 39 + keyboards/moonlander/moonlander.c | 13 +- keyboards/moonlander/moonlander.h | 2 +- keyboards/moonlander/readme.md | 18 +- keyboards/moonlander/rules.mk | 9 +- keyboards/mountainblocks/mb17/config.h | 53 - keyboards/mountainblocks/mb17/info.json | 2 - keyboards/mountainblocks/mb17/rules.mk | 15 +- keyboards/mschwingen/modelm/info.json | 2 - keyboards/mschwingen/modelm/modelm.c | 2 +- keyboards/mschwingen/modelm/post_rules.mk | 3 + keyboards/mschwingen/modelm/rules.mk | 9 +- keyboards/mt40/config.h | 73 +- keyboards/mt40/info.json | 2 - keyboards/mt40/mt40.h | 29 +- keyboards/mt40/rules.mk | 17 +- keyboards/mt64rgb/config.h | 107 +- keyboards/mt64rgb/info.json | 2 - keyboards/mt64rgb/mt64rgb.c | 2 +- keyboards/mt64rgb/rules.mk | 5 +- keyboards/mt84/config.h | 107 +- keyboards/mt84/info.json | 2 - keyboards/mt84/keymaps/default/config.h | 19 + keyboards/mt84/mt84.c | 40 +- keyboards/mt84/rules.mk | 7 +- keyboards/mt980/info.json | 3 - keyboards/mt980/rules.mk | 10 +- keyboards/mtbkeys/mtb60/hotswap/config.h | 79 + keyboards/mtbkeys/mtb60/hotswap/hotswap.c | 17 + keyboards/mtbkeys/mtb60/hotswap/hotswap.h | 33 + keyboards/mtbkeys/mtb60/hotswap/info.json | 72 + .../mtb60/hotswap/keymaps/default/keymap.c | 39 + keyboards/mtbkeys/mtb60/hotswap/readme.md | 26 + keyboards/mtbkeys/mtb60/hotswap/rules.mk | 19 + keyboards/mtbkeys/mtb60/solder/config.h | 79 + keyboards/mtbkeys/mtb60/solder/info.json | 75 + .../mtb60/solder/keymaps/default/keymap.c | 40 + keyboards/mtbkeys/mtb60/solder/readme.md | 26 + keyboards/mtbkeys/mtb60/solder/rules.mk | 19 + keyboards/mtbkeys/mtb60/solder/solder.c | 17 + keyboards/mtbkeys/mtb60/solder/solder.h | 33 + keyboards/murcielago/info.json | 2 - keyboards/murcielago/rev1/rules.mk | 15 +- keyboards/mwstudio/mw65_black/config.h | 54 + keyboards/mwstudio/mw65_black/info.json | 83 + .../mw65_black/keymaps/default/keymap.c | 48 + .../mwstudio/mw65_black/keymaps/via/keymap.c | 48 + .../mwstudio/mw65_black/keymaps/via/rules.mk | 2 + keyboards/mwstudio/mw65_black/mw65_black.c | 16 + keyboards/mwstudio/mw65_black/mw65_black.h | 30 + keyboards/mwstudio/mw65_black/readme.md | 22 + keyboards/mwstudio/mw65_black/rules.mk | 20 + keyboards/mwstudio/mw65_rgb/config.h | 61 + keyboards/mwstudio/mw65_rgb/info.json | 84 + .../mw65_rgb/keymaps/default/keymap.c | 51 + .../mwstudio/mw65_rgb/keymaps/via/keymap.c | 128 + .../mwstudio/mw65_rgb/keymaps/via/rules.mk | 2 + keyboards/mwstudio/mw65_rgb/mw65_rgb.c | 45 + keyboards/mwstudio/mw65_rgb/mw65_rgb.h | 49 + keyboards/mwstudio/mw65_rgb/readme.md | 22 + keyboards/mwstudio/mw65_rgb/rules.mk | 22 + keyboards/mwstudio/mw75/config.h | 105 + keyboards/mwstudio/mw75/info.json | 99 + .../mwstudio/mw75/keymaps/default/keymap.c | 58 + keyboards/mwstudio/mw75/keymaps/via/keymap.c | 58 + keyboards/mwstudio/mw75/keymaps/via/rules.mk | 2 + keyboards/mwstudio/mw75/mw75.c | 47 + keyboards/mwstudio/mw75/mw75.h | 55 + keyboards/mwstudio/mw75/readme.md | 22 + keyboards/mwstudio/mw75/rules.mk | 22 + keyboards/mwstudio/readme.md | 7 + keyboards/mxss/config.h | 53 +- keyboards/mxss/info.json | 2 - keyboards/mxss/keymaps/default/keymap.c | 16 - keyboards/mxss/mxss.c | 11 +- keyboards/mxss/mxss_frontled.c | 2 +- keyboards/mxss/rgblight.c | 4 - keyboards/mxss/rules.mk | 27 +- keyboards/mysticworks/wyvern/info.json | 4 +- keyboards/mysticworks/wyvern/rules.mk | 5 +- keyboards/nack/config.h | 61 +- keyboards/nack/info.json | 69 +- keyboards/nack/keymaps/default/keymap.c | 42 +- .../nack/keymaps/farfalleflickan/keymap.c | 203 + .../nack/keymaps/farfalleflickan/keymap.h | 116 + .../nack/keymaps/farfalleflickan/readme.md | 1 + keyboards/nack/keymaps/pastapojken/keymap.c | 199 - keyboards/nack/keymaps/pastapojken/keymap.h | 122 - keyboards/nack/keymaps/pastapojken/readme.md | 1 - keyboards/nack/mcuconf.h | 1 - keyboards/nack/nack.c | 2 +- keyboards/nack/nack.h | 4 +- keyboards/nack/readme.md | 4 +- keyboards/nack/rules.mk | 7 +- keyboards/nafuda/info.json | 2 - keyboards/nafuda/nafuda.c | 4 - keyboards/nafuda/rules.mk | 22 +- keyboards/naiping/np64/chconf.h | 24 + keyboards/naiping/np64/config.h | 52 + keyboards/naiping/np64/info.json | 82 + .../naiping/np64/keymaps/default/keymap.c | 41 + keyboards/naiping/np64/keymaps/via/keymap.c | 54 + keyboards/naiping/np64/keymaps/via/rules.mk | 1 + keyboards/naiping/np64/np64.c | 16 + keyboards/naiping/np64/np64.h | 31 + keyboards/naiping/np64/readme.md | 17 + keyboards/naiping/np64/rules.mk | 22 + keyboards/naiping/nphhkb/chconf.h | 24 + keyboards/naiping/nphhkb/config.h | 52 + keyboards/naiping/nphhkb/info.json | 76 + .../naiping/nphhkb/keymaps/default/keymap.c | 40 + keyboards/naiping/nphhkb/keymaps/via/keymap.c | 51 + keyboards/naiping/nphhkb/keymaps/via/rules.mk | 1 + keyboards/naiping/nphhkb/nphhkb.c | 16 + keyboards/naiping/nphhkb/nphhkb.h | 32 + keyboards/naiping/nphhkb/readme.md | 17 + keyboards/naiping/nphhkb/rules.mk | 22 + keyboards/naiping/npminila/chconf.h | 24 + keyboards/naiping/npminila/config.h | 51 + keyboards/naiping/npminila/info.json | 77 + .../naiping/npminila/keymaps/default/keymap.c | 39 + .../naiping/npminila/keymaps/via/keymap.c | 47 + .../naiping/npminila/keymaps/via/rules.mk | 1 + keyboards/naiping/npminila/npminila.c | 16 + keyboards/naiping/npminila/npminila.h | 30 + keyboards/naiping/npminila/readme.md | 17 + keyboards/naiping/npminila/rules.mk | 20 + keyboards/naked48/config.h | 3 +- keyboards/naked48/info.json | 4 +- keyboards/naked48/keymaps/default/keymap.c | 4 - keyboards/naked48/keymaps/default/rules.mk | 1 + keyboards/naked48/keymaps/salicylic/config.h | 3 +- keyboards/naked48/keymaps/salicylic/keymap.c | 4 +- keyboards/naked48/keymaps/salicylic/rules.mk | 1 + .../keymaps/salicylic_with_nafuda/keymap.c | 4 +- .../keymaps/salicylic_with_setta21/keymap.c | 4 +- keyboards/naked48/keymaps/via/config.h | 22 + keyboards/naked48/keymaps/via/keymap.c | 71 + keyboards/naked48/keymaps/via/rules.mk | 3 + .../naked48/keymaps/via_rgb_matrix/config.h | 44 + .../naked48/keymaps/via_rgb_matrix/keymap.c | 71 + .../naked48/keymaps/via_rgb_matrix/rules.mk | 5 + keyboards/naked48/naked48.c | 20 +- keyboards/naked48/naked48.h | 17 + keyboards/naked48/rev1/config.h | 7 +- keyboards/naked48/rev1/rev1.c | 28 +- keyboards/naked48/rev1/rev1.h | 17 + keyboards/naked48/rules.mk | 30 +- keyboards/naked60/config.h | 3 +- keyboards/naked60/info.json | 2 - keyboards/naked60/keymaps/default/keymap.c | 4 - keyboards/naked60/keymaps/salicylic/keymap.c | 4 +- .../keymaps/salicylic_with_nafuda/keymap.c | 10 +- .../keymaps/salicylic_with_setta21/keymap.c | 6 +- keyboards/naked60/keymaps/via/config.h | 23 + keyboards/naked60/keymaps/via/keymap.c | 62 + keyboards/naked60/keymaps/via/rules.mk | 1 + keyboards/naked60/naked60.c | 17 + keyboards/naked60/naked60.h | 17 + keyboards/naked60/rev1/config.h | 10 +- keyboards/naked60/rev1/rev1.c | 21 +- keyboards/naked60/rev1/rev1.h | 17 + keyboards/naked60/rules.mk | 28 +- keyboards/naked64/info.json | 2 - keyboards/naked64/keymaps/default/keymap.c | 4 - keyboards/naked64/keymaps/salicylic/keymap.c | 2 +- .../keymaps/salicylic_with_setta21/keymap.c | 2 +- keyboards/naked64/rev1/rev1.c | 4 - keyboards/naked64/rules.mk | 21 +- keyboards/namecard2x4/info.json | 2 - .../namecard2x4/keymaps/brainfuck/keymap.c | 2 +- .../namecard2x4/keymaps/default/keymap.c | 17 - keyboards/namecard2x4/namecard2x4.c | 27 - keyboards/namecard2x4/namecard2x4.h | 10 +- keyboards/namecard2x4/rev1/config.h | 68 - keyboards/namecard2x4/rev2/config.h | 68 - keyboards/namecard2x4/rules.mk | 19 +- keyboards/navi10/info.json | 2 - keyboards/navi10/rev0/rules.mk | 16 +- keyboards/navi10/rev2/rules.mk | 16 +- keyboards/navi10/rev3/rules.mk | 14 +- keyboards/ncc1701kb/info.json | 2 - keyboards/ncc1701kb/rules.mk | 19 +- keyboards/nebula12/info.json | 2 - keyboards/nebula12/rules.mk | 9 +- keyboards/nebula68/info.json | 2 - keyboards/nebula68/rules.mk | 9 +- keyboards/neito/config.h | 58 + keyboards/neito/info.json | 84 + keyboards/neito/keymaps/default/keymap.c | 66 + keyboards/neito/keymaps/olli_works/keymap.c | 66 + keyboards/neito/keymaps/olli_works/rules.mk | 2 + keyboards/neito/keymaps/via/keymap.c | 66 + keyboards/neito/keymaps/via/rules.mk | 2 + keyboards/neito/neito.c | 17 + keyboards/neito/neito.h | 37 + keyboards/neito/readme.md | 24 + keyboards/neito/rules.mk | 20 + keyboards/nek_type_a/info.json | 2 - keyboards/nek_type_a/keymaps/default/keymap.c | 12 - keyboards/nek_type_a/mcp23017.h | 6 +- keyboards/nek_type_a/nek_type_a.c | 27 - keyboards/nek_type_a/nek_type_a.h | 28 +- keyboards/nek_type_a/rules.mk | 21 +- keyboards/nemui/info.json | 2 - keyboards/nemui/rules.mk | 5 +- keyboards/neokeys/g67/element_hs/config.h | 66 + keyboards/neokeys/g67/element_hs/element_hs.c | 17 + keyboards/neokeys/g67/element_hs/element_hs.h | 34 + keyboards/neokeys/g67/element_hs/info.json | 82 + .../g67/element_hs/keymaps/default/keymap.c | 34 + .../g67/element_hs/keymaps/via/keymap.c | 49 + .../g67/element_hs/keymaps/via/rules.mk | 3 + keyboards/neokeys/g67/element_hs/readme.md | 19 + keyboards/neokeys/g67/element_hs/rules.mk | 23 + keyboards/neokeys/g67/hotswap/info.json | 2 - keyboards/neokeys/g67/hotswap/rules.mk | 5 +- keyboards/neokeys/g67/soldered/info.json | 2 - keyboards/neokeys/g67/soldered/rules.mk | 5 +- keyboards/neopad/rev1/info.json | 2 - keyboards/neopad/rev1/rules.mk | 5 +- keyboards/neson_design/n6/config.h | 66 + keyboards/neson_design/n6/info.json | 161 + .../neson_design/n6/keymaps/default/keymap.c | 34 + .../neson_design/n6/keymaps/via/keymap.c | 48 + .../neson_design/n6/keymaps/via/rules.mk | 2 + keyboards/neson_design/n6/n6.c | 317 ++ keyboards/neson_design/n6/n6.h | 75 + keyboards/neson_design/n6/readme.md | 21 + keyboards/neson_design/n6/rules.mk | 21 + keyboards/newgame40/info.json | 3 - keyboards/newgame40/newgame40.c | 4 - keyboards/newgame40/newgame40.h | 24 +- keyboards/newgame40/post_rules.mk | 3 + keyboards/newgame40/rules.mk | 20 +- keyboards/nibiria/stream15/info.json | 2 - keyboards/nibiria/stream15/rules.mk | 5 +- .../nightingale_studios/hailey/info.json | 4 +- keyboards/nightingale_studios/hailey/rules.mk | 5 +- keyboards/nightly_boards/adellein/info.json | 4 +- keyboards/nightly_boards/adellein/rules.mk | 5 +- keyboards/nightly_boards/alter/rev1/info.json | 2 - keyboards/nightly_boards/alter/rev1/rules.mk | 13 +- keyboards/nightly_boards/n2/info.json | 2 - keyboards/nightly_boards/n2/rules.mk | 5 +- keyboards/nightly_boards/n40_o/info.json | 4 +- keyboards/nightly_boards/n40_o/rules.mk | 5 +- keyboards/nightly_boards/n60_s/info.json | 4 +- keyboards/nightly_boards/n60_s/rules.mk | 5 +- keyboards/nightly_boards/n87/config.h | 73 - keyboards/nightly_boards/n87/info.json | 4 +- keyboards/nightly_boards/n87/rules.mk | 12 +- keyboards/nightly_boards/n9/config.h | 93 + keyboards/nightly_boards/n9/info.json | 21 + .../n9/keymaps/default/keymap.c | 24 + .../nightly_boards/n9/keymaps/via/keymap.c | 39 + .../nightly_boards/n9/keymaps/via/rules.mk | 2 + keyboards/nightly_boards/n9/n9.c | 18 + keyboards/nightly_boards/n9/n9.h | 29 + keyboards/nightly_boards/n9/readme.md | 18 + keyboards/nightly_boards/n9/rules.mk | 18 + keyboards/nightly_boards/octopad/info.json | 2 - keyboards/nightly_boards/octopad/rules.mk | 5 +- keyboards/nightly_boards/ph_arisu/info.json | 2 - keyboards/nightly_boards/ph_arisu/rules.mk | 5 +- keyboards/nightmare/config.h | 73 - keyboards/nightmare/info.json | 4 +- keyboards/nightmare/nightmare.c | 35 - keyboards/nightmare/rules.mk | 16 +- keyboards/nimrod/info.json | 2 - keyboards/nimrod/rules.mk | 5 +- keyboards/niu_mini/info.json | 4 - keyboards/niu_mini/keymaps/default/keymap.c | 45 - keyboards/niu_mini/keymaps/edvard/keymap.c | 194 + keyboards/niu_mini/keymaps/edvard/readme.md | 5 + keyboards/niu_mini/keymaps/tucznak/rules.mk | 2 +- keyboards/niu_mini/rules.mk | 18 +- keyboards/nix_studio/oxalys80/info.json | 384 +- .../oxalys80/keymaps/default/keymap.c | 28 +- .../nix_studio/oxalys80/keymaps/via/keymap.c | 56 +- keyboards/nix_studio/oxalys80/oxalys80.h | 194 +- keyboards/nix_studio/oxalys80/readme.md | 64 +- keyboards/nix_studio/oxalys80/rules.mk | 15 +- keyboards/nk1/info.json | 2 - keyboards/nk1/rules.mk | 5 +- keyboards/nk65/config.h | 5 +- keyboards/nk65/info.json | 4 +- keyboards/nk65/keymaps/default/keymap.c | 12 - keyboards/nk65/keymaps/via/keymap.c | 12 - keyboards/nk65/nk65.c | 2 +- keyboards/nk65/rules.mk | 9 +- keyboards/nk87/info.json | 4 +- keyboards/nk87/nk87.c | 2 +- keyboards/nk87/rules.mk | 9 +- keyboards/nknl7en/info.json | 6 +- keyboards/nknl7en/keymaps/salicylic/keymap.c | 2 +- keyboards/nknl7en/rules.mk | 5 +- keyboards/nknl7jp/info.json | 4 +- keyboards/nknl7jp/keymaps/salicylic/keymap.c | 2 +- keyboards/nknl7jp/rules.mk | 5 +- keyboards/nomu30/info.json | 2 - keyboards/nomu30/rev1/rules.mk | 14 +- keyboards/nomu30/rev2/rules.mk | 13 +- keyboards/nopunin10did/jabberwocky/config.h | 1 - keyboards/nopunin10did/jabberwocky/info.json | 228 +- .../jabberwocky/keymaps/nopunin10did/keymap.c | 3 +- .../jabberwocky/keymaps/nopunin10did/rules.mk | 2 + keyboards/nopunin10did/jabberwocky/readme.md | 15 +- keyboards/nopunin10did/jabberwocky/rules.mk | 7 +- .../nopunin10did/railroad/rev0/info.json | 2 - keyboards/nopunin10did/railroad/rev0/rules.mk | 5 +- keyboards/novelpad/config.h | 73 - keyboards/novelpad/info.json | 2 - keyboards/novelpad/rules.mk | 10 +- keyboards/noxary/220/config.h | 73 - keyboards/noxary/220/info.json | 4 +- keyboards/noxary/220/rules.mk | 18 +- keyboards/noxary/260/config.h | 73 - keyboards/noxary/260/info.json | 4 +- keyboards/noxary/260/rules.mk | 20 +- keyboards/noxary/268/info.json | 5 - keyboards/noxary/268/keymaps/ansi/keymap.c | 45 +- keyboards/noxary/268/keymaps/default/keymap.c | 47 +- keyboards/noxary/268/keymaps/iso/keymap.c | 45 +- keyboards/noxary/268/rules.mk | 16 +- keyboards/noxary/268_2/config.h | 73 - keyboards/noxary/268_2/info.json | 2 - keyboards/noxary/268_2/rules.mk | 18 +- keyboards/noxary/268_2_rgb/info.json | 3 - keyboards/noxary/268_2_rgb/rules.mk | 5 +- keyboards/noxary/280/config.h | 73 - keyboards/noxary/280/info.json | 4 +- keyboards/noxary/280/rules.mk | 18 +- keyboards/noxary/378/378.c | 18 + keyboards/noxary/378/378.h | 36 + keyboards/noxary/378/chconf.h | 30 + keyboards/noxary/378/config.h | 71 + keyboards/noxary/378/info.json | 92 + keyboards/noxary/378/keymaps/default/keymap.c | 27 + keyboards/noxary/378/keymaps/via/keymap.c | 48 + keyboards/noxary/378/keymaps/via/rules.mk | 1 + keyboards/noxary/378/mcuconf.h | 24 + keyboards/noxary/378/readme.md | 15 + keyboards/noxary/378/rules.mk | 22 + keyboards/noxary/valhalla/chconf.h | 30 + keyboards/noxary/valhalla/config.h | 71 + .../noxary/valhalla/keymaps/default/keymap.c | 48 + .../noxary/valhalla/keymaps/via/keymap.c | 48 + .../noxary/valhalla/keymaps/via/rules.mk | 1 + keyboards/noxary/valhalla/mcuconf.h | 24 + keyboards/noxary/valhalla/readme.md | 32 + keyboards/noxary/valhalla/rules.mk | 22 + keyboards/noxary/valhalla/valhalla.c | 18 + keyboards/noxary/valhalla/valhalla.h | 36 + keyboards/noxary/vulcan/info.json | 4 +- keyboards/noxary/vulcan/rules.mk | 5 +- keyboards/noxary/x268/config.h | 68 - keyboards/noxary/x268/info.json | 4 - keyboards/noxary/x268/rules.mk | 16 +- keyboards/noxary/x268/x268.h | 28 +- keyboards/np12/info.json | 4 +- keyboards/np12/rules.mk | 5 +- .../nullbitsco/{nibble => common}/bitc_led.c | 2 +- .../nullbitsco/{nibble => common}/bitc_led.h | 2 +- .../nullbitsco/{nibble => common}/remote_kb.c | 8 +- .../nullbitsco/{nibble => common}/remote_kb.h | 2 +- keyboards/nullbitsco/nibble/big_led.c | 2 +- keyboards/nullbitsco/nibble/big_led.h | 2 +- keyboards/nullbitsco/nibble/config.h | 2 +- keyboards/nullbitsco/nibble/info.json | 2 - .../nibble/keymaps/default/keymap.c | 2 +- .../nullbitsco/nibble/keymaps/iso/keymap.c | 2 +- .../nullbitsco/nibble/keymaps/oled/keymap.c | 7 +- .../nullbitsco/nibble/keymaps/oled/rules.mk | 3 +- .../keymaps/oled_bongocat/animation_frames.h | 4 +- .../nibble/keymaps/oled_bongocat/keymap.c | 25 +- .../nibble/keymaps/oled_bongocat/rules.mk | 5 +- .../nibble/keymaps/oled_status/config.h | 2 +- .../nibble/keymaps/oled_status/keymap.c | 34 +- .../nibble/keymaps/oled_status/oled_display.c | 12 +- .../nibble/keymaps/oled_status/rules.mk | 5 +- .../nibble/keymaps/snailmap/keymap.c | 543 +++ .../nibble/keymaps/snailmap/readme.md | 36 + .../nibble/keymaps/snailmap/rules.mk | 5 + .../nullbitsco/nibble/keymaps/via/keymap.c | 2 +- keyboards/nullbitsco/nibble/matrix.c | 2 +- keyboards/nullbitsco/nibble/nibble.c | 3 +- keyboards/nullbitsco/nibble/nibble.h | 5 +- keyboards/nullbitsco/nibble/rules.mk | 11 +- keyboards/nullbitsco/scramble/config.h | 2 +- keyboards/nullbitsco/scramble/info.json | 2 - .../scramble/keymaps/default/keymap.c | 2 +- .../nullbitsco/scramble/keymaps/oled/config.h | 2 +- .../nullbitsco/scramble/keymaps/oled/keymap.c | 7 +- .../nullbitsco/scramble/keymaps/oled/rules.mk | 3 +- .../nullbitsco/scramble/keymaps/via/keymap.c | 2 +- keyboards/nullbitsco/scramble/rules.mk | 7 +- keyboards/nullbitsco/scramble/scramble.c | 2 +- keyboards/nullbitsco/scramble/scramble.h | 2 +- keyboards/numatreus/info.json | 2 - keyboards/numatreus/keymaps/hdbx/keymap.c | 2 +- keyboards/numatreus/post_rules.mk | 3 + keyboards/numatreus/rules.mk | 19 +- keyboards/ocean/gin_v2/config.h | 51 + keyboards/ocean/gin_v2/gin_v2.c | 15 + keyboards/ocean/gin_v2/gin_v2.h | 37 + keyboards/ocean/gin_v2/info.json | 72 + .../ocean/gin_v2/keymaps/default/keymap.c | 32 + keyboards/ocean/gin_v2/keymaps/via/keymap.c | 46 + keyboards/ocean/gin_v2/keymaps/via/rules.mk | 2 + keyboards/ocean/gin_v2/readme.md | 24 + keyboards/ocean/gin_v2/rules.mk | 19 + keyboards/ocean/slamz/config.h | 50 + keyboards/ocean/slamz/info.json | 10 + .../ocean/slamz/keymaps/default/keymap.c | 25 + keyboards/ocean/slamz/keymaps/via/keymap.c | 46 + keyboards/ocean/slamz/keymaps/via/rules.mk | 2 + keyboards/ocean/slamz/readme.md | 23 + keyboards/ocean/slamz/rules.mk | 19 + keyboards/ocean/slamz/slamz.c | 15 + keyboards/ocean/slamz/slamz.h | 31 + keyboards/ocean/stealth/config.h | 51 + keyboards/ocean/stealth/info.json | 10 + .../ocean/stealth/keymaps/default/keymap.c | 33 + keyboards/ocean/stealth/keymaps/via/keymap.c | 33 + keyboards/ocean/stealth/keymaps/via/rules.mk | 2 + keyboards/ocean/stealth/readme.md | 23 + keyboards/ocean/stealth/rules.mk | 19 + keyboards/ocean/stealth/stealth.c | 15 + keyboards/ocean/stealth/stealth.h | 25 + keyboards/ocean/sus/config.h | 51 + keyboards/ocean/sus/info.json | 26 + keyboards/ocean/sus/keymaps/default/keymap.c | 45 + keyboards/ocean/sus/keymaps/via/keymap.c | 45 + keyboards/ocean/sus/keymaps/via/rules.mk | 2 + keyboards/ocean/sus/readme.md | 24 + keyboards/ocean/sus/rules.mk | 19 + keyboards/ocean/sus/sus.c | 15 + keyboards/ocean/sus/sus.h | 31 + keyboards/ocean/wang_ergo/config.h | 51 + keyboards/ocean/wang_ergo/info.json | 114 + .../ocean/wang_ergo/keymaps/default/keymap.c | 24 + .../wang_ergo/keymaps/default_2x2u/keymap.c | 24 + .../ocean/wang_ergo/keymaps/via/keymap.c | 45 + .../ocean/wang_ergo/keymaps/via/rules.mk | 2 + keyboards/ocean/wang_ergo/readme.md | 24 + keyboards/ocean/wang_ergo/rules.mk | 19 + keyboards/ocean/wang_ergo/wang_ergo.c | 15 + keyboards/ocean/wang_ergo/wang_ergo.h | 61 + keyboards/ocean/wang_v2/config.h | 51 + keyboards/ocean/wang_v2/info.json | 10 + .../ocean/wang_v2/keymaps/default/keymap.c | 45 + keyboards/ocean/wang_v2/keymaps/via/keymap.c | 45 + keyboards/ocean/wang_v2/keymaps/via/rules.mk | 2 + keyboards/ocean/wang_v2/readme.md | 24 + keyboards/ocean/wang_v2/rules.mk | 19 + keyboards/ocean/wang_v2/wang_v2.c | 15 + keyboards/ocean/wang_v2/wang_v2.h | 31 + keyboards/oddball/adns/adns.c | 219 -- keyboards/oddball/adns/adns.h | 35 - keyboards/oddball/adns/adns9800_srom_A6.h | 3078 --------------- keyboards/oddball/config.h | 23 +- keyboards/oddball/info.json | 2 - keyboards/oddball/keymaps/default/config.h | 1 - keyboards/oddball/keymaps/default/rules.mk | 1 + keyboards/oddball/keymaps/pmw3360/config.h | 1 - keyboards/oddball/keymaps/pmw3360/rules.mk | 1 + keyboards/oddball/oddball.c | 54 +- .../oddball/optical_sensor/optical_sensor.h | 53 - keyboards/oddball/pmw/pmw.c | 226 -- keyboards/oddball/pmw/pmw.h | 35 - keyboards/oddball/pmw/pmw3360_srom_0x04.h | 280 -- keyboards/oddball/rules.mk | 12 +- keyboards/oddball/v1/rules.mk | 2 +- keyboards/oddball/v2/rules.mk | 2 +- keyboards/oddball/v2_1/rules.mk | 2 +- keyboards/oddforge/vea/info.json | 2 - keyboards/oddforge/vea/rules.mk | 6 +- keyboards/odelia/info.json | 2 - keyboards/odelia/rules.mk | 5 +- keyboards/ogre/ergo_single/info.json | 2 - keyboards/ogre/ergo_single/rules.mk | 15 +- keyboards/ogre/ergo_split/info.json | 2 - keyboards/ogre/ergo_split/rules.mk | 15 +- keyboards/ogurec/config.h | 56 + keyboards/ogurec/info.json | 86 + keyboards/ogurec/keymaps/dack/config.h | 19 + keyboards/ogurec/keymaps/dack/keymap.c | 97 + keyboards/ogurec/keymaps/dack/readme.md | 3 + keyboards/ogurec/keymaps/default/config.h | 19 + keyboards/ogurec/keymaps/default/keymap.c | 76 + keyboards/ogurec/keymaps/default/readme.md | 1 + .../keymaps/default}/rules.mk | 0 keyboards/ogurec/left_pm/left_pm.h | 49 + keyboards/ogurec/left_pm/readme.md | 13 + keyboards/ogurec/left_pm/rules.mk | 0 keyboards/ogurec/ogurec.c | 16 + keyboards/ogurec/ogurec.h | 24 + keyboards/ogurec/readme.md | 27 + keyboards/ogurec/right_pm/readme.md | 13 + keyboards/ogurec/right_pm/right_pm.h | 49 + keyboards/ogurec/right_pm/rules.mk | 0 keyboards/ogurec/rules.mk | 20 + keyboards/ok60/config.h | 5 +- keyboards/ok60/info.json | 8 +- keyboards/ok60/ok60.h | 108 +- keyboards/ok60/rules.mk | 15 +- keyboards/omnikey_bh/config.h | 5 +- keyboards/omnikey_bh/info.json | 3 - keyboards/omnikey_bh/rules.mk | 10 +- keyboards/omnikeyish/info.json | 4 +- keyboards/omnikeyish/rules.mk | 10 +- keyboards/onekeyco/dango40/config.h | 50 + keyboards/onekeyco/dango40/dango40.c | 27 + keyboards/onekeyco/dango40/dango40.h | 33 + keyboards/onekeyco/dango40/info.json | 263 ++ .../onekeyco/dango40/keymaps/default/keymap.c | 38 + .../onekeyco/dango40/keymaps/via/keymap.c | 50 + .../onekeyco/dango40/keymaps/via/rules.mk | 1 + keyboards/onekeyco/dango40/readme.md | 18 + keyboards/onekeyco/dango40/rules.mk | 20 + keyboards/opendeck/32/info.json | 2 - keyboards/opendeck/32/rev1/config.h | 53 +- keyboards/opendeck/32/rev1/rev1.c | 2 +- keyboards/opendeck/32/rev1/rules.mk | 5 +- keyboards/opus/rules.mk | 5 +- keyboards/orange75/info.json | 3 - keyboards/orange75/keymaps/default/keymap.c | 31 +- keyboards/orange75/rules.mk | 10 +- keyboards/org60/config.h | 5 +- keyboards/org60/info.json | 4 - keyboards/org60/keymaps/default/keymap.c | 5 - keyboards/org60/org60.h | 47 +- keyboards/org60/rules.mk | 15 +- keyboards/ortho5by12/info.json | 4 - keyboards/ortho5by12/rules.mk | 18 +- keyboards/orthocode/config.h | 93 + keyboards/orthocode/info.json | 87 + keyboards/orthocode/keymaps/default/keymap.c | 175 + keyboards/orthocode/orthocode.c | 16 + keyboards/orthocode/orthocode.h | 36 + keyboards/orthocode/readme.md | 17 + keyboards/orthocode/rules.mk | 23 + keyboards/orthodox/keymaps/drashna/keymap.c | 71 +- keyboards/orthodox/keymaps/drashna/rules.mk | 3 +- keyboards/orthodox/keymaps/rfvizarra/keymap.c | 2 +- keyboards/orthodox/keymaps/shaymdev/config.h | 60 + keyboards/orthodox/keymaps/shaymdev/keymap.c | 196 + keyboards/orthodox/keymaps/shaymdev/rules.mk | 6 + keyboards/orthodox/rev1/info.json | 2 - keyboards/orthodox/rev1/rev1.c | 13 - keyboards/orthodox/rev1/rules.mk | 7 - keyboards/orthodox/rev3/config.h | 4 +- keyboards/orthodox/rev3/info.json | 2 - keyboards/orthodox/rev3/rev3.c | 13 - keyboards/orthodox/rev3/rules.mk | 7 - keyboards/orthodox/rev3_teensy/config.h | 2 +- keyboards/orthodox/rev3_teensy/info.json | 2 - keyboards/orthodox/rev3_teensy/rev3_teensy.c | 13 - keyboards/orthodox/rev3_teensy/rules.mk | 7 - keyboards/orthodox/rules.mk | 9 +- keyboards/otaku_split/rev0/config.h | 73 - keyboards/otaku_split/rev0/info.json | 2 - .../otaku_split/rev0/keymaps/default/keymap.c | 18 - .../otaku_split/rev0/keymaps/sample/keymap.c | 12 - keyboards/otaku_split/rev0/rev0.c | 35 - keyboards/otaku_split/rev0/rules.mk | 18 +- keyboards/otaku_split/rev1/config.h | 73 - keyboards/otaku_split/rev1/info.json | 2 - .../otaku_split/rev1/keymaps/default/keymap.c | 19 - .../otaku_split/rev1/keymaps/sample/keymap.c | 12 - keyboards/otaku_split/rev1/rev1.c | 35 - keyboards/otaku_split/rev1/rules.mk | 18 +- keyboards/owl8/config.h | 156 + keyboards/owl8/info.json | 30 + keyboards/owl8/keymaps/default/keymap.c | 68 + keyboards/owl8/keymaps/default/readme.md | 1 + keyboards/owl8/keymaps/via/keymap.c | 123 + keyboards/owl8/keymaps/via/readme.md | 1 + keyboards/owl8/keymaps/via/rules.mk | 1 + keyboards/owl8/owl8.c | 17 + keyboards/owl8/owl8.h | 38 + keyboards/owl8/readme.md | 19 + keyboards/owl8/rules.mk | 21 + keyboards/owlab/jelly_epoch/hotswap/config.h | 65 + keyboards/owlab/jelly_epoch/hotswap/hotswap.c | 18 + keyboards/owlab/jelly_epoch/hotswap/hotswap.h | 38 + keyboards/owlab/jelly_epoch/hotswap/info.json | 92 + .../hotswap/keymaps/default/keymap.c | 37 + .../jelly_epoch/hotswap/keymaps/via/keymap.c | 53 + .../jelly_epoch/hotswap/keymaps/via/rules.mk | 2 + keyboards/owlab/jelly_epoch/hotswap/readme.md | 21 + keyboards/owlab/jelly_epoch/hotswap/rules.mk | 19 + keyboards/owlab/jelly_epoch/soldered/config.h | 65 + .../owlab/jelly_epoch/soldered/info.json | 265 ++ .../soldered/keymaps/default/keymap.c | 37 + .../jelly_epoch/soldered/keymaps/via/keymap.c | 53 + .../jelly_epoch/soldered/keymaps/via/rules.mk | 2 + .../owlab/jelly_epoch/soldered/readme.md | 21 + keyboards/owlab/jelly_epoch/soldered/rules.mk | 19 + .../owlab/jelly_epoch/soldered/soldered.c | 18 + .../owlab/jelly_epoch/soldered/soldered.h | 70 + keyboards/owlab/suit80/ansi/ansi.c | 17 + keyboards/owlab/suit80/ansi/ansi.h | 36 + keyboards/owlab/suit80/ansi/config.h | 46 + keyboards/owlab/suit80/ansi/info.json | 98 + .../suit80/ansi/keymaps/default/keymap.c | 41 + .../owlab/suit80/ansi/keymaps/via/keymap.c | 57 + .../owlab/suit80/ansi/keymaps/via/rules.mk | 2 + keyboards/owlab/suit80/ansi/readme.md | 21 + keyboards/owlab/suit80/ansi/rules.mk | 19 + keyboards/owlab/suit80/iso/config.h | 46 + keyboards/owlab/suit80/iso/info.json | 192 + keyboards/owlab/suit80/iso/iso.c | 19 + keyboards/owlab/suit80/iso/iso.h | 52 + .../owlab/suit80/iso/keymaps/default/keymap.c | 41 + .../owlab/suit80/iso/keymaps/via/keymap.c | 56 + .../owlab/suit80/iso/keymaps/via/rules.mk | 2 + keyboards/owlab/suit80/iso/readme.md | 21 + keyboards/owlab/suit80/iso/rules.mk | 19 + keyboards/owlab/voice65/hotswap/config.h | 136 + keyboards/owlab/voice65/hotswap/halconf.h | 21 + keyboards/owlab/voice65/hotswap/hotswap.c | 449 +++ keyboards/owlab/voice65/hotswap/hotswap.h | 46 + keyboards/owlab/voice65/hotswap/info.json | 81 + .../voice65/hotswap/keymaps/default/keymap.c | 50 + .../voice65/hotswap/keymaps/via/keymap.c | 51 + .../voice65/hotswap/keymaps/via/rules.mk | 2 + keyboards/owlab/voice65/hotswap/mcuconf.h | 22 + keyboards/owlab/voice65/hotswap/readme.md | 21 + keyboards/owlab/voice65/hotswap/rules.mk | 25 + keyboards/owlab/voice65/soldered/config.h | 136 + keyboards/owlab/voice65/soldered/halconf.h | 21 + keyboards/owlab/voice65/soldered/info.json | 440 +++ .../voice65/soldered/keymaps/default/keymap.c | 50 + .../voice65/soldered/keymaps/via/keymap.c | 50 + .../voice65/soldered/keymaps/via/rules.mk | 2 + keyboards/owlab/voice65/soldered/mcuconf.h | 22 + keyboards/owlab/voice65/soldered/readme.md | 21 + keyboards/owlab/voice65/soldered/rules.mk | 25 + keyboards/owlab/voice65/soldered/soldered.c | 454 +++ keyboards/owlab/voice65/soldered/soldered.h | 116 + keyboards/pabile/p18/info.json | 2 - keyboards/pabile/p18/rules.mk | 15 +- keyboards/pabile/p20/info.json | 2 - keyboards/pabile/p20/ver1/rules.mk | 5 +- keyboards/pabile/p20/ver2/rules.mk | 5 +- keyboards/pabile/p40/info.json | 2 - keyboards/pabile/p40/rules.mk | 15 +- keyboards/pabile/p40_ortho/info.json | 2 - keyboards/pabile/p40_ortho/rules.mk | 5 +- keyboards/pabile/p42/info.json | 2 - keyboards/pabile/p42/rules.mk | 5 +- keyboards/packrat/config.h | 59 + keyboards/packrat/info.json | 26 + keyboards/packrat/keymaps/3uc/config.h | 19 + keyboards/packrat/keymaps/3uc/keymap.c | 92 + keyboards/packrat/keymaps/3uc/readme.md | 1 + .../jitsi => packrat/keymaps/3uc}/rules.mk | 0 keyboards/packrat/keymaps/default/config.h | 19 + keyboards/packrat/keymaps/default/keymap.c | 81 + keyboards/packrat/keymaps/default/readme.md | 3 + .../keymaps/default}/rules.mk | 0 keyboards/packrat/packrat.c | 28 + keyboards/packrat/packrat.h | 79 + keyboards/packrat/readme.md | 25 + keyboards/packrat/rules.mk | 21 + keyboards/paladin64/config.h | 116 - keyboards/paladin64/info.json | 28 - keyboards/paladin64/keymaps/default/keymap.c | 90 - keyboards/paladin64/paladin64.c | 2 - keyboards/paladin64/paladin64.h | 92 - keyboards/paladin64/readme.md | 19 - keyboards/paladin64/rules.mk | 31 - keyboards/palette1202/config.h | 2 +- keyboards/palette1202/info.json | 3 - .../palette1202/keymaps/default/keymap.c | 9 +- .../palette1202/keymaps/key-check/keymap.c | 9 +- keyboards/palette1202/lib/oled_helper.c | 2 +- keyboards/palette1202/lib/oled_helper.h | 6 +- keyboards/palette1202/palette1202.c | 7 +- keyboards/palette1202/rules.mk | 18 +- keyboards/panc40/info.json | 5 - keyboards/panc40/rules.mk | 15 +- keyboards/panc60/info.json | 2 - keyboards/panc60/rules.mk | 11 +- keyboards/pandora/info.json | 2 - keyboards/pandora/keymaps/default/keymap.c | 3 +- keyboards/pandora/keymaps/via/keymap.c | 3 +- keyboards/pandora/rules.mk | 7 +- keyboards/pdxkbc/config.h | 73 - keyboards/pdxkbc/info.json | 4 +- keyboards/pdxkbc/keymaps/default/keymap.c | 6 - keyboards/pdxkbc/rules.mk | 18 +- keyboards/pearl/info.json | 2 - keyboards/pearl/keymaps/cijanzen/rules.mk | 2 +- keyboards/pearl/rules.mk | 11 +- keyboards/pearlboards/pandora/config.h | 79 + keyboards/pearlboards/pandora/info.json | 10 + .../pandora/keymaps/default/keymap.c | 84 + .../pearlboards/pandora/keymaps/via/keymap.c | 98 + .../pearlboards/pandora/keymaps/via/rules.mk | 1 + keyboards/pearlboards/pandora/pandora.c | 17 + keyboards/pearlboards/pandora/pandora.h | 38 + keyboards/pearlboards/pandora/readme.md | 17 + keyboards/pearlboards/pandora/rules.mk | 23 + keyboards/peej/lumberjack/info.json | 2 - keyboards/peej/lumberjack/rules.mk | 7 +- keyboards/peej/tripel/config.h | 38 + keyboards/peej/tripel/info.json | 80 + .../peej/tripel/keymaps/default/keymap.c | 54 + keyboards/peej/tripel/keymaps/via/keymap.c | 50 + keyboards/peej/tripel/keymaps/via/rules.mk | 1 + keyboards/peej/tripel/left/left.h | 38 + keyboards/peej/tripel/left/readme.md | 21 + keyboards/peej/tripel/left/rules.mk | 1 + keyboards/peej/tripel/middle/middle.h | 38 + keyboards/peej/tripel/middle/readme.md | 21 + keyboards/peej/tripel/middle/rules.mk | 1 + keyboards/peej/tripel/right/readme.md | 21 + keyboards/peej/tripel/right/right.h | 38 + keyboards/peej/tripel/right/rules.mk | 1 + keyboards/peej/tripel/rules.mk | 21 + keyboards/peiorisboards/ixora/info.json | 21 - .../ixora/keymaps/default/keymap.c | 42 - keyboards/peiorisboards/ixora/readme.md | 22 - keyboards/peiorisboards/ixora/rules.mk | 21 - .../tone/keymaps/default/keymap.c | 33 + .../tone/keymaps/default/readme.md | 2 + keyboards/peranekofactory/tone/readme.md | 19 + keyboards/peranekofactory/tone/rev1/config.h | 159 + keyboards/peranekofactory/tone/rev1/info.json | 10 + keyboards/peranekofactory/tone/rev1/readme.md | 19 + keyboards/peranekofactory/tone/rev1/rev1.c | 17 + keyboards/peranekofactory/tone/rev1/rev1.h | 35 + keyboards/peranekofactory/tone/rev1/rules.mk | 20 + keyboards/peranekofactory/tone/rev2/config.h | 159 + keyboards/peranekofactory/tone/rev2/info.json | 10 + keyboards/peranekofactory/tone/rev2/readme.md | 19 + keyboards/peranekofactory/tone/rev2/rev2.c | 17 + keyboards/peranekofactory/tone/rev2/rev2.h | 35 + keyboards/peranekofactory/tone/rev2/rules.mk | 20 + keyboards/peranekofactory/tone/rules.mk | 1 + keyboards/percent/booster/booster.c | 35 - keyboards/percent/booster/info.json | 3 - keyboards/percent/booster/rules.mk | 18 +- keyboards/percent/canoe/config.h | 5 +- keyboards/percent/canoe/info.json | 4 - keyboards/percent/canoe/rules.mk | 11 +- keyboards/percent/canoe_gen2/config.h | 50 +- keyboards/percent/canoe_gen2/info.json | 4 +- .../percent/canoe_gen2/keymaps/via/rules.mk | 1 + .../percent/canoe_gen2/rgb_matrix_kb.inc | 10 +- keyboards/percent/canoe_gen2/rules.mk | 5 +- keyboards/percent/skog/info.json | 2 - keyboards/percent/skog/rules.mk | 14 +- keyboards/percent/skog_lite/info.json | 2 - keyboards/percent/skog_lite/rules.mk | 11 +- keyboards/phantom/info.json | 2 - keyboards/phantom/rules.mk | 5 +- keyboards/phase_studio/titan65/config.h | 51 - .../phase_studio/titan65/hotswap/config.h | 51 + .../phase_studio/titan65/hotswap/hotswap.c | 51 + .../titan65/{titan65.h => hotswap/hotswap.h} | 0 .../phase_studio/titan65/hotswap/info.json | 78 + .../{ => hotswap}/keymaps/default/keymap.c | 0 .../{ => hotswap}/keymaps/via/keymap.c | 0 .../titan65/hotswap/keymaps/via/rules.mk | 2 + .../titan65/{ => hotswap}/readme.md | 0 .../phase_studio/titan65/hotswap/rules.mk | 25 + keyboards/phase_studio/titan65/info.json | 80 - keyboards/phase_studio/titan65/rules.mk | 27 +- .../phase_studio/titan65/soldered/config.h | 45 + .../phase_studio/titan65/soldered/info.json | 81 + .../titan65/soldered/keymaps/default/keymap.c | 36 + .../titan65/soldered/keymaps/via/keymap.c | 51 + .../titan65/soldered/keymaps/via/rules.mk | 2 + .../phase_studio/titan65/soldered/readme.md | 24 + .../phase_studio/titan65/soldered/rules.mk | 23 + .../phase_studio/titan65/soldered/soldered.c | 17 + .../phase_studio/titan65/soldered/soldered.h | 91 + keyboards/phase_studio/titan65/titan65.c | 51 - keyboards/phoenix/info.json | 3 - keyboards/phoenix/rules.mk | 4 +- keyboards/phrygian/ph100/chconf.h | 61 + keyboards/phrygian/ph100/config.h | 43 + keyboards/phrygian/ph100/halconf.h | 37 + keyboards/phrygian/ph100/info.json | 111 + .../phrygian/ph100/keymaps/default/keymap.c | 27 + keyboards/phrygian/ph100/ph100.c | 19 + keyboards/phrygian/ph100/ph100.h | 44 + keyboards/phrygian/ph100/readme.md | 20 + keyboards/phrygian/ph100/rules.mk | 23 + keyboards/pico/rules.mk | 18 +- .../picolab/frusta_fundamental/info.json | 4 +- keyboards/picolab/frusta_fundamental/rules.mk | 5 +- keyboards/pimentoso/paddino02/rev1/info.json | 2 - keyboards/pimentoso/paddino02/rev1/rules.mk | 5 +- .../pimentoso/paddino02/rev2/left/info.json | 2 - .../pimentoso/paddino02/rev2/left/rules.mk | 5 +- .../pimentoso/paddino02/rev2/right/info.json | 2 - .../pimentoso/paddino02/rev2/right/rules.mk | 5 +- keyboards/pimentoso/touhoupad/config.h | 52 + keyboards/pimentoso/touhoupad/info.json | 24 + .../touhoupad/keymaps/default/keymap.c | 33 + .../touhoupad/keymaps/default/readme.md | 1 + keyboards/pimentoso/touhoupad/readme.md | 19 + keyboards/pimentoso/touhoupad/rules.mk | 19 + keyboards/pimentoso/touhoupad/touhoupad.c | 16 + keyboards/pimentoso/touhoupad/touhoupad.h | 28 + keyboards/pinky/3/info.json | 2 - keyboards/pinky/4/info.json | 2 - keyboards/pinky/pinky.c | 27 - keyboards/pinky/pinky.h | 16 +- keyboards/pinky/rules.mk | 5 +- keyboards/pisces/info.json | 4 +- keyboards/pisces/rules.mk | 7 +- keyboards/pistachio/config.h | 49 - keyboards/pistachio/info.json | 2 - keyboards/pistachio/pistachio.h | 42 +- keyboards/pistachio/readme.md | 13 +- keyboards/pistachio/rev1/config.h | 67 + keyboards/pistachio/rev1/readme.md | 17 + keyboards/pistachio/rev1/rev1.c | 18 + keyboards/pistachio/rev1/rev1.h | 58 + keyboards/pistachio/rev1/rules.mk | 20 + keyboards/pistachio/rev2/config.h | 71 + keyboards/pistachio/rev2/readme.md | 17 + keyboards/pistachio/rev2/rev2.c | 19 + keyboards/pistachio/rev2/rev2.h | 58 + keyboards/pistachio/rev2/rules.mk | 20 + keyboards/pistachio/rules.mk | 24 +- keyboards/pistachio_mp/config.h | 4 +- keyboards/pistachio_mp/info.json | 2 - keyboards/pistachio_mp/keymaps/via/keymap.c | 76 + keyboards/pistachio_mp/keymaps/via/readme.md | 1 + keyboards/pistachio_mp/keymaps/via/rules.mk | 1 + keyboards/pistachio_mp/rules.mk | 5 +- keyboards/pistachio_pro/config.h | 108 + keyboards/pistachio_pro/info.json | 106 + .../pistachio_pro/keymaps/default/keymap.c | 123 + .../pistachio_pro/keymaps/default/readme.md | 1 + keyboards/pistachio_pro/keymaps/rate/keymap.c | 125 + .../pistachio_pro/keymaps/rate/readme.md | 1 + keyboards/pistachio_pro/keymaps/via/keymap.c | 141 + keyboards/pistachio_pro/keymaps/via/readme.md | 1 + keyboards/pistachio_pro/keymaps/via/rules.mk | 2 + keyboards/pistachio_pro/lib/bme280.c | 255 ++ keyboards/pistachio_pro/lib/bme280.h | 22 + keyboards/pistachio_pro/lib/glcdfont.c | 232 ++ keyboards/pistachio_pro/matrix.c | 151 + keyboards/pistachio_pro/pistachio_pro.c | 17 + keyboards/pistachio_pro/pistachio_pro.h | 42 + keyboards/pistachio_pro/readme.md | 21 + keyboards/pistachio_pro/rules.mk | 26 + keyboards/pizzakeyboards/pizza65/info.json | 3 - keyboards/pizzakeyboards/pizza65/rules.mk | 5 +- keyboards/pkb65/info.json | 4 +- keyboards/pkb65/rules.mk | 5 +- keyboards/planck/config.h | 5 +- keyboards/planck/ez/config.h | 80 +- keyboards/planck/ez/ez.c | 4 +- keyboards/planck/ez/ez.h | 22 +- keyboards/planck/ez/glow/config.h | 5 +- keyboards/planck/ez/glow/glow.c | 18 + keyboards/planck/ez/glow/glow.h | 18 + keyboards/planck/ez/halconf.h | 23 + keyboards/planck/ez/info.json | 4 - keyboards/planck/ez/mcuconf.h | 41 + keyboards/planck/ez/readme.md | 18 +- keyboards/planck/ez/rules.mk | 23 +- keyboards/planck/info.json | 2 - keyboards/planck/keymaps/ab/rules.mk | 2 +- keyboards/planck/keymaps/abishalom/keymap.c | 5 +- keyboards/planck/keymaps/adamtabrams/config.h | 39 + keyboards/planck/keymaps/adamtabrams/keymap.c | 279 ++ .../planck/keymaps/adamtabrams/readme.md | 89 + keyboards/planck/keymaps/adamtabrams/rules.mk | 13 + keyboards/planck/keymaps/ajp10304/readme.md | 8 +- keyboards/planck/keymaps/alexey/rules.mk | 2 +- keyboards/planck/keymaps/altgr/rules.mk | 2 +- keyboards/planck/keymaps/am/keymap.c | 2 +- .../planck/keymaps/andylikescandy/keymap.c | 6 +- .../planck/keymaps/angerthosenear/rules.mk | 2 +- keyboards/planck/keymaps/atreus/keymap.c | 5 +- keyboards/planck/keymaps/austin/rules.mk | 2 +- keyboards/planck/keymaps/aviator/config.h | 7 +- keyboards/planck/keymaps/basic/rules.mk | 2 +- keyboards/planck/keymaps/bone2planck/keymap.c | 16 +- keyboards/planck/keymaps/bone2planck/rules.mk | 2 +- keyboards/planck/keymaps/buffet/config.h | 74 +- keyboards/planck/keymaps/buffet/rules.mk | 2 +- keyboards/planck/keymaps/buhearns/rules.mk | 2 +- keyboards/planck/keymaps/cbbrowne/config.h | 8 +- keyboards/planck/keymaps/cbbrowne/rules.mk | 3 +- .../planck/keymaps/charlesrocket/keymap.c | 6 +- keyboards/planck/keymaps/charlie/rules.mk | 2 +- keyboards/planck/keymaps/circuit/rules.mk | 2 +- keyboards/planck/keymaps/copface/keymap.c | 14 +- keyboards/planck/keymaps/copface/rules.mk | 2 +- keyboards/planck/keymaps/corvec/rules.mk | 1 - keyboards/planck/keymaps/csc027/rules.mk | 2 +- keyboards/planck/keymaps/daniel/rules.mk | 2 +- .../planck/keymaps/danielhklein/rules.mk | 2 +- keyboards/planck/keymaps/david/rules.mk | 2 +- keyboards/planck/keymaps/davidrambo/keymap.c | 39 +- keyboards/planck/keymaps/dc/rules.mk | 2 +- .../keymaps/dear_vehicle_owner/keymap.c | 5 +- keyboards/planck/keymaps/default/config.h | 27 +- keyboards/planck/keymaps/default/keymap.c | 7 +- keyboards/planck/keymaps/deft/keymap.c | 2 +- keyboards/planck/keymaps/dlaroe/rules.mk | 2 +- .../planck/keymaps/dr_notsokind/rules.mk | 2 +- .../planck/keymaps/dsanchezseco/keymap.c | 2 +- .../planck/keymaps/dvorak2space/rules.mk | 3 +- keyboards/planck/keymaps/dvz/config.h | 73 + keyboards/planck/keymaps/dvz/keymap.c | 280 ++ keyboards/planck/keymaps/dvz/readme.md | 11 + keyboards/planck/keymaps/dvz/rules.mk | 5 + keyboards/planck/keymaps/dzobert/rules.mk | 2 +- keyboards/planck/keymaps/eshesh2/keymap.c | 2 +- keyboards/planck/keymaps/espynn/rules.mk | 2 +- .../planck/keymaps/experimental/rules.mk | 2 +- keyboards/planck/keymaps/fabian/keymap.c | 6 +- .../planck/keymaps/foreveranapple/config.h | 46 + .../planck/keymaps/foreveranapple/keymap.c | 413 ++ .../planck/keymaps/foreveranapple/readme.md | 3 + .../planck/keymaps/foreveranapple/rules.mk | 2 + keyboards/planck/keymaps/gabriel/rules.mk | 2 +- keyboards/planck/keymaps/gitdrik/keymap.c | 5 +- keyboards/planck/keymaps/grant24/keymap.c | 5 +- keyboards/planck/keymaps/gunp/rules.mk | 2 +- keyboards/planck/keymaps/hiea/rules.mk | 2 +- keyboards/planck/keymaps/hieax/rules.mk | 2 +- keyboards/planck/keymaps/hvp/keymap.c | 5 +- keyboards/planck/keymaps/impossible/rules.mk | 2 +- keyboards/planck/keymaps/ishtob/rule.mk | 18 - keyboards/planck/keymaps/ishtob/rules.mk | 18 + keyboards/planck/keymaps/jacob/rules.mk | 2 +- keyboards/planck/keymaps/jasperla/keymap.c | 2 +- keyboards/planck/keymaps/jdelkins/config.h | 5 +- keyboards/planck/keymaps/jdelkins/keymap.c | 131 +- keyboards/planck/keymaps/jeebak/rules.mk | 2 +- .../planck/keymaps/jetpacktuxedo/keymap.c | 7 +- keyboards/planck/keymaps/jhenahan/rules.mk | 2 +- .../planck/keymaps/jimmysjolund/config.h | 49 + .../planck/keymaps/jimmysjolund/keymap.c | 367 ++ .../planck/keymaps/jimmysjolund/readme.md | 2 + .../planck/keymaps/jimmysjolund/rules.mk | 1 + keyboards/planck/keymaps/joe/rules.mk | 2 +- keyboards/planck/keymaps/johannes/rules.mk | 2 +- keyboards/planck/keymaps/jweickm/config.h | 69 + keyboards/planck/keymaps/jweickm/keymap.c | 1131 ++++++ keyboards/planck/keymaps/jweickm/readme.md | 154 + keyboards/planck/keymaps/jweickm/rules.mk | 5 + keyboards/planck/keymaps/kanbara/rules.mk | 2 +- keyboards/planck/keymaps/khord/config.h | 7 +- keyboards/planck/keymaps/kuatsure/config.h | 33 + keyboards/planck/keymaps/kuatsure/keymap.c | 318 ++ keyboards/planck/keymaps/kuatsure/readme.md | 1 + keyboards/planck/keymaps/kuatsure/rules.mk | 6 + keyboards/planck/keymaps/kyle/rules.mk | 2 +- keyboards/planck/keymaps/lae3/rules.mk | 2 +- keyboards/planck/keymaps/leo/rules.mk | 2 +- keyboards/planck/keymaps/lja83/keymap.c | 5 +- keyboards/planck/keymaps/lucas/keymap.c | 12 +- keyboards/planck/keymaps/lucas/rules.mk | 2 +- keyboards/planck/keymaps/lukas/rules.mk | 2 +- keyboards/planck/keymaps/luke/rules.mk | 2 +- keyboards/planck/keymaps/max/rules.mk | 2 +- keyboards/planck/keymaps/mgalisa/keymap.c | 6 +- .../planck/keymaps/mikethetiger/keymap.c | 7 +- keyboards/planck/keymaps/mjuma/keymap.c | 3 +- keyboards/planck/keymaps/mnil/keymap.c | 6 +- keyboards/planck/keymaps/mollat/rules.mk | 2 +- keyboards/planck/keymaps/motform/keymap.c | 18 +- keyboards/planck/keymaps/msiu/keymap.c | 7 +- keyboards/planck/keymaps/muzfuz/keymap.c | 9 +- keyboards/planck/keymaps/mwpeterson/keymap.c | 2 +- keyboards/planck/keymaps/narze/keymap.c | 14 +- keyboards/planck/keymaps/narze/readme.md | 17 +- keyboards/planck/keymaps/narze/rules.mk | 2 +- keyboards/planck/keymaps/navi/keymap.c | 4 +- keyboards/planck/keymaps/neo2planck/keymap.c | 12 +- keyboards/planck/keymaps/neo2planck/rules.mk | 2 +- keyboards/planck/keymaps/nick/keymap.c | 4 +- keyboards/planck/keymaps/nico/rules.mk | 2 +- .../planck/keymaps/not-quite-neo/rules.mk | 6 +- keyboards/planck/keymaps/orthodeluxe/rules.mk | 2 +- keyboards/planck/keymaps/oryx/config.h | 29 +- keyboards/planck/keymaps/oryx/keymap.c | 456 +-- keyboards/planck/keymaps/oryx/rules.mk | 5 +- keyboards/planck/keymaps/pascamel/keymap.c | 7 +- keyboards/planck/keymaps/pevecyan/keymap.c | 9 +- keyboards/planck/keymaps/pickle_jr/keymap.c | 6 +- keyboards/planck/keymaps/pickle_jr/rules.mk | 2 +- keyboards/planck/keymaps/piemod/rules.mk | 2 +- keyboards/planck/keymaps/pjanx/config.h | 49 + keyboards/planck/keymaps/pjanx/keymap.c | 354 ++ keyboards/planck/keymaps/pjanx/readme.md | 2 + keyboards/planck/keymaps/pjanx/rules.mk | 2 + keyboards/planck/keymaps/premek/rules.mk | 2 +- keyboards/planck/keymaps/priyadi/rules.mk | 3 +- keyboards/planck/keymaps/ptillemans/keymap.c | 5 +- keyboards/planck/keymaps/pvc/config.h | 8 +- keyboards/planck/keymaps/pvc/rules.mk | 2 +- keyboards/planck/keymaps/raffle/keymap.c | 7 +- keyboards/planck/keymaps/rai-suta/rules.mk | 2 +- keyboards/planck/keymaps/rjhilgefort/keymap.c | 5 +- keyboards/planck/keymaps/rodhaene/rules.mk | 3 +- keyboards/planck/keymaps/rootiest/config.h | 146 + keyboards/planck/keymaps/rootiest/keymap.c | 1928 +++++++++ keyboards/planck/keymaps/rootiest/readme.md | 37 + keyboards/planck/keymaps/rootiest/rules.mk | 27 + keyboards/planck/keymaps/sdothum/rules.mk | 2 +- keyboards/planck/keymaps/sgoodwin/rules.mk | 3 +- keyboards/planck/keymaps/sigul/keymap.c | 12 +- keyboards/planck/keymaps/skug/keymap.c | 19 +- keyboards/planck/keymaps/smittey/keymap.c | 7 +- keyboards/planck/keymaps/snowkuma/keymap.c | 10 +- keyboards/planck/keymaps/snowkuma/rules.mk | 2 +- .../planck/keymaps/spacebarracecar/keymap.c | 2 +- .../planck/keymaps/spacebarracecar/rules.mk | 2 +- .../planck/keymaps/synth_sample/keymap.c | 4 +- .../planck/keymaps/synth_wavetable/keymap.c | 4 +- keyboards/planck/keymaps/tak3over/rules.mk | 2 +- .../planck/keymaps/thermal_printer/rules.mk | 2 +- keyboards/planck/keymaps/tom/keymap.c | 7 +- keyboards/planck/keymaps/tong92/rules.mk | 2 +- keyboards/planck/keymaps/tylerwince/keymap.c | 4 +- keyboards/planck/keymaps/unagi/keymap.c | 7 +- keyboards/planck/keymaps/vifon/rules.mk | 3 +- keyboards/planck/keymaps/vxid/keymap.c | 2 +- keyboards/planck/keymaps/winternebs/keymap.c | 11 +- keyboards/planck/keymaps/yale/keymap.c | 4 +- keyboards/planck/keymaps/yale/rules.mk | 2 +- keyboards/planck/keymaps/zach/rules.mk | 8 +- keyboards/planck/keymaps/zrichard/config.h | 10 +- keyboards/planck/keymaps/zrichard/rules.mk | 2 +- keyboards/planck/light/config.h | 72 +- keyboards/planck/light/info.json | 4 - keyboards/planck/light/light.c | 12 +- keyboards/planck/light/light.h | 43 +- keyboards/planck/light/rules.mk | 19 +- keyboards/planck/planck.h | 45 +- keyboards/planck/rev1/info.json | 4 - keyboards/planck/rev1/rules.mk | 18 +- keyboards/planck/rev2/info.json | 4 - keyboards/planck/rev2/rules.mk | 18 +- keyboards/planck/rev3/info.json | 4 - keyboards/planck/rev3/rules.mk | 18 +- keyboards/planck/rev4/info.json | 4 - keyboards/planck/rev4/rules.mk | 18 +- keyboards/planck/rev5/info.json | 4 - keyboards/planck/rev5/rules.mk | 18 +- keyboards/planck/rev6/config.h | 29 +- keyboards/planck/rev6/info.json | 7 - keyboards/planck/rev6/rev6.c | 27 - keyboards/planck/rev6/rev6.h | 137 +- keyboards/planck/rev6/rules.mk | 9 +- keyboards/planck/rev6_drop/chconf.h | 29 + keyboards/planck/rev6_drop/config.h | 128 + keyboards/planck/rev6_drop/halconf.h | 23 + keyboards/planck/rev6_drop/info.json | 262 ++ keyboards/planck/rev6_drop/matrix.c | 166 + keyboards/planck/rev6_drop/mcuconf.h | 44 + keyboards/planck/rev6_drop/readme.md | 13 + keyboards/planck/rev6_drop/rev6_drop.c | 44 + keyboards/planck/rev6_drop/rev6_drop.h | 108 + keyboards/planck/rev6_drop/rules.mk | 31 + keyboards/planck/thk/info.json | 44 - keyboards/planck/thk/keymaps/thk/keymap.c | 3 +- keyboards/planck/thk/rules.mk | 8 +- keyboards/playkbtw/ca66/info.json | 2 - keyboards/playkbtw/ca66/rules.mk | 10 +- keyboards/playkbtw/helen80/helen80.h | 3 - keyboards/playkbtw/helen80/info.json | 11 +- keyboards/playkbtw/helen80/rules.mk | 8 +- keyboards/playkbtw/pk60/config.h | 5 +- keyboards/playkbtw/pk60/info.json | 2 - .../playkbtw/pk60/keymaps/default/keymap.c | 38 +- keyboards/playkbtw/pk60/pk60.h | 127 +- keyboards/playkbtw/pk60/rules.mk | 10 +- keyboards/playkbtw/pk64rgb/config.h | 99 + keyboards/playkbtw/pk64rgb/info.json | 83 + .../playkbtw/pk64rgb/keymaps/default/keymap.c | 44 + .../pk64rgb/keymaps/default/readme.md | 3 + .../playkbtw/pk64rgb/keymaps/via/keymap.c | 55 + .../playkbtw/pk64rgb/keymaps/via/rules.mk | 2 + keyboards/playkbtw/pk64rgb/pk64rgb.c | 117 + keyboards/playkbtw/pk64rgb/pk64rgb.h | 33 + keyboards/playkbtw/pk64rgb/readme.md | 25 + keyboards/playkbtw/pk64rgb/rules.mk | 26 + keyboards/plexus75/info.json | 6 - keyboards/plexus75/rules.mk | 4 +- keyboards/ploopyco/adns5050.c | 197 - keyboards/ploopyco/adns5050.h | 79 - keyboards/ploopyco/mouse/config.h | 3 + keyboards/ploopyco/mouse/info.json | 2 - .../ploopyco/mouse/keymaps/drashna/config.h | 7 +- .../ploopyco/mouse/keymaps/drashna/keymap.c | 4 + keyboards/ploopyco/mouse/mouse.c | 130 +- keyboards/ploopyco/mouse/mouse.h | 19 +- keyboards/ploopyco/mouse/readme.md | 4 +- keyboards/ploopyco/mouse/rules.mk | 14 +- keyboards/ploopyco/pmw3360.c | 218 -- keyboards/ploopyco/pmw3360.h | 103 - keyboards/ploopyco/pmw3360_firmware.h | 300 -- keyboards/ploopyco/trackball/config.h | 3 + keyboards/ploopyco/trackball/info.json | 2 - keyboards/ploopyco/trackball/rules.mk | 14 +- keyboards/ploopyco/trackball/trackball.c | 125 +- keyboards/ploopyco/trackball/trackball.h | 11 +- keyboards/ploopyco/trackball_mini/config.h | 6 + keyboards/ploopyco/trackball_mini/info.json | 2 - .../keymaps/drag_scroll/keymap.c | 2 +- keyboards/ploopyco/trackball_mini/readme.md | 4 +- keyboards/ploopyco/trackball_mini/rules.mk | 17 +- .../ploopyco/trackball_mini/trackball_mini.c | 158 +- .../ploopyco/trackball_mini/trackball_mini.h | 18 +- keyboards/ploopyco/trackball_nano/config.h | 6 + .../trackball_nano/keymaps/maddie/keymap.c | 22 +- keyboards/ploopyco/trackball_nano/readme.md | 8 +- .../ploopyco/trackball_nano/rev1_001/config.h | 2 +- keyboards/ploopyco/trackball_nano/rules.mk | 13 +- .../ploopyco/trackball_nano/trackball_nano.c | 116 +- .../ploopyco/trackball_nano/trackball_nano.h | 13 - keyboards/pluckey/config.h | 90 + keyboards/pluckey/info.json | 160 + keyboards/pluckey/keymaps/default/keymap.c | 77 + keyboards/pluckey/keymaps/default/readme.md | 4 + .../pluckey/keymaps/default_ergo/keymap.c | 77 + keyboards/pluckey/pluckey.c | 38 + keyboards/pluckey/pluckey.h | 81 + keyboards/pluckey/readme.md | 19 + keyboards/pluckey/rules.mk | 21 + keyboards/plume/plume65/info.json | 2 - keyboards/plume/plume65/rules.mk | 5 +- keyboards/plut0nium/0x3e/0x3e.c | 18 + keyboards/plut0nium/0x3e/0x3e.h | 36 + keyboards/plut0nium/0x3e/config.h | 114 + keyboards/plut0nium/0x3e/info.json | 73 + .../plut0nium/0x3e/keymaps/default/keymap.c | 158 + .../plut0nium/0x3e/keymaps/default/readme.md | 1 + keyboards/plut0nium/0x3e/readme.md | 18 + keyboards/plut0nium/0x3e/rules.mk | 17 + keyboards/plut0nium/readme.md | 4 + keyboards/plx/info.json | 223 +- keyboards/plx/keymaps/default/keymap.c | 47 +- keyboards/plx/keymaps/default_all/keymap.c | 50 + keyboards/plx/keymaps/via/config.h | 19 + keyboards/plx/keymaps/via/keymap.c | 50 + keyboards/plx/keymaps/via/rules.mk | 1 + keyboards/plx/plx.h | 48 +- keyboards/plx/rules.mk | 5 +- keyboards/pohjolaworks/louhi/info.json | 2 - keyboards/pohjolaworks/louhi/rules.mk | 5 +- keyboards/poker87c/config.h | 75 + keyboards/poker87c/info.json | 205 + keyboards/poker87c/keymaps/default/keymap.c | 37 + keyboards/poker87c/keymaps/via/keymap.c | 52 + keyboards/poker87c/keymaps/via/rules.mk | 1 + keyboards/poker87c/poker87c.c | 19 + keyboards/poker87c/poker87c.h | 53 + keyboards/poker87c/readme.md | 13 + keyboards/poker87c/rules.mk | 21 + keyboards/poker87d/config.h | 75 + keyboards/poker87d/info.json | 206 + keyboards/poker87d/keymaps/default/keymap.c | 40 + keyboards/poker87d/keymaps/via/keymap.c | 58 + keyboards/poker87d/keymaps/via/rules.mk | 1 + keyboards/poker87d/poker87d.c | 19 + keyboards/poker87d/poker87d.h | 53 + keyboards/poker87d/readme.md | 13 + keyboards/poker87d/rules.mk | 21 + keyboards/polilla/info.json | 4 +- keyboards/polilla/rev1/rules.mk | 5 +- keyboards/polycarbdiet/s20/info.json | 2 - keyboards/polycarbdiet/s20/rules.mk | 5 +- keyboards/pom_keyboards/tnln95/info.json | 2 - keyboards/pom_keyboards/tnln95/rules.mk | 5 +- keyboards/portal_66/hotswap/config.h | 109 + keyboards/portal_66/hotswap/hotswap.c | 17 + keyboards/portal_66/hotswap/hotswap.h | 49 + keyboards/portal_66/hotswap/info.json | 84 + .../hotswap/keymaps/default/keymap.c | 38 + .../hotswap/keymaps/default/readme.md | 1 + .../portal_66/hotswap/keymaps/via/keymap.c | 54 + .../portal_66/hotswap/keymaps/via/rules.mk | 1 + keyboards/portal_66/hotswap/readme.md | 18 + keyboards/portal_66/hotswap/rules.mk | 21 + keyboards/portal_66/soldered/config.h | 109 + keyboards/portal_66/soldered/info.json | 467 +++ .../soldered/keymaps/default/keymap.c | 38 + .../soldered/keymaps/default/readme.md | 1 + .../portal_66/soldered/keymaps/via/keymap.c | 54 + .../portal_66/soldered/keymaps/via/rules.mk | 1 + keyboards/portal_66/soldered/readme.md | 18 + keyboards/portal_66/soldered/rules.mk | 21 + keyboards/portal_66/soldered/soldered.c | 17 + keyboards/portal_66/soldered/soldered.h | 122 + keyboards/pos78/info.json | 2 - keyboards/pos78/rules.mk | 5 +- keyboards/preonic/config.h | 5 +- keyboards/preonic/info.json | 2 - keyboards/preonic/keymaps/0xdec/rules.mk | 2 +- keyboards/preonic/keymaps/AlexDaigre/keymap.c | 3 +- keyboards/preonic/keymaps/arkag/keymap.c | 4 +- keyboards/preonic/keymaps/arkag/rules.mk | 2 +- keyboards/preonic/keymaps/badger/keymap.c | 2 +- keyboards/preonic/keymaps/bucktooth/rules.mk | 2 +- keyboards/preonic/keymaps/cranium/keymap.c | 3 +- keyboards/preonic/keymaps/davidrambo/config.h | 20 + keyboards/preonic/keymaps/davidrambo/keymap.c | 179 + keyboards/preonic/keymaps/davidrambo/rules.mk | 3 + keyboards/preonic/keymaps/default/config.h | 26 +- keyboards/preonic/keymaps/default/keymap.c | 5 +- keyboards/preonic/keymaps/dlaroe/rules.mk | 2 +- keyboards/preonic/keymaps/drasbeck/keymap.c | 3 +- .../preonic/keymaps/dudeofawesome/rules.mk | 2 +- keyboards/preonic/keymaps/egstad/keymap.c | 16 +- keyboards/preonic/keymaps/elisiano/keymap.c | 3 +- keyboards/preonic/keymaps/fsck/keymap.c | 3 +- keyboards/preonic/keymaps/jacwib/rules.mk | 2 +- keyboards/preonic/keymaps/keelhauler/keymap.c | 3 +- keyboards/preonic/keymaps/kinesis/rules.mk | 2 +- keyboards/preonic/keymaps/kjwon15/keymap.c | 3 +- keyboards/preonic/keymaps/kuatsure/keymap.c | 2 + .../preonic/keymaps/laurentlaurent/keymap.c | 3 +- .../preonic/keymaps/mechmaster48/config.h | 46 + .../preonic/keymaps/mechmaster48/keymap.c | 256 ++ .../preonic/keymaps/mechmaster48/readme.md | 14 + .../preonic/keymaps/mechmaster48/rules.mk | 1 + keyboards/preonic/keymaps/mguterl/keymap.c | 3 +- .../preonic/keymaps/mikethetiger/keymap.c | 3 +- keyboards/preonic/keymaps/muzfuz/keymap.c | 5 +- keyboards/preonic/keymaps/mverteuil/keymap.c | 3 +- .../preonic/keymaps/mverteuil_2x2u/keymap.c | 3 +- keyboards/preonic/keymaps/pezhore/keymap.c | 3 +- keyboards/preonic/keymaps/pitty/keymap.c | 12 +- keyboards/preonic/keymaps/senseored/keymap.c | 5 +- keyboards/preonic/keymaps/seph/rules.mk | 2 +- .../preonic/keymaps/that_canadian/Makefile | 22 - .../preonic/keymaps/that_canadian/rules.mk | 22 + keyboards/preonic/keymaps/via/keymap.c | 3 +- keyboards/preonic/keymaps/xulkal/keymap.c | 3 +- keyboards/preonic/keymaps/zach/rules.mk | 8 +- keyboards/preonic/preonic.h | 35 +- keyboards/preonic/rev1/config.h | 5 +- keyboards/preonic/rev1/rules.mk | 16 +- keyboards/preonic/rev2/config.h | 5 +- keyboards/preonic/rev2/rules.mk | 16 +- keyboards/preonic/rev3/config.h | 25 +- keyboards/preonic/rev3/info.json | 2 - keyboards/preonic/rev3/rev3.c | 17 - keyboards/preonic/rev3/rules.mk | 10 +- keyboards/preonic/rev3_drop/chconf.h | 29 + keyboards/preonic/rev3_drop/config.h | 110 + keyboards/preonic/rev3_drop/halconf.h | 23 + keyboards/preonic/rev3_drop/info.json | 342 ++ keyboards/preonic/rev3_drop/matrix.c | 170 + keyboards/preonic/rev3_drop/mcuconf.h | 43 + keyboards/preonic/rev3_drop/rev3_drop.c | 61 + keyboards/preonic/rev3_drop/rev3_drop.h | 115 + keyboards/preonic/rev3_drop/rules.mk | 31 + keyboards/primekb/meridian/info.json | 2 - keyboards/primekb/meridian/ktr1010/config.h | 51 + keyboards/primekb/meridian/ktr1010/rules.mk | 1 + keyboards/primekb/meridian/readme.md | 24 +- keyboards/primekb/meridian/rules.mk | 6 +- keyboards/primekb/meridian/ws2812/config.h | 48 + keyboards/primekb/meridian/ws2812/rules.mk | 1 + keyboards/primekb/prime_e/info.json | 2 - .../primekb/prime_e/keymaps/default/keymap.c | 5 - .../primekb/prime_e/keymaps/peott-fr/keymap.c | 97 + .../primekb/prime_e/keymaps/via/keymap.c | 7 +- keyboards/primekb/prime_e/prime_e.c | 6 - keyboards/primekb/prime_e/rules.mk | 12 +- keyboards/primekb/prime_l/info.json | 2 - keyboards/primekb/prime_l/rules.mk | 16 +- keyboards/primekb/prime_l/v1/info.json | 2 - keyboards/primekb/prime_l/v2/info.json | 2 - keyboards/primekb/prime_m/info.json | 2 - keyboards/primekb/prime_m/rules.mk | 18 +- keyboards/primekb/prime_o/info.json | 2 - .../primekb/prime_o/keymaps/default/keymap.c | 12 - .../keymaps/reasonsandreasons/rules.mk | 2 +- .../prime_o/keymaps/spacebarracecar/keymap.c | 2 +- .../prime_o/keymaps/spacebarracecar/rules.mk | 2 +- keyboards/primekb/prime_o/prime_o.c | 27 - keyboards/primekb/prime_o/prime_o.h | 36 +- keyboards/primekb/prime_o/rules.mk | 18 +- keyboards/primekb/prime_r/config.h | 5 +- keyboards/primekb/prime_r/info.json | 3 - .../primekb/prime_r/keymaps/default/keymap.c | 10 - keyboards/primekb/prime_r/prime_r.c | 27 - keyboards/primekb/prime_r/prime_r.h | 28 +- keyboards/primekb/prime_r/rules.mk | 10 +- keyboards/program_yoink/ortho/info.json | 2 - keyboards/program_yoink/rules.mk | 5 +- keyboards/program_yoink/staggered/info.json | 2 - keyboards/projectcain/vault35/config.h | 149 + keyboards/projectcain/vault35/info.json | 22 + .../vault35/keymaps/default/config.h | 24 + .../vault35/keymaps/default/keymap.c | 66 + .../vault35/keymaps/default/readme.md | 1 + .../vault35/keymaps/default/rules.mk | 2 + keyboards/projectcain/vault35/readme.md | 21 + keyboards/projectcain/vault35/rules.mk | 19 + keyboards/projectcain/vault35/vault35.c | 29 + keyboards/projectcain/vault35/vault35.h | 80 + keyboards/projectcain/vault45/config.h | 152 + keyboards/projectcain/vault45/info.json | 29 + .../vault45/keymaps/default/config.h | 24 + .../vault45/keymaps/default/keymap.c | 59 + .../vault45/keymaps/default/readme.md | 1 + .../vault45/keymaps/default/rules.mk | 2 + keyboards/projectcain/vault45/readme.md | 21 + keyboards/projectcain/vault45/rules.mk | 19 + keyboards/projectcain/vault45/vault45.c | 35 + keyboards/projectcain/vault45/vault45.h | 90 + keyboards/projectkb/alice/info.json | 2 - keyboards/projectkb/alice/rev1/rules.mk | 8 +- keyboards/projectkb/alice/rev2/rules.mk | 8 +- keyboards/projectkb/signature87/info.json | 4 +- keyboards/projectkb/signature87/rules.mk | 3 +- keyboards/prototypist/j01/info.json | 2 - keyboards/prototypist/j01/rules.mk | 5 +- keyboards/pteron36/config.h | 167 + keyboards/pteron36/info.json | 95 + keyboards/pteron36/keymaps/default/keymap.c | 36 + keyboards/pteron36/keymaps/via/keymap.c | 143 + keyboards/pteron36/keymaps/via/readme.md | 1 + keyboards/pteron36/keymaps/via/rules.mk | 2 + keyboards/pteron36/pteron36.c | 70 + keyboards/pteron36/pteron36.h | 59 + keyboards/pteron36/readme.md | 35 + keyboards/pteron36/rules.mk | 24 + keyboards/puck/info.json | 2 - keyboards/puck/puck.h | 21 +- keyboards/puck/rules.mk | 17 +- keyboards/punk75/info.json | 2 - keyboards/punk75/rules.mk | 7 +- keyboards/pursuit40/info.json | 2 - keyboards/pursuit40/rules.mk | 5 +- keyboards/q4z/config.h | 54 + keyboards/q4z/info.json | 53 + keyboards/q4z/keymaps/default/config.h | 23 + keyboards/q4z/keymaps/default/keymap.c | 101 + keyboards/q4z/keymaps/default/readme.md | 1 + .../skype => q4z/keymaps/default}/rules.mk | 0 keyboards/q4z/keymaps/rjboone/config.h | 25 + keyboards/q4z/keymaps/rjboone/keymap.c | 107 + keyboards/q4z/keymaps/rjboone/readme.md | 1 + .../zoom => q4z/keymaps/rjboone}/rules.mk | 0 keyboards/q4z/q4z.c | 16 + keyboards/q4z/q4z.h | 34 + keyboards/q4z/readme.md | 20 + keyboards/q4z/rules.mk | 19 + keyboards/qaz/info.json | 2 - keyboards/qaz/rules.mk | 5 +- keyboards/quad_h/lb75/config.h | 53 - keyboards/quad_h/lb75/info.json | 2 - keyboards/quad_h/lb75/rules.mk | 15 +- keyboards/quantrik/kyuu/config.h | 73 - keyboards/quantrik/kyuu/info.json | 4 - .../quantrik/kyuu/keymaps/default/keymap.c | 12 - keyboards/quantrik/kyuu/kyuu.c | 27 - keyboards/quantrik/kyuu/rules.mk | 18 +- keyboards/quark/info.json | 2 - keyboards/quark/keymaps/ajp10304/keymap.c | 201 + keyboards/quark/keymaps/ajp10304/readme.md | 117 + keyboards/quark/keymaps/ajp10304/rules.mk | 1 + keyboards/quark/rules.mk | 5 +- keyboards/qvex/lynepad/info.json | 4 +- keyboards/qvex/lynepad/rules.mk | 4 +- keyboards/qwertyydox/config.h | 73 - keyboards/qwertyydox/info.json | 3 - keyboards/qwertyydox/rev1/rev1.c | 21 - keyboards/qwertyydox/rules.mk | 9 +- keyboards/rabbit/rabbit68/config.h | 73 - keyboards/rabbit/rabbit68/info.json | 2 - keyboards/rabbit/rabbit68/rabbit68.c | 35 - keyboards/rabbit/rabbit68/rules.mk | 16 +- keyboards/rabbit_capture_plan/info.json | 4 +- keyboards/rabbit_capture_plan/rules.mk | 7 +- keyboards/rainkeeb/info.json | 2 - keyboards/rainkeeb/keymaps/default/keymap.c | 3 +- keyboards/rainkeeb/keymaps/via/keymap.c | 3 +- keyboards/rainkeeb/rules.mk | 6 +- keyboards/ramonimbao/aelith/info.json | 2 - keyboards/ramonimbao/aelith/rules.mk | 7 +- keyboards/ramonimbao/chevron/info.json | 4 +- keyboards/ramonimbao/chevron/rules.mk | 7 +- keyboards/ramonimbao/herringbone/pro/config.h | 6 +- .../ramonimbao/herringbone/pro/info.json | 2 - .../herringbone/pro/keymaps/default/keymap.c | 5 +- .../herringbone/pro/keymaps/iso/keymap.c | 5 +- .../herringbone/pro/keymaps/via/keymap.c | 5 +- keyboards/ramonimbao/herringbone/pro/rules.mk | 10 +- keyboards/ramonimbao/herringbone/v1/config.h | 73 - keyboards/ramonimbao/herringbone/v1/info.json | 2 - keyboards/ramonimbao/herringbone/v1/rules.mk | 7 +- keyboards/ramonimbao/mona/info.json | 431 -- keyboards/ramonimbao/mona/mona.c | 17 - keyboards/ramonimbao/mona/readme.md | 19 - keyboards/ramonimbao/mona/rules.mk | 23 +- keyboards/ramonimbao/mona/{ => v1}/config.h | 0 keyboards/ramonimbao/mona/v1/info.json | 429 ++ .../mona/{ => v1}/keymaps/default/keymap.c | 0 .../mona/{ => v1}/keymaps/iso/keymap.c | 0 .../mona/{ => v1}/keymaps/via/keymap.c | 0 .../ramonimbao/mona/v1/keymaps/via/rules.mk | 1 + keyboards/ramonimbao/mona/v1/readme.md | 19 + keyboards/ramonimbao/mona/v1/rules.mk | 19 + keyboards/ramonimbao/mona/v1/v1.c | 17 + keyboards/ramonimbao/mona/{mona.h => v1/v1.h} | 0 keyboards/ramonimbao/mona/v1_1/config.h | 62 + keyboards/ramonimbao/mona/v1_1/info.json | 503 +++ .../mona/v1_1/keymaps/default/keymap.c | 34 + .../ramonimbao/mona/v1_1/keymaps/iso/keymap.c | 34 + .../ramonimbao/mona/v1_1/keymaps/via/keymap.c | 48 + .../ramonimbao/mona/v1_1/keymaps/via/rules.mk | 1 + keyboards/ramonimbao/mona/v1_1/readme.md | 20 + keyboards/ramonimbao/mona/v1_1/rules.mk | 19 + keyboards/ramonimbao/mona/v1_1/v1_1.c | 17 + keyboards/ramonimbao/mona/v1_1/v1_1.h | 113 + keyboards/ramonimbao/squishy65/info.json | 2 - keyboards/ramonimbao/squishy65/rules.mk | 5 +- keyboards/ramonimbao/squishyfrl/info.json | 2 - keyboards/ramonimbao/squishyfrl/rules.mk | 5 +- keyboards/ramonimbao/squishytkl/info.json | 804 ++-- .../squishytkl/keymaps/default/keymap.c | 3 +- .../squishytkl/keymaps/iso/keymap.c | 3 +- .../squishytkl/keymaps/jis/keymap.c | 3 +- .../squishytkl/keymaps/via/keymap.c | 3 +- keyboards/ramonimbao/squishytkl/rules.mk | 5 +- keyboards/ramonimbao/squishytkl/squishytkl.h | 170 +- keyboards/ramonimbao/tkl_ff/config.h | 152 + keyboards/ramonimbao/tkl_ff/info.json | 302 ++ .../tkl_ff/keymaps/default/keymap.c | 66 + .../ramonimbao/tkl_ff/keymaps/iso/keymap.c | 66 + .../ramonimbao/tkl_ff/keymaps/via/keymap.c | 90 + .../ramonimbao/tkl_ff/keymaps/via/rules.mk | 1 + keyboards/ramonimbao/tkl_ff/readme.md | 20 + keyboards/ramonimbao/tkl_ff/rules.mk | 19 + keyboards/ramonimbao/tkl_ff/tkl_ff.c | 17 + keyboards/ramonimbao/tkl_ff/tkl_ff.h | 93 + keyboards/ramonimbao/tkl_ff/v2/config.h | 52 + keyboards/ramonimbao/tkl_ff/v2/rules.mk | 1 + keyboards/ramonimbao/tkl_ff/v2/v2.c | 17 + keyboards/ramonimbao/tkl_ff/v2/v2.h | 18 + keyboards/ramonimbao/wete/info.json | 39 - .../ramonimbao/wete/keymaps/jis/keymap.c | 39 - .../ramonimbao/wete/keymaps/via/rules.mk | 2 - keyboards/ramonimbao/wete/readme.md | 14 +- keyboards/ramonimbao/wete/rules.mk | 24 +- keyboards/ramonimbao/wete/{ => v1}/chconf.h | 0 keyboards/ramonimbao/wete/{ => v1}/config.h | 0 keyboards/ramonimbao/wete/{ => v1}/halconf.h | 0 keyboards/ramonimbao/wete/v1/info.json | 37 + .../wete/{ => v1}/keymaps/default/keymap.c | 0 .../wete/{ => v1}/keymaps/iso/keymap.c | 0 .../ramonimbao/wete/v1/keymaps/jis/keymap.c | 39 + .../wete/{ => v1}/keymaps/via/config.h | 0 .../wete/{ => v1}/keymaps/via/keymap.c | 0 .../ramonimbao/wete/v1/keymaps/via/rules.mk | 2 + keyboards/ramonimbao/wete/{ => v1}/mcuconf.h | 0 keyboards/ramonimbao/wete/v1/readme.md | 14 + keyboards/ramonimbao/wete/v1/rules.mk | 23 + keyboards/ramonimbao/wete/v1/v1.c | 19 + keyboards/ramonimbao/wete/{wete.h => v1/v1.h} | 0 keyboards/ramonimbao/wete/v2/config.h | 163 + keyboards/ramonimbao/wete/v2/info.json | 350 ++ .../wete/v2/keymaps/default/keymap.c | 97 + .../ramonimbao/wete/v2/keymaps/iso/keymap.c | 97 + .../ramonimbao/wete/v2/keymaps/via/config.h | 20 + .../ramonimbao/wete/v2/keymaps/via/keymap.c | 135 + .../ramonimbao/wete/v2/keymaps/via/rules.mk | 1 + keyboards/ramonimbao/wete/v2/readme.md | 26 + keyboards/ramonimbao/wete/v2/rules.mk | 20 + keyboards/ramonimbao/wete/v2/v2.c | 17 + keyboards/ramonimbao/wete/v2/v2.h | 110 + keyboards/ramonimbao/wete/wete.c | 19 - keyboards/rart/rart45/info.json | 2 - keyboards/rart/rart45/rules.mk | 7 +- keyboards/rart/rart4x4/info.json | 2 - keyboards/rart/rart4x4/rules.mk | 5 +- keyboards/rart/rart67/info.json | 2 - keyboards/rart/rart67/rules.mk | 14 +- keyboards/rart/rart67m/config.h | 57 + keyboards/rart/rart67m/info.json | 79 + .../rart/rart67m/keymaps/default/keymap.c | 49 + .../rart/rart67m/keymaps/default/rules.mk | 2 + keyboards/rart/rart67m/keymaps/via/keymap.c | 49 + keyboards/rart/rart67m/keymaps/via/rules.mk | 3 + keyboards/rart/rart67m/rart67m.c | 137 + keyboards/rart/rart67m/rart67m.h | 37 + keyboards/rart/rart67m/readme.md | 24 + keyboards/rart/rart67m/rules.mk | 22 + keyboards/rart/rart75/info.json | 2 - keyboards/rart/rart75/rules.mk | 14 +- keyboards/rart/rart75m/config.h | 61 + keyboards/rart/rart75m/info.json | 99 + .../rart/rart75m/keymaps/default/keymap.c | 53 + keyboards/rart/rart75m/keymaps/via/keymap.c | 54 + keyboards/rart/rart75m/keymaps/via/rules.mk | 1 + keyboards/rart/rart75m/rart75m.c | 62 + keyboards/rart/rart75m/rart75m.h | 36 + keyboards/rart/rart75m/readme.md | 24 + keyboards/rart/rart75m/rules.mk | 23 + keyboards/rart/rartand/info.json | 2 - .../rart/rartand/keymaps/default/keymap.c | 9 +- keyboards/rart/rartand/keymaps/via/keymap.c | 9 +- keyboards/rart/rartand/rules.mk | 10 +- keyboards/rart/rartland/config.h | 76 + keyboards/rart/rartland/info.json | 237 ++ .../rart/rartland/keymaps/default/keymap.c | 49 + keyboards/rart/rartland/keymaps/via/keymap.c | 49 + keyboards/rart/rartland/keymaps/via/rules.mk | 2 + keyboards/rart/rartland/rartland.c | 61 + keyboards/rart/rartland/rartland.h | 88 + keyboards/rart/rartland/readme.md | 19 + keyboards/rart/rartland/rules.mk | 28 + keyboards/rart/rartlice/info.json | 2 - .../rart/rartlice/keymaps/default/keymap.c | 7 +- keyboards/rart/rartlice/keymaps/via/keymap.c | 7 +- keyboards/rart/rartlice/rules.mk | 9 +- keyboards/rart/rartlite/info.json | 2 - keyboards/rart/rartlite/rules.mk | 5 +- keyboards/rart/rartpad/info.json | 2 - keyboards/rart/rartpad/rules.mk | 10 +- keyboards/rect44/info.json | 2 - keyboards/rect44/rules.mk | 5 +- keyboards/redox/info.json | 3 - keyboards/redox/keymaps/german/keymap.c | 4 +- keyboards/redox/keymaps/italian/keymap.c | 14 +- keyboards/redox/keymaps/tw1t611/keymap.c | 12 +- keyboards/redox/redox.h | 6 +- keyboards/redox/rev1/rev1.c | 21 - keyboards/redox/rules.mk | 18 +- keyboards/redox_media/config.h | 60 + keyboards/redox_media/info.json | 89 + .../redox_media/keymaps/default/config.h | 26 + .../redox_media/keymaps/default/keymap.c | 69 + .../redox_media/keymaps/default/readme.md | 6 + keyboards/redox_media/readme.md | 57 + keyboards/redox_media/redox_media.c | 38 + keyboards/redox_media/redox_media.h | 69 + keyboards/redox_media/rules.mk | 26 + keyboards/redox_w/info.json | 2 - keyboards/redox_w/keymaps/italian/keymap.c | 14 +- .../keymaps/manna-harbour_miryoku/config.h | 23 + .../keymaps/manna-harbour_miryoku/keymap.c | 5 + keyboards/redox_w/redox_w.c | 2 +- keyboards/redox_w/rules.mk | 14 +- keyboards/redscarf_i/info.json | 5 - keyboards/redscarf_i/rules.mk | 16 +- keyboards/redscarf_iiplus/verb/config.h | 73 - keyboards/redscarf_iiplus/verb/info.json | 4 +- keyboards/redscarf_iiplus/verb/rules.mk | 18 +- keyboards/redscarf_iiplus/verc/config.h | 73 - keyboards/redscarf_iiplus/verc/info.json | 4 +- keyboards/redscarf_iiplus/verc/rules.mk | 18 +- keyboards/redscarf_iiplus/verd/config.h | 73 - keyboards/redscarf_iiplus/verd/info.json | 4 - keyboards/redscarf_iiplus/verd/rules.mk | 18 +- keyboards/retro_75/config.h | 73 - keyboards/retro_75/info.json | 4 +- keyboards/retro_75/rules.mk | 8 +- keyboards/reversestudio/decadepad/info.json | 5 +- keyboards/reversestudio/decadepad/rules.mk | 18 +- keyboards/reviung33/info.json | 2 - keyboards/reviung33/rules.mk | 5 +- keyboards/reviung34/config.h | 73 - keyboards/reviung34/info.json | 2 - keyboards/reviung34/reviung34.c | 35 - keyboards/reviung34/rules.mk | 18 +- keyboards/reviung39/config.h | 73 - keyboards/reviung39/info.json | 2 - .../reviung39/keymaps/default_s/keymap.c | 8 +- keyboards/reviung39/keymaps/via/keymap.c | 54 + keyboards/reviung39/keymaps/via/rules.mk | 3 + keyboards/reviung39/reviung39.c | 35 - keyboards/reviung39/rules.mk | 18 +- keyboards/reviung41/config.h | 73 - keyboards/reviung41/info.json | 3 - keyboards/reviung41/rules.mk | 16 +- keyboards/reviung5/config.h | 145 + keyboards/reviung5/info.json | 16 + keyboards/reviung5/keymaps/default/keymap.c | 34 + keyboards/reviung5/keymaps/default/readme.md | 1 + .../reviung5/keymaps/default_lre/keymap.c | 55 + .../reviung5/keymaps/default_lre/readme.md | 3 + .../reviung5/keymaps/default_rre/keymap.c | 55 + .../reviung5/keymaps/default_rre/readme.md | 4 + keyboards/reviung5/readme.md | 19 + keyboards/reviung5/reviung5.c | 17 + keyboards/reviung5/reviung5.h | 33 + keyboards/reviung5/rules.mk | 20 + keyboards/reviung61/info.json | 2 - keyboards/reviung61/rules.mk | 5 +- keyboards/rgbkb/common/common_oled.c | 101 + keyboards/rgbkb/common/common_oled.h | 21 + keyboards/rgbkb/common/glcdfont.c | 240 ++ keyboards/rgbkb/common/touch_encoder.c | 310 ++ keyboards/rgbkb/common/touch_encoder.h | 54 + keyboards/rgbkb/mun/.noci | 0 keyboards/rgbkb/mun/config.h | 154 + keyboards/rgbkb/mun/halconf.h | 18 + keyboards/rgbkb/mun/keymaps/default/config.h | 23 + keyboards/rgbkb/mun/keymaps/default/keymap.c | 253 ++ keyboards/rgbkb/mun/keymaps/peott-fr/config.h | 23 + keyboards/rgbkb/mun/keymaps/peott-fr/keymap.c | 81 + keyboards/rgbkb/mun/keymaps/via/config.h | 30 + keyboards/rgbkb/mun/keymaps/via/keymap.c | 253 ++ keyboards/rgbkb/mun/keymaps/via/rules.mk | 1 + keyboards/rgbkb/mun/keymaps/xulkal2/config.h | 42 + keyboards/rgbkb/mun/keymaps/xulkal2/keymap.c | 249 ++ keyboards/rgbkb/mun/keymaps/xulkal2/rules.mk | 3 + keyboards/rgbkb/mun/matrix.c | 76 + keyboards/rgbkb/mun/mcuconf.h | 21 + keyboards/rgbkb/mun/mun.c | 25 + keyboards/rgbkb/mun/mun.h | 16 + keyboards/rgbkb/mun/readme.md | 15 + keyboards/rgbkb/mun/rev1/config.h | 12 + keyboards/rgbkb/mun/rev1/info.json | 99 + keyboards/rgbkb/mun/rev1/readme.md | 15 + keyboards/rgbkb/mun/rev1/rev1.c | 122 + keyboards/rgbkb/mun/rev1/rev1.h | 43 + keyboards/rgbkb/mun/rev1/rules.mk | 0 keyboards/rgbkb/mun/rules.mk | 43 + keyboards/rgbkb/pan/config.h | 49 + keyboards/rgbkb/pan/info.json | 2 - keyboards/rgbkb/pan/keymaps/default/keymap.c | 6 +- keyboards/rgbkb/pan/pan.c | 99 +- keyboards/rgbkb/pan/rev1/32a/rules.mk | 2 +- keyboards/rgbkb/pan/rev1/rules.mk | 3 + keyboards/rgbkb/pan/rules.mk | 8 +- keyboards/rgbkb/sol/config.h | 48 + .../rgbkb/sol/keymaps/brianweyer/keymap.c | 6 +- .../rgbkb/sol/keymaps/brianweyer/rules.mk | 2 +- .../rgbkb/sol/keymaps/danielhklein/keymap.c | 6 +- keyboards/rgbkb/sol/keymaps/default/keymap.c | 5 +- keyboards/rgbkb/sol/keymaps/default/readme.md | 5 +- keyboards/rgbkb/sol/keymaps/xulkal/rules.mk | 2 +- keyboards/rgbkb/sol/keymaps/xyverz/keymap.c | 5 +- keyboards/rgbkb/sol/keymaps/xyverz/readme.md | 2 +- keyboards/rgbkb/sol/keymaps/xyverz/rules.mk | 7 +- keyboards/rgbkb/sol/rev1/info.json | 2 - keyboards/rgbkb/sol/rev1/rules.mk | 5 +- keyboards/rgbkb/sol/rev2/config.h | 38 +- keyboards/rgbkb/sol/rev2/info.json | 2 - keyboards/rgbkb/sol/rev2/post_rules.mk | 2 +- keyboards/rgbkb/sol/rev2/rules.mk | 7 +- keyboards/rgbkb/sol/rules.mk | 7 - keyboards/rgbkb/zen/post_rules.mk | 14 + keyboards/rgbkb/zen/rev1/info.json | 2 - keyboards/rgbkb/zen/rev1/rev1.c | 21 - keyboards/rgbkb/zen/rev1/rules.mk | 1 - keyboards/rgbkb/zen/rev2/info.json | 2 - .../rgbkb/zen/rev2/keymaps/default/keymap.c | 2 +- keyboards/rgbkb/zen/rev2/post_rules.mk | 5 + keyboards/rgbkb/zen/rev2/rev2.c | 11 +- keyboards/rgbkb/zen/rev2/rules.mk | 8 +- keyboards/rgbkb/zen/rules.mk | 31 +- .../rgbkb/zygomorph/keymaps/5x6pad/rules.mk | 2 +- .../rgbkb/zygomorph/keymaps/default/readme.md | 6 +- .../rgbkb/zygomorph/keymaps/default/rules.mk | 3 +- .../zygomorph/keymaps/default_oled/keymap.c | 5 +- .../zygomorph/keymaps/default_oled/rules.mk | 4 +- .../zygomorph/keymaps/kageurufu/readme.md | 2 +- .../zygomorph/keymaps/kageurufu/rules.mk | 2 +- .../rgbkb/zygomorph/keymaps/xulkal/rules.mk | 2 +- keyboards/rgbkb/zygomorph/rev1/info.json | 2 - keyboards/rgbkb/zygomorph/rules.mk | 18 +- keyboards/ristretto/config.h | 50 + keyboards/ristretto/info.json | 63 + keyboards/ristretto/keymaps/default/keymap.c | 53 + keyboards/ristretto/readme.md | 18 + keyboards/ristretto/ristretto.c | 67 + keyboards/ristretto/ristretto.h | 31 + keyboards/ristretto/rules.mk | 23 + keyboards/rocketboard_16/config.h | 2 +- keyboards/rocketboard_16/custom_font.h | 244 ++ keyboards/rocketboard_16/info.json | 5 +- keyboards/rocketboard_16/keycode_lookup.c | 407 ++ keyboards/rocketboard_16/keycode_lookup.h | 29 + .../rocketboard_16/keymaps/default/keymap.c | 371 +- keyboards/rocketboard_16/keymaps/via/keymap.c | 371 +- keyboards/rocketboard_16/rocketboard_16.h | 2 +- keyboards/rocketboard_16/rules.mk | 25 +- keyboards/rominronin/katana60/rev1/info.json | 2 - .../katana60/rev1/keymaps/default/keymap.c | 16 - keyboards/rominronin/katana60/rev1/rules.mk | 5 +- keyboards/rominronin/katana60/rev2/info.json | 2 - keyboards/rominronin/katana60/rev2/rules.mk | 5 +- keyboards/roseslite/info.json | 2 - keyboards/roseslite/rules.mk | 5 +- keyboards/rotor/config.h | 39 + keyboards/rotor/info.json | 10 + keyboards/rotor/keymaps/default/keymap.c | 49 + keyboards/rotor/keymaps/default/rules.mk | 2 + keyboards/rotor/keymaps/default_all/keymap.c | 49 + keyboards/rotor/keymaps/default_all/rules.mk | 2 + keyboards/rotor/keymaps/via/config.h | 19 + keyboards/rotor/keymaps/via/keymap.c | 49 + keyboards/rotor/keymaps/via/rules.mk | 3 + keyboards/rotor/readme.md | 19 + keyboards/rotor/rotor.c | 17 + keyboards/rotor/rotor.h | 58 + keyboards/rotor/rules.mk | 19 + keyboards/rotr/info.json | 2 - keyboards/rotr/rules.mk | 13 +- keyboards/rpiguy9907/southpaw66/config.h | 4 +- keyboards/rpiguy9907/southpaw66/info.json | 2 - keyboards/rpiguy9907/southpaw66/rules.mk | 5 +- keyboards/rubi/info.json | 4 +- keyboards/rubi/lib/oled.c | 6 +- keyboards/rubi/rules.mk | 8 +- keyboards/runes/vaengr/config.h | 147 + keyboards/runes/vaengr/info.json | 70 + .../runes/vaengr/keymaps/default/keymap.c | 56 + .../runes/vaengr/keymaps/default/readme.md | 13 + keyboards/runes/vaengr/keymaps/via/keymap.c | 56 + keyboards/runes/vaengr/keymaps/via/rules.mk | 2 + keyboards/runes/vaengr/readme.md | 23 + keyboards/runes/vaengr/rules.mk | 19 + keyboards/runes/vaengr/vaengr.c | 17 + keyboards/runes/vaengr/vaengr.h | 41 + keyboards/runner3680/3x6/info.json | 2 - keyboards/runner3680/3x7/info.json | 2 - keyboards/runner3680/3x8/info.json | 2 - keyboards/runner3680/4x6/info.json | 2 - keyboards/runner3680/4x7/info.json | 2 - keyboards/runner3680/4x8/info.json | 2 - keyboards/runner3680/5x6/info.json | 2 - keyboards/runner3680/5x7/info.json | 2 - keyboards/runner3680/5x8/info.json | 2 - keyboards/runner3680/5x8/keymaps/JIS/keymap.c | 2 +- keyboards/runner3680/rules.mk | 18 +- keyboards/ryanbaekr/rb86/config.h | 96 + keyboards/ryanbaekr/rb86/info.json | 13 + .../ryanbaekr/rb86/keymaps/default/keymap.c | 36 + .../ryanbaekr/rb86/keymaps/default/readme.md | 1 + keyboards/ryanbaekr/rb86/keymaps/via/keymap.c | 54 + keyboards/ryanbaekr/rb86/keymaps/via/rules.mk | 2 + keyboards/ryanbaekr/rb86/rb86.c | 17 + keyboards/ryanbaekr/rb86/rb86.h | 37 + keyboards/ryanbaekr/rb86/readme.md | 15 + keyboards/ryanbaekr/rb86/rules.mk | 19 + keyboards/ryloo_studio/m0110/info.json | 2 - keyboards/ryloo_studio/m0110/rules.mk | 5 +- keyboards/sam/s80/info.json | 2 - keyboards/sam/s80/rules.mk | 5 +- keyboards/sam/sg81m/config.h | 5 +- keyboards/sam/sg81m/info.json | 92 +- keyboards/sam/sg81m/rules.mk | 5 +- keyboards/sam/sg81m/sg81m.h | 20 +- keyboards/sanctified/dystopia/dystopia.h | 10 +- keyboards/sanctified/dystopia/info.json | 2 - .../dystopia/keymaps/default/keymap.c | 24 +- .../sanctified/dystopia/keymaps/via/keymap.c | 50 +- keyboards/sanctified/dystopia/rules.mk | 5 +- keyboards/satt/vision/info.json | 2 - keyboards/satt/vision/keymaps/satt/keymap.c | 2 +- .../satt/vision/keymaps/satt/keymap_jis2us.h | 6 +- keyboards/satt/vision/rules.mk | 4 +- keyboards/sauce/mild/config.h | 58 + keyboards/sauce/mild/info.json | 17 + keyboards/sauce/mild/keymaps/default/keymap.c | 36 + keyboards/sauce/mild/keymaps/via/keymap.c | 52 + keyboards/sauce/mild/keymaps/via/rules.mk | 1 + keyboards/sauce/mild/mild.c | 17 + keyboards/sauce/mild/mild.h | 37 + keyboards/sauce/mild/readme.md | 17 + keyboards/sauce/mild/rules.mk | 22 + .../sawnsprojects/krush/krush60/readme.md | 25 + .../krush/krush60/solder/config.h | 61 + .../krush/krush60/solder/info.json | 1350 +++++++ .../krush60/solder/keymaps/60_all/keymap.c | 35 + .../krush60/solder/keymaps/60_all/readme.md | 1 + .../solder/keymaps/60_ansi_7u/keymap.c | 37 + .../solder/keymaps/60_ansi_7u/readme.md | 1 + .../solder/keymaps/60_ansi_arrow/keymap.c | 35 + .../solder/keymaps/60_ansi_arrow/readme.md | 1 + .../solder/keymaps/60_ansi_arrow_7u/keymap.c | 35 + .../solder/keymaps/60_ansi_arrow_7u/readme.md | 1 + .../keymaps/60_ansi_arrow_splt_bs/keymap.c | 35 + .../keymaps/60_ansi_arrow_splt_bs/readme.md | 1 + .../keymaps/60_ansi_arrow_splt_bs_7u/keymap.c | 35 + .../60_ansi_arrow_splt_bs_7u/readme.md | 1 + .../60_ansi_arrow_splt_bs_spc/keymap.c | 35 + .../60_ansi_arrow_splt_bs_spc/readme.md | 1 + .../keymaps/60_ansi_arrow_splt_spc/keymap.c | 37 + .../keymaps/60_ansi_arrow_splt_spc/readme.md | 1 + .../solder/keymaps/60_ansi_splt_bs/keymap.c | 35 + .../solder/keymaps/60_ansi_splt_bs/readme.md | 1 + .../keymaps/60_ansi_splt_bs_7u/keymap.c | 35 + .../keymaps/60_ansi_splt_bs_7u/readme.md | 1 + .../keymaps/60_ansi_splt_bs_spc/keymap.c | 35 + .../keymaps/60_ansi_splt_bs_spc/readme.md | 1 + .../solder/keymaps/60_ansi_splt_spc/keymap.c | 35 + .../solder/keymaps/60_ansi_splt_spc/readme.md | 1 + .../solder/keymaps/60_tsangan/keymap.c | 36 + .../solder/keymaps/60_tsangan/readme.md | 1 + .../keymaps/60_tsangan_splt_bs/keymap.c | 35 + .../keymaps/60_tsangan_splt_bs/readme.md | 1 + .../krush60/solder/keymaps/default/keymap.c | 40 + .../krush60/solder/keymaps/default/readme.md | 1 + .../krush/krush60/solder/keymaps/via/keymap.c | 49 + .../krush60/solder/keymaps/via/readme.md | 1 + .../krush/krush60/solder/keymaps/via/rules.mk | 1 + .../krush/krush60/solder/readme.md | 15 + .../krush/krush60/solder/rules.mk | 20 + .../krush/krush60/solder/solder.c | 17 + .../krush/krush60/solder/solder.h | 333 ++ .../sawnsprojects/krush/krush65/readme.md | 25 + .../krush/krush65/solder/config.h | 69 + .../krush/krush65/solder/encoder_actions.c | 58 + .../krush/krush65/solder/encoder_actions.h | 21 + .../krush/krush65/solder/info.json | 299 ++ .../solder/keymaps/ansi_blocker/keymap.c | 39 + .../solder/keymaps/ansi_blocker/readme.md | 1 + .../keymaps/ansi_blocker_split_all/keymap.c | 38 + .../keymaps/ansi_blocker_split_all/readme.md | 1 + .../keymaps/ansi_blocker_split_bs/keymap.c | 39 + .../keymaps/ansi_blocker_split_bs/readme.md | 1 + .../krush65/solder/keymaps/default/keymap.c | 39 + .../krush65/solder/keymaps/default/readme.md | 1 + .../krush65/solder/keymaps/sawns/keymap.c | 75 + .../krush65/solder/keymaps/sawns/readme.md | 1 + .../krush65/solder/keymaps/sawns/rules.mk | 1 + .../krush/krush65/solder/keymaps/via/keymap.c | 51 + .../krush65/solder/keymaps/via/readme.md | 1 + .../krush/krush65/solder/keymaps/via/rules.mk | 2 + .../krush/krush65/solder/readme.md | 15 + .../krush/krush65/solder/rules.mk | 21 + .../krush/krush65/solder/solder.c | 53 + .../krush/krush65/solder/solder.h | 93 + keyboards/sawnsprojects/satxri6key/config.h | 122 + keyboards/sawnsprojects/satxri6key/info.json | 17 + .../satxri6key/keymaps/default/keymap.c | 34 + .../satxri6key/keymaps/default/readme.md | 1 + .../satxri6key/keymaps/default/rules.mk | 4 + .../satxri6key/keymaps/via/keymap.c | 165 + .../satxri6key/keymaps/via/rules.mk | 5 + keyboards/sawnsprojects/satxri6key/readme.md | 15 + keyboards/sawnsprojects/satxri6key/rules.mk | 18 + .../sawnsprojects/satxri6key/satxri6key.c | 31 + .../sawnsprojects/satxri6key/satxri6key.h | 27 + keyboards/scarletbandana/info.json | 4 +- .../scarletbandana/keymaps/default/keymap.c | 12 - keyboards/scarletbandana/rules.mk | 16 +- keyboards/scatter42/info.json | 2 - keyboards/scatter42/rules.mk | 5 +- keyboards/sck/gtm/info.json | 2 - keyboards/sck/gtm/rules.mk | 10 +- keyboards/sck/m0116b/config.h | 73 - keyboards/sck/m0116b/info.json | 4 - keyboards/sck/m0116b/keymaps/default/keymap.c | 12 - keyboards/sck/m0116b/keymaps/m0116/keymap.c | 12 - keyboards/sck/m0116b/keymaps/m0118/keymap.c | 12 - keyboards/sck/m0116b/m0116b.c | 35 - keyboards/sck/m0116b/rules.mk | 16 +- keyboards/sck/neiso/config.h | 20 - keyboards/sck/neiso/info.json | 2 - keyboards/sck/neiso/neiso.c | 14 - keyboards/sck/neiso/rules.mk | 14 +- keyboards/sck/osa/config.h | 73 - keyboards/sck/osa/info.json | 6 - keyboards/sck/osa/keymaps/all/keymap.c | 44 - keyboards/sck/osa/keymaps/default/keymap.c | 44 - keyboards/sck/osa/rules.mk | 18 +- keyboards/scythe/config.h | 68 - keyboards/scythe/info.json | 3 - keyboards/scythe/rules.mk | 18 +- keyboards/scythe/scythe.c | 27 - keyboards/seigaiha/info.json | 2 - keyboards/seigaiha/rules.mk | 7 +- keyboards/sekigon/grs_70ec/config.h | 154 + keyboards/sekigon/grs_70ec/ec_switch_matrix.c | 151 + keyboards/sekigon/grs_70ec/ec_switch_matrix.h | 38 + keyboards/sekigon/grs_70ec/grs_70ec.c | 38 + keyboards/sekigon/grs_70ec/grs_70ec.h | 49 + keyboards/sekigon/grs_70ec/info.json | 81 + .../sekigon/grs_70ec/keymaps/default/keymap.c | 41 + keyboards/sekigon/grs_70ec/matrix.c | 119 + keyboards/sekigon/grs_70ec/readme.md | 19 + keyboards/sekigon/grs_70ec/rules.mk | 23 + keyboards/sendyyeah/75pixels/info.json | 64 +- keyboards/sendyyeah/75pixels/rules.mk | 5 +- keyboards/sendyyeah/bevi/info.json | 2 - keyboards/sendyyeah/bevi/rules.mk | 5 +- keyboards/sendyyeah/pix/info.json | 2 - .../sendyyeah/pix/keymaps/default/keymap.c | 5 +- keyboards/sendyyeah/pix/keymaps/via/keymap.c | 5 +- keyboards/sendyyeah/pix/rules.mk | 8 +- keyboards/senselessclay/ck60/ck60.c | 17 + keyboards/senselessclay/ck60/ck60.h | 35 + keyboards/senselessclay/ck60/config.h | 119 + keyboards/senselessclay/ck60/info.json | 10 + .../ck60/keymaps/default/keymap.c | 51 + .../senselessclay/ck60/keymaps/via/keymap.c | 51 + .../senselessclay/ck60/keymaps/via/rules.mk | 1 + keyboards/senselessclay/ck60/readme.md | 19 + keyboards/senselessclay/ck60/rules.mk | 19 + keyboards/senselessclay/ck65/ck65.c | 17 + keyboards/senselessclay/ck65/ck65.h | 35 + keyboards/senselessclay/ck65/config.h | 119 + keyboards/senselessclay/ck65/info.json | 10 + .../ck65/keymaps/default/keymap.c | 51 + .../senselessclay/ck65/keymaps/via/keymap.c | 51 + .../senselessclay/ck65/keymaps/via/rules.mk | 1 + keyboards/senselessclay/ck65/readme.md | 19 + keyboards/senselessclay/ck65/rules.mk | 19 + keyboards/senselessclay/had60/info.json | 4 +- keyboards/senselessclay/had60/rules.mk | 5 +- keyboards/sentraq/number_pad/info.json | 4 - .../number_pad/keymaps/default/keymap.c | 43 - keyboards/sentraq/number_pad/number_pad.c | 27 - keyboards/sentraq/number_pad/rules.mk | 18 +- keyboards/sentraq/s60_x/default/default.c | 27 - keyboards/sentraq/s60_x/default/rules.mk | 16 +- keyboards/sentraq/s60_x/info.json | 4 +- .../s60_x/keymaps/ansi_qwertz/rules.mk | 2 +- .../sentraq/s60_x/keymaps/bluebear/rules.mk | 2 +- .../sentraq/s60_x/keymaps/dbroqua/keymap.c | 131 +- keyboards/sentraq/s60_x/rgb/rules.mk | 16 +- keyboards/sentraq/s65_plus/config.h | 5 +- keyboards/sentraq/s65_plus/info.json | 4 - keyboards/sentraq/s65_plus/rules.mk | 16 +- keyboards/sentraq/s65_x/config.h | 5 +- keyboards/sentraq/s65_x/info.json | 4 - keyboards/sentraq/s65_x/rules.mk | 16 +- keyboards/sentraq/s65_x/s65_x.c | 17 - keyboards/sergiopoverony/creator_pro/config.h | 49 + .../sergiopoverony/creator_pro/creator_pro.c | 33 + .../sergiopoverony/creator_pro/creator_pro.h | 33 + .../sergiopoverony/creator_pro/info.json | 20 + .../creator_pro/keymaps/default/keymap.c | 123 + .../creator_pro/keymaps/default/readme.md | 5 + .../creator_pro/keymaps/via/keymap.c | 123 + .../creator_pro/keymaps/via/rules.mk | 1 + .../sergiopoverony/creator_pro/readme.md | 27 + keyboards/sergiopoverony/creator_pro/rules.mk | 20 + keyboards/sets3n/kk980/config.h | 103 + keyboards/sets3n/kk980/info.json | 115 + .../sets3n/kk980/keymaps/default/keymap.c | 92 + keyboards/sets3n/kk980/keymaps/via/keymap.c | 92 + keyboards/sets3n/kk980/keymaps/via/rules.mk | 1 + keyboards/sets3n/kk980/kk980.c | 17 + keyboards/sets3n/kk980/kk980.h | 54 + keyboards/sets3n/kk980/readme.md | 31 + keyboards/sets3n/kk980/rules.mk | 19 + keyboards/setta21/info.json | 19 +- keyboards/setta21/keymaps/salicylic/config.h | 3 +- keyboards/setta21/keymaps/salicylic/keymap.c | 31 +- keyboards/setta21/keymaps/salicylic/rules.mk | 3 +- keyboards/setta21/rev1/rev1.c | 4 - keyboards/setta21/rules.mk | 21 +- keyboards/shambles/info.json | 3 - keyboards/shambles/rules.mk | 15 +- keyboards/shiro/config.h | 73 - keyboards/shiro/info.json | 3 - keyboards/shiro/rules.mk | 18 +- keyboards/shiro/shiro.c | 35 - keyboards/shk9/info.json | 3 - keyboards/shk9/rules.mk | 7 +- keyboards/sidderskb/majbritt/rev1/info.json | 3 - keyboards/sidderskb/majbritt/rev1/rules.mk | 15 +- keyboards/sidderskb/majbritt/rev2/info.json | 77 +- keyboards/sidderskb/majbritt/rev2/rules.mk | 5 +- keyboards/signum/3_0/3_0.c | 16 + keyboards/signum/3_0/3_0.h | 33 + keyboards/signum/3_0/config.h | 32 + keyboards/signum/3_0/elitec/config.h | 22 - keyboards/signum/3_0/elitec/elitec.h | 14 +- keyboards/signum/3_0/elitec/info.json | 67 - keyboards/signum/3_0/elitec/readme.md | 14 - keyboards/signum/3_0/elitec/rules.mk | 35 - keyboards/signum/3_0/info.json | 64 + .../keymaps/default/generate_km.py | 0 .../3_0/{elitec => }/keymaps/default/keymap.c | 0 .../keymaps/default/km_template.txt | 0 .../{elitec => }/keymaps/default/layout.py | 0 .../{elitec => }/keymaps/default/readme.md | 0 .../3_0/{elitec => }/keymaps/default/rules.mk | 0 .../signum/3_0/keymaps/sgurenkov/config.h | 45 + .../signum/3_0/keymaps/sgurenkov/keymap.c | 128 + .../signum/3_0/keymaps/sgurenkov/rules.mk | 2 + keyboards/signum/3_0/readme.md | 15 + keyboards/signum/3_0/rules.mk | 26 + keyboards/signum/3_0/teensy/config.h | 23 + keyboards/signum/3_0/teensy/rules.mk | 1 + keyboards/signum/3_0/teensy/teensy.c | 16 + keyboards/signum/3_0/teensy/teensy.h | 18 + keyboards/silverbullet44/config.h | 73 - keyboards/silverbullet44/info.json | 4 +- keyboards/silverbullet44/rules.mk | 18 +- keyboards/singa/info.json | 2 - keyboards/singa/keymaps/test/config.h | 24 - keyboards/singa/rules.mk | 11 +- keyboards/sirius/uni660/rev1/info.json | 2 - keyboards/sirius/uni660/rev1/rules.mk | 5 +- keyboards/sirius/uni660/rev2/ansi/info.json | 2 - keyboards/sirius/uni660/rev2/iso/info.json | 2 - keyboards/sirius/uni660/rev2/rules.mk | 5 +- keyboards/sirius/unigo66/info.json | 2 - keyboards/sirius/unigo66/rules.mk | 5 +- keyboards/sixkeyboard/config.h | 44 +- keyboards/sixkeyboard/info.json | 4 +- .../sixkeyboard/keymaps/default/keymap.c | 2 +- keyboards/sixkeyboard/keymaps/via/keymap.c | 8 +- keyboards/sixkeyboard/rules.mk | 16 +- keyboards/sixkeyboard/sixkeyboard.h | 26 +- keyboards/skeletn87/hotswap/config.h | 1 + keyboards/skeletn87/hotswap/info.json | 4 +- keyboards/skeletn87/hotswap/rules.mk | 5 +- keyboards/skeletn87/soldered/config.h | 3 +- keyboards/skeletn87/soldered/info.json | 4 +- keyboards/skeletn87/soldered/rules.mk | 5 +- keyboards/skergo/info.json | 2 - keyboards/skergo/rules.mk | 7 +- keyboards/skippys_custom_pcs/roopad/config.h | 71 + keyboards/skippys_custom_pcs/roopad/info.json | 10 + .../roopad/keymaps/default/keymap.c | 67 + .../roopad/keymaps/via/keymap.c | 85 + .../roopad/keymaps/via/rules.mk | 1 + keyboards/skippys_custom_pcs/roopad/readme.md | 22 + keyboards/skippys_custom_pcs/roopad/roopad.c | 14 + keyboards/skippys_custom_pcs/roopad/roopad.h | 32 + keyboards/skippys_custom_pcs/roopad/rules.mk | 22 + keyboards/slz40/info.json | 2 - keyboards/slz40/rules.mk | 5 +- keyboards/smallice/info.json | 4 +- keyboards/smallice/rules.mk | 5 +- keyboards/smallkeyboard/config.h | 126 + keyboards/smallkeyboard/info.json | 17 + .../smallkeyboard/keymaps/default/keymap.c | 28 + keyboards/smallkeyboard/keymaps/via/keymap.c | 28 + keyboards/smallkeyboard/keymaps/via/rules.mk | 1 + keyboards/smallkeyboard/readme.md | 18 + keyboards/smallkeyboard/rules.mk | 24 + keyboards/smallkeyboard/smallkeyboard.c | 49 + keyboards/smallkeyboard/smallkeyboard.h | 26 + keyboards/smk60/info.json | 2 - keyboards/smk60/rules.mk | 18 +- keyboards/snampad/config.h | 73 - keyboards/snampad/info.json | 3 - keyboards/snampad/keymaps/default/keymap.c | 12 - keyboards/snampad/rules.mk | 18 +- keyboards/snampad/snampad.c | 27 - keyboards/sneakbox/aliceclone/info.json | 2 - keyboards/sneakbox/aliceclone/rules.mk | 5 +- keyboards/sneakbox/ava/ava.c | 36 + keyboards/sneakbox/ava/ava.h | 59 + keyboards/sneakbox/ava/config.h | 72 + keyboards/sneakbox/ava/info.json | 29 + .../sneakbox/ava/keymaps/default/keymap.c | 40 + keyboards/sneakbox/ava/keymaps/via/keymap.c | 55 + keyboards/sneakbox/ava/keymaps/via/rules.mk | 1 + keyboards/sneakbox/ava/readme.md | 15 + keyboards/sneakbox/ava/rules.mk | 20 + keyboards/sneakbox/disarray/ortho/info.json | 2 - keyboards/sneakbox/disarray/ortho/rules.mk | 5 +- .../sneakbox/disarray/staggered/info.json | 2 - .../sneakbox/disarray/staggered/rules.mk | 5 +- keyboards/sofle/keyhive/config.h | 105 + keyboards/sofle/keyhive/info.json | 14 + keyboards/sofle/keyhive/keyhive.c | 90 + keyboards/sofle/keyhive/keyhive.h | 47 + keyboards/sofle/keyhive/readme.md | 66 + keyboards/sofle/keyhive/rules.mk | 24 + keyboards/sofle/keymaps/default/keymap.c | 5 +- keyboards/sofle/keymaps/default/rules.mk | 5 +- keyboards/sofle/keymaps/devdev/config.h | 100 +- keyboards/sofle/keymaps/devdev/keymap.c | 5 +- keyboards/sofle/keymaps/devdev/rules.mk | 3 +- keyboards/sofle/keymaps/helltm/keymap.c | 334 +- keyboards/sofle/keymaps/helltm/rules.mk | 3 +- .../sofle/keymaps/j4ckofalltrades/encoder.c | 37 + .../sofle/keymaps/j4ckofalltrades/keymap.c | 85 + .../sofle/keymaps/j4ckofalltrades/oled.c | 77 + .../sofle/keymaps/j4ckofalltrades/readme.md | 19 + .../sofle/keymaps/j4ckofalltrades/rules.mk | 6 + keyboards/sofle/keymaps/killmaster/config.h | 64 + keyboards/sofle/keymaps/killmaster/keymap.c | 404 ++ keyboards/sofle/keymaps/killmaster/readme.md | 19 + keyboards/sofle/keymaps/killmaster/rules.mk | 4 + .../keymaps/manna-harbour_miryoku/config.h | 23 + .../keymaps/manna-harbour_miryoku/keymap.c | 5 + keyboards/sofle/keymaps/rgb_default/config.h | 100 +- keyboards/sofle/keymaps/rgb_default/keymap.c | 33 +- keyboards/sofle/keymaps/rgb_default/rules.mk | 5 +- keyboards/sofle/keymaps/via/config.h | 55 +- keyboards/sofle/keymaps/via/oled.c | 35 +- keyboards/sofle/keymaps/via/rules.mk | 5 +- keyboards/sofle/rev1/config.h | 1 - keyboards/sofle/rev1/info.json | 3 - keyboards/sofle/rev1/readme.md | 27 + keyboards/sofle/rev1/rev1.c | 86 + keyboards/sofle/rev1/rules.mk | 3 +- keyboards/sofle/rules.mk | 5 + keyboards/sofle/sofle.c | 41 + keyboards/sofle/sofle.h | 6 +- keyboards/soup10/info.json | 2 - keyboards/soup10/rules.mk | 5 +- keyboards/southpole/info.json | 3 - keyboards/southpole/keymaps/default/keymap.c | 6 - keyboards/southpole/rules.mk | 10 +- keyboards/sowbug/68keys/config.h | 52 +- keyboards/sowbug/68keys/info.json | 2 - keyboards/sowbug/68keys/rules.mk | 5 +- keyboards/sowbug/ansi_tkl/config.h | 53 +- keyboards/sowbug/ansi_tkl/info.json | 2 - keyboards/sowbug/ansi_tkl/rules.mk | 5 +- keyboards/soy20/info.json | 2 - keyboards/soy20/rules.mk | 5 +- keyboards/space_space/config.h | 50 - keyboards/space_space/info.json | 92 - .../space_space/keymaps/big_space/keymap.c | 132 - .../space_space/keymaps/default/keymap.c | 134 - keyboards/space_space/readme.md | 8 +- keyboards/space_space/rev1/config.h | 54 + keyboards/space_space/rev1/info.json | 90 + .../{ => rev1}/keymaps/big_space/config.h | 0 .../rev1/keymaps/big_space/keymap.c | 130 + .../{ => rev1}/keymaps/big_space/rules.mk | 0 .../{ => rev1}/keymaps/default/config.h | 0 .../space_space/rev1/keymaps/default/keymap.c | 132 + .../{ => rev1}/keymaps/default/rules.mk | 0 .../space_space/{ => rev1}/keymaps/readme.md | 0 keyboards/space_space/rev1/readme.md | 18 + keyboards/space_space/rev1/rev1.c | 17 + keyboards/space_space/rev1/rev1.h | 45 + keyboards/space_space/rev1/rules.mk | 20 + keyboards/space_space/rev2/config.h | 58 + keyboards/space_space/rev2/info.json | 90 + .../rev2/keymaps/big_space/config.h | 27 + .../rev2/keymaps/big_space/keymap.c | 81 + .../rev2/keymaps/big_space/rules.mk | 1 + .../space_space/rev2/keymaps/default/config.h | 27 + .../space_space/rev2/keymaps/default/keymap.c | 77 + .../space_space/rev2/keymaps/default/rules.mk | 1 + .../rev2/keymaps/qpockets/config.h | 27 + .../rev2/keymaps/qpockets/keymap.c | 75 + .../rev2/keymaps/qpockets/rules.mk | 1 + keyboards/space_space/rev2/readme.md | 18 + keyboards/space_space/rev2/rev2.c | 35 + keyboards/space_space/rev2/rev2.h | 49 + keyboards/space_space/rev2/rules.mk | 20 + keyboards/space_space/rules.mk | 24 +- keyboards/space_space/space_space.c | 17 - keyboards/space_space/space_space.h | 48 - keyboards/spaceman/2_milk/info.json | 3 - .../2_milk/keymaps/mikethetiger/rules.mk | 2 +- keyboards/spaceman/2_milk/rules.mk | 10 +- keyboards/spaceman/pancake/feather/config.h | 28 - keyboards/spaceman/pancake/feather/rules.mk | 37 - keyboards/spaceman/pancake/info.json | 112 - keyboards/spaceman/pancake/pancake.c | 16 - keyboards/spaceman/pancake/promicro/rules.mk | 33 - keyboards/spaceman/pancake/readme.md | 12 - .../spaceman/pancake/{ => rev1}/config.h | 0 .../spaceman/pancake/rev1/feather/config.h | 24 + .../spaceman/pancake/rev1/feather/rules.mk | 30 + keyboards/spaceman/pancake/rev1/info.json | 108 + .../{ => rev1}/keymaps/default/keymap.c | 0 .../{ => rev1}/keymaps/default/readme.md | 0 .../pancake/{ => rev1}/keymaps/via/keymap.c | 0 .../pancake/rev1/keymaps/via/rules.mk | 2 + .../pancake/{ => rev1}/promicro/config.h | 0 .../spaceman/pancake/rev1/promicro/rules.mk | 25 + keyboards/spaceman/pancake/rev1/readme.md | 13 + keyboards/spaceman/pancake/rev1/rev1.c | 16 + .../pancake/{pancake.h => rev1/rev1.h} | 0 keyboards/spaceman/pancake/rev2/config.h | 34 + keyboards/spaceman/pancake/rev2/info.json | 60 + .../pancake/rev2/keymaps/default/keymap.c | 84 + .../pancake/rev2/keymaps/default/readme.md | 3 + keyboards/spaceman/pancake/rev2/readme.md | 12 + keyboards/spaceman/pancake/rev2/rev2.c | 59 + keyboards/spaceman/pancake/rev2/rev2.h | 31 + keyboards/spaceman/pancake/rev2/rules.mk | 23 + keyboards/spaceman/yun65/info.json | 2 - keyboards/spaceman/yun65/rules.mk | 10 +- keyboards/spacetime/config.h | 72 - keyboards/spacetime/info.json | 4 - keyboards/spacetime/keymaps/default/keymap.c | 16 - .../spacetime/keymaps/kyleterry/keymap.c | 2 +- keyboards/spacetime/rev1/rev1.c | 24 - keyboards/spacetime/rev1/rules.mk | 2 +- keyboards/spacetime/rev2/rev2.c | 20 - keyboards/spacetime/rev2/rules.mk | 3 +- keyboards/spacetime/rules.mk | 20 +- keyboards/spacey/config.h | 110 + keyboards/spacey/info.json | 85 + keyboards/spacey/keymaps/default/keymap.c | 47 + keyboards/spacey/keymaps/default/readme.md | 1 + keyboards/spacey/readme.md | 19 + keyboards/spacey/rules.mk | 20 + keyboards/spacey/spacey.c | 29 + keyboards/spacey/spacey.h | 41 + keyboards/sparrow62/info.json | 2 - keyboards/sparrow62/rules.mk | 4 +- keyboards/specskeys/info.json | 108 +- keyboards/specskeys/keymaps/default/keymap.c | 32 +- keyboards/specskeys/rules.mk | 5 +- keyboards/specskeys/specskeys.h | 24 +- keyboards/spiderisland/split78/config.h | 2 + keyboards/spiderisland/split78/info.json | 2 - keyboards/spiderisland/split78/rules.mk | 6 +- keyboards/spiderisland/winry25tc/config.h | 41 + keyboards/spiderisland/winry25tc/info.json | 36 + .../winry25tc/keymaps/default/keymap.c | 39 + keyboards/spiderisland/winry25tc/readme.md | 14 + keyboards/spiderisland/winry25tc/rules.mk | 20 + keyboards/spiderisland/winry25tc/winry25tc.c | 17 + keyboards/spiderisland/winry25tc/winry25tc.h | 33 + keyboards/splitish/info.json | 2 - keyboards/splitish/rules.mk | 13 +- keyboards/splitkb/kyria/.noci | 0 keyboards/{ => splitkb}/kyria/config.h | 0 keyboards/splitkb/kyria/info.json | 61 + .../splitkb/kyria/keymaps/asapjockey/config.h | 47 + .../splitkb/kyria/keymaps/asapjockey/keymap.c | 314 ++ .../splitkb/kyria/keymaps/asapjockey/rules.mk | 6 + .../splitkb/kyria/keymaps/benji/config.h | 34 + .../kyria/keymaps/benji/glcdfont.c | 0 .../splitkb/kyria/keymaps/benji/keymap.c | 248 ++ .../splitkb/kyria/keymaps/benji/readme.md | 246 ++ .../splitkb/kyria/keymaps/benji/rules.mk | 4 + .../splitkb/kyria/keymaps/cjuniet/config.h | 37 + .../kyria/keymaps/cjuniet/default.json | 0 .../splitkb/kyria/keymaps/cjuniet/keymap.c | 128 + .../splitkb/kyria/keymaps/cjuniet/rules.mk | 7 + .../splitkb/kyria/keymaps/corodiak/config.h | 45 + .../kyria/keymaps/corodiak/keymap.c | 0 .../splitkb/kyria/keymaps/corodiak/rules.mk | 5 + .../splitkb/kyria/keymaps/cwebster2/config.h | 55 + .../splitkb/kyria/keymaps/cwebster2/keymap.c | 411 ++ .../splitkb/kyria/keymaps/cwebster2/rules.mk | 6 + .../splitkb/kyria/keymaps/default/config.h | 32 + .../splitkb/kyria/keymaps/default/keymap.c | 315 ++ .../splitkb/kyria/keymaps/default/readme.md | 249 ++ .../splitkb/kyria/keymaps/default/rules.mk | 4 + .../splitkb/kyria/keymaps/drashna/config.h | 43 + .../splitkb/kyria/keymaps/drashna/keymap.c | 165 + .../splitkb/kyria/keymaps/drashna/rules.mk | 20 + .../splitkb/kyria/keymaps/ghidalgo93/config.h | 41 + .../splitkb/kyria/keymaps/ghidalgo93/keymap.c | 247 ++ .../splitkb/kyria/keymaps/ghidalgo93/rules.mk | 5 + .../kyria/keymaps/gotham/README.md | 0 .../splitkb/kyria/keymaps/gotham/config.h | 48 + .../kyria/keymaps/gotham/encoder_utils.c | 0 .../kyria/keymaps/gotham/encoder_utils.h | 0 .../kyria/keymaps/gotham/keycodes.h | 0 .../splitkb/kyria/keymaps/gotham/keymap.c | 130 + .../kyria/keymaps/gotham/oled_utils.c | 0 .../kyria/keymaps/gotham/oled_utils.h | 0 .../splitkb/kyria/keymaps/gotham/rules.mk | 22 + .../kyria/keymaps/gotham/thumbstick.c | 0 .../kyria/keymaps/gotham/thumbstick.h | 0 .../splitkb/kyria/keymaps/j-inc/config.h | 45 + .../splitkb/kyria/keymaps/j-inc/keymap.c | 377 ++ .../splitkb/kyria/keymaps/j-inc/rules.mk | 19 + .../splitkb/kyria/keymaps/jhelvy/config.h | 33 + .../splitkb/kyria/keymaps/jhelvy/keymap.c | 203 + .../splitkb/kyria/keymaps/jhelvy/rules.mk | 9 + .../splitkb/kyria/keymaps/john-ezra/config.h | 40 + .../kyria/keymaps/john-ezra/glcdfont.c | 276 ++ .../splitkb/kyria/keymaps/john-ezra/keymap.c | 261 ++ .../splitkb/kyria/keymaps/john-ezra/oled.c | 490 +++ .../splitkb/kyria/keymaps/john-ezra/readme.md | 20 + .../splitkb/kyria/keymaps/john-ezra/rules.mk | 19 + .../splitkb/kyria/keymaps/kejadlen/config.h | 47 + .../kyria/keymaps/kejadlen/keymap.c | 0 .../splitkb/kyria/keymaps/kejadlen/rules.mk | 5 + .../keymaps/manna-harbour_miryoku/config.h | 37 + .../keymaps/manna-harbour_miryoku/keymap.c | 5 + .../splitkb/kyria/keymaps/mattir/config.h | 55 + .../splitkb/kyria/keymaps/mattir/keymap.c | 293 ++ .../kyria/keymaps/mattir/readme.md | 0 .../splitkb/kyria/keymaps/mattir/rules.mk | 5 + .../kyria/keymaps/mattir2/config.h | 0 .../kyria/keymaps/mattir2/keymap.c | 0 .../kyria/keymaps/mattir2/readme.md | 0 .../splitkb/kyria/keymaps/mattir2/rules.mk | 4 + .../kyria/keymaps/ninjonas/README.md | 0 .../splitkb/kyria/keymaps/ninjonas/config.h | 37 + .../kyria/keymaps/ninjonas/keymap.c | 0 .../splitkb/kyria/keymaps/ninjonas/oled.c | 210 + .../splitkb/kyria/keymaps/ninjonas/rules.mk | 7 + .../splitkb/kyria/keymaps/pierrec83/config.h | 65 + .../kyria/keymaps/pierrec83/encoders.c | 0 .../kyria/keymaps/pierrec83/keymap.c | 0 .../kyria/keymaps/pierrec83/keymap.json | 0 .../kyria/keymaps/pierrec83/layers.h | 0 .../kyria/keymaps/pierrec83/readme.md | 0 .../splitkb/kyria/keymaps/pierrec83/rules.mk | 5 + .../splitkb/kyria/keymaps/plattfot/README.md | 172 + .../splitkb/kyria/keymaps/plattfot/config.h | 44 + .../splitkb/kyria/keymaps/plattfot/keymap.c | 481 +++ .../splitkb/kyria/keymaps/plattfot/rules.mk | 6 + keyboards/splitkb/kyria/keymaps/rmw/config.h | 36 + .../{ => splitkb}/kyria/keymaps/rmw/keymap.c | 0 .../{ => splitkb}/kyria/keymaps/rmw/readme.md | 0 keyboards/splitkb/kyria/keymaps/rmw/rules.mk | 4 + .../splitkb/kyria/keymaps/shinze/config.h | 32 + .../splitkb/kyria/keymaps/shinze/keymap.c | 249 ++ .../splitkb/kyria/keymaps/shinze/rules.mk | 4 + .../splitkb/kyria/keymaps/tessachka/config.h | 29 + .../splitkb/kyria/keymaps/tessachka/keymap.c | 242 ++ .../splitkb/kyria/keymaps/tessachka/rules.mk | 4 + .../kyria/keymaps/thomasbaart/config.h | 47 + .../kyria/keymaps/thomasbaart/keymap.c | 360 ++ .../kyria/keymaps/thomasbaart/rules.mk | 6 + keyboards/splitkb/kyria/keymaps/via/config.h | 40 + keyboards/splitkb/kyria/keymaps/via/keymap.c | 249 ++ keyboards/splitkb/kyria/keymaps/via/rules.mk | 10 + .../splitkb/kyria/keymaps/winternebs/config.h | 31 + .../kyria/keymaps/winternebs/glcdfont.c | 0 .../splitkb/kyria/keymaps/winternebs/keymap.c | 733 ++++ .../splitkb/kyria/keymaps/winternebs/rules.mk | 13 + .../splitkb/kyria/keymaps/zigotica/config.h | 44 + .../splitkb/kyria/keymaps/zigotica/keymap.c | 58 + .../splitkb/kyria/keymaps/zigotica/oled.c | 87 + .../splitkb/kyria/keymaps/zigotica/oled.h | 18 + .../splitkb/kyria/keymaps/zigotica/rules.mk | 10 + keyboards/{ => splitkb}/kyria/kyria.c | 1 - keyboards/{ => splitkb}/kyria/kyria.h | 2 +- keyboards/splitkb/kyria/readme.md | 41 + keyboards/splitkb/kyria/rev1/config.h | 97 + .../splitkb/kyria/rev1/proton_c/chconf.h | 22 + .../splitkb/kyria/rev1/proton_c/halconf.h | 22 + .../splitkb/kyria/rev1/proton_c/mcuconf.h | 29 + .../splitkb/kyria/rev1/proton_c/proton_c.c | 17 + .../splitkb/kyria/rev1/proton_c/proton_c.h | 19 + .../splitkb/kyria/rev1/proton_c/rules.mk | 5 + keyboards/splitkb/kyria/rev1/rev1.c | 154 + keyboards/splitkb/kyria/rev1/rev1.h | 70 + keyboards/splitkb/kyria/rev1/rules.mk | 8 + keyboards/splitkb/kyria/rules.mk | 22 + keyboards/splitkb/zima/config.h | 41 +- keyboards/splitkb/zima/info.json | 2 - .../splitkb/zima/keymaps/drashna/config.h | 5 + .../splitkb/zima/keymaps/drashna/keymap.c | 67 +- .../splitkb/zima/keymaps/drashna/rules.mk | 1 + keyboards/splitkb/zima/keymaps/via/config.h | 20 + keyboards/splitkb/zima/keymaps/via/keymap.c | 68 + keyboards/splitkb/zima/keymaps/via/rules.mk | 6 + keyboards/splitkb/zima/rules.mk | 11 +- keyboards/splitkb/zima/zima.c | 16 +- keyboards/splitography/config.h | 55 + keyboards/splitography/info.json | 302 ++ .../splitography/keymaps/default/keymap.c | 291 ++ .../splitography/keymaps/default/readme.md | 14 + .../keymap.c | 291 ++ .../splitography/keymaps/dvorak/keymap.c | 291 ++ .../splitography/keymaps/jeandeaual/keymap.c | 293 ++ .../splitography/keymaps/jeandeaual/readme.md | 7 + keyboards/splitography/keymaps/multi/keymap.c | 411 ++ .../splitography/keymaps/multi/readme.md | 15 + keyboards/splitography/readme.md | 42 + keyboards/splitography/rules.mk | 5 + keyboards/splitography/splitography.c | 17 + keyboards/splitography/splitography.h | 33 + keyboards/splitreus62/info.json | 2 - keyboards/splitreus62/rules.mk | 16 +- keyboards/splitty/info.json | 2 - keyboards/splitty/rules.mk | 5 +- keyboards/squiggle/rev1/info.json | 2 - keyboards/squiggle/rev1/rules.mk | 7 +- keyboards/standaside/config.h | 68 - keyboards/standaside/info.json | 2 - keyboards/standaside/rules.mk | 18 +- keyboards/standaside/standaside.c | 13 - keyboards/standaside/standaside.h | 34 +- keyboards/staryu/info.json | 12 - keyboards/staryu/readme.md | 15 - keyboards/staryu/rules.mk | 31 - keyboards/steal_this_keyboard/info.json | 4 +- keyboards/steal_this_keyboard/rules.mk | 5 +- keyboards/stella/info.json | 2 - keyboards/stella/rules.mk | 5 +- keyboards/stratos/config.h | 54 + keyboards/stratos/info.json | 606 +++ .../stratos/keymaps/ansi_arrows/keymap.c | 33 + .../keymaps/ansi_split_bs_rshift/keymap.c | 33 + keyboards/stratos/keymaps/default/keymap.c | 33 + keyboards/stratos/keymaps/iso/keymap.c | 33 + .../keymaps/iso_split_bs_rshift/keymap.c | 33 + .../stratos/keymaps/iso_tsangan/keymap.c | 33 + keyboards/stratos/keymaps/tsangan/keymap.c | 33 + .../stratos/keymaps/tsangan_hhkb/keymap.c | 33 + keyboards/stratos/keymaps/via/keymap.c | 47 + keyboards/stratos/keymaps/via/rules.mk | 2 + keyboards/stratos/readme.md | 21 + keyboards/stratos/rules.mk | 21 + keyboards/stratos/stratos.c | 17 + keyboards/stratos/stratos.h | 147 + keyboards/studiokestra/bourgeau/bourgeau.c | 18 + keyboards/studiokestra/bourgeau/bourgeau.h | 46 + keyboards/studiokestra/bourgeau/config.h | 83 + keyboards/studiokestra/bourgeau/info.json | 94 + .../bourgeau/keymaps/default/keymap.c | 43 + .../bourgeau/keymaps/default/readme.md | 3 + .../bourgeau/keymaps/via/keymap.c | 54 + .../bourgeau/keymaps/via/readme.md | 3 + .../bourgeau/keymaps/via/rules.mk | 1 + keyboards/studiokestra/bourgeau/readme.md | 23 + keyboards/studiokestra/bourgeau/rules.mk | 19 + keyboards/studiokestra/cascade/info.json | 2 - keyboards/studiokestra/cascade/rules.mk | 5 +- keyboards/studiokestra/galatea/config.h | 77 + keyboards/studiokestra/galatea/galatea.c | 17 + keyboards/studiokestra/galatea/galatea.h | 25 + .../galatea/keymaps/default/keymap.c | 42 + .../galatea/keymaps/default/readme.md | 1 + .../studiokestra/galatea/keymaps/via/keymap.c | 51 + .../galatea/keymaps/via/readme.md | 1 + .../studiokestra/galatea/keymaps/via/rules.mk | 1 + keyboards/studiokestra/galatea/readme.md | 27 + keyboards/studiokestra/galatea/rev1/config.h | 21 + keyboards/studiokestra/galatea/rev1/info.json | 101 + keyboards/studiokestra/galatea/rev1/rev1.c | 17 + keyboards/studiokestra/galatea/rev1/rev1.h | 49 + keyboards/studiokestra/galatea/rev1/rules.mk | 19 + keyboards/studiokestra/galatea/rev2/config.h | 21 + keyboards/studiokestra/galatea/rev2/info.json | 101 + keyboards/studiokestra/galatea/rev2/rev2.c | 17 + keyboards/studiokestra/galatea/rev2/rev2.h | 49 + keyboards/studiokestra/galatea/rev2/rules.mk | 19 + keyboards/studiokestra/galatea/rules.mk | 1 + keyboards/studiokestra/nue/info.json | 2 - keyboards/studiokestra/nue/rules.mk | 5 +- keyboards/subatomic/config.h | 5 +- keyboards/subatomic/info.json | 5 - keyboards/subatomic/rules.mk | 19 +- keyboards/suihankey/alpha/alpha.c | 35 - keyboards/suihankey/alpha/config.h | 73 - keyboards/suihankey/alpha/info.json | 2 - .../suihankey/alpha/keymaps/default/keymap.c | 22 +- keyboards/suihankey/rev1/config.h | 73 - keyboards/suihankey/rev1/info.json | 2 - .../suihankey/rev1/keymaps/default/keymap.c | 22 +- keyboards/suihankey/rev1/rev1.c | 35 - keyboards/suihankey/rules.mk | 21 +- keyboards/suihankey/split/alpha/alpha.c | 35 - keyboards/suihankey/split/alpha/config.h | 73 - keyboards/suihankey/split/info.json | 2 - .../suihankey/split/keymaps/default/keymap.c | 16 - keyboards/suihankey/split/rev1/config.h | 73 - keyboards/suihankey/split/rev1/rev1.c | 35 - keyboards/suihankey/split/rules.mk | 2 +- keyboards/superuser/ext/config.h | 54 + keyboards/superuser/ext/ext.c | 16 + keyboards/superuser/ext/ext.h | 104 + keyboards/superuser/ext/info.json | 459 +++ .../superuser/ext/keymaps/default/keymap.c | 33 + .../superuser/ext/keymaps/default/readme.md | 1 + keyboards/superuser/ext/keymaps/via/keymap.c | 49 + keyboards/superuser/ext/keymaps/via/readme.md | 1 + keyboards/superuser/ext/keymaps/via/rules.mk | 1 + keyboards/superuser/ext/readme.md | 17 + keyboards/superuser/ext/rules.mk | 20 + keyboards/superuser/frl/config.h | 54 + keyboards/superuser/frl/frl.c | 16 + keyboards/superuser/frl/frl.h | 32 + keyboards/superuser/frl/info.json | 10 + .../superuser/frl/keymaps/default/keymap.c | 33 + .../superuser/frl/keymaps/default/readme.md | 1 + keyboards/superuser/frl/keymaps/via/keymap.c | 49 + keyboards/superuser/frl/keymaps/via/readme.md | 1 + keyboards/superuser/frl/keymaps/via/rules.mk | 1 + keyboards/superuser/frl/readme.md | 17 + keyboards/superuser/frl/rules.mk | 20 + keyboards/superuser/tkl/config.h | 54 + keyboards/superuser/tkl/info.json | 494 +++ .../superuser/tkl/keymaps/default/keymap.c | 35 + .../superuser/tkl/keymaps/default/readme.md | 1 + keyboards/superuser/tkl/keymaps/via/keymap.c | 53 + keyboards/superuser/tkl/keymaps/via/readme.md | 1 + keyboards/superuser/tkl/keymaps/via/rules.mk | 1 + keyboards/superuser/tkl/readme.md | 17 + keyboards/superuser/tkl/rules.mk | 20 + keyboards/superuser/tkl/tkl.c | 16 + keyboards/superuser/tkl/tkl.h | 116 + keyboards/swiftrax/retropad/info.json | 4 +- keyboards/swiftrax/retropad/rules.mk | 5 +- keyboards/switchplate/southpaw_65/config.h | 72 - keyboards/switchplate/southpaw_65/info.json | 5 - keyboards/switchplate/southpaw_65/rules.mk | 18 +- .../switchplate/southpaw_fullsize/config.h | 53 - .../switchplate/southpaw_fullsize/info.json | 4 +- .../switchplate/southpaw_fullsize/rules.mk | 15 +- .../switchplate/switchplate910/info.json | 2 - keyboards/switchplate/switchplate910/rules.mk | 5 +- keyboards/sx60/i2cmaster.h | 178 - keyboards/sx60/info.json | 2 - keyboards/sx60/matrix.c | 21 +- keyboards/sx60/rules.mk | 14 +- keyboards/sx60/sx60.c | 31 +- keyboards/sx60/sx60.h | 97 +- keyboards/sx60/twimaster.c | 207 - keyboards/synapse/config.h | 58 + keyboards/synapse/info.json | 96 + keyboards/synapse/keymaps/7u_space/config.h | 27 + keyboards/synapse/keymaps/7u_space/keymap.c | 77 + keyboards/synapse/keymaps/7u_space/rules.mk | 1 + keyboards/synapse/keymaps/default/config.h | 27 + keyboards/synapse/keymaps/default/keymap.c | 77 + keyboards/synapse/keymaps/default/rules.mk | 1 + keyboards/synapse/readme.md | 27 + keyboards/synapse/rules.mk | 20 + keyboards/synapse/synapse.c | 34 + keyboards/synapse/synapse.h | 48 + keyboards/tada68/info.json | 5 - keyboards/tada68/keymaps/abishalom/rules.mk | 2 +- keyboards/tada68/keymaps/ardakilic/rules.mk | 2 +- keyboards/tada68/keymaps/bazooka/rules.mk | 2 +- keyboards/tada68/keymaps/cheese/rules.mk | 2 +- keyboards/tada68/keymaps/dlg/rules.mk | 2 +- keyboards/tada68/keymaps/emdarcher/keymap.c | 4 +- keyboards/tada68/keymaps/fakb/rules.mk | 2 +- keyboards/tada68/keymaps/fezzant/rules.mk | 2 +- keyboards/tada68/keymaps/iso-nor/rules.mk | 2 +- keyboards/tada68/keymaps/iso-uk/rules.mk | 2 +- keyboards/tada68/keymaps/isoish/rules.mk | 2 +- keyboards/tada68/keymaps/kbp-v60/rules.mk | 2 +- keyboards/tada68/keymaps/mattdicarlo/rules.mk | 2 +- keyboards/tada68/keymaps/mattgemmell/rules.mk | 2 +- keyboards/tada68/keymaps/mlechner/rules.mk | 2 +- keyboards/tada68/keymaps/mtdjr/rules.mk | 2 +- .../tada68/keymaps/onelivesleft/rules.mk | 2 +- keyboards/tada68/keymaps/pascamel/rules.mk | 2 +- keyboards/tada68/keymaps/raylas/rules.mk | 2 +- keyboards/tada68/keymaps/rbong/rules.mk | 2 +- keyboards/tada68/keymaps/rgb/rules.mk | 2 +- keyboards/tada68/keymaps/rys/rules.mk | 2 +- keyboards/tada68/keymaps/sm0g/rules.mk | 2 +- .../tada68/keymaps/stephengrier/rules.mk | 2 +- keyboards/tada68/keymaps/trashcat/rules.mk | 2 +- keyboards/tada68/keymaps/tshack/rules.mk | 2 +- keyboards/tada68/keymaps/unix/rules.mk | 2 +- keyboards/tada68/keymaps/wamsm_tada/rules.mk | 2 +- keyboards/tada68/rules.mk | 16 +- .../center_enter/center_enter.c | 17 + .../center_enter/center_enter.h | 37 + .../takashicompany/center_enter/config.h | 153 + .../takashicompany/center_enter/info.json | 191 + .../center_enter/keymaps/default/keymap.c | 97 + .../center_enter/keymaps/via/config.h | 1 + .../center_enter/keymaps/via/keymap.c | 91 + .../center_enter/keymaps/via/rules.mk | 1 + .../takashicompany/center_enter/readme.md | 29 + .../takashicompany/center_enter/rules.mk | 21 + keyboards/takashicompany/compacx/compacx.c | 28 + keyboards/takashicompany/compacx/compacx.h | 46 + keyboards/takashicompany/compacx/config.h | 149 + keyboards/takashicompany/compacx/info.json | 309 ++ .../compacx/keymaps/default/keymap.c | 68 + .../compacx/keymaps/via/config.h | 18 + .../compacx/keymaps/via/keymap.c | 68 + .../compacx/keymaps/via/rules.mk | 1 + keyboards/takashicompany/compacx/readme.md | 29 + keyboards/takashicompany/compacx/rules.mk | 22 + keyboards/takashicompany/dogtag/config.h | 152 + keyboards/takashicompany/dogtag/dogtag.c | 28 + keyboards/takashicompany/dogtag/dogtag.h | 37 + keyboards/takashicompany/dogtag/info.json | 83 + .../dogtag/keymaps/default/keymap.c | 30 + .../dogtag/keymaps/via/config.h | 20 + .../dogtag/keymaps/via/keymap.c | 30 + .../dogtag/keymaps/via/rules.mk | 1 + keyboards/takashicompany/dogtag/readme.md | 37 + keyboards/takashicompany/dogtag/rules.mk | 22 + keyboards/takashicompany/endzone34/config.h | 151 + .../takashicompany/endzone34/endzone34.c | 67 + .../takashicompany/endzone34/endzone34.h | 39 + keyboards/takashicompany/endzone34/info.json | 48 + .../endzone34/keymaps/default/keymap.c | 43 + .../endzone34/keymaps/via/config.h | 20 + .../endzone34/keymaps/via/keymap.c | 67 + .../endzone34/keymaps/via/rules.mk | 2 + keyboards/takashicompany/endzone34/readme.md | 20 + keyboards/takashicompany/endzone34/rules.mk | 21 + keyboards/takashicompany/heavy_left/config.h | 145 + .../takashicompany/heavy_left/heavy_left.c | 17 + .../takashicompany/heavy_left/heavy_left.h | 46 + keyboards/takashicompany/heavy_left/info.json | 496 +++ .../heavy_left/keymaps/default/keymap.c | 53 + .../heavy_left/keymaps/via/keymap.c | 69 + .../heavy_left/keymaps/via/rules.mk | 1 + keyboards/takashicompany/heavy_left/readme.md | 33 + keyboards/takashicompany/heavy_left/rules.mk | 21 + keyboards/takashicompany/qoolee/config.h | 153 + keyboards/takashicompany/qoolee/info.json | 156 + .../qoolee/keymaps/default/keymap.c | 79 + .../qoolee/keymaps/via/config.h | 20 + .../qoolee/keymaps/via/keymap.c | 79 + .../qoolee/keymaps/via/rules.mk | 1 + keyboards/takashicompany/qoolee/qoolee.c | 17 + keyboards/takashicompany/qoolee/qoolee.h | 37 + keyboards/takashicompany/qoolee/readme.md | 30 + keyboards/takashicompany/qoolee/rules.mk | 21 + keyboards/taleguers/taleguers75/info.json | 4 +- keyboards/taleguers/taleguers75/rules.mk | 5 +- keyboards/tanuki/config.h | 5 +- keyboards/tanuki/info.json | 2 - keyboards/tanuki/keymaps/tucznak/rules.mk | 2 +- keyboards/tanuki/rules.mk | 13 +- keyboards/tanuki/tanuki.c | 6 - keyboards/tau4/keymaps/default/keymap.c | 5 +- keyboards/tau4/rules.mk | 8 +- keyboards/team0110/p1800fl/config.h | 83 + keyboards/team0110/p1800fl/info.json | 97 + .../team0110/p1800fl/keymaps/default/keymap.c | 34 + .../p1800fl/keymaps/default/readme.md | 0 .../team0110/p1800fl/keymaps/via/keymap.c | 48 + .../team0110/p1800fl/keymaps/via/readme.md | 1 + .../team0110/p1800fl/keymaps/via/rules.mk | 1 + .../{handwired => team0110}/p1800fl/p1800fl.c | 0 .../{handwired => team0110}/p1800fl/p1800fl.h | 0 keyboards/team0110/p1800fl/readme.md | 15 + keyboards/team0110/p1800fl/rules.mk | 19 + keyboards/technika/info.json | 2 - keyboards/technika/rules.mk | 5 +- keyboards/teleport/numpad/config.h | 39 + keyboards/teleport/numpad/info.json | 27 + .../teleport/numpad/keymaps/default/keymap.c | 35 + .../teleport/numpad/keymaps/via/keymap.c | 51 + .../teleport/numpad/keymaps/via/rules.mk | 1 + keyboards/teleport/numpad/numpad.c | 16 + keyboards/teleport/numpad/numpad.h | 33 + keyboards/teleport/numpad/readme.md | 20 + keyboards/teleport/numpad/rules.mk | 20 + keyboards/telophase/info.json | 2 - keyboards/telophase/rules.mk | 4 +- keyboards/tempo_turtle/bradpad/info.json | 2 - keyboards/tempo_turtle/bradpad/rules.mk | 5 +- keyboards/tender/macrowo_pad/info.json | 4 +- .../macrowo_pad/keymaps/default/keymap.c | 9 +- .../macrowo_pad/keymaps/default/rules.mk | 3 +- .../tender/macrowo_pad/keymaps/via/keymap.c | 9 +- .../tender/macrowo_pad/keymaps/via/rules.mk | 3 +- keyboards/tender/macrowo_pad/rules.mk | 11 +- keyboards/tenki/info.json | 2 - keyboards/tenki/rules.mk | 9 +- keyboards/terrazzo/config.h | 52 +- keyboards/terrazzo/info.json | 4 +- keyboards/terrazzo/rules.mk | 5 +- keyboards/terrazzo/terrazzo.c | 2 +- keyboards/tetris/info.json | 2 - keyboards/tetris/rules.mk | 12 +- keyboards/tetris/tetris.h | 27 +- keyboards/tg4x/config.h | 73 - keyboards/tg4x/info.json | 4 +- keyboards/tg4x/rules.mk | 15 +- keyboards/tg4x/tg4x.c | 35 - keyboards/tgr/910/config.h | 4 - keyboards/tgr/910/info.json | 2 - keyboards/tgr/910/rules.mk | 11 +- keyboards/tgr/910ce/info.json | 2 - keyboards/tgr/910ce/rules.mk | 13 +- keyboards/tgr/alice/info.json | 3 - keyboards/tgr/alice/rules.mk | 11 +- keyboards/tgr/jane/info.json | 28 - keyboards/tgr/jane/jane.c | 17 - keyboards/tgr/jane/rules.mk | 24 - keyboards/tgr/jane/{ => v2}/config.h | 0 keyboards/tgr/jane/v2/info.json | 26 + .../jane/{ => v2}/keymaps/default/config.h | 0 .../jane/{ => v2}/keymaps/default/keymap.c | 0 .../jane/{ => v2}/keymaps/default/readme.md | 0 .../tgr/jane/{ => v2}/keymaps/via/config.h | 0 .../tgr/jane/{ => v2}/keymaps/via/keymap.c | 0 keyboards/tgr/jane/v2/keymaps/via/rules.mk | 2 + keyboards/tgr/jane/{ => v2}/readme.md | 0 keyboards/tgr/jane/v2/rules.mk | 17 + keyboards/tgr/jane/v2/v2.c | 17 + keyboards/tgr/jane/{jane.h => v2/v2.h} | 0 keyboards/tgr/jane/v2ce/config.h | 42 + keyboards/tgr/jane/v2ce/info.json | 28 + .../tgr/jane/v2ce/keymaps/default/keymap.c | 27 + .../tgr/jane/v2ce/keymaps/default/readme.md | 1 + keyboards/tgr/jane/v2ce/keymaps/via/config.h | 19 + keyboards/tgr/jane/v2ce/keymaps/via/keymap.c | 43 + keyboards/tgr/jane/v2ce/keymaps/via/rules.mk | 2 + keyboards/tgr/jane/v2ce/readme.md | 19 + keyboards/tgr/jane/v2ce/rules.mk | 17 + keyboards/tgr/jane/v2ce/v2ce.c | 17 + keyboards/tgr/jane/v2ce/v2ce.h | 113 + keyboards/tgr/tris/config.h | 4 - keyboards/tgr/tris/info.json | 2 - keyboards/tgr/tris/rules.mk | 11 +- keyboards/the_royal/liminal/info.json | 5 - keyboards/the_royal/liminal/rules.mk | 15 +- keyboards/the_royal/schwann/info.json | 5 - keyboards/the_royal/schwann/rules.mk | 18 +- keyboards/the_ruler/config.h | 48 - keyboards/the_ruler/info.json | 2 - keyboards/the_ruler/rules.mk | 18 +- keyboards/the_ruler/the_ruler.c | 21 - keyboards/the_uni/info.json | 2 - keyboards/the_uni/keymaps/default/keymap.c | 53 +- keyboards/the_uni/keymaps/qwerty/keymap.c | 57 +- keyboards/the_uni/{ => pro_micro}/config.h | 0 keyboards/the_uni/pro_micro/pro_micro.c | 18 + .../{the_uni.h => pro_micro/pro_micro.h} | 0 keyboards/the_uni/pro_micro/readme.md | 20 + keyboards/the_uni/pro_micro/rules.mk | 20 + keyboards/the_uni/readme.md | 30 +- keyboards/the_uni/rules.mk | 21 - keyboards/the_uni/the_uni.c | 18 - keyboards/the_uni/usb_c/config.h | 52 + keyboards/the_uni/usb_c/readme.md | 20 + keyboards/the_uni/usb_c/rules.mk | 20 + keyboards/the_uni/usb_c/usb_c.c | 18 + keyboards/the_uni/usb_c/usb_c.h | 30 + keyboards/thedogkeyboard/config.h | 73 - keyboards/thedogkeyboard/info.json | 2 - keyboards/thedogkeyboard/rules.mk | 15 +- keyboards/themadnoodle/ncc1701kb/v2/info.json | 2 - keyboards/themadnoodle/ncc1701kb/v2/rules.mk | 17 +- keyboards/themadnoodle/noodlepad/info.json | 2 - keyboards/themadnoodle/noodlepad/rules.mk | 17 +- .../thevankeyboards/bananasplit/info.json | 4 +- .../bananasplit/keymaps/0010/rules.mk | 1 - .../bananasplit/keymaps/coloneljesus/rules.mk | 1 - .../bananasplit/keymaps/kamon/rules.mk | 1 - .../thevankeyboards/bananasplit/rules.mk | 9 +- keyboards/thevankeyboards/caravan/info.json | 2 - keyboards/thevankeyboards/caravan/rules.mk | 16 +- keyboards/thevankeyboards/jetvan/rules.mk | 5 +- keyboards/thevankeyboards/minivan/info.json | 2 - .../minivan/keymaps/belak/rules.mk | 1 - .../minivan/keymaps/danbee/rules.mk | 1 - .../minivan/keymaps/jeebak/rules.mk | 2 +- .../minivan/keymaps/jetpacktuxedo/keymap.c | 2 +- .../minivan/keymaps/jetpacktuxedo/rules.mk | 2 +- .../minivan/keymaps/josjoha/base_hebrew.c | 291 ++ .../minivan/keymaps/josjoha/base_hebrew.h | 52 + .../minivan/keymaps/josjoha/base_hebrew.md | 198 + .../minivan/keymaps/josjoha/base_numpad.h | 2 + .../keymaps/josjoha/base_qwerty_basearrow.h | 2 + .../minivan/keymaps/josjoha/config.h | 4 +- .../minivan/keymaps/josjoha/keymap.c | 13 +- .../keymaps/josjoha/minifan_config_compact.h | 20 +- .../minivan/keymaps/josjoha/readme.md | 21 +- .../minivan/keymaps/josjoha/rules.mk | 2 +- .../minivan/keymaps/josjoha/unicode_hebrew.h | 116 + .../minivan/keymaps/josjoha/unicode_macros.c | 546 ++- .../minivan/keymaps/josjoha/unicode_macros.h | 2 + .../minivan/keymaps/josjoha/unicode_weurope.h | 2 + .../minivan/keymaps/josjoha/user_config.h | 24 +- .../minivan/keymaps/king/rules.mk | 2 +- .../minivan/keymaps/like_jis/rules.mk | 2 +- .../minivan/keymaps/mikethetiger/rules.mk | 2 +- .../minivan/keymaps/mjt/rules.mk | 2 +- .../minivan/keymaps/smt/rules.mk | 2 +- .../minivan/keymaps/tong92/rules.mk | 2 +- .../minivan/keymaps/via/keymap.json | 11 +- .../minivan/keymaps/xyverz/rules.mk | 2 +- keyboards/thevankeyboards/minivan/rules.mk | 18 +- keyboards/thevankeyboards/roadkit/config.h | 53 +- keyboards/thevankeyboards/roadkit/info.json | 2 - .../roadkit/keymaps/flipphone/rules.mk | 2 +- .../roadkit/keymaps/khord/rules.mk | 2 +- .../roadkit/keymaps/mjt/rules.mk | 2 +- .../roadkit/keymaps/singles/rules.mk | 2 +- .../roadkit/keymaps/singlesBrent/rules.mk | 2 +- .../roadkit/keymaps/wavebeem-gamepad/rules.mk | 2 +- keyboards/thevankeyboards/roadkit/roadkit.c | 27 - keyboards/thevankeyboards/roadkit/roadkit.h | 45 +- keyboards/thevankeyboards/roadkit/rules.mk | 18 +- keyboards/tiger910/config.h | 49 + keyboards/tiger910/info.json | 77 + keyboards/tiger910/keymaps/default/keymap.c | 28 + keyboards/tiger910/keymaps/via/keymap.c | 53 + keyboards/tiger910/keymaps/via/rules.mk | 1 + keyboards/tiger910/readme.md | 15 + keyboards/tiger910/rules.mk | 20 + keyboards/tiger910/tiger910.c | 17 + keyboards/tiger910/tiger910.h | 33 + keyboards/tkc/candybar/lefty/config.h | 20 - keyboards/tkc/candybar/lefty/info.json | 2 - keyboards/tkc/candybar/lefty/lefty.c | 4 - keyboards/tkc/candybar/lefty/rules.mk | 5 +- keyboards/tkc/candybar/righty/config.h | 20 - keyboards/tkc/candybar/righty/info.json | 2 - keyboards/tkc/candybar/righty/rules.mk | 5 +- keyboards/tkc/godspeed75/config.h | 20 - keyboards/tkc/godspeed75/info.json | 4 +- keyboards/tkc/godspeed75/rules.mk | 5 +- keyboards/tkc/m0lly/info.json | 2 - keyboards/tkc/m0lly/keymaps/default/keymap.c | 8 +- keyboards/tkc/m0lly/keymaps/via/keymap.c | 6 +- keyboards/tkc/m0lly/rules.mk | 8 +- keyboards/tkc/osav2/config.h | 73 - keyboards/tkc/osav2/info.json | 2 - keyboards/tkc/osav2/rules.mk | 14 +- keyboards/tkc/portico/config.h | 92 +- keyboards/tkc/portico/info.json | 2 - .../tkc/portico/keymaps/default/keymap.c | 20 +- keyboards/tkc/portico/keymaps/via/keymap.c | 20 +- keyboards/tkc/portico/portico.c | 4 +- keyboards/tkc/portico/portico.h | 4 + keyboards/tkc/portico/rules.mk | 16 +- keyboards/tkc/tkc1800/config.h | 68 - keyboards/tkc/tkc1800/info.json | 3 - .../tkc/tkc1800/keymaps/default/keymap.c | 10 +- keyboards/tkc/tkc1800/keymaps/smt/keymap.c | 8 +- keyboards/tkc/tkc1800/keymaps/via/keymap.c | 8 +- keyboards/tkc/tkc1800/keymaps/wkl/keymap.c | 10 +- .../tkc/tkc1800/keymaps/yanfali/keymap.c | 10 +- .../tkc/tkc1800/keymaps/yanfali/rules.mk | 2 +- keyboards/tkc/tkc1800/rules.mk | 21 +- keyboards/tkc/tkl_ab87/info.json | 4 +- keyboards/tkc/tkl_ab87/rules.mk | 5 +- keyboards/tkw/grandiceps/config.h | 5 +- keyboards/tkw/grandiceps/info.json | 4 +- .../tkw/grandiceps/keymaps/default/keymap.c | 27 +- keyboards/tkw/grandiceps/readme.md | 14 + keyboards/tkw/grandiceps/rev2/config.h | 24 + keyboards/tkw/grandiceps/rev2/rules.mk | 4 + keyboards/tkw/grandiceps/rules.mk | 8 +- keyboards/tkw/stoutgat/v1/info.json | 2 - keyboards/tkw/stoutgat/v1/rules.mk | 7 +- keyboards/tkw/stoutgat/v2/info.json | 2 - keyboards/tkw/stoutgat/v2/rules.mk | 5 +- keyboards/tmo50/config.h | 68 - keyboards/tmo50/info.json | 2 - keyboards/tmo50/rules.mk | 18 +- keyboards/tmo50/tmo50.c | 20 - keyboards/toad/config.h | 5 +- keyboards/toad/info.json | 8 - keyboards/toad/rules.mk | 10 +- keyboards/tokyo60/info.json | 320 -- keyboards/tokyo60/readme.md | 15 - keyboards/tokyo60/rules.mk | 33 - keyboards/tokyo60/tokyo60.c | 18 - keyboards/tokyokeyboard/alix40/config.h | 3 - keyboards/tokyokeyboard/alix40/info.json | 2 - keyboards/tokyokeyboard/alix40/rules.mk | 8 +- .../{ => tokyokeyboard}/tokyo60/config.h | 0 keyboards/tokyokeyboard/tokyo60/info.json | 318 ++ .../tokyo60/keymaps/default/config.h | 0 .../tokyo60/keymaps/default/keymap.c | 0 .../tokyo60/keymaps/swappedBottomRow/config.h | 0 .../tokyo60/keymaps/swappedBottomRow/keymap.c | 0 .../tokyo60/keymaps/via/keymap.c | 0 .../tokyo60/keymaps/via/rules.mk | 1 + keyboards/tokyokeyboard/tokyo60/readme.md | 15 + keyboards/tokyokeyboard/tokyo60/rules.mk | 21 + keyboards/tokyokeyboard/tokyo60/tokyo60.c | 1 + .../{ => tokyokeyboard}/tokyo60/tokyo60.h | 0 keyboards/torn/bongocat.c | 10 +- keyboards/torn/info.json | 2 - .../keymaps/manna-harbour_miryoku/config.h | 20 + .../keymaps/manna-harbour_miryoku/keymap.c | 5 + keyboards/torn/rules.mk | 11 +- keyboards/touchpad/info.json | 4 +- keyboards/touchpad/rules.mk | 18 +- keyboards/tr60w/info.json | 2 - keyboards/tr60w/rules.mk | 15 +- keyboards/trashman/ketch/info.json | 3 - keyboards/trashman/ketch/rules.mk | 5 +- keyboards/treadstone32/info.json | 2 - keyboards/treadstone32/lite/rules.mk | 7 - keyboards/treadstone32/rev1/rules.mk | 7 - keyboards/treadstone32/rules.mk | 7 +- keyboards/treadstone48/common/oled_helper.c | 2 +- keyboards/treadstone48/common/oled_helper.h | 2 +- .../treadstone48/keymaps/default/keymap.c | 5 +- .../treadstone48/keymaps/default/rules.mk | 3 +- .../treadstone48/keymaps/like_jis/keymap.c | 5 +- .../treadstone48/keymaps/like_jis/rules.mk | 3 +- keyboards/treadstone48/rev1/config.h | 73 - keyboards/treadstone48/rev1/info.json | 2 - .../rev1/keymaps/like_jis_rs/keymap.c | 5 +- .../rev1/keymaps/like_jis_rs/rules.mk | 3 +- keyboards/treadstone48/rev2/config.h | 72 - keyboards/treadstone48/rev2/info.json | 2 - keyboards/treadstone48/rules.mk | 19 +- keyboards/treasure/type9/config.h | 68 - keyboards/treasure/type9/info.json | 2 - .../treasure/type9/keymaps/default/keymap.c | 12 - keyboards/treasure/type9/rules.mk | 18 +- keyboards/treasure/type9/type9.c | 27 - keyboards/treasure/type9/type9.h | 23 +- keyboards/treasure/type9s2/config.h | 50 + keyboards/treasure/type9s2/info.json | 20 + .../treasure/type9s2/keymaps/default/keymap.c | 43 + .../type9s2/keymaps/default/readme.md | 1 + .../treasure/type9s2/keymaps/via/keymap.c | 43 + .../treasure/type9s2/keymaps/via/readme.md | 1 + .../treasure/type9s2/keymaps/via/rules.mk | 1 + keyboards/treasure/type9s2/readme.md | 17 + keyboards/treasure/type9s2/rules.mk | 20 + keyboards/treasure/type9s2/type9s2.c | 16 + keyboards/treasure/type9s2/type9s2.h | 29 + .../tronguylabs/m122_3270/blackpill/config.h | 27 + .../tronguylabs/m122_3270/blackpill/readme.md | 3 + .../tronguylabs/m122_3270/blackpill/rules.mk | 19 + .../tronguylabs/m122_3270/bluepill/chconf.h | 29 + .../tronguylabs/m122_3270/bluepill/config.h | 29 + .../tronguylabs/m122_3270/bluepill/readme.md | 2 + .../tronguylabs/m122_3270/bluepill/rules.mk | 7 + keyboards/tronguylabs/m122_3270/config.h | 37 + keyboards/tronguylabs/m122_3270/info.json | 155 + .../m122_3270/keymaps/default/keymap.c | 214 + .../m122_3270/keymaps/default/readme.md | 35 + keyboards/tronguylabs/m122_3270/m122_3270.c | 17 + keyboards/tronguylabs/m122_3270/m122_3270.h | 40 + keyboards/tronguylabs/m122_3270/readme.md | 22 + .../tronguylabs/m122_3270/teensy/config.h | 25 + .../tronguylabs/m122_3270/teensy/readme.md | 3 + .../tronguylabs/m122_3270/teensy/rules.mk | 19 + keyboards/tszaboo/ortho4exent/info.json | 3 - keyboards/tszaboo/ortho4exent/rules.mk | 5 +- keyboards/tunks/ergo33/info.json | 4 +- keyboards/tunks/ergo33/rules.mk | 5 +- keyboards/tw40/info.json | 2 - keyboards/tw40/keymaps/via/keymap.c | 47 + keyboards/tw40/keymaps/via/rules.mk | 2 + keyboards/tw40/rules.mk | 5 +- keyboards/txuu/config.h | 63 + keyboards/txuu/info.json | 81 + keyboards/txuu/keymaps/default/keymap.c | 36 + keyboards/txuu/keymaps/via/keymap.c | 44 + keyboards/txuu/keymaps/via/rules.mk | 1 + keyboards/txuu/readme.md | 18 + keyboards/txuu/rules.mk | 19 + keyboards/txuu/txuu.c | 18 + keyboards/txuu/txuu.h | 37 + keyboards/ua62/config.h | 73 - keyboards/ua62/info.json | 2 - keyboards/ua62/rules.mk | 15 +- keyboards/uk78/config.h | 5 +- keyboards/uk78/info.json | 7 +- keyboards/uk78/keymaps/default/keymap.c | 46 +- keyboards/uk78/rules.mk | 10 +- keyboards/uk78/uk78.h | 96 +- keyboards/underscore33/rev1/info.json | 2 - keyboards/underscore33/rev1/rules.mk | 5 +- keyboards/underscore33/rev2/info.json | 2 - keyboards/underscore33/rev2/rules.mk | 5 +- keyboards/ungodly/launch_pad/config.h | 108 +- keyboards/ungodly/launch_pad/info.json | 58 +- .../launch_pad/keymaps/default/keymap.c | 399 +- .../ungodly/launch_pad/keymaps/via/keymap.c | 294 ++ .../ungodly/launch_pad/keymaps/via/rules.mk | 1 + .../launch_pad/keymaps/warzone/keymap.c | 270 ++ .../launch_pad/keymaps/warzone/rules.mk | 2 + keyboards/ungodly/launch_pad/launch_pad.c | 17 - keyboards/ungodly/launch_pad/readme.md | 62 +- keyboards/ungodly/launch_pad/rules.mk | 8 +- keyboards/ungodly/nines/info.json | 2 - keyboards/ungodly/nines/rules.mk | 5 +- .../classic_ultracl_post_2013/info.json | 16 + .../keymaps/default/keymap.c | 33 + .../keymaps/default/readme.md | 1 + .../overnumpad_1xb/config.h | 75 + .../overnumpad_1xb/overnumpad_1xb.c | 24 + .../overnumpad_1xb/overnumpad_1xb.h | 88 + .../overnumpad_1xb/readme.md | 28 + .../overnumpad_1xb/rules.mk | 24 + .../classic_ultracl_pre_2013/info.json | 16 + .../keymaps/default/keymap.c | 33 + .../keymaps/default/readme.md | 1 + .../overnumpad_1xb/config.h | 75 + .../overnumpad_1xb/overnumpad_1xb.c | 24 + .../overnumpad_1xb/overnumpad_1xb.h | 88 + .../overnumpad_1xb/readme.md | 26 + .../overnumpad_1xb/rules.mk | 26 + .../unicomp/spacesaver_m_post_2013/info.json | 16 + .../keymaps/default/keymap.c | 42 + .../keymaps/default/readme.md | 1 + .../overnumpad_1xb/config.h | 74 + .../overnumpad_1xb/overnumpad_1xb.c | 42 + .../overnumpad_1xb/overnumpad_1xb.h | 88 + .../overnumpad_1xb/readme.md | 25 + .../overnumpad_1xb/rules.mk | 24 + .../unicomp/spacesaver_m_pre_2013/info.json | 16 + .../keymaps/default/keymap.c | 42 + .../keymaps/default/readme.md | 1 + .../overnumpad_1xb/config.h | 75 + .../overnumpad_1xb/overnumpad_1xb.c | 41 + .../overnumpad_1xb/overnumpad_1xb.h | 88 + .../overnumpad_1xb/readme.md | 25 + .../overnumpad_1xb/rules.mk | 24 + keyboards/unikorn/info.json | 4 +- keyboards/unikorn/rules.mk | 11 +- keyboards/unison/keymaps/via/rules.mk | 2 +- keyboards/unison/v04/info.json | 2 - keyboards/unison/v04/rules.mk | 5 +- keyboards/uno/info.json | 2 - keyboards/uno/rules.mk | 5 +- keyboards/uranuma/config.h | 73 - keyboards/uranuma/info.json | 2 - keyboards/uranuma/rules.mk | 17 +- keyboards/ut472/info.json | 3 - keyboards/ut472/keymaps/hvp/config.h | 4 +- keyboards/ut472/keymaps/hvp/keymap.c | 62 +- keyboards/ut472/keymaps/stefanopace/config.h | 1 + keyboards/ut472/keymaps/stefanopace/keymap.c | 10 +- keyboards/ut472/keymaps/stefanopace/rules.mk | 2 +- keyboards/ut472/keymaps/tucznak/rules.mk | 2 +- keyboards/ut472/rules.mk | 19 +- keyboards/ut472/ut472.c | 12 - keyboards/utd80/info.json | 5 - keyboards/utd80/rules.mk | 5 +- keyboards/uzu42/info.json | 2 - keyboards/uzu42/keymaps/default/keymap.c | 11 +- keyboards/uzu42/rules.mk | 20 +- keyboards/uzu42/uzu42.c | 4 - keyboards/v4n4g0rth0n/config.h | 46 + keyboards/v4n4g0rth0n/info.json | 64 + keyboards/v4n4g0rth0n/readme.md | 17 + keyboards/v4n4g0rth0n/v1/config.h | 23 + .../v4n4g0rth0n/v1/keymaps/default/keymap.c | 48 + keyboards/v4n4g0rth0n/v1/readme.md | 1 + keyboards/v4n4g0rth0n/v1/rules.mk | 19 + keyboards/v4n4g0rth0n/v2/config.h | 23 + .../v4n4g0rth0n/v2/keymaps/default/keymap.c | 86 + keyboards/v4n4g0rth0n/v2/readme.md | 1 + keyboards/v4n4g0rth0n/v2/rules.mk | 22 + keyboards/v4n4g0rth0n/v4n4g0rth0n.c | 17 + keyboards/v4n4g0rth0n/v4n4g0rth0n.h | 43 + keyboards/v60_type_r/config.h | 68 - keyboards/v60_type_r/info.json | 2 - keyboards/v60_type_r/keymaps/default/keymap.c | 4 - keyboards/v60_type_r/keymaps/iso/keymap.c | 4 - keyboards/v60_type_r/rules.mk | 18 +- keyboards/vagrant_10/info.json | 2 - keyboards/vagrant_10/rules.mk | 5 +- keyboards/viktus/sp111/info.json | 2 - keyboards/viktus/sp111/rules.mk | 5 +- keyboards/viktus/sp_mini/config.h | 99 + keyboards/viktus/sp_mini/info.json | 83 + .../viktus/sp_mini/keymaps/default/keymap.c | 128 + .../viktus/sp_mini/keymaps/peott-fr/keymap.c | 117 + keyboards/viktus/sp_mini/keymaps/via/keymap.c | 136 + keyboards/viktus/sp_mini/keymaps/via/rules.mk | 2 + keyboards/viktus/sp_mini/readme.md | 21 + keyboards/viktus/sp_mini/rules.mk | 21 + keyboards/viktus/sp_mini/sp_mini.c | 45 + keyboards/viktus/sp_mini/sp_mini.h | 41 + keyboards/viktus/styrka/info.json | 2 - keyboards/viktus/styrka/rules.mk | 5 +- keyboards/vinta/config.h | 64 - keyboards/vinta/info.json | 18 - keyboards/vinta/keymaps/default/keymap.c | 51 - keyboards/vinta/readme.md | 22 - keyboards/vinta/rules.mk | 23 - keyboards/vinta/vinta.c | 18 - keyboards/vinta/vinta.h | 55 - .../vision_division/Potential Layouts.txt | 84 - keyboards/vision_division/config.h | 141 - .../vision_division/keymaps/default/config.h | 77 - .../vision_division/keymaps/default/keymap.c | 367 -- .../vision_division/keymaps/default/readme.md | 1 - keyboards/vision_division/matrix_types.h | 168 - keyboards/vision_division/readme.md | 14 - keyboards/vision_division/rules.mk | 30 - keyboards/vision_division/vision_division.c | 68 - keyboards/vision_division/vision_division.h | 6 - keyboards/vitamins_included/config.h | 13 - keyboards/vitamins_included/info.json | 2 - .../vitamins_included/keymaps/via/config.h | 22 + .../vitamins_included/keymaps/via/rules.mk | 2 +- keyboards/vitamins_included/rev1/rev1.c | 12 - keyboards/vitamins_included/rev1/rules.mk | 7 - keyboards/vitamins_included/rev2/config.h | 7 +- keyboards/vitamins_included/rev2/rev2.c | 12 - keyboards/vitamins_included/rev2/rules.mk | 7 - keyboards/vitamins_included/rules.mk | 9 +- .../vitamins_included/vitamins_included.c | 2 +- keyboards/vn66/info.json | 2 - keyboards/vn66/rules.mk | 5 +- keyboards/waldo/info.json | 2 - .../keymaps/default_split_shft_bck/config.h | 5 - keyboards/waldo/rules.mk | 18 +- keyboards/wallaby/config.h | 73 - keyboards/wallaby/info.json | 5 +- keyboards/wallaby/rules.mk | 15 +- keyboards/walletburner/cajal/info.json | 2 - keyboards/walletburner/cajal/rules.mk | 3 +- keyboards/walletburner/neuron/info.json | 2 - keyboards/walletburner/neuron/rules.mk | 10 +- keyboards/wanten/config.h | 161 + keyboards/wanten/info.json | 152 + keyboards/wanten/keymaps/2u_bars/config.h | 27 + keyboards/wanten/keymaps/2u_bars/keymap.c | 104 + keyboards/wanten/keymaps/2u_bars/rules.mk | 1 + keyboards/wanten/keymaps/625_bar/config.h | 27 + keyboards/wanten/keymaps/625_bar/keymap.c | 104 + keyboards/wanten/keymaps/625_bar/rules.mk | 1 + keyboards/wanten/keymaps/default/config.h | 27 + keyboards/wanten/keymaps/default/keymap.c | 104 + keyboards/wanten/keymaps/default/readme.md | 1 + keyboards/wanten/keymaps/default/rules.mk | 1 + keyboards/wanten/readme.md | 27 + keyboards/wanten/rules.mk | 20 + keyboards/wanten/wanten.c | 17 + keyboards/wanten/wanten.h | 65 + keyboards/wekey/polaris/config.h | 152 + keyboards/wekey/polaris/info.json | 275 ++ .../wekey/polaris/keymaps/default/keymap.c | 39 + .../wekey/polaris/keymaps/default/readme.md | 3 + keyboards/wekey/polaris/keymaps/via/keymap.c | 55 + keyboards/wekey/polaris/keymaps/via/readme.md | 3 + keyboards/wekey/polaris/keymaps/via/rules.mk | 1 + keyboards/wekey/polaris/polaris.c | 17 + keyboards/wekey/polaris/polaris.h | 109 + keyboards/wekey/polaris/readme.md | 27 + keyboards/wekey/polaris/rules.mk | 22 + keyboards/wekey/we27/config.h | 231 ++ keyboards/wekey/we27/encoder_actions.c | 57 + keyboards/wekey/we27/encoder_actions.h | 21 + keyboards/wekey/we27/info.json | 27 + keyboards/wekey/we27/keymaps/default/keymap.c | 52 + .../wekey/we27/keymaps/default/readme.md | 1 + keyboards/wekey/we27/keymaps/via/keymap.c | 52 + keyboards/wekey/we27/keymaps/via/readme.md | 1 + keyboards/wekey/we27/keymaps/via/rules.mk | 2 + keyboards/wekey/we27/readme.md | 19 + keyboards/wekey/we27/rgb_matrix_kb.inc | 27 + keyboards/wekey/we27/rules.mk | 29 + keyboards/wekey/we27/we27.c | 58 + keyboards/wekey/we27/we27.h | 53 + keyboards/westfoxtrot/aanzee/aanzee.h | 55 +- keyboards/westfoxtrot/aanzee/info.json | 4 - .../aanzee/keymaps/default/keymap.c | 12 - .../aanzee/keymaps/iso-default/keymap.c | 12 - .../westfoxtrot/aanzee/keymaps/via/keymap.c | 12 - keyboards/westfoxtrot/aanzee/rules.mk | 12 +- keyboards/westfoxtrot/cyclops/config.h | 68 - keyboards/westfoxtrot/cyclops/cyclops.c | 27 - keyboards/westfoxtrot/cyclops/cyclops.h | 28 +- keyboards/westfoxtrot/cyclops/info.json | 2 - .../cyclops/keymaps/default/keymap.c | 16 - keyboards/westfoxtrot/cyclops/rules.mk | 18 +- keyboards/westfoxtrot/cypher/rev1/info.json | 2 - .../cypher/rev1/keymaps/kwer/keymap.c | 8 +- keyboards/westfoxtrot/cypher/rev1/rules.mk | 18 +- keyboards/westfoxtrot/cypher/rev5/info.json | 2 - keyboards/westfoxtrot/cypher/rev5/rules.mk | 18 +- keyboards/westfoxtrot/prophet/info.json | 2 - keyboards/westfoxtrot/prophet/rules.mk | 5 +- keyboards/whale/sk/v3/info.json | 2 - keyboards/whale/sk/v3/rules.mk | 5 +- keyboards/wheatfield/blocked65/info.json | 2 - keyboards/wheatfield/blocked65/rules.mk | 16 +- keyboards/wheatfield/split75/config.h | 4 + keyboards/wheatfield/split75/info.json | 4 +- keyboards/wheatfield/split75/rules.mk | 11 +- keyboards/wheatfield/split75/split75.c | 24 - keyboards/wheatfield/split75/split75.h | 4 - keyboards/whitefox/config.h | 13 + keyboards/whitefox/gfxconf.h | 27 - keyboards/whitefox/info.json | 2 - .../whitefox/keymaps/billypython/rules.mk | 2 +- keyboards/whitefox/keymaps/kim-kim/keymap.c | 15 - .../whitefox/keymaps/konstantin/rules.mk | 2 +- keyboards/whitefox/keymaps/matt3o/keymap.c | 60 +- .../whitefox/keymaps/mattrighetti/rules.mk | 2 +- keyboards/whitefox/rules.mk | 21 +- keyboards/whitefox/visualizer.c | 54 - keyboards/whitefox/whitefox.c | 76 + .../wilba_tech/rama_works_kara/info.json | 4 +- keyboards/wilba_tech/rama_works_kara/rules.mk | 9 +- .../wilba_tech/rama_works_koyu/info.json | 4 +- keyboards/wilba_tech/rama_works_koyu/rules.mk | 21 +- .../wilba_tech/rama_works_m10_b/config.h | 68 - .../wilba_tech/rama_works_m10_b/info.json | 2 - .../rama_works_m10_b/keymaps/knops/keymap.c | 6 - .../rama_works_m10_b/rama_works_m10_b.h | 19 +- .../wilba_tech/rama_works_m10_b/rules.mk | 18 +- .../wilba_tech/rama_works_m10_c/info.json | 4 +- .../wilba_tech/rama_works_m10_c/rules.mk | 9 +- .../wilba_tech/rama_works_m50_a/info.json | 4 +- .../wilba_tech/rama_works_m50_a/rules.mk | 9 +- .../wilba_tech/rama_works_m50_ax/info.json | 4 +- .../wilba_tech/rama_works_m50_ax/rules.mk | 5 +- .../wilba_tech/rama_works_m60_a/info.json | 4 +- .../wilba_tech/rama_works_m60_a/rules.mk | 21 +- .../wilba_tech/rama_works_m65_b/info.json | 4 +- .../wilba_tech/rama_works_m65_b/rules.mk | 9 +- .../wilba_tech/rama_works_m65_bx/info.json | 4 +- .../wilba_tech/rama_works_m65_bx/rules.mk | 9 +- .../wilba_tech/rama_works_m6_a/info.json | 2 - .../rama_works_m6_a/keymaps/knops/keymap.c | 4 +- .../rama_works_m6_a/rama_works_m6_a.h | 18 +- keyboards/wilba_tech/rama_works_m6_a/rules.mk | 17 +- .../wilba_tech/rama_works_m6_b/info.json | 2 - keyboards/wilba_tech/rama_works_m6_b/rules.mk | 21 +- .../wilba_tech/rama_works_u80_a/config.h | 68 - .../wilba_tech/rama_works_u80_a/info.json | 2 - .../wilba_tech/rama_works_u80_a/rules.mk | 22 +- keyboards/wilba_tech/wt60_a/config.h | 68 - keyboards/wilba_tech/wt60_a/info.json | 4 +- keyboards/wilba_tech/wt60_a/rules.mk | 22 +- keyboards/wilba_tech/wt60_b/info.json | 4 +- keyboards/wilba_tech/wt60_b/rules.mk | 21 +- keyboards/wilba_tech/wt60_bx/info.json | 4 +- keyboards/wilba_tech/wt60_bx/rules.mk | 21 +- keyboards/wilba_tech/wt60_c/info.json | 4 +- keyboards/wilba_tech/wt60_c/rules.mk | 21 +- keyboards/wilba_tech/wt60_d/config.h | 68 - keyboards/wilba_tech/wt60_d/info.json | 4 +- keyboards/wilba_tech/wt60_d/rules.mk | 18 +- keyboards/wilba_tech/wt60_g/info.json | 4 +- keyboards/wilba_tech/wt60_g/rules.mk | 5 +- keyboards/wilba_tech/wt60_g2/info.json | 2 - keyboards/wilba_tech/wt60_g2/rules.mk | 5 +- keyboards/wilba_tech/wt60_h1/info.json | 2 - keyboards/wilba_tech/wt60_h1/rules.mk | 5 +- keyboards/wilba_tech/wt60_h2/info.json | 4 +- keyboards/wilba_tech/wt60_h2/rules.mk | 5 +- keyboards/wilba_tech/wt60_h3/info.json | 2 - keyboards/wilba_tech/wt60_h3/rules.mk | 5 +- keyboards/wilba_tech/wt60_xt/config.h | 68 - keyboards/wilba_tech/wt60_xt/info.json | 2 - keyboards/wilba_tech/wt60_xt/rules.mk | 16 +- keyboards/wilba_tech/wt65_a/config.h | 68 - keyboards/wilba_tech/wt65_a/info.json | 4 +- keyboards/wilba_tech/wt65_a/rules.mk | 22 +- keyboards/wilba_tech/wt65_b/config.h | 68 - keyboards/wilba_tech/wt65_b/info.json | 4 +- keyboards/wilba_tech/wt65_b/rules.mk | 22 +- keyboards/wilba_tech/wt65_f/info.json | 2 - keyboards/wilba_tech/wt65_f/rules.mk | 5 +- keyboards/wilba_tech/wt65_fx/info.json | 4 +- keyboards/wilba_tech/wt65_fx/rules.mk | 5 +- keyboards/wilba_tech/wt65_g/info.json | 4 +- keyboards/wilba_tech/wt65_g/rules.mk | 5 +- keyboards/wilba_tech/wt65_g2/info.json | 2 - keyboards/wilba_tech/wt65_g2/rules.mk | 5 +- keyboards/wilba_tech/wt65_h1/info.json | 2 - keyboards/wilba_tech/wt65_h1/rules.mk | 5 +- keyboards/wilba_tech/wt65_xt/info.json | 2 - keyboards/wilba_tech/wt65_xt/rules.mk | 5 +- keyboards/wilba_tech/wt65_xtx/info.json | 4 +- keyboards/wilba_tech/wt65_xtx/rules.mk | 5 +- keyboards/wilba_tech/wt69_a/config.h | 68 - keyboards/wilba_tech/wt69_a/info.json | 2 - keyboards/wilba_tech/wt69_a/rules.mk | 18 +- keyboards/wilba_tech/wt70_jb/info.json | 4 +- keyboards/wilba_tech/wt70_jb/rules.mk | 5 +- keyboards/wilba_tech/wt75_a/config.h | 68 - keyboards/wilba_tech/wt75_a/info.json | 4 +- keyboards/wilba_tech/wt75_a/rules.mk | 22 +- keyboards/wilba_tech/wt75_b/config.h | 68 - keyboards/wilba_tech/wt75_b/info.json | 3 - keyboards/wilba_tech/wt75_b/rules.mk | 22 +- keyboards/wilba_tech/wt75_c/config.h | 68 - keyboards/wilba_tech/wt75_c/info.json | 4 +- keyboards/wilba_tech/wt75_c/rules.mk | 22 +- keyboards/wilba_tech/wt80_a/config.h | 68 - keyboards/wilba_tech/wt80_a/info.json | 2 - keyboards/wilba_tech/wt80_a/rules.mk | 22 +- keyboards/wilba_tech/wt80_bc/info.json | 2 - keyboards/wilba_tech/wt80_bc/rules.mk | 18 +- keyboards/wilba_tech/wt80_g/info.json | 4 +- keyboards/wilba_tech/wt80_g/rules.mk | 5 +- keyboards/wilba_tech/wt8_a/info.json | 4 +- keyboards/wilba_tech/wt8_a/rules.mk | 18 +- keyboards/wilba_tech/wt_main.c | 2 +- keyboards/wilba_tech/wt_mono_backlight.c | 6 +- keyboards/wilba_tech/wt_rgb_backlight.c | 159 +- keyboards/wilba_tech/zeal60/info.json | 4 +- .../zeal60/keymaps/sethBarberee/rules.mk | 2 +- .../keymaps/tusing/{Makefile => rules.mk} | 0 keyboards/wilba_tech/zeal60/rules.mk | 21 +- keyboards/wilba_tech/zeal65/info.json | 4 +- keyboards/wilba_tech/zeal65/rules.mk | 21 +- keyboards/wings42/config.h | 21 + keyboards/wings42/readme.md | 19 + keyboards/wings42/rev1/config.h | 152 + .../wings42/rev1/keymaps/default/keymap.c | 81 + .../wings42/rev1/keymaps/default/readme.md | 1 + keyboards/wings42/rev1/keymaps/via/keymap.c | 81 + keyboards/wings42/rev1/keymaps/via/rules.mk | 1 + keyboards/wings42/rev1/readme.md | 21 + keyboards/wings42/rev1/rev1.c | 17 + keyboards/wings42/rev1/rev1.h | 44 + keyboards/wings42/rev1/rules.mk | 0 keyboards/wings42/rev1_extkeys/config.h | 152 + .../rev1_extkeys/keymaps/default/keymap.c | 81 + .../rev1_extkeys/keymaps/default/readme.md | 1 + .../wings42/rev1_extkeys/keymaps/via/keymap.c | 81 + .../wings42/rev1_extkeys/keymaps/via/rules.mk | 1 + keyboards/wings42/rev1_extkeys/readme.md | 21 + keyboards/wings42/rev1_extkeys/rev1_extkeys.c | 17 + keyboards/wings42/rev1_extkeys/rev1_extkeys.h | 48 + keyboards/wings42/rev1_extkeys/rules.mk | 0 keyboards/wings42/rules.mk | 23 + keyboards/wings42/wings42.c | 17 + keyboards/wings42/wings42.h | 26 + keyboards/winkeyless/b87/b87.c | 19 + keyboards/winkeyless/b87/b87.h | 40 + keyboards/winkeyless/b87/config.h | 56 + keyboards/winkeyless/b87/info.json | 102 + .../winkeyless/b87/keymaps/default/keymap.c | 55 + keyboards/winkeyless/b87/keymaps/via/config.h | 19 + keyboards/winkeyless/b87/keymaps/via/keymap.c | 46 + keyboards/winkeyless/b87/keymaps/via/rules.mk | 2 + keyboards/winkeyless/b87/readme.md | 23 + keyboards/winkeyless/b87/rules.mk | 18 + keyboards/winkeyless/bface/info.json | 2 - .../winkeyless/bface/keymaps/p3lim/README.md | 13 +- .../winkeyless/bface/keymaps/p3lim/keymap.c | 86 +- .../winkeyless/bface/keymaps/p3lim/rules.mk | 1 + keyboards/winkeyless/bface/rules.mk | 11 +- keyboards/winkeyless/bmini/info.json | 4 - keyboards/winkeyless/bmini/rules.mk | 11 +- keyboards/winkeyless/bminiex/info.json | 2 - keyboards/winkeyless/bminiex/rules.mk | 15 +- keyboards/wolf/kuku65/config.h | 56 + keyboards/wolf/kuku65/info.json | 288 ++ .../wolf/kuku65/keymaps/default/keymap.c | 67 + keyboards/wolf/kuku65/keymaps/via/keymap.c | 85 + keyboards/wolf/kuku65/keymaps/via/rules.mk | 1 + keyboards/wolf/kuku65/kuku65.c | 14 + keyboards/wolf/kuku65/kuku65.h | 32 + keyboards/wolf/kuku65/readme.md | 22 + keyboards/wolf/kuku65/rules.mk | 22 + keyboards/wolf/ts60/config.h | 78 + keyboards/wolf/ts60/info.json | 273 ++ keyboards/wolf/ts60/keymaps/default/keymap.c | 39 + keyboards/wolf/ts60/keymaps/via/keymap.c | 58 + keyboards/wolf/ts60/keymaps/via/rules.mk | 1 + keyboards/wolf/ts60/readme.md | 25 + keyboards/wolf/ts60/rules.mk | 25 + keyboards/wolf/ts60/ts60.c | 14 + keyboards/wolf/ts60/ts60.h | 82 + keyboards/wolfmarkclub/wm1/info.json | 4 +- keyboards/wolfmarkclub/wm1/rules.mk | 10 +- keyboards/work_louder/loop/config.h | 84 +- keyboards/work_louder/loop/info.json | 2 - .../work_louder/loop/keymaps/default/keymap.c | 9 +- .../work_louder/loop/keymaps/via/keymap.c | 12 +- .../work_louder/loop/keymaps/via/rules.mk | 2 + keyboards/work_louder/loop/loop.c | 5 +- keyboards/work_louder/loop/loop.h | 8 - keyboards/work_louder/loop/rules.mk | 10 +- keyboards/work_louder/nano/config.h | 127 +- keyboards/work_louder/nano/info.json | 2 - .../work_louder/nano/keymaps/default/keymap.c | 15 +- .../work_louder/nano/keymaps/via/keymap.c | 7 + .../work_louder/nano/keymaps/via/rules.mk | 2 + keyboards/work_louder/nano/nano.h | 7 - keyboards/work_louder/nano/rules.mk | 9 +- keyboards/work_louder/rgb_functions.c | 157 +- keyboards/work_louder/work_board/config.h | 127 +- keyboards/work_louder/work_board/info.json | 2 - .../work_board/keymaps/default/keymap.c | 24 +- .../work_board/keymaps/drashna/config.h | 17 + .../work_board/keymaps/drashna/keymap.c | 217 ++ .../work_board/keymaps/drashna/rules.mk | 6 + .../work_board/keymaps/via/keymap.c | 46 +- .../work_board/keymaps/via/rules.mk | 2 + keyboards/work_louder/work_board/rules.mk | 7 +- keyboards/work_louder/work_board/work_board.c | 68 +- keyboards/work_louder/work_board/work_board.h | 26 - keyboards/wsk/alpha9/info.json | 2 - keyboards/wsk/alpha9/rules.mk | 5 +- keyboards/wsk/g4m3ralpha/info.json | 2 - keyboards/wsk/g4m3ralpha/rules.mk | 5 +- keyboards/wsk/gothic50/info.json | 2 - keyboards/wsk/gothic50/rules.mk | 18 +- keyboards/wsk/gothic70/info.json | 2 - keyboards/wsk/gothic70/rules.mk | 18 +- keyboards/wsk/houndstooth/info.json | 4 +- keyboards/wsk/houndstooth/rules.mk | 10 +- keyboards/wsk/jerkin/info.json | 2 - keyboards/wsk/jerkin/rules.mk | 13 +- keyboards/wsk/kodachi50/info.json | 2 - keyboards/wsk/kodachi50/rules.mk | 10 +- keyboards/wsk/pain27/info.json | 4 +- keyboards/wsk/pain27/rules.mk | 16 +- keyboards/wsk/sl40/info.json | 5 +- keyboards/wsk/sl40/rules.mk | 10 +- keyboards/wsk/tkl30/info.json | 2 - keyboards/wsk/tkl30/rules.mk | 15 +- keyboards/wuque/ikki68/info.json | 2 - keyboards/wuque/ikki68/rules.mk | 5 +- keyboards/wuque/ikki68_aurora/config.h | 72 + keyboards/wuque/ikki68_aurora/ikki68_aurora.c | 17 + keyboards/wuque/ikki68_aurora/ikki68_aurora.h | 215 + keyboards/wuque/ikki68_aurora/info.json | 549 +++ .../ikki68_aurora/keymaps/68_ansi/keymap.c | 48 + .../ikki68_aurora/keymaps/68_ansi/readme.md | 1 + .../ikki68_aurora/keymaps/68_ansi/rules.mk | 2 + .../ikki68_aurora/keymaps/68_iso/keymap.c | 48 + .../ikki68_aurora/keymaps/68_iso/readme.md | 1 + .../ikki68_aurora/keymaps/68_iso/rules.mk | 2 + .../keymaps/68_split_bs/keymap.c | 48 + .../keymaps/68_split_bs/readme.md | 1 + .../keymaps/68_split_bs/rules.mk | 2 + .../keymaps/68_split_lshift/keymap.c | 48 + .../keymaps/68_split_lshift/readme.md | 1 + .../keymaps/68_split_lshift/rules.mk | 2 + .../keymaps/68_split_rshift/keymap.c | 48 + .../keymaps/68_split_rshift/readme.md | 1 + .../keymaps/68_split_rshift/rules.mk | 2 + .../keymaps/68_split_space/keymap.c | 48 + .../keymaps/68_split_space/readme.md | 1 + .../keymaps/68_split_space/rules.mk | 2 + .../ikki68_aurora/keymaps/default/keymap.c | 34 + .../ikki68_aurora/keymaps/default/readme.md | 1 + .../wuque/ikki68_aurora/keymaps/via/keymap.c | 48 + .../wuque/ikki68_aurora/keymaps/via/readme.md | 1 + .../wuque/ikki68_aurora/keymaps/via/rules.mk | 2 + keyboards/wuque/ikki68_aurora/readme.md | 26 + keyboards/wuque/ikki68_aurora/rules.mk | 21 + keyboards/wuque/mammoth20x/config.h | 54 + keyboards/wuque/mammoth20x/info.json | 42 + .../wuque/mammoth20x/keymaps/default/keymap.c | 36 + .../mammoth20x/keymaps/default/readme.md | 1 + .../wuque/mammoth20x/keymaps/via/keymap.c | 52 + .../wuque/mammoth20x/keymaps/via/readme.md | 1 + .../wuque/mammoth20x/keymaps/via/rules.mk | 2 + keyboards/wuque/mammoth20x/mammoth20x.c | 59 + keyboards/wuque/mammoth20x/mammoth20x.h | 35 + keyboards/wuque/mammoth20x/readme.md | 22 + keyboards/wuque/mammoth20x/rules.mk | 21 + keyboards/wuque/mammoth75x/config.h | 57 + keyboards/wuque/mammoth75x/info.json | 571 +++ .../wuque/mammoth75x/keymaps/75_ansi/keymap.c | 36 + .../mammoth75x/keymaps/75_ansi/readme.md | 1 + .../mammoth75x/keymaps/75_split_bs/keymap.c | 36 + .../mammoth75x/keymaps/75_split_bs/readme.md | 1 + .../keymaps/75_split_lshift/keymap.c | 36 + .../keymaps/75_split_lshift/readme.md | 1 + .../keymaps/75_split_rshift/keymap.c | 36 + .../keymaps/75_split_rshift/readme.md | 1 + .../keymaps/75_split_space/keymap.c | 36 + .../keymaps/75_split_space/readme.md | 1 + .../wuque/mammoth75x/keymaps/default/keymap.c | 36 + .../mammoth75x/keymaps/default/readme.md | 1 + .../wuque/mammoth75x/keymaps/via/keymap.c | 52 + .../wuque/mammoth75x/keymaps/via/readme.md | 1 + .../wuque/mammoth75x/keymaps/via/rules.mk | 2 + keyboards/wuque/mammoth75x/mammoth75x.c | 67 + keyboards/wuque/mammoth75x/mammoth75x.h | 223 ++ keyboards/wuque/mammoth75x/readme.md | 25 + keyboards/wuque/mammoth75x/rules.mk | 20 + keyboards/wuque/serneity65/config.h | 50 + keyboards/wuque/serneity65/info.json | 387 ++ .../wuque/serneity65/keymaps/65_ansi/keymap.c | 34 + .../serneity65/keymaps/65_ansi/readme.md | 1 + .../serneity65/keymaps/65_split_bs/keymap.c | 35 + .../serneity65/keymaps/65_split_bs/readme.md | 1 + .../keymaps/65_split_lshift/keymap.c | 34 + .../keymaps/65_split_lshift/readme.md | 1 + .../keymaps/65_split_space/keymap.c | 34 + .../keymaps/65_split_space/readme.md | 1 + .../wuque/serneity65/keymaps/default/keymap.c | 34 + .../serneity65/keymaps/default/readme.md | 1 + .../wuque/serneity65/keymaps/via/keymap.c | 48 + .../wuque/serneity65/keymaps/via/readme.md | 1 + .../wuque/serneity65/keymaps/via/rules.mk | 2 + keyboards/wuque/serneity65/readme.md | 24 + keyboards/wuque/serneity65/rules.mk | 22 + keyboards/wuque/serneity65/serneity65.c | 71 + keyboards/wuque/serneity65/serneity65.h | 159 + keyboards/x16/config.h | 73 - keyboards/x16/info.json | 3 - keyboards/x16/rules.mk | 13 +- keyboards/xbows/knight/config.h | 130 +- keyboards/xbows/knight/info.json | 40 +- .../xbows/knight/keymaps/default/config.h | 43 + .../xbows/knight/keymaps/default/keymap.c | 55 +- keyboards/xbows/knight/keymaps/via/config.h | 63 + keyboards/xbows/knight/keymaps/via/keymap.c | 63 + keyboards/xbows/knight/keymaps/via/rules.mk | 1 + keyboards/xbows/knight/knight.c | 146 +- keyboards/xbows/knight/knight.h | 52 +- keyboards/xbows/knight/readme.md | 26 +- keyboards/xbows/knight/rules.mk | 27 +- keyboards/xbows/knight_plus/config.h | 104 + keyboards/xbows/knight_plus/info.json | 103 + .../knight_plus/keymaps/default/config.h | 43 + .../knight_plus/keymaps/default/keymap.c | 49 + .../xbows/knight_plus/keymaps/via/config.h | 63 + .../xbows/knight_plus/keymaps/via/keymap.c | 63 + .../xbows/knight_plus/keymaps/via/rules.mk | 1 + keyboards/xbows/knight_plus/knight_plus.c | 145 + keyboards/xbows/knight_plus/knight_plus.h | 33 + keyboards/xbows/knight_plus/readme.md | 29 + keyboards/xbows/knight_plus/rules.mk | 21 + keyboards/xbows/nature/config.h | 77 +- keyboards/xbows/nature/info.json | 2 - keyboards/xbows/nature/keymaps/via/keymap.c | 63 + keyboards/xbows/nature/keymaps/via/rules.mk | 1 + keyboards/xbows/nature/nature.c | 2 +- keyboards/xbows/nature/rules.mk | 6 +- keyboards/xbows/numpad/config.h | 99 + keyboards/xbows/numpad/info.json | 39 + .../xbows/numpad/keymaps/default/config.h | 44 + .../xbows/numpad/keymaps/default/keymap.c | 49 + keyboards/xbows/numpad/keymaps/via/config.h | 63 + keyboards/xbows/numpad/keymaps/via/keymap.c | 63 + keyboards/xbows/numpad/keymaps/via/rules.mk | 1 + keyboards/xbows/numpad/numpad.c | 80 + keyboards/xbows/numpad/numpad.h | 33 + keyboards/xbows/numpad/readme.md | 29 + keyboards/xbows/numpad/rules.mk | 21 + keyboards/xbows/ranger/config.h | 104 + keyboards/xbows/ranger/info.json | 106 + .../xbows/ranger/keymaps/default/config.h | 44 + .../xbows/ranger/keymaps/default/keymap.c | 49 + keyboards/xbows/ranger/keymaps/via/config.h | 63 + keyboards/xbows/ranger/keymaps/via/keymap.c | 63 + keyboards/xbows/ranger/keymaps/via/rules.mk | 1 + keyboards/xbows/ranger/ranger.c | 146 + keyboards/xbows/ranger/ranger.h | 33 + keyboards/xbows/ranger/readme.md | 29 + keyboards/xbows/ranger/rules.mk | 21 + keyboards/xbows/woody/config.h | 81 +- keyboards/xbows/woody/info.json | 2 - keyboards/xbows/woody/rules.mk | 3 +- keyboards/xbows/woody/woody.c | 11 +- keyboards/xd002/info.json | 16 - .../xd002/keymaps/multilayer_rgb/keymap.c | 173 - .../xd002/keymaps/multilayer_rgb/rgblite.h | 9 - keyboards/xd002/keymaps/rgb_lite/keymap.c | 31 - keyboards/xd002/keymaps/rgb_lite/rgblite.h | 26 - keyboards/xd002/keymaps/tap_dance/config.h | 3 - keyboards/xd002/readme.md | 49 - keyboards/xd002/rules.mk | 32 - keyboards/xd004/info.json | 11 - keyboards/xd004/keymaps/default/keymap.c | 13 - .../xd004/keymaps/system_and_media/readme.md | 9 - keyboards/xd004/readme.md | 30 - keyboards/xd004/v1/rules.mk | 32 - keyboards/xd004/xd004.c | 7 - keyboards/xd60/info.json | 164 - keyboards/xd60/keymaps/Jos/README.md | 22 - keyboards/xd60/keymaps/birkir/keymap.c | 66 - keyboards/xd60/keymaps/birkir/readme.md | 45 - keyboards/xd60/keymaps/default/keymap.c | 26 - keyboards/xd60/keymaps/default/readme.md | 13 - keyboards/xd60/keymaps/edulpn/readme.md | 9 - keyboards/xd60/keymaps/edulpn64/readme.md | 9 - keyboards/xd60/keymaps/iso/keymap.c | 33 - keyboards/xd60/keymaps/iso/readme.md | 20 - keyboards/xd60/keymaps/kmontag42/readme.md | 18 - keyboards/xd60/keymaps/krusli/readme.md | 7 - keyboards/xd60/keymaps/melka/readme.md | 21 - keyboards/xd60/keymaps/petesmom/README.md | 26 - .../xd60/keymaps/semicolonsnet/readme.md | 13 - keyboards/xd60/keymaps/shura30/keymap.c | 78 - keyboards/xd60/keymaps/shura30/readme.md | 33 - keyboards/xd60/keymaps/styr/readme.md | 7 - keyboards/xd60/keymaps/supercoffee/readme.md | 9 - keyboards/xd60/keymaps/yuuki/README.md | 31 - keyboards/xd60/readme.md | 17 - keyboards/xd60/rev2/rules.mk | 29 - keyboards/xd60/rev3/rules.mk | 29 - keyboards/xd68/info.json | 229 -- keyboards/xd68/keymaps/default/readme.md | 5 - keyboards/xd68/keymaps/default_iso/readme.md | 5 - keyboards/xd68/readme.md | 53 - keyboards/xd68/rules.mk | 33 - keyboards/xd75/info.json | 92 - keyboards/xd75/keymaps/4sstylz/rules.mk | 30 - keyboards/xd75/keymaps/arpinfidel/keymap.c | 114 - keyboards/xd75/keymaps/arpinfidel/rules.mk | 16 - keyboards/xd75/keymaps/bbaserdem/readme.md | 14 - keyboards/xd75/keymaps/billypython/rules.mk | 15 - keyboards/xd75/keymaps/buzzlighter1/readme.md | 54 - keyboards/xd75/keymaps/buzzlighter1/rules.mk | 4 - .../xd75/keymaps/c4software_bepo/keymap.c | 68 - keyboards/xd75/keymaps/cbbrowne/keymap.c | 310 -- keyboards/xd75/keymaps/cbbrowne/rules.mk | 20 - keyboards/xd75/keymaps/clanghans/readme.md | 11 - keyboards/xd75/keymaps/colinta/readme.md | 64 - keyboards/xd75/keymaps/davidrambo/keymap.c | 158 - keyboards/xd75/keymaps/davidrambo/readme.md | 7 - .../xd75/keymaps/developper_bepo/keymap.c | 72 - .../xd75/keymaps/developper_bepo/readme.md | 13 - keyboards/xd75/keymaps/fabian/rules.mk | 34 - keyboards/xd75/keymaps/french/keymap.c | 56 - keyboards/xd75/keymaps/french/readme.md | 20 - keyboards/xd75/keymaps/germanized/config.h | 117 - keyboards/xd75/keymaps/germanized/keymap.c | 86 - keyboards/xd75/keymaps/germanized/rules.mk | 35 - keyboards/xd75/keymaps/markus/keymap.c | 215 - keyboards/xd75/keymaps/markus/rules.mk | 13 - keyboards/xd75/keymaps/pitty/keymap.c | 148 - keyboards/xd75/keymaps/revok75/rules.mk | 18 - keyboards/xd75/keymaps/scheiklp/readme.md | 9 - keyboards/xd75/keymaps/scheiklp/rules.mk | 6 - keyboards/xd75/keymaps/skewwhiffy/keymap.c | 233 -- keyboards/xd75/keymaps/tdl-jturner/keymap.c | 312 -- keyboards/xd75/keymaps/tdl-jturner/readme.md | 12 - keyboards/xd75/readme.md | 57 - keyboards/xd75/rules.mk | 24 - keyboards/xd84/config.h | 211 - keyboards/xd84/info.json | 188 - keyboards/xd84/readme.md | 23 - keyboards/xd84/rules.mk | 41 - keyboards/xd84pro/info.json | 277 -- keyboards/xd84pro/readme.md | 24 - keyboards/xd84pro/rules.mk | 24 - keyboards/xd87/config.h | 193 - keyboards/xd87/info.json | 291 -- keyboards/xd87/keymaps/default/keymap.c | 68 - .../xd87/keymaps/default_underglow/keymap.c | 74 - .../xd87/keymaps/default_underglow/rules.mk | 3 - keyboards/xd87/keymaps/mac_underglow/rules.mk | 3 - keyboards/xd87/readme.md | 26 - keyboards/xd87/rules.mk | 34 - keyboards/xd87/xd87.h | 70 - keyboards/xd96/config.h | 212 - keyboards/xd96/info.json | 351 -- keyboards/xd96/readme.md | 22 - keyboards/xd96/rules.mk | 39 - keyboards/xelus/akis/akis.h | 2 +- keyboards/xelus/akis/info.json | 8 +- keyboards/xelus/akis/keymaps/default/keymap.c | 4 +- keyboards/xelus/akis/keymaps/via/keymap.c | 8 +- keyboards/xelus/akis/rules.mk | 5 +- keyboards/xelus/dawn60/info.json | 148 +- .../xelus/dawn60/keymaps/default/keymap.c | 8 +- keyboards/xelus/dawn60/keymaps/via/keymap.c | 8 +- keyboards/xelus/dawn60/rev1/rev1.h | 47 +- keyboards/xelus/dawn60/rev1/rules.mk | 20 +- keyboards/xelus/dawn60/rev1_qmk/config.h | 49 + keyboards/xelus/dawn60/rev1_qmk/rev1_qmk.c | 4 +- keyboards/xelus/dawn60/rev1_qmk/rev1_qmk.h | 47 +- keyboards/xelus/dawn60/rev1_qmk/rules.mk | 20 +- keyboards/xelus/dharma/config.h | 51 + keyboards/xelus/dharma/dharma.c | 17 + keyboards/xelus/dharma/dharma.h | 35 + keyboards/xelus/dharma/info.json | 97 + .../xelus/dharma/keymaps/default/config.h | 19 + .../xelus/dharma/keymaps/default/keymap.c | 37 + .../xelus/dharma/keymaps/default/readme.md | 2 + keyboards/xelus/dharma/keymaps/via/config.h | 19 + keyboards/xelus/dharma/keymaps/via/keymap.c | 53 + keyboards/xelus/dharma/keymaps/via/readme.md | 2 + keyboards/xelus/dharma/keymaps/via/rules.mk | 1 + keyboards/xelus/dharma/readme.md | 20 + keyboards/xelus/dharma/rules.mk | 19 + keyboards/xelus/kangaroo/config.h | 4 +- keyboards/xelus/kangaroo/info.json | 2 - .../xelus/kangaroo/keymaps/default/config.h | 19 + keyboards/xelus/kangaroo/keymaps/via/config.h | 19 + keyboards/xelus/kangaroo/rules.mk | 4 +- keyboards/xelus/ninjin/info.json | 105 + .../xelus/ninjin/keymaps/default/keymap.c | 4 +- keyboards/xelus/ninjin/keymaps/via/keymap.c | 6 +- keyboards/xelus/ninjin/ninjin.h | 2 +- keyboards/xelus/ninjin/rules.mk | 5 +- keyboards/xelus/pachi/mini_32u4/rules.mk | 5 +- keyboards/xelus/pachi/readme.md | 3 +- keyboards/xelus/pachi/rev1/rules.mk | 5 +- keyboards/xelus/pachi/rgb/config.h | 61 +- keyboards/xelus/pachi/rgb/rev1/config.h | 120 + .../xelus/pachi/rgb/{ => rev1}/halconf.h | 0 .../xelus/pachi/rgb/{ => rev1}/mcuconf.h | 0 keyboards/xelus/pachi/rgb/rev1/readme.md | 17 + keyboards/xelus/pachi/rgb/rev1/rev1.c | 239 ++ keyboards/xelus/pachi/rgb/rev1/rev1.h | 36 + keyboards/xelus/pachi/rgb/rev1/rules.mk | 30 + keyboards/xelus/pachi/rgb/rev2/config.h | 121 + keyboards/xelus/pachi/rgb/rev2/halconf.h | 27 + keyboards/xelus/pachi/rgb/rev2/mcuconf.h | 28 + keyboards/xelus/pachi/rgb/rev2/readme.md | 18 + keyboards/xelus/pachi/rgb/rev2/rev2.c | 245 ++ keyboards/xelus/pachi/rgb/rev2/rev2.h | 42 + keyboards/xelus/pachi/rgb/rev2/rules.mk | 29 + keyboards/xelus/pachi/rgb/rgb.c | 223 -- keyboards/xelus/pachi/rgb/rgb.h | 22 +- keyboards/xelus/pachi/rgb/rules.mk | 32 - keyboards/xelus/rs60/config.h | 49 + keyboards/xelus/rs60/info.json | 74 + keyboards/xelus/rs60/keymaps/default/config.h | 19 + keyboards/xelus/rs60/keymaps/default/keymap.c | 34 + keyboards/xelus/rs60/keymaps/via/config.h | 19 + keyboards/xelus/rs60/keymaps/via/keymap.c | 50 + keyboards/xelus/rs60/keymaps/via/rules.mk | 2 + keyboards/xelus/rs60/readme.md | 19 + keyboards/xelus/rs60/rs60.c | 16 + keyboards/xelus/rs60/rs60.h | 34 + keyboards/xelus/rs60/rules.mk | 21 + keyboards/xelus/snap96/info.json | 2 - keyboards/xelus/snap96/rules.mk | 18 +- keyboards/xelus/trinityxttkl/info.json | 2 - keyboards/xelus/trinityxttkl/rules.mk | 3 +- keyboards/xelus/valor/rev1/info.json | 2 - keyboards/xelus/valor/rev1/rules.mk | 5 +- keyboards/xelus/valor/rev2/config.h | 137 + keyboards/xelus/valor/rev2/halconf.h | 23 + keyboards/xelus/valor/rev2/info.json | 81 + .../xelus/valor/rev2/keymaps/default/config.h | 18 + .../xelus/valor/rev2/keymaps/default/keymap.c | 79 + .../valor/rev2/keymaps/default/readme.md | 2 + .../xelus/valor/rev2/keymaps/via/config.h | 24 + .../xelus/valor/rev2/keymaps/via/keymap.c | 127 + .../xelus/valor/rev2/keymaps/via/readme.md | 2 + .../xelus/valor/rev2/keymaps/via/rules.mk | 1 + keyboards/xelus/valor/rev2/mcuconf.h | 30 + keyboards/xelus/valor/rev2/readme.md | 20 + keyboards/xelus/valor/rev2/rev2.c | 72 + keyboards/xelus/valor/rev2/rev2.h | 37 + keyboards/xelus/valor/rev2/rgb_matrix_kb.inc | 34 + keyboards/xelus/valor/rev2/rules.mk | 29 + keyboards/xelus/valor_frl_tkl/config.h | 4 +- keyboards/xelus/valor_frl_tkl/info.json | 2 - keyboards/xelus/valor_frl_tkl/rules.mk | 5 +- keyboards/xiaomi/mk02/info.json | 2 - keyboards/xiaomi/mk02/rules.mk | 4 +- keyboards/xiudi/xd002/.noci | 0 keyboards/{ => xiudi}/xd002/config.h | 0 keyboards/xiudi/xd002/info.json | 13 + .../xd002/keymaps/default/keymap.c | 0 .../xd002/keymaps/multilayer_rgb/config.h | 0 .../xd002/keymaps/multilayer_rgb/keymap.c | 173 + .../xd002/keymaps/multilayer_rgb/rgblite.h | 9 + .../xd002/keymaps/multilayer_rgb/rules.mk | 0 .../{ => xiudi}/xd002/keymaps/rgb/keymap.c | 0 .../{ => xiudi}/xd002/keymaps/rgb/rules.mk | 0 .../xiudi/xd002/keymaps/rgb_lite/keymap.c | 31 + .../xiudi/xd002/keymaps/rgb_lite/rgblite.h | 26 + .../xd002/keymaps/rgb_lite/rules.mk | 0 .../xd002}/keymaps/tap_dance/config.h | 0 .../xd002/keymaps/tap_dance/keymap.c | 0 .../xiudi/xd002/keymaps/tap_dance/rules.mk | 1 + .../{ => xiudi}/xd002/keymaps/volume/keymap.c | 0 .../{ => xiudi}/xd002/keymaps/volume/rules.mk | 0 keyboards/xiudi/xd002/readme.md | 49 + keyboards/xiudi/xd002/rules.mk | 27 + keyboards/{ => xiudi}/xd002/xd002.c | 0 keyboards/{ => xiudi}/xd002/xd002.h | 0 keyboards/xiudi/xd004/info.json | 9 + .../xiudi/xd004/keymaps/default/keymap.c | 8 + .../xd004/keymaps/default/readme.md | 0 keyboards/xiudi/xd004/keymaps/narze/keymap.c | 24 + keyboards/xiudi/xd004/keymaps/narze/readme.md | 13 + .../xd004/keymaps/system_and_media/keymap.c | 0 .../xd004/keymaps/system_and_media/readme.md | 9 + keyboards/xiudi/xd004/readme.md | 33 + keyboards/{ => xiudi}/xd004/v1/config.h | 0 keyboards/xiudi/xd004/v1/rules.mk | 21 + keyboards/xiudi/xd004/xd004.c | 1 + keyboards/{ => xiudi}/xd004/xd004.h | 0 keyboards/xiudi/xd60/info.json | 162 + keyboards/xiudi/xd60/keymaps/Jos/README.md | 22 + .../{ => xiudi}/xd60/keymaps/Jos/config.h | 0 .../{ => xiudi}/xd60/keymaps/Jos/keymap.c | 0 .../{ => xiudi}/xd60/keymaps/Jos/rules.mk | 0 .../ansi_split_bs_rshift_space/keymap.c | 33 + .../ansi_split_bs_rshift_space/readme.md | 13 + keyboards/xiudi/xd60/keymaps/birkir/keymap.c | 66 + keyboards/xiudi/xd60/keymaps/birkir/readme.md | 45 + .../{ => xiudi}/xd60/keymaps/cheese/README.md | 0 .../{ => xiudi}/xd60/keymaps/cheese/keymap.c | 0 .../xd60/keymaps/crd_ansi/README.md | 0 .../xd60/keymaps/crd_ansi/keymap.c | 0 keyboards/xiudi/xd60/keymaps/default/keymap.c | 21 + .../xiudi/xd60/keymaps/default/readme.md | 13 + .../{ => xiudi}/xd60/keymaps/edulpn/keymap.c | 0 keyboards/xiudi/xd60/keymaps/edulpn/readme.md | 9 + .../xd60/keymaps/edulpn64/keymap.c | 0 .../xiudi/xd60/keymaps/edulpn64/readme.md | 9 + keyboards/xiudi/xd60/keymaps/finnish/keymap.c | 25 + .../xiudi/xd60/keymaps/finnish/readme.md | 20 + .../xd60/keymaps/fvolpe83}/config.h | 0 .../xiudi/xd60/keymaps/fvolpe83/keymap.c | 78 + .../xiudi/xd60/keymaps/fvolpe83/readme.md | 33 + .../xiudi/xd60/keymaps/fvolpe83/rules.mk | 1 + keyboards/xiudi/xd60/keymaps/iso/keymap.c | 28 + keyboards/xiudi/xd60/keymaps/iso/readme.md | 20 + .../xd60/keymaps/kmontag42/keymap.c | 0 .../xiudi/xd60/keymaps/kmontag42/readme.md | 18 + .../xd60/keymaps/kmontag42/rules.mk | 0 .../{ => xiudi}/xd60/keymaps/krusli/keymap.c | 0 keyboards/xiudi/xd60/keymaps/krusli/readme.md | 7 + .../{ => xiudi}/xd60/keymaps/melka/.gitignore | 0 .../{ => xiudi}/xd60/keymaps/melka/config.h | 0 .../{ => xiudi}/xd60/keymaps/melka/keymap.c | 0 .../xd60/keymaps/melka/passwd_template.h | 0 keyboards/xiudi/xd60/keymaps/melka/readme.md | 21 + .../xiudi/xd60/keymaps/petesmom/README.md | 26 + .../xd60/keymaps/petesmom/keymap.c | 0 .../xd60/keymaps/rooski/instructions.txt | 0 .../{ => xiudi}/xd60/keymaps/rooski/keymap.c | 0 .../xd60/keymaps/semicolonsnet/keymap.c | 0 .../xd60/keymaps/semicolonsnet/readme.md | 13 + .../xd60/keymaps/split_bksp_arrows/keymap.c | 0 .../xd60/keymaps/split_bksp_arrows/readme.md | 0 .../xd60/keymaps/stanleylai/keymap.c | 0 .../{ => xiudi}/xd60/keymaps/styr/keymap.c | 0 keyboards/xiudi/xd60/keymaps/styr/readme.md | 7 + .../xd60/keymaps/supercoffee/keymap.c | 0 .../xiudi/xd60/keymaps/supercoffee/readme.md | 9 + .../xd60/keymaps/suryanisaac/README.md | 0 .../xd60/keymaps/suryanisaac/keymap.c | 0 .../{ => xiudi}/xd60/keymaps/via/keymap.c | 0 .../{ => xiudi}/xd60/keymaps/via/readme.md | 0 keyboards/xiudi/xd60/keymaps/via/rules.mk | 1 + keyboards/xiudi/xd60/keymaps/yuuki/README.md | 31 + .../{ => xiudi}/xd60/keymaps/yuuki/keymap.c | 0 keyboards/xiudi/xd60/readme.md | 17 + keyboards/xiudi/xd60/rev2/.noci | 0 keyboards/{ => xiudi}/xd60/rev2/config.h | 0 keyboards/xiudi/xd60/rev2/rules.mk | 18 + keyboards/{ => xiudi}/xd60/rev3/config.h | 0 keyboards/xiudi/xd60/rev3/rules.mk | 18 + keyboards/{ => xiudi}/xd60/xd60.c | 0 keyboards/{ => xiudi}/xd60/xd60.h | 14 + keyboards/{ => xiudi}/xd68/config.h | 0 keyboards/xiudi/xd68/info.json | 225 ++ .../{ => xiudi}/xd68/keymaps/default/keymap.c | 0 .../xiudi/xd68/keymaps/default/readme.md | 5 + .../xd68/keymaps/default_iso/keymap.c | 0 .../xiudi/xd68/keymaps/default_iso/readme.md | 5 + .../{ => xiudi}/xd68/keymaps/via/keymap.c | 0 .../{ => xiudi}/xd68/keymaps/via/readme.md | 0 keyboards/xiudi/xd68/keymaps/via/rules.mk | 1 + keyboards/xiudi/xd68/readme.md | 53 + keyboards/xiudi/xd68/rules.mk | 21 + keyboards/{ => xiudi}/xd68/xd68.c | 0 keyboards/{ => xiudi}/xd68/xd68.h | 0 keyboards/{ => xiudi}/xd75/config.h | 0 keyboards/xiudi/xd75/info.json | 90 + .../{ => xiudi}/xd75/keymaps/4sstylz/config.h | 0 .../xd75/keymaps/4sstylz/keycodes.h | 0 .../{ => xiudi}/xd75/keymaps/4sstylz/keymap.c | 0 .../{ => xiudi}/xd75/keymaps/4sstylz/leds.h | 0 .../xd75/keymaps/4sstylz/readme.md | 0 keyboards/xiudi/xd75/keymaps/4sstylz/rules.mk | 30 + .../{ => xiudi}/xd75/keymaps/adi/config.h | 0 .../{ => xiudi}/xd75/keymaps/adi/keymap.c | 0 .../{ => xiudi}/xd75/keymaps/adi/readme.md | 0 .../{ => xiudi}/xd75/keymaps/adi/rules.mk | 0 .../xd75/keymaps/arpinfidel/config.h | 0 .../xiudi/xd75/keymaps/arpinfidel/keymap.c | 114 + .../xd75/keymaps/arpinfidel/readme.md | 0 .../xiudi/xd75/keymaps/arpinfidel/rules.mk | 16 + .../xd75/keymaps/atomic_style/config.h | 0 .../xd75/keymaps/atomic_style/keymap.c | 0 .../xd75/keymaps/atomic_style/readme.md | 0 .../xd75/keymaps/atomic_style/rules.mk | 0 .../xd75/keymaps/atomic_style_jp/keymap.c | 0 .../xd75/keymaps/atomic_style_jp/readme.md | 0 .../xd75/keymaps/bbaserdem/config.h | 0 .../xd75/keymaps/bbaserdem/keymap.c | 0 .../xiudi/xd75/keymaps/bbaserdem/readme.md | 14 + .../xd75/keymaps/bbaserdem/rules.mk | 0 .../xd75/keymaps/billypython/config.h | 0 .../xd75/keymaps/billypython/keymap.c | 0 .../xiudi/xd75/keymaps/billypython/rules.mk | 15 + .../{ => xiudi}/xd75/keymaps/boy_314/config.h | 0 .../{ => xiudi}/xd75/keymaps/boy_314/keymap.c | 0 .../xd75/keymaps/boy_314/readme.md | 0 keyboards/xiudi/xd75/keymaps/boy_314/rules.mk | 0 .../{ => xiudi}/xd75/keymaps/bramver/config.h | 0 .../{ => xiudi}/xd75/keymaps/bramver/keymap.c | 0 .../xd75/keymaps/bramver/readme.md | 0 .../{ => xiudi}/xd75/keymaps/bramver/rules.mk | 0 .../xd75/keymaps/bulbizarre/config.h | 0 .../xd75/keymaps/bulbizarre/keymap.c | 0 .../xd75/keymaps/bulbizarre/readme.md | 0 .../xd75/keymaps/bulbizarre/rules.mk | 0 .../xd75/keymaps/buzzlighter1/config.h | 0 .../xd75/keymaps/buzzlighter1/keymap.c | 0 .../xiudi/xd75/keymaps/buzzlighter1/readme.md | 54 + .../xiudi/xd75/keymaps/buzzlighter1/rules.mk | 4 + .../xd75/keymaps/c4software_bepo/config.h | 0 .../xd75/keymaps/c4software_bepo/keymap.c | 68 + .../xd75/keymaps/c4software_bepo/readme.md | 0 .../xd75/keymaps/c4software_bepo/rules.mk | 0 .../xd75/keymaps/cbbrowne/config.h | 0 .../xiudi/xd75/keymaps/cbbrowne/keymap.c | 310 ++ .../xd75/keymaps/cbbrowne/readme.md | 0 .../xiudi/xd75/keymaps/cbbrowne/rules.mk | 19 + .../xd75/keymaps/clanghans/config.h | 0 .../xd75/keymaps/clanghans/keymap.c | 0 .../xiudi/xd75/keymaps/clanghans/readme.md | 11 + .../{ => xiudi}/xd75/keymaps/colinta/config.h | 0 .../{ => xiudi}/xd75/keymaps/colinta/keymap.c | 0 .../xiudi/xd75/keymaps/colinta/readme.md | 64 + .../{ => xiudi}/xd75/keymaps/daniel/keymap.c | 0 .../{ => xiudi}/xd75/keymaps/daniel/readme.md | 0 .../xd75/keymaps/davidrambo/config.h | 0 .../xiudi/xd75/keymaps/davidrambo/keymap.c | 194 + .../xiudi/xd75/keymaps/davidrambo/readme.md | 8 + .../xd75/keymaps/davidrambo/rules.mk | 0 .../{ => xiudi}/xd75/keymaps/default/keymap.c | 0 .../xd75/keymaps/default/readme.md | 0 .../xd75/keymaps/developper_bepo/config.h | 0 .../xd75/keymaps/developper_bepo/keymap.c | 72 + .../xd75/keymaps/developper_bepo/readme.md | 13 + .../xd75/keymaps/developper_bepo/rules.mk | 0 .../xd75/keymaps/dyn_macro_tap_dance/config.h | 0 .../xd75/keymaps/dyn_macro_tap_dance/keymap.c | 0 .../keymaps/dyn_macro_tap_dance/readme.md | 0 .../xd75/keymaps/dyn_macro_tap_dance/rules.mk | 0 .../{ => xiudi}/xd75/keymaps/emilyh/config.h | 0 .../{ => xiudi}/xd75/keymaps/emilyh/keymap.c | 0 .../{ => xiudi}/xd75/keymaps/emilyh/readme.md | 0 .../{ => xiudi}/xd75/keymaps/emilyh/rules.mk | 0 .../xd75/keymaps/ericgebhart/config.h | 0 .../xd75/keymaps/ericgebhart/keymap.c | 0 .../xd75/keymaps/ericgebhart/readme.md | 0 .../xd75/keymaps/ericgebhart/rules.mk | 0 .../{ => xiudi}/xd75/keymaps/fabian/config.h | 0 .../{ => xiudi}/xd75/keymaps/fabian/keymap.c | 0 keyboards/xiudi/xd75/keymaps/fabian/rules.mk | 34 + .../{ => xiudi}/xd75/keymaps/french/config.h | 0 keyboards/xiudi/xd75/keymaps/french/keymap.c | 56 + .../xd75/keymaps/french/keymap_french.c | 8 +- keyboards/xiudi/xd75/keymaps/french/readme.md | 20 + .../{ => xiudi}/xd75/keymaps/french/rules.mk | 0 .../xiudi/xd75/keymaps/germanized/config.h | 117 + .../xiudi/xd75/keymaps/germanized/keymap.c | 86 + .../xd75/keymaps/germanized/readme.md | 0 .../xiudi/xd75/keymaps/germanized/rules.mk | 35 + .../{ => xiudi}/xd75/keymaps/hybrid/config.h | 0 .../{ => xiudi}/xd75/keymaps/hybrid/keymap.c | 0 .../{ => xiudi}/xd75/keymaps/hybrid/readme.md | 0 .../{ => xiudi}/xd75/keymaps/hybrid/rules.mk | 0 .../{ => xiudi}/xd75/keymaps/jarred/keymap.c | 0 .../{ => xiudi}/xd75/keymaps/jarred/readme.md | 0 .../xd75/keymaps/kim-kim-xd73/config.h | 0 .../xd75/keymaps/kim-kim-xd73/keymap.c | 0 .../xd75/keymaps/kim-kim-xd73/rules.mk | 0 .../{ => xiudi}/xd75/keymaps/kim-kim/config.h | 0 .../{ => xiudi}/xd75/keymaps/kim-kim/keymap.c | 0 .../{ => xiudi}/xd75/keymaps/kim-kim/rules.mk | 0 .../{ => xiudi}/xd75/keymaps/kloki/config.h | 0 .../{ => xiudi}/xd75/keymaps/kloki/keymap.c | 0 .../{ => xiudi}/xd75/keymaps/kloki/readme.md | 0 .../{ => xiudi}/xd75/keymaps/kloki/rules.mk | 0 .../{ => xiudi}/xd75/keymaps/markus/config.h | 0 keyboards/xiudi/xd75/keymaps/markus/keymap.c | 215 + .../{ => xiudi}/xd75/keymaps/markus/readme.md | 0 keyboards/xiudi/xd75/keymaps/markus/rules.mk | 13 + .../{ => xiudi}/xd75/keymaps/msiu/config.h | 0 .../{ => xiudi}/xd75/keymaps/msiu/keymap.c | 0 .../{ => xiudi}/xd75/keymaps/msiu/readme.md | 0 .../{ => xiudi}/xd75/keymaps/mtdjr/config.h | 0 .../{ => xiudi}/xd75/keymaps/mtdjr/keymap.c | 0 .../{ => xiudi}/xd75/keymaps/mtdjr/readme.md | 0 .../{ => xiudi}/xd75/keymaps/mtdjr/rules.mk | 0 .../xd75/keymaps/neothefox/keymap.c | 0 .../xd75/keymaps/neothefox/readme.md | 0 .../{ => xiudi}/xd75/keymaps/odyssey/config.h | 0 .../{ => xiudi}/xd75/keymaps/odyssey/keymap.c | 0 .../xd75/keymaps/odyssey/readme.md | 0 .../{ => xiudi}/xd75/keymaps/odyssey/rules.mk | 0 .../{ => xiudi}/xd75/keymaps/pitty/config.h | 0 keyboards/xiudi/xd75/keymaps/pitty/keymap.c | 148 + .../{ => xiudi}/xd75/keymaps/pitty/readme.md | 0 .../{ => xiudi}/xd75/keymaps/pitty/rules.mk | 0 .../xd75/keymaps/replicajunction/config.h | 51 + .../xd75/keymaps/replicajunction/keymap.c | 138 + .../xd75/keymaps/replicajunction/readme.md | 5 + .../xd75/keymaps/replicajunction/rules.mk | 29 + .../{ => xiudi}/xd75/keymaps/revok75/config.h | 0 .../{ => xiudi}/xd75/keymaps/revok75/keymap.c | 0 .../xd75/keymaps/revok75/readme.md | 0 keyboards/xiudi/xd75/keymaps/revok75/rules.mk | 18 + .../xd75/keymaps/scheiklp/config.h | 0 .../xd75/keymaps/scheiklp/keymap.c | 0 .../xiudi/xd75/keymaps/scheiklp/readme.md | 9 + .../xiudi/xd75/keymaps/scheiklp/rules.mk | 6 + .../xiudi/xd75/keymaps/skewwhiffy/keymap.c | 233 ++ .../xd75/keymaps/skewwhiffy/readme.md | 0 .../xd75/keymaps/skewwhiffy/rules.mk | 0 .../xd75/keymaps/tdl-jturner/config.h | 0 .../xiudi/xd75/keymaps/tdl-jturner/keymap.c | 312 ++ .../xiudi/xd75/keymaps/tdl-jturner/readme.md | 12 + .../xd75/keymaps/tdl-jturner/rules.mk | 0 .../xd75/keymaps/tomswartz07/keymap.c | 0 .../{ => xiudi}/xd75/keymaps/via/keymap.c | 0 .../{ => xiudi}/xd75/keymaps/via/readme.md | 0 keyboards/xiudi/xd75/keymaps/via/rules.mk | 1 + .../{ => xiudi}/xd75/keymaps/xo/config.h | 0 .../{ => xiudi}/xd75/keymaps/xo/keymap.c | 0 .../{ => xiudi}/xd75/keymaps/xo/readme.md | 0 .../{ => xiudi}/xd75/keymaps/xo/rules.mk | 0 keyboards/xiudi/xd75/readme.md | 57 + keyboards/xiudi/xd75/rules.mk | 21 + keyboards/{ => xiudi}/xd75/xd75.c | 0 keyboards/{ => xiudi}/xd75/xd75.h | 0 keyboards/xiudi/xd84/config.h | 139 + keyboards/{ => xiudi}/xd84/dev.md | 0 keyboards/xiudi/xd84/info.json | 184 + .../{ => xiudi}/xd84/keymaps/default/keymap.c | 0 .../xd84/keymaps/default_iso/keymap.c | 0 .../{ => xiudi}/xd84/keymaps/via/keymap.c | 0 .../{ => xiudi}/xd84/keymaps/via/readme.md | 0 keyboards/xiudi/xd84/keymaps/via/rules.mk | 1 + keyboards/{ => xiudi}/xd84/matrix.c | 0 keyboards/xiudi/xd84/readme.md | 23 + keyboards/xiudi/xd84/rules.mk | 29 + keyboards/{ => xiudi}/xd84/xd84.c | 0 keyboards/{ => xiudi}/xd84/xd84.h | 0 keyboards/{ => xiudi}/xd84pro/config.h | 0 keyboards/{ => xiudi}/xd84pro/dev.md | 0 keyboards/xiudi/xd84pro/info.json | 275 ++ .../xd84pro/keymaps/default/keymap.c | 0 .../xd84pro/keymaps/default_iso/keymap.c | 0 .../{ => xiudi}/xd84pro/keymaps/via/keymap.c | 0 .../{ => xiudi}/xd84pro/keymaps/via/readme.md | 0 keyboards/xiudi/xd84pro/keymaps/via/rules.mk | 2 + keyboards/xiudi/xd84pro/readme.md | 24 + keyboards/xiudi/xd84pro/rules.mk | 21 + keyboards/{ => xiudi}/xd84pro/xd84pro.c | 0 keyboards/{ => xiudi}/xd84pro/xd84pro.h | 0 keyboards/xiudi/xd87/config.h | 125 + keyboards/xiudi/xd87/info.json | 289 ++ .../{ => xiudi}/xd87/keymaps/default/config.h | 0 keyboards/xiudi/xd87/keymaps/default/keymap.c | 56 + .../xd87/keymaps/default/readme.md | 0 .../xd87/keymaps/default_underglow/config.h | 0 .../xd87/keymaps/default_underglow/keymap.c | 62 + .../xd87/keymaps/default_underglow/readme.md | 0 .../xd87/keymaps/default_underglow/rules.mk | 3 + .../xd87/keymaps/mac_underglow/keymap.c | 0 .../xd87/keymaps/mac_underglow/readme.md | 0 .../xiudi/xd87/keymaps/mac_underglow/rules.mk | 3 + .../{ => xiudi}/xd87/keymaps/via/keymap.c | 0 .../{ => xiudi}/xd87/keymaps/via/readme.md | 0 keyboards/xiudi/xd87/keymaps/via/rules.mk | 1 + keyboards/xiudi/xd87/readme.md | 26 + keyboards/xiudi/xd87/rules.mk | 22 + keyboards/{ => xiudi}/xd87/xd87.c | 0 keyboards/xiudi/xd87/xd87.h | 69 + keyboards/xiudi/xd96/config.h | 140 + keyboards/xiudi/xd96/info.json | 347 ++ .../{ => xiudi}/xd96/keymaps/default/keymap.c | 0 .../xd96/keymaps/default_iso/keymap.c | 0 .../{ => xiudi}/xd96/keymaps/uuupah/keymap.c | 0 .../{ => xiudi}/xd96/keymaps/via/keymap.c | 0 .../{ => xiudi}/xd96/keymaps/via/readme.md | 0 keyboards/xiudi/xd96/keymaps/via/rules.mk | 1 + keyboards/{ => xiudi}/xd96/matrix.c | 0 keyboards/xiudi/xd96/readme.md | 22 + keyboards/xiudi/xd96/rules.mk | 27 + keyboards/{ => xiudi}/xd96/xd96.c | 0 keyboards/{ => xiudi}/xd96/xd96.h | 0 keyboards/xmmx/config.h | 5 +- keyboards/xmmx/info.json | 8 - keyboards/xmmx/rules.mk | 10 +- keyboards/xw60/info.json | 5 - keyboards/xw60/rules.mk | 20 +- keyboards/yampad/config.h | 2 +- keyboards/yampad/info.json | 33 + keyboards/yampad/keymaps/default/keymap.c | 6 +- keyboards/yampad/keymaps/traditional/keymap.c | 8 +- keyboards/yampad/keymaps/via/keymap.c | 165 + keyboards/yampad/keymaps/via/readme.md | 9 + keyboards/yampad/keymaps/via/rules.mk | 4 + keyboards/yampad/rules.mk | 21 +- keyboards/yampad/yampad.c | 17 +- keyboards/yanghu/unicorne/config.h | 76 + keyboards/yanghu/unicorne/f411/halconf.h | 27 + keyboards/yanghu/unicorne/f411/mcuconf.h | 34 + keyboards/yanghu/unicorne/f411/rules.mk | 5 + keyboards/yanghu/unicorne/glcdfont.c | 247 ++ keyboards/yanghu/unicorne/info.json | 62 + .../yanghu/unicorne/keymaps/default/config.h | 22 + .../yanghu/unicorne/keymaps/default/keymap.c | 92 + .../yanghu/unicorne/keymaps/default/layers.h | 24 + .../yanghu/unicorne/keymaps/default/oled.c | 67 + .../yanghu/unicorne/keymaps/default/readme.md | 10 + .../yanghu/unicorne/keymaps/default/rules.mk | 1 + keyboards/yanghu/unicorne/readme.md | 17 + keyboards/yanghu/unicorne/rules.mk | 24 + keyboards/yanghu/unicorne/unicorne.c | 150 + keyboards/yanghu/unicorne/unicorne.h | 50 + keyboards/yasui/info.json | 2 - keyboards/yasui/rules.mk | 5 +- keyboards/yatara/drink_me/config.h | 2 +- keyboards/yatara/drink_me/info.json | 3 - keyboards/yatara/drink_me/rules.mk | 15 +- keyboards/yd60mq/info.json | 2 - keyboards/yd60mq/rules.mk | 15 +- keyboards/yd68/config.h | 68 - keyboards/yd68/info.json | 5 +- keyboards/yd68/keymaps/default/keymap.c | 12 - keyboards/yd68/rules.mk | 18 +- keyboards/yd68/yd68.h | 29 +- keyboards/yeehaw/info.json | 4 +- keyboards/yeehaw/keymaps/default/keymap.c | 6 +- keyboards/yeehaw/keymaps/via/keymap.c | 30 +- keyboards/yeehaw/rules.mk | 5 +- keyboards/ymd75/info.json | 2 - keyboards/ymd75/rev1/rules.mk | 13 +- keyboards/ymd75/rev2/rules.mk | 13 +- keyboards/ymd75/rev3/rules.mk | 5 +- keyboards/ymd96/info.json | 5 +- keyboards/ymd96/rules.mk | 14 +- keyboards/ymdk/bface/info.json | 2 - keyboards/ymdk/bface/rules.mk | 11 +- keyboards/ymdk/np24/u4rgb6/info.json | 45 +- keyboards/ymdk/np24/u4rgb6/rules.mk | 7 +- keyboards/ymdk/np24/u4rgb6/u4rgb6.h | 26 +- keyboards/ymdk/sp64/info.json | 2 - keyboards/ymdk/sp64/matrix.c | 11 + keyboards/ymdk/sp64/rules.mk | 11 +- keyboards/ymdk/sp64/sp64.c | 24 - keyboards/ymdk/wings/info.json | 2 - keyboards/ymdk/wings/rules.mk | 5 +- keyboards/ymdk/wingshs/config.h | 73 + keyboards/ymdk/wingshs/info.json | 83 + .../ymdk/wingshs/keymaps/default/keymap.c | 34 + keyboards/ymdk/wingshs/keymaps/via/keymap.c | 50 + keyboards/ymdk/wingshs/keymaps/via/rules.mk | 1 + keyboards/ymdk/wingshs/readme.md | 21 + keyboards/ymdk/wingshs/rules.mk | 19 + keyboards/ymdk/wingshs/wingshs.c | 16 + keyboards/ymdk/wingshs/wingshs.h | 34 + keyboards/ymdk/ym68/info.json | 2 - keyboards/ymdk/ym68/rules.mk | 5 +- keyboards/ymdk/ymd09/info.json | 3 - keyboards/ymdk/ymd09/rules.mk | 15 +- keyboards/ymdk/ymd40/v2/config.h | 2 +- keyboards/ymdk/ymd40/v2/info.json | 218 +- keyboards/ymdk/ymd40/v2/keymaps/via/keymap.c | 44 + keyboards/ymdk/ymd40/v2/keymaps/via/readme.md | 1 + keyboards/ymdk/ymd40/v2/keymaps/via/rules.mk | 2 + keyboards/ymdk/ymd40/v2/rules.mk | 5 +- keyboards/ymdk/ymd40/v2/v2.h | 48 + keyboards/ymdk/ymd67/info.json | 3 - keyboards/ymdk/ymd67/rules.mk | 10 +- keyboards/ymdk_np21/info.json | 2 - keyboards/ymdk_np21/keymaps/via/keymap.c | 52 + keyboards/ymdk_np21/keymaps/via/rules.mk | 2 + keyboards/ymdk_np21/rules.mk | 6 +- keyboards/yncognito/batpad/batpad.h | 3 - keyboards/yncognito/batpad/config.h | 61 +- keyboards/yncognito/batpad/info.json | 4 - .../yncognito/batpad/keymaps/via/rules.mk | 1 + keyboards/yncognito/batpad/rules.mk | 19 +- keyboards/yoichiro/lunakey_macro/config.h | 158 + keyboards/yoichiro/lunakey_macro/info.json | 24 + .../lunakey_macro/keymaps/default/keymap.c | 41 + .../lunakey_macro/keymaps/default/readme.md | 1 + .../lunakey_macro/keymaps/via/keymap.c | 56 + .../lunakey_macro/keymaps/via/readme.md | 1 + .../lunakey_macro/keymaps/via/rules.mk | 4 + .../yoichiro/lunakey_macro/lunakey_macro.c | 17 + .../yoichiro/lunakey_macro/lunakey_macro.h | 37 + keyboards/yoichiro/lunakey_macro/readme.md | 21 + keyboards/yoichiro/lunakey_macro/rules.mk | 19 + keyboards/yoichiro/lunakey_mini/info.json | 2 - .../lunakey_mini/keymaps/default/rules.mk | 2 +- .../lunakey_mini/keymaps/via/rules.mk | 2 +- keyboards/yoichiro/lunakey_mini/rules.mk | 5 +- keyboards/yosino58/info.json | 4 - keyboards/yosino58/keymaps/sakura/rules.mk | 2 +- keyboards/yosino58/rev1/rev1.c | 7 - keyboards/yosino58/rev1/split_scomm.h | 5 +- keyboards/yosino58/rev1/split_util.h | 5 +- keyboards/yosino58/rules.mk | 16 +- keyboards/yosino58/serial.h | 5 +- keyboards/yugo_m/model_m_101/info.json | 2 - keyboards/yugo_m/model_m_101/rules.mk | 5 +- keyboards/yurei/config.h | 73 - keyboards/yurei/info.json | 3 - keyboards/yurei/rules.mk | 15 +- keyboards/yushakobo/quick17/config.h | 143 + keyboards/yushakobo/quick17/info.json | 14 + .../quick17/keymaps/default/keymap.c | 114 + .../quick17/keymaps/default/readme.md | 64 + .../yushakobo/quick17/keymaps/via/keymap.c | 114 + .../yushakobo/quick17/keymaps/via/readme.md | 62 + .../yushakobo/quick17/keymaps/via/rules.mk | 3 + keyboards/yushakobo/quick17/quick17.c | 37 + keyboards/yushakobo/quick17/quick17.h | 38 + keyboards/yushakobo/quick17/quick17_prefs.c | 29 + keyboards/yushakobo/quick17/quick17_prefs.h | 28 + keyboards/yushakobo/quick17/readme.md | 19 + keyboards/yushakobo/quick17/rgb_matrix_kb.inc | 117 + keyboards/yushakobo/quick17/rules.mk | 26 + keyboards/yushakobo/quick7/config.h | 72 - keyboards/yushakobo/quick7/info.json | 2 - keyboards/yushakobo/quick7/rules.mk | 15 +- keyboards/yynmt/acperience12/info.json | 2 - keyboards/yynmt/acperience12/rules.mk | 5 +- keyboards/z12/config.h | 52 + keyboards/z12/info.json | 26 + keyboards/z12/keymaps/default/config.h | 26 + keyboards/z12/keymaps/default/keymap.c | 59 + keyboards/z12/keymaps/default/readme.md | 3 + keyboards/z12/keymaps/default/rules.mk | 2 + keyboards/z12/keymaps/zigotica/config.h | 30 + keyboards/z12/keymaps/zigotica/encoder.c | 114 + keyboards/z12/keymaps/zigotica/encoder.h | 18 + keyboards/z12/keymaps/zigotica/keymap.c | 126 + keyboards/z12/keymaps/zigotica/oled.c | 43 + keyboards/z12/keymaps/zigotica/oled.h | 18 + keyboards/z12/keymaps/zigotica/rules.mk | 4 + keyboards/z12/readme.md | 3 + keyboards/z12/rules.mk | 22 + keyboards/z12/z12.c | 23 + keyboards/z12/z12.h | 34 + keyboards/z150_bh/info.json | 4 - keyboards/z150_bh/keymaps/default/keymap.c | 13 - .../z150_bh/keymaps/default_tkl/keymap.c | 13 - keyboards/z150_bh/rules.mk | 10 +- keyboards/z34/config.h | 65 + keyboards/z34/info.json | 52 + keyboards/z34/keymaps/default/config.h | 22 + keyboards/z34/keymaps/default/keymap.c | 77 + keyboards/z34/keymaps/default/readme.md | 3 + keyboards/z34/keymaps/default/rules.mk | 3 + keyboards/z34/keymaps/zigotica/config.h | 28 + keyboards/z34/keymaps/zigotica/keymap.c | 57 + keyboards/z34/keymaps/zigotica/rules.mk | 7 + keyboards/z34/readme.md | 3 + keyboards/z34/rules.mk | 26 + keyboards/z34/z34.c | 17 + keyboards/z34/z34.h | 39 + keyboards/zfrontier/big_switch/info.json | 2 - keyboards/zfrontier/big_switch/rules.mk | 16 +- keyboards/ziggurat/config.h | 46 + keyboards/ziggurat/info.json | 414 ++ keyboards/ziggurat/keymaps/default/keymap.c | 33 + keyboards/ziggurat/keymaps/iso/keymap.c | 33 + keyboards/ziggurat/keymaps/via/keymap.c | 47 + keyboards/ziggurat/keymaps/via/rules.mk | 1 + keyboards/ziggurat/readme.md | 25 + keyboards/ziggurat/rules.mk | 19 + keyboards/ziggurat/ziggurat.c | 17 + keyboards/ziggurat/ziggurat.h | 91 + keyboards/zinc/info.json | 3 - keyboards/zinc/keymaps/default/rules.mk | 17 +- keyboards/zinc/keymaps/ginjake/rules.mk | 8 +- keyboards/zinc/keymaps/monks/rules.mk | 8 +- keyboards/zinc/keymaps/toshi0383/rules.mk | 8 +- keyboards/zinc/rev1/config.h | 73 +- keyboards/zinc/rev1/info.json | 3 - keyboards/zinc/rev1/post_config.h | 86 + keyboards/zinc/rev1/rev1.c | 4 - keyboards/zinc/reva/config.h | 73 +- keyboards/zinc/reva/info.json | 3 - keyboards/zinc/reva/post_config.h | 86 + keyboards/zinc/reva/reva.c | 4 - keyboards/zinc/rules.mk | 15 +- keyboards/zj68/info.json | 2 - keyboards/zj68/rules.mk | 10 +- keyboards/zj68/zj68.c | 8 - keyboards/zlant/config.h | 5 +- keyboards/zlant/info.json | 4 - keyboards/zlant/rules.mk | 10 +- keyboards/zlant/zlant.h | 37 +- keyboards/zoo/wampus/info.json | 2 - keyboards/zoo/wampus/rules.mk | 7 +- keyboards/zoo/wampus/wampus.c | 5 +- keyboards/ztboards/after/info.json | 2 - keyboards/ztboards/after/rules.mk | 5 +- keyboards/ztboards/noon/info.json | 2 - keyboards/ztboards/noon/rules.mk | 5 +- keyboards/zvecr/split_blackpill/config.h | 53 - keyboards/zvecr/split_blackpill/info.json | 3 - keyboards/zvecr/split_blackpill/rules.mk | 6 +- keyboards/zvecr/zv48/config.h | 53 - keyboards/zvecr/zv48/info.json | 3 - keyboards/zvecr/zv48/rules.mk | 6 +- .../60_ansi/manna-harbour_miryoku/config.h | 69 + .../60_ansi/manna-harbour_miryoku/keymap.c | 5 + .../60_ansi/mechmerlin-ansi/keymap.c | 28 +- .../60_ansi/mechmerlin-ansi/readme.md | 3 +- .../60_ansi_split_bs_rshift/bcat/keymap.c | 18 + .../mechmerlin-split/keymap.c | 28 +- .../mechmerlin-split/readme.md | 1 + layouts/community/60_iso/bifbofii/keymap.c | 201 + layouts/community/60_iso/bifbofii/readme.md | 108 + layouts/community/60_iso/bifbofii/rules.mk | 1 + .../community/60_tsangan_hhkb/bcat/keymap.c | 20 +- layouts/community/65_ansi/mechmerlin/keymap.c | 2 +- .../65_ansi_blocker/brandonschlack/config.h | 76 +- .../65_ansi_blocker/mechmerlin/keymap.c | 2 +- .../65_ansi_blocker/mechmerlin/readme.md | 1 + .../65_ansi_blocker/stanrc85/keymap.c | 51 + .../65_ansi_blocker_split_bs/bcat/keymap.c | 18 + .../brandonschlack-split/config.h | 76 +- layouts/community/66_ansi/mechmerlin/keymap.c | 2 +- layouts/community/68_ansi/mechmerlin/keymap.c | 2 +- .../75_ansi/mechmerlin-75_ansi/keymap.c | 26 +- .../75_ansi/mechmerlin-75_ansi/readme.md | 4 +- layouts/community/ergodox/333fred/keymap.c | 40 + layouts/community/ergodox/333fred/rules.mk | 3 - .../community/ergodox/333fred/visualizer.c | 39 - layouts/community/ergodox/adnw_k_o_y/keymap.c | 2 +- layouts/community/ergodox/adnw_p_u_q/keymap.c | 14 +- .../community/ergodox/adnw_p_u_q/visualizer.c | 34 - layouts/community/ergodox/algernon/COPYING | 674 ---- layouts/community/ergodox/algernon/NEWS.md | 229 -- layouts/community/ergodox/algernon/config.h | 22 - .../ergodox/algernon/images/adore-layer.png | Bin 105611 -> 0 bytes .../ergodox/algernon/images/base-layer.png | Bin 106956 -> 0 bytes .../ergodox/algernon/images/heatmap.png | Bin 139351 -> 0 bytes .../ergodox/algernon/images/steno-layer.png | Bin 64086 -> 0 bytes layouts/community/ergodox/algernon/keymap.c | 1194 ------ layouts/community/ergodox/algernon/readme.md | 152 - layouts/community/ergodox/algernon/rules.mk | 43 - .../algernon/tools/heatmap-layout.ADORE.json | 486 --- .../algernon/tools/heatmap-layout.Dvorak.json | 477 --- .../ergodox/algernon/tools/hid-commands | 113 - .../ergodox/algernon/tools/log-to-heatmap.py | 344 -- .../ergodox/algernon/tools/text-to-log.py | 107 - layouts/community/ergodox/belak/keymap.c | 35 +- layouts/community/ergodox/belak/visualizer.c | 49 - layouts/community/ergodox/bepo/keymap.c | 34 +- layouts/community/ergodox/bepo_alt/keymap.c | 14 +- layouts/community/ergodox/bepo_csa/keymap.c | 60 +- layouts/community/ergodox/berfarah/rules.mk | 2 +- layouts/community/ergodox/bocaj/config.h | 4 - layouts/community/ergodox/bocaj/keymap.c | 175 - layouts/community/ergodox/bocaj/readme.md | 28 - layouts/community/ergodox/bocaj/rules.mk | 14 - .../ergodox/choromanski/visualizer.c | 62 - .../community/ergodox/coderkun_neo2/keymap.c | 40 +- .../ergodox/colemak_code_friendly/rules.mk | 2 +- .../ergodox/colemak_osx_pc_no/keymap.c | 114 +- layouts/community/ergodox/deadcyclo/keymap.c | 371 +- layouts/community/ergodox/dragon788/keymap.c | 2 +- layouts/community/ergodox/drashna/config.h | 1 + layouts/community/ergodox/drashna/keymap.c | 264 +- layouts/community/ergodox/drashna/rules.mk | 5 +- .../community/ergodox/drashna/visualizer.c | 77 - .../community/ergodox/dvorak_plover/keymap.c | 2 +- .../ergodox/dvorak_programmer/rules.mk | 2 +- .../ergodox/dvorak_programmer_swe/keymap.c | 10 +- .../ergodox/dvorak_programmer_swe/readme.md | 2 +- .../ergodox/dvorak_svorak_a5/keymap.c | 12 +- .../community/ergodox/french_hacker/keymap.c | 263 +- .../community/ergodox/french_hacker/readme.md | 27 +- .../community/ergodox/german-kinergo/keymap.c | 12 +- .../community/ergodox/german-lukas/keymap.c | 6 +- .../ergodox/german-manuneo/compile_keymap.py | 5 - .../community/ergodox/german-manuneo/keymap.c | 10 +- layouts/community/ergodox/german/keymap.c | 6 +- layouts/community/ergodox/guni/keymap.c | 41 +- layouts/community/ergodox/haegin/keymap.c | 2 +- .../community/ergodox/ishigoya-jp/keymap.c | 2 +- layouts/community/ergodox/issmirnov/keymap.c | 2 +- .../community/ergodox/jackhumbert/keymap.c | 5 - layouts/community/ergodox/jjerrell/config.h | 21 + layouts/community/ergodox/jjerrell/keymap.c | 129 + layouts/community/ergodox/jjerrell/readme.md | 5 + layouts/community/ergodox/jjerrell/rules.mk | 14 + layouts/community/ergodox/kejadlen/rules.mk | 2 +- layouts/community/ergodox/kines-ish/keymap.c | 2 +- layouts/community/ergodox/kristian/keymap.c | 2 +- .../ergodox/manna-harbour_miryoku/config.h | 34 +- .../ergodox/manna-harbour_miryoku/keymap.c | 6 +- layouts/community/ergodox/mpiechotka/keymap.c | 127 +- .../ergodox/neo2_on_qwertz_hardware/keymap.c | 8 +- .../norwegian_programmer_osx_pc/keymap.c | 118 +- .../keymap.c | 118 +- layouts/community/ergodox/nstickney/keymap.c | 142 - layouts/community/ergodox/ordinary/keymap.c | 288 +- .../community/ergodox/ordinary_osx/keymap.c | 288 +- layouts/community/ergodox/osx_de/keymap.c | 52 +- .../ergodox/osx_de_adnw_koy/keymap.c | 18 +- .../ergodox/osx_de_experimental/keymap.c | 60 +- layouts/community/ergodox/osx_fr/keymap.c | 8 +- .../community/ergodox/osx_neo2/visualizer.c | 47 - .../keymap.c | 89 +- layouts/community/ergodox/plover/keymap.c | 2 +- layouts/community/ergodox/plums/keymap.c | 84 +- .../ergodox/qwerty_code_friendly/keymap.c | 2 +- .../ergodox/replicaJunction/config.h | 60 +- .../ergodox/replicaJunction/keymap.c | 725 ++-- .../ergodox/replicaJunction/readme.md | 93 +- .../ergodox/replicaJunction/rules.mk | 35 +- .../community/ergodox/software_neo2/keymap.c | 20 +- .../community/ergodox/supercoder/makefile.mk | 6 - layouts/community/ergodox/supercoder/rules.mk | 6 + .../community/ergodox/swedish-lindhe/keymap.c | 6 +- layouts/community/ergodox/swedish/keymap.c | 6 +- layouts/community/ergodox/teckinesis/keymap.c | 277 +- .../townk_osx/{makefile.mk => rules.mk} | 0 .../ergodox/workman_osx_mdw/keymap.c | 390 +- .../community/numpad_5x6/bjohnson/rules.mk | 2 +- layouts/community/numpad_5x6/drashna/config.h | 2 + layouts/community/numpad_5x6/drashna/rules.mk | 3 +- layouts/community/ortho_1x4/readme.md | 3 + layouts/community/ortho_2x3/layout.json | 2 + layouts/community/ortho_2x3/readme.md | 3 + layouts/community/ortho_2x6/layout.json | 2 + layouts/community/ortho_2x6/readme.md | 3 + .../ortho_4x10/manna-harbour_miryoku/config.h | 37 + .../ortho_4x10/manna-harbour_miryoku/keymap.c | 5 + .../community/ortho_4x12/ajp10304/keymap.c | 26 +- .../community/ortho_4x12/ajp10304/readme.md | 4 +- layouts/community/ortho_4x12/bocaj/config.h | 106 - layouts/community/ortho_4x12/bocaj/keymap.c | 287 -- layouts/community/ortho_4x12/bocaj/readme.md | 23 - layouts/community/ortho_4x12/bocaj/rules.mk | 43 - .../ortho_4x12/brandonschlack/keymap.c | 3 +- .../ortho_4x12/brandonschlack/rules.mk | 2 +- .../community/ortho_4x12/buswerks/rules.mk | 2 +- layouts/community/ortho_4x12/drashna/config.h | 3 +- layouts/community/ortho_4x12/drashna/keymap.c | 163 +- layouts/community/ortho_4x12/drashna/rules.mk | 19 +- .../community/ortho_4x12/jjerrell/config.h | 57 + .../community/ortho_4x12/jjerrell/keymap.c | 227 ++ .../community/ortho_4x12/jjerrell/readme.md | 7 + .../community/ortho_4x12/jjerrell/rules.mk | 8 + layouts/community/ortho_4x12/juno/keymap.c | 3 +- layouts/community/ortho_4x12/junonum/config.h | 5 +- layouts/community/ortho_4x12/junonum/keymap.c | 9 +- layouts/community/ortho_4x12/junonum/rules.mk | 2 +- .../ortho_4x12/manna-harbour_miryoku/config.h | 37 +- .../ortho_4x12/manna-harbour_miryoku/keymap.c | 6 +- layouts/community/ortho_4x12/mguterl/keymap.c | 3 +- .../ortho_5x12/brandonschlack/keymap.c | 3 +- .../ortho_5x12/brandonschlack/rules.mk | 2 +- layouts/community/ortho_5x12/drashna/keymap.c | 46 +- layouts/community/ortho_5x12/drashna/rules.mk | 3 +- .../ortho_5x12/manna-harbour_miryoku/config.h | 51 + .../ortho_5x12/manna-harbour_miryoku/keymap.c | 5 + layouts/community/ortho_5x12/riblee/keymap.c | 49 +- layouts/community/ortho_5x12/xyverz/rules.mk | 2 +- .../ortho_5x15/manna-harbour_miryoku/config.h | 39 + .../ortho_5x15/manna-harbour_miryoku/keymap.c | 5 + layouts/community/ortho_5x5/layout.json | 6 +- .../planck_mit/manna-harbour_miryoku/config.h | 20 + .../planck_mit/manna-harbour_miryoku/keymap.c | 5 + .../manna-harbour_miryoku/config.h | 20 + .../manna-harbour_miryoku/keymap.c | 5 + layouts/community/split_3x6_3/bcat/keymap.c | 9 +- layouts/community/split_3x6_3/bcat/readme.md | 5 + .../community/split_3x6_3/drashna/config.h | 43 +- .../community/split_3x6_3/drashna/keymap.c | 261 +- .../community/split_3x6_3/drashna/rules.mk | 9 +- .../manna-harbour_miryoku/config.h | 20 + .../manna-harbour_miryoku/keymap.c | 5 + .../60_abnt2/default_60_abnt2/keymap.c | 2 +- layouts/default/60_abnt2/info.json | 2 - layouts/default/60_ansi/info.json | 2 - layouts/default/60_ansi_arrow/info.json | 2 - .../60_ansi_arrow_split_bs_7u_spc/info.json | 2 - .../default/60_ansi_split_bs_rshift/info.json | 2 - layouts/default/60_ansi_tsangan/info.json | 2 - .../default/60_hhkb/default_60_hhkb/keymap.c | 2 +- layouts/default/60_hhkb/info.json | 2 - layouts/default/60_iso/info.json | 2 - .../default/60_iso_split_bs_rshift/info.json | 2 - layouts/default/60_iso_tsangan/info.json | 2 - layouts/default/60_tsangan_hhkb/info.json | 2 - .../default/64_ansi/default_64_ansi/keymap.c | 2 +- layouts/default/64_ansi/info.json | 2 - .../default/64_iso/default_64_iso/keymap.c | 2 +- layouts/default/64_iso/info.json | 2 - layouts/default/65_ansi/info.json | 2 - layouts/default/65_ansi_blocker/info.json | 2 - .../65_ansi_blocker_split_bs/info.json | 2 - .../default/65_ansi_blocker_tsangan/info.json | 2 - layouts/default/65_ansi_split_bs/info.json | 2 - layouts/default/65_iso/info.json | 2 - layouts/default/65_iso_blocker/info.json | 2 - .../default/65_iso_blocker_split_bs/info.json | 2 - layouts/default/66_ansi/info.json | 2 - layouts/default/66_iso/info.json | 2 - layouts/default/68_ansi/info.json | 2 - layouts/default/68_iso/info.json | 2 - layouts/default/75_ansi/info.json | 2 - layouts/default/75_iso/info.json | 2 - .../default/96_ansi/default_96_ansi/keymap.c | 4 +- layouts/default/96_ansi/info.json | 2 - .../default/96_iso/default_96_iso/keymap.c | 4 +- layouts/default/96_iso/info.json | 2 - layouts/default/alice/info.json | 2 - layouts/default/alice_split_bs/info.json | 2 - layouts/default/ergodox/info.json | 2 - .../default_fullsize_ansi/keymap.c | 4 +- layouts/default/fullsize_ansi/info.json | 2 - .../default_fullsize_iso/keymap.c | 4 +- layouts/default/fullsize_iso/info.json | 2 - layouts/default/numpad_4x4/info.json | 2 - layouts/default/numpad_5x4/info.json | 2 - layouts/default/numpad_5x6/info.json | 2 - .../numpad_6x4/default_numpad_6x4/keymap.c | 2 +- layouts/default/numpad_6x4/info.json | 2 - .../numpad_6x5/default_numpad_6x5/keymap.c | 67 + layouts/default/numpad_6x5/info.json | 43 + layouts/default/numpad_6x5/layout.json | 6 + layouts/default/numpad_6x5/readme.md | 3 + layouts/default/ortho_1x1/info.json | 2 - .../ortho_2x3/default_ortho_2x3/keymap.c | 15 + layouts/default/ortho_2x3/info.json | 18 + layouts/default/ortho_2x3/layout.json | 2 + layouts/default/ortho_2x3/readme.md | 3 + .../ortho_2x6/default_ortho_2x6/keymap.c | 15 + layouts/default/ortho_2x6/info.json | 24 + layouts/default/ortho_2x6/layout.json | 2 + layouts/default/ortho_2x6/readme.md | 3 + layouts/default/ortho_3x10/info.json | 2 - layouts/default/ortho_4x10/info.json | 2 - layouts/default/ortho_4x12/info.json | 2 - layouts/default/ortho_4x4/info.json | 2 - .../ortho_4x6/default_ortho_4x6/keymap.c | 21 + layouts/default/ortho_4x6/info.json | 38 + layouts/default/ortho_4x6/layout.json | 4 + layouts/default/ortho_4x6/readme.md | 3 + .../ortho_5x10/default_ortho_5x10/keymap.c | 24 + layouts/default/ortho_5x10/info.json | 65 + layouts/default/ortho_5x10/layout.json | 5 + layouts/default/ortho_5x10/readme.md | 3 + layouts/default/ortho_5x12/info.json | 2 - layouts/default/ortho_5x14/info.json | 2 - layouts/default/ortho_5x15/info.json | 2 - layouts/default/ortho_5x4/info.json | 2 - layouts/default/ortho_5x5/info.json | 40 + layouts/default/ortho_5x5/layout.json | 5 + layouts/default/ortho_5x5/readme.md | 3 + .../ortho_6x4/default_ortho_6x4/keymap.c | 2 +- layouts/default/ortho_6x4/info.json | 2 - layouts/default/planck_mit/info.json | 2 - layouts/default/readme.md | 48 + layouts/default/split_3x5_3/info.json | 2 - layouts/default/split_3x6_3/info.json | 2 - .../tkl_ansi/default_tkl_ansi/keymap.c | 2 +- layouts/default/tkl_ansi/info.json | 2 - .../default/tkl_iso/default_tkl_iso/keymap.c | 2 +- layouts/default/tkl_iso/info.json | 2 - .../default_tkl_nofrow_ansi/keymap.c | 24 + layouts/default/tkl_nofrow_ansi/info.json | 90 + layouts/default/tkl_nofrow_ansi/layout.json | 6 + layouts/default/tkl_nofrow_ansi/readme.md | 3 + lib/chibios | 2 +- lib/chibios-contrib | 2 +- lib/googletest | 2 +- lib/lufa | 2 +- lib/python/qmk/c_parse.py | 1 - lib/python/qmk/cli/__init__.py | 42 +- lib/python/qmk/cli/cd.py | 46 + lib/python/qmk/cli/cformat.py | 139 +- lib/python/qmk/cli/compile.py | 2 +- lib/python/qmk/cli/console.py | 302 -- lib/python/qmk/cli/docs.py | 31 +- lib/python/qmk/cli/doctor.py | 136 - lib/python/qmk/cli/doctor/__init__.py | 5 + lib/python/qmk/cli/doctor/check.py | 163 + lib/python/qmk/cli/doctor/linux.py | 170 + lib/python/qmk/cli/doctor/macos.py | 13 + lib/python/qmk/cli/doctor/main.py | 136 + lib/python/qmk/cli/doctor/windows.py | 14 + lib/python/qmk/cli/fileformat.py | 24 +- lib/python/qmk/cli/flash.py | 16 +- lib/python/qmk/cli/format/c.py | 137 + lib/python/qmk/cli/format/json.py | 5 +- lib/python/qmk/cli/format/python.py | 69 + lib/python/qmk/cli/format/text.py | 57 + .../qmk/cli/generate/compilation_database.py | 133 + lib/python/qmk/cli/generate/config_h.py | 143 +- .../qmk/cli/generate/develop_pr_list.py | 119 + lib/python/qmk/cli/generate/dfu_header.py | 4 +- lib/python/qmk/cli/generate/info_json.py | 40 +- lib/python/qmk/cli/generate/keyboard_h.py | 9 +- lib/python/qmk/cli/generate/layouts.py | 2 +- lib/python/qmk/cli/generate/rules_mk.py | 52 +- lib/python/qmk/cli/generate/version_h.py | 28 + lib/python/qmk/cli/info.py | 55 +- lib/python/qmk/cli/json2c.py | 2 +- lib/python/qmk/cli/kle2json.py | 2 - lib/python/qmk/cli/lint.py | 144 +- lib/python/qmk/cli/list/keymaps.py | 5 + lib/python/qmk/cli/list/layouts.py | 23 + lib/python/qmk/cli/multibuild.py | 6 +- lib/python/qmk/cli/new/keyboard.py | 138 +- lib/python/qmk/cli/pyformat.py | 32 +- lib/python/qmk/cli/pytest.py | 2 +- lib/python/qmk/commands.py | 181 +- lib/python/qmk/constants.py | 5 +- lib/python/qmk/info.py | 340 +- lib/python/qmk/json_encoders.py | 3 - lib/python/qmk/json_schema.py | 50 +- lib/python/qmk/keymap.py | 104 +- lib/python/qmk/os_helpers/__init__.py | 164 - lib/python/qmk/os_helpers/linux/__init__.py | 140 - lib/python/qmk/tests/minimal_info.json | 4 +- lib/python/qmk/tests/test_cli_commands.py | 42 +- lib/python/qmk/tests/test_qmk_keymap.py | 8 +- lib/ugfx | 1 - .../USB_Host_Shield_2.0/.gitattributes | 0 .../usbhost}/USB_Host_Shield_2.0/.gitignore | 0 .../usbhost}/USB_Host_Shield_2.0/.gitmodules | 0 .../usbhost}/USB_Host_Shield_2.0/BTD.cpp | 0 .../usbhost}/USB_Host_Shield_2.0/BTD.h | 0 .../usbhost}/USB_Host_Shield_2.0/BTHID.cpp | 0 .../usbhost}/USB_Host_Shield_2.0/BTHID.h | 0 .../usbhost}/USB_Host_Shield_2.0/PS3BT.cpp | 0 .../usbhost}/USB_Host_Shield_2.0/PS3BT.h | 0 .../usbhost}/USB_Host_Shield_2.0/PS3Enums.h | 0 .../usbhost}/USB_Host_Shield_2.0/PS3USB.cpp | 0 .../usbhost}/USB_Host_Shield_2.0/PS3USB.h | 0 .../usbhost}/USB_Host_Shield_2.0/PS4BT.h | 0 .../USB_Host_Shield_2.0/PS4Parser.cpp | 0 .../usbhost}/USB_Host_Shield_2.0/PS4Parser.h | 0 .../usbhost}/USB_Host_Shield_2.0/PS4USB.h | 0 .../usbhost}/USB_Host_Shield_2.0/PSBuzz.cpp | 0 .../usbhost}/USB_Host_Shield_2.0/PSBuzz.h | 0 .../usbhost}/USB_Host_Shield_2.0/README.md | 0 .../usbhost}/USB_Host_Shield_2.0/SPP.cpp | 0 .../usbhost}/USB_Host_Shield_2.0/SPP.h | 0 .../usbhost}/USB_Host_Shield_2.0/Usb.cpp | 0 .../usbhost}/USB_Host_Shield_2.0/Usb.h | 0 .../usbhost}/USB_Host_Shield_2.0/UsbCore.h | 0 .../usbhost}/USB_Host_Shield_2.0/Wii.cpp | 0 .../usbhost}/USB_Host_Shield_2.0/Wii.h | 0 .../USB_Host_Shield_2.0/WiiCameraReadme.md | 0 .../usbhost}/USB_Host_Shield_2.0/XBOXOLD.cpp | 0 .../usbhost}/USB_Host_Shield_2.0/XBOXOLD.h | 0 .../usbhost}/USB_Host_Shield_2.0/XBOXONE.cpp | 0 .../usbhost}/USB_Host_Shield_2.0/XBOXONE.h | 0 .../usbhost}/USB_Host_Shield_2.0/XBOXRECV.cpp | 0 .../usbhost}/USB_Host_Shield_2.0/XBOXRECV.h | 0 .../usbhost}/USB_Host_Shield_2.0/XBOXUSB.cpp | 0 .../usbhost}/USB_Host_Shield_2.0/XBOXUSB.h | 0 .../usbhost}/USB_Host_Shield_2.0/address.h | 0 .../usbhost}/USB_Host_Shield_2.0/adk.cpp | 0 .../usbhost}/USB_Host_Shield_2.0/adk.h | 0 .../usbhost}/USB_Host_Shield_2.0/avrpins.h | 0 .../USB_Host_Shield_2.0/cdc_XR21B1411.cpp | 0 .../USB_Host_Shield_2.0/cdc_XR21B1411.h | 0 .../usbhost}/USB_Host_Shield_2.0/cdcacm.cpp | 0 .../usbhost}/USB_Host_Shield_2.0/cdcacm.h | 0 .../usbhost}/USB_Host_Shield_2.0/cdcftdi.cpp | 0 .../usbhost}/USB_Host_Shield_2.0/cdcftdi.h | 0 .../USB_Host_Shield_2.0/cdcprolific.cpp | 0 .../USB_Host_Shield_2.0/cdcprolific.h | 0 .../USB_Host_Shield_2.0/confdescparser.h | 0 .../USB_Host_Shield_2.0/controllerEnums.h | 0 .../examples/Bluetooth/BTHID/BTHID.ino | 0 .../examples/Bluetooth/BTHID/KeyboardParser.h | 0 .../examples/Bluetooth/BTHID/MouseParser.h | 0 .../examples/Bluetooth/PS3BT/PS3BT.ino | 0 .../examples/Bluetooth/PS3Multi/PS3Multi.ino | 0 .../examples/Bluetooth/PS3SPP/PS3SPP.ino | 0 .../examples/Bluetooth/PS4BT/PS4BT.ino | 0 .../examples/Bluetooth/SPP/SPP.ino | 0 .../examples/Bluetooth/SPPMulti/SPPMulti.ino | 0 .../examples/Bluetooth/Wii/Wii.ino | 0 .../WiiBalanceBoard/WiiBalanceBoard.ino | 0 .../Bluetooth/WiiIRCamera/WiiIRCamera.ino | 0 .../examples/Bluetooth/WiiMulti/WiiMulti.ino | 0 .../WiiUProController/WiiUProController.ino | 0 .../HID/USBHIDBootKbd/USBHIDBootKbd.ino | 0 .../USBHIDBootKbdAndMouse.ino | 0 .../HID/USBHIDBootMouse/USBHIDBootMouse.ino | 0 .../HID/USBHIDJoystick/USBHIDJoystick.ino | 0 .../USBHIDJoystick/hidjoystickrptparser.cpp | 0 .../HID/USBHIDJoystick/hidjoystickrptparser.h | 0 .../examples/HID/USBHID_desc/USBHID_desc.ino | 0 .../examples/HID/USBHID_desc/pgmstrings.h | 0 .../examples/HID/le3dp/le3dp.ino | 0 .../examples/HID/le3dp/le3dp_rptparser.cpp | 0 .../examples/HID/le3dp/le3dp_rptparser.h | 0 .../examples/HID/scale/scale.ino | 0 .../examples/HID/scale/scale_rptparser.cpp | 0 .../examples/HID/scale/scale_rptparser.h | 0 .../examples/PS3USB/PS3USB.ino | 0 .../examples/PS4USB/PS4USB.ino | 0 .../examples/PSBuzz/PSBuzz.ino | 0 .../examples/USB_desc/USB_desc.ino | 0 .../examples/USB_desc/pgmstrings.h | 0 .../examples/Xbox/XBOXOLD/XBOXOLD.ino | 0 .../examples/Xbox/XBOXONE/XBOXONE.ino | 0 .../examples/Xbox/XBOXRECV/XBOXRECV.ino | 0 .../examples/Xbox/XBOXUSB/XBOXUSB.ino | 0 .../acm/acm_terminal/acm_terminal.ino | 0 .../examples/acm/acm_terminal/pgmstrings.h | 0 .../adk/ArduinoBlinkLED/ArduinoBlinkLED.ino | 0 .../examples/adk/adk_barcode/adk_barcode.ino | 0 .../examples/adk/demokit_20/demokit_20.ino | 0 .../examples/adk/term_test/term_test.ino | 0 .../examples/adk/term_time/term_time.ino | 0 .../examples/board_qc/board_qc.ino | 0 .../cdc_XR21B1411/XR_terminal/XR_terminal.ino | 0 .../ftdi/USBFTDILoopback/USBFTDILoopback.ino | 0 .../ftdi/USBFTDILoopback/pgmstrings.h | 0 .../examples/hub_demo/hub_demo.ino | 0 .../examples/hub_demo/pgmstrings.h | 0 .../examples/max_LCD/max_LCD.ino | 0 .../pl2303_gprs_terminal.ino | 0 .../examples/pl2303/pl2303_gps/pl2303_gps.ino | 0 .../pl2303/pl2303_tinygps/pl2303_tinygps.ino | 0 .../pl2303_xbee_terminal.ino | 0 .../examples/testusbhostFAT/Makefile | 0 .../examples/testusbhostFAT/README.md | 0 .../testusbhostFAT/testusbhostFAT.ino | 0 .../usbhost}/USB_Host_Shield_2.0/gpl2.txt | 0 .../usbhost}/USB_Host_Shield_2.0/hexdump.h | 0 .../usbhost}/USB_Host_Shield_2.0/hid.cpp | 0 .../usbhost}/USB_Host_Shield_2.0/hid.h | 0 .../usbhost}/USB_Host_Shield_2.0/hidboot.cpp | 0 .../usbhost}/USB_Host_Shield_2.0/hidboot.h | 0 .../hidescriptorparser.cpp | 0 .../USB_Host_Shield_2.0/hidescriptorparser.h | 0 .../USB_Host_Shield_2.0/hiduniversal.cpp | 0 .../USB_Host_Shield_2.0/hiduniversal.h | 0 .../USB_Host_Shield_2.0/hidusagestr.h | 0 .../hidusagetitlearrays.cpp | 0 .../usbhost}/USB_Host_Shield_2.0/keywords.txt | 0 .../usbhost}/USB_Host_Shield_2.0/library.json | 0 .../USB_Host_Shield_2.0/library.properties | 0 .../usbhost}/USB_Host_Shield_2.0/macros.h | 0 .../USB_Host_Shield_2.0/masstorage.cpp | 0 .../usbhost}/USB_Host_Shield_2.0/masstorage.h | 0 .../usbhost}/USB_Host_Shield_2.0/max3421e.h | 0 .../usbhost}/USB_Host_Shield_2.0/max_LCD.cpp | 0 .../usbhost}/USB_Host_Shield_2.0/max_LCD.h | 0 .../usbhost}/USB_Host_Shield_2.0/message.cpp | 0 .../usbhost}/USB_Host_Shield_2.0/message.h | 0 .../USB_Host_Shield_2.0/parsetools.cpp | 0 .../usbhost}/USB_Host_Shield_2.0/parsetools.h | 0 .../usbhost}/USB_Host_Shield_2.0/printhex.h | 0 .../usbhost}/USB_Host_Shield_2.0/settings.h | 0 .../USB_Host_Shield_2.0/sink_parser.h | 0 .../usbhost}/USB_Host_Shield_2.0/usb_ch9.h | 0 .../usbhost}/USB_Host_Shield_2.0/usbhost.h | 0 .../usbhost}/USB_Host_Shield_2.0/usbhub.cpp | 0 .../usbhost}/USB_Host_Shield_2.0/usbhub.h | 0 .../USB_Host_Shield_2.0/version_helper.h | 0 .../usbhost}/USB_Host_Shield_2.0/xboxEnums.h | 0 .../arduino-1.0.1/cores/arduino/Arduino.h | 0 .../arduino-1.0.1/cores/arduino/CDC.cpp | 0 .../arduino-1.0.1/cores/arduino/Client.h | 0 .../arduino-1.0.1/cores/arduino/HID.cpp | 0 .../cores/arduino/HardwareSerial.cpp | 0 .../cores/arduino/HardwareSerial.h | 0 .../arduino-1.0.1/cores/arduino/IPAddress.cpp | 0 .../arduino-1.0.1/cores/arduino/IPAddress.h | 0 .../arduino-1.0.1/cores/arduino/Platform.h | 0 .../arduino-1.0.1/cores/arduino/Print.cpp | 0 .../arduino-1.0.1/cores/arduino/Print.h | 0 .../arduino-1.0.1/cores/arduino/Printable.h | 0 .../arduino-1.0.1/cores/arduino/Server.h | 0 .../arduino-1.0.1/cores/arduino/Stream.cpp | 0 .../arduino-1.0.1/cores/arduino/Stream.h | 0 .../arduino-1.0.1/cores/arduino/Tone.cpp | 0 .../arduino-1.0.1/cores/arduino/USBAPI.h | 0 .../arduino-1.0.1/cores/arduino/USBCore.cpp | 0 .../arduino-1.0.1/cores/arduino/USBCore.h | 0 .../arduino-1.0.1/cores/arduino/USBDesc.h | 0 .../arduino-1.0.1/cores/arduino/Udp.h | 0 .../arduino-1.0.1/cores/arduino/WCharacter.h | 0 .../arduino-1.0.1/cores/arduino/WInterrupts.c | 0 .../arduino-1.0.1/cores/arduino/WMath.cpp | 0 .../arduino-1.0.1/cores/arduino/WString.cpp | 0 .../arduino-1.0.1/cores/arduino/WString.h | 0 .../arduino-1.0.1/cores/arduino/binary.h | 0 .../arduino-1.0.1/cores/arduino/main.cpp | 0 .../arduino-1.0.1/cores/arduino/new.cpp | 0 .../arduino-1.0.1/cores/arduino/new.h | 0 .../arduino-1.0.1/cores/arduino/wiring.c | 0 .../cores/arduino/wiring_analog.c | 0 .../cores/arduino/wiring_digital.c | 0 .../cores/arduino/wiring_private.h | 0 .../cores/arduino/wiring_pulse.c | 0 .../cores/arduino/wiring_shift.c | 0 .../variants/eightanaloginputs/pins_arduino.h | 0 .../variants/leonardo/pins_arduino.h | 0 .../variants/mega/pins_arduino.h | 0 .../variants/standard/pins_arduino.h | 0 nix/pyproject.toml | 32 - paths.mk | 31 + platforms/arm_atsam/_timer.h | 19 + .../common => platforms}/arm_atsam/_wait.h | 0 platforms/arm_atsam/atomic_util.h | 37 + .../arm_atsam/bootloader.c | 0 platforms/arm_atsam/eeprom.c | 184 + platforms/arm_atsam/flash.mk | 22 + platforms/arm_atsam/gpio.h | 77 + platforms/arm_atsam/pin_defs.h | 84 + platforms/arm_atsam/platform.c | 21 + platforms/arm_atsam/platform.mk | 67 + platforms/arm_atsam/platform_deps.h | 18 + .../common => platforms}/arm_atsam/suspend.c | 0 .../common => platforms}/arm_atsam/timer.c | 0 {tmk_core/common => platforms}/atomic_util.h | 0 {tmk_core/common => platforms}/avr/_print.h | 0 platforms/avr/_timer.h | 19 + platforms/avr/_wait.h | 49 + .../common => platforms}/avr/atomic_util.h | 0 .../common => platforms}/avr/bootloader.c | 0 .../avr/bootloader_size.c | 0 platforms/avr/drivers/analog.c | 115 + .../avr => platforms/avr/drivers}/analog.h | 3 +- .../avr/drivers/audio_pwm.h | 0 .../avr/drivers/audio_pwm_hardware.c | 0 .../avr => platforms/avr/drivers}/glcdfont.c | 0 .../avr => platforms/avr/drivers}/hd44780.c | 0 .../avr => platforms/avr/drivers}/hd44780.h | 0 platforms/avr/drivers/i2c_master.c | 297 ++ platforms/avr/drivers/i2c_master.h | 45 + platforms/avr/drivers/i2c_slave.c | 111 + platforms/avr/drivers/i2c_slave.h | 41 + platforms/avr/drivers/ps2/ps2_io.c | 51 + .../avr/drivers/ps2}/ps2_usart.c | 14 + platforms/avr/drivers/serial.c | 529 +++ .../avr/drivers}/spi_master.c | 0 .../avr/drivers}/spi_master.h | 0 .../avr => platforms/avr/drivers}/ssd1306.c | 0 .../avr => platforms/avr/drivers}/ssd1306.h | 0 platforms/avr/drivers/uart.c | 182 + platforms/avr/drivers/uart.h | 39 + platforms/avr/drivers/ws2812.c | 171 + .../avr/drivers}/ws2812_i2c.c | 0 platforms/avr/flash.mk | 188 + platforms/avr/gpio.h | 49 + {tmk_core/common => platforms}/avr/pin_defs.h | 0 platforms/avr/platform.c | 21 + platforms/avr/platform.mk | 179 + platforms/avr/platform_deps.h | 20 + {tmk_core/common => platforms}/avr/printf.c | 0 {tmk_core/common => platforms}/avr/printf.mk | 0 .../common => platforms}/avr/sleep_led.c | 0 platforms/avr/suspend.c | 152 + {tmk_core/common => platforms}/avr/timer.c | 0 .../common => platforms}/avr/timer_avr.h | 0 {tmk_core/common => platforms}/avr/xprintf.S | 0 {tmk_core/common => platforms}/avr/xprintf.h | 0 {tmk_core/common => platforms}/bootloader.h | 0 .../BLACKPILL_STM32_F401/configs/mcuconf.h | 253 -- .../BLACKPILL_STM32_F411/configs/mcuconf.h | 253 -- .../GENERIC_STM32_F446XE/configs/mcuconf.h | 361 -- .../GENERIC_STM32_G431XB/configs/mcuconf.h | 307 -- .../GENERIC_STM32_G474XE/configs/mcuconf.h | 372 -- .../GENERIC_STM32_L433XC/configs/board.h | 24 - platforms/chibios/IC_TEENSY_3_1/board/board.c | 146 - .../chibios/QMK_PROTON_C/configs/chconf.h | 756 ---- .../chibios/QMK_PROTON_C/configs/config.h | 20 - .../chibios/QMK_PROTON_C/configs/halconf.h | 531 --- platforms/chibios/_timer.h | 19 + platforms/chibios/_wait.c | 89 + platforms/chibios/_wait.h | 60 + .../chibios/atomic_util.h | 0 .../BLACKPILL_STM32_F401/board/board.mk | 0 .../BLACKPILL_STM32_F401/configs/board.h | 0 .../configs/bootloader_defs.h | 0 .../BLACKPILL_STM32_F401/configs/config.h | 0 .../BLACKPILL_STM32_F401/configs/mcuconf.h | 244 ++ .../ld/STM32F401xC_tinyuf2.ld | 88 + .../ld/STM32F401xE_tinyuf2.ld | 88 + .../BLACKPILL_STM32_F411/board/board.mk | 0 .../BLACKPILL_STM32_F411/configs/board.h | 0 .../configs/bootloader_defs.h | 0 .../BLACKPILL_STM32_F411/configs/config.h | 0 .../BLACKPILL_STM32_F411/configs/mcuconf.h | 252 ++ .../ld/STM32F411xC_tinyuf2.ld | 0 .../ld/STM32F411xE_tinyuf2.ld | 0 .../GENERIC_STM32_F042X6/board/board.c | 0 .../GENERIC_STM32_F042X6/board/board.h | 0 .../GENERIC_STM32_F042X6/board/board.mk | 0 .../configs/bootloader_defs.h | 0 .../GENERIC_STM32_F042X6/configs/config.h | 0 .../GENERIC_STM32_F042X6/configs/mcuconf.h | 0 .../GENERIC_STM32_F072XB/board/board.mk | 0 .../GENERIC_STM32_F072XB/configs/board.h | 0 .../configs/bootloader_defs.h | 0 .../GENERIC_STM32_F072XB/configs/config.h | 0 .../GENERIC_STM32_F072XB/configs/mcuconf.h | 0 .../GENERIC_STM32_F303XC/board/board.mk | 0 .../GENERIC_STM32_F303XC/configs/board.h | 0 .../configs/bootloader_defs.h | 0 .../GENERIC_STM32_F303XC/configs/config.h | 0 .../GENERIC_STM32_F303XC/configs/mcuconf.h | 0 .../GENERIC_STM32_F405XG/board/board.mk | 9 + .../GENERIC_STM32_F405XG/configs/board.h | 28 + .../GENERIC_STM32_F405XG}/configs/config.h | 0 .../GENERIC_STM32_F405XG/configs/mcuconf.h | 352 ++ .../GENERIC_STM32_F407XE/board/board.mk | 9 + .../GENERIC_STM32_F407XE/configs/board.h | 24 + .../GENERIC_STM32_F407XE/configs/config.h | 23 + .../GENERIC_STM32_F407XE/configs/mcuconf.h | 352 ++ .../GENERIC_STM32_F446XE/board/board.mk | 0 .../GENERIC_STM32_F446XE/configs/board.h | 0 .../GENERIC_STM32_F446XE/configs/config.h | 23 + .../GENERIC_STM32_F446XE/configs/mcuconf.h | 373 ++ .../GENERIC_STM32_G431XB/board/board.mk | 0 .../GENERIC_STM32_G431XB/configs/config.h | 0 .../GENERIC_STM32_G431XB/configs/mcuconf.h | 322 ++ .../GENERIC_STM32_G474XE/board/board.mk | 0 .../GENERIC_STM32_G474XE/configs/config.h | 0 .../GENERIC_STM32_G474XE/configs/mcuconf.h | 387 ++ .../GENERIC_STM32_L412XB}/board/board.mk | 0 .../GENERIC_STM32_L412XB/configs/board.h | 24 + .../GENERIC_STM32_L412XB}/configs/config.h | 0 .../GENERIC_STM32_L412XB/configs/mcuconf.h | 282 ++ .../GENERIC_STM32_L433XC/board/board.mk | 9 + .../GENERIC_STM32_L433XC/configs/board.h | 24 + .../GENERIC_STM32_L433XC/configs/config.h | 26 + .../GENERIC_STM32_L433XC/configs/mcuconf.h | 0 .../boards/GENERIC_WB32_F3G71XX/board/board.c | 82 + .../boards/GENERIC_WB32_F3G71XX/board/board.h | 56 + .../GENERIC_WB32_F3G71XX}/board/board.mk | 0 .../configs/bootloader_defs.h | 12 + .../GENERIC_WB32_F3G71XX/configs/chconf.h | 26 + .../GENERIC_WB32_F3G71XX/configs/config.h | 20 + .../GENERIC_WB32_F3G71XX/configs/mcuconf.h | 168 + .../boards/IC_TEENSY_3_1/board/board.c | 151 + .../{ => boards}/IC_TEENSY_3_1/board/board.h | 0 .../IC_TEENSY_3_1}/board/board.mk | 0 .../boards/IC_TEENSY_4_1/board/board.mk | 1 + .../chibios/boards/IC_TEENSY_4_1/rules.mk | 1 + .../{ => boards}/QMK_PROTON_C/board/board.mk | 0 .../{ => boards}/QMK_PROTON_C/configs/board.h | 0 .../QMK_PROTON_C/configs/bootloader_defs.h | 0 .../boards/QMK_PROTON_C/configs/chconf.h | 756 ++++ .../boards/QMK_PROTON_C/configs/config.h | 29 + .../boards/QMK_PROTON_C/configs/halconf.h | 531 +++ .../QMK_PROTON_C/configs/mcuconf.h | 0 .../QMK_PROTON_C/convert_to_proton_c.mk | 0 .../boards/SIPEED_LONGAN_NANO/board/board.mk | 9 + .../SIPEED_LONGAN_NANO/configs/chconf.h | 23 + .../SIPEED_LONGAN_NANO/configs/mcuconf.h | 302 ++ .../STM32_F103_STM32DUINO/board/board.c | 0 .../STM32_F103_STM32DUINO/board/board.h | 0 .../STM32_F103_STM32DUINO/board/board.mk | 9 + .../STM32_F103_STM32DUINO/configs/mcuconf.h | 0 .../ld/STM32F103x8_stm32duino_bootloader.ld | 22 + .../ld/STM32F103xB_stm32duino_bootloader.ld | 22 + .../ld/stm32duino_bootloader_common.ld | 85 + .../chibios/boards/common/configs/chconf.h | 756 ++++ .../chibios/boards/common/configs/halconf.h | 531 +++ .../{ => boards}/common/ld/MKL26Z64.ld | 0 .../chibios/boards/common/ld/STM32F401xC.ld | 85 + .../chibios/boards/common/ld/STM32F401xE.ld | 85 + .../chibios/boards/common/ld/STM32F405xG.ld | 86 + .../chibios/boards/common/ld/STM32F411xE.ld | 85 + .../chibios/boards/common/ld/STM32L412xB.ld | 85 + .../keyboard-config-templates/board.h | 0 .../keyboard-config-templates/chconf.h | 0 .../keyboard-config-templates/halconf.h | 0 .../keyboard-config-templates/mcuconf.h | 0 .../common => platforms}/chibios/bootloader.c | 27 +- platforms/chibios/chibios_config.h | 90 + platforms/chibios/common/configs/chconf.h | 756 ---- platforms/chibios/common/configs/halconf.h | 531 --- .../ld/STM32F103x8_stm32duino_bootloader.ld | 85 - platforms/chibios/drivers/analog.c | 321 ++ .../chibios/drivers}/analog.h | 0 .../chibios/drivers/audio_dac.h | 0 .../chibios/drivers/audio_dac_additive.c | 0 .../chibios/drivers/audio_dac_basic.c | 0 .../chibios/drivers/audio_pwm.h | 0 .../chibios/drivers/audio_pwm_hardware.c | 144 + .../chibios/drivers/audio_pwm_software.c | 0 .../drivers}/eeprom/eeprom_stm32_L0_L1.c | 0 .../drivers}/eeprom/eeprom_stm32_L0_L1.h | 0 platforms/chibios/drivers/i2c_master.c | 147 + platforms/chibios/drivers/i2c_master.h | 102 + platforms/chibios/drivers/ps2/ps2_io.c | 55 + platforms/chibios/drivers/serial.c | 278 ++ platforms/chibios/drivers/serial_usart.c | 318 ++ platforms/chibios/drivers/serial_usart.h | 116 + platforms/chibios/drivers/spi_master.c | 260 ++ platforms/chibios/drivers/spi_master.h | 93 + platforms/chibios/drivers/uart.c | 58 + platforms/chibios/drivers/uart.h | 97 + .../chibios/drivers}/usbpd_stm32g4.c | 0 platforms/chibios/drivers/ws2812.c | 107 + .../chibios/drivers}/ws2812_pwm.c | 50 +- .../chibios/drivers}/ws2812_spi.c | 49 +- platforms/chibios/eeprom_stm32.c | 687 ++++ platforms/chibios/eeprom_stm32.h | 33 + platforms/chibios/eeprom_stm32_defs.h | 74 + platforms/chibios/eeprom_teensy.c | 795 ++++ platforms/chibios/flash.mk | 105 + .../chibios/flash_stm32.c | 87 +- .../chibios/flash_stm32.h | 8 +- platforms/chibios/gd32v_compatibility.h | 120 + platforms/chibios/gpio.h | 50 + .../common => platforms}/chibios/pin_defs.h | 0 platforms/chibios/platform.c | 22 + platforms/chibios/platform.mk | 443 +++ platforms/chibios/platform_deps.h | 19 + .../common => platforms}/chibios/sleep_led.c | 4 +- platforms/chibios/suspend.c | 92 + .../chibios/syscall-fallbacks.c | 7 + .../common => platforms}/chibios/timer.c | 0 platforms/chibios/wait.c | 41 + platforms/common.mk | 12 + {tmk_core/common => platforms}/eeprom.h | 0 {tmk_core/common => platforms}/gpio.h | 0 {tmk_core/common => platforms}/pin_defs.h | 0 {tmk_core/common => platforms}/progmem.h | 1 + {tmk_core/common => platforms}/sleep_led.h | 0 {tmk_core/common => platforms}/suspend.h | 2 + {tmk_core/common => platforms}/test/_wait.h | 0 .../common => platforms}/test/bootloader.c | 0 {tmk_core/common => platforms}/test/eeprom.c | 0 platforms/test/eeprom_stm32_tests.cpp | 438 +++ platforms/test/flash_stm32_mock.c | 49 + platforms/test/hal.h | 18 + platforms/test/platform.c | 21 + platforms/test/platform.h | 18 + platforms/test/platform.mk | 34 + platforms/test/platform_deps.h | 18 + platforms/test/rules.mk | 24 + {tmk_core/common => platforms}/test/suspend.c | 0 platforms/test/testlist.mk | 1 + {tmk_core/common => platforms}/test/timer.c | 0 platforms/timer.h | 67 + {tmk_core/common => platforms}/wait.h | 0 {tmk_core/common => quantum}/action.c | 368 +- {tmk_core/common => quantum}/action.h | 14 +- {tmk_core/common => quantum}/action_code.h | 0 {tmk_core/common => quantum}/action_layer.c | 12 +- {tmk_core/common => quantum}/action_layer.h | 29 +- {tmk_core/common => quantum}/action_macro.c | 0 {tmk_core/common => quantum}/action_macro.h | 0 quantum/action_tapping.c | 546 +++ {tmk_core/common => quantum}/action_tapping.h | 5 + {tmk_core/common => quantum}/action_util.c | 39 +- {tmk_core/common => quantum}/action_util.h | 0 quantum/api.c | 182 - quantum/api.h | 55 - quantum/api/api_sysex.c | 72 - quantum/api/api_sysex.h | 25 - quantum/audio/audio.c | 3 + quantum/audio/audio.h | 13 +- quantum/audio/driver_chibios_pwm_hardware.c | 144 - quantum/audio/luts.h | 10 +- quantum/audio/song_list.h | 8 +- quantum/audio/voices.h | 3 - quantum/backlight/backlight_avr.c | 88 +- quantum/backlight/backlight_chibios.c | 10 +- quantum/bootmagic/bootmagic.h | 4 +- quantum/bootmagic/bootmagic_full.c | 147 - quantum/bootmagic/bootmagic_full.h | 115 - quantum/bootmagic/bootmagic_lite.c | 8 +- quantum/color.h | 54 + quantum/command.c | 599 ++- quantum/command.h | 3 +- quantum/config_common.h | 3 - quantum/crc.c | 59 + quantum/crc.h | 44 + quantum/debounce.h | 2 + quantum/debounce/asym_eager_defer_pk.c | 171 + quantum/debounce/none.c | 31 + quantum/debounce/sym_defer_g.c | 28 +- quantum/debounce/sym_defer_pk.c | 67 +- quantum/debounce/sym_eager_pk.c | 74 +- quantum/debounce/sym_eager_pr.c | 78 +- .../tests/asym_eager_defer_pk_tests.cpp | 394 ++ .../debounce/tests/debounce_test_common.cpp | 205 + quantum/debounce/tests/debounce_test_common.h | 81 + quantum/debounce/tests/rules.mk | 44 + quantum/debounce/tests/sym_defer_g_tests.cpp | 238 ++ quantum/debounce/tests/sym_defer_pk_tests.cpp | 240 ++ quantum/debounce/tests/sym_eager_pk_tests.cpp | 253 ++ quantum/debounce/tests/sym_eager_pr_tests.cpp | 299 ++ quantum/debounce/tests/testlist.mk | 6 + quantum/deferred_exec.c | 152 + quantum/deferred_exec.h | 38 + quantum/digitizer.c | 34 + quantum/digitizer.h | 41 + quantum/dip_switch.c | 19 +- quantum/dip_switch.h | 8 +- quantum/dynamic_keymap.c | 2 +- {tmk_core/common => quantum}/eeconfig.c | 44 +- quantum/eeconfig.h | 139 + quantum/encoder.c | 5 + quantum/encoder/tests/encoder_tests.cpp | 144 + quantum/encoder/tests/encoder_tests_split.cpp | 143 + quantum/encoder/tests/mock.c | 34 + quantum/encoder/tests/mock.h | 40 + quantum/encoder/tests/mock_split.c | 36 + quantum/encoder/tests/mock_split.h | 48 + quantum/encoder/tests/rules.mk | 13 + quantum/encoder/tests/testlist.mk | 3 + {drivers/haptic => quantum}/haptic.c | 117 +- quantum/haptic.h | 104 + quantum/keyboard.c | 537 +++ {tmk_core/common => quantum}/keyboard.h | 0 quantum/keycode.h | 586 +++ quantum/keycode_config.c | 66 +- quantum/keycode_legacy.h | 53 + quantum/keymap_common.c | 11 +- quantum/keymap_extras/keymap_belgian.h | 49 +- quantum/keymap_extras/keymap_bepo.h | 219 +- quantum/keymap_extras/keymap_br_abnt2.h | 56 +- .../keymap_canadian_multilingual.h | 241 +- quantum/keymap_extras/keymap_colemak.h | 52 +- quantum/keymap_extras/keymap_croatian.h | 36 +- quantum/keymap_extras/keymap_czech.h | 36 +- quantum/keymap_extras/keymap_danish.h | 36 +- quantum/keymap_extras/keymap_dvorak.h | 20 +- quantum/keymap_extras/keymap_dvorak_fr.h | 24 +- quantum/keymap_extras/keymap_dvp.h | 20 +- quantum/keymap_extras/keymap_estonian.h | 36 +- quantum/keymap_extras/keymap_finnish.h | 36 +- quantum/keymap_extras/keymap_fr_ch.h | 115 +- quantum/keymap_extras/keymap_french.h | 47 +- quantum/keymap_extras/keymap_french_afnor.h | 60 +- quantum/keymap_extras/keymap_french_osx.h | 60 +- quantum/keymap_extras/keymap_german.h | 49 +- quantum/keymap_extras/keymap_german_ch.h | 54 +- quantum/keymap_extras/keymap_german_osx.h | 128 +- quantum/keymap_extras/keymap_greek.h | 36 +- quantum/keymap_extras/keymap_hebrew.h | 36 +- quantum/keymap_extras/keymap_hungarian.h | 55 +- quantum/keymap_extras/keymap_icelandic.h | 36 +- quantum/keymap_extras/keymap_irish.h | 36 +- quantum/keymap_extras/keymap_italian.h | 67 +- .../keymap_extras/keymap_italian_osx_ansi.h | 58 +- .../keymap_extras/keymap_italian_osx_iso.h | 66 +- quantum/keymap_extras/keymap_jp.h | 33 +- quantum/keymap_extras/keymap_korean.h | 24 +- quantum/keymap_extras/keymap_latvian.h | 50 +- .../keymap_extras/keymap_lithuanian_azerty.h | 36 +- .../keymap_extras/keymap_lithuanian_qwerty.h | 48 +- quantum/keymap_extras/keymap_neo2.h | 64 +- quantum/keymap_extras/keymap_norman.h | 20 +- quantum/keymap_extras/keymap_norwegian.h | 59 +- quantum/keymap_extras/keymap_plover.h | 10 +- quantum/keymap_extras/keymap_polish.h | 30 +- quantum/keymap_extras/keymap_portuguese.h | 36 +- .../keymap_extras/keymap_portuguese_osx_iso.h | 48 +- quantum/keymap_extras/keymap_romanian.h | 48 +- quantum/keymap_extras/keymap_russian.h | 30 +- quantum/keymap_extras/keymap_serbian.h | 36 +- quantum/keymap_extras/keymap_serbian_latin.h | 36 +- quantum/keymap_extras/keymap_slovak.h | 36 +- quantum/keymap_extras/keymap_slovenian.h | 44 +- quantum/keymap_extras/keymap_spanish.h | 45 +- quantum/keymap_extras/keymap_spanish_dvorak.h | 36 +- quantum/keymap_extras/keymap_steno.h | 17 + quantum/keymap_extras/keymap_swedish.h | 59 +- .../keymap_extras/keymap_swedish_osx_ansi.h | 240 ++ .../keymap_extras/keymap_swedish_osx_iso.h | 239 ++ .../keymap_swedish_pro_osx_ansi.h | 240 ++ .../keymap_swedish_pro_osx_iso.h | 239 ++ quantum/keymap_extras/keymap_turkish_f.h | 52 +- quantum/keymap_extras/keymap_turkish_q.h | 36 +- quantum/keymap_extras/keymap_uk.h | 111 +- quantum/keymap_extras/keymap_us_extended.h | 42 +- .../keymap_extras/keymap_us_international.h | 40 +- .../keymap_us_international_linux.h | 48 +- quantum/keymap_extras/keymap_workman.h | 49 +- quantum/keymap_extras/keymap_workman_zxcvm.h | 20 +- quantum/led_matrix.h | 160 - .../led_matrix/animations/alpha_mods_anim.h | 24 + .../animations}/band_anim.h | 4 +- .../animations}/band_pinwheel_anim.h | 4 +- .../animations}/band_spiral_anim.h | 4 +- .../led_matrix/animations/breathing_anim.h | 19 + .../animations/cycle_left_right_anim.h | 10 + .../led_matrix/animations/cycle_out_in_anim.h | 10 + .../animations/cycle_up_down_anim.h | 10 + .../led_matrix/animations/dual_beacon_anim.h | 10 + .../animations/led_matrix_effects.inc | 18 + .../animations/runners/effect_runner_dx_dy.h | 16 + .../runners/effect_runner_dx_dy_dist.h | 17 + .../animations/runners/effect_runner_i.h | 14 + .../runners/effect_runner_reactive.h | 28 + .../runners/effect_runner_reactive_splash.h | 26 + .../runners/effect_runner_sin_cos_i.h | 16 + .../animations/runners/led_matrix_runners.inc | 6 + .../animations}/solid_anim.h | 2 +- .../animations/solid_reactive_cross.h | 35 + .../animations/solid_reactive_nexus.h | 32 + .../animations/solid_reactive_simple_anim.h | 12 + .../animations/solid_reactive_wide.h | 30 + .../led_matrix/animations/solid_splash_anim.h | 30 + .../animations}/wave_left_right_anim.h | 4 +- .../animations}/wave_up_down_anim.h | 4 +- quantum/{ => led_matrix}/led_matrix.c | 69 +- quantum/led_matrix/led_matrix.h | 191 + quantum/led_matrix/led_matrix_drivers.c | 148 + quantum/{ => led_matrix}/led_matrix_types.h | 0 .../led_matrix_animations/alpha_mods_anim.h | 24 - .../led_matrix_animations/breathing_anim.h | 19 - .../cycle_left_right_anim.h | 10 - .../led_matrix_animations/cycle_out_in_anim.h | 10 - .../cycle_up_down_anim.h | 10 - .../led_matrix_animations/dual_beacon_anim.h | 10 - .../led_matrix_effects.inc | 18 - .../solid_reactive_cross.h | 35 - .../solid_reactive_nexus.h | 32 - .../solid_reactive_simple_anim.h | 12 - .../solid_reactive_wide.h | 30 - .../led_matrix_animations/solid_splash_anim.h | 30 - quantum/led_matrix_drivers.c | 153 - .../led_matrix_runners/effect_runner_dx_dy.h | 16 - .../effect_runner_dx_dy_dist.h | 17 - quantum/led_matrix_runners/effect_runner_i.h | 14 - .../effect_runner_reactive.h | 28 - .../effect_runner_reactive_splash.h | 26 - .../effect_runner_sin_cos_i.h | 16 - {tmk_core/common => quantum/logging}/debug.c | 0 {tmk_core/common => quantum/logging}/debug.h | 2 +- .../common => quantum/logging}/nodebug.h | 0 .../printf.c => quantum/logging/print.c | 0 {tmk_core/common => quantum/logging}/print.h | 2 +- quantum/logging/print.mk | 9 + quantum/logging/sendchar.c | 20 + .../common => quantum/logging}/sendchar.h | 0 quantum/main.c | 73 + quantum/matrix.c | 294 +- quantum/matrix.h | 2 +- quantum/matrix_common.c | 2 +- quantum/mcu_selection.mk | 570 --- quantum/mousekey.c | 2 + quantum/mousekey.h | 11 +- quantum/pointing_device.c | 124 +- quantum/pointing_device.h | 59 + quantum/pointing_device_drivers.c | 262 ++ quantum/process_keycode/process_auto_shift.c | 425 +- quantum/process_keycode/process_auto_shift.h | 22 +- quantum/process_keycode/process_combo.c | 566 ++- quantum/process_keycode/process_combo.h | 38 +- .../process_dynamic_tapping_term.c | 50 + .../process_dynamic_tapping_term.h | 26 + quantum/process_keycode/process_haptic.c | 150 + quantum/process_keycode/process_haptic.h | 21 + .../process_keycode/process_key_override.c | 518 +++ .../process_keycode/process_key_override.h | 153 + quantum/process_keycode/process_magic.c | 4 + quantum/process_keycode/process_music.c | 8 +- quantum/process_keycode/process_music.h | 2 +- quantum/process_keycode/process_printer.c | 32 +- quantum/process_keycode/process_printer_bb.c | 32 +- .../process_programmable_button.c | 31 + .../process_programmable_button.h | 23 + quantum/process_keycode/process_rgb.c | 7 +- quantum/process_keycode/process_space_cadet.c | 24 +- quantum/process_keycode/process_steno.c | 14 + quantum/process_keycode/process_tap_dance.c | 6 +- quantum/process_keycode/process_tap_dance.h | 2 +- quantum/process_keycode/process_terminal.c | 10 +- quantum/process_keycode/process_ucis.c | 18 +- .../process_keycode/process_unicode_common.c | 54 +- .../process_keycode/process_unicode_common.h | 4 +- quantum/programmable_button.c | 37 + quantum/programmable_button.h | 30 + quantum/quantum.c | 257 +- quantum/quantum.h | 50 +- quantum/quantum_keycodes.h | 214 +- {tmk_core/common => quantum}/raw_hid.h | 0 quantum/rgb.h | 39 - .../rgb_matrix/animations/alpha_mods_anim.h | 26 + .../rgb_matrix/animations/breathing_anim.h | 20 + .../animations}/colorband_pinwheel_sat_anim.h | 4 +- .../animations}/colorband_pinwheel_val_anim.h | 4 +- .../animations}/colorband_sat_anim.h | 4 +- .../animations}/colorband_spiral_sat_anim.h | 4 +- .../animations}/colorband_spiral_val_anim.h | 4 +- .../animations}/colorband_val_anim.h | 4 +- .../animations}/cycle_all_anim.h | 4 +- .../animations/cycle_left_right_anim.h | 13 + .../rgb_matrix/animations/cycle_out_in_anim.h | 13 + .../animations}/cycle_out_in_dual_anim.h | 4 +- .../animations}/cycle_pinwheel_anim.h | 4 +- .../animations}/cycle_spiral_anim.h | 4 +- .../animations/cycle_up_down_anim.h | 13 + .../animations}/digital_rain_anim.h | 4 +- .../rgb_matrix/animations/dual_beacon_anim.h | 13 + .../animations}/gradient_left_right_anim.h | 6 +- .../animations}/gradient_up_down_anim.h | 6 +- .../animations}/hue_breathing_anim.h | 4 +- .../animations}/hue_pendulum_anim.h | 2 +- .../animations}/hue_wave_anim.h | 2 +- .../animations}/jellybean_raindrops_anim.h | 8 +- .../animations/pixel_fractal_anim.h | 74 + .../rgb_matrix/animations/pixel_rain_anim.h | 48 + .../animations}/rainbow_beacon_anim.h | 4 +- .../animations}/rainbow_moving_chevron_anim.h | 4 +- .../animations}/rainbow_pinwheels_anim.h | 4 +- .../animations}/raindrops_anim.h | 6 +- .../animations/rgb_matrix_effects.inc | 39 + .../animations/runners/effect_runner_dx_dy.h | 17 + .../runners/effect_runner_dx_dy_dist.h | 18 + .../animations/runners/effect_runner_i.h | 15 + .../runners/effect_runner_reactive.h | 29 + .../runners/effect_runner_reactive_splash.h | 29 + .../runners/effect_runner_sin_cos_i.h | 17 + .../animations/runners/rgb_matrix_runners.inc | 6 + .../animations}/solid_color_anim.h | 2 +- .../animations}/solid_reactive_anim.h | 4 +- .../animations/solid_reactive_cross.h | 36 + .../animations/solid_reactive_nexus.h | 34 + .../animations/solid_reactive_simple_anim.h | 15 + .../animations/solid_reactive_wide.h | 31 + .../rgb_matrix/animations/solid_splash_anim.h | 31 + quantum/rgb_matrix/animations/splash_anim.h | 32 + .../animations}/typing_heatmap_anim.h | 4 +- quantum/{ => rgb_matrix}/rgb_matrix.c | 66 +- quantum/{ => rgb_matrix}/rgb_matrix.h | 52 +- quantum/rgb_matrix/rgb_matrix_drivers.c | 328 ++ quantum/{ => rgb_matrix}/rgb_matrix_types.h | 0 .../rgb_matrix_animations/alpha_mods_anim.h | 26 - .../rgb_matrix_animations/breathing_anim.h | 20 - .../cycle_left_right_anim.h | 13 - .../rgb_matrix_animations/cycle_out_in_anim.h | 13 - .../cycle_up_down_anim.h | 13 - .../rgb_matrix_animations/dual_beacon_anim.h | 13 - .../rgb_matrix_effects.inc | 37 - .../solid_reactive_cross.h | 36 - .../solid_reactive_nexus.h | 34 - .../solid_reactive_simple_anim.h | 15 - .../solid_reactive_wide.h | 31 - .../rgb_matrix_animations/solid_splash_anim.h | 31 - quantum/rgb_matrix_animations/splash_anim.h | 32 - quantum/rgb_matrix_drivers.c | 212 - .../rgb_matrix_runners/effect_runner_dx_dy.h | 17 - .../effect_runner_dx_dy_dist.h | 18 - quantum/rgb_matrix_runners/effect_runner_i.h | 15 - .../effect_runner_reactive.h | 29 - .../effect_runner_reactive_splash.h | 29 - .../effect_runner_sin_cos_i.h | 17 - quantum/{ => rgblight}/rgblight.c | 23 +- quantum/{ => rgblight}/rgblight.h | 196 +- .../{ => rgblight}/rgblight_breathe_table.h | 0 quantum/{ => rgblight}/rgblight_list.h | 46 +- quantum/{ => rgblight}/rgblight_modes.h | 0 quantum/{ => rgblight}/rgblight_post_config.h | 0 quantum/send_string.c | 8 + quantum/sequencer/sequencer.c | 2 +- quantum/sequencer/sequencer.h | 2 +- quantum/sequencer/tests/rules.mk | 4 +- quantum/sequencer/tests/sequencer_tests.cpp | 26 +- quantum/serial_link/LICENSE | 19 - quantum/serial_link/README.md | 1 - quantum/serial_link/protocol/byte_stuffer.c | 135 - quantum/serial_link/protocol/byte_stuffer.h | 34 - quantum/serial_link/protocol/frame_router.c | 64 - quantum/serial_link/protocol/frame_router.h | 35 - .../serial_link/protocol/frame_validator.c | 57 - .../serial_link/protocol/frame_validator.h | 31 - quantum/serial_link/protocol/physical.h | 27 - quantum/serial_link/protocol/transport.c | 121 - quantum/serial_link/protocol/transport.h | 139 - .../protocol/triple_buffered_object.c | 77 - .../protocol/triple_buffered_object.h | 44 - quantum/serial_link/system/serial_link.c | 228 -- quantum/serial_link/system/serial_link.h | 54 - quantum/serial_link/tests/Makefile | 61 - .../serial_link/tests/byte_stuffer_tests.cpp | 450 --- .../serial_link/tests/frame_router_tests.cpp | 204 - .../tests/frame_validator_tests.cpp | 100 - quantum/serial_link/tests/rules.mk | 22 - quantum/serial_link/tests/testlist.mk | 6 - quantum/serial_link/tests/transport_tests.cpp | 184 - .../tests/triple_buffered_object_tests.cpp | 80 - quantum/split_common/matrix.c | 309 -- quantum/split_common/post_config.h | 9 - quantum/split_common/split_util.c | 57 +- quantum/split_common/split_util.h | 5 + quantum/split_common/transaction_id_define.h | 102 + quantum/split_common/transactions.c | 723 ++++ quantum/split_common/transactions.h | 54 + quantum/split_common/transport.c | 484 +-- quantum/split_common/transport.h | 173 + {tmk_core/common => quantum}/sync_timer.c | 0 {tmk_core/common => quantum}/sync_timer.h | 0 quantum/template/avr/config.h | 152 - quantum/template/avr/readme.md | 19 - quantum/template/avr/rules.mk | 22 - quantum/template/base/info.json | 19 - quantum/template/base/keyboard.c | 17 - quantum/template/base/keyboard.h | 35 - .../template/base/keymaps/default/keymap.c | 62 - .../template/base/keymaps/default/readme.md | 1 - quantum/template/ps2avrgb/config.h | 142 - quantum/template/ps2avrgb/readme.md | 21 - quantum/template/ps2avrgb/rules.mk | 19 - quantum/tools/readme.md | 6 - quantum/via.c | 44 +- quantum/via.h | 8 +- quantum/via_ensure_keycode.h | 670 ++-- {tmk_core/common => quantum}/virtser.h | 2 + quantum/visualizer/LICENSE.md | 29 - quantum/visualizer/common_gfxconf.h | 354 -- quantum/visualizer/default_animations.c | 177 - quantum/visualizer/default_animations.h | 27 - quantum/visualizer/lcd_backlight.c | 87 - quantum/visualizer/lcd_backlight.h | 43 - quantum/visualizer/lcd_backlight_keyframes.c | 69 - quantum/visualizer/lcd_backlight_keyframes.h | 27 - quantum/visualizer/lcd_keyframes.c | 184 - quantum/visualizer/lcd_keyframes.h | 35 - quantum/visualizer/led_backlight_keyframes.c | 143 - quantum/visualizer/led_backlight_keyframes.h | 40 - quantum/visualizer/readme.md | 18 - quantum/visualizer/resources/lcd_logo.c | 45 - quantum/visualizer/resources/lcd_logo.png | Bin 271 -> 0 bytes quantum/visualizer/resources/resources.h | 23 - quantum/visualizer/visualizer.c | 483 --- quantum/visualizer/visualizer.h | 154 - quantum/visualizer/visualizer.mk | 123 - quantum/visualizer/visualizer_keyframes.c | 23 - quantum/visualizer/visualizer_keyframes.h | 23 - quantum/wpm.c | 94 +- quantum/wpm.h | 7 +- readme.md | 107 +- requirements-dev.txt | 1 + requirements.txt | 2 +- secrets.tar.enc | Bin 10256 -> 0 bytes shell.nix | 11 +- show_options.mk | 131 - testlist.mk | 9 +- tests/auto_shift/config.h | 19 + tests/auto_shift/test.mk | 20 + tests/auto_shift/test_auto_shift.cpp | 73 + tests/basic/config.h | 3 +- tests/basic/keymap.c | 45 - tests/basic/rules.mk | 16 - tests/basic/test.mk | 18 + tests/basic/test_action_layer.cpp | 427 +- tests/basic/test_keypress.cpp | 197 +- tests/basic/test_macro.cpp | 37 +- tests/basic/test_one_shot_keys.cpp | 197 + tests/basic/test_tapping.cpp | 50 +- .../default_mod_tap/config.h | 21 + .../default_mod_tap/test.mk | 18 + .../default_mod_tap/test_tap_hold.cpp | 230 ++ .../ignore_mod_tap_interrupt/config.h | 21 + .../ignore_mod_tap_interrupt/test.mk | 18 + .../test_tap_hold.cpp | 136 + .../permissive_hold/config.h | 21 + .../permissive_hold/test.mk | 18 + .../permissive_hold/test_one_shot_keys.cpp | 76 + .../permissive_hold/test_tap_hold.cpp | 132 + .../config.h | 22 + .../test.mk | 18 + .../test_tap_hold.cpp | 134 + .../retro_tapping/config.h | 21 + .../retro_tapping/test.mk | 18 + .../retro_tapping/test_tap_hold.cpp | 52 + .../retro_tapping/test_tapping.cpp | 112 + .../tapping_force_hold/config.h | 21 + .../tapping_force_hold/test.mk | 18 + .../tapping_force_hold/test_action_layer.cpp | 81 + .../tapping_force_hold/test_tap_hold.cpp | 215 + tests/test_common/build.mk | 16 + tests/test_common/keyboard_report_util.cpp | 23 +- tests/test_common/keymap.c | 33 + tests/test_common/main.cpp | 32 + tests/test_common/test_common.h | 4 + tests/test_common/test_driver.cpp | 5 +- tests/test_common/test_driver.hpp | 29 +- tests/test_common/test_fixture.cpp | 148 +- tests/test_common/test_fixture.hpp | 21 +- tests/test_common/test_keymap_key.cpp | 30 + tests/test_common/test_keymap_key.hpp | 46 + tests/test_common/test_logger.cpp | 39 + tests/test_common/test_logger.hpp | 35 + tmk_core/arm_atsam.mk | 63 - tmk_core/avr.mk | 333 -- tmk_core/chibios.mk | 415 -- tmk_core/common.mk | 135 - tmk_core/common/action_tapping.c | 426 -- tmk_core/common/arm_atsam/_print.h | 34 - tmk_core/common/arm_atsam/eeprom.c | 98 - tmk_core/common/arm_atsam/printf.c | 72 - tmk_core/common/arm_atsam/printf.h | 7 - tmk_core/common/arm_atsam/printf.mk | 1 - tmk_core/common/avr/_wait.h | 29 - tmk_core/common/avr/gpio.h | 34 - tmk_core/common/avr/suspend.c | 246 -- tmk_core/common/chibios/_wait.h | 55 - tmk_core/common/chibios/chibios_config.h | 40 - tmk_core/common/chibios/eeprom_stm32.c | 198 - tmk_core/common/chibios/eeprom_stm32.h | 84 - tmk_core/common/chibios/eeprom_teensy.c | 610 --- tmk_core/common/chibios/gpio.h | 34 - tmk_core/common/chibios/suspend.c | 169 - tmk_core/common/chibios/wait.c | 89 - tmk_core/common/eeconfig.h | 113 - tmk_core/common/host.c | 102 - tmk_core/common/keyboard.c | 534 --- tmk_core/common/keycode.h | 560 --- tmk_core/common/lib_printf.mk | 9 - tmk_core/common/sendchar_null.c | 19 - tmk_core/common/sendchar_uart.c | 23 - tmk_core/common/timer.h | 52 - tmk_core/native.mk | 29 - tmk_core/protocol.mk | 92 +- tmk_core/protocol/arm_atsam.mk | 7 +- .../protocol/arm_atsam/arm_atsam_protocol.h | 4 +- tmk_core/protocol/arm_atsam/i2c_master.c | 19 + tmk_core/protocol/arm_atsam/i2c_master.h | 9 + tmk_core/protocol/arm_atsam/main_arm_atsam.c | 69 +- tmk_core/protocol/arm_atsam/md_rgb_matrix.c | 104 +- tmk_core/protocol/arm_atsam/md_rgb_matrix.h | 66 +- tmk_core/protocol/arm_atsam/shift_register.c | 118 + tmk_core/protocol/arm_atsam/shift_register.h | 49 + tmk_core/protocol/arm_atsam/spi.c | 92 - tmk_core/protocol/arm_atsam/spi.h | 70 - tmk_core/protocol/arm_atsam/spi_master.c | 109 + tmk_core/protocol/arm_atsam/spi_master.h | 48 + .../protocol/arm_atsam/usb/udi_device_conf.h | 10 +- tmk_core/protocol/arm_atsam/usb/usb2422.c | 426 -- tmk_core/protocol/arm_atsam/usb/usb2422.h | 402 -- tmk_core/protocol/arm_atsam/usb/usb_hub.c | 340 ++ tmk_core/protocol/arm_atsam/usb/usb_hub.h | 51 + tmk_core/protocol/chibios.mk | 2 +- tmk_core/protocol/chibios/chibios.c | 218 ++ tmk_core/protocol/chibios/main.c | 262 -- tmk_core/protocol/chibios/usb_main.c | 113 +- tmk_core/protocol/chibios/usb_util.c | 2 +- tmk_core/protocol/host.c | 138 + tmk_core/{common => protocol}/host.h | 2 + tmk_core/{common => protocol}/host_driver.h | 3 + tmk_core/protocol/ibm4704.c | 185 - tmk_core/protocol/ibm4704.h | 103 - tmk_core/protocol/lufa.mk | 28 - tmk_core/protocol/lufa/lufa.c | 186 +- tmk_core/protocol/lufa/lufa.h | 11 - tmk_core/protocol/lufa/usb_util.c | 2 +- tmk_core/protocol/midi/qmk_midi.c | 41 - tmk_core/protocol/news.c | 161 - tmk_core/protocol/news.h | 48 - tmk_core/protocol/next_kbd.c | 219 -- tmk_core/protocol/next_kbd.h | 60 - tmk_core/protocol/ps2_io_avr.c | 58 - tmk_core/{common => protocol}/report.c | 16 +- tmk_core/{common => protocol}/report.h | 20 +- tmk_core/protocol/serial_mouse.h | 29 - tmk_core/protocol/serial_mouse_microsoft.c | 113 - tmk_core/protocol/serial_mouse_mousesystems.c | 119 - tmk_core/protocol/usb_descriptor.c | 126 +- tmk_core/protocol/usb_descriptor.h | 27 +- tmk_core/protocol/usb_descriptor_common.h | 4 + tmk_core/protocol/usb_device_state.c | 59 + tmk_core/protocol/usb_device_state.h | 39 + tmk_core/protocol/usb_hid.mk | 12 +- tmk_core/protocol/usb_hid/override_wiring.c | 2 +- tmk_core/protocol/usb_hid/parser.h | 5 +- tmk_core/protocol/usb_hid/usb_hid.h | 6 +- tmk_core/{common => protocol}/usb_util.c | 2 +- tmk_core/{common => protocol}/usb_util.h | 2 +- tmk_core/protocol/vusb.mk | 2 +- tmk_core/protocol/vusb/main.c | 179 - tmk_core/protocol/vusb/protocol.c | 172 + tmk_core/protocol/vusb/usb_util.c | 2 +- tmk_core/protocol/vusb/vusb.c | 92 +- tmk_core/readme.md | 11 +- tmk_core/rules.mk | 69 +- users/333fred/333fred.c | 2 +- users/ajp10304/ajp10304.c | 16 + users/ajp10304/ajp10304.h | 16 + users/ajp10304/readme.md | 6 +- users/arkag/arkag.c | 4 + users/bbaserdem/bbaserdem.c | 10 +- users/bbaserdem/rules.mk | 4 +- users/bcat/bcat.c | 16 + users/bcat/bcat.h | 18 +- users/bcat/config.h | 2 +- users/bcat/readme.md | 2 +- users/bcat/rules.mk | 4 +- users/billypython/billypython.c | 2 +- users/bocaj/.gitignore | 1 - users/bocaj/.gitlab-ci.yml | 24 - users/bocaj/bocaj.c | 210 - users/bocaj/bocaj.h | 73 - users/bocaj/config.h | 113 - users/bocaj/process_records.c | 111 - users/bocaj/process_records.h | 44 - users/bocaj/readme.md | 5 - users/bocaj/rgb_matrix_stuff.c | 106 - users/bocaj/rgb_matrix_stuff.h | 10 - users/bocaj/rules.mk | 26 - users/bocaj/wrappers.h | 193 - users/curry/config.h | 76 +- users/curry/oled.c | 3 +- users/curry/rules.mk | 2 +- users/cwebster2/keycodes.c | 17 +- users/cwebster2/my_miryoku.h | 24 +- users/cwebster2/rules.mk | 2 +- users/d4mation/rules.mk | 2 +- users/danielo515/process_records.h | 4 +- users/dennytom/chording_engine/chord.py | 3 +- users/doogle999/rules.mk | 2 +- users/draevin/rules.mk | 2 +- users/drashna/config.h | 277 +- users/drashna/drashna.c | 165 +- users/drashna/drashna.h | 57 +- users/drashna/drashna_font.h | 2362 +++++------ users/drashna/drashna_transport.c | 603 --- users/drashna/oled_stuff.c | 249 +- users/drashna/oled_stuff.h | 180 +- users/drashna/pimoroni_trackball.c | 151 - users/drashna/pimoroni_trackball.h | 35 - users/drashna/post_config.h | 139 + users/drashna/process_records.c | 77 +- users/drashna/process_records.h | 114 +- users/drashna/rgb_matrix_stuff.c | 37 +- users/drashna/rgb_stuff.c | 169 +- users/drashna/rgb_stuff.h | 13 - users/drashna/rules.mk | 66 +- users/drashna/tap_dances.h | 4 +- users/drashna/transport_sync.c | 174 + users/drashna/transport_sync.h | 36 + users/drashna/unicoooode.c | 282 ++ users/drashna/wrappers.h | 257 +- users/dshields/config.h | 82 +- users/dshields/rules.mk | 1 - users/edvorakjp/edvorakjp.c | 2 +- users/edvorakjp/edvorakjp.h | 2 +- users/ericgebhart/base_layers.h | 2 +- users/ericgebhart/core_keys.h | 2 +- users/ericgebhart/core_keysets.h | 36 +- users/ericgebhart/ericgebhart.c | 22 +- users/ericgebhart/rules.mk | 3 +- users/gordon/rules.mk | 1 - users/haervig/config.h | 19 + users/haervig/haervig.c | 234 ++ users/haervig/haervig.h | 297 ++ users/haervig/readme.md | 11 + users/haervig/rules.mk | 5 + users/hvp/config.h | 18 + users/hvp/hvp.h | 38 +- users/hvp/per_key.c | 43 + users/hvp/rules.mk | 7 +- users/hvp/tap_dances.h | 21 +- users/ibnuda/abstraction.c | 17 + users/ibnuda/abstraction.h | 117 + users/ibnuda/combo.h | 109 +- users/ibnuda/config.h | 8 +- users/ibnuda/ibnuda.h | 52 +- users/ibnuda/rules.mk | 6 - users/ibnuda/tapdance.c | 83 - users/ibnuda/tapdance.h | 23 - users/ibnuda/wrapper.h | 38 - users/imchipwood/imchipwood.c | 141 + users/imchipwood/imchipwood.h | 51 + users/imchipwood/rules.mk | 2 + users/issmirnov/rules.mk | 2 +- users/jdelkins/jdelkins.c | 19 +- users/jdelkins/rules.mk | 11 +- users/jjerrell/.gitignore | 1 + users/jjerrell/config.h | 26 + users/jjerrell/jjerrell.c | 138 + users/jjerrell/jjerrell.h | 53 + users/jjerrell/process_records.c | 139 + users/jjerrell/process_records.h | 41 + users/jjerrell/readme.md | 50 + users/jjerrell/rules.mk | 27 + users/jjerrell/wrappers.h | 329 ++ users/jonavin/config.h | 31 + users/jonavin/jonavin.c | 233 ++ users/jonavin/jonavin.h | 129 + users/jonavin/jonavin_encoder.c | 219 ++ users/jonavin/readme.md | 124 + users/jonavin/rules.mk | 29 + users/konstantin/config.h | 18 +- users/konstantin/konstantin.c | 86 +- users/konstantin/konstantin.h | 42 +- users/konstantin/post_config.h | 22 + users/konstantin/rgb.c | 16 + users/konstantin/rgb.h | 16 + users/konstantin/tap_dance.c | 16 + users/konstantin/tap_dance.h | 16 + users/konstantin/unicode.c | 16 + users/konstantin/unicode.h | 16 + users/kuatsure/kuatsure.c | 14 +- users/kuatsure/kuatsure.h | 10 +- users/kuchosauronad0/kuchosauronad0.c | 4 +- users/losinggeneration/rules.mk | 1 - users/manna-harbour_miryoku/README.org | 1 - users/manna-harbour_miryoku/config.h | 14 +- .../manna-harbour_miryoku.c | 276 +- .../manna-harbour_miryoku.h | 46 +- users/manna-harbour_miryoku/miryoku.org | 860 ---- users/manna-harbour_miryoku/readme.org | 2671 +++++++++++++ users/manna-harbour_miryoku/rules.mk | 26 +- users/mechmerlin/changelog.md | 13 + users/mechmerlin/config.h | 4 + users/mechmerlin/mechmerlin.c | 7 +- users/mechmerlin/mechmerlin.h | 2 +- users/mechmerlin/readme.md | 10 +- .../handwired/ms_sculpt_mobile/rules.mk | 2 +- users/mnil/mnil.c | 16 +- users/moults31/gdb.c | 59 + users/moults31/gdb.h | 21 + users/moults31/moults31.c | 114 + users/moults31/moults31.h | 61 + users/moults31/obs.c | 80 + users/moults31/obs.h | 21 + users/moults31/readme.md | 5 + users/moults31/rules.mk | 10 + users/moults31/vscode.c | 90 + users/moults31/vscode.h | 21 + users/mtdjr/mtdjr.c | 2 +- users/narze/narze.h | 4 + users/narze/readme.md | 23 +- users/ninjonas/oled.c | 23 +- users/ninjonas/process_records.c | 4 +- users/ninjonas/process_records.h | 2 +- users/ninjonas/rules.mk | 2 +- users/noroadsleft/readme.md | 4 +- users/nstickney/config.h | 63 + users/nstickney/nstickney.c | 112 +- users/nstickney/nstickney.h | 46 +- users/nstickney/readme.md | 49 + users/nstickney/rules.mk | 34 +- users/nstickney/unicodemap.h | 106 + users/pvinis/pvinis.c | 2 +- users/replicaJunction/config.h | 66 - users/replicaJunction/features/.gitignore | 2 + users/replicaJunction/features/caps_word.c | 105 + users/replicaJunction/features/caps_word.h | 26 + users/replicaJunction/features/mouse_jiggle.c | 46 + users/replicaJunction/features/mouse_jiggle.h | 23 + users/replicaJunction/features/num_word.c | 129 + users/replicaJunction/features/num_word.h | 27 + users/replicaJunction/features/secrets.c | 51 + users/replicaJunction/features/secrets.h | 30 + .../replicaJunction/features/super_alt_tab.c | 52 + .../replicaJunction/features/super_alt_tab.h | 27 + users/replicaJunction/keycode_aliases.h | 85 + users/replicaJunction/matrix_scan.c | 35 + users/replicaJunction/process_records.c | 149 + users/replicaJunction/process_records.h | 21 + users/replicaJunction/readme.md | 101 +- users/replicaJunction/replicaJunction.c | 164 +- users/replicaJunction/replicaJunction.h | 138 +- users/replicaJunction/rj_keycodes.h | 63 + users/replicaJunction/rj_layers.h | 40 + users/replicaJunction/rules.mk | 32 + users/riblee/riblee.c | 69 +- users/riblee/riblee.h | 2 + users/ridingqwerty/rules.mk | 2 +- users/romus/romus.c | 26 +- users/romus/rules.mk | 4 +- users/sethBarberee/sethBarberee.c | 2 +- users/sigul/sigul.c | 20 +- users/sigul/sigul.h | 8 +- users/snowe/oled_setup.c | 7 +- users/snowe/oled_setup.h | 4 +- users/snowe/readme_ocean_dream.md | 5 +- users/snowe/rules.mk | 2 +- users/snowe/snowe.h | 2 +- users/spacebarracecar/spacebarracecar.c | 12 +- users/spidey3/config.h | 4 +- users/spidey3/rules.mk | 2 +- users/spotpuff/rules.mk | 2 +- users/stanrc85/config.h | 10 +- users/stanrc85/layer_rgb.c | 2 +- users/stanrc85/rgb_layers.c | 36 + users/stanrc85/rgb_timeout.c | 62 + users/stanrc85/rgblight_layers_osa.c | 4 +- users/stanrc85/rules.mk | 11 + users/talljoe/rules.mk | 2 +- users/talljoe/talljoe.h | 1 + users/talljoe/visualizer.c | 21 - users/tominabox1/config.h | 56 +- users/tominabox1/rules.mk | 5 +- users/tominabox1/tominabox1.c | 11 +- users/turbomech/backupturbomech.c | 2 +- users/txkyel/config.h | 18 + users/txkyel/readme.md | 20 + users/txkyel/rules.mk | 5 + users/txkyel/tap_dance.c | 51 + users/txkyel/tap_dance.h | 33 + users/txkyel/tap_dance.md | 173 + users/txkyel/txkyel.c | 56 + users/txkyel/txkyel.h | 58 + users/wanleg/rules.mk | 4 +- users/xulkal/config.h | 10 +- users/xulkal/custom_oled.c | 3 +- users/xulkal/process_records.c | 2 +- users/xulkal/rules.mk | 2 +- users/yanfali/rules.mk | 2 +- users/zigotica/combos.c | 40 + users/zigotica/combos.h | 17 + users/zigotica/rows.h | 194 + users/zigotica/rules.mk | 18 + users/zigotica/tapdances.c | 34 + users/zigotica/tapdances.h | 24 + users/zigotica/zigotica.c | 14 + users/zigotica/zigotica.h | 51 + util/bootloader_at90usb128_1.0.1.hex | 2 +- util/bootloader_at90usb64_1.0.0.hex | 2 +- util/chibios_conf_updater.sh | 105 +- util/docker_build.sh | 2 +- util/generate_internal_docs.sh | 2 +- util/install/arch.sh | 5 +- util/install/debian.sh | 13 +- util/install/fedora.sh | 2 +- util/install/freebsd.sh | 2 +- util/install/gentoo.sh | 2 +- util/install/linux_shared.sh | 2 +- util/install/macos.sh | 4 +- util/install/msys2.sh | 2 +- util/install/slackware.sh | 2 +- util/install/solus.sh | 2 +- util/install/void.sh | 2 +- util/new_keyboard.sh | 14 +- {nix => util/nix}/poetry.lock | 121 +- util/nix/pyproject.toml | 36 + {nix => util/nix}/sources.json | 0 {nix => util/nix}/sources.nix | 0 util/qmk_install.sh | 4 +- .../tools/eeprom_reset.hex => util/reset.eep | 0 util/rules_cleaner.sh | 2 +- util/size_regression.sh | 79 + util/stm32eeprom_parser.py | 316 ++ util/travis_build.sh | 40 - util/travis_compiled_push.sh | 63 - util/travis_push.sh | 14 - util/travis_test.sh | 19 - util/travis_utils.sh | 25 - util/udev/50-qmk.rules | 9 + util/uf2conv.py | 8 +- util/update_chibios_mirror.sh | 92 + util/vagrant/Dockerfile | 2 +- util/vagrant/readme.md | 2 +- 13587 files changed, 366348 insertions(+), 162048 deletions(-) create mode 100644 .github/workflows/format_push.yaml create mode 100644 .github/workflows/unit_test.yml delete mode 100644 .travis.yml delete mode 100644 CODE_OF_CONDUCT.md delete mode 100755 bin/qmk rename bootloader.mk => builddefs/bootloader.mk (78%) rename disable_features.mk => builddefs/disable_features.mk (90%) create mode 100644 builddefs/generic_features.mk create mode 100644 builddefs/mcu_selection.mk rename message.mk => builddefs/message.mk (86%) create mode 100644 builddefs/show_options.mk delete mode 100644 common.mk create mode 100644 data/schemas/definitions.jsonschema create mode 100644 data/schemas/keymap.jsonschema create mode 100644 data/templates/avr/config.h create mode 100644 data/templates/avr/readme.md create mode 100644 data/templates/avr/rules.mk create mode 100644 data/templates/base/%(KEYBOARD)s.c create mode 100644 data/templates/base/%(KEYBOARD)s.h create mode 100644 data/templates/base/info.json create mode 100644 data/templates/base/keymaps/default/keymap.c create mode 100644 data/templates/base/keymaps/default/readme.md create mode 100644 data/templates/ps2avrgb/config.h create mode 100644 data/templates/ps2avrgb/readme.md create mode 100644 data/templates/ps2avrgb/rules.mk create mode 100644 docs/ChangeLog/20210828.md create mode 100644 docs/ChangeLog/20211127.md create mode 100644 docs/chibios_upgrade_instructions.md create mode 100644 docs/configurator_architecture.md create mode 100644 docs/configurator_diagram.drawio create mode 100644 docs/configurator_diagram.svg create mode 100644 docs/easy_maker.md create mode 100644 docs/feature_digitizer.md create mode 100644 docs/feature_key_overrides.md create mode 100644 docs/feature_programmable_button.md create mode 100644 docs/feature_st7565.md create mode 100644 docs/ja/ja_doc_status.sh create mode 100644 docs/ja/keycodes_basic.md create mode 100644 docs/ja/keycodes_us_ansi_shifted.md create mode 100644 docs/keycodes_magic.md create mode 100644 docs/squeezing_avr.md delete mode 100644 drivers/avr/analog.c delete mode 100644 drivers/avr/i2c_master.c delete mode 100644 drivers/avr/i2c_master.h delete mode 100644 drivers/avr/i2c_slave.c delete mode 100644 drivers/avr/i2c_slave.h delete mode 100644 drivers/avr/serial.c delete mode 100644 drivers/avr/serial.h delete mode 100644 drivers/avr/uart.c delete mode 100644 drivers/avr/uart.h delete mode 100644 drivers/avr/ws2812.c rename {tmk_core/protocol/lufa => drivers/bluetooth}/adafruit_ble.cpp (95%) rename {tmk_core/protocol/lufa => drivers/bluetooth}/adafruit_ble.h (100%) rename {tmk_core/protocol/lufa => drivers/bluetooth}/outputselect.c (100%) rename {tmk_core/protocol/lufa => drivers/bluetooth}/outputselect.h (100%) rename {tmk_core/protocol/lufa => drivers/bluetooth}/ringbuffer.hpp (100%) delete mode 100644 drivers/chibios/analog.c delete mode 100644 drivers/chibios/i2c_master.c delete mode 100644 drivers/chibios/i2c_master.h delete mode 100644 drivers/chibios/serial.c delete mode 100644 drivers/chibios/serial.h delete mode 100644 drivers/chibios/serial_usart.c delete mode 100644 drivers/chibios/serial_usart.h delete mode 100644 drivers/chibios/serial_usart_duplex.c delete mode 100644 drivers/chibios/spi_master.c delete mode 100644 drivers/chibios/spi_master.h delete mode 100644 drivers/chibios/uart.c delete mode 100644 drivers/chibios/uart.h delete mode 100644 drivers/chibios/ws2812.c delete mode 100644 drivers/haptic/haptic.h create mode 100644 drivers/lcd/st7565.c create mode 100644 drivers/lcd/st7565.h rename drivers/{apa102 => led}/apa102.c (96%) rename drivers/{apa102 => led}/apa102.h (100%) create mode 100644 drivers/led/aw20216.c create mode 100644 drivers/led/aw20216.h create mode 100644 drivers/led/ckled2001.c create mode 100644 drivers/led/ckled2001.h rename drivers/{ => led}/issi/is31fl3218.c (100%) rename drivers/{ => led}/issi/is31fl3218.h (100%) rename drivers/{ => led}/issi/is31fl3731-simple.c (94%) rename drivers/{ => led}/issi/is31fl3731-simple.h (98%) rename drivers/{ => led}/issi/is31fl3731.c (94%) rename drivers/{ => led}/issi/is31fl3731.h (98%) rename drivers/{ => led}/issi/is31fl3733.c (91%) rename drivers/{ => led}/issi/is31fl3733.h (91%) rename drivers/{ => led}/issi/is31fl3736.c (94%) rename drivers/{ => led}/issi/is31fl3736.h (88%) rename drivers/{ => led}/issi/is31fl3737.c (78%) rename drivers/{ => led}/issi/is31fl3737.h (88%) rename drivers/{ => led}/issi/is31fl3741.c (89%) rename drivers/{ => led}/issi/is31fl3741.h (94%) delete mode 100644 drivers/oled/oled_driver.c create mode 100644 drivers/oled/ssd1306_sh1106.c rename {tmk_core/protocol => drivers/ps2}/ps2.h (100%) rename {tmk_core/protocol => drivers/ps2}/ps2_busywait.c (100%) rename {tmk_core/protocol => drivers/ps2}/ps2_interrupt.c (76%) rename {tmk_core/protocol => drivers/ps2}/ps2_io.h (100%) rename {tmk_core/protocol => drivers/ps2}/ps2_mouse.c (94%) rename {tmk_core/protocol => drivers/ps2}/ps2_mouse.h (100%) delete mode 100644 drivers/qwiic/micro_oled.c delete mode 100644 drivers/qwiic/micro_oled.h delete mode 100644 drivers/qwiic/qwiic.c delete mode 100644 drivers/qwiic/qwiic.h delete mode 100644 drivers/qwiic/qwiic.mk delete mode 100644 drivers/qwiic/util/font5x7.h delete mode 100644 drivers/qwiic/util/font8x16.h create mode 100644 drivers/sensors/adns5050.c create mode 100644 drivers/sensors/adns5050.h create mode 100644 drivers/sensors/adns9800.c create mode 100644 drivers/sensors/adns9800.h create mode 100644 drivers/sensors/adns9800_srom_A6.h create mode 100644 drivers/sensors/analog_joystick.c create mode 100644 drivers/sensors/analog_joystick.h create mode 100644 drivers/sensors/cirque_pinnacle.c create mode 100644 drivers/sensors/cirque_pinnacle.h create mode 100644 drivers/sensors/cirque_pinnacle_i2c.c create mode 100644 drivers/sensors/cirque_pinnacle_spi.c create mode 100644 drivers/sensors/pimoroni_trackball.c create mode 100644 drivers/sensors/pimoroni_trackball.h create mode 100644 drivers/sensors/pmw3360.c create mode 100644 drivers/sensors/pmw3360.h create mode 100644 drivers/sensors/pmw3360_firmware.h create mode 100644 drivers/sensors/pmw3389_firmware.h create mode 100644 drivers/serial.h delete mode 100644 drivers/ugfx/gdisp/is31fl3731c/board_is31fl3731c_template.h delete mode 100644 drivers/ugfx/gdisp/is31fl3731c/driver.mk delete mode 100644 drivers/ugfx/gdisp/is31fl3731c/gdisp_is31fl3731c.c delete mode 100644 drivers/ugfx/gdisp/is31fl3731c/gdisp_lld_config.h delete mode 100644 drivers/ugfx/gdisp/st7565/board_st7565_template.h delete mode 100644 drivers/ugfx/gdisp/st7565/driver.mk delete mode 100644 drivers/ugfx/gdisp/st7565/gdisp_lld_ST7565.c delete mode 100644 drivers/ugfx/gdisp/st7565/gdisp_lld_config.h delete mode 100644 drivers/ugfx/gdisp/st7565/st7565.h create mode 100644 drivers/usb2422.c create mode 100644 drivers/usb2422.h create mode 100644 keyboards/0_sixty/underglow/config.h create mode 100644 keyboards/0_sixty/underglow/rules.mk create mode 100644 keyboards/0_sixty/underglow/underglow.h create mode 100644 keyboards/0xc7/61key/61key.c create mode 100644 keyboards/0xc7/61key/61key.h create mode 100644 keyboards/0xc7/61key/config.h create mode 100644 keyboards/0xc7/61key/info.json create mode 100644 keyboards/0xc7/61key/keymaps/default/keymap.c create mode 100644 keyboards/0xc7/61key/keymaps/via/keymap.c rename keyboards/{bm60rgb => 0xc7/61key}/keymaps/via/rules.mk (100%) create mode 100644 keyboards/0xc7/61key/readme.md create mode 100644 keyboards/0xc7/61key/rules.mk create mode 100644 keyboards/0xcb/1337/keymaps/conor/keymap.c rename keyboards/{bakeneko65/keymaps/via => 0xcb/1337/keymaps/conor}/rules.mk (100%) create mode 100644 keyboards/0xcb/static/config.h create mode 100644 keyboards/0xcb/static/gfxfont.c create mode 100644 keyboards/0xcb/static/info.json create mode 100644 keyboards/0xcb/static/keymaps/bongocat/keymap.c create mode 100644 keyboards/0xcb/static/keymaps/bongocat/rules.mk create mode 100644 keyboards/0xcb/static/keymaps/default/keymap.c create mode 100644 keyboards/0xcb/static/keymaps/via/keymap.c rename keyboards/{bm40hsrgb => 0xcb/static}/keymaps/via/rules.mk (100%) create mode 100644 keyboards/0xcb/static/readme.md create mode 100644 keyboards/0xcb/static/rules.mk create mode 100644 keyboards/0xcb/static/static.c create mode 100644 keyboards/0xcb/static/static.h create mode 100644 keyboards/3keyecosystem/2key2/2key2.c create mode 100644 keyboards/3keyecosystem/2key2/2key2.h create mode 100644 keyboards/3keyecosystem/2key2/config.h create mode 100644 keyboards/3keyecosystem/2key2/info.json create mode 100644 keyboards/3keyecosystem/2key2/keymaps/default/keymap.c create mode 100644 keyboards/3keyecosystem/2key2/keymaps/via/keymap.c rename keyboards/{bm68rgb => 3keyecosystem/2key2}/keymaps/via/rules.mk (100%) create mode 100644 keyboards/3keyecosystem/2key2/readme.md create mode 100644 keyboards/3keyecosystem/2key2/rules.mk create mode 100644 keyboards/3w6/info.json create mode 100644 keyboards/3w6/keymaps/default/keymap.c create mode 100644 keyboards/3w6/keymaps/helltm/keymap.c create mode 100644 keyboards/3w6/keymaps/manna-harbour_miryoku/config.h create mode 100644 keyboards/3w6/keymaps/manna-harbour_miryoku/keymap.c create mode 100644 keyboards/3w6/readme.md create mode 100644 keyboards/3w6/rev1/config.h create mode 100644 keyboards/3w6/rev1/matrix.c create mode 100644 keyboards/3w6/rev1/readme.md create mode 100644 keyboards/3w6/rev1/rev1.c create mode 100644 keyboards/3w6/rev1/rev1.h create mode 100644 keyboards/3w6/rev1/rules.mk create mode 100644 keyboards/3w6/rev2/config.h create mode 100644 keyboards/3w6/rev2/keymaps/default_pimoroni/config.h create mode 100644 keyboards/3w6/rev2/keymaps/default_pimoroni/keymap.c rename keyboards/{draculad/keymaps/pimoroni => 3w6/rev2/keymaps/default_pimoroni}/pimoroni_trackball.c (100%) rename keyboards/{draculad/keymaps/pimoroni => 3w6/rev2/keymaps/default_pimoroni}/pimoroni_trackball.h (100%) create mode 100644 keyboards/3w6/rev2/keymaps/default_pimoroni/rules.mk create mode 100644 keyboards/3w6/rev2/matrix.c create mode 100644 keyboards/3w6/rev2/readme.md create mode 100644 keyboards/3w6/rev2/rev2.c create mode 100644 keyboards/3w6/rev2/rev2.h create mode 100644 keyboards/3w6/rev2/rules.mk create mode 100644 keyboards/40percentclub/gherkin/keymaps/via/keymap.c rename keyboards/{bm16a => 40percentclub/gherkin}/keymaps/via/rules.mk (100%) create mode 100644 keyboards/40percentclub/nano/keymaps/drashna/config.h create mode 100644 keyboards/40percentclub/polyandry/config.h create mode 100644 keyboards/40percentclub/polyandry/info.json create mode 100644 keyboards/40percentclub/polyandry/keymaps/default/keymap.c create mode 100644 keyboards/40percentclub/polyandry/polyandry.c create mode 100644 keyboards/40percentclub/polyandry/polyandry.h create mode 100644 keyboards/40percentclub/polyandry/promicro/config.h create mode 100644 keyboards/40percentclub/polyandry/promicro/promicro.c create mode 100644 keyboards/40percentclub/polyandry/promicro/promicro.h create mode 100644 keyboards/40percentclub/polyandry/promicro/rules.mk create mode 100644 keyboards/40percentclub/polyandry/readme.md create mode 100644 keyboards/40percentclub/polyandry/rules.mk create mode 100644 keyboards/40percentclub/polyandry/teensy2/config.h create mode 100644 keyboards/40percentclub/polyandry/teensy2/rules.mk create mode 100644 keyboards/40percentclub/polyandry/teensy2/teensy2.c create mode 100644 keyboards/40percentclub/polyandry/teensy2/teensy2.h create mode 100644 keyboards/40percentclub/ut47/post_rules.mk create mode 100644 keyboards/a_dux/a_dux.c create mode 100644 keyboards/a_dux/a_dux.h create mode 100644 keyboards/a_dux/config.h create mode 100644 keyboards/a_dux/info.json create mode 100644 keyboards/a_dux/keymaps/daliusd/config.h create mode 100644 keyboards/a_dux/keymaps/daliusd/keymap.c create mode 100644 keyboards/a_dux/keymaps/daliusd/oneshot.c create mode 100644 keyboards/a_dux/keymaps/daliusd/oneshot.h create mode 100644 keyboards/a_dux/keymaps/daliusd/readme.md create mode 100644 keyboards/a_dux/keymaps/daliusd/rules.mk create mode 100644 keyboards/a_dux/keymaps/default/config.h create mode 100644 keyboards/a_dux/keymaps/default/keymap.json create mode 100644 keyboards/a_dux/keymaps/default/readme.md create mode 100644 keyboards/a_dux/keymaps/jcmkk3/keymap.c create mode 100644 keyboards/a_dux/keymaps/jcmkk3/oneshot.c create mode 100644 keyboards/a_dux/keymaps/jcmkk3/oneshot.h create mode 100644 keyboards/a_dux/keymaps/jcmkk3/rules.mk create mode 100644 keyboards/a_dux/readme.md create mode 100644 keyboards/a_dux/rules.mk create mode 100644 keyboards/absinthe/keymaps/via/keymap.c create mode 100644 keyboards/absinthe/keymaps/via/rules.mk create mode 100644 keyboards/ai03/jp60/config.h create mode 100644 keyboards/ai03/jp60/info.json create mode 100644 keyboards/ai03/jp60/jp60.c create mode 100644 keyboards/ai03/jp60/jp60.h create mode 100644 keyboards/ai03/jp60/keymaps/default/config.h create mode 100644 keyboards/ai03/jp60/keymaps/default/keymap.c create mode 100644 keyboards/ai03/jp60/keymaps/default/readme.md create mode 100644 keyboards/ai03/jp60/keymaps/default/rules.mk create mode 100644 keyboards/ai03/jp60/keymaps/via/config.h create mode 100644 keyboards/ai03/jp60/keymaps/via/keymap.c create mode 100644 keyboards/ai03/jp60/keymaps/via/readme.md create mode 100644 keyboards/ai03/jp60/keymaps/via/rules.mk create mode 100644 keyboards/ai03/jp60/readme.md create mode 100644 keyboards/ai03/jp60/rules.mk delete mode 100644 keyboards/al1/keymaps/default/readme.md delete mode 100644 keyboards/alfredslab/swift65/solder/keymaps/default/readme.md delete mode 100644 keyboards/alfredslab/swift65/solder/keymaps/via/readme.md delete mode 100755 keyboards/amj60/keymaps/iso_split_rshift/build.sh delete mode 100644 keyboards/amj60/keymaps/iso_split_rshift/keymap.c delete mode 100644 keyboards/amj60/keymaps/iso_split_rshift/readme.md delete mode 100644 keyboards/amj60/keymaps/iso_split_rshift/rules.mk delete mode 100755 keyboards/amj60/keymaps/iso_split_rshift/updatemerge.sh delete mode 100644 keyboards/amj60/keymaps/maximized/keymap.c delete mode 100644 keyboards/amj96/keymaps/default/config.h delete mode 100644 keyboards/amj96/keymaps/default/readme.md delete mode 100644 keyboards/anavi/macropad2/config.h delete mode 100644 keyboards/anavi/macropad2/info.json delete mode 100644 keyboards/anavi/macropad2/keymaps/binary/keymap.c delete mode 100644 keyboards/anavi/macropad2/keymaps/copypaste/keymap.c delete mode 100644 keyboards/anavi/macropad2/keymaps/default/keymap.c delete mode 100644 keyboards/anavi/macropad2/keymaps/git/keymap.c delete mode 100644 keyboards/anavi/macropad2/keymaps/google-meet/keymap.c delete mode 100644 keyboards/anavi/macropad2/keymaps/jitsi/keymap.c delete mode 100644 keyboards/anavi/macropad2/keymaps/msteams/keymap.c delete mode 100644 keyboards/anavi/macropad2/keymaps/mute/keymap.c delete mode 100644 keyboards/anavi/macropad2/keymaps/mute/rules.mk delete mode 100644 keyboards/anavi/macropad2/keymaps/skype/keymap.c delete mode 100644 keyboards/anavi/macropad2/keymaps/tap_dance/keymap.c delete mode 100644 keyboards/anavi/macropad2/keymaps/volume/keymap.c delete mode 100644 keyboards/anavi/macropad2/keymaps/volume/rules.mk delete mode 100644 keyboards/anavi/macropad2/keymaps/zoom/keymap.c delete mode 100644 keyboards/anavi/macropad2/macropad2.c delete mode 100644 keyboards/anavi/macropad2/macropad2.h delete mode 100644 keyboards/anavi/macropad2/readme.md delete mode 100644 keyboards/anavi/macropad2/rules.mk create mode 100644 keyboards/anavi/macropad8/keymaps/default/config.h create mode 100644 keyboards/anavi/macropad8/keymaps/vlc/keymap.c create mode 100644 keyboards/anomalykb/a65i/a65i.c create mode 100644 keyboards/anomalykb/a65i/a65i.h create mode 100644 keyboards/anomalykb/a65i/config.h create mode 100644 keyboards/anomalykb/a65i/info.json create mode 100644 keyboards/anomalykb/a65i/keymaps/ansi_splitbs/keymap.c create mode 100644 keyboards/anomalykb/a65i/keymaps/default/keymap.c create mode 100644 keyboards/anomalykb/a65i/keymaps/iso/keymap.c create mode 100644 keyboards/anomalykb/a65i/keymaps/iso_splitbs/keymap.c create mode 100644 keyboards/anomalykb/a65i/keymaps/via/config.h create mode 100644 keyboards/anomalykb/a65i/keymaps/via/keymap.c rename keyboards/{bm60poker => anomalykb/a65i}/keymaps/via/rules.mk (100%) create mode 100644 keyboards/anomalykb/a65i/readme.md create mode 100644 keyboards/anomalykb/a65i/rules.mk create mode 100644 keyboards/aozora/aozora.c create mode 100644 keyboards/aozora/aozora.h create mode 100644 keyboards/aozora/config.h create mode 100644 keyboards/aozora/info.json create mode 100644 keyboards/aozora/keymaps/default/keymap.c create mode 100644 keyboards/aozora/keymaps/default_all/keymap.c create mode 100644 keyboards/aozora/keymaps/via/keymap.c create mode 100644 keyboards/aozora/keymaps/via/rules.mk create mode 100644 keyboards/aozora/readme.md create mode 100644 keyboards/aozora/rules.mk delete mode 100644 keyboards/atomic/keymaps/abienz.c create mode 100644 keyboards/atomic/keymaps/abienz/keymap.c delete mode 100644 keyboards/atomic/keymaps/michelle.c create mode 100644 keyboards/atomic/keymaps/michelle/keymap.c delete mode 100644 keyboards/atomic/keymaps/twolayer.c create mode 100644 keyboards/atomic/keymaps/twolayer/keymap.c create mode 100644 keyboards/atreus/keymaps/manna-harbour_miryoku/config.h create mode 100644 keyboards/atreus/keymaps/manna-harbour_miryoku/keymap.c delete mode 100644 keyboards/atreus/keymaps/replicaJunction/kle/base-layer.txt delete mode 100644 keyboards/atreus/keymaps/replicaJunction/kle/e-layer.txt delete mode 100644 keyboards/atreus/keymaps/replicaJunction/kle/fn-layer.txt delete mode 100644 keyboards/atreus/keymaps/replicaJunction/kle/i-layer.txt delete mode 100644 keyboards/atreus/keymaps/replicaJunction/kle/r-layer.txt delete mode 100644 keyboards/atreus/keymaps/replicaJunction/kle/space-layer.txt create mode 100644 keyboards/atreus/keymaps/via/keymap.c create mode 100644 keyboards/atreus/keymaps/via/rules.mk create mode 100644 keyboards/aya/aya.c create mode 100644 keyboards/aya/aya.h create mode 100644 keyboards/aya/config.h create mode 100644 keyboards/aya/info.json create mode 100644 keyboards/aya/keymaps/default/config.h create mode 100644 keyboards/aya/keymaps/default/keymap.c create mode 100644 keyboards/aya/readme.md create mode 100644 keyboards/aya/rules.mk delete mode 100644 keyboards/bakeneko65/bakeneko65.c delete mode 100644 keyboards/bakeneko65/config.h delete mode 100644 keyboards/bakeneko65/info.json delete mode 100644 keyboards/bakeneko65/keymaps/default/readme.md delete mode 100644 keyboards/bakeneko65/readme.md create mode 100644 keyboards/bakeneko65/rev2/config.h create mode 100644 keyboards/bakeneko65/rev2/info.json rename keyboards/bakeneko65/{ => rev2}/keymaps/default/keymap.c (100%) create mode 100644 keyboards/bakeneko65/rev2/keymaps/default/readme.md rename keyboards/bakeneko65/{ => rev2}/keymaps/via/keymap.c (100%) rename keyboards/{gmmk/pro => bakeneko65/rev2}/keymaps/via/rules.mk (100%) create mode 100644 keyboards/bakeneko65/rev2/readme.md create mode 100644 keyboards/bakeneko65/rev2/rev2.c rename keyboards/bakeneko65/{bakeneko65.h => rev2/rev2.h} (100%) create mode 100644 keyboards/bakeneko65/rev2/rules.mk create mode 100644 keyboards/bakeneko65/rev3/config.h create mode 100644 keyboards/bakeneko65/rev3/info.json create mode 100644 keyboards/bakeneko65/rev3/keymaps/default/keymap.c create mode 100644 keyboards/bakeneko65/rev3/keymaps/default/readme.md create mode 100644 keyboards/bakeneko65/rev3/keymaps/via/keymap.c rename keyboards/{jj4x4 => bakeneko65/rev3}/keymaps/via/rules.mk (100%) create mode 100644 keyboards/bakeneko65/rev3/readme.md create mode 100644 keyboards/bakeneko65/rev3/rev3.c create mode 100644 keyboards/bakeneko65/rev3/rev3.h create mode 100644 keyboards/bakeneko65/rev3/rules.mk delete mode 100644 keyboards/bakeneko65/rules.mk create mode 100644 keyboards/bandominedoni/bandominedoni.c create mode 100644 keyboards/bandominedoni/bandominedoni.h create mode 100644 keyboards/bandominedoni/config.h create mode 100644 keyboards/bandominedoni/info.json create mode 100644 keyboards/bandominedoni/keymaps/default/keymap.c create mode 100644 keyboards/bandominedoni/keymaps/default/readme.md create mode 100644 keyboards/bandominedoni/keymaps/led/keymap.c create mode 100644 keyboards/bandominedoni/keymaps/led/readme.md create mode 100644 keyboards/bandominedoni/keymaps/led/rules.mk create mode 100644 keyboards/bandominedoni/keymaps/via/config.h create mode 100644 keyboards/bandominedoni/keymaps/via/keymap.c create mode 100644 keyboards/bandominedoni/keymaps/via/readme.md create mode 100644 keyboards/bandominedoni/keymaps/via/rules.mk create mode 100644 keyboards/bandominedoni/readme.md create mode 100644 keyboards/bandominedoni/rgb_matrix_user.inc create mode 100644 keyboards/bandominedoni/rules.mk create mode 100644 keyboards/basketweave/keymaps/via/keymap.c rename keyboards/{dztech/volcano660 => basketweave}/keymaps/via/rules.mk (100%) create mode 100644 keyboards/bastardkb/scylla/keymaps/cykedev/config.h create mode 100644 keyboards/bastardkb/scylla/keymaps/cykedev/keymap.c create mode 100644 keyboards/bastardkb/scylla/keymaps/cykedev/rules.mk create mode 100644 keyboards/bastardkb/scylla/keymaps/manna-harbour_miryoku/config.h create mode 100644 keyboards/bastardkb/scylla/keymaps/manna-harbour_miryoku/keymap.c create mode 100644 keyboards/bastardkb/skeletyl/config.h create mode 100644 keyboards/bastardkb/skeletyl/info.json create mode 100644 keyboards/bastardkb/skeletyl/keymaps/default/keymap.c create mode 100644 keyboards/bastardkb/skeletyl/readme.md create mode 100644 keyboards/bastardkb/skeletyl/rules.mk create mode 100644 keyboards/bastardkb/skeletyl/skeletyl.c create mode 100644 keyboards/bastardkb/skeletyl/skeletyl.h create mode 100644 keyboards/binepad/bn009/bn009.c create mode 100644 keyboards/binepad/bn009/bn009.h create mode 100644 keyboards/binepad/bn009/config.h create mode 100644 keyboards/binepad/bn009/info.json create mode 100644 keyboards/binepad/bn009/keymaps/default/keymap.c create mode 100644 keyboards/binepad/bn009/keymaps/default/readme.md create mode 100644 keyboards/binepad/bn009/keymaps/via/keymap.c rename keyboards/{ramonimbao/mona => binepad/bn009}/keymaps/via/rules.mk (100%) create mode 100644 keyboards/binepad/bn009/readme.md create mode 100644 keyboards/binepad/bn009/rules.mk create mode 100644 keyboards/bioi/f60/config.h create mode 100644 keyboards/bioi/f60/f60.c create mode 100644 keyboards/bioi/f60/f60.h create mode 100644 keyboards/bioi/f60/info.json create mode 100644 keyboards/bioi/f60/keymaps/default/keymap.c create mode 100644 keyboards/bioi/f60/keymaps/via/keymap.c rename keyboards/{ergosaurus/keymaps/default => bioi/f60/keymaps}/via/rules.mk (100%) create mode 100644 keyboards/bioi/f60/readme.md create mode 100644 keyboards/bioi/f60/rules.mk create mode 100644 keyboards/bkf/bkf.c create mode 100644 keyboards/bkf/bkf.h create mode 100644 keyboards/bkf/config.h create mode 100644 keyboards/bkf/info.json create mode 100644 keyboards/bkf/keymaps/default/keymap.c create mode 100644 keyboards/bkf/keymaps/default/readme.md create mode 100644 keyboards/bkf/readme.md create mode 100644 keyboards/bkf/rules.mk create mode 100644 keyboards/blank/blank01/blank01.c create mode 100644 keyboards/blank/blank01/blank01.h create mode 100644 keyboards/blank/blank01/config.h create mode 100644 keyboards/blank/blank01/info.json create mode 100644 keyboards/blank/blank01/keymaps/default/keymap.c create mode 100644 keyboards/blank/blank01/keymaps/default/readme.md create mode 100644 keyboards/blank/blank01/keymaps/via/keymap.c create mode 100644 keyboards/blank/blank01/keymaps/via/readme.md rename keyboards/{lazydesigners/bolt => blank/blank01/keymaps}/via/rules.mk (100%) create mode 100644 keyboards/blank/blank01/readme.md create mode 100644 keyboards/blank/blank01/rules.mk delete mode 100644 keyboards/bm16a/bm16a.c delete mode 100644 keyboards/bm16a/config.h delete mode 100644 keyboards/bm16a/info.json delete mode 100644 keyboards/bm16a/readme.md delete mode 100644 keyboards/bm16a/rules.mk delete mode 100644 keyboards/bm16s/info.json delete mode 100644 keyboards/bm16s/readme.md delete mode 100755 keyboards/bm16s/rules.mk delete mode 100755 keyboards/bm40hsrgb/config.h delete mode 100644 keyboards/bm40hsrgb/info.json delete mode 100644 keyboards/bm40hsrgb/keymaps/signynt/config.h delete mode 100644 keyboards/bm40hsrgb/keymaps/signynt/readme.md delete mode 100644 keyboards/bm40hsrgb/keymaps/signynt/rules.mk delete mode 100644 keyboards/bm40hsrgb/keymaps/signynt_2_loud/config.h delete mode 100644 keyboards/bm40hsrgb/keymaps/signynt_2_loud/readme.md delete mode 100644 keyboards/bm40hsrgb/keymaps/signynt_2_loud/rules.mk delete mode 100644 keyboards/bm40hsrgb/keymaps/signynt_2_quiet/config.h delete mode 100644 keyboards/bm40hsrgb/keymaps/signynt_2_quiet/readme.md delete mode 100644 keyboards/bm40hsrgb/keymaps/signynt_2_quiet/rules.mk delete mode 100644 keyboards/bm40hsrgb/readme.md delete mode 100755 keyboards/bm40hsrgb/rules.mk delete mode 100644 keyboards/bm43a/bm43a.c delete mode 100644 keyboards/bm43a/config.h delete mode 100644 keyboards/bm43a/info.json delete mode 100644 keyboards/bm43a/keymaps/stevexyz/readme.md delete mode 100644 keyboards/bm43a/keymaps/stevexyz/rules.mk delete mode 100644 keyboards/bm43a/readme.md delete mode 100644 keyboards/bm43a/rules.mk delete mode 100644 keyboards/bm60poker/bm60poker.c delete mode 100644 keyboards/bm60poker/config.h delete mode 100644 keyboards/bm60poker/info.json delete mode 100644 keyboards/bm60poker/readme.md delete mode 100644 keyboards/bm60poker/rules.mk delete mode 100644 keyboards/bm60rgb/bm60rgb.c delete mode 100644 keyboards/bm60rgb/bm60rgb.h delete mode 100644 keyboards/bm60rgb/config.h delete mode 100644 keyboards/bm60rgb/info.json delete mode 100644 keyboards/bm60rgb/readme.md delete mode 100644 keyboards/bm60rgb/rules.mk delete mode 100644 keyboards/bm60rgb_iso/bm60rgb_iso.c delete mode 100644 keyboards/bm60rgb_iso/config.h delete mode 100644 keyboards/bm60rgb_iso/info.json delete mode 100644 keyboards/bm60rgb_iso/readme.md delete mode 100644 keyboards/bm60rgb_iso/rules.mk delete mode 100644 keyboards/bm68rgb/bm68rgb.c delete mode 100644 keyboards/bm68rgb/config.h delete mode 100644 keyboards/bm68rgb/info.json delete mode 100644 keyboards/bm68rgb/keymaps/peepeetee/config.h delete mode 100644 keyboards/bm68rgb/readme.md delete mode 100644 keyboards/bm68rgb/rules.mk create mode 100644 keyboards/boardsource/beiwagon/beiwagon.c create mode 100644 keyboards/boardsource/beiwagon/beiwagon.h create mode 100644 keyboards/boardsource/beiwagon/config.h create mode 100644 keyboards/boardsource/beiwagon/info.json create mode 100644 keyboards/boardsource/beiwagon/keymaps/default/keymap.c create mode 100644 keyboards/boardsource/beiwagon/keymaps/default/readme.md create mode 100644 keyboards/boardsource/beiwagon/keymaps/via/keymap.c create mode 100644 keyboards/boardsource/beiwagon/keymaps/via/readme.md rename keyboards/{tokyo60 => boardsource/beiwagon}/keymaps/via/rules.mk (100%) create mode 100644 keyboards/boardsource/beiwagon/readme.md create mode 100644 keyboards/boardsource/beiwagon/rules.mk create mode 100644 keyboards/boardsource/technik_o/config.h create mode 100644 keyboards/boardsource/technik_o/info.json create mode 100644 keyboards/boardsource/technik_o/keymaps/default/keymap.c create mode 100644 keyboards/boardsource/technik_o/keymaps/default/readme.md create mode 100644 keyboards/boardsource/technik_o/keymaps/via/keymap.c create mode 100644 keyboards/boardsource/technik_o/keymaps/via/readme.md rename keyboards/{xd60/keymaps/shura30 => boardsource/technik_o/keymaps/via}/rules.mk (100%) mode change 100755 => 100644 create mode 100644 keyboards/boardsource/technik_o/readme.md create mode 100644 keyboards/boardsource/technik_o/rules.mk create mode 100644 keyboards/boardsource/technik_o/technik_o.c create mode 100644 keyboards/boardsource/technik_o/technik_o.h create mode 100644 keyboards/boardsource/technik_s/config.h create mode 100644 keyboards/boardsource/technik_s/info.json create mode 100644 keyboards/boardsource/technik_s/keymaps/default/keymap.c create mode 100644 keyboards/boardsource/technik_s/keymaps/default/readme.md create mode 100644 keyboards/boardsource/technik_s/keymaps/via/keymap.c create mode 100644 keyboards/boardsource/technik_s/keymaps/via/readme.md rename keyboards/{xd60 => boardsource/technik_s}/keymaps/via/rules.mk (100%) create mode 100644 keyboards/boardsource/technik_s/readme.md create mode 100644 keyboards/boardsource/technik_s/rules.mk create mode 100644 keyboards/boardsource/technik_s/technik_s.c create mode 100644 keyboards/boardsource/technik_s/technik_s.h create mode 100644 keyboards/bobpad/bobpad.c create mode 100644 keyboards/bobpad/bobpad.h create mode 100644 keyboards/bobpad/config.h create mode 100644 keyboards/bobpad/info.json create mode 100644 keyboards/bobpad/keymaps/default/keymap.c create mode 100644 keyboards/bobpad/keymaps/via/keymap.c rename keyboards/{xd68 => bobpad}/keymaps/via/rules.mk (100%) create mode 100644 keyboards/bobpad/readme.md create mode 100644 keyboards/bobpad/rules.mk delete mode 100644 keyboards/boston_meetup/2019/keymaps/readme.md create mode 100644 keyboards/bpiphany/ghost_squid/config.h create mode 100644 keyboards/bpiphany/ghost_squid/ghost_squid.c create mode 100644 keyboards/bpiphany/ghost_squid/ghost_squid.h create mode 100644 keyboards/bpiphany/ghost_squid/keymaps/default/keymap.c create mode 100644 keyboards/bpiphany/ghost_squid/keymaps/default/readme.md create mode 100644 keyboards/bpiphany/ghost_squid/matrix.c create mode 100644 keyboards/bpiphany/ghost_squid/readme.md create mode 100644 keyboards/bpiphany/ghost_squid/rules.mk create mode 100644 keyboards/bt66tech/bt66tech60/keymaps/via/keymap.c rename keyboards/{xd75 => bt66tech/bt66tech60}/keymaps/via/rules.mk (100%) create mode 100644 keyboards/buildakb/potato65s/config.h create mode 100644 keyboards/buildakb/potato65s/info.json create mode 100644 keyboards/buildakb/potato65s/keymaps/default/keymap.c create mode 100644 keyboards/buildakb/potato65s/keymaps/default/readme.md create mode 100644 keyboards/buildakb/potato65s/keymaps/via/keymap.c create mode 100644 keyboards/buildakb/potato65s/keymaps/via/readme.md rename keyboards/{xd84 => buildakb/potato65s}/keymaps/via/rules.mk (100%) create mode 100644 keyboards/buildakb/potato65s/potato65s.c create mode 100644 keyboards/buildakb/potato65s/potato65s.h create mode 100644 keyboards/buildakb/potato65s/readme.md create mode 100644 keyboards/buildakb/potato65s/rules.mk create mode 100644 keyboards/canary/canary60rgb/canary60rgb.c create mode 100644 keyboards/canary/canary60rgb/canary60rgb.h create mode 100644 keyboards/canary/canary60rgb/config.h create mode 100644 keyboards/canary/canary60rgb/info.json create mode 100644 keyboards/canary/canary60rgb/keymaps/default/keymap.c create mode 100644 keyboards/canary/canary60rgb/keymaps/via/config.h create mode 100644 keyboards/canary/canary60rgb/keymaps/via/keymap.c rename keyboards/{phase_studio/titan65 => canary/canary60rgb}/keymaps/via/rules.mk (100%) create mode 100644 keyboards/canary/canary60rgb/readme.md create mode 100644 keyboards/canary/canary60rgb/v1/config.h create mode 100644 keyboards/canary/canary60rgb/v1/rules.mk create mode 100644 keyboards/cannonkeys/aella/aella.c create mode 100644 keyboards/cannonkeys/aella/aella.h create mode 100644 keyboards/cannonkeys/aella/chconf.h create mode 100644 keyboards/cannonkeys/aella/config.h create mode 100644 keyboards/cannonkeys/aella/info.json create mode 100644 keyboards/cannonkeys/aella/keymaps/default/keymap.c create mode 100644 keyboards/cannonkeys/aella/keymaps/via/keymap.c rename keyboards/{xd87 => cannonkeys/aella}/keymaps/via/rules.mk (100%) create mode 100644 keyboards/cannonkeys/aella/readme.md create mode 100644 keyboards/cannonkeys/aella/rules.mk create mode 100644 keyboards/cannonkeys/balance/balance.c create mode 100644 keyboards/cannonkeys/balance/balance.h create mode 100644 keyboards/cannonkeys/balance/chconf.h create mode 100644 keyboards/cannonkeys/balance/config.h create mode 100644 keyboards/cannonkeys/balance/halconf.h create mode 100644 keyboards/cannonkeys/balance/info.json create mode 100644 keyboards/cannonkeys/balance/keymaps/default/keymap.c create mode 100644 keyboards/cannonkeys/balance/keymaps/via/keymap.c rename keyboards/{xd96 => cannonkeys/balance}/keymaps/via/rules.mk (100%) create mode 100644 keyboards/cannonkeys/balance/mcuconf.h create mode 100644 keyboards/cannonkeys/balance/readme.md create mode 100644 keyboards/cannonkeys/balance/rules.mk delete mode 100644 keyboards/cannonkeys/bluepill/keyboard.c delete mode 100644 keyboards/cannonkeys/bluepill/ws2812.c create mode 100644 keyboards/cannonkeys/vicious40/chconf.h create mode 100644 keyboards/cannonkeys/vicious40/config.h create mode 100644 keyboards/cannonkeys/vicious40/halconf.h create mode 100644 keyboards/cannonkeys/vicious40/info.json create mode 100644 keyboards/cannonkeys/vicious40/keymaps/default/keymap.c create mode 100644 keyboards/cannonkeys/vicious40/keymaps/via/keymap.c create mode 100644 keyboards/cannonkeys/vicious40/keymaps/via/rules.mk create mode 100644 keyboards/cannonkeys/vicious40/mcuconf.h create mode 100644 keyboards/cannonkeys/vicious40/readme.md create mode 100644 keyboards/cannonkeys/vicious40/rules.mk create mode 100644 keyboards/cannonkeys/vicious40/vicious40.c create mode 100644 keyboards/cannonkeys/vicious40/vicious40.h create mode 100644 keyboards/capsunlocked/cu65/keymaps/iso_split_bs/keymap.c create mode 100644 keyboards/capsunlocked/cu65/keymaps/iso_split_bs/readme.md create mode 100644 keyboards/capsunlocked/cu7/config.h create mode 100644 keyboards/capsunlocked/cu7/cu7.c create mode 100644 keyboards/capsunlocked/cu7/cu7.h create mode 100644 keyboards/capsunlocked/cu7/info.json create mode 100644 keyboards/capsunlocked/cu7/keymaps/default/keymap.c create mode 100644 keyboards/capsunlocked/cu7/keymaps/default/readme.md create mode 100644 keyboards/capsunlocked/cu7/readme.md create mode 100644 keyboards/capsunlocked/cu7/rules.mk create mode 100644 keyboards/cest73/tkm/config.h create mode 100644 keyboards/cest73/tkm/info.json create mode 100644 keyboards/cest73/tkm/keymaps/default/keymap.c create mode 100644 keyboards/cest73/tkm/readme.md create mode 100644 keyboards/cest73/tkm/rules.mk create mode 100644 keyboards/cest73/tkm/tkm.c create mode 100644 keyboards/cest73/tkm/tkm.h create mode 100644 keyboards/chalice/chalice.c create mode 100644 keyboards/chalice/chalice.h create mode 100644 keyboards/chalice/config.h create mode 100644 keyboards/chalice/info.json create mode 100644 keyboards/chalice/keymaps/default/keymap.c create mode 100644 keyboards/chalice/keymaps/via/keymap.c rename keyboards/{cospad => chalice}/keymaps/via/rules.mk (100%) create mode 100644 keyboards/chalice/readme.md create mode 100644 keyboards/chalice/rules.mk create mode 100644 keyboards/charue/sunsetter/keymaps/default_all/keymap.c create mode 100644 keyboards/charue/sunsetter/keymaps/default_iso/keymap.c create mode 100644 keyboards/checkerboards/axon40/axon40.c create mode 100644 keyboards/checkerboards/axon40/axon40.h create mode 100644 keyboards/checkerboards/axon40/config.h create mode 100644 keyboards/checkerboards/axon40/info.json create mode 100644 keyboards/checkerboards/axon40/keymaps/default/config.h create mode 100644 keyboards/checkerboards/axon40/keymaps/default/keymap.c create mode 100644 keyboards/checkerboards/axon40/keymaps/default/readme.md create mode 100644 keyboards/checkerboards/axon40/keymaps/npspears/config.h create mode 100644 keyboards/checkerboards/axon40/keymaps/npspears/keymap.c create mode 100644 keyboards/checkerboards/axon40/keymaps/via/keymap.c create mode 100644 keyboards/checkerboards/axon40/keymaps/via/rules.mk create mode 100644 keyboards/checkerboards/axon40/readme.md create mode 100644 keyboards/checkerboards/axon40/rules.mk create mode 100644 keyboards/checkerboards/g_idb60/config.h create mode 100644 keyboards/checkerboards/g_idb60/g_idb60.c create mode 100644 keyboards/checkerboards/g_idb60/g_idb60.h create mode 100644 keyboards/checkerboards/g_idb60/info.json create mode 100644 keyboards/checkerboards/g_idb60/keymaps/default/config.h create mode 100644 keyboards/checkerboards/g_idb60/keymaps/default/keymap.c create mode 100644 keyboards/checkerboards/g_idb60/keymaps/via/config.h create mode 100644 keyboards/checkerboards/g_idb60/keymaps/via/keymap.c create mode 100644 keyboards/checkerboards/g_idb60/keymaps/via/rules.mk create mode 100644 keyboards/checkerboards/g_idb60/readme.md create mode 100644 keyboards/checkerboards/g_idb60/rules.mk delete mode 100644 keyboards/checkerboards/nop60/keymaps/2x3u/keymap.c rename keyboards/checkerboards/nop60/keymaps/{2x3u => default}/config.h (100%) create mode 100644 keyboards/checkerboards/nop60/keymaps/default/keymap.c create mode 100644 keyboards/checkerboards/phoenix45_ortho/config.h create mode 100644 keyboards/checkerboards/phoenix45_ortho/info.json create mode 100644 keyboards/checkerboards/phoenix45_ortho/keymaps/2x3u/config.h create mode 100644 keyboards/checkerboards/phoenix45_ortho/keymaps/2x3u/keymap.c create mode 100644 keyboards/checkerboards/phoenix45_ortho/keymaps/6u/config.h create mode 100644 keyboards/checkerboards/phoenix45_ortho/keymaps/6u/keymap.c create mode 100644 keyboards/checkerboards/phoenix45_ortho/keymaps/default/config.h create mode 100644 keyboards/checkerboards/phoenix45_ortho/keymaps/default/keymap.c create mode 100644 keyboards/checkerboards/phoenix45_ortho/keymaps/via/config.h create mode 100644 keyboards/checkerboards/phoenix45_ortho/keymaps/via/keymap.c create mode 100644 keyboards/checkerboards/phoenix45_ortho/keymaps/via/rules.mk create mode 100644 keyboards/checkerboards/phoenix45_ortho/phoenix45_ortho.c create mode 100644 keyboards/checkerboards/phoenix45_ortho/phoenix45_ortho.h create mode 100644 keyboards/checkerboards/phoenix45_ortho/readme.md create mode 100644 keyboards/checkerboards/phoenix45_ortho/rules.mk create mode 100644 keyboards/checkerboards/quark_lp/config.h create mode 100644 keyboards/checkerboards/quark_lp/info.json create mode 100644 keyboards/checkerboards/quark_lp/keymaps/2x2u/config.h create mode 100644 keyboards/checkerboards/quark_lp/keymaps/2x2u/keymap.c create mode 100644 keyboards/checkerboards/quark_lp/keymaps/default/config.h create mode 100644 keyboards/checkerboards/quark_lp/keymaps/default/keymap.c create mode 100644 keyboards/checkerboards/quark_lp/keymaps/mit/config.h create mode 100644 keyboards/checkerboards/quark_lp/keymaps/mit/keymap.c create mode 100644 keyboards/checkerboards/quark_lp/keymaps/via/config.h create mode 100644 keyboards/checkerboards/quark_lp/keymaps/via/keymap.c create mode 100644 keyboards/checkerboards/quark_lp/keymaps/via/rules.mk create mode 100644 keyboards/checkerboards/quark_lp/quark_lp.c create mode 100644 keyboards/checkerboards/quark_lp/quark_lp.h create mode 100644 keyboards/checkerboards/quark_lp/readme.md create mode 100644 keyboards/checkerboards/quark_lp/rules.mk create mode 100644 keyboards/checkerboards/quark_squared/config.h create mode 100644 keyboards/checkerboards/quark_squared/info.json create mode 100644 keyboards/checkerboards/quark_squared/keymaps/2u/config.h create mode 100644 keyboards/checkerboards/quark_squared/keymaps/2u/keymap.c create mode 100644 keyboards/checkerboards/quark_squared/keymaps/default/config.h create mode 100644 keyboards/checkerboards/quark_squared/keymaps/default/keymap.c create mode 100644 keyboards/checkerboards/quark_squared/keymaps/via/config.h create mode 100644 keyboards/checkerboards/quark_squared/keymaps/via/keymap.c create mode 100644 keyboards/checkerboards/quark_squared/keymaps/via/rules.mk create mode 100644 keyboards/checkerboards/quark_squared/quark_squared.c create mode 100644 keyboards/checkerboards/quark_squared/quark_squared.h create mode 100644 keyboards/checkerboards/quark_squared/readme.md create mode 100644 keyboards/checkerboards/quark_squared/rules.mk create mode 100644 keyboards/checkerboards/ud40_ortho_alt/config.h create mode 100644 keyboards/checkerboards/ud40_ortho_alt/info.json create mode 100644 keyboards/checkerboards/ud40_ortho_alt/keymaps/2x3u_alt/config.h create mode 100644 keyboards/checkerboards/ud40_ortho_alt/keymaps/2x3u_alt/keymap.c create mode 100644 keyboards/checkerboards/ud40_ortho_alt/keymaps/600u/config.h create mode 100644 keyboards/checkerboards/ud40_ortho_alt/keymaps/600u/keymap.c create mode 100644 keyboards/checkerboards/ud40_ortho_alt/keymaps/600u_alt/config.h create mode 100644 keyboards/checkerboards/ud40_ortho_alt/keymaps/600u_alt/keymap.c create mode 100644 keyboards/checkerboards/ud40_ortho_alt/keymaps/700u/config.h create mode 100644 keyboards/checkerboards/ud40_ortho_alt/keymaps/700u/keymap.c create mode 100644 keyboards/checkerboards/ud40_ortho_alt/keymaps/default/config.h create mode 100644 keyboards/checkerboards/ud40_ortho_alt/keymaps/default/keymap.c create mode 100644 keyboards/checkerboards/ud40_ortho_alt/keymaps/default/readme.md create mode 100644 keyboards/checkerboards/ud40_ortho_alt/keymaps/npspears/config.h create mode 100644 keyboards/checkerboards/ud40_ortho_alt/keymaps/npspears/keymap.c create mode 100644 keyboards/checkerboards/ud40_ortho_alt/keymaps/npspears/readme.md create mode 100644 keyboards/checkerboards/ud40_ortho_alt/keymaps/via/keymap.c create mode 100644 keyboards/checkerboards/ud40_ortho_alt/keymaps/via/rules.mk create mode 100644 keyboards/checkerboards/ud40_ortho_alt/readme.md create mode 100644 keyboards/checkerboards/ud40_ortho_alt/rules.mk create mode 100644 keyboards/checkerboards/ud40_ortho_alt/ud40_ortho_alt.c create mode 100644 keyboards/checkerboards/ud40_ortho_alt/ud40_ortho_alt.h create mode 100644 keyboards/cherrybstudio/cb1800/cb1800.c create mode 100644 keyboards/cherrybstudio/cb1800/cb1800.h create mode 100644 keyboards/cherrybstudio/cb1800/config.h create mode 100644 keyboards/cherrybstudio/cb1800/info.json create mode 100644 keyboards/cherrybstudio/cb1800/keymaps/default/keymap.c create mode 100644 keyboards/cherrybstudio/cb1800/keymaps/default/readme.md create mode 100644 keyboards/cherrybstudio/cb1800/keymaps/via/keymap.c create mode 100644 keyboards/cherrybstudio/cb1800/keymaps/via/rules.mk create mode 100644 keyboards/cherrybstudio/cb1800/readme.md create mode 100644 keyboards/cherrybstudio/cb1800/rules.mk delete mode 100755 keyboards/ckeys/handwire_101/keymaps/default/config.h delete mode 100755 keyboards/ckeys/thedora/keymaps/default/config.h delete mode 100755 keyboards/ckeys/thedora/keymaps/default/readme.md delete mode 100644 keyboards/clawsome/gamebuddy/config.h delete mode 100644 keyboards/clawsome/gamebuddy/gamebuddy.c delete mode 100644 keyboards/clawsome/gamebuddy/info.json delete mode 100644 keyboards/clawsome/gamebuddy/rules.mk create mode 100644 keyboards/clawsome/gamebuddy/v1_0/config.h create mode 100644 keyboards/clawsome/gamebuddy/v1_0/info.json rename keyboards/clawsome/gamebuddy/{ => v1_0}/keymaps/default/keymap.c (100%) rename keyboards/clawsome/gamebuddy/{ => v1_0}/readme.md (100%) create mode 100644 keyboards/clawsome/gamebuddy/v1_0/rules.mk create mode 100644 keyboards/clawsome/gamebuddy/v1_0/v1_0.c rename keyboards/clawsome/gamebuddy/{gamebuddy.h => v1_0/v1_0.h} (100%) create mode 100644 keyboards/clawsome/gamebuddy/v1_m/config.h create mode 100644 keyboards/clawsome/gamebuddy/v1_m/info.json create mode 100644 keyboards/clawsome/gamebuddy/v1_m/keymaps/default/keymap.c create mode 100644 keyboards/clawsome/gamebuddy/v1_m/readme.md create mode 100644 keyboards/clawsome/gamebuddy/v1_m/rules.mk create mode 100644 keyboards/clawsome/gamebuddy/v1_m/v1_m.c create mode 100644 keyboards/clawsome/gamebuddy/v1_m/v1_m.h delete mode 100644 keyboards/clawsome/hatchback/hatcback.h create mode 100644 keyboards/clawsome/hatchback/hatchback.h rename keyboards/clawsome/hatchback/{keymap => keymaps}/default/keymap.c (100%) create mode 100644 keyboards/clawsome/luggage_rack/config.h create mode 100644 keyboards/clawsome/luggage_rack/info.json create mode 100644 keyboards/clawsome/luggage_rack/keymaps/default/keymap.c create mode 100644 keyboards/clawsome/luggage_rack/luggage_rack.c create mode 100644 keyboards/clawsome/luggage_rack/luggage_rack.h create mode 100644 keyboards/clawsome/luggage_rack/readme.md create mode 100644 keyboards/clawsome/luggage_rack/rules.mk rename keyboards/clawsome/suv/{keymap => keymaps}/default/keymap.c (100%) rename keyboards/{converter/ibm_5291 => clueboard/2x1800/2021}/.noci (100%) create mode 100644 keyboards/clueboard/2x1800/2021/2021.c create mode 100644 keyboards/clueboard/2x1800/2021/2021.h create mode 100644 keyboards/clueboard/2x1800/2021/config.h create mode 100644 keyboards/clueboard/2x1800/2021/font.h create mode 100644 keyboards/clueboard/2x1800/2021/info.json create mode 100644 keyboards/clueboard/2x1800/2021/keymaps/default/keymap.json create mode 100644 keyboards/clueboard/2x1800/2021/keymaps/default_4u/keymap.c create mode 100644 keyboards/clueboard/2x1800/2021/keymaps/default_4u/readme.md create mode 100644 keyboards/clueboard/2x1800/2021/keymaps/default_7u/keymap.c create mode 100644 keyboards/clueboard/2x1800/2021/keymaps/default_7u/readme.md create mode 100644 keyboards/clueboard/2x1800/2021/keymaps/signboard/config.h create mode 100644 keyboards/clueboard/2x1800/2021/keymaps/signboard/keymap.c create mode 100644 keyboards/clueboard/2x1800/2021/keymaps/signboard/readme.md create mode 100644 keyboards/clueboard/2x1800/2021/max7219.c create mode 100644 keyboards/clueboard/2x1800/2021/max7219.h create mode 100644 keyboards/clueboard/2x1800/2021/readme.md create mode 100644 keyboards/clueboard/2x1800/2021/rules.mk create mode 100644 keyboards/clueboard/66_hotswap/gen1/keymaps/66_ansi/keymap.c rename keyboards/clueboard/66_hotswap/{ => gen1}/keymaps/66_ansi/readme.md (100%) create mode 100644 keyboards/clueboard/66_hotswap/gen1/keymaps/default/keymap.c rename keyboards/clueboard/66_hotswap/{ => gen1}/keymaps/default/readme.md (100%) rename keyboards/clueboard/66_hotswap/{ => gen1}/keymaps/json/keymap.json (100%) delete mode 100644 keyboards/clueboard/66_hotswap/keymaps/66_ansi/keymap.c delete mode 100644 keyboards/clueboard/66_hotswap/keymaps/default/keymap.c create mode 100644 keyboards/clueboard/66_hotswap/prototype/keymaps/66_ansi/keymap.c create mode 100644 keyboards/clueboard/66_hotswap/prototype/keymaps/66_ansi/readme.md create mode 100644 keyboards/clueboard/66_hotswap/prototype/keymaps/default/keymap.c create mode 100644 keyboards/clueboard/66_hotswap/prototype/keymaps/default/readme.md delete mode 100644 keyboards/cmm_studio/saka68/hotswap/keymaps/default/readme.md rename keyboards/{peiorisboards => coarse}/ixora/chconf.h (100%) rename keyboards/{peiorisboards => coarse}/ixora/config.h (100%) rename keyboards/{peiorisboards => coarse}/ixora/halconf.h (100%) create mode 100644 keyboards/coarse/ixora/info.json rename keyboards/{peiorisboards => coarse}/ixora/ixora.c (100%) rename keyboards/{peiorisboards => coarse}/ixora/ixora.h (100%) create mode 100644 keyboards/coarse/ixora/keymaps/default/keymap.c rename keyboards/{peiorisboards => coarse}/ixora/keymaps/wntrmln/keymap.c (100%) create mode 100644 keyboards/coarse/ixora/readme.md create mode 100644 keyboards/coarse/ixora/rules.mk rename keyboards/{ => coarse}/vinta/chconf.h (100%) create mode 100644 keyboards/coarse/vinta/config.h rename keyboards/{ => coarse}/vinta/halconf.h (100%) create mode 100644 keyboards/coarse/vinta/info.json create mode 100644 keyboards/coarse/vinta/keymaps/default/keymap.c create mode 100644 keyboards/coarse/vinta/readme.md create mode 100644 keyboards/coarse/vinta/rules.mk create mode 100644 keyboards/coarse/vinta/vinta.c create mode 100644 keyboards/coarse/vinta/vinta.h create mode 100644 keyboards/compound/compound.c create mode 100644 keyboards/compound/compound.h create mode 100644 keyboards/compound/config.h create mode 100644 keyboards/compound/info.json create mode 100644 keyboards/compound/keymaps/default/keymap.c create mode 100644 keyboards/compound/keymaps/via/keymap.c create mode 100644 keyboards/compound/keymaps/via/rules.mk create mode 100644 keyboards/compound/readme.md create mode 100644 keyboards/compound/rules.mk create mode 100644 keyboards/converter/a1200/a1200.c create mode 100644 keyboards/converter/a1200/a1200.h create mode 100644 keyboards/converter/a1200/info.json create mode 100644 keyboards/converter/a1200/keymaps/default/keymap.c create mode 100644 keyboards/converter/a1200/miss1200/config.h create mode 100644 keyboards/converter/a1200/miss1200/rules.mk create mode 100644 keyboards/converter/a1200/readme.md create mode 100644 keyboards/converter/a1200/teensy2pp/config.h create mode 100644 keyboards/converter/a1200/teensy2pp/rules.mk rename {tmk_core/protocol => keyboards/converter/adb_usb}/adb.c (99%) rename {tmk_core/protocol => keyboards/converter/adb_usb}/adb.h (100%) delete mode 100644 keyboards/converter/ibm_5291/config.h delete mode 100644 keyboards/converter/ibm_5291/ibm_5291.c delete mode 100644 keyboards/converter/ibm_5291/ibm_5291.h delete mode 100644 keyboards/converter/ibm_5291/info.json delete mode 100644 keyboards/converter/ibm_5291/keymaps/default/keymap.c delete mode 100644 keyboards/converter/ibm_5291/keymaps/kbdbabel_doc_ibm5291_kbd.pdf delete mode 100644 keyboards/converter/ibm_5291/matrix.c delete mode 100644 keyboards/converter/ibm_5291/matrix.csv delete mode 100644 keyboards/converter/ibm_5291/readme.md delete mode 100644 keyboards/converter/ibm_5291/rules.mk rename {tmk_core/protocol => keyboards/converter/m0110_usb}/m0110.c (100%) rename {tmk_core/protocol => keyboards/converter/m0110_usb}/m0110.h (100%) create mode 100644 keyboards/converter/modelm_ssk/config.h create mode 100644 keyboards/converter/modelm_ssk/info.json create mode 100644 keyboards/converter/modelm_ssk/keymaps/default/keymap.c create mode 100644 keyboards/converter/modelm_ssk/keymaps/default/readme.md create mode 100644 keyboards/converter/modelm_ssk/keymaps/tiltowait/config.h create mode 100644 keyboards/converter/modelm_ssk/keymaps/tiltowait/keymap.c create mode 100644 keyboards/converter/modelm_ssk/keymaps/tiltowait/readme.md create mode 100644 keyboards/converter/modelm_ssk/modelm_ssk.c create mode 100644 keyboards/converter/modelm_ssk/modelm_ssk.h create mode 100644 keyboards/converter/modelm_ssk/readme.md create mode 100644 keyboards/converter/modelm_ssk/rules.mk create mode 100644 keyboards/converter/palm_usb/post_rules.mk create mode 100644 keyboards/converter/sun_usb/post_rules.mk rename {tmk_core/protocol => keyboards/converter/xt_usb}/xt.h (100%) rename {tmk_core/protocol => keyboards/converter/xt_usb}/xt_interrupt.c (100%) delete mode 100644 keyboards/cospad/config.h delete mode 100644 keyboards/cospad/info.json delete mode 100644 keyboards/cospad/keymaps/detrus/keymap.c delete mode 100644 keyboards/cospad/readme.md delete mode 100644 keyboards/cospad/rules.mk create mode 100644 keyboards/cradio/config.h create mode 100644 keyboards/cradio/cradio.c create mode 100644 keyboards/cradio/cradio.h create mode 100644 keyboards/cradio/info.json create mode 100644 keyboards/cradio/keymaps/default/config.h create mode 100644 keyboards/cradio/keymaps/default/keymap.c create mode 100644 keyboards/cradio/readme.md create mode 100644 keyboards/cradio/rules.mk create mode 100644 keyboards/crin/config.h create mode 100644 keyboards/crin/crin.c create mode 100644 keyboards/crin/crin.h create mode 100644 keyboards/crin/info.json create mode 100644 keyboards/crin/keymaps/default/keymap.c create mode 100644 keyboards/crin/keymaps/via/keymap.c create mode 100644 keyboards/crin/keymaps/via/rules.mk create mode 100644 keyboards/crin/readme.md create mode 100644 keyboards/crin/rules.mk create mode 100644 keyboards/crkbd/keymaps/blipson/blipsonfont.c create mode 100644 keyboards/crkbd/keymaps/blipson/config.h create mode 100644 keyboards/crkbd/keymaps/blipson/keymap.c create mode 100644 keyboards/crkbd/keymaps/blipson/readme.md create mode 100644 keyboards/crkbd/keymaps/blipson/rules.mk create mode 100644 keyboards/crkbd/keymaps/davidrambo/config.h create mode 100644 keyboards/crkbd/keymaps/davidrambo/keymap.c create mode 100644 keyboards/crkbd/keymaps/davidrambo/readme.md create mode 100644 keyboards/crkbd/keymaps/davidrambo/rules.mk delete mode 100644 keyboards/crkbd/keymaps/manna-harbour_miryoku/config.h delete mode 100644 keyboards/crkbd/keymaps/manna-harbour_miryoku/keymap.c create mode 100644 keyboards/crkbd/keymaps/rarick/config.h create mode 100644 keyboards/crkbd/keymaps/rarick/glcdfont.c create mode 100644 keyboards/crkbd/keymaps/rarick/keymap.c create mode 100644 keyboards/crkbd/keymaps/rarick/rules.mk create mode 100644 keyboards/crkbd/keymaps/sulrich/README.md create mode 100644 keyboards/crkbd/keymaps/sulrich/config.h create mode 100644 keyboards/crkbd/keymaps/sulrich/keymap.c create mode 100644 keyboards/crkbd/keymaps/sulrich/rules.mk create mode 100644 keyboards/crkbd/keymaps/vayashiko/config.h create mode 100644 keyboards/crkbd/keymaps/vayashiko/keymap.c create mode 100644 keyboards/crkbd/keymaps/vayashiko/rules.mk create mode 100644 keyboards/crkbd/post_config.h delete mode 100644 keyboards/custommk/genesis/genesis.c delete mode 100644 keyboards/custommk/genesis/genesis.h delete mode 100644 keyboards/custommk/genesis/info.json delete mode 100644 keyboards/custommk/genesis/keymaps/via/keymap.c create mode 100644 keyboards/custommk/genesis/rev1/config.h create mode 100644 keyboards/custommk/genesis/rev1/info.json rename keyboards/custommk/genesis/{ => rev1}/keymaps/default/keymap.c (100%) rename keyboards/custommk/genesis/{ => rev1}/keymaps/default/readme.md (100%) rename keyboards/custommk/genesis/{ => rev1}/keymaps/numpad/keymap.c (100%) rename keyboards/custommk/genesis/{ => rev1}/keymaps/numpad/readme.md (100%) create mode 100644 keyboards/custommk/genesis/rev1/keymaps/via/keymap.c rename keyboards/custommk/genesis/{ => rev1}/keymaps/via/readme.md (100%) rename keyboards/{bm16s => custommk/genesis/rev1}/keymaps/via/rules.mk (100%) create mode 100644 keyboards/custommk/genesis/rev1/readme.md create mode 100644 keyboards/custommk/genesis/rev1/rev1.c create mode 100644 keyboards/custommk/genesis/rev1/rev1.h rename keyboards/{mechlovin/adelais/standard_led/rev2 => custommk/genesis/rev1}/rules.mk (100%) create mode 100644 keyboards/custommk/genesis/rev2/config.h create mode 100644 keyboards/custommk/genesis/rev2/info.json create mode 100644 keyboards/custommk/genesis/rev2/keymaps/default/keymap.c create mode 100644 keyboards/custommk/genesis/rev2/keymaps/default/readme.md create mode 100644 keyboards/custommk/genesis/rev2/keymaps/numpad/keymap.c create mode 100644 keyboards/custommk/genesis/rev2/keymaps/numpad/readme.md create mode 100644 keyboards/custommk/genesis/rev2/keymaps/via/keymap.c create mode 100644 keyboards/custommk/genesis/rev2/keymaps/via/readme.md rename keyboards/custommk/genesis/{ => rev2}/keymaps/via/rules.mk (100%) create mode 100644 keyboards/custommk/genesis/rev2/readme.md create mode 100644 keyboards/custommk/genesis/rev2/rev2.c create mode 100644 keyboards/custommk/genesis/rev2/rev2.h create mode 100644 keyboards/custommk/genesis/rev2/rules.mk create mode 100644 keyboards/cutie_club/giant_macro_pad/info.json create mode 100644 keyboards/cutie_club/keebcats/denis/config.h create mode 100644 keyboards/cutie_club/keebcats/denis/denis.c create mode 100644 keyboards/cutie_club/keebcats/denis/denis.h create mode 100644 keyboards/cutie_club/keebcats/denis/info.json create mode 100644 keyboards/cutie_club/keebcats/denis/keymaps/default/keymap.c create mode 100644 keyboards/cutie_club/keebcats/denis/keymaps/via/keymap.c create mode 100644 keyboards/cutie_club/keebcats/denis/keymaps/via/rules.mk create mode 100644 keyboards/cutie_club/keebcats/denis/readme.md create mode 100644 keyboards/cutie_club/keebcats/denis/rules.mk create mode 100644 keyboards/cutie_club/keebcats/dougal/config.h create mode 100644 keyboards/cutie_club/keebcats/dougal/dougal.c create mode 100644 keyboards/cutie_club/keebcats/dougal/dougal.h create mode 100644 keyboards/cutie_club/keebcats/dougal/info.json create mode 100644 keyboards/cutie_club/keebcats/dougal/keymaps/default/keymap.c create mode 100644 keyboards/cutie_club/keebcats/dougal/keymaps/via/keymap.c create mode 100644 keyboards/cutie_club/keebcats/dougal/keymaps/via/rules.mk create mode 100644 keyboards/cutie_club/keebcats/dougal/readme.md create mode 100644 keyboards/cutie_club/keebcats/dougal/rules.mk create mode 100644 keyboards/cx60/config.h create mode 100644 keyboards/cx60/cx60.c create mode 100644 keyboards/cx60/cx60.h create mode 100644 keyboards/cx60/info.json create mode 100644 keyboards/cx60/keymaps/default/keymap.c create mode 100644 keyboards/cx60/keymaps/default/readme.md create mode 100644 keyboards/cx60/keymaps/via/keymap.c create mode 100644 keyboards/cx60/keymaps/via/readme.md create mode 100644 keyboards/cx60/keymaps/via/rules.mk create mode 100644 keyboards/cx60/keymaps/via_caps/config.h create mode 100644 keyboards/cx60/keymaps/via_caps/keymap.c create mode 100644 keyboards/cx60/keymaps/via_caps/readme.md create mode 100644 keyboards/cx60/keymaps/via_caps/rules.mk create mode 100644 keyboards/cx60/readme.md create mode 100644 keyboards/cx60/rules.mk delete mode 100644 keyboards/daisy/config.h delete mode 100644 keyboards/daisy/info.json delete mode 100644 keyboards/daisy/readme.md delete mode 100644 keyboards/daisy/rules.mk create mode 100644 keyboards/dinofizz/fnrow/v1/chconf.h create mode 100644 keyboards/dinofizz/fnrow/v1/config.h create mode 100644 keyboards/dinofizz/fnrow/v1/halconf.h create mode 100644 keyboards/dinofizz/fnrow/v1/info.json create mode 100644 keyboards/dinofizz/fnrow/v1/keymaps/default/keymap.c create mode 100644 keyboards/dinofizz/fnrow/v1/keymaps/default/readme.md create mode 100644 keyboards/dinofizz/fnrow/v1/keymaps/via/keymap.c create mode 100644 keyboards/dinofizz/fnrow/v1/keymaps/via/rules.mk create mode 100644 keyboards/dinofizz/fnrow/v1/mcuconf.h create mode 100644 keyboards/dinofizz/fnrow/v1/readme.md create mode 100644 keyboards/dinofizz/fnrow/v1/rules.mk create mode 100644 keyboards/dinofizz/fnrow/v1/v1.c create mode 100644 keyboards/dinofizz/fnrow/v1/v1.h create mode 100644 keyboards/dm9records/ergoinu/post_rules.mk create mode 100644 keyboards/donutcables/scrabblepad/keymaps/via/keymap.c create mode 100644 keyboards/donutcables/scrabblepad/keymaps/via/readme.md rename keyboards/{spaceman/pancake => donutcables/scrabblepad}/keymaps/via/rules.mk (100%) create mode 100644 keyboards/draytronics/elise/config.h create mode 100755 keyboards/draytronics/elise/elise.c create mode 100755 keyboards/draytronics/elise/elise.h create mode 100644 keyboards/draytronics/elise/info.json create mode 100644 keyboards/draytronics/elise/keymaps/blake_iso/keymap.c create mode 100644 keyboards/draytronics/elise/keymaps/default/keymap.c create mode 100644 keyboards/draytronics/elise/keymaps/default_iso/keymap.c create mode 100644 keyboards/draytronics/elise/readme.md create mode 100644 keyboards/draytronics/elise/rules.mk create mode 100644 keyboards/draytronics/elise_v2/config.h create mode 100755 keyboards/draytronics/elise_v2/elise_v2.c create mode 100755 keyboards/draytronics/elise_v2/elise_v2.h create mode 100644 keyboards/draytronics/elise_v2/info.json create mode 100644 keyboards/draytronics/elise_v2/keymaps/blake_iso/keymap.c create mode 100644 keyboards/draytronics/elise_v2/keymaps/default/keymap.c create mode 100644 keyboards/draytronics/elise_v2/keymaps/default_iso/keymap.c create mode 100644 keyboards/draytronics/elise_v2/readme.md create mode 100644 keyboards/draytronics/elise_v2/rules.mk create mode 100644 keyboards/dtisaac/cg108/cg108.c create mode 100644 keyboards/dtisaac/cg108/cg108.h create mode 100644 keyboards/dtisaac/cg108/config.h create mode 100644 keyboards/dtisaac/cg108/info.json create mode 100644 keyboards/dtisaac/cg108/keymaps/default/keymap.c create mode 100644 keyboards/dtisaac/cg108/keymaps/default/readme.md create mode 100644 keyboards/dtisaac/cg108/readme.md create mode 100644 keyboards/dtisaac/cg108/rules.mk create mode 100644 keyboards/dtisaac/dosa40rgb/config.h create mode 100644 keyboards/dtisaac/dosa40rgb/dosa40rgb.c create mode 100644 keyboards/dtisaac/dosa40rgb/dosa40rgb.h create mode 100644 keyboards/dtisaac/dosa40rgb/info.json create mode 100644 keyboards/dtisaac/dosa40rgb/keymaps/default/keymap.c create mode 100644 keyboards/dtisaac/dosa40rgb/keymaps/default/readme.md create mode 100644 keyboards/dtisaac/dosa40rgb/readme.md create mode 100644 keyboards/dtisaac/dosa40rgb/rules.mk create mode 100644 keyboards/dtisaac/dtisaac01/config.h create mode 100644 keyboards/dtisaac/dtisaac01/dtisaac01.c create mode 100644 keyboards/dtisaac/dtisaac01/dtisaac01.h create mode 100644 keyboards/dtisaac/dtisaac01/info.json create mode 100644 keyboards/dtisaac/dtisaac01/keymaps/default/keymap.c create mode 100644 keyboards/dtisaac/dtisaac01/keymaps/default/readme.md create mode 100644 keyboards/dtisaac/dtisaac01/keymaps/via/keymap.c create mode 100644 keyboards/dtisaac/dtisaac01/keymaps/via/readme.md rename keyboards/{daisy => dtisaac/dtisaac01}/keymaps/via/rules.mk (100%) create mode 100644 keyboards/dtisaac/dtisaac01/readme.md create mode 100644 keyboards/dtisaac/dtisaac01/rules.mk delete mode 100644 keyboards/duck/eagle_viper/info.json delete mode 100644 keyboards/duck/eagle_viper/readme.md delete mode 100644 keyboards/duck/eagle_viper/rules.mk create mode 100644 keyboards/duck/eagle_viper/v2/info.json create mode 100644 keyboards/ducky/one2mini/1861st/1861st.h create mode 100644 keyboards/ducky/one2mini/1861st/boards/NUC123SD4AN0/board.c create mode 100644 keyboards/ducky/one2mini/1861st/boards/NUC123SD4AN0/board.h create mode 100644 keyboards/ducky/one2mini/1861st/boards/NUC123SD4AN0/board.mk create mode 100644 keyboards/ducky/one2mini/1861st/chconf.h create mode 100644 keyboards/ducky/one2mini/1861st/config.h create mode 100644 keyboards/ducky/one2mini/1861st/info.json create mode 100644 keyboards/ducky/one2mini/1861st/mcuconf.h create mode 100644 keyboards/ducky/one2mini/1861st/readme.md create mode 100644 keyboards/ducky/one2mini/1861st/rules.mk create mode 100644 keyboards/ducky/one2mini/keymaps/ansi/keymap.c create mode 100644 keyboards/ducky/one2mini/keymaps/ansi/readme.md create mode 100644 keyboards/ducky/one2mini/keymaps/default/config.h create mode 100644 keyboards/ducky/one2mini/keymaps/default/keymap.c create mode 100644 keyboards/ducky/one2mini/keymaps/default/readme.md create mode 100644 keyboards/ducky/one2mini/keymaps/iso/keymap.c create mode 100644 keyboards/ducky/one2mini/keymaps/iso/readme.md create mode 100644 keyboards/ducky/one2mini/readme.md create mode 100644 keyboards/ducky/one2mini/rules.mk create mode 100644 keyboards/dumbpad/v1x/keymaps/imchipwood/keymap.c create mode 100644 keyboards/dumbpad/v1x/keymaps/numpad_media/keymap.c create mode 100644 keyboards/durgod/dgk6x/config.h create mode 100644 keyboards/durgod/dgk6x/dgk6x.c create mode 100644 keyboards/durgod/dgk6x/dgk6x.h create mode 100644 keyboards/durgod/dgk6x/galaxy/config.h create mode 100644 keyboards/durgod/dgk6x/galaxy/galaxy.c create mode 100644 keyboards/durgod/dgk6x/galaxy/galaxy.h create mode 100644 keyboards/durgod/dgk6x/galaxy/info.json create mode 100644 keyboards/durgod/dgk6x/galaxy/keymaps/default/keymap.json create mode 100644 keyboards/durgod/dgk6x/galaxy/keymaps/default/readme.md create mode 100644 keyboards/durgod/dgk6x/galaxy/keymaps/via/keymap.json create mode 100644 keyboards/durgod/dgk6x/galaxy/keymaps/via/readme.md create mode 100644 keyboards/durgod/dgk6x/galaxy/keymaps/via/rules.mk create mode 100644 keyboards/durgod/dgk6x/galaxy/readme.md create mode 100644 keyboards/durgod/dgk6x/galaxy/rules.mk create mode 100644 keyboards/durgod/dgk6x/hades/config.h create mode 100644 keyboards/durgod/dgk6x/hades/hades.c create mode 100644 keyboards/durgod/dgk6x/hades/hades.h create mode 100644 keyboards/durgod/dgk6x/hades/info.json create mode 100644 keyboards/durgod/dgk6x/hades/keymaps/default/keymap.json create mode 100644 keyboards/durgod/dgk6x/hades/keymaps/default/readme.md create mode 100644 keyboards/durgod/dgk6x/hades/keymaps/via/keymap.json create mode 100644 keyboards/durgod/dgk6x/hades/keymaps/via/readme.md create mode 100644 keyboards/durgod/dgk6x/hades/keymaps/via/rules.mk create mode 100644 keyboards/durgod/dgk6x/hades/readme.md create mode 100644 keyboards/durgod/dgk6x/hades/rules.mk create mode 100644 keyboards/durgod/dgk6x/halconf.h create mode 100644 keyboards/durgod/dgk6x/mcuconf.h create mode 100644 keyboards/durgod/dgk6x/readme.md create mode 100644 keyboards/durgod/dgk6x/rules.mk create mode 100644 keyboards/durgod/dgk6x/venus/config.h create mode 100644 keyboards/durgod/dgk6x/venus/info.json create mode 100644 keyboards/durgod/dgk6x/venus/keymaps/default/keymap.json create mode 100644 keyboards/durgod/dgk6x/venus/keymaps/default/readme.md create mode 100644 keyboards/durgod/dgk6x/venus/keymaps/via/keymap.json create mode 100644 keyboards/durgod/dgk6x/venus/keymaps/via/readme.md create mode 100644 keyboards/durgod/dgk6x/venus/keymaps/via/rules.mk create mode 100644 keyboards/durgod/dgk6x/venus/readme.md create mode 100644 keyboards/durgod/dgk6x/venus/rules.mk create mode 100644 keyboards/durgod/dgk6x/venus/venus.c create mode 100644 keyboards/durgod/dgk6x/venus/venus.h create mode 100644 keyboards/durgod/galaxy/readme.md create mode 100644 keyboards/durgod/galaxy/rules.mk create mode 100644 keyboards/durgod/hades/readme.md create mode 100644 keyboards/durgod/hades/rules.mk create mode 100644 keyboards/durgod/k310/base/readme.md create mode 100644 keyboards/durgod/k310/base/rules.mk create mode 100644 keyboards/durgod/k310/readme.md create mode 100644 keyboards/durgod/k310/rules.mk create mode 100644 keyboards/durgod/k320/base/readme.md create mode 100644 keyboards/durgod/k320/base/rules.mk delete mode 100644 keyboards/durgod/k320/config.h delete mode 100644 keyboards/durgod/k320/info.json delete mode 100644 keyboards/durgod/k320/k320.c delete mode 100644 keyboards/durgod/k320/keymaps/default/keymap.json delete mode 100644 keyboards/durgod/k320/keymaps/default/readme.md delete mode 100644 keyboards/durgod/k320/keymaps/default_mac/keymap.json delete mode 100644 keyboards/durgod/k320/keymaps/default_toggle_mac_windows/keymap.c delete mode 100644 keyboards/durgod/k320/keymaps/default_toggle_mac_windows/readme.md create mode 100644 keyboards/durgod/k320/keymaps/moults31/config.h create mode 100644 keyboards/durgod/k320/keymaps/moults31/keymap.c create mode 100644 keyboards/durgod/k320/keymaps/moults31/readme.md rename keyboards/{tgr/jane/keymaps/via => durgod/k320/keymaps/moults31}/rules.mk (100%) delete mode 100644 keyboards/durgod/k320/keymaps/via/keymap.c delete mode 100644 keyboards/durgod/k320/keymaps/via/readme.md delete mode 100644 keyboards/durgod/k320/keymaps/via/rules.mk create mode 100644 keyboards/durgod/k3x0/config.h create mode 100644 keyboards/durgod/k3x0/halconf.h create mode 100644 keyboards/durgod/k3x0/k310/base/config.h create mode 100644 keyboards/durgod/k3x0/k310/base/readme.md create mode 100644 keyboards/durgod/k3x0/k310/base/rules.mk create mode 100644 keyboards/durgod/k3x0/k310/config.h create mode 100644 keyboards/durgod/k3x0/k310/info.json create mode 100644 keyboards/durgod/k3x0/k310/k310.h create mode 100644 keyboards/durgod/k3x0/k310/readme.md create mode 100644 keyboards/durgod/k3x0/k310/rules.mk create mode 100644 keyboards/durgod/k3x0/k320/base/config.h create mode 100644 keyboards/durgod/k3x0/k320/base/readme.md create mode 100644 keyboards/durgod/k3x0/k320/base/rules.mk create mode 100644 keyboards/durgod/k3x0/k320/config.h create mode 100644 keyboards/durgod/k3x0/k320/info.json rename keyboards/durgod/{ => k3x0}/k320/k320.h (75%) rename keyboards/durgod/{ => k3x0}/k320/keymaps/kuenhlee/keymap.c (100%) rename keyboards/durgod/{ => k3x0}/k320/keymaps/kuenhlee/readme.md (100%) rename keyboards/durgod/{ => k3x0}/k320/keymaps/kuenhlee/rules.mk (100%) create mode 100644 keyboards/durgod/k3x0/k320/readme.md create mode 100644 keyboards/durgod/k3x0/k320/rules.mk create mode 100644 keyboards/durgod/k3x0/k3x0.c create mode 100644 keyboards/durgod/k3x0/k3x0.h create mode 100644 keyboards/durgod/k3x0/keymaps/chimera/keymap.c create mode 100644 keyboards/durgod/k3x0/keymaps/chimera/readme.md rename keyboards/durgod/{k320/keymaps/default_toggle_mac_windows => k3x0/keymaps/chimera}/rules.mk (100%) create mode 100644 keyboards/durgod/k3x0/keymaps/default/keymap.json create mode 100644 keyboards/durgod/k3x0/keymaps/default/readme.md create mode 100644 keyboards/durgod/k3x0/keymaps/default_mac/keymap.json rename keyboards/durgod/{k320 => k3x0}/keymaps/default_mac/readme.md (100%) create mode 100644 keyboards/durgod/k3x0/keymaps/typhon/keymap.c create mode 100644 keyboards/durgod/k3x0/keymaps/typhon/readme.md create mode 100644 keyboards/durgod/k3x0/keymaps/typhon/rules.mk create mode 100644 keyboards/durgod/k3x0/keymaps/via/keymap.c create mode 100644 keyboards/durgod/k3x0/keymaps/via/readme.md create mode 100644 keyboards/durgod/k3x0/keymaps/via/rules.mk create mode 100644 keyboards/durgod/k3x0/readme.md create mode 100644 keyboards/durgod/k3x0/rules.mk create mode 100644 keyboards/durgod/venus/readme.md create mode 100644 keyboards/durgod/venus/rules.mk create mode 100644 keyboards/dyz/dyz40/config.h create mode 100644 keyboards/dyz/dyz40/dyz40.c create mode 100644 keyboards/dyz/dyz40/dyz40.h create mode 100644 keyboards/dyz/dyz40/info.json create mode 100644 keyboards/dyz/dyz40/keymaps/default/keymap.c create mode 100644 keyboards/dyz/dyz40/keymaps/via/keymap.c create mode 100644 keyboards/dyz/dyz40/keymaps/via/rules.mk create mode 100644 keyboards/dyz/dyz40/readme.md create mode 100644 keyboards/dyz/dyz40/rules.mk create mode 100644 keyboards/dyz/dyz60/config.h create mode 100644 keyboards/dyz/dyz60/dyz60.c create mode 100644 keyboards/dyz/dyz60/dyz60.h create mode 100644 keyboards/dyz/dyz60/info.json create mode 100644 keyboards/dyz/dyz60/keymaps/default/keymap.c create mode 100644 keyboards/dyz/dyz60/keymaps/via/keymap.c create mode 100644 keyboards/dyz/dyz60/keymaps/via/rules.mk create mode 100644 keyboards/dyz/dyz60/readme.md create mode 100644 keyboards/dyz/dyz60/rules.mk create mode 100644 keyboards/dyz/dyz_tkl/config.h create mode 100644 keyboards/dyz/dyz_tkl/dyz_tkl.c create mode 100644 keyboards/dyz/dyz_tkl/dyz_tkl.h create mode 100644 keyboards/dyz/dyz_tkl/info.json create mode 100644 keyboards/dyz/dyz_tkl/keymaps/default/keymap.c create mode 100644 keyboards/dyz/dyz_tkl/keymaps/via/keymap.c create mode 100644 keyboards/dyz/dyz_tkl/keymaps/via/rules.mk create mode 100644 keyboards/dyz/dyz_tkl/readme.md create mode 100644 keyboards/dyz/dyz_tkl/rules.mk create mode 100644 keyboards/dyz/selka40/config.h create mode 100644 keyboards/dyz/selka40/info.json create mode 100644 keyboards/dyz/selka40/keymaps/default/keymap.c create mode 100644 keyboards/dyz/selka40/keymaps/via/keymap.c create mode 100644 keyboards/dyz/selka40/keymaps/via/rules.mk create mode 100644 keyboards/dyz/selka40/readme.md create mode 100644 keyboards/dyz/selka40/rules.mk create mode 100644 keyboards/dyz/selka40/selka40.c create mode 100644 keyboards/dyz/selka40/selka40.h delete mode 100644 keyboards/dz60/keymaps/jdelkins_ss/config.h delete mode 100644 keyboards/dz60/keymaps/jdelkins_ss/keymap.c delete mode 100644 keyboards/dz60/keymaps/jdelkins_ss/rules.mk create mode 100644 keyboards/dz60/keymaps/niclake/config.h create mode 100644 keyboards/dz60/keymaps/niclake/keymap.c create mode 100644 keyboards/dz60/keymaps/niclake/readme.md create mode 100644 keyboards/dz60/keymaps/niclake/rules.mk create mode 100644 keyboards/dz60/keymaps/olligranlund_iso/rules.mk create mode 100644 keyboards/dz60/keymaps/olligranlund_iso_v2/keymap.c create mode 100644 keyboards/dz60/keymaps/olligranlund_iso_v2/readme.md create mode 100644 keyboards/dz60/keymaps/olligranlund_iso_v2/rules.mk create mode 100644 keyboards/dztech/duo_s/config.h create mode 100644 keyboards/dztech/duo_s/duo_s.c create mode 100644 keyboards/dztech/duo_s/duo_s.h create mode 100644 keyboards/dztech/duo_s/info.json create mode 100644 keyboards/dztech/duo_s/keymaps/default/keymap.c create mode 100644 keyboards/dztech/duo_s/keymaps/via/keymap.c rename keyboards/{thevankeyboards/minivan => dztech/duo_s}/keymaps/via/rules.mk (100%) create mode 100644 keyboards/dztech/duo_s/readme.md create mode 100644 keyboards/dztech/duo_s/rules.mk create mode 100644 keyboards/dztech/dz60rgb/keymaps/moults31/keymap.c create mode 100644 keyboards/dztech/dz60rgb/keymaps/moults31/readme.md create mode 100644 keyboards/dztech/dz60rgb/keymaps/moults31/rules.mk create mode 100644 keyboards/dztech/dz60rgb/keymaps/via/config.h create mode 100644 keyboards/dztech/dz60rgb/v2_1/config.h create mode 100644 keyboards/dztech/dz60rgb/v2_1/rules.mk create mode 100644 keyboards/dztech/dz60rgb_ansi/keymaps/bingocaller/config.h create mode 100644 keyboards/dztech/dz60rgb_ansi/keymaps/bingocaller/keymap.c create mode 100644 keyboards/dztech/dz60rgb_ansi/keymaps/bingocaller/readme.md create mode 100644 keyboards/dztech/dz60rgb_ansi/v2_1/config.h create mode 100644 keyboards/dztech/dz60rgb_ansi/v2_1/rules.mk create mode 100644 keyboards/dztech/dz60rgb_wkl/v2_1/config.h create mode 100644 keyboards/dztech/dz60rgb_wkl/v2_1/rules.mk create mode 100644 keyboards/dztech/dz65rgb/keymaps/haervig/keymap.c create mode 100644 keyboards/dztech/dz65rgb/keymaps/haervig/rules.mk create mode 100644 keyboards/dztech/dz65rgb/keymaps/via/config.h delete mode 100644 keyboards/dztech/volcano660/info.json delete mode 100644 keyboards/dztech/volcano660/readme.md delete mode 100644 keyboards/dztech/volcano660/rules.mk create mode 100644 keyboards/edda/config.h create mode 100644 keyboards/edda/edda.c create mode 100644 keyboards/edda/edda.h create mode 100644 keyboards/edda/info.json create mode 100644 keyboards/edda/keymaps/default/keymap.c create mode 100644 keyboards/edda/keymaps/via/keymap.c create mode 100644 keyboards/edda/keymaps/via/rules.mk create mode 100644 keyboards/edda/readme.md create mode 100644 keyboards/edda/rules.mk create mode 100644 keyboards/edi/hardlight/mk1/config.h create mode 100644 keyboards/edi/hardlight/mk1/keymaps/.gitignore create mode 100644 keyboards/edi/hardlight/mk1/keymaps/default/config.h create mode 100644 keyboards/edi/hardlight/mk1/keymaps/default/keymap.c create mode 100644 keyboards/edi/hardlight/mk1/mk1.c create mode 100644 keyboards/edi/hardlight/mk1/mk1.h create mode 100644 keyboards/edi/hardlight/mk1/readme.md create mode 100644 keyboards/edi/hardlight/mk1/rules.mk create mode 100644 keyboards/ein_60/config.h create mode 100644 keyboards/ein_60/ein_60.c create mode 100644 keyboards/ein_60/ein_60.h create mode 100644 keyboards/ein_60/glcdfont.c create mode 100644 keyboards/ein_60/info.json create mode 100644 keyboards/ein_60/keymaps/default/keymap.c create mode 100644 keyboards/ein_60/keymaps/default/readme.md create mode 100644 keyboards/ein_60/keymaps/default/rules.mk create mode 100644 keyboards/ein_60/keymaps/klackygears/config.h create mode 100644 keyboards/ein_60/keymaps/klackygears/keymap.c create mode 100644 keyboards/ein_60/keymaps/klackygears/readme.md create mode 100644 keyboards/ein_60/keymaps/klackygears/rules.mk create mode 100644 keyboards/ein_60/keymaps/ledtest/keymap.c create mode 100644 keyboards/ein_60/keymaps/ledtest/readme.md create mode 100644 keyboards/ein_60/keymaps/ledtest/rules.mk create mode 100644 keyboards/ein_60/readme.md create mode 100644 keyboards/ein_60/rules.mk create mode 100644 keyboards/emery65/config.h create mode 100644 keyboards/emery65/emery65.c create mode 100644 keyboards/emery65/emery65.h create mode 100644 keyboards/emery65/info.json create mode 100644 keyboards/emery65/keymaps/default/keymap.c create mode 100644 keyboards/emery65/keymaps/default/readme.md create mode 100644 keyboards/emery65/keymaps/via/keymap.c create mode 100644 keyboards/emery65/keymaps/via/readme.md create mode 100644 keyboards/emery65/keymaps/via/rules.mk create mode 100644 keyboards/emery65/readme.md create mode 100644 keyboards/emery65/rules.mk create mode 100644 keyboards/emi20/config.h create mode 100644 keyboards/emi20/emi20.c create mode 100644 keyboards/emi20/emi20.h create mode 100644 keyboards/emi20/info.json create mode 100644 keyboards/emi20/keymaps/default/keymap.c create mode 100644 keyboards/emi20/readme.md create mode 100644 keyboards/emi20/rules.mk create mode 100644 keyboards/eniigmakeyboards/ek60/config.h create mode 100644 keyboards/eniigmakeyboards/ek60/ek60.c create mode 100644 keyboards/eniigmakeyboards/ek60/ek60.h create mode 100644 keyboards/eniigmakeyboards/ek60/info.json create mode 100644 keyboards/eniigmakeyboards/ek60/keymaps/default/keymap.c create mode 100644 keyboards/eniigmakeyboards/ek60/keymaps/via/keymap.c create mode 100644 keyboards/eniigmakeyboards/ek60/keymaps/via/rules.mk create mode 100644 keyboards/eniigmakeyboards/ek60/readme.md create mode 100644 keyboards/eniigmakeyboards/ek60/rules.mk create mode 100644 keyboards/ergodash/mini/keymaps/yoshimaru46/config.h create mode 100644 keyboards/ergodash/mini/keymaps/yoshimaru46/keymap.c create mode 100644 keyboards/ergodash/mini/keymaps/yoshimaru46/readme.md create mode 100644 keyboards/ergodash/mini/keymaps/yoshimaru46/rules.mk delete mode 100644 keyboards/ergodone/config.h delete mode 100644 keyboards/ergodone/ergodone.h delete mode 100644 keyboards/ergodone/i2cmaster.h delete mode 100644 keyboards/ergodone/info.json delete mode 100644 keyboards/ergodone/keymaps/default/keymap.c delete mode 100644 keyboards/ergodone/keymaps/erovia/keymap.c delete mode 100644 keyboards/ergodone/readme.md delete mode 100644 keyboards/ergodone/rules.mk delete mode 100644 keyboards/ergodone/twimaster.c create mode 100644 keyboards/ergodox_ez/keymaps/ifohancroft/config.h create mode 100644 keyboards/ergodox_ez/keymaps/ifohancroft/keymap.c create mode 100644 keyboards/ergodox_ez/keymaps/ifohancroft/readme.md create mode 100644 keyboards/ergodox_ez/keymaps/ifohancroft/rules.mk delete mode 100644 keyboards/ergodox_infinity/board_is31fl3731c.h delete mode 100644 keyboards/ergodox_infinity/board_st7565.h delete mode 100644 keyboards/ergodox_infinity/gfxconf.h delete mode 100644 keyboards/ergodox_infinity/keymaps/dudeofawesome/simple_visualizer.h delete mode 100644 keyboards/ergodox_infinity/keymaps/dudeofawesome/visualizer.c delete mode 100644 keyboards/ergodox_infinity/keymaps/dudeofawesome/visualizer.h delete mode 100644 keyboards/ergodox_infinity/keymaps/halfkeyboard/visualizer.c delete mode 100644 keyboards/ergodox_infinity/keymaps/halfkeyboard/visualizer.h delete mode 100644 keyboards/ergodox_infinity/led.c delete mode 100644 keyboards/ergodox_infinity/matrix.c delete mode 100644 keyboards/ergodox_infinity/simple_visualizer.h delete mode 100644 keyboards/ergodox_infinity/visualizer.c rename keyboards/ergosaurus/keymaps/{default => }/via/keymap.c (100%) create mode 100644 keyboards/ergosaurus/keymaps/via/rules.mk create mode 100644 keyboards/ergotaco/post_rules.mk create mode 100644 keyboards/ergotravel/keymaps/manna-harbour_miryoku/config.h create mode 100644 keyboards/ergotravel/keymaps/manna-harbour_miryoku/keymap.c create mode 100644 keyboards/esca/getawayvan/chconf.h create mode 100644 keyboards/esca/getawayvan/config.h create mode 100644 keyboards/esca/getawayvan/getawayvan.c create mode 100644 keyboards/esca/getawayvan/getawayvan.h create mode 100644 keyboards/esca/getawayvan/halconf.h create mode 100644 keyboards/esca/getawayvan/info.json create mode 100644 keyboards/esca/getawayvan/keymaps/7u/keymap.c create mode 100644 keyboards/esca/getawayvan/keymaps/default/keymap.c create mode 100644 keyboards/esca/getawayvan/keymaps/via/keymap.c create mode 100644 keyboards/esca/getawayvan/keymaps/via/rules.mk create mode 100644 keyboards/esca/getawayvan/readme.md create mode 100644 keyboards/esca/getawayvan/rules.mk create mode 100644 keyboards/esca/getawayvan_f042/chconf.h create mode 100644 keyboards/esca/getawayvan_f042/config.h create mode 100644 keyboards/esca/getawayvan_f042/getawayvan_f042.c create mode 100644 keyboards/esca/getawayvan_f042/getawayvan_f042.h create mode 100644 keyboards/esca/getawayvan_f042/halconf.h create mode 100644 keyboards/esca/getawayvan_f042/info.json create mode 100644 keyboards/esca/getawayvan_f042/keymaps/7u/keymap.c create mode 100644 keyboards/esca/getawayvan_f042/keymaps/default/keymap.c create mode 100644 keyboards/esca/getawayvan_f042/readme.md create mode 100644 keyboards/esca/getawayvan_f042/rules.mk create mode 100644 keyboards/evyd13/atom47/keymaps/via/keymap.c create mode 100644 keyboards/evyd13/atom47/keymaps/via/rules.mk create mode 100644 keyboards/evyd13/atom47/rev4/config.h create mode 100644 keyboards/evyd13/atom47/rev4/info.json create mode 100644 keyboards/evyd13/atom47/rev4/rev4.c create mode 100644 keyboards/evyd13/atom47/rev4/rev4.h create mode 100644 keyboards/evyd13/atom47/rev4/rules.mk create mode 100644 keyboards/evyd13/atom47/rev5/config.h create mode 100644 keyboards/evyd13/atom47/rev5/info.json create mode 100644 keyboards/evyd13/atom47/rev5/rev5.c create mode 100644 keyboards/evyd13/atom47/rev5/rev5.h create mode 100644 keyboards/evyd13/atom47/rev5/rules.mk create mode 100644 keyboards/evyd13/gud70/config.h create mode 100644 keyboards/evyd13/gud70/gud70.c create mode 100644 keyboards/evyd13/gud70/gud70.h create mode 100644 keyboards/evyd13/gud70/info.json create mode 100644 keyboards/evyd13/gud70/keymaps/default/keymap.c create mode 100644 keyboards/evyd13/gud70/keymaps/evyd13/keymap.c create mode 100644 keyboards/evyd13/gud70/keymaps/via/keymap.c create mode 100644 keyboards/evyd13/gud70/keymaps/via/rules.mk create mode 100644 keyboards/evyd13/gud70/readme.md create mode 100644 keyboards/evyd13/gud70/rules.mk delete mode 100644 keyboards/exclusive/e6_rgb/keymaps/60_ansi/keymap.c create mode 100644 keyboards/exclusive/e6_rgb/keymaps/60_ansi_split_bs_rshift/keymap.c delete mode 100644 keyboards/exclusive/e6_rgb/keymaps/60_ansi_split_bs_shift/keymap.c create mode 100644 keyboards/exclusive/e6_rgb/keymaps/60_tsangan_hhkb/keymap.c delete mode 100644 keyboards/exclusive/e6_rgb/keymaps/60_wkl/keymap.c delete mode 100644 keyboards/exclusive/e6_rgb/keymaps/60_wkl_split_bs/keymap.c rename keyboards/{ => eyeohdesigns}/babyv/keymaps/melonbred/keymap.c (100%) create mode 100644 keyboards/eyeohdesigns/sprh/config.h create mode 100644 keyboards/eyeohdesigns/sprh/info.json create mode 100644 keyboards/eyeohdesigns/sprh/keymaps/default/keymap.c create mode 100644 keyboards/eyeohdesigns/sprh/keymaps/split/keymap.c create mode 100644 keyboards/eyeohdesigns/sprh/readme.md create mode 100644 keyboards/eyeohdesigns/sprh/rules.mk create mode 100644 keyboards/eyeohdesigns/sprh/sprh.c create mode 100644 keyboards/eyeohdesigns/sprh/sprh.h create mode 100644 keyboards/ez_maker/directpins/promicro/config.h create mode 100644 keyboards/ez_maker/directpins/promicro/info.json create mode 100644 keyboards/ez_maker/directpins/promicro/keymaps/default/keymap.json create mode 100644 keyboards/ez_maker/directpins/promicro/promicro.c create mode 100644 keyboards/ez_maker/directpins/promicro/promicro.h create mode 100644 keyboards/ez_maker/directpins/promicro/readme.md rename keyboards/{mechlovin/hannah65/mechlovin9 => ez_maker/directpins/promicro}/rules.mk (100%) create mode 100644 keyboards/ez_maker/directpins/proton_c/info.json create mode 100644 keyboards/ez_maker/directpins/proton_c/keymaps/default/keymap.json create mode 100644 keyboards/ez_maker/directpins/proton_c/keymaps/default/readme.md create mode 100644 keyboards/ez_maker/directpins/proton_c/proton_c.c create mode 100644 keyboards/ez_maker/directpins/proton_c/proton_c.h create mode 100644 keyboards/ez_maker/directpins/proton_c/readme.md rename keyboards/{xd75/keymaps/boy_314 => ez_maker/directpins/proton_c}/rules.mk (100%) create mode 100644 keyboards/ez_maker/directpins/readme.md create mode 100644 keyboards/ez_maker/directpins/teensy_2/config.h create mode 100644 keyboards/ez_maker/directpins/teensy_2/info.json create mode 100644 keyboards/ez_maker/directpins/teensy_2/keymaps/default/keymap.json create mode 100644 keyboards/ez_maker/directpins/teensy_2/readme.md rename keyboards/{kbdfans/kbd67/mkiirgb/v1/.noci => ez_maker/directpins/teensy_2/rules.mk} (100%) create mode 100644 keyboards/ez_maker/directpins/teensy_2/teensy2.c create mode 100644 keyboards/ez_maker/directpins/teensy_2/teensy2.h create mode 100644 keyboards/ez_maker/directpins/teensy_2pp/config.h create mode 100644 keyboards/ez_maker/directpins/teensy_2pp/info.json create mode 100644 keyboards/ez_maker/directpins/teensy_2pp/keymaps/default/keymap.json create mode 100644 keyboards/ez_maker/directpins/teensy_2pp/readme.md rename keyboards/{kyria/.noci => ez_maker/directpins/teensy_2pp/rules.mk} (100%) create mode 100644 keyboards/ez_maker/directpins/teensy_2pp/teensy2.c create mode 100644 keyboards/ez_maker/directpins/teensy_2pp/teensy2.h create mode 100644 keyboards/ez_maker/directpins/teensy_32/chconf.h create mode 100644 keyboards/ez_maker/directpins/teensy_32/config.h create mode 100644 keyboards/ez_maker/directpins/teensy_32/halconf.h create mode 100644 keyboards/ez_maker/directpins/teensy_32/info.json create mode 100644 keyboards/ez_maker/directpins/teensy_32/keymaps/default/keymap.json create mode 100644 keyboards/ez_maker/directpins/teensy_32/mcuconf.h create mode 100644 keyboards/ez_maker/directpins/teensy_32/readme.md create mode 100644 keyboards/ez_maker/directpins/teensy_32/rules.mk create mode 100644 keyboards/ez_maker/directpins/teensy_lc/chconf.h create mode 100644 keyboards/ez_maker/directpins/teensy_lc/config.h create mode 100644 keyboards/ez_maker/directpins/teensy_lc/halconf.h create mode 100644 keyboards/ez_maker/directpins/teensy_lc/info.json create mode 100644 keyboards/ez_maker/directpins/teensy_lc/keymaps/default/keymap.json create mode 100644 keyboards/ez_maker/directpins/teensy_lc/mcuconf.h create mode 100644 keyboards/ez_maker/directpins/teensy_lc/readme.md create mode 100644 keyboards/ez_maker/directpins/teensy_lc/rules.mk create mode 100644 keyboards/ferris/0_2/bling/bling.c create mode 100644 keyboards/ferris/0_2/bling/config.h create mode 100644 keyboards/ferris/0_2/bling/readme.md create mode 100644 keyboards/ferris/0_2/bling/rules.mk create mode 100644 keyboards/ferris/0_2/compact/config.h create mode 100644 keyboards/ferris/0_2/compact/readme.md rename keyboards/{mechlovin/adelais/standard_led/.noci => ferris/0_2/compact/rules.mk} (100%) create mode 100644 keyboards/ferris/0_2/high/config.h create mode 100644 keyboards/ferris/0_2/high/readme.md rename keyboards/{mechlovin/adelais/standard_led/rev2/.noci => ferris/0_2/high/rules.mk} (100%) create mode 100644 keyboards/ferris/0_2/mini/config.h create mode 100644 keyboards/ferris/0_2/mini/readme.md rename keyboards/{naked60/.noci => ferris/0_2/mini/rules.mk} (100%) create mode 100644 keyboards/ffkeebs/puca/config.h create mode 100644 keyboards/ffkeebs/puca/info.json create mode 100644 keyboards/ffkeebs/puca/keymaps/default/keymap.c create mode 100644 keyboards/ffkeebs/puca/keymaps/default_numpad/keymap.c create mode 100644 keyboards/ffkeebs/puca/keymaps/default_ortho/keymap.c create mode 100644 keyboards/ffkeebs/puca/puca.c create mode 100644 keyboards/ffkeebs/puca/puca.h create mode 100644 keyboards/ffkeebs/puca/readme.md create mode 100644 keyboards/ffkeebs/puca/rules.mk create mode 100644 keyboards/fjlabs/7vhotswap/7vhotswap.c create mode 100644 keyboards/fjlabs/7vhotswap/7vhotswap.h create mode 100644 keyboards/fjlabs/7vhotswap/config.h create mode 100644 keyboards/fjlabs/7vhotswap/info.json create mode 100644 keyboards/fjlabs/7vhotswap/keymaps/default/keymap.c create mode 100644 keyboards/fjlabs/7vhotswap/keymaps/via/keymap.c create mode 100644 keyboards/fjlabs/7vhotswap/keymaps/via/rules.mk create mode 100644 keyboards/fjlabs/7vhotswap/readme.md create mode 100644 keyboards/fjlabs/7vhotswap/rules.mk create mode 100644 keyboards/fjlabs/ad65/ad65.c create mode 100644 keyboards/fjlabs/ad65/ad65.h create mode 100644 keyboards/fjlabs/ad65/config.h create mode 100644 keyboards/fjlabs/ad65/info.json create mode 100644 keyboards/fjlabs/ad65/keymaps/default/keymap.c create mode 100644 keyboards/fjlabs/ad65/keymaps/via/keymap.c create mode 100644 keyboards/fjlabs/ad65/keymaps/via/rules.mk create mode 100644 keyboards/fjlabs/ad65/readme.md create mode 100644 keyboards/fjlabs/ad65/rules.mk create mode 100644 keyboards/fjlabs/kf87/config.h create mode 100644 keyboards/fjlabs/kf87/info.json create mode 100644 keyboards/fjlabs/kf87/keymaps/default/keymap.c create mode 100644 keyboards/fjlabs/kf87/keymaps/via/keymap.c create mode 100644 keyboards/fjlabs/kf87/keymaps/via/rules.mk create mode 100644 keyboards/fjlabs/kf87/kf87.c create mode 100644 keyboards/fjlabs/kf87/kf87.h create mode 100644 keyboards/fjlabs/kf87/readme.md create mode 100644 keyboards/fjlabs/kf87/rules.mk create mode 100644 keyboards/fjlabs/mk61rgbansi/config.h create mode 100644 keyboards/fjlabs/mk61rgbansi/info.json create mode 100644 keyboards/fjlabs/mk61rgbansi/keymaps/default/keymap.c create mode 100644 keyboards/fjlabs/mk61rgbansi/keymaps/via/keymap.c create mode 100644 keyboards/fjlabs/mk61rgbansi/keymaps/via/rules.mk create mode 100644 keyboards/fjlabs/mk61rgbansi/mk61rgbansi.c create mode 100644 keyboards/fjlabs/mk61rgbansi/mk61rgbansi.h create mode 100644 keyboards/fjlabs/mk61rgbansi/readme.md create mode 100644 keyboards/fjlabs/mk61rgbansi/rules.mk create mode 100644 keyboards/fjlabs/ready100/config.h create mode 100644 keyboards/fjlabs/ready100/info.json create mode 100644 keyboards/fjlabs/ready100/keymaps/default/keymap.c create mode 100644 keyboards/fjlabs/ready100/keymaps/via/keymap.c create mode 100644 keyboards/fjlabs/ready100/keymaps/via/rules.mk create mode 100644 keyboards/fjlabs/ready100/readme.md create mode 100644 keyboards/fjlabs/ready100/ready100.c create mode 100644 keyboards/fjlabs/ready100/ready100.h create mode 100644 keyboards/fjlabs/ready100/rules.mk create mode 100644 keyboards/fjlabs/tf60ansi/config.h create mode 100644 keyboards/fjlabs/tf60ansi/info.json create mode 100644 keyboards/fjlabs/tf60ansi/keymaps/default/keymap.c create mode 100644 keyboards/fjlabs/tf60ansi/keymaps/via/keymap.c create mode 100644 keyboards/fjlabs/tf60ansi/keymaps/via/rules.mk create mode 100644 keyboards/fjlabs/tf60ansi/readme.md create mode 100644 keyboards/fjlabs/tf60ansi/rules.mk create mode 100644 keyboards/fjlabs/tf60ansi/tf60ansi.c create mode 100644 keyboards/fjlabs/tf60ansi/tf60ansi.h create mode 100644 keyboards/fjlabs/tf60v2/config.h create mode 100644 keyboards/fjlabs/tf60v2/info.json create mode 100644 keyboards/fjlabs/tf60v2/keymaps/default/keymap.c create mode 100644 keyboards/fjlabs/tf60v2/keymaps/via/keymap.c create mode 100644 keyboards/fjlabs/tf60v2/keymaps/via/rules.mk create mode 100644 keyboards/fjlabs/tf60v2/readme.md create mode 100644 keyboards/fjlabs/tf60v2/rules.mk create mode 100644 keyboards/fjlabs/tf60v2/tf60v2.c create mode 100644 keyboards/fjlabs/tf60v2/tf60v2.h create mode 100644 keyboards/fjlabs/tf65rgbv2/config.h create mode 100644 keyboards/fjlabs/tf65rgbv2/info.json create mode 100644 keyboards/fjlabs/tf65rgbv2/keymaps/default/keymap.c create mode 100644 keyboards/fjlabs/tf65rgbv2/keymaps/via/keymap.c create mode 100644 keyboards/fjlabs/tf65rgbv2/keymaps/via/rules.mk create mode 100644 keyboards/fjlabs/tf65rgbv2/readme.md create mode 100644 keyboards/fjlabs/tf65rgbv2/rules.mk create mode 100644 keyboards/fjlabs/tf65rgbv2/tf65rgbv2.c create mode 100644 keyboards/fjlabs/tf65rgbv2/tf65rgbv2.h create mode 100644 keyboards/flehrad/tradestation/keymaps/tradestation/keymap.c create mode 100644 keyboards/flxlb/zplit/keymaps/default/config.h create mode 100644 keyboards/flxlb/zplit/keymaps/default/keymap.c create mode 100644 keyboards/flxlb/zplit/keymaps/via/rules.mk create mode 100644 keyboards/flygone60/rev3/config.h create mode 100644 keyboards/flygone60/rev3/info.json create mode 100644 keyboards/flygone60/rev3/keymaps/default/keymap.c create mode 100644 keyboards/flygone60/rev3/keymaps/default/readme.md create mode 100644 keyboards/flygone60/rev3/keymaps/via/keymap.c rename keyboards/{ergodone => flygone60/rev3}/keymaps/via/rules.mk (100%) create mode 100644 keyboards/flygone60/rev3/readme.md create mode 100644 keyboards/flygone60/rev3/rev3.c create mode 100644 keyboards/flygone60/rev3/rev3.h create mode 100644 keyboards/flygone60/rev3/rules.mk create mode 100644 keyboards/foostan/cornelius/keymaps/gipsy-king/keymap.c create mode 100644 keyboards/foostan/cornelius/keymaps/gipsy-king/readme.md create mode 100644 keyboards/foostan/cornelius/keymaps/hvp/config.h create mode 100644 keyboards/foostan/cornelius/keymaps/hvp/keymap.c create mode 100644 keyboards/foostan/cornelius/keymaps/hvp/readme.md create mode 100644 keyboards/foostan/cornelius/keymaps/hvp/rules.mk create mode 100644 keyboards/for_science/keymaps/manna-harbour_miryoku/config.h create mode 100644 keyboards/for_science/keymaps/manna-harbour_miryoku/keymap.c create mode 100644 keyboards/free_willy/config.h create mode 100644 keyboards/free_willy/free_willy.c create mode 100644 keyboards/free_willy/free_willy.h create mode 100644 keyboards/free_willy/info.json create mode 100644 keyboards/free_willy/keymaps/colemak/config.h create mode 100644 keyboards/free_willy/keymaps/colemak/keymap.c rename keyboards/{anavi/macropad2/keymaps/binary => free_willy/keymaps/colemak}/rules.mk (100%) create mode 100644 keyboards/free_willy/keymaps/default/config.h create mode 100644 keyboards/free_willy/keymaps/default/keymap.c rename keyboards/{anavi/macropad2/keymaps/copypaste => free_willy/keymaps/default}/rules.mk (100%) create mode 100644 keyboards/free_willy/readme.md create mode 100644 keyboards/free_willy/rules.mk create mode 100644 keyboards/frooastboard/config.h create mode 100644 keyboards/frooastboard/frooastboard.c create mode 100644 keyboards/frooastboard/frooastboard.h create mode 100644 keyboards/frooastboard/info.json create mode 100644 keyboards/frooastboard/keymaps/default/keymap.c create mode 100644 keyboards/frooastboard/keymaps/safe_mode/keymap.c create mode 100644 keyboards/frooastboard/keymaps/via/config.h create mode 100644 keyboards/frooastboard/keymaps/via/keymap.c create mode 100644 keyboards/frooastboard/keymaps/via/rules.mk create mode 100644 keyboards/frooastboard/readme.md create mode 100644 keyboards/frooastboard/rules.mk create mode 100644 keyboards/gboards/combos/colemakdhm-vim-helpers.def create mode 100644 keyboards/gboards/gergoplex/config.h create mode 100644 keyboards/gboards/gergoplex/gergoplex.c create mode 100644 keyboards/gboards/gergoplex/gergoplex.h create mode 100644 keyboards/gboards/gergoplex/keymaps/colemak-dhm/combos.def create mode 100644 keyboards/gboards/gergoplex/keymaps/colemak-dhm/gergoplex.def create mode 100644 keyboards/gboards/gergoplex/keymaps/colemak-dhm/keymap.c create mode 100644 keyboards/gboards/gergoplex/keymaps/colemak-dhm/rules.mk create mode 100644 keyboards/gboards/gergoplex/keymaps/default/combos.def create mode 100644 keyboards/gboards/gergoplex/keymaps/default/gergoplex.def create mode 100644 keyboards/gboards/gergoplex/keymaps/default/keymap.c create mode 100644 keyboards/gboards/gergoplex/keymaps/default/rules.mk create mode 100644 keyboards/gboards/gergoplex/keymaps/georgepetri/combos.def create mode 100644 keyboards/gboards/gergoplex/keymaps/georgepetri/config.h create mode 100644 keyboards/gboards/gergoplex/keymaps/georgepetri/gergoplex.def create mode 100644 keyboards/gboards/gergoplex/keymaps/georgepetri/keymap.c create mode 100644 keyboards/gboards/gergoplex/keymaps/georgepetri/readme.md create mode 100644 keyboards/gboards/gergoplex/keymaps/georgepetri/rules.mk create mode 100644 keyboards/gboards/gergoplex/matrix.c create mode 100644 keyboards/gboards/gergoplex/readme.md create mode 100644 keyboards/gboards/gergoplex/rules.mk create mode 100644 keyboards/gentleman65/config.h create mode 100644 keyboards/gentleman65/gentleman65.c create mode 100644 keyboards/gentleman65/gentleman65.h create mode 100644 keyboards/gentleman65/info.json create mode 100644 keyboards/gentleman65/keymaps/default/keymap.c create mode 100644 keyboards/gentleman65/keymaps/via/keymap.c rename keyboards/{xd84pro => gentleman65}/keymaps/via/rules.mk (100%) create mode 100644 keyboards/gentleman65/readme.md create mode 100644 keyboards/gentleman65/rules.mk create mode 100644 keyboards/gergo/keymaps/manna-harbour_miryoku/config.h create mode 100644 keyboards/gergo/keymaps/manna-harbour_miryoku/keymap.c create mode 100644 keyboards/gmmk/pro/ansi/ansi.c create mode 100644 keyboards/gmmk/pro/ansi/ansi.h create mode 100644 keyboards/gmmk/pro/ansi/config.h create mode 100644 keyboards/gmmk/pro/ansi/info.json create mode 100644 keyboards/gmmk/pro/ansi/keymaps/alexmarmon/keymap.c create mode 100644 keyboards/gmmk/pro/ansi/keymaps/alexmarmon/readme.md create mode 100644 keyboards/gmmk/pro/ansi/keymaps/andrebrait/config.h create mode 100644 keyboards/gmmk/pro/ansi/keymaps/andrebrait/keymap.c create mode 100644 keyboards/gmmk/pro/ansi/keymaps/andrebrait/readme.md create mode 100644 keyboards/gmmk/pro/ansi/keymaps/andrebrait/rules.mk create mode 100644 keyboards/gmmk/pro/ansi/keymaps/benschaeff/keymap.c create mode 100644 keyboards/gmmk/pro/ansi/keymaps/benschaeff/readme.md create mode 100644 keyboards/gmmk/pro/ansi/keymaps/coryginsberg/config.h create mode 100644 keyboards/gmmk/pro/ansi/keymaps/coryginsberg/keymap.c create mode 100644 keyboards/gmmk/pro/ansi/keymaps/coryginsberg/readme.md create mode 100644 keyboards/gmmk/pro/ansi/keymaps/coryginsberg/rules.mk create mode 100644 keyboards/gmmk/pro/ansi/keymaps/default/keymap.c create mode 100644 keyboards/gmmk/pro/ansi/keymaps/jackkenney/keymap.c create mode 100644 keyboards/gmmk/pro/ansi/keymaps/jonavin/config.h create mode 100644 keyboards/gmmk/pro/ansi/keymaps/jonavin/keymap.c create mode 100644 keyboards/gmmk/pro/ansi/keymaps/jonavin/readme.md create mode 100644 keyboards/gmmk/pro/ansi/keymaps/jonavin/rgb_matrix_map.h create mode 100644 keyboards/gmmk/pro/ansi/keymaps/jonavin/rules.mk create mode 100644 keyboards/gmmk/pro/ansi/keymaps/mattgauf/ansi.c create mode 100644 keyboards/gmmk/pro/ansi/keymaps/mattgauf/config.h create mode 100644 keyboards/gmmk/pro/ansi/keymaps/mattgauf/helpers.c create mode 100644 keyboards/gmmk/pro/ansi/keymaps/mattgauf/keymap.c create mode 100644 keyboards/gmmk/pro/ansi/keymaps/mattgauf/keymap_helpers.h create mode 100644 keyboards/gmmk/pro/ansi/keymaps/mattgauf/readme.md create mode 100644 keyboards/gmmk/pro/ansi/keymaps/mattgauf/rules.mk create mode 100644 keyboards/gmmk/pro/ansi/keymaps/mike1808/.gitignore create mode 100644 keyboards/gmmk/pro/ansi/keymaps/mike1808/README.md create mode 100644 keyboards/gmmk/pro/ansi/keymaps/mike1808/config.h create mode 100644 keyboards/gmmk/pro/ansi/keymaps/mike1808/encoder.c create mode 100644 keyboards/gmmk/pro/ansi/keymaps/mike1808/encoder.h create mode 100644 keyboards/gmmk/pro/ansi/keymaps/mike1808/fun.c create mode 100644 keyboards/gmmk/pro/ansi/keymaps/mike1808/keymap.c create mode 100644 keyboards/gmmk/pro/ansi/keymaps/mike1808/mike1808.c create mode 100644 keyboards/gmmk/pro/ansi/keymaps/mike1808/mike1808.h create mode 100644 keyboards/gmmk/pro/ansi/keymaps/mike1808/process_record.c create mode 100644 keyboards/gmmk/pro/ansi/keymaps/mike1808/process_record.h create mode 100644 keyboards/gmmk/pro/ansi/keymaps/mike1808/rgb_matrix_ledmaps.c create mode 100644 keyboards/gmmk/pro/ansi/keymaps/mike1808/rgb_matrix_ledmaps.h create mode 100644 keyboards/gmmk/pro/ansi/keymaps/mike1808/rules.mk create mode 100644 keyboards/gmmk/pro/ansi/keymaps/mike1808/utils.c create mode 100644 keyboards/gmmk/pro/ansi/keymaps/mike1808/utils.h create mode 100644 keyboards/gmmk/pro/ansi/keymaps/paddlegame/config.h create mode 100644 keyboards/gmmk/pro/ansi/keymaps/paddlegame/keymap.c create mode 100644 keyboards/gmmk/pro/ansi/keymaps/paddlegame/paddlegame.h create mode 100644 keyboards/gmmk/pro/ansi/keymaps/paddlegame/readme.md create mode 100644 keyboards/gmmk/pro/ansi/keymaps/paddlegame/rgb_matrix_map.h create mode 100644 keyboards/gmmk/pro/ansi/keymaps/paddlegame/rules.mk create mode 100644 keyboards/gmmk/pro/ansi/keymaps/stickandgum/config.h create mode 100644 keyboards/gmmk/pro/ansi/keymaps/stickandgum/keymap.c create mode 100644 keyboards/gmmk/pro/ansi/keymaps/stickandgum/readme.md create mode 100644 keyboards/gmmk/pro/ansi/keymaps/stickandgum/rules.mk create mode 100644 keyboards/gmmk/pro/ansi/keymaps/via/keymap.c create mode 100644 keyboards/gmmk/pro/ansi/keymaps/via/rules.mk rename keyboards/gmmk/pro/{ => ansi}/keymaps/wholesomeducky/keymap.c (100%) create mode 100644 keyboards/gmmk/pro/ansi/keymaps/willwm/keymap.c rename keyboards/gmmk/pro/{ => ansi}/keymaps/willwm/keymap.json (100%) rename keyboards/gmmk/pro/{ => ansi}/keymaps/willwm/readme.md (100%) rename keyboards/gmmk/pro/{ => ansi}/keymaps/willwm/rules.mk (100%) create mode 100644 keyboards/gmmk/pro/ansi/readme.md create mode 100644 keyboards/gmmk/pro/ansi/rules.mk create mode 100644 keyboards/gmmk/pro/halconf.h delete mode 100644 keyboards/gmmk/pro/info.json create mode 100644 keyboards/gmmk/pro/iso/config.h create mode 100644 keyboards/gmmk/pro/iso/info.json create mode 100644 keyboards/gmmk/pro/iso/iso.c create mode 100644 keyboards/gmmk/pro/iso/iso.h create mode 100644 keyboards/gmmk/pro/iso/keymaps/default/keymap.c create mode 100644 keyboards/gmmk/pro/iso/keymaps/via/keymap.c create mode 100644 keyboards/gmmk/pro/iso/keymaps/via/rules.mk create mode 100644 keyboards/gmmk/pro/iso/readme.md create mode 100644 keyboards/gmmk/pro/iso/rules.mk delete mode 100644 keyboards/gmmk/pro/keymaps/default/keymap.c create mode 100644 keyboards/gmmk/pro/keymaps/moults31/keymap.c delete mode 100644 keyboards/gmmk/pro/keymaps/via/keymap.c delete mode 100644 keyboards/gmmk/pro/keymaps/willwm/keymap.c create mode 100644 keyboards/gmmk/pro/mcuconf.h delete mode 100644 keyboards/gmmk/pro/readme.md delete mode 100644 keyboards/gmmk/pro/rules.mk create mode 100644 keyboards/gon/nerd60/keymaps/via/keymap.c create mode 100644 keyboards/gon/nerd60/keymaps/via/rules.mk create mode 100644 keyboards/gorthage_truck/config.h create mode 100644 keyboards/gorthage_truck/gorthage_truck.c create mode 100644 keyboards/gorthage_truck/gorthage_truck.h create mode 100644 keyboards/gorthage_truck/info.json create mode 100644 keyboards/gorthage_truck/keymaps/10u/keymap.c create mode 100644 keyboards/gorthage_truck/keymaps/10u/readme.md create mode 100644 keyboards/gorthage_truck/keymaps/7u/keymap.c create mode 100644 keyboards/gorthage_truck/keymaps/7u/readme.md create mode 100644 keyboards/gorthage_truck/keymaps/default/keymap.c create mode 100644 keyboards/gorthage_truck/keymaps/default/readme.md create mode 100644 keyboards/gorthage_truck/readme.md create mode 100644 keyboards/gorthage_truck/rules.mk create mode 100644 keyboards/gray_studio/think65/solder/keymaps/dangjoeltang/keymap.c create mode 100644 keyboards/gray_studio/think65/solder/keymaps/dangjoeltang/readme.md delete mode 100755 keyboards/gskt00/config.h delete mode 100755 keyboards/gskt00/gskt00.c delete mode 100755 keyboards/gskt00/gskt00.h delete mode 100644 keyboards/gskt00/info.json delete mode 100755 keyboards/gskt00/keymaps/default/keymap.c delete mode 100644 keyboards/gskt00/readme.md delete mode 100755 keyboards/gskt00/rules.mk create mode 100644 keyboards/h0oni/hotduck/config.h create mode 100644 keyboards/h0oni/hotduck/hotduck.c create mode 100644 keyboards/h0oni/hotduck/hotduck.h create mode 100644 keyboards/h0oni/hotduck/info.json create mode 100644 keyboards/h0oni/hotduck/keymaps/default/keymap.c create mode 100644 keyboards/h0oni/hotduck/keymaps/via/keymap.c create mode 100644 keyboards/h0oni/hotduck/keymaps/via/rules.mk create mode 100644 keyboards/h0oni/hotduck/readme.md create mode 100644 keyboards/h0oni/hotduck/rules.mk delete mode 100644 keyboards/hadron/i2c.c delete mode 100644 keyboards/hadron/i2c.h delete mode 100644 keyboards/hadron/ver2/keymaps/readme.md delete mode 100644 keyboards/hadron/ver3/keymaps/default/config.h delete mode 100644 keyboards/hadron/ver3/keymaps/readme.md create mode 100644 keyboards/halfcliff/config.h create mode 100644 keyboards/halfcliff/halfcliff.c create mode 100644 keyboards/halfcliff/halfcliff.h create mode 100644 keyboards/halfcliff/info.json create mode 100644 keyboards/halfcliff/keymaps/default/keymap.c create mode 100644 keyboards/halfcliff/keymaps/default/readme.md create mode 100644 keyboards/halfcliff/keymaps/via/keymap.c create mode 100644 keyboards/halfcliff/keymaps/via/readme.md create mode 100644 keyboards/halfcliff/keymaps/via/rules.mk create mode 100644 keyboards/halfcliff/matrix.c create mode 100644 keyboards/halfcliff/readme.md create mode 100644 keyboards/halfcliff/rules.mk create mode 100644 keyboards/han60/config.h create mode 100644 keyboards/han60/han60.c create mode 100644 keyboards/han60/han60.h create mode 100644 keyboards/han60/info.json create mode 100644 keyboards/han60/keymaps/default/keymap.c create mode 100644 keyboards/han60/keymaps/default/readme.md create mode 100644 keyboards/han60/keymaps/via/keymap.c create mode 100644 keyboards/han60/keymaps/via/rules.mk create mode 100644 keyboards/han60/readme.md create mode 100644 keyboards/han60/rules.mk create mode 100644 keyboards/handwired/aek64/keymaps/4sstylz/config.h rename keyboards/{anavi/macropad2/keymaps/default => handwired/aek64/keymaps/4sstylz}/rules.mk (100%) create mode 100644 keyboards/handwired/battleship_gamepad/battleship_gamepad.c create mode 100644 keyboards/handwired/battleship_gamepad/battleship_gamepad.h create mode 100644 keyboards/handwired/battleship_gamepad/config.h create mode 100644 keyboards/handwired/battleship_gamepad/info.json create mode 100644 keyboards/handwired/battleship_gamepad/keymaps/default/keymap.c create mode 100644 keyboards/handwired/battleship_gamepad/keymaps/default/readme.md create mode 100644 keyboards/handwired/battleship_gamepad/keymaps/via/keymap.c create mode 100644 keyboards/handwired/battleship_gamepad/keymaps/via/rules.mk create mode 100644 keyboards/handwired/battleship_gamepad/readme.md create mode 100644 keyboards/handwired/battleship_gamepad/rules.mk rename keyboards/{anavi/macropad2/keymaps/tap_dance => handwired/concertina/64key/keymaps/default}/rules.mk (100%) delete mode 100644 keyboards/handwired/dactyl/i2cmaster.h delete mode 100644 keyboards/handwired/dactyl/twimaster.c create mode 100644 keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/config.h create mode 100644 keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/keymap.c create mode 100644 keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/config.h create mode 100644 keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/keymap.c delete mode 100644 keyboards/handwired/dactyl_manuform/5x6_right_trackball/5x6_right_trackball.c delete mode 100644 keyboards/handwired/dactyl_manuform/5x6_right_trackball/5x6_right_trackball.h delete mode 100644 keyboards/handwired/dactyl_manuform/5x6_right_trackball/config.h delete mode 100644 keyboards/handwired/dactyl_manuform/5x6_right_trackball/info.json delete mode 100644 keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/default/config.h delete mode 100644 keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/default/keymap.c delete mode 100644 keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/default/rules.mk delete mode 100644 keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/drashna/config.h delete mode 100644 keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/drashna/keymap.c delete mode 100644 keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/drashna/rules.mk delete mode 100644 keyboards/handwired/dactyl_manuform/5x6_right_trackball/pmw3360.c delete mode 100644 keyboards/handwired/dactyl_manuform/5x6_right_trackball/pmw3360.h delete mode 100644 keyboards/handwired/dactyl_manuform/5x6_right_trackball/pmw3360_firmware.h delete mode 100644 keyboards/handwired/dactyl_manuform/5x6_right_trackball/pointer_transport.c delete mode 100644 keyboards/handwired/dactyl_manuform/5x6_right_trackball/post_config.h delete mode 100644 keyboards/handwired/dactyl_manuform/5x6_right_trackball/rules.mk delete mode 100644 keyboards/handwired/dactyl_manuform/rules.mk create mode 100644 keyboards/handwired/dc/mc/001/001.c create mode 100644 keyboards/handwired/dc/mc/001/001.h create mode 100644 keyboards/handwired/dc/mc/001/config.h create mode 100644 keyboards/handwired/dc/mc/001/info.json create mode 100644 keyboards/handwired/dc/mc/001/keymaps/default/keymap.c create mode 100644 keyboards/handwired/dc/mc/001/keymaps/default/readme.md create mode 100644 keyboards/handwired/dc/mc/001/readme.md create mode 100644 keyboards/handwired/dc/mc/001/rules.mk create mode 100644 keyboards/handwired/elrgo_s/config.h create mode 100644 keyboards/handwired/elrgo_s/elrgo_s.c create mode 100644 keyboards/handwired/elrgo_s/elrgo_s.h create mode 100644 keyboards/handwired/elrgo_s/info.json create mode 100644 keyboards/handwired/elrgo_s/keymaps/default/config.h create mode 100644 keyboards/handwired/elrgo_s/keymaps/default/keymap.c create mode 100644 keyboards/handwired/elrgo_s/readme.md create mode 100644 keyboards/handwired/elrgo_s/rules.mk create mode 100644 keyboards/handwired/frankie_macropad/keymaps/default/config.h create mode 100644 keyboards/handwired/marauder/keymaps/orvia/keymap.c create mode 100644 keyboards/handwired/marauder/keymaps/orvia/rules.mk create mode 100644 keyboards/handwired/marauder/keymaps/via/keymap.c create mode 100644 keyboards/handwired/marauder/keymaps/via/rules.mk rename keyboards/{xd002/keymaps/tap_dance => handwired/myskeeb/keymaps/default}/rules.mk (100%) create mode 100644 keyboards/handwired/nozbe_macro/config.h create mode 100644 keyboards/handwired/nozbe_macro/info.json create mode 100644 keyboards/handwired/nozbe_macro/keymaps/default/keymap.c create mode 100644 keyboards/handwired/nozbe_macro/keymaps/default/readme.md create mode 100644 keyboards/handwired/nozbe_macro/nozbe_macro.c create mode 100644 keyboards/handwired/nozbe_macro/nozbe_macro.h create mode 100644 keyboards/handwired/nozbe_macro/readme.md create mode 100644 keyboards/handwired/nozbe_macro/rules.mk create mode 100644 keyboards/handwired/oem_ansi_fullsize/config.h create mode 100644 keyboards/handwired/oem_ansi_fullsize/info.json create mode 100644 keyboards/handwired/oem_ansi_fullsize/keymaps/default/keymap.c create mode 100644 keyboards/handwired/oem_ansi_fullsize/keymaps/default/readme.md create mode 100644 keyboards/handwired/oem_ansi_fullsize/oem_ansi_fullsize.c create mode 100644 keyboards/handwired/oem_ansi_fullsize/oem_ansi_fullsize.h create mode 100644 keyboards/handwired/oem_ansi_fullsize/readme.md create mode 100644 keyboards/handwired/oem_ansi_fullsize/rules.mk create mode 100644 keyboards/handwired/onekey/keymaps/console/keymap.c create mode 100644 keyboards/handwired/onekey/keymaps/digitizer/keymap.c create mode 100644 keyboards/handwired/onekey/keymaps/digitizer/rules.mk delete mode 100644 keyboards/handwired/onekey/keymaps/quine/rules.mk create mode 100644 keyboards/handwired/onekey/sipeed_longan_nano/chconf.h create mode 100644 keyboards/handwired/onekey/sipeed_longan_nano/config.h create mode 100644 keyboards/handwired/onekey/sipeed_longan_nano/halconf.h create mode 100644 keyboards/handwired/onekey/sipeed_longan_nano/mcuconf.h create mode 100644 keyboards/handwired/onekey/sipeed_longan_nano/readme.md create mode 100644 keyboards/handwired/onekey/sipeed_longan_nano/rules.mk create mode 100644 keyboards/handwired/onekey/stm32f405_feather/config.h create mode 100644 keyboards/handwired/onekey/stm32f405_feather/readme.md create mode 100644 keyboards/handwired/onekey/stm32f405_feather/rules.mk delete mode 100644 keyboards/handwired/p1800fl/config.h delete mode 100644 keyboards/handwired/p1800fl/info.json delete mode 100644 keyboards/handwired/p1800fl/keymaps/default/keymap.c delete mode 100644 keyboards/handwired/p1800fl/readme.md delete mode 100644 keyboards/handwired/p1800fl/rules.mk create mode 100644 keyboards/handwired/pytest/info.json rename keyboards/{xd002 => handwired/pytest/macro}/.noci (100%) create mode 100644 keyboards/handwired/pytest/macro/info.json create mode 100644 keyboards/handwired/pytest/macro/keymaps/default/keymap.json rename keyboards/{xd60/rev2/.noci => handwired/pytest/macro/readme.md} (100%) create mode 100644 keyboards/handwired/pytest/macro/rules.mk create mode 100644 keyboards/handwired/space_oddity/keymaps/default/rules.mk create mode 100644 keyboards/handwired/split65/info.json create mode 100644 keyboards/handwired/split65/keymaps/default/keymap.c create mode 100644 keyboards/handwired/split65/keymaps/via/keymap.c create mode 100644 keyboards/handwired/split65/keymaps/via/rules.mk create mode 100644 keyboards/handwired/split65/promicro/config.h create mode 100644 keyboards/handwired/split65/promicro/promicro.c create mode 100644 keyboards/handwired/split65/promicro/promicro.h create mode 100644 keyboards/handwired/split65/promicro/rules.mk create mode 100644 keyboards/handwired/split65/readme.md create mode 100644 keyboards/handwired/split65/split65.c create mode 100644 keyboards/handwired/split65/split65.h create mode 100644 keyboards/handwired/split65/stm32/config.h create mode 100644 keyboards/handwired/split65/stm32/halconf.h create mode 100644 keyboards/handwired/split65/stm32/rules.mk create mode 100644 keyboards/handwired/split65/stm32/stm32.c create mode 100644 keyboards/handwired/split65/stm32/stm32.h create mode 100644 keyboards/handwired/stream_cheap/2x3/readme.md create mode 100644 keyboards/handwired/stream_cheap/2x4/keymaps/via/keymap.c create mode 100644 keyboards/handwired/stream_cheap/2x4/keymaps/via/rules.mk create mode 100644 keyboards/handwired/stream_cheap/2x4/readme.md create mode 100644 keyboards/handwired/stream_cheap/2x5/readme.md delete mode 100644 keyboards/handwired/symmetric70_proto/config.h create mode 100644 keyboards/handwired/symmetric70_proto/debug_config.h create mode 100644 keyboards/handwired/symmetric70_proto/local_features.mk delete mode 100644 keyboards/handwired/symmetric70_proto/matrix.c create mode 100644 keyboards/handwired/symmetric70_proto/matrix_debug/gpio_extr.h create mode 100644 keyboards/handwired/symmetric70_proto/matrix_debug/matrix.c create mode 100644 keyboards/handwired/symmetric70_proto/matrix_debug/readme.md create mode 100644 keyboards/handwired/symmetric70_proto/matrix_fast/cpp_map.h create mode 100644 keyboards/handwired/symmetric70_proto/matrix_fast/gpio_extr.h create mode 100644 keyboards/handwired/symmetric70_proto/matrix_fast/matrix.c create mode 100644 keyboards/handwired/symmetric70_proto/matrix_fast/matrix_config_expand.c create mode 100644 keyboards/handwired/symmetric70_proto/matrix_fast/matrix_extension_74hc15x.c create mode 100644 keyboards/handwired/symmetric70_proto/matrix_fast/matrix_extr.h create mode 100644 keyboards/handwired/symmetric70_proto/matrix_fast/readme.md create mode 100644 keyboards/handwired/symmetric70_proto/matrix_fast/test_config.h create mode 100644 keyboards/handwired/symmetric70_proto/matrix_fast/test_config_74hc157.h create mode 100644 keyboards/handwired/symmetric70_proto/matrix_fast/test_config_direct.h create mode 100644 keyboards/handwired/symmetric70_proto/post_rules.mk create mode 100644 keyboards/handwired/symmetric70_proto/promicro/config.h create mode 100644 keyboards/handwired/symmetric70_proto/promicro/fast/config.h create mode 100644 keyboards/handwired/symmetric70_proto/promicro/fast/readme.md create mode 100644 keyboards/handwired/symmetric70_proto/promicro/fast/rules.mk create mode 100644 keyboards/handwired/symmetric70_proto/promicro/normal/config.h create mode 100644 keyboards/handwired/symmetric70_proto/promicro/normal/readme.md create mode 100644 keyboards/handwired/symmetric70_proto/promicro/normal/rules.mk create mode 100644 keyboards/handwired/symmetric70_proto/promicro/readme.md create mode 100644 keyboards/handwired/symmetric70_proto/promicro/rules.mk create mode 100644 keyboards/handwired/symmetric70_proto/proton_c/config.h create mode 100644 keyboards/handwired/symmetric70_proto/proton_c/fast/config.h create mode 100644 keyboards/handwired/symmetric70_proto/proton_c/fast/readme.md create mode 100644 keyboards/handwired/symmetric70_proto/proton_c/fast/rules.mk create mode 100644 keyboards/handwired/symmetric70_proto/proton_c/normal/config.h create mode 100644 keyboards/handwired/symmetric70_proto/proton_c/normal/readme.md create mode 100644 keyboards/handwired/symmetric70_proto/proton_c/normal/rules.mk create mode 100644 keyboards/handwired/symmetric70_proto/proton_c/proton_c.c create mode 100644 keyboards/handwired/symmetric70_proto/proton_c/readme.md create mode 100644 keyboards/handwired/symmetric70_proto/proton_c/rules.mk delete mode 100644 keyboards/handwired/symmetric70_proto/rules.mk create mode 100644 keyboards/handwired/tractyl_manuform/4x6_right/4x6_right.c create mode 100644 keyboards/handwired/tractyl_manuform/4x6_right/4x6_right.h create mode 100644 keyboards/handwired/tractyl_manuform/4x6_right/config.h create mode 100644 keyboards/handwired/tractyl_manuform/4x6_right/info.json create mode 100644 keyboards/handwired/tractyl_manuform/4x6_right/keymaps/default/keymap.c create mode 100644 keyboards/handwired/tractyl_manuform/4x6_right/keymaps/drashna/config.h create mode 100644 keyboards/handwired/tractyl_manuform/4x6_right/keymaps/drashna/keymap.c create mode 100644 keyboards/handwired/tractyl_manuform/4x6_right/keymaps/drashna/rules.mk rename keyboards/handwired/{dactyl_manuform/5x6_right_trackball => tractyl_manuform/4x6_right}/readme.md (100%) create mode 100644 keyboards/handwired/tractyl_manuform/4x6_right/rules.mk create mode 100644 keyboards/handwired/tractyl_manuform/5x6_right/5x6_right.c create mode 100644 keyboards/handwired/tractyl_manuform/5x6_right/5x6_right.h create mode 100644 keyboards/handwired/tractyl_manuform/5x6_right/config.h create mode 100644 keyboards/handwired/tractyl_manuform/5x6_right/elite_c/config.h create mode 100644 keyboards/handwired/tractyl_manuform/5x6_right/elite_c/elite_c.h create mode 100644 keyboards/handwired/tractyl_manuform/5x6_right/elite_c/rules.mk create mode 100644 keyboards/handwired/tractyl_manuform/5x6_right/f303/config.h create mode 100644 keyboards/handwired/tractyl_manuform/5x6_right/f303/f303.c create mode 100644 keyboards/handwired/tractyl_manuform/5x6_right/f303/f303.h create mode 100644 keyboards/handwired/tractyl_manuform/5x6_right/f303/halconf.h create mode 100644 keyboards/handwired/tractyl_manuform/5x6_right/f303/mcuconf.h create mode 100644 keyboards/handwired/tractyl_manuform/5x6_right/f303/readme.md create mode 100644 keyboards/handwired/tractyl_manuform/5x6_right/f303/rules.mk create mode 100644 keyboards/handwired/tractyl_manuform/5x6_right/f411/chconf.h create mode 100644 keyboards/handwired/tractyl_manuform/5x6_right/f411/config.h create mode 100644 keyboards/handwired/tractyl_manuform/5x6_right/f411/f411.c create mode 100644 keyboards/handwired/tractyl_manuform/5x6_right/f411/f411.h create mode 100644 keyboards/handwired/tractyl_manuform/5x6_right/f411/halconf.h create mode 100644 keyboards/handwired/tractyl_manuform/5x6_right/f411/mcuconf.h create mode 100644 keyboards/handwired/tractyl_manuform/5x6_right/f411/readme.md create mode 100644 keyboards/handwired/tractyl_manuform/5x6_right/f411/rules.mk create mode 100644 keyboards/handwired/tractyl_manuform/5x6_right/info.json create mode 100644 keyboards/handwired/tractyl_manuform/5x6_right/keymaps/default/keymap.c create mode 100644 keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/config.h create mode 100644 keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/keymap.c create mode 100644 keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/rgblight_breathe_table.h create mode 100644 keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/rules.mk create mode 100644 keyboards/handwired/tractyl_manuform/5x6_right/readme.md create mode 100644 keyboards/handwired/tractyl_manuform/5x6_right/rules.mk create mode 100644 keyboards/handwired/tractyl_manuform/5x6_right/teensy2pp/config.h create mode 100644 keyboards/handwired/tractyl_manuform/5x6_right/teensy2pp/rules.mk create mode 100644 keyboards/handwired/tractyl_manuform/5x6_right/teensy2pp/teensy2pp.h create mode 100644 keyboards/handwired/tractyl_manuform/config.h create mode 100644 keyboards/handwired/tractyl_manuform/post_config.h create mode 100644 keyboards/handwired/tractyl_manuform/readme.md create mode 100644 keyboards/handwired/tractyl_manuform/tm_sync.c create mode 100644 keyboards/handwired/tractyl_manuform/tractyl_manuform.c create mode 100644 keyboards/handwired/tractyl_manuform/tractyl_manuform.h delete mode 100644 keyboards/handwired/traveller/keymaps/default/readme.md delete mode 100644 keyboards/helix/pico/local_features.mk create mode 100644 keyboards/helix/pico/post_rules.mk create mode 100644 keyboards/helix/rev2/keymaps/five_rows/matrix_output_unselect_delay.c create mode 100644 keyboards/helix/rev2/post_rules.mk create mode 100644 keyboards/helix/rev3_4rows/keymaps/default/oled_display.c create mode 100644 keyboards/helix/rev3_4rows/keymaps/via/oled_display.c create mode 100644 keyboards/helix/rev3_5rows/keymaps/default/oled_display.c create mode 100644 keyboards/helix/rev3_5rows/keymaps/five_rows/matrix_output_unselect_delay.c create mode 100644 keyboards/helix/rev3_5rows/keymaps/via/oled_display.c create mode 100644 keyboards/hhkb/ansi/post_rules.mk create mode 100644 keyboards/hhkb/jp/post_rules.mk create mode 100644 keyboards/hidtech/bastyl/keymaps/nstickney/keymap.c create mode 100644 keyboards/hineybush/h87a/keymaps/peott-fr/keymap.c create mode 100644 keyboards/horizon/config.h create mode 100644 keyboards/horizon/horizon.c create mode 100644 keyboards/horizon/horizon.h create mode 100644 keyboards/horizon/info.json create mode 100644 keyboards/horizon/keymaps/default/keymap.c create mode 100644 keyboards/horizon/readme.md create mode 100644 keyboards/horizon/rules.mk create mode 100644 keyboards/hotdox/keymaps/imchipwood/keymap.c create mode 100644 keyboards/ianklug/grooveboard/config.h create mode 100644 keyboards/ianklug/grooveboard/grooveboard.c create mode 100644 keyboards/ianklug/grooveboard/grooveboard.h create mode 100644 keyboards/ianklug/grooveboard/info.json create mode 100644 keyboards/ianklug/grooveboard/keymaps/default/keymap.c create mode 100644 keyboards/ianklug/grooveboard/keymaps/default/readme.md create mode 100644 keyboards/ianklug/grooveboard/keymaps/via/keymap.c create mode 100644 keyboards/ianklug/grooveboard/keymaps/via/readme.md create mode 100644 keyboards/ianklug/grooveboard/keymaps/via/rules.mk create mode 100644 keyboards/ianklug/grooveboard/readme.md create mode 100644 keyboards/ianklug/grooveboard/rules.mk create mode 100644 keyboards/ibm/model_m_4th_gen/info.json create mode 100644 keyboards/ibm/model_m_4th_gen/keymaps/default/keymap.c create mode 100644 keyboards/ibm/model_m_4th_gen/keymaps/default/readme.md create mode 100644 keyboards/ibm/model_m_4th_gen/overnumpad_1xb/config.h create mode 100644 keyboards/ibm/model_m_4th_gen/overnumpad_1xb/overnumpad_1xb.c create mode 100644 keyboards/ibm/model_m_4th_gen/overnumpad_1xb/overnumpad_1xb.h create mode 100644 keyboards/ibm/model_m_4th_gen/overnumpad_1xb/readme.md create mode 100644 keyboards/ibm/model_m_4th_gen/overnumpad_1xb/rules.mk create mode 100644 keyboards/id67/config.h create mode 100644 keyboards/id67/id67.c create mode 100644 keyboards/id67/id67.h create mode 100644 keyboards/id67/info.json create mode 100644 keyboards/id67/keymaps/default/keymap.c create mode 100644 keyboards/id67/keymaps/via/keymap.c create mode 100644 keyboards/id67/keymaps/via/rules.mk create mode 100644 keyboards/id67/readme.md create mode 100644 keyboards/id67/rules.mk create mode 100644 keyboards/idobao/id96/config.h create mode 100644 keyboards/idobao/id96/id96.c create mode 100644 keyboards/idobao/id96/id96.h create mode 100644 keyboards/idobao/id96/info.json create mode 100644 keyboards/idobao/id96/keymaps/default/keymap.c create mode 100644 keyboards/idobao/id96/keymaps/via/keymap.c create mode 100644 keyboards/idobao/id96/keymaps/via/rules.mk create mode 100644 keyboards/idobao/id96/readme.md create mode 100644 keyboards/idobao/id96/rules.mk create mode 100644 keyboards/idobo/keymaps/gkbd_orthon/config.h create mode 100644 keyboards/idobo/keymaps/gkbd_orthon/keymap.c create mode 100644 keyboards/idobo/keymaps/gkbd_orthon/readme.md create mode 100644 keyboards/idobo/keymaps/pathnirvana/config.h create mode 100644 keyboards/idobo/keymaps/pathnirvana/keymap.c create mode 100644 keyboards/idobo/keymaps/pathnirvana/rules.mk rename keyboards/{dztech => ilumkb}/volcano660/config.h (100%) create mode 100644 keyboards/ilumkb/volcano660/info.json rename keyboards/{dztech => ilumkb}/volcano660/keymaps/default/keymap.c (100%) mode change 100755 => 100644 rename keyboards/{dztech => ilumkb}/volcano660/keymaps/via/keymap.c (100%) mode change 100755 => 100644 create mode 100644 keyboards/ilumkb/volcano660/keymaps/via/rules.mk create mode 100644 keyboards/ilumkb/volcano660/readme.md create mode 100644 keyboards/ilumkb/volcano660/rules.mk rename keyboards/{dztech => ilumkb}/volcano660/volcano660.c (100%) rename keyboards/{dztech => ilumkb}/volcano660/volcano660.h (100%) create mode 100644 keyboards/irene/config.h create mode 100644 keyboards/irene/info.json create mode 100644 keyboards/irene/irene.c create mode 100644 keyboards/irene/irene.h create mode 100644 keyboards/irene/keymaps/default/keymap.c create mode 100644 keyboards/irene/keymaps/via/keymap.c create mode 100644 keyboards/irene/keymaps/via/rules.mk create mode 100644 keyboards/irene/readme.md create mode 100644 keyboards/irene/rules.mk create mode 100644 keyboards/jadookb/jkb2/config.h create mode 100644 keyboards/jadookb/jkb2/info.json create mode 100644 keyboards/jadookb/jkb2/jkb2.c create mode 100644 keyboards/jadookb/jkb2/jkb2.h create mode 100644 keyboards/jadookb/jkb2/keymaps/default/keymap.c create mode 100644 keyboards/jadookb/jkb2/keymaps/via/config.h create mode 100644 keyboards/jadookb/jkb2/keymaps/via/keymap.c create mode 100644 keyboards/jadookb/jkb2/keymaps/via/rules.mk create mode 100644 keyboards/jadookb/jkb2/readme.md create mode 100644 keyboards/jadookb/jkb2/rules.mk create mode 100644 keyboards/jadookb/jkb65/config.h create mode 100644 keyboards/jadookb/jkb65/info.json create mode 100644 keyboards/jadookb/jkb65/jkb65.c create mode 100644 keyboards/jadookb/jkb65/jkb65.h create mode 100644 keyboards/jadookb/jkb65/keymaps/default/keymap.c create mode 100644 keyboards/jadookb/jkb65/keymaps/via/config.h create mode 100644 keyboards/jadookb/jkb65/keymaps/via/keymap.c create mode 100644 keyboards/jadookb/jkb65/keymaps/via/rules.mk create mode 100644 keyboards/jadookb/jkb65/readme.md create mode 100644 keyboards/jadookb/jkb65/rules.mk create mode 100644 keyboards/jels/jels88/config.h create mode 100644 keyboards/jels/jels88/info.json create mode 100644 keyboards/jels/jels88/jels88.c create mode 100644 keyboards/jels/jels88/jels88.h create mode 100644 keyboards/jels/jels88/keymaps/default/keymap.c create mode 100644 keyboards/jels/jels88/keymaps/via/keymap.c create mode 100644 keyboards/jels/jels88/keymaps/via/rules.mk create mode 100644 keyboards/jels/jels88/readme.md create mode 100644 keyboards/jels/jels88/rules.mk delete mode 100644 keyboards/jj40/config.h delete mode 100644 keyboards/jj40/info.json delete mode 100644 keyboards/jj40/keymaps/ajp10304/readme.md delete mode 100644 keyboards/jj40/keymaps/cockpit/readme.md delete mode 100644 keyboards/jj40/keymaps/fun40/rules.mk delete mode 100644 keyboards/jj40/keymaps/oscillope/rules.mk delete mode 100644 keyboards/jj40/keymaps/skewwhiffy/keymap.c delete mode 100644 keyboards/jj40/keymaps/stevexyz/rules.mk delete mode 100644 keyboards/jj40/keymaps/waples/readme.md delete mode 100644 keyboards/jj40/keymaps/waples/rules.mk delete mode 100644 keyboards/jj40/readme.md delete mode 100644 keyboards/jj40/rules.mk delete mode 100644 keyboards/jj4x4/config.h delete mode 100644 keyboards/jj4x4/info.json delete mode 100644 keyboards/jj4x4/readme.md delete mode 100644 keyboards/jj4x4/rules.mk delete mode 100644 keyboards/jj50/info.json delete mode 100644 keyboards/jj50/keymaps/abstractkb/keymap.c delete mode 100644 keyboards/jj50/keymaps/abstractkb_gergomatch/keymap.c delete mode 100644 keyboards/jj50/readme.md delete mode 100644 keyboards/jj50/rules.mk create mode 100644 keyboards/kabedon/kabedon98e/chconf.h create mode 100644 keyboards/kabedon/kabedon98e/config.h create mode 100644 keyboards/kabedon/kabedon98e/halconf.h create mode 100644 keyboards/kabedon/kabedon98e/info.json create mode 100644 keyboards/kabedon/kabedon98e/kabedon98e.c create mode 100644 keyboards/kabedon/kabedon98e/kabedon98e.h create mode 100644 keyboards/kabedon/kabedon98e/keymaps/default/keymap.c create mode 100644 keyboards/kabedon/kabedon98e/keymaps/via/keymap.c create mode 100644 keyboards/kabedon/kabedon98e/keymaps/via/rules.mk create mode 100644 keyboards/kabedon/kabedon98e/mcuconf.h create mode 100644 keyboards/kabedon/kabedon98e/readme.md create mode 100644 keyboards/kabedon/kabedon98e/rules.mk create mode 100644 keyboards/kapcave/arya/arya.c create mode 100644 keyboards/kapcave/arya/arya.h create mode 100644 keyboards/kapcave/arya/chconf.h create mode 100644 keyboards/kapcave/arya/config.h create mode 100644 keyboards/kapcave/arya/halconf.h create mode 100644 keyboards/kapcave/arya/info.json create mode 100644 keyboards/kapcave/arya/keymaps/default/keymap.c create mode 100644 keyboards/kapcave/arya/keymaps/default/readme.md create mode 100644 keyboards/kapcave/arya/keymaps/via/keymap.c create mode 100644 keyboards/kapcave/arya/keymaps/via/readme.md create mode 100644 keyboards/kapcave/arya/keymaps/via/rules.mk create mode 100644 keyboards/kapcave/arya/mcuconf.h create mode 100644 keyboards/kapcave/arya/readme.md create mode 100644 keyboards/kapcave/arya/rules.mk create mode 100755 keyboards/kapcave/gskt00/config.h create mode 100755 keyboards/kapcave/gskt00/gskt00.c create mode 100755 keyboards/kapcave/gskt00/gskt00.h create mode 100644 keyboards/kapcave/gskt00/info.json create mode 100644 keyboards/kapcave/gskt00/keymaps/default-poly/config.h create mode 100755 keyboards/kapcave/gskt00/keymaps/default-poly/keymap.c create mode 100644 keyboards/kapcave/gskt00/keymaps/default-poly/readme.md create mode 100644 keyboards/kapcave/gskt00/keymaps/default-poly/rules.mk create mode 100755 keyboards/kapcave/gskt00/keymaps/default/keymap.c create mode 100644 keyboards/kapcave/gskt00/keymaps/default/readme.md rename keyboards/{ => kapcave}/gskt00/keymaps/nachie/keymap.c (100%) create mode 100755 keyboards/kapcave/gskt00/keymaps/via/keymap.c create mode 100644 keyboards/kapcave/gskt00/keymaps/via/readme.md rename keyboards/{mechlovin/hannah65/mechlovin9 => kapcave/gskt00}/keymaps/via/rules.mk (100%) create mode 100644 keyboards/kapcave/gskt00/readme.md create mode 100755 keyboards/kapcave/gskt00/rules.mk create mode 100755 keyboards/kapcave/paladin64/config.h create mode 100644 keyboards/kapcave/paladin64/info.json create mode 100755 keyboards/kapcave/paladin64/keymaps/default/keymap.c create mode 100644 keyboards/kapcave/paladin64/keymaps/default/readme.md create mode 100644 keyboards/kapcave/paladin64/keymaps/via/keymap.c create mode 100644 keyboards/kapcave/paladin64/keymaps/via/readme.md create mode 100644 keyboards/kapcave/paladin64/keymaps/via/rules.mk create mode 100755 keyboards/kapcave/paladin64/paladin64.c create mode 100755 keyboards/kapcave/paladin64/paladin64.h create mode 100644 keyboards/kapcave/paladin64/readme.md create mode 100755 keyboards/kapcave/paladin64/rules.mk create mode 100644 keyboards/kapcave/paladinpad/config.h create mode 100644 keyboards/kapcave/paladinpad/info.json create mode 100644 keyboards/kapcave/paladinpad/keymaps/aek/keymap.c create mode 100644 keyboards/kapcave/paladinpad/keymaps/aek/readme.md create mode 100644 keyboards/kapcave/paladinpad/keymaps/default/keymap.c create mode 100644 keyboards/kapcave/paladinpad/keymaps/default/readme.md create mode 100644 keyboards/kapcave/paladinpad/keymaps/ortho/keymap.c create mode 100644 keyboards/kapcave/paladinpad/keymaps/ortho/readme.md create mode 100644 keyboards/kapcave/paladinpad/keymaps/via/keymap.c create mode 100644 keyboards/kapcave/paladinpad/keymaps/via/rules.mk create mode 100644 keyboards/kapcave/paladinpad/paladinpad.c create mode 100644 keyboards/kapcave/paladinpad/paladinpad.h create mode 100644 keyboards/kapcave/paladinpad/readme.md create mode 100644 keyboards/kapcave/paladinpad/rev1/config.h create mode 100644 keyboards/kapcave/paladinpad/rev1/rules.mk create mode 100644 keyboards/kapcave/paladinpad/rev2/config.h create mode 100644 keyboards/kapcave/paladinpad/rev2/rules.mk create mode 100644 keyboards/kapcave/paladinpad/rules.mk create mode 100644 keyboards/kb_elmo/67mk_e/67mk_e.c create mode 100644 keyboards/kb_elmo/67mk_e/67mk_e.h create mode 100644 keyboards/kb_elmo/67mk_e/config.h create mode 100644 keyboards/kb_elmo/67mk_e/info.json create mode 100644 keyboards/kb_elmo/67mk_e/keymaps/default/keymap.c create mode 100644 keyboards/kb_elmo/67mk_e/keymaps/via/keymap.c create mode 100644 keyboards/kb_elmo/67mk_e/keymaps/via/rules.mk create mode 100644 keyboards/kb_elmo/67mk_e/readme.md create mode 100644 keyboards/kb_elmo/67mk_e/rules.mk create mode 100644 keyboards/kb_elmo/isolation/config.h create mode 100644 keyboards/kb_elmo/isolation/info.json create mode 100644 keyboards/kb_elmo/isolation/isolation.c create mode 100644 keyboards/kb_elmo/isolation/isolation.h create mode 100644 keyboards/kb_elmo/isolation/keymaps/default/keymap.c create mode 100644 keyboards/kb_elmo/isolation/readme.md create mode 100644 keyboards/kb_elmo/isolation/rules.mk create mode 100644 keyboards/kb_elmo/qez/config.h create mode 100644 keyboards/kb_elmo/qez/info.json create mode 100644 keyboards/kb_elmo/qez/keymaps/default/keymap.c create mode 100644 keyboards/kb_elmo/qez/keymaps/via/keymap.c create mode 100644 keyboards/kb_elmo/qez/keymaps/via/rules.mk create mode 100644 keyboards/kb_elmo/qez/qez.c create mode 100644 keyboards/kb_elmo/qez/qez.h create mode 100644 keyboards/kb_elmo/qez/readme.md create mode 100644 keyboards/kb_elmo/qez/rules.mk create mode 100644 keyboards/kb_elmo/vertex/config.h create mode 100644 keyboards/kb_elmo/vertex/info.json create mode 100644 keyboards/kb_elmo/vertex/keymaps/default/keymap.c create mode 100644 keyboards/kb_elmo/vertex/keymaps/via/keymap.c create mode 100644 keyboards/kb_elmo/vertex/keymaps/via/rules.mk create mode 100644 keyboards/kb_elmo/vertex/readme.md create mode 100644 keyboards/kb_elmo/vertex/rules.mk create mode 100644 keyboards/kb_elmo/vertex/vertex.c create mode 100644 keyboards/kb_elmo/vertex/vertex.h create mode 100644 keyboards/kbdfans/boop65/rgb/config.h create mode 100644 keyboards/kbdfans/boop65/rgb/info.json create mode 100644 keyboards/kbdfans/boop65/rgb/keymaps/default/keymap.c create mode 100644 keyboards/kbdfans/boop65/rgb/keymaps/via/keymap.c create mode 100644 keyboards/kbdfans/boop65/rgb/keymaps/via/rules.mk create mode 100644 keyboards/kbdfans/boop65/rgb/readme.md create mode 100644 keyboards/kbdfans/boop65/rgb/rgb.c create mode 100644 keyboards/kbdfans/boop65/rgb/rgb.h create mode 100644 keyboards/kbdfans/boop65/rgb/rules.mk create mode 100644 keyboards/kbdfans/kbd67/mkiirgb/keymaps/pascalpfeil/config.h create mode 100644 keyboards/kbdfans/kbd67/mkiirgb/keymaps/pascalpfeil/keymap.c create mode 100644 keyboards/kbdfans/kbd67/mkiirgb/keymaps/pascalpfeil/rules.mk create mode 100644 keyboards/kbdfans/kbd67/mkiirgb/v1/v1.c create mode 100644 keyboards/kbdfans/kbd67/mkiirgb/v1/v1.h create mode 100644 keyboards/kbdfans/kbd67/mkiirgb/v2/v2.c create mode 100644 keyboards/kbdfans/kbd67/mkiirgb/v2/v2.h create mode 100755 keyboards/kbdfans/kbd67/mkiirgb/v3/config.h create mode 100644 keyboards/kbdfans/kbd67/mkiirgb/v3/readme.md create mode 100755 keyboards/kbdfans/kbd67/mkiirgb/v3/rules.mk create mode 100755 keyboards/kbdfans/kbd67/mkiirgb/v3/v3.c create mode 100755 keyboards/kbdfans/kbd67/mkiirgb/v3/v3.h create mode 100644 keyboards/kbdfans/kbd6x/keymaps/peott-fr/keymap.c create mode 100644 keyboards/kbdfans/kbd75hs/config.h create mode 100644 keyboards/kbdfans/kbd75hs/info.json create mode 100644 keyboards/kbdfans/kbd75hs/kbd75hs.c create mode 100644 keyboards/kbdfans/kbd75hs/kbd75hs.h create mode 100644 keyboards/kbdfans/kbd75hs/keymaps/default/keymap.c create mode 100644 keyboards/kbdfans/kbd75hs/keymaps/via/keymap.c create mode 100644 keyboards/kbdfans/kbd75hs/keymaps/via/rules.mk create mode 100644 keyboards/kbdfans/kbd75hs/readme.md create mode 100644 keyboards/kbdfans/kbd75hs/rules.mk create mode 100644 keyboards/kbdfans/odin/rgb/config.h create mode 100644 keyboards/kbdfans/odin/rgb/info.json create mode 100644 keyboards/kbdfans/odin/rgb/keymaps/default/keymap.c create mode 100644 keyboards/kbdfans/odin/rgb/keymaps/via/config.h create mode 100644 keyboards/kbdfans/odin/rgb/keymaps/via/keymap.c create mode 100644 keyboards/kbdfans/odin/rgb/keymaps/via/rules.mk create mode 100644 keyboards/kbdfans/odin/rgb/readme.md create mode 100644 keyboards/kbdfans/odin/rgb/rgb.c create mode 100644 keyboards/kbdfans/odin/rgb/rgb.h create mode 100644 keyboards/kbdfans/odin/rgb/rules.mk create mode 100644 keyboards/kbdfans/odin/soldered/config.h create mode 100644 keyboards/kbdfans/odin/soldered/info.json create mode 100644 keyboards/kbdfans/odin/soldered/keymaps/default/keymap.c create mode 100644 keyboards/kbdfans/odin/soldered/keymaps/via/config.h create mode 100644 keyboards/kbdfans/odin/soldered/keymaps/via/keymap.c create mode 100644 keyboards/kbdfans/odin/soldered/keymaps/via/rules.mk create mode 100644 keyboards/kbdfans/odin/soldered/readme.md create mode 100644 keyboards/kbdfans/odin/soldered/rules.mk create mode 100644 keyboards/kbdfans/odin/soldered/soldered.c create mode 100644 keyboards/kbdfans/odin/soldered/soldered.h create mode 100644 keyboards/kbnordic/nordic60/info.json create mode 100644 keyboards/kbnordic/nordic60/keymaps/all/keymap.c create mode 100644 keyboards/kbnordic/nordic60/keymaps/default/keymap.c create mode 100644 keyboards/kbnordic/nordic60/keymaps/default_ansi/keymap.c create mode 100644 keyboards/kbnordic/nordic60/keymaps/via/keymap.c create mode 100644 keyboards/kbnordic/nordic60/keymaps/via/rules.mk create mode 100644 keyboards/kbnordic/nordic60/readme.md create mode 100644 keyboards/kbnordic/nordic60/rev_a/config.h create mode 100644 keyboards/kbnordic/nordic60/rev_a/readme.md create mode 100644 keyboards/kbnordic/nordic60/rev_a/rev_a.c create mode 100644 keyboards/kbnordic/nordic60/rev_a/rev_a.h create mode 100644 keyboards/kbnordic/nordic60/rev_a/rules.mk create mode 100644 keyboards/keebio/bdn9/keymaps/copface/config.h create mode 100644 keyboards/keebio/bdn9/keymaps/copface/keymap.c delete mode 100644 keyboards/keebio/iris/keymaps/drashna_lp/config.h delete mode 100644 keyboards/keebio/iris/keymaps/drashna_lp/keymap.c delete mode 100644 keyboards/keebio/iris/keymaps/drashna_lp/rules.mk delete mode 100644 keyboards/keebio/iris/keymaps/drashna_old/config.h delete mode 100644 keyboards/keebio/iris/keymaps/drashna_old/keymap.c delete mode 100644 keyboards/keebio/iris/keymaps/drashna_old/rules.mk create mode 100644 keyboards/keebio/iris/keymaps/manna-harbour_miryoku/config.h create mode 100644 keyboards/keebio/iris/keymaps/manna-harbour_miryoku/keymap.c delete mode 100644 keyboards/keebio/iris/keymaps/nstickney/README.md delete mode 100644 keyboards/keebio/iris/keymaps/nstickney/rules.mk create mode 100644 keyboards/keebio/iris/keymaps/olligranlund_nordic_v2/config.h create mode 100644 keyboards/keebio/iris/keymaps/olligranlund_nordic_v2/keymap.c create mode 100644 keyboards/keebio/iris/keymaps/olligranlund_nordic_v2/readme.md create mode 100644 keyboards/keebio/iris/keymaps/olligranlund_nordic_v2/rules.mk create mode 100644 keyboards/keebio/iris/keymaps/sq5rix/config.h create mode 100644 keyboards/keebio/iris/keymaps/sq5rix/keymap.c create mode 100644 keyboards/keebio/iris/keymaps/sq5rix/readme.md create mode 100644 keyboards/keebio/iris/keymaps/sq5rix/rules.mk create mode 100644 keyboards/keebio/iris/rev5/config.h create mode 100644 keyboards/keebio/iris/rev5/rev5.c create mode 100644 keyboards/keebio/iris/rev5/rev5.h create mode 100644 keyboards/keebio/iris/rev5/rules.mk create mode 100644 keyboards/keebio/iris/rev6/config.h create mode 100644 keyboards/keebio/iris/rev6/rev6.c create mode 100644 keyboards/keebio/iris/rev6/rev6.h create mode 100644 keyboards/keebio/iris/rev6/rules.mk create mode 100644 keyboards/keebio/nyquist/keymaps/peott-fr/keymap.c create mode 100644 keyboards/keebio/nyquist/keymaps/pjanx/config.h create mode 100644 keyboards/keebio/nyquist/keymaps/pjanx/keymap.c create mode 100644 keyboards/keebio/nyquist/keymaps/pjanx/rules.mk delete mode 100644 keyboards/keebio/quefrency/info.json create mode 100644 keyboards/keebio/quefrency/rev1/info.json create mode 100644 keyboards/keebio/quefrency/rev2/info.json create mode 100644 keyboards/keebio/quefrency/rev3/info.json create mode 100644 keyboards/keebio/quefrency/rev4/config.h create mode 100644 keyboards/keebio/quefrency/rev4/info.json create mode 100644 keyboards/keebio/quefrency/rev4/readme.md create mode 100644 keyboards/keebio/quefrency/rev4/rev4.c create mode 100644 keyboards/keebio/quefrency/rev4/rev4.h create mode 100644 keyboards/keebio/quefrency/rev4/rules.mk create mode 100644 keyboards/keebio/sinc/keymaps/lickel/keymap.c create mode 100644 keyboards/keebio/sinc/keymaps/lickel/readme.md create mode 100644 keyboards/keebio/sinc/keymaps/lickel/rules.mk delete mode 100644 keyboards/keebio/viterbi/keymaps/drashna_old/config.h delete mode 100644 keyboards/keebio/viterbi/keymaps/drashna_old/keymap.c delete mode 100644 keyboards/keebio/viterbi/keymaps/drashna_old/rules.mk create mode 100644 keyboards/keebsforall/coarse60/chconf.h create mode 100644 keyboards/keebsforall/coarse60/coarse60.c create mode 100644 keyboards/keebsforall/coarse60/coarse60.h create mode 100644 keyboards/keebsforall/coarse60/config.h create mode 100644 keyboards/keebsforall/coarse60/halconf.h create mode 100644 keyboards/keebsforall/coarse60/info.json create mode 100644 keyboards/keebsforall/coarse60/keymaps/default/keymap.c create mode 100644 keyboards/keebsforall/coarse60/keymaps/via/keymap.c create mode 100644 keyboards/keebsforall/coarse60/keymaps/via/rules.mk create mode 100644 keyboards/keebsforall/coarse60/mcuconf.h create mode 100644 keyboards/keebsforall/coarse60/readme.md create mode 100644 keyboards/keebsforall/coarse60/rules.mk create mode 100644 keyboards/keebsforall/freebirdtkl/config.h create mode 100644 keyboards/keebsforall/freebirdtkl/freebirdtkl.c create mode 100644 keyboards/keebsforall/freebirdtkl/freebirdtkl.h create mode 100644 keyboards/keebsforall/freebirdtkl/info.json create mode 100644 keyboards/keebsforall/freebirdtkl/keymaps/default/keymap.c create mode 100644 keyboards/keebsforall/freebirdtkl/keymaps/via/keymap.c create mode 100644 keyboards/keebsforall/freebirdtkl/keymaps/via/rules.mk create mode 100644 keyboards/keebsforall/freebirdtkl/keymaps/wkl/keymap.c create mode 100644 keyboards/keebsforall/freebirdtkl/readme.md create mode 100644 keyboards/keebsforall/freebirdtkl/rules.mk create mode 100644 keyboards/keebzdotnet/fme/info.json create mode 100644 keyboards/keebzdotnet/fme/keymaps/via/config.h create mode 100644 keyboards/kelowna/rgb64/config.h create mode 100644 keyboards/kelowna/rgb64/info.json create mode 100644 keyboards/kelowna/rgb64/keymaps/default/keymap.c create mode 100644 keyboards/kelowna/rgb64/keymaps/via/keymap.c create mode 100644 keyboards/kelowna/rgb64/keymaps/via/rules.mk create mode 100644 keyboards/kelowna/rgb64/readme.md create mode 100644 keyboards/kelowna/rgb64/rgb64.c create mode 100644 keyboards/kelowna/rgb64/rgb64.h create mode 100644 keyboards/kelowna/rgb64/rules.mk create mode 100644 keyboards/keybee/keybee65/config.h create mode 100644 keyboards/keybee/keybee65/info.json create mode 100644 keyboards/keybee/keybee65/keybee65.c create mode 100644 keyboards/keybee/keybee65/keybee65.h create mode 100644 keyboards/keybee/keybee65/keymaps/default/keymap.c create mode 100644 keyboards/keybee/keybee65/keymaps/via/keymap.c create mode 100644 keyboards/keybee/keybee65/keymaps/via/rules.mk create mode 100644 keyboards/keybee/keybee65/readme.md create mode 100644 keyboards/keybee/keybee65/rules.mk create mode 100644 keyboards/keyboardio/atreus/keymaps/manna-harbour_miryoku/config.h create mode 100644 keyboards/keyboardio/atreus/keymaps/manna-harbour_miryoku/keymap.c create mode 100644 keyboards/keyboardio/atreus/keymaps/replicaJunction/config.h create mode 100644 keyboards/keyboardio/atreus/keymaps/replicaJunction/keymap.c create mode 100644 keyboards/keyboardio/atreus/keymaps/replicaJunction/readme.md create mode 100644 keyboards/keyboardio/atreus/keymaps/replicaJunction/rules.mk create mode 100644 keyboards/keychron/q1/config.h create mode 100644 keyboards/keychron/q1/q1.c create mode 100644 keyboards/keychron/q1/q1.h create mode 100644 keyboards/keychron/q1/readme.md create mode 100644 keyboards/keychron/q1/rev_0100/config.h create mode 100644 keyboards/keychron/q1/rev_0100/info.json create mode 100644 keyboards/keychron/q1/rev_0100/keymaps/default/keymap.c create mode 100644 keyboards/keychron/q1/rev_0100/keymaps/gtg465x/README.md create mode 100644 keyboards/keychron/q1/rev_0100/keymaps/gtg465x/config.h create mode 100644 keyboards/keychron/q1/rev_0100/keymaps/gtg465x/keymap.c create mode 100644 keyboards/keychron/q1/rev_0100/keymaps/gtg465x/keymap_user.h create mode 100644 keyboards/keychron/q1/rev_0100/keymaps/gtg465x/rgb_matrix_user.c create mode 100644 keyboards/keychron/q1/rev_0100/keymaps/gtg465x/rgb_matrix_user.h create mode 100644 keyboards/keychron/q1/rev_0100/keymaps/gtg465x/rules.mk create mode 100644 keyboards/keychron/q1/rev_0100/keymaps/mkillewald/config.h create mode 100644 keyboards/keychron/q1/rev_0100/keymaps/mkillewald/keymap.c create mode 100644 keyboards/keychron/q1/rev_0100/keymaps/mkillewald/keymap_user.h create mode 100644 keyboards/keychron/q1/rev_0100/keymaps/mkillewald/readme.md create mode 100644 keyboards/keychron/q1/rev_0100/keymaps/mkillewald/rgb_matrix_user.c create mode 100644 keyboards/keychron/q1/rev_0100/keymaps/mkillewald/rgb_matrix_user.h create mode 100644 keyboards/keychron/q1/rev_0100/keymaps/mkillewald/rules.mk create mode 100644 keyboards/keychron/q1/rev_0100/keymaps/via/keymap.c create mode 100644 keyboards/keychron/q1/rev_0100/keymaps/via/rules.mk create mode 100644 keyboards/keychron/q1/rev_0100/readme.md create mode 100644 keyboards/keychron/q1/rev_0100/rev_0100.c create mode 100644 keyboards/keychron/q1/rev_0100/rev_0100.h create mode 100644 keyboards/keychron/q1/rev_0100/rules.mk create mode 100644 keyboards/keychron/q1/rev_0102/config.h create mode 100644 keyboards/keychron/q1/rev_0102/info.json create mode 100644 keyboards/keychron/q1/rev_0102/keymaps/default/keymap.c create mode 100644 keyboards/keychron/q1/rev_0102/keymaps/mkillewald_iso/config.h create mode 100644 keyboards/keychron/q1/rev_0102/keymaps/mkillewald_iso/keymap.c create mode 100644 keyboards/keychron/q1/rev_0102/keymaps/mkillewald_iso/keymap_user.h create mode 100644 keyboards/keychron/q1/rev_0102/keymaps/mkillewald_iso/readme.md create mode 100644 keyboards/keychron/q1/rev_0102/keymaps/mkillewald_iso/rgb_matrix_user.c create mode 100644 keyboards/keychron/q1/rev_0102/keymaps/mkillewald_iso/rgb_matrix_user.h create mode 100644 keyboards/keychron/q1/rev_0102/keymaps/mkillewald_iso/rules.mk create mode 100644 keyboards/keychron/q1/rev_0102/keymaps/via/keymap.c create mode 100644 keyboards/keychron/q1/rev_0102/keymaps/via/rules.mk create mode 100644 keyboards/keychron/q1/rev_0102/readme.md create mode 100644 keyboards/keychron/q1/rev_0102/rev_0102.c create mode 100644 keyboards/keychron/q1/rev_0102/rev_0102.h create mode 100644 keyboards/keychron/q1/rev_0102/rules.mk create mode 100644 keyboards/keyprez/bison/bison.c create mode 100644 keyboards/keyprez/bison/bison.h create mode 100644 keyboards/keyprez/bison/config.h create mode 100644 keyboards/keyprez/bison/info.json create mode 100644 keyboards/keyprez/bison/keymaps/default/keymap.c create mode 100644 keyboards/keyprez/bison/keymaps/default/readme.md create mode 100644 keyboards/keyprez/bison/keymaps/default_6_6/keymap.c create mode 100644 keyboards/keyprez/bison/keymaps/default_6_6/readme.md create mode 100644 keyboards/keyprez/bison/keymaps/default_6_8/keymap.c create mode 100644 keyboards/keyprez/bison/keymaps/default_6_8/readme.md create mode 100644 keyboards/keyprez/bison/keymaps/default_8_6/keymap.c create mode 100644 keyboards/keyprez/bison/keymaps/default_8_6/readme.md create mode 100644 keyboards/keyprez/bison/readme.md create mode 100644 keyboards/keyprez/bison/rules.mk create mode 100644 keyboards/keyprez/rhino/config.h create mode 100644 keyboards/keyprez/rhino/info.json create mode 100644 keyboards/keyprez/rhino/keymaps/default/keymap.c create mode 100644 keyboards/keyprez/rhino/keymaps/default/readme.md create mode 100644 keyboards/keyprez/rhino/keymaps/default_7u/keymap.c create mode 100644 keyboards/keyprez/rhino/keymaps/default_7u/readme.md create mode 100644 keyboards/keyprez/rhino/keymaps/default_ergo/keymap.c create mode 100644 keyboards/keyprez/rhino/keymaps/default_ergo/readme.md create mode 100644 keyboards/keyprez/rhino/readme.md create mode 100644 keyboards/keyprez/rhino/rhino.c create mode 100644 keyboards/keyprez/rhino/rhino.h create mode 100644 keyboards/keyprez/rhino/rules.mk create mode 100644 keyboards/kinesis/keymaps/jwon/keymap.c create mode 100644 keyboards/kinesis/keymaps/jwon/readme.md create mode 100644 keyboards/kinesis/keymaps/jwon/rules.mk create mode 100644 keyboards/kinesis/keymaps/peott-fr/keymap.c create mode 100644 keyboards/kinesis/kint41/chconf.h create mode 100644 keyboards/kinesis/kint41/config.h create mode 100644 keyboards/kinesis/kint41/kint41.c create mode 100644 keyboards/kinesis/kint41/kint41.h create mode 100644 keyboards/kinesis/kint41/mcuconf.h create mode 100644 keyboards/kinesis/kint41/readme.md create mode 100644 keyboards/kinesis/kint41/rules.mk create mode 100644 keyboards/kineticlabs/emu/hotswap/config.h create mode 100644 keyboards/kineticlabs/emu/hotswap/hotswap.c create mode 100644 keyboards/kineticlabs/emu/hotswap/hotswap.h create mode 100644 keyboards/kineticlabs/emu/hotswap/info.json create mode 100644 keyboards/kineticlabs/emu/hotswap/keymaps/default/keymap.c create mode 100644 keyboards/kineticlabs/emu/hotswap/keymaps/via/keymap.c create mode 100644 keyboards/kineticlabs/emu/hotswap/keymaps/via/rules.mk create mode 100644 keyboards/kineticlabs/emu/hotswap/readme.md create mode 100644 keyboards/kineticlabs/emu/hotswap/rules.mk create mode 100644 keyboards/kineticlabs/emu/soldered/config.h create mode 100644 keyboards/kineticlabs/emu/soldered/info.json create mode 100644 keyboards/kineticlabs/emu/soldered/keymaps/default/keymap.c create mode 100644 keyboards/kineticlabs/emu/soldered/keymaps/via/keymap.c create mode 100644 keyboards/kineticlabs/emu/soldered/keymaps/via/rules.mk create mode 100644 keyboards/kineticlabs/emu/soldered/keymaps/wkl/keymap.c create mode 100644 keyboards/kineticlabs/emu/soldered/readme.md create mode 100644 keyboards/kineticlabs/emu/soldered/rules.mk create mode 100644 keyboards/kineticlabs/emu/soldered/soldered.c create mode 100644 keyboards/kineticlabs/emu/soldered/soldered.h create mode 100644 keyboards/kiwikeebs/macro/keymaps/via/keymap.c create mode 100644 keyboards/kiwikeebs/macro/keymaps/via/rules.mk create mode 100644 keyboards/kiwikeebs/macro/readme.md create mode 100644 keyboards/kiwikeebs/macro_v2/config.h create mode 100644 keyboards/kiwikeebs/macro_v2/info.json create mode 100644 keyboards/kiwikeebs/macro_v2/keymaps/default/keymap.c create mode 100644 keyboards/kiwikeebs/macro_v2/keymaps/via/keymap.c create mode 100644 keyboards/kiwikeebs/macro_v2/keymaps/via/rules.mk create mode 100644 keyboards/kiwikeebs/macro_v2/macro_v2.c create mode 100644 keyboards/kiwikeebs/macro_v2/macro_v2.h create mode 100644 keyboards/kiwikeebs/macro_v2/readme.md create mode 100644 keyboards/kiwikeebs/macro_v2/rules.mk delete mode 100644 keyboards/kiwikeebs/readme.md rename keyboards/knobgoblin/keymaps/{ortho => default}/keymap.c (100%) rename keyboards/knobgoblin/keymaps/{ortho => default}/readme.md (100%) create mode 100644 keyboards/knobgoblin/keymaps/moults31/keymap.c create mode 100644 keyboards/knobgoblin/keymaps/moults31/readme.md create mode 100644 keyboards/knobgoblin/keymaps/moults31/rules.mk create mode 100644 keyboards/kopibeng/mnk88/chconf.h create mode 100644 keyboards/kopibeng/mnk88/config.h create mode 100644 keyboards/kopibeng/mnk88/info.json create mode 100644 keyboards/kopibeng/mnk88/keymaps/default/keymap.c create mode 100644 keyboards/kopibeng/mnk88/keymaps/via/keymap.c create mode 100644 keyboards/kopibeng/mnk88/keymaps/via/rules.mk create mode 100644 keyboards/kopibeng/mnk88/mnk88.c create mode 100644 keyboards/kopibeng/mnk88/mnk88.h create mode 100644 keyboards/kopibeng/mnk88/readme.md create mode 100644 keyboards/kopibeng/mnk88/rules.mk create mode 100644 keyboards/kopibeng/xt8x/chconf.h create mode 100644 keyboards/kopibeng/xt8x/config.h create mode 100644 keyboards/kopibeng/xt8x/info.json create mode 100644 keyboards/kopibeng/xt8x/keymaps/default/keymap.c create mode 100644 keyboards/kopibeng/xt8x/keymaps/via/keymap.c create mode 100644 keyboards/kopibeng/xt8x/keymaps/via/rules.mk create mode 100644 keyboards/kopibeng/xt8x/readme.md create mode 100644 keyboards/kopibeng/xt8x/rules.mk create mode 100644 keyboards/kopibeng/xt8x/xt8x.c create mode 100644 keyboards/kopibeng/xt8x/xt8x.h create mode 100644 keyboards/kprepublic/bm16a/bm16a.c rename keyboards/{ => kprepublic}/bm16a/bm16a.h (100%) create mode 100644 keyboards/kprepublic/bm16a/config.h create mode 100644 keyboards/kprepublic/bm16a/info.json rename keyboards/{ => kprepublic}/bm16a/keymaps/default/config.h (100%) rename keyboards/{ => kprepublic}/bm16a/keymaps/default/keymap.c (100%) rename keyboards/{ => kprepublic}/bm16a/keymaps/default/readme.md (100%) rename keyboards/{ => kprepublic}/bm16a/keymaps/factory/keymap.c (100%) rename keyboards/{ => kprepublic}/bm16a/keymaps/factory/readme.md (100%) rename keyboards/{ => kprepublic}/bm16a/keymaps/via/keymap.c (100%) rename keyboards/{ => kprepublic}/bm16a/keymaps/via/readme.md (100%) create mode 100644 keyboards/kprepublic/bm16a/keymaps/via/rules.mk create mode 100644 keyboards/kprepublic/bm16a/readme.md create mode 100644 keyboards/kprepublic/bm16a/rules.mk rename keyboards/{ => kprepublic}/bm16s/bm16s.h (100%) rename keyboards/{ => kprepublic}/bm16s/config.h (100%) create mode 100644 keyboards/kprepublic/bm16s/info.json rename keyboards/{ => kprepublic}/bm16s/keymaps/default/keymap.c (100%) rename keyboards/{ => kprepublic}/bm16s/keymaps/media/keymap.c (100%) rename keyboards/{ => kprepublic}/bm16s/keymaps/via/keymap.c (100%) rename keyboards/{ => kprepublic}/bm16s/keymaps/via/readme.md (100%) create mode 100644 keyboards/kprepublic/bm16s/keymaps/via/rules.mk create mode 100644 keyboards/kprepublic/bm16s/readme.md create mode 100755 keyboards/kprepublic/bm16s/rules.mk rename keyboards/{ => kprepublic}/bm40hsrgb/bm40hsrgb.c (100%) rename keyboards/{ => kprepublic}/bm40hsrgb/bm40hsrgb.h (100%) create mode 100755 keyboards/kprepublic/bm40hsrgb/config.h create mode 100644 keyboards/kprepublic/bm40hsrgb/info.json rename keyboards/{ => kprepublic}/bm40hsrgb/keymaps/default/keymap.c (100%) rename keyboards/{ => kprepublic}/bm40hsrgb/keymaps/default/readme.md (100%) create mode 100644 keyboards/kprepublic/bm40hsrgb/keymaps/gabustoledo/config.h create mode 100755 keyboards/kprepublic/bm40hsrgb/keymaps/gabustoledo/keymap.c create mode 100644 keyboards/kprepublic/bm40hsrgb/keymaps/gabustoledo/readme.md create mode 100644 keyboards/kprepublic/bm40hsrgb/keymaps/gabustoledo/rules.mk create mode 100644 keyboards/kprepublic/bm40hsrgb/keymaps/signynt/config.h rename keyboards/{ => kprepublic}/bm40hsrgb/keymaps/signynt/keymap.c (100%) create mode 100644 keyboards/kprepublic/bm40hsrgb/keymaps/signynt/readme.md create mode 100644 keyboards/kprepublic/bm40hsrgb/keymaps/signynt/rules.mk create mode 100644 keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_loud/config.h rename keyboards/{ => kprepublic}/bm40hsrgb/keymaps/signynt_2_loud/keymap.c (100%) create mode 100644 keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_loud/readme.md create mode 100644 keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_loud/rules.mk create mode 100644 keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_quiet/config.h rename keyboards/{ => kprepublic}/bm40hsrgb/keymaps/signynt_2_quiet/keymap.c (100%) create mode 100644 keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_quiet/readme.md create mode 100644 keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_quiet/rules.mk rename keyboards/{ => kprepublic}/bm40hsrgb/keymaps/via/keymap.c (100%) rename keyboards/{ => kprepublic}/bm40hsrgb/keymaps/via/readme.md (100%) create mode 100644 keyboards/kprepublic/bm40hsrgb/keymaps/via/rules.mk create mode 100644 keyboards/kprepublic/bm40hsrgb/keymaps/wolff_abnt2/keymap.c create mode 100644 keyboards/kprepublic/bm40hsrgb/keymaps/wolff_abnt2/readme.md create mode 100644 keyboards/kprepublic/bm40hsrgb/readme.md create mode 100755 keyboards/kprepublic/bm40hsrgb/rules.mk create mode 100644 keyboards/kprepublic/bm43a/bm43a.c rename keyboards/{ => kprepublic}/bm43a/bm43a.h (100%) create mode 100644 keyboards/kprepublic/bm43a/config.h create mode 100644 keyboards/kprepublic/bm43a/info.json rename keyboards/{ => kprepublic}/bm43a/keymaps/default/config.h (100%) rename keyboards/{ => kprepublic}/bm43a/keymaps/default/keymap.c (100%) rename keyboards/{ => kprepublic}/bm43a/keymaps/default/readme.md (100%) rename keyboards/{ => kprepublic}/bm43a/keymaps/stevexyz/keymap.c (100%) create mode 100644 keyboards/kprepublic/bm43a/keymaps/stevexyz/readme.md create mode 100644 keyboards/kprepublic/bm43a/keymaps/stevexyz/rules.mk create mode 100644 keyboards/kprepublic/bm43a/readme.md create mode 100644 keyboards/kprepublic/bm43a/rules.mk create mode 100755 keyboards/kprepublic/bm43hsrgb/bm43hsrgb.c create mode 100755 keyboards/kprepublic/bm43hsrgb/bm43hsrgb.h create mode 100755 keyboards/kprepublic/bm43hsrgb/config.h create mode 100755 keyboards/kprepublic/bm43hsrgb/info.json create mode 100755 keyboards/kprepublic/bm43hsrgb/keymaps/bitstarr/config.h create mode 100755 keyboards/kprepublic/bm43hsrgb/keymaps/bitstarr/keymap.c create mode 100755 keyboards/kprepublic/bm43hsrgb/keymaps/bitstarr/readme.md create mode 100755 keyboards/kprepublic/bm43hsrgb/keymaps/bitstarr/rules.mk create mode 100755 keyboards/kprepublic/bm43hsrgb/keymaps/default/keymap.c create mode 100755 keyboards/kprepublic/bm43hsrgb/keymaps/default/readme.md create mode 100755 keyboards/kprepublic/bm43hsrgb/readme.md create mode 100755 keyboards/kprepublic/bm43hsrgb/rules.mk rename keyboards/{bm60rgb => kprepublic/bm60hsrgb}/keymaps/default/keymap.c (100%) rename keyboards/{bm60rgb => kprepublic/bm60hsrgb}/keymaps/default/readme.md (100%) rename keyboards/{bm60rgb => kprepublic/bm60hsrgb}/keymaps/jbradforddillon/keymap.c (100%) rename keyboards/{bm60rgb => kprepublic/bm60hsrgb}/keymaps/jbradforddillon/readme.md (100%) rename keyboards/{bm60rgb => kprepublic/bm60hsrgb}/keymaps/via/keymap.c (100%) rename keyboards/{bm60rgb => kprepublic/bm60hsrgb}/keymaps/via/readme.md (100%) create mode 100644 keyboards/kprepublic/bm60hsrgb/keymaps/via/rules.mk create mode 100644 keyboards/kprepublic/bm60hsrgb/readme.md create mode 100644 keyboards/kprepublic/bm60hsrgb/rev1/config.h create mode 100644 keyboards/kprepublic/bm60hsrgb/rev1/info.json create mode 100644 keyboards/kprepublic/bm60hsrgb/rev1/rev1.c create mode 100644 keyboards/kprepublic/bm60hsrgb/rev1/rev1.h create mode 100644 keyboards/kprepublic/bm60hsrgb/rev1/rules.mk rename keyboards/{bm60rgb_iso => kprepublic/bm60hsrgb_iso}/keymaps/default/keymap.c (100%) rename keyboards/{bm60rgb_iso => kprepublic/bm60hsrgb_iso}/keymaps/default/readme.md (100%) rename keyboards/{bm60rgb_iso => kprepublic/bm60hsrgb_iso}/keymaps/iso_nordic_sleepmode/config.h (100%) rename keyboards/{bm60rgb_iso => kprepublic/bm60hsrgb_iso}/keymaps/iso_nordic_sleepmode/keymap.c (100%) rename keyboards/{bm60rgb_iso => kprepublic/bm60hsrgb_iso}/keymaps/iso_nordic_sleepmode/readme.md (100%) create mode 100644 keyboards/kprepublic/bm60hsrgb_iso/readme.md create mode 100644 keyboards/kprepublic/bm60hsrgb_iso/rev1/config.h create mode 100644 keyboards/kprepublic/bm60hsrgb_iso/rev1/info.json create mode 100644 keyboards/kprepublic/bm60hsrgb_iso/rev1/rev1.c rename keyboards/{bm60rgb_iso/bm60rgb_iso.h => kprepublic/bm60hsrgb_iso/rev1/rev1.h} (100%) create mode 100644 keyboards/kprepublic/bm60hsrgb_iso/rev1/rules.mk create mode 100644 keyboards/kprepublic/bm60hsrgb_poker/keymaps/carlosala/config.h create mode 100644 keyboards/kprepublic/bm60hsrgb_poker/keymaps/carlosala/keymap.c create mode 100644 keyboards/kprepublic/bm60hsrgb_poker/keymaps/carlosala/rules.mk create mode 100644 keyboards/kprepublic/bm60hsrgb_poker/keymaps/david/keymap.c rename keyboards/{bm60poker => kprepublic/bm60hsrgb_poker}/keymaps/default/keymap.c (100%) rename keyboards/{bm60poker => kprepublic/bm60hsrgb_poker}/keymaps/ipetepete/keymap.c (100%) rename keyboards/{bm60poker => kprepublic/bm60hsrgb_poker}/keymaps/ipetepete/readme.md (100%) rename keyboards/{bm60poker => kprepublic/bm60hsrgb_poker}/keymaps/ipetepete/rules.mk (100%) rename keyboards/{bm60poker => kprepublic/bm60hsrgb_poker}/keymaps/via/keymap.c (100%) create mode 100644 keyboards/kprepublic/bm60hsrgb_poker/keymaps/via/rules.mk create mode 100644 keyboards/kprepublic/bm60hsrgb_poker/readme.md create mode 100644 keyboards/kprepublic/bm60hsrgb_poker/rev1/config.h create mode 100644 keyboards/kprepublic/bm60hsrgb_poker/rev1/info.json create mode 100644 keyboards/kprepublic/bm60hsrgb_poker/rev1/rev1.c rename keyboards/{bm60poker/bm60poker.h => kprepublic/bm60hsrgb_poker/rev1/rev1.h} (100%) create mode 100644 keyboards/kprepublic/bm60hsrgb_poker/rev1/rules.mk create mode 100644 keyboards/kprepublic/bm65hsrgb/keymaps/default/keymap.c create mode 100644 keyboards/kprepublic/bm65hsrgb/keymaps/default/readme.md create mode 100644 keyboards/kprepublic/bm65hsrgb/readme.md create mode 100644 keyboards/kprepublic/bm65hsrgb/rev1/config.h create mode 100644 keyboards/kprepublic/bm65hsrgb/rev1/info.json create mode 100644 keyboards/kprepublic/bm65hsrgb/rev1/readme.md create mode 100644 keyboards/kprepublic/bm65hsrgb/rev1/rev1.c create mode 100644 keyboards/kprepublic/bm65hsrgb/rev1/rev1.h create mode 100644 keyboards/kprepublic/bm65hsrgb/rev1/rules.mk create mode 100644 keyboards/kprepublic/bm65hsrgb_iso/bm65hsrgb_iso.c create mode 100644 keyboards/kprepublic/bm65hsrgb_iso/bm65hsrgb_iso.h create mode 100644 keyboards/kprepublic/bm65hsrgb_iso/config.h create mode 100644 keyboards/kprepublic/bm65hsrgb_iso/info.json create mode 100644 keyboards/kprepublic/bm65hsrgb_iso/keymaps/deadolus/config.h create mode 100644 keyboards/kprepublic/bm65hsrgb_iso/keymaps/deadolus/keymap.c create mode 100644 keyboards/kprepublic/bm65hsrgb_iso/keymaps/deadolus/keymap.h create mode 100644 keyboards/kprepublic/bm65hsrgb_iso/keymaps/deadolus/readme.md create mode 100644 keyboards/kprepublic/bm65hsrgb_iso/keymaps/deadolus/rules.mk create mode 100644 keyboards/kprepublic/bm65hsrgb_iso/keymaps/default/keymap.c create mode 100644 keyboards/kprepublic/bm65hsrgb_iso/keymaps/via/keymap.c create mode 100644 keyboards/kprepublic/bm65hsrgb_iso/keymaps/via/readme.md create mode 100644 keyboards/kprepublic/bm65hsrgb_iso/keymaps/via/rules.mk create mode 100644 keyboards/kprepublic/bm65hsrgb_iso/readme.md create mode 100644 keyboards/kprepublic/bm65hsrgb_iso/rules.mk create mode 100644 keyboards/kprepublic/bm68hsrgb/bm68hsrgb.c rename keyboards/{bm68rgb/bm68rgb.h => kprepublic/bm68hsrgb/bm68hsrgb.h} (100%) create mode 100644 keyboards/kprepublic/bm68hsrgb/config.h create mode 100644 keyboards/kprepublic/bm68hsrgb/info.json rename keyboards/{bm68rgb => kprepublic/bm68hsrgb}/keymaps/default/keymap.c (100%) rename keyboards/{bm68rgb => kprepublic/bm68hsrgb}/keymaps/default/readme.md (100%) create mode 100644 keyboards/kprepublic/bm68hsrgb/keymaps/peepeetee/config.h rename keyboards/{bm68rgb => kprepublic/bm68hsrgb}/keymaps/peepeetee/keymap.c (100%) rename keyboards/{bm68rgb => kprepublic/bm68hsrgb}/keymaps/peepeetee/keymap.h (100%) rename keyboards/{bm68rgb => kprepublic/bm68hsrgb}/keymaps/peepeetee/readme.md (100%) rename keyboards/{bm68rgb => kprepublic/bm68hsrgb}/keymaps/via/keymap.c (100%) rename keyboards/{bm68rgb => kprepublic/bm68hsrgb}/keymaps/via/readme.md (100%) create mode 100644 keyboards/kprepublic/bm68hsrgb/keymaps/via/rules.mk create mode 100644 keyboards/kprepublic/bm68hsrgb/readme.md create mode 100644 keyboards/kprepublic/bm68hsrgb/rules.mk create mode 100644 keyboards/kprepublic/bm80hsrgb/bm80hsrgb.c create mode 100644 keyboards/kprepublic/bm80hsrgb/bm80hsrgb.h create mode 100644 keyboards/kprepublic/bm80hsrgb/config.h create mode 100644 keyboards/kprepublic/bm80hsrgb/info.json create mode 100644 keyboards/kprepublic/bm80hsrgb/keymaps/default/keymap.c create mode 100644 keyboards/kprepublic/bm80hsrgb/keymaps/default/readme.md create mode 100644 keyboards/kprepublic/bm80hsrgb/keymaps/peepeetee/config.h create mode 100644 keyboards/kprepublic/bm80hsrgb/keymaps/peepeetee/keymap.c create mode 100644 keyboards/kprepublic/bm80hsrgb/keymaps/via/keymap.c create mode 100644 keyboards/kprepublic/bm80hsrgb/keymaps/via/readme.md create mode 100644 keyboards/kprepublic/bm80hsrgb/keymaps/via/rules.mk create mode 100644 keyboards/kprepublic/bm80hsrgb/readme.md create mode 100644 keyboards/kprepublic/bm80hsrgb/rules.mk create mode 100644 keyboards/kprepublic/cospad/config.h rename keyboards/{ => kprepublic}/cospad/cospad.c (100%) rename keyboards/{ => kprepublic}/cospad/cospad.h (86%) create mode 100644 keyboards/kprepublic/cospad/info.json rename keyboards/{ => kprepublic}/cospad/keymaps/default/keymap.c (100%) create mode 100644 keyboards/kprepublic/cospad/keymaps/detrus/keymap.c rename keyboards/{ => kprepublic}/cospad/keymaps/split_plus_and_zero/keymap.c (100%) rename keyboards/{ => kprepublic}/cospad/keymaps/split_zero/keymap.c (100%) rename keyboards/{ => kprepublic}/cospad/keymaps/via/keymap.c (100%) create mode 100644 keyboards/kprepublic/cospad/keymaps/via/rules.mk create mode 100644 keyboards/kprepublic/cospad/readme.md create mode 100644 keyboards/kprepublic/cospad/rules.mk create mode 100644 keyboards/kprepublic/jj40/config.h create mode 100644 keyboards/kprepublic/jj40/info.json rename keyboards/{ => kprepublic}/jj40/jj40.c (100%) rename keyboards/{ => kprepublic}/jj40/jj40.h (100%) create mode 100644 keyboards/kprepublic/jj40/keymaps/ajp10304/readme.md rename keyboards/{ => kprepublic}/jj40/keymaps/cockpit/keymap.c (100%) create mode 100644 keyboards/kprepublic/jj40/keymaps/cockpit/readme.md rename keyboards/{ => kprepublic}/jj40/keymaps/default/keymap.c (100%) rename keyboards/{ => kprepublic}/jj40/keymaps/fun40/config.h (100%) rename keyboards/{ => kprepublic}/jj40/keymaps/fun40/keymap.c (100%) rename keyboards/{ => kprepublic}/jj40/keymaps/fun40/readme.md (100%) create mode 100644 keyboards/kprepublic/jj40/keymaps/fun40/rules.mk rename keyboards/{ => kprepublic}/jj40/keymaps/krusli/config.h (100%) rename keyboards/{ => kprepublic}/jj40/keymaps/krusli/keymap.c (100%) rename keyboards/{ => kprepublic}/jj40/keymaps/krusli/numpad.txt (100%) rename keyboards/{ => kprepublic}/jj40/keymaps/krusli/readme.md (100%) rename keyboards/{ => kprepublic}/jj40/keymaps/krusli/rules.mk (100%) rename keyboards/{ => kprepublic}/jj40/keymaps/oscillope/config.h (100%) rename keyboards/{ => kprepublic}/jj40/keymaps/oscillope/keymap.c (100%) create mode 100644 keyboards/kprepublic/jj40/keymaps/oscillope/rules.mk create mode 100644 keyboards/kprepublic/jj40/keymaps/skewwhiffy/keymap.c rename keyboards/{ => kprepublic}/jj40/keymaps/stevexyz/config.h (100%) rename keyboards/{ => kprepublic}/jj40/keymaps/stevexyz/keymap.c (100%) rename keyboards/{ => kprepublic}/jj40/keymaps/stevexyz/readme.md (100%) create mode 100644 keyboards/kprepublic/jj40/keymaps/stevexyz/rules.mk rename keyboards/{ => kprepublic}/jj40/keymaps/suzuken/config.h (100%) rename keyboards/{ => kprepublic}/jj40/keymaps/suzuken/keymap.c (100%) rename keyboards/{ => kprepublic}/jj40/keymaps/via/keymap.c (100%) rename keyboards/{ => kprepublic}/jj40/keymaps/via/rules.mk (100%) rename keyboards/{ => kprepublic}/jj40/keymaps/waples/config.h (100%) rename keyboards/{ => kprepublic}/jj40/keymaps/waples/keymap.c (100%) create mode 100644 keyboards/kprepublic/jj40/keymaps/waples/readme.md create mode 100644 keyboards/kprepublic/jj40/keymaps/waples/rules.mk create mode 100644 keyboards/kprepublic/jj40/readme.md create mode 100644 keyboards/kprepublic/jj40/rules.mk create mode 100644 keyboards/kprepublic/jj4x4/config.h create mode 100644 keyboards/kprepublic/jj4x4/info.json rename keyboards/{ => kprepublic}/jj4x4/jj4x4.c (100%) rename keyboards/{ => kprepublic}/jj4x4/jj4x4.h (100%) rename keyboards/{ => kprepublic}/jj4x4/keymaps/default/keymap.c (100%) rename keyboards/{ => kprepublic}/jj4x4/keymaps/via/keymap.c (100%) create mode 100644 keyboards/kprepublic/jj4x4/keymaps/via/rules.mk create mode 100644 keyboards/kprepublic/jj4x4/readme.md create mode 100644 keyboards/kprepublic/jj4x4/rules.mk rename keyboards/{ => kprepublic}/jj50/config.h (100%) create mode 100644 keyboards/kprepublic/jj50/info.json rename keyboards/{ => kprepublic}/jj50/jj50.c (100%) rename keyboards/{ => kprepublic}/jj50/jj50.h (100%) rename keyboards/{ => kprepublic}/jj50/keymaps/abstractkb/config.h (100%) create mode 100644 keyboards/kprepublic/jj50/keymaps/abstractkb/keymap.c rename keyboards/{ => kprepublic}/jj50/keymaps/abstractkb/readme.md (100%) rename keyboards/{ => kprepublic}/jj50/keymaps/abstractkb_gergomatch/config.h (100%) create mode 100644 keyboards/kprepublic/jj50/keymaps/abstractkb_gergomatch/keymap.c rename keyboards/{ => kprepublic}/jj50/keymaps/abstractkb_gergomatch/readme.md (100%) rename keyboards/{ => kprepublic}/jj50/keymaps/archetype/README.md (100%) rename keyboards/{ => kprepublic}/jj50/keymaps/archetype/config.h (100%) rename keyboards/{ => kprepublic}/jj50/keymaps/archetype/keymap.c (100%) rename keyboards/{ => kprepublic}/jj50/keymaps/archetype/rules.mk (100%) rename keyboards/{ => kprepublic}/jj50/keymaps/default/README.md (100%) rename keyboards/{ => kprepublic}/jj50/keymaps/default/keymap.c (100%) rename keyboards/{ => kprepublic}/jj50/keymaps/yoonbae81/config.h (100%) rename keyboards/{ => kprepublic}/jj50/keymaps/yoonbae81/keymap.c (100%) rename keyboards/{ => kprepublic}/jj50/keymaps/yoonbae81/rules.mk (100%) create mode 100644 keyboards/kprepublic/jj50/readme.md create mode 100644 keyboards/kprepublic/jj50/rules.mk create mode 100644 keyboards/ktec/daisy/config.h rename keyboards/{ => ktec}/daisy/daisy.c (100%) rename keyboards/{ => ktec}/daisy/daisy.h (100%) create mode 100644 keyboards/ktec/daisy/info.json rename keyboards/{ => ktec}/daisy/keymaps/default/keymap.c (100%) rename keyboards/{ => ktec}/daisy/keymaps/default/readme.md (100%) rename keyboards/{ => ktec}/daisy/keymaps/via/keymap.c (100%) rename keyboards/{ => ktec}/daisy/keymaps/via/readme.md (100%) create mode 100644 keyboards/ktec/daisy/keymaps/via/rules.mk create mode 100644 keyboards/ktec/daisy/readme.md create mode 100644 keyboards/ktec/daisy/rules.mk create mode 100644 keyboards/ktec/ergodone/config.h rename keyboards/{ => ktec}/ergodone/ergodone.c (100%) create mode 100644 keyboards/ktec/ergodone/ergodone.h rename keyboards/{ => ktec}/ergodone/expander.c (77%) rename keyboards/{ => ktec}/ergodone/expander.h (95%) create mode 100644 keyboards/ktec/ergodone/info.json rename keyboards/{ => ktec}/ergodone/keymaps/art/keymap.c (100%) create mode 100644 keyboards/ktec/ergodone/keymaps/default/keymap.c rename keyboards/{ => ktec}/ergodone/keymaps/default/readme.md (100%) rename keyboards/{ => ktec}/ergodone/keymaps/eozaki/keymap.c (100%) rename keyboards/{ => ktec}/ergodone/keymaps/eozaki/readme.md (100%) rename keyboards/{ => ktec}/ergodone/keymaps/erovia/config.h (100%) create mode 100644 keyboards/ktec/ergodone/keymaps/erovia/keymap.c rename keyboards/{ => ktec}/ergodone/keymaps/erovia/readme.md (100%) rename keyboards/{ => ktec}/ergodone/keymaps/erovia/rules.mk (100%) rename keyboards/{ => ktec}/ergodone/keymaps/kloki/keymap.c (100%) rename keyboards/{ => ktec}/ergodone/keymaps/kloki/readme.md (100%) rename keyboards/{ => ktec}/ergodone/keymaps/vega/keymap.c (100%) rename keyboards/{ => ktec}/ergodone/keymaps/vega/rules.mk (100%) rename keyboards/{ => ktec}/ergodone/keymaps/via/config.h (100%) rename keyboards/{ => ktec}/ergodone/keymaps/via/keymap.c (100%) rename keyboards/{ => ktec}/ergodone/keymaps/via/readme.md (100%) create mode 100644 keyboards/ktec/ergodone/keymaps/via/rules.mk rename keyboards/{ => ktec}/ergodone/matrix.c (100%) create mode 100644 keyboards/ktec/ergodone/readme.md create mode 100644 keyboards/ktec/ergodone/rules.mk rename keyboards/{ => ktec}/staryu/backlight_staryu.h (100%) rename keyboards/{ => ktec}/staryu/config.h (100%) create mode 100644 keyboards/ktec/staryu/info.json rename keyboards/{ => ktec}/staryu/keymaps/default/README.md (100%) rename keyboards/{ => ktec}/staryu/keymaps/default/keymap.c (100%) rename keyboards/{ => ktec}/staryu/keymaps/default/rules.mk (100%) rename keyboards/{ => ktec}/staryu/keymaps/krusli/README.md (100%) rename keyboards/{ => ktec}/staryu/keymaps/krusli/keymap.c (100%) create mode 100644 keyboards/ktec/staryu/readme.md create mode 100755 keyboards/ktec/staryu/rules.mk rename keyboards/{ => ktec}/staryu/staryu.c (100%) rename keyboards/{ => ktec}/staryu/staryu.h (100%) create mode 100644 keyboards/kwub/bloop/bloop.c create mode 100644 keyboards/kwub/bloop/bloop.h create mode 100644 keyboards/kwub/bloop/config.h create mode 100644 keyboards/kwub/bloop/info.json create mode 100644 keyboards/kwub/bloop/keymaps/crispyy/keymap.c create mode 100644 keyboards/kwub/bloop/keymaps/default/keymap.c create mode 100644 keyboards/kwub/bloop/keymaps/default/readme.md create mode 100644 keyboards/kwub/bloop/keymaps/kevin_hhkb/keymap.c create mode 100644 keyboards/kwub/bloop/keymaps/via/keymap.c create mode 100644 keyboards/kwub/bloop/keymaps/via/readme.md create mode 100644 keyboards/kwub/bloop/keymaps/via/rules.mk create mode 100644 keyboards/kwub/bloop/readme.md create mode 100644 keyboards/kwub/bloop/rules.mk delete mode 100644 keyboards/kyria/info.json delete mode 100644 keyboards/kyria/keymaps/asapjockey/config.h delete mode 100644 keyboards/kyria/keymaps/asapjockey/keymap.c delete mode 100644 keyboards/kyria/keymaps/asapjockey/rules.mk delete mode 100644 keyboards/kyria/keymaps/benji/config.h delete mode 100644 keyboards/kyria/keymaps/benji/keymap.c delete mode 100644 keyboards/kyria/keymaps/benji/rules.mk delete mode 100644 keyboards/kyria/keymaps/cjuniet/config.h delete mode 100644 keyboards/kyria/keymaps/cjuniet/keymap.c delete mode 100644 keyboards/kyria/keymaps/cjuniet/rules.mk delete mode 100644 keyboards/kyria/keymaps/corodiak/config.h delete mode 100644 keyboards/kyria/keymaps/corodiak/rules.mk delete mode 100644 keyboards/kyria/keymaps/cwebster2/config.h delete mode 100644 keyboards/kyria/keymaps/cwebster2/keymap.c delete mode 100644 keyboards/kyria/keymaps/cwebster2/rules.mk delete mode 100644 keyboards/kyria/keymaps/default/config.h delete mode 100644 keyboards/kyria/keymaps/default/keymap.c delete mode 100644 keyboards/kyria/keymaps/default/rules.mk delete mode 100644 keyboards/kyria/keymaps/drashna/config.h delete mode 100644 keyboards/kyria/keymaps/drashna/keymap.c delete mode 100644 keyboards/kyria/keymaps/drashna/rules.mk delete mode 100644 keyboards/kyria/keymaps/ghidalgo93/config.h delete mode 100644 keyboards/kyria/keymaps/ghidalgo93/keymap.c delete mode 100644 keyboards/kyria/keymaps/ghidalgo93/rules.mk delete mode 100644 keyboards/kyria/keymaps/gotham/config.h delete mode 100644 keyboards/kyria/keymaps/gotham/keymap.c delete mode 100644 keyboards/kyria/keymaps/gotham/rules.mk delete mode 100644 keyboards/kyria/keymaps/j-inc/config.h delete mode 100644 keyboards/kyria/keymaps/j-inc/keymap.c delete mode 100644 keyboards/kyria/keymaps/j-inc/rules.mk delete mode 100644 keyboards/kyria/keymaps/jhelvy/config.h delete mode 100644 keyboards/kyria/keymaps/jhelvy/keymap.c delete mode 100644 keyboards/kyria/keymaps/jhelvy/rules.mk delete mode 100644 keyboards/kyria/keymaps/kejadlen/config.h delete mode 100644 keyboards/kyria/keymaps/kejadlen/rules.mk delete mode 100644 keyboards/kyria/keymaps/mattir/config.h delete mode 100644 keyboards/kyria/keymaps/mattir/keymap.c delete mode 100644 keyboards/kyria/keymaps/mattir/rules.mk delete mode 100644 keyboards/kyria/keymaps/mattir2/rules.mk delete mode 100644 keyboards/kyria/keymaps/ninjonas/config.h delete mode 100644 keyboards/kyria/keymaps/ninjonas/oled.c delete mode 100644 keyboards/kyria/keymaps/ninjonas/rules.mk delete mode 100644 keyboards/kyria/keymaps/pierrec83/config.h delete mode 100644 keyboards/kyria/keymaps/pierrec83/rules.mk delete mode 100644 keyboards/kyria/keymaps/plattfot/README.md delete mode 100644 keyboards/kyria/keymaps/plattfot/config.h delete mode 100644 keyboards/kyria/keymaps/plattfot/keymap.c delete mode 100644 keyboards/kyria/keymaps/plattfot/rules.mk delete mode 100644 keyboards/kyria/keymaps/rmw/config.h delete mode 100644 keyboards/kyria/keymaps/rmw/rules.mk delete mode 100644 keyboards/kyria/keymaps/shinze/config.h delete mode 100644 keyboards/kyria/keymaps/shinze/keymap.c delete mode 100644 keyboards/kyria/keymaps/shinze/rules.mk delete mode 100644 keyboards/kyria/keymaps/tessachka/config.h delete mode 100644 keyboards/kyria/keymaps/tessachka/keymap.c delete mode 100644 keyboards/kyria/keymaps/tessachka/rules.mk delete mode 100644 keyboards/kyria/keymaps/thomasbaart/config.h delete mode 100644 keyboards/kyria/keymaps/thomasbaart/keymap.c delete mode 100644 keyboards/kyria/keymaps/thomasbaart/rules.mk delete mode 100755 keyboards/kyria/keymaps/winternebs/config.h delete mode 100755 keyboards/kyria/keymaps/winternebs/keymap.c delete mode 100755 keyboards/kyria/keymaps/winternebs/rules.mk delete mode 100644 keyboards/kyria/readme.md delete mode 100644 keyboards/kyria/rev1/config.h delete mode 100644 keyboards/kyria/rev1/rev1.c delete mode 100644 keyboards/kyria/rev1/rev1.h delete mode 100644 keyboards/kyria/rev1/rules.mk delete mode 100644 keyboards/kyria/rules.mk rename keyboards/lazydesigners/bolt/{ => keymaps}/via/keymap.c (100%) create mode 100644 keyboards/lazydesigners/bolt/keymaps/via/rules.mk create mode 100755 keyboards/lazydesigners/cassette8/cassette8.c create mode 100755 keyboards/lazydesigners/cassette8/cassette8.h create mode 100755 keyboards/lazydesigners/cassette8/config.h create mode 100755 keyboards/lazydesigners/cassette8/info.json create mode 100755 keyboards/lazydesigners/cassette8/keymaps/default/keymap.c create mode 100755 keyboards/lazydesigners/cassette8/keymaps/via/keymap.c create mode 100755 keyboards/lazydesigners/cassette8/keymaps/via/rules.mk create mode 100755 keyboards/lazydesigners/cassette8/readme.md create mode 100755 keyboards/lazydesigners/cassette8/rules.mk create mode 100644 keyboards/lck75/keymaps/7u/keymap.c create mode 100644 keyboards/lck75/keymaps/7u_iso/keymap.c create mode 100644 keyboards/lck75/keymaps/7u_sbs/keymap.c create mode 100644 keyboards/lck75/keymaps/iso/keymap.c create mode 100644 keyboards/lck75/keymaps/iso_sbs/keymap.c create mode 100644 keyboards/lck75/keymaps/sbs/keymap.c create mode 100644 keyboards/lefishe/config.h create mode 100644 keyboards/lefishe/info.json create mode 100644 keyboards/lefishe/keymaps/default/keymap.c create mode 100644 keyboards/lefishe/keymaps/wk_sbs/keymap.c create mode 100644 keyboards/lefishe/keymaps/wkl/keymap.c create mode 100644 keyboards/lefishe/keymaps/wkl_sbs/keymap.c create mode 100644 keyboards/lefishe/lefishe.c create mode 100644 keyboards/lefishe/lefishe.h create mode 100644 keyboards/lefishe/readme.md create mode 100644 keyboards/lefishe/rules.mk create mode 100644 keyboards/lefty/config.h create mode 100644 keyboards/lefty/info.json create mode 100644 keyboards/lefty/keymaps/default/keymap.c create mode 100644 keyboards/lefty/keymaps/via/keymap.c create mode 100644 keyboards/lefty/keymaps/via/rules.mk create mode 100644 keyboards/lefty/lefty.c create mode 100644 keyboards/lefty/lefty.h create mode 100644 keyboards/lefty/readme.md create mode 100644 keyboards/lefty/rev1/config.h create mode 100644 keyboards/lefty/rev1/rev1.c create mode 100644 keyboards/lefty/rev1/rules.mk create mode 100644 keyboards/lefty/rev2/config.h create mode 100644 keyboards/lefty/rev2/rev2.c create mode 100644 keyboards/lefty/rev2/rules.mk create mode 100644 keyboards/lefty/rules.mk create mode 100644 keyboards/lets_split/keymaps/shaymdev/config.h create mode 100644 keyboards/lets_split/keymaps/shaymdev/keymap.c create mode 100644 keyboards/lets_split/keymaps/shaymdev/rules.mk create mode 100644 keyboards/lfkeyboards/lfk78/post_rules.mk create mode 100644 keyboards/lfkeyboards/lfk87/post_rules.mk create mode 100644 keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/config.h create mode 100644 keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/keymap.c create mode 100644 keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/rules.mk create mode 100644 keyboards/lfkeyboards/lfkpad/post_rules.mk create mode 100644 keyboards/lfkeyboards/mini1800/post_rules.mk create mode 100644 keyboards/lily58/keymaps/datadavd/config.h create mode 100644 keyboards/lily58/keymaps/datadavd/keymap.c create mode 100644 keyboards/lily58/keymaps/datadavd/rules.mk create mode 100644 keyboards/lily58/keymaps/gaston/config.h create mode 100644 keyboards/lily58/keymaps/gaston/keymap.c create mode 100644 keyboards/lily58/keymaps/gaston/readme.md create mode 100644 keyboards/lily58/keymaps/gaston/rules.mk create mode 100644 keyboards/lily58/keymaps/manna-harbour_miryoku/config.h create mode 100644 keyboards/lily58/keymaps/manna-harbour_miryoku/keymap.c create mode 100644 keyboards/lily58/keymaps/narze/config.h create mode 100644 keyboards/lily58/keymaps/narze/keymap.c create mode 100644 keyboards/lily58/keymaps/narze/readme.md create mode 100644 keyboards/lily58/keymaps/narze/rules.mk create mode 100644 keyboards/lily58/keymaps/pttbx/config.h create mode 100644 keyboards/lily58/keymaps/pttbx/keymap.c create mode 100644 keyboards/lily58/keymaps/pttbx/rules.mk create mode 100644 keyboards/lime/config.h create mode 100644 keyboards/lime/keymaps/default/config.h create mode 100644 keyboards/lime/keymaps/default/keymap.c create mode 100644 keyboards/lime/keymaps/default/readme.md create mode 100644 keyboards/lime/keymaps/default/rules.mk create mode 100644 keyboards/lime/lib/glcdfont.c create mode 100644 keyboards/lime/lime.c create mode 100644 keyboards/lime/lime.h create mode 100644 keyboards/lime/readme.md create mode 100644 keyboards/lime/rev1/config.h create mode 100644 keyboards/lime/rev1/info.json create mode 100644 keyboards/lime/rev1/rev1.c create mode 100644 keyboards/lime/rev1/rev1.h create mode 100644 keyboards/lime/rev1/rules.mk create mode 100644 keyboards/lime/rules.mk create mode 100644 keyboards/linworks/fave87/config.h create mode 100644 keyboards/linworks/fave87/fave87.c create mode 100644 keyboards/linworks/fave87/fave87.h create mode 100644 keyboards/linworks/fave87/info.json create mode 100644 keyboards/linworks/fave87/keymaps/default/keymap.c create mode 100644 keyboards/linworks/fave87/keymaps/via/keymap.c create mode 100644 keyboards/linworks/fave87/keymaps/via/rules.mk create mode 100644 keyboards/linworks/fave87/readme.md create mode 100644 keyboards/linworks/fave87/rules.mk create mode 100644 keyboards/ll3macorn/bongopad/bongopad.c create mode 100644 keyboards/ll3macorn/bongopad/bongopad.h create mode 100644 keyboards/ll3macorn/bongopad/config.h create mode 100644 keyboards/ll3macorn/bongopad/keymaps/default/keymap.c create mode 100644 keyboards/ll3macorn/bongopad/keymaps/default/rules.mk create mode 100644 keyboards/ll3macorn/bongopad/readme.md create mode 100644 keyboards/ll3macorn/bongopad/rules.mk create mode 100644 keyboards/ls_60/chconf.h create mode 100644 keyboards/ls_60/config.h create mode 100644 keyboards/ls_60/info.json create mode 100644 keyboards/ls_60/keymaps/default/keymap.c create mode 100644 keyboards/ls_60/keymaps/via/keymap.c create mode 100644 keyboards/ls_60/keymaps/via/rules.mk create mode 100644 keyboards/ls_60/ls_60.c create mode 100644 keyboards/ls_60/ls_60.h create mode 100644 keyboards/ls_60/readme.md create mode 100644 keyboards/ls_60/rules.mk create mode 100644 keyboards/lucid/alexa/alexa.c create mode 100644 keyboards/lucid/alexa/alexa.h create mode 100644 keyboards/lucid/alexa/config.h create mode 100644 keyboards/lucid/alexa/info.json create mode 100644 keyboards/lucid/alexa/keymaps/default/keymap.c create mode 100644 keyboards/lucid/alexa/keymaps/via/keymap.c create mode 100644 keyboards/lucid/alexa/keymaps/via/rules.mk create mode 100644 keyboards/lucid/alexa/readme.md create mode 100644 keyboards/lucid/alexa/rules.mk create mode 100644 keyboards/lyra/config.h create mode 100644 keyboards/lyra/keymaps/default/config.h create mode 100644 keyboards/lyra/keymaps/default/keymap.c create mode 100644 keyboards/lyra/keymaps/default/rules.mk create mode 100644 keyboards/lyra/keymaps/via/config.h create mode 100644 keyboards/lyra/keymaps/via/keymap.c create mode 100644 keyboards/lyra/keymaps/via/rules.mk create mode 100644 keyboards/lyra/lyra.c create mode 100644 keyboards/lyra/lyra.h create mode 100644 keyboards/lyra/readme.md create mode 100644 keyboards/lyra/rev1/config.h create mode 100644 keyboards/lyra/rev1/info.json create mode 100644 keyboards/lyra/rev1/rev1.c create mode 100644 keyboards/lyra/rev1/rev1.h create mode 100644 keyboards/lyra/rev1/rules.mk create mode 100644 keyboards/m65/config.h create mode 100644 keyboards/m65/info.json create mode 100644 keyboards/m65/keymaps/default/config.h create mode 100644 keyboards/m65/keymaps/default/keymap.c create mode 100644 keyboards/m65/keymaps/default/readme.md create mode 100644 keyboards/m65/keymaps/dk/config.h create mode 100644 keyboards/m65/keymaps/dk/keymap.c create mode 100644 keyboards/m65/keymaps/dk/readme.md create mode 100644 keyboards/m65/keymaps/uk/config.h create mode 100644 keyboards/m65/keymaps/uk/keymap.c create mode 100644 keyboards/m65/keymaps/uk/readme.md create mode 100644 keyboards/m65/m65.c create mode 100644 keyboards/m65/m65.h create mode 100644 keyboards/m65/readme.md create mode 100644 keyboards/m65/rev1/chconf.h create mode 100644 keyboards/m65/rev1/config.h create mode 100644 keyboards/m65/rev1/mcuconf.h create mode 100644 keyboards/m65/rev1/readme.md create mode 100644 keyboards/m65/rev1/rules.mk create mode 100644 keyboards/machkeyboards/mach3/config.h create mode 100644 keyboards/machkeyboards/mach3/info.json create mode 100644 keyboards/machkeyboards/mach3/keymaps/default/keymap.c create mode 100644 keyboards/machkeyboards/mach3/keymaps/default/readme.md create mode 100644 keyboards/machkeyboards/mach3/keymaps/via/keymap.c create mode 100644 keyboards/machkeyboards/mach3/keymaps/via/rules.mk create mode 100644 keyboards/machkeyboards/mach3/mach3.c create mode 100644 keyboards/machkeyboards/mach3/mach3.h create mode 100644 keyboards/machkeyboards/mach3/readme.md create mode 100644 keyboards/machkeyboards/mach3/rules.mk create mode 100644 keyboards/machkeyboards/readme.md create mode 100644 keyboards/macro1/config.h create mode 100644 keyboards/macro1/info.json create mode 100644 keyboards/macro1/keymaps/default/keymap.c create mode 100644 keyboards/macro1/keymaps/macropad/keymap.c create mode 100644 keyboards/macro1/keymaps/southpaw/keymap.c create mode 100644 keyboards/macro1/keymaps/via/keymap.c create mode 100644 keyboards/macro1/keymaps/via/rules.mk create mode 100644 keyboards/macro1/macro1.c create mode 100644 keyboards/macro1/macro1.h create mode 100644 keyboards/macro1/readme.md create mode 100644 keyboards/macro1/rules.mk create mode 100644 keyboards/macro3/config.h create mode 100644 keyboards/macro3/info.json create mode 100644 keyboards/macro3/keymaps/default/keymap.c create mode 100644 keyboards/macro3/macro3.c create mode 100644 keyboards/macro3/macro3.h create mode 100644 keyboards/macro3/post_config.h create mode 100644 keyboards/macro3/readme.md create mode 100644 keyboards/macro3/rules.mk create mode 100644 keyboards/manta60/post_rules.mk create mode 100644 keyboards/manyboard/macro/config.h create mode 100644 keyboards/manyboard/macro/info.json create mode 100644 keyboards/manyboard/macro/keymaps/default/keymap.c create mode 100644 keyboards/manyboard/macro/keymaps/via/keymap.c create mode 100644 keyboards/manyboard/macro/keymaps/via/rules.mk create mode 100644 keyboards/manyboard/macro/macro.c create mode 100644 keyboards/manyboard/macro/macro.h create mode 100644 keyboards/manyboard/macro/readme.md create mode 100644 keyboards/manyboard/macro/rules.mk create mode 100644 keyboards/massdrop/alt/alt.c delete mode 100644 keyboards/massdrop/alt/matrix.c create mode 100644 keyboards/massdrop/ctrl/ctrl.c create mode 100644 keyboards/massdrop/ctrl/keymaps/foxx1337/README.md create mode 100644 keyboards/massdrop/ctrl/keymaps/foxx1337/config.h create mode 100644 keyboards/massdrop/ctrl/keymaps/foxx1337/hid_protocol.c create mode 100644 keyboards/massdrop/ctrl/keymaps/foxx1337/hid_protocol.h create mode 100644 keyboards/massdrop/ctrl/keymaps/foxx1337/keymap.c create mode 100644 keyboards/massdrop/ctrl/keymaps/foxx1337/rgb_matrix_user.inc create mode 100644 keyboards/massdrop/ctrl/keymaps/foxx1337/rules.mk delete mode 100644 keyboards/massdrop/ctrl/matrix.c create mode 100644 keyboards/matchstickworks/southpad/config.h create mode 100644 keyboards/matchstickworks/southpad/info.json create mode 100644 keyboards/matchstickworks/southpad/keymaps/default/keymap.c create mode 100644 keyboards/matchstickworks/southpad/readme.md create mode 100644 keyboards/matchstickworks/southpad/rules.mk create mode 100644 keyboards/matchstickworks/southpad/southpad.c create mode 100644 keyboards/matchstickworks/southpad/southpad.h create mode 100644 keyboards/matrix/abelx/abelx.c create mode 100644 keyboards/matrix/abelx/abelx.h create mode 100644 keyboards/matrix/abelx/aw9523b.c create mode 100644 keyboards/matrix/abelx/aw9523b.h create mode 100644 keyboards/matrix/abelx/boards/abelx_bd/board.c create mode 100644 keyboards/matrix/abelx/boards/abelx_bd/board.h create mode 100644 keyboards/matrix/abelx/boards/abelx_bd/board.mk create mode 100644 keyboards/matrix/abelx/bootloader_defs.h create mode 100644 keyboards/matrix/abelx/chconf.h create mode 100644 keyboards/matrix/abelx/config.h create mode 100644 keyboards/matrix/abelx/halconf.h create mode 100644 keyboards/matrix/abelx/info.json create mode 100644 keyboards/matrix/abelx/keymaps/default/keymap.c create mode 100644 keyboards/matrix/abelx/keymaps/iso/keymap.c create mode 100644 keyboards/matrix/abelx/ld/abelx_boot.ld create mode 100644 keyboards/matrix/abelx/matrix.c create mode 100644 keyboards/matrix/abelx/mcuconf.h create mode 100644 keyboards/matrix/abelx/readme.md create mode 100644 keyboards/matrix/abelx/rules.mk create mode 100644 keyboards/matrix/abelx/tca6424.c create mode 100644 keyboards/matrix/abelx/tca6424.h create mode 100644 keyboards/matrix/falcon/config.h create mode 100644 keyboards/matrix/falcon/falcon.c create mode 100644 keyboards/matrix/falcon/falcon.h create mode 100644 keyboards/matrix/falcon/info.json create mode 100644 keyboards/matrix/falcon/keymaps/default/keymap.c create mode 100644 keyboards/matrix/falcon/keymaps/via/keymap.c create mode 100644 keyboards/matrix/falcon/keymaps/via/rules.mk create mode 100644 keyboards/matrix/falcon/readme.md create mode 100644 keyboards/matrix/falcon/rules.mk create mode 100644 keyboards/matrix/me/config.h create mode 100644 keyboards/matrix/me/info.json create mode 100644 keyboards/matrix/me/keymaps/default/keymap.c create mode 100644 keyboards/matrix/me/keymaps/via/keymap.c create mode 100644 keyboards/matrix/me/keymaps/via/rules.mk create mode 100644 keyboards/matrix/me/me.c create mode 100644 keyboards/matrix/me/me.h create mode 100644 keyboards/matrix/me/readme.md create mode 100644 keyboards/matrix/me/rules.mk create mode 100644 keyboards/mechanickeys/miniashen40/config.h create mode 100644 keyboards/mechanickeys/miniashen40/info.json create mode 100644 keyboards/mechanickeys/miniashen40/keymaps/default/keymap.c create mode 100644 keyboards/mechanickeys/miniashen40/keymaps/via/keymap.c create mode 100644 keyboards/mechanickeys/miniashen40/keymaps/via/rules.mk create mode 100644 keyboards/mechanickeys/miniashen40/miniashen40.c create mode 100644 keyboards/mechanickeys/miniashen40/miniashen40.h create mode 100644 keyboards/mechanickeys/miniashen40/readme.md create mode 100644 keyboards/mechanickeys/miniashen40/rules.mk create mode 100644 keyboards/mechanickeys/undead60m/config.h create mode 100644 keyboards/mechanickeys/undead60m/info.json create mode 100644 keyboards/mechanickeys/undead60m/keymaps/default/keymap.c create mode 100644 keyboards/mechanickeys/undead60m/keymaps/via/keymap.c create mode 100644 keyboards/mechanickeys/undead60m/keymaps/via/rules.mk create mode 100644 keyboards/mechanickeys/undead60m/readme.md create mode 100644 keyboards/mechanickeys/undead60m/rules.mk create mode 100644 keyboards/mechanickeys/undead60m/undead60m.c create mode 100644 keyboards/mechanickeys/undead60m/undead60m.h create mode 100644 keyboards/mechlovin/adelais/rgb_led/config.h delete mode 100644 keyboards/mechlovin/adelais/rgb_led/readme.md create mode 100644 keyboards/mechlovin/adelais/rgb_led/rev3/config.h create mode 100644 keyboards/mechlovin/adelais/rgb_led/rev3/halconf.h create mode 100644 keyboards/mechlovin/adelais/rgb_led/rev3/mcuconf.h create mode 100644 keyboards/mechlovin/adelais/rgb_led/rev3/rev3.c create mode 100644 keyboards/mechlovin/adelais/rgb_led/rev3/rev3.h create mode 100644 keyboards/mechlovin/adelais/rgb_led/rev3/rules.mk create mode 100644 keyboards/mechlovin/adelais/standard_led/arm/.noci create mode 100644 keyboards/mechlovin/adelais/standard_led/arm/chconf.h create mode 100644 keyboards/mechlovin/adelais/standard_led/arm/config.h create mode 100644 keyboards/mechlovin/adelais/standard_led/arm/halconf.h create mode 100644 keyboards/mechlovin/adelais/standard_led/arm/mcuconf.h create mode 100644 keyboards/mechlovin/adelais/standard_led/arm/readme.md create mode 100644 keyboards/mechlovin/adelais/standard_led/arm/rev2/.noci rename keyboards/mechlovin/adelais/standard_led/{ => arm}/rev2/config.h (100%) create mode 100644 keyboards/mechlovin/adelais/standard_led/arm/rev2/rev2.h create mode 100644 keyboards/mechlovin/adelais/standard_led/arm/rev2/rules.mk rename keyboards/mechlovin/adelais/standard_led/{ => arm}/rev3/config.h (100%) create mode 100644 keyboards/mechlovin/adelais/standard_led/arm/rev3/rev3.h rename keyboards/mechlovin/adelais/standard_led/{ => arm}/rev3/rules.mk (100%) create mode 100644 keyboards/mechlovin/adelais/standard_led/arm/rev4/apm32f103/rules.mk rename keyboards/mechlovin/adelais/standard_led/{ => arm}/rev4/config.h (100%) create mode 100644 keyboards/mechlovin/adelais/standard_led/arm/rev4/readme.md create mode 100644 keyboards/mechlovin/adelais/standard_led/arm/rev4/rev4.h rename keyboards/mechlovin/adelais/standard_led/{ => arm}/rev4/rules.mk (100%) create mode 100644 keyboards/mechlovin/adelais/standard_led/arm/rev4/stm32f303/rules.mk create mode 100644 keyboards/mechlovin/adelais/standard_led/arm/rules.mk create mode 100644 keyboards/mechlovin/adelais/standard_led/avr/.noci create mode 100644 keyboards/mechlovin/adelais/standard_led/avr/readme.md create mode 100644 keyboards/mechlovin/adelais/standard_led/avr/rev1/config.h create mode 100644 keyboards/mechlovin/adelais/standard_led/avr/rev1/matrix.c create mode 100644 keyboards/mechlovin/adelais/standard_led/avr/rev1/readme.md create mode 100644 keyboards/mechlovin/adelais/standard_led/avr/rev1/rev1.h create mode 100644 keyboards/mechlovin/adelais/standard_led/avr/rev1/rules.mk create mode 100644 keyboards/mechlovin/adelais/standard_led/avr/rules.mk delete mode 100644 keyboards/mechlovin/adelais/standard_led/config.h delete mode 100644 keyboards/mechlovin/adelais/standard_led/halconf.h delete mode 100644 keyboards/mechlovin/adelais/standard_led/mcuconf.h delete mode 100644 keyboards/mechlovin/adelais/standard_led/readme.md delete mode 100644 keyboards/mechlovin/adelais/standard_led/rev4/readme.md delete mode 100644 keyboards/mechlovin/hannah65/mechlovin9/config.h delete mode 100644 keyboards/mechlovin/hannah65/mechlovin9/info.json delete mode 100644 keyboards/mechlovin/hannah65/mechlovin9/readme.md delete mode 100644 keyboards/mechlovin/hannah65/rev1/config.h create mode 100644 keyboards/mechlovin/hannah65/rev1/haus/config.h create mode 100644 keyboards/mechlovin/hannah65/rev1/haus/readme.md create mode 100644 keyboards/mechlovin/hannah65/rev1/haus/rules.mk create mode 100644 keyboards/mechlovin/hannah65/rev1/readme.md create mode 100644 keyboards/mechlovin/hex4b/config.h create mode 100644 keyboards/mechlovin/hex4b/hex4b.c create mode 100644 keyboards/mechlovin/hex4b/hex4b.h create mode 100644 keyboards/mechlovin/hex4b/info.json create mode 100644 keyboards/mechlovin/hex4b/keymaps/default/keymap.c create mode 100644 keyboards/mechlovin/hex4b/keymaps/default/readme.md create mode 100644 keyboards/mechlovin/hex4b/keymaps/via/keymap.c create mode 100644 keyboards/mechlovin/hex4b/keymaps/via/rules.mk create mode 100644 keyboards/mechlovin/hex4b/readme.md create mode 100644 keyboards/mechlovin/hex4b/rules.mk create mode 100644 keyboards/mechlovin/jay60/config.h create mode 100644 keyboards/mechlovin/jay60/info.json create mode 100644 keyboards/mechlovin/jay60/jay60.c create mode 100644 keyboards/mechlovin/jay60/jay60.h create mode 100644 keyboards/mechlovin/jay60/keymaps/default/keymap.c create mode 100644 keyboards/mechlovin/jay60/keymaps/default/readme.md create mode 100644 keyboards/mechlovin/jay60/keymaps/via/keymap.c create mode 100644 keyboards/mechlovin/jay60/keymaps/via/rules.mk create mode 100644 keyboards/mechlovin/jay60/readme.md create mode 100644 keyboards/mechlovin/jay60/rules.mk create mode 100644 keyboards/mechlovin/mechlovin9/config.h create mode 100644 keyboards/mechlovin/mechlovin9/info.json rename keyboards/mechlovin/{hannah65 => }/mechlovin9/keymaps/default/keymap.c (100%) rename keyboards/mechlovin/{hannah65 => }/mechlovin9/keymaps/default/readme.md (100%) rename keyboards/mechlovin/{hannah65 => }/mechlovin9/keymaps/via/keymap.c (100%) create mode 100644 keyboards/mechlovin/mechlovin9/keymaps/via/rules.mk create mode 100644 keyboards/mechlovin/mechlovin9/mechlovin9.c rename keyboards/mechlovin/{hannah65 => }/mechlovin9/mechlovin9.h (97%) create mode 100644 keyboards/mechlovin/mechlovin9/readme.md create mode 100644 keyboards/mechlovin/mechlovin9/rev1/config.h create mode 100644 keyboards/mechlovin/mechlovin9/rev1/readme.md create mode 100644 keyboards/mechlovin/mechlovin9/rev1/rules.mk create mode 100644 keyboards/mechlovin/mechlovin9/rev2/config.h create mode 100644 keyboards/mechlovin/mechlovin9/rev2/readme.md create mode 100644 keyboards/mechlovin/mechlovin9/rev2/rules.mk create mode 100644 keyboards/mechlovin/mechlovin9/rules.mk create mode 100644 keyboards/mechlovin/olly/bb/bb.c create mode 100644 keyboards/mechlovin/olly/bb/bb.h create mode 100644 keyboards/mechlovin/olly/bb/config.h create mode 100644 keyboards/mechlovin/olly/bb/info.json create mode 100644 keyboards/mechlovin/olly/bb/keymaps/default/keymap.c create mode 100644 keyboards/mechlovin/olly/bb/keymaps/default/readme.md create mode 100644 keyboards/mechlovin/olly/bb/keymaps/via/keymap.c create mode 100644 keyboards/mechlovin/olly/bb/keymaps/via/readme.md create mode 100644 keyboards/mechlovin/olly/bb/keymaps/via/rules.mk create mode 100644 keyboards/mechlovin/olly/bb/matrix.c create mode 100644 keyboards/mechlovin/olly/bb/readme.md create mode 100644 keyboards/mechlovin/olly/bb/rules.mk create mode 100644 keyboards/mechlovin/olly/jf/config.h create mode 100644 keyboards/mechlovin/olly/jf/info.json create mode 100644 keyboards/mechlovin/olly/jf/jf.c create mode 100644 keyboards/mechlovin/olly/jf/jf.h create mode 100644 keyboards/mechlovin/olly/jf/keymaps/default/keymap.c create mode 100644 keyboards/mechlovin/olly/jf/keymaps/default/readme.md create mode 100644 keyboards/mechlovin/olly/jf/keymaps/via/config.h create mode 100644 keyboards/mechlovin/olly/jf/keymaps/via/keymap.c create mode 100644 keyboards/mechlovin/olly/jf/keymaps/via/readme.md create mode 100644 keyboards/mechlovin/olly/jf/keymaps/via/rules.mk create mode 100644 keyboards/mechlovin/olly/jf/matrix.c create mode 100644 keyboards/mechlovin/olly/jf/readme.md create mode 100644 keyboards/mechlovin/olly/jf/rules.mk create mode 100644 keyboards/mechlovin/serratus/config.h create mode 100644 keyboards/mechlovin/serratus/info.json create mode 100644 keyboards/mechlovin/serratus/keymaps/default/keymap.c create mode 100644 keyboards/mechlovin/serratus/keymaps/default/readme.md create mode 100644 keyboards/mechlovin/serratus/keymaps/via/keymap.c create mode 100644 keyboards/mechlovin/serratus/keymaps/via/readme.md create mode 100644 keyboards/mechlovin/serratus/keymaps/via/rules.mk create mode 100644 keyboards/mechlovin/serratus/matrix.c create mode 100644 keyboards/mechlovin/serratus/readme.md create mode 100644 keyboards/mechlovin/serratus/rules.mk create mode 100644 keyboards/mechlovin/serratus/serratus.c create mode 100644 keyboards/mechlovin/serratus/serratus.h create mode 100644 keyboards/mechwild/murphpad/keymaps/jonavin/config.h create mode 100644 keyboards/mechwild/murphpad/keymaps/jonavin/keymap.c create mode 100644 keyboards/mechwild/murphpad/keymaps/jonavin/layout_landscape.h create mode 100644 keyboards/mechwild/murphpad/keymaps/jonavin/readme.md create mode 100644 keyboards/mechwild/murphpad/keymaps/jonavin/rules.mk create mode 100644 keyboards/mechwild/obe/config.h create mode 100644 keyboards/mechwild/obe/f401/halconf.h create mode 100644 keyboards/mechwild/obe/f401/mcuconf.h create mode 100644 keyboards/mechwild/obe/f401/rules.mk create mode 100644 keyboards/mechwild/obe/f411/halconf.h create mode 100644 keyboards/mechwild/obe/f411/mcuconf.h create mode 100644 keyboards/mechwild/obe/f411/rules.mk create mode 100644 keyboards/mechwild/obe/info.json create mode 100644 keyboards/mechwild/obe/keymaps/default/keymap.c create mode 100644 keyboards/mechwild/obe/keymaps/jonavin/config.h create mode 100644 keyboards/mechwild/obe/keymaps/jonavin/keymap.c create mode 100644 keyboards/mechwild/obe/keymaps/jonavin/readme.md create mode 100644 keyboards/mechwild/obe/keymaps/jonavin/rules.mk create mode 100644 keyboards/mechwild/obe/keymaps/via/keymap.c create mode 100644 keyboards/mechwild/obe/keymaps/via/rules.mk create mode 100644 keyboards/mechwild/obe/obe.c create mode 100644 keyboards/mechwild/obe/obe.h create mode 100644 keyboards/mechwild/obe/readme.md create mode 100644 keyboards/mechwild/obe/rules.mk create mode 100644 keyboards/meishi2/keymaps/via/keymap.c create mode 100644 keyboards/meishi2/keymaps/via/rules.mk create mode 100644 keyboards/meletrix/zoom65/config.h create mode 100644 keyboards/meletrix/zoom65/info.json create mode 100644 keyboards/meletrix/zoom65/keymaps/65_ansi_blocker/keymap.c create mode 100644 keyboards/meletrix/zoom65/keymaps/65_ansi_blocker/readme.md create mode 100644 keyboards/meletrix/zoom65/keymaps/65_ansi_blocker_split_bs/keymap.c create mode 100644 keyboards/meletrix/zoom65/keymaps/65_ansi_blocker_split_bs/readme.md create mode 100644 keyboards/meletrix/zoom65/keymaps/65_ansi_blocker_split_lshift/keymap.c create mode 100644 keyboards/meletrix/zoom65/keymaps/65_ansi_blocker_split_lshift/readme.md create mode 100644 keyboards/meletrix/zoom65/keymaps/65_ansi_blocker_split_space/keymap.c create mode 100644 keyboards/meletrix/zoom65/keymaps/65_ansi_blocker_split_space/readme.md create mode 100644 keyboards/meletrix/zoom65/keymaps/65_iso_blocker/keymap.c create mode 100644 keyboards/meletrix/zoom65/keymaps/65_iso_blocker/readme.md create mode 100644 keyboards/meletrix/zoom65/keymaps/65_iso_blocker_split_bs/keymap.c create mode 100644 keyboards/meletrix/zoom65/keymaps/65_iso_blocker_split_bs/readme.md create mode 100644 keyboards/meletrix/zoom65/keymaps/65_iso_blocker_split_space/keymap.c create mode 100644 keyboards/meletrix/zoom65/keymaps/65_iso_blocker_split_space/readme.md create mode 100644 keyboards/meletrix/zoom65/keymaps/default/keymap.c create mode 100644 keyboards/meletrix/zoom65/keymaps/default/readme.md create mode 100644 keyboards/meletrix/zoom65/keymaps/via/keymap.c create mode 100644 keyboards/meletrix/zoom65/keymaps/via/readme.md create mode 100644 keyboards/meletrix/zoom65/keymaps/via/rules.mk create mode 100644 keyboards/meletrix/zoom65/readme.md create mode 100644 keyboards/meletrix/zoom65/rules.mk create mode 100644 keyboards/meletrix/zoom65/zoom65.c create mode 100644 keyboards/meletrix/zoom65/zoom65.h create mode 100755 keyboards/melgeek/mach80/config.h create mode 100755 keyboards/melgeek/mach80/info.json create mode 100755 keyboards/melgeek/mach80/keymaps/default/keymap.c create mode 100755 keyboards/melgeek/mach80/keymaps/tkl/keymap.c create mode 100755 keyboards/melgeek/mach80/keymaps/via/keymap.c create mode 100755 keyboards/melgeek/mach80/keymaps/via/rules.mk create mode 100755 keyboards/melgeek/mach80/keymaps/wkl/keymap.c create mode 100755 keyboards/melgeek/mach80/mach80.c create mode 100755 keyboards/melgeek/mach80/mach80.h create mode 100755 keyboards/melgeek/mach80/readme.md create mode 100755 keyboards/melgeek/mach80/rev1/config.h create mode 100755 keyboards/melgeek/mach80/rev1/rev1.c create mode 100755 keyboards/melgeek/mach80/rev1/rules.mk create mode 100755 keyboards/melgeek/mj6xy/config.h create mode 100755 keyboards/melgeek/mj6xy/info.json create mode 100755 keyboards/melgeek/mj6xy/keymaps/60_ansi/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/60_ansi_7u_spc/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/60_ansi_7u_spc_split_bs/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_3u_spc/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_3u_spc_split_bs/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_6u_spc/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_6u_spc_split_bs/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_split_3u_spc/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_split_bs/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_split_bs_3u_spc/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/60_ansi_split_bs/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/60_iso/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_7u_spc_split_bs_rshift/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_7u_spc_split_rshift/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_split_bs_rshift/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_split_rshift/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc_split_bs/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc_split_bs_rshift/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc_split_rshift/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/60_iso_arrow/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_3u_spc/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_3u_spc_split_bs/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_6u_spc/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_6u_spc_split_bs/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_split_3u_spc/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_split_bs/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_split_bs_3u_spc/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/60_iso_split_bs/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/60_iso_split_bs_rshift/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/60_iso_split_rshift/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/64_ansi/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/64_ansi_3u_spc/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/64_ansi_3u_spc_split_bs/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/64_ansi_6u_spc/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/64_ansi_6u_spc_split_bs/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/64_ansi_split_3u_spc/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/64_ansi_split_bs/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/64_ansi_split_bs_3u_spc/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/64_iso/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/64_iso_3u_spc/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/64_iso_3u_spc_split_bs/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/64_iso_6u_spc/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/64_iso_6u_spc_split_bs/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/64_iso_split_3u_spc/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/64_iso_split_bs/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/64_iso_split_bs_3u_spc/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/default/keymap.c create mode 100755 keyboards/melgeek/mj6xy/keymaps/via/keymap.c create mode 100644 keyboards/melgeek/mj6xy/keymaps/via/rules.mk create mode 100755 keyboards/melgeek/mj6xy/mj6xy.c create mode 100755 keyboards/melgeek/mj6xy/mj6xy.h create mode 100755 keyboards/melgeek/mj6xy/readme.md create mode 100755 keyboards/melgeek/mj6xy/rev3/config.h create mode 100644 keyboards/melgeek/mj6xy/rev3/rev3.c create mode 100755 keyboards/melgeek/mj6xy/rev3/rules.mk create mode 100755 keyboards/melgeek/mojo68/config.h create mode 100755 keyboards/melgeek/mojo68/info.json create mode 100755 keyboards/melgeek/mojo68/keymaps/default/keymap.c create mode 100755 keyboards/melgeek/mojo68/keymaps/via/keymap.c create mode 100755 keyboards/melgeek/mojo68/keymaps/via/rules.mk create mode 100755 keyboards/melgeek/mojo68/mojo68.c create mode 100755 keyboards/melgeek/mojo68/mojo68.h create mode 100755 keyboards/melgeek/mojo68/readme.md create mode 100755 keyboards/melgeek/mojo68/rev1/config.h create mode 100755 keyboards/melgeek/mojo68/rev1/rev1.c create mode 100755 keyboards/melgeek/mojo68/rev1/rules.mk create mode 100644 keyboards/melody96/keymaps/dvz/config.h create mode 100644 keyboards/melody96/keymaps/dvz/keymap.c create mode 100644 keyboards/melody96/keymaps/dvz/readme.md create mode 100644 keyboards/melody96/keymaps/dvz/rules.mk create mode 100644 keyboards/meow65/config.h create mode 100644 keyboards/meow65/info.json create mode 100644 keyboards/meow65/keymaps/default/keymap.c create mode 100644 keyboards/meow65/keymaps/default/readme.md create mode 100644 keyboards/meow65/keymaps/via/keymap.c create mode 100644 keyboards/meow65/keymaps/via/readme.md create mode 100644 keyboards/meow65/keymaps/via/rules.mk create mode 100644 keyboards/meow65/meow65.c create mode 100644 keyboards/meow65/meow65.h create mode 100644 keyboards/meow65/readme.md create mode 100644 keyboards/meow65/rules.mk create mode 100644 keyboards/mini_elixivy/config.h create mode 100644 keyboards/mini_elixivy/info.json create mode 100644 keyboards/mini_elixivy/keymaps/ansi/keymap.c create mode 100644 keyboards/mini_elixivy/keymaps/ansi/readme.md create mode 100644 keyboards/mini_elixivy/keymaps/default/keymap.c create mode 100644 keyboards/mini_elixivy/keymaps/default/readme.md create mode 100644 keyboards/mini_elixivy/keymaps/iso/keymap.c create mode 100644 keyboards/mini_elixivy/keymaps/iso/readme.md create mode 100644 keyboards/mini_elixivy/mini_elixivy.c create mode 100644 keyboards/mini_elixivy/mini_elixivy.h create mode 100644 keyboards/mini_elixivy/readme.md create mode 100644 keyboards/mini_elixivy/rules.mk create mode 100644 keyboards/minimon/index_tab/config.h create mode 100644 keyboards/minimon/index_tab/index_tab.c create mode 100644 keyboards/minimon/index_tab/index_tab.h create mode 100644 keyboards/minimon/index_tab/info.json create mode 100644 keyboards/minimon/index_tab/keymaps/default/keymap.c create mode 100644 keyboards/minimon/index_tab/keymaps/default/readme.md create mode 100644 keyboards/minimon/index_tab/keymaps/default_2x2u/keymap.c create mode 100644 keyboards/minimon/index_tab/keymaps/default_7u_space/keymap.c create mode 100644 keyboards/minimon/index_tab/keymaps/via/keymap.c create mode 100644 keyboards/minimon/index_tab/keymaps/via/rules.mk create mode 100644 keyboards/minimon/index_tab/readme.md create mode 100644 keyboards/minimon/index_tab/rules.mk create mode 100644 keyboards/minimon/info.json create mode 100644 keyboards/minimon/readme.md create mode 100644 keyboards/misonoworks/chocolatebar/chocolatebar.c create mode 100644 keyboards/misonoworks/chocolatebar/chocolatebar.h create mode 100644 keyboards/misonoworks/chocolatebar/config.h create mode 100644 keyboards/misonoworks/chocolatebar/info.json create mode 100644 keyboards/misonoworks/chocolatebar/keymaps/default/keymap.c create mode 100644 keyboards/misonoworks/chocolatebar/keymaps/via/keymap.c create mode 100644 keyboards/misonoworks/chocolatebar/keymaps/via/rules.mk create mode 100644 keyboards/misonoworks/chocolatebar/readme.md create mode 100644 keyboards/misonoworks/chocolatebar/rules.mk create mode 100755 keyboards/mnk1800s/config.h create mode 100755 keyboards/mnk1800s/info.json create mode 100644 keyboards/mnk1800s/keymaps/default/keymap.c create mode 100755 keyboards/mnk1800s/keymaps/default/readme.md create mode 100644 keyboards/mnk1800s/keymaps/via/keymap.c create mode 100755 keyboards/mnk1800s/keymaps/via/readme.md create mode 100755 keyboards/mnk1800s/keymaps/via/rules.mk create mode 100755 keyboards/mnk1800s/mnk1800s.c create mode 100644 keyboards/mnk1800s/mnk1800s.h create mode 100755 keyboards/mnk1800s/readme.md create mode 100755 keyboards/mnk1800s/rules.mk create mode 100755 keyboards/mnk50/config.h create mode 100755 keyboards/mnk50/info.json create mode 100644 keyboards/mnk50/keymaps/default/keymap.c create mode 100755 keyboards/mnk50/keymaps/default/readme.md create mode 100644 keyboards/mnk50/keymaps/via/keymap.c create mode 100755 keyboards/mnk50/keymaps/via/readme.md create mode 100755 keyboards/mnk50/keymaps/via/rules.mk create mode 100755 keyboards/mnk50/mnk50.c create mode 100644 keyboards/mnk50/mnk50.h create mode 100755 keyboards/mnk50/readme.md create mode 100755 keyboards/mnk50/rules.mk create mode 100644 keyboards/mode/m65ha_alpha/chconf.h create mode 100644 keyboards/mode/m65ha_alpha/config.h create mode 100644 keyboards/mode/m65ha_alpha/halconf.h create mode 100644 keyboards/mode/m65ha_alpha/info.json create mode 100755 keyboards/mode/m65ha_alpha/keymaps/default/keymap.c create mode 100755 keyboards/mode/m65ha_alpha/keymaps/via/keymap.c create mode 100644 keyboards/mode/m65ha_alpha/keymaps/via/rules.mk create mode 100644 keyboards/mode/m65ha_alpha/m65ha_alpha.c create mode 100644 keyboards/mode/m65ha_alpha/m65ha_alpha.h create mode 100644 keyboards/mode/m65ha_alpha/mcuconf.h create mode 100644 keyboards/mode/m65ha_alpha/readme.md create mode 100644 keyboards/mode/m65ha_alpha/rules.mk create mode 100644 keyboards/mode/m65hi_alpha/chconf.h create mode 100644 keyboards/mode/m65hi_alpha/config.h create mode 100644 keyboards/mode/m65hi_alpha/halconf.h create mode 100644 keyboards/mode/m65hi_alpha/info.json create mode 100755 keyboards/mode/m65hi_alpha/keymaps/default/keymap.c create mode 100755 keyboards/mode/m65hi_alpha/keymaps/via/keymap.c create mode 100644 keyboards/mode/m65hi_alpha/keymaps/via/rules.mk create mode 100644 keyboards/mode/m65hi_alpha/m65hi_alpha.c create mode 100644 keyboards/mode/m65hi_alpha/m65hi_alpha.h create mode 100644 keyboards/mode/m65hi_alpha/mcuconf.h create mode 100644 keyboards/mode/m65hi_alpha/readme.md create mode 100644 keyboards/mode/m65hi_alpha/rules.mk create mode 100644 keyboards/mode/m65s/chconf.h create mode 100644 keyboards/mode/m65s/config.h create mode 100644 keyboards/mode/m65s/halconf.h create mode 100644 keyboards/mode/m65s/info.json create mode 100755 keyboards/mode/m65s/keymaps/default/keymap.c create mode 100755 keyboards/mode/m65s/keymaps/via/keymap.c create mode 100644 keyboards/mode/m65s/keymaps/via/rules.mk create mode 100644 keyboards/mode/m65s/m65s.c create mode 100644 keyboards/mode/m65s/m65s.h create mode 100644 keyboards/mode/m65s/mcuconf.h create mode 100644 keyboards/mode/m65s/readme.md create mode 100644 keyboards/mode/m65s/rules.mk create mode 100644 keyboards/model_v/config.h create mode 100644 keyboards/model_v/info.json create mode 100644 keyboards/model_v/keymaps/default/keymap.c create mode 100644 keyboards/model_v/keymaps/via/keymap.c create mode 100644 keyboards/model_v/keymaps/via/rules.mk create mode 100644 keyboards/model_v/model_v.c create mode 100644 keyboards/model_v/model_v.h create mode 100644 keyboards/model_v/readme.md create mode 100644 keyboards/model_v/rules.mk create mode 100644 keyboards/mokey/README.md create mode 100644 keyboards/mokey/ginkgo65/config.h create mode 100644 keyboards/mokey/ginkgo65/ginkgo65.c create mode 100644 keyboards/mokey/ginkgo65/ginkgo65.h create mode 100644 keyboards/mokey/ginkgo65/info.json create mode 100644 keyboards/mokey/ginkgo65/keymaps/default/keymap.c create mode 100644 keyboards/mokey/ginkgo65/keymaps/via/keymap.c create mode 100644 keyboards/mokey/ginkgo65/keymaps/via/rules.mk create mode 100644 keyboards/mokey/ginkgo65/readme.md create mode 100644 keyboards/mokey/ginkgo65/rules.mk create mode 100644 keyboards/mokey/mokey63/config.h create mode 100644 keyboards/mokey/mokey63/info.json create mode 100644 keyboards/mokey/mokey63/keymaps/default/keymap.c create mode 100644 keyboards/mokey/mokey63/keymaps/via/keymap.c create mode 100644 keyboards/mokey/mokey63/keymaps/via/rules.mk create mode 100644 keyboards/mokey/mokey63/mokey63.c create mode 100644 keyboards/mokey/mokey63/mokey63.h create mode 100644 keyboards/mokey/mokey63/readme.md create mode 100644 keyboards/mokey/mokey63/rules.mk create mode 100644 keyboards/mokey/mokey64/config.h create mode 100644 keyboards/mokey/mokey64/info.json create mode 100644 keyboards/mokey/mokey64/keymaps/default/keymap.c create mode 100644 keyboards/mokey/mokey64/keymaps/via/keymap.c create mode 100644 keyboards/mokey/mokey64/keymaps/via/rules.mk create mode 100644 keyboards/mokey/mokey64/mokey64.c create mode 100644 keyboards/mokey/mokey64/mokey64.h create mode 100644 keyboards/mokey/mokey64/readme.md create mode 100644 keyboards/mokey/mokey64/rules.mk create mode 100644 keyboards/mokey/xox70/config.h create mode 100644 keyboards/mokey/xox70/info.json create mode 100644 keyboards/mokey/xox70/keymaps/default/keymap.c create mode 100644 keyboards/mokey/xox70/keymaps/via/keymap.c create mode 100644 keyboards/mokey/xox70/keymaps/via/rules.mk create mode 100644 keyboards/mokey/xox70/readme.md create mode 100644 keyboards/mokey/xox70/rules.mk create mode 100644 keyboards/mokey/xox70/xox70.c create mode 100644 keyboards/mokey/xox70/xox70.h create mode 100644 keyboards/momoka_ergo/config.h create mode 100644 keyboards/momoka_ergo/info.json create mode 100644 keyboards/momoka_ergo/keymaps/default/keymap.c create mode 100644 keyboards/momoka_ergo/keymaps/default/readme.md create mode 100644 keyboards/momoka_ergo/momoka_ergo.c create mode 100644 keyboards/momoka_ergo/momoka_ergo.h create mode 100644 keyboards/momoka_ergo/readme.md create mode 100644 keyboards/momoka_ergo/rules.mk create mode 100644 keyboards/montex/config.h create mode 100644 keyboards/montex/info.json create mode 100644 keyboards/montex/keymaps/default/keymap.c create mode 100644 keyboards/montex/keymaps/via/keymap.c create mode 100644 keyboards/montex/keymaps/via/rules.mk create mode 100644 keyboards/montex/montex.c create mode 100644 keyboards/montex/montex.h create mode 100644 keyboards/montex/readme.md create mode 100644 keyboards/montex/rules.mk create mode 100644 keyboards/moonlander/halconf.h create mode 100644 keyboards/moonlander/keymaps/jjerrell/config.h create mode 100644 keyboards/moonlander/keymaps/jjerrell/keymap.c create mode 100644 keyboards/moonlander/keymaps/jjerrell/readme.md create mode 100644 keyboards/moonlander/keymaps/jjerrell/rules.mk create mode 100644 keyboards/moonlander/keymaps/manna-harbour_miryoku/config.h create mode 100644 keyboards/moonlander/keymaps/manna-harbour_miryoku/keymap.c create mode 100644 keyboards/moonlander/keymaps/via/keymap.c create mode 100644 keyboards/moonlander/keymaps/via/readme.md create mode 100644 keyboards/moonlander/keymaps/via/rules.mk create mode 100644 keyboards/moonlander/mcuconf.h create mode 100644 keyboards/mschwingen/modelm/post_rules.mk create mode 100644 keyboards/mt84/keymaps/default/config.h create mode 100644 keyboards/mtbkeys/mtb60/hotswap/config.h create mode 100644 keyboards/mtbkeys/mtb60/hotswap/hotswap.c create mode 100644 keyboards/mtbkeys/mtb60/hotswap/hotswap.h create mode 100644 keyboards/mtbkeys/mtb60/hotswap/info.json create mode 100644 keyboards/mtbkeys/mtb60/hotswap/keymaps/default/keymap.c create mode 100644 keyboards/mtbkeys/mtb60/hotswap/readme.md create mode 100644 keyboards/mtbkeys/mtb60/hotswap/rules.mk create mode 100644 keyboards/mtbkeys/mtb60/solder/config.h create mode 100644 keyboards/mtbkeys/mtb60/solder/info.json create mode 100644 keyboards/mtbkeys/mtb60/solder/keymaps/default/keymap.c create mode 100644 keyboards/mtbkeys/mtb60/solder/readme.md create mode 100644 keyboards/mtbkeys/mtb60/solder/rules.mk create mode 100644 keyboards/mtbkeys/mtb60/solder/solder.c create mode 100644 keyboards/mtbkeys/mtb60/solder/solder.h create mode 100644 keyboards/mwstudio/mw65_black/config.h create mode 100644 keyboards/mwstudio/mw65_black/info.json create mode 100644 keyboards/mwstudio/mw65_black/keymaps/default/keymap.c create mode 100644 keyboards/mwstudio/mw65_black/keymaps/via/keymap.c create mode 100644 keyboards/mwstudio/mw65_black/keymaps/via/rules.mk create mode 100644 keyboards/mwstudio/mw65_black/mw65_black.c create mode 100644 keyboards/mwstudio/mw65_black/mw65_black.h create mode 100644 keyboards/mwstudio/mw65_black/readme.md create mode 100644 keyboards/mwstudio/mw65_black/rules.mk create mode 100644 keyboards/mwstudio/mw65_rgb/config.h create mode 100644 keyboards/mwstudio/mw65_rgb/info.json create mode 100644 keyboards/mwstudio/mw65_rgb/keymaps/default/keymap.c create mode 100644 keyboards/mwstudio/mw65_rgb/keymaps/via/keymap.c create mode 100644 keyboards/mwstudio/mw65_rgb/keymaps/via/rules.mk create mode 100644 keyboards/mwstudio/mw65_rgb/mw65_rgb.c create mode 100644 keyboards/mwstudio/mw65_rgb/mw65_rgb.h create mode 100644 keyboards/mwstudio/mw65_rgb/readme.md create mode 100644 keyboards/mwstudio/mw65_rgb/rules.mk create mode 100644 keyboards/mwstudio/mw75/config.h create mode 100644 keyboards/mwstudio/mw75/info.json create mode 100644 keyboards/mwstudio/mw75/keymaps/default/keymap.c create mode 100644 keyboards/mwstudio/mw75/keymaps/via/keymap.c create mode 100644 keyboards/mwstudio/mw75/keymaps/via/rules.mk create mode 100644 keyboards/mwstudio/mw75/mw75.c create mode 100644 keyboards/mwstudio/mw75/mw75.h create mode 100644 keyboards/mwstudio/mw75/readme.md create mode 100644 keyboards/mwstudio/mw75/rules.mk create mode 100644 keyboards/mwstudio/readme.md create mode 100644 keyboards/nack/keymaps/farfalleflickan/keymap.c create mode 100644 keyboards/nack/keymaps/farfalleflickan/keymap.h create mode 100644 keyboards/nack/keymaps/farfalleflickan/readme.md delete mode 100644 keyboards/nack/keymaps/pastapojken/keymap.c delete mode 100644 keyboards/nack/keymaps/pastapojken/keymap.h delete mode 100644 keyboards/nack/keymaps/pastapojken/readme.md create mode 100644 keyboards/naiping/np64/chconf.h create mode 100644 keyboards/naiping/np64/config.h create mode 100644 keyboards/naiping/np64/info.json create mode 100644 keyboards/naiping/np64/keymaps/default/keymap.c create mode 100644 keyboards/naiping/np64/keymaps/via/keymap.c create mode 100644 keyboards/naiping/np64/keymaps/via/rules.mk create mode 100644 keyboards/naiping/np64/np64.c create mode 100644 keyboards/naiping/np64/np64.h create mode 100644 keyboards/naiping/np64/readme.md create mode 100644 keyboards/naiping/np64/rules.mk create mode 100644 keyboards/naiping/nphhkb/chconf.h create mode 100644 keyboards/naiping/nphhkb/config.h create mode 100644 keyboards/naiping/nphhkb/info.json create mode 100644 keyboards/naiping/nphhkb/keymaps/default/keymap.c create mode 100644 keyboards/naiping/nphhkb/keymaps/via/keymap.c create mode 100644 keyboards/naiping/nphhkb/keymaps/via/rules.mk create mode 100644 keyboards/naiping/nphhkb/nphhkb.c create mode 100644 keyboards/naiping/nphhkb/nphhkb.h create mode 100644 keyboards/naiping/nphhkb/readme.md create mode 100644 keyboards/naiping/nphhkb/rules.mk create mode 100644 keyboards/naiping/npminila/chconf.h create mode 100644 keyboards/naiping/npminila/config.h create mode 100644 keyboards/naiping/npminila/info.json create mode 100644 keyboards/naiping/npminila/keymaps/default/keymap.c create mode 100644 keyboards/naiping/npminila/keymaps/via/keymap.c create mode 100644 keyboards/naiping/npminila/keymaps/via/rules.mk create mode 100644 keyboards/naiping/npminila/npminila.c create mode 100644 keyboards/naiping/npminila/npminila.h create mode 100644 keyboards/naiping/npminila/readme.md create mode 100644 keyboards/naiping/npminila/rules.mk create mode 100644 keyboards/naked48/keymaps/default/rules.mk create mode 100644 keyboards/naked48/keymaps/via/config.h create mode 100644 keyboards/naked48/keymaps/via/keymap.c create mode 100644 keyboards/naked48/keymaps/via/rules.mk create mode 100644 keyboards/naked48/keymaps/via_rgb_matrix/config.h create mode 100644 keyboards/naked48/keymaps/via_rgb_matrix/keymap.c create mode 100644 keyboards/naked48/keymaps/via_rgb_matrix/rules.mk create mode 100644 keyboards/naked60/keymaps/via/config.h create mode 100644 keyboards/naked60/keymaps/via/keymap.c create mode 100644 keyboards/naked60/keymaps/via/rules.mk create mode 100644 keyboards/neito/config.h create mode 100644 keyboards/neito/info.json create mode 100644 keyboards/neito/keymaps/default/keymap.c create mode 100644 keyboards/neito/keymaps/olli_works/keymap.c create mode 100644 keyboards/neito/keymaps/olli_works/rules.mk create mode 100644 keyboards/neito/keymaps/via/keymap.c create mode 100644 keyboards/neito/keymaps/via/rules.mk create mode 100644 keyboards/neito/neito.c create mode 100644 keyboards/neito/neito.h create mode 100644 keyboards/neito/readme.md create mode 100644 keyboards/neito/rules.mk create mode 100644 keyboards/neokeys/g67/element_hs/config.h create mode 100644 keyboards/neokeys/g67/element_hs/element_hs.c create mode 100644 keyboards/neokeys/g67/element_hs/element_hs.h create mode 100644 keyboards/neokeys/g67/element_hs/info.json create mode 100644 keyboards/neokeys/g67/element_hs/keymaps/default/keymap.c create mode 100644 keyboards/neokeys/g67/element_hs/keymaps/via/keymap.c create mode 100644 keyboards/neokeys/g67/element_hs/keymaps/via/rules.mk create mode 100644 keyboards/neokeys/g67/element_hs/readme.md create mode 100644 keyboards/neokeys/g67/element_hs/rules.mk create mode 100644 keyboards/neson_design/n6/config.h create mode 100644 keyboards/neson_design/n6/info.json create mode 100644 keyboards/neson_design/n6/keymaps/default/keymap.c create mode 100644 keyboards/neson_design/n6/keymaps/via/keymap.c create mode 100644 keyboards/neson_design/n6/keymaps/via/rules.mk create mode 100644 keyboards/neson_design/n6/n6.c create mode 100644 keyboards/neson_design/n6/n6.h create mode 100644 keyboards/neson_design/n6/readme.md create mode 100644 keyboards/neson_design/n6/rules.mk create mode 100644 keyboards/newgame40/post_rules.mk create mode 100644 keyboards/nightly_boards/n9/config.h create mode 100644 keyboards/nightly_boards/n9/info.json create mode 100644 keyboards/nightly_boards/n9/keymaps/default/keymap.c create mode 100644 keyboards/nightly_boards/n9/keymaps/via/keymap.c create mode 100644 keyboards/nightly_boards/n9/keymaps/via/rules.mk create mode 100644 keyboards/nightly_boards/n9/n9.c create mode 100644 keyboards/nightly_boards/n9/n9.h create mode 100644 keyboards/nightly_boards/n9/readme.md create mode 100644 keyboards/nightly_boards/n9/rules.mk create mode 100644 keyboards/niu_mini/keymaps/edvard/keymap.c create mode 100644 keyboards/niu_mini/keymaps/edvard/readme.md create mode 100644 keyboards/nopunin10did/jabberwocky/keymaps/nopunin10did/rules.mk create mode 100644 keyboards/noxary/378/378.c create mode 100644 keyboards/noxary/378/378.h create mode 100644 keyboards/noxary/378/chconf.h create mode 100644 keyboards/noxary/378/config.h create mode 100644 keyboards/noxary/378/info.json create mode 100755 keyboards/noxary/378/keymaps/default/keymap.c create mode 100755 keyboards/noxary/378/keymaps/via/keymap.c create mode 100644 keyboards/noxary/378/keymaps/via/rules.mk create mode 100644 keyboards/noxary/378/mcuconf.h create mode 100644 keyboards/noxary/378/readme.md create mode 100644 keyboards/noxary/378/rules.mk create mode 100644 keyboards/noxary/valhalla/chconf.h create mode 100644 keyboards/noxary/valhalla/config.h create mode 100755 keyboards/noxary/valhalla/keymaps/default/keymap.c create mode 100755 keyboards/noxary/valhalla/keymaps/via/keymap.c create mode 100644 keyboards/noxary/valhalla/keymaps/via/rules.mk create mode 100644 keyboards/noxary/valhalla/mcuconf.h create mode 100644 keyboards/noxary/valhalla/readme.md create mode 100644 keyboards/noxary/valhalla/rules.mk create mode 100644 keyboards/noxary/valhalla/valhalla.c create mode 100644 keyboards/noxary/valhalla/valhalla.h rename keyboards/nullbitsco/{nibble => common}/bitc_led.c (97%) rename keyboards/nullbitsco/{nibble => common}/bitc_led.h (96%) rename keyboards/nullbitsco/{nibble => common}/remote_kb.c (97%) rename keyboards/nullbitsco/{nibble => common}/remote_kb.h (98%) create mode 100644 keyboards/nullbitsco/nibble/keymaps/snailmap/keymap.c create mode 100644 keyboards/nullbitsco/nibble/keymaps/snailmap/readme.md create mode 100644 keyboards/nullbitsco/nibble/keymaps/snailmap/rules.mk create mode 100644 keyboards/numatreus/post_rules.mk create mode 100644 keyboards/ocean/gin_v2/config.h create mode 100644 keyboards/ocean/gin_v2/gin_v2.c create mode 100644 keyboards/ocean/gin_v2/gin_v2.h create mode 100644 keyboards/ocean/gin_v2/info.json create mode 100644 keyboards/ocean/gin_v2/keymaps/default/keymap.c create mode 100644 keyboards/ocean/gin_v2/keymaps/via/keymap.c create mode 100644 keyboards/ocean/gin_v2/keymaps/via/rules.mk create mode 100644 keyboards/ocean/gin_v2/readme.md create mode 100644 keyboards/ocean/gin_v2/rules.mk create mode 100644 keyboards/ocean/slamz/config.h create mode 100644 keyboards/ocean/slamz/info.json create mode 100644 keyboards/ocean/slamz/keymaps/default/keymap.c create mode 100644 keyboards/ocean/slamz/keymaps/via/keymap.c create mode 100644 keyboards/ocean/slamz/keymaps/via/rules.mk create mode 100644 keyboards/ocean/slamz/readme.md create mode 100644 keyboards/ocean/slamz/rules.mk create mode 100644 keyboards/ocean/slamz/slamz.c create mode 100644 keyboards/ocean/slamz/slamz.h create mode 100644 keyboards/ocean/stealth/config.h create mode 100644 keyboards/ocean/stealth/info.json create mode 100644 keyboards/ocean/stealth/keymaps/default/keymap.c create mode 100644 keyboards/ocean/stealth/keymaps/via/keymap.c create mode 100644 keyboards/ocean/stealth/keymaps/via/rules.mk create mode 100644 keyboards/ocean/stealth/readme.md create mode 100644 keyboards/ocean/stealth/rules.mk create mode 100644 keyboards/ocean/stealth/stealth.c create mode 100644 keyboards/ocean/stealth/stealth.h create mode 100644 keyboards/ocean/sus/config.h create mode 100644 keyboards/ocean/sus/info.json create mode 100644 keyboards/ocean/sus/keymaps/default/keymap.c create mode 100644 keyboards/ocean/sus/keymaps/via/keymap.c create mode 100644 keyboards/ocean/sus/keymaps/via/rules.mk create mode 100644 keyboards/ocean/sus/readme.md create mode 100644 keyboards/ocean/sus/rules.mk create mode 100644 keyboards/ocean/sus/sus.c create mode 100644 keyboards/ocean/sus/sus.h create mode 100644 keyboards/ocean/wang_ergo/config.h create mode 100644 keyboards/ocean/wang_ergo/info.json create mode 100644 keyboards/ocean/wang_ergo/keymaps/default/keymap.c create mode 100644 keyboards/ocean/wang_ergo/keymaps/default_2x2u/keymap.c create mode 100644 keyboards/ocean/wang_ergo/keymaps/via/keymap.c create mode 100644 keyboards/ocean/wang_ergo/keymaps/via/rules.mk create mode 100644 keyboards/ocean/wang_ergo/readme.md create mode 100644 keyboards/ocean/wang_ergo/rules.mk create mode 100644 keyboards/ocean/wang_ergo/wang_ergo.c create mode 100644 keyboards/ocean/wang_ergo/wang_ergo.h create mode 100644 keyboards/ocean/wang_v2/config.h create mode 100644 keyboards/ocean/wang_v2/info.json create mode 100644 keyboards/ocean/wang_v2/keymaps/default/keymap.c create mode 100644 keyboards/ocean/wang_v2/keymaps/via/keymap.c create mode 100644 keyboards/ocean/wang_v2/keymaps/via/rules.mk create mode 100644 keyboards/ocean/wang_v2/readme.md create mode 100644 keyboards/ocean/wang_v2/rules.mk create mode 100644 keyboards/ocean/wang_v2/wang_v2.c create mode 100644 keyboards/ocean/wang_v2/wang_v2.h delete mode 100644 keyboards/oddball/adns/adns.c delete mode 100644 keyboards/oddball/adns/adns.h delete mode 100644 keyboards/oddball/adns/adns9800_srom_A6.h delete mode 100644 keyboards/oddball/keymaps/default/config.h create mode 100644 keyboards/oddball/keymaps/default/rules.mk delete mode 100644 keyboards/oddball/keymaps/pmw3360/config.h create mode 100644 keyboards/oddball/keymaps/pmw3360/rules.mk delete mode 100644 keyboards/oddball/optical_sensor/optical_sensor.h delete mode 100644 keyboards/oddball/pmw/pmw.c delete mode 100644 keyboards/oddball/pmw/pmw.h delete mode 100644 keyboards/oddball/pmw/pmw3360_srom_0x04.h create mode 100644 keyboards/ogurec/config.h create mode 100644 keyboards/ogurec/info.json create mode 100644 keyboards/ogurec/keymaps/dack/config.h create mode 100644 keyboards/ogurec/keymaps/dack/keymap.c create mode 100644 keyboards/ogurec/keymaps/dack/readme.md create mode 100644 keyboards/ogurec/keymaps/default/config.h create mode 100644 keyboards/ogurec/keymaps/default/keymap.c create mode 100644 keyboards/ogurec/keymaps/default/readme.md rename keyboards/{anavi/macropad2/keymaps/google-meet => ogurec/keymaps/default}/rules.mk (100%) create mode 100644 keyboards/ogurec/left_pm/left_pm.h create mode 100644 keyboards/ogurec/left_pm/readme.md create mode 100644 keyboards/ogurec/left_pm/rules.mk create mode 100644 keyboards/ogurec/ogurec.c create mode 100644 keyboards/ogurec/ogurec.h create mode 100644 keyboards/ogurec/readme.md create mode 100644 keyboards/ogurec/right_pm/readme.md create mode 100644 keyboards/ogurec/right_pm/right_pm.h create mode 100644 keyboards/ogurec/right_pm/rules.mk create mode 100644 keyboards/ogurec/rules.mk create mode 100644 keyboards/onekeyco/dango40/config.h create mode 100644 keyboards/onekeyco/dango40/dango40.c create mode 100644 keyboards/onekeyco/dango40/dango40.h create mode 100644 keyboards/onekeyco/dango40/info.json create mode 100644 keyboards/onekeyco/dango40/keymaps/default/keymap.c create mode 100644 keyboards/onekeyco/dango40/keymaps/via/keymap.c create mode 100644 keyboards/onekeyco/dango40/keymaps/via/rules.mk create mode 100644 keyboards/onekeyco/dango40/readme.md create mode 100644 keyboards/onekeyco/dango40/rules.mk create mode 100644 keyboards/orthocode/config.h create mode 100644 keyboards/orthocode/info.json create mode 100644 keyboards/orthocode/keymaps/default/keymap.c create mode 100644 keyboards/orthocode/orthocode.c create mode 100644 keyboards/orthocode/orthocode.h create mode 100644 keyboards/orthocode/readme.md create mode 100644 keyboards/orthocode/rules.mk create mode 100644 keyboards/orthodox/keymaps/shaymdev/config.h create mode 100644 keyboards/orthodox/keymaps/shaymdev/keymap.c create mode 100644 keyboards/orthodox/keymaps/shaymdev/rules.mk create mode 100644 keyboards/owl8/config.h create mode 100644 keyboards/owl8/info.json create mode 100644 keyboards/owl8/keymaps/default/keymap.c create mode 100644 keyboards/owl8/keymaps/default/readme.md create mode 100644 keyboards/owl8/keymaps/via/keymap.c create mode 100644 keyboards/owl8/keymaps/via/readme.md create mode 100644 keyboards/owl8/keymaps/via/rules.mk create mode 100644 keyboards/owl8/owl8.c create mode 100644 keyboards/owl8/owl8.h create mode 100644 keyboards/owl8/readme.md create mode 100644 keyboards/owl8/rules.mk create mode 100644 keyboards/owlab/jelly_epoch/hotswap/config.h create mode 100644 keyboards/owlab/jelly_epoch/hotswap/hotswap.c create mode 100644 keyboards/owlab/jelly_epoch/hotswap/hotswap.h create mode 100644 keyboards/owlab/jelly_epoch/hotswap/info.json create mode 100644 keyboards/owlab/jelly_epoch/hotswap/keymaps/default/keymap.c create mode 100644 keyboards/owlab/jelly_epoch/hotswap/keymaps/via/keymap.c create mode 100644 keyboards/owlab/jelly_epoch/hotswap/keymaps/via/rules.mk create mode 100644 keyboards/owlab/jelly_epoch/hotswap/readme.md create mode 100644 keyboards/owlab/jelly_epoch/hotswap/rules.mk create mode 100644 keyboards/owlab/jelly_epoch/soldered/config.h create mode 100644 keyboards/owlab/jelly_epoch/soldered/info.json create mode 100644 keyboards/owlab/jelly_epoch/soldered/keymaps/default/keymap.c create mode 100644 keyboards/owlab/jelly_epoch/soldered/keymaps/via/keymap.c create mode 100644 keyboards/owlab/jelly_epoch/soldered/keymaps/via/rules.mk create mode 100644 keyboards/owlab/jelly_epoch/soldered/readme.md create mode 100644 keyboards/owlab/jelly_epoch/soldered/rules.mk create mode 100644 keyboards/owlab/jelly_epoch/soldered/soldered.c create mode 100644 keyboards/owlab/jelly_epoch/soldered/soldered.h create mode 100644 keyboards/owlab/suit80/ansi/ansi.c create mode 100644 keyboards/owlab/suit80/ansi/ansi.h create mode 100644 keyboards/owlab/suit80/ansi/config.h create mode 100644 keyboards/owlab/suit80/ansi/info.json create mode 100644 keyboards/owlab/suit80/ansi/keymaps/default/keymap.c create mode 100644 keyboards/owlab/suit80/ansi/keymaps/via/keymap.c create mode 100644 keyboards/owlab/suit80/ansi/keymaps/via/rules.mk create mode 100644 keyboards/owlab/suit80/ansi/readme.md create mode 100644 keyboards/owlab/suit80/ansi/rules.mk create mode 100644 keyboards/owlab/suit80/iso/config.h create mode 100644 keyboards/owlab/suit80/iso/info.json create mode 100644 keyboards/owlab/suit80/iso/iso.c create mode 100644 keyboards/owlab/suit80/iso/iso.h create mode 100644 keyboards/owlab/suit80/iso/keymaps/default/keymap.c create mode 100644 keyboards/owlab/suit80/iso/keymaps/via/keymap.c create mode 100644 keyboards/owlab/suit80/iso/keymaps/via/rules.mk create mode 100644 keyboards/owlab/suit80/iso/readme.md create mode 100644 keyboards/owlab/suit80/iso/rules.mk create mode 100644 keyboards/owlab/voice65/hotswap/config.h create mode 100644 keyboards/owlab/voice65/hotswap/halconf.h create mode 100644 keyboards/owlab/voice65/hotswap/hotswap.c create mode 100644 keyboards/owlab/voice65/hotswap/hotswap.h create mode 100644 keyboards/owlab/voice65/hotswap/info.json create mode 100644 keyboards/owlab/voice65/hotswap/keymaps/default/keymap.c create mode 100644 keyboards/owlab/voice65/hotswap/keymaps/via/keymap.c create mode 100644 keyboards/owlab/voice65/hotswap/keymaps/via/rules.mk create mode 100644 keyboards/owlab/voice65/hotswap/mcuconf.h create mode 100644 keyboards/owlab/voice65/hotswap/readme.md create mode 100644 keyboards/owlab/voice65/hotswap/rules.mk create mode 100644 keyboards/owlab/voice65/soldered/config.h create mode 100644 keyboards/owlab/voice65/soldered/halconf.h create mode 100644 keyboards/owlab/voice65/soldered/info.json create mode 100644 keyboards/owlab/voice65/soldered/keymaps/default/keymap.c create mode 100644 keyboards/owlab/voice65/soldered/keymaps/via/keymap.c create mode 100644 keyboards/owlab/voice65/soldered/keymaps/via/rules.mk create mode 100644 keyboards/owlab/voice65/soldered/mcuconf.h create mode 100644 keyboards/owlab/voice65/soldered/readme.md create mode 100644 keyboards/owlab/voice65/soldered/rules.mk create mode 100644 keyboards/owlab/voice65/soldered/soldered.c create mode 100644 keyboards/owlab/voice65/soldered/soldered.h create mode 100644 keyboards/packrat/config.h create mode 100644 keyboards/packrat/info.json create mode 100644 keyboards/packrat/keymaps/3uc/config.h create mode 100644 keyboards/packrat/keymaps/3uc/keymap.c create mode 100644 keyboards/packrat/keymaps/3uc/readme.md rename keyboards/{anavi/macropad2/keymaps/jitsi => packrat/keymaps/3uc}/rules.mk (100%) create mode 100644 keyboards/packrat/keymaps/default/config.h create mode 100644 keyboards/packrat/keymaps/default/keymap.c create mode 100644 keyboards/packrat/keymaps/default/readme.md rename keyboards/{anavi/macropad2/keymaps/msteams => packrat/keymaps/default}/rules.mk (100%) create mode 100644 keyboards/packrat/packrat.c create mode 100644 keyboards/packrat/packrat.h create mode 100644 keyboards/packrat/readme.md create mode 100644 keyboards/packrat/rules.mk delete mode 100755 keyboards/paladin64/config.h delete mode 100644 keyboards/paladin64/info.json delete mode 100755 keyboards/paladin64/keymaps/default/keymap.c delete mode 100755 keyboards/paladin64/paladin64.c delete mode 100755 keyboards/paladin64/paladin64.h delete mode 100644 keyboards/paladin64/readme.md delete mode 100755 keyboards/paladin64/rules.mk create mode 100644 keyboards/pearlboards/pandora/config.h create mode 100644 keyboards/pearlboards/pandora/info.json create mode 100644 keyboards/pearlboards/pandora/keymaps/default/keymap.c create mode 100644 keyboards/pearlboards/pandora/keymaps/via/keymap.c create mode 100644 keyboards/pearlboards/pandora/keymaps/via/rules.mk create mode 100644 keyboards/pearlboards/pandora/pandora.c create mode 100644 keyboards/pearlboards/pandora/pandora.h create mode 100644 keyboards/pearlboards/pandora/readme.md create mode 100644 keyboards/pearlboards/pandora/rules.mk create mode 100644 keyboards/peej/tripel/config.h create mode 100644 keyboards/peej/tripel/info.json create mode 100644 keyboards/peej/tripel/keymaps/default/keymap.c create mode 100644 keyboards/peej/tripel/keymaps/via/keymap.c create mode 100644 keyboards/peej/tripel/keymaps/via/rules.mk create mode 100644 keyboards/peej/tripel/left/left.h create mode 100644 keyboards/peej/tripel/left/readme.md create mode 100644 keyboards/peej/tripel/left/rules.mk create mode 100644 keyboards/peej/tripel/middle/middle.h create mode 100644 keyboards/peej/tripel/middle/readme.md create mode 100644 keyboards/peej/tripel/middle/rules.mk create mode 100644 keyboards/peej/tripel/right/readme.md create mode 100644 keyboards/peej/tripel/right/right.h create mode 100644 keyboards/peej/tripel/right/rules.mk create mode 100644 keyboards/peej/tripel/rules.mk delete mode 100644 keyboards/peiorisboards/ixora/info.json delete mode 100644 keyboards/peiorisboards/ixora/keymaps/default/keymap.c delete mode 100644 keyboards/peiorisboards/ixora/readme.md delete mode 100644 keyboards/peiorisboards/ixora/rules.mk create mode 100644 keyboards/peranekofactory/tone/keymaps/default/keymap.c create mode 100644 keyboards/peranekofactory/tone/keymaps/default/readme.md create mode 100644 keyboards/peranekofactory/tone/readme.md create mode 100644 keyboards/peranekofactory/tone/rev1/config.h create mode 100644 keyboards/peranekofactory/tone/rev1/info.json create mode 100644 keyboards/peranekofactory/tone/rev1/readme.md create mode 100644 keyboards/peranekofactory/tone/rev1/rev1.c create mode 100644 keyboards/peranekofactory/tone/rev1/rev1.h create mode 100644 keyboards/peranekofactory/tone/rev1/rules.mk create mode 100644 keyboards/peranekofactory/tone/rev2/config.h create mode 100644 keyboards/peranekofactory/tone/rev2/info.json create mode 100644 keyboards/peranekofactory/tone/rev2/readme.md create mode 100644 keyboards/peranekofactory/tone/rev2/rev2.c create mode 100644 keyboards/peranekofactory/tone/rev2/rev2.h create mode 100644 keyboards/peranekofactory/tone/rev2/rules.mk create mode 100644 keyboards/peranekofactory/tone/rules.mk delete mode 100644 keyboards/phase_studio/titan65/config.h create mode 100644 keyboards/phase_studio/titan65/hotswap/config.h create mode 100644 keyboards/phase_studio/titan65/hotswap/hotswap.c rename keyboards/phase_studio/titan65/{titan65.h => hotswap/hotswap.h} (100%) create mode 100644 keyboards/phase_studio/titan65/hotswap/info.json rename keyboards/phase_studio/titan65/{ => hotswap}/keymaps/default/keymap.c (100%) rename keyboards/phase_studio/titan65/{ => hotswap}/keymaps/via/keymap.c (100%) create mode 100644 keyboards/phase_studio/titan65/hotswap/keymaps/via/rules.mk rename keyboards/phase_studio/titan65/{ => hotswap}/readme.md (100%) create mode 100644 keyboards/phase_studio/titan65/hotswap/rules.mk delete mode 100644 keyboards/phase_studio/titan65/info.json create mode 100644 keyboards/phase_studio/titan65/soldered/config.h create mode 100644 keyboards/phase_studio/titan65/soldered/info.json create mode 100644 keyboards/phase_studio/titan65/soldered/keymaps/default/keymap.c create mode 100644 keyboards/phase_studio/titan65/soldered/keymaps/via/keymap.c create mode 100644 keyboards/phase_studio/titan65/soldered/keymaps/via/rules.mk create mode 100644 keyboards/phase_studio/titan65/soldered/readme.md create mode 100644 keyboards/phase_studio/titan65/soldered/rules.mk create mode 100644 keyboards/phase_studio/titan65/soldered/soldered.c create mode 100644 keyboards/phase_studio/titan65/soldered/soldered.h delete mode 100644 keyboards/phase_studio/titan65/titan65.c create mode 100644 keyboards/phrygian/ph100/chconf.h create mode 100644 keyboards/phrygian/ph100/config.h create mode 100644 keyboards/phrygian/ph100/halconf.h create mode 100644 keyboards/phrygian/ph100/info.json create mode 100644 keyboards/phrygian/ph100/keymaps/default/keymap.c create mode 100644 keyboards/phrygian/ph100/ph100.c create mode 100644 keyboards/phrygian/ph100/ph100.h create mode 100644 keyboards/phrygian/ph100/readme.md create mode 100644 keyboards/phrygian/ph100/rules.mk create mode 100644 keyboards/pimentoso/touhoupad/config.h create mode 100644 keyboards/pimentoso/touhoupad/info.json create mode 100644 keyboards/pimentoso/touhoupad/keymaps/default/keymap.c create mode 100644 keyboards/pimentoso/touhoupad/keymaps/default/readme.md create mode 100644 keyboards/pimentoso/touhoupad/readme.md create mode 100644 keyboards/pimentoso/touhoupad/rules.mk create mode 100644 keyboards/pimentoso/touhoupad/touhoupad.c create mode 100644 keyboards/pimentoso/touhoupad/touhoupad.h create mode 100644 keyboards/pistachio/rev1/config.h create mode 100644 keyboards/pistachio/rev1/readme.md create mode 100644 keyboards/pistachio/rev1/rev1.c create mode 100644 keyboards/pistachio/rev1/rev1.h create mode 100644 keyboards/pistachio/rev1/rules.mk create mode 100644 keyboards/pistachio/rev2/config.h create mode 100644 keyboards/pistachio/rev2/readme.md create mode 100644 keyboards/pistachio/rev2/rev2.c create mode 100644 keyboards/pistachio/rev2/rev2.h create mode 100644 keyboards/pistachio/rev2/rules.mk create mode 100644 keyboards/pistachio_mp/keymaps/via/keymap.c create mode 100644 keyboards/pistachio_mp/keymaps/via/readme.md create mode 100644 keyboards/pistachio_mp/keymaps/via/rules.mk create mode 100644 keyboards/pistachio_pro/config.h create mode 100644 keyboards/pistachio_pro/info.json create mode 100644 keyboards/pistachio_pro/keymaps/default/keymap.c create mode 100644 keyboards/pistachio_pro/keymaps/default/readme.md create mode 100644 keyboards/pistachio_pro/keymaps/rate/keymap.c create mode 100644 keyboards/pistachio_pro/keymaps/rate/readme.md create mode 100644 keyboards/pistachio_pro/keymaps/via/keymap.c create mode 100644 keyboards/pistachio_pro/keymaps/via/readme.md create mode 100644 keyboards/pistachio_pro/keymaps/via/rules.mk create mode 100644 keyboards/pistachio_pro/lib/bme280.c create mode 100644 keyboards/pistachio_pro/lib/bme280.h create mode 100644 keyboards/pistachio_pro/lib/glcdfont.c create mode 100644 keyboards/pistachio_pro/matrix.c create mode 100644 keyboards/pistachio_pro/pistachio_pro.c create mode 100644 keyboards/pistachio_pro/pistachio_pro.h create mode 100644 keyboards/pistachio_pro/readme.md create mode 100644 keyboards/pistachio_pro/rules.mk create mode 100644 keyboards/planck/ez/halconf.h create mode 100644 keyboards/planck/ez/mcuconf.h create mode 100644 keyboards/planck/keymaps/adamtabrams/config.h create mode 100644 keyboards/planck/keymaps/adamtabrams/keymap.c create mode 100644 keyboards/planck/keymaps/adamtabrams/readme.md create mode 100644 keyboards/planck/keymaps/adamtabrams/rules.mk create mode 100644 keyboards/planck/keymaps/dvz/config.h create mode 100644 keyboards/planck/keymaps/dvz/keymap.c create mode 100644 keyboards/planck/keymaps/dvz/readme.md create mode 100644 keyboards/planck/keymaps/dvz/rules.mk create mode 100644 keyboards/planck/keymaps/foreveranapple/config.h create mode 100644 keyboards/planck/keymaps/foreveranapple/keymap.c create mode 100644 keyboards/planck/keymaps/foreveranapple/readme.md create mode 100644 keyboards/planck/keymaps/foreveranapple/rules.mk delete mode 100755 keyboards/planck/keymaps/ishtob/rule.mk create mode 100644 keyboards/planck/keymaps/ishtob/rules.mk create mode 100644 keyboards/planck/keymaps/jimmysjolund/config.h create mode 100644 keyboards/planck/keymaps/jimmysjolund/keymap.c create mode 100644 keyboards/planck/keymaps/jimmysjolund/readme.md create mode 100644 keyboards/planck/keymaps/jimmysjolund/rules.mk create mode 100644 keyboards/planck/keymaps/jweickm/config.h create mode 100644 keyboards/planck/keymaps/jweickm/keymap.c create mode 100644 keyboards/planck/keymaps/jweickm/readme.md create mode 100644 keyboards/planck/keymaps/jweickm/rules.mk create mode 100644 keyboards/planck/keymaps/kuatsure/config.h create mode 100644 keyboards/planck/keymaps/kuatsure/keymap.c create mode 100644 keyboards/planck/keymaps/kuatsure/readme.md create mode 100644 keyboards/planck/keymaps/kuatsure/rules.mk create mode 100644 keyboards/planck/keymaps/pjanx/config.h create mode 100644 keyboards/planck/keymaps/pjanx/keymap.c create mode 100644 keyboards/planck/keymaps/pjanx/readme.md create mode 100644 keyboards/planck/keymaps/pjanx/rules.mk create mode 100644 keyboards/planck/keymaps/rootiest/config.h create mode 100644 keyboards/planck/keymaps/rootiest/keymap.c create mode 100644 keyboards/planck/keymaps/rootiest/readme.md create mode 100644 keyboards/planck/keymaps/rootiest/rules.mk create mode 100644 keyboards/planck/rev6_drop/chconf.h create mode 100644 keyboards/planck/rev6_drop/config.h create mode 100644 keyboards/planck/rev6_drop/halconf.h create mode 100644 keyboards/planck/rev6_drop/info.json create mode 100644 keyboards/planck/rev6_drop/matrix.c create mode 100644 keyboards/planck/rev6_drop/mcuconf.h create mode 100644 keyboards/planck/rev6_drop/readme.md create mode 100644 keyboards/planck/rev6_drop/rev6_drop.c create mode 100644 keyboards/planck/rev6_drop/rev6_drop.h create mode 100644 keyboards/planck/rev6_drop/rules.mk create mode 100644 keyboards/playkbtw/pk64rgb/config.h create mode 100644 keyboards/playkbtw/pk64rgb/info.json create mode 100644 keyboards/playkbtw/pk64rgb/keymaps/default/keymap.c create mode 100644 keyboards/playkbtw/pk64rgb/keymaps/default/readme.md create mode 100644 keyboards/playkbtw/pk64rgb/keymaps/via/keymap.c create mode 100644 keyboards/playkbtw/pk64rgb/keymaps/via/rules.mk create mode 100644 keyboards/playkbtw/pk64rgb/pk64rgb.c create mode 100644 keyboards/playkbtw/pk64rgb/pk64rgb.h create mode 100644 keyboards/playkbtw/pk64rgb/readme.md create mode 100644 keyboards/playkbtw/pk64rgb/rules.mk delete mode 100644 keyboards/ploopyco/adns5050.c delete mode 100644 keyboards/ploopyco/adns5050.h delete mode 100644 keyboards/ploopyco/pmw3360.c delete mode 100644 keyboards/ploopyco/pmw3360.h delete mode 100644 keyboards/ploopyco/pmw3360_firmware.h create mode 100644 keyboards/pluckey/config.h create mode 100644 keyboards/pluckey/info.json create mode 100644 keyboards/pluckey/keymaps/default/keymap.c create mode 100644 keyboards/pluckey/keymaps/default/readme.md create mode 100644 keyboards/pluckey/keymaps/default_ergo/keymap.c create mode 100644 keyboards/pluckey/pluckey.c create mode 100644 keyboards/pluckey/pluckey.h create mode 100644 keyboards/pluckey/readme.md create mode 100644 keyboards/pluckey/rules.mk create mode 100644 keyboards/plut0nium/0x3e/0x3e.c create mode 100644 keyboards/plut0nium/0x3e/0x3e.h create mode 100644 keyboards/plut0nium/0x3e/config.h create mode 100644 keyboards/plut0nium/0x3e/info.json create mode 100644 keyboards/plut0nium/0x3e/keymaps/default/keymap.c create mode 100644 keyboards/plut0nium/0x3e/keymaps/default/readme.md create mode 100644 keyboards/plut0nium/0x3e/readme.md create mode 100644 keyboards/plut0nium/0x3e/rules.mk create mode 100644 keyboards/plut0nium/readme.md create mode 100644 keyboards/plx/keymaps/default_all/keymap.c create mode 100644 keyboards/plx/keymaps/via/config.h create mode 100644 keyboards/plx/keymaps/via/keymap.c create mode 100644 keyboards/plx/keymaps/via/rules.mk create mode 100644 keyboards/poker87c/config.h create mode 100644 keyboards/poker87c/info.json create mode 100644 keyboards/poker87c/keymaps/default/keymap.c create mode 100644 keyboards/poker87c/keymaps/via/keymap.c create mode 100644 keyboards/poker87c/keymaps/via/rules.mk create mode 100644 keyboards/poker87c/poker87c.c create mode 100644 keyboards/poker87c/poker87c.h create mode 100644 keyboards/poker87c/readme.md create mode 100644 keyboards/poker87c/rules.mk create mode 100644 keyboards/poker87d/config.h create mode 100644 keyboards/poker87d/info.json create mode 100644 keyboards/poker87d/keymaps/default/keymap.c create mode 100644 keyboards/poker87d/keymaps/via/keymap.c create mode 100644 keyboards/poker87d/keymaps/via/rules.mk create mode 100644 keyboards/poker87d/poker87d.c create mode 100644 keyboards/poker87d/poker87d.h create mode 100644 keyboards/poker87d/readme.md create mode 100644 keyboards/poker87d/rules.mk create mode 100644 keyboards/portal_66/hotswap/config.h create mode 100644 keyboards/portal_66/hotswap/hotswap.c create mode 100644 keyboards/portal_66/hotswap/hotswap.h create mode 100644 keyboards/portal_66/hotswap/info.json create mode 100644 keyboards/portal_66/hotswap/keymaps/default/keymap.c create mode 100644 keyboards/portal_66/hotswap/keymaps/default/readme.md create mode 100644 keyboards/portal_66/hotswap/keymaps/via/keymap.c create mode 100644 keyboards/portal_66/hotswap/keymaps/via/rules.mk create mode 100644 keyboards/portal_66/hotswap/readme.md create mode 100644 keyboards/portal_66/hotswap/rules.mk create mode 100644 keyboards/portal_66/soldered/config.h create mode 100644 keyboards/portal_66/soldered/info.json create mode 100644 keyboards/portal_66/soldered/keymaps/default/keymap.c create mode 100644 keyboards/portal_66/soldered/keymaps/default/readme.md create mode 100644 keyboards/portal_66/soldered/keymaps/via/keymap.c create mode 100644 keyboards/portal_66/soldered/keymaps/via/rules.mk create mode 100644 keyboards/portal_66/soldered/readme.md create mode 100644 keyboards/portal_66/soldered/rules.mk create mode 100644 keyboards/portal_66/soldered/soldered.c create mode 100644 keyboards/portal_66/soldered/soldered.h create mode 100644 keyboards/preonic/keymaps/davidrambo/config.h create mode 100755 keyboards/preonic/keymaps/davidrambo/keymap.c create mode 100644 keyboards/preonic/keymaps/davidrambo/rules.mk create mode 100644 keyboards/preonic/keymaps/mechmaster48/config.h create mode 100644 keyboards/preonic/keymaps/mechmaster48/keymap.c create mode 100644 keyboards/preonic/keymaps/mechmaster48/readme.md create mode 100644 keyboards/preonic/keymaps/mechmaster48/rules.mk delete mode 100644 keyboards/preonic/keymaps/that_canadian/Makefile create mode 100644 keyboards/preonic/keymaps/that_canadian/rules.mk create mode 100644 keyboards/preonic/rev3_drop/chconf.h create mode 100644 keyboards/preonic/rev3_drop/config.h create mode 100644 keyboards/preonic/rev3_drop/halconf.h create mode 100644 keyboards/preonic/rev3_drop/info.json create mode 100644 keyboards/preonic/rev3_drop/matrix.c create mode 100644 keyboards/preonic/rev3_drop/mcuconf.h create mode 100644 keyboards/preonic/rev3_drop/rev3_drop.c create mode 100644 keyboards/preonic/rev3_drop/rev3_drop.h create mode 100644 keyboards/preonic/rev3_drop/rules.mk create mode 100644 keyboards/primekb/meridian/ktr1010/config.h create mode 100644 keyboards/primekb/meridian/ktr1010/rules.mk create mode 100644 keyboards/primekb/meridian/ws2812/config.h create mode 100644 keyboards/primekb/meridian/ws2812/rules.mk create mode 100644 keyboards/primekb/prime_e/keymaps/peott-fr/keymap.c create mode 100644 keyboards/projectcain/vault35/config.h create mode 100644 keyboards/projectcain/vault35/info.json create mode 100644 keyboards/projectcain/vault35/keymaps/default/config.h create mode 100644 keyboards/projectcain/vault35/keymaps/default/keymap.c create mode 100644 keyboards/projectcain/vault35/keymaps/default/readme.md create mode 100644 keyboards/projectcain/vault35/keymaps/default/rules.mk create mode 100644 keyboards/projectcain/vault35/readme.md create mode 100644 keyboards/projectcain/vault35/rules.mk create mode 100644 keyboards/projectcain/vault35/vault35.c create mode 100644 keyboards/projectcain/vault35/vault35.h create mode 100644 keyboards/projectcain/vault45/config.h create mode 100644 keyboards/projectcain/vault45/info.json create mode 100644 keyboards/projectcain/vault45/keymaps/default/config.h create mode 100644 keyboards/projectcain/vault45/keymaps/default/keymap.c create mode 100644 keyboards/projectcain/vault45/keymaps/default/readme.md create mode 100644 keyboards/projectcain/vault45/keymaps/default/rules.mk create mode 100644 keyboards/projectcain/vault45/readme.md create mode 100644 keyboards/projectcain/vault45/rules.mk create mode 100644 keyboards/projectcain/vault45/vault45.c create mode 100644 keyboards/projectcain/vault45/vault45.h create mode 100644 keyboards/pteron36/config.h create mode 100644 keyboards/pteron36/info.json create mode 100644 keyboards/pteron36/keymaps/default/keymap.c create mode 100644 keyboards/pteron36/keymaps/via/keymap.c create mode 100644 keyboards/pteron36/keymaps/via/readme.md create mode 100644 keyboards/pteron36/keymaps/via/rules.mk create mode 100644 keyboards/pteron36/pteron36.c create mode 100644 keyboards/pteron36/pteron36.h create mode 100644 keyboards/pteron36/readme.md create mode 100644 keyboards/pteron36/rules.mk create mode 100644 keyboards/q4z/config.h create mode 100644 keyboards/q4z/info.json create mode 100644 keyboards/q4z/keymaps/default/config.h create mode 100644 keyboards/q4z/keymaps/default/keymap.c create mode 100644 keyboards/q4z/keymaps/default/readme.md rename keyboards/{anavi/macropad2/keymaps/skype => q4z/keymaps/default}/rules.mk (100%) create mode 100644 keyboards/q4z/keymaps/rjboone/config.h create mode 100644 keyboards/q4z/keymaps/rjboone/keymap.c create mode 100644 keyboards/q4z/keymaps/rjboone/readme.md rename keyboards/{anavi/macropad2/keymaps/zoom => q4z/keymaps/rjboone}/rules.mk (100%) create mode 100644 keyboards/q4z/q4z.c create mode 100644 keyboards/q4z/q4z.h create mode 100644 keyboards/q4z/readme.md create mode 100644 keyboards/q4z/rules.mk create mode 100644 keyboards/quark/keymaps/ajp10304/keymap.c create mode 100644 keyboards/quark/keymaps/ajp10304/readme.md create mode 100644 keyboards/quark/keymaps/ajp10304/rules.mk delete mode 100644 keyboards/ramonimbao/mona/info.json delete mode 100644 keyboards/ramonimbao/mona/mona.c delete mode 100644 keyboards/ramonimbao/mona/readme.md rename keyboards/ramonimbao/mona/{ => v1}/config.h (100%) create mode 100644 keyboards/ramonimbao/mona/v1/info.json rename keyboards/ramonimbao/mona/{ => v1}/keymaps/default/keymap.c (100%) rename keyboards/ramonimbao/mona/{ => v1}/keymaps/iso/keymap.c (100%) rename keyboards/ramonimbao/mona/{ => v1}/keymaps/via/keymap.c (100%) create mode 100644 keyboards/ramonimbao/mona/v1/keymaps/via/rules.mk create mode 100644 keyboards/ramonimbao/mona/v1/readme.md create mode 100644 keyboards/ramonimbao/mona/v1/rules.mk create mode 100644 keyboards/ramonimbao/mona/v1/v1.c rename keyboards/ramonimbao/mona/{mona.h => v1/v1.h} (100%) create mode 100644 keyboards/ramonimbao/mona/v1_1/config.h create mode 100644 keyboards/ramonimbao/mona/v1_1/info.json create mode 100644 keyboards/ramonimbao/mona/v1_1/keymaps/default/keymap.c create mode 100644 keyboards/ramonimbao/mona/v1_1/keymaps/iso/keymap.c create mode 100644 keyboards/ramonimbao/mona/v1_1/keymaps/via/keymap.c create mode 100644 keyboards/ramonimbao/mona/v1_1/keymaps/via/rules.mk create mode 100644 keyboards/ramonimbao/mona/v1_1/readme.md create mode 100644 keyboards/ramonimbao/mona/v1_1/rules.mk create mode 100644 keyboards/ramonimbao/mona/v1_1/v1_1.c create mode 100644 keyboards/ramonimbao/mona/v1_1/v1_1.h create mode 100644 keyboards/ramonimbao/tkl_ff/config.h create mode 100644 keyboards/ramonimbao/tkl_ff/info.json create mode 100644 keyboards/ramonimbao/tkl_ff/keymaps/default/keymap.c create mode 100644 keyboards/ramonimbao/tkl_ff/keymaps/iso/keymap.c create mode 100644 keyboards/ramonimbao/tkl_ff/keymaps/via/keymap.c create mode 100644 keyboards/ramonimbao/tkl_ff/keymaps/via/rules.mk create mode 100644 keyboards/ramonimbao/tkl_ff/readme.md create mode 100644 keyboards/ramonimbao/tkl_ff/rules.mk create mode 100644 keyboards/ramonimbao/tkl_ff/tkl_ff.c create mode 100644 keyboards/ramonimbao/tkl_ff/tkl_ff.h create mode 100644 keyboards/ramonimbao/tkl_ff/v2/config.h create mode 100644 keyboards/ramonimbao/tkl_ff/v2/rules.mk create mode 100644 keyboards/ramonimbao/tkl_ff/v2/v2.c create mode 100644 keyboards/ramonimbao/tkl_ff/v2/v2.h delete mode 100644 keyboards/ramonimbao/wete/info.json delete mode 100644 keyboards/ramonimbao/wete/keymaps/jis/keymap.c delete mode 100644 keyboards/ramonimbao/wete/keymaps/via/rules.mk rename keyboards/ramonimbao/wete/{ => v1}/chconf.h (100%) rename keyboards/ramonimbao/wete/{ => v1}/config.h (100%) rename keyboards/ramonimbao/wete/{ => v1}/halconf.h (100%) create mode 100644 keyboards/ramonimbao/wete/v1/info.json rename keyboards/ramonimbao/wete/{ => v1}/keymaps/default/keymap.c (100%) rename keyboards/ramonimbao/wete/{ => v1}/keymaps/iso/keymap.c (100%) create mode 100644 keyboards/ramonimbao/wete/v1/keymaps/jis/keymap.c rename keyboards/ramonimbao/wete/{ => v1}/keymaps/via/config.h (100%) rename keyboards/ramonimbao/wete/{ => v1}/keymaps/via/keymap.c (100%) create mode 100644 keyboards/ramonimbao/wete/v1/keymaps/via/rules.mk rename keyboards/ramonimbao/wete/{ => v1}/mcuconf.h (100%) create mode 100644 keyboards/ramonimbao/wete/v1/readme.md create mode 100644 keyboards/ramonimbao/wete/v1/rules.mk create mode 100644 keyboards/ramonimbao/wete/v1/v1.c rename keyboards/ramonimbao/wete/{wete.h => v1/v1.h} (100%) create mode 100644 keyboards/ramonimbao/wete/v2/config.h create mode 100644 keyboards/ramonimbao/wete/v2/info.json create mode 100644 keyboards/ramonimbao/wete/v2/keymaps/default/keymap.c create mode 100644 keyboards/ramonimbao/wete/v2/keymaps/iso/keymap.c create mode 100644 keyboards/ramonimbao/wete/v2/keymaps/via/config.h create mode 100644 keyboards/ramonimbao/wete/v2/keymaps/via/keymap.c create mode 100644 keyboards/ramonimbao/wete/v2/keymaps/via/rules.mk create mode 100644 keyboards/ramonimbao/wete/v2/readme.md create mode 100644 keyboards/ramonimbao/wete/v2/rules.mk create mode 100644 keyboards/ramonimbao/wete/v2/v2.c create mode 100644 keyboards/ramonimbao/wete/v2/v2.h delete mode 100644 keyboards/ramonimbao/wete/wete.c create mode 100644 keyboards/rart/rart67m/config.h create mode 100644 keyboards/rart/rart67m/info.json create mode 100644 keyboards/rart/rart67m/keymaps/default/keymap.c create mode 100644 keyboards/rart/rart67m/keymaps/default/rules.mk create mode 100644 keyboards/rart/rart67m/keymaps/via/keymap.c create mode 100644 keyboards/rart/rart67m/keymaps/via/rules.mk create mode 100644 keyboards/rart/rart67m/rart67m.c create mode 100644 keyboards/rart/rart67m/rart67m.h create mode 100644 keyboards/rart/rart67m/readme.md create mode 100644 keyboards/rart/rart67m/rules.mk create mode 100644 keyboards/rart/rart75m/config.h create mode 100644 keyboards/rart/rart75m/info.json create mode 100644 keyboards/rart/rart75m/keymaps/default/keymap.c create mode 100644 keyboards/rart/rart75m/keymaps/via/keymap.c create mode 100644 keyboards/rart/rart75m/keymaps/via/rules.mk create mode 100644 keyboards/rart/rart75m/rart75m.c create mode 100644 keyboards/rart/rart75m/rart75m.h create mode 100644 keyboards/rart/rart75m/readme.md create mode 100644 keyboards/rart/rart75m/rules.mk create mode 100644 keyboards/rart/rartland/config.h create mode 100644 keyboards/rart/rartland/info.json create mode 100644 keyboards/rart/rartland/keymaps/default/keymap.c create mode 100644 keyboards/rart/rartland/keymaps/via/keymap.c create mode 100644 keyboards/rart/rartland/keymaps/via/rules.mk create mode 100644 keyboards/rart/rartland/rartland.c create mode 100644 keyboards/rart/rartland/rartland.h create mode 100644 keyboards/rart/rartland/readme.md create mode 100644 keyboards/rart/rartland/rules.mk create mode 100644 keyboards/redox_media/config.h create mode 100644 keyboards/redox_media/info.json create mode 100644 keyboards/redox_media/keymaps/default/config.h create mode 100644 keyboards/redox_media/keymaps/default/keymap.c create mode 100644 keyboards/redox_media/keymaps/default/readme.md create mode 100644 keyboards/redox_media/readme.md create mode 100644 keyboards/redox_media/redox_media.c create mode 100644 keyboards/redox_media/redox_media.h create mode 100644 keyboards/redox_media/rules.mk create mode 100644 keyboards/redox_w/keymaps/manna-harbour_miryoku/config.h create mode 100644 keyboards/redox_w/keymaps/manna-harbour_miryoku/keymap.c create mode 100644 keyboards/reviung39/keymaps/via/keymap.c create mode 100644 keyboards/reviung39/keymaps/via/rules.mk create mode 100644 keyboards/reviung5/config.h create mode 100644 keyboards/reviung5/info.json create mode 100644 keyboards/reviung5/keymaps/default/keymap.c create mode 100644 keyboards/reviung5/keymaps/default/readme.md create mode 100644 keyboards/reviung5/keymaps/default_lre/keymap.c create mode 100644 keyboards/reviung5/keymaps/default_lre/readme.md create mode 100644 keyboards/reviung5/keymaps/default_rre/keymap.c create mode 100644 keyboards/reviung5/keymaps/default_rre/readme.md create mode 100644 keyboards/reviung5/readme.md create mode 100644 keyboards/reviung5/reviung5.c create mode 100644 keyboards/reviung5/reviung5.h create mode 100644 keyboards/reviung5/rules.mk create mode 100644 keyboards/rgbkb/common/common_oled.c create mode 100644 keyboards/rgbkb/common/common_oled.h create mode 100644 keyboards/rgbkb/common/glcdfont.c create mode 100644 keyboards/rgbkb/common/touch_encoder.c create mode 100644 keyboards/rgbkb/common/touch_encoder.h create mode 100644 keyboards/rgbkb/mun/.noci create mode 100644 keyboards/rgbkb/mun/config.h create mode 100644 keyboards/rgbkb/mun/halconf.h create mode 100644 keyboards/rgbkb/mun/keymaps/default/config.h create mode 100644 keyboards/rgbkb/mun/keymaps/default/keymap.c create mode 100644 keyboards/rgbkb/mun/keymaps/peott-fr/config.h create mode 100644 keyboards/rgbkb/mun/keymaps/peott-fr/keymap.c create mode 100644 keyboards/rgbkb/mun/keymaps/via/config.h create mode 100644 keyboards/rgbkb/mun/keymaps/via/keymap.c create mode 100644 keyboards/rgbkb/mun/keymaps/via/rules.mk create mode 100644 keyboards/rgbkb/mun/keymaps/xulkal2/config.h create mode 100644 keyboards/rgbkb/mun/keymaps/xulkal2/keymap.c create mode 100644 keyboards/rgbkb/mun/keymaps/xulkal2/rules.mk create mode 100644 keyboards/rgbkb/mun/matrix.c create mode 100644 keyboards/rgbkb/mun/mcuconf.h create mode 100644 keyboards/rgbkb/mun/mun.c create mode 100644 keyboards/rgbkb/mun/mun.h create mode 100644 keyboards/rgbkb/mun/readme.md create mode 100644 keyboards/rgbkb/mun/rev1/config.h create mode 100644 keyboards/rgbkb/mun/rev1/info.json create mode 100644 keyboards/rgbkb/mun/rev1/readme.md create mode 100644 keyboards/rgbkb/mun/rev1/rev1.c create mode 100644 keyboards/rgbkb/mun/rev1/rev1.h create mode 100644 keyboards/rgbkb/mun/rev1/rules.mk create mode 100644 keyboards/rgbkb/mun/rules.mk create mode 100644 keyboards/rgbkb/zen/post_rules.mk create mode 100644 keyboards/rgbkb/zen/rev2/post_rules.mk create mode 100644 keyboards/ristretto/config.h create mode 100644 keyboards/ristretto/info.json create mode 100644 keyboards/ristretto/keymaps/default/keymap.c create mode 100644 keyboards/ristretto/readme.md create mode 100644 keyboards/ristretto/ristretto.c create mode 100644 keyboards/ristretto/ristretto.h create mode 100644 keyboards/ristretto/rules.mk create mode 100644 keyboards/rocketboard_16/custom_font.h create mode 100644 keyboards/rocketboard_16/keycode_lookup.c create mode 100644 keyboards/rocketboard_16/keycode_lookup.h create mode 100644 keyboards/rotor/config.h create mode 100644 keyboards/rotor/info.json create mode 100644 keyboards/rotor/keymaps/default/keymap.c create mode 100644 keyboards/rotor/keymaps/default/rules.mk create mode 100644 keyboards/rotor/keymaps/default_all/keymap.c create mode 100644 keyboards/rotor/keymaps/default_all/rules.mk create mode 100644 keyboards/rotor/keymaps/via/config.h create mode 100644 keyboards/rotor/keymaps/via/keymap.c create mode 100644 keyboards/rotor/keymaps/via/rules.mk create mode 100644 keyboards/rotor/readme.md create mode 100644 keyboards/rotor/rotor.c create mode 100644 keyboards/rotor/rotor.h create mode 100644 keyboards/rotor/rules.mk create mode 100644 keyboards/runes/vaengr/config.h create mode 100644 keyboards/runes/vaengr/info.json create mode 100644 keyboards/runes/vaengr/keymaps/default/keymap.c create mode 100644 keyboards/runes/vaengr/keymaps/default/readme.md create mode 100644 keyboards/runes/vaengr/keymaps/via/keymap.c create mode 100644 keyboards/runes/vaengr/keymaps/via/rules.mk create mode 100644 keyboards/runes/vaengr/readme.md create mode 100644 keyboards/runes/vaengr/rules.mk create mode 100644 keyboards/runes/vaengr/vaengr.c create mode 100644 keyboards/runes/vaengr/vaengr.h create mode 100644 keyboards/ryanbaekr/rb86/config.h create mode 100644 keyboards/ryanbaekr/rb86/info.json create mode 100644 keyboards/ryanbaekr/rb86/keymaps/default/keymap.c create mode 100644 keyboards/ryanbaekr/rb86/keymaps/default/readme.md create mode 100644 keyboards/ryanbaekr/rb86/keymaps/via/keymap.c create mode 100644 keyboards/ryanbaekr/rb86/keymaps/via/rules.mk create mode 100644 keyboards/ryanbaekr/rb86/rb86.c create mode 100644 keyboards/ryanbaekr/rb86/rb86.h create mode 100644 keyboards/ryanbaekr/rb86/readme.md create mode 100644 keyboards/ryanbaekr/rb86/rules.mk create mode 100644 keyboards/sauce/mild/config.h create mode 100644 keyboards/sauce/mild/info.json create mode 100644 keyboards/sauce/mild/keymaps/default/keymap.c create mode 100644 keyboards/sauce/mild/keymaps/via/keymap.c create mode 100644 keyboards/sauce/mild/keymaps/via/rules.mk create mode 100644 keyboards/sauce/mild/mild.c create mode 100644 keyboards/sauce/mild/mild.h create mode 100644 keyboards/sauce/mild/readme.md create mode 100644 keyboards/sauce/mild/rules.mk create mode 100644 keyboards/sawnsprojects/krush/krush60/readme.md create mode 100644 keyboards/sawnsprojects/krush/krush60/solder/config.h create mode 100644 keyboards/sawnsprojects/krush/krush60/solder/info.json create mode 100644 keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_all/keymap.c create mode 100644 keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_all/readme.md create mode 100644 keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_7u/keymap.c create mode 100644 keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_7u/readme.md create mode 100644 keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow/keymap.c create mode 100644 keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow/readme.md create mode 100644 keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_7u/keymap.c create mode 100644 keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_7u/readme.md create mode 100644 keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs/keymap.c create mode 100644 keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs/readme.md create mode 100644 keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_7u/keymap.c create mode 100644 keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_7u/readme.md create mode 100644 keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_spc/keymap.c create mode 100644 keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_spc/readme.md create mode 100644 keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_spc/keymap.c create mode 100644 keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_spc/readme.md create mode 100644 keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs/keymap.c create mode 100644 keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs/readme.md create mode 100644 keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_7u/keymap.c create mode 100644 keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_7u/readme.md create mode 100644 keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_spc/keymap.c create mode 100644 keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_spc/readme.md create mode 100644 keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_spc/keymap.c create mode 100644 keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_spc/readme.md create mode 100644 keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan/keymap.c create mode 100644 keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan/readme.md create mode 100644 keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan_splt_bs/keymap.c create mode 100644 keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan_splt_bs/readme.md create mode 100644 keyboards/sawnsprojects/krush/krush60/solder/keymaps/default/keymap.c create mode 100644 keyboards/sawnsprojects/krush/krush60/solder/keymaps/default/readme.md create mode 100644 keyboards/sawnsprojects/krush/krush60/solder/keymaps/via/keymap.c create mode 100644 keyboards/sawnsprojects/krush/krush60/solder/keymaps/via/readme.md create mode 100644 keyboards/sawnsprojects/krush/krush60/solder/keymaps/via/rules.mk create mode 100644 keyboards/sawnsprojects/krush/krush60/solder/readme.md create mode 100644 keyboards/sawnsprojects/krush/krush60/solder/rules.mk create mode 100644 keyboards/sawnsprojects/krush/krush60/solder/solder.c create mode 100644 keyboards/sawnsprojects/krush/krush60/solder/solder.h create mode 100644 keyboards/sawnsprojects/krush/krush65/readme.md create mode 100644 keyboards/sawnsprojects/krush/krush65/solder/config.h create mode 100644 keyboards/sawnsprojects/krush/krush65/solder/encoder_actions.c create mode 100644 keyboards/sawnsprojects/krush/krush65/solder/encoder_actions.h create mode 100644 keyboards/sawnsprojects/krush/krush65/solder/info.json create mode 100644 keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker/keymap.c create mode 100644 keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker/readme.md create mode 100644 keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_all/keymap.c create mode 100644 keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_all/readme.md create mode 100644 keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_bs/keymap.c create mode 100644 keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_bs/readme.md create mode 100644 keyboards/sawnsprojects/krush/krush65/solder/keymaps/default/keymap.c create mode 100644 keyboards/sawnsprojects/krush/krush65/solder/keymaps/default/readme.md create mode 100644 keyboards/sawnsprojects/krush/krush65/solder/keymaps/sawns/keymap.c create mode 100644 keyboards/sawnsprojects/krush/krush65/solder/keymaps/sawns/readme.md create mode 100644 keyboards/sawnsprojects/krush/krush65/solder/keymaps/sawns/rules.mk create mode 100644 keyboards/sawnsprojects/krush/krush65/solder/keymaps/via/keymap.c create mode 100644 keyboards/sawnsprojects/krush/krush65/solder/keymaps/via/readme.md create mode 100644 keyboards/sawnsprojects/krush/krush65/solder/keymaps/via/rules.mk create mode 100644 keyboards/sawnsprojects/krush/krush65/solder/readme.md create mode 100644 keyboards/sawnsprojects/krush/krush65/solder/rules.mk create mode 100644 keyboards/sawnsprojects/krush/krush65/solder/solder.c create mode 100644 keyboards/sawnsprojects/krush/krush65/solder/solder.h create mode 100644 keyboards/sawnsprojects/satxri6key/config.h create mode 100644 keyboards/sawnsprojects/satxri6key/info.json create mode 100644 keyboards/sawnsprojects/satxri6key/keymaps/default/keymap.c create mode 100644 keyboards/sawnsprojects/satxri6key/keymaps/default/readme.md create mode 100644 keyboards/sawnsprojects/satxri6key/keymaps/default/rules.mk create mode 100644 keyboards/sawnsprojects/satxri6key/keymaps/via/keymap.c create mode 100644 keyboards/sawnsprojects/satxri6key/keymaps/via/rules.mk create mode 100644 keyboards/sawnsprojects/satxri6key/readme.md create mode 100644 keyboards/sawnsprojects/satxri6key/rules.mk create mode 100644 keyboards/sawnsprojects/satxri6key/satxri6key.c create mode 100644 keyboards/sawnsprojects/satxri6key/satxri6key.h create mode 100644 keyboards/sekigon/grs_70ec/config.h create mode 100644 keyboards/sekigon/grs_70ec/ec_switch_matrix.c create mode 100644 keyboards/sekigon/grs_70ec/ec_switch_matrix.h create mode 100644 keyboards/sekigon/grs_70ec/grs_70ec.c create mode 100644 keyboards/sekigon/grs_70ec/grs_70ec.h create mode 100644 keyboards/sekigon/grs_70ec/info.json create mode 100644 keyboards/sekigon/grs_70ec/keymaps/default/keymap.c create mode 100644 keyboards/sekigon/grs_70ec/matrix.c create mode 100644 keyboards/sekigon/grs_70ec/readme.md create mode 100644 keyboards/sekigon/grs_70ec/rules.mk create mode 100644 keyboards/senselessclay/ck60/ck60.c create mode 100644 keyboards/senselessclay/ck60/ck60.h create mode 100644 keyboards/senselessclay/ck60/config.h create mode 100644 keyboards/senselessclay/ck60/info.json create mode 100644 keyboards/senselessclay/ck60/keymaps/default/keymap.c create mode 100644 keyboards/senselessclay/ck60/keymaps/via/keymap.c create mode 100644 keyboards/senselessclay/ck60/keymaps/via/rules.mk create mode 100644 keyboards/senselessclay/ck60/readme.md create mode 100644 keyboards/senselessclay/ck60/rules.mk create mode 100644 keyboards/senselessclay/ck65/ck65.c create mode 100644 keyboards/senselessclay/ck65/ck65.h create mode 100644 keyboards/senselessclay/ck65/config.h create mode 100644 keyboards/senselessclay/ck65/info.json create mode 100644 keyboards/senselessclay/ck65/keymaps/default/keymap.c create mode 100644 keyboards/senselessclay/ck65/keymaps/via/keymap.c create mode 100644 keyboards/senselessclay/ck65/keymaps/via/rules.mk create mode 100644 keyboards/senselessclay/ck65/readme.md create mode 100644 keyboards/senselessclay/ck65/rules.mk create mode 100644 keyboards/sergiopoverony/creator_pro/config.h create mode 100644 keyboards/sergiopoverony/creator_pro/creator_pro.c create mode 100644 keyboards/sergiopoverony/creator_pro/creator_pro.h create mode 100644 keyboards/sergiopoverony/creator_pro/info.json create mode 100644 keyboards/sergiopoverony/creator_pro/keymaps/default/keymap.c create mode 100644 keyboards/sergiopoverony/creator_pro/keymaps/default/readme.md create mode 100644 keyboards/sergiopoverony/creator_pro/keymaps/via/keymap.c create mode 100644 keyboards/sergiopoverony/creator_pro/keymaps/via/rules.mk create mode 100644 keyboards/sergiopoverony/creator_pro/readme.md create mode 100644 keyboards/sergiopoverony/creator_pro/rules.mk create mode 100644 keyboards/sets3n/kk980/config.h create mode 100644 keyboards/sets3n/kk980/info.json create mode 100644 keyboards/sets3n/kk980/keymaps/default/keymap.c create mode 100644 keyboards/sets3n/kk980/keymaps/via/keymap.c create mode 100644 keyboards/sets3n/kk980/keymaps/via/rules.mk create mode 100644 keyboards/sets3n/kk980/kk980.c create mode 100644 keyboards/sets3n/kk980/kk980.h create mode 100644 keyboards/sets3n/kk980/readme.md create mode 100644 keyboards/sets3n/kk980/rules.mk create mode 100644 keyboards/signum/3_0/3_0.c create mode 100644 keyboards/signum/3_0/3_0.h create mode 100644 keyboards/signum/3_0/config.h delete mode 100644 keyboards/signum/3_0/elitec/info.json delete mode 100644 keyboards/signum/3_0/elitec/readme.md create mode 100644 keyboards/signum/3_0/info.json rename keyboards/signum/3_0/{elitec => }/keymaps/default/generate_km.py (100%) rename keyboards/signum/3_0/{elitec => }/keymaps/default/keymap.c (100%) rename keyboards/signum/3_0/{elitec => }/keymaps/default/km_template.txt (100%) rename keyboards/signum/3_0/{elitec => }/keymaps/default/layout.py (100%) rename keyboards/signum/3_0/{elitec => }/keymaps/default/readme.md (100%) rename keyboards/signum/3_0/{elitec => }/keymaps/default/rules.mk (100%) create mode 100644 keyboards/signum/3_0/keymaps/sgurenkov/config.h create mode 100644 keyboards/signum/3_0/keymaps/sgurenkov/keymap.c create mode 100644 keyboards/signum/3_0/keymaps/sgurenkov/rules.mk create mode 100644 keyboards/signum/3_0/readme.md create mode 100644 keyboards/signum/3_0/rules.mk create mode 100644 keyboards/signum/3_0/teensy/config.h create mode 100644 keyboards/signum/3_0/teensy/rules.mk create mode 100644 keyboards/signum/3_0/teensy/teensy.c create mode 100644 keyboards/signum/3_0/teensy/teensy.h delete mode 100644 keyboards/singa/keymaps/test/config.h create mode 100644 keyboards/skippys_custom_pcs/roopad/config.h create mode 100644 keyboards/skippys_custom_pcs/roopad/info.json create mode 100644 keyboards/skippys_custom_pcs/roopad/keymaps/default/keymap.c create mode 100644 keyboards/skippys_custom_pcs/roopad/keymaps/via/keymap.c create mode 100644 keyboards/skippys_custom_pcs/roopad/keymaps/via/rules.mk create mode 100644 keyboards/skippys_custom_pcs/roopad/readme.md create mode 100644 keyboards/skippys_custom_pcs/roopad/roopad.c create mode 100644 keyboards/skippys_custom_pcs/roopad/roopad.h create mode 100644 keyboards/skippys_custom_pcs/roopad/rules.mk create mode 100644 keyboards/smallkeyboard/config.h create mode 100644 keyboards/smallkeyboard/info.json create mode 100644 keyboards/smallkeyboard/keymaps/default/keymap.c create mode 100644 keyboards/smallkeyboard/keymaps/via/keymap.c create mode 100644 keyboards/smallkeyboard/keymaps/via/rules.mk create mode 100644 keyboards/smallkeyboard/readme.md create mode 100644 keyboards/smallkeyboard/rules.mk create mode 100644 keyboards/smallkeyboard/smallkeyboard.c create mode 100644 keyboards/smallkeyboard/smallkeyboard.h create mode 100644 keyboards/sneakbox/ava/ava.c create mode 100644 keyboards/sneakbox/ava/ava.h create mode 100644 keyboards/sneakbox/ava/config.h create mode 100644 keyboards/sneakbox/ava/info.json create mode 100644 keyboards/sneakbox/ava/keymaps/default/keymap.c create mode 100644 keyboards/sneakbox/ava/keymaps/via/keymap.c create mode 100644 keyboards/sneakbox/ava/keymaps/via/rules.mk create mode 100644 keyboards/sneakbox/ava/readme.md create mode 100644 keyboards/sneakbox/ava/rules.mk create mode 100755 keyboards/sofle/keyhive/config.h create mode 100644 keyboards/sofle/keyhive/info.json create mode 100755 keyboards/sofle/keyhive/keyhive.c create mode 100755 keyboards/sofle/keyhive/keyhive.h create mode 100755 keyboards/sofle/keyhive/readme.md create mode 100755 keyboards/sofle/keyhive/rules.mk create mode 100644 keyboards/sofle/keymaps/j4ckofalltrades/encoder.c create mode 100644 keyboards/sofle/keymaps/j4ckofalltrades/keymap.c create mode 100644 keyboards/sofle/keymaps/j4ckofalltrades/oled.c create mode 100644 keyboards/sofle/keymaps/j4ckofalltrades/readme.md create mode 100644 keyboards/sofle/keymaps/j4ckofalltrades/rules.mk create mode 100644 keyboards/sofle/keymaps/killmaster/config.h create mode 100644 keyboards/sofle/keymaps/killmaster/keymap.c create mode 100644 keyboards/sofle/keymaps/killmaster/readme.md create mode 100644 keyboards/sofle/keymaps/killmaster/rules.mk create mode 100644 keyboards/sofle/keymaps/manna-harbour_miryoku/config.h create mode 100644 keyboards/sofle/keymaps/manna-harbour_miryoku/keymap.c create mode 100644 keyboards/sofle/rev1/readme.md delete mode 100644 keyboards/space_space/config.h delete mode 100644 keyboards/space_space/info.json delete mode 100644 keyboards/space_space/keymaps/big_space/keymap.c delete mode 100644 keyboards/space_space/keymaps/default/keymap.c create mode 100644 keyboards/space_space/rev1/config.h create mode 100644 keyboards/space_space/rev1/info.json rename keyboards/space_space/{ => rev1}/keymaps/big_space/config.h (100%) create mode 100644 keyboards/space_space/rev1/keymaps/big_space/keymap.c rename keyboards/space_space/{ => rev1}/keymaps/big_space/rules.mk (100%) rename keyboards/space_space/{ => rev1}/keymaps/default/config.h (100%) create mode 100644 keyboards/space_space/rev1/keymaps/default/keymap.c rename keyboards/space_space/{ => rev1}/keymaps/default/rules.mk (100%) rename keyboards/space_space/{ => rev1}/keymaps/readme.md (100%) create mode 100644 keyboards/space_space/rev1/readme.md create mode 100644 keyboards/space_space/rev1/rev1.c create mode 100644 keyboards/space_space/rev1/rev1.h create mode 100644 keyboards/space_space/rev1/rules.mk create mode 100644 keyboards/space_space/rev2/config.h create mode 100644 keyboards/space_space/rev2/info.json create mode 100644 keyboards/space_space/rev2/keymaps/big_space/config.h create mode 100644 keyboards/space_space/rev2/keymaps/big_space/keymap.c create mode 100644 keyboards/space_space/rev2/keymaps/big_space/rules.mk create mode 100644 keyboards/space_space/rev2/keymaps/default/config.h create mode 100644 keyboards/space_space/rev2/keymaps/default/keymap.c create mode 100644 keyboards/space_space/rev2/keymaps/default/rules.mk create mode 100644 keyboards/space_space/rev2/keymaps/qpockets/config.h create mode 100644 keyboards/space_space/rev2/keymaps/qpockets/keymap.c create mode 100644 keyboards/space_space/rev2/keymaps/qpockets/rules.mk create mode 100644 keyboards/space_space/rev2/readme.md create mode 100644 keyboards/space_space/rev2/rev2.c create mode 100644 keyboards/space_space/rev2/rev2.h create mode 100644 keyboards/space_space/rev2/rules.mk delete mode 100644 keyboards/space_space/space_space.c delete mode 100644 keyboards/space_space/space_space.h delete mode 100644 keyboards/spaceman/pancake/feather/config.h delete mode 100644 keyboards/spaceman/pancake/feather/rules.mk delete mode 100644 keyboards/spaceman/pancake/info.json delete mode 100644 keyboards/spaceman/pancake/pancake.c delete mode 100644 keyboards/spaceman/pancake/promicro/rules.mk delete mode 100644 keyboards/spaceman/pancake/readme.md rename keyboards/spaceman/pancake/{ => rev1}/config.h (100%) create mode 100644 keyboards/spaceman/pancake/rev1/feather/config.h create mode 100644 keyboards/spaceman/pancake/rev1/feather/rules.mk create mode 100644 keyboards/spaceman/pancake/rev1/info.json rename keyboards/spaceman/pancake/{ => rev1}/keymaps/default/keymap.c (100%) rename keyboards/spaceman/pancake/{ => rev1}/keymaps/default/readme.md (100%) rename keyboards/spaceman/pancake/{ => rev1}/keymaps/via/keymap.c (100%) create mode 100644 keyboards/spaceman/pancake/rev1/keymaps/via/rules.mk rename keyboards/spaceman/pancake/{ => rev1}/promicro/config.h (100%) create mode 100644 keyboards/spaceman/pancake/rev1/promicro/rules.mk create mode 100644 keyboards/spaceman/pancake/rev1/readme.md create mode 100644 keyboards/spaceman/pancake/rev1/rev1.c rename keyboards/spaceman/pancake/{pancake.h => rev1/rev1.h} (100%) create mode 100644 keyboards/spaceman/pancake/rev2/config.h create mode 100644 keyboards/spaceman/pancake/rev2/info.json create mode 100644 keyboards/spaceman/pancake/rev2/keymaps/default/keymap.c create mode 100644 keyboards/spaceman/pancake/rev2/keymaps/default/readme.md create mode 100644 keyboards/spaceman/pancake/rev2/readme.md create mode 100644 keyboards/spaceman/pancake/rev2/rev2.c create mode 100644 keyboards/spaceman/pancake/rev2/rev2.h create mode 100644 keyboards/spaceman/pancake/rev2/rules.mk create mode 100644 keyboards/spacey/config.h create mode 100644 keyboards/spacey/info.json create mode 100644 keyboards/spacey/keymaps/default/keymap.c create mode 100644 keyboards/spacey/keymaps/default/readme.md create mode 100644 keyboards/spacey/readme.md create mode 100644 keyboards/spacey/rules.mk create mode 100644 keyboards/spacey/spacey.c create mode 100644 keyboards/spacey/spacey.h create mode 100644 keyboards/spiderisland/winry25tc/config.h create mode 100644 keyboards/spiderisland/winry25tc/info.json create mode 100644 keyboards/spiderisland/winry25tc/keymaps/default/keymap.c create mode 100644 keyboards/spiderisland/winry25tc/readme.md create mode 100644 keyboards/spiderisland/winry25tc/rules.mk create mode 100644 keyboards/spiderisland/winry25tc/winry25tc.c create mode 100644 keyboards/spiderisland/winry25tc/winry25tc.h create mode 100644 keyboards/splitkb/kyria/.noci rename keyboards/{ => splitkb}/kyria/config.h (100%) create mode 100644 keyboards/splitkb/kyria/info.json create mode 100644 keyboards/splitkb/kyria/keymaps/asapjockey/config.h create mode 100644 keyboards/splitkb/kyria/keymaps/asapjockey/keymap.c create mode 100644 keyboards/splitkb/kyria/keymaps/asapjockey/rules.mk create mode 100644 keyboards/splitkb/kyria/keymaps/benji/config.h rename keyboards/{ => splitkb}/kyria/keymaps/benji/glcdfont.c (100%) create mode 100644 keyboards/splitkb/kyria/keymaps/benji/keymap.c create mode 100644 keyboards/splitkb/kyria/keymaps/benji/readme.md create mode 100644 keyboards/splitkb/kyria/keymaps/benji/rules.mk create mode 100644 keyboards/splitkb/kyria/keymaps/cjuniet/config.h rename keyboards/{ => splitkb}/kyria/keymaps/cjuniet/default.json (100%) create mode 100644 keyboards/splitkb/kyria/keymaps/cjuniet/keymap.c create mode 100644 keyboards/splitkb/kyria/keymaps/cjuniet/rules.mk create mode 100644 keyboards/splitkb/kyria/keymaps/corodiak/config.h rename keyboards/{ => splitkb}/kyria/keymaps/corodiak/keymap.c (100%) create mode 100644 keyboards/splitkb/kyria/keymaps/corodiak/rules.mk create mode 100644 keyboards/splitkb/kyria/keymaps/cwebster2/config.h create mode 100644 keyboards/splitkb/kyria/keymaps/cwebster2/keymap.c create mode 100644 keyboards/splitkb/kyria/keymaps/cwebster2/rules.mk create mode 100644 keyboards/splitkb/kyria/keymaps/default/config.h create mode 100644 keyboards/splitkb/kyria/keymaps/default/keymap.c create mode 100644 keyboards/splitkb/kyria/keymaps/default/readme.md create mode 100644 keyboards/splitkb/kyria/keymaps/default/rules.mk create mode 100644 keyboards/splitkb/kyria/keymaps/drashna/config.h create mode 100644 keyboards/splitkb/kyria/keymaps/drashna/keymap.c create mode 100644 keyboards/splitkb/kyria/keymaps/drashna/rules.mk create mode 100644 keyboards/splitkb/kyria/keymaps/ghidalgo93/config.h create mode 100644 keyboards/splitkb/kyria/keymaps/ghidalgo93/keymap.c create mode 100644 keyboards/splitkb/kyria/keymaps/ghidalgo93/rules.mk rename keyboards/{ => splitkb}/kyria/keymaps/gotham/README.md (100%) create mode 100644 keyboards/splitkb/kyria/keymaps/gotham/config.h rename keyboards/{ => splitkb}/kyria/keymaps/gotham/encoder_utils.c (100%) rename keyboards/{ => splitkb}/kyria/keymaps/gotham/encoder_utils.h (100%) rename keyboards/{ => splitkb}/kyria/keymaps/gotham/keycodes.h (100%) create mode 100644 keyboards/splitkb/kyria/keymaps/gotham/keymap.c rename keyboards/{ => splitkb}/kyria/keymaps/gotham/oled_utils.c (100%) rename keyboards/{ => splitkb}/kyria/keymaps/gotham/oled_utils.h (100%) create mode 100644 keyboards/splitkb/kyria/keymaps/gotham/rules.mk rename keyboards/{ => splitkb}/kyria/keymaps/gotham/thumbstick.c (100%) rename keyboards/{ => splitkb}/kyria/keymaps/gotham/thumbstick.h (100%) create mode 100644 keyboards/splitkb/kyria/keymaps/j-inc/config.h create mode 100644 keyboards/splitkb/kyria/keymaps/j-inc/keymap.c create mode 100644 keyboards/splitkb/kyria/keymaps/j-inc/rules.mk create mode 100644 keyboards/splitkb/kyria/keymaps/jhelvy/config.h create mode 100644 keyboards/splitkb/kyria/keymaps/jhelvy/keymap.c create mode 100644 keyboards/splitkb/kyria/keymaps/jhelvy/rules.mk create mode 100644 keyboards/splitkb/kyria/keymaps/john-ezra/config.h create mode 100644 keyboards/splitkb/kyria/keymaps/john-ezra/glcdfont.c create mode 100644 keyboards/splitkb/kyria/keymaps/john-ezra/keymap.c create mode 100644 keyboards/splitkb/kyria/keymaps/john-ezra/oled.c create mode 100644 keyboards/splitkb/kyria/keymaps/john-ezra/readme.md create mode 100644 keyboards/splitkb/kyria/keymaps/john-ezra/rules.mk create mode 100644 keyboards/splitkb/kyria/keymaps/kejadlen/config.h rename keyboards/{ => splitkb}/kyria/keymaps/kejadlen/keymap.c (100%) create mode 100644 keyboards/splitkb/kyria/keymaps/kejadlen/rules.mk create mode 100644 keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/config.h create mode 100644 keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/keymap.c create mode 100644 keyboards/splitkb/kyria/keymaps/mattir/config.h create mode 100644 keyboards/splitkb/kyria/keymaps/mattir/keymap.c rename keyboards/{ => splitkb}/kyria/keymaps/mattir/readme.md (100%) create mode 100644 keyboards/splitkb/kyria/keymaps/mattir/rules.mk rename keyboards/{ => splitkb}/kyria/keymaps/mattir2/config.h (100%) rename keyboards/{ => splitkb}/kyria/keymaps/mattir2/keymap.c (100%) rename keyboards/{ => splitkb}/kyria/keymaps/mattir2/readme.md (100%) create mode 100644 keyboards/splitkb/kyria/keymaps/mattir2/rules.mk rename keyboards/{ => splitkb}/kyria/keymaps/ninjonas/README.md (100%) create mode 100644 keyboards/splitkb/kyria/keymaps/ninjonas/config.h rename keyboards/{ => splitkb}/kyria/keymaps/ninjonas/keymap.c (100%) create mode 100644 keyboards/splitkb/kyria/keymaps/ninjonas/oled.c create mode 100644 keyboards/splitkb/kyria/keymaps/ninjonas/rules.mk create mode 100644 keyboards/splitkb/kyria/keymaps/pierrec83/config.h rename keyboards/{ => splitkb}/kyria/keymaps/pierrec83/encoders.c (100%) rename keyboards/{ => splitkb}/kyria/keymaps/pierrec83/keymap.c (100%) rename keyboards/{ => splitkb}/kyria/keymaps/pierrec83/keymap.json (100%) rename keyboards/{ => splitkb}/kyria/keymaps/pierrec83/layers.h (100%) rename keyboards/{ => splitkb}/kyria/keymaps/pierrec83/readme.md (100%) create mode 100644 keyboards/splitkb/kyria/keymaps/pierrec83/rules.mk create mode 100644 keyboards/splitkb/kyria/keymaps/plattfot/README.md create mode 100644 keyboards/splitkb/kyria/keymaps/plattfot/config.h create mode 100644 keyboards/splitkb/kyria/keymaps/plattfot/keymap.c create mode 100644 keyboards/splitkb/kyria/keymaps/plattfot/rules.mk create mode 100644 keyboards/splitkb/kyria/keymaps/rmw/config.h rename keyboards/{ => splitkb}/kyria/keymaps/rmw/keymap.c (100%) rename keyboards/{ => splitkb}/kyria/keymaps/rmw/readme.md (100%) create mode 100644 keyboards/splitkb/kyria/keymaps/rmw/rules.mk create mode 100644 keyboards/splitkb/kyria/keymaps/shinze/config.h create mode 100644 keyboards/splitkb/kyria/keymaps/shinze/keymap.c create mode 100644 keyboards/splitkb/kyria/keymaps/shinze/rules.mk create mode 100644 keyboards/splitkb/kyria/keymaps/tessachka/config.h create mode 100644 keyboards/splitkb/kyria/keymaps/tessachka/keymap.c create mode 100644 keyboards/splitkb/kyria/keymaps/tessachka/rules.mk create mode 100644 keyboards/splitkb/kyria/keymaps/thomasbaart/config.h create mode 100644 keyboards/splitkb/kyria/keymaps/thomasbaart/keymap.c create mode 100644 keyboards/splitkb/kyria/keymaps/thomasbaart/rules.mk create mode 100644 keyboards/splitkb/kyria/keymaps/via/config.h create mode 100644 keyboards/splitkb/kyria/keymaps/via/keymap.c create mode 100644 keyboards/splitkb/kyria/keymaps/via/rules.mk create mode 100755 keyboards/splitkb/kyria/keymaps/winternebs/config.h rename keyboards/{ => splitkb}/kyria/keymaps/winternebs/glcdfont.c (100%) create mode 100755 keyboards/splitkb/kyria/keymaps/winternebs/keymap.c create mode 100755 keyboards/splitkb/kyria/keymaps/winternebs/rules.mk create mode 100644 keyboards/splitkb/kyria/keymaps/zigotica/config.h create mode 100644 keyboards/splitkb/kyria/keymaps/zigotica/keymap.c create mode 100644 keyboards/splitkb/kyria/keymaps/zigotica/oled.c create mode 100644 keyboards/splitkb/kyria/keymaps/zigotica/oled.h create mode 100644 keyboards/splitkb/kyria/keymaps/zigotica/rules.mk rename keyboards/{ => splitkb}/kyria/kyria.c (99%) rename keyboards/{ => splitkb}/kyria/kyria.h (96%) create mode 100644 keyboards/splitkb/kyria/readme.md create mode 100644 keyboards/splitkb/kyria/rev1/config.h create mode 100644 keyboards/splitkb/kyria/rev1/proton_c/chconf.h create mode 100644 keyboards/splitkb/kyria/rev1/proton_c/halconf.h create mode 100644 keyboards/splitkb/kyria/rev1/proton_c/mcuconf.h create mode 100644 keyboards/splitkb/kyria/rev1/proton_c/proton_c.c create mode 100644 keyboards/splitkb/kyria/rev1/proton_c/proton_c.h create mode 100644 keyboards/splitkb/kyria/rev1/proton_c/rules.mk create mode 100644 keyboards/splitkb/kyria/rev1/rev1.c create mode 100644 keyboards/splitkb/kyria/rev1/rev1.h create mode 100644 keyboards/splitkb/kyria/rev1/rules.mk create mode 100644 keyboards/splitkb/kyria/rules.mk create mode 100644 keyboards/splitkb/zima/keymaps/via/config.h create mode 100644 keyboards/splitkb/zima/keymaps/via/keymap.c create mode 100644 keyboards/splitkb/zima/keymaps/via/rules.mk create mode 100644 keyboards/splitography/config.h create mode 100644 keyboards/splitography/info.json create mode 100644 keyboards/splitography/keymaps/default/keymap.c create mode 100644 keyboards/splitography/keymaps/default/readme.md create mode 100644 keyboards/splitography/keymaps/default_with_ctl_shft_alt_switched/keymap.c create mode 100644 keyboards/splitography/keymaps/dvorak/keymap.c create mode 100644 keyboards/splitography/keymaps/jeandeaual/keymap.c create mode 100644 keyboards/splitography/keymaps/jeandeaual/readme.md create mode 100644 keyboards/splitography/keymaps/multi/keymap.c create mode 100644 keyboards/splitography/keymaps/multi/readme.md create mode 100644 keyboards/splitography/readme.md create mode 100644 keyboards/splitography/rules.mk create mode 100644 keyboards/splitography/splitography.c create mode 100644 keyboards/splitography/splitography.h delete mode 100644 keyboards/staryu/info.json delete mode 100644 keyboards/staryu/readme.md delete mode 100755 keyboards/staryu/rules.mk create mode 100644 keyboards/stratos/config.h create mode 100644 keyboards/stratos/info.json create mode 100644 keyboards/stratos/keymaps/ansi_arrows/keymap.c create mode 100644 keyboards/stratos/keymaps/ansi_split_bs_rshift/keymap.c create mode 100644 keyboards/stratos/keymaps/default/keymap.c create mode 100644 keyboards/stratos/keymaps/iso/keymap.c create mode 100644 keyboards/stratos/keymaps/iso_split_bs_rshift/keymap.c create mode 100644 keyboards/stratos/keymaps/iso_tsangan/keymap.c create mode 100644 keyboards/stratos/keymaps/tsangan/keymap.c create mode 100644 keyboards/stratos/keymaps/tsangan_hhkb/keymap.c create mode 100644 keyboards/stratos/keymaps/via/keymap.c create mode 100644 keyboards/stratos/keymaps/via/rules.mk create mode 100644 keyboards/stratos/readme.md create mode 100644 keyboards/stratos/rules.mk create mode 100644 keyboards/stratos/stratos.c create mode 100644 keyboards/stratos/stratos.h create mode 100644 keyboards/studiokestra/bourgeau/bourgeau.c create mode 100644 keyboards/studiokestra/bourgeau/bourgeau.h create mode 100644 keyboards/studiokestra/bourgeau/config.h create mode 100644 keyboards/studiokestra/bourgeau/info.json create mode 100644 keyboards/studiokestra/bourgeau/keymaps/default/keymap.c create mode 100644 keyboards/studiokestra/bourgeau/keymaps/default/readme.md create mode 100644 keyboards/studiokestra/bourgeau/keymaps/via/keymap.c create mode 100644 keyboards/studiokestra/bourgeau/keymaps/via/readme.md create mode 100644 keyboards/studiokestra/bourgeau/keymaps/via/rules.mk create mode 100644 keyboards/studiokestra/bourgeau/readme.md create mode 100644 keyboards/studiokestra/bourgeau/rules.mk create mode 100644 keyboards/studiokestra/galatea/config.h create mode 100644 keyboards/studiokestra/galatea/galatea.c create mode 100644 keyboards/studiokestra/galatea/galatea.h create mode 100644 keyboards/studiokestra/galatea/keymaps/default/keymap.c create mode 100644 keyboards/studiokestra/galatea/keymaps/default/readme.md create mode 100644 keyboards/studiokestra/galatea/keymaps/via/keymap.c create mode 100644 keyboards/studiokestra/galatea/keymaps/via/readme.md create mode 100644 keyboards/studiokestra/galatea/keymaps/via/rules.mk create mode 100644 keyboards/studiokestra/galatea/readme.md create mode 100644 keyboards/studiokestra/galatea/rev1/config.h create mode 100644 keyboards/studiokestra/galatea/rev1/info.json create mode 100644 keyboards/studiokestra/galatea/rev1/rev1.c create mode 100644 keyboards/studiokestra/galatea/rev1/rev1.h create mode 100644 keyboards/studiokestra/galatea/rev1/rules.mk create mode 100644 keyboards/studiokestra/galatea/rev2/config.h create mode 100644 keyboards/studiokestra/galatea/rev2/info.json create mode 100644 keyboards/studiokestra/galatea/rev2/rev2.c create mode 100644 keyboards/studiokestra/galatea/rev2/rev2.h create mode 100644 keyboards/studiokestra/galatea/rev2/rules.mk create mode 100644 keyboards/studiokestra/galatea/rules.mk create mode 100644 keyboards/superuser/ext/config.h create mode 100644 keyboards/superuser/ext/ext.c create mode 100644 keyboards/superuser/ext/ext.h create mode 100644 keyboards/superuser/ext/info.json create mode 100644 keyboards/superuser/ext/keymaps/default/keymap.c create mode 100644 keyboards/superuser/ext/keymaps/default/readme.md create mode 100644 keyboards/superuser/ext/keymaps/via/keymap.c create mode 100644 keyboards/superuser/ext/keymaps/via/readme.md create mode 100644 keyboards/superuser/ext/keymaps/via/rules.mk create mode 100644 keyboards/superuser/ext/readme.md create mode 100644 keyboards/superuser/ext/rules.mk create mode 100644 keyboards/superuser/frl/config.h create mode 100644 keyboards/superuser/frl/frl.c create mode 100644 keyboards/superuser/frl/frl.h create mode 100644 keyboards/superuser/frl/info.json create mode 100644 keyboards/superuser/frl/keymaps/default/keymap.c create mode 100644 keyboards/superuser/frl/keymaps/default/readme.md create mode 100644 keyboards/superuser/frl/keymaps/via/keymap.c create mode 100644 keyboards/superuser/frl/keymaps/via/readme.md create mode 100644 keyboards/superuser/frl/keymaps/via/rules.mk create mode 100644 keyboards/superuser/frl/readme.md create mode 100644 keyboards/superuser/frl/rules.mk create mode 100644 keyboards/superuser/tkl/config.h create mode 100644 keyboards/superuser/tkl/info.json create mode 100644 keyboards/superuser/tkl/keymaps/default/keymap.c create mode 100644 keyboards/superuser/tkl/keymaps/default/readme.md create mode 100644 keyboards/superuser/tkl/keymaps/via/keymap.c create mode 100644 keyboards/superuser/tkl/keymaps/via/readme.md create mode 100644 keyboards/superuser/tkl/keymaps/via/rules.mk create mode 100644 keyboards/superuser/tkl/readme.md create mode 100644 keyboards/superuser/tkl/rules.mk create mode 100644 keyboards/superuser/tkl/tkl.c create mode 100644 keyboards/superuser/tkl/tkl.h delete mode 100644 keyboards/sx60/i2cmaster.h delete mode 100644 keyboards/sx60/twimaster.c create mode 100644 keyboards/synapse/config.h create mode 100644 keyboards/synapse/info.json create mode 100644 keyboards/synapse/keymaps/7u_space/config.h create mode 100644 keyboards/synapse/keymaps/7u_space/keymap.c create mode 100644 keyboards/synapse/keymaps/7u_space/rules.mk create mode 100644 keyboards/synapse/keymaps/default/config.h create mode 100644 keyboards/synapse/keymaps/default/keymap.c create mode 100644 keyboards/synapse/keymaps/default/rules.mk create mode 100644 keyboards/synapse/readme.md create mode 100644 keyboards/synapse/rules.mk create mode 100644 keyboards/synapse/synapse.c create mode 100644 keyboards/synapse/synapse.h create mode 100644 keyboards/takashicompany/center_enter/center_enter.c create mode 100644 keyboards/takashicompany/center_enter/center_enter.h create mode 100644 keyboards/takashicompany/center_enter/config.h create mode 100644 keyboards/takashicompany/center_enter/info.json create mode 100644 keyboards/takashicompany/center_enter/keymaps/default/keymap.c create mode 100644 keyboards/takashicompany/center_enter/keymaps/via/config.h create mode 100644 keyboards/takashicompany/center_enter/keymaps/via/keymap.c create mode 100644 keyboards/takashicompany/center_enter/keymaps/via/rules.mk create mode 100644 keyboards/takashicompany/center_enter/readme.md create mode 100644 keyboards/takashicompany/center_enter/rules.mk create mode 100644 keyboards/takashicompany/compacx/compacx.c create mode 100644 keyboards/takashicompany/compacx/compacx.h create mode 100644 keyboards/takashicompany/compacx/config.h create mode 100644 keyboards/takashicompany/compacx/info.json create mode 100644 keyboards/takashicompany/compacx/keymaps/default/keymap.c create mode 100644 keyboards/takashicompany/compacx/keymaps/via/config.h create mode 100644 keyboards/takashicompany/compacx/keymaps/via/keymap.c create mode 100644 keyboards/takashicompany/compacx/keymaps/via/rules.mk create mode 100644 keyboards/takashicompany/compacx/readme.md create mode 100644 keyboards/takashicompany/compacx/rules.mk create mode 100644 keyboards/takashicompany/dogtag/config.h create mode 100644 keyboards/takashicompany/dogtag/dogtag.c create mode 100644 keyboards/takashicompany/dogtag/dogtag.h create mode 100644 keyboards/takashicompany/dogtag/info.json create mode 100644 keyboards/takashicompany/dogtag/keymaps/default/keymap.c create mode 100644 keyboards/takashicompany/dogtag/keymaps/via/config.h create mode 100644 keyboards/takashicompany/dogtag/keymaps/via/keymap.c create mode 100644 keyboards/takashicompany/dogtag/keymaps/via/rules.mk create mode 100644 keyboards/takashicompany/dogtag/readme.md create mode 100644 keyboards/takashicompany/dogtag/rules.mk create mode 100644 keyboards/takashicompany/endzone34/config.h create mode 100644 keyboards/takashicompany/endzone34/endzone34.c create mode 100644 keyboards/takashicompany/endzone34/endzone34.h create mode 100644 keyboards/takashicompany/endzone34/info.json create mode 100644 keyboards/takashicompany/endzone34/keymaps/default/keymap.c create mode 100644 keyboards/takashicompany/endzone34/keymaps/via/config.h create mode 100644 keyboards/takashicompany/endzone34/keymaps/via/keymap.c create mode 100644 keyboards/takashicompany/endzone34/keymaps/via/rules.mk create mode 100644 keyboards/takashicompany/endzone34/readme.md create mode 100644 keyboards/takashicompany/endzone34/rules.mk create mode 100644 keyboards/takashicompany/heavy_left/config.h create mode 100644 keyboards/takashicompany/heavy_left/heavy_left.c create mode 100644 keyboards/takashicompany/heavy_left/heavy_left.h create mode 100644 keyboards/takashicompany/heavy_left/info.json create mode 100644 keyboards/takashicompany/heavy_left/keymaps/default/keymap.c create mode 100644 keyboards/takashicompany/heavy_left/keymaps/via/keymap.c create mode 100644 keyboards/takashicompany/heavy_left/keymaps/via/rules.mk create mode 100644 keyboards/takashicompany/heavy_left/readme.md create mode 100644 keyboards/takashicompany/heavy_left/rules.mk create mode 100644 keyboards/takashicompany/qoolee/config.h create mode 100644 keyboards/takashicompany/qoolee/info.json create mode 100644 keyboards/takashicompany/qoolee/keymaps/default/keymap.c create mode 100644 keyboards/takashicompany/qoolee/keymaps/via/config.h create mode 100644 keyboards/takashicompany/qoolee/keymaps/via/keymap.c create mode 100644 keyboards/takashicompany/qoolee/keymaps/via/rules.mk create mode 100644 keyboards/takashicompany/qoolee/qoolee.c create mode 100644 keyboards/takashicompany/qoolee/qoolee.h create mode 100644 keyboards/takashicompany/qoolee/readme.md create mode 100644 keyboards/takashicompany/qoolee/rules.mk create mode 100644 keyboards/team0110/p1800fl/config.h create mode 100644 keyboards/team0110/p1800fl/info.json create mode 100644 keyboards/team0110/p1800fl/keymaps/default/keymap.c rename keyboards/{handwired => team0110}/p1800fl/keymaps/default/readme.md (100%) create mode 100644 keyboards/team0110/p1800fl/keymaps/via/keymap.c create mode 100644 keyboards/team0110/p1800fl/keymaps/via/readme.md create mode 100644 keyboards/team0110/p1800fl/keymaps/via/rules.mk rename keyboards/{handwired => team0110}/p1800fl/p1800fl.c (100%) rename keyboards/{handwired => team0110}/p1800fl/p1800fl.h (100%) create mode 100644 keyboards/team0110/p1800fl/readme.md create mode 100644 keyboards/team0110/p1800fl/rules.mk create mode 100644 keyboards/teleport/numpad/config.h create mode 100644 keyboards/teleport/numpad/info.json create mode 100644 keyboards/teleport/numpad/keymaps/default/keymap.c create mode 100644 keyboards/teleport/numpad/keymaps/via/keymap.c create mode 100644 keyboards/teleport/numpad/keymaps/via/rules.mk create mode 100644 keyboards/teleport/numpad/numpad.c create mode 100644 keyboards/teleport/numpad/numpad.h create mode 100644 keyboards/teleport/numpad/readme.md create mode 100644 keyboards/teleport/numpad/rules.mk delete mode 100644 keyboards/tgr/jane/info.json delete mode 100644 keyboards/tgr/jane/jane.c delete mode 100644 keyboards/tgr/jane/rules.mk rename keyboards/tgr/jane/{ => v2}/config.h (100%) create mode 100644 keyboards/tgr/jane/v2/info.json rename keyboards/tgr/jane/{ => v2}/keymaps/default/config.h (100%) rename keyboards/tgr/jane/{ => v2}/keymaps/default/keymap.c (100%) rename keyboards/tgr/jane/{ => v2}/keymaps/default/readme.md (100%) rename keyboards/tgr/jane/{ => v2}/keymaps/via/config.h (100%) rename keyboards/tgr/jane/{ => v2}/keymaps/via/keymap.c (100%) create mode 100644 keyboards/tgr/jane/v2/keymaps/via/rules.mk rename keyboards/tgr/jane/{ => v2}/readme.md (100%) create mode 100644 keyboards/tgr/jane/v2/rules.mk create mode 100644 keyboards/tgr/jane/v2/v2.c rename keyboards/tgr/jane/{jane.h => v2/v2.h} (100%) create mode 100644 keyboards/tgr/jane/v2ce/config.h create mode 100644 keyboards/tgr/jane/v2ce/info.json create mode 100644 keyboards/tgr/jane/v2ce/keymaps/default/keymap.c create mode 100644 keyboards/tgr/jane/v2ce/keymaps/default/readme.md create mode 100644 keyboards/tgr/jane/v2ce/keymaps/via/config.h create mode 100644 keyboards/tgr/jane/v2ce/keymaps/via/keymap.c create mode 100644 keyboards/tgr/jane/v2ce/keymaps/via/rules.mk create mode 100644 keyboards/tgr/jane/v2ce/readme.md create mode 100644 keyboards/tgr/jane/v2ce/rules.mk create mode 100644 keyboards/tgr/jane/v2ce/v2ce.c create mode 100644 keyboards/tgr/jane/v2ce/v2ce.h rename keyboards/the_uni/{ => pro_micro}/config.h (100%) create mode 100644 keyboards/the_uni/pro_micro/pro_micro.c rename keyboards/the_uni/{the_uni.h => pro_micro/pro_micro.h} (100%) create mode 100644 keyboards/the_uni/pro_micro/readme.md create mode 100644 keyboards/the_uni/pro_micro/rules.mk delete mode 100644 keyboards/the_uni/rules.mk delete mode 100644 keyboards/the_uni/the_uni.c create mode 100644 keyboards/the_uni/usb_c/config.h create mode 100644 keyboards/the_uni/usb_c/readme.md create mode 100644 keyboards/the_uni/usb_c/rules.mk create mode 100644 keyboards/the_uni/usb_c/usb_c.c create mode 100644 keyboards/the_uni/usb_c/usb_c.h create mode 100644 keyboards/thevankeyboards/minivan/keymaps/josjoha/base_hebrew.c create mode 100644 keyboards/thevankeyboards/minivan/keymaps/josjoha/base_hebrew.h create mode 100644 keyboards/thevankeyboards/minivan/keymaps/josjoha/base_hebrew.md create mode 100644 keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_hebrew.h create mode 100644 keyboards/tiger910/config.h create mode 100644 keyboards/tiger910/info.json create mode 100644 keyboards/tiger910/keymaps/default/keymap.c create mode 100644 keyboards/tiger910/keymaps/via/keymap.c create mode 100644 keyboards/tiger910/keymaps/via/rules.mk create mode 100644 keyboards/tiger910/readme.md create mode 100644 keyboards/tiger910/rules.mk create mode 100644 keyboards/tiger910/tiger910.c create mode 100644 keyboards/tiger910/tiger910.h create mode 100644 keyboards/tkw/grandiceps/rev2/config.h create mode 100644 keyboards/tkw/grandiceps/rev2/rules.mk delete mode 100644 keyboards/tokyo60/info.json delete mode 100644 keyboards/tokyo60/readme.md delete mode 100644 keyboards/tokyo60/rules.mk delete mode 100644 keyboards/tokyo60/tokyo60.c rename keyboards/{ => tokyokeyboard}/tokyo60/config.h (100%) create mode 100644 keyboards/tokyokeyboard/tokyo60/info.json rename keyboards/{ => tokyokeyboard}/tokyo60/keymaps/default/config.h (100%) rename keyboards/{ => tokyokeyboard}/tokyo60/keymaps/default/keymap.c (100%) rename keyboards/{ => tokyokeyboard}/tokyo60/keymaps/swappedBottomRow/config.h (100%) rename keyboards/{ => tokyokeyboard}/tokyo60/keymaps/swappedBottomRow/keymap.c (100%) rename keyboards/{ => tokyokeyboard}/tokyo60/keymaps/via/keymap.c (100%) create mode 100644 keyboards/tokyokeyboard/tokyo60/keymaps/via/rules.mk create mode 100644 keyboards/tokyokeyboard/tokyo60/readme.md create mode 100644 keyboards/tokyokeyboard/tokyo60/rules.mk create mode 100644 keyboards/tokyokeyboard/tokyo60/tokyo60.c rename keyboards/{ => tokyokeyboard}/tokyo60/tokyo60.h (100%) create mode 100644 keyboards/torn/keymaps/manna-harbour_miryoku/config.h create mode 100644 keyboards/torn/keymaps/manna-harbour_miryoku/keymap.c create mode 100644 keyboards/treasure/type9s2/config.h create mode 100644 keyboards/treasure/type9s2/info.json create mode 100644 keyboards/treasure/type9s2/keymaps/default/keymap.c create mode 100644 keyboards/treasure/type9s2/keymaps/default/readme.md create mode 100644 keyboards/treasure/type9s2/keymaps/via/keymap.c create mode 100644 keyboards/treasure/type9s2/keymaps/via/readme.md create mode 100644 keyboards/treasure/type9s2/keymaps/via/rules.mk create mode 100644 keyboards/treasure/type9s2/readme.md create mode 100644 keyboards/treasure/type9s2/rules.mk create mode 100644 keyboards/treasure/type9s2/type9s2.c create mode 100644 keyboards/treasure/type9s2/type9s2.h create mode 100644 keyboards/tronguylabs/m122_3270/blackpill/config.h create mode 100644 keyboards/tronguylabs/m122_3270/blackpill/readme.md create mode 100644 keyboards/tronguylabs/m122_3270/blackpill/rules.mk create mode 100644 keyboards/tronguylabs/m122_3270/bluepill/chconf.h create mode 100644 keyboards/tronguylabs/m122_3270/bluepill/config.h create mode 100644 keyboards/tronguylabs/m122_3270/bluepill/readme.md create mode 100644 keyboards/tronguylabs/m122_3270/bluepill/rules.mk create mode 100644 keyboards/tronguylabs/m122_3270/config.h create mode 100644 keyboards/tronguylabs/m122_3270/info.json create mode 100644 keyboards/tronguylabs/m122_3270/keymaps/default/keymap.c create mode 100644 keyboards/tronguylabs/m122_3270/keymaps/default/readme.md create mode 100644 keyboards/tronguylabs/m122_3270/m122_3270.c create mode 100644 keyboards/tronguylabs/m122_3270/m122_3270.h create mode 100644 keyboards/tronguylabs/m122_3270/readme.md create mode 100644 keyboards/tronguylabs/m122_3270/teensy/config.h create mode 100644 keyboards/tronguylabs/m122_3270/teensy/readme.md create mode 100644 keyboards/tronguylabs/m122_3270/teensy/rules.mk create mode 100644 keyboards/tw40/keymaps/via/keymap.c create mode 100644 keyboards/tw40/keymaps/via/rules.mk create mode 100644 keyboards/txuu/config.h create mode 100644 keyboards/txuu/info.json create mode 100644 keyboards/txuu/keymaps/default/keymap.c create mode 100644 keyboards/txuu/keymaps/via/keymap.c create mode 100644 keyboards/txuu/keymaps/via/rules.mk create mode 100644 keyboards/txuu/readme.md create mode 100644 keyboards/txuu/rules.mk create mode 100644 keyboards/txuu/txuu.c create mode 100644 keyboards/txuu/txuu.h create mode 100644 keyboards/ungodly/launch_pad/keymaps/via/keymap.c create mode 100644 keyboards/ungodly/launch_pad/keymaps/via/rules.mk create mode 100644 keyboards/ungodly/launch_pad/keymaps/warzone/keymap.c create mode 100644 keyboards/ungodly/launch_pad/keymaps/warzone/rules.mk create mode 100644 keyboards/unicomp/classic_ultracl_post_2013/info.json create mode 100644 keyboards/unicomp/classic_ultracl_post_2013/keymaps/default/keymap.c create mode 100644 keyboards/unicomp/classic_ultracl_post_2013/keymaps/default/readme.md create mode 100644 keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/config.h create mode 100644 keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/overnumpad_1xb.c create mode 100644 keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/overnumpad_1xb.h create mode 100644 keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/readme.md create mode 100644 keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/rules.mk create mode 100644 keyboards/unicomp/classic_ultracl_pre_2013/info.json create mode 100644 keyboards/unicomp/classic_ultracl_pre_2013/keymaps/default/keymap.c create mode 100644 keyboards/unicomp/classic_ultracl_pre_2013/keymaps/default/readme.md create mode 100644 keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/config.h create mode 100644 keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/overnumpad_1xb.c create mode 100644 keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/overnumpad_1xb.h create mode 100644 keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/readme.md create mode 100644 keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/rules.mk create mode 100644 keyboards/unicomp/spacesaver_m_post_2013/info.json create mode 100644 keyboards/unicomp/spacesaver_m_post_2013/keymaps/default/keymap.c create mode 100644 keyboards/unicomp/spacesaver_m_post_2013/keymaps/default/readme.md create mode 100644 keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/config.h create mode 100644 keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/overnumpad_1xb.c create mode 100644 keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/overnumpad_1xb.h create mode 100644 keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/readme.md create mode 100644 keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/rules.mk create mode 100644 keyboards/unicomp/spacesaver_m_pre_2013/info.json create mode 100644 keyboards/unicomp/spacesaver_m_pre_2013/keymaps/default/keymap.c create mode 100644 keyboards/unicomp/spacesaver_m_pre_2013/keymaps/default/readme.md create mode 100644 keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/config.h create mode 100644 keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/overnumpad_1xb.c create mode 100644 keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/overnumpad_1xb.h create mode 100644 keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/readme.md create mode 100644 keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/rules.mk create mode 100644 keyboards/v4n4g0rth0n/config.h create mode 100644 keyboards/v4n4g0rth0n/info.json create mode 100644 keyboards/v4n4g0rth0n/readme.md create mode 100644 keyboards/v4n4g0rth0n/v1/config.h create mode 100644 keyboards/v4n4g0rth0n/v1/keymaps/default/keymap.c create mode 100644 keyboards/v4n4g0rth0n/v1/readme.md create mode 100644 keyboards/v4n4g0rth0n/v1/rules.mk create mode 100644 keyboards/v4n4g0rth0n/v2/config.h create mode 100644 keyboards/v4n4g0rth0n/v2/keymaps/default/keymap.c create mode 100644 keyboards/v4n4g0rth0n/v2/readme.md create mode 100644 keyboards/v4n4g0rth0n/v2/rules.mk create mode 100644 keyboards/v4n4g0rth0n/v4n4g0rth0n.c create mode 100644 keyboards/v4n4g0rth0n/v4n4g0rth0n.h create mode 100644 keyboards/viktus/sp_mini/config.h create mode 100644 keyboards/viktus/sp_mini/info.json create mode 100644 keyboards/viktus/sp_mini/keymaps/default/keymap.c create mode 100644 keyboards/viktus/sp_mini/keymaps/peott-fr/keymap.c create mode 100644 keyboards/viktus/sp_mini/keymaps/via/keymap.c create mode 100644 keyboards/viktus/sp_mini/keymaps/via/rules.mk create mode 100644 keyboards/viktus/sp_mini/readme.md create mode 100644 keyboards/viktus/sp_mini/rules.mk create mode 100644 keyboards/viktus/sp_mini/sp_mini.c create mode 100644 keyboards/viktus/sp_mini/sp_mini.h delete mode 100644 keyboards/vinta/config.h delete mode 100644 keyboards/vinta/info.json delete mode 100644 keyboards/vinta/keymaps/default/keymap.c delete mode 100644 keyboards/vinta/readme.md delete mode 100644 keyboards/vinta/rules.mk delete mode 100644 keyboards/vinta/vinta.c delete mode 100644 keyboards/vinta/vinta.h delete mode 100644 keyboards/vision_division/Potential Layouts.txt delete mode 100644 keyboards/vision_division/config.h delete mode 100644 keyboards/vision_division/keymaps/default/config.h delete mode 100644 keyboards/vision_division/keymaps/default/keymap.c delete mode 100644 keyboards/vision_division/keymaps/default/readme.md delete mode 100644 keyboards/vision_division/matrix_types.h delete mode 100644 keyboards/vision_division/readme.md delete mode 100644 keyboards/vision_division/rules.mk delete mode 100644 keyboards/vision_division/vision_division.c delete mode 100644 keyboards/vision_division/vision_division.h create mode 100644 keyboards/vitamins_included/keymaps/via/config.h delete mode 100644 keyboards/waldo/keymaps/default_split_shft_bck/config.h create mode 100644 keyboards/wanten/config.h create mode 100644 keyboards/wanten/info.json create mode 100644 keyboards/wanten/keymaps/2u_bars/config.h create mode 100644 keyboards/wanten/keymaps/2u_bars/keymap.c create mode 100644 keyboards/wanten/keymaps/2u_bars/rules.mk create mode 100644 keyboards/wanten/keymaps/625_bar/config.h create mode 100644 keyboards/wanten/keymaps/625_bar/keymap.c create mode 100644 keyboards/wanten/keymaps/625_bar/rules.mk create mode 100644 keyboards/wanten/keymaps/default/config.h create mode 100644 keyboards/wanten/keymaps/default/keymap.c create mode 100644 keyboards/wanten/keymaps/default/readme.md create mode 100644 keyboards/wanten/keymaps/default/rules.mk create mode 100644 keyboards/wanten/readme.md create mode 100644 keyboards/wanten/rules.mk create mode 100644 keyboards/wanten/wanten.c create mode 100644 keyboards/wanten/wanten.h create mode 100644 keyboards/wekey/polaris/config.h create mode 100644 keyboards/wekey/polaris/info.json create mode 100644 keyboards/wekey/polaris/keymaps/default/keymap.c create mode 100644 keyboards/wekey/polaris/keymaps/default/readme.md create mode 100644 keyboards/wekey/polaris/keymaps/via/keymap.c create mode 100644 keyboards/wekey/polaris/keymaps/via/readme.md create mode 100644 keyboards/wekey/polaris/keymaps/via/rules.mk create mode 100644 keyboards/wekey/polaris/polaris.c create mode 100644 keyboards/wekey/polaris/polaris.h create mode 100644 keyboards/wekey/polaris/readme.md create mode 100644 keyboards/wekey/polaris/rules.mk create mode 100644 keyboards/wekey/we27/config.h create mode 100644 keyboards/wekey/we27/encoder_actions.c create mode 100644 keyboards/wekey/we27/encoder_actions.h create mode 100644 keyboards/wekey/we27/info.json create mode 100644 keyboards/wekey/we27/keymaps/default/keymap.c create mode 100644 keyboards/wekey/we27/keymaps/default/readme.md create mode 100644 keyboards/wekey/we27/keymaps/via/keymap.c create mode 100644 keyboards/wekey/we27/keymaps/via/readme.md create mode 100644 keyboards/wekey/we27/keymaps/via/rules.mk create mode 100644 keyboards/wekey/we27/readme.md create mode 100644 keyboards/wekey/we27/rgb_matrix_kb.inc create mode 100644 keyboards/wekey/we27/rules.mk create mode 100644 keyboards/wekey/we27/we27.c create mode 100644 keyboards/wekey/we27/we27.h delete mode 100644 keyboards/whitefox/gfxconf.h delete mode 100644 keyboards/whitefox/visualizer.c rename keyboards/wilba_tech/zeal60/keymaps/tusing/{Makefile => rules.mk} (100%) create mode 100644 keyboards/wings42/config.h create mode 100644 keyboards/wings42/readme.md create mode 100644 keyboards/wings42/rev1/config.h create mode 100644 keyboards/wings42/rev1/keymaps/default/keymap.c create mode 100644 keyboards/wings42/rev1/keymaps/default/readme.md create mode 100644 keyboards/wings42/rev1/keymaps/via/keymap.c create mode 100644 keyboards/wings42/rev1/keymaps/via/rules.mk create mode 100644 keyboards/wings42/rev1/readme.md create mode 100644 keyboards/wings42/rev1/rev1.c create mode 100644 keyboards/wings42/rev1/rev1.h create mode 100644 keyboards/wings42/rev1/rules.mk create mode 100644 keyboards/wings42/rev1_extkeys/config.h create mode 100644 keyboards/wings42/rev1_extkeys/keymaps/default/keymap.c create mode 100644 keyboards/wings42/rev1_extkeys/keymaps/default/readme.md create mode 100644 keyboards/wings42/rev1_extkeys/keymaps/via/keymap.c create mode 100644 keyboards/wings42/rev1_extkeys/keymaps/via/rules.mk create mode 100644 keyboards/wings42/rev1_extkeys/readme.md create mode 100644 keyboards/wings42/rev1_extkeys/rev1_extkeys.c create mode 100644 keyboards/wings42/rev1_extkeys/rev1_extkeys.h create mode 100644 keyboards/wings42/rev1_extkeys/rules.mk create mode 100644 keyboards/wings42/rules.mk create mode 100644 keyboards/wings42/wings42.c create mode 100644 keyboards/wings42/wings42.h create mode 100644 keyboards/winkeyless/b87/b87.c create mode 100644 keyboards/winkeyless/b87/b87.h create mode 100644 keyboards/winkeyless/b87/config.h create mode 100644 keyboards/winkeyless/b87/info.json create mode 100644 keyboards/winkeyless/b87/keymaps/default/keymap.c create mode 100644 keyboards/winkeyless/b87/keymaps/via/config.h create mode 100644 keyboards/winkeyless/b87/keymaps/via/keymap.c create mode 100644 keyboards/winkeyless/b87/keymaps/via/rules.mk create mode 100644 keyboards/winkeyless/b87/readme.md create mode 100644 keyboards/winkeyless/b87/rules.mk create mode 100644 keyboards/winkeyless/bface/keymaps/p3lim/rules.mk create mode 100644 keyboards/wolf/kuku65/config.h create mode 100644 keyboards/wolf/kuku65/info.json create mode 100644 keyboards/wolf/kuku65/keymaps/default/keymap.c create mode 100644 keyboards/wolf/kuku65/keymaps/via/keymap.c create mode 100644 keyboards/wolf/kuku65/keymaps/via/rules.mk create mode 100644 keyboards/wolf/kuku65/kuku65.c create mode 100644 keyboards/wolf/kuku65/kuku65.h create mode 100644 keyboards/wolf/kuku65/readme.md create mode 100644 keyboards/wolf/kuku65/rules.mk create mode 100644 keyboards/wolf/ts60/config.h create mode 100644 keyboards/wolf/ts60/info.json create mode 100644 keyboards/wolf/ts60/keymaps/default/keymap.c create mode 100644 keyboards/wolf/ts60/keymaps/via/keymap.c create mode 100644 keyboards/wolf/ts60/keymaps/via/rules.mk create mode 100644 keyboards/wolf/ts60/readme.md create mode 100644 keyboards/wolf/ts60/rules.mk create mode 100644 keyboards/wolf/ts60/ts60.c create mode 100644 keyboards/wolf/ts60/ts60.h create mode 100644 keyboards/work_louder/work_board/keymaps/drashna/config.h create mode 100644 keyboards/work_louder/work_board/keymaps/drashna/keymap.c create mode 100644 keyboards/work_louder/work_board/keymaps/drashna/rules.mk create mode 100644 keyboards/wuque/ikki68_aurora/config.h create mode 100644 keyboards/wuque/ikki68_aurora/ikki68_aurora.c create mode 100644 keyboards/wuque/ikki68_aurora/ikki68_aurora.h create mode 100644 keyboards/wuque/ikki68_aurora/info.json create mode 100644 keyboards/wuque/ikki68_aurora/keymaps/68_ansi/keymap.c create mode 100644 keyboards/wuque/ikki68_aurora/keymaps/68_ansi/readme.md create mode 100644 keyboards/wuque/ikki68_aurora/keymaps/68_ansi/rules.mk create mode 100644 keyboards/wuque/ikki68_aurora/keymaps/68_iso/keymap.c create mode 100644 keyboards/wuque/ikki68_aurora/keymaps/68_iso/readme.md create mode 100644 keyboards/wuque/ikki68_aurora/keymaps/68_iso/rules.mk create mode 100644 keyboards/wuque/ikki68_aurora/keymaps/68_split_bs/keymap.c create mode 100644 keyboards/wuque/ikki68_aurora/keymaps/68_split_bs/readme.md create mode 100644 keyboards/wuque/ikki68_aurora/keymaps/68_split_bs/rules.mk create mode 100644 keyboards/wuque/ikki68_aurora/keymaps/68_split_lshift/keymap.c create mode 100644 keyboards/wuque/ikki68_aurora/keymaps/68_split_lshift/readme.md create mode 100644 keyboards/wuque/ikki68_aurora/keymaps/68_split_lshift/rules.mk create mode 100644 keyboards/wuque/ikki68_aurora/keymaps/68_split_rshift/keymap.c create mode 100644 keyboards/wuque/ikki68_aurora/keymaps/68_split_rshift/readme.md create mode 100644 keyboards/wuque/ikki68_aurora/keymaps/68_split_rshift/rules.mk create mode 100644 keyboards/wuque/ikki68_aurora/keymaps/68_split_space/keymap.c create mode 100644 keyboards/wuque/ikki68_aurora/keymaps/68_split_space/readme.md create mode 100644 keyboards/wuque/ikki68_aurora/keymaps/68_split_space/rules.mk create mode 100644 keyboards/wuque/ikki68_aurora/keymaps/default/keymap.c create mode 100644 keyboards/wuque/ikki68_aurora/keymaps/default/readme.md create mode 100644 keyboards/wuque/ikki68_aurora/keymaps/via/keymap.c create mode 100644 keyboards/wuque/ikki68_aurora/keymaps/via/readme.md create mode 100644 keyboards/wuque/ikki68_aurora/keymaps/via/rules.mk create mode 100644 keyboards/wuque/ikki68_aurora/readme.md create mode 100644 keyboards/wuque/ikki68_aurora/rules.mk create mode 100644 keyboards/wuque/mammoth20x/config.h create mode 100644 keyboards/wuque/mammoth20x/info.json create mode 100644 keyboards/wuque/mammoth20x/keymaps/default/keymap.c create mode 100644 keyboards/wuque/mammoth20x/keymaps/default/readme.md create mode 100644 keyboards/wuque/mammoth20x/keymaps/via/keymap.c create mode 100644 keyboards/wuque/mammoth20x/keymaps/via/readme.md create mode 100644 keyboards/wuque/mammoth20x/keymaps/via/rules.mk create mode 100644 keyboards/wuque/mammoth20x/mammoth20x.c create mode 100644 keyboards/wuque/mammoth20x/mammoth20x.h create mode 100644 keyboards/wuque/mammoth20x/readme.md create mode 100644 keyboards/wuque/mammoth20x/rules.mk create mode 100644 keyboards/wuque/mammoth75x/config.h create mode 100644 keyboards/wuque/mammoth75x/info.json create mode 100644 keyboards/wuque/mammoth75x/keymaps/75_ansi/keymap.c create mode 100644 keyboards/wuque/mammoth75x/keymaps/75_ansi/readme.md create mode 100644 keyboards/wuque/mammoth75x/keymaps/75_split_bs/keymap.c create mode 100644 keyboards/wuque/mammoth75x/keymaps/75_split_bs/readme.md create mode 100644 keyboards/wuque/mammoth75x/keymaps/75_split_lshift/keymap.c create mode 100644 keyboards/wuque/mammoth75x/keymaps/75_split_lshift/readme.md create mode 100644 keyboards/wuque/mammoth75x/keymaps/75_split_rshift/keymap.c create mode 100644 keyboards/wuque/mammoth75x/keymaps/75_split_rshift/readme.md create mode 100644 keyboards/wuque/mammoth75x/keymaps/75_split_space/keymap.c create mode 100644 keyboards/wuque/mammoth75x/keymaps/75_split_space/readme.md create mode 100644 keyboards/wuque/mammoth75x/keymaps/default/keymap.c create mode 100644 keyboards/wuque/mammoth75x/keymaps/default/readme.md create mode 100644 keyboards/wuque/mammoth75x/keymaps/via/keymap.c create mode 100644 keyboards/wuque/mammoth75x/keymaps/via/readme.md create mode 100644 keyboards/wuque/mammoth75x/keymaps/via/rules.mk create mode 100644 keyboards/wuque/mammoth75x/mammoth75x.c create mode 100644 keyboards/wuque/mammoth75x/mammoth75x.h create mode 100644 keyboards/wuque/mammoth75x/readme.md create mode 100644 keyboards/wuque/mammoth75x/rules.mk create mode 100644 keyboards/wuque/serneity65/config.h create mode 100644 keyboards/wuque/serneity65/info.json create mode 100644 keyboards/wuque/serneity65/keymaps/65_ansi/keymap.c create mode 100644 keyboards/wuque/serneity65/keymaps/65_ansi/readme.md create mode 100644 keyboards/wuque/serneity65/keymaps/65_split_bs/keymap.c create mode 100644 keyboards/wuque/serneity65/keymaps/65_split_bs/readme.md create mode 100644 keyboards/wuque/serneity65/keymaps/65_split_lshift/keymap.c create mode 100644 keyboards/wuque/serneity65/keymaps/65_split_lshift/readme.md create mode 100644 keyboards/wuque/serneity65/keymaps/65_split_space/keymap.c create mode 100644 keyboards/wuque/serneity65/keymaps/65_split_space/readme.md create mode 100644 keyboards/wuque/serneity65/keymaps/default/keymap.c create mode 100644 keyboards/wuque/serneity65/keymaps/default/readme.md create mode 100644 keyboards/wuque/serneity65/keymaps/via/keymap.c create mode 100644 keyboards/wuque/serneity65/keymaps/via/readme.md create mode 100644 keyboards/wuque/serneity65/keymaps/via/rules.mk create mode 100644 keyboards/wuque/serneity65/readme.md create mode 100644 keyboards/wuque/serneity65/rules.mk create mode 100644 keyboards/wuque/serneity65/serneity65.c create mode 100644 keyboards/wuque/serneity65/serneity65.h create mode 100644 keyboards/xbows/knight/keymaps/default/config.h create mode 100644 keyboards/xbows/knight/keymaps/via/config.h create mode 100644 keyboards/xbows/knight/keymaps/via/keymap.c create mode 100644 keyboards/xbows/knight/keymaps/via/rules.mk create mode 100644 keyboards/xbows/knight_plus/config.h create mode 100644 keyboards/xbows/knight_plus/info.json create mode 100644 keyboards/xbows/knight_plus/keymaps/default/config.h create mode 100644 keyboards/xbows/knight_plus/keymaps/default/keymap.c create mode 100644 keyboards/xbows/knight_plus/keymaps/via/config.h create mode 100644 keyboards/xbows/knight_plus/keymaps/via/keymap.c create mode 100644 keyboards/xbows/knight_plus/keymaps/via/rules.mk create mode 100644 keyboards/xbows/knight_plus/knight_plus.c create mode 100644 keyboards/xbows/knight_plus/knight_plus.h create mode 100644 keyboards/xbows/knight_plus/readme.md create mode 100644 keyboards/xbows/knight_plus/rules.mk create mode 100644 keyboards/xbows/nature/keymaps/via/keymap.c create mode 100644 keyboards/xbows/nature/keymaps/via/rules.mk create mode 100644 keyboards/xbows/numpad/config.h create mode 100644 keyboards/xbows/numpad/info.json create mode 100644 keyboards/xbows/numpad/keymaps/default/config.h create mode 100644 keyboards/xbows/numpad/keymaps/default/keymap.c create mode 100644 keyboards/xbows/numpad/keymaps/via/config.h create mode 100644 keyboards/xbows/numpad/keymaps/via/keymap.c create mode 100644 keyboards/xbows/numpad/keymaps/via/rules.mk create mode 100644 keyboards/xbows/numpad/numpad.c create mode 100644 keyboards/xbows/numpad/numpad.h create mode 100644 keyboards/xbows/numpad/readme.md create mode 100644 keyboards/xbows/numpad/rules.mk create mode 100644 keyboards/xbows/ranger/config.h create mode 100644 keyboards/xbows/ranger/info.json create mode 100644 keyboards/xbows/ranger/keymaps/default/config.h create mode 100644 keyboards/xbows/ranger/keymaps/default/keymap.c create mode 100644 keyboards/xbows/ranger/keymaps/via/config.h create mode 100644 keyboards/xbows/ranger/keymaps/via/keymap.c create mode 100644 keyboards/xbows/ranger/keymaps/via/rules.mk create mode 100644 keyboards/xbows/ranger/ranger.c create mode 100644 keyboards/xbows/ranger/ranger.h create mode 100644 keyboards/xbows/ranger/readme.md create mode 100644 keyboards/xbows/ranger/rules.mk delete mode 100644 keyboards/xd002/info.json delete mode 100644 keyboards/xd002/keymaps/multilayer_rgb/keymap.c delete mode 100644 keyboards/xd002/keymaps/multilayer_rgb/rgblite.h delete mode 100644 keyboards/xd002/keymaps/rgb_lite/keymap.c delete mode 100644 keyboards/xd002/keymaps/rgb_lite/rgblite.h delete mode 100644 keyboards/xd002/keymaps/tap_dance/config.h delete mode 100644 keyboards/xd002/readme.md delete mode 100644 keyboards/xd002/rules.mk delete mode 100644 keyboards/xd004/info.json delete mode 100644 keyboards/xd004/keymaps/default/keymap.c delete mode 100644 keyboards/xd004/keymaps/system_and_media/readme.md delete mode 100644 keyboards/xd004/readme.md delete mode 100644 keyboards/xd004/v1/rules.mk delete mode 100644 keyboards/xd004/xd004.c delete mode 100644 keyboards/xd60/info.json delete mode 100644 keyboards/xd60/keymaps/Jos/README.md delete mode 100644 keyboards/xd60/keymaps/birkir/keymap.c delete mode 100644 keyboards/xd60/keymaps/birkir/readme.md delete mode 100644 keyboards/xd60/keymaps/default/keymap.c delete mode 100644 keyboards/xd60/keymaps/default/readme.md delete mode 100644 keyboards/xd60/keymaps/edulpn/readme.md delete mode 100644 keyboards/xd60/keymaps/edulpn64/readme.md delete mode 100644 keyboards/xd60/keymaps/iso/keymap.c delete mode 100644 keyboards/xd60/keymaps/iso/readme.md delete mode 100644 keyboards/xd60/keymaps/kmontag42/readme.md delete mode 100644 keyboards/xd60/keymaps/krusli/readme.md delete mode 100644 keyboards/xd60/keymaps/melka/readme.md delete mode 100644 keyboards/xd60/keymaps/petesmom/README.md delete mode 100644 keyboards/xd60/keymaps/semicolonsnet/readme.md delete mode 100755 keyboards/xd60/keymaps/shura30/keymap.c delete mode 100755 keyboards/xd60/keymaps/shura30/readme.md delete mode 100644 keyboards/xd60/keymaps/styr/readme.md delete mode 100644 keyboards/xd60/keymaps/supercoffee/readme.md delete mode 100644 keyboards/xd60/keymaps/yuuki/README.md delete mode 100644 keyboards/xd60/readme.md delete mode 100644 keyboards/xd60/rev2/rules.mk delete mode 100644 keyboards/xd60/rev3/rules.mk delete mode 100644 keyboards/xd68/info.json delete mode 100644 keyboards/xd68/keymaps/default/readme.md delete mode 100644 keyboards/xd68/keymaps/default_iso/readme.md delete mode 100644 keyboards/xd68/readme.md delete mode 100644 keyboards/xd68/rules.mk delete mode 100644 keyboards/xd75/info.json delete mode 100644 keyboards/xd75/keymaps/4sstylz/rules.mk delete mode 100644 keyboards/xd75/keymaps/arpinfidel/keymap.c delete mode 100644 keyboards/xd75/keymaps/arpinfidel/rules.mk delete mode 100644 keyboards/xd75/keymaps/bbaserdem/readme.md delete mode 100644 keyboards/xd75/keymaps/billypython/rules.mk delete mode 100644 keyboards/xd75/keymaps/buzzlighter1/readme.md delete mode 100644 keyboards/xd75/keymaps/buzzlighter1/rules.mk delete mode 100644 keyboards/xd75/keymaps/c4software_bepo/keymap.c delete mode 100644 keyboards/xd75/keymaps/cbbrowne/keymap.c delete mode 100644 keyboards/xd75/keymaps/cbbrowne/rules.mk delete mode 100755 keyboards/xd75/keymaps/clanghans/readme.md delete mode 100644 keyboards/xd75/keymaps/colinta/readme.md delete mode 100644 keyboards/xd75/keymaps/davidrambo/keymap.c delete mode 100644 keyboards/xd75/keymaps/davidrambo/readme.md delete mode 100644 keyboards/xd75/keymaps/developper_bepo/keymap.c delete mode 100644 keyboards/xd75/keymaps/developper_bepo/readme.md delete mode 100644 keyboards/xd75/keymaps/fabian/rules.mk delete mode 100644 keyboards/xd75/keymaps/french/keymap.c delete mode 100644 keyboards/xd75/keymaps/french/readme.md delete mode 100644 keyboards/xd75/keymaps/germanized/config.h delete mode 100644 keyboards/xd75/keymaps/germanized/keymap.c delete mode 100644 keyboards/xd75/keymaps/germanized/rules.mk delete mode 100644 keyboards/xd75/keymaps/markus/keymap.c delete mode 100644 keyboards/xd75/keymaps/markus/rules.mk delete mode 100644 keyboards/xd75/keymaps/pitty/keymap.c delete mode 100644 keyboards/xd75/keymaps/revok75/rules.mk delete mode 100644 keyboards/xd75/keymaps/scheiklp/readme.md delete mode 100644 keyboards/xd75/keymaps/scheiklp/rules.mk delete mode 100644 keyboards/xd75/keymaps/skewwhiffy/keymap.c delete mode 100644 keyboards/xd75/keymaps/tdl-jturner/keymap.c delete mode 100644 keyboards/xd75/keymaps/tdl-jturner/readme.md delete mode 100644 keyboards/xd75/readme.md delete mode 100644 keyboards/xd75/rules.mk delete mode 100644 keyboards/xd84/config.h delete mode 100644 keyboards/xd84/info.json delete mode 100644 keyboards/xd84/readme.md delete mode 100644 keyboards/xd84/rules.mk delete mode 100644 keyboards/xd84pro/info.json delete mode 100644 keyboards/xd84pro/readme.md delete mode 100644 keyboards/xd84pro/rules.mk delete mode 100644 keyboards/xd87/config.h delete mode 100644 keyboards/xd87/info.json delete mode 100644 keyboards/xd87/keymaps/default/keymap.c delete mode 100755 keyboards/xd87/keymaps/default_underglow/keymap.c delete mode 100755 keyboards/xd87/keymaps/default_underglow/rules.mk delete mode 100755 keyboards/xd87/keymaps/mac_underglow/rules.mk delete mode 100644 keyboards/xd87/readme.md delete mode 100644 keyboards/xd87/rules.mk delete mode 100644 keyboards/xd87/xd87.h delete mode 100644 keyboards/xd96/config.h delete mode 100644 keyboards/xd96/info.json delete mode 100644 keyboards/xd96/readme.md delete mode 100644 keyboards/xd96/rules.mk create mode 100644 keyboards/xelus/dharma/config.h create mode 100644 keyboards/xelus/dharma/dharma.c create mode 100644 keyboards/xelus/dharma/dharma.h create mode 100644 keyboards/xelus/dharma/info.json create mode 100644 keyboards/xelus/dharma/keymaps/default/config.h create mode 100644 keyboards/xelus/dharma/keymaps/default/keymap.c create mode 100644 keyboards/xelus/dharma/keymaps/default/readme.md create mode 100644 keyboards/xelus/dharma/keymaps/via/config.h create mode 100644 keyboards/xelus/dharma/keymaps/via/keymap.c create mode 100644 keyboards/xelus/dharma/keymaps/via/readme.md create mode 100644 keyboards/xelus/dharma/keymaps/via/rules.mk create mode 100644 keyboards/xelus/dharma/readme.md create mode 100644 keyboards/xelus/dharma/rules.mk create mode 100644 keyboards/xelus/kangaroo/keymaps/default/config.h create mode 100644 keyboards/xelus/kangaroo/keymaps/via/config.h create mode 100644 keyboards/xelus/ninjin/info.json create mode 100644 keyboards/xelus/pachi/rgb/rev1/config.h rename keyboards/xelus/pachi/rgb/{ => rev1}/halconf.h (100%) rename keyboards/xelus/pachi/rgb/{ => rev1}/mcuconf.h (100%) create mode 100644 keyboards/xelus/pachi/rgb/rev1/readme.md create mode 100644 keyboards/xelus/pachi/rgb/rev1/rev1.c create mode 100644 keyboards/xelus/pachi/rgb/rev1/rev1.h create mode 100644 keyboards/xelus/pachi/rgb/rev1/rules.mk create mode 100644 keyboards/xelus/pachi/rgb/rev2/config.h create mode 100644 keyboards/xelus/pachi/rgb/rev2/halconf.h create mode 100644 keyboards/xelus/pachi/rgb/rev2/mcuconf.h create mode 100644 keyboards/xelus/pachi/rgb/rev2/readme.md create mode 100644 keyboards/xelus/pachi/rgb/rev2/rev2.c create mode 100644 keyboards/xelus/pachi/rgb/rev2/rev2.h create mode 100644 keyboards/xelus/pachi/rgb/rev2/rules.mk delete mode 100644 keyboards/xelus/pachi/rgb/rules.mk create mode 100644 keyboards/xelus/rs60/config.h create mode 100644 keyboards/xelus/rs60/info.json create mode 100644 keyboards/xelus/rs60/keymaps/default/config.h create mode 100644 keyboards/xelus/rs60/keymaps/default/keymap.c create mode 100644 keyboards/xelus/rs60/keymaps/via/config.h create mode 100644 keyboards/xelus/rs60/keymaps/via/keymap.c create mode 100644 keyboards/xelus/rs60/keymaps/via/rules.mk create mode 100644 keyboards/xelus/rs60/readme.md create mode 100644 keyboards/xelus/rs60/rs60.c create mode 100644 keyboards/xelus/rs60/rs60.h create mode 100644 keyboards/xelus/rs60/rules.mk create mode 100644 keyboards/xelus/valor/rev2/config.h create mode 100644 keyboards/xelus/valor/rev2/halconf.h create mode 100644 keyboards/xelus/valor/rev2/info.json create mode 100644 keyboards/xelus/valor/rev2/keymaps/default/config.h create mode 100644 keyboards/xelus/valor/rev2/keymaps/default/keymap.c create mode 100644 keyboards/xelus/valor/rev2/keymaps/default/readme.md create mode 100644 keyboards/xelus/valor/rev2/keymaps/via/config.h create mode 100644 keyboards/xelus/valor/rev2/keymaps/via/keymap.c create mode 100644 keyboards/xelus/valor/rev2/keymaps/via/readme.md create mode 100644 keyboards/xelus/valor/rev2/keymaps/via/rules.mk create mode 100644 keyboards/xelus/valor/rev2/mcuconf.h create mode 100644 keyboards/xelus/valor/rev2/readme.md create mode 100644 keyboards/xelus/valor/rev2/rev2.c create mode 100644 keyboards/xelus/valor/rev2/rev2.h create mode 100644 keyboards/xelus/valor/rev2/rgb_matrix_kb.inc create mode 100644 keyboards/xelus/valor/rev2/rules.mk create mode 100644 keyboards/xiudi/xd002/.noci rename keyboards/{ => xiudi}/xd002/config.h (100%) create mode 100644 keyboards/xiudi/xd002/info.json rename keyboards/{ => xiudi}/xd002/keymaps/default/keymap.c (100%) rename keyboards/{ => xiudi}/xd002/keymaps/multilayer_rgb/config.h (100%) create mode 100644 keyboards/xiudi/xd002/keymaps/multilayer_rgb/keymap.c create mode 100644 keyboards/xiudi/xd002/keymaps/multilayer_rgb/rgblite.h rename keyboards/{ => xiudi}/xd002/keymaps/multilayer_rgb/rules.mk (100%) rename keyboards/{ => xiudi}/xd002/keymaps/rgb/keymap.c (100%) rename keyboards/{ => xiudi}/xd002/keymaps/rgb/rules.mk (100%) create mode 100644 keyboards/xiudi/xd002/keymaps/rgb_lite/keymap.c create mode 100644 keyboards/xiudi/xd002/keymaps/rgb_lite/rgblite.h rename keyboards/{ => xiudi}/xd002/keymaps/rgb_lite/rules.mk (100%) rename keyboards/{anavi/macropad2 => xiudi/xd002}/keymaps/tap_dance/config.h (100%) rename keyboards/{ => xiudi}/xd002/keymaps/tap_dance/keymap.c (100%) create mode 100644 keyboards/xiudi/xd002/keymaps/tap_dance/rules.mk rename keyboards/{ => xiudi}/xd002/keymaps/volume/keymap.c (100%) rename keyboards/{ => xiudi}/xd002/keymaps/volume/rules.mk (100%) create mode 100644 keyboards/xiudi/xd002/readme.md create mode 100644 keyboards/xiudi/xd002/rules.mk rename keyboards/{ => xiudi}/xd002/xd002.c (100%) rename keyboards/{ => xiudi}/xd002/xd002.h (100%) create mode 100644 keyboards/xiudi/xd004/info.json create mode 100644 keyboards/xiudi/xd004/keymaps/default/keymap.c rename keyboards/{ => xiudi}/xd004/keymaps/default/readme.md (100%) create mode 100644 keyboards/xiudi/xd004/keymaps/narze/keymap.c create mode 100644 keyboards/xiudi/xd004/keymaps/narze/readme.md rename keyboards/{ => xiudi}/xd004/keymaps/system_and_media/keymap.c (100%) create mode 100644 keyboards/xiudi/xd004/keymaps/system_and_media/readme.md create mode 100644 keyboards/xiudi/xd004/readme.md rename keyboards/{ => xiudi}/xd004/v1/config.h (100%) create mode 100644 keyboards/xiudi/xd004/v1/rules.mk create mode 100644 keyboards/xiudi/xd004/xd004.c rename keyboards/{ => xiudi}/xd004/xd004.h (100%) create mode 100644 keyboards/xiudi/xd60/info.json create mode 100644 keyboards/xiudi/xd60/keymaps/Jos/README.md rename keyboards/{ => xiudi}/xd60/keymaps/Jos/config.h (100%) rename keyboards/{ => xiudi}/xd60/keymaps/Jos/keymap.c (100%) rename keyboards/{ => xiudi}/xd60/keymaps/Jos/rules.mk (100%) create mode 100644 keyboards/xiudi/xd60/keymaps/ansi_split_bs_rshift_space/keymap.c create mode 100644 keyboards/xiudi/xd60/keymaps/ansi_split_bs_rshift_space/readme.md create mode 100644 keyboards/xiudi/xd60/keymaps/birkir/keymap.c create mode 100644 keyboards/xiudi/xd60/keymaps/birkir/readme.md rename keyboards/{ => xiudi}/xd60/keymaps/cheese/README.md (100%) rename keyboards/{ => xiudi}/xd60/keymaps/cheese/keymap.c (100%) rename keyboards/{ => xiudi}/xd60/keymaps/crd_ansi/README.md (100%) rename keyboards/{ => xiudi}/xd60/keymaps/crd_ansi/keymap.c (100%) create mode 100644 keyboards/xiudi/xd60/keymaps/default/keymap.c create mode 100644 keyboards/xiudi/xd60/keymaps/default/readme.md rename keyboards/{ => xiudi}/xd60/keymaps/edulpn/keymap.c (100%) create mode 100644 keyboards/xiudi/xd60/keymaps/edulpn/readme.md rename keyboards/{ => xiudi}/xd60/keymaps/edulpn64/keymap.c (100%) create mode 100644 keyboards/xiudi/xd60/keymaps/edulpn64/readme.md create mode 100644 keyboards/xiudi/xd60/keymaps/finnish/keymap.c create mode 100644 keyboards/xiudi/xd60/keymaps/finnish/readme.md rename keyboards/{xd60/keymaps/shura30 => xiudi/xd60/keymaps/fvolpe83}/config.h (100%) create mode 100755 keyboards/xiudi/xd60/keymaps/fvolpe83/keymap.c create mode 100755 keyboards/xiudi/xd60/keymaps/fvolpe83/readme.md create mode 100755 keyboards/xiudi/xd60/keymaps/fvolpe83/rules.mk create mode 100644 keyboards/xiudi/xd60/keymaps/iso/keymap.c create mode 100644 keyboards/xiudi/xd60/keymaps/iso/readme.md rename keyboards/{ => xiudi}/xd60/keymaps/kmontag42/keymap.c (100%) create mode 100644 keyboards/xiudi/xd60/keymaps/kmontag42/readme.md rename keyboards/{ => xiudi}/xd60/keymaps/kmontag42/rules.mk (100%) rename keyboards/{ => xiudi}/xd60/keymaps/krusli/keymap.c (100%) create mode 100644 keyboards/xiudi/xd60/keymaps/krusli/readme.md rename keyboards/{ => xiudi}/xd60/keymaps/melka/.gitignore (100%) rename keyboards/{ => xiudi}/xd60/keymaps/melka/config.h (100%) rename keyboards/{ => xiudi}/xd60/keymaps/melka/keymap.c (100%) rename keyboards/{ => xiudi}/xd60/keymaps/melka/passwd_template.h (100%) create mode 100644 keyboards/xiudi/xd60/keymaps/melka/readme.md create mode 100644 keyboards/xiudi/xd60/keymaps/petesmom/README.md rename keyboards/{ => xiudi}/xd60/keymaps/petesmom/keymap.c (100%) rename keyboards/{ => xiudi}/xd60/keymaps/rooski/instructions.txt (100%) rename keyboards/{ => xiudi}/xd60/keymaps/rooski/keymap.c (100%) rename keyboards/{ => xiudi}/xd60/keymaps/semicolonsnet/keymap.c (100%) create mode 100644 keyboards/xiudi/xd60/keymaps/semicolonsnet/readme.md rename keyboards/{ => xiudi}/xd60/keymaps/split_bksp_arrows/keymap.c (100%) rename keyboards/{ => xiudi}/xd60/keymaps/split_bksp_arrows/readme.md (100%) rename keyboards/{ => xiudi}/xd60/keymaps/stanleylai/keymap.c (100%) rename keyboards/{ => xiudi}/xd60/keymaps/styr/keymap.c (100%) create mode 100644 keyboards/xiudi/xd60/keymaps/styr/readme.md rename keyboards/{ => xiudi}/xd60/keymaps/supercoffee/keymap.c (100%) create mode 100644 keyboards/xiudi/xd60/keymaps/supercoffee/readme.md rename keyboards/{ => xiudi}/xd60/keymaps/suryanisaac/README.md (100%) rename keyboards/{ => xiudi}/xd60/keymaps/suryanisaac/keymap.c (100%) rename keyboards/{ => xiudi}/xd60/keymaps/via/keymap.c (100%) rename keyboards/{ => xiudi}/xd60/keymaps/via/readme.md (100%) create mode 100644 keyboards/xiudi/xd60/keymaps/via/rules.mk create mode 100644 keyboards/xiudi/xd60/keymaps/yuuki/README.md rename keyboards/{ => xiudi}/xd60/keymaps/yuuki/keymap.c (100%) create mode 100644 keyboards/xiudi/xd60/readme.md create mode 100644 keyboards/xiudi/xd60/rev2/.noci rename keyboards/{ => xiudi}/xd60/rev2/config.h (100%) create mode 100644 keyboards/xiudi/xd60/rev2/rules.mk rename keyboards/{ => xiudi}/xd60/rev3/config.h (100%) create mode 100644 keyboards/xiudi/xd60/rev3/rules.mk rename keyboards/{ => xiudi}/xd60/xd60.c (100%) rename keyboards/{ => xiudi}/xd60/xd60.h (84%) rename keyboards/{ => xiudi}/xd68/config.h (100%) create mode 100644 keyboards/xiudi/xd68/info.json rename keyboards/{ => xiudi}/xd68/keymaps/default/keymap.c (100%) create mode 100644 keyboards/xiudi/xd68/keymaps/default/readme.md rename keyboards/{ => xiudi}/xd68/keymaps/default_iso/keymap.c (100%) create mode 100644 keyboards/xiudi/xd68/keymaps/default_iso/readme.md rename keyboards/{ => xiudi}/xd68/keymaps/via/keymap.c (100%) rename keyboards/{ => xiudi}/xd68/keymaps/via/readme.md (100%) create mode 100644 keyboards/xiudi/xd68/keymaps/via/rules.mk create mode 100644 keyboards/xiudi/xd68/readme.md create mode 100644 keyboards/xiudi/xd68/rules.mk rename keyboards/{ => xiudi}/xd68/xd68.c (100%) rename keyboards/{ => xiudi}/xd68/xd68.h (100%) rename keyboards/{ => xiudi}/xd75/config.h (100%) create mode 100644 keyboards/xiudi/xd75/info.json rename keyboards/{ => xiudi}/xd75/keymaps/4sstylz/config.h (100%) rename keyboards/{ => xiudi}/xd75/keymaps/4sstylz/keycodes.h (100%) rename keyboards/{ => xiudi}/xd75/keymaps/4sstylz/keymap.c (100%) rename keyboards/{ => xiudi}/xd75/keymaps/4sstylz/leds.h (100%) rename keyboards/{ => xiudi}/xd75/keymaps/4sstylz/readme.md (100%) create mode 100644 keyboards/xiudi/xd75/keymaps/4sstylz/rules.mk rename keyboards/{ => xiudi}/xd75/keymaps/adi/config.h (100%) rename keyboards/{ => xiudi}/xd75/keymaps/adi/keymap.c (100%) rename keyboards/{ => xiudi}/xd75/keymaps/adi/readme.md (100%) rename keyboards/{ => xiudi}/xd75/keymaps/adi/rules.mk (100%) rename keyboards/{ => xiudi}/xd75/keymaps/arpinfidel/config.h (100%) create mode 100644 keyboards/xiudi/xd75/keymaps/arpinfidel/keymap.c rename keyboards/{ => xiudi}/xd75/keymaps/arpinfidel/readme.md (100%) create mode 100644 keyboards/xiudi/xd75/keymaps/arpinfidel/rules.mk rename keyboards/{ => xiudi}/xd75/keymaps/atomic_style/config.h (100%) rename keyboards/{ => xiudi}/xd75/keymaps/atomic_style/keymap.c (100%) rename keyboards/{ => xiudi}/xd75/keymaps/atomic_style/readme.md (100%) rename keyboards/{ => xiudi}/xd75/keymaps/atomic_style/rules.mk (100%) rename keyboards/{ => xiudi}/xd75/keymaps/atomic_style_jp/keymap.c (100%) rename keyboards/{ => xiudi}/xd75/keymaps/atomic_style_jp/readme.md (100%) rename keyboards/{ => xiudi}/xd75/keymaps/bbaserdem/config.h (100%) rename keyboards/{ => xiudi}/xd75/keymaps/bbaserdem/keymap.c (100%) create mode 100644 keyboards/xiudi/xd75/keymaps/bbaserdem/readme.md rename keyboards/{ => xiudi}/xd75/keymaps/bbaserdem/rules.mk (100%) rename keyboards/{ => xiudi}/xd75/keymaps/billypython/config.h (100%) rename keyboards/{ => xiudi}/xd75/keymaps/billypython/keymap.c (100%) create mode 100644 keyboards/xiudi/xd75/keymaps/billypython/rules.mk rename keyboards/{ => xiudi}/xd75/keymaps/boy_314/config.h (100%) rename keyboards/{ => xiudi}/xd75/keymaps/boy_314/keymap.c (100%) rename keyboards/{ => xiudi}/xd75/keymaps/boy_314/readme.md (100%) create mode 100644 keyboards/xiudi/xd75/keymaps/boy_314/rules.mk rename keyboards/{ => xiudi}/xd75/keymaps/bramver/config.h (100%) rename keyboards/{ => xiudi}/xd75/keymaps/bramver/keymap.c (100%) rename keyboards/{ => xiudi}/xd75/keymaps/bramver/readme.md (100%) rename keyboards/{ => xiudi}/xd75/keymaps/bramver/rules.mk (100%) rename keyboards/{ => xiudi}/xd75/keymaps/bulbizarre/config.h (100%) rename keyboards/{ => xiudi}/xd75/keymaps/bulbizarre/keymap.c (100%) rename keyboards/{ => xiudi}/xd75/keymaps/bulbizarre/readme.md (100%) rename keyboards/{ => xiudi}/xd75/keymaps/bulbizarre/rules.mk (100%) rename keyboards/{ => xiudi}/xd75/keymaps/buzzlighter1/config.h (100%) rename keyboards/{ => xiudi}/xd75/keymaps/buzzlighter1/keymap.c (100%) create mode 100644 keyboards/xiudi/xd75/keymaps/buzzlighter1/readme.md create mode 100644 keyboards/xiudi/xd75/keymaps/buzzlighter1/rules.mk rename keyboards/{ => xiudi}/xd75/keymaps/c4software_bepo/config.h (100%) create mode 100644 keyboards/xiudi/xd75/keymaps/c4software_bepo/keymap.c rename keyboards/{ => xiudi}/xd75/keymaps/c4software_bepo/readme.md (100%) rename keyboards/{ => xiudi}/xd75/keymaps/c4software_bepo/rules.mk (100%) rename keyboards/{ => xiudi}/xd75/keymaps/cbbrowne/config.h (100%) create mode 100644 keyboards/xiudi/xd75/keymaps/cbbrowne/keymap.c rename keyboards/{ => xiudi}/xd75/keymaps/cbbrowne/readme.md (100%) create mode 100644 keyboards/xiudi/xd75/keymaps/cbbrowne/rules.mk rename keyboards/{ => xiudi}/xd75/keymaps/clanghans/config.h (100%) rename keyboards/{ => xiudi}/xd75/keymaps/clanghans/keymap.c (100%) create mode 100755 keyboards/xiudi/xd75/keymaps/clanghans/readme.md rename keyboards/{ => xiudi}/xd75/keymaps/colinta/config.h (100%) rename keyboards/{ => xiudi}/xd75/keymaps/colinta/keymap.c (100%) create mode 100644 keyboards/xiudi/xd75/keymaps/colinta/readme.md rename keyboards/{ => xiudi}/xd75/keymaps/daniel/keymap.c (100%) rename keyboards/{ => xiudi}/xd75/keymaps/daniel/readme.md (100%) rename keyboards/{ => xiudi}/xd75/keymaps/davidrambo/config.h (100%) create mode 100644 keyboards/xiudi/xd75/keymaps/davidrambo/keymap.c create mode 100644 keyboards/xiudi/xd75/keymaps/davidrambo/readme.md rename keyboards/{ => xiudi}/xd75/keymaps/davidrambo/rules.mk (100%) rename keyboards/{ => xiudi}/xd75/keymaps/default/keymap.c (100%) rename keyboards/{ => xiudi}/xd75/keymaps/default/readme.md (100%) rename keyboards/{ => xiudi}/xd75/keymaps/developper_bepo/config.h (100%) create mode 100644 keyboards/xiudi/xd75/keymaps/developper_bepo/keymap.c create mode 100644 keyboards/xiudi/xd75/keymaps/developper_bepo/readme.md rename keyboards/{ => xiudi}/xd75/keymaps/developper_bepo/rules.mk (100%) rename keyboards/{ => xiudi}/xd75/keymaps/dyn_macro_tap_dance/config.h (100%) rename keyboards/{ => xiudi}/xd75/keymaps/dyn_macro_tap_dance/keymap.c (100%) rename keyboards/{ => xiudi}/xd75/keymaps/dyn_macro_tap_dance/readme.md (100%) rename keyboards/{ => xiudi}/xd75/keymaps/dyn_macro_tap_dance/rules.mk (100%) rename keyboards/{ => xiudi}/xd75/keymaps/emilyh/config.h (100%) rename keyboards/{ => xiudi}/xd75/keymaps/emilyh/keymap.c (100%) rename keyboards/{ => xiudi}/xd75/keymaps/emilyh/readme.md (100%) rename keyboards/{ => xiudi}/xd75/keymaps/emilyh/rules.mk (100%) rename keyboards/{ => xiudi}/xd75/keymaps/ericgebhart/config.h (100%) rename keyboards/{ => xiudi}/xd75/keymaps/ericgebhart/keymap.c (100%) rename keyboards/{ => xiudi}/xd75/keymaps/ericgebhart/readme.md (100%) rename keyboards/{ => xiudi}/xd75/keymaps/ericgebhart/rules.mk (100%) rename keyboards/{ => xiudi}/xd75/keymaps/fabian/config.h (100%) rename keyboards/{ => xiudi}/xd75/keymaps/fabian/keymap.c (100%) create mode 100644 keyboards/xiudi/xd75/keymaps/fabian/rules.mk rename keyboards/{ => xiudi}/xd75/keymaps/french/config.h (100%) create mode 100644 keyboards/xiudi/xd75/keymaps/french/keymap.c rename keyboards/{ => xiudi}/xd75/keymaps/french/keymap_french.c (97%) create mode 100644 keyboards/xiudi/xd75/keymaps/french/readme.md rename keyboards/{ => xiudi}/xd75/keymaps/french/rules.mk (100%) create mode 100644 keyboards/xiudi/xd75/keymaps/germanized/config.h create mode 100644 keyboards/xiudi/xd75/keymaps/germanized/keymap.c rename keyboards/{ => xiudi}/xd75/keymaps/germanized/readme.md (100%) create mode 100644 keyboards/xiudi/xd75/keymaps/germanized/rules.mk rename keyboards/{ => xiudi}/xd75/keymaps/hybrid/config.h (100%) rename keyboards/{ => xiudi}/xd75/keymaps/hybrid/keymap.c (100%) rename keyboards/{ => xiudi}/xd75/keymaps/hybrid/readme.md (100%) rename keyboards/{ => xiudi}/xd75/keymaps/hybrid/rules.mk (100%) rename keyboards/{ => xiudi}/xd75/keymaps/jarred/keymap.c (100%) rename keyboards/{ => xiudi}/xd75/keymaps/jarred/readme.md (100%) rename keyboards/{ => xiudi}/xd75/keymaps/kim-kim-xd73/config.h (100%) rename keyboards/{ => xiudi}/xd75/keymaps/kim-kim-xd73/keymap.c (100%) rename keyboards/{ => xiudi}/xd75/keymaps/kim-kim-xd73/rules.mk (100%) rename keyboards/{ => xiudi}/xd75/keymaps/kim-kim/config.h (100%) rename keyboards/{ => xiudi}/xd75/keymaps/kim-kim/keymap.c (100%) rename keyboards/{ => xiudi}/xd75/keymaps/kim-kim/rules.mk (100%) rename keyboards/{ => xiudi}/xd75/keymaps/kloki/config.h (100%) rename keyboards/{ => xiudi}/xd75/keymaps/kloki/keymap.c (100%) rename keyboards/{ => xiudi}/xd75/keymaps/kloki/readme.md (100%) rename keyboards/{ => xiudi}/xd75/keymaps/kloki/rules.mk (100%) rename keyboards/{ => xiudi}/xd75/keymaps/markus/config.h (100%) create mode 100644 keyboards/xiudi/xd75/keymaps/markus/keymap.c rename keyboards/{ => xiudi}/xd75/keymaps/markus/readme.md (100%) create mode 100644 keyboards/xiudi/xd75/keymaps/markus/rules.mk rename keyboards/{ => xiudi}/xd75/keymaps/msiu/config.h (100%) rename keyboards/{ => xiudi}/xd75/keymaps/msiu/keymap.c (100%) rename keyboards/{ => xiudi}/xd75/keymaps/msiu/readme.md (100%) rename keyboards/{ => xiudi}/xd75/keymaps/mtdjr/config.h (100%) rename keyboards/{ => xiudi}/xd75/keymaps/mtdjr/keymap.c (100%) rename keyboards/{ => xiudi}/xd75/keymaps/mtdjr/readme.md (100%) rename keyboards/{ => xiudi}/xd75/keymaps/mtdjr/rules.mk (100%) rename keyboards/{ => xiudi}/xd75/keymaps/neothefox/keymap.c (100%) rename keyboards/{ => xiudi}/xd75/keymaps/neothefox/readme.md (100%) rename keyboards/{ => xiudi}/xd75/keymaps/odyssey/config.h (100%) rename keyboards/{ => xiudi}/xd75/keymaps/odyssey/keymap.c (100%) rename keyboards/{ => xiudi}/xd75/keymaps/odyssey/readme.md (100%) rename keyboards/{ => xiudi}/xd75/keymaps/odyssey/rules.mk (100%) rename keyboards/{ => xiudi}/xd75/keymaps/pitty/config.h (100%) create mode 100644 keyboards/xiudi/xd75/keymaps/pitty/keymap.c rename keyboards/{ => xiudi}/xd75/keymaps/pitty/readme.md (100%) rename keyboards/{ => xiudi}/xd75/keymaps/pitty/rules.mk (100%) create mode 100644 keyboards/xiudi/xd75/keymaps/replicajunction/config.h create mode 100644 keyboards/xiudi/xd75/keymaps/replicajunction/keymap.c create mode 100644 keyboards/xiudi/xd75/keymaps/replicajunction/readme.md create mode 100644 keyboards/xiudi/xd75/keymaps/replicajunction/rules.mk rename keyboards/{ => xiudi}/xd75/keymaps/revok75/config.h (100%) rename keyboards/{ => xiudi}/xd75/keymaps/revok75/keymap.c (100%) rename keyboards/{ => xiudi}/xd75/keymaps/revok75/readme.md (100%) create mode 100644 keyboards/xiudi/xd75/keymaps/revok75/rules.mk rename keyboards/{ => xiudi}/xd75/keymaps/scheiklp/config.h (100%) rename keyboards/{ => xiudi}/xd75/keymaps/scheiklp/keymap.c (100%) create mode 100644 keyboards/xiudi/xd75/keymaps/scheiklp/readme.md create mode 100644 keyboards/xiudi/xd75/keymaps/scheiklp/rules.mk create mode 100644 keyboards/xiudi/xd75/keymaps/skewwhiffy/keymap.c rename keyboards/{ => xiudi}/xd75/keymaps/skewwhiffy/readme.md (100%) rename keyboards/{ => xiudi}/xd75/keymaps/skewwhiffy/rules.mk (100%) rename keyboards/{ => xiudi}/xd75/keymaps/tdl-jturner/config.h (100%) create mode 100644 keyboards/xiudi/xd75/keymaps/tdl-jturner/keymap.c create mode 100644 keyboards/xiudi/xd75/keymaps/tdl-jturner/readme.md rename keyboards/{ => xiudi}/xd75/keymaps/tdl-jturner/rules.mk (100%) rename keyboards/{ => xiudi}/xd75/keymaps/tomswartz07/keymap.c (100%) rename keyboards/{ => xiudi}/xd75/keymaps/via/keymap.c (100%) rename keyboards/{ => xiudi}/xd75/keymaps/via/readme.md (100%) create mode 100644 keyboards/xiudi/xd75/keymaps/via/rules.mk rename keyboards/{ => xiudi}/xd75/keymaps/xo/config.h (100%) rename keyboards/{ => xiudi}/xd75/keymaps/xo/keymap.c (100%) rename keyboards/{ => xiudi}/xd75/keymaps/xo/readme.md (100%) rename keyboards/{ => xiudi}/xd75/keymaps/xo/rules.mk (100%) create mode 100644 keyboards/xiudi/xd75/readme.md create mode 100644 keyboards/xiudi/xd75/rules.mk rename keyboards/{ => xiudi}/xd75/xd75.c (100%) rename keyboards/{ => xiudi}/xd75/xd75.h (100%) create mode 100644 keyboards/xiudi/xd84/config.h rename keyboards/{ => xiudi}/xd84/dev.md (100%) create mode 100644 keyboards/xiudi/xd84/info.json rename keyboards/{ => xiudi}/xd84/keymaps/default/keymap.c (100%) rename keyboards/{ => xiudi}/xd84/keymaps/default_iso/keymap.c (100%) rename keyboards/{ => xiudi}/xd84/keymaps/via/keymap.c (100%) rename keyboards/{ => xiudi}/xd84/keymaps/via/readme.md (100%) create mode 100644 keyboards/xiudi/xd84/keymaps/via/rules.mk rename keyboards/{ => xiudi}/xd84/matrix.c (100%) create mode 100644 keyboards/xiudi/xd84/readme.md create mode 100644 keyboards/xiudi/xd84/rules.mk rename keyboards/{ => xiudi}/xd84/xd84.c (100%) rename keyboards/{ => xiudi}/xd84/xd84.h (100%) rename keyboards/{ => xiudi}/xd84pro/config.h (100%) rename keyboards/{ => xiudi}/xd84pro/dev.md (100%) create mode 100644 keyboards/xiudi/xd84pro/info.json rename keyboards/{ => xiudi}/xd84pro/keymaps/default/keymap.c (100%) rename keyboards/{ => xiudi}/xd84pro/keymaps/default_iso/keymap.c (100%) rename keyboards/{ => xiudi}/xd84pro/keymaps/via/keymap.c (100%) rename keyboards/{ => xiudi}/xd84pro/keymaps/via/readme.md (100%) create mode 100644 keyboards/xiudi/xd84pro/keymaps/via/rules.mk create mode 100644 keyboards/xiudi/xd84pro/readme.md create mode 100644 keyboards/xiudi/xd84pro/rules.mk rename keyboards/{ => xiudi}/xd84pro/xd84pro.c (100%) rename keyboards/{ => xiudi}/xd84pro/xd84pro.h (100%) create mode 100644 keyboards/xiudi/xd87/config.h create mode 100644 keyboards/xiudi/xd87/info.json rename keyboards/{ => xiudi}/xd87/keymaps/default/config.h (100%) create mode 100644 keyboards/xiudi/xd87/keymaps/default/keymap.c rename keyboards/{ => xiudi}/xd87/keymaps/default/readme.md (100%) rename keyboards/{ => xiudi}/xd87/keymaps/default_underglow/config.h (100%) create mode 100755 keyboards/xiudi/xd87/keymaps/default_underglow/keymap.c rename keyboards/{ => xiudi}/xd87/keymaps/default_underglow/readme.md (100%) create mode 100755 keyboards/xiudi/xd87/keymaps/default_underglow/rules.mk rename keyboards/{ => xiudi}/xd87/keymaps/mac_underglow/keymap.c (100%) rename keyboards/{ => xiudi}/xd87/keymaps/mac_underglow/readme.md (100%) create mode 100755 keyboards/xiudi/xd87/keymaps/mac_underglow/rules.mk rename keyboards/{ => xiudi}/xd87/keymaps/via/keymap.c (100%) rename keyboards/{ => xiudi}/xd87/keymaps/via/readme.md (100%) create mode 100644 keyboards/xiudi/xd87/keymaps/via/rules.mk create mode 100644 keyboards/xiudi/xd87/readme.md create mode 100644 keyboards/xiudi/xd87/rules.mk rename keyboards/{ => xiudi}/xd87/xd87.c (100%) create mode 100644 keyboards/xiudi/xd87/xd87.h create mode 100644 keyboards/xiudi/xd96/config.h create mode 100644 keyboards/xiudi/xd96/info.json rename keyboards/{ => xiudi}/xd96/keymaps/default/keymap.c (100%) rename keyboards/{ => xiudi}/xd96/keymaps/default_iso/keymap.c (100%) rename keyboards/{ => xiudi}/xd96/keymaps/uuupah/keymap.c (100%) rename keyboards/{ => xiudi}/xd96/keymaps/via/keymap.c (100%) rename keyboards/{ => xiudi}/xd96/keymaps/via/readme.md (100%) create mode 100644 keyboards/xiudi/xd96/keymaps/via/rules.mk rename keyboards/{ => xiudi}/xd96/matrix.c (100%) create mode 100644 keyboards/xiudi/xd96/readme.md create mode 100644 keyboards/xiudi/xd96/rules.mk rename keyboards/{ => xiudi}/xd96/xd96.c (100%) rename keyboards/{ => xiudi}/xd96/xd96.h (100%) create mode 100644 keyboards/yampad/info.json create mode 100644 keyboards/yampad/keymaps/via/keymap.c create mode 100644 keyboards/yampad/keymaps/via/readme.md create mode 100644 keyboards/yampad/keymaps/via/rules.mk create mode 100644 keyboards/yanghu/unicorne/config.h create mode 100644 keyboards/yanghu/unicorne/f411/halconf.h create mode 100644 keyboards/yanghu/unicorne/f411/mcuconf.h create mode 100644 keyboards/yanghu/unicorne/f411/rules.mk create mode 100644 keyboards/yanghu/unicorne/glcdfont.c create mode 100644 keyboards/yanghu/unicorne/info.json create mode 100644 keyboards/yanghu/unicorne/keymaps/default/config.h create mode 100644 keyboards/yanghu/unicorne/keymaps/default/keymap.c create mode 100644 keyboards/yanghu/unicorne/keymaps/default/layers.h create mode 100644 keyboards/yanghu/unicorne/keymaps/default/oled.c create mode 100644 keyboards/yanghu/unicorne/keymaps/default/readme.md create mode 100644 keyboards/yanghu/unicorne/keymaps/default/rules.mk create mode 100644 keyboards/yanghu/unicorne/readme.md create mode 100644 keyboards/yanghu/unicorne/rules.mk create mode 100644 keyboards/yanghu/unicorne/unicorne.c create mode 100644 keyboards/yanghu/unicorne/unicorne.h create mode 100644 keyboards/ymdk/wingshs/config.h create mode 100644 keyboards/ymdk/wingshs/info.json create mode 100644 keyboards/ymdk/wingshs/keymaps/default/keymap.c create mode 100644 keyboards/ymdk/wingshs/keymaps/via/keymap.c create mode 100644 keyboards/ymdk/wingshs/keymaps/via/rules.mk create mode 100644 keyboards/ymdk/wingshs/readme.md create mode 100644 keyboards/ymdk/wingshs/rules.mk create mode 100644 keyboards/ymdk/wingshs/wingshs.c create mode 100644 keyboards/ymdk/wingshs/wingshs.h create mode 100644 keyboards/ymdk/ymd40/v2/keymaps/via/keymap.c create mode 100644 keyboards/ymdk/ymd40/v2/keymaps/via/readme.md create mode 100644 keyboards/ymdk/ymd40/v2/keymaps/via/rules.mk create mode 100644 keyboards/ymdk_np21/keymaps/via/keymap.c create mode 100644 keyboards/ymdk_np21/keymaps/via/rules.mk create mode 100644 keyboards/yoichiro/lunakey_macro/config.h create mode 100644 keyboards/yoichiro/lunakey_macro/info.json create mode 100644 keyboards/yoichiro/lunakey_macro/keymaps/default/keymap.c create mode 100644 keyboards/yoichiro/lunakey_macro/keymaps/default/readme.md create mode 100644 keyboards/yoichiro/lunakey_macro/keymaps/via/keymap.c create mode 100644 keyboards/yoichiro/lunakey_macro/keymaps/via/readme.md create mode 100644 keyboards/yoichiro/lunakey_macro/keymaps/via/rules.mk create mode 100644 keyboards/yoichiro/lunakey_macro/lunakey_macro.c create mode 100644 keyboards/yoichiro/lunakey_macro/lunakey_macro.h create mode 100644 keyboards/yoichiro/lunakey_macro/readme.md create mode 100644 keyboards/yoichiro/lunakey_macro/rules.mk create mode 100644 keyboards/yushakobo/quick17/config.h create mode 100644 keyboards/yushakobo/quick17/info.json create mode 100644 keyboards/yushakobo/quick17/keymaps/default/keymap.c create mode 100644 keyboards/yushakobo/quick17/keymaps/default/readme.md create mode 100644 keyboards/yushakobo/quick17/keymaps/via/keymap.c create mode 100644 keyboards/yushakobo/quick17/keymaps/via/readme.md create mode 100644 keyboards/yushakobo/quick17/keymaps/via/rules.mk create mode 100644 keyboards/yushakobo/quick17/quick17.c create mode 100644 keyboards/yushakobo/quick17/quick17.h create mode 100644 keyboards/yushakobo/quick17/quick17_prefs.c create mode 100644 keyboards/yushakobo/quick17/quick17_prefs.h create mode 100644 keyboards/yushakobo/quick17/readme.md create mode 100644 keyboards/yushakobo/quick17/rgb_matrix_kb.inc create mode 100644 keyboards/yushakobo/quick17/rules.mk create mode 100644 keyboards/z12/config.h create mode 100644 keyboards/z12/info.json create mode 100644 keyboards/z12/keymaps/default/config.h create mode 100644 keyboards/z12/keymaps/default/keymap.c create mode 100644 keyboards/z12/keymaps/default/readme.md create mode 100644 keyboards/z12/keymaps/default/rules.mk create mode 100644 keyboards/z12/keymaps/zigotica/config.h create mode 100644 keyboards/z12/keymaps/zigotica/encoder.c create mode 100644 keyboards/z12/keymaps/zigotica/encoder.h create mode 100644 keyboards/z12/keymaps/zigotica/keymap.c create mode 100644 keyboards/z12/keymaps/zigotica/oled.c create mode 100644 keyboards/z12/keymaps/zigotica/oled.h create mode 100644 keyboards/z12/keymaps/zigotica/rules.mk create mode 100644 keyboards/z12/readme.md create mode 100644 keyboards/z12/rules.mk create mode 100644 keyboards/z12/z12.c create mode 100644 keyboards/z12/z12.h create mode 100644 keyboards/z34/config.h create mode 100644 keyboards/z34/info.json create mode 100644 keyboards/z34/keymaps/default/config.h create mode 100644 keyboards/z34/keymaps/default/keymap.c create mode 100644 keyboards/z34/keymaps/default/readme.md create mode 100644 keyboards/z34/keymaps/default/rules.mk create mode 100644 keyboards/z34/keymaps/zigotica/config.h create mode 100644 keyboards/z34/keymaps/zigotica/keymap.c create mode 100644 keyboards/z34/keymaps/zigotica/rules.mk create mode 100644 keyboards/z34/readme.md create mode 100644 keyboards/z34/rules.mk create mode 100644 keyboards/z34/z34.c create mode 100644 keyboards/z34/z34.h create mode 100644 keyboards/ziggurat/config.h create mode 100644 keyboards/ziggurat/info.json create mode 100644 keyboards/ziggurat/keymaps/default/keymap.c create mode 100644 keyboards/ziggurat/keymaps/iso/keymap.c create mode 100644 keyboards/ziggurat/keymaps/via/keymap.c create mode 100644 keyboards/ziggurat/keymaps/via/rules.mk create mode 100644 keyboards/ziggurat/readme.md create mode 100644 keyboards/ziggurat/rules.mk create mode 100644 keyboards/ziggurat/ziggurat.c create mode 100644 keyboards/ziggurat/ziggurat.h create mode 100644 keyboards/zinc/rev1/post_config.h create mode 100644 keyboards/zinc/reva/post_config.h create mode 100644 layouts/community/60_ansi/manna-harbour_miryoku/config.h create mode 100644 layouts/community/60_ansi/manna-harbour_miryoku/keymap.c create mode 100755 layouts/community/60_iso/bifbofii/keymap.c create mode 100755 layouts/community/60_iso/bifbofii/readme.md create mode 100644 layouts/community/60_iso/bifbofii/rules.mk create mode 100644 layouts/community/65_ansi_blocker/stanrc85/keymap.c delete mode 100644 layouts/community/ergodox/333fred/visualizer.c delete mode 100644 layouts/community/ergodox/adnw_p_u_q/visualizer.c delete mode 100644 layouts/community/ergodox/algernon/COPYING delete mode 100644 layouts/community/ergodox/algernon/NEWS.md delete mode 100644 layouts/community/ergodox/algernon/config.h delete mode 100644 layouts/community/ergodox/algernon/images/adore-layer.png delete mode 100644 layouts/community/ergodox/algernon/images/base-layer.png delete mode 100644 layouts/community/ergodox/algernon/images/heatmap.png delete mode 100644 layouts/community/ergodox/algernon/images/steno-layer.png delete mode 100644 layouts/community/ergodox/algernon/keymap.c delete mode 100644 layouts/community/ergodox/algernon/readme.md delete mode 100644 layouts/community/ergodox/algernon/rules.mk delete mode 100644 layouts/community/ergodox/algernon/tools/heatmap-layout.ADORE.json delete mode 100644 layouts/community/ergodox/algernon/tools/heatmap-layout.Dvorak.json delete mode 100755 layouts/community/ergodox/algernon/tools/hid-commands delete mode 100755 layouts/community/ergodox/algernon/tools/log-to-heatmap.py delete mode 100755 layouts/community/ergodox/algernon/tools/text-to-log.py delete mode 100644 layouts/community/ergodox/belak/visualizer.c delete mode 100644 layouts/community/ergodox/bocaj/config.h delete mode 100644 layouts/community/ergodox/bocaj/keymap.c delete mode 100644 layouts/community/ergodox/bocaj/readme.md delete mode 100644 layouts/community/ergodox/bocaj/rules.mk delete mode 100644 layouts/community/ergodox/choromanski/visualizer.c delete mode 100644 layouts/community/ergodox/drashna/visualizer.c create mode 100644 layouts/community/ergodox/jjerrell/config.h create mode 100644 layouts/community/ergodox/jjerrell/keymap.c create mode 100644 layouts/community/ergodox/jjerrell/readme.md create mode 100644 layouts/community/ergodox/jjerrell/rules.mk delete mode 100644 layouts/community/ergodox/nstickney/keymap.c delete mode 100644 layouts/community/ergodox/osx_neo2/visualizer.c delete mode 100644 layouts/community/ergodox/supercoder/makefile.mk create mode 100644 layouts/community/ergodox/supercoder/rules.mk rename layouts/community/ergodox/townk_osx/{makefile.mk => rules.mk} (100%) create mode 100644 layouts/community/ortho_1x4/readme.md create mode 100644 layouts/community/ortho_2x3/layout.json create mode 100644 layouts/community/ortho_2x3/readme.md create mode 100644 layouts/community/ortho_2x6/layout.json create mode 100644 layouts/community/ortho_2x6/readme.md create mode 100644 layouts/community/ortho_4x10/manna-harbour_miryoku/config.h create mode 100644 layouts/community/ortho_4x10/manna-harbour_miryoku/keymap.c delete mode 100644 layouts/community/ortho_4x12/bocaj/config.h delete mode 100644 layouts/community/ortho_4x12/bocaj/keymap.c delete mode 100644 layouts/community/ortho_4x12/bocaj/readme.md delete mode 100644 layouts/community/ortho_4x12/bocaj/rules.mk create mode 100644 layouts/community/ortho_4x12/jjerrell/config.h create mode 100644 layouts/community/ortho_4x12/jjerrell/keymap.c create mode 100644 layouts/community/ortho_4x12/jjerrell/readme.md create mode 100644 layouts/community/ortho_4x12/jjerrell/rules.mk create mode 100644 layouts/community/ortho_5x12/manna-harbour_miryoku/config.h create mode 100644 layouts/community/ortho_5x12/manna-harbour_miryoku/keymap.c create mode 100644 layouts/community/ortho_5x15/manna-harbour_miryoku/config.h create mode 100644 layouts/community/ortho_5x15/manna-harbour_miryoku/keymap.c create mode 100644 layouts/community/planck_mit/manna-harbour_miryoku/config.h create mode 100644 layouts/community/planck_mit/manna-harbour_miryoku/keymap.c create mode 100644 layouts/community/split_3x5_3/manna-harbour_miryoku/config.h create mode 100644 layouts/community/split_3x5_3/manna-harbour_miryoku/keymap.c create mode 100644 layouts/community/split_3x6_3/manna-harbour_miryoku/config.h create mode 100644 layouts/community/split_3x6_3/manna-harbour_miryoku/keymap.c create mode 100644 layouts/default/numpad_6x5/default_numpad_6x5/keymap.c create mode 100644 layouts/default/numpad_6x5/info.json create mode 100644 layouts/default/numpad_6x5/layout.json create mode 100644 layouts/default/numpad_6x5/readme.md create mode 100644 layouts/default/ortho_2x3/default_ortho_2x3/keymap.c create mode 100644 layouts/default/ortho_2x3/info.json create mode 100644 layouts/default/ortho_2x3/layout.json create mode 100644 layouts/default/ortho_2x3/readme.md create mode 100644 layouts/default/ortho_2x6/default_ortho_2x6/keymap.c create mode 100644 layouts/default/ortho_2x6/info.json create mode 100644 layouts/default/ortho_2x6/layout.json create mode 100644 layouts/default/ortho_2x6/readme.md create mode 100644 layouts/default/ortho_4x6/default_ortho_4x6/keymap.c create mode 100644 layouts/default/ortho_4x6/info.json create mode 100644 layouts/default/ortho_4x6/layout.json create mode 100644 layouts/default/ortho_4x6/readme.md create mode 100644 layouts/default/ortho_5x10/default_ortho_5x10/keymap.c create mode 100644 layouts/default/ortho_5x10/info.json create mode 100644 layouts/default/ortho_5x10/layout.json create mode 100644 layouts/default/ortho_5x10/readme.md create mode 100644 layouts/default/ortho_5x5/info.json create mode 100644 layouts/default/ortho_5x5/layout.json create mode 100644 layouts/default/ortho_5x5/readme.md create mode 100644 layouts/default/tkl_nofrow_ansi/default_tkl_nofrow_ansi/keymap.c create mode 100644 layouts/default/tkl_nofrow_ansi/info.json create mode 100644 layouts/default/tkl_nofrow_ansi/layout.json create mode 100644 layouts/default/tkl_nofrow_ansi/readme.md create mode 100755 lib/python/qmk/cli/cd.py mode change 100644 => 100755 lib/python/qmk/cli/cformat.py delete mode 100644 lib/python/qmk/cli/console.py delete mode 100755 lib/python/qmk/cli/doctor.py create mode 100755 lib/python/qmk/cli/doctor/__init__.py create mode 100644 lib/python/qmk/cli/doctor/check.py create mode 100644 lib/python/qmk/cli/doctor/linux.py create mode 100644 lib/python/qmk/cli/doctor/macos.py create mode 100755 lib/python/qmk/cli/doctor/main.py create mode 100644 lib/python/qmk/cli/doctor/windows.py mode change 100644 => 100755 lib/python/qmk/cli/fileformat.py create mode 100644 lib/python/qmk/cli/format/c.py create mode 100755 lib/python/qmk/cli/format/python.py create mode 100644 lib/python/qmk/cli/format/text.py create mode 100755 lib/python/qmk/cli/generate/compilation_database.py create mode 100755 lib/python/qmk/cli/generate/develop_pr_list.py create mode 100644 lib/python/qmk/cli/generate/version_h.py create mode 100644 lib/python/qmk/cli/list/layouts.py delete mode 100644 lib/python/qmk/os_helpers/__init__.py delete mode 100644 lib/python/qmk/os_helpers/linux/__init__.py delete mode 160000 lib/ugfx rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/.gitattributes (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/.gitignore (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/.gitmodules (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/BTD.cpp (100%) mode change 100755 => 100644 rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/BTD.h (100%) mode change 100755 => 100644 rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/BTHID.cpp (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/BTHID.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/PS3BT.cpp (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/PS3BT.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/PS3Enums.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/PS3USB.cpp (100%) mode change 100755 => 100644 rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/PS3USB.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/PS4BT.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/PS4Parser.cpp (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/PS4Parser.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/PS4USB.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/PSBuzz.cpp (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/PSBuzz.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/README.md (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/SPP.cpp (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/SPP.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/Usb.cpp (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/Usb.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/UsbCore.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/Wii.cpp (100%) mode change 100755 => 100644 rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/Wii.h (100%) mode change 100755 => 100644 rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/WiiCameraReadme.md (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/XBOXOLD.cpp (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/XBOXOLD.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/XBOXONE.cpp (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/XBOXONE.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/XBOXRECV.cpp (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/XBOXRECV.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/XBOXUSB.cpp (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/XBOXUSB.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/address.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/adk.cpp (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/adk.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/avrpins.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/cdc_XR21B1411.cpp (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/cdc_XR21B1411.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/cdcacm.cpp (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/cdcacm.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/cdcftdi.cpp (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/cdcftdi.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/cdcprolific.cpp (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/cdcprolific.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/confdescparser.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/controllerEnums.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/Bluetooth/BTHID/BTHID.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/Bluetooth/BTHID/KeyboardParser.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/Bluetooth/BTHID/MouseParser.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/Bluetooth/PS3BT/PS3BT.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/Bluetooth/PS3Multi/PS3Multi.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/Bluetooth/PS3SPP/PS3SPP.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/Bluetooth/PS4BT/PS4BT.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/Bluetooth/SPP/SPP.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/Bluetooth/SPPMulti/SPPMulti.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/Bluetooth/Wii/Wii.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/Bluetooth/WiiBalanceBoard/WiiBalanceBoard.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/Bluetooth/WiiIRCamera/WiiIRCamera.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/Bluetooth/WiiMulti/WiiMulti.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/Bluetooth/WiiUProController/WiiUProController.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/HID/USBHIDBootKbd/USBHIDBootKbd.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/HID/USBHIDBootKbdAndMouse/USBHIDBootKbdAndMouse.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/HID/USBHIDBootMouse/USBHIDBootMouse.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/HID/USBHIDJoystick/USBHIDJoystick.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/HID/USBHIDJoystick/hidjoystickrptparser.cpp (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/HID/USBHIDJoystick/hidjoystickrptparser.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/HID/USBHID_desc/USBHID_desc.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/HID/USBHID_desc/pgmstrings.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/HID/le3dp/le3dp.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/HID/le3dp/le3dp_rptparser.cpp (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/HID/le3dp/le3dp_rptparser.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/HID/scale/scale.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/HID/scale/scale_rptparser.cpp (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/HID/scale/scale_rptparser.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/PS3USB/PS3USB.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/PS4USB/PS4USB.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/PSBuzz/PSBuzz.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/USB_desc/USB_desc.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/USB_desc/pgmstrings.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/Xbox/XBOXOLD/XBOXOLD.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/Xbox/XBOXONE/XBOXONE.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/Xbox/XBOXRECV/XBOXRECV.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/Xbox/XBOXUSB/XBOXUSB.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/acm/acm_terminal/acm_terminal.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/acm/acm_terminal/pgmstrings.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/adk/ArduinoBlinkLED/ArduinoBlinkLED.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/adk/adk_barcode/adk_barcode.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/adk/demokit_20/demokit_20.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/adk/term_test/term_test.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/adk/term_time/term_time.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/board_qc/board_qc.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/cdc_XR21B1411/XR_terminal/XR_terminal.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/ftdi/USBFTDILoopback/USBFTDILoopback.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/ftdi/USBFTDILoopback/pgmstrings.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/hub_demo/hub_demo.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/hub_demo/pgmstrings.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/max_LCD/max_LCD.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/pl2303/pl2303_gprs_terminal/pl2303_gprs_terminal.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/pl2303/pl2303_gps/pl2303_gps.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/pl2303/pl2303_tinygps/pl2303_tinygps.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/pl2303/pl2303_xbee_terminal/pl2303_xbee_terminal.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/testusbhostFAT/Makefile (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/testusbhostFAT/README.md (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/examples/testusbhostFAT/testusbhostFAT.ino (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/gpl2.txt (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/hexdump.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/hid.cpp (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/hid.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/hidboot.cpp (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/hidboot.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/hidescriptorparser.cpp (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/hidescriptorparser.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/hiduniversal.cpp (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/hiduniversal.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/hidusagestr.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/hidusagetitlearrays.cpp (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/keywords.txt (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/library.json (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/library.properties (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/macros.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/masstorage.cpp (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/masstorage.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/max3421e.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/max_LCD.cpp (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/max_LCD.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/message.cpp (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/message.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/parsetools.cpp (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/parsetools.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/printhex.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/settings.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/sink_parser.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/usb_ch9.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/usbhost.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/usbhub.cpp (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/usbhub.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/version_helper.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/USB_Host_Shield_2.0/xboxEnums.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/arduino-1.0.1/cores/arduino/Arduino.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/arduino-1.0.1/cores/arduino/CDC.cpp (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/arduino-1.0.1/cores/arduino/Client.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/arduino-1.0.1/cores/arduino/HID.cpp (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/arduino-1.0.1/cores/arduino/HardwareSerial.cpp (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/arduino-1.0.1/cores/arduino/HardwareSerial.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/arduino-1.0.1/cores/arduino/IPAddress.cpp (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/arduino-1.0.1/cores/arduino/IPAddress.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/arduino-1.0.1/cores/arduino/Platform.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/arduino-1.0.1/cores/arduino/Print.cpp (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/arduino-1.0.1/cores/arduino/Print.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/arduino-1.0.1/cores/arduino/Printable.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/arduino-1.0.1/cores/arduino/Server.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/arduino-1.0.1/cores/arduino/Stream.cpp (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/arduino-1.0.1/cores/arduino/Stream.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/arduino-1.0.1/cores/arduino/Tone.cpp (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/arduino-1.0.1/cores/arduino/USBAPI.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/arduino-1.0.1/cores/arduino/USBCore.cpp (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/arduino-1.0.1/cores/arduino/USBCore.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/arduino-1.0.1/cores/arduino/USBDesc.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/arduino-1.0.1/cores/arduino/Udp.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/arduino-1.0.1/cores/arduino/WCharacter.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/arduino-1.0.1/cores/arduino/WInterrupts.c (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/arduino-1.0.1/cores/arduino/WMath.cpp (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/arduino-1.0.1/cores/arduino/WString.cpp (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/arduino-1.0.1/cores/arduino/WString.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/arduino-1.0.1/cores/arduino/binary.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/arduino-1.0.1/cores/arduino/main.cpp (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/arduino-1.0.1/cores/arduino/new.cpp (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/arduino-1.0.1/cores/arduino/new.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/arduino-1.0.1/cores/arduino/wiring.c (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/arduino-1.0.1/cores/arduino/wiring_analog.c (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/arduino-1.0.1/cores/arduino/wiring_digital.c (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/arduino-1.0.1/cores/arduino/wiring_private.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/arduino-1.0.1/cores/arduino/wiring_pulse.c (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/arduino-1.0.1/cores/arduino/wiring_shift.c (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/arduino-1.0.1/variants/eightanaloginputs/pins_arduino.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/arduino-1.0.1/variants/leonardo/pins_arduino.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/arduino-1.0.1/variants/mega/pins_arduino.h (100%) rename {tmk_core/protocol/usb_hid => lib/usbhost}/arduino-1.0.1/variants/standard/pins_arduino.h (100%) delete mode 100644 nix/pyproject.toml create mode 100644 paths.mk create mode 100644 platforms/arm_atsam/_timer.h rename {tmk_core/common => platforms}/arm_atsam/_wait.h (100%) create mode 100644 platforms/arm_atsam/atomic_util.h rename {tmk_core/common => platforms}/arm_atsam/bootloader.c (100%) create mode 100644 platforms/arm_atsam/eeprom.c create mode 100644 platforms/arm_atsam/flash.mk create mode 100644 platforms/arm_atsam/gpio.h create mode 100644 platforms/arm_atsam/pin_defs.h create mode 100644 platforms/arm_atsam/platform.c create mode 100644 platforms/arm_atsam/platform.mk create mode 100644 platforms/arm_atsam/platform_deps.h rename {tmk_core/common => platforms}/arm_atsam/suspend.c (100%) rename {tmk_core/common => platforms}/arm_atsam/timer.c (100%) rename {tmk_core/common => platforms}/atomic_util.h (100%) rename {tmk_core/common => platforms}/avr/_print.h (100%) create mode 100644 platforms/avr/_timer.h create mode 100644 platforms/avr/_wait.h rename {tmk_core/common => platforms}/avr/atomic_util.h (100%) rename {tmk_core/common => platforms}/avr/bootloader.c (100%) rename {tmk_core/common => platforms}/avr/bootloader_size.c (100%) create mode 100644 platforms/avr/drivers/analog.c rename {drivers/avr => platforms/avr/drivers}/analog.h (96%) rename quantum/audio/driver_avr_pwm.h => platforms/avr/drivers/audio_pwm.h (100%) rename quantum/audio/driver_avr_pwm_hardware.c => platforms/avr/drivers/audio_pwm_hardware.c (100%) rename {drivers/avr => platforms/avr/drivers}/glcdfont.c (100%) rename {drivers/avr => platforms/avr/drivers}/hd44780.c (100%) rename {drivers/avr => platforms/avr/drivers}/hd44780.h (100%) create mode 100644 platforms/avr/drivers/i2c_master.c create mode 100644 platforms/avr/drivers/i2c_master.h create mode 100644 platforms/avr/drivers/i2c_slave.c create mode 100644 platforms/avr/drivers/i2c_slave.h create mode 100644 platforms/avr/drivers/ps2/ps2_io.c rename {tmk_core/protocol => platforms/avr/drivers/ps2}/ps2_usart.c (94%) create mode 100644 platforms/avr/drivers/serial.c rename {drivers/avr => platforms/avr/drivers}/spi_master.c (100%) rename {drivers/avr => platforms/avr/drivers}/spi_master.h (100%) rename {drivers/avr => platforms/avr/drivers}/ssd1306.c (100%) rename {drivers/avr => platforms/avr/drivers}/ssd1306.h (100%) create mode 100644 platforms/avr/drivers/uart.c create mode 100644 platforms/avr/drivers/uart.h create mode 100644 platforms/avr/drivers/ws2812.c rename {drivers/avr => platforms/avr/drivers}/ws2812_i2c.c (100%) create mode 100644 platforms/avr/flash.mk create mode 100644 platforms/avr/gpio.h rename {tmk_core/common => platforms}/avr/pin_defs.h (100%) create mode 100644 platforms/avr/platform.c create mode 100644 platforms/avr/platform.mk create mode 100644 platforms/avr/platform_deps.h rename {tmk_core/common => platforms}/avr/printf.c (100%) rename {tmk_core/common => platforms}/avr/printf.mk (100%) rename {tmk_core/common => platforms}/avr/sleep_led.c (100%) create mode 100644 platforms/avr/suspend.c rename {tmk_core/common => platforms}/avr/timer.c (100%) rename {tmk_core/common => platforms}/avr/timer_avr.h (100%) rename {tmk_core/common => platforms}/avr/xprintf.S (100%) rename {tmk_core/common => platforms}/avr/xprintf.h (100%) rename {tmk_core/common => platforms}/bootloader.h (100%) delete mode 100644 platforms/chibios/BLACKPILL_STM32_F401/configs/mcuconf.h delete mode 100644 platforms/chibios/BLACKPILL_STM32_F411/configs/mcuconf.h delete mode 100644 platforms/chibios/GENERIC_STM32_F446XE/configs/mcuconf.h delete mode 100644 platforms/chibios/GENERIC_STM32_G431XB/configs/mcuconf.h delete mode 100644 platforms/chibios/GENERIC_STM32_G474XE/configs/mcuconf.h delete mode 100644 platforms/chibios/GENERIC_STM32_L433XC/configs/board.h delete mode 100644 platforms/chibios/IC_TEENSY_3_1/board/board.c delete mode 100644 platforms/chibios/QMK_PROTON_C/configs/chconf.h delete mode 100644 platforms/chibios/QMK_PROTON_C/configs/config.h delete mode 100644 platforms/chibios/QMK_PROTON_C/configs/halconf.h create mode 100644 platforms/chibios/_timer.h create mode 100644 platforms/chibios/_wait.c create mode 100644 platforms/chibios/_wait.h rename {tmk_core/common => platforms}/chibios/atomic_util.h (100%) rename platforms/chibios/{ => boards}/BLACKPILL_STM32_F401/board/board.mk (100%) rename platforms/chibios/{ => boards}/BLACKPILL_STM32_F401/configs/board.h (100%) rename platforms/chibios/{ => boards}/BLACKPILL_STM32_F401/configs/bootloader_defs.h (100%) rename platforms/chibios/{ => boards}/BLACKPILL_STM32_F401/configs/config.h (100%) create mode 100644 platforms/chibios/boards/BLACKPILL_STM32_F401/configs/mcuconf.h create mode 100644 platforms/chibios/boards/BLACKPILL_STM32_F401/ld/STM32F401xC_tinyuf2.ld create mode 100644 platforms/chibios/boards/BLACKPILL_STM32_F401/ld/STM32F401xE_tinyuf2.ld rename platforms/chibios/{ => boards}/BLACKPILL_STM32_F411/board/board.mk (100%) rename platforms/chibios/{ => boards}/BLACKPILL_STM32_F411/configs/board.h (100%) rename platforms/chibios/{ => boards}/BLACKPILL_STM32_F411/configs/bootloader_defs.h (100%) rename platforms/chibios/{ => boards}/BLACKPILL_STM32_F411/configs/config.h (100%) create mode 100644 platforms/chibios/boards/BLACKPILL_STM32_F411/configs/mcuconf.h rename platforms/chibios/{ => boards}/BLACKPILL_STM32_F411/ld/STM32F411xC_tinyuf2.ld (100%) rename platforms/chibios/{ => boards}/BLACKPILL_STM32_F411/ld/STM32F411xE_tinyuf2.ld (100%) rename platforms/chibios/{ => boards}/GENERIC_STM32_F042X6/board/board.c (100%) rename platforms/chibios/{ => boards}/GENERIC_STM32_F042X6/board/board.h (100%) rename platforms/chibios/{ => boards}/GENERIC_STM32_F042X6/board/board.mk (100%) rename platforms/chibios/{ => boards}/GENERIC_STM32_F042X6/configs/bootloader_defs.h (100%) rename platforms/chibios/{ => boards}/GENERIC_STM32_F042X6/configs/config.h (100%) rename platforms/chibios/{ => boards}/GENERIC_STM32_F042X6/configs/mcuconf.h (100%) rename platforms/chibios/{ => boards}/GENERIC_STM32_F072XB/board/board.mk (100%) rename platforms/chibios/{ => boards}/GENERIC_STM32_F072XB/configs/board.h (100%) rename platforms/chibios/{ => boards}/GENERIC_STM32_F072XB/configs/bootloader_defs.h (100%) rename platforms/chibios/{ => boards}/GENERIC_STM32_F072XB/configs/config.h (100%) rename platforms/chibios/{ => boards}/GENERIC_STM32_F072XB/configs/mcuconf.h (100%) rename platforms/chibios/{ => boards}/GENERIC_STM32_F303XC/board/board.mk (100%) rename platforms/chibios/{ => boards}/GENERIC_STM32_F303XC/configs/board.h (100%) rename platforms/chibios/{ => boards}/GENERIC_STM32_F303XC/configs/bootloader_defs.h (100%) rename platforms/chibios/{ => boards}/GENERIC_STM32_F303XC/configs/config.h (100%) rename platforms/chibios/{ => boards}/GENERIC_STM32_F303XC/configs/mcuconf.h (100%) create mode 100644 platforms/chibios/boards/GENERIC_STM32_F405XG/board/board.mk create mode 100644 platforms/chibios/boards/GENERIC_STM32_F405XG/configs/board.h rename platforms/chibios/{GENERIC_STM32_F446XE => boards/GENERIC_STM32_F405XG}/configs/config.h (100%) create mode 100644 platforms/chibios/boards/GENERIC_STM32_F405XG/configs/mcuconf.h create mode 100644 platforms/chibios/boards/GENERIC_STM32_F407XE/board/board.mk create mode 100644 platforms/chibios/boards/GENERIC_STM32_F407XE/configs/board.h create mode 100644 platforms/chibios/boards/GENERIC_STM32_F407XE/configs/config.h create mode 100644 platforms/chibios/boards/GENERIC_STM32_F407XE/configs/mcuconf.h rename platforms/chibios/{ => boards}/GENERIC_STM32_F446XE/board/board.mk (100%) rename platforms/chibios/{ => boards}/GENERIC_STM32_F446XE/configs/board.h (100%) create mode 100644 platforms/chibios/boards/GENERIC_STM32_F446XE/configs/config.h create mode 100644 platforms/chibios/boards/GENERIC_STM32_F446XE/configs/mcuconf.h rename platforms/chibios/{ => boards}/GENERIC_STM32_G431XB/board/board.mk (100%) rename platforms/chibios/{ => boards}/GENERIC_STM32_G431XB/configs/config.h (100%) create mode 100644 platforms/chibios/boards/GENERIC_STM32_G431XB/configs/mcuconf.h rename platforms/chibios/{ => boards}/GENERIC_STM32_G474XE/board/board.mk (100%) rename platforms/chibios/{ => boards}/GENERIC_STM32_G474XE/configs/config.h (100%) create mode 100644 platforms/chibios/boards/GENERIC_STM32_G474XE/configs/mcuconf.h rename platforms/chibios/{GENERIC_STM32_L433XC => boards/GENERIC_STM32_L412XB}/board/board.mk (100%) create mode 100644 platforms/chibios/boards/GENERIC_STM32_L412XB/configs/board.h rename platforms/chibios/{GENERIC_STM32_L433XC => boards/GENERIC_STM32_L412XB}/configs/config.h (100%) create mode 100644 platforms/chibios/boards/GENERIC_STM32_L412XB/configs/mcuconf.h create mode 100644 platforms/chibios/boards/GENERIC_STM32_L433XC/board/board.mk create mode 100644 platforms/chibios/boards/GENERIC_STM32_L433XC/configs/board.h create mode 100644 platforms/chibios/boards/GENERIC_STM32_L433XC/configs/config.h rename platforms/chibios/{ => boards}/GENERIC_STM32_L433XC/configs/mcuconf.h (100%) create mode 100644 platforms/chibios/boards/GENERIC_WB32_F3G71XX/board/board.c create mode 100644 platforms/chibios/boards/GENERIC_WB32_F3G71XX/board/board.h rename platforms/chibios/{IC_TEENSY_3_1 => boards/GENERIC_WB32_F3G71XX}/board/board.mk (100%) create mode 100644 platforms/chibios/boards/GENERIC_WB32_F3G71XX/configs/bootloader_defs.h create mode 100644 platforms/chibios/boards/GENERIC_WB32_F3G71XX/configs/chconf.h create mode 100644 platforms/chibios/boards/GENERIC_WB32_F3G71XX/configs/config.h create mode 100644 platforms/chibios/boards/GENERIC_WB32_F3G71XX/configs/mcuconf.h create mode 100644 platforms/chibios/boards/IC_TEENSY_3_1/board/board.c rename platforms/chibios/{ => boards}/IC_TEENSY_3_1/board/board.h (100%) rename platforms/chibios/{STM32_F103_STM32DUINO => boards/IC_TEENSY_3_1}/board/board.mk (100%) create mode 100644 platforms/chibios/boards/IC_TEENSY_4_1/board/board.mk create mode 100644 platforms/chibios/boards/IC_TEENSY_4_1/rules.mk rename platforms/chibios/{ => boards}/QMK_PROTON_C/board/board.mk (100%) rename platforms/chibios/{ => boards}/QMK_PROTON_C/configs/board.h (100%) rename platforms/chibios/{ => boards}/QMK_PROTON_C/configs/bootloader_defs.h (100%) create mode 100644 platforms/chibios/boards/QMK_PROTON_C/configs/chconf.h create mode 100644 platforms/chibios/boards/QMK_PROTON_C/configs/config.h create mode 100644 platforms/chibios/boards/QMK_PROTON_C/configs/halconf.h rename platforms/chibios/{ => boards}/QMK_PROTON_C/configs/mcuconf.h (100%) rename platforms/chibios/{ => boards}/QMK_PROTON_C/convert_to_proton_c.mk (100%) create mode 100644 platforms/chibios/boards/SIPEED_LONGAN_NANO/board/board.mk create mode 100644 platforms/chibios/boards/SIPEED_LONGAN_NANO/configs/chconf.h create mode 100644 platforms/chibios/boards/SIPEED_LONGAN_NANO/configs/mcuconf.h rename platforms/chibios/{ => boards}/STM32_F103_STM32DUINO/board/board.c (100%) rename platforms/chibios/{ => boards}/STM32_F103_STM32DUINO/board/board.h (100%) create mode 100644 platforms/chibios/boards/STM32_F103_STM32DUINO/board/board.mk rename platforms/chibios/{ => boards}/STM32_F103_STM32DUINO/configs/mcuconf.h (100%) create mode 100644 platforms/chibios/boards/STM32_F103_STM32DUINO/ld/STM32F103x8_stm32duino_bootloader.ld create mode 100644 platforms/chibios/boards/STM32_F103_STM32DUINO/ld/STM32F103xB_stm32duino_bootloader.ld create mode 100644 platforms/chibios/boards/STM32_F103_STM32DUINO/ld/stm32duino_bootloader_common.ld create mode 100644 platforms/chibios/boards/common/configs/chconf.h create mode 100644 platforms/chibios/boards/common/configs/halconf.h rename platforms/chibios/{ => boards}/common/ld/MKL26Z64.ld (100%) create mode 100644 platforms/chibios/boards/common/ld/STM32F401xC.ld create mode 100644 platforms/chibios/boards/common/ld/STM32F401xE.ld create mode 100644 platforms/chibios/boards/common/ld/STM32F405xG.ld create mode 100644 platforms/chibios/boards/common/ld/STM32F411xE.ld create mode 100644 platforms/chibios/boards/common/ld/STM32L412xB.ld rename platforms/chibios/{ => boards}/keyboard-config-templates/board.h (100%) rename platforms/chibios/{ => boards}/keyboard-config-templates/chconf.h (100%) rename platforms/chibios/{ => boards}/keyboard-config-templates/halconf.h (100%) rename platforms/chibios/{ => boards}/keyboard-config-templates/mcuconf.h (100%) rename {tmk_core/common => platforms}/chibios/bootloader.c (78%) create mode 100644 platforms/chibios/chibios_config.h delete mode 100644 platforms/chibios/common/configs/chconf.h delete mode 100644 platforms/chibios/common/configs/halconf.h delete mode 100644 platforms/chibios/common/ld/STM32F103x8_stm32duino_bootloader.ld create mode 100644 platforms/chibios/drivers/analog.c rename {drivers/chibios => platforms/chibios/drivers}/analog.h (100%) rename quantum/audio/driver_chibios_dac.h => platforms/chibios/drivers/audio_dac.h (100%) rename quantum/audio/driver_chibios_dac_additive.c => platforms/chibios/drivers/audio_dac_additive.c (100%) rename quantum/audio/driver_chibios_dac_basic.c => platforms/chibios/drivers/audio_dac_basic.c (100%) rename quantum/audio/driver_chibios_pwm.h => platforms/chibios/drivers/audio_pwm.h (100%) create mode 100644 platforms/chibios/drivers/audio_pwm_hardware.c rename quantum/audio/driver_chibios_pwm_software.c => platforms/chibios/drivers/audio_pwm_software.c (100%) rename {drivers => platforms/chibios/drivers}/eeprom/eeprom_stm32_L0_L1.c (100%) rename {drivers => platforms/chibios/drivers}/eeprom/eeprom_stm32_L0_L1.h (100%) create mode 100644 platforms/chibios/drivers/i2c_master.c create mode 100644 platforms/chibios/drivers/i2c_master.h create mode 100644 platforms/chibios/drivers/ps2/ps2_io.c create mode 100644 platforms/chibios/drivers/serial.c create mode 100644 platforms/chibios/drivers/serial_usart.c create mode 100644 platforms/chibios/drivers/serial_usart.h create mode 100644 platforms/chibios/drivers/spi_master.c create mode 100644 platforms/chibios/drivers/spi_master.h create mode 100644 platforms/chibios/drivers/uart.c create mode 100644 platforms/chibios/drivers/uart.h rename {drivers/chibios => platforms/chibios/drivers}/usbpd_stm32g4.c (100%) create mode 100644 platforms/chibios/drivers/ws2812.c rename {drivers/chibios => platforms/chibios/drivers}/ws2812_pwm.c (85%) rename {drivers/chibios => platforms/chibios/drivers}/ws2812_spi.c (78%) create mode 100644 platforms/chibios/eeprom_stm32.c create mode 100644 platforms/chibios/eeprom_stm32.h create mode 100644 platforms/chibios/eeprom_stm32_defs.h create mode 100644 platforms/chibios/eeprom_teensy.c create mode 100644 platforms/chibios/flash.mk rename {tmk_core/common => platforms}/chibios/flash_stm32.c (80%) rename {tmk_core/common => platforms}/chibios/flash_stm32.h (93%) create mode 100644 platforms/chibios/gd32v_compatibility.h create mode 100644 platforms/chibios/gpio.h rename {tmk_core/common => platforms}/chibios/pin_defs.h (100%) create mode 100644 platforms/chibios/platform.c create mode 100644 platforms/chibios/platform.mk create mode 100644 platforms/chibios/platform_deps.h rename {tmk_core/common => platforms}/chibios/sleep_led.c (98%) create mode 100644 platforms/chibios/suspend.c rename {tmk_core/common => platforms}/chibios/syscall-fallbacks.c (94%) rename {tmk_core/common => platforms}/chibios/timer.c (100%) create mode 100644 platforms/chibios/wait.c create mode 100644 platforms/common.mk rename {tmk_core/common => platforms}/eeprom.h (100%) rename {tmk_core/common => platforms}/gpio.h (100%) rename {tmk_core/common => platforms}/pin_defs.h (100%) rename {tmk_core/common => platforms}/progmem.h (96%) rename {tmk_core/common => platforms}/sleep_led.h (100%) rename {tmk_core/common => platforms}/suspend.h (84%) rename {tmk_core/common => platforms}/test/_wait.h (100%) rename {tmk_core/common => platforms}/test/bootloader.c (100%) rename {tmk_core/common => platforms}/test/eeprom.c (100%) create mode 100644 platforms/test/eeprom_stm32_tests.cpp create mode 100644 platforms/test/flash_stm32_mock.c create mode 100644 platforms/test/hal.h create mode 100644 platforms/test/platform.c create mode 100644 platforms/test/platform.h create mode 100644 platforms/test/platform.mk create mode 100644 platforms/test/platform_deps.h create mode 100644 platforms/test/rules.mk rename {tmk_core/common => platforms}/test/suspend.c (100%) create mode 100644 platforms/test/testlist.mk rename {tmk_core/common => platforms}/test/timer.c (100%) create mode 100644 platforms/timer.h rename {tmk_core/common => platforms}/wait.h (100%) rename {tmk_core/common => quantum}/action.c (76%) rename {tmk_core/common => quantum}/action.h (92%) rename {tmk_core/common => quantum}/action_code.h (100%) rename {tmk_core/common => quantum}/action_layer.c (95%) rename {tmk_core/common => quantum}/action_layer.h (83%) rename {tmk_core/common => quantum}/action_macro.c (100%) rename {tmk_core/common => quantum}/action_macro.h (100%) create mode 100644 quantum/action_tapping.c rename {tmk_core/common => quantum}/action_tapping.h (90%) rename {tmk_core/common => quantum}/action_util.c (91%) rename {tmk_core/common => quantum}/action_util.h (100%) delete mode 100644 quantum/api.c delete mode 100644 quantum/api.h delete mode 100644 quantum/api/api_sysex.c delete mode 100644 quantum/api/api_sysex.h delete mode 100644 quantum/audio/driver_chibios_pwm_hardware.c delete mode 100644 quantum/bootmagic/bootmagic_full.c delete mode 100644 quantum/bootmagic/bootmagic_full.h create mode 100644 quantum/crc.c create mode 100644 quantum/crc.h create mode 100644 quantum/debounce/asym_eager_defer_pk.c create mode 100644 quantum/debounce/none.c create mode 100644 quantum/debounce/tests/asym_eager_defer_pk_tests.cpp create mode 100644 quantum/debounce/tests/debounce_test_common.cpp create mode 100644 quantum/debounce/tests/debounce_test_common.h create mode 100644 quantum/debounce/tests/rules.mk create mode 100644 quantum/debounce/tests/sym_defer_g_tests.cpp create mode 100644 quantum/debounce/tests/sym_defer_pk_tests.cpp create mode 100644 quantum/debounce/tests/sym_eager_pk_tests.cpp create mode 100644 quantum/debounce/tests/sym_eager_pr_tests.cpp create mode 100644 quantum/debounce/tests/testlist.mk create mode 100644 quantum/deferred_exec.c create mode 100644 quantum/deferred_exec.h create mode 100644 quantum/digitizer.c create mode 100644 quantum/digitizer.h rename {tmk_core/common => quantum}/eeconfig.c (85%) create mode 100644 quantum/eeconfig.h create mode 100644 quantum/encoder/tests/encoder_tests.cpp create mode 100644 quantum/encoder/tests/encoder_tests_split.cpp create mode 100644 quantum/encoder/tests/mock.c create mode 100644 quantum/encoder/tests/mock.h create mode 100644 quantum/encoder/tests/mock_split.c create mode 100644 quantum/encoder/tests/mock_split.h create mode 100644 quantum/encoder/tests/rules.mk create mode 100644 quantum/encoder/tests/testlist.mk rename {drivers/haptic => quantum}/haptic.c (80%) create mode 100644 quantum/haptic.h create mode 100644 quantum/keyboard.c rename {tmk_core/common => quantum}/keyboard.h (100%) create mode 100644 quantum/keycode.h create mode 100644 quantum/keycode_legacy.h create mode 100644 quantum/keymap_extras/keymap_swedish_osx_ansi.h create mode 100644 quantum/keymap_extras/keymap_swedish_osx_iso.h create mode 100644 quantum/keymap_extras/keymap_swedish_pro_osx_ansi.h create mode 100644 quantum/keymap_extras/keymap_swedish_pro_osx_iso.h delete mode 100644 quantum/led_matrix.h create mode 100644 quantum/led_matrix/animations/alpha_mods_anim.h rename quantum/{led_matrix_animations => led_matrix/animations}/band_anim.h (84%) rename quantum/{led_matrix_animations => led_matrix/animations}/band_pinwheel_anim.h (81%) rename quantum/{led_matrix_animations => led_matrix/animations}/band_spiral_anim.h (82%) create mode 100644 quantum/led_matrix/animations/breathing_anim.h create mode 100644 quantum/led_matrix/animations/cycle_left_right_anim.h create mode 100644 quantum/led_matrix/animations/cycle_out_in_anim.h create mode 100644 quantum/led_matrix/animations/cycle_up_down_anim.h create mode 100644 quantum/led_matrix/animations/dual_beacon_anim.h create mode 100644 quantum/led_matrix/animations/led_matrix_effects.inc create mode 100644 quantum/led_matrix/animations/runners/effect_runner_dx_dy.h create mode 100644 quantum/led_matrix/animations/runners/effect_runner_dx_dy_dist.h create mode 100644 quantum/led_matrix/animations/runners/effect_runner_i.h create mode 100644 quantum/led_matrix/animations/runners/effect_runner_reactive.h create mode 100644 quantum/led_matrix/animations/runners/effect_runner_reactive_splash.h create mode 100644 quantum/led_matrix/animations/runners/effect_runner_sin_cos_i.h create mode 100644 quantum/led_matrix/animations/runners/led_matrix_runners.inc rename quantum/{led_matrix_animations => led_matrix/animations}/solid_anim.h (87%) create mode 100644 quantum/led_matrix/animations/solid_reactive_cross.h create mode 100644 quantum/led_matrix/animations/solid_reactive_nexus.h create mode 100644 quantum/led_matrix/animations/solid_reactive_simple_anim.h create mode 100644 quantum/led_matrix/animations/solid_reactive_wide.h create mode 100644 quantum/led_matrix/animations/solid_splash_anim.h rename quantum/{led_matrix_animations => led_matrix/animations}/wave_left_right_anim.h (80%) rename quantum/{led_matrix_animations => led_matrix/animations}/wave_up_down_anim.h (80%) rename quantum/{ => led_matrix}/led_matrix.c (90%) create mode 100644 quantum/led_matrix/led_matrix.h create mode 100644 quantum/led_matrix/led_matrix_drivers.c rename quantum/{ => led_matrix}/led_matrix_types.h (100%) delete mode 100644 quantum/led_matrix_animations/alpha_mods_anim.h delete mode 100644 quantum/led_matrix_animations/breathing_anim.h delete mode 100644 quantum/led_matrix_animations/cycle_left_right_anim.h delete mode 100644 quantum/led_matrix_animations/cycle_out_in_anim.h delete mode 100644 quantum/led_matrix_animations/cycle_up_down_anim.h delete mode 100644 quantum/led_matrix_animations/dual_beacon_anim.h delete mode 100644 quantum/led_matrix_animations/led_matrix_effects.inc delete mode 100644 quantum/led_matrix_animations/solid_reactive_cross.h delete mode 100644 quantum/led_matrix_animations/solid_reactive_nexus.h delete mode 100644 quantum/led_matrix_animations/solid_reactive_simple_anim.h delete mode 100644 quantum/led_matrix_animations/solid_reactive_wide.h delete mode 100644 quantum/led_matrix_animations/solid_splash_anim.h delete mode 100644 quantum/led_matrix_drivers.c delete mode 100644 quantum/led_matrix_runners/effect_runner_dx_dy.h delete mode 100644 quantum/led_matrix_runners/effect_runner_dx_dy_dist.h delete mode 100644 quantum/led_matrix_runners/effect_runner_i.h delete mode 100644 quantum/led_matrix_runners/effect_runner_reactive.h delete mode 100644 quantum/led_matrix_runners/effect_runner_reactive_splash.h delete mode 100644 quantum/led_matrix_runners/effect_runner_sin_cos_i.h rename {tmk_core/common => quantum/logging}/debug.c (100%) rename {tmk_core/common => quantum/logging}/debug.h (98%) rename {tmk_core/common => quantum/logging}/nodebug.h (100%) rename tmk_core/common/printf.c => quantum/logging/print.c (100%) rename {tmk_core/common => quantum/logging}/print.h (98%) create mode 100644 quantum/logging/print.mk create mode 100644 quantum/logging/sendchar.c rename {tmk_core/common => quantum/logging}/sendchar.h (100%) create mode 100644 quantum/main.c delete mode 100644 quantum/mcu_selection.mk create mode 100644 quantum/pointing_device_drivers.c create mode 100644 quantum/process_keycode/process_dynamic_tapping_term.c create mode 100644 quantum/process_keycode/process_dynamic_tapping_term.h create mode 100644 quantum/process_keycode/process_haptic.c create mode 100644 quantum/process_keycode/process_haptic.h create mode 100644 quantum/process_keycode/process_key_override.c create mode 100644 quantum/process_keycode/process_key_override.h create mode 100644 quantum/process_keycode/process_programmable_button.c create mode 100644 quantum/process_keycode/process_programmable_button.h create mode 100644 quantum/programmable_button.c create mode 100644 quantum/programmable_button.h rename {tmk_core/common => quantum}/raw_hid.h (100%) delete mode 100644 quantum/rgb.h create mode 100644 quantum/rgb_matrix/animations/alpha_mods_anim.h create mode 100644 quantum/rgb_matrix/animations/breathing_anim.h rename quantum/{rgb_matrix_animations => rgb_matrix/animations}/colorband_pinwheel_sat_anim.h (80%) rename quantum/{rgb_matrix_animations => rgb_matrix/animations}/colorband_pinwheel_val_anim.h (80%) rename quantum/{rgb_matrix_animations => rgb_matrix/animations}/colorband_sat_anim.h (84%) rename quantum/{rgb_matrix_animations => rgb_matrix/animations}/colorband_spiral_sat_anim.h (81%) rename quantum/{rgb_matrix_animations => rgb_matrix/animations}/colorband_spiral_val_anim.h (81%) rename quantum/{rgb_matrix_animations => rgb_matrix/animations}/colorband_val_anim.h (84%) rename quantum/{rgb_matrix_animations => rgb_matrix/animations}/cycle_all_anim.h (79%) create mode 100644 quantum/rgb_matrix/animations/cycle_left_right_anim.h create mode 100644 quantum/rgb_matrix/animations/cycle_out_in_anim.h rename quantum/{rgb_matrix_animations => rgb_matrix/animations}/cycle_out_in_dual_anim.h (83%) rename quantum/{rgb_matrix_animations => rgb_matrix/animations}/cycle_pinwheel_anim.h (80%) rename quantum/{rgb_matrix_animations => rgb_matrix/animations}/cycle_spiral_anim.h (81%) create mode 100644 quantum/rgb_matrix/animations/cycle_up_down_anim.h rename quantum/{rgb_matrix_animations => rgb_matrix/animations}/digital_rain_anim.h (96%) create mode 100644 quantum/rgb_matrix/animations/dual_beacon_anim.h rename quantum/{rgb_matrix_animations => rgb_matrix/animations}/gradient_left_right_anim.h (82%) rename quantum/{rgb_matrix_animations => rgb_matrix/animations}/gradient_up_down_anim.h (83%) rename quantum/{rgb_matrix_animations => rgb_matrix/animations}/hue_breathing_anim.h (89%) rename quantum/{rgb_matrix_animations => rgb_matrix/animations}/hue_pendulum_anim.h (94%) rename quantum/{rgb_matrix_animations => rgb_matrix/animations}/hue_wave_anim.h (94%) rename quantum/{rgb_matrix_animations => rgb_matrix/animations}/jellybean_raindrops_anim.h (78%) create mode 100644 quantum/rgb_matrix/animations/pixel_fractal_anim.h create mode 100644 quantum/rgb_matrix/animations/pixel_rain_anim.h rename quantum/{rgb_matrix_animations => rgb_matrix/animations}/rainbow_beacon_anim.h (84%) rename quantum/{rgb_matrix_animations => rgb_matrix/animations}/rainbow_moving_chevron_anim.h (80%) rename quantum/{rgb_matrix_animations => rgb_matrix/animations}/rainbow_pinwheels_anim.h (84%) rename quantum/{rgb_matrix_animations => rgb_matrix/animations}/raindrops_anim.h (90%) create mode 100644 quantum/rgb_matrix/animations/rgb_matrix_effects.inc create mode 100644 quantum/rgb_matrix/animations/runners/effect_runner_dx_dy.h create mode 100644 quantum/rgb_matrix/animations/runners/effect_runner_dx_dy_dist.h create mode 100644 quantum/rgb_matrix/animations/runners/effect_runner_i.h create mode 100644 quantum/rgb_matrix/animations/runners/effect_runner_reactive.h create mode 100644 quantum/rgb_matrix/animations/runners/effect_runner_reactive_splash.h create mode 100644 quantum/rgb_matrix/animations/runners/effect_runner_sin_cos_i.h create mode 100644 quantum/rgb_matrix/animations/runners/rgb_matrix_runners.inc rename quantum/{rgb_matrix_animations => rgb_matrix/animations}/solid_color_anim.h (88%) rename quantum/{rgb_matrix_animations => rgb_matrix/animations}/solid_reactive_anim.h (81%) create mode 100644 quantum/rgb_matrix/animations/solid_reactive_cross.h create mode 100644 quantum/rgb_matrix/animations/solid_reactive_nexus.h create mode 100644 quantum/rgb_matrix/animations/solid_reactive_simple_anim.h create mode 100644 quantum/rgb_matrix/animations/solid_reactive_wide.h create mode 100644 quantum/rgb_matrix/animations/solid_splash_anim.h create mode 100644 quantum/rgb_matrix/animations/splash_anim.h rename quantum/{rgb_matrix_animations => rgb_matrix/animations}/typing_heatmap_anim.h (94%) rename quantum/{ => rgb_matrix}/rgb_matrix.c (92%) rename quantum/{ => rgb_matrix}/rgb_matrix.h (78%) create mode 100644 quantum/rgb_matrix/rgb_matrix_drivers.c rename quantum/{ => rgb_matrix}/rgb_matrix_types.h (100%) delete mode 100644 quantum/rgb_matrix_animations/alpha_mods_anim.h delete mode 100644 quantum/rgb_matrix_animations/breathing_anim.h delete mode 100644 quantum/rgb_matrix_animations/cycle_left_right_anim.h delete mode 100644 quantum/rgb_matrix_animations/cycle_out_in_anim.h delete mode 100644 quantum/rgb_matrix_animations/cycle_up_down_anim.h delete mode 100644 quantum/rgb_matrix_animations/dual_beacon_anim.h delete mode 100644 quantum/rgb_matrix_animations/rgb_matrix_effects.inc delete mode 100644 quantum/rgb_matrix_animations/solid_reactive_cross.h delete mode 100644 quantum/rgb_matrix_animations/solid_reactive_nexus.h delete mode 100644 quantum/rgb_matrix_animations/solid_reactive_simple_anim.h delete mode 100644 quantum/rgb_matrix_animations/solid_reactive_wide.h delete mode 100644 quantum/rgb_matrix_animations/solid_splash_anim.h delete mode 100644 quantum/rgb_matrix_animations/splash_anim.h delete mode 100644 quantum/rgb_matrix_drivers.c delete mode 100644 quantum/rgb_matrix_runners/effect_runner_dx_dy.h delete mode 100644 quantum/rgb_matrix_runners/effect_runner_dx_dy_dist.h delete mode 100644 quantum/rgb_matrix_runners/effect_runner_i.h delete mode 100644 quantum/rgb_matrix_runners/effect_runner_reactive.h delete mode 100644 quantum/rgb_matrix_runners/effect_runner_reactive_splash.h delete mode 100644 quantum/rgb_matrix_runners/effect_runner_sin_cos_i.h rename quantum/{ => rgblight}/rgblight.c (99%) rename quantum/{ => rgblight}/rgblight.h (78%) rename quantum/{ => rgblight}/rgblight_breathe_table.h (100%) rename quantum/{ => rgblight}/rgblight_list.h (84%) rename quantum/{ => rgblight}/rgblight_modes.h (100%) rename quantum/{ => rgblight}/rgblight_post_config.h (100%) delete mode 100644 quantum/serial_link/LICENSE delete mode 100644 quantum/serial_link/README.md delete mode 100644 quantum/serial_link/protocol/byte_stuffer.c delete mode 100644 quantum/serial_link/protocol/byte_stuffer.h delete mode 100644 quantum/serial_link/protocol/frame_router.c delete mode 100644 quantum/serial_link/protocol/frame_router.h delete mode 100644 quantum/serial_link/protocol/frame_validator.c delete mode 100644 quantum/serial_link/protocol/frame_validator.h delete mode 100644 quantum/serial_link/protocol/physical.h delete mode 100644 quantum/serial_link/protocol/transport.c delete mode 100644 quantum/serial_link/protocol/transport.h delete mode 100644 quantum/serial_link/protocol/triple_buffered_object.c delete mode 100644 quantum/serial_link/protocol/triple_buffered_object.h delete mode 100644 quantum/serial_link/system/serial_link.c delete mode 100644 quantum/serial_link/system/serial_link.h delete mode 100644 quantum/serial_link/tests/Makefile delete mode 100644 quantum/serial_link/tests/byte_stuffer_tests.cpp delete mode 100644 quantum/serial_link/tests/frame_router_tests.cpp delete mode 100644 quantum/serial_link/tests/frame_validator_tests.cpp delete mode 100644 quantum/serial_link/tests/rules.mk delete mode 100644 quantum/serial_link/tests/testlist.mk delete mode 100644 quantum/serial_link/tests/transport_tests.cpp delete mode 100644 quantum/serial_link/tests/triple_buffered_object_tests.cpp delete mode 100644 quantum/split_common/matrix.c create mode 100644 quantum/split_common/transaction_id_define.h create mode 100644 quantum/split_common/transactions.c create mode 100644 quantum/split_common/transactions.h rename {tmk_core/common => quantum}/sync_timer.c (100%) rename {tmk_core/common => quantum}/sync_timer.h (100%) delete mode 100644 quantum/template/avr/config.h delete mode 100644 quantum/template/avr/readme.md delete mode 100644 quantum/template/avr/rules.mk delete mode 100644 quantum/template/base/info.json delete mode 100644 quantum/template/base/keyboard.c delete mode 100644 quantum/template/base/keyboard.h delete mode 100644 quantum/template/base/keymaps/default/keymap.c delete mode 100644 quantum/template/base/keymaps/default/readme.md delete mode 100644 quantum/template/ps2avrgb/config.h delete mode 100644 quantum/template/ps2avrgb/readme.md delete mode 100644 quantum/template/ps2avrgb/rules.mk delete mode 100644 quantum/tools/readme.md rename {tmk_core/common => quantum}/virtser.h (89%) delete mode 100644 quantum/visualizer/LICENSE.md delete mode 100644 quantum/visualizer/common_gfxconf.h delete mode 100644 quantum/visualizer/default_animations.c delete mode 100644 quantum/visualizer/default_animations.h delete mode 100644 quantum/visualizer/lcd_backlight.c delete mode 100644 quantum/visualizer/lcd_backlight.h delete mode 100644 quantum/visualizer/lcd_backlight_keyframes.c delete mode 100644 quantum/visualizer/lcd_backlight_keyframes.h delete mode 100644 quantum/visualizer/lcd_keyframes.c delete mode 100644 quantum/visualizer/lcd_keyframes.h delete mode 100644 quantum/visualizer/led_backlight_keyframes.c delete mode 100644 quantum/visualizer/led_backlight_keyframes.h delete mode 100644 quantum/visualizer/readme.md delete mode 100644 quantum/visualizer/resources/lcd_logo.c delete mode 100644 quantum/visualizer/resources/lcd_logo.png delete mode 100644 quantum/visualizer/resources/resources.h delete mode 100644 quantum/visualizer/visualizer.c delete mode 100644 quantum/visualizer/visualizer.h delete mode 100644 quantum/visualizer/visualizer.mk delete mode 100644 quantum/visualizer/visualizer_keyframes.c delete mode 100644 quantum/visualizer/visualizer_keyframes.h delete mode 100644 secrets.tar.enc delete mode 100644 show_options.mk create mode 100644 tests/auto_shift/config.h create mode 100644 tests/auto_shift/test.mk create mode 100644 tests/auto_shift/test_auto_shift.cpp delete mode 100644 tests/basic/keymap.c delete mode 100644 tests/basic/rules.mk create mode 100644 tests/basic/test.mk create mode 100644 tests/basic/test_one_shot_keys.cpp create mode 100644 tests/tap_hold_configurations/default_mod_tap/config.h create mode 100644 tests/tap_hold_configurations/default_mod_tap/test.mk create mode 100644 tests/tap_hold_configurations/default_mod_tap/test_tap_hold.cpp create mode 100644 tests/tap_hold_configurations/ignore_mod_tap_interrupt/config.h create mode 100644 tests/tap_hold_configurations/ignore_mod_tap_interrupt/test.mk create mode 100644 tests/tap_hold_configurations/ignore_mod_tap_interrupt/test_tap_hold.cpp create mode 100644 tests/tap_hold_configurations/permissive_hold/config.h create mode 100644 tests/tap_hold_configurations/permissive_hold/test.mk create mode 100644 tests/tap_hold_configurations/permissive_hold/test_one_shot_keys.cpp create mode 100644 tests/tap_hold_configurations/permissive_hold/test_tap_hold.cpp create mode 100644 tests/tap_hold_configurations/permissive_hold_ignore_mod_tap_interrupt/config.h create mode 100644 tests/tap_hold_configurations/permissive_hold_ignore_mod_tap_interrupt/test.mk create mode 100644 tests/tap_hold_configurations/permissive_hold_ignore_mod_tap_interrupt/test_tap_hold.cpp create mode 100644 tests/tap_hold_configurations/retro_tapping/config.h create mode 100644 tests/tap_hold_configurations/retro_tapping/test.mk create mode 100644 tests/tap_hold_configurations/retro_tapping/test_tap_hold.cpp create mode 100644 tests/tap_hold_configurations/retro_tapping/test_tapping.cpp create mode 100644 tests/tap_hold_configurations/tapping_force_hold/config.h create mode 100644 tests/tap_hold_configurations/tapping_force_hold/test.mk create mode 100644 tests/tap_hold_configurations/tapping_force_hold/test_action_layer.cpp create mode 100644 tests/tap_hold_configurations/tapping_force_hold/test_tap_hold.cpp create mode 100644 tests/test_common/build.mk create mode 100644 tests/test_common/keymap.c create mode 100644 tests/test_common/main.cpp create mode 100644 tests/test_common/test_common.h create mode 100644 tests/test_common/test_keymap_key.cpp create mode 100644 tests/test_common/test_keymap_key.hpp create mode 100644 tests/test_common/test_logger.cpp create mode 100644 tests/test_common/test_logger.hpp delete mode 100644 tmk_core/arm_atsam.mk delete mode 100644 tmk_core/avr.mk delete mode 100644 tmk_core/chibios.mk delete mode 100644 tmk_core/common.mk delete mode 100644 tmk_core/common/action_tapping.c delete mode 100644 tmk_core/common/arm_atsam/_print.h delete mode 100644 tmk_core/common/arm_atsam/eeprom.c delete mode 100644 tmk_core/common/arm_atsam/printf.c delete mode 100644 tmk_core/common/arm_atsam/printf.h delete mode 100644 tmk_core/common/arm_atsam/printf.mk delete mode 100644 tmk_core/common/avr/_wait.h delete mode 100644 tmk_core/common/avr/gpio.h delete mode 100644 tmk_core/common/avr/suspend.c delete mode 100644 tmk_core/common/chibios/_wait.h delete mode 100644 tmk_core/common/chibios/chibios_config.h delete mode 100644 tmk_core/common/chibios/eeprom_stm32.c delete mode 100644 tmk_core/common/chibios/eeprom_stm32.h delete mode 100644 tmk_core/common/chibios/eeprom_teensy.c delete mode 100644 tmk_core/common/chibios/gpio.h delete mode 100644 tmk_core/common/chibios/suspend.c delete mode 100644 tmk_core/common/chibios/wait.c delete mode 100644 tmk_core/common/eeconfig.h delete mode 100644 tmk_core/common/host.c delete mode 100644 tmk_core/common/keyboard.c delete mode 100644 tmk_core/common/keycode.h delete mode 100644 tmk_core/common/lib_printf.mk delete mode 100644 tmk_core/common/sendchar_null.c delete mode 100644 tmk_core/common/sendchar_uart.c delete mode 100644 tmk_core/common/timer.h delete mode 100644 tmk_core/native.mk create mode 100644 tmk_core/protocol/arm_atsam/shift_register.c create mode 100644 tmk_core/protocol/arm_atsam/shift_register.h delete mode 100644 tmk_core/protocol/arm_atsam/spi.c delete mode 100644 tmk_core/protocol/arm_atsam/spi.h create mode 100644 tmk_core/protocol/arm_atsam/spi_master.c create mode 100644 tmk_core/protocol/arm_atsam/spi_master.h delete mode 100644 tmk_core/protocol/arm_atsam/usb/usb2422.c delete mode 100644 tmk_core/protocol/arm_atsam/usb/usb2422.h create mode 100644 tmk_core/protocol/arm_atsam/usb/usb_hub.c create mode 100644 tmk_core/protocol/arm_atsam/usb/usb_hub.h create mode 100644 tmk_core/protocol/chibios/chibios.c delete mode 100644 tmk_core/protocol/chibios/main.c create mode 100644 tmk_core/protocol/host.c rename tmk_core/{common => protocol}/host.h (94%) rename tmk_core/{common => protocol}/host_driver.h (91%) delete mode 100644 tmk_core/protocol/ibm4704.c delete mode 100644 tmk_core/protocol/ibm4704.h delete mode 100644 tmk_core/protocol/news.c delete mode 100644 tmk_core/protocol/news.h delete mode 100644 tmk_core/protocol/next_kbd.c delete mode 100644 tmk_core/protocol/next_kbd.h delete mode 100644 tmk_core/protocol/ps2_io_avr.c rename tmk_core/{common => protocol}/report.c (94%) rename tmk_core/{common => protocol}/report.h (95%) delete mode 100644 tmk_core/protocol/serial_mouse.h delete mode 100644 tmk_core/protocol/serial_mouse_microsoft.c delete mode 100644 tmk_core/protocol/serial_mouse_mousesystems.c create mode 100644 tmk_core/protocol/usb_device_state.c create mode 100644 tmk_core/protocol/usb_device_state.h rename tmk_core/{common => protocol}/usb_util.c (95%) rename tmk_core/{common => protocol}/usb_util.h (96%) delete mode 100644 tmk_core/protocol/vusb/main.c create mode 100644 tmk_core/protocol/vusb/protocol.c delete mode 100644 users/bocaj/.gitignore delete mode 100644 users/bocaj/.gitlab-ci.yml delete mode 100644 users/bocaj/bocaj.c delete mode 100644 users/bocaj/bocaj.h delete mode 100644 users/bocaj/config.h delete mode 100644 users/bocaj/process_records.c delete mode 100644 users/bocaj/process_records.h delete mode 100644 users/bocaj/readme.md delete mode 100644 users/bocaj/rgb_matrix_stuff.c delete mode 100644 users/bocaj/rgb_matrix_stuff.h delete mode 100644 users/bocaj/rules.mk delete mode 100644 users/bocaj/wrappers.h delete mode 100644 users/drashna/drashna_transport.c delete mode 100644 users/drashna/pimoroni_trackball.c delete mode 100644 users/drashna/pimoroni_trackball.h create mode 100644 users/drashna/post_config.h create mode 100644 users/drashna/transport_sync.c create mode 100644 users/drashna/transport_sync.h create mode 100644 users/drashna/unicoooode.c create mode 100644 users/haervig/config.h create mode 100644 users/haervig/haervig.c create mode 100644 users/haervig/haervig.h create mode 100644 users/haervig/readme.md create mode 100644 users/haervig/rules.mk create mode 100644 users/hvp/config.h create mode 100644 users/hvp/per_key.c create mode 100644 users/ibnuda/abstraction.c create mode 100644 users/ibnuda/abstraction.h delete mode 100644 users/ibnuda/tapdance.c delete mode 100644 users/ibnuda/tapdance.h create mode 100644 users/imchipwood/imchipwood.c create mode 100644 users/imchipwood/imchipwood.h create mode 100644 users/imchipwood/rules.mk create mode 100644 users/jjerrell/.gitignore create mode 100644 users/jjerrell/config.h create mode 100644 users/jjerrell/jjerrell.c create mode 100644 users/jjerrell/jjerrell.h create mode 100644 users/jjerrell/process_records.c create mode 100644 users/jjerrell/process_records.h create mode 100644 users/jjerrell/readme.md create mode 100644 users/jjerrell/rules.mk create mode 100644 users/jjerrell/wrappers.h create mode 100644 users/jonavin/config.h create mode 100644 users/jonavin/jonavin.c create mode 100644 users/jonavin/jonavin.h create mode 100644 users/jonavin/jonavin_encoder.c create mode 100644 users/jonavin/readme.md create mode 100644 users/jonavin/rules.mk create mode 100644 users/konstantin/post_config.h delete mode 120000 users/manna-harbour_miryoku/README.org delete mode 100644 users/manna-harbour_miryoku/miryoku.org create mode 100644 users/manna-harbour_miryoku/readme.org create mode 100644 users/moults31/gdb.c create mode 100644 users/moults31/gdb.h create mode 100644 users/moults31/moults31.c create mode 100644 users/moults31/moults31.h create mode 100644 users/moults31/obs.c create mode 100644 users/moults31/obs.h create mode 100644 users/moults31/readme.md create mode 100644 users/moults31/rules.mk create mode 100644 users/moults31/vscode.c create mode 100644 users/moults31/vscode.h create mode 100644 users/nstickney/config.h create mode 100644 users/nstickney/readme.md create mode 100644 users/nstickney/unicodemap.h delete mode 100644 users/replicaJunction/config.h create mode 100644 users/replicaJunction/features/.gitignore create mode 100644 users/replicaJunction/features/caps_word.c create mode 100644 users/replicaJunction/features/caps_word.h create mode 100644 users/replicaJunction/features/mouse_jiggle.c create mode 100644 users/replicaJunction/features/mouse_jiggle.h create mode 100644 users/replicaJunction/features/num_word.c create mode 100644 users/replicaJunction/features/num_word.h create mode 100644 users/replicaJunction/features/secrets.c create mode 100644 users/replicaJunction/features/secrets.h create mode 100644 users/replicaJunction/features/super_alt_tab.c create mode 100644 users/replicaJunction/features/super_alt_tab.h create mode 100644 users/replicaJunction/keycode_aliases.h create mode 100644 users/replicaJunction/matrix_scan.c create mode 100644 users/replicaJunction/process_records.c create mode 100644 users/replicaJunction/process_records.h create mode 100644 users/replicaJunction/rj_keycodes.h create mode 100644 users/replicaJunction/rj_layers.h create mode 100644 users/stanrc85/rgb_layers.c create mode 100644 users/stanrc85/rgb_timeout.c delete mode 100644 users/talljoe/visualizer.c create mode 100644 users/txkyel/config.h create mode 100644 users/txkyel/readme.md create mode 100644 users/txkyel/rules.mk create mode 100644 users/txkyel/tap_dance.c create mode 100644 users/txkyel/tap_dance.h create mode 100644 users/txkyel/tap_dance.md create mode 100644 users/txkyel/txkyel.c create mode 100644 users/txkyel/txkyel.h create mode 100644 users/zigotica/combos.c create mode 100644 users/zigotica/combos.h create mode 100644 users/zigotica/rows.h create mode 100644 users/zigotica/rules.mk create mode 100644 users/zigotica/tapdances.c create mode 100644 users/zigotica/tapdances.h create mode 100644 users/zigotica/zigotica.c create mode 100644 users/zigotica/zigotica.h rename {nix => util/nix}/poetry.lock (77%) create mode 100644 util/nix/pyproject.toml rename {nix => util/nix}/sources.json (100%) rename {nix => util/nix}/sources.nix (100%) rename quantum/tools/eeprom_reset.hex => util/reset.eep (100%) create mode 100755 util/size_regression.sh create mode 100755 util/stm32eeprom_parser.py delete mode 100755 util/travis_build.sh delete mode 100755 util/travis_compiled_push.sh delete mode 100755 util/travis_push.sh delete mode 100644 util/travis_test.sh delete mode 100755 util/travis_utils.sh create mode 100755 util/update_chibios_mirror.sh diff --git a/.github/labeler.yml b/.github/labeler.yml index 53921f7f9591..41b2475f678b 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/api.yml b/.github/workflows/api.yml index c8d988d0f0ee..a19667f97e7f 100644 --- a/.github/workflows/api.yml +++ b/.github/workflows/api.yml @@ -7,11 +7,12 @@ on: paths: - 'keyboards/**' - 'layouts/community/**' + workflow_dispatch: jobs: api_data: runs-on: ubuntu-latest - container: qmkfm/base_container + container: qmkfm/qmk_cli # protect against those who develop with their fork on master if: github.repository == 'qmk/qmk_firmware' diff --git a/.github/workflows/cli.yml b/.github/workflows/cli.yml index df727518e577..2ea810958b49 100644 --- a/.github/workflows/cli.yml +++ b/.github/workflows/cli.yml @@ -4,11 +4,10 @@ on: push: branches: - master - - future + - develop pull_request: paths: - 'lib/python/**' - - 'bin/qmk' - 'requirements.txt' - '.github/workflows/cli.yml' @@ -16,7 +15,7 @@ jobs: test: runs-on: ubuntu-latest - container: qmkfm/base_container + container: qmkfm/qmk_cli steps: - uses: actions/checkout@v2 @@ -25,4 +24,4 @@ jobs: - name: Install dependencies run: pip3 install -r requirements-dev.txt - name: Run tests - run: bin/qmk pytest + run: qmk pytest diff --git a/.github/workflows/develop_api.yml b/.github/workflows/develop_api.yml index 4e64cbcf8c22..f0098142c7bc 100644 --- a/.github/workflows/develop_api.yml +++ b/.github/workflows/develop_api.yml @@ -7,11 +7,12 @@ on: paths: - 'keyboards/**' - 'layouts/community/**' + workflow_dispatch: jobs: api_data: runs-on: ubuntu-latest - container: qmkfm/base_container + container: qmkfm/qmk_cli # protect against those who work in their fork on develop if: github.repository == 'qmk/qmk_firmware' diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 8855d1107f15..1ee3ae396418 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -14,7 +14,7 @@ on: jobs: generate: runs-on: ubuntu-latest - container: qmkfm/base_container + container: qmkfm/qmk_cli # protect against those who develop with their fork on master if: github.repository == 'qmk/qmk_firmware' diff --git a/.github/workflows/format.yaml b/.github/workflows/format.yaml index c17a04a54200..f1525526ce88 100644 --- a/.github/workflows/format.yaml +++ b/.github/workflows/format.yaml @@ -16,10 +16,12 @@ jobs: lint: runs-on: ubuntu-latest - container: qmkfm/base_container + container: qmkfm/qmk_cli steps: - - uses: rlespinasse/github-slug-action@v3.x + - name: Install dependencies + run: | + apt-get update && apt-get install -y dos2unix - uses: actions/checkout@v2 with: @@ -31,12 +33,19 @@ jobs: output: ' ' fileOutput: ' ' - - name: Run qmk cformat and qmk pyformat + - name: Run qmk formatters shell: 'bash {0}' run: | - qmk cformat --core-only -n $(< ~/files.txt) - cformat_exit=$? - qmk pyformat -n - pyformat_exit=$? + cat ~/files_added.txt ~/files_modified.txt > ~/files_changed.txt + qmk format-c --core-only $(< ~/files_changed.txt) || true + qmk format-python $(< ~/files_changed.txt) || true + qmk format-text $(< ~/files_changed.txt) || true - exit $((cformat_exit + pyformat_exit)) + - name: Fail when formatting required + run: | + git diff + for file in $(git diff --name-only); do + echo "File '${file}' Requires Formatting" + echo "::error file=${file}::Requires Formatting" + done + test -z "$(git diff --name-only)" diff --git a/.github/workflows/format_push.yaml b/.github/workflows/format_push.yaml new file mode 100644 index 000000000000..b79130f17a77 --- /dev/null +++ b/.github/workflows/format_push.yaml @@ -0,0 +1,49 @@ +name: Lint Format + +on: + push: + branches: + - master + - develop + +jobs: + lint: + runs-on: ubuntu-latest + + container: qmkfm/qmk_cli + + steps: + - name: Install dependencies + run: | + apt-get update && apt-get install -y dos2unix + + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Run qmk formatters + shell: 'bash {0}' + run: | + qmk format-c -a + qmk format-python -a + qmk format-text -a + git diff + + - uses: rlespinasse/github-slug-action@v3.x + + - name: Become QMK Bot + run: | + git config user.name 'QMK Bot' + git config user.email 'hello@qmk.fm' + + - name: Create Pull Request + uses: peter-evans/create-pull-request@v3 + if: ${{ github.repository == 'qmk/qmk_firmware'}} + with: + token: ${{ secrets.QMK_BOT_TOKEN }} + delete-branch: true + branch: bugfix/format_${{ env.GITHUB_REF_SLUG }} + author: QMK Bot + committer: QMK Bot + commit-message: Format code according to conventions + title: '[CI] Format code according to conventions' diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index cd67de9d8be2..c7a8624ee14e 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -9,7 +9,7 @@ jobs: lint: runs-on: ubuntu-latest - container: qmkfm/base_container + container: qmkfm/qmk_cli steps: - uses: actions/checkout@v2 diff --git a/.github/workflows/unit_test.yml b/.github/workflows/unit_test.yml new file mode 100644 index 000000000000..26bcb2f51106 --- /dev/null +++ b/.github/workflows/unit_test.yml @@ -0,0 +1,30 @@ +name: Unit Tests + +on: + push: + branches: + - master + - develop + pull_request: + paths: + - 'builddefs/**' + - 'quantum/**' + - 'platforms/**' + - 'tmk_core/**' + - 'tests/**' + - '*.mk' + - 'Makefile' + - '.github/workflows/unit_test.yml' + +jobs: + test: + runs-on: ubuntu-latest + + container: qmkfm/base_container + + steps: + - uses: actions/checkout@v2 + with: + submodules: recursive + - name: Run tests + run: make test:all diff --git a/.gitignore b/.gitignore index 3c5731a08cd2..f1be56a4e2d6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,37 +1,37 @@ -<<<<<<< HEAD .history/ .dep *.o *.bin *.eep +# Junk files +*.bak +*.swp +*~ +.DS_Store + +# Build artifacts +.clang_complete +.build/ *.elf -*.hex -*.uf2 -*.qmk -!util/bootloader.hex -!quantum/tools/eeprom_reset.hex *.log *.lss *.lst *.map +*.o +*.stackdump *.sym -*.swp -tags -*~ + +# QMK-specific api_data/v1 -build/ -.build/ -*.bak -.vagrant/ -quantum/version.h -.idea/ -CMakeLists.txt -cmake-build-debug -.clang_complete doxygen/ -.DS_Store -/util/wsl_downloaded -/util/win_downloaded +quantum/version.h +*.bin +*.eep +*.hex +*.qmk +*.uf2 + +# Old-style QMK Makefiles /keyboards/*/Makefile /keyboards/*/*/Makefile /keyboards/*/*/*/Makefile @@ -44,44 +44,53 @@ doxygen/ /keyboards/*/*/*/*/*/keymaps/Makefile # Eclipse/PyCharm/Other IDE Settings +*.iml +.browse.VC.db* .cproject +.idea +.idea/ .project .settings/ -.idea -*.iml -.browse.VC.db* -*.stackdump +.vagrant/ + +# ? +.dep +.history/ +build/ +cmake-build-debug +CMakeLists.txt + # Let these ones be user specific, since we have so many different configurations *.code-workspace +.stfolder +.tags .vscode/c_cpp_properties.json +.vscode/ipch/ +.vscode/last.sql .vscode/launch.json .vscode/tasks.json -.vscode/last.sql .vscode/temp.sql -.vscode/ipch/ -.stfolder -.tags +tags -# ignore image files -*.png +# Ignore image files *.gif *.jpg +*.png -# things travis sees -secrets.tar -id_rsa_* +# Things Travis sees /.vs +id_rsa_* +secrets.tar -# python things +# Python things __pycache__ .python-version -# prerequisites for updating ChibiOS +# Prerequisites for updating ChibiOS /util/fmpp* # Allow to exist but don't include it in the repo user_song_list.h -======= _site/* .sass-cache/* /.idea/ @@ -124,4 +133,9 @@ yarn-error.log* *.sln *.sw* ga-production.js ->>>>>>> e822a8fb597d1518748b9c7f5c1f1fb427bc379f + +# clangd +compile_commands.json +.clangd/ +.cache/ + diff --git a/.gitmodules b/.gitmodules index 324ef790d34c..681693a5a464 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/.travis.yml b/.travis.yml deleted file mode 100644 index 17f401da45c7..000000000000 --- a/.travis.yml +++ /dev/null @@ -1,38 +0,0 @@ -os: linux -dist: trusty -group: edge -language: c -branches: - except: - - /^.*-automated-build$/ - - /^[0-9]+\.[0-9]+\.[0-9]+/ -env: - global: - - secure: vBTSL34BDPxDilKUuTXqU4CJ26Pv5hogD2nghatkxSQkI1/jbdnLj/DQdPUrMJFDIY6TK3AltsBx72MaMsLQ1JO/Ou24IeHINHXzUC1FlS9yQa48cpxnhX5kzXNyGs3oa0qaFbvnr7RgYRWtmD52n4bIZuSuW+xpBv05x2OCizdT2ZonH33nATaHGFasxROm4qYZ241VfzcUv766V6RVHgL4x9V08warugs+RENVkfzxxwhk3NmkrISabze0gSVJLHBPHxroZC6EUcf/ocobcuDrCwFqtEt90i7pNIAFUE7gZsN2uE75LmpzAWin21G7lLPcPL2k4FJVd8an1HiP2WmscJU6U89fOfMb2viObnKcCzebozBCmKGtHEuXZo9FcReOx49AnQSpmESJGs+q2dL/FApkTjQiyT4J6O5dJpoww0/r57Wx0cmmqjETKBb5rSgXM51Etk3wO09mvcPHsEwrT7qH8r9XWdyCDoEn7FCLX3/LYnf/D4SmZ633YPl5gv3v9XEwxR5+04akjgnvWDSNIaDbWBdxHNb7l4pMc+WR1bwCyMyA7KXj0RrftEGOrm9ZRLe6BkbT4cycA+j77nbPOMcyZChliV9pPQos+4TOJoTzcK2L8yWVoY409aDNVuAjdP6Yum0R2maBGl/etLmIMpJC35C5/lZ+dUNjJAM= - - MAKEFLAGS="-j3 --output-sync" -services: - - docker -addons: - apt: - sources: - - ubuntu-toolchain-r-test - - llvm-toolchain-trusty-7 - packages: - - diffutils - - clang-format-7 - - libstdc++-7-dev -script: - - git fetch --depth=50 origin $TRAVIS_BRANCH:$TRAVIS_BRANCH - - git rev-parse --short HEAD - - git diff --name-only HEAD $TRAVIS_BRANCH - - bash util/travis_test.sh - - bash util/travis_build.sh -after_script: - bash util/travis_compiled_push.sh -notifications: - webhooks: - urls: - - https://webhooks.gitter.im/e/afce403d65f143dfac09 - on_success: always # options: [always|never|change] default: always - on_failure: always # options: [always|never|change] default: always - on_start: never # options: [always|never|change] default: always diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 697686cd596b..889d9d610eb6 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -5,7 +5,6 @@ "xaver.clang-format", "ms-vscode.cpptools", "bierner.github-markdown-preview", - "donjayamanne.git-extension-pack", - "CoenraadS.bracket-pair-colorizer-2" + "donjayamanne.git-extension-pack" ] } diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md deleted file mode 100644 index c9e3e0586ae9..000000000000 --- a/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,24 +0,0 @@ -# Code Of Conduct - -QMK strives to be an inclusive, tolerant, and welcoming community. We encourage participation from anyone regardless of age, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, political belief, race, religion, or sexual identity and orientation. - -> “A gentle word turns away wrath, but a harsh word stirs up anger." - -Our users, contributors, and collaborators are expected to treat each other with kindness and respect, to assume good intentions, and to gently correct, where possible, rather than react with escalation. While our goal is to be as accurate as possible, kindness and understanding are more valuable than correctness. Some examples of behavior we will not tolerate include, but is not limited to: - -* The use of sexualized language or imagery -* Unwelcome advances, sexual or otherwise -* Deliberate intimidation, stalking, or following -* Insults or derogatory comments, or personal or political attacks -* Publishing others’ private information without explicit permission -* Sustained disruption of talks or other events -* Other conduct which could reasonably be considered inappropriate in a professional setting -* Advocating for, or encouraging, any of the above behaviour - -# Reporting - -If someone is violating this Code of Conduct, please email hello@qmk.fm or reach out to one of the Collaborators to bring it to our attention. All complaints will be reviewed and investigated. - -QMK will seek to use the least punitive means available to resolve an issue. If the circumstances require asking an offender to leave, we will do that. - -Reports will be taken and kept in strict confidence. You will not be required to confront an offender directly. diff --git a/Dockerfile b/Dockerfile index 8fc57ab138b7..2b4b256e1ef8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,12 +1,10 @@ -<<<<<<< HEAD FROM qmkfm/base_container +FROM qmkfm/qmk_cli VOLUME /qmk_firmware WORKDIR /qmk_firmware -COPY . . CMD make all:default -======= # This file uses a multi-stage build strategy. The build stage sets up the nvm environment and builds configurator, while the second stage copies this into a clean container without any build tools. ## First Stage- Build @@ -45,4 +43,5 @@ COPY conf/nginx.conf.in /etc/nginx/nginx.conf.in COPY bin/docker_run.sh /qmk_configurator/bin/docker_run.sh CMD /bin/bash -i /qmk_configurator/bin/docker_run.sh ->>>>>>> e822a8fb597d1518748b9c7f5c1f1fb427bc379f +CMD qmk compile -kb all -km default + diff --git a/Makefile b/Makefile index e007ae3679c7..88f430619e39 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,18 +216,23 @@ 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 |) - $$(info | QMK's make format recently changed to use folder locations and colons:) - $$(info | make project_folder:keymap[:target]) - $$(info | Examples:) - $$(info | make dz60:default) - $$(info | make planck/rev6:default:flash) + $$(info | QMK's make format is:) + $$(info | make keyboard_folder:keymap_folder[:target]) + $$(info |) + $$(info | Where `keyboard_folder` is the path to the keyboard relative to) + $$(info | `qmk_firmware/keyboards/`, and `keymap_folder` is the name of the) + $$(info | keymap folder under that board's `keymaps/` directory.) + $$(info |) + $$(info | Examples:) + $$(info | keyboards/dz60, keyboards/dz60/keymaps/default) + $$(info | -> make dz60:default) + $$(info | -> qmk compile -kb dz60 -km default) + $$(info | keyboards/planck/rev6, keyboards/planck/keymaps/default) + $$(info | -> make planck/rev6:default:flash) + $$(info | -> qmk flash -kb planck/rev6 -km default) $$(info |) endif endef @@ -294,37 +270,8 @@ define PARSE_KEYBOARD KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_3)/keymaps/*/.))) KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_4)/keymaps/*/.))) KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_5)/keymaps/*/.))) - # this might be needed, but in a different form - #KEYMAPS := $$(sort $$(filter-out $$(KEYBOARD_FOLDER_1) $$(KEYBOARD_FOLDER_2) \ - $$(KEYBOARD_FOLDER_3) $$(KEYBOARD_FOLDER_4) $$(KEYBOARD_FOLDER_5), $$(KEYMAPS))) - - KEYBOARD_LAYOUTS := - ifneq ("$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_5)/rules.mk)","") - LAYOUTS := - $$(eval include $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_5)/rules.mk) - KEYBOARD_LAYOUTS := $$(sort $$(LAYOUTS) $$(KEYBOARD_LAYOUTS)) - endif - ifneq ("$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_4)/rules.mk)","") - LAYOUTS := - $$(eval include $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_4)/rules.mk) - KEYBOARD_LAYOUTS := $$(sort $$(LAYOUTS) $$(KEYBOARD_LAYOUTS)) - endif - ifneq ("$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_3)/rules.mk)","") - LAYOUTS := - $$(eval include $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_3)/rules.mk) - KEYBOARD_LAYOUTS := $$(sort $$(LAYOUTS) $$(KEYBOARD_LAYOUTS)) - endif - ifneq ("$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_2)/rules.mk)","") - LAYOUTS := - $$(eval include $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_2)/rules.mk) - KEYBOARD_LAYOUTS := $$(sort $$(LAYOUTS) $$(KEYBOARD_LAYOUTS)) - endif - ifneq ("$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_1)/rules.mk)","") - LAYOUTS := - $$(eval include $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_1)/rules.mk) - KEYBOARD_LAYOUTS := $$(sort $$(LAYOUTS) $$(KEYBOARD_LAYOUTS)) - endif + KEYBOARD_LAYOUTS := $(shell $(QMK_BIN) list-layouts --keyboard $1) LAYOUT_KEYMAPS := $$(foreach LAYOUT,$$(KEYBOARD_LAYOUTS),$$(eval LAYOUT_KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/layouts/*/$$(LAYOUT)/*/.))))) @@ -431,11 +378,12 @@ define PARSE_ALL_KEYMAPS endef define BUILD_TEST - TEST_NAME := $1 + TEST_PATH := $1 + TEST_NAME := $$(notdir $$(TEST_PATH)) MAKE_TARGET := $2 COMMAND := $1 MAKE_CMD := $$(MAKE) -r -R -C $(ROOT_DIR) -f build_test.mk $$(MAKE_TARGET) - MAKE_VARS := TEST=$$(TEST_NAME) FULL_TESTS="$$(FULL_TESTS)" + MAKE_VARS := TEST=$$(TEST_NAME) TEST_PATH=$$(TEST_PATH) FULL_TESTS="$$(FULL_TESTS)" MAKE_MSG := $$(MSG_MAKE_TEST) $$(eval $$(call BUILD)) ifneq ($$(MAKE_TARGET),clean) @@ -459,7 +407,7 @@ define PARSE_TEST ifeq ($$(TEST_NAME),all) MATCHED_TESTS := $$(TEST_LIST) else - MATCHED_TESTS := $$(foreach TEST,$$(TEST_LIST),$$(if $$(findstring $$(TEST_NAME),$$(TEST)),$$(TEST),)) + MATCHED_TESTS := $$(foreach TEST, $$(TEST_LIST),$$(if $$(findstring $$(TEST_NAME), $$(notdir $$(TEST))), $$(TEST),)) endif $$(foreach TEST,$$(MATCHED_TESTS),$$(eval $$(call BUILD_TEST,$$(TEST),$$(TEST_TARGET)))) endef @@ -478,7 +426,8 @@ define SET_SILENT_MODE endif endef -include $(ROOT_DIR)/message.mk +include paths.mk +include $(BUILDDEFS_PATH)/message.mk ifeq ($(strip $(BREAK_ON_ERRORS)), yes) HANDLE_ERROR = exit 1 @@ -514,7 +463,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 @@ -548,29 +496,14 @@ git-submodule: git submodule sync --recursive git submodule update --init --recursive --progress -ifdef SKIP_VERSION -SKIP_GIT := yes -endif - # Generate the version.h file -ifndef SKIP_GIT - GIT_VERSION := $(shell git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S") - CHIBIOS_VERSION := $(shell cd lib/chibios && git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S") - CHIBIOS_CONTRIB_VERSION := $(shell cd lib/chibios-contrib && git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S") -else - GIT_VERSION := NA - CHIBIOS_VERSION := NA - CHIBIOS_CONTRIB_VERSION := NA +ifdef SKIP_GIT +VERSION_H_FLAGS := --skip-git endif -ifndef SKIP_VERSION -BUILD_DATE := $(shell date +"%Y-%m-%d-%H:%M:%S") -else -BUILD_DATE := 2020-01-01-00:00:00 +ifdef SKIP_VERSION +VERSION_H_FLAGS := --skip-all +SKIP_GIT := yes endif - -$(shell echo '#define QMK_VERSION "$(GIT_VERSION)"' > $(ROOT_DIR)/quantum/version.h) -$(shell echo '#define QMK_BUILDDATE "$(BUILD_DATE)"' >> $(ROOT_DIR)/quantum/version.h) -$(shell echo '#define CHIBIOS_VERSION "$(CHIBIOS_VERSION)"' >> $(ROOT_DIR)/quantum/version.h) -$(shell echo '#define CHIBIOS_CONTRIB_VERSION "$(CHIBIOS_CONTRIB_VERSION)"' >> $(ROOT_DIR)/quantum/version.h) +$(shell $(QMK_BIN) generate-version-h $(VERSION_H_FLAGS) -q -o quantum/version.h) include $(ROOT_DIR)/testlist.mk diff --git a/Vagrantfile b/Vagrantfile index adb93a3cee14..717f4ec98b10 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -6,7 +6,7 @@ Vagrant.configure(2) do |config| config.vm.define "qmk_firmware" # VMware/Virtualbox ( and also Hyperv/Parallels) 64 bit - config.vm.box = "generic/debian9" + config.vm.box = "generic/debian10" config.vm.synced_folder '.', '/vagrant' @@ -68,13 +68,13 @@ Vagrant.configure(2) do |config| ["virtualbox", "vmware_workstation", "vmware_fusion"].each do |type| config.vm.provider type do |virt, override| override.vm.provision "docker" do |d| - d.run "qmkfm/base_container", + d.run "qmkfm/qmk_cli", cmd: "tail -f /dev/null", args: "--privileged -v /dev:/dev -v '/vagrant:/vagrant'" end override.vm.provision "shell", inline: <<-SHELL - echo 'docker restart qmkfm-base_container && exec docker exec -it qmkfm-base_container /bin/bash -l' >> ~vagrant/.bashrc + echo 'docker restart qmkfm-qmk_cli && exec docker exec -it qmkfm-qmk_cli /bin/bash -l' >> ~vagrant/.bashrc SHELL end end diff --git a/bin/qmk b/bin/qmk deleted file mode 100755 index 617f99282642..000000000000 --- 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/build_full_test.mk b/build_full_test.mk index f8030cb0600d..4cd1ac61b53f 100644 --- a/build_full_test.mk +++ b/build_full_test.mk @@ -13,21 +13,24 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -#include $(TMK_PATH)/protocol.mk +$(TEST)_INC := \ + tests\test_common\common_config.h -TEST_PATH=tests/$(TEST) - -$(TEST)_SRC= \ - $(TEST_PATH)/keymap.c \ +$(TEST)_SRC := \ $(TMK_COMMON_SRC) \ $(QUANTUM_SRC) \ $(SRC) \ + tests/test_common/keymap.c \ tests/test_common/matrix.c \ tests/test_common/test_driver.cpp \ tests/test_common/keyboard_report_util.cpp \ - tests/test_common/test_fixture.cpp -$(TEST)_SRC += $(patsubst $(ROOTDIR)/%,%,$(wildcard $(TEST_PATH)/*.cpp)) + tests/test_common/test_fixture.cpp \ + tests/test_common/test_keymap_key.cpp \ + tests/test_common/test_logger.cpp \ + $(patsubst $(ROOTDIR)/%,%,$(wildcard $(TEST_PATH)/*.cpp)) + +$(TEST)_DEFS := $(TMK_COMMON_DEFS) $(OPT_DEFS) + +$(TEST)_CONFIG := $(TEST_PATH)/config.h -$(TEST)_DEFS=$(TMK_COMMON_DEFS) $(OPT_DEFS) -$(TEST)_CONFIG=$(TEST_PATH)/config.h -VPATH+=$(TOP_DIR)/tests/test_common +VPATH += $(TOP_DIR)/tests/test_common \ No newline at end of file diff --git a/build_json.mk b/build_json.mk index 8822be6a1287..0c034eb2aea0 100644 --- a/build_json.mk +++ b/build_json.mk @@ -1,31 +1,17 @@ # Look for a json keymap file ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_5)/keymap.json)","") - KEYMAP_C := $(KEYBOARD_OUTPUT)/src/keymap.c KEYMAP_JSON := $(MAIN_KEYMAP_PATH_5)/keymap.json KEYMAP_PATH := $(MAIN_KEYMAP_PATH_5) else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_4)/keymap.json)","") - KEYMAP_C := $(KEYBOARD_OUTPUT)/src/keymap.c KEYMAP_JSON := $(MAIN_KEYMAP_PATH_4)/keymap.json KEYMAP_PATH := $(MAIN_KEYMAP_PATH_4) else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_3)/keymap.json)","") - KEYMAP_C := $(KEYBOARD_OUTPUT)/src/keymap.c KEYMAP_JSON := $(MAIN_KEYMAP_PATH_3)/keymap.json KEYMAP_PATH := $(MAIN_KEYMAP_PATH_3) else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_2)/keymap.json)","") - KEYMAP_C := $(KEYBOARD_OUTPUT)/src/keymap.c KEYMAP_JSON := $(MAIN_KEYMAP_PATH_2)/keymap.json KEYMAP_PATH := $(MAIN_KEYMAP_PATH_2) else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_1)/keymap.json)","") - KEYMAP_C := $(KEYBOARD_OUTPUT)/src/keymap.c KEYMAP_JSON := $(MAIN_KEYMAP_PATH_1)/keymap.json KEYMAP_PATH := $(MAIN_KEYMAP_PATH_1) endif - -# Load the keymap-level rules.mk if exists -ifneq ("$(wildcard $(KEYMAP_PATH))", "") - -include $(KEYMAP_PATH)/rules.mk -endif - -# Generate the keymap.c -$(KEYBOARD_OUTPUT)/src/keymap.c: $(KEYMAP_JSON) - $(QMK_BIN) json2c --quiet --output $(KEYMAP_C) $(KEYMAP_JSON) diff --git a/build_keyboard.mk b/build_keyboard.mk index 91a6c23b71af..c12aa0fce007 100644 --- a/build_keyboard.mk +++ b/build_keyboard.mk @@ -10,7 +10,8 @@ endif .DEFAULT_GOAL := all -include common.mk +include paths.mk +include $(BUILDDEFS_PATH)/message.mk # Set the qmk cli to use QMK_BIN ?= qmk @@ -23,19 +24,14 @@ KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD_FILESAFE) # Force expansion TARGET := $(TARGET) -# For split boards we need to set a master half. -MASTER ?= left -ifdef master - MASTER = $(master) +ifneq ($(FORCE_LAYOUT),) + TARGET := $(TARGET)_$(FORCE_LAYOUT) 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 +# Object files and generated keymap directory +# To put object files in current directory, use a dot (.), do NOT make +# this an empty or blank macro! +KEYMAP_OUTPUT := $(BUILD_DIR)/obj_$(TARGET) ifdef SKIP_VERSION OPT_DEFS += -DSKIP_VERSION @@ -100,12 +96,13 @@ MAIN_KEYMAP_PATH_4 := $(KEYBOARD_PATH_4)/keymaps/$(KEYMAP) MAIN_KEYMAP_PATH_5 := $(KEYBOARD_PATH_5)/keymaps/$(KEYMAP) # Pull in rules from info.json -INFO_RULES_MK = $(shell $(QMK_BIN) generate-rules-mk --quiet --escape --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/rules.mk) +INFO_RULES_MK = $(shell $(QMK_BIN) generate-rules-mk --quiet --escape --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/info_rules.mk) 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)","") @@ -137,19 +134,38 @@ ifeq ("$(wildcard $(KEYMAP_PATH))", "") endif endif +# Have we found a keymap.json? +ifneq ("$(wildcard $(KEYMAP_JSON))", "") + KEYMAP_C := $(KEYMAP_OUTPUT)/src/keymap.c + KEYMAP_H := $(KEYMAP_OUTPUT)/src/config.h + + # Load the keymap-level rules.mk if exists + -include $(KEYMAP_PATH)/rules.mk + + # Load any rules.mk content from keymap.json + INFO_RULES_MK = $(shell $(QMK_BIN) generate-rules-mk --quiet --escape --keyboard $(KEYBOARD) --keymap $(KEYMAP) --output $(KEYMAP_OUTPUT)/src/rules.mk) + include $(INFO_RULES_MK) + +# Add rules to generate the keymap files - indentation here is important +$(KEYMAP_OUTPUT)/src/keymap.c: $(KEYMAP_JSON) + $(QMK_BIN) json2c --quiet --output $(KEYMAP_C) $(KEYMAP_JSON) + +$(KEYMAP_OUTPUT)/src/config.h: $(KEYMAP_JSON) + $(QMK_BIN) generate-config-h --quiet --keyboard $(KEYBOARD) --keymap $(KEYMAP) --output $(KEYMAP_H) + +generated-files: $(KEYMAP_OUTPUT)/src/config.h $(KEYMAP_OUTPUT)/src/keymap.c + +endif + ifeq ($(strip $(CTPC)), yes) CONVERT_TO_PROTON_C=yes endif ifeq ($(strip $(CONVERT_TO_PROTON_C)), yes) - include platforms/chibios/QMK_PROTON_C/convert_to_proton_c.mk + include platforms/chibios/boards/QMK_PROTON_C/convert_to_proton_c.mk endif -ifneq ($(FORCE_LAYOUT),) - TARGET := $(TARGET)_$(FORCE_LAYOUT) -endif - -include quantum/mcu_selection.mk +include $(BUILDDEFS_PATH)/mcu_selection.mk # Find all the C source files to be compiled in subfolders. KEYBOARD_SRC := @@ -232,6 +248,7 @@ ifdef MCU_FAMILY PLATFORM=CHIBIOS PLATFORM_KEY=chibios FIRMWARE_FORMAT?=bin + OPT_DEFS += -DMCU_$(MCU_FAMILY) else ifdef ARM_ATSAM PLATFORM=ARM_ATSAM PLATFORM_KEY=arm_atsam @@ -316,6 +333,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 @@ -325,21 +343,38 @@ ifneq ("$(wildcard $(USER_PATH)/post_config.h)","") endif # Disable features that a keyboard doesn't support --include disable_features.mk +-include $(BUILDDEFS_PATH)/disable_features.mk -# Object files directory -# To put object files in current directory, use a dot (.), do NOT make -# this an empty or blank macro! -KEYMAP_OUTPUT := $(BUILD_DIR)/obj_$(TARGET) +# 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 +ifneq ("$(KEYMAP_H)","") + CONFIG_H += $(KEYMAP_H) +endif # project specific files -SRC += $(KEYBOARD_SRC) \ +SRC += \ + $(KEYBOARD_SRC) \ $(KEYMAP_C) \ - $(QUANTUM_SRC) + $(QUANTUM_SRC) \ + $(QUANTUM_DIR)/main.c \ # Optimize size but this may cause error "relocation truncated to fit" #EXTRALDFLAGS = -Wl,--relax @@ -351,9 +386,10 @@ VPATH += $(KEYBOARD_PATHS) VPATH += $(COMMON_VPATH) include common_features.mk +include $(BUILDDEFS_PATH)/generic_features.mk include $(TMK_PATH)/protocol.mk -include $(TMK_PATH)/common.mk -include bootloader.mk +include $(PLATFORM_PATH)/common.mk +include $(BUILDDEFS_PATH)/bootloader.mk SRC += $(patsubst %.c,%.clib,$(LIB_SRC)) SRC += $(patsubst %.c,%.clib,$(QUANTUM_LIB_SRC)) @@ -368,7 +404,9 @@ ifneq ($(REQUIRE_PLATFORM_KEY),) endif endif -include $(TMK_PATH)/$(PLATFORM_KEY).mk +include $(PLATFORM_PATH)/$(PLATFORM_KEY)/platform.mk +-include $(PLATFORM_PATH)/$(PLATFORM_KEY)/flash.mk + ifneq ($(strip $(PROTOCOL)),) include $(TMK_PATH)/protocol/$(strip $(shell echo $(PROTOCOL) | tr '[:upper:]' '[:lower:]')).mk else @@ -380,26 +418,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. @@ -415,7 +447,7 @@ check-size: build check-md5: build objs-size: build -include show_options.mk +include $(BUILDDEFS_PATH)/show_options.mk include $(TMK_PATH)/rules.mk # Ensure we have generated files available for each of the objects diff --git a/build_layout.mk b/build_layout.mk index 4748ad483d89..b4b00793eadc 100644 --- a/build_layout.mk +++ b/build_layout.mk @@ -7,7 +7,6 @@ define SEARCH_LAYOUTS_REPO LAYOUT_KEYMAP_C := $$(LAYOUT_KEYMAP_PATH)/keymap.c ifneq ("$$(wildcard $$(LAYOUT_KEYMAP_JSON))","") -include $$(LAYOUT_KEYMAP_PATH)/rules.mk - KEYMAP_C := $(KEYBOARD_OUTPUT)/src/keymap.c KEYMAP_JSON := $$(LAYOUT_KEYMAP_JSON) KEYMAP_PATH := $$(LAYOUT_KEYMAP_PATH) else ifneq ("$$(wildcard $$(LAYOUT_KEYMAP_C))","") @@ -31,6 +30,3 @@ ifneq ($(FORCE_LAYOUT),) endif $(foreach LAYOUT,$(LAYOUTS),$(eval $(call SEARCH_LAYOUTS))) - -# Use rule from build_json.mk, but update prerequisite in case KEYMAP_JSON was updated -$(KEYBOARD_OUTPUT)/src/keymap.c: $(KEYMAP_JSON) diff --git a/build_test.mk b/build_test.mk index 77c4265f9371..136a0455f01c 100644 --- a/build_test.mk +++ b/build_test.mk @@ -4,7 +4,8 @@ endif .DEFAULT_GOAL := all -include common.mk +include paths.mk +include $(BUILDDEFS_PATH)/message.mk TARGET=test/$(TEST) @@ -15,16 +16,15 @@ TEST_OBJ = $(BUILD_DIR)/test_obj OUTPUTS := $(TEST_OBJ)/$(TEST) $(GTEST_OUTPUT) GTEST_INC := \ - $(LIB_PATH)/googletest/googletest/include\ - $(LIB_PATH)/googletest/googlemock/include\ + $(LIB_PATH)/googletest/googletest/include \ + $(LIB_PATH)/googletest/googlemock/include -GTEST_INTERNAL_INC :=\ - $(LIB_PATH)/googletest/googletest\ +GTEST_INTERNAL_INC := \ + $(LIB_PATH)/googletest/googletest \ $(LIB_PATH)/googletest/googlemock -$(GTEST_OUTPUT)_SRC :=\ +$(GTEST_OUTPUT)_SRC := \ googletest/src/gtest-all.cc\ - googletest/src/gtest_main.cc\ googlemock/src/gmock-all.cc $(GTEST_OUTPUT)_DEFS := @@ -33,9 +33,10 @@ $(GTEST_OUTPUT)_INC := $(GTEST_INC) $(GTEST_INTERNAL_INC) LDFLAGS += -lstdc++ -lpthread -shared-libgcc CREATE_MAP := no -VPATH +=\ - $(LIB_PATH)/googletest\ - $(LIB_PATH)/googlemock +VPATH += \ + $(LIB_PATH)/googletest \ + $(LIB_PATH)/googlemock \ + $(LIB_PATH)/printf all: elf @@ -43,24 +44,38 @@ VPATH += $(COMMON_VPATH) PLATFORM:=TEST PLATFORM_KEY:=test +ifeq ($(strip $(DEBUG)), 1) +CONSOLE_ENABLE = yes +endif + ifneq ($(filter $(FULL_TESTS),$(TEST)),) -include tests/$(TEST)/rules.mk +include tests/test_common/build.mk +include $(TEST_PATH)/test.mk endif include common_features.mk -include $(TMK_PATH)/common.mk +include $(BUILDDEFS_PATH)/generic_features.mk +include $(PLATFORM_PATH)/common.mk +include $(TMK_PATH)/protocol.mk +include $(QUANTUM_PATH)/debounce/tests/rules.mk +include $(QUANTUM_PATH)/encoder/tests/rules.mk include $(QUANTUM_PATH)/sequencer/tests/rules.mk -include $(QUANTUM_PATH)/serial_link/tests/rules.mk +include $(PLATFORM_PATH)/test/rules.mk ifneq ($(filter $(FULL_TESTS),$(TEST)),) include build_full_test.mk endif +$(TEST)_SRC += \ + tests/test_common/main.c \ + $(LIB_PATH)/printf/printf.c \ + $(QUANTUM_PATH)/logging/print.c + $(TEST_OBJ)/$(TEST)_SRC := $($(TEST)_SRC) $(TEST_OBJ)/$(TEST)_INC := $($(TEST)_INC) $(VPATH) $(GTEST_INC) $(TEST_OBJ)/$(TEST)_DEFS := $($(TEST)_DEFS) $(TEST_OBJ)/$(TEST)_CONFIG := $($(TEST)_CONFIG) -include $(TMK_PATH)/native.mk +include $(PLATFORM_PATH)/$(PLATFORM_KEY)/platform.mk include $(TMK_PATH)/rules.mk diff --git a/bootloader.mk b/builddefs/bootloader.mk similarity index 78% rename from bootloader.mk rename to builddefs/bootloader.mk index 4f2d69d9985a..ccb92392d903 100644 --- a/bootloader.mk +++ b/builddefs/bootloader.mk @@ -21,18 +21,21 @@ # Current options: # # AVR: -# halfkay PJRC Teensy -# caterina Pro Micro (Sparkfun/generic) -# atmel-dfu Atmel factory DFU -# lufa-dfu LUFA DFU -# qmk-dfu QMK DFU (LUFA + blinkenlight) -# bootloadHID HIDBootFlash compatible (ATmega32A) -# USBasp USBaspLoader (ATmega328P) +# halfkay PJRC Teensy +# caterina Pro Micro (Sparkfun/generic) +# atmel-dfu Atmel factory DFU +# lufa-dfu LUFA DFU +# qmk-dfu QMK DFU (LUFA + blinkenlight) +# qmk-hid QMK HID (LUFA + blinkenlight) +# bootloadhid HIDBootFlash compatible (ATmega32A) +# usbasploader USBaspLoader (ATmega328P) # ARM: -# kiibohd Input:Club Kiibohd bootloader (only used on their boards) -# stm32duino STM32Duino (STM32F103x8) -# stm32-dfu STM32 USB DFU in ROM -# apm32-dfu APM32 USB DFU in ROM +# kiibohd Input:Club Kiibohd bootloader (only used on their boards) +# 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 @@ -51,22 +54,27 @@ ifeq ($(strip $(BOOTLOADER)), lufa-dfu) OPT_DEFS += -DBOOTLOADER_LUFA_DFU OPT_DEFS += -DBOOTLOADER_DFU ifneq (,$(filter $(MCU), at90usb162 atmega16u2 atmega32u2 atmega16u4 atmega32u4 at90usb646 at90usb647)) - BOOTLOADER_SIZE = 4096 + BOOTLOADER_SIZE ?= 4096 endif ifneq (,$(filter $(MCU), at90usb1286 at90usb1287)) - BOOTLOADER_SIZE = 8192 + BOOTLOADER_SIZE ?= 8192 endif endif ifeq ($(strip $(BOOTLOADER)), qmk-dfu) OPT_DEFS += -DBOOTLOADER_QMK_DFU OPT_DEFS += -DBOOTLOADER_DFU ifneq (,$(filter $(MCU), at90usb162 atmega16u2 atmega32u2 atmega16u4 atmega32u4 at90usb646 at90usb647)) - BOOTLOADER_SIZE = 4096 + BOOTLOADER_SIZE ?= 4096 endif ifneq (,$(filter $(MCU), at90usb1286 at90usb1287)) - BOOTLOADER_SIZE = 8192 + BOOTLOADER_SIZE ?= 8192 endif endif +ifeq ($(strip $(BOOTLOADER)), qmk-hid) + OPT_DEFS += -DBOOTLOADER_QMK_HID + OPT_DEFS += -DBOOTLOADER_HID + BOOTLOADER_SIZE ?= 4096 +endif ifeq ($(strip $(BOOTLOADER)), halfkay) OPT_DEFS += -DBOOTLOADER_HALFKAY ifeq ($(strip $(MCU)), atmega32u4) @@ -80,11 +88,11 @@ ifeq ($(strip $(BOOTLOADER)), caterina) OPT_DEFS += -DBOOTLOADER_CATERINA BOOTLOADER_SIZE = 4096 endif -ifeq ($(strip $(BOOTLOADER)), bootloadHID) +ifneq (,$(filter $(BOOTLOADER), bootloadhid bootloadHID)) OPT_DEFS += -DBOOTLOADER_BOOTLOADHID BOOTLOADER_SIZE = 4096 endif -ifeq ($(strip $(BOOTLOADER)), USBasp) +ifneq (,$(filter $(BOOTLOADER), usbasploader USBasp)) OPT_DEFS += -DBOOTLOADER_USBASP BOOTLOADER_SIZE = 4096 endif @@ -119,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/disable_features.mk b/builddefs/disable_features.mk similarity index 90% rename from disable_features.mk rename to builddefs/disable_features.mk index 84d8316eac9c..090a9b5a1123 100644 --- a/disable_features.mk +++ b/builddefs/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/builddefs/generic_features.mk b/builddefs/generic_features.mk new file mode 100644 index 000000000000..e4151eb21791 --- /dev/null +++ b/builddefs/generic_features.mk @@ -0,0 +1,52 @@ +# 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 . + +SPACE_CADET_ENABLE ?= yes +GRAVE_ESC_ENABLE ?= yes + +GENERIC_FEATURES = \ + COMBO \ + COMMAND \ + DEFERRED_EXEC \ + DIGITIZER \ + DIP_SWITCH \ + DYNAMIC_KEYMAP \ + DYNAMIC_MACRO \ + ENCODER \ + GRAVE_ESC \ + HAPTIC \ + KEY_LOCK \ + KEY_OVERRIDE \ + LEADER \ + PROGRAMMABLE_BUTTON \ + SPACE_CADET \ + SWAP_HANDS \ + TAP_DANCE \ + VELOCIKEY \ + WPM \ + DYNAMIC_TAPPING_TERM \ + +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/builddefs/mcu_selection.mk b/builddefs/mcu_selection.mk new file mode 100644 index 000000000000..46d34aabe421 --- /dev/null +++ b/builddefs/mcu_selection.mk @@ -0,0 +1,697 @@ +MCU_ORIG := $(MCU) + +ifneq ($(findstring MKL26Z64, $(MCU)),) + # Cortex version + MCU = cortex-m0plus + + # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 + ARMV = 6 + + ## chip/board settings + # - the next two should match the directories in + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = KINETIS + MCU_SERIES = KL2x + + # Linker script to use + # - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/ + # or /ld/ + MCU_LDSCRIPT ?= MKL26Z64 + + # Startup code to use + # - it should exist in /os/common/ports/ARMCMx/compilers/GCC/mk/ + MCU_STARTUP ?= kl2x + + # Board: it should exist either in /os/hal/boards/, + # /boards/, or drivers/boards/ + BOARD ?= PJRC_TEENSY_LC +endif + +ifneq ($(findstring MK20DX128, $(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 + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = KINETIS + MCU_SERIES = K20x + + # Linker script to use + # - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/ + # or /ld/ + MCU_LDSCRIPT ?= MK20DX128 + + # Startup code to use + # - it should exist in /os/common/ports/ARMCMx/compilers/GCC/mk/ + MCU_STARTUP ?= k20x5 + + # Board: it should exist either in /os/hal/boards/, + # /boards/, or drivers/boards/ + BOARD ?= PJRC_TEENSY_3 +endif + +ifneq ($(findstring MK20DX256, $(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 + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = KINETIS + MCU_SERIES = K20x + + # Linker script to use + # - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/ + # or /ld/ + MCU_LDSCRIPT ?= MK20DX256 + + # Startup code to use + # - it should exist in /os/common/ports/ARMCMx/compilers/GCC/mk/ + MCU_STARTUP ?= k20x7 + + # Board: it should exist either in /os/hal/boards/, + # /boards/, or drivers/boards/ + BOARD ?= PJRC_TEENSY_3_1 +endif + +ifneq ($(findstring MK66FX1M0, $(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 + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = KINETIS + MCU_SERIES = MK66F18 + + # Linker script to use + # - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/ + # or /ld/ + MCU_LDSCRIPT ?= MK66FX1M0 + + # Startup code to use + # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/ + MCU_STARTUP ?= MK66F18 + + # Board: it should exist either in /os/hal/boards/, + # /boards/, or drivers/boards/ + BOARD ?= PJRC_TEENSY_3_6 +endif + +ifneq ($(findstring STM32F042, $(MCU)),) + # Cortex version + MCU = cortex-m0 + + # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 + ARMV = 6 + + ## chip/board settings + # - the next two should match the directories in + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = STM32 + MCU_SERIES = STM32F0xx + + # Linker script to use + # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/ + # or /ld/ + MCU_LDSCRIPT ?= STM32F042x6 + + # Startup code to use + # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/ + MCU_STARTUP ?= stm32f0xx + + # Board: it should exist either in /os/hal/boards/, + # /boards/, or drivers/boards/ + BOARD ?= GENERIC_STM32_F042X6 + + USE_FPU ?= no + + # 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)),) + # Cortex version + MCU = cortex-m0 + + # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 + ARMV = 6 + + ## chip/board settings + # - the next two should match the directories in + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = STM32 + MCU_SERIES = STM32F0xx + + # Linker script to use + # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/ + # or /ld/ + MCU_LDSCRIPT ?= STM32F072xB + + # Startup code to use + # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/ + MCU_STARTUP ?= stm32f0xx + + # Board: it should exist either in /os/hal/boards/, + # /boards/, or drivers/boards/ + BOARD ?= GENERIC_STM32_F072XB + + USE_FPU ?= no + + # UF2 settings + UF2_FAMILY ?= STM32F0 +endif + +ifneq ($(findstring STM32F103, $(MCU)),) + # Cortex version + MCU = cortex-m3 + + # 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 + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = STM32 + MCU_SERIES = STM32F1xx + + # Linker script to use + # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/ + # or /ld/ + MCU_LDSCRIPT ?= STM32F103x8 + + # Startup code to use + # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/ + MCU_STARTUP ?= stm32f1xx + + # Board: it should exist either in /os/hal/boards/, + # /boards/, or drivers/boards/ + BOARD ?= GENERIC_STM32_F103 + + USE_FPU ?= no + + # UF2 settings + UF2_FAMILY ?= STM32F1 +endif + +ifneq ($(findstring STM32F303, $(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 + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = STM32 + MCU_SERIES = STM32F3xx + + # Linker script to use + # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/ + # or /ld/ + MCU_LDSCRIPT ?= STM32F303xC + + # Startup code to use + # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/ + MCU_STARTUP ?= stm32f3xx + + # Board: it should exist either in /os/hal/boards/, + # /boards/, or drivers/boards/ + BOARD ?= GENERIC_STM32_F303XC + + USE_FPU ?= yes + + # UF2 settings + UF2_FAMILY ?= STM32F3 +endif + +ifneq ($(findstring STM32F401, $(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 + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = STM32 + MCU_SERIES = STM32F4xx + + # Linker script to use + # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/ + # or /ld/ + ifeq ($(strip $(BOOTLOADER)), tinyuf2) + MCU_LDSCRIPT ?= STM32F401xC_tinyuf2 + FIRMWARE_FORMAT ?= uf2 + else + MCU_LDSCRIPT ?= STM32F401xC + endif + + # Startup code to use + # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/ + MCU_STARTUP ?= stm32f4xx + + # Board: it should exist either in /os/hal/boards/, + # /boards/, or drivers/boards/ + BOARD ?= BLACKPILL_STM32_F401 + + USE_FPU ?= yes + + # UF2 settings + 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 + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = STM32 + MCU_SERIES = STM32F4xx + + # Linker script to use + # - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/ + # or /ld/ + MCU_LDSCRIPT ?= STM32F405xG + + # Startup code to use + # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/ + MCU_STARTUP ?= stm32f4xx + + # Board: it should exist either in /os/hal/boards/, + # /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 + + # 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 + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = STM32 + MCU_SERIES = STM32F4xx + + # Linker script to use + # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/ + # or /ld/ + MCU_LDSCRIPT ?= STM32F407xE + + # Startup code to use + # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/ + MCU_STARTUP ?= stm32f4xx + + # Board: it should exist either in /os/hal/boards/, + # /boards/, or drivers/boards/ + BOARD ?= GENERIC_STM32_F407XE + + USE_FPU ?= yes + + # UF2 settings + UF2_FAMILY ?= STM32F4 +endif + +ifneq ($(findstring STM32F411, $(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 + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = STM32 + MCU_SERIES = STM32F4xx + + # Linker script to use + # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/ + # or /ld/ + ifeq ($(strip $(BOOTLOADER)), tinyuf2) + MCU_LDSCRIPT ?= STM32F411xE_tinyuf2 + FIRMWARE_FORMAT ?= uf2 + else + MCU_LDSCRIPT ?= STM32F411xE + endif + + # Startup code to use + # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/ + MCU_STARTUP ?= stm32f4xx + + # Board: it should exist either in /os/hal/boards/, + # /boards/, or drivers/boards/ + BOARD ?= BLACKPILL_STM32_F411 + + USE_FPU ?= yes + + # UF2 settings + UF2_FAMILY ?= STM32F4 +endif + +ifneq ($(findstring STM32F446, $(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 + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = STM32 + MCU_SERIES = STM32F4xx + + # Linker script to use + # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/ + # or /ld/ + MCU_LDSCRIPT ?= STM32F446xE + + # Startup code to use + # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/ + MCU_STARTUP ?= stm32f4xx + + # Board: it should exist either in /os/hal/boards/, + # /boards/, or drivers/boards/ + BOARD ?= GENERIC_STM32_F446XE + + USE_FPU ?= yes +endif + +ifneq ($(findstring STM32G431, $(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 + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = STM32 + MCU_SERIES = STM32G4xx + + # Linker script to use + # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/ + # or /ld/ + MCU_LDSCRIPT ?= STM32G431xB + + # Startup code to use + # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/ + MCU_STARTUP ?= stm32g4xx + + # Board: it should exist either in /os/hal/boards/, + # /boards/, or drivers/boards/ + BOARD ?= GENERIC_STM32_G431XB + + USE_FPU ?= yes + + # UF2 settings + UF2_FAMILY ?= STM32G4 +endif + +ifneq ($(findstring STM32G474, $(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 + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = STM32 + MCU_SERIES = STM32G4xx + + # Linker script to use + # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/ + # or /ld/ + MCU_LDSCRIPT ?= STM32G474xE + + # Startup code to use + # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/ + MCU_STARTUP ?= stm32g4xx + + # Board: it should exist either in /os/hal/boards/, + # /boards/, or drivers/boards/ + BOARD ?= GENERIC_STM32_G474XE + + USE_FPU ?= yes + + # UF2 settings + UF2_FAMILY ?= STM32G4 +endif + +ifneq (,$(filter $(MCU),STM32L433 STM32L443)) + # 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 + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = STM32 + MCU_SERIES = STM32L4xx + + # Linker script to use + # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/ + # or /ld/ + MCU_LDSCRIPT ?= STM32L432xC + + # Startup code to use + # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/ + MCU_STARTUP ?= stm32l4xx + + # Board: it should exist either in /os/hal/boards/, + # /boards/, or drivers/boards/ + BOARD ?= GENERIC_STM32_L433XC + + PLATFORM_NAME ?= platform_l432 + + USE_FPU ?= yes + + # UF2 settings + UF2_FAMILY ?= STM32L4 +endif + +ifneq (,$(filter $(MCU),STM32L412 STM32L422)) + # 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 + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = STM32 + MCU_SERIES = STM32L4xx + + # Linker script to use + # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/ + # or /ld/ + MCU_LDSCRIPT ?= STM32L412xB + + # Startup code to use + # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/ + MCU_STARTUP ?= stm32l4xx + + # Board: it should exist either in /os/hal/boards/, + # /boards/, or drivers/boards/ + BOARD ?= GENERIC_STM32_L412XB + + PLATFORM_NAME ?= platform_l432 + + USE_FPU ?= yes + + # UF2 settings + UF2_FAMILY ?= STM32L4 +endif + +ifneq ($(findstring WB32F3G71, $(MCU)),) + # Cortex version + MCU = cortex-m3 + + # 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 + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = WB32 + MCU_SERIES = WB32F3G71xx + + # Linker script to use + # - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/ + # or /ld/ + MCU_LDSCRIPT ?= WB32F3G71x9 + + # Startup code to use + # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/ + MCU_STARTUP ?= wb32f3g71xx + + # Board: it should exist either in /os/hal/boards/, + # /boards/, or drivers/boards/ + BOARD ?= GENERIC_WB32_F3G71XX + + USE_FPU ?= no +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 + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = GD32V + MCU_SERIES = GD32VF103 + + # Linker script to use + # - it should exist either in /os/common/startup/RISCV-ECLIC/compilers/GCC/ld/ + # or /ld/ + MCU_LDSCRIPT ?= GD32VF103xB + + # Startup code to use + # - it should exist in /os/common/startup/RISCV-ECLIC/compilers/GCC/mk/ + MCU_STARTUP ?= gd32vf103 + + # Board: it should exist either in /os/hal/boards/, + # /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 + + # Processor frequency. + # This will define a symbol, F_CPU, in all source code files equal to the + # processor frequency in Hz. You can then use this symbol in your source code to + # calculate timings. Do NOT tack on a 'UL' at the end, this will be done + # automatically to create a 32-bit value in your source code. + # + # This will be an integer division of F_USB below, as it is sourced by + # F_USB after it has run through any CPU prescalers. Note that this value + # does not *change* the processor frequency - it should merely be updated to + # reflect the processor speed set externally so that the code can use accurate + # software delays. + F_CPU ?= 16000000 + + # LUFA specific + # + # Target architecture (see library "Board Types" documentation). + ARCH = AVR8 + + # Input clock frequency. + # This will define a symbol, F_USB, in all source code files equal to the + # input clock frequency (before any prescaling is performed) in Hz. This value may + # differ from F_CPU if prescaling is used on the latter, and is required as the + # raw input clock is fed directly to the PLL sections of the AVR for high speed + # clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' + # at the end, this will be done automatically to create a 32-bit value in your + # source code. + # + # If no clock division is performed on the input clock inside the AVR (via the + # CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. + F_USB ?= $(F_CPU) + + # Interrupt driven control endpoint task + ifeq (,$(filter $(NO_INTERRUPT_CONTROL_ENDPOINT),yes)) + OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + endif + ifneq (,$(filter $(MCU),at90usb162 atmega16u2 atmega32u2)) + NO_I2C = yes + endif +endif + +ifneq (,$(filter $(MCU),atmega32a)) + # MCU name for avrdude + AVRDUDE_MCU = m32 + + PROTOCOL = VUSB + + # Processor frequency. + # This will define a symbol, F_CPU, in all source code files equal to the + # processor frequency in Hz. You can then use this symbol in your source code to + # calculate timings. Do NOT tack on a 'UL' at the end, this will be done + # automatically to create a 32-bit value in your source code. + F_CPU ?= 12000000 +endif + +ifneq (,$(filter $(MCU),atmega328p)) + # MCU name for avrdude + AVRDUDE_MCU = m328p + + PROTOCOL = VUSB + + # Processor frequency. + # This will define a symbol, F_CPU, in all source code files equal to the + # processor frequency in Hz. You can then use this symbol in your source code to + # calculate timings. Do NOT tack on a 'UL' at the end, this will be done + # automatically to create a 32-bit value in your source code. + F_CPU ?= 16000000 +endif + +ifneq (,$(filter $(MCU),atmega328)) + # MCU name for avrdude + AVRDUDE_MCU = m328 + + PROTOCOL = VUSB + + # Processor frequency. + # This will define a symbol, F_CPU, in all source code files equal to the + # processor frequency in Hz. You can then use this symbol in your source code to + # calculate timings. Do NOT tack on a 'UL' at the end, this will be done + # automatically to create a 32-bit value in your source code. + F_CPU ?= 16000000 +endif + +ifneq (,$(filter $(MCU),attiny85)) + PROTOCOL = VUSB + + # Processor frequency. + # This will define a symbol, F_CPU, in all source code files equal to the + # processor frequency in Hz. You can then use this symbol in your source code to + # calculate timings. Do NOT tack on a 'UL' at the end, this will be done + # automatically to create a 32-bit value in your source code. + F_CPU ?= 16500000 +endif diff --git a/message.mk b/builddefs/message.mk similarity index 86% rename from message.mk rename to builddefs/message.mk index da5f9fb9e38b..cb4ef43719a3 100644 --- a/message.mk +++ b/builddefs/message.mk @@ -36,6 +36,10 @@ PRINT_OK = $(SILENT) || printf " $(OK_STRING)" | $(AWK_STATUS) BUILD_CMD = LOG=$$($(CMD) 2>&1) ; if [ $$? -gt 0 ]; then $(PRINT_ERROR); elif [ "$$LOG" != "" ] ; then $(PRINT_WARNING); else $(PRINT_OK); fi; MAKE_MSG_FORMAT = $(AWK) '{ printf "%-118s", $$0;}' +# The UNSYNC_OUTPUT_CMD command disables the `--output-sync` for the current command, if the `--output-sync` granularity is `target` or lower. +# This is achieved by telling make to treat the current command as if it invokes a recursive make subcommand (as if by calling `$(MAKE)`). +UNSYNC_OUTPUT_CMD = +true + # Define Messages # English MSG_ERRORS_NONE = Errors: none @@ -84,14 +88,15 @@ endef MSG_AVAILABLE_KEYMAPS = $(eval $(call GENERATE_MSG_AVAILABLE_KEYMAPS))$(MSG_AVAILABLE_KEYMAPS_ACTUAL) MSG_CHECK_FILESIZE = Checking file size of $(TARGET).$(FIRMWARE_FORMAT) +MSG_CHECK_FILESIZE_SKIPPED = (Firmware size check does not yet support $(MCU_ORIG); skipping) MSG_FILE_TOO_BIG = $(ERROR_COLOR)The firmware is too large!$(NO_COLOR) $(CURRENT_SIZE)/$(MAX_SIZE) ($(OVER_SIZE) bytes over)\n MSG_FILE_TOO_SMALL = The firmware is too small! $(CURRENT_SIZE)/$(MAX_SIZE)\n MSG_FILE_JUST_RIGHT = The firmware size is fine - $(CURRENT_SIZE)/$(MAX_SIZE) ($(PERCENT_SIZE)%%, $(FREE_SIZE) bytes free)\n MSG_FILE_NEAR_LIMIT = The firmware size is approaching the maximum - $(CURRENT_SIZE)/$(MAX_SIZE) ($(PERCENT_SIZE)%%, $(FREE_SIZE) bytes free)\n -MSG_PYTHON_MISSING = $(ERROR_COLOR)ERROR:$(NO_COLOR) Can not run \"qmk\" command!\n\n\ - Please run $(BOLD)util/qmk_install.sh$(NO_COLOR) to install all the dependencies QMK requires.\n\n +MSG_PYTHON_MISSING = $(ERROR_COLOR)ERROR:$(NO_COLOR) Cannot run \"qmk hello\"!\n\n\ + Please run $(BOLD)qmk setup$(NO_COLOR) to install all the dependencies QMK requires.\n\n MSG_FLASH_BOOTLOADER = $(WARN_COLOR)WARNING:$(NO_COLOR) This board's bootloader is not specified or is not supported by the \":flash\" target at this time.\n\n MSG_FLASH_ARCH = $(WARN_COLOR)WARNING:$(NO_COLOR) This board's architecture is not supported by the \":flash\" target at this time.\n\n -MSG_BOOTLOADER_NOT_FOUND = $(ERROR_COLOR)ERROR:$(NO_COLOR) Bootloader not found. Trying again in 5s.\n +MSG_BOOTLOADER_NOT_FOUND = $(ERROR_COLOR)ERROR:$(NO_COLOR) Bootloader not found. Trying again in 5s (Ctrl+C to cancel)\n BOOTLOADER_RETRY_TIME ?= 0.5 -MSG_BOOTLOADER_NOT_FOUND_QUICK_RETRY = Bootloader not found. Trying again every $(BOOTLOADER_RETRY_TIME)s +MSG_BOOTLOADER_NOT_FOUND_QUICK_RETRY = Bootloader not found. Trying again every $(BOOTLOADER_RETRY_TIME)s (Ctrl+C to cancel) diff --git a/builddefs/show_options.mk b/builddefs/show_options.mk new file mode 100644 index 000000000000..2820332d56bd --- /dev/null +++ b/builddefs/show_options.mk @@ -0,0 +1,148 @@ +BUILD_OPTION_NAMES = \ + BOOTMAGIC_ENABLE \ + MOUSEKEY_ENABLE \ + EXTRAKEY_ENABLE \ + CONSOLE_ENABLE \ + COMMAND_ENABLE \ + NKRO_ENABLE \ + TERMINAL_ENABLE \ + CUSTOM_MATRIX \ + DEBOUNCE_TYPE \ + SPLIT_KEYBOARD \ + DYNAMIC_KEYMAP_ENABLE \ + USB_HID_ENABLE \ + VIA_ENABLE + +HARDWARE_OPTION_NAMES = \ + SLEEP_LED_ENABLE \ + BACKLIGHT_ENABLE \ + BACKLIGHT_DRIVER \ + RGBLIGHT_ENABLE \ + RGBLIGHT_CUSTOM_DRIVER \ + RGB_MATRIX_ENABLE \ + RGB_MATRIX_DRIVER \ + CIE1931_CURVE \ + MIDI_ENABLE \ + BLUETOOTH_ENABLE \ + BLUETOOTH_DRIVER \ + AUDIO_ENABLE \ + HD44780_ENABLE \ + ENCODER_ENABLE \ + LED_TABLES \ + POINTING_DEVICE_ENABLE \ + DIP_SWITCH_ENABLE + +OTHER_OPTION_NAMES = \ + UNICODE_ENABLE \ + UCIS_ENABLE \ + UNICODEMAP_ENABLE \ + UNICODE_COMMON \ + AUTO_SHIFT_ENABLE \ + AUTO_SHIFT_MODIFIERS \ + DYNAMIC_TAPPING_TERM_ENABLE \ + COMBO_ENABLE \ + KEY_LOCK_ENABLE \ + KEY_OVERRIDE_ENABLE \ + LEADER_ENABLE \ + PRINTING_ENABLE \ + STENO_ENABLE \ + TAP_DANCE_ENABLE \ + VIRTSER_ENABLE \ + OLED_ENABLE \ + OLED_DRIVER \ + LED_BACK_ENABLE \ + LED_UNDERGLOW_ENABLE \ + LED_ANIMATIONS \ + IOS_DEVICE_ENABLE \ + HELIX ZINC \ + AUTOLOG_ENABLE \ + DEBUG_ENABLE \ + ENCODER_ENABLE_CUSTOM \ + GERMAN_ENABLE \ + HAPTIC_ENABLE \ + HHKB_RN42_ENABLE \ + ISSI_ENABLE \ + KEYLOGGER_ENABLE \ + LCD_BACKLIGHT_ENABLE \ + MACROS_ENABLED \ + PS2_MOUSE_ENABLE \ + RAW_ENABLE \ + SWAP_HANDS_ENABLE \ + RING_BUFFERED_6KRO_REPORT_ENABLE \ + WATCHDOG_ENABLE \ + ERGOINU \ + NO_USB_STARTUP_CHECK \ + DISABLE_PROMICRO_LEDs \ + MITOSIS_DATAGROK_BOTTOMSPACE \ + MITOSIS_DATAGROK_SLOWUART \ + RGB_MATRIX_KEYPRESSES \ + LED_MIRRORED \ + RGBLIGHT_FULL_POWER \ + LTO_ENABLE \ + PROGRAMMABLE_BUTTON_ENABLE + +define NAME_ECHO + @printf " %-30s = %-16s # %s\\n" "$1" "$($1)" "$(origin $1)" + +endef + +define YAML_NAME_ECHO + @echo ' $1 : "$(strip $($1))"' + +endef + +.PHONY: show_build_options0 show_build_options +show_build_options0: + @echo " KEYBOARD = $(KEYBOARD)" + @echo " KEYMAP = $(KEYMAP)" + @echo " MCU = $(MCU)" + @echo " MCU_SERIES = $(MCU_SERIES)" + @echo " PLATFORM = $(PLATFORM)" + @echo " BOOTLOADER = $(BOOTLOADER)" + @echo " FIRMWARE_FORMAT = $(FIRMWARE_FORMAT)" + @echo + @echo "Build Options:" + $(foreach A_OPTION_NAME,$(sort $(BUILD_OPTION_NAMES)),\ + $(call NAME_ECHO,$(A_OPTION_NAME))) + +show_build_options: show_build_options0 + @echo + @echo "If you want to know more, please try 'show_all_features' or 'show_full_features'" + @echo + +.PHONY: show_all_features +show_all_features: show_build_options0 + @echo + @echo "Hardware Options:" + $(foreach A_OPTION_NAME,$(sort $(HARDWARE_OPTION_NAMES)),\ + $(if $($(A_OPTION_NAME)),$(call NAME_ECHO,$(A_OPTION_NAME)))) + @echo + @echo "Other Options:" + $(foreach A_OPTION_NAME,$(sort $(OTHER_OPTION_NAMES)),\ + $(if $($(A_OPTION_NAME)),$(call NAME_ECHO,$(A_OPTION_NAME)))) + +.PHONY: show_full_features +show_full_features: show_build_options0 + @echo + @echo "Hardware Options:" + $(foreach A_OPTION_NAME,$(sort $(HARDWARE_OPTION_NAMES)),\ + $(call NAME_ECHO,$(A_OPTION_NAME))) + @echo + @echo "Other Options:" + $(foreach A_OPTION_NAME,$(sort $(OTHER_OPTION_NAMES)),\ + $(call NAME_ECHO,$(A_OPTION_NAME))) + +.PHONY: yaml_build_options +yaml_build_options: + @echo '- KEYBOARD : "$(KEYBOARD)"' + @echo ' KEYMAP : "$(KEYMAP)"' + @echo ' MCU : "$(MCU)"' + @echo ' MCU_SERIES : "$(MCU_SERIES)"' + @echo ' PLATFORM : "$(PLATFORM)"' + @echo ' FIRMWARE_FORMAT : "$(FIRMWARE_FORMAT)"' + $(foreach A_OPTION_NAME,$(sort $(BUILD_OPTION_NAMES)),\ + $(call YAML_NAME_ECHO,$(A_OPTION_NAME))) + $(foreach A_OPTION_NAME,$(sort $(HARDWARE_OPTION_NAMES)),\ + $(if $($(A_OPTION_NAME)),$(call YAML_NAME_ECHO,$(A_OPTION_NAME)))) + $(foreach A_OPTION_NAME,$(sort $(OTHER_OPTION_NAMES)),\ + $(if $($(A_OPTION_NAME)),$(call YAML_NAME_ECHO,$(A_OPTION_NAME)))) diff --git a/common.mk b/common.mk deleted file mode 100644 index c13b5e2768a7..000000000000 --- a/common.mk +++ /dev/null @@ -1,25 +0,0 @@ -include message.mk - -# Directory common source files exist -TOP_DIR = . -TMK_DIR = tmk_core -TMK_PATH = $(TMK_DIR) -LIB_PATH = lib - -QUANTUM_DIR = quantum -QUANTUM_PATH = $(QUANTUM_DIR) - -DRIVER_DIR = drivers -DRIVER_PATH = $(DRIVER_DIR) - -BUILD_DIR := .build - -COMMON_VPATH := $(TOP_DIR) -COMMON_VPATH += $(TMK_PATH) -COMMON_VPATH += $(QUANTUM_PATH) -COMMON_VPATH += $(QUANTUM_PATH)/keymap_extras -COMMON_VPATH += $(QUANTUM_PATH)/audio -COMMON_VPATH += $(QUANTUM_PATH)/process_keycode -COMMON_VPATH += $(QUANTUM_PATH)/api -COMMON_VPATH += $(QUANTUM_PATH)/sequencer -COMMON_VPATH += $(DRIVER_PATH) diff --git a/common_features.mk b/common_features.mk index 1a9fd46b5590..8c593024f0d1 100644 --- a/common_features.mk +++ b/common_features.mk @@ -13,15 +13,31 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -SERIAL_PATH := $(QUANTUM_PATH)/serial_link - QUANTUM_SRC += \ $(QUANTUM_DIR)/quantum.c \ $(QUANTUM_DIR)/send_string.c \ $(QUANTUM_DIR)/bitwise.c \ $(QUANTUM_DIR)/led.c \ + $(QUANTUM_DIR)/action.c \ + $(QUANTUM_DIR)/action_layer.c \ + $(QUANTUM_DIR)/action_macro.c \ + $(QUANTUM_DIR)/action_tapping.c \ + $(QUANTUM_DIR)/action_util.c \ + $(QUANTUM_DIR)/eeconfig.c \ + $(QUANTUM_DIR)/keyboard.c \ $(QUANTUM_DIR)/keymap_common.c \ - $(QUANTUM_DIR)/keycode_config.c + $(QUANTUM_DIR)/keycode_config.c \ + $(QUANTUM_DIR)/sync_timer.c \ + $(QUANTUM_DIR)/logging/debug.c \ + $(QUANTUM_DIR)/logging/sendchar.c \ + +VPATH += $(QUANTUM_DIR)/logging +# Fall back to lib/printf if there is no platform provided print +ifeq ("$(wildcard $(PLATFORM_PATH)/$(PLATFORM_KEY)/printf.mk)","") + include $(QUANTUM_PATH)/logging/print.mk +else + include $(PLATFORM_PATH)/$(PLATFORM_KEY)/printf.mk +endif ifeq ($(strip $(DEBUG_MATRIX_SCAN_RATE_ENABLE)), yes) OPT_DEFS += -DDEBUG_MATRIX_SCAN_RATE @@ -30,19 +46,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) @@ -67,7 +70,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 @@ -102,14 +105,47 @@ endif ifeq ($(strip $(MOUSEKEY_ENABLE)), yes) OPT_DEFS += -DMOUSEKEY_ENABLE - OPT_DEFS += -DMOUSE_ENABLE + MOUSE_ENABLE := yes SRC += $(QUANTUM_DIR)/mousekey.c endif +VALID_POINTING_DEVICE_DRIVER_TYPES := adns5050 adns9800 analog_joystick cirque_pinnacle_i2c cirque_pinnacle_spi pmw3360 pimoroni_trackball custom +POINTING_DEVICE_DRIVER ?= custom ifeq ($(strip $(POINTING_DEVICE_ENABLE)), yes) - OPT_DEFS += -DPOINTING_DEVICE_ENABLE - OPT_DEFS += -DMOUSE_ENABLE - SRC += $(QUANTUM_DIR)/pointing_device.c + ifeq ($(filter $(POINTING_DEVICE_DRIVER),$(VALID_POINTING_DEVICE_DRIVER_TYPES)),) + $(error POINTING_DEVICE_DRIVER="$(POINTING_DEVICE_DRIVER)" is not a valid pointing device type) + else + OPT_DEFS += -DPOINTING_DEVICE_ENABLE + MOUSE_ENABLE := yes + SRC += $(QUANTUM_DIR)/pointing_device.c + SRC += $(QUANTUM_DIR)/pointing_device_drivers.c + ifneq ($(strip $(POINTING_DEVICE_DRIVER)), custom) + SRC += drivers/sensors/$(strip $(POINTING_DEVICE_DRIVER)).c + OPT_DEFS += -DPOINTING_DEVICE_DRIVER_$(strip $(shell echo $(POINTING_DEVICE_DRIVER) | tr '[:lower:]' '[:upper:]')) + endif + OPT_DEFS += -DPOINTING_DEVICE_DRIVER_$(strip $(POINTING_DEVICE_DRIVER)) + ifeq ($(strip $(POINTING_DEVICE_DRIVER)), adns9800) + OPT_DEFS += -DSTM32_SPI -DHAL_USE_SPI=TRUE + QUANTUM_LIB_SRC += spi_master.c + else ifeq ($(strip $(POINTING_DEVICE_DRIVER)), analog_joystick) + OPT_DEFS += -DSTM32_ADC -DHAL_USE_ADC=TRUE + LIB_SRC += analog.c + else ifeq ($(strip $(POINTING_DEVICE_DRIVER)), cirque_pinnacle_i2c) + OPT_DEFS += -DSTM32_I2C -DHAL_USE_I2C=TRUE + SRC += drivers/sensors/cirque_pinnacle.c + QUANTUM_LIB_SRC += i2c_master.c + else ifeq ($(strip $(POINTING_DEVICE_DRIVER)), cirque_pinnacle_spi) + OPT_DEFS += -DSTM32_SPI -DHAL_USE_SPI=TRUE + SRC += drivers/sensors/cirque_pinnacle.c + QUANTUM_LIB_SRC += spi_master.c + else ifeq ($(strip $(POINTING_DEVICE_DRIVER)), pimoroni_trackball) + OPT_DEFS += -DSTM32_SPI -DHAL_USE_I2C=TRUE + QUANTUM_LIB_SRC += i2c_master.c + else ifeq ($(strip $(POINTING_DEVICE_DRIVER)), pmw3360) + OPT_DEFS += -DSTM32_SPI -DHAL_USE_SPI=TRUE + QUANTUM_LIB_SRC += spi_master.c + endif + endif endif VALID_EEPROM_DRIVER_TYPES := vendor custom transient i2c spi @@ -141,36 +177,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 - SRC += eeprom_driver.c eeprom_stm32_L0_L1.c + COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/eeprom + 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 @@ -196,10 +214,11 @@ ifeq ($(strip $(RGBLIGHT_ENABLE)), yes) ifeq ($(filter $(RGBLIGHT_DRIVER),$(VALID_RGBLIGHT_TYPES)),) $(error RGBLIGHT_DRIVER="$(RGBLIGHT_DRIVER)" is not a valid RGB type) else - POST_CONFIG_H += $(QUANTUM_DIR)/rgblight_post_config.h + COMMON_VPATH += $(QUANTUM_DIR)/rgblight + POST_CONFIG_H += $(QUANTUM_DIR)/rgblight/rgblight_post_config.h OPT_DEFS += -DRGBLIGHT_ENABLE SRC += $(QUANTUM_DIR)/color.c - SRC += $(QUANTUM_DIR)/rgblight.c + SRC += $(QUANTUM_DIR)/rgblight/rgblight.c CIE1931_CURVE := yes RGB_KEYCODES_ENABLE := yes endif @@ -230,21 +249,25 @@ ifneq (,$(filter $(MCU), atmega16u2 atmega32u2 at90usb162)) # ATmegaxxU2 does not have hardware MUL instruction - lib8tion must be told to use software multiplication routines OPT_DEFS += -DLIB8_ATTINY endif + COMMON_VPATH += $(QUANTUM_DIR)/led_matrix + COMMON_VPATH += $(QUANTUM_DIR)/led_matrix/animations + COMMON_VPATH += $(QUANTUM_DIR)/led_matrix/animations/runners SRC += $(QUANTUM_DIR)/process_keycode/process_backlight.c - SRC += $(QUANTUM_DIR)/led_matrix.c - SRC += $(QUANTUM_DIR)/led_matrix_drivers.c + SRC += $(QUANTUM_DIR)/led_matrix/led_matrix.c + SRC += $(QUANTUM_DIR)/led_matrix/led_matrix_drivers.c + SRC += $(LIB_PATH)/lib8tion/lib8tion.c CIE1931_CURVE := yes ifeq ($(strip $(LED_MATRIX_DRIVER)), IS31FL3731) OPT_DEFS += -DIS31FL3731 -DSTM32_I2C -DHAL_USE_I2C=TRUE - COMMON_VPATH += $(DRIVER_PATH)/issi + COMMON_VPATH += $(DRIVER_PATH)/led/issi SRC += is31fl3731-simple.c QUANTUM_LIB_SRC += i2c_master.c endif endif RGB_MATRIX_ENABLE ?= no -VALID_RGB_MATRIX_TYPES := IS31FL3731 IS31FL3733 IS31FL3737 IS31FL3741 WS2812 custom +VALID_RGB_MATRIX_TYPES := AW20216 IS31FL3731 IS31FL3733 IS31FL3737 IS31FL3741 CKLED2001 WS2812 custom ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes) ifeq ($(filter $(RGB_MATRIX_DRIVER),$(VALID_RGB_MATRIX_TYPES)),) @@ -255,40 +278,58 @@ ifneq (,$(filter $(MCU), atmega16u2 atmega32u2 at90usb162)) # ATmegaxxU2 does not have hardware MUL instruction - lib8tion must be told to use software multiplication routines OPT_DEFS += -DLIB8_ATTINY endif + COMMON_VPATH += $(QUANTUM_DIR)/rgb_matrix + COMMON_VPATH += $(QUANTUM_DIR)/rgb_matrix/animations + COMMON_VPATH += $(QUANTUM_DIR)/rgb_matrix/animations/runners SRC += $(QUANTUM_DIR)/color.c - SRC += $(QUANTUM_DIR)/rgb_matrix.c - SRC += $(QUANTUM_DIR)/rgb_matrix_drivers.c + SRC += $(QUANTUM_DIR)/rgb_matrix/rgb_matrix.c + SRC += $(QUANTUM_DIR)/rgb_matrix/rgb_matrix_drivers.c + SRC += $(LIB_PATH)/lib8tion/lib8tion.c CIE1931_CURVE := yes RGB_KEYCODES_ENABLE := yes + ifeq ($(strip $(RGB_MATRIX_DRIVER)), AW20216) + OPT_DEFS += -DAW20216 -DSTM32_SPI -DHAL_USE_SPI=TRUE + COMMON_VPATH += $(DRIVER_PATH)/led + SRC += aw20216.c + QUANTUM_LIB_SRC += spi_master.c + endif + ifeq ($(strip $(RGB_MATRIX_DRIVER)), IS31FL3731) OPT_DEFS += -DIS31FL3731 -DSTM32_I2C -DHAL_USE_I2C=TRUE - COMMON_VPATH += $(DRIVER_PATH)/issi + COMMON_VPATH += $(DRIVER_PATH)/led/issi SRC += is31fl3731.c QUANTUM_LIB_SRC += i2c_master.c endif ifeq ($(strip $(RGB_MATRIX_DRIVER)), IS31FL3733) OPT_DEFS += -DIS31FL3733 -DSTM32_I2C -DHAL_USE_I2C=TRUE - COMMON_VPATH += $(DRIVER_PATH)/issi + COMMON_VPATH += $(DRIVER_PATH)/led/issi SRC += is31fl3733.c QUANTUM_LIB_SRC += i2c_master.c endif ifeq ($(strip $(RGB_MATRIX_DRIVER)), IS31FL3737) OPT_DEFS += -DIS31FL3737 -DSTM32_I2C -DHAL_USE_I2C=TRUE - COMMON_VPATH += $(DRIVER_PATH)/issi + COMMON_VPATH += $(DRIVER_PATH)/led/issi SRC += is31fl3737.c QUANTUM_LIB_SRC += i2c_master.c endif ifeq ($(strip $(RGB_MATRIX_DRIVER)), IS31FL3741) OPT_DEFS += -DIS31FL3741 -DSTM32_I2C -DHAL_USE_I2C=TRUE - COMMON_VPATH += $(DRIVER_PATH)/issi + COMMON_VPATH += $(DRIVER_PATH)/led/issi SRC += is31fl3741.c QUANTUM_LIB_SRC += i2c_master.c endif + ifeq ($(strip $(RGB_MATRIX_DRIVER)), CKLED2001) + OPT_DEFS += -DCKLED2001 -DSTM32_I2C -DHAL_USE_I2C=TRUE + COMMON_VPATH += $(DRIVER_PATH)/led + SRC += ckled2001.c + QUANTUM_LIB_SRC += i2c_master.c + endif + ifeq ($(strip $(RGB_MATRIX_DRIVER)), WS2812) OPT_DEFS += -DWS2812 WS2812_DRIVER_REQUIRED := yes @@ -318,17 +359,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 @@ -338,13 +368,11 @@ ifneq ($(strip $(VARIABLE_TRACE)),no) endif endif -ifeq ($(strip $(LCD_ENABLE)), yes) - CIE1931_CURVE := yes -endif +ifeq ($(strip $(SLEEP_LED_ENABLE)), yes) + SRC += $(PLATFORM_COMMON_DIR)/sleep_led.c + OPT_DEFS += -DSLEEP_LED_ENABLE -# backward compat -ifeq ($(strip $(BACKLIGHT_CUSTOM_DRIVER)), yes) - BACKLIGHT_DRIVER := custom + NO_SUSPEND_POWER_DOWN := yes endif VALID_BACKLIGHT_TYPES := pwm timer software custom @@ -406,14 +434,10 @@ ifeq ($(strip $(WS2812_DRIVER_REQUIRED)), yes) endif ifeq ($(strip $(APA102_DRIVER_REQUIRED)), yes) - COMMON_VPATH += $(DRIVER_PATH)/apa102 + COMMON_VPATH += $(DRIVER_PATH)/led 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 @@ -429,51 +453,23 @@ 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 - BOOTMAGIC_ENABLE := lite + BOOTMAGIC_ENABLE := yes SRC += $(QUANTUM_DIR)/via.c 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 full lite +VALID_MAGIC_TYPES := yes BOOTMAGIC_ENABLE ?= no ifneq ($(strip $(BOOTMAGIC_ENABLE)), no) ifeq ($(filter $(BOOTMAGIC_ENABLE),$(VALID_MAGIC_TYPES)),) $(error BOOTMAGIC_ENABLE="$(BOOTMAGIC_ENABLE)" is not a valid type of magic) endif - ifneq ($(strip $(BOOTMAGIC_ENABLE)), full) + ifneq ($(strip $(BOOTMAGIC_ENABLE)), no) OPT_DEFS += -DBOOTMAGIC_LITE QUANTUM_SRC += $(QUANTUM_DIR)/bootmagic/bootmagic_lite.c - else - OPT_DEFS += -DBOOTMAGIC_ENABLE - QUANTUM_SRC += $(QUANTUM_DIR)/bootmagic/bootmagic_full.c endif endif COMMON_VPATH += $(QUANTUM_DIR)/bootmagic @@ -494,42 +490,31 @@ ifneq ($(strip $(CUSTOM_MATRIX)), yes) # if 'lite' then skip the actual matrix implementation ifneq ($(strip $(CUSTOM_MATRIX)), lite) # Include the standard or split matrix code if needed - ifeq ($(strip $(SPLIT_KEYBOARD)), yes) - QUANTUM_SRC += $(QUANTUM_DIR)/split_common/matrix.c - else - QUANTUM_SRC += $(QUANTUM_DIR)/matrix.c - endif + QUANTUM_SRC += $(QUANTUM_DIR)/matrix.c endif endif -# Support for translating old names to new names: -ifeq ($(strip $(DEBOUNCE_TYPE)),sym_g) - DEBOUNCE_TYPE:=sym_defer_g -else ifeq ($(strip $(DEBOUNCE_TYPE)),eager_pk) - DEBOUNCE_TYPE:=sym_eager_pk -else ifeq ($(strip $(DEBOUNCE_TYPE)),sym_pk) - DEBOUNCE_TYPE:=sym_defer_pk -else ifeq ($(strip $(DEBOUNCE_TYPE)),eager_pr) - DEBOUNCE_TYPE:=sym_eager_pr -endif - -DEBOUNCE_DIR:= $(QUANTUM_DIR)/debounce # Debounce Modules. Set DEBOUNCE_TYPE=custom if including one manually. -DEBOUNCE_TYPE?= sym_defer_g +DEBOUNCE_TYPE ?= sym_defer_g ifneq ($(strip $(DEBOUNCE_TYPE)), custom) - QUANTUM_SRC += $(DEBOUNCE_DIR)/$(strip $(DEBOUNCE_TYPE)).c + QUANTUM_SRC += $(QUANTUM_DIR)/debounce/$(strip $(DEBOUNCE_TYPE)).c endif ifeq ($(strip $(SPLIT_KEYBOARD)), yes) POST_CONFIG_H += $(QUANTUM_DIR)/split_common/post_config.h OPT_DEFS += -DSPLIT_KEYBOARD + CRC_ENABLE := yes # Include files used by all split keyboards QUANTUM_SRC += $(QUANTUM_DIR)/split_common/split_util.c # Determine which (if any) transport files are required ifneq ($(strip $(SPLIT_TRANSPORT)), custom) - QUANTUM_LIB_SRC += $(QUANTUM_DIR)/split_common/transport.c + QUANTUM_SRC += $(QUANTUM_DIR)/split_common/transport.c \ + $(QUANTUM_DIR)/split_common/transactions.c + + OPT_DEFS += -DSPLIT_COMMON_TRANSACTIONS + # Functions added via QUANTUM_LIB_SRC are only included in the final binary if they're called. # Unused functions are pruned away, which is why we can add multiple drivers here without bloat. ifeq ($(PLATFORM),AVR) @@ -550,37 +535,55 @@ ifeq ($(strip $(SPLIT_KEYBOARD)), yes) COMMON_VPATH += $(QUANTUM_PATH)/split_common endif -HAPTIC_ENABLE ?= no -ifneq ($(strip $(HAPTIC_ENABLE)),no) - COMMON_VPATH += $(DRIVER_PATH)/haptic - SRC += haptic.c - OPT_DEFS += -DHAPTIC_ENABLE +ifeq ($(strip $(CRC_ENABLE)), yes) + OPT_DEFS += -DCRC_ENABLE + SRC += crc.c endif -ifneq ($(filter DRV2605L, $(HAPTIC_ENABLE)), ) - SRC += DRV2605L.c - QUANTUM_LIB_SRC += i2c_master.c - OPT_DEFS += -DDRV2605L -endif +ifeq ($(strip $(HAPTIC_ENABLE)),yes) + COMMON_VPATH += $(DRIVER_PATH)/haptic + + 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) - SRC += drivers/avr/hd44780.c + SRC += platforms/avr/drivers/hd44780.c OPT_DEFS += -DHD44780_ENABLE endif -ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes) - OPT_DEFS += -DOLED_DRIVER_ENABLE - COMMON_VPATH += $(DRIVER_PATH)/oled - QUANTUM_LIB_SRC += i2c_master.c - SRC += oled_driver.c +VALID_OLED_DRIVER_TYPES := SSD1306 custom +OLED_DRIVER ?= SSD1306 +ifeq ($(strip $(OLED_ENABLE)), yes) + ifeq ($(filter $(OLED_DRIVER),$(VALID_OLED_DRIVER_TYPES)),) + $(error OLED_DRIVER="$(OLED_DRIVER)" is not a valid OLED driver) + else + OPT_DEFS += -DOLED_ENABLE + COMMON_VPATH += $(DRIVER_PATH)/oled + + OPT_DEFS += -DOLED_DRIVER_$(strip $(shell echo $(OLED_DRIVER) | tr '[:lower:]' '[:upper:]')) + ifeq ($(strip $(OLED_DRIVER)), SSD1306) + SRC += ssd1306_sh1106.c + QUANTUM_LIB_SRC += i2c_master.c + endif + endif endif -include $(DRIVER_PATH)/qwiic/qwiic.mk +ifeq ($(strip $(ST7565_ENABLE)), yes) + OPT_DEFS += -DST7565_ENABLE + COMMON_VPATH += $(DRIVER_PATH)/oled # For glcdfont.h + COMMON_VPATH += $(DRIVER_PATH)/lcd + QUANTUM_LIB_SRC += spi_master.c + SRC += st7565.c +endif ifeq ($(strip $(UCIS_ENABLE)), yes) OPT_DEFS += -DUCIS_ENABLE @@ -604,71 +607,72 @@ 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 $(TAP_DANCE_ENABLE)), yes) - SRC += $(QUANTUM_DIR)/process_keycode/process_tap_dance.c - OPT_DEFS += -DTAP_DANCE_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 $(KEY_LOCK_ENABLE)), yes) - SRC += $(QUANTUM_DIR)/process_keycode/process_key_lock.c - OPT_DEFS += -DKEY_LOCK_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 $(LEADER_ENABLE)), yes) - SRC += $(QUANTUM_DIR)/process_keycode/process_leader.c - OPT_DEFS += -DLEADER_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 $(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 -ifneq ($(strip $(JOYSTICK_ENABLE)), no) +VALID_JOYSTICK_TYPES := analog digital +JOYSTICK_DRIVER ?= analog +ifeq ($(strip $(JOYSTICK_ENABLE)), yes) + ifeq ($(filter $(JOYSTICK_DRIVER),$(VALID_JOYSTICK_TYPES)),) + $(error "$(JOYSTICK_DRIVER)" is not a valid joystick driver) + endif OPT_DEFS += -DJOYSTICK_ENABLE SRC += $(QUANTUM_DIR)/process_keycode/process_joystick.c SRC += $(QUANTUM_DIR)/joystick.c -endif - -ifeq ($(strip $(JOYSTICK_ENABLE)), analog) - OPT_DEFS += -DANALOG_JOYSTICK_ENABLE - SRC += analog.c -endif -ifeq ($(strip $(JOYSTICK_ENABLE)), digital) - OPT_DEFS += -DDIGITAL_JOYSTICK_ENABLE + ifeq ($(strip $(JOYSTICK_DRIVER)), analog) + OPT_DEFS += -DANALOG_JOYSTICK_ENABLE + SRC += analog.c + endif + ifeq ($(strip $(JOYSTICK_DRIVER)), digital) + OPT_DEFS += -DDIGITAL_JOYSTICK_ENABLE + endif endif USBPD_ENABLE ?= no @@ -694,3 +698,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/mappings/info_config.json b/data/mappings/info_config.json index b949b13320d3..3cb64dd3a2fb 100644 --- a/data/mappings/info_config.json +++ b/data/mappings/info_config.json @@ -1,21 +1,48 @@ -# This file maps keys between `config.h` and `info.json`. It is used by QMK +# This file maps keys between `config.h` and `info.json`. It is used by QMK # to correctly and consistently map back and forth between the two systems. { # Format: # : {"info_key": , ["value_type": ], ["to_json": ], ["to_c": ]} - # value_type: one of "array", "array.int", "int", "hex", "list", "mapping" + # value_type: one of "array", "array.int", "bool", "int", "hex", "list", "mapping" # to_json: Default `true`. Set to `false` to exclude this mapping from info.json # to_c: Default `true`. Set to `false` to exclude this mapping from config.h # warn_duplicate: Default `true`. Set to `false` to turn off warning when a value exists in both places - "DEBOUNCE": {"info_key": "debounce", "value_type": "int"} + "AUDIO_VOICES": {"info_key": "audio.voices", "value_type": "bool"}, + "BACKLIGHT_BREATHING": {"info_key": "backlight.breathing", "value_type": "bool"}, + "BREATHING_PERIOD": {"info_key": "backlight.breathing_period", "value_type": "int"}, + "BACKLIGHT_PIN": {"info_key": "backlight.pin"}, + "COMBO_COUNT": {"info_key": "combo.count", "value_type": "int"}, + "COMBO_TERM": {"info_key": "combo.term", "value_type": "int"}, + "DEBOUNCE": {"info_key": "debounce", "value_type": "int"}, "DEVICE_VER": {"info_key": "usb.device_ver", "value_type": "hex"}, "DESCRIPTION": {"info_key": "keyboard_folder", "to_json": false}, "DIODE_DIRECTION": {"info_key": "diode_direction"}, + "FORCE_NKRO": {"info_key": "usb.force_nkro", "value_type": "bool"}, + "DYNAMIC_KEYMAP_EEPROM_MAX_ADDR": {"info_key": "dynamic_keymap.eeprom_max_addr", "value_type": "int"}, + "DYNAMIC_KEYMAP_LAYER_COUNT": {"info_key": "dynamic_keymap.layer_count", "value_type": "int"}, + "IGNORE_MOD_TAP_INTERRUPT": {"info_key": "tapping.ignore_mod_tap_interrupt", "value_type": "bool"}, + "IGNORE_MOD_TAP_INTERRUPT_PER_KEY": {"info_key": "tapping.ignore_mod_tap_interrupt_per_key", "value_type": "bool"}, "LAYOUTS": {"info_key": "layout_aliases", "value_type": "mapping"}, + "LEADER_PER_KEY_TIMING": {"info_key": "leader_key.timing", "value_type": "bool"}, + "LEADER_KEY_STRICT_KEY_PROCESSING": {"info_key": "leader_key.strict_processing", "value_type": "bool"}, + "LEADER_TIMEOUT": {"info_key": "leader_key.timeout", "value_type": "int"}, "LED_CAPS_LOCK_PIN": {"info_key": "indicators.caps_lock"}, "LED_NUM_LOCK_PIN": {"info_key": "indicators.num_lock"}, "LED_SCROLL_LOCK_PIN": {"info_key": "indicators.scroll_lock"}, "MANUFACTURER": {"info_key": "manufacturer"}, + "MATRIX_HAS_GHOST": {"info_key": "matrix_pins.ghost", "value_type": "bool"}, + "MATRIX_IO_DELAY": {"info_key": "matrix_pins.io_delay", "value_type": "int"}, + "MOUSEKEY_DELAY": {"info_key": "mousekey.delay", "value_type": "int"}, + "MOUSEKEY_INTERVAL": {"info_key": "mousekey.interval", "value_type": "int"}, + "MOUSEKEY_MAX_SPEED": {"info_key": "mousekey.max_speed", "value_type": "int"}, + "MOUSEKEY_TIME_TO_MAX": {"info_key": "mousekey.time_to_max", "value_type": "int"}, + "MOUSEKEY_WHEEL_DELAY": {"info_key": "mousekey.wheel_delay", "value_type": "int"}, + "ONESHOT_TIMEOUT": {"info_key": "oneshot.timeout", "value_type": "int"}, + "ONESHOT_TAP_TOGGLE": {"info_key": "oneshot.tap_toggle", "value_type": "int"}, + "PERMISSIVE_HOLD": {"info_key": "tapping.permissive_hold", "value_type": "bool"}, + "PERMISSIVE_HOLD_PER_KEY": {"info_key": "tapping.permissive_hold_per_key", "value_type": "bool"}, + "RETRO_TAPPING": {"info_key": "tapping.retro", "value_type": "bool"}, + "RETRO_TAPPING_PER_KEY": {"info_key": "tapping.retro_per_key", "value_type": "bool"}, "RGB_DI_PIN": {"info_key": "rgblight.pin"}, "RGBLED_NUM": {"info_key": "rgblight.led_count", "value_type": "int"}, "RGBLED_SPLIT": {"info_key": "rgblight.split_count", "value_type": "array.int"}, @@ -30,17 +57,41 @@ "RGBLIGHT_EFFECT_SNAKE": {"info_key": "rgblight.animations.snake", "value_type": "bool"}, "RGBLIGHT_EFFECT_STATIC_GRADIENT": {"info_key": "rgblight.animations.static_gradient", "value_type": "bool"}, "RGBLIGHT_EFFECT_TWINKLE": {"info_key": "rgblight.animations.twinkle"}, + "RGBLIGHT_LAYER_BLINK": {"info_key": "rgblight.layers.blink", "value_type": "bool"}, + "RGBLIGHT_LAYERS": {"info_key": "rgblight.layers.enabled", "value_type": "bool"}, + "RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF": {"info_key": "rgblight.layers.override_rgb", "value_type": "bool"}, "RGBLIGHT_LIMIT_VAL": {"info_key": "rgblight.max_brightness", "value_type": "int"}, + "RGBLIGHT_MAX_LAYERS": {"info_key": "rgblight.layers.max", "value_type": "int"}, "RGBLIGHT_HUE_STEP": {"info_key": "rgblight.hue_steps", "value_type": "int"}, "RGBLIGHT_SAT_STEP": {"info_key": "rgblight.saturation_steps", "value_type": "int"}, "RGBLIGHT_VAL_STEP": {"info_key": "rgblight.brightness_steps", "value_type": "int"}, "RGBLIGHT_SLEEP": {"info_key": "rgblight.sleep", "value_type": "bool"}, "RGBLIGHT_SPLIT": {"info_key": "rgblight.split", "value_type": "bool"}, - "PRODUCT": {"info_key": "keyboard_folder", "to_json": false}, + "RGBW": {"info_key": "rgblight.rgbw", "value_type": "bool"}, + "PRODUCT": {"info_key": "keyboard_name", "warn_duplicate": false}, "PRODUCT_ID": {"info_key": "usb.pid", "value_type": "hex"}, "VENDOR_ID": {"info_key": "usb.vid", "value_type": "hex"}, "QMK_ESC_OUTPUT": {"info_key": "qmk_lufa_bootloader.esc_output"}, "QMK_ESC_INPUT": {"info_key": "qmk_lufa_bootloader.esc_input"}, + "QMK_KEYS_PER_SCAN": {"info_key": "qmk.keys_per_scan", "value_type": "int"}, "QMK_LED": {"info_key": "qmk_lufa_bootloader.led"}, - "QMK_SPEAKER": {"info_key": "qmk_lufa_bootloader.speaker"} + "QMK_SPEAKER": {"info_key": "qmk_lufa_bootloader.speaker"}, + "SENDSTRING_BELL": {"info_key": "audio.macro_beep", "value_type": "bool"}, + "SPLIT_MODS_ENABLE": {"info_key": "split.transport.sync_modifiers", "value_type": "bool"}, + "SPLIT_TRANSPORT_MIRROR": {"info_key": "split.transport.sync_matrix_state", "value_type": "bool"}, + "SPLIT_USB_DETECT": {"info_key": "split.usb_detect.enabled", "value_type": "bool"}, + "SPLIT_USB_TIMEOUT": {"info_key": "split.usb_detect.timeout", "value_type": "int"}, + "SPLIT_USB_TIMEOUT_POLL": {"info_key": "split.usb_detect.polling_interval", "value_type": "int"}, + "SOFT_SERIAL_PIN": {"info_key": "split.soft_serial_pin"}, + "SOFT_SERIAL_SPEED": {"info_key": "split.soft_serial_speed"}, + "TAP_CODE_DELAY": {"info_key": "qmk.tap_keycode_delay", "value_type": "int"}, + "TAP_HOLD_CAPS_DELAY": {"info_key": "qmk.tap_capslock_delay", "value_type": "int"}, + "TAPPING_FORCE_HOLD": {"info_key": "tapping.force_hold", "value_type": "bool"}, + "TAPPING_FORCE_HOLD_PER_KEY": {"info_key": "tapping.force_hold_per_key", "value_type": "bool"}, + "TAPPING_TERM": {"info_key": "tapping.term", "value_type": "int"}, + "TAPPING_TERM_PER_KEY": {"info_key": "tapping.term_per_key", "value_type": "bool"}, + "TAPPING_TOGGLE": {"info_key": "tapping.toggle", "value_type": "int"}, + "USB_MAX_POWER_CONSUMPTION": {"info_key": "usb.max_power", "value_type": "int"}, + "USB_POLLING_INTERVAL_MS": {"info_key": "usb.polling_interval", "value_type": "int"}, + "USB_SUSPEND_WAKEUP_DELAY": {"info_key": "usb.suspend_wakeup_delay", "value_type": "int"}, } diff --git a/data/mappings/info_rules.json b/data/mappings/info_rules.json index 97f772c4d5b5..aea67e04c846 100644 --- a/data/mappings/info_rules.json +++ b/data/mappings/info_rules.json @@ -1,15 +1,25 @@ -# This file maps keys between `rules.mk` and `info.json`. It is used by QMK +# This file maps keys between `rules.mk` and `info.json`. It is used by QMK # to correctly and consistently map back and forth between the two systems. { # Format: # : {"info_key": , ["value_type": ], ["to_json": ], ["to_c": ]} - # value_type: one of "array", "array.int", "int", "list", "hex", "mapping" + # value_type: one of "array", "array.int", "bool", "int", "list", "hex", "mapping" # to_json: Default `true`. Set to `false` to exclude this mapping from info.json # to_c: Default `true`. Set to `false` to exclude this mapping from rules.mk # warn_duplicate: Default `true`. Set to `false` to turn off warning when a value exists in both places "BOARD": {"info_key": "board"}, "BOOTLOADER": {"info_key": "bootloader", "warn_duplicate": false}, + "BLUETOOTH": {"info_key": "bluetooth.driver"}, + "FIRMWARE_FORMAT": {"info_key": "build.firmware_format"}, + "KEYBOARD_SHARED_EP": {"info_key": "usb.shared_endpoint.keyboard", "value_type": "bool"}, + "MOUSE_SHARED_EP": {"info_key": "usb.shared_endpoint.mouse", "value_type": "bool"}, "LAYOUTS": {"info_key": "community_layouts", "value_type": "list"}, "LED_MATRIX_DRIVER": {"info_key": "led_matrix.driver"}, + "LTO_ENABLE": {"info_key": "build.lto", "value_type": "bool"}, "MCU": {"info_key": "processor", "warn_duplicate": false}, + "MOUSEKEY_ENABLE": {"info_key": "mouse_key.enabled", "value_type": "bool"}, + "NO_USB_STARTUP_CHECK": {"info_key": "usb.no_startup_check", "value_type": "bool"}, + "SPLIT_KEYBOARD": {"info_key": "split.enabled", "value_type": "bool"}, + "SPLIT_TRANSPORT": {"info_key": "split.transport.protocol", "value_type": "str", "to_c": false}, + "WAIT_FOR_USB": {"info_key": "usb.wait_for", "value_type": "bool"} } diff --git a/data/mappings/keyboard_aliases.json b/data/mappings/keyboard_aliases.json index c205b5e13e34..60c91b1bfcac 100644 --- a/data/mappings/keyboard_aliases.json +++ b/data/mappings/keyboard_aliases.json @@ -11,6 +11,9 @@ '2_milk': { target: 'spaceman/2_milk' }, + 'aeboards/constellation': { + target: 'aeboards/constellation/rev1' + }, 'aeboards/ext65': { target: 'aeboards/ext65/rev1' }, @@ -38,9 +41,36 @@ 'atom47/rev3': { target: 'maartenwut/atom47/rev3' }, + bakeneko65: { + target: 'bakeneko65/rev2' + }, bear_face: { target: 'bear_face/v1' }, + bm16a: { + target: 'kprepublic/bm16a' + }, + bm16s: { + target: 'kprepublic/bm16s' + }, + bm40hsrgb: { + target: 'kprepublic/bm40hsrgb' + }, + bm43a: { + target: 'kprepublic/bm43a' + }, + bm60poker: { + target: 'kprepublic/bm60poker' + }, + bm60rgb: { + target: 'kprepublic/bm60rgb' + }, + bm60rgb_iso: { + target: 'kprepublic/bm60rgb_iso' + }, + bm68rgb: { + target: 'kprepublic/bm68rgb' + }, 'bpiphany/pegasushoof': { target: 'bpiphany/pegasushoof/2013' }, @@ -56,15 +86,27 @@ canoe: { target: 'percent/canoe' }, + 'clawsome/gamebuddy': { + target: 'clawsome/gamebuddy/v1_0' + }, 'cmm_studio/saka68': { target: 'cmm_studio/saka68/solder' }, + 'cospad': { + target: 'kprepublic/cospad' + }, 'crkbd/rev1/legacy': { target: 'crkbd/rev1' }, 'crkbd/rev1/common': { target: 'crkbd/rev1' }, + 'custommk/genesis': { + target: 'custommk/genesis/rev1' + }, + 'daisy': { + target: 'ktec/daisy' + }, 'doro67/multi': { layouts: { LAYOUT_ansi: 'LAYOUT_65_ansi_blocker' @@ -83,6 +125,9 @@ drakon: { target: 'jagdpietr/drakon' }, + 'durgod/k320': { + target: 'durgod/k3x0/k320' + }, 'dztech/dz60rgb': { target: 'dztech/dz60rgb/v1' }, @@ -95,9 +140,15 @@ 'dztech/dz65rgb': { target: 'dztech/dz65rgb/v1' }, + 'dztech/volcano660': { + target: 'ilumkb/volcano660' + }, eek: { target: 'eek/silk_down' }, + 'ergodone': { + target: 'ktec/ergodone' + }, ergoinu: { target: 'dm9records/ergoinu' }, @@ -107,9 +158,15 @@ gh60: { target: 'gh60/revc' }, + 'gmmk/pro': { + target: 'gmmk/pro/ansi' + }, 'handwired/ferris': { target: 'ferris/0_1' }, + 'handwired/p1800fl': { + target: 'team0110/p1800fl' + }, 'helix/pico/sc/back': { target: 'helix/pico/sc' }, @@ -158,6 +215,15 @@ LAYOUT: 'LAYOUT_all' } }, + 'jj40': { + target: 'kprepublic/jj40' + }, + 'jj4x4': { + target: 'kprepublic/jj4x4' + }, + 'jj50': { + target: 'kprepublic/jj50' + }, jones: { target: 'jones/v03_1' }, @@ -182,6 +248,12 @@ kudox: { target: 'kudox/rev1' }, + 'kyria': { + target: 'splitkb/kyria' + }, + 'lazydesigners/the60': { + target: 'lazydesigners/the60/rev1' + }, 'lfkeyboards/lfk78': { target: 'lfkeyboards/lfk78/revj' }, @@ -251,6 +323,9 @@ 'maartenwut/wonderland': { target: 'evyd13/wonderland' }, + 'matrix/m12og': { + target: 'matrix/m12og/rev1' + }, 'mechlovin/hannah910': { target: 'mechlovin/hannah910/rev1' }, @@ -266,6 +341,9 @@ 'mechlovin/hannah60rgb': { target: 'mechlovin/hannah60rgb/rev1' }, + 'mechlovin/hannah65/mechlovin9': { + target: 'mechlovin/mechlovin9/rev1' + }, 'melgeek/z70ultra': { target: 'melgeek/z70ultra/rev1' }, @@ -304,6 +382,9 @@ 'pancake/promicro': { target: 'spaceman/pancake/promicro' }, + 'peiorisboards/ixora': { + target: 'coarse/ixora' + }, 'percent/canoe': { layouts: { LAYOUT_iso: 'LAYOUT_65_iso_blocker' @@ -366,6 +447,9 @@ 'ramonimbao/herringbone': { target: 'ramonimbao/herringbone/v1' }, + 'ramonimbao/mona': { + target: 'ramonimbao/mona/v1' + }, 'rgbkb/pan': { target: 'rgbkb/pan/rev1/32a' }, @@ -387,6 +471,9 @@ speedo: { target: 'cozykeys/speedo/v2' }, + 'staryu': { + target: 'ktec/staryu' + }, stoutgat: { target: 'tkw/stoutgat/v1' }, @@ -405,10 +492,14 @@ 'tkw/stoutgat/v2': { target: 'tkw/stoutgat/v2/f411' }, + 'tokyo60': { + target: 'tokyokeyboard/tokyo60' + }, underscore33: { target: 'underscore33/rev1' }, vinta: { + target: 'coarse/vinta', layouts: { LAYOUT_67_ansi: 'LAYOUT_65_ansi_blocker' } @@ -422,6 +513,33 @@ 'whale/sk': { target: 'whale/sk/v3' }, + 'xd002': { + target: 'xiudi/xd002' + }, + 'xd004': { + target: 'xiudi/xd004' + }, + 'xd60': { + target: 'xiudi/xd60' + }, + 'xd68': { + target: 'xiudi/xd68' + }, + 'xd75': { + target: 'xiudi/xd75' + }, + 'xd84': { + target: 'xiudi/xd84' + }, + 'xd84pro': { + target: 'xiudi/xd84pro' + }, + 'xd87': { + target: 'xiudi/xd87' + }, + 'xd96': { + target: 'xiudi/xd96' + }, 'xelus/dawn60': { target: 'xelus/dawn60/rev1' }, diff --git a/data/schemas/api_keyboard.jsonschema b/data/schemas/api_keyboard.jsonschema index d570ee99908d..d638658a1d43 100644 --- a/data/schemas/api_keyboard.jsonschema +++ b/data/schemas/api_keyboard.jsonschema @@ -1,34 +1,22 @@ { + "$id": "qmk.api.keyboard.v1", "allOf": [ - { "$ref": "qmk.keyboard.v1" }, + {"$ref": "qmk.keyboard.v1"}, { - "$id": "qmk.api.keyboard.v1", - "keymaps": { - "type": "string" - }, - "parse_errors": { - "type": "array", - "items": { - "type": "string" - } - }, - "parse_warnings": { - "type": "array", - "items": { - "type": "string" - } - }, - "processor_type": { - "type": "string" - }, - "protocol": { - "type": "string" - }, - "keyboard_folder": { - "type": "string" - }, - "platform": { - "type": "string" + "properties": { + "keymaps": { + "type": "object", + "properties": { + "url": {"type": "string"} + } + + }, + "parse_errors": {"$ref": "qmk.definitions.v1#/string_array"}, + "parse_warnings": {"$ref": "qmk.definitions.v1#/string_array"}, + "processor_type": {"type": "string"}, + "protocol": {"type": "string"}, + "keyboard_folder": {"type": "string"}, + "platform": {"type": "string"} } } ] diff --git a/data/schemas/definitions.jsonschema b/data/schemas/definitions.jsonschema new file mode 100644 index 000000000000..822f237073c3 --- /dev/null +++ b/data/schemas/definitions.jsonschema @@ -0,0 +1,107 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "qmk.definitions.v1", + "title": "Common definitions used across QMK's jsonschemas.", + "type": "object", + "boolean_array": { + "type": "object", + "additionalProperties": {"type": "boolean"} + }, + "filename": { + "type": "string", + "minLength": 1, + "pattern": "^[0-9a-z_]*$" + }, + "hex_number_2d": { + "type": "string", + "pattern": "^0x[0-9A-F]{2}$" + }, + "hex_number_4d": { + "type": "string", + "pattern": "^0x[0-9A-F]{4}$" + }, + "text_identifier": { + "type": "string", + "minLength": 1, + "maxLength": 250 + }, + "layout_macro": { + "oneOf": [ + { + "type": "string", + "enum": ["LAYOUT", "LAYOUT_planck_1x2uC"] + }, + { + "type": "string", + "pattern": "^LAYOUT_[0-9a-z_]*$" + } + ] + }, + "key_unit": { + "type": "number", + "min": 0.25 + }, + "mcu_pin_array": { + "type": "array", + "items": {"$ref": "#/mcu_pin"} + }, + "mcu_pin": { + "oneOf": [ + { + "type": "string", + "pattern": "^[A-K]\\d{1,2}$" + }, + { + "type": "string", + "pattern": "^LINE_PIN\\d{1,2}$" + }, + { + "type": "number", + "multipleOf": 1 + }, + { + "type": "null" + } + ] + }, + "signed_decimal": { + "type": "number" + }, + "signed_int": { + "type": "number", + "multipleOf": 1 + } + "signed_int_8": { + "type": "number", + "min": -127, + "max": 127, + "multipleOf": 1 + } + "string_array": { + "type": "array", + "items": { + "type": "string" + } + }, + "string_object": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "unsigned_decimal": { + "type": "number", + "min": 0 + }, + "unsigned_int": { + "type": "number", + "min": 0, + "multipleOf": 1 + } + "unsigned_int_8": { + "type": "number", + "min": 0, + "max": 255, + "multipleOf": 1 + } +} diff --git a/data/schemas/keyboard.jsonschema b/data/schemas/keyboard.jsonschema index c335f49d52fd..308f9b782bef 100644 --- a/data/schemas/keyboard.jsonschema +++ b/data/schemas/keyboard.jsonschema @@ -1,31 +1,54 @@ { - "$schema": "http://json-schema.org/schema#", + "$schema": "http://json-schema.org/draft-07/schema#", "$id": "qmk.keyboard.v1", "title": "Keyboard Information", "type": "object", "properties": { - "keyboard_name": { - "type": "string", - "minLength": 2, - "maxLength": 250 - }, - "maintainer": { - "type": "string", - "minLength": 2, - "maxLength": 250 - }, - "manufacturer": { - "type": "string", - "minLength": 2, - "maxLength": 250 - }, + "keyboard_name": {"$ref": "qmk.definitions.v1#/text_identifier"}, + "maintainer": {"$ref": "qmk.definitions.v1#/text_identifier"}, + "manufacturer": {"$ref": "qmk.definitions.v1#/text_identifier"}, "url": { "type": "string", "format": "uri" }, "processor": { "type": "string", - "enum": ["cortex-m0", "cortex-m0plus", "cortex-m3", "cortex-m4", "MKL26Z64", "MK20DX128", "MK20DX256", "MK66F18", "STM32F042", "STM32F072", "STM32F103", "STM32F303", "STM32F401", "STM32F411", "STM32F446", "STM32G431", "STM32G474", "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", "WB32F3G71", "atmega16u2", "atmega32u2", "atmega16u4", "atmega32u4", "at90usb162", "at90usb646", "at90usb647", "at90usb1286", "at90usb1287", "atmega32a", "atmega328p", "atmega328", "attiny85", "unknown"] + }, + "audio": { + "type": "object", + "additionalProperties": false, + "properties": { + "macro_beep": {"type": "boolean"}, + "pins": {"$ref": "qmk.definitions.v1#/mcu_pin_array"}, + "voices": {"type": "boolean"} + } + }, + "backlight": { + "type": "object", + "additionalProperties": false, + "properties": { + "breathing": {"type": "boolean"}, + "breathing_period": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}, + "levels": { + "type": "number", + "min": 1, + "max": 31, + "multipleOf": 1 + }, + "pin": {"$ref": "qmk.definitions.v1#/mcu_pin"} + } + }, + "bluetooth": { + "type": "object", + "additionalProperties": false, + "properties": { + "driver": { + "type": "string", + "enum": ["AdafruitBLE", "RN42"] + }, + "lto": {"type": "boolean"}, + } }, "board": { "type": "string", @@ -34,68 +57,55 @@ }, "bootloader": { "type": "string", - "enum": ["atmel-dfu", "bootloadHID", "caterina", "halfkay", "kiibohd", "lufa-dfu", "lufa-ms", "micronucleus", "qmk-dfu", "stm32-dfu", "stm32duino", "unknown", "USBasp", "tinyuf2"] + "enum": ["atmel-dfu", "bootloadhid", "bootloadHID", "caterina", "halfkay", "kiibohd", "lufa-dfu", "lufa-ms", "micronucleus", "qmk-dfu", "qmk-hid", "stm32-dfu", "stm32duino", "gd32v-dfu", "wb32-dfu", "unknown", "usbasploader", "USBasp", "tinyuf2"], }, - "diode_direction": { + "bootloader_instructions": { "type": "string", - "enum": ["COL2ROW", "ROW2COL"] + "description": "Instructions for putting the keyboard into a mode that allows for firmware flashing." }, - "debounce": { - "type": "number", - "min": 0, - "multipleOf": 1 + "build": { + "type": "object", + "additionalProperties": false, + "properties": { + "debounce_type": { + "type": "string", + "enum": ["custom", "eager_pk", "eager_pr", "sym_defer_pk", "sym_eager_pk"] + }, + "firmware_format": { + "type": "string", + "enum": ["bin", "hex", "uf2"] + }, + "lto": {"type": "boolean"}, + } }, - "height": { - "type": "number", - "min": 0.25 + "diode_direction": { + "type": "string", + "enum": ["COL2ROW", "ROW2COL"] }, - "width": { - "type": "number", - "min": 0.25 + "debounce": {"$ref": "qmk.definitions.v1#/unsigned_int"}, + "combo": { + "type": "object", + "properties": { + "count": {"$ref": "qmk.definitions.v1#/unsigned_int"}, + "term": {"$ref": "qmk.definitions.v1#/unsigned_int"} + } }, "community_layouts": { "type": "array", - "items": { - "type": "string", - "minLength": 2, - "pattern": "^[0-9a-z_]*$" - } - }, - "features": { - "type": "object", - "additionalProperties": {"type": "boolean"} + "items": {"$ref": "qmk.definitions.v1#/filename"} }, + "features": {"$ref": "qmk.definitions.v1#/boolean_array"}, "indicators": { "type": "object", "properties": { - "caps_lock": { - "type": "string", - "pattern": "^[A-K]\\d{1,2}$" - }, - "num_lock": { - "type": "string", - "pattern": "^[A-K]\\d{1,2}$" - }, - "scroll_lock": { - "type": "string", - "pattern": "^[A-K]\\d{1,2}$" - } + "caps_lock": {"$ref": "qmk.definitions.v1#/mcu_pin"}, + "num_lock": {"$ref": "qmk.definitions.v1#/mcu_pin"}, + "scroll_lock": {"$ref": "qmk.definitions.v1#/mcu_pin"} } }, "layout_aliases": { "type": "object", - "additionalProperties": { - "oneOf": [ - { - "type": "string", - "enum": ["LAYOUT", "LAYOUT_planck_1x2uC"] - }, - { - "type": "string", - "pattern": "^LAYOUT_[0-9a-z_]*$" - } - ] - } + "additionalProperties": {"$ref": "qmk.definitions.v1#/layout_macro"} }, "layouts": { "type": "object", @@ -109,11 +119,6 @@ "c_macro": { "type": "boolean" }, - "key_count": { - "type": "number", - "min": 0, - "multipleOf": 1 - }, "layout": { "type": "array", "items": { @@ -131,101 +136,60 @@ "multipleOf": 1 } }, - "h": { - "type": "number", - "min": 0.25 - }, - "r": { - "type": "number", - "min": 0 - }, - "rx": { - "type": "number", - "min": 0 - }, - "ry": { - "type": "number", - "min": 0 - }, - "w": { - "type": "number", - "min": 0.25 - }, - "x": { - "type": "number", - "min": 0 - }, - "y": { - "type": "number", - "min": 0 - } + "r": {"$ref": "qmk.definitions.v1#/unsigned_decimal"}, + "rx": {"$ref": "qmk.definitions.v1#/unsigned_decimal"}, + "ry": {"$ref": "qmk.definitions.v1#/unsigned_decimal"}, + "h": {"$ref": "qmk.definitions.v1#/key_unit"}, + "w": {"$ref": "qmk.definitions.v1#/key_unit"}, + "x": {"$ref": "qmk.definitions.v1#/key_unit"}, + "y": {"$ref": "qmk.definitions.v1#/key_unit"} } } } } } }, + "leader_key": { + "type": "object", + "properties": { + "timing": {"type": "boolean"}, + "strict_processing": {"type": "boolean"}, + "timeout": {"$ref": "qmk.definitions.v1#/unsigned_int"} + } + }, "matrix_pins": { "type": "object", "additionalProperties": false, "properties": { + "custom": {"type": "boolean"}, + "custom_lite": {"type": "boolean"}, + "ghost": {"type": "boolean"}, + "io_delay": {"$ref": "qmk.definitions.v1#/unsigned_int"}, "direct": { "type": "array", - "items": { - "type": "array", - "items": { - "oneOf": [ - { - "type": "string", - "pattern": "^[A-K]\\d{1,2}$" - }, - { - "type": "number", - "multipleOf": 1 - }, - { - "type": "null" - } - ] - } - } - }, - "cols": { - "type": "array", - "items": { - "oneOf": [ - { - "type": "string", - "pattern": "^[A-K]\\d{1,2}$" - }, - { - "type": "number", - "multipleOf": 1 - }, - { - "type": "null" - } - ] - } + "items": {"$ref": "qmk.definitions.v1#/mcu_pin_array"} }, - "rows": { - "type": "array", - "items": { - "oneOf": [ - { - "type": "string", - "pattern": "^[A-K]\\d{1,2}$" - }, - { - "type": "number", - "multipleOf": 1 - }, - { - "type": "null" - } - ] - } - } + "cols": {"$ref": "qmk.definitions.v1#/mcu_pin_array"}, + "rows": {"$ref": "qmk.definitions.v1#/mcu_pin_array"}, + "unused": {"$ref": "qmk.definitions.v1#/mcu_pin_array"} + } + }, + "mouse_key": { + "type": "object", + "properties": { + "enabled": {"type": "boolean"}, + "delay": {"$ref": "qmk.definitions.v1#/unsigned_int_8"} + "interval": {"$ref": "qmk.definitions.v1#/unsigned_int_8"} + "max_speed": {"$ref": "qmk.definitions.v1#/unsigned_int_8"} + "time_to_max": {"$ref": "qmk.definitions.v1#/unsigned_int_8"} + "wheel_delay": {"$ref": "qmk.definitions.v1#/unsigned_int_8"} + } + }, + "oneshot": { + "type": "object", + "properties": { + "tap_toggle": {"$ref": "qmk.definitions.v1#/unsigned_int"}, + "timeout": {"$ref": "qmk.definitions.v1#/unsigned_int"} } }, "rgblight": { @@ -238,88 +202,160 @@ "type": "boolean" } }, - "brightness_steps": { - "type": "number", - "min": 0, - "multipleOf": 1 - }, - "hue_steps": { - "type": "number", - "min": 0, - "multipleOf": 1 + "brightness_steps": {"$ref": "qmk.definitions.v1#/unsigned_int"}, + "hue_steps": {"$ref": "qmk.definitions.v1#/unsigned_int"}, + "layers": { + "type": "object", + "additionalProperties": false, + "properties": { + "blink": {"type": "boolean"}, + "enabled": {"type": "boolean"}, + "max": { + "type": "number", + "min": 1, + "max": 32, + "multipleOf": 1 + }, + "override_rgb": {"type": "boolean"} + } }, - "led_count": { - "type": "number", - "min": 0, - "multipleOf": 1 + "led_count": {"$ref": "qmk.definitions.v1#/unsigned_int"}, + "max_brightness": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}, + "pin": {"$ref": "qmk.definitions.v1#/mcu_pin"}, + "rgbw": {"type": "boolean"}, + "saturation_steps": {"$ref": "qmk.definitions.v1#/unsigned_int"}, + "sleep": {"type": "boolean"}, + "split": {"type": "boolean"}, + "split_count": { + "type": "array", + "minLength": 2, + "maxLength": 2, + "items": {"$ref": "qmk.definitions.v1#/unsigned_int"} + } + } + }, + "split": { + "type": "object", + "additionalProperties": false, + "properties": { + "enabled": {"type": "boolean"}, + "matrix_grid": { + "type": "array", + "items": {"$ref": "qmk.definitions.v1#/mcu_pin"} }, - "max_brightness": { - "type": "number", - "min": 0, - "max": 255, - "multipleOf": 1 + "matrix_pins": { + "type": "object", + "additionalProperties": false, + "properties": { + "right": { + "type": "object", + "additionalProperties": false, + "properties": { + "direct": { + "type": "array", + "items": {"$ref": "qmk.definitions.v1#/mcu_pin_array"} + }, + "cols": {"$ref": "qmk.definitions.v1#/mcu_pin_array"}, + "rows": {"$ref": "qmk.definitions.v1#/mcu_pin_array"}, + "unused": {"$ref": "qmk.definitions.v1#/mcu_pin_array"} + } + } + } }, - "pin": { + "main": { "type": "string", - "pattern": "^[A-K]\\d{1,2}$" + "enum": ["eeprom", "left", "matrix_grid", "pin", "right"] }, - "saturation_steps": { + "soft_serial_pin": {"$ref": "qmk.definitions.v1#/mcu_pin"}, + "soft_serial_speed": { "type": "number", "min": 0, + "max": 5, "multipleOf": 1 }, - "sleep": {"type": "boolean"}, - "split": {"type": "boolean"}, - "split_count": { - "type": "array", - "minLength": 2, - "maxLength": 2, - "items": { - "type": "number", - "min": 0, - "multipleOf": 1 + "transport": { + "type": "object", + "additionalProperties": false, + "properties": { + "protocol": { + "type": "string", + "enum": ["custom", "i2c", "serial", "serial_usart"] + }, + "sync_matrix_state": {"type": "boolean"}, + "sync_modifiers": {"type": "boolean"} + } + }, + "usb_detect": { + "type": "object", + "additionalProperties": false, + "properties": { + "enabled": {"type": "boolean"}, + "polling_interval": {"$ref": "qmk.definitions.v1#/unsigned_int"}, + "timeout": {"$ref": "qmk.definitions.v1#/unsigned_int"} } } } }, + "tags": { + "type": "array", + "items": {"type": "string"} + }, + "tapping": { + "type": "object", + "properties": { + "force_hold": {"type": "boolean"}, + "force_hold_per_key": {"type": "boolean"}, + "ignore_mod_tap_interrupt": {"type": "boolean"}, + "ignore_mod_tap_interrupt_per_key": {"type": "boolean"}, + "permissive_hold": {"type": "boolean"}, + "permissive_hold_per_key": {"type": "boolean"}, + "retro": {"type": "boolean"}, + "retro_per_key": {"type": "boolean"}, + "term": {"$ref": "qmk.definitions.v1#/unsigned_int"}, + "term_per_key": {"type": "boolean"}, + "toggle": {"$ref": "qmk.definitions.v1#/unsigned_int"}, + } + }, "usb": { "type": "object", "additionalProperties": false, "properties": { - "device_ver": { - "type": "string", - "pattern": "^[0-9A-F]x[0-9A-F][0-9A-F][0-9A-F][0-9A-F]" - }, - "pid": { - "type": "string", - "pattern": "^[0-9A-F]x[0-9A-F][0-9A-F][0-9A-F][0-9A-F]" + "device_ver": {"$ref": "qmk.definitions.v1#/hex_number_4d"}, + "force_nkro": {"type": "boolean"}, + "pid": {"$ref": "qmk.definitions.v1#/hex_number_4d"}, + "vid": {"$ref": "qmk.definitions.v1#/hex_number_4d"}, + "max_power": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}, + "no_startup_check": {"type": "boolean"}, + "polling_interval": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}, + "shared_endpoint": { + "type": "object", + "additionalProperties": false, + "properties": { + "keyboard": {"type": "boolean"}, + "mouse": {"type": "boolean"} + } }, - "vid": { - "type": "string", - "pattern": "^[0-9A-F]x[0-9A-F][0-9A-F][0-9A-F][0-9A-F]" - } + "suspend_wakeup_delay": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}, + "wait_for": {"type": "boolean"}, + } + }, + "qmk": { + "type": "object", + "additionalProperties": false, + "properties": { + "keys_per_scan": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}, + "tap_keycode_delay": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}, + "tap_capslock_delay": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}, } }, "qmk_lufa_bootloader": { "type": "object", "additionalProperties": false, "properties": { - "esc_output": { - "type": "string", - "pattern": "^[A-K]\\d{1,2}$" - }, - "esc_input": { - "type": "string", - "pattern": "^[A-K]\\d{1,2}$" - }, - "led": { - "type": "string", - "pattern": "^[A-K]\\d{1,2}$" - }, - "speaker": { - "type": "string", - "pattern": "^[A-K]\\d{1,2}$" - } + "esc_output": {"$ref": "qmk.definitions.v1#/mcu_pin"}, + "esc_input": {"$ref": "qmk.definitions.v1#/mcu_pin"}, + "led": {"$ref": "qmk.definitions.v1#/mcu_pin"}, + "speaker": {"$ref": "qmk.definitions.v1#/mcu_pin"} } } } diff --git a/data/schemas/keymap.jsonschema b/data/schemas/keymap.jsonschema new file mode 100644 index 000000000000..faa250a9429c --- /dev/null +++ b/data/schemas/keymap.jsonschema @@ -0,0 +1,57 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "qmk.keymap.v1", + "title": "Keymap Information", + "type": "object", + "properties": { + "author": {"type": "string"}, + "host_language": {"$ref": "qmk.definitions.v1#/text_identifier"}, + "keyboard": {"$ref": "qmk.definitions.v1#/text_identifier"}, + "keymap": {"$ref": "qmk.definitions.v1#/text_identifier"}, + "layout": {"$ref": "qmk.definitions.v1#/layout_macro"}, + "layers": { + "type": "array", + "items": { + "type": "array", + "items": {"type": "string"} + } + }, + "macros": { + "type": "array", + "items": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "action": { + "type": "string", + "enum": ['beep', 'delay', 'down', 'tap', 'up'] + }, + "keycodes": { + "type": "array", + "items": { + "$ref": "qmk.definitions.v1#/text_identifier" + } + }, + "duration": { + "$ref": "qmk.definitions.v1#/unsigned_int" + } + } + } + ] + } + } + }, + "config": {"$ref": "qmk.keyboard.v1"}, + "notes": { + "type": "string", + "description": "asdf" + } + } +} diff --git a/data/templates/avr/config.h b/data/templates/avr/config.h new file mode 100644 index 000000000000..7c15e8e70464 --- /dev/null +++ b/data/templates/avr/config.h @@ -0,0 +1,138 @@ +// Copyright %(YEAR)s %(YOUR_NAME)s (@%(USER_NAME)s) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x0000 +#define DEVICE_VER 0x0001 +#define MANUFACTURER %(USER_NAME)s +#define PRODUCT %(KEYBOARD)s + +/* key matrix size */ +#define MATRIX_ROWS 2 +#define MATRIX_COLS 3 + +/* + * 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 { D0, D5 } +#define MATRIX_COL_PINS { F1, F0, B0 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +//#define LED_NUM_LOCK_PIN B0 +//#define LED_CAPS_LOCK_PIN B1 +//#define LED_SCROLL_LOCK_PIN B2 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +//#define RGB_DI_PIN E2 +//#ifdef RGB_DI_PIN +//# define RGBLED_NUM 16 +//# define RGBLIGHT_HUE_STEP 8 +//# define RGBLIGHT_SAT_STEP 8 +//# define RGBLIGHT_VAL_STEP 8 +//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +//# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +//#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/data/templates/avr/readme.md b/data/templates/avr/readme.md new file mode 100644 index 000000000000..207850e06565 --- /dev/null +++ b/data/templates/avr/readme.md @@ -0,0 +1,27 @@ +# %(KEYBOARD)s + +![%(KEYBOARD)s](imgur.com image replace me!) + +*A short description of the keyboard/project* + +* Keyboard Maintainer: [%(YOUR_NAME)s](https://github.com/%(USER_NAME)s) +* Hardware Supported: *The PCBs, controllers supported* +* Hardware Availability: *Links to where you can find this hardware* + +Make example for this keyboard (after setting up your build environment): + + make %(KEYBOARD)s:default + +Flashing example for this keyboard: + + make %(KEYBOARD)s:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `RESET` if it is available diff --git a/data/templates/avr/rules.mk b/data/templates/avr/rules.mk new file mode 100644 index 000000000000..d2109f62500b --- /dev/null +++ b/data/templates/avr/rules.mk @@ -0,0 +1,19 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/data/templates/base/%(KEYBOARD)s.c b/data/templates/base/%(KEYBOARD)s.c new file mode 100644 index 000000000000..0c509aff6589 --- /dev/null +++ b/data/templates/base/%(KEYBOARD)s.c @@ -0,0 +1,4 @@ +// Copyright %(YEAR)s %(YOUR_NAME)s (@%(USER_NAME)s) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "%(KEYBOARD)s.h" diff --git a/data/templates/base/%(KEYBOARD)s.h b/data/templates/base/%(KEYBOARD)s.h new file mode 100644 index 000000000000..3e8ca3912dc8 --- /dev/null +++ b/data/templates/base/%(KEYBOARD)s.h @@ -0,0 +1,22 @@ +// Copyright %(YEAR)s %(YOUR_NAME)s (@%(USER_NAME)s) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + k00, k01, k02, \ + k10, k12 \ +) { \ + { k00, k01, k02 }, \ + { k10, KC_NO, k12 } \ +} diff --git a/data/templates/base/info.json b/data/templates/base/info.json new file mode 100644 index 000000000000..a50ccba7bf9b --- /dev/null +++ b/data/templates/base/info.json @@ -0,0 +1,17 @@ +{ + "keyboard_name": "%(KEYBOARD)s", + "url": "", + "maintainer": "%(USER_NAME)s", + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "k00", "x": 0, "y": 0}, + {"label": "k01", "x": 1, "y": 0}, + {"label": "k02", "x": 2, "y": 0}, + + {"label": "k10", "x": 0, "y": 1, "w": 1.5}, + {"label": "k12", "x": 1.5, "y": 1, "w": 1.5} + ] + } + } +} diff --git a/data/templates/base/keymaps/default/keymap.c b/data/templates/base/keymaps/default/keymap.c new file mode 100644 index 000000000000..3fec3d51203f --- /dev/null +++ b/data/templates/base/keymaps/default/keymap.c @@ -0,0 +1,22 @@ +// Copyright %(YEAR)s %(YOUR_NAME)s (@%(USER_NAME)s) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT( + KC_A, KC_1, MO(_FN), + KC_TAB, KC_SPC + ), + [_FN] = LAYOUT( + _______, _______, _______, + RESET, XXXXXXX + ) +}; diff --git a/data/templates/base/keymaps/default/readme.md b/data/templates/base/keymaps/default/readme.md new file mode 100644 index 000000000000..63a064327571 --- /dev/null +++ b/data/templates/base/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for %(KEYBOARD)s diff --git a/data/templates/ps2avrgb/config.h b/data/templates/ps2avrgb/config.h new file mode 100644 index 000000000000..876a60252f02 --- /dev/null +++ b/data/templates/ps2avrgb/config.h @@ -0,0 +1,128 @@ +// Copyright %(YEAR)s %(YOUR_NAME)s (@%(USER_NAME)s) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x0000 +#define DEVICE_VER 0x0001 +#define MANUFACTURER %(USER_NAME)s +#define PRODUCT %(KEYBOARD)s + +/* key matrix size */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 15 + +/* + * 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, B5, B6, B7 } +#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2, D7 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +//#define LED_NUM_LOCK_PIN D0 +//#define LED_CAPS_LOCK_PIN D1 +//#define LED_SCROLL_LOCK_PIN D6 + +#define BACKLIGHT_PIN D4 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +#define RGBLED_NUM 16 +//#define RGBLIGHT_HUE_STEP 8 +//#define RGBLIGHT_SAT_STEP 8 +//#define RGBLIGHT_VAL_STEP 8 +//#define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +//#define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//#define RGBLIGHT_EFFECT_BREATHING +//#define RGBLIGHT_EFFECT_RAINBOW_MOOD +//#define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//#define RGBLIGHT_EFFECT_SNAKE +//#define RGBLIGHT_EFFECT_KNIGHT +//#define RGBLIGHT_EFFECT_CHRISTMAS +//#define RGBLIGHT_EFFECT_STATIC_GRADIENT +//#define RGBLIGHT_EFFECT_RGB_TEST +//#define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//#define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//#define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//#define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/data/templates/ps2avrgb/readme.md b/data/templates/ps2avrgb/readme.md new file mode 100644 index 000000000000..a2ac4495b689 --- /dev/null +++ b/data/templates/ps2avrgb/readme.md @@ -0,0 +1,28 @@ +# %(KEYBOARD)s + +![%(KEYBOARD)s](imgur.com image replace me!) + +*A short description of the keyboard/project* + +* Keyboard Maintainer: [%(YOUR_NAME)s](https://github.com/yourusername) +* Hardware Supported: *The PCBs, controllers supported* +* Hardware Availability: *Links to where you can find this hardware* + +Make example for this keyboard (after setting up your build environment): + + make %(KEYBOARD)s:default + +Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid)) + + make %(KEYBOARD)s:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **BootloadHID reset**: Hold down the key connected to the `A0` and `B0` pins on the MCU if it is known (often top left or bottom left) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `RESET` if it is available diff --git a/data/templates/ps2avrgb/rules.mk b/data/templates/ps2avrgb/rules.mk new file mode 100644 index 000000000000..1bbfa8fa0ec2 --- /dev/null +++ b/data/templates/ps2avrgb/rules.mk @@ -0,0 +1,17 @@ +# MCU name +MCU = atmega32a + +# Bootloader selection +BOOTLOADER = bootloadhid + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +WS2812_DRIVER = i2c diff --git a/docs/ChangeLog/20210529.md b/docs/ChangeLog/20210529.md index d005aeed3668..2feeed64376c 100644 --- a/docs/ChangeLog/20210529.md +++ b/docs/ChangeLog/20210529.md @@ -82,6 +82,22 @@ Example code before change: void encoder_update_kb(uint8_t index, bool clockwise) { encoder_update_user(index, clockwise); } + +void 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_DOWN); + } else { + tap_code(KC_UP); + } + } +} ``` Example code after change: @@ -90,6 +106,25 @@ Example code after change: bool encoder_update_kb(uint8_t index, bool clockwise) { return encoder_update_user(index, clockwise); } + +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_DOWN); + } else { + tap_code(KC_UP); + } + } + return true; + // If you return true, this will allow the keyboard level code to run, as well. + //Returning false will override the keyboard level code. Depending on how the keyboard level function is set up. +} ``` ## Core Changes :id=core-changes diff --git a/docs/ChangeLog/20210828.md b/docs/ChangeLog/20210828.md new file mode 100644 index 000000000000..f96283e6ad48 --- /dev/null +++ b/docs/ChangeLog/20210828.md @@ -0,0 +1,557 @@ +# QMK Breaking Changes - 2021 August 28 Changelog + +## Notable Features :id=notable-features + +### Combo processing improvements ([#8591](https://github.com/qmk/qmk_firmware/pull/8591)) :id=combo-processing-improvements + +Combo processing has been reordered with respect to keypress handling, allowing for much better compatibility with mod taps. + +It is also now possible to define combos that have keys overlapping with other combos, triggering only one. For example, a combo of `A`, `B` can coexist with a longer combo of `A`, `B`, `C` -- previous functionality would trigger both combos if all three keys were pressed. + +### Key Overrides ([#11422](https://github.com/qmk/qmk_firmware/pull/11422)) :id=key-overrides + +QMK now has a new feature: [key overrides](https://docs.qmk.fm/#/feature_key_overrides). This feature allows for overriding the output of key combinations involving modifiers. As an example, pressing Shift+2 normally results in an @ on US-ANSI keyboard layouts -- the new key overrides allow for adding similar functionality, but for any modifier + key press. + +To illustrate, it's now possible to use the key overrides feature to translate Shift + Backspace into Delete -- an often-requested example of where this functionality comes in handy. + +There's far more to describe that what lives in this changelog, so head over to the [key overrides documentation](https://docs.qmk.fm/#/feature_key_overrides) for more examples and info. + +### Digitizer support ([#12851](https://github.com/qmk/qmk_firmware/pull/12851)) + +QMK gained the ability to pretend to be a digitizer device -- much like a tablet device. A mouse uses delta-coordinates -- move up, move right -- but a digitizer works with absolute coordinates -- top left, bottom right. + +## Changes Requiring User Action :id=changes-requiring-user-action + +### Updated Keyboard Codebases :id=updated-keyboard-codebases + +The following keyboards have had their source moved within QMK: + +Old Keyboard Name | New Keyboard Name +------------------------------|--------------------------------------------------------- +aeboards/constellation | aeboards/constellation/rev1, aeboards/constellation/rev2 +bakeneko65 | bakeneko65/rev2, bakeneko65/rev3 +bm16a | kprepublic/bm16a +bm16s | kprepublic/bm16s +bm40hsrgb | kprepublic/bm40hsrgb +bm43a | kprepublic/bm43a +bm60poker | kprepublic/bm60poker +bm60rgb | kprepublic/bm60rgb +bm60rgb_iso | kprepublic/bm60rgb_iso +bm68rgb | kprepublic/bm68rgb +clawsome/gamebuddy | clawsome/gamebuddy/v1_0, clawsome/gamebuddy/v1_m +cospad | kprepublic/cospad +custommk/genesis | custommk/genesis/rev1, custommk/genesis/rev2 +daisy | ktec/daisy +durgod/k320 | durgod/k3x0/k320 +dztech/volcano660 | ilumkb/volcano660 +ergodone | ktec/ergodone +gmmk/pro | gmmk/pro/ansi, gmmk/pro/iso +handwired/p1800fl | team0110/p1800fl +jj40 | kprepublic/jj40 +jj4x4 | kprepublic/jj4x4 +jj50 | kprepublic/jj50 +kyria | splitkb/kyria +lazydesigners/the60 | lazydesigners/the60/rev1, lazydesigners/the60/rev2 +matrix/m12og | matrix/m12og/rev1, matrix/m12og/rev2 +mechlovin/hannah65/mechlovin9 | mechlovin/mechlovin9/rev1, mechlovin/mechlovin9/rev2 +peiorisboards/ixora | coarse/ixora +ramonimbao/mona | ramonimbao/mona/v1, ramonimbao/mona/v1_1 +staryu | ktec/staryu +tokyo60 | tokyokeyboard/tokyo60 +vinta | coarse/vinta +xd002 | xiudi/xd002 +xd004 | xiudi/xd004 +xd60 | xiudi/xd60 +xd68 | xiudi/xd68 +xd75 | xiudi/xd75 +xd84 | xiudi/xd84 +xd84pro | xiudi/xd84pro +xd87 | xiudi/xd87 +xd96 | xiudi/xd96 + +### Bootmagic Full Removal ([#13846](https://github.com/qmk/qmk_firmware/pull/13846)) :id=bootmagic-full-removal + +As noted during last breaking changes cycle, QMK has decided to deprecate the full Bootmagic feature and leave Bootmagic Lite as the only remaining option. + +This pull request changes the behavior of `BOOTMAGIC_ENABLE` such that specifying `full` results in an error, allowing only `no`, `yes`, or `lite`. + +Currently `lite` is the equivalent of `yes` in `rules.mk`. Next cycle the use of the `lite` keyword will be prevented in favour of `yes` -- any new submissions should now be using `yes` or `no` to minimise disruption. + +#### Bootmagic Full Deprecation Schedule + +This is the current roadmap for the behavior of `BOOTMAGIC_ENABLE`: + +- (done) From 2021 May 29, setting `BOOTMAGIC_ENABLE = yes` will enable Bootmagic Lite instead of full Bootmagic. +- (now) From 2021 Aug 28, `BOOTMAGIC_ENABLE` must be either `yes`, `lite`, or `no` – setting `BOOTMAGIC_ENABLE = full` will cause compilation to fail. +- (next) From 2021 Nov 27, `BOOTMAGIC_ENABLE` must be either `yes` or `no` – setting `BOOTMAGIC_ENABLE = lite` will cause compilation to fail. + +### DIP switch callbacks are now boolean ([#13399](https://github.com/qmk/qmk_firmware/pull/13399)) :id=dip-switch-boolean + +To match the encoder change last breaking changes cycle, DIP switch callbacks now return `bool`, too. + +Example code before change: + +```c +void dip_switch_update_kb(uint8_t index, bool active) { + dip_switch_update_user(index, active); +} + +void dip_switch_update_user(uint8_t index, bool active) { + switch (index) { + case 0: + if(active) { audio_on(); } else { audio_off(); } + break; + } +} + +void dip_switch_update_mask_kb(uint32_t state) { + dip_switch_update_mask_user(state); +} + +void dip_switch_update_mask_user(uint32_t state) { + if (state & (1UL<<0) && state & (1UL<<1)) { + layer_on(_ADJUST); // C on esc + } else { + layer_off(_ADJUST); + } +} +``` + +Example code after change: + +```c +bool dip_switch_update_kb(uint8_t index, bool active) { + if !(dip_switch_update_user(index, active)) { return false; } + return true; +} + +bool dip_switch_update_user(uint8_t index, bool active) { + switch (index) { + case 0: + if(active) { audio_on(); } else { audio_off(); } + break; + } + return true; // Returning true allows keyboard code to execute, false will tell the keyboard code "I've already handled it". +} + +bool dip_switch_update_mask_kb(uint32_t state) { + if (!dip_switch_update_mask_user(state)) { return false; } + return true; +} + +bool dip_switch_update_mask_user(uint32_t state) { + if (state & (1UL<<0) && state & (1UL<<1)) { + layer_on(_ADJUST); // C on esc + } else { + layer_off(_ADJUST); + } + return true; // Returning true allows keyboard code to execute, false will tell the keyboard code "I've already handled it". +} +``` + +## Notable core changes :id=notable-core + +### Split transport improvements :id=split-transport-improvements + +Split keyboards gained a significant amount of improvements during this breaking changes cycle, specifically: + +* Extensible split data sync ([#11930](https://github.com/qmk/qmk_firmware/pull/11930)) -- rewritten data sharing between sides, allowing for data transfer only when required, as well as enabling keyboards and keymaps to define their own shared data. +* Full-duplex ARM USART split ([#13081](https://github.com/qmk/qmk_firmware/pull/13081)) -- adds to the previous half-duplex driver and now allows for full-duplex support on ARM. +* Make solo half of split keyboards (more) usable. ([#13523](https://github.com/qmk/qmk_firmware/pull/13523)) -- allows the slave to be disconnected, enabling one-handed use. +* Switch split_common to CRC subsystem ([#13418](https://github.com/qmk/qmk_firmware/pull/13418)) + +!> If you're updating your split keyboard, you will need to flash both sides of the split with the your firmware. + +### Teensy 4.x support ([#13056](https://github.com/qmk/qmk_firmware/pull/13056), [#13076](https://github.com/qmk/qmk_firmware/pull/13076), [#13077](https://github.com/qmk/qmk_firmware/pull/13077)) :id=teensy-4-x-support + +Updated ChibiOS and ChibiOS-Contrib, which brought in support for Teensy 4.x dev boards, running NXP i.MX1062. + +### Data Driven Improvements ([#13366](https://github.com/qmk/qmk_firmware/pull/13366)) + +QMK's pursuit of data-driven keyboards has progressed, allowing substantially more configurable options to be specified in `info.json`. + +#### Tags + +Tags will let you categorize your keyboard, and will be used in the future to allow browsing and sorting through keyboards in QMK. Tags are free-form text identifiers that identify attributes about your keyboard. To add tags you simply add a `tags` key to your `info.json`: + + "tags": ["tkl", "backlight", "encoder"] + +#### Dot Notation + +With this release we are moving towards using JSON dot notation in more places. For example, when using `qmk info -f text`: + +``` +$ qmk info -f text -kb clueboard/card + bootloader: atmel-dfu + debounce: 20 + diode_direction: ROW2COL + features.audio: True + features.backlight: True + features.bluetooth: False + features.bootmagic: False + features.command: True + features.console: True + features.extrakey: True + features.lto: True + features.midi: False + features.mousekey: True + features.nkro: False + features.rgblight: True + features.unicode: False + height: 8 + keyboard_folder: clueboard/card + keyboard_name: Cluecard + layout_aliases.LAYOUT: LAYOUT_all + layouts: LAYOUT_all + maintainer: skullydazed + manufacturer: Clueboard + matrix_pins.cols: F1, F6, F7 + matrix_pins.rows: B4, F0, F4, F5 + platform: unknown + processor: atmega32u4 + processor_type: avr + protocol: LUFA + rgblight.brightness_steps: 17 + rgblight.hue_steps: 10 + rgblight.led_count: 4 + rgblight.pin: E6 + rgblight.saturation_steps: 17 + split.transport.protocol: serial + usb.device_ver: 0x0001 + usb.pid: 0x2330 + usb.vid: 0xC1ED + width: 10 +``` + +#### New configuration keys + +We've added dozens of new keys to `info.json` so that you can configure more than ever without writing a single line of code. A quick overview of the new items you can configure: + +* `audio.pins`, `audio.voices` +* `backlight.breathing`, `backlight.breathing_period`, `backlight.levels`, `backlight.pin`, +* `bluetooth.driver`, `bluetooth.lto` +* `bootloader_instructions` +* `build.debounce_type`, `build.firmware_format`, `build.lto` +* `combo.count`, `combo.term` +* `leader_key.timing`, `leader_key.strict_processing`, `leader_key.timeout` +* `matrix.custom`, `matrix.custom_lite`, `matrix.ghost`, `matrix.io_delay` +* `mouse_key.enabled`, `mouse_key.delay`, `mouse_key.interval`, `mouse_key.max_speed`, `mouse_key.time_to_max`, `mouse_key.wheel_delay` +* `oneshot.tap_toggle`, `oneshot.timeout` +* `rgblight.layers.blink`, `rgblight.layers.enabled`, `rgblight.layers.max`, `rgblight.layers.override_rgb`, `rgblight.rgbw` +* `split.enabled`, `split.matrix_grid`, `split.matrix_pins`, `split.main`, `split.soft_serial_pin`, `split.soft_serial_speed`, `split.transport.protocol`, `split.transport.sync_matrix_state`, `split.transport.sync_modifiers`, `split.usb_detect` +* `tapping.force_hold`, `tapping.force_hold_per_key`, `tapping.ignore_mod_tap_interrupt`, `tapping.ignore_mod_tap_interrupt_per_key`, `tapping.permissive_hold`, `tapping.permissive_hold_per_key`, `tapping.retro`, `tapping.retro_per_key`, `tapping.term`, `tapping.term_per_key`, `tapping.toggle` +* `usb.force_nkro`, `usb.max_power`, `usb.no_startup_check`, `usb.polling_interval`, `usb.shared_endpoint.keyboard`, `usb.shared_endpoint.mouse`, `usb.suspend_wakeup_delay`, `usb.wait_for` +* `qmk.keys_per_scan`, `qmk.tap_keycode_delay`, `qmk.tap_capslock_delay` + +### Codebase restructure and cleanup :id=codebase-restructure + +QMK was originally based on TMK, and has grown in size considerably since its first inception. To keep moving things forward, restructure of some of the core areas of the code is needed to support new concepts and new hardware, and progress is happening along those lines: + +* Move RGBLight code into its own folder ([#13312](https://github.com/qmk/qmk_firmware/pull/13312)) +* Migrate platform independent code from tmk_core -> quantum ([#13673](https://github.com/qmk/qmk_firmware/pull/13673)) +* matrix_scan_x -> x_task ([#13748](https://github.com/qmk/qmk_firmware/pull/13748)) +* Move some led drivers to common folder ([#13749](https://github.com/qmk/qmk_firmware/pull/13749)) +* Move chibios board files to allow tmk_core platform migration ([#13777](https://github.com/qmk/qmk_firmware/pull/13777)) +* Begin to carve out platform/protocol API - Single main loop ([#13843](https://github.com/qmk/qmk_firmware/pull/13843)) +* Relocate platform specific drivers ([#13894](https://github.com/qmk/qmk_firmware/pull/13894)) +* Move all the flash logic from tmk_core ([#13927](https://github.com/qmk/qmk_firmware/pull/13927)) +* Move USB Host Shield and Arduino core to `lib/` ([#13973](https://github.com/qmk/qmk_firmware/pull/13973)) +* Unify behaviour of wait on AVR ([#14025](https://github.com/qmk/qmk_firmware/pull/14025)) +* Move nix folder alongside vagrant ([#14132](https://github.com/qmk/qmk_firmware/pull/14132)) +* Align some quantum sub-directories ([#14134](https://github.com/qmk/qmk_firmware/pull/14134)) + +--- + +## Full changelist + +Core: +* Arm ps2 mouse interrupt ([#6490](https://github.com/qmk/qmk_firmware/pull/6490)) +* Process combos earlier & overlapping combos ([#8591](https://github.com/qmk/qmk_firmware/pull/8591)) +* Swap buttons on PS2 Mouse/Trackball ([#9205](https://github.com/qmk/qmk_firmware/pull/9205)) +* Add HOLD_ON_OTHER_KEY_PRESS option for dual-role keys ([#9404](https://github.com/qmk/qmk_firmware/pull/9404)) +* add yaml_build_options target ([#10533](https://github.com/qmk/qmk_firmware/pull/10533)) +* Warn when building a board that uses arm_atsam ([#10904](https://github.com/qmk/qmk_firmware/pull/10904)) +* Key Overrides ([#11422](https://github.com/qmk/qmk_firmware/pull/11422)) +* Refactor `quantum/command.{c,h}` for code size & {read,maintain}ability ([#11842](https://github.com/qmk/qmk_firmware/pull/11842)) +* Extensible split data sync ([#11930](https://github.com/qmk/qmk_firmware/pull/11930)) +* Move print/debug files to quantum ([#12069](https://github.com/qmk/qmk_firmware/pull/12069)) +* Unconditionally call led_init_ports ([#12116](https://github.com/qmk/qmk_firmware/pull/12116)) +* Support using a timer for wait_us() on ChibiOS-based boards ([#12211](https://github.com/qmk/qmk_firmware/pull/12211)) +* Add support for NO_PIN to all matrix types ([#12238](https://github.com/qmk/qmk_firmware/pull/12238)) +* Avoid 8-bit timer overflows in debounce algorithms ([#12240](https://github.com/qmk/qmk_firmware/pull/12240)) +* Add Per Key exclusions for Haptic Feedback ([#12386](https://github.com/qmk/qmk_firmware/pull/12386)) +* Steno combinedkeys ([#12538](https://github.com/qmk/qmk_firmware/pull/12538)) +* eeprom_stm32: implement high density wear leveling ([#12567](https://github.com/qmk/qmk_firmware/pull/12567)) +* eeprom_i2c driver: added EXTERNAL_EEPROM_WP_PIN configuration option. ([#12617](https://github.com/qmk/qmk_firmware/pull/12617)) +* Add CRC8 calculation subsystem to quantum ([#12641](https://github.com/qmk/qmk_firmware/pull/12641)) +* Limit saturation for RGB_MATRIX_JELLYBEAN_RAINDROPS ([#12669](https://github.com/qmk/qmk_firmware/pull/12669)) +* Add asym_eager_defer_pk debounce type ([#12689](https://github.com/qmk/qmk_firmware/pull/12689)) +* Include lib8tion.c into RGB/LED matrix build list ([#12699](https://github.com/qmk/qmk_firmware/pull/12699)) +* Add readPort() and some API to 'tmk_core/common/*/gpio.h' ([#12754](https://github.com/qmk/qmk_firmware/pull/12754)) +* add wait_cpuclock() macro for AVR and CPU_CLOCK macro ([#12755](https://github.com/qmk/qmk_firmware/pull/12755)) +* Trigger a wakeup after USB Reset on ChibiOS. ([#12831](https://github.com/qmk/qmk_firmware/pull/12831)) +* Add sync_timer support over serial_link (i.e. Ergodox Infinity) ([#12845](https://github.com/qmk/qmk_firmware/pull/12845)) +* Digitizer HID interface : absolute coordinates for mouse cursor ([#12851](https://github.com/qmk/qmk_firmware/pull/12851)) +* Add config.h and rules.mk support for data driven keymaps ([#12859](https://github.com/qmk/qmk_firmware/pull/12859)) +* Add alternate ldscript for STM32duino (F103xB) ([#12914](https://github.com/qmk/qmk_firmware/pull/12914)) +* `keymap_extras`: Remove deprecated defines ([#12949](https://github.com/qmk/qmk_firmware/pull/12949)) +* Retain brightness with lighting layers ([#13025](https://github.com/qmk/qmk_firmware/pull/13025)) +* Move optical sensor code to drivers folder ([#13044](https://github.com/qmk/qmk_firmware/pull/13044)) +* Change the prototype of matrix_output_unselect_delay() ([#13045](https://github.com/qmk/qmk_firmware/pull/13045)) +* Add weak refs on reading rows/cols. ([#13062](https://github.com/qmk/qmk_firmware/pull/13062)) +* Use single memcmp to determine if matrix changed. ([#13064](https://github.com/qmk/qmk_firmware/pull/13064)) +* Improve layer mask handling ([#13065](https://github.com/qmk/qmk_firmware/pull/13065)) +* mousekey: expose current report to users ([#13069](https://github.com/qmk/qmk_firmware/pull/13069)) +* ChibiOS SVN mirror script. ([#13070](https://github.com/qmk/qmk_firmware/pull/13070)) +* Added right vs left specific pin assignments for dip switch ([#13074](https://github.com/qmk/qmk_firmware/pull/13074)) +* make RESET key work with Teensy 4.x ([#13076](https://github.com/qmk/qmk_firmware/pull/13076)) +* wire up flash make target for Teensy 4.x ([#13077](https://github.com/qmk/qmk_firmware/pull/13077)) +* bump USB spec version in device descriptor to 2.0 ([#13078](https://github.com/qmk/qmk_firmware/pull/13078)) +* Unite half-duplex and full-duplex serial drivers ([#13081](https://github.com/qmk/qmk_firmware/pull/13081)) +* Add ST7565 LCD driver ([#13089](https://github.com/qmk/qmk_firmware/pull/13089)) +* `spi_master` Kinetis support ([#13098](https://github.com/qmk/qmk_firmware/pull/13098)) +* GMMK Pro RGB Support ([#13147](https://github.com/qmk/qmk_firmware/pull/13147)) +* Remove dfu-util arguments from mcu_selection ([#13150](https://github.com/qmk/qmk_firmware/pull/13150)) +* Add subcommand to generate version.h ([#13151](https://github.com/qmk/qmk_firmware/pull/13151)) +* Add oled_invert ([#13172](https://github.com/qmk/qmk_firmware/pull/13172)) +* ST7565 invert ([#13237](https://github.com/qmk/qmk_firmware/pull/13237)) +* RGB Matrix eeprom write limiting ([#13238](https://github.com/qmk/qmk_firmware/pull/13238)) +* Temporary disable of CRC ([#13252](https://github.com/qmk/qmk_firmware/pull/13252)) +* Move LED/RGB Matrix code into their own directories ([#13257](https://github.com/qmk/qmk_firmware/pull/13257)) +* Skip EEPROM writes once done. ([#13293](https://github.com/qmk/qmk_firmware/pull/13293)) +* Remove rgblight stubs ([#13302](https://github.com/qmk/qmk_firmware/pull/13302)) +* Allow settable SPI divisor for AW20216 driver, set default to 4 ([#13309](https://github.com/qmk/qmk_firmware/pull/13309)) +* Move RGBLight code into its own folder ([#13312](https://github.com/qmk/qmk_firmware/pull/13312)) +* Unify matrix for split common and regular matrix ([#13330](https://github.com/qmk/qmk_firmware/pull/13330)) +* Relocate RGB/HSV color defs to a more fitting place ([#13377](https://github.com/qmk/qmk_firmware/pull/13377)) +* Adds support for STM32L412xB, STM32L422xB. ([#13383](https://github.com/qmk/qmk_firmware/pull/13383)) +* Convert Dip Switch callbacks to boolean functions ([#13399](https://github.com/qmk/qmk_firmware/pull/13399)) +* Use string literals for `SERIAL_NUMBER` ([#13403](https://github.com/qmk/qmk_firmware/pull/13403)) +* Switch split_common to CRC subsystem ([#13418](https://github.com/qmk/qmk_firmware/pull/13418)) +* Improve 'show_build_options' target ([#13425](https://github.com/qmk/qmk_firmware/pull/13425)) +* AW20216 use register increment for framebuffer flushes ([#13430](https://github.com/qmk/qmk_firmware/pull/13430)) +* Allow invert of SPLIT_HAND_PIN logic ([#13433](https://github.com/qmk/qmk_firmware/pull/13433)) +* chibios: bootloader: use integer pointers as volatile ([#13450](https://github.com/qmk/qmk_firmware/pull/13450)) +* Refactor OLED to allow easy addition of other types ([#13454](https://github.com/qmk/qmk_firmware/pull/13454)) +* Dual RGB Matrix IS31FL3737 driver support to address #13442 ([#13457](https://github.com/qmk/qmk_firmware/pull/13457)) +* Enable g_is31_leds PROGMEM for RGB Matrix IS31FL3737 driver ([#13480](https://github.com/qmk/qmk_firmware/pull/13480)) +* Switch Ergodox Infinity over to split_common ([#13481](https://github.com/qmk/qmk_firmware/pull/13481)) +* Make solo half of split keyboards (more) usable. ([#13523](https://github.com/qmk/qmk_firmware/pull/13523)) +* Enable sync of OLED/ST7565 display on/off state on Splits ([#13542](https://github.com/qmk/qmk_firmware/pull/13542)) +* Revert "Add rgblight to RGB Matrix VPATH" ([#13559](https://github.com/qmk/qmk_firmware/pull/13559)) +* Move `SENDSTRING_BELL` code to `send_string.h` ([#13566](https://github.com/qmk/qmk_firmware/pull/13566)) +* Migrate platform independent code from tmk_core -> quantum ([#13673](https://github.com/qmk/qmk_firmware/pull/13673)) +* Avoid LTO conficts on arm_atsam ([#13676](https://github.com/qmk/qmk_firmware/pull/13676)) +* Allow for removal of hysteresis on 4x encoders ([#13698](https://github.com/qmk/qmk_firmware/pull/13698)) +* Port new_keyboard.sh to CLI ([#13706](https://github.com/qmk/qmk_firmware/pull/13706)) +* Align AW20216 driver ([#13712](https://github.com/qmk/qmk_firmware/pull/13712)) +* Haptic: driver-> feature ([#13713](https://github.com/qmk/qmk_firmware/pull/13713)) +* Add support for STM32F407x MCUs. ([#13718](https://github.com/qmk/qmk_firmware/pull/13718)) +* Remove legacy BACKLIGHT_CUSTOM_DRIVER option ([#13731](https://github.com/qmk/qmk_firmware/pull/13731)) +* Minor tidy up of key overrides ([#13747](https://github.com/qmk/qmk_firmware/pull/13747)) +* matrix_scan_x -> x_task ([#13748](https://github.com/qmk/qmk_firmware/pull/13748)) +* Move some led drivers to common folder ([#13749](https://github.com/qmk/qmk_firmware/pull/13749)) +* Allow for higher USB Polling rate on ATSAM boards ([#13755](https://github.com/qmk/qmk_firmware/pull/13755)) +* Rgb matrix/enable modes explicitly ([#13758](https://github.com/qmk/qmk_firmware/pull/13758)) +* Move chibios board files to allow tmk_core platform migration ([#13777](https://github.com/qmk/qmk_firmware/pull/13777)) +* __flash? ([#13799](https://github.com/qmk/qmk_firmware/pull/13799)) +* `--parallel` improvements ([#13800](https://github.com/qmk/qmk_firmware/pull/13800)) +* Speed up pimoroni trackball driver ([#13823](https://github.com/qmk/qmk_firmware/pull/13823)) +* Add a toggle key for GUI On/Off in Magic feature ([#13830](https://github.com/qmk/qmk_firmware/pull/13830)) +* Begin to carve out platform/protocol API - Single main loop ([#13843](https://github.com/qmk/qmk_firmware/pull/13843)) +* Remove Full Bootmagic ([#13846](https://github.com/qmk/qmk_firmware/pull/13846)) +* Remove backwards compatibility of debounce names ([#13877](https://github.com/qmk/qmk_firmware/pull/13877)) +* Relocate platform specific drivers ([#13894](https://github.com/qmk/qmk_firmware/pull/13894)) +* Remove ONEHAND_ENABLE ([#13920](https://github.com/qmk/qmk_firmware/pull/13920)) +* Move all the flash logic from tmk_core ([#13927](https://github.com/qmk/qmk_firmware/pull/13927)) +* adding uf2 flash support for blackpill 401 ([#13968](https://github.com/qmk/qmk_firmware/pull/13968)) +* Unify behaviour of wait on AVR ([#14025](https://github.com/qmk/qmk_firmware/pull/14025)) +* Add qmk-hid bootloader detection support to `qmk console` ([#14038](https://github.com/qmk/qmk_firmware/pull/14038)) +* Align DIP_SWITCH_PINS_RIGHT implementation with encoders ([#14079](https://github.com/qmk/qmk_firmware/pull/14079)) +* Tidy up quantum.c now some of tmk_core has been merged ([#14083](https://github.com/qmk/qmk_firmware/pull/14083)) +* Improve pmw3360 sensor and make it more hardware agnostic ([#14097](https://github.com/qmk/qmk_firmware/pull/14097)) +* Move nix folder alongside vagrant ([#14132](https://github.com/qmk/qmk_firmware/pull/14132)) +* Align some quantum sub-directories ([#14134](https://github.com/qmk/qmk_firmware/pull/14134)) +* Revert 14083 && 14144 ([#14150](https://github.com/qmk/qmk_firmware/pull/14150)) + +CLI: +* allow LINE_PINxx for Teensy 4.x pins ([#13247](https://github.com/qmk/qmk_firmware/pull/13247)) +* Remove the redundant pin name validation ([#13251](https://github.com/qmk/qmk_firmware/pull/13251)) +* Move all our CLI file formatters to the format dir ([#13296](https://github.com/qmk/qmk_firmware/pull/13296)) +* Refactor doctor.py into a directory ([#13298](https://github.com/qmk/qmk_firmware/pull/13298)) +* Add git and venv info to doctor's output ([#13405](https://github.com/qmk/qmk_firmware/pull/13405)) +* Matrix consistency check ([#13470](https://github.com/qmk/qmk_firmware/pull/13470)) +* Remove references to info.json `width` and `height` in CLI ([#13728](https://github.com/qmk/qmk_firmware/pull/13728)) +* Make `qmk doctor` more lenient about system config ([#13804](https://github.com/qmk/qmk_firmware/pull/13804)) +* Defer the expensive search for layout macros until info.json has been processed ([#14007](https://github.com/qmk/qmk_firmware/pull/14007)) + +Submodule updates: +* Update ChibiOS, ChibiOS-Contrib. ([#13056](https://github.com/qmk/qmk_firmware/pull/13056)) +* Update LUFA (18-07-2021) and add QMK-HID Bootloader support ([#13588](https://github.com/qmk/qmk_firmware/pull/13588)) +* Update LUFA Submodule (2021-07-30) ([#13819](https://github.com/qmk/qmk_firmware/pull/13819)) +* Bump gtest ([#13885](https://github.com/qmk/qmk_firmware/pull/13885)) +* Update ChibiOS-Contrib, mirroring script. ([#13896](https://github.com/qmk/qmk_firmware/pull/13896)) +* Move USB Host Shield and Arduino core to `lib/` ([#13973](https://github.com/qmk/qmk_firmware/pull/13973)) + +Keyboards: +* Migrate keyboards using uGFX to LED_MATRIX ([#9657](https://github.com/qmk/qmk_firmware/pull/9657)) +* Remove MIDI Configuration boilerplate ([#11151](https://github.com/qmk/qmk_firmware/pull/11151)) +* manyboard macro ([#11896](https://github.com/qmk/qmk_firmware/pull/11896)) +* Moved tokyo60/ into tokyokeyboard/tokyo60/. ([#12023](https://github.com/qmk/qmk_firmware/pull/12023)) +* Organize KPrepublic, K.T.E.C, xiudi boards into directories ([#12159](https://github.com/qmk/qmk_firmware/pull/12159)) +* Add Durgod Taurus K310 keyboard ([#12314](https://github.com/qmk/qmk_firmware/pull/12314)) +* add support for m65 and simple 5x13 ortholinear ([#12315](https://github.com/qmk/qmk_firmware/pull/12315)) +* Relocalize and Update p1800fl ([#12425](https://github.com/qmk/qmk_firmware/pull/12425)) +* GameBuddy v1.M ([#12637](https://github.com/qmk/qmk_firmware/pull/12637)) +* Add mechlovin9 rev2 PCB ([#12767](https://github.com/qmk/qmk_firmware/pull/12767)) +* Add RGB matrix support for Kyria ([#12789](https://github.com/qmk/qmk_firmware/pull/12789)) +* RGB Matrix working for Sofle RGB ([#12861](https://github.com/qmk/qmk_firmware/pull/12861)) +* Add Durgod Hades, Galaxy and Venus Keyboards ([#12893](https://github.com/qmk/qmk_firmware/pull/12893)) +* kint36: set correct EEPROM size ([#12946](https://github.com/qmk/qmk_firmware/pull/12946)) +* Updated encoder_update_user on my keymap to follow the new signature on quantum ([#13152](https://github.com/qmk/qmk_firmware/pull/13152)) +* Add Creator Pro by SergioPoverony ([#13154](https://github.com/qmk/qmk_firmware/pull/13154)) +* Use the new ST7565 driver on Ergodox Infinity ([#13165](https://github.com/qmk/qmk_firmware/pull/13165)) +* Refactor atom47 and add rev4 and rev5 ([#13201](https://github.com/qmk/qmk_firmware/pull/13201)) +* Add Bakeneko65 V3 and revision folders ([#13228](https://github.com/qmk/qmk_firmware/pull/13228)) +* Keyboards/RGBKB/Mün ([#13239](https://github.com/qmk/qmk_firmware/pull/13239)) +* Optimize our jsonschema by using refs ([#13271](https://github.com/qmk/qmk_firmware/pull/13271)) +* Handwired/Stream_Cheap/2x4: Add via support ([#13297](https://github.com/qmk/qmk_firmware/pull/13297)) +* ez_maker/directpins for easy one-offs in qmk_configurator ([#13321](https://github.com/qmk/qmk_firmware/pull/13321)) +* add kinT kinesis keyboard controller (kint41 variant) ([#13333](https://github.com/qmk/qmk_firmware/pull/13333)) +* Error log cleanup ([#13349](https://github.com/qmk/qmk_firmware/pull/13349)) +* Drashna's split updates ([#13350](https://github.com/qmk/qmk_firmware/pull/13350)) +* Migrate SHIFT_ESC and RGB `fn_actions` to Grave Escape and RGB keycodes ([#13360](https://github.com/qmk/qmk_firmware/pull/13360)) +* Add a lot more data to info.json ([#13366](https://github.com/qmk/qmk_firmware/pull/13366)) +* Remove `API_SYSEX_ENABLE`s from rules.mk ([#13389](https://github.com/qmk/qmk_firmware/pull/13389)) +* gmmk/pro/mike1808 keymap ([#13398](https://github.com/qmk/qmk_firmware/pull/13398)) +* Remove deprecated callbacks for encoders and dip switches ([#13404](https://github.com/qmk/qmk_firmware/pull/13404)) +* first pass: matrix consistency improvements ([#13471](https://github.com/qmk/qmk_firmware/pull/13471)) +* Migrate more `fn_actions` stuff ([#13502](https://github.com/qmk/qmk_firmware/pull/13502)) +* add simple gmmk pro macos keymap with rgb ([#13504](https://github.com/qmk/qmk_firmware/pull/13504)) +* move volcano660 to ilumkb folder ([#13550](https://github.com/qmk/qmk_firmware/pull/13550)) +* Valor Rev 2 ([#13551](https://github.com/qmk/qmk_firmware/pull/13551)) +* Split GMMK Pro PCBs into separate revisions ([#13570](https://github.com/qmk/qmk_firmware/pull/13570)) +* Remove the vision_division keyboard ([#13571](https://github.com/qmk/qmk_firmware/pull/13571)) +* Develop - Change uint32_t to layer_state_t ([#13596](https://github.com/qmk/qmk_firmware/pull/13596)) +* Develop - DC01 left ([#13597](https://github.com/qmk/qmk_firmware/pull/13597)) +* Created "paddlegame" keymap ([#13629](https://github.com/qmk/qmk_firmware/pull/13629)) +* Add timer_avr to includes for broken builds ([#13641](https://github.com/qmk/qmk_firmware/pull/13641)) +* Disable console by default on all Keebio boards ([#13649](https://github.com/qmk/qmk_firmware/pull/13649)) +* Enable LTO by default on BastardKB Scylla ([#13664](https://github.com/qmk/qmk_firmware/pull/13664)) +* Reduce compile size for dz60rgb v2.1 ([#13680](https://github.com/qmk/qmk_firmware/pull/13680)) +* Clean up remaining RGB_DISABLE_WHEN_USB_SUSPENDED defines ([#13689](https://github.com/qmk/qmk_firmware/pull/13689)) +* Remove some legacy files ([#13715](https://github.com/qmk/qmk_firmware/pull/13715)) +* [Keyboard Update] Change to L422 ([#13717](https://github.com/qmk/qmk_firmware/pull/13717)) +* Update kyria make path example ([#13720](https://github.com/qmk/qmk_firmware/pull/13720)) +* Drashna's Defaults cleanup ([#13722](https://github.com/qmk/qmk_firmware/pull/13722)) +* Reduce firmware size in prep for #12670 ([#13724](https://github.com/qmk/qmk_firmware/pull/13724)) +* Tidy up rgbkb/mun ([#13801](https://github.com/qmk/qmk_firmware/pull/13801)) +* Make default keymap for GMMK Pro reflect stock ([#13850](https://github.com/qmk/qmk_firmware/pull/13850)) +* Rework as per 9824 ([#13898](https://github.com/qmk/qmk_firmware/pull/13898)) +* Remove console from keebio via keyboards ([#13901](https://github.com/qmk/qmk_firmware/pull/13901)) +* Drashna split transport improvement ([#13905](https://github.com/qmk/qmk_firmware/pull/13905)) +* Copy GMMK Pro screw specs to ISO readme ([#13908](https://github.com/qmk/qmk_firmware/pull/13908)) +* Clean up remaining RGB_DISABLE_WHEN_USB_SUSPENDED defines Part 2 ([#13912](https://github.com/qmk/qmk_firmware/pull/13912)) +* Add andrebrait layout for GMMK Pro ([#13932](https://github.com/qmk/qmk_firmware/pull/13932)) +* Updated RGB Matrix suspend define part 3 ([#13954](https://github.com/qmk/qmk_firmware/pull/13954)) +* Improve andrebrait keymap ([#13985](https://github.com/qmk/qmk_firmware/pull/13985)) +* Drashna's Improve OLEDs and custom Split code ([#14063](https://github.com/qmk/qmk_firmware/pull/14063)) +* Kyria default reformat ([#14080](https://github.com/qmk/qmk_firmware/pull/14080)) +* Feature rich keymap for GMMK Pro (ANSI) ([#14120](https://github.com/qmk/qmk_firmware/pull/14120)) + +Keyboard fixes: +* Fix LED mapping for GMMK Pro ([#13189](https://github.com/qmk/qmk_firmware/pull/13189)) +* Fix up SplitKB keyboards ([#13511](https://github.com/qmk/qmk_firmware/pull/13511)) +* Keyboards/sol rev2 fix ([#13533](https://github.com/qmk/qmk_firmware/pull/13533)) +* Fix MATRIX_COLS for aeboards/constellation/rev2 ([#13633](https://github.com/qmk/qmk_firmware/pull/13633)) +* Fix errors with matrix_output_unselect_delay function calls ([#13645](https://github.com/qmk/qmk_firmware/pull/13645)) +* Fix default keymap for 0xCB 1337 keyboard ([#13646](https://github.com/qmk/qmk_firmware/pull/13646)) +* Fix Matrix Row number for ggkeyboards/genisis ([#13647](https://github.com/qmk/qmk_firmware/pull/13647)) +* Fix matrix issues with Promethium ([#13648](https://github.com/qmk/qmk_firmware/pull/13648)) +* Fix dc01/left so that it doesn't throw a warning ([#13653](https://github.com/qmk/qmk_firmware/pull/13653)) +* Remove broken, unmaintained converter/ibm_5291 ([#13658](https://github.com/qmk/qmk_firmware/pull/13658)) +* Quick hack to fix Astro65 board ([#13665](https://github.com/qmk/qmk_firmware/pull/13665)) +* Fix symmetric70_proto build break on develop branch ([#13667](https://github.com/qmk/qmk_firmware/pull/13667)) +* Fix matrix delay on Drop boards ([#13671](https://github.com/qmk/qmk_firmware/pull/13671)) +* Fix split matrix for sekigon grs 70ec ([#13672](https://github.com/qmk/qmk_firmware/pull/13672)) +* Fix type on pandora via keymap ([#13681](https://github.com/qmk/qmk_firmware/pull/13681)) +* Fix & clean up tronguylabs/m122_3270 ([#13684](https://github.com/qmk/qmk_firmware/pull/13684)) +* Fix up xd002 rgb keymaps ([#13685](https://github.com/qmk/qmk_firmware/pull/13685)) +* Dactyl Manuform cleanup ([#13686](https://github.com/qmk/qmk_firmware/pull/13686)) +* Fix Q1 change dip switch to bool ([#13687](https://github.com/qmk/qmk_firmware/pull/13687)) +* Fix compile size for the Merge UM70 via keymap ([#13690](https://github.com/qmk/qmk_firmware/pull/13690)) +* Fix compile size for the Lets Split Sockets via keymap ([#13691](https://github.com/qmk/qmk_firmware/pull/13691)) +* Fix Compile size on ungodly Launch Pad ([#13692](https://github.com/qmk/qmk_firmware/pull/13692)) +* dirty fix ([#13695](https://github.com/qmk/qmk_firmware/pull/13695)) +* Fix compile size for the Vitamins Included via keymap ([#13696](https://github.com/qmk/qmk_firmware/pull/13696)) +* Fix typo in Dactyl Manuform ([#13740](https://github.com/qmk/qmk_firmware/pull/13740)) +* Fix compile issues due to LED changes ([#13821](https://github.com/qmk/qmk_firmware/pull/13821)) +* Fix SRC include for matrix/m20add issi driver ([#13826](https://github.com/qmk/qmk_firmware/pull/13826)) +* fix develop branch move file ([#13832](https://github.com/qmk/qmk_firmware/pull/13832)) +* Fix knops keymaps ([#13872](https://github.com/qmk/qmk_firmware/pull/13872)) +* Switch Draculad to using WPM char hack ([#13886](https://github.com/qmk/qmk_firmware/pull/13886)) +* Fix up builds after #8591 ([#13900](https://github.com/qmk/qmk_firmware/pull/13900)) +* Fix matrix_output_unselect_delay for handwired/xealousbrown ([#13913](https://github.com/qmk/qmk_firmware/pull/13913)) +* Fixup rgb matrix config for KBD67 mkII boards ([#13931](https://github.com/qmk/qmk_firmware/pull/13931)) +* Fix compliation for ferris 0.2 bling ([#13937](https://github.com/qmk/qmk_firmware/pull/13937)) +* Fix some additional bootmagic settings ([#13979](https://github.com/qmk/qmk_firmware/pull/13979)) +* Fix default keymap for GMMK Pro Iso ([#13980](https://github.com/qmk/qmk_firmware/pull/13980)) +* Fixup Ungodly Launch Pad config ([#13992](https://github.com/qmk/qmk_firmware/pull/13992)) +* Fix errors that have cropped up in develop ([#14005](https://github.com/qmk/qmk_firmware/pull/14005)) +* Fix wait_us overflow in matrix for dactyl based boards ([#14039](https://github.com/qmk/qmk_firmware/pull/14039)) +* Fixup Neson Design N6 ISSI includes ([#14045](https://github.com/qmk/qmk_firmware/pull/14045)) +* Fixup `massdrop/alt`, `cest73/tkm`. ([#14048](https://github.com/qmk/qmk_firmware/pull/14048)) +* fix helix:fraanrosi compile error caused by #13677. ([#14061](https://github.com/qmk/qmk_firmware/pull/14061)) +* Fix compile issues for Tractyl Manuform ([#14105](https://github.com/qmk/qmk_firmware/pull/14105)) +* Disable Console on Keebio Quefrency ([#14108](https://github.com/qmk/qmk_firmware/pull/14108)) +* Fixed GMMK Pro -> stickandgum keymap readme.md ([#14123](https://github.com/qmk/qmk_firmware/pull/14123)) +* Drashna keymap fixups ([#14140](https://github.com/qmk/qmk_firmware/pull/14140)) +* fix ([#14142](https://github.com/qmk/qmk_firmware/pull/14142)) +* Fix merge artifacts ([#14146](https://github.com/qmk/qmk_firmware/pull/14146)) +* Update readme files ([#14172](https://github.com/qmk/qmk_firmware/pull/14172)) + +Others: +* Add examples to RGB Matrix Indicators docs ([#12797](https://github.com/qmk/qmk_firmware/pull/12797)) + +Bugs: +* Fix Indicator LED issues ([#12097](https://github.com/qmk/qmk_firmware/pull/12097)) +* Fixing incorrect keymap build when switching between multiple keymap.jsons ([#12632](https://github.com/qmk/qmk_firmware/pull/12632)) +* Fix LED Hit Counter for LED/RGB Matrix ([#12674](https://github.com/qmk/qmk_firmware/pull/12674)) +* ChibiOS fix O3 and LTO breakage of extra keys and joystick ([#12819](https://github.com/qmk/qmk_firmware/pull/12819)) +* Remove the #10088 hotfix for Teensy 3.1-like Input:Club keyboards ([#12870](https://github.com/qmk/qmk_firmware/pull/12870)) +* Fix firmware size check with avr-libc 1:2.0.0+Atmel3.6.2-1.1 (Debian bullseye) ([#12951](https://github.com/qmk/qmk_firmware/pull/12951)) +* Fix RGB/LED Suspend defines ([#13146](https://github.com/qmk/qmk_firmware/pull/13146)) +* Fix overrun in st7565_write_raw when not at (0, 0) ([#13209](https://github.com/qmk/qmk_firmware/pull/13209)) +* Upgrades Vagrant box to Debian 10 to fix Docker build error on Debian 9. ([#13236](https://github.com/qmk/qmk_firmware/pull/13236)) +* Fix issues with VIA EEPROM init and bring in line with eeconfig functionality ([#13243](https://github.com/qmk/qmk_firmware/pull/13243)) +* Fix CRC for AVR and enable again. ([#13253](https://github.com/qmk/qmk_firmware/pull/13253)) +* Fix linker error when rgblight and RGB Matrix are both enabled ([#13304](https://github.com/qmk/qmk_firmware/pull/13304)) +* Fix building layouts from JSON ([#13310](https://github.com/qmk/qmk_firmware/pull/13310)) +* Add rgblight to RGB Matrix VPATH ([#13371](https://github.com/qmk/qmk_firmware/pull/13371)) +* Fix two out of bounds accesses from #13330. ([#13525](https://github.com/qmk/qmk_firmware/pull/13525)) +* Fixes for clang not being able to run unit tests ([#13546](https://github.com/qmk/qmk_firmware/pull/13546)) +* Fixup Audio startup and add to documents ([#13606](https://github.com/qmk/qmk_firmware/pull/13606)) +* CLI/Docs: Fix the format commands' name ([#13668](https://github.com/qmk/qmk_firmware/pull/13668)) +* Disables rgblight twinkle by default. ([#13677](https://github.com/qmk/qmk_firmware/pull/13677)) +* Fix typo in dip switch example ([#13688](https://github.com/qmk/qmk_firmware/pull/13688)) +* docs/cli_commands: fix typo ([#13697](https://github.com/qmk/qmk_firmware/pull/13697)) +* Include gpio.h in solenoid driver for GPIO Control functions ([#13716](https://github.com/qmk/qmk_firmware/pull/13716)) +* Fix pimoroni trackball read address ([#13810](https://github.com/qmk/qmk_firmware/pull/13810)) +* Fix Key Override includes ([#13831](https://github.com/qmk/qmk_firmware/pull/13831)) +* Fix alignment of USB out report buffer 2 -> 4 ([#13838](https://github.com/qmk/qmk_firmware/pull/13838)) +* Fix compilation issue. ([#13926](https://github.com/qmk/qmk_firmware/pull/13926)) +* Fix `combo_disable` ([#13988](https://github.com/qmk/qmk_firmware/pull/13988)) +* Fix pmw3360 code to only output debug info if mouse debugging is enabled ([#13993](https://github.com/qmk/qmk_firmware/pull/13993)) +* Fix ifdefs for OLED split sync code ([#14017](https://github.com/qmk/qmk_firmware/pull/14017)) +* Various fixes from reorg of files ([#14051](https://github.com/qmk/qmk_firmware/pull/14051)) +* Fixup atsam builds. ([#14052](https://github.com/qmk/qmk_firmware/pull/14052)) +* Fix RGB/LED Matrix Suspend code ([#14084](https://github.com/qmk/qmk_firmware/pull/14084)) +* Fix issues with recent keymap.json changes ([#14089](https://github.com/qmk/qmk_firmware/pull/14089)) +* Fix LED Matrix suspend code ([#14090](https://github.com/qmk/qmk_firmware/pull/14090)) +* Fix up compilation issues. ([#14095](https://github.com/qmk/qmk_firmware/pull/14095)) +* Fix copypasta issue with pmw3360 sensor config ([#14106](https://github.com/qmk/qmk_firmware/pull/14106)) +* Fix typo ([#14118](https://github.com/qmk/qmk_firmware/pull/14118)) +* Fix bootloadHID comments breaking :flash ([#14133](https://github.com/qmk/qmk_firmware/pull/14133)) +* Fix Mouse Shared EP functionality ([#14136](https://github.com/qmk/qmk_firmware/pull/14136)) +* Short term bodge for firmware size bloat ([#14144](https://github.com/qmk/qmk_firmware/pull/14144)) +* Move to correct location ([#14171](https://github.com/qmk/qmk_firmware/pull/14171)) diff --git a/docs/ChangeLog/20211127.md b/docs/ChangeLog/20211127.md new file mode 100644 index 000000000000..d954bb9f6190 --- /dev/null +++ b/docs/ChangeLog/20211127.md @@ -0,0 +1,457 @@ +# QMK Breaking Changes - 2021 November 27 Changelog + +## 2000 keyboards! :id=qmk-2000th-keyboard + +QMK had it's 2000th keyboard submitted during this breaking changes cycle.... and it only _just_ made the cut-off! + +```shell +% qmk list-keyboards | wc -l +2003 +``` + +From the whole QMK team, a major thankyou to the community for embracing QMK as your preferred keyboard firmware! + +## Notable Features :id=notable-features + +### Expanded Pointing Device support ([#14343](https://github.com/qmk/qmk_firmware/pull/14343)) :id=expanded-pointing-device + +Pointing device support has been reworked and reimplemented to allow for easier integration of new peripherals. + +Usages of `POINTING_DEVICE_ENABLE = yes` in `rules.mk` files now need to be accompanied by a corresponding `POINTING_DEVICE_DRIVER = ???` line, specifying which driver to use during the build. Existing keyboards have already been migrated across to the new usage pattern, so most likely no change is required by users. + +QMK now has core-supplied support for the following pointing device peripherals: + +| `rules.mk` line | Supported device | +|------------------------------------------------|-----------------------------------------| +| `POINTING_DEVICE_DRIVER = analog_joystick` | Analog joysticks, such as PSP joysticks | +| `POINTING_DEVICE_DRIVER = adns5050` | ADNS 5050 sensor | +| `POINTING_DEVICE_DRIVER = adns9800` | ADNS 9800 laser sensor | +| `POINTING_DEVICE_DRIVER = cirque_pinnacle_i2c` | Cirque touchpad, I2C mode | +| `POINTING_DEVICE_DRIVER = cirque_pinnacle_spi` | Cirque Touchpad, SPI mode | +| `POINTING_DEVICE_DRIVER = pimoroni_trackball` | Pimoroni Trackball | +| `POINTING_DEVICE_DRIVER = pmw3360` | PMW 3360 | + +See the new documentation for the [Pointing Device](../feature_pointing_device.md) feature for more information on specific configuration for each driver. + +### Dynamic Tapping Term ([#11036](https://github.com/qmk/qmk_firmware/pull/11036)) :id=dynamic-tapping-term + +For people who are starting out with tapping keys, or for people who think tapping keys don't "feel right", it's sometimes quite difficult to determine what duration of tapping term to use to make things seem natural. + +If you're in this stage of discovery, you can now add `DYNAMIC_TAPPING_TERM_ENABLE = yes` to your `rules.mk`, which enables the use of the following keycodes in your keymap: + +| Key | Description | +|-----------|-------------------------------------------------------------------------------| +| `DT_PRNT` | "Dynamic Tapping Term Print": Types the current tapping term, in milliseconds | +| `DT_UP` | "Dynamic Tapping Term Up": Increases the current tapping term by 5ms | +| `DT_DOWN` | "Dynamic Tapping Term Down": Decreases the current tapping term by 5ms | + +Coupled with the use of `qmk console` or QMK Toolbox to show console output from your keyboard, you can tweak the tapping term dynamically in order to narrow down what "feels right" to you. Once you're happy, drop in the resulting number into your keymap's `config.h` and you're good to go! + +### Macros in JSON keymaps ([#14374](https://github.com/qmk/qmk_firmware/pull/14374)) :id=macros-in-keymap-json + +You can now define up to 32 macros in your `keymap.json` file, as used by [QMK Configurator](newbs_building_firmware_configurator.md), and `qmk compile`. You can define these macros in a list under the `macros` keyword, like this: + +```json +{ + "keyboard": "handwired/my_macropad", + "keymap": "my_keymap", + "macros": [ + [ // first listed is MACRO_0... + {"action":"down", "keycodes": ["LSFT"]}, + "hello world1", + {"action": "up","keycodes": ["LSFT"]} + ], + [ // ...then MACRO_1... + {"action":"tap", "keycodes": ["LCTL", "LALT", "DEL"]} + ], + [ // ...then MACRO_2... + "ding!", + {"action":"beep"} + ], + [ // ...and MACRO_3. + {"action":"tap", "keycodes": ["F1"]}, + {"action":"delay", "duration": "1000"}, + {"action":"tap", "keycodes": ["PGDN"]} + ] + ], + "layout": "LAYOUT_all", + "layers": [ + ["MACRO_0", "MACRO_1", "MACRO_2", "MACRO_3"] + ] +} +``` + +In due course, [QMK Configurator](https://config.qmk.fm/) will pick up support for defining these in its UI, but for now the json is the only way to define macros. + +## Changes Requiring User Action :id=changes-requiring-user-action + +### Updated Keyboard Codebases :id=updated-keyboard-codebases + +The following keyboards have had their source moved within QMK: + +| Old Keyboard Name | New Keyboard Name | +|------------------------|---------------------------------| +| aozora/hotswap | aozora | +| gskt00 | kapcave/gskt00 | +| handwired/dtisaac01 | dtisaac/dtisaac01 | +| kprepublic/bm60poker | kprepublic/bm60hsrgb_poker/rev1 | +| kprepublic/bm60rgb | kprepublic/bm60hsrgb/rev1 | +| kprepublic/bm60rgb_iso | kprepublic/bm60hsrgb_iso/rev1 | +| kprepublic/bm65iso | kprepublic/bm65hsrgb_iso | +| kprepublic/bm68rgb | kprepublic/bm68hsrgb | +| paladin64 | kapcave/paladin64 | +| portal_66 | portal_66/soldered | +| signum/3_0/elitec | signum/3_0 | +| tgr/jane | tgr/jane/v2 | + +### Squeezing space out of AVR ([#15243](https://github.com/qmk/qmk_firmware/pull/15243)) :id=squeezing-space-from-avr + +The AVR platform has been problematic for some time, in the sense that it is severely resource-constrained -- this makes life difficult for anyone attempting to add new functionality such as display panels to their keymap code. The illustrious Drashna has contributed some newer documentation on how to attempt to free up some space on AVR-based keyboards that are in short supply. + +Of course, there are much fewer constraints with ARM chips... ;) + +### Require explicit enabling of RGB Matrix modes ([#15018](https://github.com/qmk/qmk_firmware/pull/15018)) :id=explicit-rgb-modes + +Related to the previous section -- RGB Matrix modes have now been made to be opt-in, rather than opt-out. As these animations are now opt-in, you may find that your keyboard no longer has all the RGB modes you're expecting -- you may need to configure and recompile your firmware and enable your animations of choice... with any luck they'll still fit in the space available. + +Most keyboards keep their original functionality, but over time the QMK maintainers have found that removal of animations ends up being the quickest way to free up space... and some keyboards have had animations such as reactive effects disabled by default in order to still fit within the flash space available. + +The full list of configurables to turn specific animations back on can be found at on the [RGB Matrix documentation](feature_rgb_matrix.md#rgb-matrix-effects) page. + +### OLED task refactoring ([#14864](https://github.com/qmk/qmk_firmware/pull/14864)) :id=oled-task-refactor + +OLED display code was traditionally difficult to override in keymaps as they did not follow the standard pattern of `bool *_kb()` deferring to `bool *_user()` functions, allowing signalling to the higher level that processing had already been done. + +This changes the standard OLED drawing function model to allow for a base implementation to be provided by a keyboard, but also still allow for keymap-level overrides without needing to modify the keyboard's code. + +The old keymap code went something like this: + +```c +void oled_task_user(void) { + // keymap drawing code +} +``` + +...but the new keymap code looks like this: +```c +bool oled_task_user(void) { + // keymap drawing code + return false; +} +``` + +Keyboard designers should now structure their keyboard-level drawing routines like the following, in order to allow for keymap overrides: + +```c +bool oled_task_kb(void) { + // Defer to the keymap if they want to override + if(!oled_task_user()) { return false; } + + // default keyboard drawing code + return false; +} +``` + +### Bootmagic Full Removal ([#15002](https://github.com/qmk/qmk_firmware/pull/15002)) :id=bootmagic-full-removal + +As noted during previous breaking changes cycles, QMK decided to deprecate the full Bootmagic feature and leave Bootmagic Lite as the only remaining option. + +This removal is now complete! + +This pull request changes the behavior of `BOOTMAGIC_ENABLE` such that specifying `lite` or `full` results in an error, allowing only `yes` or `no`, with `yes` mirroring historical `lite` functionality. + +All use of the `lite` keyword within the repository has been migrated to `yes` -- any new submissions using `lite` will now fail to build and should be updated accordingly. + +#### Bootmagic Full Deprecation Schedule: Complete! + +This is the historical timeline for the behavior of `BOOTMAGIC_ENABLE`: + +- (done) From 2021 May 29, setting `BOOTMAGIC_ENABLE = yes` will enable Bootmagic Lite instead of full Bootmagic. +- (done) From 2021 Aug 28, `BOOTMAGIC_ENABLE` must be either `yes`, `lite`, or `no` – setting `BOOTMAGIC_ENABLE = full` will cause compilation to fail. +- (now) From 2021 Nov 27, `BOOTMAGIC_ENABLE` must be either `yes` or `no` – setting `BOOTMAGIC_ENABLE = lite` will cause compilation to fail. + +### Remove QWIIC_DRIVERS ([#14174](https://github.com/qmk/qmk_firmware/pull/14174)) :id=remove-qwiic + +Due to minimal QWIIC adoption and other options for similar functionality, the QWIIC drivers were removed from QMK. Existing OLED usages have been migrated across to the normal QMK OLED driver instead. + +## Notable core changes :id=notable-core + +### New MCU Support :id=new-mcu-support + +QMK firmware picked up support for a handful of new MCU families, potentially making it a bit easier to source components. + +QMK firmware is now no longer limited to AVR and ARM - it also picked up support for our first RISC-V chip, the GD32VF103. + +* Add support for RISC-V builds and GD32VF103 MCU ([#12508](https://github.com/qmk/qmk_firmware/pull/12508)) +* Add HT32 support to core ([#14388](https://github.com/qmk/qmk_firmware/pull/14388)) +* Westberrytech pr ([#14422](https://github.com/qmk/qmk_firmware/pull/14422)) +* Initial pass of F405 support ([#14584](https://github.com/qmk/qmk_firmware/pull/14584)) + +### EEPROM Changes :id=eeprom-changes + +There were a few EEPROM-related changes that landed during this breaking changes cycle, most prominently the long-awaited ability for the Drop boards to gain persistent storage. Any users of the Drop CTRL or Drop ALT should update QMK Toolbox as well -- coupled with a QMK firmware update settings should now be saved. + +* massdrop alt/ctrl: support saving into nvm ([#6068](https://github.com/qmk/qmk_firmware/pull/6068)) +* Implement F4 eeprom ([#14195](https://github.com/qmk/qmk_firmware/pull/14195)) +* make the full 4096 bytes of EEPROM work on Teensy 3.6 ([#12947](https://github.com/qmk/qmk_firmware/pull/12947)) +* Further tidy up of STM32 eeprom emulation ([#14591](https://github.com/qmk/qmk_firmware/pull/14591)) +* Enable eeprom with F401xE ld ([#14752](https://github.com/qmk/qmk_firmware/pull/14752)) + +### Compilation Database :id=compile-commands + +A clang-compatible compilation database generator has been added as an option in order to help development environments such as Visual Studio Code. + +Running `qmk generate-compilation-database -kb -km ` from within the QMK firmware directory will generate a `compile_commands.json` file -- using a compatible IDE will likely see this and correctly start detecting the correct locations for source files as well as type and function information that are relevant to your build. + +Do note that switching keyboards will require re-generation of this file. + +* New CLI subcommand to create clang-compatible compilation database (`compile_commands.json`) ([#14370](https://github.com/qmk/qmk_firmware/pull/14370)) +* compiledb: query include paths from gcc directly. ([#14462](https://github.com/qmk/qmk_firmware/pull/14462)) + +### Codebase restructure and cleanup :id=codebase-restructure + +QMK continues on its restructuring journey, in order to make it easier to integrate newer features and add support for new hardware. This quarter's batch of changes include: + +* add 'include keyboard_features.mk' into build_keyboard.mk ([#8422](https://github.com/qmk/qmk_firmware/pull/8422)) +* Infer more when building features ([#13890](https://github.com/qmk/qmk_firmware/pull/13890)) +* Move `tmk_core/common/` ([#13918](https://github.com/qmk/qmk_firmware/pull/13918)) +* Move feature suspend logic out of platform specific code ([#14210](https://github.com/qmk/qmk_firmware/pull/14210)) +* Remove bin/qmk ([#14231](https://github.com/qmk/qmk_firmware/pull/14231)) +* Move Audio drivers from quantum to platform drivers folder ([#14308](https://github.com/qmk/qmk_firmware/pull/14308)) +* Remove Arduino-style `analogRead()` ([#14348](https://github.com/qmk/qmk_firmware/pull/14348)) +* Remove unreferenced IBM4704, Sony NEWS, NeXT keyboard code. ([#14380](https://github.com/qmk/qmk_firmware/pull/14380)) +* Move Bluetooth config to common_features.mk ([#14404](https://github.com/qmk/qmk_firmware/pull/14404)) +* Relocate Adafruit BLE code ([#14530](https://github.com/qmk/qmk_firmware/pull/14530)) +* Change `MK66F18` -> `MK66FX1M0` ([#14659](https://github.com/qmk/qmk_firmware/pull/14659)) +* Remove sysex API ([#14723](https://github.com/qmk/qmk_firmware/pull/14723)) +* Basic keycode overhaul ([#14726](https://github.com/qmk/qmk_firmware/pull/14726)) +* Remove SERIAL_LINK feature ([#14727](https://github.com/qmk/qmk_firmware/pull/14727)) +* Move converter specific tmk_core protocols ([#14743](https://github.com/qmk/qmk_firmware/pull/14743)) +* Align PS/2 GPIO defines ([#14745](https://github.com/qmk/qmk_firmware/pull/14745)) +* Clean up LED/RGB Matrix driver config ([#14760](https://github.com/qmk/qmk_firmware/pull/14760)) +* Update UART driver API ([#14839](https://github.com/qmk/qmk_firmware/pull/14839)) +* Tidy up LCD_ENABLE/visualizer references ([#14855](https://github.com/qmk/qmk_firmware/pull/14855)) +* Remove legacy Makefile functionality ([#14858](https://github.com/qmk/qmk_firmware/pull/14858)) +* Begin to carve out platform/protocol API - Migrate keyboard_* calls ([#14888](https://github.com/qmk/qmk_firmware/pull/14888)) +* Rename platform SRC variable ([#14894](https://github.com/qmk/qmk_firmware/pull/14894)) +* Relocate PS2 code ([#14895](https://github.com/qmk/qmk_firmware/pull/14895)) +* Move USE_CCACHE logic to common location ([#14899](https://github.com/qmk/qmk_firmware/pull/14899)) +* Migrate makefile utilities to sub-directory ([#14917](https://github.com/qmk/qmk_firmware/pull/14917)) +* Remove SERIAL_MOUSE ([#14969](https://github.com/qmk/qmk_firmware/pull/14969)) +* Relocate protocol files within tmk_core/common/ ([#14972](https://github.com/qmk/qmk_firmware/pull/14972)) +* More platform/protocol alignment ([#14976](https://github.com/qmk/qmk_firmware/pull/14976)) +* Fix uart function prototypes ([#15162](https://github.com/qmk/qmk_firmware/pull/15162)) +* Remove deprecated KEYMAP alias ([#15037](https://github.com/qmk/qmk_firmware/pull/15037)) +* Move non-assignment code to post_rules.mk ([#14207](https://github.com/qmk/qmk_firmware/pull/14207)) +* Helix use `post_rules.mk` ([#14216](https://github.com/qmk/qmk_firmware/pull/14216)) +* Make ChibiOS PAL interactions less STM32 specific - Round 2 ([#14456](https://github.com/qmk/qmk_firmware/pull/14456)) + +--- + +## Full changelist + +Core: +* massdrop alt/ctrl: support saving into nvm ([#6068](https://github.com/qmk/qmk_firmware/pull/6068)) +* Made AVR backlight pwm resolution configurable ([#7521](https://github.com/qmk/qmk_firmware/pull/7521)) +* add 'include keyboard_features.mk' into build_keyboard.mk ([#8422](https://github.com/qmk/qmk_firmware/pull/8422)) +* New feature: `DYNAMIC_TAPPING_TERM_ENABLE` ([#11036](https://github.com/qmk/qmk_firmware/pull/11036)) +* Add Retro Shift (Auto Shift for Tap Hold via Retro Tapping) and Custom Auto Shifts ([#11059](https://github.com/qmk/qmk_firmware/pull/11059)) +* Add support for RISC-V builds and GD32VF103 MCU ([#12508](https://github.com/qmk/qmk_firmware/pull/12508)) +* Add Fractal RGB matrix effects ([#12670](https://github.com/qmk/qmk_firmware/pull/12670)) +* Added power tracking api ([#12691](https://github.com/qmk/qmk_firmware/pull/12691)) +* haptic: Feature to disable it when usb port is not configured or suspended. ([#12692](https://github.com/qmk/qmk_firmware/pull/12692)) +* make the full 4096 bytes of EEPROM work on Teensy 3.6 ([#12947](https://github.com/qmk/qmk_firmware/pull/12947)) +* Add Support for USB programmable buttons ([#12950](https://github.com/qmk/qmk_firmware/pull/12950)) +* [Tests] Increase QMK test coverage ([#13789](https://github.com/qmk/qmk_firmware/pull/13789)) +* Add support for ISSI drivers on both sides of a split keyboard ([#13842](https://github.com/qmk/qmk_firmware/pull/13842)) +* Infer more when building features ([#13890](https://github.com/qmk/qmk_firmware/pull/13890)) +* Reimplements WPM feature to be smaller & precise ([#13902](https://github.com/qmk/qmk_firmware/pull/13902)) +* Move `tmk_core/common/` ([#13918](https://github.com/qmk/qmk_firmware/pull/13918)) +* Improvements to handling of disconnected split keyboards. ([#14033](https://github.com/qmk/qmk_firmware/pull/14033)) +* Add Pixel Rain RGB Matrix effect ([#14155](https://github.com/qmk/qmk_firmware/pull/14155)) +* Remove QWIIC_DRIVERS ([#14174](https://github.com/qmk/qmk_firmware/pull/14174)) +* Add LM() keys to the list of keys disabled by NO_HAPTIC_MOD ([#14181](https://github.com/qmk/qmk_firmware/pull/14181)) +* Implement F4 eeprom ([#14195](https://github.com/qmk/qmk_firmware/pull/14195)) +* define to AUTO_SHIFT_DISABLED_AT_STARTUP ([#14201](https://github.com/qmk/qmk_firmware/pull/14201)) +* Move feature suspend logic out of platform specific code ([#14210](https://github.com/qmk/qmk_firmware/pull/14210)) +* Remove bin/qmk ([#14231](https://github.com/qmk/qmk_firmware/pull/14231)) +* Change keyboard level include guards to `pragma once` ([#14248](https://github.com/qmk/qmk_firmware/pull/14248)) +* i2c_master: Add support for reading/writing to 16-bit registers ([#14289](https://github.com/qmk/qmk_firmware/pull/14289)) +* Move Audio drivers from quantum to platform drivers folder ([#14308](https://github.com/qmk/qmk_firmware/pull/14308)) +* Add RGBW support to PWM and SPI drivers for ChibiOS ([#14327](https://github.com/qmk/qmk_firmware/pull/14327)) +* Rework and expand Pointing Device support ([#14343](https://github.com/qmk/qmk_firmware/pull/14343)) +* Remove Arduino-style `analogRead()` ([#14348](https://github.com/qmk/qmk_firmware/pull/14348)) +* Macros in JSON keymaps ([#14374](https://github.com/qmk/qmk_firmware/pull/14374)) +* Remove unreferenced IBM4704, Sony NEWS, NeXT keyboard code. ([#14380](https://github.com/qmk/qmk_firmware/pull/14380)) +* Add HT32 support to core ([#14388](https://github.com/qmk/qmk_firmware/pull/14388)) +* Align ChibiOS I2C defs with other drivers ([#14399](https://github.com/qmk/qmk_firmware/pull/14399)) +* Move Bluetooth config to common_features.mk ([#14404](https://github.com/qmk/qmk_firmware/pull/14404)) +* Westberrytech pr ([#14422](https://github.com/qmk/qmk_firmware/pull/14422)) +* Refactor use of STM32_SYSCLK ([#14430](https://github.com/qmk/qmk_firmware/pull/14430)) +* Migrate STM32_EEPROM_ENABLE to use EEPROM_DRIVER ([#14433](https://github.com/qmk/qmk_firmware/pull/14433)) +* Refactor use of _STM32_ defines ([#14439](https://github.com/qmk/qmk_firmware/pull/14439)) +* Add i2c defaults for Convert to Proton C ([#14470](https://github.com/qmk/qmk_firmware/pull/14470)) +* Use opendrain pin with external pullup again ([#14474](https://github.com/qmk/qmk_firmware/pull/14474)) +* Add ability to use numpad digits for unicode mode UC_WIN ([#14496](https://github.com/qmk/qmk_firmware/pull/14496)) +* Enable de-ghosting for RGB/LED matrix on all ISSI LED drivers ([#14508](https://github.com/qmk/qmk_firmware/pull/14508)) +* Relocate Adafruit BLE code ([#14530](https://github.com/qmk/qmk_firmware/pull/14530)) +* Initial pass of F405 support ([#14584](https://github.com/qmk/qmk_firmware/pull/14584)) +* Further tidy up of STM32 eeprom emulation ([#14591](https://github.com/qmk/qmk_firmware/pull/14591)) +* Remove GCC version check from song list inclusion ([#14600](https://github.com/qmk/qmk_firmware/pull/14600)) +* Change `MK66F18` -> `MK66FX1M0` ([#14659](https://github.com/qmk/qmk_firmware/pull/14659)) +* Add ifndef to WS2812 timing constraints ([#14678](https://github.com/qmk/qmk_firmware/pull/14678)) +* Reuse of EEPROM debounce logic ([#14699](https://github.com/qmk/qmk_firmware/pull/14699)) +* Remove sysex API ([#14723](https://github.com/qmk/qmk_firmware/pull/14723)) +* Basic keycode overhaul ([#14726](https://github.com/qmk/qmk_firmware/pull/14726)) +* Remove SERIAL_LINK feature ([#14727](https://github.com/qmk/qmk_firmware/pull/14727)) +* Enable CLI flashing via mdloader ([#14729](https://github.com/qmk/qmk_firmware/pull/14729)) +* Correct the Turkish F '?' keycode (TR_QUES) ([#14740](https://github.com/qmk/qmk_firmware/pull/14740)) +* Move converter specific tmk_core protocols ([#14743](https://github.com/qmk/qmk_firmware/pull/14743)) +* Align PS/2 GPIO defines ([#14745](https://github.com/qmk/qmk_firmware/pull/14745)) +* Improve Adafruit BLE configuration defines ([#14749](https://github.com/qmk/qmk_firmware/pull/14749)) +* Enable eeprom with F401xE ld ([#14752](https://github.com/qmk/qmk_firmware/pull/14752)) +* Clean up LED/RGB Matrix driver config ([#14760](https://github.com/qmk/qmk_firmware/pull/14760)) +* Initial USB2422 driver ([#14835](https://github.com/qmk/qmk_firmware/pull/14835)) +* Update UART driver API ([#14839](https://github.com/qmk/qmk_firmware/pull/14839)) +* Split out arm_atsam shift register logic ([#14848](https://github.com/qmk/qmk_firmware/pull/14848)) +* Split out HAPTIC_ENABLE to have separate DRIVER option ([#14854](https://github.com/qmk/qmk_firmware/pull/14854)) +* Tidy up LCD_ENABLE/visualizer references ([#14855](https://github.com/qmk/qmk_firmware/pull/14855)) +* Remove legacy Makefile functionality ([#14858](https://github.com/qmk/qmk_firmware/pull/14858)) +* Add support for deferred executors. ([#14859](https://github.com/qmk/qmk_firmware/pull/14859)) +* Change OLED task function to be boolean ([#14864](https://github.com/qmk/qmk_firmware/pull/14864)) +* Add a new led driver for Keychron's keyboards. ([#14872](https://github.com/qmk/qmk_firmware/pull/14872)) +* Begin to carve out platform/protocol API - Migrate keyboard_* calls ([#14888](https://github.com/qmk/qmk_firmware/pull/14888)) +* Rename platform SRC variable ([#14894](https://github.com/qmk/qmk_firmware/pull/14894)) +* Relocate PS2 code ([#14895](https://github.com/qmk/qmk_firmware/pull/14895)) +* Move USE_CCACHE logic to common location ([#14899](https://github.com/qmk/qmk_firmware/pull/14899)) +* Migrate makefile utilities to sub-directory ([#14917](https://github.com/qmk/qmk_firmware/pull/14917)) +* Remove legacy handling for ErgoDox Infinity handedness ([#14919](https://github.com/qmk/qmk_firmware/pull/14919)) +* Align usbasp flashing behaviour ([#14928](https://github.com/qmk/qmk_firmware/pull/14928)) +* Optimize matrix scanning by removing variable shifts ([#14947](https://github.com/qmk/qmk_firmware/pull/14947)) +* Stop-gap forward-port Drop LED features for CTRL and ALT ([#14967](https://github.com/qmk/qmk_firmware/pull/14967)) +* Remove SERIAL_MOUSE ([#14969](https://github.com/qmk/qmk_firmware/pull/14969)) +* Relocate protocol files within tmk_core/common/ ([#14972](https://github.com/qmk/qmk_firmware/pull/14972)) +* Move LTO logic from common.mk ([#14973](https://github.com/qmk/qmk_firmware/pull/14973)) +* More platform/protocol alignment ([#14976](https://github.com/qmk/qmk_firmware/pull/14976)) +* Add support to persist MD LED framework settings ([#14980](https://github.com/qmk/qmk_firmware/pull/14980)) +* Enable configuration of PWM frequency for IS31FL3733B ([#14983](https://github.com/qmk/qmk_firmware/pull/14983)) +* Remove `BOOTMAGIC_ENABLE = lite` option ([#15002](https://github.com/qmk/qmk_firmware/pull/15002)) +* Manually format develop ([#15003](https://github.com/qmk/qmk_firmware/pull/15003)) +* Require explicit enabling of RGB Matrix modes ([#15018](https://github.com/qmk/qmk_firmware/pull/15018)) +* Remove deprecated KEYMAP alias ([#15037](https://github.com/qmk/qmk_firmware/pull/15037)) +* Fix uart function prototypes ([#15162](https://github.com/qmk/qmk_firmware/pull/15162)) +* Rename RGB fractal ([#15174](https://github.com/qmk/qmk_firmware/pull/15174)) +* Format code according to conventions ([#15195](https://github.com/qmk/qmk_firmware/pull/15195)) +* Format code according to conventions ([#15196](https://github.com/qmk/qmk_firmware/pull/15196)) +* Add uint to char functions ([#15244](https://github.com/qmk/qmk_firmware/pull/15244)) +* [Tests] Increase QMK test coverage take 2 ([#15269](https://github.com/qmk/qmk_firmware/pull/15269)) +* Tidy up adjustable ws2812 timing ([#15299](https://github.com/qmk/qmk_firmware/pull/15299)) +* Add script for performing compilation size regression investigations. ([#15303](https://github.com/qmk/qmk_firmware/pull/15303)) +* WB32F3G71 config migration with removal of unnecessary items. ([#15309](https://github.com/qmk/qmk_firmware/pull/15309)) +* Re-add encoder tests ([#15312](https://github.com/qmk/qmk_firmware/pull/15312)) + +CLI: +* Add check for non-assignment code in rules.mk ([#12108](https://github.com/qmk/qmk_firmware/pull/12108)) +* Export list of `develop` PRs to be merged into `master` ([#13944](https://github.com/qmk/qmk_firmware/pull/13944)) +* remove qmk console, which is now part of the global cli ([#14206](https://github.com/qmk/qmk_firmware/pull/14206)) +* New CLI subcommand to create clang-compatible compilation database (`compile_commands.json`) ([#14370](https://github.com/qmk/qmk_firmware/pull/14370)) +* compiledb: query include paths from gcc directly. ([#14462](https://github.com/qmk/qmk_firmware/pull/14462)) + +Submodule updates: +* Update to ChibiOS 20.3.4, support builds against trunk ([#14208](https://github.com/qmk/qmk_firmware/pull/14208)) +* Update ChibiOS-Contrib ([#14408](https://github.com/qmk/qmk_firmware/pull/14408)) +* Update ChibiOS-Contrib ([#14419](https://github.com/qmk/qmk_firmware/pull/14419)) +* Purge uGFX. ([#14720](https://github.com/qmk/qmk_firmware/pull/14720)) + +Keyboards: +* Add support for PaladinPad, Arya pcb and move keyboards by KapCave into their own directory ([#14194](https://github.com/qmk/qmk_firmware/pull/14194)) +* Move non-assignment code to post_rules.mk ([#14207](https://github.com/qmk/qmk_firmware/pull/14207)) +* Helix use `post_rules.mk` ([#14216](https://github.com/qmk/qmk_firmware/pull/14216)) +* handwired/symmetric70_proto use post_rules.mk ([#14235](https://github.com/qmk/qmk_firmware/pull/14235)) +* Add Adelais PCB. Adelais RGB rev.3, Adelais rev. 4 APM32F103, Adelais AVR rev. 1 ([#14252](https://github.com/qmk/qmk_firmware/pull/14252)) +* GMMK Pro keymap ([#14389](https://github.com/qmk/qmk_firmware/pull/14389)) +* Migrate boston_meetup/2019 away from QWIIC_DRIVERS ([#14413](https://github.com/qmk/qmk_firmware/pull/14413)) +* Migrate hadron away from QWIIC_DRIVERS ([#14415](https://github.com/qmk/qmk_firmware/pull/14415)) +* Enable Proton C defaults for SplitKB Kyria ([#14490](https://github.com/qmk/qmk_firmware/pull/14490)) +* Set USB max power consumption of kint* controllers to 100mA ([#14546](https://github.com/qmk/qmk_firmware/pull/14546)) +* Remove complex `fn_actions` macros ([#14662](https://github.com/qmk/qmk_firmware/pull/14662)) +* New Keyboard: TGR Jane CE ([#14713](https://github.com/qmk/qmk_firmware/pull/14713)) +* Migrate satisfaction75 away from QWIIC_DRIVERS ([#14747](https://github.com/qmk/qmk_firmware/pull/14747)) +* add Lefty keyboard ([#14898](https://github.com/qmk/qmk_firmware/pull/14898)) +* overnumpad controller: Add support for turning off solenoid enable in low power. ([#15021](https://github.com/qmk/qmk_firmware/pull/15021)) +* Reduce compile size for melgeek mach80 ([#15034](https://github.com/qmk/qmk_firmware/pull/15034)) +* Update updated KPrepublic boards to be prepared for the update ([#15040](https://github.com/qmk/qmk_firmware/pull/15040)) +* rename kprepublic bm keyboards to have a standardized naming format ([#15047](https://github.com/qmk/qmk_firmware/pull/15047)) +* matrix/abelx - Update ChibiOS conf files ([#15130](https://github.com/qmk/qmk_firmware/pull/15130)) +* Disable console on Keebio foldkb and iris rev3 ([#15260](https://github.com/qmk/qmk_firmware/pull/15260)) +* Disable console on Sofle default keymap ([#15261](https://github.com/qmk/qmk_firmware/pull/15261)) +* Disable features on SplitKB boards to fit under size ([#15262](https://github.com/qmk/qmk_firmware/pull/15262)) +* Enable LTO on viktus/sp_mini via keymap ([#15263](https://github.com/qmk/qmk_firmware/pull/15263)) + +Keyboard fixes: +* Fix number of elements in info.json does not match errors ([#14213](https://github.com/qmk/qmk_firmware/pull/14213)) +* Fix typos from 14248 ([#14261](https://github.com/qmk/qmk_firmware/pull/14261)) +* Stream cheap via fixes/updates ([#14325](https://github.com/qmk/qmk_firmware/pull/14325)) +* Map `PRODUCT` define to `keyboard_name` ([#14372](https://github.com/qmk/qmk_firmware/pull/14372)) +* Fix BT rules for dosa40rgb ([#14497](https://github.com/qmk/qmk_firmware/pull/14497)) +* Fix typo in mechloving adelais header files ([#14590](https://github.com/qmk/qmk_firmware/pull/14590)) +* Fix for mechlovin/adelais/standard_led/arm/rev4 ([#14639](https://github.com/qmk/qmk_firmware/pull/14639)) +* Fix OLED timeout on recent qwiic migrations ([#14775](https://github.com/qmk/qmk_firmware/pull/14775)) +* Fix OLED timeout on satisfaction75 after migration from QWIIC ([#14780](https://github.com/qmk/qmk_firmware/pull/14780)) +* Fix Compile issues for lefty ([#14982](https://github.com/qmk/qmk_firmware/pull/14982)) +* Fix missing return for oled task on Lefty ([#15010](https://github.com/qmk/qmk_firmware/pull/15010)) +* Fix missing return for oled task on Arabica37 ([#15011](https://github.com/qmk/qmk_firmware/pull/15011)) +* Fix missing return for oled task in drashna userspace ([#15012](https://github.com/qmk/qmk_firmware/pull/15012)) +* Fix size issues on pistachio pro via keymap ([#15017](https://github.com/qmk/qmk_firmware/pull/15017)) +* Fix keycode collision in craftwalk keymap ([#15055](https://github.com/qmk/qmk_firmware/pull/15055)) +* Fix compilation issues for yanghu Unicorne ([#15068](https://github.com/qmk/qmk_firmware/pull/15068)) +* Fixup broken build after #15040 ([#15073](https://github.com/qmk/qmk_firmware/pull/15073)) +* Fix compilation issues for Lime ([#15116](https://github.com/qmk/qmk_firmware/pull/15116)) +* Fix additional board sizes for RGB Matrix ([#15170](https://github.com/qmk/qmk_firmware/pull/15170)) +* Fix bandominedoni via keymap compilation ([#15171](https://github.com/qmk/qmk_firmware/pull/15171)) +* Fix handful of boards compiling too large due to RGB matrix changes ([#15184](https://github.com/qmk/qmk_firmware/pull/15184)) +* Fix oled_task_user for ffkeebs/puca ([#15185](https://github.com/qmk/qmk_firmware/pull/15185)) +* More headroom. ([#15301](https://github.com/qmk/qmk_firmware/pull/15301)) +* More headroom. ([#15302](https://github.com/qmk/qmk_firmware/pull/15302)) + +Others: +* Clean up some code block languages ([#14434](https://github.com/qmk/qmk_firmware/pull/14434)) +* Clarify "nested" and "rolling" key sequences ([#14655](https://github.com/qmk/qmk_firmware/pull/14655)) +* CI: Create GitHub Actions unit test workflow ([#15223](https://github.com/qmk/qmk_firmware/pull/15223)) +* Squeezing space out of AVR ([#15243](https://github.com/qmk/qmk_firmware/pull/15243)) + +Bugs: +* Fix parallel builds w/ LTO on systems where make is not GNU make. ([#13955](https://github.com/qmk/qmk_firmware/pull/13955)) +* fix automatic directory for qmk lint ([#14215](https://github.com/qmk/qmk_firmware/pull/14215)) +* RN42 Bluetooth typo fix ([#14421](https://github.com/qmk/qmk_firmware/pull/14421)) +* fix typo in backlight code from #14439 ([#14442](https://github.com/qmk/qmk_firmware/pull/14442)) +* fix compilation issues with USB programmable buttons ([#14454](https://github.com/qmk/qmk_firmware/pull/14454)) +* Fix descriptor for USB Programmable Buttons ([#14455](https://github.com/qmk/qmk_firmware/pull/14455)) +* Make ChibiOS PAL interactions less STM32 specific - Round 2 ([#14456](https://github.com/qmk/qmk_firmware/pull/14456)) +* fix logical minimum in Programmable Button rdesc ([#14464](https://github.com/qmk/qmk_firmware/pull/14464)) +* Fix i2c_readReg16 ([#14730](https://github.com/qmk/qmk_firmware/pull/14730)) +* Put back eeconfig_update_ functions ([#14751](https://github.com/qmk/qmk_firmware/pull/14751)) +* Fix misplaced endif in led_matrix_drivers.c ([#14785](https://github.com/qmk/qmk_firmware/pull/14785)) +* Fix builds for ChibiOS + Cortex-M0[+] ([#14879](https://github.com/qmk/qmk_firmware/pull/14879)) +* Fix ccache default ([#14906](https://github.com/qmk/qmk_firmware/pull/14906)) +* Fix issues with Oneshot disabling ([#14934](https://github.com/qmk/qmk_firmware/pull/14934)) +* Fix develop after recent changes ([#14975](https://github.com/qmk/qmk_firmware/pull/14975)) +* Fix up issues shown by clang-format of vusb ([#15004](https://github.com/qmk/qmk_firmware/pull/15004)) +* Fix unterminated ifdef in ISSI 3733 driver ([#15014](https://github.com/qmk/qmk_firmware/pull/15014)) +* Fix build failures caused by #12947. ([#15019](https://github.com/qmk/qmk_firmware/pull/15019)) +* Fixup LED matrix. ([#15020](https://github.com/qmk/qmk_firmware/pull/15020)) +* Revert to old init order for host driver ([#15029](https://github.com/qmk/qmk_firmware/pull/15029)) +* Fixup #15029 ([#15031](https://github.com/qmk/qmk_firmware/pull/15031)) +* RISC-V toolchain and picolibc fixes ([#15109](https://github.com/qmk/qmk_firmware/pull/15109)) +* gcc10 LTO - Only specify adhlns assembler options at link time ([#15115](https://github.com/qmk/qmk_firmware/pull/15115)) +* Add needed include to pointing_device.c ([#15167](https://github.com/qmk/qmk_firmware/pull/15167)) +* Fix missing variable for Backlight Breathing ([#15199](https://github.com/qmk/qmk_firmware/pull/15199)) +* Revert backlight pins on function call ([#15205](https://github.com/qmk/qmk_firmware/pull/15205)) +* Fix timer include in override_wiring.c ([#15221](https://github.com/qmk/qmk_firmware/pull/15221)) +* fix broken macro in transport.h ([#15239](https://github.com/qmk/qmk_firmware/pull/15239)) +* Short term bodge for PRODUCT warning ([#15240](https://github.com/qmk/qmk_firmware/pull/15240)) +* Remove use of __flash due to LTO issues ([#15268](https://github.com/qmk/qmk_firmware/pull/15268)) +* Documentation typo fix ([#15298](https://github.com/qmk/qmk_firmware/pull/15298)) +* [Core] Hotfix for HOLD_ON_OTHER_KEY_PRESS after #11059 ([#15307](https://github.com/qmk/qmk_firmware/pull/15307)) +* Fix call to pointing_device_handle_buttons ([#15313](https://github.com/qmk/qmk_firmware/pull/15313)) +* [Develop] Fix ploopy readme typos ([#15316](https://github.com/qmk/qmk_firmware/pull/15316)) diff --git a/docs/_langs.md b/docs/_langs.md index f7b375fb9452..3fecd72da639 100644 --- a/docs/_langs.md +++ b/docs/_langs.md @@ -3,7 +3,7 @@ - [:cn: 中文](/zh-cn/) - [:es: Español](/es/) - [:fr: Français](/fr-fr/) - - [:he: עברית](/he-il/) + - [:israel: עברית](/he-il/) - [:brazil: Português](/pt-br/) - [:ru: Русский](/ru-ru/) - [:jp: 日本語](/ja/) diff --git a/docs/_summary.md b/docs/_summary.md index 9798ef5127d0..e26d9ae21061 100644 --- a/docs/_summary.md +++ b/docs/_summary.md @@ -13,12 +13,14 @@ * [Troubleshooting QMK](faq_misc.md) * [Debugging QMK](faq_debug.md) * [Keymap FAQ](faq_keymap.md) + * [Squeezing Space from AVR](squeezing_avr.md) * [Glossary](reference_glossary.md) * Configurator * [Overview](newbs_building_firmware_configurator.md) * [Step by Step](configurator_step_by_step.md) * [Troubleshooting](configurator_troubleshooting.md) + * [Architecture](configurator_architecture.md) * QMK API * [Overview](api_overview.md) * [API Documentation](api_docs.md) @@ -35,6 +37,7 @@ * Guides * [Customizing Functionality](custom_quantum_functions.md) * [Driver Installation with Zadig](driver_installation_zadig.md) + * [Easy Maker for One Offs](easy_maker.md) * [Keymap Overview](keymap.md) * Development Environments * [Docker Guide](getting_started_docker.md) @@ -60,6 +63,7 @@ * [Language-Specific Keycodes](reference_keymap_extras.md) * [Modifier Keys](feature_advanced_keycodes.md) * [Quantum Keycodes](quantum_keycodes.md) + * [Magic Keycodes](keycodes_magic.md) * Advanced Keycodes * [Command](feature_command.md) @@ -69,6 +73,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) @@ -77,6 +82,7 @@ * [Combos](feature_combo.md) * [Debounce API](feature_debounce_type.md) * [Key Lock](feature_key_lock.md) + * [Key Overrides](feature_key_overrides.md) * [Layers](feature_layers.md) * [One Shot Keys](one_shot_keys.md) * [Pointing Device](feature_pointing_device.md) @@ -93,6 +99,7 @@ * Hardware Features * Displays * [HD44780 LCD Controller](feature_hd44780.md) + * [ST7565 LCD Driver](feature_st7565.md) * [OLED Driver](feature_oled_driver.md) * Lighting * [Backlight](feature_backlight.md) @@ -101,8 +108,9 @@ * [RGB Matrix](feature_rgb_matrix.md) * [Audio](feature_audio.md) * [Bluetooth](feature_bluetooth.md) - * [Bootmagic](feature_bootmagic.md) + * [Bootmagic Lite](feature_bootmagic.md) * [Custom Matrix](custom_matrix.md) + * [Digitizer](feature_digitizer.md) * [DIP Switch](feature_dip_switch.md) * [Encoders](feature_encoders.md) * [Haptic Feedback](feature_haptic_feedback.md) @@ -121,7 +129,7 @@ * Breaking Changes * [Overview](breaking_changes.md) * [My Pull Request Was Flagged](breaking_changes_instructions.md) - * [Most Recent ChangeLog](ChangeLog/20210529.md "QMK v0.13.0 - 2021 May 29") + * [Most Recent ChangeLog](ChangeLog/20211127.md "QMK v0.15.0 - 2021 Nov 27") * [Past Breaking Changes](breaking_changes_history.md) * C Development diff --git a/docs/audio_driver.md b/docs/audio_driver.md index 7cd5a98d9f46..81c339007408 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 ``` -``` c +```c // mcuconf.h: #include_next #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 ``` -``` c +```c // mcuconf.h: #include_next #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 ``` -``` c +```c // mcuconf.h: #include_next #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/breaking_changes.md b/docs/breaking_changes.md index b0d56a81bd29..8bde6c88f770 100644 --- a/docs/breaking_changes.md +++ b/docs/breaking_changes.md @@ -2,10 +2,14 @@ This document describes QMK's Breaking Change process. A Breaking Change is any change which modifies how QMK behaves in a way that in incompatible or potentially dangerous. We limit these changes so that users can have confidence that updating their QMK tree will not break their keymaps. +This also includes any keyboard moves within the repository. + The breaking change period is when we will merge PR's that change QMK in dangerous or unexpected ways. There is a built-in period of testing so we are confident that any problems caused are rare or unable to be predicted. ## What has been included in past Breaking Changes? +* [2021 Nov 27](ChangeLog/20211127.md) +* [2021 Aug 28](ChangeLog/20210828.md) * [2021 May 29](ChangeLog/20210529.md) * [2021 Feb 27](ChangeLog/20210227.md) * [2020 Nov 28](ChangeLog/20201128.md) @@ -16,16 +20,17 @@ The breaking change period is when we will merge PR's that change QMK in dangero ## When is the next Breaking Change? -The next Breaking Change is scheduled for August 28, 2021. +The next Breaking Change is scheduled for February 26, 2022. ### Important Dates -* [x] 2021 May 29 - `develop` is created. Each push to `master` is subsequently merged to `develop` -* [ ] 2021 Jul 31 - `develop` closed to new PR's. -* [ ] 2021 Jul 31 - Call for testers. -* [ ] 2021 Aug 26 - `master` is locked, no PR's merged. -* [ ] 2021 Aug 28 - Merge `develop` to `master`. -* [ ] 2021 Aug 28 - `master` is unlocked. PR's can be merged again. +* [x] 2021 Nov 27 - `develop` is tagged with a new release version. Each push to `master` is subsequently merged to `develop` by GitHub actions. +* [ ] 2022 Jan 31 - `develop` closed to new PR's. +* [ ] 2022 Jan 31 - Call for testers. +* [ ] 2022 Feb 12 - Last day for merges -- after this point `develop` is locked for testing and accepts only bugfixes +* [ ] 2022 Feb 24 - `master` is locked, no PR's merged. +* [ ] 2022 Feb 26 - Merge `develop` to `master`. +* [ ] 2022 Feb 26 - `master` is unlocked. PR's can be merged again. ## What changes will be included? @@ -35,8 +40,10 @@ If you want your breaking change to be included in this round you need to create Criteria for acceptance: -* PR is complete and ready to merge -* PR has a ChangeLog +* The PR is complete and ready to merge +* The PR has a ChangeLog file describing the changes under `/docs/Changelog/20220226`. + * This should be in Markdown format, with a name in the format `PR12345.md`, substituting the digits for your PR's ID. + * One strong recommendation that the ChangeLog document matches the PR description on GitHub, so as to ensure traceability. # Checklists @@ -67,6 +74,14 @@ This happens immediately after the previous `develop` branch is merged. * [ ] GitHub PR * [ ] https://reddit.com/r/olkb +## 2 Weeks Before Merge + +* `develop` is now closed to existing PR merges, only bugfixes for previous merges may be included +* Post call for testers + * [ ] Discord + * [ ] GitHub PR + * [ ] https://reddit.com/r/olkb + ## 1 Week Before Merge * Announce that master will be closed from <2 Days Before> to @@ -93,10 +108,13 @@ This happens immediately after the previous `develop` branch is merged. * [ ] `git push upstream develop` * GitHub Actions * [ ] Create a PR for `develop` - * [ ] Make sure travis comes back clean * [ ] **Turn off 'Automatically delete head branches' for the repository** -- confirm with @qmk/directors that it is done before continuing * `qmk_firmware` git commands * [ ] `git checkout master` * [ ] `git pull --ff-only` * [ ] `git merge --no-ff develop` * [ ] `git push upstream master` + +## Post-merge operations + +* (Optional) [update ChibiOS + ChibiOS-Contrib on `develop`](chibios_upgrade_instructions.md) diff --git a/docs/breaking_changes_history.md b/docs/breaking_changes_history.md index 6ba8fe3b0674..6b1b71b1fdf3 100644 --- a/docs/breaking_changes_history.md +++ b/docs/breaking_changes_history.md @@ -2,6 +2,8 @@ This page links to all previous changelogs from the QMK Breaking Changes process. +* [2021 Nov 27](ChangeLog/20211127.md) - version 0.15.0 +* [2021 Aug 28](ChangeLog/20210828.md) - version 0.14.0 * [2021 May 29](ChangeLog/20210529.md) - version 0.13.0 * [2021 Feb 27](ChangeLog/20210227.md) - version 0.12.0 * [2020 Nov 28](ChangeLog/20201128.md) - version 0.11.0 diff --git a/docs/chibios_upgrade_instructions.md b/docs/chibios_upgrade_instructions.md new file mode 100644 index 000000000000..b0a71142a39b --- /dev/null +++ b/docs/chibios_upgrade_instructions.md @@ -0,0 +1,59 @@ +# ChibiOS Upgrade Procedure + +ChibiOS and ChibiOS-Contrib need to be updated in tandem -- the latter has a branch tied to the ChibiOS version in use and should not be mixed with different versions. + +## Getting ChibiOS + +* `svn` Initialisation: + * Only needed to be done once + * You might need to separately install `git-svn` package in your OS's package manager + * `git svn init --stdlayout --prefix='svn/' http://svn.osdn.net/svnroot/chibios/` + * `git remote add qmk git@github.com:qmk/ChibiOS.git` +* Updating: + * `git svn fetch` + * First time around this will take several hours + * Subsequent updates will be incremental only +* Tagging example (work out which version first!): + * `git tag -a ver20.3.4 -m ver20.3.4 svn/tags/ver20.3.4` + * `git push qmk ver20.3.4` + * `git tag -a develop_YYYY_qN -m develop_YYYY_qN svn/tags/ver20.3.4` + * `git push qmk develop_YYYY_qN` + +## Getting ChibiOS-Contrib + +* `git` Initialisation: + * `git clone git@github.com:qmk/ChibiOS-Contrib` + * `git remote add upstream https://github.com/ChibiOS/ChibiOS-Contrib` + * `git checkout -b chibios-20.3.x upstream/chibios-20.3.x` +* Updating: + * `git fetch --all --tags --prune` + * `git checkout chibios-20.3.x` + * `git pull --ff-only` + * `git push origin chibios-20.3.x` + * `git tag -a develop_YYYY_qN -m develop_YYYY_qN chibios-20.3.x` + * `git push origin develop_YYYY_qN` + +## Updating submodules + +* Update the submodules + * `cd $QMK_FIRMWARE` + * `git checkout develop` + * `git pull --ff-only` + * `git checkout -b chibios-version-bump` + * `cd lib/chibios` + * `git fetch --all --tags --prune` + * `git checkout develop_YYYY_qN` + * `cd ../chibios-contrib` + * `git fetch --all --tags --prune` + * `git checkout develop_YYYY_qN` +* Update ChibiOS configs within QMK + * `cd $QMK_FIRMWARE` + * `./util/chibios_conf_updater.sh` +* Build everything + * `cd $QMK_FIRMWARE` + * `qmk multibuild -j4` + * Make sure there are no errors +* Push to the repo + * `git commit -am 'Update ChibiOS to 99.9.9'` + * `git push --set-upstream origin chibios-version-bump` +* Make a PR to qmk_firmware with the new branch diff --git a/docs/cli_commands.md b/docs/cli_commands.md index 581342093a99..520da06c41bc 100644 --- a/docs/cli_commands.md +++ b/docs/cli_commands.md @@ -17,7 +17,7 @@ qmk compile [-c] **Usage for Keymaps**: ``` -qmk compile [-c] [-e =] -kb -km +qmk compile [-c] [-e =] [-j ] -kb -km ``` **Usage in Keyboard Directory**: @@ -73,6 +73,17 @@ $ qmk compile -kb dz60 ... ``` +**Parallel Compilation**: + +It is possible to speed up compilation by adding the `-j`/`--parallel` flag. +``` +qmk compile -j -kb +``` +The `num_jobs` argument determines the maximum number of jobs that can be used. Setting it to zero will enable parallel compilation without limiting the maximum number of jobs. +``` +qmk compile -j 0 -kb +``` + ## `qmk flash` This command is similar to `qmk compile`, but can also target a bootloader. The bootloader is optional, and is set to `:flash` by default. To specify a different bootloader, use `-bl `. Visit the [Flashing Firmware](flashing.md) guide for more details of the available bootloaders. @@ -82,13 +93,13 @@ This command is directory aware. It will automatically fill in KEYBOARD and/or K **Usage for Configurator Exports**: ``` -qmk flash [-bl ] [-c] [-e =] +qmk flash [-bl ] [-c] [-e =] [-j ] ``` **Usage for Keymaps**: ``` -qmk flash -kb -km [-bl ] [-c] [-e =] +qmk flash -kb -km [-bl ] [-c] [-e =] [-j ] ``` **Listing the Bootloaders** @@ -107,9 +118,23 @@ 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 cd` + +This command opens a new shell in your `qmk_firmware` directory. + +Note that if you are already somewhere within `QMK_HOME` (for example, the `keyboards/` folder), nothing will happen. + +To exit out into the parent shell, simply type `exit`. + +**Usage**: + +``` +qmk cd +``` + ## `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_ENABLED=yes`. +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**: @@ -280,12 +305,12 @@ qmk list-keymaps -kb planck/ez This command creates a new keyboard based on available templates. -This command will prompt for input to guide you though the generation process. +Any arguments that are not provided will prompt for input. If `-u` is not passed and `user.name` is set in .gitconfig, it will be used as the default username in the prompt. **Usage**: ``` -qmk new-keyboard +qmk new-keyboard [-kb KEYBOARD] [-t {avr,ps2avrgb}] -u USERNAME ``` ## `qmk new-keymap` @@ -314,7 +339,18 @@ qmk clean [-a] # Developer Commands -## `qmk cformat` +## `qmk format-text` + +This command formats text files to have proper line endings. + +Every text file in the repository needs to have Unix (LF) line ending. +If you are working on **Windows**, you must ensure that line endings are corrected in order to get your PRs merged. + +``` +qmk format-text +``` + +## `qmk format-c` This command formats C code using clang-format. @@ -325,35 +361,65 @@ Run it with `-a` to format all core code, or pass filenames on the command line **Usage for specified files**: ``` -qmk cformat [file1] [file2] [...] [fileN] +qmk format-c [file1] [file2] [...] [fileN] ``` **Usage for all core files**: ``` -qmk cformat -a +qmk format-c -a ``` **Usage for only changed files against origin/master**: ``` -qmk cformat +qmk format-c ``` **Usage for only changed files against branch_name**: ``` -qmk cformat -b branch_name +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. +Use the `-b`/`--browser` flag to automatically open the local webserver in your default browser. + +This command runs `docsify serve` if `docsify-cli` is installed (which provides live reload), otherwise Python's builtin HTTP server module will be used. **Usage**: ``` -qmk docs [-p PORT] +qmk docs [-b] [-p PORT] ``` ## `qmk generate-docs` @@ -368,7 +434,7 @@ qmk generate-docs ## `qmk generate-rgb-breathe-table` -This command generates a lookup table (LUT) header file for the [RGB Lighting](feature_rgblight.md) feature's breathing animation. Place this file in your keyboard or keymap directory as `rgblight_breathe_table.h` to override the default LUT in `quantum/`. +This command generates a lookup table (LUT) header file for the [RGB Lighting](feature_rgblight.md) feature's breathing animation. Place this file in your keyboard or keymap directory as `rgblight_breathe_table.h` to override the default LUT in `quantum/rgblight/`. **Usage**: @@ -398,14 +464,14 @@ $ qmk kle2json -f kle.txt -f Ψ Wrote out to info.json ``` -## `qmk pyformat` +## `qmk format-python` This command formats python code in `qmk_firmware`. **Usage**: ``` -qmk pyformat +qmk format-python ``` ## `qmk pytest` diff --git a/docs/cli_development.md b/docs/cli_development.md index 07c8f281bac4..62be3b3d8c42 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 ``` @@ -188,7 +188,7 @@ cli.log.info('Reading from %s and writing to %s', cli.args.filename, cli.args.ou # Testing, and Linting, and Formatting (oh my!) -We use nose2, flake8, and yapf to test, lint, and format code. You can use the `pytest` and `pyformat` subcommands to run these tests: +We use nose2, flake8, and yapf to test, lint, and format code. You can use the `pytest` and `format-py` subcommands to run these tests: ### Testing and Linting @@ -196,7 +196,7 @@ We use nose2, flake8, and yapf to test, lint, and format code. You can use the ` ### Formatting - qmk pyformat + qmk format-py ## Formatting Details diff --git a/docs/cli_tab_complete.md b/docs/cli_tab_complete.md index 2217d4fd3bc6..200477624ed9 100644 --- a/docs/cli_tab_complete.md +++ b/docs/cli_tab_complete.md @@ -18,7 +18,7 @@ If you put `qmk_firmware` into another location you will need to adjust this pat If you want the tab completion available to all users of the system you can add a symlink to the `qmk_tab_complete.sh` script: - `ln -s ~/qmk_firmware/util/qmk_tab_complete.sh /etc/profile.d/qmk_tab_complete.sh` + ln -s ~/qmk_firmware/util/qmk_tab_complete.sh /etc/profile.d/qmk_tab_complete.sh ### System Wide Copy diff --git a/docs/coding_conventions_python.md b/docs/coding_conventions_python.md index 47dff7f8eea0..960b9cb49e95 100644 --- a/docs/coding_conventions_python.md +++ b/docs/coding_conventions_python.md @@ -2,7 +2,7 @@ Most of our style follows PEP8 with some local modifications to make things less nit-picky. -* We target Python 3.6 for compatability with all supported platforms. +* We target Python 3.7 for compatability with all supported platforms. * We indent using four (4) spaces (soft tabs) * We encourage liberal use of comments * Think of them as a story describing the feature diff --git a/docs/compatible_microcontrollers.md b/docs/compatible_microcontrollers.md index 0f5b140de0b5..eb3e2c3e571d 100644 --- a/docs/compatible_microcontrollers.md +++ b/docs/compatible_microcontrollers.md @@ -27,19 +27,34 @@ 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) * [STM32G431](https://www.st.com/en/microcontrollers-microprocessors/stm32g4x1.html) * [STM32G474](https://www.st.com/en/microcontrollers-microprocessors/stm32g4x4.html) + * [STM32L412](https://www.st.com/en/microcontrollers-microprocessors/stm32l4x2.html) + * [STM32L422](https://www.st.com/en/microcontrollers-microprocessors/stm32l4x2.html) * [STM32L433](https://www.st.com/en/microcontrollers-microprocessors/stm32l4x3.html) * [STM32L443](https://www.st.com/en/microcontrollers-microprocessors/stm32l4x3.html) + + ### WestBerryTech (WB32) + + * [WB32F3G71xx](http://www.westberrytech.com) ### NXP (Kinetis) * [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/config_options.md b/docs/config_options.md index d0f0b316e00e..b661b55ee0de 100644 --- a/docs/config_options.md +++ b/docs/config_options.md @@ -51,8 +51,10 @@ This is a C header file that is one of the first things included, and will persi * the number of columns in your keyboard's matrix * `#define MATRIX_ROW_PINS { D0, D5, B5, B6 }` * pins of the rows, from top to bottom + * may be omitted by the keyboard designer if matrix reads are handled in an alternate manner. See [low-level matrix overrides](custom_quantum_functions.md?id=low-level-matrix-overrides) for more information. * `#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 }` * pins of the columns, from left to right + * may be omitted by the keyboard designer if matrix reads are handled in an alternate manner. See [low-level matrix overrides](custom_quantum_functions.md?id=low-level-matrix-overrides) for more information. * `#define MATRIX_IO_DELAY 30` * the delay in microseconds when between changing matrix pin state and reading values * `#define UNUSED_PINS { D1, D2, D3, B1, B2, B3 }` @@ -186,13 +188,27 @@ If you define these options you will enable the associated feature, which may in few ms of delay from this. But if you're doing chording on something with 3-4ms scan times? You probably want this. * `#define COMBO_COUNT 2` - * Set this to the number of combos that you're using in the [Combo](feature_combo.md) feature. + * Set this to the number of combos that you're using in the [Combo](feature_combo.md) feature. Or leave it undefined and programmatically set the count. * `#define COMBO_TERM 200` * how long for the Combo keys to be detected. Defaults to `TAPPING_TERM` if not defined. +* `#define COMBO_MUST_HOLD_MODS` + * Flag for enabling extending timeout on Combos containing modifers +* `#define COMBO_MOD_TERM 200` + * Allows for extending COMBO_TERM for mod keys while mid-combo. +* `#define COMBO_MUST_HOLD_PER_COMBO` + * Flag to enable per-combo COMBO_TERM extension and `get_combo_must_hold()` function +* `#define COMBO_TERM_PER_COMBO` + * Flag to enable per-combo COMBO_TERM extension and `get_combo_term()` function +* `#define COMBO_STRICT_TIMER` + * Only start the combo timer on the first key press instead of on all key presses. +* `#define COMBO_NO_TIMER` + * Disable the combo timer completely for relaxed combos. * `#define TAP_CODE_DELAY 100` * Sets the delay between `register_code` and `unregister_code`, if you're having issues with it registering properly (common on VUSB boards). The value is in milliseconds. * `#define TAP_HOLD_CAPS_DELAY 80` - * Sets the delay for Tap Hold keys (`LT`, `MT`) when using `KC_CAPSLOCK` keycode, as this has some special handling on MacOS. The value is in milliseconds, and defaults to 80 ms if not defined. For macOS, you may want to set this to 200 or higher. + * Sets the delay for Tap Hold keys (`LT`, `MT`) when using `KC_CAPS_LOCK` keycode, as this has some special handling on MacOS. The value is in milliseconds, and defaults to 80 ms if not defined. For macOS, you may want to set this to 200 or higher. +* `#define KEY_OVERRIDE_REPEAT_DELAY 500` + * Sets the key repeat interval for [key overrides](feature_key_overrides.md). ## RGB Light Configuration @@ -272,7 +288,7 @@ There are a few different ways to set handedness for split keyboards (listed in ### Other Options * `#define USE_I2C` - * For using I2C instead of Serial (defaults to serial) + * For using I2C instead of Serial (default is serial; serial transport is supported on ARM -- I2C is AVR-only) * `#define SOFT_SERIAL_PIN D0` * When using serial, define this. `D0` or `D1`,`D2`,`D3`,`E6`. @@ -280,6 +296,7 @@ There are a few different ways to set handedness for split keyboards (listed in * `#define MATRIX_ROW_PINS_RIGHT { }` * `#define MATRIX_COL_PINS_RIGHT { }` * If you want to specify a different pinout for the right half than the left half, you can define `MATRIX_ROW_PINS_RIGHT`/`MATRIX_COL_PINS_RIGHT`. Currently, the size of `MATRIX_ROW_PINS` must be the same as `MATRIX_ROW_PINS_RIGHT` and likewise for the definition of columns. + * may be omitted by the keyboard designer if matrix reads are handled in an alternate manner. See [low-level matrix overrides](custom_quantum_functions.md?id=low-level-matrix-overrides) for more information. * `#define DIRECT_PINS_RIGHT { { F1, F0, B0, C7 }, { F4, F5, F6, F7 } }` * If you want to specify a different direct pinout for the right half than the left half, you can define `DIRECT_PINS_RIGHT`. Currently, the size of `DIRECT_PINS` must be the same as `DIRECT_PINS_RIGHT`. @@ -300,7 +317,7 @@ There are a few different ways to set handedness for split keyboards (listed in * `#define SPLIT_USB_DETECT` * Detect (with timeout) USB connection when delegating master/slave * Default behavior for ARM - * Required for AVR Teensy + * Required for AVR Teensy (without hardware mods) * `#define SPLIT_USB_TIMEOUT 2000` * Maximum timeout when detecting master/slave when using `SPLIT_USB_DETECT` @@ -308,6 +325,34 @@ There are a few different ways to set handedness for split keyboards (listed in * `#define SPLIT_USB_TIMEOUT_POLL 10` * Poll frequency when detecting master/slave when using `SPLIT_USB_DETECT` +* `#define FORCED_SYNC_THROTTLE_MS 100` + * Deadline for synchronizing data from master to slave when using the QMK-provided split transport. + +* `#define SPLIT_TRANSPORT_MIRROR` + * Mirrors the master-side matrix on the slave when using the QMK-provided split transport. + +* `#define SPLIT_LAYER_STATE_ENABLE` + * Ensures the current layer state is available on the slave when using the QMK-provided split transport. + +* `#define SPLIT_LED_STATE_ENABLE` + * Ensures the current host indicator state (caps/num/scroll) is available on the slave when using the QMK-provided split transport. + +* `#define SPLIT_MODS_ENABLE` + * Ensures the current modifier state (normal, weak, and oneshot) is available on the slave when using the QMK-provided split transport. + +* `#define SPLIT_WPM_ENABLE` + * Ensures the current WPM is available on the slave when using the QMK-provided split transport. + +* `#define SPLIT_OLED_ENABLE` + * Syncs the on/off state of the OLED between the halves. + +* `#define SPLIT_ST7565_ENABLE` + * Syncs the on/off state of the ST7565 screen between the halves. + +* `#define SPLIT_TRANSACTION_IDS_KB .....` +* `#define SPLIT_TRANSACTION_IDS_USER .....` + * Allows for custom data sync with the slave when using the QMK-provided split transport. See [custom data sync between sides](feature_split_keyboard.md#custom-data-sync) for more information. + # The `rules.mk` File This is a [make](https://www.gnu.org/software/make/manual/make.html) file that is included by the top-level `Makefile`. It is used to set some information about the MCU that we will be compiling for as well as enabling and disabling certain features. @@ -352,15 +397,17 @@ However, this will automatically disable the legacy TMK Macros and Functions fea * `qmk-dfu` * `halfkay` * `caterina` - * `bootloadHID` - * `USBasp` + * `bootloadhid` + * `usbasploader` ## Feature Options :id=feature-options Use these to enable or disable building certain features. The more you have enabled the bigger your firmware will be, and you run the risk of building a firmware too large for your MCU. +* `MAGIC_ENABLE` + * MAGIC actions (BOOTMAGIC without the boot) * `BOOTMAGIC_ENABLE` - * Virtual DIP switch configuration + * Enable Bootmagic Lite * `MOUSEKEY_ENABLE` * Mouse keys * `EXTRAKEY_ENABLE` @@ -373,8 +420,12 @@ Use these to enable or disable building certain features. The more you have enab * Key combo feature * `NKRO_ENABLE` * USB N-Key Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +* `RING_BUFFERED_6KRO_REPORT_ENABLE` + * USB 6-Key Rollover - Instead of stopping any new input once 6 keys are pressed, the oldest key is released and the new key is pressed. * `AUDIO_ENABLE` * Enable the audio subsystem. +* `KEY_OVERRIDE_ENABLE` + * Enable the key override feature * `RGBLIGHT_ENABLE` * Enable keyboard underlight functionality * `LEADER_ENABLE` @@ -395,6 +446,10 @@ Use these to enable or disable building certain features. The more you have enab * Forces the keyboard to wait for a USB connection to be established before it starts up * `NO_USB_STARTUP_CHECK` * Disables usb suspend check after keyboard startup. Usually the keyboard waits for the host to wake it up before any tasks are performed. This is useful for split keyboards as one half will not get a wakeup call but must send commands to the master. +* `DEFERRED_EXEC_ENABLE` + * Enables deferred executor support -- timed delays before callbacks are invoked. See [deferred execution](custom_quantum_functions.md#deferred-execution) for more information. +* `DYNAMIC_TAPPING_TERM_ENABLE` + * Allows to configure the global tapping term on the fly. ## USB Endpoint Limitations diff --git a/docs/configurator_architecture.md b/docs/configurator_architecture.md new file mode 100644 index 000000000000..0d7fc8a73b4f --- /dev/null +++ b/docs/configurator_architecture.md @@ -0,0 +1,61 @@ +# QMK Configurator Architecture + +This page describes the web architecture behind QMK Configurator at a high level. If you are interested in the architecture of the QMK Configurator code itself you should start at the [qmk_configurator](https://github.com/qmk/qmk_configurator) repository. + +# Overview + +![QMK Configurator Architecture Diagram](configurator_diagram.svg) + +# Detailed Description + +QMK Configurator is a [Single Page Application](https://en.wikipedia.org/wiki/Single-page_application) that allows users to create custom keymaps for their QMK-compatible keyboard. They can export JSON representation of their keymaps and compile firmware binaries that can be flashed to their keyboard using a tool like [QMK Toolbox](https://github.com/qmk/qmk_toolbox). + +Configurator gets metadata about keyboards from the Keyboard Metadata store and submits compile requests to the QMK API. The results of those compile requests will be made available on [Digital Ocean Spaces](https://www.digitalocean.com/products/spaces/), an S3-compatible data store. + +## Configurator Frontend + +Address: + +The [Configurator Frontend](https://config.qmk.fm) is compiled into a set of static files that are served by Github Pages. This action happens every time a commit is pushed to the [qmk_configurator `master`](https://github.com/qmk/qmk_configurator) branch. You can view the status of these jobs on the [qmk_configurator actions tab](https://github.com/qmk/qmk_configurator/actions/workflows/build.yml). + +## Keyboard Metadata + +Address: + +The Keyboard Metadata is generated every time a keyboard in [qmk_firmware](https://github.com/qmk/qmk_firmware) changes. The resulting JSON files are uploaded to Spaces and used by Configurator to generate UI for each keyboard. You can view the status of this job on the [qmk_firmware actions tab](https://github.com/qmk/qmk_firmware/actions/workflows/api.yml). If you are a QMK Collaborator you can manually run this job using the `workflow_dispatch` event trigger. + +## QMK API + +Address: + +The QMK API accepts `keymap.json` files for compilation. These are the same files you can use directly with `qmk compile` and `qmk flash`. When a `keymap.json` is submitted the browser will poll the status of the job periodically (every 2 seconds or longer, preferably) until the job has completed. The final status JSON will contain pointers to source and binary downloads for the keymap. + +QMK API always presents the source and binary downloads side-by-side to comply with the GPL. + +There are 3 non-error status responses from the API- + +1. Compile Job Queued +2. Compile Job Running +3. Compile Job Finished + +### Compile Job Queued + +This status indicates that the job has not yet been picked up by a [QMK Compiler](#qmk-compiler) node. Configurator shows this status as "Waiting for an oven". + +### Compile Job Running + +This status indicates that the job has started compiling. Configurator shows this status as "Baking". + +### Compile Job Finished + +This status indicates that the job has completed. There will be keys in the status JSON for source and binary downloads. + +## Redis/RQ + +QMK API uses RQ to distribute jobs to the available [QMK Compiler](#qmk-compiler) nodes. When a `keymap.json` is received it's put into the RQ queue, where a `qmk_compiler` node will pick it up from. + +## QMK Compiler + +[QMK Compiler](https://github.com/qmk/qmk_compiler) is what actually performs the compilation of the `keymap.json`. It does so by checking out the requested `qmk_firmware` branch, running `qmk compile keymap.json`, and then uploading the resulting source and binary to Digital Ocean Spaces. + +When users download their source/binary, API will redirect them to the authenticated Spaces download URL. diff --git a/docs/configurator_default_keymaps.md b/docs/configurator_default_keymaps.md index 30f9fa72f323..d2b14ec41101 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//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) @@ -46,7 +46,7 @@ Now that we have the commit hash, we need the keymap (edited for readability): const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_all( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, @@ -74,7 +74,7 @@ The default keymap uses the `LAYOUT_all` macro, so that will be the value of the "layout": "LAYOUT_all", "layers": [ [ - "KC_ESC", "KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "KC_F11", "KC_F12", "KC_PSCR", "KC_SLCK", "KC_PAUS", + "KC_ESC", "KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "KC_F11", "KC_F12", "KC_PSCR", "KC_SCRL", "KC_PAUS", "KC_GRV", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_MINS", "KC_EQL", "KC_BSPC", "KC_BSPC", "KC_INS", "KC_HOME", "KC_PGUP", "KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_LBRC", "KC_RBRC", "KC_BSLS", "KC_DEL", "KC_END", "KC_PGDN", "KC_CAPS", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT", "KC_NUHS", "KC_ENT", diff --git a/docs/configurator_diagram.drawio b/docs/configurator_diagram.drawio new file mode 100644 index 000000000000..091a3a76b8c3 --- /dev/null +++ b/docs/configurator_diagram.drawio @@ -0,0 +1 @@ +5VvbcqM4EP2a1O4+hOLqy2Ni5zKX1CTxzszOU0oG2dZEIBZEYu/XbwuEDQg7csZ2vFlXjQca0RLdR+eohXPiDML5VYLi2Q0LMD2xzWB+4gxPbNvqezb8JywLaTFtr7BMExJI28owIv/gsqG0ZiTAaa0hZ4xyEteNPosi7POaDSUJe643mzBa7zVGU6wYRj6iqvU7CfissPY8c2W/xmQ6K3u2THklRGVjaUhnKGDPFZNzceIMEsZ4cRTOB5iK6JVxKe67XHN1ObAER1znhgfT76Zzxxp3Z49j5+7zjw/z+NSS+XlCNJNPLEfLF2UIcAARkacs4TM2ZRGiFyvrecKyKMCiHxPOVm0+MxaD0QLjT8z5QqYXZZyBacZDKq/iKDgTyYLTiEW4sFwSSqXLAKWz3L9orD64jEXKssTHG57WlQBCyRTzTVGRDsWTV3qQcb3CLMQ8WUCDBFPEyVMdK0hCbrpst8oKHMjEbJEk9+UckTDHcTWm0jQk4RR6pWQM3z4l8QNKuDhkYZxxnKRw/J0ljymHJ2HRg2X35vDPiKPp2kA/4YTj+cbIyKunjmv0zMpHeljSQXH6XJla0jSrzKrStvPIei9Hdgm9HNoZpyTCgyXZmPWYI0qmERz7EDGcgIGiMaa3LCUittULIoQEaOZzo8GYcc7CSoMz6ZKLqXQOJBKLgYXzqSBc4xmPKcy11JgSPsvG0GLCIn6JQkJFiK8xfcLCjbwgJyDM+uJ8wChL8ud0ivSILnjCHnHblQlMyIp9kn/ADkMJCK55G14OL4YXmybrFhhyOzXQtKEGdMVwVeBUzDvHTjmKjdS54jWfojQlfpP3YCR/CRwZXnn6o3ptOJcgK84W8gwma8JVz7lZ0qZVI9Ff401PkzddTdqsJM5rme6lTZtdZQ+3jMCTLXFjlRkqyaZJI8Vzy7uqytl01Gk4chqOisAojnJYLR/7F5BWTpkV0gZUTDjgbnOUxTEorqCosxO7QyGG5+MEjqbiaDBLoPsTGzo2L0mCJ2yuNhri9FHQi21+iehCAfHzjHA8ilEOkWegnTqGm0QVkiDIVwU5950j/3Garw9Kdsjd7YYZlmurkhlUYrDNFoB19qUnltPCCUW40xhFZcBnnIvl65noTChxNCFT4+/w0ZiEZXOwV+9Qk9bmd0SiKYTeNm+F9AM2RKTX3tno4iN6QiM/IbFYHXz7eqHeOJI8AeM2YbTQDL4fiuFnCeIs0RvmNUt54eWqUK1iwOnaZ28Asr7cfC0894E/q2PYehDs7w2CGqtFdbndqklVRaoI1BpN2tEaXVdryql2JGKzTKiEgvdasXHchqNDi01XAz/vpiK0tOHW0YTbYUpC6/1ULj9TuH0XlWZ93riOuhjotsz/rmf09pWkjpKkuvI/4sWYoSRIG+K/ks9PsgV4ucEcBYgjXV2ekCR8hoiq7a+uoeGZX+RN3PQ1BsdiwXB2+wG+h629rFR7SKDaRPSLj4VIm7n2ptsuG2voPKRIu7Zt9N9apHtbiXRr7VirASVHVgtAc4cFoDZNekclypZnWK5p9Tp9y+v1up1y73nRQMbWBWHdz3LP90ASbav14HuW6L4m9spsHotE95Us3d18Kkm2mS5KSZziik76lGXBy+XNLpTTq8O5Y6rKadkts3Rv27JlZ2uFE8VkrWTeX4z+nGS0DLSeWILDTYp3jyJ/Bqsf2xRrFXP4Bb6+3fy2tegdUuc6pqenct29pVFjkfryDulhtzDLWXskCnbarCtd75WadaoUlpqqBelBi0qzWDRINwzZanTkOObmkTVv8Pq1G+CgGMNuRVSl53csonZXV0R7RyWitrobIasPMMoCRGF4WY807b+PnD+OS3idXh347fuHrdrbt8qWu4+5WpzU1RcE81QocLTwHcMPIiMoUsJEPtI8+obPWqRZRlNK7+kLoqskejut3UWCeg1msh3L6PYrn54qsf2WbO3thYOjrpTeTGK1Oea4ikSQ/EaSX7t1qwiZfeC9W6ft9dO71TSn/D3YS3hz7KPSNEct3+/vlDyVciS2/FLOEnwYSWpskXS7ai3YOSjB2WqwcEDEm+9cjEwRuqaGfGTineJdhrOW3c/2AjApnO6/BNxBkpqVXrfz1pWes91Lx73KkPZ+UTkP31qHyiw26zFt2fEacGiWiPtWHXWNXvwuIIwpETNmDbPhuZhhAcvG+RWrJj3Wm2x99Vt+QXLYrS9XXdAVu4YDCCehIpztbHefRVH+a07dX22sc/efoLy+/daU5+pswh+I8vRXQt3joDyZVbeW015ztaxLgHU3/eZbnT3Tn6uuULYGwoF/z+lo7wYdF16AHes00GuuO/V3Qxui2bP0ULP1bqjTYK5yS2Gvm5vu/6sQ1IVzKa67KwTXEJK3GVu6KLWd14H0ZRjB6eovj4rmqz/gci7+BQ== \ No newline at end of file diff --git a/docs/configurator_diagram.svg b/docs/configurator_diagram.svg new file mode 100644 index 000000000000..bcf0bf76d1ec --- /dev/null +++ b/docs/configurator_diagram.svg @@ -0,0 +1,3 @@ + + +
Clients Supported:
Chrome, Firefox
Desktop Only
Clients Supported:...
https://config.qmk.fm
Single Page Site
JavaScript/VUE
Source: qmk/qmk_configurator
Host: Github Pages
https://config.qmk.fm...
https://keyboards.qmk.fm
Keyboard Metadata
Source: qmk/qmk_firmware
GH Action: Update API Data
Host: DigitalOcean Spaces
https://keyboards.qmk.fm...
QMK API
QMK API
https://api.qmk.fm
RESTful API
Source: qmk/qmk_api
Host: Rancher on DO VM's
https://api.qmk.fm...
Digital Ocean
Spaces
(S3)
Digital Ocean...
https://qmk-api.nyc3.cdn.digitaloceanspaces.com
Space: qmk-api
Host: Digital Ocean
https://qmk-api.nyc3.cdn.digitaloceanspaces.com...
RQ
RQ
Redis / RQ
Job Queue
Source: qmk/qmk_redis
Host: Rancher on DO VM's
Redis / RQ...
qmk_complier
qmk_complier
QMK Compiler
Job Runners
Source: qmk/qmk_compiler
Host: Rancher on DO VM's
QMK Compiler...
Viewer does not support full SVG 1.1
\ No newline at end of file diff --git a/docs/contributing.md b/docs/contributing.md index fe48619e4180..eb033d167fd2 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: @@ -148,7 +148,7 @@ Feature and Bug Fix PR's affect all keyboards. We are also in the process of res Here are some things to keep in mind when working on your feature or bug fix. * **Disabled by default** - memory is a pretty limited on most chips QMK supports, and it's important that current keymaps aren't broken, so please allow your feature to be turned **on**, rather than being turned off. If you think it should be on by default, or reduces the size of the code, please talk with us about it. -* **Compile locally before submitting** - hopefully this one is obvious, but things need to compile! Our Travis system will catch any issues, but it's generally faster for you to compile a few keyboards locally instead of waiting for the results to come back. +* **Compile locally before submitting** - hopefully this one is obvious, but things need to compile! You should always make sure your changes compile before opening a pull request. * **Consider revisions and different chip-bases** - there are several keyboards that have revisions that allow for slightly different configurations, and even different chip-bases. Try to make a feature supported in ARM and AVR, or automatically disabled on platforms it doesn't work on. * **Explain your feature** - Document it in `docs/`, either as a new file or as part of an existing file. If you don't document it other people won't be able to benefit from your hard work. diff --git a/docs/custom_matrix.md b/docs/custom_matrix.md index cfa900a33d3a..8f6878f94a6c 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//matrix.c ``` diff --git a/docs/custom_quantum_functions.md b/docs/custom_quantum_functions.md index 694b421e79ce..dd1654bd2984 100644 --- a/docs/custom_quantum_functions.md +++ b/docs/custom_quantum_functions.md @@ -144,6 +144,14 @@ This is useful for setting up stuff that you may need elsewhere, but isn't hardw * Keyboard/Revision: `void matrix_init_kb(void)` * Keymap: `void matrix_init_user(void)` +### Low-level Matrix Overrides Function Documentation :id=low-level-matrix-overrides + +* GPIO pin initialisation: `void matrix_init_pins(void)` + * This needs to perform the low-level initialisation of all row and column pins. By default this will initialise the input/output state of each of the GPIO pins listed in `MATRIX_ROW_PINS` and `MATRIX_COL_PINS`, based on whether or not the keyboard is set up for `ROW2COL`, `COL2ROW`, or `DIRECT_PINS`. Should the keyboard designer override this function, no initialisation of pin state will occur within QMK itself, instead deferring to the keyboard's override. +* `COL2ROW`-based row reads: `void matrix_read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)` +* `ROW2COL`-based column reads: `void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col, matrix_row_t row_shifter)` +* `DIRECT_PINS`-based reads: `void matrix_read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)` + * These three functions need to perform the low-level retrieval of matrix state of relevant input pins, based on the matrix type. Only one of the functions should be implemented, if needed. By default this will iterate through `MATRIX_ROW_PINS` and `MATRIX_COL_PINS`, configuring the inputs and outputs based on whether or not the keyboard is set up for `ROW2COL`, `COL2ROW`, or `DIRECT_PINS`. Should the keyboard designer override this function, no manipulation of matrix GPIO pin state will occur within QMK itself, instead deferring to the keyboard's override. ## Keyboard Post Initialization code @@ -206,11 +214,11 @@ This is controlled by two functions: `suspend_power_down_*` and `suspend_wakeup_ ```c void suspend_power_down_user(void) { - rgb_matrix_set_suspend_state(true); + // code will run multiple times while keyboard is suspended } void suspend_wakeup_init_user(void) { - rgb_matrix_set_suspend_state(false); + // code will run on keyboard wakeup } ``` @@ -374,7 +382,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } } ``` -And lastly, you want to add the `eeconfig_init_user` function, so that when the EEPROM is reset, you can specify default values, and even custom actions. To force an EEPROM reset, use the `EEP_RST` keycode or [Bootmagic](feature_bootmagic.md) functionallity. For example, if you want to set rgb layer indication by default, and save the default valued. +And lastly, you want to add the `eeconfig_init_user` function, so that when the EEPROM is reset, you can specify default values, and even custom actions. To force an EEPROM reset, use the `EEP_RST` keycode or [Bootmagic Lite](feature_bootmagic.md) functionallity. For example, if you want to set rgb layer indication by default, and save the default valued. ```c void eeconfig_init_user(void) { // EEPROM is getting reset! @@ -397,3 +405,69 @@ And you're done. The RGB layer indication will only work if you want it to. And * Keymap: `void eeconfig_init_user(void)`, `uint32_t eeconfig_read_user(void)` and `void eeconfig_update_user(uint32_t val)` The `val` is the value of the data that you want to write to EEPROM. And the `eeconfig_read_*` function return a 32 bit (DWORD) value from the EEPROM. + +### Deferred Execution :id=deferred-execution + +QMK has the ability to execute a callback after a specified period of time, rather than having to manually manage timers. + +#### Deferred executor callbacks + +All _deferred executor callbacks_ have a common function signature and look like: + +```c +uint32_t my_callback(uint32_t trigger_time, void *cb_arg) { + /* do something */ + bool repeat = my_deferred_functionality(); + return repeat ? 500 : 0; +} +``` + +The first argument `trigger_time` is the intended time of execution. If other delays prevent executing at the exact trigger time, this allows for "catch-up" or even skipping intervals, depending on the required behaviour. + +The second argument `cb_arg` is the same argument passed into `defer_exec()` below, and can be used to access state information from the original call context. + +The return value is the number of milliseconds to use if the function should be repeated -- if the callback returns `0` then it's automatically unregistered. In the example above, a hypothetical `my_deferred_functionality()` is invoked to determine if the callback needs to be repeated -- if it does, it reschedules for a `500` millisecond delay, otherwise it informs the deferred execution background task that it's done, by returning `0`. + +?> Note that the returned delay will be applied to the intended trigger time, not the time of callback invocation. This allows for generally consistent timing even in the face of occasional late execution. + +#### Deferred executor registration + +Once a callback has been defined, it can be scheduled using the following API: + +```c +deferred_token my_token = defer_exec(1500, my_callback, NULL); +``` + +The first argument is the number of milliseconds to wait until executing `my_callback` -- in the case above, `1500` milliseconds, or 1.5 seconds. + +The third parameter is the `cb_arg` that gets passed to the callback at the point of execution. This value needs to be valid at the time the callback is invoked -- a local function value will be destroyed before the callback is executed and should not be used. If this is not required, `NULL` should be used. + +The return value is a `deferred_token` that can consequently be used to cancel the deferred executor callback before it's invoked. If a failure occurs, the returned value will be `INVALID_DEFERRED_TOKEN`. Usually this will be as a result of supplying `0` to the delay, or a `NULL` for the callback. The other failure case is if there are too many deferred executions "in flight" -- this can be increased by changing the limit, described below. + +#### Extending a deferred execution + +The `deferred_token` returned by `defer_exec()` can be used to extend a the duration a pending execution waits before it gets invoked: +```c +// This will re-delay my_token's future execution such that it is invoked 800ms after the current time +extend_deferred_exec(my_token, 800); +``` + +#### Cancelling a deferred execution + +The `deferred_token` returned by `defer_exec()` can be used to cancel a pending execution before it gets invoked: +```c +// This will cancel my_token's future execution +cancel_deferred_exec(my_token); +``` + +Once a token has been canceled, it should be considered invalid. Reusing the same token is not supported. + +#### Deferred callback limits + +There are a maximum number of deferred callbacks that can be scheduled, controlled by the value of the define `MAX_DEFERRED_EXECUTORS`. + +If registrations fail, then you can increase this value in your keyboard or keymap `config.h` file, for example to 16 instead of the default 8: + +```c +#define MAX_DEFERRED_EXECUTORS 16 +``` diff --git a/docs/de/README.md b/docs/de/README.md index 5de496a201f4..f5f35d9d1c0d 100644 --- a/docs/de/README.md +++ b/docs/de/README.md @@ -1,7 +1,6 @@ # Quantum Mechanical Keyboard Firmware [![Aktuelle Version](https://img.shields.io/github/tag/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/tags) -[![Build Status](https://travis-ci.org/qmk/qmk_firmware.svg?branch=master)](https://travis-ci.org/qmk/qmk_firmware) [![Discord](https://img.shields.io/discord/440868230475677696.svg)](https://discord.gg/Uq7gcHh) [![Docs Status](https://img.shields.io/badge/docs-ready-orange.svg)](https://docs.qmk.fm) [![GitHub contributors](https://img.shields.io/github/contributors/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/pulse/monthly) diff --git a/docs/de/cli.md b/docs/de/cli.md index 437062ad6675..259aeecf754e 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` @@ -88,14 +69,14 @@ qmk compile qmk compile -kb -km ``` -## `qmk cformat` +## `qmk format-c` Dieser Befehl formatiert C-Code im clang-Format. Benutze ihn ohne Argumente, um den core-Code zu formatieren, oder benutze Namen von Dateien in der CLI, um den Befehl auf bestimmte Dateien anzuwenden. **Anwendung**: ``` -qmk cformat [file1] [file2] [...] [fileN] +qmk format-c [file1] [file2] [...] [fileN] ``` ## `qmk config` @@ -148,14 +129,14 @@ Dieser Befehl erstellt eine neue Keymap basierend auf einer existierenden Standa qmk new-keymap [-kb KEYBOARD] [-km KEYMAP] ``` -## `qmk pyformat` +## `qmk format-py` Dieser Befehl formatiert Python-Code in `qmk_firmware`. **Anwendung**: ``` -qmk pyformat +qmk format-py ``` ## `qmk pytest` diff --git a/docs/driver_installation_zadig.md b/docs/driver_installation_zadig.md index 81b8408868fb..003629ba9a00 100644 --- a/docs/driver_installation_zadig.md +++ b/docs/driver_installation_zadig.md @@ -8,8 +8,8 @@ We recommend the use of the [Zadig](https://zadig.akeo.ie/) utility. If you have ## Installation -Put your keyboard into bootloader mode, either by hitting the `RESET` keycode (which may be on a different layer), or by pressing the reset switch that's usually located on the underside of the board. If your keyboard has neither, try holding Escape or Space+`B` as you plug it in (see the [Bootmagic](feature_bootmagic.md) docs for more details). Some boards use [Command](feature_command.md) instead of Bootmagic; in this case, you can enter bootloader mode by hitting Left Shift+Right Shift+`B` or Left Shift+Right Shift+Escape at any point while the keyboard is plugged in. -Some keyboards may have specific instructions for entering the bootloader. For example, the [Bootmagic Lite](feature_bootmagic.md#bootmagic-lite) key (default: Escape) might be on a different key, e.g. Left Control; or the magic combination for Command (default: Left Shift+Right Shift) might require you to hold something else, e.g. Left Control+Right Control. Refer to the board's README file if you are unsure. +Put your keyboard into bootloader mode, either by hitting the `RESET` keycode (which may be on a different layer), or by pressing the reset switch that's usually located on the underside of the board. If your keyboard has neither, try holding Escape or Space+`B` as you plug it in (see the [Bootmagic Lite](feature_bootmagic.md) docs for more details). Some boards use [Command](feature_command.md) instead of Bootmagic; in this case, you can enter bootloader mode by hitting Left Shift+Right Shift+`B` or Left Shift+Right Shift+Escape at any point while the keyboard is plugged in. +Some keyboards may have specific instructions for entering the bootloader. For example, the [Bootmagic Lite](feature_bootmagic.md) key (default: Escape) might be on a different key, e.g. Left Control; or the magic combination for Command (default: Left Shift+Right Shift) might require you to hold something else, e.g. Left Control+Right Control. Refer to the board's README file if you are unsure. To put a device in bootloader mode with USBaspLoader, tap the `RESET` button while holding down the `BOOT` button. Alternatively, hold `BOOT` while inserting the USB cable. @@ -30,48 +30,70 @@ If you find that you can no longer type with the keyboard, you may have accident ![A healthy keyboard as seen by Zadig](https://i.imgur.com/Hx0E5kC.png) -Open the Device Manager and look for a device that looks like your keyboard. +Open the Device Manager, select **View → Devices by container**, and look for an entry with your keyboard's name. -![The board with the wrong driver installed, in Device Manager](https://i.imgur.com/L3wvX8f.png) +![The board with the wrong driver installed, in Device Manager](https://i.imgur.com/o7WLvBl.png) -Right-click it and hit **Uninstall device**. Make sure to tick **Delete the driver software for this device** first. +Right-click each entry and hit **Uninstall device**. Make sure to tick **Delete the driver software for this device** first if it appears. ![The Device Uninstall dialog, with the "delete driver" checkbox ticked](https://i.imgur.com/aEs2RuA.png) -Click **Action → Scan for hardware changes**. At this point, you should be able to type again. Double check in Zadig that the keyboard device(s) are using the `HidUsb` driver. If so, you're all done, and your board should be functional again! Otherwise, repeat the process until Zadig reports the correct driver. +Click **Action → Scan for hardware changes**. At this point, you should be able to type again. Double check in Zadig that the keyboard device(s) are using the `HidUsb` driver. If so, you're all done, and your board should be functional again! Otherwise, repeat this process until Zadig reports the correct driver. ?> A full reboot of your computer may sometimes be necessary at this point, to get Windows to pick up the new driver. +## Uninstallation + +Uninstallation of bootloader devices is a little more involved than installation. + +Open the Device Manager, select **View → Devices by container**, and look for the bootloader device. Match up the USB VID and PID in Zadig with one from [the table below](#list-of-known-bootloaders). + +Find the `Inf name` value in the Details tab of the device properties. This should generally be something like `oemXX.inf`: + +![Device properties showing the Inf name value](https://i.imgur.com/Bu4mk9m.png) + +Then, open a new Command Prompt window as an Administrator (type in `cmd` into the Start menu and press Ctrl+Shift+Enter). Run `pnputil /enum-drivers` to verify the `Inf name` matches the `Published Name` field of one of the entries: + +![pnputil output with matching driver highlighted](https://i.imgur.com/3RrSjzW.png) + +Run `pnputil /delete-driver oemXX.inf /uninstall`. This will delete the driver and remove it from any devices using it. Note that this will not uninstall the device itself. + +As with the previous section, this process may need to be repeated multiple times, as multiple drivers can be applicable to the same device. + +!> **WARNING:** Be *extremely careful* when doing this! You could potentially uninstall the driver for some other critical device. If you are unsure, double check the output of `/enum-drivers`, and omit the `/uninstall` flag when running `/delete-driver`. + ## List of Known Bootloaders This is a list of known bootloader devices and their USB vendor and product IDs, as well as the correct driver to assign for flashing with QMK. Note that the usbser and HidUsb drivers are built in to Windows, and cannot be assigned with Zadig - if your device has an incorrect driver, you must use the Device Manager to uninstall it as described in the previous section. The device name here is the name that appears in Zadig, and may not be what the Device Manager or QMK Toolbox displays. -|Bootloader |Device Name |VID/PID |Driver | -|-------------|------------------------------|--------------|-------| -|`atmel-dfu` |ATmega16u2 DFU |`03EB:2FEF` |libusb0| -|`atmel-dfu` |ATmega32U2 DFU |`03EB:2FF0` |libusb0| -|`atmel-dfu` |ATm16U4 DFU V1.0.2 |`03EB:2FF3` |libusb0| -|`atmel-dfu` |ATm32U4DFU |`03EB:2FF4` |libusb0| -|`atmel-dfu` |*none* (AT90USB64) |`03EB:2FF9` |libusb0| -|`atmel-dfu` |AT90USB128 DFU |`03EB:2FFB` |libusb0| -|`qmk-dfu` |(keyboard name) Bootloader |As `atmel-dfu`|libusb0| -|`halfkay` |*none* |`16C0:0478` |HidUsb | -|`caterina` |Pro Micro 3.3V |`1B4F:9203` |usbser | -|`caterina` |Pro Micro 5V |`1B4F:9205` |usbser | -|`caterina` |LilyPadUSB |`1B4F:9207` |usbser | -|`caterina` |Pololu A-Star 32U4 Bootloader |`1FFB:0101` |usbser | -|`caterina` |Arduino Leonardo |`2341:0036` |usbser | -|`caterina` |Arduino Micro |`2341:0037` |usbser | -|`caterina` |Adafruit Feather 32u4 |`239A:000C` |usbser | -|`caterina` |Adafruit ItsyBitsy 32u4 3V |`239A:000D` |usbser | -|`caterina` |Adafruit ItsyBitsy 32u4 5V |`239A:000E` |usbser | -|`caterina` |Arduino Leonardo |`2A03:0036` |usbser | -|`caterina` |Arduino Micro |`2A03:0037` |usbser | -|`bootloadHID`|HIDBoot |`16C0:05DF` |HidUsb | -|`USBasp` |USBasp |`16C0:05DC` |libusbK| -|`apm32-dfu` |APM32 DFU ISP Mode |`314B:0106` |WinUSB | -|`stm32-dfu` |STM32 BOOTLOADER |`0483:DF11` |WinUSB | -|`kiibohd` |Kiibohd DFU Bootloader |`1C11:B007` |WinUSB | -|`stm32duino` |Maple 003 |`1EAF:0003` |WinUSB | +|Bootloader |Device Name |VID/PID |Driver | +|--------------|------------------------------|--------------|-------| +|`atmel-dfu` |ATmega16u2 DFU |`03EB:2FEF` |libusb0| +|`atmel-dfu` |ATmega32U2 DFU |`03EB:2FF0` |libusb0| +|`atmel-dfu` |ATm16U4 DFU V1.0.2 |`03EB:2FF3` |libusb0| +|`atmel-dfu` |ATm32U4DFU |`03EB:2FF4` |libusb0| +|`atmel-dfu` |*none* (AT90USB64) |`03EB:2FF9` |libusb0| +|`atmel-dfu` |AT90USB128 DFU |`03EB:2FFB` |libusb0| +|`qmk-dfu` |(keyboard name) Bootloader |As `atmel-dfu`|libusb0| +|`halfkay` |*none* |`16C0:0478` |HidUsb | +|`caterina` |Pro Micro 3.3V |`1B4F:9203` |usbser | +|`caterina` |Pro Micro 5V |`1B4F:9205` |usbser | +|`caterina` |LilyPadUSB |`1B4F:9207` |usbser | +|`caterina` |Pololu A-Star 32U4 Bootloader |`1FFB:0101` |usbser | +|`caterina` |Arduino Leonardo |`2341:0036` |usbser | +|`caterina` |Arduino Micro |`2341:0037` |usbser | +|`caterina` |Adafruit Feather 32u4 |`239A:000C` |usbser | +|`caterina` |Adafruit ItsyBitsy 32u4 3V |`239A:000D` |usbser | +|`caterina` |Adafruit ItsyBitsy 32u4 5V |`239A:000E` |usbser | +|`caterina` |Arduino Leonardo |`2A03:0036` |usbser | +|`caterina` |Arduino Micro |`2A03:0037` |usbser | +|`bootloadhid` |HIDBoot |`16C0:05DF` |HidUsb | +|`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/easy_maker.md b/docs/easy_maker.md new file mode 100644 index 000000000000..dc9727233383 --- /dev/null +++ b/docs/easy_maker.md @@ -0,0 +1,31 @@ +# Easy Maker - Build One-Off Projects In Configurator + +Have you ever needed an easy way to program a controller, such as a Proton C or Teensy 2.0, for a one-off project you're building? QMK has you covered with the Easy Maker. Now you can create a firmware in minutes using QMK Configurator. + +There are different styles of Easy Maker available depending on your needs: + +* [Direct Pin](https://config.qmk.fm/#/?filter=ez_maker/direct) - Connect a single switch to a single pin +* Direct Pin + Backlight (Coming Soon) - Like Direct Pin but dedicates a single pin to [Backlight](feature_backlight.md) control +* Direct Pin + Numlock (Coming Soon) - Like Direct Pin but dedicates a single pin to the Numlock LED +* Direct Pin + Capslock (Coming Soon) - Like Direct Pin but dedicates a single pin to the Numlock LED +* Direct Pin + Encoder (Coming Soon) - Like Direct Pin but uses 2 pins to add a single rotary encoder + +## Quickstart + +The easiest way to get started is with the Direct Pin boards. This will assign a single key to each pin and you can short that pin to ground to activate it. Select your MCU from the Keyboard dropdown here: + +* + +For more details see the [Direct Pin](#direct-pin) section. + +# Direct Pin + +As its name implies Direct Pin works by connecting one switch per pin. The other side of the switch should be connected to ground (VSS or GND.) You don't need any other components, your MCU has internal pull-up resistors so that the switch sensing can work. + +Here is a schematic showing how we connect a single button to pin A3 on a ProMicro: + +![Schematic diagram showing a ProMicro with a wire coming out of A3, connecting to the left side of a switch. Another wire comes out of the right side of the switch to connect to the Ground Plane.](https://i.imgur.com/JcDhZll.png) + +Once you have wired your switches you can assign keycodes to each pin and build a firmware by selecting the MCU you are using from the Keyboard dropdown. Use this link to show only Easy Maker Direct Pin: + +* diff --git a/docs/eeprom_driver.md b/docs/eeprom_driver.md index e2c262546d9c..6dcf10c04d49 100644 --- a/docs/eeprom_driver.md +++ b/docs/eeprom_driver.md @@ -31,6 +31,9 @@ Currently QMK supports 24xx-series chips over I2C. As such, requires a working i `#define EXTERNAL_EEPROM_PAGE_SIZE` | Page size of the EEPROM in bytes, as specified in the datasheet | 32 `#define EXTERNAL_EEPROM_ADDRESS_SIZE` | The number of bytes to transmit for the memory location within the EEPROM | 2 `#define EXTERNAL_EEPROM_WRITE_TIME` | Write cycle time of the EEPROM, as specified in the datasheet | 5 +`#define EXTERNAL_EEPROM_WP_PIN` | If defined the WP pin will be toggled appropriately when writing to the EEPROM. | _none_ + +Some I2C EEPROM manufacturers explicitly recommend against hardcoding the WP pin to ground. This is in order to protect the eeprom memory content during power-up/power-down/brown-out conditions at low voltage where the eeprom is still operational, but the i2c master output might be unpredictable. If a WP pin is configured, then having an external pull-up on the WP pin is recommended. Default values and extended descriptions can be found in `drivers/eeprom/eeprom_i2c.h`. diff --git a/docs/es/README.md b/docs/es/README.md index be063ad7c018..0d504fad05d2 100644 --- a/docs/es/README.md +++ b/docs/es/README.md @@ -1,7 +1,6 @@ # Firmware Quantum Mechanical Keyboard [![Versión actual](https://img.shields.io/github/tag/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/tags) -[![Estado de Build](https://travis-ci.org/qmk/qmk_firmware.svg?branch=master)](https://travis-ci.org/qmk/qmk_firmware) [![Discord](https://img.shields.io/discord/440868230475677696.svg)](https://discord.gg/Uq7gcHh) [![Estado de la documentación](https://img.shields.io/badge/docs-ready-orange.svg)](https://docs.qmk.fm) [![Contribuyentes en GitHub](https://img.shields.io/github/contributors/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/pulse/monthly) diff --git a/docs/es/hardware_avr.md b/docs/es/hardware_avr.md index f8c426381f2c..ac6a71565835 100644 --- a/docs/es/hardware_avr.md +++ b/docs/es/hardware_avr.md @@ -6,26 +6,28 @@ Si aún no lo has hecho, debes leer las [Pautas de teclados](hardware_keyboard_g ## Añadir tu Teclado AVR a QMK -QMK tiene varias características para simplificar el trabajo con teclados AVR. Para la mayoría de los teclados no tienes que escribir ni una sola línea de código. Para empezar, ejecuta el archivo `util/new_keyboard.sh`: +QMK tiene varias características para simplificar el trabajo con teclados AVR. Para la mayoría de los teclados no tienes que escribir ni una sola línea de código. Para empezar, ejecuta `qmk new-keyboard`: ``` -$ ./util/new_keyboard.sh -Generating a new QMK keyboard directory - -Keyboard Name: mycoolkb -Keyboard Type [avr]: -Your Name [John Smith]: - -Copying base template files... done -Copying avr template files... done -Renaming keyboard files... done -Replacing %KEYBOARD% with mycoolkb... done -Replacing %YOUR_NAME% with John Smith... done - -Created a new keyboard called mycoolkb. - -To start working on things, cd into keyboards/mycoolkb, -or open the directory in your favourite text editor. +$ qmk new-keyboard +Ψ Generating a new QMK keyboard directory + +Keyboard Name: mycoolkeeb +Keyboard Type: + 1. avr + 2. ps2avrgb +Please enter your choice: [1] +Your Name: [John Smith] +Ψ Copying base template files... +Ψ Copying avr template files... +Ψ Renaming keyboard.[ch] to mycoolkeeb.[ch]... +Ψ Replacing %YEAR% with 2021... +Ψ Replacing %KEYBOARD% with mycoolkeeb... +Ψ Replacing %YOUR_NAME% with John Smith... + +Ψ Created a new keyboard called mycoolkeeb. +Ψ To start working on things, `cd` into keyboards/mycoolkeeb, +Ψ or open the directory in your preferred text editor. ``` Esto creará todos los archivos necesarios para tu nuevo teclado, y rellenará la configuración con valores predeterminados. Ahora sólo tienes que personalizarlo para tu teclado. diff --git a/docs/es/hardware_drivers.md b/docs/es/hardware_drivers.md index e0a9736068ca..788de2c5efc1 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 a505cc5ce13a..298a3b7ce760 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 13a649bfa2f3..28b8c8175946 100644 --- a/docs/faq_debug.md +++ b/docs/faq_debug.md @@ -28,7 +28,7 @@ For compatible platforms, [QMK Toolbox](https://github.com/qmk/qmk_toolbox) can Prefer a terminal based solution? [hid_listen](https://www.pjrc.com/teensy/hid_listen.html), provided by PJRC, can also be used to display debug messages. Prebuilt binaries for Windows,Linux,and MacOS are available. -## Sending Your Own Debug Messages +## Sending Your Own Debug Messages :id=debug-api Sometimes it's useful to print debug messages from within your [custom code](custom_quantum_functions.md). Doing so is pretty simple. Start by including `print.h` at the top of your file: @@ -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_keymap.md b/docs/faq_keymap.md index c30e17990f20..01ded4f23199 100644 --- a/docs/faq_keymap.md +++ b/docs/faq_keymap.md @@ -5,7 +5,7 @@ This page covers questions people often have about keymaps. If you haven't you s ## What Keycodes Can I Use? See [Keycodes](keycodes.md) for an index of keycodes available to you. These link to more extensive documentation when available. -Keycodes are actually defined in [common/keycode.h](https://github.com/qmk/qmk_firmware/blob/master/tmk_core/common/keycode.h). +Keycodes are actually defined in [quantum/keycode.h](https://github.com/qmk/qmk_firmware/blob/master/quantum/keycode.h). ## What Are the Default Keycodes? @@ -19,7 +19,7 @@ There are 3 standard keyboard layouts in use around the world- ANSI, ISO, and JI Sometimes, for readability's sake, it's useful to define custom names for some keycodes. People often define custom names using `#define`. For example: ```c -#define FN_CAPS LT(_FL, KC_CAPSLOCK) +#define FN_CAPS LT(_FL, KC_CAPS) #define ALT_TAB LALT(KC_TAB) ``` @@ -31,15 +31,15 @@ QMK has two features, Bootmagic and Command, which allow you to change the behav As a quick fix try holding down `Space`+`Backspace` while you plug in your keyboard. This will reset the stored settings on your keyboard, returning those keys to normal operation. If that doesn't work look here: -* [Bootmagic](feature_bootmagic.md) +* [Bootmagic Lite](feature_bootmagic.md) * [Command](feature_command.md) ## The Menu Key Isn't Working The key found on most modern keyboards that is located between `KC_RGUI` and `KC_RCTL` is actually called `KC_APP`. This is because when that key was invented there was already a key named `MENU` in the relevant standards, so MS chose to call that the `APP` key. -## `KC_SYSREQ` Isn't Working -Use keycode for Print Screen(`KC_PSCREEN` or `KC_PSCR`) instead of `KC_SYSREQ`. Key combination of 'Alt + Print Screen' is recognized as 'System request'. +## `KC_SYSTEM_REQUEST` Isn't Working +Use keycode for Print Screen (`KC_PRINT_SCREEN`/`KC_PSCR`) instead of `KC_SYSTEM_REQUEST`. Key combination of 'Alt + Print Screen' is recognized as 'System request'. See [issue #168](https://github.com/tmk/tmk_keyboard/issues/168) and * https://en.wikipedia.org/wiki/Magic_SysRq_key @@ -47,7 +47,7 @@ See [issue #168](https://github.com/tmk/tmk_keyboard/issues/168) and ## Power Keys Aren't Working -Somewhat confusingly, there are two "Power" keycodes in QMK: `KC_POWER` in the Keyboard/Keypad HID usage page, and `KC_SYSTEM_POWER` (or `KC_PWR`) in the Consumer page. +Somewhat confusingly, there are two "Power" keycodes in QMK: `KC_KB_POWER` in the Keyboard/Keypad HID usage page, and `KC_SYSTEM_POWER` (or `KC_PWR`) in the Consumer page. The former is only recognized on macOS, while the latter, `KC_SLEP` and `KC_WAKE` are supported by all three major operating systems, so it is recommended to use those instead. Under Windows, these keys take effect immediately, however on macOS they must be held down until a dialog appears. @@ -57,7 +57,7 @@ https://github.com/tmk/tmk_keyboard/issues/67 ## Modifier/Layer Stuck Modifier keys or layers can be stuck unless layer switching is configured properly. -For Modifier keys and layer actions you have to place `KC_TRANS` on same position of destination layer to unregister the modifier key or return to previous layer on release event. +For Modifier keys and layer actions you have to place `KC_TRNS` on same position of destination layer to unregister the modifier key or return to previous layer on release event. * https://github.com/tmk/tmk_core/blob/master/doc/keymap.md#31-momentary-switching * https://geekhack.org/index.php?topic=57008.msg1492604#msg1492604 @@ -75,7 +75,7 @@ This feature is for *mechanical lock switch* like [this Alps one](https://deskth After enabling this feature use keycodes `KC_LCAP`, `KC_LNUM` and `KC_LSCR` in your keymap instead. -Old vintage mechanical keyboards occasionally have lock switches but modern ones don't have. ***You don't need this feature in most case and just use keycodes `KC_CAPS`, `KC_NLCK` and `KC_SLCK`.*** +Old vintage mechanical keyboards occasionally have lock switches but modern ones don't have. ***You don't need this feature in most case and just use keycodes `KC_CAPS`, `KC_NUM` and `KC_SCRL`.*** ## Input Special Characters Other Than ASCII like Cédille 'Ç' diff --git a/docs/faq_misc.md b/docs/faq_misc.md index 9ab2b69a809b..9e34a048156c 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. @@ -49,10 +49,6 @@ First you have to compile firmware with the build option `NKRO_ENABLE` in **Make Try `Magic` **N** command(`LShift+RShift+N` by default) when **NKRO** still doesn't work. You can use this command to toggle between **NKRO** and **6KRO** mode temporarily. In some situations **NKRO** doesn't work and you will need to switch to **6KRO** mode, in particular when you are in BIOS. -If your firmware was built with `BOOTMAGIC_ENABLE` you need to turn its switch on by `BootMagic` **N** command(`Space+N` by default). This setting is stored in EEPROM and kept over power cycles. - -https://github.com/tmk/tmk_keyboard#boot-magic-configuration---virtual-dip-switch - ## TrackPoint Needs Reset Circuit (PS/2 Mouse Support) Without reset circuit you will have inconsistent result due to improper initialization of the hardware. See circuit schematic of TPM754: diff --git a/docs/feature_audio.md b/docs/feature_audio.md index 9ffbc2cba82d..5b84dc774732 100644 --- a/docs/feature_audio.md +++ b/docs/feature_audio.md @@ -167,6 +167,32 @@ The available keycodes for audio are: !> These keycodes turn all of the audio functionality on and off. Turning it off means that audio feedback, audio clicky, music mode, etc. are disabled, completely. +## Audio Config + +| Settings | Default | Description | +|---------------------------------|----------------------|-------------------------------------------------------------------------------| +|`AUDIO_PIN` | *Not defined* |Configures the pin that the speaker is connected to. | +|`AUDIO_PIN_ALT` | *Not defined* |Configures the pin for a second speaker or second pin connected to one speaker.| +|`AUDIO_PIN_ALT_AS_NEGATIVE` | *Not defined* |Enables support for one speaker connected to two pins. | +|`AUDIO_INIT_DELAY` | *Not defined* |Enables delay during startup song to accomidate for USB startup issues. | +|`AUDIO_ENABLE_TONE_MULTIPLEXING` | *Not defined* |Enables time splicing/multiplexing to create multiple tones simutaneously. | +|`STARTUP_SONG` | `STARTUP_SOUND` |Plays when the keyboard starts up (audio.c) | +|`GOODBYE_SONG` | `GOODBYE_SOUND` |Plays when you press the RESET key (quantum.c) | +|`AG_NORM_SONG` | `AG_NORM_SOUND` |Plays when you press AG_NORM (process_magic.c) | +|`AG_SWAP_SONG` | `AG_SWAP_SOUND` |Plays when you press AG_SWAP (process_magic.c) | +|`CG_NORM_SONG` | `AG_NORM_SOUND` |Plays when you press CG_NORM (process_magic.c) | +|`CG_SWAP_SONG` | `AG_SWAP_SOUND` |Plays when you press CG_SWAP (process_magic.c) | +|`MUSIC_ON_SONG` | `MUSIC_ON_SOUND` |Plays when music mode is activated (process_music.c) | +|`MUSIC_OFF_SONG` | `MUSIC_OFF_SOUND` |Plays when music mode is deactivated (process_music.c) | +|`MIDI_ON_SONG` | `MUSIC_ON_SOUND` |Plays when midi mode is activated (process_music.c) | +|`MIDI_OFF_SONG` | `MUSIC_OFF_SOUND` |Plays when midi mode is deactivated (process_music.c) | +|`CHROMATIC_SONG` | `CHROMATIC_SOUND` |Plays when the chromatic music mode is selected (process_music.c) | +|`GUITAR_SONG` | `GUITAR_SOUND` |Plays when the guitar music mode is selected (process_music.c) | +|`VIOLIN_SONG` | `VIOLIN_SOUND` |Plays when the violin music mode is selected (process_music.c) | +|`MAJOR_SONG` | `MAJOR_SOUND` |Plays when the major music mode is selected (process_music.c) | +|`DEFAULT_LAYER_SONGS` | *Not defined* |Plays song when switched default layers with [`set_single_persistent_default_layer(layer)`](ref_functions.md#setting-the-persistent-default-layer)(quantum.c) | +|`SENDSTRING_BELL` | *Not defined* |Plays chime when the "enter" ("\a") character is sent (send_string.c) | + ## Tempo the 'speed' at which SONGs are played is dictated by the set Tempo, which is measured in beats-per-minute. Note lengths are defined relative to that. The initial/default tempo is set to 120 bpm, but can be configured by setting `TEMPO_DEFAULT` in `config.c`. diff --git a/docs/feature_auto_shift.md b/docs/feature_auto_shift.md index ec7eeaaa0cae..99b0ca3c8a3c 100644 --- a/docs/feature_auto_shift.md +++ b/docs/feature_auto_shift.md @@ -26,20 +26,26 @@ down will repeat the shifted key, though this can be disabled with once then immediately (within `TAPPING_TERM`) hold it down again (this works with the shifted value as well if auto-repeat is disabled). +There are also the `get_auto_shift_repeat` and `get_auto_shift_no_auto_repeat` +functions for more granular control. Neither will have an effect unless +`AUTO_SHIFT_REPEAT_PER_KEY` or `AUTO_SHIFT_NO_AUTO_REPEAT_PER_KEY` respectively +are defined. + ## Are There Limitations to Auto Shift? Yes, unfortunately. -You will have characters that are shifted when you did not intend on shifting, and -other characters you wanted shifted, but were not. This simply comes down to -practice. As we get in a hurry, we think we have hit the key long enough for a -shifted version, but we did not. On the other hand, we may think we are tapping -the keys, but really we have held it for a little longer than anticipated. - -Additionally, with keyrepeat the desired shift state can get mixed up. It will -always 'belong' to the last key pressed. For example, keyrepeating a capital -and then tapping something lowercase (whether or not it's an Auto Shift key) -will result in the capital's *key* still being held, but shift not. +1. You will have characters that are shifted when you did not intend on shifting, and + other characters you wanted shifted, but were not. This simply comes down to + practice. As we get in a hurry, we think we have hit the key long enough for a + shifted version, but we did not. On the other hand, we may think we are tapping + the keys, but really we have held it for a little longer than anticipated. +2. Additionally, with keyrepeat the desired shift state can get mixed up. It will + always 'belong' to the last key pressed. For example, keyrepeating a capital + and then tapping something lowercase (whether or not it's an Auto Shift key) + will result in the capital's *key* still being held, but shift not. +3. Auto Shift does not apply to Tap Hold keys. For automatic shifting of Tap Hold + keys see [Retro Shift](#retro-shift). ## How Do I Enable Auto Shift? @@ -96,6 +102,34 @@ quicker than normal and you will be set. ?> Auto Shift has three special keys that can help you get this value right very quick. See "Auto Shift Setup" for more details! +For more granular control of this feature, you can add the following to your `config.h`: + +```c +#define AUTO_SHIFT_TIMEOUT_PER_KEY +``` + +You can then add the following function to your keymap: + +```c +uint16_t get_autoshift_timeout(uint16_t keycode, keyrecord_t *record) { + switch(keycode) { + case AUTO_SHIFT_NUMERIC: + return 2 * get_generic_autoshift_timeout(); + case AUTO_SHIFT_SPECIAL: + return get_generic_autoshift_timeout() + 50; + case AUTO_SHIFT_ALPHA: + default: + return get_generic_autoshift_timeout(); + } +} +``` + +Note that you cannot override individual keys that are in one of those groups +if you are using them; trying to add a case for `KC_A` in the above example will +not compile as `AUTO_SHIFT_ALPHA` is there. A possible solution is a second switch +above to handle individual keys with no default case and only referencing the +groups in the below fallback switch. + ### NO_AUTO_SHIFT_SPECIAL (simple define) Do not Auto Shift special keys, which include -\_, =+, [{, ]}, ;:, '", ,<, .>, @@ -109,11 +143,24 @@ Do not Auto Shift numeric keys, zero through nine. Do not Auto Shift alpha characters, which include A through Z. -### Auto Shift Per Key +### Auto Shift Per Key -This is a function that allows you to determine which keys shold be autoshifted, much like the tap-hold keys. +There are functions that allows you to determine which keys shold be autoshifted, much like the tap-hold keys. -The default function looks like this: +The first of these, used to simply add a key to Auto Shift, is `get_custom_auto_shifted_key`: + +```c +bool get_custom_auto_shifted_key(uint16_t keycode, keyrecord_t *record) { + switch(keycode) { + case KC_DOT: + return true; + default: + return false; + } +} +``` + +For more granular control, there is `get_auto_shifted_key`. The default function looks like this: ```c bool get_auto_shifted_key(uint16_t keycode, keyrecord_t *record) { @@ -127,13 +174,14 @@ bool get_auto_shifted_key(uint16_t keycode, keyrecord_t *record) { # ifndef NO_AUTO_SHIFT_SPECIAL case KC_TAB: case KC_MINUS ... KC_SLASH: - case KC_NONUS_BSLASH: + case KC_NONUS_BACKSLASH: # endif return true; } - return false; + return get_custom_auto_shifted_key(keycode, record); } ``` + This functionality is enabled by default, and does not need a define. ### AUTO_SHIFT_REPEAT (simple define) @@ -144,6 +192,106 @@ Enables keyrepeat. Disables automatically keyrepeating when `AUTO_SHIFT_TIMEOUT` is exceeded. +## Custom Shifted Values + +Especially on small keyboards, the default shifted value for many keys is not +optimal. To provide more customizability, there are two user-definable +functions, `autoshift_press/release_user`. These register or unregister the +correct value for the passed key. Below is an example adding period to Auto +Shift and making its shifted value exclamation point. Make sure to use weak +mods - setting real would make any keys following it use their shifted values +as if you were holding the key. Clearing of modifiers is handled by Auto Shift, +and the OS-sent shift value if keyrepeating multiple keys is always that of +the last key pressed (whether or not it's an Auto Shift key). + +You can also have non-shifted keys for the shifted values (or even no shifted +value), just don't set a shift modifier! + +```c +bool get_custom_auto_shifted_key(uint16_t keycode, keyrecord_t *record) { + switch(keycode) { + case KC_DOT: + return true; + default: + return false; + } +} + +void autoshift_press_user(uint16_t keycode, bool shifted, keyrecord_t *record) { + switch(keycode) { + case KC_DOT: + register_code16((!shifted) ? KC_DOT : KC_EXLM); + break; + default: + if (shifted) { + add_weak_mods(MOD_BIT(KC_LSFT)); + } + // & 0xFF gets the Tap key for Tap Holds, required when using Retro Shift + register_code16((IS_RETRO(keycode)) ? keycode & 0xFF : keycode); + } +} + +void autoshift_release_user(uint16_t keycode, bool shifted, keyrecord_t *record) { + switch(keycode) { + case KC_DOT: + unregister_code16((!shifted) ? KC_DOT : KC_EXLM); + break; + default: + // & 0xFF gets the Tap key for Tap Holds, required when using Retro Shift + // The IS_RETRO check isn't really necessary here, always using + // keycode & 0xFF would be fine. + unregister_code16((IS_RETRO(keycode)) ? keycode & 0xFF : keycode); + } +} +``` + +## Retro Shift + +Holding and releasing a Tap Hold key without pressing another key will ordinarily +result in only the hold. With `retro shift` enabled this action will instead +produce a shifted version of the tap keycode on release. + +It does not require [Retro Tapping](tap_hold.md#retro-tapping) to be enabled, and +if both are enabled the state of `retro tapping` will only apply if the tap keycode +is not matched by Auto Shift. `RETRO_TAPPING_PER_KEY` and its corresponding +function, however, are checked before `retro shift` is applied. + +To enable `retro shift`, add the following to your `config.h`: + +```c +#define RETRO_SHIFT +``` + +If `RETRO_SHIFT` is defined to a value, hold times greater than that value will +not produce a tap on release for Mod Taps, and instead triggers the hold action. +This enables modifiers to be held for combining with mouse clicks without +generating taps on release. For example: + +```c +#define RETRO_SHIFT 500 +``` + +This value (if set) must be greater than one's `TAPPING_TERM`, as the key press +must be designated as a 'hold' by `process_tapping` before we send the modifier. +There is no such limitation in regards to `AUTO_SHIFT_TIMEOUT` for normal keys. + +### Retro Shift and Tap Hold Configurations + +Tap Hold Configurations work a little differently when using Retro Shift. +Referencing `TAPPING_TERM` makes little sense, as holding longer would result in +shifting one of the keys. + +`IGNORE_MOD_TAP_INTERRUPT` changes *only* rolling from a mod tap (releasing it +first), sending both keys instead of the modifier on the second. Its effects on +nested presses are ignored. + +As nested taps were changed to act as though `PERMISSIVE_HOLD` is set unless only +`IGNORE_MOD_TAP_INTERRUPT` is (outside of Retro Shift), and Retro Shift ignores +`IGNORE_MOD_TAP_INTERRUPT`, `PERMISSIVE_HOLD` has no effect on Mod Taps. + +Nested taps will *always* act as though the `TAPPING_TERM` was exceeded for both +Mod and Layer Tap keys. + ## Using Auto Shift Setup This will enable you to define three keys temporarily to increase, decrease and report your `AUTO_SHIFT_TIMEOUT`. diff --git a/docs/feature_backlight.md b/docs/feature_backlight.md index d47ecc68242b..79782cf56493 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 08e5f24ac558..fdf19c10774b 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. - ## 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_bootmagic.md b/docs/feature_bootmagic.md index f084052cc74c..148ea92b9e26 100644 --- a/docs/feature_bootmagic.md +++ b/docs/feature_bootmagic.md @@ -1,134 +1,11 @@ -# Bootmagic - -There are three separate but related features that allow you to change the behavior of your keyboard without reflashing. While each of them have similar functionality, it is accessed in different ways depending on how your keyboard is configured. - -**Bootmagic** is a system for configuring your keyboard while it initializes. To trigger a Bootmagic command, hold down the Bootmagic key and one or more command keys. - -**Bootmagic Keycodes** are prefixed with `MAGIC_`, and allow you to access the Bootmagic functionality *after* your keyboard has initialized. To use the keycodes, assign them to your keymap as you would any other keycode. - -**Command**, formerly known as **Magic**, is another feature that allows you to control different aspects of your keyboard. While it shares some functionality with Bootmagic, it also allows you to do things that Bootmagic does not, such as printing version information to the console. For more information, see [Command](feature_command.md). - -On some keyboards Bootmagic is disabled by default. If this is the case, it must be explicitly enabled in your `rules.mk` with: - -```make -BOOTMAGIC_ENABLE = full -``` - -?> You may see `yes` being used in place of `full`, and this is okay. However, `yes` is deprecated, and ideally `full` (or `lite`) should be used instead. - -Additionally, you can use [Bootmagic Lite](#bootmagic-lite) (a scaled down, very basic version of Bootmagic) by adding the following to your `rules.mk` file: - -```make -BOOTMAGIC_ENABLE = lite -``` - -## Hotkeys - -Hold down the Bootmagic key (Space by default) and the desired hotkey while plugging in your keyboard. For example, holding Space+`B` should cause it to enter the bootloader. - -|Hotkey |Description | -|------------------|---------------------------------------------| -|Escape |Ignore Bootmagic configuration in EEPROM | -|`B` |Enter the bootloader | -|`D` |Toggle debugging over serial | -|`X` |Toggle key matrix debugging | -|`K` |Toggle keyboard debugging | -|`M` |Toggle mouse debugging | -|`L` |Set "Left Hand" for EE_HANDS handedness | -|`R` |Set "Right Hand" for EE_HANDS handedness | -|Backspace |Clear the EEPROM | -|Caps Lock |Toggle treating Caps Lock as Left Control | -|Left Control |Toggle swapping Caps Lock and Left Control | -|Left Alt |Toggle swapping Left Alt and Left GUI | -|Right Alt |Toggle swapping Right Alt and Right GUI | -|Left GUI |Toggle the GUI keys (useful when gaming) | -|`|Toggle swapping ` and Escape| -|`\` |Toggle swapping `\` and Backspace | -|`N` |Toggle N-Key Rollover (NKRO) | -|`0` |Make layer 0 the default layer | -|`1` |Make layer 1 the default layer | -|`2` |Make layer 2 the default layer | -|`3` |Make layer 3 the default layer | -|`4` |Make layer 4 the default layer | -|`5` |Make layer 5 the default layer | -|`6` |Make layer 6 the default layer | -|`7` |Make layer 7 the default layer | - -## Keycodes :id=keycodes - -|Key |Aliases |Description | -|----------------------------------|---------|--------------------------------------------------------------------------| -|`MAGIC_SWAP_CONTROL_CAPSLOCK` |`CL_SWAP`|Swap Caps Lock and Left Control | -|`MAGIC_UNSWAP_CONTROL_CAPSLOCK` |`CL_NORM`|Unswap Caps Lock and Left Control | -|`MAGIC_CAPSLOCK_TO_CONTROL` |`CL_CTRL`|Treat Caps Lock as Control | -|`MAGIC_UNCAPSLOCK_TO_CONTROL` |`CL_CAPS`|Stop treating Caps Lock as Control | -|`MAGIC_SWAP_LCTL_LGUI` |`LCG_SWP`|Swap Left Control and GUI | -|`MAGIC_UNSWAP_LCTL_LGUI` |`LCG_NRM`|Unswap Left Control and GUI | -|`MAGIC_SWAP_RCTL_RGUI` |`RCG_SWP`|Swap Right Control and GUI | -|`MAGIC_UNSWAP_RCTL_RGUI` |`RCG_NRM`|Unswap Right Control and GUI | -|`MAGIC_SWAP_CTL_GUI` |`CG_SWAP`|Swap Control and GUI on both sides | -|`MAGIC_UNSWAP_CTL_GUI` |`CG_NORM`|Unswap Control and GUI on both sides | -|`MAGIC_TOGGLE_CTL_GUI` |`CG_TOGG`|Toggle Control and GUI swap on both sides | -|`MAGIC_SWAP_LALT_LGUI` |`LAG_SWP`|Swap Left Alt and GUI | -|`MAGIC_UNSWAP_LALT_LGUI` |`LAG_NRM`|Unswap Left Alt and GUI | -|`MAGIC_SWAP_RALT_RGUI` |`RAG_SWP`|Swap Right Alt and GUI | -|`MAGIC_UNSWAP_RALT_RGUI` |`RAG_NRM`|Unswap Right Alt and GUI | -|`MAGIC_SWAP_ALT_GUI` |`AG_SWAP`|Swap Alt and GUI on both sides | -|`MAGIC_UNSWAP_ALT_GUI` |`AG_NORM`|Unswap Alt and GUI on both sides | -|`MAGIC_TOGGLE_ALT_GUI` |`AG_TOGG`|Toggle Alt and GUI swap on both sides | -|`MAGIC_NO_GUI` |`GUI_OFF`|Disable the GUI keys | -|`MAGIC_UNNO_GUI` |`GUI_ON` |Enable the GUI keys | -|`MAGIC_SWAP_GRAVE_ESC` |`GE_SWAP`|Swap ` and Escape | -|`MAGIC_UNSWAP_GRAVE_ESC` |`GE_NORM`|Unswap ` and Escape | -|`MAGIC_SWAP_BACKSLASH_BACKSPACE` |`BS_SWAP`|Swap `\` and Backspace | -|`MAGIC_UNSWAP_BACKSLASH_BACKSPACE`|`BS_NORM`|Unswap `\` and Backspace | -|`MAGIC_HOST_NKRO` |`NK_ON` |Enable N-key rollover | -|`MAGIC_UNHOST_NKRO` |`NK_OFF` |Disable N-key rollover | -|`MAGIC_TOGGLE_NKRO` |`NK_TOGG`|Toggle N-key rollover | -|`MAGIC_EE_HANDS_LEFT` |`EH_LEFT`|Set the master half of a split keyboard as the left hand (for `EE_HANDS`) | -|`MAGIC_EE_HANDS_RIGHT` |`EH_RGHT`|Set the master half of a split keyboard as the right hand (for `EE_HANDS`)| - -## Configuration - -If you would like to change the hotkey assignments for Bootmagic, `#define` these in your `config.h` at either the keyboard or keymap level. - -|Define |Default |Description | -|----------------------------------------|-------------|---------------------------------------------------| -|`BOOTMAGIC_KEY_SALT` |`KC_SPACE` |The Bootmagic key | -|`BOOTMAGIC_KEY_SKIP` |`KC_ESC` |Ignore Bootmagic configuration in EEPROM | -|`BOOTMAGIC_KEY_EEPROM_CLEAR` |`KC_BSPACE` |Clear the EEPROM configuration | -|`BOOTMAGIC_KEY_BOOTLOADER` |`KC_B` |Enter the bootloader | -|`BOOTMAGIC_KEY_DEBUG_ENABLE` |`KC_D` |Toggle debugging over serial | -|`BOOTMAGIC_KEY_DEBUG_MATRIX` |`KC_X` |Toggle matrix debugging | -|`BOOTMAGIC_KEY_DEBUG_KEYBOARD` |`KC_K` |Toggle keyboard debugging | -|`BOOTMAGIC_KEY_DEBUG_MOUSE` |`KC_M` |Toggle mouse debugging | -|`BOOTMAGIC_KEY_EE_HANDS_LEFT` |`KC_L` |Set "Left Hand" for EE_HANDS handedness | -|`BOOTMAGIC_KEY_EE_HANDS_RIGHT` |`KC_R` |Set "Right Hand" for EE_HANDS handedness | -|`BOOTMAGIC_KEY_SWAP_CONTROL_CAPSLOCK` |`KC_LCTRL` |Swap Left Control and Caps Lock | -|`BOOTMAGIC_KEY_CAPSLOCK_TO_CONTROL` |`KC_CAPSLOCK`|Toggle treating Caps Lock as Left Control | -|`BOOTMAGIC_KEY_SWAP_LALT_LGUI` |`KC_LALT` |Toggle swapping Left Alt and Left GUI (for macOS) | -|`BOOTMAGIC_KEY_SWAP_RALT_RGUI` |`KC_RALT` |Toggle swapping Right Alt and Right GUI (for macOS)| -|`BOOTMAGIC_KEY_NO_GUI` |`KC_LGUI` |Toggle the GUI keys (useful when gaming) | -|`BOOTMAGIC_KEY_SWAP_GRAVE_ESC` |`KC_GRAVE` |Toggle swapping ` and Escape | -|`BOOTMAGIC_KEY_SWAP_BACKSLASH_BACKSPACE`|`KC_BSLASH` |Toggle swapping `\` and Backspace | -|`BOOTMAGIC_HOST_NKRO` |`KC_N` |Toggle N-Key Rollover (NKRO) | -|`BOOTMAGIC_KEY_DEFAULT_LAYER_0` |`KC_0` |Make layer 0 the default layer | -|`BOOTMAGIC_KEY_DEFAULT_LAYER_1` |`KC_1` |Make layer 1 the default layer | -|`BOOTMAGIC_KEY_DEFAULT_LAYER_2` |`KC_2` |Make layer 2 the default layer | -|`BOOTMAGIC_KEY_DEFAULT_LAYER_3` |`KC_3` |Make layer 3 the default layer | -|`BOOTMAGIC_KEY_DEFAULT_LAYER_4` |`KC_4` |Make layer 4 the default layer | -|`BOOTMAGIC_KEY_DEFAULT_LAYER_5` |`KC_5` |Make layer 5 the default layer | -|`BOOTMAGIC_KEY_DEFAULT_LAYER_6` |`KC_6` |Make layer 6 the default layer | -|`BOOTMAGIC_KEY_DEFAULT_LAYER_7` |`KC_7` |Make layer 7 the default layer | - # Bootmagic Lite :id=bootmagic-lite -In addition to the full blown Bootmagic feature, is the Bootmagic Lite feature that only handles jumping into the bootloader. This is great for boards that don't have a physical reset button but you need a way to jump into the bootloader, and don't want to deal with the headache that Bootmagic can cause. +The Bootmagic Lite feature that only handles jumping into the bootloader. This is great for boards that don't have a physical reset button, giving you a way to jump into the bootloader -To enable this version of Bootmagic, you need to enable it in your `rules.mk` with: +On some keyboards Bootmagic Lite is disabled by default. If this is the case, it must be explicitly enabled in your `rules.mk` with: ```make -BOOTMAGIC_ENABLE = lite +BOOTMAGIC_ENABLE = yes ``` Additionally, you may want to specify which key to use. This is especially useful for keyboards that have unusual matrices. To do so, you need to specify the row and column of the key that you want to use. Add these entries to your `config.h` file: @@ -142,11 +19,11 @@ By default, these are set to 0 and 0, which is usually the "ESC" key on a majori And to trigger the bootloader, you hold this key down when plugging the keyboard in. Just the single key. -!> Using bootmagic lite will **always reset** the EEPROM, so you will lose any settings that have been saved. +!> Using Bootmagic Lite will **always reset** the EEPROM, so you will lose any settings that have been saved. ## Split Keyboards -When handedness is predetermined via an option like `SPLIT_HAND_PIN`, you might need to configure a different key between halves. This To do so, add these entries to your `config.h` file: +When handedness is predetermined via an option like `SPLIT_HAND_PIN`, you might need to configure a different key between halves. To do so, add these entries to your `config.h` file: ```c #define BOOTMAGIC_LITE_ROW_RIGHT 4 @@ -174,4 +51,10 @@ void bootmagic_lite(void) { } ``` -You can additional feature here. For instance, resetting the eeprom or requiring additional keys to be pressed to trigger bootmagic. Keep in mind that `bootmagic_lite` is called before a majority of features are initialized in the firmware. +You can additional feature here. For instance, resetting the EEPROM or requiring additional keys to be pressed to trigger Bootmagic Lite. Keep in mind that `bootmagic_lite` is called before a majority of features are initialized in the firmware. + +## Addenda + +To manipulate settings that were formerly configured through the now-deprecated full Bootmagic feature, see [Magic Keycodes](keycodes_magic.md). + +The Command feature, formerly known as Magic, also allows you to control different aspects of your keyboard. While it shares some functionality with Magic Keycodes, it also allows you to do things that Magic Keycodes cannot, such as printing version information to the console. For more information, see [Command](feature_command.md). diff --git a/docs/feature_combo.md b/docs/feature_combo.md index d831328f698b..0e7ebd6c3beb 100644 --- a/docs/feature_combo.md +++ b/docs/feature_combo.md @@ -1,24 +1,39 @@ # Combos -The Combo feature is a chording type solution for adding custom actions. It lets you hit multiple keys at once and produce a different effect. For instance, hitting `A` and `S` within the tapping term would hit `ESC` instead, or have it perform even more complex tasks. +The Combo feature is a chording type solution for adding custom actions. It lets you hit multiple keys at once and produce a different effect. For instance, hitting `A` and `S` within the combo term would hit `ESC` instead, or have it perform even more complex tasks. To enable this feature, you need to add `COMBO_ENABLE = yes` to your `rules.mk`. -Additionally, in your `config.h`, you'll need to specify the number of combos that you'll be using, by adding `#define COMBO_COUNT 1` (replacing 1 with the number that you're using). - +Additionally, in your `config.h`, you'll need to specify the number of combos that you'll be using, by adding `#define COMBO_COUNT 1` (replacing 1 with the number that you're using). It is also possible to not define this and instead set the variable `COMBO_LEN` yourself. There's a trick where we don't need to think about this variable at all. More on this later. -Also, by default, the tapping term for the Combos is set to the same value as `TAPPING_TERM` (200 by default on most boards). But you can specify a different value by defining it in your `config.h`. For instance: `#define COMBO_TERM 300` would set the time out period for combos to 300ms. -Then, your `keymap.c` file, you'll need to define a sequence of keys, terminated with `COMBO_END`, and a structure to list the combination of keys, and it's resulting action. +Then, in your `keymap.c` file, you'll need to define a sequence of keys, terminated with `COMBO_END`, and a structure to list the combination of keys, and its resulting action. ```c -const uint16_t PROGMEM test_combo[] = {KC_A, KC_B, COMBO_END}; -combo_t key_combos[COMBO_COUNT] = {COMBO(test_combo, KC_ESC)}; +const uint16_t PROGMEM test_combo1[] = {KC_A, KC_B, COMBO_END}; +const uint16_t PROGMEM test_combo2[] = {KC_C, KC_D, COMBO_END}; +combo_t key_combos[COMBO_COUNT] = { + COMBO(test_combo1, KC_ESC), + COMBO(test_combo2, LCTL(KC_Z)), // keycodes with modifiers are possible too! +}; ``` -This will send "Escape" if you hit the A and B keys. +This will send "Escape" if you hit the A and B keys, and Ctrl+Z when you hit the C and D keys. + +As of [PR#8591](https://github.com/qmk/qmk_firmware/pull/8591/), it is possible to fire combos from ModTap keys and LayerTap keys. So in the above example you could have keys `LSFT_T(KC_A)` and `LT(_LAYER, KC_B)` and it would work. So Home Row Mods and Home Row Combos at same time is now a thing! -!> This method only supports [basic keycodes](keycodes_basic.md). See the examples for more control. +It is also now possible to overlap combos. Before, with the example below both combos would activate when all three keys were pressed. Now only the three key combo will activate. + +```c +const uint16_t PROGMEM test_combo1[] = {LSFT_T(KC_A), LT(_LAYER, KC_B), COMBO_END}; +const uint16_t PROGMEM test_combo2[] = {LSFT_T(KC_A), LT(_LAYER, KC_B), KC_C, COMBO_END}; +combo_t key_combos[COMBO_COUNT] = { + COMBO(test_combo1, KC_ESC) + COMBO(test_combo2, KC_TAB) +}; +``` + +Executing more complex keycodes like ModTaps and LayerTaps is now also possible. ## Examples @@ -27,63 +42,68 @@ If you want to add a list, then you'd use something like this: ```c enum combos { AB_ESC, - JK_TAB + JK_TAB, + QW_SFT, + SD_LAYER, }; const uint16_t PROGMEM ab_combo[] = {KC_A, KC_B, COMBO_END}; const uint16_t PROGMEM jk_combo[] = {KC_J, KC_K, COMBO_END}; +const uint16_t PROGMEM qw_combo[] = {KC_Q, KC_W, COMBO_END}; +const uint16_t PROGMEM sd_combo[] = {KC_S, KC_D, COMBO_END}; combo_t key_combos[COMBO_COUNT] = { [AB_ESC] = COMBO(ab_combo, KC_ESC), - [JK_TAB] = COMBO(jk_combo, KC_TAB) + [JK_TAB] = COMBO(jk_combo, KC_TAB), + [QW_SFT] = COMBO(qw_combo, KC_LSFT) + [SD_LAYER] = COMBO(sd_combo, MO(_LAYER)), }; ``` For a more complicated implementation, you can use the `process_combo_event` function to add custom handling. +Additionally, this example shows how you can leave `COMBO_COUNT` undefined. ```c enum combo_events { - ZC_COPY, - XV_PASTE + EM_EMAIL, + BSPC_LSFT_CLEAR, + COMBO_LENGTH }; +uint16_t COMBO_LEN = COMBO_LENGTH; // remove the COMBO_COUNT define and use this instead! -const uint16_t PROGMEM copy_combo[] = {KC_Z, KC_C, COMBO_END}; -const uint16_t PROGMEM paste_combo[] = {KC_X, KC_V, COMBO_END}; +const uint16_t PROGMEM email_combo[] = {KC_E, KC_M, COMBO_END}; +const uint16_t PROGMEM clear_line_combo[] = {KC_BSPC, KC_LSFT, COMBO_END}; -combo_t key_combos[COMBO_COUNT] = { - [ZC_COPY] = COMBO_ACTION(copy_combo), - [XV_PASTE] = COMBO_ACTION(paste_combo), +combo_t key_combos[] = { + [EM_EMAIL] = COMBO_ACTION(email_combo), + [BSPC_LSFT_CLEAR] = COMBO_ACTION(clear_line_combo), }; +/* COMBO_ACTION(x) is same as COMBO(x, KC_NO) */ void process_combo_event(uint16_t combo_index, bool pressed) { switch(combo_index) { - case ZC_COPY: + case EM_EMAIL: if (pressed) { - tap_code16(LCTL(KC_C)); + SEND_STRING("john.doe@example.com"); } break; - case XV_PASTE: + case BSPC_LSFT_CLEAR: if (pressed) { - tap_code16(LCTL(KC_V)); + tap_code16(KC_END); + tap_code16(S(KC_HOME)); + tap_code16(KC_BSPC); } break; } } ``` -This will send Ctrl+C if you hit Z and C, and Ctrl+V if you hit X and V. But you could change this to do stuff like change layers, play sounds, or change settings. - -## Additional Configuration +This will send "john.doe@example.com" if you chord E and M together, and clear the current line with Backspace and Left-Shift. You could change this to do stuff like play sounds or change settings. -If you're using long combos, or even longer combos, you may run into issues with this, as the structure may not be large enough to accommodate what you're doing. +It is worth noting that `COMBO_ACTION`s are not needed anymore. As of [PR#8591](https://github.com/qmk/qmk_firmware/pull/8591/), it is possible to run your own custom keycodes from combos. Just define the custom keycode, program its functionality in `process_record_user`, and define a combo with `COMBO(, )`. -In this case, you can add either `#define EXTRA_LONG_COMBOS` or `#define EXTRA_EXTRA_LONG_COMBOS` in your `config.h` file. - -You may also be able to enable action keys by defining `COMBO_ALLOW_ACTION_KEYS`. - -## Keycodes - -You can enable, disable and toggle the Combo feature on the fly. This is useful if you need to disable them temporarily, such as for a game. +## Keycodes +You can enable, disable and toggle the Combo feature on the fly. This is useful if you need to disable them temporarily, such as for a game. The following keycodes are available for use in your `keymap.c` |Keycode |Description | |----------|---------------------------------| @@ -91,6 +111,187 @@ You can enable, disable and toggle the Combo feature on the fly. This is useful |`CMB_OFF` |Turns off Combo feature | |`CMB_TOG` |Toggles Combo feature on and off | +# Advanced Configuration +These configuration settings can be set in your `config.h` file. + +## Combo Term +By default, the timeout for the Combos to be recognized is set to 50ms. This can be changed if accidental combo misfires are happening or if you're having difficulties pressing keys at the same time. For instance, `#define COMBO_TERM 40` would set the timeout period for combos to 40ms. + +## Buffer and state sizes +If you're using long combos, or you have a lot of overlapping combos, you may run into issues with this, as the buffers may not be large enough to accommodate what you're doing. In this case, you can configure the sizes of the buffers used. Be aware, larger combo sizes and larger buffers will increase memory usage! + +To configure the amount of keys a combo can be composed of, change the following: + +| Keys | Define to be set | +|------|-----------------------------------| +| 6 | `#define EXTRA_SHORT_COMBOS` | +| 8 | QMK Default | +| 16 | `#define EXTRA_LONG_COMBOS` | +| 32 | `#define EXTRA_EXTRA_LONG_COMBOS` | + +Defining `EXTRA_SHORT_COMBOS` combines a combo's internal state into just one byte. This can, in some cases, save some memory. If it doesn't, no point using it. If you do, you also have to make sure you don't define combos with more than 6 keys. + +Processing combos has two buffers, one for the key presses, another for the combos being activated. Use the following options to configure the sizes of these buffers: + +| Define | Default | +|-------------------------------------|------------------------------------------------------| +| `#define COMBO_KEY_BUFFER_LENGTH 8` | 8 (the key amount `(EXTRA_)EXTRA_LONG_COMBOS` gives) | +| `#define COMBO_BUFFER_LENGTH 4` | 4 | + +## Modifier Combos +If a combo resolves to a Modifier, the window for processing the combo can be extended independently from normal combos. By default, this is disabled but can be enabled with `#define COMBO_MUST_HOLD_MODS`, and the time window can be configured with `#define COMBO_HOLD_TERM 150` (default: `TAPPING_TERM`). With `COMBO_MUST_HOLD_MODS`, you cannot tap the combo any more which makes the combo less prone to misfires. + +## Per Combo Timing, Holding and Tapping +For each combo, it is possible to configure the time window it has to pressed in, if it needs to be held down, or if it needs to be tapped. + +For example, tap-only combos are useful if any (or all) of the underlying keys is a Mod-Tap or a Layer-Tap key. When you tap the combo, you get the combo result. When you press the combo and hold it down, the combo doesn't actually activate. Instead the keys are processed separately as if the combo wasn't even there. + +In order to use these features, the following configuration options and functions need to be defined. Coming up with useful timings and configuration is left as an exercise for the reader. + +| Config Flag | Function | Description | +|-----------------------------|-----------------------------------------------------------|--------------------------------------------------------------------------------------------------------| +| `COMBO_TERM_PER_COMBO` | uint16_t get_combo_term(uint16_t index, combo_t \*combo) | Optional per-combo timeout window. (default: `COMBO_TERM`) | +| `COMBO_MUST_HOLD_PER_COMBO` | bool get_combo_must_hold(uint16_t index, combo_t \*combo) | Controls if a given combo should fire immediately on tap or if it needs to be held. (default: `false`) | +| `COMBO_MUST_TAP_PER_COMBO` | bool get_combo_must_tap(uint16_t index, combo_t \*combo) | Controls if a given combo should fire only if tapped within `COMBO_HOLD_TERM`. (default: `false`) | + +Examples: +```c +uint16_t get_combo_term(uint16_t index, combo_t *combo) { + // decide by combo->keycode + switch (combo->keycode) { + case KC_X: + return 50; + } + + // or with combo index, i.e. its name from enum. + switch (index) { + case COMBO_NAME_HERE: + return 9001; + } + + // And if you're feeling adventurous, you can even decide by the keys in the chord, + // i.e. the exact array of keys you defined for the combo. + // This can be useful if your combos have a common key and you want to apply the + // same combo term for all of them. + if (combo->keys[0] == KC_ENT) { // if first key in the array is Enter + return 150; + } + + return COMBO_TERM; +} + +bool get_combo_must_hold(uint16_t index, combo_t *combo) { + // Same as above, decide by keycode, the combo index, or by the keys in the chord. + + if (KEYCODE_IS_MOD(combo->keycode) || + (combo->keycode >= QK_MOMENTARY && combo->keycode <= QK_MOMENTARY_MAX) // MO(kc) keycodes + ) { + return true; + } + + switch (index) { + case COMBO_NAME_HERE: + return true; + } + + return false; +} + +bool get_combo_must_tap(uint16_t index, combo_t *combo) { + // If you want all combos to be tap-only, just uncomment the next line + // return true + + // If you want *all* combos, that have Mod-Tap/Layer-Tap/Momentary keys in its chord, to be tap-only, this is for you: + uint16_t key; + uint8_t idx = 0; + while ((key = pgm_read_word(&combo->keys[idx])) != COMBO_END) { + switch (key) { + case QK_MOD_TAP...QK_MOD_TAP_MAX: + case QK_LAYER_TAP...QK_LAYER_TAP_MAX: + case QK_MOMENTARY...QK_MOMENTARY_MAX: + return true; + } + idx += 1; + } + return false; + +} +``` + +## Variable Length Combos +If you leave `COMBO_COUNT` undefined in `config.h`, it allows you to programmatically declare the size of the Combo data structure and avoid updating `COMBO_COUNT`. Instead a variable called `COMBO_LEN` has to be set. It can be set with something similar to the following in `keymap.c`: `uint16_t COMBO_LEN = sizeof(key_combos) / sizeof(key_combos[0]);` or by adding `COMBO_LENGTH` as the *last* entry in the combo enum and then `uint16_t COMBO_LEN = COMBO_LENGTH;` as such: +```c +enum myCombos { + ..., + COMBO_LENGTH +}; +uint16_t COMBO_LEN = COMBO_LENGTH; +``` +Regardless of the method used to declare `COMBO_LEN`, this also requires to convert the `combo_t key_combos[COMBO_COUNT] = {...};` line to `combo_t key_combos[] = {...};`. + + +## Combo timer + +Normally, the timer is started on the first key press and then reset on every subsequent key press within the `COMBO_TERM`. +Inputting combos is relaxed like this, but also slightly more prone to accidental misfires. + +The next two options alter the behaviour of the timer. + +### `#define COMBO_STRICT_TIMER` + +With `COMBO_STRICT_TIMER`, the timer is started only on the first key press. +Inputting combos is now less relaxed; you need to make sure the full chord is pressed within the `COMBO_TERM`. +Misfires are less common but if you type multiple combos fast, there is a +chance that the latter ones might not activate properly. + +### `#define COMBO_NO_TIMER` + +By defining `COMBO_NO_TIMER`, the timer is disabled completely and combos are activated on the first key release. +This also disables the "must hold" functionalities as they just wouldn't work at all. + +## Customizable key releases + +By defining `COMBO_PROCESS_KEY_RELEASE` and implementing the function `bool process_combo_key_release(uint16_t combo_index, combo_t *combo, uint8_t key_index, uint16_t keycode)`, you can run your custom code on each key release after a combo was activated. For example you could change the RGB colors, activate haptics, or alter the modifiers. + +You can also release a combo early by returning `true` from the function. + +Here's an example where a combo resolves to two modifiers, and on key releases the modifiers are unregistered one by one, depending on which key was released. + +```c +enum combos { + AB_MODS, + COMBO_LENGTH +}; +uint16_t COMBO_LEN = COMBO_LENGTH; + +const uint16_t PROGMEM ab_combo[] = {KC_A, KC_B, COMBO_END}; + +combo_t key_combos[] = { + [AB_MODS] = COMBO(ab_combo, LCTL(KC_LSFT)), +}; + +bool process_combo_key_release(uint16_t combo_index, combo_t *combo, uint8_t key_index, uint16_t keycode) { + switch (combo_index) { + case AB_MODS: + switch(keycode) { + case KC_A: + unregister_mods(MOD_MASK_CTRL); + break; + case KC_B: + unregister_mods(MOD_MASK_SHIFT); + break; + } + return false; // do not release combo + } + return false; +} +``` +## Layer independent combos + +If you, for example, use multiple base layers for different key layouts, one for QWERTY, and another one for Colemak, you might want your combos to work from the same key positions on all layers. Defining the same combos again for another layout is redundant and takes more memory. The solution is to just check the keycodes from one layer. + +With `#define COMBO_ONLY_FROM_LAYER _LAYER_A` the combos' keys are always checked from layer `_LAYER_A` even though the active layer would be `_LAYER_B`. + ## User callbacks In addition to the keycodes, there are a few functions that you can use to set the status, or check it: @@ -101,3 +302,28 @@ In addition to the keycodes, there are a few functions that you can use to set t | `combo_disable()` | Disables the combo feature, and clears the combo buffer | | `combo_toggle()` | Toggles the state of the combo feature | | `is_combo_enabled()` | Returns the status of the combo feature state (true or false) | + + +# Dictionary Management + +Having 3 places to update when adding new combos or altering old ones does become cumbersome when you have a lot of combos. We can alleviate this with some magic! ... If you consider C macros magic. +First, you need to add `VPATH += keyboards/gboards` to your `rules.mk`. Next, include the file `g/keymap_combo.h` in your `keymap.c`. + +!> This functionality uses the same `process_combo_event` function as `COMBO_ACTION` macros do, so you cannot use the function yourself in your keymap. Instead, you have to define the `case`s of the `switch` statement by themselves within `inject.h`, which `g/keymap_combo.h` will then include into the function. + +Then, write your combos in `combos.def` file in the following manner: + +```c +// name result chord keys +COMB(AB_ESC, KC_ESC, KC_A, KC_B) +COMB(JK_TAB, KC_TAB, KC_J, KC_K) +COMB(JKL_SPC, KC_SPC, KC_J, KC_K, KC_L) +COMB(BSSL_CLR, KC_NO, KC_BSPC, KC_LSFT) // using KC_NO as the resulting keycode is the same as COMBO_ACTION before. +COMB(QW_UNDO, C(KC_Z), KC_Q, KC_W) +SUBS(TH_THE, "the", KC_T, KC_H) // SUBS uses SEND_STRING to output the given string. +... +``` + +Now, you can update only one place to add or alter combos. You don't even need to remember to update the `COMBO_COUNT` or the `COMBO_LEN` variables at all. Everything is taken care of. Magic! + +For small to huge ready made dictionaries of combos, you can check out http://combos.gboards.ca/. diff --git a/docs/feature_command.md b/docs/feature_command.md index a4ce3f5aea0a..830006613102 100644 --- a/docs/feature_command.md +++ b/docs/feature_command.md @@ -1,6 +1,6 @@ # Command -Command, formerly known as Magic, is a way to change your keyboard's behavior without having to flash or unplug it to use [Bootmagic](feature_bootmagic.md). There is a lot of overlap between this functionality and the [Bootmagic Keycodes](feature_bootmagic.md#keycodes). Wherever possible we encourage you to use that feature instead of Command. +Command, formerly known as Magic, is a way to change your keyboard's behavior without having to flash or unplug it to use [Bootmagic Lite](feature_bootmagic.md). There is a lot of overlap between this functionality and the [Magic Keycodes](keycodes_magic.md). Wherever possible we encourage you to use that feature instead of Command. On some keyboards Command is disabled by default. If this is the case, it must be explicitly enabled in your `rules.mk`: diff --git a/docs/feature_debounce_type.md b/docs/feature_debounce_type.md index 3ad74224c173..f37a785b1e78 100644 --- a/docs/feature_debounce_type.md +++ b/docs/feature_debounce_type.md @@ -92,15 +92,6 @@ susceptible to noise, you must choose a debounce method that will also mitigate ## Debounce algorithms supported by QMK QMK supports multiple debounce algorithms through its debounce API. -The logic for which debounce method called is below. It checks various defines that you have set in ```rules.mk``` - -``` -DEBOUNCE_DIR:= $(QUANTUM_DIR)/debounce -DEBOUNCE_TYPE?= sym_defer_g -ifneq ($(strip $(DEBOUNCE_TYPE)), custom) - QUANTUM_SRC += $(DEBOUNCE_DIR)/$(strip $(DEBOUNCE_TYPE)).c -endif -``` ### Debounce selection @@ -121,16 +112,16 @@ DEBOUNCE_TYPE = Where name of algorithm is one of: * ```sym_defer_g``` - debouncing per keyboard. On any state change, a global timer is set. When ```DEBOUNCE``` milliseconds of no changes has occurred, all input changes are pushed. * This is the current default algorithm. This is the highest performance algorithm with lowest memory usage, and it's also noise-resistant. -* ```sym_eager_pr``` - debouncing per row. On any state change, response is immediate, followed by locking the row ```DEBOUNCE``` milliseconds of no further input for that row. +* ```sym_eager_pr``` - debouncing per row. On any state change, response is immediate, followed by locking the row ```DEBOUNCE``` milliseconds of no further input for that row. For use in keyboards where refreshing ```NUM_KEYS``` 8-bit counters is computationally expensive / low scan rate, and fingers usually only hit one row at a time. This could be appropriate for the ErgoDox models; the matrix is rotated 90°, and hence its "rows" are really columns, and each finger only hits a single "row" at a time in normal use. * ```sym_eager_pk``` - debouncing per key. On any state change, response is immediate, followed by ```DEBOUNCE``` milliseconds of no further input for that key * ```sym_defer_pk``` - debouncing per key. On any state change, a per-key timer is set. When ```DEBOUNCE``` milliseconds of no changes have occurred on that key, the key status change is pushed. +* ```asym_eager_defer_pk``` - debouncing per key. On a key-down state change, response is immediate, followed by ```DEBOUNCE``` milliseconds of no further input for that key. On a key-up state change, a per-key timer is set. When ```DEBOUNCE``` milliseconds of no changes have occurred on that key, the key-up status change is pushed. ### A couple algorithms that could be implemented in the future: * ```sym_defer_pr``` * ```sym_eager_g``` -* ```asym_eager_defer_pk``` ### Use your own debouncing code You have the option to implement you own debouncing algorithm. To do this: @@ -140,11 +131,3 @@ You have the option to implement you own debouncing algorithm. To do this: * Debouncing occurs after every raw matrix scan. * Use num_rows rather than MATRIX_ROWS, so that split keyboards are supported correctly. * If the algorithm might be applicable to other keyboards, please consider adding it to ```quantum/debounce``` - -### Old names -The following old names for existing algorithms will continue to be supported, however it is recommended to use the new names instead. - -* sym_g - old name for sym_defer_g -* eager_pk - old name for sym_eager_pk -* sym_pk - old name for sym_defer_pk -* eager_pr - old name for sym_eager_pr diff --git a/docs/feature_digitizer.md b/docs/feature_digitizer.md new file mode 100644 index 000000000000..ac2d64f9777c --- /dev/null +++ b/docs/feature_digitizer.md @@ -0,0 +1,35 @@ +## Digitizer + +The digitizer HID interface allows setting the mouse cursor position at absolute coordinates, unlike the Pointing Device feature that applies relative displacements. + +To enable the digitizer interface, add the following line to your rules.mk: + +```make +DIGITIZER_ENABLE = yes +``` + +In order to change the mouse cursor position from your keymap.c file, include the digitizer header : + +```c +#include "digitizer.h" +``` + +This gives you access to the `digitizer` structure which members allow you to change the cursor position. + +The coordinates are normalized, meaning there value must be set between 0 and 1. For the `x` coordinate, the value `0` is the leftmost position, whereas the value `1` is the rightmost position. +For the `y` coordinate, `0` is at the top and `1` at the bottom. + +Here is an example setting the cursor in the middle of the screen: + +```c +digitizer_t digitizer; +digitizer.x = 0.5; +digitizer.y = 0.5; +digitizer.tipswitch = 0; +digitizer.inrange = 1; +digitizer_set_report(digitizer); +``` + +The `tipswitch` member triggers what equates to a click when set to `1`. The `inrange` member is required for the change in coordinates to be taken. It can then be set to `0` in a new report to signal the end of the digitizer interaction, but it is not strictly required. + +Once all members are set to the desired value, the `status` member needs its bitmask `DZ_UPDATED` to be set so the report is sent during the next main loop iteration. diff --git a/docs/feature_dip_switch.md b/docs/feature_dip_switch.md index 15e449c4c465..6fbe91657d50 100644 --- a/docs/feature_dip_switch.md +++ b/docs/feature_dip_switch.md @@ -9,6 +9,8 @@ and this to your `config.h`: ```c // Connects each switch in the dip switch to the GPIO pin of the MCU #define DIP_SWITCH_PINS { B14, A15, A10, B9 } +// For split keyboards, you can separately define the right side pins +#define DIP_SWITCH_PINS_RIGHT { ... } ``` or @@ -23,8 +25,9 @@ or The callback functions can be inserted into your `.c`: ```c -void dip_switch_update_kb(uint8_t index, bool active) { - dip_switch_update_user(index, active); +bool dip_switch_update_kb(uint8_t index, bool active) { + if (!dip_switch_update_user(index, active)) { return false; } + return true; } ``` @@ -32,7 +35,7 @@ void dip_switch_update_kb(uint8_t index, bool active) { or `keymap.c`: ```c -void dip_switch_update_user(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: if(active) { audio_on(); } else { audio_off(); } @@ -57,6 +60,7 @@ void dip_switch_update_user(uint8_t index, bool active) { } break; } + return true; } ``` @@ -64,8 +68,9 @@ Additionally, we support bit mask functions which allow for more complex handlin ```c -void dip_switch_update_mask_kb(uint32_t state) { - dip_switch_update_mask_user(state); +bool dip_switch_update_mask_kb(uint32_t state) { + if (!dip_switch_update_mask_user(state)) { return false; } + return true; } ``` @@ -73,7 +78,7 @@ void dip_switch_update_mask_kb(uint32_t state) { or `keymap.c`: ```c -void dip_switch_update_mask_user(uint32_t state) { +bool dip_switch_update_mask_user(uint32_t state) { if (state & (1UL<<0) && state & (1UL<<1)) { layer_on(_ADJUST); // C on esc } else { @@ -89,10 +94,10 @@ void dip_switch_update_mask_user(uint32_t state) { } else { layer_off(_TEST_B); } + return true; } ``` - ## Hardware ### Connects each switch in the dip switch to the GPIO pin of the MCU diff --git a/docs/feature_encoders.md b/docs/feature_encoders.md index a56f093a3989..8e854c1e5868 100644 --- a/docs/feature_encoders.md +++ b/docs/feature_encoders.md @@ -38,6 +38,12 @@ It can also be defined per-encoder, by instead defining: #define ENCODER_RESOLUTIONS { 4, 2 } ``` +For 4× encoders you also can assign default position if encoder skips pulses when it changes direction. For example, if your encoder send high level on both pins by default, define this: + +```c +#define ENCODER_DEFAULT_POS 0x3 +``` + ## Split Keyboards If you are using different pinouts for the encoders on each half of a split keyboard, you can define the pinout (and optionally, resolutions) for the right half like this: @@ -75,7 +81,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { tap_code(KC_UP); } } - return true; + return false; } ``` diff --git a/docs/feature_grave_esc.md b/docs/feature_grave_esc.md index f57c6042ca5a..f135b1dede5d 100644 --- a/docs/feature_grave_esc.md +++ b/docs/feature_grave_esc.md @@ -4,7 +4,7 @@ If you're using a 60% keyboard, or any other layout with no F-row, you will have ## Usage -Replace the `KC_GRAVE` key in your keymap (usually to the left of the `1` key) with `KC_GESC`. Most of the time this key will output `KC_ESC` when pressed. However, when Shift or GUI are held down it will output `KC_GRV` instead. +Replace the `KC_GRV` key in your keymap (usually to the left of the `1` key) with `KC_GESC`. Most of the time this key will output `KC_ESC` when pressed. However, when Shift or GUI are held down it will output `KC_GRV` instead. ## What Your OS Sees diff --git a/docs/feature_haptic_feedback.md b/docs/feature_haptic_feedback.md index a092e784c779..c8c74cb8f0ee 100644 --- a/docs/feature_haptic_feedback.md +++ b/docs/feature_haptic_feedback.md @@ -4,9 +4,22 @@ The following options are currently available for haptic feedback in `rules.mk`: -`HAPTIC_ENABLE += DRV2605L` +``` +HAPTIC_ENABLE = yes + +HAPTIC_DRIVER += DRV2605L +HAPTIC_DRIVER += SOLENOID +``` + +The following `config.h` settings are available for all types of haptic feedback: -`HAPTIC_ENABLE += SOLENOID` +| Settings | Default | Description | +|--------------------------------------|---------------|---------------------------------------------------------------------------------------------------------------| +|`HAPTIC_ENABLE_PIN` | *Not defined* |Configures a pin to enable a boost converter for some haptic solution, often used with solenoid drivers. | +|`HAPTIC_ENABLE_PIN_ACTIVE_LOW` | *Not defined* |If defined then the haptic enable pin is active-low. | +|`HAPTIC_ENABLE_STATUS_LED` | *Not defined* |Configures a pin to reflect the current enabled/disabled status of haptic feedback. | +|`HAPTIC_ENABLE_STATUS_LED_ACTIVE_LOW` | *Not defined* |If defined then the haptic status led will be active-low. | +|`HAPTIC_OFF_IN_LOW_POWER` | `0` |If set to `1`, haptic feedback is disabled before the device is configured, and while the device is suspended. | ## Known Supported Hardware @@ -45,6 +58,7 @@ First you will need a build a circuit to drive the solenoid through a mosfet as | Settings | Default | Description | |----------------------------|----------------------|-------------------------------------------------------| |`SOLENOID_PIN` | *Not defined* |Configures the pin that the Solenoid is connected to. | +|`SOLENOID_PIN_ACTIVE_LOW` | *Not defined* |If defined then the solenoid trigger pin is active low.| |`SOLENOID_DEFAULT_DWELL` | `12` ms |Configures the default dwell time for the solenoid. | |`SOLENOID_MIN_DWELL` | `4` ms |Sets the lower limit for the dwell. | |`SOLENOID_MAX_DWELL` | `100` ms |Sets the upper limit for the dwell. | @@ -162,4 +176,35 @@ This will set what sequence HPT_RST will set as the active mode. If not defined, ### DRV2605L Continuous Haptic Mode -This mode sets continuous haptic feedback with the option to increase or decrease strength. +This mode sets continuous haptic feedback with the option to increase or decrease strength. + +## Haptic Key Exclusion +The Haptic Exclusion is implemented as `__attribute__((weak)) bool get_haptic_enabled_key(uint16_t keycode, keyrecord_t *record)` in haptic.c. This allows a re-definition at the required level with the specific requirement / exclusion. + +### NO_HAPTIC_MOD +With the entry of `#define NO_HAPTIC_MOD` in config.h, the following keys will not trigger feedback: + +* Usual modifier keys such as Control/Shift/Alt/Gui (For example `KC_LCTL`) +* `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). + +### NO_HAPTIC_FN +With the entry of `#define NO_HAPTIC_FN` in config.h, deprecated `fn_actions` type function keys will not trigger a feedback. + +### NO_HAPTIC_ALPHA +With the entry of `#define NO_HAPTIC_ALPHA` in config.h, none of the alpha keys (A ... Z) will trigger a feedback. + +### NO_HAPTIC_PUNCTUATION +With the entry of `#define NO_HAPTIC_PUNCTUATION` in config.h, none of the following keys will trigger a feedback: Enter, ESC, Backspace, Space, Minus, Equal, Left Bracket, Right Bracket, Backslash, Non-US Hash, Semicolon, Quote, Grave, Comma, Slash, Dot, Non-US Backslash. + +### NO_HAPTIC_LOCKKEYS +With the entry of `#define NO_HAPTIC_LOCKKEYS` in config.h, none of the following keys will trigger a feedback: Caps Lock, Scroll Lock, Num Lock. + +### NO_HAPTIC_NAV +With the entry of `#define NO_HAPTIC_NAV` in config.h, none of the following keys will trigger a feedback: Print Screen, Pause, Insert, Delete, Page Down, Page Up, Left Arrow, Up Arrow, Right Arrow, Down Arrow, End, Home. + +### NO_HAPTIC_NUMERIC +With the entry of `#define NO_HAPTIC_NUMERIC` in config.h, none of the following keys between 0 and 9 (KC_1 ... KC_0) will trigger a feedback. \ No newline at end of file diff --git a/docs/feature_joystick.md b/docs/feature_joystick.md index 12bbf5b35eff..fe33517a1619 100644 --- a/docs/feature_joystick.md +++ b/docs/feature_joystick.md @@ -2,8 +2,6 @@ The keyboard can be made to be recognized as a joystick HID device by the operating system. -This is enabled by adding `JOYSTICK_ENABLE` to `rules.mk`. You can set this value to `analog`, `digital`, or `no`. - !> Joystick support is not currently available on V-USB devices. The joystick feature provides two services: @@ -17,8 +15,9 @@ or send gamepad reports based on values computed by the keyboard. To use analog input you must first enable it in `rules.mk`: -```makefile -JOYSTICK_ENABLE = analog +```make +JOYSTICK_ENABLE = yes +JOYSTICK_DRIVER = analog # or 'digital' ``` An analog device such as a potentiometer found on a gamepad's analog axes is based on a [voltage divider](https://en.wikipedia.org/wiki/Voltage_divider). diff --git a/docs/feature_key_overrides.md b/docs/feature_key_overrides.md new file mode 100644 index 000000000000..2417fcf5942b --- /dev/null +++ b/docs/feature_key_overrides.md @@ -0,0 +1,229 @@ +# Key Overrides + +Key overrides allow you to override modifier-key combinations to send a different modifier-key combination or perform completely custom actions. Don't want `shift` + `1` to type `!` on your computer? Use a key override to make your keyboard type something different when you press `shift` + `1`. The general behavior is like this: If `modifiers w` + `key x` are pressed, replace these keys with `modifiers y` + `key z` in the keyboard report. + +You can use key overrides in a similar way to momentary layer/fn keys to activate custom keycodes/shortcuts, with a number of benefits: You completely keep the original use of the modifier keys, while being able to save space by removing fn keys from your keyboard. You can also easily configure _combinations of modifiers_ to trigger different actions than individual modifiers, and much more. The possibilities are quite vast and this documentation contains a few examples for inspiration throughout. + +##### A few more examples to get started: You could use key overrides to... +- Send `brightness up/down` when pressing `ctrl` + `volume up/down`. +- Send `delete` when pressing `shift` + `backspace`. +- Create custom shortcuts or change existing ones: E.g. Send `ctrl`+`shift`+`z` when `ctrl`+`y` is pressed. +- Run custom code when `ctrl` + `alt` + `esc` is pressed. + +## Setup + +To enable this feature, you need to add `KEY_OVERRIDE_ENABLE = yes` to your `rules.mk`. + +Then, in your `keymap.c` file, you'll need to define the array `key_overrides`, which defines all key overrides to be used. Each override is a value of type `key_override_t`. The array `key_overrides` is `NULL`-terminated and contains pointers to `key_override_t` values (`const key_override_t **`). + +## Creating Key Overrides + +The `key_override_t` struct has many options that allow you to precisely tune your overrides. The full reference is shown below. Instead of manually creating a `key_override_t` value, it is recommended to use these dedicated initializers: + +#### `ko_make_basic(modifiers, key, replacement)` +Returns a `key_override_t`, which sends `replacement` (can be a key-modifer combination), when `key` and `modifiers` are all pressed down. This override still activates if any additional modifiers not specified in `modifiers` are also pressed down. See `ko_make_with_layers_and_negmods` to customize this behavior. + +#### `ko_make_with_layers(modifiers, key, replacement, layers)` +Additionally takes a bitmask `layers` that defines on which layers the override is used. + +#### `ko_make_with_layers_and_negmods(modifiers, key, replacement, layers, negative_mods)` +Additionally takes a bitmask `negative_mods` that defines which modifiers may not be pressed for this override to activate. + +#### `ko_make_with_layers_negmods_and_options(modifiers, key, replacement, layers, negative_mods, options)` +Additionally takes a bitmask `options` that specifies additional options. See `ko_option_t` for available options. + +For more customization possibilities, you may directly create a `key_override_t`, which allows you to customize even more behavior. Read further below for details and examples. + +## Simple Example + +This shows how the mentioned example of sending `delete` when `shift` + `backspace` are pressed is realized: + +```c +const key_override_t delete_key_override = ko_make_basic(MOD_MASK_SHIFT, KC_BSPC, KC_DEL); + +// This globally defines all key overrides to be used +const key_override_t **key_overrides = (const key_override_t *[]){ + &delete_key_override, + NULL // Null terminate the array of overrides! +}; +``` + +## Intermediate Difficulty Examples + +### Media Controls & Screen Brightness + +In this example a single key is configured to control media, volume and screen brightness by using key overrides. + +- The key is set to send `play/pause` in the keymap. + +The following key overrides will be configured: + +- `Ctrl` + `play/pause` will send `next track`. +- `Ctrl` + `Shift` + `play/pause` will send `previous track`. +- `Alt` + `play/pause` will send `volume up`. +- `Alt` + `Shift` + `play/pause` will send `volume down`. +- `Ctrl` + `Alt` + `play/pause` will send `brightness up`. +- `Ctrl` + `Alt` + `Shift` + `play/pause` will send `brightness down`. + + +```c +const key_override_t next_track_override = + ko_make_with_layers_negmods_and_options( + MOD_MASK_CTRL, // Trigger modifiers: ctrl + KC_MPLY, // Trigger key: play/pause + KC_MNXT, // Replacement key + ~0, // Activate on all layers + MOD_MASK_SA, // Do not activate when shift or alt are pressed + ko_option_no_reregister_trigger); // Specifies that the play key is not registered again after lifting ctrl + +const key_override_t prev_track_override = ko_make_with_layers_negmods_and_options(MOD_MASK_CS, KC_MPLY, + KC_MPRV, ~0, MOD_MASK_ALT, ko_option_no_reregister_trigger); + +const key_override_t vol_up_override = ko_make_with_layers_negmods_and_options(MOD_MASK_ALT, KC_MPLY, + KC_VOLU, ~0, MOD_MASK_CS, ko_option_no_reregister_trigger); + +const key_override_t vol_down_override = ko_make_with_layers_negmods_and_options(MOD_MASK_SA, KC_MPLY, + KC_VOLD, ~0, MOD_MASK_CTRL, ko_option_no_reregister_trigger); + +const key_override_t brightness_up_override = ko_make_with_layers_negmods_and_options(MOD_MASK_CA, KC_MPLY, + KC_BRIU, ~0, MOD_MASK_SHIFT, ko_option_no_reregister_trigger); + +const key_override_t brightness_down_override = ko_make_basic(MOD_MASK_CSA, KC_MPLY, KC_BRID); + +// This globally defines all key overrides to be used +const key_override_t **key_overrides = (const key_override_t *[]){ + &next_track_override, + &prev_track_override, + &vol_up_override, + &vol_down_override, + &brightness_up_override, + &brightness_down_override, + NULL +}; +``` + +### Flexible macOS-friendly Grave Escape +The [Grave Escape feature](feature_grave_esc.md) is limited in its configurability and has [bugs when used on macOS](feature_grave_esc.md#caveats). Key overrides can be used to achieve a similar functionality as Grave Escape, but with more customization and without bugs on macOS. + +```c +// Shift + esc = ~ +const key_override_t tilde_esc_override = ko_make_basic(MOD_MASK_SHIFT, KC_ESC, S(KC_GRV)); + +// GUI + esc = ` +const key_override_t grave_esc_override = ko_make_basic(MOD_MASK_GUI, KC_ESC, KC_GRV); + +const key_override_t **key_overrides = (const key_override_t *[]){ + &tilde_esc_override, + &grave_esc_override, + NULL +}; +``` + +In addition to not encountering unexpected bugs on macOS, you can also change the behavior as you wish. Instead setting `GUI` + `ESC` = `` ` `` you may change it to an arbitrary other modifier, for example `Ctrl` + `ESC` = `` ` ``. + +## Advanced Examples +### Modifiers as Layer Keys + +Do you really need a dedicated key to toggle your fn layer? With key overrides, perhaps not. This example shows how you can configure to use `rGUI` + `rAlt` (right GUI and right alt) to access a momentary layer like an fn layer. With this you completely eliminate the need to use a dedicated layer key. Of course the choice of modifier keys can be changed as needed, `rGUI` + `rAlt` is just an example here. + +```c +// This is called when the override activates and deactivates. Enable the fn layer on activation and disable on deactivation +bool momentary_layer(bool key_down, void *layer) { + if (key_down) { + layer_on((uint8_t)(uintptr_t)layer); + } else { + layer_off((uint8_t)(uintptr_t)layer); + } + + return false; +} + +const key_override_t fn_override = {.trigger_mods = MOD_BIT(KC_RGUI) | MOD_BIT(KC_RCTL), // + .layers = ~(1 << LAYER_FN), // + .suppressed_mods = MOD_BIT(KC_RGUI) | MOD_BIT(KC_RCTL), // + .options = ko_option_no_unregister_on_other_key_down, // + .negative_mod_mask = (uint8_t) ~(MOD_BIT(KC_RGUI) | MOD_BIT(KC_RCTL)), // + .custom_action = momentary_layer, // + .context = (void *)LAYER_FN, // + .trigger = KC_NO, // + .replacement = KC_NO, // + .enabled = NULL}; +``` + +## Keycodes + +You can enable, disable and toggle all key overrides on the fly. + +|Keycode |Description |Function Equivalent| +|----------|---------------------------------|--------| +|`KEY_OVERRIDE_ON` |Turns on Key Override feature | `key_override_on(void)`| +|`KEY_OVERRIDE_OFF` |Turns off Key Override feature |`key_override_off(void)`| +|`KEY_OVERRIDE_TOGGLE` |Toggles Key Override feature on and off |`key_override_toggle(void)`| + +## Reference for `key_override_t` + +Advanced users may need more customization than what is offered by the simple `ko_make` initializers. For this, directly create a `key_override_t` value and set all members. Below is a reference for all members of `key_override_t`. + +| Member | Description | +|--------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `uint16_t trigger` | The non-modifier keycode that triggers the override. This keycode, and the necessary modifiers (`trigger_mods`) must be pressed to activate this override. Set this to the keycode of the key that should activate the override. Set to `KC_NO` to require only the necessary modifiers to be pressed and no non-modifier. | +| `uint8_t trigger_mods` | Which mods need to be down for activation. If both sides of a modifier are set (e.g. left ctrl and right ctrl) then only one is required to be pressed (e.g. left ctrl suffices). Use the `MOD_MASK_XXX` and `MOD_BIT()` macros for this. | +| `layer_state_t layers` | This is a BITMASK (!), defining which layers this override applies to. To use this override on layer i set the ith bit `(1 << i)`. | +| `uint8_t negative_mod_mask` | Which modifiers cannot be down. It must hold that `(active_modifiers & negative_mod_mask) == 0`, otherwise the key override will not be activated. An active override will be deactivated once this is no longer true. | +| `uint8_t suppressed_mods` | Modifiers to 'suppress' while the override is active. To suppress a modifier means that even though the modifier key is held down, the host OS sees the modifier as not pressed. Can be used to suppress the trigger modifiers, as a trivial example. | +| `uint16_t replacement` | The complex keycode to send as replacement when this override is triggered. This can be a simple keycode, a key-modifier combination (e.g. `C(KC_A)`), or `KC_NO` (to register no replacement keycode). Use in combination with suppressed_mods to get the correct modifiers to be sent. | +| `ko_option_t options` | Options controlling the behavior of the override, such as what actions are allowed to activate the override. | +| `bool (*custom_action)(bool activated, void *context)` | If not NULL, this function will be called right before the replacement key is registered, along with the provided context and a flag indicating whether the override was activated or deactivated. This function allows you to run some custom actions for specific key overrides. If you return `false`, the replacement key is not registered/unregistered as it would normally. Return `true` to register and unregister the override normally. | +| `void *context` | A context that will be passed to the custom action function. | +| `bool *enabled` | If this points to false this override will not be used. Set to NULL to always have this override enabled. | + +### Reference for `ko_option_t` + +Bitfield with various options controlling the behavior of a key override. + +| Value | Description | +|------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `ko_option_activation_trigger_down` | Allow activating when the trigger key is pressed down. | +| `ko_option_activation_required_mod_down` | Allow activating when a necessary modifier is pressed down. | +| `ko_option_activation_negative_mod_up` | Allow activating when a negative modifier is released. | +| `ko_option_one_mod` | If set, any of the modifiers in `trigger_mods` will be enough to activate the override (logical OR of modifiers). If not set, all the modifiers in `trigger_mods` have to be pressed (logical AND of modifiers). | +| `ko_option_no_unregister_on_other_key_down` | If set, the override will not deactivate when another key is pressed down. Use only if you really know you need this. | +| `ko_option_no_reregister_trigger` | If set, the trigger key will never be registered again after the override is deactivated. | +| `ko_options_default` | The default options used by the `ko_make_xxx` functions | + +## For Advanced Users: Inner Workings + +This section explains how a key override works in detail, explaining where each member of `key_override_t` comes into play. Understanding this is essential to be able to take full advantage of all the options offered by key overrides. + +#### Activation + +When the necessary keys are pressed (`trigger_mods` + `trigger`), the override is 'activated' and the replacement key is registered in the keyboard report (`replacement`), while the `trigger` key is removed from the keyboard report. The trigger modifiers may also be removed from the keyboard report upon activation of an override (`suppressed_mods`). The override will not activate if any of the `negative_modifiers` are pressed. + +Overrides can activate in three different cases: + +1. The trigger key is pressed down and necessary modifiers are already down. +2. A necessary modifier is pressed down, while the trigger key and other necessary modifiers are already down. +3. A negative modifier is released, while all necessary modifiers and the trigger key are already down. + +Use the `option` member to customize which of these events are allowed to activate your overrides (default: all three). + +In any case, a key override can only activate if the `trigger` key is the _last_ non-modifier key that was pressed down. This emulates the behavior of how standard OSes (macOS, Windows, Linux) handle normal key input (to understand: Hold down `a`, then also hold down `b`, then hold down `shift`; `B` will be typed but not `A`). + +#### Deactivation + +An override is 'deactivated' when one of the trigger keys (`trigger_mods`, `trigger`) is lifted, another non-modifier key is pressed down, or one of the `negative_modifiers` is pressed down. When an override deactivates, the `replacement` key is removed from the keyboard report, while the `suppressed_mods` that are still held down are re-added to the keyboard report. By default, the `trigger` key is re-added to the keyboard report if it is still held down and no other non-modifier key has been pressed since. This again emulates the behavior of how standard OSes handle normal key input (To understand: hold down `a`, then also hold down `b`, then also `shift`, then release `b`; `A` will not be typed even though you are holding the `a` and `shift` keys). Use the `option` field `ko_option_no_reregister_trigger` to prevent re-registering the trigger key in all cases. + +#### Key Repeat Delay + +A third way in which standard OS-handling of modifier-key input is emulated in key overrides is with a ['key repeat delay'](https://www.dummies.com/computers/pcs/set-your-keyboards-repeat-delay-and-repeat-rate/). To explain what this is, let's look at how normal keyboard input is handled by mainstream OSes again: If you hold down `a`, followed by `shift`, you will see the letter `a` is first typed, then for a short moment nothing is typed and then repeating `A`s are typed. Take note that, although shift is pressed down just after `a` is pressed, it takes a moment until `A` is typed. This is caused by the aforementioned key repeat delay, and it is a feature that prevents unwanted repeated characters from being typed. + +This applies equally to releasing a modifier: When you hold `shift`, then press `a`, the letter `A` is typed. Now if you release `shift` first, followed by `a` shortly after, you will not see the letter `a` being typed, even though for a short moment of time you were just holding down the key `a`. This is because no modified characters are typed until the key repeat delay has passed. + + This exact behavior is implemented in key overrides as well: If a key override for `shift` + `a` = `b` exists, and `a` is pressed and held, followed by `shift`, you will not immediately see the letter `b` being typed. Instead, this event is deferred for a short moment, until the key repeat delay has passed, measured from the moment when the trigger key (`a`) was pressed down. + +The duration of the key repeat delay is controlled with the `KEY_OVERRIDE_REPEAT_DELAY` macro. Define this value in your `config.h` file to change it. It is 500ms by default. + + +## Difference to Combos + +Note that key overrides are very different from [combos](https://docs.qmk.fm/#/feature_combo). Combos require that you press down several keys almost _at the same time_ and can work with any combination of non-modifier keys. Key overrides work like keyboard shortcuts (e.g. `ctrl` + `z`): They take combinations of _multiple_ modifiers and _one_ non-modifier key to then perform some custom action. Key overrides are implemented with much care to behave just like normal keyboard shortcuts would in regards to the order of pressed keys, timing, and interacton with other pressed keys. There are a number of optional settings that can be used to really fine-tune the behavior of each key override as well. Using key overrides also does not delay key input for regular key presses, which inherently happens in combos and may be undesirable. diff --git a/docs/feature_layers.md b/docs/feature_layers.md index 78d950dc4969..e30c540a79e6 100644 --- a/docs/feature_layers.md +++ b/docs/feature_layers.md @@ -45,7 +45,7 @@ Once you have a good feel for how layers work and what you can do, you can get m Layers stack on top of each other in numerical order. When determining what a keypress does, QMK scans the layers from the top down, stopping when it reaches the first active layer that is not set to `KC_TRNS`. As a result if you activate a layer that is numerically lower than your current layer, and your current layer (or another layer that is active and higher than your target layer) has something other than `KC_TRNS`, that is the key that will be sent, not the key on the layer you just activated. This is the cause of most people's "why doesn't my layer get switched" problem. -Sometimes, you might want to switch between layers in a macro or as part of a tap dance routine. `layer_on` activates a layer, and `layer_off` deactivates it. More layer-related functions can be found in [action_layer.h](https://github.com/qmk/qmk_firmware/blob/master/tmk_core/common/action_layer.h). +Sometimes, you might want to switch between layers in a macro or as part of a tap dance routine. `layer_on` activates a layer, and `layer_off` deactivates it. More layer-related functions can be found in [action_layer.h](https://github.com/qmk/qmk_firmware/blob/master/quantum/action_layer.h). ## Functions :id=functions diff --git a/docs/feature_layouts.md b/docs/feature_layouts.md index b34fd442d5c2..93d040b5542c 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_led_indicators.md b/docs/feature_led_indicators.md index 10e095ab155b..59a9f7accc93 100644 --- a/docs/feature_led_indicators.md +++ b/docs/feature_led_indicators.md @@ -1,5 +1,7 @@ # LED Indicators +?> This feature requires additional configuration to work on both halves of a split keyboard see [Data sync options](feature_split_keyboard.md#data-sync-options) + QMK provides methods to read 5 of the LEDs defined in the HID spec: * Num Lock diff --git a/docs/feature_led_matrix.md b/docs/feature_led_matrix.md index 5134ab6efac7..dfd63503f2d5 100644 --- a/docs/feature_led_matrix.md +++ b/docs/feature_led_matrix.md @@ -49,10 +49,12 @@ Here is an example using 2 drivers. !> Note the parentheses, this is so when `LED_DRIVER_LED_TOTAL` is used in code and expanded, the values are added together before any additional math is applied to them. As an example, `rand() % (LED_DRIVER_1_LED_TOTAL + LED_DRIVER_2_LED_TOTAL)` will give very different results than `rand() % LED_DRIVER_1_LED_TOTAL + LED_DRIVER_2_LED_TOTAL`. +For split keyboards using `LED_MATRIX_SPLIT` with an LED driver, you can either have the same driver address or different driver addresses. If using different addresses, use `DRIVER_ADDR_1` for one and `DRIVER_ADDR_2` for the other one. Then, in `g_is31_leds`, fill out the correct driver index (0 or 1). If using one address, use `DRIVER_ADDR_1` for both, and use index 0 for `g_is31_leds`. + Define these arrays listing all the LEDs in your `.c`: ```c -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { /* Refer to IS31 manual for these locations * driver * | LED address @@ -63,7 +65,7 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { } ``` -Where `Cx_y` is the location of the LED in the matrix defined by [the datasheet](https://www.issi.com/WW/pdf/31FL3731.pdf) and the header file `drivers/issi/is31fl3731-simple.h`. The `driver` is the index of the driver you defined in your `config.h` (`0`, `1`, `2`, or `3` ). +Where `Cx_y` is the location of the LED in the matrix defined by [the datasheet](https://www.issi.com/WW/pdf/31FL3731.pdf) and the header file `drivers/led/issi/is31fl3731-simple.h`. The `driver` is the index of the driver you defined in your `config.h` (`0`, `1`, `2`, or `3` ). --- @@ -164,26 +166,26 @@ You can disable a single effect by defining `DISABLE_[EFFECT_NAME]` in your `con |Define |Description | |-------------------------------------------------------|-----------------------------------------------| -|`#define DISABLE_LED_MATRIX_ALPHAS_MODS` |Disables `LED_MATRIX_ALPHAS_MODS` | -|`#define DISABLE_LED_MATRIX_BREATHING` |Disables `LED_MATRIX_BREATHING` | -|`#define DISABLE_LED_MATRIX_BAND` |Disables `LED_MATRIX_BAND` | -|`#define DISABLE_LED_MATRIX_BAND_PINWHEEL` |Disables `LED_MATRIX_BAND_PINWHEEL` | -|`#define DISABLE_LED_MATRIX_BAND_SPIRAL` |Disables `LED_MATRIX_BAND_SPIRAL` | -|`#define DISABLE_LED_MATRIX_CYCLE_LEFT_RIGHT` |Disables `LED_MATRIX_CYCLE_LEFT_RIGHT` | -|`#define DISABLE_LED_MATRIX_CYCLE_UP_DOWN` |Disables `LED_MATRIX_CYCLE_UP_DOWN` | -|`#define DISABLE_LED_MATRIX_CYCLE_OUT_IN` |Disables `LED_MATRIX_CYCLE_OUT_IN` | -|`#define DISABLE_LED_MATRIX_DUAL_BEACON` |Disables `LED_MATRIX_DUAL_BEACON` | -|`#define DISABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLE` |Disables `LED_MATRIX_SOLID_REACTIVE_SIMPLE` | -|`#define DISABLE_LED_MATRIX_SOLID_REACTIVE_WIDE` |Disables `LED_MATRIX_SOLID_REACTIVE_WIDE` | -|`#define DISABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE` |Disables `LED_MATRIX_SOLID_REACTIVE_MULTIWIDE` | -|`#define DISABLE_LED_MATRIX_SOLID_REACTIVE_CROSS` |Disables `LED_MATRIX_SOLID_REACTIVE_CROSS` | -|`#define DISABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS` |Disables `LED_MATRIX_SOLID_REACTIVE_MULTICROSS`| -|`#define DISABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS` |Disables `LED_MATRIX_SOLID_REACTIVE_NEXUS` | -|`#define DISABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS` |Disables `LED_MATRIX_SOLID_REACTIVE_MULTINEXUS`| -|`#define DISABLE_LED_MATRIX_SOLID_SPLASH` |Disables `LED_MATRIX_SOLID_SPLASH` | -|`#define DISABLE_LED_MATRIX_SOLID_MULTISPLASH` |Disables `LED_MATRIX_SOLID_MULTISPLASH` | -|`#define DISABLE_LED_MATRIX_WAVE_LEFT_RIGHT` |Disables `LED_MATRIX_WAVE_LEFT_RIGHT` | -|`#define DISABLE_LED_MATRIX_WAVE_UP_DOWN` |Disables `LED_MATRIX_WAVE_UP_DOWN` | +|`#define ENABLE_LED_MATRIX_ALPHAS_MODS` |Enables `LED_MATRIX_ALPHAS_MODS` | +|`#define ENABLE_LED_MATRIX_BREATHING` |Enables `LED_MATRIX_BREATHING` | +|`#define ENABLE_LED_MATRIX_BAND` |Enables `LED_MATRIX_BAND` | +|`#define ENABLE_LED_MATRIX_BAND_PINWHEEL` |Enables `LED_MATRIX_BAND_PINWHEEL` | +|`#define ENABLE_LED_MATRIX_BAND_SPIRAL` |Enables `LED_MATRIX_BAND_SPIRAL` | +|`#define ENABLE_LED_MATRIX_CYCLE_LEFT_RIGHT` |Enables `LED_MATRIX_CYCLE_LEFT_RIGHT` | +|`#define ENABLE_LED_MATRIX_CYCLE_UP_DOWN` |Enables `LED_MATRIX_CYCLE_UP_DOWN` | +|`#define ENABLE_LED_MATRIX_CYCLE_OUT_IN` |Enables `LED_MATRIX_CYCLE_OUT_IN` | +|`#define ENABLE_LED_MATRIX_DUAL_BEACON` |Enables `LED_MATRIX_DUAL_BEACON` | +|`#define ENABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLE` |Enables `LED_MATRIX_SOLID_REACTIVE_SIMPLE` | +|`#define ENABLE_LED_MATRIX_SOLID_REACTIVE_WIDE` |Enables `LED_MATRIX_SOLID_REACTIVE_WIDE` | +|`#define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE` |Enables `LED_MATRIX_SOLID_REACTIVE_MULTIWIDE` | +|`#define ENABLE_LED_MATRIX_SOLID_REACTIVE_CROSS` |Enables `LED_MATRIX_SOLID_REACTIVE_CROSS` | +|`#define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS` |Enables `LED_MATRIX_SOLID_REACTIVE_MULTICROSS`| +|`#define ENABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS` |Enables `LED_MATRIX_SOLID_REACTIVE_NEXUS` | +|`#define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS` |Enables `LED_MATRIX_SOLID_REACTIVE_MULTINEXUS`| +|`#define ENABLE_LED_MATRIX_SOLID_SPLASH` |Enables `LED_MATRIX_SOLID_SPLASH` | +|`#define ENABLE_LED_MATRIX_SOLID_MULTISPLASH` |Enables `LED_MATRIX_SOLID_MULTISPLASH` | +|`#define ENABLE_LED_MATRIX_WAVE_LEFT_RIGHT` |Enables `LED_MATRIX_WAVE_LEFT_RIGHT` | +|`#define ENABLE_LED_MATRIX_WAVE_UP_DOWN` |Enables `LED_MATRIX_WAVE_UP_DOWN` | ## Custom LED Matrix Effects :id=custom-led-matrix-effects @@ -219,7 +221,7 @@ static bool my_cool_effect(effect_params_t* params) { for (uint8_t i = led_min; i < led_max; i++) { led_matrix_set_value(i, 0xFF); } - return led_max < DRIVER_LED_TOTAL; + return led_matrix_check_finished_leds(led_max); } // e.g: A more complex effect, relying on external methods and state, with @@ -233,8 +235,7 @@ static bool my_cool_effect2_complex_run(effect_params_t* params) { for (uint8_t i = led_min; i < led_max; i++) { led_matrix_set_value(i, some_global_state++); } - - return led_max < DRIVER_LED_TOTAL; + return led_matrix_check_finished_leds(led_max); } static bool my_cool_effect2(effect_params_t* params) { if (params->init) my_cool_effect2_complex_init(params); @@ -244,14 +245,7 @@ static bool my_cool_effect2(effect_params_t* params) { #endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS ``` -For inspiration and examples, check out the built-in effects under `quantum/led_matrix_animations/` - - - - - - - +For inspiration and examples, check out the built-in effects under `quantum/led_matrix/animations/`. ## Additional `config.h` Options :id=additional-configh-options @@ -262,7 +256,7 @@ For inspiration and examples, check out the built-in effects under `quantum/led_ #define LED_MATRIX_FRAMEBUFFER_EFFECTS // enable framebuffer effects #define LED_DISABLE_TIMEOUT 0 // number of milliseconds to wait until led automatically turns off #define LED_DISABLE_AFTER_TIMEOUT 0 // OBSOLETE: number of ticks to wait until disabling effects -#define LED_DISABLE_WHEN_USB_SUSPENDED false // turn off effects when suspended +#define LED_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended #define LED_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness) #define LED_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness) #define LED_MATRIX_MAXIMUM_BRIGHTNESS 255 // limits maximum brightness of LEDs @@ -350,30 +344,3 @@ void led_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { LED_MATRIX_INDICATOR_SET_VALUE(index, value); } ``` - -## Suspended State :id=suspended-state -To use the suspend feature, make sure that `#define LED_DISABLE_WHEN_USB_SUSPENDED true` is added to the `config.h` file. - -Additionally add this to your `.c`: - -```c -void suspend_power_down_kb(void) { - led_matrix_set_suspend_state(true); - suspend_power_down_user(); -} - -void suspend_wakeup_init_kb(void) { - led_matrix_set_suspend_state(false); - suspend_wakeup_init_user(); -} -``` -or add this to your `keymap.c`: -```c -void suspend_power_down_user(void) { - led_matrix_set_suspend_state(true); -} - -void suspend_wakeup_init_user(void) { - led_matrix_set_suspend_state(false); -} -``` diff --git a/docs/feature_macros.md b/docs/feature_macros.md index 3660f377559e..81ade5859261 100644 --- a/docs/feature_macros.md +++ b/docs/feature_macros.md @@ -4,7 +4,107 @@ Macros allow you to send multiple keystrokes when pressing just one key. QMK has !> **Security Note**: While it is possible to use macros to send passwords, credit card numbers, and other sensitive information it is a supremely bad idea to do so. Anyone who gets a hold of your keyboard will be able to access that information by opening a text editor. -## `SEND_STRING()` & `process_record_user` +## Using Macros In JSON Keymaps + +You can define up to 32 macros in a `keymap.json` file, as used by [Configurator](newbs_building_firmware_configurator.md), and `qmk compile`. You can define these macros in a list under the `macros` keyword, like this: + +```json +{ + "keyboard": "handwired/my_macropad", + "keymap": "my_keymap", + "macros": [ + [ + {"action":"down", "keycodes": ["LSFT"]}, + "hello world1", + {"action": "up","keycodes": ["LSFT"]} + ], + [ + {"action":"tap", "keycodes": ["LCTL", "LALT", "DEL"]} + ], + [ + "ding!", + {"action":"beep"} + ], + [ + {"action":"tap", "keycodes": ["F1"]}, + {"action":"delay", "duration": "1000"}, + {"action":"tap", "keycodes": ["PGDN"]} + ] + ], + "layout": "LAYOUT_all", + "layers": [ + ["MACRO_0", "MACRO_1", "MACRO_2", "MACRO_3"] + ] +} +``` + +### Selecting Your Host Keyboard Layout + +If you type in a language other than English, or use a non-QWERTY layout like Colemak, Dvorak, or Workman, you may have set your computer's input language to match this layout. This presents a challenge when creating macros- you may need to type different keys to get the same letters! To address this you can add the `host_language` key to your keymap.json, like so: + +```json +{ + "keyboard": "handwired/my_macropad", + "keymap": "my_keymap", + "host_layout": "dvorak", + "macros": [ + ["Hello, World!"] + ], + "layout": "LAYOUT_all", + "layers": [ + ["MACRO_0"] + ] +} +``` + +The current list of available languages is: + +| belgian | bepo | br_abnt2 | canadian_multilingual | +|:-------:|:----:|:--------:|:---------------------:| +| **colemak** | **croatian** | **czech** | **danish** | +| **dvorak_fr** | **dvorak** | **dvp** | **estonian** | +| **finnish** | **fr_ch** | **french_afnor** | **french** | +| **french_osx** | **german_ch** | **german** | **german_osx** | +| **hungarian** | **icelandic** | **italian** | **italian_osx_ansi** | +| **italian_osx_iso** | **jis** | **latvian** | **lithuanian_azerty** | +| **lithuanian_qwerty** | **norman** | **norwegian** | **portuguese** | +| **portuguese_osx_iso** | **romanian** | **serbian_latin** | **slovak** | +| **slovenian** | **spanish_dvorak** | **spanish** | **swedish** | +| **turkish_f** | **turkish_q** | **uk** | **us_international** | +| **workman** | **workman_zxcvm** | + +### Macro Basics + +Each macro is an array consisting of strings and objects (dictionaries.) Strings are typed to your computer while objects allow you to control how your macro is typed out. + +#### Object Format + +All objects have one required key: `action`. This tells QMK what the object does. There are currently 5 actions: beep, delay, down, tap, up + +Only basic keycodes (prefixed by `KC_`) are supported. Do not include the `KC_` prefix when listing keycodes. + +* `beep` + * Play a bell if the keyboard has [audio enabled](feature_audio.md). + * Example: `{"action": "beep"}` +* `delay` + * Pause macro playback. Duration is specified in milliseconds (ms). + * Example: `{"action": "delay", "duration": 500}` +* `down` + * Send a key down event for one or more keycodes. + * Example, single key: `{"action":"down", "keycodes": ["LSFT"]}` + * Example, multiple keys: `{"action":"down", "keycodes": ["CTRL", "LSFT"]}` +* `tap` + * Type a chord, which sends a down event for each key followed by an up event for each key. + * Example, single key: `{"action":"tap", "keycodes": ["F13"]}` + * Example, multiple keys: `{"action":"tap", "keycodes": ["CTRL", "LALT", "DEL"]}` +* `up` + * Send a key up event for one or more keycodes. + * Example, single key: `{"action":"up", "keycodes": ["LSFT"]}` + * Example, multiple keys: `{"action":"up", "keycodes": ["CTRL", "LSFT"]}` + +## Using Macros in C Keymaps + +### `SEND_STRING()` & `process_record_user` Sometimes you want a key to type out words or phrases. For the most common situations, we've provided `SEND_STRING()`, which will type out a string (i.e. a sequence of characters) for you. All ASCII characters that are easily translatable to a keycode are supported (e.g. `qmk 123\n\t`). @@ -91,7 +191,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; ``` -### Advanced Macros +#### Advanced Macros In addition to the `process_record_user()` function, is the `post_process_record_user()` function. This runs after `process_record` and can be used to do things after a keystroke has been sent. This is useful if you want to have a key pressed before and released after a normal key, for instance. @@ -118,7 +218,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { void post_process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case KC_A ... KC_F21: //notice how it skips over F22 - case KC_F23 ... KC_EXSEL: //exsel is the last one before the modifier keys + case KC_F23 ... KC_EXSL: //exsel is the last one before the modifier keys if (!record->event.pressed) { f22_tracker--; if (!f22_tracker) { @@ -131,7 +231,7 @@ void post_process_record_user(uint16_t keycode, keyrecord_t *record) { ``` -### TAP, DOWN and UP +#### TAP, DOWN and UP You may want to use keys in your macros that you can't write down, such as `Ctrl` or `Home`. You can send arbitrary keycodes by wrapping them in: @@ -178,7 +278,7 @@ They can be used like this: Which would send Left Control+`a` (Left Control down, `a`, Left Control up) - notice that they take strings (eg `"k"`), and not the `X_K` keycodes. -### Alternative Keymaps +#### Alternative Keymaps By default, it assumes a US keymap with a QWERTY layout; if you want to change that (e.g. if your OS uses software Colemak), include this somewhere in your keymap: @@ -186,7 +286,7 @@ By default, it assumes a US keymap with a QWERTY layout; if you want to change t #include "sendstring_colemak.h" ``` -### Strings in Memory +#### Strings in Memory If for some reason you're manipulating strings and need to print out something you just generated (instead of being a literal, constant string), you can use `send_string()`, like this: @@ -205,13 +305,13 @@ SEND_STRING(".."SS_TAP(X_END)); ``` -## Advanced Macro Functions +### Advanced Macro Functions There are some functions you may find useful in macro-writing. Keep in mind that while you can write some fairly advanced code within a macro, if your functionality gets too complex you may want to define a custom keycode instead. Macros are meant to be simple. ?> You can also use the functions described in [Useful function](ref_functions.md) and [Checking modifier state](feature_advanced_keycodes#checking-modifier-state) for additional functionality. For example, `reset_keyboard()` allows you to reset the keyboard as part of a macro and `get_mods() & MOD_MASK_SHIFT` lets you check for the existence of active shift modifiers. -### `record->event.pressed` +#### `record->event.pressed` This is a boolean value that can be tested to see if the switch is being pressed or released. An example of this is @@ -223,15 +323,15 @@ This is a boolean value that can be tested to see if the switch is being pressed } ``` -### `register_code();` +#### `register_code();` This sends the `` keydown event to the computer. Some examples would be `KC_ESC`, `KC_C`, `KC_4`, and even modifiers such as `KC_LSFT` and `KC_LGUI`. -### `unregister_code();` +#### `unregister_code();` Parallel to `register_code` function, this sends the `` keyup event to the computer. If you don't use this, the key will be held down until it's sent. -### `tap_code();` +#### `tap_code();` Sends `register_code()` and then `unregister_code()`. This is useful if you want to send both the press and release events ("tap" the key, rather than hold it). @@ -239,31 +339,31 @@ If `TAP_CODE_DELAY` is defined (default 0), this function waits that many millis If the keycode is `KC_CAPS`, it waits `TAP_HOLD_CAPS_DELAY` milliseconds instead (default 80), as macOS prevents accidental Caps Lock activation by waiting for the key to be held for a certain amount of time. -### `tap_code_delay(, );` +#### `tap_code_delay(, );` Like `tap_code()`, but with a `delay` parameter for specifying arbitrary intervals before sending the unregister event. -### `register_code16();`, `unregister_code16();` and `tap_code16();` +#### `register_code16();`, `unregister_code16();` and `tap_code16();` These functions work similar to their regular counterparts, but allow you to use modded keycodes (with Shift, Alt, Control, and/or GUI applied to them). Eg, you could use `register_code16(S(KC_5));` instead of registering the mod, then registering the keycode. -### `clear_keyboard();` +#### `clear_keyboard();` This will clear all mods and keys currently pressed. -### `clear_mods();` +#### `clear_mods();` This will clear all mods currently pressed. -### `clear_keyboard_but_mods();` +#### `clear_keyboard_but_mods();` This will clear all keys besides the mods currently pressed. -## Advanced Example: +### Advanced Example: -### Super ALT↯TAB +#### Super ALT↯TAB This macro will register `KC_LALT` and tap `KC_TAB`, then wait for 1000ms. If the key is tapped again, it will send another `KC_TAB`; if there is no tap, `KC_LALT` will be unregistered, thus allowing you to cycle through windows. diff --git a/docs/feature_midi.md b/docs/feature_midi.md index ab29d89db6d7..3da5c4940a36 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_oled_driver.md b/docs/feature_oled_driver.md index f3b659b1bc26..0c926f674268 100644 --- a/docs/feature_oled_driver.md +++ b/docs/feature_oled_driver.md @@ -18,17 +18,27 @@ Hardware configurations using Arm-based microcontrollers or different sizes of O ## Usage -To enable the OLED feature, there are three steps. First, when compiling your keyboard, you'll need to add the following to your `rules.mk`: +To enable the OLED feature, there are two steps. First, when compiling your keyboard, you'll need to add the following to your `rules.mk`: ```make -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +``` + +## OLED type +|OLED Driver |Supported Device | +|-------------------|---------------------------| +|SSD1306 (default) |For both SSD1306 and SH1106| + +e.g. +```make +OLED_DRIVER = SSD1306 ``` Then in your `keymap.c` file, implement the OLED task call. This example assumes your keymap has three layers named `_QWERTY`, `_FN` and `_ADJ`: ```c -#ifdef OLED_DRIVER_ENABLE -void oled_task_user(void) { +#ifdef OLED_ENABLE +bool oled_task_user(void) { // Host Keyboard Layer Status oled_write_P(PSTR("Layer: "), false); @@ -52,6 +62,8 @@ void oled_task_user(void) { oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); + + return false; } #endif ``` @@ -114,7 +126,7 @@ static void fade_display(void) { In split keyboards, it is very common to have two OLED displays that each render different content and are oriented or flipped differently. You can do this by switching which content to render by using the return value from `is_keyboard_master()` or `is_keyboard_left()` found in `split_util.h`, e.g: ```c -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { if (!is_keyboard_master()) { return OLED_ROTATION_180; // flips the display 180 degrees if offhand @@ -123,19 +135,25 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) { return rotation; } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) } else { render_logo(); // Renders a static logo oled_scroll_left(); // Turns on scrolling } + return false; } #endif ``` ## Basic Configuration +These configuration options should be placed in `config.h`. Example: +```c +#define OLED_BRIGHTNESS 128 +``` + |Define |Default |Description | |---------------------------|-----------------|--------------------------------------------------------------------------------------------------------------------------| |`OLED_DISPLAY_ADDRESS` |`0x3C` |The i2c address of the OLED Display | @@ -227,6 +245,7 @@ bool oled_init(oled_rotation_t rotation); // Called at the start of oled_init, weak function overridable by the user // rotation - the value passed into oled_init // Return new oled_rotation_t if you want to override default rotation +oled_rotation_t oled_init_kb(oled_rotation_t rotation); oled_rotation_t oled_init_user(oled_rotation_t rotation); // Clears the display buffer, resets cursor position to 0, and sets the buffer to dirty for rendering @@ -318,7 +337,8 @@ uint8_t oled_get_brightness(void); void oled_task(void); // Called at the start of oled_task, weak function overridable by the user -void oled_task_user(void); +bool oled_task_kb(void); +bool oled_task_user(void); // Set the specific 8 lines rows of the screen to scroll. // 0 is the default for start, and 7 for end, which is the entire @@ -346,6 +366,14 @@ bool oled_scroll_left(void); // Returns true if the screen was not scrolling or stops scrolling bool oled_scroll_off(void); +// Returns true if the oled is currently scrolling, false if it is +// not +bool is_oled_scrolling(void); + +// Inverts the display +// Returns true if the screen was or is inverted +bool oled_invert(bool invert); + // Returns the maximum number of characters that will fit on a line uint8_t oled_max_chars(void); diff --git a/docs/feature_pointing_device.md b/docs/feature_pointing_device.md index 905c2a8f95a4..031ee52c1c9b 100644 --- a/docs/feature_pointing_device.md +++ b/docs/feature_pointing_device.md @@ -1,19 +1,205 @@ # Pointing Device :id=pointing-device -Pointing Device is a generic name for a feature intended to be generic: moving the system pointer around. There are certainly other options for it - like mousekeys - but this aims to be easily modifiable and lightweight. You can implement custom keys to control functionality, or you can gather information from other peripherals and insert it directly here - let QMK handle the processing for you. +Pointing Device is a generic name for a feature intended to be generic: moving the system pointer around. There are certainly other options for it - like mousekeys - but this aims to be easily modifiable and hardware driven. You can implement custom keys to control functionality, or you can gather information from other peripherals and insert it directly here - let QMK handle the processing for you. To enable Pointing Device, uncomment the following line in your rules.mk: -```makefile +```make POINTING_DEVICE_ENABLE = yes ``` -To manipulate the mouse report, you can use the following functions: +## Sensor Drivers -* `pointing_device_get_report()` - Returns the current report_mouse_t that represents the information sent to the host computer -* `pointing_device_set_report(report_mouse_t newMouseReport)` - Overrides and saves the report_mouse_t to be sent to the host computer +There are a number of sensors that are supported by default. Note that only one sensor can be enabled by `POINTING_DEVICE_DRIVER` at a time. If you need to enable more than one sensor, then you need to implement it manually. + +### ADNS 5050 Sensor + +To use the ADNS 5050 sensor, add this to your `rules.mk` + +```make +POINTING_DEVICE_DRIVER = adns5050 +``` + +The ADNS 5050 sensor uses a serial type protocol for communication, and requires an additional light source. + +| Setting | Description | +|--------------------|---------------------------------------------------------------------| +|`ADNS5050_SCLK_PIN` | (Required) The pin connected to the clock pin of the sensor. | +|`ADNS5050_SDIO_PIN` | (Required) The pin connected to the data pin of the sensor. | +|`ADNS5050_CS_PIN` | (Required) The pin connected to the cable select pin of the sensor. | + +The CPI range is 125-1375, in increments of 125. Defaults to 500 CPI. + +### ADSN 9800 Sensor + +To use the ADNS 9800 sensor, add this to your `rules.mk` + +```make +POINTING_DEVICE_DRIVER = adns9800 +``` + +The ADNS 9800 is an SPI driven optical sensor, that uses laser output for surface tracking. + +| Setting | Description | Default | +|------------------------|------------------------------------------------------------------------|---------------| +|`ADNS9800_CLOCK_SPEED` | (Optional) Sets the clock speed that the sensor runs at. | `2000000` | +|`ADNS9800_SPI_LSBFIRST` | (Optional) Sets the Least/Most Significant Byte First setting for SPI. | `false` | +|`ADNS9800_SPI_MODE` | (Optional) Sets the SPI Mode for the sensor. | `3` | +|`ADNS9800_SPI_DIVISOR` | (Optional) Sets the SPI Divisor used for SPI communication. | _varies_ | +|`ADNS9800_CS_PIN` | (Required) Sets the Cable Select pin connected to the sensor. | _not defined_ | + + +The CPI range is 800-8200, in increments of 200. Defaults to 1800 CPI. + +### Analog Joystick + +To use an analog joystick to control the pointer, add this to your `rules.mk` + +```make +POINTING_DEVICE_DRIVER = analog_joystick +``` + +The Analog Joystick is an analog (ADC) driven sensor. There are a variety of joysticks that you can use for this. + +| Setting | Description | Default | +|----------------------------------|----------------------------------------------------------------------------|---------------| +|`ANALOG_JOYSTICK_X_AXIS_PIN` | (Required) The pin used for the vertical/X axis. | _not defined_ | +|`ANALOG_JOYSTICK_Y_AXIS_PIN` | (Required) The pin used for the horizontal/Y axis. | _not defined_ | +|`ANALOG_JOYSTICK_AXIS_MIN` | (Optional) Sets the lower range to be considered movement. | `0` | +|`ANALOG_JOYSTICK_AXIS_MAX` | (Optional) Sets the upper range to be considered movement. | `1023` | +|`ANALOG_JOYSTICK_SPEED_REGULATOR` | (Optional) The divisor used to slow down movement. (lower makes it faster) | `20` | +|`ANALOG_JOYSTICK_READ_INTERVAL` | (Optional) The interval in milliseconds between reads. | `10` | +|`ANALOG_JOYSTICK_SPEED_MAX` | (Optional) The maxiumum value used for motion. | `2` | +|`ANALOG_JOYSTICK_CLICK_PIN` | (Optional) The pin wired up to the press switch of the analog stick. | _not defined_ | + + +### Cirque Trackpad + +To use the Cirque Trackpad sensor, add this to your `rules.mk`: + +```make +POINTING_DEVICE_DRIVER = cirque_pinnacle_i2c +``` + +or + +```make +POINTING_DEVICE_DRIVER = cirque_pinnacle_spi +``` + + +This supports the Cirque Pinnacle 1CA027 Touch Controller, which is used in the TM040040, TM035035 and the TM023023 trackpads. These are I2C or SPI compatible, and both configurations are supported. + +| Setting | Description | Default | +|---------------------------------|---------------------------------------------------------------------------------|-----------------------| +|`CIRQUE_PINNACLE_X_LOWER` | (Optional) The minimum reachable X value on the sensor. | `127` | +|`CIRQUE_PINNACLE_X_UPPER` | (Optional) The maximum reachable X value on the sensor. | `1919` | +|`CIRQUE_PINNACLE_Y_LOWER` | (Optional) The minimum reachable Y value on the sensor. | `63` | +|`CIRQUE_PINNACLE_Y_UPPER` | (Optional) The maximum reachable Y value on the sensor. | `1471` | +|`CIRQUE_PINNACLE_TAPPING_TERM` | (Optional) Length of time that a touch can be to be considered a tap. | `TAPPING_TERM`/`200` | +|`CIRQUE_PINNACLE_TOUCH_DEBOUNCE` | (Optional) Length of time that a touch can be to be considered a tap. | `TAPPING_TERM`/`200` | -Keep in mind that a report_mouse_t (here "mouseReport") has the following properties: +| I2C Setting | Description | Default | +|--------------------------|---------------------------------------------------------------------------------|---------| +|`CIRQUE_PINNACLE_ADDR` | (Required) Sets the I2C Address for the Cirque Trackpad | `0x2A` | +|`CIRQUE_PINNACLE_TIMEOUT` | (Optional) The timeout for i2c communication with the trackpad in milliseconds. | `20` | + +| SPI Setting | Description | Default | +|-------------------------------|------------------------------------------------------------------------|---------------| +|`CIRQUE_PINNACLE_CLOCK_SPEED` | (Optional) Sets the clock speed that the sensor runs at. | `1000000` | +|`CIRQUE_PINNACLE_SPI_LSBFIRST` | (Optional) Sets the Least/Most Significant Byte First setting for SPI. | `false` | +|`CIRQUE_PINNACLE_SPI_MODE` | (Optional) Sets the SPI Mode for the sensor. | `1` | +|`CIRQUE_PINNACLE_SPI_DIVISOR` | (Optional) Sets the SPI Divisor used for SPI communication. | _varies_ | +|`CIRQUE_PINNACLE_SPI_CS_PIN` | (Required) Sets the Cable Select pin connected to the sensor. | _not defined_ | + +Default Scaling/CPI is 1024. + +### Pimoroni Trackball + +To use the Pimoroni Trackball module, add this to your `rules.mk`: + +```make +POINTING_DEVICE_DRIVER = pimoroni_trackball +``` + +The Pimoroni Trackball module is a I2C based breakout board with an RGB enable trackball. + +| Setting | Description | Default | +|-------------------------------------|------------------------------------------------------------------------------------|---------| +|`PIMORONI_TRACKBALL_ADDRESS` | (Required) Sets the I2C Address for the Pimoroni Trackball. | `0x0A` | +|`PIMORONI_TRACKBALL_TIMEOUT` | (Optional) The timeout for i2c communication with the trackpad in milliseconds. | `100` | +|`PIMORONI_TRACKBALL_INTERVAL_MS` | (Optional) The update/read interval for the sensor in milliseconds. | `8` | +|`PIMORONI_TRACKBALL_SCALE` | (Optional) The multiplier used to generate reports from the sensor. | `5` | +|`PIMORONI_TRACKBALL_DEBOUNCE_CYCLES` | (Optional) The number of scan cycles used for debouncing on the ball press. | `20` | +|`PIMORONI_TRACKBALL_ERROR_COUNT` | (Optional) Specifies the number of read/write errors until the sensor is disabled. | `10` | + +### PMW 3360 Sensor + +To use the PMW 3360 sensor, add this to your `rules.mk` + +```make +POINTING_DEVICE_DRIVER = pmw3360 +``` + +The PMW 3360 is an SPI driven optical sensor, that uses a built in IR LED for surface tracking. + +| Setting | Description | Default | +|-----------------------------|--------------------------------------------------------------------------------------------|---------------| +|`PMW3360_CS_PIN` | (Required) Sets the Cable Select pin connected to the sensor. | _not defined_ | +|`PMW3360_CLOCK_SPEED` | (Optional) Sets the clock speed that the sensor runs at. | `2000000` | +|`PMW3360_SPI_LSBFIRST` | (Optional) Sets the Least/Most Significant Byte First setting for SPI. | `false` | +|`PMW3360_SPI_MODE` | (Optional) Sets the SPI Mode for the sensor. | `3` | +|`PMW3360_SPI_DIVISOR` | (Optional) Sets the SPI Divisor used for SPI communication. | _varies_ | +|`ROTATIONAL_TRANSFORM_ANGLE` | (Optional) Allows for the sensor data to be rotated +/- 30 degrees directly in the sensor. | `0` | + +The CPI range is 100-12000, in increments of 100. Defaults to 1600 CPI. + + +### Custom Driver + +If you have a sensor type that isn't supported here, you can manually implement it, by adding these functions (with the correct implementation for your device): + +```c +void pointing_device_driver_init(void) {} +report_mouse_t pointing_device_driver_get_report(report_mouse_t mouse_report) { return mouse_report; } +uint16_t pointing_device_driver_get_cpi(void) { return 0; } +void pointing_device_driver_set_cpi(uint16_t cpi) {} +``` + +!> Ideally, new sensor hardware should be added to `drivers/sensors/` and `quantum/pointing_device_drivers.c`, but there may be cases where it's very specific to the hardware. So these functions are provided, just in case. + +## Common Configuration + +| Setting | Description | Default | +|-------------------------------|-----------------------------------------------------------------------|---------------| +|`POINTING_DEVICE_ROTATION_90` | (Optional) Rotates the X and Y data by 90 degrees. | _not defined_ | +|`POINTING_DEVICE_ROTATION_180` | (Optional) Rotates the X and Y data by 180 degrees. | _not defined_ | +|`POINTING_DEVICE_ROTATION_270` | (Optional) Rotates the X and Y data by 270 degrees. | _not defined_ | +|`POINTING_DEVICE_INVERT_X` | (Optional) Inverts the X axis report. | _not defined_ | +|`POINTING_DEVICE_INVERT_Y` | (Optional) Inverts the Y axis report. | _not defined_ | +|`POINTING_DEVICE_MOTION_PIN` | (Optional) If supported, will only read from sensor if pin is active. | _not defined_ | + + +## Callbacks and Functions + +| Function | Description | +|-----------------------------------|----------------------------------------------------------------------------------------------------------------------------------------| +| `pointing_device_init_kb(void)` | Callback to allow for keyboard level initialization. Useful for additional hardware sensors. | +| `pointing_device_init_user(void)` | Callback to allow for user level initialization. Useful for additional hardware sensors. | +| `pointing_device_task_kb(mouse_report)` | Callback that sends sensor data, so keyboard code can intercept and modify the data. Returns a mouse report. | +| `pointing_device_task_user(mouse_report)` | Callback that sends sensor data, so user coe can intercept and modify the data. Returns a mouse report. | +| `pointing_device_handle_buttons(buttons, pressed, button)` | Callback to handle hardware button presses. Returns a `uint8_t`. | +| `pointing_device_get_cpi(void)` | Gets the current CPI/DPI setting from the sensor, if supported. | +| `pointing_device_set_cpi(uint16_t)` | Sets the CPI/DPI, if supported. | +| `pointing_device_get_report(void)` | Returns the current mouse report (as a `mouse_report_t` data structure). | +| `pointing_device_set_report(mouse_report)` | Sets the mouse report to the assigned `mouse_report_t` data structured passed to the function. | +| `pointing_device_send(void)` | Sends the current mouse report to the host system. Function can be replaced. | +| `has_mouse_report_changed(old, new)` | Compares the old and new `mouse_report_t` data and returns true only if it has changed. | + + +# Manipulating Mouse Reports + +The report_mouse_t (here "mouseReport") has the following properties: * `mouseReport.x` - this is a signed int from -127 to 127 (not 128, this is defined in USB HID spec) representing movement (+ to the right, - to the left) on the x axis. * `mouseReport.y` - this is a signed int from -127 to 127 (not 128, this is defined in USB HID spec) representing movement (+ upward, - downward) on the y axis. @@ -21,8 +207,10 @@ Keep in mind that a report_mouse_t (here "mouseReport") has the following proper * `mouseReport.h` - this is a signed int from -127 to 127 (not 128, this is defined in USB HID spec) representing horizontal scrolling (+ right, - left). * `mouseReport.buttons` - this is a uint8_t in which all 8 bits are used. These bits represent the mouse button state - bit 0 is mouse button 1, and bit 7 is mouse button 8. -Once you have made the necessary changes to the mouse report, you need to send it: +To manually manipulate the mouse reports outside of the `pointing_device_task_*` functions, you can use: +* `pointing_device_get_report()` - Returns the current report_mouse_t that represents the information sent to the host computer +* `pointing_device_set_report(report_mouse_t newMouseReport)` - Overrides and saves the report_mouse_t to be sent to the host computer * `pointing_device_send()` - Sends the mouse report to the host and zeroes out the report. When the mouse report is sent, the x, y, v, and h values are set to 0 (this is done in `pointing_device_send()`, which can be overridden to avoid this behavior). This way, button states persist, but movement will only occur once. For further customization, both `pointing_device_init` and `pointing_device_task` can be overridden. @@ -31,6 +219,8 @@ Additionally, by default, `pointing_device_send()` will only send a report when Also, you use the `has_mouse_report_changed(new, old)` function to check to see if the report has changed. +## Example + In the following example, a custom key is used to click the mouse and scroll 127 units vertically and horizontally, then undo all of that when released - because that's a totally useful function. Listen, this is an example: ```c diff --git a/docs/feature_programmable_button.md b/docs/feature_programmable_button.md new file mode 100644 index 000000000000..b1ef555d16a9 --- /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 8e84e22d8a78..c980705ae7f9 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,24 +39,18 @@ 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 ``` -## Interrupt Version :id=interrupt-version +### Interrupt Version (AVR/ATMega32u4) :id=interrupt-version-avr The following example uses D2 for clock and D5 for data. You can use any INT or PCINT pin for clock, and any pin for data. 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<` de |----------|-------------|---------| | `ISSI_TIMEOUT` | (Optional) How long to wait for i2c messages, in milliseconds | 100 | | `ISSI_PERSISTENCE` | (Optional) Retry failed messages this many times | 0 | +| `ISSI_3731_DEGHOST` | (Optional) Set this define to enable de-ghosting by halving Vcc during blanking time | | | `DRIVER_COUNT` | (Required) How many RGB driver IC's are present | | | `DRIVER_LED_TOTAL` | (Required) How many RGB lights are present across all drivers | | | `DRIVER_ADDR_1` | (Required) Address for the first RGB driver | | @@ -49,10 +50,12 @@ Here is an example using 2 drivers. !> Note the parentheses, this is so when `DRIVER_LED_TOTAL` is used in code and expanded, the values are added together before any additional math is applied to them. As an example, `rand() % (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)` will give very different results than `rand() % DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL`. +For split keyboards using `RGB_MATRIX_SPLIT` with an LED driver, you can either have the same driver address or different driver addresses. If using different addresses, use `DRIVER_ADDR_1` for one and `DRIVER_ADDR_2` for the other one. Then, in `g_is31_leds`, fill out the correct driver index (0 or 1). If using one address, use `DRIVER_ADDR_1` for both, and use index 0 for `g_is31_leds`. + Define these arrays listing all the LEDs in your `.c`: ```c -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { /* Refer to IS31 manual for these locations * driver * | R location @@ -64,14 +67,14 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { } ``` -Where `Cx_y` is the location of the LED in the matrix defined by [the datasheet](https://www.issi.com/WW/pdf/31FL3731.pdf) and the header file `drivers/issi/is31fl3731.h`. The `driver` is the index of the driver you defined in your `config.h` (`0`, `1`, `2`, or `3`). +Where `Cx_y` is the location of the LED in the matrix defined by [the datasheet](https://www.issi.com/WW/pdf/31FL3731.pdf) and the header file `drivers/led/issi/is31fl3731.h`. The `driver` is the index of the driver you defined in your `config.h` (`0`, `1`, `2`, or `3`). --- ### IS31FL3733 :id=is31fl3733 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 ``` @@ -82,6 +85,9 @@ You can use between 1 and 4 IS31FL3733 IC's. Do not specify `DRIVER_ADDR_` de |----------|-------------|---------| | `ISSI_TIMEOUT` | (Optional) How long to wait for i2c messages, in milliseconds | 100 | | `ISSI_PERSISTENCE` | (Optional) Retry failed messages this many times | 0 | +| `ISSI_PWM_FREQUENCY` | (Optional) PWM Frequency Setting - IS31FL3733B only | 0 | +| `ISSI_SWPULLUP` | (Optional) Set the value of the SWx lines on-chip de-ghosting resistors | PUR_0R (Disabled) | +| `ISSI_CSPULLUP` | (Optional) Set the value of the CSx lines on-chip de-ghosting resistors | PUR_0R (Disabled) | | `DRIVER_COUNT` | (Required) How many RGB driver IC's are present | | | `DRIVER_LED_TOTAL` | (Required) How many RGB lights are present across all drivers | | | `DRIVER_ADDR_1` | (Required) Address for the first RGB driver | | @@ -93,6 +99,18 @@ You can use between 1 and 4 IS31FL3733 IC's. Do not specify `DRIVER_ADDR_` de | `DRIVER_SYNC_3` | (Optional) Sync configuration for the third RGB driver | 0 | | `DRIVER_SYNC_4` | (Optional) Sync configuration for the fourth RGB driver | 0 | +The IS31FL3733 IC's have on-chip resistors that can be enabled to allow for de-ghosting of the RGB matrix. By default these resistors are not enabled (`ISSI_SWPULLUP`/`ISSI_CSPULLUP` are given the value of`PUR_0R`), the values that can be set to enable de-ghosting are as follows: + +| `ISSI_SWPULLUP/ISSI_CSPULLUP` | Description | +|----------------------|-------------| +| `PUR_0R` | (default) Do not use the on-chip resistors/enable de-ghosting | +| `PUR_05KR` | The 0.5k Ohm resistor used during blanking period (t_NOL) | +| `PUR_3KR` | The 3k Ohm resistor used at all times | +| `PUR_4KR` | The 4k Ohm resistor used at all times | +| `PUR_8KR` | The 8k Ohm resistor used at all times | +| `PUR_16KR` | The 16k Ohm resistor used at all times | +| `PUR_32KR` | The 32k Ohm resistor used during blanking period (t_NOL) | + Here is an example using 2 drivers. ```c @@ -122,7 +140,7 @@ Currently only 4 drivers are supported, but it would be trivial to support all 8 Define these arrays listing all the LEDs in your `.c`: ```c -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { /* Refer to IS31 manual for these locations * driver * | R location @@ -134,20 +152,47 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { } ``` -Where `X_Y` is the location of the LED in the matrix defined by [the datasheet](https://www.issi.com/WW/pdf/31FL3733.pdf) and the header file `drivers/issi/is31fl3733.h`. The `driver` is the index of the driver you defined in your `config.h` (`0`, `1`, `2`, or `3` for now). +Where `X_Y` is the location of the LED in the matrix defined by [the datasheet](https://www.issi.com/WW/pdf/31FL3733.pdf) and the header file `drivers/led/issi/is31fl3733.h`. The `driver` is the index of the driver you defined in your `config.h` (`0`, `1`, `2`, or `3` for now). --- ### IS31FL3737 :id=is31fl3737 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 ``` +You can use between 1 and 2 IS31FL3737 IC's. Do not specify `DRIVER_ADDR_2` define for second IC if not present on your keyboard. Configure the hardware via your `config.h`: +| Variable | Description | Default | +|----------|-------------|---------| +| `ISSI_TIMEOUT` | (Optional) How long to wait for i2c messages, in milliseconds | 100 | +| `ISSI_PERSISTENCE` | (Optional) Retry failed messages this many times | 0 | +| `ISSI_SWPULLUP` | (Optional) Set the value of the SWx lines on-chip de-ghosting resistors | PUR_0R (Disabled) | +| `ISSI_CSPULLUP` | (Optional) Set the value of the CSx lines on-chip de-ghosting resistors | PUR_0R (Disabled) | +| `DRIVER_COUNT` | (Required) How many RGB driver IC's are present | | +| `DRIVER_LED_TOTAL` | (Required) How many RGB lights are present across all drivers | | +| `DRIVER_ADDR_1` | (Required) Address for the first RGB driver | | +| `DRIVER_ADDR_2` | (Optional) Address for the second RGB driver | | + +The IS31FL3737 IC's have on-chip resistors that can be enabled to allow for de-ghosting of the RGB matrix. By default these resistors are not enabled (`ISSI_SWPULLUP`/`ISSI_CSPULLUP` are given the value of`PUR_0R`), the values that can be set to enable de-ghosting are as follows: + +| `ISSI_SWPULLUP/ISSI_CSPULLUP` | Description | +|----------------------|-------------| +| `PUR_0R` | (default) Do not use the on-chip resistors/enable de-ghosting | +| `PUR_05KR` | The 0.5k Ohm resistor used during blanking period (t_NOL) | +| `PUR_1KR` | The 1k Ohm resistor used during blanking period (t_NOL) | +| `PUR_2KR` | The 2k Ohm resistor used during blanking period (t_NOL) | +| `PUR_4KR` | The 4k Ohm resistor used during blanking period (t_NOL) | +| `PUR_8KR` | The 8k Ohm resistor during blanking period (t_NOL) | +| `PUR_16KR` | The 16k Ohm resistor during blanking period (t_NOL) | +| `PUR_32KR` | The 32k Ohm resistor used during blanking period (t_NOL) | + +Here is an example using 2 drivers. + ```c // 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) @@ -159,19 +204,21 @@ Configure the hardware via your `config.h`: // ADDR represents A3:A0 of the 7-bit address. // The result is: 0b101(ADDR) #define DRIVER_ADDR_1 0b1010000 -#define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons. +#define DRIVER_ADDR_2 0b1010001 #define DRIVER_COUNT 2 -#define DRIVER_1_LED_TOTAL 64 -#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL +#define DRIVER_1_LED_TOTAL 30 +#define DRIVER_2_LED_TOTAL 36 +#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) ``` +!> Note the parentheses, this is so when `DRIVER_LED_TOTAL` is used in code and expanded, the values are added together before any additional math is applied to them. As an example, `rand() % (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)` will give very different results than `rand() % DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL`. -Currently only a single drivers is supported, but it would be trivial to support all 4 combinations. For now define `DRIVER_ADDR_2` as `DRIVER_ADDR_1` +Currently only 2 drivers are supported, but it would be trivial to support all 4 combinations. Define these arrays listing all the LEDs in your `.c`: ```c -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { /* Refer to IS31 manual for these locations * driver * | R location @@ -183,7 +230,7 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { } ``` -Where `X_Y` is the location of the LED in the matrix defined by [the datasheet](https://www.issi.com/WW/pdf/31FL3737.pdf) and the header file `drivers/issi/is31fl3737.h`. The `driver` is the index of the driver you defined in your `config.h` (Only `0` right now). +Where `X_Y` is the location of the LED in the matrix defined by [the datasheet](https://www.issi.com/WW/pdf/31FL3737.pdf) and the header file `drivers/led/issi/is31fl3737.h`. The `driver` is the index of the driver you defined in your `config.h` (Only `0`, `1` for now). --- @@ -191,7 +238,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 ``` @@ -211,7 +258,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 ``` @@ -227,6 +274,75 @@ Configure the hardware via your `config.h`: #define DRIVER_LED_TOTAL 70 ``` +--- +### 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`: + +```make +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = AW20216 +``` + +You can use up to 2 AW20216 IC's. Do not specify `DRIVER__xxx` defines for IC's that are not present on your keyboard. You can define the following items in `config.h`: + +| Variable | Description | Default | +|----------|-------------|---------| +| `DRIVER_1_CS` | (Required) MCU pin connected to first RGB driver chip select line | B13 | +| `DRIVER_2_CS` | (Optional) MCU pin connected to second RGB driver chip select line | | +| `DRIVER_1_EN` | (Required) MCU pin connected to first RGB driver hardware enable line | C13 | +| `DRIVER_2_EN` | (Optional) MCU pin connected to second RGB driver hardware enable line | | +| `DRIVER_1_LED_TOTAL` | (Required) How many RGB lights are connected to first RGB driver | | +| `DRIVER_2_LED_TOTAL` | (Optional) How many RGB lights are connected to second RGB driver | | +| `DRIVER_COUNT` | (Required) How many RGB driver IC's are present | | +| `DRIVER_LED_TOTAL` | (Required) How many RGB lights are present across all drivers | | +| `AW_SCALING_MAX` | (Optional) LED current scaling value (0-255, higher values mean LED is brighter at full PWM) | 150 | +| `AW_GLOBAL_CURRENT_MAX` | (Optional) Driver global current limit (0-255, higher values means the driver may consume more power) | 150 | +| `AW_SPI_DIVISOR` | (Optional) Clock divisor for SPI communication (powers of 2, smaller numbers means faster communication, should not be less than 4) | 4 | + +Here is an example using 2 drivers. + +```c +#define DRIVER_1_CS B13 +#define DRIVER_2_CS B14 +// Hardware enable lines may be connected to the same pin +#define DRIVER_1_EN C13 +#define DRIVER_2_EN C13 + +#define DRIVER_COUNT 2 +#define DRIVER_1_LED_TOTAL 66 +#define DRIVER_2_LED_TOTAL 32 +#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) +``` + +!> Note the parentheses, this is so when `DRIVER_LED_TOTAL` is used in code and expanded, the values are added together before any additional math is applied to them. As an example, `rand() % (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)` will give very different results than `rand() % DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL`. + +Define these arrays listing all the LEDs in your `.c`: + +```c +const aw_led PROGMEM g_aw_leds[DRIVER_LED_TOTAL] = { +/* Each AW20216 channel is controlled by a register at some offset between 0x00 + * and 0xD7 inclusive. + * See drivers/awinic/aw20216.h for the mapping between register offsets and + * driver pin locations. + * driver + * | R location + * | | G location + * | | | B location + * | | | | */ + { 0, CS1_SW1, CS2_SW1, CS3_SW1 }, + { 0, CS4_SW1, CS5_SW1, CS6_SW1 }, + { 0, CS7_SW1, CS8_SW1, CS9_SW1 }, + { 0, CS10_SW1, CS11_SW1, CS12_SW1 }, + { 0, CS13_SW1, CS14_SW1, CS15_SW1 }, + ... + { 1, CS1_SW1, CS2_SW1, CS3_SW1 }, + { 1, CS13_SW1, CS14_SW1, CS15_SW1 }, + { 1, CS16_SW1, CS17_SW1, CS18_SW1 }, + { 1, CS4_SW2, CS5_SW2, CS6_SW2 }, + ... +}; +``` + --- ## Common Configuration :id=common-configuration @@ -256,7 +372,7 @@ x = 224 / (NUMBER_OF_COLS - 1) * COL_POSITION y = 64 / (NUMBER_OF_ROWS - 1) * ROW_POSITION ``` -Where NUMBER_OF_COLS, NUMBER_OF_ROWS, COL_POSITION, & ROW_POSITION are all based on the physical layout of your keyboard, not the electrical layout. +Where NUMBER_OF_COLS, NUMBER_OF_ROWS, COL_POSITION, & ROW_POSITION are all based on the physical layout of your keyboard, not the electrical layout. As mentioned earlier, the center of the keyboard by default is expected to be `{ 112, 32 }`, but this can be changed if you want to more accurately calculate the LED's physical `{ x, y }` positions. Keyboard designers can implement `#define RGB_MATRIX_CENTER { 112, 32 }` in their config.h file with the new center point of the keyboard, or where they want it to be allowing more possibilities for the `{ x, y }` values. Do note that the maximum value for x or y is 255, and the recommended maximum is 224 as this gives animations runoff room before they reset. @@ -299,7 +415,7 @@ All RGB keycodes are currently shared with the RGBLIGHT system: * `RGB_MODE_*` keycodes will generally work, but not all of the modes are currently mapped to the correct effects for the RGB Matrix system. -`RGB_MODE_PLAIN`, `RGB_MODE_BREATHE`, `RGB_MODE_RAINBOW`, and `RGB_MATRIX_SWIRL` are the only ones that are mapped properly. The rest don't have a direct equivalent, and are not mapped. +`RGB_MODE_PLAIN`, `RGB_MODE_BREATHE`, `RGB_MODE_RAINBOW`, and `RGB_MATRIX_SWIRL` are the only ones that are mapped properly. The rest don't have a direct equivalent, and are not mapped. !> By default, if you have both the [RGB Light](feature_rgblight.md) and the RGB Matrix feature enabled, these keycodes will work for both features, at the same time. You can disable the keycode functionality by defining the `*_DISABLE_KEYCODES` option for the specific feature. @@ -336,7 +452,9 @@ enum rgb_matrix_effects { RGB_MATRIX_JELLYBEAN_RAINDROPS, // Randomly changes a single key's hue and saturation RGB_MATRIX_HUE_BREATHING, // Hue shifts up a slight ammount at the same time, then shifts back RGB_MATRIX_HUE_PENDULUM, // Hue shifts up a slight ammount in a wave to the right, then back to the left - RGB_MATRIX_HUE_WAVE, // Hue shifts up a slight ammount and then back down in a wave to the right + RGB_MATRIX_HUE_WAVE, // Hue shifts up a slight ammount and then back down in a wave to the right + RGB_MATRIX_PIXEL_FRACTAL, // Single hue fractal filled keys pulsing horizontally out to edges + RGB_MATRIX_PIXEL_RAIN, // Randomly light keys with random hues #if define(RGB_MATRIX_FRAMEBUFFER_EFFECTS) RGB_MATRIX_TYPING_HEATMAP, // How hot is your WPM! RGB_MATRIX_DIGITAL_RAIN, // That famous computer simulation @@ -359,51 +477,66 @@ enum rgb_matrix_effects { }; ``` -You can disable a single effect by defining `DISABLE_[EFFECT_NAME]` in your `config.h`: - - -|Define |Description | -|-------------------------------------------------------|-----------------------------------------------| -|`#define DISABLE_RGB_MATRIX_ALPHAS_MODS` |Disables `RGB_MATRIX_ALPHAS_MODS` | -|`#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN` |Disables `RGB_MATRIX_GRADIENT_UP_DOWN` | -|`#define DISABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT` |Disables `MATRIX_GRADIENT_LEFT_RIGHT` | -|`#define DISABLE_RGB_MATRIX_BREATHING` |Disables `RGB_MATRIX_BREATHING` | -|`#define DISABLE_RGB_MATRIX_BAND_SAT` |Disables `RGB_MATRIX_BAND_SAT` | -|`#define DISABLE_RGB_MATRIX_BAND_VAL` |Disables `RGB_MATRIX_BAND_VAL` | -|`#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT` |Disables `RGB_MATRIX_BAND_PINWHEEL_SAT` | -|`#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL` |Disables `RGB_MATRIX_BAND_PINWHEEL_VAL` | -|`#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT` |Disables `RGB_MATRIX_BAND_SPIRAL_SAT` | -|`#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL` |Disables `RGB_MATRIX_BAND_SPIRAL_VAL` | -|`#define DISABLE_RGB_MATRIX_CYCLE_ALL` |Disables `RGB_MATRIX_CYCLE_ALL` | -|`#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT` |Disables `RGB_MATRIX_CYCLE_LEFT_RIGHT` | -|`#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN` |Disables `RGB_MATRIX_CYCLE_UP_DOWN` | -|`#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON` |Disables `RGB_MATRIX_RAINBOW_MOVING_CHEVRON` | -|`#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN` |Disables `RGB_MATRIX_CYCLE_OUT_IN` | -|`#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL` |Disables `RGB_MATRIX_CYCLE_OUT_IN_DUAL` | -|`#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL` |Disables `RGB_MATRIX_CYCLE_PINWHEEL` | -|`#define DISABLE_RGB_MATRIX_CYCLE_SPIRAL` |Disables `RGB_MATRIX_CYCLE_SPIRAL` | -|`#define DISABLE_RGB_MATRIX_DUAL_BEACON` |Disables `RGB_MATRIX_DUAL_BEACON` | -|`#define DISABLE_RGB_MATRIX_RAINBOW_BEACON` |Disables `RGB_MATRIX_RAINBOW_BEACON` | -|`#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS` |Disables `RGB_MATRIX_RAINBOW_PINWHEELS` | -|`#define DISABLE_RGB_MATRIX_RAINDROPS` |Disables `RGB_MATRIX_RAINDROPS` | -|`#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS` |Disables `RGB_MATRIX_JELLYBEAN_RAINDROPS` | -|`#define DISABLE_RGB_MATRIX_HUE_BREATHING` |Disables `RGB_MATRIX_HUE_BREATHING` | -|`#define DISABLE_RGB_MATRIX_HUE_PENDULUM` |Disables `RGB_MATRIX_HUE_PENDULUM` | -|`#define DISABLE_RGB_MATRIX_HUE_WAVE ` |Disables `RGB_MATRIX_HUE_WAVE ` | -|`#define DISABLE_RGB_MATRIX_TYPING_HEATMAP` |Disables `RGB_MATRIX_TYPING_HEATMAP` | -|`#define DISABLE_RGB_MATRIX_DIGITAL_RAIN` |Disables `RGB_MATRIX_DIGITAL_RAIN` | -|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE` |Disables `RGB_MATRIX_SOLID_REACTIVE_SIMPLE` | -|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE` |Disables `RGB_MATRIX_SOLID_REACTIVE` | -|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE` |Disables `RGB_MATRIX_SOLID_REACTIVE_WIDE` | -|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE` |Disables `RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE` | -|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS` |Disables `RGB_MATRIX_SOLID_REACTIVE_CROSS` | -|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS` |Disables `RGB_MATRIX_SOLID_REACTIVE_MULTICROSS`| -|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS` |Disables `RGB_MATRIX_SOLID_REACTIVE_NEXUS` | -|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS` |Disables `RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS`| -|`#define DISABLE_RGB_MATRIX_SPLASH` |Disables `RGB_MATRIX_SPLASH` | -|`#define DISABLE_RGB_MATRIX_MULTISPLASH` |Disables `RGB_MATRIX_MULTISPLASH` | -|`#define DISABLE_RGB_MATRIX_SOLID_SPLASH` |Disables `RGB_MATRIX_SOLID_SPLASH` | -|`#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH` |Disables `RGB_MATRIX_SOLID_MULTISPLASH` | +You can enable a single effect by defining `ENABLE_[EFFECT_NAME]` in your `config.h`: + + +|Define |Description | +|------------------------------------------------------|----------------------------------------------| +|`#define ENABLE_RGB_MATRIX_ALPHAS_MODS` |Enables `RGB_MATRIX_ALPHAS_MODS` | +|`#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN` |Enables `RGB_MATRIX_GRADIENT_UP_DOWN` | +|`#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT` |Enables `RGB_MATRIX_GRADIENT_LEFT_RIGHT` | +|`#define ENABLE_RGB_MATRIX_BREATHING` |Enables `RGB_MATRIX_BREATHING` | +|`#define ENABLE_RGB_MATRIX_BAND_SAT` |Enables `RGB_MATRIX_BAND_SAT` | +|`#define ENABLE_RGB_MATRIX_BAND_VAL` |Enables `RGB_MATRIX_BAND_VAL` | +|`#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT` |Enables `RGB_MATRIX_BAND_PINWHEEL_SAT` | +|`#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL` |Enables `RGB_MATRIX_BAND_PINWHEEL_VAL` | +|`#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT` |Enables `RGB_MATRIX_BAND_SPIRAL_SAT` | +|`#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL` |Enables `RGB_MATRIX_BAND_SPIRAL_VAL` | +|`#define ENABLE_RGB_MATRIX_CYCLE_ALL` |Enables `RGB_MATRIX_CYCLE_ALL` | +|`#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT` |Enables `RGB_MATRIX_CYCLE_LEFT_RIGHT` | +|`#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN` |Enables `RGB_MATRIX_CYCLE_UP_DOWN` | +|`#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON` |Enables `RGB_MATRIX_RAINBOW_MOVING_CHEVRON` | +|`#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN` |Enables `RGB_MATRIX_CYCLE_OUT_IN` | +|`#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL` |Enables `RGB_MATRIX_CYCLE_OUT_IN_DUAL` | +|`#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL` |Enables `RGB_MATRIX_CYCLE_PINWHEEL` | +|`#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL` |Enables `RGB_MATRIX_CYCLE_SPIRAL` | +|`#define ENABLE_RGB_MATRIX_DUAL_BEACON` |Enables `RGB_MATRIX_DUAL_BEACON` | +|`#define ENABLE_RGB_MATRIX_RAINBOW_BEACON` |Enables `RGB_MATRIX_RAINBOW_BEACON` | +|`#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS` |Enables `RGB_MATRIX_RAINBOW_PINWHEELS` | +|`#define ENABLE_RGB_MATRIX_RAINDROPS` |Enables `RGB_MATRIX_RAINDROPS` | +|`#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS` |Enables `RGB_MATRIX_JELLYBEAN_RAINDROPS` | +|`#define ENABLE_RGB_MATRIX_HUE_BREATHING` |Enables `RGB_MATRIX_HUE_BREATHING` | +|`#define ENABLE_RGB_MATRIX_HUE_PENDULUM` |Enables `RGB_MATRIX_HUE_PENDULUM` | +|`#define ENABLE_RGB_MATRIX_HUE_WAVE` |Enables `RGB_MATRIX_HUE_WAVE ` | +|`#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL` |Enables `RGB_MATRIX_PIXEL_FRACTAL` | +|`#define ENABLE_RGB_MATRIX_PIXEL_RAIN` |Enables `RGB_MATRIX_PIXEL_RAIN` | + +?> These modes don't require any additional defines. + +|Framebuffer Defines |Description | +|------------------------------------------------------|----------------------------------------------| +|`#define ENABLE_RGB_MATRIX_TYPING_HEATMAP` |Enables `RGB_MATRIX_TYPING_HEATMAP` | +|`#define ENABLE_RGB_MATRIX_DIGITAL_RAIN` |Enables `RGB_MATRIX_DIGITAL_RAIN` | + +?> These modes also require the `RGB_MATRIX_FRAMEBUFFER_EFFECTS` define to be available. + +|Reactive Defines |Description | +|------------------------------------------------------|----------------------------------------------| +|`#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE` |Enables `RGB_MATRIX_SOLID_REACTIVE_SIMPLE` | +|`#define ENABLE_RGB_MATRIX_SOLID_REACTIVE` |Enables `RGB_MATRIX_SOLID_REACTIVE` | +|`#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE` |Enables `RGB_MATRIX_SOLID_REACTIVE_WIDE` | +|`#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE` |Enables `RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE` | +|`#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS` |Enables `RGB_MATRIX_SOLID_REACTIVE_CROSS` | +|`#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS` |Enables `RGB_MATRIX_SOLID_REACTIVE_MULTICROSS`| +|`#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS` |Enables `RGB_MATRIX_SOLID_REACTIVE_NEXUS` | +|`#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS` |Enables `RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS`| +|`#define ENABLE_RGB_MATRIX_SPLASH` |Enables `RGB_MATRIX_SPLASH` | +|`#define ENABLE_RGB_MATRIX_MULTISPLASH` |Enables `RGB_MATRIX_MULTISPLASH` | +|`#define ENABLE_RGB_MATRIX_SOLID_SPLASH` |Enables `RGB_MATRIX_SOLID_SPLASH` | +|`#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH` |Enables `RGB_MATRIX_SOLID_MULTISPLASH` | + +?> These modes also require the `RGB_MATRIX_KEYPRESSES` or `RGB_MATRIX_KEYRELEASES` define to be available. + ### RGB Matrix Effect Typing Heatmap :id=rgb-matrix-effect-typing-heatmap @@ -453,7 +586,7 @@ static bool my_cool_effect(effect_params_t* params) { for (uint8_t i = led_min; i < led_max; i++) { rgb_matrix_set_color(i, 0xff, 0xff, 0x00); } - return led_max < DRIVER_LED_TOTAL; + return rgb_matrix_check_finished_leds(led_max); } // e.g: A more complex effect, relying on external methods and state, with @@ -467,8 +600,7 @@ static bool my_cool_effect2_complex_run(effect_params_t* params) { for (uint8_t i = led_min; i < led_max; i++) { rgb_matrix_set_color(i, 0xff, some_global_state++, 0xff); } - - return led_max < DRIVER_LED_TOTAL; + return rgb_matrix_check_finished_leds(led_max); } static bool my_cool_effect2(effect_params_t* params) { if (params->init) my_cool_effect2_complex_init(params); @@ -478,35 +610,36 @@ static bool my_cool_effect2(effect_params_t* params) { #endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS ``` -For inspiration and examples, check out the built-in effects under `quantum/rgb_matrix_animations/` +For inspiration and examples, check out the built-in effects under `quantum/rgb_matrix/animations/`. ## Colors :id=colors These are shorthands to popular colors. The `RGB` ones can be passed to the `setrgb` functions, while the `HSV` ones to the `sethsv` functions. -|RGB |HSV | -|-------------------|-------------------| -|`RGB_WHITE` |`HSV_WHITE` | -|`RGB_RED` |`HSV_RED` | -|`RGB_CORAL` |`HSV_CORAL` | -|`RGB_ORANGE` |`HSV_ORANGE` | -|`RGB_GOLDENROD` |`HSV_GOLDENROD` | -|`RGB_GOLD` |`HSV_GOLD` | -|`RGB_YELLOW` |`HSV_YELLOW` | -|`RGB_CHARTREUSE` |`HSV_CHARTREUSE` | -|`RGB_GREEN` |`HSV_GREEN` | -|`RGB_SPRINGGREEN` |`HSV_SPRINGGREEN` | -|`RGB_TURQUOISE` |`HSV_TURQUOISE` | -|`RGB_TEAL` |`HSV_TEAL` | -|`RGB_CYAN` |`HSV_CYAN` | -|`RGB_AZURE` |`HSV_AZURE` | -|`RGB_BLUE` |`HSV_BLUE` | -|`RGB_PURPLE` |`HSV_PURPLE` | -|`RGB_MAGENTA` |`HSV_MAGENTA` | -|`RGB_PINK` |`HSV_PINK` | - -These are defined in [`rgblight_list.h`](https://github.com/qmk/qmk_firmware/blob/master/quantum/rgblight_list.h). Feel free to add to this list! +|RGB |HSV | +|---------------------|---------------------| +|`RGB_AZURE` |`HSV_AZURE` | +|`RGB_BLACK`/`RGB_OFF`|`HSV_BLACK`/`HSV_OFF`| +|`RGB_BLUE` |`HSV_BLUE` | +|`RGB_CHARTREUSE` |`HSV_CHARTREUSE` | +|`RGB_CORAL` |`HSV_CORAL` | +|`RGB_CYAN` |`HSV_CYAN` | +|`RGB_GOLD` |`HSV_GOLD` | +|`RGB_GOLDENROD` |`HSV_GOLDENROD` | +|`RGB_GREEN` |`HSV_GREEN` | +|`RGB_MAGENTA` |`HSV_MAGENTA` | +|`RGB_ORANGE` |`HSV_ORANGE` | +|`RGB_PINK` |`HSV_PINK` | +|`RGB_PURPLE` |`HSV_PURPLE` | +|`RGB_RED` |`HSV_RED` | +|`RGB_SPRINGGREEN` |`HSV_SPRINGGREEN` | +|`RGB_TEAL` |`HSV_TEAL` | +|`RGB_TURQUOISE` |`HSV_TURQUOISE` | +|`RGB_WHITE` |`HSV_WHITE` | +|`RGB_YELLOW` |`HSV_YELLOW` | + +These are defined in [`color.h`](https://github.com/qmk/qmk_firmware/blob/master/quantum/color.h). Feel free to add to this list! ## Additional `config.h` Options :id=additional-configh-options @@ -609,7 +742,7 @@ Where `28` is an unused index from `eeconfig.h`. ### Indicators :id=indicators -If you want to set custom indicators, such as an LED for Caps Lock, or layer indication, you can use the `rgb_matrix_indicators_kb` or `rgb_matrix_indicators_user` function for that: +If you want to set custom indicators, such as an LED for Caps Lock, or layer indication, you can use the `rgb_matrix_indicators_kb` or `rgb_matrix_indicators_user` function for that: ```c void rgb_matrix_indicators_kb(void) { rgb_matrix_set_color(index, red, green, blue); @@ -624,29 +757,84 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { } ``` -### Suspended state :id=suspended-state -To use the suspend feature, make sure that `#define RGB_DISABLE_WHEN_USB_SUSPENDED true` is added to the `config.h` file. +### Indicator Examples :id=indicator-examples -Additionally add this to your `.c`: +Caps Lock indicator on alphanumeric flagged keys: +```c +void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { + if (host_keyboard_led_state().caps_lock) { + for (uint8_t i = led_min; i <= led_max; i++) { + if (g_led_config.flags[i] & LED_FLAG_KEYLIGHT) { + rgb_matrix_set_color(i, RGB_RED); + } + } + } +} +``` +Layer indicator on all flagged keys: ```c -void suspend_power_down_kb(void) { - rgb_matrix_set_suspend_state(true); - suspend_power_down_user(); +void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { + for (uint8_t i = led_min; i <= led_max; i++) { + switch(get_highest_layer(layer_state|default_layer_state)) { + case RAISE: + rgb_matrix_set_color(i, RGB_BLUE); + break; + case LOWER: + rgb_matrix_set_color(i, RGB_YELLOW); + break; + default: + break; + } + } } +``` + +#### Examples :id=indicator-examples -void suspend_wakeup_init_kb(void) { - rgb_matrix_set_suspend_state(false); - suspend_wakeup_init_user(); +This example sets the modifiers to be a specific color based on the layer state. You can use a switch case here, instead, if you would like. This uses HSV and then converts to RGB, because this allows the brightness to be limited (important when using the WS2812 driver). + +```c +void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { + HSV hsv = {0, 255, 255}; + + if (layer_state_is(layer_state, 2)) { + hsv = {130, 255, 255}; + } else { + hsv = {30, 255, 255}; + } + + if (hsv.v > rgb_matrix_get_val()) { + hsv.v = rgb_matrix_get_val(); + } + RGB rgb = hsv_to_rgb(hsv); + + for (uint8_t i = led_min; i <= led_max; i++) { + if (HAS_FLAGS(g_led_config.flags[i], 0x01)) { // 0x01 == LED_FLAG_MODIFIER + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + } + } } ``` -or add this to your `keymap.c`: + +If you want to indicate a Host LED status (caps lock, num lock, etc), you can use something like this to light up the caps lock key: + ```c -void suspend_power_down_user(void) { - rgb_matrix_set_suspend_state(true); +void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { + if (host_keyboard_led_state().caps_lock) { + RGB_MATRIX_INDICATOR_SET_COLOR(5, 255, 255, 255); // assuming caps lock is at led #5 + } else { + RGB_MATRIX_INDICATOR_SET_COLOR(5, 0, 0, 0); + } } +``` + +#### Indicators without RGB Matrix Effect -void suspend_wakeup_init_user(void) { - rgb_matrix_set_suspend_state(false); +If you want to just use RGB indicators without RGB matrix effect, it is not possible to disable the latter because toggling RGB off will disable everything. You can workaround it with solid effect and colors off using this init function: +```c +void keyboard_post_init_user(void) { + rgb_matrix_mode_noeeprom(RGB_MATRIX_SOLID_COLOR); + rgb_matrix_sethsv_noeeprom(HSV_OFF); } ``` diff --git a/docs/feature_rgblight.md b/docs/feature_rgblight.md index 994a014a2817..8484586c053b 100644 --- a/docs/feature_rgblight.md +++ b/docs/feature_rgblight.md @@ -119,7 +119,7 @@ if `RGBLIGHT_EFFECT_xxxx` or `RGBLIGHT_ANIMATIONS` is defined, you also have a n Check out [this video](https://youtube.com/watch?v=VKrpPAHlisY) for a demonstration. -Note: For versions older than 0.6.117, The mode numbers were written directly. In `quantum/rgblight.h` there is a contrast table between the old mode number and the current symbol. +Note: For versions older than 0.6.117, The mode numbers were written directly. In `quantum/rgblight/rgblight.h` there is a contrast table between the old mode number and the current symbol. ### Effect and Animation Toggles @@ -326,9 +326,13 @@ would turn the layer 0 (or 1) on and off again three times when `DEBUG` is press Normally lighting layers are not shown when RGB Lighting is disabled (e.g. with `RGB_TOG` keycode). If you would like lighting layers to work even when the RGB Lighting is otherwise off, add `#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF` to your `config.h`. +### Retain brightness + +Usually lighting layers apply their configured brightness once activated. If you would like lighting layers to retain the currently used brightness (as returned by `rgblight_get_val()`), add `#define RGBLIGHT_LAYERS_RETAIN_VAL` to your `config.h`. + ## Functions -If you need to change your RGB lighting in code, for example in a macro to change the color whenever you switch layers, QMK provides a set of functions to assist you. See [`rgblight.h`](https://github.com/qmk/qmk_firmware/blob/master/quantum/rgblight.h) for the full list, but the most commonly used functions include: +If you need to change your RGB lighting in code, for example in a macro to change the color whenever you switch layers, QMK provides a set of functions to assist you. See [`rgblight.h`](https://github.com/qmk/qmk_firmware/blob/master/quantum/rgblight/rgblight.h) for the full list, but the most commonly used functions include: ### Utility Functions |Function |Description | @@ -449,26 +453,27 @@ rgblight_sethsv_at(HSV_GREEN, 2); // led 2 These are shorthands to popular colors. The `RGB` ones can be passed to the `setrgb` functions, while the `HSV` ones to the `sethsv` functions. -|RGB |HSV | -|-------------------|-------------------| -|`RGB_WHITE` |`HSV_WHITE` | -|`RGB_RED` |`HSV_RED` | -|`RGB_CORAL` |`HSV_CORAL` | -|`RGB_ORANGE` |`HSV_ORANGE` | -|`RGB_GOLDENROD` |`HSV_GOLDENROD` | -|`RGB_GOLD` |`HSV_GOLD` | -|`RGB_YELLOW` |`HSV_YELLOW` | -|`RGB_CHARTREUSE` |`HSV_CHARTREUSE` | -|`RGB_GREEN` |`HSV_GREEN` | -|`RGB_SPRINGGREEN` |`HSV_SPRINGGREEN` | -|`RGB_TURQUOISE` |`HSV_TURQUOISE` | -|`RGB_TEAL` |`HSV_TEAL` | -|`RGB_CYAN` |`HSV_CYAN` | -|`RGB_AZURE` |`HSV_AZURE` | -|`RGB_BLUE` |`HSV_BLUE` | -|`RGB_PURPLE` |`HSV_PURPLE` | -|`RGB_MAGENTA` |`HSV_MAGENTA` | -|`RGB_PINK` |`HSV_PINK` | +|RGB |HSV | +|---------------------|---------------------| +|`RGB_AZURE` |`HSV_AZURE` | +|`RGB_BLACK`/`RGB_OFF`|`HSV_BLACK`/`HSV_OFF`| +|`RGB_BLUE` |`HSV_BLUE` | +|`RGB_CHARTREUSE` |`HSV_CHARTREUSE` | +|`RGB_CORAL` |`HSV_CORAL` | +|`RGB_CYAN` |`HSV_CYAN` | +|`RGB_GOLD` |`HSV_GOLD` | +|`RGB_GOLDENROD` |`HSV_GOLDENROD` | +|`RGB_GREEN` |`HSV_GREEN` | +|`RGB_MAGENTA` |`HSV_MAGENTA` | +|`RGB_ORANGE` |`HSV_ORANGE` | +|`RGB_PINK` |`HSV_PINK` | +|`RGB_PURPLE` |`HSV_PURPLE` | +|`RGB_RED` |`HSV_RED` | +|`RGB_SPRINGGREEN` |`HSV_SPRINGGREEN` | +|`RGB_TEAL` |`HSV_TEAL` | +|`RGB_TURQUOISE` |`HSV_TURQUOISE` | +|`RGB_WHITE` |`HSV_WHITE` | +|`RGB_YELLOW` |`HSV_YELLOW` | ```c rgblight_setrgb(RGB_ORANGE); @@ -477,7 +482,7 @@ rgblight_setrgb_at(RGB_GOLD, 3); rgblight_sethsv_range(HSV_WHITE, 0, 6); ``` -These are defined in [`rgblight_list.h`](https://github.com/qmk/qmk_firmware/blob/master/quantum/rgblight_list.h). Feel free to add to this list! +These are defined in [`color.h`](https://github.com/qmk/qmk_firmware/blob/master/quantum/color.h). Feel free to add to this list! ## Changing the order of the LEDs diff --git a/docs/feature_split_keyboard.md b/docs/feature_split_keyboard.md index 4ebf585f5c1f..c8ba18beeb74 100644 --- a/docs/feature_split_keyboard.md +++ b/docs/feature_split_keyboard.md @@ -8,8 +8,7 @@ QMK Firmware has a generic implementation that is usable by any board, as well a For this, we will mostly be talking about the generic implementation used by the Let's Split and other keyboards. -!> ARM is not yet fully supported for Split Keyboards and has many limitations. Progress is being made, but we have not yet reached 100% feature parity. - +!> ARM split supports most QMK subsystems when using the 'serial' and 'serial_usart' drivers. I2C slave is currently unsupported. ## Compatibility Overview @@ -90,7 +89,13 @@ You can configure the firmware to read a pin on the controller to determine hand #define SPLIT_HAND_PIN B7 ``` -This will read the specified pin. If it's high, then the controller assumes it is the left hand, and if it's low, it's assumed to be the right side. +This will read the specified pin. By default, if it's high, then the controller assumes it is the left hand, and if it's low, it's assumed to be the right side. + +This behaviour can be flipped by adding this to you `config.h` file: + +```c +#define SPLIT_HAND_PIN_LOW_IS_LEFT +``` #### Handedness by Matrix Pin @@ -169,7 +174,7 @@ Because not every split keyboard is identical, there are a number of additional #define USE_I2C ``` -This enables I2C support for split keyboards. This isn't strictly for communication, but can be used for OLED or other I2C-based devices. +This configures the use of I2C support for split keyboard transport (AVR only). ```c #define SOFT_SERIAL_PIN D0 @@ -193,20 +198,148 @@ If you're having issues with serial communication, you can change this value, as * **`5`**: about 20kbps ```c -#define SPLIT_MODS_ENABLE +#define FORCED_SYNC_THROTTLE_MS 100 ``` -This enables transmitting modifier state (normal, weak and oneshot) to the non -primary side of the split keyboard. This adds a few bytes of data to the split -communication protocol and may impact the matrix scan speed when enabled. -The purpose of this feature is to support cosmetic use of modifer state (e.g. -displaying status on an OLED screen). +This sets the maximum number of milliseconds before forcing a synchronization of data from master to slave. Under normal circumstances this sync occurs whenever the data _changes_, for safety a data transfer occurs after this number of milliseconds if no change has been detected since the last sync. + +```c +#define SPLIT_MAX_CONNECTION_ERRORS 10 +``` +This sets the maximum number of failed communication attempts (one per scan cycle) from the master part before it assumes that no slave part is connected. This makes it possible to use a master part without the slave part connected. + +Set to 0 to disable the disconnection check altogether. + +```c +#define SPLIT_CONNECTION_CHECK_TIMEOUT 500 +``` +How long (in milliseconds) the master part should block all connection attempts to the slave after the communication has been flagged as disconnected (see `SPLIT_MAX_CONNECTION_ERRORS` above). + +One communication attempt will be allowed everytime this amount of time has passed since the last attempt. If that attempt succeeds, the communication is seen as working again. + +Set to 0 to disable this throttling of communications while disconnected. This can save you a couple of bytes of firmware size. + + +### Data Sync Options + +The following sync options add overhead to the split communication protocol and may negatively impact the matrix scan speed when enabled. These can be enabled by adding the chosen option(s) to your `config.h` file. ```c #define SPLIT_TRANSPORT_MIRROR ``` -This mirrors the master side matrix to the slave side for features that react or require knowledge of master side key presses on the slave side. This adds a few bytes of data to the split communication protocol and may impact the matrix scan speed when enabled. The purpose of this feature is to support cosmetic use of key events (e.g. RGB reacting to Keypresses). +This mirrors the master side matrix to the slave side for features that react or require knowledge of master side key presses on the slave side. The purpose of this feature is to support cosmetic use of key events (e.g. RGB reacting to keypresses). + +```c +#define SPLIT_LAYER_STATE_ENABLE +``` + +This enables syncing of the layer state between both halves of the split keyboard. The main purpose of this feature is to enable support for use of things like OLED display of the currently active layer. + +```c +#define SPLIT_LED_STATE_ENABLE +``` + +This enables syncing of the Host LED status (caps lock, num lock, etc) between both halves of the split keyboard. The main purpose of this feature is to enable support for use of things like OLED display of the Host LED status. + +```c +#define SPLIT_MODS_ENABLE +``` + +This enables transmitting modifier state (normal, weak and oneshot) to the non primary side of the split keyboard. The purpose of this feature is to support cosmetic use of modifer state (e.g. displaying status on an OLED screen). + +```c +#define SPLIT_WPM_ENABLE +``` + +This enables transmitting the current WPM to the slave side of the split keyboard. The purpose of this feature is to support cosmetic use of WPM (e.g. displaying the current value on an OLED screen). + +```c +#define SPLIT_OLED_ENABLE +``` + +This enables transmitting the current OLED on/off status to the slave side of the split keyboard. The purpose of this feature is to support state (on/off state only) syncing. + +```c +#define SPLIT_ST7565_ENABLE +``` + +This enables transmitting the current ST7565 on/off status to the slave side of the split keyboard. The purpose of this feature is to support state (on/off state only) syncing. + +### Custom data sync between sides :id=custom-data-sync + +QMK's split transport allows for arbitrary data transactions at both the keyboard and user levels. This is modelled on a remote procedure call, with the master invoking a function on the slave side, with the ability to send data from master to slave, process it slave side, and send data back from slave to master. + +To leverage this, a keyboard or user/keymap can define a comma-separated list of _transaction IDs_: + +```c +// for keyboard-level data sync: +#define SPLIT_TRANSACTION_IDS_KB KEYBOARD_SYNC_A, KEYBOARD_SYNC_B +// or, for user: +#define SPLIT_TRANSACTION_IDS_USER USER_SYNC_A, USER_SYNC_B, USER_SYNC_C +``` + +These _transaction IDs_ then need a slave-side handler function to be registered with the split transport, for example: + +```c +typedef struct _master_to_slave_t { + int m2s_data; +} master_to_slave_t; + +typedef struct _slave_to_master_t { + int s2m_data; +} slave_to_master_t; + +void user_sync_a_slave_handler(uint8_t in_buflen, const void* in_data, uint8_t out_buflen, void* out_data) { + const master_to_slave_t *m2s = (const master_to_slave_t*)in_data; + slave_to_master_t *s2m = (slave_to_master_t*)out_data; + s2m->s2m_data = m2s->m2s_data + 5; // whatever comes in, add 5 so it can be sent back +} + +void keyboard_post_init_user(void) { + transaction_register_rpc(USER_SYNC_A, user_sync_a_slave_handler); +} +``` + +The master side can then invoke the slave-side handler - for normal keyboard functionality to be minimally affected, any keyboard- or user-level code attempting to sync data should be throttled: + +```c +void housekeeping_task_user(void) { + if (is_keyboard_master()) { + // Interact with slave every 500ms + static uint32_t last_sync = 0; + if (timer_elapsed32(last_sync) > 500) { + master_to_slave_t m2s = {6}; + slave_to_master_t s2m = {0}; + if(transaction_rpc_exec(USER_SYNC_A, sizeof(m2s), &m2s, sizeof(s2m), &s2m)) { + last_sync = timer_read32(); + dprintf("Slave value: %d\n", s2m.s2m_data); // this will now be 11, as the slave adds 5 + } else { + dprint("Slave sync failed!\n"); + } + } + } +} +``` + +!> It is recommended that any data sync between halves happens during the master side's _housekeeping task_. This ensures timely retries should failures occur. + +If only one-way data transfer is needed, helper methods are provided: + +```c +bool transaction_rpc_exec(int8_t transaction_id, uint8_t initiator2target_buffer_size, const void *initiator2target_buffer, uint8_t target2initiator_buffer_size, void *target2initiator_buffer); +bool transaction_rpc_send(int8_t transaction_id, uint8_t initiator2target_buffer_size, const void *initiator2target_buffer); +bool transaction_rpc_recv(int8_t transaction_id, uint8_t target2initiator_buffer_size, void *target2initiator_buffer); +``` + +By default, the inbound and outbound data is limited to a maximum of 32 bytes each. The sizes can be altered if required: + +```c +// Master to slave: +#define RPC_M2S_BUFFER_SIZE 48 +// Slave to master: +#define RPC_S2M_BUFFER_SIZE 48 +``` ### Hardware Configuration Options diff --git a/docs/feature_st7565.md b/docs/feature_st7565.md new file mode 100644 index 000000000000..de3e44d8e931 --- /dev/null +++ b/docs/feature_st7565.md @@ -0,0 +1,274 @@ +# ST7565 LCD Driver + +## Supported Hardware + +LCD modules using ST7565 driver IC, communicating over SPI. + +|Module |IC |Size |Notes | +|------------------------------|-------|------|----------------------------------------------------------| +|Newhaven Display NHD-C12832A1Z|ST7565R|128x32|Used by Ergodox Infinity; primary consumer of this feature| +|Zolentech ZLE12864B |ST7565P|128x64|Requires contrast adjustment | + +## Usage + +To enable the feature, there are three steps. First, when compiling your keyboard, you'll need to add the following to your `rules.mk`: + +```make +ST7565_ENABLE = yes +``` + +Then in your `keymap.c` file, implement the ST7565 task call. This example assumes your keymap has three layers named `_QWERTY`, `_FN` and `_ADJ`: + +```c +#ifdef ST7565_ENABLE +void st7565_task_user(void) { + // Host Keyboard Layer Status + st7565_write_P(PSTR("Layer: "), false); + + switch (get_highest_layer(layer_state)) { + case _QWERTY: + st7565_write_P(PSTR("Default\n"), false); + break; + case _FN: + st7565_write_P(PSTR("FN\n"), false); + break; + case _ADJ: + st7565_write_P(PSTR("ADJ\n"), false); + break; + default: + // Or use the write_ln shortcut over adding '\n' to the end of your string + st7565_write_ln_P(PSTR("Undefined"), false); + } + + // Host Keyboard LED Status + led_t led_state = host_keyboard_led_state(); + st7565_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); + st7565_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); + st7565_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); +} +#endif +``` + +## Logo Example + +In the default font, certain ranges of characters are reserved for a QMK logo. To render this logo to the screen, use the following code example: + +```c +static void render_logo(void) { + static const char PROGMEM qmk_logo[] = { + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00 + }; + + st7565_write_P(qmk_logo, false); +} +``` + +## Buffer Read Example +For some purposes, you may need to read the current state of the display buffer. The `st7565_read_raw` function can be used to safely read bytes from the buffer. + +In this example, calling `fade_display` in the `st7565_task_user` function will slowly fade away whatever is on the screen by turning random pixels off over time. +```c +//Setup some mask which can be or'd with bytes to turn off pixels +const uint8_t single_bit_masks[8] = {127, 191, 223, 239, 247, 251, 253, 254}; + +static void fade_display(void) { + //Define the reader structure + display_buffer_reader_t reader; + uint8_t buff_char; + if (random() % 30 == 0) { + srand(timer_read()); + // Fetch a pointer for the buffer byte at index 0. The return structure + // will have the pointer and the number of bytes remaining from this + // index position if we want to perform a sequential read by + // incrementing the buffer pointer + reader = st7565_read_raw(0); + //Loop over the remaining buffer and erase pixels as we go + for (uint16_t i = 0; i < reader.remaining_element_count; i++) { + //Get the actual byte in the buffer by dereferencing the pointer + buff_char = *reader.current_element; + if (buff_char != 0) { + st7565_write_raw_byte(buff_char & single_bit_masks[rand() % 8], i); + } + //increment the pointer to fetch a new byte during the next loop + reader.current_element++; + } + } +} +``` + +## Other Examples + +In split keyboards, it is very common to have two displays that each render different content and are oriented or flipped differently. You can do this by switching which content to render by using the return value from `is_keyboard_master()` or `is_keyboard_left()` found in `split_util.h`, e.g: + +```c +#ifdef ST7565_ENABLE +display_rotation_t st7565_init_user(display_rotation_t rotation) { + if (!is_keyboard_master()) { + return DISPLAY_ROTATION_180; // flips the display 180 degrees if offhand + } + + return rotation; +} + +void st7565_task_user(void) { + if (is_keyboard_master()) { + render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) + } else { + render_logo(); // Renders a static logo + } +} +#endif +``` + +## Basic Configuration + +|Define |Default |Description | +|------------------------|--------------|-----------------------------------------------------------------------------------------------------| +|`ST7565_A0_PIN` |*Not defined* |(Required) The GPIO connected to the display's A0 (data/command) pin | +|`ST7565_RST_PIN` |*Not defined* |(Required) The GPIO connected to the display's reset pin | +|`ST7565_SS_PIN` |*Not defined* |(Required) The GPIO connected to the display's slave select pin | +|`ST7565_SPI_CLK_DIVISOR`|`4` |The SPI clock divisor to use | +|`ST7565_FONT_H` |`"glcdfont.c"`|The font code file to use for custom fonts | +|`ST7565_FONT_START` |`0` |The starting character index for custom fonts | +|`ST7565_FONT_END` |`223` |The ending character index for custom fonts | +|`ST7565_FONT_WIDTH` |`6` |The font width | +|`ST7565_FONT_HEIGHT` |`8` |The font height (untested) | +|`ST7565_TIMEOUT` |`60000` |Turns off the screen after 60000ms of keyboard inactivity. Helps reduce burn-in. Set to 0 to disable.| +|`ST7565_COLUMN_OFFSET` |`0` |Shift output to the right this many pixels. | +|`ST7565_CONTRAST` |`32` |The default contrast level of the display, from 0 to 255. | +|`ST7565_UPDATE_INTERVAL`|`0` |Set the time interval for updating the display in ms. This will improve the matrix scan rate. | + +## Custom sized displays + +The default display size for this feature is 128x32 and all necessary defines are precalculated with that in mind. + +|Define |Default |Description | +|-----------------------|----------|-----------------------------------------------------------------------------------------------------------| +|`ST7565_DISPLAY_WIDTH` |`128` |The width of the display. | +|`ST7565_DISPLAY_HEIGHT`|`32` |The height of the display. | +|`ST7565_MATRIX_SIZE` |`512` |The local buffer size to allocate.
`(ST7565_DISPLAY_HEIGHT / 8 * ST7565_DISPLAY_WIDTH)`. | +|`ST7565_BLOCK_TYPE` |`uint16_t`|The unsigned integer type to use for dirty rendering. | +|`ST7565_BLOCK_COUNT` |`16` |The number of blocks the display is divided into for dirty rendering.
`(sizeof(ST7565_BLOCK_TYPE) * 8)`.| +|`ST7565_BLOCK_SIZE` |`32` |The size of each block for dirty rendering
`(ST7565_MATRIX_SIZE / ST7565_BLOCK_COUNT)`. | + +## API + +```c +// Rotation enum values are flags +typedef enum { + DISPLAY_ROTATION_0, + DISPLAY_ROTATION_180 +} display_rotation_t; + +// Initialize the display, rotating the rendered output based on the define passed in. +// Returns true if the was initialized successfully +bool st7565_init(display_rotation_t rotation); + +// Called at the start of st7565_init, weak function overridable by the user +// rotation - the value passed into st7565_init +// Return new display_rotation_t if you want to override default rotation +display_rotation_t st7565_init_user(display_rotation_t rotation); + +// Clears the display buffer, resets cursor position to 0, and sets the buffer to dirty for rendering +void st7565_clear(void); + +// Renders the dirty chunks of the buffer to display +void st7565_render(void); + +// Moves cursor to character position indicated by column and line, wraps if out of bounds +// Max column denoted by 'st7565_max_chars()' and max lines by 'st7565_max_lines()' functions +void st7565_set_cursor(uint8_t col, uint8_t line); + +// Advances the cursor to the next page, writing ' ' if true +// Wraps to the begining when out of bounds +void st7565_advance_page(bool clearPageRemainder); + +// Moves the cursor forward 1 character length +// Advance page if there is not enough room for the next character +// Wraps to the begining when out of bounds +void st7565_advance_char(void); + +// Writes a single character to the buffer at current cursor position +// Advances the cursor while writing, inverts the pixels if true +// Main handler that writes character data to the display buffer +void st7565_write_char(const char data, bool invert); + +// Writes a string to the buffer at current cursor position +// Advances the cursor while writing, inverts the pixels if true +void st7565_write(const char *data, bool invert); + +// Writes a string to the buffer at current cursor position +// Advances the cursor while writing, inverts the pixels if true +// Advances the cursor to the next page, wiring ' ' to the remainder of the current page +void st7565_write_ln(const char *data, bool invert); + +// Pans the buffer to the right (or left by passing true) by moving contents of the buffer +// Useful for moving the screen in preparation for new drawing +void st7565_pan(bool left); + +// Returns a pointer to the requested start index in the buffer plus remaining +// buffer length as struct +display_buffer_reader_t st7565_read_raw(uint16_t start_index); + +// Writes a string to the buffer at current cursor position +void st7565_write_raw(const char *data, uint16_t size); + +// Writes a single byte into the buffer at the specified index +void st7565_write_raw_byte(const char data, uint16_t index); + +// Sets a specific pixel on or off +// Coordinates start at top-left and go right and down for positive x and y +void st7565_write_pixel(uint8_t x, uint8_t y, bool on); + +// Writes a PROGMEM string to the buffer at current cursor position +// Advances the cursor while writing, inverts the pixels if true +// Remapped to call 'void st7565_write(const char *data, bool invert);' on ARM +void st7565_write_P(const char *data, bool invert); + +// Writes a PROGMEM string to the buffer at current cursor position +// Advances the cursor while writing, inverts the pixels if true +// Advances the cursor to the next page, wiring ' ' to the remainder of the current page +// Remapped to call 'void st7565_write_ln(const char *data, bool invert);' on ARM +void st7565_write_ln_P(const char *data, bool invert); + +// Writes a PROGMEM string to the buffer at current cursor position +void st7565_write_raw_P(const char *data, uint16_t size); + +// Can be used to manually turn on the screen if it is off +// Returns true if the screen was on or turns on +bool st7565_on(void); + +// Called when st7565_on() turns on the screen, weak function overridable by the user +// Not called if the screen is already on +void st7565_on_user(void); + +// Can be used to manually turn off the screen if it is on +// Returns true if the screen was off or turns off +bool st7565_off(void); + +// Called when st7565_off() turns off the screen, weak function overridable by the user +// Not called if the screen is already off +void st7565_off_user(void); + +// Returns true if the screen is currently on, false if it is +// not +bool st7565_is_on(void); + +// Basically it's st7565_render, but with timeout management and st7565_task_user calling! +void st7565_task(void); + +// Called at the start of st7565_task, weak function overridable by the user +void st7565_task_user(void); + +// Inverts the display +// Returns true if the screen was or is inverted +bool st7565_invert(bool invert); + +// Returns the maximum number of characters that will fit on a line +uint8_t st7565_max_chars(void); + +// Returns the maximum number of lines that will fit on the display +uint8_t st7565_max_lines(void); +``` diff --git a/docs/feature_stenography.md b/docs/feature_stenography.md index bf4bd39db97b..691d83f97068 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 ``` @@ -40,8 +40,8 @@ MOUSEKEY_ENABLE = no In your keymap create a new layer for Plover. You will need to include `keymap_steno.h`. See `planck/keymaps/steno/keymap.c` for an example. Remember to create a key to switch to the layer as well as a key for exiting the layer. If you would like to switch modes on the fly you can use the keycodes `QK_STENO_BOLT` and `QK_STENO_GEMINI`. If you only want to use one of the protocols you may set it up in your initialization function: ```c -void matrix_init_user() { - steno_set_mode(STENO_MODE_GEMINI); // or STENO_MODE_BOLT +void eeconfig_init_user() { + steno_set_mode(STENO_MODE_GEMINI); // or STENO_MODE_BOLT } ``` @@ -128,3 +128,19 @@ As defined in `keymap_steno.h`. |`STN_RES1`||(GeminiPR only)| |`STN_RES2`||(GeminiPR only)| |`STN_PWR`||(GeminiPR only)| + +If you do not want to hit two keys with one finger combined keycodes can be used. These are also defined in `keymap_steno.h`, and causes both keys to be reported as pressed or released. To use these keycodes define `STENO_COMBINEDMAP` in your `config.h` file. + +|Combined key | Key1 | Key 2 | +|---------------|--------|----------| +|STN_S3 | STN_S1 | STN_S2 | +|STN_TKL | STN_TL | STN_KL | +|STN_PWL | STN_PL | STN_WL | +|STN_HRL | STN_HL | STN_RL | +|STN_FRR | STN_FR | STN_RR | +|STN_PBR | STN_PR | STN_BR | +|STN_LGR | STN_LR | STN_GR | +|STN_TSR | STN_TR | STN_SR | +|STN_DZR | STN_DR | STN_ZR | +|STN_AO | STN_A | STN_O | +|STN_EU | STN_E | STN_U | diff --git a/docs/feature_swap_hands.md b/docs/feature_swap_hands.md index cbc574b6b866..654108ae7068 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}}, @@ -27,5 +27,7 @@ Note that the array indices are reversed same as the matrix and the values are o |`SH_MON` |Swaps hands when pressed, returns to normal when released (momentary). | |`SH_MOFF` |Momentarily turns off swap. | |`SH_TG` |Toggles swap on and off with every key press. | -|`SH_TT` |Toggles with a tap; momentary when held. | +|`SH_TT` |Momentary swap when held, toggles with repeated taps (see below). | |`SH_OS` |One shot swap hands: toggles while pressed or until next key press. | + +`SH_TT` swap-hands tap-toggle key is similar to [layer tap-toggle](feature_layers.md?id=switching-and-toggling-layers). Tapping repeatedly (5 taps by default) will toggle swap-hands on or off, like `SH_TG`. Tap-toggle count can be changed by defining a value for `TAPPING_TOGGLE`. diff --git a/docs/feature_tap_dance.md b/docs/feature_tap_dance.md index 7396e791c3cd..40f9802db339 100644 --- a/docs/feature_tap_dance.md +++ b/docs/feature_tap_dance.md @@ -29,7 +29,7 @@ After this, you'll want to use the `tap_dance_actions` array to specify what act * `ACTION_TAP_DANCE_FN(fn)`: Calls the specified function - defined in the user keymap - with the final tap count of the tap dance action. * `ACTION_TAP_DANCE_FN_ADVANCED(on_each_tap_fn, on_dance_finished_fn, on_dance_reset_fn)`: Calls the first specified function - defined in the user keymap - on every tap, the second function when the dance action finishes (like the previous option), and the last function when the tap dance action resets. * ~~`ACTION_TAP_DANCE_FN_ADVANCED_TIME(on_each_tap_fn, on_dance_finished_fn, on_dance_reset_fn, tap_specific_tapping_term)`~~: This functions identically to the `ACTION_TAP_DANCE_FN_ADVANCED` function, but uses a custom tapping term for it, instead of the predefined `TAPPING_TERM`. - * This is deprecated in favor of the Per Key Tapping Term functionality, as outlined [here](custom_quantum_functions.md#Custom_Tapping_Term). You'd want to check for the specific `TD()` macro that you want to use (such as `TD(TD_ESC_CAPS)`) instead of using this specific Tap Dance function. + * This is deprecated in favor of the Per Key Tapping Term functionality, as outlined [here](tap_hold.md#tapping-term). You'd want to check for the specific `TD()` macro that you want to use (such as `TD(TD_ESC_CAPS)`) instead of using this specific Tap Dance function. The first option is enough for a lot of cases, that just want dual roles. For example, `ACTION_TAP_DANCE_DOUBLE(KC_SPC, KC_ENT)` will result in `Space` being sent on single-tap, `Enter` otherwise. @@ -50,7 +50,7 @@ The main entry point is `process_tap_dance()`, called from `process_record_quant This means that you have `TAPPING_TERM` time to tap the key again; you do not have to input all the taps within a single `TAPPING_TERM` timeframe. This allows for longer tap counts, with minimal impact on responsiveness. -Our next stop is `matrix_scan_tap_dance()`. This handles the timeout of tap-dance keys. +Our next stop is `tap_dance_task()`. This handles the timeout of tap-dance keys. For the sake of flexibility, tap-dance actions can be either a pair of keycodes, or a user function. The latter allows one to handle higher tap counts, or do extra things, like blink the LEDs, fiddle with the backlighting, and so on. This is accomplished by using an union, and some clever macros. @@ -299,7 +299,7 @@ void x_finished(qk_tap_dance_state_t *state, void *user_data) { xtap_state.state = cur_dance(state); switch (xtap_state.state) { case TD_SINGLE_TAP: register_code(KC_X); break; - case TD_SINGLE_HOLD: register_code(KC_LCTRL); break; + case TD_SINGLE_HOLD: register_code(KC_LCTL); break; case TD_DOUBLE_TAP: register_code(KC_ESC); break; case TD_DOUBLE_HOLD: register_code(KC_LALT); break; // Last case is for fast typing. Assuming your key is `f`: @@ -312,7 +312,7 @@ void x_finished(qk_tap_dance_state_t *state, void *user_data) { void x_reset(qk_tap_dance_state_t *state, void *user_data) { switch (xtap_state.state) { case TD_SINGLE_TAP: unregister_code(KC_X); break; - case TD_SINGLE_HOLD: unregister_code(KC_LCTRL); break; + case TD_SINGLE_HOLD: unregister_code(KC_LCTL); break; case TD_DOUBLE_TAP: unregister_code(KC_ESC); break; case TD_DOUBLE_HOLD: unregister_code(KC_LALT); case TD_DOUBLE_SINGLE_TAP: unregister_code(KC_X); @@ -393,6 +393,9 @@ void altlp_finished(qk_tap_dance_state_t *state, void *user_data) { case TD_DOUBLE_SINGLE_TAP: // Allow nesting of 2 parens `((` within tapping term tap_code16(KC_LPRN); register_code16(KC_LPRN); + break; + default: + break; } } @@ -406,6 +409,9 @@ void altlp_reset(qk_tap_dance_state_t *state, void *user_data) { break; case TD_DOUBLE_SINGLE_TAP: unregister_code16(KC_LPRN); + break; + default: + break; } } @@ -490,6 +496,8 @@ void ql_finished(qk_tap_dance_state_t *state, void *user_data) { layer_on(_MY_LAYER); } break; + default: + break; } } diff --git a/docs/feature_userspace.md b/docs/feature_userspace.md index 8b001e3ce21b..8c617fe33a06 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/feature_velocikey.md b/docs/feature_velocikey.md index 5d98410735bc..14d4be314d04 100644 --- a/docs/feature_velocikey.md +++ b/docs/feature_velocikey.md @@ -6,14 +6,13 @@ Velocikey is a feature that lets you control the speed of lighting effects (like For Velocikey to take effect, there are two steps. First, when compiling your keyboard, you'll need to set `VELOCIKEY_ENABLE=yes` in `rules.mk`, e.g.: ``` -BOOTMAGIC_ENABLE = no MOUSEKEY_ENABLE = no STENO_ENABLE = no EXTRAKEY_ENABLE = yes VELOCIKEY_ENABLE = yes ``` -Then, while using your keyboard, you need to also turn it on with the VLK_TOG keycode, which toggles the feature on and off. +Then, while using your keyboard, you need to also turn it on with the `VLK_TOG` keycode, which toggles the feature on and off. The following light effects will all be controlled by Velocikey when it is enabled: - RGB Breathing diff --git a/docs/feature_wpm.md b/docs/feature_wpm.md index c8ec3a7f3274..87145c97e3d1 100644 --- a/docs/feature_wpm.md +++ b/docs/feature_wpm.md @@ -10,11 +10,23 @@ For split keyboards using soft serial, the computed WPM score will be available ## Configuration -|Define |Default | Description | -|-----------------------------|--------------|------------------------------------------------------------------------------------------| -|`WPM_SMOOTHING` |`0.0487` | Sets the smoothing to about 40 keystrokes | -|`WPM_ESTIMATED_WORD_SIZE` |`5` | This is the value used when estimating average word size (for regression and normal use) | -|`WPM_ALLOW_COUNT_REGRESSOIN` |_Not defined_ | If defined allows the WPM to be decreased when hitting Delete or Backspace | +| Define | Default | Description | +|------------------------------|---------------|------------------------------------------------------------------------------------------| +| `WPM_ESTIMATED_WORD_SIZE` | `5` | This is the value used when estimating average word size (for regression and normal use) | +| `WPM_ALLOW_COUNT_REGRESSION` | _Not defined_ | If defined allows the WPM to be decreased when hitting Delete or Backspace | +| `WPM_UNFILTERED` | _Not defined_ | If undefined (the default), WPM values will be smoothed to avoid sudden changes in value | +| `WPM_SAMPLE_SECONDS` | `5` | This defines how many seconds of typing to average, when calculating WPM | +| `WPM_SAMPLE_PERIODS` | `50` | This defines how many sampling periods to use when calculating WPM | +| `WPM_LAUNCH_CONTROL` | _Not defined_ | If defined, WPM values will be calculated using partial buffers when typing begins | + +'WPM_UNFILTERED' is potentially useful if you're filtering data in some other way (and also because it reduces the code required for the WPM feature), or if reducing measurement latency to a minimum is important for you. + +Increasing 'WPM_SAMPLE_SECONDS' will give more smoothly changing WPM values at the expense of slightly more latency to the WPM calculation. + +Increasing 'WPM_SAMPLE_PERIODS' will improve the smoothness at which WPM decays once typing stops, at a cost of approximately this many bytes of firmware space. + +If 'WPM_LAUNCH_CONTROL' is defined, whenever WPM drops to zero, the next time typing begins WPM will be calculated based only on the time since that typing began, instead of the whole period of time specified by WPM_SAMPLE_SECONDS. This results in reaching an accurate WPM value much faster, even when filtering is enabled and a large WPM_SAMPLE_SECONDS value is specified. + ## Public Functions |Function |Description | @@ -35,7 +47,7 @@ bool wpm_keycode_user(uint16_t keycode) { } else if (keycode > 0xFF) { keycode = 0; } - if ((keycode >= KC_A && keycode <= KC_0) || (keycode >= KC_TAB && keycode <= KC_SLASH)) { + if ((keycode >= KC_A && keycode <= KC_0) || (keycode >= KC_TAB && keycode <= KC_SLSH)) { return true; } @@ -45,6 +57,7 @@ bool wpm_keycode_user(uint16_t keycode) { Additionally, if `WPM_ALLOW_COUNT_REGRESSION` is defined, there is the `uint8_t wpm_regress_count(uint16_t keycode)` function that allows you to decrease the WPM. This is useful if you want to be able to penalize certain keycodes (or even combinations). +```c __attribute__((weak)) uint8_t wpm_regress_count(uint16_t keycode) { bool weak_modded = (keycode >= QK_LCTL && keycode < QK_LSFT) || (keycode >= QK_RCTL && keycode < QK_RSFT); @@ -60,3 +73,4 @@ __attribute__((weak)) uint8_t wpm_regress_count(uint16_t keycode) { return 1; } } +``` diff --git a/docs/flashing.md b/docs/flashing.md index 83c97444e106..2e69f246aa65 100644 --- a/docs/flashing.md +++ b/docs/flashing.md @@ -48,7 +48,7 @@ QMK maintains [a fork of the LUFA DFU bootloader](https://github.com/qmk/lufa/tr //#define QMK_LED E6 //#define QMK_SPEAKER C6 ``` -Currently we do not recommend making `QMK_ESC` the same key as the one designated for [Bootmagic Lite](feature_bootmagic.md#bootmagic-lite), as holding it down will cause the MCU to loop back and forth between entering and exiting the bootloader. +Currently we do not recommend making `QMK_ESC` the same key as the one designated for [Bootmagic Lite](feature_bootmagic.md), as holding it down will cause the MCU to loop back and forth between entering and exiting the bootloader. The manufacturer and product strings are automatically pulled from `config.h`, with " Bootloader" appended to the product string. @@ -127,7 +127,7 @@ To ensure compatibility with the USBasploader bootloader, make sure this block i ```make # Bootloader selection -BOOTLOADER = USBasp +BOOTLOADER = usbasploader ``` Compatible flashers: @@ -153,13 +153,13 @@ To ensure compatibility with the bootloadHID bootloader, make sure this block is ```make # Bootloader selection -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid ``` Compatible flashers: * [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (recommended GUI) -* [bootloadHID CLI](https://www.obdev.at/products/vusb/bootloadhid.html) / `:bootloadHID` target in QMK (recommended command line) +* [bootloadHID CLI](https://www.obdev.at/products/vusb/bootloadhid.html) / `:bootloadhid` target in QMK (recommended command line) * [HIDBootFlash](http://vusb.wikidot.com/project:hidbootflash) Flashing sequence: @@ -171,6 +171,52 @@ Flashing sequence: 3. Flash a .hex file 4. Reset the device into application mode (may be done automatically) +### QMK HID + +QMK maintains [a fork of the LUFA HID bootloader](https://github.com/qmk/lufa/tree/master/Bootloaders/HID), which uses a USB HID Endpoint for flashing in the way that the PJRC's Teensy Loader flasher and HalfKay bootloader work. Additionally, it performs a simple matrix scan for exiting the bootloader and returning to the application, as well as flashing an LED/making a ticking noise with a speaker when things are happening. + +To ensure compatibility with the QMK HID bootloader, make sure this block is present in your `rules.mk`: + +```make +# Bootloader selection +BOOTLOADER = qmk-hid +``` + +To enable the additional features, add the following defines to your `config.h`: + +```c +#define QMK_ESC_OUTPUT F1 // COL pin if COL2ROW +#define QMK_ESC_INPUT D5 // ROW pin if COL2ROW +// Optional: +//#define QMK_LED E6 +//#define QMK_SPEAKER C6 +``` + +Currently we do not recommend making `QMK_ESC` the same key as the one designated for [Bootmagic Lite](feature_bootmagic.md), as holding it down will cause the MCU to loop back and forth between entering and exiting the bootloader. + +The manufacturer and product strings are automatically pulled from `config.h`, with " Bootloader" appended to the product string. + +To generate this bootloader, use the `bootloader` target, eg. `make planck/rev4:default:bootloader`. To generate a production-ready .hex file (combining QMK and the bootloader), use the `production` target, eg. `make planck/rev4:default:production`. + +Compatible flashers: + +* TBD + * Currently, you need to either use the [Python script](https://github.com/qmk/lufa/tree/master/Bootloaders/HID/HostLoaderApp_python), or compile [`hid_bootloader_cli`](https://github.com/qmk/lufa/tree/master/Bootloaders/HID/HostLoaderApp), from the LUFA repo. Homebrew may (will) have support for this directly (via `brew install qmk/qmk/hid_bootloader_cli`). + +Flashing sequence: + +1. Enter the bootloader using any of the following methods: + * Press the `RESET` keycode + * Press the `RESET` button on the PCB if available + * short RST to GND quickly +2. Wait for the OS to detect the device +3. Flash a .hex file +4. Reset the device into application mode (may be done automatically) + +### `make` Targets + +* `:qmk-hid`: Checks every 5 seconds until a DFU device is available, and then flashes the firmware. + ## STM32/APM32 DFU All STM32 and APM32 MCUs, except for F103 (see the [STM32duino section](#stm32duino)) come preloaded with a factory bootloader that cannot be modified nor deleted. @@ -252,7 +298,7 @@ Flashing sequence: ## tinyuf2 -Keyboards may opt into supporting the tinyuf2 bootloader. This is currently only supported on the F411 blackpill. +Keyboards may opt into supporting the tinyuf2 bootloader. This is currently only supported on the F401/F411 blackpill. The `rules.mk` setting for this bootloader is `tinyuf2`, and can be specified at the keymap or user level. diff --git a/docs/flashing_bootloadhid.md b/docs/flashing_bootloadhid.md index 731d92772737..213c7c1321ac 100644 --- a/docs/flashing_bootloadhid.md +++ b/docs/flashing_bootloadhid.md @@ -15,9 +15,9 @@ General flashing sequence: ?> Using the QMK installation script, detailed [here](newbs_getting_started.md), the required bootloadHID tools should be automatically installed. -To flash via the command line, use the target `:bootloadHID` by executing the following command: +To flash via the command line, use the target `:bootloadhid` by executing the following command: - make ::bootloadHID + make ::bootloadhid ## GUI Flashing @@ -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/README.md b/docs/fr-fr/README.md index dfb9dcda4e94..3d1f740abb9a 100644 --- a/docs/fr-fr/README.md +++ b/docs/fr-fr/README.md @@ -1,7 +1,6 @@ # Quantum Mechanical Keyboard Firmware [![Version courante](https://img.shields.io/github/tag/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/tags) -[![Statut du build](https://travis-ci.org/qmk/qmk_firmware.svg?branch=master)](https://travis-ci.org/qmk/qmk_firmware) [![Discord](https://img.shields.io/discord/440868230475677696.svg)](https://discord.gg/Uq7gcHh) [![Statut de la doc](https://img.shields.io/badge/docs-ready-orange.svg)](https://docs.qmk.fm) [![Contributeurs GitHub](https://img.shields.io/github/contributors/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/pulse/monthly) diff --git a/docs/fr-fr/breaking_changes.md b/docs/fr-fr/breaking_changes.md index 2dbb26e5a5bc..4c3817d2ef66 100644 --- a/docs/fr-fr/breaking_changes.md +++ b/docs/fr-fr/breaking_changes.md @@ -103,5 +103,4 @@ Ceci est fait immédiatement après la fusion de la branche `future` précédent * [ ] `git push origin future` * Actions sur GitHub * [ ] Crée un PR pour `future` - * [ ] S'assurer que Travis ne relève aucun problème * [ ] Fusion le PR `future` diff --git a/docs/fr-fr/cli.md b/docs/fr-fr/cli.md index 428153645828..917a9315bc2e 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` @@ -85,14 +66,14 @@ qmk compile qmk compile -kb -km ``` -## `qmk cformat` +## `qmk format-c` Cette commande formatte le code C en utilisant clang-format. Lancez-la sans arguments pour formatter tout le code core, ou passez les noms de fichiers à la ligne de commande pour la lancer sur des fichiers spécifiques. **Utilisation**: ``` -qmk cformat [file1] [file2] [...] [fileN] +qmk format-c [file1] [file2] [...] [fileN] ``` ## `qmk config` @@ -125,14 +106,14 @@ Cette commande crée une nouvelle keymap basée sur une keymap par défaut d'un qmk new-keymap [-kb KEYBOARD] [-km KEYMAP] ``` -## `qmk pyformat` +## `qmk format-py` Cette commande formate le code python dans `qmk_firmware`. **Utilisation**: ``` -qmk pyformat +qmk format-py ``` ## `qmk pytest` diff --git a/docs/fr-fr/contributing.md b/docs/fr-fr/contributing.md index 58931cf1f63f..d13587105542 100644 --- a/docs/fr-fr/contributing.md +++ b/docs/fr-fr/contributing.md @@ -134,7 +134,7 @@ Les PR de nouvelles fonctionnalités de de correction de bug affectent tous les Voici quelques choses à garder en tête lorsque vous travaillez sur une fonctionnalité ou un bug fix. * **Désactivé par défaut** - la mémoire est plutôt limitée sur la plupart des puces que QMK supporte, et il est important que les keymaps courantes ne soient pas cassées. S'il vous plaît faites que vos features doivent être **activées** plutôt que désactivées. Si vous pensez qu'elle devrait être activée par défaut, ou que cela réduit la taille du code, parlez-nous-en. -* **Compilez localement avant de soumettre** - Cela devrait aller sans dire, mais votre code doit compiler! Notre système Travis devrait relever les problèmes, mais il est généralement plus rapide de compiler quelques claviers en local plutôt que d'attendre le retour des résultats +* **Compilez localement avant de soumettre** - Cela devrait aller sans dire, mais votre code doit compiler! Vous devriez toujours faire gaffe à ce que vos changements compilent avant d'ouvrir une pull request. * **Faites attention aux révisions et différentes bases de puces** - beaucoup de claviers ont des révisions qui permettent des changements de configuration mineurs, voir des bases de chip différentes. Essayez de faire que votre fonctionnalité soit supportée à la fois sur ARM et AVR, ou désactivez-là automatiquement sur les plateformes non supportées. * **Expliquez votre fonctionnalité** - Documentez-là dans `docs/`, soit dans un nouveau fichier, ou dans une partie d'un fichier existant. Si vous ne la documentez pas, personne ne pourra bénéficier de votre dur labeur. diff --git a/docs/fr-fr/faq_debug.md b/docs/fr-fr/faq_debug.md index 3b13b96b5560..8868744f7379 100644 --- a/docs/fr-fr/faq_debug.md +++ b/docs/fr-fr/faq_debug.md @@ -85,10 +85,6 @@ Premièrement, vous devez compiler le firmware avec l'option de compilation `NKR Essayez la commande `Magic` **N** (`LShift+RShift+N` par défaut) si **NKRO** ne fonctionne toujours pas. Vous pouvez utiliser cette commande pour basculer temporairement entre le mode **NKRO** et **6KRO**. Sous certaines conditions, **NKRO** ne fonctionnera pas et vous devrez basculer en **6KRO**, en particulier lorsque vous êtes dans le BIOS. -Si votre firmware est compilé avec `BOOTMAGIC_ENABLE` vous devrez l'activer avec la commande `BootMagic` **N** (`Espace+N` par défaut). Cette option est enregistrée dans l'EEPROM et sera gardé entre deux cycles de démarrage. - -https://github.com/tmk/tmk_keyboard#boot-magic-configuration---virtual-dip-switch - ## Le TrackPoint a besoin Circuit de réinitialisation (Support de souris PS/2) Sans circuit de réinitialisation vous allez avoir des résultats inconsistants à cause de la mauvaise initialisation du matériel. Regardez le schéma du circuit du TPM754. diff --git a/docs/fr-fr/faq_keymap.md b/docs/fr-fr/faq_keymap.md index 374a0052270c..cc0700ab8e7e 100644 --- a/docs/fr-fr/faq_keymap.md +++ b/docs/fr-fr/faq_keymap.md @@ -6,7 +6,7 @@ Cette page couvre les questions souvent posées à propos des keymaps. Si vous n Regardez [Keycodes](keycodes.md) pour une liste des keycodes disponibles. Certains keycodes spécifiques ont des documentations plus complètes de disponible. -Les keycodes sont définies dans [common/keycode.h](https://github.com/qmk/qmk_firmware/blob/master/tmk_core/common/keycode.h). +Les keycodes sont définies dans [common/keycode.h](https://github.com/qmk/qmk_firmware/blob/master/quantum/keycode.h). ## Quels sont les keycodes par défaut ? diff --git a/docs/fr-fr/getting_started_github.md b/docs/fr-fr/getting_started_github.md index 0f3982ea2902..522b09a03e80 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 f9c3b366a4f1..c4da8af968de 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 : # 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 e3720b886963..9232bc62296c 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 02216875c8f2..1a7e276098a7 100644 --- a/docs/getting_started_make_guide.md +++ b/docs/getting_started_make_guide.md @@ -14,7 +14,7 @@ The full syntax of the `make` command is `::`, The `` means the following * If no target is given, then it's the same as `all` below * `all` compiles as many keyboard/revision/keymap combinations as specified. For example, `make planck/rev4:default` will generate a single .hex, while `make planck/rev4:all` will generate a hex for every keymap available to the planck. -* `flash`, `dfu`, `teensy`, `avrdude`, `dfu-util`, or `bootloadHID` compile and upload the firmware to the keyboard. If the compilation fails, then nothing will be uploaded. The programmer to use depends on the keyboard. For most keyboards it's `dfu`, but for ChibiOS keyboards you should use `dfu-util`, and `teensy` for standard Teensys. To find out which command you should use for your keyboard, check the keyboard specific readme. +* `flash`, `dfu`, `teensy`, `avrdude`, `dfu-util`, or `bootloadhid` compile and upload the firmware to the keyboard. If the compilation fails, then nothing will be uploaded. The programmer to use depends on the keyboard. For most keyboards it's `dfu`, but for ChibiOS keyboards you should use `dfu-util`, and `teensy` for standard Teensys. To find out which command you should use for your keyboard, check the keyboard specific readme. Visit the [Flashing Firmware](flashing.md) guide for more details of the available bootloaders. * **Note**: some operating systems need privileged access for these commands to work. This means that you may need to setup [`udev rules`](faq_build.md#linux-udev-rules) to access these without root access, or to run the command with root access (`sudo make planck/rev4:default:flash`). * `clean`, cleans the build output folders to make sure that everything is built from scratch. Run this before normal compilation if you have some unexplainable problems. @@ -55,7 +55,7 @@ Set these variables to `no` to disable them, and `yes` to enable them. `BOOTMAGIC_ENABLE` -This allows you to hold a key and the salt key (space by default) and have access to a various EEPROM settings that persist over power loss. It's advised you keep this disabled, as the settings are often changed by accident, and produce confusing results that makes it difficult to debug. It's one of the more common problems encountered in help sessions. +This allows you to hold a key (usually Escape by default) to reset the EEPROM settings that persist over power loss and ready your keyboard to accept new firmware. `MOUSEKEY_ENABLE` @@ -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). @@ -149,6 +145,10 @@ Lets you replace the default matrix scanning routine with your own code. For fur Lets you replace the default key debouncing routine with an alternative one. If `custom` you will need to provide your own implementation. +`DEFERRED_EXEC_ENABLE` + +Enables deferred executor support -- timed delays before callbacks are invoked. See [deferred execution](custom_quantum_functions.md#deferred-execution) for more information. + ## Customizing Makefile Options on a Per-Keymap Basis If your keymap directory has a file called `rules.mk` any options you set in that file will take precedence over other `rules.mk` options for your particular keyboard. diff --git a/docs/getting_started_vagrant.md b/docs/getting_started_vagrant.md index b71f8908b9c0..b5b5ce1539db 100644 --- a/docs/getting_started_vagrant.md +++ b/docs/getting_started_vagrant.md @@ -24,33 +24,33 @@ The "easy" way to flash the firmware is using a tool from your host OS: If you want to program via the command line you can uncomment the ['modifyvm'] lines in the Vagrantfile to enable the USB passthrough into Linux and then program using the command line tools like dfu-util/dfu-programmer or you can install the Teensy CLI version. ## Vagrantfile Overview -The development environment is configured to run the QMK Docker image, `qmkfm/base_container`. This not only ensures predictability between systems, it also mirrors the CI environment. +The development environment is configured to run the QMK Docker image, `qmkfm/qmk_cli`. This not only ensures predictability between systems, it also mirrors the CI environment. ## FAQ ### 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/hand_wire.md b/docs/hand_wire.md index 05d3af340b56..e79a80375ace 100644 --- a/docs/hand_wire.md +++ b/docs/hand_wire.md @@ -113,7 +113,7 @@ Don't hold the iron on the solder/joint longer than necessary. Heat will be cond #### Soldering the Diodes -Starting at the top-left switch, place the diode (with tweezers if you have them) on the switch so that the diode itself is vertically aligned, and the black line is facing toward you. The input lead of the diode should be touching the left contact on the switch, and the bent, output end should be facing to the right and resting on the switch there, like this: +Starting at the top-left switch, place the diode (with tweezers if you have them) on the switch so that the diode itself is vertically aligned, and the black line is facing toward you. Make sure the diodes are soldered in parallel (diode outputs shouldn't connect to diode inputs). The input lead of the diode should be touching the left contact on the switch, and the bent, output end should be facing to the right and resting on the switch there, like this: ![soldering-diodes-01.png](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/docs/hand_wire/soldering-diodes-01.png) diff --git a/docs/hardware_avr.md b/docs/hardware_avr.md index eb536ca961a0..3d58cdc0558e 100644 --- a/docs/hardware_avr.md +++ b/docs/hardware_avr.md @@ -6,26 +6,28 @@ If you have not yet you should read the [Keyboard Guidelines](hardware_keyboard_ ## Adding Your AVR Keyboard to QMK -QMK has a number of features to simplify working with AVR keyboards. For most keyboards you don't have to write a single line of code. To get started, run the `util/new_keyboard.sh` script: +QMK has a number of features to simplify working with AVR keyboards. For most keyboards you don't have to write a single line of code. To get started, run `qmk new-keyboard`: ``` -$ ./util/new_keyboard.sh -Generating a new QMK keyboard directory - -Keyboard Name: mycoolkb -Keyboard Type [avr]: -Your Name [John Smith]: - -Copying base template files... done -Copying avr template files... done -Renaming keyboard files... done -Replacing %KEYBOARD% with mycoolkb... done -Replacing %YOUR_NAME% with John Smith... done - -Created a new keyboard called mycoolkb. - -To start working on things, cd into keyboards/mycoolkb, -or open the directory in your favourite text editor. +$ qmk new-keyboard +Ψ Generating a new QMK keyboard directory + +Keyboard Name: mycoolkeeb +Keyboard Type: + 1. avr + 2. ps2avrgb +Please enter your choice: [1] +Your Name: [John Smith] +Ψ Copying base template files... +Ψ Copying avr template files... +Ψ Renaming keyboard.[ch] to mycoolkeeb.[ch]... +Ψ Replacing %YEAR% with 2021... +Ψ Replacing %KEYBOARD% with mycoolkeeb... +Ψ Replacing %YOUR_NAME% with John Smith... + +Ψ Created a new keyboard called mycoolkeeb. +Ψ To start working on things, `cd` into keyboards/mycoolkeeb, +Ψ or open the directory in your preferred text editor. ``` This will create all the files needed to support your new keyboard, and populate the settings with default values. Now you just need to customize it for your keyboard. diff --git a/docs/hardware_drivers.md b/docs/hardware_drivers.md index 7e89c0d2b9a0..a157501326db 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 4f32715046a9..be55356b17f7 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. ### `` @@ -189,9 +217,9 @@ Hardware files (such as plates, cases, pcb) can be contributed to the [qmk.fm re Given the amount of functionality that QMK exposes it's very easy to confuse new users. When putting together the default firmware for your keyboard we recommend limiting your enabled features and options to the minimal set needed to support your hardware. Recommendations for specific features follow. -### Bootmagic and Command +### Magic Keycodes and Command -[Bootmagic](feature_bootmagic.md) and [Command](feature_command.md) are two related features that allow a user to control their keyboard in non-obvious ways. We recommend you think long and hard about if you're going to enable either feature, and how you will expose this functionality. Keep in mind that users who want this functionality can enable it in their personal keymaps without affecting all the novice users who may be using your keyboard as their first programmable board. +[Magic Keycodes](keycodes_magic.md) and [Command](feature_command.md) are two related features that allow a user to control their keyboard in non-obvious ways. We recommend you think long and hard about if you're going to enable either feature, and how you will expose this functionality. Keep in mind that users who want this functionality can enable it in their personal keymaps without affecting all the novice users who may be using your keyboard as their first programmable board. By far the most common problem new users encounter is accidentally triggering Bootmagic while they're plugging in their keyboard. They're holding the keyboard by the bottom, unknowingly pressing in alt and spacebar, and then they find that these keys have been swapped on them. We recommend leaving this feature disabled by default, but if you do turn it on consider setting `BOOTMAGIC_KEY_SALT` to a key that is hard to press while plugging your keyboard in. @@ -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/README.md b/docs/he-il/README.md index 3b0ff146185f..5c113eb498df 100644 --- a/docs/he-il/README.md +++ b/docs/he-il/README.md @@ -2,7 +2,6 @@ # קושחה עבור Quantum Mechanical Keyboard [![גירסה נוכחית](https://img.shields.io/github/tag/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/tags) -[![מצב הבניה](https://travis-ci.org/qmk/qmk_firmware.svg?branch=master)](https://travis-ci.org/qmk/qmk_firmware) [![ערוץ דיסקורד](https://img.shields.io/discord/440868230475677696.svg)](https://discord.gg/Uq7gcHh) [![מצב מסמכים](https://img.shields.io/badge/docs-ready-orange.svg)](https://docs.qmk.fm) [![תומכי GitHub](https://img.shields.io/github/contributors/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/pulse/monthly) diff --git a/docs/he-il/getting_started_github.md b/docs/he-il/getting_started_github.md index 900852effd06..ca79e40f9a63 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' ``` diff --git a/docs/how_keyboards_work.md b/docs/how_keyboards_work.md index 3dcbc6452220..36cbfb4d9a61 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 3ec34a0f87f2..95c588af4415 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/internals_gpio_control.md b/docs/internals_gpio_control.md index dcff928c7031..ccd3f8c74d92 100644 --- a/docs/internals_gpio_control.md +++ b/docs/internals_gpio_control.md @@ -4,7 +4,7 @@ QMK has a GPIO control abstraction layer which is microcontroller agnostic. This ## Functions :id=functions -The following functions can provide basic control of GPIOs and are found in `quantum/quantum.h`. +The following functions provide basic control of GPIOs and are found in `platforms//gpio.h`. |Function |Description | Old AVR Examples | Old ChibiOS/ARM Examples | |------------------------|--------------------------------------------------|-------------------------------------------------|-------------------------------------------------| diff --git a/docs/isp_flashing_guide.md b/docs/isp_flashing_guide.md index 7efcd9ee357e..384aaf72298e 100644 --- a/docs/isp_flashing_guide.md +++ b/docs/isp_flashing_guide.md @@ -1,263 +1,242 @@ # ISP Flashing Guide -ISP flashing (also known as ICSP flashing) is the process of programming a microcontroller directly. This allows you to replace the bootloader, or change the "fuses" on the controller, which control a number of hardware- and software-related functions, such as the speed of the controller, how it boots, and other options. +In order to flash a microcontroller over USB, it needs something called a bootloader. This bootloader lives in a specific section of the flash memory, and allows you to load the actual application firmware (in this case, QMK) into the rest of the flash. -The main use of ISP flashing for QMK is flashing or replacing the bootloader on your AVR-based controller (Pro Micros, or V-USB chips). +However, it can sometimes happen that the bootloader becomes corrupted and needs reflashing, or you may want to change the bootloader to another one. It's not possible to do this with the existing bootloader, because, of course, it is already running, and cannot overwrite itself. Instead, you will need to ISP flash the microcontroller. -?> This is only for programming AVR based boards, such as the Pro Micro or other ATmega controllers. It is not for Arm controllers, such as the Proton C. +There are several different kinds of bootloaders available for AVR microcontrollers. Most STM32 ARM-based microcontrollers already have a USB-capable bootloader in ROM, so generally do not need to be ISP flashed. -## Dealing with Corrupted Bootloaders +## Hardware -If you're having trouble flashing/erasing your board, and running into cryptic error messages like any of the following for a DFU based controller: +One of the following devices is required to perform the ISP flashing. The product links are to the official versions, however you can certainly source them elsewhere. - libusb: warning [darwin_transfer_status] transfer error: timed out - dfu.c:844: -ETIMEDOUT: Transfer timed out, NAK 0xffffffc4 (-60) - atmel.c:1627: atmel_flash: flash data dfu_download failed. - atmel.c:1629: Expected message length of 1072, got -60. - atmel.c:1434: Error flashing the block: err -2. - ERROR - Memory write error, use debug for more info. - commands.c:360: Error writing memory data. (err -4) +You'll also need some jumper wires to connect the ISP flasher and the target board. Some boards have an ISP header with the necessary pins broken out. If not, then you will need to temporarily solder the wires to the PCB -- usually to switch pins or directly to the MCU. +The wiring is fairly straightforward; for the most part, you'll be connecting like to like. Refer to the target MCU's datasheet for the exact `RESET`, `SCLK`, `MOSI` and `MISO` pins. - dfu.c:844: -EPIPE: a) Babble detect or b) Endpoint stalled 0xffffffe0 (-32) - Device is write protected. - dfu.c:252: dfu_clear_status( 0x7fff4fc2ea80 ) - atmel.c:1434: Error flashing the block: err -2. - ERROR - Memory write error, use debug for more info. - commands.c:360: Error writing memory data. (err -4) +### Pro Micro as ISP -Or, if you see this sort of message for a Pro Micro based controller: +[SparkFun Pro Micro](https://www.sparkfun.com/products/12640) - avrdude: butterfly_recv(): programmer is not responding - avrdude: butterfly_recv(): programmer is not responding - avrdude: verification error, first mismatch at byte 0x002a - 0x2b != 0x75 - avrdude: verification error; content mismatch - avrdude: verification error; content mismatch +To use a 5V/16MHz Pro Micro as an ISP flashing tool, you will first need to load a [special firmware](https://github.com/qmk/qmk_firmware/blob/master/util/pro_micro_ISP_B6_10.hex) onto it that emulates a hardware ISP flasher. +**AVRDUDE Programmer**: `avrisp` +**AVRDUDE Port**: Serial -You're likely going to need to ISP flash your board/device to get it working again. +#### Wiring -## Hardware Needed +|Pro Micro |Keyboard| +|-----------|--------| +|`VCC` |`VCC` | +|`GND` |`GND` | +|`10` (`B6`)|`RESET` | +|`15` (`B1`)|`SCLK` | +|`16` (`B2`)|`MOSI` | +|`14` (`B3`)|`MISO` | -You'll need one of the following to actually perform the ISP flashing (followed by the protocol they use): +!> Note that the `10` pin on the Pro Micro should be wired to the `RESET` pin on the keyboard's controller. ***DO NOT*** connect the `RESET` pin on the Pro Micro to the `RESET` on the keyboard. -* [SparkFun PocketAVR](https://www.sparkfun.com/products/9825) - (USB Tiny) -* [USBtinyISP AVR Programmer Kit](https://www.adafruit.com/product/46) - (USB Tiny) -* [USBasp](https://www.fischl.de/usbasp/) - (usbasp) -* [Teensy 2.0](https://www.pjrc.com/store/teensy.html) - (avrisp) -* [Pro Micro](https://www.sparkfun.com/products/12640) - (avrisp) -* [Bus Pirate](https://www.adafruit.com/product/237) - (buspirate) +### Teensy 2.0 as ISP -There are other devices that can be used to ISP flash, but these are the main ones. Also, all product links are to the official versions. You can source them elsewhere. +[PJRC Teensy 2.0](https://www.pjrc.com/store/teensy.html) -You'll also need something to wire your "ISP Programmer" to the device that you're programming. Some PCBs may have ISP headers that you can use directly, but this often isn't the case, so you'll likely need to solder to the controller itself or to different switches or other components. +To use a Teensy 2.0 as an ISP flashing tool, you will first need to load a [special firmware](https://github.com/qmk/qmk_firmware/blob/master/util/teensy_2.0_ISP_B0.hex) onto it that emulates a hardware ISP flasher. -### The ISP Firmware +**AVRDUDE Programmer**: `avrisp` +**AVRDUDE Port**: Serial -The Teensy and Pro Micro controllers will need you to flash the ISP firmware to the controllers before you can use them as an ISP programmer. The rest of the hardware should come preprogrammed. So, for these controllers, download the correct hex file, and flash it first. +#### Wiring -* Teensy 2.0: [`util/teensy_2.0_ISP_B0.hex`](https://github.com/qmk/qmk_firmware/blob/master/util/teensy_2.0_ISP_B0.hex) (`B0`) -* Pro Micro: [`util/pro_micro_ISP_B6_10.hex`](https://github.com/qmk/qmk_firmware/blob/master/util/pro_micro_ISP_B6_10.hex) (`10/B6`) +|Teensy|Keyboard| +|------|--------| +|`VCC` |`VCC` | +|`GND` |`GND` | +|`B0` |`RESET` | +|`B1` |`SCLK` | +|`B2` |`MOSI` | +|`B3` |`MISO` | -Once you've flashed your controller, you won't need this hex file anymore. +!> Note that the `B0` pin on the Teensy should be wired to the `RESET` pin on the keyboard's controller. ***DO NOT*** connect the `RESET` pin on the Teensy to the `RESET` on the keyboard. -## Software Needed +### SparkFun PocketAVR / USBtinyISP / USBasp -The QMK Toolbox can be used for most (all) of this. +[SparkFun PocketAVR](https://www.sparkfun.com/products/9825) +[Adafruit USBtinyISP](https://www.adafruit.com/product/46) +[Thomas Fischl's USBasp](https://www.fischl.de/usbasp/) -However, you can grab the [Teensy Loader](https://www.pjrc.com/teensy/loader.html) to flash your Teensy 2.0 board, if you are using that. Or you can use `avrdude` (installed as part of `qmk_install.sh`), or [AVRDUDESS](https://blog.zakkemble.net/avrdudess-a-gui-for-avrdude/) (for Windows) to flash the Pro Micro, and the ISP flashing. +**AVRDUDE Programmer**: `usbtiny` / `usbasp` +**AVRDUDE Port**: `usb` +#### Wiring -## Wiring +|ISP |Keyboard| +|---------|--------| +|`VCC` |`VCC` | +|`GND` |`GND` | +|`RST` |`RESET` | +|`SCLK` |`SCLK` | +|`MOSI` |`MOSI` | +|`MISO` |`MISO` | -This is pretty straight-forward - we'll be connecting like-things to like-things in the following manner. -### SparkFun Pocket AVR +### Bus Pirate - PocketAVR RST <-> Keyboard RESET - PocketAVR SCLK <-> Keyboard B1 (SCLK) - PocketAVR MOSI <-> Keyboard B2 (MOSI) - PocketAVR MISO <-> Keyboard B3 (MISO) - PocketAVR VCC <-> Keyboard VCC - PocketAVR GND <-> Keyboard GND +[Adafruit Bus Pirate](https://www.adafruit.com/product/237) -### USBasp +!> The 5-pin "ICSP" header is for ISP flashing the PIC microcontroller of the Bus Pirate. Connect your target board to the 10-pin header opposite the USB connector instead. - USBasp RST <-> Keyboard RESET - USBasp SCLK <-> Keyboard B1 (SCLK) - USBasp MOSI <-> Keyboard B2 (MOSI) - USBasp MISO <-> Keyboard B3 (MISO) - USBasp VCC <-> Keyboard VCC - USBasp GND <-> Keyboard GND +**AVRDUDE Programmer**: `buspirate` +**AVRDUDE Port**: Serial -### Teensy 2.0 +#### Wiring - Teensy B0 <-> Keyboard RESET - Teensy B1 <-> Keyboard B1 (SCLK) - Teensy B2 <-> Keyboard B2 (MOSI) - Teensy B3 <-> Keyboard B3 (MISO) - Teensy VCC <-> Keyboard VCC - Teensy GND <-> Keyboard GND - -!> Note that the B0 pin on the Teensy is wired to the RESET/RST pin on the keyboard's controller. ***DO NOT*** wire the RESET pin on the Teensy to the RESET on the keyboard. - -### Pro Micro - - Pro Micro 10 (B6) <-> Keyboard RESET - Pro Micro 15 (B1) <-> Keyboard B1 (SCLK) - Pro Micro 16 (B2) <-> Keyboard B2 (MOSI) - Pro Micro 14 (B3) <-> Keyboard B3 (MISO) - Pro Micro VCC <-> Keyboard VCC - Pro Micro GND <-> Keyboard GND - -!> Note that the 10/B6 pin on the Pro Micro is wired to the RESET/RST pin on the keyboard's controller. ***DO NOT*** wire the RESET pin on the Pro Micro to the RESET on the keyboard. - - -## Flashing Your Keyboard - -After you have your ISP programmer set up, and wired to your keyboard, it's time to flash your keyboard. - -### The Bootloader File - -The simplest and quickest way to get things back to normal is to flash only a bootloader to the keyboard. Once this is done, you can connect the keyboard normally and flash the keyboard like you normally would. - -You can find the stock bootloaders in the [`util/` folder](https://github.com/qmk/qmk_firmware/tree/master/util). Be sure to flash the correct bootloader for your chip: - -* **Atmel DFU** - * [ATmega16U4](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_atmega16u4_1.0.1.hex) - * [ATmega32U4](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_atmega32u4_1.0.0.hex) - * [AT90USB64](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_at90usb64_1.0.0.hex) - * [AT90USB128](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_at90usb128_1.0.1.hex) -* **Caterina** - * [Pro Micro (5V/16MHz)](https://github.com/sparkfun/Arduino_Boards/blob/master/sparkfun/avr/bootloaders/caterina/Caterina-promicro16.hex) - * [Pro Micro (3.3V/8MHz)](https://github.com/sparkfun/Arduino_Boards/blob/master/sparkfun/avr/bootloaders/caterina/Caterina-promicro8.hex) -* **BootloadHID (PS2AVRGB)** - * [ATmega32A](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_ps2avrgb_bootloadhid_1.0.1.hex) - -If you're not sure what your board uses, look in the `rules.mk` file for the keyboard in QMK. The `MCU` and `BOOTLOADER` lines will have the value you need. It may differ between different versions of the board. - -### Production Techniques - -If you'd like to flash both the bootloader **and** the regular firmware at the same time, there are two options to do so. Manually, or with the `:production` target when compiling. - -To do this manually: - -1. Open the original firmware .hex file in a text editor -2. Remove the last line (which should be `:00000001FF` - this is an EOF message) -3. Copy the entire bootloader's contents onto a new line (with no empty lines between) and paste it at the end of the original file -4. Save it as a new file by naming it `__production.hex` +|Bus Pirate|Keyboard| +|----------|--------| +|`+5V` |`VCC` | +|`GND` |`GND` | +|`RST` |`RESET` | +|`CLK` |`SCLK` | +|`MOSI` |`MOSI` | +|`MISO` |`MISO` | -?> It's possible to use other bootloaders here in the same way, but __you need a bootloader__, otherwise you'll have to use ISP again to write new firmware to your keyboard. +## Software -#### Create QMK DFU Bootloader and Production images +[QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) supports flashing both the ISP firmware and bootloader, but note that it cannot (currently) set the AVR fuse bytes for the actual ISP flashing step, so you may want to work with `avrdude` directly instead. -You can create the firmware, the QMK DFU Bootloader and the production firmware images for the board using the `:production` target when compiling. Once this is done, you'll see three files: -* `_.hex` -* `__bootloader.hex` -* `__production.hex` +Setting up the [QMK environment](newbs.md) is highly recommended, as it automatically installs `avrdude` along with a host of other tools. -The QMK DFU bootloader has only really been tested on `atmega32u4` controllers (such as the AVR based Planck boards, and the Pro Micro), and hasn't been tested on other controllers. However, it will definitely not work on V-USB controllers, such as the `atmega32a` or `atmega328p`. +## Bootloader Firmware -You can flash either the bootloader or the production firmware file. The production firmware file will take a lot longer to flash, since it's flashing a lot more data. +One of these files is what you will be ISP flashing onto the board. The default fuses are also listed. -?> Note: You should stay with the same bootloader. If you're using DFU already, switching to QMK DFU is fine. But flashing QMK DFU onto a Pro Micro, for instance, has additional steps needed. +If you're not sure what your board uses, look in the `rules.mk` file for the keyboard in QMK. The `MCU` and `BOOTLOADER` lines will have the values you need. It may differ between different versions of the board. -## Flashing Your Bootloader/Production File +### Atmel DFU -Make sure your keyboard is unplugged from any device, and plug in your ISP Programmer. +These are the [factory default bootloaders](https://www.microchip.com/content/dam/mchp/documents/OTH/ProductDocuments/SoftwareLibraries/Firmware/megaUSB_DFU_Bootloaders.zip) shipped by Atmel (now Microchip). Note that the AT90USB64 and AT90USB128 bootloaders are [slightly modified](https://github.com/qmk/qmk_firmware/pull/14064), due to a bug causing them to not enumerate properly in Windows 8 and later. -If you want to change bootloader types, You'll need to use the command line. +|MCU |Low |High |Extended|USB ID | +|--------------------------------------------------------------------------------------------------|------|-------------------------------|--------|-----------| +|[ATmega16U4](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_atmega16u4_1.0.1.hex)|`0x5E`|`0x99` / `0xD9` (JTAG disabled)|`0xF3` |`03EB:2FF3`| +|[ATmega32U4](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_atmega32u4_1.0.0.hex)|`0x5E`|`0x99` / `0xD9` (JTAG disabled)|`0xF3` |`03EB:2FF4`| +|[AT90USB64](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_at90usb64_1.0.0.hex) |`0x5E`|`0x9B` / `0xDB` (JTAG disabled)|`0xF3` |`03EB:2FF9`| +|[AT90USB128](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_at90usb128_1.0.1.hex)|`0x5E`|`0x99` / `0xD9` (JTAG disabled)|`0xF3` |`03EB:2FFB`| -### QMK Toolbox +### Caterina -1. `AVRISP device connected` or `USB Tiny device connected` will show up in yellow -2. Select the correct bootloader/production .hex file with the `Open` dialog (spaces can't be in the path) -3. Be sure the correct `Microcontroller` option for the keyboard you're flashing (not the ISP programmer) is selected -4. Hit `Flash` -5. Wait, as nothing will output for a while, especially with production files +This is the default Arduino-style bootloader derived from the [LUFA CDC bootloader](https://github.com/abcminiuser/lufa/tree/master/Bootloaders/CDC), and is only for the ATmega32U4. -If the verification and fuse checks are ok, you're done! Your board may restart automatically, otherwise, unplug your Teensy and plug in your keyboard - you can leave your Teensy wired to your keyboard while testing things, but it's recommended that you desolder it/remove the wiring once you're sure everything works. +There are several variants depending on the vendor, but they all mostly work the same way. The SparkFun variants, for example, require the `RESET` pin to be [grounded twice quickly](https://learn.sparkfun.com/tutorials/pro-micro--fio-v3-hookup-guide#ts-reset) in order to stay in bootloader mode for more than 750 ms. -### Command Line +|MCU |Low |High |Extended|USB ID | +|-----------------------------------------------------------------------------------------------------------------------------------------------------------------|------|------|--------|-----------| +|[SparkFun Pro Micro (3V3/8MHz)](https://github.com/sparkfun/Arduino_Boards/blob/master/sparkfun/avr/bootloaders/caterina/Caterina-promicro8.hex) |`0xFF`|`0xD8`|`0xFE` |`1B4F:9203`| +|[SparkFun Pro Micro (5V/16MHz)](https://github.com/sparkfun/Arduino_Boards/blob/master/sparkfun/avr/bootloaders/caterina/Caterina-promicro16.hex) |`0xFF`|`0xD8`|`0xFB` |`1B4F:9205`| +|[SparkFun LilyPadUSB (and some Pro Micro clones)](https://github.com/sparkfun/Arduino_Boards/blob/main/sparkfun/avr/bootloaders/caterina/Caterina-lilypadusb.hex)|`0xFF`|`0xD8`|`0xFE` |`1B4F:9207`| +|[Pololu A-Star 32U4](https://github.com/pololu/a-star/blob/master/bootloaders/caterina/Caterina-A-Star.hex)* |`0xFF`|`0xD0`|`0xF8` |`1FFB:0101`| +|[Adafruit Feather 32U4](https://github.com/adafruit/Caterina-Bootloader/blob/master/Built%20Firmwares/Caterina-Feather32u4.hex) |`0xFF`|`0xD8`|`0xFB` |`239A:000C`| +|[Adafruit ItsyBitsy 32U4 (3V3/8MHz)](https://github.com/adafruit/Caterina-Bootloader/blob/master/Caterina_itsybitsy3V.hex)* |`0xFF`|`0xD8`|`0xFB` |`239A:000D`| +|[Adafruit ItsyBitsy 32U4 (5V/16MHz)](https://github.com/adafruit/Caterina-Bootloader/blob/master/Caterina_itsybitsy5V.hex) |`0xFF`|`0xD8`|`0xFB` |`239A:000E`| +|[Arduino Leonardo](https://github.com/arduino/ArduinoCore-avr/blob/master/bootloaders/caterina/Caterina-Leonardo.hex)* |`0xFF`|`0xD8`|`0xFB` |`2341:0036`| +|[Arduino Micro](https://github.com/arduino/ArduinoCore-avr/blob/master/bootloaders/caterina/Caterina-Micro.hex)* |`0xFF`|`0xD8`|`0xFB` |`2341:0037`| -Open a terminal (`cmd` on Windows, for instance) and navigate to your where your modified .hex file is. We'll pretend this file is called `main.hex`, and that your Teensy 2.0 is on the `COM3` port - if you're unsure, you can open your Device Manager, and look for `Ports > USB Serial Device`. Use that COM port here. You can confirm it's the right port with: +?> Files marked with a * have combined Arduino sketches, which runs by default and also appears as a serial port. However, this is *not* the bootloader device. - avrdude -c avrisp -P COM3 -p atmega32u4 +### BootloadHID (PS2AVRGB) -and you should get something like the following output: +This bootloader is primarily for keyboards originally designed for the PS2AVRGB firmware and Bootmapper Client. It is not recommended for use in new designs. - avrdude: AVR device initialized and ready to accept instructions +|MCU |Low |High |USB ID | +|-----------------------------------------------------------------------------------------------------------|------|------|-----------| +|[ATmega32A](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_ps2avrgb_bootloadhid_1.0.1.hex)|`0x0F`|`0xD0`|`16C0:05DF`| - Reading | ################################################## | 100% 0.02s +### USBaspLoader - avrdude: Device signature = 0x1e9587 +USBaspLoader is a bootloader based on V-USB that emulates a hardware USBasp device. It runs on ATmega32A and ATmega328P MCUs. - avrdude: safemode: Fuses OK +Precompiled `.hex` files are generally not available, but you can compile it yourself by setting up the QMK environment and following Coseyfannitutti's guide for the appropriate MCU: - avrdude done. Thank you. +|MCU |Low |High |Extended|USB ID | +|-------------------------------------------------------------------------------------|------|------|--------|-----------| +|[ATmega32A](https://github.com/coseyfannitutti/discipline/tree/master/doc/bootloader)|`0x1F`|`0xC0`|*n/a* |`16C0:05DC`| +|[ATmega328P](https://github.com/coseyfannitutti/discipad/tree/master/doc/bootloader) |`0xD7`|`0xD0`|`0x04` |`16C0:05DC`| -Since our keyboard uses an `atmega32u4` (common), that is the chip we'll specify. This is the full command: +Note that some boards may have their own specialized build of this bootloader in a separate repository. This will usually be linked to in the board's readme. - avrdude -c avrisp -P COM3 -p atmega32u4 -U flash:w:main.hex:i +## Flashing the Bootloader -If your board uses an `atmega32a` (e.g. on a jj40), the command is this (the extra code at the end sets the fuses correctly): +Open a new Terminal window - if you are on Windows, use MSYS2 or QMK MSYS, not the Command Prompt. Navigate to the directory your bootloader `.hex` is in. Now it's time to run the `avrdude` command. - avrdude -c avrisp -P COM3 -p atmega32 -U flash:w:main.hex:i -U hfuse:w:0xD0:m -U lfuse:w:0x0F:m +The syntax of `avrdude` is: -You should see a couple of progress bars, then you should see: +``` +avrdude -c -P -p -U flash:w::i +``` - avrdude: verifying ... - avrdude: 32768 bytes of flash verified + * `` corresponds to the programmer type listed for each ISP flasher in the [Hardware](#hardware) section, for example `avrisp`. + * `` is the serial port that appears when you plug the ISP flasher in, if any. For some programmers this is simply `usb` (or you can omit the `-P` argument completely) since they do not operate as a serial device. + * Windows: `COMx` - check Device Manager, under the "Ports (COM & LPT)" section + * Linux: `/dev/ttyACMx` + * macOS: `/dev/tty.usbmodemXXXXXX` + * `` should be the lowercase name of the target AVR microcontroller, for example `atmega32u4`. + * `` is the absolute or relative path to the bootloader to be flashed, for example `Caterina-Micro.hex`. - avrdude: safemode: Fuses OK +You can also run `man avrdude` for more information. - avrdude done. Thank you. +If all goes well, you should get output similar to the following: -Which means everything should be ok! Your board may restart automatically, otherwise, unplug your Teensy and plug in your keyboard - you can leave your Teensy wired to your keyboard while testing things, but it's recommended that you desolder it/remove the wiring once you're sure everything works. +``` +avrdude: AVR device initialized and ready to accept instructions -If you're using a SparkFun PocketAVR Programmer, or another USB Tiny based ISP programmer, you will want to use something like this: +Reading | ################################################## | 100% 0.00s - avrdude -c usbtiny -P usb -p atmega32u4 +avrdude: Device signature = 0x1e9587 (probably m32u4) +avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed + To disable this feature, specify the -D option. +avrdude: erasing chip +avrdude: reading input file "Caterina-Micro.hex" +avrdude: writing flash (32730 bytes): -#### Advanced: Changing Fuses +Writing | ################################################## | 100% 11.58s -If you're switching bootloaders, such as flashing QMK DFU on a Pro Micro, you will need to change the fuses, in additional to flashing the bootloader hex file. This is because `caterina` (the Pro Micro bootloader) and `dfu` handle the startup routines differently, and that behavior is controlled by the fuses. +avrdude: 32730 bytes of flash written +avrdude: verifying flash memory against Caterina-Micro.hex: +avrdude: load data flash data from input file Caterina-Micro.hex: +avrdude: input file Caterina-Micro.hex contains 32730 bytes +avrdude: reading on-chip flash data: -!> This is one area that it is very important to be careful, as changing fuses is one of the ways that you can permanently brick your controller. +Reading | ################################################## | 100% 10.33s -For this, we are assuming the 5V 16MHz versions of the `atmega32u4` (such as the 5V Pro Micro). +avrdude: verifying ... +avrdude: 32730 bytes of flash verified -For DFU on the `atmega32u4`, these are the fuse settings that you want: +avrdude: safemode: Fuses OK (E:CB, H:D8, L:FF) -| Fuse | Setting | -|----------|------------------| -| Low | `0x5E` | -| High | `0xD9` or `0x99` | -| Extended | `0xC3` | +avrdude done. Thank you. +``` -The High fuse can be 0xD9 or 0x99. The difference is that 0xD9 disables JTAG, which QMK Firmware disables via software as well, while 0x99 doesn't disable JTAG. +### Setting the Fuses -To set this add `-U lfuse:w:0x5E:m -U hfuse:w:0xD9:m -U efuse:w:0xC3:m` to your command. So the final command should look something like: +This is a slightly more advanced topic, but may be necessary if you are switching from one bootloader to another (for example, Caterina to Atmel/QMK DFU on a Pro Micro). Fuses control some of the low-level functionality of the AVR microcontroller, such as clock speed, whether JTAG is enabled, and the size of the section of flash memory reserved for the bootloader, among other things. You can find a fuse calculator for many AVR parts [here](https://www.engbedded.com/conffuse/). - avrdude -c avrisp -P COM3 -p atmega32u4 -U flash:w:main.hex:i -U lfuse:w:0x5E:m -U hfuse:w:0xD9:m -U efuse:w:0xC3:m +!> **WARNING:** Setting incorrect fuse values, in particular the clock-related bits, may render the MCU practically unrecoverable without high voltage programming (not covered here)! Make sure to double check the commands you enter before you execute them. -For Caterina on the `atmega32u4`, these are the fuse settings that you want: +To set the fuses, add the following to the `avrdude` command: -| Fuse | Setting| -|----------|--------| -| Low | `0xFF` | -| High | `0xD8` | -| Extended | `0xCB` | +``` +-U lfuse:w:0xXX:m -U hfuse:w:0xXX:m -U efuse:w:0xXX:m +``` -To set this add `-U lfuse:w:0xFF:m -U hfuse:w:0xD8:m -U efuse:w:0xCB:m` to your command. So the final command should look something like: +where the `lfuse`, `hfuse` and `efuse` arguments represent the low, high and extended fuse bytes as listed in the [Hardware](#hardware) section. - avrdude -c avrisp -P COM3 -p atmega32u4 -U flash:w:main.hex:i -U lfuse:w:0xFF:m -U hfuse:w:0xD8:m -U efuse:w:0xCB:m +?> You may get a warning from `avrdude` that the extended fuse byte does not match what you provided when reading it back. If the second hex digit matches, this can usually be safely ignored, because the top four bits of this fuse do not actually exist on many AVR parts, and may read back as anything. +## Creating a "Production" Firmware -If you are using a different controller or want different configuration, you can use [this AVR Fuse Calculator](https://www.engbedded.com/fusecalc/) to find a better value for you. +For mass production purposes, it is possible to join the bootloader and QMK firmware together into a single file, due to the way the [Intel Hex format](https://en.wikipedia.org/wiki/Intel_HEX) works: -## Help + 1. Open the QMK firmware and bootloader `.hex` files in a text editor. + 2. Remove the last line of the QMK firmware (which should be `:00000001FF` - this is just an "end of file" marker). + 3. Paste the contents of the bootloader `.hex` file onto a new line at the end of the QMK firmware file, with no empty lines between. + 4. Save it as a new file, for example `__production.hex`. -If you have any questions/problems, feel free to [open an issue](https://github.com/qmk/qmk_firmware/issues/new)! +You can then ISP flash this combined firmware instead, which allows you to skip the extra step of flashing the QMK firmware over USB. diff --git a/docs/ja/README.md b/docs/ja/README.md index c02a14b487ce..aefacbc414aa 100644 --- a/docs/ja/README.md +++ b/docs/ja/README.md @@ -6,7 +6,6 @@ --> [![現在のバージョン](https://img.shields.io/github/tag/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/tags) -[![ビルド状態](https://travis-ci.org/qmk/qmk_firmware.svg?branch=master)](https://travis-ci.org/qmk/qmk_firmware) [![Discord](https://img.shields.io/discord/440868230475677696.svg)](https://discord.gg/Uq7gcHh) [![ドキュメントの状態](https://img.shields.io/badge/docs-ready-orange.svg)](https://docs.qmk.fm) [![GitHub 貢献者](https://img.shields.io/github/contributors/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/pulse/monthly) diff --git a/docs/ja/api_docs.md b/docs/ja/api_docs.md index 2d057c19bdce..34ed50c4972a 100644 --- a/docs/ja/api_docs.md +++ b/docs/ja/api_docs.md @@ -1,8 +1,8 @@ # QMK API このページは QMK API の使い方を説明します。もしあなたがアプリケーション開発者であれば、全ての [QMK](https://qmk.fm) キーボードのファームウェアをコンパイルするために、この API を使うことができます。 diff --git a/docs/ja/api_overview.md b/docs/ja/api_overview.md index 2a156f382c76..e563bdd10350 100644 --- a/docs/ja/api_overview.md +++ b/docs/ja/api_overview.md @@ -1,8 +1,8 @@ # QMK API QMK API は、Web と GUI ツールが [QMK](https://qmk.fm/) によってサポートされるキーボード用の任意のキーマップをコンパイルするために使うことができる、非同期 API を提供します。標準のキーマップテンプレートは、C コードのサポートを必要としない全ての QMK キーコードをサポートします。キーボードのメンテナは独自のカスタムテンプレートを提供して、より多くの機能を実現することができます。 diff --git a/docs/ja/breaking_changes.md b/docs/ja/breaking_changes.md index 0f7256e684d6..35f583789733 100644 --- a/docs/ja/breaking_changes.md +++ b/docs/ja/breaking_changes.md @@ -117,5 +117,4 @@ git push --force * [ ] `git push origin develop` * GitHub Actions * [ ] `develop`の PR を作成します - * [ ] travis がクリーンに戻ったことを確認します * [ ] `develop` PR をマージします diff --git a/docs/ja/cli_commands.md b/docs/ja/cli_commands.md index 81cb03cfe5bb..35937dbbcb6d 100644 --- a/docs/ja/cli_commands.md +++ b/docs/ja/cli_commands.md @@ -211,7 +211,7 @@ qmk new-keymap [-kb KEYBOARD] [-km KEYMAP] # 開発者用コマンド -## `qmk cformat` +## `qmk format-c` このコマンドは clang-format を使って C コードを整形します。 @@ -222,25 +222,25 @@ qmk new-keymap [-kb KEYBOARD] [-km KEYMAP] **指定したファイルに対する使い方**: ``` -qmk cformat [file1] [file2] [...] [fileN] +qmk format-c [file1] [file2] [...] [fileN] ``` **全てのコアファイルに対する使い方**: ``` -qmk cformat -a +qmk format-c -a ``` **origin/master で変更されたファイルのみに対する使い方**: ``` -qmk cformat +qmk format-c ``` **branch_name で変更されたファイルのみに対する使い方**: ``` -qmk cformat -b branch_name +qmk format-c -b branch_name ``` ## `qmk docs` @@ -275,14 +275,14 @@ $ qmk kle2json -f kle.txt -f Ψ Wrote out to info.json ``` -## `qmk pyformat` +## `qmk format-py` このコマンドは `qmk_firmware` 内の python コードを整形します。 **使用法**: ``` -qmk pyformat +qmk format-py ``` ## `qmk pytest` diff --git a/docs/ja/cli_development.md b/docs/ja/cli_development.md index 47262213aea6..28cdd91c1ef7 100644 --- a/docs/ja/cli_development.md +++ b/docs/ja/cli_development.md @@ -192,7 +192,7 @@ cli.log.info('Reading from %s and writing to %s', cli.args.filename, cli.args.ou # テスト、リントおよびフォーマット -nose2、flake8 および yapf を使ってコードをテスト、リントおよびフォーマットします。これらのテストを実行するために `pytest` と `pyformat` サブコマンドを使うことができます。 +nose2、flake8 および yapf を使ってコードをテスト、リントおよびフォーマットします。これらのテストを実行するために `pytest` と `format-py` サブコマンドを使うことができます。 ### テストとリント @@ -200,7 +200,7 @@ nose2、flake8 および yapf を使ってコードをテスト、リントお ### フォーマット - qmk pyformat + qmk format-py ## フォーマットの詳細 diff --git a/docs/ja/coding_conventions_c.md b/docs/ja/coding_conventions_c.md index dcc214814833..c3d2de734e1f 100644 --- a/docs/ja/coding_conventions_c.md +++ b/docs/ja/coding_conventions_c.md @@ -1,8 +1,8 @@ # コーディング規約 (C) 私たちのスタイルのほとんどはかなり理解しやすいですが、現時点では完全に一貫しているわけではありません。変更箇所周辺のコードのスタイルと一致させる必要がありますが、そのコードに一貫性が無い場合や不明瞭な場合は以下のガイドラインに従ってください: diff --git a/docs/ja/compatible_microcontrollers.md b/docs/ja/compatible_microcontrollers.md index b675b038d271..23f32bbb60e8 100644 --- a/docs/ja/compatible_microcontrollers.md +++ b/docs/ja/compatible_microcontrollers.md @@ -1,8 +1,8 @@ # 互換性のあるマイクロコントローラ QMK は十分な容量のフラッシュメモリを備えた USB 対応 AVR または ARM マイクロコントローラで実行されます - 一般的に 32kB 以上ですが、ほとんどの機能を無効にすると*ほんの* 16kB に詰め込むことができます。 @@ -32,10 +32,14 @@ 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) * [STM32G431](https://www.st.com/en/microcontrollers-microprocessors/stm32g4x1.html) * [STM32G474](https://www.st.com/en/microcontrollers-microprocessors/stm32g4x4.html) +* [STM32L412](https://www.st.com/en/microcontrollers-microprocessors/stm32l4x2.html) +* [STM32L422](https://www.st.com/en/microcontrollers-microprocessors/stm32l4x2.html) * [STM32L433](https://www.st.com/en/microcontrollers-microprocessors/stm32l4x3.html) * [STM32L443](https://www.st.com/en/microcontrollers-microprocessors/stm32l4x3.html) diff --git a/docs/ja/config_options.md b/docs/ja/config_options.md index 170beadef41f..fb43d015f20e 100644 --- a/docs/ja/config_options.md +++ b/docs/ja/config_options.md @@ -1,8 +1,8 @@ # QMK の設定 QMK はほぼ無制限に設定可能です。可能なところはいかなるところでも、やりすぎな程、ユーザーがコードサイズを犠牲にしてでも彼らのキーボードをカスタマイズをすることを許しています。ただし、このレベルの柔軟性により設定が困難になります。 @@ -72,16 +72,22 @@ QMK での全ての利用可能な設定にはデフォルトがあります。 * (循環させるために)代替音声を有効にします * `#define C4_AUDIO` * ピン C4 のオーディオを有効にします + * 非推奨。`#define AUDIO_PIN C4` を使ってください * `#define C5_AUDIO` * ピン C5 のオーディオを有効にします + * 非推奨。`#define AUDIO_PIN C5` を使ってください * `#define C6_AUDIO` * ピン C6 のオーディオを有効にします + * 非推奨。`#define AUDIO_PIN C6` を使ってください * `#define B5_AUDIO` - * ピン B5 のオーディオを有効にします (C[4-6]\_AUDIO の1つとともに B[5-7]\_AUDIO の1つが有効にされている場合、疑似ステレオが有効にされます) + * ピン B5 のオーディオを有効にします (C ピンの1つとともに B ピンの1つが有効にされている場合、疑似ステレオが有効にされます) + * 非推奨。もし `AUDIO_PIN` で `C` ピンを有効にしている場合は、`#define AUDIO_PIN_ALT B5` を使い、そうでなければ `#define AUDIO_PIN B5` を使います。 * `#define B6_AUDIO` - * ピン B6 のオーディオを有効にします (C[4-6]\_AUDIO の1つとともに B[5-7]\_AUDIO の1つが有効にされている場合、疑似ステレオが有効にされます) + * ピン B6 のオーディオを有効にします (C ピンの1つとともに B ピンの1つが有効にされている場合、疑似ステレオが有効にされます) + * 非推奨。もし `AUDIO_PIN` で `C` ピンを有効にしている場合は、`#define AUDIO_PIN_ALT B6` を使い、そうでなければ `#define AUDIO_PIN B6` を使います。 * `#define B7_AUDIO` - * ピン B7 のオーディオを有効にします (C[4-6]\_AUDIO の1つとともに B[5-7]\_AUDIO の1つが有効にされている場合、疑似ステレオが有効にされます) + * ピン B7 のオーディオを有効にします (C ピンの1つとともに B ピンの1つが有効にされている場合、疑似ステレオが有効にされます) + * 非推奨。もし `AUDIO_PIN` で `C` ピンを有効にしている場合は、`#define AUDIO_PIN_ALT B7` を使い、そうでなければ `#define AUDIO_PIN B7` を使います。 * `#define BACKLIGHT_PIN B7` * バックライトのピン * `#define BACKLIGHT_LEVELS 3` @@ -93,7 +99,7 @@ QMK での全ての利用可能な設定にはデフォルトがあります。 * `#define DEBOUNCE 5` * ピンの値を読み取る時の遅延 (5がデフォルト) * `#define LOCKING_SUPPORT_ENABLE` - * メカニカルロックのサポート。キーマップで KC_LCAP、 KC_LNUM そして KC_LSCR を使えるようにします + * メカニカルロックのサポート。キーマップで KC_LCAP、KC_LNUM そして KC_LSCR を使えるようにします * `#define LOCKING_RESYNC_ENABLE` * キーボードの LED の状態をスイッチの状態と一致させ続けようとします * `#define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT)` @@ -102,6 +108,8 @@ QMK での全ての利用可能な設定にはデフォルトがあります。 * デバイスの USB 経由の最大電力(mA) を設定します (デフォルト: 500) * `#define USB_POLLING_INTERVAL_MS 10` * キーボード、マウス および 共有 (NKRO/メディアキー) インタフェースのための USB ポーリングレートをミリ秒で設定します +* `#define USB_SUSPEND_WAKEUP_DELAY 200` + * ウェイクアップパケットを送信した後で一時停止するミリ秒を設定します * `#define F_SCL 100000L` * I2C を使用するキーボードのための I2C クロックレート速度を設定します。デフォルトは `400000L` ですが、`split_common` を使っているキーボードは別でデフォルトは `100000L` です。 @@ -133,7 +141,7 @@ QMK での全ての利用可能な設定にはデフォルトがあります。 * `#define STRICT_LAYER_RELEASE` * キーリリースがどのレイヤーから来たのかを覚えるのではなく、現在のレイヤースタックを使って強制的に評価されるようにします (高度なケースに使われます) -## 設定可能な挙動 +## 設定可能な挙動 :id=behaviors-that-can-be-configured * `#define TAPPING_TERM 200` * タップがホールドになるまでの時間。500以上に設定された場合、タップ期間中にタップされたキーもホールドになります。(訳注: PERMISSIVE_HOLDも参照) @@ -142,6 +150,8 @@ QMK での全ての利用可能な設定にはデフォルトがあります。 * `#define RETRO_TAPPING` * 押下とリリースの間に他のキーによる中断がなければ、TAPPING_TERM の後であってもとにかくタップします * 詳細は [Retro Tapping](ja/tap_hold.md#retro-tapping) を見てください +* `#define RETRO_TAPPING_PER_KEY` + * キーごとの `RETRO_TAPPING` 設定の処理を有効にします * `#define TAPPING_TOGGLE 2` * トグルを引き起こす前のタップ数 * `#define PERMISSIVE_HOLD` @@ -240,7 +250,7 @@ QMK での全ての利用可能な設定にはデフォルトがあります。 * DFU ブートローダを搭載したボードでは、これらの EEPROM ファイルを書き込むために `:dfu-split-left`/`:dfu-split-right` を使うことができます * Caterina ブートローダを搭載したボード (標準的な Pro Micros など)では、`:avrdude-split-left`/`:avrdude-split-right` を使ってください * ARM DFU ブートローダを搭載したボード (Proton C など)では、`:dfu-util-split-left`/`:dfu-util-split-right` を使ってください -3. `MASTER_RIGHT` を設定します: USBポートに差し込まれた側はマスター側で右側であると決定されます(デフォルトの逆) +3. `MASTER_RIGHT` を設定します: USB ポートに差し込まれた側はマスター側で右側であると決定されます(デフォルトの逆) 4. デフォルト: USB ポートに差し込まれている側がマスター側であり、左側であると見なされます。スレーブ側は右側です #### 左右を定義します @@ -348,7 +358,7 @@ QMK での全ての利用可能な設定にはデフォルトがあります。 これらを使って特定の機能のビルドを有効または無効にします。有効にすればするほどファームウェアが大きくなり、MCU には大きすぎるファームウェアを構築するリスクがあります。 * `BOOTMAGIC_ENABLE` - * 仮想 DIP スイッチ設定 + * ブートマジックライトを有効にします * `MOUSEKEY_ENABLE` * マウスキー * `EXTRAKEY_ENABLE` diff --git a/docs/ja/contributing.md b/docs/ja/contributing.md index 90d39bb01c7d..56cc4d312daa 100644 --- a/docs/ja/contributing.md +++ b/docs/ja/contributing.md @@ -1,8 +1,8 @@ # 貢献方法 👍🎉 まず、これを読み貢献する時間を作ってくれてありがとうございます!🎉👍 @@ -79,7 +79,7 @@ QMK には幾つかの異なるタイプの変更があり、それぞれ異な ``` kerpleplork の fronzlebop を調整します -kerpleplork はエラーコード 23 で連続的に失敗していました。根本的な原因は fronzlebop 設定で、これにより kerpleplork はN回の繰り返しごとにアクティブになります。 +kerpleplork はエラーコード 23 で連続的に失敗していました。根本的な原因は fronzlebop 設定で、これにより kerpleplork は N 回の繰り返しごとにアクティブになります。 私が使用できるデバイスの限られた実験では、kerpleplork の混乱を避けるために 7 は十分高い値であることを示していますが、念のため ARM デバイスを持つ人たちからフィードバックを得たいです。 ``` @@ -122,7 +122,7 @@ enum my_keycodes { ほとんどの初めての QMK 貢献者は、個人のキーマップから始めます。キーマップの標準はかなりカジュアルなものにしようとしています(キーマップは結局のところ作成者の性格を反映しています)が、他の人があなたのキーマップを簡単に見つけて学ぶことができるように、これらのガイドラインに従うようにお願いします。 -* [テンプレート](documentation_templates.md) を使って `readme.md` を書きます。 +* [テンプレート](ja/documentation_templates.md) を使って `readme.md` を書きます。 * 全てのキーマップの PR は squash されるため、コミットがどのように squash されるかを気にする場合は、自分で行う必要があります。 * キーマップの PR に機能をまとめないでください。最初に機能をサブミットし、次にキーマップのための2つ目の PR をサブミットします。 * `Makefile` をキーマップフォルダに含めないでください(もう使われていません)。 @@ -153,7 +153,7 @@ enum my_keycodes { 機能やバグの修正に取り組む時に留意すべき幾つかの事があります。 * **デフォルトで無効** - QMK がサポートするほとんどのチップでメモリがかなり制限されており、現在のキーマップが壊れていないことが重要です。ですので、あなたの機能をオフにするのではなく**オン**にするようにしてください。デフォルトでオンにすべき場合、あるいはコードのサイズを小さくする必要がある場合は、相談してください。 -* **サブミットする前にローカルでコンパイル** - これが明白であることを願っていますが、コンパイルする必要があります。私たちの Travis システムは全ての問題をキャッチしますが、結果が返ってくるのを待つ代わりに幾つかのキーボードをローカルでコンパイルする方が一般的に速いです。 +* **サブミットする前にローカルでコンパイル** - これが明白であることを願っていますが、コンパイルする必要があります。プルリクエストを作成する前に、変更した内容がコンパイルできるかどうかを常に確認する必要があります。 * **リビジョンと異なるチップベースを考慮** - 僅かに異なる設定、さらには異なるチップベースを可能にするリビジョンを持つキーボードが幾つかあります。ARM および AVR でサポートされる機能を作成する、あるいは動作しないプラットフォームでは自動的に無効化するようにしてください。 * **機能の説明** - 新しいファイルあるいは既存のファイルの一部として、`docs/` の中に文章化します。文章化しないと、他の人はあなたの苦労から利益を得ることができません。 diff --git a/docs/ja/custom_quantum_functions.md b/docs/ja/custom_quantum_functions.md index c348f85566c5..bd3f15a5fd2c 100644 --- a/docs/ja/custom_quantum_functions.md +++ b/docs/ja/custom_quantum_functions.md @@ -211,11 +211,11 @@ void keyboard_post_init_user(void) { ```c void suspend_power_down_user(void) { - rgb_matrix_set_suspend_state(true); + // code will run multiple times while keyboard is suspended } void suspend_wakeup_init_user(void) { - rgb_matrix_set_suspend_state(false); + // code will run on keyboard wakeup } ``` diff --git a/docs/ja/documentation_templates.md b/docs/ja/documentation_templates.md index 7f0b239265ae..0ba3caf5ec1e 100644 --- a/docs/ja/documentation_templates.md +++ b/docs/ja/documentation_templates.md @@ -1,8 +1,8 @@ # ドキュメントテンプレート このページでは、新しいキーマップやキーボードを QMK に提出する際に使うべきテンプレートをまとめています。 diff --git a/docs/ja/faq_general.md b/docs/ja/faq_general.md index 83d1a557bdd6..407846b7883e 100644 --- a/docs/ja/faq_general.md +++ b/docs/ja/faq_general.md @@ -1,8 +1,8 @@ # よくある質問 ## QMK とは何か? diff --git a/docs/ja/faq_keymap.md b/docs/ja/faq_keymap.md index adc4af341f10..59c7d206a1c6 100644 --- a/docs/ja/faq_keymap.md +++ b/docs/ja/faq_keymap.md @@ -1,8 +1,8 @@ # キーマップの FAQ このページは人々がキーマップについてしばしば持つ疑問について説明します。まだ読んだことが無い場合には、[キーマップの概要](ja/keymap.md)を最初に読むべきです。 @@ -10,7 +10,7 @@ ## どのキーコードを使えますか? あなたが利用可能なキーコードのインデックスについては、[キーコード](ja/keycodes.md)を見てください。より広範なドキュメントがある場合は、そこからリンクしてあります。 -キーコードは実際には [common/keycode.h](https://github.com/qmk/qmk_firmware/blob/master/tmk_core/common/keycode.h) で定義されています。 +キーコードは実際には [common/keycode.h](https://github.com/qmk/qmk_firmware/blob/master/quantum/keycode.h) で定義されています。 ## デフォルトのキーコードとは何か? diff --git a/docs/ja/faq_misc.md b/docs/ja/faq_misc.md index e9a35ef329cb..38917df2eec4 100644 --- a/docs/ja/faq_misc.md +++ b/docs/ja/faq_misc.md @@ -39,10 +39,6 @@ Size after: **NKRO** がまだ動作しない場合は、`Magic` **N** コマンド(デフォルトでは `LShift+RShift+N`)を試してみてください。**NKRO** モードと **6KRO** モード間を一時的に切り替えるためにこのコマンドを使うことができます。**NKRO** が機能しない状況、特に BIOS の場合は **6KRO** モードに切り替える必要があります。 -ファームウェアを `BOOTMAGIC_ENABLE` でビルドした場合、`ブートマジック` **N** コマンドで切り替える必要があります(デフォルトでは `Space+N`)。この設定は EEPROM に格納され、電源を入れ直しても保持されます。 - -https://github.com/tmk/tmk_keyboard#boot-magic-configuration---virtual-dip-switch - ## トラックポイントははリセット回路が必要です (PS/2 マウスサポート) リセット回路が無いとハードウェアの不適切な初期化のために一貫性の無い結果になります。TPM754 の回路図を見てください: diff --git a/docs/ja/feature_advanced_keycodes.md b/docs/ja/feature_advanced_keycodes.md index 5dfa341e3768..2416c742a0e8 100644 --- a/docs/ja/feature_advanced_keycodes.md +++ b/docs/ja/feature_advanced_keycodes.md @@ -1,33 +1,169 @@ # 修飾キー :id=modifier-keys 以下のようにキーコードとモディファイアを組み合わせることができます。押すと、モディファイアのキーダウンイベントが送信され、次に `kc` のキーダウンイベントが送信されます。放すと、`kc` のキーアップイベントが送信され、次にモディファイアのキーアップイベントが送信されます。 -| キー | エイリアス | 説明 | -| ---------- | ------------------------------- | ------------------------------------------------------------------- | -| `LCTL(kc)` | `C(kc)` | 左 Control を押しながら `kc` を押します。 | -| `LSFT(kc)` | `S(kc)` | 左 Shift を押しながら `kc` を押します。 | -| `LALT(kc)` | `A(kc)`, `LOPT(kc)` | 左 Alt を押しながら `kc`を押します。 | -| `LGUI(kc)` | `G(kc)`, `LCMD(kc)`, `LWIN(kc)` | 左 GUI を押しながら `kc` を押します。 | -| `RCTL(kc)` | | 右 Control を押しながら `kc` を押します。 | -| `RSFT(kc)` | | 右 Shift を押しながら `kc` を押します。 | -| `RALT(kc)` | `ROPT(kc)`, `ALGR(kc)` | 右 Alt を押しながら `kc` を押します。 | -| `RGUI(kc)` | `RCMD(kc)`, `LWIN(kc)` | 右 GUI を押しながら `kc` を押します。 | -| `SGUI(kc)` | `SCMD(kc)`, `SWIN(kc)` | 左 Shift と左 GUI を押しながら `kc` を押します。 | -| `LCA(kc)` | | 左 Control と左 Alt を押しながら `kc` を押します。 | -| `LSA(kc)` | | 左 Shift と左 Alt を押しながら `kc` を押します。 | -| `RSA(kc)` | `SAGR(kc)` | 右 Shift と右 Alt (AltGr) を押しながら `kc` を押します。 | -| `RCS(kc)` | | 右 Control と右 Shift を押しながら `kc` を押します。 | -| `LCAG(kc)` | | 左 Control、左 Alt、左 GUI を押しながら `kc` を押します。 | -| `MEH(kc)` | | 左 Control、左 Shift、左 Alt を押しながら `kc` を押します。 | -| `HYPR(kc)` | | 左 Control、左 Shift、左 Alt、左 GUI を押しながら `kc` を押します。 | +| キー | エイリアス | 説明 | +| ---------- | ---------------------------------- | ------------------------------------------------------------------- | +| `LCTL(kc)` | `C(kc)` | 左 Control を押しながら `kc` を押します。 | +| `LSFT(kc)` | `S(kc)` | 左 Shift を押しながら `kc` を押します。 | +| `LALT(kc)` | `A(kc)`, `LOPT(kc)` | 左 Alt を押しながら `kc`を押します。 | +| `LGUI(kc)` | `G(kc)`, `LCMD(kc)`, `LWIN(kc)` | 左 GUI を押しながら `kc` を押します。 | +| `RCTL(kc)` | | 右 Control を押しながら `kc` を押します。 | +| `RSFT(kc)` | | 右 Shift を押しながら `kc` を押します。 | +| `RALT(kc)` | `ROPT(kc)`, `ALGR(kc)` | 右 Alt を押しながら `kc` を押します。 | +| `RGUI(kc)` | `RCMD(kc)`, `LWIN(kc)` | 右 GUI を押しながら `kc` を押します。 | +| `LSG(kc)` | `SGUI(kc)`, `SCMD(kc)`, `SWIN(kc)` | 左 Shift と左 GUI を押しながら `kc` を押します。 | +| `LAG(kc)` | | 左 Alt と左 GUI を押しながら `kc` を押します。 | +| `RSG(kc)` | | 右 Shift と右 GUI を押しながら `kc` を押します。 | +| `RAG(kc)` | | 右 Alt と右 GUI を押しながら `kc` を押します。 | +| `LCA(kc)` | | 左 Control と左 Alt を押しながら `kc` を押します。 | +| `LSA(kc)` | | 左 Shift と左 Alt を押しながら `kc` を押します。 | +| `RSA(kc)` | `SAGR(kc)` | 右 Shift と右 Alt (AltGr) を押しながら `kc` を押します。 | +| `RCS(kc)` | | 右 Control と右 Shift を押しながら `kc` を押します。 | +| `LCAG(kc)` | | 左 Control、左 Alt、左 GUI を押しながら `kc` を押します。 | +| `MEH(kc)` | | 左 Control、左 Shift、左 Alt を押しながら `kc` を押します。 | +| `HYPR(kc)` | | 左 Control、左 Shift、左 Alt、左 GUI を押しながら `kc` を押します。 | また、それらを繋げることができます。例えば、`LCTL(LALT(KC_DEL))` または `C(A(KC_DEL))` は1回のキー押下で Control+Alt+Delete を送信するキーを作成します。 +# モディファイアの状態を確認 :id=checking-modifier-state + + +現在のモディファイアの状態は、2つの関数によって主にアクセスされます。: `get_mods()` 関数は通常のモディファイアとモッドタップの状態を、`get_oneshot_mods()` 関数はワンショットモディファイアの状態を確認する関数です。(ワンショットモディファイアはキーが押されていない限り、通常のモディファイアキーのように動作します。) + +1つ以上の特定のモディファイアが現在のモディファイアの状態に含まれているかどうかは、モディファイアの状態と、照合したいモディファイアの組み合わせに相当するモッドマスクとを AND 演算することで検出できます。 +ビット演算が使われる理由は、モディファイアの状態が (GASC)R(GASC)L の形式で1バイトとして格納されるためです。 + +従って、例を挙げると、`01000010` は LShift+RALT の内部表現です。 +C 言語におけるビット演算のより詳しい情報は、[ここ](https://en.wikipedia.org/wiki/Bitwise_operations_in_C) をクリックして、Wikipedia のページのトピックを開いてください。 + +実際には、`get_mods() & MOD_BIT(KC_)`([モディファイアキーコードのリスト](ja/keycodes_basic.md#modifiers) 参照) で、あるモディファイアが有効かどうかをチェックできるということです、また左右のモディファイアの違いが重要ではなく、両方にマッチさせたい場合は、`get_mods() & MOD_MASK_`とします。ワンショットモディファイアについても、`get_mods()` を `get_oneshot_mods()` に置き換えれば同じことができます。 + +モディファイアの特定の組み合わせが同時にアクティブなのか確認する*だけ*なら、上で説明したモディファイアの状態とモッドマスクの論理積と、モッドマスク自身の結果を比較します。: `get_mods() & == ` + +例えば、左 Control キーと 左 Shift キーのワンショットモディファイアがオンで、その他のワンショットモディファイアがオフの場合にカスタムコードを起動したいとしましょう。そうするには、`(MOD_BIT(KC_LCTL) | MOD_BIT(KC_LSFT))` で左 Control キーと Shift キーのモッドビットを組み合わせて目的のモッドマスクを構成し、それらを差し込みます: `get_oneshot_mods & (MOD_BIT(KC_LCTL) | MOD_BIT(KC_LSFT)) == (MOD_BIT(KC_LCTL) | MOD_BIT(KC_LSFT))`。モッドビットマスクの代わりに `MOD_MASK_CS` 使うと、条件を満たすために4つのモディファイアキー (左右両方の Control キーと Shift キー) を押す必要があります。 + +モッドマスクの完全なリストは、以下のとおりです。 + +| モッドマスク名 | マッチするモディファイア | +|--------------------|-------------------------------------------------------------| +| `MOD_MASK_CTRL` | 左 Control , 右 Control | +| `MOD_MASK_SHIFT` | 左 Shift , 右 Shift | +| `MOD_MASK_ALT` | 左 Alt , 右 Alt | +| `MOD_MASK_GUI` | 左 GUI , 右 GUI | +| `MOD_MASK_CS` | Control , Shift | +| `MOD_MASK_CA` | (左/右) Control , (左/右) Alt | +| `MOD_MASK_CG` | (左/右) Control , (左/右) GUI | +| `MOD_MASK_SA` | (左/右) Shift , (左/右) Alt | +| `MOD_MASK_SG` | (左/右) Shift , (左/右) GUI | +| `MOD_MASK_AG` | (左/右) Alt , (左/右) GUI | +| `MOD_MASK_CSA` | (左/右) Control , (左/右) Shift , (左/右) Alt | +| `MOD_MASK_CSG` | (左/右) Control , (左/右) Shift , (左/右) GUI | +| `MOD_MASK_CAG` | (左/右) Control , (左/右) Alt , (左/右) GUI | +| `MOD_MASK_SAG` | (左/右) Shift , (左/右) Alt , (左/右) GUI | +| `MOD_MASK_CSAG` | (左/右) Control , (左/右) Shift , (左/右) Alt , (左/右) GUI | + +`get_mods()` 関数を使って現在アクティブなモディファイアにアクセスする以外に、モディファイアの状態を変更するために使えるいくつかの関数があります。ここでは、`mods` 引数はモディファイアビットマスクを表します。 + +* `add_mods(mods)`: その他のモディファイアに影響を与えずに `mods` を有効にします。 +* `register_mods(mods)`: `add_mods` に似ていますが、キーボードにすぐにレポートを送信します。 +* `del_mods(mods)`: その他のモディファイアに影響を与えずに `mods` を無効にします。 +* `unregister_mods(mods)`: `del_mods` に似ていますが、キーボードにすぐにレポートを送信します。 +* `set_mods(mods)`: `mods` で現在のモディファイアの状態を上書きします +* `clear_mods()`: 全てのモディファイアを無効にすることによって、モディファイアの状態をリセットします。 + +同様に、`get_oneshot_mods()` 関数に加えて、ワンショットモディファイアのための関数もあります。 + +* `add_oneshot_mods(mods)`: その他のワンショットモディファイアに影響を与えずに `mods` を有効にします +* `del_oneshot_mods(mods)`: その他のワンショットモディファイアに影響を与えずに `mods` を無効にします +* `set_oneshot_mods(mods)`: `mods` で現在のワンショットモディファイアの状態を上書きします +* `clear_oneshot_mods()`: 全てのワンショットモディファイアを無効にすることによって、ワンショットモディファイアの状態をリセットします。 + +## 例 :id=examples + +次の例は、[マクロについてのページ](ja/feature_macros.md) で読める [高度なマクロ](ja/feature_macros.md?id=advanced-macro-functions) を使っています。 +### Alt + Tab の代わりの Alt + Escape :id=alt-escape-for-alt-tab + +左 Alt と `KC_ESC` が押されたときに、アプリ切り替えの(左 Alt と) `KC_TAB` のように振る舞うことを実現する単純な例です。この例は、左 Alt だけがアクティブになっているかを厳格に確認します。つまり、Alt+Shift+Esc によるアプリの逆順での切り替えはできません。また、この例は、実際の Alt+Escape キーボードショートカットを起動することはできなくなりますが、AltGr+Escape キーボードショートカットを起動することはできることに留意してください。 + +```c +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + + case KC_ESC: + // 左 Alt だけがアクティブか検知します + if ((get_mods() & MOD_BIT(KC_LALT)) == MOD_BIT(KC_LALT)) { + if (record->event.pressed) { + // KC_LALT を登録する必要はありません。既にアクティブだからです。 + // Alt モディファイアはこの KC_TAB に適用されます。 + register_code(KC_TAB); + } else { + unregister_code(KC_TAB); + } + // QMK にこれ以上キーコードの処理をさせません。 + return false; + } + // それ以外の場合は、QMK に通常通り KC_ESC の処理をさせます。 + return true; + + } + return true; +}; +``` + +### Delete の代わりの Shift + Backspace :id=shift-backspace-for-delete + +`KC_BSPC` と組み合わせることで Shift の本来の動作が取り消され、そして、`KC_DEL` に完全に置き換えられる高度な例です。この例を適切に動作させるために2つのメイン変数が作られます。: `mod_state` と `delkey_registered` です。最初の1つ目の変数は、モディファイアの状態を記憶し、`KC_DEL` を登録した後に元に戻すために使われます。2つ目の変数はブール型変数 (true または false) で、`KC_DEL` の状態を追跡して Backspace/Delete キー全体のリリースを正確に管理します。 + +前の例と対照的に、この例は厳格なモディファイアの確認を行いません。このカスタムコードを起動するには、1つまたは2つの Shift キーがアクティブな間に `KC_BSPC` を押せば十分で、他のモディファイアの状態は関係ありません。この方法は、いくつかの特典を提供します。: Ctrl+Shift+Backspace は次の単語を削除 (Control+Delete) し、Ctrl+Alt+Shift+Backspace は Ctrl+Alt+Del キーボードショートカットを実行します。 + +```c +// アクティブなモディファイアを表すバイナリデータを保持する変数を初期化します +uint8_t mod_state; +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + // 後々の参照のために現在のモディファイアの状態を変数に格納します + mod_state = get_mods(); + switch (keycode) { + + case KC_BSPC: + { + // Delete キーの状態(登録されているかどうか)を追跡するブール型変数を初期化します。 + static bool delkey_registered; + if (record->event.pressed) { + // いずれかの Shift がアクティブか検知します + if (mod_state & MOD_MASK_SHIFT) { + // 最初に、 Shift キーを KC_DEL に適用しないため、 + // 一時的に左右両方の Shift キーをキャンセルします + del_mods(MOD_MASK_SHIFT); + register_code(KC_DEL); + // KC_DEL の状態を反映させるためにブール型変数を更新します + delkey_registered = true; + // Backspace/Delete キーをタップした後でも押し続けている Shift キーが機能するように、 + // モディファイアの状態を再適用します。 + set_mods(mod_state); + return false; + } + } else { // KC_BSPC キーを離した場合 + // KC_BSPC を離しても KC_DEL が送信されている場合 + if (delkey_registered) { + unregister_code(KC_DEL); + delkey_registered = false; + return false; + } + } + // QMK に Shift キーを除いて KC_BSPC を通常通り処理させます + return true; + } + + } + return true; +}; +``` # 過去の内容 :id=legacy-content このページには多くの機能が含まれていました。このページを構成していた多くのセクションをそれぞれのページに移動しました。これより下は全て単なるリダイレクトであるため、web上で古いリンクをたどっている人は探しているものを見つけることができます。 diff --git a/docs/ja/feature_backlight.md b/docs/ja/feature_backlight.md index 88afa6c5fe63..150069607c20 100644 --- a/docs/ja/feature_backlight.md +++ b/docs/ja/feature_backlight.md @@ -1,8 +1,8 @@ # バックライト :id=backlighting 多くのキーボードは、キースイッチを貫通して配置されたり、キースイッチの下に配置された個々の LED によって、バックライトキーをサポートします。この機能は通常スイッチごとに単一の色しか使用できないため、[RGB アンダーグロー](ja/feature_rgblight.md)および [RGB マトリックス](ja/feature_rgb_matrix.md)機能のどちらとも異なりますが、キーボードに複数の異なる単一色の LED を取り付けることは当然可能です。 @@ -67,14 +67,17 @@ BACKLIGHT_DRIVER = software バックライトを設定するには、`config.h` の中で以下の `#define` をします: -| 定義 | デフォルト | 説明 | -| --------------------- | ---------- | ------------------------------------------------------------------------------------------- | -| `BACKLIGHT_PIN` | *定義なし* | LED を制御するピン | -| `BACKLIGHT_LEVELS` | `3` | 輝度のレベルの数 (オフを除いて最大 31) | -| `BACKLIGHT_CAPS_LOCK` | *定義なし* | バックライトを使って Caps Lock のインジケータを有効にする (専用 LED の無いキーボードのため) | -| `BACKLIGHT_BREATHING` | *定義なし* | サポートされる場合は、バックライトの明滅動作を有効にする | -| `BREATHING_PERIOD` | `6` | 各バックライトの "明滅" の長さ(秒) | -| `BACKLIGHT_ON_STATE` | `1` | バックライトが "オン" の時のバックライトピンの状態 - high の場合は `1`、low の場合は `0` | +| 定義 | デフォルト | 説明 | +| ----------------------------- | ------------------ | --------------------------------------------------------------------------------------------- | +| `BACKLIGHT_PIN` | *定義なし* | LED を制御するピン | +| `BACKLIGHT_LEVELS` | `3` | 輝度のレベルの数 (オフを除いて最大 31) | +| `BACKLIGHT_CAPS_LOCK` | *定義なし* | バックライトを使って Caps Lock のインジケータを有効にする (専用 LED の無いキーボードのため) | +| `BACKLIGHT_BREATHING` | *定義なし* | サポートされる場合は、バックライトの明滅動作を有効にする | +| `BREATHING_PERIOD` | `6` | 各バックライトの "明滅" の長さ(秒) | +| `BACKLIGHT_ON_STATE` | `1` | バックライトが "オン" の時のバックライトピンの状態 - high の場合は `1`、low の場合は `0` | +| `BACKLIGHT_LIMIT_VAL` | `255` | バックライトの最大デューティサイクル -- `255` で最大輝度になり、それ未満では最大値が減少する | +| `BACKLIGHT_DEFAULT_LEVEL` | `BACKLIGHT_LEVELS` | EEPROM をクリアする時に使うデフォルトのバックライトレベル | +| `BACKLIGHT_DEFAULT_BREATHING` | *定義なし* | EEPROM をクリアする時に、バックライトのブリージングを有効にするかどうか | 独自のキーボードを設計しているわけではない限り、通常は `BACKLIGHT_PIN` または `BACKLIGHT_ON_STATE` を変更する必要はありません。 @@ -97,18 +100,18 @@ BACKLIGHT_DRIVER = pwm AVR ボードでは、QMK はどのドライバを使うかを以下の表に従って自動的に決定します: -| バックライトピン | AT90USB64/128 | ATmega16/32U4 | ATmega16/32U2 | ATmega32A | ATmega328/P | -| ---------------- | ------------- | ------------- | ------------- | --------- | ----------- | -| `B1` | | | | | Timer 1 | -| `B2` | | | | | Timer 1 | -| `B5` | Timer 1 | Timer 1 | | | | -| `B6` | Timer 1 | Timer 1 | | | | -| `B7` | Timer 1 | Timer 1 | Timer 1 | | | -| `C4` | Timer 3 | | | | | -| `C5` | Timer 3 | | Timer 1 | | | -| `C6` | Timer 3 | Timer 3 | Timer 1 | | | -| `D4` | | | | Timer 1 | | -| `D5` | | | | Timer 1 | | +| バックライトピン | AT90USB64/128 | AT90USB162 | ATmega16/32U4 | ATmega16/32U2 | ATmega32A | ATmega328/P | +| ---------------- | ------------- | ---------- | ------------- | ------------- | --------- | ----------- | +| `B1` | | | | | | Timer 1 | +| `B2` | | | | | | Timer 1 | +| `B5` | Timer 1 | | Timer 1 | | | | +| `B6` | Timer 1 | | Timer 1 | | | | +| `B7` | Timer 1 | Timer 1 | Timer 1 | Timer 1 | | | +| `C4` | Timer 3 | | | | | | +| `C5` | Timer 3 | Timer 1 | | Timer 1 | | | +| `C6` | Timer 3 | Timer 1 | Timer 3 | Timer 1 | | | +| `D4` | | | | | Timer 1 | | +| `D5` | | | | | Timer 1 | | 他の全てのピンはタイマー支援ソフトウェア PWM を使います。 diff --git a/docs/ja/feature_bootmagic.md b/docs/ja/feature_bootmagic.md index 20a93d5c4482..2ad6fc85313a 100644 --- a/docs/ja/feature_bootmagic.md +++ b/docs/ja/feature_bootmagic.md @@ -16,7 +16,7 @@ 一部のキーボードでは、ブートマジックはデフォルトで無効になっています。その場合、`rules.mk` 内で以下のように明示的に有効にする必要があります: ```make -BOOTMAGIC_ENABLE = full +BOOTMAGIC_ENABLE = yes ``` ?> `full` の代わりに `yes` が使われていることがあるかもしれませんが、これは問題ありません。ただし、`yes` は非推奨で、理想的には `full` (あるいは`lite`) が使われるべきです。 diff --git a/docs/ja/feature_debounce_type.md b/docs/ja/feature_debounce_type.md index 03f68d72141c..258ca194da4f 100644 --- a/docs/ja/feature_debounce_type.md +++ b/docs/ja/feature_debounce_type.md @@ -88,15 +88,6 @@ voltage +---------------------- ## QMK でサポートされるデバウンスアルゴリズム QMK はデバウンス API を介して複数のデバウンスアルゴリズムをサポートします。 -どのデバウンスメソッドが呼ばれるかのロジックは下記のとおりです。```rules.mk``` で設定された様々な定義をチェックします。 - -``` -DEBOUNCE_DIR:= $(QUANTUM_DIR)/debounce -DEBOUNCE_TYPE?= sym_defer_g -ifneq ($(strip $(DEBOUNCE_TYPE)), custom) - QUANTUM_SRC += $(DEBOUNCE_DIR)/$(strip $(DEBOUNCE_TYPE)).c -endif -``` ### デバウンスの選択 @@ -135,11 +126,3 @@ DEBOUNCE_TYPE = <アルゴリズムの名前> * デバウンスは、全てのマトリクススキャンの後で発生します。 * MATRIX_ROWS ではなく num_rows を使って、分割キーボードが正しくサポートされるようにします。 * アルゴリズムが他のキーボードにも適用できる可能性がある場合、```quantum/debounce``` に追加することを検討してください。 - -### 古い名前 -次の既存のアルゴリズムの古い名前は引き続きサポートされますが、代わりに新しい名前を使うことを推奨します。 - -* sym_g - sym_defer_g の古い名前 -* eager_pk - sym_eager_pk の古い名前 -* sym_pk - sym_defer_pk の古い名前 -* eager_pr - sym_eager_pr の古い名前 diff --git a/docs/ja/feature_dip_switch.md b/docs/ja/feature_dip_switch.md index a0f6aeb0035f..8d0eeafa5a80 100644 --- a/docs/ja/feature_dip_switch.md +++ b/docs/ja/feature_dip_switch.md @@ -14,6 +14,8 @@ DIP スイッチは、以下を `rules.mk` に追加することでサポート ```c // Connects each switch in the dip switch to the GPIO pin of the MCU #define DIP_SWITCH_PINS { B14, A15, A10, B9 } +// For split keyboards, you can separately define the right side pins +#define DIP_SWITCH_PINS_RIGHT { ... } ``` あるいは @@ -28,8 +30,9 @@ DIP スイッチは、以下を `rules.mk` に追加することでサポート コールバック関数を `.c` に記述することができます: ```c -void dip_switch_update_kb(uint8_t index, bool active) { - dip_switch_update_user(index, active); +bool dip_switch_update_kb(uint8_t index, bool active) { + if !(dip_switch_update_user(index, active)) { return false; } + return true; } ``` @@ -37,7 +40,7 @@ void dip_switch_update_kb(uint8_t index, bool active) { あるいは `keymap.c` に記述することもできます: ```c -void dip_switch_update_user(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: if(active) { audio_on(); } else { audio_off(); } @@ -62,6 +65,7 @@ void dip_switch_update_user(uint8_t index, bool active) { } break; } + return true; } ``` @@ -69,8 +73,9 @@ void dip_switch_update_user(uint8_t index, bool active) { ```c -void dip_switch_update_mask_kb(uint32_t state) { - dip_switch_update_mask_user(state); +bool dip_switch_update_mask_kb(uint32_t state) { + if (!dip_switch_update_mask_user(state)) { return false; } + return true; } ``` @@ -78,7 +83,7 @@ void dip_switch_update_mask_kb(uint32_t state) { あるいは `keymap.c` に記述することもできます: ```c -void dip_switch_update_mask_user(uint32_t state) { +bool dip_switch_update_mask_user(uint32_t state) { if (state & (1UL<<0) && state & (1UL<<1)) { layer_on(_ADJUST); // C on esc } else { @@ -94,6 +99,7 @@ void dip_switch_update_mask_user(uint32_t state) { } else { layer_off(_TEST_B); } + return true; } ``` diff --git a/docs/ja/feature_encoders.md b/docs/ja/feature_encoders.md index 7b7f394c83fe..b93d9a9a281e 100644 --- a/docs/ja/feature_encoders.md +++ b/docs/ja/feature_encoders.md @@ -51,15 +51,18 @@ ENCODER_ENABLE = yes コールバック関数を `.c` に記述することができます: ```c -void encoder_update_kb(uint8_t index, bool clockwise) { - encoder_update_user(index, clockwise); +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { + return false; + } + } ``` あるいは `keymap.c` に記述することもできます: ```c -void encoder_update_user(uint8_t index, bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (index == 0) { /* First encoder */ if (clockwise) { tap_code(KC_PGDN); @@ -73,6 +76,7 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code(KC_UP); } } + return false; } ``` diff --git a/docs/ja/feature_haptic_feedback.md b/docs/ja/feature_haptic_feedback.md index 158079725329..687788014aa5 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_layers.md b/docs/ja/feature_layers.md index 011f0e0ef19b..ca3e05583573 100644 --- a/docs/ja/feature_layers.md +++ b/docs/ja/feature_layers.md @@ -50,7 +50,7 @@ QMK を使い始めたばかりの場合は、全てを単純にしたいでし レイヤーは番号順に上に積み重なっています。キーの押下の動作を決定する時に、QMK は上から順にレイヤーを走査し、`KC_TRNS` に設定されていない最初のアクティブなレイヤーに到達すると停止します。結果として、現在のレイヤーよりも数値的に低いレイヤーをアクティブにし、現在のレイヤー(あるいはアクティブでターゲットレイヤーよりも高い別のレイヤー)に `KC_TRNS` 以外のものがある場合、それが送信されるキーであり、アクティブ化したばかりのレイヤー上のキーではありません。これが、ほとんどの人の "なぜレイヤーが切り替わらないのか" 問題の原因です。 -場合によっては、マクロ内あるいはタップダンスルーチンの一部としてレイヤーを切り替えほうが良いかもしれません。`layer_on` はレイヤーをアクティブにし、`layer_off` はそれを非アクティブにします。もっと多くのレイヤーに関する関数は、[action_layer.h](https://github.com/qmk/qmk_firmware/blob/master/tmk_core/common/action_layer.h) で見つけることができます。 +場合によっては、マクロ内あるいはタップダンスルーチンの一部としてレイヤーを切り替えほうが良いかもしれません。`layer_on` はレイヤーをアクティブにし、`layer_off` はそれを非アクティブにします。もっと多くのレイヤーに関する関数は、[action_layer.h](https://github.com/qmk/qmk_firmware/blob/master/quantum/action_layer.h) で見つけることができます。 ## 関数 :id=functions diff --git a/docs/ja/feature_leader_key.md b/docs/ja/feature_leader_key.md index 61d6f5a8e05e..b826b068eb24 100644 --- a/docs/ja/feature_leader_key.md +++ b/docs/ja/feature_leader_key.md @@ -1,8 +1,8 @@ # リーダーキー: 新しい種類のモディファイア もしあなたが Vim を使ったことがある場合、リーダーキーは何であるかを知っています。そうでなければ、素晴らしい概念を発見しようとしています。:) 例えば、Alt+Shift+W を押す(3つのキーを同時に押す)代わりに、キーの_シーケンス_を押すことができたらどうでしょう?つまり、特別なモディファイア (リーダーキー)を押して、続けて W と C を押すと (単純にキーを高速に繋げます)、何かが起こります。 @@ -77,6 +77,19 @@ SEQ_THREE_KEYS(KC_C, KC_C, KC_C) { } ``` +## リーダーキーの無限タイムアウト + +リーダーキーが、シーケンスの残りのキーのような快適な場所にない場合があります。リーダーキーが右上の外側のキーの1つである場合、リーダーキーに届くように手の位置を変えなければならないことがあります。 +これにより、シーケンスの大部分をすばやく入力できたとしても、シーケンス全体を時間通りに入力するのが難しい場合があります。例えば、シーケンスが `Leader + asd` の場合、手をホーム行に置けば `asd` を素早く打つのは非常に簡単です。しかし、リーダーキーに届くようにホーム行から手を移動し、戻った後、時間内にシーケンスを開始することはできません。 +この状況が手に与えるストレスを取り除くために、リーダーキーだけに無限のタイムアウトを有効にすることができます。つまり、リーダーキーを押した後、シーケンスの残りを開始するまでの時間が無限になり、シーケンスの残りを快適に入力するための最適な位置に手を置くことができます。 +この無限のタイムアウトはリーダーキーにのみ影響するため、前述の `Leader + asd` の例では、`Leader` と `a` の間に無限の時間があります。ただし、シーケンスを開始すると、(グローバルまたはキーごとに)設定したタイムアウトは正常に機能します。 +このようにして、非常に短い `LEADER_TIMEOUT` を設定できますが、それでも手を置く時間は十分にあります。 + +これを有効にするには、以下を `config.h` に配置します: +```c +#define LEADER_NO_TIMEOUT +``` + ## 厳密なキー処理 デフォルトでは、リーダーキー機能は、リーダーシーケンスの確認時に [`モッドタップ`](ja/mod_tap.md) および [`レイヤータップ`](ja/feature_layers.md#switching-and-toggling-layers) 機能からのキーコードをフィルターします。つまり、`LT(3, KC_A)` を使っている場合、`LT(3, KC_A)` ではなくシーケンスの `KC_A` として取り出され、新しいユーザにとってより期待される動作を提供します。 diff --git a/docs/ja/feature_led_indicators.md b/docs/ja/feature_led_indicators.md index 307603f0a4c3..764b478c31f1 100644 --- a/docs/ja/feature_led_indicators.md +++ b/docs/ja/feature_led_indicators.md @@ -25,7 +25,7 @@ LED の状態を `uint8_t` として提供する2つの非推奨の関数があ * `uint8_t led_set_kb(uint8_t usb_led)` と `_user(uint8_t usb_led)` * `uint8_t host_keyboard_leds()` -## 設定オプション +## 設定オプション :id=configuration-options インジケータを設定するには、`config.h` で以下の `#define` をします: diff --git a/docs/ja/feature_led_matrix.md b/docs/ja/feature_led_matrix.md index 62e22859fb78..2b1979ec68ba 100644 --- a/docs/ja/feature_led_matrix.md +++ b/docs/ja/feature_led_matrix.md @@ -52,7 +52,7 @@ I2C IS31FL3731 RGB コントローラを使ったアドレス指定可能な LED `.c` に全ての LED を列挙する配列を定義します: - const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { + const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { /* これらの位置については IS31 マニュアルを参照してください * driver * | LED address @@ -61,7 +61,7 @@ I2C IS31FL3731 RGB コントローラを使ったアドレス指定可能な LED .... } -ここで、`Cx_y` は[データシート](https://www.issi.com/WW/pdf/31FL3731.pdf)およびヘッダファイル `drivers/issi/is31fl3731-simple.h` で定義されるマトリックス内の LED の位置です。`driver` は `config.h` で定義したドライバのインデックス(`0`、`1`、`2`、`3`のいずれか)です。 +ここで、`Cx_y` は[データシート](https://www.issi.com/WW/pdf/31FL3731.pdf)およびヘッダファイル `drivers/led/issi/is31fl3731-simple.h` で定義されるマトリックス内の LED の位置です。`driver` は `config.h` で定義したドライバのインデックス(`0`、`1`、`2`、`3`のいずれか)です。 ## キーコード diff --git a/docs/ja/feature_ps2_mouse.md b/docs/ja/feature_ps2_mouse.md index 0351768b33da..569934c18762 100644 --- a/docs/ja/feature_ps2_mouse.md +++ b/docs/ja/feature_ps2_mouse.md @@ -1,8 +1,8 @@ # PS/2 マウスサポート :id=ps2-mouse-support PS/2 マウス (例えばタッチパッドあるいはトラックポイント)を複合デバイスとしてキーボードに接続することができます。 @@ -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< [速記](https://en.wikipedia.org/wiki/Stenotype)は裁判所のレポート、字幕および耳が不自由な人のためのリアルタイムの文字起こしで最もよく使われる記述方法です。速記では単語はスペル、音声およびショートカット(短い)ストロークが混在する音節ごとに音節化されます。プロの速記者は、標準的なタイピングで通常見られる負担を掛けずに、はるかに少ないエラー(99.9%より高い精度)で、200-300 WPM に到達できます。 @@ -45,8 +45,8 @@ MOUSEKEY_ENABLE = no キーマップで Plover 用の新しいレイヤーを作成します。`keymap_steno.h` をインクルードする必要があります。例については `planck/keymaps/steno/keymap.c` を見てください。レイヤーに切り替えるためのキーとレイヤーから抜けるためのキーを作成することを忘れないでください。その場でモードを切り替えたい場合は、キーコード `QK_STENO_BOLT` および `QK_STENO_GEMINI` を使うことができます。プロトコルのうちの1つのみを使う場合は、初期化関数の中でそれをセットアップすることができます: ```c -void matrix_init_user() { - steno_set_mode(STENO_MODE_GEMINI); // あるいは STENO_MODE_BOLT +void eeconfig_init_user() { + steno_set_mode(STENO_MODE_GEMINI); // あるいは STENO_MODE_BOLT } ``` diff --git a/docs/ja/feature_swap_hands.md b/docs/ja/feature_swap_hands.md index 5164584e8a47..cd0b150e5006 100644 --- a/docs/ja/feature_swap_hands.md +++ b/docs/ja/feature_swap_hands.md @@ -1,8 +1,8 @@ # スワップハンドアクション スワップハンドアクションにより、別のレイヤーを必要とせずに片手入力をサポートします。Makefile に `SWAP_HANDS_ENABLE` を設定し、キーマップに `hand_swap_config` エントリを定義します。これで `ACTION_SWAP_HANDS` コマンドキーが押されるたびにキーボードがミラーされます。例えば、QWERTY で "Hello, World" を入力するには、`^Ge^s^s^w^c W^wr^sd` を入力します。 diff --git a/docs/ja/feature_tap_dance.md b/docs/ja/feature_tap_dance.md index 3d9d30ecf025..a6d108f1e9b1 100644 --- a/docs/ja/feature_tap_dance.md +++ b/docs/ja/feature_tap_dance.md @@ -1,8 +1,8 @@ # タップダンス: 1つのキーが3つ、5つまたは100の異なる動作をします ## イントロダクション :id=introduction @@ -22,7 +22,7 @@ `TAPPING_TERM` の時間は、あなたのタップダンスのキーのタップとタップの間の時間として許可された最大の時間で、ミリ秒単位で計測されます。例えば、もし、あなたがこの上にある `#define` ステートメントを使い、1回タップすると `Space` が送信され、2回タップすると `Enter` が送信されるタップダンスキーをセットアップした場合、175ミリ秒以内に2回キーをタップすれば `ENT` だけが送信されるでしょう。もし、1回タップしてから175ミリ秒以上待ってからもう一度タップすると、`SPC SPC` が送信されます。 -次に、いくつかのタップダンスのキーを定義するためには、`TD()` マクロを使うのが最も簡単です。これは数字を受け取り、この数字は後で `tap_dance-actions` 配列のインデックスとして使われます。 +次に、いくつかのタップダンスのキーを定義するためには、`TD()` マクロを使うのが最も簡単です。これは数字を受け取り、この数字は後で `tap_dance_actions` 配列のインデックスとして使われます。 その後、`tap_dance_actions` 配列を使って、タップダンスキーを押した時のアクションを定義します。現在は、5つの可能なオプションがあります: @@ -59,7 +59,7 @@ このことは、あなたは再びキーをタップするまでの時間として `TAPPING_TERM` の時間を持っていることを意味します。そのため、あなたは1つの `TAPPING_TERM` の時間内に全てのタップを行う必要はありません。これにより、キーの反応への影響を最小限に抑えながら、より長いタップ回数を可能にします。 -次は `matrix_scan_tap_dance()` です。この関数はタップダンスキーのタイムアウトを制御します。 +次は `tap_dance_task()` です。この関数はタップダンスキーのタイムアウトを制御します。 柔軟性のために、タップダンスは、キーコードの組み合わせにも、ユーザー関数にもなることができます。後者は、より高度なタップ回数の制御や、LED を点滅させたり、バックライトをいじったり、等々の制御を可能にします。これは、1つの共用体と、いくつかの賢いマクロによって成し遂げられています。 @@ -85,7 +85,7 @@ qk_tap_dance_action_t tap_dance_actions[] = { [TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS), }; -// キーコードの代わりにタップダンスキーを追加します +// キーマップにキーコードの代わりにタップダンスの項目を追加します const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // ... TD(TD_ESC_CAPS) @@ -215,20 +215,22 @@ qk_tap_dance_action_t tap_dance_actions[] = { `keymap.c` ファイルの先頭、つまりキーマップの前に、以下のコードを追加します。 ```c +typedef enum { + TD_NONE, + TD_UNKNOWN, + TD_SINGLE_TAP, + TD_SINGLE_HOLD, + TD_DOUBLE_TAP, + TD_DOUBLE_HOLD, + TD_DOUBLE_SINGLE_TAP, // Send two single taps + TD_TRIPLE_TAP, + TD_TRIPLE_HOLD +} td_state_t; + typedef struct { bool is_press_action; - uint8_t state; -} tap; - -enum { - SINGLE_TAP = 1, - SINGLE_HOLD, - DOUBLE_TAP, - DOUBLE_HOLD, - DOUBLE_SINGLE_TAP, // シングルタップを2回送信 - TRIPLE_TAP, - TRIPLE_HOLD -}; + td_state_t state; +} td_tap_t; // タップダンスの列挙型 enum { @@ -236,7 +238,7 @@ enum { SOME_OTHER_DANCE }; -uint8_t cur_dance(qk_tap_dance_state_t *state); +td_state_t cur_dance(qk_tap_dance_state_t *state); // xタップダンスのための関数。キーマップで利用できるようにするため、ここに置きます。 void x_finished(qk_tap_dance_state_t *state, void *user_data); @@ -273,63 +275,63 @@ void x_reset(qk_tap_dance_state_t *state, void *user_data); * 一般的な単語で2回続けて使われる文字でないこと。例えば 'pepper' 中の 'p'。もしタップダンス機能が * 文字 'p' に存在する場合、'pepper' という単語は入力するのが非常にいらだたしいものになるでしょう。 * - * 3つ目の点については、'DOUBLE_SINGLE_TAP' が存在しますが、これは完全にはテストされていません + * 3つ目の点については、'TD_DOUBLE_SINGLE_TAP' が存在しますが、これは完全にはテストされていません * */ -uint8_t cur_dance(qk_tap_dance_state_t *state) { +td_state_t cur_dance(qk_tap_dance_state_t *state) { if (state->count == 1) { - if (state->interrupted || !state->pressed) return SINGLE_TAP; + if (state->interrupted || !state->pressed) return TD_SINGLE_TAP; // キーは割り込まれていませんが、まだ押し続けられています。'HOLD' を送信することを意味します。 - else return SINGLE_HOLD; + else return TD_SINGLE_HOLD; } else if (state->count == 2) { - // DOUBLE_SINGLE_TAP は "pepper" と入力することと、'pp' と入力したときに実際に + // TD_DOUBLE_SINGLE_TAP は "pepper" と入力することと、'pp' と入力したときに実際に // ダブルタップしたい場合とを区別するためのものです。 // この戻り値の推奨されるユースケースは、'ダブルタップ' 動作やマクロではなく、 // そのキーの2つのキー入力を送信したい場合です。 - if (state->interrupted) return DOUBLE_SINGLE_TAP; - else if (state->pressed) return DOUBLE_HOLD; - else return DOUBLE_TAP; + if (state->interrupted) return TD_DOUBLE_SINGLE_TAP; + else if (state->pressed) return TD_DOUBLE_HOLD; + else return TD_DOUBLE_TAP; } // 誰も同じ文字を3回入力しようとしていないと仮定します(少なくとも高速には)。 // タップダンスキーが 'KC_W' で、"www." と高速に入力したい場合、ここに例外を追加して - // 'TRIPLE_SINGLE_TAP' を返し、'DOUBLE_SINGLE_TAP' のようにその列挙型を定義する必要があります。 + // 'TD_TRIPLE_SINGLE_TAP' を返し、'TD_DOUBLE_SINGLE_TAP' のようにその列挙型を定義する必要があります。 if (state->count == 3) { - if (state->interrupted || !state->pressed) return TRIPLE_TAP; - else return TRIPLE_HOLD; - } else return 8; // マジックナンバー。いつかこのメソッドはより多くの押下に対して機能するよう拡張されるでしょう + if (state->interrupted || !state->pressed) return TD_TRIPLE_TAP; + else return TD_TRIPLE_HOLD; + } else return TD_UNKNOWN; } -//'x' タップダンスの 'tap' のインスタンスを生成します。 -static tap xtap_state = { +//'x' タップダンスの 'td_tap_t' のインスタンスを生成します。 +static td_tap_t xtap_state = { .is_press_action = true, - .state = 0 + .state = TD_NONE }; void x_finished(qk_tap_dance_state_t *state, void *user_data) { xtap_state.state = cur_dance(state); switch (xtap_state.state) { - case SINGLE_TAP: register_code(KC_X); break; - case SINGLE_HOLD: register_code(KC_LCTRL); break; - case DOUBLE_TAP: register_code(KC_ESC); break; - case DOUBLE_HOLD: register_code(KC_LALT); break; + case TD_SINGLE_TAP: register_code(KC_X); break; + case TD_SINGLE_HOLD: register_code(KC_LCTRL); break; + case TD_DOUBLE_TAP: register_code(KC_ESC); break; + case TD_DOUBLE_HOLD: register_code(KC_LALT); break; // 最後の case は高速入力用です。キーが `f` であると仮定します: // 例えば、`buffer` という単語を入力するとき、`Esc` ではなく `ff` を送信するようにします。 // 高速入力時に `ff` と入力するには、次の文字は `TAPPING_TERM` 以内に入力する必要があります。 // `TAPPING_TERM` はデフォルトでは 200ms です。 - case DOUBLE_SINGLE_TAP: tap_code(KC_X); register_code(KC_X); + case TD_DOUBLE_SINGLE_TAP: tap_code(KC_X); register_code(KC_X); } } void x_reset(qk_tap_dance_state_t *state, void *user_data) { switch (xtap_state.state) { - case SINGLE_TAP: unregister_code(KC_X); break; - case SINGLE_HOLD: unregister_code(KC_LCTRL); break; - case DOUBLE_TAP: unregister_code(KC_ESC); break; - case DOUBLE_HOLD: unregister_code(KC_LALT); - case DOUBLE_SINGLE_TAP: unregister_code(KC_X); + case TD_SINGLE_TAP: unregister_code(KC_X); break; + case TD_SINGLE_HOLD: unregister_code(KC_LCTRL); break; + case TD_DOUBLE_TAP: unregister_code(KC_ESC); break; + case TD_DOUBLE_HOLD: unregister_code(KC_LALT); + case TD_DOUBLE_SINGLE_TAP: unregister_code(KC_X); } - xtap_state.state = 0; + xtap_state.state = TD_NONE; } qk_tap_dance_action_t tap_dance_actions[] = { @@ -357,9 +359,11 @@ enum td_keycodes { // 必要な数のタップダンス状態を含むタイプを定義します typedef enum { - SINGLE_TAP, - SINGLE_HOLD, - DOUBLE_SINGLE_TAP + TD_NONE, + TD_UNKNOWN, + TD_SINGLE_TAP, + TD_SINGLE_HOLD, + TD_DOUBLE_SINGLE_TAP } td_state_t; // タップダンスの状態の型のグローバルインスタンスを作ります @@ -368,7 +372,7 @@ static td_state_t td_state; // タップダンス関数を宣言します: // 現在のタップダンスの状態を特定するための関数 -uint8_t cur_dance(qk_tap_dance_state_t *state); +td_state_t cur_dance(qk_tap_dance_state_t *state); // それぞれのタップダンスキーコードに適用する `finished` と `reset` 関数 void altlp_finished(qk_tap_dance_state_t *state, void *user_data); @@ -379,14 +383,14 @@ void altlp_reset(qk_tap_dance_state_t *state, void *user_data); ```c // 返却するタップダンス状態を特定します -uint8_t cur_dance(qk_tap_dance_state_t *state) { +td_state_t cur_dance(qk_tap_dance_state_t *state) { if (state->count == 1) { - if (state->interrupted || !state->pressed) return SINGLE_TAP; - else return SINGLE_HOLD; + if (state->interrupted || !state->pressed) return TD_SINGLE_TAP; + else return TD_SINGLE_HOLD; } - if (state->count == 2) return DOUBLE_SINGLE_TAP; - else return 3; // 上記で返却する最大の状態の値より大きい任意の数 + if (state->count == 2) return TD_DOUBLE_SINGLE_TAP; + else return TD_UNKNOWN; // 上記で返却する最大の状態の値より大きい任意の数 } // 定義する各タップダンスキーコードのとりうる状態を制御します: @@ -394,13 +398,13 @@ uint8_t cur_dance(qk_tap_dance_state_t *state) { void altlp_finished(qk_tap_dance_state_t *state, void *user_data) { td_state = cur_dance(state); switch (td_state) { - case SINGLE_TAP: + case TD_SINGLE_TAP: register_code16(KC_LPRN); break; - case SINGLE_HOLD: + case TD_SINGLE_HOLD: register_mods(MOD_BIT(KC_LALT)); // レイヤータップキーの場合、ここでは `layer_on(_MY_LAYER)` を使います break; - case DOUBLE_SINGLE_TAP: // タップ時間内に2つの括弧 `((` の入れ子を可能にします + case TD_DOUBLE_SINGLE_TAP: // タップ時間内に2つの括弧 `((` の入れ子を可能にします tap_code16(KC_LPRN); register_code16(KC_LPRN); } @@ -408,13 +412,13 @@ void altlp_finished(qk_tap_dance_state_t *state, void *user_data) { void altlp_reset(qk_tap_dance_state_t *state, void *user_data) { switch (td_state) { - case SINGLE_TAP: + case TD_SINGLE_TAP: unregister_code16(KC_LPRN); break; - case SINGLE_HOLD: + case TD_SINGLE_HOLD: unregister_mods(MOD_BIT(KC_LALT)); // レイヤータップキーの場合、ここでは `layer_off(_MY_LAYER)` を使います break; - case DOUBLE_SINGLE_TAP: + case TD_DOUBLE_SINGLE_TAP: unregister_code16(KC_LPRN); } } @@ -431,20 +435,22 @@ qk_tap_dance_action_t tap_dance_actions[] = { タップダンスは、MO(layer) と TG(layer) 機能を模倣することにも使用できます。この例では、1回タップすると `KC_QUOT` 、1回押してそのまま押し続けたら `MO(_MY_LAYER)` 、2回タップしたときは `TG(_MY_LAYER)` として機能するキーを設定します。 -最初のステップは、あなたの `keymap.c` ファイルの最初のあたりに以下のコードを追加します。 +最初のステップは、あなたの `keymap.c` ファイルの最初のあたりに以下のコードを追加することです。 ```c +// 必要な数のタップダンス状態のタイプを定義します +typedef enum { + TD_NONE, + TD_UNKNOWN, + TD_SINGLE_TAP, + TD_SINGLE_HOLD, + TD_DOUBLE_TAP +} td_state_t; + typedef struct { bool is_press_action; - uint8_t state; -} tap; - -// 必要な数のタップダンス状態のタイプを定義します -enum { - SINGLE_TAP = 1, - SINGLE_HOLD, - DOUBLE_TAP -}; + td_state_t state; +} td_tap_t; enum { QUOT_LAYR, // カスタムタップダンスキー。他のタップダンスキーはこの列挙型に追加します @@ -453,7 +459,7 @@ enum { // タップダンスキーで使われる関数を宣言します // 全てのタップダンスに関連する関数 -uint8_t cur_dance(qk_tap_dance_state_t *state); +td_state_t cur_dance(qk_tap_dance_state_t *state); // 個別のタップダンスに関連する関数 void ql_finished(qk_tap_dance_state_t *state, void *user_data); @@ -464,31 +470,31 @@ void ql_reset(qk_tap_dance_state_t *state, void *user_data); ```c // 現在のタップダンスの状態を決定します -uint8_t cur_dance(qk_tap_dance_state_t *state) { +td_state_t cur_dance(qk_tap_dance_state_t *state) { if (state->count == 1) { - if (!state->pressed) return SINGLE_TAP; - else return SINGLE_HOLD; - } else if (state->count == 2) return DOUBLE_TAP; - else return 8; + if (!state->pressed) return TD_SINGLE_TAP; + else return TD_SINGLE_HOLD; + } else if (state->count == 2) return TD_DOUBLE_TAP; + else return TD_UNKNOWN; } // この例のタップダンスキーに関連付けられた "tap" 構造体を初期化します -static tap ql_tap_state = { +static td_tap_t ql_tap_state = { .is_press_action = true, - .state = 0 + .state = TD_NONE }; // タップダンスキーの動作をコントロールする関数 void ql_finished(qk_tap_dance_state_t *state, void *user_data) { ql_tap_state.state = cur_dance(state); switch (ql_tap_state.state) { - case SINGLE_TAP: + case TD_SINGLE_TAP: tap_code(KC_QUOT); break; - case SINGLE_HOLD: + case TD_SINGLE_HOLD: layer_on(_MY_LAYER); break; - case DOUBLE_TAP: + case TD_DOUBLE_TAP: // レイヤーが既にセットされているか確認します if (layer_state_is(_MY_LAYER)) { // レイヤーが既にセットされていたら、オフにします。 @@ -503,10 +509,10 @@ void ql_finished(qk_tap_dance_state_t *state, void *user_data) { void ql_reset(qk_tap_dance_state_t *state, void *user_data) { // キーを押し続けていて今離したら、レイヤーをオフに切り替えます。 - if (ql_tap_state.state == SINGLE_HOLD) { + if (ql_tap_state.state == TD_SINGLE_HOLD) { layer_off(_MY_LAYER); } - ql_tap_state.state = 0; + ql_tap_state.state = TD_NONE; } // タップダンスキーを機能に関連付けます @@ -519,7 +525,7 @@ qk_tap_dance_action_t tap_dance_actions[] = { `cur_dance()` と `ql_tap_state` の使い方は、上の例と似ています。 -`ql_finished` 関数における `case:SINGLE_TAP` は、上の例と似ています。`SINGLE_HOLD` の case では、`ql_reset()` と連動してタップダンスキーを押している間 `_MY_LAYER` に切り替わり、キーを離した時に `_MY_LAYER` から離れます。これは、`MO(_MY_LAYER)` に似ています。`DOUBLE_TAP` の case では、`_MY_LAYER` がアクティブレイヤーかどうかを確認することによって動きます。そして、その結果に基づいてレイヤーのオン・オフをトグルします。これは `TG(_MY_LAYER)` に似ています。 +`ql_finished` 関数における `case: TD_SINGLE_TAP` は、上の例と似ています。`TD_SINGLE_HOLD` の case では、`ql_reset()` と連動してタップダンスキーを押している間 `_MY_LAYER` に切り替わり、キーを離した時に `_MY_LAYER` から離れます。これは、`MO(_MY_LAYER)` に似ています。`TD_DOUBLE_TAP` の case では、`_MY_LAYER` がアクティブレイヤーかどうかを確認することによって動きます。そして、その結果に基づいてレイヤーのオン・オフをトグルします。これは `TG(_MY_LAYER)` に似ています。 `tap_dance_actions[]` は、上の例に似ています。 `ACTION_TAP_DANCE_FN_ADVANCED()` の代わりに `ACTION_TAP_DANCE_FN_ADVANCED_TIME()` を使ったことに注意してください。 この理由は、私は、非タップダンスキーを使うにあたり `TAPPING_TERM` が短い(175ミリ秒以内)方が好きなのですが、タップダンスのアクションを確実に完了させるには短すぎるとわかったからです——そのため、ここでは時間を275ミリ秒に増やしています。 diff --git a/docs/ja/feature_userspace.md b/docs/ja/feature_userspace.md index b0c113d1cf2f..ef7f5283c547 100644 --- a/docs/ja/feature_userspace.md +++ b/docs/ja/feature_userspace.md @@ -1,8 +1,8 @@ # ユーザスペース: キーマップ間でのコードの共有 似たキーマップを複数のキーボードで使う場合、それらの間でコードを共有できるという利点が得られることがあります。`users/`に以下の構造でキーマップ(理想的には GitHub のユーザ名、``)と同じ名前の独自のフォルダを作成します: diff --git a/docs/ja/feature_velocikey.md b/docs/ja/feature_velocikey.md index f9b6e73bd481..b13969a195e7 100644 --- a/docs/ja/feature_velocikey.md +++ b/docs/ja/feature_velocikey.md @@ -11,7 +11,6 @@ Velocikey は入力の速度を使って(レインボー渦巻効果のような Velocikey を使うためには、2つのステップがあります。最初に、キーボードをコンパイルする時に、`rules.mk` に `VELOCIKEY_ENABLE=yes` を設定する必要があります。例えば: ``` -BOOTMAGIC_ENABLE = no MOUSEKEY_ENABLE = no STENO_ENABLE = no EXTRAKEY_ENABLE = yes diff --git a/docs/ja/getting_started_github.md b/docs/ja/getting_started_github.md index 6d9b70c410bc..640701148869 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/getting_started_vagrant.md b/docs/ja/getting_started_vagrant.md index 4506bb1fafa4..0888b7f31170 100644 --- a/docs/ja/getting_started_vagrant.md +++ b/docs/ja/getting_started_vagrant.md @@ -29,7 +29,7 @@ Vagrant 以外に、適切なプロバイダがインストールされ、その コマンドラインでプログラムしたい場合は、Vagranfile の ['modifyvm'] 行のコメントを解除して Linux への USB パススルーを有効にし、dfu-util/dfu-programmer のようなコマンドラインツールを使ってプログラムすることができます。あるいは Teensy CLI バージョンをインストールすることができます。 ## Vagrantfile の概要 -開発環境は QMK Docker イメージ、`qmkfm/base_container` を実行するように設定されています。これはシステム間の予測可能性が保証されるだけでなく、CI 環境もミラーされます。 +開発環境は QMK Docker イメージ、`qmkfm/qmk_cli` を実行するように設定されています。これはシステム間の予測可能性が保証されるだけでなく、CI 環境もミラーされます。 ## FAQ diff --git a/docs/ja/hardware_avr.md b/docs/ja/hardware_avr.md index 66be2f71c9a1..cdc5f8cb8662 100644 --- a/docs/ja/hardware_avr.md +++ b/docs/ja/hardware_avr.md @@ -12,26 +12,28 @@ ## AVR を使用したキーボードを QMK に追加する -QMK には AVR を使ったキーボードでの作業を簡略化するための機能が多数あります。大体のキーボードでは1行もコードを書く必要がありません。まずはじめに、`util/new_keyboard.sh` スクリプトを実行します。 +QMK には AVR を使ったキーボードでの作業を簡略化するための機能が多数あります。大体のキーボードでは1行もコードを書く必要がありません。まずはじめに、`qmk new-keyboard` を実行します。 ``` -$ ./util/new_keyboard.sh -Generating a new QMK keyboard directory - -Keyboard Name: mycoolkb -Keyboard Type [avr]: -Your Name [John Smith]: - -Copying base template files... done -Copying avr template files... done -Renaming keyboard files... done -Replacing %KEYBOARD% with mycoolkb... done -Replacing %YOUR_NAME% with John Smith... done - -Created a new keyboard called mycoolkb. - -To start working on things, cd into keyboards/mycoolkb, -or open the directory in your favourite text editor. +$ qmk new-keyboard +Ψ Generating a new QMK keyboard directory + +Keyboard Name: mycoolkeeb +Keyboard Type: + 1. avr + 2. ps2avrgb +Please enter your choice: [1] +Your Name: [John Smith] +Ψ Copying base template files... +Ψ Copying avr template files... +Ψ Renaming keyboard.[ch] to mycoolkeeb.[ch]... +Ψ Replacing %YEAR% with 2021... +Ψ Replacing %KEYBOARD% with mycoolkeeb... +Ψ Replacing %YOUR_NAME% with John Smith... + +Ψ Created a new keyboard called mycoolkeeb. +Ψ To start working on things, `cd` into keyboards/mycoolkeeb, +Ψ or open the directory in your preferred text editor. ``` これにより、新しいキーボードをサポートするために必要なすべてのファイルが作成され、デフォルト値で設定が入力されます。あとはあなたのキーボード用にカスタマイズするだけです。 diff --git a/docs/ja/hardware_drivers.md b/docs/ja/hardware_drivers.md index f77b48ba8e6f..e0061cb32802 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 8a9127abc916..c0e7c18be091 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/how_a_matrix_works.md b/docs/ja/how_a_matrix_works.md index 9a9242cf957e..e5dfc9f07d8a 100644 --- a/docs/ja/how_a_matrix_works.md +++ b/docs/ja/how_a_matrix_works.md @@ -1,8 +1,8 @@ # キーボードマトリックスの仕組み キーボードスイッチのマトリックスは行と列に配置されます。マトリックス回路がなければ、各スイッチはコントローラに直接配線する必要があります。 diff --git a/docs/ja/i2c_driver.md b/docs/ja/i2c_driver.md index 9d348d58033d..1d8f70e1636e 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/internals_gpio_control.md b/docs/ja/internals_gpio_control.md index 9685f3ce7295..60c5367870aa 100644 --- a/docs/ja/internals_gpio_control.md +++ b/docs/ja/internals_gpio_control.md @@ -1,8 +1,8 @@ # GPIO 制御 :id=gpio-control QMK には、マイクロコントローラに依存しない GPIO 制御抽象レイヤーがあります。これは異なるプラットフォーム間でピン制御に簡単にアクセスできるようにするためのものです。 @@ -26,3 +26,22 @@ QMK には、マイクロコントローラに依存しない GPIO 制御抽象 ## 高度な設定 :id=advanced-settings 各マイクロコントローラは GPIO に関して複数の高度な設定を持つことができます。この抽象レイヤーは、アーキテクチャー固有の機能の使用法を制限しません。上級ユーザは、目的のデバイスのデータシートを参照し、必要なライブラリを含めてください。AVR については、標準 avr/io.h ライブラリが使われます; STM32 については ChibiOS [PAL ライブラリ](https://chibios.sourceforge.net/docs3/hal/group___p_a_l.html)が使われます。 + +## アトミック操作 :id=atomic-operation + +上記の関数は、必ずしもアトミックに動作することが保証されているわけではありません。そのため、上記の関数を複数組み合わせて使用する際に、操作の途中での割り込みを防ぎたい場合は、以下の `ATOMIC_BLOCK_FORCEON` マクロを使用してください。 + +例: +```c +void some_function() { + // 通常の処理 + ATOMIC_BLOCK_FORCEON { + // アトミックであることが必要な処理 + } + // 通常の処理 +} +``` + +`ATOMIC_BLOCK_FORCEON` は、ブロックが実行される前に、割り込みが有効か無効かに関わらず、強制的に割り込みを無効にします。そして、ブロックが実行された後に、割り込みを有効にします。 + +したがって、`ATOMIC_BLOCK_FORCEON`は、ブロックの実行前に割り込みが有効になっていることがわかっている場合や、ブロックの完了時に割り込みを有効にしても問題ないことがわかっている場合のみ使用できることに注意してください。 diff --git a/docs/ja/isp_flashing_guide.md b/docs/ja/isp_flashing_guide.md index 6a6066b24b46..d629b964b2db 100644 --- a/docs/ja/isp_flashing_guide.md +++ b/docs/ja/isp_flashing_guide.md @@ -2,8 +2,8 @@ ISP 書き込み(ICSP 書き込みと呼ぶ場合もあります)とは、マイクロコントローラーを直接プログラミングするプロセスです。 @@ -52,6 +52,7 @@ QMK の ISP 書き込みの主な用途は、AVRベースのコントローラ * [SparkFun PocketAVR](https://www.sparkfun.com/products/9825) - (USB Tiny) * [USBtinyISP AVR Programmer Kit](https://www.adafruit.com/product/46) - (USB Tiny) +* [USBasp](https://www.fischl.de/usbasp/) - (usbasp) * [Teensy 2.0](https://www.pjrc.com/store/teensy.html) - (avrisp) * [Pro Micro](https://www.sparkfun.com/products/12640) - (avrisp) * [Bus Pirate](https://www.adafruit.com/product/237) - (buspirate) @@ -77,8 +78,8 @@ Teensy と Pro Micro のコントローラを ISP プログラマとして使用 QMK ツールボックスは、このほとんど(すべて)に使用することができます。 -ただし、Teensy 2.0 ボードを使っている場合は、[Teensy Loader](https:/www.pjrc.comteensyloader.html) を使えば、Teensy 2.0 ボードに書き込むことができます。 -あるいは、`avrdude` (`qmk_install.sh` の一部としてインストールされています) や、[AVRDUDESS](https:/blog.zakkemble.netavrdudess-a-gui-for-avrdude)(Windows 用) を使って、Pro Micro に書き込んだり、ISP を書き込んだりすることができます。 +ただし、Teensy 2.0 ボードを使っている場合は、[Teensy Loader](https://www.pjrc.com/teensy/loader.html) を使えば、Teensy 2.0 ボードに書き込むことができます。 +あるいは、`avrdude` (`qmk_install.sh` の一部としてインストールされています) や、[AVRDUDESS](https://blog.zakkemble.net/avrdudess-a-gui-for-avrdude/) (Windows 用) を使って、Pro Micro に書き込んだり、ISP を書き込んだりすることができます。 ## 配線 @@ -93,6 +94,15 @@ QMK ツールボックスは、このほとんど(すべて)に使用する PocketAVR VCC <-> Keyboard VCC PocketAVR GND <-> Keyboard GND +### USBasp + + USBasp RST <-> Keyboard RESET + USBasp SCLK <-> Keyboard B1 (SCLK) + USBasp MOSI <-> Keyboard B2 (MOSI) + USBasp MISO <-> Keyboard B3 (MISO) + USBasp VCC <-> Keyboard VCC + USBasp GND <-> Keyboard GND + ### Teensy 2.0 Teensy B0 <-> Keyboard RESET @@ -180,7 +190,7 @@ QMK DFU ブートローダは `atmega32u4` コントローラ (AVR ベースの ### QMK Toolbox -1. 'AVRISP device connected' または `USB Tiny device connected` が黄色で表示されます。 +1. `AVRISP device connected` または `USB Tiny device connected` が黄色で表示されます。 2. `Open` ダイアログで正しいブートローダー/プロダクションの .hex ファイルを選択します(パスにスペースを含めることはできません) 3. 書きこもうとしているキーボード(ISP プログラマではなく)のための正しい `Microcontroller` オプションが選択されていることを確認してください。 4. `Flash` を押します @@ -277,7 +287,7 @@ High ヒューズは 0xD9 か 0x99 のどちらかになります。 avrdude -c avrisp -P COM3 -p atmega32u4 -U flash:w:main.hex:i -U lfuse:w:0xFF:m -U hfuse:w:0xD8:m -U efuse:w:0xCB:m -別のコントローラーを使用している場合や、別の設定を希望する場合は、この[AVR ヒューズ計算機](https://www.engbedded.com/fusecalc)を使用して、より適切な値を見つけることができます。 +別のコントローラーを使用している場合や、別の設定を希望する場合は、この[AVR ヒューズ計算機](https://www.engbedded.com/fusecalc/)を使用して、より適切な値を見つけることができます。 ## ヘルプ diff --git a/docs/ja/ja_doc_status.sh b/docs/ja/ja_doc_status.sh new file mode 100644 index 000000000000..3dfbbd2bc6f6 --- /dev/null +++ b/docs/ja/ja_doc_status.sh @@ -0,0 +1,34 @@ +#! /bin/sh +# +# Script to display the Japanese translation status of documents +# +if [ ! -d docs/ja ]; then + echo "'docs/ja' not found." + echo "do:" + echo " cd \$(QMK_TOP)" + echo " ./docs/ja/ja_doc_status.sh" + exit 1 +fi + +en_docs=`cd docs;ls -1 [a-z]*.md` +ja_docs=`cd docs/ja;ls -1 [a-z]*.md` +en_count=`echo $en_docs | wc -w` +ja_count=`echo $ja_docs | wc -w` +echo "English documents $en_count files." +echo "Japanese documents $ja_count files." + +echo "Files that have not been translated yet:" +for docfile in $en_docs +do + if [ ! -f docs/ja/$docfile ]; then + wc docs/$docfile + fi +done | sort +echo "Files that have not been updated yet:" +grep --no-filename "^[ ]*git diff" docs/ja/*.md | while read cmd +do + cline=`echo $cmd | sh | wc -l` + if [ $cline -gt 0 ]; then + echo "$cline $cmd" + fi +done | sort diff --git a/docs/ja/keycodes_basic.md b/docs/ja/keycodes_basic.md new file mode 100644 index 000000000000..0b2ca8847e31 --- /dev/null +++ b/docs/ja/keycodes_basic.md @@ -0,0 +1,261 @@ +# 基本的なキーコード + + + +基本的なキーコードのセットは、`KC_NO`、`KC_TRNS` と `0xA5-DF` の範囲のキーコードを除いて、[HID Keyboard/Keypad Usage Page (0x07)](https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf) に基づいています。 + +## 文字と数字 + +|キー |説明 | +|------|----------| +|`KC_A`|`a` と `A`| +|`KC_B`|`b` と `B`| +|`KC_C`|`c` と `C`| +|`KC_D`|`d` と `D`| +|`KC_E`|`e` と `E`| +|`KC_F`|`f` と `F`| +|`KC_G`|`g` と `G`| +|`KC_H`|`h` と `H`| +|`KC_I`|`i` と `I`| +|`KC_J`|`j` と `J`| +|`KC_K`|`k` と `K`| +|`KC_L`|`l` と `L`| +|`KC_M`|`m` と `M`| +|`KC_N`|`n` と `N`| +|`KC_O`|`o` と `O`| +|`KC_P`|`p` と `P`| +|`KC_Q`|`q` と `Q`| +|`KC_R`|`r` と `R`| +|`KC_S`|`s` と `S`| +|`KC_T`|`t` と `T`| +|`KC_U`|`u` と `U`| +|`KC_V`|`v` と `V`| +|`KC_W`|`w` と `W`| +|`KC_X`|`x` と `X`| +|`KC_Y`|`y` と `Y`| +|`KC_Z`|`z` と `Z`| +|`KC_1`|`1` と `!`| +|`KC_2`|`2` と `@`| +|`KC_3`|`3` と `#`| +|`KC_4`|`4` と `$`| +|`KC_5`|`5` と `%`| +|`KC_6`|`6` と `^`| +|`KC_7`|`7` と `&`| +|`KC_8`|`8` と `*`| +|`KC_9`|`9` と `(`| +|`KC_0`|`0` と `)`| + +## ファンクションキー + +|キー |説明 | +|--------|-----| +|`KC_F1` |F1 | +|`KC_F2` |F2 | +|`KC_F3` |F3 | +|`KC_F4` |F4 | +|`KC_F5` |F5 | +|`KC_F6` |F6 | +|`KC_F7` |F7 | +|`KC_F8` |F8 | +|`KC_F9` |F9 | +|`KC_F10`|F10 | +|`KC_F11`|F11 | +|`KC_F12`|F12 | +|`KC_F13`|F13 | +|`KC_F14`|F14 | +|`KC_F15`|F15 | +|`KC_F16`|F16 | +|`KC_F17`|F17 | +|`KC_F18`|F18 | +|`KC_F19`|F19 | +|`KC_F20`|F20 | +|`KC_F21`|F21 | +|`KC_F22`|F22 | +|`KC_F23`|F23 | +|`KC_F24`|F24 | + +## パンクチュエーション + +|キー |エイリアス |説明 | +|-----------------|-------------------|----------------------------------------------| +|`KC_ENTER` |`KC_ENT` |Return (Enter) | +|`KC_ESCAPE` |`KC_ESC` |Escape | +|`KC_BSPACE` |`KC_BSPC` |Delete (Backspace) | +|`KC_TAB` | |Tab | +|`KC_SPACE` |`KC_SPC` |Spacebar | +|`KC_MINUS` |`KC_MINS` |`-` と `_` | +|`KC_EQUAL` |`KC_EQL` |`=` と `+` | +|`KC_LBRACKET` |`KC_LBRC` |`[` と `{` | +|`KC_RBRACKET` |`KC_RBRC` |`]` と `}` | +|`KC_BSLASH` |`KC_BSLS` |`\` と `\|` | +|`KC_NONUS_HASH` |`KC_NUHS` |Non-US `#` と `~` | +|`KC_SCOLON` |`KC_SCLN` |`;` と `:` | +|`KC_QUOTE` |`KC_QUOT` |`'` と `"` | +|`KC_GRAVE` |`KC_GRV`, `KC_ZKHK`|` と `~`, JIS 全角/半角 | +|`KC_COMMA` |`KC_COMM` |`,` と `<` | +|`KC_DOT` | |`.` と `>` | +|`KC_SLASH` |`KC_SLSH` |`/` と `?` | +|`KC_NONUS_BSLASH`|`KC_NUBS` |Non-US `\` と `\|` | + +## ロックキー + +|キー |エイリアス |説明 | +|-------------------|--------------------|---------------------------------------| +|`KC_CAPSLOCK` |`KC_CLCK`, `KC_CAPS`|Caps Lock | +|`KC_SCROLLLOCK` |`KC_SLCK`, `KC_BRMD`|Scroll Lock, 画面の明るさダウン (macOS)| +|`KC_NUMLOCK` |`KC_NLCK` |テンキー Num Lock と Clear | +|`KC_LOCKING_CAPS` |`KC_LCAP` |Caps Lock のロック | +|`KC_LOCKING_NUM` |`KC_LNUM` |Num Lock のロック | +|`KC_LOCKING_SCROLL`|`KC_LSCR` |Scroll Lock のロック | + +## 修飾キー + +|キー |エイリアス |説明 | +|-----------|--------------------|---------------------------------| +|`KC_LCTRL` |`KC_LCTL` |左 Control | +|`KC_LSHIFT`|`KC_LSFT` |左 Shift | +|`KC_LALT` |`KC_LOPT` |左 Alt (Option) | +|`KC_LGUI` |`KC_LCMD`, `KC_LWIN`|左 GUI (Windows/Command/Meta キー)| +|`KC_RCTRL` |`KC_RCTL` |右 Control | +|`KC_RSHIFT`|`KC_RSFT` |右 Shift | +|`KC_RALT` |`KC_ROPT`, `KC_ALGR`|右 Alt (Option/AltGr) | +|`KC_RGUI` |`KC_RCMD`, `KC_RWIN`|右 GUI (Windows/Command/Meta キー)| + +## 国際化対応キー + +|キー |エイリアス|説明 | +|----------|----------|---------------------| +|`KC_INT1` |`KC_RO` |JIS `\` と ` _` | +|`KC_INT2` |`KC_KANA` |JIS カタカナ/ひらがな| +|`KC_INT3` |`KC_JYEN` |JIS `¥` と `\ |` | +|`KC_INT4` |`KC_HENK` |JIS 変換 | +|`KC_INT5` |`KC_MHEN` |JIS 無変換 | +|`KC_INT6` | |JIS テンキー `,` | +|`KC_INT7` | |International 7 | +|`KC_INT8` | |International 8 | +|`KC_INT9` | |International 9 | +|`KC_LANG1`|`KC_HAEN` |ハングル/英語 | +|`KC_LANG2`|`KC_HANJ` |韓文漢字 | +|`KC_LANG3`| |JIS カタカナ | +|`KC_LANG4`| |JIS ひらがな | +|`KC_LANG5`| |JIS 全角/半角 | +|`KC_LANG6`| |Language 6 | +|`KC_LANG7`| |Language 7 | +|`KC_LANG8`| |Language 8 | +|`KC_LANG9`| |Language 9 | + +## コマンドキー + +|キー |エイリアス |説明 | +|------------------|------------------------------|-------------------------------------------------------| +|`KC_PSCREEN` |`KC_PSCR` |Print Screen | +|`KC_PAUSE` |`KC_PAUS`, `KC_BRK`, `KC_BRMU`|Pause, 画面の明るさアップ (macOS) | +|`KC_INSERT` |`KC_INS` |Insert | +|`KC_HOME` | |Home | +|`KC_PGUP` | |Page Up | +|`KC_DELETE` |`KC_DEL` |Forward Delete | +|`KC_END` | |End | +|`KC_PGDOWN` |`KC_PGDN` |Page Down | +|`KC_RIGHT` |`KC_RGHT` |右矢印 | +|`KC_LEFT` | |左矢印 | +|`KC_DOWN` | |下矢印 | +|`KC_UP` | |上矢印 | +|`KC_APPLICATION` |`KC_APP` |アプリケーションキー (Windows コンテキストメニューキー)| +|`KC_POWER` | |システム電源 | +|`KC_EXECUTE` |`KC_EXEC` |Execute | +|`KC_HELP` | |Help | +|`KC_MENU` | |Menu | +|`KC_SELECT` |`KC_SLCT` |Select | +|`KC_STOP` | |Stop | +|`KC_AGAIN` |`KC_AGIN` |Again | +|`KC_UNDO` | |アンドゥ | +|`KC_CUT` | |カット | +|`KC_COPY` | |コピー | +|`KC_PASTE` |`KC_PSTE` |ペースト | +|`KC_FIND` | |検索 | +|`KC__MUTE` | |ミュート | +|`KC__VOLUP` | |音量アップ | +|`KC__VOLDOWN` | |音量ダウン | +|`KC_ALT_ERASE` |`KC_ERAS` |Alternate Erase | +|`KC_SYSREQ` | |SysReq/Attention | +|`KC_CANCEL` | |Cancel | +|`KC_CLEAR` |`KC_CLR` |Clear | +|`KC_PRIOR` | |Prior | +|`KC_RETURN` | |Return | +|`KC_SEPARATOR` | |Separator | +|`KC_OUT` | |Out | +|`KC_OPER` | |Oper | +|`KC_CLEAR_AGAIN` | |Clear/Again | +|`KC_CRSEL` | |CrSel/Props | +|`KC_EXSEL` | |ExSel | + +## メディアキー + +これらのキーコードは、HID Keyboard/Keypad usage ページにはありません。`SYSTEM_` キーコードは、Generic Desktop ページで見つかります。また、その他は Consumer ページにあります。 + +?> これらのキーコードのいくつかは、OS によって異なる動作をする可能性があります。例として、macOS では `KC_MEDIA_FAST_FORWARD`、`KC_MEDIA_REWIND`、`KC_MEDIA_NEXT_TRACK`、`KC_MEDIA_PREV_TRACK` は、押している間は現在の曲の中でスキップしますが、タップした時は曲全体をスキップします。 + +|キー |エイリアス |説明 | +|-----------------------|-----------|----------------------| +|`KC_SYSTEM_POWER` |`KC_PWR` |システム電源オフ | +|`KC_SYSTEM_SLEEP` |`KC_SLEP` |システムスリープ | +|`KC_SYSTEM_WAKE` |`KC_WAKE` |システムスリープ解除 | +|`KC_AUDIO_MUTE` |`KC_MUTE` |ミュート | +|`KC_AUDIO_VOL_UP` |`KC_VOLU` |音量アップ | +|`KC_AUDIO_VOL_DOWN` |`KC_VOLD` |音量ダウン | +|`KC_MEDIA_NEXT_TRACK` |`KC_MNXT` |次の曲へ | +|`KC_MEDIA_PREV_TRACK` |`KC_MPRV` |前の曲へ | +|`KC_MEDIA_STOP` |`KC_MSTP` |再生停止 | +|`KC_MEDIA_PLAY_PAUSE` |`KC_MPLY` |再生/一時停止 | +|`KC_MEDIA_SELECT` |`KC_MSEL` |Media Player 起動 | +|`KC_MEDIA_EJECT` |`KC_EJCT` |イジェクト | +|`KC_MAIL` | |メール起動 | +|`KC_CALCULATOR` |`KC_CALC` |電卓起動 | +|`KC_MY_COMPUTER` |`KC_MYCM` |マイコンピュータを開く| +|`KC_WWW_SEARCH` |`KC_WSCH` |ブラウザ検索 | +|`KC_WWW_HOME` |`KC_WHOM` |ブラウザホーム画面 | +|`KC_WWW_BACK` |`KC_WBAK` |ブラウザ戻る | +|`KC_WWW_FORWARD` |`KC_WFWD` |ブラウザ進む | +|`KC_WWW_STOP` |`KC_WSTP` |ブラウザ読み込み中止 | +|`KC_WWW_REFRESH` |`KC_WREF` |ブラウザ再読み込み | +|`KC_WWW_FAVORITES` |`KC_WFAV` |ブラウザお気に入り | +|`KC_MEDIA_FAST_FORWARD`|`KC_MFFD` |次の曲へ | +|`KC_MEDIA_REWIND` |`KC_MRWD` |前の曲へ | +|`KC_BRIGHTNESS_UP` |`KC_BRIU` |画面の明るさアップ | +|`KC_BRIGHTNESS_DOWN` |`KC_BRID` |画面の明るさダウン | + +## テンキー + +|キー |エイリアス |説明 | +|-------------------|-----------|-------------------------------| +|`KC_KP_SLASH` |`KC_PSLS` |テンキー `/` | +|`KC_KP_ASTERISK` |`KC_PAST` |テンキー `*` | +|`KC_KP_MINUS` |`KC_PMNS` |テンキー `-` | +|`KC_KP_PLUS` |`KC_PPLS` |テンキー `+` | +|`KC_KP_ENTER` |`KC_PENT` |テンキー Enter | +|`KC_KP_1` |`KC_P1` |テンキー `1` と End | +|`KC_KP_2` |`KC_P2` |テンキー `2` と 下矢印 | +|`KC_KP_3` |`KC_P3` |テンキー `3` と Page Down | +|`KC_KP_4` |`KC_P4` |テンキー `4` と 左矢印 | +|`KC_KP_5` |`KC_P5` |テンキー `5` | +|`KC_KP_6` |`KC_P6` |テンキー `6` と 右矢印 | +|`KC_KP_7` |`KC_P7` |テンキー `7` と Home | +|`KC_KP_8` |`KC_P8` |テンキー `8` と 上矢印 | +|`KC_KP_9` |`KC_P9` |テンキー `9` と Page Up | +|`KC_KP_0` |`KC_P0` |テンキー `0` と Insert | +|`KC_KP_DOT` |`KC_PDOT` |テンキー `.` と Delete | +|`KC_KP_EQUAL` |`KC_PEQL` |テンキー `=` | +|`KC_KP_COMMA` |`KC_PCMM` |テンキー `,` | +|`KC_KP_EQUAL_AS400`| |AS/400 キーボードのテンキー `=`| + +## 特別なキー + +これらのキーコードに加えて、`0xA5-DF` の範囲のキーコードは、内部処理のために予約されています。 + +|キー |エイリアス |説明 | +|----------------|--------------------|-----------------------------------| +|`KC_NO` |`XXXXXXX` |このキーを無視します (NOOP) | +|`KC_TRANSPARENT`|`KC_TRNS`, `_______`|次に低いレイヤーの非透過キーを使う | diff --git a/docs/ja/keycodes_us_ansi_shifted.md b/docs/ja/keycodes_us_ansi_shifted.md new file mode 100644 index 000000000000..3a574d0bed5c --- /dev/null +++ b/docs/ja/keycodes_us_ansi_shifted.md @@ -0,0 +1,41 @@ +# US ANSI シフト記号 + + +これらのキーコードは、標準の US ANSI 配列のキーボードで「シフトされる」文字に対応します。これらのキーコードは自身のキーコードを持たず、`LSFT(kc)` の単なるショートカットであり、記号自体ではなく Shift キー抜きのキーコードと左 Shift キーを送信します。 + +## 注意書き + +残念ながら、これらのキーコードは、モッドタップやレイヤータップの中で使えません。キーコードで指定されたモディファイアは無視されるからです。 + +さらに、Windows でリモートデスクトップ接続を使う場合に、問題が発生する場合があります。なぜならば、これらのコードは Shift キーを非常に速く送信するため、リモートデスクトップがコードを見落とすかもしれないからです。 + +この問題を解決するには、リモートデスクトップ接続を開いて「オプションの表示」をクリックし、「ローカル リソース」タブを開きます。キーボードセクションでドロップダウンを「このコンピュータ」に変更します。これで問題が解決され、文字が正しく機能するようになります。 + +## キーコード + +|キー |エイリアス |説明 | +|------------------------|-------------------|-----------| +|`KC_TILDE` |`KC_TILD` |`~` | +|`KC_EXCLAIM` |`KC_EXLM` |`!` | +|`KC_AT` | |`@` | +|`KC_HASH` | |`#` | +|`KC_DOLLAR` |`KC_DLR` |`$` | +|`KC_PERCENT` |`KC_PERC` |`%` | +|`KC_CIRCUMFLEX` |`KC_CIRC` |`^` | +|`KC_AMPERSAND` |`KC_AMPR` |`&` | +|`KC_ASTERISK` |`KC_ASTR` |`*` | +|`KC_LEFT_PAREN` |`KC_LPRN` |`(` | +|`KC_RIGHT_PAREN` |`KC_RPRN` |`)` | +|`KC_UNDERSCORE` |`KC_UNDS` |`_` | +|`KC_PLUS` | |`+` | +|`KC_LEFT_CURLY_BRACE` |`KC_LCBR` |`{` | +|`KC_RIGHT_CURLY_BRACE` |`KC_RCBR` |`}` | +|`KC_PIPE` | |`\|` | +|`KC_COLON` |`KC_COLN` |`:` | +|`KC_DOUBLE_QUOTE` |`KC_DQUO`, `KC_DQT`|`"` | +|`KC_LEFT_ANGLE_BRACKET` |`KC_LABK`, `KC_LT` |`<` | +|`KC_RIGHT_ANGLE_BRACKET`|`KC_RABK`, `KC_GT` |`>` | +|`KC_QUESTION` |`KC_QUES` |`?` | diff --git a/docs/ja/mod_tap.md b/docs/ja/mod_tap.md index 371870abd6fe..1d96ed1ee865 100644 --- a/docs/ja/mod_tap.md +++ b/docs/ja/mod_tap.md @@ -1,8 +1,8 @@ # モッドタップ モッドタップキー `MT(mod, kc)` は、押したままの時にモディファイアのように機能し、タップされた時に通常のキーのように振舞います。別の言い方をすると、タップした時に Escape を送信しますが、押したままの時に Control あるいは Shift キーとして機能するキーを持つことができます。 @@ -42,7 +42,10 @@ MT(MOD_LCTL | MOD_LSFT, KC_ESC) | `RSFT_T(kc)` | | 押したままの場合は右 Shift、タップした場合は `kc` | | `RALT_T(kc)` | `ROPT_T(kc)`, `ALGR_T(kc)` | 押したままの場合は右 Alt、タップした場合は `kc` | | `RGUI_T(kc)` | `RCMD_T(kc)`, `RWIN_T(kc)` | 押したままの場合は右 GUI、タップした場合は `kc` | -| `SGUI_T(kc)` | `SCMD_T(kc)`, `SWIN_T(kc)` | 押したままの場合は左 Shift と左 GUI、タップした場合は `kc` | +| `LSG_T(kc)` | `SGUI_T(kc)`, `SCMD_T(kc)`, `SWIN_T(kc)` | 押したままの場合は左 Shift と左 GUI、タップした場合は `kc` | +| `LAG_T(kc)` | | 押したままの場合は左 Alt と左 GUI、タップした場合は `kc` | +| `RSG_T(kc)` | | 押したままの場合は右 Shift と右 GUI、タップした場合は `kc` | +| `RAG_T(kc)` | | 押したままの場合は右 Alt と右 GUI、タップした場合は `kc` | | `LCA_T(kc)` | | 押したままの場合は左 Control と左 Alt、タップした場合は `kc` | | `LSA_T(kc)` | | 押したままの場合は左 Shift と Alt、タップした場合は `kc` | | `RSA_T(kc)` | `SAGR_T(kc)` | 押したままの場合は右 Shift と Alt (AltGr)、タップした場合は `kc` | @@ -55,11 +58,13 @@ MT(MOD_LCTL | MOD_LSFT, KC_ESC) ## 注意事項 -残念ながら、キーコードで指定されたモディファイアは無視されるため、これらのキーコードはモッドタップまたはレイヤータップで使うことができません。 +現在のところ、`MT()` の引数 `kc` は[基本的なキーコードセット](ja/keycodes_basic.md)に制限されています。つまり、`LCTL()`、`KC_TILD`、あるいは `0xFF` より大きなキーコードを使うことができません。これは、QMK が16ビットのキーコードを使うためです。3ビットは機能の識別のために使われ、1ビットは右または左の mod を選択するために使われ、4ビットはどの mod かを区別するために使われ、キーコードには8ビットしか残されていません。さらに、モッドタップで少なくとも1つの右手用のモディファイアが指定された場合、指定された全てのモディファイアが右手用になるため、2つをうまく組み合わせて一致させることはできません。例えば、左 Control と右 Shift は、右 Control と右 Shift になります。 -さらに、Windows でリモートデスクトップ接続を使う場合に、問題が発生する場合があります。これらのコードはシフトを非常に高速に送信するため、リモートデスクトップはコードを見逃すかもしれません。 +これを拡張してもせいぜい複雑になるだけでしょう。32ビットキーコードに移行すると、これの多くが解決されますが、キーマップマトリックスが使用する領域が2倍になります。また、問題が起きる可能性もあります。タップしたキーコードにモディファイアを適用する必要がある場合は、[タップダンス](ja/feature_tap_dance.md#example-5)を使うことができます。 -これを修正するには、リモートデスクトップ接続を開き、「オプションの表示」を開き、「ローカル リソース」タブを開きます。キーボードセクションで、ドロップダウンを「このコンピューター」に変更します。これにより問題が修正され、キャラクタが正しく動作するようになります。 +さらに、Windows でリモートデスクトップ接続を使う場合に、問題が発生する場合があります。なぜならば、これらのキーコードは人よりも速くキーイベントを送信するため、リモートデスクトップがキーコードを見落とすかもしれないからです。 +この問題を解決するには、リモートデスクトップ接続を開いて「オプションの表示」をクリックし、「ローカル リソース」タブを開きます。キーボードセクションで、ドロップダウンを「このコンピューター」に変更します。これで問題が解決され、文字が正しく機能するようになります。 +[`TAP_CODE_DELAY`](ja/config_options.md#behaviors-that-can-be-configured) を増やすことで緩和することもできます。 ## 他のリソース diff --git a/docs/ja/newbs_getting_started.md b/docs/ja/newbs_getting_started.md index b5a725bc7e6f..ece64e8d8b22 100644 --- a/docs/ja/newbs_getting_started.md +++ b/docs/ja/newbs_getting_started.md @@ -2,8 +2,8 @@ キーマップをビルドする前に、いくつかのソフトウェアをインストールしてビルド環境を構築する必要があります。 @@ -57,9 +57,7 @@ MSYS2 をインストールしたら、開いている MSYS の全ターミナ 次のコマンドを実行して、QMK CLI をインストールします: - PYTHONUTF8=1 python3 -m pip install qmk - -!> **訳注:** 現在、日本語版 Windows 環境では、環境変数として `PYTHONUTF8=1` を指定してインストールする必要があります。この環境変数を指定しない場合、システムのロケール設定が原因で一部の Python モジュールのインストールでエラーが発生します。この問題は該当モジュールのソースコードでは修正済みですが、配布モジュールはまだ修正されていません。 + python3 -m pip install qmk diff --git a/docs/ja/one_shot_keys.md b/docs/ja/one_shot_keys.md index 4e6b2aa9d282..f049c2d6f70d 100644 --- a/docs/ja/one_shot_keys.md +++ b/docs/ja/one_shot_keys.md @@ -1,9 +1,9 @@ # ワンショットキー + original document: 0.13.34:docs/one_shot_keys.md + git diff 0.13.34 HEAD -- docs/one_shot_keys.md | cat +---> ワンショットキーは次のキーが押されるまでアクティブのままになり、そのあと放されるキーです。これにより一度に1つ以上のキーを押すことなく、キーボードの組み合わせを入力することができます。これらのキーは通常「スティッキーキー」あるいは「デッドキー」と呼ばれます。 @@ -22,10 +22,13 @@ * `OSM(mod)` - *mod*を一時的に押し続けます。[モッドタップ](ja/mod_tap.md)で示したように、`KC_*` コードでは無く、`MOD_*` キーコードを使わなければなりません。 * `OSL(layer)` - 一時的に*レイヤー*に切り替えます。 +* `OS_ON` - ワンショットキーをオンにします。 +* `OS_OFF` - ワンショットキーをオフにします。OSM は通常の mod キーのように機能し、OSL は `MO` キーのように機能します。 +* `OS_TOGG` - ワンショットキーの状態を切り替えます。 ワンショットキーをマクロあるいはタップダンスルーチンの一部として有効にしたい場合があります。 -ワンショットレイヤーについては、キーを押した時に `set_oneshot_layer(LAYER, ONESHOT_START)` を呼び出し、キーを放した時に `clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED)` を呼び出す必要があります。ワンショットをキャンセルする場合は、`reset_oneshot_layer()` を呼び出してください。 +ワンショットレイヤーについては、キーを押した時に `set_oneshot_layer(LAYER, ONESHOT_START)` を呼び出し、キーを放した時に `clear_oneshot_layer_state(ONESHOT_PRESSED)` を呼び出す必要があります。ワンショットをキャンセルする場合は、`reset_oneshot_layer()` を呼び出してください。 ワンショットモッドについては、設定するためには `set_oneshot_mods(MOD_BIT(KC_*))` を呼び出し、キャンセルするためには `clear_oneshot_mods()` を呼び出す必要があります。 diff --git a/docs/ja/other_eclipse.md b/docs/ja/other_eclipse.md index fa6bb873703f..929016619865 100644 --- a/docs/ja/other_eclipse.md +++ b/docs/ja/other_eclipse.md @@ -1,8 +1,8 @@ # QMK 開発のための Eclipse セットアップ [Eclipse][1]は Java 開発のために広く使われているオープンソースの [統合開発環境](https://en.wikipedia.org/wiki/Integrated_development_environment) (IDE) ですが、他の言語および用途のためにカスタマイズできる拡張可能なプラグインシステムがあります。 @@ -55,7 +55,7 @@ Workspace 選択で入力を促された場合は、Eclipse メタデータと ### [ANSI Escape in Console](https://marketplace.eclipse.org/content/ansi-escape-console) このプラグインは QMK makefile によって生成された色付きビルド出力を適切に表示するために必要です。 -1. Help > Eclipse Marketplace… を開きます +1. Help > Eclipse Marketplace… を開きます 2. _ANSI Escape in Console_ を検索します 3. プラグインの Install ボタンをクリックします 4. 指示に従い、未署名コンテンツのセキュリティ警告に再度同意します。 @@ -64,7 +64,7 @@ Workspace 選択で入力を促された場合は、Eclipse メタデータと # QMK 用の Eclipse の設定 ## プロジェクトのインポート -1. File > New > Makefile Project with Existing Code をクリックします +1. File > New > Makefile Project with Existing Code をクリックします 2. 次の画面で: * _Existing Code Location_ としてリポジトリをクローンしたディレクトリを選択します。 * (オプション) プロジェクトに別の名前を付けます¹ 例えば _QMK_ あるいは _Quantum_; @@ -78,16 +78,12 @@ Workspace 選択で入力を促された場合は、Eclipse メタデータと ¹ カスタム名でプロジェクトをインポートすると問題が発生するかもしれません。正しく動作しない場合は、デフォルトのプロジェクト名 (つまり、ディレクトリの名前、おそらく `qmk_firmware`) のままにしてみてください。 ## キーボードのビルド -ここで、プロジェクトをクリーンし、選択したキーマップをビルドする make target を設定します。 - -1. 画面の右側で、Make Target タブを選択します -2. フォルダツリーを選択したキーボードまで展開します。例えば、`qmk_firmware/keyboards/ergodox` -3. キーボードフォルダを右クリックして、New… を選択します (あるいはフォルダを選択し、ツリーの上にある New Make Target アイコンをクリックします) -4. ビルド target の名前を選択します。例えば、_clean \_ -5. Make Target: これはコマンドラインからビルドする時に `make` に渡す引数です。target 名がこれらの引数と一致しない場合は、Same as target name のチェックを外し、正しい引数を入力します。例えば、`clean ` -6. 他のオプションはチェックしたままにして、OK をクリックします。これで、選択されたキーボードの下に、make target が表示されます。 -7. (オプション) target ツリーの上にある Hide Empty Folders アイコンボタンを、ビルド target だけが表示されるように切り替えます。 -8. 作成したビルド target をダブルクリックし、ビルドを起動します。 -9. 下部の Console ビューを選択し、実行中のビルドを眺めます。 + +プロジェクトのデフォルトの make 対象を `all` から私たちが取り組んでいる特定のキーボードとキーマップの組み合わせ、例えば `kinesis/kint36:stapelberg` に変更します。このようにすると、プロジェクトのクリーニングやビルドのようなプロジェクト全体のアクションは迅速に完了し、長い時間がかかったり Eclipse が完全にロックしたりすることがなくなります。 + +1. プロジェクト内の editor タブへフォーカスします +2. `Project` > `Properties` ウィンドウを開き、`C/C++ Build` リストエントリを選択して、`Behavior` タブに切り替えます。 +3. 有効な全てのビルドのデフォルトの `Make build target` テキストフィールドを、`all` から例えば `kinesis/kint41:stapelberg` に変更します。 +4. `Project` > `Clean...` を選択して、セットアップが動作することを確認します。 [1]: https://en.wikipedia.org/wiki/Eclipse_(software) diff --git a/docs/ja/other_vscode.md b/docs/ja/other_vscode.md index e786b08f397c..9250e16276bd 100644 --- a/docs/ja/other_vscode.md +++ b/docs/ja/other_vscode.md @@ -1,8 +1,8 @@ # QMK 開発用の Visual Studio Code のセットアップ [Visual Studio Code](https://code.visualstudio.com/) (VS Code) は多くの異なるプログラミング言語をサポートするオープンソースのコードエディタです。 @@ -110,7 +110,6 @@ VS Code のようなフル機能のエディタの使用は、プレーンテキ * [GitHub Markdown Preview](https://marketplace.visualstudio.com/items?itemName=bierner.github-markdown-preview) - _[オプション]_ - VS Code の markdown プレビューを GithHub のようにします。 * [VS Live Share Extension Pack](https://marketplace.visualstudio.com/items?itemName=MS-vsliveshare.vsliveshare-pack) - _[オプション]_ - この拡張により、他の誰かがあなたのワークスペースにアクセスし(あるいは、あなたが他の誰かのワークスペースにアクセスし)、手伝うことができます。あなたが問題を抱えており、他の誰かの助けが必要な場合に便利です。 * [VIM Keymap](https://marketplace.visualstudio.com/items?itemName=GiuseppeCesarano.vim-keymap) - _[オプション]_ - VIM スタイルのキーバインドを好む人向け。これには他のオプションもあります。 -* [Travis CI Status](https://marketplace.visualstudio.com/items?itemName=felixrieseberg.vsc-travis-ci-status) - _[オプション]_ - セットアップした場合、現在の Travis CI の状態を表示します。 いずれかの拡張機能をインストールしたら、再起動します。 diff --git a/docs/ja/pr_checklist.md b/docs/ja/pr_checklist.md index 9026ac48669e..caab2b4d5045 100644 --- a/docs/ja/pr_checklist.md +++ b/docs/ja/pr_checklist.md @@ -1,8 +1,8 @@ # PR チェックリスト これは、提出された PR を QMK の協力者がレビューする際に何をチェックするのかの非網羅的なチェックリストです。 @@ -27,7 +27,7 @@ - 「旧式の」 GPIO/I2C/SPI 関数を使用しない - 正当な理由がない限り、QMK の抽象化を使用しなければなりません (怠惰は正当な理由にはなりません) - タイミングの抽象化にも従う必要があります: - `_delay_ms()` のかわりに `wait_ms()` を。(`#include ` も消します) - - `timer_read()` と `timer_read32()` など。 -- タイミング API は [timer.h](https://github.com/qmk/qmk_firmware/blob/master/tmk_core/common/timer.h) を参照してください + - `timer_read()` と `timer_read32()` など。 -- タイミング API は [timer.h](https://github.com/qmk/qmk_firmware/blob/master/platforms/timer.h) を参照してください - 新しい抽象化が有用だと思う場合は、次のことをお勧めします: - 機能が完成するまで自分のキーボードでプロトタイプを作成する - Discord の QMK コラボレータと話し合う @@ -73,11 +73,13 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard - キーボードが QMK で起動するために最低限必要なコードが存在する必要があります - マトリックスと重要なデバイスの初期化コード - (カスタムキーコードや特別なアニメーションなど)商用キーボードの既存の機能をミラーリングする場合は、`default` ではないキーマップを使って処理する必要があります + - Vial 関連のファイルまたは変更は QMK ファームウェアで使用されないため受け入れられません (Vial 固有のコアコードは提出またはマージされていません) - `keyboard.c` - 空の `xxxx_xxxx_kb()` または他の weak-define のデフォルト実装関数が削除されていること - コメントアウトされた関数も削除されていること - `matrix_init_board()` などが `keyboard_pre_init_kb()` に移行されました。[keyboard_pre_init*](https://docs.qmk.fm/#/ja/custom_quantum_functions?id=keyboard_pre_init_-function-documentation) を参照してください - カスタムマトリックスを使用する場合は、`CUSTOM_MATRIX = lite` を選択し、標準のデバウンスを許可します。[マトリックスコードの部分置き換え](https://docs.qmk.fm/#/ja/custom_matrix?id=lite) を参照してください + - 可能な場合は、独自の `led_update_*()` 実装よりも LED インジケータの[設定オプション](https://docs.qmk.fm/#/ja/feature_led_indicators?id=configuration-options)を優先してください。 - `keyboard.h` - 先頭に `#include "quantum.h"` を置きます - `LAYOUT` マクロは、該当する場合は標準の定義を使用してください @@ -95,9 +97,12 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard ...キーマップの `process_record_user()` 内で `layer_on()`、 `update_tri_layer()` を手動で処理する代わりに。 - default (および via) のキーマップは「素朴」でなければなりません。 - 他のユーザーが独自のユーザー固有のキーマップを開発するための「クリーンな状態」として使用するための最低限のもの。 - - これらのキーマップで推奨される標準レイアウト(可能な場合) + - これらのキーマップでは標準のレイアウトが推奨されます(可能な場合) + - デフォルトのキーマップは VIA を有効にするべきではありません -- VIA の統合ドキュメント類には `via` という名前のキーマップが必要です。 - PR の提出者は、同じ PR に機能を紹介する個人的な(または豪華な)キーマップを持たせることができますが、「デフォルト」のキーマップに埋め込むべきではありません - PR の提出者はまた、既存の商用キーボードへ QMK を移植する場合、その商用製品の既存の機能を反映する「製造業者に一致する」キーマップを持つことができます +- PR に VIA の json ファイルを含めないでください。これらは QMK ファームウェアで使われないため QMK リポジトリに属しません -- それらは [VIA のキーボードリポジトリ](https://github.com/the-via/keyboards)に属します。 + さらに、ChibiOS に固有で: - 既存の ChibiOS ボード定義を使用することを**強く**推奨します。 @@ -132,3 +137,9 @@ There are instructions on how to keep your fork updated here: Thanks for contributing! ``` + +## レビュープロセス + +一般的に、PR がマージの対象となる前に、意味のある(例えば、コードを検査した)2つ(またはそれ以上)の承認を確認したいと考えています。これらのレビューはコラボレータに限られません -- 時間を割いてくれるコミュニティメンバーは誰でも歓迎(奨励)されます。唯一の違いは、チェックマークが緑にならないことですが、それは問題ありません。 + +また、PR レビューは自由な時間に行われるものです。それは好意で行われるものなので、私たちはレビューに費やす時間に対して、報酬はうけとっていませんし埋め合わせもありません。そのため、私たちがあなたのプルリクエストに取り掛かるのには時間がかかります。家族や生活のことで PR に手が回らなくなることもあり、そして燃え尽き症候群は深刻な懸念です。QMK ファームウェアリポジトリは、毎月平均200件の PR が開かれ、200件の PR がマージされますので、しばらくお待ちください。 diff --git a/docs/ja/proton_c_conversion.md b/docs/ja/proton_c_conversion.md index e7c07413ce5b..983aed4ee5d9 100644 --- a/docs/ja/proton_c_conversion.md +++ b/docs/ja/proton_c_conversion.md @@ -2,8 +2,8 @@ Proton C は Pro Micro の差し替え可能品であるため、簡単に使用することができます。 diff --git a/docs/ja/reference_configurator_support.md b/docs/ja/reference_configurator_support.md index dd58e47890b3..83d6d648d0b1 100644 --- a/docs/ja/reference_configurator_support.md +++ b/docs/ja/reference_configurator_support.md @@ -1,8 +1,8 @@ # QMK Configurator でのキーボードのサポート このページは [QMK Configurator](https://config.qmk.fm/) でキーボードを適切にサポートする方法について説明します。 @@ -104,8 +104,6 @@ JSON ファイルをビルドする最も簡単な方法は、[Keyboard Layout E "tags": { "form_factor": "numpad" }, - "width": 4, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/docs/ja/reference_glossary.md b/docs/ja/reference_glossary.md index 2fd6146d1125..06c719612386 100644 --- a/docs/ja/reference_glossary.md +++ b/docs/ja/reference_glossary.md @@ -1,8 +1,8 @@ # QMK 用語集 ## ARM diff --git a/docs/ja/reference_info_json.md b/docs/ja/reference_info_json.md index 5b9a1b6b638d..e6a71adc9df2 100644 --- a/docs/ja/reference_info_json.md +++ b/docs/ja/reference_info_json.md @@ -20,23 +20,13 @@ * キーボードの製品ページ、[QMK.fm/keyboards](https://qmk.fm/keyboards) のページ、あるいはキーボードに関する情報を説明する他のページの URL。 * `maintainer` * メンテナの GitHub のユーザ名、あるいはコミュニティが管理するキーボードの場合は `qmk` -* `width` - * キー単位でのキーボードの幅 -* `height` - * キー単位でのキーボードの高さ * `layouts` * 物理的なレイアウト表現。詳細は以下のセクションを見てください。 ### レイアウトの形式 -`info.json` ファイル内の辞書の `layouts` 部分は、幾つかの入れ子になった辞書を含みます。外側のレイヤーは QMK レイアウトマクロで構成されます。例えば、`LAYOUT_ansi` あるいは `LAYOUT_iso`。各レイアウトマクロ内には、`width`、 `height`、`key_count` のキーがあります。これらは自明でなければなりません。 +`info.json` ファイル内の辞書の `layouts` 部分は、幾つかの入れ子になった辞書を含みます。外側のレイヤーは QMK レイアウトマクロで構成されます。例えば、`LAYOUT_ansi` あるいは `LAYOUT_iso`。 -* `width` - * オプション: キー単位でのレイアウトの幅 -* `height` - * オプション: キー単位でのレイアウトの高さ -* `key_count` - * オプション: このレイアウトのキーの数 * `layout` * 物理レイアウトを説明するキー辞書のリスト。詳細は次のセクションを見てください。 diff --git a/docs/ja/syllabus.md b/docs/ja/syllabus.md index 14e743ee9c4c..9209cb49e086 100644 --- a/docs/ja/syllabus.md +++ b/docs/ja/syllabus.md @@ -1,8 +1,8 @@ # QMK シラバス このページは最初に基本を紹介し、そして、QMK に習熟するために必要な全ての概念を理解するように導くことで、QMK の知識を構築するのに役立ちます。 @@ -45,6 +45,7 @@ * [タップダンス](ja/feature_tap_dance.md) * [コンボ](ja/feature_combo.md) * [ユーザスペース](ja/feature_userspace.md) + * [キーオーバーライド](ja/feature_key_overrides.md) # 上級トピック @@ -58,7 +59,7 @@ * **高度な機能** * [ユニコード](ja/feature_unicode.md) * [API](ja/api_overview.md) - * [ブートマジック](ja/feature_bootmagic.md) + * [ブートマジックライト](ja/feature_bootmagic.md) * **ハードウェア** * [キーボードがどのように動作するか](ja/how_keyboards_work.md) * [キーボードマトリックスの仕組み](ja/how_a_matrix_works.md) diff --git a/docs/ja/understanding_qmk.md b/docs/ja/understanding_qmk.md index ab860a609615..1654f8e00296 100644 --- a/docs/ja/understanding_qmk.md +++ b/docs/ja/understanding_qmk.md @@ -1,15 +1,15 @@ # QMK のコードの理解 このドキュメントでは、QMK ファームウェアがどのように機能するかを非常に高いレベルから説明しようとしています。基本的なプログラミングの概念を理解していることを前提としていますが、(実例を示す必要がある場合を除き) C に精通していることを前提にはしていません。以下のドキュメントの基本的な知識があることを前提としています。 * [入門](ja/getting_started_introduction.md) * [キーボードがどのように動作するか](ja/how_keyboards_work.md) -* [FAQ](ja/faq.md) +* [FAQ](ja/faq_general.md) ## スタートアップ @@ -138,41 +138,42 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { `process_record()` 関数自体は一見簡単に見えますが、その内部は QMK の様々なレベルで機能を上書きするためのゲートウェイが隠されています。キーボード/キーマップレベルの機能について調べる必要があるときは、以下に列挙した一連のイベントを手引帳として使います。`rules.mk` またはほかの場所で設定されたオプションに応じて、最終的なファームウェアに以下の関数のサブセットのみが含まれます。 * [`void process_record(keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/tmk_core/common/action.c#L172) - * [`bool process_record_quantum(keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/quantum.c#L206) - * [このレコードをキーコードにマップする](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/quantum.c#L226) - * [`void velocikey_accelerate(void)`](https://github.com/qmk/qmk_firmware/blob/c1c5922aae7b60b7c7d13d3769350eed9dda17ab/quantum/velocikey.c#L27) - * [`void preprocess_tap_dance(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_tap_dance.c#L119) - * [`bool process_key_lock(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_key_lock.c#L62) - * [`bool process_clicky(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_clicky.c#L79) - * [`bool process_haptic(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/2cee371bf125a6ec541dd7c5a809573facc7c456/drivers/haptic/haptic.c#L216) - * [`bool process_record_kb(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/keyboards/clueboard/card/card.c#L20) - * [`bool process_record_user(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/keyboards/clueboard/card/keymaps/default/keymap.c#L58) - * [`bool process_midi(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_midi.c#L81) - * [`bool process_audio(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_audio.c#L19) - * [`bool process_steno(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_steno.c#L160) - * [`bool process_music(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_music.c#L114) - * [`bool process_tap_dance(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_tap_dance.c#L141) - * [`bool process_unicode_common(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_unicode_common.c#L169) は、以下のいずれかを呼び出します: - * [`bool process_unicode(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_unicode.c#L20) - * [`bool process_unicodemap(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_unicodemap.c#L46) - * [`bool process_ucis(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_ucis.c#L95) - * [`bool process_leader(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_leader.c#L51) - * [`bool process_combo(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_combo.c#L115) - * [`bool process_printer(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_printer.c#L77) - * [`bool process_auto_shift(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_auto_shift.c#L94) - * [`bool process_terminal(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_terminal.c#L264) - * [Quantum 固有のキーコードを識別して処理する](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/quantum.c#L291) + * [`bool process_record_quantum(keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/quantum.c#L206) + * [このレコードをキーコードにマップする](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/quantum.c#L226) + * [`void velocikey_accelerate(void)`](https://github.com/qmk/qmk_firmware/blob/c1c5922aae7b60b7c7d13d3769350eed9dda17ab/quantum/velocikey.c#L27) + * [`void preprocess_tap_dance(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_tap_dance.c#L119) + * [`bool process_key_lock(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_key_lock.c#L62) + * [`bool process_clicky(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_clicky.c#L79) + * [`bool process_haptic(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/2cee371bf125a6ec541dd7c5a809573facc7c456/drivers/haptic/haptic.c#L216) + * [`bool process_record_kb(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/keyboards/clueboard/card/card.c#L20) + * [`bool process_record_user(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/keyboards/clueboard/card/keymaps/default/keymap.c#L58) + * [`bool process_midi(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_midi.c#L81) + * [`bool process_audio(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_audio.c#L19) + * [`bool process_steno(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_steno.c#L160) + * [`bool process_music(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_music.c#L114) + * [`bool process_key_override(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/5a1b857dea45a17698f6baa7dd1b7a7ea907fb0a/quantum/process_keycode/process_key_override.c#L397) + * [`bool process_tap_dance(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_tap_dance.c#L141) + * [`bool process_unicode_common(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_unicode_common.c#L169) は、以下のいずれかを呼び出します: + * [`bool process_unicode(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_unicode.c#L20) + * [`bool process_unicodemap(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_unicodemap.c#L46) + * [`bool process_ucis(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_ucis.c#L95) + * [`bool process_leader(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_leader.c#L51) + * [`bool process_combo(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_combo.c#L115) + * [`bool process_printer(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_printer.c#L77) + * [`bool process_auto_shift(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_auto_shift.c#L94) + * [`bool process_terminal(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_terminal.c#L264) + * [Quantum 固有のキーコードを識別して処理する](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/quantum.c#L291) この一連のイベントの中の任意のステップで (`process_record_kb()` のような)関数は `false` を返して、以降の処理を停止することができます。 この呼び出しの後で、`post_process_record()` が呼ばれます。これはキーコードが通常処理された後に実行する必要がある追加のクリーンアップを処理するために使うことができます。 * [`void post_process_record(keyrecord_t *record)`]() - * [`void post_process_record_quantum(keyrecord_t *record)`]() - * [このレコードをキーコードにマップする]() - * [`void post_process_clicky(uint16_t keycode, keyrecord_t *record)`]() - * [`void post_process_record_kb(uint16_t keycode, keyrecord_t *record)`]() - * [`void post_process_record_user(uint16_t keycode, keyrecord_t *record)`]() + * [`void post_process_record_quantum(keyrecord_t *record)`]() + * [このレコードをキーコードにマップする]() + * [`void post_process_clicky(uint16_t keycode, keyrecord_t *record)`]() + * [`void post_process_record_kb(uint16_t keycode, keyrecord_t *record)`]() + * [`void post_process_record_user(uint16_t keycode, keyrecord_t *record)`]() @@ -132,32 +132,36 @@ Comparing against our keymap we can see that the pressed key is KC_NLCK. From he The `process_record()` function itself is deceptively simple, but hidden within is a gateway to overriding functionality at various levels of QMK. The chain of events is listed below, using cluecard whenever we need to look at the keyboard/keymap level functions. Depending on options set in `rules.mk` or elsewhere, only a subset of the functions below will be included in final firmware. -* [`void process_record(keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/tmk_core/common/action.c#L172) - * [`bool process_record_quantum(keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/quantum.c#L206) - * [Map this record to a keycode](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/quantum.c#L226) - * [`void velocikey_accelerate(void)`](https://github.com/qmk/qmk_firmware/blob/c1c5922aae7b60b7c7d13d3769350eed9dda17ab/quantum/velocikey.c#L27) - * [`void preprocess_tap_dance(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_tap_dance.c#L119) - * [`bool process_key_lock(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_key_lock.c#L62) - * [`bool process_clicky(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_clicky.c#L79) - * [`bool process_haptic(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/2cee371bf125a6ec541dd7c5a809573facc7c456/drivers/haptic/haptic.c#L216) - * [`bool process_record_kb(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/keyboards/clueboard/card/card.c#L20) - * [`bool process_record_user(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/keyboards/clueboard/card/keymaps/default/keymap.c#L58) - * [`bool process_midi(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_midi.c#L81) - * [`bool process_audio(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_audio.c#L19) - * [`bool process_steno(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_steno.c#L160) - * [`bool process_music(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_music.c#L114) - * [`bool process_tap_dance(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_tap_dance.c#L141) - * [`bool process_unicode_common(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_unicode_common.c#L169) - calls one of: - * [`bool process_unicode(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_unicode.c#L20) - * [`bool process_unicodemap(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_unicodemap.c#L46) - * [`bool process_ucis(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_ucis.c#L95) - * [`bool process_leader(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_leader.c#L51) - * [`bool process_combo(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_combo.c#L115) - * [`bool process_printer(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_printer.c#L77) - * [`bool process_auto_shift(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_auto_shift.c#L94) - * [`bool process_terminal(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_terminal.c#L264) - * [Identify and process Quantum-specific keycodes](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/quantum.c#L291) +* [`void action_exec(keyevent_t event)`](https://github.com/qmk/qmk_firmware/blob/88fe5c16a5cdca5e3cf13ef3cd91f5f1e4898c37/quantum/action.c#L70-L131) + * [`void pre_process_record_quantum(keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/ed49dbeac4c0deba1c6b511ac1ce8f4c542e1b3e/quantum/quantum.c#L176-L185) + * [`bool process_combo(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_combo.c#L115) + * [`void process_record(keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/tmk_core/common/action.c#L172) + * [`bool process_record_quantum(keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/quantum.c#L206) + * [Map this record to a keycode](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/quantum.c#L226) + * [`void velocikey_accelerate(void)`](https://github.com/qmk/qmk_firmware/blob/c1c5922aae7b60b7c7d13d3769350eed9dda17ab/quantum/velocikey.c#L27) + * [`void preprocess_tap_dance(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_tap_dance.c#L119) + * [`bool process_key_lock(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_key_lock.c#L62) + * [`bool process_clicky(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_clicky.c#L79) + * [`bool process_haptic(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/2cee371bf125a6ec541dd7c5a809573facc7c456/drivers/haptic/haptic.c#L216) + * [`bool process_record_kb(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/keyboards/clueboard/card/card.c#L20) + * [`bool process_record_user(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/keyboards/clueboard/card/keymaps/default/keymap.c#L58) + * [`bool process_midi(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_midi.c#L81) + * [`bool process_audio(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_audio.c#L19) + * [`bool process_steno(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_steno.c#L160) + * [`bool process_music(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_music.c#L114) + * [`bool process_key_override(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/5a1b857dea45a17698f6baa7dd1b7a7ea907fb0a/quantum/process_keycode/process_key_override.c#L397) + * [`bool process_tap_dance(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_tap_dance.c#L141) + * [`bool process_unicode_common(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_unicode_common.c#L169) + calls one of: + * [`bool process_unicode(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_unicode.c#L20) + * [`bool process_unicodemap(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_unicodemap.c#L46) + * [`bool process_ucis(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_ucis.c#L95) + * [`bool process_leader(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_leader.c#L51) + * [`bool process_printer(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_printer.c#L77) + * [`bool process_auto_shift(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_auto_shift.c#L94) + * `bool process_dynamic_tapping_term(uint16_t keycode, keyrecord_t *record)` + * [`bool process_terminal(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_terminal.c#L264) + * [Identify and process Quantum-specific keycodes](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/quantum.c#L291) At any step during this chain of events a function (such as `process_record_kb()`) can `return false` to halt all further processing. @@ -179,10 +183,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 82073a201655..47a105579643 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 @@ -36,12 +36,20 @@ Note how there's several different tests, each mocking out a separate part. Also ## Running the Tests -To run all the tests in the codebase, type `make test`. You can also run test matching a substring by typing `make test:matchingsubstring` Note that the tests are always compiled with the native compiler of your platform, so they are also run like any other program on your computer. +To run all the tests in the codebase, type `make test:all`. You can also run test matching a substring by typing `make test:matchingsubstring` Note that the tests are always compiled with the native compiler of your platform, so they are also run like any other program on your computer. ## Debugging the Tests If there are problems with the tests, you can find the executable in the `./build/test` folder. You should be able to run those with GDB or a similar debugger. +To forward any [debug messages](unit_testing.md#debug-api) to `stderr`, the tests can run with `DEBUG=1`. For example + +``` +make test:all DEBUG=1 +``` + +Alternatively, add `CONSOLE_ENABLE=yes` to the tests `rules.mk`. + ## Full Integration Tests It's not yet possible to do a full integration test, where you would compile the whole firmware and define a keymap that you are going to test. However there are plans for doing that, because writing tests that way would probably be easier, at least for people that are not used to unit testing. diff --git a/docs/ws2812_driver.md b/docs/ws2812_driver.md index 101798f21113..8acac0b3aa6a 100644 --- a/docs/ws2812_driver.md +++ b/docs/ws2812_driver.md @@ -49,6 +49,19 @@ WS2812_DRIVER = bitbang !> This driver is not hardware accelerated and may not be performant on heavily loaded systems. +#### Adjusting bit timings + +The WS2812 LED communication topology depends on a serialized timed window. Different versions of the addressable LEDs have differing requirements for the timing parameters, for instance, of the SK6812. +You can tune these parameters through the definition of the following macros: + +| Macro |Default | AVR | ARM | +|---------------------|--------------------------------------------|--------------------|--------------------| +|`WS2812_TIMING` |`1250` | :heavy_check_mark: | :heavy_check_mark: | +|`WS2812_T0H` |`350` | :heavy_check_mark: | :heavy_check_mark: | +|`WS2812_T0L` |`WS2812_TIMING - WS2812_T0H` | | :heavy_check_mark: | +|`WS2812_T1H` |`900` | :heavy_check_mark: | :heavy_check_mark: | +|`WS2812_T1L` |`WS2812_TIMING - WS2812_T1H` | | :heavy_check_mark: | + ### I2C Targeting boards where WS2812 support is offloaded to a 2nd MCU. Currently the driver is limited to AVR given the known consumers are ps2avrGB/BMC. To configure it, add this to your rules.mk: diff --git a/docs/zh-cn/README.md b/docs/zh-cn/README.md index 560b0a8ee69c..b42818d582f2 100644 --- a/docs/zh-cn/README.md +++ b/docs/zh-cn/README.md @@ -1,7 +1,6 @@ # QMK机械键盘固件 [![当前版本](https://img.shields.io/github/tag/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/tags) -[![开发状态](https://travis-ci.org/qmk/qmk_firmware.svg?branch=master)](https://travis-ci.org/qmk/qmk_firmware) [![异议](https://img.shields.io/discord/440868230475677696.svg)](https://discord.gg/Uq7gcHh) [![文档状态](https://img.shields.io/badge/docs-ready-orange.svg)](https://docs.qmk.fm) [![GitHub贡献者](https://img.shields.io/github/contributors/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/pulse/monthly) diff --git a/docs/zh-cn/custom_quantum_functions.md b/docs/zh-cn/custom_quantum_functions.md index 27b2edf38f90..1ae996e392b4 100644 --- a/docs/zh-cn/custom_quantum_functions.md +++ b/docs/zh-cn/custom_quantum_functions.md @@ -275,11 +275,11 @@ void keyboard_post_init_user(void) { ```c void suspend_power_down_user(void) { - rgb_matrix_set_suspend_state(true); + // code will run multiple times while keyboard is suspended } void suspend_wakeup_init_user(void) { - rgb_matrix_set_suspend_state(false); + // code will run on keyboard wakeup } ``` @@ -297,7 +297,7 @@ void suspend_wakeup_init_user(void) { 本例使用了Planck键盘示范了如何设置 [RGB背光灯](feature_rgblight.md)使之与层对应 ```c -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { switch (biton32(state)) { case _RAISE: rgblight_setrgb (0x00, 0x00, 0xFF); @@ -321,7 +321,7 @@ uint32_t layer_state_set_user(uint32_t state) { ### `layer_state_set_*` 函数文档 * 键盘/修订: `uint32_t layer_state_set_kb(uint32_t state)` -* 布局: `uint32_t layer_state_set_user(uint32_t state)` +* 布局: `layer_state_t layer_state_set_user(layer_state_t state)` 该`状态`是活动层的bitmask, 详见[布局概述](keymap.md#布局的层状态) @@ -377,7 +377,7 @@ void keyboard_post_init_user(void) { 以上函数会在读EEPROM配置后立即使用该设置来设置默认层RGB颜色。"raw"的值是从你上面基于"union"创建的结构体中转换来的。 ```c -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { switch (biton32(state)) { case _RAISE: if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_magenta(); rgblight_mode_noeeprom(1); } diff --git a/docs/zh-cn/faq_debug.md b/docs/zh-cn/faq_debug.md index 3b6a369003b0..4dba44c275e0 100644 --- a/docs/zh-cn/faq_debug.md +++ b/docs/zh-cn/faq_debug.md @@ -81,11 +81,6 @@ Size after: 全键无冲还不好用的话试着用`Magic` **N** 命令(默认是`LShift+RShift+N`)。这个命令会在**全键无冲**和**六键无冲**之间临时切换。有些情况**全键无冲**不好用你就需要使用**六键无冲**模式,尤其是在BIOS中。 -如果你的固件使用`BOOTMAGIC_ENABLE`编译的你要用`BootMagic` **N** 命令(默认`Space+N`)打开开关。这个设置保存在EEPROM中并保存在电源循环中。 - - -https://github.com/tmk/tmk_keyboard#boot-magic-configuration---virtual-dip-switch - ## 指点杆需要复位电路(PS/2 鼠标支持) 如果没有复位电路,由于硬件初始化不正确,您将得到不一致的结果。查看TPM754复位电路。 diff --git a/docs/zh-cn/faq_keymap.md b/docs/zh-cn/faq_keymap.md index fdfa25ad9eec..ff38f3889471 100644 --- a/docs/zh-cn/faq_keymap.md +++ b/docs/zh-cn/faq_keymap.md @@ -5,7 +5,7 @@ ## 我能用什么键码? 看[键码](keycodes.md)你可以找到你能用的键码索引。可以的话这些链接可以连接到更广泛的文档。 -键码实际上定义在[common/keycode.h](https://github.com/qmk/qmk_firmware/blob/master/tmk_core/common/keycode.h). +键码实际上定义在[common/keycode.h](https://github.com/qmk/qmk_firmware/blob/master/quantum/keycode.h). ## 默认的键码什么样? diff --git a/docs/zh-cn/getting_started_github.md b/docs/zh-cn/getting_started_github.md index 65994754b96d..b4e8e9fa5d0d 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 d8892e48ded7..4151627e4a8f 100644 --- a/doxygen-todo +++ b/doxygen-todo @@ -6,23 +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/avr -drivers/ugfx -drivers/ugfx/gdisp -drivers/ugfx/gdisp/is31fl3731c -drivers/ugfx/gdisp/st7565 diff --git a/drivers/avr/analog.c b/drivers/avr/analog.c deleted file mode 100644 index 8d299ffdb923..000000000000 --- a/drivers/avr/analog.c +++ /dev/null @@ -1,138 +0,0 @@ -/* Copyright 2015 Jack Humbert - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include -#include -#include -#include "analog.h" - -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) { - switch (pin) { - // clang-format off -#if defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) - case F0: return 0; // ADC0 - case F1: return _BV(MUX0); // ADC1 - case F2: return _BV(MUX1); // ADC2 - case F3: return _BV(MUX1) | _BV(MUX0); // ADC3 - case F4: return _BV(MUX2); // ADC4 - case F5: return _BV(MUX2) | _BV(MUX0); // ADC5 - case F6: return _BV(MUX2) | _BV(MUX1); // ADC6 - case F7: return _BV(MUX2) | _BV(MUX1) | _BV(MUX0); // ADC7 - default: return _BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1) | _BV(MUX0); // 0V -#elif defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__) - case F0: return 0; // ADC0 - case F1: return _BV(MUX0); // ADC1 - case F4: return _BV(MUX2); // ADC4 - case F5: return _BV(MUX2) | _BV(MUX0); // ADC5 - case F6: return _BV(MUX2) | _BV(MUX1); // ADC6 - case F7: return _BV(MUX2) | _BV(MUX1) | _BV(MUX0); // ADC7 - case D4: return _BV(MUX5); // ADC8 - case D6: return _BV(MUX5) | _BV(MUX0); // ADC9 - case D7: return _BV(MUX5) | _BV(MUX1); // ADC10 - case B4: return _BV(MUX5) | _BV(MUX1) | _BV(MUX0); // ADC11 - case B5: return _BV(MUX5) | _BV(MUX2); // ADC12 - case B6: return _BV(MUX5) | _BV(MUX2) | _BV(MUX0); // ADC13 - default: return _BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1) | _BV(MUX0); // 0V -#elif defined(__AVR_ATmega32A__) - case A0: return 0; // ADC0 - case A1: return _BV(MUX0); // ADC1 - case A2: return _BV(MUX1); // ADC2 - case A3: return _BV(MUX1) | _BV(MUX0); // ADC3 - case A4: return _BV(MUX2); // ADC4 - case A5: return _BV(MUX2) | _BV(MUX0); // ADC5 - case A6: return _BV(MUX2) | _BV(MUX1); // ADC6 - case A7: return _BV(MUX2) | _BV(MUX1) | _BV(MUX0); // ADC7 - default: return _BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1) | _BV(MUX0); // 0V -#elif defined(__AVR_ATmega328P__) || defined(__AVR_ATmega328__) - case C0: return 0; // ADC0 - case C1: return _BV(MUX0); // ADC1 - case C2: return _BV(MUX1); // ADC2 - case C3: return _BV(MUX1) | _BV(MUX0); // ADC3 - case C4: return _BV(MUX2); // ADC4 - case C5: return _BV(MUX2) | _BV(MUX0); // ADC5 - // ADC7:6 not present in DIP package and not shared by GPIO pins - default: return _BV(MUX3) | _BV(MUX2) | _BV(MUX1) | _BV(MUX0); // 0V -#endif - // clang-format on - } - return 0; -} - -int16_t adc_read(uint8_t mux) { - uint16_t low; - - // Enable ADC and configure prescaler - ADCSRA = _BV(ADEN) | ADC_PRESCALER; - -#if defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__) - // High speed mode and ADC8-13 - ADCSRB = _BV(ADHSM) | (mux & _BV(MUX5)); -#elif defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) - // High speed mode only - ADCSRB = _BV(ADHSM); -#endif - - // Configure mux input -#if defined(MUX4) - ADMUX = aref | (mux & (_BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1) | _BV(MUX0))); -#else - ADMUX = aref | (mux & (_BV(MUX3) | _BV(MUX2) | _BV(MUX1) | _BV(MUX0))); -#endif - - // Start the conversion - ADCSRA |= _BV(ADSC); - // Wait for result - while (ADCSRA & _BV(ADSC)) - ; - // Must read LSB first - low = ADCL; - // Must read MSB only once! - low |= (ADCH << 8); - - // turn off the ADC - ADCSRA &= ~(1 << ADEN); - - return low; -} diff --git a/drivers/avr/i2c_master.c b/drivers/avr/i2c_master.c deleted file mode 100644 index b1e48852984b..000000000000 --- a/drivers/avr/i2c_master.c +++ /dev/null @@ -1,224 +0,0 @@ -/* Copyright (C) 2019 Elia Ritterbusch - + - * This program is free software: you can 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 . - */ -/* Library made by: g4lvanix - * GitHub repository: https://github.com/g4lvanix/I2C-master-lib - */ - -#include -#include - -#include "i2c_master.h" -#include "timer.h" -#include "wait.h" - -#ifndef F_SCL -# define F_SCL 400000UL // SCL frequency -#endif - -#define TWBR_val (((F_CPU / F_SCL) - 16) / 2) - -void i2c_init(void) { - TWSR = 0; /* no prescaler */ - TWBR = (uint8_t)TWBR_val; - -#ifdef __AVR_ATmega32A__ - // set pull-up resistors on I2C bus pins - PORTC |= 0b11; - - // enable TWI (two-wire interface) - TWCR |= (1 << TWEN); - - // enable TWI interrupt and slave address ACK - TWCR |= (1 << TWIE); - TWCR |= (1 << TWEA); -#endif -} - -i2c_status_t i2c_start(uint8_t address, uint16_t timeout) { - // reset TWI control register - TWCR = 0; - // transmit START condition - TWCR = (1 << TWINT) | (1 << TWSTA) | (1 << TWEN); - - uint16_t timeout_timer = timer_read(); - while (!(TWCR & (1 << TWINT))) { - if ((timeout != I2C_TIMEOUT_INFINITE) && ((timer_read() - timeout_timer) >= timeout)) { - return I2C_STATUS_TIMEOUT; - } - } - - // check if the start condition was successfully transmitted - if (((TW_STATUS & 0xF8) != TW_START) && ((TW_STATUS & 0xF8) != TW_REP_START)) { - return I2C_STATUS_ERROR; - } - - // load slave address into data register - TWDR = address; - // start transmission of address - TWCR = (1 << TWINT) | (1 << TWEN); - - timeout_timer = timer_read(); - while (!(TWCR & (1 << TWINT))) { - if ((timeout != I2C_TIMEOUT_INFINITE) && ((timer_read() - timeout_timer) >= timeout)) { - return I2C_STATUS_TIMEOUT; - } - } - - // check if the device has acknowledged the READ / WRITE mode - uint8_t twst = TW_STATUS & 0xF8; - if ((twst != TW_MT_SLA_ACK) && (twst != TW_MR_SLA_ACK)) { - return I2C_STATUS_ERROR; - } - - return I2C_STATUS_SUCCESS; -} - -i2c_status_t i2c_write(uint8_t data, uint16_t timeout) { - // load data into data register - TWDR = data; - // start transmission of data - TWCR = (1 << TWINT) | (1 << TWEN); - - uint16_t timeout_timer = timer_read(); - while (!(TWCR & (1 << TWINT))) { - if ((timeout != I2C_TIMEOUT_INFINITE) && ((timer_read() - timeout_timer) >= timeout)) { - return I2C_STATUS_TIMEOUT; - } - } - - if ((TW_STATUS & 0xF8) != TW_MT_DATA_ACK) { - return I2C_STATUS_ERROR; - } - - return I2C_STATUS_SUCCESS; -} - -int16_t i2c_read_ack(uint16_t timeout) { - // start TWI module and acknowledge data after reception - TWCR = (1 << TWINT) | (1 << TWEN) | (1 << TWEA); - - uint16_t timeout_timer = timer_read(); - while (!(TWCR & (1 << TWINT))) { - if ((timeout != I2C_TIMEOUT_INFINITE) && ((timer_read() - timeout_timer) >= timeout)) { - return I2C_STATUS_TIMEOUT; - } - } - - // return received data from TWDR - return TWDR; -} - -int16_t i2c_read_nack(uint16_t timeout) { - // start receiving without acknowledging reception - TWCR = (1 << TWINT) | (1 << TWEN); - - uint16_t timeout_timer = timer_read(); - while (!(TWCR & (1 << TWINT))) { - if ((timeout != I2C_TIMEOUT_INFINITE) && ((timer_read() - timeout_timer) >= timeout)) { - return I2C_STATUS_TIMEOUT; - } - } - - // return received data from TWDR - return TWDR; -} - -i2c_status_t i2c_transmit(uint8_t address, const uint8_t* data, uint16_t length, uint16_t timeout) { - i2c_status_t status = i2c_start(address | I2C_WRITE, 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_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout) { - i2c_status_t status = i2c_start(address | I2C_READ, 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; - } - } - - i2c_stop(); - - return (status < 0) ? status : I2C_STATUS_SUCCESS; -} - -i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout) { - i2c_status_t status = i2c_start(devaddr | 0x00, timeout); - if (status >= 0) { - status = i2c_write(regaddr, 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) { - goto error; - } - - status = i2c_write(regaddr, 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/drivers/avr/i2c_master.h b/drivers/avr/i2c_master.h deleted file mode 100644 index e5af73364be3..000000000000 --- a/drivers/avr/i2c_master.h +++ /dev/null @@ -1,43 +0,0 @@ -/* Copyright (C) 2019 Elia Ritterbusch - + - * This program is free software: you can 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 . - */ -/* Library made by: g4lvanix - * GitHub repository: https://github.com/g4lvanix/I2C-master-lib - */ - -#pragma once - -#define I2C_READ 0x01 -#define I2C_WRITE 0x00 - -typedef int16_t i2c_status_t; - -#define I2C_STATUS_SUCCESS (0) -#define I2C_STATUS_ERROR (-1) -#define I2C_STATUS_TIMEOUT (-2) - -#define I2C_TIMEOUT_IMMEDIATE (0) -#define I2C_TIMEOUT_INFINITE (0xFFFF) - -void i2c_init(void); -i2c_status_t i2c_start(uint8_t address, uint16_t timeout); -i2c_status_t i2c_write(uint8_t data, uint16_t timeout); -int16_t i2c_read_ack(uint16_t timeout); -int16_t i2c_read_nack(uint16_t timeout); -i2c_status_t i2c_transmit(uint8_t address, const uint8_t* data, uint16_t length, uint16_t timeout); -i2c_status_t i2c_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_readReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout); -void i2c_stop(void); diff --git a/drivers/avr/i2c_slave.c b/drivers/avr/i2c_slave.c deleted file mode 100644 index 62a378165af2..000000000000 --- a/drivers/avr/i2c_slave.c +++ /dev/null @@ -1,86 +0,0 @@ -/* Copyright (C) 2019 Elia Ritterbusch - + - * This program is free software: you can 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 . - */ -/* Library made by: g4lvanix - * GitHub repository: https://github.com/g4lvanix/I2C-slave-lib - */ - -#include -#include -#include -#include - -#include "i2c_slave.h" - -volatile uint8_t i2c_slave_reg[I2C_SLAVE_REG_COUNT]; - -static volatile uint8_t buffer_address; -static volatile bool slave_has_register_set = false; - -void i2c_slave_init(uint8_t address) { - // load address into TWI address register - TWAR = address; - // set the TWCR to enable address matching and enable TWI, clear TWINT, enable TWI interrupt - TWCR = (1 << TWIE) | (1 << TWEA) | (1 << TWINT) | (1 << TWEN); -} - -void i2c_slave_stop(void) { - // clear acknowledge and enable bits - TWCR &= ~((1 << TWEA) | (1 << TWEN)); -} - -ISR(TWI_vect) { - uint8_t ack = 1; - - switch (TW_STATUS) { - case TW_SR_SLA_ACK: - // The device is now a slave receiver - slave_has_register_set = false; - break; - - case TW_SR_DATA_ACK: - // This device is a slave receiver and has received data - // First byte is the location then the bytes will be writen in buffer with auto-incriment - if (!slave_has_register_set) { - buffer_address = TWDR; - - if (buffer_address >= I2C_SLAVE_REG_COUNT) { // address out of bounds dont ack - ack = 0; - buffer_address = 0; - } - slave_has_register_set = true; // address has been receaved now fill in buffer - } else { - i2c_slave_reg[buffer_address] = TWDR; - buffer_address++; - } - break; - - case TW_ST_SLA_ACK: - case TW_ST_DATA_ACK: - // This device is a slave transmitter and master has requested data - TWDR = i2c_slave_reg[buffer_address]; - buffer_address++; - break; - - case TW_BUS_ERROR: - // We got an error, reset i2c - TWCR = 0; - default: - break; - } - - // Reset i2c state machine to be ready for next interrupt - TWCR |= (1 << TWIE) | (1 << TWINT) | (ack << TWEA) | (1 << TWEN); -} diff --git a/drivers/avr/i2c_slave.h b/drivers/avr/i2c_slave.h deleted file mode 100644 index 1cd0625ef439..000000000000 --- a/drivers/avr/i2c_slave.h +++ /dev/null @@ -1,30 +0,0 @@ -/* Copyright (C) 2019 Elia Ritterbusch - + - * This program is free software: you can 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 . - */ -/* Library made by: g4lvanix - * GitHub repository: https://github.com/g4lvanix/I2C-slave-lib - - Info: Inititate the library by giving the required address. - Read or write to the necessary buffer according to the opperation. - */ - -#pragma once - -#define I2C_SLAVE_REG_COUNT 30 - -extern volatile uint8_t i2c_slave_reg[I2C_SLAVE_REG_COUNT]; - -void i2c_slave_init(uint8_t address); -void i2c_slave_stop(void); diff --git a/drivers/avr/serial.c b/drivers/avr/serial.c deleted file mode 100644 index 3647bee0d355..000000000000 --- a/drivers/avr/serial.c +++ /dev/null @@ -1,563 +0,0 @@ -/* - * WARNING: be careful changing this code, it is very timing dependent - * - * 2018-10-28 checked - * avr-gcc 4.9.2 - * avr-gcc 5.4.0 - * avr-gcc 7.3.0 - */ - -#ifndef F_CPU -# define F_CPU 16000000 -#endif - -#include -#include -#include -#include -#include -#include "serial.h" - -#ifdef SOFT_SERIAL_PIN - -# if !(defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) || defined(__AVR_AT90USB162__) || defined(__AVR_ATmega16U2__) || defined(__AVR_ATmega32U2__) || defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__)) -# error serial.c is not supported for the currently selected MCU -# endif -// if using ATmega32U4/2, AT90USBxxx I2C, can not use PD0 and PD1 in soft serial. -# if defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__) || defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) -# if defined(USE_AVR_I2C) && (SOFT_SERIAL_PIN == D0 || SOFT_SERIAL_PIN == D1) -# error Using I2C, so can not use PD0, PD1 -# endif -# endif -// PD0..PD3, common config -# if SOFT_SERIAL_PIN == D0 -# define EIMSK_BIT _BV(INT0) -# define EICRx_BIT (~(_BV(ISC00) | _BV(ISC01))) -# define SERIAL_PIN_INTERRUPT INT0_vect -# define EICRx EICRA -# elif SOFT_SERIAL_PIN == D1 -# define EIMSK_BIT _BV(INT1) -# define EICRx_BIT (~(_BV(ISC10) | _BV(ISC11))) -# define SERIAL_PIN_INTERRUPT INT1_vect -# define EICRx EICRA -# elif SOFT_SERIAL_PIN == D2 -# define EIMSK_BIT _BV(INT2) -# define EICRx_BIT (~(_BV(ISC20) | _BV(ISC21))) -# define SERIAL_PIN_INTERRUPT INT2_vect -# define EICRx EICRA -# elif SOFT_SERIAL_PIN == D3 -# define EIMSK_BIT _BV(INT3) -# define EICRx_BIT (~(_BV(ISC30) | _BV(ISC31))) -# define SERIAL_PIN_INTERRUPT INT3_vect -# define EICRx EICRA -# endif - -// ATmegaxxU2/AT90USB162 specific config -# if defined(__AVR_ATmega16U2__) || defined(__AVR_ATmega32U2__) || defined(__AVR_AT90USB162__) -// PD4(INT5), PD6(INT6), PD7(INT7), PC7(INT4) -# if SOFT_SERIAL_PIN == D4 -# define EIMSK_BIT _BV(INT5) -# define EICRx_BIT (~(_BV(ISC50) | _BV(ISC51))) -# define SERIAL_PIN_INTERRUPT INT5_vect -# define EICRx EICRB -# elif SOFT_SERIAL_PIN == D6 -# define EIMSK_BIT _BV(INT6) -# define EICRx_BIT (~(_BV(ISC60) | _BV(ISC61))) -# define SERIAL_PIN_INTERRUPT INT6_vect -# define EICRx EICRB -# elif SOFT_SERIAL_PIN == D7 -# define EIMSK_BIT _BV(INT7) -# define EICRx_BIT (~(_BV(ISC70) | _BV(ISC71))) -# define SERIAL_PIN_INTERRUPT INT7_vect -# define EICRx EICRB -# elif SOFT_SERIAL_PIN == C7 -# define EIMSK_BIT _BV(INT4) -# define EICRx_BIT (~(_BV(ISC40) | _BV(ISC41))) -# define SERIAL_PIN_INTERRUPT INT4_vect -# define EICRx EICRB -# endif -# endif - -// ATmegaxxU4 specific config -# if defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__) -// PE6(INT6) -# if SOFT_SERIAL_PIN == E6 -# define EIMSK_BIT _BV(INT6) -# define EICRx_BIT (~(_BV(ISC60) | _BV(ISC61))) -# define SERIAL_PIN_INTERRUPT INT6_vect -# define EICRx EICRB -# endif -# endif - -// AT90USBxxx specific config -# if defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) -// PE4..PE7(INT4..INT7) -# if SOFT_SERIAL_PIN == E4 -# define EIMSK_BIT _BV(INT4) -# define EICRx_BIT (~(_BV(ISC40) | _BV(ISC41))) -# define SERIAL_PIN_INTERRUPT INT4_vect -# define EICRx EICRB -# elif SOFT_SERIAL_PIN == E5 -# define EIMSK_BIT _BV(INT5) -# define EICRx_BIT (~(_BV(ISC50) | _BV(ISC51))) -# define SERIAL_PIN_INTERRUPT INT5_vect -# define EICRx EICRB -# elif SOFT_SERIAL_PIN == E6 -# define EIMSK_BIT _BV(INT6) -# define EICRx_BIT (~(_BV(ISC60) | _BV(ISC61))) -# define SERIAL_PIN_INTERRUPT INT6_vect -# define EICRx EICRB -# elif SOFT_SERIAL_PIN == E7 -# define EIMSK_BIT _BV(INT7) -# define EICRx_BIT (~(_BV(ISC70) | _BV(ISC71))) -# define SERIAL_PIN_INTERRUPT INT7_vect -# define EICRx EICRB -# endif -# endif - -# ifndef SERIAL_PIN_INTERRUPT -# error invalid SOFT_SERIAL_PIN value -# endif - -# define setPinInputHigh(pin) (DDRx_ADDRESS(pin) &= ~_BV((pin)&0xF), PORTx_ADDRESS(pin) |= _BV((pin)&0xF)) -# define setPinOutput(pin) (DDRx_ADDRESS(pin) |= _BV((pin)&0xF)) -# define writePinHigh(pin) (PORTx_ADDRESS(pin) |= _BV((pin)&0xF)) -# define writePinLow(pin) (PORTx_ADDRESS(pin) &= ~_BV((pin)&0xF)) -# define readPin(pin) ((bool)(PINx_ADDRESS(pin) & _BV((pin)&0xF))) - -# define ALWAYS_INLINE __attribute__((always_inline)) -# define NO_INLINE __attribute__((noinline)) -# define _delay_sub_us(x) __builtin_avr_delay_cycles(x) - -// parity check -# define ODD_PARITY 1 -# define EVEN_PARITY 0 -# define PARITY EVEN_PARITY - -# ifdef SERIAL_DELAY -// custom setup in config.h -// #define TID_SEND_ADJUST 2 -// #define SERIAL_DELAY 6 // micro sec -// #define READ_WRITE_START_ADJUST 30 // cycles -// #define READ_WRITE_WIDTH_ADJUST 8 // cycles -# else -// ============ Standard setups ============ - -# ifndef SELECT_SOFT_SERIAL_SPEED -# define SELECT_SOFT_SERIAL_SPEED 1 -// 0: about 189kbps (Experimental only) -// 1: about 137kbps (default) -// 2: about 75kbps -// 3: about 39kbps -// 4: about 26kbps -// 5: about 20kbps -# endif - -# if __GNUC__ < 6 -# define TID_SEND_ADJUST 14 -# else -# define TID_SEND_ADJUST 2 -# endif - -# if SELECT_SOFT_SERIAL_SPEED == 0 -// Very High speed -# define SERIAL_DELAY 4 // micro sec -# if __GNUC__ < 6 -# define READ_WRITE_START_ADJUST 33 // cycles -# define READ_WRITE_WIDTH_ADJUST 3 // cycles -# else -# define READ_WRITE_START_ADJUST 34 // cycles -# define READ_WRITE_WIDTH_ADJUST 7 // cycles -# endif -# elif SELECT_SOFT_SERIAL_SPEED == 1 -// High speed -# define SERIAL_DELAY 6 // micro sec -# if __GNUC__ < 6 -# define READ_WRITE_START_ADJUST 30 // cycles -# define READ_WRITE_WIDTH_ADJUST 3 // cycles -# else -# define READ_WRITE_START_ADJUST 33 // cycles -# define READ_WRITE_WIDTH_ADJUST 7 // cycles -# endif -# elif SELECT_SOFT_SERIAL_SPEED == 2 -// Middle speed -# define SERIAL_DELAY 12 // micro sec -# define READ_WRITE_START_ADJUST 30 // cycles -# if __GNUC__ < 6 -# define READ_WRITE_WIDTH_ADJUST 3 // cycles -# else -# define READ_WRITE_WIDTH_ADJUST 7 // cycles -# endif -# elif SELECT_SOFT_SERIAL_SPEED == 3 -// Low speed -# define SERIAL_DELAY 24 // micro sec -# define READ_WRITE_START_ADJUST 30 // cycles -# if __GNUC__ < 6 -# define READ_WRITE_WIDTH_ADJUST 3 // cycles -# else -# define READ_WRITE_WIDTH_ADJUST 7 // cycles -# endif -# elif SELECT_SOFT_SERIAL_SPEED == 4 -// Very Low speed -# define SERIAL_DELAY 36 // micro sec -# define READ_WRITE_START_ADJUST 30 // cycles -# if __GNUC__ < 6 -# define READ_WRITE_WIDTH_ADJUST 3 // cycles -# else -# define READ_WRITE_WIDTH_ADJUST 7 // cycles -# endif -# elif SELECT_SOFT_SERIAL_SPEED == 5 -// Ultra Low speed -# define SERIAL_DELAY 48 // micro sec -# define READ_WRITE_START_ADJUST 30 // cycles -# if __GNUC__ < 6 -# define READ_WRITE_WIDTH_ADJUST 3 // cycles -# else -# define READ_WRITE_WIDTH_ADJUST 7 // cycles -# endif -# else -# error invalid SELECT_SOFT_SERIAL_SPEED value -# endif /* SELECT_SOFT_SERIAL_SPEED */ -# endif /* SERIAL_DELAY */ - -# define SERIAL_DELAY_HALF1 (SERIAL_DELAY / 2) -# define SERIAL_DELAY_HALF2 (SERIAL_DELAY - SERIAL_DELAY / 2) - -# define SLAVE_INT_WIDTH_US 1 -# ifndef SERIAL_USE_MULTI_TRANSACTION -# define SLAVE_INT_RESPONSE_TIME SERIAL_DELAY -# else -# define SLAVE_INT_ACK_WIDTH_UNIT 2 -# define SLAVE_INT_ACK_WIDTH 4 -# endif - -static SSTD_t *Transaction_table = NULL; -static uint8_t Transaction_table_size = 0; - -inline static void serial_delay(void) ALWAYS_INLINE; -inline static void serial_delay(void) { _delay_us(SERIAL_DELAY); } - -inline static void serial_delay_half1(void) ALWAYS_INLINE; -inline static void serial_delay_half1(void) { _delay_us(SERIAL_DELAY_HALF1); } - -inline static void serial_delay_half2(void) ALWAYS_INLINE; -inline static void serial_delay_half2(void) { _delay_us(SERIAL_DELAY_HALF2); } - -inline static void serial_output(void) ALWAYS_INLINE; -inline static void serial_output(void) { setPinOutput(SOFT_SERIAL_PIN); } - -// make the serial pin an input with pull-up resistor -inline static void serial_input_with_pullup(void) ALWAYS_INLINE; -inline static void serial_input_with_pullup(void) { setPinInputHigh(SOFT_SERIAL_PIN); } - -inline static uint8_t serial_read_pin(void) ALWAYS_INLINE; -inline static uint8_t serial_read_pin(void) { return !!readPin(SOFT_SERIAL_PIN); } - -inline static void serial_low(void) ALWAYS_INLINE; -inline static void serial_low(void) { writePinLow(SOFT_SERIAL_PIN); } - -inline static void serial_high(void) ALWAYS_INLINE; -inline static void serial_high(void) { writePinHigh(SOFT_SERIAL_PIN); } - -void soft_serial_initiator_init(SSTD_t *sstd_table, int sstd_table_size) { - Transaction_table = sstd_table; - Transaction_table_size = (uint8_t)sstd_table_size; - serial_output(); - serial_high(); -} - -void soft_serial_target_init(SSTD_t *sstd_table, int sstd_table_size) { - Transaction_table = sstd_table; - Transaction_table_size = (uint8_t)sstd_table_size; - serial_input_with_pullup(); - - // Enable INT0-INT7 - EIMSK |= EIMSK_BIT; - EICRx &= EICRx_BIT; -} - -// Used by the sender to synchronize timing with the reciver. -static void sync_recv(void) NO_INLINE; -static void sync_recv(void) { - for (uint8_t i = 0; i < SERIAL_DELAY * 5 && serial_read_pin(); i++) { - } - // This shouldn't hang if the target disconnects because the - // serial line will float to high if the target does disconnect. - while (!serial_read_pin()) - ; -} - -// Used by the reciver to send a synchronization signal to the sender. -static void sync_send(void) NO_INLINE; -static void sync_send(void) { - serial_low(); - serial_delay(); - serial_high(); -} - -// Reads a byte from the serial line -static uint8_t serial_read_chunk(uint8_t *pterrcount, uint8_t bit) NO_INLINE; -static uint8_t serial_read_chunk(uint8_t *pterrcount, uint8_t bit) { - uint8_t byte, i, p, pb; - - _delay_sub_us(READ_WRITE_START_ADJUST); - for (i = 0, byte = 0, p = PARITY; i < bit; i++) { - serial_delay_half1(); // read the middle of pulses - if (serial_read_pin()) { - byte = (byte << 1) | 1; - p ^= 1; - } else { - byte = (byte << 1) | 0; - p ^= 0; - } - _delay_sub_us(READ_WRITE_WIDTH_ADJUST); - serial_delay_half2(); - } - /* recive parity bit */ - serial_delay_half1(); // read the middle of pulses - pb = serial_read_pin(); - _delay_sub_us(READ_WRITE_WIDTH_ADJUST); - serial_delay_half2(); - - *pterrcount += (p != pb) ? 1 : 0; - - return byte; -} - -// Sends a byte with MSB ordering -void serial_write_chunk(uint8_t data, uint8_t bit) NO_INLINE; -void serial_write_chunk(uint8_t data, uint8_t bit) { - uint8_t b, p; - for (p = PARITY, b = 1 << (bit - 1); b; b >>= 1) { - if (data & b) { - serial_high(); - p ^= 1; - } else { - serial_low(); - p ^= 0; - } - serial_delay(); - } - /* send parity bit */ - if (p & 1) { - serial_high(); - } else { - serial_low(); - } - serial_delay(); - - serial_low(); // sync_send() / senc_recv() need raise edge -} - -static void serial_send_packet(uint8_t *buffer, uint8_t size) NO_INLINE; -static void serial_send_packet(uint8_t *buffer, uint8_t size) { - for (uint8_t i = 0; i < size; ++i) { - uint8_t data; - data = buffer[i]; - sync_send(); - serial_write_chunk(data, 8); - } -} - -static uint8_t serial_recive_packet(uint8_t *buffer, uint8_t size) NO_INLINE; -static uint8_t serial_recive_packet(uint8_t *buffer, uint8_t size) { - uint8_t pecount = 0; - for (uint8_t i = 0; i < size; ++i) { - uint8_t data; - sync_recv(); - data = serial_read_chunk(&pecount, 8); - buffer[i] = data; - } - return pecount == 0; -} - -inline static void change_sender2reciver(void) { - sync_send(); // 0 - serial_delay_half1(); // 1 - serial_low(); // 2 - serial_input_with_pullup(); // 2 - serial_delay_half1(); // 3 -} - -inline static void change_reciver2sender(void) { - sync_recv(); // 0 - serial_delay(); // 1 - serial_low(); // 3 - serial_output(); // 3 - serial_delay_half1(); // 4 -} - -static inline uint8_t nibble_bits_count(uint8_t bits) { - bits = (bits & 0x5) + (bits >> 1 & 0x5); - bits = (bits & 0x3) + (bits >> 2 & 0x3); - return bits; -} - -// interrupt handle to be used by the target device -ISR(SERIAL_PIN_INTERRUPT) { -# ifndef SERIAL_USE_MULTI_TRANSACTION - serial_low(); - serial_output(); - SSTD_t *trans = Transaction_table; -# else - // recive transaction table index - uint8_t tid, bits; - uint8_t pecount = 0; - sync_recv(); - bits = serial_read_chunk(&pecount, 7); - tid = bits >> 3; - bits = (bits & 7) != nibble_bits_count(tid); - if (bits || pecount > 0 || tid > Transaction_table_size) { - return; - } - serial_delay_half1(); - - serial_high(); // response step1 low->high - serial_output(); - _delay_sub_us(SLAVE_INT_ACK_WIDTH_UNIT * SLAVE_INT_ACK_WIDTH); - SSTD_t *trans = &Transaction_table[tid]; - serial_low(); // response step2 ack high->low -# endif - - // target send phase - if (trans->target2initiator_buffer_size > 0) serial_send_packet((uint8_t *)trans->target2initiator_buffer, trans->target2initiator_buffer_size); - // target switch to input - change_sender2reciver(); - - // target recive phase - if (trans->initiator2target_buffer_size > 0) { - if (serial_recive_packet((uint8_t *)trans->initiator2target_buffer, trans->initiator2target_buffer_size)) { - *trans->status = TRANSACTION_ACCEPTED; - } else { - *trans->status = TRANSACTION_DATA_ERROR; - } - } else { - *trans->status = TRANSACTION_ACCEPTED; - } - - sync_recv(); // weit initiator output to high -} - -///////// -// start transaction by initiator -// -// int soft_serial_transaction(int sstd_index) -// -// Returns: -// TRANSACTION_END -// TRANSACTION_NO_RESPONSE -// TRANSACTION_DATA_ERROR -// this code is very time dependent, so we need to disable interrupts -# ifndef SERIAL_USE_MULTI_TRANSACTION -int soft_serial_transaction(void) { - SSTD_t *trans = Transaction_table; -# else -int soft_serial_transaction(int sstd_index) { - if (sstd_index > Transaction_table_size) return TRANSACTION_TYPE_ERROR; - SSTD_t *trans = &Transaction_table[sstd_index]; -# endif - cli(); - - // signal to the target that we want to start a transaction - serial_output(); - serial_low(); - _delay_us(SLAVE_INT_WIDTH_US); - -# ifndef SERIAL_USE_MULTI_TRANSACTION - // wait for the target response - serial_input_with_pullup(); - _delay_us(SLAVE_INT_RESPONSE_TIME); - - // check if the target is present - if (serial_read_pin()) { - // target failed to pull the line low, assume not present - serial_output(); - serial_high(); - *trans->status = TRANSACTION_NO_RESPONSE; - sei(); - return TRANSACTION_NO_RESPONSE; - } - -# else - // send transaction table index - int tid = (sstd_index << 3) | (7 & nibble_bits_count(sstd_index)); - sync_send(); - _delay_sub_us(TID_SEND_ADJUST); - serial_write_chunk(tid, 7); - serial_delay_half1(); - - // wait for the target response (step1 low->high) - serial_input_with_pullup(); - while (!serial_read_pin()) { - _delay_sub_us(2); - } - - // check if the target is present (step2 high->low) - for (int i = 0; serial_read_pin(); i++) { - if (i > SLAVE_INT_ACK_WIDTH + 1) { - // slave failed to pull the line low, assume not present - serial_output(); - serial_high(); - *trans->status = TRANSACTION_NO_RESPONSE; - sei(); - return TRANSACTION_NO_RESPONSE; - } - _delay_sub_us(SLAVE_INT_ACK_WIDTH_UNIT); - } -# endif - - // initiator recive phase - // if the target is present syncronize with it - if (trans->target2initiator_buffer_size > 0) { - if (!serial_recive_packet((uint8_t *)trans->target2initiator_buffer, trans->target2initiator_buffer_size)) { - serial_output(); - serial_high(); - *trans->status = TRANSACTION_DATA_ERROR; - sei(); - return TRANSACTION_DATA_ERROR; - } - } - - // initiator switch to output - change_reciver2sender(); - - // initiator send phase - if (trans->initiator2target_buffer_size > 0) { - serial_send_packet((uint8_t *)trans->initiator2target_buffer, trans->initiator2target_buffer_size); - } - - // always, release the line when not in use - sync_send(); - - *trans->status = TRANSACTION_END; - sei(); - return TRANSACTION_END; -} - -# ifdef SERIAL_USE_MULTI_TRANSACTION -int soft_serial_get_and_clean_status(int sstd_index) { - SSTD_t *trans = &Transaction_table[sstd_index]; - cli(); - int retval = *trans->status; - *trans->status = 0; - ; - sei(); - return retval; -} -# endif - -#endif - -// Helix serial.c history -// 2018-1-29 fork from let's split and add PD2, modify sync_recv() (#2308, bceffdefc) -// 2018-6-28 bug fix master to slave comm and speed up (#3255, 1038bbef4) -// (adjusted with avr-gcc 4.9.2) -// 2018-7-13 remove USE_SERIAL_PD2 macro (#3374, f30d6dd78) -// (adjusted with avr-gcc 4.9.2) -// 2018-8-11 add support multi-type transaction (#3608, feb5e4aae) -// (adjusted with avr-gcc 4.9.2) -// 2018-10-21 fix serial and RGB animation conflict (#4191, 4665e4fff) -// (adjusted with avr-gcc 7.3.0) -// 2018-10-28 re-adjust compiler depend value of delay (#4269, 8517f8a66) -// (adjusted with avr-gcc 5.4.0, 7.3.0) -// 2018-12-17 copy to TOP/quantum/split_common/ and remove backward compatibility code (#4669) diff --git a/drivers/avr/serial.h b/drivers/avr/serial.h deleted file mode 100644 index 53e66cf905cc..000000000000 --- a/drivers/avr/serial.h +++ /dev/null @@ -1,62 +0,0 @@ -#pragma once - -#include - -// ///////////////////////////////////////////////////////////////// -// Need Soft Serial defines in config.h -// ///////////////////////////////////////////////////////////////// -// ex. -// #define SOFT_SERIAL_PIN ?? // ?? = D0,D1,D2,D3,E6 -// OPTIONAL: #define SELECT_SOFT_SERIAL_SPEED ? // ? = 1,2,3,4,5 -// // 1: about 137kbps (default) -// // 2: about 75kbps -// // 3: about 39kbps -// // 4: about 26kbps -// // 5: about 20kbps -// -// //// USE simple API (using signle-type transaction function) -// /* nothing */ -// //// USE flexible API (using multi-type transaction function) -// #define SERIAL_USE_MULTI_TRANSACTION -// -// ///////////////////////////////////////////////////////////////// - -// Soft Serial Transaction Descriptor -typedef struct _SSTD_t { - uint8_t *status; - uint8_t initiator2target_buffer_size; - uint8_t *initiator2target_buffer; - uint8_t target2initiator_buffer_size; - uint8_t *target2initiator_buffer; -} SSTD_t; -#define TID_LIMIT(table) (sizeof(table) / sizeof(SSTD_t)) - -// initiator is transaction start side -void soft_serial_initiator_init(SSTD_t *sstd_table, int sstd_table_size); -// target is interrupt accept side -void soft_serial_target_init(SSTD_t *sstd_table, int sstd_table_size); - -// initiator resullt -#define TRANSACTION_END 0 -#define TRANSACTION_NO_RESPONSE 0x1 -#define TRANSACTION_DATA_ERROR 0x2 -#define TRANSACTION_TYPE_ERROR 0x4 -#ifndef SERIAL_USE_MULTI_TRANSACTION -int soft_serial_transaction(void); -#else -int soft_serial_transaction(int sstd_index); -#endif - -// target status -// *SSTD_t.status has -// initiator: -// TRANSACTION_END -// or TRANSACTION_NO_RESPONSE -// or TRANSACTION_DATA_ERROR -// target: -// TRANSACTION_DATA_ERROR -// or TRANSACTION_ACCEPTED -#define TRANSACTION_ACCEPTED 0x8 -#ifdef SERIAL_USE_MULTI_TRANSACTION -int soft_serial_get_and_clean_status(int sstd_index); -#endif diff --git a/drivers/avr/uart.c b/drivers/avr/uart.c deleted file mode 100644 index c6abcb6fe0d1..000000000000 --- a/drivers/avr/uart.c +++ /dev/null @@ -1,170 +0,0 @@ -/* UART Example for Teensy USB Development Board - * http://www.pjrc.com/teensy/ - * Copyright (c) 2009 PJRC.COM, LLC - * - * 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. - */ - -// Version 1.0: Initial Release -// Version 1.1: Add support for Teensy 2.0, minor optimizations - -#include -#include - -#include "uart.h" - -#if defined(__AVR_AT90USB162__) || defined(__AVR_ATmega16U2__) || defined(__AVR_ATmega32U2__) || defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__) || defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) -# define UDRn UDR1 -# define UBRRnL UBRR1L -# define UCSRnA UCSR1A -# define UCSRnB UCSR1B -# define UCSRnC UCSR1C -# define U2Xn U2X1 -# define RXENn RXEN1 -# define TXENn TXEN1 -# define RXCIEn RXCIE1 -# define UCSZn1 UCSZ11 -# define UCSZn0 UCSZ10 -# define UDRIEn UDRIE1 -# define USARTn_UDRE_vect USART1_UDRE_vect -# define USARTn_RX_vect USART1_RX_vect -#elif defined(__AVR_ATmega32A__) -# define UDRn UDR -# define UBRRnL UBRRL -# define UCSRnA UCSRA -# define UCSRnB UCSRB -# define UCSRnC UCSRC -# define U2Xn U2X -# define RXENn RXEN -# define TXENn TXEN -# define RXCIEn RXCIE -# define UCSZn1 UCSZ1 -# define UCSZn0 UCSZ0 -# define UDRIEn UDRIE -# define USARTn_UDRE_vect USART_UDRE_vect -# define USARTn_RX_vect USART_RX_vect -#elif defined(__AVR_ATmega328__) || defined(__AVR_ATmega328P__) -# define UDRn UDR0 -# define UBRRnL UBRR0L -# define UCSRnA UCSR0A -# define UCSRnB UCSR0B -# define UCSRnC UCSR0C -# define U2Xn U2X0 -# define RXENn RXEN0 -# define TXENn TXEN0 -# define RXCIEn RXCIE0 -# define UCSZn1 UCSZ01 -# define UCSZn0 UCSZ00 -# define UDRIEn UDRIE0 -# define USARTn_UDRE_vect USART_UDRE_vect -# define USARTn_RX_vect USART_RX_vect -#endif - -// These buffers may be any size from 2 to 256 bytes. -#define RX_BUFFER_SIZE 64 -#define TX_BUFFER_SIZE 256 - -static volatile uint8_t tx_buffer[TX_BUFFER_SIZE]; -static volatile uint8_t tx_buffer_head; -static volatile uint8_t tx_buffer_tail; -static volatile uint8_t rx_buffer[RX_BUFFER_SIZE]; -static volatile uint8_t rx_buffer_head; -static volatile uint8_t rx_buffer_tail; - -// Initialize the UART -void uart_init(uint32_t baud) { - cli(); - UBRRnL = (F_CPU / 4 / baud - 1) / 2; - UCSRnA = (1 << U2Xn); - UCSRnB = (1 << RXENn) | (1 << TXENn) | (1 << RXCIEn); - UCSRnC = (1 << UCSZn1) | (1 << UCSZn0); - tx_buffer_head = tx_buffer_tail = 0; - rx_buffer_head = rx_buffer_tail = 0; - sei(); -} - -// Transmit a byte -void uart_putchar(uint8_t c) { - uint8_t i; - - i = tx_buffer_head + 1; - if (i >= TX_BUFFER_SIZE) i = 0; - // return immediately to avoid deadlock when interrupt is disabled(called from ISR) - if (tx_buffer_tail == i && (SREG & (1 << SREG_I)) == 0) return; - while (tx_buffer_tail == i) - ; // wait until space in buffer - // cli(); - tx_buffer[i] = c; - tx_buffer_head = i; - UCSRnB = (1 << RXENn) | (1 << TXENn) | (1 << RXCIEn) | (1 << UDRIEn); - // sei(); -} - -// Receive a byte -uint8_t uart_getchar(void) { - uint8_t c, i; - - while (rx_buffer_head == rx_buffer_tail) - ; // wait for character - i = rx_buffer_tail + 1; - if (i >= RX_BUFFER_SIZE) i = 0; - c = rx_buffer[i]; - rx_buffer_tail = i; - return c; -} - -// Return whether the number of bytes waiting in the receive buffer is nonzero. -// Call this before uart_getchar() to check if it will need -// to wait for a byte to arrive. -bool uart_available(void) { - uint8_t head, tail; - - head = rx_buffer_head; - tail = rx_buffer_tail; - if (head >= tail) return (head - tail) > 0; - return (RX_BUFFER_SIZE + head - tail) > 0; -} - -// Transmit Interrupt -ISR(USARTn_UDRE_vect) { - uint8_t i; - - if (tx_buffer_head == tx_buffer_tail) { - // buffer is empty, disable transmit interrupt - UCSRnB = (1 << RXENn) | (1 << TXENn) | (1 << RXCIEn); - } else { - i = tx_buffer_tail + 1; - if (i >= TX_BUFFER_SIZE) i = 0; - UDRn = tx_buffer[i]; - tx_buffer_tail = i; - } -} - -// Receive Interrupt -ISR(USARTn_RX_vect) { - uint8_t c, i; - - c = UDRn; - i = rx_buffer_head + 1; - if (i >= RX_BUFFER_SIZE) i = 0; - if (i != rx_buffer_tail) { - rx_buffer[i] = c; - rx_buffer_head = i; - } -} diff --git a/drivers/avr/uart.h b/drivers/avr/uart.h deleted file mode 100644 index 602eb3d8b0f9..000000000000 --- a/drivers/avr/uart.h +++ /dev/null @@ -1,35 +0,0 @@ -/* UART Example for Teensy USB Development Board - * http://www.pjrc.com/teensy/ - * Copyright (c) 2009 PJRC.COM, LLC - * - * 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 -#include - -void uart_init(uint32_t baud); - -void uart_putchar(uint8_t c); - -uint8_t uart_getchar(void); - -bool uart_available(void); diff --git a/drivers/avr/ws2812.c b/drivers/avr/ws2812.c deleted file mode 100644 index 77c492cd4c4c..000000000000 --- a/drivers/avr/ws2812.c +++ /dev/null @@ -1,176 +0,0 @@ -/* - * light weight WS2812 lib V2.0b - * - * Controls WS2811/WS2812/WS2812B RGB-LEDs - * Author: Tim (cpldcpu@gmail.com) - * - * Jan 18th, 2014 v2.0b Initial Version - * Nov 29th, 2015 v2.3 Added SK6812RGBW support - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include "ws2812.h" -#include -#include -#include - -#define pinmask(pin) (_BV((pin)&0xF)) - -/* - * Forward declare internal functions - * - * The functions take a byte-array and send to the data output as WS2812 bitstream. - * The length is the number of bytes to send - three per LED. - */ - -static inline void ws2812_sendarray_mask(uint8_t *data, uint16_t datlen, uint8_t masklo, uint8_t maskhi); - -void ws2812_setleds(LED_TYPE *ledarray, uint16_t number_of_leds) { - DDRx_ADDRESS(RGB_DI_PIN) |= pinmask(RGB_DI_PIN); - - uint8_t masklo = ~(pinmask(RGB_DI_PIN)) & PORTx_ADDRESS(RGB_DI_PIN); - uint8_t maskhi = pinmask(RGB_DI_PIN) | PORTx_ADDRESS(RGB_DI_PIN); - - ws2812_sendarray_mask((uint8_t *)ledarray, number_of_leds * sizeof(LED_TYPE), masklo, maskhi); - - _delay_us(WS2812_TRST_US); -} - -/* - This routine writes an array of bytes with RGB values to the Dataout pin - using the fast 800kHz clockless WS2811/2812 protocol. -*/ - -// Timing in ns -#define w_zeropulse 350 -#define w_onepulse 900 -#define w_totalperiod 1250 - -// Fixed cycles used by the inner loop -#define w_fixedlow 2 -#define w_fixedhigh 4 -#define w_fixedtotal 8 - -// Insert NOPs to match the timing, if possible -#define w_zerocycles (((F_CPU / 1000) * w_zeropulse) / 1000000) -#define w_onecycles (((F_CPU / 1000) * w_onepulse + 500000) / 1000000) -#define w_totalcycles (((F_CPU / 1000) * w_totalperiod + 500000) / 1000000) - -// w1_nops - nops between rising edge and falling edge - low -#if w_zerocycles >= w_fixedlow -# define w1_nops (w_zerocycles - w_fixedlow) -#else -# define w1_nops 0 -#endif - -// w2_nops - nops between fe low and fe high -#if w_onecycles >= (w_fixedhigh + w1_nops) -# define w2_nops (w_onecycles - w_fixedhigh - w1_nops) -#else -# define w2_nops 0 -#endif - -// w3_nops - nops to complete loop -#if w_totalcycles >= (w_fixedtotal + w1_nops + w2_nops) -# define w3_nops (w_totalcycles - w_fixedtotal - w1_nops - w2_nops) -#else -# define w3_nops 0 -#endif - -// The only critical timing parameter is the minimum pulse length of the "0" -// Warn or throw error if this timing can not be met with current F_CPU settings. -#define w_lowtime ((w1_nops + w_fixedlow) * 1000000) / (F_CPU / 1000) -#if w_lowtime > 550 -# error "Light_ws2812: Sorry, the clock speed is too low. Did you set F_CPU correctly?" -#elif w_lowtime > 450 -# warning "Light_ws2812: The timing is critical and may only work on WS2812B, not on WS2812(S)." -# warning "Please consider a higher clockspeed, if possible" -#endif - -#define w_nop1 "nop \n\t" -#define w_nop2 "rjmp .+0 \n\t" -#define w_nop4 w_nop2 w_nop2 -#define w_nop8 w_nop4 w_nop4 -#define w_nop16 w_nop8 w_nop8 - -static inline void ws2812_sendarray_mask(uint8_t *data, uint16_t datlen, uint8_t masklo, uint8_t maskhi) { - uint8_t curbyte, ctr, sreg_prev; - - sreg_prev = SREG; - cli(); - - while (datlen--) { - curbyte = (*data++); - - asm volatile(" ldi %0,8 \n\t" - "loop%=: \n\t" - " out %2,%3 \n\t" // '1' [01] '0' [01] - re -#if (w1_nops & 1) - w_nop1 -#endif -#if (w1_nops & 2) - w_nop2 -#endif -#if (w1_nops & 4) - w_nop4 -#endif -#if (w1_nops & 8) - w_nop8 -#endif -#if (w1_nops & 16) - w_nop16 -#endif - " sbrs %1,7 \n\t" // '1' [03] '0' [02] - " out %2,%4 \n\t" // '1' [--] '0' [03] - fe-low - " lsl %1 \n\t" // '1' [04] '0' [04] -#if (w2_nops & 1) - w_nop1 -#endif -#if (w2_nops & 2) - w_nop2 -#endif -#if (w2_nops & 4) - w_nop4 -#endif -#if (w2_nops & 8) - w_nop8 -#endif -#if (w2_nops & 16) - w_nop16 -#endif - " out %2,%4 \n\t" // '1' [+1] '0' [+1] - fe-high -#if (w3_nops & 1) - w_nop1 -#endif -#if (w3_nops & 2) - w_nop2 -#endif -#if (w3_nops & 4) - w_nop4 -#endif -#if (w3_nops & 8) - w_nop8 -#endif -#if (w3_nops & 16) - w_nop16 -#endif - - " dec %0 \n\t" // '1' [+2] '0' [+2] - " brne loop%=\n\t" // '1' [+3] '0' [+4] - : "=&d"(ctr) - : "r"(curbyte), "I"(_SFR_IO_ADDR(PORTx_ADDRESS(RGB_DI_PIN))), "r"(maskhi), "r"(masklo)); - } - - SREG = sreg_prev; -} diff --git a/tmk_core/protocol/lufa/adafruit_ble.cpp b/drivers/bluetooth/adafruit_ble.cpp similarity index 95% rename from tmk_core/protocol/lufa/adafruit_ble.cpp rename to drivers/bluetooth/adafruit_ble.cpp index 3f2cc35734a9..34a780e9a5cc 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 similarity index 100% rename from tmk_core/protocol/lufa/adafruit_ble.h rename to drivers/bluetooth/adafruit_ble.h diff --git a/tmk_core/protocol/lufa/outputselect.c b/drivers/bluetooth/outputselect.c similarity index 100% rename from tmk_core/protocol/lufa/outputselect.c rename to drivers/bluetooth/outputselect.c diff --git a/tmk_core/protocol/lufa/outputselect.h b/drivers/bluetooth/outputselect.h similarity index 100% rename from tmk_core/protocol/lufa/outputselect.h rename to drivers/bluetooth/outputselect.h diff --git a/tmk_core/protocol/lufa/ringbuffer.hpp b/drivers/bluetooth/ringbuffer.hpp similarity index 100% rename from tmk_core/protocol/lufa/ringbuffer.hpp rename to drivers/bluetooth/ringbuffer.hpp diff --git a/drivers/chibios/analog.c b/drivers/chibios/analog.c deleted file mode 100644 index 8c476fcac205..000000000000 --- a/drivers/chibios/analog.c +++ /dev/null @@ -1,321 +0,0 @@ -/* Copyright 2019 Drew Mills - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "quantum.h" -#include "analog.h" -#include -#include - -#if !HAL_USE_ADC -# error "You need to set HAL_USE_ADC to TRUE in your halconf.h to use the ADC." -#endif - -#if !STM32_ADC_USE_ADC1 && !STM32_ADC_USE_ADC2 && !STM32_ADC_USE_ADC3 && !STM32_ADC_USE_ADC4 -# error "You need to set one of the 'STM32_ADC_USE_ADCx' settings to TRUE in your mcuconf.h to use the ADC." -#endif - -#if STM32_ADC_DUAL_MODE -# error "STM32 ADC Dual Mode is not supported at this time." -#endif - -#if STM32_ADCV3_OVERSAMPLING -# error "STM32 ADCV3 Oversampling is not supported at this time." -#endif - -// Otherwise assume V3 -#if defined(STM32F0XX) || defined(STM32L0XX) -# define USE_ADCV1 -#elif defined(STM32F1XX) || defined(STM32F2XX) || defined(STM32F4XX) -# define USE_ADCV2 -#endif - -// BODGE to make v2 look like v1,3 and 4 -#ifdef USE_ADCV2 -# if !defined(ADC_SMPR_SMP_1P5) && defined(ADC_SAMPLE_3) -# define ADC_SMPR_SMP_1P5 ADC_SAMPLE_3 -# define ADC_SMPR_SMP_7P5 ADC_SAMPLE_15 -# define ADC_SMPR_SMP_13P5 ADC_SAMPLE_28 -# define ADC_SMPR_SMP_28P5 ADC_SAMPLE_56 -# define ADC_SMPR_SMP_41P5 ADC_SAMPLE_84 -# define ADC_SMPR_SMP_55P5 ADC_SAMPLE_112 -# define ADC_SMPR_SMP_71P5 ADC_SAMPLE_144 -# define ADC_SMPR_SMP_239P5 ADC_SAMPLE_480 -# endif - -# if !defined(ADC_SMPR_SMP_1P5) && defined(ADC_SAMPLE_1P5) -# define ADC_SMPR_SMP_1P5 ADC_SAMPLE_1P5 -# define ADC_SMPR_SMP_7P5 ADC_SAMPLE_7P5 -# define ADC_SMPR_SMP_13P5 ADC_SAMPLE_13P5 -# define ADC_SMPR_SMP_28P5 ADC_SAMPLE_28P5 -# define ADC_SMPR_SMP_41P5 ADC_SAMPLE_41P5 -# define ADC_SMPR_SMP_55P5 ADC_SAMPLE_55P5 -# define ADC_SMPR_SMP_71P5 ADC_SAMPLE_71P5 -# define ADC_SMPR_SMP_239P5 ADC_SAMPLE_239P5 -# endif - -// we still sample at 12bit, but scale down to the requested bit range -# define ADC_CFGR1_RES_12BIT 12 -# define ADC_CFGR1_RES_10BIT 10 -# define ADC_CFGR1_RES_8BIT 8 -# define ADC_CFGR1_RES_6BIT 6 -#endif - -/* User configurable ADC options */ -#ifndef ADC_COUNT -# if defined(STM32F0XX) || defined(STM32F1XX) || defined(STM32F4XX) -# define ADC_COUNT 1 -# elif defined(STM32F3XX) -# define ADC_COUNT 4 -# else -# error "ADC_COUNT has not been set for this ARM microcontroller." -# endif -#endif - -#ifndef ADC_NUM_CHANNELS -# define ADC_NUM_CHANNELS 1 -#elif ADC_NUM_CHANNELS != 1 -# error "The ARM ADC implementation currently only supports reading one channel at a time." -#endif - -#ifndef ADC_BUFFER_DEPTH -# define ADC_BUFFER_DEPTH 1 -#endif - -// For more sampling rate options, look at hal_adc_lld.h in ChibiOS -#ifndef ADC_SAMPLING_RATE -# define ADC_SAMPLING_RATE ADC_SMPR_SMP_1P5 -#endif - -// Options are 12, 10, 8, and 6 bit. -#ifndef ADC_RESOLUTION -# ifdef ADC_CFGR_RES_10BITS // ADCv3, ADCv4 -# define ADC_RESOLUTION ADC_CFGR_RES_10BITS -# else // ADCv1, ADCv5, or the bodge for ADCv2 above -# define ADC_RESOLUTION ADC_CFGR1_RES_10BIT -# endif -#endif - -static ADCConfig adcCfg = {}; -static adcsample_t sampleBuffer[ADC_NUM_CHANNELS * ADC_BUFFER_DEPTH]; - -// Initialize to max number of ADCs, set to empty object to initialize all to false. -static bool adcInitialized[ADC_COUNT] = {}; - -// TODO: add back TR handling??? -static ADCConversionGroup adcConversionGroup = { - .circular = FALSE, - .num_channels = (uint16_t)(ADC_NUM_CHANNELS), -#if defined(USE_ADCV1) - .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... -# 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), -#else - .cfgr = ADC_CFGR_CONT | ADC_RESOLUTION, - .smpr = {ADC_SMPR1_SMP_AN0(ADC_SAMPLING_RATE) | ADC_SMPR1_SMP_AN1(ADC_SAMPLING_RATE) | ADC_SMPR1_SMP_AN2(ADC_SAMPLING_RATE) | ADC_SMPR1_SMP_AN3(ADC_SAMPLING_RATE) | ADC_SMPR1_SMP_AN4(ADC_SAMPLING_RATE) | ADC_SMPR1_SMP_AN5(ADC_SAMPLING_RATE) | ADC_SMPR1_SMP_AN6(ADC_SAMPLING_RATE) | ADC_SMPR1_SMP_AN7(ADC_SAMPLING_RATE) | ADC_SMPR1_SMP_AN8(ADC_SAMPLING_RATE) | ADC_SMPR1_SMP_AN9(ADC_SAMPLING_RATE), ADC_SMPR2_SMP_AN10(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN11(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN12(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN13(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN14(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN15(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN16(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN17(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN18(ADC_SAMPLING_RATE)}, -#endif -}; - -// clang-format off -__attribute__((weak)) adc_mux pinToMux(pin_t pin) { - switch (pin) { -#if defined(STM32F0XX) - case A0: return TO_MUX( ADC_CHSELR_CHSEL0, 0 ); - case A1: return TO_MUX( ADC_CHSELR_CHSEL1, 0 ); - case A2: return TO_MUX( ADC_CHSELR_CHSEL2, 0 ); - case A3: return TO_MUX( ADC_CHSELR_CHSEL3, 0 ); - case A4: return TO_MUX( ADC_CHSELR_CHSEL4, 0 ); - case A5: return TO_MUX( ADC_CHSELR_CHSEL5, 0 ); - case A6: return TO_MUX( ADC_CHSELR_CHSEL6, 0 ); - case A7: return TO_MUX( ADC_CHSELR_CHSEL7, 0 ); - case B0: return TO_MUX( ADC_CHSELR_CHSEL8, 0 ); - case B1: return TO_MUX( ADC_CHSELR_CHSEL9, 0 ); - case C0: return TO_MUX( ADC_CHSELR_CHSEL10, 0 ); - case C1: return TO_MUX( ADC_CHSELR_CHSEL11, 0 ); - case C2: return TO_MUX( ADC_CHSELR_CHSEL12, 0 ); - case C3: return TO_MUX( ADC_CHSELR_CHSEL13, 0 ); - case C4: return TO_MUX( ADC_CHSELR_CHSEL14, 0 ); - case C5: return TO_MUX( ADC_CHSELR_CHSEL15, 0 ); -#elif defined(STM32F3XX) - case A0: return TO_MUX( ADC_CHANNEL_IN1, 0 ); - case A1: return TO_MUX( ADC_CHANNEL_IN2, 0 ); - case A2: return TO_MUX( ADC_CHANNEL_IN3, 0 ); - case A3: return TO_MUX( ADC_CHANNEL_IN4, 0 ); - case A4: return TO_MUX( ADC_CHANNEL_IN1, 1 ); - case A5: return TO_MUX( ADC_CHANNEL_IN2, 1 ); - case A6: return TO_MUX( ADC_CHANNEL_IN3, 1 ); - case A7: return TO_MUX( ADC_CHANNEL_IN4, 1 ); - case B0: return TO_MUX( ADC_CHANNEL_IN12, 2 ); - case B1: return TO_MUX( ADC_CHANNEL_IN1, 2 ); - case B2: return TO_MUX( ADC_CHANNEL_IN12, 1 ); - case B12: return TO_MUX( ADC_CHANNEL_IN3, 3 ); - case B13: return TO_MUX( ADC_CHANNEL_IN5, 2 ); - case B14: return TO_MUX( ADC_CHANNEL_IN4, 3 ); - case B15: return TO_MUX( ADC_CHANNEL_IN5, 3 ); - case C0: return TO_MUX( ADC_CHANNEL_IN6, 0 ); // Can also be ADC2 - case C1: return TO_MUX( ADC_CHANNEL_IN7, 0 ); // Can also be ADC2 - case C2: return TO_MUX( ADC_CHANNEL_IN8, 0 ); // Can also be ADC2 - case C3: return TO_MUX( ADC_CHANNEL_IN9, 0 ); // Can also be ADC2 - case C4: return TO_MUX( ADC_CHANNEL_IN5, 1 ); - case C5: return TO_MUX( ADC_CHANNEL_IN11, 1 ); - case D8: return TO_MUX( ADC_CHANNEL_IN12, 3 ); - case D9: return TO_MUX( ADC_CHANNEL_IN13, 3 ); - case D10: return TO_MUX( ADC_CHANNEL_IN7, 2 ); // Can also be ADC4 - case D11: return TO_MUX( ADC_CHANNEL_IN8, 2 ); // Can also be ADC4 - case D12: return TO_MUX( ADC_CHANNEL_IN9, 2 ); // Can also be ADC4 - case D13: return TO_MUX( ADC_CHANNEL_IN10, 2 ); // Can also be ADC4 - case D14: return TO_MUX( ADC_CHANNEL_IN11, 2 ); // Can also be ADC4 - case E7: return TO_MUX( ADC_CHANNEL_IN13, 2 ); - case E8: return TO_MUX( ADC_CHANNEL_IN6, 2 ); // Can also be ADC4 - case E9: return TO_MUX( ADC_CHANNEL_IN2, 2 ); - case E10: return TO_MUX( ADC_CHANNEL_IN14, 2 ); - case E11: return TO_MUX( ADC_CHANNEL_IN15, 2 ); - case E12: return TO_MUX( ADC_CHANNEL_IN16, 2 ); - case E13: return TO_MUX( ADC_CHANNEL_IN3, 2 ); - case E14: return TO_MUX( ADC_CHANNEL_IN1, 3 ); - case E15: return TO_MUX( ADC_CHANNEL_IN2, 3 ); - case F2: return TO_MUX( ADC_CHANNEL_IN10, 0 ); // Can also be ADC2 - case F4: return TO_MUX( ADC_CHANNEL_IN5, 0 ); -#elif defined(STM32F4XX) - 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 ); - case A3: return TO_MUX( ADC_CHANNEL_IN3, 0 ); - case A4: return TO_MUX( ADC_CHANNEL_IN4, 0 ); - case A5: return TO_MUX( ADC_CHANNEL_IN5, 0 ); - case A6: return TO_MUX( ADC_CHANNEL_IN6, 0 ); - case A7: return TO_MUX( ADC_CHANNEL_IN7, 0 ); - case B0: return TO_MUX( ADC_CHANNEL_IN8, 0 ); - case B1: return TO_MUX( ADC_CHANNEL_IN9, 0 ); - case C0: return TO_MUX( ADC_CHANNEL_IN10, 0 ); - case C1: return TO_MUX( ADC_CHANNEL_IN11, 0 ); - case C2: return TO_MUX( ADC_CHANNEL_IN12, 0 ); - case C3: return TO_MUX( ADC_CHANNEL_IN13, 0 ); - case C4: return TO_MUX( ADC_CHANNEL_IN14, 0 ); - case C5: return TO_MUX( ADC_CHANNEL_IN15, 0 ); -# if STM32_ADC_USE_ADC3 - case F3: return TO_MUX( ADC_CHANNEL_IN9, 2 ); - case F4: return TO_MUX( ADC_CHANNEL_IN14, 2 ); - case F5: return TO_MUX( ADC_CHANNEL_IN15, 2 ); - case F6: return TO_MUX( ADC_CHANNEL_IN4, 2 ); - case F7: return TO_MUX( ADC_CHANNEL_IN5, 2 ); - case F8: return TO_MUX( ADC_CHANNEL_IN6, 2 ); - case F9: return TO_MUX( ADC_CHANNEL_IN7, 2 ); - case F10: return TO_MUX( ADC_CHANNEL_IN8, 2 ); -# endif -#elif defined(STM32F1XX) - 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 ); - case A3: return TO_MUX( ADC_CHANNEL_IN3, 0 ); - case A4: return TO_MUX( ADC_CHANNEL_IN4, 0 ); - case A5: return TO_MUX( ADC_CHANNEL_IN5, 0 ); - case A6: return TO_MUX( ADC_CHANNEL_IN6, 0 ); - case A7: return TO_MUX( ADC_CHANNEL_IN7, 0 ); - case B0: return TO_MUX( ADC_CHANNEL_IN8, 0 ); - case B1: return TO_MUX( ADC_CHANNEL_IN9, 0 ); - case C0: return TO_MUX( ADC_CHANNEL_IN10, 0 ); - case C1: return TO_MUX( ADC_CHANNEL_IN11, 0 ); - case C2: return TO_MUX( ADC_CHANNEL_IN12, 0 ); - case C3: return TO_MUX( ADC_CHANNEL_IN13, 0 ); - case C4: return TO_MUX( ADC_CHANNEL_IN14, 0 ); - case C5: return TO_MUX( ADC_CHANNEL_IN15, 0 ); - // STM32F103x[C-G] in 144-pin packages also have analog inputs on F6...F10, but they are on ADC3, and the - // ChibiOS ADC driver for STM32F1xx currently supports only ADC1, therefore these pins are not usable. -#endif - } - - // return an adc that would never be used so intToADCDriver will bail out - return TO_MUX(0, 0xFF); -} -// clang-format on - -static inline ADCDriver* intToADCDriver(uint8_t adcInt) { - switch (adcInt) { -#if STM32_ADC_USE_ADC1 - case 0: - return &ADCD1; -#endif -#if STM32_ADC_USE_ADC2 - case 1: - return &ADCD2; -#endif -#if STM32_ADC_USE_ADC3 - case 2: - return &ADCD3; -#endif -#if STM32_ADC_USE_ADC4 - case 3: - return &ADCD4; -#endif - } - - return NULL; -} - -static inline void manageAdcInitializationDriver(uint8_t adc, ADCDriver* adcDriver) { - if (!adcInitialized[adc]) { - adcStart(adcDriver, &adcCfg); - adcInitialized[adc] = true; - } -} - -int16_t analogReadPin(pin_t pin) { - palSetLineMode(pin, PAL_MODE_INPUT_ANALOG); - - return adc_read(pinToMux(pin)); -} - -int16_t analogReadPinAdc(pin_t pin, uint8_t adc) { - palSetLineMode(pin, PAL_MODE_INPUT_ANALOG); - - adc_mux target = pinToMux(pin); - target.adc = adc; - return adc_read(target); -} - -int16_t adc_read(adc_mux mux) { -#if defined(USE_ADCV1) - // TODO: fix previous assumption of only 1 input... - adcConversionGroup.chselr = 1 << mux.input; /*no macro to convert N to ADC_CHSELR_CHSEL1*/ -#elif defined(USE_ADCV2) - adcConversionGroup.sqr3 = ADC_SQR3_SQ1_N(mux.input); -#else - adcConversionGroup.sqr[0] = ADC_SQR1_SQ1_N(mux.input); -#endif - - ADCDriver* targetDriver = intToADCDriver(mux.adc); - if (!targetDriver) { - return 0; - } - - manageAdcInitializationDriver(mux.adc, targetDriver); - if (adcConvert(targetDriver, &adcConversionGroup, &sampleBuffer[0], ADC_BUFFER_DEPTH) != MSG_OK) { - return 0; - } - -#ifdef USE_ADCV2 - // fake 12-bit -> N-bit scale - return (*sampleBuffer) >> (12 - ADC_RESOLUTION); -#else - // already handled as part of adcConvert - return *sampleBuffer; -#endif -} diff --git a/drivers/chibios/i2c_master.c b/drivers/chibios/i2c_master.c deleted file mode 100644 index fc4bb2ab3701..000000000000 --- a/drivers/chibios/i2c_master.c +++ /dev/null @@ -1,121 +0,0 @@ -/* Copyright 2018 Jack Humbert - * Copyright 2018 Yiancar - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/* This library is only valid for STM32 processors. - * This library follows the convention of the AVR i2c_master library. - * As a result addresses are expected to be already shifted (addr << 1). - * I2CD1 is the default driver which corresponds to pins B6 and B7. This - * can be changed. - * Please ensure that HAL_USE_I2C is TRUE in the halconf.h file and that - * STM32_I2C_USE_I2C1 is TRUE in the mcuconf.h file. Pins B6 and B7 are used - * but using any other I2C pins should be trivial. - */ -#include "quantum.h" -#include "i2c_master.h" -#include -#include - -static uint8_t i2c_address; - -static const I2CConfig i2cconfig = { -#if defined(USE_I2CV1_CONTRIB) - I2C1_CLOCK_SPEED, -#elif defined(USE_I2CV1) - I2C1_OPMODE, - I2C1_CLOCK_SPEED, - I2C1_DUTY_CYCLE, -#else - // This configures the I2C clock to 400khz assuming a 72Mhz clock - // For more info : https://www.st.com/en/embedded-software/stsw-stm32126.html - STM32_TIMINGR_PRESC(I2C1_TIMINGR_PRESC) | STM32_TIMINGR_SCLDEL(I2C1_TIMINGR_SCLDEL) | STM32_TIMINGR_SDADEL(I2C1_TIMINGR_SDADEL) | STM32_TIMINGR_SCLH(I2C1_TIMINGR_SCLH) | STM32_TIMINGR_SCLL(I2C1_TIMINGR_SCLL), 0, 0 -#endif -}; - -static i2c_status_t chibios_to_qmk(const msg_t* status) { - switch (*status) { - case I2C_NO_ERROR: - return I2C_STATUS_SUCCESS; - case I2C_TIMEOUT: - return I2C_STATUS_TIMEOUT; - // I2C_BUS_ERROR, I2C_ARBITRATION_LOST, I2C_ACK_FAILURE, I2C_OVERRUN, I2C_PEC_ERROR, I2C_SMB_ALERT - default: - return I2C_STATUS_ERROR; - } -} - -__attribute__((weak)) void i2c_init(void) { - static bool is_initialised = false; - if (!is_initialised) { - 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); - - 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); -#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); -#endif - } -} - -i2c_status_t i2c_start(uint8_t address) { - i2c_address = address; - i2cStart(&I2C_DRIVER, &i2cconfig); - return I2C_STATUS_SUCCESS; -} - -i2c_status_t i2c_transmit(uint8_t address, const uint8_t* data, uint16_t length, uint16_t timeout) { - i2c_address = address; - i2cStart(&I2C_DRIVER, &i2cconfig); - msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), data, length, 0, 0, TIME_MS2I(timeout)); - return chibios_to_qmk(&status); -} - -i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout) { - i2c_address = address; - i2cStart(&I2C_DRIVER, &i2cconfig); - msg_t status = i2cMasterReceiveTimeout(&I2C_DRIVER, (i2c_address >> 1), data, length, TIME_MS2I(timeout)); - return chibios_to_qmk(&status); -} - -i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout) { - i2c_address = devaddr; - i2cStart(&I2C_DRIVER, &i2cconfig); - - uint8_t complete_packet[length + 1]; - for (uint8_t i = 0; i < length; i++) { - complete_packet[i + 1] = data[i]; - } - complete_packet[0] = regaddr; - - msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), complete_packet, length + 1, 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); - msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), ®addr, 1, data, length, TIME_MS2I(timeout)); - return chibios_to_qmk(&status); -} - -void i2c_stop(void) { i2cStop(&I2C_DRIVER); } diff --git a/drivers/chibios/i2c_master.h b/drivers/chibios/i2c_master.h deleted file mode 100644 index c68109acbd3f..000000000000 --- a/drivers/chibios/i2c_master.h +++ /dev/null @@ -1,113 +0,0 @@ -/* Copyright 2018 Jack Humbert - * Copyright 2018 Yiancar - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/* This library follows the convention of the AVR i2c_master library. - * As a result addresses are expected to be already shifted (addr << 1). - * I2CD1 is the default driver which corresponds to pins B6 and B7. This - * can be changed. - * Please ensure that HAL_USE_I2C is TRUE in the halconf.h file and that - * STM32_I2C_USE_I2C1 is TRUE in the mcuconf.h file. - */ -#pragma once - -#include -#include - -#ifdef I2C1_BANK -# define I2C1_SCL_BANK I2C1_BANK -# define I2C1_SDA_BANK I2C1_BANK -#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 -#endif - -#ifdef USE_I2CV1 -# ifndef I2C1_OPMODE -# define I2C1_OPMODE OPMODE_I2C -# endif -# ifndef I2C1_CLOCK_SPEED -# define I2C1_CLOCK_SPEED 100000 /* 400000 */ -# endif -# ifndef I2C1_DUTY_CYCLE -# define I2C1_DUTY_CYCLE STD_DUTY_CYCLE /* FAST_DUTY_CYCLE_2 */ -# endif -#else -// The default timing values below configures the I2C clock to 400khz assuming a 72Mhz clock -// For more info : https://www.st.com/en/embedded-software/stsw-stm32126.html -# ifndef I2C1_TIMINGR_PRESC -# define I2C1_TIMINGR_PRESC 0U -# endif -# ifndef I2C1_TIMINGR_SCLDEL -# define I2C1_TIMINGR_SCLDEL 7U -# endif -# ifndef I2C1_TIMINGR_SDADEL -# define I2C1_TIMINGR_SDADEL 0U -# endif -# ifndef I2C1_TIMINGR_SCLH -# define I2C1_TIMINGR_SCLH 38U -# endif -# ifndef I2C1_TIMINGR_SCLL -# define I2C1_TIMINGR_SCLL 129U -# endif -#endif - -#ifndef I2C_DRIVER -# define I2C_DRIVER I2CD1 -#endif - -#ifdef USE_GPIOV1 -# ifndef I2C1_SCL_PAL_MODE -# define I2C1_SCL_PAL_MODE PAL_MODE_STM32_ALTERNATE_OPENDRAIN -# endif -# ifndef I2C1_SDA_PAL_MODE -# define I2C1_SDA_PAL_MODE PAL_MODE_STM32_ALTERNATE_OPENDRAIN -# endif -#else -// The default PAL alternate modes are used to signal that the pins are used for I2C -# ifndef I2C1_SCL_PAL_MODE -# define I2C1_SCL_PAL_MODE 4 -# endif -# ifndef I2C1_SDA_PAL_MODE -# define I2C1_SDA_PAL_MODE 4 -# endif -#endif - -typedef int16_t i2c_status_t; - -#define I2C_STATUS_SUCCESS (0) -#define I2C_STATUS_ERROR (-1) -#define I2C_STATUS_TIMEOUT (-2) - -void i2c_init(void); -i2c_status_t i2c_start(uint8_t address); -i2c_status_t i2c_transmit(uint8_t address, const uint8_t* data, uint16_t length, uint16_t timeout); -i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout); -i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout); -i2c_status_t i2c_readReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout); -void i2c_stop(void); diff --git a/drivers/chibios/serial.c b/drivers/chibios/serial.c deleted file mode 100644 index 54f7e1321f0b..000000000000 --- a/drivers/chibios/serial.c +++ /dev/null @@ -1,290 +0,0 @@ -/* - * WARNING: be careful changing this code, it is very timing dependent - */ - -#include "quantum.h" -#include "serial.h" -#include "wait.h" - -#include - -// TODO: resolve/remove build warnings -#if defined(RGBLIGHT_ENABLE) && defined(RGBLED_SPLIT) && defined(PROTOCOL_CHIBIOS) && defined(WS2812_DRIVER_BITBANG) -# warning "RGBLED_SPLIT not supported with bitbang WS2812 driver" -#endif - -// default wait implementation cannot be called within interrupt -// this method seems to be more accurate than GPT timers -#if PORT_SUPPORTS_RT == FALSE -# error "chSysPolledDelayX method not supported on this platform" -#else -# undef wait_us -# define wait_us(x) chSysPolledDelayX(US2RTC(STM32_SYSCLK, x)) -#endif - -#ifndef SELECT_SOFT_SERIAL_SPEED -# define SELECT_SOFT_SERIAL_SPEED 1 -// TODO: correct speeds... -// 0: about 189kbps (Experimental only) -// 1: about 137kbps (default) -// 2: about 75kbps -// 3: about 39kbps -// 4: about 26kbps -// 5: about 20kbps -#endif - -// Serial pulse period in microseconds. At the moment, going lower than 12 causes communication failure -#if SELECT_SOFT_SERIAL_SPEED == 0 -# define SERIAL_DELAY 12 -#elif SELECT_SOFT_SERIAL_SPEED == 1 -# define SERIAL_DELAY 16 -#elif SELECT_SOFT_SERIAL_SPEED == 2 -# define SERIAL_DELAY 24 -#elif SELECT_SOFT_SERIAL_SPEED == 3 -# define SERIAL_DELAY 32 -#elif SELECT_SOFT_SERIAL_SPEED == 4 -# define SERIAL_DELAY 48 -#elif SELECT_SOFT_SERIAL_SPEED == 5 -# define SERIAL_DELAY 64 -#else -# error invalid SELECT_SOFT_SERIAL_SPEED value -#endif - -inline static void serial_delay(void) { wait_us(SERIAL_DELAY); } -inline static void serial_delay_half(void) { wait_us(SERIAL_DELAY / 2); } -inline static void serial_delay_blip(void) { wait_us(1); } -inline static void serial_output(void) { setPinOutput(SOFT_SERIAL_PIN); } -inline static void serial_input(void) { setPinInputHigh(SOFT_SERIAL_PIN); } -inline static bool serial_read_pin(void) { return !!readPin(SOFT_SERIAL_PIN); } -inline static void serial_low(void) { writePinLow(SOFT_SERIAL_PIN); } -inline static void serial_high(void) { writePinHigh(SOFT_SERIAL_PIN); } - -void interrupt_handler(void *arg); - -// Use thread + palWaitLineTimeout instead of palSetLineCallback -// - Methods like setPinOutput and palEnableLineEvent/palDisableLineEvent -// cause the interrupt to lock up, which would limit to only receiving data... -static THD_WORKING_AREA(waThread1, 128); -static THD_FUNCTION(Thread1, arg) { - (void)arg; - chRegSetThreadName("blinker"); - while (true) { - palWaitLineTimeout(SOFT_SERIAL_PIN, TIME_INFINITE); - interrupt_handler(NULL); - } -} - -static SSTD_t *Transaction_table = NULL; -static uint8_t Transaction_table_size = 0; - -void soft_serial_initiator_init(SSTD_t *sstd_table, int sstd_table_size) { - Transaction_table = sstd_table; - Transaction_table_size = (uint8_t)sstd_table_size; - - serial_output(); - serial_high(); -} - -void soft_serial_target_init(SSTD_t *sstd_table, int sstd_table_size) { - Transaction_table = sstd_table; - Transaction_table_size = (uint8_t)sstd_table_size; - - serial_input(); - - palEnablePadEvent(PAL_PORT(SOFT_SERIAL_PIN), PAL_PAD(SOFT_SERIAL_PIN), PAL_EVENT_MODE_FALLING_EDGE); - chThdCreateStatic(waThread1, sizeof(waThread1), HIGHPRIO, Thread1, NULL); -} - -// Used by the master to synchronize timing with the slave. -static void __attribute__((noinline)) sync_recv(void) { - serial_input(); - // This shouldn't hang if the slave disconnects because the - // serial line will float to high if the slave does disconnect. - while (!serial_read_pin()) { - } - - serial_delay(); -} - -// Used by the slave to send a synchronization signal to the master. -static void __attribute__((noinline)) sync_send(void) { - serial_output(); - - serial_low(); - serial_delay(); - - serial_high(); -} - -// Reads a byte from the serial line -static uint8_t __attribute__((noinline)) serial_read_byte(void) { - uint8_t byte = 0; - serial_input(); - for (uint8_t i = 0; i < 8; ++i) { - byte = (byte << 1) | serial_read_pin(); - serial_delay(); - } - - return byte; -} - -// Sends a byte with MSB ordering -static void __attribute__((noinline)) serial_write_byte(uint8_t data) { - uint8_t b = 8; - serial_output(); - while (b--) { - if (data & (1 << b)) { - serial_high(); - } else { - serial_low(); - } - serial_delay(); - } -} - -// interrupt handle to be used by the slave device -void interrupt_handler(void *arg) { - chSysLockFromISR(); - - sync_send(); - - // read mid pulses - serial_delay_blip(); - - uint8_t checksum_computed = 0; - int sstd_index = 0; - -#ifdef SERIAL_USE_MULTI_TRANSACTION - sstd_index = serial_read_byte(); - sync_send(); -#endif - - SSTD_t *trans = &Transaction_table[sstd_index]; - for (int i = 0; i < trans->initiator2target_buffer_size; ++i) { - trans->initiator2target_buffer[i] = serial_read_byte(); - sync_send(); - checksum_computed += trans->initiator2target_buffer[i]; - } - checksum_computed ^= 7; - uint8_t checksum_received = serial_read_byte(); - sync_send(); - - // wait for the sync to finish sending - serial_delay(); - - uint8_t checksum = 0; - for (int i = 0; i < trans->target2initiator_buffer_size; ++i) { - serial_write_byte(trans->target2initiator_buffer[i]); - sync_send(); - serial_delay_half(); - checksum += trans->target2initiator_buffer[i]; - } - serial_write_byte(checksum ^ 7); - sync_send(); - - // wait for the sync to finish sending - serial_delay(); - - *trans->status = (checksum_computed == checksum_received) ? TRANSACTION_ACCEPTED : TRANSACTION_DATA_ERROR; - - // end transaction - serial_input(); - - // TODO: remove extra delay between transactions - serial_delay(); - - chSysUnlockFromISR(); -} - -///////// -// start transaction by initiator -// -// int soft_serial_transaction(int sstd_index) -// -// Returns: -// TRANSACTION_END -// TRANSACTION_NO_RESPONSE -// TRANSACTION_DATA_ERROR -// this code is very time dependent, so we need to disable interrupts -#ifndef SERIAL_USE_MULTI_TRANSACTION -int soft_serial_transaction(void) { - int sstd_index = 0; -#else -int soft_serial_transaction(int sstd_index) { -#endif - - if (sstd_index > Transaction_table_size) return TRANSACTION_TYPE_ERROR; - SSTD_t *trans = &Transaction_table[sstd_index]; - - // TODO: remove extra delay between transactions - serial_delay(); - - // this code is very time dependent, so we need to disable interrupts - chSysLock(); - - // signal to the slave that we want to start a transaction - serial_output(); - serial_low(); - serial_delay_blip(); - - // wait for the slaves response - serial_input(); - serial_high(); - serial_delay(); - - // check if the slave is present - if (serial_read_pin()) { - // slave failed to pull the line low, assume not present - dprintf("serial::NO_RESPONSE\n"); - chSysUnlock(); - return TRANSACTION_NO_RESPONSE; - } - - // if the slave is present syncronize with it - - uint8_t checksum = 0; - // send data to the slave -#ifdef SERIAL_USE_MULTI_TRANSACTION - serial_write_byte(sstd_index); // first chunk is transaction id - sync_recv(); -#endif - for (int i = 0; i < trans->initiator2target_buffer_size; ++i) { - serial_write_byte(trans->initiator2target_buffer[i]); - sync_recv(); - checksum += trans->initiator2target_buffer[i]; - } - serial_write_byte(checksum ^ 7); - sync_recv(); - - serial_delay(); - serial_delay(); // read mid pulses - - // receive data from the slave - uint8_t checksum_computed = 0; - for (int i = 0; i < trans->target2initiator_buffer_size; ++i) { - trans->target2initiator_buffer[i] = serial_read_byte(); - sync_recv(); - checksum_computed += trans->target2initiator_buffer[i]; - } - checksum_computed ^= 7; - uint8_t checksum_received = serial_read_byte(); - - sync_recv(); - serial_delay(); - - if ((checksum_computed) != (checksum_received)) { - dprintf("serial::FAIL[%u,%u,%u]\n", checksum_computed, checksum_received, sstd_index); - serial_output(); - serial_high(); - - chSysUnlock(); - return TRANSACTION_DATA_ERROR; - } - - // always, release the line when not in use - serial_high(); - serial_output(); - - chSysUnlock(); - return TRANSACTION_END; -} diff --git a/drivers/chibios/serial.h b/drivers/chibios/serial.h deleted file mode 100644 index 0c1857d52e32..000000000000 --- a/drivers/chibios/serial.h +++ /dev/null @@ -1,62 +0,0 @@ -#pragma once - -#include - -// ///////////////////////////////////////////////////////////////// -// Need Soft Serial defines in config.h -// ///////////////////////////////////////////////////////////////// -// ex. -// #define SOFT_SERIAL_PIN ?? // ?? = D0,D1,D2,D3,E6 -// OPTIONAL: #define SELECT_SOFT_SERIAL_SPEED ? // ? = 1,2,3,4,5 -// // 1: about 137kbps (default) -// // 2: about 75kbps -// // 3: about 39kbps -// // 4: about 26kbps -// // 5: about 20kbps -// -// //// USE simple API (using signle-type transaction function) -// /* nothing */ -// //// USE flexible API (using multi-type transaction function) -// #define SERIAL_USE_MULTI_TRANSACTION -// -// ///////////////////////////////////////////////////////////////// - -// Soft Serial Transaction Descriptor -typedef struct _SSTD_t { - uint8_t *status; - uint8_t initiator2target_buffer_size; - uint8_t *initiator2target_buffer; - uint8_t target2initiator_buffer_size; - uint8_t *target2initiator_buffer; -} SSTD_t; -#define TID_LIMIT(table) (sizeof(table) / sizeof(SSTD_t)) - -// initiator is transaction start side -void soft_serial_initiator_init(SSTD_t *sstd_table, int sstd_table_size); -// target is interrupt accept side -void soft_serial_target_init(SSTD_t *sstd_table, int sstd_table_size); - -// initiator result -#define TRANSACTION_END 0 -#define TRANSACTION_NO_RESPONSE 0x1 -#define TRANSACTION_DATA_ERROR 0x2 -#define TRANSACTION_TYPE_ERROR 0x4 -#ifndef SERIAL_USE_MULTI_TRANSACTION -int soft_serial_transaction(void); -#else -int soft_serial_transaction(int sstd_index); -#endif - -// target status -// *SSTD_t.status has -// initiator: -// TRANSACTION_END -// or TRANSACTION_NO_RESPONSE -// or TRANSACTION_DATA_ERROR -// target: -// TRANSACTION_DATA_ERROR -// or TRANSACTION_ACCEPTED -#define TRANSACTION_ACCEPTED 0x8 -#ifdef SERIAL_USE_MULTI_TRANSACTION -int soft_serial_get_and_clean_status(int sstd_index); -#endif diff --git a/drivers/chibios/serial_usart.c b/drivers/chibios/serial_usart.c deleted file mode 100644 index cae29388c3bf..000000000000 --- a/drivers/chibios/serial_usart.c +++ /dev/null @@ -1,208 +0,0 @@ -/* Copyright 2021 QMK - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "serial_usart.h" - -#ifndef USE_GPIOV1 -// The default PAL alternate modes are used to signal that the pins are used for USART -# ifndef SERIAL_USART_TX_PAL_MODE -# define SERIAL_USART_TX_PAL_MODE 7 -# endif -#endif - -#ifndef SERIAL_USART_DRIVER -# define SERIAL_USART_DRIVER SD1 -#endif - -#ifdef SOFT_SERIAL_PIN -# define SERIAL_USART_TX_PIN SOFT_SERIAL_PIN -#endif - -static inline msg_t sdWriteHalfDuplex(SerialDriver* driver, uint8_t* data, uint8_t size) { - msg_t ret = sdWrite(driver, data, size); - - // Half duplex requires us to read back the data we just wrote - just throw it away - uint8_t dump[size]; - sdRead(driver, dump, size); - - return ret; -} -#undef sdWrite -#define sdWrite sdWriteHalfDuplex - -static inline msg_t sdWriteTimeoutHalfDuplex(SerialDriver* driver, uint8_t* data, uint8_t size, uint32_t timeout) { - msg_t ret = sdWriteTimeout(driver, data, size, timeout); - - // Half duplex requires us to read back the data we just wrote - just throw it away - uint8_t dump[size]; - sdReadTimeout(driver, dump, size, timeout); - - return ret; -} -#undef sdWriteTimeout -#define sdWriteTimeout sdWriteTimeoutHalfDuplex - -static inline void sdClear(SerialDriver* driver) { - while (sdGetTimeout(driver, TIME_IMMEDIATE) != MSG_TIMEOUT) { - // Do nothing with the data - } -} - -static SerialConfig sdcfg = { - (SERIAL_USART_SPEED), // speed - mandatory - (SERIAL_USART_CR1), // CR1 - (SERIAL_USART_CR2), // CR2 - (SERIAL_USART_CR3) // CR3 -}; - -void handle_soft_serial_slave(void); - -/* - * This thread runs on the slave and responds to transactions initiated - * by the master - */ -static THD_WORKING_AREA(waSlaveThread, 2048); -static THD_FUNCTION(SlaveThread, arg) { - (void)arg; - chRegSetThreadName("slave_transport"); - - while (true) { - handle_soft_serial_slave(); - } -} - -__attribute__((weak)) void usart_init(void) { -#if defined(USE_GPIOV1) - palSetLineMode(SERIAL_USART_TX_PIN, PAL_MODE_STM32_ALTERNATE_OPENDRAIN); -#else - palSetLineMode(SERIAL_USART_TX_PIN, PAL_MODE_ALTERNATE(SERIAL_USART_TX_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN); -#endif - -#if defined(USART_REMAP) - USART_REMAP; -#endif -} - -void usart_master_init(void) { - usart_init(); - - sdcfg.cr3 |= USART_CR3_HDSEL; - sdStart(&SERIAL_USART_DRIVER, &sdcfg); -} - -void usart_slave_init(void) { - usart_init(); - - sdcfg.cr3 |= USART_CR3_HDSEL; - sdStart(&SERIAL_USART_DRIVER, &sdcfg); - - // Start transport thread - chThdCreateStatic(waSlaveThread, sizeof(waSlaveThread), HIGHPRIO, SlaveThread, NULL); -} - -static SSTD_t* Transaction_table = NULL; -static uint8_t Transaction_table_size = 0; - -void soft_serial_initiator_init(SSTD_t* sstd_table, int sstd_table_size) { - Transaction_table = sstd_table; - Transaction_table_size = (uint8_t)sstd_table_size; - - usart_master_init(); -} - -void soft_serial_target_init(SSTD_t* sstd_table, int sstd_table_size) { - Transaction_table = sstd_table; - Transaction_table_size = (uint8_t)sstd_table_size; - - usart_slave_init(); -} - -void handle_soft_serial_slave(void) { - uint8_t sstd_index = sdGet(&SERIAL_USART_DRIVER); // first chunk is always transaction id - SSTD_t* trans = &Transaction_table[sstd_index]; - - // Always write back the sstd_index as part of a basic handshake - sstd_index ^= HANDSHAKE_MAGIC; - sdWrite(&SERIAL_USART_DRIVER, &sstd_index, sizeof(sstd_index)); - - if (trans->initiator2target_buffer_size) { - sdRead(&SERIAL_USART_DRIVER, trans->initiator2target_buffer, trans->initiator2target_buffer_size); - } - - if (trans->target2initiator_buffer_size) { - sdWrite(&SERIAL_USART_DRIVER, trans->target2initiator_buffer, trans->target2initiator_buffer_size); - } - - if (trans->status) { - *trans->status = TRANSACTION_ACCEPTED; - } -} - -///////// -// start transaction by initiator -// -// int soft_serial_transaction(int sstd_index) -// -// Returns: -// TRANSACTION_END -// TRANSACTION_NO_RESPONSE -// TRANSACTION_DATA_ERROR -#ifndef SERIAL_USE_MULTI_TRANSACTION -int soft_serial_transaction(void) { - uint8_t sstd_index = 0; -#else -int soft_serial_transaction(int index) { - uint8_t sstd_index = index; -#endif - - if (sstd_index > Transaction_table_size) return TRANSACTION_TYPE_ERROR; - SSTD_t* trans = &Transaction_table[sstd_index]; - msg_t res = 0; - - sdClear(&SERIAL_USART_DRIVER); - - // First chunk is always transaction id - sdWriteTimeout(&SERIAL_USART_DRIVER, &sstd_index, sizeof(sstd_index), TIME_MS2I(SERIAL_USART_TIMEOUT)); - - uint8_t sstd_index_shake = 0xFF; - - // Which we always read back first so that we can error out correctly - // - due to the half duplex limitations on return codes, we always have to read *something* - // - without the read, write only transactions *always* succeed, even during the boot process where the slave is not ready - res = sdReadTimeout(&SERIAL_USART_DRIVER, &sstd_index_shake, sizeof(sstd_index_shake), TIME_MS2I(SERIAL_USART_TIMEOUT)); - if (res < 0 || (sstd_index_shake != (sstd_index ^ HANDSHAKE_MAGIC))) { - dprintf("serial::usart_shake NO_RESPONSE\n"); - return TRANSACTION_NO_RESPONSE; - } - - if (trans->initiator2target_buffer_size) { - res = sdWriteTimeout(&SERIAL_USART_DRIVER, trans->initiator2target_buffer, trans->initiator2target_buffer_size, TIME_MS2I(SERIAL_USART_TIMEOUT)); - if (res < 0) { - dprintf("serial::usart_transmit NO_RESPONSE\n"); - return TRANSACTION_NO_RESPONSE; - } - } - - if (trans->target2initiator_buffer_size) { - res = sdReadTimeout(&SERIAL_USART_DRIVER, trans->target2initiator_buffer, trans->target2initiator_buffer_size, TIME_MS2I(SERIAL_USART_TIMEOUT)); - if (res < 0) { - dprintf("serial::usart_receive NO_RESPONSE\n"); - return TRANSACTION_NO_RESPONSE; - } - } - - return TRANSACTION_END; -} diff --git a/drivers/chibios/serial_usart.h b/drivers/chibios/serial_usart.h deleted file mode 100644 index fee7b4d159c3..000000000000 --- a/drivers/chibios/serial_usart.h +++ /dev/null @@ -1,90 +0,0 @@ -/* Copyright 2021 QMK - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include "quantum.h" -#include "serial.h" -#include "printf.h" - -#include -#include - -#ifndef USART_CR1_M0 -# define USART_CR1_M0 USART_CR1_M // some platforms (f1xx) dont have this so -#endif - -#ifndef SERIAL_USART_CR1 -# define SERIAL_USART_CR1 (USART_CR1_PCE | USART_CR1_PS | USART_CR1_M0) // parity enable, odd parity, 9 bit length -#endif - -#ifndef SERIAL_USART_CR2 -# define SERIAL_USART_CR2 (USART_CR2_STOP_1) // 2 stop bits -#endif - -#ifndef SERIAL_USART_CR3 -# define SERIAL_USART_CR3 0 -#endif - -#if defined(USART1_REMAP) -# define USART_REMAP \ - do { \ - (AFIO->MAPR |= AFIO_MAPR_USART1_REMAP); \ - } while (0) -#elif defined(USART2_REMAP) -# define USART_REMAP \ - do { \ - (AFIO->MAPR |= AFIO_MAPR_USART2_REMAP); \ - } while (0) -#elif defined(USART3_PARTIALREMAP) -# define USART_REMAP \ - do { \ - (AFIO->MAPR |= AFIO_MAPR_USART3_REMAP_PARTIALREMAP); \ - } while (0) -#elif defined(USART3_FULLREMAP) -# define USART_REMAP \ - do { \ - (AFIO->MAPR |= AFIO_MAPR_USART3_REMAP_FULLREMAP); \ - } while (0) -#endif - -#ifndef SELECT_SOFT_SERIAL_SPEED -# define SELECT_SOFT_SERIAL_SPEED 1 -#endif - -#ifdef SERIAL_USART_SPEED -// Allow advanced users to directly set SERIAL_USART_SPEED -#elif SELECT_SOFT_SERIAL_SPEED == 0 -# define SERIAL_USART_SPEED 460800 -#elif SELECT_SOFT_SERIAL_SPEED == 1 -# define SERIAL_USART_SPEED 230400 -#elif SELECT_SOFT_SERIAL_SPEED == 2 -# define SERIAL_USART_SPEED 115200 -#elif SELECT_SOFT_SERIAL_SPEED == 3 -# define SERIAL_USART_SPEED 57600 -#elif SELECT_SOFT_SERIAL_SPEED == 4 -# define SERIAL_USART_SPEED 38400 -#elif SELECT_SOFT_SERIAL_SPEED == 5 -# define SERIAL_USART_SPEED 19200 -#else -# error invalid SELECT_SOFT_SERIAL_SPEED value -#endif - -#ifndef SERIAL_USART_TIMEOUT -# define SERIAL_USART_TIMEOUT 100 -#endif - -#define HANDSHAKE_MAGIC 7 diff --git a/drivers/chibios/serial_usart_duplex.c b/drivers/chibios/serial_usart_duplex.c deleted file mode 100644 index cc9b889ac201..000000000000 --- a/drivers/chibios/serial_usart_duplex.c +++ /dev/null @@ -1,261 +0,0 @@ -/* Copyright 2021 QMK - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "serial_usart.h" - -#include - -#if !defined(USE_GPIOV1) -// The default PAL alternate modes are used to signal that the pins are used for USART -# if !defined(SERIAL_USART_TX_PAL_MODE) -# define SERIAL_USART_TX_PAL_MODE 7 -# endif -# if !defined(SERIAL_USART_RX_PAL_MODE) -# define SERIAL_USART_RX_PAL_MODE 7 -# endif -#endif - -#if !defined(SERIAL_USART_DRIVER) -# define SERIAL_USART_DRIVER UARTD1 -#endif - -#if !defined(SERIAL_USART_TX_PIN) -# define SERIAL_USART_TX_PIN A9 -#endif - -#if !defined(SERIAL_USART_RX_PIN) -# define SERIAL_USART_RX_PIN A10 -#endif - -#define SIGNAL_HANDSHAKE_RECEIVED 0x1 - -void handle_transactions_slave(uint8_t sstd_index); -static void receive_transaction_handshake(UARTDriver* uartp, uint16_t received_handshake); - -/* - * UART driver configuration structure. We use the blocking DMA enabled API and - * the rxchar callback to receive handshake tokens but only on the slave halve. - */ -// clang-format off -static UARTConfig uart_config = { - .txend1_cb = NULL, - .txend2_cb = NULL, - .rxend_cb = NULL, - .rxchar_cb = NULL, - .rxerr_cb = NULL, - .timeout_cb = NULL, - .speed = (SERIAL_USART_SPEED), - .cr1 = (SERIAL_USART_CR1), - .cr2 = (SERIAL_USART_CR2), - .cr3 = (SERIAL_USART_CR3) -}; -// clang-format on - -static SSTD_t* Transaction_table = NULL; -static uint8_t Transaction_table_size = 0; -static atomic_uint_least8_t handshake = 0xFF; -static thread_reference_t tp_target = NULL; - -/* - * This callback is invoked when a character is received but the application - * was not ready to receive it, the character is passed as parameter. - * Receive transaction table index from initiator, which doubles as basic handshake token. */ -static void receive_transaction_handshake(UARTDriver* uartp, uint16_t received_handshake) { - /* Check if received handshake is not a valid transaction id. - * Please note that we can still catch a seemingly valid handshake - * i.e. a byte from a ongoing transfer which is in the allowed range. - * So this check mainly prevents any obviously wrong handshakes and - * subsequent wakeups of the receiving thread, which is a costly operation. */ - if (received_handshake > Transaction_table_size) { - return; - } - - handshake = (uint8_t)received_handshake; - chSysLockFromISR(); - /* Wakeup receiving thread to start a transaction. */ - chEvtSignalI(tp_target, (eventmask_t)SIGNAL_HANDSHAKE_RECEIVED); - chSysUnlockFromISR(); -} - -__attribute__((weak)) void usart_init(void) { -#if defined(USE_GPIOV1) - palSetLineMode(SERIAL_USART_TX_PIN, PAL_MODE_STM32_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); -#endif -} - -/* - * This thread runs on the slave half and reacts to transactions initiated from the master. - */ -static THD_WORKING_AREA(waSlaveThread, 1024); -static THD_FUNCTION(SlaveThread, arg) { - (void)arg; - chRegSetThreadName("slave_usart_tx_rx"); - - while (true) { - /* We sleep as long as there is no handshake waiting for us. */ - chEvtWaitAny((eventmask_t)SIGNAL_HANDSHAKE_RECEIVED); - handle_transactions_slave(handshake); - } -} - -void soft_serial_target_init(SSTD_t* const sstd_table, int sstd_table_size) { - Transaction_table = sstd_table; - Transaction_table_size = (uint8_t)sstd_table_size; - usart_init(); - -#if defined(USART_REMAP) - USART_REMAP; -#endif - - tp_target = chThdCreateStatic(waSlaveThread, sizeof(waSlaveThread), HIGHPRIO, SlaveThread, NULL); - - // Start receiving handshake tokens on slave halve - uart_config.rxchar_cb = receive_transaction_handshake; - uartStart(&SERIAL_USART_DRIVER, &uart_config); -} - -/** - * @brief React to transactions started by the master. - * This version uses duplex send and receive usart pheriphals and DMA backed transfers. - */ -void inline handle_transactions_slave(uint8_t sstd_index) { - size_t buffer_size = 0; - msg_t msg = 0; - SSTD_t* trans = &Transaction_table[sstd_index]; - - /* Send back the handshake which is XORed as a simple checksum, - to signal that the slave is ready to receive possible transaction buffers */ - sstd_index ^= HANDSHAKE_MAGIC; - buffer_size = (size_t)sizeof(sstd_index); - msg = uartSendTimeout(&SERIAL_USART_DRIVER, &buffer_size, &sstd_index, TIME_MS2I(SERIAL_USART_TIMEOUT)); - - if (msg != MSG_OK) { - if (trans->status) { - *trans->status = TRANSACTION_NO_RESPONSE; - } - return; - } - - /* Receive transaction buffer from the master. If this transaction requires it.*/ - buffer_size = (size_t)trans->initiator2target_buffer_size; - if (buffer_size) { - msg = uartReceiveTimeout(&SERIAL_USART_DRIVER, &buffer_size, trans->initiator2target_buffer, TIME_MS2I(SERIAL_USART_TIMEOUT)); - if (msg != MSG_OK) { - if (trans->status) { - *trans->status = TRANSACTION_NO_RESPONSE; - } - return; - } - } - - /* Send transaction buffer to the master. If this transaction requires it. */ - buffer_size = (size_t)trans->target2initiator_buffer_size; - if (buffer_size) { - msg = uartSendFullTimeout(&SERIAL_USART_DRIVER, &buffer_size, trans->target2initiator_buffer, TIME_MS2I(SERIAL_USART_TIMEOUT)); - if (msg != MSG_OK) { - if (trans->status) { - *trans->status = TRANSACTION_NO_RESPONSE; - } - return; - } - } - - if (trans->status) { - *trans->status = TRANSACTION_ACCEPTED; - } -} - -void soft_serial_initiator_init(SSTD_t* const sstd_table, int sstd_table_size) { - Transaction_table = sstd_table; - Transaction_table_size = (uint8_t)sstd_table_size; - usart_init(); - -#if defined(SERIAL_USART_PIN_SWAP) - uart_config.cr2 |= USART_CR2_SWAP; // master has swapped TX/RX pins -#endif - -#if defined(USART_REMAP) - USART_REMAP; -#endif - - uartStart(&SERIAL_USART_DRIVER, &uart_config); -} - -/** - * @brief Start transaction from the master to the slave. - * This version uses duplex send and receive usart pheriphals and DMA backed transfers. - * - * @param index Transaction Table index of the transaction to start. - * @return int TRANSACTION_NO_RESPONSE in case of Timeout. - * TRANSACTION_TYPE_ERROR in case of invalid transaction index. - * TRANSACTION_END in case of success. - */ -#if !defined(SERIAL_USE_MULTI_TRANSACTION) -int soft_serial_transaction(void) { - uint8_t sstd_index = 0; -#else -int soft_serial_transaction(int index) { - uint8_t sstd_index = index; -#endif - - if (sstd_index > Transaction_table_size) { - return TRANSACTION_TYPE_ERROR; - } - - SSTD_t* const trans = &Transaction_table[sstd_index]; - msg_t msg = 0; - size_t buffer_size = (size_t)sizeof(sstd_index); - - /* Send transaction table index to the slave, which doubles as basic handshake token. */ - uartSendFullTimeout(&SERIAL_USART_DRIVER, &buffer_size, &sstd_index, TIME_MS2I(SERIAL_USART_TIMEOUT)); - - uint8_t sstd_index_shake = 0xFF; - buffer_size = (size_t)sizeof(sstd_index_shake); - - /* Receive the handshake token from the slave. The token was XORed by the slave as a simple checksum. - If the tokens match, the master will start to send and receive possible transaction buffers. */ - msg = uartReceiveTimeout(&SERIAL_USART_DRIVER, &buffer_size, &sstd_index_shake, TIME_MS2I(SERIAL_USART_TIMEOUT)); - if (msg != MSG_OK || (sstd_index_shake != (sstd_index ^ HANDSHAKE_MAGIC))) { - dprintln("USART: Handshake Failed"); - return TRANSACTION_NO_RESPONSE; - } - - /* Send transaction buffer to the slave. If this transaction requires it. */ - buffer_size = (size_t)trans->initiator2target_buffer_size; - if (buffer_size) { - msg = uartSendFullTimeout(&SERIAL_USART_DRIVER, &buffer_size, trans->initiator2target_buffer, TIME_MS2I(SERIAL_USART_TIMEOUT)); - if (msg != MSG_OK) { - dprintln("USART: Send Failed"); - return TRANSACTION_NO_RESPONSE; - } - } - - /* Receive transaction buffer from the slave. If this transaction requires it. */ - buffer_size = (size_t)trans->target2initiator_buffer_size; - if (buffer_size) { - msg = uartReceiveTimeout(&SERIAL_USART_DRIVER, &buffer_size, trans->target2initiator_buffer, TIME_MS2I(SERIAL_USART_TIMEOUT)); - if (msg != MSG_OK) { - dprintln("USART: Receive Failed"); - return TRANSACTION_NO_RESPONSE; - } - } - - return TRANSACTION_END; -} diff --git a/drivers/chibios/spi_master.c b/drivers/chibios/spi_master.c deleted file mode 100644 index 4852a6eba430..000000000000 --- a/drivers/chibios/spi_master.c +++ /dev/null @@ -1,148 +0,0 @@ -/* 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 . - */ - -#include "spi_master.h" - -#include "timer.h" - -static pin_t currentSlavePin = NO_PIN; -static SPIConfig spiConfig = {false, NULL, 0, 0, 0, 0}; - -__attribute__((weak)) void spi_init(void) { - static bool is_initialised = false; - if (!is_initialised) { - is_initialised = true; - - // Try releasing special pins for a short time - palSetPadMode(PAL_PORT(SPI_SCK_PIN), PAL_PAD(SPI_SCK_PIN), PAL_MODE_INPUT); - palSetPadMode(PAL_PORT(SPI_MOSI_PIN), PAL_PAD(SPI_MOSI_PIN), PAL_MODE_INPUT); - palSetPadMode(PAL_PORT(SPI_MISO_PIN), PAL_PAD(SPI_MISO_PIN), PAL_MODE_INPUT); - - chThdSleepMilliseconds(10); -#if defined(USE_GPIOV1) - palSetPadMode(PAL_PORT(SPI_SCK_PIN), PAL_PAD(SPI_SCK_PIN), PAL_MODE_STM32_ALTERNATE_PUSHPULL); - palSetPadMode(PAL_PORT(SPI_MOSI_PIN), PAL_PAD(SPI_MOSI_PIN), PAL_MODE_STM32_ALTERNATE_PUSHPULL); - palSetPadMode(PAL_PORT(SPI_MISO_PIN), PAL_PAD(SPI_MISO_PIN), PAL_MODE_STM32_ALTERNATE_PUSHPULL); -#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); -#endif - } -} - -bool spi_start(pin_t slavePin, bool lsbFirst, uint8_t mode, uint16_t divisor) { - if (currentSlavePin != NO_PIN || slavePin == NO_PIN) { - return false; - } - - uint16_t roundedDivisor = 2; - while (roundedDivisor < divisor) { - roundedDivisor <<= 1; - } - - if (roundedDivisor < 2 || roundedDivisor > 256) { - return false; - } - - spiConfig.cr1 = 0; - - if (lsbFirst) { - spiConfig.cr1 |= SPI_CR1_LSBFIRST; - } - - switch (mode) { - case 0: - break; - case 1: - spiConfig.cr1 |= SPI_CR1_CPHA; - break; - case 2: - spiConfig.cr1 |= SPI_CR1_CPOL; - break; - case 3: - spiConfig.cr1 |= SPI_CR1_CPHA | SPI_CR1_CPOL; - break; - } - - switch (roundedDivisor) { - case 2: - break; - case 4: - spiConfig.cr1 |= SPI_CR1_BR_0; - break; - case 8: - spiConfig.cr1 |= SPI_CR1_BR_1; - break; - case 16: - spiConfig.cr1 |= SPI_CR1_BR_1 | SPI_CR1_BR_0; - break; - case 32: - spiConfig.cr1 |= SPI_CR1_BR_2; - break; - case 64: - spiConfig.cr1 |= SPI_CR1_BR_2 | SPI_CR1_BR_0; - break; - case 128: - spiConfig.cr1 |= SPI_CR1_BR_2 | SPI_CR1_BR_1; - break; - case 256: - spiConfig.cr1 |= SPI_CR1_BR_2 | SPI_CR1_BR_1 | SPI_CR1_BR_0; - break; - } - - currentSlavePin = slavePin; - spiConfig.ssport = PAL_PORT(slavePin); - spiConfig.sspad = PAL_PAD(slavePin); - - setPinOutput(slavePin); - spiStart(&SPI_DRIVER, &spiConfig); - spiSelect(&SPI_DRIVER); - - return true; -} - -spi_status_t spi_write(uint8_t data) { - uint8_t rxData; - spiExchange(&SPI_DRIVER, 1, &data, &rxData); - - return rxData; -} - -spi_status_t spi_read(void) { - uint8_t data = 0; - spiReceive(&SPI_DRIVER, 1, &data); - - return data; -} - -spi_status_t spi_transmit(const uint8_t *data, uint16_t length) { - spiSend(&SPI_DRIVER, length, data); - return SPI_STATUS_SUCCESS; -} - -spi_status_t spi_receive(uint8_t *data, uint16_t length) { - spiReceive(&SPI_DRIVER, length, data); - return SPI_STATUS_SUCCESS; -} - -void spi_stop(void) { - if (currentSlavePin != NO_PIN) { - spiUnselect(&SPI_DRIVER); - spiStop(&SPI_DRIVER); - currentSlavePin = NO_PIN; - } -} diff --git a/drivers/chibios/spi_master.h b/drivers/chibios/spi_master.h deleted file mode 100644 index e93580e31950..000000000000 --- a/drivers/chibios/spi_master.h +++ /dev/null @@ -1,80 +0,0 @@ -/* 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 . - */ - -#pragma once - -#include -#include -#include - -#include "gpio.h" - -#ifndef SPI_DRIVER -# define SPI_DRIVER SPID2 -#endif - -#ifndef SPI_SCK_PIN -# define SPI_SCK_PIN B13 -#endif - -#ifndef SPI_SCK_PAL_MODE -# define SPI_SCK_PAL_MODE 5 -#endif - -#ifndef SPI_MOSI_PIN -# define SPI_MOSI_PIN B15 -#endif - -#ifndef SPI_MOSI_PAL_MODE -# define SPI_MOSI_PAL_MODE 5 -#endif - -#ifndef SPI_MISO_PIN -# define SPI_MISO_PIN B14 -#endif - -#ifndef SPI_MISO_PAL_MODE -# define SPI_MISO_PAL_MODE 5 -#endif - -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/drivers/chibios/uart.c b/drivers/chibios/uart.c deleted file mode 100644 index 030335b342ff..000000000000 --- a/drivers/chibios/uart.c +++ /dev/null @@ -1,50 +0,0 @@ -/* Copyright 2021 - * - * This program is free software: you can 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 . - */ - -#include "uart.h" - -#include "quantum.h" - -static SerialConfig serialConfig = {SERIAL_DEFAULT_BITRATE, SD1_CR1, SD1_CR2, SD1_CR3}; - -void uart_init(uint32_t baud) { - static bool is_initialised = false; - - if (!is_initialised) { - is_initialised = true; - - 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); -#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); -#endif - sdStart(&SERIAL_DRIVER, &serialConfig); - } -} - -void uart_putchar(uint8_t c) { sdPut(&SERIAL_DRIVER, c); } - -uint8_t uart_getchar(void) { - msg_t res = sdGet(&SERIAL_DRIVER); - - return (uint8_t)res; -} - -bool uart_available(void) { return !sdGetWouldBlock(&SERIAL_DRIVER); } diff --git a/drivers/chibios/uart.h b/drivers/chibios/uart.h deleted file mode 100644 index b4e20e9fd3d0..000000000000 --- a/drivers/chibios/uart.h +++ /dev/null @@ -1,77 +0,0 @@ -/* Copyright 2021 - * - * This program is free software: you can 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 . - */ - -#pragma once - -#include - -#include - -#ifndef SERIAL_DRIVER -# define SERIAL_DRIVER SD1 -#endif - -#ifndef SD1_TX_PIN -# define SD1_TX_PIN A9 -#endif - -#ifndef SD1_TX_PAL_MODE -# define SD1_TX_PAL_MODE 7 -#endif - -#ifndef SD1_RX_PIN -# define SD1_RX_PIN A10 -#endif - -#ifndef SD1_RX_PAL_MODE -# define SD1_RX_PAL_MODE 7 -#endif - -#ifndef SD1_CTS_PIN -# define SD1_CTS_PIN A11 -#endif - -#ifndef SD1_CTS_PAL_MODE -# define SD1_CTS_PAL_MODE 7 -#endif - -#ifndef SD1_RTS_PIN -# define SD1_RTS_PIN A12 -#endif - -#ifndef SD1_RTS_PAL_MODE -# define SD1_RTS_PAL_MODE 7 -#endif - -#ifndef SD1_CR1 -# define SD1_CR1 0 -#endif - -#ifndef SD1_CR2 -# define SD1_CR2 0 -#endif - -#ifndef SD1_CR3 -# define SD1_CR3 0 -#endif - -void uart_init(uint32_t baud); - -void uart_putchar(uint8_t c); - -uint8_t uart_getchar(void); - -bool uart_available(void); diff --git a/drivers/chibios/ws2812.c b/drivers/chibios/ws2812.c deleted file mode 100644 index 0d12e2fb79ab..000000000000 --- a/drivers/chibios/ws2812.c +++ /dev/null @@ -1,114 +0,0 @@ -#include "quantum.h" -#include "ws2812.h" -#include -#include - -/* Adapted from https://github.com/bigjosh/SimpleNeoPixelDemo/ */ - -#ifndef NOP_FUDGE -# if defined(STM32F0XX) || defined(STM32F1XX) || defined(STM32F3XX) || defined(STM32F4XX) || defined(STM32L0XX) -# define NOP_FUDGE 0.4 -# else -# error("NOP_FUDGE configuration required") -# define NOP_FUDGE 1 // this just pleases the compile so the above error is easier to spot -# endif -#endif - -// Push Pull or Open Drain Configuration -// Default Push Pull -#ifndef WS2812_EXTERNAL_PULLUP -# define WS2812_OUTPUT_MODE PAL_MODE_OUTPUT_PUSHPULL -#else -# define WS2812_OUTPUT_MODE PAL_MODE_OUTPUT_OPENDRAIN -#endif - -#define NUMBER_NOPS 6 -#define CYCLES_PER_SEC (STM32_SYSCLK / 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) - -#define wait_ns(x) \ - do { \ - for (int i = 0; i < NS_TO_CYCLES(x); i++) { \ - __asm__ volatile("nop\n\t" \ - "nop\n\t" \ - "nop\n\t" \ - "nop\n\t" \ - "nop\n\t" \ - "nop\n\t"); \ - } \ - } while (0) - -// These are the timing constraints taken mostly from the WS2812 datasheets -// These are chosen to be conservative and avoid problems rather than for maximum throughput - -#define T1H 900 // Width of a 1 bit in ns -#define T1L (1250 - T1H) // Width of a 1 bit in ns - -#define T0H 350 // Width of a 0 bit in ns -#define T0L (1250 - T0H) // Width of a 0 bit in ns - -// The reset gap can be 6000 ns, but depending on the LED strip it may have to be increased -// to values like 600000 ns. If it is too small, the pixels will show nothing most of the time. -#define RES (1000 * WS2812_TRST_US) // Width of the low gap between bits to cause a frame to latch - -void sendByte(uint8_t byte) { - // WS2812 protocol wants most significant bits first - for (unsigned char bit = 0; bit < 8; bit++) { - bool is_one = byte & (1 << (7 - bit)); - // using something like wait_ns(is_one ? T1L : T0L) here throws off timings - if (is_one) { - // 1 - writePinHigh(RGB_DI_PIN); - wait_ns(T1H); - writePinLow(RGB_DI_PIN); - wait_ns(T1L); - } else { - // 0 - writePinHigh(RGB_DI_PIN); - wait_ns(T0H); - writePinLow(RGB_DI_PIN); - wait_ns(T0L); - } - } -} - -void ws2812_init(void) { palSetLineMode(RGB_DI_PIN, WS2812_OUTPUT_MODE); } - -// Setleds for standard RGB -void ws2812_setleds(LED_TYPE *ledarray, uint16_t leds) { - static bool s_init = false; - if (!s_init) { - ws2812_init(); - s_init = true; - } - - // this code is very time dependent, so we need to disable interrupts - chSysLock(); - - for (uint8_t i = 0; i < leds; i++) { - // WS2812 protocol dictates grb order -#if (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_GRB) - sendByte(ledarray[i].g); - sendByte(ledarray[i].r); - sendByte(ledarray[i].b); -#elif (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_RGB) - sendByte(ledarray[i].r); - sendByte(ledarray[i].g); - sendByte(ledarray[i].b); -#elif (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_BGR) - sendByte(ledarray[i].b); - sendByte(ledarray[i].g); - sendByte(ledarray[i].r); -#endif - -#ifdef RGBW - sendByte(ledarray[i].w); -#endif - } - - wait_ns(RES); - - chSysUnlock(); -} diff --git a/drivers/eeprom/eeprom_i2c.c b/drivers/eeprom/eeprom_i2c.c index 4210f06f9f9a..8e80ff544fc6 100644 --- a/drivers/eeprom/eeprom_i2c.c +++ b/drivers/eeprom/eeprom_i2c.c @@ -16,6 +16,9 @@ #include #include +#if defined(EXTERNAL_EEPROM_WP_PIN) +# include "gpio.h" +#endif /* Note that the implementations of eeprom_XXXX_YYYY on AVR are normally @@ -50,7 +53,14 @@ static inline void fill_target_address(uint8_t *buffer, const void *addr) { } } -void eeprom_driver_init(void) { i2c_init(); } +void eeprom_driver_init(void) { + i2c_init(); +#if defined(EXTERNAL_EEPROM_WP_PIN) + /* We are setting the WP pin to high in a way that requires at least two bit-flips to change back to 0 */ + writePin(EXTERNAL_EEPROM_WP_PIN, 1); + setPinInputHigh(EXTERNAL_EEPROM_WP_PIN); +#endif +} void eeprom_driver_erase(void) { #if defined(CONSOLE_ENABLE) && defined(DEBUG_EEPROM_OUTPUT) @@ -89,6 +99,11 @@ void eeprom_write_block(const void *buf, void *addr, size_t len) { uint8_t * read_buf = (uint8_t *)buf; uintptr_t target_addr = (uintptr_t)addr; +#if defined(EXTERNAL_EEPROM_WP_PIN) + setPinOutput(EXTERNAL_EEPROM_WP_PIN); + writePin(EXTERNAL_EEPROM_WP_PIN, 0); +#endif + while (len > 0) { uintptr_t page_offset = target_addr % EXTERNAL_EEPROM_PAGE_SIZE; int write_length = EXTERNAL_EEPROM_PAGE_SIZE - page_offset; @@ -116,4 +131,10 @@ void eeprom_write_block(const void *buf, void *addr, size_t len) { target_addr += write_length; len -= write_length; } + +#if defined(EXTERNAL_EEPROM_WP_PIN) + /* We are setting the WP pin to high in a way that requires at least two bit-flips to change back to 0 */ + writePin(EXTERNAL_EEPROM_WP_PIN, 1); + setPinInputHigh(EXTERNAL_EEPROM_WP_PIN); +#endif } diff --git a/drivers/eeprom/eeprom_spi.c b/drivers/eeprom/eeprom_spi.c index 182731d82f10..e27309085437 100644 --- a/drivers/eeprom/eeprom_spi.c +++ b/drivers/eeprom/eeprom_spi.c @@ -31,6 +31,8 @@ */ #include "wait.h" +#include "debug.h" +#include "timer.h" #include "spi_master.h" #include "eeprom.h" #include "eeprom_spi.h" @@ -50,11 +52,6 @@ # define EXTERNAL_EEPROM_SPI_TIMEOUT 100 #endif -#if defined(CONSOLE_ENABLE) && defined(DEBUG_EEPROM_OUTPUT) -# include "timer.h" -# include "debug.h" -#endif // CONSOLE_ENABLE - static bool spi_eeprom_start(void) { return spi_start(EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN, EXTERNAL_EEPROM_SPI_LSBFIRST, EXTERNAL_EEPROM_SPI_MODE, EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR); } static spi_status_t spi_eeprom_wait_while_busy(int timeout) { diff --git a/drivers/haptic/haptic.h b/drivers/haptic/haptic.h deleted file mode 100644 index ba8e0d20be14..000000000000 --- a/drivers/haptic/haptic.h +++ /dev/null @@ -1,81 +0,0 @@ -/* Copyright 2019 ishtob - * Driver for haptic feedback written for 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 . - */ - -#pragma once -#include -#include -#include "quantum.h" -#ifdef DRV2605L -# include "DRV2605L.h" -#endif - -#ifndef HAPTIC_FEEDBACK_DEFAULT -# define HAPTIC_FEEDBACK_DEFAULT 0 -#endif -#ifndef HAPTIC_MODE_DEFAULT -# define HAPTIC_MODE_DEFAULT DRV_MODE_DEFAULT -#endif - -/* EEPROM config settings */ -typedef union { - uint32_t raw; - struct { - bool enable : 1; - uint8_t feedback : 2; - uint8_t mode : 7; - bool buzz : 1; - uint8_t dwell : 7; - bool cont : 1; - uint8_t amplitude : 8; - uint8_t reserved : 5; - }; -} haptic_config_t; - -typedef enum HAPTIC_FEEDBACK { - KEY_PRESS, - KEY_PRESS_RELEASE, - KEY_RELEASE, - HAPTIC_FEEDBACK_MAX, -} HAPTIC_FEEDBACK; - -bool process_haptic(uint16_t keycode, keyrecord_t *record); -void haptic_init(void); -void haptic_task(void); -void eeconfig_debug_haptic(void); -void haptic_enable(void); -void haptic_disable(void); -void haptic_toggle(void); -void haptic_feedback_toggle(void); -void haptic_mode_increase(void); -void haptic_mode_decrease(void); -void haptic_mode(uint8_t mode); -void haptic_reset(void); -void haptic_set_feedback(uint8_t feedback); -void haptic_set_mode(uint8_t mode); -void haptic_set_dwell(uint8_t dwell); -void haptic_set_buzz(uint8_t buzz); -void haptic_buzz_toggle(void); -uint8_t haptic_get_mode(void); -uint8_t haptic_get_feedback(void); -void haptic_dwell_increase(void); -void haptic_dwell_decrease(void); -void haptic_toggle_continuous(void); -void haptic_cont_increase(void); -void haptic_cont_decrease(void); - -void haptic_play(void); -void haptic_shutdown(void); diff --git a/drivers/haptic/solenoid.c b/drivers/haptic/solenoid.c index 3e61d5a171ff..7a09940f78cb 100644 --- a/drivers/haptic/solenoid.c +++ b/drivers/haptic/solenoid.c @@ -18,6 +18,8 @@ #include "timer.h" #include "solenoid.h" #include "haptic.h" +#include "gpio.h" +#include "usb_device_state.h" bool solenoid_on = false; bool solenoid_buzzing = false; @@ -35,7 +37,7 @@ void solenoid_set_buzz(int buzz) { haptic_set_buzz(buzz); } void solenoid_set_dwell(uint8_t dwell) { solenoid_dwell = dwell; } void solenoid_stop(void) { - writePinLow(SOLENOID_PIN); + SOLENOID_PIN_WRITE_INACTIVE(); solenoid_on = false; solenoid_buzzing = false; } @@ -47,7 +49,7 @@ void solenoid_fire(void) { solenoid_on = true; solenoid_buzzing = true; solenoid_start = timer_read(); - writePinHigh(SOLENOID_PIN); + SOLENOID_PIN_WRITE_ACTIVE(); } void solenoid_check(void) { @@ -68,20 +70,23 @@ void solenoid_check(void) { if ((elapsed % (SOLENOID_BUZZ_ACTUATED + SOLENOID_BUZZ_NONACTUATED)) < SOLENOID_BUZZ_ACTUATED) { if (!solenoid_buzzing) { solenoid_buzzing = true; - writePinHigh(SOLENOID_PIN); + SOLENOID_PIN_WRITE_ACTIVE(); } } else { if (solenoid_buzzing) { solenoid_buzzing = false; - writePinLow(SOLENOID_PIN); + SOLENOID_PIN_WRITE_INACTIVE(); } } } } void solenoid_setup(void) { + SOLENOID_PIN_WRITE_INACTIVE(); setPinOutput(SOLENOID_PIN); - solenoid_fire(); + if ((!HAPTIC_OFF_IN_LOW_POWER) || (usb_device_state == USB_DEVICE_STATE_CONFIGURED)) { + solenoid_fire(); + } } -void solenoid_shutdown(void) { writePinLow(SOLENOID_PIN); } +void solenoid_shutdown(void) { SOLENOID_PIN_WRITE_INACTIVE(); } diff --git a/drivers/haptic/solenoid.h b/drivers/haptic/solenoid.h index f2a3bc4c3094..653148154f40 100644 --- a/drivers/haptic/solenoid.h +++ b/drivers/haptic/solenoid.h @@ -49,6 +49,14 @@ # error SOLENOID_PIN not defined #endif +#ifdef SOLENOID_PIN_ACTIVE_LOW +# define SOLENOID_PIN_WRITE_ACTIVE() writePinLow(SOLENOID_PIN) +# define SOLENOID_PIN_WRITE_INACTIVE() writePinHigh(SOLENOID_PIN) +#else +# define SOLENOID_PIN_WRITE_ACTIVE() writePinHigh(SOLENOID_PIN) +# define SOLENOID_PIN_WRITE_INACTIVE() writePinLow(SOLENOID_PIN) +#endif + void solenoid_buzz_on(void); void solenoid_buzz_off(void); void solenoid_set_buzz(int buzz); diff --git a/drivers/lcd/st7565.c b/drivers/lcd/st7565.c new file mode 100644 index 000000000000..49b13c00f157 --- /dev/null +++ b/drivers/lcd/st7565.c @@ -0,0 +1,496 @@ +/* +Copyright 2021 + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "st7565.h" + +#include + +#include "keyboard.h" +#include "progmem.h" +#include "timer.h" +#include "wait.h" + +#include ST7565_FONT_H + +// Fundamental Commands +#define CONTRAST 0x81 +#define DISPLAY_ALL_ON 0xA5 +#define DISPLAY_ALL_ON_RESUME 0xA4 +#define NORMAL_DISPLAY 0xA6 +#define INVERT_DISPLAY 0xA7 +#define DISPLAY_ON 0xAF +#define DISPLAY_OFF 0xAE +#define NOP 0xE3 + +// Addressing Setting Commands +#define PAM_SETCOLUMN_LSB 0x00 +#define PAM_SETCOLUMN_MSB 0x10 +#define PAM_PAGE_ADDR 0xB0 // 0xb0 -- 0xb7 + +// Hardware Configuration Commands +#define DISPLAY_START_LINE 0x40 +#define SEGMENT_REMAP 0xA0 +#define SEGMENT_REMAP_INV 0xA1 +#define COM_SCAN_INC 0xC0 +#define COM_SCAN_DEC 0xC8 +#define LCD_BIAS_7 0xA3 +#define LCD_BIAS_9 0xA2 +#define RESISTOR_RATIO 0x20 +#define POWER_CONTROL 0x28 + +// Misc defines +#ifndef ST7565_BLOCK_COUNT +# define ST7565_BLOCK_COUNT (sizeof(ST7565_BLOCK_TYPE) * 8) +#endif +#ifndef ST7565_BLOCK_SIZE +# define ST7565_BLOCK_SIZE (ST7565_MATRIX_SIZE / ST7565_BLOCK_COUNT) +#endif + +#define ST7565_ALL_BLOCKS_MASK (((((ST7565_BLOCK_TYPE)1 << (ST7565_BLOCK_COUNT - 1)) - 1) << 1) | 1) + +#define HAS_FLAGS(bits, flags) ((bits & flags) == flags) + +// Display buffer's is the same as the display memory layout +// this is so we don't end up with rounding errors with +// parts of the display unusable or don't get cleared correctly +// and also allows for drawing & inverting +uint8_t st7565_buffer[ST7565_MATRIX_SIZE]; +uint8_t * st7565_cursor; +ST7565_BLOCK_TYPE st7565_dirty = 0; +bool st7565_initialized = false; +bool st7565_active = false; +bool st7565_inverted = false; +display_rotation_t st7565_rotation = DISPLAY_ROTATION_0; +#if ST7565_TIMEOUT > 0 +uint32_t st7565_timeout; +#endif +#if ST7565_UPDATE_INTERVAL > 0 +uint16_t st7565_update_timeout; +#endif + +// Flips the rendering bits for a character at the current cursor position +static void InvertCharacter(uint8_t *cursor) { + const uint8_t *end = cursor + ST7565_FONT_WIDTH; + while (cursor < end) { + *cursor = ~(*cursor); + cursor++; + } +} + +bool st7565_init(display_rotation_t rotation) { + setPinOutput(ST7565_A0_PIN); + writePinHigh(ST7565_A0_PIN); + setPinOutput(ST7565_RST_PIN); + writePinHigh(ST7565_RST_PIN); + + st7565_rotation = st7565_init_user(rotation); + + spi_init(); + spi_start(ST7565_SS_PIN, false, 0, ST7565_SPI_CLK_DIVISOR); + + st7565_reset(); + + st7565_send_cmd(LCD_BIAS_7); + if (!HAS_FLAGS(st7565_rotation, DISPLAY_ROTATION_180)) { + st7565_send_cmd(SEGMENT_REMAP); + st7565_send_cmd(COM_SCAN_DEC); + } else { + st7565_send_cmd(SEGMENT_REMAP_INV); + st7565_send_cmd(COM_SCAN_INC); + } + st7565_send_cmd(DISPLAY_START_LINE | 0x00); + st7565_send_cmd(CONTRAST); + st7565_send_cmd(ST7565_CONTRAST); + st7565_send_cmd(RESISTOR_RATIO | 0x01); + st7565_send_cmd(POWER_CONTROL | 0x04); + wait_ms(50); + st7565_send_cmd(POWER_CONTROL | 0x06); + wait_ms(50); + st7565_send_cmd(POWER_CONTROL | 0x07); + wait_ms(10); + st7565_send_cmd(DISPLAY_ON); + st7565_send_cmd(DISPLAY_ALL_ON_RESUME); + st7565_send_cmd(NORMAL_DISPLAY); + + spi_stop(); + +#if ST7565_TIMEOUT > 0 + st7565_timeout = timer_read32() + ST7565_TIMEOUT; +#endif + + st7565_clear(); + st7565_initialized = true; + st7565_active = true; + return true; +} + +__attribute__((weak)) display_rotation_t st7565_init_user(display_rotation_t rotation) { return rotation; } + +void st7565_clear(void) { + memset(st7565_buffer, 0, sizeof(st7565_buffer)); + st7565_cursor = &st7565_buffer[0]; + st7565_dirty = ST7565_ALL_BLOCKS_MASK; +} + +uint8_t crot(uint8_t a, int8_t n) { + const uint8_t mask = 0x7; + n &= mask; + return a << n | a >> (-n & mask); +} + +void st7565_render(void) { + if (!st7565_initialized) { + return; + } + + // Do we have work to do? + st7565_dirty &= ST7565_ALL_BLOCKS_MASK; + if (!st7565_dirty) { + return; + } + + // Find first dirty block + uint8_t update_start = 0; + while (!(st7565_dirty & ((ST7565_BLOCK_TYPE)1 << update_start))) { + ++update_start; + } + + // Calculate commands to set memory addressing bounds. + uint8_t start_page = ST7565_BLOCK_SIZE * update_start / ST7565_DISPLAY_WIDTH; + uint8_t start_column = ST7565_BLOCK_SIZE * update_start % ST7565_DISPLAY_WIDTH; + // IC has 132 segment drivers, for panels with less width we need to offset the starting column + if (HAS_FLAGS(st7565_rotation, DISPLAY_ROTATION_180)) { + start_column += (132 - ST7565_DISPLAY_WIDTH); + } + + spi_start(ST7565_SS_PIN, false, 0, ST7565_SPI_CLK_DIVISOR); + + st7565_send_cmd(PAM_PAGE_ADDR | start_page); + st7565_send_cmd(PAM_SETCOLUMN_LSB | ((ST7565_COLUMN_OFFSET + start_column) & 0x0f)); + st7565_send_cmd(PAM_SETCOLUMN_MSB | ((ST7565_COLUMN_OFFSET + start_column) >> 4 & 0x0f)); + + st7565_send_data(&st7565_buffer[ST7565_BLOCK_SIZE * update_start], ST7565_BLOCK_SIZE); + + // Turn on display if it is off + st7565_on(); + + // Clear dirty flag + st7565_dirty &= ~((ST7565_BLOCK_TYPE)1 << update_start); +} + +void st7565_set_cursor(uint8_t col, uint8_t line) { + uint16_t index = line * ST7565_DISPLAY_WIDTH + col * ST7565_FONT_WIDTH; + + // Out of bounds? + if (index >= ST7565_MATRIX_SIZE) { + index = 0; + } + + st7565_cursor = &st7565_buffer[index]; +} + +void st7565_advance_page(bool clearPageRemainder) { + uint16_t index = st7565_cursor - &st7565_buffer[0]; + uint8_t remaining = ST7565_DISPLAY_WIDTH - (index % ST7565_DISPLAY_WIDTH); + + if (clearPageRemainder) { + // Remaining Char count + remaining = remaining / ST7565_FONT_WIDTH; + + // Write empty character until next line + while (remaining--) st7565_write_char(' ', false); + } else { + // Next page index out of bounds? + if (index + remaining >= ST7565_MATRIX_SIZE) { + index = 0; + remaining = 0; + } + + st7565_cursor = &st7565_buffer[index + remaining]; + } +} + +void st7565_advance_char(void) { + uint16_t nextIndex = st7565_cursor - &st7565_buffer[0] + ST7565_FONT_WIDTH; + uint8_t remainingSpace = ST7565_DISPLAY_WIDTH - (nextIndex % ST7565_DISPLAY_WIDTH); + + // Do we have enough space on the current line for the next character + if (remainingSpace < ST7565_FONT_WIDTH) { + nextIndex += remainingSpace; + } + + // Did we go out of bounds + if (nextIndex >= ST7565_MATRIX_SIZE) { + nextIndex = 0; + } + + // Update cursor position + st7565_cursor = &st7565_buffer[nextIndex]; +} + +// Main handler that writes character data to the display buffer +void st7565_write_char(const char data, bool invert) { + // Advance to the next line if newline + if (data == '\n') { + // Old source wrote ' ' until end of line... + st7565_advance_page(true); + return; + } + + if (data == '\r') { + st7565_advance_page(false); + return; + } + + // copy the current render buffer to check for dirty after + static uint8_t st7565_temp_buffer[ST7565_FONT_WIDTH]; + memcpy(&st7565_temp_buffer, st7565_cursor, ST7565_FONT_WIDTH); + + _Static_assert(sizeof(font) >= ((ST7565_FONT_END + 1 - ST7565_FONT_START) * ST7565_FONT_WIDTH), "ST7565_FONT_END references outside array"); + + // set the reder buffer data + uint8_t cast_data = (uint8_t)data; // font based on unsigned type for index + if (cast_data < ST7565_FONT_START || cast_data > ST7565_FONT_END) { + memset(st7565_cursor, 0x00, ST7565_FONT_WIDTH); + } else { + const uint8_t *glyph = &font[(cast_data - ST7565_FONT_START) * ST7565_FONT_WIDTH]; + memcpy_P(st7565_cursor, glyph, ST7565_FONT_WIDTH); + } + + // Invert if needed + if (invert) { + InvertCharacter(st7565_cursor); + } + + // Dirty check + if (memcmp(&st7565_temp_buffer, st7565_cursor, ST7565_FONT_WIDTH)) { + uint16_t index = st7565_cursor - &st7565_buffer[0]; + st7565_dirty |= ((ST7565_BLOCK_TYPE)1 << (index / ST7565_BLOCK_SIZE)); + // Edgecase check if the written data spans the 2 chunks + st7565_dirty |= ((ST7565_BLOCK_TYPE)1 << ((index + ST7565_FONT_WIDTH - 1) / ST7565_BLOCK_SIZE)); + } + + // Finally move to the next char + st7565_advance_char(); +} + +void st7565_write(const char *data, bool invert) { + const char *end = data + strlen(data); + while (data < end) { + st7565_write_char(*data, invert); + data++; + } +} + +void st7565_write_ln(const char *data, bool invert) { + st7565_write(data, invert); + st7565_advance_page(true); +} + +void st7565_pan(bool left) { + uint16_t i = 0; + for (uint16_t y = 0; y < ST7565_DISPLAY_HEIGHT / 8; y++) { + if (left) { + for (uint16_t x = 0; x < ST7565_DISPLAY_WIDTH - 1; x++) { + i = y * ST7565_DISPLAY_WIDTH + x; + st7565_buffer[i] = st7565_buffer[i + 1]; + } + } else { + for (uint16_t x = ST7565_DISPLAY_WIDTH - 1; x > 0; x--) { + i = y * ST7565_DISPLAY_WIDTH + x; + st7565_buffer[i] = st7565_buffer[i - 1]; + } + } + } + st7565_dirty = ST7565_ALL_BLOCKS_MASK; +} + +display_buffer_reader_t st7565_read_raw(uint16_t start_index) { + if (start_index > ST7565_MATRIX_SIZE) start_index = ST7565_MATRIX_SIZE; + display_buffer_reader_t ret_reader; + ret_reader.current_element = &st7565_buffer[start_index]; + ret_reader.remaining_element_count = ST7565_MATRIX_SIZE - start_index; + return ret_reader; +} + +void st7565_write_raw_byte(const char data, uint16_t index) { + if (index > ST7565_MATRIX_SIZE) index = ST7565_MATRIX_SIZE; + if (st7565_buffer[index] == data) return; + st7565_buffer[index] = data; + st7565_dirty |= ((ST7565_BLOCK_TYPE)1 << (index / ST7565_BLOCK_SIZE)); +} + +void st7565_write_raw(const char *data, uint16_t size) { + uint16_t cursor_start_index = st7565_cursor - &st7565_buffer[0]; + if ((size + cursor_start_index) > ST7565_MATRIX_SIZE) size = ST7565_MATRIX_SIZE - cursor_start_index; + for (uint16_t i = cursor_start_index; i < cursor_start_index + size; i++) { + uint8_t c = *data++; + if (st7565_buffer[i] == c) continue; + st7565_buffer[i] = c; + st7565_dirty |= ((ST7565_BLOCK_TYPE)1 << (i / ST7565_BLOCK_SIZE)); + } +} + +void st7565_write_pixel(uint8_t x, uint8_t y, bool on) { + if (x >= ST7565_DISPLAY_WIDTH) { + return; + } + uint16_t index = x + (y / 8) * ST7565_DISPLAY_WIDTH; + if (index >= ST7565_MATRIX_SIZE) { + return; + } + uint8_t data = st7565_buffer[index]; + if (on) { + data |= (1 << (y % 8)); + } else { + data &= ~(1 << (y % 8)); + } + if (st7565_buffer[index] != data) { + st7565_buffer[index] = data; + st7565_dirty |= ((ST7565_BLOCK_TYPE)1 << (index / ST7565_BLOCK_SIZE)); + } +} + +#if defined(__AVR__) +void st7565_write_P(const char *data, bool invert) { + uint8_t c = pgm_read_byte(data); + while (c != 0) { + st7565_write_char(c, invert); + c = pgm_read_byte(++data); + } +} + +void st7565_write_ln_P(const char *data, bool invert) { + st7565_write_P(data, invert); + st7565_advance_page(true); +} + +void st7565_write_raw_P(const char *data, uint16_t size) { + uint16_t cursor_start_index = st7565_cursor - &st7565_buffer[0]; + if ((size + cursor_start_index) > ST7565_MATRIX_SIZE) size = ST7565_MATRIX_SIZE - cursor_start_index; + for (uint16_t i = cursor_start_index; i < cursor_start_index + size; i++) { + uint8_t c = pgm_read_byte(data++); + if (st7565_buffer[i] == c) continue; + st7565_buffer[i] = c; + st7565_dirty |= ((ST7565_BLOCK_TYPE)1 << (i / ST7565_BLOCK_SIZE)); + } +} +#endif // defined(__AVR__) + +bool st7565_on(void) { + if (!st7565_initialized) { + return st7565_active; + } + +#if ST7565_TIMEOUT > 0 + st7565_timeout = timer_read32() + ST7565_TIMEOUT; +#endif + + if (!st7565_active) { + spi_start(ST7565_SS_PIN, false, 0, ST7565_SPI_CLK_DIVISOR); + st7565_send_cmd(DISPLAY_ON); + spi_stop(); + st7565_active = true; + st7565_on_user(); + } + return st7565_active; +} + +__attribute__((weak)) void st7565_on_user(void) {} + +bool st7565_off(void) { + if (!st7565_initialized) { + return !st7565_active; + } + + if (st7565_active) { + spi_start(ST7565_SS_PIN, false, 0, ST7565_SPI_CLK_DIVISOR); + st7565_send_cmd(DISPLAY_OFF); + spi_stop(); + st7565_active = false; + st7565_off_user(); + } + return !st7565_active; +} + +__attribute__((weak)) void st7565_off_user(void) {} + +bool st7565_is_on(void) { return st7565_active; } + +bool st7565_invert(bool invert) { + if (!st7565_initialized) { + return st7565_inverted; + } + + if (invert != st7565_inverted) { + spi_start(ST7565_SS_PIN, false, 0, ST7565_SPI_CLK_DIVISOR); + st7565_send_cmd(invert ? INVERT_DISPLAY : NORMAL_DISPLAY); + spi_stop(); + st7565_inverted = invert; + } + return st7565_inverted; +} + +uint8_t st7565_max_chars(void) { return ST7565_DISPLAY_WIDTH / ST7565_FONT_WIDTH; } + +uint8_t st7565_max_lines(void) { return ST7565_DISPLAY_HEIGHT / ST7565_FONT_HEIGHT; } + +void st7565_task(void) { + if (!st7565_initialized) { + return; + } + +#if ST7565_UPDATE_INTERVAL > 0 + if (timer_elapsed(st7565_update_timeout) >= ST7565_UPDATE_INTERVAL) { + st7565_update_timeout = timer_read(); + st7565_set_cursor(0, 0); + st7565_task_user(); + } +#else + st7565_set_cursor(0, 0); + st7565_task_user(); +#endif + + // Smart render system, no need to check for dirty + st7565_render(); + + // Display timeout check +#if ST7565_TIMEOUT > 0 + if (st7565_active && timer_expired32(timer_read32(), st7565_timeout)) { + st7565_off(); + } +#endif +} + +__attribute__((weak)) void st7565_task_user(void) {} + +void st7565_reset(void) { + writePinLow(ST7565_RST_PIN); + wait_ms(20); + writePinHigh(ST7565_RST_PIN); + wait_ms(20); +} + +spi_status_t st7565_send_cmd(uint8_t cmd) { + writePinLow(ST7565_A0_PIN); + return spi_write(cmd); +} + +spi_status_t st7565_send_data(uint8_t *data, uint16_t length) { + writePinHigh(ST7565_A0_PIN); + return spi_transmit(data, length); +} diff --git a/drivers/lcd/st7565.h b/drivers/lcd/st7565.h new file mode 100644 index 000000000000..d453dbe6da90 --- /dev/null +++ b/drivers/lcd/st7565.h @@ -0,0 +1,219 @@ +/* +Copyright 2021 + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include +#include + +#include "spi_master.h" + +#ifndef ST7565_DISPLAY_WIDTH +# define ST7565_DISPLAY_WIDTH 128 +#endif +#ifndef ST7565_DISPLAY_HEIGHT +# define ST7565_DISPLAY_HEIGHT 32 +#endif +#ifndef ST7565_MATRIX_SIZE +# define ST7565_MATRIX_SIZE (ST7565_DISPLAY_HEIGHT / 8 * ST7565_DISPLAY_WIDTH) // 1024 (compile time mathed) +#endif +#ifndef ST7565_BLOCK_TYPE +# define ST7565_BLOCK_TYPE uint16_t +#endif +#ifndef ST7565_BLOCK_COUNT +# define ST7565_BLOCK_COUNT (sizeof(ST7565_BLOCK_TYPE) * 8) // 32 (compile time mathed) +#endif +#ifndef ST7565_BLOCK_SIZE +# define ST7565_BLOCK_SIZE (ST7565_MATRIX_SIZE / ST7565_BLOCK_COUNT) // 32 (compile time mathed) +#endif + +// the column address corresponding to the first column in the display hardware +#if !defined(ST7565_COLUMN_OFFSET) +# define ST7565_COLUMN_OFFSET 0 +#endif + +// spi clock divisor +#if !defined(ST7565_SPI_CLK_DIVISOR) +# define ST7565_SPI_CLK_DIVISOR 4 +#endif + +// Custom font file to use +#if !defined(ST7565_FONT_H) +# define ST7565_FONT_H "glcdfont.c" +#endif +// unsigned char value of the first character in the font file +#if !defined(ST7565_FONT_START) +# define ST7565_FONT_START 0 +#endif +// unsigned char value of the last character in the font file +#if !defined(ST7565_FONT_END) +# define ST7565_FONT_END 223 +#endif +// Font render width +#if !defined(ST7565_FONT_WIDTH) +# define ST7565_FONT_WIDTH 6 +#endif +// Font render height +#if !defined(ST7565_FONT_HEIGHT) +# define ST7565_FONT_HEIGHT 8 +#endif +// Default contrast level +#if !defined(ST7565_CONTRAST) +# define ST7565_CONTRAST 32 +#endif + +#if !defined(ST7565_TIMEOUT) +# if defined(ST7565_DISABLE_TIMEOUT) +# define ST7565_TIMEOUT 0 +# else +# define ST7565_TIMEOUT 60000 +# endif +#endif + +#if !defined(ST7565_UPDATE_INTERVAL) && defined(SPLIT_KEYBOARD) +# define ST7565_UPDATE_INTERVAL 50 +#endif + +typedef struct __attribute__((__packed__)) { + uint8_t *current_element; + uint16_t remaining_element_count; +} display_buffer_reader_t; + +// Rotation enum values are flags +typedef enum { DISPLAY_ROTATION_0, DISPLAY_ROTATION_180 } display_rotation_t; + +// Initialize the display, rotating the rendered output based on the define passed in. +// Returns true if the display was initialized successfully +bool st7565_init(display_rotation_t rotation); + +// Called at the start of st7565_init, weak function overridable by the user +// rotation - the value passed into st7565_init +// Return new display_rotation_t if you want to override default rotation +display_rotation_t st7565_init_user(display_rotation_t rotation); + +// Clears the display buffer, resets cursor position to 0, and sets the buffer to dirty for rendering +void st7565_clear(void); + +// Renders the dirty chunks of the buffer to display +void st7565_render(void); + +// Moves cursor to character position indicated by column and line, wraps if out of bounds +// Max column denoted by 'st7565_max_chars()' and max lines by 'st7565_max_lines()' functions +void st7565_set_cursor(uint8_t col, uint8_t line); + +// Advances the cursor to the next page, writing ' ' if true +// Wraps to the begining when out of bounds +void st7565_advance_page(bool clearPageRemainder); + +// Moves the cursor forward 1 character length +// Advance page if there is not enough room for the next character +// Wraps to the begining when out of bounds +void st7565_advance_char(void); + +// Writes a single character to the buffer at current cursor position +// Advances the cursor while writing, inverts the pixels if true +// Main handler that writes character data to the display buffer +void st7565_write_char(const char data, bool invert); + +// Writes a string to the buffer at current cursor position +// Advances the cursor while writing, inverts the pixels if true +void st7565_write(const char *data, bool invert); + +// Writes a string to the buffer at current cursor position +// Advances the cursor while writing, inverts the pixels if true +// Advances the cursor to the next page, wiring ' ' to the remainder of the current page +void st7565_write_ln(const char *data, bool invert); + +// Pans the buffer to the right (or left by passing true) by moving contents of the buffer +// Useful for moving the screen in preparation for new drawing +void st7565_pan(bool left); + +// Returns a pointer to the requested start index in the buffer plus remaining +// buffer length as struct +display_buffer_reader_t st7565_read_raw(uint16_t start_index); + +// Writes a string to the buffer at current cursor position +void st7565_write_raw(const char *data, uint16_t size); + +// Writes a single byte into the buffer at the specified index +void st7565_write_raw_byte(const char data, uint16_t index); + +// Sets a specific pixel on or off +// Coordinates start at top-left and go right and down for positive x and y +void st7565_write_pixel(uint8_t x, uint8_t y, bool on); + +#if defined(__AVR__) +// Writes a PROGMEM string to the buffer at current cursor position +// Advances the cursor while writing, inverts the pixels if true +// Remapped to call 'void st7565_write(const char *data, bool invert);' on ARM +void st7565_write_P(const char *data, bool invert); + +// Writes a PROGMEM string to the buffer at current cursor position +// Advances the cursor while writing, inverts the pixels if true +// Advances the cursor to the next page, wiring ' ' to the remainder of the current page +// Remapped to call 'void st7565_write_ln(const char *data, bool invert);' on ARM +void st7565_write_ln_P(const char *data, bool invert); + +// Writes a PROGMEM string to the buffer at current cursor position +void st7565_write_raw_P(const char *data, uint16_t size); +#else +# define st7565_write_P(data, invert) st7565_write(data, invert) +# define st7565_write_ln_P(data, invert) st7565_write_ln(data, invert) +# define st7565_write_raw_P(data, size) st7565_write_raw(data, size) +#endif // defined(__AVR__) + +// Can be used to manually turn on the screen if it is off +// Returns true if the screen was on or turns on +bool st7565_on(void); + +// Called when st7565_on() turns on the screen, weak function overridable by the user +// Not called if the screen is already on +void st7565_on_user(void); + +// Can be used to manually turn off the screen if it is on +// Returns true if the screen was off or turns off +bool st7565_off(void); + +// Called when st7565_off() turns off the screen, weak function overridable by the user +// Not called if the screen is already off +void st7565_off_user(void); + +// Returns true if the screen is currently on, false if it is +// not +bool st7565_is_on(void); + +// Basically it's st7565_render, but with timeout management and st7565_task_user calling! +void st7565_task(void); + +// Called at the start of st7565_task, weak function overridable by the user +void st7565_task_user(void); + +// Inverts the display +// Returns true if the screen was or is inverted +bool st7565_invert(bool invert); + +// Returns the maximum number of characters that will fit on a line +uint8_t st7565_max_chars(void); + +// Returns the maximum number of lines that will fit on the display +uint8_t st7565_max_lines(void); + +void st7565_reset(void); + +spi_status_t st7565_send_cmd(uint8_t cmd); + +spi_status_t st7565_send_data(uint8_t *data, uint16_t length); diff --git a/drivers/apa102/apa102.c b/drivers/led/apa102.c similarity index 96% rename from drivers/apa102/apa102.c rename to drivers/led/apa102.c index 7396dc3c551d..00e7eb450536 100644 --- a/drivers/apa102/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/drivers/apa102/apa102.h b/drivers/led/apa102.h similarity index 100% rename from drivers/apa102/apa102.h rename to drivers/led/apa102.h diff --git a/drivers/led/aw20216.c b/drivers/led/aw20216.c new file mode 100644 index 000000000000..2c7ff8f08898 --- /dev/null +++ b/drivers/led/aw20216.c @@ -0,0 +1,142 @@ +/* Copyright 2021 Jasper Chan + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "aw20216.h" +#include "spi_master.h" + +/* The AW20216 appears to be somewhat similar to the IS31FL743, although quite + * a few things are different, such as the command byte format and page ordering. + * The LED addresses start from 0x00 instead of 0x01. + */ +#define AWINIC_ID 0b1010 << 4 + +#define AW_PAGE_FUNCTION 0x00 << 1 // PG0, Function registers +#define AW_PAGE_PWM 0x01 << 1 // PG1, LED PWM control +#define AW_PAGE_SCALING 0x02 << 1 // PG2, LED current scaling control +#define AW_PAGE_PATCHOICE 0x03 << 1 // PG3, Pattern choice? +#define AW_PAGE_PWMSCALING 0x04 << 1 // PG4, LED PWM + Scaling control? + +#define AW_WRITE 0 +#define AW_READ 1 + +#define AW_REG_CONFIGURATION 0x00 // PG0 +#define AW_REG_GLOBALCURRENT 0x01 // PG0 + +// Default value of AW_REG_CONFIGURATION +// D7:D4 = 1011, SWSEL (SW1~SW12 active) +// D3 = 0?, reserved (apparently this should be 1 but it doesn't seem to matter) +// D2:D1 = 00, OSDE (open/short detection enable) +// D0 = 0, CHIPEN (write 1 to enable LEDs when hardware enable pulled high) +#define AW_CONFIG_DEFAULT 0b10110000 +#define AW_CHIPEN 1 + +#define AW_PWM_REGISTER_COUNT 216 + +#ifndef AW_SCALING_MAX +# define AW_SCALING_MAX 150 +#endif + +#ifndef AW_GLOBAL_CURRENT_MAX +# define AW_GLOBAL_CURRENT_MAX 150 +#endif + +#ifndef AW_SPI_DIVISOR +# define AW_SPI_DIVISOR 4 +#endif + +uint8_t g_pwm_buffer[DRIVER_COUNT][AW_PWM_REGISTER_COUNT]; +bool g_pwm_buffer_update_required[DRIVER_COUNT] = {false}; + +bool AW20216_write(pin_t cs_pin, uint8_t page, uint8_t reg, uint8_t* data, uint8_t len) { + static uint8_t s_spi_transfer_buffer[2] = {0}; + + if (!spi_start(cs_pin, false, 0, AW_SPI_DIVISOR)) { + spi_stop(); + return false; + } + + s_spi_transfer_buffer[0] = (AWINIC_ID | page | AW_WRITE); + s_spi_transfer_buffer[1] = reg; + + if (spi_transmit(s_spi_transfer_buffer, 2) != SPI_STATUS_SUCCESS) { + spi_stop(); + return false; + } + + if (spi_transmit(data, len) != SPI_STATUS_SUCCESS) { + spi_stop(); + return false; + } + + spi_stop(); + return true; +} + +static inline bool AW20216_write_register(pin_t cs_pin, uint8_t page, uint8_t reg, uint8_t value) { + // Little wrapper so callers need not care about sending a buffer + return AW20216_write(cs_pin, page, reg, &value, 1); +} + +static void AW20216_init_scaling(pin_t cs_pin) { + // Set constant current to the max, control brightness with PWM + for (uint8_t i = 0; i < AW_PWM_REGISTER_COUNT; i++) { + AW20216_write_register(cs_pin, AW_PAGE_SCALING, i, AW_SCALING_MAX); + } +} + +static inline void AW20216_init_current_limit(pin_t cs_pin) { + // Push config + AW20216_write_register(cs_pin, AW_PAGE_FUNCTION, AW_REG_GLOBALCURRENT, AW_GLOBAL_CURRENT_MAX); +} + +static inline void AW20216_soft_enable(pin_t cs_pin) { + // Push config + AW20216_write_register(cs_pin, AW_PAGE_FUNCTION, AW_REG_CONFIGURATION, AW_CONFIG_DEFAULT | AW_CHIPEN); +} + +void AW20216_init(pin_t cs_pin, pin_t en_pin) { + setPinOutput(en_pin); + writePinHigh(en_pin); + + // Drivers should start with all scaling and PWM registers as off + AW20216_init_current_limit(cs_pin); + AW20216_init_scaling(cs_pin); + + AW20216_soft_enable(cs_pin); +} + +void AW20216_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { + aw_led led; + memcpy_P(&led, (&g_aw_leds[index]), sizeof(led)); + + g_pwm_buffer[led.driver][led.r] = red; + g_pwm_buffer[led.driver][led.g] = green; + g_pwm_buffer[led.driver][led.b] = blue; + g_pwm_buffer_update_required[led.driver] = true; +} + +void AW20216_set_color_all(uint8_t red, uint8_t green, uint8_t blue) { + for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) { + AW20216_set_color(i, red, green, blue); + } +} + +void AW20216_update_pwm_buffers(pin_t cs_pin, uint8_t index) { + if (g_pwm_buffer_update_required[index]) { + AW20216_write(cs_pin, AW_PAGE_PWM, 0, g_pwm_buffer[index], AW_PWM_REGISTER_COUNT); + } + g_pwm_buffer_update_required[index] = false; +} diff --git a/drivers/led/aw20216.h b/drivers/led/aw20216.h new file mode 100644 index 000000000000..0a17050fed81 --- /dev/null +++ b/drivers/led/aw20216.h @@ -0,0 +1,253 @@ +/* Copyright 2021 Jasper Chan (Gigahawk) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include +#include +#include "progmem.h" +#include "gpio.h" + +typedef struct aw_led { + uint8_t driver : 2; + uint8_t r; + uint8_t g; + uint8_t b; +} aw_led; + +extern const aw_led PROGMEM g_aw_leds[DRIVER_LED_TOTAL]; + +void AW20216_init(pin_t cs_pin, pin_t en_pin); +void AW20216_set_color(int index, uint8_t red, uint8_t green, uint8_t blue); +void AW20216_set_color_all(uint8_t red, uint8_t green, uint8_t blue); +void AW20216_update_pwm_buffers(pin_t cs_pin, uint8_t index); + +#define CS1_SW1 0x00 +#define CS2_SW1 0x01 +#define CS3_SW1 0x02 +#define CS4_SW1 0x03 +#define CS5_SW1 0x04 +#define CS6_SW1 0x05 +#define CS7_SW1 0x06 +#define CS8_SW1 0x07 +#define CS9_SW1 0x08 +#define CS10_SW1 0x09 +#define CS11_SW1 0x0A +#define CS12_SW1 0x0B +#define CS13_SW1 0x0C +#define CS14_SW1 0x0D +#define CS15_SW1 0x0E +#define CS16_SW1 0x0F +#define CS17_SW1 0x10 +#define CS18_SW1 0x11 +#define CS1_SW2 0x12 +#define CS2_SW2 0x13 +#define CS3_SW2 0x14 +#define CS4_SW2 0x15 +#define CS5_SW2 0x16 +#define CS6_SW2 0x17 +#define CS7_SW2 0x18 +#define CS8_SW2 0x19 +#define CS9_SW2 0x1A +#define CS10_SW2 0x1B +#define CS11_SW2 0x1C +#define CS12_SW2 0x1D +#define CS13_SW2 0x1E +#define CS14_SW2 0x1F +#define CS15_SW2 0x20 +#define CS16_SW2 0x21 +#define CS17_SW2 0x22 +#define CS18_SW2 0x23 +#define CS1_SW3 0x24 +#define CS2_SW3 0x25 +#define CS3_SW3 0x26 +#define CS4_SW3 0x27 +#define CS5_SW3 0x28 +#define CS6_SW3 0x29 +#define CS7_SW3 0x2A +#define CS8_SW3 0x2B +#define CS9_SW3 0x2C +#define CS10_SW3 0x2D +#define CS11_SW3 0x2E +#define CS12_SW3 0x2F +#define CS13_SW3 0x30 +#define CS14_SW3 0x31 +#define CS15_SW3 0x32 +#define CS16_SW3 0x33 +#define CS17_SW3 0x34 +#define CS18_SW3 0x35 +#define CS1_SW4 0x36 +#define CS2_SW4 0x37 +#define CS3_SW4 0x38 +#define CS4_SW4 0x39 +#define CS5_SW4 0x3A +#define CS6_SW4 0x3B +#define CS7_SW4 0x3C +#define CS8_SW4 0x3D +#define CS9_SW4 0x3E +#define CS10_SW4 0x3F +#define CS11_SW4 0x40 +#define CS12_SW4 0x41 +#define CS13_SW4 0x42 +#define CS14_SW4 0x43 +#define CS15_SW4 0x44 +#define CS16_SW4 0x45 +#define CS17_SW4 0x46 +#define CS18_SW4 0x47 +#define CS1_SW5 0x48 +#define CS2_SW5 0x49 +#define CS3_SW5 0x4A +#define CS4_SW5 0x4B +#define CS5_SW5 0x4C +#define CS6_SW5 0x4D +#define CS7_SW5 0x4E +#define CS8_SW5 0x4F +#define CS9_SW5 0x50 +#define CS10_SW5 0x51 +#define CS11_SW5 0x52 +#define CS12_SW5 0x53 +#define CS13_SW5 0x54 +#define CS14_SW5 0x55 +#define CS15_SW5 0x56 +#define CS16_SW5 0x57 +#define CS17_SW5 0x58 +#define CS18_SW5 0x59 +#define CS1_SW6 0x5A +#define CS2_SW6 0x5B +#define CS3_SW6 0x5C +#define CS4_SW6 0x5D +#define CS5_SW6 0x5E +#define CS6_SW6 0x5F +#define CS7_SW6 0x60 +#define CS8_SW6 0x61 +#define CS9_SW6 0x62 +#define CS10_SW6 0x63 +#define CS11_SW6 0x64 +#define CS12_SW6 0x65 +#define CS13_SW6 0x66 +#define CS14_SW6 0x67 +#define CS15_SW6 0x68 +#define CS16_SW6 0x69 +#define CS17_SW6 0x6A +#define CS18_SW6 0x6B +#define CS1_SW7 0x6C +#define CS2_SW7 0x6D +#define CS3_SW7 0x6E +#define CS4_SW7 0x6F +#define CS5_SW7 0x70 +#define CS6_SW7 0x71 +#define CS7_SW7 0x72 +#define CS8_SW7 0x73 +#define CS9_SW7 0x74 +#define CS10_SW7 0x75 +#define CS11_SW7 0x76 +#define CS12_SW7 0x77 +#define CS13_SW7 0x78 +#define CS14_SW7 0x79 +#define CS15_SW7 0x7A +#define CS16_SW7 0x7B +#define CS17_SW7 0x7C +#define CS18_SW7 0x7D +#define CS1_SW8 0x7E +#define CS2_SW8 0x7F +#define CS3_SW8 0x80 +#define CS4_SW8 0x81 +#define CS5_SW8 0x82 +#define CS6_SW8 0x83 +#define CS7_SW8 0x84 +#define CS8_SW8 0x85 +#define CS9_SW8 0x86 +#define CS10_SW8 0x87 +#define CS11_SW8 0x88 +#define CS12_SW8 0x89 +#define CS13_SW8 0x8A +#define CS14_SW8 0x8B +#define CS15_SW8 0x8C +#define CS16_SW8 0x8D +#define CS17_SW8 0x8E +#define CS18_SW8 0x8F +#define CS1_SW9 0x90 +#define CS2_SW9 0x91 +#define CS3_SW9 0x92 +#define CS4_SW9 0x93 +#define CS5_SW9 0x94 +#define CS6_SW9 0x95 +#define CS7_SW9 0x96 +#define CS8_SW9 0x97 +#define CS9_SW9 0x98 +#define CS10_SW9 0x99 +#define CS11_SW9 0x9A +#define CS12_SW9 0x9B +#define CS13_SW9 0x9C +#define CS14_SW9 0x9D +#define CS15_SW9 0x9E +#define CS16_SW9 0x9F +#define CS17_SW9 0xA0 +#define CS18_SW9 0xA1 +#define CS1_SW10 0xA2 +#define CS2_SW10 0xA3 +#define CS3_SW10 0xA4 +#define CS4_SW10 0xA5 +#define CS5_SW10 0xA6 +#define CS6_SW10 0xA7 +#define CS7_SW10 0xA8 +#define CS8_SW10 0xA9 +#define CS9_SW10 0xAA +#define CS10_SW10 0xAB +#define CS11_SW10 0xAC +#define CS12_SW10 0xAD +#define CS13_SW10 0xAE +#define CS14_SW10 0xAF +#define CS15_SW10 0xB0 +#define CS16_SW10 0xB1 +#define CS17_SW10 0xB2 +#define CS18_SW10 0xB3 +#define CS1_SW11 0xB4 +#define CS2_SW11 0xB5 +#define CS3_SW11 0xB6 +#define CS4_SW11 0xB7 +#define CS5_SW11 0xB8 +#define CS6_SW11 0xB9 +#define CS7_SW11 0xBA +#define CS8_SW11 0xBB +#define CS9_SW11 0xBC +#define CS10_SW11 0xBD +#define CS11_SW11 0xBE +#define CS12_SW11 0xBF +#define CS13_SW11 0xC0 +#define CS14_SW11 0xC1 +#define CS15_SW11 0xC2 +#define CS16_SW11 0xC3 +#define CS17_SW11 0xC4 +#define CS18_SW11 0xC5 +#define CS1_SW12 0xC6 +#define CS2_SW12 0xC7 +#define CS3_SW12 0xC8 +#define CS4_SW12 0xC9 +#define CS5_SW12 0xCA +#define CS6_SW12 0xCB +#define CS7_SW12 0xCC +#define CS8_SW12 0xCD +#define CS9_SW12 0xCE +#define CS10_SW12 0xCF +#define CS11_SW12 0xD0 +#define CS12_SW12 0xD1 +#define CS13_SW12 0xD2 +#define CS14_SW12 0xD3 +#define CS15_SW12 0xD4 +#define CS16_SW12 0xD5 +#define CS17_SW12 0xD6 +#define CS18_SW12 0xD7 diff --git a/drivers/led/ckled2001.c b/drivers/led/ckled2001.c new file mode 100644 index 000000000000..990e50cb6066 --- /dev/null +++ b/drivers/led/ckled2001.c @@ -0,0 +1,228 @@ +/* Copyright 2021 @ Keychron (https://www.keychron.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "ckled2001.h" +#include "i2c_master.h" +#include "wait.h" + +#ifndef CKLED2001_TIMEOUT +# define CKLED2001_TIMEOUT 100 +#endif + +#ifndef CKLED2001_PERSISTENCE +# define CKLED2001_PERSISTENCE 0 +#endif + +#ifndef PHASE_CHANNEL +# define PHASE_CHANNEL MSKPHASE_12CHANNEL +#endif + +// Transfer buffer for TWITransmitData() +uint8_t g_twi_transfer_buffer[20]; + +// These buffers match the CKLED2001 PWM registers. +// The control buffers match the PG0 LED On/Off registers. +// Storing them like this is optimal for I2C transfers to the registers. +// We could optimize this and take out the unused registers from these +// buffers and the transfers in CKLED2001_write_pwm_buffer() but it's +// probably not worth the extra complexity. +uint8_t g_pwm_buffer[DRIVER_COUNT][192]; +bool g_pwm_buffer_update_required[DRIVER_COUNT] = {false}; + +uint8_t g_led_control_registers[DRIVER_COUNT][24] = {0}; +bool g_led_control_registers_update_required[DRIVER_COUNT] = {false}; + +bool CKLED2001_write_register(uint8_t addr, uint8_t reg, uint8_t data) { + // If the transaction fails function returns false. + g_twi_transfer_buffer[0] = reg; + g_twi_transfer_buffer[1] = data; + +#if CKLED2001_PERSISTENCE > 0 + for (uint8_t i = 0; i < CKLED2001_PERSISTENCE; i++) { + if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, CKLED2001_TIMEOUT) != 0) { + return false; + } + } +#else + if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, CKLED2001_TIMEOUT) != 0) { + return false; + } +#endif + return true; +} + +bool CKLED2001_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { + // Assumes PG1 is already selected. + // If any of the transactions fails function returns false. + // Transmit PWM registers in 12 transfers of 16 bytes. + // g_twi_transfer_buffer[] is 20 bytes + + // Iterate over the pwm_buffer contents at 16 byte intervals. + for (int i = 0; i < 192; i += 16) { + g_twi_transfer_buffer[0] = i; + // Copy the data from i to i+15. + // Device will auto-increment register for data after the first byte + // Thus this sets registers 0x00-0x0F, 0x10-0x1F, etc. in one transfer. + for (int j = 0; j < 16; j++) { + g_twi_transfer_buffer[1 + j] = pwm_buffer[i + j]; + } + +#if CKLED2001_PERSISTENCE > 0 + for (uint8_t i = 0; i < CKLED2001_PERSISTENCE; i++) { + if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, CKLED2001_TIMEOUT) != 0) { + return false; + } + } +#else + if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, CKLED2001_TIMEOUT) != 0) { + return false; + } +#endif + } + return true; +} + +void CKLED2001_init(uint8_t addr) { + // Select to function page + CKLED2001_write_register(addr, CONFIGURE_CMD_PAGE, FUNCTION_PAGE); + // Setting LED driver to shutdown mode + CKLED2001_write_register(addr, CONFIGURATION_REG, MSKSW_SHUT_DOWN_MODE); + // Setting internal channel pulldown/pullup + CKLED2001_write_register(addr, PDU_REG, MSKSET_CA_CB_CHANNEL); + // Select number of scan phase + CKLED2001_write_register(addr, SCAN_PHASE_REG, PHASE_CHANNEL); + // Setting PWM Delay Phase + CKLED2001_write_register(addr, SLEW_RATE_CONTROL_MODE1_REG, MSKPWM_DELAY_PHASE_ENABLE); + // Setting Driving/Sinking Channel Slew Rate + CKLED2001_write_register(addr, SLEW_RATE_CONTROL_MODE2_REG, MSKDRIVING_SINKING_CHHANNEL_SLEWRATE_ENABLE); + // Setting Iref + CKLED2001_write_register(addr, SOFTWARE_SLEEP_REG, MSKSLEEP_DISABLE); + // Set LED CONTROL PAGE (Page 0) + CKLED2001_write_register(addr, CONFIGURE_CMD_PAGE, LED_CONTROL_PAGE); + for (int i = 0; i < LED_CONTROL_ON_OFF_LENGTH; i++) { + CKLED2001_write_register(addr, i, 0x00); + } + + // Set PWM PAGE (Page 1) + CKLED2001_write_register(addr, CONFIGURE_CMD_PAGE, LED_PWM_PAGE); + for (int i = 0; i < LED_CURRENT_TUNE_LENGTH; i++) { + CKLED2001_write_register(addr, i, 0x00); + } + + // Set CURRENT PAGE (Page 4) + CKLED2001_write_register(addr, CONFIGURE_CMD_PAGE, CURRENT_TUNE_PAGE); + for (int i = 0; i < LED_CURRENT_TUNE_LENGTH; i++) { + CKLED2001_write_register(addr, i, 0xFF); + } + + // Enable LEDs ON/OFF + CKLED2001_write_register(addr, CONFIGURE_CMD_PAGE, LED_CONTROL_PAGE); + for (int i = 0; i < LED_CONTROL_ON_OFF_LENGTH; i++) { + CKLED2001_write_register(addr, i, 0xFF); + } + + // Select to function page + CKLED2001_write_register(addr, CONFIGURE_CMD_PAGE, FUNCTION_PAGE); + // Setting LED driver to normal mode + CKLED2001_write_register(addr, CONFIGURATION_REG, MSKSW_NORMAL_MODE); +} + +void CKLED2001_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { + ckled2001_led led; + if (index >= 0 && index < DRIVER_LED_TOTAL) { + memcpy_P(&led, (&g_ckled2001_leds[index]), sizeof(led)); + + g_pwm_buffer[led.driver][led.r] = red; + g_pwm_buffer[led.driver][led.g] = green; + g_pwm_buffer[led.driver][led.b] = blue; + g_pwm_buffer_update_required[led.driver] = true; + } +} + +void CKLED2001_set_color_all(uint8_t red, uint8_t green, uint8_t blue) { + for (int i = 0; i < DRIVER_LED_TOTAL; i++) { + CKLED2001_set_color(i, red, green, blue); + } +} + +void CKLED2001_set_led_control_register(uint8_t index, bool red, bool green, bool blue) { + ckled2001_led led; + memcpy_P(&led, (&g_ckled2001_leds[index]), sizeof(led)); + + uint8_t control_register_r = led.r / 8; + uint8_t control_register_g = led.g / 8; + uint8_t control_register_b = led.b / 8; + uint8_t bit_r = led.r % 8; + uint8_t bit_g = led.g % 8; + uint8_t bit_b = led.b % 8; + + if (red) { + g_led_control_registers[led.driver][control_register_r] |= (1 << bit_r); + } else { + g_led_control_registers[led.driver][control_register_r] &= ~(1 << bit_r); + } + if (green) { + g_led_control_registers[led.driver][control_register_g] |= (1 << bit_g); + } else { + g_led_control_registers[led.driver][control_register_g] &= ~(1 << bit_g); + } + if (blue) { + g_led_control_registers[led.driver][control_register_b] |= (1 << bit_b); + } else { + g_led_control_registers[led.driver][control_register_b] &= ~(1 << bit_b); + } + + g_led_control_registers_update_required[led.driver] = true; +} + +void CKLED2001_update_pwm_buffers(uint8_t addr, uint8_t index) { + if (g_pwm_buffer_update_required[index]) { + CKLED2001_write_register(addr, CONFIGURE_CMD_PAGE, LED_PWM_PAGE); + + // If any of the transactions fail we risk writing dirty PG0, + // refresh page 0 just in case. + if (!CKLED2001_write_pwm_buffer(addr, g_pwm_buffer[index])) { + g_led_control_registers_update_required[index] = true; + } + } + g_pwm_buffer_update_required[index] = false; +} + +void CKLED2001_update_led_control_registers(uint8_t addr, uint8_t index) { + if (g_led_control_registers_update_required[index]) { + CKLED2001_write_register(addr, CONFIGURE_CMD_PAGE, LED_CONTROL_PAGE); + for (int i = 0; i < 24; i++) { + CKLED2001_write_register(addr, i, g_led_control_registers[index][i]); + } + } + g_led_control_registers_update_required[index] = false; +} + +void CKLED2001_return_normal(uint8_t addr) { + // Select to function page + CKLED2001_write_register(addr, CONFIGURE_CMD_PAGE, FUNCTION_PAGE); + // Setting LED driver to normal mode + CKLED2001_write_register(addr, CONFIGURATION_REG, MSKSW_NORMAL_MODE); +} + +void CKLED2001_shutdown(uint8_t addr) { + // Select to function page + CKLED2001_write_register(addr, CONFIGURE_CMD_PAGE, FUNCTION_PAGE); + // Setting LED driver to shutdown mode + CKLED2001_write_register(addr, CONFIGURATION_REG, MSKSW_SHUT_DOWN_MODE); + // Write SW Sleep Register + CKLED2001_write_register(addr, SOFTWARE_SLEEP_REG, MSKSLEEP_ENABLE); +} diff --git a/drivers/led/ckled2001.h b/drivers/led/ckled2001.h new file mode 100644 index 000000000000..1967961d205f --- /dev/null +++ b/drivers/led/ckled2001.h @@ -0,0 +1,339 @@ +/* Copyright 2021 @ Keychron (https://www.keychron.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include +#include +#include "progmem.h" + +typedef struct ckled2001_led { + uint8_t driver : 2; + uint8_t r; + uint8_t g; + uint8_t b; +} __attribute__((packed)) ckled2001_led; + +extern const ckled2001_led PROGMEM g_ckled2001_leds[DRIVER_LED_TOTAL]; + +void CKLED2001_init(uint8_t addr); +bool CKLED2001_write_register(uint8_t addr, uint8_t reg, uint8_t data); +bool CKLED2001_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer); + +void CKLED2001_set_color(int index, uint8_t red, uint8_t green, uint8_t blue); +void CKLED2001_set_color_all(uint8_t red, uint8_t green, uint8_t blue); + +void CKLED2001_set_led_control_register(uint8_t index, bool red, bool green, bool blue); + +// This should not be called from an interrupt +// (eg. from a timer interrupt). +// Call this while idle (in between matrix scans). +// If the buffer is dirty, it will update the driver with the buffer. +void CKLED2001_update_pwm_buffers(uint8_t addr, uint8_t index); +void CKLED2001_update_led_control_registers(uint8_t addr, uint8_t index); + +void CKLED2001_return_normal(uint8_t addr); +void CKLED2001_shutdown(uint8_t addr); + +// Registers Page Define +#define CONFIGURE_CMD_PAGE 0xFD +#define LED_CONTROL_PAGE 0x00 +#define LED_PWM_PAGE 0x01 +#define FUNCTION_PAGE 0x03 +#define CURRENT_TUNE_PAGE 0x04 + +// Function Register: address 0x00 +#define CONFIGURATION_REG 0x00 +#define MSKSW_SHUT_DOWN_MODE (0x0 << 0) +#define MSKSW_NORMAL_MODE (0x1 << 0) + +#define DRIVER_ID_REG 0x11 +#define CKLED2001_ID 0x8A + +#define PDU_REG 0x13 +#define MSKSET_CA_CB_CHANNEL 0xAA +#define MSKCLR_CA_CB_CHANNEL 0x00 + +#define SCAN_PHASE_REG 0x14 +#define MSKPHASE_12CHANNEL 0x00 +#define MSKPHASE_11CHANNEL 0x01 +#define MSKPHASE_10CHANNEL 0x02 +#define MSKPHASE_9CHANNEL 0x03 +#define MSKPHASE_8CHANNEL 0x04 +#define MSKPHASE_7CHANNEL 0x05 +#define MSKPHASE_6CHANNEL 0x06 +#define MSKPHASE_5CHANNEL 0x07 +#define MSKPHASE_4CHANNEL 0x08 +#define MSKPHASE_3CHANNEL 0x09 +#define MSKPHASE_2CHANNEL 0x0A +#define MSKPHASE_1CHANNEL 0x0B + +#define SLEW_RATE_CONTROL_MODE1_REG 0x15 +#define MSKPWM_DELAY_PHASE_ENABLE 0x04 +#define MSKPWM_DELAY_PHASE_DISABLE 0x00 + +#define SLEW_RATE_CONTROL_MODE2_REG 0x16 +#define MSKDRIVING_SINKING_CHHANNEL_SLEWRATE_ENABLE 0xC0 +#define MSKDRIVING_SINKING_CHHANNEL_SLEWRATE_DISABLE 0x00 + +#define OPEN_SHORT_ENABLE_REG 0x17 +#define MSKOPEN_DETECTION_ENABLE (0x01 << 7) +#define MSKOPEN_DETECTION_DISABLE (0x00) + +#define MSKSHORT_DETECTION_ENABLE (0x01 << 6) +#define MSKSHORT_DETECTION_DISABLE (0x00) + +#define OPEN_SHORT_DUTY_REG 0x18 +#define OPEN_SHORT_FLAG_REG 0x19 + +#define MSKOPEN_DETECTION_INTERRUPT_ENABLE (0x01 << 7) +#define MSKOPEN_DETECTION_INTERRUPT_DISABLE (0x00) + +#define MSKSHORT_DETECTION_INTERRUPT_ENABLE (0x01 << 6) +#define MSKSHORT_DETECTION_INTERRUPT_DISABLE (0x00) + +#define SOFTWARE_SLEEP_REG 0x1A +#define MSKSLEEP_ENABLE 0x02 +#define MSKSLEEP_DISABLE 0x00 + +// LED Control Registers +#define LED_CONTROL_ON_OFF_FIRST_ADDR 0x0 +#define LED_CONTROL_ON_OFF_LAST_ADDR 0x17 +#define LED_CONTROL_ON_OFF_LENGTH ((LED_CONTROL_ON_OFF_LAST_ADDR - LED_CONTROL_ON_OFF_FIRST_ADDR) + 1) + +#define LED_CONTROL_OPEN_FIRST_ADDR 0x18 +#define LED_CONTROL_OPEN_LAST_ADDR 0x2F +#define LED_CONTROL_OPEN_LENGTH ((LED_CONTROL_OPEN_LAST_ADDR - LED_CONTROL_OPEN_FIRST_ADDR) + 1) + +#define LED_CONTROL_SHORT_FIRST_ADDR 0x30 +#define LED_CONTROL_SHORT_LAST_ADDR 0x47 +#define LED_CONTROL_SHORT_LENGTH ((LED_CONTROL_SHORT_LAST_ADDR - LED_CONTROL_SHORT_FIRST_ADDR) + 1) + +#define LED_CONTROL_PAGE_LENGTH 0x48 + +// LED Control Registers +#define LED_PWM_FIRST_ADDR 0x00 +#define LED_PWM_LAST_ADDR 0xBF +#define LED_PWM_LENGTH 0xC0 + +// Current Tune Registers +#define LED_CURRENT_TUNE_FIRST_ADDR 0x00 +#define LED_CURRENT_TUNE_LAST_ADDR 0x0B +#define LED_CURRENT_TUNE_LENGTH 0x0C + +#define A_1 0x00 +#define A_2 0x01 +#define A_3 0x02 +#define A_4 0x03 +#define A_5 0x04 +#define A_6 0x05 +#define A_7 0x06 +#define A_8 0x07 +#define A_9 0x08 +#define A_10 0x09 +#define A_11 0x0A +#define A_12 0x0B +#define A_13 0x0C +#define A_14 0x0D +#define A_15 0x0E +#define A_16 0x0F + +#define B_1 0x10 +#define B_2 0x11 +#define B_3 0x12 +#define B_4 0x13 +#define B_5 0x14 +#define B_6 0x15 +#define B_7 0x16 +#define B_8 0x17 +#define B_9 0x18 +#define B_10 0x19 +#define B_11 0x1A +#define B_12 0x1B +#define B_13 0x1C +#define B_14 0x1D +#define B_15 0x1E +#define B_16 0x1F + +#define C_1 0x20 +#define C_2 0x21 +#define C_3 0x22 +#define C_4 0x23 +#define C_5 0x24 +#define C_6 0x25 +#define C_7 0x26 +#define C_8 0x27 +#define C_9 0x28 +#define C_10 0x29 +#define C_11 0x2A +#define C_12 0x2B +#define C_13 0x2C +#define C_14 0x2D +#define C_15 0x2E +#define C_16 0x2F + +#define D_1 0x30 +#define D_2 0x31 +#define D_3 0x32 +#define D_4 0x33 +#define D_5 0x34 +#define D_6 0x35 +#define D_7 0x36 +#define D_8 0x37 +#define D_9 0x38 +#define D_10 0x39 +#define D_11 0x3A +#define D_12 0x3B +#define D_13 0x3C +#define D_14 0x3D +#define D_15 0x3E +#define D_16 0x3F + +#define E_1 0x40 +#define E_2 0x41 +#define E_3 0x42 +#define E_4 0x43 +#define E_5 0x44 +#define E_6 0x45 +#define E_7 0x46 +#define E_8 0x47 +#define E_9 0x48 +#define E_10 0x49 +#define E_11 0x4A +#define E_12 0x4B +#define E_13 0x4C +#define E_14 0x4D +#define E_15 0x4E +#define E_16 0x4F + +#define F_1 0x50 +#define F_2 0x51 +#define F_3 0x52 +#define F_4 0x53 +#define F_5 0x54 +#define F_6 0x55 +#define F_7 0x56 +#define F_8 0x57 +#define F_9 0x58 +#define F_10 0x59 +#define F_11 0x5A +#define F_12 0x5B +#define F_13 0x5C +#define F_14 0x5D +#define F_15 0x5E +#define F_16 0x5F + +#define G_1 0x60 +#define G_2 0x61 +#define G_3 0x62 +#define G_4 0x63 +#define G_5 0x64 +#define G_6 0x65 +#define G_7 0x66 +#define G_8 0x67 +#define G_9 0x68 +#define G_10 0x69 +#define G_11 0x6A +#define G_12 0x6B +#define G_13 0x6C +#define G_14 0x6D +#define G_15 0x6E +#define G_16 0x6F + +#define H_1 0x70 +#define H_2 0x71 +#define H_3 0x72 +#define H_4 0x73 +#define H_5 0x74 +#define H_6 0x75 +#define H_7 0x76 +#define H_8 0x77 +#define H_9 0x78 +#define H_10 0x79 +#define H_11 0x7A +#define H_12 0x7B +#define H_13 0x7C +#define H_14 0x7D +#define H_15 0x7E +#define H_16 0x7F + +#define I_1 0x80 +#define I_2 0x81 +#define I_3 0x82 +#define I_4 0x83 +#define I_5 0x84 +#define I_6 0x85 +#define I_7 0x86 +#define I_8 0x87 +#define I_9 0x88 +#define I_10 0x89 +#define I_11 0x8A +#define I_12 0x8B +#define I_13 0x8C +#define I_14 0x8D +#define I_15 0x8E +#define I_16 0x8F + +#define J_1 0x90 +#define J_2 0x91 +#define J_3 0x92 +#define J_4 0x93 +#define J_5 0x94 +#define J_6 0x95 +#define J_7 0x96 +#define J_8 0x97 +#define J_9 0x98 +#define J_10 0x99 +#define J_11 0x9A +#define J_12 0x9B +#define J_13 0x9C +#define J_14 0x9D +#define J_15 0x9E +#define J_16 0x9F + +#define K_1 0xA0 +#define K_2 0xA1 +#define K_3 0xA2 +#define K_4 0xA3 +#define K_5 0xA4 +#define K_6 0xA5 +#define K_7 0xA6 +#define K_8 0xA7 +#define K_9 0xA8 +#define K_10 0xA9 +#define K_11 0xAA +#define K_12 0xAB +#define K_13 0xAC +#define K_14 0xAD +#define K_15 0xAE +#define K_16 0xAF + +#define L_1 0xB0 +#define L_2 0xB1 +#define L_3 0xB2 +#define L_4 0xB3 +#define L_5 0xB4 +#define L_6 0xB5 +#define L_7 0xB6 +#define L_8 0xB7 +#define L_9 0xB8 +#define L_10 0xB9 +#define L_11 0xBA +#define L_12 0xBB +#define L_13 0xBC +#define L_14 0xBD +#define L_15 0xBE +#define L_16 0xBF \ No newline at end of file diff --git a/drivers/issi/is31fl3218.c b/drivers/led/issi/is31fl3218.c similarity index 100% rename from drivers/issi/is31fl3218.c rename to drivers/led/issi/is31fl3218.c diff --git a/drivers/issi/is31fl3218.h b/drivers/led/issi/is31fl3218.h similarity index 100% rename from drivers/issi/is31fl3218.h rename to drivers/led/issi/is31fl3218.h diff --git a/drivers/issi/is31fl3731-simple.c b/drivers/led/issi/is31fl3731-simple.c similarity index 94% rename from drivers/issi/is31fl3731-simple.c rename to drivers/led/issi/is31fl3731-simple.c index d295772f5e90..f51e2e38aff8 100644 --- a/drivers/issi/is31fl3731-simple.c +++ b/drivers/led/issi/is31fl3731-simple.c @@ -1,6 +1,7 @@ /* Copyright 2017 Jason Williams * Copyright 2018 Jack Humbert * Copyright 2019 Clueboard + * Copyright 2021 Doni Crosby * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -40,6 +41,9 @@ #define ISSI_REG_PICTUREFRAME 0x01 +// Not defined in the datasheet -- See AN for IC +#define ISSI_REG_GHOST_IMAGE_PREVENTION 0xC2 // Set bit 4 to enable de-ghosting + #define ISSI_REG_SHUTDOWN 0x0A #define ISSI_REG_AUDIOSYNC 0x06 @@ -144,6 +148,9 @@ void IS31FL3731_init(uint8_t addr) { // enable software shutdown IS31FL3731_write_register(addr, ISSI_REG_SHUTDOWN, 0x00); +#ifdef ISSI_3731_DEGHOST // set to enable de-ghosting of the array + IS31FL3731_write_register(addr, ISSI_REG_GHOST_IMAGE_PREVENTION, 0x10); +#endif // this delay was copied from other drivers, might not be needed wait_ms(10); @@ -186,8 +193,9 @@ void IS31FL3731_init(uint8_t addr) { } void IS31FL3731_set_value(int index, uint8_t value) { + is31_led led; if (index >= 0 && index < DRIVER_LED_TOTAL) { - is31_led led = g_is31_leds[index]; + memcpy_P(&led, (&g_is31_leds[index]), sizeof(led)); // Subtract 0x24 to get the second index of g_pwm_buffer g_pwm_buffer[led.driver][led.v - 0x24] = value; @@ -202,7 +210,8 @@ void IS31FL3731_set_value_all(uint8_t value) { } void IS31FL3731_set_led_control_register(uint8_t index, bool value) { - is31_led led = g_is31_leds[index]; + is31_led led; + memcpy_P(&led, (&g_is31_leds[index]), sizeof(led)); uint8_t control_register = (led.v - 0x24) / 8; uint8_t bit_value = (led.v - 0x24) % 8; diff --git a/drivers/issi/is31fl3731-simple.h b/drivers/led/issi/is31fl3731-simple.h similarity index 98% rename from drivers/issi/is31fl3731-simple.h rename to drivers/led/issi/is31fl3731-simple.h index 9665d6ed3538..ded94b0470dd 100644 --- a/drivers/issi/is31fl3731-simple.h +++ b/drivers/led/issi/is31fl3731-simple.h @@ -20,13 +20,14 @@ #include #include +#include "progmem.h" typedef struct is31_led { uint8_t driver : 2; uint8_t v; } __attribute__((packed)) is31_led; -extern const is31_led g_is31_leds[DRIVER_LED_TOTAL]; +extern const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL]; void IS31FL3731_init(uint8_t addr); void IS31FL3731_write_register(uint8_t addr, uint8_t reg, uint8_t data); diff --git a/drivers/issi/is31fl3731.c b/drivers/led/issi/is31fl3731.c similarity index 94% rename from drivers/issi/is31fl3731.c rename to drivers/led/issi/is31fl3731.c index 110bdc1be4da..e6190a6b9082 100644 --- a/drivers/issi/is31fl3731.c +++ b/drivers/led/issi/is31fl3731.c @@ -1,5 +1,6 @@ /* Copyright 2017 Jason Williams * Copyright 2018 Jack Humbert + * Copyright 2021 Doni Crosby * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -39,6 +40,9 @@ #define ISSI_REG_PICTUREFRAME 0x01 +// Not defined in the datasheet -- See AN for IC +#define ISSI_REG_GHOST_IMAGE_PREVENTION 0xC2 // Set bit 4 to enable de-ghosting + #define ISSI_REG_SHUTDOWN 0x0A #define ISSI_REG_AUDIOSYNC 0x06 @@ -132,6 +136,9 @@ void IS31FL3731_init(uint8_t addr) { // enable software shutdown IS31FL3731_write_register(addr, ISSI_REG_SHUTDOWN, 0x00); +#ifdef ISSI_3731_DEGHOST // set to enable de-ghosting of the array + IS31FL3731_write_register(addr, ISSI_REG_GHOST_IMAGE_PREVENTION, 0x10); +#endif // this delay was copied from other drivers, might not be needed wait_ms(10); @@ -174,8 +181,9 @@ void IS31FL3731_init(uint8_t addr) { } void IS31FL3731_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { + is31_led led; if (index >= 0 && index < DRIVER_LED_TOTAL) { - is31_led led = g_is31_leds[index]; + memcpy_P(&led, (&g_is31_leds[index]), sizeof(led)); // Subtract 0x24 to get the second index of g_pwm_buffer g_pwm_buffer[led.driver][led.r - 0x24] = red; @@ -192,7 +200,8 @@ void IS31FL3731_set_color_all(uint8_t red, uint8_t green, uint8_t blue) { } void IS31FL3731_set_led_control_register(uint8_t index, bool red, bool green, bool blue) { - is31_led led = g_is31_leds[index]; + is31_led led; + memcpy_P(&led, (&g_is31_leds[index]), sizeof(led)); uint8_t control_register_r = (led.r - 0x24) / 8; uint8_t control_register_g = (led.g - 0x24) / 8; diff --git a/drivers/issi/is31fl3731.h b/drivers/led/issi/is31fl3731.h similarity index 98% rename from drivers/issi/is31fl3731.h rename to drivers/led/issi/is31fl3731.h index 19e8e6251f80..6647119ebaea 100644 --- a/drivers/issi/is31fl3731.h +++ b/drivers/led/issi/is31fl3731.h @@ -19,6 +19,7 @@ #include #include +#include "progmem.h" typedef struct is31_led { uint8_t driver : 2; @@ -27,7 +28,7 @@ typedef struct is31_led { uint8_t b; } __attribute__((packed)) is31_led; -extern const is31_led g_is31_leds[DRIVER_LED_TOTAL]; +extern const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL]; void IS31FL3731_init(uint8_t addr); void IS31FL3731_write_register(uint8_t addr, uint8_t reg, uint8_t data); diff --git a/drivers/issi/is31fl3733.c b/drivers/led/issi/is31fl3733.c similarity index 91% rename from drivers/issi/is31fl3733.c rename to drivers/led/issi/is31fl3733.c index d99e5339c912..696491d0706a 100644 --- a/drivers/issi/is31fl3733.c +++ b/drivers/led/issi/is31fl3733.c @@ -1,6 +1,7 @@ /* Copyright 2017 Jason Williams * Copyright 2018 Jack Humbert * Copyright 2018 Yiancar + * Copyright 2021 Doni Crosby * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -56,6 +57,18 @@ # define ISSI_PERSISTENCE 0 #endif +#ifndef ISSI_PWM_FREQUENCY +# define ISSI_PWM_FREQUENCY 0b000 // PFS - IS31FL3733B only +#endif + +#ifndef ISSI_SWPULLUP +# define ISSI_SWPULLUP PUR_0R +#endif + +#ifndef ISSI_CSPULLUP +# define ISSI_CSPULLUP PUR_0R +#endif + // Transfer buffer for TWITransmitData() uint8_t g_twi_transfer_buffer[20]; @@ -154,18 +167,23 @@ void IS31FL3733_init(uint8_t addr, uint8_t sync) { // Select PG3 IS31FL3733_write_register(addr, ISSI_COMMANDREGISTER, ISSI_PAGE_FUNCTION); + // Set de-ghost pull-up resistors (SWx) + IS31FL3733_write_register(addr, ISSI_REG_SWPULLUP, ISSI_SWPULLUP); + // Set de-ghost pull-down resistors (CSx) + IS31FL3733_write_register(addr, ISSI_REG_CSPULLUP, ISSI_CSPULLUP); // Set global current to maximum. IS31FL3733_write_register(addr, ISSI_REG_GLOBALCURRENT, 0xFF); // Disable software shutdown. - IS31FL3733_write_register(addr, ISSI_REG_CONFIGURATION, (sync << 6) | 0x01); + IS31FL3733_write_register(addr, ISSI_REG_CONFIGURATION, ((sync & 0b11) << 6) | ((ISSI_PWM_FREQUENCY & 0b111) << 3) | 0x01); // Wait 10ms to ensure the device has woken up. wait_ms(10); } void IS31FL3733_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { + is31_led led; if (index >= 0 && index < DRIVER_LED_TOTAL) { - is31_led led = g_is31_leds[index]; + memcpy_P(&led, (&g_is31_leds[index]), sizeof(led)); g_pwm_buffer[led.driver][led.r] = red; g_pwm_buffer[led.driver][led.g] = green; @@ -181,7 +199,8 @@ void IS31FL3733_set_color_all(uint8_t red, uint8_t green, uint8_t blue) { } void IS31FL3733_set_led_control_register(uint8_t index, bool red, bool green, bool blue) { - is31_led led = g_is31_leds[index]; + is31_led led; + memcpy_P(&led, (&g_is31_leds[index]), sizeof(led)); uint8_t control_register_r = led.r / 8; uint8_t control_register_g = led.g / 8; diff --git a/drivers/issi/is31fl3733.h b/drivers/led/issi/is31fl3733.h similarity index 91% rename from drivers/issi/is31fl3733.h rename to drivers/led/issi/is31fl3733.h index 603d505a136d..c5d62fed8517 100644 --- a/drivers/issi/is31fl3733.h +++ b/drivers/led/issi/is31fl3733.h @@ -1,6 +1,7 @@ /* Copyright 2017 Jason Williams * Copyright 2018 Jack Humbert * Copyright 2018 Yiancar + * Copyright 2021 Doni Crosby * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,6 +21,7 @@ #include #include +#include "progmem.h" typedef struct is31_led { uint8_t driver : 2; @@ -28,7 +30,7 @@ typedef struct is31_led { uint8_t b; } __attribute__((packed)) is31_led; -extern const is31_led g_is31_leds[DRIVER_LED_TOTAL]; +extern const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL]; void IS31FL3733_init(uint8_t addr, uint8_t sync); bool IS31FL3733_write_register(uint8_t addr, uint8_t reg, uint8_t data); @@ -46,6 +48,14 @@ void IS31FL3733_set_led_control_register(uint8_t index, bool red, bool green, bo void IS31FL3733_update_pwm_buffers(uint8_t addr, uint8_t index); void IS31FL3733_update_led_control_registers(uint8_t addr, uint8_t index); +#define PUR_0R 0x00 // No PUR resistor +#define PUR_05KR 0x02 // 0.5k Ohm resistor in t_NOL +#define PUR_3KR 0x03 // 3.0k Ohm resistor on all the time +#define PUR_4KR 0x04 // 4.0k Ohm resistor on all the time +#define PUR_8KR 0x05 // 8.0k Ohm resistor on all the time +#define PUR_16KR 0x06 // 16k Ohm resistor on all the time +#define PUR_32KR 0x07 // 32k Ohm resistor in t_NOL + #define A_1 0x00 #define A_2 0x01 #define A_3 0x02 diff --git a/drivers/issi/is31fl3736.c b/drivers/led/issi/is31fl3736.c similarity index 94% rename from drivers/issi/is31fl3736.c rename to drivers/led/issi/is31fl3736.c index 7dece1b1eb51..c9a871118d2b 100644 --- a/drivers/issi/is31fl3736.c +++ b/drivers/led/issi/is31fl3736.c @@ -1,4 +1,5 @@ /* Copyright 2018 Jason Williams (Wilba) + * Copyright 2021 Doni Crosby * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -54,6 +55,14 @@ # define ISSI_PERSISTENCE 0 #endif +#ifndef ISSI_SWPULLUP +# define ISSI_SWPULLUP PUR_0R +#endif + +#ifndef ISSI_CSPULLUP +# define ISSI_CSPULLUP PUR_0R +#endif + // Transfer buffer for TWITransmitData() uint8_t g_twi_transfer_buffer[20]; @@ -140,6 +149,10 @@ void IS31FL3736_init(uint8_t addr) { // Select PG3 IS31FL3736_write_register(addr, ISSI_COMMANDREGISTER, ISSI_PAGE_FUNCTION); + // Set de-ghost pull-up resistors (SWx) + IS31FL3736_write_register(addr, ISSI_REG_SWPULLUP, ISSI_SWPULLUP); + // Set de-ghost pull-down resistors (CSx) + IS31FL3736_write_register(addr, ISSI_REG_CSPULLUP, ISSI_CSPULLUP); // Set global current to maximum. IS31FL3736_write_register(addr, ISSI_REG_GLOBALCURRENT, 0xFF); // Disable software shutdown. @@ -150,8 +163,9 @@ void IS31FL3736_init(uint8_t addr) { } void IS31FL3736_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { + is31_led led; if (index >= 0 && index < DRIVER_LED_TOTAL) { - is31_led led = g_is31_leds[index]; + memcpy_P(&led, (&g_is31_leds[index]), sizeof(led)); g_pwm_buffer[led.driver][led.r] = red; g_pwm_buffer[led.driver][led.g] = green; @@ -167,7 +181,8 @@ void IS31FL3736_set_color_all(uint8_t red, uint8_t green, uint8_t blue) { } void IS31FL3736_set_led_control_register(uint8_t index, bool red, bool green, bool blue) { - is31_led led = g_is31_leds[index]; + is31_led led; + memcpy_P(&led, (&g_is31_leds[index]), sizeof(led)); // IS31FL3733 // The PWM register for a matrix position (0x00 to 0xBF) can be diff --git a/drivers/issi/is31fl3736.h b/drivers/led/issi/is31fl3736.h similarity index 88% rename from drivers/issi/is31fl3736.h rename to drivers/led/issi/is31fl3736.h index e48e31c27917..9fbe1cc577cb 100644 --- a/drivers/issi/is31fl3736.h +++ b/drivers/led/issi/is31fl3736.h @@ -1,4 +1,5 @@ /* Copyright 2018 Jason Williams (Wilba) + * Copyright 2021 Doni Crosby * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,6 +19,7 @@ #include #include +#include "progmem.h" // Simple interface option. // If these aren't defined, just define them to make it compile @@ -37,7 +39,7 @@ typedef struct is31_led { uint8_t b; } __attribute__((packed)) is31_led; -extern const is31_led g_is31_leds[DRIVER_LED_TOTAL]; +extern const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL]; void IS31FL3736_init(uint8_t addr); void IS31FL3736_write_register(uint8_t addr, uint8_t reg, uint8_t data); @@ -59,6 +61,15 @@ void IS31FL3736_mono_set_led_control_register(uint8_t index, bool enabled); void IS31FL3736_update_pwm_buffers(uint8_t addr1, uint8_t addr2); void IS31FL3736_update_led_control_registers(uint8_t addr1, uint8_t addr2); +#define PUR_0R 0x00 // No PUR resistor +#define PUR_05KR 0x01 // 0.5k Ohm resistor +#define PUR_1KR 0x02 // 1.0k Ohm resistor +#define PUR_2KR 0x03 // 2.0k Ohm resistor +#define PUR_4KR 0x04 // 4.0k Ohm resistor +#define PUR_8KR 0x05 // 8.0k Ohm resistor +#define PUR_16KR 0x06 // 16k Ohm resistor +#define PUR_32KR 0x07 // 32k Ohm resistor + #define A_1 0x00 #define A_2 0x02 #define A_3 0x04 diff --git a/drivers/issi/is31fl3737.c b/drivers/led/issi/is31fl3737.c similarity index 78% rename from drivers/issi/is31fl3737.c rename to drivers/led/issi/is31fl3737.c index 8647c93cc114..0722e18869f6 100644 --- a/drivers/issi/is31fl3737.c +++ b/drivers/led/issi/is31fl3737.c @@ -1,6 +1,7 @@ /* Copyright 2017 Jason Williams * Copyright 2018 Jack Humbert * Copyright 2018 Yiancar + * Copyright 2021 Doni Crosby * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -56,6 +57,14 @@ # define ISSI_PERSISTENCE 0 #endif +#ifndef ISSI_SWPULLUP +# define ISSI_SWPULLUP PUR_0R +#endif + +#ifndef ISSI_CSPULLUP +# define ISSI_CSPULLUP PUR_0R +#endif + // Transfer buffer for TWITransmitData() uint8_t g_twi_transfer_buffer[20]; @@ -65,11 +74,12 @@ uint8_t g_twi_transfer_buffer[20]; // We could optimize this and take out the unused registers from these // buffers and the transfers in IS31FL3737_write_pwm_buffer() but it's // probably not worth the extra complexity. + uint8_t g_pwm_buffer[DRIVER_COUNT][192]; -bool g_pwm_buffer_update_required = false; +bool g_pwm_buffer_update_required[DRIVER_COUNT] = {false}; -uint8_t g_led_control_registers[DRIVER_COUNT][24] = {{0}}; -bool g_led_control_registers_update_required = false; +uint8_t g_led_control_registers[DRIVER_COUNT][24] = {0}; +bool g_led_control_registers_update_required[DRIVER_COUNT] = {false}; void IS31FL3737_write_register(uint8_t addr, uint8_t reg, uint8_t data) { g_twi_transfer_buffer[0] = reg; @@ -142,6 +152,10 @@ void IS31FL3737_init(uint8_t addr) { // Select PG3 IS31FL3737_write_register(addr, ISSI_COMMANDREGISTER, ISSI_PAGE_FUNCTION); + // Set de-ghost pull-up resistors (SWx) + IS31FL3737_write_register(addr, ISSI_REG_SWPULLUP, ISSI_SWPULLUP); + // Set de-ghost pull-down resistors (CSx) + IS31FL3737_write_register(addr, ISSI_REG_CSPULLUP, ISSI_CSPULLUP); // Set global current to maximum. IS31FL3737_write_register(addr, ISSI_REG_GLOBALCURRENT, 0xFF); // Disable software shutdown. @@ -152,13 +166,14 @@ void IS31FL3737_init(uint8_t addr) { } void IS31FL3737_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { + is31_led led; if (index >= 0 && index < DRIVER_LED_TOTAL) { - is31_led led = g_is31_leds[index]; + memcpy_P(&led, (&g_is31_leds[index]), sizeof(led)); - g_pwm_buffer[led.driver][led.r] = red; - g_pwm_buffer[led.driver][led.g] = green; - g_pwm_buffer[led.driver][led.b] = blue; - g_pwm_buffer_update_required = true; + g_pwm_buffer[led.driver][led.r] = red; + g_pwm_buffer[led.driver][led.g] = green; + g_pwm_buffer[led.driver][led.b] = blue; + g_pwm_buffer_update_required[led.driver] = true; } } @@ -169,7 +184,8 @@ void IS31FL3737_set_color_all(uint8_t red, uint8_t green, uint8_t blue) { } void IS31FL3737_set_led_control_register(uint8_t index, bool red, bool green, bool blue) { - is31_led led = g_is31_leds[index]; + is31_led led; + memcpy_P(&led, (&g_is31_leds[index]), sizeof(led)); uint8_t control_register_r = led.r / 8; uint8_t control_register_g = led.g / 8; @@ -194,30 +210,28 @@ void IS31FL3737_set_led_control_register(uint8_t index, bool red, bool green, bo g_led_control_registers[led.driver][control_register_b] &= ~(1 << bit_b); } - g_led_control_registers_update_required = true; + g_led_control_registers_update_required[led.driver] = true; } -void IS31FL3737_update_pwm_buffers(uint8_t addr1, uint8_t addr2) { - if (g_pwm_buffer_update_required) { +void IS31FL3737_update_pwm_buffers(uint8_t addr, uint8_t index) { + if (g_pwm_buffer_update_required[index]) { // Firstly we need to unlock the command register and select PG1 - IS31FL3737_write_register(addr1, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5); - IS31FL3737_write_register(addr1, ISSI_COMMANDREGISTER, ISSI_PAGE_PWM); + IS31FL3737_write_register(addr, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5); + IS31FL3737_write_register(addr, ISSI_COMMANDREGISTER, ISSI_PAGE_PWM); - IS31FL3737_write_pwm_buffer(addr1, g_pwm_buffer[0]); - // IS31FL3737_write_pwm_buffer(addr2, g_pwm_buffer[1]); + IS31FL3737_write_pwm_buffer(addr, g_pwm_buffer[index]); } - g_pwm_buffer_update_required = false; + g_pwm_buffer_update_required[index] = false; } -void IS31FL3737_update_led_control_registers(uint8_t addr1, uint8_t addr2) { - if (g_led_control_registers_update_required) { +void IS31FL3737_update_led_control_registers(uint8_t addr, uint8_t index) { + if (g_led_control_registers_update_required[index]) { // Firstly we need to unlock the command register and select PG0 - IS31FL3737_write_register(addr1, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5); - IS31FL3737_write_register(addr1, ISSI_COMMANDREGISTER, ISSI_PAGE_LEDCONTROL); + IS31FL3737_write_register(addr, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5); + IS31FL3737_write_register(addr, ISSI_COMMANDREGISTER, ISSI_PAGE_LEDCONTROL); for (int i = 0; i < 24; i++) { - IS31FL3737_write_register(addr1, i, g_led_control_registers[0][i]); - // IS31FL3737_write_register(addr2, i, g_led_control_registers[1][i]); + IS31FL3737_write_register(addr, i, g_led_control_registers[index][i]); } - g_led_control_registers_update_required = false; } + g_led_control_registers_update_required[index] = false; } diff --git a/drivers/issi/is31fl3737.h b/drivers/led/issi/is31fl3737.h similarity index 88% rename from drivers/issi/is31fl3737.h rename to drivers/led/issi/is31fl3737.h index a1d228177879..31b1a2226772 100644 --- a/drivers/issi/is31fl3737.h +++ b/drivers/led/issi/is31fl3737.h @@ -1,6 +1,7 @@ /* Copyright 2017 Jason Williams * Copyright 2018 Jack Humbert * Copyright 2018 Yiancar + * Copyright 2021 Doni Crosby * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,6 +21,7 @@ #include #include +#include "progmem.h" typedef struct is31_led { uint8_t driver : 2; @@ -28,7 +30,7 @@ typedef struct is31_led { uint8_t b; } __attribute__((packed)) is31_led; -extern const is31_led g_is31_leds[DRIVER_LED_TOTAL]; +extern const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL]; void IS31FL3737_init(uint8_t addr); void IS31FL3737_write_register(uint8_t addr, uint8_t reg, uint8_t data); @@ -46,6 +48,15 @@ void IS31FL3737_set_led_control_register(uint8_t index, bool red, bool green, bo void IS31FL3737_update_pwm_buffers(uint8_t addr1, uint8_t addr2); void IS31FL3737_update_led_control_registers(uint8_t addr1, uint8_t addr2); +#define PUR_0R 0x00 // No PUR resistor +#define PUR_05KR 0x01 // 0.5k Ohm resistor in t_NOL +#define PUR_1KR 0x02 // 1.0k Ohm resistor in t_NOL +#define PUR_2KR 0x03 // 2.0k Ohm resistor in t_NOL +#define PUR_4KR 0x04 // 4.0k Ohm resistor in t_NOL +#define PUR_8KR 0x05 // 8.0k Ohm resistor in t_NOL +#define PUR_16KR 0x06 // 16k Ohm resistor in t_NOL +#define PUR_32KR 0x07 // 32k Ohm resistor in t_NOL + #define A_1 0x00 #define A_2 0x01 #define A_3 0x02 diff --git a/drivers/issi/is31fl3741.c b/drivers/led/issi/is31fl3741.c similarity index 89% rename from drivers/issi/is31fl3741.c rename to drivers/led/issi/is31fl3741.c index 1b533c9b6a69..8d347a5e607a 100644 --- a/drivers/issi/is31fl3741.c +++ b/drivers/led/issi/is31fl3741.c @@ -61,6 +61,14 @@ # define ISSI_PERSISTENCE 0 #endif +#ifndef ISSI_SWPULLUP +# define ISSI_SWPULLUP PUR_32KR +#endif + +#ifndef ISSI_CSPULLUP +# define ISSI_CSPULLUP PUR_32KR +#endif + #define ISSI_MAX_LEDS 351 // Transfer buffer for TWITransmitData() @@ -73,7 +81,7 @@ uint8_t g_twi_transfer_buffer[20] = {0xFF}; // buffers and the transfers in IS31FL3741_write_pwm_buffer() but it's // probably not worth the extra complexity. uint8_t g_pwm_buffer[DRIVER_COUNT][ISSI_MAX_LEDS]; -bool g_pwm_buffer_update_required = false; +bool g_pwm_buffer_update_required[DRIVER_COUNT] = {false}; bool g_scaling_registers_update_required[DRIVER_COUNT] = {false}; uint8_t g_scaling_registers[DRIVER_COUNT][ISSI_MAX_LEDS]; @@ -157,7 +165,7 @@ void IS31FL3741_init(uint8_t addr) { // Set Golbal Current Control Register IS31FL3741_write_register(addr, ISSI_REG_GLOBALCURRENT, 0xFF); // Set Pull up & Down for SWx CSy - IS31FL3741_write_register(addr, ISSI_REG_PULLDOWNUP, 0x77); + IS31FL3741_write_register(addr, ISSI_REG_PULLDOWNUP, ((ISSI_CSPULLUP << 4) | ISSI_SWPULLUP)); // IS31FL3741_update_led_scaling_registers(addr, 0xFF, 0xFF, 0xFF); @@ -166,13 +174,14 @@ void IS31FL3741_init(uint8_t addr) { } void IS31FL3741_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { + is31_led led; if (index >= 0 && index < DRIVER_LED_TOTAL) { - is31_led led = g_is31_leds[index]; + memcpy_P(&led, (&g_is31_leds[index]), sizeof(led)); - g_pwm_buffer[led.driver][led.r] = red; - g_pwm_buffer[led.driver][led.g] = green; - g_pwm_buffer[led.driver][led.b] = blue; - g_pwm_buffer_update_required = true; + g_pwm_buffer[led.driver][led.r] = red; + g_pwm_buffer[led.driver][led.g] = green; + g_pwm_buffer[led.driver][led.b] = blue; + g_pwm_buffer_update_required[led.driver] = true; } } @@ -183,7 +192,8 @@ void IS31FL3741_set_color_all(uint8_t red, uint8_t green, uint8_t blue) { } void IS31FL3741_set_led_control_register(uint8_t index, bool red, bool green, bool blue) { - is31_led led = g_is31_leds[index]; + is31_led led; + memcpy_P(&led, (&g_is31_leds[index]), sizeof(led)); if (red) { g_scaling_registers[led.driver][led.r] = 0xFF; @@ -206,12 +216,12 @@ void IS31FL3741_set_led_control_register(uint8_t index, bool red, bool green, bo g_scaling_registers_update_required[led.driver] = true; } -void IS31FL3741_update_pwm_buffers(uint8_t addr1, uint8_t addr2) { - if (g_pwm_buffer_update_required) { - IS31FL3741_write_pwm_buffer(addr1, g_pwm_buffer[0]); +void IS31FL3741_update_pwm_buffers(uint8_t addr, uint8_t index) { + if (g_pwm_buffer_update_required[index]) { + IS31FL3741_write_pwm_buffer(addr, g_pwm_buffer[index]); } - g_pwm_buffer_update_required = false; + g_pwm_buffer_update_required[index] = false; } void IS31FL3741_set_pwm_buffer(const is31_led *pled, uint8_t red, uint8_t green, uint8_t blue) { @@ -219,7 +229,7 @@ void IS31FL3741_set_pwm_buffer(const is31_led *pled, uint8_t red, uint8_t green, g_pwm_buffer[pled->driver][pled->g] = green; g_pwm_buffer[pled->driver][pled->b] = blue; - g_pwm_buffer_update_required = true; + g_pwm_buffer_update_required[pled->driver] = true; } void IS31FL3741_update_led_control_registers(uint8_t addr, uint8_t index) { diff --git a/drivers/issi/is31fl3741.h b/drivers/led/issi/is31fl3741.h similarity index 94% rename from drivers/issi/is31fl3741.h rename to drivers/led/issi/is31fl3741.h index 2df0c5b1a71e..8154f8be702f 100644 --- a/drivers/issi/is31fl3741.h +++ b/drivers/led/issi/is31fl3741.h @@ -21,6 +21,7 @@ #include #include +#include "progmem.h" typedef struct is31_led { uint32_t driver : 2; @@ -29,7 +30,7 @@ typedef struct is31_led { uint32_t b : 10; } __attribute__((packed)) is31_led; -extern const is31_led g_is31_leds[DRIVER_LED_TOTAL]; +extern const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL]; void IS31FL3741_init(uint8_t addr); void IS31FL3741_write_register(uint8_t addr, uint8_t reg, uint8_t data); @@ -44,12 +45,21 @@ void IS31FL3741_set_led_control_register(uint8_t index, bool red, bool green, bo // (eg. from a timer interrupt). // Call this while idle (in between matrix scans). // If the buffer is dirty, it will update the driver with the buffer. -void IS31FL3741_update_pwm_buffers(uint8_t addr1, uint8_t addr2); -void IS31FL3741_update_led_control_registers(uint8_t addr1, uint8_t addr2); +void IS31FL3741_update_pwm_buffers(uint8_t addr, uint8_t index); +void IS31FL3741_update_led_control_registers(uint8_t addr, uint8_t index); void IS31FL3741_set_scaling_registers(const is31_led *pled, uint8_t red, uint8_t green, uint8_t blue); void IS31FL3741_set_pwm_buffer(const is31_led *pled, uint8_t red, uint8_t green, uint8_t blue); +#define PUR_0R 0x00 // No PUR resistor +#define PUR_05KR 0x01 // 0.5k Ohm resistor +#define PUR_1KR 0x02 // 1.0k Ohm resistor +#define PUR_2KR 0x03 // 2.0k Ohm resistor +#define PUR_4KR 0x04 // 4.0k Ohm resistor +#define PUR_8KR 0x05 // 8.0k Ohm resistor +#define PUR_16KR 0x06 // 16k Ohm resistor +#define PUR_32KR 0x07 // 32k Ohm resistor + #define CS1_SW1 0x00 #define CS2_SW1 0x01 #define CS3_SW1 0x02 diff --git a/drivers/oled/oled_driver.c b/drivers/oled/oled_driver.c deleted file mode 100644 index 8e5ed5f070ef..000000000000 --- a/drivers/oled/oled_driver.c +++ /dev/null @@ -1,751 +0,0 @@ -/* -Copyright 2019 Ryan Caltabiano - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ -#include "i2c_master.h" -#include "oled_driver.h" -#include OLED_FONT_H -#include "timer.h" -#include "print.h" - -#include - -#include "progmem.h" - -#include "keyboard.h" - -// Used commands from spec sheet: https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf -// for SH1106: https://www.velleman.eu/downloads/29/infosheets/sh1106_datasheet.pdf - -// Fundamental Commands -#define CONTRAST 0x81 -#define DISPLAY_ALL_ON 0xA5 -#define DISPLAY_ALL_ON_RESUME 0xA4 -#define NORMAL_DISPLAY 0xA6 -#define DISPLAY_ON 0xAF -#define DISPLAY_OFF 0xAE -#define NOP 0xE3 - -// Scrolling Commands -#define ACTIVATE_SCROLL 0x2F -#define DEACTIVATE_SCROLL 0x2E -#define SCROLL_RIGHT 0x26 -#define SCROLL_LEFT 0x27 -#define SCROLL_RIGHT_UP 0x29 -#define SCROLL_LEFT_UP 0x2A - -// Addressing Setting Commands -#define MEMORY_MODE 0x20 -#define COLUMN_ADDR 0x21 -#define PAGE_ADDR 0x22 -#define PAM_SETCOLUMN_LSB 0x00 -#define PAM_SETCOLUMN_MSB 0x10 -#define PAM_PAGE_ADDR 0xB0 // 0xb0 -- 0xb7 - -// Hardware Configuration Commands -#define DISPLAY_START_LINE 0x40 -#define SEGMENT_REMAP 0xA0 -#define SEGMENT_REMAP_INV 0xA1 -#define MULTIPLEX_RATIO 0xA8 -#define COM_SCAN_INC 0xC0 -#define COM_SCAN_DEC 0xC8 -#define DISPLAY_OFFSET 0xD3 -#define COM_PINS 0xDA -#define COM_PINS_SEQ 0x02 -#define COM_PINS_ALT 0x12 -#define COM_PINS_SEQ_LR 0x22 -#define COM_PINS_ALT_LR 0x32 - -// Timing & Driving Commands -#define DISPLAY_CLOCK 0xD5 -#define PRE_CHARGE_PERIOD 0xD9 -#define VCOM_DETECT 0xDB - -// Advance Graphic Commands -#define FADE_BLINK 0x23 -#define ENABLE_FADE 0x20 -#define ENABLE_BLINK 0x30 - -// Charge Pump Commands -#define CHARGE_PUMP 0x8D - -// Misc defines -#ifndef OLED_BLOCK_COUNT -# define OLED_BLOCK_COUNT (sizeof(OLED_BLOCK_TYPE) * 8) -#endif -#ifndef OLED_BLOCK_SIZE -# define OLED_BLOCK_SIZE (OLED_MATRIX_SIZE / OLED_BLOCK_COUNT) -#endif - -#define OLED_ALL_BLOCKS_MASK (((((OLED_BLOCK_TYPE)1 << (OLED_BLOCK_COUNT - 1)) - 1) << 1) | 1) - -// i2c defines -#define I2C_CMD 0x00 -#define I2C_DATA 0x40 -#if defined(__AVR__) -# define I2C_TRANSMIT_P(data) i2c_transmit_P((OLED_DISPLAY_ADDRESS << 1), &data[0], sizeof(data), OLED_I2C_TIMEOUT) -#else // defined(__AVR__) -# define I2C_TRANSMIT_P(data) i2c_transmit((OLED_DISPLAY_ADDRESS << 1), &data[0], sizeof(data), OLED_I2C_TIMEOUT) -#endif // defined(__AVR__) -#define I2C_TRANSMIT(data) i2c_transmit((OLED_DISPLAY_ADDRESS << 1), &data[0], sizeof(data), OLED_I2C_TIMEOUT) -#define I2C_WRITE_REG(mode, data, size) i2c_writeReg((OLED_DISPLAY_ADDRESS << 1), mode, data, size, OLED_I2C_TIMEOUT) - -#define HAS_FLAGS(bits, flags) ((bits & flags) == flags) - -// Display buffer's is the same as the OLED memory layout -// this is so we don't end up with rounding errors with -// parts of the display unusable or don't get cleared correctly -// and also allows for drawing & inverting -uint8_t oled_buffer[OLED_MATRIX_SIZE]; -uint8_t * oled_cursor; -OLED_BLOCK_TYPE oled_dirty = 0; -bool oled_initialized = false; -bool oled_active = false; -bool oled_scrolling = false; -uint8_t oled_brightness = OLED_BRIGHTNESS; -oled_rotation_t oled_rotation = 0; -uint8_t oled_rotation_width = 0; -uint8_t oled_scroll_speed = 0; // this holds the speed after being remapped to ssd1306 internal values -uint8_t oled_scroll_start = 0; -uint8_t oled_scroll_end = 7; -#if OLED_TIMEOUT > 0 -uint32_t oled_timeout; -#endif -#if OLED_SCROLL_TIMEOUT > 0 -uint32_t oled_scroll_timeout; -#endif -#if OLED_UPDATE_INTERVAL > 0 -uint16_t oled_update_timeout; -#endif - -// Internal variables to reduce math instructions - -#if defined(__AVR__) -// identical to i2c_transmit, but for PROGMEM since all initialization is in PROGMEM arrays currently -// probably should move this into i2c_master... -static i2c_status_t i2c_transmit_P(uint8_t address, const uint8_t *data, uint16_t length, uint16_t timeout) { - i2c_status_t status = i2c_start(address | I2C_WRITE, timeout); - - for (uint16_t i = 0; i < length && status >= 0; i++) { - status = i2c_write(pgm_read_byte((const char *)data++), timeout); - if (status) break; - } - - i2c_stop(); - - return status; -} -#endif - -// Flips the rendering bits for a character at the current cursor position -static void InvertCharacter(uint8_t *cursor) { - const uint8_t *end = cursor + OLED_FONT_WIDTH; - while (cursor < end) { - *cursor = ~(*cursor); - cursor++; - } -} - -bool oled_init(oled_rotation_t rotation) { -#if defined(USE_I2C) && defined(SPLIT_KEYBOARD) - if (!is_keyboard_master()) { - return true; - } -#endif - - oled_rotation = oled_init_user(rotation); - if (!HAS_FLAGS(oled_rotation, OLED_ROTATION_90)) { - oled_rotation_width = OLED_DISPLAY_WIDTH; - } else { - oled_rotation_width = OLED_DISPLAY_HEIGHT; - } - i2c_init(); - - static const uint8_t PROGMEM display_setup1[] = { - I2C_CMD, - DISPLAY_OFF, - DISPLAY_CLOCK, - 0x80, - MULTIPLEX_RATIO, - OLED_DISPLAY_HEIGHT - 1, - DISPLAY_OFFSET, - 0x00, - DISPLAY_START_LINE | 0x00, - CHARGE_PUMP, - 0x14, -#if (OLED_IC != OLED_IC_SH1106) - // MEMORY_MODE is unsupported on SH1106 (Page Addressing only) - MEMORY_MODE, - 0x00, // Horizontal addressing mode -#endif - }; - if (I2C_TRANSMIT_P(display_setup1) != I2C_STATUS_SUCCESS) { - print("oled_init cmd set 1 failed\n"); - return false; - } - - if (!HAS_FLAGS(oled_rotation, OLED_ROTATION_180)) { - static const uint8_t PROGMEM display_normal[] = {I2C_CMD, SEGMENT_REMAP_INV, COM_SCAN_DEC}; - if (I2C_TRANSMIT_P(display_normal) != I2C_STATUS_SUCCESS) { - print("oled_init cmd normal rotation failed\n"); - return false; - } - } else { - static const uint8_t PROGMEM display_flipped[] = {I2C_CMD, SEGMENT_REMAP, COM_SCAN_INC}; - if (I2C_TRANSMIT_P(display_flipped) != I2C_STATUS_SUCCESS) { - print("display_flipped failed\n"); - return false; - } - } - - static const uint8_t PROGMEM display_setup2[] = {I2C_CMD, COM_PINS, OLED_COM_PINS, CONTRAST, OLED_BRIGHTNESS, PRE_CHARGE_PERIOD, 0xF1, VCOM_DETECT, 0x20, DISPLAY_ALL_ON_RESUME, NORMAL_DISPLAY, DEACTIVATE_SCROLL, DISPLAY_ON}; - if (I2C_TRANSMIT_P(display_setup2) != I2C_STATUS_SUCCESS) { - print("display_setup2 failed\n"); - return false; - } - -#if OLED_TIMEOUT > 0 - oled_timeout = timer_read32() + OLED_TIMEOUT; -#endif -#if OLED_SCROLL_TIMEOUT > 0 - oled_scroll_timeout = timer_read32() + OLED_SCROLL_TIMEOUT; -#endif - - oled_clear(); - oled_initialized = true; - oled_active = true; - oled_scrolling = false; - return true; -} - -__attribute__((weak)) oled_rotation_t oled_init_user(oled_rotation_t rotation) { return rotation; } - -void oled_clear(void) { - memset(oled_buffer, 0, sizeof(oled_buffer)); - oled_cursor = &oled_buffer[0]; - oled_dirty = OLED_ALL_BLOCKS_MASK; -} - -static void calc_bounds(uint8_t update_start, uint8_t *cmd_array) { - // Calculate commands to set memory addressing bounds. - uint8_t start_page = OLED_BLOCK_SIZE * update_start / OLED_DISPLAY_WIDTH; - uint8_t start_column = OLED_BLOCK_SIZE * update_start % OLED_DISPLAY_WIDTH; -#if (OLED_IC == OLED_IC_SH1106) - // Commands for Page Addressing Mode. Sets starting page and column; has no end bound. - // Column value must be split into high and low nybble and sent as two commands. - cmd_array[0] = PAM_PAGE_ADDR | start_page; - cmd_array[1] = PAM_SETCOLUMN_LSB | ((OLED_COLUMN_OFFSET + start_column) & 0x0f); - cmd_array[2] = PAM_SETCOLUMN_MSB | ((OLED_COLUMN_OFFSET + start_column) >> 4 & 0x0f); - cmd_array[3] = NOP; - cmd_array[4] = NOP; - cmd_array[5] = NOP; -#else - // Commands for use in Horizontal Addressing mode. - cmd_array[1] = start_column; - cmd_array[4] = start_page; - cmd_array[2] = (OLED_BLOCK_SIZE + OLED_DISPLAY_WIDTH - 1) % OLED_DISPLAY_WIDTH + cmd_array[1]; - cmd_array[5] = (OLED_BLOCK_SIZE + OLED_DISPLAY_WIDTH - 1) / OLED_DISPLAY_WIDTH - 1; -#endif -} - -static void calc_bounds_90(uint8_t update_start, uint8_t *cmd_array) { - cmd_array[1] = OLED_BLOCK_SIZE * update_start / OLED_DISPLAY_HEIGHT * 8; - cmd_array[4] = OLED_BLOCK_SIZE * update_start % OLED_DISPLAY_HEIGHT; - cmd_array[2] = (OLED_BLOCK_SIZE + OLED_DISPLAY_HEIGHT - 1) / OLED_DISPLAY_HEIGHT * 8 - 1 + cmd_array[1]; - ; - cmd_array[5] = (OLED_BLOCK_SIZE + OLED_DISPLAY_HEIGHT - 1) % OLED_DISPLAY_HEIGHT / 8; -} - -uint8_t crot(uint8_t a, int8_t n) { - const uint8_t mask = 0x7; - n &= mask; - return a << n | a >> (-n & mask); -} - -static void rotate_90(const uint8_t *src, uint8_t *dest) { - for (uint8_t i = 0, shift = 7; i < 8; ++i, --shift) { - uint8_t selector = (1 << i); - for (uint8_t j = 0; j < 8; ++j) { - dest[i] |= crot(src[j] & selector, shift - (int8_t)j); - } - } -} - -void oled_render(void) { - if (!oled_initialized) { - return; - } - - // Do we have work to do? - oled_dirty &= OLED_ALL_BLOCKS_MASK; - if (!oled_dirty || oled_scrolling) { - return; - } - - // Find first dirty block - uint8_t update_start = 0; - while (!(oled_dirty & ((OLED_BLOCK_TYPE)1 << update_start))) { - ++update_start; - } - - // Set column & page position - static uint8_t display_start[] = {I2C_CMD, COLUMN_ADDR, 0, OLED_DISPLAY_WIDTH - 1, PAGE_ADDR, 0, OLED_DISPLAY_HEIGHT / 8 - 1}; - if (!HAS_FLAGS(oled_rotation, OLED_ROTATION_90)) { - calc_bounds(update_start, &display_start[1]); // Offset from I2C_CMD byte at the start - } else { - calc_bounds_90(update_start, &display_start[1]); // Offset from I2C_CMD byte at the start - } - - // Send column & page position - if (I2C_TRANSMIT(display_start) != I2C_STATUS_SUCCESS) { - print("oled_render offset command failed\n"); - return; - } - - if (!HAS_FLAGS(oled_rotation, OLED_ROTATION_90)) { - // Send render data chunk as is - if (I2C_WRITE_REG(I2C_DATA, &oled_buffer[OLED_BLOCK_SIZE * update_start], OLED_BLOCK_SIZE) != I2C_STATUS_SUCCESS) { - print("oled_render data failed\n"); - return; - } - } else { - // Rotate the render chunks - const static uint8_t source_map[] = OLED_SOURCE_MAP; - const static uint8_t target_map[] = OLED_TARGET_MAP; - - static uint8_t temp_buffer[OLED_BLOCK_SIZE]; - memset(temp_buffer, 0, sizeof(temp_buffer)); - for (uint8_t i = 0; i < sizeof(source_map); ++i) { - rotate_90(&oled_buffer[OLED_BLOCK_SIZE * update_start + source_map[i]], &temp_buffer[target_map[i]]); - } - - // Send render data chunk after rotating - if (I2C_WRITE_REG(I2C_DATA, &temp_buffer[0], OLED_BLOCK_SIZE) != I2C_STATUS_SUCCESS) { - print("oled_render90 data failed\n"); - return; - } - } - - // Turn on display if it is off - oled_on(); - - // Clear dirty flag - oled_dirty &= ~((OLED_BLOCK_TYPE)1 << update_start); -} - -void oled_set_cursor(uint8_t col, uint8_t line) { - uint16_t index = line * oled_rotation_width + col * OLED_FONT_WIDTH; - - // Out of bounds? - if (index >= OLED_MATRIX_SIZE) { - index = 0; - } - - oled_cursor = &oled_buffer[index]; -} - -void oled_advance_page(bool clearPageRemainder) { - uint16_t index = oled_cursor - &oled_buffer[0]; - uint8_t remaining = oled_rotation_width - (index % oled_rotation_width); - - if (clearPageRemainder) { - // Remaining Char count - remaining = remaining / OLED_FONT_WIDTH; - - // Write empty character until next line - while (remaining--) oled_write_char(' ', false); - } else { - // Next page index out of bounds? - if (index + remaining >= OLED_MATRIX_SIZE) { - index = 0; - remaining = 0; - } - - oled_cursor = &oled_buffer[index + remaining]; - } -} - -void oled_advance_char(void) { - uint16_t nextIndex = oled_cursor - &oled_buffer[0] + OLED_FONT_WIDTH; - uint8_t remainingSpace = oled_rotation_width - (nextIndex % oled_rotation_width); - - // Do we have enough space on the current line for the next character - if (remainingSpace < OLED_FONT_WIDTH) { - nextIndex += remainingSpace; - } - - // Did we go out of bounds - if (nextIndex >= OLED_MATRIX_SIZE) { - nextIndex = 0; - } - - // Update cursor position - oled_cursor = &oled_buffer[nextIndex]; -} - -// Main handler that writes character data to the display buffer -void oled_write_char(const char data, bool invert) { - // Advance to the next line if newline - if (data == '\n') { - // Old source wrote ' ' until end of line... - oled_advance_page(true); - return; - } - - if (data == '\r') { - oled_advance_page(false); - return; - } - - // copy the current render buffer to check for dirty after - static uint8_t oled_temp_buffer[OLED_FONT_WIDTH]; - memcpy(&oled_temp_buffer, oled_cursor, OLED_FONT_WIDTH); - - _Static_assert(sizeof(font) >= ((OLED_FONT_END + 1 - OLED_FONT_START) * OLED_FONT_WIDTH), "OLED_FONT_END references outside array"); - - // set the reder buffer data - uint8_t cast_data = (uint8_t)data; // font based on unsigned type for index - if (cast_data < OLED_FONT_START || cast_data > OLED_FONT_END) { - memset(oled_cursor, 0x00, OLED_FONT_WIDTH); - } else { - const uint8_t *glyph = &font[(cast_data - OLED_FONT_START) * OLED_FONT_WIDTH]; - memcpy_P(oled_cursor, glyph, OLED_FONT_WIDTH); - } - - // Invert if needed - if (invert) { - InvertCharacter(oled_cursor); - } - - // Dirty check - if (memcmp(&oled_temp_buffer, oled_cursor, OLED_FONT_WIDTH)) { - uint16_t index = oled_cursor - &oled_buffer[0]; - oled_dirty |= ((OLED_BLOCK_TYPE)1 << (index / OLED_BLOCK_SIZE)); - // Edgecase check if the written data spans the 2 chunks - oled_dirty |= ((OLED_BLOCK_TYPE)1 << ((index + OLED_FONT_WIDTH - 1) / OLED_BLOCK_SIZE)); - } - - // Finally move to the next char - oled_advance_char(); -} - -void oled_write(const char *data, bool invert) { - const char *end = data + strlen(data); - while (data < end) { - oled_write_char(*data, invert); - data++; - } -} - -void oled_write_ln(const char *data, bool invert) { - oled_write(data, invert); - oled_advance_page(true); -} - -void oled_pan(bool left) { - uint16_t i = 0; - for (uint16_t y = 0; y < OLED_DISPLAY_HEIGHT / 8; y++) { - if (left) { - for (uint16_t x = 0; x < OLED_DISPLAY_WIDTH - 1; x++) { - i = y * OLED_DISPLAY_WIDTH + x; - oled_buffer[i] = oled_buffer[i + 1]; - } - } else { - for (uint16_t x = OLED_DISPLAY_WIDTH - 1; x > 0; x--) { - i = y * OLED_DISPLAY_WIDTH + x; - oled_buffer[i] = oled_buffer[i - 1]; - } - } - } - oled_dirty = OLED_ALL_BLOCKS_MASK; -} - -oled_buffer_reader_t oled_read_raw(uint16_t start_index) { - if (start_index > OLED_MATRIX_SIZE) start_index = OLED_MATRIX_SIZE; - oled_buffer_reader_t ret_reader; - ret_reader.current_element = &oled_buffer[start_index]; - ret_reader.remaining_element_count = OLED_MATRIX_SIZE - start_index; - return ret_reader; -} - -void oled_write_raw_byte(const char data, uint16_t index) { - if (index > OLED_MATRIX_SIZE) index = OLED_MATRIX_SIZE; - if (oled_buffer[index] == data) return; - oled_buffer[index] = data; - oled_dirty |= ((OLED_BLOCK_TYPE)1 << (index / OLED_BLOCK_SIZE)); -} - -void oled_write_raw(const char *data, uint16_t size) { - uint16_t cursor_start_index = oled_cursor - &oled_buffer[0]; - if ((size + cursor_start_index) > OLED_MATRIX_SIZE) size = OLED_MATRIX_SIZE - cursor_start_index; - for (uint16_t i = cursor_start_index; i < cursor_start_index + size; i++) { - uint8_t c = *data++; - if (oled_buffer[i] == c) continue; - oled_buffer[i] = c; - oled_dirty |= ((OLED_BLOCK_TYPE)1 << (i / OLED_BLOCK_SIZE)); - } -} - -void oled_write_pixel(uint8_t x, uint8_t y, bool on) { - if (x >= oled_rotation_width) { - return; - } - uint16_t index = x + (y / 8) * oled_rotation_width; - if (index >= OLED_MATRIX_SIZE) { - return; - } - uint8_t data = oled_buffer[index]; - if (on) { - data |= (1 << (y % 8)); - } else { - data &= ~(1 << (y % 8)); - } - if (oled_buffer[index] != data) { - oled_buffer[index] = data; - oled_dirty |= ((OLED_BLOCK_TYPE)1 << (index / OLED_BLOCK_SIZE)); - } -} - -#if defined(__AVR__) -void oled_write_P(const char *data, bool invert) { - uint8_t c = pgm_read_byte(data); - while (c != 0) { - oled_write_char(c, invert); - c = pgm_read_byte(++data); - } -} - -void oled_write_ln_P(const char *data, bool invert) { - oled_write_P(data, invert); - oled_advance_page(true); -} - -void oled_write_raw_P(const char *data, uint16_t size) { - uint16_t cursor_start_index = oled_cursor - &oled_buffer[0]; - if ((size + cursor_start_index) > OLED_MATRIX_SIZE) size = OLED_MATRIX_SIZE - cursor_start_index; - for (uint16_t i = cursor_start_index; i < cursor_start_index + size; i++) { - uint8_t c = pgm_read_byte(data++); - if (oled_buffer[i] == c) continue; - oled_buffer[i] = c; - oled_dirty |= ((OLED_BLOCK_TYPE)1 << (i / OLED_BLOCK_SIZE)); - } -} -#endif // defined(__AVR__) - -bool oled_on(void) { - if (!oled_initialized) { - return oled_active; - } - -#if OLED_TIMEOUT > 0 - oled_timeout = timer_read32() + OLED_TIMEOUT; -#endif - - static const uint8_t PROGMEM display_on[] = -#ifdef OLED_FADE_OUT - {I2C_CMD, FADE_BLINK, 0x00}; -#else - {I2C_CMD, DISPLAY_ON}; -#endif - - if (!oled_active) { - if (I2C_TRANSMIT_P(display_on) != I2C_STATUS_SUCCESS) { - print("oled_on cmd failed\n"); - return oled_active; - } - oled_active = true; - } - return oled_active; -} - -bool oled_off(void) { - if (!oled_initialized) { - return !oled_active; - } - - static const uint8_t PROGMEM display_off[] = -#ifdef OLED_FADE_OUT - {I2C_CMD, FADE_BLINK, ENABLE_FADE | OLED_FADE_OUT_INTERVAL}; -#else - {I2C_CMD, DISPLAY_OFF}; -#endif - - if (oled_active) { - if (I2C_TRANSMIT_P(display_off) != I2C_STATUS_SUCCESS) { - print("oled_off cmd failed\n"); - return oled_active; - } - oled_active = false; - } - return !oled_active; -} - -bool is_oled_on(void) { return oled_active; } - -uint8_t oled_set_brightness(uint8_t level) { - if (!oled_initialized) { - return oled_brightness; - } - - uint8_t set_contrast[] = {I2C_CMD, CONTRAST, level}; - if (oled_brightness != level) { - if (I2C_TRANSMIT(set_contrast) != I2C_STATUS_SUCCESS) { - print("set_brightness cmd failed\n"); - return oled_brightness; - } - oled_brightness = level; - } - return oled_brightness; -} - -uint8_t oled_get_brightness(void) { return oled_brightness; } - -// Set the specific 8 lines rows of the screen to scroll. -// 0 is the default for start, and 7 for end, which is the entire -// height of the screen. For 128x32 screens, rows 4-7 are not used. -void oled_scroll_set_area(uint8_t start_line, uint8_t end_line) { - oled_scroll_start = start_line; - oled_scroll_end = end_line; -} - -void oled_scroll_set_speed(uint8_t speed) { - // Sets the speed for scrolling... does not take effect - // until scrolling is either started or restarted - // the ssd1306 supports 8 speeds - // FrameRate2 speed = 7 - // FrameRate3 speed = 4 - // FrameRate4 speed = 5 - // FrameRate5 speed = 0 - // FrameRate25 speed = 6 - // FrameRate64 speed = 1 - // FrameRate128 speed = 2 - // FrameRate256 speed = 3 - // for ease of use these are remaped here to be in order - static const uint8_t scroll_remap[8] = {7, 4, 5, 0, 6, 1, 2, 3}; - oled_scroll_speed = scroll_remap[speed]; -} - -bool oled_scroll_right(void) { - if (!oled_initialized) { - return oled_scrolling; - } - - // Dont enable scrolling if we need to update the display - // This prevents scrolling of bad data from starting the scroll too early after init - if (!oled_dirty && !oled_scrolling) { - uint8_t display_scroll_right[] = {I2C_CMD, SCROLL_RIGHT, 0x00, oled_scroll_start, oled_scroll_speed, oled_scroll_end, 0x00, 0xFF, ACTIVATE_SCROLL}; - if (I2C_TRANSMIT(display_scroll_right) != I2C_STATUS_SUCCESS) { - print("oled_scroll_right cmd failed\n"); - return oled_scrolling; - } - oled_scrolling = true; - } - return oled_scrolling; -} - -bool oled_scroll_left(void) { - if (!oled_initialized) { - return oled_scrolling; - } - - // Dont enable scrolling if we need to update the display - // This prevents scrolling of bad data from starting the scroll too early after init - if (!oled_dirty && !oled_scrolling) { - uint8_t display_scroll_left[] = {I2C_CMD, SCROLL_LEFT, 0x00, oled_scroll_start, oled_scroll_speed, oled_scroll_end, 0x00, 0xFF, ACTIVATE_SCROLL}; - if (I2C_TRANSMIT(display_scroll_left) != I2C_STATUS_SUCCESS) { - print("oled_scroll_left cmd failed\n"); - return oled_scrolling; - } - oled_scrolling = true; - } - return oled_scrolling; -} - -bool oled_scroll_off(void) { - if (!oled_initialized) { - return !oled_scrolling; - } - - if (oled_scrolling) { - static const uint8_t PROGMEM display_scroll_off[] = {I2C_CMD, DEACTIVATE_SCROLL}; - if (I2C_TRANSMIT_P(display_scroll_off) != I2C_STATUS_SUCCESS) { - print("oled_scroll_off cmd failed\n"); - return oled_scrolling; - } - oled_scrolling = false; - oled_dirty = OLED_ALL_BLOCKS_MASK; - } - return !oled_scrolling; -} - -uint8_t oled_max_chars(void) { - if (!HAS_FLAGS(oled_rotation, OLED_ROTATION_90)) { - return OLED_DISPLAY_WIDTH / OLED_FONT_WIDTH; - } - return OLED_DISPLAY_HEIGHT / OLED_FONT_WIDTH; -} - -uint8_t oled_max_lines(void) { - if (!HAS_FLAGS(oled_rotation, OLED_ROTATION_90)) { - return OLED_DISPLAY_HEIGHT / OLED_FONT_HEIGHT; - } - return OLED_DISPLAY_WIDTH / OLED_FONT_HEIGHT; -} - -void oled_task(void) { - if (!oled_initialized) { - return; - } - -#if OLED_UPDATE_INTERVAL > 0 - if (timer_elapsed(oled_update_timeout) >= OLED_UPDATE_INTERVAL) { - oled_update_timeout = timer_read(); - oled_set_cursor(0, 0); - oled_task_user(); - } -#else - oled_set_cursor(0, 0); - oled_task_user(); -#endif - -#if OLED_SCROLL_TIMEOUT > 0 - if (oled_dirty && oled_scrolling) { - oled_scroll_timeout = timer_read32() + OLED_SCROLL_TIMEOUT; - oled_scroll_off(); - } -#endif - - // Smart render system, no need to check for dirty - oled_render(); - - // Display timeout check -#if OLED_TIMEOUT > 0 - if (oled_active && timer_expired32(timer_read32(), oled_timeout)) { - oled_off(); - } -#endif - -#if OLED_SCROLL_TIMEOUT > 0 - if (!oled_scrolling && timer_expired32(timer_read32(), oled_scroll_timeout)) { -# ifdef OLED_SCROLL_TIMEOUT_RIGHT - oled_scroll_right(); -# else - oled_scroll_left(); -# endif - } -#endif -} - -__attribute__((weak)) void oled_task_user(void) {} diff --git a/drivers/oled/oled_driver.h b/drivers/oled/oled_driver.h index a6b85f37e6bb..3b56d370dc7e 100644 --- a/drivers/oled/oled_driver.h +++ b/drivers/oled/oled_driver.h @@ -190,6 +190,7 @@ bool oled_init(oled_rotation_t rotation); // Called at the start of oled_init, weak function overridable by the user // rotation - the value passed into oled_init // Return new oled_rotation_t if you want to override default rotation +oled_rotation_t oled_init_kb(oled_rotation_t rotation); oled_rotation_t oled_init_user(oled_rotation_t rotation); // Clears the display buffer, resets cursor position to 0, and sets the buffer to dirty for rendering @@ -285,7 +286,8 @@ uint8_t oled_get_brightness(void); void oled_task(void); // Called at the start of oled_task, weak function overridable by the user -void oled_task_user(void); +bool oled_task_kb(void); +bool oled_task_user(void); // Set the specific 8 lines rows of the screen to scroll. // 0 is the default for start, and 7 for end, which is the entire @@ -313,6 +315,14 @@ bool oled_scroll_left(void); // Returns true if the screen was not scrolling or stops scrolling bool oled_scroll_off(void); +// Returns true if the oled is currently scrolling, false if it is +// not +bool is_oled_scrolling(void); + +// Inverts the display +// Returns true if the screen was or is inverted +bool oled_invert(bool invert); + // Returns the maximum number of characters that will fit on a line uint8_t oled_max_chars(void); diff --git a/drivers/oled/ssd1306_sh1106.c b/drivers/oled/ssd1306_sh1106.c new file mode 100644 index 000000000000..d9bd3c14bd72 --- /dev/null +++ b/drivers/oled/ssd1306_sh1106.c @@ -0,0 +1,781 @@ +/* +Copyright 2019 Ryan Caltabiano + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "i2c_master.h" +#include "oled_driver.h" +#include OLED_FONT_H +#include "timer.h" +#include "print.h" + +#include + +#include "progmem.h" + +#include "keyboard.h" + +// Used commands from spec sheet: https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf +// for SH1106: https://www.velleman.eu/downloads/29/infosheets/sh1106_datasheet.pdf + +// Fundamental Commands +#define CONTRAST 0x81 +#define DISPLAY_ALL_ON 0xA5 +#define DISPLAY_ALL_ON_RESUME 0xA4 +#define NORMAL_DISPLAY 0xA6 +#define INVERT_DISPLAY 0xA7 +#define DISPLAY_ON 0xAF +#define DISPLAY_OFF 0xAE +#define NOP 0xE3 + +// Scrolling Commands +#define ACTIVATE_SCROLL 0x2F +#define DEACTIVATE_SCROLL 0x2E +#define SCROLL_RIGHT 0x26 +#define SCROLL_LEFT 0x27 +#define SCROLL_RIGHT_UP 0x29 +#define SCROLL_LEFT_UP 0x2A + +// Addressing Setting Commands +#define MEMORY_MODE 0x20 +#define COLUMN_ADDR 0x21 +#define PAGE_ADDR 0x22 +#define PAM_SETCOLUMN_LSB 0x00 +#define PAM_SETCOLUMN_MSB 0x10 +#define PAM_PAGE_ADDR 0xB0 // 0xb0 -- 0xb7 + +// Hardware Configuration Commands +#define DISPLAY_START_LINE 0x40 +#define SEGMENT_REMAP 0xA0 +#define SEGMENT_REMAP_INV 0xA1 +#define MULTIPLEX_RATIO 0xA8 +#define COM_SCAN_INC 0xC0 +#define COM_SCAN_DEC 0xC8 +#define DISPLAY_OFFSET 0xD3 +#define COM_PINS 0xDA +#define COM_PINS_SEQ 0x02 +#define COM_PINS_ALT 0x12 +#define COM_PINS_SEQ_LR 0x22 +#define COM_PINS_ALT_LR 0x32 + +// Timing & Driving Commands +#define DISPLAY_CLOCK 0xD5 +#define PRE_CHARGE_PERIOD 0xD9 +#define VCOM_DETECT 0xDB + +// Advance Graphic Commands +#define FADE_BLINK 0x23 +#define ENABLE_FADE 0x20 +#define ENABLE_BLINK 0x30 + +// Charge Pump Commands +#define CHARGE_PUMP 0x8D + +// Misc defines +#ifndef OLED_BLOCK_COUNT +# define OLED_BLOCK_COUNT (sizeof(OLED_BLOCK_TYPE) * 8) +#endif +#ifndef OLED_BLOCK_SIZE +# define OLED_BLOCK_SIZE (OLED_MATRIX_SIZE / OLED_BLOCK_COUNT) +#endif + +#define OLED_ALL_BLOCKS_MASK (((((OLED_BLOCK_TYPE)1 << (OLED_BLOCK_COUNT - 1)) - 1) << 1) | 1) + +// i2c defines +#define I2C_CMD 0x00 +#define I2C_DATA 0x40 +#if defined(__AVR__) +# define I2C_TRANSMIT_P(data) i2c_transmit_P((OLED_DISPLAY_ADDRESS << 1), &data[0], sizeof(data), OLED_I2C_TIMEOUT) +#else // defined(__AVR__) +# define I2C_TRANSMIT_P(data) i2c_transmit((OLED_DISPLAY_ADDRESS << 1), &data[0], sizeof(data), OLED_I2C_TIMEOUT) +#endif // defined(__AVR__) +#define I2C_TRANSMIT(data) i2c_transmit((OLED_DISPLAY_ADDRESS << 1), &data[0], sizeof(data), OLED_I2C_TIMEOUT) +#define I2C_WRITE_REG(mode, data, size) i2c_writeReg((OLED_DISPLAY_ADDRESS << 1), mode, data, size, OLED_I2C_TIMEOUT) + +#define HAS_FLAGS(bits, flags) ((bits & flags) == flags) + +// Display buffer's is the same as the OLED memory layout +// this is so we don't end up with rounding errors with +// parts of the display unusable or don't get cleared correctly +// and also allows for drawing & inverting +uint8_t oled_buffer[OLED_MATRIX_SIZE]; +uint8_t * oled_cursor; +OLED_BLOCK_TYPE oled_dirty = 0; +bool oled_initialized = false; +bool oled_active = false; +bool oled_scrolling = false; +bool oled_inverted = false; +uint8_t oled_brightness = OLED_BRIGHTNESS; +oled_rotation_t oled_rotation = 0; +uint8_t oled_rotation_width = 0; +uint8_t oled_scroll_speed = 0; // this holds the speed after being remapped to ssd1306 internal values +uint8_t oled_scroll_start = 0; +uint8_t oled_scroll_end = 7; +#if OLED_TIMEOUT > 0 +uint32_t oled_timeout; +#endif +#if OLED_SCROLL_TIMEOUT > 0 +uint32_t oled_scroll_timeout; +#endif +#if OLED_UPDATE_INTERVAL > 0 +uint16_t oled_update_timeout; +#endif + +// Internal variables to reduce math instructions + +#if defined(__AVR__) +// identical to i2c_transmit, but for PROGMEM since all initialization is in PROGMEM arrays currently +// probably should move this into i2c_master... +static i2c_status_t i2c_transmit_P(uint8_t address, const uint8_t *data, uint16_t length, uint16_t timeout) { + i2c_status_t status = i2c_start(address | I2C_WRITE, timeout); + + for (uint16_t i = 0; i < length && status >= 0; i++) { + status = i2c_write(pgm_read_byte((const char *)data++), timeout); + if (status) break; + } + + i2c_stop(); + + return status; +} +#endif + +// Flips the rendering bits for a character at the current cursor position +static void InvertCharacter(uint8_t *cursor) { + const uint8_t *end = cursor + OLED_FONT_WIDTH; + while (cursor < end) { + *cursor = ~(*cursor); + cursor++; + } +} + +bool oled_init(oled_rotation_t rotation) { +#if defined(USE_I2C) && defined(SPLIT_KEYBOARD) + if (!is_keyboard_master()) { + return true; + } +#endif + + oled_rotation = oled_init_user(oled_init_kb(rotation)); + if (!HAS_FLAGS(oled_rotation, OLED_ROTATION_90)) { + oled_rotation_width = OLED_DISPLAY_WIDTH; + } else { + oled_rotation_width = OLED_DISPLAY_HEIGHT; + } + i2c_init(); + + static const uint8_t PROGMEM display_setup1[] = { + I2C_CMD, + DISPLAY_OFF, + DISPLAY_CLOCK, + 0x80, + MULTIPLEX_RATIO, + OLED_DISPLAY_HEIGHT - 1, + DISPLAY_OFFSET, + 0x00, + DISPLAY_START_LINE | 0x00, + CHARGE_PUMP, + 0x14, +#if (OLED_IC != OLED_IC_SH1106) + // MEMORY_MODE is unsupported on SH1106 (Page Addressing only) + MEMORY_MODE, + 0x00, // Horizontal addressing mode +#endif + }; + if (I2C_TRANSMIT_P(display_setup1) != I2C_STATUS_SUCCESS) { + print("oled_init cmd set 1 failed\n"); + return false; + } + + if (!HAS_FLAGS(oled_rotation, OLED_ROTATION_180)) { + static const uint8_t PROGMEM display_normal[] = {I2C_CMD, SEGMENT_REMAP_INV, COM_SCAN_DEC}; + if (I2C_TRANSMIT_P(display_normal) != I2C_STATUS_SUCCESS) { + print("oled_init cmd normal rotation failed\n"); + return false; + } + } else { + static const uint8_t PROGMEM display_flipped[] = {I2C_CMD, SEGMENT_REMAP, COM_SCAN_INC}; + if (I2C_TRANSMIT_P(display_flipped) != I2C_STATUS_SUCCESS) { + print("display_flipped failed\n"); + return false; + } + } + + static const uint8_t PROGMEM display_setup2[] = {I2C_CMD, COM_PINS, OLED_COM_PINS, CONTRAST, OLED_BRIGHTNESS, PRE_CHARGE_PERIOD, 0xF1, VCOM_DETECT, 0x20, DISPLAY_ALL_ON_RESUME, NORMAL_DISPLAY, DEACTIVATE_SCROLL, DISPLAY_ON}; + if (I2C_TRANSMIT_P(display_setup2) != I2C_STATUS_SUCCESS) { + print("display_setup2 failed\n"); + return false; + } + +#if OLED_TIMEOUT > 0 + oled_timeout = timer_read32() + OLED_TIMEOUT; +#endif +#if OLED_SCROLL_TIMEOUT > 0 + oled_scroll_timeout = timer_read32() + OLED_SCROLL_TIMEOUT; +#endif + + oled_clear(); + oled_initialized = true; + oled_active = true; + oled_scrolling = false; + return true; +} + +__attribute__((weak)) oled_rotation_t oled_init_kb(oled_rotation_t rotation) { return rotation; } +__attribute__((weak)) oled_rotation_t oled_init_user(oled_rotation_t rotation) { return rotation; } + +void oled_clear(void) { + memset(oled_buffer, 0, sizeof(oled_buffer)); + oled_cursor = &oled_buffer[0]; + oled_dirty = OLED_ALL_BLOCKS_MASK; +} + +static void calc_bounds(uint8_t update_start, uint8_t *cmd_array) { + // Calculate commands to set memory addressing bounds. + uint8_t start_page = OLED_BLOCK_SIZE * update_start / OLED_DISPLAY_WIDTH; + uint8_t start_column = OLED_BLOCK_SIZE * update_start % OLED_DISPLAY_WIDTH; +#if (OLED_IC == OLED_IC_SH1106) + // Commands for Page Addressing Mode. Sets starting page and column; has no end bound. + // Column value must be split into high and low nybble and sent as two commands. + cmd_array[0] = PAM_PAGE_ADDR | start_page; + cmd_array[1] = PAM_SETCOLUMN_LSB | ((OLED_COLUMN_OFFSET + start_column) & 0x0f); + cmd_array[2] = PAM_SETCOLUMN_MSB | ((OLED_COLUMN_OFFSET + start_column) >> 4 & 0x0f); + cmd_array[3] = NOP; + cmd_array[4] = NOP; + cmd_array[5] = NOP; +#else + // Commands for use in Horizontal Addressing mode. + cmd_array[1] = start_column; + cmd_array[4] = start_page; + cmd_array[2] = (OLED_BLOCK_SIZE + OLED_DISPLAY_WIDTH - 1) % OLED_DISPLAY_WIDTH + cmd_array[1]; + cmd_array[5] = (OLED_BLOCK_SIZE + OLED_DISPLAY_WIDTH - 1) / OLED_DISPLAY_WIDTH - 1; +#endif +} + +static void calc_bounds_90(uint8_t update_start, uint8_t *cmd_array) { + cmd_array[1] = OLED_BLOCK_SIZE * update_start / OLED_DISPLAY_HEIGHT * 8; + cmd_array[4] = OLED_BLOCK_SIZE * update_start % OLED_DISPLAY_HEIGHT; + cmd_array[2] = (OLED_BLOCK_SIZE + OLED_DISPLAY_HEIGHT - 1) / OLED_DISPLAY_HEIGHT * 8 - 1 + cmd_array[1]; + ; + cmd_array[5] = (OLED_BLOCK_SIZE + OLED_DISPLAY_HEIGHT - 1) % OLED_DISPLAY_HEIGHT / 8; +} + +uint8_t crot(uint8_t a, int8_t n) { + const uint8_t mask = 0x7; + n &= mask; + return a << n | a >> (-n & mask); +} + +static void rotate_90(const uint8_t *src, uint8_t *dest) { + for (uint8_t i = 0, shift = 7; i < 8; ++i, --shift) { + uint8_t selector = (1 << i); + for (uint8_t j = 0; j < 8; ++j) { + dest[i] |= crot(src[j] & selector, shift - (int8_t)j); + } + } +} + +void oled_render(void) { + if (!oled_initialized) { + return; + } + + // Do we have work to do? + oled_dirty &= OLED_ALL_BLOCKS_MASK; + if (!oled_dirty || oled_scrolling) { + return; + } + + // Find first dirty block + uint8_t update_start = 0; + while (!(oled_dirty & ((OLED_BLOCK_TYPE)1 << update_start))) { + ++update_start; + } + + // Set column & page position + static uint8_t display_start[] = {I2C_CMD, COLUMN_ADDR, 0, OLED_DISPLAY_WIDTH - 1, PAGE_ADDR, 0, OLED_DISPLAY_HEIGHT / 8 - 1}; + if (!HAS_FLAGS(oled_rotation, OLED_ROTATION_90)) { + calc_bounds(update_start, &display_start[1]); // Offset from I2C_CMD byte at the start + } else { + calc_bounds_90(update_start, &display_start[1]); // Offset from I2C_CMD byte at the start + } + + // Send column & page position + if (I2C_TRANSMIT(display_start) != I2C_STATUS_SUCCESS) { + print("oled_render offset command failed\n"); + return; + } + + if (!HAS_FLAGS(oled_rotation, OLED_ROTATION_90)) { + // Send render data chunk as is + if (I2C_WRITE_REG(I2C_DATA, &oled_buffer[OLED_BLOCK_SIZE * update_start], OLED_BLOCK_SIZE) != I2C_STATUS_SUCCESS) { + print("oled_render data failed\n"); + return; + } + } else { + // Rotate the render chunks + const static uint8_t source_map[] = OLED_SOURCE_MAP; + const static uint8_t target_map[] = OLED_TARGET_MAP; + + static uint8_t temp_buffer[OLED_BLOCK_SIZE]; + memset(temp_buffer, 0, sizeof(temp_buffer)); + for (uint8_t i = 0; i < sizeof(source_map); ++i) { + rotate_90(&oled_buffer[OLED_BLOCK_SIZE * update_start + source_map[i]], &temp_buffer[target_map[i]]); + } + + // Send render data chunk after rotating + if (I2C_WRITE_REG(I2C_DATA, &temp_buffer[0], OLED_BLOCK_SIZE) != I2C_STATUS_SUCCESS) { + print("oled_render90 data failed\n"); + return; + } + } + + // Turn on display if it is off + oled_on(); + + // Clear dirty flag + oled_dirty &= ~((OLED_BLOCK_TYPE)1 << update_start); +} + +void oled_set_cursor(uint8_t col, uint8_t line) { + uint16_t index = line * oled_rotation_width + col * OLED_FONT_WIDTH; + + // Out of bounds? + if (index >= OLED_MATRIX_SIZE) { + index = 0; + } + + oled_cursor = &oled_buffer[index]; +} + +void oled_advance_page(bool clearPageRemainder) { + uint16_t index = oled_cursor - &oled_buffer[0]; + uint8_t remaining = oled_rotation_width - (index % oled_rotation_width); + + if (clearPageRemainder) { + // Remaining Char count + remaining = remaining / OLED_FONT_WIDTH; + + // Write empty character until next line + while (remaining--) oled_write_char(' ', false); + } else { + // Next page index out of bounds? + if (index + remaining >= OLED_MATRIX_SIZE) { + index = 0; + remaining = 0; + } + + oled_cursor = &oled_buffer[index + remaining]; + } +} + +void oled_advance_char(void) { + uint16_t nextIndex = oled_cursor - &oled_buffer[0] + OLED_FONT_WIDTH; + uint8_t remainingSpace = oled_rotation_width - (nextIndex % oled_rotation_width); + + // Do we have enough space on the current line for the next character + if (remainingSpace < OLED_FONT_WIDTH) { + nextIndex += remainingSpace; + } + + // Did we go out of bounds + if (nextIndex >= OLED_MATRIX_SIZE) { + nextIndex = 0; + } + + // Update cursor position + oled_cursor = &oled_buffer[nextIndex]; +} + +// Main handler that writes character data to the display buffer +void oled_write_char(const char data, bool invert) { + // Advance to the next line if newline + if (data == '\n') { + // Old source wrote ' ' until end of line... + oled_advance_page(true); + return; + } + + if (data == '\r') { + oled_advance_page(false); + return; + } + + // copy the current render buffer to check for dirty after + static uint8_t oled_temp_buffer[OLED_FONT_WIDTH]; + memcpy(&oled_temp_buffer, oled_cursor, OLED_FONT_WIDTH); + + _Static_assert(sizeof(font) >= ((OLED_FONT_END + 1 - OLED_FONT_START) * OLED_FONT_WIDTH), "OLED_FONT_END references outside array"); + + // set the reder buffer data + uint8_t cast_data = (uint8_t)data; // font based on unsigned type for index + if (cast_data < OLED_FONT_START || cast_data > OLED_FONT_END) { + memset(oled_cursor, 0x00, OLED_FONT_WIDTH); + } else { + const uint8_t *glyph = &font[(cast_data - OLED_FONT_START) * OLED_FONT_WIDTH]; + memcpy_P(oled_cursor, glyph, OLED_FONT_WIDTH); + } + + // Invert if needed + if (invert) { + InvertCharacter(oled_cursor); + } + + // Dirty check + if (memcmp(&oled_temp_buffer, oled_cursor, OLED_FONT_WIDTH)) { + uint16_t index = oled_cursor - &oled_buffer[0]; + oled_dirty |= ((OLED_BLOCK_TYPE)1 << (index / OLED_BLOCK_SIZE)); + // Edgecase check if the written data spans the 2 chunks + oled_dirty |= ((OLED_BLOCK_TYPE)1 << ((index + OLED_FONT_WIDTH - 1) / OLED_BLOCK_SIZE)); + } + + // Finally move to the next char + oled_advance_char(); +} + +void oled_write(const char *data, bool invert) { + const char *end = data + strlen(data); + while (data < end) { + oled_write_char(*data, invert); + data++; + } +} + +void oled_write_ln(const char *data, bool invert) { + oled_write(data, invert); + oled_advance_page(true); +} + +void oled_pan(bool left) { + uint16_t i = 0; + for (uint16_t y = 0; y < OLED_DISPLAY_HEIGHT / 8; y++) { + if (left) { + for (uint16_t x = 0; x < OLED_DISPLAY_WIDTH - 1; x++) { + i = y * OLED_DISPLAY_WIDTH + x; + oled_buffer[i] = oled_buffer[i + 1]; + } + } else { + for (uint16_t x = OLED_DISPLAY_WIDTH - 1; x > 0; x--) { + i = y * OLED_DISPLAY_WIDTH + x; + oled_buffer[i] = oled_buffer[i - 1]; + } + } + } + oled_dirty = OLED_ALL_BLOCKS_MASK; +} + +oled_buffer_reader_t oled_read_raw(uint16_t start_index) { + if (start_index > OLED_MATRIX_SIZE) start_index = OLED_MATRIX_SIZE; + oled_buffer_reader_t ret_reader; + ret_reader.current_element = &oled_buffer[start_index]; + ret_reader.remaining_element_count = OLED_MATRIX_SIZE - start_index; + return ret_reader; +} + +void oled_write_raw_byte(const char data, uint16_t index) { + if (index > OLED_MATRIX_SIZE) index = OLED_MATRIX_SIZE; + if (oled_buffer[index] == data) return; + oled_buffer[index] = data; + oled_dirty |= ((OLED_BLOCK_TYPE)1 << (index / OLED_BLOCK_SIZE)); +} + +void oled_write_raw(const char *data, uint16_t size) { + uint16_t cursor_start_index = oled_cursor - &oled_buffer[0]; + if ((size + cursor_start_index) > OLED_MATRIX_SIZE) size = OLED_MATRIX_SIZE - cursor_start_index; + for (uint16_t i = cursor_start_index; i < cursor_start_index + size; i++) { + uint8_t c = *data++; + if (oled_buffer[i] == c) continue; + oled_buffer[i] = c; + oled_dirty |= ((OLED_BLOCK_TYPE)1 << (i / OLED_BLOCK_SIZE)); + } +} + +void oled_write_pixel(uint8_t x, uint8_t y, bool on) { + if (x >= oled_rotation_width) { + return; + } + uint16_t index = x + (y / 8) * oled_rotation_width; + if (index >= OLED_MATRIX_SIZE) { + return; + } + uint8_t data = oled_buffer[index]; + if (on) { + data |= (1 << (y % 8)); + } else { + data &= ~(1 << (y % 8)); + } + if (oled_buffer[index] != data) { + oled_buffer[index] = data; + oled_dirty |= ((OLED_BLOCK_TYPE)1 << (index / OLED_BLOCK_SIZE)); + } +} + +#if defined(__AVR__) +void oled_write_P(const char *data, bool invert) { + uint8_t c = pgm_read_byte(data); + while (c != 0) { + oled_write_char(c, invert); + c = pgm_read_byte(++data); + } +} + +void oled_write_ln_P(const char *data, bool invert) { + oled_write_P(data, invert); + oled_advance_page(true); +} + +void oled_write_raw_P(const char *data, uint16_t size) { + uint16_t cursor_start_index = oled_cursor - &oled_buffer[0]; + if ((size + cursor_start_index) > OLED_MATRIX_SIZE) size = OLED_MATRIX_SIZE - cursor_start_index; + for (uint16_t i = cursor_start_index; i < cursor_start_index + size; i++) { + uint8_t c = pgm_read_byte(data++); + if (oled_buffer[i] == c) continue; + oled_buffer[i] = c; + oled_dirty |= ((OLED_BLOCK_TYPE)1 << (i / OLED_BLOCK_SIZE)); + } +} +#endif // defined(__AVR__) + +bool oled_on(void) { + if (!oled_initialized) { + return oled_active; + } + +#if OLED_TIMEOUT > 0 + oled_timeout = timer_read32() + OLED_TIMEOUT; +#endif + + static const uint8_t PROGMEM display_on[] = +#ifdef OLED_FADE_OUT + {I2C_CMD, FADE_BLINK, 0x00}; +#else + {I2C_CMD, DISPLAY_ON}; +#endif + + if (!oled_active) { + if (I2C_TRANSMIT_P(display_on) != I2C_STATUS_SUCCESS) { + print("oled_on cmd failed\n"); + return oled_active; + } + oled_active = true; + } + return oled_active; +} + +bool oled_off(void) { + if (!oled_initialized) { + return !oled_active; + } + + static const uint8_t PROGMEM display_off[] = +#ifdef OLED_FADE_OUT + {I2C_CMD, FADE_BLINK, ENABLE_FADE | OLED_FADE_OUT_INTERVAL}; +#else + {I2C_CMD, DISPLAY_OFF}; +#endif + + if (oled_active) { + if (I2C_TRANSMIT_P(display_off) != I2C_STATUS_SUCCESS) { + print("oled_off cmd failed\n"); + return oled_active; + } + oled_active = false; + } + return !oled_active; +} + +bool is_oled_on(void) { return oled_active; } + +uint8_t oled_set_brightness(uint8_t level) { + if (!oled_initialized) { + return oled_brightness; + } + + uint8_t set_contrast[] = {I2C_CMD, CONTRAST, level}; + if (oled_brightness != level) { + if (I2C_TRANSMIT(set_contrast) != I2C_STATUS_SUCCESS) { + print("set_brightness cmd failed\n"); + return oled_brightness; + } + oled_brightness = level; + } + return oled_brightness; +} + +uint8_t oled_get_brightness(void) { return oled_brightness; } + +// Set the specific 8 lines rows of the screen to scroll. +// 0 is the default for start, and 7 for end, which is the entire +// height of the screen. For 128x32 screens, rows 4-7 are not used. +void oled_scroll_set_area(uint8_t start_line, uint8_t end_line) { + oled_scroll_start = start_line; + oled_scroll_end = end_line; +} + +void oled_scroll_set_speed(uint8_t speed) { + // Sets the speed for scrolling... does not take effect + // until scrolling is either started or restarted + // the ssd1306 supports 8 speeds + // FrameRate2 speed = 7 + // FrameRate3 speed = 4 + // FrameRate4 speed = 5 + // FrameRate5 speed = 0 + // FrameRate25 speed = 6 + // FrameRate64 speed = 1 + // FrameRate128 speed = 2 + // FrameRate256 speed = 3 + // for ease of use these are remaped here to be in order + static const uint8_t scroll_remap[8] = {7, 4, 5, 0, 6, 1, 2, 3}; + oled_scroll_speed = scroll_remap[speed]; +} + +bool oled_scroll_right(void) { + if (!oled_initialized) { + return oled_scrolling; + } + + // Dont enable scrolling if we need to update the display + // This prevents scrolling of bad data from starting the scroll too early after init + if (!oled_dirty && !oled_scrolling) { + uint8_t display_scroll_right[] = {I2C_CMD, SCROLL_RIGHT, 0x00, oled_scroll_start, oled_scroll_speed, oled_scroll_end, 0x00, 0xFF, ACTIVATE_SCROLL}; + if (I2C_TRANSMIT(display_scroll_right) != I2C_STATUS_SUCCESS) { + print("oled_scroll_right cmd failed\n"); + return oled_scrolling; + } + oled_scrolling = true; + } + return oled_scrolling; +} + +bool oled_scroll_left(void) { + if (!oled_initialized) { + return oled_scrolling; + } + + // Dont enable scrolling if we need to update the display + // This prevents scrolling of bad data from starting the scroll too early after init + if (!oled_dirty && !oled_scrolling) { + uint8_t display_scroll_left[] = {I2C_CMD, SCROLL_LEFT, 0x00, oled_scroll_start, oled_scroll_speed, oled_scroll_end, 0x00, 0xFF, ACTIVATE_SCROLL}; + if (I2C_TRANSMIT(display_scroll_left) != I2C_STATUS_SUCCESS) { + print("oled_scroll_left cmd failed\n"); + return oled_scrolling; + } + oled_scrolling = true; + } + return oled_scrolling; +} + +bool oled_scroll_off(void) { + if (!oled_initialized) { + return !oled_scrolling; + } + + if (oled_scrolling) { + static const uint8_t PROGMEM display_scroll_off[] = {I2C_CMD, DEACTIVATE_SCROLL}; + if (I2C_TRANSMIT_P(display_scroll_off) != I2C_STATUS_SUCCESS) { + print("oled_scroll_off cmd failed\n"); + return oled_scrolling; + } + oled_scrolling = false; + oled_dirty = OLED_ALL_BLOCKS_MASK; + } + return !oled_scrolling; +} + +bool is_oled_scrolling(void) { return oled_scrolling; } + +bool oled_invert(bool invert) { + if (!oled_initialized) { + return oled_inverted; + } + + if (invert && !oled_inverted) { + static const uint8_t PROGMEM display_inverted[] = {I2C_CMD, INVERT_DISPLAY}; + if (I2C_TRANSMIT_P(display_inverted) != I2C_STATUS_SUCCESS) { + print("oled_invert cmd failed\n"); + return oled_inverted; + } + oled_inverted = true; + } else if (!invert && oled_inverted) { + static const uint8_t PROGMEM display_normal[] = {I2C_CMD, NORMAL_DISPLAY}; + if (I2C_TRANSMIT_P(display_normal) != I2C_STATUS_SUCCESS) { + print("oled_invert cmd failed\n"); + return oled_inverted; + } + oled_inverted = false; + } + + return oled_inverted; +} + +uint8_t oled_max_chars(void) { + if (!HAS_FLAGS(oled_rotation, OLED_ROTATION_90)) { + return OLED_DISPLAY_WIDTH / OLED_FONT_WIDTH; + } + return OLED_DISPLAY_HEIGHT / OLED_FONT_WIDTH; +} + +uint8_t oled_max_lines(void) { + if (!HAS_FLAGS(oled_rotation, OLED_ROTATION_90)) { + return OLED_DISPLAY_HEIGHT / OLED_FONT_HEIGHT; + } + return OLED_DISPLAY_WIDTH / OLED_FONT_HEIGHT; +} + +void oled_task(void) { + if (!oled_initialized) { + return; + } + +#if OLED_UPDATE_INTERVAL > 0 + if (timer_elapsed(oled_update_timeout) >= OLED_UPDATE_INTERVAL) { + oled_update_timeout = timer_read(); + oled_set_cursor(0, 0); + oled_task_kb(); + } +#else + oled_set_cursor(0, 0); + oled_task_kb(); +#endif + +#if OLED_SCROLL_TIMEOUT > 0 + if (oled_dirty && oled_scrolling) { + oled_scroll_timeout = timer_read32() + OLED_SCROLL_TIMEOUT; + oled_scroll_off(); + } +#endif + + // Smart render system, no need to check for dirty + oled_render(); + + // Display timeout check +#if OLED_TIMEOUT > 0 + if (oled_active && timer_expired32(timer_read32(), oled_timeout)) { + oled_off(); + } +#endif + +#if OLED_SCROLL_TIMEOUT > 0 + if (!oled_scrolling && timer_expired32(timer_read32(), oled_scroll_timeout)) { +# ifdef OLED_SCROLL_TIMEOUT_RIGHT + oled_scroll_right(); +# else + oled_scroll_left(); +# endif + } +#endif +} + +__attribute__((weak)) bool oled_task_kb(void) { return oled_task_user(); } +__attribute__((weak)) bool oled_task_user(void) { return true; } diff --git a/tmk_core/protocol/ps2.h b/drivers/ps2/ps2.h similarity index 100% rename from tmk_core/protocol/ps2.h rename to drivers/ps2/ps2.h diff --git a/tmk_core/protocol/ps2_busywait.c b/drivers/ps2/ps2_busywait.c similarity index 100% rename from tmk_core/protocol/ps2_busywait.c rename to drivers/ps2/ps2_busywait.c diff --git a/tmk_core/protocol/ps2_interrupt.c b/drivers/ps2/ps2_interrupt.c similarity index 76% rename from tmk_core/protocol/ps2_interrupt.c rename to drivers/ps2/ps2_interrupt.c index 5afc8a82e471..70debd02f7fa 100644 --- a/tmk_core/protocol/ps2_interrupt.c +++ b/drivers/ps2/ps2_interrupt.c @@ -40,11 +40,19 @@ POSSIBILITY OF SUCH DAMAGE. */ #include -#include -#include + +#if defined(__AVR__) +# include +#elif defined(PROTOCOL_CHIBIOS) // TODO: or STM32 ? +// chibiOS headers +# include "ch.h" +# include "hal.h" +#endif + #include "ps2.h" #include "ps2_io.h" #include "print.h" +#include "wait.h" #define WAIT(stat, us, err) \ do { \ @@ -61,12 +69,30 @@ static inline void pbuf_enqueue(uint8_t data); static inline bool pbuf_has_data(void); static inline void pbuf_clear(void); +#if defined(PROTOCOL_CHIBIOS) +void ps2_interrupt_service_routine(void); +void palCallback(void *arg) { ps2_interrupt_service_routine(); } + +# define PS2_INT_INIT() \ + { palSetLineMode(PS2_CLOCK_PIN, PAL_MODE_INPUT); } \ + while (0) +# 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_PIN); } \ + while (0) +#endif // PROTOCOL_CHIBIOS + void ps2_host_init(void) { idle(); PS2_INT_INIT(); PS2_INT_ON(); // POR(150-2000ms) plus BAT(300-500ms) may take 2.5sec([3]p.20) - //_delay_ms(2500); + // wait_ms(2500); } uint8_t ps2_host_send(uint8_t data) { @@ -77,7 +103,7 @@ uint8_t ps2_host_send(uint8_t data) { /* terminate a transmission if we have */ inhibit(); - _delay_us(100); // 100us [4]p.13, [5]p.50 + wait_us(100); // 100us [4]p.13, [5]p.50 /* 'Request to Send' and Start bit */ data_lo(); @@ -86,7 +112,6 @@ uint8_t ps2_host_send(uint8_t data) { /* Data bit[2-9] */ for (uint8_t i = 0; i < 8; i++) { - _delay_us(15); if (data & (1 << i)) { parity = !parity; data_hi(); @@ -98,7 +123,7 @@ uint8_t ps2_host_send(uint8_t data) { } /* Parity bit */ - _delay_us(15); + wait_us(15); if (parity) { data_hi(); } else { @@ -108,7 +133,7 @@ uint8_t ps2_host_send(uint8_t data) { WAIT(clock_lo, 50, 5); /* Stop bit */ - _delay_us(15); + wait_us(15); data_hi(); /* Ack */ @@ -132,7 +157,7 @@ uint8_t ps2_host_recv_response(void) { // Command may take 25ms/20ms at most([5]p.46, [3]p.21) uint8_t retry = 25; while (retry-- && !pbuf_has_data()) { - _delay_ms(1); + wait_ms(1); } return pbuf_dequeue(); } @@ -148,7 +173,7 @@ uint8_t ps2_host_recv(void) { } } -ISR(PS2_INT_VECT) { +void ps2_interrupt_service_routine(void) { static enum { INIT, START, @@ -218,6 +243,10 @@ ISR(PS2_INT_VECT) { return; } +#if defined(__AVR__) +ISR(PS2_INT_VECT) { ps2_interrupt_service_routine(); } +#endif + /* send LED state to keyboard */ void ps2_host_set_led(uint8_t led) { ps2_host_send(0xED); @@ -232,8 +261,13 @@ static uint8_t pbuf[PBUF_SIZE]; static uint8_t pbuf_head = 0; static uint8_t pbuf_tail = 0; static inline void pbuf_enqueue(uint8_t data) { +#if defined(__AVR__) uint8_t sreg = SREG; cli(); +#elif defined(PROTOCOL_CHIBIOS) + chSysLockFromISR(); +#endif + uint8_t next = (pbuf_head + 1) % PBUF_SIZE; if (next != pbuf_tail) { pbuf[pbuf_head] = data; @@ -241,31 +275,66 @@ static inline void pbuf_enqueue(uint8_t data) { } else { print("pbuf: full\n"); } + +#if defined(__AVR__) SREG = sreg; +#elif defined(PROTOCOL_CHIBIOS) + chSysUnlockFromISR(); +#endif } static inline uint8_t pbuf_dequeue(void) { uint8_t val = 0; +#if defined(__AVR__) uint8_t sreg = SREG; cli(); +#elif defined(PROTOCOL_CHIBIOS) + chSysLock(); +#endif + if (pbuf_head != pbuf_tail) { val = pbuf[pbuf_tail]; pbuf_tail = (pbuf_tail + 1) % PBUF_SIZE; } + +#if defined(__AVR__) SREG = sreg; +#elif defined(PROTOCOL_CHIBIOS) + chSysUnlock(); +#endif return val; } static inline bool pbuf_has_data(void) { +#if defined(__AVR__) uint8_t sreg = SREG; cli(); +#elif defined(PROTOCOL_CHIBIOS) + chSysLock(); +#endif + bool has_data = (pbuf_head != pbuf_tail); - SREG = sreg; + +#if defined(__AVR__) + SREG = sreg; +#elif defined(PROTOCOL_CHIBIOS) + chSysUnlock(); +#endif return has_data; } static inline void pbuf_clear(void) { +#if defined(__AVR__) uint8_t sreg = SREG; cli(); +#elif defined(PROTOCOL_CHIBIOS) + chSysLock(); +#endif + pbuf_head = pbuf_tail = 0; - SREG = sreg; + +#if defined(__AVR__) + SREG = sreg; +#elif defined(PROTOCOL_CHIBIOS) + chSysUnlock(); +#endif } diff --git a/tmk_core/protocol/ps2_io.h b/drivers/ps2/ps2_io.h similarity index 100% rename from tmk_core/protocol/ps2_io.h rename to drivers/ps2/ps2_io.h diff --git a/tmk_core/protocol/ps2_mouse.c b/drivers/ps2/ps2_mouse.c similarity index 94% rename from tmk_core/protocol/ps2_mouse.c rename to drivers/ps2/ps2_mouse.c index 5415453a05f0..8a6668b41069 100644 --- a/tmk_core/protocol/ps2_mouse.c +++ b/drivers/ps2/ps2_mouse.c @@ -16,9 +16,9 @@ along with this program. If not, see . */ #include -#include -#include #include "ps2_mouse.h" +#include "wait.h" +#include "gpio.h" #include "host.h" #include "timer.h" #include "print.h" @@ -42,7 +42,7 @@ static inline void ps2_mouse_scroll_button_task(report_mouse_t *mouse_report); void ps2_mouse_init(void) { ps2_host_init(); - _delay_ms(PS2_MOUSE_INIT_DELAY); // wait for powering up + wait_ms(PS2_MOUSE_INIT_DELAY); // wait for powering up PS2_MOUSE_SEND(PS2_MOUSE_RESET, "ps2_mouse_init: sending reset"); @@ -152,8 +152,15 @@ static inline void ps2_mouse_convert_report_to_hid(report_mouse_t *mouse_report) mouse_report->x = X_IS_NEG ? ((!X_IS_OVF && -127 <= mouse_report->x && mouse_report->x <= -1) ? mouse_report->x : -127) : ((!X_IS_OVF && 0 <= mouse_report->x && mouse_report->x <= 127) ? mouse_report->x : 127); mouse_report->y = Y_IS_NEG ? ((!Y_IS_OVF && -127 <= mouse_report->y && mouse_report->y <= -1) ? mouse_report->y : -127) : ((!Y_IS_OVF && 0 <= mouse_report->y && mouse_report->y <= 127) ? mouse_report->y : 127); +#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; + 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 mouse_report->buttons &= PS2_MOUSE_BTN_MASK; +#endif #ifdef PS2_MOUSE_INVERT_X mouse_report->x = -mouse_report->x; @@ -210,7 +217,7 @@ static inline void ps2_mouse_enable_scrolling(void) { PS2_MOUSE_SEND(PS2_MOUSE_SET_SAMPLE_RATE, "Set sample rate"); PS2_MOUSE_SEND(80, "80"); PS2_MOUSE_SEND(PS2_MOUSE_GET_DEVICE_ID, "Finished enabling scroll wheel"); - _delay_ms(20); + wait_ms(20); } #define PRESS_SCROLL_BUTTONS mouse_report->buttons |= (PS2_MOUSE_SCROLL_BTN_MASK) @@ -252,7 +259,7 @@ static inline void ps2_mouse_scroll_button_task(report_mouse_t *mouse_report) { if (scroll_state == SCROLL_BTN && timer_elapsed(scroll_button_time) < PS2_MOUSE_SCROLL_BTN_SEND) { PRESS_SCROLL_BUTTONS; host_mouse_send(mouse_report); - _delay_ms(100); + wait_ms(100); RELEASE_SCROLL_BUTTONS; } #endif diff --git a/tmk_core/protocol/ps2_mouse.h b/drivers/ps2/ps2_mouse.h similarity index 100% rename from tmk_core/protocol/ps2_mouse.h rename to drivers/ps2/ps2_mouse.h diff --git a/drivers/qwiic/micro_oled.c b/drivers/qwiic/micro_oled.c deleted file mode 100644 index 8dfff6968f4a..000000000000 --- 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 - * 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 . - */ -#include "micro_oled.h" -#include "print.h" -#include -#include "util/font5x7.h" -#include "util/font8x16.h" -#include - -#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 6f9106f5819b..000000000000 --- 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 - * 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 . - */ -#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 316d6539cbe2..000000000000 --- a/drivers/qwiic/qwiic.c +++ /dev/null @@ -1,31 +0,0 @@ -/* Copyright 2018 Jack Humbert - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include "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.h b/drivers/qwiic/qwiic.h deleted file mode 100644 index 8c3d1c8d632b..000000000000 --- a/drivers/qwiic/qwiic.h +++ /dev/null @@ -1,28 +0,0 @@ -/* Copyright 2018 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 . - */ -#pragma once - -#include "i2c_master.h" - -#ifdef QWIIC_JOYSTIIC_ENABLE -# include "joystiic.h" -#endif -#ifdef QWIIC_MICRO_OLED_ENABLE -# include "micro_oled.h" -#endif - -void qwiic_init(void); -void qwiic_task(void); diff --git a/drivers/qwiic/qwiic.mk b/drivers/qwiic/qwiic.mk deleted file mode 100644 index 164bd721081c..000000000000 --- 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 a641945aaed4..000000000000 --- 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 . - -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 4d3c23786620..000000000000 --- 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 . - -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/sensors/adns5050.c b/drivers/sensors/adns5050.c new file mode 100644 index 000000000000..c23d24d5af5e --- /dev/null +++ b/drivers/sensors/adns5050.c @@ -0,0 +1,209 @@ +/* Copyright 2021 Colin Lam (Ploopy Corporation) + * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * Copyright 2019 Sunjun Kim + * Copyright 2019 Hiroyuki Okada + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "adns5050.h" +#include "wait.h" +#include "debug.h" +#include "gpio.h" + +// Registers +// clang-format off +#define REG_PRODUCT_ID 0x00 +#define REG_REVISION_ID 0x01 +#define REG_MOTION 0x02 +#define REG_DELTA_X 0x03 +#define REG_DELTA_Y 0x04 +#define REG_SQUAL 0x05 +#define REG_SHUTTER_UPPER 0x06 +#define REG_SHUTTER_LOWER 0x07 +#define REG_MAXIMUM_PIXEL 0x08 +#define REG_PIXEL_SUM 0x09 +#define REG_MINIMUM_PIXEL 0x0a +#define REG_PIXEL_GRAB 0x0b +#define REG_MOUSE_CONTROL 0x0d +#define REG_MOUSE_CONTROL2 0x19 +#define REG_LED_DC_MODE 0x22 +#define REG_CHIP_RESET 0x3a +#define REG_PRODUCT_ID2 0x3e +#define REG_INV_REV_ID 0x3f +#define REG_MOTION_BURST 0x63 +// clang-format on + +void adns5050_init(void) { + // Initialize the ADNS serial pins. + setPinOutput(ADNS5050_SCLK_PIN); + setPinOutput(ADNS5050_SDIO_PIN); + setPinOutput(ADNS5050_CS_PIN); + + // reboot the adns. + // if the adns hasn't initialized yet, this is harmless. + adns5050_write_reg(REG_CHIP_RESET, 0x5a); + + // wait maximum time before adns is ready. + // this ensures that the adns is actuall ready after reset. + wait_ms(55); + + // read a burst from the adns and then discard it. + // gets the adns ready for write commands + // (for example, setting the dpi). + adns5050_read_burst(); +} + +// Perform a synchronization with the ADNS. +// Just as with the serial protocol, this is used by the slave to send a +// synchronization signal to the master. +void adns5050_sync(void) { + writePinLow(ADNS5050_CS_PIN); + wait_us(1); + writePinHigh(ADNS5050_CS_PIN); +} + +void adns5050_cs_select(void) { writePinLow(ADNS5050_CS_PIN); } + +void adns5050_cs_deselect(void) { writePinHigh(ADNS5050_CS_PIN); } + +uint8_t adns5050_serial_read(void) { + setPinInput(ADNS5050_SDIO_PIN); + uint8_t byte = 0; + + for (uint8_t i = 0; i < 8; ++i) { + writePinLow(ADNS5050_SCLK_PIN); + wait_us(1); + + byte = (byte << 1) | readPin(ADNS5050_SDIO_PIN); + + writePinHigh(ADNS5050_SCLK_PIN); + wait_us(1); + } + + return byte; +} + +void adns5050_serial_write(uint8_t data) { + setPinOutput(ADNS5050_SDIO_PIN); + + for (int8_t b = 7; b >= 0; b--) { + writePinLow(ADNS5050_SCLK_PIN); + + if (data & (1 << b)) + writePinHigh(ADNS5050_SDIO_PIN); + else + writePinLow(ADNS5050_SDIO_PIN); + + wait_us(2); + + writePinHigh(ADNS5050_SCLK_PIN); + } + + // tSWR. See page 15 of the ADNS spec sheet. + // Technically, this is only necessary if the next operation is an SDIO + // read. This is not guaranteed to be the case, but we're being lazy. + wait_us(4); + + // Note that tSWW is never necessary. All write operations require at + // least 32us, which exceeds tSWW, so there's never a need to wait for it. +} + +// Read a byte of data from a register on the ADNS. +// Don't forget to use the register map (as defined in the header file). +uint8_t adns5050_read_reg(uint8_t reg_addr) { + adns5050_cs_select(); + + adns5050_serial_write(reg_addr); + + // We don't need a minimum tSRAD here. That's because a 4ms wait time is + // already included in adns5050_serial_write(), so we're good. + // See page 10 and 15 of the ADNS spec sheet. + // wait_us(4); + + uint8_t byte = adns5050_serial_read(); + + // tSRW & tSRR. See page 15 of the ADNS spec sheet. + // Technically, this is only necessary if the next operation is an SDIO + // read or write. This is not guaranteed to be the case. + // Honestly, this wait could probably be removed. + wait_us(1); + + adns5050_cs_deselect(); + + return byte; +} + +void adns5050_write_reg(uint8_t reg_addr, uint8_t data) { + adns5050_cs_select(); + adns5050_serial_write(0b10000000 | reg_addr); + adns5050_serial_write(data); + adns5050_cs_deselect(); +} + +report_adns5050_t adns5050_read_burst(void) { + adns5050_cs_select(); + + report_adns5050_t data; + data.dx = 0; + data.dy = 0; + + adns5050_serial_write(REG_MOTION_BURST); + + // We don't need a minimum tSRAD here. That's because a 4ms wait time is + // already included in adns5050_serial_write(), so we're good. + // See page 10 and 15 of the ADNS spec sheet. + // wait_us(4); + + uint8_t x = adns5050_serial_read(); + uint8_t y = adns5050_serial_read(); + + // Burst mode returns a bunch of other shit that we don't really need. + // Setting CS to high ends burst mode early. + adns5050_cs_deselect(); + + data.dx = convert_twoscomp(x); + data.dy = convert_twoscomp(y); + + return data; +} + +// Convert a two's complement byte from an unsigned data type into a signed +// data type. +int8_t convert_twoscomp(uint8_t data) { + if ((data & 0x80) == 0x80) + return -128 + (data & 0x7F); + else + return data; +} + +// Don't forget to use the definitions for CPI in the header file. +void adns5050_set_cpi(uint16_t cpi) { + uint8_t cpival = constrain((cpi / 125), 0x1, 0xD); // limits to 0--119 + + adns5050_write_reg(REG_MOUSE_CONTROL2, 0b10000 | cpival); +} + +uint16_t adns5050_get_cpi(void) { + uint8_t cpival = adns5050_read_reg(REG_MOUSE_CONTROL2); + return (uint16_t)((cpival & 0b10000) * 125); +} + +bool adns5050_check_signature(void) { + uint8_t pid = adns5050_read_reg(REG_PRODUCT_ID); + uint8_t rid = adns5050_read_reg(REG_REVISION_ID); + uint8_t pid2 = adns5050_read_reg(REG_PRODUCT_ID2); + + return (pid == 0x12 && rid == 0x01 && pid2 == 0x26); +} diff --git a/drivers/sensors/adns5050.h b/drivers/sensors/adns5050.h new file mode 100644 index 000000000000..e45a25019648 --- /dev/null +++ b/drivers/sensors/adns5050.h @@ -0,0 +1,72 @@ +/* Copyright 2021 Colin Lam (Ploopy Corporation) + * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * Copyright 2019 Sunjun Kim + * Copyright 2019 Hiroyuki Okada + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include + +// CPI values +// clang-format off +#define CPI125 0x11 +#define CPI250 0x12 +#define CPI375 0x13 +#define CPI500 0x14 +#define CPI625 0x15 +#define CPI750 0x16 +#define CPI875 0x17 +#define CPI1000 0x18 +#define CPI1125 0x19 +#define CPI1250 0x1a +#define CPI1375 0x1b +// clang-format on + +#define constrain(amt, low, high) ((amt) < (low) ? (low) : ((amt) > (high) ? (high) : (amt))) + +// Definitions for the ADNS serial line. +#ifndef ADNS5050_SCLK_PIN +# error "No clock pin defined -- missing ADNS5050_SCLK_PIN" +#endif + +#ifndef ADNS5050_SDIO_PIN +# error "No data pin defined -- missing ADNS5050_SDIO_PIN" +#endif + +#ifndef ADNS5050_CS_PIN +# error "No chip select pin defined -- missing ADNS5050_CS_PIN" +#endif + +typedef struct { + int8_t dx; + int8_t dy; +} report_adns5050_t; + +// A bunch of functions to implement the ADNS5050-specific serial protocol. +// Note that the "serial.h" driver is insufficient, because it does not +// manually manipulate a serial clock signal. +void adns5050_init(void); +void adns5050_sync(void); +uint8_t adns5050_serial_read(void); +void adns5050_serial_write(uint8_t data); +uint8_t adns5050_read_reg(uint8_t reg_addr); +void adns5050_write_reg(uint8_t reg_addr, uint8_t data); +report_adns5050_t adns5050_read_burst(void); +void adns5050_set_cpi(uint16_t cpi); +uint16_t adns5050_get_cpi(void); +int8_t convert_twoscomp(uint8_t data); +bool adns5050_check_signature(void); diff --git a/drivers/sensors/adns9800.c b/drivers/sensors/adns9800.c new file mode 100644 index 000000000000..c52f9918045d --- /dev/null +++ b/drivers/sensors/adns9800.c @@ -0,0 +1,218 @@ +/* Copyright 2020 Alexander Tulloh + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "spi_master.h" +#include "adns9800_srom_A6.h" +#include "adns9800.h" +#include "wait.h" + +// registers +// clang-format off +#define REG_Product_ID 0x00 +#define REG_Revision_ID 0x01 +#define REG_Motion 0x02 +#define REG_Delta_X_L 0x03 +#define REG_Delta_X_H 0x04 +#define REG_Delta_Y_L 0x05 +#define REG_Delta_Y_H 0x06 +#define REG_SQUAL 0x07 +#define REG_Pixel_Sum 0x08 +#define REG_Maximum_Pixel 0x09 +#define REG_Minimum_Pixel 0x0a +#define REG_Shutter_Lower 0x0b +#define REG_Shutter_Upper 0x0c +#define REG_Frame_Period_Lower 0x0d +#define REG_Frame_Period_Upper 0x0e +#define REG_Configuration_I 0x0f +#define REG_Configuration_II 0x10 +#define REG_Frame_Capture 0x12 +#define REG_SROM_Enable 0x13 +#define REG_Run_Downshift 0x14 +#define REG_Rest1_Rate 0x15 +#define REG_Rest1_Downshift 0x16 +#define REG_Rest2_Rate 0x17 +#define REG_Rest2_Downshift 0x18 +#define REG_Rest3_Rate 0x19 +#define REG_Frame_Period_Max_Bound_Lower 0x1a +#define REG_Frame_Period_Max_Bound_Upper 0x1b +#define REG_Frame_Period_Min_Bound_Lower 0x1c +#define REG_Frame_Period_Min_Bound_Upper 0x1d +#define REG_Shutter_Max_Bound_Lower 0x1e +#define REG_Shutter_Max_Bound_Upper 0x1f +#define REG_LASER_CTRL0 0x20 +#define REG_Observation 0x24 +#define REG_Data_Out_Lower 0x25 +#define REG_Data_Out_Upper 0x26 +#define REG_SROM_ID 0x2a +#define REG_Lift_Detection_Thr 0x2e +#define REG_Configuration_V 0x2f +#define REG_Configuration_IV 0x39 +#define REG_Power_Up_Reset 0x3a +#define REG_Shutdown 0x3b +#define REG_Inverse_Product_ID 0x3f +#define REG_Motion_Burst 0x50 +#define REG_SROM_Load_Burst 0x62 +#define REG_Pixel_Burst 0x64 + +#define MIN_CPI 200 +#define MAX_CPI 8200 +#define CPI_STEP 200 +#define CLAMP_CPI(value) value MAX_CPI ? MAX_CPI : value +#define US_BETWEEN_WRITES 120 +#define US_BETWEEN_READS 20 +#define US_BEFORE_MOTION 100 +#define MSB1 0x80 +// clang-format on + +void adns9800_spi_start(void) { spi_start(ADNS9800_CS_PIN, false, ADNS9800_SPI_MODE, ADNS9800_SPI_DIVISOR); } + +void adns9800_write(uint8_t reg_addr, uint8_t data) { + adns9800_spi_start(); + spi_write(reg_addr | MSB1); + spi_write(data); + spi_stop(); + wait_us(US_BETWEEN_WRITES); +} + +uint8_t adns9800_read(uint8_t reg_addr) { + adns9800_spi_start(); + spi_write(reg_addr & 0x7f); + uint8_t data = spi_read(); + spi_stop(); + wait_us(US_BETWEEN_READS); + + return data; +} + +void adns9800_init() { + setPinOutput(ADNS9800_CS_PIN); + + spi_init(); + + // reboot + adns9800_write(REG_Power_Up_Reset, 0x5a); + wait_ms(50); + + // read registers and discard + adns9800_read(REG_Motion); + adns9800_read(REG_Delta_X_L); + adns9800_read(REG_Delta_X_H); + adns9800_read(REG_Delta_Y_L); + adns9800_read(REG_Delta_Y_H); + + // upload firmware + + // 3k firmware mode + adns9800_write(REG_Configuration_IV, 0x02); + + // enable initialisation + adns9800_write(REG_SROM_Enable, 0x1d); + + // wait a frame + wait_ms(10); + + // start SROM download + adns9800_write(REG_SROM_Enable, 0x18); + + // write the SROM file + + adns9800_spi_start(); + + spi_write(REG_SROM_Load_Burst | 0x80); + wait_us(15); + + // send all bytes of the firmware + unsigned char c; + for (int i = 0; i < FIRMWARE_LENGTH; i++) { + c = (unsigned char)pgm_read_byte(adns9800_firmware_data + i); + spi_write(c); + wait_us(15); + } + + spi_stop(); + + wait_ms(10); + + // enable laser + uint8_t laser_ctrl0 = adns9800_read(REG_LASER_CTRL0); + adns9800_write(REG_LASER_CTRL0, laser_ctrl0 & 0xf0); + + adns9800_set_cpi(ADNS9800_CPI); +} + +config_adns9800_t adns9800_get_config(void) { + uint8_t config_1 = adns9800_read(REG_Configuration_I); + return (config_adns9800_t){(config_1 & 0xFF) * CPI_STEP}; +} + +void adns9800_set_config(config_adns9800_t config) { + uint8_t config_1 = (CLAMP_CPI(config.cpi) / CPI_STEP) & 0xFF; + adns9800_write(REG_Configuration_I, config_1); +} + +uint16_t adns9800_get_cpi(void) { + uint8_t config_1 = adns9800_read(REG_Configuration_I); + return (uint16_t){(config_1 & 0xFF) * CPI_STEP}; +} + +void adns9800_set_cpi(uint16_t cpi) { + uint8_t config_1 = (CLAMP_CPI(cpi) / CPI_STEP) & 0xFF; + adns9800_write(REG_Configuration_I, config_1); +} + +static int16_t convertDeltaToInt(uint8_t high, uint8_t low) { + // join bytes into twos compliment + uint16_t twos_comp = (high << 8) | low; + + // convert twos comp to int + if (twos_comp & 0x8000) return -1 * (~twos_comp + 1); + + return twos_comp; +} + +report_adns9800_t adns9800_get_report(void) { + report_adns9800_t report = {0, 0}; + + adns9800_spi_start(); + + // start burst mode + spi_write(REG_Motion_Burst & 0x7f); + + wait_us(US_BEFORE_MOTION); + + uint8_t motion = spi_read(); + + if (motion & 0x80) { + // clear observation register + spi_read(); + + // delta registers + uint8_t delta_x_l = spi_read(); + uint8_t delta_x_h = spi_read(); + uint8_t delta_y_l = spi_read(); + uint8_t delta_y_h = spi_read(); + + report.x = convertDeltaToInt(delta_x_h, delta_x_l); + report.y = convertDeltaToInt(delta_y_h, delta_y_l); + } + + // clear residual motion + spi_write(REG_Motion & 0x7f); + + spi_stop(); + + return report; +} diff --git a/drivers/sensors/adns9800.h b/drivers/sensors/adns9800.h new file mode 100644 index 000000000000..e75a869c03d4 --- /dev/null +++ b/drivers/sensors/adns9800.h @@ -0,0 +1,65 @@ +/* Copyright 2020 Alexander Tulloh + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include + +#ifndef ADNS9800_CPI +# define ADNS9800_CPI 1600 +#endif + +#ifndef ADNS9800_CLOCK_SPEED +# define ADNS9800_CLOCK_SPEED 2000000 +#endif + +#ifndef ADNS9800_SPI_LSBFIRST +# define ADNS9800_SPI_LSBFIRST false +#endif + +#ifndef ADNS9800_SPI_MODE +# define ADNS9800_SPI_MODE 3 +#endif + +#ifndef ADNS9800_SPI_DIVISOR +# ifdef __AVR__ +# define ADNS9800_SPI_DIVISOR (F_CPU / ADNS9800_CLOCK_SPEED) +# else +# define ADNS9800_SPI_DIVISOR 64 +# endif +#endif + +#ifndef ADNS9800_CS_PIN +# error "No chip select pin defined -- missing ADNS9800_CS_PIN" +#endif + +typedef struct { + /* 200 - 8200 CPI supported */ + uint16_t cpi; +} config_adns9800_t; + +typedef struct { + int16_t x; + int16_t y; +} report_adns9800_t; + +void adns9800_init(void); +config_adns9800_t adns9800_get_config(void); +void adns9800_set_config(config_adns9800_t); +uint16_t adns9800_get_cpi(void); +void adns9800_set_cpi(uint16_t cpi); +/* Reads and clears the current delta values on the ADNS sensor */ +report_adns9800_t adns9800_get_report(void); diff --git a/drivers/sensors/adns9800_srom_A6.h b/drivers/sensors/adns9800_srom_A6.h new file mode 100644 index 000000000000..d86ecbbd9ebc --- /dev/null +++ b/drivers/sensors/adns9800_srom_A6.h @@ -0,0 +1,202 @@ +#pragma once + +#include "progmem.h" + +#define FIRMWARE_LENGTH 3070 + +// clang-format off + +const uint8_t adns9800_firmware_data[FIRMWARE_LENGTH] PROGMEM = { + 0x03, 0xA6, 0x68, 0x1E, 0x7D, 0x10, 0x7E, 0x7E, 0x5F, 0x1C, 0xB8, 0xF2, 0x47, 0x0C, 0x7B, 0x74, + 0x4B, 0x14, 0x8B, 0x75, 0x66, 0x51, 0x0B, 0x8C, 0x76, 0x74, 0x4B, 0x14, 0xAA, 0xD6, 0x0F, 0x9C, + 0xBA, 0xF6, 0x6E, 0x3F, 0xDD, 0x38, 0xD5, 0x02, 0x80, 0x9B, 0x82, 0x6D, 0x58, 0x13, 0xA4, 0xAB, + 0xB5, 0xC9, 0x10, 0xA2, 0xC6, 0x0A, 0x7F, 0x5D, 0x19, 0x91, 0xA0, 0xA3, 0xCE, 0xEB, 0x3E, 0xC9, + 0xF1, 0x60, 0x42, 0xE7, 0x4C, 0xFB, 0x74, 0x6A, 0x56, 0x2E, 0xBF, 0xDD, 0x38, 0xD3, 0x05, 0x88, + 0x92, 0xA6, 0xCE, 0xFF, 0x5D, 0x38, 0xD1, 0xCF, 0xEF, 0x58, 0xCB, 0x65, 0x48, 0xF0, 0x35, 0x85, + 0xA9, 0xB2, 0x8F, 0x5E, 0xF3, 0x80, 0x94, 0x97, 0x7E, 0x75, 0x97, 0x87, 0x73, 0x13, 0xB0, 0x8A, + 0x69, 0xD4, 0x0A, 0xDE, 0xC1, 0x79, 0x59, 0x36, 0xDB, 0x9D, 0xD6, 0xB8, 0x15, 0x6F, 0xCE, 0x3C, + 0x72, 0x32, 0x45, 0x88, 0xDF, 0x6C, 0xA5, 0x6D, 0xE8, 0x76, 0x96, 0x14, 0x74, 0x20, 0xDC, 0xF4, + 0xFA, 0x37, 0x6A, 0x27, 0x32, 0xE3, 0x29, 0xBF, 0xC4, 0xC7, 0x06, 0x9D, 0x58, 0xE7, 0x87, 0x7C, + 0x2E, 0x9F, 0x6E, 0x49, 0x07, 0x5D, 0x23, 0x64, 0x54, 0x83, 0x6E, 0xCB, 0xB7, 0x77, 0xF7, 0x2B, + 0x6E, 0x0F, 0x2E, 0x66, 0x12, 0x60, 0x55, 0x65, 0xFC, 0x43, 0xB3, 0x58, 0x73, 0x5B, 0xE8, 0x67, + 0x04, 0x43, 0x02, 0xDE, 0xB3, 0x89, 0xA0, 0x6D, 0x3A, 0x27, 0x79, 0x64, 0x5B, 0x0C, 0x16, 0x9E, + 0x66, 0xB1, 0x8B, 0x87, 0x0C, 0x5D, 0xF2, 0xB6, 0x3D, 0x71, 0xDF, 0x42, 0x03, 0x8A, 0x06, 0x8D, + 0xEF, 0x1D, 0xA8, 0x96, 0x5C, 0xED, 0x31, 0x61, 0x5C, 0xA1, 0x34, 0xF6, 0x8C, 0x08, 0x60, 0x33, + 0x07, 0x00, 0x3E, 0x79, 0x95, 0x1B, 0x43, 0x7F, 0xFE, 0xB6, 0xA6, 0xD4, 0x9D, 0x76, 0x72, 0xBF, + 0xAD, 0xC0, 0x15, 0xE8, 0x37, 0x31, 0xA3, 0x72, 0x63, 0x52, 0x1D, 0x1C, 0x5D, 0x51, 0x1B, 0xE1, + 0xA9, 0xED, 0x60, 0x32, 0x3E, 0xA9, 0x50, 0x28, 0x53, 0x06, 0x59, 0xE2, 0xFC, 0xE7, 0x02, 0x64, + 0x39, 0x21, 0x56, 0x4A, 0xA5, 0x40, 0x80, 0x81, 0xD5, 0x5A, 0x60, 0x7B, 0x68, 0x84, 0xF1, 0xE0, + 0xB1, 0xB6, 0x5B, 0xDF, 0xA8, 0x1D, 0x6D, 0x65, 0x20, 0xC0, 0xA2, 0xB9, 0xD9, 0xBB, 0x00, 0xA6, + 0xDB, 0x8B, 0x01, 0x53, 0x91, 0xFE, 0xC4, 0x51, 0x85, 0xB0, 0x96, 0x7F, 0xFD, 0x51, 0xDD, 0x14, + 0x03, 0x67, 0x2E, 0x75, 0x1C, 0x76, 0xD3, 0x6E, 0xDD, 0x99, 0x55, 0x76, 0xE5, 0xAB, 0x23, 0xFC, + 0x4A, 0xD5, 0xC6, 0xE8, 0x2E, 0xCA, 0x8A, 0xB3, 0xF6, 0x8C, 0x6C, 0xB0, 0xE9, 0xF2, 0xE7, 0x9E, + 0x69, 0x41, 0xED, 0xF1, 0x6D, 0xD2, 0x86, 0xD8, 0x7E, 0xCB, 0x5D, 0x47, 0x6C, 0x85, 0x6A, 0x23, + 0xED, 0x20, 0x40, 0x93, 0xB4, 0x20, 0xC7, 0xA5, 0xC9, 0xAF, 0x03, 0x15, 0xAC, 0x19, 0xE5, 0x2A, + 0x36, 0xDF, 0x6D, 0xC5, 0x8C, 0x80, 0x07, 0xCE, 0x92, 0x0C, 0xD8, 0x06, 0x62, 0x0F, 0xDD, 0x48, + 0x46, 0x1A, 0x53, 0xC7, 0x8A, 0x8C, 0x5D, 0x5D, 0xB4, 0xA1, 0x02, 0xD3, 0xA9, 0xB8, 0xF3, 0x94, + 0x8F, 0x3F, 0xE5, 0x54, 0xD4, 0x11, 0x65, 0xB2, 0x5E, 0x09, 0x0B, 0x81, 0xE3, 0x75, 0xA7, 0x89, + 0x81, 0x39, 0x6C, 0x46, 0xF6, 0x06, 0x9F, 0x27, 0x3B, 0xB6, 0x2D, 0x5F, 0x1D, 0x4B, 0xD4, 0x7B, + 0x1D, 0x61, 0x74, 0x89, 0xE4, 0xE3, 0xBD, 0x98, 0x1B, 0xC4, 0x51, 0x3B, 0xA4, 0xFA, 0xE0, 0x92, + 0xF7, 0xBE, 0xF2, 0x4D, 0xBB, 0xFF, 0xAD, 0x4F, 0x6D, 0x68, 0xC2, 0x79, 0x40, 0xAA, 0x9B, 0x8F, + 0x0C, 0x32, 0x4B, 0x5F, 0x3E, 0xAB, 0x59, 0x98, 0xB3, 0xF5, 0x1D, 0xAC, 0x5E, 0xBC, 0x78, 0xD3, + 0x01, 0x6C, 0x64, 0x15, 0x2F, 0xD8, 0x71, 0xA6, 0x2D, 0x45, 0xE1, 0x22, 0x42, 0xE4, 0x4E, 0x04, + 0x3C, 0x7D, 0xF4, 0x40, 0x21, 0xB4, 0x67, 0x05, 0xA8, 0xE2, 0xF3, 0x72, 0x87, 0x4C, 0x7D, 0xD9, + 0x1B, 0x65, 0x97, 0xF3, 0xC2, 0xE3, 0xE4, 0xC8, 0xD2, 0xDE, 0xF6, 0xEF, 0xDC, 0xBB, 0x44, 0x08, + 0x5E, 0xE2, 0x45, 0x27, 0x01, 0xB0, 0xF6, 0x43, 0xE7, 0x3A, 0xF6, 0xDC, 0x9D, 0xED, 0xF3, 0xC5, + 0x0C, 0xB8, 0x9C, 0x98, 0x3A, 0xD8, 0x36, 0xEE, 0x96, 0x72, 0x67, 0xE7, 0x81, 0x91, 0xD5, 0x05, + 0x0A, 0xE0, 0x82, 0xD5, 0x8F, 0xE8, 0xF9, 0xB0, 0xC9, 0xCF, 0x93, 0xE7, 0x04, 0xC5, 0xBC, 0x2B, + 0x43, 0x56, 0x7E, 0xE8, 0x67, 0x7C, 0xE5, 0xFB, 0x49, 0xAD, 0x5E, 0x9F, 0x25, 0x13, 0xDE, 0x6E, + 0x6E, 0xE9, 0xF1, 0xEC, 0x87, 0x0B, 0x59, 0x81, 0x76, 0x84, 0x76, 0xB3, 0x24, 0xAF, 0x30, 0xFD, + 0x27, 0x8B, 0xAB, 0xD8, 0x00, 0x8B, 0x9B, 0x0C, 0xD2, 0xB2, 0x4E, 0x5E, 0x9D, 0x1D, 0x96, 0x01, + 0x00, 0x67, 0xC1, 0x5F, 0x02, 0x20, 0xFD, 0x45, 0x6A, 0x01, 0x60, 0x58, 0x45, 0xCA, 0x47, 0x21, + 0x90, 0x5A, 0xC4, 0x43, 0x26, 0x1A, 0xD7, 0xA5, 0x4A, 0xB2, 0x5D, 0x2B, 0x35, 0x49, 0xFB, 0xA5, + 0x17, 0x92, 0x21, 0x1E, 0x93, 0x96, 0x67, 0xA2, 0x7E, 0x36, 0x7A, 0xDE, 0x5F, 0xBE, 0x7A, 0x58, + 0x9D, 0xF8, 0x78, 0xA3, 0xFA, 0xC8, 0xD5, 0x17, 0xF0, 0x21, 0x97, 0x8C, 0x80, 0xB5, 0x4B, 0x3B, + 0xBD, 0xBB, 0x41, 0x21, 0xA8, 0x50, 0x67, 0xF7, 0xE7, 0x19, 0x80, 0x10, 0x8E, 0xCE, 0x04, 0x18, + 0x3F, 0x51, 0x6B, 0x77, 0xD8, 0x9E, 0x16, 0xAF, 0xEC, 0xEF, 0x48, 0x16, 0x4D, 0x9E, 0x85, 0x38, + 0x18, 0x3E, 0xD4, 0x28, 0x87, 0x60, 0x2A, 0xF6, 0x7F, 0x09, 0x86, 0x6F, 0x9C, 0x3C, 0x3A, 0xFF, + 0xAB, 0xD0, 0x61, 0xA2, 0x97, 0x0D, 0x71, 0x94, 0x7E, 0xFD, 0xB9, 0x80, 0x02, 0x89, 0x6A, 0xB3, + 0x84, 0x6C, 0x2A, 0x77, 0x62, 0xBE, 0x0B, 0xF4, 0xAF, 0xAC, 0x7B, 0x7C, 0x8E, 0xCA, 0x01, 0xBA, + 0x71, 0x78, 0x94, 0xFD, 0xB5, 0x39, 0xA4, 0x4D, 0x2F, 0x78, 0xCF, 0xCA, 0x92, 0x0C, 0x1A, 0x99, + 0x48, 0x4C, 0x11, 0x96, 0xB5, 0x4E, 0x41, 0x28, 0xE4, 0xA6, 0xFE, 0x4B, 0x72, 0x91, 0xE7, 0xD4, + 0xDD, 0x9F, 0x12, 0xE6, 0x29, 0x38, 0xCE, 0x45, 0xAE, 0x02, 0xB8, 0x24, 0xAE, 0xBD, 0xE9, 0x66, + 0x08, 0x62, 0xA2, 0x2C, 0x2B, 0x00, 0xE2, 0x23, 0xD9, 0xC4, 0x48, 0xE4, 0xD3, 0xAC, 0xBB, 0x34, + 0xC7, 0xF0, 0xE3, 0x4F, 0xB9, 0x30, 0xEA, 0xA2, 0x12, 0xF1, 0x30, 0x2C, 0x36, 0xDE, 0x48, 0xF2, + 0xB0, 0x4C, 0x43, 0x3F, 0x2E, 0x58, 0xE4, 0x20, 0xE3, 0x58, 0xCD, 0x31, 0x22, 0xF0, 0xA2, 0x2A, + 0xE6, 0x19, 0x90, 0x55, 0x86, 0xF6, 0x55, 0x79, 0xD1, 0xD7, 0x46, 0x2F, 0xC0, 0xDC, 0x99, 0xE8, + 0xF3, 0x6A, 0xDF, 0x7F, 0xEB, 0x24, 0x4A, 0x1E, 0x5A, 0x75, 0xDE, 0x2F, 0x5C, 0x19, 0x61, 0x03, + 0x53, 0x54, 0x6A, 0x3B, 0x18, 0x70, 0xB6, 0x4F, 0xF1, 0x9C, 0x0A, 0x59, 0x9D, 0x19, 0x92, 0x65, + 0x8C, 0x83, 0x14, 0x2D, 0x44, 0x8A, 0x75, 0xA9, 0xF5, 0x90, 0xD2, 0x66, 0x4E, 0xFA, 0x69, 0x0F, + 0x5B, 0x0B, 0x98, 0x65, 0xC8, 0x11, 0x42, 0x59, 0x7F, 0xDD, 0x1B, 0x75, 0x17, 0x31, 0x4C, 0x75, + 0x58, 0xEB, 0x58, 0x63, 0x7D, 0xF2, 0xA6, 0xC2, 0x6E, 0xB7, 0x3F, 0x3E, 0x5E, 0x47, 0xAD, 0xB7, + 0x04, 0xE8, 0x05, 0xF8, 0xB2, 0xCF, 0x19, 0xF3, 0xD2, 0x85, 0xFE, 0x3E, 0x3E, 0xB1, 0x62, 0x08, + 0x2C, 0x10, 0x07, 0x0D, 0x73, 0x90, 0x17, 0xFA, 0x9B, 0x56, 0x02, 0x75, 0xF9, 0x51, 0xE0, 0xE9, + 0x1A, 0x7B, 0x9F, 0xB3, 0xF3, 0x98, 0xB8, 0x1C, 0x9C, 0xE1, 0xD5, 0x35, 0xAE, 0xC8, 0x60, 0x48, + 0x11, 0x09, 0x94, 0x6B, 0xD0, 0x8B, 0x15, 0xBC, 0x05, 0x68, 0xD3, 0x54, 0x8A, 0x51, 0x39, 0x5C, + 0x42, 0x76, 0xCE, 0xD8, 0xAD, 0x89, 0x30, 0xC9, 0x05, 0x1C, 0xCC, 0x94, 0x3F, 0x0F, 0x90, 0x6F, + 0x72, 0x2D, 0x85, 0x64, 0x9A, 0xB9, 0x23, 0xF9, 0x0B, 0xC3, 0x7C, 0x39, 0x0F, 0x97, 0x07, 0x97, + 0xDA, 0x58, 0x48, 0x33, 0x05, 0x23, 0xB8, 0x82, 0xE8, 0xD3, 0x53, 0x89, 0xAF, 0x33, 0x80, 0x22, + 0x84, 0x0C, 0x95, 0x5C, 0x67, 0xB8, 0x77, 0x0C, 0x5C, 0xA2, 0x5F, 0x3D, 0x58, 0x0F, 0x27, 0xF3, + 0x2F, 0xAE, 0x48, 0xBD, 0x0B, 0x6F, 0x54, 0xFB, 0x67, 0x4C, 0xEA, 0x32, 0x27, 0xF1, 0xFA, 0xE2, + 0xB0, 0xEC, 0x0B, 0x15, 0xB4, 0x70, 0xF6, 0x5C, 0xDD, 0x71, 0x60, 0xC3, 0xC1, 0xA8, 0x32, 0x65, + 0xAC, 0x7A, 0x77, 0x41, 0xE5, 0xA9, 0x6B, 0x11, 0x81, 0xFA, 0x34, 0x8D, 0xFB, 0xC1, 0x80, 0x6E, + 0xC4, 0x60, 0x30, 0x07, 0xD4, 0x8B, 0x67, 0xBD, 0xAA, 0x8C, 0x9C, 0x64, 0xAC, 0xDB, 0x0B, 0x24, + 0x8B, 0x63, 0x6F, 0xE6, 0xBC, 0xE7, 0x33, 0xA4, 0x4A, 0x4C, 0xA7, 0x9F, 0x43, 0x53, 0xD2, 0xBB, + 0x8F, 0x43, 0xC7, 0x3D, 0x78, 0x68, 0x3F, 0xA5, 0x3D, 0xCA, 0x69, 0x84, 0xA6, 0x97, 0x2D, 0xC0, + 0x7D, 0x31, 0x34, 0x55, 0x1D, 0x07, 0xB1, 0x5F, 0x40, 0x5C, 0x93, 0xB0, 0xBC, 0x7C, 0xB0, 0xBC, + 0xE7, 0x12, 0xEE, 0x6B, 0x2B, 0xD3, 0x4D, 0x67, 0x70, 0x3A, 0x9A, 0xF2, 0x3C, 0x7C, 0x81, 0xFA, + 0xD7, 0xD9, 0x90, 0x91, 0x81, 0xB8, 0xB1, 0xF3, 0x48, 0x6A, 0x26, 0x4F, 0x0C, 0xCE, 0xB0, 0x9E, + 0xFD, 0x4A, 0x3A, 0xAF, 0xAC, 0x5B, 0x3F, 0xBF, 0x44, 0x5A, 0xA3, 0x19, 0x1E, 0x4B, 0xE7, 0x36, + 0x6A, 0xD7, 0x20, 0xAE, 0xD7, 0x7D, 0x3B, 0xE7, 0xFF, 0x3A, 0x86, 0x2E, 0xD0, 0x4A, 0x3E, 0xAF, + 0x9F, 0x8E, 0x01, 0xBF, 0xF8, 0x4F, 0xC1, 0xE8, 0x6F, 0x74, 0xE1, 0x45, 0xD3, 0xF7, 0x04, 0x6A, + 0x4B, 0x9D, 0xEC, 0x33, 0x27, 0x76, 0xD7, 0xC5, 0xE1, 0xB0, 0x3B, 0x0E, 0x23, 0xEC, 0xF0, 0x86, + 0xD2, 0x1A, 0xBF, 0x3D, 0x04, 0x62, 0xB3, 0x6C, 0xB2, 0xEB, 0x17, 0x05, 0xA6, 0x0A, 0x8A, 0x7E, + 0x83, 0x1C, 0xB6, 0x37, 0x09, 0xC6, 0x0B, 0x70, 0x3C, 0xB5, 0x93, 0x81, 0xD8, 0x93, 0xA0, 0x5F, + 0x1E, 0x08, 0xE2, 0xC6, 0xE5, 0xC9, 0x72, 0xF1, 0xF1, 0xC1, 0xED, 0xD5, 0x58, 0x93, 0x83, 0xF8, + 0x65, 0x67, 0x2E, 0x0D, 0xA9, 0xF1, 0x64, 0x12, 0xE6, 0x4C, 0xEA, 0x15, 0x3F, 0x8C, 0x1A, 0xB6, + 0xBF, 0xF6, 0xB9, 0x52, 0x35, 0x09, 0xB0, 0xE6, 0xF7, 0xCD, 0xF1, 0xA5, 0xAA, 0x81, 0xD1, 0x81, + 0x6F, 0xB4, 0xA9, 0x66, 0x1F, 0xFC, 0x48, 0xC0, 0xB6, 0xD1, 0x8B, 0x06, 0x2F, 0xF6, 0xEF, 0x1F, + 0x0A, 0xE6, 0xCE, 0x3A, 0x4A, 0x55, 0xBF, 0x6D, 0xF9, 0x4D, 0xD4, 0x08, 0x45, 0x4B, 0xC3, 0x66, + 0x19, 0x92, 0x10, 0xE1, 0x17, 0x8E, 0x28, 0x91, 0x16, 0xBF, 0x3C, 0xEE, 0xA3, 0xA6, 0x99, 0x92, + 0x10, 0xE1, 0xF6, 0xCC, 0xAC, 0xB8, 0x65, 0x0B, 0x43, 0x66, 0xF8, 0xE3, 0xE5, 0x3F, 0x24, 0x89, + 0x47, 0x5D, 0x78, 0x43, 0xD0, 0x61, 0x17, 0xBD, 0x5B, 0x64, 0x54, 0x08, 0x45, 0x59, 0x93, 0xF6, + 0x95, 0x8A, 0x41, 0x51, 0x62, 0x4B, 0x51, 0x02, 0x30, 0x73, 0xC7, 0x87, 0xC5, 0x4B, 0xA2, 0x97, + 0x0F, 0xE8, 0x46, 0x5F, 0x7E, 0x2A, 0xE1, 0x30, 0x20, 0xB0, 0xFA, 0xE7, 0xCE, 0x61, 0x42, 0x57, + 0x6E, 0x21, 0xF3, 0x7A, 0xEC, 0xE3, 0x25, 0xC7, 0x25, 0xF3, 0x67, 0xA7, 0x57, 0x40, 0x00, 0x02, + 0xCF, 0x1C, 0x80, 0x77, 0x67, 0xBD, 0x70, 0xA1, 0x19, 0x92, 0x31, 0x75, 0x93, 0x27, 0x27, 0xB6, + 0x82, 0xE4, 0xEB, 0x1D, 0x78, 0x48, 0xE7, 0xA5, 0x5E, 0x57, 0xEF, 0x64, 0x28, 0x64, 0x1B, 0xF6, + 0x11, 0xB2, 0x03, 0x9D, 0xB9, 0x18, 0x02, 0x27, 0xF7, 0xBE, 0x9D, 0x55, 0xFC, 0x00, 0xD2, 0xC7, + 0xAE, 0xAD, 0x0B, 0xC5, 0xE9, 0x42, 0x41, 0x48, 0xD8, 0x32, 0xCF, 0xF6, 0x0F, 0xF5, 0xBC, 0x97, + 0xC6, 0x99, 0x47, 0x76, 0xBD, 0x89, 0x06, 0x0F, 0x63, 0x0C, 0x51, 0xD4, 0x5E, 0xEA, 0x48, 0xA8, + 0xA2, 0x56, 0x1C, 0x79, 0x84, 0x86, 0x40, 0x88, 0x41, 0x76, 0x55, 0xFC, 0xC2, 0xD7, 0xFD, 0xC9, + 0xC7, 0x80, 0x61, 0x35, 0xA7, 0x43, 0x20, 0xF7, 0xEB, 0x6C, 0x66, 0x13, 0xB0, 0xEC, 0x02, 0x75, + 0x3E, 0x4B, 0xAF, 0xB9, 0x5D, 0x40, 0xDA, 0xD6, 0x6E, 0x2D, 0x39, 0x54, 0xC2, 0x95, 0x35, 0x54, + 0x25, 0x72, 0xE1, 0x78, 0xB8, 0xEB, 0xC1, 0x16, 0x58, 0x0F, 0x9C, 0x9B, 0xB4, 0xEA, 0x37, 0xEC, + 0x3B, 0x11, 0xBA, 0xD5, 0x8A, 0xA9, 0xE3, 0x98, 0x00, 0x51, 0x1C, 0x14, 0xE0, 0x40, 0x96, 0xE5, + 0xE9, 0xF2, 0x21, 0x22, 0xB1, 0x23, 0x60, 0x78, 0xD3, 0x17, 0xF8, 0x7A, 0xA5, 0xA8, 0xBA, 0x20, + 0xD3, 0x15, 0x1E, 0x32, 0xE4, 0x5E, 0x15, 0x48, 0xAE, 0xA9, 0xE5, 0xB8, 0x33, 0xEC, 0xE8, 0xA2, + 0x42, 0xAC, 0xBF, 0x10, 0x84, 0x53, 0x87, 0x19, 0xB4, 0x5F, 0x76, 0x4D, 0x01, 0x9D, 0x56, 0x74, + 0xD9, 0x5C, 0x97, 0xE7, 0x88, 0xEA, 0x3A, 0xBF, 0xDC, 0x4C, 0x33, 0x8A, 0x16, 0xB9, 0x5B, 0xFA, + 0xD8, 0x42, 0xA7, 0xBB, 0x3C, 0x04, 0x27, 0x78, 0x49, 0x81, 0x2A, 0x5A, 0x7D, 0x7C, 0x23, 0xA8, + 0xBA, 0xF7, 0x9A, 0x9F, 0xD2, 0x66, 0x3E, 0x38, 0x3C, 0x75, 0xF9, 0xD1, 0x30, 0x26, 0x30, 0x6E, + 0x5A, 0x6E, 0xDC, 0x6A, 0x69, 0x32, 0x50, 0x33, 0x47, 0x9E, 0xA4, 0xA8, 0x64, 0x66, 0xF0, 0x8A, + 0xE4, 0xFD, 0x27, 0x6F, 0x51, 0x25, 0x8B, 0x43, 0x74, 0xC9, 0x8E, 0xBD, 0x88, 0x31, 0xBE, 0xEC, + 0x65, 0xD2, 0xCB, 0x8D, 0x5A, 0x13, 0x48, 0x16, 0x8C, 0x61, 0x0B, 0x11, 0xF6, 0xC6, 0x66, 0xAE, + 0xC3, 0xCC, 0x0C, 0xD2, 0xE1, 0x9F, 0x82, 0x41, 0x3F, 0x56, 0xF9, 0x73, 0xEF, 0xDC, 0x30, 0x50, + 0xCF, 0xB6, 0x7F, 0xBC, 0xD0, 0xB3, 0x10, 0xAB, 0x24, 0xE4, 0xEC, 0xAD, 0x18, 0x8C, 0x39, 0x2D, + 0x30, 0x4C, 0xC5, 0x40, 0x0D, 0xF6, 0xAC, 0xD6, 0x18, 0x5D, 0x96, 0xBF, 0x5F, 0x71, 0x75, 0x96, + 0x22, 0x97, 0x0F, 0x02, 0x94, 0x6E, 0xA6, 0xAE, 0x6D, 0x8F, 0x1E, 0xCA, 0x12, 0x9B, 0x2A, 0x1C, + 0xCE, 0xA9, 0xEE, 0xFD, 0x12, 0x8E, 0xFC, 0xED, 0x09, 0x33, 0xBA, 0xF4, 0x1A, 0x15, 0xF6, 0x9D, + 0x87, 0x16, 0x43, 0x7C, 0x78, 0x57, 0xE1, 0x44, 0xC9, 0xEB, 0x1F, 0x58, 0x4D, 0xC1, 0x49, 0x11, + 0x5C, 0xB2, 0x11, 0xA8, 0x55, 0x16, 0xF1, 0xC6, 0x50, 0xE9, 0x87, 0x89, 0xF6, 0xCF, 0xD8, 0x9C, + 0x51, 0xA7, 0xBC, 0x5B, 0x31, 0x6D, 0x4D, 0x51, 0xD0, 0x4C, 0xBC, 0x0D, 0x58, 0x2D, 0x7B, 0x88, + 0x7A, 0xF9, 0x8E, 0xD6, 0x40, 0x4D, 0xBB, 0xBE, 0xC4, 0xE5, 0x07, 0xFC, 0xD9, 0x7B, 0x6D, 0xA6, + 0x42, 0x57, 0x8F, 0x02, 0x94, 0x4F, 0xE4, 0x2A, 0x65, 0xE2, 0x19, 0x5A, 0x50, 0xE1, 0x25, 0x65, + 0x4A, 0x60, 0xC2, 0xCD, 0xA8, 0xEC, 0x05, 0x2E, 0x87, 0x7B, 0x95, 0xB7, 0x4F, 0xA0, 0x0B, 0x1B, + 0x4A, 0x7F, 0x92, 0xC8, 0x90, 0xEE, 0x89, 0x1E, 0x10, 0xD2, 0x85, 0xE4, 0x9F, 0x63, 0xC8, 0x12, + 0xBB, 0x4E, 0xB8, 0xCF, 0x0A, 0xEC, 0x18, 0x4E, 0xE6, 0x7C, 0xB3, 0x33, 0x26, 0xC7, 0x1F, 0xD2, + 0x04, 0x23, 0xEA, 0x07, 0x0C, 0x5F, 0x90, 0xBD, 0xA7, 0x6A, 0x0F, 0x4A, 0xD6, 0x10, 0x01, 0x3C, + 0x12, 0x29, 0x2E, 0x96, 0xC0, 0x4D, 0xBB, 0xBE, 0xE5, 0xA7, 0x83, 0xD5, 0x6A, 0x3C, 0xE3, 0x5B, + 0xB8, 0xF2, 0x5C, 0x6D, 0x1F, 0xA6, 0xF3, 0x12, 0x24, 0xF6, 0xD6, 0x3B, 0x10, 0x14, 0x09, 0x07, + 0x82, 0xE8, 0x30, 0x6A, 0x99, 0xDC, 0x95, 0x01, 0x9C, 0xD4, 0x68, 0x3B, 0xCA, 0x98, 0x12, 0xAB, + 0x77, 0x25, 0x15, 0x7D, 0x10, 0x32, 0x45, 0x98, 0xCD, 0x7A, 0xDF, 0x71, 0x8A, 0x75, 0xC1, 0x1C, + 0xD4, 0x68, 0x25, 0xEB, 0xBB, 0x54, 0x27, 0x6F, 0x2A, 0xF7, 0xB9, 0x98, 0x03, 0x27, 0xDE, 0x24, + 0xA8, 0xBB, 0x98, 0xC2, 0x84, 0xFF, 0x9B, 0x51, 0xD8, 0x53, 0x50, 0xDA, 0xF5, 0x88, 0xAA, 0x87, + 0x2F, 0xAE, 0xD6, 0xEA, 0x6B, 0xDE, 0xC8, 0xD7, 0xA7, 0x28, 0x65, 0x81, 0xE8, 0xB2, 0x3B, 0x1D, + 0x4F, 0x75, 0x8F, 0x9F, 0x7A, 0x74, 0x8E, 0xC1, 0x5F, 0x9A, 0xA8, 0x9D, 0xFA, 0x03, 0xA3, 0x71, + 0x9B, 0x37, 0x6D, 0xD5, 0x0B, 0xF5, 0xE1, 0xA1, 0x1B, 0x01, 0x6A, 0xC6, 0x67, 0xAA, 0xEA, 0x2C, + 0x9D, 0xA4, 0xD2, 0x6E, 0xFC, 0xDE, 0x2E, 0x7F, 0x94, 0x69, 0xE5, 0x4A, 0xE0, 0x01, 0x48, 0x3C, + 0x6B, 0xF7, 0x1E, 0xB6, 0x0B, 0x5F, 0xF9, 0x2E, 0x07, 0xC5, 0xE8, 0xAE, 0x37, 0x1B, 0xBC, 0x3C, + 0xD8, 0xD5, 0x0B, 0x91, 0x9E, 0x80, 0x24, 0xF5, 0x06, 0x0C, 0x0E, 0x98, 0x07, 0x96, 0x2D, 0x19, + 0xDC, 0x58, 0x93, 0xCC, 0xFB, 0x4E, 0xEB, 0xBD, 0x0F, 0xF5, 0xAF, 0x01, 0xFA, 0xF1, 0x7C, 0x43, + 0x8C, 0xB8, 0x56, 0x3E, 0xBE, 0x77, 0x4E, 0x2B, 0xF7, 0xBB, 0xB7, 0x45, 0x47, 0xCD, 0xCC, 0xA6, + 0x4C, 0x72, 0x7B, 0x6A, 0x2A, 0x70, 0x13, 0x07, 0xFD, 0xB8, 0x9C, 0x98, 0x3A, 0xD8, 0x23, 0x67, + 0x5B, 0x34, 0xD5, 0x14, 0x0C, 0xAB, 0x77, 0x1F, 0xF8, 0x3D, 0x5A, 0x9F, 0x92, 0xB7, 0x2C, 0xAD, + 0x31, 0xDE, 0x61, 0x07, 0xB3, 0x6B, 0xF7, 0x38, 0x15, 0x95, 0x46, 0x14, 0x48, 0x53, 0x69, 0x52, + 0x66, 0x07, 0x6D, 0x83, 0x71, 0x8A, 0x67, 0x25, 0x20, 0x0F, 0xFE, 0xD7, 0x02, 0xD7, 0x6E, 0x2C, + 0xD2, 0x1A, 0x0A, 0x5D, 0xFD, 0x0F, 0x74, 0xE3, 0xA4, 0x36, 0x07, 0x9A, 0xDF, 0xD4, 0x79, 0xBF, + 0xEF, 0x59, 0xC0, 0x44, 0x52, 0x87, 0x9A, 0x6E, 0x1D, 0x0E, 0xEE, 0xDE, 0x2E, 0x1A, 0xA9, 0x8F, + 0x3A, 0xC9, 0xBA, 0xEC, 0x99, 0x78, 0x2D, 0x55, 0x6B, 0x14, 0xC2, 0x06, 0xD5, 0xFC, 0x93, 0x53, + 0x4D, 0x11, 0x8C, 0xF8, 0xFA, 0x79, 0x7C, 0xA6, 0x64, 0xAE, 0x61, 0xB8, 0x7B, 0x94, 0x56, 0xA6, + 0x39, 0x78, 0x9A, 0xE5, 0xC7, 0xDF, 0x18, 0x63, 0x23, 0x9C, 0xFA, 0x66, 0xBB, 0xB7, 0x5A, 0x27, + 0x4C, 0xD1, 0xA1, 0x83, 0x22, 0xB3, 0x52, 0x49, 0x35, 0xB0, 0x22, 0x83, 0x59, 0x12, 0x00, 0x16, + 0x98, 0xDD, 0xAD, 0xC2, 0x94, 0xF9, 0xD3, 0x7B, 0x64, 0x7F, 0x44, 0x3E, 0x3C, 0x8B, 0x9A, 0x83, + 0x9C, 0x69, 0x6B, 0xE4, 0xDF, 0x9F, 0xED, 0x54, 0x1F, 0xE5, 0x5D, 0x7A, 0x05, 0x82, 0xB3, 0xDD, + 0xEF, 0xFC, 0x53, 0x96, 0xB0, 0x2C, 0x5A, 0xF8, 0xDF, 0x9C, 0x8B, 0x16, 0x4E, 0xDF, 0xDA, 0x4D, + 0x09, 0x09, 0x69, 0x50, 0x03, 0x65, 0xD8, 0x73, 0x70, 0xE8, 0x86, 0xBF, 0xBB, 0x35, 0xCE, 0xB2, + 0x46, 0xCB, 0x02, 0x00, 0x5B, 0xB4, 0xE2, 0xC6, 0x8F, 0x2F, 0x98, 0xAF, 0x87, 0x4B, 0x48, 0x45, + 0xED, 0xCC, 0x1D, 0xE6, 0x58, 0xD6, 0xF2, 0x50, 0x25, 0x9F, 0x52, 0xC7, 0xCB, 0x8A, 0x17, 0x9D, + 0x5B, 0xE5, 0xC8, 0xD7, 0x72, 0xB7, 0x52, 0xB2, 0xC4, 0x98, 0xE3, 0x7A, 0x17, 0x3E, 0xC6, 0x60, + 0xA7, 0x97, 0xB0, 0xCF, 0x18, 0x81, 0x53, 0x84, 0x4C, 0xD5, 0x17, 0x32, 0x03, 0x13, 0x39, 0x51, + 0x09, 0x10, 0xE3, 0x77, 0x49, 0x4F, 0x62, 0x01, 0xBF, 0x8C, 0x9A, 0xE0, 0x41, 0x9E, 0x89, 0x74, + 0x36, 0xF9, 0x96, 0x86, 0x2E, 0x96, 0x1C, 0x4A, 0xB7, 0x2B, 0x4A, 0x97, 0xBC, 0x99, 0x40, 0xA3, + 0xE0, 0x3D, 0xC8, 0xAD, 0x2F, 0xDF, 0x4F, 0x2C, 0xC4, 0x69, 0x82, 0x9F, 0x9B, 0x81, 0x0C, 0x61, + 0x5C, 0xA5, 0x9D, 0x8C, 0x89, 0xC0, 0x2C, 0xB4, 0x4A, 0x33, 0x4E, 0xEB, 0xA2, 0x56, 0x40, 0xC0, + 0xC2, 0x46, 0xAF, 0x6A, 0xFC, 0x67, 0xD1, 0x80, 0x5E, 0xC5, 0x6D, 0x84, 0x43, 0x27, 0x3F, 0x55, + 0x15, 0x96, 0x6A, 0xA0, 0xA5, 0xDA, 0xB7, 0xFF, 0xB7, 0x75, 0x6E, 0x4C, 0x49, 0x91, 0x9D, 0x22, + 0xA3, 0x46, 0xEA, 0xED, 0x9A, 0x00, 0xE2, 0x32, 0xC3, 0xD6, 0xA9, 0x71, 0x20, 0x55, 0xA3, 0x19, + 0xED, 0xF8, 0x4F, 0xA7, 0x12, 0x9C, 0x66, 0x87, 0xAF, 0x4E, 0xB7, 0xF0, 0xDB, 0xBF, 0xEF, 0xF0, + 0xF6, 0xAF, 0xEA, 0xDA, 0x09, 0xFE, 0xDE, 0x38, 0x5C, 0xA5, 0xA2, 0xDF, 0x99, 0x45, 0xA8, 0xE4, + 0xE7, 0x92, 0xAC, 0x67, 0xAA, 0x4F, 0xBF, 0x77, 0x3E, 0xA2, 0x40, 0x49, 0x22, 0x4A, 0x1E, 0x3B, + 0xAA, 0x70, 0x7F, 0x95, 0xAF, 0x37, 0x4B, 0xFC, 0x99, 0xE2, 0xE0, 0xBA, 0xD7, 0x34, 0xCE, 0x55, + 0x88, 0x5B, 0x84, 0x1B, 0x57, 0xC4, 0x80, 0x03, 0x53, 0xC9, 0x2F, 0x93, 0x04, 0x4D, 0xD5, 0x96, + 0xE5, 0x70, 0xA6, 0x6E, 0x63, 0x5D, 0x9D, 0x6C, 0xDB, 0x02, 0x0A, 0xA9, 0xDA, 0x8B, 0x53, 0xDC, + 0xD9, 0x9A, 0xC5, 0x94, 0x2C, 0x91, 0x92, 0x2A, 0xDE, 0xBB, 0x8B, 0x13, 0xB9, 0x19, 0x96, 0x64, + 0xCC, 0xF2, 0x64, 0x39, 0xB7, 0x75, 0x49, 0xE9, 0x86, 0xC2, 0x86, 0x62, 0xD9, 0x24, 0xD3, 0x81, + 0x35, 0x49, 0xFC, 0xA0, 0xA5, 0xA0, 0x93, 0x05, 0x64, 0xB4, 0x1A, 0x57, 0xCE, 0x0C, 0x90, 0x02, + 0x27, 0xC5, 0x7A, 0x2B, 0x5D, 0xAE, 0x3E, 0xD5, 0xDD, 0x10, 0x7C, 0x14, 0xEA, 0x3A, 0x08, 0xAC, + 0x72, 0x4E, 0x90, 0x3D, 0x3B, 0x7C, 0x86, 0x2E, 0xEB, 0xD4, 0x06, 0x70, 0xE6, 0xC7, 0xFB, 0x5F, + 0xBD, 0x18, 0xF4, 0x11, 0xA4, 0x1A, 0x93, 0xC3, 0xBE, 0xD9, 0xFB, 0x26, 0x48, 0x2F, 0x37, 0x3C, + 0xD0, 0x03, 0x47, 0x1A, 0xF7, 0x62, 0x19, 0x24, 0x5C, 0xF4, 0xA8, 0x92, 0x20, 0x7A, 0xF2, 0x9E, + 0x2A, 0xC5, 0x95, 0xA2, 0xFB, 0xA4, 0xEA, 0x85, 0xD8, 0x56, 0xB7, 0x70, 0xD1, 0x60, 0x30, 0xA5, + 0x30, 0x82, 0x70, 0xDC, 0x7A, 0x65, 0x8A, 0x36, 0x3F, 0x5B, 0x0C, 0xAE, 0x54, 0x7C, 0xD3, 0x57, + 0x84, 0x7B, 0x3A, 0x65, 0x18, 0x81, 0xEE, 0x05, 0x9B, 0x44, 0x4D, 0xB8, 0xDA, 0xA2, 0xA1, 0xC9, + 0x15, 0xD3, 0x73, 0x03, 0x0E, 0x43, 0xE9, 0x8E, 0x15, 0xF9, 0xBE, 0xC6, 0xC5, 0x8A, 0xE5, 0xC0, + 0x1E, 0xC2, 0x37, 0x9E, 0x2A, 0x26, 0xA5, 0xA0, 0xBD, 0x24, 0x5F, 0xB9, 0xC1, 0xAB, 0x34, 0x48, + 0xB9, 0x5D, 0x98, 0xB4, 0x65, 0x18, 0xF3, 0x63, 0x19, 0x44, 0x1B, 0x11, 0x16, 0xFF, 0xDC, 0xF1, + 0x79, 0x08, 0x86, 0x0F, 0x52, 0x98, 0x73, 0xC4, 0x92, 0x90, 0x2B, 0x47, 0x09, 0xD0, 0x43, 0x6C, + 0x2F, 0x20, 0xEB, 0xDC, 0xDA, 0xC5, 0x08, 0x7B, 0x94, 0x42, 0x30, 0x6A, 0xC7, 0xDA, 0x8C, 0xC3, + 0x76, 0xA7, 0xA5, 0xCC, 0x62, 0x13, 0x00, 0x60, 0x31, 0x58, 0x44, 0x9B, 0xF5, 0x64, 0x14, 0xF5, + 0x11, 0xC5, 0x54, 0x52, 0x83, 0xD4, 0x73, 0x01, 0x16, 0x0E, 0xB3, 0x7A, 0x29, 0x69, 0x35, 0x56, + 0xD4, 0xEE, 0x8A, 0x17, 0xA2, 0x99, 0x24, 0x9C, 0xD7, 0x8F, 0xDB, 0x55, 0xB5, 0x3E +}; diff --git a/drivers/sensors/analog_joystick.c b/drivers/sensors/analog_joystick.c new file mode 100644 index 000000000000..0f4d1d7a4c25 --- /dev/null +++ b/drivers/sensors/analog_joystick.c @@ -0,0 +1,94 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "analog_joystick.h" +#include "analog.h" +#include "gpio.h" +#include "wait.h" + +// Set Parameters +uint16_t minAxisValue = ANALOG_JOYSTICK_AXIS_MIN; +uint16_t maxAxisValue = ANALOG_JOYSTICK_AXIS_MAX; + +uint8_t maxCursorSpeed = ANALOG_JOYSTICK_SPEED_MAX; +uint8_t speedRegulator = ANALOG_JOYSTICK_SPEED_REGULATOR; // Lower Values Create Faster Movement + +int16_t xOrigin, yOrigin; + +uint16_t lastCursor = 0; + +int16_t axisCoordinate(uint8_t pin, uint16_t origin) { + int8_t direction; + int16_t distanceFromOrigin; + int16_t range; + + int16_t position = analogReadPin(pin); + + if (origin == position) { + return 0; + } else if (origin > position) { + distanceFromOrigin = origin - position; + range = origin - minAxisValue; + direction = -1; + } else { + distanceFromOrigin = position - origin; + range = maxAxisValue - origin; + direction = 1; + } + + float percent = (float)distanceFromOrigin / range; + int16_t coordinate = (int16_t)(percent * 100); + if (coordinate < 0) { + return 0; + } else if (coordinate > 100) { + return 100 * direction; + } else { + return coordinate * direction; + } +} + +int8_t axisToMouseComponent(uint8_t pin, int16_t origin, uint8_t maxSpeed) { + int16_t coordinate = axisCoordinate(pin, origin); + if (coordinate != 0) { + float percent = (float)coordinate / 100; + return percent * maxCursorSpeed * (abs(coordinate) / speedRegulator); + } else { + return 0; + } +} + +report_analog_joystick_t analog_joystick_read(void) { + report_analog_joystick_t report = {0}; + + if (timer_elapsed(lastCursor) > ANALOG_JOYSTICK_READ_INTERVAL) { + lastCursor = timer_read(); + report.x = axisToMouseComponent(ANALOG_JOYSTICK_X_AXIS_PIN, xOrigin, maxCursorSpeed); + report.y = axisToMouseComponent(ANALOG_JOYSTICK_Y_AXIS_PIN, yOrigin, maxCursorSpeed); + } +#ifdef ANALOG_JOYSTICK_CLICK_PIN + report.button = !readPin(ANALOG_JOYSTICK_CLICK_PIN); +#endif + return report; +} + +void analog_joystick_init(void) { +#ifdef ANALOG_JOYSTICK_CLICK_PIN + setPinInputHigh(ANALOG_JOYSTICK_CLICK_PIN); +#endif + // Account for drift + xOrigin = analogReadPin(ANALOG_JOYSTICK_X_AXIS_PIN); + yOrigin = analogReadPin(ANALOG_JOYSTICK_Y_AXIS_PIN); +} diff --git a/drivers/sensors/analog_joystick.h b/drivers/sensors/analog_joystick.h new file mode 100644 index 000000000000..6892a08817f2 --- /dev/null +++ b/drivers/sensors/analog_joystick.h @@ -0,0 +1,51 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include +#include + +#ifndef ANALOG_JOYSTICK_X_AXIS_PIN +# error No pin specified for X Axis +#endif +#ifndef ANALOG_JOYSTICK_Y_AXIS_PIN +# error No pin specified for Y Axis +#endif + +#ifndef ANALOG_JOYSTICK_AXIS_MIN +# define ANALOG_JOYSTICK_AXIS_MIN 0 +#endif +#ifndef ANALOG_JOYSTICK_AXIS_MAX +# define ANALOG_JOYSTICK_AXIS_MAX 1023 +#endif +#ifndef ANALOG_JOYSTICK_SPEED_REGULATOR +# define ANALOG_JOYSTICK_SPEED_REGULATOR 20 +#endif +#ifndef ANALOG_JOYSTICK_READ_INTERVAL +# define ANALOG_JOYSTICK_READ_INTERVAL 10 +#endif +#ifndef ANALOG_JOYSTICK_SPEED_MAX +# define ANALOG_JOYSTICK_SPEED_MAX 2 +#endif + +typedef struct { + int8_t x; + int8_t y; + bool button; +} report_analog_joystick_t; +report_analog_joystick_t analog_joystick_read(void); +void analog_joystick_init(void); diff --git a/drivers/sensors/cirque_pinnacle.c b/drivers/sensors/cirque_pinnacle.c new file mode 100644 index 000000000000..b807c4f07660 --- /dev/null +++ b/drivers/sensors/cirque_pinnacle.c @@ -0,0 +1,232 @@ +// Copyright (c) 2018 Cirque Corp. Restrictions apply. See: www.cirque.com/sw-license +#include "cirque_pinnacle.h" +#include "print.h" +#include "debug.h" +#include "wait.h" + +// Registers for RAP +// clang-format off +#define FIRMWARE_ID 0x00 +#define FIRMWARE_VERSION_C 0x01 +#define STATUS_1 0x02 +#define SYSCONFIG_1 0x03 +#define FEEDCONFIG_1 0x04 +#define FEEDCONFIG_2 0x05 +#define CALIBRATION_CONFIG_1 0x07 +#define PS2_AU_CONTROL 0x08 +#define SAMPLE_RATE 0x09 +#define Z_IDLE_COUNT 0x0A +#define Z_SCALER 0x0B +#define SLEEP_INTERVAL 0x0C +#define SLEEP_TIMER 0x0D +#define PACKET_BYTE_0 0x12 +#define PACKET_BYTE_1 0x13 +#define PACKET_BYTE_2 0x14 +#define PACKET_BYTE_3 0x15 +#define PACKET_BYTE_4 0x16 +#define PACKET_BYTE_5 0x17 + +#define ERA_VALUE 0x1B +#define ERA_HIGH_BYTE 0x1C +#define ERA_LOW_BYTE 0x1D +#define ERA_CONTROL 0x1E + +// ADC-attenuation settings (held in BIT_7 and BIT_6) +// 1X = most sensitive, 4X = least sensitive +#define ADC_ATTENUATE_1X 0x00 +#define ADC_ATTENUATE_2X 0x40 +#define ADC_ATTENUATE_3X 0x80 +#define ADC_ATTENUATE_4X 0xC0 + +// Register config values for this demo +#define SYSCONFIG_1_VALUE 0x00 +#define FEEDCONFIG_1_VALUE 0x03 // 0x03 for absolute mode 0x01 for relative mode +#define FEEDCONFIG_2_VALUE 0x1C // 0x1F for normal functionality 0x1E for intellimouse disabled +#define Z_IDLE_COUNT_VALUE 0x05 +// clang-format on + +bool touchpad_init; +uint16_t scale_data = 1024; + +void cirque_pinnacle_clear_flags(void); +void cirque_pinnacle_enable_feed(bool feedEnable); +void RAP_ReadBytes(uint8_t address, uint8_t* data, uint8_t count); +void RAP_Write(uint8_t address, uint8_t data); + +#ifdef CONSOLE_ENABLE +void print_byte(uint8_t byte) { xprintf("%c%c%c%c%c%c%c%c|", (byte & 0x80 ? '1' : '0'), (byte & 0x40 ? '1' : '0'), (byte & 0x20 ? '1' : '0'), (byte & 0x10 ? '1' : '0'), (byte & 0x08 ? '1' : '0'), (byte & 0x04 ? '1' : '0'), (byte & 0x02 ? '1' : '0'), (byte & 0x01 ? '1' : '0')); } +#endif + +/* Logical Scaling Functions */ +// Clips raw coordinates to "reachable" window of sensor +// NOTE: values outside this window can only appear as a result of noise +void ClipCoordinates(pinnacle_data_t* coordinates) { + if (coordinates->xValue < CIRQUE_PINNACLE_X_LOWER) { + coordinates->xValue = CIRQUE_PINNACLE_X_LOWER; + } else if (coordinates->xValue > CIRQUE_PINNACLE_X_UPPER) { + coordinates->xValue = CIRQUE_PINNACLE_X_UPPER; + } + if (coordinates->yValue < CIRQUE_PINNACLE_Y_LOWER) { + coordinates->yValue = CIRQUE_PINNACLE_Y_LOWER; + } else if (coordinates->yValue > CIRQUE_PINNACLE_Y_UPPER) { + coordinates->yValue = CIRQUE_PINNACLE_Y_UPPER; + } +} + +uint16_t cirque_pinnacle_get_scale(void) { return scale_data; } +void cirque_pinnacle_set_scale(uint16_t scale) { scale_data = scale; } + +// Scales data to desired X & Y resolution +void cirque_pinnacle_scale_data(pinnacle_data_t* coordinates, uint16_t xResolution, uint16_t yResolution) { + uint32_t xTemp = 0; + uint32_t yTemp = 0; + + ClipCoordinates(coordinates); + + xTemp = coordinates->xValue; + yTemp = coordinates->yValue; + + // translate coordinates to (0, 0) reference by subtracting edge-offset + xTemp -= CIRQUE_PINNACLE_X_LOWER; + yTemp -= CIRQUE_PINNACLE_Y_LOWER; + + // scale coordinates to (xResolution, yResolution) range + coordinates->xValue = (uint16_t)(xTemp * xResolution / CIRQUE_PINNACLE_X_RANGE); + coordinates->yValue = (uint16_t)(yTemp * yResolution / CIRQUE_PINNACLE_Y_RANGE); +} + +// Clears Status1 register flags (SW_CC and SW_DR) +void cirque_pinnacle_clear_flags() { + RAP_Write(STATUS_1, 0x00); + wait_us(50); +} + +// Enables/Disables the feed +void cirque_pinnacle_enable_feed(bool feedEnable) { + uint8_t temp; + + RAP_ReadBytes(FEEDCONFIG_1, &temp, 1); // Store contents of FeedConfig1 register + + if (feedEnable) { + temp |= 0x01; // Set Feed Enable bit + RAP_Write(0x04, temp); + } else { + temp &= ~0x01; // Clear Feed Enable bit + RAP_Write(0x04, temp); + } +} + +/* ERA (Extended Register Access) Functions */ +// Reads bytes from an extended register at
(16-bit address), +// stores values in <*data> +void ERA_ReadBytes(uint16_t address, uint8_t* data, uint16_t count) { + uint8_t ERAControlValue = 0xFF; + + cirque_pinnacle_enable_feed(false); // Disable feed + + RAP_Write(ERA_HIGH_BYTE, (uint8_t)(address >> 8)); // Send upper byte of ERA address + RAP_Write(ERA_LOW_BYTE, (uint8_t)(address & 0x00FF)); // Send lower byte of ERA address + + for (uint16_t i = 0; i < count; i++) { + RAP_Write(ERA_CONTROL, 0x05); // Signal ERA-read (auto-increment) to Pinnacle + + // Wait for status register 0x1E to clear + do { + RAP_ReadBytes(ERA_CONTROL, &ERAControlValue, 1); + } while (ERAControlValue != 0x00); + + RAP_ReadBytes(ERA_VALUE, data + i, 1); + + cirque_pinnacle_clear_flags(); + } +} + +// Writes a byte, , to an extended register at
(16-bit address) +void ERA_WriteByte(uint16_t address, uint8_t data) { + uint8_t ERAControlValue = 0xFF; + + cirque_pinnacle_enable_feed(false); // Disable feed + + RAP_Write(ERA_VALUE, data); // Send data byte to be written + + RAP_Write(ERA_HIGH_BYTE, (uint8_t)(address >> 8)); // Upper byte of ERA address + RAP_Write(ERA_LOW_BYTE, (uint8_t)(address & 0x00FF)); // Lower byte of ERA address + + RAP_Write(ERA_CONTROL, 0x02); // Signal an ERA-write to Pinnacle + + // Wait for status register 0x1E to clear + do { + RAP_ReadBytes(ERA_CONTROL, &ERAControlValue, 1); + } while (ERAControlValue != 0x00); + + cirque_pinnacle_clear_flags(); +} + +void cirque_pinnacle_set_adc_attenuation(uint8_t adcGain) { + uint8_t temp = 0x00; + + ERA_ReadBytes(0x0187, &temp, 1); + temp &= 0x3F; // clear top two bits + temp |= adcGain; + ERA_WriteByte(0x0187, temp); + ERA_ReadBytes(0x0187, &temp, 1); +} + +// Changes thresholds to improve detection of fingers +void cirque_pinnacle_tune_edge_sensitivity(void) { + uint8_t temp = 0x00; + + ERA_ReadBytes(0x0149, &temp, 1); + ERA_WriteByte(0x0149, 0x04); + ERA_ReadBytes(0x0149, &temp, 1); + + ERA_ReadBytes(0x0168, &temp, 1); + ERA_WriteByte(0x0168, 0x03); + ERA_ReadBytes(0x0168, &temp, 1); +} + +/* Pinnacle-based TM040040 Functions */ +void cirque_pinnacle_init(void) { +#if defined(POINTING_DEVICE_DRIVER_cirque_pinnacle_spi) + spi_init(); +#elif defined(POINTING_DEVICE_DRIVER_cirque_pinnacle_i2c) + i2c_init(); +#endif + + touchpad_init = true; + // Host clears SW_CC flag + cirque_pinnacle_clear_flags(); + + // Host configures bits of registers 0x03 and 0x05 + RAP_Write(SYSCONFIG_1, SYSCONFIG_1_VALUE); + RAP_Write(FEEDCONFIG_2, FEEDCONFIG_2_VALUE); + + // Host enables preferred output mode (absolute) + RAP_Write(FEEDCONFIG_1, FEEDCONFIG_1_VALUE); + + // Host sets z-idle packet count to 5 (default is 30) + RAP_Write(Z_IDLE_COUNT, Z_IDLE_COUNT_VALUE); + + cirque_pinnacle_set_adc_attenuation(0xFF); + cirque_pinnacle_tune_edge_sensitivity(); + cirque_pinnacle_enable_feed(true); +} + +// Reads XYZ data from Pinnacle registers 0x14 through 0x17 +// Stores result in pinnacle_data_t struct with xValue, yValue, and zValue members +pinnacle_data_t cirque_pinnacle_read_data(void) { + uint8_t data[6] = {0}; + pinnacle_data_t result = {0}; + RAP_ReadBytes(PACKET_BYTE_0, data, 6); + + cirque_pinnacle_clear_flags(); + + result.buttonFlags = data[0] & 0x3F; + result.xValue = data[2] | ((data[4] & 0x0F) << 8); + result.yValue = data[3] | ((data[4] & 0xF0) << 4); + result.zValue = data[5] & 0x3F; + + result.touchDown = (result.xValue != 0 || result.yValue != 0); + + return result; +} diff --git a/drivers/sensors/cirque_pinnacle.h b/drivers/sensors/cirque_pinnacle.h new file mode 100644 index 000000000000..db891122a661 --- /dev/null +++ b/drivers/sensors/cirque_pinnacle.h @@ -0,0 +1,74 @@ +// Copyright (c) 2018 Cirque Corp. Restrictions apply. See: www.cirque.com/sw-license + +#pragma once + +#include +#include + +// Convenient way to store and access measurements +typedef struct { + uint16_t xValue; + uint16_t yValue; + uint16_t zValue; + uint8_t buttonFlags; + bool touchDown; +} pinnacle_data_t; + +void cirque_pinnacle_init(void); +pinnacle_data_t cirque_pinnacle_read_data(void); +void cirque_pinnacle_scale_data(pinnacle_data_t* coordinates, uint16_t xResolution, uint16_t yResolution); +uint16_t cirque_pinnacle_get_scale(void); +void cirque_pinnacle_set_scale(uint16_t scale); + +#ifndef CIRQUE_PINNACLE_TIMEOUT +# define CIRQUE_PINNACLE_TIMEOUT 20 +#endif + +// Coordinate scaling values +#ifndef CIRQUE_PINNACLE_X_LOWER +# define CIRQUE_PINNACLE_X_LOWER 127 // min "reachable" X value +#endif +#ifndef CIRQUE_PINNACLE_X_UPPER +# define CIRQUE_PINNACLE_X_UPPER 1919 // max "reachable" X value +#endif +#ifndef CIRQUE_PINNACLE_Y_LOWER +# define CIRQUE_PINNACLE_Y_LOWER 63 // min "reachable" Y value +#endif +#ifndef CIRQUE_PINNACLE_Y_UPPER +# define CIRQUE_PINNACLE_Y_UPPER 1471 // max "reachable" Y value +#endif +#ifndef CIRQUE_PINNACLE_X_RANGE +# define CIRQUE_PINNACLE_X_RANGE (CIRQUE_PINNACLE_X_UPPER - CIRQUE_PINNACLE_X_LOWER) +#endif +#ifndef CIRQUE_PINNACLE_Y_RANGE +# define CIRQUE_PINNACLE_Y_RANGE (CIRQUE_PINNACLE_Y_UPPER - CIRQUE_PINNACLE_Y_LOWER) +#endif + +#if defined(POINTING_DEVICE_DRIVER_cirque_pinnacle_i2c) +# include "i2c_master.h" +// Cirque's 7-bit I2C Slave Address +# ifndef CIRQUE_PINNACLE_ADDR +# define CIRQUE_PINNACLE_ADDR 0x2A +# endif +#elif defined(POINTING_DEVICE_DRIVER_cirque_pinnacle_spi) +# include "spi_master.h" +# ifndef CIRQUE_PINNACLE_CLOCK_SPEED +# define CIRQUE_PINNACLE_CLOCK_SPEED 10000000 +# endif +# ifndef CIRQUE_PINNACLE_SPI_LSBFIRST +# define CIRQUE_PINNACLE_SPI_LSBFIRST false +# endif +# ifndef CIRQUE_PINNACLE_SPI_MODE +# define CIRQUE_PINNACLE_SPI_MODE 1 +# endif +# ifndef CIRQUE_PINNACLE_SPI_DIVISOR +# ifdef __AVR__ +# define CIRQUE_PINNACLE_SPI_DIVISOR (F_CPU / CIRQUE_PINNACLE_CLOCK_SPEED) +# else +# define CIRQUE_PINNACLE_SPI_DIVISOR 64 +# endif +# ifndef CIRQUE_PINNACLE_SPI_CS_PIN +# error "No Chip Select pin has been defined -- missing CIRQUE_PINNACLE_SPI_CS_PIN define" +# endif +# endif +#endif diff --git a/drivers/sensors/cirque_pinnacle_i2c.c b/drivers/sensors/cirque_pinnacle_i2c.c new file mode 100644 index 000000000000..81dd982b0cc8 --- /dev/null +++ b/drivers/sensors/cirque_pinnacle_i2c.c @@ -0,0 +1,43 @@ +// Copyright (c) 2018 Cirque Corp. Restrictions apply. See: www.cirque.com/sw-license +#include "cirque_pinnacle.h" +#include "i2c_master.h" +#include "print.h" +#include "debug.h" +#include "stdio.h" + +// Masks for Cirque Register Access Protocol (RAP) +#define WRITE_MASK 0x80 +#define READ_MASK 0xA0 + +extern bool touchpad_init; + +/* RAP Functions */ +// Reads Pinnacle registers starting at
+void RAP_ReadBytes(uint8_t address, uint8_t* data, uint8_t count) { + uint8_t cmdByte = READ_MASK | address; // Form the READ command byte + if (touchpad_init) { + i2c_writeReg(CIRQUE_PINNACLE_ADDR << 1, cmdByte, NULL, 0, CIRQUE_PINNACLE_TIMEOUT); + if (i2c_readReg(CIRQUE_PINNACLE_ADDR << 1, cmdByte, data, count, CIRQUE_PINNACLE_TIMEOUT) != I2C_STATUS_SUCCESS) { +#ifdef CONSOLE_ENABLE + dprintf("error right touchpad\n"); +#endif + touchpad_init = false; + } + i2c_stop(); + } +} + +// Writes single-byte to
+void RAP_Write(uint8_t address, uint8_t data) { + uint8_t cmdByte = WRITE_MASK | address; // Form the WRITE command byte + + if (touchpad_init) { + if (i2c_writeReg(CIRQUE_PINNACLE_ADDR << 1, cmdByte, &data, sizeof(data), CIRQUE_PINNACLE_TIMEOUT) != I2C_STATUS_SUCCESS) { +#ifdef CONSOLE_ENABLE + dprintf("error right touchpad\n"); +#endif + touchpad_init = false; + } + i2c_stop(); + } +} diff --git a/drivers/sensors/cirque_pinnacle_spi.c b/drivers/sensors/cirque_pinnacle_spi.c new file mode 100644 index 000000000000..f3eee887584f --- /dev/null +++ b/drivers/sensors/cirque_pinnacle_spi.c @@ -0,0 +1,52 @@ +// Copyright (c) 2018 Cirque Corp. Restrictions apply. See: www.cirque.com/sw-license +#include "cirque_pinnacle.h" +#include "spi_master.h" +#include "print.h" +#include "debug.h" + +// Masks for Cirque Register Access Protocol (RAP) +#define WRITE_MASK 0x80 +#define READ_MASK 0xA0 + +extern bool touchpad_init; + +/* RAP Functions */ +// Reads Pinnacle registers starting at
+void RAP_ReadBytes(uint8_t address, uint8_t* data, uint8_t count) { + uint8_t cmdByte = READ_MASK | address; // Form the READ command byte + if (touchpad_init) { + if (spi_start(CIRQUE_PINNACLE_SPI_CS_PIN, CIRQUE_TRACKPAD_SPI_LSBFIRST, CIRQUE_PINNACLE_SPI_MODE, CIRQUE_PINNACLE_SPI_DIVISOR)) { + spi_write(cmdByte); + spi_read(); // filler + spi_read(); // filler + for (uint8_t i = 0; i < count; i++) { + data[i] = spi_read(); // each sepsequent read gets another register's contents + } + } else { +#ifdef CONSOLE_ENABLE + dprintf("error right touchpad\n"); +#endif + touchpad_init = false; + j + } + spi_stop(); + } +} + +// Writes single-byte to
+void RAP_Write(uint8_t address, uint8_t data) { + uint8_t cmdByte = WRITE_MASK | address; // Form the WRITE command byte + + if (touchpad_init) { + if (spi_start(CIRQUE_PINNACLE_SPI_CS_PIN, CIRQUE_TRACKPAD_SPI_LSBFIRST, CIRQUE_PINNACLE_SPI_MODE, CIRQUE_PINNACLE_SPI_DIVISOR)) { + spi_write(cmdByte); + spi_write(data); + } else { +#ifdef CONSOLE_ENABLE + dprintf("error right touchpad\n"); +#endif + touchpad_init = false; + } + spi_stop(); + } +} diff --git a/drivers/sensors/pimoroni_trackball.c b/drivers/sensors/pimoroni_trackball.c new file mode 100644 index 000000000000..7d390056ead4 --- /dev/null +++ b/drivers/sensors/pimoroni_trackball.c @@ -0,0 +1,92 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * Copyright 2021 Dasky (@daskygit) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "pimoroni_trackball.h" +#include "i2c_master.h" +#include "print.h" +#include "debug.h" +#include "timer.h" + +// clang-format off +#define PIMORONI_TRACKBALL_REG_LED_RED 0x00 +#define PIMORONI_TRACKBALL_REG_LED_GRN 0x01 +#define PIMORONI_TRACKBALL_REG_LED_BLU 0x02 +#define PIMORONI_TRACKBALL_REG_LED_WHT 0x03 +#define PIMORONI_TRACKBALL_REG_LEFT 0x04 +#define PIMORONI_TRACKBALL_REG_RIGHT 0x05 +#define PIMORONI_TRACKBALL_REG_UP 0x06 +#define PIMORONI_TRACKBALL_REG_DOWN 0x07 +// clang-format on + +static uint16_t precision = 128; + +float pimoroni_trackball_get_precision(void) { return ((float)precision / 128); } +void pimoroni_trackball_set_precision(float floatprecision) { precision = (floatprecision * 128); } + +void pimoroni_trackball_set_rgbw(uint8_t r, uint8_t g, uint8_t b, uint8_t w) { + uint8_t data[4] = {r, g, b, w}; + __attribute__((unused)) i2c_status_t status = i2c_writeReg(PIMORONI_TRACKBALL_ADDRESS << 1, PIMORONI_TRACKBALL_REG_LED_RED, data, sizeof(data), PIMORONI_TRACKBALL_TIMEOUT); + +#ifdef CONSOLE_ENABLE + if (debug_mouse) dprintf("Trackball RGBW i2c_status_t: %d\n", status); +#endif +} + +i2c_status_t read_pimoroni_trackball(pimoroni_data_t* data) { + i2c_status_t status = i2c_readReg(PIMORONI_TRACKBALL_ADDRESS << 1, PIMORONI_TRACKBALL_REG_LEFT, (uint8_t*)data, sizeof(*data), PIMORONI_TRACKBALL_TIMEOUT); +#ifdef CONSOLE_ENABLE + if (debug_mouse) { + static uint16_t d_timer; + if (timer_elapsed(d_timer) > PIMORONI_TRACKBALL_DEBUG_INTERVAL) { + dprintf("Trackball READ i2c_status_t: %d L: %d R: %d Up: %d D: %d SW: %d\n", status, data->left, data->right, data->up, data->down, data->click); + d_timer = timer_read(); + } + } +#endif + + return status; +} + +__attribute__((weak)) void pimironi_trackball_device_init(void) { + i2c_init(); + pimoroni_trackball_set_rgbw(0x00, 0x00, 0x00, 0x00); +} + +int16_t pimoroni_trackball_get_offsets(uint8_t negative_dir, uint8_t positive_dir, uint8_t scale) { + uint8_t offset = 0; + bool isnegative = false; + if (negative_dir > positive_dir) { + offset = negative_dir - positive_dir; + isnegative = true; + } else { + offset = positive_dir - negative_dir; + } + uint16_t magnitude = (scale * offset * offset * precision) >> 7; + return isnegative ? -(int16_t)(magnitude) : (int16_t)(magnitude); +} + +void pimoroni_trackball_adapt_values(int8_t* mouse, int16_t* offset) { + if (*offset > 127) { + *mouse = 127; + *offset -= 127; + } else if (*offset < -127) { + *mouse = -127; + *offset += 127; + } else { + *mouse = *offset; + *offset = 0; + } +} diff --git a/drivers/sensors/pimoroni_trackball.h b/drivers/sensors/pimoroni_trackball.h new file mode 100644 index 000000000000..59ee8724ba66 --- /dev/null +++ b/drivers/sensors/pimoroni_trackball.h @@ -0,0 +1,61 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * Copyright 2021 Dasky (@daskygit) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include +#include "report.h" +#include "i2c_master.h" + +#ifndef PIMORONI_TRACKBALL_ADDRESS +# define PIMORONI_TRACKBALL_ADDRESS 0x0A +#endif +#ifndef PIMORONI_TRACKBALL_INTERVAL_MS +# define PIMORONI_TRACKBALL_INTERVAL_MS 8 +#endif +#ifndef PIMORONI_TRACKBALL_SCALE +# define PIMORONI_TRACKBALL_SCALE 5 +#endif +#ifndef PIMORONI_TRACKBALL_DEBOUNCE_CYCLES +# define PIMORONI_TRACKBALL_DEBOUNCE_CYCLES 20 +#endif +#ifndef PIMORONI_TRACKBALL_ERROR_COUNT +# define PIMORONI_TRACKBALL_ERROR_COUNT 10 +#endif + +#ifndef PIMORONI_TRACKBALL_TIMEOUT +# define PIMORONI_TRACKBALL_TIMEOUT 100 +#endif + +#ifndef PIMORONI_TRACKBALL_DEBUG_INTERVAL +# define PIMORONI_TRACKBALL_DEBUG_INTERVAL 100 +#endif + +typedef struct { + uint8_t left; + uint8_t right; + uint8_t up; + uint8_t down; + uint8_t click; +} pimoroni_data_t; + +void pimironi_trackball_device_init(void); +void pimoroni_trackball_set_rgbw(uint8_t red, uint8_t green, uint8_t blue, uint8_t white); +int16_t pimoroni_trackball_get_offsets(uint8_t negative_dir, uint8_t positive_dir, uint8_t scale); +void pimoroni_trackball_adapt_values(int8_t* mouse, int16_t* offset); +float pimoroni_trackball_get_precision(void); +void pimoroni_trackball_set_precision(float precision); +i2c_status_t read_pimoroni_trackball(pimoroni_data_t* data); diff --git a/drivers/sensors/pmw3360.c b/drivers/sensors/pmw3360.c new file mode 100644 index 000000000000..2b27dccbb640 --- /dev/null +++ b/drivers/sensors/pmw3360.c @@ -0,0 +1,279 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * Copyright 2019 Sunjun Kim + * Copyright 2020 Ploopy Corporation + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "pmw3360.h" +#include "wait.h" +#include "debug.h" +#include "print.h" +#include PMW3360_FIRMWARE_H + +// Registers +// clang-format off +#define REG_Product_ID 0x00 +#define REG_Revision_ID 0x01 +#define REG_Motion 0x02 +#define REG_Delta_X_L 0x03 +#define REG_Delta_X_H 0x04 +#define REG_Delta_Y_L 0x05 +#define REG_Delta_Y_H 0x06 +#define REG_SQUAL 0x07 +#define REG_Raw_Data_Sum 0x08 +#define REG_Maximum_Raw_data 0x09 +#define REG_Minimum_Raw_data 0x0A +#define REG_Shutter_Lower 0x0B +#define REG_Shutter_Upper 0x0C +#define REG_Control 0x0D +#define REG_Config1 0x0F +#define REG_Config2 0x10 +#define REG_Angle_Tune 0x11 +#define REG_Frame_Capture 0x12 +#define REG_SROM_Enable 0x13 +#define REG_Run_Downshift 0x14 +#define REG_Rest1_Rate_Lower 0x15 +#define REG_Rest1_Rate_Upper 0x16 +#define REG_Rest1_Downshift 0x17 +#define REG_Rest2_Rate_Lower 0x18 +#define REG_Rest2_Rate_Upper 0x19 +#define REG_Rest2_Downshift 0x1A +#define REG_Rest3_Rate_Lower 0x1B +#define REG_Rest3_Rate_Upper 0x1C +#define REG_Observation 0x24 +#define REG_Data_Out_Lower 0x25 +#define REG_Data_Out_Upper 0x26 +#define REG_Raw_Data_Dump 0x29 +#define REG_SROM_ID 0x2A +#define REG_Min_SQ_Run 0x2B +#define REG_Raw_Data_Threshold 0x2C +#define REG_Config5 0x2F +#define REG_Power_Up_Reset 0x3A +#define REG_Shutdown 0x3B +#define REG_Inverse_Product_ID 0x3F +#define REG_LiftCutoff_Tune3 0x41 +#define REG_Angle_Snap 0x42 +#define REG_LiftCutoff_Tune1 0x4A +#define REG_Motion_Burst 0x50 +#define REG_LiftCutoff_Tune_Timeout 0x58 +#define REG_LiftCutoff_Tune_Min_Length 0x5A +#define REG_SROM_Load_Burst 0x62 +#define REG_Lift_Config 0x63 +#define REG_Raw_Data_Burst 0x64 +#define REG_LiftCutoff_Tune2 0x65 +// clang-format on + +#ifndef MAX_CPI +# define MAX_CPI 0x77 // limits to 0--119, should be max cpi/100 +#endif + +bool _inBurst = false; + +#ifdef CONSOLE_ENABLE +void print_byte(uint8_t byte) { dprintf("%c%c%c%c%c%c%c%c|", (byte & 0x80 ? '1' : '0'), (byte & 0x40 ? '1' : '0'), (byte & 0x20 ? '1' : '0'), (byte & 0x10 ? '1' : '0'), (byte & 0x08 ? '1' : '0'), (byte & 0x04 ? '1' : '0'), (byte & 0x02 ? '1' : '0'), (byte & 0x01 ? '1' : '0')); } +#endif +#define constrain(amt, low, high) ((amt) < (low) ? (low) : ((amt) > (high) ? (high) : (amt))) + +bool spi_start_adv(void) { + bool status = spi_start(PMW3360_CS_PIN, PMW3360_SPI_LSBFIRST, PMW3360_SPI_MODE, PMW3360_SPI_DIVISOR); + wait_us(1); + return status; +} + +void spi_stop_adv(void) { + wait_us(1); + spi_stop(); +} + +spi_status_t spi_write_adv(uint8_t reg_addr, uint8_t data) { + if (reg_addr != REG_Motion_Burst) { + _inBurst = false; + } + + spi_start_adv(); + // send address of the register, with MSBit = 1 to indicate it's a write + spi_status_t status = spi_write(reg_addr | 0x80); + status = spi_write(data); + + // tSCLK-NCS for write operation + wait_us(20); + + // tSWW/tSWR (=120us) minus tSCLK-NCS. Could be shortened, but is looks like a safe lower bound + wait_us(100); + spi_stop(); + return status; +} + +uint8_t spi_read_adv(uint8_t reg_addr) { + spi_start_adv(); + // send adress of the register, with MSBit = 0 to indicate it's a read + spi_write(reg_addr & 0x7f); + + uint8_t data = spi_read(); + + // tSCLK-NCS for read operation is 120ns + wait_us(1); + + // tSRW/tSRR (=20us) minus tSCLK-NCS + wait_us(19); + + spi_stop(); + return data; +} + +void pmw3360_set_cpi(uint16_t cpi) { + uint8_t cpival = constrain((cpi / 100) - 1, 0, MAX_CPI); + + spi_start_adv(); + spi_write_adv(REG_Config1, cpival); + spi_stop(); +} + +uint16_t pmw3360_get_cpi(void) { + uint8_t cpival = spi_read_adv(REG_Config1); + return (uint16_t)(cpival & 0xFF) * 100; +} + +bool pmw3360_init(void) { + setPinOutput(PMW3360_CS_PIN); + + spi_init(); + _inBurst = false; + + spi_stop(); + spi_start_adv(); + spi_stop(); + + spi_write_adv(REG_Shutdown, 0xb6); // Shutdown first + wait_ms(300); + + spi_start_adv(); + wait_us(40); + spi_stop_adv(); + wait_us(40); + + spi_write_adv(REG_Power_Up_Reset, 0x5a); + wait_ms(50); + + spi_read_adv(REG_Motion); + spi_read_adv(REG_Delta_X_L); + spi_read_adv(REG_Delta_X_H); + spi_read_adv(REG_Delta_Y_L); + spi_read_adv(REG_Delta_Y_H); + + pmw3360_upload_firmware(); + + spi_stop_adv(); + + wait_ms(10); + pmw3360_set_cpi(PMW3360_CPI); + + wait_ms(1); + + spi_write_adv(REG_Config2, 0x00); + + spi_write_adv(REG_Angle_Tune, constrain(ROTATIONAL_TRANSFORM_ANGLE, -30, 30)); + + bool init_success = pmw3360_check_signature(); + + writePinLow(PMW3360_CS_PIN); + + return init_success; +} + +void pmw3360_upload_firmware(void) { + spi_write_adv(REG_SROM_Enable, 0x1d); + + wait_ms(10); + + spi_write_adv(REG_SROM_Enable, 0x18); + + spi_start_adv(); + spi_write(REG_SROM_Load_Burst | 0x80); + wait_us(15); + + unsigned char c; + for (int i = 0; i < FIRMWARE_LENGTH; i++) { + c = (unsigned char)pgm_read_byte(firmware_data + i); + spi_write(c); + wait_us(15); + } + wait_us(200); + + spi_read_adv(REG_SROM_ID); + + spi_write_adv(REG_Config2, 0x00); + + spi_stop(); + wait_ms(10); +} + +bool pmw3360_check_signature(void) { + uint8_t pid = spi_read_adv(REG_Product_ID); + uint8_t iv_pid = spi_read_adv(REG_Inverse_Product_ID); + uint8_t SROM_ver = spi_read_adv(REG_SROM_ID); + return (pid == firmware_signature[0] && iv_pid == firmware_signature[1] && SROM_ver == firmware_signature[2]); // signature for SROM 0x04 +} + +report_pmw3360_t pmw3360_read_burst(void) { + if (!_inBurst) { +#ifdef CONSOLE_ENABLE + dprintf("burst on"); +#endif + spi_write_adv(REG_Motion_Burst, 0x00); + _inBurst = true; + } + + spi_start_adv(); + spi_write(REG_Motion_Burst); + wait_us(35); // waits for tSRAD + + report_pmw3360_t data = {0}; + + data.motion = spi_read(); + spi_write(0x00); // skip Observation + data.dx = spi_read(); + data.mdx = spi_read(); + data.dy = spi_read(); + data.mdy = spi_read(); + + spi_stop(); + +#ifdef CONSOLE_ENABLE + if (debug_mouse) { + print_byte(data.motion); + print_byte(data.dx); + print_byte(data.mdx); + print_byte(data.dy); + print_byte(data.mdy); + dprintf("\n"); + } +#endif + + data.isMotion = (data.motion & 0x80) != 0; + data.isOnSurface = (data.motion & 0x08) == 0; + data.dx |= (data.mdx << 8); + data.dx = data.dx * -1; + data.dy |= (data.mdy << 8); + data.dy = data.dy * -1; + + spi_stop(); + + if (data.motion & 0b111) { // panic recovery, sometimes burst mode works weird. + _inBurst = false; + } + + return data; +} diff --git a/drivers/sensors/pmw3360.h b/drivers/sensors/pmw3360.h new file mode 100644 index 000000000000..7b2bef5b80b3 --- /dev/null +++ b/drivers/sensors/pmw3360.h @@ -0,0 +1,94 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * Copyright 2019 Sunjun Kim + * Copyright 2020 Ploopy Corporation + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include +#include "report.h" +#include "spi_master.h" + +#ifndef PMW3360_CPI +# define PMW3360_CPI 1600 +#endif + +#ifndef PMW3360_CLOCK_SPEED +# define PMW3360_CLOCK_SPEED 2000000 +#endif + +#ifndef PMW3360_SPI_LSBFIRST +# define PMW3360_SPI_LSBFIRST false +#endif + +#ifndef PMW3360_SPI_MODE +# define PMW3360_SPI_MODE 3 +#endif + +#ifndef PMW3360_SPI_DIVISOR +# ifdef __AVR__ +# define PMW3360_SPI_DIVISOR (F_CPU / PMW3360_CLOCK_SPEED) +# else +# define PMW3360_SPI_DIVISOR 64 +# endif +#endif + +#ifndef ROTATIONAL_TRANSFORM_ANGLE +# define ROTATIONAL_TRANSFORM_ANGLE 0x00 +#endif + +#ifndef PMW3360_CS_PIN +# error "No chip select pin defined -- missing PMW3360_CS_PIN" +#endif + +/* +The pmw33660 and pmw3389 use the same registers and timing and such. +The only differences between the two is the firmware used, and the +range for the DPI. So add a semi-secret hack to allow use of the +pmw3389's firmware blob. Also, can set the max cpi range too. +This should work for the 3390 and 3391 too, in theory. +*/ +#ifndef PMW3360_FIRMWARE_H +# define PMW3360_FIRMWARE_H "pmw3360_firmware.h" +#endif + +#ifdef CONSOLE_ENABLE +void print_byte(uint8_t byte); +#endif + +typedef struct { + int8_t motion; + bool isMotion; // True if a motion is detected. + bool isOnSurface; // True when a chip is on a surface + int16_t dx; // displacement on x directions. Unit: Count. (CPI * Count = Inch value) + int8_t mdx; + int16_t dy; // displacement on y directions. + int8_t mdy; +} report_pmw3360_t; + +bool spi_start_adv(void); +void spi_stop_adv(void); +spi_status_t spi_write_adv(uint8_t reg_addr, uint8_t data); +uint8_t spi_read_adv(uint8_t reg_addr); +bool pmw3360_init(void); +void pmw3360_set_cpi(uint16_t cpi); +uint16_t pmw3360_get_cpi(void); +void pmw3360_upload_firmware(void); +bool pmw3360_check_signature(void); +report_pmw3360_t pmw3360_read_burst(void); + +#define degToRad(angleInDegrees) ((angleInDegrees)*M_PI / 180.0) +#define radToDeg(angleInRadians) ((angleInRadians)*180.0 / M_PI) diff --git a/drivers/sensors/pmw3360_firmware.h b/drivers/sensors/pmw3360_firmware.h new file mode 100644 index 000000000000..ed9fda5a7510 --- /dev/null +++ b/drivers/sensors/pmw3360_firmware.h @@ -0,0 +1,288 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * Copyright 2019 Sunjun Kim + * Copyright 2020 Ploopy Corporation + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "progmem.h" + +// PID, Inverse PID, SROM version +const uint8_t firmware_signature[] PROGMEM = {0x42, 0xBD, 0x04}; + +#define FIRMWARE_LENGTH 4094 + +// Firmware Blob foor PMW3360 + +// clang-format off +const uint8_t firmware_data[FIRMWARE_LENGTH] PROGMEM = { + 0x01, 0x04, 0x8E, 0x96, 0x6E, 0x77, 0x3E, 0xFE, 0x7E, 0x5F, 0x1D, 0xB8, 0xF2, 0x66, 0x4E, 0xFF, + 0x5D, 0x19, 0xB0, 0xC2, 0x04, 0x69, 0x54, 0x2A, 0xD6, 0x2E, 0xBF, 0xDD, 0x19, 0xB0, 0xC3, 0xE5, + 0x29, 0xB1, 0xE0, 0x23, 0xA5, 0xA9, 0xB1, 0xC1, 0x00, 0x82, 0x67, 0x4C, 0x1A, 0x97, 0x8D, 0x79, + 0x51, 0x20, 0xC7, 0x06, 0x8E, 0x7C, 0x7C, 0x7A, 0x76, 0x4F, 0xFD, 0x59, 0x30, 0xE2, 0x46, 0x0E, + 0x9E, 0xBE, 0xDF, 0x1D, 0x99, 0x91, 0xA0, 0xA5, 0xA1, 0xA9, 0xD0, 0x22, 0xC6, 0xEF, 0x5C, 0x1B, + 0x95, 0x89, 0x90, 0xA2, 0xA7, 0xCC, 0xFB, 0x55, 0x28, 0xB3, 0xE4, 0x4A, 0xF7, 0x6C, 0x3B, 0xF4, + 0x6A, 0x56, 0x2E, 0xDE, 0x1F, 0x9D, 0xB8, 0xD3, 0x05, 0x88, 0x92, 0xA6, 0xCE, 0x1E, 0xBE, 0xDF, + 0x1D, 0x99, 0xB0, 0xE2, 0x46, 0xEF, 0x5C, 0x07, 0x11, 0x5D, 0x98, 0x0B, 0x9D, 0x94, 0x97, 0xEE, + 0x4E, 0x45, 0x33, 0x6B, 0x44, 0xC7, 0x29, 0x56, 0x27, 0x30, 0xC6, 0xA7, 0xD5, 0xF2, 0x56, 0xDF, + 0xB4, 0x38, 0x62, 0xCB, 0xA0, 0xB6, 0xE3, 0x0F, 0x84, 0x06, 0x24, 0x05, 0x65, 0x6F, 0x76, 0x89, + 0xB5, 0x77, 0x41, 0x27, 0x82, 0x66, 0x65, 0x82, 0xCC, 0xD5, 0xE6, 0x20, 0xD5, 0x27, 0x17, 0xC5, + 0xF8, 0x03, 0x23, 0x7C, 0x5F, 0x64, 0xA5, 0x1D, 0xC1, 0xD6, 0x36, 0xCB, 0x4C, 0xD4, 0xDB, 0x66, + 0xD7, 0x8B, 0xB1, 0x99, 0x7E, 0x6F, 0x4C, 0x36, 0x40, 0x06, 0xD6, 0xEB, 0xD7, 0xA2, 0xE4, 0xF4, + 0x95, 0x51, 0x5A, 0x54, 0x96, 0xD5, 0x53, 0x44, 0xD7, 0x8C, 0xE0, 0xB9, 0x40, 0x68, 0xD2, 0x18, + 0xE9, 0xDD, 0x9A, 0x23, 0x92, 0x48, 0xEE, 0x7F, 0x43, 0xAF, 0xEA, 0x77, 0x38, 0x84, 0x8C, 0x0A, + 0x72, 0xAF, 0x69, 0xF8, 0xDD, 0xF1, 0x24, 0x83, 0xA3, 0xF8, 0x4A, 0xBF, 0xF5, 0x94, 0x13, 0xDB, + 0xBB, 0xD8, 0xB4, 0xB3, 0xA0, 0xFB, 0x45, 0x50, 0x60, 0x30, 0x59, 0x12, 0x31, 0x71, 0xA2, 0xD3, + 0x13, 0xE7, 0xFA, 0xE7, 0xCE, 0x0F, 0x63, 0x15, 0x0B, 0x6B, 0x94, 0xBB, 0x37, 0x83, 0x26, 0x05, + 0x9D, 0xFB, 0x46, 0x92, 0xFC, 0x0A, 0x15, 0xD1, 0x0D, 0x73, 0x92, 0xD6, 0x8C, 0x1B, 0x8C, 0xB8, + 0x55, 0x8A, 0xCE, 0xBD, 0xFE, 0x8E, 0xFC, 0xED, 0x09, 0x12, 0x83, 0x91, 0x82, 0x51, 0x31, 0x23, + 0xFB, 0xB4, 0x0C, 0x76, 0xAD, 0x7C, 0xD9, 0xB4, 0x4B, 0xB2, 0x67, 0x14, 0x09, 0x9C, 0x7F, 0x0C, + 0x18, 0xBA, 0x3B, 0xD6, 0x8E, 0x14, 0x2A, 0xE4, 0x1B, 0x52, 0x9F, 0x2B, 0x7D, 0xE1, 0xFB, 0x6A, + 0x33, 0x02, 0xFA, 0xAC, 0x5A, 0xF2, 0x3E, 0x88, 0x7E, 0xAE, 0xD1, 0xF3, 0x78, 0xE8, 0x05, 0xD1, + 0xE3, 0xDC, 0x21, 0xF6, 0xE1, 0x9A, 0xBD, 0x17, 0x0E, 0xD9, 0x46, 0x9B, 0x88, 0x03, 0xEA, 0xF6, + 0x66, 0xBE, 0x0E, 0x1B, 0x50, 0x49, 0x96, 0x40, 0x97, 0xF1, 0xF1, 0xE4, 0x80, 0xA6, 0x6E, 0xE8, + 0x77, 0x34, 0xBF, 0x29, 0x40, 0x44, 0xC2, 0xFF, 0x4E, 0x98, 0xD3, 0x9C, 0xA3, 0x32, 0x2B, 0x76, + 0x51, 0x04, 0x09, 0xE7, 0xA9, 0xD1, 0xA6, 0x32, 0xB1, 0x23, 0x53, 0xE2, 0x47, 0xAB, 0xD6, 0xF5, + 0x69, 0x5C, 0x3E, 0x5F, 0xFA, 0xAE, 0x45, 0x20, 0xE5, 0xD2, 0x44, 0xFF, 0x39, 0x32, 0x6D, 0xFD, + 0x27, 0x57, 0x5C, 0xFD, 0xF0, 0xDE, 0xC1, 0xB5, 0x99, 0xE5, 0xF5, 0x1C, 0x77, 0x01, 0x75, 0xC5, + 0x6D, 0x58, 0x92, 0xF2, 0xB2, 0x47, 0x00, 0x01, 0x26, 0x96, 0x7A, 0x30, 0xFF, 0xB7, 0xF0, 0xEF, + 0x77, 0xC1, 0x8A, 0x5D, 0xDC, 0xC0, 0xD1, 0x29, 0x30, 0x1E, 0x77, 0x38, 0x7A, 0x94, 0xF1, 0xB8, + 0x7A, 0x7E, 0xEF, 0xA4, 0xD1, 0xAC, 0x31, 0x4A, 0xF2, 0x5D, 0x64, 0x3D, 0xB2, 0xE2, 0xF0, 0x08, + 0x99, 0xFC, 0x70, 0xEE, 0x24, 0xA7, 0x7E, 0xEE, 0x1E, 0x20, 0x69, 0x7D, 0x44, 0xBF, 0x87, 0x42, + 0xDF, 0x88, 0x3B, 0x0C, 0xDA, 0x42, 0xC9, 0x04, 0xF9, 0x45, 0x50, 0xFC, 0x83, 0x8F, 0x11, 0x6A, + 0x72, 0xBC, 0x99, 0x95, 0xF0, 0xAC, 0x3D, 0xA7, 0x3B, 0xCD, 0x1C, 0xE2, 0x88, 0x79, 0x37, 0x11, + 0x5F, 0x39, 0x89, 0x95, 0x0A, 0x16, 0x84, 0x7A, 0xF6, 0x8A, 0xA4, 0x28, 0xE4, 0xED, 0x83, 0x80, + 0x3B, 0xB1, 0x23, 0xA5, 0x03, 0x10, 0xF4, 0x66, 0xEA, 0xBB, 0x0C, 0x0F, 0xC5, 0xEC, 0x6C, 0x69, + 0xC5, 0xD3, 0x24, 0xAB, 0xD4, 0x2A, 0xB7, 0x99, 0x88, 0x76, 0x08, 0xA0, 0xA8, 0x95, 0x7C, 0xD8, + 0x38, 0x6D, 0xCD, 0x59, 0x02, 0x51, 0x4B, 0xF1, 0xB5, 0x2B, 0x50, 0xE3, 0xB6, 0xBD, 0xD0, 0x72, + 0xCF, 0x9E, 0xFD, 0x6E, 0xBB, 0x44, 0xC8, 0x24, 0x8A, 0x77, 0x18, 0x8A, 0x13, 0x06, 0xEF, 0x97, + 0x7D, 0xFA, 0x81, 0xF0, 0x31, 0xE6, 0xFA, 0x77, 0xED, 0x31, 0x06, 0x31, 0x5B, 0x54, 0x8A, 0x9F, + 0x30, 0x68, 0xDB, 0xE2, 0x40, 0xF8, 0x4E, 0x73, 0xFA, 0xAB, 0x74, 0x8B, 0x10, 0x58, 0x13, 0xDC, + 0xD2, 0xE6, 0x78, 0xD1, 0x32, 0x2E, 0x8A, 0x9F, 0x2C, 0x58, 0x06, 0x48, 0x27, 0xC5, 0xA9, 0x5E, + 0x81, 0x47, 0x89, 0x46, 0x21, 0x91, 0x03, 0x70, 0xA4, 0x3E, 0x88, 0x9C, 0xDA, 0x33, 0x0A, 0xCE, + 0xBC, 0x8B, 0x8E, 0xCF, 0x9F, 0xD3, 0x71, 0x80, 0x43, 0xCF, 0x6B, 0xA9, 0x51, 0x83, 0x76, 0x30, + 0x82, 0xC5, 0x6A, 0x85, 0x39, 0x11, 0x50, 0x1A, 0x82, 0xDC, 0x1E, 0x1C, 0xD5, 0x7D, 0xA9, 0x71, + 0x99, 0x33, 0x47, 0x19, 0x97, 0xB3, 0x5A, 0xB1, 0xDF, 0xED, 0xA4, 0xF2, 0xE6, 0x26, 0x84, 0xA2, + 0x28, 0x9A, 0x9E, 0xDF, 0xA6, 0x6A, 0xF4, 0xD6, 0xFC, 0x2E, 0x5B, 0x9D, 0x1A, 0x2A, 0x27, 0x68, + 0xFB, 0xC1, 0x83, 0x21, 0x4B, 0x90, 0xE0, 0x36, 0xDD, 0x5B, 0x31, 0x42, 0x55, 0xA0, 0x13, 0xF7, + 0xD0, 0x89, 0x53, 0x71, 0x99, 0x57, 0x09, 0x29, 0xC5, 0xF3, 0x21, 0xF8, 0x37, 0x2F, 0x40, 0xF3, + 0xD4, 0xAF, 0x16, 0x08, 0x36, 0x02, 0xFC, 0x77, 0xC5, 0x8B, 0x04, 0x90, 0x56, 0xB9, 0xC9, 0x67, + 0x9A, 0x99, 0xE8, 0x00, 0xD3, 0x86, 0xFF, 0x97, 0x2D, 0x08, 0xE9, 0xB7, 0xB3, 0x91, 0xBC, 0xDF, + 0x45, 0xC6, 0xED, 0x0F, 0x8C, 0x4C, 0x1E, 0xE6, 0x5B, 0x6E, 0x38, 0x30, 0xE4, 0xAA, 0xE3, 0x95, + 0xDE, 0xB9, 0xE4, 0x9A, 0xF5, 0xB2, 0x55, 0x9A, 0x87, 0x9B, 0xF6, 0x6A, 0xB2, 0xF2, 0x77, 0x9A, + 0x31, 0xF4, 0x7A, 0x31, 0xD1, 0x1D, 0x04, 0xC0, 0x7C, 0x32, 0xA2, 0x9E, 0x9A, 0xF5, 0x62, 0xF8, + 0x27, 0x8D, 0xBF, 0x51, 0xFF, 0xD3, 0xDF, 0x64, 0x37, 0x3F, 0x2A, 0x6F, 0x76, 0x3A, 0x7D, 0x77, + 0x06, 0x9E, 0x77, 0x7F, 0x5E, 0xEB, 0x32, 0x51, 0xF9, 0x16, 0x66, 0x9A, 0x09, 0xF3, 0xB0, 0x08, + 0xA4, 0x70, 0x96, 0x46, 0x30, 0xFF, 0xDA, 0x4F, 0xE9, 0x1B, 0xED, 0x8D, 0xF8, 0x74, 0x1F, 0x31, + 0x92, 0xB3, 0x73, 0x17, 0x36, 0xDB, 0x91, 0x30, 0xD6, 0x88, 0x55, 0x6B, 0x34, 0x77, 0x87, 0x7A, + 0xE7, 0xEE, 0x06, 0xC6, 0x1C, 0x8C, 0x19, 0x0C, 0x48, 0x46, 0x23, 0x5E, 0x9C, 0x07, 0x5C, 0xBF, + 0xB4, 0x7E, 0xD6, 0x4F, 0x74, 0x9C, 0xE2, 0xC5, 0x50, 0x8B, 0xC5, 0x8B, 0x15, 0x90, 0x60, 0x62, + 0x57, 0x29, 0xD0, 0x13, 0x43, 0xA1, 0x80, 0x88, 0x91, 0x00, 0x44, 0xC7, 0x4D, 0x19, 0x86, 0xCC, + 0x2F, 0x2A, 0x75, 0x5A, 0xFC, 0xEB, 0x97, 0x2A, 0x70, 0xE3, 0x78, 0xD8, 0x91, 0xB0, 0x4F, 0x99, + 0x07, 0xA3, 0x95, 0xEA, 0x24, 0x21, 0xD5, 0xDE, 0x51, 0x20, 0x93, 0x27, 0x0A, 0x30, 0x73, 0xA8, + 0xFF, 0x8A, 0x97, 0xE9, 0xA7, 0x6A, 0x8E, 0x0D, 0xE8, 0xF0, 0xDF, 0xEC, 0xEA, 0xB4, 0x6C, 0x1D, + 0x39, 0x2A, 0x62, 0x2D, 0x3D, 0x5A, 0x8B, 0x65, 0xF8, 0x90, 0x05, 0x2E, 0x7E, 0x91, 0x2C, 0x78, + 0xEF, 0x8E, 0x7A, 0xC1, 0x2F, 0xAC, 0x78, 0xEE, 0xAF, 0x28, 0x45, 0x06, 0x4C, 0x26, 0xAF, 0x3B, + 0xA2, 0xDB, 0xA3, 0x93, 0x06, 0xB5, 0x3C, 0xA5, 0xD8, 0xEE, 0x8F, 0xAF, 0x25, 0xCC, 0x3F, 0x85, + 0x68, 0x48, 0xA9, 0x62, 0xCC, 0x97, 0x8F, 0x7F, 0x2A, 0xEA, 0xE0, 0x15, 0x0A, 0xAD, 0x62, 0x07, + 0xBD, 0x45, 0xF8, 0x41, 0xD8, 0x36, 0xCB, 0x4C, 0xDB, 0x6E, 0xE6, 0x3A, 0xE7, 0xDA, 0x15, 0xE9, + 0x29, 0x1E, 0x12, 0x10, 0xA0, 0x14, 0x2C, 0x0E, 0x3D, 0xF4, 0xBF, 0x39, 0x41, 0x92, 0x75, 0x0B, + 0x25, 0x7B, 0xA3, 0xCE, 0x39, 0x9C, 0x15, 0x64, 0xC8, 0xFA, 0x3D, 0xEF, 0x73, 0x27, 0xFE, 0x26, + 0x2E, 0xCE, 0xDA, 0x6E, 0xFD, 0x71, 0x8E, 0xDD, 0xFE, 0x76, 0xEE, 0xDC, 0x12, 0x5C, 0x02, 0xC5, + 0x3A, 0x4E, 0x4E, 0x4F, 0xBF, 0xCA, 0x40, 0x15, 0xC7, 0x6E, 0x8D, 0x41, 0xF1, 0x10, 0xE0, 0x4F, + 0x7E, 0x97, 0x7F, 0x1C, 0xAE, 0x47, 0x8E, 0x6B, 0xB1, 0x25, 0x31, 0xB0, 0x73, 0xC7, 0x1B, 0x97, + 0x79, 0xF9, 0x80, 0xD3, 0x66, 0x22, 0x30, 0x07, 0x74, 0x1E, 0xE4, 0xD0, 0x80, 0x21, 0xD6, 0xEE, + 0x6B, 0x6C, 0x4F, 0xBF, 0xF5, 0xB7, 0xD9, 0x09, 0x87, 0x2F, 0xA9, 0x14, 0xBE, 0x27, 0xD9, 0x72, + 0x50, 0x01, 0xD4, 0x13, 0x73, 0xA6, 0xA7, 0x51, 0x02, 0x75, 0x25, 0xE1, 0xB3, 0x45, 0x34, 0x7D, + 0xA8, 0x8E, 0xEB, 0xF3, 0x16, 0x49, 0xCB, 0x4F, 0x8C, 0xA1, 0xB9, 0x36, 0x85, 0x39, 0x75, 0x5D, + 0x08, 0x00, 0xAE, 0xEB, 0xF6, 0xEA, 0xD7, 0x13, 0x3A, 0x21, 0x5A, 0x5F, 0x30, 0x84, 0x52, 0x26, + 0x95, 0xC9, 0x14, 0xF2, 0x57, 0x55, 0x6B, 0xB1, 0x10, 0xC2, 0xE1, 0xBD, 0x3B, 0x51, 0xC0, 0xB7, + 0x55, 0x4C, 0x71, 0x12, 0x26, 0xC7, 0x0D, 0xF9, 0x51, 0xA4, 0x38, 0x02, 0x05, 0x7F, 0xB8, 0xF1, + 0x72, 0x4B, 0xBF, 0x71, 0x89, 0x14, 0xF3, 0x77, 0x38, 0xD9, 0x71, 0x24, 0xF3, 0x00, 0x11, 0xA1, + 0xD8, 0xD4, 0x69, 0x27, 0x08, 0x37, 0x35, 0xC9, 0x11, 0x9D, 0x90, 0x1C, 0x0E, 0xE7, 0x1C, 0xFF, + 0x2D, 0x1E, 0xE8, 0x92, 0xE1, 0x18, 0x10, 0x95, 0x7C, 0xE0, 0x80, 0xF4, 0x96, 0x43, 0x21, 0xF9, + 0x75, 0x21, 0x64, 0x38, 0xDD, 0x9F, 0x1E, 0x95, 0x16, 0xDA, 0x56, 0x1D, 0x4F, 0x9A, 0x53, 0xB2, + 0xE2, 0xE4, 0x18, 0xCB, 0x6B, 0x1A, 0x65, 0xEB, 0x56, 0xC6, 0x3B, 0xE5, 0xFE, 0xD8, 0x26, 0x3F, + 0x3A, 0x84, 0x59, 0x72, 0x66, 0xA2, 0xF3, 0x75, 0xFF, 0xFB, 0x60, 0xB3, 0x22, 0xAD, 0x3F, 0x2D, + 0x6B, 0xF9, 0xEB, 0xEA, 0x05, 0x7C, 0xD8, 0x8F, 0x6D, 0x2C, 0x98, 0x9E, 0x2B, 0x93, 0xF1, 0x5E, + 0x46, 0xF0, 0x87, 0x49, 0x29, 0x73, 0x68, 0xD7, 0x7F, 0xF9, 0xF0, 0xE5, 0x7D, 0xDB, 0x1D, 0x75, + 0x19, 0xF3, 0xC4, 0x58, 0x9B, 0x17, 0x88, 0xA8, 0x92, 0xE0, 0xBE, 0xBD, 0x8B, 0x1D, 0x8D, 0x9F, + 0x56, 0x76, 0xAD, 0xAF, 0x29, 0xE2, 0xD9, 0xD5, 0x52, 0xF6, 0xB5, 0x56, 0x35, 0x57, 0x3A, 0xC8, + 0xE1, 0x56, 0x43, 0x19, 0x94, 0xD3, 0x04, 0x9B, 0x6D, 0x35, 0xD8, 0x0B, 0x5F, 0x4D, 0x19, 0x8E, + 0xEC, 0xFA, 0x64, 0x91, 0x0A, 0x72, 0x20, 0x2B, 0xBC, 0x1A, 0x4A, 0xFE, 0x8B, 0xFD, 0xBB, 0xED, + 0x1B, 0x23, 0xEA, 0xAD, 0x72, 0x82, 0xA1, 0x29, 0x99, 0x71, 0xBD, 0xF0, 0x95, 0xC1, 0x03, 0xDD, + 0x7B, 0xC2, 0xB2, 0x3C, 0x28, 0x54, 0xD3, 0x68, 0xA4, 0x72, 0xC8, 0x66, 0x96, 0xE0, 0xD1, 0xD8, + 0x7F, 0xF8, 0xD1, 0x26, 0x2B, 0xF7, 0xAD, 0xBA, 0x55, 0xCA, 0x15, 0xB9, 0x32, 0xC3, 0xE5, 0x88, + 0x97, 0x8E, 0x5C, 0xFB, 0x92, 0x25, 0x8B, 0xBF, 0xA2, 0x45, 0x55, 0x7A, 0xA7, 0x6F, 0x8B, 0x57, + 0x5B, 0xCF, 0x0E, 0xCB, 0x1D, 0xFB, 0x20, 0x82, 0x77, 0xA8, 0x8C, 0xCC, 0x16, 0xCE, 0x1D, 0xFA, + 0xDE, 0xCC, 0x0B, 0x62, 0xFE, 0xCC, 0xE1, 0xB7, 0xF0, 0xC3, 0x81, 0x64, 0x73, 0x40, 0xA0, 0xC2, + 0x4D, 0x89, 0x11, 0x75, 0x33, 0x55, 0x33, 0x8D, 0xE8, 0x4A, 0xFD, 0xEA, 0x6E, 0x30, 0x0B, 0xD7, + 0x31, 0x2C, 0xDE, 0x47, 0xE3, 0xBF, 0xF8, 0x55, 0x42, 0xE2, 0x7F, 0x59, 0xE5, 0x17, 0xEF, 0x99, + 0x34, 0x69, 0x91, 0xB1, 0x23, 0x8E, 0x20, 0x87, 0x2D, 0xA8, 0xFE, 0xD5, 0x8A, 0xF3, 0x84, 0x3A, + 0xF0, 0x37, 0xE4, 0x09, 0x00, 0x54, 0xEE, 0x67, 0x49, 0x93, 0xE4, 0x81, 0x70, 0xE3, 0x90, 0x4D, + 0xEF, 0xFE, 0x41, 0xB7, 0x99, 0x7B, 0xC1, 0x83, 0xBA, 0x62, 0x12, 0x6F, 0x7D, 0xDE, 0x6B, 0xAF, + 0xDA, 0x16, 0xF9, 0x55, 0x51, 0xEE, 0xA6, 0x0C, 0x2B, 0x02, 0xA3, 0xFD, 0x8D, 0xFB, 0x30, 0x17, + 0xE4, 0x6F, 0xDF, 0x36, 0x71, 0xC4, 0xCA, 0x87, 0x25, 0x48, 0xB0, 0x47, 0xEC, 0xEA, 0xB4, 0xBF, + 0xA5, 0x4D, 0x9B, 0x9F, 0x02, 0x93, 0xC4, 0xE3, 0xE4, 0xE8, 0x42, 0x2D, 0x68, 0x81, 0x15, 0x0A, + 0xEB, 0x84, 0x5B, 0xD6, 0xA8, 0x74, 0xFB, 0x7D, 0x1D, 0xCB, 0x2C, 0xDA, 0x46, 0x2A, 0x76, 0x62, + 0xCE, 0xBC, 0x5C, 0x9E, 0x8B, 0xE7, 0xCF, 0xBE, 0x78, 0xF5, 0x7C, 0xEB, 0xB3, 0x3A, 0x9C, 0xAA, + 0x6F, 0xCC, 0x72, 0xD1, 0x59, 0xF2, 0x11, 0x23, 0xD6, 0x3F, 0x48, 0xD1, 0xB7, 0xCE, 0xB0, 0xBF, + 0xCB, 0xEA, 0x80, 0xDE, 0x57, 0xD4, 0x5E, 0x97, 0x2F, 0x75, 0xD1, 0x50, 0x8E, 0x80, 0x2C, 0x66, + 0x79, 0xBF, 0x72, 0x4B, 0xBD, 0x8A, 0x81, 0x6C, 0xD3, 0xE1, 0x01, 0xDC, 0xD2, 0x15, 0x26, 0xC5, + 0x36, 0xDA, 0x2C, 0x1A, 0xC0, 0x27, 0x94, 0xED, 0xB7, 0x9B, 0x85, 0x0B, 0x5E, 0x80, 0x97, 0xC5, + 0xEC, 0x4F, 0xEC, 0x88, 0x5D, 0x50, 0x07, 0x35, 0x47, 0xDC, 0x0B, 0x3B, 0x3D, 0xDD, 0x60, 0xAF, + 0xA8, 0x5D, 0x81, 0x38, 0x24, 0x25, 0x5D, 0x5C, 0x15, 0xD1, 0xDE, 0xB3, 0xAB, 0xEC, 0x05, 0x69, + 0xEF, 0x83, 0xED, 0x57, 0x54, 0xB8, 0x64, 0x64, 0x11, 0x16, 0x32, 0x69, 0xDA, 0x9F, 0x2D, 0x7F, + 0x36, 0xBB, 0x44, 0x5A, 0x34, 0xE8, 0x7F, 0xBF, 0x03, 0xEB, 0x00, 0x7F, 0x59, 0x68, 0x22, 0x79, + 0xCF, 0x73, 0x6C, 0x2C, 0x29, 0xA7, 0xA1, 0x5F, 0x38, 0xA1, 0x1D, 0xF0, 0x20, 0x53, 0xE0, 0x1A, + 0x63, 0x14, 0x58, 0x71, 0x10, 0xAA, 0x08, 0x0C, 0x3E, 0x16, 0x1A, 0x60, 0x22, 0x82, 0x7F, 0xBA, + 0xA4, 0x43, 0xA0, 0xD0, 0xAC, 0x1B, 0xD5, 0x6B, 0x64, 0xB5, 0x14, 0x93, 0x31, 0x9E, 0x53, 0x50, + 0xD0, 0x57, 0x66, 0xEE, 0x5A, 0x4F, 0xFB, 0x03, 0x2A, 0x69, 0x58, 0x76, 0xF1, 0x83, 0xF7, 0x4E, + 0xBA, 0x8C, 0x42, 0x06, 0x60, 0x5D, 0x6D, 0xCE, 0x60, 0x88, 0xAE, 0xA4, 0xC3, 0xF1, 0x03, 0xA5, + 0x4B, 0x98, 0xA1, 0xFF, 0x67, 0xE1, 0xAC, 0xA2, 0xB8, 0x62, 0xD7, 0x6F, 0xA0, 0x31, 0xB4, 0xD2, + 0x77, 0xAF, 0x21, 0x10, 0x06, 0xC6, 0x9A, 0xFF, 0x1D, 0x09, 0x17, 0x0E, 0x5F, 0xF1, 0xAA, 0x54, + 0x34, 0x4B, 0x45, 0x8A, 0x87, 0x63, 0xA6, 0xDC, 0xF9, 0x24, 0x30, 0x67, 0xC6, 0xB2, 0xD6, 0x61, + 0x33, 0x69, 0xEE, 0x50, 0x61, 0x57, 0x28, 0xE7, 0x7E, 0xEE, 0xEC, 0x3A, 0x5A, 0x73, 0x4E, 0xA8, + 0x8D, 0xE4, 0x18, 0xEA, 0xEC, 0x41, 0x64, 0xC8, 0xE2, 0xE8, 0x66, 0xB6, 0x2D, 0xB6, 0xFB, 0x6A, + 0x6C, 0x16, 0xB3, 0xDD, 0x46, 0x43, 0xB9, 0x73, 0x00, 0x6A, 0x71, 0xED, 0x4E, 0x9D, 0x25, 0x1A, + 0xC3, 0x3C, 0x4A, 0x95, 0x15, 0x99, 0x35, 0x81, 0x14, 0x02, 0xD6, 0x98, 0x9B, 0xEC, 0xD8, 0x23, + 0x3B, 0x84, 0x29, 0xAF, 0x0C, 0x99, 0x83, 0xA6, 0x9A, 0x34, 0x4F, 0xFA, 0xE8, 0xD0, 0x3C, 0x4B, + 0xD0, 0xFB, 0xB6, 0x68, 0xB8, 0x9E, 0x8F, 0xCD, 0xF7, 0x60, 0x2D, 0x7A, 0x22, 0xE5, 0x7D, 0xAB, + 0x65, 0x1B, 0x95, 0xA7, 0xA8, 0x7F, 0xB6, 0x77, 0x47, 0x7B, 0x5F, 0x8B, 0x12, 0x72, 0xD0, 0xD4, + 0x91, 0xEF, 0xDE, 0x19, 0x50, 0x3C, 0xA7, 0x8B, 0xC4, 0xA9, 0xB3, 0x23, 0xCB, 0x76, 0xE6, 0x81, + 0xF0, 0xC1, 0x04, 0x8F, 0xA3, 0xB8, 0x54, 0x5B, 0x97, 0xAC, 0x19, 0xFF, 0x3F, 0x55, 0x27, 0x2F, + 0xE0, 0x1D, 0x42, 0x9B, 0x57, 0xFC, 0x4B, 0x4E, 0x0F, 0xCE, 0x98, 0xA9, 0x43, 0x57, 0x03, 0xBD, + 0xE7, 0xC8, 0x94, 0xDF, 0x6E, 0x36, 0x73, 0x32, 0xB4, 0xEF, 0x2E, 0x85, 0x7A, 0x6E, 0xFC, 0x6C, + 0x18, 0x82, 0x75, 0x35, 0x90, 0x07, 0xF3, 0xE4, 0x9F, 0x3E, 0xDC, 0x68, 0xF3, 0xB5, 0xF3, 0x19, + 0x80, 0x92, 0x06, 0x99, 0xA2, 0xE8, 0x6F, 0xFF, 0x2E, 0x7F, 0xAE, 0x42, 0xA4, 0x5F, 0xFB, 0xD4, + 0x0E, 0x81, 0x2B, 0xC3, 0x04, 0xFF, 0x2B, 0xB3, 0x74, 0x4E, 0x36, 0x5B, 0x9C, 0x15, 0x00, 0xC6, + 0x47, 0x2B, 0xE8, 0x8B, 0x3D, 0xF1, 0x9C, 0x03, 0x9A, 0x58, 0x7F, 0x9B, 0x9C, 0xBF, 0x85, 0x49, + 0x79, 0x35, 0x2E, 0x56, 0x7B, 0x41, 0x14, 0x39, 0x47, 0x83, 0x26, 0xAA, 0x07, 0x89, 0x98, 0x11, + 0x1B, 0x86, 0xE7, 0x73, 0x7A, 0xD8, 0x7D, 0x78, 0x61, 0x53, 0xE9, 0x79, 0xF5, 0x36, 0x8D, 0x44, + 0x92, 0x84, 0xF9, 0x13, 0x50, 0x58, 0x3B, 0xA4, 0x6A, 0x36, 0x65, 0x49, 0x8E, 0x3C, 0x0E, 0xF1, + 0x6F, 0xD2, 0x84, 0xC4, 0x7E, 0x8E, 0x3F, 0x39, 0xAE, 0x7C, 0x84, 0xF1, 0x63, 0x37, 0x8E, 0x3C, + 0xCC, 0x3E, 0x44, 0x81, 0x45, 0xF1, 0x4B, 0xB9, 0xED, 0x6B, 0x36, 0x5D, 0xBB, 0x20, 0x60, 0x1A, + 0x0F, 0xA3, 0xAA, 0x55, 0x77, 0x3A, 0xA9, 0xAE, 0x37, 0x4D, 0xBA, 0xB8, 0x86, 0x6B, 0xBC, 0x08, + 0x50, 0xF6, 0xCC, 0xA4, 0xBD, 0x1D, 0x40, 0x72, 0xA5, 0x86, 0xFA, 0xE2, 0x10, 0xAE, 0x3D, 0x58, + 0x4B, 0x97, 0xF3, 0x43, 0x74, 0xA9, 0x9E, 0xEB, 0x21, 0xB7, 0x01, 0xA4, 0x86, 0x93, 0x97, 0xEE, + 0x2F, 0x4F, 0x3B, 0x86, 0xA1, 0x41, 0x6F, 0x41, 0x26, 0x90, 0x78, 0x5C, 0x7F, 0x30, 0x38, 0x4B, + 0x3F, 0xAA, 0xEC, 0xED, 0x5C, 0x6F, 0x0E, 0xAD, 0x43, 0x87, 0xFD, 0x93, 0x35, 0xE6, 0x01, 0xEF, + 0x41, 0x26, 0x90, 0x99, 0x9E, 0xFB, 0x19, 0x5B, 0xAD, 0xD2, 0x91, 0x8A, 0xE0, 0x46, 0xAF, 0x65, + 0xFA, 0x4F, 0x84, 0xC1, 0xA1, 0x2D, 0xCF, 0x45, 0x8B, 0xD3, 0x85, 0x50, 0x55, 0x7C, 0xF9, 0x67, + 0x88, 0xD4, 0x4E, 0xE9, 0xD7, 0x6B, 0x61, 0x54, 0xA1, 0xA4, 0xA6, 0xA2, 0xC2, 0xBF, 0x30, 0x9C, + 0x40, 0x9F, 0x5F, 0xD7, 0x69, 0x2B, 0x24, 0x82, 0x5E, 0xD9, 0xD6, 0xA7, 0x12, 0x54, 0x1A, 0xF7, + 0x55, 0x9F, 0x76, 0x50, 0xA9, 0x95, 0x84, 0xE6, 0x6B, 0x6D, 0xB5, 0x96, 0x54, 0xD6, 0xCD, 0xB3, + 0xA1, 0x9B, 0x46, 0xA7, 0x94, 0x4D, 0xC4, 0x94, 0xB4, 0x98, 0xE3, 0xE1, 0xE2, 0x34, 0xD5, 0x33, + 0x16, 0x07, 0x54, 0xCD, 0xB7, 0x77, 0x53, 0xDB, 0x4F, 0x4D, 0x46, 0x9D, 0xE9, 0xD4, 0x9C, 0x8A, + 0x36, 0xB6, 0xB8, 0x38, 0x26, 0x6C, 0x0E, 0xFF, 0x9C, 0x1B, 0x43, 0x8B, 0x80, 0xCC, 0xB9, 0x3D, + 0xDA, 0xC7, 0xF1, 0x8A, 0xF2, 0x6D, 0xB8, 0xD7, 0x74, 0x2F, 0x7E, 0x1E, 0xB7, 0xD3, 0x4A, 0xB4, + 0xAC, 0xFC, 0x79, 0x48, 0x6C, 0xBC, 0x96, 0xB6, 0x94, 0x46, 0x57, 0x2D, 0xB0, 0xA3, 0xFC, 0x1E, + 0xB9, 0x52, 0x60, 0x85, 0x2D, 0x41, 0xD0, 0x43, 0x01, 0x1E, 0x1C, 0xD5, 0x7D, 0xFC, 0xF3, 0x96, + 0x0D, 0xC7, 0xCB, 0x2A, 0x29, 0x9A, 0x93, 0xDD, 0x88, 0x2D, 0x37, 0x5D, 0xAA, 0xFB, 0x49, 0x68, + 0xA0, 0x9C, 0x50, 0x86, 0x7F, 0x68, 0x56, 0x57, 0xF9, 0x79, 0x18, 0x39, 0xD4, 0xE0, 0x01, 0x84, + 0x33, 0x61, 0xCA, 0xA5, 0xD2, 0xD6, 0xE4, 0xC9, 0x8A, 0x4A, 0x23, 0x44, 0x4E, 0xBC, 0xF0, 0xDC, + 0x24, 0xA1, 0xA0, 0xC4, 0xE2, 0x07, 0x3C, 0x10, 0xC4, 0xB5, 0x25, 0x4B, 0x65, 0x63, 0xF4, 0x80, + 0xE7, 0xCF, 0x61, 0xB1, 0x71, 0x82, 0x21, 0x87, 0x2C, 0xF5, 0x91, 0x00, 0x32, 0x0C, 0xEC, 0xA9, + 0xB5, 0x9A, 0x74, 0x85, 0xE3, 0x36, 0x8F, 0x76, 0x4F, 0x9C, 0x6D, 0xCE, 0xBC, 0xAD, 0x0A, 0x4B, + 0xED, 0x76, 0x04, 0xCB, 0xC3, 0xB9, 0x33, 0x9E, 0x01, 0x93, 0x96, 0x69, 0x7D, 0xC5, 0xA2, 0x45, + 0x79, 0x9B, 0x04, 0x5C, 0x84, 0x09, 0xED, 0x88, 0x43, 0xC7, 0xAB, 0x93, 0x14, 0x26, 0xA1, 0x40, + 0xB5, 0xCE, 0x4E, 0xBF, 0x2A, 0x42, 0x85, 0x3E, 0x2C, 0x3B, 0x54, 0xE8, 0x12, 0x1F, 0x0E, 0x97, + 0x59, 0xB2, 0x27, 0x89, 0xFA, 0xF2, 0xDF, 0x8E, 0x68, 0x59, 0xDC, 0x06, 0xBC, 0xB6, 0x85, 0x0D, + 0x06, 0x22, 0xEC, 0xB1, 0xCB, 0xE5, 0x04, 0xE6, 0x3D, 0xB3, 0xB0, 0x41, 0x73, 0x08, 0x3F, 0x3C, + 0x58, 0x86, 0x63, 0xEB, 0x50, 0xEE, 0x1D, 0x2C, 0x37, 0x74, 0xA9, 0xD3, 0x18, 0xA3, 0x47, 0x6E, + 0x93, 0x54, 0xAD, 0x0A, 0x5D, 0xB8, 0x2A, 0x55, 0x5D, 0x78, 0xF6, 0xEE, 0xBE, 0x8E, 0x3C, 0x76, + 0x69, 0xB9, 0x40, 0xC2, 0x34, 0xEC, 0x2A, 0xB9, 0xED, 0x7E, 0x20, 0xE4, 0x8D, 0x00, 0x38, 0xC7, + 0xE6, 0x8F, 0x44, 0xA8, 0x86, 0xCE, 0xEB, 0x2A, 0xE9, 0x90, 0xF1, 0x4C, 0xDF, 0x32, 0xFB, 0x73, + 0x1B, 0x6D, 0x92, 0x1E, 0x95, 0xFE, 0xB4, 0xDB, 0x65, 0xDF, 0x4D, 0x23, 0x54, 0x89, 0x48, 0xBF, + 0x4A, 0x2E, 0x70, 0xD6, 0xD7, 0x62, 0xB4, 0x33, 0x29, 0xB1, 0x3A, 0x33, 0x4C, 0x23, 0x6D, 0xA6, + 0x76, 0xA5, 0x21, 0x63, 0x48, 0xE6, 0x90, 0x5D, 0xED, 0x90, 0x95, 0x0B, 0x7A, 0x84, 0xBE, 0xB8, + 0x0D, 0x5E, 0x63, 0x0C, 0x62, 0x26, 0x4C, 0x14, 0x5A, 0xB3, 0xAC, 0x23, 0xA4, 0x74, 0xA7, 0x6F, + 0x33, 0x30, 0x05, 0x60, 0x01, 0x42, 0xA0, 0x28, 0xB7, 0xEE, 0x19, 0x38, 0xF1, 0x64, 0x80, 0x82, + 0x43, 0xE1, 0x41, 0x27, 0x1F, 0x1F, 0x90, 0x54, 0x7A, 0xD5, 0x23, 0x2E, 0xD1, 0x3D, 0xCB, 0x28, + 0xBA, 0x58, 0x7F, 0xDC, 0x7C, 0x91, 0x24, 0xE9, 0x28, 0x51, 0x83, 0x6E, 0xC5, 0x56, 0x21, 0x42, + 0xED, 0xA0, 0x56, 0x22, 0xA1, 0x40, 0x80, 0x6B, 0xA8, 0xF7, 0x94, 0xCA, 0x13, 0x6B, 0x0C, 0x39, + 0xD9, 0xFD, 0xE9, 0xF3, 0x6F, 0xA6, 0x9E, 0xFC, 0x70, 0x8A, 0xB3, 0xBC, 0x59, 0x3C, 0x1E, 0x1D, + 0x6C, 0xF9, 0x7C, 0xAF, 0xF9, 0x88, 0x71, 0x95, 0xEB, 0x57, 0x00, 0xBD, 0x9F, 0x8C, 0x4F, 0xE1, + 0x24, 0x83, 0xC5, 0x22, 0xEA, 0xFD, 0xD3, 0x0C, 0xE2, 0x17, 0x18, 0x7C, 0x6A, 0x4C, 0xDE, 0x77, + 0xB4, 0x53, 0x9B, 0x4C, 0x81, 0xCD, 0x23, 0x60, 0xAA, 0x0E, 0x25, 0x73, 0x9C, 0x02, 0x79, 0x32, + 0x30, 0xDF, 0x74, 0xDF, 0x75, 0x19, 0xF4, 0xA5, 0x14, 0x5C, 0xF7, 0x7A, 0xA8, 0xA5, 0x91, 0x84, + 0x7C, 0x60, 0x03, 0x06, 0x3B, 0xCD, 0x50, 0xB6, 0x27, 0x9C, 0xFE, 0xB1, 0xDD, 0xCC, 0xD3, 0xB0, + 0x59, 0x24, 0xB2, 0xCA, 0xE2, 0x1C, 0x81, 0x22, 0x9D, 0x07, 0x8F, 0x8E, 0xB9, 0xBE, 0x4E, 0xFA, + 0xFC, 0x39, 0x65, 0xBA, 0xBF, 0x9D, 0x12, 0x37, 0x5E, 0x97, 0x7E, 0xF3, 0x89, 0xF5, 0x5D, 0xF5, + 0xE3, 0x09, 0x8C, 0x62, 0xB5, 0x20, 0x9D, 0x0C, 0x53, 0x8A, 0x68, 0x1B, 0xD2, 0x8F, 0x75, 0x17, + 0x5D, 0xD4, 0xE5, 0xDA, 0x75, 0x62, 0x19, 0x14, 0x6A, 0x26, 0x2D, 0xEB, 0xF8, 0xAF, 0x37, 0xF0, + 0x6C, 0xA4, 0x55, 0xB1, 0xBC, 0xE2, 0x33, 0xC0, 0x9A, 0xCA, 0xB0, 0x11, 0x49, 0x4F, 0x68, 0x9B, + 0x3B, 0x6B, 0x3C, 0xCC, 0x13, 0xF6, 0xC7, 0x85, 0x61, 0x68, 0x42, 0xAE, 0xBB, 0xDD, 0xCD, 0x45, + 0x16, 0x29, 0x1D, 0xEA, 0xDB, 0xC8, 0x03, 0x94, 0x3C, 0xEE, 0x4F, 0x82, 0x11, 0xC3, 0xEC, 0x28, + 0xBD, 0x97, 0x05, 0x99, 0xDE, 0xD7, 0xBB, 0x5E, 0x22, 0x1F, 0xD4, 0xEB, 0x64, 0xD9, 0x92, 0xD9, + 0x85, 0xB7, 0x6A, 0x05, 0x6A, 0xE4, 0x24, 0x41, 0xF1, 0xCD, 0xF0, 0xD8, 0x3F, 0xF8, 0x9E, 0x0E, + 0xCD, 0x0B, 0x7A, 0x70, 0x6B, 0x5A, 0x75, 0x0A, 0x6A, 0x33, 0x88, 0xEC, 0x17, 0x75, 0x08, 0x70, + 0x10, 0x2F, 0x24, 0xCF, 0xC4, 0xE9, 0x42, 0x00, 0x61, 0x94, 0xCA, 0x1F, 0x3A, 0x76, 0x06, 0xFA, + 0xD2, 0x48, 0x81, 0xF0, 0x77, 0x60, 0x03, 0x45, 0xD9, 0x61, 0xF4, 0xA4, 0x6F, 0x3D, 0xD9, 0x30, + 0xC3, 0x04, 0x6B, 0x54, 0x2A, 0xB7, 0xEC, 0x3B, 0xF4, 0x4B, 0xF5, 0x68, 0x52, 0x26, 0xCE, 0xFF, + 0x5D, 0x19, 0x91, 0xA0, 0xA3, 0xA5, 0xA9, 0xB1, 0xE0, 0x23, 0xC4, 0x0A, 0x77, 0x4D, 0xF9, 0x51, + 0x20, 0xA3, 0xA5, 0xA9, 0xB1, 0xC1, 0x00, 0x82, 0x86, 0x8E, 0x7F, 0x5D, 0x19, 0x91, 0xA0, 0xA3, + 0xC4, 0xEB, 0x54, 0x0B, 0x75, 0x68, 0x52, 0x07, 0x8C, 0x9A, 0x97, 0x8D, 0x79, 0x70, 0x62, 0x46, + 0xEF, 0x5C, 0x1B, 0x95, 0x89, 0x71, 0x41, 0xE1, 0x21, 0xA1, 0xA1, 0xA1, 0xC0, 0x02, 0x67, 0x4C, + 0x1A, 0xB6, 0xCF, 0xFD, 0x78, 0x53, 0x24, 0xAB, 0xB5, 0xC9, 0xF1, 0x60, 0x23, 0xA5, 0xC8, 0x12, + 0x87, 0x6D, 0x58, 0x13, 0x85, 0x88, 0x92, 0x87, 0x6D, 0x58, 0x32, 0xC7, 0x0C, 0x9A, 0x97, 0xAC, + 0xDA, 0x36, 0xEE, 0x5E, 0x3E, 0xDF, 0x1D, 0xB8, 0xF2, 0x66, 0x2F, 0xBD, 0xF8, 0x72, 0x47, 0xED, + 0x58, 0x13, 0x85, 0x88, 0x92, 0x87, 0x8C, 0x7B, 0x55, 0x09, 0x90, 0xA2, 0xC6, 0xEF, 0x3D, 0xF8, + 0x53, 0x24, 0xAB, 0xD4, 0x2A, 0xB7, 0xEC, 0x5A, 0x36, 0xEE, 0x5E, 0x3E, 0xDF, 0x3C, 0xFA, 0x76, + 0x4F, 0xFD, 0x59, 0x30, 0xE2, 0x46, 0xEF, 0x3D, 0xF8, 0x53, 0x05, 0x69, 0x31, 0xC1, 0x00, 0x82, + 0x86, 0x8E, 0x7F, 0x5D, 0x19, 0xB0, 0xE2, 0x27, 0xCC, 0xFB, 0x74, 0x4B, 0x14, 0x8B, 0x94, 0x8B, + 0x75, 0x68, 0x33, 0xC5, 0x08, 0x92, 0x87, 0x8C, 0x9A, 0xB6, 0xCF, 0x1C, 0xBA, 0xD7, 0x0D, 0x98, + 0xB2, 0xE6, 0x2F, 0xDC, 0x1B, 0x95, 0x89, 0x71, 0x60, 0x23, 0xC4, 0x0A, 0x96, 0x8F, 0x9C, 0xBA, + 0xF6, 0x6E, 0x3F, 0xFC, 0x5B, 0x15, 0xA8, 0xD2, 0x26, 0xAF, 0xBD, 0xF8, 0x72, 0x66, 0x2F, 0xDC, + 0x1B, 0xB4, 0xCB, 0x14, 0x8B, 0x94, 0xAA, 0xB7, 0xCD, 0xF9, 0x51, 0x01, 0x80, 0x82, 0x86, 0x6F, + 0x3D, 0xD9, 0x30, 0xE2, 0x27, 0xCC, 0xFB, 0x74, 0x4B, 0x14, 0xAA, 0xB7, 0xCD, 0xF9, 0x70, 0x43, + 0x04, 0x6B, 0x35, 0xC9, 0xF1, 0x60, 0x23, 0xA5, 0xC8, 0xF3, 0x45, 0x08, 0x92, 0x87, 0x6D, 0x58, + 0x32, 0xE6, 0x2F, 0xBD, 0xF8, 0x72, 0x66, 0x4E, 0x1E, 0xBE, 0xFE, 0x7E, 0x7E, 0x7E, 0x5F, 0x1D, + 0x99, 0x91, 0xA0, 0xA3, 0xC4, 0x0A, 0x77, 0x4D, 0x18, 0x93, 0xA4, 0xAB, 0xD4, 0x0B, 0x75, 0x49, + 0x10, 0xA2, 0xC6, 0xEF, 0x3D, 0xF8, 0x53, 0x24, 0xAB, 0xB5, 0xE8, 0x33, 0xE4, 0x4A, 0x16, 0xAE, + 0xDE, 0x1F, 0xBC, 0xDB, 0x15, 0xA8, 0xB3, 0xC5, 0x08, 0x73, 0x45, 0xE9, 0x31, 0xC1, 0xE1, 0x21, + 0xA1, 0xA1, 0xA1, 0xC0, 0x02, 0x86, 0x6F, 0x5C, 0x3A, 0xD7, 0x0D, 0x98, 0x93, 0xA4, 0xCA, 0x16, + 0xAE, 0xDE, 0x1F, 0x9D, 0x99, 0xB0, 0xE2, 0x46, 0xEF, 0x3D, 0xF8, 0x72, 0x47, 0x0C, 0x9A, 0xB6, + 0xCF, 0xFD, 0x59, 0x11, 0xA0, 0xA3, 0xA5, 0xC8, 0xF3, 0x45, 0x08, 0x92, 0x87, 0x6D, 0x39, 0xF0, + 0x43, 0x04, 0x8A, 0x96, 0xAE, 0xDE, 0x3E, 0xDF, 0x1D, 0x99, 0x91, 0xA0, 0xC2, 0x06, 0x6F, 0x3D, + 0xF8, 0x72, 0x47, 0x0C, 0x9A, 0x97, 0x8D, 0x98, 0x93, 0x85, 0x88, 0x73, 0x45, 0xE9, 0x31, 0xE0, + 0x23, 0xA5, 0xA9, 0xD0, 0x03, 0x84, 0x8A, 0x96, 0xAE, 0xDE, 0x1F, 0xBC, 0xDB, 0x15, 0xA8, 0xD2, + 0x26, 0xCE, 0xFF, 0x5D, 0x19, 0x91, 0x81, 0x80, 0x82, 0x67, 0x2D, 0xD8, 0x13, 0xA4, 0xAB, 0xD4, + 0x0B, 0x94, 0xAA, 0xB7, 0xCD, 0xF9, 0x51, 0x20, 0xA3, 0xA5, 0xC8, 0xF3, 0x45, 0xE9, 0x50, 0x22, + 0xC6, 0xEF, 0x5C, 0x3A, 0xD7, 0x0D, 0x98, 0x93, 0x85, 0x88, 0x73, 0x64, 0x4A, 0xF7, 0x4D, 0xF9, + 0x51, 0x20, 0xA3, 0xC4, 0x0A, 0x96, 0xAE, 0xDE, 0x3E, 0xFE, 0x7E, 0x7E, 0x7E, 0x5F, 0x3C, 0xFA, + 0x76, 0x4F, 0xFD, 0x78, 0x72, 0x66, 0x2F, 0xBD, 0xD9, 0x30, 0xC3, 0xE5, 0x48, 0x12, 0x87, 0x8C, + 0x7B, 0x55, 0x28, 0xD2, 0x07, 0x8C, 0x9A, 0x97, 0xAC, 0xDA, 0x17, 0x8D, 0x79, 0x51, 0x20, 0xA3, + 0xC4, 0xEB, 0x54, 0x0B, 0x94, 0x8B, 0x94, 0xAA, 0xD6, 0x2E, 0xBF, 0xFC, 0x5B, 0x15, 0xA8, 0xD2, + 0x26, 0xAF, 0xDC, 0x1B, 0xB4, 0xEA, 0x37, 0xEC, 0x3B, 0xF4, 0x6A, 0x37, 0xCD, 0x18, 0x93, 0x85, + 0x69, 0x31, 0xC1, 0xE1, 0x40, 0xE3, 0x25, 0xC8, 0x12, 0x87, 0x8C, 0x9A, 0xB6, 0xCF, 0xFD, 0x59, + 0x11, 0xA0, 0xC2, 0x06, 0x8E, 0x7F, 0x5D, 0x38, 0xF2, 0x47, 0x0C, 0x7B, 0x74, 0x6A, 0x37, 0xEC, + 0x5A, 0x36, 0xEE, 0x3F, 0xFC, 0x7A, 0x76, 0x4F, 0x1C, 0x9B, 0x95, 0x89, 0x71, 0x41, 0x00, 0x63, + 0x44, 0xEB, 0x54, 0x2A, 0xD6, 0x0F, 0x9C, 0xBA, 0xD7, 0x0D, 0x98, 0x93, 0x85, 0x69, 0x31, 0xC1, + 0x00, 0x82, 0x86, 0x8E, 0x9E, 0xBE, 0xDF, 0x3C, 0xFA, 0x57, 0x2C, 0xDA, 0x36, 0xEE, 0x3F, 0xFC, + 0x5B, 0x15, 0x89, 0x71, 0x41, 0x00, 0x82, 0x86, 0x8E, 0x7F, 0x5D, 0x38, 0xF2, 0x47, 0xED, 0x58, + 0x13, 0xA4, 0xCA, 0xF7, 0x4D, 0xF9, 0x51, 0x01, 0x80, 0x63, 0x44, 0xEB, 0x54, 0x2A, 0xD6, 0x2E, + 0xBF, 0xDD, 0x19, 0x91, 0xA0, 0xA3, 0xA5, 0xA9, 0xB1, 0xE0, 0x42, 0x06, 0x8E, 0x7F, 0x5D, 0x19, + 0x91, 0xA0, 0xA3, 0xC4, 0x0A, 0x96, 0x8F, 0x7D, 0x78, 0x72, 0x47, 0x0C, 0x7B, 0x74, 0x6A, 0x56, + 0x2E, 0xDE, 0x1F, 0xBC, 0xFA, 0x57, 0x0D, 0x79, 0x51, 0x01, 0x61, 0x21, 0xA1, 0xC0, 0xE3, 0x25, + 0xA9, 0xB1, 0xC1, 0xE1, 0x40, 0x02, 0x67, 0x4C, 0x1A, 0x97, 0x8D, 0x98, 0x93, 0xA4, 0xAB, 0xD4, + 0x2A, 0xD6, 0x0F, 0x9C, 0x9B, 0xB4, 0xCB, 0x14, 0xAA, 0xB7, 0xCD, 0xF9, 0x51, 0x20, 0xA3, 0xC4, + 0xEB, 0x35, 0xC9, 0xF1, 0x60, 0x42, 0x06, 0x8E, 0x7F, 0x7C, 0x7A, 0x76, 0x6E, 0x3F, 0xFC, 0x7A, + 0x76, 0x6E, 0x5E, 0x3E, 0xFE, 0x7E, 0x5F, 0x3C, 0xDB, 0x15, 0x89, 0x71, 0x41, 0xE1, 0x21, 0xC0, + 0xE3, 0x44, 0xEB, 0x54, 0x2A, 0xB7, 0xCD, 0xF9, 0x70, 0x62, 0x27, 0xAD, 0xD8, 0x32, 0xC7, 0x0C, + 0x7B, 0x74, 0x4B, 0x14, 0xAA, 0xB7, 0xEC, 0x3B, 0xD5, 0x28, 0xD2, 0x07, 0x6D, 0x39, 0xD1, 0x20, + 0xC2, 0xE7, 0x4C, 0x1A, 0x97, 0x8D, 0x98, 0xB2, 0xC7, 0x0C, 0x59, 0x28, 0xF3, 0x9B +}; diff --git a/drivers/sensors/pmw3389_firmware.h b/drivers/sensors/pmw3389_firmware.h new file mode 100644 index 000000000000..0564dab73afa --- /dev/null +++ b/drivers/sensors/pmw3389_firmware.h @@ -0,0 +1,303 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * Copyright 2019 Sunjun Kim + * Copyright 2020 Ploopy Corporation + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +// PID, Inverse PID, SROM version +const uint8_t firmware_signature[] PROGMEM = {0x42, 0xBD, 0x04}; + +// clang-format off +// Firmware Blob foor PMW3389 +const uint16_t firmware_length = 4094; +// clang-format off +const uint8_t firmware_data[] PROGMEM = { // SROM 0x04 +0x01, 0xe8, 0xba, 0x26, 0x0b, 0xb2, 0xbe, 0xfe, 0x7e, 0x5f, 0x3c, 0xdb, 0x15, 0xa8, 0xb3, +0xe4, 0x2b, 0xb5, 0xe8, 0x53, 0x07, 0x6d, 0x3b, 0xd1, 0x20, 0xc2, 0x06, 0x6f, 0x3d, 0xd9, +0x11, 0xa0, 0xc2, 0xe7, 0x2d, 0xb9, 0xd1, 0x20, 0xa3, 0xa5, 0xc8, 0xf3, 0x64, 0x4a, 0xf7, +0x4d, 0x18, 0x93, 0xa4, 0xca, 0xf7, 0x6c, 0x5a, 0x36, 0xee, 0x5e, 0x3e, 0xfe, 0x7e, 0x7e, +0x5f, 0x1d, 0x99, 0xb0, 0xc3, 0xe5, 0x29, 0xd3, 0x03, 0x65, 0x48, 0x12, 0x87, 0x6d, 0x58, +0x32, 0xe6, 0x2f, 0xdc, 0x3a, 0xf2, 0x4f, 0xfd, 0x59, 0x11, 0x81, 0x61, 0x21, 0xc0, 0x02, +0x86, 0x8e, 0x7f, 0x5d, 0x38, 0xf2, 0x47, 0x0c, 0x7b, 0x55, 0x28, 0xb3, 0xe4, 0x4a, 0x16, +0xab, 0xbf, 0xdd, 0x38, 0xf2, 0x66, 0x4e, 0xff, 0x5d, 0x19, 0x91, 0xa0, 0xa3, 0xa5, 0xc8, +0x12, 0xa6, 0xaf, 0xdc, 0x3a, 0xd1, 0x41, 0x60, 0x75, 0x58, 0x24, 0x92, 0xd4, 0x72, 0x6c, +0xe0, 0x2f, 0xfd, 0x23, 0x8d, 0x1c, 0x5b, 0xb2, 0x97, 0x36, 0x3d, 0x0b, 0xa2, 0x49, 0xb1, +0x58, 0xf2, 0x1f, 0xc0, 0xcb, 0xf8, 0x41, 0x4f, 0xcd, 0x1e, 0x6b, 0x39, 0xa7, 0x2b, 0xe9, +0x30, 0x16, 0x83, 0xd2, 0x0e, 0x47, 0x8f, 0xe3, 0xb1, 0xdf, 0xa2, 0x15, 0xdb, 0x5d, 0x30, +0xc5, 0x1a, 0xab, 0x31, 0x99, 0xf3, 0xfa, 0xb2, 0x86, 0x69, 0xad, 0x7a, 0xe8, 0xa7, 0x18, +0x6a, 0xcc, 0xc8, 0x65, 0x23, 0x87, 0xa8, 0x5f, 0xf5, 0x21, 0x59, 0x75, 0x09, 0x71, 0x45, +0x55, 0x25, 0x4b, 0xda, 0xa1, 0xc3, 0xf7, 0x41, 0xab, 0x59, 0xd9, 0x74, 0x12, 0x55, 0x5f, +0xbc, 0xaf, 0xd9, 0xfd, 0xb0, 0x1e, 0xa3, 0x0f, 0xff, 0xde, 0x11, 0x16, 0x6a, 0xae, 0x0e, +0xe1, 0x5d, 0x3c, 0x10, 0x43, 0x9a, 0xa1, 0x0b, 0x24, 0x8f, 0x0d, 0x7f, 0x0b, 0x5e, 0x4c, +0x42, 0xa4, 0x84, 0x2c, 0x40, 0xd0, 0x55, 0x39, 0xe6, 0x4b, 0xf8, 0x9b, 0x2f, 0xdc, 0x28, +0xff, 0xfa, 0xb5, 0x85, 0x19, 0xe5, 0x28, 0xa1, 0x77, 0xaa, 0x73, 0xf3, 0x03, 0xc7, 0x62, +0xa6, 0x91, 0x18, 0xc9, 0xb0, 0xcd, 0x05, 0xdc, 0xca, 0x81, 0x26, 0x1a, 0x47, 0x40, 0xda, +0x36, 0x7d, 0x6a, 0x53, 0xc8, 0x5a, 0x77, 0x5d, 0x19, 0xa4, 0x1b, 0x23, 0x83, 0xd0, 0xb2, +0xaa, 0x0e, 0xbf, 0x77, 0x4e, 0x3a, 0x3b, 0x59, 0x00, 0x31, 0x0d, 0x02, 0x1b, 0x88, 0x7a, +0xd4, 0xbd, 0x9d, 0xcc, 0x58, 0x04, 0x69, 0xf6, 0x3b, 0xca, 0x42, 0xe2, 0xfd, 0xc3, 0x3d, +0x39, 0xc5, 0xd0, 0x71, 0xe4, 0xc8, 0xb7, 0x3e, 0x3f, 0xc8, 0xe9, 0xca, 0xc9, 0x3f, 0x04, +0x4e, 0x1b, 0x79, 0xca, 0xa5, 0x61, 0xc2, 0xed, 0x1d, 0xa6, 0xda, 0x5a, 0xe9, 0x7f, 0x65, +0x8c, 0xbe, 0x12, 0x6e, 0xa4, 0x5b, 0x33, 0x2f, 0x84, 0x28, 0x9c, 0x1c, 0x88, 0x2d, 0xff, +0x07, 0xbf, 0xa6, 0xd7, 0x5a, 0x88, 0x86, 0xb0, 0x3f, 0xf6, 0x31, 0x5b, 0x11, 0x6d, 0xf5, +0x58, 0xeb, 0x58, 0x02, 0x9e, 0xb5, 0x9a, 0xb1, 0xff, 0x25, 0x9d, 0x8b, 0x4f, 0xb6, 0x0a, +0xf9, 0xea, 0x3e, 0x3f, 0x21, 0x09, 0x65, 0x21, 0x22, 0xfe, 0x3d, 0x4e, 0x11, 0x5b, 0x9e, +0x5a, 0x59, 0x8b, 0xdd, 0xd8, 0xce, 0xd6, 0xd9, 0x59, 0xd2, 0x1e, 0xfd, 0xef, 0x0d, 0x1b, +0xd9, 0x61, 0x7f, 0xd7, 0x2d, 0xad, 0x62, 0x09, 0xe5, 0x22, 0x63, 0xea, 0xc7, 0x31, 0xd9, +0xa1, 0x38, 0x80, 0x5c, 0xa7, 0x32, 0x82, 0xec, 0x1b, 0xa2, 0x49, 0x5a, 0x06, 0xd2, 0x7c, +0xc9, 0x96, 0x57, 0xbb, 0x17, 0x75, 0xfc, 0x7a, 0x8f, 0x0d, 0x77, 0xb5, 0x7a, 0x8e, 0x3e, +0xf4, 0xba, 0x2f, 0x69, 0x13, 0x26, 0xd6, 0xd9, 0x21, 0x60, 0x2f, 0x21, 0x3e, 0x87, 0xee, +0xfd, 0x87, 0x16, 0x0d, 0xc8, 0x08, 0x00, 0x25, 0x71, 0xac, 0x2c, 0x03, 0x2a, 0x37, 0x2d, +0xb3, 0x34, 0x09, 0x91, 0xe3, 0x06, 0x2c, 0x38, 0x37, 0x95, 0x3b, 0x17, 0x7a, 0xaf, 0xac, +0x99, 0x55, 0xab, 0x41, 0x39, 0x5f, 0x8e, 0xa6, 0x43, 0x80, 0x03, 0x88, 0x6f, 0x7d, 0xbd, +0x5a, 0xb4, 0x2b, 0x32, 0x23, 0x5a, 0xa9, 0x31, 0x32, 0x39, 0x4c, 0x5b, 0xf4, 0x6b, 0xaf, +0x66, 0x6f, 0x3c, 0x8e, 0x2d, 0x82, 0x97, 0x9f, 0x4a, 0x01, 0xdc, 0x99, 0x98, 0x00, 0xec, +0x38, 0x7a, 0x79, 0x70, 0xa6, 0x85, 0xd6, 0x21, 0x63, 0x0d, 0x45, 0x9a, 0x2e, 0x5e, 0xa7, +0xb1, 0xea, 0x66, 0x6a, 0xbc, 0x62, 0x2d, 0x7b, 0x7d, 0x85, 0xea, 0x95, 0x2f, 0xc0, 0xe8, +0x6f, 0x35, 0xa0, 0x3a, 0x02, 0x25, 0xbc, 0xb2, 0x5f, 0x5c, 0x43, 0x96, 0xcc, 0x26, 0xd2, +0x16, 0xb4, 0x96, 0x73, 0xd7, 0x13, 0xc7, 0xae, 0x53, 0x15, 0x31, 0x89, 0x68, 0x66, 0x6d, +0x2c, 0x92, 0x1f, 0xcc, 0x5b, 0xa7, 0x8f, 0x5d, 0xbb, 0xc9, 0xdb, 0xe8, 0x3b, 0x9d, 0x61, +0x74, 0x8b, 0x05, 0xa1, 0x58, 0x52, 0x68, 0xee, 0x3d, 0x39, 0x79, 0xa0, 0x9b, 0xdd, 0xe1, +0x55, 0xc9, 0x60, 0xeb, 0xad, 0xb8, 0x5b, 0xc2, 0x5a, 0xb5, 0x2c, 0x18, 0x55, 0xa9, 0x50, +0xc3, 0xf6, 0x72, 0x5f, 0xcc, 0xe2, 0xf4, 0x55, 0xb5, 0xd6, 0xb5, 0x4a, 0x99, 0xa5, 0x28, +0x74, 0x97, 0x18, 0xe8, 0xc0, 0x84, 0x89, 0x50, 0x03, 0x86, 0x4d, 0x1a, 0xb7, 0x09, 0x90, +0xa2, 0x01, 0x04, 0xbb, 0x73, 0x62, 0xcb, 0x97, 0x22, 0x70, 0x5d, 0x52, 0x41, 0x8e, 0xd9, +0x90, 0x15, 0xaa, 0xab, 0x0a, 0x31, 0x65, 0xb4, 0xda, 0xd0, 0xee, 0x24, 0xc9, 0x41, 0x91, +0x1e, 0xbc, 0x46, 0x70, 0x40, 0x9d, 0xda, 0x0e, 0x2a, 0xe4, 0xb2, 0x4c, 0x9f, 0xf2, 0xfc, +0xf3, 0x84, 0x17, 0x44, 0x1e, 0xd7, 0xca, 0x23, 0x1f, 0x3f, 0x5a, 0x22, 0x3d, 0xaf, 0x9b, +0x2d, 0xfc, 0x41, 0xad, 0x26, 0xb4, 0x45, 0x67, 0x0b, 0x80, 0x0e, 0xf9, 0x61, 0x37, 0xec, +0x3b, 0xf4, 0x4b, 0x14, 0xdf, 0x5a, 0x0c, 0x3a, 0x50, 0x0b, 0x14, 0x0c, 0x72, 0xae, 0xc6, +0xc5, 0xec, 0x35, 0x53, 0x2d, 0x59, 0xed, 0x91, 0x74, 0xe2, 0xc4, 0xc8, 0xf2, 0x25, 0x6b, +0x97, 0x6f, 0xc9, 0x76, 0xce, 0xa9, 0xb1, 0x99, 0x8f, 0x5a, 0x92, 0x3b, 0xc4, 0x8d, 0x54, +0x50, 0x40, 0x72, 0xd6, 0x90, 0x83, 0xfc, 0xe5, 0x49, 0x8b, 0x17, 0xf5, 0xfd, 0x6b, 0x8d, +0x32, 0x02, 0xe9, 0x0a, 0xfe, 0xbf, 0x00, 0x6b, 0xa3, 0xad, 0x5f, 0x09, 0x4b, 0x97, 0x2b, +0x00, 0x58, 0x65, 0x2e, 0x07, 0x49, 0x0a, 0x3b, 0x6b, 0x2e, 0x50, 0x6c, 0x1d, 0xac, 0xb7, +0x6a, 0x26, 0xd8, 0x13, 0xa4, 0xca, 0x16, 0xae, 0xab, 0x93, 0xb9, 0x1c, 0x1c, 0xb4, 0x47, +0x6a, 0x38, 0x36, 0x17, 0x27, 0xc9, 0x7f, 0xc7, 0x64, 0xcb, 0x89, 0x58, 0xc5, 0x61, 0xc2, +0xc6, 0xea, 0x15, 0x0b, 0x34, 0x0c, 0x5d, 0x61, 0x76, 0x6e, 0x2b, 0x62, 0x40, 0x92, 0xa3, +0x6c, 0xef, 0xf4, 0xe4, 0xc3, 0xa1, 0xa8, 0xf5, 0x94, 0x79, 0x0d, 0xd1, 0x3d, 0xcb, 0x3d, +0x40, 0xb6, 0xd0, 0xf0, 0x10, 0x54, 0xd8, 0x47, 0x25, 0x51, 0xc5, 0x41, 0x79, 0x00, 0xe5, +0xa0, 0x72, 0xde, 0xbb, 0x3b, 0x62, 0x17, 0xf6, 0xbc, 0x5d, 0x00, 0x76, 0x2e, 0xa7, 0x3b, +0xb6, 0xf1, 0x98, 0x72, 0x59, 0x2a, 0x73, 0xb0, 0x21, 0xd6, 0x49, 0xe0, 0xc0, 0xd5, 0xeb, +0x02, 0x7d, 0x4b, 0x41, 0x28, 0x70, 0x2d, 0xec, 0x2b, 0x71, 0x1f, 0x0b, 0xb9, 0x71, 0x63, +0x06, 0xe6, 0xbc, 0x60, 0xbb, 0xf4, 0x9a, 0x62, 0x43, 0x09, 0x18, 0x4e, 0x93, 0x06, 0x4d, +0x76, 0xfa, 0x7f, 0xbd, 0x02, 0xe4, 0x50, 0x91, 0x12, 0xe5, 0x86, 0xff, 0x64, 0x1e, 0xaf, +0x7e, 0xb3, 0xb2, 0xde, 0x89, 0xc1, 0xa2, 0x6f, 0x40, 0x7b, 0x41, 0x51, 0x63, 0xea, 0x25, +0xd1, 0x97, 0x57, 0x92, 0xa8, 0x45, 0xa1, 0xa5, 0x45, 0x21, 0x43, 0x7f, 0x83, 0x15, 0x29, +0xd0, 0x30, 0x53, 0x32, 0xb4, 0x5a, 0x17, 0x96, 0xbc, 0xc2, 0x68, 0xa9, 0xb7, 0xaf, 0xac, +0xdf, 0xf1, 0xe3, 0x89, 0xba, 0x24, 0x79, 0x54, 0xc6, 0x14, 0x07, 0x1c, 0x1e, 0x0d, 0x3a, +0x6b, 0xe5, 0x3d, 0x4e, 0x10, 0x60, 0x96, 0xec, 0x6c, 0xda, 0x47, 0xae, 0x03, 0x25, 0x39, +0x1d, 0x74, 0xc8, 0xac, 0x6a, 0xf2, 0x6b, 0x05, 0x2a, 0x9a, 0xe7, 0xe8, 0x92, 0xd6, 0xc2, +0x6d, 0xfa, 0xe8, 0xa7, 0x9d, 0x5f, 0x48, 0xc9, 0x75, 0xf1, 0x66, 0x6a, 0xdb, 0x5d, 0x9a, +0xcd, 0x27, 0xdd, 0xb9, 0x24, 0x04, 0x9c, 0x18, 0xc2, 0x6d, 0x0c, 0x91, 0x34, 0x48, 0x42, +0x6f, 0xe9, 0x59, 0x70, 0xc4, 0x7e, 0x81, 0x0e, 0x32, 0x0a, 0x93, 0x48, 0xb0, 0xc0, 0x15, +0x9e, 0x05, 0xac, 0x36, 0x16, 0xcb, 0x59, 0x65, 0xa0, 0x83, 0xdf, 0x3e, 0xda, 0xfb, 0x1d, +0x1a, 0xdb, 0x65, 0xec, 0x9a, 0xc6, 0xc3, 0x8e, 0x3c, 0x45, 0xfd, 0xc8, 0xf5, 0x1c, 0x6a, +0x67, 0x0d, 0x8f, 0x99, 0x7d, 0x30, 0x21, 0x8c, 0xea, 0x22, 0x87, 0x65, 0xc9, 0xb2, 0x4c, +0xe4, 0x1b, 0x46, 0xba, 0x54, 0xbd, 0x7c, 0xca, 0xd5, 0x8f, 0x5b, 0xa5, 0x01, 0x04, 0xd8, +0x0a, 0x16, 0xbf, 0xb9, 0x50, 0x2e, 0x37, 0x2f, 0x64, 0xf3, 0x70, 0x11, 0x02, 0x05, 0x31, +0x9b, 0xa0, 0xb2, 0x01, 0x5e, 0x4f, 0x19, 0xc9, 0xd4, 0xea, 0xa1, 0x79, 0x54, 0x53, 0xa7, +0xde, 0x2f, 0x49, 0xd3, 0xd1, 0x63, 0xb5, 0x03, 0x15, 0x4e, 0xbf, 0x04, 0xb3, 0x26, 0x8b, +0x20, 0xb2, 0x45, 0xcf, 0xcd, 0x5b, 0x82, 0x32, 0x88, 0x61, 0xa7, 0xa8, 0xb2, 0xa0, 0x72, +0x96, 0xc0, 0xdb, 0x2b, 0xe2, 0x5f, 0xba, 0xe3, 0xf5, 0x8a, 0xde, 0xf1, 0x18, 0x01, 0x16, +0x40, 0xd9, 0x86, 0x12, 0x09, 0x18, 0x1b, 0x05, 0x0c, 0xb1, 0xb5, 0x47, 0xe2, 0x43, 0xab, +0xfe, 0x92, 0x63, 0x7e, 0x95, 0x2b, 0xf0, 0xaf, 0xe1, 0xf1, 0xc3, 0x4a, 0xff, 0x2b, 0x09, +0xbb, 0x4a, 0x0e, 0x9a, 0xc4, 0xd8, 0x64, 0x7d, 0x83, 0xa0, 0x4f, 0x44, 0xdb, 0xc4, 0xa8, +0x58, 0xef, 0xfc, 0x9e, 0x77, 0xf9, 0xa6, 0x8f, 0x58, 0x8b, 0x12, 0xf4, 0xe9, 0x81, 0x12, +0x47, 0x51, 0x41, 0x83, 0xef, 0xf6, 0x73, 0xbc, 0x8e, 0x0f, 0x4c, 0x8f, 0x4e, 0x69, 0x90, +0x77, 0x29, 0x5d, 0x92, 0xb0, 0x6d, 0x06, 0x67, 0x29, 0x60, 0xbd, 0x4b, 0x17, 0xc8, 0x89, +0x69, 0x28, 0x29, 0xd6, 0x78, 0xcb, 0x11, 0x4c, 0xba, 0x8b, 0x68, 0xae, 0x7e, 0x9f, 0xef, +0x95, 0xda, 0xe2, 0x9e, 0x7f, 0xe9, 0x55, 0xe5, 0xe1, 0xe2, 0xb7, 0xe6, 0x5f, 0xbb, 0x2c, +0xa2, 0xe6, 0xee, 0xc7, 0x0a, 0x60, 0xa9, 0xd1, 0x80, 0xdf, 0x7f, 0xd6, 0x97, 0xab, 0x1d, +0x22, 0x25, 0xfc, 0x79, 0x23, 0xe0, 0xae, 0xc5, 0xef, 0x16, 0xa4, 0xa1, 0x0f, 0x92, 0xa9, +0xc7, 0xe3, 0x3a, 0x55, 0xdf, 0x62, 0x49, 0xd9, 0xf5, 0x84, 0x49, 0xc5, 0x90, 0x34, 0xd3, +0xe1, 0xac, 0x99, 0x21, 0xb1, 0x02, 0x76, 0x4a, 0xfa, 0xd4, 0xbb, 0xa4, 0x9c, 0xa2, 0xe2, +0xcb, 0x3d, 0x3b, 0x14, 0x75, 0x60, 0xd1, 0x02, 0xb4, 0xa3, 0xb4, 0x72, 0x06, 0xf9, 0x19, +0x9c, 0xe2, 0xe4, 0xa7, 0x0f, 0x25, 0x88, 0xc6, 0x86, 0xd6, 0x8c, 0x74, 0x4e, 0x6e, 0xfc, +0xa8, 0x48, 0x9e, 0xa7, 0x9d, 0x1a, 0x4b, 0x37, 0x09, 0xc8, 0xb0, 0x10, 0xbe, 0x6f, 0xfe, +0xa3, 0xc4, 0x7a, 0xb5, 0x3d, 0xe8, 0x30, 0xf1, 0x0d, 0xa0, 0xb2, 0x44, 0xfc, 0x9b, 0x8c, +0xf8, 0x61, 0xed, 0x81, 0xd1, 0x62, 0x11, 0xb4, 0xe1, 0xd5, 0x39, 0x52, 0x89, 0xd3, 0xa8, +0x49, 0x31, 0xdf, 0xb6, 0xf9, 0x91, 0xf4, 0x1c, 0x9d, 0x09, 0x95, 0x40, 0x56, 0xe7, 0xe3, +0xcd, 0x5c, 0x92, 0xc1, 0x1d, 0x6b, 0xe9, 0x78, 0x6f, 0x8e, 0x94, 0x42, 0x66, 0xa2, 0xaa, +0xd3, 0xc8, 0x2e, 0xe3, 0xf6, 0x07, 0x72, 0x0b, 0x6b, 0x1e, 0x7b, 0xb9, 0x7c, 0xe0, 0xa0, +0xbc, 0xd9, 0x25, 0xdf, 0x87, 0xa8, 0x5f, 0x9c, 0xcc, 0xf0, 0xdb, 0x42, 0x8e, 0x07, 0x31, +0x13, 0x01, 0x66, 0x32, 0xd1, 0xb8, 0xd6, 0xe3, 0x5e, 0x12, 0x76, 0x61, 0xd3, 0x38, 0x89, +0xe6, 0x17, 0x6f, 0xa5, 0xf2, 0x71, 0x0e, 0xa5, 0xe2, 0x88, 0x30, 0xbb, 0xbe, 0x8a, 0xea, +0xc7, 0x62, 0xc4, 0xcf, 0xb8, 0xcd, 0x33, 0x8d, 0x3d, 0x3e, 0xb5, 0x60, 0x3a, 0x03, 0x92, +0xe4, 0x6d, 0x1b, 0xe0, 0xb4, 0x84, 0x08, 0x55, 0x88, 0xa7, 0x3a, 0xb9, 0x3d, 0x43, 0xc3, +0xc0, 0xfa, 0x07, 0x6a, 0xca, 0x94, 0xad, 0x99, 0x55, 0xf1, 0xf1, 0xc0, 0x23, 0x87, 0x1d, +0x3d, 0x1c, 0xd1, 0x66, 0xa0, 0x57, 0x10, 0x52, 0xa2, 0x7f, 0xbe, 0xf9, 0x88, 0xb6, 0x02, +0xbf, 0x08, 0x23, 0xa9, 0x0c, 0x63, 0x17, 0x2a, 0xae, 0xf5, 0xf7, 0xb7, 0x21, 0x83, 0x92, +0x31, 0x23, 0x0d, 0x20, 0xc3, 0xc2, 0x05, 0x21, 0x62, 0x8e, 0x45, 0xe8, 0x14, 0xc1, 0xda, +0x75, 0xb8, 0xf8, 0x92, 0x01, 0xd0, 0x5d, 0x18, 0x9f, 0x99, 0x11, 0x19, 0xf5, 0x35, 0xe8, +0x7f, 0x20, 0x88, 0x8c, 0x05, 0x75, 0xf5, 0xd7, 0x40, 0x17, 0xbb, 0x1e, 0x36, 0x52, 0xd9, +0xa4, 0x9c, 0xc2, 0x9d, 0x42, 0x81, 0xd8, 0xc7, 0x8a, 0xe7, 0x4c, 0x81, 0xe0, 0xb7, 0x57, +0xed, 0x48, 0x8b, 0xf0, 0x97, 0x15, 0x61, 0xd9, 0x2c, 0x7c, 0x45, 0xaf, 0xc2, 0xcd, 0xfc, +0xaa, 0x13, 0xad, 0x59, 0xcc, 0xb2, 0xb2, 0x6e, 0xdd, 0x63, 0x9c, 0x32, 0x0f, 0xec, 0x83, +0xbe, 0x78, 0xac, 0x91, 0x44, 0x1a, 0x1f, 0xea, 0xfd, 0x5d, 0x8e, 0xb4, 0xc0, 0x84, 0xd4, +0xac, 0xb4, 0x87, 0x5f, 0xac, 0xef, 0xdf, 0xcd, 0x12, 0x56, 0xc8, 0xcd, 0xfe, 0xc5, 0xda, +0xd3, 0xc1, 0x69, 0xf3, 0x61, 0x05, 0xea, 0x25, 0xe2, 0x12, 0x05, 0x8f, 0x39, 0x08, 0x08, +0x7c, 0x37, 0xb6, 0x7e, 0x5b, 0xd8, 0xb1, 0x0e, 0xf2, 0xdb, 0x4b, 0xf1, 0xad, 0x90, 0x01, +0x57, 0xcd, 0xa0, 0xb4, 0x52, 0xe8, 0xf3, 0xd7, 0x8a, 0xbd, 0x4f, 0x9f, 0x21, 0x40, 0x72, +0xa4, 0xfc, 0x0b, 0x01, 0x2b, 0x2f, 0xb6, 0x4c, 0x95, 0x2d, 0x35, 0x33, 0x41, 0x6b, 0xa0, +0x93, 0xe7, 0x2c, 0xf2, 0xd3, 0x72, 0x8b, 0xf4, 0x4f, 0x15, 0x3c, 0xaf, 0xd6, 0x12, 0xde, +0x3f, 0x83, 0x3f, 0xff, 0xf8, 0x7f, 0xf6, 0xcc, 0xa6, 0x7f, 0xc9, 0x9a, 0x6e, 0x1f, 0xc1, +0x0c, 0xfb, 0xee, 0x9c, 0xe7, 0xaf, 0xc9, 0x26, 0x54, 0xef, 0xb0, 0x39, 0xef, 0xb2, 0xe9, +0x23, 0xc4, 0xef, 0xd1, 0xa1, 0xa4, 0x25, 0x24, 0x6f, 0x8d, 0x6a, 0xe5, 0x8a, 0x32, 0x3a, +0xaf, 0xfc, 0xda, 0xce, 0x18, 0x25, 0x42, 0x07, 0x4d, 0x45, 0x8b, 0xdf, 0x85, 0xcf, 0x55, +0xb2, 0x24, 0xfe, 0x9c, 0x69, 0x74, 0xa7, 0x6e, 0xa0, 0xce, 0xc0, 0x39, 0xf4, 0x86, 0xc6, +0x8d, 0xae, 0xb9, 0x48, 0x64, 0x13, 0x0b, 0x40, 0x81, 0xa2, 0xc9, 0xa8, 0x85, 0x51, 0xee, +0x9f, 0xcf, 0xa2, 0x8c, 0x19, 0x52, 0x48, 0xe2, 0xc1, 0xa8, 0x58, 0xb4, 0x10, 0x24, 0x06, +0x58, 0x51, 0xfc, 0xb9, 0x12, 0xec, 0xfd, 0x73, 0xb4, 0x6d, 0x84, 0xfa, 0x06, 0x8b, 0x05, +0x0b, 0x2d, 0xd6, 0xd6, 0x1f, 0x29, 0x82, 0x9f, 0x19, 0x12, 0x1e, 0xb2, 0x04, 0x8f, 0x7f, +0x4d, 0xbd, 0x30, 0x2e, 0xe3, 0xe0, 0x88, 0x29, 0xc5, 0x93, 0xd6, 0x6c, 0x1f, 0x29, 0x45, +0x91, 0xa7, 0x58, 0xcd, 0x05, 0x17, 0xd6, 0x6d, 0xb3, 0xca, 0x66, 0xcc, 0x3c, 0x4a, 0x74, +0xfd, 0x08, 0x10, 0xa6, 0x99, 0x92, 0x10, 0xd2, 0x85, 0xab, 0x6e, 0x1d, 0x0e, 0x8b, 0x26, +0x46, 0xd1, 0x6c, 0x84, 0xc0, 0x26, 0x43, 0x59, 0x68, 0xf0, 0x13, 0x1d, 0xfb, 0xe3, 0xd1, +0xd2, 0xb4, 0x71, 0x9e, 0xf2, 0x59, 0x6a, 0x33, 0x29, 0x79, 0xd2, 0xd7, 0x26, 0xf1, 0xae, +0x78, 0x9e, 0x1f, 0x0f, 0x3f, 0xe3, 0xe8, 0xd0, 0x27, 0x78, 0x77, 0xf6, 0xac, 0x9c, 0x56, +0x39, 0x73, 0x8a, 0x6b, 0x2f, 0x34, 0x78, 0xb1, 0x11, 0xdb, 0xa4, 0x5c, 0x80, 0x01, 0x71, +0x6a, 0xc2, 0xd1, 0x2e, 0x5e, 0x76, 0x28, 0x70, 0x93, 0xae, 0x3e, 0x78, 0xb0, 0x1f, 0x0f, +0xda, 0xbf, 0xfb, 0x8a, 0x67, 0x65, 0x4f, 0x91, 0xed, 0x49, 0x75, 0x78, 0x62, 0xa2, 0x93, +0xb5, 0x70, 0x7f, 0x4d, 0x08, 0x4e, 0x79, 0x61, 0xa8, 0x5f, 0x7f, 0xb4, 0x65, 0x9f, 0x91, +0x54, 0x3a, 0xe8, 0x50, 0x33, 0xd3, 0xd5, 0x8a, 0x7c, 0xf3, 0x9e, 0x8b, 0x77, 0x7b, 0xc6, +0xc6, 0x0c, 0x45, 0x95, 0x1f, 0xb0, 0xd0, 0x0b, 0x27, 0x4a, 0xfd, 0xc7, 0xf7, 0x0d, 0x5a, +0x43, 0xc9, 0x7d, 0x35, 0xb0, 0x7d, 0xc4, 0x9c, 0x57, 0x1e, 0x76, 0x0d, 0xf1, 0x95, 0x30, +0x71, 0xcc, 0xb3, 0x66, 0x3b, 0x63, 0xa8, 0x6c, 0xa3, 0x43, 0xa0, 0x24, 0xcc, 0xb7, 0x53, +0xfe, 0xfe, 0xbc, 0x6e, 0x60, 0x89, 0xaf, 0x16, 0x21, 0xc8, 0x91, 0x6a, 0x89, 0xce, 0x80, +0x2c, 0xf1, 0x59, 0xce, 0xc3, 0x60, 0x61, 0x3b, 0x0b, 0x19, 0xfe, 0x99, 0xac, 0x65, 0x90, +0x15, 0x12, 0x05, 0xac, 0x7e, 0xff, 0x98, 0x7b, 0x66, 0x64, 0x0e, 0x4b, 0x5b, 0xaa, 0x8d, +0x3b, 0xd2, 0x56, 0xcf, 0x99, 0x39, 0xee, 0x22, 0x81, 0xd0, 0x60, 0x06, 0x66, 0x20, 0x81, +0x48, 0x3c, 0x6f, 0x3a, 0x77, 0xba, 0xcb, 0x52, 0xac, 0x79, 0x56, 0xaf, 0xe9, 0x16, 0x17, +0x0a, 0xa3, 0x82, 0x08, 0xd5, 0x3c, 0x97, 0xcb, 0x09, 0xff, 0x7f, 0xf9, 0x4f, 0x60, 0x05, +0xb9, 0x53, 0x26, 0xaa, 0xb8, 0x50, 0xaa, 0x19, 0x25, 0xae, 0x5f, 0xea, 0x8a, 0xd0, 0x89, +0x12, 0x80, 0x43, 0x50, 0x24, 0x12, 0x21, 0x14, 0xcd, 0x77, 0xeb, 0x21, 0xcc, 0x5c, 0x09, +0x64, 0xf3, 0xc7, 0xcb, 0xc5, 0x4b, 0xc3, 0xe7, 0xed, 0xe7, 0x86, 0x2c, 0x1d, 0x8e, 0x19, +0x52, 0x9b, 0x2a, 0x0c, 0x18, 0x72, 0x0b, 0x1e, 0x1b, 0xb0, 0x0f, 0x42, 0x99, 0x04, 0xae, +0xd5, 0xb7, 0x89, 0x1a, 0xb9, 0x4f, 0xd6, 0xaf, 0xf3, 0xc9, 0x93, 0x6f, 0xb0, 0x60, 0x83, +0x6e, 0x6b, 0xd1, 0x5f, 0x3f, 0x1a, 0x83, 0x1e, 0x24, 0x00, 0x87, 0xb5, 0x3e, 0xdb, 0xf9, +0x4d, 0xa7, 0x16, 0x2e, 0x19, 0x5b, 0x8f, 0x1b, 0x0d, 0x47, 0x72, 0x42, 0xe9, 0x0a, 0x11, +0x08, 0x2d, 0x88, 0x1c, 0xbc, 0xc7, 0xb4, 0xbe, 0x29, 0x4d, 0x03, 0x5e, 0xec, 0xdf, 0xf3, +0x3d, 0x2f, 0xe8, 0x1d, 0x9a, 0xd2, 0xd1, 0xab, 0x41, 0x3d, 0x87, 0x11, 0x45, 0xb0, 0x0d, +0x46, 0xf5, 0xe8, 0x95, 0x62, 0x1c, 0x68, 0xf7, 0xa6, 0x5b, 0x39, 0x4e, 0xbf, 0x47, 0xba, +0x5d, 0x7f, 0xb7, 0x6a, 0xf4, 0xba, 0x1d, 0x69, 0xf6, 0xa4, 0xe7, 0xe4, 0x6b, 0x3b, 0x0d, +0x23, 0x16, 0x4a, 0xb2, 0x68, 0xf0, 0xb2, 0x0d, 0x09, 0x17, 0x6a, 0x63, 0x8c, 0x83, 0xd3, +0xbd, 0x05, 0xc9, 0xf6, 0xf0, 0xa1, 0x31, 0x0b, 0x2c, 0xac, 0x83, 0xac, 0x80, 0x34, 0x32, +0xb4, 0xec, 0xd0, 0xbc, 0x54, 0x82, 0x9a, 0xc8, 0xf6, 0xa0, 0x7d, 0xc6, 0x79, 0x73, 0xf4, +0x20, 0x99, 0xf3, 0xb4, 0x01, 0xde, 0x91, 0x27, 0xf2, 0xc0, 0xdc, 0x81, 0x00, 0x4e, 0x7e, +0x07, 0x99, 0xc8, 0x3a, 0x51, 0xbc, 0x38, 0xd6, 0x8a, 0xa2, 0xde, 0x3b, 0x6a, 0x8c, 0x1a, +0x7c, 0x81, 0x0f, 0x3a, 0x1f, 0xe4, 0x05, 0x7b, 0x20, 0x35, 0x6b, 0xa5, 0x6a, 0xa7, 0xe7, +0xbc, 0x9c, 0x20, 0xec, 0x00, 0x15, 0xe2, 0x51, 0xaf, 0x77, 0xeb, 0x29, 0x3c, 0x7d, 0x2e, +0x00, 0x5c, 0x81, 0x21, 0xfa, 0x35, 0x6f, 0x40, 0xef, 0xfb, 0xd1, 0x3f, 0xcc, 0x9d, 0x55, +0x53, 0xfb, 0x5a, 0xa5, 0x56, 0x89, 0x0b, 0x52, 0xeb, 0x57, 0x73, 0x4f, 0x1b, 0x67, 0x24, +0xcb, 0xb8, 0x6a, 0x10, 0x69, 0xd6, 0xfb, 0x52, 0x40, 0xff, 0x20, 0xa5, 0xf3, 0x72, 0xe1, +0x3d, 0xa4, 0x8c, 0x81, 0x66, 0x16, 0x0d, 0x5d, 0xad, 0xa8, 0x50, 0x25, 0x78, 0x31, 0x77, +0x0c, 0x57, 0xe4, 0xe9, 0x15, 0x2d, 0xdb, 0x07, 0x87, 0xc8, 0xb0, 0x43, 0xde, 0xfc, 0xfe, +0xa9, 0xeb, 0xf5, 0xb0, 0xd3, 0x7b, 0xe9, 0x1f, 0x6e, 0xca, 0xe4, 0x03, 0x95, 0xc5, 0xd1, +0x59, 0x72, 0x63, 0xf0, 0x86, 0x54, 0xe8, 0x16, 0x62, 0x0b, 0x35, 0x29, 0xc2, 0x68, 0xd0, +0xd6, 0x3e, 0x90, 0x60, 0x57, 0x1d, 0xc9, 0xed, 0x3f, 0xed, 0xb0, 0x2f, 0x7e, 0x97, 0x02, +0x51, 0xec, 0xee, 0x6f, 0x82, 0x74, 0x76, 0x7f, 0xfb, 0xd6, 0xc4, 0xc3, 0xdd, 0xe8, 0xb1, +0x60, 0xfc, 0xc6, 0xb9, 0x0d, 0x6a, 0x33, 0x78, 0xc6, 0xc1, 0xbf, 0x86, 0x2c, 0x50, 0xcc, +0x9a, 0x70, 0x8e, 0x7b, 0xec, 0xab, 0x95, 0xac, 0x53, 0xa0, 0x4b, 0x07, 0x88, 0xaf, 0x42, +0xed, 0x19, 0x8d, 0xf6, 0x32, 0x17, 0x48, 0x47, 0x1d, 0x41, 0x6f, 0xfe, 0x2e, 0xa7, 0x8f, +0x4b, 0xa0, 0x51, 0xf3, 0xbf, 0x02, 0x0a, 0x48, 0x58, 0xf7, 0xa1, 0x6d, 0xea, 0xa5, 0x13, +0x5a, 0x5b, 0xea, 0x0c, 0x9e, 0x52, 0x4f, 0x9e, 0xb9, 0x71, 0x7f, 0x23, 0x83, 0xda, 0x1b, +0x86, 0x9a, 0x41, 0x29, 0xda, 0x70, 0xe7, 0x64, 0xa1, 0x7b, 0xd5, 0x0a, 0x22, 0x0d, 0x5c, +0x40, 0xc4, 0x81, 0x07, 0x25, 0x35, 0x4a, 0x1c, 0x10, 0xdb, 0x45, 0x0a, 0xff, 0x36, 0xd4, +0xe0, 0xeb, 0x5f, 0x68, 0xd6, 0x67, 0xc6, 0xd0, 0x8b, 0x76, 0x1a, 0x7d, 0x59, 0x42, 0xa1, +0xcb, 0x96, 0x4d, 0x84, 0x09, 0x9a, 0x3d, 0xe0, 0x52, 0x85, 0x6e, 0x48, 0x90, 0x85, 0x2a, +0x63, 0xb2, 0x69, 0xd2, 0x00, 0x43, 0x31, 0x37, 0xb3, 0x52, 0xaf, 0x62, 0xfa, 0xc1, 0xe0, +0x03, 0xfb, 0x62, 0xaa, 0x88, 0xc9, 0xb2, 0x2c, 0xd5, 0xa8, 0xf5, 0xa5, 0x4c, 0x12, 0x59, +0x4e, 0x06, 0x5e, 0x9b, 0x15, 0x66, 0x11, 0xb2, 0x27, 0x92, 0xdc, 0x98, 0x59, 0xde, 0xdf, +0xfa, 0x9a, 0x32, 0x2e, 0xc0, 0x5d, 0x3c, 0x33, 0x41, 0x6d, 0xaf, 0xb2, 0x25, 0x23, 0x14, +0xa5, 0x7b, 0xc7, 0x9b, 0x68, 0xf3, 0xda, 0xeb, 0xe3, 0xa9, 0xe2, 0x6f, 0x0e, 0x1d, 0x1c, +0xba, 0x55, 0xb6, 0x34, 0x6a, 0x93, 0x1f, 0x1f, 0xb8, 0x34, 0xc8, 0x84, 0x08, 0xb1, 0x6b, +0x6a, 0x28, 0x74, 0x74, 0xe5, 0xeb, 0x75, 0xe9, 0x7c, 0xd8, 0xba, 0xd8, 0x42, 0xa5, 0xee, +0x1f, 0x80, 0xd9, 0x96, 0xb2, 0x2e, 0xe7, 0xbf, 0xba, 0xeb, 0xd1, 0x69, 0xbb, 0x8f, 0xfd, +0x5a, 0x63, 0x8f, 0x39, 0x7f, 0xdf, 0x1d, 0x37, 0xd2, 0x18, 0x35, 0x9d, 0xb6, 0xcc, 0xe4, +0x27, 0x81, 0x89, 0x38, 0x38, 0x68, 0x33, 0xe7, 0x78, 0xd8, 0x76, 0xf5, 0xee, 0xd0, 0x4a, +0x07, 0x69, 0x19, 0x7a, 0xad, 0x18, 0xb1, 0x94, 0x61, 0x45, 0x53, 0xa2, 0x48, 0xda, 0x96, +0x4a, 0xf9, 0xee, 0x94, 0x2a, 0x1f, 0x6e, 0x18, 0x3c, 0x92, 0x46, 0xd1, 0x1a, 0x28, 0x18, +0x32, 0x1f, 0x3a, 0x45, 0xbe, 0x04, 0x35, 0x92, 0xe5, 0xa3, 0xcb, 0xb5, 0x2e, 0x32, 0x43, +0xac, 0x65, 0x17, 0x89, 0x99, 0x15, 0x03, 0x9e, 0xb1, 0x23, 0x2f, 0xed, 0x76, 0x4d, 0xd8, +0xac, 0x21, 0x40, 0xc4, 0x99, 0x4e, 0x65, 0x71, 0x2c, 0xb3, 0x45, 0xab, 0xfb, 0xe7, 0x72, +0x39, 0x56, 0x30, 0x6d, 0xfb, 0x74, 0xeb, 0x99, 0xf3, 0xcd, 0x57, 0x5c, 0x78, 0x75, 0xe9, +0x8d, 0xc3, 0xa2, 0xfb, 0x5d, 0xe0, 0x90, 0xc5, 0x55, 0xad, 0x91, 0x53, 0x4e, 0x9e, 0xbd, +0x8c, 0x49, 0xa4, 0xa4, 0x69, 0x10, 0x0c, 0xc5, 0x76, 0xe9, 0x25, 0x86, 0x8d, 0x66, 0x23, +0xa8, 0xdb, 0x5c, 0xe8, 0xd9, 0x30, 0xe1, 0x15, 0x7b, 0xc0, 0x99, 0x0f, 0x03, 0xec, 0xaa, +0x12, 0xef, 0xce, 0xd4, 0xea, 0x55, 0x5c, 0x08, 0x86, 0xf4, 0xf4, 0xb0, 0x83, 0x42, 0x95, +0x37, 0xb6, 0x38, 0xe0, 0x2b, 0x54, 0x89, 0xbd, 0x4e, 0x20, 0x9d, 0x3f, 0xc3, 0x4b, 0xb7, +0xec, 0xfa, 0x5a, 0x14, 0x03, 0xcb, 0x64, 0xc8, 0x34, 0x4a, 0x4b, 0x6e, 0xf8, 0x6e, 0x56, +0xf6, 0xdd, 0x5f, 0xa1, 0x24, 0xe2, 0xd4, 0xd0, 0x82, 0x64, 0x1f, 0x8e, 0x9b, 0xfa, 0xb4, +0xcb, 0xdb, 0x0a, 0xe8, 0x15, 0xfc, 0x15, 0xab, 0x4b, 0x18, 0xbf, 0xd4, 0x42, 0x14, 0x48, +0x82, 0x85, 0xdd, 0xeb, 0x49, 0x1b, 0x0b, 0x0b, 0x05, 0xe9, 0xb4, 0xa1, 0x33, 0x0a, 0x5d, +0x0e, 0x6c, 0x4b, 0xc0, 0xd6, 0x6c, 0x7c, 0xfb, 0x69, 0x0b, 0x53, 0x19, 0xe4, 0xf3, 0x35, +0xfc, 0xbe, 0xa1, 0x34, 0x02, 0x09, 0x4f, 0x74, 0x86, 0x92, 0xcd, 0x5d, 0x1a, 0xc1, 0x27, +0x0c, 0xf2, 0xc5, 0xcf, 0xdd, 0x23, 0x93, 0x02, 0xbd, 0x41, 0x5e, 0x42, 0xf0, 0xa0, 0x9d, +0x0c, 0x72, 0xc8, 0xec, 0x32, 0x0a, 0x8a, 0xfd, 0x3d, 0x5a, 0x41, 0x27, 0x0c, 0x88, 0x59, +0xad, 0x94, 0x2e, 0xef, 0x5d, 0x8f, 0xc7, 0xdf, 0x66, 0xe4, 0xdd, 0x56, 0x6c, 0x7b, 0xca, +0x55, 0x81, 0xae, 0xae, 0x5c, 0x1b, 0x1a, 0xab, 0xae, 0x99, 0x8d, 0xcc, 0x42, 0x97, 0x59, +0xf4, 0x14, 0x3f, 0x75, 0xc6, 0xd1, 0x88, 0xba, 0xaa, 0x84, 0x4a, 0xd0, 0x34, 0x08, 0x3b, +0x7d, 0xdb, 0x15, 0x06, 0xb0, 0x5c, 0xbd, 0x40, 0xf5, 0xa8, 0xec, 0xae, 0x36, 0x40, 0xdd, +0x90, 0x1c, 0x3e, 0x0d, 0x7e, 0x73, 0xc7, 0xc2, 0xc5, 0x6a, 0xff, 0x52, 0x05, 0x7f, 0xbe, +0xd0, 0x92, 0xfd, 0xb3, 0x6f, 0xff, 0x5d, 0xb7, 0x97, 0x64, 0x73, 0x7b, 0xca, 0xd1, 0x98, +0x24, 0x6b, 0x0b, 0x01, 0x68, 0xdd, 0x27, 0x85, 0x85, 0xb5, 0x83, 0xc1, 0xe0, 0x50, 0x64, +0xc7, 0xaf, 0xf1, 0xc6, 0x4d, 0xb1, 0xef, 0xc9, 0xb4, 0x0a, 0x6d, 0x65, 0xf3, 0x47, 0xcc, +0xa3, 0x02, 0x21, 0x0c, 0xbe, 0x22, 0x29, 0x05, 0xcf, 0x5f, 0xe8, 0x94, 0x6c, 0xe5, 0xdc, +0xc4, 0xdf, 0xbe, 0x3e, 0xa8, 0xb4, 0x18, 0xb0, 0x99, 0xb8, 0x6f, 0xff, 0x5d, 0xb9, 0xfd, +0x3b, 0x5d, 0x16, 0xbf, 0x3e, 0xd8, 0xb3, 0xd8, 0x08, 0x34, 0xf6, 0x47, 0x35, 0x5b, 0x72, +0x1a, 0x33, 0xad, 0x52, 0x5d, 0xb8, 0xd0, 0x77, 0xc6, 0xab, 0xba, 0x55, 0x09, 0x5f, 0x02, +0xf8, 0xd4, 0x5f, 0x53, 0x06, 0x91, 0xcd, 0x74, 0x42, 0xae, 0x54, 0x91, 0x81, 0x62, 0x13, +0x6f, 0xd8, 0xa9, 0x77, 0xc3, 0x6c, 0xcb, 0xf1, 0x29, 0x5a, 0xcc, 0xda, 0x35, 0xbd, 0x52, +0x23, 0xbe, 0x59, 0xeb, 0x12, 0x6d, 0xb7, 0x53, 0xee, 0xfc, 0xb4, 0x1b, 0x13, 0x5e, 0xba, +0x16, 0x7c, 0xc5, 0xf3, 0xe3, 0x6d, 0x07, 0x78, 0xf5, 0x2b, 0x21, 0x05, 0x88, 0x4c, 0xc0, +0xa1, 0xe3, 0x36, 0x10, 0xf8, 0x1b, 0xd8, 0x17, 0xfb, 0x6a, 0x4e, 0xd8, 0xb3, 0x47, 0x2d, +0x99, 0xbd, 0xbb, 0x5d, 0x37, 0x7d, 0xba, 0xf1, 0xe1, 0x7c, 0xc0, 0xc5, 0x54, 0x62, 0x7f, +0xcf, 0x5a, 0x4a, 0x93, 0xcc, 0xf1, 0x1b, 0x34, 0xc8, 0xa6, 0x05, 0x4c, 0x55, 0x8b, 0x54, +0x84, 0xd5, 0x77, 0xeb, 0xc0, 0x6d, 0x3a, 0x29, 0xbd, 0x75, 0x61, 0x09, 0x9a, 0x2c, 0xbb, +0xf7, 0x18, 0x79, 0x34, 0x90, 0x24, 0xa5, 0x81, 0x70, 0x87, 0xc5, 0x02, 0x7c, 0xba, 0xd4, +0x5e, 0x14, 0x8e, 0xe4, 0xed, 0xa2, 0x61, 0x6a, 0xb9, 0x6e, 0xb5, 0x4a, 0xb9, 0x01, 0x46, +0xf4, 0xcf, 0xbc, 0x09, 0x2f, 0x27, 0x4b, 0xbd, 0x86, 0x7a, 0x10, 0xe1, 0xd4, 0xc8, 0xd9, +0x20, 0x8d, 0x8a, 0x63, 0x00, 0x63, 0x44, 0xeb, 0x54, 0x0b, 0x75, 0x49, 0x10, 0xa2, 0xa7, +0xad, 0xb9, 0xd1, 0x01, 0x80, 0x63, 0x25, 0xc8, 0x12, 0xa6, 0xce, 0x1e, 0xbe, 0xfe, 0x7e, +0x5f, 0x3c, 0xdb, 0x34, 0xea, 0x37, 0xec, 0x3b, 0xd5, 0x28, 0xd2, 0x07, 0x8c, 0x9a, 0xb6, +0xee, 0x5e, 0x3e, 0xdf, 0x1d, 0x99, 0xb0, 0xe2, 0x46, 0xef, 0x5c, 0x1b, 0xb4, 0xea, 0x56, +0x2e, 0xde, 0x1f, 0x9d, 0xb8, 0xd3, 0x24, 0xab, 0xd4, 0x2a, 0xd6, 0x2e, 0xde, 0x1f, 0x9d, +0xb8, 0xf2, 0x66, 0x2f, 0xbd, 0xf8, 0x72, 0x66, 0x4e, 0x1e, 0x9f, 0x9d, 0xb8, 0xf2, 0x47, +0x0c, 0x9a, 0xb6, 0xee, 0x3f, 0xfc, 0x7a, 0x57, 0x0d, 0x79, 0x70, 0x62, 0x27, 0xad, 0xb9, +0xd1, 0x01, 0x61, 0x40, 0x02, 0x67, 0x2d, 0xd8, 0x32, 0xe6, 0x2f, 0xdc, 0x3a, 0xd7, 0x2c, +0xbb, 0xf4, 0x4b, 0xf5, 0x49, 0xf1, 0x60, 0x23, 0xc4, 0x0a, 0x77, 0x4d, 0xf9, 0x51, 0x01, +0x80, 0x63, 0x25, 0xa9, 0xb1, 0xe0, 0x42, 0xe7, 0x4c, 0x1a, 0x97, 0xac, 0xbb, 0xf4, 0x6a, +0x37, 0xcd, 0x18, 0xb2, 0xe6, 0x2f, 0xdc, 0x1b, 0x95, 0xa8, 0xd2, 0x07, 0x6d, 0x58, 0x32, +0xe6, 0x4e, 0x1e, 0x9f, 0xbc, 0xfa, 0x57, 0x0d, 0x79, 0x51, 0x20, 0xc2, 0x06, 0x6f, 0x5c, +0x1b, 0x95, 0xa8, 0xb3, 0xc5, 0xe9, 0x31, 0xe0, 0x23, 0xc4, 0x0a, 0x77, 0x4d, 0x18, 0x93, +0x85, 0x69, 0x31, 0xc1, 0xe1, 0x21, 0xc0, 0xe3, 0x44, 0x0a, 0x77, 0x6c, 0x5a, 0x17, 0x8d, +0x98, 0x93, 0xa4, 0xab, 0xd4, 0x2a, 0xb7, 0xec, 0x5a, 0x17, 0xac, 0xbb, 0xf4, 0x4b, 0x14, +0xaa, 0xb7, 0xec, 0x3b, 0xd5, 0x28, 0xb3, 0xc5, 0xe9, 0x31, 0xc1, 0x00, 0x82, 0x67, 0x4c, +0xfb, 0x55, 0x28, 0xd2, 0x26, 0xaf, 0xbd, 0xd9, 0x11, 0x81, 0x61, 0x21, 0xa1, 0xa1, 0xc0, +0x02, 0x86, 0x6f, 0x5c, 0x1b, 0xb4, 0xcb, 0x14, 0x8b, 0x94, 0xaa, 0xd6, 0x2e, 0xbf, 0xdd, +0x19, 0xb0, 0xe2, 0x46, 0x0e, 0x7f, 0x7c, 0x5b, 0x15, 0x89, 0x90, 0x83, 0x84, 0x6b, 0x54, +0x0b, 0x75, 0x68, 0x52, 0x07, 0x6d, 0x58, 0x32, 0xc7, 0xed, 0x58, 0x32, 0xc7, 0xed, 0x58, +0x32, 0xe6, 0x4e, 0xff, 0x7c, 0x7a, 0x76, 0x6e, 0x3f, 0xdd, 0x38, 0xd3, 0x05, 0x88, 0x92, +0xa6, 0xaf, 0xdc, 0x1b, 0xb4, 0xcb, 0xf5, 0x68, 0x52, 0x07, 0x8c, 0x7b, 0x55, 0x09, 0x90, +0x83, 0x84, 0x6b, 0x54, 0x2a, 0xb7, 0xec, 0x3b, 0xd5, 0x09, 0x90, 0xa2, 0xc6, 0x0e, 0x7f, +0x7c, 0x7a, 0x57, 0x0d, 0x98, 0xb2, 0xc7, 0xed, 0x58, 0x32, 0xc7, 0x0c, 0x7b, 0x74, 0x4b, +0x14, 0x8b, 0x94, 0xaa, 0xb7, 0xcd, 0x18, 0x93, 0xa4, 0xca, 0x16, 0xae, 0xbf, 0xdd, 0x19, +0xb0, 0xe2, 0x46, 0x0e, 0x7f, 0x5d, 0x19, 0x91, 0x81, 0x80, 0x63, 0x44, 0xeb, 0x35, 0xc9, +0x10, 0x83, 0x65, 0x48, 0x12, 0xa6, 0xce, 0x1e, 0x9f, 0xbc, 0xdb, 0x15, 0x89, 0x71, 0x60, +0x23, 0xc4, 0xeb, 0x54, 0x2a, 0xb7, 0xec, 0x5a, 0x36, 0xcf, 0x81, 0x10, 0xac, 0x74 }; + +// clang-format off diff --git a/drivers/serial.h b/drivers/serial.h new file mode 100644 index 000000000000..d9c2a69e9699 --- /dev/null +++ b/drivers/serial.h @@ -0,0 +1,46 @@ +/* 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 . + */ + +#pragma once + +#include +#include + +#include + +// initiator is transaction start side +void soft_serial_initiator_init(void); +// target is interrupt accept side +void soft_serial_target_init(void); + +// initiator result +#define TRANSACTION_END 0 +#define TRANSACTION_NO_RESPONSE 0x1 +#define TRANSACTION_DATA_ERROR 0x2 +#define TRANSACTION_TYPE_ERROR 0x4 +int soft_serial_transaction(int sstd_index); + +// target status +// *SSTD_t.status has +// initiator: +// TRANSACTION_END +// or TRANSACTION_NO_RESPONSE +// or TRANSACTION_DATA_ERROR +// target: +// TRANSACTION_DATA_ERROR +// or TRANSACTION_ACCEPTED +#define TRANSACTION_ACCEPTED 0x8 +int soft_serial_get_and_clean_status(int sstd_index); 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 0755ddf6c4fe..000000000000 --- a/drivers/ugfx/gdisp/is31fl3731c/board_is31fl3731c_template.h +++ /dev/null @@ -1,105 +0,0 @@ -/* -Copyright 2016 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 . -*/ - -#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 a53131bf33b7..000000000000 --- 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 718824402221..000000000000 --- a/drivers/ugfx/gdisp/is31fl3731c/gdisp_is31fl3731c.c +++ /dev/null @@ -1,302 +0,0 @@ -/* -Copyright 2016 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 . -*/ - -#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 403c6b0409cf..000000000000 --- a/drivers/ugfx/gdisp/is31fl3731c/gdisp_lld_config.h +++ /dev/null @@ -1,36 +0,0 @@ -/* -Copyright 2016 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 . -*/ - -#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 875ed9e65c6c..000000000000 --- 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 799a986b0a8b..000000000000 --- 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 f586f97e3859..000000000000 --- 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 6052058ec233..000000000000 --- 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 3c77a88569aa..000000000000 --- 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/drivers/usb2422.c b/drivers/usb2422.c new file mode 100644 index 000000000000..62b919093b96 --- /dev/null +++ b/drivers/usb2422.c @@ -0,0 +1,402 @@ +/* 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 . + */ +#include +#include "usb2422.h" +#include "i2c_master.h" +#include "wait.h" +#include "gpio.h" + +/* -------- USB2422_VID : (USB2422L Offset: 0x00) (R/W 16) Vendor ID -------- */ +typedef union { + struct { + uint16_t VID_LSB : 8; + uint16_t VID_MSB : 8; + } bit; /*!< Structure used for bit access */ + uint16_t reg; /*!< Type used for register access */ +} USB2422_VID_Type; + +/* -------- USB2422_PID : (USB2422L Offset: 0x02) (R/W 16) Product ID -------- */ +typedef union { + struct { + uint16_t PID_LSB : 8; + uint16_t PID_MSB : 8; + } bit; /*!< Structure used for bit access */ + uint16_t reg; /*!< Type used for register access */ +} USB2422_PID_Type; + +/* -------- USB2422_DID : (USB2422L Offset: 0x04) (R/W 16) Device ID -------- */ +typedef union { + struct { + uint16_t DID_LSB : 8; + uint16_t DID_MSB : 8; + } bit; /*!< Structure used for bit access */ + uint16_t reg; /*!< Type used for register access */ +} USB2422_DID_Type; + +/* -------- USB2422_CFG1 : (USB2422L Offset: 0x06) (R/W 8) Configuration Data Byte 1-------- */ +typedef union { + struct { + uint8_t PORT_PWR : 1; + uint8_t CURRENT_SNS : 2; + uint8_t EOP_DISABLE : 1; + uint8_t MTT_ENABLE : 1; + uint8_t HS_DISABLE : 1; + uint8_t : 1; + uint8_t SELF_BUS_PWR : 1; + } bit; /*!< Structure used for bit access */ + uint8_t reg; /*!< Type used for register access */ +} USB2422_CFG1_Type; + +/* -------- USB2422_CFG2 : (USB2422L Offset: 0x07) (R/W 8) Configuration Data Byte 2-------- */ +typedef union { + struct { + uint8_t : 3; + uint8_t COMPOUND : 1; + uint8_t OC_TIMER : 2; + uint8_t : 1; + uint8_t DYNAMIC : 1; + } bit; /*!< Structure used for bit access */ + uint8_t reg; /*!< Type used for register access */ +} USB2422_CFG2_Type; + +/* -------- USB2422_CFG3 : (USB2422L Offset: 0x08) (R/W 16) Configuration Data Byte 3-------- */ +typedef union { + struct { + uint8_t STRING_EN : 1; + uint8_t : 2; + uint8_t PRTMAP_EN : 1; + uint8_t : 4; + } bit; /*!< Structure used for bit access */ + uint8_t reg; /*!< Type used for register access */ +} USB2422_CFG3_Type; + +/* -------- USB2422_NRD : (USB2422L Offset: 0x09) (R/W 8) Non Removable Device -------- */ +typedef union { + struct { + uint8_t : 5; + uint8_t PORT2_NR : 1; + uint8_t PORT1_NR : 1; + uint8_t : 1; + } bit; /*!< Structure used for bit access */ + uint8_t reg; /*!< Type used for register access */ +} USB2422_NRD_Type; + +/* -------- USB2422_PDS : (USB2422L Offset: 0x0A) (R/W 8) Port Diable for Self-Powered Operation -------- */ +typedef union { + struct { + uint8_t : 1; + uint8_t PORT1_DIS : 1; + uint8_t PORT2_DIS : 1; + uint8_t : 5; + } bit; /*!< Structure used for bit access */ + uint8_t reg; /*!< Type used for register access */ +} USB2422_PDS_Type; + +/* -------- USB2422_PDB : (USB2422L Offset: 0x0B) (R/W 8) Port Diable for Bus-Powered Operation -------- */ + +typedef union { + struct { + uint8_t : 1; + uint8_t PORT1_DIS : 1; + uint8_t PORT2_DIS : 1; + uint8_t : 5; + } bit; /*!< Structure used for bit access */ + uint8_t reg; /*!< Type used for register access */ +} USB2422_PDB_Type; + +/* -------- USB2422_MAXPS : (USB2422L Offset: 0x0C) (R/W 8) Max Power for Self-Powered Operation -------- */ +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; + +/* -------- USB2422_MAXPB : (USB2422L Offset: 0x0D) (R/W 8) Max Power for Bus-Powered Operation -------- */ +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; + +/* -------- USB2422_HCMCS : (USB2422L Offset: 0x0E) (R/W 8) Hub Controller Max Current for Self-Powered Operation -------- */ +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; + +/* -------- USB2422_HCMCB : (USB2422L Offset: 0x0F) (R/W 8) Hub Controller Max Current for Bus-Powered Operation -------- */ +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; + +/* -------- USB2422_PWRT : (USB2422L Offset: 0x10) (R/W 8) Power On Time -------- */ +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; + +/* -------- USB2422_LANGID LSB : (USB2422L Offset: 0x11) (R/W 16) Language ID -------- */ +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; + +/* -------- USB2422_LANGID MSB : (USB2422L Offset: 0x12) (R/W 16) Language ID -------- */ +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; + +/* -------- USB2422_MFRSL : (USB2422L Offset: 0x13) (R/W 8) Manufacturer String Length -------- */ +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; + +/* -------- USB2422_PRDSL : (USB2422L Offset: 0x14) (R/W 8) Product String Length -------- */ +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; + +/* -------- USB2422_SERSL : (USB2422L Offset: 0x15) (R/W 8) Serial String Length -------- */ +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; + +/* -------- USB2422_MFRSTR : (USB2422L Offset: 0x16-53) (R/W 8) Maufacturer String -------- */ +typedef uint16_t USB2422_MFRSTR_Type; + +/* -------- USB2422_PRDSTR : (USB2422L Offset: 0x54-91) (R/W 8) Product String -------- */ +typedef uint16_t USB2422_PRDSTR_Type; + +/* -------- USB2422_SERSTR : (USB2422L Offset: 0x92-CF) (R/W 8) Serial String -------- */ +typedef uint16_t USB2422_SERSTR_Type; + +/* -------- USB2422_BCEN : (USB2422L Offset: 0xD0) (R/W 8) Battery Charging Enable -------- */ + +typedef union { + struct { + uint8_t : 1; + uint8_t PORT1_BCE : 1; + uint8_t PORT2_BCE : 1; + uint8_t : 5; + } bit; /*!< Structure used for bit access */ + uint8_t reg; /*!< Type used for register access */ +} USB2422_BCEN_Type; + +/* -------- USB2422_BOOSTUP : (USB2422L Offset: 0xF6) (R/W 8) Boost Upstream -------- */ +typedef union { + struct { + uint8_t BOOST : 2; + uint8_t : 6; + } bit; /*!< Structure used for bit access */ + uint8_t reg; /*!< Type used for register access */ +} USB2422_BOOSTUP_Type; + +/* -------- USB2422_BOOSTDOWN : (USB2422L Offset: 0xF8) (R/W 8) Boost Downstream -------- */ +typedef union { + struct { + uint8_t BOOST1 : 2; + uint8_t BOOST2 : 2; + uint8_t : 4; + } bit; /*!< Structure used for bit access */ + uint8_t reg; /*!< Type used for register access */ +} USB2422_BOOSTDOWN_Type; + +/* -------- USB2422_PRTSP : (USB2422L Offset: 0xFA) (R/W 8) Port Swap -------- */ +typedef union { + struct { + uint8_t : 1; + uint8_t PORT1_SP : 1; + uint8_t PORT2_SP : 1; + uint8_t : 5; + } bit; /*!< Structure used for bit access */ + uint8_t reg; /*!< Type used for register access */ +} USB2422_PRTSP_Type; + +/* -------- USB2422_PRTR12 : (USB2422L Offset: 0xFB) (R/W 8) Port 1/2 Remap -------- */ +typedef union { + struct { + uint8_t PORT1_REMAP : 4; + uint8_t PORT2_REMAP : 4; + } bit; /*!< Structure used for bit access */ + uint8_t reg; /*!< Type used for register access */ +} USB2422_PRTR12_Type; + +#define USB2422_PRTR12_DISABLE 0 +#define USB2422_PRT12_P2TOL1 1 +#define USB2422_PRT12_P2XTOL2 2 +#define USB2422_PRT12_P1TOL1 1 +#define USB2422_PRT12_P1XTOL2 2 + +/* -------- USB2422_STCD : (USB2422L Offset: 0xFF) (R/W 8) Status Command -------- */ +typedef union { + struct { + uint8_t USB_ATTACH : 1; + uint8_t RESET : 1; + uint8_t INTF_PWRDN : 1; + uint8_t : 5; + } bit; /*!< Structure used for bit access */ + uint8_t reg; /*!< Type used for register access */ +} USB2422_STCD_Type; + +/** \brief USB2422 device hardware registers */ +typedef struct { + USB2422_VID_Type VID; /**< \brief Offset: 0x00*/ + USB2422_PID_Type PID; /**< \brief Offset: 0x02*/ + USB2422_DID_Type DID; /**< \brief Offset: 0x04*/ + USB2422_CFG1_Type CFG1; /**< \brief Offset: 0x06*/ + USB2422_CFG2_Type CFG2; /**< \brief Offset: 0x07*/ + USB2422_CFG3_Type CFG3; /**< \brief Offset: 0x08*/ + USB2422_NRD_Type NRD; /**< \brief Offset: 0x09*/ + USB2422_PDS_Type PDS; /**< \brief Offset: 0x0A*/ + USB2422_PDB_Type PDB; /**< \brief Offset: 0x0B*/ + USB2422_MAXPS_Type MAXPS; /**< \brief Offset: 0x0C*/ + USB2422_MAXPB_Type MAXPB; /**< \brief Offset: 0x0D*/ + USB2422_HCMCS_Type HCMCS; /**< \brief Offset: 0x0E*/ + USB2422_HCMCB_Type HCMCB; /**< \brief Offset: 0x0F*/ + USB2422_PWRT_Type PWRT; /**< \brief Offset: 0x10*/ + USB2422_LANGID_LSB_Type LANGID_LSB; /**< \brief Offset: 0x11*/ + USB2422_LANGID_MSB_Type LANGID_MSB; /**< \brief Offset: 0x12*/ + USB2422_MFRSL_Type MFRSL; /**< \brief Offset: 0x13*/ + USB2422_PRDSL_Type PRDSL; /**< \brief Offset: 0x14*/ + USB2422_SERSL_Type SERSL; /**< \brief Offset: 0x15*/ + USB2422_MFRSTR_Type MFRSTR[31]; /**< \brief Offset: 0x16*/ + USB2422_PRDSTR_Type PRDSTR[31]; /**< \brief Offset: 0x54*/ + USB2422_SERSTR_Type SERSTR[31]; /**< \brief Offset: 0x92*/ + USB2422_BCEN_Type BCEN; /**< \brief Offset: 0xD0*/ + uint8_t Reserved1[0x25]; + USB2422_BOOSTUP_Type BOOSTUP; /**< \brief Offset: 0xF6*/ + uint8_t Reserved2[0x1]; + USB2422_BOOSTDOWN_Type BOOSTDOWN; /**< \brief Offset: 0xF8*/ + uint8_t Reserved3[0x1]; + USB2422_PRTSP_Type PRTSP; /**< \brief Offset: 0xFA*/ + USB2422_PRTR12_Type PRTR12; /**< \brief Offset: 0xFB*/ + uint8_t Reserved4[0x3]; + USB2422_STCD_Type STCD; /**< \brief Offset: 0xFF*/ +} Usb2422_t; + +// *************************************************************** + +static Usb2422_t config; + +// *************************************************************** + +/** \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]; + } +} + +/** \brief Handle the conversion to allow simple strings + */ +static void USB2422_write_block(void) { + static unsigned char i2c0_buf[34]; + + unsigned char* dest = i2c0_buf; + unsigned char* src; + unsigned char* base = (unsigned char*)&config; + + 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() { +#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 000000000000..2e435b02bc97 --- /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 . + */ +#pragma once + +#include + +#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/drivers/ws2812.h b/drivers/ws2812.h index f179fcb0ef5a..945b3d072892 100644 --- a/drivers/ws2812.h +++ b/drivers/ws2812.h @@ -17,11 +17,41 @@ #include "quantum/color.h" +/* + * The WS2812 datasheets define T1H 900ns, T0H 350ns, T1L 350ns, T0L 900ns. Hence, by default, these + * are chosen to be conservative and avoid problems rather than for maximum throughput; in the code, + * this is done by default using a WS2812_TIMING parameter that accounts for the whole window (1250ns) + * and defining T1H and T0H; T1L and T0L are obtained by subtracting their low counterparts from the window. + * + * However, there are certain "WS2812"-like LEDs, like the SK6812s, which work in a similar + * communication topology but use different timings for the window and the T1L, T1H, T0L and T0H. + * This means that, albeit the same driver being applicable, the timings must be adapted. + */ + +#ifndef WS2812_TIMING +# define WS2812_TIMING 1250 +#endif + +#ifndef WS2812_T1H +# define WS2812_T1H 900 // Width of a 1 bit in ns +#endif + +#ifndef WS2812_T1L +# define WS2812_T1L (WS2812_TIMING - WS2812_T1H) // Width of a 1 bit in ns +#endif + +#ifndef WS2812_T0H +# define WS2812_T0H 350 // Width of a 0 bit in ns +#endif + +#ifndef WS2812_T0L +# define WS2812_T0L (WS2812_TIMING - WS2812_T0H) // Width of a 0 bit in ns +#endif + /* * Older WS2812s can handle a reset time (TRST) of 50us, but recent * component revisions require a minimum of 280us. */ - #if !defined(WS2812_TRST_US) # define WS2812_TRST_US 280 #endif diff --git a/keyboards/0_sixty/info.json b/keyboards/0_sixty/info.json index 70cf5f48b4d4..b04e9accb2e6 100644 --- a/keyboards/0_sixty/info.json +++ b/keyboards/0_sixty/info.json @@ -2,8 +2,6 @@ "keyboard_name": "0-Sixty", "url": "", "maintainer": "vinamarora8", - "width": 12, - "height": 5, "layouts": { "LAYOUT_1x2uC": { "layout": [ diff --git a/keyboards/0_sixty/rules.mk b/keyboards/0_sixty/rules.mk index 92df0f561516..2127201784f4 100644 --- a/keyboards/0_sixty/rules.mk +++ b/keyboards/0_sixty/rules.mk @@ -7,15 +7,14 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = 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 + +LTO_ENABLE = yes # Link-time opt diff --git a/keyboards/0_sixty/underglow/config.h b/keyboards/0_sixty/underglow/config.h new file mode 100644 index 000000000000..5f4ebd4c4535 --- /dev/null +++ b/keyboards/0_sixty/underglow/config.h @@ -0,0 +1,62 @@ +/* Copyright 2021 Vinam Arora + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#undef PRODUCT_ID +#define PRODUCT_ID 0x0061 +#undef PRODUCT +#define PRODUCT 0-Sixty-underglow + +/* no caps lock with underglow */ +#undef LED_CAPS_LOCK_PIN + +/* underglow */ +#define RGB_DI_PIN B6 +#define RGBLED_NUM 24 +#define RGBLIGHT_LIMIT_VAL 185 // limit max I to 400mA +#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 + +/* + * 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/0_sixty/underglow/rules.mk b/keyboards/0_sixty/underglow/rules.mk new file mode 100644 index 000000000000..84ef473c02e2 --- /dev/null +++ b/keyboards/0_sixty/underglow/rules.mk @@ -0,0 +1 @@ +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow diff --git a/keyboards/0_sixty/underglow/underglow.h b/keyboards/0_sixty/underglow/underglow.h new file mode 100644 index 000000000000..807dfa84cee1 --- /dev/null +++ b/keyboards/0_sixty/underglow/underglow.h @@ -0,0 +1,19 @@ +/* Copyright 2021 Vinam Arora + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "0_sixty.h" diff --git a/keyboards/0xc7/61key/61key.c b/keyboards/0xc7/61key/61key.c new file mode 100644 index 000000000000..2db485796ca1 --- /dev/null +++ b/keyboards/0xc7/61key/61key.c @@ -0,0 +1,17 @@ +/* Copyright 2021 0xC7 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "61key.h" diff --git a/keyboards/0xc7/61key/61key.h b/keyboards/0xc7/61key/61key.h new file mode 100644 index 000000000000..8767b2df1d4a --- /dev/null +++ b/keyboards/0xc7/61key/61key.h @@ -0,0 +1,43 @@ +/* Copyright 2021 0xC7 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If KC_NOt, see . + */ + +#pragma once + +#include "quantum.h" + +#define ___ KC_NO + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT_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, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3D, \ + K40, K41, K42, K45, K48, K49, K4B, 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, ___, ___, K48, K49, ___, K4B, ___, K4D } \ +} diff --git a/keyboards/0xc7/61key/config.h b/keyboards/0xc7/61key/config.h new file mode 100644 index 000000000000..d83a855572e8 --- /dev/null +++ b/keyboards/0xc7/61key/config.h @@ -0,0 +1,152 @@ +/* +Copyright 2021 0xC7 + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xE117 +#define PRODUCT_ID 0x6161 +#define DEVICE_VER 0x0001 +#define MANUFACTURER 0xC7 +#define PRODUCT 61Key + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/* + * 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, B7 } +#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, F7, F6, F5, F4, F1, F0 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +//#define LED_NUM_LOCK_PIN B0 +//#define LED_CAPS_LOCK_PIN B1 +//#define LED_SCROLL_LOCK_PIN B2 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +//#define RGB_DI_PIN E2 +//#ifdef RGB_DI_PIN +//# define RGBLED_NUM 16 +//# define RGBLIGHT_HUE_STEP 8 +//# define RGBLIGHT_SAT_STEP 8 +//# define RGBLIGHT_VAL_STEP 8 +//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +//# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +//#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 \ No newline at end of file diff --git a/keyboards/0xc7/61key/info.json b/keyboards/0xc7/61key/info.json new file mode 100644 index 000000000000..02070e87c906 --- /dev/null +++ b/keyboards/0xc7/61key/info.json @@ -0,0 +1,79 @@ +{ + "keyboard_name": "61Key", + "url": "", + "maintainer": "RealEmanGaming", + "layout_aliases": { + "LAYOUT": "LAYOUT_60_ansi" + }, + "layouts": { + "LAYOUT_60_ansi": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0, "w": 2}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"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}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3}, + {"x": 12.25, "y": 3, "w": 2.75}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6.25}, + {"x": 10, "y": 4, "w": 1.25}, + {"x": 11.25, "y": 4, "w": 1.25}, + {"x": 12.5, "y": 4, "w": 1.25}, + {"x": 13.75, "y": 4, "w": 1.25} + ] + } + } +} diff --git a/keyboards/0xc7/61key/keymaps/default/keymap.c b/keyboards/0xc7/61key/keymaps/default/keymap.c new file mode 100644 index 000000000000..a0a2d15df385 --- /dev/null +++ b/keyboards/0xc7/61key/keymaps/default/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2021 0xC7 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_60_ansi( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL + ), + [1] = LAYOUT_60_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, + KC_TRNS, KC_TRNS, KC_LOCK, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, C(A(KC_DEL)) + ) +}; \ No newline at end of file diff --git a/keyboards/0xc7/61key/keymaps/via/keymap.c b/keyboards/0xc7/61key/keymaps/via/keymap.c new file mode 100644 index 000000000000..564d19fed2d5 --- /dev/null +++ b/keyboards/0xc7/61key/keymaps/via/keymap.c @@ -0,0 +1,48 @@ +/* Copyright 2021 0xC7 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_60_ansi( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL + ), + [1] = LAYOUT_60_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, + KC_TRNS, KC_TRNS, KC_LOCK, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, C(A(KC_DEL)) + ), + [2] = LAYOUT_60_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_60_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/bm60rgb/keymaps/via/rules.mk b/keyboards/0xc7/61key/keymaps/via/rules.mk similarity index 100% rename from keyboards/bm60rgb/keymaps/via/rules.mk rename to keyboards/0xc7/61key/keymaps/via/rules.mk diff --git a/keyboards/0xc7/61key/readme.md b/keyboards/0xc7/61key/readme.md new file mode 100644 index 000000000000..356b8b07d465 --- /dev/null +++ b/keyboards/0xc7/61key/readme.md @@ -0,0 +1,27 @@ +# 61Key + +![61Key](https://i.imgur.com/HdE6c6zh.jpeg) + +Custom keyboard designed by RealEmanGaming aka 0xC7 + +* Keyboard Maintainer: [0xC7](https://github.com/RealEmanGaming) +* Hardware Supported: ATMega32u4 +* Hardware Availability: N/A (private board, might open source) + +Make example for this keyboard (after setting up your build environment): + + make 0xc7/61key:default + +Flashing example for this keyboard: + + make 0xc7/61key:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `RESET` if it is available diff --git a/keyboards/0xc7/61key/rules.mk b/keyboards/0xc7/61key/rules.mk new file mode 100644 index 000000000000..7850def84c17 --- /dev/null +++ b/keyboards/0xc7/61key/rules.mk @@ -0,0 +1,22 @@ +# 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 = no # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +LTO_ENABLE = yes +KEY_LOCK_ENABLE = yes diff --git a/keyboards/0xcb/1337/1337.c b/keyboards/0xcb/1337/1337.c index 142c24639a9e..85781209b3a6 100644 --- a/keyboards/0xcb/1337/1337.c +++ b/keyboards/0xcb/1337/1337.c @@ -20,13 +20,6 @@ void eeconfig_init_kb(void) { #ifdef BACKLIGHT_ENABLE backlight_enable(); backlight_level(5); -#endif -#ifdef RGBLIGHT_ENABLE - rgblight_enable(); - rgblight_sethsv(0, 255, 255); -#ifdef RGBLIGHT_ANIMATIONS - rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL + 2); -#endif #endif eeconfig_update_kb(0); diff --git a/keyboards/0xcb/1337/1337.h b/keyboards/0xcb/1337/1337.h index 7de5365d8b8b..e1f238c126c2 100644 --- a/keyboards/0xcb/1337/1337.h +++ b/keyboards/0xcb/1337/1337.h @@ -26,6 +26,7 @@ along with this program. If not, see . * The second converts the arguments into a two-dimensional array which * represents the switch matrix. */ +// clang-format off #define LAYOUT( \ KA1, KA2, KA3, \ KB1, KB2, KB3, \ @@ -36,3 +37,4 @@ along with this program. If not, see . { KB1, KB2, KB3 }, \ { KC1, KC2, KC3 } \ } +// clang-format on diff --git a/keyboards/0xcb/1337/config.h b/keyboards/0xcb/1337/config.h index 6d25e49cc9f6..d134d1ab49dc 100644 --- a/keyboards/0xcb/1337/config.h +++ b/keyboards/0xcb/1337/config.h @@ -17,6 +17,7 @@ along with this program. If not, see . #pragma once #include "config_common.h" +// clang-format off /* USB Device descriptor parameter */ #define VENDOR_ID 0xCB00 @@ -36,10 +37,9 @@ along with this program. If not, see . { E6, B4, B2 } \ } #define TAP_CODE_DELAY 10 -#define ENCODER_DIRECTION_FLIP #define ENCODER_RESOLUTION 4 -#define ENCODERS_PAD_A { F5 } -#define ENCODERS_PAD_B { F6 } +#define ENCODERS_PAD_A { F6 } +#define ENCODERS_PAD_B { F5 } #define BACKLIGHT_PIN B5 #define BACKLIGHT_BREATHING @@ -47,19 +47,26 @@ along with this program. If not, see . #define RGB_DI_PIN D3 #ifdef RGB_DI_PIN - #define RGBLED_NUM 5 + #define RGBLED_NUM 4 #define RGBLIGHT_HUE_STEP 8 #define RGBLIGHT_SAT_STEP 8 #define RGBLIGHT_VAL_STEP 8 #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ - // #define RGBLIGHT_ANIMATIONS - #define RGBLIGHT_EFFECT_BREATHING - #define RGBLIGHT_EFFECT_SNAKE - #define RGBLIGHT_EFFECT_STATIC_GRADIENT - #define RGBLIGHT_EFFECT_RAINBOW_SWIRL - #define RGBLIGHT_EFFECT_RAINBOW_MOOD + #define RGBLIGHT_ANIMATIONS /* comment this and uncomment the lines below to save space */ + // #define RGBLIGHT_EFFECT_BREATHING + // #define RGBLIGHT_EFFECT_SNAKE + // #define RGBLIGHT_EFFECT_STATIC_GRADIENT + // #define RGBLIGHT_EFFECT_RAINBOW_SWIRL + // #define RGBLIGHT_EFFECT_RAINBOW_MOOD + /* default setup after eeprom reset */ + #define RGBLIGHT_DEFAULT_MODE RGBLIGHT_EFFECT_BREATHING + 2 + #define RGBLIGHT_DEFAULT_HUE 152 + #define RGBLIGHT_DEFAULT_SAT 232 + #define RGBLIGHT_DEFAULT_VAR 255 + #define RGBLIGHT_DEFAULT_SPD 2 #endif +// clang-format on /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ #define DEBOUNCE 5 diff --git a/keyboards/0xcb/1337/gfxfont.c b/keyboards/0xcb/1337/gfxfont.c index 4e7940b64aae..b78e359c7865 100644 --- a/keyboards/0xcb/1337/gfxfont.c +++ b/keyboards/0xcb/1337/gfxfont.c @@ -15,7 +15,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include "progmem.h" - +// clang-format off static const unsigned char font[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, @@ -274,3 +274,4 @@ static const unsigned char font[] PROGMEM = { 0x07, 0x07, 0x0F, 0x0F, 0x1E, 0x3E, 0x3C, 0x7C, 0x70, 0xC0, 0x80, 0x00, }; +// clang-format on diff --git a/keyboards/0xcb/1337/info.json b/keyboards/0xcb/1337/info.json index 67cb9d0d63f3..25899933cb1a 100644 --- a/keyboards/0xcb/1337/info.json +++ b/keyboards/0xcb/1337/info.json @@ -2,8 +2,6 @@ "keyboard_name": "0xCB 1337", "url": "https://0xCB.dev", "maintainer": "Conor-Burns", - "width": 3, - "height": 3, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/0xcb/1337/keymaps/conor/keymap.c b/keyboards/0xcb/1337/keymaps/conor/keymap.c new file mode 100644 index 000000000000..615ca7baf8d0 --- /dev/null +++ b/keyboards/0xcb/1337/keymaps/conor/keymap.c @@ -0,0 +1,186 @@ +/* +Copyright 2021 0xCB - Conor Burns + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H +// clang-format off +enum layer_names { + _HOME, + _MISC, + _RGB, + _BLED +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[_HOME] = LAYOUT( + KC_MPRV, KC_MNXT, KC_MPLY, + KC_PGUP, KC_PGDN, TO(3), + KC_HOME, KC_END, TO(1) +), +[_MISC] = LAYOUT( + _______, _______, _______, + _______, _______, TO(0), + _______, _______, TO(2) +), +[_RGB] = LAYOUT( + RGB_HUI, RGB_HUD, RGB_MOD, + RGB_SAI, RGB_SAD, TO(1), + RGB_SPI, RGB_SPD, TO(3) +), +[_BLED] = LAYOUT( + BL_STEP, BL_BRTG, BL_TOGG, + BL_ON, BL_OFF, TO(2), + BL_INC, BL_DEC, TO(0) +) +}; +// clang-format on + +/* rotary encoder (SW3) - add more else if blocks for more granular layer control */ +#ifdef ENCODER_ENABLE +bool encoder_update_user(uint8_t index, bool clockwise) { + if (IS_LAYER_ON(_RGB)) { + #ifdef RGBLIGHT_ENABLE + if (clockwise) { + rgblight_increase_val(); + } else { + rgblight_decrease_val(); + } + #endif + } else if (IS_LAYER_ON(_BLED)) { + if (clockwise) { + backlight_increase(); + } else { + backlight_decrease(); + } + } else { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } + return true; +} +#endif + +/* oled stuff :) */ +#ifdef OLED_ENABLE +uint16_t startup_timer; + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + startup_timer = timer_read(); + return rotation; +} + +static void render_logo(void) { + static const char PROGMEM raw_logo[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 1, 2, 4, 2, 1, 1, 1, 1, 1, 1,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 1, 1, 1, 1, 1, 2, 4, 2, 1, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 5,248, 5, 2, 0, 0, 0, 0, 0, 0,128,192,192,224,224,112,120, 56, 63, 28, 14, 14, 14,254, 14, 14, 30, 28, 63, 56,120,112,224,224,192,128, 0, 0, 0, 0, 0, 0, 0, 2, 5,248, 5, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,160, 19,162, 66, 66, 66, 66, 66, 66, 66,255,255,255, 0, 0, 0,252,254,254,192,192,192,192,255, 0, 0, 0, 62, 62, 60, 60, 0, 0, 1,255,255,255, 66, 66, 66, 66, 66, 66, 66,162, 19,160, 64, 0, + 0, 0, 0,128, 64, 64, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192, 64, 64,192,128, 0, 0,192, 64, 64,192,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 64,192, 0, 0, 0, 0, 0,128,192, 64, 64,192,128, 0, 0,128,192, 64, 64,192,128, 0, 0, 64, 64, 64, 64, 64,192, 0, 0, 0, 0, 0,249, 8, 8, 8, 8, 8, 8, 8, 8,127,255,255,192,128,128, 15, 31, 31, 1, 1, 1, 1,255, 0, 0, 0, 30, 30, 14, 14,128,192,192,255,255,127, 8, 8, 8, 8, 8, 8, 8, 8,249, 0, 0, 0, + 0, 0, 31, 49, 64, 78, 64, 49, 31, 0, 0, 97, 22, 8, 22, 97, 0, 0, 31, 49, 96, 64, 64, 96, 32, 0, 0,127, 68, 68,100, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64,127, 64, 64, 0, 0, 0, 32,100, 68, 68,110, 59, 0, 0, 32,100, 68, 68,110, 59, 0, 0, 0, 0, 0,126, 3, 1, 0, 0, 0, 8, 20, 35, 20, 8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 7, 15,254, 30, 28, 28, 28,255, 28, 28, 28, 30,254, 15, 7, 3, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 10, 17, 10, 4, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 40, 68, 40, 16, 16, 16, 16, 16, 16, 31, 0, 0, 16, 40, 71, 40, 16, 0, 0, 31, 16, 16, 16, 16, 16, 16, 40, 68, 40, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }; + oled_write_raw_P(raw_logo, sizeof(raw_logo)); +} +static void render_logo_font(void) { + static const char PROGMEM qmk_logo[] = { + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xCB, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0xCB, 0xCB, 0xCB, 0x9C, 0x9D, 0xCB, 0xCB, + 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xCB, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xCB, 0xCB, 0xBB, 0xBC, 0xBD, 0xBE, 0xCB, + 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xCB, 0x88, 0x89, 0x8A, 0x8B, 0x8A, 0x8B, 0x8C, 0x8D, 0xCB, 0xCB, 0xDB, 0xDC, 0xDD, 0xDE, 0xCB, + 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xCB, 0xA8, 0xA9, 0xAA, 0xAB, 0xAA, 0xAB, 0xAC, 0xAD, 0xCB, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, 0x00 + }; + + oled_write_P(qmk_logo, false); +} +/* Shows the name of the current layer and locks for the host (CAPS etc.) */ +static void render_info(void) { + oled_write_P(PSTR("Layer: "), false); + + switch (get_highest_layer(layer_state)) { + case _HOME: + oled_write_ln_P(PSTR("HOME"), false); + break; + case _MISC: + oled_write_ln_P(PSTR("MISC"), false); + break; + case _RGB: + oled_write_ln_P(PSTR("RGB"), false); + break; + case _BLED: + oled_write_ln_P(PSTR("Backlight"), false); + break; + default: + oled_write_ln_P(PSTR("Undefined"), false); + } + led_t led_state = host_keyboard_led_state(); + oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); + oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); + oled_write_ln_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); +} +static void render_rgbled_status(bool) { + char string[4]; + if (RGBLIGHT_MODES > 1 && rgblight_is_enabled() && get_highest_layer(layer_state) == _RGB) { + uint16_t m = rgblight_get_mode(); + string[3] = '\0'; + string[2] = '0' + m % 10; + string[1] = ( m /= 10) % 10 ? '0' + (m) % 10 : (m / 10) % 10 ? '0' : ' '; + string[0] = m / 10 ? '0' + m / 10 : ' '; + oled_write_P(PSTR("Conf:"), false); + oled_write(string, false); + uint16_t h = rgblight_get_hue()/RGBLIGHT_HUE_STEP; + string[3] = '\0'; + string[2] = '0' + h % 10; + string[1] = ( h /= 10) % 10 ? '0' + (h) % 10 : (h / 10) % 10 ? '0' : ' '; + string[0] = h / 10 ? '0' + h / 10 : ' '; + oled_write_P(PSTR(","), false); + oled_write(string, false); + uint16_t s = rgblight_get_sat()/RGBLIGHT_SAT_STEP; + string[3] = '\0'; + string[2] = '0' + s % 10; + string[1] = ( s /= 10) % 10 ? '0' + (s) % 10 : (s / 10) % 10 ? '0' : ' '; + string[0] = s / 10 ? '0' + s / 10 : ' '; + oled_write_P(PSTR(","), false); + oled_write(string, false); + uint16_t v = rgblight_get_val()/RGBLIGHT_VAL_STEP; + string[3] = '\0'; + string[2] = '0' + v % 10; + string[1] = ( v /= 10) % 10 ? '0' + (v) % 10 : (v / 10) % 10 ? '0' : ' '; + string[0] = v / 10 ? '0' + v / 10 : ' '; + oled_write_P(PSTR(","), false); + oled_write(string, false); + oled_write_ln_P(PSTR("\n MOD HUE SAT VAR"), false); + } else { + oled_write_ln_P(PSTR("\n"), false); + } +} +bool oled_task_user(void) { + static bool finished_timer = false; + if (!finished_timer && (timer_elapsed(startup_timer) < 1000)) { + render_logo(); + } else { + if (!finished_timer) { + oled_clear(); + finished_timer = true; + } + render_info(); + render_rgbled_status(true); + render_logo_font(); + } + return false; +} +#endif diff --git a/keyboards/bakeneko65/keymaps/via/rules.mk b/keyboards/0xcb/1337/keymaps/conor/rules.mk similarity index 100% rename from keyboards/bakeneko65/keymaps/via/rules.mk rename to keyboards/0xcb/1337/keymaps/conor/rules.mk diff --git a/keyboards/0xcb/1337/keymaps/default/keymap.c b/keyboards/0xcb/1337/keymaps/default/keymap.c index 596ffabcc779..751af6f4f7d8 100644 --- a/keyboards/0xcb/1337/keymaps/default/keymap.c +++ b/keyboards/0xcb/1337/keymaps/default/keymap.c @@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include QMK_KEYBOARD_H -#include - +// clang-format off enum layer_names { _HOME, _MISC, @@ -46,19 +45,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { BL_INC, BL_DEC, TO(0) ) }; - +// clang-format on /* rotary encoder (SW3) - add more else if blocks for more granular layer control */ #ifdef ENCODER_ENABLE bool encoder_update_user(uint8_t index, bool clockwise) { if (IS_LAYER_ON(_RGB)) { - #ifdef RGBLIGHT_ENABLE - if (clockwise) { - rgblight_increase_val(); - } else { - rgblight_decrease_val(); - } - #endif +# ifdef RGBLIGHT_ENABLE + if (clockwise) { + rgblight_increase_val(); + } else { + rgblight_decrease_val(); + } +# endif } else if (IS_LAYER_ON(_BLED)) { if (clockwise) { backlight_increase(); @@ -77,7 +76,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { #endif /* oled stuff :) */ -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE uint16_t startup_timer; oled_rotation_t oled_init_user(oled_rotation_t rotation) { @@ -87,24 +86,15 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) { static void render_logo(void) { static const char PROGMEM raw_logo[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 1, 2, 4, 2, 1, 1, 1, 1, 1, 1,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 1, 1, 1, 1, 1, 2, 4, 2, 1, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 5,248, 5, 2, 0, 0, 0, 0, 0, 0,128,192,192,224,224,112,120, 56, 63, 28, 14, 14, 14,254, 14, 14, 30, 28, 63, 56,120,112,224,224,192,128, 0, 0, 0, 0, 0, 0, 0, 2, 5,248, 5, 2, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,160, 19,162, 66, 66, 66, 66, 66, 66, 66,255,255,255, 0, 0, 0,252,254,254,192,192,192,192,255, 0, 0, 0, 62, 62, 60, 60, 0, 0, 1,255,255,255, 66, 66, 66, 66, 66, 66, 66,162, 19,160, 64, 0, - 0, 0, 0,128, 64, 64, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192, 64, 64,192,128, 0, 0,192, 64, 64,192,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 64,192, 0, 0, 0, 0, 0,128,192, 64, 64,192,128, 0, 0,128,192, 64, 64,192,128, 0, 0, 64, 64, 64, 64, 64,192, 0, 0, 0, 0, 0,249, 8, 8, 8, 8, 8, 8, 8, 8,127,255,255,192,128,128, 15, 31, 31, 1, 1, 1, 1,255, 0, 0, 0, 30, 30, 14, 14,128,192,192,255,255,127, 8, 8, 8, 8, 8, 8, 8, 8,249, 0, 0, 0, - 0, 0, 31, 49, 64, 78, 64, 49, 31, 0, 0, 97, 22, 8, 22, 97, 0, 0, 31, 49, 96, 64, 64, 96, 32, 0, 0,127, 68, 68,100, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64,127, 64, 64, 0, 0, 0, 32,100, 68, 68,110, 59, 0, 0, 32,100, 68, 68,110, 59, 0, 0, 0, 0, 0,126, 3, 1, 0, 0, 0, 8, 20, 35, 20, 8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 7, 15,254, 30, 28, 28, 28,255, 28, 28, 28, 30,254, 15, 7, 3, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 10, 17, 10, 4, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 40, 68, 40, 16, 16, 16, 16, 16, 16, 31, 0, 0, 16, 40, 71, 40, 16, 0, 0, 31, 16, 16, 16, 16, 16, 16, 40, 68, 40, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 64, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 64, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 1, 2, 4, 2, 1, 1, 1, 1, 1, 1, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 1, 1, 1, 1, 1, 1, 2, 4, 2, 1, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 5, 248, 5, 2, 0, 0, 0, 0, 0, 0, 128, 192, 192, 224, 224, 112, 120, 56, 63, 28, 14, 14, 14, 254, 14, 14, 30, 28, 63, 56, 120, 112, 224, 224, 192, 128, 0, 0, 0, 0, 0, 0, 0, 2, 5, 248, 5, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 160, 19, 162, 66, 66, 66, 66, 66, 66, 66, 255, 255, 255, 0, 0, 0, 252, 254, 254, 192, 192, 192, 192, 255, 0, 0, 0, 62, 62, 60, 60, 0, 0, 1, 255, 255, 255, 66, 66, 66, 66, 66, 66, 66, 162, 19, 160, 64, 0, 0, 0, 0, 128, 64, 64, 64, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 192, 64, 64, 192, 128, 0, 0, 192, 64, 64, 192, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 64, 192, 0, 0, 0, 0, 0, 128, 192, 64, 64, 192, 128, 0, 0, 128, 192, 64, 64, 192, 128, 0, 0, 64, 64, 64, 64, 64, 192, 0, 0, 0, 0, 0, 249, 8, 8, 8, 8, 8, 8, 8, 8, 127, 255, 255, 192, 128, 128, 15, 31, 31, 1, 1, 1, 1, 255, 0, 0, 0, 30, 30, 14, 14, 128, 192, 192, 255, 255, 127, 8, 8, 8, 8, 8, 8, 8, 8, 249, 0, 0, 0, + 0, 0, 31, 49, 64, 78, 64, 49, 31, 0, 0, 97, 22, 8, 22, 97, 0, 0, 31, 49, 96, 64, 64, 96, 32, 0, 0, 127, 68, 68, 100, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 127, 64, 64, 0, 0, 0, 32, 100, 68, 68, 110, 59, 0, 0, 32, 100, 68, 68, 110, 59, 0, 0, 0, 0, 0, 126, 3, 1, 0, 0, 0, 8, 20, 35, 20, 8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 7, 15, 254, 30, 28, 28, 28, 255, 28, 28, 28, 30, 254, 15, 7, 3, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 10, 17, 10, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 40, 68, 40, 16, 16, 16, 16, 16, 16, 31, 0, 0, 16, 40, 71, 40, 16, 0, 0, 31, 16, 16, 16, 16, 16, 16, 40, 68, 40, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; oled_write_raw_P(raw_logo, sizeof(raw_logo)); } static void render_logo_font(void) { - static const char PROGMEM qmk_logo[] = { - 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xCB, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0xCB, 0xCB, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, - 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xCB, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xCB, 0xCB, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, - 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xCB, 0x88, 0x89, 0x8A, 0x8B, 0x8A, 0x8B, 0x8C, 0x8D, 0xCB, 0xCB, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, - 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xCB, 0xA8, 0xA9, 0xAA, 0xAB, 0xAA, 0xAB, 0xAC, 0xAD, 0xCB, 0xCB, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0x00 - }; + static const char PROGMEM qmk_logo[] = {0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0x88, 0x89, 0x8A, 0x8B, 0x8A, 0x8B, 0x8C, 0x8D, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xA8, 0xA9, 0xAA, 0xAB, 0xAA, 0xAB, 0xAC, 0xAD, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0x00}; oled_write_P(qmk_logo, false); } @@ -133,26 +123,43 @@ static void render_info(void) { oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); oled_write_ln_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); } -static void render_rgbled_status(bool full) { -#ifdef RGBLIGHT_ENABLE - char buf[30]; - if (RGBLIGHT_MODES > 1 && rgblight_is_enabled() && get_highest_layer(layer_state) == _RGB) { - if (full) { - snprintf(buf, sizeof(buf), "RGB mode %2d: %d,%d,%d \n", - rgblight_get_mode(), - rgblight_get_hue()/RGBLIGHT_HUE_STEP, - rgblight_get_sat()/RGBLIGHT_SAT_STEP, - rgblight_get_val()/RGBLIGHT_VAL_STEP); - } else { - snprintf(buf, sizeof(buf), "[%2d] ", rgblight_get_mode()); - } - oled_write(buf, false); - } else { - oled_write_ln_P(PSTR("\n"), false); - } -#endif +static void render_rgbled_status(void) { + char string[4]; + if (RGBLIGHT_MODES > 1 && rgblight_is_enabled() && get_highest_layer(layer_state) == _RGB) { + uint16_t m = rgblight_get_mode(); + string[3] = '\0'; + string[2] = '0' + m % 10; + string[1] = (m /= 10) % 10 ? '0' + (m) % 10 : (m / 10) % 10 ? '0' : ' '; + string[0] = m / 10 ? '0' + m / 10 : ' '; + oled_write_P(PSTR("Conf:"), false); + oled_write(string, false); + uint16_t h = rgblight_get_hue() / RGBLIGHT_HUE_STEP; + string[3] = '\0'; + string[2] = '0' + h % 10; + string[1] = (h /= 10) % 10 ? '0' + (h) % 10 : (h / 10) % 10 ? '0' : ' '; + string[0] = h / 10 ? '0' + h / 10 : ' '; + oled_write_P(PSTR(","), false); + oled_write(string, false); + uint16_t s = rgblight_get_sat() / RGBLIGHT_SAT_STEP; + string[3] = '\0'; + string[2] = '0' + s % 10; + string[1] = (s /= 10) % 10 ? '0' + (s) % 10 : (s / 10) % 10 ? '0' : ' '; + string[0] = s / 10 ? '0' + s / 10 : ' '; + oled_write_P(PSTR(","), false); + oled_write(string, false); + uint16_t v = rgblight_get_val() / RGBLIGHT_VAL_STEP; + string[3] = '\0'; + string[2] = '0' + v % 10; + string[1] = (v /= 10) % 10 ? '0' + (v) % 10 : (v / 10) % 10 ? '0' : ' '; + string[0] = v / 10 ? '0' + v / 10 : ' '; + oled_write_P(PSTR(","), false); + oled_write(string, false); + oled_write_ln_P(PSTR("\n MOD HUE SAT VAR"), false); + } else { + oled_write_ln_P(PSTR("\n"), false); + } } -void oled_task_user(void) { +bool oled_task_user(void) { static bool finished_timer = false; if (!finished_timer && (timer_elapsed(startup_timer) < 1000)) { render_logo(); @@ -162,8 +169,9 @@ void oled_task_user(void) { finished_timer = true; } render_info(); - render_rgbled_status(true); + render_rgbled_status(); render_logo_font(); } + return false; } #endif diff --git a/keyboards/0xcb/1337/keymaps/jakob/keymap.c b/keyboards/0xcb/1337/keymaps/jakob/keymap.c index 14427ee6d8d7..f4a075844fc8 100644 --- a/keyboards/0xcb/1337/keymaps/jakob/keymap.c +++ b/keyboards/0xcb/1337/keymaps/jakob/keymap.c @@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include QMK_KEYBOARD_H -#include - +// clang-format off enum layer_names { _HOME, _MISC, @@ -46,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { BL_INC, BL_DEC, TO(0) ) }; - +// clang-format on /* rotary encoder (SW3) - add more else if blocks for more granular layer control */ #ifdef ENCODER_ENABLE @@ -77,7 +76,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { #endif /* oled stuff :) */ -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE uint16_t startup_timer; oled_rotation_t oled_init_user(oled_rotation_t rotation) { @@ -100,10 +99,10 @@ static void render_logo(void) { } static void render_logo_font(void) { static const char PROGMEM qmk_logo[] = { - 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xCB, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0xCB, 0xCB, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, - 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xCB, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xCB, 0xCB, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, - 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xCB, 0x88, 0x89, 0x8A, 0x8B, 0x8A, 0x8B, 0x8C, 0x8D, 0xCB, 0xCB, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, - 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xCB, 0xA8, 0xA9, 0xAA, 0xAB, 0xAA, 0xAB, 0xAC, 0xAD, 0xCB, 0xCB, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0x00 + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, + 0x88, 0x89, 0x8A, 0x8B, 0x8A, 0x8B, 0x8C, 0x8D, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, + 0xA8, 0xA9, 0xAA, 0xAB, 0xAA, 0xAB, 0xAC, 0xAD, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0x00 }; oled_write_P(qmk_logo, false); @@ -133,26 +132,43 @@ static void render_info(void) { oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); oled_write_ln_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); } -static void render_rgbled_status(bool full) { -#ifdef RGBLIGHT_ENABLE - char buf[30]; - if (RGBLIGHT_MODES > 1 && rgblight_is_enabled() && get_highest_layer(layer_state) == _RGB) { - if (full) { - snprintf(buf, sizeof(buf), "RGB mode %2d: %d,%d,%d \n", - rgblight_get_mode(), - rgblight_get_hue()/RGBLIGHT_HUE_STEP, - rgblight_get_sat()/RGBLIGHT_SAT_STEP, - rgblight_get_val()/RGBLIGHT_VAL_STEP); - } else { - snprintf(buf, sizeof(buf), "[%2d] ", rgblight_get_mode()); - } - oled_write(buf, false); - } else { - oled_write_ln_P(PSTR("\n"), false); - } -#endif +static void render_rgbled_status(bool) { + char string[4]; + if (RGBLIGHT_MODES > 1 && rgblight_is_enabled() && get_highest_layer(layer_state) == _RGB) { + uint16_t m = rgblight_get_mode(); + string[3] = '\0'; + string[2] = '0' + m % 10; + string[1] = ( m /= 10) % 10 ? '0' + (m) % 10 : (m / 10) % 10 ? '0' : ' '; + string[0] = m / 10 ? '0' + m / 10 : ' '; + oled_write_P(PSTR("Conf:"), false); + oled_write(string, false); + uint16_t h = rgblight_get_hue()/RGBLIGHT_HUE_STEP; + string[3] = '\0'; + string[2] = '0' + h % 10; + string[1] = ( h /= 10) % 10 ? '0' + (h) % 10 : (h / 10) % 10 ? '0' : ' '; + string[0] = h / 10 ? '0' + h / 10 : ' '; + oled_write_P(PSTR(","), false); + oled_write(string, false); + uint16_t s = rgblight_get_sat()/RGBLIGHT_SAT_STEP; + string[3] = '\0'; + string[2] = '0' + s % 10; + string[1] = ( s /= 10) % 10 ? '0' + (s) % 10 : (s / 10) % 10 ? '0' : ' '; + string[0] = s / 10 ? '0' + s / 10 : ' '; + oled_write_P(PSTR(","), false); + oled_write(string, false); + uint16_t v = rgblight_get_val()/RGBLIGHT_VAL_STEP; + string[3] = '\0'; + string[2] = '0' + v % 10; + string[1] = ( v /= 10) % 10 ? '0' + (v) % 10 : (v / 10) % 10 ? '0' : ' '; + string[0] = v / 10 ? '0' + v / 10 : ' '; + oled_write_P(PSTR(","), false); + oled_write(string, false); + oled_write_ln_P(PSTR("\n MOD HUE SAT VAR"), false); + } else { + oled_write_ln_P(PSTR("\n"), false); + } } -void oled_task_user(void) { +bool oled_task_user(void) { static bool finished_timer = false; if (!finished_timer && (timer_elapsed(startup_timer) < 1000)) { render_logo(); @@ -165,5 +181,6 @@ void oled_task_user(void) { render_rgbled_status(true); render_logo_font(); } + return false; } #endif diff --git a/keyboards/0xcb/1337/keymaps/via/keymap.c b/keyboards/0xcb/1337/keymaps/via/keymap.c index 596ffabcc779..a85670e06e42 100644 --- a/keyboards/0xcb/1337/keymaps/via/keymap.c +++ b/keyboards/0xcb/1337/keymaps/via/keymap.c @@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include QMK_KEYBOARD_H -#include - +// clang-format off enum layer_names { _HOME, _MISC, @@ -46,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { BL_INC, BL_DEC, TO(0) ) }; - +// clang-format on /* rotary encoder (SW3) - add more else if blocks for more granular layer control */ #ifdef ENCODER_ENABLE @@ -77,7 +76,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { #endif /* oled stuff :) */ -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE uint16_t startup_timer; oled_rotation_t oled_init_user(oled_rotation_t rotation) { @@ -100,10 +99,10 @@ static void render_logo(void) { } static void render_logo_font(void) { static const char PROGMEM qmk_logo[] = { - 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xCB, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0xCB, 0xCB, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, - 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xCB, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xCB, 0xCB, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, - 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xCB, 0x88, 0x89, 0x8A, 0x8B, 0x8A, 0x8B, 0x8C, 0x8D, 0xCB, 0xCB, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, - 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xCB, 0xA8, 0xA9, 0xAA, 0xAB, 0xAA, 0xAB, 0xAC, 0xAD, 0xCB, 0xCB, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0x00 + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, + 0x88, 0x89, 0x8A, 0x8B, 0x8A, 0x8B, 0x8C, 0x8D, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, + 0xA8, 0xA9, 0xAA, 0xAB, 0xAA, 0xAB, 0xAC, 0xAD, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0x00 }; oled_write_P(qmk_logo, false); @@ -133,26 +132,43 @@ static void render_info(void) { oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); oled_write_ln_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); } -static void render_rgbled_status(bool full) { -#ifdef RGBLIGHT_ENABLE - char buf[30]; - if (RGBLIGHT_MODES > 1 && rgblight_is_enabled() && get_highest_layer(layer_state) == _RGB) { - if (full) { - snprintf(buf, sizeof(buf), "RGB mode %2d: %d,%d,%d \n", - rgblight_get_mode(), - rgblight_get_hue()/RGBLIGHT_HUE_STEP, - rgblight_get_sat()/RGBLIGHT_SAT_STEP, - rgblight_get_val()/RGBLIGHT_VAL_STEP); - } else { - snprintf(buf, sizeof(buf), "[%2d] ", rgblight_get_mode()); - } - oled_write(buf, false); - } else { - oled_write_ln_P(PSTR("\n"), false); - } -#endif +static void render_rgbled_status(void) { + char string[4]; + if (RGBLIGHT_MODES > 1 && rgblight_is_enabled() && get_highest_layer(layer_state) == _RGB) { + uint16_t m = rgblight_get_mode(); + string[3] = '\0'; + string[2] = '0' + m % 10; + string[1] = ( m /= 10) % 10 ? '0' + (m) % 10 : (m / 10) % 10 ? '0' : ' '; + string[0] = m / 10 ? '0' + m / 10 : ' '; + oled_write_P(PSTR("Conf:"), false); + oled_write(string, false); + uint16_t h = rgblight_get_hue()/RGBLIGHT_HUE_STEP; + string[3] = '\0'; + string[2] = '0' + h % 10; + string[1] = ( h /= 10) % 10 ? '0' + (h) % 10 : (h / 10) % 10 ? '0' : ' '; + string[0] = h / 10 ? '0' + h / 10 : ' '; + oled_write_P(PSTR(","), false); + oled_write(string, false); + uint16_t s = rgblight_get_sat()/RGBLIGHT_SAT_STEP; + string[3] = '\0'; + string[2] = '0' + s % 10; + string[1] = ( s /= 10) % 10 ? '0' + (s) % 10 : (s / 10) % 10 ? '0' : ' '; + string[0] = s / 10 ? '0' + s / 10 : ' '; + oled_write_P(PSTR(","), false); + oled_write(string, false); + uint16_t v = rgblight_get_val()/RGBLIGHT_VAL_STEP; + string[3] = '\0'; + string[2] = '0' + v % 10; + string[1] = ( v /= 10) % 10 ? '0' + (v) % 10 : (v / 10) % 10 ? '0' : ' '; + string[0] = v / 10 ? '0' + v / 10 : ' '; + oled_write_P(PSTR(","), false); + oled_write(string, false); + oled_write_ln_P(PSTR("\n MOD HUE SAT VAR"), false); + } else { + oled_write_ln_P(PSTR("\n"), false); + } } -void oled_task_user(void) { +bool oled_task_user(void) { static bool finished_timer = false; if (!finished_timer && (timer_elapsed(startup_timer) < 1000)) { render_logo(); @@ -162,8 +178,9 @@ void oled_task_user(void) { finished_timer = true; } render_info(); - render_rgbled_status(true); + render_rgbled_status(); render_logo_font(); } + return false; } #endif diff --git a/keyboards/0xcb/1337/readme.md b/keyboards/0xcb/1337/readme.md index da54eb78fc9b..8fef5be7b40f 100644 --- a/keyboards/0xcb/1337/readme.md +++ b/keyboards/0xcb/1337/readme.md @@ -3,16 +3,16 @@ Macro keypad * Keyboard Maintainer: [Conor Burns](https://github.com/conor-burns) -* Hardware Supported: https://github.com/conor-burns/0xcb-1337 -* Hardware Availability: Soon on tindie or order your own parts - the hardware in the repo is Open Source :D +* Hardware Supported: https://github.com/0xcb-dev/0xcb-1337 +* Hardware Availability: On [tindie](https://www.tindie.com/products/0xcb/0xcb-1337-a-customizable-macro-keyboard-with-qmk/) or order your own parts - the hardware in the repo is Open Source :D * PCB renders :) -![](https://github.com/Conor-Burns/0xcb-1337/blob/main/PCB/top.png) +![](https://github.com/0xCB-dev/0xcb-1337/blob/main/PCB/rev3.0/top.png) -![](https://github.com/Conor-Burns/0xcb-1337/blob/main/PCB/bottom.png) +![](https://github.com/0xCB-dev/0xcb-1337/blob/main/PCB/rev3.0/bottom.png) - -To go to bootloader press row 0 col 0 key (top left) while plugging in the board. +More Pictures [here](https://0xcb.dev/1337/) +To go to bootloader press row 0 col 0 key (top left) while plugging in the board. (Or press the reset button on V2.0 and v3.0) Make example for this keyboard (after setting up your build environment): diff --git a/keyboards/0xcb/1337/rules.mk b/keyboards/0xcb/1337/rules.mk index 5469b415c217..bd563b3e7543 100644 --- a/keyboards/0xcb/1337/rules.mk +++ b/keyboards/0xcb/1337/rules.mk @@ -7,21 +7,18 @@ BOOTLOADER = qmk-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes LTO_ENABLE = yes -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/0xcb/static/config.h b/keyboards/0xcb/static/config.h new file mode 100644 index 000000000000..c30450b460dc --- /dev/null +++ b/keyboards/0xcb/static/config.h @@ -0,0 +1,69 @@ +/* +Copyright 2021 0xCB - Conor Burns + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "config_common.h" +// clang-format off +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xCB00 +#define PRODUCT_ID 0xA455 +#define DEVICE_VER 0x0001 +#define MANUFACTURER 0xCB +#define PRODUCT Static + +/* key matrix size */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 6 + + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { D5, D6, D7, B0, B1, B2, B3, B4 } +#define MATRIX_COL_PINS { B5, D4, C0, C1, C2, C3 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +#define TAP_CODE_DELAY 10 +#define ENCODER_RESOLUTION 4 +#define ENCODERS_PAD_A { D0 } +#define ENCODERS_PAD_B { D1 } +// clang-format on +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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 + +/* oled custom font */ +#define OLED_FONT_END 255 +#define OLED_FONT_H "gfxfont.c" + +/* bootmagic */ +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/0xcb/static/gfxfont.c b/keyboards/0xcb/static/gfxfont.c new file mode 100644 index 000000000000..3f499a5309e6 --- /dev/null +++ b/keyboards/0xcb/static/gfxfont.c @@ -0,0 +1,277 @@ +/* +Copyright 2021 0xCB - Conor Burns + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "progmem.h" +// clang-format off +static const unsigned char font[] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, + 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, + 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, + 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, + 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, + 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, + 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, + 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, + 0x00, 0x18, 0x24, 0x18, 0x00, 0x00, + 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, + 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, + 0x26, 0x29, 0x79, 0x29, 0x26, 0x00, + 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, + 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, + 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, + 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, + 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, + 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, + 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, + 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, + 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, + 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, + 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00, + 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00, + 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, + 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, + 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, + 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, + 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, + 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, + 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, + 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, + 0x23, 0x13, 0x08, 0x64, 0x62, 0x00, + 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, + 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, + 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, + 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, + 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, + 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, + 0x00, 0x80, 0x70, 0x30, 0x00, 0x00, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, + 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, + 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, + 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, + 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, + 0x72, 0x49, 0x49, 0x49, 0x46, 0x00, + 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, + 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, + 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, + 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, + 0x41, 0x21, 0x11, 0x09, 0x07, 0x00, + 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, + 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, + 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, + 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, + 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, + 0x02, 0x01, 0x59, 0x09, 0x06, 0x00, + 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00, + 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, + 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, + 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, + 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, + 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, + 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, + 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, + 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, + 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, + 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, + 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, + 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, + 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, + 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, + 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, + 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, + 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, + 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, + 0x26, 0x49, 0x49, 0x49, 0x32, 0x00, + 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00, + 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, + 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, + 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, + 0x63, 0x14, 0x08, 0x14, 0x63, 0x00, + 0x03, 0x04, 0x78, 0x04, 0x03, 0x00, + 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, + 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, + 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, + 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, + 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, + 0x00, 0x03, 0x07, 0x08, 0x00, 0x00, + 0x20, 0x54, 0x54, 0x78, 0x40, 0x00, + 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00, + 0x38, 0x44, 0x44, 0x44, 0x28, 0x00, + 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00, + 0x38, 0x54, 0x54, 0x54, 0x18, 0x00, + 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00, + 0x18, 0x24, 0x24, 0x1C, 0x78, 0x00, + 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, + 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, + 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, + 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, + 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, + 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00, + 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, + 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, + 0xFC, 0x18, 0x24, 0x24, 0x18, 0x00, + 0x18, 0x24, 0x24, 0x18, 0xFC, 0x00, + 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, + 0x48, 0x54, 0x54, 0x54, 0x24, 0x00, + 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00, + 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, + 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, + 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, + 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, + 0x4C, 0x10, 0x10, 0x10, 0x7C, 0x00, + 0x44, 0xE4, 0xD4, 0x4C, 0x44, 0x00, + 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, + 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0x00, 0x41, 0x36, 0x08, 0x00, 0x00, + 0x02, 0x01, 0x02, 0x04, 0x02, 0x00, + 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, + 0x00, 0xE0, 0xFC, 0x1E, 0x06, 0xC6, + 0xC6, 0x06, 0x1E, 0xFC, 0xE0, 0x00, + 0x00, 0x00, 0x60, 0xE0, 0x80, 0x00, + 0x00, 0x80, 0xE0, 0x60, 0x00, 0x00, + 0x00, 0x00, 0xE0, 0xF8, 0x3C, 0x0E, + 0x06, 0x06, 0x06, 0x0E, 0x0C, 0x00, + 0x00, 0x00, 0xFE, 0xFE, 0x86, 0x86, + 0x86, 0x86, 0x8C, 0x78, 0x70, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 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, 0xFF, 0x38, 0x38, 0xC0, 0xC0, + 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, + 0xFF, 0xFF, 0x0C, 0x0C, 0xF0, 0xF0, + 0x0C, 0x0C, 0xFF, 0xFF, 0x00, 0x00, + 0xFF, 0xFF, 0x7F, 0x07, 0x07, 0x07, + 0x03, 0x03, 0x00, 0x00, 0x00, 0x07, + 0x07, 0x00, 0x00, 0x00, 0x03, 0x03, + 0x07, 0x07, 0x07, 0x7F, 0xFF, 0xFF, + 0x70, 0xD0, 0x70, 0x00, 0x07, 0x05, + 0x07, 0x02, 0x02, 0x82, 0xC2, 0x42, + 0x7E, 0xC0, 0xC0, 0xC0, 0x40, 0x7E, + 0x42, 0xC2, 0x82, 0x02, 0x02, 0x07, + 0x05, 0x07, 0x00, 0x70, 0xD0, 0x70, + 0x00, 0x07, 0x3F, 0x78, 0x60, 0x63, + 0x63, 0x60, 0x78, 0x3F, 0x07, 0x00, + 0x00, 0x00, 0x60, 0x79, 0x19, 0x06, + 0x06, 0x19, 0x79, 0x60, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x1F, 0x3C, 0x70, + 0x60, 0x60, 0x60, 0x70, 0x30, 0x00, + 0x00, 0x00, 0x7F, 0x7F, 0x61, 0x61, + 0x61, 0x61, 0x31, 0x1E, 0x0E, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x07, 0x3F, 0x3F, 0x00, 0x00, + 0x0F, 0x0F, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x0F, 0x0F, 0x00, 0x00, + 0x3F, 0x3F, 0x00, 0x00, 0x03, 0x03, + 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x00, + 0x83, 0x83, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x18, 0x18, 0xFE, + 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, + 0xC0, 0x5F, 0xD0, 0x90, 0x90, 0x90, + 0xFC, 0x06, 0x01, 0xF8, 0xFC, 0xFC, + 0xC0, 0xC0, 0xFF, 0xFF, 0x00, 0x00, + 0x3C, 0x3C, 0x30, 0x01, 0x06, 0xFC, + 0x90, 0x90, 0x90, 0xD0, 0x5F, 0xC0, + 0x00, 0x18, 0x18, 0x86, 0x86, 0x86, + 0x86, 0x86, 0x86, 0x78, 0x78, 0x00, + 0x00, 0x06, 0x06, 0x06, 0x06, 0x86, + 0x86, 0xE6, 0xE6, 0x1E, 0x1E, 0x00, + 0x00, 0x80, 0x80, 0x60, 0x60, 0x18, + 0x18, 0xFE, 0xFE, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFC, 0xFC, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x0C, 0x0C, 0x00, 0x00, + 0xF0, 0xF0, 0x0C, 0x0C, 0x03, 0x03, + 0x0C, 0x0C, 0xF0, 0xF0, 0x00, 0x00, + 0xFF, 0xFF, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC3, 0x3C, 0x3C, 0x00, 0x00, + 0xC1, 0xC1, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x40, 0x60, 0x7F, + 0x7F, 0x60, 0x40, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0xC1, 0xC1, + 0x01, 0xFD, 0x05, 0x04, 0x04, 0x04, + 0x1F, 0x30, 0x40, 0x87, 0x9F, 0x1F, + 0x01, 0x81, 0xFF, 0xFF, 0x00, 0x00, + 0x1E, 0x9E, 0x86, 0x40, 0x30, 0x1F, + 0x04, 0x04, 0x04, 0x05, 0xFD, 0x01, + 0x00, 0x7E, 0x7E, 0x61, 0x61, 0x61, + 0x61, 0x61, 0x61, 0x60, 0x60, 0x00, + 0x00, 0x18, 0x18, 0x60, 0x60, 0x61, + 0x61, 0x61, 0x61, 0x1E, 0x1E, 0x00, + 0x00, 0x07, 0x07, 0x06, 0x06, 0x06, + 0x06, 0x7F, 0x7F, 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, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 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, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x0C, 0x0C, 0x00, 0x00, + 0x3F, 0x3F, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x3F, 0x3F, 0x00, 0x00, + 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0xFE, 0xE0, 0xE0, 0xE0, + 0xC0, 0xC0, 0x00, 0x00, 0x00, 0xE0, + 0xE0, 0x00, 0x00, 0x00, 0xC0, 0xC0, + 0xE0, 0xE0, 0xE0, 0xFE, 0xFF, 0xFF, + 0x07, 0x05, 0x07, 0x00, 0x70, 0x50, + 0x70, 0x20, 0x20, 0x20, 0x21, 0x3F, + 0x01, 0x61, 0x9F, 0x9F, 0x61, 0x01, + 0x3F, 0x21, 0x20, 0x20, 0x20, 0x70, + 0x50, 0x70, 0x00, 0x07, 0x05, 0x07, +}; +// clang-format on diff --git a/keyboards/0xcb/static/info.json b/keyboards/0xcb/static/info.json new file mode 100644 index 000000000000..33fa8d265ea2 --- /dev/null +++ b/keyboards/0xcb/static/info.json @@ -0,0 +1,103 @@ +{ + "keyboard_name": "0xCB Static", + "url": "https://0xCB.dev", + "maintainer": "Conor-Burns", + "layout_aliases": { + "LAYOUT": "LAYOUT_all" + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"x":11, "y":0}, + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":6, "y":1}, + {"x":7, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + {"x":0, "y":2, "w":1.25}, + {"x":1.25, "y":2}, + {"x":2.25, "y":2}, + {"x":3.25, "y":2}, + {"x":4.25, "y":2}, + {"x":5.25, "y":2}, + {"x":6.25, "y":2}, + {"x":7.25, "y":2}, + {"x":8.25, "y":2}, + {"x":9.25, "y":2}, + {"x":10.25, "y":2, "w":1.75}, + {"x":0, "y":3, "w":1.75}, + {"x":1.75, "y":3}, + {"x":2.75, "y":3}, + {"x":3.75, "y":3}, + {"x":4.75, "y":3}, + {"x":5.75, "y":3}, + {"x":6.75, "y":3}, + {"x":7.75, "y":3}, + {"x":8.75, "y":3}, + {"x":9.75, "y":3}, + {"x":10.75, "y":3, "w":1.25}, + {"x":0, "y":4}, + {"x":1, "y":4}, + {"x":2, "y":4}, + {"x":3, "y":4, "w":2.75}, + {"x":5.75, "y":4}, + {"x":6.75, "y":4, "w":2.25}, + {"x":9, "y":4}, + {"x":10, "y":4}, + {"x":11, "y":4} + ] + }, + "LAYOUT_bigbar": { + "layout": [ + {"x":11, "y":0}, + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":6, "y":1}, + {"x":7, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + {"x":0, "y":2, "w":1.25}, + {"x":1.25, "y":2}, + {"x":2.25, "y":2}, + {"x":3.25, "y":2}, + {"x":4.25, "y":2}, + {"x":5.25, "y":2}, + {"x":6.25, "y":2}, + {"x":7.25, "y":2}, + {"x":8.25, "y":2}, + {"x":9.25, "y":2}, + {"x":10.25, "y":2, "w":1.75}, + {"x":0, "y":3, "w":1.75}, + {"x":1.75, "y":3}, + {"x":2.75, "y":3}, + {"x":3.75, "y":3}, + {"x":4.75, "y":3}, + {"x":5.75, "y":3}, + {"x":6.75, "y":3}, + {"x":7.75, "y":3}, + {"x":8.75, "y":3}, + {"x":9.75, "y":3}, + {"x":10.75, "y":3, "w":1.25}, + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4}, + {"x":2.25, "y":4}, + {"x":3.25, "y":4, "w":6.25}, + {"x":9.5, "y":4, "w":1.25}, + {"x":10.75, "y":4, "w":1.25} + ] + } + } +} diff --git a/keyboards/0xcb/static/keymaps/bongocat/keymap.c b/keyboards/0xcb/static/keymaps/bongocat/keymap.c new file mode 100644 index 000000000000..12cc75217eb6 --- /dev/null +++ b/keyboards/0xcb/static/keymaps/bongocat/keymap.c @@ -0,0 +1,298 @@ +/* +Copyright 2021 0xCB - Conor Burns + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H +// clang-format off +enum my_keycodes { + WPM = SAFE_RANGE, +}; +enum layer_names { + _HOME, + _FN2, + _FN3, + _FN4 +}; +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[_HOME] = LAYOUT_all( + KC_MPLY, + KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, + KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSPC, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), MO(2) +), +[_FN2] = LAYOUT_all( + RESET, + 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_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ +), +[_FN3] = LAYOUT_all( + EEP_RST, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, KC_BSLS, + _______, _______, _______, _______, _______, _______, _______, _______, KC_SCLN, KC_QUOT, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SLSH, + _______, _______, _______, _______, _______, _______, _______, _______, _______ +), +[_FN4] = LAYOUT_all( + _______, + WPM, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPRV, KC_MNXT, KC_MSTP, KC_INS, KC_HOME, KC_DEL, KC_END, _______, + _______, _______, KC_BRID, KC_BRIU, _______, _______, _______, KC_PGUP, KC_UP, KC_PGDN, _______, + _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ +), +}; +// clang-format on +/* WPM toggle key bongocat hehe */ +bool wpm = false; +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case WPM: + if (record->event.pressed) { + wpm = !wpm; + } + return false; + default: + return true; + } +} +/*layer switcher */ +layer_state_t layer_state_set_user(layer_state_t state) { + state = update_tri_layer_state(state, _FN2, _FN3, _FN4); + return state; +} +/* rotary encoder (MX12) - add different functions for layers here */ +#ifdef ENCODER_ENABLE +bool encoder_update_user(uint8_t index, bool clockwise) { + if (IS_LAYER_ON(_FN4)) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else if (IS_LAYER_ON(_FN3)) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else if (IS_LAYER_ON(_FN2)) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } + return true; +} +#endif + +/* oled stuff :) */ +#ifdef OLED_ENABLE +#define IDLE_FRAMES 5 +#define IDLE_SPEED 20 // below this wpm value your animation will idle +#define TAP_FRAMES 2 +#define TAP_SPEED 40 // above this wpm value typing animation to trigger +#define ANIM_FRAME_DURATION 200 // how long each frame lasts in ms +#define ANIM_SIZE 636 // number of bytes in array + +uint32_t anim_timer = 0; +uint32_t anim_sleep = 0; +uint8_t current_idle_frame = 0; +uint8_t current_tap_frame = 0; + +uint16_t startup_timer = 0; + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + startup_timer = timer_read(); + return rotation; +} +static void render_logo(void) { + static const char PROGMEM raw_logo[] = { + 0, 8, 0,192,194,192,192, 60, 60, 44, 60,188, 60, 60, 60, 60, 44, 61, 60,192,192,192,208, 1, 0,252,252,180,252, 60, 60, 44, 60,252,253,252,252, 60, 60, 44, 60,244,220,252,252, 0, 0, 16, 0, 0, 0,192,192, 65,192, 60, 60, 52, 60,192,193,192,192, 16, 0, 0,144, 4, 0,252,125,244, 60, 60, 60, 60, 61,252,252,244,252, 60, 60, 60, 61,248,108,252, 0, 0, 61, 60,188, 60, 52,252,252,220,252, 61, 60, 60, 52, 0, 0,192,210, 64,192, 60, 60, 44, 61, 60, 60, 60, 61, 52, 60, 60, 60,192,192, 64,196, 0, 4, 0, + 0, 16, 0, 61, 63, 55, 63,192, 64,192,196,192,192,192,200,192,196,192,192, 3, 3, 2, 11, 0, 0, 35, 3, 3, 3, 0, 64, 2, 0,255,255,253,247, 0, 0, 0, 32, 1, 0, 1, 65, 8, 0,189,244,252,236, 3,130, 3, 1, 0, 68, 0, 0, 3, 34,131, 3,252,252,236,252, 0, 32, 17, 1, 1, 0, 0, 32, 0, 2,255,255,127,247, 0, 1, 0, 8, 1, 1, 1, 0, 0, 0, 16, 0, 64, 0,255,191,255,251, 0,129, 0, 2, 32, 0,255,255,239,255, 0, 0, 2, 0, 0, 0, 8, 64, 0, 1, 0, 0, 3, 35, 3, 3, 0, 8, 0, + 1, 16, 0,192, 64,194,192, 3, 67, 3, 3, 9, 3, 3, 3, 3, 2, 83, 3,252,252,188,244, 0, 2, 32, 0, 0, 2, 0,144, 0, 0,255,255,237,255, 0, 16, 0, 0, 0, 64, 2, 0,128, 0,255,123,255,255, 60, 52, 60, 60, 60, 60, 60, 60, 44, 60, 56, 60,239,255,126,255, 0, 2, 32, 0, 0, 34, 0, 0, 16, 0,255,255,255,223, 0, 0, 4, 0, 0, 0, 33, 0, 0, 17, 0, 0, 0, 0,255,255,239,255, 0,128, 0, 0, 72, 0,255,253,247,255, 0, 0, 1, 0,144, 0, 4, 0, 32, 0, 0, 2,192,192,192,200, 0, 16, 0, + 64, 4, 0, 3, 7, 3, 3, 60, 60, 52,188, 60, 61, 60, 60, 60, 60, 44, 60, 67, 3, 3, 3, 0, 0, 64, 0, 0, 4, 0, 0, 16, 0, 47, 63, 62, 63, 0, 0,132, 0, 0, 0, 0,128, 8, 0,255,255,111,127, 0, 0, 0, 2,128, 0, 0, 0, 64, 4, 0,128,127,127,107,127, 0, 32, 0, 0, 0, 66, 0, 0, 0,136, 55, 63, 61, 63, 0, 0, 0, 2, 0, 64, 0,136, 0, 0, 60, 44,189, 60, 63, 63, 63, 59, 60, 60,172, 60, 0, 64, 3, 2, 3,131, 60, 44, 60, 60, 60, 60,188, 60, 56, 44, 60, 60, 3, 3,131, 2, 0, 32, 2, + }; + oled_write_raw_P(raw_logo, sizeof(raw_logo)); +} +/* Shows the name of the current layer and locks for the host (CAPS etc.) */ +static void render_layer(void) { + led_t led_state = host_keyboard_led_state(); + // clang-format off + static const char PROGMEM logo[][3][7] = { + {{0x97, 0x98, 0x99, 0x9A, 0}, {0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0}, {0x9B, 0x9C, 0x9D, 0x9E, 0x9F, 0}}, /* l num CB */ + {{0xB7, 0xB8, 0xB9, 0xBA, 0}, {0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0}, {0xBB, 0xBC, 0xBD, 0xBE, 0xBF, 0}}, /* 1 num CB */ + {{0xD7, 0xD8, 0xD9, 0xDA, 0}, {0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0}, {0xDB, 0xDC, 0xDD, 0xDE, 0xDF, 0}}, /* 1 cap CB */ + {{0xF7, 0xF8, 0xF9, 0xFA, 0}, {0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0}, {0xFB, 0xFC, 0xFD, 0xFE, 0xFF, 0}}, /* l cap CB */ + {{0xB7, 0xC0, 0xC1, 0xBA, 0}, {0xB7, 0xC2, 0xC3, 0xBA, 0}, {0xB7, 0xC4, 0xC5, 0xBA, 0}}, /* 2 3 4 */ + {{0xD7, 0xE0, 0xE1, 0xDA, 0}, {0xD7, 0xE2, 0xE3, 0xDA, 0}, {0xD7, 0xE4, 0xE5, 0xDA, 0}}, /* 2 3 4 */ + }; + // clang-format on + oled_set_cursor(0, 0); + oled_write_P(logo[0][0], false); + oled_set_cursor(0, 3); + oled_write_P(logo[3][0], false); + switch (get_highest_layer(layer_state)) { + case _HOME: + oled_set_cursor(0, 1); + oled_write_P(logo[1][0], false); + oled_set_cursor(0, 2); + oled_write_P(logo[2][0], false); + break; + case _FN2: + oled_set_cursor(0, 1); + oled_write_P(logo[4][0], false); + oled_set_cursor(0, 2); + oled_write_P(logo[5][0], false); + break; + case _FN3: + oled_set_cursor(0, 1); + oled_write_P(logo[4][1], false); + oled_set_cursor(0, 2); + oled_write_P(logo[5][1], false); + break; + case _FN4: + oled_set_cursor(0, 1); + oled_write_P(logo[4][2], false); + oled_set_cursor(0, 2); + oled_write_P(logo[5][2], false); + break; + default: + oled_set_cursor(0, 1); + oled_write_P(PSTR(" "), false); + oled_set_cursor(0, 2); + oled_write_P(PSTR(" "), false); + } + oled_set_cursor(8, 0); + oled_write_P(led_state.num_lock ? logo[0][1] : PSTR(" "), false); + oled_set_cursor(8, 1); + oled_write_P(led_state.num_lock ? logo[1][1] : PSTR(" "), false); + oled_set_cursor(8, 2); + oled_write_P(led_state.caps_lock ? logo[2][1] : PSTR(" "), false); + oled_set_cursor(8, 3); + oled_write_P(led_state.caps_lock ? logo[3][1] : PSTR(" "), false); + + oled_set_cursor(16, 0); + oled_write_P(logo[0][2], false); + oled_set_cursor(16, 1); + oled_write_P(logo[1][2], false); + oled_set_cursor(16, 2); + oled_write_P(logo[2][2], false); + oled_set_cursor(16, 3); + oled_write_P(logo[3][2], false); + + /* Fill empty space to clear animation */ + oled_set_cursor(4, 0); + oled_write_P(PSTR(" "), false); + oled_set_cursor(4, 1); + oled_write_P(PSTR(" "), false); + oled_set_cursor(4, 2); + oled_write_P(PSTR(" "), false); + oled_set_cursor(4, 3); + oled_write_P(PSTR(" "), false); + + oled_set_cursor(14, 0); + oled_write_P(PSTR(" "), false); + oled_set_cursor(14, 1); + oled_write_P(PSTR(" "), false); + oled_set_cursor(14, 2); + oled_write_P(PSTR(" "), false); + oled_set_cursor(14, 3); + oled_write_P(PSTR(" "), false); +} + +static void render_cat(void) { + static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = { + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 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, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 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, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xc0, 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 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, 0x00, 0x00, 0x00, 0x7e, 0x82, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x60, 0x60, 0x00, 0x01, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xc0, 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 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, 0x00, 0x00, 0x1c, 0x34, 0xc4, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 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, 0x06, 0x0d, 0x31, 0xc1, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}; + static const char PROGMEM prep[][ANIM_SIZE] = { + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 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, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, 0x82, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x64, 0x18, 0x04, 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x02, 0x18, 0x19, 0x00, 0x05, 0xfe, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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}}; + static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE] = { + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 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, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x64, 0x18, 0x04, 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x98, 0xc0, 0x88, 0x88, 0x8c, 0x9c, 0x1c, 0x1e, 0x0e, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 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, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, 0x82, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x02, 0x18, 0x19, 0x00, 0x05, 0xfe, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x07, 0x03, 0x03, 0x61, 0xf0, 0xf8, 0xfc, 0x60, 0x01, 0x01, 0x01, 0x3c, 0x78, 0xf8, 0xf0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + }; + + void animation_phase(void) { + if (get_current_wpm() <= IDLE_SPEED) { + current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES; + oled_write_raw_P(idle[abs((IDLE_FRAMES - 1) - current_idle_frame)], ANIM_SIZE); + } + if (get_current_wpm() > IDLE_SPEED && get_current_wpm() < TAP_SPEED) { + oled_write_raw_P(prep[0], ANIM_SIZE); + } + if (get_current_wpm() >= TAP_SPEED) { + current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES; + oled_write_raw_P(tap[abs((TAP_FRAMES - 1) - current_tap_frame)], ANIM_SIZE); + } + } + if (get_current_wpm() != 000) { + if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { + anim_timer = timer_read32(); + animation_phase(); + } + anim_sleep = timer_read32(); + } else { + if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { + anim_timer = timer_read32(); + animation_phase(); + } + } +} + +bool oled_task_user(void) { + static bool finished_timer = false; + if (!finished_timer && (timer_elapsed(startup_timer) < 3000)) { + render_logo(); + } else { + if (!finished_timer) { + oled_clear(); + finished_timer = true; + } + if (wpm) { + render_cat(); + oled_set_cursor(0, 0); + char string[10]; + uint16_t m = get_current_wpm(); + string[3] = '\0'; + string[2] = '0' + m % 10; + string[1] = ( m /= 10) % 10 ? '0' + (m) % 10 : (m / 10) % 10 ? '0' : ' '; + string[0] = m / 10 ? '0' + m / 10 : ' '; + oled_write_P(PSTR("WPM:"), false); + oled_write(string, false); + } else { + render_layer(); + } + } + return false; +} +#endif + +/* Resets via on eep reset - thank you drashna! */ +void eeconfig_init_kb(void) { + via_eeprom_set_valid(false); + via_init(); + eeconfig_init_user(); +} diff --git a/keyboards/0xcb/static/keymaps/bongocat/rules.mk b/keyboards/0xcb/static/keymaps/bongocat/rules.mk new file mode 100644 index 000000000000..d03b5f1ca758 --- /dev/null +++ b/keyboards/0xcb/static/keymaps/bongocat/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +WPM_ENABLE = yes \ No newline at end of file diff --git a/keyboards/0xcb/static/keymaps/default/keymap.c b/keyboards/0xcb/static/keymaps/default/keymap.c new file mode 100644 index 000000000000..4d0d14ff7ec4 --- /dev/null +++ b/keyboards/0xcb/static/keymaps/default/keymap.c @@ -0,0 +1,191 @@ +/* +Copyright 2021 0xCB - Conor Burns + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H +// clang-format off +enum layer_names { + _HOME, + _FN2, + _FN3, + _FN4 +}; +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[_HOME] = LAYOUT_all( + KC_MPLY, + KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, + KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSPC, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), MO(2) +), +[_FN2] = LAYOUT_all( + RESET, + 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_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ +), +[_FN3] = LAYOUT_all( + EEP_RST, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, KC_BSLS, + _______, _______, _______, _______, _______, _______, _______, _______, KC_SCLN, KC_QUOT, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SLSH, + _______, _______, _______, _______, _______, _______, _______, _______, _______ +), +[_FN4] = LAYOUT_all( + _______, + _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPRV, KC_MNXT, KC_MSTP, KC_INS, KC_HOME, KC_DEL, KC_END, _______, + _______, _______, KC_BRID, KC_BRIU, _______, _______, _______, KC_PGUP, KC_UP, KC_PGDN, _______, + _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ +), +}; +// clang-format on + +/*layer switcher */ +layer_state_t layer_state_set_user(layer_state_t state) { +state = update_tri_layer_state(state, _FN2, _FN3, _FN4); +return state; +} +/* rotary encoder (MX12) - add different functions for layers here */ +#ifdef ENCODER_ENABLE +bool encoder_update_user(uint8_t index, bool clockwise) { + if (IS_LAYER_ON(_FN4)) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else if (IS_LAYER_ON(_FN3)) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else if (IS_LAYER_ON(_FN2)) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } + return true; +} +#endif + +/* oled stuff :) */ +#ifdef OLED_ENABLE +uint16_t startup_timer = 0; + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + startup_timer = timer_read(); + return rotation; +} +static void render_logo(void) { + static const char PROGMEM raw_logo[] = { + 0, 8, 0,192,194,192,192, 60, 60, 44, 60,188, 60, 60, 60, 60, 44, 61, 60,192,192,192,208, 1, 0,252,252,180,252, 60, 60, 44, 60,252,253,252,252, 60, 60, 44, 60,244,220,252,252, 0, 0, 16, 0, 0, 0,192,192, 65,192, 60, 60, 52, 60,192,193,192,192, 16, 0, 0,144, 4, 0,252,125,244, 60, 60, 60, 60, 61,252,252,244,252, 60, 60, 60, 61,248,108,252, 0, 0, 61, 60,188, 60, 52,252,252,220,252, 61, 60, 60, 52, 0, 0,192,210, 64,192, 60, 60, 44, 61, 60, 60, 60, 61, 52, 60, 60, 60,192,192, 64,196, 0, 4, 0, + 0, 16, 0, 61, 63, 55, 63,192, 64,192,196,192,192,192,200,192,196,192,192, 3, 3, 2, 11, 0, 0, 35, 3, 3, 3, 0, 64, 2, 0,255,255,253,247, 0, 0, 0, 32, 1, 0, 1, 65, 8, 0,189,244,252,236, 3,130, 3, 1, 0, 68, 0, 0, 3, 34,131, 3,252,252,236,252, 0, 32, 17, 1, 1, 0, 0, 32, 0, 2,255,255,127,247, 0, 1, 0, 8, 1, 1, 1, 0, 0, 0, 16, 0, 64, 0,255,191,255,251, 0,129, 0, 2, 32, 0,255,255,239,255, 0, 0, 2, 0, 0, 0, 8, 64, 0, 1, 0, 0, 3, 35, 3, 3, 0, 8, 0, + 1, 16, 0,192, 64,194,192, 3, 67, 3, 3, 9, 3, 3, 3, 3, 2, 83, 3,252,252,188,244, 0, 2, 32, 0, 0, 2, 0,144, 0, 0,255,255,237,255, 0, 16, 0, 0, 0, 64, 2, 0,128, 0,255,123,255,255, 60, 52, 60, 60, 60, 60, 60, 60, 44, 60, 56, 60,239,255,126,255, 0, 2, 32, 0, 0, 34, 0, 0, 16, 0,255,255,255,223, 0, 0, 4, 0, 0, 0, 33, 0, 0, 17, 0, 0, 0, 0,255,255,239,255, 0,128, 0, 0, 72, 0,255,253,247,255, 0, 0, 1, 0,144, 0, 4, 0, 32, 0, 0, 2,192,192,192,200, 0, 16, 0, + 64, 4, 0, 3, 7, 3, 3, 60, 60, 52,188, 60, 61, 60, 60, 60, 60, 44, 60, 67, 3, 3, 3, 0, 0, 64, 0, 0, 4, 0, 0, 16, 0, 47, 63, 62, 63, 0, 0,132, 0, 0, 0, 0,128, 8, 0,255,255,111,127, 0, 0, 0, 2,128, 0, 0, 0, 64, 4, 0,128,127,127,107,127, 0, 32, 0, 0, 0, 66, 0, 0, 0,136, 55, 63, 61, 63, 0, 0, 0, 2, 0, 64, 0,136, 0, 0, 60, 44,189, 60, 63, 63, 63, 59, 60, 60,172, 60, 0, 64, 3, 2, 3,131, 60, 44, 60, 60, 60, 60,188, 60, 56, 44, 60, 60, 3, 3,131, 2, 0, 32, 2, + }; + oled_write_raw_P(raw_logo, sizeof(raw_logo)); +} +/* Shows the name of the current layer and locks for the host (CAPS etc.) */ +static void render_layer(void) { + led_t led_state = host_keyboard_led_state(); + // clang-format off + static const char PROGMEM logo[][3][7] = { + {{0x97, 0x98, 0x99, 0x9A, 0}, {0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0}, {0x9B, 0x9C, 0x9D, 0x9E, 0x9F, 0}}, /* l num CB */ + {{0xB7, 0xB8, 0xB9, 0xBA, 0}, {0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0}, {0xBB, 0xBC, 0xBD, 0xBE, 0xBF, 0}}, /* 1 num CB */ + {{0xD7, 0xD8, 0xD9, 0xDA, 0}, {0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0}, {0xDB, 0xDC, 0xDD, 0xDE, 0xDF, 0}}, /* 1 cap CB */ + {{0xF7, 0xF8, 0xF9, 0xFA, 0}, {0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0}, {0xFB, 0xFC, 0xFD, 0xFE, 0xFF, 0}}, /* l cap CB */ + {{0xB7, 0xC0, 0xC1, 0xBA, 0}, {0xB7, 0xC2, 0xC3, 0xBA, 0}, {0xB7, 0xC4, 0xC5, 0xBA, 0}}, /* 2 3 4 */ + {{0xD7, 0xE0, 0xE1, 0xDA, 0}, {0xD7, 0xE2, 0xE3, 0xDA, 0}, {0xD7, 0xE4, 0xE5, 0xDA, 0}}, /* 2 3 4 */ + }; + // clang-format on + oled_set_cursor(0, 0); + oled_write_P(logo[0][0], false); + oled_set_cursor(0, 3); + oled_write_P(logo[3][0], false); + switch (get_highest_layer(layer_state)) { + case _HOME: + oled_set_cursor(0, 1); + oled_write_P(logo[1][0], false); + oled_set_cursor(0, 2); + oled_write_P(logo[2][0], false); + break; + case _FN2: + oled_set_cursor(0, 1); + oled_write_P(logo[4][0], false); + oled_set_cursor(0, 2); + oled_write_P(logo[5][0], false); + break; + case _FN3: + oled_set_cursor(0, 1); + oled_write_P(logo[4][1], false); + oled_set_cursor(0, 2); + oled_write_P(logo[5][1], false); + break; + case _FN4: + oled_set_cursor(0, 1); + oled_write_P(logo[4][2], false); + oled_set_cursor(0, 2); + oled_write_P(logo[5][2], false); + break; + default: + oled_set_cursor(0, 1); + oled_write_P(PSTR(" "), false); + oled_set_cursor(0, 2); + oled_write_P(PSTR(" "), false); + } + oled_set_cursor(8, 0); + oled_write_P(led_state.num_lock ? logo[0][1] : PSTR(" "), false); + oled_set_cursor(8, 1); + oled_write_P(led_state.num_lock ? logo[1][1] : PSTR(" "), false); + oled_set_cursor(8, 2); + oled_write_P(led_state.caps_lock ? logo[2][1] : PSTR(" "), false); + oled_set_cursor(8, 3); + oled_write_P(led_state.caps_lock ? logo[3][1] : PSTR(" "), false); + + oled_set_cursor(16, 0); + oled_write_P(logo[0][2], false); + oled_set_cursor(16, 1); + oled_write_P(logo[1][2], false); + oled_set_cursor(16, 2); + oled_write_P(logo[2][2], false); + oled_set_cursor(16, 3); + oled_write_P(logo[3][2], false); +} + +bool oled_task_user(void) { + static bool finished_timer = false; + if (!finished_timer && (timer_elapsed(startup_timer) < 3000)) { + render_logo(); + } else { + if (!finished_timer) { + oled_clear(); + finished_timer = true; + } + render_layer(); + } + return false; +} +#endif diff --git a/keyboards/0xcb/static/keymaps/via/keymap.c b/keyboards/0xcb/static/keymaps/via/keymap.c new file mode 100644 index 000000000000..62fcca1f3c36 --- /dev/null +++ b/keyboards/0xcb/static/keymaps/via/keymap.c @@ -0,0 +1,198 @@ +/* +Copyright 2021 0xCB - Conor Burns + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H +// clang-format off +enum layer_names { + _HOME, + _FN2, + _FN3, + _FN4 +}; +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[_HOME] = LAYOUT_all( + KC_MPLY, + KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, + KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSPC, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), MO(2) +), +[_FN2] = LAYOUT_all( + RESET, + 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_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ +), +[_FN3] = LAYOUT_all( + EEP_RST, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, KC_BSLS, + _______, _______, _______, _______, _______, _______, _______, _______, KC_SCLN, KC_QUOT, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SLSH, + _______, _______, _______, _______, _______, _______, _______, _______, _______ +), +[_FN4] = LAYOUT_all( + _______, + _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPRV, KC_MNXT, KC_MSTP, KC_INS, KC_HOME, KC_DEL, KC_END, _______, + _______, _______, KC_BRID, KC_BRIU, _______, _______, _______, KC_PGUP, KC_UP, KC_PGDN, _______, + _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ +), +}; +// clang-format on + +/*layer switcher */ +layer_state_t layer_state_set_user(layer_state_t state) { +state = update_tri_layer_state(state, _FN2, _FN3, _FN4); +return state; +} +/* rotary encoder (MX12) - add different functions for layers here */ +#ifdef ENCODER_ENABLE +bool encoder_update_user(uint8_t index, bool clockwise) { + if (IS_LAYER_ON(_FN4)) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else if (IS_LAYER_ON(_FN3)) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else if (IS_LAYER_ON(_FN2)) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } + return true; +} +#endif + +/* oled stuff :) */ +#ifdef OLED_ENABLE +uint16_t startup_timer = 0; + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + startup_timer = timer_read(); + return rotation; +} +static void render_logo(void) { + static const char PROGMEM raw_logo[] = { + 0, 8, 0,192,194,192,192, 60, 60, 44, 60,188, 60, 60, 60, 60, 44, 61, 60,192,192,192,208, 1, 0,252,252,180,252, 60, 60, 44, 60,252,253,252,252, 60, 60, 44, 60,244,220,252,252, 0, 0, 16, 0, 0, 0,192,192, 65,192, 60, 60, 52, 60,192,193,192,192, 16, 0, 0,144, 4, 0,252,125,244, 60, 60, 60, 60, 61,252,252,244,252, 60, 60, 60, 61,248,108,252, 0, 0, 61, 60,188, 60, 52,252,252,220,252, 61, 60, 60, 52, 0, 0,192,210, 64,192, 60, 60, 44, 61, 60, 60, 60, 61, 52, 60, 60, 60,192,192, 64,196, 0, 4, 0, + 0, 16, 0, 61, 63, 55, 63,192, 64,192,196,192,192,192,200,192,196,192,192, 3, 3, 2, 11, 0, 0, 35, 3, 3, 3, 0, 64, 2, 0,255,255,253,247, 0, 0, 0, 32, 1, 0, 1, 65, 8, 0,189,244,252,236, 3,130, 3, 1, 0, 68, 0, 0, 3, 34,131, 3,252,252,236,252, 0, 32, 17, 1, 1, 0, 0, 32, 0, 2,255,255,127,247, 0, 1, 0, 8, 1, 1, 1, 0, 0, 0, 16, 0, 64, 0,255,191,255,251, 0,129, 0, 2, 32, 0,255,255,239,255, 0, 0, 2, 0, 0, 0, 8, 64, 0, 1, 0, 0, 3, 35, 3, 3, 0, 8, 0, + 1, 16, 0,192, 64,194,192, 3, 67, 3, 3, 9, 3, 3, 3, 3, 2, 83, 3,252,252,188,244, 0, 2, 32, 0, 0, 2, 0,144, 0, 0,255,255,237,255, 0, 16, 0, 0, 0, 64, 2, 0,128, 0,255,123,255,255, 60, 52, 60, 60, 60, 60, 60, 60, 44, 60, 56, 60,239,255,126,255, 0, 2, 32, 0, 0, 34, 0, 0, 16, 0,255,255,255,223, 0, 0, 4, 0, 0, 0, 33, 0, 0, 17, 0, 0, 0, 0,255,255,239,255, 0,128, 0, 0, 72, 0,255,253,247,255, 0, 0, 1, 0,144, 0, 4, 0, 32, 0, 0, 2,192,192,192,200, 0, 16, 0, + 64, 4, 0, 3, 7, 3, 3, 60, 60, 52,188, 60, 61, 60, 60, 60, 60, 44, 60, 67, 3, 3, 3, 0, 0, 64, 0, 0, 4, 0, 0, 16, 0, 47, 63, 62, 63, 0, 0,132, 0, 0, 0, 0,128, 8, 0,255,255,111,127, 0, 0, 0, 2,128, 0, 0, 0, 64, 4, 0,128,127,127,107,127, 0, 32, 0, 0, 0, 66, 0, 0, 0,136, 55, 63, 61, 63, 0, 0, 0, 2, 0, 64, 0,136, 0, 0, 60, 44,189, 60, 63, 63, 63, 59, 60, 60,172, 60, 0, 64, 3, 2, 3,131, 60, 44, 60, 60, 60, 60,188, 60, 56, 44, 60, 60, 3, 3,131, 2, 0, 32, 2, + }; + oled_write_raw_P(raw_logo, sizeof(raw_logo)); +} +/* Shows the name of the current layer and locks for the host (CAPS etc.) */ +static void render_layer(void) { + led_t led_state = host_keyboard_led_state(); + // clang-format off + static const char PROGMEM logo[][3][7] = { + {{0x97, 0x98, 0x99, 0x9A, 0}, {0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0}, {0x9B, 0x9C, 0x9D, 0x9E, 0x9F, 0}}, /* l num CB */ + {{0xB7, 0xB8, 0xB9, 0xBA, 0}, {0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0}, {0xBB, 0xBC, 0xBD, 0xBE, 0xBF, 0}}, /* 1 num CB */ + {{0xD7, 0xD8, 0xD9, 0xDA, 0}, {0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0}, {0xDB, 0xDC, 0xDD, 0xDE, 0xDF, 0}}, /* 1 cap CB */ + {{0xF7, 0xF8, 0xF9, 0xFA, 0}, {0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0}, {0xFB, 0xFC, 0xFD, 0xFE, 0xFF, 0}}, /* l cap CB */ + {{0xB7, 0xC0, 0xC1, 0xBA, 0}, {0xB7, 0xC2, 0xC3, 0xBA, 0}, {0xB7, 0xC4, 0xC5, 0xBA, 0}}, /* 2 3 4 */ + {{0xD7, 0xE0, 0xE1, 0xDA, 0}, {0xD7, 0xE2, 0xE3, 0xDA, 0}, {0xD7, 0xE4, 0xE5, 0xDA, 0}}, /* 2 3 4 */ + }; + // clang-format on + oled_set_cursor(0, 0); + oled_write_P(logo[0][0], false); + oled_set_cursor(0, 3); + oled_write_P(logo[3][0], false); + switch (get_highest_layer(layer_state)) { + case _HOME: + oled_set_cursor(0, 1); + oled_write_P(logo[1][0], false); + oled_set_cursor(0, 2); + oled_write_P(logo[2][0], false); + break; + case _FN2: + oled_set_cursor(0, 1); + oled_write_P(logo[4][0], false); + oled_set_cursor(0, 2); + oled_write_P(logo[5][0], false); + break; + case _FN3: + oled_set_cursor(0, 1); + oled_write_P(logo[4][1], false); + oled_set_cursor(0, 2); + oled_write_P(logo[5][1], false); + break; + case _FN4: + oled_set_cursor(0, 1); + oled_write_P(logo[4][2], false); + oled_set_cursor(0, 2); + oled_write_P(logo[5][2], false); + break; + default: + oled_set_cursor(0, 1); + oled_write_P(PSTR(" "), false); + oled_set_cursor(0, 2); + oled_write_P(PSTR(" "), false); + } + oled_set_cursor(8, 0); + oled_write_P(led_state.num_lock ? logo[0][1] : PSTR(" "), false); + oled_set_cursor(8, 1); + oled_write_P(led_state.num_lock ? logo[1][1] : PSTR(" "), false); + oled_set_cursor(8, 2); + oled_write_P(led_state.caps_lock ? logo[2][1] : PSTR(" "), false); + oled_set_cursor(8, 3); + oled_write_P(led_state.caps_lock ? logo[3][1] : PSTR(" "), false); + + oled_set_cursor(16, 0); + oled_write_P(logo[0][2], false); + oled_set_cursor(16, 1); + oled_write_P(logo[1][2], false); + oled_set_cursor(16, 2); + oled_write_P(logo[2][2], false); + oled_set_cursor(16, 3); + oled_write_P(logo[3][2], false); +} + +bool oled_task_user(void) { + static bool finished_timer = false; + if (!finished_timer && (timer_elapsed(startup_timer) < 3000)) { + render_logo(); + } else { + if (!finished_timer) { + oled_clear(); + finished_timer = true; + } + render_layer(); + } + return false; +} +#endif + +/* Resets via on eep reset - thank you drashna! */ +void eeconfig_init_kb(void) { + via_eeprom_set_valid(false); + via_init(); + eeconfig_init_user(); +} diff --git a/keyboards/bm40hsrgb/keymaps/via/rules.mk b/keyboards/0xcb/static/keymaps/via/rules.mk similarity index 100% rename from keyboards/bm40hsrgb/keymaps/via/rules.mk rename to keyboards/0xcb/static/keymaps/via/rules.mk diff --git a/keyboards/0xcb/static/readme.md b/keyboards/0xcb/static/readme.md new file mode 100644 index 000000000000..57e87b71a6dd --- /dev/null +++ b/keyboards/0xcb/static/readme.md @@ -0,0 +1,27 @@ +# 0xCB Static + +Macro keypad + +* Keyboard Maintainer: [Conor Burns](https://github.com/conor-burns) +* Hardware Supported: https://github.com/0xCB-dev/0xcb-static +* Hardware Availability: On CandyKeys or order your own parts - the hardware in the repo is Open Source :D +* PCB renders :) + +![](https://github.com/0xCB-dev/0xcb-static/blob/main/PCB/rev1.0/top.png) + +![](https://github.com/0xCB-dev/0xcb-static/blob/main/PCB/rev1.0/bottom.png) + +More Pictures [here](https://0xcb.dev/static/) + +To go to bootloader press ESC while plugging in or hold the RESET switch, then hold the BOOT switch, release RESET, release BOOT. +The board should now appear in lsusb (or device manager). + +Make example for this keyboard (after setting up your build environment): + + make 0xcb/static:default + +Flashing example for this keyboard: + + make 0xcb/static:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/0xcb/static/rules.mk b/keyboards/0xcb/static/rules.mk new file mode 100644 index 000000000000..774a042caa5b --- /dev/null +++ b/keyboards/0xcb/static/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = atmega328p + +# Bootloader selection +BOOTLOADER = usbasploader + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +ENCODER_ENABLE = yes +LTO_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/0xcb/static/static.c b/keyboards/0xcb/static/static.c new file mode 100644 index 000000000000..c6f5601f29ee --- /dev/null +++ b/keyboards/0xcb/static/static.c @@ -0,0 +1,17 @@ +/* +Copyright 2021 0xCB - Conor Burns + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "static.h" diff --git a/keyboards/0xcb/static/static.h b/keyboards/0xcb/static/static.h new file mode 100644 index 000000000000..19b698ef3f6b --- /dev/null +++ b/keyboards/0xcb/static/static.h @@ -0,0 +1,66 @@ +/* +Copyright 2021 0xCB - Conor Burns + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "quantum.h" + +/* This a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + +// clang-format off +#define LAYOUT_all( \ + K15, \ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K35, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, \ + K40, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, \ + K60, K70, K61, K71, K72, K64, K74, K65, K75 \ +) \ +{ \ + { 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 }, \ + { KC_NO, K51, K52, K53, K54, K55 }, \ + { K60, K61, KC_NO, KC_NO, K64, K65 }, \ + { K70, K71, K72, KC_NO, K74, K75 }, \ +} + +#define LAYOUT_bigbar( \ + K15, \ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K35, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, \ + K40, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, \ + K60, K70, K61, K72, K65, K75 \ +) \ +{ \ + { 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 }, \ + { KC_NO, K51, K52, K53, K54, K55 }, \ + { K60, K61, KC_NO, KC_NO, KC_NO, K65 }, \ + { K70, KC_NO, K72, KC_NO, KC_NO, K75 }, \ +} +// clang-format on diff --git a/keyboards/10bleoledhub/info.json b/keyboards/10bleoledhub/info.json index 368efab38140..769c98874d9c 100644 --- a/keyboards/10bleoledhub/info.json +++ b/keyboards/10bleoledhub/info.json @@ -2,9 +2,6 @@ "keyboard_name": "10bleoledhub", "url": "https://github.com/haierwangwei2005/10BLE-OLED-HUB", "maintainer": "haierwangwei2005", - - "width": 4, - "height": 3, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/10bleoledhub/keymaps/default/keymap.c b/keyboards/10bleoledhub/keymaps/default/keymap.c index fec5f8f3793c..806d9131283c 100644 --- a/keyboards/10bleoledhub/keymaps/default/keymap.c +++ b/keyboards/10bleoledhub/keymaps/default/keymap.c @@ -54,8 +54,11 @@ static void render_logo(void) { oled_write_P(qmk_logo, false); } -#ifdef OLED_DRIVER_ENABLE -void oled_task_user(void) { render_logo(); } +#ifdef OLED_ENABLE +bool oled_task_user(void) { + render_logo(); + return false; +} #endif bool encoder_update_user(uint8_t index, bool clockwise) { diff --git a/keyboards/10bleoledhub/keymaps/via/keymap.c b/keyboards/10bleoledhub/keymaps/via/keymap.c index 6f78ac8af05f..316819acf574 100644 --- a/keyboards/10bleoledhub/keymaps/via/keymap.c +++ b/keyboards/10bleoledhub/keymaps/via/keymap.c @@ -54,8 +54,11 @@ static void render_logo(void) { oled_write_P(qmk_logo, false); } -#ifdef OLED_DRIVER_ENABLE -void oled_task_user(void) { render_logo(); } +#ifdef OLED_ENABLE +bool oled_task_user(void) { + render_logo(); + return false; +} #endif bool encoder_update_user(uint8_t index, bool clockwise) { diff --git a/keyboards/10bleoledhub/rules.mk b/keyboards/10bleoledhub/rules.mk index e582b213f778..9fd0b08434bb 100644 --- a/keyboards/10bleoledhub/rules.mk +++ b/keyboards/10bleoledhub/rules.mk @@ -10,19 +10,18 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 -OLED_DRIVER_ENABLE = yes +BLUETOOTH_ENABLE = yes +BLUETOOTH_DRIVER = AdafruitBLE +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 ENCODER_ENABLE = yes diff --git a/keyboards/1upkeyboards/1up60hse/1up60hse.c b/keyboards/1upkeyboards/1up60hse/1up60hse.c index c04018d62c4f..fa62f52e6498 100644 --- a/keyboards/1upkeyboards/1up60hse/1up60hse.c +++ b/keyboards/1upkeyboards/1up60hse/1up60hse.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "1up60hse.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/1upkeyboards/1up60hse/config.h b/keyboards/1upkeyboards/1up60hse/config.h index 9d4ac3eedd43..7a7fa56fe50d 100644 --- a/keyboards/1upkeyboards/1up60hse/config.h +++ b/keyboards/1upkeyboards/1up60hse/config.h @@ -100,54 +100,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -165,23 +117,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 diff --git a/keyboards/1upkeyboards/1up60hse/info.json b/keyboards/1upkeyboards/1up60hse/info.json index 831614bc6bc7..7eca93d8a956 100644 --- a/keyboards/1upkeyboards/1up60hse/info.json +++ b/keyboards/1upkeyboards/1up60hse/info.json @@ -2,8 +2,6 @@ "keyboard_name": "1up60hse", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_ansi": { "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}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"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/1upkeyboards/1up60hse/rules.mk b/keyboards/1upkeyboards/1up60hse/rules.mk index 37c18690ce43..b166d77f065e 100644 --- a/keyboards/1upkeyboards/1up60hse/rules.mk +++ b/keyboards/1upkeyboards/1up60hse/rules.mk @@ -2,33 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 -EXTRAFLAGS += -flto +AUDIO_ENABLE = no # Audio output +LTO_ENABLE = yes LAYOUTS = 60_ansi diff --git a/keyboards/1upkeyboards/1up60hte/1up60hte.h b/keyboards/1upkeyboards/1up60hte/1up60hte.h index b6d3c8e0d15d..c64bcb124d7f 100644 --- a/keyboards/1upkeyboards/1up60hte/1up60hte.h +++ b/keyboards/1upkeyboards/1up60hte/1up60hte.h @@ -19,31 +19,31 @@ along with this program. If not, see . #include "quantum.h" -#define LAYOUT_tsangan( \ - K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K413, \ - 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, K212, \ - K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, \ - K400, K401, K402, K406, K410, K411, K412 \ +#define LAYOUT_60_tsangan_hhkb( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K413, \ + 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, K212, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, \ + K400, K401, K402, K406, K410, K411, K412 \ ) { \ - { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \ - { 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, K212, KC_NO }, \ - { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO }, \ - { K400, K401, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, K410, K411, K412, K413 } \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \ + { 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, K212, KC_NO }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO }, \ + { K400, K401, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, K410, K411, K412, K413 } \ } /* HHKB Variant */ #define LAYOUT_60_hhkb( \ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K413, \ - 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, K212, \ - K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, \ - K401, K402, K406, K410, K411 \ + 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, K212, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, \ + K401, K402, K406, K410, K411 \ ) { \ - { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \ - { 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, K212, KC_NO }, \ - { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO }, \ - { KC_NO, K401, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, K410, K411, KC_NO, K413 } \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \ + { 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, K212, KC_NO }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO }, \ + { KC_NO, K401, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, K410, K411, KC_NO, K413 } \ } diff --git a/keyboards/1upkeyboards/1up60hte/info.json b/keyboards/1upkeyboards/1up60hte/info.json index 86521d36bd33..830c6e289fde 100644 --- a/keyboards/1upkeyboards/1up60hte/info.json +++ b/keyboards/1upkeyboards/1up60hte/info.json @@ -1,15 +1,148 @@ { - "keyboard_name": "1up60hte", - "url": "https://www.1upkeyboards.com/shop/controllers/1up-rgb-60-pcb-hte/", - "maintainer": "1upkeyboards", - "width": 15, - "height": 5, + "keyboard_name": "1up60hte", + "url": "https://www.1upkeyboards.com/shop/controllers/1up-rgb-60-pcb-hte/", + "maintainer": "1upkeyboards", + "layout_aliases": { + "LAYOUT_tsangan": "LAYOUT_60_tsangan_hhkb" + }, "layouts": { - "LAYOUT_tsangan": { - "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"|", "x":13, "y":0}, {"label":"~", "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":"Control", "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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Fn", "x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Alt", "x":1.5, "y":4}, {"label":"Meta", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Meta", "x":11, "y":4, "w":1.5}, {"label":"Alt", "x":12.5, "y":4}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}] + "LAYOUT_60_tsangan_hhkb": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"!", "x":1, "y":0}, + {"label":"@", "x":2, "y":0}, + {"label":"#", "x":3, "y":0}, + {"label":"$", "x":4, "y":0}, + {"label":"%", "x":5, "y":0}, + {"label":"^", "x":6, "y":0}, + {"label":"&", "x":7, "y":0}, + {"label":"*", "x":8, "y":0}, + {"label":"(", "x":9, "y":0}, + {"label":")", "x":10, "y":0}, + {"label":"_", "x":11, "y":0}, + {"label":"+", "x":12, "y":0}, + {"label":"|", "x":13, "y":0}, + {"label":"~", "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":"Control", "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":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"Fn", "x":14, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.5}, + {"label":"Alt", "x":1.5, "y":4}, + {"label":"Meta", "x":2.5, "y":4, "w":1.5}, + {"x":4, "y":4, "w":7}, + {"label":"Meta", "x":11, "y":4, "w":1.5}, + {"label":"Alt", "x":12.5, "y":4}, + {"label":"Ctrl", "x":13.5, "y":4, "w":1.5} + ] }, "LAYOUT_60_hhkb": { - "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"|", "x":13, "y":0}, {"label":"~", "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":"Control", "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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Fn", "x":14, "y":3}, {"label":"Alt", "x":1.5, "y":4}, {"label":"Meta", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Meta", "x":11, "y":4, "w":1.5}, {"label":"Alt", "x":12.5, "y":4}] + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"!", "x":1, "y":0}, + {"label":"@", "x":2, "y":0}, + {"label":"#", "x":3, "y":0}, + {"label":"$", "x":4, "y":0}, + {"label":"%", "x":5, "y":0}, + {"label":"^", "x":6, "y":0}, + {"label":"&", "x":7, "y":0}, + {"label":"*", "x":8, "y":0}, + {"label":"(", "x":9, "y":0}, + {"label":")", "x":10, "y":0}, + {"label":"_", "x":11, "y":0}, + {"label":"+", "x":12, "y":0}, + {"label":"|", "x":13, "y":0}, + {"label":"~", "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":"Control", "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":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"Fn", "x":14, "y":3}, + + {"label":"Alt", "x":1.5, "y":4}, + {"label":"Meta", "x":2.5, "y":4, "w":1.5}, + {"x":4, "y":4, "w":7}, + {"label":"Meta", "x":11, "y":4, "w":1.5}, + {"label":"Alt", "x":12.5, "y":4} + ] } } } diff --git a/keyboards/1upkeyboards/1up60hte/keymaps/default/keymap.c b/keyboards/1upkeyboards/1up60hte/keymaps/default/keymap.c index 2f91e1c76e7c..79a2fa92a7e0 100644 --- a/keyboards/1upkeyboards/1up60hte/keymaps/default/keymap.c +++ b/keyboards/1upkeyboards/1up60hte/keymaps/default/keymap.c @@ -17,17 +17,19 @@ along with this program. If not, see . #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_tsangan( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, - KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), - KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, KC_RCTL), + [0] = LAYOUT_60_tsangan_hhkb( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, KC_RCTL + ), - [1] = LAYOUT_tsangan( - RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, - KC_CAPS, BL_TOGG, BL_DEC, BL_INC, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_CLR, - KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_MPLY, KC_MPRV, KC_MNXT, RGB_VAD, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, - KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) + [1] = LAYOUT_60_tsangan_hhkb( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, + KC_CAPS, BL_TOGG, BL_DEC, BL_INC, BL_STEP, _______, _______, _______, _______, KC_SLCK, KC_PAUS, KC_UP, _______, KC_CLR, + _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_MPLY, KC_MPRV, KC_MNXT, RGB_VAD, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, KC_END, KC_PGDN, KC_DOWN, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ) }; diff --git a/keyboards/1upkeyboards/1up60hte/keymaps/hhkb/keymap.c b/keyboards/1upkeyboards/1up60hte/keymaps/hhkb/keymap.c index 81e29ec19130..525e02eef4a8 100644 --- a/keyboards/1upkeyboards/1up60hte/keymaps/hhkb/keymap.c +++ b/keyboards/1upkeyboards/1up60hte/keymaps/hhkb/keymap.c @@ -17,17 +17,19 @@ along with this program. If not, see . #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_tsangan( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, - KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), - KC_NO, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, KC_NO), + [0] = LAYOUT_60_hhkb( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT + ), - [1] = LAYOUT_tsangan( - RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, - KC_CAPS, BL_TOGG, BL_DEC, BL_INC, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_CLR, - KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_MPLY, KC_MPRV, KC_MNXT, RGB_VAD, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, - KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) + [1] = LAYOUT_60_hhkb( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, + KC_CAPS, BL_TOGG, BL_DEC, BL_INC, BL_STEP, _______, _______, _______, _______, KC_SLCK, KC_PAUS, KC_UP, _______, KC_CLR, + _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_MPLY, KC_MPRV, KC_MNXT, RGB_VAD, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, KC_END, KC_PGDN, KC_DOWN, _______, _______, + _______, _______, _______, _______, _______ + ) }; diff --git a/keyboards/1upkeyboards/1up60hte/keymaps/via/keymap.c b/keyboards/1upkeyboards/1up60hte/keymaps/via/keymap.c index ecd5a9040c40..5ecea3759748 100644 --- a/keyboards/1upkeyboards/1up60hte/keymaps/via/keymap.c +++ b/keyboards/1upkeyboards/1up60hte/keymaps/via/keymap.c @@ -17,31 +17,35 @@ along with this program. If not, see . #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_tsangan( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, - KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), - KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, KC_RCTL), + [0] = LAYOUT_60_tsangan_hhkb( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, KC_RCTL + ), - [1] = LAYOUT_tsangan( - RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, - KC_CAPS, BL_TOGG, BL_DEC, BL_INC, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_CLR, - KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_MPLY, KC_MPRV, KC_MNXT, RGB_VAD, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, - KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [1] = LAYOUT_60_tsangan_hhkb( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, + KC_CAPS, BL_TOGG, BL_DEC, BL_INC, BL_STEP, _______, _______, _______, _______, KC_SLCK, KC_PAUS, KC_UP, _______, KC_CLR, + _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_MPLY, KC_MPRV, KC_MNXT, RGB_VAD, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, KC_END, KC_PGDN, KC_DOWN, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ), - [2] = LAYOUT_tsangan( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [2] = LAYOUT_60_tsangan_hhkb( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ), - [3] = LAYOUT_tsangan( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [3] = LAYOUT_60_tsangan_hhkb( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ), }; diff --git a/keyboards/1upkeyboards/1up60hte/readme.md b/keyboards/1upkeyboards/1up60hte/readme.md index b49773fd7785..d62aed3990e0 100644 --- a/keyboards/1upkeyboards/1up60hte/readme.md +++ b/keyboards/1upkeyboards/1up60hte/readme.md @@ -1,17 +1,19 @@ - # 1up60hte (Hot Swap Tsangan Edition) ![1up60hte](https://www.1upkeyboards.com/wp-content/uploads/2019/01/PCB-60-HS-TSA-both.jpg) - A 60% PCB with USB C, RGB underglow, backlighting, hotswappable switches, and a Tsangan layout. -Keyboard Maintainer: [Bubnick](https://github.com/bubnick) -Hardware Supported: 1up60hte 60% PCB -Hardware Availability: [1upkeyboards.com](https://www.1upkeyboards.com/shop/controllers/1up-rgb-60-pcb-hte/) +* Keyboard Maintainer: [Bubnick](https://github.com/bubnick) +* Hardware Supported: 1up60hte 60% PCB +* Hardware Availability: [1upkeyboards.com](https://www.1upkeyboards.com/shop/controllers/1up-rgb-60-pcb-hte/) Make example for this keyboard (after setting up your build environment): make 1upkeyboards/1up60hte:default +Flashing example for this keyboard: + + make 1upkeyboards/1up60hte:default:flash + See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/1upkeyboards/1up60hte/rules.mk b/keyboards/1upkeyboards/1up60hte/rules.mk index 048407bed27f..f035c02c6c77 100644 --- a/keyboards/1upkeyboards/1up60hte/rules.mk +++ b/keyboards/1upkeyboards/1up60hte/rules.mk @@ -2,28 +2,22 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options -# comment out to disable the options. +# change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -SLEEP_LED_ENABLE = 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 = yes # Enable keyboard backlight functionality -AUDIO_ENABLE = no -RGBLIGHT_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 +# 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 = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + LTO_ENABLE = yes -LAYOUTS = 60_hhkb +LAYOUTS = 60_hhkb 60_tsangan_hhkb diff --git a/keyboards/1upkeyboards/1up60rgb/info.json b/keyboards/1upkeyboards/1up60rgb/info.json index 9f6ed62189ff..701088c46184 100644 --- a/keyboards/1upkeyboards/1up60rgb/info.json +++ b/keyboards/1upkeyboards/1up60rgb/info.json @@ -2,8 +2,6 @@ "keyboard_name": "1up60rgb", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/1upkeyboards/1up60rgb/keymaps/default/keymap.c b/keyboards/1upkeyboards/1up60rgb/keymaps/default/keymap.c index 435a631815b8..15b7c9faa71b 100644 --- a/keyboards/1upkeyboards/1up60rgb/keymaps/default/keymap.c +++ b/keyboards/1upkeyboards/1up60rgb/keymaps/default/keymap.c @@ -18,46 +18,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -void matrix_init_user(void) { -} - -void matrix_scan_user(void) { -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - void led_set_user(uint8_t usb_led) { - - if (usb_led & (1 << USB_LED_NUM_LOCK)) { - - } else { - - } - if (usb_led & (1 << USB_LED_CAPS_LOCK)) { - DDRB |= (1 << 2); PORTB &= ~(1 << 2); - } else { - DDRB &= ~(1 << 2); PORTB &= ~(1 << 2); - } - - if (usb_led & (1 << USB_LED_SCROLL_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_COMPOSE)) { - + setPinOutput(B2); + writePinLow(B2); } else { - + setPinInput(B2); + writePinLow(B2); } - - if (usb_led & (1 << USB_LED_KANA)) { - - } else { - - } - } diff --git a/keyboards/1upkeyboards/1up60rgb/keymaps/iso/keymap.c b/keyboards/1upkeyboards/1up60rgb/keymaps/iso/keymap.c index 39edd00ff5e2..b67de0b0c244 100644 --- a/keyboards/1upkeyboards/1up60rgb/keymaps/iso/keymap.c +++ b/keyboards/1upkeyboards/1up60rgb/keymaps/iso/keymap.c @@ -18,46 +18,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -void matrix_init_user(void) { -} - -void matrix_scan_user(void) { -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - void led_set_user(uint8_t usb_led) { - - if (usb_led & (1 << USB_LED_NUM_LOCK)) { - - } else { - - } - if (usb_led & (1 << USB_LED_CAPS_LOCK)) { - DDRB |= (1 << 2); PORTB &= ~(1 << 2); - } else { - DDRB &= ~(1 << 2); PORTB &= ~(1 << 2); - } - - if (usb_led & (1 << USB_LED_SCROLL_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_COMPOSE)) { - + setPinOutput(B2); + writePinLow(B2); } else { - + setPinInput(B2); + writePinLow(B2); } - - if (usb_led & (1 << USB_LED_KANA)) { - - } else { - - } - } diff --git a/keyboards/1upkeyboards/1up60rgb/keymaps/raffle/keymap.c b/keyboards/1upkeyboards/1up60rgb/keymaps/raffle/keymap.c index cba9a205c561..c4d82a476626 100644 --- a/keyboards/1upkeyboards/1up60rgb/keymaps/raffle/keymap.c +++ b/keyboards/1upkeyboards/1up60rgb/keymaps/raffle/keymap.c @@ -67,7 +67,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //***************************** Function bodies *****************************// // enable tri-layer state for _raise + _rgb = _adjust -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _raise, _rgb, _adjust); } diff --git a/keyboards/1upkeyboards/1up60rgb/keymaps/tsangan/keymap.c b/keyboards/1upkeyboards/1up60rgb/keymaps/tsangan/keymap.c index 0b0b51d59575..bd7e96aad93f 100644 --- a/keyboards/1upkeyboards/1up60rgb/keymaps/tsangan/keymap.c +++ b/keyboards/1upkeyboards/1up60rgb/keymaps/tsangan/keymap.c @@ -18,46 +18,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -void matrix_init_user(void) { -} - -void matrix_scan_user(void) { -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - void led_set_user(uint8_t usb_led) { - - if (usb_led & (1 << USB_LED_NUM_LOCK)) { - - } else { - - } - if (usb_led & (1 << USB_LED_CAPS_LOCK)) { - DDRB |= (1 << 2); PORTB &= ~(1 << 2); - } else { - DDRB &= ~(1 << 2); PORTB &= ~(1 << 2); - } - - if (usb_led & (1 << USB_LED_SCROLL_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_COMPOSE)) { - + setPinOutput(B2); + writePinLow(B2); } else { - + setPinInput(B2); + writePinLow(B2); } - - if (usb_led & (1 << USB_LED_KANA)) { - - } else { - - } - } diff --git a/keyboards/1upkeyboards/1up60rgb/rules.mk b/keyboards/1upkeyboards/1up60rgb/rules.mk index ea5308b96058..d7ac2bd40a9e 100644 --- a/keyboards/1upkeyboards/1up60rgb/rules.mk +++ b/keyboards/1upkeyboards/1up60rgb/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -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 = yes # Enable keyboard backlight functionality AUDIO_ENABLE = no diff --git a/keyboards/1upkeyboards/super16/config.h b/keyboards/1upkeyboards/super16/config.h index 4d12f2edc2c7..c0c0a7891b71 100644 --- a/keyboards/1upkeyboards/super16/config.h +++ b/keyboards/1upkeyboards/super16/config.h @@ -83,6 +83,54 @@ along with this program. If not, see . # elif defined RGB_MATRIX_ENABLE # define RGB_MATRIX_KEYPRESSES // reacts to keypresses # define RGB_MATRIX_FRAMEBUFFER_EFFECTS // reacts to keyreleases (instead of keypresses) +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH # endif #endif @@ -125,58 +173,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -195,26 +191,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/1upkeyboards/super16/info.json b/keyboards/1upkeyboards/super16/info.json index 10f81f4d08b5..261fde20a630 100644 --- a/keyboards/1upkeyboards/super16/info.json +++ b/keyboards/1upkeyboards/super16/info.json @@ -2,8 +2,6 @@ "keyboard_name": "super16", "url": "", "maintainer": "qmk", - "width": 4, - "height": 4, "layouts": { "LAYOUT_ortho_4x4": { "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}] diff --git a/keyboards/1upkeyboards/super16/keymaps/default/keymap.c b/keyboards/1upkeyboards/super16/keymaps/default/keymap.c index 47889abae574..4414a658c5d8 100644 --- a/keyboards/1upkeyboards/super16/keymaps/default/keymap.c +++ b/keyboards/1upkeyboards/super16/keymaps/default/keymap.c @@ -23,19 +23,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { RGB_MOD, KC_1, KC_U, KC_P ), }; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/1upkeyboards/super16/rules.mk b/keyboards/1upkeyboards/super16/rules.mk index 209fdeb19297..49d6d0df9020 100644 --- a/keyboards/1upkeyboards/super16/rules.mk +++ b/keyboards/1upkeyboards/super16/rules.mk @@ -2,34 +2,22 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow RGB_MATRIX_ENABLE = yes RGB_MATRIX_DRIVER = WS2812 -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = ortho_4x4 numpad_4x4 diff --git a/keyboards/1upkeyboards/sweet16/info.json b/keyboards/1upkeyboards/sweet16/info.json index c292f0364e18..7755c8efb0ac 100644 --- a/keyboards/1upkeyboards/sweet16/info.json +++ b/keyboards/1upkeyboards/sweet16/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Sweet 16", "url": "", "maintainer": "skullydazed", - "width": 4, - "height": 4, "layouts": { "LAYOUT_ortho_4x4": { "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}] diff --git a/keyboards/1upkeyboards/sweet16/keymaps/ridingintraffic/keymap.c b/keyboards/1upkeyboards/sweet16/keymaps/ridingintraffic/keymap.c index 7e6d131307ca..6b7b36cbb29d 100644 --- a/keyboards/1upkeyboards/sweet16/keymaps/ridingintraffic/keymap.c +++ b/keyboards/1upkeyboards/sweet16/keymaps/ridingintraffic/keymap.c @@ -39,17 +39,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+-------+-------+--------| * |SHRUG |DISFACE| HRTFAC| HAPPYF | * |------+-------+-------+--------| - * | ENTER| |LEDCNTR| tapland| + * | ENTER| |LEDCNTR| tapland| * `-------------------------------' */ //purple [_EMOJI] = LAYOUT_ortho_4x4( - TFLIP, TFLIP2, KC_NO, FU , - CLOUD, KC_NO, KC_NO, CMDCLEAR, - SHRUG, DISFACE, HEARTFACE, HAPPYFACE, + TFLIP, TFLIP2, KC_NO, FU , + CLOUD, KC_NO, KC_NO, CMDCLEAR, + SHRUG, DISFACE, HEARTFACE, HAPPYFACE, KC_ENT, RGB_TOG, MO(_LEDCNTL), MO(_TAPLAND) ), - + /* TapLand // * ,-------------------------------. * | str1 | str2 | str3 | str4 | @@ -58,14 +58,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+-------+-------+--------| * | | | | | * |------+-------+-------+--------| - * | | | | | + * | | | | | * `-------------------------------' */ //blue [_TAPLAND] = LAYOUT_ortho_4x4( - TD(TD_EXAMPLE1), TD(TD_EXAMPLE2), TD(TD_EXAMPLE3), TD(TD_EXAMPLE4), - KC_NO, KC_NO, KC_NO, KC_NO, - KC_NO, KC_NO, KC_NO, KC_NO, + TD(TD_EXAMPLE1), TD(TD_EXAMPLE2), TD(TD_EXAMPLE3), TD(TD_EXAMPLE4), + KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO ), /* LEDControl Pad @@ -76,14 +76,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+-------+-------+--------| * |kngrdr| Val- | Sat- | HUE- | * |------+-------+-------+--------| - * | swirl| PLAIN | | ON/OFF | + * | swirl| PLAIN | | ON/OFF | * `-------------------------------' */ //blue [_LEDCNTL] = LAYOUT_ortho_4x4( - RGB_M_SN, RGB_M_B, RGB_M_R, RGB_M_G, - RGB_M_X, RGB_VAI, RGB_SAI, RGB_HUI, - RGB_M_K, RGB_VAD, RGB_SAD, RGB_HUD, + RGB_M_SN, RGB_M_B, RGB_M_R, RGB_M_G, + RGB_M_X, RGB_VAI, RGB_SAI, RGB_HUI, + RGB_M_K, RGB_VAD, RGB_SAD, RGB_HUD, RGB_M_SW, RGB_M_P, KC_NO, RGB_TOG ), }; @@ -102,34 +102,34 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { SEND_STRING("t(-_-t)"); } return false; - break; + break; case HAPPYFACE: if(record->event.pressed){ send_unicode_string("ʘ‿ʘ"); } return false; - break; + break; case CMDCLEAR: if (record->event.pressed) { register_code(KC_LGUI); - tap_code(KC_A); + tap_code(KC_A); unregister_code(KC_LGUI); - tap_code(KC_DEL); + tap_code(KC_DEL); } return false; - break; + break; case SHRUG: if (record->event.pressed) { send_unicode_string("¯\\_(ツ)_/¯"); } - return false; + return false; break; case HEARTFACE: if(record->event.pressed){ send_unicode_string("♥‿♥"); } return false; - break; + break; case DISFACE: if(record->event.pressed){ send_unicode_string("ಠ_ಠ"); @@ -148,7 +148,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; break; - } + } } return true; } @@ -195,7 +195,7 @@ void matrix_scan_user(void) { rgblight_setrgb (16, 0, 16); } } -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { switch (biton32(state)) { case _TAPLAND: rgblight_setrgb(0, 16, 0); //green diff --git a/keyboards/1upkeyboards/sweet16/keymaps/switchtester/rules.mk b/keyboards/1upkeyboards/sweet16/keymaps/switchtester/rules.mk index c0f2d0182d6b..76d8b3afc1c1 100644 --- a/keyboards/1upkeyboards/sweet16/keymaps/switchtester/rules.mk +++ b/keyboards/1upkeyboards/sweet16/keymaps/switchtester/rules.mk @@ -1,7 +1,7 @@ # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = yes # Console for debug(+400) diff --git a/keyboards/1upkeyboards/sweet16/rules.mk b/keyboards/1upkeyboards/sweet16/rules.mk index 22f9c36e64e0..1710224e988b 100644 --- a/keyboards/1upkeyboards/sweet16/rules.mk +++ b/keyboards/1upkeyboards/sweet16/rules.mk @@ -1,12 +1,11 @@ # Build Options # DEFAULT_FOLDER = 1upkeyboards/sweet16/v1 -#BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = 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 AUDIO_ENABLE = no RGBLIGHT_ENABLE = no diff --git a/keyboards/1upkeyboards/sweet16/v1/rules.mk b/keyboards/1upkeyboards/sweet16/v1/rules.mk index 4c4280cdd4cf..817f02aa2357 100644 --- a/keyboards/1upkeyboards/sweet16/v1/rules.mk +++ b/keyboards/1upkeyboards/sweet16/v1/rules.mk @@ -2,13 +2,6 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina RGBLIGHT_ENABLE = yes diff --git a/keyboards/1upkeyboards/sweet16/v2/promicro/rules.mk b/keyboards/1upkeyboards/sweet16/v2/promicro/rules.mk index 16510f76743c..a8249511bcef 100644 --- a/keyboards/1upkeyboards/sweet16/v2/promicro/rules.mk +++ b/keyboards/1upkeyboards/sweet16/v2/promicro/rules.mk @@ -2,13 +2,6 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina ## Features diff --git a/keyboards/2key2crawl/info.json b/keyboards/2key2crawl/info.json index 18f58daf285d..cc48e811382b 100644 --- a/keyboards/2key2crawl/info.json +++ b/keyboards/2key2crawl/info.json @@ -2,8 +2,6 @@ "keyboard_name": "2Key2CrawlPad", "url": "", "maintainer": "qmk", - "width": 6.5, - "height": 2, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/2key2crawl/rules.mk b/keyboards/2key2crawl/rules.mk index e6ef0a288fe0..463c780e7a85 100644 --- a/keyboards/2key2crawl/rules.mk +++ b/keyboards/2key2crawl/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u2 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 = no # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # [Crawlpad] Custom backlighting code is used, so this should not be enabled AUDIO_ENABLE = no # [Crawlpad] This can be enabled if a speaker is connected to the expansion port. Not compatible with RGBLIGHT below diff --git a/keyboards/30wer/info.json b/keyboards/30wer/info.json index 0fbbeb47ddf1..18ea404fd22b 100644 --- a/keyboards/30wer/info.json +++ b/keyboards/30wer/info.json @@ -2,8 +2,6 @@ "keyboard_name": "30wer", "url": "", "maintainer": "qmk", - "width": 13.25, - "height": 3, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/30wer/rules.mk b/keyboards/30wer/rules.mk index 9a80d5a18af7..22b187f4064c 100644 --- a/keyboards/30wer/rules.mk +++ b/keyboards/30wer/rules.mk @@ -2,28 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # 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 -MIDI_ENABLE = no # MIDI controls AUDIO_ENABLE = no # Audio output -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. diff --git a/keyboards/3keyecosystem/2key2/2key2.c b/keyboards/3keyecosystem/2key2/2key2.c new file mode 100644 index 000000000000..17e87b412eae --- /dev/null +++ b/keyboards/3keyecosystem/2key2/2key2.c @@ -0,0 +1,35 @@ +/* +Copyright 2021 John Mueller + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "2key2.h" + +// RGB Matrix configuration +// based on https://docs.qmk.fm/#/feature_rgb_matrix?id=common-configuration + +#ifdef RGB_MATRIX_ENABLE +led_config_t g_led_config = { { + // Key Matrix to LED Index + { 0, 1 } +}, { + // LED Index to Physical Position + // Using range { 0..224, 0..64 } + { 0, 32 }, { 224, 32 } +}, { + // LED Index to Flag + // https://docs.qmk.fm/#/feature_rgb_matrix?id=flags + LED_FLAG_ALL, LED_FLAG_ALL +} }; +#endif diff --git a/keyboards/3keyecosystem/2key2/2key2.h b/keyboards/3keyecosystem/2key2/2key2.h new file mode 100644 index 000000000000..05af99101a47 --- /dev/null +++ b/keyboards/3keyecosystem/2key2/2key2.h @@ -0,0 +1,33 @@ +/* +Copyright 2021 John Mueller + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + k00, k01 \ +) { \ + { k00, k01 } \ +} diff --git a/keyboards/3keyecosystem/2key2/config.h b/keyboards/3keyecosystem/2key2/config.h new file mode 100644 index 000000000000..16cbd00a429d --- /dev/null +++ b/keyboards/3keyecosystem/2key2/config.h @@ -0,0 +1,104 @@ +/* +Copyright 2021 John Mueller + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x1209 +#define PRODUCT_ID 0x3304 +#define DEVICE_VER 0x0001 +#define MANUFACTURER 3-Key-Ecosystem +#define PRODUCT 2key2 + +/* key matrix size */ +#define MATRIX_ROWS 1 +#define MATRIX_COLS 2 + +/* Keyboard Matrix Assignments */ +#define MATRIX_ROW_PINS { F6 } +#define MATRIX_COL_PINS { F4, D7 } +#define UNUSED_PINS + +// LED on kbmount base board is on B7 +#define LED_CAPS_LOCK_PIN B7 // onboard LED for testing + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* RGB matrix key backlighting */ +#define RGB_DI_PIN B2 +#define DRIVER_LED_TOTAL 2 +#define RGB_MATRIX_KEYPRESSES +#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_REACTIVE +#define RGB_MATRIX_STARTUP_HUE 90 +#define RGB_MATRIX_STARTUP_SPD 20 +#define RGB_MATRIX_STARTUP_VAL 128 +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define RGB_DISABLE_WHEN_USB_SUSPENDED + +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_FRACTAL +#define ENABLE_RGB_MATRIX_PIXEL_RAIN + +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN + +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/3keyecosystem/2key2/info.json b/keyboards/3keyecosystem/2key2/info.json new file mode 100644 index 000000000000..49caf91b5a3a --- /dev/null +++ b/keyboards/3keyecosystem/2key2/info.json @@ -0,0 +1,13 @@ +{ + "keyboard_name": "3-Key-Ecosystem 2key2: 2x1 macro-keyboard", + "url": "https://github.com/softplus/3keyecosystem/tree/main/2key2", + "maintainer": "softplus", + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "k00", "x": 0, "y": 0}, + {"label": "k01", "x": 1, "y": 0} + ] + } + } +} diff --git a/keyboards/3keyecosystem/2key2/keymaps/default/keymap.c b/keyboards/3keyecosystem/2key2/keymaps/default/keymap.c new file mode 100644 index 000000000000..5c1671fb932e --- /dev/null +++ b/keyboards/3keyecosystem/2key2/keymaps/default/keymap.c @@ -0,0 +1,40 @@ +/* Copyright 2021 John Mueller + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT( + KC_A, KC_B + ), + + [1] = LAYOUT( + KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT( + KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT( + KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/3keyecosystem/2key2/keymaps/via/keymap.c b/keyboards/3keyecosystem/2key2/keymaps/via/keymap.c new file mode 100644 index 000000000000..7400a9c622e3 --- /dev/null +++ b/keyboards/3keyecosystem/2key2/keymaps/via/keymap.c @@ -0,0 +1,40 @@ +/* Copyright 2021 John Mueller + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT( + KC_A, KC_B + ), + + [1] = LAYOUT( + KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT( + KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT( + KC_TRNS, KC_TRNS + ) + }; diff --git a/keyboards/bm68rgb/keymaps/via/rules.mk b/keyboards/3keyecosystem/2key2/keymaps/via/rules.mk similarity index 100% rename from keyboards/bm68rgb/keymaps/via/rules.mk rename to keyboards/3keyecosystem/2key2/keymaps/via/rules.mk diff --git a/keyboards/3keyecosystem/2key2/readme.md b/keyboards/3keyecosystem/2key2/readme.md new file mode 100644 index 000000000000..3befa292ff40 --- /dev/null +++ b/keyboards/3keyecosystem/2key2/readme.md @@ -0,0 +1,24 @@ +# 3-Key-Ecosystem - 2key2 + +![keyboard](https://i.imgur.com/IJ1Zyc7.jpeg) + +This is a 2x1 macro keyboard with WS2812B key lighting. +It's designed for a modular keyboard mount using an ATmega32U4. + +* Keyboard Maintainer: [softplus](https://github.com/softplus) +* Hardware Supported: [3keyecosystem-2key2](https://github.com/softplus/3keyecosystem/tree/main/2key2) +* Hardware Availability: Open-Source files at above link + +Make example for this keyboard (after setting up your build environment): + + make 3keyecosystem/2key2:default + +Flashing example for this keyboard: + + make 3keyecosystem/2key2:default:flash + +## Bootloader + +To Enter the bootloader, click reset button on the main board. + +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/3keyecosystem/2key2/rules.mk b/keyboards/3keyecosystem/2key2/rules.mk new file mode 100644 index 000000000000..90891bfa0e5d --- /dev/null +++ b/keyboards/3keyecosystem/2key2/rules.mk @@ -0,0 +1,21 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# 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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +RGB_MATRIX_ENABLE = yes # Enable RGB matrix +RGB_MATRIX_DRIVER = WS2812 # Select WS2812 driver for RGB matrix +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/3w6/info.json b/keyboards/3w6/info.json new file mode 100644 index 000000000000..ab463bc60cdd --- /dev/null +++ b/keyboards/3w6/info.json @@ -0,0 +1,54 @@ +{ + "keyboard_name": "3w6", + "url": "https://github.com/weteor/3W6/", + "maintainer": "weteor", + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "k00", "x": 0, "y": 0.8}, + {"label": "k01", "x": 1, "y": 0.2}, + {"label": "k02", "x": 2, "y": 0}, + {"label": "k03", "x": 3, "y": 0.2}, + {"label": "k04", "x": 4, "y": 0.4}, + + {"label": "k05", "x": 8, "y": 0.4}, + {"label": "k06", "x": 9, "y": 0.2}, + {"label": "k07", "x": 10, "y": 0}, + {"label": "k08", "x": 11, "y": 0.2}, + {"label": "k09", "x": 12, "y": 0.8}, + + {"label": "k10", "x": 0, "y": 1.8}, + {"label": "k11", "x": 1, "y": 1.2}, + {"label": "k12", "x": 2, "y": 1}, + {"label": "k13", "x": 3, "y": 1.2}, + {"label": "k14", "x": 4, "y": 1.4}, + + {"label": "k15", "x": 8, "y": 1.4}, + {"label": "k16", "x": 9, "y": 1.2}, + {"label": "k17", "x": 10, "y": 1}, + {"label": "k18", "x": 11, "y": 1.2}, + {"label": "k19", "x": 12, "y": 1.8}, + + {"label": "k20", "x": 0, "y": 2.8}, + {"label": "k21", "x": 1, "y": 2.2}, + {"label": "k22", "x": 2, "y": 2}, + {"label": "k23", "x": 3, "y": 2.2}, + {"label": "k24", "x": 4, "y": 2.4}, + + {"label": "k25", "x": 8, "y": 2.4}, + {"label": "k26", "x": 9, "y": 2.2}, + {"label": "k27", "x": 10, "y": 2}, + {"label": "k28", "x": 11, "y": 2.2}, + {"label": "k29", "x": 12, "y": 2.8}, + + {"label": "k32", "x": 3.2, "y": 3.6}, + {"label": "k33", "x": 4.2, "y": 3.6}, + {"label": "k34", "x": 5.2, "y": 3.8}, + + {"label": "k35", "x": 6.8, "y": 3.8}, + {"label": "k36", "x": 7.8, "y": 3.6}, + {"label": "k37", "x": 8.8, "y": 3.6} + ] + } + } +} diff --git a/keyboards/3w6/keymaps/default/keymap.c b/keyboards/3w6/keymaps/default/keymap.c new file mode 100644 index 000000000000..029173b6745a --- /dev/null +++ b/keyboards/3w6/keymaps/default/keymap.c @@ -0,0 +1,69 @@ +/* Copyright 2021 weteor + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layers +{ + _ALPHA_QWERTY = 0, + _ALPHA_COLEMAK, + _SYM, + _NAV, + _NUM, + _CFG, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + + [_ALPHA_QWERTY] = LAYOUT( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, + LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), + + LCTL_T(KC_ESC), LT(_NUM,KC_SPC), LT(_NAV, KC_TAB), LT(_SYM, KC_BSPC), KC_ENT, LALT_T(KC_DEL) + ), + [_ALPHA_COLEMAK] = LAYOUT( + KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, + KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, + LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SCLN), + LCTL_T(KC_ENT), LT(_NUM,KC_SPC), LT(_NAV, KC_TAB), LT(_SYM, KC_BSPC), KC_ENT, LALT_T(KC_DEL) + ), + [_SYM] = LAYOUT( + KC_GRV , KC_CIRC, KC_AT, KC_DLR, KC_TILD, KC_AMPR, KC_EXLM, KC_PIPE, KC_UNDS, KC_HASH, + KC_SLSH, KC_LBRC, KC_LCBR, KC_LPRN, KC_EQL, KC_ASTR, KC_RPRN, KC_RCBR, KC_RBRC, KC_BSLS, + _______, KC_QUES, KC_PLUS, KC_PERC, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, XXXXXXX, _______, + XXXXXXX, MO(_CFG), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + ), + [_NAV] = LAYOUT( + XXXXXXX, KC_VOLD, KC_MUTE, KC_VOLU, XXXXXXX, XXXXXXX, KC_PGDN, KC_UP, KC_PGUP, KC_DEL, + KC_MPRV, KC_MPLY, KC_MSTP, KC_MNXT, XXXXXXX, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MO(_CFG), XXXXXXX + ), + [_NUM] = LAYOUT( + XXXXXXX, KC_F9, KC_F10, KC_F11, KC_F12, KC_PPLS, KC_P7, KC_P8, KC_P9, KC_PSLS, + XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8, KC_P0, KC_P4, KC_P5, KC_P6, KC_PDOT, + XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_PMNS, KC_P1, KC_P2, KC_P3, KC_PAST, + XXXXXXX, XXXXXXX, XXXXXXX, KC_PEQL, KC_PENT, XXXXXXX + ), + [_CFG] = LAYOUT( + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,DF(_ALPHA_QWERTY), DF(_ALPHA_COLEMAK), + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + ), +}; diff --git a/keyboards/3w6/keymaps/helltm/keymap.c b/keyboards/3w6/keymaps/helltm/keymap.c new file mode 100644 index 000000000000..507085081fd8 --- /dev/null +++ b/keyboards/3w6/keymaps/helltm/keymap.c @@ -0,0 +1,160 @@ +/* Copyright 2021 HellSingCoder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layers +{ + _ALPHA_QWERTY = 0, + _SYM, + _NAV, + _NUM, +}; + +enum custom_keycodes { + KC_THUMB_SWAP, +}; + +/* Space Enter swap */ +bool swap_space_enter = false; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* + * QWERTY + * _____ _____ + * .-----| E |-----._____ _____.-----| I |-----. + * .-----| W |_____| R | T | | Y | U |_____| O |-----. + * | Q |-----| D |-----|_____| |_____|-----| K |-----| P | + * |-----| S |_____| F | G | | H | J |_____| L |-----| + * | A |-----| C |-----|_____| |_____|-----| , < |-----| ; : | + * |-----| X |_____| V | B | | N | M |_____| . > |-----| + * | Z |-----' '-----|_____| |_____|-----' '-----| / ? | + * '-----' .-----. _____ .-.._ _..-. _____ .-----. '-----' + * SHIFT | WIN ||CTRL | / / \ \ | BSp || Del | SHIFT + * '-----':_____|/ ENT / \ SPC \|_____:'-----' + * NUM '--.._/ \_..--' NAV SYM + */ + [_ALPHA_QWERTY] = LAYOUT( + KC_Q, KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , + KC_A, KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN , + LSFT_T(KC_Z), KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , RSFT_T(KC_SLSH), + LT(_NUM, KC_LGUI), KC_LCTRL, KC_ENT, KC_SPC, LT(_NAV, KC_BSPC), LT(_SYM, KC_DEL) + ), + + /* + * Symbols + * _____ _____ + * .-----| # |-----._____ _____.-----| * |-----. + * .-----| @ |_____| $ | % | | ^ | & |_____| ( |-----. + * | ! |-----| |-----|_____| |_____|-----| [ { |-----| ) | + * |-----| |_____| | | | { | } |_____| ] } |-----| + * | ` ~ |-----| |-----|_____| |_____|-----| |-----| ' " | + * |-----| |_____| | | | - _ | = + |_____| | |-----| + * | ~ |-----' '-----|_____| |_____|-----' '-----| \ | | + * '-----' .-----. _____ .-.._ _..-. _____ .-----. '-----' + * SHIFT | ||CTRL | / / \ \ | BSp || | SHIFT + * '-----':_____|/ ENT / \ SPC \|_____:'-----' + * '--.._/ \_..--' + */ + [_SYM] = LAYOUT( + KC_EXLM, KC_AT , KC_HASH, KC_DLR , KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN , + KC_GRV , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_QUOT , + LSFT_T(KC_TILD), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL , XXXXXXX, KC_PIPE, RSFT_T(KC_BSLS), + XXXXXXX, _______, _______, _______, KC_BSPC, XXXXXXX + ), + + /* + * Navigation + * _____ _____ + * .-----|Mute |-----._____ _____.-----| Up |-----. + * .-----|VDown|_____| VUp | | | |PDown|_____| PUp |-----. + * | Esc |-----|Play |-----|_____| |_____|-----|Down |-----| BSp | + * |-----|Prev |_____|Next | | |Home |Left |_____|Right|-----| + * | Tab |-----|Stop |-----|_____| |_____|-----| |-----| ' " | + * |-----| |_____| |Swap | | | |_____| End |-----| + * | CPS |-----' '-----|_____| |_____|-----' '-----| Del | + * '-----' .-----. _____ .-.._ _..-. _____ .-----. '-----' + * SHIFT | ||CTRL | / / \ \ | BSp || | SHIFT + * '-----':_____|/ ENT / \ SPC \|_____:'-----' + * '--.._/ \_..--' + */ + [_NAV] = LAYOUT( + KC_ESC , KC_VOLD, KC_MUTE, KC_VOLU, XXXXXXX , XXXXXXX, KC_PGDN, KC_UP , KC_PGUP, KC_BSPC, + KC_TAB , KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX , KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_QUOT, + LSFT_T(KC_CAPS), XXXXXXX, KC_MSTP, XXXXXXX, KC_THUMB_SWAP, XXXXXXX, XXXXXXX, XXXXXXX, KC_END , RSFT_T(KC_DEL) , + XXXXXXX, _______, _______, _______, KC_BSPC, XXXXXXX + ), + + /* + * Numbers + * _____ _____ + * .-----| 3 |-----._____ _____.-----| 8 |-----. + * .-----| 2 |_____| 4 | 5 | | 6 | 7 |_____| 9 |-----. + * | 1 |-----| F3 |-----|_____| |_____|-----| F8 |-----| 0 | + * |-----| F2 |_____| F4 | F5 | | F6 | F7 |_____| F9 |-----| + * | F1 |-----| Scr |-----|_____| |_____|-----| |-----| F10 | + * |-----| TMg |_____| | | | | |_____| F11 |-----| + * |Shift|-----' '-----|_____| |_____|-----' '-----| F12 | + * '-----' .-----. _____ .-.._ _..-. _____ .-----. '-----' + * | ||CTRL | / / \ \ | BSp || | SHIFT + * '-----':_____|/ ENT / \ SPC \|_____:'-----' + * '--.._/ \_..--' + */ + [_NUM] = LAYOUT( + KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , + KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , + KC_LSFT, LCA(KC_DEL), SWIN(KC_S), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F11 , RSFT_T(KC_F12) , + XXXXXXX, _______, _______, _______, KC_BSPC, XXXXXXX + ), +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + + /* Space Enter swap */ + case KC_THUMB_SWAP: + if (record->event.pressed) { + unregister_code(KC_SPC); + unregister_code(KC_ENT); + swap_space_enter = !swap_space_enter; + } + return false; + break; + + case KC_ENT: + if (swap_space_enter) { + if (record->event.pressed) { + register_code(KC_SPC); + } else { + unregister_code(KC_SPC); + } + return false; + } + break; + case KC_SPC: + if (swap_space_enter) { + if (record->event.pressed) { + register_code(KC_ENT); + } else { + unregister_code(KC_ENT); + } + return false; + } + break; + } + return true; +} diff --git a/keyboards/3w6/keymaps/manna-harbour_miryoku/config.h b/keyboards/3w6/keymaps/manna-harbour_miryoku/config.h new file mode 100644 index 000000000000..fb567ad7d3a4 --- /dev/null +++ b/keyboards/3w6/keymaps/manna-harbour_miryoku/config.h @@ -0,0 +1,32 @@ +/* Copyright 2021 weteor + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*- + +#pragma once + +#define LAYOUT_miryoku( \ + 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, \ + N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ +) \ +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, \ + K32, K33, K34, K35, K36, K37 \ +) diff --git a/keyboards/3w6/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/3w6/keymaps/manna-harbour_miryoku/keymap.c new file mode 100644 index 000000000000..74df5e0fe120 --- /dev/null +++ b/keyboards/3w6/keymaps/manna-harbour_miryoku/keymap.c @@ -0,0 +1,17 @@ +/* Copyright 2021 weteor + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*- diff --git a/keyboards/3w6/readme.md b/keyboards/3w6/readme.md new file mode 100644 index 000000000000..5878376bde09 --- /dev/null +++ b/keyboards/3w6/readme.md @@ -0,0 +1,45 @@ +# 3W6 + +![3W6](https://raw.githubusercontent.com/weteor/3W6/main/images/3w6_rev2_1s.jpg) + +The 3w6 is a low profile, split ortholinear keyboard with 36 keys. + +I needed a keyboard for work and wasn't really satisfied with the available alternatives (namely Corne, Kyria and Ferris), mostly because they are either rather large and/or don't have the spacing I would like. + +The 3w6 is designed to be a simple, realiable, cheap and small keyboard to be taken everywhere. + +There are currently two revisions: +* Rev1: + - onboard microcontroller (ATMega32U4) + - USB-C connector Board <-> PC + - USB-C connectors between both split halfs + - choc spacing (18x17mm) + - aggressive pinky stagger + - support for Choc V1 switches +* Rev2: + - everything Rev1 did + - additional middle plate (2mm) + - support for [Pimoroni Trackball](https://shop.pimoroni.com/products/trackball-breakout) instead of outer thumb switch on right half, needs midplate + - mounting holes for [Tenting Puck](https://splitkb.com/collections/keyboard-parts/products/tenting-puck), only usable without mid or switchplate + +--- + +* Keyboard Maintainer: [weteor](https://github.com/weteor) +* Hardware Supported: + * 3w6 rev1 + * 3w6 rev2 (with Pimoroni support) +* Hardware Availability: + * make one yourself: [Design and Productionfiles](https://github.com/weteor/3w6) + * maintainer is selling kits when available +--- +To reach the bootloader, connect the board to the PC and push the reset button on left half. + +Make examples for this keyboard (after setting up your build environment): + + make 3w6/rev1:default + make 3w6/rev2:default + make 3w6/rev2:default_pimoroni + + --- + +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/3w6/rev1/config.h b/keyboards/3w6/rev1/config.h new file mode 100644 index 000000000000..1f0bab97fa12 --- /dev/null +++ b/keyboards/3w6/rev1/config.h @@ -0,0 +1,63 @@ +/* +Copyright 2021 weteor + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x4658 +#define DEVICE_VER 0x0001 +#define MANUFACTURER weteor +#define PRODUCT 3w6 + +/* key matrix size */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 10 + +#define MATRIX_ROWS_PER_SIDE (MATRIX_ROWS / 2) +#define MATRIX_COLS_PER_SIDE (MATRIX_COLS / 2) + +/* + * 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_L { B0, B1, B2, B4} +#define MATRIX_COL_PINS_L { B3, E6, F7, B6, B5 } +#define UNUSED_PINS_L { B7, C6, C7, D2, D3, D4, D5, D6, D7, F0, F1, F4, F5, F6 } + +#define MATRIX_ROW_PINS_R { P10, P11, P12, P05 } +#define MATRIX_COL_PINS_R { P06, P13, P14, P01, P00 } +#define UNUSED_PINS_R { P02, P03, P04, P07, P15, P16, P17 } + + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + diff --git a/keyboards/3w6/rev1/matrix.c b/keyboards/3w6/rev1/matrix.c new file mode 100644 index 000000000000..ae2f96bfa168 --- /dev/null +++ b/keyboards/3w6/rev1/matrix.c @@ -0,0 +1,258 @@ +/* +Copyright 2013 Oleg Kostyuk + 2020 Pierre Chevalier + 2021 weteor + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +/* + * This code was heavily inspired by the ergodox_ez keymap, and modernized + * to take advantage of the quantum.h microcontroller agnostics gpio control + * abstractions and use the macros defined in config.h for the wiring as opposed + * to repeating that information all over the place. + */ + +#include QMK_KEYBOARD_H +#include "i2c_master.h" + +extern i2c_status_t tca9555_status; +#define I2C_TIMEOUT 1000 + +// I2C address: +// All address pins of the tca9555 are connected to the ground +// | 0 | 1 | 0 | 0 | A2 | A1 | A0 | +// | 0 | 1 | 0 | 0 | 0 | 0 | 0 | +#define I2C_ADDR (0b0100000 << 1) + +// Register addresses +#define IODIRA 0x06 // i/o direction register +#define IODIRB 0x07 +#define IREGP0 0x00 // GPIO pull-up resistor register +#define IREGP1 0x01 +#define OREGP0 0x02 // general purpose i/o port register (write modifies OLAT) +#define OREGP1 0x03 + +bool i2c_initialized = 0; +i2c_status_t tca9555_status = I2C_ADDR; + +uint8_t init_tca9555(void) { + print("starting init"); + tca9555_status = I2C_ADDR; + + // I2C subsystem + if (i2c_initialized == 0) { + i2c_init(); // on pins D(1,0) + i2c_initialized = true; + wait_ms(I2C_TIMEOUT); + } + + // set pin direction + // - unused : input : 1 + // - input : input : 1 + // - driving : output : 0 + uint8_t conf[2] = { + // This means: write on pin 5 of port 0, read on rest + 0b11011111, + // This means: we will write on pins 0 to 2 on port 1. read rest + 0b11111000, + }; + tca9555_status = i2c_writeReg(I2C_ADDR, IODIRA, conf, 2, I2C_TIMEOUT); + + return tca9555_status; +} + +/* matrix state(1:on, 0:off) */ +static matrix_row_t matrix[MATRIX_ROWS]; // debounced values + +static matrix_row_t read_cols(uint8_t row); +static void init_cols(void); +static void unselect_rows(void); +static void select_row(uint8_t row); + +static uint8_t tca9555_reset_loop; + +void matrix_init_custom(void) { + // initialize row and col + + tca9555_status = init_tca9555(); + + unselect_rows(); + init_cols(); + + // initialize matrix state: all keys off + for (uint8_t i = 0; i < MATRIX_ROWS; i++) { + matrix[i] = 0; + } +} + +void matrix_power_up(void) { + tca9555_status = init_tca9555(); + + unselect_rows(); + init_cols(); + + // initialize matrix state: all keys off + for (uint8_t i = 0; i < MATRIX_ROWS; i++) { + matrix[i] = 0; + } +} + +// Reads and stores a row, returning +// whether a change occurred. +static inline bool store_matrix_row(matrix_row_t current_matrix[], uint8_t index) { + matrix_row_t temp = read_cols(index); + if (current_matrix[index] != temp) { + current_matrix[index] = temp; + return true; + } + return false; +} + +bool matrix_scan_custom(matrix_row_t current_matrix[]) { + if (tca9555_status) { // if there was an error + if (++tca9555_reset_loop == 0) { + // since tca9555_reset_loop is 8 bit - we'll try to reset once in 255 matrix scans + // this will be approx bit more frequent than once per second + dprint("trying to reset tca9555\n"); + tca9555_status = init_tca9555(); + if (tca9555_status) { + dprint("right side not responding\n"); + } else { + dprint("right side attached\n"); + } + } + } + + bool changed = false; + for (uint8_t i = 0; i < MATRIX_ROWS_PER_SIDE; i++) { + // select rows from left and right hands + uint8_t left_index = i; + uint8_t right_index = i + MATRIX_ROWS_PER_SIDE; + select_row(left_index); + select_row(right_index); + + // we don't need a 30us delay anymore, because selecting a + // left-hand row requires more than 30us for i2c. + + changed |= store_matrix_row(current_matrix, left_index); + changed |= store_matrix_row(current_matrix, right_index); + + unselect_rows(); + } + + return changed; +} + +static void init_cols(void) { + // init on tca9555 + // not needed, already done as part of init_tca9555() + + // init on mcu + pin_t matrix_col_pins_mcu[MATRIX_COLS_PER_SIDE] = MATRIX_COL_PINS_L; + for (int pin_index = 0; pin_index < MATRIX_COLS_PER_SIDE; pin_index++) { + pin_t pin = matrix_col_pins_mcu[pin_index]; + setPinInput(pin); + writePinHigh(pin); + } +} + +static matrix_row_t read_cols(uint8_t row) { + if (row < MATRIX_ROWS_PER_SIDE) { + pin_t matrix_col_pins_mcu[MATRIX_COLS_PER_SIDE] = MATRIX_COL_PINS_L; + matrix_row_t current_row_value = 0; + // For each col... + for (uint8_t col_index = 0; col_index < MATRIX_COLS_PER_SIDE; col_index++) { + // Select the col pin to read (active low) + uint8_t pin_state = readPin(matrix_col_pins_mcu[col_index]); + + // Populate the matrix row with the state of the col pin + current_row_value |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index); + } + return current_row_value; + } else { + if (tca9555_status) { // if there was an error + return 0; + } else { + uint8_t data = 0; + uint8_t ports[2] = {0}; + tca9555_status = i2c_readReg(I2C_ADDR, IREGP0, ports, 2, I2C_TIMEOUT); + if (tca9555_status) { // if there was an error + // do nothing + return 0; + } else { + uint8_t port0 = ports[0]; + uint8_t port1 = ports[1]; + + // The initial state was all ones and any depressed key at a given column for the currently selected row will have its bit flipped to zero. + // The return value is a row as represented in the generic matrix code were the rightmost bits represent the lower columns and zeroes represent non-depressed keys while ones represent depressed keys. + // Since the pins are not ordered sequentially, we have to build the correct dataset from the two ports. Refer to the schematic to see where every pin is connected. + data |= ( port0 & 0x01 ); + data |= ( port0 & 0x02 ); + data |= ( port1 & 0x10 ) >> 2; + data |= ( port1 & 0x08 ); + data |= ( port0 & 0x40 ) >> 2; + data = ~(data); + + tca9555_status = I2C_STATUS_SUCCESS; + return data; + } + } + } +} + +static void unselect_rows(void) { + // no need to unselect on tca9555, because the select step sets all + // the other row bits high, and it's not changing to a different + // direction + + // unselect rows on microcontroller + pin_t matrix_row_pins_mcu[MATRIX_ROWS_PER_SIDE] = MATRIX_ROW_PINS_L; + for (int pin_index = 0; pin_index < MATRIX_ROWS_PER_SIDE; pin_index++) { + pin_t pin = matrix_row_pins_mcu[pin_index]; + setPinInput(pin); + writePinLow(pin); + } +} + +static void select_row(uint8_t row) { + uint8_t port0 = 0xff; + uint8_t port1 = 0xff; + + if (row < MATRIX_ROWS_PER_SIDE) { + // select on atmega32u4 + pin_t matrix_row_pins_mcu[MATRIX_ROWS_PER_SIDE] = MATRIX_ROW_PINS_L; + pin_t pin = matrix_row_pins_mcu[row]; + setPinOutput(pin); + writePinLow(pin); + } else { + // select on tca9555 + if (tca9555_status) { // if there was an error + // do nothing + } else { + switch(row) { + case 4: port1 &= ~(1 << 0); break; + case 5: port1 &= ~(1 << 1); break; + case 6: port1 &= ~(1 << 2); break; + case 7: port0 &= ~(1 << 5); break; + default: break; + } + + uint8_t ports[2] = {port0, port1}; + tca9555_status = i2c_writeReg(I2C_ADDR, OREGP0, ports, 2, I2C_TIMEOUT); + // Select the desired row by writing a byte for the entire GPIOB bus where only the bit representing the row we want to select is a zero (write instruction) and every other bit is a one. + // Note that the row - MATRIX_ROWS_PER_SIDE reflects the fact that being on the right hand, the columns are numbered from MATRIX_ROWS_PER_SIDE to MATRIX_ROWS, but the pins we want to write to are indexed from zero up on the GPIOB bus. + } + } +} diff --git a/keyboards/3w6/rev1/readme.md b/keyboards/3w6/rev1/readme.md new file mode 100644 index 000000000000..4d806f92227e --- /dev/null +++ b/keyboards/3w6/rev1/readme.md @@ -0,0 +1,32 @@ +# 3W6 + +![3W6](https://raw.githubusercontent.com/weteor/3W6/main/images/3w6_1s.jpg) +![3W6](https://raw.githubusercontent.com/weteor/3W6/main/images/3w6_3s.jpg) + +The 3w6 is a low profile, split ortholinear keyboard with 36 keys. + +* Rev1: + - onboard microcontroller (ATMega32U4) + - USB-C connector Board <-> PC + - USB-C connectors between both split halfs + - choc spacing (18x17mm) + - aggressive pinky stagger + - support for Choc V1 switches + +--- + +* Keyboard Maintainer: [weteor](https://github.com/weteor) +* Hardware Supported: + * 3w6 rev1 +* Hardware Availability (this is an older version, current revision is rev2): + * make one yourself: [Design and Productionfiles](https://github.com/weteor/3w6) +--- +To reach the bootloader, connect the board to the PC and push the reset button on left half. + +Make examples for this keyboard (after setting up your build environment): + + make 3w6/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/3w6/rev1/rev1.c b/keyboards/3w6/rev1/rev1.c new file mode 100644 index 000000000000..3944ec3b1317 --- /dev/null +++ b/keyboards/3w6/rev1/rev1.c @@ -0,0 +1,17 @@ +/* Copyright 2021 weteor + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "rev1.h" diff --git a/keyboards/3w6/rev1/rev1.h b/keyboards/3w6/rev1/rev1.h new file mode 100644 index 000000000000..ba881ca431ce --- /dev/null +++ b/keyboards/3w6/rev1/rev1.h @@ -0,0 +1,44 @@ +/* Copyright 2021 weteor + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + 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,\ + k32, k33, k34, k35, k36, k37\ +) { \ + { k00, k01, k02, k03, k04 }, \ + { k10, k11, k12, k13, k14 }, \ + { k20, k21, k22, k23, k24 }, \ + { KC_NO, KC_NO, k32, k33, k34 }, \ + \ + { k05, k06, k07, k08, k09 }, \ + { k15, k16, k17, k18, k19 }, \ + { k25, k26, k27, k28, k29 }, \ + { k35, k36, k37, KC_NO, KC_NO }, \ +} diff --git a/keyboards/3w6/rev1/rules.mk b/keyboards/3w6/rev1/rules.mk new file mode 100644 index 000000000000..eb9671441367 --- /dev/null +++ b/keyboards/3w6/rev1/rules.mk @@ -0,0 +1,26 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +UNICODE_ENABLE = yes +CUSTOM_MATRIX = lite +NO_USB_STARTUP_CHECK = yes +LTO_ENABLE = no + +SRC += matrix.c +QUANTUM_LIB_SRC += i2c_master.c diff --git a/keyboards/3w6/rev2/config.h b/keyboards/3w6/rev2/config.h new file mode 100644 index 000000000000..d191360607ea --- /dev/null +++ b/keyboards/3w6/rev2/config.h @@ -0,0 +1,63 @@ +/* +Copyright 2021 weteor + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x4658 +#define DEVICE_VER 0x0002 +#define MANUFACTURER weteor +#define PRODUCT 3w6 + +/* key matrix size */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 10 + +#define MATRIX_ROWS_PER_SIDE (MATRIX_ROWS / 2) +#define MATRIX_COLS_PER_SIDE (MATRIX_COLS / 2) + +/* + * 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_L { B0, B1, B2, B4} +#define MATRIX_COL_PINS_L { B3, E6, F7, B6, B5 } +#define UNUSED_PINS_L { B7, C6, C7, D2, D3, D4, D5, D6, D7, F0, F1, F4, F5, F6 } + +#define MATRIX_ROW_PINS_R { P10, P11, P12, P05 } +#define MATRIX_COL_PINS_R { P06, P13, P14, P01, P00 } +#define UNUSED_PINS_R { P02, P03, P04, P07, P15, P16, P17 } + + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + diff --git a/keyboards/3w6/rev2/keymaps/default_pimoroni/config.h b/keyboards/3w6/rev2/keymaps/default_pimoroni/config.h new file mode 100644 index 000000000000..45c9d5154ee4 --- /dev/null +++ b/keyboards/3w6/rev2/keymaps/default_pimoroni/config.h @@ -0,0 +1,21 @@ +/* Copyright 2021 weteor + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define PIMORONI_TRACKBALL_INVERT_Y +#define PIMORONI_TRACKBALL_ROTATE + diff --git a/keyboards/3w6/rev2/keymaps/default_pimoroni/keymap.c b/keyboards/3w6/rev2/keymaps/default_pimoroni/keymap.c new file mode 100644 index 000000000000..a5b8c6006a0b --- /dev/null +++ b/keyboards/3w6/rev2/keymaps/default_pimoroni/keymap.c @@ -0,0 +1,70 @@ +/* +Copyright 2021 weteor + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers +{ + _ALPHA_QWERTY = 0, + _ALPHA_COLEMAK, + _SYM, + _NAV, + _NUM, + _CFG, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + +[_ALPHA_QWERTY] = LAYOUT( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, + LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), + + LCTL_T(KC_ESC), LT(_NUM,KC_SPC), LT(_NAV, KC_TAB), LT(_SYM, KC_BSPC), KC_ENT, LALT_T(KC_DEL) + ), + [_ALPHA_COLEMAK] = LAYOUT( + KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, + KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, + LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SCLN), + LCTL_T(KC_ENT), LT(_NUM,KC_SPC), LT(_NAV, KC_TAB), LT(_SYM, KC_BSPC), KC_ENT, LALT_T(KC_DEL) + ), + [_SYM] = LAYOUT( + KC_GRV , KC_CIRC, KC_AT, KC_DLR, KC_TILD, KC_AMPR, KC_EXLM, KC_PIPE, KC_UNDS, KC_HASH, + KC_SLSH, KC_LBRC, KC_LCBR, KC_LPRN, KC_EQL, KC_ASTR, KC_RPRN, KC_RCBR, KC_RBRC, KC_BSLS, + _______, KC_QUES, KC_PLUS, KC_PERC, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, XXXXXXX, _______, + XXXXXXX, MO(_CFG), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + ), + [_NAV] = LAYOUT( + XXXXXXX, KC_VOLD, KC_MUTE, KC_VOLU, XXXXXXX, XXXXXXX, KC_PGDN, KC_UP, KC_PGUP, KC_DEL, + KC_MPRV, KC_MPLY, KC_MSTP, KC_MNXT, XXXXXXX, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MO(_CFG), XXXXXXX + ), + [_NUM] = LAYOUT( + XXXXXXX, KC_F9, KC_F10, KC_F11, KC_F12, KC_PPLS, KC_P7, KC_P8, KC_P9, KC_PSLS, + XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8, KC_P0, KC_P4, KC_P5, KC_P6, KC_PDOT, + XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_PMNS, KC_P1, KC_P2, KC_P3, KC_PAST, + XXXXXXX, XXXXXXX, XXXXXXX, KC_PEQL, KC_PENT, XXXXXXX + ), + [_CFG] = LAYOUT( + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,DF(_ALPHA_QWERTY), DF(_ALPHA_COLEMAK), + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + ), +}; diff --git a/keyboards/draculad/keymaps/pimoroni/pimoroni_trackball.c b/keyboards/3w6/rev2/keymaps/default_pimoroni/pimoroni_trackball.c similarity index 100% rename from keyboards/draculad/keymaps/pimoroni/pimoroni_trackball.c rename to keyboards/3w6/rev2/keymaps/default_pimoroni/pimoroni_trackball.c diff --git a/keyboards/draculad/keymaps/pimoroni/pimoroni_trackball.h b/keyboards/3w6/rev2/keymaps/default_pimoroni/pimoroni_trackball.h similarity index 100% rename from keyboards/draculad/keymaps/pimoroni/pimoroni_trackball.h rename to keyboards/3w6/rev2/keymaps/default_pimoroni/pimoroni_trackball.h diff --git a/keyboards/3w6/rev2/keymaps/default_pimoroni/rules.mk b/keyboards/3w6/rev2/keymaps/default_pimoroni/rules.mk new file mode 100644 index 000000000000..231a88371991 --- /dev/null +++ b/keyboards/3w6/rev2/keymaps/default_pimoroni/rules.mk @@ -0,0 +1,3 @@ +POINTING_DEVICE_ENABLE = yes +SRC += pimoroni_trackball.c +MOUSEKEY_ENABLE = no diff --git a/keyboards/3w6/rev2/matrix.c b/keyboards/3w6/rev2/matrix.c new file mode 100644 index 000000000000..c47c24e1dcfe --- /dev/null +++ b/keyboards/3w6/rev2/matrix.c @@ -0,0 +1,256 @@ +/* +Copyright 2013 Oleg Kostyuk + 2020 Pierre Chevalier + 2021 weteor + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +/* + * This code was heavily inspired by the ergodox_ez keymap, and modernized + * to take advantage of the quantum.h microcontroller agnostics gpio control + * abstractions and use the macros defined in config.h for the wiring as opposed + * to repeating that information all over the place. + */ + +#include QMK_KEYBOARD_H +#include "i2c_master.h" + +extern i2c_status_t tca9555_status; +#define I2C_TIMEOUT 1000 + +// I2C address: +// All address pins of the tca9555 are connected to the ground +// | 0 | 1 | 0 | 0 | A2 | A1 | A0 | +// | 0 | 1 | 0 | 0 | 0 | 0 | 0 | +#define I2C_ADDR (0b0100000 << 1) + +// Register addresses +#define IODIRA 0x06 // i/o direction register +#define IODIRB 0x07 +#define IREGP0 0x00 // GPIO pull-up resistor register +#define IREGP1 0x01 +#define OREGP0 0x02 // general purpose i/o port register (write modifies OLAT) +#define OREGP1 0x03 + +bool i2c_initialized = 0; +i2c_status_t tca9555_status = I2C_ADDR; + +uint8_t init_tca9555(void) { + print("starting init"); + tca9555_status = I2C_ADDR; + + // I2C subsystem + if (i2c_initialized == 0) { + i2c_init(); // on pins D(1,0) + i2c_initialized = true; + wait_ms(I2C_TIMEOUT); + } + + // set pin direction + // - unused : input : 1 + // - input : input : 1 + // - driving : output : 0 + uint8_t conf[2] = { + // This means: read all pins of port 0 + 0b11111111, + // This means: we will write on pins 0 to 3 on port 1. read rest + 0b11110000, + }; + tca9555_status = i2c_writeReg(I2C_ADDR, IODIRA, conf, 2, I2C_TIMEOUT); + + return tca9555_status; +} + +/* matrix state(1:on, 0:off) */ +static matrix_row_t matrix[MATRIX_ROWS]; // debounced values + +static matrix_row_t read_cols(uint8_t row); +static void init_cols(void); +static void unselect_rows(void); +static void select_row(uint8_t row); + +static uint8_t tca9555_reset_loop; + +void matrix_init_custom(void) { + // initialize row and col + + tca9555_status = init_tca9555(); + + unselect_rows(); + init_cols(); + + // initialize matrix state: all keys off + for (uint8_t i = 0; i < MATRIX_ROWS; i++) { + matrix[i] = 0; + } +} + +void matrix_power_up(void) { + tca9555_status = init_tca9555(); + + unselect_rows(); + init_cols(); + + // initialize matrix state: all keys off + for (uint8_t i = 0; i < MATRIX_ROWS; i++) { + matrix[i] = 0; + } +} + +// Reads and stores a row, returning +// whether a change occurred. +static inline bool store_matrix_row(matrix_row_t current_matrix[], uint8_t index) { + matrix_row_t temp = read_cols(index); + if (current_matrix[index] != temp) { + current_matrix[index] = temp; + return true; + } + return false; +} + +bool matrix_scan_custom(matrix_row_t current_matrix[]) { + if (tca9555_status) { // if there was an error + if (++tca9555_reset_loop == 0) { + // since tca9555_reset_loop is 8 bit - we'll try to reset once in 255 matrix scans + // this will be approx bit more frequent than once per second + dprint("trying to reset tca9555\n"); + tca9555_status = init_tca9555(); + if (tca9555_status) { + dprint("right side not responding\n"); + } else { + dprint("right side attached\n"); + } + } + } + + bool changed = false; + for (uint8_t i = 0; i < MATRIX_ROWS_PER_SIDE; i++) { + // select rows from left and right hands + uint8_t left_index = i; + uint8_t right_index = i + MATRIX_ROWS_PER_SIDE; + select_row(left_index); + select_row(right_index); + + // we don't need a 30us delay anymore, because selecting a + // left-hand row requires more than 30us for i2c. + + changed |= store_matrix_row(current_matrix, left_index); + changed |= store_matrix_row(current_matrix, right_index); + + unselect_rows(); + } + + return changed; +} + +static void init_cols(void) { + // init on tca9555 + // not needed, already done as part of init_tca9555() + + // init on mcu + pin_t matrix_col_pins_mcu[MATRIX_COLS_PER_SIDE] = MATRIX_COL_PINS_L; + for (int pin_index = 0; pin_index < MATRIX_COLS_PER_SIDE; pin_index++) { + pin_t pin = matrix_col_pins_mcu[pin_index]; + setPinInput(pin); + writePinHigh(pin); + } +} + +static matrix_row_t read_cols(uint8_t row) { + if (row < MATRIX_ROWS_PER_SIDE) { + pin_t matrix_col_pins_mcu[MATRIX_COLS_PER_SIDE] = MATRIX_COL_PINS_L; + matrix_row_t current_row_value = 0; + // For each col... + for (uint8_t col_index = 0; col_index < MATRIX_COLS_PER_SIDE; col_index++) { + // Select the col pin to read (active low) + uint8_t pin_state = readPin(matrix_col_pins_mcu[col_index]); + + // Populate the matrix row with the state of the col pin + current_row_value |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index); + } + return current_row_value; + } else { + if (tca9555_status) { // if there was an error + return 0; + } else { + uint8_t data = 0; + uint8_t port0 = 0; + tca9555_status = i2c_readReg(I2C_ADDR, IREGP0, &port0, 1, I2C_TIMEOUT); + if (tca9555_status) { // if there was an error + // do nothing + return 0; + } else { + port0 = ~port0; + // We read all the pins on GPIOA. + // The initial state was all ones and any depressed key at a given column for the currently selected row will have its bit flipped to zero. + // The return value is a row as represented in the generic matrix code were the rightmost bits represent the lower columns and zeroes represent non-depressed keys while ones represent depressed keys. + // the pins connected to eact columns are sequential, but in reverse order, and counting from zero down (col 5 -> GPIO04, col6 -> GPIO03 and so on). + data |= (port0 & 0x01) << 4; + data |= (port0 & 0x02) << 2; + data |= (port0 & 0x04); + data |= (port0 & 0x08) >> 2; + data |= (port0 & 0x10) >> 4; + + tca9555_status = I2C_STATUS_SUCCESS; + return data; + } + } + } +} + +static void unselect_rows(void) { + // no need to unselect on tca9555, because the select step sets all + // the other row bits high, and it's not changing to a different + // direction + + // unselect rows on microcontroller + pin_t matrix_row_pins_mcu[MATRIX_ROWS_PER_SIDE] = MATRIX_ROW_PINS_L; + for (int pin_index = 0; pin_index < MATRIX_ROWS_PER_SIDE; pin_index++) { + pin_t pin = matrix_row_pins_mcu[pin_index]; + setPinInput(pin); + writePinLow(pin); + } +} + +static void select_row(uint8_t row) { + uint8_t port1 = 0xff; + + if (row < MATRIX_ROWS_PER_SIDE) { + // select on atmega32u4 + pin_t matrix_row_pins_mcu[MATRIX_ROWS_PER_SIDE] = MATRIX_ROW_PINS_L; + pin_t pin = matrix_row_pins_mcu[row]; + setPinOutput(pin); + writePinLow(pin); + } else { + // select on tca9555 + if (tca9555_status) { // if there was an error + // do nothing + } else { + switch(row) { + case 4: port1 &= ~(1 << 0); break; + case 5: port1 &= ~(1 << 1); break; + case 6: port1 &= ~(1 << 2); break; + case 7: + port1 &= ~(1 << 3); + break; + default: break; + } + + tca9555_status = i2c_writeReg(I2C_ADDR, OREGP1, &port1, 1, I2C_TIMEOUT); + // Select the desired row by writing a byte for the entire GPIOB bus where only the bit representing the row we want to select is a zero (write instruction) and every other bit is a one. + // Note that the row - MATRIX_ROWS_PER_SIDE reflects the fact that being on the right hand, the columns are numbered from MATRIX_ROWS_PER_SIDE to MATRIX_ROWS, but the pins we want to write to are indexed from zero up on the GPIOB bus. + } + } +} diff --git a/keyboards/3w6/rev2/readme.md b/keyboards/3w6/rev2/readme.md new file mode 100644 index 000000000000..a17c2fd6be3c --- /dev/null +++ b/keyboards/3w6/rev2/readme.md @@ -0,0 +1,38 @@ +# 3W6 + +![3W6_rev2](https://raw.githubusercontent.com/weteor/3W6/main/images/3w6_rev2_2s.jpg) +![3W6_rev2](https://raw.githubusercontent.com/weteor/3W6/main/images/3w6_rev2_1s.jpg) + +The 3w6 is a low profile, split ortholinear keyboard with 36 keys. + +* Rev2: + - onboard microcontroller (ATMega32U4) + - USB-C connector Board <-> PC + - USB-C connectors between both split halfs + - choc spacing (18x17mm) + - aggressive pinky stagger + - support for Choc V1 switches + - files for midplate (1.6 to 2mm) + - support for [Pimoroni Trackball](https://shop.pimoroni.com/products/trackball-breakout) instead of outer thumb switch on right half, needs midplate + - mounting holes for [Tenting Puck](https://splitkb.com/collections/keyboard-parts/products/tenting-puck), only usable without mid or switchplate + +--- + +* Keyboard Maintainer: [weteor](https://github.com/weteor) +* Hardware Supported: + * 3w6 rev2 (with Pimoroni support) +* Hardware Availability: + * make one yourself: [Design and Productionfiles](https://github.com/weteor/3w6) + * maintainer is selling kits when available + +--- +To reach the bootloader, connect the board to the PC and push the reset button on left half. + +Make examples for this keyboard (after setting up your build environment): + + make 3w6/rev2:default + make 3w6/rev2:default_pimoroni + + --- + +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/3w6/rev2/rev2.c b/keyboards/3w6/rev2/rev2.c new file mode 100644 index 000000000000..224925111e7d --- /dev/null +++ b/keyboards/3w6/rev2/rev2.c @@ -0,0 +1,34 @@ +/* Copyright 2021 weteor + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "rev2.h" + +#ifdef SWAP_HANDS_ENABLE +__attribute__ ((weak)) +const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { + // Left + {{4, 4}, {3, 4}, {2, 4}, {1, 4}, {0, 4}}, + {{4, 5}, {3, 5}, {2, 5}, {1, 5}, {0, 5}}, + {{4, 6}, {3, 6}, {2, 6}, {1, 6}, {0, 6}}, + {{4, 7}, {3, 7}, {2, 7}, {1, 7}, {0, 7}}, + // Right + {{4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0}}, + {{4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1}}, + {{4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2}}, + {{4, 3}, {3, 3}, {2, 3}, {1, 3}, {0, 3}} +}; +#endif + diff --git a/keyboards/3w6/rev2/rev2.h b/keyboards/3w6/rev2/rev2.h new file mode 100644 index 000000000000..ba881ca431ce --- /dev/null +++ b/keyboards/3w6/rev2/rev2.h @@ -0,0 +1,44 @@ +/* Copyright 2021 weteor + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + 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,\ + k32, k33, k34, k35, k36, k37\ +) { \ + { k00, k01, k02, k03, k04 }, \ + { k10, k11, k12, k13, k14 }, \ + { k20, k21, k22, k23, k24 }, \ + { KC_NO, KC_NO, k32, k33, k34 }, \ + \ + { k05, k06, k07, k08, k09 }, \ + { k15, k16, k17, k18, k19 }, \ + { k25, k26, k27, k28, k29 }, \ + { k35, k36, k37, KC_NO, KC_NO }, \ +} diff --git a/keyboards/3w6/rev2/rules.mk b/keyboards/3w6/rev2/rules.mk new file mode 100644 index 000000000000..eb9671441367 --- /dev/null +++ b/keyboards/3w6/rev2/rules.mk @@ -0,0 +1,26 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +UNICODE_ENABLE = yes +CUSTOM_MATRIX = lite +NO_USB_STARTUP_CHECK = yes +LTO_ENABLE = no + +SRC += matrix.c +QUANTUM_LIB_SRC += i2c_master.c diff --git a/keyboards/40percentclub/25/25.c b/keyboards/40percentclub/25/25.c index de1b038aa88d..8aff7565399f 100644 --- a/keyboards/40percentclub/25/25.c +++ b/keyboards/40percentclub/25/25.c @@ -15,33 +15,6 @@ */ #include "25.h" -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - #ifdef SWAP_HANDS_ENABLE __attribute__ ((weak)) const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { diff --git a/keyboards/40percentclub/25/config.h b/keyboards/40percentclub/25/config.h index 4a927110cf6a..af25449abcc6 100644 --- a/keyboards/40percentclub/25/config.h +++ b/keyboards/40percentclub/25/config.h @@ -108,54 +108,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -173,23 +125,3 @@ //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 diff --git a/keyboards/40percentclub/25/info.json b/keyboards/40percentclub/25/info.json index ed73de2c7ed0..1e86454125c7 100644 --- a/keyboards/40percentclub/25/info.json +++ b/keyboards/40percentclub/25/info.json @@ -2,11 +2,8 @@ "keyboard_name": "foobar", "url": "", "maintainer": "qmk", - "width": 6, - "height": 2, "layouts": { "LAYOUT_ortho_5x5": { - "key_count": 15, "layout": [ {"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, @@ -16,7 +13,6 @@ ] }, "LAYOUT_ortho_5x10": { - "key_count": 30, "layout": [ {"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, diff --git a/keyboards/40percentclub/25/keymaps/default/keymap.c b/keyboards/40percentclub/25/keymaps/default/keymap.c index ccb54c82a1ae..bea66ea5a474 100644 --- a/keyboards/40percentclub/25/keymaps/default/keymap.c +++ b/keyboards/40percentclub/25/keymaps/default/keymap.c @@ -70,18 +70,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END \ ), }; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/40percentclub/25/keymaps/macro/keymap.c b/keyboards/40percentclub/25/keymaps/macro/keymap.c index 80d227710b88..a1711a380685 100644 --- a/keyboards/40percentclub/25/keymaps/macro/keymap.c +++ b/keyboards/40percentclub/25/keymaps/macro/keymap.c @@ -24,19 +24,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC \ ), }; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/40percentclub/25/rules.mk b/keyboards/40percentclub/25/rules.mk index d01803957159..f1650948e28e 100644 --- a/keyboards/40percentclub/25/rules.mk +++ b/keyboards/40percentclub/25/rules.mk @@ -2,35 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output # Enable generic behavior for split boards SPLIT_KEYBOARD = yes - -LAYOUTS = ortho_5x5 ortho_5x10 diff --git a/keyboards/40percentclub/4pack/4pack.c b/keyboards/40percentclub/4pack/4pack.c index 98f22a65a5c8..4ab3575ca4d7 100644 --- a/keyboards/40percentclub/4pack/4pack.c +++ b/keyboards/40percentclub/4pack/4pack.c @@ -29,26 +29,3 @@ void matrix_init_kb(void) { // Do the rest matrix_init_user(); } - -/* -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - -*/ diff --git a/keyboards/40percentclub/4pack/config.h b/keyboards/40percentclub/4pack/config.h index b1101484c4ea..db5171592223 100644 --- a/keyboards/40percentclub/4pack/config.h +++ b/keyboards/40percentclub/4pack/config.h @@ -129,59 +129,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -200,26 +147,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/40percentclub/4pack/info.json b/keyboards/40percentclub/4pack/info.json index 8dd164e4b2b2..d328a999c297 100644 --- a/keyboards/40percentclub/4pack/info.json +++ b/keyboards/40percentclub/4pack/info.json @@ -2,11 +2,9 @@ "keyboard_name": "4pack", "url": "", "maintainer": "qmk", - "width": 4, - "height": 1, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}] } } -} \ No newline at end of file +} diff --git a/keyboards/40percentclub/4pack/keymaps/default/keymap.c b/keyboards/40percentclub/4pack/keymaps/default/keymap.c index 19264651b6ee..a812f4816ba2 100644 --- a/keyboards/40percentclub/4pack/keymaps/default/keymap.c +++ b/keyboards/40percentclub/4pack/keymaps/default/keymap.c @@ -21,6 +21,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_A, KC_S, KC_D, KC_F ), }; - - -void matrix_init_user(void) { } diff --git a/keyboards/40percentclub/4pack/rules.mk b/keyboards/40percentclub/4pack/rules.mk index a945161390d4..95fd80fe3757 100644 --- a/keyboards/40percentclub/4pack/rules.mk +++ b/keyboards/40percentclub/4pack/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/40percentclub/4x4/4x4.c b/keyboards/40percentclub/4x4/4x4.c index 963b6d00d449..8510b358f5a3 100644 --- a/keyboards/40percentclub/4x4/4x4.c +++ b/keyboards/40percentclub/4x4/4x4.c @@ -1,29 +1 @@ - #include "4x4.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/40percentclub/4x4/config.h b/keyboards/40percentclub/4x4/config.h index cfb5257b1908..77b6e7c58b9f 100644 --- a/keyboards/40percentclub/4x4/config.h +++ b/keyboards/40percentclub/4x4/config.h @@ -75,54 +75,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -140,23 +92,3 @@ //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 diff --git a/keyboards/40percentclub/4x4/info.json b/keyboards/40percentclub/4x4/info.json index 83012f013664..96a08d3fd531 100644 --- a/keyboards/40percentclub/4x4/info.json +++ b/keyboards/40percentclub/4x4/info.json @@ -2,8 +2,6 @@ "keyboard_name": "40percent.club 4x4", "url": "", "maintainer": "qmk", - "height": 4, - "width": 4, "layouts": { "LAYOUT_ortho_4x4": { "layout": [ diff --git a/keyboards/40percentclub/4x4/keymaps/default/keymap.c b/keyboards/40percentclub/4x4/keymaps/default/keymap.c index 1f52b20667ad..079f6caeedf6 100644 --- a/keyboards/40percentclub/4x4/keymaps/default/keymap.c +++ b/keyboards/40percentclub/4x4/keymaps/default/keymap.c @@ -86,19 +86,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/40percentclub/4x4/rules.mk b/keyboards/40percentclub/4x4/rules.mk index 91b609103e2b..510e8029e1c9 100644 --- a/keyboards/40percentclub/4x4/rules.mk +++ b/keyboards/40percentclub/4x4/rules.mk @@ -2,34 +2,22 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output -LAYOUTS = ortho_4x4 ortho_4x8 ortho_4x12 ortho_4x16 +LAYOUTS = ortho_4x4 ortho_4x12 # Disable unsupported hardware RGBLIGHT_SUPPORTED = no diff --git a/keyboards/40percentclub/5x5/5x5.c b/keyboards/40percentclub/5x5/5x5.c index 20e5246094c4..b31fcd7814ad 100644 --- a/keyboards/40percentclub/5x5/5x5.c +++ b/keyboards/40percentclub/5x5/5x5.c @@ -1,29 +1 @@ - #include "5x5.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/40percentclub/5x5/config.h b/keyboards/40percentclub/5x5/config.h index 809e0a9e1298..694a589852b1 100644 --- a/keyboards/40percentclub/5x5/config.h +++ b/keyboards/40percentclub/5x5/config.h @@ -84,54 +84,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -149,23 +101,3 @@ //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 diff --git a/keyboards/40percentclub/5x5/info.json b/keyboards/40percentclub/5x5/info.json index 1c1df8eda986..bb6b836ba991 100644 --- a/keyboards/40percentclub/5x5/info.json +++ b/keyboards/40percentclub/5x5/info.json @@ -1,9 +1,7 @@ { - "keyboard_name": "40percent.club 4x4", + "keyboard_name": "40percent.club 5x5", "url": "", "maintainer": "qmk", - "height": 4, - "width": 4, "layouts": { "LAYOUT_ortho_5x5": { "layout": [ diff --git a/keyboards/40percentclub/5x5/keymaps/default/keymap.c b/keyboards/40percentclub/5x5/keymaps/default/keymap.c index 56ddbb23f5bb..5dfd72f7e9f9 100644 --- a/keyboards/40percentclub/5x5/keymaps/default/keymap.c +++ b/keyboards/40percentclub/5x5/keymaps/default/keymap.c @@ -98,20 +98,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; - - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/40percentclub/5x5/rules.mk b/keyboards/40percentclub/5x5/rules.mk index ae36f660e94a..6994d20ef34a 100644 --- a/keyboards/40percentclub/5x5/rules.mk +++ b/keyboards/40percentclub/5x5/rules.mk @@ -2,31 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output -LAYOUTS = ortho_5x5 ortho_5x10 ortho_5x15 +LAYOUTS = ortho_5x15 diff --git a/keyboards/40percentclub/6lit/6lit.c b/keyboards/40percentclub/6lit/6lit.c index 59d7e33bd6a1..6c99973d1226 100644 --- a/keyboards/40percentclub/6lit/6lit.c +++ b/keyboards/40percentclub/6lit/6lit.c @@ -15,33 +15,6 @@ */ #include "6lit.h" -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - #ifdef SWAP_HANDS_ENABLE __attribute__ ((weak)) const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { diff --git a/keyboards/40percentclub/6lit/config.h b/keyboards/40percentclub/6lit/config.h index 4d21542d138e..ddf91a3ce54f 100644 --- a/keyboards/40percentclub/6lit/config.h +++ b/keyboards/40percentclub/6lit/config.h @@ -109,54 +109,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -174,23 +126,3 @@ //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 diff --git a/keyboards/40percentclub/6lit/info.json b/keyboards/40percentclub/6lit/info.json index dafebea1c12f..8308847f6cbe 100644 --- a/keyboards/40percentclub/6lit/info.json +++ b/keyboards/40percentclub/6lit/info.json @@ -2,18 +2,14 @@ "keyboard_name": "6lit", "url": "", "maintainer": "qmk", - "width": 6, - "height": 2, "layouts": { "LAYOUT_ortho_2x3": { - "key_count": 6, "layout": [ {"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1} ] }, "LAYOUT_ortho_2x6": { - "key_count": 12, "layout": [ {"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1} diff --git a/keyboards/40percentclub/6lit/keymaps/default/keymap.c b/keyboards/40percentclub/6lit/keymaps/default/keymap.c index 6864c72f7863..076d07b5c95e 100644 --- a/keyboards/40percentclub/6lit/keymaps/default/keymap.c +++ b/keyboards/40percentclub/6lit/keymaps/default/keymap.c @@ -21,19 +21,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24 \ ), }; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/40percentclub/6lit/keymaps/macro/keymap.c b/keyboards/40percentclub/6lit/keymaps/macro/keymap.c index 6b10ac1330cc..f97288f5161a 100644 --- a/keyboards/40percentclub/6lit/keymaps/macro/keymap.c +++ b/keyboards/40percentclub/6lit/keymaps/macro/keymap.c @@ -21,19 +21,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_F22, KC_F23, KC_F24 \ ), }; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/40percentclub/6lit/rules.mk b/keyboards/40percentclub/6lit/rules.mk index 8d32d2c3fb7e..6ae01fee480d 100644 --- a/keyboards/40percentclub/6lit/rules.mk +++ b/keyboards/40percentclub/6lit/rules.mk @@ -2,33 +2,23 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output # Enable generic behavior for split boards SPLIT_KEYBOARD = yes + +LAYOUTS = ortho_2x3 ortho_2x6 diff --git a/keyboards/40percentclub/foobar/config.h b/keyboards/40percentclub/foobar/config.h index 46f1248f29ae..999efef7f53a 100644 --- a/keyboards/40percentclub/foobar/config.h +++ b/keyboards/40percentclub/foobar/config.h @@ -109,54 +109,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -174,23 +126,3 @@ //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 diff --git a/keyboards/40percentclub/foobar/foobar.c b/keyboards/40percentclub/foobar/foobar.c index b0a1518df18f..fe4e06903cc3 100644 --- a/keyboards/40percentclub/foobar/foobar.c +++ b/keyboards/40percentclub/foobar/foobar.c @@ -15,33 +15,6 @@ */ #include "foobar.h" -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - #ifdef SWAP_HANDS_ENABLE __attribute__ ((weak)) const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { diff --git a/keyboards/40percentclub/foobar/info.json b/keyboards/40percentclub/foobar/info.json index 8b44ae597798..b825ed0267e1 100644 --- a/keyboards/40percentclub/foobar/info.json +++ b/keyboards/40percentclub/foobar/info.json @@ -2,11 +2,8 @@ "keyboard_name": "foobar", "url": "", "maintainer": "qmk", - "width": 10, - "height": 3, "layouts": { "LAYOUT_ortho_3x5": { - "key_count": 15, "layout": [ {"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, @@ -14,7 +11,6 @@ ] }, "LAYOUT_ortho_3x10": { - "key_count": 30, "layout": [ {"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, diff --git a/keyboards/40percentclub/foobar/keymaps/default/keymap.c b/keyboards/40percentclub/foobar/keymaps/default/keymap.c index 1be4b38dd9d6..02e705998dfc 100644 --- a/keyboards/40percentclub/foobar/keymaps/default/keymap.c +++ b/keyboards/40percentclub/foobar/keymaps/default/keymap.c @@ -73,19 +73,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, RESET, _______, _______, _______, _______ ), }; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/40percentclub/foobar/keymaps/macro/keymap.c b/keyboards/40percentclub/foobar/keymaps/macro/keymap.c index 1e7ec905fda4..a335b0a1158f 100644 --- a/keyboards/40percentclub/foobar/keymaps/macro/keymap.c +++ b/keyboards/40percentclub/foobar/keymaps/macro/keymap.c @@ -22,19 +22,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_F21, KC_F22, KC_F23, KC_F14, KC_INT5 \ ), }; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/40percentclub/foobar/rules.mk b/keyboards/40percentclub/foobar/rules.mk index 7516c9bdd844..19ba725721eb 100644 --- a/keyboards/40percentclub/foobar/rules.mk +++ b/keyboards/40percentclub/foobar/rules.mk @@ -2,33 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output # Enable generic behavior for split boards SPLIT_KEYBOARD = yes diff --git a/keyboards/40percentclub/gherkin/info.json b/keyboards/40percentclub/gherkin/info.json index 7ebbfb04be67..b4600eba0059 100644 --- a/keyboards/40percentclub/gherkin/info.json +++ b/keyboards/40percentclub/gherkin/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Gherkin", "url": "", "maintainer": "qmk", - "width": 10, - "height": 3, "layouts": { "LAYOUT_ortho_3x10": { - "key_count": 30, "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}] } } diff --git a/keyboards/40percentclub/gherkin/keymaps/midi/rules.mk b/keyboards/40percentclub/gherkin/keymaps/midi/rules.mk index bfc6dbbd0dbe..a7e93c234126 100644 --- a/keyboards/40percentclub/gherkin/keymaps/midi/rules.mk +++ b/keyboards/40percentclub/gherkin/keymaps/midi/rules.mk @@ -1,4 +1,4 @@ -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = no # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/40percentclub/gherkin/keymaps/steno/rules.mk b/keyboards/40percentclub/gherkin/keymaps/steno/rules.mk index a6e76f7cf942..1210452d86f3 100644 --- a/keyboards/40percentclub/gherkin/keymaps/steno/rules.mk +++ b/keyboards/40percentclub/gherkin/keymaps/steno/rules.mk @@ -1,6 +1,6 @@ STENO_ENABLE = yes # Additional protocols for Stenography(+1700), requires VIRTSER -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = no # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/40percentclub/gherkin/keymaps/stevexyz/rules.mk b/keyboards/40percentclub/gherkin/keymaps/stevexyz/rules.mk index 8c48f58507ee..b693b8e30592 100644 --- a/keyboards/40percentclub/gherkin/keymaps/stevexyz/rules.mk +++ b/keyboards/40percentclub/gherkin/keymaps/stevexyz/rules.mk @@ -1,6 +1,6 @@ # Build Options (yes/no) # -BOOTMAGIC_ENABLE = lite # Just bootloader enabled with 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 diff --git a/keyboards/40percentclub/gherkin/keymaps/via/keymap.c b/keyboards/40percentclub/gherkin/keymaps/via/keymap.c new file mode 100644 index 000000000000..d119e6ae913d --- /dev/null +++ b/keyboards/40percentclub/gherkin/keymaps/via/keymap.c @@ -0,0 +1,45 @@ +/* +Copyright 2021 keebnewb + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_ortho_3x10( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ESC, + KC_Z, KC_X, KC_C, KC_V, KC_BSPC, KC_SPC, KC_B, KC_N, KC_M, KC_ENT + ), + + [1] = LAYOUT_ortho_3x10( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT_ortho_3x10( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT_ortho_3x10( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/bm16a/keymaps/via/rules.mk b/keyboards/40percentclub/gherkin/keymaps/via/rules.mk similarity index 100% rename from keyboards/bm16a/keymaps/via/rules.mk rename to keyboards/40percentclub/gherkin/keymaps/via/rules.mk diff --git a/keyboards/40percentclub/gherkin/rules.mk b/keyboards/40percentclub/gherkin/rules.mk index 18a35b275f06..2526c4f5a558 100644 --- a/keyboards/40percentclub/gherkin/rules.mk +++ b/keyboards/40percentclub/gherkin/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 -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 = yes # Enable keyboard backlight functionality AUDIO_ENABLE = no diff --git a/keyboards/40percentclub/half_n_half/config.h b/keyboards/40percentclub/half_n_half/config.h index e226c72917a5..3409af5f687b 100644 --- a/keyboards/40percentclub/half_n_half/config.h +++ b/keyboards/40percentclub/half_n_half/config.h @@ -118,58 +118,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -188,26 +136,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/40percentclub/half_n_half/half_n_half.c b/keyboards/40percentclub/half_n_half/half_n_half.c index c4e6a4ce0798..e49e54579891 100644 --- a/keyboards/40percentclub/half_n_half/half_n_half.c +++ b/keyboards/40percentclub/half_n_half/half_n_half.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "half_n_half.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/40percentclub/half_n_half/info.json b/keyboards/40percentclub/half_n_half/info.json index e791e36c68a8..57a65424f00a 100644 --- a/keyboards/40percentclub/half_n_half/info.json +++ b/keyboards/40percentclub/half_n_half/info.json @@ -2,11 +2,8 @@ "keyboard_name": "half_n_half", "url": "", "maintainer": "qmk", - "width": 14, - "height": 4, "layouts": { "LAYOUT": { - "key_count": 44, "layout": [ {"label":"L00", "x":0, "y":0}, {"label":"L01", "x":1, "y":0}, @@ -59,4 +56,3 @@ } } } - \ No newline at end of file diff --git a/keyboards/40percentclub/half_n_half/keymaps/default/keymap.c b/keyboards/40percentclub/half_n_half/keymaps/default/keymap.c index 2ab9a8c982fc..323b903f047a 100644 --- a/keyboards/40percentclub/half_n_half/keymaps/default/keymap.c +++ b/keyboards/40percentclub/half_n_half/keymaps/default/keymap.c @@ -51,15 +51,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/40percentclub/half_n_half/rules.mk b/keyboards/40percentclub/half_n_half/rules.mk index bd2b179d8a64..beadac336c19 100644 --- a/keyboards/40percentclub/half_n_half/rules.mk +++ b/keyboards/40percentclub/half_n_half/rules.mk @@ -2,33 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output # Enable generic behavior for split boards SPLIT_KEYBOARD = yes diff --git a/keyboards/40percentclub/i75/config.h b/keyboards/40percentclub/i75/config.h index 776f4abb6bb6..e89f4f5806c8 100644 --- a/keyboards/40percentclub/i75/config.h +++ b/keyboards/40percentclub/i75/config.h @@ -64,54 +64,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -130,26 +82,6 @@ //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/40percentclub/i75/i75.c b/keyboards/40percentclub/i75/i75.c index 7efe3b4549f8..28684e7144d7 100644 --- a/keyboards/40percentclub/i75/i75.c +++ b/keyboards/40percentclub/i75/i75.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "i75.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/40percentclub/i75/info.json b/keyboards/40percentclub/i75/info.json index 033bf02bcc54..7e705cdf8638 100644 --- a/keyboards/40percentclub/i75/info.json +++ b/keyboards/40percentclub/i75/info.json @@ -2,8 +2,6 @@ "keyboard_name": "i75", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_ortho_5x15": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":13, "y":2}, {"x":14, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}, {"x":12, "y":3}, {"x":13, "y":3}, {"x":14, "y":3}, {"x":0, "y":4}, {"x":1, "y":4}, {"x":2, "y":4}, {"x":3, "y":4}, {"x":4, "y":4}, {"x":5, "y":4}, {"x":6, "y":4}, {"x":7, "y":4}, {"x":8, "y":4}, {"x":9, "y":4}, {"x":10, "y":4}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}] diff --git a/keyboards/40percentclub/i75/keymaps/default/keymap.c b/keyboards/40percentclub/i75/keymaps/default/keymap.c index 3054f8ebe5e6..e4c48bca436b 100644 --- a/keyboards/40percentclub/i75/keymaps/default/keymap.c +++ b/keyboards/40percentclub/i75/keymaps/default/keymap.c @@ -52,15 +52,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/40percentclub/i75/promicro/rules.mk b/keyboards/40percentclub/i75/promicro/rules.mk index e6fef517279c..cf663a7ed6aa 100644 --- a/keyboards/40percentclub/i75/promicro/rules.mk +++ b/keyboards/40percentclub/i75/promicro/rules.mk @@ -2,11 +2,4 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina diff --git a/keyboards/40percentclub/i75/rules.mk b/keyboards/40percentclub/i75/rules.mk index ba535b1c6b62..08a49def4c2f 100644 --- a/keyboards/40percentclub/i75/rules.mk +++ b/keyboards/40percentclub/i75/rules.mk @@ -1,21 +1,16 @@ # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = ortho_5x15 DEFAULT_FOLDER = 40percentclub/i75/promicro diff --git a/keyboards/40percentclub/i75/teensy2/rules.mk b/keyboards/40percentclub/i75/teensy2/rules.mk index ae398e2588c7..320633f80f33 100644 --- a/keyboards/40percentclub/i75/teensy2/rules.mk +++ b/keyboards/40percentclub/i75/teensy2/rules.mk @@ -2,11 +2,4 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = halfkay diff --git a/keyboards/40percentclub/luddite/info.json b/keyboards/40percentclub/luddite/info.json index e3c5fa9f9dee..45a446e818de 100644 --- a/keyboards/40percentclub/luddite/info.json +++ b/keyboards/40percentclub/luddite/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Luddite", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_ansi": { "layout": [ diff --git a/keyboards/40percentclub/luddite/rules.mk b/keyboards/40percentclub/luddite/rules.mk index 3e42dddd6c7a..df0ee3c60424 100644 --- a/keyboards/40percentclub/luddite/rules.mk +++ b/keyboards/40percentclub/luddite/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 -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 = yes # Enable keyboard backlight functionality AUDIO_ENABLE = no diff --git a/keyboards/40percentclub/mf68/config.h b/keyboards/40percentclub/mf68/config.h index 1ff2c189e5e3..2307256154f7 100644 --- a/keyboards/40percentclub/mf68/config.h +++ b/keyboards/40percentclub/mf68/config.h @@ -107,54 +107,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. diff --git a/keyboards/40percentclub/mf68/info.json b/keyboards/40percentclub/mf68/info.json index fae15aaf5fb6..873824edb0df 100644 --- a/keyboards/40percentclub/mf68/info.json +++ b/keyboards/40percentclub/mf68/info.json @@ -2,8 +2,6 @@ "keyboard_name": "MF68", "url": "", "maintainer": "qmk", - "width": 17.25, - "height": 5, "layouts": { "LAYOUT_68_ansi": { "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}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"x":15.25, "y":0}, {"x":16.25, "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}, {"x":15.25, "y":1}, {"x":16.25, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"x":15.25, "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}, {"x":14.25, "y":4}, {"x":15.25, "y":4}, {"x":16.25, "y":4}] diff --git a/keyboards/40percentclub/mf68/keymaps/andyjack/rules.mk b/keyboards/40percentclub/mf68/keymaps/andyjack/rules.mk index 617f5f6fc92a..a124bde758d5 100644 --- a/keyboards/40percentclub/mf68/keymaps/andyjack/rules.mk +++ b/keyboards/40percentclub/mf68/keymaps/andyjack/rules.mk @@ -1,2 +1,2 @@ MOUSEKEY_ENABLE = yes -BOOTMAGIC_ENABLE = full +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite diff --git a/keyboards/40percentclub/mf68/keymaps/mf68_ble/rules.mk b/keyboards/40percentclub/mf68/keymaps/mf68_ble/rules.mk index 2a4ff658cf21..160b3684b3c4 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/mf68/mf68.c b/keyboards/40percentclub/mf68/mf68.c index 1da522e7e181..4abee8e0c356 100644 --- a/keyboards/40percentclub/mf68/mf68.c +++ b/keyboards/40percentclub/mf68/mf68.c @@ -1,8 +1 @@ #include "mf68.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} diff --git a/keyboards/40percentclub/mf68/rules.mk b/keyboards/40percentclub/mf68/rules.mk index f1967d83e16e..20735a84e3f7 100644 --- a/keyboards/40percentclub/mf68/rules.mk +++ b/keyboards/40percentclub/mf68/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = 68_ansi diff --git a/keyboards/40percentclub/nano/info.json b/keyboards/40percentclub/nano/info.json index 1ae0512825ae..35eff7e960ce 100644 --- a/keyboards/40percentclub/nano/info.json +++ b/keyboards/40percentclub/nano/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Nano", "url": "", "maintainer": "qmk", - "width": 4, - "height": 2, "layouts": { "LAYOUT_ortho_2x4": { "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}] diff --git a/keyboards/40percentclub/nano/keymaps/drashna/config.h b/keyboards/40percentclub/nano/keymaps/drashna/config.h new file mode 100644 index 000000000000..411ee8a81bb4 --- /dev/null +++ b/keyboards/40percentclub/nano/keymaps/drashna/config.h @@ -0,0 +1,22 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define ANALOG_JOYSTICK_X_AXIS_PIN B4 +#define ANALOG_JOYSTICK_Y_AXIS_PIN B5 + +#define ANALOG_JOYSTICK_CLICK_PIN E6 diff --git a/keyboards/40percentclub/nano/keymaps/drashna/keymap.c b/keyboards/40percentclub/nano/keymaps/drashna/keymap.c index b8947cce7833..cc5991d7a265 100644 --- a/keyboards/40percentclub/nano/keymaps/drashna/keymap.c +++ b/keyboards/40percentclub/nano/keymaps/drashna/keymap.c @@ -29,98 +29,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; // clang-format on - -// Joystick -// Set Pins -// uint8_t xPin = 8; // VRx / /B4 -// uint8_t yPin = 7; // VRy // B5 -uint8_t swPin = E6; // SW - -// Set Parameters -uint16_t minAxisValue = 0; -uint16_t maxAxisValue = 1023; - -uint8_t maxCursorSpeed = 2; -uint8_t precisionSpeed = 1; -uint8_t speedRegulator = 20; // Lower Values Create Faster Movement - -int8_t xPolarity = 1; -int8_t yPolarity = 1; - -uint8_t cursorTimeout = 10; - -int16_t xOrigin, yOrigin; - -uint16_t lastCursor = 0; - -int16_t axisCoordinate(uint8_t pin, uint16_t origin) { - int8_t direction; - int16_t distanceFromOrigin; - int16_t range; - - int16_t position = analogReadPin(pin); - - if (origin == position) { - return 0; - } else if (origin > position) { - distanceFromOrigin = origin - position; - range = origin - minAxisValue; - direction = -1; - } else { - distanceFromOrigin = position - origin; - range = maxAxisValue - origin; - direction = 1; - } - - float percent = (float)distanceFromOrigin / range; - int16_t coordinate = (int16_t)(percent * 100); - if (coordinate < 0) { - return 0; - } else if (coordinate > 100) { - return 100 * direction; - } else { - return coordinate * direction; - } -} - -int8_t axisToMouseComponent(uint8_t pin, int16_t origin, uint8_t maxSpeed, int8_t polarity) { - int coordinate = axisCoordinate(pin, origin); - if (coordinate == 0) { - return 0; - } else { - float percent = (float)coordinate / 100; - if (keyboard_report->mods & MOD_BIT(KC_LSFT)) { - return percent * precisionSpeed * polarity * (abs(coordinate) / speedRegulator); - } else { - return percent * maxCursorSpeed * polarity * (abs(coordinate) / speedRegulator); - } - } -} - -void pointing_device_task(void) { - report_mouse_t report = pointing_device_get_report(); - - // todo read as one vector - if (timer_elapsed(lastCursor) > cursorTimeout) { - lastCursor = timer_read(); - report.x = axisToMouseComponent(B4, xOrigin, maxCursorSpeed, xPolarity); - report.y = axisToMouseComponent(B5, yOrigin, maxCursorSpeed, yPolarity); - } - // - if (!readPin(E6)) { - report.buttons |= MOUSE_BTN1; - } else { - report.buttons &= ~MOUSE_BTN1; - } - - pointing_device_set_report(report); - pointing_device_send(); -} - -void matrix_init_keymap(void) { - // init pin? Is needed? - setPinInputHigh(E6); - // Account for drift - xOrigin = analogReadPin(B4); - yOrigin = analogReadPin(B5); -} diff --git a/keyboards/40percentclub/nano/keymaps/drashna/rules.mk b/keyboards/40percentclub/nano/keymaps/drashna/rules.mk index 2b72a112b0dd..aa7966a8b589 100644 --- a/keyboards/40percentclub/nano/keymaps/drashna/rules.mk +++ b/keyboards/40percentclub/nano/keymaps/drashna/rules.mk @@ -1,7 +1,6 @@ -POINTING_DEVICE_ENABLE = yes -RGBLIGHT_ENABLE = no -CONSOLE_ENABLE = no +POINTING_DEVICE_ENABLE = yes +POINTING_DEVICE_DRIVER = analog_joystick +RGBLIGHT_ENABLE = no +CONSOLE_ENABLE = no -BOOTLOADER = qmk-dfu - -SRC += analog.c +BOOTLOADER = qmk-dfu diff --git a/keyboards/40percentclub/nano/nano.c b/keyboards/40percentclub/nano/nano.c index 63e23545e6cb..8761e8add4f6 100644 --- a/keyboards/40percentclub/nano/nano.c +++ b/keyboards/40percentclub/nano/nano.c @@ -1,5 +1 @@ #include "nano.h" - -void matrix_init_kb(void) { - matrix_init_user(); -} diff --git a/keyboards/40percentclub/nano/rules.mk b/keyboards/40percentclub/nano/rules.mk index e9658c4b55f3..ab2717c1de4f 100644 --- a/keyboards/40percentclub/nano/rules.mk +++ b/keyboards/40percentclub/nano/rules.mk @@ -2,31 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output UNICODE_ENABLE = yes # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend diff --git a/keyboards/40percentclub/nein/config.h b/keyboards/40percentclub/nein/config.h index ec088d4434fc..1dedb608f996 100644 --- a/keyboards/40percentclub/nein/config.h +++ b/keyboards/40percentclub/nein/config.h @@ -113,59 +113,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -184,26 +131,6 @@ //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/40percentclub/nein/info.json b/keyboards/40percentclub/nein/info.json index 2a28ffc00869..6d948877d167 100644 --- a/keyboards/40percentclub/nein/info.json +++ b/keyboards/40percentclub/nein/info.json @@ -2,10 +2,8 @@ "keyboard_name": "nein", "url": "http://www.40percent.club/2019/04/nein.html", "maintainer": "qmk", - "width": 3, - "height": 3, "layouts": { - "LAYOUT": { + "LAYOUT_ortho_3x3": { "layout": [ {"x":0, "y":0}, {"x":1, "y":0}, diff --git a/keyboards/40percentclub/nein/rules.mk b/keyboards/40percentclub/nein/rules.mk index 67b7f813ec46..b97001801122 100644 --- a/keyboards/40percentclub/nein/rules.mk +++ b/keyboards/40percentclub/nein/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/40percentclub/nori/config.h b/keyboards/40percentclub/nori/config.h index e9bbe487a7f0..40225748ac6b 100644 --- a/keyboards/40percentclub/nori/config.h +++ b/keyboards/40percentclub/nori/config.h @@ -97,54 +97,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -162,23 +114,3 @@ //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 diff --git a/keyboards/40percentclub/nori/info.json b/keyboards/40percentclub/nori/info.json index db0d6aaadb7e..9de33d52f04d 100644 --- a/keyboards/40percentclub/nori/info.json +++ b/keyboards/40percentclub/nori/info.json @@ -2,11 +2,8 @@ "keyboard_name": "nori", "url": "", "maintainer": "qmk", - "width": 12, - "height": 4, "layouts": { "LAYOUT_ortho_4x4": { - "key_count": 16, "layout": [ { "w": 1, "x": 0, "y": 0 }, { "w": 1, "x": 1, "y": 0 }, @@ -26,7 +23,6 @@ { "w": 1, "x": 3, "y": 3 } ] }, "LAYOUT_ortho_4x8": { - "key_count": 32, "layout": [ { "w": 1, "x": 0, "y": 0 }, { "w": 1, "x": 1, "y": 0 }, @@ -62,7 +58,6 @@ { "w": 1, "x": 7, "y": 3 } ] }, "LAYOUT_ortho_4x12": { - "key_count": 48, "layout": [ { "w": 1, "x": 0, "y": 0 }, { "w": 1, "x": 1, "y": 0 }, diff --git a/keyboards/40percentclub/nori/keymaps/macro/keymap.c b/keyboards/40percentclub/nori/keymaps/macro/keymap.c index 14dc0b678c98..8c5fa9410430 100644 --- a/keyboards/40percentclub/nori/keymaps/macro/keymap.c +++ b/keyboards/40percentclub/nori/keymaps/macro/keymap.c @@ -23,19 +23,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_F21, KC_F22, KC_F23, KC_F24 \ ), }; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/40percentclub/nori/nori.c b/keyboards/40percentclub/nori/nori.c index 9d27df7a5c9c..f60cf98d868d 100644 --- a/keyboards/40percentclub/nori/nori.c +++ b/keyboards/40percentclub/nori/nori.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "nori.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/40percentclub/nori/nori.h b/keyboards/40percentclub/nori/nori.h index ffcc3962182b..768598b7f807 100644 --- a/keyboards/40percentclub/nori/nori.h +++ b/keyboards/40percentclub/nori/nori.h @@ -40,7 +40,7 @@ { 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, K35, K37, ___, ___, ___, ___ } \ + { K30, K31, K32, K33, K34, K35, K36, K37, ___, ___, ___, ___ } \ } #define LAYOUT_ortho_4x12( \ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0a, K0b, \ diff --git a/keyboards/40percentclub/nori/rules.mk b/keyboards/40percentclub/nori/rules.mk index 1b9766581a03..12b44e4abeeb 100644 --- a/keyboards/40percentclub/nori/rules.mk +++ b/keyboards/40percentclub/nori/rules.mk @@ -2,35 +2,23 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output -LAYOUTS = ortho_4x4 ortho_4x8 ortho_4x12 +LAYOUTS = ortho_4x4 ortho_4x12 # Disable unsupported hardware AUDIO_SUPPORTED = no diff --git a/keyboards/40percentclub/polyandry/config.h b/keyboards/40percentclub/polyandry/config.h new file mode 100644 index 000000000000..4d64e2d209c8 --- /dev/null +++ b/keyboards/40percentclub/polyandry/config.h @@ -0,0 +1,90 @@ +/* Copyright 2021 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6060 +#define DEVICE_VER 0x0001 +#define MANUFACTURER di0ib +#define PRODUCT Polypad + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +//more detailed config options start below: + + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is userful for the Windows task manager shortcut (ctrl+shift+esc). + */ +// #define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* Bootmagic Lite key configuration */ +// #define BOOTMAGIC_LITE_ROW 0 +// #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/40percentclub/polyandry/info.json b/keyboards/40percentclub/polyandry/info.json new file mode 100644 index 000000000000..d0d1a00f86c8 --- /dev/null +++ b/keyboards/40percentclub/polyandry/info.json @@ -0,0 +1,27 @@ +{ + "keyboard_name": "Polyandry", + "url": "", + "maintainer": "QMK", + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "k000", "x": 0, "y": 0}, + {"label": "k001", "x": 1, "y": 0}, + {"label": "k002", "x": 2, "y": 0}, + + {"label": "k003", "x": 0, "y": 1}, + {"label": "k004", "x": 1, "y": 1}, + {"label": "k005", "x": 2, "y": 1}, + + {"label": "k006", "x": 0, "y": 2}, + {"label": "k007", "x": 1, "y": 2}, + {"label": "k008", "x": 2, "y": 2}, + + {"label": "k009", "x": 0, "y": 3}, + {"label": "k010", "x": 1, "y": 3}, + {"label": "k011", "x": 2, "y": 3} + + ] + } + } +} diff --git a/keyboards/40percentclub/polyandry/keymaps/default/keymap.c b/keyboards/40percentclub/polyandry/keymaps/default/keymap.c new file mode 100644 index 000000000000..3e1f278b35e0 --- /dev/null +++ b/keyboards/40percentclub/polyandry/keymaps/default/keymap.c @@ -0,0 +1,30 @@ +/* Copyright 2021 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT( + KC_1, KC_2, KC_3, + KC_4, KC_5, KC_6, + KC_7, KC_8, KC_9, + KC_0, KC_A, KC_B + ), + +}; + + + diff --git a/keyboards/40percentclub/polyandry/polyandry.c b/keyboards/40percentclub/polyandry/polyandry.c new file mode 100644 index 000000000000..2b4be589b8f8 --- /dev/null +++ b/keyboards/40percentclub/polyandry/polyandry.c @@ -0,0 +1,16 @@ +/* Copyright 2021 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "polyandry.h" diff --git a/keyboards/40percentclub/polyandry/polyandry.h b/keyboards/40percentclub/polyandry/polyandry.h new file mode 100644 index 000000000000..5baf87ba6235 --- /dev/null +++ b/keyboards/40percentclub/polyandry/polyandry.h @@ -0,0 +1,24 @@ +/* Copyright 2021 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#ifdef KEYBOARD_40percentclub_polyandry_promicro + #include "promicro.h" +#elif KEYBOARD_40percentclub_polyandry_teensy2 + #include "teensy2.h" +#endif diff --git a/keyboards/40percentclub/polyandry/promicro/config.h b/keyboards/40percentclub/polyandry/promicro/config.h new file mode 100644 index 000000000000..e6f8643c4415 --- /dev/null +++ b/keyboards/40percentclub/polyandry/promicro/config.h @@ -0,0 +1,34 @@ +/* Copyright 2021 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* key matrix size */ +#define MATRIX_ROWS 1 +#define MATRIX_COLS 12 + +/* key matrix pins + * Direct pins is not used because there is not a shared ground position + * between all compatible microcontrollers. +*/ +#define MATRIX_ROW_PINS { D7 } +#define MATRIX_COL_PINS { D1, D0, D4, C6, E6, B4, F4, F5, F6, F7, B3, B2 } +#define UNUSED_PINS + +/* doesn't really matter lol */ +#define DIODE_DIRECTION COL2ROW diff --git a/keyboards/40percentclub/polyandry/promicro/promicro.c b/keyboards/40percentclub/polyandry/promicro/promicro.c new file mode 100644 index 000000000000..ea1dd517886d --- /dev/null +++ b/keyboards/40percentclub/polyandry/promicro/promicro.c @@ -0,0 +1,16 @@ +/* Copyright 2021 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "promicro.h" diff --git a/keyboards/40percentclub/polyandry/promicro/promicro.h b/keyboards/40percentclub/polyandry/promicro/promicro.h new file mode 100644 index 000000000000..65e2b4b9c2aa --- /dev/null +++ b/keyboards/40percentclub/polyandry/promicro/promicro.h @@ -0,0 +1,27 @@ +/* Copyright 2021 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "polyandry.h" + +#define LAYOUT( \ + K000, K001, K002, \ + K003, K004, K005, \ + K006, K007, K008, \ + K009, K010, K011 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011 } \ +} diff --git a/keyboards/40percentclub/polyandry/promicro/rules.mk b/keyboards/40percentclub/polyandry/promicro/rules.mk new file mode 100644 index 000000000000..cf663a7ed6aa --- /dev/null +++ b/keyboards/40percentclub/polyandry/promicro/rules.mk @@ -0,0 +1,5 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina diff --git a/keyboards/40percentclub/polyandry/readme.md b/keyboards/40percentclub/polyandry/readme.md new file mode 100644 index 000000000000..b6acf3cd7ffb --- /dev/null +++ b/keyboards/40percentclub/polyandry/readme.md @@ -0,0 +1,53 @@ +# Polyandry/polypad + +![Polyandry](https://1.bp.blogspot.com/-97uoICZvZec/XSdpvCVFFlI/AAAAAAACVZY/BlCRjxjDqDAxOZa6C5ddQr0OsFQ9VZv5wCLcBGAs/s1600/d1.jpg) +=== + +3x4/4x3 grid layout, multiple controllers supported +- Pro Micro +- PJRC Teensy 2.0 + +(**The below are not currently ported:**) + +- PJRC Teensy LC/3.2 +- PJRC Teensy 3.5/3.6 +- Adafruit ItsyBitsy ATMega32u4 +- Adafruit ItsyBitsy M0 +- Adafruit ItsyBitsy M4 + +The matrix is electrically 1x12 with no diodes, with a thirteenth pin used for the column rather than a ground in order to be compatible with all the listed microcontrollers.. + +The default keymap is a testing keymap that is intended to make sure all of the keys on the matrix are working and properly assigned. + +[The original (minimal arduino sketch) firmware, with support for some unsupported controllers](https://git.40percent.club/di0ib/Misc/src/branch/master/polyandry) + +Keyboard Maintainer: QMK Community +Hardware Supported: Polyandry PCB +Hardware Availability: [Polyandry gerbers are on 40percent.club](https://www.40percent.club/2019/07/polyandry.html) + +Make example for this keyboard (after setting up your build environment): + + make 40percentclub/polyandry:default + or + qmk compile -kb 40percentclub/polyandry -km default + +Default firmware is for an Arduino Pro Micro knockoff. + +If you would like to specify a controller: + + make 40percentclub/polyandry/promicro:default + or + qmk compile -kb 40percentclub/polyandry/promicro -km default + make 40percentclub/polyandry/teensy2:default + or + qmk compile -kb 40percentclub/polyandry/teensy2 -km default + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the top left key of the keyboard (top right or bottom left in horizontal configuration) +* **Physical reset**: Briefly press the button on the bottom of the microcontroller or, if not present short the pin marked RST to a GND. +* **Keycode in layout**: Press the key mapped to `RESET` if it is available + +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/40percentclub/polyandry/rules.mk b/keyboards/40percentclub/polyandry/rules.mk new file mode 100644 index 000000000000..0b1cf36f9ce9 --- /dev/null +++ b/keyboards/40percentclub/polyandry/rules.mk @@ -0,0 +1,15 @@ +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +DEFAULT_FOLDER = 40percentclub/polyandry/promicro diff --git a/keyboards/40percentclub/polyandry/teensy2/config.h b/keyboards/40percentclub/polyandry/teensy2/config.h new file mode 100644 index 000000000000..d730ce6f940d --- /dev/null +++ b/keyboards/40percentclub/polyandry/teensy2/config.h @@ -0,0 +1,36 @@ +/* Copyright 2021 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* key matrix size */ +#define MATRIX_ROWS 1 +#define MATRIX_COLS 12 + +/* key matrix pins */ + +// Note from original contributor (ryjelsum): +// Untested - don't have teensy2. if some keys do not function or are in wrong place, +// please check the pin definitions. I may have screwed up. :) + +#define MATRIX_ROW_PINS { D3 } +#define MATRIX_COL_PINS { B7, D0, D1, D2, C6, C7, F6, F7, B6, B5, D7, D6 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW diff --git a/keyboards/40percentclub/polyandry/teensy2/rules.mk b/keyboards/40percentclub/polyandry/teensy2/rules.mk new file mode 100644 index 000000000000..320633f80f33 --- /dev/null +++ b/keyboards/40percentclub/polyandry/teensy2/rules.mk @@ -0,0 +1,5 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = halfkay diff --git a/keyboards/40percentclub/polyandry/teensy2/teensy2.c b/keyboards/40percentclub/polyandry/teensy2/teensy2.c new file mode 100644 index 000000000000..33cfb6e553c8 --- /dev/null +++ b/keyboards/40percentclub/polyandry/teensy2/teensy2.c @@ -0,0 +1,16 @@ +/* Copyright 2021 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "teensy2.h" diff --git a/keyboards/40percentclub/polyandry/teensy2/teensy2.h b/keyboards/40percentclub/polyandry/teensy2/teensy2.h new file mode 100644 index 000000000000..118eb353a4f3 --- /dev/null +++ b/keyboards/40percentclub/polyandry/teensy2/teensy2.h @@ -0,0 +1,32 @@ +/* Copyright 2021 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +//NOTE TO FUTURE FROM RYJELSUM (original contributor): +//This has been unchanged from the promicro.h file. +//I DO NOT HAVE A TEENSY 2.0 TO TEST WITH. +//I believe this should still work - but it's not a sure thing. + +#include "polyandry.h" + +#define LAYOUT( \ + K000, K001, K002, \ + K003, K004, K005, \ + K006, K007, K008, \ + K009, K010, K011 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011 } \ +} diff --git a/keyboards/40percentclub/sixpack/config.h b/keyboards/40percentclub/sixpack/config.h index db91ca7b80de..2ec676018c92 100644 --- a/keyboards/40percentclub/sixpack/config.h +++ b/keyboards/40percentclub/sixpack/config.h @@ -40,8 +40,6 @@ along with this program. If not, see . * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) * */ -// #define MATRIX_ROW_PINS { B0 } // B0 equivalents the ground pin -// #define MATRIX_COL_PINS { E6, D7, C6, D4 } #define DIRECT_PINS { \ { D4, C6, D7 }, \ { E6, B4, B5 } \ @@ -56,6 +54,11 @@ along with this program. If not, see . #define BACKLIGHT_LEVELS 6 #define BACKLIGHT_PINS { F4, F5 } // Top Row, Bottom Row +/* LED Indicators */ +#define LED_PIN_ON_STATE 0 +#define LED_CAPS_LOCK_PIN B0 // RX Led +#define LED_NUM_LOCK_PIN D5 // TX Led + // #define RGB_DI_PIN B1 // PB1 on expansion connector // #ifdef RGB_DI_PIN // #define RGBLED_NUM 16 diff --git a/keyboards/40percentclub/sixpack/info.json b/keyboards/40percentclub/sixpack/info.json index 3c78e26fbc4b..3e02a01bc2fd 100644 --- a/keyboards/40percentclub/sixpack/info.json +++ b/keyboards/40percentclub/sixpack/info.json @@ -1,9 +1,7 @@ { - "keyboard_name": "sixpack", + "keyboard_name": "Six Pack", "url": "https://www.40percent.club/2017/05/six-pack-11.html", "maintainer": "qmk", - "width": 3, - "height": 2, "layouts": { "LAYOUT_ortho_2x3": { "layout": [ diff --git a/keyboards/40percentclub/sixpack/keymaps/via/keymap.c b/keyboards/40percentclub/sixpack/keymaps/via/keymap.c index f3268a22abba..e2eaaa1d0a45 100644 --- a/keyboards/40percentclub/sixpack/keymaps/via/keymap.c +++ b/keyboards/40percentclub/sixpack/keymaps/via/keymap.c @@ -33,9 +33,5 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS), [3] = LAYOUT_ortho_2x3(KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), - [4] = LAYOUT_ortho_2x3(KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS), - [5] = LAYOUT_ortho_2x3(KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS), }; diff --git a/keyboards/40percentclub/sixpack/rules.mk b/keyboards/40percentclub/sixpack/rules.mk index 9d7d9a2cf0f5..c4689b154dee 100644 --- a/keyboards/40percentclub/sixpack/rules.mk +++ b/keyboards/40percentclub/sixpack/rules.mk @@ -7,16 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output + +LAYOUTS = ortho_2x3 diff --git a/keyboards/40percentclub/tomato/info.json b/keyboards/40percentclub/tomato/info.json index b24f97bcd962..57bcfd17a303 100644 --- a/keyboards/40percentclub/tomato/info.json +++ b/keyboards/40percentclub/tomato/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Tomato", "url": "", "maintainer": "qmk", - "width": 10, - "height": 3, "layouts": { "LAYOUT_ortho_3x10": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}] diff --git a/keyboards/40percentclub/tomato/keymaps/default/keymap.c b/keyboards/40percentclub/tomato/keymaps/default/keymap.c index 01a868d7e305..befdad0e2428 100644 --- a/keyboards/40percentclub/tomato/keymaps/default/keymap.c +++ b/keyboards/40percentclub/tomato/keymaps/default/keymap.c @@ -97,47 +97,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { , _______,_______,_______,_______,RESET, _______,_______,_______,_______,_______ ), }; - -void matrix_init_user(void) { -} - -void matrix_scan_user(void) { -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - - if (usb_led & (1 << USB_LED_NUM_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_CAPS_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_SCROLL_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_COMPOSE)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_KANA)) { - - } else { - - } - -} diff --git a/keyboards/40percentclub/tomato/rules.mk b/keyboards/40percentclub/tomato/rules.mk index 80b40c719c6d..4f0b092cc249 100644 --- a/keyboards/40percentclub/tomato/rules.mk +++ b/keyboards/40percentclub/tomato/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 -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 diff --git a/keyboards/40percentclub/ut47/info.json b/keyboards/40percentclub/ut47/info.json index 59bffe99a37a..4993bebb0fc0 100644 --- a/keyboards/40percentclub/ut47/info.json +++ b/keyboards/40percentclub/ut47/info.json @@ -2,11 +2,8 @@ "keyboard_name": "UT47", "url": "", "maintainer": "qmk", - "width": 12.5, - "height": 4, "layouts": { "LAYOUT": { - "key_count": 47, "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"Backspace", "x":11, "y":0, "w":1.5}, {"label":"LT(3) / Tab", "x":0, "y":1, "w":1.25}, {"label":"A", "x":1.25, "y":1}, {"label":"S", "x":2.25, "y":1}, {"label":"D", "x":3.25, "y":1}, {"label":"F", "x":4.25, "y":1}, {"label":"G", "x":5.25, "y":1}, {"label":"H", "x":6.25, "y":1}, {"label":"J", "x":7.25, "y":1}, {"label":"K", "x":8.25, "y":1}, {"label":"L", "x":9.25, "y":1}, {"label":":", "x":10.25, "y":1}, {"label":"\"", "x":11.25, "y":1, "w":1.25}, {"label":"Shift", "x":0, "y":2, "w":1.5}, {"label":"Z", "x":1.5, "y":2}, {"label":"X", "x":2.5, "y":2}, {"label":"C", "x":3.5, "y":2}, {"label":"V", "x":4.5, "y":2}, {"label":"B", "x":5.5, "y":2}, {"label":"N", "x":6.5, "y":2}, {"label":"M", "x":7.5, "y":2}, {"label":"<", "x":8.5, "y":2}, {"label":">", "x":9.5, "y":2}, {"label":"?", "x":10.5, "y":2}, {"label":"Shift / Enter", "x":11.5, "y":2}, {"label":"Ctrl", "x":0, "y":3}, {"label":"Alt", "x":1, "y":3}, {"label":"GUI", "x":2, "y":3}, {"label":"Menu", "x":3, "y":3}, {"label":"MO(2)", "x":4, "y":3, "w":1.25}, {"x":5.25, "y":3, "w":2}, {"label":"MO(1)", "x":7.25, "y":3, "w":1.25}, {"label":"\u2190", "x":8.5, "y":3}, {"label":"\u2193", "x":9.5, "y":3}, {"label":"\u2191", "x":10.5, "y":3}, {"label":"\u2192", "x":11.5, "y":3}] } } diff --git a/keyboards/40percentclub/ut47/keymaps/nordic/keymap.c b/keyboards/40percentclub/ut47/keymaps/nordic/keymap.c index f3e297ec03d6..52372e285785 100644 --- a/keyboards/40percentclub/ut47/keymaps/nordic/keymap.c +++ b/keyboards/40percentclub/ut47/keymaps/nordic/keymap.c @@ -47,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LAYOUT( /* Base - L0 */ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, - LT3_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, NO_APOS, MT_RSFT_ENT, + LT3_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, NO_QUOT, MT_RSFT_ENT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, MO(4), KC_LCTL, KC_LGUI, MO(4), KC_LALT, MO(2), KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), @@ -84,7 +84,7 @@ LAYOUT( /* Right modifier - L1 */ */ LAYOUT( /* Left modifier - L2 */ - NO_SECT, KC_EXCLAIM, NO_QUO2, KC_HASH, NO_BULT, KC_PERCENT, NO_AMPR, NO_SLSH, NO_EQL, NO_PLUS, NO_BSLS, KC_DELETE, + NO_SECT, KC_EXCLAIM, NO_DQUO, KC_HASH, NO_CURR, KC_PERCENT, NO_AMPR, NO_SLSH, NO_EQL, NO_PLUS, NO_BSLS, KC_DELETE, _______, _______, NO_QUES, NO_LCBR, NO_LBRC, NO_LPRN, NO_RPRN, NO_RBRC, NO_RCBR, KC_F10, KC_F11, KC_F12, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_PGUP, _______, _______, _______, _______, KC_CAPS, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END @@ -122,9 +122,9 @@ LAYOUT( /* Hold Tab down - L3 */ */ LAYOUT( /* Norsk - L4 */ - _______, _______, NO_AT, NO_PND, NO_DLR, NO_TILD, _______, NO_QUOT, NO_ACUT, NO_GRV, NO_AA, _______, - _______, _______, _______, NO_EURO, _______, _______, _______, _______, NO_CIRC, NO_OSLH, NO_AE, _______, - _______, NO_LESS, _______, _______, _______, _______, _______, NO_MU, _______, _______, _______, _______, + _______, _______, NO_AT, NO_PND, NO_DLR, NO_TILD, _______, NO_QUOT, NO_ACUT, NO_GRV, NO_ARNG, _______, + _______, _______, _______, NO_EURO, _______, _______, _______, _______, NO_CIRC, NO_OSTR, NO_AE, _______, + _______, NO_LABK, _______, _______, _______, _______, _______, NO_MICR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TO(5), _______, _______, _______ ), diff --git a/keyboards/40percentclub/ut47/keymaps/rgb/keymap.c b/keyboards/40percentclub/ut47/keymaps/rgb/keymap.c index 77fa5b4017f1..ae8ad3e378ec 100644 --- a/keyboards/40percentclub/ut47/keymaps/rgb/keymap.c +++ b/keyboards/40percentclub/ut47/keymaps/rgb/keymap.c @@ -43,8 +43,8 @@ LAYOUT( ), LAYOUT( - KC_FN6, KC_FN7, KC_FN8, KC_FN9, KC_FN10, KC_FN11, KC_FN12, KC_FN13, KC_FN14, KC_FN15, KC_FN16, KC_DELETE, - _______, _______, _______, _______, _______, _______, _______, KC_FN17, KC_FN18, KC_FN19, KC_FN20, KC_FN21, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_DELETE, + _______, _______, _______, _______, _______, _______, _______, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______, _______, _______, KC_CAPS, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END ), diff --git a/keyboards/40percentclub/ut47/post_rules.mk b/keyboards/40percentclub/ut47/post_rules.mk new file mode 100644 index 000000000000..7051ee413d7f --- /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 3c8a8f68f5b5..8d2668c79701 100644 --- a/keyboards/40percentclub/ut47/rules.mk +++ b/keyboards/40percentclub/ut47/rules.mk @@ -2,38 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +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/40percentclub/ut47/ut47.c b/keyboards/40percentclub/ut47/ut47.c index f467fd130ab4..9054335e5ac1 100644 --- a/keyboards/40percentclub/ut47/ut47.c +++ b/keyboards/40percentclub/ut47/ut47.c @@ -18,20 +18,6 @@ #include "protocol/serial.h" #endif -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - bool process_record_kb(uint16_t keycode, keyrecord_t *record) { // put your per-action keyboard code here // runs for every action, just before processing by the firmware @@ -42,9 +28,3 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) { } return process_record_user(keycode, record); } - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/45_ats/info.json b/keyboards/45_ats/info.json index ead5090a54fb..2ea14357ee4d 100644 --- a/keyboards/45_ats/info.json +++ b/keyboards/45_ats/info.json @@ -2,8 +2,6 @@ "keyboard_name": "45-ATS", "url": "", "maintainer": "The-Royal", - "width": 14.25, - "height": 4.25, "layouts": { "LAYOUT_split_space": { "layout": [ @@ -166,4 +164,3 @@ } } } - diff --git a/keyboards/45_ats/rules.mk b/keyboards/45_ats/rules.mk index db96f0afc8cf..00a8fa07a459 100644 --- a/keyboards/45_ats/rules.mk +++ b/keyboards/45_ats/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/4by3/info.json b/keyboards/4by3/info.json index fb78f05d51f4..50f7c44b4f8c 100644 --- a/keyboards/4by3/info.json +++ b/keyboards/4by3/info.json @@ -2,11 +2,8 @@ "keyboard_name": "4by3", "url": "https://github.com/eliassjogreen/4by3", "maintainer": "eliassjogreen", - "width": 4, - "height": 3, "layouts": { "LAYOUT_horizontal": { - "key_count": 12, "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 }, @@ -14,7 +11,6 @@ ] }, "LAYOUT_vertical_right": { - "key_count": 12, "layout": [ { "x": 0, "y": 0 }, { "x": 1, "y": 0 }, { "x": 2, "y": 0 }, { "x": 0, "y": 1 }, { "x": 1, "y": 1 }, { "x": 2, "y": 1 }, @@ -23,7 +19,6 @@ ] }, "LAYOUT_vertical_left": { - "key_count": 12, "layout": [ { "x": 0, "y": 0 }, { "x": 1, "y": 0 }, { "x": 2, "y": 0 }, { "x": 0, "y": 1 }, { "x": 1, "y": 1 }, { "x": 2, "y": 1 }, diff --git a/keyboards/4by3/rules.mk b/keyboards/4by3/rules.mk index 912449366ad6..4fb3d71e4a7b 100644 --- a/keyboards/4by3/rules.mk +++ b/keyboards/4by3/rules.mk @@ -2,13 +2,6 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina EXTRAKEY_ENABLE = yes diff --git a/keyboards/4pplet/aekiso60/keymaps/default/keymap.c b/keyboards/4pplet/aekiso60/keymaps/default/keymap.c index 4f3e895a5e1d..e0938a5fdefe 100644 --- a/keyboards/4pplet/aekiso60/keymaps/default/keymap.c +++ b/keyboards/4pplet/aekiso60/keymaps/default/keymap.c @@ -3,19 +3,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[0] = 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_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_ENT, - KC_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, - KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), - KC_LCTL, KC_LGUI, KC_LALT, _______, KC_SPC, _______, KC_RALT, KC_RGUI, KC_RCTL), - -[1] = LAYOUT_all( - KC_EXEC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, - _______, KC_BSPC, KC_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, KC_PENT, - KC_CAPS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MUTE, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, KC_INS, - _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_PPLS, KC_PMNS, _______, KC_END, KC_PGDN, KC_DOWN, _______, _______, - RESET, _______, _______, _______, _______, _______, KC_BRID, KC_BRIU, _______) + [0] = 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_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, 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_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, _______, KC_SPC, _______, KC_RALT, KC_RGUI, KC_RCTL + ), + [1] = LAYOUT_all( + KC_EXEC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + _______, KC_BSPC, KC_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, + KC_CAPS, KC_LEFT, KC_DOWN, KC_RGHT, KC_MUTE, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_INS, KC_PENT, + _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_PPLS, KC_PMNS, _______, KC_END, KC_PGDN, KC_DOWN, _______, _______, + RESET, _______, _______, _______, _______, _______, KC_BRID, KC_BRIU, _______ + ) }; - - diff --git a/keyboards/4pplet/aekiso60/keymaps/via/keymap.c b/keyboards/4pplet/aekiso60/keymaps/via/keymap.c index d2036f60bd76..151c3bc4a762 100644 --- a/keyboards/4pplet/aekiso60/keymaps/via/keymap.c +++ b/keyboards/4pplet/aekiso60/keymaps/via/keymap.c @@ -3,32 +3,32 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[0] = 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_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_ENT, - KC_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, - KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), - KC_LCTL, KC_LGUI, KC_LALT, _______, KC_SPC, _______, KC_RALT, KC_RGUI, KC_RCTL), - -[1] = LAYOUT_all( - KC_EXEC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, - _______, KC_BSPC, KC_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, KC_PENT, - KC_CAPS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MUTE, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, KC_INS, - _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_PPLS, KC_PMNS, _______, KC_END, KC_PGDN, KC_DOWN, _______, _______, - RESET, _______, _______, _______, _______, _______, KC_BRID, KC_BRIU, _______), - -[2] = LAYOUT_all( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______), - -[3] = LAYOUT_all( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______) + [0] = 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_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, 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_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, _______, KC_SPC, _______, KC_RALT, KC_RGUI, KC_RCTL + ), + [1] = LAYOUT_all( + KC_EXEC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + _______, KC_BSPC, KC_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, + KC_CAPS, KC_LEFT, KC_DOWN, KC_RGHT, KC_MUTE, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_INS, KC_PENT, + _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_PPLS, KC_PMNS, _______, KC_END, KC_PGDN, KC_DOWN, _______, _______, + RESET, _______, _______, _______, _______, _______, KC_BRID, KC_BRIU, _______ + ), + [2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) }; - diff --git a/keyboards/4pplet/aekiso60/rev_a/info.json b/keyboards/4pplet/aekiso60/rev_a/info.json index 892931423206..7f2e2be78a5c 100644 --- a/keyboards/4pplet/aekiso60/rev_a/info.json +++ b/keyboards/4pplet/aekiso60/rev_a/info.json @@ -2,8 +2,6 @@ "keyboard_name": "AEKISO60 Rev A", "url": "", "maintainer": "4pplet", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/4pplet/aekiso60/rev_a/rev_a.h b/keyboards/4pplet/aekiso60/rev_a/rev_a.h index f68a320b7fbc..16acf01c2097 100644 --- a/keyboards/4pplet/aekiso60/rev_a/rev_a.h +++ b/keyboards/4pplet/aekiso60/rev_a/rev_a.h @@ -2,12 +2,25 @@ #include "quantum.h" +/* LAYOUT_all + * ┌────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬──────┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │ + * ├────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬────┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │ │ + * ├──────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐1d │ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │ │ + * ├─────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ + * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │ + * ├─────┼───┴┬──┴──┬┴───┴───┴─┬─┴─┬─┴───┴───┴┬──┴──┬┴───┬─┴───┤ + * │40 │41 │43 │44 │45 │46 │48 │4a │4b │ + * └─────┴────┴─────┴──────────┴───┴──────────┴─────┴────┴─────┘ + */ #define LAYOUT_all( \ - 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, k3c, k3d, \ - k40, k41, k43, k44, k45, k46, k48, k4a, k4b \ + 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, k1d, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \ + k40, k41, k43, k44, k45, k46, k48, k4a, k4b \ ) \ { \ {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \ diff --git a/keyboards/4pplet/aekiso60/rev_a/rules.mk b/keyboards/4pplet/aekiso60/rev_a/rules.mk index b98fb7e33fc9..6ce22f2cfd85 100644 --- a/keyboards/4pplet/aekiso60/rev_a/rules.mk +++ b/keyboards/4pplet/aekiso60/rev_a/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u2 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/4pplet/bootleg/info.json b/keyboards/4pplet/bootleg/info.json index 4abffda374fb..9719b07150b3 100644 --- a/keyboards/4pplet/bootleg/info.json +++ b/keyboards/4pplet/bootleg/info.json @@ -2,8 +2,6 @@ "keyboard_name": "bootleg Rev A", "url": "https://github.com/4pplet/bootlegs", "maintainer": "4pplet", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/4pplet/bootleg/rev_a/rules.mk b/keyboards/4pplet/bootleg/rev_a/rules.mk index 380c35d4f7a4..93a6a600eaf3 100644 --- a/keyboards/4pplet/bootleg/rev_a/rules.mk +++ b/keyboards/4pplet/bootleg/rev_a/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/4pplet/eagle_viper_rep/info.json b/keyboards/4pplet/eagle_viper_rep/info.json index dced671bcad0..26d3d45893dd 100644 --- a/keyboards/4pplet/eagle_viper_rep/info.json +++ b/keyboards/4pplet/eagle_viper_rep/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Eagle/Viper Rep", "url": "https://github.com/4pplet/eagle_viper_rep", "maintainer": "4pplet", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ @@ -48,7 +46,8 @@ { "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": "~", "x": 12.75, "y": 2}, + { "label": "Enter", "x": 13.75, "y": 2, "w": 1.25 }, { "label": "Shift", "x": 0, "y": 3, "w": 1.25 }, { "label": "|", "x": 1.25, "y": 3 }, { "label": "Z", "x": 2.25, "y": 3 }, diff --git a/keyboards/4pplet/eagle_viper_rep/rev_a/rules.mk b/keyboards/4pplet/eagle_viper_rep/rev_a/rules.mk index 2a1539ed5d23..ef4bfa396a2b 100644 --- a/keyboards/4pplet/eagle_viper_rep/rev_a/rules.mk +++ b/keyboards/4pplet/eagle_viper_rep/rev_a/rules.mk @@ -4,12 +4,11 @@ MCU = STM32F072 # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = yes BACKLIGHT_DRIVER = pwm diff --git a/keyboards/4pplet/steezy60/rev_a/info.json b/keyboards/4pplet/steezy60/rev_a/info.json index 19441871390d..cecd47559f76 100644 --- a/keyboards/4pplet/steezy60/rev_a/info.json +++ b/keyboards/4pplet/steezy60/rev_a/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Steezy60 Rev A", "url": "", "maintainer": "4pplet", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/4pplet/steezy60/rev_a/rules.mk b/keyboards/4pplet/steezy60/rev_a/rules.mk index b98fb7e33fc9..6ce22f2cfd85 100644 --- a/keyboards/4pplet/steezy60/rev_a/rules.mk +++ b/keyboards/4pplet/steezy60/rev_a/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u2 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/4pplet/waffling60/info.json b/keyboards/4pplet/waffling60/info.json index 6c5c83fad6c1..0ff2c1f7e87c 100644 --- a/keyboards/4pplet/waffling60/info.json +++ b/keyboards/4pplet/waffling60/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Waffling60 Rev A", "url": "https://github.com/4pplet/waffling60", "maintainer": "4pplet", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/4pplet/waffling60/rev_a/rules.mk b/keyboards/4pplet/waffling60/rev_a/rules.mk index b98fb7e33fc9..6ce22f2cfd85 100644 --- a/keyboards/4pplet/waffling60/rev_a/rules.mk +++ b/keyboards/4pplet/waffling60/rev_a/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u2 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/4pplet/waffling60/rev_b/rules.mk b/keyboards/4pplet/waffling60/rev_b/rules.mk index 69c524b7366d..addde7c5817a 100644 --- a/keyboards/4pplet/waffling60/rev_b/rules.mk +++ b/keyboards/4pplet/waffling60/rev_b/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/6ball/6ball.c b/keyboards/6ball/6ball.c index 5060a5db46a2..1eddde9ba5c7 100644 --- a/keyboards/6ball/6ball.c +++ b/keyboards/6ball/6ball.c @@ -1,5 +1 @@ #include "6ball.h" - -void matrix_init_kb(void) { - matrix_init_user(); -} diff --git a/keyboards/6ball/6ball.h b/keyboards/6ball/6ball.h index 234235341dcb..ef73a7205312 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 c7d4d3354ac9..cc496d675a80 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -46,5 +45,3 @@ along with this program. If not, see . #define DIODE_DIRECTION COL2ROW #define TAPPING_TERM 200 - -#endif diff --git a/keyboards/6ball/info.json b/keyboards/6ball/info.json index ec95560c6a24..fc742ad517ba 100644 --- a/keyboards/6ball/info.json +++ b/keyboards/6ball/info.json @@ -2,8 +2,6 @@ "keyboard_name": "6-Ball", "url": "", "maintainer": "qmk", - "width": 3, - "height": 3, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/6ball/rules.mk b/keyboards/6ball/rules.mk index e4f7093f7408..0cbf312a205a 100644 --- a/keyboards/6ball/rules.mk +++ b/keyboards/6ball/rules.mk @@ -2,31 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output UNICODE_ENABLE = yes # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend diff --git a/keyboards/7c8/framework/info.json b/keyboards/7c8/framework/info.json index 5be8d09374f1..f78ea1eb580f 100644 --- a/keyboards/7c8/framework/info.json +++ b/keyboards/7c8/framework/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Framework", "url": "", "maintainer": "stevennguyen", - "width": 12, - "height": 5, "layouts": { "LAYOUT_ortho_5x12": { "layout": [ diff --git a/keyboards/7c8/framework/rules.mk b/keyboards/7c8/framework/rules.mk index 185a5119c136..2a817cd16f11 100644 --- a/keyboards/7c8/framework/rules.mk +++ b/keyboards/7c8/framework/rules.mk @@ -1,20 +1,19 @@ +# MCU name MCU = atmega328p -BOOTLOADER = USBasp -BOOTMAGIC_ENABLE = no +# Bootloader selection +BOOTLOADER = usbasploader + +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes EXTRAKEY_ENABLE = yes CONSOLE_ENABLE = no COMMAND_ENABLE = no -SLEEP_LED_ENABLE = no NKRO_ENABLE = no BACKLIGHT_ENABLE = no RGBLIGHT_ENABLE = no -MIDI_ENABLE = no -UNICODE_ENABLE = no -BLUETOOTH_ENABLE = no AUDIO_ENABLE = no FAUXCLICKY_ENABLE = no LAYOUTS_HAS_RGB = no ENCODER_ENABLE = yes -LEADER_ENABLE = yes \ No newline at end of file +LEADER_ENABLE = yes diff --git a/keyboards/7skb/info.json b/keyboards/7skb/info.json index c737af4fc9a5..f85f32cb6db1 100644 --- a/keyboards/7skb/info.json +++ b/keyboards/7skb/info.json @@ -2,8 +2,6 @@ "keyboard_name": "7skb", "url": "https://salicylic-acid3.hatenablog.com/", "maintainer": "Salicylic_acid3", - "width": 16, - "height": 5, "layouts": { "LAYOUT": { "layout": [ @@ -73,4 +71,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/7skb/keymaps/salicylic/keymap.c b/keyboards/7skb/keymaps/salicylic/keymap.c index bf3433b17ce6..ad12f49d5b47 100644 --- a/keyboards/7skb/keymaps/salicylic/keymap.c +++ b/keyboards/7skb/keymaps/salicylic/keymap.c @@ -85,7 +85,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------| JP_QUOT, JP_EXLM, JP_QUES, JP_LBRC, JP_RBRC, JP_TILD, KC_P6, KC_P7, KC_P8, KC_P9, JP_ASTR, JP_SLSH, _______, KC_BSPC, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------| - JP_QUOT, JP_HASH, JP_DQT, JP_LPRN, JP_RPRN, JP_AT, XXXXXXX, KC_P4, KC_P5, KC_P6, JP_MINS, JP_EQL, _______, + JP_QUOT, JP_HASH, JP_DQUO, JP_LPRN, JP_RPRN, JP_AT, XXXXXXX, KC_P4, KC_P5, KC_P6, JP_MINS, JP_EQL, _______, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| JP_CIRC, JP_PERC, JP_AMPR, JP_SCLN, JP_COLN, JP_PIPE, KC_P0, KC_P1, KC_P2, KC_P3, JP_PLUS, _______, _______, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| diff --git a/keyboards/7skb/rules.mk b/keyboards/7skb/rules.mk index d663af19f852..c68a552e498e 100644 --- a/keyboards/7skb/rules.mk +++ b/keyboards/7skb/rules.mk @@ -2,33 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend SPLIT_KEYBOARD = yes diff --git a/keyboards/7splus/info.json b/keyboards/7splus/info.json index 55ead9976d4b..a87909c07bd3 100644 --- a/keyboards/7splus/info.json +++ b/keyboards/7splus/info.json @@ -2,8 +2,6 @@ "keyboard_name": "7splus", "url": "https://salicylic-acid3.hatenablog.com/", "maintainer": "Salicylic_acid3", - "width": 17, - "height": 6.25, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/7splus/keymaps/salicylic/keymap.c b/keyboards/7splus/keymaps/salicylic/keymap.c index 4435bf98cba2..cbe4e57dcffe 100644 --- a/keyboards/7splus/keymaps/salicylic/keymap.c +++ b/keyboards/7splus/keymaps/salicylic/keymap.c @@ -84,7 +84,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------| JP_QUOT, JP_EXLM, JP_QUES, JP_LBRC, JP_RBRC, JP_TILD, KC_P6, KC_P7, KC_P8, KC_P9, JP_ASTR, JP_SLSH, _______, _______, KC_HOME, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------| -LCTL_T(JP_QUOT),JP_HASH, JP_DQT, JP_LPRN, JP_RPRN, JP_AT, XXXXXXX, KC_P4, KC_P5, KC_P6, JP_MINS, JP_EQL, _______, KC_END, +LCTL_T(JP_QUOT),JP_HASH,JP_DQUO, JP_LPRN, JP_RPRN, JP_AT, XXXXXXX, KC_P4, KC_P5, KC_P6, JP_MINS, JP_EQL, _______, KC_END, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------| SFT_T(JP_CIRC),JP_PERC, JP_AMPR, JP_SCLN, JP_COLN, JP_PIPE, KC_P0, KC_P1, KC_P2, KC_P3, JP_PLUS, _______, KC_UP, KC_PGUP, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------| diff --git a/keyboards/7splus/rules.mk b/keyboards/7splus/rules.mk index 52da9f00eda8..228de4894582 100644 --- a/keyboards/7splus/rules.mk +++ b/keyboards/7splus/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = yes diff --git a/keyboards/8pack/info.json b/keyboards/8pack/info.json index 82122b8f799b..fc1bcb8ef8cf 100644 --- a/keyboards/8pack/info.json +++ b/keyboards/8pack/info.json @@ -2,8 +2,6 @@ "keyboard_name": "8-Pack", "url": "https://github.com/cgarcia2097/8-Pack", "maintainer": "Charles Garcia", - "width": 4, - "height": 2, "layouts": { "LAYOUT": { "layout": [ @@ -18,4 +16,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/8pack/rules.mk b/keyboards/8pack/rules.mk index 4ed443daa59e..9b982b181bae 100644 --- a/keyboards/8pack/rules.mk +++ b/keyboards/8pack/rules.mk @@ -2,28 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # Audio control and System control 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 = no # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality AUDIO_ENABLE = no RGBLIGHT_ENABLE = yes -OLED_DRIVER_ENABLE = no +OLED_ENABLE = no DEFAULT_FOLDER = 8pack/rev12 diff --git a/keyboards/9key/9key.c b/keyboards/9key/9key.c index ed8e91e73b59..bbbabb81c4b8 100644 --- a/keyboards/9key/9key.c +++ b/keyboards/9key/9key.c @@ -1,5 +1 @@ #include "9key.h" - -void matrix_init_kb(void) { - matrix_init_user(); -} \ No newline at end of file diff --git a/keyboards/9key/9key.h b/keyboards/9key/9key.h index b60dc53c008d..ad809da4b814 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 3c7b4e0ad677..b0462eb50fe2 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -45,5 +44,3 @@ along with this program. If not, see . #define DIODE_DIRECTION COL2ROW #define TAPPING_TERM 200 - -#endif diff --git a/keyboards/9key/info.json b/keyboards/9key/info.json index cadfdbc4c298..326a63b12ca8 100644 --- a/keyboards/9key/info.json +++ b/keyboards/9key/info.json @@ -2,8 +2,6 @@ "keyboard_name": "9key", "url": "", "maintainer": "qmk", - "width": 3, - "height": 3, "layouts": { "LAYOUT": { "layout": [{"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, {"label":"k02", "x":2, "y":0}, {"label":"k10", "x":0, "y":1}, {"label":"k11", "x":1, "y":1}, {"label":"k12", "x":2, "y":1}, {"label":"k20", "x":0, "y":2}, {"label":"k21", "x":1, "y":2}, {"label":"k22", "x":2, "y":2}] diff --git a/keyboards/9key/keymaps/bcat/keymap.c b/keyboards/9key/keymaps/bcat/keymap.c index 5c30d6308dd0..5c08a42a56bf 100644 --- a/keyboards/9key/keymaps/bcat/keymap.c +++ b/keyboards/9key/keymaps/bcat/keymap.c @@ -1,3 +1,19 @@ +/* Copyright 2021 Jonathan Rascher + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #include QMK_KEYBOARD_H enum layer { @@ -6,18 +22,19 @@ enum layer { }; #define LY_FUNC MO(LAYER_FUNCTION) -#define KY_LOCK LCA(KC_L) /* Cinnamon lock screen */ +#define KY_LOCK LCA(KC_L) /* Cinnamon lock screen */ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off [LAYER_DEFAULT] = LAYOUT( KC_MPLY, KC_VOLU, KC_MSTP, KC_MPRV, KC_VOLD, KC_MNXT, KY_LOCK, KC_MUTE, LY_FUNC ), - [LAYER_FUNCTION] = LAYOUT( EEP_RST, _______, RESET, _______, _______, _______, _______, _______, _______ ), + // clang-format on }; diff --git a/keyboards/9key/rules.mk b/keyboards/9key/rules.mk index b6c0c73be952..fe21aa058dd9 100644 --- a/keyboards/9key/rules.mk +++ b/keyboards/9key/rules.mk @@ -2,33 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output UNICODE_ENABLE = yes # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -API_SYSEX_ENABLE = yes -TAP_DANCE_ENABLE = no - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend diff --git a/keyboards/a_dux/a_dux.c b/keyboards/a_dux/a_dux.c new file mode 100644 index 000000000000..16bac16fa912 --- /dev/null +++ b/keyboards/a_dux/a_dux.c @@ -0,0 +1,37 @@ +/* Copyright 2018-2020 + * ENDO Katsuhiro + * David Philip Barr <@davidphilipbarr> + * Pierre Chevalier + * @filterpaper + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "a_dux.h" + +#ifdef SWAP_HANDS_ENABLE +__attribute__ ((weak)) +const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { + // Left + {{4, 4}, {3, 4}, {2, 4}, {1, 4}, {0, 4}}, + {{4, 5}, {3, 5}, {2, 5}, {1, 5}, {0, 5}}, + {{4, 6}, {3, 6}, {2, 6}, {1, 6}, {0, 6}}, + {{1, 7}, {0, 7}, {2, 7}, {3, 7}, {4, 7}}, + // Right + {{4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0}}, + {{4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1}}, + {{4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2}}, + {{1, 3}, {0, 3}, {2, 3}, {3, 3}, {4, 3}} +}; +#endif + diff --git a/keyboards/a_dux/a_dux.h b/keyboards/a_dux/a_dux.h new file mode 100644 index 000000000000..d143295845f7 --- /dev/null +++ b/keyboards/a_dux/a_dux.h @@ -0,0 +1,47 @@ +/* Copyright 2018-2020 ENDO Katsuhiro David Philip Barr <@davidphilipbarr> Pierre Chevalier + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "quantum.h" + +/* This a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + +// readability +#define ___ KC_NO + +#define LAYOUT( \ + 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, R16, R17 \ + ) \ + { \ + { L01, L02, L03, L04, L05 }, \ + { L06, L07, L08, L09, L10 }, \ + { L11, L12, L13, L14, L15 }, \ + { L16, L17, ___, ___, ___ }, \ + { R01, R02, R03, R04, R05 }, \ + { R06, R07, R08, R09, R10 }, \ + { R11, R12, R13, R14, R15 }, \ + { R16, R17, ___, ___, ___ } \ + } + diff --git a/keyboards/a_dux/config.h b/keyboards/a_dux/config.h new file mode 100644 index 000000000000..b00794577479 --- /dev/null +++ b/keyboards/a_dux/config.h @@ -0,0 +1,83 @@ +/* Copyright 2018-2020 ENDO Katsuhiro David Philip Barr <@davidphilipbarr> Pierre Chevalier + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xC2AB +#define PRODUCT_ID 0x3939 +#define DEVICE_VER 0x0001 +#define MANUFACTURER tapioki +#define PRODUCT Architeuthis dux + +/* key matrix size */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 5 + +/* + * 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) + * NO_DIODE = switches are directly connected to AVR pins + * +*/ +#define DIRECT_PINS { \ + { C6, D2, F7, B2, F4 }, \ + { D7, D0, F6, B3, F5 }, \ + { E6, D4, D3, B1, B6 }, \ + { B4, B5, NO_PIN, NO_PIN, NO_PIN } \ +} + +#define DIRECT_PINS_RIGHT { \ + { F4, B2, F7, D2, C6 }, \ + { F5, B3, F6, D0, D7 }, \ + { B6, B1, D3, D4, E6 }, \ + { B5, B4, NO_PIN, NO_PIN, NO_PIN } \ +} + + + +#define UNUSED_PINS + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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 + +/* Serial settings */ +#define USE_SERIAL + +/* serial.c configuration for split keyboard */ +#define SOFT_SERIAL_PIN D1 + +#define EE_HANDS + +/* Top left key on left half */ +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 +/* Top right key on right half */ +#define BOOTMAGIC_LITE_ROW_RIGHT 4 +#define BOOTMAGIC_LITE_COLUMN_RIGHT 4 diff --git a/keyboards/a_dux/info.json b/keyboards/a_dux/info.json new file mode 100644 index 000000000000..f1869f733216 --- /dev/null +++ b/keyboards/a_dux/info.json @@ -0,0 +1,52 @@ +{ + "keyboard_name": "Architeuthis dux", + "url": "https://github.com/tapioki/cephalopoda", + "maintainer": "@tapioki", + "layouts": { + "LAYOUT": { + "layout": [ + {"x": 0, "y": 1.33}, + {"x": 1, "y": 0.31}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0.28}, + {"x": 4, "y": 0.42}, + + {"x": 8, "y": 0.42}, + {"x": 9, "y": 0.28}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0.31}, + {"x": 12, "y": 1.33}, + + {"x": 0, "y": 2.33}, + {"x": 1, "y": 1.31}, + {"x": 2, "y": 1}, + {"x": 3, "y": 1.28}, + {"x": 4, "y": 1.42}, + + {"x": 8, "y": 1.42}, + {"x": 9, "y": 1.28}, + {"x": 10, "y": 1}, + {"x": 11, "y": 1.31}, + {"x": 12, "y": 2.33}, + + {"x": 0, "y": 3.33}, + {"x": 1, "y": 2.31}, + {"x": 2, "y": 2}, + {"x": 3, "y": 2.28}, + {"x": 4, "y": 2.42}, + + {"x": 8, "y": 2.42}, + {"x": 9, "y": 2.28}, + {"x": 10, "y": 2}, + {"x": 11, "y": 2.31}, + {"x": 12, "y": 3.33}, + + {"x": 4, "y": 3.75}, + {"x": 5, "y": 4}, + + {"x": 7, "y": 4}, + {"x": 8, "y": 3.75} + ] + } + } +} diff --git a/keyboards/a_dux/keymaps/daliusd/config.h b/keyboards/a_dux/keymaps/daliusd/config.h new file mode 100644 index 000000000000..42e88a687fdf --- /dev/null +++ b/keyboards/a_dux/keymaps/daliusd/config.h @@ -0,0 +1,32 @@ +/* +Copyright 2021 Dalius Dobravolskas + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#define UNICODE_SELECTED_MODES UC_MAC, UC_LNX + +#define MOUSEKEY_INTERVAL 12 +#define MOUSEKEY_MAX_SPEED 6 +#define MOUSEKEY_TIME_TO_MAX 50 + +#define MOUSEKEY_DELAY 20 +// It makes sense to use the same delay for the mouseweel +#define MOUSEKEY_WHEEL_DELAY 100 +// The default is 100 +#define MOUSEKEY_WHEEL_INTERVAL 50 +// The default is 40 +#define MOUSEKEY_WHEEL_TIME_TO_MAX 100 diff --git a/keyboards/a_dux/keymaps/daliusd/keymap.c b/keyboards/a_dux/keymaps/daliusd/keymap.c new file mode 100644 index 000000000000..2a65ce45809d --- /dev/null +++ b/keyboards/a_dux/keymaps/daliusd/keymap.c @@ -0,0 +1,349 @@ +/* Copyright 2021 @daliusd + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +#include "oneshot.h" + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +enum layers { + _QWERTY, + _SYM, + _NAV, + _NUMB, + _TMUX, + _MOUSE, + _MISC, + _FUNC, +}; + +enum custom_keycodes { + TM_NEXT = SAFE_RANGE, + TM_PREV, + TM_LEFT, + TM_RIGHT, + TM_NEW, + TM_SLCT, + TM_SRCH, + TM_URL, + OS_CTRL, + OS_ALT, + OS_GUI, + OS_TMUX, + OS_MISC, + OS_FUNC, +}; + +// Shortcut to make keymap more readable + +#define L_NAV MO(_NAV) +#define L_SYM MO(_SYM) +#define L_MOUSE TG(_MOUSE) + +#define K_PRINT (QK_LCTL | QK_LSFT | QK_LGUI | KC_4) + +enum unicode_names { + SNEK, + EURO, + LT_S_A, + LT_L_A, + LT_S_C, + LT_L_C, + LT_S_E1, + LT_L_E1, + LT_S_E2, + LT_L_E2, + LT_S_I, + LT_L_I, + LT_S_S, + LT_L_S, + LT_S_U1, + LT_L_U1, + LT_S_U2, + LT_L_U2, + LT_S_Z, + LT_L_Z, + LT_OB, + LT_CB, +}; + +const uint32_t PROGMEM unicode_map[] = { + [SNEK] = 0x1F40D, // 🐍 + [EURO] = 0x20ac, // € + [LT_S_A] = 0x105, // ą + [LT_L_A] = 0x104, // Ą + [LT_S_C] = 0x10d, // č + [LT_L_C] = 0x10c, // Č + [LT_S_E1] = 0x119, // ę + [LT_L_E1] = 0x118, // Ę + [LT_S_E2] = 0x117, // ė + [LT_L_E2] = 0x116, // Ė + [LT_S_I] = 0x12f, // į + [LT_L_I] = 0x12e, // Į + [LT_S_S] = 0x161, // š + [LT_L_S] = 0x160, // Š' + [LT_S_U1] = 0x173, // ų + [LT_L_U1] = 0x172, // Ų + [LT_S_U2] = 0x16b, // ū + [LT_L_U2] = 0x16a, // Ū + [LT_S_Z] = 0x17e, // ž + [LT_L_Z] = 0x17d, // Ž + [LT_OB] = 0x201e, // „ + [LT_CB] = 0x201c, // “ +}; + +#define K_SNEK X(SNEK) +#define K_EURO X(EURO) +#define K_LT_A XP(LT_S_A, LT_L_A) +#define K_LT_C XP(LT_S_C, LT_L_C) +#define K_LT_E1 XP(LT_S_E1, LT_L_E1) +#define K_LT_E2 XP(LT_S_E2, LT_L_E2) +#define K_LT_I XP(LT_S_I, LT_L_I) +#define K_LT_S XP(LT_S_S, LT_L_S) +#define K_LT_U1 XP(LT_S_U1, LT_L_U1) +#define K_LT_U2 XP(LT_S_U2, LT_L_U2) +#define K_LT_Z XP(LT_S_Z, LT_L_Z) +#define K_LT_OB X(LT_OB) +#define K_LT_CB X(LT_CB) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_QWERTY] = LAYOUT( + //┌────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┐ + KC_Q ,KC_W ,KC_E ,KC_R ,KC_T, KC_Y ,KC_U ,KC_I ,KC_O ,KC_P , + //├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + KC_A ,KC_S ,KC_D ,KC_F ,KC_G , KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN , + //├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH, + //└────────┴────────┴────────┴────┬───┴────┬───┼────────┐ ┌────────┼───┬────┴───┬────┴────────┴────────┴────────┘ + L_NAV , KC_SPC , KC_LSFT , L_SYM + // └────────┘ └────────┘ └────────┘ └────────┘ + ), + + [_SYM] = LAYOUT( + //┌────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┐ + KC_EXLM ,KC_AT ,KC_HASH ,KC_DLR ,KC_PERC , KC_CIRC ,KC_AMPR ,KC_ASTR ,KC_LPRN ,KC_RPRN , + //├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + KC_GRV ,KC_PLUS ,KC_LBRC ,KC_RBRC ,K_LT_OB , KC_MINS ,OS_ALT ,OS_CTRL ,OS_GUI ,KC_PIPE , + //├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + K_SNEK ,KC_EQL ,KC_LCBR ,KC_RCBR ,K_LT_CB , KC_UNDS ,KC_QUOT ,KC_DQT ,K_EURO ,KC_BSLS , + //└────────┴────────┴────────┴────┬───┴────┬───┼────────┐ ┌────────┼───┬────┴───┬────┴────────┴────────┴────────┘ + _______ , _______ , _______ , _______ + // └────────┘ └────────┘ └────────┘ └────────┘ + ), + + [_NAV] = LAYOUT( + //┌────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┐ + KC_TILDE,L_MOUSE ,OS_FUNC ,OS_MISC ,OS_TMUX , K_LT_A ,K_LT_C ,K_LT_E1 ,K_LT_E2 ,K_LT_I , + //├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + KC_TAB ,OS_GUI ,OS_CTRL ,OS_ALT ,KC_ENT , KC_LEFT ,KC_DOWN ,KC_UP ,KC_RIGHT,KC_END , + //├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + KC_DELT ,KC_BSPC ,KC_ESC ,KC_PGDN ,KC_PGUP , KC_HOME ,K_LT_S ,K_LT_U1 ,K_LT_U2 ,K_LT_Z , + //└────────┴────────┴────────┴────┬───┴────┬───┼────────┐ ┌────────┼───┬────┴───┬────┴────────┴────────┴────────┘ + _______ , _______ , _______ , _______ + // └────────┘ └────────┘ └────────┘ └────────┘ + ), + + [_NUMB] = LAYOUT( + //┌────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┐ + KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , + //├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 , XXXXXXX ,OS_ALT ,OS_CTRL ,OS_GUI ,XXXXXXX , + //├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + KC_DELT ,KC_BSPC ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , + //└────────┴────────┴────────┴────┬───┴────┬───┼────────┐ ┌────────┼───┬────┴───┬────┴────────┴────────┴────────┘ + _______ , _______ , _______ , _______ + // └────────┘ └────────┘ └────────┘ └────────┘ + ), + + [_TMUX] = LAYOUT( + //┌────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┐ + XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,TM_URL ,XXXXXXX ,XXXXXXX ,XXXXXXX , + //├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , TM_LEFT ,TM_NEXT ,TM_PREV ,TM_RIGHT,XXXXXXX , + //├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , TM_NEW ,TM_SLCT ,XXXXXXX ,XXXXXXX ,TM_SRCH , + //└────────┴────────┴────────┴────┬───┴────┬───┼────────┐ ┌────────┼───┬────┴───┬────┴────────┴────────┴────────┘ + XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX + // └────────┘ └────────┘ └────────┘ └────────┘ + ), + + [_MOUSE] = LAYOUT( + //┌────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┐ + XXXXXXX ,L_MOUSE ,KC_MS_U ,KC_BTN3 ,KC_WH_U , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , + //├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + XXXXXXX ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_WH_D , XXXXXXX ,KC_LALT ,KC_LCTL ,KC_LGUI ,XXXXXXX , + //├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + XXXXXXX ,XXXXXXX ,KC_ESC ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , + //└────────┴────────┴────────┴────┬───┴────┬───┼────────┐ ┌────────┼───┬────┴───┬────┴────────┴────────┴────────┘ + KC_BTN1 , KC_BTN2 , XXXXXXX , XXXXXXX + // └────────┘ └────────┘ └────────┘ └────────┘ + ), + + [_MISC] = LAYOUT( + //┌────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┐ + RESET ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , KC_BRID ,KC_BRIU ,XXXXXXX ,KC_PSCR ,K_PRINT , + //├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + XXXXXXX ,XXXXXXX ,DEBUG ,XXXXXXX ,XXXXXXX , KC_MPRV ,KC_MPLY ,XXXXXXX ,KC_MNXT ,XXXXXXX , + //├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , KC_VOLD ,KC_VOLU ,XXXXXXX ,XXXXXXX ,UC_MOD , + //└────────┴────────┴────────┴────┬───┴────┬───┼────────┐ ┌────────┼───┬────┴───┬────┴────────┴────────┴────────┘ + XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX + // └────────┘ └────────┘ └────────┘ └────────┘ + ), + + [_FUNC] = LAYOUT( + //┌────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┐ + XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , + //├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 , + //├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , KC_F11 ,KC_F12 ,XXXXXXX ,XXXXXXX ,XXXXXXX , + //└────────┴────────┴────────┴────┬───┴────┬───┼────────┐ ┌────────┼───┬────┴───┬────┴────────┴────────┴────────┘ + XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX + // └────────┘ └────────┘ └────────┘ └────────┘ + ), +}; + +#define TMUX_PREFIX SS_DOWN(X_LCTL) "b" SS_UP(X_LCTL) + +bool is_oneshot_cancel_key(uint16_t keycode) { + switch (keycode) { + case L_SYM: + case L_NAV: + return true; + default: + return false; + } +} + +bool is_oneshot_layer_cancel_key(uint16_t keycode) { + switch (keycode) { + case L_SYM: + case L_NAV: + return true; + default: + return false; + } +} + +bool is_oneshot_ignored_key(uint16_t keycode) { + switch (keycode) { + case L_SYM: + case L_NAV: + case OS_CTRL: + case OS_ALT: + case OS_GUI: + case OS_TMUX: + case OS_MISC: + case KC_LSFT: + return true; + default: + return false; + } +} + +bool is_oneshot_mod_key(uint16_t keycode) { + switch (keycode) { + case OS_CTRL: + case OS_ALT: + case OS_GUI: + return true; + default: + return false; + } +} + +oneshot_state os_ctrl_state = os_up_unqueued; +oneshot_state os_alt_state = os_up_unqueued; +oneshot_state os_cmd_state = os_up_unqueued; +oneshot_state os_tmux_state = os_up_unqueued; +oneshot_state os_misc_state = os_up_unqueued; +oneshot_state os_func_state = os_up_unqueued; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + update_oneshot( + &os_ctrl_state, KC_LCTL, OS_CTRL, + keycode, record + ); + update_oneshot( + &os_alt_state, KC_LALT, OS_ALT, + keycode, record + ); + update_oneshot( + &os_cmd_state, KC_LGUI, OS_GUI, + keycode, record + ); + + bool handled = true; + handled = update_oneshot_layer( + &os_tmux_state, _TMUX, OS_TMUX, + keycode, record + ) & handled; + + handled = update_oneshot_layer( + &os_misc_state, _MISC, OS_MISC, + keycode, record + ) & handled; + + handled = update_oneshot_layer( + &os_func_state, _FUNC, OS_FUNC, + keycode, record + ) & handled; + if (!handled) return false; + + switch (keycode) { + case TM_LEFT: + if (!record->event.pressed) return true; + SEND_STRING(TMUX_PREFIX "<"); + return false; + case TM_RIGHT: + if (!record->event.pressed) return true; + SEND_STRING(TMUX_PREFIX ">"); + return false; + case TM_NEXT: + if (!record->event.pressed) return true; + SEND_STRING(TMUX_PREFIX "n"); + return false; + case TM_PREV: + if (!record->event.pressed) return true; + SEND_STRING(TMUX_PREFIX "p"); + return false; + case TM_NEW: + if (!record->event.pressed) return true; + SEND_STRING(TMUX_PREFIX "c"); + return false; + case TM_SLCT: + if (!record->event.pressed) return true; + SEND_STRING(TMUX_PREFIX "["); + return false; + case TM_SRCH: + if (!record->event.pressed) return true; + SEND_STRING(TMUX_PREFIX "\t"); + return false; + case TM_URL: + if (!record->event.pressed) return true; + SEND_STRING(TMUX_PREFIX SS_LCTL("u")); + return false; + } + return true; +} + +layer_state_t layer_state_set_user(layer_state_t state) { + return update_tri_layer_state(state, _SYM, _NAV, _NUMB); +} diff --git a/keyboards/a_dux/keymaps/daliusd/oneshot.c b/keyboards/a_dux/keymaps/daliusd/oneshot.c new file mode 100644 index 000000000000..1e7b4d965037 --- /dev/null +++ b/keyboards/a_dux/keymaps/daliusd/oneshot.c @@ -0,0 +1,195 @@ +/* Copyright 2021 @daliusd + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "print.h" +#include "oneshot.h" + +void update_oneshot( + oneshot_state *state, + uint16_t mod, + uint16_t trigger, + uint16_t keycode, + keyrecord_t *record +) { + if (keycode == trigger) { + if (record->event.pressed) { + // Trigger keydown + if (*state == os_up_unqueued) { + register_code(mod); + } + *state = os_down_unused; + dprintf("trigger down (on?), mod: %d, ? -> os_down_unused\n", mod); + } else { + // Trigger keyup + switch (*state) { + case os_down_unused: + // If we didn't use the mod while trigger was held, queue it. + *state = os_up_queued; + dprintf("trigger up, mod: %d, os_down_unused -> os_up_queued\n", mod); + break; + case os_down_used: + // If we did use the mod while trigger was held, unregister it. + *state = os_up_unqueued; + unregister_code(mod); + dprintf("trigger up (off), mod: %d, os_down_used -> os_up_unqueued\n", mod); + break; + default: + break; + } + } + } else { + if (record->event.pressed) { + if (is_oneshot_cancel_key(keycode) && *state != os_up_unqueued) { + // Cancel oneshot on designated cancel keydown. + *state = os_up_unqueued; + unregister_code(mod); + dprintf("cancel (off), mod: %d, ? -> os_up_unqueued\n", mod); + } + if (!is_oneshot_ignored_key(keycode)) { + switch (*state) { + case os_up_queued: + *state = os_up_queued_used; + dprintf("key up (off), mod: %d, os_up_queued -> os_up_queued_used\n", mod); + break; + case os_up_queued_used: + *state = os_up_unqueued; + unregister_code(mod); + dprintf("key up (off), mod: %d, os_up_queued_used -> os_up_unqueued\n", mod); + break; + default: + break; + } + } + } else { + if (!is_oneshot_ignored_key(keycode)) { + // On non-ignored keyup, consider the oneshot used. + switch (*state) { + case os_down_unused: + *state = os_down_used; + dprintf("key up, mod: %d, os_down_unused -> os_down_used\n", mod); + break; + case os_up_queued: + *state = os_up_unqueued; + unregister_code(mod); + dprintf("key up (off), mod: %d, os_up_queued -> os_up_unqueued\n", mod); + break; + case os_up_queued_used: + *state = os_up_unqueued; + unregister_code(mod); + dprintf("key up (off), mod: %d, os_up_queued_used -> os_up_unqueued\n", mod); + break; + default: + break; + } + } + } + } +} + +bool update_oneshot_layer( + oneshot_state *state, + uint16_t layer, + uint16_t trigger, + uint16_t keycode, + keyrecord_t *record +) { + if (keycode == trigger) { + if (record->event.pressed) { + // Trigger keydown + if (*state == os_up_unqueued) { + layer_on(layer); + } + *state = os_down_unused; + dprintf("trigger down (on?), layer: %d, ? -> os_down_unused\n", layer); + return false; + } else { + // Trigger keyup + switch (*state) { + case os_down_unused: + // If we didn't use the layer while trigger was held, queue it. + *state = os_up_queued; + dprintf("trigger up, layer: %d, os_down_unused -> os_up_queued\n", layer); + return false; + case os_down_used: + // If we did use the layer while trigger was held, turn off it. + *state = os_up_unqueued; + layer_off(layer); + dprintf("trigger up (off), layer: %d, os_down_used -> os_up_unqueued\n", layer); + return false; + default: + break; + } + } + } else { + if (record->event.pressed) { + if (is_oneshot_layer_cancel_key(keycode) && *state != os_up_unqueued) { + // Cancel oneshot layer on designated cancel keydown. + *state = os_up_unqueued; + layer_off(layer); + dprintf("cancel (off), layer: %d, ? -> os_up_unqueued\n", layer); + return false; + } + uint8_t key_layer = read_source_layers_cache(record->event.key); + if (key_layer == layer) { + // On non-ignored keyup, consider the oneshot used. + switch (*state) { + case os_down_unused: + *state = os_down_used; + dprintf("key down, layer: %d, os_down_unused -> os_down_used\n", layer); + return true; + case os_up_queued: + if (is_oneshot_mod_key(keycode)) { + *state = os_up_unqueued; + layer_off(layer); + dprintf("key down, layer: %d, os_up_queued -> os_up_unqueued\n", layer); + return false; + } else { + *state = os_up_queued_used; + dprintf("key down, layer: %d, os_up_queued -> os_up_queued_used\n", layer); + } + return true; + case os_up_queued_used: + *state = os_up_unqueued; + layer_off(layer); + dprintf("key down (off), layer: %d, os_up_queued_used -> os_up_unqueued\n", layer); + return false; + default: + break; + } + } + } else { + // Ignore key ups from other layers + uint8_t key_layer = read_source_layers_cache(record->event.key); + if (key_layer == layer) { + // On non-ignored keyup, consider the oneshot used. + switch (*state) { + case os_up_queued: + *state = os_up_unqueued; + layer_off(layer); + dprintf("key up (off), layer: %d, os_up_queued -> os_up_unqueued\n", layer); + return true; + case os_up_queued_used: + *state = os_up_unqueued; + layer_off(layer); + dprintf("key up (off), layer: %d, os_up_queued_used -> os_up_unqueued\n", layer); + return true; + default: + break; + } + } + } + } + return true; +} diff --git a/keyboards/a_dux/keymaps/daliusd/oneshot.h b/keyboards/a_dux/keymaps/daliusd/oneshot.h new file mode 100644 index 000000000000..a4ea71b8a7cd --- /dev/null +++ b/keyboards/a_dux/keymaps/daliusd/oneshot.h @@ -0,0 +1,65 @@ +/* Copyright 2021 @daliusd + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include QMK_KEYBOARD_H + +// Represents the four states a oneshot key can be in +typedef enum { + os_up_unqueued, + os_up_queued, + os_up_queued_used, + os_down_unused, + os_down_used, +} oneshot_state; + +// Custom oneshot mod implementation that doesn't rely on timers. If a mod is +// used while it is held it will be unregistered on keyup as normal, otherwise +// it will be queued and only released after the next non-mod keyup. +void update_oneshot( + oneshot_state *state, + uint16_t mod, + uint16_t trigger, + uint16_t keycode, + keyrecord_t *record +); + +// Oneshot implementation for layers +bool update_oneshot_layer( + oneshot_state *state, + uint16_t layer, + uint16_t trigger, + uint16_t keycode, + keyrecord_t *record +); + +// To be implemented by the consumer. Layers one shot implementation needs to +// know which keys are used as oneshot mods +bool is_oneshot_mod_key( + uint16_t keycode +); + +// To be implemented by the consumer. Defines keys to cancel oneshot mods. +bool is_oneshot_cancel_key(uint16_t keycode); + +// To be implemented by the consumer. Defines keys to cancel oneshot layers. +bool is_oneshot_layer_cancel_key(uint16_t keycode); + +// To be implemented by the consumer. Defines keys to ignore when determining +// whether a oneshot mod has been used. Setting this to modifiers and layer +// change keys allows stacking multiple oneshot modifiers, and carrying them +// between layers. +bool is_oneshot_ignored_key(uint16_t keycode); diff --git a/keyboards/a_dux/keymaps/daliusd/readme.md b/keyboards/a_dux/keymaps/daliusd/readme.md new file mode 100644 index 000000000000..f6e0efd0e804 --- /dev/null +++ b/keyboards/a_dux/keymaps/daliusd/readme.md @@ -0,0 +1,21 @@ +# My 34 keys layout + +This are my principles for layout: + +* I am using Callum style layout. Here you can read explanation by + Callum himself and his reasoning for not using mod-tap: + [here](../../../../users/callum/readme.md) + +* There should be only one way to type key. Key can be on + different layer but it must maintain its physical location. + +* The less features are used the better. + +* trilayer is cool. + +* There is 🐍 key for no reason. + +As well I have added one shot layers compatible with Callum's one +shot keys. + +There is simple TMUX layer as well. diff --git a/keyboards/a_dux/keymaps/daliusd/rules.mk b/keyboards/a_dux/keymaps/daliusd/rules.mk new file mode 100644 index 000000000000..0f203f004c26 --- /dev/null +++ b/keyboards/a_dux/keymaps/daliusd/rules.mk @@ -0,0 +1,5 @@ +UNICODE_ENABLE = no +UNICODEMAP_ENABLE = yes +#CONSOLE_ENABLE = yes + +SRC += oneshot.c diff --git a/keyboards/a_dux/keymaps/default/config.h b/keyboards/a_dux/keymaps/default/config.h new file mode 100644 index 000000000000..cf0fb7478ef0 --- /dev/null +++ b/keyboards/a_dux/keymaps/default/config.h @@ -0,0 +1,39 @@ +/* +Copyright 2020 Pierre Chevalier + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once +// Set the mouse settings to a comfortable speed/accuracy trade-off, +// assuming a screen refresh rate of 60 Htz or higher +// The default is 50. This makes the mouse ~3 times faster and more accurate +#define MOUSEKEY_INTERVAL 16 +// The default is 20. Since we made the mouse about 3 times faster with the previous setting, +// give it more time to accelerate to max speed to retain precise control over short distances. +#define MOUSEKEY_TIME_TO_MAX 40 +// The default is 300. Let's try and make this as low as possible while keeping the cursor responsive +#define MOUSEKEY_DELAY 100 +// It makes sense to use the same delay for the mouseweel +#define MOUSEKEY_WHEEL_DELAY 100 +// The default is 100 +#define MOUSEKEY_WHEEL_INTERVAL 50 +// The default is 40 +#define MOUSEKEY_WHEEL_TIME_TO_MAX 100 + +// Pick good defaults for enabling homerow modifiers +#define TAPPING_TERM 200 +#define PERMISSIVE_HOLD +#define IGNORE_MOD_TAP_INTERRUPT +#define TAPPING_FORCE_HOLD diff --git a/keyboards/a_dux/keymaps/default/keymap.json b/keyboards/a_dux/keymaps/default/keymap.json new file mode 100644 index 000000000000..555a86c0b0ee --- /dev/null +++ b/keyboards/a_dux/keymaps/default/keymap.json @@ -0,0 +1,106 @@ +{ "version": 1, + "notes": "My awesome keymap", + "documentation": "\"This file is a QMK Configurator export. You can import this at . It can also be used directly with QMK's source code.\n\nTo setup your QMK environment check out the tutorial: \n\nYou can convert this file to a keymap.c using this command: `qmk json2c {keymap}`\n\nYou can compile this keymap using this command: `qmk compile {keymap}`\"\n", + "keyboard": "a_dux", + "keymap": "default", + "layout": "LAYOUT", + "layers": [ + ["KC_Q" , "KC_W" , "KC_E" , "KC_R" , "KC_T", + "KC_Y" , "KC_U" , "KC_I" , "KC_O" , "KC_P", + + "LSFT_T(KC_A)", "LT(5,KC_S)" , "LT(1,KC_D)" , "LT(3,KC_F)" , "KC_G", + "KC_H" , "LT(4,KC_J)" , "LT(2,KC_K)" , "LT(6,KC_L)" , "LSFT_T(KC_SCLN)", + + "KC_Z" , "LCTL_T(KC_X)", "LALT_T(KC_C)" , "KC_V" , "KC_B", + "KC_N" , "KC_M" , "LALT_T(KC_COMM)", "LCTL_T(KC_DOT)", "KC_SLSH", + + "KC_P0" , "KC_BSPC", + "LT(7,KC_SPC)", "KC_P1" + ], + ["KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS", + "KC_TRNS" , "KC_BTN1" , "KC_WH_U" , "KC_BTN2" , "KC_TRNS", + + "KC_TRNS" , "KC_BTN2" , "KC_NO" , "KC_BTN1" , "KC_TRNS", + "KC_TRNS" , "KC_MS_L" , "KC_MS_D" , "KC_MS_U" , "KC_MS_R", + + "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS", + "KC_TRNS" , "KC_WH_L" , "KC_WH_D" , "KC_WH_R" , "KC_TRNS", + + "KC_TRNS" , "KC_TRNS", + "KC_TRNS" , "KC_TRNS" + ], + ["KC_TRNS" , "KC_TRNS" , "KC_PGUP" , "KC_TRNS" , "KC_TRNS", + "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS", + + "KC_LEFT" , "KC_UP" , "KC_DOWN" , "KC_RGHT" , "KC_TRNS", + "KC_TRNS" , "KC_LGUI" , "KC_NO" , "LCTL(KC_LALT)" , "LCA(KC_LSFT)", + + "KC_TRNS" , "KC_HOME" , "KC_PGDN" , "KC_END" , "KC_TRNS", + "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS", + + "KC_TRNS" , "KC_TRNS", + "KC_TRNS" , "KC_TRNS" + ], + ["KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS", + "KC_TRNS" , "KC_UNDS" , "KC_PIPE" , "KC_QUOT" , "KC_TRNS", + + "KC_CIRC" , "KC_ASTR" , "KC_AMPR" , "KC_NO" , "KC_TRNS", + "KC_HASH" , "KC_TILD" , "KC_SLSH" , "KC_DQUO" , "KC_DLR", + + "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS", + "KC_TRNS" , "KC_MINS" , "KC_BSLS" , "KC_GRV" , "KC_TRNS", + + "KC_TRNS" , "KC_TRNS", + "KC_TRNS" , "KC_TRNS" + ], + ["KC_TRNS" , "KC_COLN" , "KC_LT" , "KC_GT" , "KC_SCLN", + "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS", + + "KC_LCBR" , "KC_RCBR" , "KC_LPRN" , "KC_RPRN" , "KC_AT", + "KC_TRNS" , "KC_NO" , "KC_EQL" , "KC_PLUS" , "KC_PERC", + + "KC_TRNS" , "KC_EXLM" , "KC_LBRC" , "KC_RBRC" , "KC_TRNS", + "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS", + + "KC_VOLD" , "KC_TRNS", + "KC_TRNS" , "KC_VOLU" + ], + ["KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS", + "KC_TRNS" , "KC_F7" , "KC_F8" , "KC_F9" , "KC_F10", + + "KC_TRNS" , "KC_NO" , "LCTL(KC_LALT)" , "KC_TRNS" , "KC_TRNS", + "KC_TRNS" , "KC_F4" , "KC_F5" , "KC_F6" , "KC_F11", + + "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS", + "KC_TRNS" , "KC_F1" , "KC_F2" , "KC_F3" , "KC_F12", + + "KC_TRNS" , "KC_TRNS", + "KC_TRNS" , "KC_TRNS" + ], + ["KC_PSLS" , "KC_7" , "KC_8" , "KC_9" , "KC_PPLS", + "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS", + + "KC_0" , "KC_1" , "KC_2" , "KC_3" , "KC_PMNS", + "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_NO" , "KC_TRNS", + + "KC_PAST" , "KC_4" , "KC_5" , "KC_6" , "KC_PEQL", + "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS", + + "KC_TRNS" , "KC_TRNS", + "KC_TRNS" , "KC_TRNS" + ], + ["KC_TRNS" , "KC_TRNS" , "KC_COLN" , "KC_ESC" , "KC_TRNS", + "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_DEL", + + "KC_TRNS" , "KC_PERC" , "KC_SLSH" , "KC_ENT" , "KC_TRNS", + "DF(1)" , "KC_LGUI" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS", + + "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_EXLM" , "KC_TRNS", + "DF(0)" , "KC_TRNS" , "RALT_T(KC_COMM)", "RCTL_T(KC_DOT)", "RESET", + + "KC_TRNS" , "KC_TAB", + "KC_NO" , "KC_TRNS" + ] + ], + "author": "@pierrec83" +} diff --git a/keyboards/a_dux/keymaps/default/readme.md b/keyboards/a_dux/keymaps/default/readme.md new file mode 100644 index 000000000000..5f67a69cb2f0 --- /dev/null +++ b/keyboards/a_dux/keymaps/default/readme.md @@ -0,0 +1,122 @@ +A usable default keymap for the A. Dux keyboard +=============================================== + +Keymaps in general are quite personal, so it is difficult to come up with a default that will suit every user. + +This keymap makes heavy use of keys behaving differently when tapped and held, so that all the keys one may need remain accessible despite the low number of thumb keys. + +It comes with a number of layers to give access to most of the keys one may need on a keyboard. It is not meant to be the best possible keymap, but rather a good base on which to build a keymap that works for you. + +This is not the only way to make 34 keys a comfortable typing experience, but it is one way to do so. If you don't already know of a better way, this may be as good a starting point as any :) + +Note that this keymap was built from the perspective that it is OK to take a steep learning curve if it results in a keymap that is easier to use in the long run. This means that it may take more effort to learn this keymap than some alternatives. "Easy to use" was assessed against the workflow of the author, so your mileage may vary on some of the details. + +What do all these layers do? +---------------------------- + +### Layer 0: Base layer + +![Layer 0](https://i.imgur.com/HjNHUPL.png) + +On tapping the keys, our base layer is qwerty with space on the right homing thumb and backspace on the left homing thumb. + +In this layer, the non-homing-thumb positions have 0 and 1. I recommend modifying this to some frequently accessed shortcut such as copy/paste, previous/next tab or anything that makes most sense in your own workflow. O and 1 are place-holders and make it easy to troubleshoot that all keys are working properly before soldering in the switches. +The reason I recommend convenience shortcuts instead of more commonly used keys like tab or meta is that unhoming of the thumbs was a frequent source of typos for me when I used more than one thumb key frequently in the context of typing. + +Despite being missing on this layer, "meta", "tab", "esc" and such are accessible from any other layer: see Layer 7. + +The behaviour of some keys differ when held: +* Both homing pinkies behave as shift. +* Both bottom-row ring fingers behave as ctrl. +* Both bottom-row middle fingers behave as alt. + +* The homing left ring finger gives access to the Function keys layer +* The homing right ring finger gives access to the Numbers layer +* The homing left middle finger gives access to the Mouse layer +* The homing right middle finger gives access to the Navigation layer +* The homing left index finger gives access to the Right symbols layer +* The homing right index finger gives access to the Left symbols layer +* The homing right thumb gives access to the Always accessible layer + +### Layer 1: Mouse + +![Layer 1](https://i.imgur.com/0fvTuB9.png) + +Layer 1 is a mouse layer: it can be used one-handed or two-handed. The most common way to use it is two handed, with left and right click on the homerow of the left hand and directions on the homerow of the right hand. +Scrolling is available on the right hand with mid finger up and down for vertical scroll and index and ring finger down for horizontal scroll. +On the right hand, left click and right click are also available with index and ring finger up to allow one handed operation. This can be particularly handy when enabling the mouse layer permanently (no need to hold the left middle finger), which can be done from Layer 7. + +Note that thanks to the transparency, shift, ctrl and alt are all accessible on the left hand while operating the mouse. + +### Layer 2: Navigation + +![Layer 2](https://i.imgur.com/ZquQJRq.png) + +The navigation layer somewhat mirrors the mouse layer. It is accessed by holding the right middle finger and gives access to arrow keys on the left homerow. Page up and down, Home and End mirror the vertical scrolling and horizontal scrolling on the mouse layer. + +On the right hand, in addition to ctrl and alt which are available through transparency, ctrl + alt, ctrl + alt + shift and meta are accessible on the homerow to enable common shortcuts in some window managers. This part is quite workflow dependent, so make sure to adapt it to your own workflow as appropriate. + +### Layer 3: Right symbols + +![Layer 3](https://i.imgur.com/9tLAUqG.png) + +When holding down the left index, one may access about half of the symbols. The pinkies store `^` and `$` symbols that represent begin and end in vim. The left homerow hosts `*` and `&`, symbols which are related in the way that they represent some form of indirection in programming languages such as rust. On the right hand, most symbols used when navigating the command line are stored together, organized by columns of related symbols. + +### Layer 4: Left symbols + +![Layer 4](https://i.imgur.com/CkjUSW6.png) + +When holding down the right index, one may access the other symbols. On the left hand, most of the different brackets are laid out. The most frequent ones (round brackets and curly brackets) get a spot on the homerow. The rest of the layer hosts the remaining symbols that are easier to access here than on any other layers. + +### Layer 5: Function keys + +![Layer 5](https://i.imgur.com/fWgVqc4.png) + +By holding down the left ring finger, one may access the function keys, roughly in a numpad layout. +This means that alt+F4 is easy to type, with F4 being on the homerow. +There is a shortcut for ctrl+alt on the left hand to enable convenient switching between virtual terminals on Linux. + +### Layer 6: Numbers + +![Layer 6](https://i.imgur.com/S8gq9Kj.png) + +The number layer is accessed by holding the right ring finger. It hosts the numbers and some duplicated symbols that are commonly accessed next to numbers, such as mathematical operators. +The number are layed out similarly to a numpad, but with the middle row and the homerow swapped so that the most used numbers: 0, 1, 2 and 3 are all available in homing positions. + +### Layer 7: Always accessible + +![Layer 7](https://i.imgur.com/twqBeBb.png) + +Layer 7 is accessed by holding the right homing thumb down. Because this position is left transparent from every other layer, this layer is always accessible. +It gives access to some essential keys that would typically be accessed on a thumb cluster or pinkies, such as meta, enter, tab, esc and delete. + +As the layer hosting esc, we duplicated some symbols here to allow for fast navigation in vim. For instance, esc, :, w, q can be done in a single roll. + +Where is the keymap.c? +---------------------- + +The keymap.c file is not published to the repository. It is generated from `keymap.json` by the build system. + +This avoids duplicating information and allow users to edit their keymap from the qmk configurator web interface. + +How do I edit and update the keymap? +------------------------------------ + +The `keymap.json` file is generated from the qmk configurator interface and formatted for better readability in the context of the A. Dux keyboard. + +To edit it, you may: +* Edit it directly from a text editor. +* Edit it from the qmk configurator. + +If you decide to use the latter workflow, here are the steps to follow: + +* From the qmk configurator, hit the "import QMK keymap json file" button (it has a drawing with an up arrow on it). +* Browse to the location of your keymap (for example, `/keyboards/a_dux/keymaps/default/keymap.json`) +* Perform any modification to the keymap in the web UI +* Export the keymap to your downloads folder, by hitting the "Export QMK keymap json file" button (it has a drawing with a down arrow on it) +* Override your original keymap with the output of formatting the exported keymap by running a command such as this one from the root of your qmk repo: + ``` + ./keyboards/a_dux/keymaps/json2crab.py --input /default.json > ./keyboards/a_dux/keymaps/default/keymap.json + ``` + Note that you may first need to make json2crab executable by using `chmod +x` on it. + Also note that you may then want to remove the exported keymap from your dowload directory. diff --git a/keyboards/a_dux/keymaps/jcmkk3/keymap.c b/keyboards/a_dux/keymaps/jcmkk3/keymap.c new file mode 100644 index 000000000000..608e0c522ea9 --- /dev/null +++ b/keyboards/a_dux/keymaps/jcmkk3/keymap.c @@ -0,0 +1,130 @@ +/* Copyright 2021 @jcmkk3 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +#include "oneshot.h" + +#define LA_UPP OSL(UPP) +#define LA_SYM OSL(SYM) +#define LA_NAV MO(NAV) + +enum layers { + DEF, + UPP, + SYM, + NAV, + NUM, +}; + +enum keycodes { + // Custom oneshot mod implementation with no timers. + OS_SHFT = SAFE_RANGE, + OS_CTRL, + OS_ALT, + OS_GUI, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [DEF] = LAYOUT( + KC_Y, KC_C, KC_L, KC_M, KC_K, KC_Z, KC_F, KC_U, KC_QUOT, KC_DQUO, + KC_I, KC_S, KC_R, KC_T, KC_G, KC_P, KC_N, KC_E, KC_A, KC_O, + KC_Q, KC_V, KC_W, KC_D, KC_J, KC_B, KC_H, KC_COMM, KC_DOT, KC_X, + LA_NAV, KC_SPC, LA_UPP, LA_SYM + ), + + [UPP] = LAYOUT( + S(KC_Y), S(KC_C), S(KC_L), S(KC_M), S(KC_K), S(KC_Z), S(KC_F), S(KC_U), KC_EXLM, KC_QUES, + S(KC_I), S(KC_S), S(KC_R), S(KC_T), S(KC_G), S(KC_P), S(KC_N), S(KC_E), S(KC_A), S(KC_O), + S(KC_Q), S(KC_V), S(KC_W), S(KC_D), S(KC_J), S(KC_B), S(KC_H), KC_SCLN, KC_COLN, S(KC_X), + _______, _______, _______, _______ + ), + + [SYM] = LAYOUT( + KC_LABK, KC_LCBR, KC_LBRC, KC_LPRN, KC_CIRC, KC_DLR, KC_RPRN, KC_RBRC, KC_RCBR, KC_RABK, + KC_HASH, KC_UNDS, KC_EQL, KC_MINS, KC_PLUS, KC_AMPR, OS_CTRL, OS_SHFT, OS_ALT, OS_GUI, + KC_PERC, KC_GRV, KC_TILD, KC_SLSH, KC_ASTR, KC_PIPE, KC_BSLS, KC_SCLN, KC_COLN, KC_AT, + _______, _______, _______, _______ + ), + + [NAV] = LAYOUT( + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_TAB, KC_UP, KC_ENT, KC_DEL, + OS_GUI, OS_ALT, OS_SHFT, OS_CTRL, XXXXXXX, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, + C(KC_Z), C(KC_X), C(KC_C), C(KC_V), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + _______, _______, KC_BSPC, _______ + ), + + [NUM] = LAYOUT( + KC_7, KC_5, KC_3, KC_1, KC_9, KC_8, KC_0, KC_2, KC_4, KC_6, + OS_GUI, OS_ALT, OS_SHFT, OS_CTRL, XXXXXXX, XXXXXXX, OS_CTRL, OS_SHFT, OS_ALT, OS_GUI, + XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, XXXXXXX, XXXXXXX, XXXXXXX, KC_COMM, KC_DOT, KC_SLSH, + _______, _______, KC_BSPC, _______ + ), +}; + +bool is_oneshot_cancel_key(uint16_t keycode) { + switch (keycode) { + case LA_SYM: + case LA_NAV: + return true; + default: + return false; + } +} + +bool is_oneshot_ignored_key(uint16_t keycode) { + switch (keycode) { + case LA_SYM: + case LA_NAV: + case KC_LSFT: + case OS_SHFT: + case OS_CTRL: + case OS_ALT: + case OS_GUI: + return true; + default: + return false; + } +} + +oneshot_state os_shft_state = os_up_unqueued; +oneshot_state os_ctrl_state = os_up_unqueued; +oneshot_state os_alt_state = os_up_unqueued; +oneshot_state os_gui_state = os_up_unqueued; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + update_oneshot( + &os_shft_state, KC_LSFT, OS_SHFT, + keycode, record + ); + update_oneshot( + &os_ctrl_state, KC_LCTL, OS_CTRL, + keycode, record + ); + update_oneshot( + &os_alt_state, KC_LALT, OS_ALT, + keycode, record + ); + update_oneshot( + &os_gui_state, KC_LGUI, OS_GUI, + keycode, record + ); + + return true; +} + +layer_state_t layer_state_set_user(layer_state_t state) { + return update_tri_layer_state(state, SYM, NAV, NUM); +} diff --git a/keyboards/a_dux/keymaps/jcmkk3/oneshot.c b/keyboards/a_dux/keymaps/jcmkk3/oneshot.c new file mode 100644 index 000000000000..e84b5a7b1d66 --- /dev/null +++ b/keyboards/a_dux/keymaps/jcmkk3/oneshot.c @@ -0,0 +1,72 @@ +/* Copyright 2021 @jcmkk3 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "oneshot.h" + +void update_oneshot( + oneshot_state *state, + uint16_t mod, + uint16_t trigger, + uint16_t keycode, + keyrecord_t *record +) { + if (keycode == trigger) { + if (record->event.pressed) { + // Trigger keydown + if (*state == os_up_unqueued) { + register_code(mod); + } + *state = os_down_unused; + } else { + // Trigger keyup + switch (*state) { + case os_down_unused: + // If we didn't use the mod while trigger was held, queue it. + *state = os_up_queued; + break; + case os_down_used: + // If we did use the mod while trigger was held, unregister it. + *state = os_up_unqueued; + unregister_code(mod); + break; + default: + break; + } + } + } else { + if (record->event.pressed) { + if (is_oneshot_cancel_key(keycode) && *state != os_up_unqueued) { + // Cancel oneshot on designated cancel keydown. + *state = os_up_unqueued; + unregister_code(mod); + } + } else { + if (!is_oneshot_ignored_key(keycode)) { + // On non-ignored keyup, consider the oneshot used. + switch (*state) { + case os_down_unused: + *state = os_down_used; + break; + case os_up_queued: + *state = os_up_unqueued; + unregister_code(mod); + break; + default: + break; + } + } + } + } +} diff --git a/keyboards/a_dux/keymaps/jcmkk3/oneshot.h b/keyboards/a_dux/keymaps/jcmkk3/oneshot.h new file mode 100644 index 000000000000..b88e68d1d5c4 --- /dev/null +++ b/keyboards/a_dux/keymaps/jcmkk3/oneshot.h @@ -0,0 +1,46 @@ +/* Copyright 2021 @jcmkk3 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include QMK_KEYBOARD_H + +// Represents the four states a oneshot key can be in +typedef enum { + os_up_unqueued, + os_up_queued, + os_down_unused, + os_down_used, +} oneshot_state; + +// Custom oneshot mod implementation that doesn't rely on timers. If a mod is +// used while it is held it will be unregistered on keyup as normal, otherwise +// it will be queued and only released after the next non-mod keyup. +void update_oneshot( + oneshot_state *state, + uint16_t mod, + uint16_t trigger, + uint16_t keycode, + keyrecord_t *record +); + +// To be implemented by the consumer. Defines keys to cancel oneshot mods. +bool is_oneshot_cancel_key(uint16_t keycode); + +// To be implemented by the consumer. Defines keys to ignore when determining +// whether a oneshot mod has been used. Setting this to modifiers and layer +// change keys allows stacking multiple oneshot modifiers, and carrying them +// between layers. +bool is_oneshot_ignored_key(uint16_t keycode); diff --git a/keyboards/a_dux/keymaps/jcmkk3/rules.mk b/keyboards/a_dux/keymaps/jcmkk3/rules.mk new file mode 100644 index 000000000000..b7dcd87b1ead --- /dev/null +++ b/keyboards/a_dux/keymaps/jcmkk3/rules.mk @@ -0,0 +1 @@ +SRC += oneshot.c diff --git a/keyboards/a_dux/readme.md b/keyboards/a_dux/readme.md new file mode 100644 index 000000000000..f709542b31c5 --- /dev/null +++ b/keyboards/a_dux/readme.md @@ -0,0 +1,45 @@ +# Architeuthis Dux + +![Architeuthis Dux](https://raw.githubusercontent.com/tapioki/cephalopoda/main/Images/architeuthis_dux.png) + +AKA A. dux, A.D., "Giant squid" + +34 keys, same stagger as [D. gigas](https://github.com/tapioki/cephalopoda/tree/main/Dosidicus%20gigas), but with two thumb keys included. Pinky, ring, index, and inner columns splayed at 15, 5, 0, -5, -5 degrees. SplitKB Tenting Puck support. All PCB files are available on the [project's github page](https://github.com/tapioki/cephalopoda/tree/main/Architeuthis%20dux) + +Thank you [Perce](https://madebyperce.com/) for the logo. + +## Case Options + +* [Flat Case](https://github.com/madebyperce/aduxcase) +* [Tented Case](https://github.com/jdart/adux-tent) +* [Case with Plates](https://github.com/sadekbaroudi/cephalopoda/tree/main/Architeuthis%20dux/case) + +## Keyboard Info + +* Keyboard Maintainer: [@tapioki](https://github.com/tapioki) +* Hardware Supported: Architeuthis Dux +* Hardware Availability: Order PCBs with gerber files from the [repository](https://github.com/tapioki/cephalopoda/tree/main/Architeuthis%20dux) + +Make example for this keyboard (after setting up your build environment): + + make a_dux: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). + +## Setting Handedness + +Firmware uses [handedness by EEPROM](https://docs.qmk.fm/#/feature_split_keyboard?id=handedness-by-eeprom) as default and it must be *configured once* on each side. The make commands are: + + make a_dux:default:dfu-split-left + make a_dux:default:dfu-split-right + +[QMK Toolbox](http://qmk.fm/toolbox) can also be used to set EEPROM handedness. Place the controller in bootloader mode and select menu option Tools -> EEPROM -> Set Left/Right Hand + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the top left key on the left half (or the top right right key on the right half) and plug in the controller on that side. +* **Physical reset pins**: Briefly short the RST and GND pins on the microcontroller using tweezers, a paperclip, or any other conductive material. +* **Keycode in layout**: Press the key mapped to `RESET` if it is configured. + diff --git a/keyboards/a_dux/rules.mk b/keyboards/a_dux/rules.mk new file mode 100644 index 000000000000..07116f8fea1b --- /dev/null +++ b/keyboards/a_dux/rules.mk @@ -0,0 +1,21 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 +UNICODE_ENABLE = yes +SPLIT_KEYBOARD = yes diff --git a/keyboards/abacus/config.h b/keyboards/abacus/config.h index 70ef55494601..eee2f3f91928 100644 --- a/keyboards/abacus/config.h +++ b/keyboards/abacus/config.h @@ -106,23 +106,3 @@ along with this program. If not, see . /* disable these deprecated features by default */ #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 diff --git a/keyboards/abacus/info.json b/keyboards/abacus/info.json index dd4d15cd5212..21d035c97cdd 100644 --- a/keyboards/abacus/info.json +++ b/keyboards/abacus/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Abacus", "url": "https://www.github.com/nickolaij", "maintainer": "nickolaij", - "width": 12.75, - "height": 4, "layouts": { "LAYOUT": { - "key_count": 45, "layout": [ {"label":"k00", "x":0, "y":0, "w":1}, {"label":"k01", "x":1, "y":0, "w":1}, diff --git a/keyboards/abacus/keymaps/unicodemap/keymap.c b/keyboards/abacus/keymaps/unicodemap/keymap.c index 8a2a33889b7c..c31b268ca2fe 100644 --- a/keyboards/abacus/keymaps/unicodemap/keymap.c +++ b/keyboards/abacus/keymaps/unicodemap/keymap.c @@ -108,7 +108,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } -void dip_switch_update_user(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: if(active) { @@ -125,6 +125,7 @@ void dip_switch_update_user(uint8_t index, bool active) { } } } + return true; } diff --git a/keyboards/abacus/rules.mk b/keyboards/abacus/rules.mk index 6d6a2f19a681..8414577e9b74 100644 --- a/keyboards/abacus/rules.mk +++ b/keyboards/abacus/rules.mk @@ -2,32 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes DIP_SWITCH_ENABLE = yes LTO_ENABLE = yes diff --git a/keyboards/absinthe/config.h b/keyboards/absinthe/config.h index 3000a4b8a115..d6acd350cc7a 100644 --- a/keyboards/absinthe/config.h +++ b/keyboards/absinthe/config.h @@ -44,10 +44,8 @@ along with this program. If not, see . #define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, D3, D0 } #define UNUSED_PINS -#define ENCODERS_PAD_A { D5 } -#define ENCODERS_PAD_B { B7 } - -#define ENCODER_DIRECTION_FLIP +#define ENCODERS_PAD_A { B7 } +#define ENCODERS_PAD_B { D5 } /* COL2ROW, ROW2COL*/ #define DIODE_DIRECTION COL2ROW diff --git a/keyboards/absinthe/info.json b/keyboards/absinthe/info.json index 290664106465..f92e9e10ee9e 100644 --- a/keyboards/absinthe/info.json +++ b/keyboards/absinthe/info.json @@ -2,8 +2,6 @@ "keyboard_name": "absinthe", "url": "https://github.com/cfbender/keyboards/tree/master/absinthe", "maintainer": "cfbender", - "width": 18.25, - "height": 5, "layouts": { "LAYOUT_default": { "layout": [ diff --git a/keyboards/absinthe/keymaps/via/keymap.c b/keyboards/absinthe/keymaps/via/keymap.c new file mode 100644 index 000000000000..797d14226dc7 --- /dev/null +++ b/keyboards/absinthe/keymaps/via/keymap.c @@ -0,0 +1,70 @@ +/* Copyright 2021 alittlepeace + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_default( + 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_BSLS, KC_GRV, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_DEL, KC_END, 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_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT), + + [1] = LAYOUT_default( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [2] = LAYOUT_default( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [3] = LAYOUT_default( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) + +}; + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { /* First encoder */ + switch(get_highest_layer(layer_state)){ + case 1: + if (clockwise){ + tap_code(KC_VOLU); + } else{ + tap_code(KC_VOLD); + } + break; + default: + if (clockwise) { + tap_code(KC_WH_D); + } else { + tap_code(KC_WH_U); + } + break; + } + } + return true; +} + diff --git a/keyboards/absinthe/keymaps/via/rules.mk b/keyboards/absinthe/keymaps/via/rules.mk new file mode 100644 index 000000000000..eb5b445ddf1a --- /dev/null +++ b/keyboards/absinthe/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +MOUSEKEY_ENABLE = yes diff --git a/keyboards/absinthe/rules.mk b/keyboards/absinthe/rules.mk index 78bf2bf1bf9b..8938276bba34 100644 --- a/keyboards/absinthe/rules.mk +++ b/keyboards/absinthe/rules.mk @@ -2,31 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes RGBLIGHT_ENABLE = yes diff --git a/keyboards/abstract/ellipse/info.json b/keyboards/abstract/ellipse/info.json index 8ad50e6cae87..3348b38477c9 100644 --- a/keyboards/abstract/ellipse/info.json +++ b/keyboards/abstract/ellipse/info.json @@ -2,11 +2,9 @@ "keyboard_name": "Ellipse", "url": "https://abstractkb.tk/product/ellipse-rev1", "maintainer": "AbstractKB", - "width": 3, - "height": 2.25, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}] } } -} \ No newline at end of file +} diff --git a/keyboards/abstract/ellipse/keymaps/abstractkb/keymap.c b/keyboards/abstract/ellipse/keymaps/abstractkb/keymap.c index 224de55b37bd..4350423183b6 100644 --- a/keyboards/abstract/ellipse/keymaps/abstractkb/keymap.c +++ b/keyboards/abstract/ellipse/keymaps/abstractkb/keymap.c @@ -27,22 +27,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -/*bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -}*/ - -/*void matrix_init_user(void) { - -}*/ - -/*void matrix_scan_user(void) { - -}*/ - -/*void led_set_user(uint8_t usb_led) { - -}*/ - bool encoder_update_user(uint8_t index, bool clockwise) { if (index == 0) { /* First encoder */ if (clockwise) { diff --git a/keyboards/abstract/ellipse/keymaps/default/keymap.c b/keyboards/abstract/ellipse/keymaps/default/keymap.c index 4fe1cf7cb2d8..dbcba36f5cf1 100644 --- a/keyboards/abstract/ellipse/keymaps/default/keymap.c +++ b/keyboards/abstract/ellipse/keymaps/default/keymap.c @@ -27,22 +27,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -/*bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -}*/ - -/*void matrix_init_user(void) { - -}*/ - -/*void matrix_scan_user(void) { - -}*/ - -/*void led_set_user(uint8_t usb_led) { - -}*/ - bool encoder_update_user(uint8_t index, bool clockwise) { if (index == 0) { /* First encoder */ if (clockwise) { diff --git a/keyboards/abstract/ellipse/rev1/config.h b/keyboards/abstract/ellipse/rev1/config.h index 57c9456fe752..6e16c8d228dd 100644 --- a/keyboards/abstract/ellipse/rev1/config.h +++ b/keyboards/abstract/ellipse/rev1/config.h @@ -112,54 +112,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -178,26 +130,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/abstract/ellipse/rev1/rev1.c b/keyboards/abstract/ellipse/rev1/rev1.c index ae7aa640e4ad..f2a7e484cd89 100644 --- a/keyboards/abstract/ellipse/rev1/rev1.c +++ b/keyboards/abstract/ellipse/rev1/rev1.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "rev1.h" - -/*void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -}*/ \ No newline at end of file diff --git a/keyboards/abstract/ellipse/rev1/rules.mk b/keyboards/abstract/ellipse/rev1/rules.mk index cd55ecdbe7f8..f8a089ae31d0 100644 --- a/keyboards/abstract/ellipse/rev1/rules.mk +++ b/keyboards/abstract/ellipse/rev1/rules.mk @@ -2,31 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes # Enable support for rotary encoders diff --git a/keyboards/acekeyboard/titan60/info.json b/keyboards/acekeyboard/titan60/info.json index f6e79f0eada5..8e7b41c9cd36 100644 --- a/keyboards/acekeyboard/titan60/info.json +++ b/keyboards/acekeyboard/titan60/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Titan60", "url": "https://acekeyboard.co/", "maintainer": "keebnewb", - "width": 14, - "height": 5, "layouts": { "LAYOUT_60_ansi": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"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}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":2.75}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}] diff --git a/keyboards/acekeyboard/titan60/rules.mk b/keyboards/acekeyboard/titan60/rules.mk index 92f7aba54252..662838d11f50 100644 --- a/keyboards/acekeyboard/titan60/rules.mk +++ b/keyboards/acekeyboard/titan60/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/acheron/arctic/info.json b/keyboards/acheron/arctic/info.json index 3c06ab145a25..4f9974a1f60b 100644 --- a/keyboards/acheron/arctic/info.json +++ b/keyboards/acheron/arctic/info.json @@ -2,8 +2,6 @@ "keyboard_name": "ArcticPCB", "url": "http://gondolindrim.github.io/AcheronDocs/arctic/intro.html", "maintainer": "Gondolindrim", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_ansi_tsangan": { "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}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"Fn", "x":12.5, "y":4}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}] diff --git a/keyboards/acheron/arctic/rules.mk b/keyboards/acheron/arctic/rules.mk index b38cf0001744..7b5105d59bde 100644 --- a/keyboards/acheron/arctic/rules.mk +++ b/keyboards/acheron/arctic/rules.mk @@ -7,19 +7,16 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # 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 on port C6 +AUDIO_ENABLE = no # Audio output # Enter lower-power sleep mode when on the ChibiOS idle thread OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/acheron/austin/info.json b/keyboards/acheron/austin/info.json index af857f97390f..bee81486e3ad 100755 --- a/keyboards/acheron/austin/info.json +++ b/keyboards/acheron/austin/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Austin", "url": "", "maintainer": "qmk", - "width": 19.75, - "height": 5.25, "layouts": { "LAYOUT_all": { - "key_count": 105, "layout": [ {"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.25, "y":0}, diff --git a/keyboards/acheron/austin/keymaps/via/rules.mk b/keyboards/acheron/austin/keymaps/via/rules.mk index ee1e4ceeb4b8..666e72557b07 100644 --- a/keyboards/acheron/austin/keymaps/via/rules.mk +++ b/keyboards/acheron/austin/keymaps/via/rules.mk @@ -1,2 +1,2 @@ VIA_ENABLE = yes -BOOTMAGIC_ENABLE = lite +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite diff --git a/keyboards/acheron/austin/rules.mk b/keyboards/acheron/austin/rules.mk index 57fb9cbb373c..3f34d52c84e3 100644 --- a/keyboards/acheron/austin/rules.mk +++ b/keyboards/acheron/austin/rules.mk @@ -7,19 +7,15 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output # Enter lower-power sleep mode when on the ChibiOS idle thread OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/acheron/elongate/config.h b/keyboards/acheron/elongate/config.h index cc94d5f02866..434e62cd8659 100644 --- a/keyboards/acheron/elongate/config.h +++ b/keyboards/acheron/elongate/config.h @@ -121,59 +121,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -193,25 +140,6 @@ along with this program. If not, see . /* disable these deprecated features by default */ #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 diff --git a/keyboards/acheron/elongate/info.json b/keyboards/acheron/elongate/info.json index 46784164b4a5..bfb9db9b3acd 100644 --- a/keyboards/acheron/elongate/info.json +++ b/keyboards/acheron/elongate/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Elongate", "url": "http://gondolindrim.github.io/AcheronDocs/elongate/introduction.html", "maintainer": "Gondolindrim", - "width": 15.5, - "height": 4.25, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/acheron/elongate/rules.mk b/keyboards/acheron/elongate/rules.mk index 6d5f0fb527df..9590224965b2 100644 --- a/keyboards/acheron/elongate/rules.mk +++ b/keyboards/acheron/elongate/rules.mk @@ -2,30 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LTO_ENABLE = yes diff --git a/keyboards/acheron/keebspcb/info.json b/keyboards/acheron/keebspcb/info.json index 9312dc0fb1e2..b316cc6849c4 100644 --- a/keyboards/acheron/keebspcb/info.json +++ b/keyboards/acheron/keebspcb/info.json @@ -2,8 +2,6 @@ "keyboard_name": "KeebsPCB", "url": "http://gondolindrim.github.io/AcheronDocs/keebs/intro.html", "maintainer": "Gondolindrim", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_ansi_tsangan": { "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}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"Win", "x":12.5, "y":4}, {"label":"Menu", "x":13.5, "y":4, "w":1.5}] diff --git a/keyboards/acheron/keebspcb/rules.mk b/keyboards/acheron/keebspcb/rules.mk index 7a166e84faf3..c85341a466c8 100644 --- a/keyboards/acheron/keebspcb/rules.mk +++ b/keyboards/acheron/keebspcb/rules.mk @@ -7,20 +7,16 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output # Enter lower-power sleep mode when on the ChibiOS idle thread OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/acheron/lasgweloth/info.json b/keyboards/acheron/lasgweloth/info.json index 419769460026..b936b45d6ec7 100644 --- a/keyboards/acheron/lasgweloth/info.json +++ b/keyboards/acheron/lasgweloth/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Lasgweloth", "url": "", "maintainer": "Gondolindrim", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_ansi": { "layout": [ diff --git a/keyboards/acheron/lasgweloth/rules.mk b/keyboards/acheron/lasgweloth/rules.mk index fb7e4951549c..954d87155a0c 100644 --- a/keyboards/acheron/lasgweloth/rules.mk +++ b/keyboards/acheron/lasgweloth/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = 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 ENCODER_ENABLE = no diff --git a/keyboards/acheron/shark/config.h b/keyboards/acheron/shark/config.h index e45b69b6251a..78f763fe90c8 100644 --- a/keyboards/acheron/shark/config.h +++ b/keyboards/acheron/shark/config.h @@ -133,59 +133,6 @@ B0, which is unconnected on the PCB */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -204,26 +151,6 @@ B0, which is unconnected on the PCB //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/acheron/shark/info.json b/keyboards/acheron/shark/info.json index 1af8f8cdfaf6..21f4807eeb78 100644 --- a/keyboards/acheron/shark/info.json +++ b/keyboards/acheron/shark/info.json @@ -2,11 +2,8 @@ "keyboard_name": "SharkPCB", "url": "https://gondolindrim.github.io/AcheronDocs/shark/intro.html", "maintainer": "Gondolindrim", - "width": 12, - "height": 4, "layouts": { "LAYOUT_ortho_4x12": { - "key_count": 48, "layout": [ { "x": 0, "y": 0 }, { "x": 1, "y": 0 }, diff --git a/keyboards/acheron/shark/keymaps/ajp10304/readme.md b/keyboards/acheron/shark/keymaps/ajp10304/readme.md index 73e5b831e01c..cb8bcdae90a5 100644 --- a/keyboards/acheron/shark/keymaps/ajp10304/readme.md +++ b/keyboards/acheron/shark/keymaps/ajp10304/readme.md @@ -1,5 +1,5 @@ # AJP10304 Custom Shark Layout -# Also available for the Planck, JJ40 and Atreus50 +# Also available for the Planck, Quark, JJ40 and Atreus50 **Note:** In the tables below where there are two characters on a key, the second is the output when shift is applied. @@ -7,8 +7,7 @@ the second is the output when shift is applied. **Note:** The below tables assume a UK layout. #### Flashing - -`make acheron/shark:ajp10304:flash` +Refer to the README.md of the keyboard you want to flash. ##### Main Qwerty Layer @@ -102,7 +101,7 @@ Activated when `fn` and `raise` held together. | | | | | | | | | | | | | | :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| -| ESC | | | | | | | | BTN3 | | | | +| ESC | | | | | | W_L | W_UP | BTN3 | W_DWN| W_R | | | ACC0 | ACC1 | ACC2 | | | | | BTN1 | UP | BTN2 | | | | ACC0 | ACC1 | ACC2 | | | | | LEFT | DOWN | RIGHT| | | | | | | | | | | | | | | | diff --git a/keyboards/acheron/shark/keymaps/via/rules.mk b/keyboards/acheron/shark/keymaps/via/rules.mk index ee1e4ceeb4b8..666e72557b07 100644 --- a/keyboards/acheron/shark/keymaps/via/rules.mk +++ b/keyboards/acheron/shark/keymaps/via/rules.mk @@ -1,2 +1,2 @@ VIA_ENABLE = yes -BOOTMAGIC_ENABLE = lite +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite diff --git a/keyboards/acheron/shark/rules.mk b/keyboards/acheron/shark/rules.mk index 455c98f7e6b3..23843580cb15 100644 --- a/keyboards/acheron/shark/rules.mk +++ b/keyboards/acheron/shark/rules.mk @@ -8,21 +8,16 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = ortho_4x12 diff --git a/keyboards/acheron/shark/shark.c b/keyboards/acheron/shark/shark.c index b15c8a270e67..ab607edae1f2 100644 --- a/keyboards/acheron/shark/shark.c +++ b/keyboards/acheron/shark/shark.c @@ -14,38 +14,3 @@ * along with this program. If not, see . */ #include "shark.h" - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -/* - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - -*/ diff --git a/keyboards/acr60/acr60.c b/keyboards/acr60/acr60.c index 8a76020e547b..7cba669b84ed 100644 --- a/keyboards/acr60/acr60.c +++ b/keyboards/acr60/acr60.c @@ -1,28 +1,17 @@ -#include "acr60.h" -#include "led.h" - -void matrix_init_kb(void) { - // Keyboard start-up code goes here - // Runs once when the firmware starts up - matrix_init_user(); - led_init_ports(); -}; - -void matrix_scan_kb(void) { - // Looping keyboard code goes here - // This runs every cycle (a lot) - matrix_scan_user(); -}; +/* Copyright 2017 Ryan Mitchell (@newtmitch) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ -void led_init_ports(void) { - // Set caps lock LED pin as output - DDRB |= (1 << 2); - // Default to off - PORTB |= (1 << 2); -} - -void led_set_kb(uint8_t usb_led) { - // Code for caps lock LED as reported by the OS - // Set this per keymap, instead of globally - led_set_user(usb_led); -} +#include "acr60.h" diff --git a/keyboards/acr60/acr60.h b/keyboards/acr60/acr60.h index 9a2d59f6344c..5a52a3bc86a8 100644 --- a/keyboards/acr60/acr60.h +++ b/keyboards/acr60/acr60.h @@ -1,76 +1,93 @@ -#ifndef ARC60_H -#define ARC60_H +/* Copyright 2017 Ryan Mitchell (@newtmitch) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once #include "quantum.h" -#define LAYOUT( \ - K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \ - K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \ - K200, 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, K403, K404, K406, K408, K410, K411, K412, K413, K414 \ +#define ___ KC_NO + +#define LAYOUT_all( \ + 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, K41, K43, K44, K46, K48, K4A, K4B, K4C, K4D, K4E \ ) { \ - { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \ - { K100, KC_NO, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \ - { K200, KC_NO, 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, K314 }, \ - { K400, K401, KC_NO, K403, K404, KC_NO, K406, KC_NO, K408, KC_NO, K410, K411, K412, K413, K414 } \ + { 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, K41, ___, K43, K44, ___, K46, ___, K48, ___, K4A, K4B, K4C, K4D, K4E } \ } -#define LAYOUT_hhkb( \ - K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \ - K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \ - K200, 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, \ - K401, K403, K406, K411, K413 \ +#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, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \ + K40, K41, K43, K44, K46, K48, K4A, K4B, K4C, K4D, K4E \ ) { \ - { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \ - { K100, KC_NO, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \ - { K200, KC_NO, 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, K314 }, \ - { KC_NO, K401, KC_NO, K403, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, KC_NO, K411, KC_NO, K413, KC_NO } \ + { 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, ___, K3D, K3E }, \ + { K40, K41, ___, K43, K44, ___, K46, ___, K48, ___, K4A, K4B, K4C, K4D, K4E } \ } -#define LAYOUT_true_hhkb( \ - K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \ - K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \ - K200, 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, \ - K401, K403, K406, K410, K411 \ +#define LAYOUT_hhkb( \ + 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, K3D, K3E, \ + K41, K43, K46, K4B, K4D \ ) { \ - { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \ - { K100, KC_NO, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \ - { K200, KC_NO, 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, K314 }, \ - { KC_NO, K401, KC_NO, K403, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, K410, K411, KC_NO, KC_NO, KC_NO } \ + { 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, ___, K3D, K3E }, \ + { ___, K41, ___, K43, ___, ___, K46, ___, ___, ___, ___, K4B, ___, K4D, ___ } \ } -#define LAYOUT_2_shifts( \ - K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \ - K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \ - K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, \ - K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, \ - K400, K401, K403, K404, K406, K408, K410, K411, K412, K413, K414 \ +#define LAYOUT_true_hhkb( \ + 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, K3D, K3E, \ + K41, K43, K46, K4A, K4B \ ) { \ - { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \ - { K100, KC_NO, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \ - { K200, KC_NO, 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, K312, K313, K314 }, \ - { K400, K401, KC_NO, K403, K404, KC_NO, K406, KC_NO, K408, KC_NO, K410, K411, K412, K413, K414 } \ + { 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, ___, K3D, K3E }, \ + { ___, K41, ___, K43, ___, ___, K46, ___, ___, ___, K4A, K4B, ___, ___, ___ } \ } #define LAYOUT_directional( \ - K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \ - K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \ - K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, \ - K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K312, K313, K314, \ - K400, K401, K403, K404, K406, K408, K410, K411, K412, K413, K414 \ + 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, K3C, K3D, K3E, \ + K40, K41, K43, K44, K46, K48, K4A, K4B, K4C, K4D, K4E \ ) { \ - { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \ - { K100, KC_NO, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \ - { K200, KC_NO, 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, KC_NO, K312, K313, K314 }, \ - { K400, K401, KC_NO, K403, K404, KC_NO, K406, KC_NO, K408, KC_NO, K410, K411, K412, K413, K414 } \ + { 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, ___, K3C, K3D, K3E }, \ + { K40, K41, ___, K43, K44, ___, K46, ___, K48, ___, K4A, K4B, K4C, K4D, K4E } \ } /* Mitch's keymap, "MitchSplit": @@ -78,30 +95,28 @@ * Split shift is 2.75u + 1.25u + 2.25u (total of 6.25u). Might not work with other orientations. */ /* - * ,-----------------------------------------------------------------------------------------. - * |K000 |K001 |K002 |K003 |K004 |K005 |K006 |K007 |K008 |K009 |K010 |K011 |K012 | K014 | - * |-----------------------------------------------------------------------------------------+ - * | K100 |K102 |K103 |K104 |K105 |K106 |K107 |K108 |K109 |K110 |K111 |K112 |K113 | K114 | - * |-----------------------------------------------------------------------------------------+ - * | K200 |K202 |K203 |K204 |K205 |K206 |K207 |K208 |K209 |K210 |K211 |K212 | K213 | - * |-----------------------------------------------------------------------------------------+ - * | K300 |K302 |K303 |K304 |K305 |K306 |K307 |K308 |K309 |K310 |K311 | K313 |K314 | - * |-----------------------------------------------------------------------------------------+ - * | K400 | K401 | K403 | K404 | K406 | K408 | K410 | K411 | K413 | K414 | - * `-----------------------------------------------------------------------------------------' + * ,-----------------------------------------------------------. + * |00 |01 |02 |03 |04 |05 |06 |07 |08 |09 |0A |0B |0C |0E | + * |-----------------------------------------------------------| + * |10 |12 |13 |14 |15 |16 |17 |18 |19 |1A |1B |1C |1D |1E | + * |-----------------------------------------------------------| + * |20 |22 |23 |24 |25 |26 |27 |28 |29 |2A |2B |2C |2D | + * |-----------------------------------------------------------| + * |30 |32 |33 |34 |35 |36 |37 |38 |39 |3A |3B |3D |3E | + * |-----------------------------------------------------------| + * |40 |41 |43 |44 |46 |48 |4A |4B |4D |4E | + * `-----------------------------------------------------------' */ #define LAYOUT_mitchsplit( \ - K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, \ - K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \ - K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, \ - K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, \ - K400, K401, K403, K404, K406, K408, K410, K411, K413, K414 \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, 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, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \ + K40, K41, K43, K44, K46, K48, K4A, K4B, K4D, K4E \ ) { \ - { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, KC_NO, K014 }, \ - { K100, KC_NO, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \ - { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, KC_NO }, \ - { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, K314 }, \ - { K400, K401, KC_NO, K403, K404, KC_NO, K406, KC_NO, K408, KC_NO, K410, K411, KC_NO, K413, K414 } \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, ___, 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, ___, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K3D, K3E }, \ + { K40, K41, ___, K43, K44, ___, K46, ___, K48, ___, K4A, K4B, ___, K4D, K4E } \ } - -#endif diff --git a/keyboards/acr60/config.h b/keyboards/acr60/config.h index 9d844b6d4814..7fb907153a91 100644 --- a/keyboards/acr60/config.h +++ b/keyboards/acr60/config.h @@ -1,5 +1,20 @@ -#ifndef CONFIG_H -#define CONFIG_H +/* Copyright 2017 Ryan Mitchell (@newtmitch) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once #include "config_common.h" @@ -22,6 +37,9 @@ /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW +#define LED_CAPS_LOCK_PIN B2 +#define LED_PIN_ON_STATE 0 + /* number of backlight levels */ #define BACKLIGHT_PIN B6 #define BACKLIGHT_LEVELS 5 @@ -41,5 +59,3 @@ #define RGBLIGHT_HUE_STEP 8 #define RGBLIGHT_SAT_STEP 8 #define RGBLIGHT_VAL_STEP 8 - -#endif diff --git a/keyboards/acr60/info.json b/keyboards/acr60/info.json index 660c357990ab..0e42e5162e93 100644 --- a/keyboards/acr60/info.json +++ b/keyboards/acr60/info.json @@ -1,33 +1,446 @@ { - "keyboard_name": "ACR60", - "url": "", - "maintainer": "qmk", - "width": 15, - "height": 5, - "layouts": { - "LAYOUT": { - "key_count": 67, - "layout": [{"label":"K000", "x":0, "y":0}, {"label":"K001", "x":1, "y":0}, {"label":"K002", "x":2, "y":0}, {"label":"K003", "x":3, "y":0}, {"label":"K004", "x":4, "y":0}, {"label":"K005", "x":5, "y":0}, {"label":"K006", "x":6, "y":0}, {"label":"K007", "x":7, "y":0}, {"label":"K008", "x":8, "y":0}, {"label":"K009", "x":9, "y":0}, {"label":"K010", "x":10, "y":0}, {"label":"K011", "x":11, "y":0}, {"label":"K012", "x":12, "y":0}, {"label":"K013", "x":13, "y":0}, {"label":"K014", "x":14, "y":0}, {"label":"K100", "x":0, "y":1, "w":1.5}, {"label":"K102", "x":1.5, "y":1}, {"label":"K103", "x":2.5, "y":1}, {"label":"K104", "x":3.5, "y":1}, {"label":"K105", "x":4.5, "y":1}, {"label":"K106", "x":5.5, "y":1}, {"label":"K107", "x":6.5, "y":1}, {"label":"K108", "x":7.5, "y":1}, {"label":"K109", "x":8.5, "y":1}, {"label":"K110", "x":9.5, "y":1}, {"label":"K111", "x":10.5, "y":1}, {"label":"K112", "x":11.5, "y":1}, {"label":"K113", "x":12.5, "y":1}, {"label":"K114", "x":13.5, "y":1, "w":1.5}, {"label":"K200", "x":0, "y":2, "w":1.75}, {"label":"K202", "x":1.75, "y":2}, {"label":"K203", "x":2.75, "y":2}, {"label":"K204", "x":3.75, "y":2}, {"label":"K205", "x":4.75, "y":2}, {"label":"K206", "x":5.75, "y":2}, {"label":"K207", "x":6.75, "y":2}, {"label":"K208", "x":7.75, "y":2}, {"label":"K209", "x":8.75, "y":2}, {"label":"K210", "x":9.75, "y":2}, {"label":"K211", "x":10.75, "y":2}, {"label":"K212", "x":11.75, "y":2}, {"label":"K213", "x":12.75, "y":2, "w":2.25}, {"label":"K300", "x":0, "y":3, "w":1.25}, {"label":"K301", "x":1.25, "y":3}, {"label":"K302", "x":2.25, "y":3}, {"label":"K303", "x":3.25, "y":3}, {"label":"K304", "x":4.25, "y":3}, {"label":"K305", "x":5.25, "y":3}, {"label":"K306", "x":6.25, "y":3}, {"label":"K307", "x":7.25, "y":3}, {"label":"K308", "x":8.25, "y":3}, {"label":"K309", "x":9.25, "y":3}, {"label":"K310", "x":10.25, "y":3}, {"label":"K311", "x":11.25, "y":3}, {"label":"K313", "x":12.25, "y":3, "w":1.75}, {"label":"K314", "x":14, "y":3}, {"label":"K400", "x":0, "y":4, "w":1.25}, {"label":"K401", "x":1.25, "y":4, "w":1.25}, {"label":"K403", "x":2.5, "y":4, "w":1.25}, {"label":"K404", "x":3.75, "y":4, "w":2.25}, {"label":"K406", "x":6, "y":4, "w":1.25}, {"label":"K408", "x":7.25, "y":4, "w":2.75}, {"label":"K410", "x":10, "y":4}, {"label":"K411", "x":11, "y":4}, {"label":"K412", "x":12, "y":4}, {"label":"K413", "x":13, "y":4}, {"label":"K414", "x":14, "y":4}] + "keyboard_name": "ACR60", + "url": "", + "maintainer": "qmk", + "layout_aliases": { + "LAYOUT_2_shifts": "LAYOUT_all" }, - "LAYOUT_hhkb": { - "key_count": 61, - "layout": [{"label":"K000", "x":0, "y":0}, {"label":"K001", "x":1, "y":0}, {"label":"K002", "x":2, "y":0}, {"label":"K003", "x":3, "y":0}, {"label":"K004", "x":4, "y":0}, {"label":"K005", "x":5, "y":0}, {"label":"K006", "x":6, "y":0}, {"label":"K007", "x":7, "y":0}, {"label":"K008", "x":8, "y":0}, {"label":"K009", "x":9, "y":0}, {"label":"K010", "x":10, "y":0}, {"label":"K011", "x":11, "y":0}, {"label":"K012", "x":12, "y":0}, {"label":"K013", "x":13, "y":0}, {"label":"K014", "x":14, "y":0}, {"label":"K100", "x":0, "y":1, "w":1.5}, {"label":"K102", "x":1.5, "y":1}, {"label":"K103", "x":2.5, "y":1}, {"label":"K104", "x":3.5, "y":1}, {"label":"K105", "x":4.5, "y":1}, {"label":"K106", "x":5.5, "y":1}, {"label":"K107", "x":6.5, "y":1}, {"label":"K108", "x":7.5, "y":1}, {"label":"K109", "x":8.5, "y":1}, {"label":"K110", "x":9.5, "y":1}, {"label":"K111", "x":10.5, "y":1}, {"label":"K112", "x":11.5, "y":1}, {"label":"K113", "x":12.5, "y":1}, {"label":"K114", "x":13.5, "y":1, "w":1.5}, {"label":"K200", "x":0, "y":2, "w":1.75}, {"label":"K202", "x":1.75, "y":2}, {"label":"K203", "x":2.75, "y":2}, {"label":"K204", "x":3.75, "y":2}, {"label":"K205", "x":4.75, "y":2}, {"label":"K206", "x":5.75, "y":2}, {"label":"K207", "x":6.75, "y":2}, {"label":"K208", "x":7.75, "y":2}, {"label":"K209", "x":8.75, "y":2}, {"label":"K210", "x":9.75, "y":2}, {"label":"K211", "x":10.75, "y":2}, {"label":"K212", "x":11.75, "y":2}, {"label":"K213", "x":12.75, "y":2, "w":2.25}, {"label":"K300", "x":0, "y":3, "w":1.25}, {"label":"K301", "x":1.25, "y":3}, {"label":"K302", "x":2.25, "y":3}, {"label":"K303", "x":3.25, "y":3}, {"label":"K304", "x":4.25, "y":3}, {"label":"K305", "x":5.25, "y":3}, {"label":"K306", "x":6.25, "y":3}, {"label":"K307", "x":7.25, "y":3}, {"label":"K308", "x":8.25, "y":3}, {"label":"K309", "x":9.25, "y":3}, {"label":"K310", "x":10.25, "y":3}, {"label":"K311", "x":11.25, "y":3}, {"label":"K313", "x":12.25, "y":3, "w":1.75}, {"label":"K314", "x":14, "y":3}, {"label":"K401", "x":1.5, "y":4}, {"label":"K403", "x":2.5, "y":4, "w":1.5}, {"label":"K406", "x":4, "y":4, "w":7}, {"label":"K411", "x":11, "y":4, "w":1.5}, {"label":"K413", "x":12.5, "y":4}] - }, - "LAYOUT_true_hhkb": { - "key_count": 61, - "layout": [{"label":"K000", "x":0, "y":0}, {"label":"K001", "x":1, "y":0}, {"label":"K002", "x":2, "y":0}, {"label":"K003", "x":3, "y":0}, {"label":"K004", "x":4, "y":0}, {"label":"K005", "x":5, "y":0}, {"label":"K006", "x":6, "y":0}, {"label":"K007", "x":7, "y":0}, {"label":"K008", "x":8, "y":0}, {"label":"K009", "x":9, "y":0}, {"label":"K010", "x":10, "y":0}, {"label":"K011", "x":11, "y":0}, {"label":"K012", "x":12, "y":0}, {"label":"K013", "x":13, "y":0}, {"label":"K014", "x":14, "y":0}, {"label":"K100", "x":0, "y":1, "w":1.5}, {"label":"K102", "x":1.5, "y":1}, {"label":"K103", "x":2.5, "y":1}, {"label":"K104", "x":3.5, "y":1}, {"label":"K105", "x":4.5, "y":1}, {"label":"K106", "x":5.5, "y":1}, {"label":"K107", "x":6.5, "y":1}, {"label":"K108", "x":7.5, "y":1}, {"label":"K109", "x":8.5, "y":1}, {"label":"K110", "x":9.5, "y":1}, {"label":"K111", "x":10.5, "y":1}, {"label":"K112", "x":11.5, "y":1}, {"label":"K113", "x":12.5, "y":1}, {"label":"K114", "x":13.5, "y":1, "w":1.5}, {"label":"K200", "x":0, "y":2, "w":1.75}, {"label":"K202", "x":1.75, "y":2}, {"label":"K203", "x":2.75, "y":2}, {"label":"K204", "x":3.75, "y":2}, {"label":"K205", "x":4.75, "y":2}, {"label":"K206", "x":5.75, "y":2}, {"label":"K207", "x":6.75, "y":2}, {"label":"K208", "x":7.75, "y":2}, {"label":"K209", "x":8.75, "y":2}, {"label":"K210", "x":9.75, "y":2}, {"label":"K211", "x":10.75, "y":2}, {"label":"K212", "x":11.75, "y":2}, {"label":"K213", "x":12.75, "y":2, "w":2.25}, {"label":"K300", "x":0, "y":3, "w":1.25}, {"label":"K301", "x":1.25, "y":3}, {"label":"K302", "x":2.25, "y":3}, {"label":"K303", "x":3.25, "y":3}, {"label":"K304", "x":4.25, "y":3}, {"label":"K305", "x":5.25, "y":3}, {"label":"K306", "x":6.25, "y":3}, {"label":"K307", "x":7.25, "y":3}, {"label":"K308", "x":8.25, "y":3}, {"label":"K309", "x":9.25, "y":3}, {"label":"K310", "x":10.25, "y":3}, {"label":"K311", "x":11.25, "y":3}, {"label":"K313", "x":12.25, "y":3, "w":1.75}, {"label":"K314", "x":14, "y":3}, {"label":"K401", "x":1.5, "y":4}, {"label":"K403", "x":2.5, "y":4, "w":1.5}, {"label":"K406", "x":4, "y":4, "w":6}, {"label":"K410", "x":10, "y":4, "w":1.5}, {"label":"K411", "x":11.5, "y":4}] - }, - "LAYOUT_2_shifts": { - "key_count": 68, - "layout": [{"label":"K000", "x":0, "y":0}, {"label":"K001", "x":1, "y":0}, {"label":"K002", "x":2, "y":0}, {"label":"K003", "x":3, "y":0}, {"label":"K004", "x":4, "y":0}, {"label":"K005", "x":5, "y":0}, {"label":"K006", "x":6, "y":0}, {"label":"K007", "x":7, "y":0}, {"label":"K008", "x":8, "y":0}, {"label":"K009", "x":9, "y":0}, {"label":"K010", "x":10, "y":0}, {"label":"K011", "x":11, "y":0}, {"label":"K012", "x":12, "y":0}, {"label":"K013", "x":13, "y":0}, {"label":"K014", "x":14, "y":0}, {"label":"K100", "x":0, "y":1, "w":1.5}, {"label":"K102", "x":1.5, "y":1}, {"label":"K103", "x":2.5, "y":1}, {"label":"K104", "x":3.5, "y":1}, {"label":"K105", "x":4.5, "y":1}, {"label":"K106", "x":5.5, "y":1}, {"label":"K107", "x":6.5, "y":1}, {"label":"K108", "x":7.5, "y":1}, {"label":"K109", "x":8.5, "y":1}, {"label":"K110", "x":9.5, "y":1}, {"label":"K111", "x":10.5, "y":1}, {"label":"K112", "x":11.5, "y":1}, {"label":"K113", "x":12.5, "y":1}, {"label":"K114", "x":13.5, "y":1, "w":1.5}, {"label":"K200", "x":0, "y":2, "w":1.75}, {"label":"K202", "x":1.75, "y":2}, {"label":"K203", "x":2.75, "y":2}, {"label":"K204", "x":3.75, "y":2}, {"label":"K205", "x":4.75, "y":2}, {"label":"K206", "x":5.75, "y":2}, {"label":"K207", "x":6.75, "y":2}, {"label":"K208", "x":7.75, "y":2}, {"label":"K209", "x":8.75, "y":2}, {"label":"K210", "x":9.75, "y":2}, {"label":"K211", "x":10.75, "y":2}, {"label":"K212", "x":11.75, "y":2}, {"label":"K213", "x":12.75, "y":2, "w":2.25}, {"label":"K300", "x":0, "y":3}, {"label":"K301", "x":1, "y":3}, {"label":"K302", "x":2, "y":3}, {"label":"K303", "x":3, "y":3}, {"label":"K304", "x":4, "y":3}, {"label":"K305", "x":5, "y":3}, {"label":"K306", "x":6, "y":3}, {"label":"K307", "x":7, "y":3}, {"label":"K308", "x":8, "y":3}, {"label":"K309", "x":9, "y":3}, {"label":"K310", "x":10, "y":3}, {"label":"K311", "x":11, "y":3}, {"label":"K312", "x":12, "y":3}, {"label":"K313", "x":13, "y":3}, {"label":"K314", "x":14, "y":3}, {"label":"K400", "x":0, "y":4, "w":1.25}, {"label":"K401", "x":1.25, "y":4, "w":1.25}, {"label":"K403", "x":2.5, "y":4, "w":1.25}, {"label":"K404", "x":3.75, "y":4, "w":2.25}, {"label":"K406", "x":6, "y":4, "w":1.25}, {"label":"K408", "x":7.25, "y":4, "w":2.75}, {"label":"K410", "x":10, "y":4}, {"label":"K411", "x":11, "y":4}, {"label":"K412", "x":12, "y":4}, {"label":"K413", "x":13, "y":4}, {"label":"K414", "x":14, "y":4}] - }, - "LAYOUT_directional": { - "key_count": 67, - "layout": [{"label":"K000", "x":0, "y":0}, {"label":"K001", "x":1, "y":0}, {"label":"K002", "x":2, "y":0}, {"label":"K003", "x":3, "y":0}, {"label":"K004", "x":4, "y":0}, {"label":"K005", "x":5, "y":0}, {"label":"K006", "x":6, "y":0}, {"label":"K007", "x":7, "y":0}, {"label":"K008", "x":8, "y":0}, {"label":"K009", "x":9, "y":0}, {"label":"K010", "x":10, "y":0}, {"label":"K011", "x":11, "y":0}, {"label":"K012", "x":12, "y":0}, {"label":"K013", "x":13, "y":0}, {"label":"K014", "x":14, "y":0}, {"label":"K100", "x":0, "y":1, "w":1.5}, {"label":"K102", "x":1.5, "y":1}, {"label":"K103", "x":2.5, "y":1}, {"label":"K104", "x":3.5, "y":1}, {"label":"K105", "x":4.5, "y":1}, {"label":"K106", "x":5.5, "y":1}, {"label":"K107", "x":6.5, "y":1}, {"label":"K108", "x":7.5, "y":1}, {"label":"K109", "x":8.5, "y":1}, {"label":"K110", "x":9.5, "y":1}, {"label":"K111", "x":10.5, "y":1}, {"label":"K112", "x":11.5, "y":1}, {"label":"K113", "x":12.5, "y":1}, {"label":"K114", "x":13.5, "y":1, "w":1.5}, {"label":"K200", "x":0, "y":2, "w":1.75}, {"label":"K202", "x":1.75, "y":2}, {"label":"K203", "x":2.75, "y":2}, {"label":"K204", "x":3.75, "y":2}, {"label":"K205", "x":4.75, "y":2}, {"label":"K206", "x":5.75, "y":2}, {"label":"K207", "x":6.75, "y":2}, {"label":"K208", "x":7.75, "y":2}, {"label":"K209", "x":8.75, "y":2}, {"label":"K210", "x":9.75, "y":2}, {"label":"K211", "x":10.75, "y":2}, {"label":"K212", "x":11.75, "y":2}, {"label":"K213", "x":12.75, "y":2, "w":2.25}, {"label":"K300", "x":0, "y":3, "w":1.25}, {"label":"K301", "x":1.25, "y":3}, {"label":"K302", "x":2.25, "y":3}, {"label":"K303", "x":3.25, "y":3}, {"label":"K304", "x":4.25, "y":3}, {"label":"K305", "x":5.25, "y":3}, {"label":"K306", "x":6.25, "y":3}, {"label":"K307", "x":7.25, "y":3}, {"label":"K308", "x":8.25, "y":3}, {"label":"K309", "x":9.25, "y":3}, {"label":"K310", "x":10.25, "y":3}, {"label":"K312", "x":11.25, "y":3, "w":1.75}, {"label":"K313", "x":13, "y":3}, {"label":"K314", "x":14, "y":3}, {"label":"K400", "x":0, "y":4, "w":1.25}, {"label":"K401", "x":1.25, "y":4, "w":1.25}, {"label":"K403", "x":2.5, "y":4, "w":1.25}, {"label":"K404", "x":3.75, "y":4, "w":2.25}, {"label":"K406", "x":6, "y":4, "w":1.25}, {"label":"K408", "x":7.25, "y":4, "w":2.75}, {"label":"K410", "x":10, "y":4}, {"label":"K411", "x":11, "y":4}, {"label":"K412", "x":12, "y":4}, {"label":"K413", "x":13, "y":4}, {"label":"K414", "x":14, "y":4}] - }, - "LAYOUT_mitchsplit": { - "key_count": 64, - "layout": [{"label":"K000", "x":0, "y":0}, {"label":"K001", "x":1, "y":0}, {"label":"K002", "x":2, "y":0}, {"label":"K003", "x":3, "y":0}, {"label":"K004", "x":4, "y":0}, {"label":"K005", "x":5, "y":0}, {"label":"K006", "x":6, "y":0}, {"label":"K007", "x":7, "y":0}, {"label":"K008", "x":8, "y":0}, {"label":"K009", "x":9, "y":0}, {"label":"K010", "x":10, "y":0}, {"label":"K011", "x":11, "y":0}, {"label":"K012", "x":12, "y":0}, {"label":"K014", "x":13, "y":0, "w":2}, {"label":"K100", "x":0, "y":1, "w":1.5}, {"label":"K102", "x":1.5, "y":1}, {"label":"K103", "x":2.5, "y":1}, {"label":"K104", "x":3.5, "y":1}, {"label":"K105", "x":4.5, "y":1}, {"label":"K106", "x":5.5, "y":1}, {"label":"K107", "x":6.5, "y":1}, {"label":"K108", "x":7.5, "y":1}, {"label":"K109", "x":8.5, "y":1}, {"label":"K110", "x":9.5, "y":1}, {"label":"K111", "x":10.5, "y":1}, {"label":"K112", "x":11.5, "y":1}, {"label":"K113", "x":12.5, "y":1}, {"label":"K114", "x":13.5, "y":1, "w":1.5}, {"label":"K200", "x":0, "y":2, "w":1.75}, {"label":"K202", "x":1.75, "y":2}, {"label":"K203", "x":2.75, "y":2}, {"label":"K204", "x":3.75, "y":2}, {"label":"K205", "x":4.75, "y":2}, {"label":"K206", "x":5.75, "y":2}, {"label":"K207", "x":6.75, "y":2}, {"label":"K208", "x":7.75, "y":2}, {"label":"K209", "x":8.75, "y":2}, {"label":"K210", "x":9.75, "y":2}, {"label":"K211", "x":10.75, "y":2}, {"label":"K212", "x":11.75, "y":2}, {"label":"K213", "x":12.75, "y":2, "w":2.25}, {"label":"K300", "x":0, "y":3, "w":2.25}, {"label":"K302", "x":2.25, "y":3}, {"label":"K303", "x":3.25, "y":3}, {"label":"K304", "x":4.25, "y":3}, {"label":"K305", "x":5.25, "y":3}, {"label":"K306", "x":6.25, "y":3}, {"label":"K307", "x":7.25, "y":3}, {"label":"K308", "x":8.25, "y":3}, {"label":"K309", "x":9.25, "y":3}, {"label":"K310", "x":10.25, "y":3}, {"label":"K311", "x":11.25, "y":3}, {"label":"K313", "x":12.25, "y":3, "w":1.75}, {"label":"K314", "x":14, "y":3}, {"label":"K400", "x":0, "y":4, "w":1.25}, {"label":"K401", "x":1.25, "y":4, "w":1.25}, {"label":"K403", "x":2.5, "y":4, "w":1.25}, {"label":"K404", "x":3.75, "y":4, "w":2.75}, {"label":"K406", "x":6.5, "y":4, "w":1.25}, {"label":"K408", "x":7.75, "y":4, "w":2.25}, {"label":"K410", "x":10, "y":4, "w":1.25}, {"label":"K411", "x":11.25, "y":4, "w":1.25}, {"label":"K413", "x":12.5, "y":4, "w":1.25}, {"label":"K414", "x":13.75, "y":4, "w":1.25}] + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"K00", "x":0, "y":0}, + {"label":"K01", "x":1, "y":0}, + {"label":"K02", "x":2, "y":0}, + {"label":"K03", "x":3, "y":0}, + {"label":"K04", "x":4, "y":0}, + {"label":"K05", "x":5, "y":0}, + {"label":"K06", "x":6, "y":0}, + {"label":"K07", "x":7, "y":0}, + {"label":"K08", "x":8, "y":0}, + {"label":"K09", "x":9, "y":0}, + {"label":"K0A", "x":10, "y":0}, + {"label":"K0B", "x":11, "y":0}, + {"label":"K0C", "x":12, "y":0}, + {"label":"K0D", "x":13, "y":0}, + {"label":"K0E", "x":14, "y":0}, + + {"label":"K10", "x":0, "y":1, "w":1.5}, + {"label":"K12", "x":1.5, "y":1}, + {"label":"K13", "x":2.5, "y":1}, + {"label":"K14", "x":3.5, "y":1}, + {"label":"K15", "x":4.5, "y":1}, + {"label":"K16", "x":5.5, "y":1}, + {"label":"K17", "x":6.5, "y":1}, + {"label":"K18", "x":7.5, "y":1}, + {"label":"K19", "x":8.5, "y":1}, + {"label":"K1A", "x":9.5, "y":1}, + {"label":"K1B", "x":10.5, "y":1}, + {"label":"K1C", "x":11.5, "y":1}, + {"label":"K1D", "x":12.5, "y":1}, + {"label":"K1E", "x":13.5, "y":1, "w":1.5}, + + {"label":"K20", "x":0, "y":2, "w":1.75}, + {"label":"K22", "x":1.75, "y":2}, + {"label":"K23", "x":2.75, "y":2}, + {"label":"K24", "x":3.75, "y":2}, + {"label":"K25", "x":4.75, "y":2}, + {"label":"K26", "x":5.75, "y":2}, + {"label":"K27", "x":6.75, "y":2}, + {"label":"K28", "x":7.75, "y":2}, + {"label":"K29", "x":8.75, "y":2}, + {"label":"K2A", "x":9.75, "y":2}, + {"label":"K2B", "x":10.75, "y":2}, + {"label":"K2C", "x":11.75, "y":2}, + {"label":"K2D", "x":12.75, "y":2, "w":2.25}, + + {"label":"K30", "x":0, "y":3}, + {"label":"K31", "x":1, "y":3}, + {"label":"K32", "x":2, "y":3}, + {"label":"K33", "x":3, "y":3}, + {"label":"K34", "x":4, "y":3}, + {"label":"K35", "x":5, "y":3}, + {"label":"K36", "x":6, "y":3}, + {"label":"K37", "x":7, "y":3}, + {"label":"K38", "x":8, "y":3}, + {"label":"K39", "x":9, "y":3}, + {"label":"K3A", "x":10, "y":3}, + {"label":"K3B", "x":11, "y":3}, + {"label":"K3C", "x":12, "y":3}, + {"label":"K3D", "x":13, "y":3}, + {"label":"K3E", "x":14, "y":3}, + + {"label":"K40", "x":0, "y":4, "w":1.25}, + {"label":"K41", "x":1.25, "y":4, "w":1.25}, + {"label":"K43", "x":2.5, "y":4, "w":1.25}, + {"label":"K44", "x":3.75, "y":4, "w":2.25}, + {"label":"K46", "x":6, "y":4, "w":1.25}, + {"label":"K48", "x":7.25, "y":4, "w":2.75}, + {"label":"K4A", "x":10, "y":4}, + {"label":"K4B", "x":11, "y":4}, + {"label":"K4C", "x":12, "y":4}, + {"label":"K4D", "x":13, "y":4}, + {"label":"K4E", "x":14, "y":4} + ] + }, + "LAYOUT": { + "layout": [ + {"label":"K00", "x":0, "y":0}, + {"label":"K01", "x":1, "y":0}, + {"label":"K02", "x":2, "y":0}, + {"label":"K03", "x":3, "y":0}, + {"label":"K04", "x":4, "y":0}, + {"label":"K05", "x":5, "y":0}, + {"label":"K06", "x":6, "y":0}, + {"label":"K07", "x":7, "y":0}, + {"label":"K08", "x":8, "y":0}, + {"label":"K09", "x":9, "y":0}, + {"label":"K0A", "x":10, "y":0}, + {"label":"K0B", "x":11, "y":0}, + {"label":"K0C", "x":12, "y":0}, + {"label":"K0D", "x":13, "y":0}, + {"label":"K0E", "x":14, "y":0}, + + {"label":"K10", "x":0, "y":1, "w":1.5}, + {"label":"K12", "x":1.5, "y":1}, + {"label":"K13", "x":2.5, "y":1}, + {"label":"K14", "x":3.5, "y":1}, + {"label":"K15", "x":4.5, "y":1}, + {"label":"K16", "x":5.5, "y":1}, + {"label":"K17", "x":6.5, "y":1}, + {"label":"K18", "x":7.5, "y":1}, + {"label":"K19", "x":8.5, "y":1}, + {"label":"K1A", "x":9.5, "y":1}, + {"label":"K1B", "x":10.5, "y":1}, + {"label":"K1C", "x":11.5, "y":1}, + {"label":"K1D", "x":12.5, "y":1}, + {"label":"K1E", "x":13.5, "y":1, "w":1.5}, + + {"label":"K20", "x":0, "y":2, "w":1.75}, + {"label":"K22", "x":1.75, "y":2}, + {"label":"K23", "x":2.75, "y":2}, + {"label":"K24", "x":3.75, "y":2}, + {"label":"K25", "x":4.75, "y":2}, + {"label":"K26", "x":5.75, "y":2}, + {"label":"K27", "x":6.75, "y":2}, + {"label":"K28", "x":7.75, "y":2}, + {"label":"K29", "x":8.75, "y":2}, + {"label":"K2A", "x":9.75, "y":2}, + {"label":"K2B", "x":10.75, "y":2}, + {"label":"K2C", "x":11.75, "y":2}, + {"label":"K2D", "x":12.75, "y":2, "w":2.25}, + + {"label":"K30", "x":0, "y":3, "w":1.25}, + {"label":"K31", "x":1.25, "y":3}, + {"label":"K32", "x":2.25, "y":3}, + {"label":"K33", "x":3.25, "y":3}, + {"label":"K34", "x":4.25, "y":3}, + {"label":"K35", "x":5.25, "y":3}, + {"label":"K36", "x":6.25, "y":3}, + {"label":"K37", "x":7.25, "y":3}, + {"label":"K38", "x":8.25, "y":3}, + {"label":"K39", "x":9.25, "y":3}, + {"label":"K3A", "x":10.25, "y":3}, + {"label":"K3B", "x":11.25, "y":3}, + {"label":"K3D", "x":12.25, "y":3, "w":1.75}, + {"label":"K3E", "x":14, "y":3}, + + {"label":"K40", "x":0, "y":4, "w":1.25}, + {"label":"K41", "x":1.25, "y":4, "w":1.25}, + {"label":"K43", "x":2.5, "y":4, "w":1.25}, + {"label":"K44", "x":3.75, "y":4, "w":2.25}, + {"label":"K46", "x":6, "y":4, "w":1.25}, + {"label":"K48", "x":7.25, "y":4, "w":2.75}, + {"label":"K4A", "x":10, "y":4}, + {"label":"K4B", "x":11, "y":4}, + {"label":"K4C", "x":12, "y":4}, + {"label":"K4D", "x":13, "y":4}, + {"label":"K4E", "x":14, "y":4} + ] + }, + "LAYOUT_hhkb": { + "layout": [ + {"label":"K00", "x":0, "y":0}, + {"label":"K01", "x":1, "y":0}, + {"label":"K02", "x":2, "y":0}, + {"label":"K03", "x":3, "y":0}, + {"label":"K04", "x":4, "y":0}, + {"label":"K05", "x":5, "y":0}, + {"label":"K06", "x":6, "y":0}, + {"label":"K07", "x":7, "y":0}, + {"label":"K08", "x":8, "y":0}, + {"label":"K09", "x":9, "y":0}, + {"label":"K0A", "x":10, "y":0}, + {"label":"K0B", "x":11, "y":0}, + {"label":"K0C", "x":12, "y":0}, + {"label":"K0D", "x":13, "y":0}, + {"label":"K0E", "x":14, "y":0}, + + {"label":"K10", "x":0, "y":1, "w":1.5}, + {"label":"K12", "x":1.5, "y":1}, + {"label":"K13", "x":2.5, "y":1}, + {"label":"K14", "x":3.5, "y":1}, + {"label":"K15", "x":4.5, "y":1}, + {"label":"K16", "x":5.5, "y":1}, + {"label":"K17", "x":6.5, "y":1}, + {"label":"K18", "x":7.5, "y":1}, + {"label":"K19", "x":8.5, "y":1}, + {"label":"K1A", "x":9.5, "y":1}, + {"label":"K1B", "x":10.5, "y":1}, + {"label":"K1C", "x":11.5, "y":1}, + {"label":"K1D", "x":12.5, "y":1}, + {"label":"K1E", "x":13.5, "y":1, "w":1.5}, + + {"label":"K20", "x":0, "y":2, "w":1.75}, + {"label":"K22", "x":1.75, "y":2}, + {"label":"K23", "x":2.75, "y":2}, + {"label":"K24", "x":3.75, "y":2}, + {"label":"K25", "x":4.75, "y":2}, + {"label":"K26", "x":5.75, "y":2}, + {"label":"K27", "x":6.75, "y":2}, + {"label":"K28", "x":7.75, "y":2}, + {"label":"K29", "x":8.75, "y":2}, + {"label":"K2A", "x":9.75, "y":2}, + {"label":"K2B", "x":10.75, "y":2}, + {"label":"K2C", "x":11.75, "y":2}, + {"label":"K2D", "x":12.75, "y":2, "w":2.25}, + + {"label":"K30", "x":0, "y":3, "w":1.25}, + {"label":"K31", "x":1.25, "y":3}, + {"label":"K32", "x":2.25, "y":3}, + {"label":"K33", "x":3.25, "y":3}, + {"label":"K34", "x":4.25, "y":3}, + {"label":"K35", "x":5.25, "y":3}, + {"label":"K36", "x":6.25, "y":3}, + {"label":"K37", "x":7.25, "y":3}, + {"label":"K38", "x":8.25, "y":3}, + {"label":"K39", "x":9.25, "y":3}, + {"label":"K3A", "x":10.25, "y":3}, + {"label":"K3B", "x":11.25, "y":3}, + {"label":"K3D", "x":12.25, "y":3, "w":1.75}, + {"label":"K3E", "x":14, "y":3}, + + {"label":"K41", "x":1.5, "y":4}, + {"label":"K43", "x":2.5, "y":4, "w":1.5}, + {"label":"K46", "x":4, "y":4, "w":7}, + {"label":"K4B", "x":11, "y":4, "w":1.5}, + {"label":"K4D", "x":12.5, "y":4} + ] + }, + "LAYOUT_true_hhkb": { + "layout": [ + {"label":"K00", "x":0, "y":0}, + {"label":"K01", "x":1, "y":0}, + {"label":"K02", "x":2, "y":0}, + {"label":"K03", "x":3, "y":0}, + {"label":"K04", "x":4, "y":0}, + {"label":"K05", "x":5, "y":0}, + {"label":"K06", "x":6, "y":0}, + {"label":"K07", "x":7, "y":0}, + {"label":"K08", "x":8, "y":0}, + {"label":"K09", "x":9, "y":0}, + {"label":"K0A", "x":10, "y":0}, + {"label":"K0B", "x":11, "y":0}, + {"label":"K0C", "x":12, "y":0}, + {"label":"K0D", "x":13, "y":0}, + {"label":"K0E", "x":14, "y":0}, + + {"label":"K10", "x":0, "y":1, "w":1.5}, + {"label":"K12", "x":1.5, "y":1}, + {"label":"K13", "x":2.5, "y":1}, + {"label":"K14", "x":3.5, "y":1}, + {"label":"K15", "x":4.5, "y":1}, + {"label":"K16", "x":5.5, "y":1}, + {"label":"K17", "x":6.5, "y":1}, + {"label":"K18", "x":7.5, "y":1}, + {"label":"K19", "x":8.5, "y":1}, + {"label":"K1A", "x":9.5, "y":1}, + {"label":"K1B", "x":10.5, "y":1}, + {"label":"K1C", "x":11.5, "y":1}, + {"label":"K1D", "x":12.5, "y":1}, + {"label":"K1E", "x":13.5, "y":1, "w":1.5}, + + {"label":"K20", "x":0, "y":2, "w":1.75}, + {"label":"K22", "x":1.75, "y":2}, + {"label":"K23", "x":2.75, "y":2}, + {"label":"K24", "x":3.75, "y":2}, + {"label":"K25", "x":4.75, "y":2}, + {"label":"K26", "x":5.75, "y":2}, + {"label":"K27", "x":6.75, "y":2}, + {"label":"K28", "x":7.75, "y":2}, + {"label":"K29", "x":8.75, "y":2}, + {"label":"K2A", "x":9.75, "y":2}, + {"label":"K2B", "x":10.75, "y":2}, + {"label":"K2C", "x":11.75, "y":2}, + {"label":"K2D", "x":12.75, "y":2, "w":2.25}, + + {"label":"K30", "x":0, "y":3, "w":1.25}, + {"label":"K31", "x":1.25, "y":3}, + {"label":"K32", "x":2.25, "y":3}, + {"label":"K33", "x":3.25, "y":3}, + {"label":"K34", "x":4.25, "y":3}, + {"label":"K35", "x":5.25, "y":3}, + {"label":"K36", "x":6.25, "y":3}, + {"label":"K37", "x":7.25, "y":3}, + {"label":"K38", "x":8.25, "y":3}, + {"label":"K39", "x":9.25, "y":3}, + {"label":"K3A", "x":10.25, "y":3}, + {"label":"K3B", "x":11.25, "y":3}, + {"label":"K3D", "x":12.25, "y":3, "w":1.75}, + {"label":"K3E", "x":14, "y":3}, + + {"label":"K41", "x":1.5, "y":4}, + {"label":"K43", "x":2.5, "y":4, "w":1.5}, + {"label":"K46", "x":4, "y":4, "w":6}, + {"label":"K4A", "x":10, "y":4, "w":1.5}, + {"label":"K4B", "x":11.5, "y":4} + ] + }, + "LAYOUT_directional": { + "layout": [ + {"label":"K00", "x":0, "y":0}, + {"label":"K01", "x":1, "y":0}, + {"label":"K02", "x":2, "y":0}, + {"label":"K03", "x":3, "y":0}, + {"label":"K04", "x":4, "y":0}, + {"label":"K05", "x":5, "y":0}, + {"label":"K06", "x":6, "y":0}, + {"label":"K07", "x":7, "y":0}, + {"label":"K08", "x":8, "y":0}, + {"label":"K09", "x":9, "y":0}, + {"label":"K0A", "x":10, "y":0}, + {"label":"K0B", "x":11, "y":0}, + {"label":"K0C", "x":12, "y":0}, + {"label":"K0D", "x":13, "y":0}, + {"label":"K0E", "x":14, "y":0}, + + {"label":"K10", "x":0, "y":1, "w":1.5}, + {"label":"K12", "x":1.5, "y":1}, + {"label":"K13", "x":2.5, "y":1}, + {"label":"K14", "x":3.5, "y":1}, + {"label":"K15", "x":4.5, "y":1}, + {"label":"K16", "x":5.5, "y":1}, + {"label":"K17", "x":6.5, "y":1}, + {"label":"K18", "x":7.5, "y":1}, + {"label":"K19", "x":8.5, "y":1}, + {"label":"K1A", "x":9.5, "y":1}, + {"label":"K1B", "x":10.5, "y":1}, + {"label":"K1C", "x":11.5, "y":1}, + {"label":"K1D", "x":12.5, "y":1}, + {"label":"K1E", "x":13.5, "y":1, "w":1.5}, + + {"label":"K20", "x":0, "y":2, "w":1.75}, + {"label":"K22", "x":1.75, "y":2}, + {"label":"K23", "x":2.75, "y":2}, + {"label":"K24", "x":3.75, "y":2}, + {"label":"K25", "x":4.75, "y":2}, + {"label":"K26", "x":5.75, "y":2}, + {"label":"K27", "x":6.75, "y":2}, + {"label":"K28", "x":7.75, "y":2}, + {"label":"K29", "x":8.75, "y":2}, + {"label":"K2A", "x":9.75, "y":2}, + {"label":"K2B", "x":10.75, "y":2}, + {"label":"K2C", "x":11.75, "y":2}, + {"label":"K2D", "x":12.75, "y":2, "w":2.25}, + + {"label":"K30", "x":0, "y":3, "w":1.25}, + {"label":"K31", "x":1.25, "y":3}, + {"label":"K32", "x":2.25, "y":3}, + {"label":"K33", "x":3.25, "y":3}, + {"label":"K34", "x":4.25, "y":3}, + {"label":"K35", "x":5.25, "y":3}, + {"label":"K36", "x":6.25, "y":3}, + {"label":"K37", "x":7.25, "y":3}, + {"label":"K38", "x":8.25, "y":3}, + {"label":"K39", "x":9.25, "y":3}, + {"label":"K3A", "x":10.25, "y":3}, + {"label":"K3C", "x":11.25, "y":3, "w":1.75}, + {"label":"K3D", "x":13, "y":3}, + {"label":"K3E", "x":14, "y":3}, + + {"label":"K40", "x":0, "y":4, "w":1.25}, + {"label":"K41", "x":1.25, "y":4, "w":1.25}, + {"label":"K43", "x":2.5, "y":4, "w":1.25}, + {"label":"K44", "x":3.75, "y":4, "w":2.25}, + {"label":"K46", "x":6, "y":4, "w":1.25}, + {"label":"K48", "x":7.25, "y":4, "w":2.75}, + {"label":"K4A", "x":10, "y":4}, + {"label":"K4B", "x":11, "y":4}, + {"label":"K4C", "x":12, "y":4}, + {"label":"K4D", "x":13, "y":4}, + {"label":"K4E", "x":14, "y":4} + ] + }, + "LAYOUT_mitchsplit": { + "layout": [ + {"label":"K00", "x":0, "y":0}, + {"label":"K01", "x":1, "y":0}, + {"label":"K02", "x":2, "y":0}, + {"label":"K03", "x":3, "y":0}, + {"label":"K04", "x":4, "y":0}, + {"label":"K05", "x":5, "y":0}, + {"label":"K06", "x":6, "y":0}, + {"label":"K07", "x":7, "y":0}, + {"label":"K08", "x":8, "y":0}, + {"label":"K09", "x":9, "y":0}, + {"label":"K0A", "x":10, "y":0}, + {"label":"K0B", "x":11, "y":0}, + {"label":"K0C", "x":12, "y":0}, + {"label":"K0E", "x":13, "y":0, "w":2}, + + {"label":"K10", "x":0, "y":1, "w":1.5}, + {"label":"K12", "x":1.5, "y":1}, + {"label":"K13", "x":2.5, "y":1}, + {"label":"K14", "x":3.5, "y":1}, + {"label":"K15", "x":4.5, "y":1}, + {"label":"K16", "x":5.5, "y":1}, + {"label":"K17", "x":6.5, "y":1}, + {"label":"K18", "x":7.5, "y":1}, + {"label":"K19", "x":8.5, "y":1}, + {"label":"K1A", "x":9.5, "y":1}, + {"label":"K1B", "x":10.5, "y":1}, + {"label":"K1C", "x":11.5, "y":1}, + {"label":"K1D", "x":12.5, "y":1}, + {"label":"K1E", "x":13.5, "y":1, "w":1.5}, + + {"label":"K20", "x":0, "y":2, "w":1.75}, + {"label":"K22", "x":1.75, "y":2}, + {"label":"K23", "x":2.75, "y":2}, + {"label":"K24", "x":3.75, "y":2}, + {"label":"K25", "x":4.75, "y":2}, + {"label":"K26", "x":5.75, "y":2}, + {"label":"K27", "x":6.75, "y":2}, + {"label":"K28", "x":7.75, "y":2}, + {"label":"K29", "x":8.75, "y":2}, + {"label":"K2A", "x":9.75, "y":2}, + {"label":"K2B", "x":10.75, "y":2}, + {"label":"K2C", "x":11.75, "y":2}, + {"label":"K2D", "x":12.75, "y":2, "w":2.25}, + + {"label":"K30", "x":0, "y":3, "w":2.25}, + {"label":"K32", "x":2.25, "y":3}, + {"label":"K33", "x":3.25, "y":3}, + {"label":"K34", "x":4.25, "y":3}, + {"label":"K35", "x":5.25, "y":3}, + {"label":"K36", "x":6.25, "y":3}, + {"label":"K37", "x":7.25, "y":3}, + {"label":"K38", "x":8.25, "y":3}, + {"label":"K39", "x":9.25, "y":3}, + {"label":"K3A", "x":10.25, "y":3}, + {"label":"K3B", "x":11.25, "y":3}, + {"label":"K3D", "x":12.25, "y":3, "w":1.75}, + {"label":"K3E", "x":14, "y":3}, + + {"label":"K40", "x":0, "y":4, "w":1.25}, + {"label":"K41", "x":1.25, "y":4, "w":1.25}, + {"label":"K43", "x":2.5, "y":4, "w":1.25}, + {"label":"K44", "x":3.75, "y":4, "w":2.75}, + {"label":"K46", "x":6.5, "y":4, "w":1.25}, + {"label":"K48", "x":7.75, "y":4, "w":2.25}, + {"label":"K4A", "x":10, "y":4, "w":1.25}, + {"label":"K4B", "x":11.25, "y":4, "w":1.25}, + {"label":"K4D", "x":12.5, "y":4, "w":1.25}, + {"label":"K4E", "x":13.75, "y":4, "w":1.25} + ] + } } - } } diff --git a/keyboards/acr60/keymaps/default/keymap.c b/keyboards/acr60/keymaps/default/keymap.c index aafc1dfe68fc..e7381c578316 100644 --- a/keyboards/acr60/keymaps/default/keymap.c +++ b/keyboards/acr60/keymaps/default/keymap.c @@ -1,67 +1,38 @@ -#include QMK_KEYBOARD_H - -#define MODS_SHIFT_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) +/* Copyright 2017 Ryan Mitchell (@newtmitch) + * 2021 James Young for QMK (@noroadsleft) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ -enum custom_keycodes { - SFT_ESC = SAFE_RANGE -}; +#include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* - * Default keymap with standard 60% layout. Split space possible but entirely optional with this layout, as this - * layout covers all three split space keys as space keycodes. This also has alt right next to the space bar - * on both sides (Windows keyboard layout), no right-side system/GUI key, and momentary layer switching on - * the right modifiers into the 3rd (macro) and 2nd (function/sfx) layers, respectively. This also has the grave - * accent key set up on the 2nd layer, although on the first layer it includes grave key (tilde) when shift is held down, - * via the function actions code at the bottom. - */ - LAYOUT( - SFT_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_NO, KC_BSPC, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, - KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_NO, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(2), KC_NO, MO(1), KC_RCTL), - - LAYOUT( - 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_DEL, - KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [0] = LAYOUT_all( + 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, XXXXXXX, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = 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_DEL, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, RESET, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), - LAYOUT( - KC_TRNS, M(1), M(2), M(3), M(4), M(5), M(6), M(7), M(8), M(9), M(10), M(11), M(12), KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), }; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case SFT_ESC: - if (record->event.pressed) { - if (get_mods() & MODS_SHIFT_MASK) { - add_key(KC_GRV); - send_keyboard_report(); - } else { - add_key(KC_ESC); - send_keyboard_report(); - } - } else { - if (get_mods() & MODS_SHIFT_MASK) { - del_key(KC_GRV); - send_keyboard_report(); - } else { - del_key(KC_ESC); - send_keyboard_report(); - } - } - - return false; - - default: - return true; - } -} diff --git a/keyboards/acr60/keymaps/mitch/keymap.c b/keyboards/acr60/keymaps/mitch/keymap.c index b7fcb5a04a8d..1567b1481324 100644 --- a/keyboards/acr60/keymaps/mitch/keymap.c +++ b/keyboards/acr60/keymaps/mitch/keymap.c @@ -11,8 +11,6 @@ #define GUIOFF MAGIC_NO_GUI #define GUION MAGIC_UNNO_GUI -#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) - /* TODO: create handy quick-ref list here for easy grokking of the actual shortcuts in place */ /* @@ -64,7 +62,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * Hit MO(_FN) and Alt in that order to lock into the _FN layer. */ [_DFT] = LAYOUT_mitchsplit( /* Basic QWERTY */ - F(0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \ + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \ KC_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, \ MO(_FN), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN), \ @@ -169,37 +167,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; - -enum function_id { - SHIFT_ESC, -}; - -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_FUNCTION(SHIFT_ESC), -}; - -void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { - static uint8_t shift_esc_shift_mask; - switch (id) { - case SHIFT_ESC: - shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK; - if (record->event.pressed) { - if (shift_esc_shift_mask) { - add_key(KC_GRV); - send_keyboard_report(); - } else { - add_key(KC_ESC); - send_keyboard_report(); - } - } else { - if (shift_esc_shift_mask) { - del_key(KC_GRV); - send_keyboard_report(); - } else { - del_key(KC_ESC); - send_keyboard_report(); - } - } - break; - } -} diff --git a/keyboards/acr60/readme.md b/keyboards/acr60/readme.md index 54ea265f1c9d..70b617dfdadf 100644 --- a/keyboards/acr60/readme.md +++ b/keyboards/acr60/readme.md @@ -1,18 +1,24 @@ -ACR60 -===== +# ACR60 ![acr60](https://cdn.shopify.com/s/files/1/1697/5323/products/20170522001035_1024x1024.jpg?v=1504725199) A customizable 60% keyboard made and sold by mechkeys.ca [More info on MECHKEYS](https://mechkeys.ca) -Keyboard Maintainer: [TurboMech](https://github.com/TurboMech) - -Hardware Supported: ACR60 - -Hardware Availability: [MECHKEYS](https://mechkeys.ca/products/acr60) +* Keyboard Maintainer: [TurboMech](https://github.com/TurboMech) +* Hardware Supported: ACR60 +* Hardware Availability: [~~MECHKEYS~~](https://mechkeys.ca/products/acr60) (no longer available) Make example for this keyboard (after setting up your build environment): make acr60:default -See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. +Flashing example for this keyboard: + + make acr60:default:flash + +To reset the board into bootloader mode, do one of the following: + +* Tap the Reset switch mounted on the bottom side of the PCB +* Hold Space+B while connecting the USB cable + +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/acr60/rules.mk b/keyboards/acr60/rules.mk index 22fd09140762..ad87f9ecc980 100644 --- a/keyboards/acr60/rules.mk +++ b/keyboards/acr60/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 -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 = yes # Enable keyboard backlight functionality AUDIO_ENABLE = no diff --git a/keyboards/adelheid/config.h b/keyboards/adelheid/config.h index 1d944949ba29..487559af1662 100644 --- a/keyboards/adelheid/config.h +++ b/keyboards/adelheid/config.h @@ -112,59 +112,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -182,23 +129,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 diff --git a/keyboards/adelheid/info.json b/keyboards/adelheid/info.json index d4ae41091c38..8b92e306e0ff 100644 --- a/keyboards/adelheid/info.json +++ b/keyboards/adelheid/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Adelheid", "url": "https://github.com/floookay/adelheid", "maintainer": "floookay", - "width": 19.5, - "height": 6.5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/adelheid/rules.mk b/keyboards/adelheid/rules.mk index 77a8471e9064..321d574eefbf 100644 --- a/keyboards/adelheid/rules.mk +++ b/keyboards/adelheid/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/adkb96/info.json b/keyboards/adkb96/info.json index 3b914d56b171..609e459749c8 100644 --- a/keyboards/adkb96/info.json +++ b/keyboards/adkb96/info.json @@ -2,11 +2,8 @@ "keyboard_name": "adkb96", "url": "", "maintainer": "qmk", - "width": 16, - "height": 6, "layouts": { "LAYOUT_ortho_6x16": { - "key_count": 96, "layout": [ { "label": "L00", @@ -491,4 +488,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/adkb96/rev1/rev1.c b/keyboards/adkb96/rev1/rev1.c index 872a7e08ff08..594c5329943f 100644 --- a/keyboards/adkb96/rev1/rev1.c +++ b/keyboards/adkb96/rev1/rev1.c @@ -1,15 +1 @@ #include "adkb96.h" - -void matrix_init_kb(void) { - - // // green led on - // DDRD |= (1<<5); - // PORTD &= ~(1<<5); - - // // orange led on - // DDRB |= (1<<0); - // PORTB &= ~(1<<0); - - matrix_init_user(); -}; - diff --git a/keyboards/adkb96/rules.mk b/keyboards/adkb96/rules.mk index 95fbc1d48a0c..21651c05800a 100644 --- a/keyboards/adkb96/rules.mk +++ b/keyboards/adkb96/rules.mk @@ -2,33 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # 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 -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend SPLIT_KEYBOARD = yes diff --git a/keyboards/aeboards/aegis/info.json b/keyboards/aeboards/aegis/info.json index 90e2b16946e5..ff0c9bf822df 100644 --- a/keyboards/aeboards/aegis/info.json +++ b/keyboards/aeboards/aegis/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Aegis", "url": "", "maintainer": "qmk", - "width": 19.5, - "height": 6.75, "layouts": { "LAYOUT_aegis": { "layout": [ diff --git a/keyboards/aeboards/aegis/rules.mk b/keyboards/aeboards/aegis/rules.mk index 8b7a0c7f0be2..f7a09acb8235 100644 --- a/keyboards/aeboards/aegis/rules.mk +++ b/keyboards/aeboards/aegis/rules.mk @@ -2,29 +2,17 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/aeboards/constellation/rev1/info.json b/keyboards/aeboards/constellation/rev1/info.json index 172ac4dfa2c7..af09a0dfc7fe 100644 --- a/keyboards/aeboards/constellation/rev1/info.json +++ b/keyboards/aeboards/constellation/rev1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Constellation", "url": "", "maintainer": "Xelus22", - "width": 16, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/aeboards/constellation/rev1/rules.mk b/keyboards/aeboards/constellation/rev1/rules.mk index 2a82012de5f6..4603fa0c8989 100755 --- a/keyboards/aeboards/constellation/rev1/rules.mk +++ b/keyboards/aeboards/constellation/rev1/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LTO_ENABLE = yes diff --git a/keyboards/aeboards/constellation/rev2/config.h b/keyboards/aeboards/constellation/rev2/config.h index bff51c07d5d5..de42885b4701 100755 --- a/keyboards/aeboards/constellation/rev2/config.h +++ b/keyboards/aeboards/constellation/rev2/config.h @@ -31,7 +31,7 @@ /* key matrix pins */ #define MATRIX_ROW_PINS { B15, A14, A2, B13, B14 } -#define MATRIX_COL_PINS { B12, H0, C15, C14, B11, B10, B2, B1, B0, A7, A6, A5, A4, A3 } +#define MATRIX_COL_PINS { B12, A1, H0, C15, C14, B11, B10, B2, B1, B0, A7, A6, A5, A4, A3 } #define UNUSED_PINS /* COL2ROW or ROW2COL */ @@ -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/constellation/rev2/info.json b/keyboards/aeboards/constellation/rev2/info.json index 172ac4dfa2c7..af09a0dfc7fe 100644 --- a/keyboards/aeboards/constellation/rev2/info.json +++ b/keyboards/aeboards/constellation/rev2/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Constellation", "url": "", "maintainer": "Xelus22", - "width": 16, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/aeboards/constellation/rev2/rules.mk b/keyboards/aeboards/constellation/rev2/rules.mk index c79b49dbf943..766774e77d88 100755 --- a/keyboards/aeboards/constellation/rev2/rules.mk +++ b/keyboards/aeboards/constellation/rev2/rules.mk @@ -1,20 +1,20 @@ # MCU name -MCU = STM32L433 +MCU = STM32L422 + +# Bootloader selection +BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output EEPROM_DRIVER = i2c diff --git a/keyboards/aeboards/ext65/info.json b/keyboards/aeboards/ext65/info.json index ff3b6fcc1020..bc2fe64bf4d8 100644 --- a/keyboards/aeboards/ext65/info.json +++ b/keyboards/aeboards/ext65/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Ext65", "url": "", "maintainer": "qmk", - "width": 20.5, - "height": 5, "layouts": { "LAYOUT_ext65": { "layout": [ diff --git a/keyboards/aeboards/ext65/keymaps/default/keymap.c b/keyboards/aeboards/ext65/keymaps/default/keymap.c index af753792538b..1f933ca1cabe 100644 --- a/keyboards/aeboards/ext65/keymaps/default/keymap.c +++ b/keyboards/aeboards/ext65/keymaps/default/keymap.c @@ -62,7 +62,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE void render_layer_state(void) { oled_write_ln(PSTR("LAYER"), false); @@ -89,10 +89,11 @@ void render_mod_status(uint8_t modifiers) { oled_write_ln(PSTR(" "), false); } -void oled_task_user(void) { +bool oled_task_user(void) { render_layer_state(); render_keylock_status(host_keyboard_led_state()); render_mod_status(get_mods()|get_oneshot_mods()); + return false; } #endif diff --git a/keyboards/aeboards/ext65/keymaps/via/keymap.c b/keyboards/aeboards/ext65/keymaps/via/keymap.c index af753792538b..1f933ca1cabe 100644 --- a/keyboards/aeboards/ext65/keymaps/via/keymap.c +++ b/keyboards/aeboards/ext65/keymaps/via/keymap.c @@ -62,7 +62,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE void render_layer_state(void) { oled_write_ln(PSTR("LAYER"), false); @@ -89,10 +89,11 @@ void render_mod_status(uint8_t modifiers) { oled_write_ln(PSTR(" "), false); } -void oled_task_user(void) { +bool oled_task_user(void) { render_layer_state(); render_keylock_status(host_keyboard_led_state()); render_mod_status(get_mods()|get_oneshot_mods()); + return false; } #endif diff --git a/keyboards/aeboards/ext65/keymaps/via/rules.mk b/keyboards/aeboards/ext65/keymaps/via/rules.mk index 1e5b99807cb7..e9a8bec8798b 100644 --- a/keyboards/aeboards/ext65/keymaps/via/rules.mk +++ b/keyboards/aeboards/ext65/keymaps/via/rules.mk @@ -1 +1,3 @@ VIA_ENABLE = yes +OLED_ENABLE = yes +# OLED_DRIVER = not a real thing diff --git a/keyboards/aeboards/ext65/rev1/rules.mk b/keyboards/aeboards/ext65/rev1/rules.mk index 05abcb68fb9f..f7a09acb8235 100644 --- a/keyboards/aeboards/ext65/rev1/rules.mk +++ b/keyboards/aeboards/ext65/rev1/rules.mk @@ -2,29 +2,17 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/aeboards/ext65/rev2/config.h b/keyboards/aeboards/ext65/rev2/config.h index 778fc3ea6ce7..498e345ad74e 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 . #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/aeboards/ext65/rev2/rev2.c b/keyboards/aeboards/ext65/rev2/rev2.c index 5d7658101eb4..f303a122e915 100644 --- a/keyboards/aeboards/ext65/rev2/rev2.c +++ b/keyboards/aeboards/ext65/rev2/rev2.c @@ -3,13 +3,13 @@ // Tested and verified working on ext65rev2 void matrix_io_delay(void) { __asm__ volatile("nop\nnop\nnop\n"); } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE void board_init(void) { SYSCFG->CFGR1 |= SYSCFG_CFGR1_I2C1_DMA_RMP; SYSCFG->CFGR1 &= ~(SYSCFG_CFGR1_SPI2_DMA_RMP); } -oled_rotation_t oled_init_user(oled_rotation_t rotation) { +oled_rotation_t oled_init_kb(oled_rotation_t rotation) { return OLED_ROTATION_90; // rotates the display 90 degrees } diff --git a/keyboards/aeboards/ext65/rev2/rules.mk b/keyboards/aeboards/ext65/rev2/rules.mk index 8794d357cd62..9db60243e727 100644 --- a/keyboards/aeboards/ext65/rev2/rules.mk +++ b/keyboards/aeboards/ext65/rev2/rules.mk @@ -7,19 +7,17 @@ BOOTLOADER = stm32-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # 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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output +SLEEP_LED_ENABLE = yes WS2812_DRIVER = spi # Enter lower-power sleep mode when on the ChibiOS idle thread diff --git a/keyboards/afternoonlabs/breeze/rev0/info.json b/keyboards/afternoonlabs/breeze/rev0/info.json index e60725735514..ccf44f5e3a3c 100644 --- a/keyboards/afternoonlabs/breeze/rev0/info.json +++ b/keyboards/afternoonlabs/breeze/rev0/info.json @@ -3,8 +3,6 @@ "url": "afternoonlabs.com/breeze", "productId": "0x0001", "maintainer": "eithanshavit", - "width": 19, - "height": 6, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/afternoonlabs/breeze/rev0/rules.mk b/keyboards/afternoonlabs/breeze/rev0/rules.mk index f73350f58902..264f48439be5 100644 --- a/keyboards/afternoonlabs/breeze/rev0/rules.mk +++ b/keyboards/afternoonlabs/breeze/rev0/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 = 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 SPLIT_KEYBOARD = yes diff --git a/keyboards/afternoonlabs/breeze/rev1/info.json b/keyboards/afternoonlabs/breeze/rev1/info.json index e60725735514..ccf44f5e3a3c 100644 --- a/keyboards/afternoonlabs/breeze/rev1/info.json +++ b/keyboards/afternoonlabs/breeze/rev1/info.json @@ -3,8 +3,6 @@ "url": "afternoonlabs.com/breeze", "productId": "0x0001", "maintainer": "eithanshavit", - "width": 19, - "height": 6, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/afternoonlabs/breeze/rev1/rules.mk b/keyboards/afternoonlabs/breeze/rev1/rules.mk index 773650d12807..b1b9406622a1 100644 --- a/keyboards/afternoonlabs/breeze/rev1/rules.mk +++ b/keyboards/afternoonlabs/breeze/rev1/rules.mk @@ -8,16 +8,13 @@ BOOTLOADER = caterina # change yes to no to disable # SPLIT_KEYBOARD = yes -BOOTMAGIC_ENABLE = 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 COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/afternoonlabs/gust/rev1/info.json b/keyboards/afternoonlabs/gust/rev1/info.json index ae742687ce54..6a9406d399fa 100644 --- a/keyboards/afternoonlabs/gust/rev1/info.json +++ b/keyboards/afternoonlabs/gust/rev1/info.json @@ -3,8 +3,6 @@ "url": "afternoonlabs.com/breeze", "productId": "0x0002", "maintainer": "eithanshavit", - "width": 3, - "height": 2, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/afternoonlabs/gust/rev1/rules.mk b/keyboards/afternoonlabs/gust/rev1/rules.mk index b00cf4eff94c..82614baf1f0b 100644 --- a/keyboards/afternoonlabs/gust/rev1/rules.mk +++ b/keyboards/afternoonlabs/gust/rev1/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output \ No newline at end of file diff --git a/keyboards/afternoonlabs/oceanbreeze/rev1/info.json b/keyboards/afternoonlabs/oceanbreeze/rev1/info.json index db7d533d1252..0d0db367a4a3 100644 --- a/keyboards/afternoonlabs/oceanbreeze/rev1/info.json +++ b/keyboards/afternoonlabs/oceanbreeze/rev1/info.json @@ -3,8 +3,6 @@ "url": "afternoonlabs.com", "productId": "0x0003", "maintainer": "afternoonlabs", - "width": 19, - "height": 6, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/afternoonlabs/oceanbreeze/rev1/rules.mk b/keyboards/afternoonlabs/oceanbreeze/rev1/rules.mk index 96875e4ffe09..8ac2fe030cbe 100644 --- a/keyboards/afternoonlabs/oceanbreeze/rev1/rules.mk +++ b/keyboards/afternoonlabs/oceanbreeze/rev1/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 SPLIT_KEYBOARD = yes diff --git a/keyboards/afternoonlabs/southern_breeze/rev1/info.json b/keyboards/afternoonlabs/southern_breeze/rev1/info.json index 2e88c278670a..b7f541ffb748 100644 --- a/keyboards/afternoonlabs/southern_breeze/rev1/info.json +++ b/keyboards/afternoonlabs/southern_breeze/rev1/info.json @@ -3,8 +3,6 @@ "url": "afternoonlabs.com/breeze", "productId": "0x0005", "maintainer": "eithanshavit", - "width": 19, - "height": 6, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/afternoonlabs/southern_breeze/rev1/rules.mk b/keyboards/afternoonlabs/southern_breeze/rev1/rules.mk index f73350f58902..264f48439be5 100644 --- a/keyboards/afternoonlabs/southern_breeze/rev1/rules.mk +++ b/keyboards/afternoonlabs/southern_breeze/rev1/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 = 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 SPLIT_KEYBOARD = yes diff --git a/keyboards/afternoonlabs/summer_breeze/rev1/info.json b/keyboards/afternoonlabs/summer_breeze/rev1/info.json index 8a8c3de4770e..7e5da9b8cb2c 100644 --- a/keyboards/afternoonlabs/summer_breeze/rev1/info.json +++ b/keyboards/afternoonlabs/summer_breeze/rev1/info.json @@ -3,8 +3,6 @@ "url": "afternoonlabs.com/breeze", "productId": "0x0004", "maintainer": "eithanshavit", - "width": 19, - "height": 6, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/afternoonlabs/summer_breeze/rev1/rules.mk b/keyboards/afternoonlabs/summer_breeze/rev1/rules.mk index f73350f58902..264f48439be5 100644 --- a/keyboards/afternoonlabs/summer_breeze/rev1/rules.mk +++ b/keyboards/afternoonlabs/summer_breeze/rev1/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 = 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 SPLIT_KEYBOARD = yes diff --git a/keyboards/ai03/andromeda/info.json b/keyboards/ai03/andromeda/info.json index 200d3fbd7831..0f4c0adb1443 100644 --- a/keyboards/ai03/andromeda/info.json +++ b/keyboards/ai03/andromeda/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Andromeda", "url": "", "maintainer": "ai03", - "width": 18.25, - "height": 6.25, "layouts": { "LAYOUT_tkl_ansi_wkl": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"label":"Backspace", "x":13, "y":1.25, "w":2}, {"label":"Insert", "x":15.25, "y":1.25}, {"label":"Home", "x":16.25, "y":1.25}, {"label":"PgUp", "x":17.25, "y":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Y", "x":6.5, "y":2.25}, {"label":"U", "x":7.5, "y":2.25}, {"label":"I", "x":8.5, "y":2.25}, {"label":"O", "x":9.5, "y":2.25}, {"label":"P", "x":10.5, "y":2.25}, {"label":"{", "x":11.5, "y":2.25}, {"label":"}", "x":12.5, "y":2.25}, {"label":"|", "x":13.5, "y":2.25, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.25}, {"label":"End", "x":16.25, "y":2.25}, {"label":"PgDn", "x":17.25, "y":2.25}, {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"H", "x":6.75, "y":3.25}, {"label":"J", "x":7.75, "y":3.25}, {"label":"K", "x":8.75, "y":3.25}, {"label":"L", "x":9.75, "y":3.25}, {"label":":", "x":10.75, "y":3.25}, {"label":"\"", "x":11.75, "y":3.25}, {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, {"label":"Shift", "x":0, "y":4.25, "w":2.25}, {"label":"Z", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"N", "x":7.25, "y":4.25}, {"label":"M", "x":8.25, "y":4.25}, {"label":"<", "x":9.25, "y":4.25}, {"label":">", "x":10.25, "y":4.25}, {"label":"?", "x":11.25, "y":4.25}, {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.25}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.5}, {"label":"Alt", "x":2.5, "y":5.25, "w":1.5}, {"x":4, "y":5.25, "w":7}, {"label":"Alt", "x":11, "y":5.25, "w":1.5}, {"label":"Ctrl", "x":13.5, "y":5.25, "w":1.5}, {"label":"\u2190", "x":15.25, "y":5.25}, {"label":"\u2193", "x":16.25, "y":5.25}, {"label":"\u2192", "x":17.25, "y":5.25}] diff --git a/keyboards/ai03/andromeda/rules.mk b/keyboards/ai03/andromeda/rules.mk index b47c99696061..7b5105d59bde 100644 --- a/keyboards/ai03/andromeda/rules.mk +++ b/keyboards/ai03/andromeda/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = 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 # Enter lower-power sleep mode when on the ChibiOS idle thread diff --git a/keyboards/ai03/equinox/config.h b/keyboards/ai03/equinox/config.h index 1441dc16ec5c..5130f510b64d 100644 --- a/keyboards/ai03/equinox/config.h +++ b/keyboards/ai03/equinox/config.h @@ -117,59 +117,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. diff --git a/keyboards/ai03/equinox/info.json b/keyboards/ai03/equinox/info.json index ec7f2938de02..18aa1fe8d6cc 100644 --- a/keyboards/ai03/equinox/info.json +++ b/keyboards/ai03/equinox/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Equinox", "url": "", "maintainer": "ai03", - "width": 13, - "height": 4, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/ai03/equinox/rev0/rules.mk b/keyboards/ai03/equinox/rev0/rules.mk index 668ad9a28c2b..ff7a56de142e 100644 --- a/keyboards/ai03/equinox/rev0/rules.mk +++ b/keyboards/ai03/equinox/rev0/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u2 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/ai03/equinox/rev1/rules.mk b/keyboards/ai03/equinox/rev1/rules.mk index 668ad9a28c2b..ff7a56de142e 100644 --- a/keyboards/ai03/equinox/rev1/rules.mk +++ b/keyboards/ai03/equinox/rev1/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u2 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/ai03/jp60/config.h b/keyboards/ai03/jp60/config.h new file mode 100644 index 000000000000..a06d75c8e513 --- /dev/null +++ b/keyboards/ai03/jp60/config.h @@ -0,0 +1,109 @@ +/* +Copyright 2021 ai03 + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xA103 +#define PRODUCT_ID 0x0024 +#define DEVICE_VER 0x0001 +#define MANUFACTURER ai03 Design Studio +#define PRODUCT JP60 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/* + * 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 { B6, B5, B4, D7, E6 } +#define MATRIX_COL_PINS { D2, D1, D3, D5, D4, D6, C6, F0, F1, F4, F5, F6, F7, C7 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/ai03/jp60/info.json b/keyboards/ai03/jp60/info.json new file mode 100644 index 000000000000..d5453de73416 --- /dev/null +++ b/keyboards/ai03/jp60/info.json @@ -0,0 +1,342 @@ +{ + "keyboard_name": "JP60", + "url": "https://github.com/ai03-2725/JP60", + "maintainer": "ai03", + "layouts": { + "LAYOUT": { + "layout": [ + { + "label": "Esc", + "x": 0, + "y": 0 + }, + { + "label": "!", + "x": 1, + "y": 0 + }, + { + "label": "\"", + "x": 2, + "y": 0 + }, + { + "label": "#", + "x": 3, + "y": 0 + }, + { + "label": "$", + "x": 4, + "y": 0 + }, + { + "label": "%", + "x": 5, + "y": 0 + }, + { + "label": "&", + "x": 6, + "y": 0 + }, + { + "label": "'", + "x": 7, + "y": 0 + }, + { + "label": "(", + "x": 8, + "y": 0 + }, + { + "label": ")", + "x": 9, + "y": 0 + }, + { + "label": "", + "x": 10, + "y": 0 + }, + { + "label": "=", + "x": 11, + "y": 0 + }, + { + "label": "~", + "x": 12, + "y": 0 + }, + { + "label": "|", + "x": 13, + "y": 0 + }, + { + "label": "Back Space", + "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": "Enter", + "x": 13.75, + "y": 1, + "w": 1.25, + "h": 2 + }, + { + "label": "Fn", + "x": 0, + "y": 2, + "w": 1.75 + }, + { + "label": "A", + "x": 1.75, + "y": 2 + }, + { + "label": "S", + "x": 2.75, + "y": 2 + }, + { + "label": "D", + "x": 3.75, + "y": 2 + }, + { + "label": "F", + "x": 4.75, + "y": 2 + }, + { + "label": "G", + "x": 5.75, + "y": 2 + }, + { + "label": "H", + "x": 6.75, + "y": 2 + }, + { + "label": "J", + "x": 7.75, + "y": 2 + }, + { + "label": "K", + "x": 8.75, + "y": 2 + }, + { + "label": "L", + "x": 9.75, + "y": 2 + }, + { + "label": "+", + "x": 10.75, + "y": 2 + }, + { + "label": "*", + "x": 11.75, + "y": 2 + }, + { + "label": "}", + "x": 12.75, + "y": 2 + }, + { + "label": "Shift", + "x": 0, + "y": 3, + "w": 2.25 + }, + { + "label": "Z", + "x": 2.25, + "y": 3 + }, + { + "label": "X", + "x": 3.25, + "y": 3 + }, + { + "label": "C", + "x": 4.25, + "y": 3 + }, + { + "label": "V", + "x": 5.25, + "y": 3 + }, + { + "label": "B", + "x": 6.25, + "y": 3 + }, + { + "label": "N", + "x": 7.25, + "y": 3 + }, + { + "label": "M", + "x": 8.25, + "y": 3 + }, + { + "label": "<", + "x": 9.25, + "y": 3 + }, + { + "label": ">", + "x": 10.25, + "y": 3 + }, + { + "label": "?", + "x": 11.25, + "y": 3 + }, + { + "label": "_", + "x": 12.25, + "y": 3 + }, + { + "label": "Shift", + "x": 13.25, + "y": 3, + "w": 1.75 + }, + { + "label": "Ctrl", + "x": 0, + "y": 4, + "w": 1.25 + }, + { + "label": "Win", + "x": 1.25, + "y": 4 + }, + { + "label": "Alt", + "x": 2.25, + "y": 4 + }, + { + "label": "\u7121\u5909\u63db", + "x": 3.25, + "y": 4, + "w": 1.25 + }, + { + "label": "", + "x": 4.5, + "y": 4, + "w": 6 + }, + { + "label": "\u5909\u63db", + "x": 10.5, + "y": 4, + "w": 1.25 + }, + { + "label": "\u304b\u306a", + "x": 11.75, + "y": 4 + }, + { + "label": "\u534a\u89d2 \u5168\u89d2 \u6f22\u5b57", + "x": 12.75, + "y": 4 + }, + { + "label": "Caps Lock", + "x": 13.75, + "y": 4, + "w": 1.25 + } + ] + } + } +} \ No newline at end of file diff --git a/keyboards/ai03/jp60/jp60.c b/keyboards/ai03/jp60/jp60.c new file mode 100644 index 000000000000..c18a99c6a6cc --- /dev/null +++ b/keyboards/ai03/jp60/jp60.c @@ -0,0 +1,17 @@ +/* Copyright 2021 ai03 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "jp60.h" diff --git a/keyboards/ai03/jp60/jp60.h b/keyboards/ai03/jp60/jp60.h new file mode 100644 index 000000000000..9635e2f3cea4 --- /dev/null +++ b/keyboards/ai03/jp60/jp60.h @@ -0,0 +1,42 @@ +/* Copyright 2021 ai03 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K212, \ + 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, K113, K213, \ + K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, \ + K400, K401, K402, K403, K407, K410, K411, K412, K413 \ +) \ +{ \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \ + { 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, K212, K213 }, \ + { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313 }, \ + { K400, K401, K402, K403, KC_NO, KC_NO, KC_NO, K407, KC_NO, KC_NO, K410, K411, K412, K413 } \ +} diff --git a/keyboards/ai03/jp60/keymaps/default/config.h b/keyboards/ai03/jp60/keymaps/default/config.h new file mode 100644 index 000000000000..ee63d9feee1f --- /dev/null +++ b/keyboards/ai03/jp60/keymaps/default/config.h @@ -0,0 +1,21 @@ +/* Copyright 2021 ai03 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +/* Increase polling rates and scan quantity for improved performance */ +#define USB_POLLING_INTERVAL_MS 1 +#define QMK_KEYS_PER_SCAN 12 diff --git a/keyboards/ai03/jp60/keymaps/default/keymap.c b/keyboards/ai03/jp60/keymaps/default/keymap.c new file mode 100644 index 000000000000..f26c2a9080e5 --- /dev/null +++ b/keyboards/ai03/jp60/keymaps/default/keymap.c @@ -0,0 +1,40 @@ +/* Copyright 2021 ai03 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +#include "keymap_jp.h" + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( /* Base */ + KC_ESC, JP_1, JP_2, JP_3, JP_4, JP_5, JP_6, JP_7, JP_8, JP_9, JP_0, JP_MINS, JP_CIRC, JP_YEN, KC_DEL, + KC_TAB, JP_Q, JP_W, JP_E, JP_R, JP_T, JP_Y, JP_U, JP_I, JP_O, JP_P, JP_AT, JP_LBRC, + MO(1), JP_A, JP_S, JP_D, JP_F, JP_G, JP_H, JP_J, JP_K, JP_L, JP_SCLN, JP_COLN, JP_RBRC, KC_ENT, + KC_LSFT, JP_Z, JP_X, JP_C, JP_V, JP_B, JP_N, JP_M, JP_COMM, JP_DOT, JP_SLSH, JP_BSLS, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, JP_MHEN, KC_SPC, JP_HENK, JP_KANA, JP_ZKHK, JP_EISU + ), + [_FN] = LAYOUT( /* FN */ + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, + _______, _______, KC_PGUP, _______, _______, _______, _______, _______, KC_UP, _______, _______, _______, _______, + _______, KC_HOME, KC_PGDN, KC_END, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/ai03/jp60/keymaps/default/readme.md b/keyboards/ai03/jp60/keymaps/default/readme.md new file mode 100644 index 000000000000..a240bd905277 --- /dev/null +++ b/keyboards/ai03/jp60/keymaps/default/readme.md @@ -0,0 +1,3 @@ +# The default keymap for JP60 + +Configured for JIS input. \ No newline at end of file diff --git a/keyboards/ai03/jp60/keymaps/default/rules.mk b/keyboards/ai03/jp60/keymaps/default/rules.mk new file mode 100644 index 000000000000..edac26d087f5 --- /dev/null +++ b/keyboards/ai03/jp60/keymaps/default/rules.mk @@ -0,0 +1 @@ +DEBOUNCE_TYPE = asym_eager_defer_pk # Specify per-key debounce for improved responsiveness \ No newline at end of file diff --git a/keyboards/ai03/jp60/keymaps/via/config.h b/keyboards/ai03/jp60/keymaps/via/config.h new file mode 100644 index 000000000000..ee63d9feee1f --- /dev/null +++ b/keyboards/ai03/jp60/keymaps/via/config.h @@ -0,0 +1,21 @@ +/* Copyright 2021 ai03 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +/* Increase polling rates and scan quantity for improved performance */ +#define USB_POLLING_INTERVAL_MS 1 +#define QMK_KEYS_PER_SCAN 12 diff --git a/keyboards/ai03/jp60/keymaps/via/keymap.c b/keyboards/ai03/jp60/keymaps/via/keymap.c new file mode 100644 index 000000000000..5c8f9ecf65bd --- /dev/null +++ b/keyboards/ai03/jp60/keymaps/via/keymap.c @@ -0,0 +1,57 @@ +/* Copyright 2021 ai03 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +#include "keymap_jp.h" + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN1, + _FN2, + _FN3 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( /* Base */ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_JYEN, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, + MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN, KC_SPC, KC_HENK, KC_KANA, KC_GRV, KC_CAPS + ), + [_FN1] = LAYOUT( /* FN1 */ + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, + _______, _______, KC_PGUP, _______, _______, _______, _______, _______, KC_UP, _______, _______, _______, _______, + _______, KC_HOME, KC_PGDN, KC_END, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [_FN2] = LAYOUT( /* FN2 */ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [_FN3] = LAYOUT( /* FN3 */ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; diff --git a/keyboards/ai03/jp60/keymaps/via/readme.md b/keyboards/ai03/jp60/keymaps/via/readme.md new file mode 100644 index 000000000000..f6e9c3d8c61e --- /dev/null +++ b/keyboards/ai03/jp60/keymaps/via/readme.md @@ -0,0 +1,3 @@ +# The via keymap for JP60 + +For use with VIA configurator and compatible keymap editors. \ No newline at end of file diff --git a/keyboards/ai03/jp60/keymaps/via/rules.mk b/keyboards/ai03/jp60/keymaps/via/rules.mk new file mode 100644 index 000000000000..4956961bef7a --- /dev/null +++ b/keyboards/ai03/jp60/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes # Enable compatibility with VIA-protocol configurators +DEBOUNCE_TYPE = asym_eager_defer_pk # Specify per-key debounce for improved responsiveness \ No newline at end of file diff --git a/keyboards/ai03/jp60/readme.md b/keyboards/ai03/jp60/readme.md new file mode 100644 index 000000000000..25a3b164136c --- /dev/null +++ b/keyboards/ai03/jp60/readme.md @@ -0,0 +1,27 @@ +# JP60 + +![JP60](https://github.com/ai03-2725/JP60/raw/main/Render/Front.png) + +GH60-compatible JIS-like hotswap keyboard PCB + +* Keyboard Maintainer: [ai03](https://github.com/ai03-2725) +* Hardware Supported: [JP60 PCB](https://github.com/ai03-2725/JP60) +* Hardware Availability: To be made available in JP market soon; will be listed in the repo above + +Make example for this keyboard (after setting up your build environment): + + make ai03/jp60:default + +Flashing example for this keyboard: + + make ai03/jp60:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `RESET` if it is available diff --git a/keyboards/ai03/jp60/rules.mk b/keyboards/ai03/jp60/rules.mk new file mode 100644 index 000000000000..98bc39ca5f5a --- /dev/null +++ b/keyboards/ai03/jp60/rules.mk @@ -0,0 +1,20 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 +LTO_ENABLE = yes # Optimize firmware at link time \ No newline at end of file diff --git a/keyboards/ai03/lunar/config.h b/keyboards/ai03/lunar/config.h index 0af48b8c03d8..9ee8cbf6f8ff 100644 --- a/keyboards/ai03/lunar/config.h +++ b/keyboards/ai03/lunar/config.h @@ -117,58 +117,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -187,26 +135,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/ai03/lunar/info.json b/keyboards/ai03/lunar/info.json index f3024be43152..ca2b35e3de79 100644 --- a/keyboards/ai03/lunar/info.json +++ b/keyboards/ai03/lunar/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Lunar", "url": "https://geekhack.org/index.php?topic=96112.0", "maintainer": "ai03", - "width": 16, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/ai03/lunar/keymaps/default/keymap.c b/keyboards/ai03/lunar/keymaps/default/keymap.c index 4705d00ec1da..e05775c2d504 100644 --- a/keyboards/ai03/lunar/keymaps/default/keymap.c +++ b/keyboards/ai03/lunar/keymaps/default/keymap.c @@ -76,15 +76,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/ai03/lunar/lunar.c b/keyboards/ai03/lunar/lunar.c index 37438c71e61b..9c7bf23a629e 100644 --- a/keyboards/ai03/lunar/lunar.c +++ b/keyboards/ai03/lunar/lunar.c @@ -14,9 +14,3 @@ * along with this program. If not, see . */ #include "lunar.h" - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/ai03/lunar/rules.mk b/keyboards/ai03/lunar/rules.mk index 74808942fc0f..062a48e14333 100644 --- a/keyboards/ai03/lunar/rules.mk +++ b/keyboards/ai03/lunar/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# 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 on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/ai03/orbit/config.h b/keyboards/ai03/orbit/config.h index ee907081ae39..9ad384c8ffba 100644 --- a/keyboards/ai03/orbit/config.h +++ b/keyboards/ai03/orbit/config.h @@ -126,54 +126,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -192,26 +144,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/ai03/orbit/info.json b/keyboards/ai03/orbit/info.json index ca838811301e..a9f0804820fd 100644 --- a/keyboards/ai03/orbit/info.json +++ b/keyboards/ai03/orbit/info.json @@ -2,8 +2,6 @@ "keyboard_name": "orbit", "url": "https://github.com/ai03-2725/Orbit", "maintainer": "ai03", - "width": 16, - "height": 6, "layouts": { "LAYOUT": { "layout": [ @@ -85,4 +83,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/ai03/orbit/keymaps/default/keymap.c b/keyboards/ai03/orbit/keymaps/default/keymap.c index d0c80d9282d2..6d4eef27c707 100644 --- a/keyboards/ai03/orbit/keymaps/default/keymap.c +++ b/keyboards/ai03/orbit/keymaps/default/keymap.c @@ -72,20 +72,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} - -layer_state_t layer_state_set_user(layer_state_t state) { - - return state; -} diff --git a/keyboards/ai03/orbit/orbit.c b/keyboards/ai03/orbit/orbit.c index b51ddbc6e6c6..97553e318a7e 100644 --- a/keyboards/ai03/orbit/orbit.c +++ b/keyboards/ai03/orbit/orbit.c @@ -172,20 +172,6 @@ void matrix_init_kb(void) { matrix_init_user(); } -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - void led_set_kb(uint8_t usb_led) { // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here @@ -222,5 +208,3 @@ uint32_t layer_state_set_kb(uint32_t state) { return layer_state_set_user(state); } - - diff --git a/keyboards/ai03/orbit/orbit.h b/keyboards/ai03/orbit/orbit.h index 2ada881f3fcf..39f1ebb0e36e 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 . */ -#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/ai03/orbit/rules.mk b/keyboards/ai03/orbit/rules.mk index 80bc0eb11bfb..5e7aa75e3556 100644 --- a/keyboards/ai03/orbit/rules.mk +++ b/keyboards/ai03/orbit/rules.mk @@ -2,33 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# 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 = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output USE_I2C = no # I2C for split communication CUSTOM_MATRIX = yes # For providing custom matrix.c (in this case, override regular matrix.c with split matrix.c) # SPLIT_KEYBOARD = yes # Split keyboard flag disabled as manual edits had to be done to the split common files diff --git a/keyboards/ai03/orbit/split_util.c b/keyboards/ai03/orbit/split_util.c index a83ff5bc67ec..2352e5a11186 100644 --- a/keyboards/ai03/orbit/split_util.c +++ b/keyboards/ai03/orbit/split_util.c @@ -8,7 +8,7 @@ #include "quantum.h" #ifdef EE_HANDS -# include "tmk_core/common/eeprom.h" +# include "eeprom.h" # include "eeconfig.h" #endif diff --git a/keyboards/ai03/orbit_x/config.h b/keyboards/ai03/orbit_x/config.h index aafc53728c63..7d3e8ef51135 100644 --- a/keyboards/ai03/orbit_x/config.h +++ b/keyboards/ai03/orbit_x/config.h @@ -94,59 +94,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. diff --git a/keyboards/ai03/orbit_x/info.json b/keyboards/ai03/orbit_x/info.json index 638ffec4df42..9d22282925bc 100644 --- a/keyboards/ai03/orbit_x/info.json +++ b/keyboards/ai03/orbit_x/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Orbit-X", "url": "", "maintainer": "ai03", - "width": 13.5, - "height": 4.38, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/ai03/orbit_x/rules.mk b/keyboards/ai03/orbit_x/rules.mk index c08aa7545826..73e8cb693589 100644 --- a/keyboards/ai03/orbit_x/rules.mk +++ b/keyboards/ai03/orbit_x/rules.mk @@ -2,30 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = yes # Split keyboard diff --git a/keyboards/ai03/polaris/config.h b/keyboards/ai03/polaris/config.h index a4d7f945d97a..0cd6e6f58089 100644 --- a/keyboards/ai03/polaris/config.h +++ b/keyboards/ai03/polaris/config.h @@ -92,59 +92,6 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. diff --git a/keyboards/ai03/polaris/info.json b/keyboards/ai03/polaris/info.json index 13b7e8de4cf5..99f8ca7a3d50 100644 --- a/keyboards/ai03/polaris/info.json +++ b/keyboards/ai03/polaris/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Polaris", "url": "https://kb.ai03.me/projects/polaris.html", "maintainer": "ai03", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/ai03/polaris/rules.mk b/keyboards/ai03/polaris/rules.mk index e5ed9276b928..3f88ba57198c 100644 --- a/keyboards/ai03/polaris/rules.mk +++ b/keyboards/ai03/polaris/rules.mk @@ -2,31 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = 60_ansi 60_ansi_split_bs_rshift 60_tsangan_hhkb diff --git a/keyboards/ai03/quasar/config.h b/keyboards/ai03/quasar/config.h index f34de690b4d4..2563125be0da 100644 --- a/keyboards/ai03/quasar/config.h +++ b/keyboards/ai03/quasar/config.h @@ -123,59 +123,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -194,26 +141,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/ai03/quasar/info.json b/keyboards/ai03/quasar/info.json index 20637af55f58..439d4feea86f 100644 --- a/keyboards/ai03/quasar/info.json +++ b/keyboards/ai03/quasar/info.json @@ -2,8 +2,6 @@ "keyboard_name": "quasar", "url": "https://github.com/ai03-2725/Quasar/", "maintainer": "ai03", - "width": 18.5, - "height": 6.75, "layouts": { "LAYOUT": { "layout": [ @@ -94,4 +92,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/ai03/quasar/keymaps/default/keymap.c b/keyboards/ai03/quasar/keymaps/default/keymap.c index 6de45951a3da..0d871d9251d0 100644 --- a/keyboards/ai03/quasar/keymaps/default/keymap.c +++ b/keyboards/ai03/quasar/keymaps/default/keymap.c @@ -43,19 +43,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______ ) }; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/ai03/quasar/quasar.c b/keyboards/ai03/quasar/quasar.c index ac8b75177191..75d77e355c06 100644 --- a/keyboards/ai03/quasar/quasar.c +++ b/keyboards/ai03/quasar/quasar.c @@ -14,38 +14,3 @@ * along with this program. If not, see . */ #include "quasar.h" - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -/* - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - -*/ diff --git a/keyboards/ai03/quasar/rules.mk b/keyboards/ai03/quasar/rules.mk index b16d852aafb5..4eb7e867d031 100644 --- a/keyboards/ai03/quasar/rules.mk +++ b/keyboards/ai03/quasar/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/ai03/soyuz/info.json b/keyboards/ai03/soyuz/info.json index 3a819b537efd..8195a6f099ff 100644 --- a/keyboards/ai03/soyuz/info.json +++ b/keyboards/ai03/soyuz/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Soyuz", "url": "https://github.com/ai03-2725/soyuz", "maintainer": "ai03", - "width": 4, - "height": 5, "layouts": { "LAYOUT_ortho_5x4": { "layout": [ diff --git a/keyboards/ai03/soyuz/keymaps/default/keymap.c b/keyboards/ai03/soyuz/keymaps/default/keymap.c index 62bb5c228a7e..c145fc3b5252 100644 --- a/keyboards/ai03/soyuz/keymaps/default/keymap.c +++ b/keyboards/ai03/soyuz/keymaps/default/keymap.c @@ -24,19 +24,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_P0, KC_P0, KC_PDOT, KC_PENT \ ) }; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/ai03/soyuz/rules.mk b/keyboards/ai03/soyuz/rules.mk index 5af8959743cd..574330f907b5 100644 --- a/keyboards/ai03/soyuz/rules.mk +++ b/keyboards/ai03/soyuz/rules.mk @@ -2,31 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# 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 on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = ortho_5x4 numpad_5x4 diff --git a/keyboards/ai03/soyuz/soyuz.c b/keyboards/ai03/soyuz/soyuz.c index dc73f196ef57..e643d14ec16b 100644 --- a/keyboards/ai03/soyuz/soyuz.c +++ b/keyboards/ai03/soyuz/soyuz.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "soyuz.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/ai03/vega/info.json b/keyboards/ai03/vega/info.json index 637071aa0110..027f03ef35af 100644 --- a/keyboards/ai03/vega/info.json +++ b/keyboards/ai03/vega/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Vega", "url": "ai03.com", "maintainer": "ai03", - "width": 16, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/ai03/vega/rules.mk b/keyboards/ai03/vega/rules.mk index b47c99696061..7b5105d59bde 100644 --- a/keyboards/ai03/vega/rules.mk +++ b/keyboards/ai03/vega/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = 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 # Enter lower-power sleep mode when on the ChibiOS idle thread diff --git a/keyboards/ai03/voyager60_alps/config.h b/keyboards/ai03/voyager60_alps/config.h index 98f37e8cfed4..cd749cc50523 100644 --- a/keyboards/ai03/voyager60_alps/config.h +++ b/keyboards/ai03/voyager60_alps/config.h @@ -23,7 +23,7 @@ along with this program. If not, see . #define PRODUCT Voyager60-Alps #define MATRIX_ROWS 5 -#define MATRIX_COLS 15 +#define MATRIX_COLS 14 #define MATRIX_ROW_PINS { B1, B2, B3, F0, F1 } #define MATRIX_COL_PINS { F4, F7, F5, F6, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3} diff --git a/keyboards/ai03/voyager60_alps/info.json b/keyboards/ai03/voyager60_alps/info.json index 96d5fcfbf2a4..64cbaa668e24 100644 --- a/keyboards/ai03/voyager60_alps/info.json +++ b/keyboards/ai03/voyager60_alps/info.json @@ -2,11 +2,9 @@ "keyboard_name": "Voyager60-Alps", "url": "https://github.com/ai03-2725/Voyager60/tree/alps", "maintainer": "ai03", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"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}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":2.75}, {"x":6.5, "y":4, "w":1.25}, {"x":7.75, "y":4, "w":2.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}] } } -} \ No newline at end of file +} diff --git a/keyboards/ai03/voyager60_alps/rules.mk b/keyboards/ai03/voyager60_alps/rules.mk index f49426d5137f..6f114436f0b8 100644 --- a/keyboards/ai03/voyager60_alps/rules.mk +++ b/keyboards/ai03/voyager60_alps/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/ajisai74/info.json b/keyboards/ajisai74/info.json index b8ab1f1092cf..6bf2d7af498a 100644 --- a/keyboards/ajisai74/info.json +++ b/keyboards/ajisai74/info.json @@ -2,8 +2,6 @@ "keyboard_name": "ajisai74", "url": "https://salicylic-acid3.hatenablog.com/", "maintainer": "Salicylic_acid3", - "width": 16.75, - "height": 5, "layouts": { "LAYOUT": { "layout": [ @@ -83,4 +81,4 @@ {"label":"Right", "x":15.75, "y":4}] } } -} \ No newline at end of file +} diff --git a/keyboards/ajisai74/keymaps/salicylic/keymap.c b/keyboards/ajisai74/keymaps/salicylic/keymap.c index 03cecb7a0d9c..f8b430af1cfe 100644 --- a/keyboards/ajisai74/keymaps/salicylic/keymap.c +++ b/keyboards/ajisai74/keymaps/salicylic/keymap.c @@ -56,7 +56,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| JP_DQUO, JP_EXLM, JP_QUES, JP_LBRC, JP_RBRC, JP_TILD, KC_P6, KC_P7, KC_P8, KC_P9, JP_ASTR, JP_SLSH, _______, _______, _______, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------| - JP_QUOT, JP_HASH, JP_DQT, JP_LPRN, JP_RPRN, JP_AT, XXXXXXX, KC_P4, KC_P5, KC_P6, JP_MINS, JP_EQL, _______, _______, _______, + JP_QUOT, JP_HASH, JP_DQUO, JP_LPRN, JP_RPRN, JP_AT, XXXXXXX, KC_P4, KC_P5, KC_P6, JP_MINS, JP_EQL, _______, _______, _______, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------| _______,JP_CIRC,JP_PERC,JP_AMPR,JP_SCLN, JP_COLN, JP_PIPE, KC_P0, KC_P1, KC_P2, KC_P3, JP_PLUS, _______, _______, _______, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------| diff --git a/keyboards/ajisai74/rules.mk b/keyboards/ajisai74/rules.mk index 9b916f556e50..53ea6d22bbeb 100644 --- a/keyboards/ajisai74/rules.mk +++ b/keyboards/ajisai74/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 SPLIT_KEYBOARD = yes diff --git a/keyboards/akb/eb46/eb46.c b/keyboards/akb/eb46/eb46.c index 3417b4329a36..a2113d0fe957 100644 --- a/keyboards/akb/eb46/eb46.c +++ b/keyboards/akb/eb46/eb46.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "eb46.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/akb/eb46/info.json b/keyboards/akb/eb46/info.json index 5513df397141..dbcc9abb83df 100644 --- a/keyboards/akb/eb46/info.json +++ b/keyboards/akb/eb46/info.json @@ -1,8 +1,6 @@ { "keyboard_name": "eb46", "maintainer": "e11i0t23", - "width": 13.25, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/akb/eb46/rules.mk b/keyboards/akb/eb46/rules.mk index 13f194d5a3a6..21bda2a32242 100644 --- a/keyboards/akb/eb46/rules.mk +++ b/keyboards/akb/eb46/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/akb/raine/info.json b/keyboards/akb/raine/info.json index fc699e4774a5..d3205ecb6638 100644 --- a/keyboards/akb/raine/info.json +++ b/keyboards/akb/raine/info.json @@ -1,8 +1,6 @@ { "keyboard_name": "raine", "maintainer": "e11i0t23", - "width": 16.25, - "height": 5.25, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/akb/raine/rules.mk b/keyboards/akb/raine/rules.mk index 13f194d5a3a6..21bda2a32242 100644 --- a/keyboards/akb/raine/rules.mk +++ b/keyboards/akb/raine/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/akegata_denki/device_one/info.json b/keyboards/akegata_denki/device_one/info.json index 50e8c2a9004e..34de2927b926 100644 --- a/keyboards/akegata_denki/device_one/info.json +++ b/keyboards/akegata_denki/device_one/info.json @@ -2,8 +2,6 @@ "keyboard_name": "device one", "url": "https://akegata.co", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_ansi": { "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}, {"label":"backspace", "x":13, "y":0, "w":2}, {"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":"capslock", "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":2.25}, {"label":"z", "x":2.25, "y":3}, {"label":"x", "x":3.25, "y":3}, {"label":"c", "x":4.25, "y":3}, {"label":"v", "x":5.25, "y":3}, {"label":"b", "x":6.25, "y":3}, {"label":"n", "x":7.25, "y":3}, {"label":"m", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"shift", "x":12.25, "y":3, "w":2.75}, {"label":"ctrl", "x":0, "y":4, "w":1.25}, {"label":"meta", "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":"meta", "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/akegata_denki/device_one/rules.mk b/keyboards/akegata_denki/device_one/rules.mk index 383269654092..ec74cb2e80ee 100644 --- a/keyboards/akegata_denki/device_one/rules.mk +++ b/keyboards/akegata_denki/device_one/rules.mk @@ -9,7 +9,7 @@ BOOTLOADER = stm32-dfu # comment out to disable the options. # BACKLIGHT_ENABLE = no -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # Audio control and System control CONSOLE_ENABLE = no # Console for debug diff --git a/keyboards/al1/al1.c b/keyboards/al1/al1.c index 460a7620cfa7..a7d3980ece8d 100644 --- a/keyboards/al1/al1.c +++ b/keyboards/al1/al1.c @@ -13,4 +13,5 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ + #include "al1.h" diff --git a/keyboards/al1/al1.h b/keyboards/al1/al1.h index c313a898d228..6b585cc18a3c 100644 --- a/keyboards/al1/al1.h +++ b/keyboards/al1/al1.h @@ -13,41 +13,39 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -#ifndef AL1_H -#define AL1_H + +#pragma once #include "quantum.h" +#define XXX KC_NO + #define LAYOUT( \ - K500, K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K415, K414,\ - K501, K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K215, K413,\ - K502, K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, \ - K503, K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, K412,\ - K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411 \ -) \ -{ \ - { 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, K313, K314, K315}, \ - { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K414, K415}, \ - { K500, K501, K502, K503, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO} \ + k50, k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k4F, k4E, \ + k51, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k2F, k4D, \ + k52, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, \ + k53, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, k4C, \ + k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B \ +) { \ + { 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, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX } \ } #define LAYOUT_split_bs( \ - K500, K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K512, K012, K013, K014, K015, K415, K414, \ - K501, K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K215, K413,\ - K502, K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, \ - K503, K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, K412,\ - K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411 \ -) \ -{ \ - { 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, K313, K314, K315}, \ - { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K414, K415}, \ - { K500, K501, K502, K503, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K512, KC_NO, KC_NO, KC_NO} \ + k50, k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k5C, k0C, k0D, k0E, k0F, k4F, k4E, \ + k51, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k2F, k4D, \ + k52, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, \ + k53, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, k4C, \ + k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B \ +) { \ + { 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, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, k5C, XXX, XXX, XXX } \ } - -#endif diff --git a/keyboards/al1/config.h b/keyboards/al1/config.h index 6f6157c2d01d..b003a9cd6c25 100644 --- a/keyboards/al1/config.h +++ b/keyboards/al1/config.h @@ -15,62 +15,42 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x6050 -#define DEVICE_VER 0x0104 -#define MANUFACTURER Alsoran -#define PRODUCT AL1 +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6050 +#define DEVICE_VER 0x0104 +#define MANUFACTURER Alsoran +#define PRODUCT AL1 /* key matrix size */ #define MATRIX_ROWS 7 #define MATRIX_COLS 20 -/* - * Keyboard Matrix Assignments - * - * Change this to how you wired your keyboard - * COLS: AVR pins used for columns, left to right - * ROWS: AVR pins used for rows, top to bottom - * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) - * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) - * -*/ - -/* COL2ROW, ROW2COL*/ -#define DIODE_DIRECTION COL2ROW - #define LED_NUM_LOCK_PIN D0 #define LED_CAPS_LOCK_PIN B7 #define LED_SCROLL_LOCK_PIN D1 #define LED_PIN_ON_STATE 0 #define BACKLIGHT_PIN B6 -#define BACKLIGHT_BREATHING #define BACKLIGHT_LEVELS 3 +#define BACKLIGHT_BREATHING /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ #define DEBOUNCE 5 -/* define if matrix has ghost (lacks anti-ghosting diodes) */ -//#define MATRIX_HAS_GHOST - -/* number of backlight levels */ - /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ #define LOCKING_SUPPORT_ENABLE /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE /* If defined, GRAVE_ESC will always act as ESC when CTRL is held. - * This is userful for the Windows task manager shortcut (ctrl+shift+esc). + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). */ -// #define GRAVE_ESC_CTRL_OVERRIDE +//#define GRAVE_ESC_CTRL_OVERRIDE /* * Force NKRO @@ -93,54 +73,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -156,27 +88,7 @@ along with this program. If not, see . //#define NO_ACTION_LAYER //#define NO_ACTION_TAPPING //#define NO_ACTION_ONESHOT -//#define NO_ACTION_MACRO -//#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 -#endif +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/al1/info.json b/keyboards/al1/info.json index f5ab643997a7..4014687fe979 100644 --- a/keyboards/al1/info.json +++ b/keyboards/al1/info.json @@ -1,15 +1,210 @@ { - "keyboard_name": "AL1", - "url": "", - "maintainer": "qmk", - "width": 20.5, - "height": 5.25, - "layouts": { - "LAYOUT": { - "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}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Insert", "x":15.25, "y":0}, {"label":"Num Lock", "x":16.5, "y":0}, {"label":"/", "x":17.5, "y":0}, {"label":"*", "x":18.5, "y":0}, {"label":"-", "x":19.5, "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":"Delete", "x":15.25, "y":1}, {"label":"7", "x":16.5, "y":1}, {"label":"8", "x":17.5, "y":1}, {"label":"9", "x":18.5, "y":1}, {"label":"+", "x":19.5, "y":1, "h":2}, {"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":"4", "x":16.5, "y":2}, {"label":"5", "x":17.5, "y":2}, {"label":"6", "x":18.5, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Fn", "x":14, "y":3}, {"label":"↑", "x":15.25, "y":3.25}, {"label":"1", "x":16.5, "y":3}, {"label":"2", "x":17.5, "y":3}, {"label":"3", "x":18.5, "y":3}, {"label":"Enter", "x":19.5, "y":3, "h":2}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4}, {"label":"Alt", "x":2.25, "y":4, "w":1.25}, {"x":3.5, "y":4, "w":7}, {"label":"Alt", "x":10.5, "y":4, "w":1.25}, {"label":"Win", "x":11.75, "y":4}, {"label":"Menu", "x":12.75, "y":4, "w":1.25}, {"label":"←", "x":14.25, "y":4.25}, {"label":"↓", "x":15.25, "y":4.25}, {"label":"→", "x":16.25, "y":4.25}, {"label":"0", "x":17.5, "y":4}, {"label":".", "x":18.5, "y":4}] - }, - "LAYOUT_split_bs": { - "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":"Insert", "x":15.25, "y":0}, {"label":"Num Lock", "x":16.5, "y":0}, {"label":"/", "x":17.5, "y":0}, {"label":"*", "x":18.5, "y":0}, {"label":"-", "x":19.5, "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":"Delete", "x":15.25, "y":1}, {"label":"7", "x":16.5, "y":1}, {"label":"8", "x":17.5, "y":1}, {"label":"9", "x":18.5, "y":1}, {"label":"+", "x":19.5, "y":1, "h":2}, {"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":"4", "x":16.5, "y":2}, {"label":"5", "x":17.5, "y":2}, {"label":"6", "x":18.5, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Fn", "x":14, "y":3}, {"label":"↑", "x":15.25, "y":3.25}, {"label":"1", "x":16.5, "y":3}, {"label":"2", "x":17.5, "y":3}, {"label":"3", "x":18.5, "y":3}, {"label":"Enter", "x":19.5, "y":3, "h":2}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4}, {"label":"Alt", "x":2.25, "y":4, "w":1.25}, {"x":3.5, "y":4, "w":7}, {"label":"Alt", "x":10.5, "y":4, "w":1.25}, {"label":"Win", "x":11.75, "y":4}, {"label":"Menu", "x":12.75, "y":4, "w":1.25}, {"label":"←", "x":14.25, "y":4.25}, {"label":"↓", "x":15.25, "y":4.25}, {"label":"→", "x":16.25, "y":4.25}, {"label":"0", "x":17.5, "y":4}, {"label":".", "x":18.5, "y":4}] + "keyboard_name": "AL1", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0, "w": 2}, + + {"x": 15.25, "y": 0}, + + {"x": 16.5, "y": 0}, + {"x": 17.5, "y": 0}, + {"x": 18.5, "y": 0}, + {"x": 19.5, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + {"x": 13.5, "y": 1, "w": 1.5}, + + {"x": 15.25, "y": 1}, + + {"x": 16.5, "y": 1}, + {"x": 17.5, "y": 1}, + {"x": 18.5, "y": 1}, + {"x": 19.5, "y": 1, "h": 2}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 16.5, "y": 2}, + {"x": 17.5, "y": 2}, + {"x": 18.5, "y": 2}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3}, + {"x": 12.25, "y": 3, "w": 1.75}, + {"x": 14, "y": 3}, + + {"x": 15.25, "y": 3.25}, + + {"x": 16.5, "y": 3}, + {"x": 17.5, "y": 3}, + {"x": 18.5, "y": 3}, + {"x": 19.5, "y": 3, "h": 2}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4}, + {"x": 2.25, "y": 4, "w": 1.25}, + {"x": 3.5, "y": 4, "w": 7}, + {"x": 10.5, "y": 4, "w": 1.25}, + {"x": 11.75, "y": 4}, + {"x": 12.75, "y": 4, "w": 1.25}, + + {"x": 14.25, "y": 4.25}, + {"x": 15.25, "y": 4.25}, + {"x": 16.25, "y": 4.25}, + + {"x": 17.5, "y": 4}, + {"x": 18.5, "y": 4} + ] + }, + "LAYOUT_split_bs": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 15.25, "y": 0}, + + {"x": 16.5, "y": 0}, + {"x": 17.5, "y": 0}, + {"x": 18.5, "y": 0}, + {"x": 19.5, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + {"x": 13.5, "y": 1, "w": 1.5}, + + {"x": 15.25, "y": 1}, + + {"x": 16.5, "y": 1}, + {"x": 17.5, "y": 1}, + {"x": 18.5, "y": 1}, + {"x": 19.5, "y": 1, "h": 2}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 16.5, "y": 2}, + {"x": 17.5, "y": 2}, + {"x": 18.5, "y": 2}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3}, + {"x": 12.25, "y": 3, "w": 1.75}, + {"x": 14, "y": 3}, + + {"x": 15.25, "y": 3.25}, + + {"x": 16.5, "y": 3}, + {"x": 17.5, "y": 3}, + {"x": 18.5, "y": 3}, + {"x": 19.5, "y": 3, "h": 2}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4}, + {"x": 2.25, "y": 4, "w": 1.25}, + {"x": 3.5, "y": 4, "w": 7}, + {"x": 10.5, "y": 4, "w": 1.25}, + {"x": 11.75, "y": 4}, + {"x": 12.75, "y": 4, "w": 1.25}, + + {"x": 14.25, "y": 4.25}, + {"x": 15.25, "y": 4.25}, + {"x": 16.25, "y": 4.25}, + + {"x": 17.5, "y": 4}, + {"x": 18.5, "y": 4} + ] + } } - } } diff --git a/keyboards/al1/keymaps/default/keymap.c b/keyboards/al1/keymaps/default/keymap.c index d571c05abb18..a3a9d63d3728 100644 --- a/keyboards/al1/keymaps/default/keymap.c +++ b/keyboards/al1/keymaps/default/keymap.c @@ -13,36 +13,23 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ + #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT(\ - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,\ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DELETE, KC_P7, KC_P8, KC_P9, KC_PPLS,\ - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, \ - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, \ - KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, MO(1), KC_RGUI, KC_RCTRL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_P0, KC_PDOT ), - - [1] = LAYOUT(\ - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC, KC_INS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,\ - KC_TAB, KC_Q, KC_W, KC_E, RESET, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DELETE, KC_P7, KC_P8, KC_P9, KC_PPLS,\ - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, \ - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLSH, KC_RSFT, KC_TRNS, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, \ - KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, KC_TRNS, KC_RGUI, KC_RCTRL, BL_TOGG, BL_DEC, BL_INC, KC_P0, KC_PDOT ), + LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT + ), + + LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, BL_TOGG, BL_DEC, BL_INC, _______, _______ + ) }; - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/al1/keymaps/default/readme.md b/keyboards/al1/keymaps/default/readme.md deleted file mode 100644 index b89f4f674516..000000000000 --- a/keyboards/al1/keymaps/default/readme.md +++ /dev/null @@ -1 +0,0 @@ -# The default keymap for al1 diff --git a/keyboards/al1/keymaps/splitbs/keymap.c b/keyboards/al1/keymaps/splitbs/keymap.c index 51f35d0cfb71..d896b10dbe40 100644 --- a/keyboards/al1/keymaps/splitbs/keymap.c +++ b/keyboards/al1/keymaps/splitbs/keymap.c @@ -1,32 +1,35 @@ +/* Copyright 2018 MechMerlin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_split_bs(\ - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRAVE, KC_BSPC, KC_INS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DELETE, KC_P7, KC_P8, KC_P9, KC_PPLS,\ - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, \ - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, \ - KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, MO(1), KC_RGUI, KC_RCTRL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_P0, KC_PDOT ), - [1] = LAYOUT_split_bs(\ - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_GRAVE, KC_DELETE, KC_INS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \ - KC_TAB, KC_Q, KC_W, KC_E, RESET, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DELETE, KC_P7, KC_P8, KC_P9, KC_PPLS,\ - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, \ - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLSH, KC_RSFT, KC_TRNS, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, \ - KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, KC_TRNS, KC_RGUI, KC_RCTRL, BL_TOGG, BL_DEC, BL_INC, KC_P0, KC_PDOT ), + LAYOUT_split_bs( + 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_INS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT + ), + + LAYOUT_split_bs( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, _______, _______, _______, _______, _______, + _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, BL_TOGG, BL_DEC, BL_INC, _______, _______ + ) }; - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/al1/matrix.c b/keyboards/al1/matrix.c index f6e95108737c..1407cbc089ae 100644 --- a/keyboards/al1/matrix.c +++ b/keyboards/al1/matrix.c @@ -1,201 +1,92 @@ -#include -#include -#include -#include -#include "print.h" -#include "debug.h" -#include "util.h" #include "matrix.h" -#ifndef DEBOUNCE -# define DEBOUNCE 5 -#endif -static uint8_t debouncing = DEBOUNCE; - -static matrix_row_t matrix[MATRIX_ROWS]; -static matrix_row_t matrix_debouncing[MATRIX_ROWS]; - -static uint8_t read_rows(void); -static void init_rows(void); -static void unselect_cols(void); -static void select_col(uint8_t col); - -inline uint8_t matrix_rows(void) { - return MATRIX_ROWS; -} - -inline uint8_t matrix_cols(void) { - return MATRIX_COLS; -} - -__attribute__ ((weak)) -void matrix_init_kb(void) { - matrix_init_user(); -} - -__attribute__ ((weak)) -void matrix_scan_kb(void) { - matrix_scan_user(); -} - -__attribute__ ((weak)) -void matrix_init_user(void) { -} - -__attribute__ ((weak)) -void matrix_scan_user(void) { -} - -void matrix_init(void) { - // initialize row and col - unselect_cols(); - init_rows(); - - // initialize matrix state: all keys off - for (uint8_t i=0; i < MATRIX_ROWS; i++) { - matrix[i] = 0; - matrix_debouncing[i] = 0; - } - matrix_init_quantum(); -} - -uint8_t matrix_scan(void) { - for (uint8_t col = 0; col < MATRIX_COLS; col++) { - select_col(col); - _delay_us(3); - uint8_t rows = read_rows(); - for (uint8_t row = 0; row < MATRIX_ROWS; row++) { - bool prev_bit = matrix_debouncing[row] & ((matrix_row_t)1<. */ #pragma once -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE #define OLED_DISPLAY_128X64 #define OLED_TIMEOUT 400000 #endif diff --git a/keyboards/aleblazer/zodiark/keymaps/default/keymap.c b/keyboards/aleblazer/zodiark/keymaps/default/keymap.c index c09b483d940d..c6a81c67f9c9 100644 --- a/keyboards/aleblazer/zodiark/keymaps/default/keymap.c +++ b/keyboards/aleblazer/zodiark/keymaps/default/keymap.c @@ -70,7 +70,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE static void render_logo(void) { static const char PROGMEM qmk_logo[] = { @@ -135,12 +135,13 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) { return rotation; } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { print_status_narrow(); } else { render_logo(); } + return false; } #endif diff --git a/keyboards/aleblazer/zodiark/keymaps/slimoled/config.h b/keyboards/aleblazer/zodiark/keymaps/slimoled/config.h index 36d9637e72db..e2df253c3f43 100644 --- a/keyboards/aleblazer/zodiark/keymaps/slimoled/config.h +++ b/keyboards/aleblazer/zodiark/keymaps/slimoled/config.h @@ -16,7 +16,7 @@ along with this program. If not, see . */ #pragma once -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE #define OLED_DISPLAY_128X32 #define OLED_TIMEOUT 400000 #endif diff --git a/keyboards/aleblazer/zodiark/keymaps/slimoled/keymap.c b/keyboards/aleblazer/zodiark/keymaps/slimoled/keymap.c index 4f97953fd100..ca8f91f1df3d 100644 --- a/keyboards/aleblazer/zodiark/keymaps/slimoled/keymap.c +++ b/keyboards/aleblazer/zodiark/keymaps/slimoled/keymap.c @@ -73,7 +73,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE static void render_logo(void) { static const char PROGMEM qmk_logo[] = { @@ -138,12 +138,13 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) { return rotation; } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { print_status_narrow(); } else { render_logo(); } + return false; } #endif diff --git a/keyboards/aleblazer/zodiark/keymaps/via/config.h b/keyboards/aleblazer/zodiark/keymaps/via/config.h index 0c89f634bc2d..2e8732ecc728 100644 --- a/keyboards/aleblazer/zodiark/keymaps/via/config.h +++ b/keyboards/aleblazer/zodiark/keymaps/via/config.h @@ -16,7 +16,7 @@ along with this program. If not, see . */ #pragma once -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE #define OLED_DISPLAY_128X64 #define OLED_TIMEOUT 400000 #endif diff --git a/keyboards/aleblazer/zodiark/keymaps/via/oled.c b/keyboards/aleblazer/zodiark/keymaps/via/oled.c index 037fe2ff714a..8642bacb0548 100644 --- a/keyboards/aleblazer/zodiark/keymaps/via/oled.c +++ b/keyboards/aleblazer/zodiark/keymaps/via/oled.c @@ -12,7 +12,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE static void render_logo(void) { static const char PROGMEM qmk_logo[] = { @@ -67,12 +67,13 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) { return rotation; } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { print_status_narrow(); } else { render_logo(); } + return false; } #endif diff --git a/keyboards/aleblazer/zodiark/rules.mk b/keyboards/aleblazer/zodiark/rules.mk index 89e4850d83dd..41d1f8a9174f 100644 --- a/keyboards/aleblazer/zodiark/rules.mk +++ b/keyboards/aleblazer/zodiark/rules.mk @@ -7,20 +7,18 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 -OLED_DRIVER_ENABLE = yes # Enable Support for SSD1306 or SH1106 OLED Displays; Communicating over I2C +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enable Support for SSD1306 or SH1106 OLED Displays; Communicating over I2C ENCODER_ENABLE = yes SPLIT_KEYBOARD = yes LTO_ENABLE = yes diff --git a/keyboards/aleth42/info.json b/keyboards/aleth42/info.json index 852c94bb0fdc..5a8b56468535 100644 --- a/keyboards/aleth42/info.json +++ b/keyboards/aleth42/info.json @@ -2,8 +2,6 @@ "keyboard_name": "aleth42", "url": "http://www.sho-k.co.uk/tech/aleth42", "maintainer": "monksoffunk", - "width": 12, - "height": 4, "layouts": { "LAYOUT": { "layout": [ @@ -51,4 +49,4 @@ {"x":10.75, "y":3, "w":1.25}] } } -} \ No newline at end of file +} diff --git a/keyboards/aleth42/rev0/rules.mk b/keyboards/aleth42/rev0/rules.mk index a54fa022f543..257e5e987bed 100644 --- a/keyboards/aleth42/rev0/rules.mk +++ b/keyboards/aleth42/rev0/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # 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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow ENCODER_ENABLE = yes -TAP_DANCE_ENABLE = no diff --git a/keyboards/aleth42/rev1/rules.mk b/keyboards/aleth42/rev1/rules.mk index 9441d4051c6f..6f1ad36b9baf 100644 --- a/keyboards/aleth42/rev1/rules.mk +++ b/keyboards/aleth42/rev1/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # 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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow ENCODER_ENABLE = yes -TAP_DANCE_ENABLE = no diff --git a/keyboards/alf/dc60/config.h b/keyboards/alf/dc60/config.h index 42c3ebee2044..5c3768532263 100644 --- a/keyboards/alf/dc60/config.h +++ b/keyboards/alf/dc60/config.h @@ -102,54 +102,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -167,23 +119,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 diff --git a/keyboards/alf/dc60/dc60.h b/keyboards/alf/dc60/dc60.h index db5154a28cf3..710ae703ed42 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 . */ -#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/dc60/info.json b/keyboards/alf/dc60/info.json index 9482e0b40010..f10d594fc8eb 100644 --- a/keyboards/alf/dc60/info.json +++ b/keyboards/alf/dc60/info.json @@ -1,8 +1,6 @@ { "keyboard_name": "dc60", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"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}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}, {"x":12, "y":3}, {"x":13, "y":3}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":2.75}, {"x":6.5, "y":4, "w":1.25}, {"x":7.75, "y":4, "w":2.25}, {"x":10, "y":4}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}] diff --git a/keyboards/alf/dc60/keymaps/default/keymap.c b/keyboards/alf/dc60/keymaps/default/keymap.c index acd9753ef0f5..ddc488670c1c 100644 --- a/keyboards/alf/dc60/keymaps/default/keymap.c +++ b/keyboards/alf/dc60/keymaps/default/keymap.c @@ -32,19 +32,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), }; - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/alf/dc60/rules.mk b/keyboards/alf/dc60/rules.mk index 576ae3cf6a75..041e8e100b2f 100644 --- a/keyboards/alf/dc60/rules.mk +++ b/keyboards/alf/dc60/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/alf/x11/config.h b/keyboards/alf/x11/config.h index fdc7d72e0c30..437f1e22ba48 100644 --- a/keyboards/alf/x11/config.h +++ b/keyboards/alf/x11/config.h @@ -117,59 +117,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -188,26 +135,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/alf/x11/info.json b/keyboards/alf/x11/info.json index 54f2da66d12e..14d4a5efb7ac 100644 --- a/keyboards/alf/x11/info.json +++ b/keyboards/alf/x11/info.json @@ -2,11 +2,8 @@ "keyboard_name": "x11", "url": "", "maintainer": "qmk", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT": { - "key_count": 88, "layout": [ {"label":"K00", "x":0, "y":0}, {"label":"K01", "x":2, "y":0}, diff --git a/keyboards/alf/x11/rules.mk b/keyboards/alf/x11/rules.mk index 5d37e73dd3fe..b1232f5897bb 100644 --- a/keyboards/alf/x11/rules.mk +++ b/keyboards/alf/x11/rules.mk @@ -2,31 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 -EXTRAFLAGS += -flto +AUDIO_ENABLE = no # Audio output +LTO_ENABLE = yes diff --git a/keyboards/alf/x2/config.h b/keyboards/alf/x2/config.h index 6c9a139c3a8c..a6f4958b0547 100644 --- a/keyboards/alf/x2/config.h +++ b/keyboards/alf/x2/config.h @@ -1,31 +1,51 @@ -#ifndef CONFIG_H -#define CONFIG_H +/* Copyright 2018-2021 @fixed, MechMerlin, 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 . + */ + +#pragma once #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 /* 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 */ @@ -39,11 +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 -#endif - +# 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/alf/x2/info.json b/keyboards/alf/x2/info.json index 85db6d69aed4..4a3cc839c9d7 100644 --- a/keyboards/alf/x2/info.json +++ b/keyboards/alf/x2/info.json @@ -1,32 +1,84 @@ { - "keyboard_name": "ALF X2", - "url": "", - "maintainer": "qmk", - "width": 15, - "height": 6, + "keyboard_name": "ALF X2", + "url": "", + "maintainer": "qmk", "layouts": { - "LAYOUT": { - "layout": [{"x":1.5, "y":0}, {"x":2.5, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"@", "x":2, "y":1}, {"label":"#", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"\"", "x":11.75, "y":3}, {"label":"Enter", "x":12.75, "y":3, "w":2.25}, {"x":0, "y":4}, {"x":1, "y":4}, {"label":"Z", "x":2, "y":4}, {"label":"X", "x":3, "y":4}, {"label":"C", "x":4, "y":4}, {"label":"V", "x":5, "y":4}, {"label":"B", "x":6, "y":4}, {"label":"N", "x":7, "y":4}, {"label":"M", "x":8, "y":4}, {"label":"<", "x":9, "y":4}, {"label":">", "x":10, "y":4}, {"label":"?", "x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5}, {"label":"Win", "x":11, "y":5}, {"label":"Menu", "x":12, "y":5}, {"label":"Ctrl", "x":13, "y":5}, {"x":14, "y":5}] - }, + "LAYOUT_all": { + "layout": [ + {"x":1.5, "y":0}, + {"x":2.5, "y":0}, - "LAYOUT_std_ansi": { - "layout": [{"x":1.5, "y":0}, {"x":2.5, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"@", "x":2, "y":1}, {"label":"#", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"label":"Backspace", "x":13, "y":1, "w":2}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"\"", "x":11.75, "y":3}, {"label":"Enter", "x":12.75, "y":3, "w":2.25}, {"label":"Shift", "x":0, "y":4, "w":2.25}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":2.75}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5, "w":1.25}, {"label":"Win", "x":11.25, "y":5, "w":1.25}, {"label":"Menu", "x":12.5, "y":5, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5, "w":1.25}] - }, + {"label":"~", "x":0, "y":1}, + {"label":"!", "x":1, "y":1}, + {"label":"@", "x":2, "y":1}, + {"label":"#", "x":3, "y":1}, + {"label":"$", "x":4, "y":1}, + {"label":"%", "x":5, "y":1}, + {"label":"^", "x":6, "y":1}, + {"label":"&", "x":7, "y":1}, + {"label":"*", "x":8, "y":1}, + {"label":"(", "x":9, "y":1}, + {"label":")", "x":10, "y":1}, + {"label":"_", "x":11, "y":1}, + {"label":"+", "x":12, "y":1}, + {"x":13, "y":1}, + {"x":14, "y":1}, - "LAYOUT_std_splits": { - "layout": [{"x":1.5, "y":0}, {"x":2.5, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"@", "x":2, "y":1}, {"label":"#", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"\"", "x":11.75, "y":3}, {"label":"Enter", "x":12.75, "y":3, "w":2.25}, {"label":"Shift", "x":0, "y":4, "w":1.25}, {"x":1.25, "y":4}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"x":14, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5, "w":1.25}, {"label":"Win", "x":11.25, "y":5, "w":1.25}, {"label":"Menu", "x":12.5, "y":5, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5, "w":1.25}] - }, + {"label":"Tab", "x":0, "y":2, "w":1.5}, + {"label":"Q", "x":1.5, "y":2}, + {"label":"W", "x":2.5, "y":2}, + {"label":"E", "x":3.5, "y":2}, + {"label":"R", "x":4.5, "y":2}, + {"label":"T", "x":5.5, "y":2}, + {"label":"Y", "x":6.5, "y":2}, + {"label":"U", "x":7.5, "y":2}, + {"label":"I", "x":8.5, "y":2}, + {"label":"O", "x":9.5, "y":2}, + {"label":"P", "x":10.5, "y":2}, + {"label":"{", "x":11.5, "y":2}, + {"label":"}", "x":12.5, "y":2}, + {"label":"|", "x":13.5, "y":2, "w":1.5}, - "LAYOUT_hhkb": { - "layout": [{"x":1.5, "y":0}, {"x":2.5, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"@", "x":2, "y":1}, {"label":"#", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"\"", "x":11.75, "y":3}, {"label":"Enter", "x":12.75, "y":3, "w":2.25}, {"label":"Shift", "x":0, "y":4, "w":2.25}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"x":14, "y":4}, {"label":"Win", "x":1.5, "y":5, "w":1.25}, {"label":"Alt", "x":2.75, "y":5, "w":1.5}, {"x":4.25, "y":5, "w":6.25}, {"label":"Alt", "x":10.5, "y":5, "w":1.5}, {"label":"Win", "x":12, "y":5, "w":1.25}] - }, + {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, + {"label":"A", "x":1.75, "y":3}, + {"label":"S", "x":2.75, "y":3}, + {"label":"D", "x":3.75, "y":3}, + {"label":"F", "x":4.75, "y":3}, + {"label":"G", "x":5.75, "y":3}, + {"label":"H", "x":6.75, "y":3}, + {"label":"J", "x":7.75, "y":3}, + {"label":"K", "x":8.75, "y":3}, + {"label":"L", "x":9.75, "y":3}, + {"label":":", "x":10.75, "y":3}, + {"label":"\"", "x":11.75, "y":3}, + {"label":"Enter", "x":12.75, "y":3, "w":2.25}, - "LAYOUT_split_arrows": { - "layout": [{"x":1.5, "y":0}, {"x":2.5, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"@", "x":2, "y":1}, {"label":"#", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"\"", "x":11.75, "y":3}, {"label":"Enter", "x":12.75, "y":3, "w":2.25}, {"label":"Shift", "x":0, "y":4, "w":1.25}, {"x":1.25, "y":4}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4, "w":1.75}, {"x":13, "y":4}, {"x":14, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5}, {"label":"Win", "x":11, "y":5}, {"label":"Menu", "x":12, "y":5}, {"label":"Ctrl", "x":13, "y":5}, {"x":14, "y":5}] - }, + {"label":"Shift", "x":0, "y":4}, + {"x":1, "y":4}, + {"label":"Z", "x":2, "y":4}, + {"label":"X", "x":3, "y":4}, + {"label":"C", "x":4, "y":4}, + {"label":"V", "x":5, "y":4}, + {"label":"B", "x":6, "y":4}, + {"label":"N", "x":7, "y":4}, + {"label":"M", "x":8, "y":4}, + {"label":"<", "x":9, "y":4}, + {"label":">", "x":10, "y":4}, + {"label":"?", "x":11, "y":4}, + {"x":12, "y":4}, + {"x":13, "y":4}, + {"x":14, "y":4}, - "LAYOUT_2u_split_arrows": { - "layout": [{"x":1.5, "y":0}, {"x":2.5, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"@", "x":2, "y":1}, {"label":"#", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"\"", "x":11.75, "y":3}, {"label":"Enter", "x":12.75, "y":3, "w":2.25}, {"label":"Shift", "x":0, "y":4}, {"x":1, "y":4}, {"label":"Z", "x":2, "y":4}, {"label":"X", "x":3, "y":4}, {"label":"C", "x":4, "y":4}, {"label":"V", "x":5, "y":4}, {"label":"B", "x":6, "y":4}, {"label":"N", "x":7, "y":4}, {"label":"M", "x":8, "y":4}, {"label":"<", "x":9, "y":4}, {"label":">", "x":10, "y":4}, {"label":"?", "x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5}, {"label":"Win", "x":11, "y":5}, {"label":"Menu", "x":12, "y":5}, {"label":"Ctrl", "x":13, "y":5}, {"x":14, "y":5}] + {"label":"Ctrl", "x":0, "y":5, "w":1.25}, + {"label":"Win", "x":1.25, "y":5, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5, "w":1.25}, + {"x":3.75, "y":5, "w":6.25}, + {"label":"Alt", "x":10, "y":5}, + {"label":"Win", "x":11, "y":5}, + {"label":"Menu", "x":12, "y":5}, + {"label":"Ctrl", "x":13, "y":5}, + {"x":14, "y":5} + ] } } -} \ No newline at end of file +} diff --git a/keyboards/alf/x2/keymaps/default/keymap.c b/keyboards/alf/x2/keymaps/default/keymap.c index eb3d7bd468d5..5e0d69ada92c 100644 --- a/keyboards/alf/x2/keymaps/default/keymap.c +++ b/keyboards/alf/x2/keymaps/default/keymap.c @@ -1,38 +1,39 @@ +/* Copyright 2018-2021 @fixed, MechMerlin, 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 . + */ + #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - LAYOUT( - KC_VOLU, KC_VOLD, - 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_NO, KC_BSPC, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, - KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_RSFT, KC_NO, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_NO, KC_APP, KC_RCTL), - - LAYOUT( - KC_MNXT, KC_MPRV, - 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_DEL, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, RESET, - KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_DOWN, KC_DOWN, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), -}; - -void matrix_init_user(void) { -} - -void matrix_scan_user(void) { -} + [0] = LAYOUT_all( + KC_VOLU, KC_VOLD, + 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, XXXXXXX, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, XXXXXXX, KC_RSFT, XXXXXXX, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), XXXXXXX, KC_APP, KC_RCTL + ), -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} + [1] = LAYOUT_all( + KC_MNXT, KC_MPRV, + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, + _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, RESET, + _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, KC_DOWN, KC_DOWN, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), -void led_set_user(uint8_t usb_led) { - if (usb_led & (1 << USB_LED_CAPS_LOCK)) { - DDRB |= (1 << 2); PORTB &= ~(1 << 2); - } else { - DDRB &= ~(1 << 2); PORTB &= ~(1 << 2); - } -} +}; diff --git a/keyboards/alf/x2/keymaps/hhkb_60/keymap.c b/keyboards/alf/x2/keymaps/hhkb_60/keymap.c index 0abde6243ad7..1f46c22adeb4 100644 --- a/keyboards/alf/x2/keymaps/hhkb_60/keymap.c +++ b/keyboards/alf/x2/keymaps/hhkb_60/keymap.c @@ -1,28 +1,39 @@ +/* Copyright 2018-2021 @fixed, MechMerlin, 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 . + */ + #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - LAYOUT( - KC_VOLU, KC_VOLD, - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, - KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, - KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_RSFT, MO(1), - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_NO, KC_APP, KC_RCTL), + [0] = LAYOUT_all( + KC_VOLU, KC_VOLD, + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, XXXXXXX, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, XXXXXXX, KC_APP, KC_RCTL + ), - LAYOUT( - KC_MNXT, KC_MPRV, - KC_NO, 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_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, RESET, - KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_DOWN, KC_DOWN, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), -}; + [1] = LAYOUT_all( + KC_MNXT, KC_MPRV, + KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, RESET, + _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), -void led_set_user(uint8_t usb_led) { - if (usb_led & (1 << USB_LED_CAPS_LOCK)) { - DDRB |= (1 << 2); PORTB &= ~(1 << 2); - } else { - DDRB &= ~(1 << 2); PORTB &= ~(1 << 2); - } -} \ No newline at end of file +}; diff --git a/keyboards/alf/x2/readme.md b/keyboards/alf/x2/readme.md index b171b5c7933c..671155a341c5 100644 --- a/keyboards/alf/x2/readme.md +++ b/keyboards/alf/x2/readme.md @@ -4,12 +4,18 @@ A customizable 60% keyboard. -Keyboard Maintainer: QMK Community -Hardware Supported: ALF X2 60% -Hardware Availability: [zFrontier](https://en.zfrontier.com/products/group-buy-alf-x2-60) +* Keyboard Maintainer: [The QMK Community](https://github.com/qmk) +* Hardware Supported: ALF X2 60% +* Hardware Availability: [zFrontier](https://en.zfrontier.com/products/group-buy-alf-x2-60) Make example for this keyboard (after setting up your build environment): make alf/x2:default +Flashing example for this keyboard: + + make alf/x2:default:flash + +To reset the board into bootloader mode, hold Space+B while plugging it in. + 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/alf/x2/rules.mk b/keyboards/alf/x2/rules.mk index 22fd09140762..d4ff9e84d897 100644 --- a/keyboards/alf/x2/rules.mk +++ b/keyboards/alf/x2/rules.mk @@ -2,25 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options -# comment out to disable the options. +# change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -SLEEP_LED_ENABLE = 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 = yes # Enable keyboard backlight functionality -AUDIO_ENABLE = no -RGBLIGHT_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 +# 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 = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/alf/x2/x2.c b/keyboards/alf/x2/x2.c index 111712f0b503..e4352296b990 100644 --- a/keyboards/alf/x2/x2.c +++ b/keyboards/alf/x2/x2.c @@ -1 +1,17 @@ +/* Copyright 2018 @fixed + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #include "x2.h" diff --git a/keyboards/alf/x2/x2.h b/keyboards/alf/x2/x2.h index c6c587aea94a..48683ea50bfe 100644 --- a/keyboards/alf/x2/x2.h +++ b/keyboards/alf/x2/x2.h @@ -1,98 +1,38 @@ -#ifndef X2_H -#define X2_H +/* Copyright 2018-2021 @fixed, MechMerlin, 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 . + */ + +#pragma once #include "quantum.h" -// K404 and K408 are the microswitches at the top of the PCB +#define ___ KC_NO -#define LAYOUT( \ - K404, K408, \ - K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \ - K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \ - K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, \ - K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, \ - K400, K401, K403, K406, K410, K411, K412, K413, K414 \ -) { \ - { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \ - { K100, KC_NO, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \ - { K200, KC_NO, 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, K312, K313, K314 }, \ - { K400, K401, KC_NO, K403, K404, KC_NO, K406, KC_NO, K408, KC_NO, K410, K411, K412, K413, K414 } \ -} - -#define LAYOUT_std_ansi( \ - K404, K408, \ - K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, \ - K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \ - K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, \ - K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, \ - K400, K401, K403, K406, K410, K411, K413, K414 \ -) { \ - { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, KC_NO, K014 }, \ - { K100, KC_NO, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \ - { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, KC_NO }, \ - { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, KC_NO }, \ - { K400, K401, KC_NO, K403, K404, KC_NO, K406, KC_NO, K408, KC_NO, K410, K411, KC_NO, K413, K414 } \ -} - -#define LAYOUT_std_splits( \ - K404, K408, \ - K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \ - K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \ - K200, 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, K403, K406, K410, K411, K413, K414 \ -) { \ - { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \ - { K100, KC_NO, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \ - { K200, KC_NO, 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, K314 }, \ - { K400, K401, KC_NO, K403, K404, KC_NO, K406, KC_NO, K408, KC_NO, K410, K411, KC_NO, K413, K414 } \ -} +// K44 and K48 are the microswitches at the top of the PCB -#define LAYOUT_hhkb( \ - K404, K408, \ - K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \ - K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \ - K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, \ - K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, \ - K401, K403, K406, K410, K411 \ +#define LAYOUT_all( \ + K44, K48, \ + 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, K41, K43, K46, K4A, K4B, K4C, K4D, K4E \ ) { \ - { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \ - { K100, KC_NO, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \ - { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, KC_NO }, \ - { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, K314 }, \ - { KC_NO, K401, KC_NO, K403, K404, KC_NO, K406, KC_NO, K408, KC_NO, K410, K411, KC_NO, KC_NO, KC_NO } \ + { 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, K41, ___, K43, K44, ___, K46, ___, K48, ___, K4A, K4B, K4C, K4D, K4E } \ } - -#define LAYOUT_2u_split_arrows( \ - K404, K408, \ - K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \ - K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \ - K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, \ - K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, \ - K400, K401, K403, K406, K410, K411, K412, K413, K414 \ -) { \ - { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \ - { K100, KC_NO, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \ - { K200, KC_NO, 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, K312, K313, K314 }, \ - { K400, K401, KC_NO, K403, K404, KC_NO, K406, KC_NO, K408, KC_NO, K410, K411, K412, K413, K414 } \ -} - -#define LAYOUT_split_arrows( \ - K404, K408, \ - K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \ - K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \ - K200, 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, K403, K406, K410, K411, K412, K413, K414 \ -) { \ - { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \ - { K100, KC_NO, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \ - { K200, KC_NO, 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, K314 }, \ - { K400, K401, KC_NO, K403, K404, KC_NO, K406, KC_NO, K408, KC_NO, K410, K411, K412, K413, K414 } \ -} - -#endif diff --git a/keyboards/alfredslab/swift65/solder/info.json b/keyboards/alfredslab/swift65/solder/info.json index a04de1cc1437..69729e4330f6 100644 --- a/keyboards/alfredslab/swift65/solder/info.json +++ b/keyboards/alfredslab/swift65/solder/info.json @@ -2,10 +2,86 @@ "keyboard_name": "Swift65", "url": "https://swiftcables.net/", "maintainer": "Spooknik", - "width": 16.25, - "height": 5, + "layout_aliases": { + "LAYOUT": "LAYOUT_625u_space_split_bs", + "LAYOUT_all": "LAYOUT_625u_space_split_bs" + }, "layouts": { - "LAYOUT": { + "LAYOUT_625u_space": { + "layout": [ + {"label":"K00 (B1,F7)", "x":0, "y":0}, + {"label":"K01 (B1,F6)", "x":1, "y":0}, + {"label":"K02 (B1,F5)", "x":2, "y":0}, + {"label":"K03 (B1,F4)", "x":3, "y":0}, + {"label":"K04 (B1,F1)", "x":4, "y":0}, + {"label":"K05 (B1,F0)", "x":5, "y":0}, + {"label":"K06 (B1,C7)", "x":6, "y":0}, + {"label":"K07 (B1,C6)", "x":7, "y":0}, + {"label":"K08 (B1,B6)", "x":8, "y":0}, + {"label":"K09 (B1,B5)", "x":9, "y":0}, + {"label":"K0A (B1,B4)", "x":10, "y":0}, + {"label":"K0B (B1,D7)", "x":11, "y":0}, + {"label":"K0C (B1,D5)", "x":12, "y":0}, + {"label":"K0D (B1,D3)", "x":13, "y":0, "w":2}, + {"label":"K0E (B1,D1)", "x":15.25, "y":0}, + + {"label":"K10 (B2,F7)", "x":0, "y":1, "w":1.5}, + {"label":"K11 (B2,F6)", "x":1.5, "y":1}, + {"label":"K12 (B2,F5)", "x":2.5, "y":1}, + {"label":"K13 (B2,F4)", "x":3.5, "y":1}, + {"label":"K14 (B2,F1)", "x":4.5, "y":1}, + {"label":"K15 (B2,F0)", "x":5.5, "y":1}, + {"label":"K16 (B2,C7)", "x":6.5, "y":1}, + {"label":"K17 (B2,C6)", "x":7.5, "y":1}, + {"label":"K18 (B2,B6)", "x":8.5, "y":1}, + {"label":"K19 (B2,B5)", "x":9.5, "y":1}, + {"label":"K1A (B2,B4)", "x":10.5, "y":1}, + {"label":"K1B (B2,D7)", "x":11.5, "y":1}, + {"label":"K1C (B2,D5)", "x":12.5, "y":1}, + {"label":"K1D (B2,D3)", "x":13.5, "y":1, "w":1.5}, + {"label":"K1E (B2,D1)", "x":15.25, "y":1}, + + {"label":"K20 (B3,F7)", "x":0, "y":2, "w":1.75}, + {"label":"K21 (B3,F6)", "x":1.75, "y":2}, + {"label":"K22 (B3,F5)", "x":2.75, "y":2}, + {"label":"K23 (B3,F4)", "x":3.75, "y":2}, + {"label":"K24 (B3,F1)", "x":4.75, "y":2}, + {"label":"K25 (B3,F0)", "x":5.75, "y":2}, + {"label":"K26 (B3,C7)", "x":6.75, "y":2}, + {"label":"K27 (B3,C6)", "x":7.75, "y":2}, + {"label":"K28 (B3,B6)", "x":8.75, "y":2}, + {"label":"K29 (B3,B5)", "x":9.75, "y":2}, + {"label":"K2A (B3,B4)", "x":10.75, "y":2}, + {"label":"K2B (B3,D7)", "x":11.75, "y":2}, + {"label":"K2C (B3,D5)", "x":12.75, "y":2, "w":2.25}, + {"label":"K2E (B3,D1)", "x":15.25, "y":2}, + + {"label":"K30 (D4,F7)", "x":0, "y":3, "w":2.25}, + {"label":"K32 (D4,F5)", "x":2.25, "y":3}, + {"label":"K33 (D4,F4)", "x":3.25, "y":3}, + {"label":"K34 (D4,F1)", "x":4.25, "y":3}, + {"label":"K35 (D4,F0)", "x":5.25, "y":3}, + {"label":"K36 (D4,C7)", "x":6.25, "y":3}, + {"label":"K37 (D4,C6)", "x":7.25, "y":3}, + {"label":"K38 (D4,B6)", "x":8.25, "y":3}, + {"label":"K39 (D4,B5)", "x":9.25, "y":3}, + {"label":"K3A (D4,B4)", "x":10.25, "y":3}, + {"label":"K3B (D4,D7)", "x":11.25, "y":3}, + {"label":"K3C (D4,D5)", "x":12.25, "y":3, "w":1.75}, + {"label":"K3D (D4,D3)", "x":14, "y":3}, + + {"label":"K40 (D6,F7)", "x":0, "y":4, "w":1.25}, + {"label":"K41 (D6,F6)", "x":1.25, "y":4, "w":1.25}, + {"label":"K43 (D6,F4)", "x":2.5, "y":4, "w":1.25}, + {"label":"K46 (D6,C7)", "x":3.75, "y":4, "w":6.25}, + {"label":"K4A (D6,B4)", "x":10, "y":4, "w":1.25}, + {"label":"K4B (D6,D7)", "x":11.25, "y":4, "w":1.25}, + {"label":"K4C (D6,D5)", "x":13, "y":4}, + {"label":"K4D (D6,D3)", "x":14, "y":4}, + {"label":"K4E (D6,D1)", "x":15, "y":4} + ] + }, + "LAYOUT_625u_space_split_bs": { "layout": [ {"label":"K00 (B1,F7)", "x":0, "y":0}, {"label":"K01 (B1,F6)", "x":1, "y":0}, @@ -23,6 +99,7 @@ {"label":"K0D (B1,D3)", "x":13, "y":0}, {"label":"K0F (B1,D0)", "x":14, "y":0}, {"label":"K0E (B1,D1)", "x":15.25, "y":0}, + {"label":"K10 (B2,F7)", "x":0, "y":1, "w":1.5}, {"label":"K11 (B2,F6)", "x":1.5, "y":1}, {"label":"K12 (B2,F5)", "x":2.5, "y":1}, @@ -38,6 +115,7 @@ {"label":"K1C (B2,D5)", "x":12.5, "y":1}, {"label":"K1D (B2,D3)", "x":13.5, "y":1, "w":1.5}, {"label":"K1E (B2,D1)", "x":15.25, "y":1}, + {"label":"K20 (B3,F7)", "x":0, "y":2, "w":1.75}, {"label":"K21 (B3,F6)", "x":1.75, "y":2}, {"label":"K22 (B3,F5)", "x":2.75, "y":2}, @@ -52,6 +130,7 @@ {"label":"K2B (B3,D7)", "x":11.75, "y":2}, {"label":"K2C (B3,D5)", "x":12.75, "y":2, "w":2.25}, {"label":"K2E (B3,D1)", "x":15.25, "y":2}, + {"label":"K30 (D4,F7)", "x":0, "y":3, "w":2.25}, {"label":"K32 (D4,F5)", "x":2.25, "y":3}, {"label":"K33 (D4,F4)", "x":3.25, "y":3}, @@ -65,6 +144,7 @@ {"label":"K3B (D4,D7)", "x":11.25, "y":3}, {"label":"K3C (D4,D5)", "x":12.25, "y":3, "w":1.75}, {"label":"K3D (D4,D3)", "x":14, "y":3}, + {"label":"K40 (D6,F7)", "x":0, "y":4, "w":1.25}, {"label":"K41 (D6,F6)", "x":1.25, "y":4, "w":1.25}, {"label":"K43 (D6,F4)", "x":2.5, "y":4, "w":1.25}, @@ -75,7 +155,153 @@ {"label":"K4D (D6,D3)", "x":14, "y":4}, {"label":"K4E (D6,D1)", "x":15, "y":4} ] + }, + "LAYOUT_7u_space": { + "layout": [ + {"label":"K00 (B1,F7)", "x":0, "y":0}, + {"label":"K01 (B1,F6)", "x":1, "y":0}, + {"label":"K02 (B1,F5)", "x":2, "y":0}, + {"label":"K03 (B1,F4)", "x":3, "y":0}, + {"label":"K04 (B1,F1)", "x":4, "y":0}, + {"label":"K05 (B1,F0)", "x":5, "y":0}, + {"label":"K06 (B1,C7)", "x":6, "y":0}, + {"label":"K07 (B1,C6)", "x":7, "y":0}, + {"label":"K08 (B1,B6)", "x":8, "y":0}, + {"label":"K09 (B1,B5)", "x":9, "y":0}, + {"label":"K0A (B1,B4)", "x":10, "y":0}, + {"label":"K0B (B1,D7)", "x":11, "y":0}, + {"label":"K0C (B1,D5)", "x":12, "y":0}, + {"label":"K0D (B1,D3)", "x":13, "y":0, "w":2}, + {"label":"K0E (B1,D1)", "x":15.25, "y":0}, + + {"label":"K10 (B2,F7)", "x":0, "y":1, "w":1.5}, + {"label":"K11 (B2,F6)", "x":1.5, "y":1}, + {"label":"K12 (B2,F5)", "x":2.5, "y":1}, + {"label":"K13 (B2,F4)", "x":3.5, "y":1}, + {"label":"K14 (B2,F1)", "x":4.5, "y":1}, + {"label":"K15 (B2,F0)", "x":5.5, "y":1}, + {"label":"K16 (B2,C7)", "x":6.5, "y":1}, + {"label":"K17 (B2,C6)", "x":7.5, "y":1}, + {"label":"K18 (B2,B6)", "x":8.5, "y":1}, + {"label":"K19 (B2,B5)", "x":9.5, "y":1}, + {"label":"K1A (B2,B4)", "x":10.5, "y":1}, + {"label":"K1B (B2,D7)", "x":11.5, "y":1}, + {"label":"K1C (B2,D5)", "x":12.5, "y":1}, + {"label":"K1D (B2,D3)", "x":13.5, "y":1, "w":1.5}, + {"label":"K1E (B2,D1)", "x":15.25, "y":1}, + + {"label":"K20 (B3,F7)", "x":0, "y":2, "w":1.75}, + {"label":"K21 (B3,F6)", "x":1.75, "y":2}, + {"label":"K22 (B3,F5)", "x":2.75, "y":2}, + {"label":"K23 (B3,F4)", "x":3.75, "y":2}, + {"label":"K24 (B3,F1)", "x":4.75, "y":2}, + {"label":"K25 (B3,F0)", "x":5.75, "y":2}, + {"label":"K26 (B3,C7)", "x":6.75, "y":2}, + {"label":"K27 (B3,C6)", "x":7.75, "y":2}, + {"label":"K28 (B3,B6)", "x":8.75, "y":2}, + {"label":"K29 (B3,B5)", "x":9.75, "y":2}, + {"label":"K2A (B3,B4)", "x":10.75, "y":2}, + {"label":"K2B (B3,D7)", "x":11.75, "y":2}, + {"label":"K2C (B3,D5)", "x":12.75, "y":2, "w":2.25}, + {"label":"K2E (B3,D1)", "x":15.25, "y":2}, + + {"label":"K30 (D4,F7)", "x":0, "y":3, "w":2.25}, + {"label":"K32 (D4,F5)", "x":2.25, "y":3}, + {"label":"K33 (D4,F4)", "x":3.25, "y":3}, + {"label":"K34 (D4,F1)", "x":4.25, "y":3}, + {"label":"K35 (D4,F0)", "x":5.25, "y":3}, + {"label":"K36 (D4,C7)", "x":6.25, "y":3}, + {"label":"K37 (D4,C6)", "x":7.25, "y":3}, + {"label":"K38 (D4,B6)", "x":8.25, "y":3}, + {"label":"K39 (D4,B5)", "x":9.25, "y":3}, + {"label":"K3A (D4,B4)", "x":10.25, "y":3}, + {"label":"K3B (D4,D7)", "x":11.25, "y":3}, + {"label":"K3C (D4,D5)", "x":12.25, "y":3, "w":1.75}, + {"label":"K3D (D4,D3)", "x":14, "y":3}, + + {"label":"K40 (D6,F7)", "x":0, "y":4, "w":1.5}, + {"label":"K41 (D6,F6)", "x":1.5, "y":4}, + {"label":"K43 (D6,F4)", "x":2.5, "y":4, "w":1.5}, + {"label":"K46 (D6,C7)", "x":4, "y":4, "w":7}, + {"label":"K4B (D6,D7)", "x":11, "y":4, "w":1.5}, + {"label":"K4C (D6,D5)", "x":13, "y":4}, + {"label":"K4D (D6,D3)", "x":14, "y":4}, + {"label":"K4E (D6,D1)", "x":15, "y":4} + ] + }, + "LAYOUT_7u_space_split_bs": { + "layout": [ + {"label":"K00 (B1,F7)", "x":0, "y":0}, + {"label":"K01 (B1,F6)", "x":1, "y":0}, + {"label":"K02 (B1,F5)", "x":2, "y":0}, + {"label":"K03 (B1,F4)", "x":3, "y":0}, + {"label":"K04 (B1,F1)", "x":4, "y":0}, + {"label":"K05 (B1,F0)", "x":5, "y":0}, + {"label":"K06 (B1,C7)", "x":6, "y":0}, + {"label":"K07 (B1,C6)", "x":7, "y":0}, + {"label":"K08 (B1,B6)", "x":8, "y":0}, + {"label":"K09 (B1,B5)", "x":9, "y":0}, + {"label":"K0A (B1,B4)", "x":10, "y":0}, + {"label":"K0B (B1,D7)", "x":11, "y":0}, + {"label":"K0C (B1,D5)", "x":12, "y":0}, + {"label":"K0D (B1,D3)", "x":13, "y":0}, + {"label":"K0F (B1,D0)", "x":14, "y":0}, + {"label":"K0E (B1,D1)", "x":15.25, "y":0}, + + {"label":"K10 (B2,F7)", "x":0, "y":1, "w":1.5}, + {"label":"K11 (B2,F6)", "x":1.5, "y":1}, + {"label":"K12 (B2,F5)", "x":2.5, "y":1}, + {"label":"K13 (B2,F4)", "x":3.5, "y":1}, + {"label":"K14 (B2,F1)", "x":4.5, "y":1}, + {"label":"K15 (B2,F0)", "x":5.5, "y":1}, + {"label":"K16 (B2,C7)", "x":6.5, "y":1}, + {"label":"K17 (B2,C6)", "x":7.5, "y":1}, + {"label":"K18 (B2,B6)", "x":8.5, "y":1}, + {"label":"K19 (B2,B5)", "x":9.5, "y":1}, + {"label":"K1A (B2,B4)", "x":10.5, "y":1}, + {"label":"K1B (B2,D7)", "x":11.5, "y":1}, + {"label":"K1C (B2,D5)", "x":12.5, "y":1}, + {"label":"K1D (B2,D3)", "x":13.5, "y":1, "w":1.5}, + {"label":"K1E (B2,D1)", "x":15.25, "y":1}, + + {"label":"K20 (B3,F7)", "x":0, "y":2, "w":1.75}, + {"label":"K21 (B3,F6)", "x":1.75, "y":2}, + {"label":"K22 (B3,F5)", "x":2.75, "y":2}, + {"label":"K23 (B3,F4)", "x":3.75, "y":2}, + {"label":"K24 (B3,F1)", "x":4.75, "y":2}, + {"label":"K25 (B3,F0)", "x":5.75, "y":2}, + {"label":"K26 (B3,C7)", "x":6.75, "y":2}, + {"label":"K27 (B3,C6)", "x":7.75, "y":2}, + {"label":"K28 (B3,B6)", "x":8.75, "y":2}, + {"label":"K29 (B3,B5)", "x":9.75, "y":2}, + {"label":"K2A (B3,B4)", "x":10.75, "y":2}, + {"label":"K2B (B3,D7)", "x":11.75, "y":2}, + {"label":"K2C (B3,D5)", "x":12.75, "y":2, "w":2.25}, + {"label":"K2E (B3,D1)", "x":15.25, "y":2}, + + {"label":"K30 (D4,F7)", "x":0, "y":3, "w":2.25}, + {"label":"K32 (D4,F5)", "x":2.25, "y":3}, + {"label":"K33 (D4,F4)", "x":3.25, "y":3}, + {"label":"K34 (D4,F1)", "x":4.25, "y":3}, + {"label":"K35 (D4,F0)", "x":5.25, "y":3}, + {"label":"K36 (D4,C7)", "x":6.25, "y":3}, + {"label":"K37 (D4,C6)", "x":7.25, "y":3}, + {"label":"K38 (D4,B6)", "x":8.25, "y":3}, + {"label":"K39 (D4,B5)", "x":9.25, "y":3}, + {"label":"K3A (D4,B4)", "x":10.25, "y":3}, + {"label":"K3B (D4,D7)", "x":11.25, "y":3}, + {"label":"K3C (D4,D5)", "x":12.25, "y":3, "w":1.75}, + {"label":"K3D (D4,D3)", "x":14, "y":3}, + + {"label":"K40 (D6,F7)", "x":0, "y":4, "w":1.5}, + {"label":"K41 (D6,F6)", "x":1.5, "y":4}, + {"label":"K43 (D6,F4)", "x":2.5, "y":4, "w":1.5}, + {"label":"K46 (D6,C7)", "x":4, "y":4, "w":7}, + {"label":"K4B (D6,D7)", "x":11, "y":4, "w":1.5}, + {"label":"K4C (D6,D5)", "x":13, "y":4}, + {"label":"K4D (D6,D3)", "x":14, "y":4}, + {"label":"K4E (D6,D1)", "x":15, "y":4} + ] } } - ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/" } diff --git a/keyboards/alfredslab/swift65/solder/keymaps/default/keymap.c b/keyboards/alfredslab/swift65/solder/keymaps/default/keymap.c index 274809bb1160..e3367f159b21 100644 --- a/keyboards/alfredslab/swift65/solder/keymaps/default/keymap.c +++ b/keyboards/alfredslab/swift65/solder/keymaps/default/keymap.c @@ -17,14 +17,14 @@ #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( + [0] = LAYOUT_625u_space_split_bs( 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_HOME, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT ), - [1] = LAYOUT( + [1] = LAYOUT_625u_space_split_bs( KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGDN, diff --git a/keyboards/alfredslab/swift65/solder/keymaps/default/readme.md b/keyboards/alfredslab/swift65/solder/keymaps/default/readme.md deleted file mode 100644 index 74de1460808a..000000000000 --- a/keyboards/alfredslab/swift65/solder/keymaps/default/readme.md +++ /dev/null @@ -1,3 +0,0 @@ -# Default Swift65 Solder Layout - -![](https://i.imgur.com/7Capi8W.png) diff --git a/keyboards/alfredslab/swift65/solder/keymaps/via/keymap.c b/keyboards/alfredslab/swift65/solder/keymaps/via/keymap.c index 9936becce637..fddfd94765d1 100644 --- a/keyboards/alfredslab/swift65/solder/keymaps/via/keymap.c +++ b/keyboards/alfredslab/swift65/solder/keymaps/via/keymap.c @@ -17,28 +17,28 @@ #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( + [0] = LAYOUT_625u_space_split_bs( 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_HOME, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT ), - [1] = LAYOUT( + [1] = LAYOUT_625u_space_split_bs( KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGDN, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END ), - [2] = LAYOUT( + [2] = LAYOUT_625u_space_split_bs( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), - [3] = LAYOUT( + [3] = LAYOUT_625u_space_split_bs( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, diff --git a/keyboards/alfredslab/swift65/solder/keymaps/via/readme.md b/keyboards/alfredslab/swift65/solder/keymaps/via/readme.md deleted file mode 100644 index 74de1460808a..000000000000 --- a/keyboards/alfredslab/swift65/solder/keymaps/via/readme.md +++ /dev/null @@ -1,3 +0,0 @@ -# Default Swift65 Solder Layout - -![](https://i.imgur.com/7Capi8W.png) diff --git a/keyboards/alfredslab/swift65/solder/readme.md b/keyboards/alfredslab/swift65/solder/readme.md index b4774381996a..9a5c277ef869 100644 --- a/keyboards/alfredslab/swift65/solder/readme.md +++ b/keyboards/alfredslab/swift65/solder/readme.md @@ -2,7 +2,7 @@ A 65% Keyboard from Swiftcables -* Keyboard Maintainer: [Steven Phillips (spoonik)](https://github.com/keyboardcollective) +* Keyboard Maintainer: [Steven Phillips (spooknik)](https://github.com/keyboardcollective) * Hardware Supported: Swift65 Solder * Hardware Availability: Soom from Swiftcables diff --git a/keyboards/alfredslab/swift65/solder/rules.mk b/keyboards/alfredslab/swift65/solder/rules.mk index 2c2853b57f25..c94c74e26482 100644 --- a/keyboards/alfredslab/swift65/solder/rules.mk +++ b/keyboards/alfredslab/swift65/solder/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/alfredslab/swift65/solder/solder.h b/keyboards/alfredslab/swift65/solder/solder.h index 7629379f596c..651497bec47a 100644 --- a/keyboards/alfredslab/swift65/solder/solder.h +++ b/keyboards/alfredslab/swift65/solder/solder.h @@ -18,16 +18,60 @@ #include "quantum.h" -#define LAYOUT( \ +#define XXX KC_NO + +#define LAYOUT_625u_space( \ + 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, K2E, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \ + K40, K41, K43, K46, K4A, K4B, K4C, K4D, K4E \ +) { \ + { K00, 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, XXX }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, XXX, K2E, XXX }, \ + { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, XXX, XXX }, \ + { K40, K41, XXX, K43, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D, K4E, XXX }, \ +} + +#define LAYOUT_625u_space_split_bs( \ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, 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, K2E, \ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \ K40, K41, K43, K46, K4A, K4B, 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, KC_NO }, \ - { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, K2E, KC_NO }, \ - { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO, KC_NO }, \ - { K40, K41, KC_NO, K43, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E, 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, XXX }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, XXX, K2E, XXX }, \ + { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, XXX, XXX }, \ + { K40, K41, XXX, K43, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D, K4E, XXX }, \ +} + +#define LAYOUT_7u_space( \ + 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, K2E, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \ + K40, K41, K43, K46, K4B, K4C, K4D, K4E \ +) { \ + { K00, 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, XXX }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, XXX, K2E, XXX }, \ + { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, XXX, XXX }, \ + { K40, K41, XXX, K43, XXX, XXX, K46, XXX, XXX, XXX, XXX, K4B, K4C, K4D, K4E, XXX }, \ +} + +#define LAYOUT_7u_space_split_bs( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, 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, K2E, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \ + K40, K41, K43, K46, K4B, 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, XXX }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, XXX, K2E, XXX }, \ + { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, XXX, XXX }, \ + { K40, K41, XXX, K43, XXX, XXX, K46, XXX, XXX, XXX, XXX, K4B, K4C, K4D, K4E, XXX }, \ } diff --git a/keyboards/allison/config.h b/keyboards/allison/config.h index f5ec5d90ab2d..85cb6ee9f5df 100644 --- a/keyboards/allison/config.h +++ b/keyboards/allison/config.h @@ -121,59 +121,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -194,26 +141,6 @@ along with this program. If not, see . #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ #define BOOTMAGIC_LITE_ROW 0 #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/allison/info.json b/keyboards/allison/info.json index 1c435a2d22d5..cd6b51f96ea0 100644 --- a/keyboards/allison/info.json +++ b/keyboards/allison/info.json @@ -2,8 +2,6 @@ "keyboard_name": "allison", "url": "www.yiancar-designs.com", "maintainer": "Yiancar", - "width": 16.25, - "height": 6.25, "layouts": { "LAYOUT_all": { "layout": [{"label":"0,0", "x":1.25, "y":0}, {"label":"0,1", "x":2.5, "y":0}, {"label":"0,2", "x":3.5, "y":0}, {"label":"0,3", "x":4.5, "y":0}, {"label":"0,4", "x":5.5, "y":0}, {"label":"0,5", "x":6.75, "y":0}, {"label":"0,6", "x":7.75, "y":0}, {"label":"0,7", "x":8.75, "y":0}, {"label":"0,8", "x":9.75, "y":0}, {"label":"0,9", "x":11, "y":0}, {"label":"0,10", "x":12, "y":0}, {"label":"0,11", "x":13, "y":0}, {"label":"0,12", "x":14, "y":0}, {"label":"0,13", "x":15.25, "y":0}, {"label":"1,0", "x":0, "y":1.25}, {"label":"1,1", "x":1.25, "y":1.25}, {"label":"1,2", "x":2.25, "y":1.25}, {"label":"1,3", "x":3.25, "y":1.25}, {"label":"1,4", "x":4.25, "y":1.25}, {"label":"1,5", "x":5.25, "y":1.25}, {"label":"1,6", "x":6.25, "y":1.25}, {"label":"1,7", "x":7.25, "y":1.25}, {"label":"1,8", "x":8.25, "y":1.25}, {"label":"1,9", "x":9.25, "y":1.25}, {"label":"1,10", "x":10.25, "y":1.25}, {"label":"1,11", "x":11.25, "y":1.25}, {"label":"1,12", "x":12.25, "y":1.25}, {"label":"1,13", "x":13.25, "y":1.25}, {"label":"1,14", "x":14.25, "y":1.25}, {"label":"0,14", "x":15.25, "y":1.25}, {"label":"2,0", "x":0, "y":2.25}, {"label":"2,1", "x":1.25, "y":2.25, "w":1.5}, {"label":"2,2", "x":2.75, "y":2.25}, {"label":"2,3", "x":3.75, "y":2.25}, {"label":"2,4", "x":4.75, "y":2.25}, {"label":"2,5", "x":5.75, "y":2.25}, {"label":"2,6", "x":6.75, "y":2.25}, {"label":"2,7", "x":7.75, "y":2.25}, {"label":"2,8", "x":8.75, "y":2.25}, {"label":"2,9", "x":9.75, "y":2.25}, {"label":"2,10", "x":10.75, "y":2.25}, {"label":"2,11", "x":11.75, "y":2.25}, {"label":"2,12", "x":12.75, "y":2.25}, {"label":"2,13", "x":13.75, "y":2.25}, {"label":"2,14", "x":14.75, "y":2.25, "w":1.5}, {"label":"3,0", "x":0, "y":3.25}, {"label":"3,1", "x":1.25, "y":3.25, "w":1.75}, {"label":"3,2", "x":3, "y":3.25}, {"label":"3,3", "x":4, "y":3.25}, {"label":"3,4", "x":5, "y":3.25}, {"label":"3,5", "x":6, "y":3.25}, {"label":"3,6", "x":7, "y":3.25}, {"label":"3,7", "x":8, "y":3.25}, {"label":"3,8", "x":9, "y":3.25}, {"label":"3,9", "x":10, "y":3.25}, {"label":"3,10", "x":11, "y":3.25}, {"label":"3,11", "x":12, "y":3.25}, {"label":"3,12", "x":13, "y":3.25}, {"label":"3,13", "x":14, "y":3.25}, {"label":"3,14", "x":15, "y":3.25, "w":1.25}, {"label":"4,0", "x":0, "y":4.25}, {"label":"4,1", "x":1.25, "y":4.25, "w":1.25}, {"label":"4,2", "x":2.5, "y":4.25}, {"label":"4,3", "x":3.5, "y":4.25}, {"label":"4,4", "x":4.5, "y":4.25}, {"label":"4,5", "x":5.5, "y":4.25}, {"label":"4,6", "x":6.5, "y":4.25}, {"label":"4,7", "x":7.5, "y":4.25}, {"label":"4,8", "x":8.5, "y":4.25}, {"label":"4,9", "x":9.5, "y":4.25}, {"label":"4,10", "x":10.5, "y":4.25}, {"label":"4,11", "x":11.5, "y":4.25}, {"label":"4,12", "x":12.5, "y":4.25}, {"label":"4,13", "x":13.5, "y":4.25, "w":1.75}, {"label":"4,14", "x":15.25, "y":4.25}, {"label":"5,0", "x":0, "y":5.25}, {"label":"5,1", "x":1.25, "y":5.25, "w":1.5}, {"label":"5,2", "x":2.75, "y":5.25}, {"label":"5,3", "x":3.75, "y":5.25, "w":1.5}, {"label":"5,8", "x":5.25, "y":5.25, "w":7}, {"label":"5,12", "x":12.25, "y":5.25, "w":1.5}, {"label":"5,13", "x":13.75, "y":5.25}, {"label":"5,14", "x":14.75, "y":5.25, "w":1.5}] diff --git a/keyboards/allison/rules.mk b/keyboards/allison/rules.mk index c26a68e61efc..7f1a6c824391 100644 --- a/keyboards/allison/rules.mk +++ b/keyboards/allison/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/allison_numpad/config.h b/keyboards/allison_numpad/config.h index b0d53c132e3d..581926c24c14 100644 --- a/keyboards/allison_numpad/config.h +++ b/keyboards/allison_numpad/config.h @@ -121,59 +121,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -194,26 +141,6 @@ along with this program. If not, see . #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ #define BOOTMAGIC_LITE_ROW 0 #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/allison_numpad/info.json b/keyboards/allison_numpad/info.json index 8b4258bd1a79..e644d8ec3bac 100644 --- a/keyboards/allison_numpad/info.json +++ b/keyboards/allison_numpad/info.json @@ -2,14 +2,69 @@ "keyboard_name": "allison_numpad", "url": "www.yiancar-designs.com", "maintainer": "Yiancar", - "width": 4, - "height": 6.25, "layouts": { "LAYOUT_ortho_6x4": { - "layout": [{"label":"0,0", "x":0, "y":0}, {"label":"0,1", "x":1, "y":0}, {"label":"0,2", "x":2, "y":0}, {"label":"0,3", "x":3, "y":0}, {"label":"1,0", "x":0, "y":1.25}, {"label":"1,1", "x":1, "y":1.25}, {"label":"1,2", "x":2, "y":1.25}, {"label":"1,3", "x":3, "y":1.25}, {"label":"2,0", "x":0, "y":2.25}, {"label":"2,1", "x":1, "y":2.25}, {"label":"2,2", "x":2, "y":2.25}, {"label":"2,3", "x":3, "y":2.25}, {"label":"3,0", "x":0, "y":3.25}, {"label":"3,1", "x":1, "y":3.25}, {"label":"3,2", "x":2, "y":3.25}, {"label":"3,3", "x":3, "y":3.25}, {"label":"4,0", "x":0, "y":4.25}, {"label":"4,1", "x":1, "y":4.25}, {"label":"4,2", "x":2, "y":4.25}, {"label":"4,3", "x":3, "y":4.25}, {"label":"5,0", "x":0, "y":5.25}, {"label":"5,1", "x":1, "y":5.25}, {"label":"5,2", "x":2, "y":5.25}, {"label":"5,3", "x":3, "y":5.25}] + "layout": [ + {"label":"0,0", "x":0, "y":0}, + {"label":"0,1", "x":1, "y":0}, + {"label":"0,2", "x":2, "y":0}, + {"label":"0,3", "x":3, "y":0}, + + {"label":"1,0", "x":0, "y":1.25}, + {"label":"1,1", "x":1, "y":1.25}, + {"label":"1,2", "x":2, "y":1.25}, + {"label":"1,3", "x":3, "y":1.25}, + + {"label":"2,0", "x":0, "y":2.25}, + {"label":"2,1", "x":1, "y":2.25}, + {"label":"2,2", "x":2, "y":2.25}, + {"label":"2,3", "x":3, "y":2.25}, + + {"label":"3,0", "x":0, "y":3.25}, + {"label":"3,1", "x":1, "y":3.25}, + {"label":"3,2", "x":2, "y":3.25}, + {"label":"3,3", "x":3, "y":3.25}, + + {"label":"4,0", "x":0, "y":4.25}, + {"label":"4,1", "x":1, "y":4.25}, + {"label":"4,2", "x":2, "y":4.25}, + {"label":"4,3", "x":3, "y":4.25}, + + {"label":"5,0", "x":0, "y":5.25}, + {"label":"5,1", "x":1, "y":5.25}, + {"label":"5,2", "x":2, "y":5.25}, + {"label":"5,3", "x":3, "y":5.25} + ] }, "LAYOUT_numpad_6x4": { - "layout": [{"label":"0,0", "x":0, "y":0}, {"label":"0,1", "x":1, "y":0}, {"label":"0,2", "x":2, "y":0}, {"label":"0,3", "x":3, "y":0}, {"label":"1,0", "x":0, "y":1.25}, {"label":"1,1", "x":1, "y":1.25}, {"label":"1,2", "x":2, "y":1.25}, {"label":"1,3", "x":3, "y":1.25}, {"label":"2,0", "x":0, "y":2.25}, {"label":"2,1", "x":1, "y":2.25}, {"label":"2,2", "x":2, "y":2.25}, {"label":"3,3", "x":3, "y":2.25, "h":2}, {"label":"3,0", "x":0, "y":3.25}, {"label":"3,1", "x":1, "y":3.25}, {"label":"3,2", "x":2, "y":3.25}, {"label":"4,0", "x":0, "y":4.25}, {"label":"4,1", "x":1, "y":4.25}, {"label":"4,2", "x":2, "y":4.25}, {"label":"5,3", "x":3, "y":4.25, "h":2}, {"label":"5,0", "x":0, "y":5.25, "w":2}, {"label":"5,2", "x":2, "y":5.25}] + "layout": [ + {"label":"0,0", "x":0, "y":0}, + {"label":"0,1", "x":1, "y":0}, + {"label":"0,2", "x":2, "y":0}, + {"label":"0,3", "x":3, "y":0}, + + {"label":"1,0", "x":0, "y":1.25}, + {"label":"1,1", "x":1, "y":1.25}, + {"label":"1,2", "x":2, "y":1.25}, + {"label":"1,3", "x":3, "y":1.25}, + + {"label":"2,0", "x":0, "y":2.25}, + {"label":"2,1", "x":1, "y":2.25}, + {"label":"2,2", "x":2, "y":2.25}, + + {"label":"3,0", "x":0, "y":3.25}, + {"label":"3,1", "x":1, "y":3.25}, + {"label":"3,2", "x":2, "y":3.25}, + {"label":"3,3", "x":3, "y":2.25, "h":2}, + + {"label":"4,0", "x":0, "y":4.25}, + {"label":"4,1", "x":1, "y":4.25}, + {"label":"4,2", "x":2, "y":4.25}, + + {"label":"5,0", "x":0, "y":5.25, "w":2}, + {"label":"5,2", "x":2, "y":5.25}, + {"label":"5,3", "x":3, "y":4.25, "h":2} + ] } } -} \ No newline at end of file +} diff --git a/keyboards/allison_numpad/rules.mk b/keyboards/allison_numpad/rules.mk index 3c176844bdf5..66b214aab7ba 100644 --- a/keyboards/allison_numpad/rules.mk +++ b/keyboards/allison_numpad/rules.mk @@ -2,31 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = ortho_6x4 numpad_6x4 diff --git a/keyboards/alpha/alpha.h b/keyboards/alpha/alpha.h index 025a3ac5fbbc..204e03822bb5 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 8c7edd57989a..ae1c69656b5c 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/alpha/info.json b/keyboards/alpha/info.json index 0c03a51aa61c..3564b8d53656 100644 --- a/keyboards/alpha/info.json +++ b/keyboards/alpha/info.json @@ -1,8 +1,6 @@ { "keyboard_name": "Alpha", "maintainer": "qmk", - "width": 10, - "height": 3, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":0.5, "y":2}, {"x":1.5, "y":2}, {"x":2.5, "y":2}, {"x":3.5, "y":2}, {"x":4.5, "y":2, "w":2}, {"x":6.5, "y":2}, {"x":7.5, "y":2}, {"x":8.5, "y":2}] diff --git a/keyboards/alpha/keymaps/default/keymap.c b/keyboards/alpha/keymaps/default/keymap.c index c18790fe4b3b..3632ecaea47a 100755 --- a/keyboards/alpha/keymaps/default/keymap.c +++ b/keyboards/alpha/keymaps/default/keymap.c @@ -41,9 +41,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 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, TO(0), MACRO1, KC_NO, KC_NO, KC_NO), }; - -void matrix_init_user(void) { -} - -void matrix_scan_user(void) { -} diff --git a/keyboards/alpha/rules.mk b/keyboards/alpha/rules.mk index dceb6e307b7f..f0858b8094f8 100755 --- a/keyboards/alpha/rules.mk +++ b/keyboards/alpha/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 -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 diff --git a/keyboards/alpine65/info.json b/keyboards/alpine65/info.json index 5ecf6762a097..94cd3589a3c3 100644 --- a/keyboards/alpine65/info.json +++ b/keyboards/alpine65/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Alpine65", "url": "", "maintainer": "Gondolindrim", - "width": 16.25, - "height": 5.25, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/alpine65/rules.mk b/keyboards/alpine65/rules.mk index 61f9253016c2..435cd40fb935 100644 --- a/keyboards/alpine65/rules.mk +++ b/keyboards/alpine65/rules.mk @@ -7,13 +7,11 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality diff --git a/keyboards/alps64/info.json b/keyboards/alps64/info.json index 1f1af4f1f333..c7917c8c6eb7 100644 --- a/keyboards/alps64/info.json +++ b/keyboards/alps64/info.json @@ -2,8 +2,6 @@ "keyboard_name": "alps64", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "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/alps64/rules.mk b/keyboards/alps64/rules.mk index 7dbe8e7dd0f9..36c46fc9fb8b 100644 --- a/keyboards/alps64/rules.mk +++ b/keyboards/alps64/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u2 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change to no to disable the options. # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = no # USB Nkey Rollover - not yet supported in LUFA LAYOUTS = 60_ansi diff --git a/keyboards/alu84/alu84.c b/keyboards/alu84/alu84.c index 46e510efb5ab..3e058d3ed532 100755 --- a/keyboards/alu84/alu84.c +++ b/keyboards/alu84/alu84.c @@ -14,33 +14,4 @@ * along with this program. If not, see . */ - #include "alu84.h" -#include "rgblight.h" -#include "action_layer.h" -#include "quantum.h" -#include "action.h" - - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - - - diff --git a/keyboards/alu84/alu84.h b/keyboards/alu84/alu84.h index c171e4c1d8a6..dc263eb8d13d 100755 --- a/keyboards/alu84/alu84.h +++ b/keyboards/alu84/alu84.h @@ -14,28 +14,24 @@ * along with this program. If not, see . */ - -#ifndef ALU84_H -#define ALU84_H +#pragma once #include "quantum.h" +#define ___ 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, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, \ - K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K315, \ - K400, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K413, K414, K415, \ - K500, K501, K503, K506, K510, K511, K512, K513, K514, K515 \ +#define LAYOUT_75_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, 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, \ + K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4D, K4E, K4F, \ + K50, K51, K53, K56, K5A, K5B, K5C, K5D, K5E, K5F \ ) { \ - { 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, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \ - { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, KC_NO, K315 }, \ - { K400, KC_NO, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, K413, K414, K415 }, \ - { K500, K501, KC_NO, K503, KC_NO, KC_NO, K506, KC_NO, KC_NO, KC_NO, K510, K511, K512, K513, K514, K515 } \ + { 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, ___, 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 }, \ + { K40, ___, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, ___, K4D, K4E, K4F }, \ + { K50, K51, ___, K53, ___, ___, K56, ___, ___, ___, K5A, K5B, K5C, K5D, K5E, K5F } \ } - -#endif diff --git a/keyboards/alu84/config.h b/keyboards/alu84/config.h index 9ebc1569e303..3700ced8cfe0 100755 --- a/keyboards/alu84/config.h +++ b/keyboards/alu84/config.h @@ -14,8 +14,7 @@ * along with this program. If not, see . */ -#ifndef ALU84_CONFIG_H -#define ALU84_CONFIG_H +#pragma once #include "config_common.h" @@ -30,21 +29,37 @@ #define MATRIX_ROWS 6 #define MATRIX_COLS 16 -/* key matrix pins */ +/* + * 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 { D0, D1, D2, D3, D5, B7 } #define MATRIX_COL_PINS { F0, F1, E6, C7, C6, F5, D4, B1, B0, B5, B4, D7, D6, B3, F4, F6 } #define UNUSED_PINS -/* COL2ROW or ROW2COL */ +/* COL2ROW, ROW2COL */ #define DIODE_DIRECTION COL2ROW -/* number of backlight levels */ #define BACKLIGHT_PIN B6 -#ifdef BACKLIGHT_PIN #define BACKLIGHT_LEVELS 3 +#define BACKLIGHT_BREATHING + +#define RGB_DI_PIN E2 +#if defined(RGBLIGHT_ENABLE) +# define RGBLED_NUM 16 +# define RGBLIGHT_HUE_STEP 10 +# define RGBLIGHT_SAT_STEP 10 +# define RGBLIGHT_VAL_STEP 10 +# define RGBLIGHT_ANIMATIONS #endif -/* Set 0 if debouncing isn't needed */ +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ #define DEBOUNCE 5 /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ @@ -52,16 +67,3 @@ /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE - -#define RGB_DI_PIN E2 -#ifdef RGB_DI_PIN -#define RGBLED_NUM 16 -#define RGBLIGHT_HUE_STEP 10 -#define RGBLIGHT_SAT_STEP 10 -#define RGBLIGHT_VAL_STEP 10 - -#define RGBLIGHT_ANIMATIONS - -#endif - -#endif diff --git a/keyboards/alu84/info.json b/keyboards/alu84/info.json index 97f2b5facca2..55d01489dccb 100644 --- a/keyboards/alu84/info.json +++ b/keyboards/alu84/info.json @@ -1,12 +1,103 @@ { - "keyboard_name": "ALU84", - "url": "", - "maintainer": "qmk", - "width": 16, - "height": 6, - "layouts": { - "LAYOUT": { - "layout": [{"label":"K000", "x":0, "y":0}, {"label":"K001", "x":1, "y":0}, {"label":"K002", "x":2, "y":0}, {"label":"K003", "x":3, "y":0}, {"label":"K004", "x":4, "y":0}, {"label":"K005", "x":5, "y":0}, {"label":"K006", "x":6, "y":0}, {"label":"K007", "x":7, "y":0}, {"label":"K008", "x":8, "y":0}, {"label":"K009", "x":9, "y":0}, {"label":"K010", "x":10, "y":0}, {"label":"K011", "x":11, "y":0}, {"label":"K012", "x":12, "y":0}, {"label":"K013", "x":13, "y":0}, {"label":"K014", "x":14, "y":0}, {"label":"K015", "x":15, "y":0}, {"label":"K100", "x":0, "y":1}, {"label":"K101", "x":1, "y":1}, {"label":"K102", "x":2, "y":1}, {"label":"K103", "x":3, "y":1}, {"label":"K104", "x":4, "y":1}, {"label":"K105", "x":5, "y":1}, {"label":"K106", "x":6, "y":1}, {"label":"K107", "x":7, "y":1}, {"label":"K108", "x":8, "y":1}, {"label":"K109", "x":9, "y":1}, {"label":"K110", "x":10, "y":1}, {"label":"K111", "x":11, "y":1}, {"label":"K112", "x":12, "y":1}, {"label":"K114", "x":13, "y":1, "w":2}, {"label":"K115", "x":15, "y":1}, {"label":"K200", "x":0, "y":2, "w":1.5}, {"label":"K202", "x":1.5, "y":2}, {"label":"K203", "x":2.5, "y":2}, {"label":"K204", "x":3.5, "y":2}, {"label":"K205", "x":4.5, "y":2}, {"label":"K206", "x":5.5, "y":2}, {"label":"K207", "x":6.5, "y":2}, {"label":"K208", "x":7.5, "y":2}, {"label":"K209", "x":8.5, "y":2}, {"label":"K210", "x":9.5, "y":2}, {"label":"K211", "x":10.5, "y":2}, {"label":"K212", "x":11.5, "y":2}, {"label":"K213", "x":12.5, "y":2}, {"label":"K214", "x":13.5, "y":2, "w":1.5}, {"label":"K215", "x":15, "y":2}, {"label":"K300", "x":0, "y":3, "w":1.75}, {"label":"K302", "x":1.75, "y":3}, {"label":"K303", "x":2.75, "y":3}, {"label":"K304", "x":3.75, "y":3}, {"label":"K305", "x":4.75, "y":3}, {"label":"K306", "x":5.75, "y":3}, {"label":"K307", "x":6.75, "y":3}, {"label":"K308", "x":7.75, "y":3}, {"label":"K309", "x":8.75, "y":3}, {"label":"K310", "x":9.75, "y":3}, {"label":"K311", "x":10.75, "y":3}, {"label":"K312", "x":11.75, "y":3}, {"label":"K313", "x":12.75, "y":3, "w":2.25}, {"label":"K315", "x":15, "y":3}, {"label":"K400", "x":0, "y":4, "w":2.25}, {"label":"K402", "x":2.25, "y":4}, {"label":"K403", "x":3.25, "y":4}, {"label":"K404", "x":4.25, "y":4}, {"label":"K405", "x":5.25, "y":4}, {"label":"K406", "x":6.25, "y":4}, {"label":"K407", "x":7.25, "y":4}, {"label":"K408", "x":8.25, "y":4}, {"label":"K409", "x":9.25, "y":4}, {"label":"K410", "x":10.25, "y":4}, {"label":"K411", "x":11.25, "y":4}, {"label":"K413", "x":12.25, "y":4, "w":1.75}, {"label":"K414", "x":14, "y":4}, {"label":"K415", "x":15, "y":4}, {"label":"K500", "x":0, "y":5, "w":1.25}, {"label":"K501", "x":1.25, "y":5, "w":1.25}, {"label":"K503", "x":2.5, "y":5, "w":1.25}, {"label":"K506", "x":3.75, "y":5, "w":6.25}, {"label":"K510", "x":10, "y":5}, {"label":"K511", "x":11, "y":5}, {"label":"K512", "x":12, "y":5}, {"label":"K513", "x":13, "y":5}, {"label":"K514", "x":14, "y":5}, {"label":"K515", "x":15, "y":5}] + "keyboard_name": "ALU84", + "url": "", + "maintainer": "qmk", + "layout_aliases": { + "LAYOUT": "LAYOUT_75_ansi" + }, + "layouts": { + "LAYOUT_75_ansi": { + "layout": [ + {"label":"K00", "x":0, "y":0}, + {"label":"K01", "x":1, "y":0}, + {"label":"K02", "x":2, "y":0}, + {"label":"K03", "x":3, "y":0}, + {"label":"K04", "x":4, "y":0}, + {"label":"K05", "x":5, "y":0}, + {"label":"K06", "x":6, "y":0}, + {"label":"K07", "x":7, "y":0}, + {"label":"K08", "x":8, "y":0}, + {"label":"K09", "x":9, "y":0}, + {"label":"K0A", "x":10, "y":0}, + {"label":"K0B", "x":11, "y":0}, + {"label":"K0C", "x":12, "y":0}, + {"label":"K0D", "x":13, "y":0}, + {"label":"K0E", "x":14, "y":0}, + {"label":"K0F", "x":15, "y":0}, + + {"label":"K10", "x":0, "y":1}, + {"label":"K11", "x":1, "y":1}, + {"label":"K12", "x":2, "y":1}, + {"label":"K13", "x":3, "y":1}, + {"label":"K14", "x":4, "y":1}, + {"label":"K15", "x":5, "y":1}, + {"label":"K16", "x":6, "y":1}, + {"label":"K17", "x":7, "y":1}, + {"label":"K18", "x":8, "y":1}, + {"label":"K19", "x":9, "y":1}, + {"label":"K1A", "x":10, "y":1}, + {"label":"K1B", "x":11, "y":1}, + {"label":"K1C", "x":12, "y":1}, + {"label":"K1E", "x":13, "y":1, "w":2}, + {"label":"K1F", "x":15, "y":1}, + + {"label":"K20", "x":0, "y":2, "w":1.5}, + {"label":"K22", "x":1.5, "y":2}, + {"label":"K23", "x":2.5, "y":2}, + {"label":"K24", "x":3.5, "y":2}, + {"label":"K25", "x":4.5, "y":2}, + {"label":"K26", "x":5.5, "y":2}, + {"label":"K27", "x":6.5, "y":2}, + {"label":"K28", "x":7.5, "y":2}, + {"label":"K29", "x":8.5, "y":2}, + {"label":"K2A", "x":9.5, "y":2}, + {"label":"K2B", "x":10.5, "y":2}, + {"label":"K2C", "x":11.5, "y":2}, + {"label":"K2D", "x":12.5, "y":2}, + {"label":"K2E", "x":13.5, "y":2, "w":1.5}, + {"label":"K2F", "x":15, "y":2}, + + {"label":"K30", "x":0, "y":3, "w":1.75}, + {"label":"K32", "x":1.75, "y":3}, + {"label":"K33", "x":2.75, "y":3}, + {"label":"K34", "x":3.75, "y":3}, + {"label":"K35", "x":4.75, "y":3}, + {"label":"K36", "x":5.75, "y":3}, + {"label":"K37", "x":6.75, "y":3}, + {"label":"K38", "x":7.75, "y":3}, + {"label":"K39", "x":8.75, "y":3}, + {"label":"K3A", "x":9.75, "y":3}, + {"label":"K3B", "x":10.75, "y":3}, + {"label":"K3C", "x":11.75, "y":3}, + {"label":"K3D", "x":12.75, "y":3, "w":2.25}, + {"label":"K3F", "x":15, "y":3}, + + {"label":"K40", "x":0, "y":4, "w":2.25}, + {"label":"K42", "x":2.25, "y":4}, + {"label":"K43", "x":3.25, "y":4}, + {"label":"K44", "x":4.25, "y":4}, + {"label":"K45", "x":5.25, "y":4}, + {"label":"K46", "x":6.25, "y":4}, + {"label":"K47", "x":7.25, "y":4}, + {"label":"K48", "x":8.25, "y":4}, + {"label":"K49", "x":9.25, "y":4}, + {"label":"K4A", "x":10.25, "y":4}, + {"label":"K4B", "x":11.25, "y":4}, + {"label":"K4D", "x":12.25, "y":4, "w":1.75}, + {"label":"K4E", "x":14, "y":4}, + {"label":"K4F", "x":15, "y":4}, + + {"label":"K50", "x":0, "y":5, "w":1.25}, + {"label":"K51", "x":1.25, "y":5, "w":1.25}, + {"label":"K53", "x":2.5, "y":5, "w":1.25}, + {"label":"K56", "x":3.75, "y":5, "w":6.25}, + {"label":"K5A", "x":10, "y":5}, + {"label":"K5B", "x":11, "y":5}, + {"label":"K5C", "x":12, "y":5}, + {"label":"K5D", "x":13, "y":5}, + {"label":"K5E", "x":14, "y":5}, + {"label":"K5F", "x":15, "y":5} + ] + } } - } } diff --git a/keyboards/alu84/keymaps/default/keymap.c b/keyboards/alu84/keymaps/default/keymap.c index 4122978ebaf0..ca370c765a89 100755 --- a/keyboards/alu84/keymaps/default/keymap.c +++ b/keyboards/alu84/keymaps/default/keymap.c @@ -1,100 +1,45 @@ -#include QMK_KEYBOARD_H - -#define _BL 0 -#define _FN1 1 - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -/* BL - * ,- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - . - * | Esc | Scrn Brght Up | Scrn Bright Down | Expose | Launchpad | Show Desktop | Dock Hide Tog | Screen Capture | Shortcut | Shortcut | Shortcut| Shortcut | Play/Pause | Mute | Vol Up | Vol Down | - * |- - -+ - - - - - - - + - - - - - - - - -+ - - - -+ - - - - - + - - - - - - -+ - - - - - - - + - - - - - - - -+ - - - - -+ - - - - -+ - - - - + - - - - -+ - - - - - -+ - - -+ - - - -+ - - - - -| - * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | + | Backspace | POWER | - * |- - -+ - - - - - - - + - - - - - - - - -+ - - - -+ - - - - - + - - - - - - -+ - - - - - - - + - - - - - - - -+ - - - - -+ - - - - -+ - - - - + - - - - -+ - - - - - -+ - - -+ - - - -+ - - - - -| - * | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | Shortcut | - * |- - -+ - - - - - - - + - - - - - - - - -+ - - - -+ - - - - - + - - - - - - -+ - - - - - - - + - - - - - - - -+ - - - - -+ - - - - -+ - - - - + - - - - -+ - - - - - -+ - - -+ - - - -+ - - - - -| - * | CAPS | A | S | D | F | G | H | J | K | L | ; | ' | Enter | Pg Up | - * |- - -+ - - - - - - - + - - - - - - - - -+ - - - -+ - - - - - + - - - - - - -+ - - - - - - - + - - - - - - - -+ - - - - -+ - - - - -+ - - - - + - - - - -+ - - - - - -+ - - -+ - - - -+ - - - - -| - * | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | Up | Pg Dn | - * |- - -+ - - - - - - - + - - - - - - - - -+ - - - -+ - - - - - + - - - - - - -+ - - - - - - - + - - - - - - - -+ - - - - -+ - - - - -+ - - - - + - - - - -+ - - - - - -+ - - -+ - - - -+ - - - - -| - * | Control | Option/Alt | Gui | Space | Gui | Opt | Fn (layer) | Left | Down | Right | - * `- - -+ - - - - - - - + - - - - - - - - -+ - - - -+ - - - - - + - - - - - - -+ - - - - - - - + - - - - - - - -+ - - - - -+ - - - - -+ - - - - + - - - - -+ - - - - - -+ - - -+ - - - -+ - - - - -' +/* Copyright 2017 @TurboMech /u/TurboMech @A9entOran9e#6134 + * 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 . */ - [_BL] = LAYOUT( - KC_ESC, KC_F14, KC_F15, LCTL(KC_UP), LCTL(KC_L), KC_F11, LALT(LGUI(KC_D)), LCTL(KC_S), LCTL(LSFT(KC_O)), LCTL(LGUI(KC_1)), LCTL(LGUI(KC_2)), LCTL(LGUI(KC_3)), KC_MPLY, KC_MUTE, KC_VOLD, KC_VOLU, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_POWER, - 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, LCTL(LGUI(KC_N)), - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, - KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, KC_UP, KC_PGDN, - KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), - -/* FN1 - * ,- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - . - * | Quit All | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Trns | Trns | DFU RESET | - * |- - -+ - - - - - - - + - - - - - - - - -+ - - - -+ - - - - - + - - - - - - -+ - - - - - - - + - - - - - - - -+ - - - - -+ - - - - -+ - - - - + - - - - -+ - - - - - -+ - - -+ - - - -+ - - - - -| - * | Trns | Trns | Trns | Trns | Trns | Trns | Trns | Trns | Trns | Trns | Trns | Trns | Trns | DELETE | Lock Shrct | - * |- - -+ - - - - - - - + - - - - - - - - -+ - - - -+ - - - - - + - - - - - - -+ - - - - - - - + - - - - - - - -+ - - - - -+ - - - - -+ - - - - + - - - - -+ - - - - - -+ - - -+ - - - -+ - - - - -| - * | Trns | RGB Toggle | RGB Mode | RGB Increase | RGB Decrease | RGB Hue Inc | RGB Hue Dec | RGB Sat Inc | RGB Sat Dec | Trns | Trns | Trns | Trns | Trns | Trns | - * |- - -+ - - - - - - - + - - - - - - - - -+ - - - -+ - - - - - + - - - - - - -+ - - - - - - - + - - - - - - - -+ - - - - -+ - - - - -+ - - - - + - - - - -+ - - - - - -+ - - -+ - - - -+ - - - - -| - * | Trns | Trns | Trns | Trns | Trns | Trns | Trns | Trns | Trns | Trns | Trns | Trns | Trns | Trns | - * |- - -+ - - - - - - - + - - - - - - - - -+ - - - -+ - - - - - + - - - - - - -+ - - - - - - - + - - - - - - - -+ - - - - -+ - - - - -+ - - - - + - - - - -+ - - - - - -+ - - -+ - - - -+ - - - - -| - * | Trns | Backlight Tog | Backlight Inc | Backlight Dec | Backlight Step | Trns | Trns | Trns | Trns | Trns | Trns | Trns | Trns | Trns | - * |- - -+ - - - - - - - + - - - - - - - - -+ - - - -+ - - - - - + - - - - - - -+ - - - - - - - + - - - - - - - -+ - - - - -+ - - - - -+ - - - - + - - - - -+ - - - - - -+ - - -+ - - - -+ - - - - -| - * | Trns | Trns | Trns | Trns | Trns | Trns | Trns | Trns | Trns | Trns | - * `- - -+ - - - - - - - + - - - - - - - - -+ - - - -+ - - - - - + - - - - - - -+ - - - - - - - + - - - - - - - -+ - - - - -+ - - - - -+ - - - - + - - - - -+ - - - - - -+ - - -+ - - - -+ - - - - -' - */ - - [_FN1] = LAYOUT( - LALT(LGUI(KC_Q)), 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, RESET, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, LCTL(LALT(LGUI(KC_S))), - KC_TRNS, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, BL_TOGG, BL_INC, BL_DEC, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +#include QMK_KEYBOARD_H +enum layer_names { + _BL, + _FN1, }; -void matrix_init_user(void) { -} - -void matrix_scan_user(void) { -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - - if (usb_led & (1 << USB_LED_NUM_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_CAPS_LOCK)) { - DDRB |= (1 << 2); PORTB &= ~(1 << 2); - } else { - DDRB &= ~(1 << 2); PORTB &= ~(1 << 2); - } - - if (usb_led & (1 << USB_LED_SCROLL_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_COMPOSE)) { - - } else { - - } +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - if (usb_led & (1 << USB_LED_KANA)) { - - } else { - - } + [_BL] = LAYOUT_75_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MUTE, KC_VOLD, KC_VOLU, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_FN1] = LAYOUT_75_ansi( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RESET, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______, + _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, BL_TOGG, BL_INC, BL_DEC, BL_STEP, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), -} +}; diff --git a/keyboards/alu84/keymaps/turbomech/config.h b/keyboards/alu84/keymaps/turbomech/config.h index 3013df9ba7f7..2a60c1f381a7 100644 --- a/keyboards/alu84/keymaps/turbomech/config.h +++ b/keyboards/alu84/keymaps/turbomech/config.h @@ -14,12 +14,7 @@ * along with this program. If not, see . */ -#ifndef CONFIG_USER_H -#define CONFIG_USER_H - -#define TAPPING_TOGGLE 2 -#include "../../config.h" +#pragma once // place overrides here - -#endif +#define TAPPING_TOGGLE 2 diff --git a/keyboards/alu84/keymaps/turbomech/keymap.c b/keyboards/alu84/keymaps/turbomech/keymap.c index 80006d0dbe79..24c0d2c2dac2 100644 --- a/keyboards/alu84/keymaps/turbomech/keymap.c +++ b/keyboards/alu84/keymaps/turbomech/keymap.c @@ -1,4 +1,5 @@ /* Copyright 2017 @TurboMech /u/TurboMech @A9entOran9e#6134 + * 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,12 +15,9 @@ * along with this program. If not, see . */ - #include QMK_KEYBOARD_H #include "turbomech.h" -#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) - #define _QWERTY 0 //BASE layer #define _FUNCTION 1 //Function layer @@ -47,13 +45,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -' */ - [_QWERTY] = LAYOUT( - KC_ESC, KC_F14, KC_F15, LCTL(KC_UP), LCTL(KC_L), KC_F11, LALT(LGUI(KC_D)), LCTL(KC_S), LCTL(LSFT(KC_O)), LCTL(LGUI(KC_1)), LCTL(LGUI(KC_2)), LCTL(LGUI(KC_3)), KC_MPLY, KC_MUTE, KC_VOLD, KC_VOLU, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_POWER, - 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, LCTL(LGUI(KC_N)), - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, - KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, KC_UP, KC_PGDN, - KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), + [_QWERTY] = LAYOUT_75_ansi( + KC_ESC, KC_F14, KC_F15, C(KC_UP), C(KC_L), KC_F11, A(G(KC_D)), C(KC_S), C(S(KC_O)), C(G(KC_1)), C(G(KC_2)), C(G(KC_3)), KC_MPLY, KC_MUTE, KC_VOLD, KC_VOLU, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_POWER, + 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, C(G(KC_N)), + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, KC_UP, KC_PGDN, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), /* FN1 - SEE readme.md * ,- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -. @@ -77,81 +76,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -' */ - - [_FUNCTION] = LAYOUT( - LALT(LGUI(KC_Q)), 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_RESET, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, LCTL(LALT(LGUI(KC_S))), - KC_TRNS, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, BL_TOGG, BL_INC, BL_DEC, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [_FUNCTION] = LAYOUT_75_ansi( + A(G(KC_Q)), 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_RESET, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, C(A(G(KC_S))), + _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, BL_TOGG, BL_INC, BL_DEC, BL_STEP, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), }; - -void led_set_user(uint8_t usb_led) { - - if (usb_led & (1 << USB_LED_NUM_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_CAPS_LOCK)) { - DDRB |= (1 << 2); PORTB &= ~(1 << 2); - } else { - DDRB &= ~(1 << 2); PORTB &= ~(1 << 2); - } - - if (usb_led & (1 << USB_LED_SCROLL_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_COMPOSE)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_KANA)) { - - } else { - - } - -} - -enum function_id { - SHIFT_ESC, -}; - -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_FUNCTION(SHIFT_ESC), -}; - -void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { - static uint8_t shift_esc_shift_mask; - switch (id) { - case SHIFT_ESC: - shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK; - if (record->event.pressed) { - if (shift_esc_shift_mask) { - add_key(KC_GRV); - send_keyboard_report(); - } else { - add_key(KC_ESC); - send_keyboard_report(); - } - } else { - if (shift_esc_shift_mask) { - del_key(KC_GRV); - send_keyboard_report(); - } else { - del_key(KC_ESC); - send_keyboard_report(); - } - } - break; - } -} diff --git a/keyboards/alu84/keymaps/turbomech/rules.mk b/keyboards/alu84/keymaps/turbomech/rules.mk index c8b74bfc9a03..6c0a79b11095 100644 --- a/keyboards/alu84/keymaps/turbomech/rules.mk +++ b/keyboards/alu84/keymaps/turbomech/rules.mk @@ -1,12 +1,2 @@ -BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE ?= no # Mouse keys(+4700) -EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) -CONSOLE_ENABLE ?= no # Console for debug(+400) -COMMAND_ENABLE ?= no # Commands for debug and configuration -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 ?= yes # Enable keyboard backlight functionality -AUDIO_ENABLE ?= no -RGBLIGHT_ENABLE ?= yes -UNICODE_ENABLE ?= yes - +SLEEP_LED_ENABLE = no +UNICODE_ENABLE = yes diff --git a/keyboards/alu84/readme.md b/keyboards/alu84/readme.md index f98addd0bfbd..12da1d8a8f0d 100644 --- a/keyboards/alu84/readme.md +++ b/keyboards/alu84/readme.md @@ -1,16 +1,21 @@ -ALU84 -=== +# ALU84 -![alu84](https://i.imgur.com/wBfazDc.jpg) +![alu84](https://i.imgur.com/wBfazDch.jpg) -A 75% keyboard made and sold by MECHKEYS [More info on MECHKEYS](https://mechkeys.ca). +A 75% keyboard made and sold by MECHKEYS. -Keyboard Maintainer: [TurboMech](https://github.com/TurboMech) -Hardware Supported: ALU84 -Hardware Availability: [MECHKEYS](https://mechkeys.ca) +* Keyboard Maintainer: [The QMK Community](https://github.com/qmk) +* Hardware Supported: ALU84 +* Hardware Availability: [~~MECHKEYS~~](https://mechkeys.ca) (No longer available) Make example for this keyboard (after setting up your build environment): make alu84:default -See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. +Flashing example for this keyboard: + + make alu84:default:flash + +To reset the board into bootloader mode, hold Space+B while plugging the cable in. + +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/alu84/rules.mk b/keyboards/alu84/rules.mk index 8d1652171c74..05c23cff967a 100755 --- a/keyboards/alu84/rules.mk +++ b/keyboards/alu84/rules.mk @@ -2,25 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options -# comment out to disable the options. +# change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration -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 -SLEEP_LED_ENABLE = yes # 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 = yes # Enable keyboard backlight functionality -AUDIO_ENABLE = no -RGBLIGHT_ENABLE = yes +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 +# 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 = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +SLEEP_LED_ENABLE = yes + +LAYOUTS = 75_ansi diff --git a/keyboards/amag23/info.json b/keyboards/amag23/info.json index c57340772508..dc44b51224dd 100644 --- a/keyboards/amag23/info.json +++ b/keyboards/amag23/info.json @@ -2,8 +2,6 @@ "keyboard_name": "AMAG23", "url": "http://www.koolertron.com/koolertron-one-handed-macro-mechanical-keyboard-rgb-led-backlit-portable-mini-onehanded-mechanical-gaming-keypad-23-fully-programmable-keys-blue-switches-p-874.html", "maintainer": "ianmclinden", - "width": 6, - "height": 4, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/amag23/rules.mk b/keyboards/amag23/rules.mk index fa292d5cc87f..517e4cd38d81 100644 --- a/keyboards/amag23/rules.mk +++ b/keyboards/amag23/rules.mk @@ -2,18 +2,16 @@ MCU = atmega32a # Bootloader selection -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow WS2812_DRIVER = i2c diff --git a/keyboards/amj40/info.json b/keyboards/amj40/info.json index 780369c1b023..575fd1b03416 100644 --- a/keyboards/amj40/info.json +++ b/keyboards/amj40/info.json @@ -2,8 +2,6 @@ "keyboard_name": "AMJ40", "url": "", "maintainer": "qmk", - "width": 12, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/amj40/keymaps/fabian/rules.mk b/keyboards/amj40/keymaps/fabian/rules.mk index 90559e0dd226..59a2cb09a859 100644 --- a/keyboards/amj40/keymaps/fabian/rules.mk +++ b/keyboards/amj40/keymaps/fabian/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/amj40/keymaps/jetpacktuxedo/rules.mk b/keyboards/amj40/keymaps/jetpacktuxedo/rules.mk index 2b613b28e4ba..780d48a438a8 100644 --- a/keyboards/amj40/keymaps/jetpacktuxedo/rules.mk +++ b/keyboards/amj40/keymaps/jetpacktuxedo/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/amj40/keymaps/myee/rules.mk b/keyboards/amj40/keymaps/myee/rules.mk index fe07e43d8232..b8cc8b42c7bb 100644 --- a/keyboards/amj40/keymaps/myee/rules.mk +++ b/keyboards/amj40/keymaps/myee/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/amj40/rules.mk b/keyboards/amj40/rules.mk index e2f9c83102c3..1f44da3ea6c9 100755 --- a/keyboards/amj40/rules.mk +++ b/keyboards/amj40/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/amj60/amj60.c b/keyboards/amj60/amj60.c index 02aa116d5477..af0539a679dc 100644 --- a/keyboards/amj60/amj60.c +++ b/keyboards/amj60/amj60.c @@ -1 +1,17 @@ +/* Copyright 2016 Toni (@toneman77) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #include "amj60.h" diff --git a/keyboards/amj60/amj60.h b/keyboards/amj60/amj60.h index 07b406868ed3..feda68003079 100644 --- a/keyboards/amj60/amj60.h +++ b/keyboards/amj60/amj60.h @@ -1,5 +1,21 @@ -#ifndef AMJ60_H -#define AMJ60_H +/* Copyright 2016 Toni (@toneman77) + * 2021 James Young for QMK (@noroadsleft) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once #include "quantum.h" @@ -7,23 +23,43 @@ #define XXX KC_NO /* AMJ60 layout to the best of my knowledge matrix layout - * ,-----------------------------------------------------------. - * | 00 |01| 02| 03| 04| 05| 06| 07| 08| 09| 0a| 0b| 0c| 0d| 49| - * |-----------------------------------------------------------| - * | 10 | 11| 12| 13| 14| 15| 16| 17| 18| 19| 1a| 1b| 1c| 1d | - * |-----------------------------------------------------------| - * | 20 | 21| 22| 23| 24| 25| 26| 27| 28| 29| 2a| 2b| 2d | - * |-----------------------------------------------------------| - * | 30 | 31| 32| 33| 34| 35| 36| 37| 38| 39| 3a| 3b| 3c | 3d | - * |-----------------------------------------------------------| - * | 40 | 41 | 42 | 45 | 4a | 4b | 4c | 4d | - * `-----------------------------------------------------------' + * + * I scoured the internet researching this PCB, which near as I know was + * discontinued around 2017. Fortunately, the wiring seems to be based on the + * GH60, and I own a KC60, which is also based on the GH60. I traced my KC60 + * (which I already had apart!) and worked out the right shift can be split + * 1.75/1 (HHKB style) or 1/1.75 (JIS/ABNT2). With either split, the 1u key + * was on column C, so I used that here. + * + * - noroadsleft + * + * ┌───────┐ + * 2u Backspace │0d │ + * └───────┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │49 │ ┌─────┐ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ │ │ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │ ┌──┴┐ │ ISO Enter + * 2.25u ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬────┤ │2c │2d │ + * LShift │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2d │ └───┴────┘ + * ┌────────┐ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ ┌──────────┐ + * │30 │ │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3d │3c │ │3d │ 2.75u RShift + * └────────┘ ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ └──────────┘ + * │40 │41 │42 │ 45 │4a │4b │4c │4d │ ┌───┬──────┐ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ │3c │3d │ JIS RShift + * ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐ └───┴──────┘ + * Tsangan │40 │41 │42 │ 45 │4b │4c │4d │ + * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ + * ┌─────┬───┬─────┬───────────────────────┬─────┬───┬───┬─────┐ + * Topre-style │40 │41 │42 │ 45 │4a │4b │4c │4d │ + * └─────┴───┴─────┴───────────────────────┴─────┴───┴───┴─────┘ + * */ -#define LAYOUT( \ +#define LAYOUT_all( \ 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, k3c, k3d, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3c, \ k40, k41, k42, k45, k4a, k4b, k4c, k4d \ ) \ { \ @@ -34,20 +70,6 @@ {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, k49, k4a, k4b, k4c, k4d} \ } -/* - * ANSI - * ,-----------------------------------------------------------. - * | 00 |01| 02| 03| 04| 05| 06| 07| 08| 09| 0a| 0b| 0c| 0d | - * |-----------------------------------------------------------| - * | 10 | 11| 12| 13| 14| 15| 16| 17| 18| 19| 1a| 1b| 1c| 1d | - * |-----------------------------------------------------------| - * | 20 | 21| 22| 23| 24| 25| 26| 27| 28| 29| 2a| 2b| 2d | - * |-----------------------------------------------------------| - * | 30 | 32| 33| 34| 35| 36| 37| 38| 39| 3a| 3b| 3d | - * |-----------------------------------------------------------| - * | 40 | 41 | 42 | 45 | 4a | 4b | 4c | 4d | - * `-----------------------------------------------------------' - */ #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, \ @@ -63,107 +85,47 @@ {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d} \ } -/* AMJ60 HHKB matrix layout - * ,------------------------------------------------------------. - * | 00 |01| 02| 03| 04| 05| 06| 07| 08| 09| 0a| 0b| 0c| 0d| 49 | - * |------------------------------------------------------------| - * | 10 | 11| 12| 13| 14| 15| 16| 17| 18| 19| 1a| 1b| 1c| 1d | - * |------------------------------------------------------------| - * | 20 | 21| 22| 23| 24| 25| 26| 27| 28| 29| 2a| 2b| 2d | - * |------------------------------------------------------------| - * | 30 | 32| 33| 34| 35| 36| 37| 38| 39| 3a| 3b| 3d | 3c | - * |------------------------------------------------------------| - * | 40 | 41 | 42 | 45 | 4a | 4b | 4c | 4d | - * `------------------------------------------------------------' - */ - -#define LAYOUT_hhkb( \ +#define LAYOUT_60_hhkb( \ 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, k2d, \ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3c, \ - k40, k41, k42, k45, k4a, k4b, k4c, k4d \ + k41, k42, k45, k4b, k4c \ ) \ { \ {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, k3c, k3d}, \ - {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, k49, k4a, k4b, k4c, k4d} \ + {XXX, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, k49, XXX, k4b, k4c, XXX} \ } -/* ISO - * ,-----------------------------------------------------------. - * | 00 |01| 02| 03| 04| 05| 06| 07| 08| 09| 0a| 0b| 0c| 0d | - * |-----------------------------------------------------------| - * | 10 | 11| 12| 13| 14| 15| 16| 17| 18| 19| 1a| 1b| 1c| 1d | - * |-----------------------------------------------------------| - * | 20 | 21| 22| 23| 24| 25| 26| 27| 28| 29| 2a| 2b| 2c|2d | - * |-----------------------------------------------------------| - * | 30 | 31| 32| 33| 34| 35| 36| 37| 38| 39| 3a| 3b| 3d | - * |-----------------------------------------------------------| - * | 40 | 41 | 42 | 45 | 4a | 4b | 4c | 4d | - * `-----------------------------------------------------------' - */ -#define LAYOUT_iso( \ +#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, k1d, \ + 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, 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}, \ + {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, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d} \ } -/* ISO w/ split right shift key matrix layout - * ,-----------------------------------------------------------. - * | 00 |01| 02| 03| 04| 05| 06| 07| 08| 09| 0a| 0b| 0c| 0d | - * |-----------------------------------------------------------| - * | 10 | 11| 12| 13| 14| 15| 16| 17| 18| 19| 1a| 1b| 1c| 1d | - * |-----------------------------------------------------------| - * | 20 | 21| 22| 23| 24| 25| 26| 27| 28| 29| 2a| 2b| 2c|2d | - * |-----------------------------------------------------------| - * | 30 | 31| 32| 33| 34| 35| 36| 37| 38| 39| 3a| 3b| 3d | 3c | - * |-----------------------------------------------------------| - * | 40 | 41 | 42 | 45 | 4a | 4b | 4c | 4d | - * `-----------------------------------------------------------' - */ -#define LAYOUT_iso_splitrshift( \ - 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, k3d, k3c, \ - 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, k2c, k2d}, \ - {k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d}, \ - {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d} \ -} - -#define LAYOUT_max( \ +#define LAYOUT_60_ansi_split_bs_rshift( \ 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, k2d, \ - k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3c, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3c, \ 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, k3b, k3c, k3d}, \ + {k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d}, \ {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, k49, k4a, k4b, k4c, k4d} \ } - -void matrix_init_user(void); -void matrix_scan_user(void); - -#endif diff --git a/keyboards/amj60/config.h b/keyboards/amj60/config.h index 008539368dc0..8d53efd3f393 100644 --- a/keyboards/amj60/config.h +++ b/keyboards/amj60/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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -31,46 +30,69 @@ along with this program. If not, see . #define MATRIX_ROWS 5 #define MATRIX_COLS 14 -// ROWS: Top to bottom, COLS: Left to right - -#define MATRIX_ROW_PINS { F7, F6, F5, F4, D5} -#define MATRIX_COL_PINS { F1, F0, E6, C7, C6, B0, D4, B1, B7, B5, B4, D7, D6, B3} +/* + * 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 { F7, F6, F5, F4, D5 } +#define MATRIX_COL_PINS { F1, F0, E6, C7, C6, B0, D4, B1, B7, B5, B4, D7, D6, B3 } #define UNUSED_PINS -/* COL2ROW or ROW2COL */ +/* COL2ROW, ROW2COL */ #define DIODE_DIRECTION COL2ROW #define LED_CAPS_LOCK_PIN B2 #define LED_PIN_ON_STATE 0 #define BACKLIGHT_PIN B6 +#define BACKLIGHT_LEVELS 4 +#define BACKLIGHT_BREATHING +#define RGB_DI_PIN E2 +#ifdef RGB_DI_PIN +# define RGBLED_NUM 8 +# define RGBLIGHT_HUE_STEP 10 +# define RGBLIGHT_SAT_STEP 17 +# define RGBLIGHT_VAL_STEP 17 +//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +#endif -/* define if matrix has ghost */ -//#define MATRIX_HAS_GHOST - -/* Set 0 if debouncing isn't needed */ +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ #define DEBOUNCE 5 +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + /* 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 -/* Backlight configuration - */ -#define BACKLIGHT_LEVELS 4 - -/* Underlight configuration - */ - -#define RGB_DI_PIN E2 -#define RGBLIGHT_ANIMATIONS -#define RGBLED_NUM 8 // Number of LEDs -#define RGBLIGHT_HUE_STEP 10 -#define RGBLIGHT_SAT_STEP 17 -#define RGBLIGHT_VAL_STEP 17 - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -86,7 +108,11 @@ along with this program. If not, see . //#define NO_ACTION_LAYER //#define NO_ACTION_TAPPING //#define NO_ACTION_ONESHOT -//#define NO_ACTION_MACRO -//#define NO_ACTION_FUNCTION -#endif +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/amj60/info.json b/keyboards/amj60/info.json index dd6a7aef0ddf..2c1781738eeb 100644 --- a/keyboards/amj60/info.json +++ b/keyboards/amj60/info.json @@ -1,27 +1,358 @@ { - "keyboard_name": "AMJ60", - "url": "", - "maintainer": "qmk", - "width": 15, - "height": 5, - "layouts": { - "LAYOUT": { - "layout": [{"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, {"label":"k02", "x":2, "y":0}, {"label":"k03", "x":3, "y":0}, {"label":"k04", "x":4, "y":0}, {"label":"k05", "x":5, "y":0}, {"label":"k06", "x":6, "y":0}, {"label":"k07", "x":7, "y":0}, {"label":"k08", "x":8, "y":0}, {"label":"k09", "x":9, "y":0}, {"label":"k0a", "x":10, "y":0}, {"label":"k0b", "x":11, "y":0}, {"label":"k0c", "x":12, "y":0}, {"label":"k0d", "x":13, "y":0}, {"label":"k49", "x":14, "y":0}, {"label":"k10", "x":0, "y":1, "w":1.5}, {"label":"k11", "x":1.5, "y":1}, {"label":"k12", "x":2.5, "y":1}, {"label":"k13", "x":3.5, "y":1}, {"label":"k14", "x":4.5, "y":1}, {"label":"k15", "x":5.5, "y":1}, {"label":"k16", "x":6.5, "y":1}, {"label":"k17", "x":7.5, "y":1}, {"label":"k18", "x":8.5, "y":1}, {"label":"k19", "x":9.5, "y":1}, {"label":"k1a", "x":10.5, "y":1}, {"label":"k1b", "x":11.5, "y":1}, {"label":"k1c", "x":12.5, "y":1}, {"label":"k1d", "x":13.5, "y":1, "w":1.5}, {"label":"k20", "x":0, "y":2, "w":1.75}, {"label":"k21", "x":1.75, "y":2}, {"label":"k22", "x":2.75, "y":2}, {"label":"k23", "x":3.75, "y":2}, {"label":"k24", "x":4.75, "y":2}, {"label":"k25", "x":5.75, "y":2}, {"label":"k26", "x":6.75, "y":2}, {"label":"k27", "x":7.75, "y":2}, {"label":"k28", "x":8.75, "y":2}, {"label":"k29", "x":9.75, "y":2}, {"label":"k2a", "x":10.75, "y":2}, {"label":"k2b", "x":11.75, "y":2}, {"label":"k2c", "x":12.75, "y":2}, {"label":"k2d", "x":13.75, "y":2, "w":1.25}, {"label":"k30", "x":0, "y":3, "w":1.25}, {"label":"k31", "x":1.25, "y":3}, {"label":"k32", "x":2.25, "y":3}, {"label":"k33", "x":3.25, "y":3}, {"label":"k34", "x":4.25, "y":3}, {"label":"k35", "x":5.25, "y":3}, {"label":"k36", "x":6.25, "y":3}, {"label":"k37", "x":7.25, "y":3}, {"label":"k38", "x":8.25, "y":3}, {"label":"k39", "x":9.25, "y":3}, {"label":"k3a", "x":10.25, "y":3}, {"label":"k3b", "x":11.25, "y":3}, {"label":"k3c", "x":12.25, "y":3, "w":1.75}, {"label":"k3d", "x":14, "y":3}, {"label":"k40", "x":0, "y":4, "w":1.25}, {"label":"k41", "x":1.25, "y":4, "w":1.25}, {"label":"k42", "x":2.5, "y":4, "w":1.25}, {"label":"k45", "x":3.75, "y":4, "w":6.25}, {"label":"k4a", "x":10, "y":4, "w":1.25}, {"label":"k4b", "x":11.25, "y":4, "w":1.25}, {"label":"k4c", "x":12.5, "y":4, "w":1.25}, {"label":"k4d", "x":13.75, "y":4, "w":1.25}] - }, - "LAYOUT_60_ansi": { - "layout": [{"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, {"label":"k02", "x":2, "y":0}, {"label":"k03", "x":3, "y":0}, {"label":"k04", "x":4, "y":0}, {"label":"k05", "x":5, "y":0}, {"label":"k06", "x":6, "y":0}, {"label":"k07", "x":7, "y":0}, {"label":"k08", "x":8, "y":0}, {"label":"k09", "x":9, "y":0}, {"label":"k0a", "x":10, "y":0}, {"label":"k0b", "x":11, "y":0}, {"label":"k0c", "x":12, "y":0}, {"label":"k0d", "x":13, "y":0, "w":2}, {"label":"k10", "x":0, "y":1, "w":1.5}, {"label":"k11", "x":1.5, "y":1}, {"label":"k12", "x":2.5, "y":1}, {"label":"k13", "x":3.5, "y":1}, {"label":"k14", "x":4.5, "y":1}, {"label":"k15", "x":5.5, "y":1}, {"label":"k16", "x":6.5, "y":1}, {"label":"k17", "x":7.5, "y":1}, {"label":"k18", "x":8.5, "y":1}, {"label":"k19", "x":9.5, "y":1}, {"label":"k1a", "x":10.5, "y":1}, {"label":"k1b", "x":11.5, "y":1}, {"label":"k1c", "x":12.5, "y":1}, {"label":"k1d", "x":13.5, "y":1, "w":1.5}, {"label":"k20", "x":0, "y":2, "w":1.75}, {"label":"k21", "x":1.75, "y":2}, {"label":"k22", "x":2.75, "y":2}, {"label":"k23", "x":3.75, "y":2}, {"label":"k24", "x":4.75, "y":2}, {"label":"k25", "x":5.75, "y":2}, {"label":"k26", "x":6.75, "y":2}, {"label":"k27", "x":7.75, "y":2}, {"label":"k28", "x":8.75, "y":2}, {"label":"k29", "x":9.75, "y":2}, {"label":"k2a", "x":10.75, "y":2}, {"label":"k2b", "x":11.75, "y":2}, {"label":"k2d", "x":12.75, "y":2, "w":2.25}, {"label":"k30", "x":0, "y":3, "w":2.25}, {"label":"k32", "x":2.25, "y":3}, {"label":"k33", "x":3.25, "y":3}, {"label":"k34", "x":4.25, "y":3}, {"label":"k35", "x":5.25, "y":3}, {"label":"k36", "x":6.25, "y":3}, {"label":"k37", "x":7.25, "y":3}, {"label":"k38", "x":8.25, "y":3}, {"label":"k39", "x":9.25, "y":3}, {"label":"k3a", "x":10.25, "y":3}, {"label":"k3b", "x":11.25, "y":3}, {"label":"k3d", "x":12.25, "y":3, "w":2.75}, {"label":"k40", "x":0, "y":4, "w":1.25}, {"label":"k41", "x":1.25, "y":4, "w":1.25}, {"label":"k42", "x":2.5, "y":4, "w":1.25}, {"label":"k45", "x":3.75, "y":4, "w":6.25}, {"label":"k4a", "x":10, "y":4, "w":1.25}, {"label":"k4b", "x":11.25, "y":4, "w":1.25}, {"label":"k4c", "x":12.5, "y":4, "w":1.25}, {"label":"k4d", "x":13.75, "y":4, "w":1.25}] - }, - "LAYOUT_hhkb": { - "layout": [{"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, {"label":"k02", "x":2, "y":0}, {"label":"k03", "x":3, "y":0}, {"label":"k04", "x":4, "y":0}, {"label":"k05", "x":5, "y":0}, {"label":"k06", "x":6, "y":0}, {"label":"k07", "x":7, "y":0}, {"label":"k08", "x":8, "y":0}, {"label":"k09", "x":9, "y":0}, {"label":"k0a", "x":10, "y":0}, {"label":"k0b", "x":11, "y":0}, {"label":"k0c", "x":12, "y":0}, {"label":"k0d", "x":13, "y":0}, {"label":"k49", "x":14, "y":0}, {"label":"k10", "x":0, "y":1, "w":1.5}, {"label":"k11", "x":1.5, "y":1}, {"label":"k12", "x":2.5, "y":1}, {"label":"k13", "x":3.5, "y":1}, {"label":"k14", "x":4.5, "y":1}, {"label":"k15", "x":5.5, "y":1}, {"label":"k16", "x":6.5, "y":1}, {"label":"k17", "x":7.5, "y":1}, {"label":"k18", "x":8.5, "y":1}, {"label":"k19", "x":9.5, "y":1}, {"label":"k1a", "x":10.5, "y":1}, {"label":"k1b", "x":11.5, "y":1}, {"label":"k1c", "x":12.5, "y":1}, {"label":"k1d", "x":13.5, "y":1, "w":1.5}, {"label":"k20", "x":0, "y":2, "w":1.75}, {"label":"k21", "x":1.75, "y":2}, {"label":"k22", "x":2.75, "y":2}, {"label":"k23", "x":3.75, "y":2}, {"label":"k24", "x":4.75, "y":2}, {"label":"k25", "x":5.75, "y":2}, {"label":"k26", "x":6.75, "y":2}, {"label":"k27", "x":7.75, "y":2}, {"label":"k28", "x":8.75, "y":2}, {"label":"k29", "x":9.75, "y":2}, {"label":"k2a", "x":10.75, "y":2}, {"label":"k2b", "x":11.75, "y":2}, {"label":"k2d", "x":12.75, "y":2, "w":2.25}, {"label":"k30", "x":0, "y":3, "w":2.25}, {"label":"k32", "x":2.25, "y":3}, {"label":"k33", "x":3.25, "y":3}, {"label":"k34", "x":4.25, "y":3}, {"label":"k35", "x":5.25, "y":3}, {"label":"k36", "x":6.25, "y":3}, {"label":"k37", "x":7.25, "y":3}, {"label":"k38", "x":8.25, "y":3}, {"label":"k39", "x":9.25, "y":3}, {"label":"k3a", "x":10.25, "y":3}, {"label":"k3b", "x":11.25, "y":3}, {"label":"k3d", "x":12.25, "y":3, "w":1.75}, {"label":"k3c", "x":14, "y":3}, {"label":"k40", "x":0, "y":4, "w":1.25}, {"label":"k41", "x":1.25, "y":4, "w":1.25}, {"label":"k42", "x":2.5, "y":4, "w":1.25}, {"label":"k45", "x":3.75, "y":4, "w":6.25}, {"label":"k4a", "x":10, "y":4, "w":1.25}, {"label":"k4b", "x":11.25, "y":4, "w":1.25}, {"label":"k4c", "x":12.5, "y":4, "w":1.25}, {"label":"k4d", "x":13.75, "y":4, "w":1.25}] - }, - "LAYOUT_iso": { - "layout": [{"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, {"label":"k02", "x":2, "y":0}, {"label":"k03", "x":3, "y":0}, {"label":"k04", "x":4, "y":0}, {"label":"k05", "x":5, "y":0}, {"label":"k06", "x":6, "y":0}, {"label":"k07", "x":7, "y":0}, {"label":"k08", "x":8, "y":0}, {"label":"k09", "x":9, "y":0}, {"label":"k0a", "x":10, "y":0}, {"label":"k0b", "x":11, "y":0}, {"label":"k0c", "x":12, "y":0}, {"label":"k0d", "x":13, "y":0, "w":2}, {"label":"k10", "x":0, "y":1, "w":1.5}, {"label":"k11", "x":1.5, "y":1}, {"label":"k12", "x":2.5, "y":1}, {"label":"k13", "x":3.5, "y":1}, {"label":"k14", "x":4.5, "y":1}, {"label":"k15", "x":5.5, "y":1}, {"label":"k16", "x":6.5, "y":1}, {"label":"k17", "x":7.5, "y":1}, {"label":"k18", "x":8.5, "y":1}, {"label":"k19", "x":9.5, "y":1}, {"label":"k1a", "x":10.5, "y":1}, {"label":"k1b", "x":11.5, "y":1}, {"label":"k1c", "x":12.5, "y":1}, {"label":"k1d", "x":13.5, "y":1, "w":1.5}, {"label":"k20", "x":0, "y":2, "w":1.75}, {"label":"k21", "x":1.75, "y":2}, {"label":"k22", "x":2.75, "y":2}, {"label":"k23", "x":3.75, "y":2}, {"label":"k24", "x":4.75, "y":2}, {"label":"k25", "x":5.75, "y":2}, {"label":"k26", "x":6.75, "y":2}, {"label":"k27", "x":7.75, "y":2}, {"label":"k28", "x":8.75, "y":2}, {"label":"k29", "x":9.75, "y":2}, {"label":"k2a", "x":10.75, "y":2}, {"label":"k2b", "x":11.75, "y":2}, {"label":"k2c", "x":12.75, "y":2}, {"label":"k2d", "x":13.75, "y":2, "w":1.25}, {"label":"k30", "x":0, "y":3, "w":1.25}, {"label":"k31", "x":1.25, "y":3}, {"label":"k32", "x":2.25, "y":3}, {"label":"k33", "x":3.25, "y":3}, {"label":"k34", "x":4.25, "y":3}, {"label":"k35", "x":5.25, "y":3}, {"label":"k36", "x":6.25, "y":3}, {"label":"k37", "x":7.25, "y":3}, {"label":"k38", "x":8.25, "y":3}, {"label":"k39", "x":9.25, "y":3}, {"label":"k3a", "x":10.25, "y":3}, {"label":"k3b", "x":11.25, "y":3}, {"label":"k3d", "x":12.25, "y":3, "w":2.75}, {"label":"k40", "x":0, "y":4, "w":1.25}, {"label":"k41", "x":1.25, "y":4, "w":1.25}, {"label":"k42", "x":2.5, "y":4, "w":1.25}, {"label":"k45", "x":3.75, "y":4, "w":6.25}, {"label":"k4a", "x":10, "y":4, "w":1.25}, {"label":"k4b", "x":11.25, "y":4, "w":1.25}, {"label":"k4c", "x":12.5, "y":4, "w":1.25}, {"label":"k4d", "x":13.75, "y":4, "w":1.25}] - }, - "LAYOUT_iso_splitrshift": { - "layout": [{"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, {"label":"k02", "x":2, "y":0}, {"label":"k03", "x":3, "y":0}, {"label":"k04", "x":4, "y":0}, {"label":"k05", "x":5, "y":0}, {"label":"k06", "x":6, "y":0}, {"label":"k07", "x":7, "y":0}, {"label":"k08", "x":8, "y":0}, {"label":"k09", "x":9, "y":0}, {"label":"k0a", "x":10, "y":0}, {"label":"k0b", "x":11, "y":0}, {"label":"k0c", "x":12, "y":0}, {"label":"k0d", "x":13, "y":0, "w":2}, {"label":"k10", "x":0, "y":1, "w":1.5}, {"label":"k11", "x":1.5, "y":1}, {"label":"k12", "x":2.5, "y":1}, {"label":"k13", "x":3.5, "y":1}, {"label":"k14", "x":4.5, "y":1}, {"label":"k15", "x":5.5, "y":1}, {"label":"k16", "x":6.5, "y":1}, {"label":"k17", "x":7.5, "y":1}, {"label":"k18", "x":8.5, "y":1}, {"label":"k19", "x":9.5, "y":1}, {"label":"k1a", "x":10.5, "y":1}, {"label":"k1b", "x":11.5, "y":1}, {"label":"k1c", "x":12.5, "y":1}, {"label":"k1d", "x":13.5, "y":1, "w":1.5}, {"label":"k20", "x":0, "y":2, "w":1.75}, {"label":"k21", "x":1.75, "y":2}, {"label":"k22", "x":2.75, "y":2}, {"label":"k23", "x":3.75, "y":2}, {"label":"k24", "x":4.75, "y":2}, {"label":"k25", "x":5.75, "y":2}, {"label":"k26", "x":6.75, "y":2}, {"label":"k27", "x":7.75, "y":2}, {"label":"k28", "x":8.75, "y":2}, {"label":"k29", "x":9.75, "y":2}, {"label":"k2a", "x":10.75, "y":2}, {"label":"k2b", "x":11.75, "y":2}, {"label":"k2c", "x":12.75, "y":2}, {"label":"k2d", "x":13.75, "y":2, "w":1.25}, {"label":"k30", "x":0, "y":3, "w":1.25}, {"label":"k31", "x":1.25, "y":3}, {"label":"k32", "x":2.25, "y":3}, {"label":"k33", "x":3.25, "y":3}, {"label":"k34", "x":4.25, "y":3}, {"label":"k35", "x":5.25, "y":3}, {"label":"k36", "x":6.25, "y":3}, {"label":"k37", "x":7.25, "y":3}, {"label":"k38", "x":8.25, "y":3}, {"label":"k39", "x":9.25, "y":3}, {"label":"k3a", "x":10.25, "y":3}, {"label":"k3b", "x":11.25, "y":3}, {"label":"k3d", "x":12.25, "y":3, "w":1.75}, {"label":"k3c", "x":14, "y":3}, {"label":"k40", "x":0, "y":4, "w":1.25}, {"label":"k41", "x":1.25, "y":4, "w":1.25}, {"label":"k42", "x":2.5, "y":4, "w":1.25}, {"label":"k45", "x":3.75, "y":4, "w":6.25}, {"label":"k4a", "x":10, "y":4, "w":1.25}, {"label":"k4b", "x":11.25, "y":4, "w":1.25}, {"label":"k4c", "x":12.5, "y":4, "w":1.25}, {"label":"k4d", "x":13.75, "y":4, "w":1.25}] - }, - "LAYOUT_max": { - "layout": [{"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, {"label":"k02", "x":2, "y":0}, {"label":"k03", "x":3, "y":0}, {"label":"k04", "x":4, "y":0}, {"label":"k05", "x":5, "y":0}, {"label":"k06", "x":6, "y":0}, {"label":"k07", "x":7, "y":0}, {"label":"k08", "x":8, "y":0}, {"label":"k09", "x":9, "y":0}, {"label":"k0a", "x":10, "y":0}, {"label":"k0b", "x":11, "y":0}, {"label":"k0c", "x":12, "y":0}, {"label":"k0d", "x":13, "y":0}, {"label":"k49", "x":14, "y":0}, {"label":"k10", "x":0, "y":1, "w":1.5}, {"label":"k11", "x":1.5, "y":1}, {"label":"k12", "x":2.5, "y":1}, {"label":"k13", "x":3.5, "y":1}, {"label":"k14", "x":4.5, "y":1}, {"label":"k15", "x":5.5, "y":1}, {"label":"k16", "x":6.5, "y":1}, {"label":"k17", "x":7.5, "y":1}, {"label":"k18", "x":8.5, "y":1}, {"label":"k19", "x":9.5, "y":1}, {"label":"k1a", "x":10.5, "y":1}, {"label":"k1b", "x":11.5, "y":1}, {"label":"k1c", "x":12.5, "y":1}, {"label":"k1d", "x":13.5, "y":1, "w":1.5}, {"label":"k20", "x":0, "y":2, "w":1.75}, {"label":"k21", "x":1.75, "y":2}, {"label":"k22", "x":2.75, "y":2}, {"label":"k23", "x":3.75, "y":2}, {"label":"k24", "x":4.75, "y":2}, {"label":"k25", "x":5.75, "y":2}, {"label":"k26", "x":6.75, "y":2}, {"label":"k27", "x":7.75, "y":2}, {"label":"k28", "x":8.75, "y":2}, {"label":"k29", "x":9.75, "y":2}, {"label":"k2a", "x":10.75, "y":2}, {"label":"k2b", "x":11.75, "y":2}, {"label":"k2d", "x":12.75, "y":2, "w":2.25}, {"label":"k30", "x":0, "y":3, "w":1.25}, {"label":"k31", "x":1.25, "y":3}, {"label":"k32", "x":2.25, "y":3}, {"label":"k33", "x":3.25, "y":3}, {"label":"k34", "x":4.25, "y":3}, {"label":"k35", "x":5.25, "y":3}, {"label":"k36", "x":6.25, "y":3}, {"label":"k37", "x":7.25, "y":3}, {"label":"k38", "x":8.25, "y":3}, {"label":"k39", "x":9.25, "y":3}, {"label":"k3a", "x":10.25, "y":3}, {"label":"k3b", "x":11.25, "y":3}, {"label":"k3d", "x":12.25, "y":3, "w":1.75}, {"label":"k3c", "x":14, "y":3}, {"label":"k40", "x":0, "y":4, "w":1.25}, {"label":"k41", "x":1.25, "y":4, "w":1.25}, {"label":"k42", "x":2.5, "y":4, "w":1.25}, {"label":"k45", "x":3.75, "y":4, "w":6.25}, {"label":"k4a", "x":10, "y":4, "w":1.25}, {"label":"k4b", "x":11.25, "y":4, "w":1.25}, {"label":"k4c", "x":12.5, "y":4, "w":1.25}, {"label":"k4d", "x":13.75, "y":4, "w":1.25}] + "keyboard_name": "AMJ60", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"k00", "x":0, "y":0}, + {"label":"k01", "x":1, "y":0}, + {"label":"k02", "x":2, "y":0}, + {"label":"k03", "x":3, "y":0}, + {"label":"k04", "x":4, "y":0}, + {"label":"k05", "x":5, "y":0}, + {"label":"k06", "x":6, "y":0}, + {"label":"k07", "x":7, "y":0}, + {"label":"k08", "x":8, "y":0}, + {"label":"k09", "x":9, "y":0}, + {"label":"k0a", "x":10, "y":0}, + {"label":"k0b", "x":11, "y":0}, + {"label":"k0c", "x":12, "y":0}, + {"label":"k0d", "x":13, "y":0}, + {"label":"k49", "x":14, "y":0}, + + {"label":"k10", "x":0, "y":1, "w":1.5}, + {"label":"k11", "x":1.5, "y":1}, + {"label":"k12", "x":2.5, "y":1}, + {"label":"k13", "x":3.5, "y":1}, + {"label":"k14", "x":4.5, "y":1}, + {"label":"k15", "x":5.5, "y":1}, + {"label":"k16", "x":6.5, "y":1}, + {"label":"k17", "x":7.5, "y":1}, + {"label":"k18", "x":8.5, "y":1}, + {"label":"k19", "x":9.5, "y":1}, + {"label":"k1a", "x":10.5, "y":1}, + {"label":"k1b", "x":11.5, "y":1}, + {"label":"k1c", "x":12.5, "y":1}, + {"label":"k1d", "x":13.5, "y":1, "w":1.5}, + + {"label":"k20", "x":0, "y":2, "w":1.75}, + {"label":"k21", "x":1.75, "y":2}, + {"label":"k22", "x":2.75, "y":2}, + {"label":"k23", "x":3.75, "y":2}, + {"label":"k24", "x":4.75, "y":2}, + {"label":"k25", "x":5.75, "y":2}, + {"label":"k26", "x":6.75, "y":2}, + {"label":"k27", "x":7.75, "y":2}, + {"label":"k28", "x":8.75, "y":2}, + {"label":"k29", "x":9.75, "y":2}, + {"label":"k2a", "x":10.75, "y":2}, + {"label":"k2b", "x":11.75, "y":2}, + {"label":"k2c", "x":12.75, "y":2}, + {"label":"k2d", "x":13.75, "y":2, "w":1.25}, + + {"label":"k30", "x":0, "y":3, "w":1.25}, + {"label":"k31", "x":1.25, "y":3}, + {"label":"k32", "x":2.25, "y":3}, + {"label":"k33", "x":3.25, "y":3}, + {"label":"k34", "x":4.25, "y":3}, + {"label":"k35", "x":5.25, "y":3}, + {"label":"k36", "x":6.25, "y":3}, + {"label":"k37", "x":7.25, "y":3}, + {"label":"k38", "x":8.25, "y":3}, + {"label":"k39", "x":9.25, "y":3}, + {"label":"k3a", "x":10.25, "y":3}, + {"label":"k3b", "x":11.25, "y":3}, + {"label":"k3d", "x":12.25, "y":3, "w":1.75}, + {"label":"k3c", "x":14, "y":3}, + + {"label":"k40", "x":0, "y":4, "w":1.25}, + {"label":"k41", "x":1.25, "y":4, "w":1.25}, + {"label":"k42", "x":2.5, "y":4, "w":1.25}, + {"label":"k45", "x":3.75, "y":4, "w":6.25}, + {"label":"k4a", "x":10, "y":4, "w":1.25}, + {"label":"k4b", "x":11.25, "y":4, "w":1.25}, + {"label":"k4c", "x":12.5, "y":4, "w":1.25}, + {"label":"k4d", "x":13.75, "y":4, "w":1.25} + ] + }, + "LAYOUT_60_ansi": { + "layout": [ + {"label":"k00", "x":0, "y":0}, + {"label":"k01", "x":1, "y":0}, + {"label":"k02", "x":2, "y":0}, + {"label":"k03", "x":3, "y":0}, + {"label":"k04", "x":4, "y":0}, + {"label":"k05", "x":5, "y":0}, + {"label":"k06", "x":6, "y":0}, + {"label":"k07", "x":7, "y":0}, + {"label":"k08", "x":8, "y":0}, + {"label":"k09", "x":9, "y":0}, + {"label":"k0a", "x":10, "y":0}, + {"label":"k0b", "x":11, "y":0}, + {"label":"k0c", "x":12, "y":0}, + {"label":"k0d", "x":13, "y":0, "w":2}, + + {"label":"k10", "x":0, "y":1, "w":1.5}, + {"label":"k11", "x":1.5, "y":1}, + {"label":"k12", "x":2.5, "y":1}, + {"label":"k13", "x":3.5, "y":1}, + {"label":"k14", "x":4.5, "y":1}, + {"label":"k15", "x":5.5, "y":1}, + {"label":"k16", "x":6.5, "y":1}, + {"label":"k17", "x":7.5, "y":1}, + {"label":"k18", "x":8.5, "y":1}, + {"label":"k19", "x":9.5, "y":1}, + {"label":"k1a", "x":10.5, "y":1}, + {"label":"k1b", "x":11.5, "y":1}, + {"label":"k1c", "x":12.5, "y":1}, + {"label":"k1d", "x":13.5, "y":1, "w":1.5}, + + {"label":"k20", "x":0, "y":2, "w":1.75}, + {"label":"k21", "x":1.75, "y":2}, + {"label":"k22", "x":2.75, "y":2}, + {"label":"k23", "x":3.75, "y":2}, + {"label":"k24", "x":4.75, "y":2}, + {"label":"k25", "x":5.75, "y":2}, + {"label":"k26", "x":6.75, "y":2}, + {"label":"k27", "x":7.75, "y":2}, + {"label":"k28", "x":8.75, "y":2}, + {"label":"k29", "x":9.75, "y":2}, + {"label":"k2a", "x":10.75, "y":2}, + {"label":"k2b", "x":11.75, "y":2}, + {"label":"k2d", "x":12.75, "y":2, "w":2.25}, + + {"label":"k30", "x":0, "y":3, "w":2.25}, + {"label":"k32", "x":2.25, "y":3}, + {"label":"k33", "x":3.25, "y":3}, + {"label":"k34", "x":4.25, "y":3}, + {"label":"k35", "x":5.25, "y":3}, + {"label":"k36", "x":6.25, "y":3}, + {"label":"k37", "x":7.25, "y":3}, + {"label":"k38", "x":8.25, "y":3}, + {"label":"k39", "x":9.25, "y":3}, + {"label":"k3a", "x":10.25, "y":3}, + {"label":"k3b", "x":11.25, "y":3}, + {"label":"k3d", "x":12.25, "y":3, "w":2.75}, + + {"label":"k40", "x":0, "y":4, "w":1.25}, + {"label":"k41", "x":1.25, "y":4, "w":1.25}, + {"label":"k42", "x":2.5, "y":4, "w":1.25}, + {"label":"k45", "x":3.75, "y":4, "w":6.25}, + {"label":"k4a", "x":10, "y":4, "w":1.25}, + {"label":"k4b", "x":11.25, "y":4, "w":1.25}, + {"label":"k4c", "x":12.5, "y":4, "w":1.25}, + {"label":"k4d", "x":13.75, "y":4, "w":1.25} + ] + }, + "LAYOUT_60_hhkb": { + "layout": [ + {"label":"k00", "x":0, "y":0}, + {"label":"k01", "x":1, "y":0}, + {"label":"k02", "x":2, "y":0}, + {"label":"k03", "x":3, "y":0}, + {"label":"k04", "x":4, "y":0}, + {"label":"k05", "x":5, "y":0}, + {"label":"k06", "x":6, "y":0}, + {"label":"k07", "x":7, "y":0}, + {"label":"k08", "x":8, "y":0}, + {"label":"k09", "x":9, "y":0}, + {"label":"k0a", "x":10, "y":0}, + {"label":"k0b", "x":11, "y":0}, + {"label":"k0c", "x":12, "y":0}, + {"label":"k0d", "x":13, "y":0}, + {"label":"k49", "x":14, "y":0}, + + {"label":"k10", "x":0, "y":1, "w":1.5}, + {"label":"k11", "x":1.5, "y":1}, + {"label":"k12", "x":2.5, "y":1}, + {"label":"k13", "x":3.5, "y":1}, + {"label":"k14", "x":4.5, "y":1}, + {"label":"k15", "x":5.5, "y":1}, + {"label":"k16", "x":6.5, "y":1}, + {"label":"k17", "x":7.5, "y":1}, + {"label":"k18", "x":8.5, "y":1}, + {"label":"k19", "x":9.5, "y":1}, + {"label":"k1a", "x":10.5, "y":1}, + {"label":"k1b", "x":11.5, "y":1}, + {"label":"k1c", "x":12.5, "y":1}, + {"label":"k1d", "x":13.5, "y":1, "w":1.5}, + + {"label":"k20", "x":0, "y":2, "w":1.75}, + {"label":"k21", "x":1.75, "y":2}, + {"label":"k22", "x":2.75, "y":2}, + {"label":"k23", "x":3.75, "y":2}, + {"label":"k24", "x":4.75, "y":2}, + {"label":"k25", "x":5.75, "y":2}, + {"label":"k26", "x":6.75, "y":2}, + {"label":"k27", "x":7.75, "y":2}, + {"label":"k28", "x":8.75, "y":2}, + {"label":"k29", "x":9.75, "y":2}, + {"label":"k2a", "x":10.75, "y":2}, + {"label":"k2b", "x":11.75, "y":2}, + {"label":"k2d", "x":12.75, "y":2, "w":2.25}, + + {"label":"k30", "x":0, "y":3, "w":2.25}, + {"label":"k32", "x":2.25, "y":3}, + {"label":"k33", "x":3.25, "y":3}, + {"label":"k34", "x":4.25, "y":3}, + {"label":"k35", "x":5.25, "y":3}, + {"label":"k36", "x":6.25, "y":3}, + {"label":"k37", "x":7.25, "y":3}, + {"label":"k38", "x":8.25, "y":3}, + {"label":"k39", "x":9.25, "y":3}, + {"label":"k3a", "x":10.25, "y":3}, + {"label":"k3b", "x":11.25, "y":3}, + {"label":"k3d", "x":12.25, "y":3, "w":1.75}, + {"label":"k3c", "x":14, "y":3}, + + {"label":"k41", "x":1.5, "y":4}, + {"label":"k42", "x":2.5, "y":4, "w":1.5}, + {"label":"k45", "x":4, "y":4, "w":7}, + {"label":"k4b", "x":11, "y":4, "w":1.5}, + {"label":"k4c", "x":12.5, "y":4} + ] + }, + "LAYOUT_60_iso": { + "layout": [ + {"label":"k00", "x":0, "y":0}, + {"label":"k01", "x":1, "y":0}, + {"label":"k02", "x":2, "y":0}, + {"label":"k03", "x":3, "y":0}, + {"label":"k04", "x":4, "y":0}, + {"label":"k05", "x":5, "y":0}, + {"label":"k06", "x":6, "y":0}, + {"label":"k07", "x":7, "y":0}, + {"label":"k08", "x":8, "y":0}, + {"label":"k09", "x":9, "y":0}, + {"label":"k0a", "x":10, "y":0}, + {"label":"k0b", "x":11, "y":0}, + {"label":"k0c", "x":12, "y":0}, + {"label":"k0d", "x":13, "y":0, "w":2}, + + {"label":"k10", "x":0, "y":1, "w":1.5}, + {"label":"k11", "x":1.5, "y":1}, + {"label":"k12", "x":2.5, "y":1}, + {"label":"k13", "x":3.5, "y":1}, + {"label":"k14", "x":4.5, "y":1}, + {"label":"k15", "x":5.5, "y":1}, + {"label":"k16", "x":6.5, "y":1}, + {"label":"k17", "x":7.5, "y":1}, + {"label":"k18", "x":8.5, "y":1}, + {"label":"k19", "x":9.5, "y":1}, + {"label":"k1a", "x":10.5, "y":1}, + {"label":"k1b", "x":11.5, "y":1}, + {"label":"k1c", "x":12.5, "y":1}, + + {"label":"k20", "x":0, "y":2, "w":1.75}, + {"label":"k21", "x":1.75, "y":2}, + {"label":"k22", "x":2.75, "y":2}, + {"label":"k23", "x":3.75, "y":2}, + {"label":"k24", "x":4.75, "y":2}, + {"label":"k25", "x":5.75, "y":2}, + {"label":"k26", "x":6.75, "y":2}, + {"label":"k27", "x":7.75, "y":2}, + {"label":"k28", "x":8.75, "y":2}, + {"label":"k29", "x":9.75, "y":2}, + {"label":"k2a", "x":10.75, "y":2}, + {"label":"k2b", "x":11.75, "y":2}, + {"label":"k2c", "x":12.75, "y":2}, + {"label":"k2d", "x":13.75, "y":1, "w":1.25, "h":2}, + + {"label":"k30", "x":0, "y":3, "w":1.25}, + {"label":"k31", "x":1.25, "y":3}, + {"label":"k32", "x":2.25, "y":3}, + {"label":"k33", "x":3.25, "y":3}, + {"label":"k34", "x":4.25, "y":3}, + {"label":"k35", "x":5.25, "y":3}, + {"label":"k36", "x":6.25, "y":3}, + {"label":"k37", "x":7.25, "y":3}, + {"label":"k38", "x":8.25, "y":3}, + {"label":"k39", "x":9.25, "y":3}, + {"label":"k3a", "x":10.25, "y":3}, + {"label":"k3b", "x":11.25, "y":3}, + {"label":"k3d", "x":12.25, "y":3, "w":2.75}, + + {"label":"k40", "x":0, "y":4, "w":1.25}, + {"label":"k41", "x":1.25, "y":4, "w":1.25}, + {"label":"k42", "x":2.5, "y":4, "w":1.25}, + {"label":"k45", "x":3.75, "y":4, "w":6.25}, + {"label":"k4a", "x":10, "y":4, "w":1.25}, + {"label":"k4b", "x":11.25, "y":4, "w":1.25}, + {"label":"k4c", "x":12.5, "y":4, "w":1.25}, + {"label":"k4d", "x":13.75, "y":4, "w":1.25} + ] + }, + "LAYOUT_60_ansi_split_bs_rshift": { + "layout": [ + {"label":"k00", "x":0, "y":0}, + {"label":"k01", "x":1, "y":0}, + {"label":"k02", "x":2, "y":0}, + {"label":"k03", "x":3, "y":0}, + {"label":"k04", "x":4, "y":0}, + {"label":"k05", "x":5, "y":0}, + {"label":"k06", "x":6, "y":0}, + {"label":"k07", "x":7, "y":0}, + {"label":"k08", "x":8, "y":0}, + {"label":"k09", "x":9, "y":0}, + {"label":"k0a", "x":10, "y":0}, + {"label":"k0b", "x":11, "y":0}, + {"label":"k0c", "x":12, "y":0}, + {"label":"k0d", "x":13, "y":0}, + {"label":"k49", "x":14, "y":0}, + + {"label":"k10", "x":0, "y":1, "w":1.5}, + {"label":"k11", "x":1.5, "y":1}, + {"label":"k12", "x":2.5, "y":1}, + {"label":"k13", "x":3.5, "y":1}, + {"label":"k14", "x":4.5, "y":1}, + {"label":"k15", "x":5.5, "y":1}, + {"label":"k16", "x":6.5, "y":1}, + {"label":"k17", "x":7.5, "y":1}, + {"label":"k18", "x":8.5, "y":1}, + {"label":"k19", "x":9.5, "y":1}, + {"label":"k1a", "x":10.5, "y":1}, + {"label":"k1b", "x":11.5, "y":1}, + {"label":"k1c", "x":12.5, "y":1}, + {"label":"k1d", "x":13.5, "y":1, "w":1.5}, + + {"label":"k20", "x":0, "y":2, "w":1.75}, + {"label":"k21", "x":1.75, "y":2}, + {"label":"k22", "x":2.75, "y":2}, + {"label":"k23", "x":3.75, "y":2}, + {"label":"k24", "x":4.75, "y":2}, + {"label":"k25", "x":5.75, "y":2}, + {"label":"k26", "x":6.75, "y":2}, + {"label":"k27", "x":7.75, "y":2}, + {"label":"k28", "x":8.75, "y":2}, + {"label":"k29", "x":9.75, "y":2}, + {"label":"k2a", "x":10.75, "y":2}, + {"label":"k2b", "x":11.75, "y":2}, + {"label":"k2d", "x":12.75, "y":2, "w":2.25}, + + {"label":"k30", "x":0, "y":3, "w":2.25}, + {"label":"k32", "x":2.25, "y":3}, + {"label":"k33", "x":3.25, "y":3}, + {"label":"k34", "x":4.25, "y":3}, + {"label":"k35", "x":5.25, "y":3}, + {"label":"k36", "x":6.25, "y":3}, + {"label":"k37", "x":7.25, "y":3}, + {"label":"k38", "x":8.25, "y":3}, + {"label":"k39", "x":9.25, "y":3}, + {"label":"k3a", "x":10.25, "y":3}, + {"label":"k3b", "x":11.25, "y":3}, + {"label":"k3d", "x":12.25, "y":3, "w":1.75}, + {"label":"k3c", "x":14, "y":3}, + + {"label":"k40", "x":0, "y":4, "w":1.25}, + {"label":"k41", "x":1.25, "y":4, "w":1.25}, + {"label":"k42", "x":2.5, "y":4, "w":1.25}, + {"label":"k45", "x":3.75, "y":4, "w":6.25}, + {"label":"k4a", "x":10, "y":4, "w":1.25}, + {"label":"k4b", "x":11.25, "y":4, "w":1.25}, + {"label":"k4c", "x":12.5, "y":4, "w":1.25}, + {"label":"k4d", "x":13.75, "y":4, "w":1.25} + ] + } } - } } diff --git a/keyboards/amj60/keymaps/default/keymap.c b/keyboards/amj60/keymaps/default/keymap.c index c5dc25018c8c..6a0a394f54e5 100644 --- a/keyboards/amj60/keymaps/default/keymap.c +++ b/keyboards/amj60/keymaps/default/keymap.c @@ -1,55 +1,72 @@ +/* Copyright 2016 Toni (@toneman77) + * 2021 James Young for QMK (@noroadsleft) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ #include QMK_KEYBOARD_H -// Each layer gets a name for readability, which is then used in the keymap matrix below. -// The underscores don't mean anything - you can have a layer called STUFF or any other name. -// Layer names don't all need to be of the same length, obviously, and you can also skip them -// entirely and just use numbers. -#define _DEF 0 -#define _SPC 1 +enum layer_names { + _DEF, + _FN, +}; // dual-role shortcuts -#define SPACEDUAL LT(_SPC, KC_SPACE) +#define FN_SPC LT(_FN, KC_SPC) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _DEF: Default Layer * ,-----------------------------------------------------------. - * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \ | ~ | + * |Esc| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ~ | * |-----------------------------------------------------------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| bspc| + * |Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Bspc| * |-----------------------------------------------------------| - * |Caps | A| S| D| F| G| H| J| K| L| ;| '| Return | + * |Caps | A | S | D | F | G | H | J | K | L | ; | ' | Return | * |-----------------------------------------------------------| - * |Sft | Fn0| Z| X| C| V| B| N| M| ,| .| /| Sft |Fn2| + * |Sft | \ | Z | X | C | V | B | N | M | , | . | / |Shift |Fn | * |-----------------------------------------------------------| - * |Ctrl|Win |Alt | Space/Fn0 |Alt |Win |Menu|RCtl| + * |Ctrl|GUI |Alt | Space/Fn |Alt |GUI | Fn |RCtl| * `-----------------------------------------------------------' */ - [_DEF] = LAYOUT_max( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, \ - 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \ - KC_LSFT, F(0), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, F(1), \ - KC_LCTL, KC_LALT, KC_LGUI, SPACEDUAL, KC_RGUI, KC_RALT, KC_RCTL, F(2)), + [_DEF] = 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_BSLS, KC_GRV, + 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, FN_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL + ), /* Keymap 1: F-and-vim Layer, modified with Space (by holding space) * ,-----------------------------------------------------------. - * |PrSc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| | | + * |PSc|F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12| | | * |-----------------------------------------------------------| - * | |Paus| Up| [ | ] | | | | ( | ) | | | | Del | + * | |Pau| Up| | | | | | ( | ) | | | | Del | * |-----------------------------------------------------------| - * | |Lft|Dwn|Rgt| | |Left|Down|Right|Up| | | PLAY | + * | |Lft|Dwn|Rgt| | |Lft|Dwn|Up |Rgh| | | Play | * |-----------------------------------------------------------| - * | | | | | < | > | |M0 | | | | | Vol+ | | + * | | | | | | |Spc| | | | | | Vol+ | | * |-----------------------------------------------------------| - * | | | | |Alt |Prev|Vol-|Next| + * | | | | | |Prev|Vol-|Next| * `-----------------------------------------------------------' */ - [_SPC] = LAYOUT_max( - KC_PSCR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, \ - _______, KC_PAUS, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \ - _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, KC_MPLY, \ - _______, _______, _______, _______, _______, _______, KC_SPACE, M(0), _______, _______, _______, _______, KC_VOLU, _______, \ - _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT), + [_FN] = LAYOUT_all( + KC_PSCR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, + _______, KC_PAUS, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, KC_MPLY, + _______, _______, _______, _______, _______, _______, KC_SPC, _______, _______, _______, _______, _______, KC_VOLU, _______, + _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT + ), }; diff --git a/keyboards/amj60/keymaps/iso_split_rshift/build.sh b/keyboards/amj60/keymaps/iso_split_rshift/build.sh deleted file mode 100755 index 6b4b4568f54d..000000000000 --- a/keyboards/amj60/keymaps/iso_split_rshift/build.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/bash -# adjust for cpu -# -j 16 gave best result on a hyperthreaded quad core core i7 - -LIMIT=10 -THREADS="-j 16" -KMAP=iso_split_rshift - -echo "We need sudo later" -sudo ls 2>&1 /dev/null - -function wait_bootloader { - echo "Waiting for Bootloader..." - local STARTTIME=$(date +"%s") - local REMIND=0 - local EXEC=dfu-programmer - local TARGET=atmega32u4 - while true - do - sudo $EXEC $TARGET get > /dev/null 2>&1 - [ $? -eq 0 ] && break - ENDTIME=$(date +"%s") - DURATION=$(($ENDTIME-$STARTTIME)) - if [ $REMIND -eq 0 -a $DURATION -gt $LIMIT ] - then - echo "Did you forget to press the reset button?" - REMIND=1 - fi - sleep 1 - done -} -make clean -make KEYMAP=${KMAP} ${THREADS} -if [[ $? -eq 0 ]] -then - echo "please trigger flashing!" - wait_bootloader - sudo make KEYMAP=${KMAP} dfu ${THREADS} -else - echo "make failed" - exit 77 -fi diff --git a/keyboards/amj60/keymaps/iso_split_rshift/keymap.c b/keyboards/amj60/keymaps/iso_split_rshift/keymap.c deleted file mode 100644 index 4fbf87c65259..000000000000 --- a/keyboards/amj60/keymaps/iso_split_rshift/keymap.c +++ /dev/null @@ -1,113 +0,0 @@ - -#include QMK_KEYBOARD_H - -// Each layer gets a name for readability, which is then used in the keymap matrix below. -// The underscores don't mean anything - you can have a layer called STUFF or any other name. -// Layer names don't all need to be of the same length, obviously, and you can also skip them -// entirely and just use numbers. -#define _DEF 0 -#define _SPC 1 -#define _TAB 2 -#define _SFX 3 - -// dual-role shortcuts -#define TABDUAL LT(_TAB, KC_TAB) -#define CAPSDUAL CTL_T(KC_ESC) -#define SPACEDUAL LT(_SPC, KC_SPACE) -#define ENTERDUAL CTL_T(KC_ENT) -// arrow cluster duality bottom right corner -#define ARRLEFT ALT_T(KC_LEFT) -#define ARRDOWN GUI_T(KC_DOWN) -#define ARRUP SFT_T(KC_UP) -#define ARRRIGHT CTL_T(KC_RIGHT) -// german brackets -#define GER_CUR_L RALT(KC_7) // [ -#define GER_CUR_R RALT(KC_0) // ] -#define GER_PAR_L LSFT(KC_8) // ( -#define GER_PAR_R LSFT(KC_9) // ) -#define GER_ANG_L KC_NUBS // < -#define GER_ANG_R LSFT(KC_NUBS) // > -#define GER_BRC_L RALT(KC_8) // [ -#define GER_BRC_R RALT(KC_9) // ] - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Keymap _DEF: Default Layer - * ,-----------------------------------------------------------. - * |Grv| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | - * |-----------------------------------------------------------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | Tab is Fn1 - * |-----------------------------------------------------------| - * |Ctrl | A| S| D| F| G| H| J| K| L| ;| '| Return | - * |-----------------------------------------------------------| - * |Sft | < | Z| X| C| V| B| N| M| ,| .| /|Shift |Fn2| RShift is UP - * |-----------------------------------------------------------| - * |Ctrl|Win |Alt | Space/Fn0 |Alt |Win |Menu|RCtl| Gui Menu, RCtrl is - * `-----------------------------------------------------------' LEFT DWN RIGHT - */ - [_DEF] = LAYOUT_iso_splitrshift( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \ - TABDUAL, 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, \ - CAPSDUAL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, ENTERDUAL, \ - KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, ARRUP, TG(_SFX), \ - KC_LCTL, KC_LGUI, KC_LALT, SPACEDUAL, KC_RALT, ARRLEFT, ARRDOWN, ARRRIGHT), - - /* Keymap 1: F-and-vim Layer, modified with Space (by holding space) - * ,-----------------------------------------------------------. - * |PrSc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete| - * |-----------------------------------------------------------| - * | |Paus| Up| [ | ] | | | | ( | ) | | | | | - * |-----------------------------------------------------------| - * | |Lft|Dwn|Rgt| | |Left|Down|Right|Up| | | PLAY | - * |-----------------------------------------------------------| - * | | | | | < | > | |M0 | | | | | Vol+ | | - * |-----------------------------------------------------------| - * | | | | |Alt |Prev|Vol-|Next| - * `-----------------------------------------------------------' - */ - [_SPC] = LAYOUT_iso_splitrshift( - KC_PSCR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \ - _______, KC_PAUS, KC_UP, GER_BRC_L, GER_BRC_R, _______, _______, GER_PAR_L, GER_PAR_R, _______, _______, _______, _______, _______, \ - _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, KC_MPLY, \ - _______, _______, _______, _______, GER_ANG_L, GER_ANG_R, KC_SPACE, RALT(KC_SPC),_______, _______, _______, _______, KC_VOLU, _______, \ - _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT), - - /* Keymap 2: Tab Layer w/ vim pageup, modified with Tab (by holding tab) - * ,-----------------------------------------------------------. - * |WAKE| | | | | | | | | | | | |Insert| TAB+GRC = WAKE - * |-----------------------------------------------------------| - * | | | | | | | | | { | } | | | | | - * |-----------------------------------------------------------| - * | | | | | | |Pos1|PgDn|PgUp|End| | |Retrn | - * |-----------------------------------------------------------| - * | | | | | | | |AF2| | | | | PgUp | | - * |-----------------------------------------------------------| - * | | | | |Alt |Pos1|PgDn|End | - * `-----------------------------------------------------------' - */ - [_TAB] = LAYOUT_iso_splitrshift( - KC_WAKE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, \ - _______, _______, _______, _______, _______, _______, _______, GER_CUR_L, GER_CUR_R, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______, _______, KC_ENT, \ - _______, _______, _______, _______, _______, _______, _______, A(KC_F2), _______, _______, _______, _______, KC_PGUP, _______, \ - _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END), - - /* Keymap 3: Split right shift Numpad toggle Layer (by tapping the split rshift key) - * ,-----------------------------------------------------------. - * |RSET| | | | | | | 7| 8| 9| | | |Backsp | - * |-----------------------------------------------------------| - * | | | | | | | | 4 | 5 | 6 | | | | \ | - * |-----------------------------------------------------------| - * | | L | L | | | | | 1 | 2 | 3 | | | Return | - * |-----------------------------------------------------------| - * | | | L | L | L | L | L | L | | 0 | | /| Up | | All "L"s represent - * |-----------------------------------------------------------| LED controlling - * |Ctrl|Win |Alt | |Alt |Left|Down|Right| - * `-----------------------------------------------------------' - */ - [_SFX] = LAYOUT_iso_splitrshift( - RESET, _______, _______, _______, _______, _______, _______, KC_7, KC_8, KC_9, _______, _______, _______, KC_BSPC, \ - _______, _______, _______, _______, _______, _______, _______, KC_4, KC_5, KC_6, _______, _______, _______, KC_BSLS, \ - _______, _______, _______, _______, _______, _______, _______, KC_1, KC_2, KC_3, _______, _______, XXXXXXX, KC_ENT, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_0, _______, KC_SLSH, KC_UP, _______, \ - _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT), -}; diff --git a/keyboards/amj60/keymaps/iso_split_rshift/readme.md b/keyboards/amj60/keymaps/iso_split_rshift/readme.md deleted file mode 100644 index 2113d93e4d50..000000000000 --- a/keyboards/amj60/keymaps/iso_split_rshift/readme.md +++ /dev/null @@ -1,30 +0,0 @@ -toneman77's custom spacefn Layout -===================== - -##Quantum MK Firmware -For the full Quantum feature list, see the parent readme.md. - -# Features -* heavily modified ISO (!) layout with split right shift key -* spaceFn -* Dual-Role keys: -* - | Original key | when tapped | when held | - | ---------------- | ------------- | ------------- | - | Space | Space | layer change | - | Caps lock | Escape | Control | - | Tab | Tab | layer change | - | Enter | Enter | Control | - -* vim-style arrow keys on hjkl (spacefn layer) -* corresponding Home/PgDn/PgUp/End on hjkl (tab layer) -* bonus arrow keys in the bottom right corner on Alt/Win/Menu/rCtrl/Shift -* more bonus arrow keys on wasd (spacefn layer) -* media keys prev/next/play/vol+/vol- (spacefn layer) -* firmware bootloader button -* additional brackets that only work in german layout due to horrible placement -in the default qwertz layout - - -### Additional Credits -* visualization of the layers [here](http://www.keyboard-layout-editor.com/#/gists/aba4e4396459ede85bc66a22cee88e48) (without the LED keys) diff --git a/keyboards/amj60/keymaps/iso_split_rshift/rules.mk b/keyboards/amj60/keymaps/iso_split_rshift/rules.mk deleted file mode 100644 index 1b34f4f60606..000000000000 --- a/keyboards/amj60/keymaps/iso_split_rshift/rules.mk +++ /dev/null @@ -1,20 +0,0 @@ -# Build Options -# change to "no" to disable the options, or define them in the Makefile in -# the appropriate keymap folder that will get included automatically -# -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = no # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) -COMMAND_ENABLE = yes # 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 -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. - -# 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/amj60/keymaps/iso_split_rshift/updatemerge.sh b/keyboards/amj60/keymaps/iso_split_rshift/updatemerge.sh deleted file mode 100755 index da5457e19531..000000000000 --- a/keyboards/amj60/keymaps/iso_split_rshift/updatemerge.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash -git checkout amj60 # gets you on branch amj60 -git fetch origin # gets you up to date with origin -git merge origin/master diff --git a/keyboards/amj60/keymaps/maximized/keymap.c b/keyboards/amj60/keymaps/maximized/keymap.c deleted file mode 100644 index c5dc25018c8c..000000000000 --- a/keyboards/amj60/keymaps/maximized/keymap.c +++ /dev/null @@ -1,55 +0,0 @@ - -#include QMK_KEYBOARD_H - -// Each layer gets a name for readability, which is then used in the keymap matrix below. -// The underscores don't mean anything - you can have a layer called STUFF or any other name. -// Layer names don't all need to be of the same length, obviously, and you can also skip them -// entirely and just use numbers. -#define _DEF 0 -#define _SPC 1 - -// dual-role shortcuts -#define SPACEDUAL LT(_SPC, KC_SPACE) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Keymap _DEF: Default Layer - * ,-----------------------------------------------------------. - * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \ | ~ | - * |-----------------------------------------------------------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| bspc| - * |-----------------------------------------------------------| - * |Caps | A| S| D| F| G| H| J| K| L| ;| '| Return | - * |-----------------------------------------------------------| - * |Sft | Fn0| Z| X| C| V| B| N| M| ,| .| /| Sft |Fn2| - * |-----------------------------------------------------------| - * |Ctrl|Win |Alt | Space/Fn0 |Alt |Win |Menu|RCtl| - * `-----------------------------------------------------------' - */ - [_DEF] = LAYOUT_max( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, \ - 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \ - KC_LSFT, F(0), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, F(1), \ - KC_LCTL, KC_LALT, KC_LGUI, SPACEDUAL, KC_RGUI, KC_RALT, KC_RCTL, F(2)), - - /* Keymap 1: F-and-vim Layer, modified with Space (by holding space) - * ,-----------------------------------------------------------. - * |PrSc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| | | - * |-----------------------------------------------------------| - * | |Paus| Up| [ | ] | | | | ( | ) | | | | Del | - * |-----------------------------------------------------------| - * | |Lft|Dwn|Rgt| | |Left|Down|Right|Up| | | PLAY | - * |-----------------------------------------------------------| - * | | | | | < | > | |M0 | | | | | Vol+ | | - * |-----------------------------------------------------------| - * | | | | |Alt |Prev|Vol-|Next| - * `-----------------------------------------------------------' - */ - [_SPC] = LAYOUT_max( - KC_PSCR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, \ - _______, KC_PAUS, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \ - _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, KC_MPLY, \ - _______, _______, _______, _______, _______, _______, KC_SPACE, M(0), _______, _______, _______, _______, KC_VOLU, _______, \ - _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT), - -}; diff --git a/keyboards/amj60/readme.md b/keyboards/amj60/readme.md index 394f86456224..50cf3cfcb23b 100644 --- a/keyboards/amj60/readme.md +++ b/keyboards/amj60/readme.md @@ -1,14 +1,22 @@ -AMJ60 -=== +# AMJ60 + +![AMJ60](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/amj60/s-l1200_640.jpg) A 60% keyboard. -Keyboard Maintainer: QMK Community -Hardware Supported: AMJ60 -Hardware Availability: https://geekhack.org/index.php?topic=77636.0 +* Keyboard Maintainer: [The QMK Community](https://github.com/qmk) +* Hardware Supported: AMJ60 +* Hardware Availability: [~~Taobao~~](http://item.taobao.com/item.htm?id=43500549469) (no longer available) +* References: [Geekhack](https://geekhack.org/index.php?topic=77636.0) Make example for this keyboard (after setting up your build environment): - make amj60:maximized + make amj60:default + +Flashing example for this keyboard: + + make amj60:default:flash + +To reset the board into bootloader mode, tap the Reset switch mounted on the bottom side of the PCB. -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. +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/amj60/rules.mk b/keyboards/amj60/rules.mk index 7bc8ffe181b3..c323f05970ab 100644 --- a/keyboards/amj60/rules.mk +++ b/keyboards/amj60/rules.mk @@ -2,29 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options -# comment out to disable the options. +# change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration -MOUSEKEY_ENABLE = no # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = yes # Console for debug -COMMAND_ENABLE = yes # Commands for debug and configuration -NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# 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 = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output -LAYOUTS = 60_ansi +LAYOUTS = 60_ansi 60_hhkb 60_iso 60_ansi_split_bs_rshift diff --git a/keyboards/amj96/amj96.c b/keyboards/amj96/amj96.c index 959e321c8f69..65fca6f12adf 100644 --- a/keyboards/amj96/amj96.c +++ b/keyboards/amj96/amj96.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "amj96.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/amj96/amj96.h b/keyboards/amj96/amj96.h index e8a83af0cb30..bd4e68836092 100644 --- a/keyboards/amj96/amj96.h +++ b/keyboards/amj96/amj96.h @@ -13,25 +13,20 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -#ifndef AMJ96_H -#define AMJ96_H + +#pragma once #include "quantum.h" -// readability #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( \ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K09, K0A, K0C, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K0B, K0F, K6F, \ - K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K0D, K6D, \ - K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, K4F, K6E, \ - K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B, K5C, K5D, K5E, K5F, K0E, K07, \ - K60, K61, K62, K63, K64, K65, K66, K68, K69, K6A, K6B, K6C \ +#define LAYOUT_all( \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K09, K0A, K0C, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K0B, K0F, K6F, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K0D, K6D, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, K4F, K6E, \ + K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B, K5C, K5D, K5E, K5F, K0E, K07, \ + K60, K61, K62, K63, K64, K65, K66, K68, K69, K6A, K6B, K6C \ ) { \ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, K07, XXX, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \ @@ -39,8 +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 } \ } - - -#endif diff --git a/keyboards/amj96/config.h b/keyboards/amj96/config.h index 123bc618b306..5de56683a69e 100644 --- a/keyboards/amj96/config.h +++ b/keyboards/amj96/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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -40,20 +39,50 @@ along with this program. If not, see . * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) * -*/ + */ #define UNUSED_PINS /* COL2ROW, ROW2COL*/ #define DIODE_DIRECTION COL2ROW +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +#define RGB_DI_PIN D3 +#ifdef RGB_DI_PIN +# define RGBLED_NUM 16 +//# define RGBLIGHT_HUE_STEP 8 +//# define RGBLIGHT_SAT_STEP 8 +//# define RGBLIGHT_VAL_STEP 8 +//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +#endif + /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ #define DEBOUNCE 5 /* define if matrix has ghost (lacks anti-ghosting diodes) */ //#define MATRIX_HAS_GHOST -/* number of backlight levels */ - /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ #define LOCKING_SUPPORT_ENABLE /* Locking resynchronize hack */ @@ -85,54 +114,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -150,29 +131,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - -#define RGBLIGHT_ANIMATIONS -#define RGBLED_NUM 16 -#define RGB_DI_PIN D3 - -#endif diff --git a/keyboards/amj96/info.json b/keyboards/amj96/info.json index bcee81b07b0f..b2aac215c0c7 100644 --- a/keyboards/amj96/info.json +++ b/keyboards/amj96/info.json @@ -1,13 +1,122 @@ { - "keyboard_name": "AMJ96", - "url": "", - "maintainer": "qmk", - "width": 19, - "height": 6, - "layouts": { - "LAYOUT": { - "key_count": 103, - "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, {"label":"F2", "x":2, "y":0}, {"label":"F3", "x":3, "y":0}, {"label":"F4", "x":4, "y":0}, {"label":"F5", "x":5, "y":0}, {"label":"F6", "x":6, "y":0}, {"label":"F7", "x":7, "y":0}, {"label":"F8", "x":8, "y":0}, {"label":"F9", "x":9, "y":0}, {"label":"F10", "x":10, "y":0}, {"label":"F11", "x":11, "y":0}, {"label":"F12", "x":12, "y":0}, {"label":"Print Screen", "x":13, "y":0}, {"label":"Pause", "x":14, "y":0}, {"label":"Ins", "x":15, "y":0}, {"label":"Del", "x":16, "y":0}, {"label":"Page Up", "x":17, "y":0}, {"label":"Page Down", "x":18, "y":0}, {"label":"` ~", "x":0, "y":1}, {"label":"1 !", "x":1, "y":1}, {"label":"2 @", "x":2, "y":1}, {"label":"3 #", "x":3, "y":1}, {"label":"4 $", "x":4, "y":1}, {"label":"5 %", "x":5, "y":1}, {"label":"6 ^", "x":6, "y":1}, {"label":"7 &", "x":7, "y":1}, {"label":"8 *", "x":8, "y":1}, {"label":"9 (", "x":9, "y":1}, {"label":"0 )", "x":10, "y":1}, {"label":"- _", "x":11, "y":1}, {"label":"= +", "x":12, "y":1}, {"label":"Back Space", "x":13, "y":1}, {"label":"Back Space 2", "x":14, "y":1}, {"label":"Num Lock", "x":15, "y":1}, {"label":"/", "x":16, "y":1}, {"label":"*", "x":17, "y":1}, {"label":"-", "x":18, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"[ {", "x":11.5, "y":2}, {"label":"] }", "x":12.5, "y":2}, {"label":"\\ |", "x":13.5, "y":2, "w":1.5}, {"label":"7", "x":15, "y":2}, {"label":"8", "x":16, "y":2}, {"label":"9", "x":17, "y":2}, {"label":"+", "x":18, "y":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":"; :", "x":10.75, "y":3}, {"label":"' \"", "x":11.75, "y":3}, {"label":"Enter", "x":12.75, "y":3, "w":2.25}, {"label":"4", "x":15, "y":3}, {"label":"5", "x":16, "y":3}, {"label":"6", "x":17, "y":3}, {"label":"+", "x":18, "y":3}, {"label":"Shift", "x":0, "y":4, "w":1.25}, {"label":"ISO \\", "x":1.25, "y":4}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":", <", "x":9.25, "y":4}, {"label":". >", "x":10.25, "y":4}, {"label":"/ ?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"label":"Up", "x":14, "y":4}, {"label":"1", "x":15, "y":4}, {"label":"2", "x":16, "y":4}, {"label":"3", "x":17, "y":4}, {"label":"Enter", "x":18, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"GUI", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"label":"Space", "x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5, "w":1.5}, {"label":"Fn", "x":11.5, "y":5, "w":1.5}, {"label":"Left", "x":13, "y":5}, {"label":"Down", "x":14, "y":5}, {"label":"Right", "x":15, "y":5}, {"label":"0", "x":16, "y":5}, {"label":".", "x":17, "y":5}, {"label":"Enter", "x":18, "y":5}] + "keyboard_name": "AMJ96", + "url": "", + "maintainer": "qmk", + "layout_aliases": { + "LAYOUT": "LAYOUT_all" + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":1, "y":0}, + {"label":"F2", "x":2, "y":0}, + {"label":"F3", "x":3, "y":0}, + {"label":"F4", "x":4, "y":0}, + {"label":"F5", "x":5, "y":0}, + {"label":"F6", "x":6, "y":0}, + {"label":"F7", "x":7, "y":0}, + {"label":"F8", "x":8, "y":0}, + {"label":"F9", "x":9, "y":0}, + {"label":"F10", "x":10, "y":0}, + {"label":"F11", "x":11, "y":0}, + {"label":"F12", "x":12, "y":0}, + {"label":"Print Screen", "x":13, "y":0}, + {"label":"Pause", "x":14, "y":0}, + {"label":"Ins", "x":15, "y":0}, + {"label":"Del", "x":16, "y":0}, + {"label":"Page Up", "x":17, "y":0}, + {"label":"Page Down", "x":18, "y":0}, + + {"label":"` ~", "x":0, "y":1}, + {"label":"1 !", "x":1, "y":1}, + {"label":"2 @", "x":2, "y":1}, + {"label":"3 #", "x":3, "y":1}, + {"label":"4 $", "x":4, "y":1}, + {"label":"5 %", "x":5, "y":1}, + {"label":"6 ^", "x":6, "y":1}, + {"label":"7 &", "x":7, "y":1}, + {"label":"8 *", "x":8, "y":1}, + {"label":"9 (", "x":9, "y":1}, + {"label":"0 )", "x":10, "y":1}, + {"label":"- _", "x":11, "y":1}, + {"label":"= +", "x":12, "y":1}, + {"label":"Back Space", "x":13, "y":1}, + {"label":"Back Space 2", "x":14, "y":1}, + {"label":"Num Lock", "x":15, "y":1}, + {"label":"/", "x":16, "y":1}, + {"label":"*", "x":17, "y":1}, + {"label":"-", "x":18, "y":1}, + + {"label":"Tab", "x":0, "y":2, "w":1.5}, + {"label":"Q", "x":1.5, "y":2}, + {"label":"W", "x":2.5, "y":2}, + {"label":"E", "x":3.5, "y":2}, + {"label":"R", "x":4.5, "y":2}, + {"label":"T", "x":5.5, "y":2}, + {"label":"Y", "x":6.5, "y":2}, + {"label":"U", "x":7.5, "y":2}, + {"label":"I", "x":8.5, "y":2}, + {"label":"O", "x":9.5, "y":2}, + {"label":"P", "x":10.5, "y":2}, + {"label":"[ {", "x":11.5, "y":2}, + {"label":"] }", "x":12.5, "y":2}, + {"label":"\\ |", "x":13.5, "y":2, "w":1.5}, + {"label":"7", "x":15, "y":2}, + {"label":"8", "x":16, "y":2}, + {"label":"9", "x":17, "y":2}, + {"label":"+", "x":18, "y":2}, + + {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, + {"label":"A", "x":1.75, "y":3}, + {"label":"S", "x":2.75, "y":3}, + {"label":"D", "x":3.75, "y":3}, + {"label":"F", "x":4.75, "y":3}, + {"label":"G", "x":5.75, "y":3}, + {"label":"H", "x":6.75, "y":3}, + {"label":"J", "x":7.75, "y":3}, + {"label":"K", "x":8.75, "y":3}, + {"label":"L", "x":9.75, "y":3}, + {"label":"; :", "x":10.75, "y":3}, + {"label":"' \"", "x":11.75, "y":3}, + {"label":"Enter", "x":12.75, "y":3, "w":2.25}, + {"label":"4", "x":15, "y":3}, + {"label":"5", "x":16, "y":3}, + {"label":"6", "x":17, "y":3}, + {"label":"+", "x":18, "y":3}, + + {"label":"Shift", "x":0, "y":4, "w":1.25}, + {"label":"ISO \\", "x":1.25, "y":4}, + {"label":"Z", "x":2.25, "y":4}, + {"label":"X", "x":3.25, "y":4}, + {"label":"C", "x":4.25, "y":4}, + {"label":"V", "x":5.25, "y":4}, + {"label":"B", "x":6.25, "y":4}, + {"label":"N", "x":7.25, "y":4}, + {"label":"M", "x":8.25, "y":4}, + {"label":", <", "x":9.25, "y":4}, + {"label":". >", "x":10.25, "y":4}, + {"label":"/ ?", "x":11.25, "y":4}, + {"label":"Shift", "x":12.25, "y":4, "w":1.75}, + {"label":"Up", "x":14, "y":4}, + {"label":"1", "x":15, "y":4}, + {"label":"2", "x":16, "y":4}, + {"label":"3", "x":17, "y":4}, + {"label":"Enter", "x":18, "y":4}, + + {"label":"Ctrl", "x":0, "y":5, "w":1.25}, + {"label":"GUI", "x":1.25, "y":5, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5, "w":1.25}, + {"label":"Space", "x":3.75, "y":5, "w":6.25}, + {"label":"Alt", "x":10, "y":5, "w":1.5}, + {"label":"Fn", "x":11.5, "y":5, "w":1.5}, + {"label":"Left", "x":13, "y":5}, + {"label":"Down", "x":14, "y":5}, + {"label":"Right", "x":15, "y":5}, + {"label":"0", "x":16, "y":5}, + {"label":".", "x":17, "y":5}, + {"label":"Enter", "x":18, "y":5} + ] + } } - } } diff --git a/keyboards/amj96/keymaps/default/config.h b/keyboards/amj96/keymaps/default/config.h deleted file mode 100644 index 0c01a85594d3..000000000000 --- a/keyboards/amj96/keymaps/default/config.h +++ /dev/null @@ -1,20 +0,0 @@ -/* Copyright 2017 MechMerlin - - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - - -// place overrides here diff --git a/keyboards/amj96/keymaps/default/keymap.c b/keyboards/amj96/keymaps/default/keymap.c index a520fdeb31fb..baa4bef9dce1 100644 --- a/keyboards/amj96/keymaps/default/keymap.c +++ b/keyboards/amj96/keymaps/default/keymap.c @@ -1,4 +1,5 @@ /* Copyright 2017 MechMerlin + * 2021 QMK/James Young (@noroadsleft) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,37 +18,22 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_PAUS, KC_INS, KC_DEL, KC_PGUP, KC_PGDN, \ - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NO, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS, \ - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, \ - KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, \ - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_FN0, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT \ - ), + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_PAUS, KC_INS, KC_DEL, KC_PGUP, KC_PGDN, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, XXXXXXX, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT + ), + + [1] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) - [1] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ - ) }; - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/amj96/keymaps/default/readme.md b/keyboards/amj96/keymaps/default/readme.md deleted file mode 100644 index 478ab99669f5..000000000000 --- a/keyboards/amj96/keymaps/default/readme.md +++ /dev/null @@ -1 +0,0 @@ -# The default keymap for amj96 diff --git a/keyboards/amj96/readme.md b/keyboards/amj96/readme.md index f13130047977..8cd4ea94a1d0 100644 --- a/keyboards/amj96/readme.md +++ b/keyboards/amj96/readme.md @@ -2,15 +2,19 @@ The AMD96 is a 96 key custom keyboard with anodized aluminum case, twin usb ports, and support for backlight LEDs and RGB underglow via SMD LEDs. -Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin) -Hardware Supported: AMJ96 -Hardware Availability: Was previously available on a GB via [Flashquark](https://flashquark.com/product/amj96/) +* Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin) +* Hardware Supported: AMJ96 +* Hardware Availability: [~~Flashquark~~](https://flashquark.com/product/amj96/) (no longer available) Make example for this keyboard (after setting up your build environment): make amj96:default -See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. +Flashing example for this keyboard: + + make amj96: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). ## Notes -- In-switch and underglow LEDs currently not supported. +- In-switch and underglow LEDs currently not supported. diff --git a/keyboards/amj96/rules.mk b/keyboards/amj96/rules.mk index 6009b14d8dcb..1caa54a841b0 100644 --- a/keyboards/amj96/rules.mk +++ b/keyboards/amj96/rules.mk @@ -2,32 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = 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 -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + CUSTOM_MATRIX = yes SRC += matrix.c diff --git a/keyboards/amjkeyboard/amj66/amj66.c b/keyboards/amjkeyboard/amj66/amj66.c index 05e29975b66f..6d77e43a0a29 100644 --- a/keyboards/amjkeyboard/amj66/amj66.c +++ b/keyboards/amjkeyboard/amj66/amj66.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "amj66.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/amjkeyboard/amj66/info.json b/keyboards/amjkeyboard/amj66/info.json index 93656c445244..27a6ecdb948b 100644 --- a/keyboards/amjkeyboard/amj66/info.json +++ b/keyboards/amjkeyboard/amj66/info.json @@ -2,11 +2,8 @@ "keyboard_name": "AMJ66", "url": "", "maintainer": "FSund, qmk", - "width": 16.5, - "height": 5, "layouts": { "LAYOUT_all": { - "key_count": 70, "layout": [ {"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, @@ -81,7 +78,6 @@ ] }, "LAYOUT_66_ansi": { - "key_count": 66, "layout": [ {"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, @@ -152,7 +148,6 @@ ] }, "LAYOUT_66_iso": { - "key_count": 67, "layout": [ {"label":"\u00ac", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, diff --git a/keyboards/amjkeyboard/amj66/rules.mk b/keyboards/amjkeyboard/amj66/rules.mk index 97fa9bc76fe3..09d528ac6792 100644 --- a/keyboards/amjkeyboard/amj66/rules.mk +++ b/keyboards/amjkeyboard/amj66/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output LAYOUTS = 66_ansi 66_iso diff --git a/keyboards/amjpad/amjpad.h b/keyboards/amjpad/amjpad.h index d9a05162156a..976a7ab041aa 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 6bac897e73db..f1d57592b533 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -87,5 +86,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -#endif diff --git a/keyboards/amjpad/info.json b/keyboards/amjpad/info.json index d362bc070f1e..76147716d25b 100644 --- a/keyboards/amjpad/info.json +++ b/keyboards/amjpad/info.json @@ -2,15 +2,11 @@ "keyboard_name": "AMJ Pad", "url": "", "maintainer": "qmk", - "width": 4, - "height": 6, "layouts": { "LAYOUT_numpad_6x4": { - "key_count": 21, "layout": [{"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, {"label":"k02", "x":2, "y":0}, {"label":"k03", "x":3, "y":0}, {"label":"k10", "x":0, "y":1}, {"label":"k11", "x":1, "y":1}, {"label":"k12", "x":2, "y":1}, {"label":"k13", "x":3, "y":1}, {"label":"k20", "x":0, "y":2}, {"label":"k21", "x":1, "y":2}, {"label":"k22", "x":2, "y":2}, {"label":"k30", "x":0, "y":3}, {"label":"k31", "x":1, "y":3}, {"label":"k32", "x":2, "y":3}, {"label":"k23", "x":3, "y":2, "h":2}, {"label":"k40", "x":0, "y":4}, {"label":"k41", "x":1, "y":4}, {"label":"k42", "x":2, "y":4}, {"label":"k50", "x":0, "y":5, "w":2}, {"label":"k52", "x":2, "y":5}, {"label":"k43", "x":3, "y":4, "h":2}] }, "LAYOUT_ortho_6x4": { - "key_count": 24, "layout": [{"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, {"label":"k02", "x":2, "y":0}, {"label":"k03", "x":3, "y":0}, {"label":"k10", "x":0, "y":1}, {"label":"k11", "x":1, "y":1}, {"label":"k12", "x":2, "y":1}, {"label":"k13", "x":3, "y":1}, {"label":"k20", "x":0, "y":2}, {"label":"k21", "x":1, "y":2}, {"label":"k22", "x":2, "y":2}, {"label":"k23", "x":3, "y":2}, {"label":"k30", "x":0, "y":3}, {"label":"k31", "x":1, "y":3}, {"label":"k32", "x":2, "y":3}, {"label":"k33", "x":3, "y":3}, {"label":"k40", "x":0, "y":4}, {"label":"k41", "x":1, "y":4}, {"label":"k42", "x":2, "y":4}, {"label":"k43", "x":3, "y":4}, {"label":"k50", "x":0, "y":5}, {"label":"k51", "x":1, "y":5}, {"label":"k52", "x":2, "y":5}, {"label":"k53", "x":3, "y":5}] } } diff --git a/keyboards/amjpad/keymaps/max/keymap.c b/keyboards/amjpad/keymaps/max/keymap.c index eb50567e987c..7bfaed59991e 100644 --- a/keyboards/amjpad/keymaps/max/keymap.c +++ b/keyboards/amjpad/keymaps/max/keymap.c @@ -4,9 +4,6 @@ #include "rgblight.h" #endif -// Used for SHIFT_ESC -#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) - // Each layer gets a name for readability, which is then used in the keymap matrix below. // The underscores don't mean anything - you can have a layer called STUFF or any other name. // Layer names don't all need to be of the same length, obviously, and you can also skip them @@ -64,37 +61,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT ), }; - -enum function_id { - SHIFT_ESC, -}; - -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_FUNCTION(SHIFT_ESC), -}; - -void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { - static uint8_t shift_esc_shift_mask; - switch (id) { - case SHIFT_ESC: - shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK; - if (record->event.pressed) { - if (shift_esc_shift_mask) { - add_key(KC_GRV); - send_keyboard_report(); - } else { - add_key(KC_ESC); - send_keyboard_report(); - } - } else { - if (shift_esc_shift_mask) { - del_key(KC_GRV); - send_keyboard_report(); - } else { - del_key(KC_ESC); - send_keyboard_report(); - } - } - break; - } -} diff --git a/keyboards/amjpad/rules.mk b/keyboards/amjpad/rules.mk index f807eddc2285..e1c547fa6758 100644 --- a/keyboards/amjpad/rules.mk +++ b/keyboards/amjpad/rules.mk @@ -2,19 +2,12 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug @@ -22,9 +15,6 @@ COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work RGBLIGHT_ENABLE = no # Enable keyboard underlight functionality BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls AUDIO_ENABLE = no -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID LAYOUTS = numpad_6x4 ortho_6x4 diff --git a/keyboards/anavi/macropad2/config.h b/keyboards/anavi/macropad2/config.h deleted file mode 100644 index f0448e4d710c..000000000000 --- a/keyboards/anavi/macropad2/config.h +++ /dev/null @@ -1,69 +0,0 @@ -/* -Copyright 2021 Leon Anavi - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -#include "config_common.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0xCEEB -#define PRODUCT_ID 0x0002 -#define DEVICE_VER 0x0001 -#define MANUFACTURER ANAVI -#define PRODUCT Macro Pad 2 - -/* matrix size */ -#define MATRIX_ROWS 1 -#define MATRIX_COLS 2 - -/* - * Keyboard Matrix Assignments - * - * On this board we have direct connection: no diodes. - */ -#define DIRECT_PINS {{ B2, B0 }} - -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 5 - -#define BACKLIGHT_PIN B1 -#define BACKLIGHT_LEVELS 2 -#define RGBLIGHT_SLEEP - -//#define RGBLED_NUM 2 -//#define RGB_DI_PIN B2 - -// Save as much space as we can... -#define LAYER_STATE_8BIT -#define NO_ACTION_LAYER -#define NO_ACTION_TAPPING -#define NO_ACTION_ONESHOT -#define NO_RESET - -// usbconfig.h overrides -#define USB_CFG_IOPORTNAME B -#define USB_CFG_DMINUS_BIT 3 -#define USB_CFG_DPLUS_BIT 4 -#define USB_COUNT_SOF 0 -#define USB_INTR_CFG PCMSK -#define USB_INTR_CFG_SET (1< - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( - KC_0, KC_1 - ) -}; - -const uint16_t PROGMEM test_combo[] = {KC_0, KC_1, COMBO_END}; -combo_t key_combos[COMBO_COUNT] = {COMBO_ACTION(test_combo)}; - -void process_combo_event(uint16_t combo_index, bool pressed) { - backlight_step(); -} diff --git a/keyboards/anavi/macropad2/keymaps/copypaste/keymap.c b/keyboards/anavi/macropad2/keymaps/copypaste/keymap.c deleted file mode 100644 index cddc14188dfa..000000000000 --- a/keyboards/anavi/macropad2/keymaps/copypaste/keymap.c +++ /dev/null @@ -1,30 +0,0 @@ -/* Copyright 2021 Leon Anavi - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( - C(KC_C), C(KC_V) - ) -}; - -const uint16_t PROGMEM test_combo[] = {C(KC_C), C(KC_V), COMBO_END}; -combo_t key_combos[COMBO_COUNT] = {COMBO_ACTION(test_combo)}; - -void process_combo_event(uint16_t combo_index, bool pressed) { - backlight_step(); -} diff --git a/keyboards/anavi/macropad2/keymaps/default/keymap.c b/keyboards/anavi/macropad2/keymaps/default/keymap.c deleted file mode 100644 index c880ff660a8a..000000000000 --- a/keyboards/anavi/macropad2/keymaps/default/keymap.c +++ /dev/null @@ -1,30 +0,0 @@ -/* Copyright 2021 Leon Anavi - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( - KC_A, KC_B - ) -}; - -const uint16_t PROGMEM test_combo[] = {KC_A, KC_B, COMBO_END}; -combo_t key_combos[COMBO_COUNT] = {COMBO_ACTION(test_combo)}; - -void process_combo_event(uint16_t combo_index, bool pressed) { - backlight_step(); -} diff --git a/keyboards/anavi/macropad2/keymaps/git/keymap.c b/keyboards/anavi/macropad2/keymaps/git/keymap.c deleted file mode 100644 index 8580af195fb4..000000000000 --- a/keyboards/anavi/macropad2/keymaps/git/keymap.c +++ /dev/null @@ -1,48 +0,0 @@ -/* Copyright 2021 Leon Anavi - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include QMK_KEYBOARD_H - -enum custom_keycodes { - GITCOMMIT = SAFE_RANGE, - GITPUSH -}; - -void keyboard_post_init_user(void) { - // Set backlight to the maximum brightness - backlight_level(2); -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case GITCOMMIT: - if (record->event.pressed) { - SEND_STRING("git commit -s\n"); - } - break; - case GITPUSH: - if (record->event.pressed) { - SEND_STRING("git push\n"); - } - } - return true; -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( - GITCOMMIT, GITPUSH - ) -}; diff --git a/keyboards/anavi/macropad2/keymaps/google-meet/keymap.c b/keyboards/anavi/macropad2/keymaps/google-meet/keymap.c deleted file mode 100644 index 03bc3881272a..000000000000 --- a/keyboards/anavi/macropad2/keymaps/google-meet/keymap.c +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright 2021 Leon Anavi - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include QMK_KEYBOARD_H - -/* - * The keymap contains the following shortcuts for Google Meet: - * - * Ctrl+D: Mute/unmute my audio - * Ctrl+E: Start/stop video - */ - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( - LCTL(KC_D), LCTL(KC_E) - ) -}; - -const uint16_t PROGMEM test_combo[] = {LCTL(KC_D), LCTL(KC_E), COMBO_END}; -combo_t key_combos[COMBO_COUNT] = {COMBO_ACTION(test_combo)}; - -void process_combo_event(uint16_t combo_index, bool pressed) { - backlight_step(); -} diff --git a/keyboards/anavi/macropad2/keymaps/jitsi/keymap.c b/keyboards/anavi/macropad2/keymaps/jitsi/keymap.c deleted file mode 100644 index afd1dd1d14ec..000000000000 --- a/keyboards/anavi/macropad2/keymaps/jitsi/keymap.c +++ /dev/null @@ -1,36 +0,0 @@ -/* Copyright 2021 Leon Anavi - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include QMK_KEYBOARD_H - -/* - * Jitsi Meet keyboard shortcuts: - * V - Start or stop your camera - * M - Mute or unmute your microphone - */ - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( - KC_M, KC_V - ) -}; - -const uint16_t PROGMEM test_combo[] = {KC_M, KC_V, COMBO_END}; -combo_t key_combos[COMBO_COUNT] = {COMBO_ACTION(test_combo)}; - -void process_combo_event(uint16_t combo_index, bool pressed) { - backlight_step(); -} diff --git a/keyboards/anavi/macropad2/keymaps/msteams/keymap.c b/keyboards/anavi/macropad2/keymaps/msteams/keymap.c deleted file mode 100644 index 977b4e65fb50..000000000000 --- a/keyboards/anavi/macropad2/keymaps/msteams/keymap.c +++ /dev/null @@ -1,41 +0,0 @@ -/* Copyright 2021 Leon Anavi - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include QMK_KEYBOARD_H - -/* - * This keymap contains the following shortcuts for Microsoft Teams - * on MS Windows and GNU/Linux distributions: - * - * Ctrl+Shift+M: Toggle mute - * Ctrl+Shift+O: Toggle video (doesn't work in a web browser) - * - * NOTE: Mac users should replace Ctrl with Command in all - * shortcuts - */ - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( - LCTL(LSFT(KC_M)), LCTL(LSFT(KC_O)) - ) -}; - -const uint16_t PROGMEM test_combo[] = {LCTL(LSFT(KC_M)), LCTL(LSFT(KC_O)), COMBO_END}; -combo_t key_combos[COMBO_COUNT] = {COMBO_ACTION(test_combo)}; - -void process_combo_event(uint16_t combo_index, bool pressed) { - backlight_step(); -} diff --git a/keyboards/anavi/macropad2/keymaps/mute/keymap.c b/keyboards/anavi/macropad2/keymaps/mute/keymap.c deleted file mode 100644 index 642bf66a8ffa..000000000000 --- a/keyboards/anavi/macropad2/keymaps/mute/keymap.c +++ /dev/null @@ -1,23 +0,0 @@ -/* Copyright 2021 Leon Anavi - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( - KC_AUDIO_MUTE, BL_TOGG - ) -}; diff --git a/keyboards/anavi/macropad2/keymaps/mute/rules.mk b/keyboards/anavi/macropad2/keymaps/mute/rules.mk deleted file mode 100644 index a8b14593460a..000000000000 --- a/keyboards/anavi/macropad2/keymaps/mute/rules.mk +++ /dev/null @@ -1,2 +0,0 @@ -EXTRAKEY_ENABLE = yes -BACKLIGHT_ENABLE = no diff --git a/keyboards/anavi/macropad2/keymaps/skype/keymap.c b/keyboards/anavi/macropad2/keymaps/skype/keymap.c deleted file mode 100644 index b05137edeff8..000000000000 --- a/keyboards/anavi/macropad2/keymaps/skype/keymap.c +++ /dev/null @@ -1,41 +0,0 @@ -/* Copyright 2021 Leon Anavi - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include QMK_KEYBOARD_H - -/* - * The keymap contains the following shortcuts for Skype on - * MS Windows and GNU/Linux distributions: - * - * Ctrl+M: Mute/unmute microphone - * Ctrl+Shift+K: Start/stop camera - * - * NOTE: Mac users should change the shortcut to toggle the mic - * to Command+Shift+M, for example KC_LGUI(LSFT(KC_M)) - */ - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( - LCTL(KC_M), LCTL(LSFT(KC_K)) - ) -}; - -const uint16_t PROGMEM test_combo[] = {LCTL(KC_M), LCTL(LSFT(KC_K)), COMBO_END}; -combo_t key_combos[COMBO_COUNT] = {COMBO_ACTION(test_combo)}; - -void process_combo_event(uint16_t combo_index, bool pressed) { - backlight_step(); -} diff --git a/keyboards/anavi/macropad2/keymaps/tap_dance/keymap.c b/keyboards/anavi/macropad2/keymaps/tap_dance/keymap.c deleted file mode 100644 index 63854a62e3ac..000000000000 --- a/keyboards/anavi/macropad2/keymaps/tap_dance/keymap.c +++ /dev/null @@ -1,35 +0,0 @@ -/* Copyright 2021 Leon Anavi - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include QMK_KEYBOARD_H - -enum layers { - _BASE = 0, -}; - -enum { - TD_BC = 0 -}; - -qk_tap_dance_action_t tap_dance_actions[] = { - [TD_BC] = ACTION_TAP_DANCE_DOUBLE(KC_B, KC_C) -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_BASE] = LAYOUT( - KC_A, TD(TD_BC) - ) -}; diff --git a/keyboards/anavi/macropad2/keymaps/volume/keymap.c b/keyboards/anavi/macropad2/keymaps/volume/keymap.c deleted file mode 100644 index f9ad20d5c5d2..000000000000 --- a/keyboards/anavi/macropad2/keymaps/volume/keymap.c +++ /dev/null @@ -1,23 +0,0 @@ -/* Copyright 2021 Leon Anavi - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( - KC_VOLU, KC_VOLD - ) -}; diff --git a/keyboards/anavi/macropad2/keymaps/volume/rules.mk b/keyboards/anavi/macropad2/keymaps/volume/rules.mk deleted file mode 100644 index a8b14593460a..000000000000 --- a/keyboards/anavi/macropad2/keymaps/volume/rules.mk +++ /dev/null @@ -1,2 +0,0 @@ -EXTRAKEY_ENABLE = yes -BACKLIGHT_ENABLE = no diff --git a/keyboards/anavi/macropad2/keymaps/zoom/keymap.c b/keyboards/anavi/macropad2/keymaps/zoom/keymap.c deleted file mode 100644 index 4f681d17f115..000000000000 --- a/keyboards/anavi/macropad2/keymaps/zoom/keymap.c +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright 2021 Leon Anavi - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include QMK_KEYBOARD_H - -/* - * The keymap contains the following shortcuts for Zoom meeting: - * - * Alt+A: Mute/unmute my audio - * Alt+V: Start/stop video - */ - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( - LALT(KC_A), LALT(KC_V) - ) -}; - -const uint16_t PROGMEM test_combo[] = {LALT(KC_A), LALT(KC_V), COMBO_END}; -combo_t key_combos[COMBO_COUNT] = {COMBO_ACTION(test_combo)}; - -void process_combo_event(uint16_t combo_index, bool pressed) { - backlight_step(); -} diff --git a/keyboards/anavi/macropad2/macropad2.c b/keyboards/anavi/macropad2/macropad2.c deleted file mode 100644 index 0a95d5d27c19..000000000000 --- a/keyboards/anavi/macropad2/macropad2.c +++ /dev/null @@ -1,18 +0,0 @@ -/* -Copyright 2021 Leon Anavi - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#include "macropad2.h" diff --git a/keyboards/anavi/macropad2/macropad2.h b/keyboards/anavi/macropad2/macropad2.h deleted file mode 100644 index f3d43ad4f8b5..000000000000 --- a/keyboards/anavi/macropad2/macropad2.h +++ /dev/null @@ -1,35 +0,0 @@ -/* -Copyright 2021 Leon Anavi - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -#include "quantum.h" - -/* This a shortcut to help you visually see your layout. - * - * The first section contains all of the arguments representing the physical - * layout of the board and position of the keys. - * - * The second converts the arguments into a two-dimensional array which - * represents the switch matrix. - */ -#define LAYOUT( \ - K01, K02 \ -) \ -{ \ - { K01, K02 }, \ -} diff --git a/keyboards/anavi/macropad2/readme.md b/keyboards/anavi/macropad2/readme.md deleted file mode 100644 index 00d96cf8a70a..000000000000 --- a/keyboards/anavi/macropad2/readme.md +++ /dev/null @@ -1,55 +0,0 @@ -# ANAVI Macro Pad 2 - - -ANAVI Macro Pad 2 is an open source, custom programmable, tiny 2% mechanical keyboard/keypad with backlit. Each of the two keys allows you to reprogram and use it as macro keypad or even dedicated shortcut keys. - -ANAVI Macro Pad 2 can be customized for multiple use cases across various industries. It is the perfect fit for copy and paste as well as video conferencing applications. You can easily turn the camera or microphone on or off. Various keymaps are available, including for Zoom, Jitsi, Skype, Microsoft Teams, Google Meet, and Git. - -Powered by Microchip ATtiny 85 microcontroller and with microUSB connector. Only free and open source software tools like KiCad, OpenSCAD, and Inkscape were used to design ANAVI Macro Pad 2. ANAVI Macro Pad 2 relies on QMK firmware, Micronucleus and V-USB. - -* Keyboard Maintainer: [Leon Anavi](https://github.com/leon-anavi) -* Hardware Supported: ANAVI Macro Pad 2 -* Hardware Availability: [PCB Files](https://github.com/AnaviTechnology/anavi-macro-pad-2) -* [User's Manual](https://github.com/AnaviTechnology/anavi-docs/blob/master/anavi-macro-pad-2/anavi-macro-pad-2.md) - -**Note**: Due to limited firmware space, a _**lot**_ of features have to be disabled to get a functioning QMK based keyboard. - -Make example for this keyboard (after setting up your build environment): - - make anavi/macropad2:default - -See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). - -## Flashing -### Prerequisites - -```bash -git clone https://github.com/micronucleus/micronucleus.git -cd micronucleus/commandline/ -sudo make install -``` - -On GNU/Linux distributions, you will need proper privileges to access the MCU. You can either use `sudo` when flashing firmware, or place [these files](https://github.com/micronucleus/micronucleus/blob/master/commandline/49-micronucleus.rules) in /etc/udev/rules.d/. Once added run the following: - -```bash -sudo udevadm control --reload-rules -sudo udevadm trigger -``` - -### Instructions - -* Run one of the following commands: - -```bash -make anavi/macropad2:default:flash - -# or directly with... -micronucleus --run -``` - -* Plug ANAVI Macro Pad 2 to the USB port and the flashing procedure should start - -### Recovery - -* [Original Firmware](https://github.com/AnaviTechnology/anavi-macro-pad-2/tree/main/bootloader) -* [Bootloader Repair](https://digistump.com/wiki/digispark/tutorials/proisp) diff --git a/keyboards/anavi/macropad2/rules.mk b/keyboards/anavi/macropad2/rules.mk deleted file mode 100644 index 9841425905a3..000000000000 --- a/keyboards/anavi/macropad2/rules.mk +++ /dev/null @@ -1,34 +0,0 @@ -# MCU name -MCU = attiny85 - -# Bootloader selection -BOOTLOADER = micronucleus -OPT_DEFS += -DBOOTLOADER_SIZE=1862 -PROGRAM_CMD = micronucleus --run $(BUILD_DIR)/$(TARGET).hex - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration -MOUSEKEY_ENABLE = no # Mouse keys -EXTRAKEY_ENABLE = no # 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 = no # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth -AUDIO_ENABLE = no # Audio output - -# Save as much space as we can... -LTO_ENABLE = yes -GRAVE_ESC_ENABLE = no -MAGIC_ENABLE = no -SPACE_CADET_ENABLE = no - -BACKLIGHT_DRIVER = software diff --git a/keyboards/anavi/macropad8/config.h b/keyboards/anavi/macropad8/config.h index fd9d6e357120..4ec8c7312350 100644 --- a/keyboards/anavi/macropad8/config.h +++ b/keyboards/anavi/macropad8/config.h @@ -64,7 +64,7 @@ along with this program. If not, see . # define RGBLIGHT_LIMIT_VAL 255 #endif -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE # define OLED_DISPLAY_128X64 # define OLED_TIMEOUT 60000 # define OLED_FONT_H "keyboards/anavi/macropad8/glcdfont.c" diff --git a/keyboards/anavi/macropad8/info.json b/keyboards/anavi/macropad8/info.json index bcdbb9532e2c..8f6deed82b2f 100644 --- a/keyboards/anavi/macropad8/info.json +++ b/keyboards/anavi/macropad8/info.json @@ -2,8 +2,6 @@ "keyboard_name": "ANAVI Macro Pad 8", "url": "", "maintainer": "leon-anavi", - "width": 4, - "height": 2, "layouts": { "LAYOUT_ortho_2x4": { "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}] diff --git a/keyboards/anavi/macropad8/keymaps/default/config.h b/keyboards/anavi/macropad8/keymaps/default/config.h new file mode 100644 index 000000000000..dd687cad58f3 --- /dev/null +++ b/keyboards/anavi/macropad8/keymaps/default/config.h @@ -0,0 +1,19 @@ +/* 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 . + */ + +#pragma once + +#define LAYER_STATE_8BIT diff --git a/keyboards/anavi/macropad8/keymaps/default/keymap.c b/keyboards/anavi/macropad8/keymaps/default/keymap.c index 68fbdf0d14c4..84be7f3c68e2 100644 --- a/keyboards/anavi/macropad8/keymaps/default/keymap.c +++ b/keyboards/anavi/macropad8/keymaps/default/keymap.c @@ -17,12 +17,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; // flips the display 180 degrees if offhand } -void oled_task_user(void) { +bool oled_task_user(void) { // Host Keyboard Layer Status oled_write_ln_P(PSTR("ANAVI Macro Pad 8"), false); oled_write_P(PSTR("Active layer: "), false); @@ -57,5 +57,6 @@ void oled_task_user(void) { snprintf(rgbStatusLine2, sizeof(rgbStatusLine2), "h:%d s:%d v:%d", rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val()); oled_write_ln(rgbStatusLine2, false); #endif + return false; } #endif diff --git a/keyboards/anavi/macropad8/keymaps/git/keymap.c b/keyboards/anavi/macropad8/keymaps/git/keymap.c index 0b0099fd52ee..9b7afb5d6956 100644 --- a/keyboards/anavi/macropad8/keymaps/git/keymap.c +++ b/keyboards/anavi/macropad8/keymaps/git/keymap.c @@ -100,12 +100,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; // flips the display 180 degrees if offhand } -void oled_task_user(void) { +bool oled_task_user(void) { // Host Keyboard Layer Status oled_write_ln_P(PSTR("ANAVI Macro Pad 8"), false); oled_write_P(PSTR("Active layer: "), false); @@ -140,5 +140,6 @@ void oled_task_user(void) { snprintf(rgbStatusLine2, sizeof(rgbStatusLine2), "h:%d s:%d v:%d", rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val()); oled_write_ln(rgbStatusLine2, false); #endif + return false; } #endif diff --git a/keyboards/anavi/macropad8/keymaps/kicad/keymap.c b/keyboards/anavi/macropad8/keymaps/kicad/keymap.c index 938d0d53f0fb..e75d588478ca 100644 --- a/keyboards/anavi/macropad8/keymaps/kicad/keymap.c +++ b/keyboards/anavi/macropad8/keymaps/kicad/keymap.c @@ -50,7 +50,7 @@ const uint8_t RGBLED_RAINBOW_SWIRL_INTERVALS[] PROGMEM = {20, 10, 4}; * F1 - zoom in * F2 - zoom out * F4 - zoom center - * + * */ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { @@ -70,12 +70,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; // flips the display 180 degrees if offhand } -void oled_task_user(void) { +bool oled_task_user(void) { // Host Keyboard Layer Status oled_write_ln_P(PSTR("ANAVI Macro Pad 8"), false); oled_write_P(PSTR("Layer: "), false); @@ -113,5 +113,6 @@ void oled_task_user(void) { snprintf(rgbStatusLine2, sizeof(rgbStatusLine2), "h:%d s:%d v:%d", rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val()); oled_write_ln(rgbStatusLine2, false); #endif + return false; } #endif diff --git a/keyboards/anavi/macropad8/keymaps/kodi/keymap.c b/keyboards/anavi/macropad8/keymaps/kodi/keymap.c index 72022a01bb5f..f99a22d72338 100644 --- a/keyboards/anavi/macropad8/keymaps/kodi/keymap.c +++ b/keyboards/anavi/macropad8/keymaps/kodi/keymap.c @@ -36,12 +36,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; // flips the display 180 degrees if offhand } -void oled_task_user(void) { +bool oled_task_user(void) { // Host Keyboard Layer Status oled_write_ln_P(PSTR("ANAVI Macro Pad 8"), false); oled_write_P(PSTR("Active layer: "), false); @@ -76,5 +76,6 @@ void oled_task_user(void) { snprintf(rgbStatusLine2, sizeof(rgbStatusLine2), "h:%d s:%d v:%d", rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val()); oled_write_ln(rgbStatusLine2, false); #endif + return false; } #endif diff --git a/keyboards/anavi/macropad8/keymaps/obs/keymap.c b/keyboards/anavi/macropad8/keymaps/obs/keymap.c index 0c78883cf3f7..1d9fd38eed1a 100644 --- a/keyboards/anavi/macropad8/keymaps/obs/keymap.c +++ b/keyboards/anavi/macropad8/keymaps/obs/keymap.c @@ -53,12 +53,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; // flips the display 180 degrees if offhand } -void oled_task_user(void) { +bool oled_task_user(void) { // Host Keyboard Layer Status oled_write_ln_P(PSTR("ANAVI Macro Pad 8"), false); oled_write_P(PSTR("Active layer: "), false); @@ -93,5 +93,6 @@ void oled_task_user(void) { snprintf(rgbStatusLine2, sizeof(rgbStatusLine2), "h:%d s:%d v:%d", rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val()); oled_write_ln(rgbStatusLine2, false); #endif + return false; } #endif diff --git a/keyboards/anavi/macropad8/keymaps/vlc/keymap.c b/keyboards/anavi/macropad8/keymaps/vlc/keymap.c new file mode 100644 index 000000000000..3e15a81861de --- /dev/null +++ b/keyboards/anavi/macropad8/keymaps/vlc/keymap.c @@ -0,0 +1,138 @@ + /* Copyright 2021 Marc Nause + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum custom_layers { + _PLAY, + _FRAME, + _DVD, + _FN +}; + +#define KC_X0 LT(_FN, KC_ESC) + +#ifdef RGBLIGHT_ENABLE +// How long (in ms) to wait between animation steps for the rainbow mode +const uint8_t RGBLED_RAINBOW_MOOD_INTERVALS[] PROGMEM = {60, 30, 15}; +// How long (in milliseconds) to wait between animation steps for each of the "Swirling rainbow" animations +const uint8_t RGBLED_RAINBOW_SWIRL_INTERVALS[] PROGMEM = {20, 10, 4}; +#endif + +/* + * The keymap contains 3 layers for vlc hotkeys and a 4th layer + * for controlling the backlighting and the underlighting. + * + * See https://wiki.videolan.org/QtHotkeys/ for VLC hotkeys + * + * - Layer for VLC media play hotkeys: + * Space - Play/pause + * P - Previous track + * S - Stop + * N - Next track + * + - Slower + * - - Faster + * = - Normal rate + * + * - Layer for VLC frame control hotkeys: + * Shift + right arrow - Jump 5 seconds forward + * Alt + right arrow - Jump 10 seconds forward + * Control + right arrow - Jump 1 minute forward + * E - Next frame + * Shift + left arrow - Jump 5 seconds back + * Alt + left arrow - Jump 10 seconds back + * Control + left arrow - Jump 1 minute back + * + * - Layer for VLC DVD hotkeys: + * Shift + M - Disc menu + * Arrow up - Navigate menu (up) + * Enter - Select menu entry + * Shift + V - Toggle subtitles + * Arrow left - Navigate menu (left) + * Arrow down - Navigate menu (down) + * Arrow right - Navigate menu (right) + */ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_PLAY] = LAYOUT_ortho_2x4( + KC_SPC, KC_P, KC_S, KC_N, + KC_KP_PLUS, KC_KP_MINUS, KC_KP_EQUAL, TO(_FRAME) + ), + + [_FRAME] = LAYOUT_ortho_2x4( + LSFT(KC_RIGHT), LALT(KC_RIGHT), LCTL(KC_RIGHT), KC_E, + LSFT(KC_LEFT), LALT(KC_LEFT), LCTL(KC_LEFT), TO(_DVD) + ), + + [_DVD] = LAYOUT_ortho_2x4( + LSFT(KC_M), KC_UP, KC_ENTER, LSFT(KC_V), + KC_LEFT, KC_DOWN, KC_RIGHT, TO(_FN) + ), + + [_FN] = LAYOUT_ortho_2x4( + RGB_TOG, RGB_MOD, RGB_M_R, RGB_M_SN, + BL_TOGG, BL_STEP, BL_BRTG, TO(_PLAY) + ) +}; + +#ifdef OLED_ENABLE +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + return OLED_ROTATION_180; // flips the display 180 degrees if offhand +} + +void oled_task_user(void) { + // Host Keyboard Layer Status + oled_write_ln_P(PSTR("ANAVI Macro Pad 8"), false); + oled_write_P(PSTR("Layer: "), false); + + switch (get_highest_layer(layer_state)) { + case _PLAY: + oled_write_ln_P(PSTR("VLC Play"), false); + break; + case _FRAME: + oled_write_ln_P(PSTR("VLC Frame"), false); + break; + case _DVD: + oled_write_ln_P(PSTR("VLC DVD"), false); + break; + case _FN: + oled_write_ln_P(PSTR("FN "), false); + break; + default: + // Or use the write_ln shortcut over adding '\n' to the end of your string + oled_write_ln_P(PSTR("N/A"), false); + } + + // Host Keyboard LED Status + led_t led_state = host_keyboard_led_state(); + oled_write_P(PSTR("Num Lock: "), false); + oled_write_ln_P(led_state.num_lock ? PSTR("On") : PSTR("Off"), false); + oled_write_P(PSTR("Caps Lock: "), false); + oled_write_ln_P(led_state.caps_lock ? PSTR("On") : PSTR("Off"), false); + oled_write_P(PSTR("Scroll Lock: "), false); + oled_write_ln_P(led_state.scroll_lock ? PSTR("On") : PSTR("Off"), false); + oled_write_P(PSTR("Backlit: "), false); + oled_write_ln_P(is_backlight_enabled() ? PSTR("On") : PSTR("Off"), false); +#ifdef RGBLIGHT_ENABLE + static char rgbStatusLine1[26] = {0}; + snprintf(rgbStatusLine1, sizeof(rgbStatusLine1), "RGB Mode: %d", rgblight_get_mode()); + oled_write_ln(rgbStatusLine1, false); + static char rgbStatusLine2[26] = {0}; + snprintf(rgbStatusLine2, sizeof(rgbStatusLine2), "h:%d s:%d v:%d", rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val()); + oled_write_ln(rgbStatusLine2, false); +#endif +} +#endif diff --git a/keyboards/anavi/macropad8/keymaps/zoom/keymap.c b/keyboards/anavi/macropad8/keymaps/zoom/keymap.c index 64f4f5b01b30..965bbec42926 100644 --- a/keyboards/anavi/macropad8/keymaps/zoom/keymap.c +++ b/keyboards/anavi/macropad8/keymaps/zoom/keymap.c @@ -52,12 +52,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; // flips the display 180 degrees if offhand } -void oled_task_user(void) { +bool oled_task_user(void) { // Host Keyboard Layer Status oled_write_ln_P(PSTR("ANAVI Macro Pad 8"), false); oled_write_P(PSTR("Active layer: "), false); @@ -92,5 +92,6 @@ void oled_task_user(void) { snprintf(rgbStatusLine2, sizeof(rgbStatusLine2), "h:%d s:%d v:%d", rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val()); oled_write_ln(rgbStatusLine2, false); #endif + return false; } #endif diff --git a/keyboards/anavi/macropad8/rules.mk b/keyboards/anavi/macropad8/rules.mk index d4443e3fe6ed..0b957fb1f0cc 100644 --- a/keyboards/anavi/macropad8/rules.mk +++ b/keyboards/anavi/macropad8/rules.mk @@ -2,30 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -OLED_DRIVER_ENABLE = yes # Enable Support for SSD1306 or SH1106 OLED Displays; Communicating over I2C - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enable Support for SSD1306 or SH1106 OLED Displays; Communicating over I2C diff --git a/keyboards/angel17/alpha/alpha.c b/keyboards/angel17/alpha/alpha.c index 3d2d1de77905..1c2936e1574a 100644 --- a/keyboards/angel17/alpha/alpha.c +++ b/keyboards/angel17/alpha/alpha.c @@ -14,38 +14,3 @@ * along with this program. If not, see . */ #include "alpha.h" - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -/* - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - -*/ diff --git a/keyboards/angel17/alpha/config.h b/keyboards/angel17/alpha/config.h index a6d1fed8abc7..35e9c132b85c 100644 --- a/keyboards/angel17/alpha/config.h +++ b/keyboards/angel17/alpha/config.h @@ -121,59 +121,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -192,26 +139,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/angel17/alpha/rules.mk b/keyboards/angel17/alpha/rules.mk index a67a6c9a39ed..38368f70f2b4 100644 --- a/keyboards/angel17/alpha/rules.mk +++ b/keyboards/angel17/alpha/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = numpad_5x4 diff --git a/keyboards/angel17/info.json b/keyboards/angel17/info.json index 823235348abb..24a6c6be08cc 100644 --- a/keyboards/angel17/info.json +++ b/keyboards/angel17/info.json @@ -2,8 +2,6 @@ "keyboard_name": "angel17", "url": "https://kakunpc.booth.pm/", "maintainer": "kakunpc", - "width": 4, - "height": 5, "layouts": { "LAYOUT_numpad_5x4": { "layout": [ diff --git a/keyboards/angel17/keymaps/default/keymap.c b/keyboards/angel17/keymaps/default/keymap.c index 8f54b72b4279..1b9f52846dea 100644 --- a/keyboards/angel17/keymaps/default/keymap.c +++ b/keyboards/angel17/keymaps/default/keymap.c @@ -36,19 +36,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { RGB_TOG, KC_NO, KC_NO ), }; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/angel17/rev1/config.h b/keyboards/angel17/rev1/config.h index 2364428c5473..a43208d2b908 100644 --- a/keyboards/angel17/rev1/config.h +++ b/keyboards/angel17/rev1/config.h @@ -116,59 +116,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -187,26 +134,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/angel17/rev1/rev1.c b/keyboards/angel17/rev1/rev1.c index f97e6caed426..40ff30e62029 100644 --- a/keyboards/angel17/rev1/rev1.c +++ b/keyboards/angel17/rev1/rev1.c @@ -14,38 +14,3 @@ * along with this program. If not, see . */ #include "rev1.h" - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -/* - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - -*/ diff --git a/keyboards/angel17/rev1/rules.mk b/keyboards/angel17/rev1/rules.mk index 430c757c28b3..06d49c54d446 100644 --- a/keyboards/angel17/rev1/rules.mk +++ b/keyboards/angel17/rev1/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = numpad_5x4 diff --git a/keyboards/angel17/rules.mk b/keyboards/angel17/rules.mk index b4a8f4b5f711..efe1013a5793 100644 --- a/keyboards/angel17/rules.mk +++ b/keyboards/angel17/rules.mk @@ -2,33 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = numpad_5x4 diff --git a/keyboards/angel64/alpha/alpha.c b/keyboards/angel64/alpha/alpha.c index 3d2d1de77905..1c2936e1574a 100644 --- a/keyboards/angel64/alpha/alpha.c +++ b/keyboards/angel64/alpha/alpha.c @@ -14,38 +14,3 @@ * along with this program. If not, see . */ #include "alpha.h" - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -/* - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - -*/ diff --git a/keyboards/angel64/alpha/config.h b/keyboards/angel64/alpha/config.h index 2e44309124c4..b3270fdd8b3e 100644 --- a/keyboards/angel64/alpha/config.h +++ b/keyboards/angel64/alpha/config.h @@ -114,59 +114,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -185,26 +132,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/angel64/alpha/info.json b/keyboards/angel64/alpha/info.json index 3d1d85b36483..6fceff4490e9 100644 --- a/keyboards/angel64/alpha/info.json +++ b/keyboards/angel64/alpha/info.json @@ -2,8 +2,6 @@ "keyboard_name": "angel64_alpha", "url": "https://kakunpc.booth.pm/", "maintainer": "kakunpc", - "width": 14, - "height": 5, "layouts": { "LAYOUT": { "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}, {"label":"back", "x":13, "y":0}, {"label":"Q", "x":0, "y":1, "w":1.5}, {"label":"W", "x":1.5, "y":1}, {"label":"E", "x":2.5, "y":1}, {"label":"R", "x":3.5, "y":1}, {"label":"T", "x":4.5, "y":1}, {"label":"Y", "x":5.5, "y":1}, {"label":"U", "x":6.5, "y":1}, {"label":"I", "x":7.5, "y":1}, {"label":"O", "x":8.5, "y":1}, {"label":"P", "x":9.5, "y":1}, {"label":"[", "x":10.5, "y":1}, {"label":"]", "x":11.5, "y":1}, {"label":"|", "x":12.5, "y":1, "w":1.5}, {"label":"Ctrl", "x":0, "y":2}, {"label":"A", "x":1, "y":2}, {"label":"S", "x":2, "y":2}, {"label":"D", "x":3, "y":2}, {"label":"F", "x":4, "y":2}, {"label":"G", "x":5, "y":2}, {"label":"H", "x":6, "y":2}, {"label":"J", "x":7, "y":2}, {"label":"K", "x":8, "y":2}, {"label":"L", "x":9, "y":2}, {"label":";:", "x":10, "y":2}, {"label":"`", "x":11, "y":2}, {"label":"Enter", "x":12, "y":2, "w":2}, {"label":"Shift", "x":0, "y":3, "w":1.5}, {"label":"Z", "x":1.5, "y":3}, {"label":"X", "x":2.5, "y":3}, {"label":"C", "x":3.5, "y":3}, {"label":"V", "x":4.5, "y":3}, {"label":"B", "x":5.5, "y":3}, {"label":"N", "x":6.5, "y":3}, {"label":"M", "x":7.5, "y":3}, {"label":"<", "x":8.5, "y":3}, {"label":">", "x":9.5, "y":3}, {"label":"?", "x":10.5, "y":3}, {"label":"\u2191", "x":11.5, "y":3}, {"label":"Fn", "x":12.5, "y":3, "w":1.5}, {"label":"Caps", "x":0, "y":4}, {"label":"Alt", "x":1, "y":4}, {"label":"Start", "x":2, "y":4, "w":1.5}, {"label":"Ctrl", "x":3.5, "y":4, "w":1.5}, {"label":"Space", "x":5, "y":4, "w":2}, {"label":"Ctrl", "x":7, "y":4, "w":1.5}, {"label":"Alt", "x":8.5, "y":4, "w":1.5}, {"label":"\u2190", "x":10, "y":4}, {"label":"\u2193", "x":11, "y":4}, {"label":"\u2192", "x":12, "y":4}, {"label":"Alt", "x":13, "y":4}] diff --git a/keyboards/angel64/alpha/keymaps/default/keymap.c b/keyboards/angel64/alpha/keymaps/default/keymap.c index 7e880e18c626..0f2a8dada1a5 100644 --- a/keyboards/angel64/alpha/keymaps/default/keymap.c +++ b/keyboards/angel64/alpha/keymaps/default/keymap.c @@ -37,8 +37,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_NO, KC_NO, KC_NO, _______, KC_NO, _______, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO), }; -#ifdef OLED_DRIVER_ENABLE -void oled_task_user(void) { +#ifdef OLED_ENABLE +bool oled_task_user(void) { oled_write_P(PSTR("Layer: "), false); switch (biton32(layer_state)) { case BASE: @@ -56,5 +56,6 @@ void oled_task_user(void) { oled_write_P(IS_HOST_LED_ON(USB_LED_NUM_LOCK) ? PSTR("NUMLCK ") : PSTR(" "), false); oled_write_P(IS_HOST_LED_ON(USB_LED_CAPS_LOCK) ? PSTR("CAPLCK ") : PSTR(" "), false); oled_write_P(IS_HOST_LED_ON(USB_LED_SCROLL_LOCK) ? PSTR("SCRLCK ") : PSTR(" "), false); + return false; } #endif diff --git a/keyboards/angel64/rev1/config.h b/keyboards/angel64/rev1/config.h index 2e44309124c4..b3270fdd8b3e 100644 --- a/keyboards/angel64/rev1/config.h +++ b/keyboards/angel64/rev1/config.h @@ -114,59 +114,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -185,26 +132,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/angel64/rev1/info.json b/keyboards/angel64/rev1/info.json index 7006c0c7a9b0..fe6b4f5e058f 100644 --- a/keyboards/angel64/rev1/info.json +++ b/keyboards/angel64/rev1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "angel64_rev1", "url": "https://kakunpc.booth.pm/", "maintainer": "kakunpc", - "width": 15, - "height": 5, "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}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"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":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":7, "y":2}, {"label":"J", "x":8, "y":2}, {"label":"K", "x":9, "y":2}, {"label":"L", "x":10, "y":2}, {"label":":", "x":11, "y":2}, {"label":"\"", "x":12, "y":2}, {"label":"Enter", "x":13, "y":2, "w":2}, {"label":"Shift", "x":0, "y":3, "w":2.5}, {"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.5}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Alt", "x":1.25, "y":4, "w":1.5}, {"label":"Win", "x":2.75, "y":4, "w":1.5}, {"x":4.25, "y":4}, {"x":5.25, "y":4, "w":1.5}, {"x":6.75, "y":4, "w":1.5}, {"x":8.25, "y":4, "w":1.5}, {"x":9.75, "y":4}, {"label":"Alt", "x":10.75, "y":4, "w":1.5}, {"label":"Menu", "x":12.25, "y":4, "w":1.5}, {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}] diff --git a/keyboards/angel64/rev1/keymaps/default/keymap.c b/keyboards/angel64/rev1/keymaps/default/keymap.c index 905387ac9be8..7ad3964e24f3 100644 --- a/keyboards/angel64/rev1/keymaps/default/keymap.c +++ b/keyboards/angel64/rev1/keymaps/default/keymap.c @@ -24,11 +24,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_APP, KC_RCTL), }; -#ifdef OLED_DRIVER_ENABLE -void oled_task_user(void) { +#ifdef OLED_ENABLE +bool oled_task_user(void) { // Host Keyboard LED Status oled_write_P(IS_HOST_LED_ON(USB_LED_NUM_LOCK) ? PSTR("NUMLCK ") : PSTR(" "), false); oled_write_P(IS_HOST_LED_ON(USB_LED_CAPS_LOCK) ? PSTR("CAPLCK ") : PSTR(" "), false); oled_write_P(IS_HOST_LED_ON(USB_LED_SCROLL_LOCK) ? PSTR("SCRLCK ") : PSTR(" "), false); + return false; } #endif diff --git a/keyboards/angel64/rev1/keymaps/kakunpc/keymap.c b/keyboards/angel64/rev1/keymaps/kakunpc/keymap.c index 6f70dd72c391..6c5184c1b3a8 100644 --- a/keyboards/angel64/rev1/keymaps/kakunpc/keymap.c +++ b/keyboards/angel64/rev1/keymaps/kakunpc/keymap.c @@ -172,8 +172,8 @@ void matrix_scan_user(void) { #endif } -#ifdef OLED_DRIVER_ENABLE -void oled_task_user(void) { +#ifdef OLED_ENABLE +bool oled_task_user(void) { oled_write_P(PSTR("Layer: "), false); switch (biton32(layer_state)) { case BASE: @@ -191,5 +191,6 @@ void oled_task_user(void) { oled_write_P(IS_HOST_LED_ON(USB_LED_NUM_LOCK) ? PSTR("NUMLCK ") : PSTR(" "), false); oled_write_P(IS_HOST_LED_ON(USB_LED_CAPS_LOCK) ? PSTR("CAPLCK ") : PSTR(" "), false); oled_write_P(IS_HOST_LED_ON(USB_LED_SCROLL_LOCK) ? PSTR("SCRLCK ") : PSTR(" "), false); + return false; } #endif diff --git a/keyboards/angel64/rev1/rev1.c b/keyboards/angel64/rev1/rev1.c index f97e6caed426..40ff30e62029 100644 --- a/keyboards/angel64/rev1/rev1.c +++ b/keyboards/angel64/rev1/rev1.c @@ -14,38 +14,3 @@ * along with this program. If not, see . */ #include "rev1.h" - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -/* - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - -*/ diff --git a/keyboards/angel64/rules.mk b/keyboards/angel64/rules.mk index 9bb80ed5bde6..2eb50ce57b4f 100644 --- a/keyboards/angel64/rules.mk +++ b/keyboards/angel64/rules.mk @@ -2,34 +2,23 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = no # 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 = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 -OLED_DRIVER_ENABLE = yes +AUDIO_ENABLE = no # Audio output +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 CUSTOM_MATRIX = yes SRC += matrix.c diff --git a/keyboards/anomalykb/a65i/a65i.c b/keyboards/anomalykb/a65i/a65i.c new file mode 100644 index 000000000000..ed9a82938c52 --- /dev/null +++ b/keyboards/anomalykb/a65i/a65i.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Lfgberg + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "a65i.h" diff --git a/keyboards/anomalykb/a65i/a65i.h b/keyboards/anomalykb/a65i/a65i.h new file mode 100644 index 000000000000..bc8a2bff18ba --- /dev/null +++ b/keyboards/anomalykb/a65i/a65i.h @@ -0,0 +1,101 @@ +/* Copyright 2021 Lfgberg + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +/* This a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT_all( \ + 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, K3E, K3F, \ + K40, K41, K42, K47, K4A, K4B, 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, 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, KC_NO, K3E, K3F }, \ + { K40, K41, K42, KC_NO, KC_NO, KC_NO, KC_NO, K47, KC_NO, KC_NO, K4A, K4B, KC_NO, 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, K2D, K2F, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, K3F, \ + K40, K41, K42, K47, K4A, K4B, K4D, K4E, K4F \ +) \ +{ \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KC_NO, K0F }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KC_NO, K1E, K1F }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO, K2F }, \ + { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KC_NO, K3E, K3F }, \ + { K40, K41, K42, KC_NO, KC_NO, KC_NO, KC_NO, K47, KC_NO, KC_NO, K4A, K4B, KC_NO, K4D, K4E, K4F }, \ +} + +#define LAYOUT_65_ansi_blocker_split_bs( \ + 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, K2D, K2F, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, K3F, \ + K40, K41, K42, K47, K4A, K4B, 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, K1E, K1F }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO, K2F }, \ + { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KC_NO, K3E, K3F }, \ + { K40, K41, K42, KC_NO, KC_NO, KC_NO, KC_NO, K47, KC_NO, KC_NO, K4A, K4B, KC_NO, K4D, K4E, K4F }, \ +} + +#define LAYOUT_65_iso_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, 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, K47, K4A, K4B, K4D, K4E, K4F \ +) \ +{ \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KC_NO, 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, K2C, KC_NO, K2E, K2F }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KC_NO, K3E, K3F }, \ + { K40, K41, K42, KC_NO, KC_NO, KC_NO, KC_NO, K47, KC_NO, KC_NO, K4A, K4B, KC_NO, K4D, K4E, K4F }, \ +} + +#define LAYOUT_65_iso_blocker_split_bs( \ + 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, K2C, K2E, K2F, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, K3F, \ + K40, K41, K42, K47, K4A, K4B, 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, K2C, KC_NO, K2E, K2F }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KC_NO, K3E, K3F }, \ + { K40, K41, K42, KC_NO, KC_NO, KC_NO, KC_NO, K47, KC_NO, KC_NO, K4A, K4B, KC_NO, K4D, K4E, K4F }, \ +} diff --git a/keyboards/anomalykb/a65i/config.h b/keyboards/anomalykb/a65i/config.h new file mode 100644 index 000000000000..b6ca4a8b8457 --- /dev/null +++ b/keyboards/anomalykb/a65i/config.h @@ -0,0 +1,46 @@ +/* +Copyright 2021 Lfgberg + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4C47 +#define PRODUCT_ID 0x0004 +#define DEVICE_VER 0x0001 +#define MANUFACTURER AnomalyKB +#define PRODUCT AnomalyKB A65I + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 16 + +#define MATRIX_ROW_PINS { B3, B2, B1, B0, B5 } +#define MATRIX_COL_PINS { D7, D6, D4, B4, B6, E6, F1, B7, C6, C7, D5, D3, D2, F0, D1, D0 } +#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/anomalykb/a65i/info.json b/keyboards/anomalykb/a65i/info.json new file mode 100644 index 000000000000..2cd7e5a4e852 --- /dev/null +++ b/keyboards/anomalykb/a65i/info.json @@ -0,0 +1,395 @@ +{ + "keyboard_name": "A65I", + "maintainer": "Lfgberg", + "layout_aliases": { + "LAYOUT_ansi": "LAYOUT_65_ansi_blocker", + "LAYOUT_ansi_splitbs": "LAYOUT_65_ansi_blocker_split_bs", + "LAYOUT_iso": "LAYOUT_65_iso_blocker", + "LAYOUT_iso_splitbs": "LAYOUT_65_iso_blocker_split_bs" + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"!", "x":1, "y":0}, + {"label":"@", "x":2, "y":0}, + {"label":"#", "x":3, "y":0}, + {"label":"$", "x":4, "y":0}, + {"label":"%", "x":5, "y":0}, + {"label":"^", "x":6, "y":0}, + {"label":"&", "x":7, "y":0}, + {"label":"*", "x":8, "y":0}, + {"label":"(", "x":9, "y":0}, + {"label":")", "x":10, "y":0}, + {"label":"_", "x":11, "y":0}, + {"label":"+", "x":12, "y":0}, + {"label":"~", "x":13, "y":0}, + {"label":"Back", "x":14, "y":0}, + {"label":"Print", "x":15, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"{", "x":11.5, "y":1}, + {"label":"}", "x":12.5, "y":1}, + {"label":"|", "x":13.5, "y":1, "w":1.5}, + {"label":"PgUp", "x":15, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":":", "x":10.75, "y":2}, + {"label":"\"", "x":11.75, "y":2}, + {"label":"ISO #/~", "x":16.25, "y":2}, + {"label":"ANSI Enter", "x":12.75, "y":2, "w":2.25}, + {"label":"ISO Enter", "x":17.25, "y":1, "w":1.25, "h":2}, + {"label":"PgDn", "x":15, "y":2}, + + {"label":"Shift", "x":0, "y":3, "w":1.25}, + {"label":"ISO \\/|", "x":1.25, "y":3}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"Up", "x":14, "y":3}, + {"label":"Delete", "x":15, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"Win", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space", "x":3.75, "y":4, "w":6.25}, + {"label":"Alt", "x":10, "y":4, "w":1.25}, + {"label":"MO(1)", "x":11.25, "y":4, "w":1.25}, + {"label":"Left", "x":13, "y":4}, + {"label":"Down", "x":14, "y":4}, + {"label":"Right", "x":15, "y":4} + ] + }, + "LAYOUT_65_ansi_blocker": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"!", "x":1, "y":0}, + {"label":"@", "x":2, "y":0}, + {"label":"#", "x":3, "y":0}, + {"label":"$", "x":4, "y":0}, + {"label":"%", "x":5, "y":0}, + {"label":"^", "x":6, "y":0}, + {"label":"&", "x":7, "y":0}, + {"label":"*", "x":8, "y":0}, + {"label":"(", "x":9, "y":0}, + {"label":")", "x":10, "y":0}, + {"label":"_", "x":11, "y":0}, + {"label":"+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + {"label":"Print", "x":15, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"{", "x":11.5, "y":1}, + {"label":"}", "x":12.5, "y":1}, + {"label":"|", "x":13.5, "y":1, "w":1.5}, + {"label":"PgUp", "x":15, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":":", "x":10.75, "y":2}, + {"label":"\"", "x":11.75, "y":2}, + {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + {"label":"PgDn", "x":15, "y":2}, + + {"label":"Shift", "x":0, "y":3, "w":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"Up", "x":14, "y":3}, + {"label":"Delete", "x":15, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"Win", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space", "x":3.75, "y":4, "w":6.25}, + {"label":"Alt", "x":10, "y":4, "w":1.25}, + {"label":"MO(1)", "x":11.25, "y":4, "w":1.25}, + {"label":"Left", "x":13, "y":4}, + {"label":"Down", "x":14, "y":4}, + {"label":"Right", "x":15, "y":4} + ] + }, + "LAYOUT_65_ansi_blocker_split_bs": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"!", "x":1, "y":0}, + {"label":"@", "x":2, "y":0}, + {"label":"#", "x":3, "y":0}, + {"label":"$", "x":4, "y":0}, + {"label":"%", "x":5, "y":0}, + {"label":"^", "x":6, "y":0}, + {"label":"&", "x":7, "y":0}, + {"label":"*", "x":8, "y":0}, + {"label":"(", "x":9, "y":0}, + {"label":")", "x":10, "y":0}, + {"label":"_", "x":11, "y":0}, + {"label":"+", "x":12, "y":0}, + {"label":"~", "x":13, "y":0}, + {"label":"Back", "x":14, "y":0}, + {"label":"Print", "x":15, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"{", "x":11.5, "y":1}, + {"label":"}", "x":12.5, "y":1}, + {"label":"|", "x":13.5, "y":1, "w":1.5}, + {"label":"PgUp", "x":15, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":":", "x":10.75, "y":2}, + {"label":"\"", "x":11.75, "y":2}, + {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + {"label":"PgDn", "x":15, "y":2}, + + {"label":"Shift", "x":0, "y":3, "w":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"Up", "x":14, "y":3}, + {"label":"Delete", "x":15, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"Win", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space", "x":3.75, "y":4, "w":6.25}, + {"label":"Alt", "x":10, "y":4, "w":1.25}, + {"label":"MO(1)", "x":11.25, "y":4, "w":1.25}, + {"label":"Left", "x":13, "y":4}, + {"label":"Down", "x":14, "y":4}, + {"label":"Right", "x":15, "y":4} + ] + }, + "LAYOUT_65_iso_blocker": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"!", "x":1, "y":0}, + {"label":"@", "x":2, "y":0}, + {"label":"#", "x":3, "y":0}, + {"label":"$", "x":4, "y":0}, + {"label":"%", "x":5, "y":0}, + {"label":"^", "x":6, "y":0}, + {"label":"&", "x":7, "y":0}, + {"label":"*", "x":8, "y":0}, + {"label":"(", "x":9, "y":0}, + {"label":")", "x":10, "y":0}, + {"label":"_", "x":11, "y":0}, + {"label":"+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + {"label":"Print", "x":15, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"{", "x":11.5, "y":1}, + {"label":"}", "x":12.5, "y":1}, + {"label":"PgUp", "x":15, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":":", "x":10.75, "y":2}, + {"label":"\"", "x":11.75, "y":2}, + {"label":"~", "x":12.75, "y":2}, + {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, + {"label":"PgDn", "x":15, "y":2}, + + {"label":"Shift", "x":0, "y":3, "w":1.25}, + {"label":"|", "x":1.25, "y":3}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"Up", "x":14, "y":3}, + {"label":"Delete", "x":15, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"Win", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space", "x":3.75, "y":4, "w":6.25}, + {"label":"Alt", "x":10, "y":4, "w":1.25}, + {"label":"MO(1)", "x":11.25, "y":4, "w":1.25}, + {"label":"Left", "x":13, "y":4}, + {"label":"Down", "x":14, "y":4}, + {"label":"Right", "x":15, "y":4} + ] + }, + "LAYOUT_65_iso_blocker_split_bs": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"!", "x":1, "y":0}, + {"label":"@", "x":2, "y":0}, + {"label":"#", "x":3, "y":0}, + {"label":"$", "x":4, "y":0}, + {"label":"%", "x":5, "y":0}, + {"label":"^", "x":6, "y":0}, + {"label":"&", "x":7, "y":0}, + {"label":"*", "x":8, "y":0}, + {"label":"(", "x":9, "y":0}, + {"label":")", "x":10, "y":0}, + {"label":"_", "x":11, "y":0}, + {"label":"+", "x":12, "y":0}, + {"label":"~", "x":13, "y":0}, + {"label":"Back", "x":14, "y":0}, + {"label":"Print", "x":15, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"{", "x":11.5, "y":1}, + {"label":"}", "x":12.5, "y":1}, + {"label":"PgUp", "x":15, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":":", "x":10.75, "y":2}, + {"label":"\"", "x":11.75, "y":2}, + {"label":"~", "x":12.75, "y":2}, + {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, + {"label":"PgDn", "x":15, "y":2}, + + {"label":"Shift", "x":0, "y":3, "w":1.25}, + {"label":"|", "x":1.25, "y":3}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"Up", "x":14, "y":3}, + {"label":"Delete", "x":15, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"Win", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space", "x":3.75, "y":4, "w":6.25}, + {"label":"Alt", "x":10, "y":4, "w":1.25}, + {"label":"MO(1)", "x":11.25, "y":4, "w":1.25}, + {"label":"Left", "x":13, "y":4}, + {"label":"Down", "x":14, "y":4}, + {"label":"Right", "x":15, "y":4} + ] + } + } +} diff --git a/keyboards/anomalykb/a65i/keymaps/ansi_splitbs/keymap.c b/keyboards/anomalykb/a65i/keymaps/ansi_splitbs/keymap.c new file mode 100644 index 000000000000..6c7b1094b583 --- /dev/null +++ b/keyboards/anomalykb/a65i/keymaps/ansi_splitbs/keymap.c @@ -0,0 +1,61 @@ +/* Copyright 2021 Lfgberg + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Default Layer + * ,----------------------------------------------------------------. + * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|~ |Back|Home| + * |----------------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ |PgUp| + * |----------------------------------------------------------------| + * |Caps | A| S| D| F| G| H| J| K| L| ;| '|Return |PgDn| + * |----------------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up|Del | + * |----------------------------------------------------------------| + * |Ctrl|Win |Alt | Space |Alt| FN|Ctrl|Lef|Dow|Rig | + * `----------------------------------------------------------------' + */ + +[0] = LAYOUT_65_ansi_blocker_split_bs( + 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_PSCR, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), + + /* Layer One + * ,----------------------------------------------------------------. + * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |Home| + * |----------------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ |PgUp| + * |----------------------------------------------------------------| + * |Caps | A| S| D| F| G| H| J| K| L| ;| '|Return |PgDn| + * |----------------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up|Del | + * |----------------------------------------------------------------| + * |Ctrl|Win |Alt | Space |Alt| FN|Ctrl|Lef|Dow|Rig | + * `----------------------------------------------------------------' + */ + + [1] = LAYOUT_65_ansi_blocker_split_bs( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +}; diff --git a/keyboards/anomalykb/a65i/keymaps/default/keymap.c b/keyboards/anomalykb/a65i/keymaps/default/keymap.c new file mode 100644 index 000000000000..c12189c62103 --- /dev/null +++ b/keyboards/anomalykb/a65i/keymaps/default/keymap.c @@ -0,0 +1,61 @@ +/* Copyright 2021 Lfgberg + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Default Layer + * ,----------------------------------------------------------------. + * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |Home| + * |----------------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ |PgUp| + * |----------------------------------------------------------------| + * |Caps | A| S| D| F| G| H| J| K| L| ;| '|Return |PgDn| + * |----------------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up|Del | + * |----------------------------------------------------------------| + * |Ctrl|Win |Alt | Space |Alt| FN|Ctrl|Lef|Dow|Rig | + * `----------------------------------------------------------------' + */ + +[0] = LAYOUT_65_ansi_blocker( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PSCR, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), + + /* Layer One + * ,----------------------------------------------------------------. + * |RST| F1| F2| F3| F4| F5| F6| F7| F8| F9| F0|F11|F12|Backsp |Home| + * |----------------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ |PgUp| + * |----------------------------------------------------------------| + * |Caps | A| S| D| F| G| H| J| K| L| ;| '|Return |PgDn| + * |----------------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up|Del | + * |----------------------------------------------------------------| + * |Ctrl|Win |Alt | Space |Alt| FN|Ctrl|Lef|Dow|Rig | + * `----------------------------------------------------------------' + */ + + [1] = LAYOUT_65_ansi_blocker( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +}; diff --git a/keyboards/anomalykb/a65i/keymaps/iso/keymap.c b/keyboards/anomalykb/a65i/keymaps/iso/keymap.c new file mode 100644 index 000000000000..b40ea686bc3e --- /dev/null +++ b/keyboards/anomalykb/a65i/keymaps/iso/keymap.c @@ -0,0 +1,61 @@ +/* Copyright 2021 Lfgberg + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Default Layer + * ,----------------------------------------------------------------. + * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| Delete|Home| + * |----------------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| E |PgUp| + * |-----------------------------------------------------| N |----| + * |Caps | A| S| D| F| G| H| J| K| L| ;|' |~ | T |PgDn| + * |----------------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up|Del | + * |----------------------------------------------------------------| + * |Ctrl|Win |Alt | Space |Alt| FN|Ctrl|Lef|Dow|Rig | + * `----------------------------------------------------------------' + */ + +[0] = LAYOUT_65_iso_blocker( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PSCR, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), + + /* Layer One + * ,----------------------------------------------------------------. + * |RST| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| Delete|Home| + * |----------------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| E |PgUp| + * |-----------------------------------------------------| N |----| + * |Caps | A| S| D| F| G| H| J| K| L| ;|' |~ | T |PgDn| + * |----------------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up|Del | + * |----------------------------------------------------------------| + * |Ctrl|Win |Alt | Space |Alt| FN|Ctrl|Lef|Dow|Rig | + * `----------------------------------------------------------------' + */ + + [1] = LAYOUT_65_iso_blocker( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +}; diff --git a/keyboards/anomalykb/a65i/keymaps/iso_splitbs/keymap.c b/keyboards/anomalykb/a65i/keymaps/iso_splitbs/keymap.c new file mode 100644 index 000000000000..7e9b97d406ef --- /dev/null +++ b/keyboards/anomalykb/a65i/keymaps/iso_splitbs/keymap.c @@ -0,0 +1,61 @@ +/* Copyright 2021 Lfgberg + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Default Layer + * ,----------------------------------------------------------------. + * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|~ |Back|Home| + * |----------------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| E |PgUp| + * |-----------------------------------------------------| N |----| + * |Caps | A| S| D| F| G| H| J| K| L| ;|' |~ | T |PgDn| + * |----------------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up|Del | + * |----------------------------------------------------------------| + * |Ctrl|Win |Alt | Space |Alt| FN|Ctrl|Lef|Dow|Rig | + * `----------------------------------------------------------------' + */ + +[0] = LAYOUT_65_iso_blocker_split_bs( + 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_PSCR, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), + + /* Layer One + * ,----------------------------------------------------------------. + * |RST| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|~ |Back|Home| + * |----------------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| E |PgUp| + * |-----------------------------------------------------| N |----| + * |Caps | A| S| D| F| G| H| J| K| L| ;|' |~ | T |PgDn| + * |----------------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up|Del | + * |----------------------------------------------------------------| + * |Ctrl|Win |Alt | Space |Alt| FN|Ctrl|Lef|Dow|Rig | + * `----------------------------------------------------------------' + */ + + [1] = LAYOUT_65_iso_blocker_split_bs( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +}; diff --git a/keyboards/anomalykb/a65i/keymaps/via/config.h b/keyboards/anomalykb/a65i/keymaps/via/config.h new file mode 100644 index 000000000000..e352e4256781 --- /dev/null +++ b/keyboards/anomalykb/a65i/keymaps/via/config.h @@ -0,0 +1,19 @@ +/* Copyright 2021 Lfgberg + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define DYNAMIC_KEYMAP_LAYER_COUNT 2 diff --git a/keyboards/anomalykb/a65i/keymaps/via/keymap.c b/keyboards/anomalykb/a65i/keymaps/via/keymap.c new file mode 100644 index 000000000000..c12189c62103 --- /dev/null +++ b/keyboards/anomalykb/a65i/keymaps/via/keymap.c @@ -0,0 +1,61 @@ +/* Copyright 2021 Lfgberg + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Default Layer + * ,----------------------------------------------------------------. + * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |Home| + * |----------------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ |PgUp| + * |----------------------------------------------------------------| + * |Caps | A| S| D| F| G| H| J| K| L| ;| '|Return |PgDn| + * |----------------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up|Del | + * |----------------------------------------------------------------| + * |Ctrl|Win |Alt | Space |Alt| FN|Ctrl|Lef|Dow|Rig | + * `----------------------------------------------------------------' + */ + +[0] = LAYOUT_65_ansi_blocker( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PSCR, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), + + /* Layer One + * ,----------------------------------------------------------------. + * |RST| F1| F2| F3| F4| F5| F6| F7| F8| F9| F0|F11|F12|Backsp |Home| + * |----------------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ |PgUp| + * |----------------------------------------------------------------| + * |Caps | A| S| D| F| G| H| J| K| L| ;| '|Return |PgDn| + * |----------------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up|Del | + * |----------------------------------------------------------------| + * |Ctrl|Win |Alt | Space |Alt| FN|Ctrl|Lef|Dow|Rig | + * `----------------------------------------------------------------' + */ + + [1] = LAYOUT_65_ansi_blocker( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +}; diff --git a/keyboards/bm60poker/keymaps/via/rules.mk b/keyboards/anomalykb/a65i/keymaps/via/rules.mk similarity index 100% rename from keyboards/bm60poker/keymaps/via/rules.mk rename to keyboards/anomalykb/a65i/keymaps/via/rules.mk diff --git a/keyboards/anomalykb/a65i/readme.md b/keyboards/anomalykb/a65i/readme.md new file mode 100644 index 000000000000..fbf30301cba3 --- /dev/null +++ b/keyboards/anomalykb/a65i/readme.md @@ -0,0 +1,17 @@ +# a65i + +![a65i](https://i.imgur.com/J4fzVVth.jpg) + +PCB designed by Lfgberg for the AnomalyKB a65i. + +To enter bootloader mode, either utilize the reset button near the MCU, or short the ESC key for bootmagic lite. + +* Keyboard Maintainer: [Lfgberg](https://github.com/lfgberg) +* Hardware Supported: A65I PCB +* Hardware Availability: [AnomalyKB](anomalykb.co) + +Make example for this keyboard (after setting up your build environment): + + make anomalykb/a65i: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/anomalykb/a65i/rules.mk b/keyboards/anomalykb/a65i/rules.mk new file mode 100644 index 000000000000..bd93772f16be --- /dev/null +++ b/keyboards/anomalykb/a65i/rules.mk @@ -0,0 +1,19 @@ +# 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 +# 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 diff --git a/keyboards/aos/tkl/info.json b/keyboards/aos/tkl/info.json index f9665f3597f0..dff8b1643923 100644 --- a/keyboards/aos/tkl/info.json +++ b/keyboards/aos/tkl/info.json @@ -1,11 +1,8 @@ { "keyboard_name": "Ace of Spades TKL", "maintainer": "rys", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT_tkl_iso_wkl": { - "key_count": 85, "layout": [ {"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, diff --git a/keyboards/aos/tkl/rules.mk b/keyboards/aos/tkl/rules.mk index a56c38a8d1b2..afed76d6b6d9 100644 --- a/keyboards/aos/tkl/rules.mk +++ b/keyboards/aos/tkl/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/aozora/aozora.c b/keyboards/aozora/aozora.c new file mode 100644 index 000000000000..446685834892 --- /dev/null +++ b/keyboards/aozora/aozora.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Salmon Cat 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 . + */ + +#include "aozora.h" diff --git a/keyboards/aozora/aozora.h b/keyboards/aozora/aozora.h new file mode 100644 index 000000000000..30a4258ac8d5 --- /dev/null +++ b/keyboards/aozora/aozora.h @@ -0,0 +1,47 @@ +/* Copyright 2021 Salmon Cat 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 . + */ + +#pragma once + +#include "quantum.h" + +#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, K1E, 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, K3D, K3E, K3F, \ + K40, K41, K42, K44, K48, K49, K4A, 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, K1E, 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, KC_NO, KC_NO, K3D, K3E, K3F }, \ + { K40, K41, K42, KC_NO, K44, KC_NO, KC_NO, KC_NO, K48, K49, K4A, KC_NO, KC_NO, K4D, K4E, K4F }, \ +} + +#define LAYOUT_all( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0G, 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, \ + K30, K3G, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3C, K3D, K3E, K3F, \ + K40, K41, K42, K44, K48, K49, K4A, K4D, K4E, K4F \ +) { \ + { 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, KC_NO }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO, KC_NO, KC_NO }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, KC_NO, K3C, K3D, K3E, K3F, K3G }, \ + { K40, K41, K42, KC_NO, K44, KC_NO, KC_NO, KC_NO, K48, K49, K4A, KC_NO, KC_NO, K4D, K4E, K4F, KC_NO }, \ +} diff --git a/keyboards/aozora/config.h b/keyboards/aozora/config.h new file mode 100644 index 000000000000..67972a84b2b3 --- /dev/null +++ b/keyboards/aozora/config.h @@ -0,0 +1,48 @@ +/* Copyright 2021 Salmon Cat 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 . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x04D8 +#define PRODUCT_ID 0xE86A +#define DEVICE_VER 0x0001 +#define MANUFACTURER Salmon Cat Studio +#define PRODUCT Aozora + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 17 + +/* + * 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 { F6, F5, F4, F1, F0 } +#define MATRIX_COL_PINS { B0, B1, B2, B3, B7, D0, D1, D4, D6, D7, B4, B5, B6, C6, C7, F7, D2} + +#define DIODE_DIRECTION COL2ROW + +/* EEPROM for via */ +#define DYNAMIC_KEYMAP_LAYER_COUNT 2 diff --git a/keyboards/aozora/info.json b/keyboards/aozora/info.json new file mode 100644 index 000000000000..0f442cc12eb2 --- /dev/null +++ b/keyboards/aozora/info.json @@ -0,0 +1,83 @@ +{ + "keyboard_name": "Aozora", + "url": "https://salmoncat.studio/pages/aozora-%E9%9D%92%E7%A9%BA-6-9-21-7-10-21", + "maintainer": "Phooood", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"K00 (F6,B0)", "x":0, "y":0}, + {"label":"K01 (F6,B1)", "x":1, "y":0}, + {"label":"K02 (F6,B2)", "x":2, "y":0}, + {"label":"K03 (F6,B3)", "x":3, "y":0}, + {"label":"K04 (F6,B7)", "x":4, "y":0}, + {"label":"K05 (F6,D0)", "x":5, "y":0}, + {"label":"K06 (F6,D1)", "x":6, "y":0}, + {"label":"K07 (F6,D4)", "x":7, "y":0}, + {"label":"K08 (F6,D6)", "x":8, "y":0}, + {"label":"K09 (F6,D7)", "x":9, "y":0}, + {"label":"K0A (F6,B4)", "x":10, "y":0}, + {"label":"K0B (F6,B5)", "x":11, "y":0}, + {"label":"K0C (F6,B6)", "x":12, "y":0}, + {"label":"K0D (F6,C6)", "x":13, "y":0, "w":2}, + {"label":"K0E (F6,C7)", "x":15.25, "y":0}, + {"label":"K0F (F6,F7)", "x":16.25, "y":0}, + {"label":"K10 (F5,B0)", "x":0, "y":1, "w":1.5}, + {"label":"K11 (F5,B1)", "x":1.5, "y":1}, + {"label":"K12 (F5,B2)", "x":2.5, "y":1}, + {"label":"K13 (F5,B3)", "x":3.5, "y":1}, + {"label":"K14 (F5,B7)", "x":4.5, "y":1}, + {"label":"K15 (F5,D0)", "x":5.5, "y":1}, + {"label":"K16 (F5,D1)", "x":6.5, "y":1}, + {"label":"K17 (F5,D4)", "x":7.5, "y":1}, + {"label":"K18 (F5,D6)", "x":8.5, "y":1}, + {"label":"K19 (F5,D7)", "x":9.5, "y":1}, + {"label":"K1A (F5,B4)", "x":10.5, "y":1}, + {"label":"K1B (F5,B5)", "x":11.5, "y":1}, + {"label":"K1C (F5,B6)", "x":12.5, "y":1}, + {"label":"K1D (F5,C6)", "x":13.5, "y":1, "w":1.5}, + {"label":"K1E (F5,C7)", "x":15.25, "y":1}, + {"label":"K1F (F5,F7)", "x":16.25, "y":1}, + {"label":"K20 (F4,B0)", "x":0, "y":2, "w":1.75}, + {"label":"K21 (F4,B1)", "x":1.75, "y":2}, + {"label":"K22 (F4,B2)", "x":2.75, "y":2}, + {"label":"K23 (F4,B3)", "x":3.75, "y":2}, + {"label":"K24 (F4,B7)", "x":4.75, "y":2}, + {"label":"K25 (F4,D0)", "x":5.75, "y":2}, + {"label":"K26 (F4,D1)", "x":6.75, "y":2}, + {"label":"K27 (F4,D4)", "x":7.75, "y":2}, + {"label":"K28 (F4,D6)", "x":8.75, "y":2}, + {"label":"K29 (F4,D7)", "x":9.75, "y":2}, + {"label":"K2A (F4,B4)", "x":10.75, "y":2}, + {"label":"K2B (F4,B5)", "x":11.75, "y":2}, + {"label":"K2D (F4,C6)", "x":12.75, "y":2, "w":2.25}, + {"label":"K30 (F1,B0)", "x":0, "y":3, "w":2.25}, + {"label":"K31 (F1,B1)", "x":2.25, "y":3}, + {"label":"K32 (F1,B2)", "x":3.25, "y":3}, + {"label":"K33 (F1,B3)", "x":4.25, "y":3}, + {"label":"K34 (F1,B7)", "x":5.25, "y":3}, + {"label":"K35 (F1,D0)", "x":6.25, "y":3}, + {"label":"K36 (F1,D1)", "x":7.25, "y":3}, + {"label":"K37 (F1,D4)", "x":8.25, "y":3}, + {"label":"K38 (F1,D6)", "x":9.25, "y":3}, + {"label":"K39 (F1,D7)", "x":10.25, "y":3}, + {"label":"K3A (F1,B4)", "x":11.25, "y":3}, + {"label":"K3D (F1,C6)", "x":12.25, "y":3, "w":2.75}, + {"label":"K3E (F1,C7)", "x":15.25, "y":3}, + {"label":"K3F (F1,F7)", "x":16.25, "y":3}, + {"label":"K40 (F0,B0)", "x":0, "y":4, "w":1.25}, + {"label":"K41 (F0,B1)", "x":1.25, "y":4, "w":1.25}, + {"label":"K42 (F0,B2)", "x":2.5, "y":4, "w":1.25}, + {"label":"K44 (F0,B7)", "x":3.75, "y":4, "w":6.25}, + {"label":"K48 (F0,D6)", "x":10, "y":4, "w":1.25}, + {"label":"K49 (F0,D7)", "x":11.25, "y":4, "w":1.25}, + {"label":"K4A (F0,B4)", "x":12.5, "y":4, "w":1.25}, + {"label":"K4D (F0,C6)", "x":14.25, "y":4}, + {"label":"K4E (F0,C7)", "x":15.25, "y":4}, + {"label":"K4F (F0,F7)", "x":16.25, "y":4} + ] + }, + "LAYOUT_all": { + "layout": [{"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"label":"|", "x":13, "y":1.25}, {"label":"Backspace", "x":14, "y":1.25}, {"label":"Insert", "x":15.25, "y":1.25}, {"label":"Home", "x":16.25, "y":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Y", "x":6.5, "y":2.25}, {"label":"U", "x":7.5, "y":2.25}, {"label":"I", "x":8.5, "y":2.25}, {"label":"O", "x":9.5, "y":2.25}, {"label":"P", "x":10.5, "y":2.25}, {"label":"{", "x":11.5, "y":2.25}, {"label":"}", "x":12.5, "y":2.25}, {"label":"|", "x":13.5, "y":2.25, "w":1.5}, {"label":"Del", "x":15.25, "y":2.25}, {"label":"End", "x":16.25, "y":2.25}, {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"H", "x":6.75, "y":3.25}, {"label":"J", "x":7.75, "y":3.25}, {"label":"K", "x":8.75, "y":3.25}, {"label":"L", "x":9.75, "y":3.25}, {"label":":", "x":10.75, "y":3.25}, {"label":"\"", "x":11.75, "y":3.25}, {"label":"~", "x":12.75, "y":3.25}, {"label":"Enter", "x":13.75, "y":3.25, "w":1.25}, {"label":"Shift", "x":0, "y":4.25, "w":1.25}, {"label":"|", "x":1.25, "y":4.25}, {"label":"Z", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"N", "x":7.25, "y":4.25}, {"label":"M", "x":8.25, "y":4.25}, {"label":"<", "x":9.25, "y":4.25}, {"label":">", "x":10.25, "y":4.25}, {"label":"?", "x":11.25, "y":4.25}, {"label":"\\", "x":12.25, "y":4.25}, {"label":"Shift", "x":13.25, "y":4.25, "w":1.75}, {"label":"\u2191", "x":15.25, "y":4.25}, {"label":"Fn", "x":16.25, "y":4.25}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, {"x":3.75, "y":5.25, "w":6.25}, {"label":"Alt", "x":10, "y":5.25, "w":1.25}, {"label":"Win", "x":11.25, "y":5.25, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.25, "w":1.25}, {"label":"\u2190", "x":14.25, "y":5.25}, {"label":"\u2193", "x":15.25, "y":5.25}, {"label":"\u2192", "x":16.25, "y":5.25}] + } + } +} diff --git a/keyboards/aozora/keymaps/default/keymap.c b/keyboards/aozora/keymaps/default/keymap.c new file mode 100644 index 000000000000..8229aaa29a7b --- /dev/null +++ b/keyboards/aozora/keymaps/default/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2021 Salmon Cat 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 . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PSCR, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; diff --git a/keyboards/aozora/keymaps/default_all/keymap.c b/keyboards/aozora/keymaps/default_all/keymap.c new file mode 100644 index 000000000000..3376f2e8cd38 --- /dev/null +++ b/keyboards/aozora/keymaps/default_all/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2021 Salmon Cat 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 . + */ + +#include QMK_KEYBOARD_H +#include "sendstring_jis.h" // macro sendstring for jis keyboard マクロ文字列送信時に日本語キーボード設定での文字化け回避 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = 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_INT3, KC_BSPC, KC_PSCR, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_PIPE, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = 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_F13, KC_F14, KC_F15, KC_F16, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; diff --git a/keyboards/aozora/keymaps/via/keymap.c b/keyboards/aozora/keymaps/via/keymap.c new file mode 100644 index 000000000000..3376f2e8cd38 --- /dev/null +++ b/keyboards/aozora/keymaps/via/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2021 Salmon Cat 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 . + */ + +#include QMK_KEYBOARD_H +#include "sendstring_jis.h" // macro sendstring for jis keyboard マクロ文字列送信時に日本語キーボード設定での文字化け回避 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = 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_INT3, KC_BSPC, KC_PSCR, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_PIPE, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = 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_F13, KC_F14, KC_F15, KC_F16, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; diff --git a/keyboards/aozora/keymaps/via/rules.mk b/keyboards/aozora/keymaps/via/rules.mk new file mode 100644 index 000000000000..32f462d06cac --- /dev/null +++ b/keyboards/aozora/keymaps/via/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no \ No newline at end of file diff --git a/keyboards/aozora/readme.md b/keyboards/aozora/readme.md new file mode 100644 index 000000000000..8d95940f874b --- /dev/null +++ b/keyboards/aozora/readme.md @@ -0,0 +1,17 @@ +# Aozora + +A 65%-style 69-key keyboard featuring a cloud-shaped badge. + +![SCS Aozora](https://i.imgur.com/dL5nonc.jpg) + +* Keyboard Maintainer: [Food](https://github.com/Phooood) +* Hardware Supported: [Aozora](https://salmoncat.studio/pages/aozora-%E9%9D%92%E7%A9%BA-6-9-21-7-10-21) +* Hardware Availability: [salmoncat.studio](https://salmoncat.studio/pages/aozora-%E9%9D%92%E7%A9%BA-6-9-21-7-10-21) | GB is over. + +Make example for this keyboard (after setting up your build environment): + + make aozora:default + +To reset, press the button on the back of the PCB. + +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/aozora/rules.mk b/keyboards/aozora/rules.mk new file mode 100644 index 000000000000..c1e7410f19c7 --- /dev/null +++ b/keyboards/aozora/rules.mk @@ -0,0 +1,20 @@ +# 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 = yes # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + diff --git a/keyboards/aplyard/aplx6/info.json b/keyboards/aplyard/aplx6/info.json index 97a9ac8d41d9..2df8d9fb3a7e 100644 --- a/keyboards/aplyard/aplx6/info.json +++ b/keyboards/aplyard/aplx6/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Aplx6", "url": "", "maintainer": "Aplyard", - "width": 3, - "height": 2, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/aplyard/aplx6/rev1/rules.mk b/keyboards/aplyard/aplx6/rev1/rules.mk index 905393fa3930..4cd1f3d468c7 100644 --- a/keyboards/aplyard/aplx6/rev1/rules.mk +++ b/keyboards/aplyard/aplx6/rev1/rules.mk @@ -2,30 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# 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 -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output UNICODE_ENABLE = yes # Unicode diff --git a/keyboards/aplyard/aplx6/rev2/config.h b/keyboards/aplyard/aplx6/rev2/config.h index b4bb7d62ad9a..2b30e67e099f 100644 --- a/keyboards/aplyard/aplx6/rev2/config.h +++ b/keyboards/aplyard/aplx6/rev2/config.h @@ -41,9 +41,8 @@ along with this program. If not, see . #define TAPPING_TERM 200 /* Encoder */ -#define ENCODERS_PAD_A { F4 } -#define ENCODERS_PAD_B { F5 } +#define ENCODERS_PAD_A { F5 } +#define ENCODERS_PAD_B { F4 } #define ENCODER_RESOLUTION 4 -#define ENCODER_DIRECTION_FLIP #define TAP_CODE_DELAY 50 diff --git a/keyboards/aplyard/aplx6/rev2/keymaps/default/keymap.c b/keyboards/aplyard/aplx6/rev2/keymaps/default/keymap.c index 91a76a828c2a..9c8ac545b238 100644 --- a/keyboards/aplyard/aplx6/rev2/keymaps/default/keymap.c +++ b/keyboards/aplyard/aplx6/rev2/keymaps/default/keymap.c @@ -77,7 +77,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -#if defined(OLED_DRIVER_ENABLE) +#if defined(OLED_ENABLE) static void render_logo(void) { //Logo for _MEDIA static const char PROGMEM logo1[] = { @@ -113,8 +113,9 @@ static void render_logo(void) { } } -void oled_task_user(void) { +bool oled_task_user(void) { render_logo(); + return false; } #endif diff --git a/keyboards/aplyard/aplx6/rev2/rules.mk b/keyboards/aplyard/aplx6/rev2/rules.mk index 5a66a6aa9141..29de2b6475e9 100644 --- a/keyboards/aplyard/aplx6/rev2/rules.mk +++ b/keyboards/aplyard/aplx6/rev2/rules.mk @@ -7,19 +7,17 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output UNICODE_ENABLE = yes # Unicode -OLED_DRIVER_ENABLE = yes # Enable Support for Oled Display +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enable Support for Oled Display ENCODER_ENABLE = yes # Enable Support for Encoder diff --git a/keyboards/arabica37/info.json b/keyboards/arabica37/info.json index 656433707cef..4aae9a644404 100644 --- a/keyboards/arabica37/info.json +++ b/keyboards/arabica37/info.json @@ -2,8 +2,6 @@ "keyboard_name": "arabica37 rev. 1", "url": "", "maintainer": "qmk", - "width": 15.25, - "height": 5.75, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/arabica37/keymaps/default/keymap.c b/keyboards/arabica37/keymaps/default/keymap.c index 877fb7347d8b..5a7a3c27380f 100644 --- a/keyboards/arabica37/keymaps/default/keymap.c +++ b/keyboards/arabica37/keymaps/default/keymap.c @@ -139,7 +139,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return true; } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { if (!is_keyboard_master()) { @@ -149,7 +149,7 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) { return rotation; } -void oled_task_user(void) { +bool oled_task_user(void) { void render_status(void) { // Host Keyboard Layer Status oled_write_P(PSTR("Layer: "), false); @@ -195,5 +195,6 @@ void oled_task_user(void) { } else { render_logo(); // Renders a static logo } + return false; } #endif diff --git a/keyboards/arabica37/keymaps/default/rules.mk b/keyboards/arabica37/keymaps/default/rules.mk index c582662134c4..d34d066ded93 100644 --- a/keyboards/arabica37/keymaps/default/rules.mk +++ b/keyboards/arabica37/keymaps/default/rules.mk @@ -1 +1,2 @@ -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/arabica37/rev1/rules.mk b/keyboards/arabica37/rev1/rules.mk index 251868bbda29..9517d000d184 100644 --- a/keyboards/arabica37/rev1/rules.mk +++ b/keyboards/arabica37/rev1/rules.mk @@ -2,30 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = yes diff --git a/keyboards/arch_36/info.json b/keyboards/arch_36/info.json index aedc658165dd..344674a426fd 100644 --- a/keyboards/arch_36/info.json +++ b/keyboards/arch_36/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Arch-36", "url": "", "maintainer": "obosob", - "width": 14, - "height": 5.1, "layouts": { "LAYOUT_split_3x5_3": { "layout": [ diff --git a/keyboards/arch_36/keymaps/default/keymap.c b/keyboards/arch_36/keymaps/default/keymap.c index 48412f812ae1..797ca8798fe0 100644 --- a/keyboards/arch_36/keymaps/default/keymap.c +++ b/keyboards/arch_36/keymaps/default/keymap.c @@ -122,7 +122,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return true; } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; @@ -229,81 +229,82 @@ static void render_status(void) { static void render_logo(void) { static const char PROGMEM logo[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x1c, 0x1c, 0x38, 0xf8, - 0xf0, 0xe0, 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, 0x00, - 0x00, 0x00, 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, 0xff, 0xf0, 0x00, 0x00, 0x00, - 0x03, 0x1f, 0x7f, 0xfe, 0xf0, 0xc0, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x87, 0x9f, 0x3f, 0xfc, 0xf0, - 0xe0, 0xc0, 0x00, 0x01, 0x07, 0x0f, 0x3f, 0x3f, 0x7f, 0xfe, 0xfe, 0xee, 0xce, 0xfe, 0x8e, 0x0e, - 0xfe, 0x8e, 0x0e, 0xfe, 0x8e, 0x0e, 0xfe, 0xfe, 0x7e, 0xee, 0xdc, 0x9c, 0x38, 0x78, 0xf0, 0xe0, - 0xc0, 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, 0xff, 0xff, 0xf7, 0xe3, 0xc3, 0xc7, 0x8f, 0x0e, 0x1f, - 0x1f, 0x3f, 0x7f, 0x7f, 0xfe, 0xfc, 0xf8, 0xf8, 0xf8, 0xf0, 0xf0, 0xf0, 0xe0, 0xe0, 0xe0, 0xe0, - 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe7, 0xff, 0xdb, 0xff, 0xff, 0x00, 0x00, 0x00, 0x03, - 0x1f, 0xff, 0xfe, 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, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xfc, 0xff, 0xff, 0x8f, 0x8f, 0x0f, 0x0f, 0x0f, 0x0f, - 0x0e, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0f, 0x0f, 0x0c, 0x08, 0x0f, 0x0c, 0x08, - 0x0f, 0x0c, 0x08, 0x0f, 0x0c, 0x08, 0x0f, 0x0f, 0x0e, 0x07, 0x03, 0x01, 0x80, 0xc0, 0xe0, 0x40, - 0x01, 0x03, 0x07, 0x1f, 0xfe, 0xfc, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, - 0xe0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf3, 0xf3, 0xf3, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xf3, 0xff, 0xff, 0x9f, 0x8f, 0x80, 0x80, 0xc0, 0xf0, 0xfc, - 0x7e, 0x1e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0xce, 0xce, 0xef, 0x67, 0x67, 0x6f, 0x6f, 0xef, 0xee, - 0xce, 0x8e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0x60, - 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xfc, 0xff, - 0xbf, 0x83, 0x8f, 0xff, 0xff, 0xf0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xfe, - 0x1c, 0x0c, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf8, 0xfc, 0x1c, 0x0e, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x0c, 0x06, 0x06, 0x06, - 0x0e, 0xfe, 0xfc, 0xf8, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x33, 0x33, 0x33, 0x33, 0x33, 0x31, - 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, 0x78, 0xff, - 0xef, 0xc7, 0x80, 0x00, 0x00, 0x00, 0xe0, 0xf8, 0xfc, 0x7e, 0x3f, 0x1f, 0x1b, 0x39, 0x70, 0xf0, - 0xe0, 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, 0x30, 0x3f, 0x3f, 0x1f, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x07, 0x3f, 0x3f, 0x3c, 0x20, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x1f, 0x1c, 0x38, 0x30, - 0x30, 0x30, 0x30, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x3f, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x38, 0x30, 0x30, 0x30, 0x30, 0x30, 0x38, 0x3f, - 0x1f, 0x1f, 0x0f, 0x00, 0x00, 0x00, 0x07, 0x1f, 0x1f, 0x3c, 0x30, 0x30, 0x30, 0x30, 0x3c, 0x1f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x1c, 0x1c, 0x38, 0xf8, + 0xf0, 0xe0, 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, 0x00, + 0x00, 0x00, 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, 0xff, 0xf0, 0x00, 0x00, 0x00, + 0x03, 0x1f, 0x7f, 0xfe, 0xf0, 0xc0, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x87, 0x9f, 0x3f, 0xfc, 0xf0, + 0xe0, 0xc0, 0x00, 0x01, 0x07, 0x0f, 0x3f, 0x3f, 0x7f, 0xfe, 0xfe, 0xee, 0xce, 0xfe, 0x8e, 0x0e, + 0xfe, 0x8e, 0x0e, 0xfe, 0x8e, 0x0e, 0xfe, 0xfe, 0x7e, 0xee, 0xdc, 0x9c, 0x38, 0x78, 0xf0, 0xe0, + 0xc0, 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, 0xff, 0xff, 0xf7, 0xe3, 0xc3, 0xc7, 0x8f, 0x0e, 0x1f, + 0x1f, 0x3f, 0x7f, 0x7f, 0xfe, 0xfc, 0xf8, 0xf8, 0xf8, 0xf0, 0xf0, 0xf0, 0xe0, 0xe0, 0xe0, 0xe0, + 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe7, 0xff, 0xdb, 0xff, 0xff, 0x00, 0x00, 0x00, 0x03, + 0x1f, 0xff, 0xfe, 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, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xfc, 0xff, 0xff, 0x8f, 0x8f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0e, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0f, 0x0f, 0x0c, 0x08, 0x0f, 0x0c, 0x08, + 0x0f, 0x0c, 0x08, 0x0f, 0x0c, 0x08, 0x0f, 0x0f, 0x0e, 0x07, 0x03, 0x01, 0x80, 0xc0, 0xe0, 0x40, + 0x01, 0x03, 0x07, 0x1f, 0xfe, 0xfc, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, + 0xe0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf3, 0xf3, 0xf3, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xf3, 0xff, 0xff, 0x9f, 0x8f, 0x80, 0x80, 0xc0, 0xf0, 0xfc, + 0x7e, 0x1e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0xce, 0xce, 0xef, 0x67, 0x67, 0x6f, 0x6f, 0xef, 0xee, + 0xce, 0x8e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0x60, + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xfc, 0xff, + 0xbf, 0x83, 0x8f, 0xff, 0xff, 0xf0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xfe, + 0x1c, 0x0c, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf8, 0xfc, 0x1c, 0x0e, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x0c, 0x06, 0x06, 0x06, + 0x0e, 0xfe, 0xfc, 0xf8, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x33, 0x33, 0x33, 0x33, 0x33, 0x31, + 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, 0x78, 0xff, + 0xef, 0xc7, 0x80, 0x00, 0x00, 0x00, 0xe0, 0xf8, 0xfc, 0x7e, 0x3f, 0x1f, 0x1b, 0x39, 0x70, 0xf0, + 0xe0, 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, 0x30, 0x3f, 0x3f, 0x1f, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x07, 0x3f, 0x3f, 0x3c, 0x20, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x1f, 0x1c, 0x38, 0x30, + 0x30, 0x30, 0x30, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x3f, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x38, 0x30, 0x30, 0x30, 0x30, 0x30, 0x38, 0x3f, + 0x1f, 0x1f, 0x0f, 0x00, 0x00, 0x00, 0x07, 0x1f, 0x1f, 0x3c, 0x30, 0x30, 0x30, 0x30, 0x3c, 0x1f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; oled_write_raw_P(logo, 1024); } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) } else { render_logo(); } + return false; } #endif diff --git a/keyboards/arch_36/keymaps/obosob/config.h b/keyboards/arch_36/keymaps/obosob/config.h index 02be7b511a97..a60cafb5df77 100644 --- a/keyboards/arch_36/keymaps/obosob/config.h +++ b/keyboards/arch_36/keymaps/obosob/config.h @@ -16,7 +16,7 @@ #pragma once -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE #define OLED_DISPLAY_128X64 #endif diff --git a/keyboards/arch_36/keymaps/obosob/keymap.c b/keyboards/arch_36/keymaps/obosob/keymap.c index a938314ac8a5..104ee378f51a 100644 --- a/keyboards/arch_36/keymaps/obosob/keymap.c +++ b/keyboards/arch_36/keymaps/obosob/keymap.c @@ -67,9 +67,9 @@ enum keycodes { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Qwerty ________ ________ -// ________| E |________ ________| I |________ +// ________| E |________ ________| I |________ // | W | | R |________ ________| U | | O | -// ________| |________| | T | | Y | |________| |________ +// ________| |________| | T | | Y | |________| |________ // | Q |________| D |________| | | |________| K |________| P | // | | S | | F |________| |________| J | | L | | // |________| |________| | G | | H | |________| |________| @@ -79,9 +79,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // | Z |________| |________| | | |________| |________| ? | // | | | Esc |________| |________| Tab | | / | // |________| | Ctrl | Enter |________ ________| Space | Alt | |________| -// |________| NUM | Del | | BkSp | NAV |________| +// |________| NUM | Del | | BkSp | NAV |________| // ________| Shift | | Shift |________ -// |________| |________| +// |________| |________| [_QWERTY] = LAYOUT_split_3x5_3( KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, @@ -90,9 +90,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { MY_ESC, MY_ENT, MY_DEL, MY_BSPC, MY_SPC, MY_TAB ), // Colemak (Mod-DH) ________ ________ -// ________| F |________ ________| U |________ +// ________| F |________ ________| U |________ // | W | | P |________ ________| L | | Y | -// ________| |________| | B | | J | |________| |________ +// ________| |________| | B | | J | |________| |________ // | Q |________| S |________| | | |________| E |________| : | // | | R | | T |________| |________| N | | I | ; | // |________| |________| | G | | K | |________| |________| @@ -102,9 +102,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // | Z |________| |________| | | |________| |________| ? | // | | | Esc |________| |________| Tab | | / | // |________| | Ctrl | Enter |________ ________| Space | Alt | |________| -// |________| NUM | Del | | BkSp | NAV |________| +// |________| NUM | Del | | BkSp | NAV |________| // ________| Shift | | Shift |________ -// |________| |________| +// |________| |________| [_COLMAK] = LAYOUT_split_3x5_3( KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, @@ -113,9 +113,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { MY_ESC, MY_ENT, MY_DEL, MY_BSPC, MY_SPC, MY_TAB ), // Number ________ ________ -// ________| F3 |________ ________| 8 |________ +// ________| F3 |________ ________| 8 |________ // | F2 | | F4 |________ ________| 7 | | 9 | -// ________| |________| | | | + | |________| |________ +// ________| |________| | | | + | |________| |________ // | F1 |________| F7 |________| | | |________| 5 |________| / | // | | F6 | | F8 |________| |________| 4 | | 6 | | // |________| |________| | | | 0 | |________| |________| @@ -125,7 +125,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // | F9 |________| |________| | | |________| |________| * | // | | | |________| |________| | | | // |________| | | |________ ________| ADJUST | | |________| -// |________| **** | | | | |________| +// |________| **** | | | | |________| // |________| | | |________| // |________| |________| [_NUM] = LAYOUT_split_3x5_3( @@ -135,9 +135,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { XXXXXXX, _______, XXXXXXX, _______, _______, KC_0 ), // Navigation ________ ________ -// ________| OS |________ ________| PgUp |________ +// ________| OS |________ ________| PgUp |________ // | OS | Ctrl | OS |________ ________| PgDn | | End | -// ________| Alt |________| Shift | AltTab | | Home | |________| |________ +// ________| Alt |________| Shift | AltTab | | Home | |________| |________ // | OS |________| Ctrl |________| | | |________| Up |________| PrtScr | // | Super | Alt | | Shift |________| |________| Down | | Right | | // |________| |________| | | | Left | |________| |________| @@ -147,19 +147,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // | |________| |________| | | |________| |________| | // | | | |________| |________| | | | // |________| | | ADJUST |________ ________| | | |________| -// |________| | | | | **** |________| +// |________| | | | | **** |________| // |________| | | |________| -// |________| |________| - [_NAV] = LAYOUT_split_3x5_3( +// |________| |________| + [_NAV] = LAYOUT_split_3x5_3( OS_GUI, OS_ALT, OS_CTL, OS_SFT, XXXXXXX, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_PSCR, KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_INS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, AS_TAB, A_TAB, XXXXXXX, XXXXXXX, _______, _______, _______, XXXXXXX, _______, XXXXXXX ), // Symbol ________ ________ -// ________| { |________ ________| |________ +// ________| { |________ ________| |________ // | > | | } |________ ________| | | | -// ________| |________| | ` | | | |________| |________ +// ________| |________| | ` | | | |________| |________ // | < |________| ( |________| | | |________| |________| | | // | | £ | | ) |________| |________| - | | & | | // |________| |________| | ^ | | _ | |________| |________| @@ -169,20 +169,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // | \ |________| |________| | | |________| |________| # | // | | | ? |________| |________| ! | | | // |________| | | ' |________ ________| . | | |________| -// |________| | " | | , | |________| +// |________| | " | | , | |________| // |________| | | |________| -// |________| |________| -// +// |________| |________| +// [_SYM] = LAYOUT_split_3x5_3( KC_LT, KC_GT, KC_LCBR, KC_RCBR, KC_GRV, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_NUPI, KC_ASTR, KC_HASH, KC_LPRN, KC_RPRN, KC_CIRC, KC_UNDS, KC_MINS, XXXXXXX, KC_AMPR, KC_PIPE, KC_NUBS, KC_DLR, KC_LBRC, KC_RBRC, KC_DQUO, KC_EQL, KC_PLUS, _______, KC_PERC, KC_NUHS, - KC_QUES, KC_QUOT, KC_AT, KC_COMM, KC_DOT, KC_EXLM + KC_QUES, KC_QUOT, KC_AT, KC_COMM, KC_DOT, KC_EXLM ), // Miscellaneous ________ ________ -// ________| {|} |________ ________| |________ +// ________| {|} |________ ________| |________ // | | | {|} |________ ________| | | | -// ________| |________| | | | | |________| |________ +// ________| |________| | | | | |________| |________ // | <|> |________| (|) |________| | | |________| |________| | // | | | | (|) |________| |________| | | | | // |________| |________| | | | | |________| |________| @@ -192,7 +192,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // | |________| |________| | | |________| |________| | // | | | ?_^ |________| |________| !_^ | | | // |________| | | '|' |________ ________| ._^ | | |________| -// |________| | "|" | | ,_ | |________| +// |________| | "|" | | ,_ | |________| // |________| | | |________| // |________| |________| // @@ -203,9 +203,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { QUESSPC, QUOT, DQUOT, COMMSPC, DOTSPC, EXLMSPC ), // Adjust ________ ________ -// ________| RESET |________ ________| |________ +// ________| RESET |________ ________| |________ // | | EEPROM | RESET |________ ________| | | | -// ________| |________| | | | | |________| |________ +// ________| |________| | | | | |________| |________ // | |________| RGB |________| | | |________| |________| | // | | RGB | Hue+ | RGB |________| |________| | | | | // |________| Toggle |________| Sat+ | RGB | | | |________| |________| @@ -215,13 +215,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // | |________| |________| Bri- | | |________| |________| | // | | | |________| |________| | | | // |________| | | |________ ________| | | |________| -// |________| **** | | | | **** |________| +// |________| **** | | | | **** |________| // |________| | | |________| // |________| |________| [_ADJUST] = LAYOUT_split_3x5_3( - XXXXXXX, WOKE, EEP_RST, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, QWERTY, COLEMAK, XXXXXXX, XXXXXXX, - XXXXXXX, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, WOKE, EEP_RST, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, QWERTY, COLEMAK, XXXXXXX, XXXXXXX, + XXXXXXX, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX ), }; @@ -235,12 +235,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case QWERTY: if (record->event.pressed) { - set_single_persistent_default_layer(_QWERTY); + set_single_persistent_default_layer(_QWERTY); } return false; case COLEMAK: if (record->event.pressed) { - set_single_persistent_default_layer(_COLMAK); + set_single_persistent_default_layer(_COLMAK); } return false; case SYM: @@ -396,7 +396,7 @@ layer_state_t layer_state_set_user(layer_state_t state) { return state; } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE #define ANIM_NUM_FRAMES 4 #define ANIM_FRAME_DURATION 100 @@ -530,273 +530,273 @@ static void render_logo(void) { static const char PROGMEM frame[ANIM_NUM_FRAMES][1024] = { { // leekspin: frame 0 - 0xff, 0xbf, 0xfb, 0x6f, 0xff, 0xdb, 0x7f, 0xf7, 0xde, 0x7c, 0xf1, 0xc6, 0x98, 0x21, 0x66, 0x9a, - 0xc9, 0x24, 0x33, 0xcf, 0x2f, 0xfd, 0xff, 0x6b, 0x7f, 0x9d, 0x81, 0x76, 0x14, 0x81, 0x67, 0x0f, - 0xfb, 0xff, 0xef, 0xbb, 0xff, 0xef, 0xbb, 0xff, 0xef, 0xbb, 0xff, 0xef, 0xbb, 0xff, 0xef, 0xbb, - 0xff, 0x6f, 0xfb, 0xdf, 0x77, 0xff, 0x0d, 0xe0, 0x3f, 0xc0, 0x0d, 0x37, 0xd0, 0x26, 0xa9, 0xd8, - 0xc7, 0x1d, 0xf0, 0xff, 0xff, 0xf0, 0xc7, 0xb1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf1, 0xc6, - 0xff, 0xf7, 0xf8, 0xf3, 0xcf, 0x90, 0xf7, 0xfc, 0xe3, 0x9b, 0x2e, 0xe2, 0xfc, 0x03, 0xfc, 0x7c, - 0x83, 0x1b, 0x6c, 0xa5, 0xb3, 0x4e, 0x59, 0x64, 0x13, 0xdb, 0xae, 0x20, 0xdf, 0xff, 0xbb, 0xef, - 0xff, 0xbb, 0xef, 0xdf, 0x7b, 0xef, 0xbf, 0xfb, 0x6f, 0xff, 0xdb, 0x7f, 0xf7, 0xdf, 0x7b, 0xef, - 0xff, 0xff, 0xdd, 0x77, 0xff, 0xdd, 0x77, 0xff, 0xdd, 0x77, 0xff, 0xdd, 0x77, 0xfe, 0xdc, 0xf1, - 0xcc, 0x23, 0x99, 0x64, 0x26, 0x98, 0x63, 0x0f, 0x30, 0xcc, 0x33, 0x24, 0xcd, 0x19, 0xe0, 0xff, - 0xff, 0xde, 0x7b, 0xef, 0xbe, 0xfb, 0xef, 0xbe, 0xfb, 0x6f, 0xfe, 0xdb, 0x7f, 0xf6, 0xdf, 0xfd, - 0xb7, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0x00, 0xbd, 0x67, 0x48, 0x13, 0xfc, 0x85, 0xff, 0x5f, 0x3f, - 0xb7, 0x97, 0xcf, 0xcb, 0xeb, 0xcf, 0x97, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xef, 0x9f, 0xd7, 0xcf, 0xcb, 0xdf, 0xd7, 0xcf, 0x8f, 0x3f, 0x1f, 0x7f, 0xff, 0xfe, 0xff, 0xf2, - 0x07, 0xe9, 0x3e, 0x00, 0x35, 0xef, 0xc9, 0x1b, 0xc2, 0xbc, 0x37, 0xc0, 0xff, 0xbf, 0xfb, 0x6e, - 0xef, 0xfb, 0xde, 0xf7, 0xb7, 0xfd, 0xef, 0xbd, 0xf7, 0x77, 0xdd, 0xff, 0xb7, 0xfd, 0xef, 0xbb, - 0xff, 0xff, 0xdd, 0xf7, 0x7f, 0xdd, 0xf7, 0x7f, 0xdd, 0xf7, 0x7f, 0xdd, 0xf7, 0xbf, 0xed, 0xff, - 0xdf, 0xf7, 0xf6, 0x7c, 0xf9, 0xb1, 0xe6, 0xcb, 0x18, 0xa4, 0xb3, 0x09, 0xfc, 0xff, 0xfb, 0x6f, - 0xfe, 0xdf, 0xfb, 0xbf, 0xf7, 0x7e, 0xef, 0xfd, 0xb7, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0xb6, 0xff, - 0x6d, 0xff, 0xdb, 0x7f, 0xf6, 0xdf, 0xf9, 0x21, 0x8e, 0xfb, 0x00, 0x7e, 0xc0, 0xff, 0xfe, 0xff, - 0xf7, 0xff, 0xff, 0xff, 0x3f, 0x3f, 0x7f, 0x7f, 0x3f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, - 0x3f, 0x7f, 0x7f, 0x3f, 0x3f, 0x7f, 0x37, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xef, 0x3f, 0xc0, - 0x6e, 0x3b, 0x09, 0xe0, 0x6f, 0x1a, 0x92, 0x64, 0x6d, 0x99, 0xf2, 0x7f, 0xef, 0xfd, 0xb7, 0xff, - 0x7b, 0xde, 0xf7, 0xbf, 0xfb, 0x7e, 0xef, 0xbf, 0xff, 0xfb, 0xef, 0xbe, 0xfb, 0x6f, 0xfe, 0xdb, - 0xff, 0xff, 0xfe, 0xf7, 0xbf, 0xfb, 0xff, 0xbf, 0xef, 0xfd, 0xdf, 0xf7, 0x7d, 0xff, 0xee, 0x7f, - 0xf7, 0xbd, 0xff, 0xef, 0xfb, 0xbf, 0xfd, 0x77, 0xfe, 0xa0, 0xf9, 0xfe, 0xf0, 0xef, 0xbf, 0xf7, - 0x7f, 0xfb, 0xde, 0xff, 0xbb, 0xff, 0xf7, 0xbe, 0xfb, 0xdf, 0xff, 0xfd, 0xb7, 0xfe, 0xef, 0x7f, - 0xfb, 0xbf, 0xed, 0xff, 0xf7, 0xbe, 0xfb, 0xdf, 0xf0, 0x06, 0x98, 0xe7, 0x3c, 0x03, 0xcf, 0x2f, - 0x1f, 0x9f, 0x7f, 0x7f, 0x7e, 0xf8, 0xf1, 0xe6, 0xf8, 0xc9, 0xca, 0xfa, 0xc8, 0xda, 0xf2, 0xcc, - 0xd9, 0xf2, 0xe0, 0xed, 0xf1, 0xfa, 0xfc, 0x7f, 0x7f, 0x3f, 0xbf, 0x9f, 0x0f, 0xe3, 0x34, 0x8d, - 0xe3, 0x18, 0x17, 0x85, 0xa0, 0x38, 0xcf, 0x13, 0xf8, 0xef, 0xdd, 0x7f, 0xff, 0xf7, 0xfd, 0xef, - 0xbb, 0xff, 0x7f, 0xf7, 0xfd, 0xef, 0xbf, 0xfb, 0xee, 0xff, 0xff, 0xbb, 0xef, 0x7f, 0xfb, 0xee, - 0xff, 0xff, 0xde, 0xf7, 0xff, 0xef, 0xbd, 0xff, 0xdb, 0xff, 0xfe, 0x77, 0x7f, 0xf7, 0xfd, 0x7f, - 0xf7, 0xff, 0xdb, 0x7e, 0xff, 0xef, 0xfb, 0xff, 0xb7, 0xff, 0xc8, 0xff, 0xff, 0xff, 0xfc, 0x27, - 0xff, 0xff, 0xff, 0xed, 0xbf, 0xfe, 0xf7, 0x7f, 0xfb, 0xdf, 0xfe, 0xf7, 0xdf, 0xff, 0xfd, 0x6f, - 0xff, 0xbf, 0xfb, 0xff, 0xde, 0xff, 0xf7, 0xfd, 0xbf, 0x00, 0x77, 0x6c, 0x89, 0x11, 0x04, 0xa2, - 0x08, 0x69, 0x46, 0x90, 0x02, 0x64, 0x94, 0x24, 0x09, 0x91, 0x85, 0x21, 0x09, 0xff, 0xf7, 0xdd, - 0x3d, 0x37, 0x1d, 0x1d, 0x06, 0xc6, 0x07, 0x10, 0x20, 0x83, 0x84, 0x30, 0x66, 0x19, 0x92, 0x06, - 0x40, 0x31, 0x0c, 0xc0, 0x14, 0xb7, 0x09, 0xfa, 0xff, 0xdf, 0xfb, 0xbf, 0xfd, 0xf7, 0xef, 0xef, - 0xff, 0xdf, 0xf7, 0xff, 0x6e, 0xff, 0xff, 0xde, 0xf7, 0xff, 0x7e, 0xdb, 0xff, 0xb7, 0xff, 0xee, - 0xff, 0xff, 0x7f, 0xf6, 0xdf, 0xfd, 0xff, 0xff, 0xef, 0xbb, 0xfe, 0x7f, 0xf7, 0xdf, 0xff, 0xf7, - 0xdd, 0xff, 0xff, 0xbf, 0xed, 0xff, 0xfe, 0xef, 0x3f, 0xde, 0xee, 0xc9, 0xff, 0xff, 0xdf, 0xff, - 0xc9, 0xff, 0x9e, 0xdf, 0xdf, 0xb7, 0xfd, 0xff, 0xef, 0xff, 0xfb, 0xef, 0xfd, 0xbf, 0xf7, 0xff, - 0xbb, 0xef, 0xff, 0xfd, 0xff, 0xef, 0x7e, 0xff, 0xb1, 0x06, 0x7b, 0xc9, 0x00, 0x42, 0x98, 0x31, - 0x46, 0x44, 0x38, 0x89, 0xc4, 0x30, 0x00, 0x42, 0x10, 0x84, 0x20, 0x08, 0x81, 0x03, 0x10, 0x80, - 0x24, 0x00, 0x88, 0x21, 0x04, 0xc0, 0x08, 0xa1, 0x34, 0x4c, 0x03, 0x90, 0x46, 0x00, 0x30, 0xd1, - 0x04, 0x69, 0x88, 0x30, 0x22, 0xcb, 0x04, 0x3f, 0xfb, 0xff, 0xfd, 0x6f, 0xfe, 0xf7, 0xbf, 0xfe, - 0xdb, 0xff, 0xee, 0x7f, 0xf7, 0xbf, 0xfd, 0xef, 0x7e, 0xf7, 0xff, 0xdb, 0xff, 0xb7, 0xfe, 0x7b, - 0xff, 0xff, 0xff, 0xbb, 0xef, 0xff, 0xf6, 0xff, 0xbf, 0xef, 0xff, 0xdf, 0xfd, 0x7f, 0xfe, 0xbf, - 0xef, 0xfe, 0xff, 0xdf, 0xff, 0xfe, 0xff, 0xe4, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xfe, 0xfb, 0x37, 0xfd, 0xfe, 0xff, 0xff, 0x6f, 0xff, 0xf6, 0xff, 0xbf, 0xfb, 0xdf, - 0xff, 0xff, 0x77, 0x7f, 0x9d, 0x9f, 0x27, 0x21, 0xcc, 0x18, 0x63, 0x84, 0x80, 0x2a, 0x29, 0x44, - 0x59, 0x43, 0x94, 0x34, 0x42, 0x49, 0x2c, 0x92, 0x92, 0x64, 0x0c, 0x80, 0xb8, 0x22, 0x86, 0x34, - 0x48, 0x23, 0x34, 0x44, 0xc9, 0x18, 0x46, 0x09, 0x80, 0x72, 0x08, 0x61, 0x80, 0x9b, 0x12, 0x64, - 0x8d, 0x90, 0x23, 0xa8, 0x26, 0x44, 0x59, 0x89, 0x24, 0xd3, 0x1f, 0xff, 0xfd, 0xef, 0xff, 0x7d, - 0xef, 0xfe, 0xf7, 0xbf, 0xfb, 0xdf, 0x7d, 0xff, 0xf7, 0xbf, 0xfe, 0xdb, 0x7f, 0xfd, 0xff, 0xcf, - 0xff, 0xff, 0xfb, 0xff, 0x7f, 0xff, 0xb6, 0xff, 0xff, 0xff, 0xfd, 0xb7, 0xff, 0xfb, 0xbf, 0xff, - 0xef, 0xfb, 0x7e, 0xdf, 0xff, 0xf6, 0xff, 0xdf, 0xff, 0xed, 0xfb, 0xff, 0xef, 0x2f, 0xef, 0xef, - 0xf7, 0xf7, 0x9f, 0xfb, 0xfc, 0xff, 0xf7, 0xdf, 0xbb, 0x7f, 0xff, 0xef, 0xfe, 0xf7, 0x1f, 0x07, - 0xd1, 0x19, 0x22, 0x66, 0x44, 0x98, 0x8b, 0x21, 0x64, 0x1a, 0x42, 0xd4, 0x14, 0x23, 0xa8, 0x4d, - 0x91, 0x92, 0x64, 0x25, 0x99, 0x44, 0x23, 0x88, 0x50, 0x96, 0xa3, 0x18, 0x44, 0x65, 0x99, 0x22, - 0x8a, 0x69, 0x25, 0x86, 0xd8, 0x1d, 0xb7, 0x9a, 0x9e, 0x30, 0x8b, 0xe2, 0xcc, 0xd9, 0xe1, 0xfc, - 0xee, 0xf8, 0xfe, 0xe1, 0xc9, 0x06, 0x98, 0x69, 0x22, 0x92, 0x4c, 0x23, 0xa7, 0x1f, 0x7d, 0xff, - 0xff, 0xbf, 0xef, 0xfb, 0xbe, 0xef, 0x7f, 0xfb, 0xfe, 0x77, 0xff, 0xbf, 0xef, 0xfd, 0xf7, 0xff, + 0xff, 0xbf, 0xfb, 0x6f, 0xff, 0xdb, 0x7f, 0xf7, 0xde, 0x7c, 0xf1, 0xc6, 0x98, 0x21, 0x66, 0x9a, + 0xc9, 0x24, 0x33, 0xcf, 0x2f, 0xfd, 0xff, 0x6b, 0x7f, 0x9d, 0x81, 0x76, 0x14, 0x81, 0x67, 0x0f, + 0xfb, 0xff, 0xef, 0xbb, 0xff, 0xef, 0xbb, 0xff, 0xef, 0xbb, 0xff, 0xef, 0xbb, 0xff, 0xef, 0xbb, + 0xff, 0x6f, 0xfb, 0xdf, 0x77, 0xff, 0x0d, 0xe0, 0x3f, 0xc0, 0x0d, 0x37, 0xd0, 0x26, 0xa9, 0xd8, + 0xc7, 0x1d, 0xf0, 0xff, 0xff, 0xf0, 0xc7, 0xb1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf1, 0xc6, + 0xff, 0xf7, 0xf8, 0xf3, 0xcf, 0x90, 0xf7, 0xfc, 0xe3, 0x9b, 0x2e, 0xe2, 0xfc, 0x03, 0xfc, 0x7c, + 0x83, 0x1b, 0x6c, 0xa5, 0xb3, 0x4e, 0x59, 0x64, 0x13, 0xdb, 0xae, 0x20, 0xdf, 0xff, 0xbb, 0xef, + 0xff, 0xbb, 0xef, 0xdf, 0x7b, 0xef, 0xbf, 0xfb, 0x6f, 0xff, 0xdb, 0x7f, 0xf7, 0xdf, 0x7b, 0xef, + 0xff, 0xff, 0xdd, 0x77, 0xff, 0xdd, 0x77, 0xff, 0xdd, 0x77, 0xff, 0xdd, 0x77, 0xfe, 0xdc, 0xf1, + 0xcc, 0x23, 0x99, 0x64, 0x26, 0x98, 0x63, 0x0f, 0x30, 0xcc, 0x33, 0x24, 0xcd, 0x19, 0xe0, 0xff, + 0xff, 0xde, 0x7b, 0xef, 0xbe, 0xfb, 0xef, 0xbe, 0xfb, 0x6f, 0xfe, 0xdb, 0x7f, 0xf6, 0xdf, 0xfd, + 0xb7, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0x00, 0xbd, 0x67, 0x48, 0x13, 0xfc, 0x85, 0xff, 0x5f, 0x3f, + 0xb7, 0x97, 0xcf, 0xcb, 0xeb, 0xcf, 0x97, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xef, 0x9f, 0xd7, 0xcf, 0xcb, 0xdf, 0xd7, 0xcf, 0x8f, 0x3f, 0x1f, 0x7f, 0xff, 0xfe, 0xff, 0xf2, + 0x07, 0xe9, 0x3e, 0x00, 0x35, 0xef, 0xc9, 0x1b, 0xc2, 0xbc, 0x37, 0xc0, 0xff, 0xbf, 0xfb, 0x6e, + 0xef, 0xfb, 0xde, 0xf7, 0xb7, 0xfd, 0xef, 0xbd, 0xf7, 0x77, 0xdd, 0xff, 0xb7, 0xfd, 0xef, 0xbb, + 0xff, 0xff, 0xdd, 0xf7, 0x7f, 0xdd, 0xf7, 0x7f, 0xdd, 0xf7, 0x7f, 0xdd, 0xf7, 0xbf, 0xed, 0xff, + 0xdf, 0xf7, 0xf6, 0x7c, 0xf9, 0xb1, 0xe6, 0xcb, 0x18, 0xa4, 0xb3, 0x09, 0xfc, 0xff, 0xfb, 0x6f, + 0xfe, 0xdf, 0xfb, 0xbf, 0xf7, 0x7e, 0xef, 0xfd, 0xb7, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0xb6, 0xff, + 0x6d, 0xff, 0xdb, 0x7f, 0xf6, 0xdf, 0xf9, 0x21, 0x8e, 0xfb, 0x00, 0x7e, 0xc0, 0xff, 0xfe, 0xff, + 0xf7, 0xff, 0xff, 0xff, 0x3f, 0x3f, 0x7f, 0x7f, 0x3f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, + 0x3f, 0x7f, 0x7f, 0x3f, 0x3f, 0x7f, 0x37, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xef, 0x3f, 0xc0, + 0x6e, 0x3b, 0x09, 0xe0, 0x6f, 0x1a, 0x92, 0x64, 0x6d, 0x99, 0xf2, 0x7f, 0xef, 0xfd, 0xb7, 0xff, + 0x7b, 0xde, 0xf7, 0xbf, 0xfb, 0x7e, 0xef, 0xbf, 0xff, 0xfb, 0xef, 0xbe, 0xfb, 0x6f, 0xfe, 0xdb, + 0xff, 0xff, 0xfe, 0xf7, 0xbf, 0xfb, 0xff, 0xbf, 0xef, 0xfd, 0xdf, 0xf7, 0x7d, 0xff, 0xee, 0x7f, + 0xf7, 0xbd, 0xff, 0xef, 0xfb, 0xbf, 0xfd, 0x77, 0xfe, 0xa0, 0xf9, 0xfe, 0xf0, 0xef, 0xbf, 0xf7, + 0x7f, 0xfb, 0xde, 0xff, 0xbb, 0xff, 0xf7, 0xbe, 0xfb, 0xdf, 0xff, 0xfd, 0xb7, 0xfe, 0xef, 0x7f, + 0xfb, 0xbf, 0xed, 0xff, 0xf7, 0xbe, 0xfb, 0xdf, 0xf0, 0x06, 0x98, 0xe7, 0x3c, 0x03, 0xcf, 0x2f, + 0x1f, 0x9f, 0x7f, 0x7f, 0x7e, 0xf8, 0xf1, 0xe6, 0xf8, 0xc9, 0xca, 0xfa, 0xc8, 0xda, 0xf2, 0xcc, + 0xd9, 0xf2, 0xe0, 0xed, 0xf1, 0xfa, 0xfc, 0x7f, 0x7f, 0x3f, 0xbf, 0x9f, 0x0f, 0xe3, 0x34, 0x8d, + 0xe3, 0x18, 0x17, 0x85, 0xa0, 0x38, 0xcf, 0x13, 0xf8, 0xef, 0xdd, 0x7f, 0xff, 0xf7, 0xfd, 0xef, + 0xbb, 0xff, 0x7f, 0xf7, 0xfd, 0xef, 0xbf, 0xfb, 0xee, 0xff, 0xff, 0xbb, 0xef, 0x7f, 0xfb, 0xee, + 0xff, 0xff, 0xde, 0xf7, 0xff, 0xef, 0xbd, 0xff, 0xdb, 0xff, 0xfe, 0x77, 0x7f, 0xf7, 0xfd, 0x7f, + 0xf7, 0xff, 0xdb, 0x7e, 0xff, 0xef, 0xfb, 0xff, 0xb7, 0xff, 0xc8, 0xff, 0xff, 0xff, 0xfc, 0x27, + 0xff, 0xff, 0xff, 0xed, 0xbf, 0xfe, 0xf7, 0x7f, 0xfb, 0xdf, 0xfe, 0xf7, 0xdf, 0xff, 0xfd, 0x6f, + 0xff, 0xbf, 0xfb, 0xff, 0xde, 0xff, 0xf7, 0xfd, 0xbf, 0x00, 0x77, 0x6c, 0x89, 0x11, 0x04, 0xa2, + 0x08, 0x69, 0x46, 0x90, 0x02, 0x64, 0x94, 0x24, 0x09, 0x91, 0x85, 0x21, 0x09, 0xff, 0xf7, 0xdd, + 0x3d, 0x37, 0x1d, 0x1d, 0x06, 0xc6, 0x07, 0x10, 0x20, 0x83, 0x84, 0x30, 0x66, 0x19, 0x92, 0x06, + 0x40, 0x31, 0x0c, 0xc0, 0x14, 0xb7, 0x09, 0xfa, 0xff, 0xdf, 0xfb, 0xbf, 0xfd, 0xf7, 0xef, 0xef, + 0xff, 0xdf, 0xf7, 0xff, 0x6e, 0xff, 0xff, 0xde, 0xf7, 0xff, 0x7e, 0xdb, 0xff, 0xb7, 0xff, 0xee, + 0xff, 0xff, 0x7f, 0xf6, 0xdf, 0xfd, 0xff, 0xff, 0xef, 0xbb, 0xfe, 0x7f, 0xf7, 0xdf, 0xff, 0xf7, + 0xdd, 0xff, 0xff, 0xbf, 0xed, 0xff, 0xfe, 0xef, 0x3f, 0xde, 0xee, 0xc9, 0xff, 0xff, 0xdf, 0xff, + 0xc9, 0xff, 0x9e, 0xdf, 0xdf, 0xb7, 0xfd, 0xff, 0xef, 0xff, 0xfb, 0xef, 0xfd, 0xbf, 0xf7, 0xff, + 0xbb, 0xef, 0xff, 0xfd, 0xff, 0xef, 0x7e, 0xff, 0xb1, 0x06, 0x7b, 0xc9, 0x00, 0x42, 0x98, 0x31, + 0x46, 0x44, 0x38, 0x89, 0xc4, 0x30, 0x00, 0x42, 0x10, 0x84, 0x20, 0x08, 0x81, 0x03, 0x10, 0x80, + 0x24, 0x00, 0x88, 0x21, 0x04, 0xc0, 0x08, 0xa1, 0x34, 0x4c, 0x03, 0x90, 0x46, 0x00, 0x30, 0xd1, + 0x04, 0x69, 0x88, 0x30, 0x22, 0xcb, 0x04, 0x3f, 0xfb, 0xff, 0xfd, 0x6f, 0xfe, 0xf7, 0xbf, 0xfe, + 0xdb, 0xff, 0xee, 0x7f, 0xf7, 0xbf, 0xfd, 0xef, 0x7e, 0xf7, 0xff, 0xdb, 0xff, 0xb7, 0xfe, 0x7b, + 0xff, 0xff, 0xff, 0xbb, 0xef, 0xff, 0xf6, 0xff, 0xbf, 0xef, 0xff, 0xdf, 0xfd, 0x7f, 0xfe, 0xbf, + 0xef, 0xfe, 0xff, 0xdf, 0xff, 0xfe, 0xff, 0xe4, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xfe, 0xfb, 0x37, 0xfd, 0xfe, 0xff, 0xff, 0x6f, 0xff, 0xf6, 0xff, 0xbf, 0xfb, 0xdf, + 0xff, 0xff, 0x77, 0x7f, 0x9d, 0x9f, 0x27, 0x21, 0xcc, 0x18, 0x63, 0x84, 0x80, 0x2a, 0x29, 0x44, + 0x59, 0x43, 0x94, 0x34, 0x42, 0x49, 0x2c, 0x92, 0x92, 0x64, 0x0c, 0x80, 0xb8, 0x22, 0x86, 0x34, + 0x48, 0x23, 0x34, 0x44, 0xc9, 0x18, 0x46, 0x09, 0x80, 0x72, 0x08, 0x61, 0x80, 0x9b, 0x12, 0x64, + 0x8d, 0x90, 0x23, 0xa8, 0x26, 0x44, 0x59, 0x89, 0x24, 0xd3, 0x1f, 0xff, 0xfd, 0xef, 0xff, 0x7d, + 0xef, 0xfe, 0xf7, 0xbf, 0xfb, 0xdf, 0x7d, 0xff, 0xf7, 0xbf, 0xfe, 0xdb, 0x7f, 0xfd, 0xff, 0xcf, + 0xff, 0xff, 0xfb, 0xff, 0x7f, 0xff, 0xb6, 0xff, 0xff, 0xff, 0xfd, 0xb7, 0xff, 0xfb, 0xbf, 0xff, + 0xef, 0xfb, 0x7e, 0xdf, 0xff, 0xf6, 0xff, 0xdf, 0xff, 0xed, 0xfb, 0xff, 0xef, 0x2f, 0xef, 0xef, + 0xf7, 0xf7, 0x9f, 0xfb, 0xfc, 0xff, 0xf7, 0xdf, 0xbb, 0x7f, 0xff, 0xef, 0xfe, 0xf7, 0x1f, 0x07, + 0xd1, 0x19, 0x22, 0x66, 0x44, 0x98, 0x8b, 0x21, 0x64, 0x1a, 0x42, 0xd4, 0x14, 0x23, 0xa8, 0x4d, + 0x91, 0x92, 0x64, 0x25, 0x99, 0x44, 0x23, 0x88, 0x50, 0x96, 0xa3, 0x18, 0x44, 0x65, 0x99, 0x22, + 0x8a, 0x69, 0x25, 0x86, 0xd8, 0x1d, 0xb7, 0x9a, 0x9e, 0x30, 0x8b, 0xe2, 0xcc, 0xd9, 0xe1, 0xfc, + 0xee, 0xf8, 0xfe, 0xe1, 0xc9, 0x06, 0x98, 0x69, 0x22, 0x92, 0x4c, 0x23, 0xa7, 0x1f, 0x7d, 0xff, + 0xff, 0xbf, 0xef, 0xfb, 0xbe, 0xef, 0x7f, 0xfb, 0xfe, 0x77, 0xff, 0xbf, 0xef, 0xfd, 0xf7, 0xff, }, { // leekspin: frame 1 - 0xff, 0xbf, 0xfb, 0xcf, 0xff, 0xbb, 0xef, 0xff, 0xbb, 0xef, 0xff, 0xbb, 0xef, 0xff, 0xff, 0xdf, - 0x77, 0xff, 0xdb, 0xff, 0xb7, 0xff, 0xfb, 0x6f, 0xff, 0xff, 0xdd, 0xf7, 0xff, 0xff, 0xff, 0xbb, - 0xef, 0xff, 0xbb, 0xef, 0xff, 0xbb, 0xef, 0xff, 0xbb, 0xef, 0xff, 0xbb, 0x6f, 0xff, 0xbb, 0xef, - 0xff, 0xbb, 0xef, 0x7f, 0xdb, 0xff, 0x27, 0xd0, 0x5f, 0x60, 0x8d, 0x37, 0xe0, 0x8d, 0x31, 0xd8, - 0xc7, 0x1d, 0xf0, 0xff, 0xff, 0xf0, 0xcf, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf9, 0xc1, - 0xff, 0xfe, 0xf9, 0xe7, 0xcc, 0x91, 0xf7, 0xfc, 0xe3, 0x99, 0x2e, 0xe2, 0xfc, 0x03, 0xfc, 0x7c, - 0x03, 0x3b, 0xec, 0x85, 0x33, 0x76, 0xcd, 0xa8, 0x23, 0x5b, 0xee, 0x20, 0x9f, 0xff, 0x7b, 0xef, - 0xbf, 0xfb, 0xef, 0xbf, 0xfb, 0xef, 0xbf, 0xfb, 0xef, 0xbf, 0xfb, 0x6f, 0xff, 0xdb, 0xff, 0xb7, - 0xff, 0xff, 0x76, 0xdf, 0xfd, 0x77, 0xde, 0xfb, 0xbf, 0xf6, 0xdf, 0xfd, 0xb7, 0xff, 0x6d, 0xff, - 0xfe, 0xfb, 0xdf, 0xf6, 0xbf, 0xed, 0xff, 0xef, 0xbf, 0xf6, 0xff, 0xef, 0xfb, 0xbf, 0xee, 0xfb, - 0xbf, 0xee, 0xfb, 0xbf, 0xee, 0xfb, 0xbf, 0xee, 0xfb, 0xbf, 0xee, 0x7b, 0xdf, 0xfd, 0xb7, 0xfe, - 0xef, 0xbd, 0xf7, 0x7f, 0xed, 0xff, 0x00, 0x6e, 0xdb, 0x91, 0x24, 0xee, 0x09, 0xff, 0x5f, 0x3f, - 0xa7, 0x9f, 0xcb, 0xcb, 0xef, 0xcb, 0x9f, 0xb7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0x8f, 0xd7, 0xdf, 0xcb, 0xcf, 0xd7, 0xdf, 0x8f, 0x3f, 0x1f, 0x7f, 0xff, 0xff, 0xff, 0xf0, - 0x07, 0xb3, 0xec, 0x08, 0x33, 0xf7, 0x8c, 0x66, 0x11, 0xdb, 0x2e, 0xa0, 0xff, 0xdf, 0xf7, 0xbd, - 0xef, 0xfe, 0xbb, 0xef, 0x7e, 0xdb, 0xff, 0xb6, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0xb6, 0xff, 0x6d, - 0xff, 0xff, 0xb7, 0xfd, 0xef, 0xbb, 0xff, 0x6e, 0xfb, 0xdf, 0x76, 0xff, 0xdd, 0x77, 0xff, 0xef, - 0xbf, 0xfb, 0xf6, 0x7f, 0xef, 0xff, 0x7f, 0xed, 0xfd, 0xf7, 0xbf, 0xff, 0xde, 0xf7, 0xfd, 0xbf, - 0xf7, 0xde, 0xfb, 0xbf, 0xee, 0xfb, 0xdf, 0x76, 0xff, 0xed, 0xbf, 0xfb, 0x6f, 0xfe, 0xdb, 0xff, - 0xb6, 0xff, 0xed, 0xbf, 0xfb, 0x6f, 0xfc, 0x83, 0x32, 0xde, 0x00, 0xbf, 0xc0, 0xff, 0xfe, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xef, 0x3f, 0xc0, - 0xde, 0x33, 0x0c, 0xe0, 0xb7, 0x1c, 0x85, 0x70, 0x6f, 0x8d, 0xf0, 0x7f, 0xdf, 0xf7, 0xfe, 0xbb, - 0xef, 0x7f, 0xd9, 0xff, 0xbf, 0xf7, 0xff, 0x6f, 0xff, 0xfb, 0xff, 0xb6, 0xff, 0x6d, 0xff, 0xdb, - 0xff, 0xff, 0xff, 0xed, 0xbf, 0xfb, 0xff, 0xdf, 0xf7, 0xfd, 0x7f, 0xef, 0xbb, 0xff, 0xdd, 0xff, - 0x77, 0xfe, 0xef, 0xbb, 0xff, 0x7d, 0xef, 0xff, 0xb6, 0xff, 0xdd, 0xff, 0x7b, 0xde, 0xff, 0xed, - 0x7f, 0xfb, 0xde, 0xff, 0xb7, 0xfd, 0xff, 0xdb, 0x7f, 0xfe, 0xbb, 0xef, 0x7f, 0xdb, 0xfe, 0xef, - 0x7b, 0xfe, 0xef, 0x7d, 0xf7, 0xbf, 0xed, 0x7f, 0xf8, 0x02, 0xc6, 0xbd, 0x34, 0x47, 0x47, 0x9f, - 0x1f, 0x3f, 0x3f, 0x7f, 0x7e, 0xff, 0xff, 0xfe, 0xff, 0xfd, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, - 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x7f, 0xff, 0x3f, 0x7f, 0x9f, 0x9f, 0x0d, 0xe3, 0x3a, 0x8c, - 0x63, 0x58, 0x17, 0x84, 0x21, 0xb8, 0xcf, 0x63, 0xd8, 0xff, 0xef, 0xbb, 0xff, 0xff, 0xfd, 0xf7, - 0xdd, 0xff, 0xbf, 0x7b, 0xff, 0xf6, 0xdf, 0xff, 0xb7, 0xfd, 0xff, 0xef, 0x7d, 0xdf, 0xfb, 0xee, - 0xff, 0xff, 0xbe, 0xef, 0xfb, 0x7f, 0xef, 0xbe, 0xfb, 0xff, 0x77, 0xff, 0xef, 0x7d, 0xff, 0xfb, - 0xff, 0xed, 0xff, 0xdf, 0x7d, 0xef, 0xff, 0xf6, 0x7f, 0xdf, 0xfd, 0xb7, 0xff, 0xfb, 0xdf, 0xfd, - 0xff, 0xb7, 0xff, 0xed, 0x7f, 0xfe, 0xb7, 0xff, 0xfb, 0xdf, 0xff, 0xf7, 0xff, 0xef, 0xff, 0x7d, - 0xef, 0xff, 0xb7, 0xff, 0xfd, 0xff, 0xdf, 0x77, 0xff, 0x80, 0x36, 0xed, 0x09, 0x12, 0x44, 0x21, - 0x0c, 0x51, 0x51, 0x86, 0x00, 0x58, 0x46, 0x30, 0x24, 0x85, 0x09, 0x21, 0x85, 0xff, 0x7b, 0xed, - 0x3d, 0x1d, 0x1d, 0x47, 0x0e, 0x8e, 0x23, 0x00, 0x22, 0x02, 0xc4, 0xb0, 0x26, 0x19, 0x4c, 0x03, - 0xc0, 0x18, 0x06, 0x60, 0x89, 0xbd, 0x02, 0xfa, 0xff, 0xff, 0xb6, 0xff, 0xfb, 0xbe, 0xf7, 0xf7, - 0xdf, 0x7f, 0xf7, 0xff, 0x6f, 0xfe, 0xff, 0xdf, 0xfb, 0x6f, 0xfe, 0xdf, 0x7b, 0xff, 0xf7, 0xde, - 0x23, 0xcf, 0x9f, 0x37, 0x7d, 0xff, 0xff, 0xf7, 0xff, 0xfb, 0x6f, 0xff, 0xdb, 0xff, 0xbf, 0xfe, - 0xdb, 0xef, 0xff, 0xff, 0xb7, 0xfd, 0x7f, 0xff, 0xef, 0xfb, 0x7f, 0xf7, 0xbd, 0xff, 0xde, 0xdf, - 0xfb, 0xdf, 0xde, 0xd7, 0xbf, 0xef, 0xfb, 0xf7, 0xfe, 0xfb, 0xfb, 0xfd, 0x7c, 0x7f, 0xfd, 0xfe, - 0x7d, 0xfd, 0x9e, 0x62, 0x6f, 0xff, 0xff, 0x7f, 0xd2, 0x08, 0xef, 0x31, 0x00, 0x42, 0x48, 0x39, - 0x86, 0x60, 0x0c, 0xd9, 0x90, 0x20, 0x02, 0x10, 0x44, 0x08, 0x02, 0x10, 0x40, 0x03, 0x11, 0x80, - 0x20, 0x24, 0x81, 0x08, 0x42, 0x90, 0x04, 0xc1, 0x78, 0x06, 0x24, 0x09, 0x42, 0x40, 0x98, 0x22, - 0x30, 0xc9, 0x88, 0x32, 0x44, 0x4d, 0x80, 0x3f, 0xff, 0xfe, 0xf7, 0x7f, 0xed, 0xbf, 0xfe, 0xf7, - 0xbf, 0xfb, 0xdf, 0xfd, 0xef, 0x7f, 0xfb, 0xde, 0xff, 0xef, 0xfb, 0xbf, 0xff, 0x6d, 0xff, 0xf6, - 0x92, 0x24, 0x65, 0x99, 0xc6, 0x30, 0x8b, 0x67, 0x37, 0x87, 0x6f, 0xff, 0xf5, 0x77, 0x7f, 0xfe, - 0xff, 0xef, 0xfe, 0x7f, 0xf7, 0xed, 0x0f, 0xfe, 0xfe, 0xfb, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0x7f, 0xb6, 0xec, 0xfe, 0xff, 0x7e, 0xef, 0xff, 0x7f, 0xf7, 0xff, 0xbf, - 0xef, 0xff, 0xf7, 0x7f, 0x1f, 0x9f, 0x63, 0x03, 0xdc, 0x90, 0x23, 0x8a, 0x20, 0x05, 0xc9, 0x5a, - 0x11, 0xa4, 0x8b, 0x30, 0x24, 0x4b, 0x48, 0x26, 0x34, 0xc1, 0x8c, 0x22, 0x98, 0x91, 0x66, 0x08, - 0x32, 0xc4, 0x99, 0x12, 0x62, 0xcc, 0x00, 0x33, 0x04, 0xc0, 0x38, 0x83, 0x40, 0x96, 0x19, 0x61, - 0x86, 0x18, 0x60, 0x93, 0x4c, 0x24, 0x93, 0x48, 0x6c, 0x83, 0x3f, 0xff, 0xfb, 0xff, 0xdd, 0xff, - 0xf7, 0xfd, 0xff, 0xde, 0xf7, 0x7f, 0xfb, 0xbf, 0xee, 0xff, 0xbd, 0xf7, 0x7f, 0xfb, 0xff, 0xde, - 0xfe, 0xff, 0xde, 0xfe, 0xfe, 0xfe, 0x6f, 0xfe, 0xff, 0xff, 0xff, 0xb7, 0xff, 0xdf, 0x7f, 0xff, - 0xd7, 0xfd, 0xef, 0xff, 0x7d, 0xff, 0xdf, 0xff, 0xf5, 0x7f, 0xf7, 0xff, 0xef, 0xef, 0xe7, 0x7f, - 0xfb, 0xfb, 0xfe, 0xfd, 0xff, 0xfb, 0xef, 0xfd, 0xdf, 0x7f, 0xff, 0xfb, 0xdf, 0xff, 0x0b, 0x07, - 0x35, 0xc9, 0x48, 0x92, 0x93, 0x6c, 0x08, 0x93, 0xc4, 0x30, 0x46, 0x99, 0xa1, 0x26, 0x48, 0x8c, - 0x33, 0xc4, 0x28, 0x0b, 0xd1, 0x34, 0x01, 0xc3, 0x18, 0x64, 0x86, 0x30, 0x4d, 0x90, 0xa6, 0x29, - 0x49, 0x44, 0xb4, 0x83, 0x5a, 0x9c, 0x37, 0x56, 0x9e, 0x21, 0xcc, 0xd1, 0xd6, 0xe4, 0xc9, 0xfc, - 0xec, 0xef, 0xf8, 0xe4, 0xc3, 0x19, 0xa4, 0x26, 0xd0, 0x0d, 0x24, 0xd3, 0x47, 0x1f, 0x7e, 0xff, - 0xff, 0x6f, 0xff, 0xd9, 0xff, 0xbf, 0xe7, 0xff, 0xf9, 0x7f, 0xff, 0xdf, 0xdf, 0xf5, 0xff, 0xfb, + 0xff, 0xbf, 0xfb, 0xcf, 0xff, 0xbb, 0xef, 0xff, 0xbb, 0xef, 0xff, 0xbb, 0xef, 0xff, 0xff, 0xdf, + 0x77, 0xff, 0xdb, 0xff, 0xb7, 0xff, 0xfb, 0x6f, 0xff, 0xff, 0xdd, 0xf7, 0xff, 0xff, 0xff, 0xbb, + 0xef, 0xff, 0xbb, 0xef, 0xff, 0xbb, 0xef, 0xff, 0xbb, 0xef, 0xff, 0xbb, 0x6f, 0xff, 0xbb, 0xef, + 0xff, 0xbb, 0xef, 0x7f, 0xdb, 0xff, 0x27, 0xd0, 0x5f, 0x60, 0x8d, 0x37, 0xe0, 0x8d, 0x31, 0xd8, + 0xc7, 0x1d, 0xf0, 0xff, 0xff, 0xf0, 0xcf, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf9, 0xc1, + 0xff, 0xfe, 0xf9, 0xe7, 0xcc, 0x91, 0xf7, 0xfc, 0xe3, 0x99, 0x2e, 0xe2, 0xfc, 0x03, 0xfc, 0x7c, + 0x03, 0x3b, 0xec, 0x85, 0x33, 0x76, 0xcd, 0xa8, 0x23, 0x5b, 0xee, 0x20, 0x9f, 0xff, 0x7b, 0xef, + 0xbf, 0xfb, 0xef, 0xbf, 0xfb, 0xef, 0xbf, 0xfb, 0xef, 0xbf, 0xfb, 0x6f, 0xff, 0xdb, 0xff, 0xb7, + 0xff, 0xff, 0x76, 0xdf, 0xfd, 0x77, 0xde, 0xfb, 0xbf, 0xf6, 0xdf, 0xfd, 0xb7, 0xff, 0x6d, 0xff, + 0xfe, 0xfb, 0xdf, 0xf6, 0xbf, 0xed, 0xff, 0xef, 0xbf, 0xf6, 0xff, 0xef, 0xfb, 0xbf, 0xee, 0xfb, + 0xbf, 0xee, 0xfb, 0xbf, 0xee, 0xfb, 0xbf, 0xee, 0xfb, 0xbf, 0xee, 0x7b, 0xdf, 0xfd, 0xb7, 0xfe, + 0xef, 0xbd, 0xf7, 0x7f, 0xed, 0xff, 0x00, 0x6e, 0xdb, 0x91, 0x24, 0xee, 0x09, 0xff, 0x5f, 0x3f, + 0xa7, 0x9f, 0xcb, 0xcb, 0xef, 0xcb, 0x9f, 0xb7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x8f, 0xd7, 0xdf, 0xcb, 0xcf, 0xd7, 0xdf, 0x8f, 0x3f, 0x1f, 0x7f, 0xff, 0xff, 0xff, 0xf0, + 0x07, 0xb3, 0xec, 0x08, 0x33, 0xf7, 0x8c, 0x66, 0x11, 0xdb, 0x2e, 0xa0, 0xff, 0xdf, 0xf7, 0xbd, + 0xef, 0xfe, 0xbb, 0xef, 0x7e, 0xdb, 0xff, 0xb6, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0xb6, 0xff, 0x6d, + 0xff, 0xff, 0xb7, 0xfd, 0xef, 0xbb, 0xff, 0x6e, 0xfb, 0xdf, 0x76, 0xff, 0xdd, 0x77, 0xff, 0xef, + 0xbf, 0xfb, 0xf6, 0x7f, 0xef, 0xff, 0x7f, 0xed, 0xfd, 0xf7, 0xbf, 0xff, 0xde, 0xf7, 0xfd, 0xbf, + 0xf7, 0xde, 0xfb, 0xbf, 0xee, 0xfb, 0xdf, 0x76, 0xff, 0xed, 0xbf, 0xfb, 0x6f, 0xfe, 0xdb, 0xff, + 0xb6, 0xff, 0xed, 0xbf, 0xfb, 0x6f, 0xfc, 0x83, 0x32, 0xde, 0x00, 0xbf, 0xc0, 0xff, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xef, 0x3f, 0xc0, + 0xde, 0x33, 0x0c, 0xe0, 0xb7, 0x1c, 0x85, 0x70, 0x6f, 0x8d, 0xf0, 0x7f, 0xdf, 0xf7, 0xfe, 0xbb, + 0xef, 0x7f, 0xd9, 0xff, 0xbf, 0xf7, 0xff, 0x6f, 0xff, 0xfb, 0xff, 0xb6, 0xff, 0x6d, 0xff, 0xdb, + 0xff, 0xff, 0xff, 0xed, 0xbf, 0xfb, 0xff, 0xdf, 0xf7, 0xfd, 0x7f, 0xef, 0xbb, 0xff, 0xdd, 0xff, + 0x77, 0xfe, 0xef, 0xbb, 0xff, 0x7d, 0xef, 0xff, 0xb6, 0xff, 0xdd, 0xff, 0x7b, 0xde, 0xff, 0xed, + 0x7f, 0xfb, 0xde, 0xff, 0xb7, 0xfd, 0xff, 0xdb, 0x7f, 0xfe, 0xbb, 0xef, 0x7f, 0xdb, 0xfe, 0xef, + 0x7b, 0xfe, 0xef, 0x7d, 0xf7, 0xbf, 0xed, 0x7f, 0xf8, 0x02, 0xc6, 0xbd, 0x34, 0x47, 0x47, 0x9f, + 0x1f, 0x3f, 0x3f, 0x7f, 0x7e, 0xff, 0xff, 0xfe, 0xff, 0xfd, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x7f, 0xff, 0x3f, 0x7f, 0x9f, 0x9f, 0x0d, 0xe3, 0x3a, 0x8c, + 0x63, 0x58, 0x17, 0x84, 0x21, 0xb8, 0xcf, 0x63, 0xd8, 0xff, 0xef, 0xbb, 0xff, 0xff, 0xfd, 0xf7, + 0xdd, 0xff, 0xbf, 0x7b, 0xff, 0xf6, 0xdf, 0xff, 0xb7, 0xfd, 0xff, 0xef, 0x7d, 0xdf, 0xfb, 0xee, + 0xff, 0xff, 0xbe, 0xef, 0xfb, 0x7f, 0xef, 0xbe, 0xfb, 0xff, 0x77, 0xff, 0xef, 0x7d, 0xff, 0xfb, + 0xff, 0xed, 0xff, 0xdf, 0x7d, 0xef, 0xff, 0xf6, 0x7f, 0xdf, 0xfd, 0xb7, 0xff, 0xfb, 0xdf, 0xfd, + 0xff, 0xb7, 0xff, 0xed, 0x7f, 0xfe, 0xb7, 0xff, 0xfb, 0xdf, 0xff, 0xf7, 0xff, 0xef, 0xff, 0x7d, + 0xef, 0xff, 0xb7, 0xff, 0xfd, 0xff, 0xdf, 0x77, 0xff, 0x80, 0x36, 0xed, 0x09, 0x12, 0x44, 0x21, + 0x0c, 0x51, 0x51, 0x86, 0x00, 0x58, 0x46, 0x30, 0x24, 0x85, 0x09, 0x21, 0x85, 0xff, 0x7b, 0xed, + 0x3d, 0x1d, 0x1d, 0x47, 0x0e, 0x8e, 0x23, 0x00, 0x22, 0x02, 0xc4, 0xb0, 0x26, 0x19, 0x4c, 0x03, + 0xc0, 0x18, 0x06, 0x60, 0x89, 0xbd, 0x02, 0xfa, 0xff, 0xff, 0xb6, 0xff, 0xfb, 0xbe, 0xf7, 0xf7, + 0xdf, 0x7f, 0xf7, 0xff, 0x6f, 0xfe, 0xff, 0xdf, 0xfb, 0x6f, 0xfe, 0xdf, 0x7b, 0xff, 0xf7, 0xde, + 0x23, 0xcf, 0x9f, 0x37, 0x7d, 0xff, 0xff, 0xf7, 0xff, 0xfb, 0x6f, 0xff, 0xdb, 0xff, 0xbf, 0xfe, + 0xdb, 0xef, 0xff, 0xff, 0xb7, 0xfd, 0x7f, 0xff, 0xef, 0xfb, 0x7f, 0xf7, 0xbd, 0xff, 0xde, 0xdf, + 0xfb, 0xdf, 0xde, 0xd7, 0xbf, 0xef, 0xfb, 0xf7, 0xfe, 0xfb, 0xfb, 0xfd, 0x7c, 0x7f, 0xfd, 0xfe, + 0x7d, 0xfd, 0x9e, 0x62, 0x6f, 0xff, 0xff, 0x7f, 0xd2, 0x08, 0xef, 0x31, 0x00, 0x42, 0x48, 0x39, + 0x86, 0x60, 0x0c, 0xd9, 0x90, 0x20, 0x02, 0x10, 0x44, 0x08, 0x02, 0x10, 0x40, 0x03, 0x11, 0x80, + 0x20, 0x24, 0x81, 0x08, 0x42, 0x90, 0x04, 0xc1, 0x78, 0x06, 0x24, 0x09, 0x42, 0x40, 0x98, 0x22, + 0x30, 0xc9, 0x88, 0x32, 0x44, 0x4d, 0x80, 0x3f, 0xff, 0xfe, 0xf7, 0x7f, 0xed, 0xbf, 0xfe, 0xf7, + 0xbf, 0xfb, 0xdf, 0xfd, 0xef, 0x7f, 0xfb, 0xde, 0xff, 0xef, 0xfb, 0xbf, 0xff, 0x6d, 0xff, 0xf6, + 0x92, 0x24, 0x65, 0x99, 0xc6, 0x30, 0x8b, 0x67, 0x37, 0x87, 0x6f, 0xff, 0xf5, 0x77, 0x7f, 0xfe, + 0xff, 0xef, 0xfe, 0x7f, 0xf7, 0xed, 0x0f, 0xfe, 0xfe, 0xfb, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x7f, 0xb6, 0xec, 0xfe, 0xff, 0x7e, 0xef, 0xff, 0x7f, 0xf7, 0xff, 0xbf, + 0xef, 0xff, 0xf7, 0x7f, 0x1f, 0x9f, 0x63, 0x03, 0xdc, 0x90, 0x23, 0x8a, 0x20, 0x05, 0xc9, 0x5a, + 0x11, 0xa4, 0x8b, 0x30, 0x24, 0x4b, 0x48, 0x26, 0x34, 0xc1, 0x8c, 0x22, 0x98, 0x91, 0x66, 0x08, + 0x32, 0xc4, 0x99, 0x12, 0x62, 0xcc, 0x00, 0x33, 0x04, 0xc0, 0x38, 0x83, 0x40, 0x96, 0x19, 0x61, + 0x86, 0x18, 0x60, 0x93, 0x4c, 0x24, 0x93, 0x48, 0x6c, 0x83, 0x3f, 0xff, 0xfb, 0xff, 0xdd, 0xff, + 0xf7, 0xfd, 0xff, 0xde, 0xf7, 0x7f, 0xfb, 0xbf, 0xee, 0xff, 0xbd, 0xf7, 0x7f, 0xfb, 0xff, 0xde, + 0xfe, 0xff, 0xde, 0xfe, 0xfe, 0xfe, 0x6f, 0xfe, 0xff, 0xff, 0xff, 0xb7, 0xff, 0xdf, 0x7f, 0xff, + 0xd7, 0xfd, 0xef, 0xff, 0x7d, 0xff, 0xdf, 0xff, 0xf5, 0x7f, 0xf7, 0xff, 0xef, 0xef, 0xe7, 0x7f, + 0xfb, 0xfb, 0xfe, 0xfd, 0xff, 0xfb, 0xef, 0xfd, 0xdf, 0x7f, 0xff, 0xfb, 0xdf, 0xff, 0x0b, 0x07, + 0x35, 0xc9, 0x48, 0x92, 0x93, 0x6c, 0x08, 0x93, 0xc4, 0x30, 0x46, 0x99, 0xa1, 0x26, 0x48, 0x8c, + 0x33, 0xc4, 0x28, 0x0b, 0xd1, 0x34, 0x01, 0xc3, 0x18, 0x64, 0x86, 0x30, 0x4d, 0x90, 0xa6, 0x29, + 0x49, 0x44, 0xb4, 0x83, 0x5a, 0x9c, 0x37, 0x56, 0x9e, 0x21, 0xcc, 0xd1, 0xd6, 0xe4, 0xc9, 0xfc, + 0xec, 0xef, 0xf8, 0xe4, 0xc3, 0x19, 0xa4, 0x26, 0xd0, 0x0d, 0x24, 0xd3, 0x47, 0x1f, 0x7e, 0xff, + 0xff, 0x6f, 0xff, 0xd9, 0xff, 0xbf, 0xe7, 0xff, 0xf9, 0x7f, 0xff, 0xdf, 0xdf, 0xf5, 0xff, 0xfb, }, { // leekspin: frame 2 - 0xff, 0xbf, 0xfb, 0xef, 0xbf, 0xfb, 0xef, 0xbf, 0xfb, 0xef, 0xbf, 0xfb, 0x6f, 0xff, 0xff, 0xef, - 0xbf, 0xfb, 0xdf, 0xf7, 0xbf, 0xfb, 0x7f, 0x7f, 0xdb, 0xff, 0xbf, 0xfb, 0xef, 0xff, 0x7f, 0xdf, - 0xff, 0xf3, 0xbf, 0xef, 0xfb, 0xbf, 0xef, 0xfb, 0xbf, 0xef, 0xfb, 0xbf, 0xef, 0xfb, 0xbf, 0xef, - 0xfb, 0xbf, 0xef, 0x7b, 0xdf, 0xf7, 0x2f, 0x60, 0xdf, 0x80, 0x2d, 0x57, 0xd0, 0x93, 0x24, 0xfc, - 0xc3, 0x1b, 0xf4, 0xf7, 0xff, 0xf0, 0xcf, 0xb0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf9, 0xc1, - 0xff, 0xfe, 0xf9, 0xe7, 0xcc, 0x91, 0xf7, 0xfc, 0xe3, 0x99, 0x2e, 0xe2, 0xfc, 0x03, 0xec, 0x7c, - 0x93, 0x2b, 0x6c, 0x95, 0x53, 0xce, 0x39, 0xc4, 0x33, 0x6b, 0xce, 0x90, 0xbf, 0xef, 0xfb, 0xbf, - 0xef, 0xfb, 0xbf, 0xef, 0xfb, 0xbf, 0xef, 0xfb, 0xbf, 0xef, 0xfb, 0xbf, 0xef, 0xfb, 0xbf, 0xed, - 0xff, 0xff, 0xee, 0xbb, 0xff, 0x6e, 0xfb, 0xdf, 0x76, 0xff, 0xdd, 0xf7, 0xbf, 0xed, 0xff, 0xff, - 0xee, 0xff, 0x75, 0xdf, 0xff, 0xf6, 0xdf, 0xff, 0xb7, 0xff, 0xfb, 0xef, 0xfd, 0xb7, 0xff, 0xdb, - 0xfe, 0x6f, 0xfb, 0xbe, 0xef, 0xfb, 0xbe, 0xef, 0xfb, 0xbe, 0xef, 0xfb, 0xbe, 0xef, 0x7b, 0xde, - 0xf7, 0x7d, 0xdf, 0xf7, 0xbd, 0xff, 0x00, 0xf7, 0x9c, 0x21, 0x27, 0xd8, 0x46, 0xff, 0x5f, 0x3f, - 0xa7, 0x9f, 0xcb, 0xcb, 0xef, 0xcb, 0xdf, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xef, 0x9f, 0xd7, 0xcf, 0xcb, 0xdf, 0xd7, 0xcf, 0x8f, 0x3f, 0x1f, 0x7f, 0xff, 0xff, 0xff, 0xf0, - 0x07, 0x73, 0xdc, 0x01, 0x6e, 0x99, 0x73, 0x4e, 0x88, 0xf3, 0x1e, 0xc0, 0xff, 0x7f, 0xde, 0xf3, - 0xbf, 0xee, 0xfb, 0xbf, 0xee, 0xfb, 0xbf, 0xee, 0xfb, 0xbf, 0xee, 0x7b, 0xdf, 0xf6, 0xbf, 0xed, - 0xff, 0xff, 0x76, 0xdf, 0xfd, 0xb7, 0xff, 0xed, 0xbf, 0xfb, 0x6e, 0xff, 0xbd, 0xef, 0xfe, 0xf7, - 0xbf, 0xfd, 0xf7, 0xdf, 0x7f, 0xff, 0xb7, 0xfc, 0xef, 0xff, 0xf7, 0xbf, 0xfa, 0xdf, 0xfd, 0xef, - 0x7b, 0xff, 0xed, 0x7f, 0xde, 0xfb, 0xef, 0xbe, 0xfb, 0xdf, 0xf6, 0x7f, 0xdd, 0xf7, 0xbf, 0xed, - 0xff, 0xbb, 0xef, 0x7e, 0xdb, 0xff, 0x76, 0xc0, 0x1d, 0x77, 0x00, 0x7f, 0xc0, 0xff, 0xfe, 0xff, - 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xef, 0x3f, 0xc0, - 0xbb, 0x37, 0x04, 0xf0, 0xce, 0x39, 0x07, 0x70, 0xdd, 0x86, 0xf2, 0x7f, 0xdf, 0xf7, 0xfd, 0xbf, - 0xef, 0x79, 0xff, 0xef, 0xfd, 0xdf, 0x7b, 0xef, 0xbf, 0xfd, 0xff, 0xfb, 0xdf, 0xf6, 0xbf, 0xed, - 0xff, 0xff, 0xef, 0x7d, 0xff, 0xfb, 0xdf, 0xfd, 0xff, 0x6f, 0xfb, 0xbf, 0xfd, 0xef, 0x7e, 0xf7, - 0xbf, 0xee, 0xfb, 0x7f, 0xdf, 0xfb, 0xbf, 0xfd, 0xef, 0xfe, 0xdf, 0xfb, 0xef, 0xfe, 0xbf, 0xed, - 0xff, 0xf7, 0xbd, 0xff, 0x6f, 0xfb, 0xfe, 0xdf, 0xf7, 0xfd, 0xbf, 0xfb, 0x6f, 0xfe, 0xf7, 0xff, - 0xdd, 0x7f, 0xfb, 0xef, 0xfd, 0xdf, 0x7b, 0xff, 0xe4, 0x09, 0xc9, 0xb6, 0x36, 0x4b, 0x47, 0x9f, - 0x1f, 0x3f, 0x3f, 0x7f, 0x7f, 0xff, 0xfe, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xfd, 0xff, 0xfd, 0xff, - 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x7f, 0xff, 0x3f, 0x3f, 0x9f, 0xdf, 0x0d, 0xa3, 0x3a, 0x4c, - 0xe3, 0x18, 0x17, 0x06, 0x60, 0xd8, 0xcf, 0x33, 0xd8, 0xfe, 0xef, 0x7b, 0xdf, 0xff, 0x7f, 0xfd, - 0xfd, 0xf7, 0xdf, 0xff, 0xbe, 0xfb, 0xff, 0xb7, 0xdf, 0xfd, 0xff, 0x6e, 0xff, 0xdd, 0xf7, 0xbe, - 0xff, 0xff, 0xdd, 0xff, 0xef, 0x7b, 0xfe, 0xbf, 0xef, 0x7b, 0xff, 0xbd, 0x37, 0xff, 0xfb, 0x7f, - 0xf7, 0xfd, 0xef, 0xff, 0xbb, 0xff, 0xf7, 0xfe, 0xdb, 0xff, 0xee, 0xff, 0xfb, 0xbe, 0xff, 0xef, - 0xfb, 0x7e, 0xdf, 0xf7, 0xff, 0xbd, 0xff, 0xee, 0xff, 0xdb, 0xff, 0xf7, 0x7f, 0xff, 0xf7, 0xbe, - 0xff, 0x77, 0xff, 0xbb, 0xfe, 0xff, 0xff, 0xb7, 0xff, 0x00, 0xb6, 0xed, 0x09, 0x02, 0x64, 0x81, - 0x0c, 0x31, 0xc5, 0x48, 0x02, 0x24, 0x98, 0x62, 0x24, 0x05, 0x89, 0x21, 0x05, 0xff, 0xfb, 0x6d, - 0x3d, 0x9d, 0x17, 0x1c, 0x4d, 0x07, 0x26, 0x80, 0x11, 0x41, 0x84, 0xb0, 0x66, 0x19, 0x0b, 0x82, - 0x10, 0x64, 0x09, 0x90, 0xc6, 0x3b, 0x08, 0xf6, 0xff, 0xbf, 0xfb, 0xef, 0xff, 0xdd, 0xff, 0xbb, - 0xff, 0x77, 0xf7, 0xbf, 0xfb, 0xfe, 0xb7, 0xff, 0xdf, 0xfd, 0xef, 0x7f, 0xdd, 0xf7, 0xff, 0x6d, - 0xff, 0xff, 0x7b, 0xfe, 0xdf, 0xf7, 0xf7, 0x7d, 0xe9, 0xbe, 0xfe, 0xff, 0xff, 0xfd, 0xff, 0xf7, - 0xfd, 0xcf, 0xff, 0x7f, 0xef, 0xbe, 0xfb, 0xdf, 0xbd, 0xbf, 0xbb, 0xbe, 0xff, 0xbf, 0xef, 0x7d, - 0x77, 0xff, 0xff, 0xdb, 0xfe, 0xff, 0xef, 0x7b, 0xfe, 0xff, 0xbf, 0xfd, 0xef, 0xff, 0xfb, 0xef, - 0xff, 0x7b, 0xff, 0xff, 0xfe, 0xbf, 0xef, 0xff, 0xd8, 0x03, 0xbd, 0x64, 0x00, 0x89, 0xa8, 0x22, - 0x1c, 0xe1, 0x08, 0x56, 0x90, 0x20, 0x04, 0x90, 0x02, 0x20, 0x04, 0x10, 0x41, 0x03, 0x88, 0x20, - 0x04, 0x40, 0x08, 0x81, 0x30, 0x02, 0x10, 0xc4, 0x30, 0x8e, 0x21, 0x08, 0x22, 0xc1, 0x18, 0xc0, - 0x31, 0x0c, 0x60, 0x98, 0xc2, 0x23, 0x0c, 0x5f, 0xff, 0xfb, 0xef, 0xfe, 0x77, 0xfd, 0xff, 0xdb, - 0xff, 0x6f, 0xfb, 0xbf, 0xfd, 0xef, 0xff, 0xdb, 0xfe, 0x7f, 0xf7, 0xdf, 0xfd, 0xef, 0xfb, 0xbf, - 0xff, 0xff, 0xff, 0xf7, 0xff, 0xdd, 0xff, 0xef, 0xff, 0x7b, 0xff, 0xde, 0xff, 0xff, 0x7b, 0xff, - 0xf7, 0xff, 0xef, 0xef, 0xde, 0x73, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xfe, 0xfe, 0xff, 0x89, 0xbf, 0xff, 0xbf, 0xf7, 0x7f, 0x7d, 0xff, 0xef, 0x7e, 0xff, 0xfb, - 0xdf, 0xff, 0xef, 0x7d, 0x1f, 0x97, 0xa7, 0x21, 0x1c, 0xd0, 0x23, 0x0a, 0x40, 0x14, 0xa4, 0x93, - 0x99, 0x24, 0x62, 0x8a, 0x19, 0x51, 0x46, 0xb0, 0x8c, 0x43, 0x18, 0xc4, 0x30, 0x26, 0xc4, 0x18, - 0xc9, 0x26, 0x98, 0x41, 0x4c, 0xb3, 0x80, 0x0d, 0x02, 0x70, 0x88, 0x23, 0xc4, 0x10, 0x96, 0x64, - 0x09, 0x93, 0x24, 0x68, 0x44, 0x95, 0x89, 0x6a, 0x10, 0xc7, 0x3f, 0xfb, 0xff, 0xff, 0x6e, 0xfb, - 0xbf, 0xff, 0xfb, 0xef, 0xff, 0x76, 0xff, 0x9f, 0xfd, 0xdf, 0xff, 0xbb, 0xee, 0xff, 0x3d, 0xff, - 0xff, 0xff, 0xde, 0xfb, 0xff, 0xff, 0xef, 0xbe, 0xff, 0xff, 0xff, 0x77, 0xfd, 0xff, 0xdf, 0xff, - 0xfb, 0x7e, 0xdf, 0xf7, 0xff, 0xff, 0xfe, 0xdf, 0xfd, 0xfb, 0xfb, 0xf7, 0xdf, 0xd9, 0xbf, 0xbf, - 0xd7, 0xf7, 0xfb, 0xfc, 0xff, 0xfb, 0xfb, 0xef, 0xb7, 0x7f, 0xff, 0xf7, 0xff, 0xee, 0x0f, 0x0e, - 0xae, 0x6f, 0x8c, 0x90, 0x53, 0x8c, 0x28, 0x23, 0x99, 0x48, 0x66, 0x91, 0x19, 0x66, 0x48, 0x92, - 0x94, 0x65, 0x24, 0x89, 0x69, 0x46, 0x12, 0xc4, 0x88, 0x32, 0x93, 0x4c, 0x48, 0x33, 0x84, 0x32, - 0xca, 0x0c, 0xb1, 0x22, 0xce, 0x9c, 0x33, 0x96, 0xdf, 0x18, 0xa1, 0xe6, 0xd8, 0xc6, 0xf1, 0xf8, - 0xee, 0xfd, 0xf9, 0xf2, 0xc2, 0x0c, 0x66, 0x90, 0x93, 0x4c, 0x48, 0x33, 0x87, 0x9f, 0x7f, 0xff, - 0xff, 0xff, 0xd7, 0x7d, 0xfd, 0xf7, 0xdf, 0xfb, 0xbf, 0xfe, 0x7b, 0xdf, 0xff, 0xf7, 0xf7, 0xfd, + 0xff, 0xbf, 0xfb, 0xef, 0xbf, 0xfb, 0xef, 0xbf, 0xfb, 0xef, 0xbf, 0xfb, 0x6f, 0xff, 0xff, 0xef, + 0xbf, 0xfb, 0xdf, 0xf7, 0xbf, 0xfb, 0x7f, 0x7f, 0xdb, 0xff, 0xbf, 0xfb, 0xef, 0xff, 0x7f, 0xdf, + 0xff, 0xf3, 0xbf, 0xef, 0xfb, 0xbf, 0xef, 0xfb, 0xbf, 0xef, 0xfb, 0xbf, 0xef, 0xfb, 0xbf, 0xef, + 0xfb, 0xbf, 0xef, 0x7b, 0xdf, 0xf7, 0x2f, 0x60, 0xdf, 0x80, 0x2d, 0x57, 0xd0, 0x93, 0x24, 0xfc, + 0xc3, 0x1b, 0xf4, 0xf7, 0xff, 0xf0, 0xcf, 0xb0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf9, 0xc1, + 0xff, 0xfe, 0xf9, 0xe7, 0xcc, 0x91, 0xf7, 0xfc, 0xe3, 0x99, 0x2e, 0xe2, 0xfc, 0x03, 0xec, 0x7c, + 0x93, 0x2b, 0x6c, 0x95, 0x53, 0xce, 0x39, 0xc4, 0x33, 0x6b, 0xce, 0x90, 0xbf, 0xef, 0xfb, 0xbf, + 0xef, 0xfb, 0xbf, 0xef, 0xfb, 0xbf, 0xef, 0xfb, 0xbf, 0xef, 0xfb, 0xbf, 0xef, 0xfb, 0xbf, 0xed, + 0xff, 0xff, 0xee, 0xbb, 0xff, 0x6e, 0xfb, 0xdf, 0x76, 0xff, 0xdd, 0xf7, 0xbf, 0xed, 0xff, 0xff, + 0xee, 0xff, 0x75, 0xdf, 0xff, 0xf6, 0xdf, 0xff, 0xb7, 0xff, 0xfb, 0xef, 0xfd, 0xb7, 0xff, 0xdb, + 0xfe, 0x6f, 0xfb, 0xbe, 0xef, 0xfb, 0xbe, 0xef, 0xfb, 0xbe, 0xef, 0xfb, 0xbe, 0xef, 0x7b, 0xde, + 0xf7, 0x7d, 0xdf, 0xf7, 0xbd, 0xff, 0x00, 0xf7, 0x9c, 0x21, 0x27, 0xd8, 0x46, 0xff, 0x5f, 0x3f, + 0xa7, 0x9f, 0xcb, 0xcb, 0xef, 0xcb, 0xdf, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xef, 0x9f, 0xd7, 0xcf, 0xcb, 0xdf, 0xd7, 0xcf, 0x8f, 0x3f, 0x1f, 0x7f, 0xff, 0xff, 0xff, 0xf0, + 0x07, 0x73, 0xdc, 0x01, 0x6e, 0x99, 0x73, 0x4e, 0x88, 0xf3, 0x1e, 0xc0, 0xff, 0x7f, 0xde, 0xf3, + 0xbf, 0xee, 0xfb, 0xbf, 0xee, 0xfb, 0xbf, 0xee, 0xfb, 0xbf, 0xee, 0x7b, 0xdf, 0xf6, 0xbf, 0xed, + 0xff, 0xff, 0x76, 0xdf, 0xfd, 0xb7, 0xff, 0xed, 0xbf, 0xfb, 0x6e, 0xff, 0xbd, 0xef, 0xfe, 0xf7, + 0xbf, 0xfd, 0xf7, 0xdf, 0x7f, 0xff, 0xb7, 0xfc, 0xef, 0xff, 0xf7, 0xbf, 0xfa, 0xdf, 0xfd, 0xef, + 0x7b, 0xff, 0xed, 0x7f, 0xde, 0xfb, 0xef, 0xbe, 0xfb, 0xdf, 0xf6, 0x7f, 0xdd, 0xf7, 0xbf, 0xed, + 0xff, 0xbb, 0xef, 0x7e, 0xdb, 0xff, 0x76, 0xc0, 0x1d, 0x77, 0x00, 0x7f, 0xc0, 0xff, 0xfe, 0xff, + 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xef, 0x3f, 0xc0, + 0xbb, 0x37, 0x04, 0xf0, 0xce, 0x39, 0x07, 0x70, 0xdd, 0x86, 0xf2, 0x7f, 0xdf, 0xf7, 0xfd, 0xbf, + 0xef, 0x79, 0xff, 0xef, 0xfd, 0xdf, 0x7b, 0xef, 0xbf, 0xfd, 0xff, 0xfb, 0xdf, 0xf6, 0xbf, 0xed, + 0xff, 0xff, 0xef, 0x7d, 0xff, 0xfb, 0xdf, 0xfd, 0xff, 0x6f, 0xfb, 0xbf, 0xfd, 0xef, 0x7e, 0xf7, + 0xbf, 0xee, 0xfb, 0x7f, 0xdf, 0xfb, 0xbf, 0xfd, 0xef, 0xfe, 0xdf, 0xfb, 0xef, 0xfe, 0xbf, 0xed, + 0xff, 0xf7, 0xbd, 0xff, 0x6f, 0xfb, 0xfe, 0xdf, 0xf7, 0xfd, 0xbf, 0xfb, 0x6f, 0xfe, 0xf7, 0xff, + 0xdd, 0x7f, 0xfb, 0xef, 0xfd, 0xdf, 0x7b, 0xff, 0xe4, 0x09, 0xc9, 0xb6, 0x36, 0x4b, 0x47, 0x9f, + 0x1f, 0x3f, 0x3f, 0x7f, 0x7f, 0xff, 0xfe, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xfd, 0xff, 0xfd, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x7f, 0xff, 0x3f, 0x3f, 0x9f, 0xdf, 0x0d, 0xa3, 0x3a, 0x4c, + 0xe3, 0x18, 0x17, 0x06, 0x60, 0xd8, 0xcf, 0x33, 0xd8, 0xfe, 0xef, 0x7b, 0xdf, 0xff, 0x7f, 0xfd, + 0xfd, 0xf7, 0xdf, 0xff, 0xbe, 0xfb, 0xff, 0xb7, 0xdf, 0xfd, 0xff, 0x6e, 0xff, 0xdd, 0xf7, 0xbe, + 0xff, 0xff, 0xdd, 0xff, 0xef, 0x7b, 0xfe, 0xbf, 0xef, 0x7b, 0xff, 0xbd, 0x37, 0xff, 0xfb, 0x7f, + 0xf7, 0xfd, 0xef, 0xff, 0xbb, 0xff, 0xf7, 0xfe, 0xdb, 0xff, 0xee, 0xff, 0xfb, 0xbe, 0xff, 0xef, + 0xfb, 0x7e, 0xdf, 0xf7, 0xff, 0xbd, 0xff, 0xee, 0xff, 0xdb, 0xff, 0xf7, 0x7f, 0xff, 0xf7, 0xbe, + 0xff, 0x77, 0xff, 0xbb, 0xfe, 0xff, 0xff, 0xb7, 0xff, 0x00, 0xb6, 0xed, 0x09, 0x02, 0x64, 0x81, + 0x0c, 0x31, 0xc5, 0x48, 0x02, 0x24, 0x98, 0x62, 0x24, 0x05, 0x89, 0x21, 0x05, 0xff, 0xfb, 0x6d, + 0x3d, 0x9d, 0x17, 0x1c, 0x4d, 0x07, 0x26, 0x80, 0x11, 0x41, 0x84, 0xb0, 0x66, 0x19, 0x0b, 0x82, + 0x10, 0x64, 0x09, 0x90, 0xc6, 0x3b, 0x08, 0xf6, 0xff, 0xbf, 0xfb, 0xef, 0xff, 0xdd, 0xff, 0xbb, + 0xff, 0x77, 0xf7, 0xbf, 0xfb, 0xfe, 0xb7, 0xff, 0xdf, 0xfd, 0xef, 0x7f, 0xdd, 0xf7, 0xff, 0x6d, + 0xff, 0xff, 0x7b, 0xfe, 0xdf, 0xf7, 0xf7, 0x7d, 0xe9, 0xbe, 0xfe, 0xff, 0xff, 0xfd, 0xff, 0xf7, + 0xfd, 0xcf, 0xff, 0x7f, 0xef, 0xbe, 0xfb, 0xdf, 0xbd, 0xbf, 0xbb, 0xbe, 0xff, 0xbf, 0xef, 0x7d, + 0x77, 0xff, 0xff, 0xdb, 0xfe, 0xff, 0xef, 0x7b, 0xfe, 0xff, 0xbf, 0xfd, 0xef, 0xff, 0xfb, 0xef, + 0xff, 0x7b, 0xff, 0xff, 0xfe, 0xbf, 0xef, 0xff, 0xd8, 0x03, 0xbd, 0x64, 0x00, 0x89, 0xa8, 0x22, + 0x1c, 0xe1, 0x08, 0x56, 0x90, 0x20, 0x04, 0x90, 0x02, 0x20, 0x04, 0x10, 0x41, 0x03, 0x88, 0x20, + 0x04, 0x40, 0x08, 0x81, 0x30, 0x02, 0x10, 0xc4, 0x30, 0x8e, 0x21, 0x08, 0x22, 0xc1, 0x18, 0xc0, + 0x31, 0x0c, 0x60, 0x98, 0xc2, 0x23, 0x0c, 0x5f, 0xff, 0xfb, 0xef, 0xfe, 0x77, 0xfd, 0xff, 0xdb, + 0xff, 0x6f, 0xfb, 0xbf, 0xfd, 0xef, 0xff, 0xdb, 0xfe, 0x7f, 0xf7, 0xdf, 0xfd, 0xef, 0xfb, 0xbf, + 0xff, 0xff, 0xff, 0xf7, 0xff, 0xdd, 0xff, 0xef, 0xff, 0x7b, 0xff, 0xde, 0xff, 0xff, 0x7b, 0xff, + 0xf7, 0xff, 0xef, 0xef, 0xde, 0x73, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xfe, 0xfe, 0xff, 0x89, 0xbf, 0xff, 0xbf, 0xf7, 0x7f, 0x7d, 0xff, 0xef, 0x7e, 0xff, 0xfb, + 0xdf, 0xff, 0xef, 0x7d, 0x1f, 0x97, 0xa7, 0x21, 0x1c, 0xd0, 0x23, 0x0a, 0x40, 0x14, 0xa4, 0x93, + 0x99, 0x24, 0x62, 0x8a, 0x19, 0x51, 0x46, 0xb0, 0x8c, 0x43, 0x18, 0xc4, 0x30, 0x26, 0xc4, 0x18, + 0xc9, 0x26, 0x98, 0x41, 0x4c, 0xb3, 0x80, 0x0d, 0x02, 0x70, 0x88, 0x23, 0xc4, 0x10, 0x96, 0x64, + 0x09, 0x93, 0x24, 0x68, 0x44, 0x95, 0x89, 0x6a, 0x10, 0xc7, 0x3f, 0xfb, 0xff, 0xff, 0x6e, 0xfb, + 0xbf, 0xff, 0xfb, 0xef, 0xff, 0x76, 0xff, 0x9f, 0xfd, 0xdf, 0xff, 0xbb, 0xee, 0xff, 0x3d, 0xff, + 0xff, 0xff, 0xde, 0xfb, 0xff, 0xff, 0xef, 0xbe, 0xff, 0xff, 0xff, 0x77, 0xfd, 0xff, 0xdf, 0xff, + 0xfb, 0x7e, 0xdf, 0xf7, 0xff, 0xff, 0xfe, 0xdf, 0xfd, 0xfb, 0xfb, 0xf7, 0xdf, 0xd9, 0xbf, 0xbf, + 0xd7, 0xf7, 0xfb, 0xfc, 0xff, 0xfb, 0xfb, 0xef, 0xb7, 0x7f, 0xff, 0xf7, 0xff, 0xee, 0x0f, 0x0e, + 0xae, 0x6f, 0x8c, 0x90, 0x53, 0x8c, 0x28, 0x23, 0x99, 0x48, 0x66, 0x91, 0x19, 0x66, 0x48, 0x92, + 0x94, 0x65, 0x24, 0x89, 0x69, 0x46, 0x12, 0xc4, 0x88, 0x32, 0x93, 0x4c, 0x48, 0x33, 0x84, 0x32, + 0xca, 0x0c, 0xb1, 0x22, 0xce, 0x9c, 0x33, 0x96, 0xdf, 0x18, 0xa1, 0xe6, 0xd8, 0xc6, 0xf1, 0xf8, + 0xee, 0xfd, 0xf9, 0xf2, 0xc2, 0x0c, 0x66, 0x90, 0x93, 0x4c, 0x48, 0x33, 0x87, 0x9f, 0x7f, 0xff, + 0xff, 0xff, 0xd7, 0x7d, 0xfd, 0xf7, 0xdf, 0xfb, 0xbf, 0xfe, 0x7b, 0xdf, 0xff, 0xf7, 0xf7, 0xfd, }, { // leekspin: frame 3 - 0xff, 0xef, 0xbf, 0xfb, 0xef, 0xbf, 0xfb, 0xef, 0xbf, 0xfb, 0x6f, 0xff, 0xdb, 0x7f, 0xff, 0xff, - 0xbb, 0xef, 0x7f, 0xdb, 0xff, 0xb7, 0xfd, 0x5d, 0x02, 0xb8, 0xc6, 0x12, 0x30, 0xc4, 0x32, 0x4a, - 0x0c, 0xf1, 0xfd, 0xbf, 0xfb, 0x6d, 0xfb, 0xbb, 0x77, 0x77, 0xbb, 0xef, 0x6f, 0xfb, 0xcf, 0xdf, - 0xbb, 0x6f, 0x7f, 0xdb, 0xff, 0xf7, 0x0f, 0xe0, 0x3f, 0xc0, 0x0d, 0xb7, 0xe0, 0x0d, 0xa9, 0xf8, - 0xc7, 0x1d, 0xf0, 0xff, 0xff, 0xf0, 0xc7, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf1, 0xc6, - 0xff, 0xf7, 0xf8, 0xf3, 0xcf, 0x90, 0xf7, 0xfc, 0xe3, 0x99, 0x2e, 0xe2, 0xfc, 0x03, 0xfc, 0x78, - 0x13, 0x27, 0xec, 0x19, 0x53, 0xe6, 0x2d, 0xd8, 0x83, 0x3b, 0xee, 0x00, 0x7f, 0xff, 0xbb, 0xef, - 0xff, 0xbb, 0xef, 0xff, 0xbb, 0xef, 0xff, 0xbb, 0xef, 0xff, 0xbb, 0xef, 0x7f, 0xdb, 0xff, 0xb7, - 0xff, 0xfb, 0x6f, 0xfe, 0xdb, 0x7f, 0xf6, 0xdf, 0xfd, 0xb7, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0xf7, - 0xff, 0xfd, 0x9f, 0xfb, 0xf7, 0xff, 0xbb, 0x00, 0x66, 0x99, 0x4c, 0x63, 0x99, 0x8c, 0x63, 0x7c, - 0x1f, 0xce, 0x26, 0x35, 0xc9, 0x0b, 0x30, 0x4c, 0x83, 0xb0, 0xfc, 0x6f, 0xef, 0xdb, 0xbf, 0x6e, - 0x7b, 0xdf, 0xf7, 0xbe, 0xee, 0xfd, 0x00, 0xd9, 0x7b, 0x02, 0x86, 0x7c, 0x09, 0xff, 0x5f, 0x3f, - 0xa7, 0x9f, 0xcb, 0xcb, 0xef, 0xcb, 0xdb, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xef, 0x9f, 0xd7, 0xcf, 0xcb, 0xdf, 0xd7, 0xcf, 0x8f, 0x3f, 0x1f, 0x7f, 0xff, 0xff, 0xfb, 0x72, - 0x87, 0xb9, 0x6c, 0x03, 0x3b, 0xcc, 0xd3, 0x36, 0x88, 0xdb, 0x75, 0x84, 0xff, 0xfb, 0xef, 0xbe, - 0xfb, 0xef, 0xfe, 0x7b, 0xef, 0xfe, 0xdb, 0xff, 0xb6, 0xff, 0xed, 0xbf, 0xfb, 0x6f, 0xfe, 0xdb, - 0xff, 0xff, 0x77, 0xfd, 0xef, 0x7b, 0xff, 0xb6, 0xff, 0xed, 0x7f, 0xfb, 0xdf, 0xfe, 0xb7, 0xff, - 0xee, 0xfe, 0xb7, 0xff, 0x7f, 0xef, 0xf9, 0x02, 0x66, 0x99, 0x92, 0x66, 0x49, 0x98, 0xa6, 0xb1, - 0xcd, 0xe4, 0xf3, 0xf9, 0xbc, 0xef, 0xfd, 0xde, 0x77, 0xff, 0xed, 0xbb, 0xfb, 0xf6, 0x6f, 0x1f, - 0x37, 0x4e, 0xce, 0x31, 0x93, 0x63, 0x4c, 0x84, 0x32, 0x59, 0x45, 0x22, 0xaa, 0xc8, 0xfe, 0xff, - 0xf7, 0xf7, 0xdf, 0x7f, 0x3f, 0x3f, 0x7f, 0x7f, 0x3f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, - 0x7f, 0x3f, 0x7f, 0x7f, 0x3f, 0x3f, 0x77, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xef, 0x3f, 0xc4, - 0xdd, 0x33, 0x82, 0xc8, 0x3f, 0x32, 0x82, 0xec, 0x33, 0x86, 0xf8, 0x7f, 0xf7, 0xdd, 0xff, 0xbb, - 0xee, 0x7f, 0xdd, 0xf7, 0xff, 0xee, 0xbb, 0xff, 0xf7, 0xbf, 0xfe, 0xff, 0xed, 0xbf, 0xfb, 0x6e, - 0xff, 0xff, 0xbf, 0xed, 0xff, 0xff, 0xb7, 0xff, 0xfd, 0xdf, 0xf7, 0xff, 0x6e, 0xfb, 0xff, 0xb7, - 0xfe, 0xef, 0x7d, 0xf7, 0xbf, 0xfd, 0xdf, 0xf0, 0x06, 0x99, 0xe4, 0x26, 0xff, 0xfd, 0xdf, 0xff, - 0xf6, 0xbf, 0xff, 0xee, 0xfb, 0x7f, 0xdd, 0xff, 0x37, 0x9f, 0xce, 0x27, 0x31, 0xcc, 0x62, 0x9b, - 0x89, 0x26, 0xb2, 0x98, 0x71, 0x46, 0x9e, 0x1d, 0x70, 0x86, 0x89, 0x33, 0x94, 0x87, 0x2f, 0x4f, - 0x1f, 0xbf, 0x3f, 0x7f, 0x7e, 0xf9, 0xe4, 0x60, 0xdb, 0xd8, 0xc6, 0xf8, 0xc9, 0xda, 0xf2, 0xcc, - 0xc8, 0xf3, 0xf4, 0xe0, 0xfb, 0xf8, 0xfe, 0x7f, 0x7f, 0x3f, 0x9f, 0x5f, 0x0f, 0xc9, 0x72, 0x0e, - 0xe1, 0x3c, 0x06, 0x09, 0x61, 0xb4, 0xd7, 0x4c, 0xf1, 0xbf, 0xff, 0xfd, 0xe7, 0xbf, 0xff, 0x7d, - 0xf7, 0xff, 0xed, 0xff, 0xfe, 0xcf, 0xff, 0xbe, 0xf7, 0xdd, 0xff, 0xef, 0xfe, 0x7b, 0xdf, 0xf7, - 0xff, 0xff, 0x7b, 0xdf, 0xfe, 0xfb, 0xdf, 0xfd, 0xef, 0xfe, 0xf7, 0xdf, 0xfb, 0xff, 0x76, 0xff, - 0xef, 0xfd, 0xff, 0xf7, 0xdf, 0x7d, 0xff, 0xff, 0xb0, 0xbf, 0xff, 0xff, 0xf6, 0x9f, 0xff, 0xfb, - 0xfe, 0xdf, 0xf7, 0xfd, 0x9f, 0xef, 0xf1, 0xf4, 0x66, 0xc9, 0xfc, 0xf3, 0xf9, 0xfc, 0xb6, 0xf8, - 0xf1, 0xf6, 0xdc, 0xf1, 0xf2, 0xee, 0xf1, 0xf4, 0x64, 0x01, 0xb4, 0x26, 0x49, 0x10, 0x24, 0x81, - 0x12, 0x94, 0x65, 0x08, 0x02, 0x64, 0x18, 0x42, 0x24, 0x19, 0x01, 0x85, 0x21, 0xbf, 0xff, 0x6d, - 0x5d, 0x37, 0x1d, 0x1d, 0x86, 0x26, 0x07, 0x10, 0x40, 0x09, 0x21, 0xd2, 0x4c, 0x19, 0x42, 0x13, - 0x40, 0x4c, 0x11, 0xc0, 0x0e, 0xbb, 0x80, 0xfe, 0xff, 0x6f, 0xfb, 0xbe, 0xf7, 0xdf, 0xfb, 0xff, - 0xbd, 0xef, 0xfb, 0xff, 0xbd, 0xef, 0xfb, 0xff, 0xdf, 0xfb, 0xef, 0x7e, 0xf7, 0xbf, 0xff, 0x6d, - 0xff, 0xff, 0xef, 0xfb, 0xbf, 0xfe, 0xef, 0x7b, 0xfe, 0xdf, 0xff, 0xf6, 0xdf, 0x7f, 0xf7, 0xdf, - 0xfe, 0xfb, 0xdf, 0x77, 0xff, 0xef, 0xfd, 0xff, 0x6f, 0xfc, 0xa7, 0xbf, 0xff, 0xff, 0xd9, 0xdf, - 0xbe, 0xbf, 0x77, 0x7e, 0xff, 0xdf, 0xfb, 0xfc, 0x7f, 0xdf, 0xff, 0xff, 0xbe, 0xfb, 0xff, 0xfd, - 0xdf, 0xfe, 0xff, 0x7b, 0xfe, 0xbf, 0xff, 0xef, 0xd9, 0x11, 0xef, 0x28, 0x00, 0x41, 0x4c, 0x31, - 0xc4, 0x0c, 0x68, 0x93, 0x10, 0x64, 0x01, 0x10, 0x04, 0x41, 0x10, 0x04, 0x00, 0x43, 0x11, 0x00, - 0x88, 0x22, 0x00, 0x48, 0x82, 0x90, 0x11, 0xc4, 0x30, 0x0d, 0x43, 0x10, 0x24, 0xc1, 0x10, 0xb4, - 0x81, 0x68, 0x24, 0x90, 0x4a, 0x2b, 0x80, 0x3f, 0xff, 0xdb, 0xff, 0xf7, 0xfd, 0xbf, 0xee, 0xff, - 0x7b, 0xef, 0xbe, 0xff, 0xed, 0x7f, 0xf6, 0xbf, 0xfb, 0xfe, 0x6f, 0xff, 0xdb, 0xff, 0xfd, 0x6f, - 0xff, 0xff, 0xfb, 0xfe, 0xef, 0xff, 0xbd, 0xff, 0xf7, 0xff, 0xbd, 0xff, 0xef, 0xff, 0xdf, 0xfe, - 0xff, 0xbd, 0xff, 0xdf, 0xff, 0xff, 0xf7, 0x9c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xf9, 0xdf, 0x5f, 0xe6, 0xfd, 0xff, 0xff, 0xf7, 0xbf, 0xfb, 0xff, 0xfd, 0xdf, 0xfe, 0xff, - 0xf7, 0xbd, 0xff, 0x5f, 0x37, 0x9f, 0x47, 0x61, 0x9c, 0x10, 0x63, 0x06, 0xc0, 0x09, 0x64, 0x93, - 0x18, 0x66, 0x82, 0x59, 0x11, 0xa6, 0xa4, 0x19, 0x42, 0x32, 0x8c, 0x44, 0x20, 0x98, 0x47, 0x68, - 0x08, 0xd2, 0x93, 0x24, 0x8c, 0x70, 0x02, 0x0d, 0xc0, 0x32, 0x08, 0xe1, 0x82, 0x0a, 0x3a, 0xc0, - 0x16, 0x44, 0x61, 0x19, 0x46, 0xc8, 0x31, 0x06, 0xd8, 0x43, 0x3f, 0xfe, 0xff, 0xf7, 0xbd, 0xff, - 0xdb, 0xff, 0xf7, 0xff, 0xfd, 0xbf, 0xef, 0xef, 0xff, 0x6d, 0xff, 0xf7, 0xfe, 0xfb, 0xaf, 0xff, - 0xff, 0xff, 0xbe, 0xef, 0xfd, 0xff, 0xff, 0xdf, 0xfd, 0xff, 0x7f, 0xfb, 0xdf, 0xfe, 0xef, 0xfd, - 0x7f, 0xff, 0xdb, 0xff, 0xfd, 0xdf, 0xfe, 0x7e, 0xfb, 0xef, 0xef, 0xdf, 0x9f, 0xff, 0xdf, 0xdf, - 0x6f, 0xef, 0xf3, 0xfc, 0xfd, 0xff, 0xf7, 0xef, 0xbf, 0x7d, 0xff, 0xfe, 0xef, 0xdf, 0x1b, 0x26, - 0x27, 0xc9, 0x98, 0x12, 0x63, 0x2c, 0x82, 0x5a, 0x41, 0x94, 0x93, 0x2c, 0x20, 0xd3, 0x8c, 0x24, - 0x53, 0x48, 0x25, 0xb4, 0x83, 0x28, 0x24, 0xc5, 0x11, 0x52, 0x8c, 0x20, 0x9b, 0xa0, 0x26, 0x59, - 0x82, 0x2a, 0x68, 0x86, 0x99, 0x5c, 0x37, 0x96, 0x5e, 0xb1, 0x84, 0xcc, 0xf1, 0xc6, 0xc9, 0xf8, - 0xfe, 0xed, 0xf8, 0xeb, 0xc2, 0x14, 0x51, 0x4d, 0xa4, 0x92, 0x18, 0x63, 0x47, 0x9f, 0x3f, 0xff, - 0xff, 0xff, 0xf7, 0xdc, 0xff, 0xbb, 0xff, 0xf6, 0xdf, 0x7f, 0xff, 0xde, 0xf7, 0xff, 0xfb, 0xfe + 0xff, 0xef, 0xbf, 0xfb, 0xef, 0xbf, 0xfb, 0xef, 0xbf, 0xfb, 0x6f, 0xff, 0xdb, 0x7f, 0xff, 0xff, + 0xbb, 0xef, 0x7f, 0xdb, 0xff, 0xb7, 0xfd, 0x5d, 0x02, 0xb8, 0xc6, 0x12, 0x30, 0xc4, 0x32, 0x4a, + 0x0c, 0xf1, 0xfd, 0xbf, 0xfb, 0x6d, 0xfb, 0xbb, 0x77, 0x77, 0xbb, 0xef, 0x6f, 0xfb, 0xcf, 0xdf, + 0xbb, 0x6f, 0x7f, 0xdb, 0xff, 0xf7, 0x0f, 0xe0, 0x3f, 0xc0, 0x0d, 0xb7, 0xe0, 0x0d, 0xa9, 0xf8, + 0xc7, 0x1d, 0xf0, 0xff, 0xff, 0xf0, 0xc7, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf1, 0xc6, + 0xff, 0xf7, 0xf8, 0xf3, 0xcf, 0x90, 0xf7, 0xfc, 0xe3, 0x99, 0x2e, 0xe2, 0xfc, 0x03, 0xfc, 0x78, + 0x13, 0x27, 0xec, 0x19, 0x53, 0xe6, 0x2d, 0xd8, 0x83, 0x3b, 0xee, 0x00, 0x7f, 0xff, 0xbb, 0xef, + 0xff, 0xbb, 0xef, 0xff, 0xbb, 0xef, 0xff, 0xbb, 0xef, 0xff, 0xbb, 0xef, 0x7f, 0xdb, 0xff, 0xb7, + 0xff, 0xfb, 0x6f, 0xfe, 0xdb, 0x7f, 0xf6, 0xdf, 0xfd, 0xb7, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0xf7, + 0xff, 0xfd, 0x9f, 0xfb, 0xf7, 0xff, 0xbb, 0x00, 0x66, 0x99, 0x4c, 0x63, 0x99, 0x8c, 0x63, 0x7c, + 0x1f, 0xce, 0x26, 0x35, 0xc9, 0x0b, 0x30, 0x4c, 0x83, 0xb0, 0xfc, 0x6f, 0xef, 0xdb, 0xbf, 0x6e, + 0x7b, 0xdf, 0xf7, 0xbe, 0xee, 0xfd, 0x00, 0xd9, 0x7b, 0x02, 0x86, 0x7c, 0x09, 0xff, 0x5f, 0x3f, + 0xa7, 0x9f, 0xcb, 0xcb, 0xef, 0xcb, 0xdb, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xef, 0x9f, 0xd7, 0xcf, 0xcb, 0xdf, 0xd7, 0xcf, 0x8f, 0x3f, 0x1f, 0x7f, 0xff, 0xff, 0xfb, 0x72, + 0x87, 0xb9, 0x6c, 0x03, 0x3b, 0xcc, 0xd3, 0x36, 0x88, 0xdb, 0x75, 0x84, 0xff, 0xfb, 0xef, 0xbe, + 0xfb, 0xef, 0xfe, 0x7b, 0xef, 0xfe, 0xdb, 0xff, 0xb6, 0xff, 0xed, 0xbf, 0xfb, 0x6f, 0xfe, 0xdb, + 0xff, 0xff, 0x77, 0xfd, 0xef, 0x7b, 0xff, 0xb6, 0xff, 0xed, 0x7f, 0xfb, 0xdf, 0xfe, 0xb7, 0xff, + 0xee, 0xfe, 0xb7, 0xff, 0x7f, 0xef, 0xf9, 0x02, 0x66, 0x99, 0x92, 0x66, 0x49, 0x98, 0xa6, 0xb1, + 0xcd, 0xe4, 0xf3, 0xf9, 0xbc, 0xef, 0xfd, 0xde, 0x77, 0xff, 0xed, 0xbb, 0xfb, 0xf6, 0x6f, 0x1f, + 0x37, 0x4e, 0xce, 0x31, 0x93, 0x63, 0x4c, 0x84, 0x32, 0x59, 0x45, 0x22, 0xaa, 0xc8, 0xfe, 0xff, + 0xf7, 0xf7, 0xdf, 0x7f, 0x3f, 0x3f, 0x7f, 0x7f, 0x3f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, + 0x7f, 0x3f, 0x7f, 0x7f, 0x3f, 0x3f, 0x77, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xef, 0x3f, 0xc4, + 0xdd, 0x33, 0x82, 0xc8, 0x3f, 0x32, 0x82, 0xec, 0x33, 0x86, 0xf8, 0x7f, 0xf7, 0xdd, 0xff, 0xbb, + 0xee, 0x7f, 0xdd, 0xf7, 0xff, 0xee, 0xbb, 0xff, 0xf7, 0xbf, 0xfe, 0xff, 0xed, 0xbf, 0xfb, 0x6e, + 0xff, 0xff, 0xbf, 0xed, 0xff, 0xff, 0xb7, 0xff, 0xfd, 0xdf, 0xf7, 0xff, 0x6e, 0xfb, 0xff, 0xb7, + 0xfe, 0xef, 0x7d, 0xf7, 0xbf, 0xfd, 0xdf, 0xf0, 0x06, 0x99, 0xe4, 0x26, 0xff, 0xfd, 0xdf, 0xff, + 0xf6, 0xbf, 0xff, 0xee, 0xfb, 0x7f, 0xdd, 0xff, 0x37, 0x9f, 0xce, 0x27, 0x31, 0xcc, 0x62, 0x9b, + 0x89, 0x26, 0xb2, 0x98, 0x71, 0x46, 0x9e, 0x1d, 0x70, 0x86, 0x89, 0x33, 0x94, 0x87, 0x2f, 0x4f, + 0x1f, 0xbf, 0x3f, 0x7f, 0x7e, 0xf9, 0xe4, 0x60, 0xdb, 0xd8, 0xc6, 0xf8, 0xc9, 0xda, 0xf2, 0xcc, + 0xc8, 0xf3, 0xf4, 0xe0, 0xfb, 0xf8, 0xfe, 0x7f, 0x7f, 0x3f, 0x9f, 0x5f, 0x0f, 0xc9, 0x72, 0x0e, + 0xe1, 0x3c, 0x06, 0x09, 0x61, 0xb4, 0xd7, 0x4c, 0xf1, 0xbf, 0xff, 0xfd, 0xe7, 0xbf, 0xff, 0x7d, + 0xf7, 0xff, 0xed, 0xff, 0xfe, 0xcf, 0xff, 0xbe, 0xf7, 0xdd, 0xff, 0xef, 0xfe, 0x7b, 0xdf, 0xf7, + 0xff, 0xff, 0x7b, 0xdf, 0xfe, 0xfb, 0xdf, 0xfd, 0xef, 0xfe, 0xf7, 0xdf, 0xfb, 0xff, 0x76, 0xff, + 0xef, 0xfd, 0xff, 0xf7, 0xdf, 0x7d, 0xff, 0xff, 0xb0, 0xbf, 0xff, 0xff, 0xf6, 0x9f, 0xff, 0xfb, + 0xfe, 0xdf, 0xf7, 0xfd, 0x9f, 0xef, 0xf1, 0xf4, 0x66, 0xc9, 0xfc, 0xf3, 0xf9, 0xfc, 0xb6, 0xf8, + 0xf1, 0xf6, 0xdc, 0xf1, 0xf2, 0xee, 0xf1, 0xf4, 0x64, 0x01, 0xb4, 0x26, 0x49, 0x10, 0x24, 0x81, + 0x12, 0x94, 0x65, 0x08, 0x02, 0x64, 0x18, 0x42, 0x24, 0x19, 0x01, 0x85, 0x21, 0xbf, 0xff, 0x6d, + 0x5d, 0x37, 0x1d, 0x1d, 0x86, 0x26, 0x07, 0x10, 0x40, 0x09, 0x21, 0xd2, 0x4c, 0x19, 0x42, 0x13, + 0x40, 0x4c, 0x11, 0xc0, 0x0e, 0xbb, 0x80, 0xfe, 0xff, 0x6f, 0xfb, 0xbe, 0xf7, 0xdf, 0xfb, 0xff, + 0xbd, 0xef, 0xfb, 0xff, 0xbd, 0xef, 0xfb, 0xff, 0xdf, 0xfb, 0xef, 0x7e, 0xf7, 0xbf, 0xff, 0x6d, + 0xff, 0xff, 0xef, 0xfb, 0xbf, 0xfe, 0xef, 0x7b, 0xfe, 0xdf, 0xff, 0xf6, 0xdf, 0x7f, 0xf7, 0xdf, + 0xfe, 0xfb, 0xdf, 0x77, 0xff, 0xef, 0xfd, 0xff, 0x6f, 0xfc, 0xa7, 0xbf, 0xff, 0xff, 0xd9, 0xdf, + 0xbe, 0xbf, 0x77, 0x7e, 0xff, 0xdf, 0xfb, 0xfc, 0x7f, 0xdf, 0xff, 0xff, 0xbe, 0xfb, 0xff, 0xfd, + 0xdf, 0xfe, 0xff, 0x7b, 0xfe, 0xbf, 0xff, 0xef, 0xd9, 0x11, 0xef, 0x28, 0x00, 0x41, 0x4c, 0x31, + 0xc4, 0x0c, 0x68, 0x93, 0x10, 0x64, 0x01, 0x10, 0x04, 0x41, 0x10, 0x04, 0x00, 0x43, 0x11, 0x00, + 0x88, 0x22, 0x00, 0x48, 0x82, 0x90, 0x11, 0xc4, 0x30, 0x0d, 0x43, 0x10, 0x24, 0xc1, 0x10, 0xb4, + 0x81, 0x68, 0x24, 0x90, 0x4a, 0x2b, 0x80, 0x3f, 0xff, 0xdb, 0xff, 0xf7, 0xfd, 0xbf, 0xee, 0xff, + 0x7b, 0xef, 0xbe, 0xff, 0xed, 0x7f, 0xf6, 0xbf, 0xfb, 0xfe, 0x6f, 0xff, 0xdb, 0xff, 0xfd, 0x6f, + 0xff, 0xff, 0xfb, 0xfe, 0xef, 0xff, 0xbd, 0xff, 0xf7, 0xff, 0xbd, 0xff, 0xef, 0xff, 0xdf, 0xfe, + 0xff, 0xbd, 0xff, 0xdf, 0xff, 0xff, 0xf7, 0x9c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xf9, 0xdf, 0x5f, 0xe6, 0xfd, 0xff, 0xff, 0xf7, 0xbf, 0xfb, 0xff, 0xfd, 0xdf, 0xfe, 0xff, + 0xf7, 0xbd, 0xff, 0x5f, 0x37, 0x9f, 0x47, 0x61, 0x9c, 0x10, 0x63, 0x06, 0xc0, 0x09, 0x64, 0x93, + 0x18, 0x66, 0x82, 0x59, 0x11, 0xa6, 0xa4, 0x19, 0x42, 0x32, 0x8c, 0x44, 0x20, 0x98, 0x47, 0x68, + 0x08, 0xd2, 0x93, 0x24, 0x8c, 0x70, 0x02, 0x0d, 0xc0, 0x32, 0x08, 0xe1, 0x82, 0x0a, 0x3a, 0xc0, + 0x16, 0x44, 0x61, 0x19, 0x46, 0xc8, 0x31, 0x06, 0xd8, 0x43, 0x3f, 0xfe, 0xff, 0xf7, 0xbd, 0xff, + 0xdb, 0xff, 0xf7, 0xff, 0xfd, 0xbf, 0xef, 0xef, 0xff, 0x6d, 0xff, 0xf7, 0xfe, 0xfb, 0xaf, 0xff, + 0xff, 0xff, 0xbe, 0xef, 0xfd, 0xff, 0xff, 0xdf, 0xfd, 0xff, 0x7f, 0xfb, 0xdf, 0xfe, 0xef, 0xfd, + 0x7f, 0xff, 0xdb, 0xff, 0xfd, 0xdf, 0xfe, 0x7e, 0xfb, 0xef, 0xef, 0xdf, 0x9f, 0xff, 0xdf, 0xdf, + 0x6f, 0xef, 0xf3, 0xfc, 0xfd, 0xff, 0xf7, 0xef, 0xbf, 0x7d, 0xff, 0xfe, 0xef, 0xdf, 0x1b, 0x26, + 0x27, 0xc9, 0x98, 0x12, 0x63, 0x2c, 0x82, 0x5a, 0x41, 0x94, 0x93, 0x2c, 0x20, 0xd3, 0x8c, 0x24, + 0x53, 0x48, 0x25, 0xb4, 0x83, 0x28, 0x24, 0xc5, 0x11, 0x52, 0x8c, 0x20, 0x9b, 0xa0, 0x26, 0x59, + 0x82, 0x2a, 0x68, 0x86, 0x99, 0x5c, 0x37, 0x96, 0x5e, 0xb1, 0x84, 0xcc, 0xf1, 0xc6, 0xc9, 0xf8, + 0xfe, 0xed, 0xf8, 0xeb, 0xc2, 0x14, 0x51, 0x4d, 0xa4, 0x92, 0x18, 0x63, 0x47, 0x9f, 0x3f, 0xff, + 0xff, 0xff, 0xf7, 0xdc, 0xff, 0xbb, 0xff, 0xf6, 0xdf, 0x7f, 0xff, 0xde, 0xf7, 0xff, 0xfb, 0xfe } }; @@ -807,12 +807,13 @@ static void render_logo(void) { } } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) } else { render_logo(); } + return false; } #endif diff --git a/keyboards/arch_36/rules.mk b/keyboards/arch_36/rules.mk index 588ef01e3e68..db9ba256640f 100644 --- a/keyboards/arch_36/rules.mk +++ b/keyboards/arch_36/rules.mk @@ -7,19 +7,17 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays -BLUETOOTH_ENABLE = no # Enable Bluetooth +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enables the use of OLED displays AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = yes # Split common diff --git a/keyboards/ares/ares.h b/keyboards/ares/ares.h index 6628bb022709..13b8d885cf30 100644 --- a/keyboards/ares/ares.h +++ b/keyboards/ares/ares.h @@ -1,5 +1,6 @@ /* Copyright 2019 Evy Dekkers + 2021 James Young for QMK (@noroadsleft) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -21,7 +22,7 @@ along with this program. If not, see . #define XXX KC_NO -#define LAYOUT( \ +#define LAYOUT_all( \ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4e, \ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \ @@ -35,3 +36,33 @@ along with this program. If not, see . {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, k4d, k4e} \ } + +#define LAYOUT_60_ansi_split_bs_rshift( \ + k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4e, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \ + k10, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \ + k00, k01, k02, k06, k0a, k0b, k0c, k0d \ +) \ +{ \ + {k00, k01, k02, XXX, XXX, XXX, k06, XXX, XXX, XXX, k0a, k0b, k0c, k0d, XXX}, \ + {k10, XXX, 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}, \ + {k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4e} \ +} + +#define LAYOUT_60_hhkb( \ + k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4e, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \ + k10, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \ + k01, k02, k06, k0b, k0c \ +) \ +{ \ + {XXX, k01, k02, XXX, XXX, XXX, k06, XXX, XXX, XXX, XXX, k0b, k0c, XXX, XXX}, \ + {k10, XXX, 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}, \ + {k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4e} \ +} diff --git a/keyboards/ares/config.h b/keyboards/ares/config.h index 35e885d69310..53a3bfe13a23 100644 --- a/keyboards/ares/config.h +++ b/keyboards/ares/config.h @@ -44,10 +44,6 @@ along with this program. If not, see . #define RGBLIGHT_ANIMATIONS -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - /* Bootmagic Lite key configuration */ -// #define BOOTMAGIC_LITE_ROW 0 -// #define BOOTMAGIC_LITE_COLUMN 0 +#define BOOTMAGIC_LITE_ROW 4 +#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/ares/info.json b/keyboards/ares/info.json index 00911deb93cf..eeff16b7a978 100644 --- a/keyboards/ares/info.json +++ b/keyboards/ares/info.json @@ -1,12 +1,222 @@ { - "keyboard_name": "LSJ Ares", - "url": "", - "maintainer": "qmk", - "width": 15, - "height": 5, + "keyboard_name": "LSJ Ares", + "url": "", + "maintainer": "qmk", + "layout_aliases": { + "LAYOUT": "LAYOUT_all" + }, "layouts": { - "LAYOUT": { - "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}, {"label":"|", "x":13, "y":0}, {"label":"Back space", "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":"|", "x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.25}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"label":"|", "x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Fn", "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}] + "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}, + {"label":"|", "x":13, "y":0}, + {"label":"Back space", "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":"|", "x":12.75, "y":2}, + {"label":"Enter", "x":13.75, "y":2, "w":1.25}, + + {"label":"Shift", "x":0, "y":3, "w":1.25}, + {"label":"|", "x":1.25, "y":3}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"Fn", "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}, + {"label":"Space", "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} + ] + }, + "LAYOUT_60_ansi_split_bs_rshift": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":12.5, "y":4, "w":1.25}, + {"x":13.75, "y":4, "w":1.25} + ] + }, + "LAYOUT_60_hhkb": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + + {"x":1.5, "y":4}, + {"x":2.5, "y":4, "w":1.5}, + {"x":4, "y":4, "w":7}, + {"x":11, "y":4, "w":1.5}, + {"x":12.5, "y":4} + ] } } -} \ No newline at end of file +} diff --git a/keyboards/ares/keymaps/default/keymap.c b/keyboards/ares/keymaps/default/keymap.c index 490dbdf62632..8b95db5078fa 100644 --- a/keyboards/ares/keymaps/default/keymap.c +++ b/keyboards/ares/keymaps/default/keymap.c @@ -17,24 +17,26 @@ along with this program. If not, see . #include QMK_KEYBOARD_H -#define _MA 0 -#define _FN 1 - -#define ______ KC_TRNS +enum layer_names { + _MA, + _FN, +}; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[_MA] = LAYOUT( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, 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_RSFT, MO(_FN), - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTRL), -[_FN] = LAYOUT( - RGB_MOD, BL_TOGG, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, RESET, - ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, - ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, - ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, - ______, ______, ______, ______, ______, ______, ______, ______) - + [_MA] = 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_BSLS, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, 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_RSFT, MO(_FN), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL + ), + [_FN] = LAYOUT_all( + RGB_MOD, BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ) + }; diff --git a/keyboards/ares/readme.md b/keyboards/ares/readme.md index 376cee437f80..a1e04ecf91e1 100644 --- a/keyboards/ares/readme.md +++ b/keyboards/ares/readme.md @@ -1,8 +1,8 @@ -# lSJ Ares +# LSJ Ares * Keyboard Maintainer: QMK Community * Hardware Supported: LSJ Ares PCB -* Hardware Availability: +* Hardware Availability: [2018 Geekhack Group Buy](https://geekhack.org/index.php?topic=93146.0) Make example for this keyboard (after setting up your build environment): @@ -12,6 +12,6 @@ Flashing example for this keyboard ([after setting up the bootloadHID flashing e make ares:default:flash -**Reset Key**: Hold down the *left control* key while plugging in the keyboard. +**Reset Key**: Hold down the top left key, commonly programmed as *Escape*, while plugging in the keyboard. See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/ares/rules.mk b/keyboards/ares/rules.mk index 076cbdc39ab6..194c38c5ca9a 100644 --- a/keyboards/ares/rules.mk +++ b/keyboards/ares/rules.mk @@ -2,21 +2,18 @@ MCU = atmega32a # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid -# build options -BOOTMAGIC_ENABLE = lite -MOUSEKEY_ENABLE = no -EXTRAKEY_ENABLE = yes -CONSOLE_ENABLE = no -COMMAND_ENABLE = yes -BACKLIGHT_ENABLE = yes -RGBLIGHT_ENABLE = no +# 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 = yes # Commands for debug and configuration +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow WS2812_DRIVER = i2c + +LAYOUTS = 60_ansi_split_bs_rshift 60_hhkb diff --git a/keyboards/arisu/config.h b/keyboards/arisu/config.h index b1f9cf86d0da..8cadc50741cc 100644 --- a/keyboards/arisu/config.h +++ b/keyboards/arisu/config.h @@ -112,59 +112,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -182,23 +129,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 diff --git a/keyboards/arisu/info.json b/keyboards/arisu/info.json index 213613d7689c..c74817aefd81 100644 --- a/keyboards/arisu/info.json +++ b/keyboards/arisu/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Arisu", "url": "https://github.com/FateNozomi/arisu-pcb", "maintainer": "FateNozomi", - "width": 18.3, - "height": 5.25, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/arisu/rules.mk b/keyboards/arisu/rules.mk index a83e4649faed..ef61685f7c09 100644 --- a/keyboards/arisu/rules.mk +++ b/keyboards/arisu/rules.mk @@ -7,17 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE = no # Audio output diff --git a/keyboards/arrayperipherals/1x4p1/info.json b/keyboards/arrayperipherals/1x4p1/info.json index 3edf84ab0d72..d962cb586ba6 100644 --- a/keyboards/arrayperipherals/1x4p1/info.json +++ b/keyboards/arrayperipherals/1x4p1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "[1 x 4] + 1 Macropad", "url": "https://github.com/daviddoan", "maintainer": "David Doan", - "width": 5, - "height": 1, "layouts": { "LAYOUT_ortho_1x5": { "layout": [ diff --git a/keyboards/arrayperipherals/1x4p1/rules.mk b/keyboards/arrayperipherals/1x4p1/rules.mk index 3bbc6dbf8796..749c045834b4 100644 --- a/keyboards/arrayperipherals/1x4p1/rules.mk +++ b/keyboards/arrayperipherals/1x4p1/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output UNICODE_ENABLE = yes ENCODER_ENABLE = yes diff --git a/keyboards/ash1800/config.h b/keyboards/ash1800/config.h index fe839e47f684..051db87a79a2 100644 --- a/keyboards/ash1800/config.h +++ b/keyboards/ash1800/config.h @@ -125,59 +125,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -196,26 +143,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/ash1800/info.json b/keyboards/ash1800/info.json index 102b78b0eef6..632544c772e3 100644 --- a/keyboards/ash1800/info.json +++ b/keyboards/ash1800/info.json @@ -1,8 +1,6 @@ { "keyboard_name": "ASH-1800", "maintainer": "angelbirth", - "width": 19.5, - "height": 7.25, "layouts": { "LAYOUT_all": { "layout": [ @@ -536,4 +534,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/ash1800/rules.mk b/keyboards/ash1800/rules.mk index dc36b11b99a6..710ac85b5c5f 100644 --- a/keyboards/ash1800/rules.mk +++ b/keyboards/ash1800/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # 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 = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/ash_xiix/info.json b/keyboards/ash_xiix/info.json index c81eb0a6bb01..b91d2e14b1cb 100644 --- a/keyboards/ash_xiix/info.json +++ b/keyboards/ash_xiix/info.json @@ -2,8 +2,6 @@ "keyboard_name": "ASH-XIIX", "url": "config.qmk.fm", "maintainer": "qmk", - "width": 19.5, - "height": 7.25, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/ash_xiix/rules.mk b/keyboards/ash_xiix/rules.mk index 32981133b2eb..ef61685f7c09 100644 --- a/keyboards/ash_xiix/rules.mk +++ b/keyboards/ash_xiix/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/ashpil/modelm_usbc/config.h b/keyboards/ashpil/modelm_usbc/config.h index 4738124ee7b0..f383a3071493 100644 --- a/keyboards/ashpil/modelm_usbc/config.h +++ b/keyboards/ashpil/modelm_usbc/config.h @@ -51,59 +51,6 @@ along with this program. If not, see . #define DEBOUNCE 5 -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -124,4 +71,4 @@ along with this program. If not, see . /* Bootmagic Lite key configuration */ #define BOOTMAGIC_LITE_ROW 0 -#define BOOTMAGIC_LITE_COLUMN 2 \ No newline at end of file +#define BOOTMAGIC_LITE_COLUMN 2 diff --git a/keyboards/ashpil/modelm_usbc/info.json b/keyboards/ashpil/modelm_usbc/info.json index e24a27f200a3..985141afbb5e 100644 --- a/keyboards/ashpil/modelm_usbc/info.json +++ b/keyboards/ashpil/modelm_usbc/info.json @@ -2,8 +2,6 @@ "keyboard_name": "IBM Model M 101 ANSI/102 ISO", "url": "https://github.com/ashpil/qmk_firmware/tree/master/keyboards/ashpil/modelm_usbc", "maintainer": "ashpil", - "width": 22.5, - "height": 6.5, "layouts": { "LAYOUT_fullsize_iso_wkl": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"@", "x":2, "y":1.5}, {"label":"#", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"Backspace", "x":13, "y":1.5, "w":2}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.25, "y":1.5}, {"label":"Num Lock", "x":18.5, "y":1.5}, {"label":"/", "x":19.5, "y":1.5}, {"label":"*", "x":20.5, "y":1.5}, {"label":"-", "x":21.5, "y":1.5}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":6.5, "y":2.5}, {"label":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"7", "x":18.5, "y":2.5}, {"label":"8", "x":19.5, "y":2.5}, {"label":"9", "x":20.5, "y":2.5}, {"label":"+", "x":21.5, "y":2.5, "h":2}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.5}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"~", "x":12.75, "y":3.5}, {"label":"Enter", "x":13.75, "y":2.5, "w":1.25, "h":2}, {"label":"4", "x":18.5, "y":3.5}, {"label":"5", "x":19.5, "y":3.5}, {"label":"6", "x":20.5, "y":3.5}, {"label":"Shift", "x":0, "y":4.5, "w":1.25}, {"label":"|", "x":1.25, "y":4.5}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"N", "x":7.25, "y":4.5}, {"label":"M", "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":"Shift", "x":12.25, "y":4.5, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"1", "x":18.5, "y":4.5}, {"label":"2", "x":19.5, "y":4.5}, {"label":"3", "x":20.5, "y":4.5}, {"label":"Enter", "x":21.5, "y":4.5, "h":2}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.5}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":7}, {"label":"Alt", "x":11, "y":5.5, "w":1.5}, {"label":"Ctrl", "x":13.5, "y":5.5, "w":1.5}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}, {"label":"0", "x":18.5, "y":5.5, "w":2}, {"label":".", "x":20.5, "y":5.5}] diff --git a/keyboards/ashpil/modelm_usbc/rules.mk b/keyboards/ashpil/modelm_usbc/rules.mk index 714408a2e9d4..1194925b652d 100644 --- a/keyboards/ashpil/modelm_usbc/rules.mk +++ b/keyboards/ashpil/modelm_usbc/rules.mk @@ -2,30 +2,18 @@ MCU = at90usb1286 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/at101_bh/info.json b/keyboards/at101_bh/info.json index 557c4d1bdf2a..9fdac129f5b4 100644 --- a/keyboards/at101_bh/info.json +++ b/keyboards/at101_bh/info.json @@ -2,8 +2,6 @@ "keyboard_name": "AT101 BH PCB", "url": "https://deskthority.net/group-buys-f50/programmable-vintage-board-pcbs-omnikey-at101-and-z-150-t19325.html", "maintainer": "qmk, blindassassin111", - "width": 22.5, - "height": 6.5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/at101_bh/keymaps/default/keymap.c b/keyboards/at101_bh/keymaps/default/keymap.c index 086c25e1c774..1962dd7479fb 100644 --- a/keyboards/at101_bh/keymaps/default/keymap.c +++ b/keyboards/at101_bh/keymaps/default/keymap.c @@ -19,35 +19,26 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), }; -void matrix_init_user(void) { -} - -void matrix_scan_user(void) { -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - void led_set_user(uint8_t usb_led) { - DDRB |= (1 << 4); - DDRD |= (1 << 6) | (1 << 7); + setPinOutput(B4); + setPinOutput(D6); + setPinOutput(D7); if (usb_led & (1 << USB_LED_NUM_LOCK)) { - PORTD |= (1 << 7); + writePinHigh(D7); } else { - PORTD &= ~(1 << 7); + writePinLow(D7); } if (usb_led & (1 << USB_LED_CAPS_LOCK)) { - PORTB |= (1 << 4); + writePinHigh(B4); } else { - PORTB &= ~(1 << 4); + writePinLow(B4); } if (usb_led & (1 << USB_LED_SCROLL_LOCK)) { - PORTD |= (1 << 6); + writePinHigh(D6); } else { - PORTD &= ~(1 << 6); + writePinLow(D6); } -} \ No newline at end of file +} diff --git a/keyboards/at101_bh/rules.mk b/keyboards/at101_bh/rules.mk index af0606f6d3b6..c3e2560c4524 100644 --- a/keyboards/at101_bh/rules.mk +++ b/keyboards/at101_bh/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = halfkay # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 -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 diff --git a/keyboards/at_at/660m/info.json b/keyboards/at_at/660m/info.json index 935b96200b72..e5282485fb6c 100644 --- a/keyboards/at_at/660m/info.json +++ b/keyboards/at_at/660m/info.json @@ -2,8 +2,6 @@ "keyboard_name": "AT-AT 660M", "url": "", "maintainer": "adrientetar", - "width": 16.5, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/at_at/660m/rules.mk b/keyboards/at_at/660m/rules.mk index f0465ceb20b0..595d1951f6df 100644 --- a/keyboards/at_at/660m/rules.mk +++ b/keyboards/at_at/660m/rules.mk @@ -9,14 +9,12 @@ BOOTLOADER = stm32-dfu # comment out to disable the options. # -#BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover -CUSTOM_MATRIX = no # Custom matrix file # BACKLIGHT_ENABLE = yes # RGBLIGHT_ENABLE = yes NO_USB_STARTUP_CHECK = yes # Workaround for issue 6369 diff --git a/keyboards/atomic/atomic.c b/keyboards/atomic/atomic.c index eba5ed61f680..1bd663c514da 100644 --- a/keyboards/atomic/atomic.c +++ b/keyboards/atomic/atomic.c @@ -1,3 +1,19 @@ +/* Copyright 2015 Jack Humbert + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #include "atomic.h" void matrix_init_kb(void) { @@ -5,8 +21,8 @@ void matrix_init_kb(void) { // runs once when the firmware starts up // Turn status LED on - DDRE |= (1<<6); - PORTE |= (1<<6); + setPinOutput(E6); + writePinHigh(E6); matrix_init_user(); } diff --git a/keyboards/atomic/atomic.h b/keyboards/atomic/atomic.h index a22029f7695d..7579f49e3342 100644 --- a/keyboards/atomic/atomic.h +++ b/keyboards/atomic/atomic.h @@ -1,10 +1,22 @@ -#ifndef ATOMIC_H -#define ATOMIC_H +/* Copyright 2015 Jack Humbert + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once #include "quantum.h" -#include -#include -#include // This a shortcut to help you visually see your layout. // The following is an example using the Planck MIT layout @@ -24,7 +36,7 @@ { K40, K41, KC_NO, K43, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E } \ } -#define LAYOUT_grid( \ +#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,\ @@ -37,7 +49,3 @@ { 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 } \ } - -#define LAYOUT_ortho_5x15 LAYOUT_grid - -#endif \ No newline at end of file diff --git a/keyboards/atomic/config.h b/keyboards/atomic/config.h index 06019dd54363..cb4aee0f7fc1 100644 --- a/keyboards/atomic/config.h +++ b/keyboards/atomic/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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -24,8 +23,8 @@ along with this program. If not, see . #define VENDOR_ID 0xFEED #define PRODUCT_ID 0x6060 #define DEVICE_VER 0x0001 -#define MANUFACTURER Ortholinear Keyboards -#define PRODUCT The Atomic Keyboard +#define MANUFACTURER OLKB +#define PRODUCT Atomic /* key matrix size */ #define MATRIX_ROWS 5 @@ -85,54 +84,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -150,5 +101,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -#endif diff --git a/keyboards/atomic/info.json b/keyboards/atomic/info.json index 6e543b7b5531..d55ba4b75a4b 100644 --- a/keyboards/atomic/info.json +++ b/keyboards/atomic/info.json @@ -1,11 +1,166 @@ { - "keyboard_name": "Atomic", - "maintainer": "qmk", - "width": 15, - "height": 5, - "layouts": { - "LAYOUT_semi_standard": { - "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2, "w":2}, {"x":14, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3, "w":2}, {"x":13, "y":3}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}] + "keyboard_name": "Atomic", + "maintainer": "jackhumbert", + "layout_aliases": { + "LAYOUT_grid": "LAYOUT_ortho_5x15" + }, + "layouts": { + "LAYOUT_semi_standard": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":6, "y":1}, + {"x":7, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + {"x":12, "y":1}, + {"x":13, "y":1}, + {"x":14, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + {"x":6, "y":2}, + {"x":7, "y":2}, + {"x":8, "y":2}, + {"x":9, "y":2}, + {"x":10, "y":2}, + {"x":11, "y":2}, + {"x":12, "y":2, "w":2}, + {"x":14, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3}, + {"x":6, "y":3}, + {"x":7, "y":3}, + {"x":8, "y":3}, + {"x":9, "y":3}, + {"x":10, "y":3}, + {"x":11, "y":3, "w":2}, + {"x":13, "y":3}, + {"x":14, "y":3}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4}, + {"x":11, "y":4}, + {"x":12, "y":4}, + {"x":13, "y":4}, + {"x":14, "y":4} + ] + }, + "LAYOUT_ortho_5x15": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":6, "y":1}, + {"x":7, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + {"x":12, "y":1}, + {"x":13, "y":1}, + {"x":14, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + {"x":6, "y":2}, + {"x":7, "y":2}, + {"x":8, "y":2}, + {"x":9, "y":2}, + {"x":10, "y":2}, + {"x":11, "y":2}, + {"x":12, "y":2}, + {"x":13, "y":2}, + {"x":14, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3}, + {"x":6, "y":3}, + {"x":7, "y":3}, + {"x":8, "y":3}, + {"x":9, "y":3}, + {"x":10, "y":3}, + {"x":11, "y":3}, + {"x":12, "y":3}, + {"x":13, "y":3}, + {"x":14, "y":3}, + + {"x":0, "y":4}, + {"x":1, "y":4}, + {"x":2, "y":4}, + {"x":3, "y":4}, + {"x":4, "y":4}, + {"x":5, "y":4}, + {"x":6, "y":4}, + {"x":7, "y":4}, + {"x":8, "y":4}, + {"x":9, "y":4}, + {"x":10, "y":4}, + {"x":11, "y":4}, + {"x":12, "y":4}, + {"x":13, "y":4}, + {"x":14, "y":4} + ] + } } - } } diff --git a/keyboards/atomic/keymaps/abienz.c b/keyboards/atomic/keymaps/abienz.c deleted file mode 100644 index 7cc27d71a6d7..000000000000 --- a/keyboards/atomic/keymaps/abienz.c +++ /dev/null @@ -1,18 +0,0 @@ -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_grid( /* Colemak */ - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NO , - KC_TAB, CM_Q, CM_W, CM_F, CM_P, CM_G, CM_J, CM_L, CM_U, CM_Y, CM_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL , - KC_BSPC, CM_A, CM_R, CM_S, CM_T, CM_D, CM_H, CM_N, CM_E, CM_I, CM_O, KC_QUOT, KC_ENT, KC_NO, KC_PGUP, - KC_LSFT, CM_Z, CM_X, CM_C, CM_V, CM_B, CM_K, CM_M, CM_COMM, CM_DOT, CM_SLSH, KC_RSFT, KC_NO, KC_UP, KC_PGDN, - KC_LCTL, KC_LGUI, KC_NO, KC_LALT, MO(1), KC_SPC, KC_NO, KC_RALT, MO(1), KC_RGUI, KC_NO, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, - ), - [1] = LAYOUT_grid( /* function */ - 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_BSPC, KC_NO , - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_SLEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MPLY, - KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, MO(1), KC_TRNS, KC_NO, KC_TRNS, MO(1), KC_TRNS, KC_NO, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT, - ), -}; diff --git a/keyboards/atomic/keymaps/abienz/keymap.c b/keyboards/atomic/keymaps/abienz/keymap.c new file mode 100644 index 000000000000..c499807d769c --- /dev/null +++ b/keyboards/atomic/keymaps/abienz/keymap.c @@ -0,0 +1,19 @@ +#include QMK_KEYBOARD_H +#include "keymap_colemak.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ortho_5x15(/* Colemak */ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, XXXXXXX, + KC_TAB, CM_Q, CM_W, CM_F, CM_P, CM_G, CM_J, CM_L, CM_U, CM_Y, CM_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_BSPC, CM_A, CM_R, CM_S, CM_T, CM_D, CM_H, CM_N, CM_E, CM_I, CM_O, KC_QUOT, KC_ENT, XXXXXXX, KC_PGUP, + KC_LSFT, CM_Z, CM_X, CM_C, CM_V, CM_B, CM_K, CM_M, CM_COMM, CM_DOT, CM_SLSH, KC_RSFT, XXXXXXX, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, XXXXXXX, KC_LALT, MO(1), KC_SPC, XXXXXXX, KC_RALT, MO(1), KC_RGUI, XXXXXXX, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_ortho_5x15(/* function */ + 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_BSPC, XXXXXXX, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_SLEP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_CALC, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, KC_MPLY, + _______, _______, XXXXXXX, _______, MO(1), _______, XXXXXXX, _______, MO(1), _______, XXXXXXX, _______, KC_MPRV, KC_VOLD, KC_MNXT + ), +}; diff --git a/keyboards/atomic/keymaps/default/keymap.c b/keyboards/atomic/keymaps/default/keymap.c index 6d314f147922..d4bdc1837183 100644 --- a/keyboards/atomic/keymaps/default/keymap.c +++ b/keyboards/atomic/keymaps/default/keymap.c @@ -90,7 +90,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * '--------------------------------------------------------------------------------------------------------------------------------------' */ - [_QW] = LAYOUT_grid( /* QWERTY */ + [_QW] = LAYOUT_ortho_5x15( /* QWERTY */ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL , KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT, KC_PGUP, @@ -112,7 +112,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * '--------------------------------------------------------------------------------------------------------------------------------------' */ - [_CM] = LAYOUT_grid( /* COLEMAK */ + [_CM] = LAYOUT_ortho_5x15( /* COLEMAK */ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL , KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT, KC_ENT, KC_PGUP, @@ -134,7 +134,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * '--------------------------------------------------------------------------------------------------------------------------------------' */ - [_DV] = LAYOUT_grid( /* DVORAK */ + [_DV] = LAYOUT_ortho_5x15( /* DVORAK */ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL , KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, KC_ENT, KC_ENT, KC_PGUP, @@ -156,7 +156,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * '--------------------------------------------------------------------------------------------------------------------------------------' */ - [_LW] = LAYOUT_grid( /* LOWERED */ + [_LW] = LAYOUT_ortho_5x15( /* LOWERED */ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ___T___, ___T___, _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, _______, _______, KC_INS , _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, ___T___, ___T___, _______, @@ -178,7 +178,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * '--------------------------------------------------------------------------------------------------------------------------------------' */ - [_RS] = LAYOUT_grid( /* RAISED */ + [_RS] = LAYOUT_ortho_5x15( /* RAISED */ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ___T___, ___T___, _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, _______, _______, KC_INS , _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, ___T___, ___T___, _______, @@ -200,7 +200,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * '--------------------------------------------------------------------------------------------------------------------------------------' */ - [_FN] = LAYOUT_grid( /* FUNCTION */ + [_FN] = LAYOUT_ortho_5x15( /* FUNCTION */ KC_NLCK, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ___T___, ___T___, KC_SLCK, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_PAUS, KC_PSCR, KC_CAPS, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_ACL0, KC_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, ___T___, ___T___, KC_WH_U, diff --git a/keyboards/atomic/keymaps/michelle.c b/keyboards/atomic/keymaps/michelle.c deleted file mode 100644 index 6dd2de2791e4..000000000000 --- a/keyboards/atomic/keymaps/michelle.c +++ /dev/null @@ -1,169 +0,0 @@ -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_grid( /* Dvorak */ - 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_BSPC, KC_NO , - // ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ - // │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - // └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ - // ┌─ 2u ────────────┐ - // │ X │ - // └─────────────────┘ - 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_INS, KC_DEL , - // ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ - // │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - // └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ - // ┌─ 2u ────────────┐ ┌─ 2u ────────────┐ - // │ X │ │ X │ - // └─────────────────┘ └─────────────────┘ - KC_CAPS, 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_NO, KC_PGUP , - // ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ - // │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - // └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ - // ┌─ 2u ────────────┐ ┌─ 2u ────────────┐ - // │ X │ │ X │ - // └─────────────────┘ └─────────────────┘ - // ┌─ 2u ────────────┐ - // │ X │ - // └─────────────────┘ - KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, KC_NO, KC_UP, KC_PGDN , - // ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ - // │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - // └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ - // ┌─ 2u ────────────┐ - // │ X │ - // └─────────────────┘ - // ┌─ 2u ────────────┐ ┌─ 2u ────────────┐ - // │ X │ │ X │ - // └─────────────────┘ └─────────────────┘ - // ┌─ 2u ────────────┐ - // │ X │ - // └─────────────────┘ - KC_LCTL, MO(1), KC_NO, KC_LALT, KC_NO, KC_NO, KC_SPC, KC_NO, KC_NO, KC_NO, KC_LGUI, MO(2), KC_LEFT, KC_DOWN, KC_RGHT , - // ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ - // │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - // └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ - // ┌─ 1.25u ──┬ 1.25u ───┬─── 1.25u ┬─── 1.25u ─┬─ 2u ────────────┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬──── 1.25u ┐ - // │ X │ X │ X │ X │ X │ X │ X │ X │ X │ - // └──────────┴──────────┴──────────┴───────────┴─────────────────┴──────────┴──────────┴──────────┴───────────┘ - // ┌─ 2u ────────────┐ - // │ X │ - // └─────────────────┘ - // ┌───────────────────── 6.25u ────────────────────────────┐ - // │ X │ - // └────────────────────────────────────────────────────────┘ - // ┌─────────────────────── 6.25u ──────────────────────────┬─ 1.25u ──┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬── 1.25u ──┐ - // │ X │ X │ X │ X │ X │ X │ - // └────────────────────────────────────────────────────────┴──────────┴──────────┴──────────┴──────────┴───────────┘ - ), - [1] = LAYOUT_grid( /* Qwerty + F keys */ - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC, KC_NO , - // ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ - // │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - // └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ - // ┌─ 2u ────────────┐ - // │ X │ - // └─────────────────┘ - 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_INS, KC_DEL , - // ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ - // │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - // └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ - // ┌─ 2u ────────────┐ ┌─ 2u ────────────┐ - // │ X │ │ X │ - // └─────────────────┘ └─────────────────┘ - KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_NO, KC_PGUP , - // ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ - // │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - // └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ - // ┌─ 2u ────────────┐ ┌─ 2u ────────────┐ - // │ X │ │ X │ - // └─────────────────┘ └─────────────────┘ - // ┌─ 2u ────────────┐ - // │ X │ - // └─────────────────┘ - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_NO, KC_UP, KC_PGDN , - // ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ - // │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - // └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ - // ┌─ 2u ────────────┐ - // │ X │ - // └─────────────────┘ - // ┌─ 2u ────────────┐ ┌─ 2u ────────────┐ - // │ X │ │ X │ - // └─────────────────┘ └─────────────────┘ - // ┌─ 2u ────────────┐ - // │ X │ - // └─────────────────┘ - KC_LCTL, KC_TRNS, KC_NO, KC_LALT, KC_NO, KC_NO, KC_SPC, KC_NO, KC_NO, KC_NO, KC_LGUI, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT , - // ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ - // │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - // └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ - // ┌─ 1.25u ──┬ 1.25u ───┬─── 1.25u ┬─── 1.25u ─┬─ 2u ────────────┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬──── 1.25u ┐ - // │ X │ X │ X │ X │ X │ X │ X │ X │ X │ - // └──────────┴──────────┴──────────┴───────────┴─────────────────┴──────────┴──────────┴──────────┴───────────┘ - // ┌─ 2u ────────────┐ - // │ X │ - // └─────────────────┘ - // ┌───────────────────── 6.25u ────────────────────────────┐ - // │ X │ - // └────────────────────────────────────────────────────────┘ - // ┌─────────────────────── 6.25u ──────────────────────────┬─ 1.25u ──┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬── 1.25u ──┐ - // │ X │ X │ X │ X │ X │ X │ - // └────────────────────────────────────────────────────────┴──────────┴──────────┴──────────┴──────────┴───────────┘ - ), - [2] = LAYOUT_grid( /* Numpad + qwerty shortcut keys */ - { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_P7, KC_P8, KC_P9, KC_0, KC_LBRC, KC_RBRC, KC_BSPC, KC_NO , - // ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ - // │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - // └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ - // ┌─ 2u ────────────┐ - // │ X │ - // └─────────────────┘ - KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_P4, KC_P5, KC_P6, KC_L, KC_SLSH, KC_EQL, KC_INS, KC_DEL , - // ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ - // │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - // └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ - // ┌─ 2u ────────────┐ ┌─ 2u ────────────┐ - // │ X │ │ X │ - // └─────────────────┘ └─────────────────┘ - KC_CAPS, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_P1, KC_P2, KC_P3, KC_S, KC_MINS, KC_ENT, KC_NO, KC_PGUP , - // ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ - // │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - // └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ - // ┌─ 2u ────────────┐ ┌─ 2u ────────────┐ - // │ X │ │ X │ - // └─────────────────┘ └─────────────────┘ - // ┌─ 2u ────────────┐ - // │ X │ - // └─────────────────┘ - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_X, KC_B, KC_P0, KC_P0, KC_PENT, KC_Z, KC_RSFT, KC_NO, KC_UP, KC_PGDN , - // ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ - // │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - // └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ - // ┌─ 2u ────────────┐ - // │ X │ - // └─────────────────┘ - // ┌─ 2u ────────────┐ ┌─ 2u ────────────┐ - // │ X │ │ X │ - // └─────────────────┘ └─────────────────┘ - // ┌─ 2u ────────────┐ - // │ X │ - // └─────────────────┘ - KC_LCTL, KC_TRNS, KC_NO, KC_LALT, KC_NO, KC_NO, KC_SPC, KC_NO, KC_NO, KC_NO, KC_LGUI, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT , - // ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ - // │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - // └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ - // ┌─ 1.25u ──┬ 1.25u ───┬─── 1.25u ┬─── 1.25u ─┬─ 2u ────────────┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬──── 1.25u ┐ - // │ X │ X │ X │ X │ X │ X │ X │ X │ X │ - // └──────────┴──────────┴──────────┴───────────┴─────────────────┴──────────┴──────────┴──────────┴───────────┘ - // ┌─ 2u ────────────┐ - // │ X │ - // └─────────────────┘ - // ┌───────────────────── 6.25u ────────────────────────────┐ - // │ X │ - // └────────────────────────────────────────────────────────┘ - // ┌─────────────────────── 6.25u ──────────────────────────┬─ 1.25u ──┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬── 1.25u ──┐ - // │ X │ X │ X │ X │ X │ X │ - // └────────────────────────────────────────────────────────┴──────────┴──────────┴──────────┴──────────┴───────────┘ - ), -}; diff --git a/keyboards/atomic/keymaps/michelle/keymap.c b/keyboards/atomic/keymaps/michelle/keymap.c new file mode 100644 index 000000000000..da6942716801 --- /dev/null +++ b/keyboards/atomic/keymaps/michelle/keymap.c @@ -0,0 +1,25 @@ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ortho_5x15( /* Dvorak */ + 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_BSPC, XXXXXXX, + 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_INS, KC_DEL, + KC_CAPS, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_ENT, XXXXXXX, KC_PGUP, + KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, XXXXXXX, KC_UP, KC_PGDN, + KC_LCTL, MO(1), XXXXXXX, KC_LALT, XXXXXXX, XXXXXXX, KC_SPC, XXXXXXX, XXXXXXX, XXXXXXX, KC_LGUI, MO(2), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_ortho_5x15( /* Qwerty + F keys */ + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC, XXXXXXX, + 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_INS, KC_DEL, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, XXXXXXX, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, XXXXXXX, KC_UP, KC_PGDN, + KC_LCTL, _______, XXXXXXX, KC_LALT, XXXXXXX, XXXXXXX, KC_SPC, XXXXXXX, XXXXXXX, XXXXXXX, KC_LGUI, _______, KC_LEFT, KC_DOWN, KC_RGHT + ), + [2] = LAYOUT_ortho_5x15( /* Numpad + qwerty shortcut keys */ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_P7, KC_P8, KC_P9, KC_0, KC_LBRC, KC_RBRC, KC_BSPC, XXXXXXX, + KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_P4, KC_P5, KC_P6, KC_L, KC_SLSH, KC_EQL, KC_INS, KC_DEL, + KC_CAPS, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_P1, KC_P2, KC_P3, KC_S, KC_MINS, KC_ENT, XXXXXXX, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_X, KC_B, KC_P0, KC_P0, KC_PENT, KC_Z, KC_RSFT, XXXXXXX, KC_UP, KC_PGDN, + KC_LCTL, _______, XXXXXXX, KC_LALT, XXXXXXX, XXXXXXX, KC_SPC, XXXXXXX, XXXXXXX, XXXXXXX, KC_LGUI, _______, KC_LEFT, KC_DOWN, KC_RGHT + ), +}; diff --git a/keyboards/atomic/keymaps/pvc/keymap.c b/keyboards/atomic/keymaps/pvc/keymap.c index 51e697f96853..9ed79899d324 100644 --- a/keyboards/atomic/keymaps/pvc/keymap.c +++ b/keyboards/atomic/keymaps/pvc/keymap.c @@ -122,7 +122,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | LCTRL | LWIN | FN | LALT | UPPER | SPACE . SPACE | LOWER | OSHIFT | RALT | APP | RCTRL | LEFT | DOWN | RIGHT | '--------------------------------------------------------------------------------------------------------------------------------------' */ - [LAYER_QWERTY] = LAYOUT_grid( + [LAYER_QWERTY] = LAYOUT_ortho_5x15( KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_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_DEL , KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_ENT , KC_PGUP, @@ -142,7 +142,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ______ | ______ | ______ | ______ | UPPER | KP 0 . KP 0 | ______ | RALT | KP . | KP ENT | ______ | ______ | ______ | ______ | '--------------------------------------------------------------------------------------------------------------------------------------' */ - [LAYER_UPPER] = LAYOUT_grid( + [LAYER_UPPER] = LAYOUT_ortho_5x15( KC_PSCR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, XXXXXXX, XXXXXXX, _______, _______, KC_PAUS, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_NLCK, KC_PSLS, KC_KP_7, KC_KP_8, KC_KP_9, KC_PMNS, _______, _______, _______, KC_INS , _______, KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_CAPS, KC_PAST, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, _______, _______, _______, KC_HOME, @@ -162,7 +162,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ______ | ______ | ______ | ______ | ______ | ______ . ______ | LOWER | ______ | ______ | ______ | ______ | ______ | ______ | ______ | '--------------------------------------------------------------------------------------------------------------------------------------' */ - [LAYER_LOWER] = LAYOUT_grid( + [LAYER_LOWER] = LAYOUT_ortho_5x15( KC_PSCR, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , _______, _______, _______, KC_DLR , KC_LCBR, KC_LBRC, KC_LPRN, KC_PERC, KC_HASH, KC_RPRN, KC_RBRC, KC_RCBR, KC_AT , _______, _______, _______, KC_INS , _______, KC_CIRC, KC_ASTR, KC_PLUS, KC_MINS, KC_SLSH, KC_BSLS, KC_UNDS, KC_QUOT, KC_DQT , KC_GRV , _______, _______, _______, KC_HOME, @@ -182,7 +182,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ______ | ______ | FN | ______ | ______ | PLAY . PLAY | ______ | ______ | ______ | ______ | ______ | PREV | VOL DN | NEXT | '--------------------------------------------------------------------------------------------------------------------------------------' */ - [LAYER_FUNCTION] = LAYOUT_grid( + [LAYER_FUNCTION] = LAYOUT_ortho_5x15( XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F13 , KC_F14 , KC_F15 , KC_F16 , KC_NLCK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F17 , KC_F18 , KC_F19 , KC_F20 , KC_SLCK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, @@ -202,7 +202,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ______ | ______ | ______ | ______ | ______ | MS BT1 . MS BT1 | ______ | ______ | ______ | ______ | ______ | MS L | MS D | MS R | '--------------------------------------------------------------------------------------------------------------------------------------' */ - [LAYER_MOUSE] = LAYOUT_grid( + [LAYER_MOUSE] = LAYOUT_ortho_5x15( KC_ESC , KC_ACL0, KC_ACL1, KC_ACL2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_MS_UL, KC_MS_U, M_MS_UR, XXXXXXX, XXXXXXX, XXXXXXX, KC_WH_L, KC_WH_R, XXXXXXX, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, XXXXXXX, XXXXXXX, KC_MS_L, XXXXXXX, KC_MS_R, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_WH_U, @@ -222,7 +222,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | XXXXXX | XXXXXX | XXXXXX | XXXXXX | UPPER | XXXXXX . XXXXXX | LOWER | XXXXXX | XXXXXX | XXXXXX | XXXXXX | TEMPO- | VOICE- | TEMPO+ | '--------------------------------------------------------------------------------------------------------------------------------------' */ - [LAYER_ADJUST] = LAYOUT_grid( + [LAYER_ADJUST] = LAYOUT_ortho_5x15( XXXXXXX, M_HELP1, M_HELP2, M_HELP3, M_HELP4, M_HELP5, M_HELP6, M_HELP7, M_HELP8, M_HELP9, XXXXXXX, MU_TOG , AU_TOG , XXXXXXX, XXXXXXX, XXXXXXX, M_BRTOG, M_BSPDU, M_BSPDD, M_BDFLT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, diff --git a/keyboards/atomic/keymaps/pvc/rules.mk b/keyboards/atomic/keymaps/pvc/rules.mk index fa693923e54a..9385227ef613 100644 --- a/keyboards/atomic/keymaps/pvc/rules.mk +++ b/keyboards/atomic/keymaps/pvc/rules.mk @@ -1,4 +1,4 @@ -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = yes # Console for debug(+400) diff --git a/keyboards/atomic/keymaps/twolayer.c b/keyboards/atomic/keymaps/twolayer.c deleted file mode 100644 index 9ecbbc6df3b0..000000000000 --- a/keyboards/atomic/keymaps/twolayer.c +++ /dev/null @@ -1,63 +0,0 @@ -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - /* QWERTY - MIT ENHANCED / GRID COMPATIBLE - * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. - * | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | XXXXXX . BACKSP | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| - * | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | DEL | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| - * | LCTRL1 | A | S | D | F | G | H | J | K | L | ; | ' | XXXXXX . ENTER | PG UP | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| - * | LSHIFT | Z | X | C | V | B | N | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN | - * |--------+--------+--------+--------+--------+- 6.25u ---------+--------+--------+--------+--------+-----------------+--------+--------| - * | BRITE | LALT | FN | XXXXXX . SPACE | RCTRL | RALT | FN | LEFT | DOWN | RIGHT | - * '--------------------------------------------------------------------------------------------------------------------------------------' - */ - [0] = LAYOUT_grid( /* QWERTY */ - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_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_DEL, - 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_ENT, KC_PGUP, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN, - M(0), KC_ALT, MO(1), KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RCTL, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT, - ), - - /* FUNCTION - * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. - * | GRV | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX . | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| - * | SCR LK | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | F21 | F22 | F23 | F24 | PAUSE | PR SCR | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| - * | CAP LK | MS BT5 | MS BT4 | MS BT3 | MS BT2 | SLOW M | FAST M | NEXT | VOL+ | VOL- | PLAY | | XXXXXX . | WHEEL+ | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| - * | NUM LK | | | | | | | | INSERT | END1 | HOME | XXXXXX . | MOUS U | WHEEL- | - * |--------+--------+--------+--------+--------+- 6.25 ------------+--------+--------+------+--------+-----------------+--------+--------| - * | | | FN | XXXXXX . MS BT1 | | | FN | MOUS L | MOUS D | MOUS R | - * '--------------------------------------------------------------------------------------------------------------------------------------' - */ - [1] = LAYOUT_grid( /* FUNCTION LAYER*/ - 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, ___T___, ___T___, - KC_SLCK, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_PAUS, KC_PSCR, - KC_CAPS, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_ACL0, KC_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, ___T___, ___T___, KC_WH_U, - KC_NLCK, _______, _______, _______, _______, _______, _______, _______, KC_INSERT, KC_END, KC_HOME, ___T___, ___T___, KC_MS_U, KC_WH_D, - _______, _______, MO(1), _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, MO(1), KC_MS_L, KC_MS_D, KC_MS_R, - ), -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { - // MACRODOWN only works in this function - switch(id) { - case 0: - if (record->event.pressed) { - register_code(KC_RSFT); - #ifdef BACKLIGHT_ENABLE - backlight_step(); - #endif - } else { - unregister_code(KC_RSFT); - } - break; - } - return MACRO_NONE; -}; diff --git a/keyboards/atomic/keymaps/twolayer/keymap.c b/keyboards/atomic/keymaps/twolayer/keymap.c new file mode 100644 index 000000000000..a38ddf358bfe --- /dev/null +++ b/keyboards/atomic/keymaps/twolayer/keymap.c @@ -0,0 +1,46 @@ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* QWERTY - MIT ENHANCED / GRID COMPATIBLE + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | XXXXXX . BACKSP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | DEL | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | LCTRL1 | A | S | D | F | G | H | J | K | L | ; | ' | XXXXXX . ENTER | PG UP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | LSHIFT | Z | X | C | V | B | N | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN | + * |--------+--------+--------+--------+--------+- 6.25u ---------+--------+--------+--------+--------+-----------------+--------+--------| + * | BRITE | LALT | FN | XXXXXX . SPACE | RCTRL | RALT | FN | LEFT | DOWN | RIGHT | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + [0] = LAYOUT_ortho_5x15( /* QWERTY */ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_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_DEL, + 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_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN, + BL_STEP, KC_LALT, MO(1), KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RCTL, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* FUNCTION + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | GRV | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX . | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | SCR LK | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | F21 | F22 | F23 | F24 | PAUSE | PR SCR | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | CAP LK | MS BT5 | MS BT4 | MS BT3 | MS BT2 | SLOW M | FAST M | NEXT | VOL+ | VOL- | PLAY | | XXXXXX . | WHEEL+ | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | NUM LK | | | | | | | | INSERT | END1 | HOME | XXXXXX . | MOUS U | WHEEL- | + * |--------+--------+--------+--------+--------+- 6.25 ------------+--------+--------+------+--------+-----------------+--------+--------| + * | | | FN | XXXXXX . MS BT1 | | | FN | MOUS L | MOUS D | MOUS R | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + [1] = LAYOUT_ortho_5x15( /* FUNCTION LAYER*/ + 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_SLCK, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_PAUS, KC_PSCR, + KC_CAPS, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_ACL0, KC_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, _______, _______, KC_WH_U, + KC_NLCK, _______, _______, _______, _______, _______, _______, _______, KC_INS, KC_END, KC_HOME, _______, _______, KC_MS_U, KC_WH_D, + _______, _______, MO(1), _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, MO(1), KC_MS_L, KC_MS_D, KC_MS_R + ), +}; diff --git a/keyboards/atomic/rules.mk b/keyboards/atomic/rules.mk index 5a057f973c86..d98f5b923d45 100644 --- a/keyboards/atomic/rules.mk +++ b/keyboards/atomic/rules.mk @@ -2,33 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # 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 +# change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output LAYOUTS = ortho_5x15 diff --git a/keyboards/atreus/astar/rules.mk b/keyboards/atreus/astar/rules.mk index e6fef517279c..cf663a7ed6aa 100644 --- a/keyboards/atreus/astar/rules.mk +++ b/keyboards/atreus/astar/rules.mk @@ -2,11 +2,4 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina diff --git a/keyboards/atreus/astar_mirrored/rules.mk b/keyboards/atreus/astar_mirrored/rules.mk index e6fef517279c..cf663a7ed6aa 100644 --- a/keyboards/atreus/astar_mirrored/rules.mk +++ b/keyboards/atreus/astar_mirrored/rules.mk @@ -2,11 +2,4 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina diff --git a/keyboards/atreus/feather/rules.mk b/keyboards/atreus/feather/rules.mk index e40b103acb1e..ad0b4a5046be 100644 --- a/keyboards/atreus/feather/rules.mk +++ b/keyboards/atreus/feather/rules.mk @@ -5,17 +5,11 @@ MCU = atmega32u4 F_CPU = 8000000 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp 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/atreus/info.json b/keyboards/atreus/info.json index 73cff2509a4e..a20cfda05198 100644 --- a/keyboards/atreus/info.json +++ b/keyboards/atreus/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Atreus", "url": "", "maintainer": "qmk", - "width": 13, - "height": 4.7, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0.6}, {"x":1, "y":0.35}, {"x":2, "y":0}, {"x":3, "y":0.35}, {"x":4, "y":0.7}, {"x":8, "y":0.7}, {"x":9, "y":0.35}, {"x":10, "y":0}, {"x":11, "y":0.35}, {"x":12, "y":0.6}, {"x":0, "y":1.6}, {"x":1, "y":1.35}, {"x":2, "y":1}, {"x":3, "y":1.35}, {"x":4, "y":1.7}, {"x":8, "y":1.7}, {"x":9, "y":1.35}, {"x":10, "y":1}, {"x":11, "y":1.35}, {"x":12, "y":1.6}, {"x":0, "y":2.6}, {"x":1, "y":2.35}, {"x":2, "y":2}, {"x":3, "y":2.35}, {"x":4, "y":2.7}, {"x":8, "y":2.7}, {"x":9, "y":2.35}, {"x":10, "y":2}, {"x":11, "y":2.35}, {"x":12, "y":2.6}, {"x":0, "y":3.6}, {"x":1, "y":3.35}, {"x":2, "y":3}, {"x":3, "y":3.35}, {"x":4, "y":3.7}, {"x":5, "y":2.95, "h":1.5}, {"x":7, "y":2.95, "h":1.5}, {"x":8, "y":3.7}, {"x":9, "y":3.35}, {"x":10, "y":3}, {"x":11, "y":3.35}, {"x":12, "y":3.6}] diff --git a/keyboards/atreus/keymaps/erlandsona/keymap.c b/keyboards/atreus/keymaps/erlandsona/keymap.c index 151288edc2ba..c261e892d4f6 100644 --- a/keyboards/atreus/keymaps/erlandsona/keymap.c +++ b/keyboards/atreus/keymaps/erlandsona/keymap.c @@ -1,6 +1,3 @@ -// this is the style you want to emulate. -// This is the canonical layout file for the Quantum project. If you want to add another keyboard, - #include QMK_KEYBOARD_H // Each layer gets a name for readability, which is then used in the keymap matrix below. @@ -23,21 +20,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_LPRN, KC_RPRN, KC_MINS, KC_EQL , KC_LBRC, KC_TAB , KC_5 , KC_6 , KC_7 , KC_8 , KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, KC_RBRC, _______, KC_9 , KC_0 , KC_DOT , KC_COMM, KC_HOME, KC_PGDN, KC_PGUP, KC_END , _______, - _______, _______, _______, _______, KC_DEL , F(MOUS), _______, _______, _______, _______, _______, _______ + _______, _______, _______, _______, KC_DEL , TG(MOUS), _______, _______, _______, _______, _______, _______ ), [MOUS] = LAYOUT( /* Mouse and Media Keys */ KC_SLCK, KC_PAUSE, KC_F11 , KC_F10 , KC_F9 , KC_F8 , KC_F7 , KC_F6 , KC_F5 , KC_F4, KC_VOLD, KC_ACL0 , KC_ACL1, KC_ACL2, KC_VOLU, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_F3, KC_MUTE, KC_MPRV , KC_MPLY, KC_MNXT, KC_MUTE, KC_WH_R, KC_WH_U, KC_WH_D, KC_WH_L, KC_F2, - _______, _______ , _______, _______, _______, _______, _______, KC_BTN1, F(BASE), RESET , KC_F12 , KC_F1 + _______, _______ , _______, _______, _______, _______, _______, KC_BTN1, TO(BASE), RESET , KC_F12 , KC_F1 ), }; - - -// I prefer this layer switching strategy to the TG and MO functions. -// so that I can get out of mouse mode just by tapping/holding my base layer FN key. -const uint16_t PROGMEM fn_actions[] = { - [BASE] = ACTION_LAYER_OFF(2, 1), // switch back to layer 0 - [MOUS] = ACTION_LAYER_ON(2, 1) // switch to layer 2 -}; diff --git a/keyboards/atreus/keymaps/khitsule/keymap.c b/keyboards/atreus/keymaps/khitsule/keymap.c index e6a5366916ee..1190efa3cb3d 100644 --- a/keyboards/atreus/keymaps/khitsule/keymap.c +++ b/keyboards/atreus/keymaps/khitsule/keymap.c @@ -16,12 +16,6 @@ enum layers { #define KM_DRIGHT LGUI(LCTL(KC_RIGHT)) #define TSKMGR LCTL(LSFT(KC_ESC)) -#define tap_mod_macro(record, mod, macro) ( ((record)->event.pressed) ? \ - ( ((record)->tap.count <= 0 || (record)->tap.interrupted) ? MACRO(D(mod), END) : MACRO_NONE ) : \ - ( ((record)->tap.count > 0 && !((record)->tap.interrupted)) ? (macro) : MACRO(U(mod), END) ) ) - - - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [ALPH] = LAYOUT( KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, @@ -54,21 +48,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ) }; - -const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_MACRO_TAP(1), - [2] = ACTION_MACRO_TAP(2) -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { - switch(id) { - case 1: - return tap_mod_macro(record, LGUI, MACRO( D(LSFT), T(9), U(LSFT), END)); - break; - case 2: - return tap_mod_macro(record, LALT, MACRO( D(LSFT), T(0), U(LSFT), END)); - break; - - } - return MACRO_NONE; -}; diff --git a/keyboards/atreus/keymaps/manna-harbour_miryoku/config.h b/keyboards/atreus/keymaps/manna-harbour_miryoku/config.h new file mode 100644 index 000000000000..6bb1a9a7f35a --- /dev/null +++ b/keyboards/atreus/keymaps/manna-harbour_miryoku/config.h @@ -0,0 +1,22 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . + +#pragma once + +#define XXX KC_NO + +#define LAYOUT_miryoku(\ +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,\ +N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +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,\ +XXX, XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX, XXX\ +) diff --git a/keyboards/atreus/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/atreus/keymaps/manna-harbour_miryoku/keymap.c new file mode 100644 index 000000000000..7c5717a0fee0 --- /dev/null +++ b/keyboards/atreus/keymaps/manna-harbour_miryoku/keymap.c @@ -0,0 +1,5 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/keyboards/atreus/keymaps/replicaJunction/config.h b/keyboards/atreus/keymaps/replicaJunction/config.h index 8e786aa0da8b..a02f9a95dbad 100644 --- a/keyboards/atreus/keymaps/replicaJunction/config.h +++ b/keyboards/atreus/keymaps/replicaJunction/config.h @@ -1,11 +1,51 @@ +/* Copyright 2021 Joshua T. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #pragma once -// Layer definitions +// Do not allow one macro to contain the other macro +#define DYNAMIC_MACRO_NO_NESTING + +// "THE most important tap hold configuration setting" +// https://precondition.github.io/home-row-mods#ignore-mod-tap-interrupt +// https://docs.qmk.fm/#/tap_hold?id=ignore-mod-tap-interrupt +#define IGNORE_MOD_TAP_INTERRUPT + +// This one is a style choice. Play with it both on and off to see which +// one suits you better. +// https://precondition.github.io/home-row-mods#permissive-hold +// https://docs.qmk.fm/#/tap_hold?id=permissive-hold +#define PERMISSIVE_HOLD + +// If you press a dual-role key for longer than TAPPING_TERM, then +// release it without pressing another key, without this setting nothing +// would happen. With this setting, it sends the key's tap function. +// https://precondition.github.io/home-row-mods#retro-tapping +#define RETRO_TAPPING + +// Disable some unused features to save space +#undef LOCKING_SUPPORT_ENABLE +#undef LOCKING_RESYNC_ENABLE + +///// +// Flags for stuff in my userspace + +#define USER_INCLUDE_GAMING_LAYER +#define USER_INCLUDE_MACRO_LAYER -#define L_COLEMAK 0 -#define L_NUM 1 -#define L_EXTEND 2 -#define L_FUNC 3 -#define L_LL_R 4 -#define L_LL_E 5 -#define L_LL_I 6 +// "Super Alt-Tab" +// https://docs.qmk.fm/#/feature_macros?id=super-alt%E2%86%AFtab +#define USER_SUPER_ALT_TAB_TIMEOUT 500 diff --git a/keyboards/atreus/keymaps/replicaJunction/keymap.c b/keyboards/atreus/keymaps/replicaJunction/keymap.c index c3cc371151f2..32cc95d2fd23 100644 --- a/keyboards/atreus/keymaps/replicaJunction/keymap.c +++ b/keyboards/atreus/keymaps/replicaJunction/keymap.c @@ -1,78 +1,95 @@ -/* - * Keyboard: Atreus - * Keymap: replicaJunction - * Version: 2.1 +/* Copyright 2021 Joshua T. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . */ #include QMK_KEYBOARD_H #include "replicaJunction.h" +#define BSP_SYM LT(L_SYMBOLS, KC_BSPC) +#define SPC_NAV LT(L_NAVIGATION, KC_SPC) +#define EQL_FUN LT(L_FN, KC_EQL) + +#define ESC_SFT LSFT_T(KC_ESC) +#define TAB_SFT RSFT_T(KC_TAB) + +#define DF_TYPE DF(L_BASE) +#define DF_GAME DF(L_GAMING) + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[L_COLEMAK] = LAYOUT( - KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, - KC_A, KC_R_LT, KC_S_LT, KC_T, KC_G, KC_M, KC_N, KC_E_LT, KC_I_LT, KC_O, - KX_Z_MT, KX_X_MT, KX_C_MT, KX_D_MT, KC_V, KC_K, KX_H_MT, KX_COMT, KX_DOMT, KX_SLMT, - TD_LAYR, KC_LGUI, KC_TAB, KC_LSFT, KX_BKNM, KX_DCTL, KX_NALT, KX_SPAC, KC_RSFT, KC_MINS, KC_QUOT, KC_EQL -) -, +[L_BASE] = LAYOUT( + KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, + KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, + KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM,KC_DOT, KC_SLSH, + KC_ESC, KC_LGUI,KC_TAB, ESC_SFT,BSP_SYM,CTL_DEL,ALT_ENT,SPC_NAV,TAB_SFT,KC_MINS,KC_QUOT,EQL_FUN +), -[L_NUM] = LAYOUT( - KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_SLSH, KC_COLN, KC_7, KC_8, KC_9, KC_SLSH, - KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_PIPE, KC_HASH, KC_4, KC_5, KC_6, KC_ASTR, - KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_BSLS, KC_BSPC, KC_1, KC_2, KC_3, KC_MINS, - _______, KC_AMPR, KC_TILD, KC_GRV, ooooooo, _______, KC_ENT, MO_FUNC, KC_0, KC_DOT, KC_EQL, KC_PLUS -) -, +[L_GAMING] = LAYOUT( + _______,_______,_______,_______,_______, _______,_______,_______,_______,_______, + _______,_______,_______,_______,_______, _______,_______,_______,_______,_______, + _______,_______,KC_C, KC_D, _______, _______,_______,_______,_______,_______, + _______,KC_TAB, KC_LALT,KC_LSFT,KC_SPC, KC_LCTL,KC_LALT,KC_BSPC,KC_BTN1,KC_BTN2,KC_BTN3,_______ +), -[L_EXTEND] = LAYOUT( - _______, _______, _______, KC_APP, KX_CGR, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_DEL, - KC_LGUI, KC_LSFT, KC_LALT, KC_LCTL, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_BSPC, - _______, _______, _______, KX_SRCH, KX_PAST, _______, KX_STAB, KC_TAB, _______, KC_INS, - _______, _______, _______, _______, MO_FUNC, KC_DEL, KC_ENT, _______, _______, _______, _______, KC_PSCR -) -, +[L_NUMBERS] = LAYOUT( + _______,_______,_______,_______,_______, KC_HASH,KC_7, KC_8, KC_9, KC_SLSH, + _______,_______,_______,_______,_______, KC_PLUS,KC_4, KC_5, KC_6, KC_ASTR, + _______,_______,_______,_______,_______, KC_MINS,KC_1, KC_2, KC_3, KC_BSLS, + _______,_______,_______,_______,_______,_______,_______,_______,KC_0, KC_0, KC_DOT, KC_ENT +), -[L_FUNC] = LAYOUT( - _______, _______, M_LCLIK, M_RCLIK, M_MCLIK, KC_VOLU, KC_F9, KC_F10, KC_F11, KC_F12, - KC_LGUI, KC_LSFT, KC_LALT, KC_LCTL, M_WHLUP, KC_MUTE, KC_F5, KC_F6, KC_F7, KC_F8, - M_LEFT, M_DOWN, M_UP, M_RIGHT, M_WHLDN, KC_VOLD, KC_F1, KC_F2, KC_F3, KC_F4, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ -) -, +[L_SYMBOLS] = LAYOUT( + KC_AT, KC_LT, KC_DLR, KC_GT, XXXXXXX, XXXXXXX,KC_LBRC,KC_UNDS,KC_RBRC,XXXXXXX, + KC_BSLS,KC_LPRN,KC_DQUO,KC_RPRN,KC_HASH, KC_PERC,KC_LCBR,KC_EQL, KC_RCBR,KC_PIPE, + KC_EXLM,KC_COLN,KC_ASTR,KC_PLUS,XXXXXXX, XXXXXXX,KC_AMPR,KC_CIRC,KC_TILD,KC_GRV, + _______,_______,_______,_______,ooooooo,_______,_______,ooooooo,CAPWORD,_______,_______,_______ +), -[L_LL_R] = LAYOUT( - _______, _______, _______, _______, _______, KC_COLN, KC_P7, KC_P8, KC_P9, KC_PSLS, - _______, ooooooo, KC_AMPR, KC_PIPE, _______, KC_HASH, KC_P4, KC_P5, KC_P6, KC_PAST, - _______, _______, _______, _______, _______, KC_BSPC, KC_P1, KC_P2, KC_P3, KC_PMNS, - _______, _______, _______, _______, _______, _______, _______, _______, KC_0, KC_DOT, KC_EQL, KC_PLUS -) -, +[L_NAVIGATION] = LAYOUT( + OS_UNDO,OS_CUT, OS_PAST,OS_COPY,OS_SALL, KC_PGUP,KC_HOME,KC_UP, KC_END, KC_DEL, + KC_LGUI,KC_LALT,KC_LSFT,KC_LCTL,_______, KC_PGDN,KC_LEFT,KC_DOWN,KC_RGHT,KC_BSPC, + WIN_V, _______,_______,OS_FIND,SEARCH, _______,SFT_TAB,KC_TAB, KC_APP, KC_PSCR, + _______,_______,_______,NUMWORD,ooooooo,_______,_______,ooooooo,_______,_______,_______,_______ +), -[L_LL_E] = LAYOUT( - RJ_MAKE, RJ_EQ, RJ_LEQ, RJ_GEQ, RJ_GEQR, _______, _______, _______, _______, _______, - _______, _______, RJ_SELS, RJ_DUND, _______, _______, _______, ooooooo, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ -) -, +[L_FN] = LAYOUT( + RESET, _______,_______,_______,_______, KC_VOLU,KC_F9, KC_F10, KC_F11, KC_F12, + MS_JIGL,_______,_______,_______,_______, KC_MUTE,KC_F5, KC_F6, KC_F7, KC_F8, + _______,K_SECR1,K_SECR2,K_SECR3,K_SECR4, KC_VOLD,KC_F1, KC_F2, KC_F3, KC_F4, + DF_TYPE,DF_GAME,_______,_______,_______,KC_LCTL,KC_LALT,_______,_______,_______,_______,ooooooo +), -[L_LL_I] = LAYOUT( - KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_SLSH, _______, KC_UNDS, KC_GRV, _______, _______, - KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_PIPE, _______, KC_MINS, KC_QUOT, ooooooo, _______, - KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_BSLS, _______, KC_TILD, KC_DQT, _______, _______, - _______, KC_AMPR, KC_LABK, KC_RABK, _______, _______, _______, _______, _______, _______, _______, _______ +[L_MACROS] = LAYOUT( + QK_MAKE,_______,DM_REC2,DM_REC1,DM_RSTP, _______,SHEBANG,_______,_______,_______, + QK_FLSH,_______,DM_PLY2,DM_PLY1,_______, PRG_NE, PRG_EQ, PRG_GEQ,PRG_LEQ,PRG_ARR, + QK_VERS,_______,_______,_______,_______, _______,PS_ITEM,FS_PIPE,_______,FS_ARR, + _______,_______,_______,_______,ooooooo,_______,_______,ooooooo,_______,_______,_______,_______ ) -}; -// Uncomment any of these to add keyboard-specific code. Otherwise, they -// will use user defaults defined in the replicaJunction.h header file. +// Template +// [L_FUNC] = LAYOUT( +// _______,_______,_______,_______,_______, _______,_______,_______,_______,_______, +// _______,_______,_______,_______,_______, _______,_______,_______,_______,_______, +// _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, +// _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ +// ), -// bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { -// return true; -// } +}; -// void matrix_init_keymap(void) {}; +layer_state_t layer_state_set_user(layer_state_t state) { + return update_tri_layer_state(state, L_SYMBOLS, L_NAVIGATION, L_MACROS); +} -// void matrix_scan_keymap(void) {}; diff --git a/keyboards/atreus/keymaps/replicaJunction/kle/base-layer.txt b/keyboards/atreus/keymaps/replicaJunction/kle/base-layer.txt deleted file mode 100644 index aec41316f23c..000000000000 --- a/keyboards/atreus/keymaps/replicaJunction/kle/base-layer.txt +++ /dev/null @@ -1,34 +0,0 @@ -[{r:10,rx:1,y:-0.1,x:2},"F"], -[{y:-0.65,x:1},"W",{x:1},"P"], -[{y:-0.75},"Q"], -[{y:-0.9,x:4},"B"], -[{y:-0.7,x:2},"S"], -[{y:-0.65,x:1,c:"#45b866"},"R",{x:1,c:"#cccccc"},"T"], -[{y:-0.75},"A"], -[{y:-0.9,x:4},"G"], -[{y:-0.7,x:2},"C\n\n\n"], -[{y:-0.65,x:1},"X\n\n\nCtrl",{x:1},"D\n\n\nCtrlAlt"], -[{y:-0.75},"Z"], -[{y:-0.9,x:4},"V\n\n\nAlt"], -[{y:-0.75,x:5,h:1.5},"Del\nCtrl"], -[{y:-0.95,x:2},"Tab"], -[{y:-0.65,x:1,a:7,fa:[7]},"",{x:1,a:4,f:3},"Shift"], -[{y:-0.75,f:3},"Layer tap"], -[{y:-0.9,x:4,f:3},""], -[{r:-10,rx:7,ry:0.965,y:-0.2,x:2,f:3},"U"], -[{y:-0.65,x:1,f:3},"L",{x:1,f:3},"Y"], -[{y:-0.75,x:4,f:3},":\n;"], -[{y:-0.9,f:3},"J"], -[{y:-0.7,x:2,c:"#ffb07b",f:3},"E"], -[{y:-0.65,x:1,c:"#cccccc",f:3},"N",{x:1,c:"#5dcde3",f:3},"I"], -[{y:-0.75,x:4,c:"#cccccc",f:3},"O"], -[{y:-0.9,f:3},"M"], -[{y:-0.7,x:2,f:3},"<\n,\n\nCtrlAlt"], -[{y:-0.65,x:1,f:3},"H\n\n\nAlt",{x:1,f:3},">\n.\n\n"], -[{y:-0.75,x:4,f:3},"?\n/\n\nCtrl"], -[{y:-0.9,f:3},"K"], -[{y:-0.75,x:-1,f:3,h:1.5},"Enter\nAlt"], -[{y:-0.95,x:2,f:3},"_\n-"], -[{y:-0.65,x:1,f:3},"Shift",{x:1,f:3},"\"\n'"], -[{y:-0.75,x:4,f:3},"+\n="], -[{y:-0.9,c:"#ffe08d",f:3},"Space"] diff --git a/keyboards/atreus/keymaps/replicaJunction/kle/e-layer.txt b/keyboards/atreus/keymaps/replicaJunction/kle/e-layer.txt deleted file mode 100644 index 2b4105b2b42f..000000000000 --- a/keyboards/atreus/keymaps/replicaJunction/kle/e-layer.txt +++ /dev/null @@ -1,34 +0,0 @@ -[{r:10,rx:1,y:-0.1,x:2},"<="], -[{y:-0.65,x:1},"==",{x:1},">="], -[{y:-0.75},"make"], -[{y:-0.9,x:4},"=>"], -[{y:-0.7,x:2},"select *"], -[{y:-0.65,x:1,a:7},"",{x:1,a:4},"$_"], -[{y:-0.75,a:7},""], -[{y:-0.9,x:4},""], -[{y:-0.7,x:2},""], -[{y:-0.65,x:1},"",{x:1},""], -[{y:-0.75},""], -[{y:-0.9,x:4},""], -[{y:-0.75,x:5,h:1.5},""], -[{y:-0.95,x:2},""], -[{y:-0.65,x:1},"",{x:1},""], -[{y:-0.75},""], -[{y:-0.9,x:4},""], -[{r:-10,rx:7,ry:0.965,y:-0.2,x:2},""], -[{y:-0.65,x:1},"",{x:1},""], -[{y:-0.75,x:4},""], -[{y:-0.9},""], -[{y:-0.7,x:2,c:"#ffb07b"},""], -[{y:-0.65,x:1,c:"#cccccc"},"",{x:1},""], -[{y:-0.75,x:4},""], -[{y:-0.9},""], -[{y:-0.7,x:2},""], -[{y:-0.65,x:1},"",{x:1},""], -[{y:-0.75,x:4},""], -[{y:-0.9},""], -[{y:-0.75,x:-1,h:1.5},""], -[{y:-0.95,x:2},""], -[{y:-0.65,x:1},"",{x:1},""], -[{y:-0.75,x:4},""], -[{y:-0.9},""] diff --git a/keyboards/atreus/keymaps/replicaJunction/kle/fn-layer.txt b/keyboards/atreus/keymaps/replicaJunction/kle/fn-layer.txt deleted file mode 100644 index d45fb7e97dc1..000000000000 --- a/keyboards/atreus/keymaps/replicaJunction/kle/fn-layer.txt +++ /dev/null @@ -1,35 +0,0 @@ -[{r:10,rx:1,y:-0.1,x:2},"RClick"], -[{y:-0.65,x:1,a:7},"",{x:1,a:4},"LClick"], -[{y:-0.75,a:7},""], -[{y:-0.9,x:4,a:4},"MClick"], -[{y:-0.7,x:2},"Alt"], -[{y:-0.65,x:1},"Shift",{x:1},"Ctrl"], -[{y:-0.75,a:7,fa:[7]},""], -[{y:-0.9,x:4,a:4,fa:[5,0,0,0,0,0,0,0,0,0,7]},"\n\n\n\n\n\n\n\n\n\n"], -[{y:-0.7,x:2,fa:[0,0,0,0,0,0,0,0,0,0,7]},"\n\n\n\n\n\n\n\n\n\n"], -[{y:-0.65,x:1},"\n\n\n\n\n\n\n\n\n\n",{x:1},"\n\n\n\n\n\n\n\n\n\n"], -[{y:-0.75},"\n\n\n\n\n\n\n\n\n\n"], -[{y:-0.9,x:4,fa:[5,0,0,0,0,0,0,0,0,0,7]},"\n\n\n\n\n\n\n\n\n\n"], -[{y:-0.75,x:5,a:7,h:1.5},""], -[{y:-0.95,x:2},""], -[{y:-0.65,x:1},"",{x:1},""], -[{y:-0.75},""], -[{y:-0.9,x:4,c:"#ffe08d"},""], -[{r:-10,rx:7,ry:0.965,y:-0.2,x:2,c:"#cccccc",a:4,f:3},"F10"], -[{y:-0.65,x:1,f:3},"F9",{x:1,f:3},"F11"], -[{y:-0.75,x:4,f:3},"F12"], -[{y:-0.9,a:7},""], -[{y:-0.7,x:2,a:4,f:3},"F6"], -[{y:-0.65,x:1,f:3},"F5",{x:1,f:3},"F7"], -[{y:-0.75,x:4,f:3},"F8"], -[{y:-0.9,a:7},""], -[{y:-0.7,x:2,a:4,f:3},"F2"], -[{y:-0.65,x:1,f:3},"F1",{x:1,f:3},"F3"], -[{y:-0.75,x:4,f:3},"F4"], -[{y:-0.9,a:7},""], -[{y:-0.75,x:-1,h:1.5},""], -[{y:-0.95,x:2},""], -[{y:-0.65,x:1},"",{x:1},""], -[{y:-0.75,x:4},""], -[{y:-0.9,c:"#ffe08d"},""] - diff --git a/keyboards/atreus/keymaps/replicaJunction/kle/i-layer.txt b/keyboards/atreus/keymaps/replicaJunction/kle/i-layer.txt deleted file mode 100644 index 45bef783a30b..000000000000 --- a/keyboards/atreus/keymaps/replicaJunction/kle/i-layer.txt +++ /dev/null @@ -1,34 +0,0 @@ -[{r:10,rx:1,y:-0.1,x:2},"{"], -[{y:-0.65,x:1},"@",{x:1},"}"], -[{y:-0.75},"!"], -[{y:-0.9,x:4},"/"], -[{y:-0.7,x:2},"("], -[{y:-0.65,x:1},"$",{x:1},")"], -[{y:-0.75},"#"], -[{y:-0.9,x:4},"|"], -[{y:-0.7,x:2},"["], -[{y:-0.65,x:1},"^",{x:1},"]"], -[{y:-0.75},"%"], -[{y:-0.9,x:4},"\\"], -[{y:-0.75,x:5,a:7,h:1.5},""], -[{y:-0.95,x:2,a:4},"<"], -[{y:-0.65,x:1},"&",{x:1},">"], -[{y:-0.75,a:7},""], -[{y:-0.9,x:4},""], -[{r:-10,rx:7,ry:0.965,y:-0.2,x:2,a:4},"`"], -[{y:-0.65,x:1},"_",{x:1,a:7},""], -[{y:-0.75,x:4},""], -[{y:-0.9},""], -[{y:-0.7,x:2,a:4},"'"], -[{y:-0.65,x:1},"-",{x:1,c:"#5dcde3",a:7},""], -[{y:-0.75,x:4,c:"#cccccc"},""], -[{y:-0.9},""], -[{y:-0.7,x:2,a:4},"\""], -[{y:-0.65,x:1},"~",{x:1,a:7},""], -[{y:-0.75,x:4},""], -[{y:-0.9},""], -[{y:-0.75,x:-1,h:1.5},""], -[{y:-0.95,x:2},""], -[{y:-0.65,x:1},"",{x:1},""], -[{y:-0.75,x:4},""], -[{y:-0.9},""] diff --git a/keyboards/atreus/keymaps/replicaJunction/kle/r-layer.txt b/keyboards/atreus/keymaps/replicaJunction/kle/r-layer.txt deleted file mode 100644 index 3d44383863ab..000000000000 --- a/keyboards/atreus/keymaps/replicaJunction/kle/r-layer.txt +++ /dev/null @@ -1,34 +0,0 @@ -[{r:10,rx:1,y:-0.1,x:2,a:7},""], -[{y:-0.65,x:1},"",{x:1},""], -[{y:-0.75},""], -[{y:-0.9,x:4},""], -[{y:-0.7,x:2,a:4},"&"], -[{y:-0.65,x:1,c:"#45b866",a:7},"",{x:1,c:"#cccccc",a:4},"|"], -[{y:-0.75,a:7},""], -[{y:-0.9,x:4},""], -[{y:-0.7,x:2},""], -[{y:-0.65,x:1},"",{x:1},""], -[{y:-0.75},""], -[{y:-0.9,x:4},""], -[{y:-0.75,x:5,h:1.5},""], -[{y:-0.95,x:2},""], -[{y:-0.65,x:1},"",{x:1},""], -[{y:-0.75},""], -[{y:-0.9,x:4},""], -[{r:-10,rx:7,ry:0.965,y:-0.2,x:2,a:4},"8"], -[{y:-0.65,x:1},"7",{x:1},"9"], -[{y:-0.75,x:4},"/"], -[{y:-0.9},":"], -[{y:-0.7,x:2},"5"], -[{y:-0.65,x:1},"4",{x:1},"6"], -[{y:-0.75,x:4},"*"], -[{y:-0.9},"#"], -[{y:-0.7,x:2},"2"], -[{y:-0.65,x:1},"1",{x:1},"3"], -[{y:-0.75,x:4},"-"], -[{y:-0.9},""], -[{y:-0.75,x:-1,a:7,h:1.5},""], -[{y:-0.95,x:2,a:4},"."], -[{y:-0.65,x:1},"0",{x:1},"="], -[{y:-0.75,x:4},"+"], -[{y:-0.9},"Space"] diff --git a/keyboards/atreus/keymaps/replicaJunction/kle/space-layer.txt b/keyboards/atreus/keymaps/replicaJunction/kle/space-layer.txt deleted file mode 100644 index d1ffa35f895d..000000000000 --- a/keyboards/atreus/keymaps/replicaJunction/kle/space-layer.txt +++ /dev/null @@ -1,34 +0,0 @@ -[{r:10,rx:1,y:-0.1,x:2,a:7},""], -[{y:-0.65,x:1},"",{x:1,fa:[7]},""], -[{y:-0.75},""], -[{y:-0.9,x:4},""], -[{y:-0.7,x:2,a:4,f:3},"Alt"], -[{y:-0.65,x:1,f:3},"Shift",{x:1,f:3},"Ctrl"], -[{y:-0.75,a:7},""], -[{y:-0.9,x:4},""], -[{y:-0.7,x:2},""], -[{y:-0.65,x:1},"",{x:1},""], -[{y:-0.75},""], -[{y:-0.9,x:4},""], -[{y:-0.75,x:5,h:1.5},""], -[{y:-0.95,x:2},""], -[{y:-0.65,x:1},"",{x:1},""], -[{y:-0.75},""], -[{y:-0.9,x:4},""], -[{r:-10,rx:7,ry:0.965,y:-0.2,x:2},""], -[{y:-0.65,x:1,a:4,f:3},"Home",{x:1,f:3},"End"], -[{y:-0.75,x:4,f:3},"Delete"], -[{y:-0.9,f:3},"PgUp"], -[{y:-0.7,x:2,a:7},""], -[{y:-0.65,x:1},"",{x:1},""], -[{y:-0.75,x:4,a:4,f:3},"Bksp"], -[{y:-0.9,f:3},"PgDn"], -[{y:-0.7,x:2,f:3},"Tab"], -[{y:-0.65,x:1,f:3},"Shift+\n\n\n\n\n\nTab",{x:1,a:7},""], -[{y:-0.75,x:4,a:4,f:3},"Insert"], -[{y:-0.9,a:7},""], -[{y:-0.75,x:-1,h:1.5},""], -[{y:-0.95,x:2},""], -[{y:-0.65,x:1},"",{x:1},""], -[{y:-0.75,x:4,a:4,f:3},"Prnt Scrn"], -[{y:-0.9,c:"#ffe08d",a:7},""] diff --git a/keyboards/atreus/keymaps/replicaJunction/readme.md b/keyboards/atreus/keymaps/replicaJunction/readme.md index f1d6c47b132e..6aa356f4f733 100644 --- a/keyboards/atreus/keymaps/replicaJunction/readme.md +++ b/keyboards/atreus/keymaps/replicaJunction/readme.md @@ -1,103 +1,7 @@ # replicaJunction - Atreus Layout -This layout is designed to make the absolute most out of the Atreus 40% keyboard. +I no longer actively use this keyboard. I've replaced it with the [Keyboardio Atreus](../../../keyboardio/atreus/keymaps/replicaJunction/readme.md). -This layout is probably not perfect for you. That's okay! Use it for ideas as you design your own perfect layout. +I still try to make sure the layout compiles, but I'm no longer tweaking it or adding new features. -Most of the custom logic in this keyboard is actually not in these files. Instead, it's in the directory `/users/replicaJunction` (from the root of the QMK repo). This allows me to share macros and custom logic between multiple keyboards. A `process_record_keyboard()` function defined weakly in `replicaJunction.h` allows keyboards to process records individually as well without overriding the `process_record_user()` function. (My Ergodox uses this to handle its LEDs, for example.) - -The default letter layout in this keymap is [Colemak-ModDH](https://colemakmods.github.io/mod-dh/). I use the "matrix version" of that layout, which retains the M key on the home row as in normal Colemak. - -## Design Goals - -I designed this layout with the following goals in mind: - -* Nothing may interfere with ordinary typing. -* Symbols need to be accessible quickly and organized in a manner I can remember. -* Limit more difficult finger movements (and pinky usage in general). - -### Nothing may interfere with ordinary typing - -For a long time, this meant that I couldn't use letters or home row keys as dual-role keys. I'm a fast typer, and I'm sometimes already typing the next letter before I've fully released the previous one. Normal keyboards don't care about this, but if I started adding dual-role functionality to letters, I found that I would sometimes type the next letter before releasing the layer toggle, and the letter I tried to send would still be sent under the layer I thought I'd left off. - -Fortunately, though, QMK has addressed this with the `PERMISSIVE_HOLD` flag. [Details are on the QMK docs page.](https://docs.qmk.fm/#/feature_advanced_keycodes?id=permissive-hold) - -Using that flag, I'm comfortable having layer shift keys on the home row, and this goes a long way to eliminate finger stress. - -### Sympols need to be accessible quickly - -Symbols are available under my left hand by holding the I key (on my right hand). I've grouped parenthesis, slashes, and braces together; the remaining symbols are ordered in the same way as they appear on USA keycap legends (for example, 1 is !, so that symbol is first in my lineup). Practically, I just had to get used to these other "misc" symbols. - -This also means that some symbols are accessible in more than one way. For example, the carats (greater than and less than) are available both in the "normal" location (Shift+Comma / Shift+Period) and on the symbol layer. I make regular changes to some of the symbols I don't use as commonly as I think of them. - -### Limit more difficult finger movements - -This is why I kept trying to put layer toggles on the home row keys instead of just placing them on random thumb keys. I suffer from RSI, and it's important for me to watch out for more "stressful" finger movements. - -The home row is the easiest row for your fingers to hit, followed by the upper row, and the lower row is noticeably more difficult to press. Because of this, I favored the upper row over the lower one any time I had the option to do so. - -## Features - -### ZXC Mods - -Keys on the bottom row of each half of this keyboard can be held to send modifier keys. I've tried to map this in a relatively logical manner: - -* Z / Slash: Ctrl -* X / Period: GUI -* C / Comma: Ctrl+Alt -* D / H: Alt - -Combined with Shift keys on the thumbs, this makes all modifiers quick to access on either hand. - -### Layer tap dance - -The lower-left key on the left hand can be used to apply or remove layers based on a number of taps: - -* 1 tap sends Escape, and also disables any persistent layers. -* 2 taps enables the Number pad layer. -* 5 or more taps resets the keyboard. - -## Extend Layer - -[Originally found on the Colemak forums](https://forum.colemak.com/topic/2014-extend-extra-extreme/), having a QMK-powered keyboard allows a super easy implementation of this concept. The idea is to place commonly-used keys under easy reach of your hands. Since I work with text often, my most common needs are things like Ctrl+Shift+arrow keys, and they're easy to access using this layer. (While technically it's four keypresses instead of just three, since it takes one key to enter the layer, that one key is a thumb button and the other three are all on the home row, so I find it much more comfortable than modifiers on a traditional keyboard.) - -Also featured in this layer is easy access to Tab, plus a Shift+Tab key. Alt-Tabbing back and forth, along with Ctrl-Tab, are super easy and friendly. When I need Ctrl+Alt+Delete, I typically use the ones found on this layer. - -## Layout Images - -Colored keys indicate keys that swap to another layer when held. - -These images are located in the `kle` folder of this directory. Also included is the "raw data" from Keyboard-Layout-Editor in a corresponding text file. - -### Base layer - -![Base layer](kle/base-layer.png) - -### R layer - -![R layer](kle/r-layer.png) - -### E layer - -![E layer](kle/i-layer.png) - -### I layer - -![I layer](kle/i-layer.png) - -### Space layer - -![Space layer](kle/space-layer.png) - -### Function layer - -![Function layer](kle/fn-layer.png) - -## Credits - -* [Drashna](https://github.com/qmk/qmk_firmware/blob/master/users/drashna/readme.md) - * User / keymap function ideas -* [Jeremy](https://github.com/qmk/qmk_firmware/blob/master/keyboards/atreus/keymaps/jeremy/readme.md) - * Sanity check on the Function keys (_of course they should be in rows of 4, not rows of 3 like a number pad. Why did I ever use anything else?_) -* [DreymaR of the Colemak forums](https://forum.colemak.com/topic/2014-extend-extra-extreme/) - * Original idea of the Extend layer +Most of the interesting features in this layout are defined in [my userspace folder](../../../../users/replicaJunction/readme.md). Refer to the documentation and code there for more details. diff --git a/keyboards/atreus/keymaps/replicaJunction/rules.mk b/keyboards/atreus/keymaps/replicaJunction/rules.mk index 9ff9c3fbb23c..13730aec650d 100644 --- a/keyboards/atreus/keymaps/replicaJunction/rules.mk +++ b/keyboards/atreus/keymaps/replicaJunction/rules.mk @@ -1,12 +1,28 @@ -# https://docs.qmk.fm/getting_started_make_guide.html +# Userspace options +USER_CAPS_WORD_ENABLE = yes +USER_MOUSE_JIGGLE_ENABLE = yes +USER_NUM_WORD_ENABLE = yes +USER_SECRETS_ENABLE = yes -MOUSEKEY_ENABLE = yes -TAP_DANCE_ENABLE = yes -# KEY_LOCK_ENABLE = yes -# CONSOLE_ENABLE = no -# COMMAND_ENABLE = no +DYNAMIC_MACRO_ENABLE = yes -# Use the "Unicode map" method -# UNICODE_ENABLE = no -# UNICODEMAP_ENABLE = yes +# Extra features that are nice but takes space. Enable only if they're +# used in the layout. +WPM_ENABLE = no +# EXTRAKEY_ENABLE = no # For volume keys and similar +# MOUSEKEY_ENABLE = no # Them mouse keys yo +KEY_OVERRIDE_ENABLE = no +LEADER_ENABLE = no +TAP_DANCE_ENABLE = no +# RGBLIGHT_ENABLE = no # Keyboard RGB underglow +RGB_MATRIX_ENABLE = no +# Features I definitely don't care aboud +LTO_ENABLE = yes +CONSOLE_ENABLE = no +VERBOSE = no +DEBUG_MATRIX_SCAN_RATE = no +DEBUG_MATRIX = no +MAGIC_ENABLE = no +SPACE_CADET_ENABLE = no +GRAVE_ESC_ENABLE = no diff --git a/keyboards/atreus/keymaps/ridingqwerty/rules.mk b/keyboards/atreus/keymaps/ridingqwerty/rules.mk index a41ef5f10f43..ecead0e01bce 100644 --- a/keyboards/atreus/keymaps/ridingqwerty/rules.mk +++ b/keyboards/atreus/keymaps/ridingqwerty/rules.mk @@ -9,7 +9,7 @@ BOOTLOADER = stm32-dfu # comment out to disable the options. # BACKLIGHT_ENABLE = no -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 diff --git a/keyboards/atreus/keymaps/via/keymap.c b/keyboards/atreus/keymaps/via/keymap.c new file mode 100644 index 000000000000..980eaf32ad70 --- /dev/null +++ b/keyboards/atreus/keymaps/via/keymap.c @@ -0,0 +1,65 @@ +/* Copyright 2021 Leonardus Dipa + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +enum custom_layers { + _QW, + _RS, + _LW, + _EM, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QW] = LAYOUT( /* Qwerty */ + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P , + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN , + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH , + KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_LALT, KC_SPC, MO(_RS), KC_MINS, KC_QUOT, KC_ENT + ), + + /* + * ! @ up { } || pgup 7 8 9 * + * # left down right $ || pgdn 4 5 6 + + * [ ] ( ) & || ` 1 2 3 \ + * lower insert super shift bksp ctrl || alt space fn . 0 = + */ + [_RS] = LAYOUT( /* [> RAISE <] */ + KC_EXLM, KC_AT, KC_UP, KC_LCBR, KC_RCBR, KC_PGUP, KC_7, KC_8, KC_9, KC_ASTR , + KC_HASH, KC_LEFT, KC_DOWN, KC_RGHT, KC_DLR, KC_PGDN, KC_4, KC_5, KC_6, KC_PLUS , + KC_LBRC, KC_RBRC, KC_LPRN, KC_RPRN, KC_AMPR, KC_GRV, KC_1, KC_2, KC_3, KC_BSLS , + TG(_LW), KC_INS, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_LALT, KC_SPC, KC_TRNS, KC_DOT, KC_0, KC_EQL ), + /* + * insert home up end pgup || up F7 F8 F9 F10 + * del left down right pgdn || down F4 F5 F6 F11 + * volup reset || F1 F2 F3 F12 + * voldn super shift bksp ctrl || alt space L0 prtsc scroll pause + */ + [_LW] = LAYOUT( /* [> LOWER <] */ + KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_UP, KC_F7, KC_F8, KC_F9, KC_F10 , + KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_DOWN, KC_F4, KC_F5, KC_F6, KC_F11 , + KC_NO, KC_VOLU, KC_NO, KC_NO, RESET, KC_NO, KC_F1, KC_F2, KC_F3, KC_F12 , + KC_NO, KC_VOLD, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_LALT, KC_SPC, TO(_QW), KC_PSCR, KC_SLCK, KC_PAUS ), + + [_EM] = LAYOUT( /* [> EMPTY <] */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ) +}; diff --git a/keyboards/atreus/keymaps/via/rules.mk b/keyboards/atreus/keymaps/via/rules.mk new file mode 100644 index 000000000000..f75f41cf50e7 --- /dev/null +++ b/keyboards/atreus/keymaps/via/rules.mk @@ -0,0 +1,4 @@ +LTO_ENABLE=yes +VIA_ENABLE = yes + +MOUSEKEY_ENABLE = no diff --git a/keyboards/atreus/keymaps/xk/rules.mk b/keyboards/atreus/keymaps/xk/rules.mk index 5b69426acabf..a2c5143eff32 100644 --- a/keyboards/atreus/keymaps/xk/rules.mk +++ b/keyboards/atreus/keymaps/xk/rules.mk @@ -11,5 +11,5 @@ AUDIO_ENABLE = no # Audio output on port C6 UNICODE_ENABLE = yes # Unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite diff --git a/keyboards/atreus/promicro/config.h b/keyboards/atreus/promicro/config.h index 03b63f6ff329..a4ed1c642da9 100644 --- a/keyboards/atreus/promicro/config.h +++ b/keyboards/atreus/promicro/config.h @@ -28,6 +28,8 @@ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) * */ + +/* key matrix pins */ #define MATRIX_ROW_PINS { F4, B2, B4, B5 } #if defined(PCBDOWN) #define MATRIX_COL_PINS { D0, D4, C6, D7, E6, B6, B3, B1, F7, F6, F5 } diff --git a/keyboards/atreus/promicro/rules.mk b/keyboards/atreus/promicro/rules.mk index e6fef517279c..cf663a7ed6aa 100644 --- a/keyboards/atreus/promicro/rules.mk +++ b/keyboards/atreus/promicro/rules.mk @@ -2,11 +2,4 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina diff --git a/keyboards/atreus/rules.mk b/keyboards/atreus/rules.mk index cc58cd464784..8f24ea839ca0 100644 --- a/keyboards/atreus/rules.mk +++ b/keyboards/atreus/rules.mk @@ -1,20 +1,16 @@ # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# 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 on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support UNICODE_ENABLE = yes # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output DEFAULT_FOLDER = atreus/astar diff --git a/keyboards/atreus/teensy2/rules.mk b/keyboards/atreus/teensy2/rules.mk index ae398e2588c7..320633f80f33 100644 --- a/keyboards/atreus/teensy2/rules.mk +++ b/keyboards/atreus/teensy2/rules.mk @@ -2,11 +2,4 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = halfkay diff --git a/keyboards/atreus62/config.h b/keyboards/atreus62/config.h index 2d4ab99c627e..31baef145f09 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -71,5 +70,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -#endif diff --git a/keyboards/atreus62/info.json b/keyboards/atreus62/info.json index 5a7ed3754ba8..d5f1e7cce9ca 100644 --- a/keyboards/atreus62/info.json +++ b/keyboards/atreus62/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Atreus62", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5.7, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0.6}, {"x":1, "y":0.6}, {"x":2, "y":0.35}, {"x":3, "y":0}, {"x":4, "y":0.35}, {"x":5, "y":0.7}, {"x":9, "y":0.7}, {"x":10, "y":0.35}, {"x":11, "y":0}, {"x":12, "y":0.35}, {"x":13, "y":0.6}, {"x":14, "y":0.6}, {"x":0, "y":1.6}, {"x":1, "y":1.6}, {"x":2, "y":1.35}, {"x":3, "y":1}, {"x":4, "y":1.35}, {"x":5, "y":1.7}, {"x":9, "y":1.7}, {"x":10, "y":1.35}, {"x":11, "y":1}, {"x":12, "y":1.35}, {"x":13, "y":1.6}, {"x":14, "y":1.6}, {"x":0, "y":2.6}, {"x":1, "y":2.6}, {"x":2, "y":2.35}, {"x":3, "y":2}, {"x":4, "y":2.35}, {"x":5, "y":2.7}, {"x":9, "y":2.7}, {"x":10, "y":2.35}, {"x":11, "y":2}, {"x":12, "y":2.35}, {"x":13, "y":2.6}, {"x":14, "y":2.6}, {"x":0, "y":3.6}, {"x":1, "y":3.6}, {"x":2, "y":3.35}, {"x":3, "y":3}, {"x":4, "y":3.35}, {"x":5, "y":3.7}, {"x":9, "y":3.7}, {"x":10, "y":3.35}, {"x":11, "y":3}, {"x":12, "y":3.35}, {"x":13, "y":3.6}, {"x":14, "y":3.6}, {"x":0, "y":4.6}, {"x":1, "y":4.6}, {"x":2, "y":4.35}, {"x":3, "y":4}, {"x":4, "y":4.35}, {"x":5, "y":4.7}, {"x":6, "y":3.95, "h":1.5}, {"x":8, "y":3.95, "h":1.5}, {"x":9, "y":4.7}, {"x":10, "y":4.35}, {"x":11, "y":4}, {"x":12, "y":4.35}, {"x":13, "y":4.6}, {"x":14, "y":4.6}] diff --git a/keyboards/atreus62/keymaps/194h/keymap.c b/keyboards/atreus62/keymaps/194h/keymap.c index 1d069e9d4231..b9587b03e8d8 100644 --- a/keyboards/atreus62/keymaps/194h/keymap.c +++ b/keyboards/atreus62/keymaps/194h/keymap.c @@ -31,7 +31,7 @@ #define NO_RCBR RALT(KC_0) // } #define NO_COLN LSFT(KC_DOT) // : #define NO_SCLN LSFT(KC_COMM) // ; -#define NO_MU RALT(KC_M) // µ +#define NO_MICR RALT(KC_M) // µ #define NO_EURO RALT(KC_E) // € #define NO_SECT LSFT(KC_GRV) // § #define NO_GERC RALT(KC_COMM) // ¸ diff --git a/keyboards/atreus62/rules.mk b/keyboards/atreus62/rules.mk index 5f9cd6c78d39..152f8a8e0f45 100644 --- a/keyboards/atreus62/rules.mk +++ b/keyboards/atreus62/rules.mk @@ -2,29 +2,17 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work #BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -#MIDI_ENABLE = no # MIDI controls UNICODE_ENABLE = yes # Unicode -#BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID - -# 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/atxkb/1894/config.h b/keyboards/atxkb/1894/config.h index ce2b87ed6192..c59efe91a746 100644 --- a/keyboards/atxkb/1894/config.h +++ b/keyboards/atxkb/1894/config.h @@ -92,59 +92,6 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. diff --git a/keyboards/atxkb/1894/info.json b/keyboards/atxkb/1894/info.json index 7c44bdf01602..a9195061f8ed 100644 --- a/keyboards/atxkb/1894/info.json +++ b/keyboards/atxkb/1894/info.json @@ -2,8 +2,6 @@ "keyboard_name": "1894", "url": "https://atxkb.com", "maintainer": "austexcn", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/atxkb/1894/rules.mk b/keyboards/atxkb/1894/rules.mk index cdd4a7324b68..fed72c0f8684 100644 --- a/keyboards/atxkb/1894/rules.mk +++ b/keyboards/atxkb/1894/rules.mk @@ -2,32 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LTO_ENABLE = yes LAYOUTS = 60_ansi 60_ansi_split_bs_rshift 60_tsangan_hhkb diff --git a/keyboards/aves65/info.json b/keyboards/aves65/info.json index 9454f1183508..4531d93b813f 100644 --- a/keyboards/aves65/info.json +++ b/keyboards/aves65/info.json @@ -1,10 +1,241 @@ { - "keyboard_name": "Aves65", - "url": "", - "maintainer": "Hund", - "width": 16, - "height": 5, + "keyboard_name": "Aves65", + "url": "", + "maintainer": "Hund", "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"k00", "x":0, "y":0}, + {"label":"k01", "x":1, "y":0}, + {"label":"k02", "x":2, "y":0}, + {"label":"k03", "x":3, "y":0}, + {"label":"k04", "x":4, "y":0}, + {"label":"k05", "x":5, "y":0}, + {"label":"k06", "x":6, "y":0}, + {"label":"k07", "x":7, "y":0}, + {"label":"k08", "x":8, "y":0}, + {"label":"k09", "x":9, "y":0}, + {"label":"k0a", "x":10, "y":0}, + {"label":"k0b", "x":11, "y":0}, + {"label":"k0c", "x":12, "y":0}, + {"label":"k1d", "x":13, "y":0}, + {"label":"k0d", "x":14, "y":0}, + {"label":"k0e", "x":15, "y":0}, + + {"label":"k10", "x":0, "y":1, "w":1.5}, + {"label":"k11", "x":1.5, "y":1}, + {"label":"k12", "x":2.5, "y":1}, + {"label":"k13", "x":3.5, "y":1}, + {"label":"k14", "x":4.5, "y":1}, + {"label":"k15", "x":5.5, "y":1}, + {"label":"k16", "x":6.5, "y":1}, + {"label":"k17", "x":7.5, "y":1}, + {"label":"k18", "x":8.5, "y":1}, + {"label":"k19", "x":9.5, "y":1}, + {"label":"k1a", "x":10.5, "y":1}, + {"label":"k1b", "x":11.5, "y":1}, + {"label":"k1c", "x":12.5, "y":1}, + {"label":"k2c", "x":13.5, "y":1, "w":1.5}, + {"label":"k1e", "x":15, "y":1}, + + {"label":"k20", "x":0, "y":2, "w":1.75}, + {"label":"k21", "x":1.75, "y":2}, + {"label":"k22", "x":2.75, "y":2}, + {"label":"k23", "x":3.75, "y":2}, + {"label":"k24", "x":4.75, "y":2}, + {"label":"k25", "x":5.75, "y":2}, + {"label":"k26", "x":6.75, "y":2}, + {"label":"k27", "x":7.75, "y":2}, + {"label":"k28", "x":8.75, "y":2}, + {"label":"k29", "x":9.75, "y":2}, + {"label":"k2a", "x":10.75, "y":2}, + {"label":"k2b", "x":11.75, "y":2}, + {"label":"k2d", "x":12.75, "y":2, "w":2.25}, + {"label":"k2e", "x":15, "y":2}, + + {"label":"k30", "x":0, "y":3, "w":1.25}, + {"label":"k31", "x":1.25, "y":3}, + {"label":"k32", "x":2.25, "y":3}, + {"label":"k33", "x":3.25, "y":3}, + {"label":"k34", "x":4.25, "y":3}, + {"label":"k35", "x":5.25, "y":3}, + {"label":"k36", "x":6.25, "y":3}, + {"label":"k37", "x":7.25, "y":3}, + {"label":"k38", "x":8.25, "y":3}, + {"label":"k39", "x":9.25, "y":3}, + {"label":"k3a", "x":10.25, "y":3}, + {"label":"k3b", "x":11.25, "y":3}, + {"label":"k3c", "x":12.25, "y":3, "w":1.75}, + {"label":"k3d", "x":14, "y":3}, + {"label":"k3e", "x":15, "y":3}, + + {"label":"k40", "x":0, "y":4, "w":1.25}, + {"label":"k41", "x":1.25, "y":4, "w":1.25}, + {"label":"k42", "x":2.5, "y":4, "w":1.25}, + {"label":"k46", "x":3.75, "y":4, "w":6.25}, + {"label":"k4a", "x":10, "y":4}, + {"label":"k4b", "x":11, "y":4}, + {"label":"k49", "x":12, "y":4}, + {"label":"k4c", "x":13, "y":4}, + {"label":"k4d", "x":14, "y":4}, + {"label":"k4e", "x":15, "y":4} + ] + }, + "LAYOUT_65_iso": { + "layout": [ + {"label":"k00", "x":0, "y":0}, + {"label":"k01", "x":1, "y":0}, + {"label":"k02", "x":2, "y":0}, + {"label":"k03", "x":3, "y":0}, + {"label":"k04", "x":4, "y":0}, + {"label":"k05", "x":5, "y":0}, + {"label":"k06", "x":6, "y":0}, + {"label":"k07", "x":7, "y":0}, + {"label":"k08", "x":8, "y":0}, + {"label":"k09", "x":9, "y":0}, + {"label":"k0a", "x":10, "y":0}, + {"label":"k0b", "x":11, "y":0}, + {"label":"k0c", "x":12, "y":0}, + {"label":"k0d", "x":13, "y":0, "w":2}, + {"label":"k0e", "x":15, "y":0}, + + {"label":"k10", "x":0, "y":1, "w":1.5}, + {"label":"k11", "x":1.5, "y":1}, + {"label":"k12", "x":2.5, "y":1}, + {"label":"k13", "x":3.5, "y":1}, + {"label":"k14", "x":4.5, "y":1}, + {"label":"k15", "x":5.5, "y":1}, + {"label":"k16", "x":6.5, "y":1}, + {"label":"k17", "x":7.5, "y":1}, + {"label":"k18", "x":8.5, "y":1}, + {"label":"k19", "x":9.5, "y":1}, + {"label":"k1a", "x":10.5, "y":1}, + {"label":"k1b", "x":11.5, "y":1}, + {"label":"k1c", "x":12.5, "y":1}, + {"label":"k1e", "x":15, "y":1}, + + {"label":"k20", "x":0, "y":2, "w":1.75}, + {"label":"k21", "x":1.75, "y":2}, + {"label":"k22", "x":2.75, "y":2}, + {"label":"k23", "x":3.75, "y":2}, + {"label":"k24", "x":4.75, "y":2}, + {"label":"k25", "x":5.75, "y":2}, + {"label":"k26", "x":6.75, "y":2}, + {"label":"k27", "x":7.75, "y":2}, + {"label":"k28", "x":8.75, "y":2}, + {"label":"k29", "x":9.75, "y":2}, + {"label":"k2a", "x":10.75, "y":2}, + {"label":"k2b", "x":11.75, "y":2}, + {"label":"k2c", "x":12.75, "y":2}, + {"label":"k2d", "x":13.75, "y":1, "w":1.25, "h":2}, + {"label":"k2e", "x":15, "y":2}, + + {"label":"k30", "x":0, "y":3, "w":1.25}, + {"label":"k31", "x":1.25, "y":3}, + {"label":"k32", "x":2.25, "y":3}, + {"label":"k33", "x":3.25, "y":3}, + {"label":"k34", "x":4.25, "y":3}, + {"label":"k35", "x":5.25, "y":3}, + {"label":"k36", "x":6.25, "y":3}, + {"label":"k37", "x":7.25, "y":3}, + {"label":"k38", "x":8.25, "y":3}, + {"label":"k39", "x":9.25, "y":3}, + {"label":"k3a", "x":10.25, "y":3}, + {"label":"k3b", "x":11.25, "y":3}, + {"label":"k3c", "x":12.25, "y":3, "w":1.75}, + {"label":"k3d", "x":14, "y":3}, + {"label":"k3e", "x":15, "y":3}, + + {"label":"k40", "x":0, "y":4, "w":1.25}, + {"label":"k41", "x":1.25, "y":4, "w":1.25}, + {"label":"k42", "x":2.5, "y":4, "w":1.25}, + {"label":"k46", "x":3.75, "y":4, "w":6.25}, + {"label":"k4a", "x":10, "y":4}, + {"label":"k4b", "x":11, "y":4}, + {"label":"k49", "x":12, "y":4}, + {"label":"k4c", "x":13, "y":4}, + {"label":"k4d", "x":14, "y":4}, + {"label":"k4e", "x":15, "y":4} + ] + }, + "LAYOUT_65_iso_split_bs": { + "layout": [ + {"label":"k00", "x":0, "y":0}, + {"label":"k01", "x":1, "y":0}, + {"label":"k02", "x":2, "y":0}, + {"label":"k03", "x":3, "y":0}, + {"label":"k04", "x":4, "y":0}, + {"label":"k05", "x":5, "y":0}, + {"label":"k06", "x":6, "y":0}, + {"label":"k07", "x":7, "y":0}, + {"label":"k08", "x":8, "y":0}, + {"label":"k09", "x":9, "y":0}, + {"label":"k0a", "x":10, "y":0}, + {"label":"k0b", "x":11, "y":0}, + {"label":"k0c", "x":12, "y":0}, + {"label":"k1d", "x":13, "y":0}, + {"label":"k0d", "x":14, "y":0}, + {"label":"k0e", "x":15, "y":0}, + + {"label":"k10", "x":0, "y":1, "w":1.5}, + {"label":"k11", "x":1.5, "y":1}, + {"label":"k12", "x":2.5, "y":1}, + {"label":"k13", "x":3.5, "y":1}, + {"label":"k14", "x":4.5, "y":1}, + {"label":"k15", "x":5.5, "y":1}, + {"label":"k16", "x":6.5, "y":1}, + {"label":"k17", "x":7.5, "y":1}, + {"label":"k18", "x":8.5, "y":1}, + {"label":"k19", "x":9.5, "y":1}, + {"label":"k1a", "x":10.5, "y":1}, + {"label":"k1b", "x":11.5, "y":1}, + {"label":"k1c", "x":12.5, "y":1}, + {"label":"k1e", "x":15, "y":1}, + + {"label":"k20", "x":0, "y":2, "w":1.75}, + {"label":"k21", "x":1.75, "y":2}, + {"label":"k22", "x":2.75, "y":2}, + {"label":"k23", "x":3.75, "y":2}, + {"label":"k24", "x":4.75, "y":2}, + {"label":"k25", "x":5.75, "y":2}, + {"label":"k26", "x":6.75, "y":2}, + {"label":"k27", "x":7.75, "y":2}, + {"label":"k28", "x":8.75, "y":2}, + {"label":"k29", "x":9.75, "y":2}, + {"label":"k2a", "x":10.75, "y":2}, + {"label":"k2b", "x":11.75, "y":2}, + {"label":"k2c", "x":12.75, "y":2}, + {"label":"k2d", "x":13.75, "y":1, "w":1.25, "h":2}, + {"label":"k2e", "x":15, "y":2}, + + {"label":"k30", "x":0, "y":3, "w":1.25}, + {"label":"k31", "x":1.25, "y":3}, + {"label":"k32", "x":2.25, "y":3}, + {"label":"k33", "x":3.25, "y":3}, + {"label":"k34", "x":4.25, "y":3}, + {"label":"k35", "x":5.25, "y":3}, + {"label":"k36", "x":6.25, "y":3}, + {"label":"k37", "x":7.25, "y":3}, + {"label":"k38", "x":8.25, "y":3}, + {"label":"k39", "x":9.25, "y":3}, + {"label":"k3a", "x":10.25, "y":3}, + {"label":"k3b", "x":11.25, "y":3}, + {"label":"k3c", "x":12.25, "y":3, "w":1.75}, + {"label":"k3d", "x":14, "y":3}, + {"label":"k3e", "x":15, "y":3}, + + {"label":"k40", "x":0, "y":4, "w":1.25}, + {"label":"k41", "x":1.25, "y":4, "w":1.25}, + {"label":"k42", "x":2.5, "y":4, "w":1.25}, + {"label":"k46", "x":3.75, "y":4, "w":6.25}, + {"label":"k4a", "x":10, "y":4}, + {"label":"k4b", "x":11, "y":4}, + {"label":"k49", "x":12, "y":4}, + {"label":"k4c", "x":13, "y":4}, + {"label":"k4d", "x":14, "y":4}, + {"label":"k4e", "x":15, "y":4} + ] + }, "LAYOUT_65_iso_blocker": { "layout": [ {"label":"k00", "x":0, "y":0}, @@ -22,7 +253,7 @@ {"label":"k0c", "x":12, "y":0}, {"label":"k0d", "x":13, "y":0, "w":2}, {"label":"k0e", "x":15, "y":0}, - + {"label":"k10", "x":0, "y":1, "w":1.5}, {"label":"k11", "x":1.5, "y":1}, {"label":"k12", "x":2.5, "y":1}, @@ -37,7 +268,7 @@ {"label":"k1b", "x":11.5, "y":1}, {"label":"k1c", "x":12.5, "y":1}, {"label":"k1e", "x":15, "y":1}, - + {"label":"k20", "x":0, "y":2, "w":1.75}, {"label":"k21", "x":1.75, "y":2}, {"label":"k22", "x":2.75, "y":2}, @@ -53,7 +284,7 @@ {"label":"k2c", "x":12.75, "y":2}, {"label":"k2d", "x":13.75, "y":1, "w":1.25, "h":2}, {"label":"k2e", "x":15, "y":2}, - + {"label":"k30", "x":0, "y":3, "w":1.25}, {"label":"k31", "x":1.25, "y":3}, {"label":"k32", "x":2.25, "y":3}, @@ -69,7 +300,388 @@ {"label":"k3c", "x":12.25, "y":3, "w":1.75}, {"label":"k3d", "x":14, "y":3}, {"label":"k3e", "x":15, "y":3}, - + + {"label":"k40", "x":0, "y":4, "w":1.25}, + {"label":"k41", "x":1.25, "y":4, "w":1.25}, + {"label":"k42", "x":2.5, "y":4, "w":1.25}, + {"label":"k46", "x":3.75, "y":4, "w":6.25}, + {"label":"k4a", "x":10, "y":4, "w":1.25}, + {"label":"k4b", "x":11.25, "y":4, "w":1.25}, + {"label":"k4c", "x":13, "y":4}, + {"label":"k4d", "x":14, "y":4}, + {"label":"k4e", "x":15, "y":4} + ] + }, + "LAYOUT_65_iso_blocker_split_bs": { + "layout": [ + {"label":"k00", "x":0, "y":0}, + {"label":"k01", "x":1, "y":0}, + {"label":"k02", "x":2, "y":0}, + {"label":"k03", "x":3, "y":0}, + {"label":"k04", "x":4, "y":0}, + {"label":"k05", "x":5, "y":0}, + {"label":"k06", "x":6, "y":0}, + {"label":"k07", "x":7, "y":0}, + {"label":"k08", "x":8, "y":0}, + {"label":"k09", "x":9, "y":0}, + {"label":"k0a", "x":10, "y":0}, + {"label":"k0b", "x":11, "y":0}, + {"label":"k0c", "x":12, "y":0}, + {"label":"k1d", "x":13, "y":0}, + {"label":"k0d", "x":14, "y":0}, + {"label":"k0e", "x":15, "y":0}, + + {"label":"k10", "x":0, "y":1, "w":1.5}, + {"label":"k11", "x":1.5, "y":1}, + {"label":"k12", "x":2.5, "y":1}, + {"label":"k13", "x":3.5, "y":1}, + {"label":"k14", "x":4.5, "y":1}, + {"label":"k15", "x":5.5, "y":1}, + {"label":"k16", "x":6.5, "y":1}, + {"label":"k17", "x":7.5, "y":1}, + {"label":"k18", "x":8.5, "y":1}, + {"label":"k19", "x":9.5, "y":1}, + {"label":"k1a", "x":10.5, "y":1}, + {"label":"k1b", "x":11.5, "y":1}, + {"label":"k1c", "x":12.5, "y":1}, + {"label":"k1e", "x":15, "y":1}, + + {"label":"k20", "x":0, "y":2, "w":1.75}, + {"label":"k21", "x":1.75, "y":2}, + {"label":"k22", "x":2.75, "y":2}, + {"label":"k23", "x":3.75, "y":2}, + {"label":"k24", "x":4.75, "y":2}, + {"label":"k25", "x":5.75, "y":2}, + {"label":"k26", "x":6.75, "y":2}, + {"label":"k27", "x":7.75, "y":2}, + {"label":"k28", "x":8.75, "y":2}, + {"label":"k29", "x":9.75, "y":2}, + {"label":"k2a", "x":10.75, "y":2}, + {"label":"k2b", "x":11.75, "y":2}, + {"label":"k2c", "x":12.75, "y":2}, + {"label":"k2d", "x":13.75, "y":1, "w":1.25, "h":2}, + {"label":"k2e", "x":15, "y":2}, + + {"label":"k30", "x":0, "y":3, "w":1.25}, + {"label":"k31", "x":1.25, "y":3}, + {"label":"k32", "x":2.25, "y":3}, + {"label":"k33", "x":3.25, "y":3}, + {"label":"k34", "x":4.25, "y":3}, + {"label":"k35", "x":5.25, "y":3}, + {"label":"k36", "x":6.25, "y":3}, + {"label":"k37", "x":7.25, "y":3}, + {"label":"k38", "x":8.25, "y":3}, + {"label":"k39", "x":9.25, "y":3}, + {"label":"k3a", "x":10.25, "y":3}, + {"label":"k3b", "x":11.25, "y":3}, + {"label":"k3c", "x":12.25, "y":3, "w":1.75}, + {"label":"k3d", "x":14, "y":3}, + {"label":"k3e", "x":15, "y":3}, + + {"label":"k40", "x":0, "y":4, "w":1.25}, + {"label":"k41", "x":1.25, "y":4, "w":1.25}, + {"label":"k42", "x":2.5, "y":4, "w":1.25}, + {"label":"k46", "x":3.75, "y":4, "w":6.25}, + {"label":"k4a", "x":10, "y":4, "w":1.25}, + {"label":"k4b", "x":11.25, "y":4, "w":1.25}, + {"label":"k4c", "x":13, "y":4}, + {"label":"k4d", "x":14, "y":4}, + {"label":"k4e", "x":15, "y":4} + ] + }, + "LAYOUT_65_ansi": { + "layout": [ + {"label":"k00", "x":0, "y":0}, + {"label":"k01", "x":1, "y":0}, + {"label":"k02", "x":2, "y":0}, + {"label":"k03", "x":3, "y":0}, + {"label":"k04", "x":4, "y":0}, + {"label":"k05", "x":5, "y":0}, + {"label":"k06", "x":6, "y":0}, + {"label":"k07", "x":7, "y":0}, + {"label":"k08", "x":8, "y":0}, + {"label":"k09", "x":9, "y":0}, + {"label":"k0a", "x":10, "y":0}, + {"label":"k0b", "x":11, "y":0}, + {"label":"k0c", "x":12, "y":0}, + {"label":"k0d", "x":13, "y":0, "w":2}, + {"label":"k0e", "x":15, "y":0}, + + {"label":"k10", "x":0, "y":1, "w":1.5}, + {"label":"k11", "x":1.5, "y":1}, + {"label":"k12", "x":2.5, "y":1}, + {"label":"k13", "x":3.5, "y":1}, + {"label":"k14", "x":4.5, "y":1}, + {"label":"k15", "x":5.5, "y":1}, + {"label":"k16", "x":6.5, "y":1}, + {"label":"k17", "x":7.5, "y":1}, + {"label":"k18", "x":8.5, "y":1}, + {"label":"k19", "x":9.5, "y":1}, + {"label":"k1a", "x":10.5, "y":1}, + {"label":"k1b", "x":11.5, "y":1}, + {"label":"k1c", "x":12.5, "y":1}, + {"label":"k2c", "x":13.5, "y":1, "w":1.5}, + {"label":"k1e", "x":15, "y":1}, + + {"label":"k20", "x":0, "y":2, "w":1.75}, + {"label":"k21", "x":1.75, "y":2}, + {"label":"k22", "x":2.75, "y":2}, + {"label":"k23", "x":3.75, "y":2}, + {"label":"k24", "x":4.75, "y":2}, + {"label":"k25", "x":5.75, "y":2}, + {"label":"k26", "x":6.75, "y":2}, + {"label":"k27", "x":7.75, "y":2}, + {"label":"k28", "x":8.75, "y":2}, + {"label":"k29", "x":9.75, "y":2}, + {"label":"k2a", "x":10.75, "y":2}, + {"label":"k2b", "x":11.75, "y":2}, + {"label":"k2d", "x":12.75, "y":2, "w":2.25}, + {"label":"k2e", "x":15, "y":2}, + + {"label":"k30", "x":0, "y":3, "w":2.25}, + {"label":"k32", "x":2.25, "y":3}, + {"label":"k33", "x":3.25, "y":3}, + {"label":"k34", "x":4.25, "y":3}, + {"label":"k35", "x":5.25, "y":3}, + {"label":"k36", "x":6.25, "y":3}, + {"label":"k37", "x":7.25, "y":3}, + {"label":"k38", "x":8.25, "y":3}, + {"label":"k39", "x":9.25, "y":3}, + {"label":"k3a", "x":10.25, "y":3}, + {"label":"k3b", "x":11.25, "y":3}, + {"label":"k3c", "x":12.25, "y":3, "w":1.75}, + {"label":"k3d", "x":14, "y":3}, + {"label":"k3e", "x":15, "y":3}, + + {"label":"k40", "x":0, "y":4, "w":1.25}, + {"label":"k41", "x":1.25, "y":4, "w":1.25}, + {"label":"k42", "x":2.5, "y":4, "w":1.25}, + {"label":"k46", "x":3.75, "y":4, "w":6.25}, + {"label":"k4a", "x":10, "y":4}, + {"label":"k4b", "x":11, "y":4}, + {"label":"k49", "x":12, "y":4}, + {"label":"k4c", "x":13, "y":4}, + {"label":"k4d", "x":14, "y":4}, + {"label":"k4e", "x":15, "y":4} + ] + }, + "LAYOUT_65_ansi_split_bs": { + "layout": [ + {"label":"k00", "x":0, "y":0}, + {"label":"k01", "x":1, "y":0}, + {"label":"k02", "x":2, "y":0}, + {"label":"k03", "x":3, "y":0}, + {"label":"k04", "x":4, "y":0}, + {"label":"k05", "x":5, "y":0}, + {"label":"k06", "x":6, "y":0}, + {"label":"k07", "x":7, "y":0}, + {"label":"k08", "x":8, "y":0}, + {"label":"k09", "x":9, "y":0}, + {"label":"k0a", "x":10, "y":0}, + {"label":"k0b", "x":11, "y":0}, + {"label":"k0c", "x":12, "y":0}, + {"label":"k1d", "x":13, "y":0}, + {"label":"k0d", "x":14, "y":0}, + {"label":"k0e", "x":15, "y":0}, + + {"label":"k10", "x":0, "y":1, "w":1.5}, + {"label":"k11", "x":1.5, "y":1}, + {"label":"k12", "x":2.5, "y":1}, + {"label":"k13", "x":3.5, "y":1}, + {"label":"k14", "x":4.5, "y":1}, + {"label":"k15", "x":5.5, "y":1}, + {"label":"k16", "x":6.5, "y":1}, + {"label":"k17", "x":7.5, "y":1}, + {"label":"k18", "x":8.5, "y":1}, + {"label":"k19", "x":9.5, "y":1}, + {"label":"k1a", "x":10.5, "y":1}, + {"label":"k1b", "x":11.5, "y":1}, + {"label":"k1c", "x":12.5, "y":1}, + {"label":"k2c", "x":13.5, "y":1, "w":1.5}, + {"label":"k1e", "x":15, "y":1}, + + {"label":"k20", "x":0, "y":2, "w":1.75}, + {"label":"k21", "x":1.75, "y":2}, + {"label":"k22", "x":2.75, "y":2}, + {"label":"k23", "x":3.75, "y":2}, + {"label":"k24", "x":4.75, "y":2}, + {"label":"k25", "x":5.75, "y":2}, + {"label":"k26", "x":6.75, "y":2}, + {"label":"k27", "x":7.75, "y":2}, + {"label":"k28", "x":8.75, "y":2}, + {"label":"k29", "x":9.75, "y":2}, + {"label":"k2a", "x":10.75, "y":2}, + {"label":"k2b", "x":11.75, "y":2}, + {"label":"k2d", "x":12.75, "y":2, "w":2.25}, + {"label":"k2e", "x":15, "y":2}, + + {"label":"k30", "x":0, "y":3, "w":2.25}, + {"label":"k32", "x":2.25, "y":3}, + {"label":"k33", "x":3.25, "y":3}, + {"label":"k34", "x":4.25, "y":3}, + {"label":"k35", "x":5.25, "y":3}, + {"label":"k36", "x":6.25, "y":3}, + {"label":"k37", "x":7.25, "y":3}, + {"label":"k38", "x":8.25, "y":3}, + {"label":"k39", "x":9.25, "y":3}, + {"label":"k3a", "x":10.25, "y":3}, + {"label":"k3b", "x":11.25, "y":3}, + {"label":"k3c", "x":12.25, "y":3, "w":1.75}, + {"label":"k3d", "x":14, "y":3}, + {"label":"k3e", "x":15, "y":3}, + + {"label":"k40", "x":0, "y":4, "w":1.25}, + {"label":"k41", "x":1.25, "y":4, "w":1.25}, + {"label":"k42", "x":2.5, "y":4, "w":1.25}, + {"label":"k46", "x":3.75, "y":4, "w":6.25}, + {"label":"k4a", "x":10, "y":4}, + {"label":"k4b", "x":11, "y":4}, + {"label":"k49", "x":12, "y":4}, + {"label":"k4c", "x":13, "y":4}, + {"label":"k4d", "x":14, "y":4}, + {"label":"k4e", "x":15, "y":4} + ] + }, + "LAYOUT_65_ansi_blocker": { + "layout": [ + {"label":"k00", "x":0, "y":0}, + {"label":"k01", "x":1, "y":0}, + {"label":"k02", "x":2, "y":0}, + {"label":"k03", "x":3, "y":0}, + {"label":"k04", "x":4, "y":0}, + {"label":"k05", "x":5, "y":0}, + {"label":"k06", "x":6, "y":0}, + {"label":"k07", "x":7, "y":0}, + {"label":"k08", "x":8, "y":0}, + {"label":"k09", "x":9, "y":0}, + {"label":"k0a", "x":10, "y":0}, + {"label":"k0b", "x":11, "y":0}, + {"label":"k0c", "x":12, "y":0}, + {"label":"k0d", "x":13, "y":0, "w":2}, + {"label":"k0e", "x":15, "y":0}, + + {"label":"k10", "x":0, "y":1, "w":1.5}, + {"label":"k11", "x":1.5, "y":1}, + {"label":"k12", "x":2.5, "y":1}, + {"label":"k13", "x":3.5, "y":1}, + {"label":"k14", "x":4.5, "y":1}, + {"label":"k15", "x":5.5, "y":1}, + {"label":"k16", "x":6.5, "y":1}, + {"label":"k17", "x":7.5, "y":1}, + {"label":"k18", "x":8.5, "y":1}, + {"label":"k19", "x":9.5, "y":1}, + {"label":"k1a", "x":10.5, "y":1}, + {"label":"k1b", "x":11.5, "y":1}, + {"label":"k1c", "x":12.5, "y":1}, + {"label":"k2c", "x":13.5, "y":1, "w":1.5}, + {"label":"k1e", "x":15, "y":1}, + + {"label":"k20", "x":0, "y":2, "w":1.75}, + {"label":"k21", "x":1.75, "y":2}, + {"label":"k22", "x":2.75, "y":2}, + {"label":"k23", "x":3.75, "y":2}, + {"label":"k24", "x":4.75, "y":2}, + {"label":"k25", "x":5.75, "y":2}, + {"label":"k26", "x":6.75, "y":2}, + {"label":"k27", "x":7.75, "y":2}, + {"label":"k28", "x":8.75, "y":2}, + {"label":"k29", "x":9.75, "y":2}, + {"label":"k2a", "x":10.75, "y":2}, + {"label":"k2b", "x":11.75, "y":2}, + {"label":"k2d", "x":12.75, "y":2, "w":2.25}, + {"label":"k2e", "x":15, "y":2}, + + {"label":"k30", "x":0, "y":3, "w":2.25}, + {"label":"k32", "x":2.25, "y":3}, + {"label":"k33", "x":3.25, "y":3}, + {"label":"k34", "x":4.25, "y":3}, + {"label":"k35", "x":5.25, "y":3}, + {"label":"k36", "x":6.25, "y":3}, + {"label":"k37", "x":7.25, "y":3}, + {"label":"k38", "x":8.25, "y":3}, + {"label":"k39", "x":9.25, "y":3}, + {"label":"k3a", "x":10.25, "y":3}, + {"label":"k3b", "x":11.25, "y":3}, + {"label":"k3c", "x":12.25, "y":3, "w":1.75}, + {"label":"k3d", "x":14, "y":3}, + {"label":"k3e", "x":15, "y":3}, + + {"label":"k40", "x":0, "y":4, "w":1.25}, + {"label":"k41", "x":1.25, "y":4, "w":1.25}, + {"label":"k42", "x":2.5, "y":4, "w":1.25}, + {"label":"k46", "x":3.75, "y":4, "w":6.25}, + {"label":"k4a", "x":10, "y":4, "w":1.25}, + {"label":"k4b", "x":11.25, "y":4, "w":1.25}, + {"label":"k4c", "x":13, "y":4}, + {"label":"k4d", "x":14, "y":4}, + {"label":"k4e", "x":15, "y":4} + ] + }, + "LAYOUT_65_ansi_blocker_split_bs": { + "layout": [ + {"label":"k00", "x":0, "y":0}, + {"label":"k01", "x":1, "y":0}, + {"label":"k02", "x":2, "y":0}, + {"label":"k03", "x":3, "y":0}, + {"label":"k04", "x":4, "y":0}, + {"label":"k05", "x":5, "y":0}, + {"label":"k06", "x":6, "y":0}, + {"label":"k07", "x":7, "y":0}, + {"label":"k08", "x":8, "y":0}, + {"label":"k09", "x":9, "y":0}, + {"label":"k0a", "x":10, "y":0}, + {"label":"k0b", "x":11, "y":0}, + {"label":"k0c", "x":12, "y":0}, + {"label":"k1d", "x":13, "y":0}, + {"label":"k0d", "x":14, "y":0}, + {"label":"k0e", "x":15, "y":0}, + + {"label":"k10", "x":0, "y":1, "w":1.5}, + {"label":"k11", "x":1.5, "y":1}, + {"label":"k12", "x":2.5, "y":1}, + {"label":"k13", "x":3.5, "y":1}, + {"label":"k14", "x":4.5, "y":1}, + {"label":"k15", "x":5.5, "y":1}, + {"label":"k16", "x":6.5, "y":1}, + {"label":"k17", "x":7.5, "y":1}, + {"label":"k18", "x":8.5, "y":1}, + {"label":"k19", "x":9.5, "y":1}, + {"label":"k1a", "x":10.5, "y":1}, + {"label":"k1b", "x":11.5, "y":1}, + {"label":"k1c", "x":12.5, "y":1}, + {"label":"k2c", "x":13.5, "y":1, "w":1.5}, + {"label":"k1e", "x":15, "y":1}, + + {"label":"k20", "x":0, "y":2, "w":1.75}, + {"label":"k21", "x":1.75, "y":2}, + {"label":"k22", "x":2.75, "y":2}, + {"label":"k23", "x":3.75, "y":2}, + {"label":"k24", "x":4.75, "y":2}, + {"label":"k25", "x":5.75, "y":2}, + {"label":"k26", "x":6.75, "y":2}, + {"label":"k27", "x":7.75, "y":2}, + {"label":"k28", "x":8.75, "y":2}, + {"label":"k29", "x":9.75, "y":2}, + {"label":"k2a", "x":10.75, "y":2}, + {"label":"k2b", "x":11.75, "y":2}, + {"label":"k2d", "x":12.75, "y":2, "w":2.25}, + {"label":"k2e", "x":15, "y":2}, + + {"label":"k30", "x":0, "y":3, "w":2.25}, + {"label":"k32", "x":2.25, "y":3}, + {"label":"k33", "x":3.25, "y":3}, + {"label":"k34", "x":4.25, "y":3}, + {"label":"k35", "x":5.25, "y":3}, + {"label":"k36", "x":6.25, "y":3}, + {"label":"k37", "x":7.25, "y":3}, + {"label":"k38", "x":8.25, "y":3}, + {"label":"k39", "x":9.25, "y":3}, + {"label":"k3a", "x":10.25, "y":3}, + {"label":"k3b", "x":11.25, "y":3}, + {"label":"k3c", "x":12.25, "y":3, "w":1.75}, + {"label":"k3d", "x":14, "y":3}, + {"label":"k3e", "x":15, "y":3}, + {"label":"k40", "x":0, "y":4, "w":1.25}, {"label":"k41", "x":1.25, "y":4, "w":1.25}, {"label":"k42", "x":2.5, "y":4, "w":1.25}, diff --git a/keyboards/aves65/rules.mk b/keyboards/aves65/rules.mk index d88fb91dd39f..57285db89256 100644 --- a/keyboards/aves65/rules.mk +++ b/keyboards/aves65/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = qmk-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 LAYOUTS = 65_ansi 65_ansi_split_bs 65_ansi_blocker 65_ansi_blocker_split_bs 65_iso 65_iso_blocker 65_iso_blocker_split_bs diff --git a/keyboards/axolstudio/helpo/info.json b/keyboards/axolstudio/helpo/info.json index 557f0273a6d0..5ec0cc7d1313 100644 --- a/keyboards/axolstudio/helpo/info.json +++ b/keyboards/axolstudio/helpo/info.json @@ -2,8 +2,6 @@ "keyboard_name": "helpo", "url": "", "maintainer": "kb-elmo", - "width": 5, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/axolstudio/helpo/rules.mk b/keyboards/axolstudio/helpo/rules.mk index 3076166479fc..0ed896250405 100644 --- a/keyboards/axolstudio/helpo/rules.mk +++ b/keyboards/axolstudio/helpo/rules.mk @@ -5,21 +5,18 @@ MCU = atmega32a F_CPU = 16000000 # Bootloader selection -BOOTLOADER = USBasp +BOOTLOADER = usbasploader # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/axolstudio/yeti/info.json b/keyboards/axolstudio/yeti/info.json index 442c172d244e..7d256ccf36fe 100644 --- a/keyboards/axolstudio/yeti/info.json +++ b/keyboards/axolstudio/yeti/info.json @@ -2,8 +2,6 @@ "keyboard_name": "yeti", "url": "https://axolstudio.ca/yeti", "maintainer": "kb-elmo", - "width": 17.75, - "height": 5, "layouts": { "LAYOUT_alice": { "layout": [ diff --git a/keyboards/axolstudio/yeti/rules.mk b/keyboards/axolstudio/yeti/rules.mk index 4253e34a7770..88053bcecc28 100644 --- a/keyboards/axolstudio/yeti/rules.mk +++ b/keyboards/axolstudio/yeti/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 LAYOUTS = alice alice_split_bs diff --git a/keyboards/aya/aya.c b/keyboards/aya/aya.c new file mode 100644 index 000000000000..95bc5794d8bb --- /dev/null +++ b/keyboards/aya/aya.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Dan Nixon + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "aya.h" diff --git a/keyboards/aya/aya.h b/keyboards/aya/aya.h new file mode 100644 index 000000000000..36ba18220c4d --- /dev/null +++ b/keyboards/aya/aya.h @@ -0,0 +1,39 @@ +/* Copyright 2021 Dan Nixon + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + L06, L05, L04, L03, L02, L01, L00, R00, R01, R02, R03, R04, R05, R06, \ + L16, L15, L14, L13, L12, L11, L10, R10, R11, R12, R13, R14, R15, R16, \ + L26, L25, L24, L23, L22, L21, L20, L40, R40, R20, R21, R22, R23, R24, R25, R26, \ + L36, L35, L34, L33, L32, L31, L30, L43, L44, R44, R43, R30, R31, R32, R33, R34, R35, R36, \ + L42, L41, L45, L46, R46, R45, R41, R42 \ + ) \ +{ \ + { 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 } \ +} diff --git a/keyboards/aya/config.h b/keyboards/aya/config.h new file mode 100644 index 000000000000..1ad9716d45da --- /dev/null +++ b/keyboards/aya/config.h @@ -0,0 +1,37 @@ +/* Copyright 2021 Dan Nixon + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +#define VENDOR_ID 0xBEEF +#define PRODUCT_ID 0x0003 +#define DEVICE_VER 0x0001 +#define MANUFACTURER DanNixon +#define PRODUCT Aya + +#define MATRIX_ROWS 10 +#define MATRIX_COLS 7 + +#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4 } +#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2 } +#define DIODE_DIRECTION ROW2COL + +#define DEBOUNCE 5 + +#define SPLIT_HAND_PIN B5 +#define USE_I2C diff --git a/keyboards/aya/info.json b/keyboards/aya/info.json new file mode 100644 index 000000000000..8db200eb6a20 --- /dev/null +++ b/keyboards/aya/info.json @@ -0,0 +1,10 @@ +{ + "keyboard_name": "Aya", + "url": "https://github.com/DanNixon/aya", + "maintainer": "dannixon", + "layouts": { + "LAYOUT": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15, "y":0}, {"x":16, "y":0}, {"x":17, "y":0}, {"x":18, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, {"x":15, "y":1}, {"x":16, "y":1}, {"x":17, "y":1}, {"x":18, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":13, "y":2}, {"x":14, "y":2}, {"x":15, "y":2}, {"x":16, "y":2}, {"x":17, "y":2}, {"x":18, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}, {"x":12, "y":3}, {"x":13, "y":3}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":16, "y":3}, {"x":17, "y":3}, {"x":18, "y":3}, {"x":5, "y":4}, {"x":6, "y":4}, {"x":7, "y":4}, {"x":8, "y":4}, {"x":10, "y":4}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}] + } + } +} diff --git a/keyboards/aya/keymaps/default/config.h b/keyboards/aya/keymaps/default/config.h new file mode 100644 index 000000000000..5ef534d04f8a --- /dev/null +++ b/keyboards/aya/keymaps/default/config.h @@ -0,0 +1,19 @@ +/* Copyright 2021 Dan Nixon + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define IGNORE_MOD_TAP_INTERRUPT diff --git a/keyboards/aya/keymaps/default/keymap.c b/keyboards/aya/keymaps/default/keymap.c new file mode 100644 index 000000000000..255e13d7b764 --- /dev/null +++ b/keyboards/aya/keymaps/default/keymap.c @@ -0,0 +1,87 @@ +/* Copyright 2021 Dan Nixon + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +#define _LG_ESC LGUI_T(KC_ESC) +#define _RC_SPC RCTL_T(KC_SPC) +#define _RS_BSP RSFT_T(KC_BSPC) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ,-----------------------------------------. .-----------------------------------------. + * | | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | - | = | + * |-----+-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----+-----| + * | | RMB | Q | W | E | R | T | | Y | U | I | O | P | [ | ] | + * |-----+-----+-----+-----+-----+-----+-----+-----. .-----+-----+-----+-----+-----+-----+-----+-----| + * | | LMB | A | S | D | F | G | | | | H | J | K | L | ; | ' | # | + * |-----+-----+-----+-----+-----+-----+-----+-----+-----. .-----+-----+-----+-----+-----+-----+-----+-----+-----| + * | | \ | Z | X | C | V | B | Alt |M Lyr| | | Del | N | M | , | . | / | | | + * '-----------------------------+-----+-----+-----+-----| +-----+-----+-----+-----+-----------------------------' + * |Shift| Esc | Tab |F Lyr| | |Enter|Space|Bspce| (tap) + * |Shift| GUI | Tab |F Lyr| | |Enter| Ctrl|Shift| (hold) + * '-----------------------' '-----------------------' + */ + [0] = LAYOUT( + _______, KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5, KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL, + _______, KC_BTN2, 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_BTN1, KC_A , KC_S , KC_D , KC_F , KC_G, _______, _______, KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_NUHS, + _______, KC_NUBS, KC_Z , KC_X , KC_C , KC_V , KC_B, KC_LALT, MO(2) , _______, KC_DEL , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, _______, _______, + KC_LSFT, _LG_ESC, KC_TAB , MO(1) , _______, KC_ENT, _RC_SPC, _RS_BSP + ), + + /* + * ,-----------------------------------------. .-----------------------------------------. + * | | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |-----+-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----+-----| + * | | | | | | | | | Home|Pg Dn|Pg Up| End | | | | + * |-----+-----+-----+-----+-----+-----+-----+-----. .-----+-----+-----+-----+-----+-----+-----+-----| + * | | | | | | | | | | | Left| Down| Up |Right| | | | + * |-----+-----+-----+-----+-----+-----+-----+-----+-----. .-----+-----+-----+-----+-----+-----+-----+-----+-----| + * | | | | | | | | | | | | | | | | | | | | + * '-----------------------------+-----+-----+-----+-----| +-----+-----+-----+-----+-----------------------------' + * | | | | | | | | | | + * '-----------------------' '-----------------------' + */ + [1] = LAYOUT( + _______, _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , + _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END , _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + + /* + * ,-----------------------------------------. .-----------------------------------------. + * | | | | | | | | | | | | | | | | + * |-----+-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----+-----| + * | | | | | | | | |W Lft|W Dwn|W Up |W Rgt| | | | + * |-----+-----+-----+-----+-----+-----+-----+-----. .-----+-----+-----+-----+-----+-----+-----+-----| + * | | | | | | | | | | |M Lft|M Dwn|M Up |M Rgt| | | | + * |-----+-----+-----+-----+-----+-----+-----+-----+-----. .-----+-----+-----+-----+-----+-----+-----+-----+-----| + * | | | | | | | | | | | | | | | | | | | | + * '-----------------------------+-----+-----+-----+-----| +-----+-----+-----+-----+-----------------------------' + * | | | | | | | | LMB | RMB | + * '-----------------------' '-----------------------' + */ + [2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, KC_BTN1, KC_BTN2 + ), +}; diff --git a/keyboards/aya/readme.md b/keyboards/aya/readme.md new file mode 100644 index 000000000000..4e8e4228a0fd --- /dev/null +++ b/keyboards/aya/readme.md @@ -0,0 +1,20 @@ +# Aya + +![Aya](https://raw.githubusercontent.com/DanNixon/aya/main/docs/both_sides.jpg) + +A column staggered, symmetrical split keyboard. + +* Keyboard Maintainer: [Dan Nixon](https://github.com/dannixon) +* Hardware Supported: Aya PCB, Pro Micro +* Hardware Availability: CAD files [here](https://github.com/DanNixon/aya) + +Make example for this keyboard (after setting up your build environment): + + make aya:default + +Enter the bootloader in 2 ways: + +* **Command**: Hold down both shift keys and press B +* **Physical reset button**: Briefly short the pads on the read of the PCB (directly behind the Pro Micro) + +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/aya/rules.mk b/keyboards/aya/rules.mk new file mode 100644 index 000000000000..6d1c7c1f67f7 --- /dev/null +++ b/keyboards/aya/rules.mk @@ -0,0 +1,20 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +SPLIT_KEYBOARD = yes diff --git a/keyboards/baguette/baguette.c b/keyboards/baguette/baguette.c index 751a31725626..99305cf2deba 100644 --- a/keyboards/baguette/baguette.c +++ b/keyboards/baguette/baguette.c @@ -49,23 +49,3 @@ void matrix_init_kb(void) { matrix_init_user(); } - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/baguette/baguette.h b/keyboards/baguette/baguette.h index e3945bea7ee6..70440f76272f 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 . */ -#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/baguette/config.h b/keyboards/baguette/config.h index 7ec18109ccde..9a6b08ed9ebd 100644 --- a/keyboards/baguette/config.h +++ b/keyboards/baguette/config.h @@ -99,54 +99,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -164,23 +116,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 diff --git a/keyboards/baguette/info.json b/keyboards/baguette/info.json index 2e845cdda59b..cad167381f0e 100644 --- a/keyboards/baguette/info.json +++ b/keyboards/baguette/info.json @@ -3,8 +3,6 @@ "url": "", "maintainer": "qmk", "bootloader": "atmel-dfu", - "width": 16.5, - "height": 5, "layouts": { "LAYOUT_ansi": { "layout": [ diff --git a/keyboards/baguette/keymaps/default/keymap.c b/keyboards/baguette/keymaps/default/keymap.c index 4dfcb837a55a..1ad1000003cd 100644 --- a/keyboards/baguette/keymaps/default/keymap.c +++ b/keyboards/baguette/keymaps/default/keymap.c @@ -30,21 +30,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, BL_TOGG, BL_STEP, BL_BRTG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ KC_TRNS, KC_TRNS, KC_TRNS, KC_RCTL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), }; - - - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/baguette/keymaps/iso/keymap.c b/keyboards/baguette/keymaps/iso/keymap.c index ea8baf08ee5f..fb6d472d60d6 100644 --- a/keyboards/baguette/keymaps/iso/keymap.c +++ b/keyboards/baguette/keymaps/iso/keymap.c @@ -30,21 +30,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, BL_TOGG, BL_STEP, BL_BRTG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ KC_TRNS, KC_TRNS, KC_TRNS, KC_RCTL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), }; - - - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/baguette/rules.mk b/keyboards/baguette/rules.mk index 0bd78643ceed..545aad68bc6b 100644 --- a/keyboards/baguette/rules.mk +++ b/keyboards/baguette/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/bakeneko60/info.json b/keyboards/bakeneko60/info.json index 6310825ae24a..6bf6a085752b 100644 --- a/keyboards/bakeneko60/info.json +++ b/keyboards/bakeneko60/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Bakeneko 60", "url": "https://github.com/kkatano/bakeneko-60-pcb", "maintainer": "kkatano", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_ansi_split_bs_rshift": { "layout": [ diff --git a/keyboards/bakeneko60/rules.mk b/keyboards/bakeneko60/rules.mk index cc1b100ec9bb..2f3b0f55e158 100644 --- a/keyboards/bakeneko60/rules.mk +++ b/keyboards/bakeneko60/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 LAYOUTS = 60_ansi_split_bs_rshift 60_ansi 60_tsangan_hhkb diff --git a/keyboards/bakeneko65/bakeneko65.c b/keyboards/bakeneko65/bakeneko65.c deleted file mode 100644 index aa1ba8e66185..000000000000 --- a/keyboards/bakeneko65/bakeneko65.c +++ /dev/null @@ -1,17 +0,0 @@ -/* Copyright 2020 Koichi Katano - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "bakeneko65.h" diff --git a/keyboards/bakeneko65/config.h b/keyboards/bakeneko65/config.h deleted file mode 100644 index 65b3ff88e292..000000000000 --- a/keyboards/bakeneko65/config.h +++ /dev/null @@ -1,109 +0,0 @@ -/* -Copyright 2020 Koichi Katano - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -#include "config_common.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x3A0E -#define PRODUCT_ID 0x4C82 -#define DEVICE_VER 0x0001 -#define MANUFACTURER kkatano -#define PRODUCT Bakeneko 65 - -/* key matrix size */ -#define MATRIX_ROWS 5 -#define MATRIX_COLS 16 - -/* - * 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 { E6, B7, F7, F4, F5 } -#define MATRIX_COL_PINS { F6, B0, F1, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, D1, D0 } -#define UNUSED_PINS - -/* COL2ROW, ROW2COL */ -#define DIODE_DIRECTION COL2ROW - -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 5 - -/* define if matrix has ghost (lacks anti-ghosting diodes) */ -//#define MATRIX_HAS_GHOST - -/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ -#define LOCKING_SUPPORT_ENABLE -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE - -/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. - * This is useful for the Windows task manager shortcut (ctrl+shift+esc). - */ -//#define GRAVE_ESC_CTRL_OVERRIDE - -/* - * Force NKRO - * - * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved - * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the - * makefile for this to work.) - * - * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) - * until the next keyboard reset. - * - * NKRO may prevent your keystrokes from being detected in the BIOS, but it is - * fully operational during normal computer usage. - * - * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) - * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by - * bootmagic, NKRO mode will always be enabled until it is toggled again during a - * power-up. - * - */ -//#define FORCE_NKRO - -/* - * 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 - -/* disable these deprecated features by default */ -#define NO_ACTION_MACRO -#define NO_ACTION_FUNCTION - -/* Bootmagic Lite key configuration */ -//#define BOOTMAGIC_LITE_ROW 0 -//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/bakeneko65/info.json b/keyboards/bakeneko65/info.json deleted file mode 100644 index 25b438c297b7..000000000000 --- a/keyboards/bakeneko65/info.json +++ /dev/null @@ -1,313 +0,0 @@ -{ - "keyboard_name": "Bakeneko 65", - "url": "https://github.com/kkatano/bakeneko-65-pcb", - "maintainer": "kkatano", - "width": 16, - "height": 5, - "layouts": { - "LAYOUT_65_ansi_split_bs": { - "layout": [ - { "x":0, "y":0 }, - { "x":1, "y":0 }, - { "x":2, "y":0 }, - { "x":3, "y":0 }, - { "x":4, "y":0 }, - { "x":5, "y":0 }, - { "x":6, "y":0 }, - { "x":7, "y":0 }, - { "x":8, "y":0 }, - { "x":9, "y":0 }, - { "x":10, "y":0 }, - { "x":11, "y":0 }, - { "x":12, "y":0 }, - { "x":13, "y":0 }, - { "x":14, "y":0 }, - { "x":15, "y":0 }, - - { "x":0, "y":1, "w":1.5 }, - { "x":1.5, "y":1 }, - { "x":2.5, "y":1 }, - { "x":3.5, "y":1 }, - { "x":4.5, "y":1 }, - { "x":5.5, "y":1 }, - { "x":6.5, "y":1 }, - { "x":7.5, "y":1 }, - { "x":8.5, "y":1 }, - { "x":9.5, "y":1 }, - { "x":10.5, "y":1 }, - { "x":11.5, "y":1 }, - { "x":12.5, "y":1 }, - { "x":13.5, "y":1, "w":1.5 }, - { "x":15, "y":1 }, - - { "x":0, "y":2, "w":1.75 }, - { "x":1.75, "y":2 }, - { "x":2.75, "y":2 }, - { "x":3.75, "y":2 }, - { "x":4.75, "y":2 }, - { "x":5.75, "y":2 }, - { "x":6.75, "y":2 }, - { "x":7.75, "y":2 }, - { "x":8.75, "y":2 }, - { "x":9.75, "y":2 }, - { "x":10.75, "y":2 }, - { "x":11.75, "y":2 }, - { "x":12.75, "y":2, "w":2.25 }, - { "x":15, "y":2 }, - - { "x":0, "y":3, "w":2.25 }, - { "x":2.25, "y":3 }, - { "x":3.25, "y":3 }, - { "x":4.25, "y":3 }, - { "x":5.25, "y":3 }, - { "x":6.25, "y":3 }, - { "x":7.25, "y":3 }, - { "x":8.25, "y":3 }, - { "x":9.25, "y":3 }, - { "x":10.25, "y":3 }, - { "x":11.25, "y":3 }, - { "x":12.25, "y":3, "w":1.75 }, - { "x":14, "y":3 }, - { "x":15, "y":3 }, - - { "x":0, "y":4, "w":1.25 }, - { "x":1.25, "y":4, "w":1.25 }, - { "x":2.5, "y":4, "w":1.25 }, - { "x":3.75, "y":4, "w":6.25 }, - { "x":10, "y":4 }, - { "x":11, "y":4 }, - { "x":12, "y":4 }, - { "x":13, "y":4 }, - { "x":14, "y":4 }, - { "x":15, "y":4 } - ] - }, - "LAYOUT_65_ansi": { - "layout": [ - { "x":0, "y":0 }, - { "x":1, "y":0 }, - { "x":2, "y":0 }, - { "x":3, "y":0 }, - { "x":4, "y":0 }, - { "x":5, "y":0 }, - { "x":6, "y":0 }, - { "x":7, "y":0 }, - { "x":8, "y":0 }, - { "x":9, "y":0 }, - { "x":10, "y":0 }, - { "x":11, "y":0 }, - { "x":12, "y":0 }, - { "x":13, "y":0, "w": 2 }, - { "x":15, "y":0 }, - - { "x":0, "y":1, "w":1.5 }, - { "x":1.5, "y":1 }, - { "x":2.5, "y":1 }, - { "x":3.5, "y":1 }, - { "x":4.5, "y":1 }, - { "x":5.5, "y":1 }, - { "x":6.5, "y":1 }, - { "x":7.5, "y":1 }, - { "x":8.5, "y":1 }, - { "x":9.5, "y":1 }, - { "x":10.5, "y":1 }, - { "x":11.5, "y":1 }, - { "x":12.5, "y":1 }, - { "x":13.5, "y":1, "w":1.5 }, - { "x":15, "y":1 }, - - { "x":0, "y":2, "w":1.75 }, - { "x":1.75, "y":2 }, - { "x":2.75, "y":2 }, - { "x":3.75, "y":2 }, - { "x":4.75, "y":2 }, - { "x":5.75, "y":2 }, - { "x":6.75, "y":2 }, - { "x":7.75, "y":2 }, - { "x":8.75, "y":2 }, - { "x":9.75, "y":2 }, - { "x":10.75, "y":2 }, - { "x":11.75, "y":2 }, - { "x":12.75, "y":2, "w":2.25 }, - { "x":15, "y":2 }, - - { "x":0, "y":3, "w":2.25 }, - { "x":2.25, "y":3 }, - { "x":3.25, "y":3 }, - { "x":4.25, "y":3 }, - { "x":5.25, "y":3 }, - { "x":6.25, "y":3 }, - { "x":7.25, "y":3 }, - { "x":8.25, "y":3 }, - { "x":9.25, "y":3 }, - { "x":10.25, "y":3 }, - { "x":11.25, "y":3 }, - { "x":12.25, "y":3, "w":1.75 }, - { "x":14, "y":3 }, - { "x":15, "y":3 }, - - { "x":0, "y":4, "w":1.25 }, - { "x":1.25, "y":4, "w":1.25 }, - { "x":2.5, "y":4, "w":1.25 }, - { "x":3.75, "y":4, "w":6.25 }, - { "x":10, "y":4 }, - { "x":11, "y":4 }, - { "x":12, "y":4 }, - { "x":13, "y":4 }, - { "x":14, "y":4 }, - { "x":15, "y":4 } - ] - }, - "LAYOUT_65_ansi_split_bs_2_right_mods": { - "layout": [ - { "x":0, "y":0 }, - { "x":1, "y":0 }, - { "x":2, "y":0 }, - { "x":3, "y":0 }, - { "x":4, "y":0 }, - { "x":5, "y":0 }, - { "x":6, "y":0 }, - { "x":7, "y":0 }, - { "x":8, "y":0 }, - { "x":9, "y":0 }, - { "x":10, "y":0 }, - { "x":11, "y":0 }, - { "x":12, "y":0 }, - { "x":13, "y":0 }, - { "x":14, "y":0 }, - { "x":15, "y":0 }, - - { "x":0, "y":1, "w":1.5 }, - { "x":1.5, "y":1 }, - { "x":2.5, "y":1 }, - { "x":3.5, "y":1 }, - { "x":4.5, "y":1 }, - { "x":5.5, "y":1 }, - { "x":6.5, "y":1 }, - { "x":7.5, "y":1 }, - { "x":8.5, "y":1 }, - { "x":9.5, "y":1 }, - { "x":10.5, "y":1 }, - { "x":11.5, "y":1 }, - { "x":12.5, "y":1 }, - { "x":13.5, "y":1, "w":1.5 }, - { "x":15, "y":1 }, - - { "x":0, "y":2, "w":1.75 }, - { "x":1.75, "y":2 }, - { "x":2.75, "y":2 }, - { "x":3.75, "y":2 }, - { "x":4.75, "y":2 }, - { "x":5.75, "y":2 }, - { "x":6.75, "y":2 }, - { "x":7.75, "y":2 }, - { "x":8.75, "y":2 }, - { "x":9.75, "y":2 }, - { "x":10.75, "y":2 }, - { "x":11.75, "y":2 }, - { "x":12.75, "y":2, "w":2.25 }, - { "x":15, "y":2 }, - - { "x":0, "y":3, "w":2.25 }, - { "x":2.25, "y":3 }, - { "x":3.25, "y":3 }, - { "x":4.25, "y":3 }, - { "x":5.25, "y":3 }, - { "x":6.25, "y":3 }, - { "x":7.25, "y":3 }, - { "x":8.25, "y":3 }, - { "x":9.25, "y":3 }, - { "x":10.25, "y":3 }, - { "x":11.25, "y":3 }, - { "x":12.25, "y":3, "w":1.75 }, - { "x":14, "y":3 }, - { "x":15, "y":3 }, - - { "x":0, "y":4, "w":1.25 }, - { "x":1.25, "y":4, "w":1.25 }, - { "x":2.5, "y":4, "w":1.25 }, - { "x":3.75, "y":4, "w":6.25 }, - { "x":10, "y":4, "w":1.5 }, - { "x":11.5, "y":4, "w":1.5 }, - { "x":13, "y":4 }, - { "x":14, "y":4 }, - { "x":15, "y":4 } - ] - }, - "LAYOUT_65_ansi_2_right_mods": { - "layout": [ - { "x":0, "y":0 }, - { "x":1, "y":0 }, - { "x":2, "y":0 }, - { "x":3, "y":0 }, - { "x":4, "y":0 }, - { "x":5, "y":0 }, - { "x":6, "y":0 }, - { "x":7, "y":0 }, - { "x":8, "y":0 }, - { "x":9, "y":0 }, - { "x":10, "y":0 }, - { "x":11, "y":0 }, - { "x":12, "y":0 }, - { "x":13, "y":0, "w": 2 }, - { "x":15, "y":0 }, - - { "x":0, "y":1, "w":1.5 }, - { "x":1.5, "y":1 }, - { "x":2.5, "y":1 }, - { "x":3.5, "y":1 }, - { "x":4.5, "y":1 }, - { "x":5.5, "y":1 }, - { "x":6.5, "y":1 }, - { "x":7.5, "y":1 }, - { "x":8.5, "y":1 }, - { "x":9.5, "y":1 }, - { "x":10.5, "y":1 }, - { "x":11.5, "y":1 }, - { "x":12.5, "y":1 }, - { "x":13.5, "y":1, "w":1.5 }, - { "x":15, "y":1 }, - - { "x":0, "y":2, "w":1.75 }, - { "x":1.75, "y":2 }, - { "x":2.75, "y":2 }, - { "x":3.75, "y":2 }, - { "x":4.75, "y":2 }, - { "x":5.75, "y":2 }, - { "x":6.75, "y":2 }, - { "x":7.75, "y":2 }, - { "x":8.75, "y":2 }, - { "x":9.75, "y":2 }, - { "x":10.75, "y":2 }, - { "x":11.75, "y":2 }, - { "x":12.75, "y":2, "w":2.25 }, - { "x":15, "y":2 }, - - { "x":0, "y":3, "w":2.25 }, - { "x":2.25, "y":3 }, - { "x":3.25, "y":3 }, - { "x":4.25, "y":3 }, - { "x":5.25, "y":3 }, - { "x":6.25, "y":3 }, - { "x":7.25, "y":3 }, - { "x":8.25, "y":3 }, - { "x":9.25, "y":3 }, - { "x":10.25, "y":3 }, - { "x":11.25, "y":3 }, - { "x":12.25, "y":3, "w":1.75 }, - { "x":14, "y":3 }, - { "x":15, "y":3 }, - - { "x":0, "y":4, "w":1.25 }, - { "x":1.25, "y":4, "w":1.25 }, - { "x":2.5, "y":4, "w":1.25 }, - { "x":3.75, "y":4, "w":6.25 }, - { "x":10, "y":4, "w":1.5 }, - { "x":11.5, "y":4, "w":1.5 }, - { "x":13, "y":4 }, - { "x":14, "y":4 }, - { "x":15, "y":4 } - ] - } - } -} diff --git a/keyboards/bakeneko65/keymaps/default/readme.md b/keyboards/bakeneko65/keymaps/default/readme.md deleted file mode 100644 index 34d1b4e9312a..000000000000 --- a/keyboards/bakeneko65/keymaps/default/readme.md +++ /dev/null @@ -1 +0,0 @@ -# The default keymap for Bakeneko 65 diff --git a/keyboards/bakeneko65/readme.md b/keyboards/bakeneko65/readme.md deleted file mode 100644 index 87960d2f1596..000000000000 --- a/keyboards/bakeneko65/readme.md +++ /dev/null @@ -1,17 +0,0 @@ -# Bakeneko 65 - -A simple 65% keyboard - -* Keyboard Maintainer: [kkatano](https://github.com/kkatano) -* Hardware Supported: Bakeneko 65 -* Hardware Availability: [Open source on GitHub](https://github.com/kkatano/bakeneko-65) - -Make example for this keyboard (after setting up your build environment): - - make bakeneko65:default - -Flashing example for this keyboard: - - make bakeneko65:default:flash - -See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/bakeneko65/rev2/config.h b/keyboards/bakeneko65/rev2/config.h new file mode 100644 index 000000000000..6639e823955a --- /dev/null +++ b/keyboards/bakeneko65/rev2/config.h @@ -0,0 +1,109 @@ +/* +Copyright 2020 Koichi Katano + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x3A0E +#define PRODUCT_ID 0x4C82 +#define DEVICE_VER 0x0001 +#define MANUFACTURER kkatano +#define PRODUCT Bakeneko 65 V2 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 16 + +/* + * 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 { E6, B7, F7, F4, F5 } +#define MATRIX_COL_PINS { F6, B0, F1, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, D1, D0 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/bakeneko65/rev2/info.json b/keyboards/bakeneko65/rev2/info.json new file mode 100644 index 000000000000..cbcb6a25510c --- /dev/null +++ b/keyboards/bakeneko65/rev2/info.json @@ -0,0 +1,311 @@ +{ + "keyboard_name": "Bakeneko 65 V2", + "url": "https://github.com/kkatano/bakeneko-65", + "maintainer": "kkatano", + "layouts": { + "LAYOUT_65_ansi_split_bs": { + "layout": [ + { "x":0, "y":0 }, + { "x":1, "y":0 }, + { "x":2, "y":0 }, + { "x":3, "y":0 }, + { "x":4, "y":0 }, + { "x":5, "y":0 }, + { "x":6, "y":0 }, + { "x":7, "y":0 }, + { "x":8, "y":0 }, + { "x":9, "y":0 }, + { "x":10, "y":0 }, + { "x":11, "y":0 }, + { "x":12, "y":0 }, + { "x":13, "y":0 }, + { "x":14, "y":0 }, + { "x":15, "y":0 }, + + { "x":0, "y":1, "w":1.5 }, + { "x":1.5, "y":1 }, + { "x":2.5, "y":1 }, + { "x":3.5, "y":1 }, + { "x":4.5, "y":1 }, + { "x":5.5, "y":1 }, + { "x":6.5, "y":1 }, + { "x":7.5, "y":1 }, + { "x":8.5, "y":1 }, + { "x":9.5, "y":1 }, + { "x":10.5, "y":1 }, + { "x":11.5, "y":1 }, + { "x":12.5, "y":1 }, + { "x":13.5, "y":1, "w":1.5 }, + { "x":15, "y":1 }, + + { "x":0, "y":2, "w":1.75 }, + { "x":1.75, "y":2 }, + { "x":2.75, "y":2 }, + { "x":3.75, "y":2 }, + { "x":4.75, "y":2 }, + { "x":5.75, "y":2 }, + { "x":6.75, "y":2 }, + { "x":7.75, "y":2 }, + { "x":8.75, "y":2 }, + { "x":9.75, "y":2 }, + { "x":10.75, "y":2 }, + { "x":11.75, "y":2 }, + { "x":12.75, "y":2, "w":2.25 }, + { "x":15, "y":2 }, + + { "x":0, "y":3, "w":2.25 }, + { "x":2.25, "y":3 }, + { "x":3.25, "y":3 }, + { "x":4.25, "y":3 }, + { "x":5.25, "y":3 }, + { "x":6.25, "y":3 }, + { "x":7.25, "y":3 }, + { "x":8.25, "y":3 }, + { "x":9.25, "y":3 }, + { "x":10.25, "y":3 }, + { "x":11.25, "y":3 }, + { "x":12.25, "y":3, "w":1.75 }, + { "x":14, "y":3 }, + { "x":15, "y":3 }, + + { "x":0, "y":4, "w":1.25 }, + { "x":1.25, "y":4, "w":1.25 }, + { "x":2.5, "y":4, "w":1.25 }, + { "x":3.75, "y":4, "w":6.25 }, + { "x":10, "y":4 }, + { "x":11, "y":4 }, + { "x":12, "y":4 }, + { "x":13, "y":4 }, + { "x":14, "y":4 }, + { "x":15, "y":4 } + ] + }, + "LAYOUT_65_ansi": { + "layout": [ + { "x":0, "y":0 }, + { "x":1, "y":0 }, + { "x":2, "y":0 }, + { "x":3, "y":0 }, + { "x":4, "y":0 }, + { "x":5, "y":0 }, + { "x":6, "y":0 }, + { "x":7, "y":0 }, + { "x":8, "y":0 }, + { "x":9, "y":0 }, + { "x":10, "y":0 }, + { "x":11, "y":0 }, + { "x":12, "y":0 }, + { "x":13, "y":0, "w": 2 }, + { "x":15, "y":0 }, + + { "x":0, "y":1, "w":1.5 }, + { "x":1.5, "y":1 }, + { "x":2.5, "y":1 }, + { "x":3.5, "y":1 }, + { "x":4.5, "y":1 }, + { "x":5.5, "y":1 }, + { "x":6.5, "y":1 }, + { "x":7.5, "y":1 }, + { "x":8.5, "y":1 }, + { "x":9.5, "y":1 }, + { "x":10.5, "y":1 }, + { "x":11.5, "y":1 }, + { "x":12.5, "y":1 }, + { "x":13.5, "y":1, "w":1.5 }, + { "x":15, "y":1 }, + + { "x":0, "y":2, "w":1.75 }, + { "x":1.75, "y":2 }, + { "x":2.75, "y":2 }, + { "x":3.75, "y":2 }, + { "x":4.75, "y":2 }, + { "x":5.75, "y":2 }, + { "x":6.75, "y":2 }, + { "x":7.75, "y":2 }, + { "x":8.75, "y":2 }, + { "x":9.75, "y":2 }, + { "x":10.75, "y":2 }, + { "x":11.75, "y":2 }, + { "x":12.75, "y":2, "w":2.25 }, + { "x":15, "y":2 }, + + { "x":0, "y":3, "w":2.25 }, + { "x":2.25, "y":3 }, + { "x":3.25, "y":3 }, + { "x":4.25, "y":3 }, + { "x":5.25, "y":3 }, + { "x":6.25, "y":3 }, + { "x":7.25, "y":3 }, + { "x":8.25, "y":3 }, + { "x":9.25, "y":3 }, + { "x":10.25, "y":3 }, + { "x":11.25, "y":3 }, + { "x":12.25, "y":3, "w":1.75 }, + { "x":14, "y":3 }, + { "x":15, "y":3 }, + + { "x":0, "y":4, "w":1.25 }, + { "x":1.25, "y":4, "w":1.25 }, + { "x":2.5, "y":4, "w":1.25 }, + { "x":3.75, "y":4, "w":6.25 }, + { "x":10, "y":4 }, + { "x":11, "y":4 }, + { "x":12, "y":4 }, + { "x":13, "y":4 }, + { "x":14, "y":4 }, + { "x":15, "y":4 } + ] + }, + "LAYOUT_65_ansi_split_bs_2_right_mods": { + "layout": [ + { "x":0, "y":0 }, + { "x":1, "y":0 }, + { "x":2, "y":0 }, + { "x":3, "y":0 }, + { "x":4, "y":0 }, + { "x":5, "y":0 }, + { "x":6, "y":0 }, + { "x":7, "y":0 }, + { "x":8, "y":0 }, + { "x":9, "y":0 }, + { "x":10, "y":0 }, + { "x":11, "y":0 }, + { "x":12, "y":0 }, + { "x":13, "y":0 }, + { "x":14, "y":0 }, + { "x":15, "y":0 }, + + { "x":0, "y":1, "w":1.5 }, + { "x":1.5, "y":1 }, + { "x":2.5, "y":1 }, + { "x":3.5, "y":1 }, + { "x":4.5, "y":1 }, + { "x":5.5, "y":1 }, + { "x":6.5, "y":1 }, + { "x":7.5, "y":1 }, + { "x":8.5, "y":1 }, + { "x":9.5, "y":1 }, + { "x":10.5, "y":1 }, + { "x":11.5, "y":1 }, + { "x":12.5, "y":1 }, + { "x":13.5, "y":1, "w":1.5 }, + { "x":15, "y":1 }, + + { "x":0, "y":2, "w":1.75 }, + { "x":1.75, "y":2 }, + { "x":2.75, "y":2 }, + { "x":3.75, "y":2 }, + { "x":4.75, "y":2 }, + { "x":5.75, "y":2 }, + { "x":6.75, "y":2 }, + { "x":7.75, "y":2 }, + { "x":8.75, "y":2 }, + { "x":9.75, "y":2 }, + { "x":10.75, "y":2 }, + { "x":11.75, "y":2 }, + { "x":12.75, "y":2, "w":2.25 }, + { "x":15, "y":2 }, + + { "x":0, "y":3, "w":2.25 }, + { "x":2.25, "y":3 }, + { "x":3.25, "y":3 }, + { "x":4.25, "y":3 }, + { "x":5.25, "y":3 }, + { "x":6.25, "y":3 }, + { "x":7.25, "y":3 }, + { "x":8.25, "y":3 }, + { "x":9.25, "y":3 }, + { "x":10.25, "y":3 }, + { "x":11.25, "y":3 }, + { "x":12.25, "y":3, "w":1.75 }, + { "x":14, "y":3 }, + { "x":15, "y":3 }, + + { "x":0, "y":4, "w":1.25 }, + { "x":1.25, "y":4, "w":1.25 }, + { "x":2.5, "y":4, "w":1.25 }, + { "x":3.75, "y":4, "w":6.25 }, + { "x":10, "y":4, "w":1.5 }, + { "x":11.5, "y":4, "w":1.5 }, + { "x":13, "y":4 }, + { "x":14, "y":4 }, + { "x":15, "y":4 } + ] + }, + "LAYOUT_65_ansi_2_right_mods": { + "layout": [ + { "x":0, "y":0 }, + { "x":1, "y":0 }, + { "x":2, "y":0 }, + { "x":3, "y":0 }, + { "x":4, "y":0 }, + { "x":5, "y":0 }, + { "x":6, "y":0 }, + { "x":7, "y":0 }, + { "x":8, "y":0 }, + { "x":9, "y":0 }, + { "x":10, "y":0 }, + { "x":11, "y":0 }, + { "x":12, "y":0 }, + { "x":13, "y":0, "w": 2 }, + { "x":15, "y":0 }, + + { "x":0, "y":1, "w":1.5 }, + { "x":1.5, "y":1 }, + { "x":2.5, "y":1 }, + { "x":3.5, "y":1 }, + { "x":4.5, "y":1 }, + { "x":5.5, "y":1 }, + { "x":6.5, "y":1 }, + { "x":7.5, "y":1 }, + { "x":8.5, "y":1 }, + { "x":9.5, "y":1 }, + { "x":10.5, "y":1 }, + { "x":11.5, "y":1 }, + { "x":12.5, "y":1 }, + { "x":13.5, "y":1, "w":1.5 }, + { "x":15, "y":1 }, + + { "x":0, "y":2, "w":1.75 }, + { "x":1.75, "y":2 }, + { "x":2.75, "y":2 }, + { "x":3.75, "y":2 }, + { "x":4.75, "y":2 }, + { "x":5.75, "y":2 }, + { "x":6.75, "y":2 }, + { "x":7.75, "y":2 }, + { "x":8.75, "y":2 }, + { "x":9.75, "y":2 }, + { "x":10.75, "y":2 }, + { "x":11.75, "y":2 }, + { "x":12.75, "y":2, "w":2.25 }, + { "x":15, "y":2 }, + + { "x":0, "y":3, "w":2.25 }, + { "x":2.25, "y":3 }, + { "x":3.25, "y":3 }, + { "x":4.25, "y":3 }, + { "x":5.25, "y":3 }, + { "x":6.25, "y":3 }, + { "x":7.25, "y":3 }, + { "x":8.25, "y":3 }, + { "x":9.25, "y":3 }, + { "x":10.25, "y":3 }, + { "x":11.25, "y":3 }, + { "x":12.25, "y":3, "w":1.75 }, + { "x":14, "y":3 }, + { "x":15, "y":3 }, + + { "x":0, "y":4, "w":1.25 }, + { "x":1.25, "y":4, "w":1.25 }, + { "x":2.5, "y":4, "w":1.25 }, + { "x":3.75, "y":4, "w":6.25 }, + { "x":10, "y":4, "w":1.5 }, + { "x":11.5, "y":4, "w":1.5 }, + { "x":13, "y":4 }, + { "x":14, "y":4 }, + { "x":15, "y":4 } + ] + } + } +} diff --git a/keyboards/bakeneko65/keymaps/default/keymap.c b/keyboards/bakeneko65/rev2/keymaps/default/keymap.c similarity index 100% rename from keyboards/bakeneko65/keymaps/default/keymap.c rename to keyboards/bakeneko65/rev2/keymaps/default/keymap.c diff --git a/keyboards/bakeneko65/rev2/keymaps/default/readme.md b/keyboards/bakeneko65/rev2/keymaps/default/readme.md new file mode 100644 index 000000000000..71ad76773fd3 --- /dev/null +++ b/keyboards/bakeneko65/rev2/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for Bakeneko 65 V2 diff --git a/keyboards/bakeneko65/keymaps/via/keymap.c b/keyboards/bakeneko65/rev2/keymaps/via/keymap.c similarity index 100% rename from keyboards/bakeneko65/keymaps/via/keymap.c rename to keyboards/bakeneko65/rev2/keymaps/via/keymap.c diff --git a/keyboards/gmmk/pro/keymaps/via/rules.mk b/keyboards/bakeneko65/rev2/keymaps/via/rules.mk similarity index 100% rename from keyboards/gmmk/pro/keymaps/via/rules.mk rename to keyboards/bakeneko65/rev2/keymaps/via/rules.mk diff --git a/keyboards/bakeneko65/rev2/readme.md b/keyboards/bakeneko65/rev2/readme.md new file mode 100644 index 000000000000..8d2fa6bc58fb --- /dev/null +++ b/keyboards/bakeneko65/rev2/readme.md @@ -0,0 +1,17 @@ +# Bakeneko 65 V2 + +A simple 65% keyboard + +* Keyboard Maintainer: [kkatano](https://github.com/kkatano) +* Hardware Supported: Bakeneko 65 V2 +* Hardware Availability: [Open source on GitHub](https://github.com/kkatano/bakeneko-65) + +Make example for this keyboard (after setting up your build environment): + + make bakeneko65/rev2:default + +Flashing example for this keyboard: + + make bakeneko65/rev2:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/bakeneko65/rev2/rev2.c b/keyboards/bakeneko65/rev2/rev2.c new file mode 100644 index 000000000000..a4866507908c --- /dev/null +++ b/keyboards/bakeneko65/rev2/rev2.c @@ -0,0 +1,17 @@ +/* Copyright 2020 Koichi Katano + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "rev2.h" diff --git a/keyboards/bakeneko65/bakeneko65.h b/keyboards/bakeneko65/rev2/rev2.h similarity index 100% rename from keyboards/bakeneko65/bakeneko65.h rename to keyboards/bakeneko65/rev2/rev2.h diff --git a/keyboards/bakeneko65/rev2/rules.mk b/keyboards/bakeneko65/rev2/rules.mk new file mode 100644 index 000000000000..88f72e9c5185 --- /dev/null +++ b/keyboards/bakeneko65/rev2/rules.mk @@ -0,0 +1,21 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +LAYOUTS = 65_ansi diff --git a/keyboards/bakeneko65/rev3/config.h b/keyboards/bakeneko65/rev3/config.h new file mode 100644 index 000000000000..6001ce3159bc --- /dev/null +++ b/keyboards/bakeneko65/rev3/config.h @@ -0,0 +1,109 @@ +/* +Copyright 2020 Koichi Katano + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x3A0E +#define PRODUCT_ID 0x4C83 +#define DEVICE_VER 0x0001 +#define MANUFACTURER kkatano +#define PRODUCT Bakeneko 65 V3 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 16 + +/* + * 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 { E6, B7, F7, F4, F5 } +#define MATRIX_COL_PINS { F6, B0, F1, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, D1, D0 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/bakeneko65/rev3/info.json b/keyboards/bakeneko65/rev3/info.json new file mode 100644 index 000000000000..b54c21aafa98 --- /dev/null +++ b/keyboards/bakeneko65/rev3/info.json @@ -0,0 +1,10 @@ +{ + "keyboard_name": "Bakeneko 65 V3", + "url": "https://github.com/kkatano/bakeneko-65", + "maintainer": "kkatano", + "layouts": { + "LAYOUT_all": { + "layout": [{"x":0, "y":0.25}, {"x":1, "y":0.25}, {"x":2, "y":0.25}, {"x":3, "y":0.25}, {"x":4, "y":0.25}, {"x":5, "y":0.25}, {"x":6, "y":0.25}, {"x":7, "y":0.25}, {"x":8, "y":0.25}, {"x":9, "y":0.25}, {"x":10, "y":0.25}, {"x":11, "y":0.25}, {"x":12, "y":0.25}, {"x":13, "y":0.25}, {"x":14, "y":0.25}, {"x":15, "y":0.25}, {"x":0, "y":1.25, "w":1.5}, {"x":1.5, "y":1.25}, {"x":2.5, "y":1.25}, {"x":3.5, "y":1.25}, {"x":4.5, "y":1.25}, {"x":5.5, "y":1.25}, {"x":6.5, "y":1.25}, {"x":7.5, "y":1.25}, {"x":8.5, "y":1.25}, {"x":9.5, "y":1.25}, {"x":10.5, "y":1.25}, {"x":11.5, "y":1.25}, {"x":12.5, "y":1.25}, {"x":13.5, "y":1.25, "w":1.5}, {"x":15, "y":1.25}, {"x":0, "y":2.25, "w":1.75}, {"x":1.75, "y":2.25}, {"x":2.75, "y":2.25}, {"x":3.75, "y":2.25}, {"x":4.75, "y":2.25}, {"x":5.75, "y":2.25}, {"x":6.75, "y":2.25}, {"x":7.75, "y":2.25}, {"x":8.75, "y":2.25}, {"x":9.75, "y":2.25}, {"x":10.75, "y":2.25}, {"x":11.75, "y":2.25}, {"x":12.75, "y":2.25, "w":2.25}, {"x":15, "y":2.25}, {"x":0, "y":3.25, "w":2.25}, {"x":2.25, "y":3.25}, {"x":3.25, "y":3.25}, {"x":4.25, "y":3.25}, {"x":5.25, "y":3.25}, {"x":6.25, "y":3.25}, {"x":7.25, "y":3.25}, {"x":8.25, "y":3.25}, {"x":9.25, "y":3.25}, {"x":10.25, "y":3.25}, {"x":11.25, "y":3.25}, {"x":12.25, "y":3.25, "w":1.75}, {"x":14, "y":3.25}, {"x":15, "y":3.25}, {"x":0, "y":4.25, "w":1.25}, {"x":1.25, "y":4.25, "w":1.25}, {"x":2.5, "y":4.25, "w":1.25}, {"x":3.75, "y":4.25, "w":6.25}, {"x":10, "y":4.25, "w":1.25}, {"x":11.25, "y":4.25, "w":1.25}, {"x":13, "y":4.25}, {"x":14, "y":4.25}, {"x":15, "y":4.25}] + } + } +} diff --git a/keyboards/bakeneko65/rev3/keymaps/default/keymap.c b/keyboards/bakeneko65/rev3/keymaps/default/keymap.c new file mode 100644 index 000000000000..eb745e15ce5b --- /dev/null +++ b/keyboards/bakeneko65/rev3/keymaps/default/keymap.c @@ -0,0 +1,38 @@ +/* Copyright 2020 kkatano + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_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_BSLS, KC_GRV, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_END, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_LEFT, KC_DOWN, KC_RGHT + ), + [_FN] = LAYOUT_all( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_INS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_DEL, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/bakeneko65/rev3/keymaps/default/readme.md b/keyboards/bakeneko65/rev3/keymaps/default/readme.md new file mode 100644 index 000000000000..ecac9e3dffe3 --- /dev/null +++ b/keyboards/bakeneko65/rev3/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for Bakeneko 65 V3 diff --git a/keyboards/bakeneko65/rev3/keymaps/via/keymap.c b/keyboards/bakeneko65/rev3/keymaps/via/keymap.c new file mode 100644 index 000000000000..aed067bf1060 --- /dev/null +++ b/keyboards/bakeneko65/rev3/keymaps/via/keymap.c @@ -0,0 +1,54 @@ +/* Copyright 2020 kkatano + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layer_names { + _L0, + _L1, + _L2, + _L3 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_L0] = 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_BSLS, KC_GRV, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_END, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_L1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [_L1] = LAYOUT_all( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_INS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_DEL, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [_L2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [_L3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/jj4x4/keymaps/via/rules.mk b/keyboards/bakeneko65/rev3/keymaps/via/rules.mk similarity index 100% rename from keyboards/jj4x4/keymaps/via/rules.mk rename to keyboards/bakeneko65/rev3/keymaps/via/rules.mk diff --git a/keyboards/bakeneko65/rev3/readme.md b/keyboards/bakeneko65/rev3/readme.md new file mode 100644 index 000000000000..e147b11e6fd3 --- /dev/null +++ b/keyboards/bakeneko65/rev3/readme.md @@ -0,0 +1,17 @@ +# Bakeneko 65 V3 + +A simple 65% keyboard + +* Keyboard Maintainer: [kkatano](https://github.com/kkatano) +* Hardware Supported: Bakeneko 65 V3 +* Hardware Availability: [Open source on GitHub](https://github.com/kkatano/bakeneko-65) + +Make example for this keyboard (after setting up your build environment): + + make bakeneko65/rev3:default + +Flashing example for this keyboard: + + make bakeneko65/rev3:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/bakeneko65/rev3/rev3.c b/keyboards/bakeneko65/rev3/rev3.c new file mode 100644 index 000000000000..cf1084d495d3 --- /dev/null +++ b/keyboards/bakeneko65/rev3/rev3.c @@ -0,0 +1,17 @@ +/* Copyright 2020 Koichi Katano + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "rev3.h" diff --git a/keyboards/bakeneko65/rev3/rev3.h b/keyboards/bakeneko65/rev3/rev3.h new file mode 100644 index 000000000000..3e46097e394d --- /dev/null +++ b/keyboards/bakeneko65/rev3/rev3.h @@ -0,0 +1,33 @@ +/* Copyright 2020 Koichi Katano + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_all( \ + 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, k115, \ + k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k213, k215, \ + k300, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k315, \ + k400, k401, k402, k406, k409, k411, k412, k413, k415 \ +) { \ + { 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, KC_NO, k115 }, \ + { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, KC_NO, k213, KC_NO, k215 }, \ + { k300, KC_NO, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, KC_NO, k315 }, \ + { k400, k401, k402, KC_NO, KC_NO, KC_NO, k406, KC_NO, KC_NO, k409, KC_NO, k411, k412, k413, KC_NO, k415 } \ +} diff --git a/keyboards/bakeneko65/rev3/rules.mk b/keyboards/bakeneko65/rev3/rules.mk new file mode 100644 index 000000000000..d2109f62500b --- /dev/null +++ b/keyboards/bakeneko65/rev3/rules.mk @@ -0,0 +1,19 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/bakeneko65/rules.mk b/keyboards/bakeneko65/rules.mk deleted file mode 100644 index f8a290cad533..000000000000 --- a/keyboards/bakeneko65/rules.mk +++ /dev/null @@ -1,24 +0,0 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -BOOTLOADER = atmel-dfu - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth -AUDIO_ENABLE = no # Audio output - -LAYOUTS = 65_ansi diff --git a/keyboards/bakeneko80/config.h b/keyboards/bakeneko80/config.h index bda679f5c842..da330c395f79 100644 --- a/keyboards/bakeneko80/config.h +++ b/keyboards/bakeneko80/config.h @@ -121,59 +121,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -193,25 +140,6 @@ along with this program. If not, see . /* disable these deprecated features by default */ #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 diff --git a/keyboards/bakeneko80/info.json b/keyboards/bakeneko80/info.json index 4d6b44f05f8c..afd608a06fbe 100644 --- a/keyboards/bakeneko80/info.json +++ b/keyboards/bakeneko80/info.json @@ -2,12 +2,9 @@ "keyboard_name": "Bakeneko 80", "url": "https://github.com/kkatano/bakeneko-80-pcb", "maintainer": "Koichi Katano", - "width": 18.25, - "height": 6.25, "layouts": { "LAYOUT_tkl_ansi": { - "key_count": 87, "layout": [{"label":"1", "x":0, "y":0}, {"label":"2", "x":2, "y":0}, {"label":"3", "x":3, "y":0}, {"label":"4", "x":4, "y":0}, {"label":"5", "x":5, "y":0}, {"label":"6", "x":6.5, "y":0}, {"label":"7", "x":7.5, "y":0}, {"label":"8", "x":8.5, "y":0}, {"label":"9", "x":9.5, "y":0}, {"label":"10", "x":11, "y":0}, {"label":"11", "x":12, "y":0}, {"label":"12", "x":13, "y":0}, {"label":"13", "x":14, "y":0}, {"label":"14", "x":15.25, "y":0}, {"label":"15", "x":16.25, "y":0}, {"label":"16", "x":17.25, "y":0}, {"label":"17", "x":0, "y":1.25}, {"label":"18", "x":1, "y":1.25}, {"label":"19", "x":2, "y":1.25}, {"label":"20", "x":3, "y":1.25}, {"label":"21", "x":4, "y":1.25}, {"label":"22", "x":5, "y":1.25}, {"label":"23", "x":6, "y":1.25}, {"label":"24", "x":7, "y":1.25}, {"label":"25", "x":8, "y":1.25}, {"label":"26", "x":9, "y":1.25}, {"label":"27", "x":10, "y":1.25}, {"label":"28", "x":11, "y":1.25}, {"label":"29", "x":12, "y":1.25}, {"label":"30", "x":13, "y":1.25, "w":2}, {"label":"31", "x":15.25, "y":1.25}, {"label":"32", "x":16.25, "y":1.25}, {"label":"33", "x":17.25, "y":1.25}, {"label":"34", "x":0, "y":2.25, "w":1.5}, {"label":"35", "x":1.5, "y":2.25}, {"label":"36", "x":2.5, "y":2.25}, {"label":"37", "x":3.5, "y":2.25}, {"label":"38", "x":4.5, "y":2.25}, {"label":"39", "x":5.5, "y":2.25}, {"label":"40", "x":6.5, "y":2.25}, {"label":"41", "x":7.5, "y":2.25}, {"label":"42", "x":8.5, "y":2.25}, {"label":"43", "x":9.5, "y":2.25}, {"label":"44", "x":10.5, "y":2.25}, {"label":"45", "x":11.5, "y":2.25}, {"label":"46", "x":12.5, "y":2.25}, {"label":"47", "x":13.5, "y":2.25, "w":1.5}, {"label":"48", "x":15.25, "y":2.25}, {"label":"49", "x":16.25, "y":2.25}, {"label":"50", "x":17.25, "y":2.25}, {"label":"51", "x":0, "y":3.25, "w":1.75}, {"label":"52", "x":1.75, "y":3.25}, {"label":"53", "x":2.75, "y":3.25}, {"label":"54", "x":3.75, "y":3.25}, {"label":"55", "x":4.75, "y":3.25}, {"label":"56", "x":5.75, "y":3.25}, {"label":"57", "x":6.75, "y":3.25}, {"label":"58", "x":7.75, "y":3.25}, {"label":"59", "x":8.75, "y":3.25}, {"label":"60", "x":9.75, "y":3.25}, {"label":"61", "x":10.75, "y":3.25}, {"label":"62", "x":11.75, "y":3.25}, {"label":"63", "x":12.75, "y":3.25, "w":2.25}, {"label":"64", "x":0, "y":4.25, "w":2.25}, {"label":"65", "x":2.25, "y":4.25}, {"label":"66", "x":3.25, "y":4.25}, {"label":"67", "x":4.25, "y":4.25}, {"label":"68", "x":5.25, "y":4.25}, {"label":"69", "x":6.25, "y":4.25}, {"label":"70", "x":7.25, "y":4.25}, {"label":"71", "x":8.25, "y":4.25}, {"label":"72", "x":9.25, "y":4.25}, {"label":"73", "x":10.25, "y":4.25}, {"label":"74", "x":11.25, "y":4.25}, {"label":"75", "x":12.25, "y":4.25, "w":2.75}, {"label":"76", "x":16.25, "y":4.25}, {"label":"77", "x":0, "y":5.25, "w":1.25}, {"label":"78", "x":1.25, "y":5.25, "w":1.25}, {"label":"79", "x":2.5, "y":5.25, "w":1.25}, {"label":"80", "x":3.75, "y":5.25, "w":6.25}, {"label":"81", "x":10, "y":5.25, "w":1.25}, {"label":"82", "x":11.25, "y":5.25, "w":1.25}, {"label":"83", "x":12.5, "y":5.25, "w":1.25}, {"label":"84", "x":13.75, "y":5.25, "w":1.25}, {"label":"85", "x":15.25, "y":5.25}, {"label":"86", "x":16.25, "y":5.25}, {"label":"87", "x":17.25, "y":5.25}] } } -} \ No newline at end of file +} diff --git a/keyboards/bakeneko80/rules.mk b/keyboards/bakeneko80/rules.mk index 653fcdb380b5..4c93938dcf56 100644 --- a/keyboards/bakeneko80/rules.mk +++ b/keyboards/bakeneko80/rules.mk @@ -2,31 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = tkl_ansi diff --git a/keyboards/bandominedoni/bandominedoni.c b/keyboards/bandominedoni/bandominedoni.c new file mode 100644 index 000000000000..1b0365ac6aca --- /dev/null +++ b/keyboards/bandominedoni/bandominedoni.c @@ -0,0 +1,151 @@ +/* Copyright 2021 3araht + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "bandominedoni.h" + +#ifdef RGB_MATRIX_ENABLE + +led_config_t g_led_config = { + { + { 75, 46, 45, 44, 43, 42, NO_LED }, \ + { 47, 48, 49, 50, 51, 52, 53 }, \ + { 60, 59, 58, 57, 56, 55, 54 }, \ + { 61, 62, 63, 64, 65, 66, 67 }, \ + { 74, 73, 72, 71, 70, 69, 68 }, \ + { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }, \ + { 7, 6, 4, 3, 2, 1, 5}, \ + { 8, 9, 10, 11, 12, 13, 0 }, \ + { 19, 18, 17, 16, 15, 14, 41 }, \ + { 20, 21, 22, 23, 24, 25, 40 }, \ + { 30, 29, 28, 27, 26, 39, 38 }, \ + { 31, 32, 33, 34, 35, 36, 37 } + }, { + { 145, 6 }, { 157, 5 }, { 153, 14 }, { 149, 22 }, { 145, 32 }, { 136, 35 }, { 139, 48 }, { 134, 61 }, + { 142, 60 }, { 148, 43 }, { 154, 29 }, { 158, 20 }, { 163, 12 }, { 168, 4 }, + { 178, 5 }, { 173, 12 }, { 168, 20 }, { 163, 28 }, { 157, 40 }, { 151, 55 }, + { 160, 52 }, { 166, 39 }, { 172, 28 }, { 177, 20 }, { 182, 13 }, { 188, 7 }, + { 192, 17 }, { 186, 23 }, { 181, 30 }, { 175, 39 }, { 169, 50 }, + { 178, 51 }, { 184, 41 }, { 190, 33 }, { 196, 27 }, + { 199, 37 }, { 193, 45 }, { 187, 53 }, + { 196, 56 }, { 202, 49 }, + { 205, 61 }, + { 202, 4 }, + { 84, 18 }, { 73, 13 }, { 62, 10 }, { 51, 8 }, { 39, 11 }, { 24, 22 }, + { 34, 19 }, { 45, 16 }, { 56, 16 }, { 66, 18 }, { 77, 22 }, { 87, 28 }, + { 92, 40 }, { 81, 32 }, { 71, 27 }, { 61, 24 }, { 51, 24 }, { 41, 24 }, { 30, 28 }, + { 24, 42 }, { 34, 37 }, { 44, 35 }, { 54, 34 }, { 64, 36 }, { 74, 38 }, { 84, 44 }, + { 87, 54 }, { 77, 49 }, { 67, 47 }, { 57, 45 }, { 47, 45 }, { 37, 48 }, { 27, 52 }, { 19, 56 }, + }, { + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, + 4, 4, 4, 4, + 4, 4, 4, + 4, 4, + 4, + 4, + 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4 + } +}; +#endif + +#if defined(SPLIT_HAND_MATRIX_GRID) +static uint8_t peek_matrix_intersection(pin_t out_pin, pin_t in_pin) { + setPinInputHigh(in_pin); + setPinOutput(out_pin); + writePinLow(out_pin); + // It's almost unnecessary, but wait until it's down to low, just in case. + wait_us(1); + uint8_t pin_state = readPin(in_pin); + // Set out_pin to a setting that is less susceptible to noise. + setPinInputHigh(out_pin); + matrix_io_delay(); // Wait for the pull-up to go HIGH. + return pin_state; +} +#endif + +// Overriding is_keyboard_left() in qmk_firmware/quantum/split_common/split_util.c to limit the handedness check only once. +// reason: bandoMIneDonI has no space on right hand side to use "SPLIT_HAND_MATRIX_GRID". +// However, It enables to decide the handedness by the HW by adding one condition: "not to press any keys (especially r30) dusing startup." +bool is_keyboard_left(void) { +static enum { UNKNOWN, LEFT, RIGHT } hand_side = UNKNOWN; + + // only check once, as this is called often + if (hand_side == UNKNOWN) { +#if defined(SPLIT_HAND_PIN) + // Test pin SPLIT_HAND_PIN for High/Low, if low it's right hand + setPinInput(SPLIT_HAND_PIN); + hand_side = readPin(SPLIT_HAND_PIN) ? LEFT : RIGHT; + return (hand_side == LEFT); +#elif defined(SPLIT_HAND_MATRIX_GRID) +# ifdef SPLIT_HAND_MATRIX_GRID_LOW_IS_RIGHT + hand_side = peek_matrix_intersection(SPLIT_HAND_MATRIX_GRID) ? LEFT : RIGHT; + return (hand_side == LEFT); +# else + hand_side = peek_matrix_intersection(SPLIT_HAND_MATRIX_GRID) ? RIGHT : LEFT; + return (hand_side == LEFT); +# endif +#elif defined(EE_HANDS) + hand_side = eeconfig_read_handedness() ? LEFT : RIGHT; + return (hand_side == LEFT); +#elif defined(MASTER_RIGHT) + hand_side = !is_keyboard_master() ? LEFT : RIGHT; + return (hand_side == LEFT); +#endif + hand_side = is_keyboard_master() ? LEFT : RIGHT; + return (hand_side == LEFT); + } else { + return (hand_side == LEFT); + } +} + +#ifdef ENCODER_ENABLE +const uint16_t rt_matrix[2][2] = { + {5, 5}, {5, 6} +}; + +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (index == 1) { /* An encoder on the right side */ + keypos_t key; + int cw = 0; + cw = clockwise ? 1 : 0; + key.row = rt_matrix[cw][0]; + key.col = rt_matrix[cw][1]; + uint8_t layer = layer_switch_get_layer(key); + uint16_t keycode = keymap_key_to_keycode(layer, key); + keyrecord_t record; + record.event.key = key; + + if (keycode < MI_ON){ + tap_code16(keycode); + } else { + record.event.pressed = true; + process_midi(keycode, &record); + wait_ms(TAP_CODE_DELAY); + record.event.pressed = false; + process_midi(keycode, &record); + } + + } + return true; +} +#endif // ENCODER_ENABLE diff --git a/keyboards/bandominedoni/bandominedoni.h b/keyboards/bandominedoni/bandominedoni.h new file mode 100644 index 000000000000..8e2470826c6a --- /dev/null +++ b/keyboards/bandominedoni/bandominedoni.h @@ -0,0 +1,84 @@ +/* Copyright 2021 3araht + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + +// oc: for Open Close selection pedal +// fn: function layer + +#define LAYOUT( \ + l00, l01, l02, l03, l04, \ + 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, l47, \ + \ + oc, r00, r01, r02, r03, fn, \ + r10, r11, r12, r13, r14, ccw, cw,\ + r20, r21, r22, r23, r24, r25, \ + r30, r31, r32, r33, r34, r35, r36, r37, \ + r40, r41, r42, r43, r44, r45, r46, r47, \ + r50, r51, r52, r53, r54, r55, r56, r57, r58 \ +) { \ + { l40, l00, l01, l02, l03, l04, KC_NO }, \ + { l10, l11, l12, l13, l14, l15, l16 }, \ + { l20, l21, l22, l23, l24, l25, l26 }, \ + { l30, l31, l32, l33, l34, l35, l36 }, \ + { l41, l42, l43, l44, l45, l46, l47 }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, ccw, cw }, \ + { r50, r40, r31, r20, r10, r00, r30 }, \ + { r51, r41, r32, r21, r11, r01, oc }, \ + { r52, r42, r33, r22, r12, r02, fn }, \ + { r53, r43, r34, r23, r13, r03, r58 }, \ + { r54, r44, r35, r24, r14, r47, r57 }, \ + { r55, r45, r36, r25, r37, r46, r56 } \ +} + +// Uncomment below if a pedal used for Open/Close is normally-on type (such as Yamaha's.) +// #define PEDAL_NORMALLY_CLOSED + +#ifdef PEDAL_NORMALLY_CLOSED +# define MO_SWAP MO(_OPEN) +# define DF_SWAP DF(_CLOSE) +# define TG_SWAP TG(_OPEN) +#else +# define MO_SWAP MO(_CLOSE) +# define DF_SWAP DF(_OPEN) +# define TG_SWAP TG(_CLOSE) +#endif + +// Long press: go to _FN layer, tap: MUTE +#define FN_MUTE LT(_FN, KC_MUTE) +#define DF_QWER DF(_QWERTY) +#define MIS_EIS LT(_MISC,KC_LANG2) +#define MIS_KAN LT(_MISC,KC_LANG1) + + +// Overriding is_keyboard_left() in qmk_firmware/quantum/split_common/split_util.c to limit the handedness check only once. +// reason: bandoMIneDonI has no space on right hand side to use "SPLIT_HAND_MATRIX_GRID". +// However, It enables to decide the handedness by the HW by adding one condition: "not to press any keys (especially r30) dusing startup." +bool is_keyboard_left(void); diff --git a/keyboards/bandominedoni/config.h b/keyboards/bandominedoni/config.h new file mode 100644 index 000000000000..629c6af884bb --- /dev/null +++ b/keyboards/bandominedoni/config.h @@ -0,0 +1,333 @@ +/* Copyright 2021 3araht + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0xF4B5 +#define DEVICE_VER 0x0001 +#define MANUFACTURER 3araht +#define PRODUCT bandominedoni + +/* key matrix size */ +#define MATRIX_ROWS 12 +#define MATRIX_COLS 7 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS { B5, B4, D7, F6, C6, D4 } +#define MATRIX_COL_PINS { D1, E6, F7, B1, B3, B2, D0 } +#define UNUSED_PINS + +#define MASTER_RIGHT +#ifndef MASTER_RIGHT +// SPLIT_HAND_MATRIX_GRID was initially designed to use with left hand side diode D35 mounted and not pressing K7 on the right hand side during boot. However when a USB cable is reconnected immediately, it fails. Decided to use "MASTER_RIGHT" to make it more reliable. +# define SPLIT_HAND_MATRIX_GRID B5, D0 +#endif + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +#define SOFT_SERIAL_PIN D2 // or D1, D2, D3, E6 + +//#define LED_NUM_LOCK_PIN B0 +//#define LED_CAPS_LOCK_PIN B1 +//#define LED_SCROLL_LOCK_PIN B2 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +#define RGB_DI_PIN D3 +//#ifdef RGB_DI_PIN +//# define RGBLED_NUM 16 +//# define RGBLIGHT_HUE_STEP 8 +//# define RGBLIGHT_SAT_STEP 8 +//# define RGBLIGHT_VAL_STEP 8 +//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +//# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +//#endif + +#ifdef RGB_MATRIX_ENABLE + +/* ws2812 RGB MATRIX */ +# define DRIVER_LED_TOTAL 76 + + // reacts to keypresses +# define RGB_MATRIX_KEYPRESSES + +// for all fingers used at once. +# define LED_HITS_TO_REMEMBER 10 + +# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 50 +# define RGB_MATRIX_STARTUP_SPD 127 +// the above brighness setting has no effect on rgb_matrix_set_color(). +// Use darker colors instead. +/* RGB darker COLORS */ +# define RGB_DARKWHITE 0x33, 0x33, 0x33 +# define RGB_DARKRED 0x33, 0x0, 0x0 +# define RGB_DARKCORAL 0x33, 0x18, 0xF +# define RGB_DARKORANGE 0x33, 0x19, 0x0 +# define RGB_DARKGOLDENROD 0x2B, 0x21, 0x6 +# define RGB_DARKGOLD 0x33, 0x2B, 0x0 +# define RGB_DARKYELLOW 0x33, 0x33, 0x0 +# define RGB_DARKCHARTREUSE 0x19, 0x33, 0x0 +# define RGB_DARKGREEN 0x0, 0x33, 0x0 +# define RGB_DARKSPRINGGREEN 0x0, 0x33, 0x19 +# define RGB_DARKTURQUOISE 0xE, 0x16, 0x15 +# define RGB_DARKTEAL 0x0, 0x19, 0x19 +# define RGB_DARKCYAN 0x0, 0x33, 0x33 +# define RGB_DARKAZURE 0x1E, 0x31, 0x33 +# define RGB_DARKBLUE 0x0, 0x0, 0x33 +# define RGB_DARKPURPLE 0x18, 0x0, 0x33 +# define RGB_DARKMAGENTA 0x33, 0x0, 0x33 +# define RGB_DARKPINK 0x33, 0x19, 0x26 + +// https://docs.qmk.fm/#/feature_rgb_matrix +// Enable suspend mode. +# define RGB_DISABLE_WHEN_USB_SUSPENDED true + +// // enable below to shrink the firmware size ( -1974 bytes ) +// # define REDUCE_RGB_MATRIX_EFFECTS + +// enable below to shrink the firmware size ( -1574 bytes ) +// # define REDUCE_RGB_MATRIX_EFFECTS_2 + +// # ifdef AUDIO_ENABLE +# ifdef CONSOLE_ENABLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# else +// #define ENABLE_RGB_MATRIX_ALPHAS_MODS +// #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +// #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +// #define ENABLE_RGB_MATRIX_BREATHING +// #define ENABLE_RGB_MATRIX_BAND_SAT +// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +// #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +// #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +// #define ENABLE_RGB_MATRIX_RAINDROPS +// #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_FRACTAL +# define ENABLE_RGB_MATRIX_PIXEL_RAIN + +# if !defined(REDUCE_RGB_MATRIX_EFFECTS) && !defined(VIA_ENABLE) +// # ifdef REDUCE_RGB_MATRIX_EFFECTS +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# endif + +// #define ENABLE_RGB_MATRIX_HUE_BREATHING +// #define ENABLE_RGB_MATRIX_HUE_PENDULUM +// #define ENABLE_RGB_MATRIX_HUE_WAVE +// #define ENABLE_RGB_MATRIX_FRACTAL +// #define ENABLE_RGB_MATRIX_PIXEL_RAIN +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS + +# if !defined(REDUCE_RGB_MATRIX_EFFECTS_2) && !defined(VIA_ENABLE) +// # ifdef REDUCE_RGB_MATRIX_EFFECTS_2 +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + +# endif +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +// #define ENABLE_RGB_MATRIX_SPLASH +// #define ENABLE_RGB_MATRIX_SOLID_SPLASH +# endif // AUDIO_ENABLE + +// #define ENABLE_RGB_MATRIX_ALPHAS_MODS +// #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +// #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +// #define ENABLE_RGB_MATRIX_BREATHING +// #define ENABLE_RGB_MATRIX_BAND_SAT +// #define ENABLE_RGB_MATRIX_BAND_VAL +// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +// #define ENABLE_RGB_MATRIX_CYCLE_ALL +// #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +// #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +// #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +// #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +// #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +// #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +// #define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +// #define ENABLE_RGB_MATRIX_DUAL_BEACON +// #define ENABLE_RGB_MATRIX_RAINBOW_BEACON +// #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +// #define ENABLE_RGB_MATRIX_RAINDROPS +// #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +// #define ENABLE_RGB_MATRIX_HUE_BREATHING +// #define ENABLE_RGB_MATRIX_HUE_PENDULUM +// #define ENABLE_RGB_MATRIX_HUE_WAVE +// #define ENABLE_RGB_MATRIX_FRACTAL +// #define ENABLE_RGB_MATRIX_PIXEL_RAIN + +// #define ENABLE_RGB_MATRIX_TYPING_HEATMAP +// #define ENABLE_RGB_MATRIX_DIGITAL_RAIN + +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// #define ENABLE_RGB_MATRIX_SPLASH +// #define ENABLE_RGB_MATRIX_MULTISPLASH +// #define ENABLE_RGB_MATRIX_SOLID_SPLASH +// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + +#endif // RGB_MATRIX_ENABLE + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +// #define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +// #define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* 2021/01/22 added to shrink firmware size */ +// NO_ACTION_TAPPING -1964 bytes, however, this disables Layer mods... +// #define NO_ACTION_TAPPING +// NO_ACTION_ONESHOT -388 bytes +#define NO_ACTION_ONESHOT + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 + +#ifdef MIDI_ENABLE +# define MIDI_ADVANCED +// Initial velocity value (avoid using 127 since it is used as a special number in some sound sources.) +# define MIDI_INITIAL_VELOCITY 117 +#endif // MIDI_ENABLE + +/* + * Encoder options + */ +#ifdef ENCODER_ENABLE +# define ENCODERS_PAD_A { C7 } // dummy +# define ENCODERS_PAD_B { B7 } // dummy +# define ENCODERS_PAD_A_RIGHT { F5 } +# define ENCODERS_PAD_B_RIGHT { F4 } +# define ENCODER_RESOLUTION 4 +# define TAP_CODE_DELAY 10 +#endif // ENCODER_ENABLE diff --git a/keyboards/bandominedoni/info.json b/keyboards/bandominedoni/info.json new file mode 100644 index 000000000000..82fcc559c988 --- /dev/null +++ b/keyboards/bandominedoni/info.json @@ -0,0 +1,102 @@ +{ + "keyboard_name": "bandominedoni", + "url": "https://github.com/3araht", + "maintainer": "3araht", + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "l00", "x": 2, "y": 0.5}, + {"label": "l01", "x": 3, "y": 0.5}, + {"label": "l02", "x": 4, "y": 0.5}, + {"label": "l03", "x": 5, "y": 0.5}, + {"label": "l04", "x": 6, "y": 0.5}, + + {"label": "l10", "x": 0.5, "y": 1.5}, + {"label": "l11", "x": 1.5, "y": 1.5}, + {"label": "l12", "x": 2.5, "y": 1.5}, + {"label": "l13", "x": 3.5, "y": 1.5}, + {"label": "l14", "x": 4.5, "y": 1.5}, + {"label": "l15", "x": 5.5, "y": 1.5}, + {"label": "l16", "x": 6.5, "y": 1.5}, + + {"label": "l20", "x": 1, "y": 2.5}, + {"label": "l21", "x": 2, "y": 2.5}, + {"label": "l22", "x": 3, "y": 2.5}, + {"label": "l23", "x": 4, "y": 2.5}, + {"label": "l24", "x": 5, "y": 2.5}, + {"label": "l25", "x": 6, "y": 2.5}, + {"label": "l26", "x": 7, "y": 2.5}, + + {"label": "l30", "x": 0.5, "y": 3.5}, + {"label": "l31", "x": 1.5, "y": 3.5}, + {"label": "l32", "x": 2.5, "y": 3.5}, + {"label": "l33", "x": 3.5, "y": 3.5}, + {"label": "l34", "x": 4.5, "y": 3.5}, + {"label": "l35", "x": 5.5, "y": 3.5}, + {"label": "l36", "x": 6.5, "y": 3.5}, + + {"label": "l40", "x": 0, "y": 4.5}, + {"label": "l41", "x": 1, "y": 4.5}, + {"label": "l42", "x": 2, "y": 4.5}, + {"label": "l43", "x": 3, "y": 4.5}, + {"label": "l44", "x": 4, "y": 4.5}, + {"label": "l45", "x": 5, "y": 4.5}, + {"label": "l46", "x": 6, "y": 4.5}, + {"label": "l47", "x": 7, "y": 4.5}, + + {"label": "oc", "x": 9, "y": 0}, + + {"label": "r00", "x": 11.5, "y": 0}, + {"label": "r01", "x": 12.5, "y": 0}, + {"label": "r02", "x": 13.5, "y": 0}, + {"label": "r03", "x": 14.5, "y": 0}, + + {"label": "fn", "x": 17, "y": 0}, + + {"label": "r10", "x": 11, "y": 1}, + {"label": "r11", "x": 12, "y": 1}, + {"label": "r12", "x": 13, "y": 1}, + {"label": "r13", "x": 14, "y": 1}, + {"label": "r14", "x": 15, "y": 1}, + + {"label": "ccw", "x": 16.5, "y": 1}, + {"label": "cw", "x": 17.5, "y": 1}, + + {"label": "r20", "x": 10.5, "y": 2}, + {"label": "r21", "x": 11.5, "y": 2}, + {"label": "r22", "x": 12.5, "y": 2}, + {"label": "r23", "x": 13.5, "y": 2}, + {"label": "r24", "x": 14.5, "y": 2}, + {"label": "r25", "x": 15.5, "y": 2}, + + {"label": "r30", "x": 9, "y": 3}, + {"label": "r31", "x": 10, "y": 3}, + {"label": "r32", "x": 11, "y": 3}, + {"label": "r33", "x": 12, "y": 3}, + {"label": "r34", "x": 13, "y": 3}, + {"label": "r35", "x": 14, "y": 3}, + {"label": "r36", "x": 15, "y": 3}, + {"label": "r37", "x": 16, "y": 3}, + + {"label": "r40", "x": 9.5, "y": 4}, + {"label": "r41", "x": 10.5, "y": 4}, + {"label": "r42", "x": 11.5, "y": 4}, + {"label": "r43", "x": 12.5, "y": 4}, + {"label": "r44", "x": 13.5, "y": 4}, + {"label": "r45", "x": 14.5, "y": 4}, + {"label": "r46", "x": 15.5, "y": 4}, + {"label": "r47", "x": 16.5, "y": 4}, + + {"label": "r50", "x": 9, "y": 5}, + {"label": "r51", "x": 10, "y": 5}, + {"label": "r52", "x": 11, "y": 5}, + {"label": "r53", "x": 12, "y": 5}, + {"label": "r54", "x": 13, "y": 5}, + {"label": "r55", "x": 14, "y": 5}, + {"label": "r56", "x": 15, "y": 5}, + {"label": "r57", "x": 16, "y": 5}, + {"label": "r58", "x": 17, "y": 5} + ] + } + } +} diff --git a/keyboards/bandominedoni/keymaps/default/keymap.c b/keyboards/bandominedoni/keymaps/default/keymap.c new file mode 100644 index 000000000000..bfa49dfe1773 --- /dev/null +++ b/keyboards/bandominedoni/keymaps/default/keymap.c @@ -0,0 +1,84 @@ +/* Copyright 2021 3araht + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { +#ifndef PEDAL_NORMALLY_CLOSED + _OPEN, +#endif + _CLOSE, +#ifdef PEDAL_NORMALLY_CLOSED + _OPEN, +#endif + _FN +}; + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_OPEN] = LAYOUT( + MI_Gs_1, MI_As_1, MI_Cs_2, MI_F_2, MI_Gs_3, + MI_E_1, MI_A_1, MI_G_2, MI_Ds_2, MI_F_3, MI_As_2, MI_F_1, + MI_D_2, MI_A_2, MI_C_3, MI_E_3, MI_C_2, MI_G_1, TG_SWAP, + MI_E_2, MI_Gs_2, MI_B_2, MI_D_3, MI_Fs_3, MI_Cs_3, MI_Fs_1, + MI_D_1, MI_B_1, MI_G_3, MI_A_3, MI_Ds_3, MI_Fs_2, MI_Ds_1, MI_C_1, + + MO_SWAP, MI_B_5, MI_Gs_5, MI_G_5, MI_F_5, FN_MUTE, + MI_Cs_3, MI_A_5, MI_Fs_5, MI_E_5, MI_Ds_5, KC_VOLD, KC_VOLU, + MI_C_3, MI_D_3, MI_G_3, MI_As_4, MI_C_5, MI_D_5, + TG_SWAP, MI_B_2, MI_E_3, MI_Cs_4, MI_Fs_3, MI_A_3, MI_C_4, MI_E_4, + MI_A_2, MI_F_3, MI_As_3, MI_Gs_3, MI_B_3, MI_D_4, MI_Gs_4, MI_B_4, + MI_Gs_2, MI_As_2, MI_Ds_3, MI_F_4, MI_Ds_4, MI_Fs_4, MI_A_4, MI_Cs_5, MI_G_4 + ), + + [_CLOSE] = LAYOUT( + MI_Gs_1, MI_As_1, MI_Ds_2, MI_Ds_3, MI_G_3, + MI_D_1, MI_D_2, MI_As_2, MI_C_3, MI_Cs_2, MI_C_2, MI_Fs_1, + MI_G_1, MI_G_2, MI_B_2, MI_D_3, MI_F_3, MI_Fs_2, TG_SWAP, + MI_A_1, MI_E_2, MI_A_2, MI_Cs_3, MI_E_3, MI_Gs_2, MI_B_1, + MI_E_1, MI_E_2, MI_Fs_3, MI_Gs_3, MI_B_3, MI_F_2, MI_Cs_1, MI_F_1, + + MO_SWAP, MI_A_5, MI_Gs_5, MI_Fs_5, MI_F_5, FN_MUTE, + MI_C_3, MI_G_5, MI_As_4, MI_C_5, MI_Ds_5, KC_VOLD, KC_VOLU, + MI_D_3, MI_Cs_3, MI_Gs_3, MI_As_3, MI_C_4, MI_D_5, + TG_SWAP, MI_B_2, MI_Fs_3, MI_Fs_4, MI_G_3, MI_B_3, MI_D_4, MI_G_4, + MI_A_2, MI_F_3, MI_E_3, MI_A_3, MI_Cs_4, MI_E_4, MI_A_4, MI_Cs_5, + MI_Gs_2, MI_As_2, MI_Ds_3, MI_F_4, MI_E_4, MI_Gs_4, MI_B_4, MI_E_5, MI_Ds_4 + ), + + [_FN] = LAYOUT( + DF_SWAP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + + _______, MI_OCTD, MI_OCTU, MI_VELD, MI_VELU, _______, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + ) +}; + +void keyboard_post_init_user(void) { + // Set octave to MI_OCT_0 + midi_config.octave = MI_OCT_0 - MIDI_OCTAVE_MIN; + + // avoid using 127 since it is used as a special number in some sound sources. + midi_config.velocity = MIDI_INITIAL_VELOCITY; +}; diff --git a/keyboards/bandominedoni/keymaps/default/readme.md b/keyboards/bandominedoni/keymaps/default/readme.md new file mode 100644 index 000000000000..e6ec2ad10d52 --- /dev/null +++ b/keyboards/bandominedoni/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for bandominedoni diff --git a/keyboards/bandominedoni/keymaps/led/keymap.c b/keyboards/bandominedoni/keymaps/led/keymap.c new file mode 100644 index 000000000000..7693557df3ca --- /dev/null +++ b/keyboards/bandominedoni/keymaps/led/keymap.c @@ -0,0 +1,221 @@ +/* Copyright 2021 3araht + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +#define DF_COLE DF(_COLEMAK) + +#define _________________QWERTY_L1_________________ KC_Q, KC_W, KC_E, KC_R, KC_T +#define _________________QWERTY_L2_________________ KC_A, KC_S, KC_D, KC_F, KC_G +#define _________________QWERTY_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B + +#define _________________QWERTY_R1_________________ KC_Y, KC_U, KC_I, KC_O, KC_P +#define _________________QWERTY_R2_________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN +#define _________________QWERTY_R3_________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH + +#define _________________COLEMAK_L1________________ KC_Q, KC_W, KC_F, KC_P, KC_G +#define _________________COLEMAK_L2________________ KC_A, KC_R, KC_S, KC_T, KC_D +#define _________________COLEMAK_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_B + +#define _________________COLEMAK_R1________________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN +#define _________________COLEMAK_R2________________ KC_H, KC_N, KC_E, KC_I, KC_O +#define _________________COLEMAK_R3________________ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH + +#define _________________NUMBER_L__________________ KC_1, KC_2, KC_3, KC_4, KC_5 +// #define _________________NUMBER_R__________________ KC_6, KC_7, KC_8, KC_9, KC_0 + +#define _________________FUNC__L___________________ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5 +// #define _________________FUNC__R___________________ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10 + +// Defines names for use in layer keycodes and the keymap +enum layer_names { +#ifndef PEDAL_NORMALLY_CLOSED + _OPEN, +#endif + _CLOSE, +#ifdef PEDAL_NORMALLY_CLOSED + _OPEN, +#endif + _QWERTY, + _COLEMAK, + _MISC, + _FN +}; + +// Alias layout macros that expand groups of keys. +#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_OPEN] = LAYOUT( + MI_Gs_1, MI_As_1, MI_Cs_2, MI_F_2, MI_Gs_3, + MI_E_1, MI_A_1, MI_G_2, MI_Ds_2, MI_F_3, MI_As_2, MI_F_1, + MI_D_2, MI_A_2, MI_C_3, MI_E_3, MI_C_2, MI_G_1, TG_SWAP, + MI_E_2, MI_Gs_2, MI_B_2, MI_D_3, MI_Fs_3, MI_Cs_3, MI_Fs_1, + MI_D_1, MI_B_1, MI_G_3, MI_A_3, MI_Ds_3, MI_Fs_2, MI_Ds_1, MI_C_1, + + MO_SWAP, MI_B_5, MI_Gs_5, MI_G_5, MI_F_5, FN_MUTE, + MI_Cs_3, MI_A_5, MI_Fs_5, MI_E_5, MI_Ds_5, KC_VOLD, KC_VOLU, + MI_C_3, MI_D_3, MI_G_3, MI_As_4, MI_C_5, MI_D_5, + TG_SWAP, MI_B_2, MI_E_3, MI_Cs_4, MI_Fs_3, MI_A_3, MI_C_4, MI_E_4, + MI_A_2, MI_F_3, MI_As_3, MI_Gs_3, MI_B_3, MI_D_4, MI_Gs_4, MI_B_4, + MI_Gs_2, MI_As_2, MI_Ds_3, MI_F_4, MI_Ds_4, MI_Fs_4, MI_A_4, MI_Cs_5, MI_G_4 + ), + + [_CLOSE] = LAYOUT( + MI_Gs_1, MI_As_1, MI_Ds_2, MI_Ds_3, MI_G_3, + MI_D_1, MI_D_2, MI_As_2, MI_C_3, MI_Cs_2, MI_C_2, MI_Fs_1, + MI_G_1, MI_G_2, MI_B_2, MI_D_3, MI_F_3, MI_Fs_2, TG_SWAP, + MI_A_1, MI_E_2, MI_A_2, MI_Cs_3, MI_E_3, MI_Gs_2, MI_B_1, + MI_E_1, MI_E_2, MI_Fs_3, MI_Gs_3, MI_B_3, MI_F_2, MI_Cs_1, MI_F_1, + + MO_SWAP, MI_A_5, MI_Gs_5, MI_Fs_5, MI_F_5, FN_MUTE, + MI_C_3, MI_G_5, MI_As_4, MI_C_5, MI_Ds_5, KC_VOLD, KC_VOLU, + MI_D_3, MI_Cs_3, MI_Gs_3, MI_As_3, MI_C_4, MI_D_5, + TG_SWAP, MI_B_2, MI_Fs_3, MI_Fs_4, MI_G_3, MI_B_3, MI_D_4, MI_G_4, + MI_A_2, MI_F_3, MI_E_3, MI_A_3, MI_Cs_4, MI_E_4, MI_A_4, MI_Cs_5, + MI_Gs_2, MI_As_2, MI_Ds_3, MI_F_4, MI_E_4, MI_Gs_4, MI_B_4, MI_E_5, MI_Ds_4 + ), + + [_QWERTY] = LAYOUT_wrapper( + _________________NUMBER_L__________________, + KC_GESC, KC_TAB, _________________QWERTY_L1_________________, + KC_CAPS, _________________QWERTY_L2_________________, KC_H, + KC_LSFT, _________________QWERTY_L3_________________, KC_N, + KC_LCTL, KC_GRV, KC_LGUI, KC_LALT, MIS_EIS, KC_SPC, KC_SPC, KC_PSCR, + + MO(_MISC), KC_LBRC, KC_RBRC, KC_BSLS, KC_0, _______, + KC_6, KC_7, KC_8, KC_9, KC_BSPC, _______, _______, + _________________QWERTY_R1_________________, KC_DEL, + KC_PGUP, KC_G, _________________QWERTY_R2_________________, KC_ENT, + KC_PGDN, KC_B, _________________QWERTY_R3_________________, KC_RSFT, + KC_HOME, KC_END, KC_SPC, MIS_KAN, KC_RALT, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + + [_COLEMAK] = LAYOUT_wrapper( + _________________NUMBER_L__________________, + KC_GESC, KC_TAB, _________________COLEMAK_L1________________, + KC_LCTL, _________________COLEMAK_L2________________, KC_ENT, + KC_LSFT, _________________COLEMAK_L3________________, KC_M, + KC_CAPS, KC_GRV, KC_LGUI, KC_LALT, MIS_EIS, KC_SPC, KC_SPC, KC_PSCR, + + MO(_MISC), KC_LBRC, KC_RBRC, KC_BSLS, KC_0, _______, + KC_6, KC_7, KC_8, KC_9, KC_BSPC, _______, _______, + _________________COLEMAK_R1________________, KC_DEL, + KC_PGUP, KC_D, _________________COLEMAK_R2________________, KC_ENT, + KC_PGDN, KC_B, _________________COLEMAK_R3________________, KC_RSFT, + KC_HOME, KC_END, KC_SPC, MIS_KAN, KC_RALT, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + + [_MISC] = LAYOUT_wrapper( + _________________FUNC__L___________________, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, KC_F10, _______, + KC_F6, KC_F7, KC_F8, KC_F9, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, KC_QUOT, _______, + _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_FN] = LAYOUT( + DF_SWAP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, DF_QWER, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + DF_COLE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + + _______, MI_OCTD, MI_OCTU, MI_VELD, MI_VELU, _______, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + RGB_SAD, RGB_SAI, RGB_HUD, RGB_HUI, RGB_SPD, RGB_SPI, RGB_VAD, RGB_VAI, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RMOD, RGB_MOD, EEP_RST, RGB_TOG + ) +}; + +void eeconfig_init_user(void) { // EEPROM is getting reset! + #ifdef RGB_MATRIX_ENABLE + rgb_matrix_enable(); + rgb_matrix_set_speed(RGB_MATRIX_STARTUP_SPD); + rgb_matrix_sethsv(HSV_BLUE); + + rgb_matrix_mode(RGB_MATRIX_SOLID_REACTIVE); + // rgb_matrix_mode(RGB_MATRIX_RAINBOW_MOVING_CHEVRON); + #endif +} + +void keyboard_post_init_user(void) { + // Set octave to MI_OCT_0 + midi_config.octave = MI_OCT_0 - MIDI_OCTAVE_MIN; + + // avoid using 127 since it is used as a special number in some sound sources. + midi_config.velocity = MIDI_INITIAL_VELOCITY; + + // party mode (for LED soldering test. Enable rainbow color effect, and disable led_indicator to check all LEDs) + rgb_matrix_mode(RGB_MATRIX_RAINBOW_MOVING_CHEVRON); +}; + +#ifdef RGB_MATRIX_ENABLE +void rgb_matrix_indicators_user(void) { + if (rgb_matrix_is_enabled()) { // turn the lights on when it is enabled. + uint8_t layer = biton32(layer_state); + switch (layer) { + case _CLOSE: + // rgb_matrix_set_color(pgm_read_byte(&convert_led_location2number[11]), RGB_RED); // RGB_TOG <- too heavy. + + // Close state indicator + rgb_matrix_set_color( 0, RGB_DARKWHITE); // oc + break; + + case _FN: + // left hand side + rgb_matrix_set_color( 46, RGB_DARKORANGE); // DF_OPEN + rgb_matrix_set_color( 48, RGB_DARKWHITE); // DF_QWER + rgb_matrix_set_color( 60, RGB_DARKWHITE); // DF_COLE + + rgb_matrix_set_color( 73, RGB_DARKYELLOW); // AG_SWAP + rgb_matrix_set_color( 72, RGB_DARKYELLOW); // AG_NORM + + + // right hand side + rgb_matrix_set_color( 1, RGB_DARKYELLOW); // MI_OCTD + rgb_matrix_set_color(13, RGB_DARKGREEN); // MI_OCTU + rgb_matrix_set_color(14, RGB_DARKYELLOW); // MI_VELD + rgb_matrix_set_color(25, RGB_DARKGREEN); // MI_VELU + + rgb_matrix_set_color( 6, RGB_DARKBLUE); // RGB_SAD + rgb_matrix_set_color( 9, RGB_DARKBLUE); // RGB_SAI + rgb_matrix_set_color(18, RGB_DARKBLUE); // RGB_HUD + rgb_matrix_set_color(21, RGB_DARKBLUE); // RGB_HUI + rgb_matrix_set_color(29, RGB_DARKBLUE); // RGB_SPD + rgb_matrix_set_color(32, RGB_DARKBLUE); // RGB_SPI + rgb_matrix_set_color(36, RGB_DARKBLUE); // RGB_VAD + rgb_matrix_set_color(39, RGB_DARKBLUE); // RGB_VAI + + rgb_matrix_set_color(31, RGB_DARKBLUE); // RGB_RMOD + rgb_matrix_set_color(37, RGB_DARKBLUE); // RGB_MOD + rgb_matrix_set_color(38, RGB_DARKPINK); // EEP_RST + rgb_matrix_set_color(40, RGB_DARKRED); // RGB_TOG + + rgb_matrix_set_color(41, RGB_DARKORANGE); // _FN + break; + } + } +} +#endif diff --git a/keyboards/bandominedoni/keymaps/led/readme.md b/keyboards/bandominedoni/keymaps/led/readme.md new file mode 100644 index 000000000000..e6ec2ad10d52 --- /dev/null +++ b/keyboards/bandominedoni/keymaps/led/readme.md @@ -0,0 +1 @@ +# The default keymap for bandominedoni diff --git a/keyboards/bandominedoni/keymaps/led/rules.mk b/keyboards/bandominedoni/keymaps/led/rules.mk new file mode 100644 index 000000000000..a7583d38c84b --- /dev/null +++ b/keyboards/bandominedoni/keymaps/led/rules.mk @@ -0,0 +1,2 @@ +RGB_MATRIX_ENABLE = yes # Use RGB matrix (Don't enable this when RGBLIGHT_ENABLE is used.) +RGB_MATRIX_CUSTOM_USER = yes # diff --git a/keyboards/bandominedoni/keymaps/via/config.h b/keyboards/bandominedoni/keymaps/via/config.h new file mode 100644 index 000000000000..99e39626ce71 --- /dev/null +++ b/keyboards/bandominedoni/keymaps/via/config.h @@ -0,0 +1,18 @@ +/* Copyright 2021 3araht + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #pragma once + +#define DYNAMIC_KEYMAP_LAYER_COUNT 5 diff --git a/keyboards/bandominedoni/keymaps/via/keymap.c b/keyboards/bandominedoni/keymaps/via/keymap.c new file mode 100644 index 000000000000..59e074228be4 --- /dev/null +++ b/keyboards/bandominedoni/keymaps/via/keymap.c @@ -0,0 +1,150 @@ +/* Copyright 2021 3araht + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { +#ifndef PEDAL_NORMALLY_CLOSED + _OPEN, +#endif + _CLOSE, +#ifdef PEDAL_NORMALLY_CLOSED + _OPEN, +#endif + _MISC, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_OPEN] = LAYOUT( + MI_Gs_1, MI_As_1, MI_Cs_2, MI_F_2, MI_Gs_3, + MI_E_1, MI_A_1, MI_G_2, MI_Ds_2, MI_F_3, MI_As_2, MI_F_1, + MI_D_2, MI_A_2, MI_C_3, MI_E_3, MI_C_2, MI_G_1, TG_SWAP, + MI_E_2, MI_Gs_2, MI_B_2, MI_D_3, MI_Fs_3, MI_Cs_3, MI_Fs_1, + MI_D_1, MI_B_1, MI_G_3, MI_A_3, MI_Ds_3, MI_Fs_2, MI_Ds_1, MI_C_1, + + MO_SWAP, MI_B_5, MI_Gs_5, MI_G_5, MI_F_5, FN_MUTE, + MI_Cs_3, MI_A_5, MI_Fs_5, MI_E_5, MI_Ds_5, KC_VOLD, KC_VOLU, + MI_C_3, MI_D_3, MI_G_3, MI_As_4, MI_C_5, MI_D_5, + TG_SWAP, MI_B_2, MI_E_3, MI_Cs_4, MI_Fs_3, MI_A_3, MI_C_4, MI_E_4, + MI_A_2, MI_F_3, MI_As_3, MI_Gs_3, MI_B_3, MI_D_4, MI_Gs_4, MI_B_4, + MI_Gs_2, MI_As_2, MI_Ds_3, MI_F_4, MI_Ds_4, MI_Fs_4, MI_A_4, MI_Cs_5, MI_G_4 + ), + + [_CLOSE] = LAYOUT( + MI_Gs_1, MI_As_1, MI_Ds_2, MI_Ds_3, MI_G_3, + MI_D_1, MI_D_2, MI_As_2, MI_C_3, MI_Cs_2, MI_C_2, MI_Fs_1, + MI_G_1, MI_G_2, MI_B_2, MI_D_3, MI_F_3, MI_Fs_2, TG_SWAP, + MI_A_1, MI_E_2, MI_A_2, MI_Cs_3, MI_E_3, MI_Gs_2, MI_B_1, + MI_E_1, MI_E_2, MI_Fs_3, MI_Gs_3, MI_B_3, MI_F_2, MI_Cs_1, MI_F_1, + + MO_SWAP, MI_A_5, MI_Gs_5, MI_Fs_5, MI_F_5, FN_MUTE, + MI_C_3, MI_G_5, MI_As_4, MI_C_5, MI_Ds_5, KC_VOLD, KC_VOLU, + MI_D_3, MI_Cs_3, MI_Gs_3, MI_As_3, MI_C_4, MI_D_5, + TG_SWAP, MI_B_2, MI_Fs_3, MI_Fs_4, MI_G_3, MI_B_3, MI_D_4, MI_G_4, + MI_A_2, MI_F_3, MI_E_3, MI_A_3, MI_Cs_4, MI_E_4, MI_A_4, MI_Cs_5, + MI_Gs_2, MI_As_2, MI_Ds_3, MI_F_4, MI_E_4, MI_Gs_4, MI_B_4, MI_E_5, MI_Ds_4 + ), + + [_MISC] = LAYOUT( + _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_FN] = LAYOUT( + DF_SWAP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + + _______, MI_OCTD, MI_OCTU, MI_VELD, MI_VELU, _______, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + RGB_SAD, RGB_SAI, RGB_HUD, RGB_HUI, RGB_SPD, RGB_SPI, RGB_VAD, RGB_VAI, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RMOD, RGB_MOD, EEP_RST, RGB_TOG + ) +}; + +void eeconfig_init_user(void) { // EEPROM is getting reset! + #ifdef RGB_MATRIX_ENABLE + rgb_matrix_enable(); + rgb_matrix_set_speed(RGB_MATRIX_STARTUP_SPD); + rgb_matrix_sethsv(HSV_BLUE); + + rgb_matrix_mode(RGB_MATRIX_SOLID_REACTIVE); + // rgb_matrix_mode(RGB_MATRIX_RAINBOW_MOVING_CHEVRON); + #endif +} + +void keyboard_post_init_user(void) { + // Set octave to MI_OCT_0 + midi_config.octave = MI_OCT_0 - MIDI_OCTAVE_MIN; + + // avoid using 127 since it is used as a special number in some sound sources. + midi_config.velocity = MIDI_INITIAL_VELOCITY; +}; + +#ifdef RGB_MATRIX_ENABLE +void rgb_matrix_indicators_user(void) { + if (rgb_matrix_is_enabled()) { // turn the lights on when it is enabled. + uint8_t layer = biton32(layer_state); + switch (layer) { + case _CLOSE: + // rgb_matrix_set_color(pgm_read_byte(&convert_led_location2number[11]), RGB_RED); // RGB_TOG <- too heavy. + + // Close state indicator + rgb_matrix_set_color( 0, RGB_DARKWHITE); // oc + break; + + case _FN: + // rgb_matrix_set_color(pgm_read_byte(&convert_led_location2number[11]), RGB_RED); // RGB_TOG <- too heavy. + rgb_matrix_set_color(14, RGB_DARKYELLOW); // MI_OCTD + rgb_matrix_set_color(25, RGB_DARKGREEN); // MI_OCTU + rgb_matrix_set_color(14, RGB_DARKYELLOW); // MI_VELD + rgb_matrix_set_color(25, RGB_DARKGREEN); // MI_VELU + + rgb_matrix_set_color( 6, RGB_DARKBLUE); // RGB_SAD + rgb_matrix_set_color( 9, RGB_DARKBLUE); // RGB_SAI + rgb_matrix_set_color(18, RGB_DARKBLUE); // RGB_HUD + rgb_matrix_set_color(21, RGB_DARKBLUE); // RGB_HUI + rgb_matrix_set_color(29, RGB_DARKBLUE); // RGB_SPD + rgb_matrix_set_color(32, RGB_DARKBLUE); // RGB_SPI + rgb_matrix_set_color(36, RGB_DARKBLUE); // RGB_VAD + rgb_matrix_set_color(39, RGB_DARKBLUE); // RGB_VAI + + rgb_matrix_set_color(31, RGB_DARKBLUE); // RGB_RMOD + rgb_matrix_set_color(37, RGB_DARKBLUE); // RGB_MOD + rgb_matrix_set_color(38, RGB_DARKPINK); // EEP_RST + rgb_matrix_set_color(40, RGB_DARKRED); // RGB_TOG + + rgb_matrix_set_color(41, RGB_DARKORANGE); // _FN + break; + } + } +} +#endif diff --git a/keyboards/bandominedoni/keymaps/via/readme.md b/keyboards/bandominedoni/keymaps/via/readme.md new file mode 100644 index 000000000000..6af1cf92bbe4 --- /dev/null +++ b/keyboards/bandominedoni/keymaps/via/readme.md @@ -0,0 +1 @@ +# The default VIA keymap for bandominedoni diff --git a/keyboards/bandominedoni/keymaps/via/rules.mk b/keyboards/bandominedoni/keymaps/via/rules.mk new file mode 100644 index 000000000000..925056c3dc8d --- /dev/null +++ b/keyboards/bandominedoni/keymaps/via/rules.mk @@ -0,0 +1,3 @@ +RGB_MATRIX_ENABLE = yes # Use RGB matrix (Don't enable this when RGBLIGHT_ENABLE is used.) +VIA_ENABLE = yes +MOUSEKEY_ENABLE = yes # Mouse keys diff --git a/keyboards/bandominedoni/readme.md b/keyboards/bandominedoni/readme.md new file mode 100644 index 000000000000..99d28daf0c49 --- /dev/null +++ b/keyboards/bandominedoni/readme.md @@ -0,0 +1,22 @@ +# bandominedoni + +![bandoMIneDonI](https://github.com/3araht/bandoMIneDonI/blob/main/pictures/bandoMIneDonI.jpg) + +bandoMIneDonI keyboard is a MIDI split keyboard with bandoneon layout. +Close and Open of the bellow is emulated by either using a sustain pedal, or tapping a dedicated keys to alter the close and open status. + +* Keyboard Maintainer: [3araht](https://github.com/3araht) +* Hardware Supported: bandoMIneDonI keyboard, a split keyboard mainly work as bandoneon MIDI keyboard. +* Hardware Availability: [BOOTH](https://3araht.booth.pm/). + +Make example for this keyboard (after setting up your build environment): + + make bandominedoni:default + +Flashing example for this keyboard: + + make bandominedoni:default:flash + +Uncomment "PEDAL_NORMALLY_CLOSED" in bandominedoni.h when normally-on pedal is used for switching Open/Close state. + +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/bandominedoni/rgb_matrix_user.inc b/keyboards/bandominedoni/rgb_matrix_user.inc new file mode 100644 index 000000000000..77ad22c1ce73 --- /dev/null +++ b/keyboards/bandominedoni/rgb_matrix_user.inc @@ -0,0 +1,16 @@ +#ifdef RGB_MATRIX_KEYREACTIVE_ENABLED +RGB_MATRIX_EFFECT(my_party_rocks) + +# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS + +bool my_party_rocks(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + HSV hsv = {rand() & 0xFF, rand() & 0xFF, rgb_matrix_config.hsv.v}; + RGB rgb = rgb_matrix_hsv_to_rgb(hsv); + // rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + rgb_matrix_set_color_all(rgb.r, rgb.g, rgb.b); + return rgb_matrix_check_finished_leds(led_max); +} + +# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS +#endif // RGB_MATRIX_KEYREACTIVE_ENABLED diff --git a/keyboards/bandominedoni/rules.mk b/keyboards/bandominedoni/rules.mk new file mode 100644 index 000000000000..cff831de1498 --- /dev/null +++ b/keyboards/bandominedoni/rules.mk @@ -0,0 +1,26 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +MIDI_ENABLE = yes # MIDI support +ENCODER_ENABLE = yes # encoder on mute button +SPLIT_KEYBOARD = yes # Enables split keyboard support +RGB_MATRIX_ENABLE = no # Use RGB matrix (Don't enable this when RGBLIGHT_ENABLE is used.) +RGB_MATRIX_DRIVER = WS2812 # + +LTO_ENABLE = yes diff --git a/keyboards/bantam44/bantam44.h b/keyboards/bantam44/bantam44.h index 38afbbdde701..f680f9eac262 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 b468b28ccb68..6cff8b2899ed 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -72,5 +71,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -#endif diff --git a/keyboards/bantam44/info.json b/keyboards/bantam44/info.json index 485d624f550a..609289832709 100644 --- a/keyboards/bantam44/info.json +++ b/keyboards/bantam44/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Bantam-44", "url": "", "maintainer": "qmk", - "width": 12, - "height": 4, "layouts": { "LAYOUT": { - "key_count": 44, "layout": [{"label":"K00", "x":0, "y":0}, {"label":"K01", "x":1, "y":0}, {"label":"K02", "x":2, "y":0}, {"label":"K03", "x":3, "y":0}, {"label":"K04", "x":4, "y":0}, {"label":"K05", "x":5, "y":0}, {"label":"K06", "x":6, "y":0}, {"label":"K07", "x":7, "y":0}, {"label":"K08", "x":8, "y":0}, {"label":"K09", "x":9, "y":0}, {"label":"K0A", "x":10, "y":0}, {"label":"K0B", "x":11, "y":0}, {"label":"K10", "x":0, "y":1, "w":1.5}, {"label":"K11", "x":1.5, "y":1}, {"label":"K12", "x":2.5, "y":1}, {"label":"K13", "x":3.5, "y":1}, {"label":"K14", "x":4.5, "y":1}, {"label":"K15", "x":5.5, "y":1}, {"label":"K16", "x":6.5, "y":1}, {"label":"K17", "x":7.5, "y":1}, {"label":"K18", "x":8.5, "y":1}, {"label":"K19", "x":9.5, "y":1}, {"label":"K1A", "x":10.5, "y":1, "w":1.5}, {"label":"K20", "x":0, "y":2}, {"label":"K21", "x":1, "y":2}, {"label":"K22", "x":2, "y":2}, {"label":"K23", "x":3, "y":2}, {"label":"K24", "x":4, "y":2}, {"label":"K25", "x":5, "y":2}, {"label":"K26", "x":6, "y":2}, {"label":"K27", "x":7, "y":2}, {"label":"K28", "x":8, "y":2}, {"label":"K29", "x":9, "y":2}, {"label":"K2A", "x":10, "y":2}, {"label":"K2B", "x":11, "y":2}, {"label":"K30", "x":0, "y":3, "w":1.25}, {"label":"K31", "x":1.25, "y":3, "w":1.25}, {"label":"K32", "x":2.5, "y":3, "w":1.25}, {"label":"K33", "x":3.75, "y":3, "w":1.25}, {"label":"K34", "x":5, "y":3, "w":2.75}, {"label":"K35", "x":7.75, "y":3, "w":1.25}, {"label":"K36", "x":9, "y":3}, {"label":"K37", "x":10, "y":3}, {"label":"K38", "x":11, "y":3}] } } diff --git a/keyboards/bantam44/rules.mk b/keyboards/bantam44/rules.mk index e0fbf5a8c024..761f11c41d80 100644 --- a/keyboards/bantam44/rules.mk +++ b/keyboards/bantam44/rules.mk @@ -2,27 +2,15 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = halfkay # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -# SLEEP_LED_ENABLE = yes # 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 = yes # Enable keyboard backlight functionality -# MIDI_ENABLE = YES # MIDI controls -# UNICODE_ENABLE = YES # Unicode -# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID diff --git a/keyboards/barleycorn/info.json b/keyboards/barleycorn/info.json index 4334f383f0a7..293f321b2c1a 100644 --- a/keyboards/barleycorn/info.json +++ b/keyboards/barleycorn/info.json @@ -1,8 +1,6 @@ { "keyboard_name": "Barleycorn", "maintainer": "Yiancar", - "width": 19.5, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/barleycorn/rules.mk b/keyboards/barleycorn/rules.mk index be005ab297e9..340af831bae3 100644 --- a/keyboards/barleycorn/rules.mk +++ b/keyboards/barleycorn/rules.mk @@ -2,23 +2,20 @@ MCU = atmega328p # Bootloader selection -BOOTLOADER = USBasp +BOOTLOADER = usbasploader # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 CUSTOM_MATRIX = lite diff --git a/keyboards/barleycorn_smd/info.json b/keyboards/barleycorn_smd/info.json index c33f77a9b139..c0094d20ac4d 100644 --- a/keyboards/barleycorn_smd/info.json +++ b/keyboards/barleycorn_smd/info.json @@ -1,8 +1,6 @@ { "keyboard_name": "Barleycorn SMD", "maintainer": "matthewdias", - "width": 19.5, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/barleycorn_smd/rules.mk b/keyboards/barleycorn_smd/rules.mk index fba31123d08a..535816acbea7 100644 --- a/keyboards/barleycorn_smd/rules.mk +++ b/keyboards/barleycorn_smd/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 CUSTOM_MATRIX = lite diff --git a/keyboards/barracuda/info.json b/keyboards/barracuda/info.json index ac43850dae83..4bb18fb91193 100644 --- a/keyboards/barracuda/info.json +++ b/keyboards/barracuda/info.json @@ -2,10 +2,8 @@ "keyboard_name": "barracuda", "url": "https://github.com/knaruo/barracuda", "maintainer": "knaruo", - "width": 14, - "height": 3, "layouts": { - "LAYOUT": { + "LAYOUT_ortho_3x11": { "layout": [ {"x": 0, "y": 0}, {"x": 1, "y": 0}, diff --git a/keyboards/barracuda/rules.mk b/keyboards/barracuda/rules.mk index 7233e7c00f0f..57c63f3e7a5e 100644 --- a/keyboards/barracuda/rules.mk +++ b/keyboards/barracuda/rules.mk @@ -7,18 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output - -LAYOUTS = ortho_3x11 diff --git a/keyboards/basekeys/slice/keymaps/default/keymap.c b/keyboards/basekeys/slice/keymaps/default/keymap.c index ffb64998e269..c7fc3fed510c 100644 --- a/keyboards/basekeys/slice/keymaps/default/keymap.c +++ b/keyboards/basekeys/slice/keymaps/default/keymap.c @@ -103,7 +103,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return result; } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE const char *read_logo(void) { static char logo[] = { @@ -118,7 +118,7 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) { return isLeftHand ? OLED_ROTATION_180 : OLED_ROTATION_0; } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { // Host Keyboard Layer Status oled_write_P(PSTR("Layer: "), false); @@ -142,5 +142,6 @@ void oled_task_user(void) { } else { oled_write(read_logo(), false); } + return false; } #endif diff --git a/keyboards/basekeys/slice/keymaps/default_split_left_space/keymap.c b/keyboards/basekeys/slice/keymaps/default_split_left_space/keymap.c index 331dfc0fe435..203bd0804c8c 100644 --- a/keyboards/basekeys/slice/keymaps/default_split_left_space/keymap.c +++ b/keyboards/basekeys/slice/keymaps/default_split_left_space/keymap.c @@ -103,7 +103,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return result; } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE const char *read_logo(void) { static char logo[] = { @@ -118,7 +118,7 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) { return isLeftHand ? OLED_ROTATION_180 : OLED_ROTATION_0; } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { // Host Keyboard Layer Status oled_write_P(PSTR("Layer: "), false); @@ -142,5 +142,6 @@ void oled_task_user(void) { } else { oled_write(read_logo(), false); } + return false; } #endif diff --git a/keyboards/basekeys/slice/rev1/info.json b/keyboards/basekeys/slice/rev1/info.json index 7f9fbe4c2036..f4e0d4505ef6 100644 --- a/keyboards/basekeys/slice/rev1/info.json +++ b/keyboards/basekeys/slice/rev1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "slice", "url": "https://www.basekeys.com", "maintainer": "2Moons", - "width": 17.72, - "height": 5, "layouts": { "LAYOUT": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"~", "x":1.6600000000000001, "y":0}, {"label":"!", "x":2.66, "y":0}, {"label":"@", "x":3.66, "y":0}, {"label":"#", "x":4.66, "y":0}, {"label":"$", "x":5.66, "y":0}, {"label":"%", "x":6.66, "y":0}, {"label":"^", "x":7.66, "y":0}, {"label":"&", "x":9.32, "y":0}, {"label":"*", "x":10.32, "y":0}, {"label":"(", "x":11.32, "y":0}, {"label":")", "x":12.32, "y":0}, {"label":"_", "x":13.32, "y":0}, {"label":"+", "x":14.32, "y":0}, {"label":"Backspace", "x":15.32, "y":0, "w":2}, {"x":0, "y":1}, {"label":"Tab", "x":1.53, "y":1, "w":1.5}, {"label":"Q", "x":3.03, "y":1}, {"label":"W", "x":4.03, "y":1}, {"label":"E", "x":5.03, "y":1}, {"label":"R", "x":6.03, "y":1}, {"label":"T", "x":7.03, "y":1}, {"label":"Y", "x":9, "y":1}, {"label":"U", "x":10, "y":1}, {"label":"I", "x":11, "y":1}, {"label":"O", "x":12, "y":1}, {"label":"P", "x":13, "y":1}, {"label":"{", "x":14, "y":1}, {"label":"}", "x":15.05, "y":1}, {"label":"|", "x":16.1, "y":1, "w":1.5}, {"x":0, "y":2}, {"label":"Caps Lock", "x":1.3900000000000001, "y":2, "w":1.75}, {"label":"A", "x":3.14, "y":2}, {"label":"S", "x":4.14, "y":2}, {"label":"D", "x":5.14, "y":2}, {"label":"F", "x":6.14, "y":2}, {"label":"G", "x":7.14, "y":2}, {"label":"H", "x":9.34, "y":2}, {"label":"J", "x":10.34, "y":2}, {"label":"K", "x":11.34, "y":2}, {"label":"L", "x":12.34, "y":2}, {"label":":", "x":13.34, "y":2}, {"label":"\"", "x":14.34, "y":2}, {"label":"Enter", "x":15.34, "y":2, "w":2.25}, {"x":0, "y":3}, {"label":"Shift", "x":1.25, "y":3, "w":2.25}, {"label":"Z", "x":3.5, "y":3}, {"label":"X", "x":4.5, "y":3}, {"label":"C", "x":5.5, "y":3}, {"label":"V", "x":6.5, "y":3}, {"label":"B", "x":7.5, "y":3}, {"label":"B", "x":8.97, "y":3}, {"label":"N", "x":9.97, "y":3}, {"label":"M", "x":10.97, "y":3}, {"label":"<", "x":11.97, "y":3}, {"label":">", "x":12.97, "y":3}, {"label":"?", "x":13.97, "y":3}, {"label":"Shift", "x":14.97, "y":3, "w":1.75}, {"label":"Shift", "x":16.72, "y":3}, {"x":0, "y":4}, {"label":"Ctrl", "x":1.5, "y":4, "w":1.25}, {"label":"Alt", "x":2.75, "y":4, "w":1.25}, {"label":"\u21d3", "x":4.75, "y":4}, {"x":5.75, "y":4, "w":2.75}, {"x":8.97, "y":4, "w":2.25}, {"label":"\u21d1", "x":11.22, "y":4}, {"label":"Alt", "x":13.98, "y":4, "w":1.25}, {"label":"Ctrl", "x":15.23, "y":4, "w":1.25}, {"label":"Fn", "x":16.48, "y":4}] diff --git a/keyboards/basekeys/slice/rev1/rules.mk b/keyboards/basekeys/slice/rev1/rules.mk index 16d1ed71e08b..4c0cd010f3d2 100644 --- a/keyboards/basekeys/slice/rev1/rules.mk +++ b/keyboards/basekeys/slice/rev1/rules.mk @@ -2,13 +2,6 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # this is split keyboard. @@ -17,13 +10,10 @@ SPLIT_KEYBOARD = yes # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 = no # USB Nkey Rollover -UNICODE_ENABLE = no # Unicode diff --git a/keyboards/basekeys/slice/rev1_rgb/info.json b/keyboards/basekeys/slice/rev1_rgb/info.json index 08ffb969f774..6344dc8aa047 100644 --- a/keyboards/basekeys/slice/rev1_rgb/info.json +++ b/keyboards/basekeys/slice/rev1_rgb/info.json @@ -2,8 +2,6 @@ "keyboard_name": "slice", "url": "https://www.basekeys.com", "maintainer": "2Moons", - "width": 17.72, - "height": 5, "layouts": { "LAYOUT": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"~", "x":1.660, "y":0}, {"label":"!", "x":2.66, "y":0}, {"label":"@", "x":3.66, "y":0}, {"label":"#", "x":4.66, "y":0}, {"label":"$", "x":5.66, "y":0}, {"label":"%", "x":6.66, "y":0}, {"label":"^", "x":7.66, "y":0}, {"label":"&", "x":9.32, "y":0}, {"label":"*", "x":10.32, "y":0}, {"label":"(", "x":11.32, "y":0}, {"label":")", "x":12.32, "y":0}, {"label":"_", "x":13.32, "y":0}, {"label":"+", "x":14.32, "y":0}, {"label":"Backspace", "x":15.32, "y":0, "w":2}, {"x":0, "y":1}, {"label":"Tab", "x":1.53, "y":1, "w":1.5}, {"label":"Q", "x":3.03, "y":1}, {"label":"W", "x":4.03, "y":1}, {"label":"E", "x":5.03, "y":1}, {"label":"R", "x":6.03, "y":1}, {"label":"T", "x":7.03, "y":1}, {"label":"Y", "x":9, "y":1}, {"label":"U", "x":10, "y":1}, {"label":"I", "x":11, "y":1}, {"label":"O", "x":12, "y":1}, {"label":"P", "x":13, "y":1}, {"label":"{", "x":14, "y":1}, {"label":"}", "x":15.05, "y":1}, {"label":"|", "x":16.1, "y":1, "w":1.5}, {"x":0, "y":2}, {"label":"Caps Lock", "x":1.390, "y":2, "w":1.75}, {"label":"A", "x":3.14, "y":2}, {"label":"S", "x":4.14, "y":2}, {"label":"D", "x":5.14, "y":2}, {"label":"F", "x":6.14, "y":2}, {"label":"G", "x":7.14, "y":2}, {"label":"H", "x":9.34, "y":2}, {"label":"J", "x":10.34, "y":2}, {"label":"K", "x":11.34, "y":2}, {"label":"L", "x":12.34, "y":2}, {"label":":", "x":13.34, "y":2}, {"label":"\"", "x":14.34, "y":2}, {"label":"Enter", "x":15.34, "y":2, "w":2.25}, {"x":0, "y":3}, {"label":"Shift", "x":1.25, "y":3, "w":2.25}, {"label":"Z", "x":3.5, "y":3}, {"label":"X", "x":4.5, "y":3}, {"label":"C", "x":5.5, "y":3}, {"label":"V", "x":6.5, "y":3}, {"label":"B", "x":7.5, "y":3}, {"label":"B", "x":8.97, "y":3}, {"label":"N", "x":9.97, "y":3}, {"label":"M", "x":10.97, "y":3}, {"label":"<", "x":11.97, "y":3}, {"label":">", "x":12.97, "y":3}, {"label":"?", "x":13.97, "y":3}, {"label":"Shift", "x":14.97, "y":3, "w":1.75}, {"label":"Shift", "x":16.72, "y":3}, {"x":0, "y":4}, {"label":"Ctrl", "x":1.5, "y":4, "w":1.25}, {"label":"Alt", "x":2.75, "y":4, "w":1.25}, {"label":"\u21d3", "x":4.75, "y":4}, {"x":5.75, "y":4, "w":2.75}, {"x":8.97, "y":4, "w":2.25}, {"label":"\u21d1", "x":11.22, "y":4}, {"label":"Alt", "x":13.98, "y":4, "w":1.25}, {"label":"Ctrl", "x":15.23, "y":4, "w":1.25}, {"label":"Fn", "x":16.48, "y":4}] diff --git a/keyboards/basekeys/slice/rev1_rgb/keymaps/2moons_rgb/keymap.c b/keyboards/basekeys/slice/rev1_rgb/keymaps/2moons_rgb/keymap.c index 36bfb79abdd1..375daaca9536 100644 --- a/keyboards/basekeys/slice/rev1_rgb/keymaps/2moons_rgb/keymap.c +++ b/keyboards/basekeys/slice/rev1_rgb/keymaps/2moons_rgb/keymap.c @@ -187,7 +187,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return result; } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE const char *read_logo(void) { static char logo[] = { @@ -202,7 +202,7 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) { return isLeftHand ? OLED_ROTATION_180 : OLED_ROTATION_0; } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { // Host Keyboard Layer Status oled_write_P(PSTR("Layer: "), false); @@ -232,5 +232,6 @@ void oled_task_user(void) { } else { oled_write(read_logo(), false); } + return false; } #endif diff --git a/keyboards/basekeys/slice/rev1_rgb/keymaps/via/keymap.c b/keyboards/basekeys/slice/rev1_rgb/keymaps/via/keymap.c index 5670f275ef88..fa5abd90a5df 100644 --- a/keyboards/basekeys/slice/rev1_rgb/keymaps/via/keymap.c +++ b/keyboards/basekeys/slice/rev1_rgb/keymaps/via/keymap.c @@ -84,7 +84,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE static void render_qmk_logo(void) { static const char PROGMEM qmk_logo[] = { @@ -99,7 +99,7 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) { return isLeftHand ? OLED_ROTATION_180 : OLED_ROTATION_0; } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { // Host Keyboard Layer Status oled_write_P(PSTR("Layer: "), false); @@ -123,5 +123,6 @@ void oled_task_user(void) { } else { render_qmk_logo(); } + return false; } #endif diff --git a/keyboards/basekeys/slice/rev1_rgb/rules.mk b/keyboards/basekeys/slice/rev1_rgb/rules.mk index 8bf833d3e2a0..1000b7bf545e 100644 --- a/keyboards/basekeys/slice/rev1_rgb/rules.mk +++ b/keyboards/basekeys/slice/rev1_rgb/rules.mk @@ -2,13 +2,6 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # this is split keyboard. @@ -17,17 +10,15 @@ SPLIT_KEYBOARD = yes # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 = no # USB Nkey Rollover RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -OLED_DRIVER_ENABLE = yes # Disable OLED driver. -UNICODE_ENABLE = no # Unicode +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Disable OLED driver. -LTO_ENABLE = yes \ No newline at end of file +LTO_ENABLE = yes diff --git a/keyboards/basekeys/trifecta/config.h b/keyboards/basekeys/trifecta/config.h index 8a9529126013..ffdf6d2d2812 100644 --- a/keyboards/basekeys/trifecta/config.h +++ b/keyboards/basekeys/trifecta/config.h @@ -80,11 +80,11 @@ # define RGB_MATRIX_KEYPRESSES // reacts to keypresses // # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses) // # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -//# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +//# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended # define RGB_MATRIX_FRAMEBUFFER_EFFECTS # define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness) # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness) -# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash. +# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash. # define RGB_MATRIX_HUE_STEP 8 # define RGB_MATRIX_SAT_STEP 8 # define RGB_MATRIX_VAL_STEP 8 @@ -92,32 +92,53 @@ /* Disable the animations you don't want/need. You will need to disable a good number of these * * because they take up a lot of space. Disable until you can successfully compile your firmware. */ -// # define DISABLE_RGB_MATRIX_ALPHAS_MODS -// # define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -// # define DISABLE_RGB_MATRIX_BREATHING -// # define DISABLE_RGB_MATRIX_CYCLE_ALL -// # define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT -// # define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN -// # define DISABLE_RGB_MATRIX_CYCLE_OUT_IN -// # define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL -// # define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON -// # define DISABLE_RGB_MATRIX_DUAL_BEACON -// # define DISABLE_RGB_MATRIX_RAINBOW_BEACON -// # define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS -// # define DISABLE_RGB_MATRIX_RAINDROPS -// # define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS -// # define DISABLE_RGB_MATRIX_TYPING_HEATMAP -// # define DISABLE_RGB_MATRIX_DIGITAL_RAIN -// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE -// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -// # define DISABLE_RGB_MATRIX_SPLASH -// # define DISABLE_RGB_MATRIX_MULTISPLASH -// # define DISABLE_RGB_MATRIX_SOLID_SPLASH -// # define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + #endif diff --git a/keyboards/basekeys/trifecta/info.json b/keyboards/basekeys/trifecta/info.json index 3badb40d20f3..86c45a7df23c 100644 --- a/keyboards/basekeys/trifecta/info.json +++ b/keyboards/basekeys/trifecta/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Trifecta", "url": "https://www.basekeys.com", "maintainer": "Swiftrax", - "width": 18, - "height": 5.25, "layouts": { "LAYOUT": { "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":8.75, "y":0}, {"label":"*", "x":9.75, "y":0}, {"label":"(", "x":10.75, "y":0}, {"label":")", "x":11.75, "y":0}, {"label":"_", "x":12.75, "y":0}, {"label":"+", "x":13.75, "y":0}, {"label":"BS", "x":14.75, "y":0}, {"x":15.75, "y":0}, {"x":17, "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":8.25, "y":1}, {"label":"U", "x":9.25, "y":1}, {"label":"I", "x":10.25, "y":1}, {"label":"O", "x":11.25, "y":1}, {"label":"P", "x":12.25, "y":1}, {"label":"{", "x":13.25, "y":1}, {"label":"}", "x":14.25, "y":1}, {"label":"|", "x":15.25, "y":1, "w":1.5}, {"x":17, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":8.5, "y":2}, {"label":"J", "x":9.5, "y":2}, {"label":"K", "x":10.5, "y":2}, {"label":"L", "x":11.5, "y":2}, {"label":":", "x":12.5, "y":2}, {"label":"\"", "x":13.5, "y":2}, {"label":"Enter", "x":14.5, "y":2, "w":2.25}, {"x":17, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"x":8, "y":3}, {"label":"N", "x":9, "y":3}, {"label":"M", "x":10, "y":3}, {"label":"<", "x":11, "y":3}, {"label":">", "x":12, "y":3}, {"label":"?", "x":13, "y":3}, {"label":"Shift", "x":14, "y":3, "w":1.75}, {"x":16, "y":3.25}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":3, "y":4, "w":1.5}, {"x":4.5, "y":4, "w":2.25}, {"x":6.75, "y":4}, {"x":8.5, "y":4, "w":2.75}, {"label":"Alt", "x":11.25, "y":4, "w":1.5}, {"label":"Win", "x":13.5, "y":4, "w":1.25}, {"x":15, "y":4.25}, {"x":16, "y":4.25}, {"x":17, "y":4.25}] diff --git a/keyboards/basekeys/trifecta/rules.mk b/keyboards/basekeys/trifecta/rules.mk index 975fe8462070..a59523f87835 100644 --- a/keyboards/basekeys/trifecta/rules.mk +++ b/keyboards/basekeys/trifecta/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes diff --git a/keyboards/basketweave/config.h b/keyboards/basketweave/config.h index dcc4b2fe5124..cdaffe4ca33f 100644 --- a/keyboards/basketweave/config.h +++ b/keyboards/basketweave/config.h @@ -19,7 +19,7 @@ #include "config_common.h" #define VENDOR_ID 0x6B62 -#define PRODUCT_ID 0x6869 +#define PRODUCT_ID 0x8989 #define DEVICE_VER 0x0001 #define MANUFACTURER Clackery #define PRODUCT Basketweave @@ -50,10 +50,9 @@ */ // #define GRAVE_ESC_CTRL_OVERRIDE -#define ENCODERS_PAD_A { D7 } -#define ENCODERS_PAD_B { C0 } +#define ENCODERS_PAD_A { C0 } +#define ENCODERS_PAD_B { D7 } #define ENCODER_RESOLUTION 4 -#define ENCODER_DIRECTION_FLIP #define TAP_CODE_DELAY 10 /* Bootmagic Lite key configuration */ diff --git a/keyboards/basketweave/info.json b/keyboards/basketweave/info.json index 0a38287bee4f..8be02555e8cb 100644 --- a/keyboards/basketweave/info.json +++ b/keyboards/basketweave/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Basketweave", "url": "https://github.com/null-ll/basketweave", "maintainer": "null-ll", - "width": 20, - "height": 5.25, "layouts": { "LAYOUT_default": { "layout": [ diff --git a/keyboards/basketweave/keymaps/via/keymap.c b/keyboards/basketweave/keymaps/via/keymap.c new file mode 100644 index 000000000000..aa9035dbee8f --- /dev/null +++ b/keyboards/basketweave/keymaps/via/keymap.c @@ -0,0 +1,79 @@ +/* Copyright 2021 null-ll + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_default( /* base */ + KC_GESC, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_INS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_MUTE, + KC_DEL, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_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, KC_UP, + KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT + ), + + + [1] = LAYOUT_default( /* fn */ + /* esc ` 1 2 3 4 5 6 7 8 9 0 - = bspc */ + KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, + /* ins tab Q W E R T Y U I O P [ ] \ rotary */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_TRNS, KC_PSCR, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, + /* del caps A S D F G H J K L ; ' enter */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, + /* shift Z X C V B B N M , . / shift up */ + KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_RSFT, KC_PGUP, + /* ctrl alt space fn space alt ctrl left down right */ + KC_LCTL, KC_LALT, KC_TRNS, KC_TRNS, KC_TRNS, KC_RALT, KC_RCTL, KC_HOME, KC_PGDN, KC_END + ), + + [2] = LAYOUT_default( /* extra */ + /* esc ` 1 2 3 4 5 6 7 8 9 0 - = bspc */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + /* ins tab Q W E R T Y U I O P [ ] \ rotary */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_TRNS, KC_PSCR, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + /* del caps A S D F G H J K L ; ' enter */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, + /* shift Z X C V B B N M , . / shift up */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + /* ctrl alt space fn space alt ctrl left down right */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT_default( /* extra */ + /* esc ` 1 2 3 4 5 6 7 8 9 0 - = bspc */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + /* ins tab Q W E R T Y U I O P [ ] \ rotary */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_TRNS, KC_PSCR, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + /* del caps A S D F G H J K L ; ' enter */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, + /* shift Z X C V B B N M , . / shift up */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + /* ctrl alt space fn space alt ctrl left down right */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } + return true; +} diff --git a/keyboards/dztech/volcano660/keymaps/via/rules.mk b/keyboards/basketweave/keymaps/via/rules.mk similarity index 100% rename from keyboards/dztech/volcano660/keymaps/via/rules.mk rename to keyboards/basketweave/keymaps/via/rules.mk diff --git a/keyboards/basketweave/rules.mk b/keyboards/basketweave/rules.mk index 1dfab07929ed..bf86658a04a6 100644 --- a/keyboards/basketweave/rules.mk +++ b/keyboards/basketweave/rules.mk @@ -5,22 +5,19 @@ MCU = atmega32a F_CPU = 16000000 # Bootloader selection -BOOTLOADER = USBasp +BOOTLOADER = usbasploader # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = yes diff --git a/keyboards/bastardkb/scylla/config.h b/keyboards/bastardkb/scylla/config.h index b00e781df23a..d876b5d0186f 100644 --- a/keyboards/bastardkb/scylla/config.h +++ b/keyboards/bastardkb/scylla/config.h @@ -1,4 +1,4 @@ -/* +/* * Copyright 2021 Quentin LEBASTARD * * This program is free software: you can redistribute it and/or modify @@ -37,3 +37,69 @@ #define DEBOUNCE 5 #define SOFT_SERIAL_PIN D0 #define MASTER_RIGHT + +#ifdef RGBLIGHT_ENABLE +# define RGBLED_NUM 58 +# define RGBLED_SPLIT { 29, 29 } +# define RGBLIGHT_LIMIT_VAL 50 +# define RGBLIGHT_ANIMATIONS +#endif + +// RGB matrix support +#ifdef RGB_MATRIX_ENABLE +# define SPLIT_TRANSPORT_MIRROR +# define DRIVER_LED_TOTAL 58 // Number of LEDs +# define RGB_MATRIX_SPLIT { 29, 29 } +# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 50 +# define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS +# define RGB_DISABLE_WHEN_USB_SUSPENDED +# define RGB_MATRIX_KEYPRESSES +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH +#endif diff --git a/keyboards/bastardkb/scylla/info.json b/keyboards/bastardkb/scylla/info.json index a598b0399904..104932e47124 100644 --- a/keyboards/bastardkb/scylla/info.json +++ b/keyboards/bastardkb/scylla/info.json @@ -2,8 +2,6 @@ "keyboard_name": "The Bastard Keyboard", "url": "https://bastardkb.com/", "maintainer": "Quentin Lebastard", - "width": 17, - "height": 8, "layouts": { "LAYOUT_split_4x6_5": { "layout": [ diff --git a/keyboards/bastardkb/scylla/keymaps/cykedev/config.h b/keyboards/bastardkb/scylla/keymaps/cykedev/config.h new file mode 100644 index 000000000000..3b2fa15b96f8 --- /dev/null +++ b/keyboards/bastardkb/scylla/keymaps/cykedev/config.h @@ -0,0 +1,42 @@ +// Copyright 2021 Christian Eiden, cykedev +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +#pragma once + +// Select hand configuration +// #define MASTER_LEFT +// #define MASTER_RIGHT +#define EE_HANDS + +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 + +#define BOOTMAGIC_LITE_ROW_RIGHT 0 +#define BOOTMAGIC_LITE_COLUMN_RIGHT 5 + +#define TAPPING_TERM 200 + +// Prevent normal rollover on alphas from accidentally triggering mods. +// #define IGNORE_MOD_TAP_INTERRUPT + +// Enable rapid switch from tap to hold, disables double tap hold auto-repeat. +// #define TAPPING_FORCE_HOLD + +// Apply the modifier on keys that are tapped during a short hold of a modtap +// #define PERMISSIVE_HOLD + +#define IGNORE_MOD_TAP_INTERRUPT_PER_KEY + +#define FORCE_NKRO \ No newline at end of file diff --git a/keyboards/bastardkb/scylla/keymaps/cykedev/keymap.c b/keyboards/bastardkb/scylla/keymaps/cykedev/keymap.c new file mode 100644 index 000000000000..42915e43e484 --- /dev/null +++ b/keyboards/bastardkb/scylla/keymaps/cykedev/keymap.c @@ -0,0 +1,198 @@ +// Copyright 2021 Christian Eiden, cykedev +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +#include QMK_KEYBOARD_H + +#define CM_SPAL LGUI_T(KC_SPC) +#define CM_SPAR RGUI_T(KC_SPC) + +#define SH_ENL LSFT_T(KC_ENT) +#define SH_ENR RSFT_T(KC_ENT) + +#define RAISE MO(_RAISE) +#define LOWER MO(_LOWER) + +#define QWERT DF(_QWERTY) +#define COLEM DF(_COLEMAK_DH) + +enum layer_names { + _COLEMAK_DH, + _QWERTY, + _RAISE, + _LOWER, + _ADJUST +}; + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_COLEMAK_DH] = LAYOUT_split_4x6_5( + /* COLEMAK_DH + * .-----------------------------------------. .-----------------------------------------. + * | Esc | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Bsp | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Tab | Q | W | F | P | B | | J | L | U | Y | ; | \ | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Del | A | R | S | T | G | | M | N | E | I | O | ' | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Shft | Z | X | C | D | V | | K | H | , | . | / | Shft | + * '-----------------------------------------/ \-----------------------------------------' + * / RAISE /---------------. .---------------\ LOWER \ + * / / Cmd / Shift / \ Shift \ Cmd \ \ + * '-------/ Space / Enter / \ Enter \ Space \-------' + * /---------------/ \---------------\ + * / Alt / Ctrl / \ Ctrl \ Alt \ + * / / / \ \ \ + * '---------------' '---------------' + */ + KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_BSPC, + KC_TAB , KC_Q , KC_W , KC_F , KC_P , KC_B , KC_J , KC_L , KC_U , KC_Y , KC_SCLN, KC_BSLS, + KC_DEL , KC_A , KC_R , KC_S , KC_T , KC_G , KC_M , KC_N , KC_E , KC_I , KC_O , KC_QUOT, + KC_LSFT, KC_Z , KC_X , KC_C , KC_D , KC_V , KC_K , KC_H , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, + RAISE , CM_SPAL, SH_ENL , SH_ENR , CM_SPAR, LOWER , + KC_LALT, KC_LCTL, KC_RCTL, KC_RALT + ), + [_QWERTY] = LAYOUT_split_4x6_5( + /* QWERTY + * .-----------------------------------------. .-----------------------------------------. + * | Esc | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Bsp | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | | Y | U | I | O | P | \ | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Del | A | S | D | F | G | | H | J | K | L | ; | ' | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Shft | Z | X | C | V | B | | N | M | , | . | / | Shft | + * '-----------------------------------------/ \-----------------------------------------' + * / RAISE /---------------. .---------------\ LOWER \ + * / / Cmd / Shift / \ Shift \ Cmd \ \ + * '-------/ Space / Enter / \ Enter \ Space \-------' + * /---------------/ \---------------\ + * / Alt / Ctrl / \ Ctrl \ Alt \ + * / / / \ \ \ + * '---------------' '---------------' + */ + KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_BSPC, + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_BSLS, + KC_DEL , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_LSFT, + RAISE , CM_SPAL, SH_ENL , SH_ENR , CM_SPAR, LOWER , + KC_LALT, KC_LCTL, KC_RCTL, KC_RALT + ), + [_RAISE] = LAYOUT_split_4x6_5( + /* RAISE + * .-----------------------------------------. .-----------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | [ | ] | | | $ | / | * | # | ~ | F12 | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Ins | ! | @ | ( | ) | | | % | - | + | = | ? | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | { | } | | | ^ | & | | | | | | + * '-----------------------------------------/ \-----------------------------------------' + * / /---------------. .---------------\ \ + * / / / / \ \ \ \ + * '-------/ / / \ \ \-------' + * /---------------/ \---------------\ + * / / / \ \ \ + * / / / \ \ \ + * '---------------' '---------------' + */ + XXXXXXX, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , + XXXXXXX, XXXXXXX, XXXXXXX, KC_LBRC, KC_RBRC, XXXXXXX, KC_DLR , KC_SLSH, KC_ASTR, KC_HASH, KC_TILD, KC_F12 , + KC_INS , KC_EXLM, KC_AT , KC_LPRN, KC_RPRN, XXXXXXX, KC_PERC, KC_MINS, KC_PPLS, KC_PEQL, KC_QUES, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, KC_LCBR, KC_RCBR, XXXXXXX, KC_CIRC, KC_AMPR, KC_PIPE, XXXXXXX, XXXXXXX, XXXXXXX, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______ + ), + [_LOWER] = LAYOUT_split_4x6_5( + /* LOWER + * .-----------------------------------------. .-----------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | [ | ] | + | | | | up | | | F12 | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Ins | ! | @ | ( | ) | - | | | left | down | rght | ? | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | { | } | = | | | | | | | | + * '-----------------------------------------/ \-----------------------------------------' + * / /---------------. .---------------\ \ + * / / / / \ \ \ \ + * '-------/ / / \ \ \-------' + * /---------------/ \---------------\ + * / / / \ \ \ + * / / / \ \ \ + * '---------------' '---------------' + */ + XXXXXXX, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , + XXXXXXX, XXXXXXX, XXXXXXX, KC_LBRC, KC_RBRC, KC_PPLS, XXXXXXX, XXXXXXX, KC_UP , XXXXXXX, XXXXXXX, KC_F12 , + KC_INS , KC_EXLM, KC_AT , KC_LPRN, KC_RPRN, KC_MINS, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_QUES, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, KC_LCBR, KC_RCBR, KC_PEQL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______ + ), + [_ADJUST] = LAYOUT_split_4x6_5( + /* ADJUST + * .-----------------------------------------. .-----------------------------------------. + * | | | | | | QWERT| |COLEM | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | V+ | | B + | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | V- | | B - | << | play | >> | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | Mute | | | | | | | | + * '-----------------------------------------/ \-----------------------------------------' + * / /---------------. .---------------\ \ + * / / / / \ \ \ \ + * '-------/ / / \ \ \-------' + * /---------------/ \---------------\ + * / / / \ \ \ + * / / / \ \ \ + * '---------------' '---------------' + */ + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QWERT , COLEM , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLU, KC_BRIU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD, KC_BRID, KC_MRWD, KC_MPLY, KC_MFFD, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + ) +}; + +bool get_ignore_mod_tap_interrupt(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case CM_SPAR: + return true; + default: + return false; + } +} + +layer_state_t layer_state_set_user(layer_state_t state) { + return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); +} + +// Flexible macOS-friendly Grave Escape +// https://docs.qmk.fm/#/feature_key_overrides?id=flexible-macos-friendly-grave-escape + +const key_override_t tilde_esc_override = ko_make_basic(MOD_MASK_SHIFT, KC_ESC, S(KC_GRAVE)); +const key_override_t grave_esc_override = ko_make_basic(MOD_MASK_GUI, KC_ESC, KC_GRAVE); +const key_override_t delete_key_override = ko_make_basic(MOD_MASK_SHIFT, KC_BSPACE, KC_DELETE); + + +const key_override_t **key_overrides = (const key_override_t *[]){ + &tilde_esc_override, + &grave_esc_override, + &delete_key_override, + NULL +}; diff --git a/keyboards/bastardkb/scylla/keymaps/cykedev/rules.mk b/keyboards/bastardkb/scylla/keymaps/cykedev/rules.mk new file mode 100644 index 000000000000..1ef732910bfc --- /dev/null +++ b/keyboards/bastardkb/scylla/keymaps/cykedev/rules.mk @@ -0,0 +1,4 @@ +MOUSEKEY_ENABLE = no # Mouse keys +NKRO_ENABLE = yes # USB Nkey Rollover +RGB_MATRIX_ENABLE = no # Enable keyboard RGB matrix +KEY_OVERRIDE_ENABLE = yes # Enable Key Overrides, see https://docs.qmk.fm/#/feature_key_overrides diff --git a/keyboards/bastardkb/scylla/keymaps/manna-harbour_miryoku/config.h b/keyboards/bastardkb/scylla/keymaps/manna-harbour_miryoku/config.h new file mode 100644 index 000000000000..09433f3f400c --- /dev/null +++ b/keyboards/bastardkb/scylla/keymaps/manna-harbour_miryoku/config.h @@ -0,0 +1,24 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . + +#pragma once + +#define XXX KC_NO + +#define LAYOUT_miryoku( \ + 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, \ + N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ +) \ +LAYOUT_split_4x6_5( \ +XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, \ +XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX, \ +XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX, \ +XXX, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, XXX, \ + K32, K33, K34, K35, K36, K37, \ + XXX, XXX, XXX, XXX \ +) diff --git a/keyboards/bastardkb/scylla/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/bastardkb/scylla/keymaps/manna-harbour_miryoku/keymap.c new file mode 100644 index 000000000000..7c5717a0fee0 --- /dev/null +++ b/keyboards/bastardkb/scylla/keymaps/manna-harbour_miryoku/keymap.c @@ -0,0 +1,5 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/keyboards/bastardkb/scylla/rules.mk b/keyboards/bastardkb/scylla/rules.mk index cc88208e33c1..6d762212fa03 100644 --- a/keyboards/bastardkb/scylla/rules.mk +++ b/keyboards/bastardkb/scylla/rules.mk @@ -7,17 +7,17 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +RGB_MATRIX_ENABLE = yes # Enable keyboard RGB matrix (do not use together with RGBLIGHT_ENABLE) +RGB_MATRIX_DRIVER = WS2812 # RGB matrix driver support AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = yes +LTO_ENABLE = yes diff --git a/keyboards/bastardkb/scylla/scylla.c b/keyboards/bastardkb/scylla/scylla.c index f9e79170854d..b110d7ff5a60 100644 --- a/keyboards/bastardkb/scylla/scylla.c +++ b/keyboards/bastardkb/scylla/scylla.c @@ -1,4 +1,4 @@ -/* +/* * Copyright 2021 Quentin LEBASTARD * * This program is free software: you can redistribute it and/or modify @@ -16,3 +16,46 @@ */ #include "scylla.h" + +#ifdef RGB_MATRIX_ENABLE +led_config_t g_led_config = { { + // left + { 0, 7, 8, 15, 16, 20 }, + { 1, 6, 9, 14, 17, 21 }, + { 2, 5, 10, 13, 18, 22 }, + { 3, 4, 11, 12, 19, 23 }, + { NO_LED, 28, 24, 26, 27, 25 }, + // right + { 29, 36, 37, 44, 45, 49 }, + { 30, 35, 38, 43, 46, 50 }, + { 31, 34, 39, 42, 47, 51 }, + { 32, 33, 40, 41, 48, 52 }, + { NO_LED, 57, 53, 55, 56, 54 } +}, { + // left + { 0, 0 }, { 0, 16 }, { 0, 32 }, { 0, 48 }, // col 1 + { 20, 48 }, { 20, 32 }, { 20, 16 }, { 20, 0 }, // col 2 + { 41, 0 }, { 41, 16 }, { 41, 32 }, { 41, 48 }, + { 61, 48 }, { 61, 32 }, { 61, 16 }, { 61, 0 }, + { 81, 0 }, { 81, 16 }, { 81, 32 }, { 81, 48 }, + { 102, 0 }, { 102, 16 }, { 102, 32 }, { 102, 48 }, + { 102, 64 }, { 81, 64 }, { 61, 56 }, { 81, 56 }, { 102, 56 }, // left thumb cluster + // right + { 224, 0 }, { 224, 16 }, { 224, 32 }, { 224, 48 }, // col 12 + { 204, 48 }, { 204, 32 }, { 204, 16 }, { 204, 0 }, // col 11 + { 183, 0 }, { 183, 16 }, { 183, 32 }, { 183, 48 }, + { 163, 48 }, { 163, 32 }, { 163, 16 }, { 163, 0 }, + { 142, 0 }, { 142, 16 }, { 142, 32 }, { 142, 48 }, + { 122, 0 }, { 122, 16 }, { 122, 32 }, { 122, 48 }, + { 122, 64 }, { 142, 64 }, { 163, 56 }, { 142, 56 }, { 122, 56 } // right thumb cluster +}, { + // left + 2, 2, 2, 2, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 2, 2, 2, 2, 2, + // right + 2, 2, 2, 2, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 2, 2, 2, 2, 2 +} }; +#endif diff --git a/keyboards/bastardkb/skeletyl/config.h b/keyboards/bastardkb/skeletyl/config.h new file mode 100644 index 000000000000..a7530a5e73ed --- /dev/null +++ b/keyboards/bastardkb/skeletyl/config.h @@ -0,0 +1,103 @@ +/* + * Copyright 2021 Quentin LEBASTARD + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once +#include "config_common.h" +#define VENDOR_ID 0xA8F8 +#define PRODUCT_ID 0x1830 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Bastard Keyboards +#define PRODUCT Skeletyl + +#define MATRIX_ROWS 8 +#define MATRIX_COLS 5 +#define RGBLIGHT_LIMIT_VAL 180 +#define MATRIX_ROW_PINS { B5, F7, F6, B6 } +#define MATRIX_COL_PINS { E6, C6, B1, B3, B2 } + +#define DIODE_DIRECTION ROW2COL + +#define RGB_DI_PIN D2 +#define RGBLED_NUM 36 +#define RGBLED_SPLIT { 18, 18 } +#define RGBLIGHT_ANIMATIONS + +#define DEBOUNCE 5 + +#define SOFT_SERIAL_PIN D0 + +#define USB_POLLING_INTERVAL_MS 1 +#define MASTER_RIGHT + +// RGB matrix support +#ifdef RGB_MATRIX_ENABLE +# define SPLIT_TRANSPORT_MIRROR +# define DRIVER_LED_TOTAL 36 // Number of LEDs +# define RGB_MATRIX_SPLIT { 18, 18 } +# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 50 +# define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS +# define RGB_DISABLE_WHEN_USB_SUSPENDED +# define RGB_MATRIX_KEYPRESSES +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH +#endif diff --git a/keyboards/bastardkb/skeletyl/info.json b/keyboards/bastardkb/skeletyl/info.json new file mode 100644 index 000000000000..54c14da330d8 --- /dev/null +++ b/keyboards/bastardkb/skeletyl/info.json @@ -0,0 +1,47 @@ +{ + "keyboard_name": "Skeletyl", + "url": "https://www.bastardkb.com", + "maintainer": "Quentin Lebastard", + "layouts": { + "LAYOUT_split_3x5_3": { + "layout": [ + {"label":"L00", "x":0, "y":0}, + {"label":"L01", "x":1, "y":0}, + {"label":"L02", "x":2, "y":0}, + {"label":"L03", "x":3, "y":0}, + {"label":"L04", "x":4, "y":0}, + {"label":"R00", "x":11, "y":0}, + {"label":"R01", "x":12, "y":0}, + {"label":"R02", "x":13, "y":0}, + {"label":"R03", "x":14, "y":0}, + {"label":"R04", "x":15, "y":0}, + {"label":"L10", "x":0, "y":1}, + {"label":"L11", "x":1, "y":1}, + {"label":"L12", "x":2, "y":1}, + {"label":"L13", "x":3, "y":1}, + {"label":"L14", "x":4, "y":1}, + {"label":"R10", "x":11, "y":1}, + {"label":"R11", "x":12, "y":1}, + {"label":"R12", "x":13, "y":1}, + {"label":"R13", "x":14, "y":1}, + {"label":"R14", "x":15, "y":1}, + {"label":"L20", "x":0, "y":2}, + {"label":"L21", "x":1, "y":2}, + {"label":"L22", "x":2, "y":2}, + {"label":"L23", "x":3, "y":2}, + {"label":"L24", "x":4, "y":2}, + {"label":"R20", "x":11, "y":2}, + {"label":"R21", "x":12, "y":2}, + {"label":"R22", "x":13, "y":2}, + {"label":"R23", "x":14, "y":2}, + {"label":"R24", "x":15, "y":2}, + {"label":"L33", "x":4, "y":3}, + {"label":"L34", "x":5, "y":3}, + {"label":"L31", "x":6, "y":3}, + {"label":"R33", "x":9, "y":3}, + {"label":"R34", "x":10, "y":3}, + {"label":"R31", "x":11, "y":3} + ] + } + } +} diff --git a/keyboards/bastardkb/skeletyl/keymaps/default/keymap.c b/keyboards/bastardkb/skeletyl/keymaps/default/keymap.c new file mode 100644 index 000000000000..56e56d9a434c --- /dev/null +++ b/keyboards/bastardkb/skeletyl/keymaps/default/keymap.c @@ -0,0 +1,70 @@ +/* + * Copyright 2021 Quentin LEBASTARD + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_split_3x5_3( + //,-----------------------------------------------------. ,-----------------------------------------------------. + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + KC_LGUI, KC_SPC , MO(1), MO(2), KC_ENT , KC_RALT + //`--------------------------' `--------------------------' + + ), + + [1] = LAYOUT_split_3x5_3( + //,-----------------------------------------------------. ,-----------------------------------------------------. + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT, XXXXXXX, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + KC_LGUI, KC_SPC, _______, MO(3), KC_ENT, KC_RALT + //`--------------------------' `--------------------------' + ), + + [2] = LAYOUT_split_3x5_3( + //,-----------------------------------------------------. ,-----------------------------------------------------. + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + KC_LGUI, KC_SPC, MO(3), _______, KC_ENT, KC_RALT + //`--------------------------' `--------------------------' + ), + + [3] = LAYOUT_split_3x5_3( + //,-----------------------------------------------------. ,-----------------------------------------------------. + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + KC_LGUI, KC_SPC, _______, _______, KC_ENT, KC_RALT + //`--------------------------' `--------------------------' + ) +}; diff --git a/keyboards/bastardkb/skeletyl/readme.md b/keyboards/bastardkb/skeletyl/readme.md new file mode 100644 index 000000000000..6c36b5835641 --- /dev/null +++ b/keyboards/bastardkb/skeletyl/readme.md @@ -0,0 +1,17 @@ +# Skeletyl + +A very small keyboard made for ergonomic enthusiasts. + +* Keyboard Maintainer: [Bastard Keyboards](https://github.com/Bastardkb/) +* Hardware Supported: elite-C V4 +* Hardware Availability: [Bastardkb.com](https://bastardkb.com/) + +Make example for this keyboard (after setting up your build environment): + + make bastardkb/skeletyl:default + +This keyboard is made to be used with the Miryoku layout, do not use the default keymap. + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +See the [keyboard build instructions](http://docs.bastardkb.com/) diff --git a/keyboards/bastardkb/skeletyl/rules.mk b/keyboards/bastardkb/skeletyl/rules.mk new file mode 100644 index 000000000000..f9aa68e2af75 --- /dev/null +++ b/keyboards/bastardkb/skeletyl/rules.mk @@ -0,0 +1,29 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 +RGB_MATRIX_ENABLE = yes # Enable keyboard RGB matrix (do not use together with RGBLIGHT_ENABLE) +RGB_MATRIX_DRIVER = WS2812 # RGB matrix driver support +AUDIO_ENABLE = no # Audio output +SPLIT_KEYBOARD = yes +LTO_ENABLE = yes + +AUDIO_SUPPORTED = no +RGB_MATRIX_SUPPORTED = yes +RGBLIGHT_SUPPORTED = yes + +LAYOUTS = split_3x5_3 diff --git a/keyboards/bastardkb/skeletyl/skeletyl.c b/keyboards/bastardkb/skeletyl/skeletyl.c new file mode 100644 index 000000000000..b72becbb2539 --- /dev/null +++ b/keyboards/bastardkb/skeletyl/skeletyl.c @@ -0,0 +1,81 @@ +/* + * Copyright 2021 Quentin LEBASTARD + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "skeletyl.h" + +/** + * LEDs index. + * + * ╭────────────────────╮ ╭────────────────────╮ + * 2 3 8 9 12 30 27 26 21 20 + * ├────────────────────┤ ├────────────────────┤ + * 1 4 7 10 13 31 28 25 22 19 + * ├────────────────────┤ ├────────────────────┤ + * 0 5 6 11 14 32 29 24 23 18 + * ╰────────────────────╯ ╰────────────────────╯ + * 15 16 17 35 34 33 + * ╰────────────╯ ╰────────────╯ + */ +// clang-format off +#ifdef RGB_MATRIX_ENABLE +led_config_t g_led_config = { { + /* Key Matrix to LED index. */ + // Left split. + { 2, 3, 8, 9, 12 }, // Top row + { 1, 4, 7, 10, 13 }, // Middle row + { 0, 5, 6, 11, 14 }, // Bottom row + { 17, NO_LED, 15, 16, NO_LED }, // Thumb cluster + // Right split. + { 20, 21, 26, 27, 30 }, // Top row + { 19, 22, 25, 28, 31 }, // Middle row + { 18, 23, 24, 29, 32 }, // Bottom row + { 35, NO_LED, 33, 34, NO_LED }, // Thumb cluster +}, { + /* LED index to physical position. */ + // Left split. + /* index=0 */ { 0, 42 }, { 0, 21 }, { 0, 0 }, // col 1 (left most) + /* index=3 */ { 18, 0 }, { 18, 21 }, { 18, 42 }, // col 2 + /* index=6 */ { 36, 42 }, { 36, 21 }, { 36, 0 }, + /* index=9 */ { 54, 0 }, { 54, 21 }, { 54, 42 }, + /* index=12 */ { 72, 0 }, { 72, 21 }, { 72, 42 }, + /* index=15 */ { 72, 64 }, { 90, 64 }, { 108, 64 }, // Thumb cluster + // Right split. + /* index=18 */ { 224, 42 }, { 224, 21 }, { 224, 0 }, // col 10 (right most) + /* index=21 */ { 206, 0 }, { 206, 21 }, { 206, 42 }, // col 9 + /* index=24 */ { 188, 42 }, { 188, 21 }, { 188, 0 }, + /* index=27 */ { 170, 0 }, { 170, 21 }, { 170, 42 }, + /* index=30 */ { 152, 0 }, { 152, 21 }, { 152, 42 }, + /* index=33 */ { 152, 64 }, { 134, 64 }, { 116, 64 }, // Thumb cluster +}, { + /* LED index to flag. */ + // Left split. + /* index=0 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // col 1 + /* index=3 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // col 2 + /* index=6 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + /* index=9 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + /* index=12 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + /* index=15 */ LED_FLAG_MODIFIER, LED_FLAG_MODIFIER, LED_FLAG_MODIFIER, // Thumb cluster + // Right split. + /* index=18 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // col 10 + /* index=21 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // col 9 + /* index=24 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + /* index=27 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + /* index=30 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + /* index=33 */ LED_FLAG_MODIFIER, LED_FLAG_MODIFIER, LED_FLAG_MODIFIER, // Thumb cluster +} }; +#endif +// clang-format on diff --git a/keyboards/bastardkb/skeletyl/skeletyl.h b/keyboards/bastardkb/skeletyl/skeletyl.h new file mode 100644 index 000000000000..3e90abb01d51 --- /dev/null +++ b/keyboards/bastardkb/skeletyl/skeletyl.h @@ -0,0 +1,38 @@ +/* + * Copyright 2021 Quentin LEBASTARD + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once +#include "quantum.h" + +// clang-format off +#define LAYOUT_split_3x5_3( \ + k00, k01, k02, k03, k04, k44, k43, k42, k41, k40, \ + k10, k11, k12, k13, k14, k54, k53, k52, k51, k50, \ + k20, k21, k22, k23, k24, k64, k63, k62, k61, k60, \ + k33, k34, k31, k71, k74, k73 \ +) \ +{ \ + { k00, k01, k02, k03, k04 }, \ + { k10, k11, k12, k13, k14 }, \ + { k20, k21, k22, k23, k24 }, \ + { k31, KC_NO, k33, k34, KC_NO }, \ + { k40, k41, k42, k43, k44 }, \ + { k50, k51, k52, k53, k54 }, \ + { k60, k61, k62, k63, k64 }, \ + { k71, KC_NO, k73, k74, KC_NO }, \ +} +// clang-format on diff --git a/keyboards/bastardkb/tbk/info.json b/keyboards/bastardkb/tbk/info.json index a598b0399904..104932e47124 100644 --- a/keyboards/bastardkb/tbk/info.json +++ b/keyboards/bastardkb/tbk/info.json @@ -2,8 +2,6 @@ "keyboard_name": "The Bastard Keyboard", "url": "https://bastardkb.com/", "maintainer": "Quentin Lebastard", - "width": 17, - "height": 8, "layouts": { "LAYOUT_split_4x6_5": { "layout": [ diff --git a/keyboards/bastardkb/tbk/rules.mk b/keyboards/bastardkb/tbk/rules.mk index cc88208e33c1..69b200da2101 100644 --- a/keyboards/bastardkb/tbk/rules.mk +++ b/keyboards/bastardkb/tbk/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 SPLIT_KEYBOARD = yes diff --git a/keyboards/bastardkb/tbkmini/config.h b/keyboards/bastardkb/tbkmini/config.h index 9aee4d5f9786..b2308bc8ed6f 100644 --- a/keyboards/bastardkb/tbkmini/config.h +++ b/keyboards/bastardkb/tbkmini/config.h @@ -1,4 +1,4 @@ -/* +/* * Copyright 2021 Quentin LEBASTARD * * This program is free software: you can redistribute it and/or modify @@ -45,3 +45,62 @@ #define F_SCL 400000L #define USB_POLLING_INTERVAL_MS 1 #define MASTER_RIGHT + +// RGB matrix support +#ifdef RGB_MATRIX_ENABLE +# define SPLIT_TRANSPORT_MIRROR +# define DRIVER_LED_TOTAL 42 // Number of LEDs +# define RGB_MATRIX_SPLIT { 21, 21 } +# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 50 +# define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS +# define RGB_DISABLE_WHEN_USB_SUSPENDED +# define RGB_MATRIX_KEYPRESSES +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH +#endif diff --git a/keyboards/bastardkb/tbkmini/info.json b/keyboards/bastardkb/tbkmini/info.json index b0446a0c0f05..d7fddeb7e61b 100644 --- a/keyboards/bastardkb/tbkmini/info.json +++ b/keyboards/bastardkb/tbkmini/info.json @@ -2,8 +2,6 @@ "keyboard_name": "TBK Mini", "url": "https://www.bastardkb.com", "maintainer": "Quentin Lebastard", - "width": 17, - "height": 4, "layouts": { "LAYOUT_split_3x6_3": { "layout": [ diff --git a/keyboards/bastardkb/tbkmini/rules.mk b/keyboards/bastardkb/tbkmini/rules.mk index 76f9cf11a401..a01a558102d9 100644 --- a/keyboards/bastardkb/tbkmini/rules.mk +++ b/keyboards/bastardkb/tbkmini/rules.mk @@ -7,25 +7,24 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +RGB_MATRIX_ENABLE = yes # Enable keyboard RGB matrix (do not use together with RGBLIGHT_ENABLE) +RGB_MATRIX_DRIVER = WS2812 # RGB matrix driver support AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = yes -TAP_DANCE_ENABLE = no LTO_ENABLE = yes AUDIO_SUPPORTED = no -RGB_MATRIX_SUPPORTED = no +RGB_MATRIX_SUPPORTED = yes RGBLIGHT_SUPPORTED = yes LAYOUTS = split_3x6_3 diff --git a/keyboards/bastardkb/tbkmini/tbkmini.c b/keyboards/bastardkb/tbkmini/tbkmini.c index b932401c08dd..7bbd374c012a 100644 --- a/keyboards/bastardkb/tbkmini/tbkmini.c +++ b/keyboards/bastardkb/tbkmini/tbkmini.c @@ -1,4 +1,4 @@ -/* +/* * Copyright 2021 Quentin LEBASTARD * * This program is free software: you can redistribute it and/or modify @@ -16,3 +16,44 @@ */ #include "tbkmini.h" + +#ifdef RGB_MATRIX_ENABLE +led_config_t g_led_config = { { + // left + { 0, 5, 6, 11, 12, 15 }, + { 1, 4, 7, 10, 13, 16 }, + { 2, 3, 8, 9, 14, 17 }, + { NO_LED, 18, NO_LED, 19, 20, NO_LED }, + // right + { 21, 26, 27, 32, 33, 36 }, + { 22, 25, 28, 31, 34, 37 }, + { 23, 24, 29, 30, 35, 38 }, + { NO_LED, 39, NO_LED, 40, 41, NO_LED } +}, { + // left + { 0, 0 }, { 0, 21 }, { 0, 42 }, // col 1 + { 20, 42 }, { 20, 21 }, { 20, 0 }, // col 2 + { 41, 0 }, { 41, 21 }, { 41, 42 }, + { 61, 42 }, { 61, 21 }, { 61, 0 }, + { 81, 0 }, { 81, 21 }, { 81, 42 }, + { 102, 0 }, { 102, 21 }, { 102, 42 }, + { 61, 64 }, { 81, 64 }, { 102, 64 }, // left thumb cluster + // right + { 224, 0 }, { 224, 21 }, { 224, 42 }, // col 12 + { 204, 42 }, { 204, 21 }, { 204, 0 }, // col 11 + { 183, 0 }, { 183, 21 }, { 183, 42 }, + { 163, 42 }, { 163, 21 }, { 163, 0 }, + { 142, 0 }, { 142, 21 }, { 142, 42 }, + { 122, 0 }, { 122, 21 }, { 122, 42 }, + { 163, 64 }, { 142, 64 }, { 122, 64 } // right thumb cluster +}, { + // left + 2, 2, 2, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, + 2, 2, 2, + // right + 2, 2, 2, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, + 2, 2, 2 +} }; +#endif diff --git a/keyboards/bat43/config.h b/keyboards/bat43/config.h index 645509e43df9..19b485fd1694 100644 --- a/keyboards/bat43/config.h +++ b/keyboards/bat43/config.h @@ -121,59 +121,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -194,26 +141,6 @@ along with this program. If not, see . #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/bat43/rev1/info.json b/keyboards/bat43/rev1/info.json index dea07d298773..0384bb5feb6f 100644 --- a/keyboards/bat43/rev1/info.json +++ b/keyboards/bat43/rev1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "bat43", "url": "", "maintainer": "yfuku", - "width": 15, - "height": 5.1, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/bat43/rev2/info.json b/keyboards/bat43/rev2/info.json index e1a6c8607cda..352d9a6beb5f 100644 --- a/keyboards/bat43/rev2/info.json +++ b/keyboards/bat43/rev2/info.json @@ -2,8 +2,6 @@ "keyboard_name": "bat43", "url": "", "maintainer": "yfuku", - "width": 15, - "height": 5.1, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/bat43/rules.mk b/keyboards/bat43/rules.mk index 8ecfbf9f29dc..ed0b79f296c0 100644 --- a/keyboards/bat43/rules.mk +++ b/keyboards/bat43/rules.mk @@ -2,31 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = no # 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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output DEFAULT_FOLDER = bat43/rev2 diff --git a/keyboards/bear_face/rules.mk b/keyboards/bear_face/rules.mk index 499388ed18f3..25be315fc963 100644 --- a/keyboards/bear_face/rules.mk +++ b/keyboards/bear_face/rules.mk @@ -6,19 +6,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# 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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI controls -BLUETOOTH_ENABLE = no # Enable Bluetooth -AUDIO_ENABLE = no # Audio output6 +AUDIO_ENABLE = no # Audio output DEFAULT_FOLDER = bear_face/v1 diff --git a/keyboards/bear_face/v1/info.json b/keyboards/bear_face/v1/info.json index 6fbc4229b82a..0435c5c2295e 100644 --- a/keyboards/bear_face/v1/info.json +++ b/keyboards/bear_face/v1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "bear_face", "url": "https://github.com/chemicalwill/bear_face_pcb", "maintainer": "chemicalwill", - "width": 15, - "height": 6, "layouts": { "LAYOUT_83_ansi": { "layout": [ diff --git a/keyboards/bear_face/v2/info.json b/keyboards/bear_face/v2/info.json index 552c88defbc8..6d12f04d42f0 100644 --- a/keyboards/bear_face/v2/info.json +++ b/keyboards/bear_face/v2/info.json @@ -2,8 +2,6 @@ "keyboard_name": "bear_face", "url": "https://github.com/chemicalwill/bear_face_pcb", "maintainer": "chemicalwill", - "width": 15, - "height": 6, "layouts": { "LAYOUT_83_ansi": { "layout": [ diff --git a/keyboards/beatervan/info.json b/keyboards/beatervan/info.json index f6f3876422a3..c3030a411c1f 100644 --- a/keyboards/beatervan/info.json +++ b/keyboards/beatervan/info.json @@ -2,8 +2,6 @@ "keyboard_name": "beatervan", "url": "", "maintainer": "OJ", - "width": 12.75, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/beatervan/rules.mk b/keyboards/beatervan/rules.mk index fd23f3301d5d..54447c76245e 100644 --- a/keyboards/beatervan/rules.mk +++ b/keyboards/beatervan/rules.mk @@ -7,17 +7,13 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI controls +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality UNICODE_ENABLE = yes # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/bemeier/bmek/info.json b/keyboards/bemeier/bmek/info.json index 51dc980c21f4..80e06d91fb9e 100755 --- a/keyboards/bemeier/bmek/info.json +++ b/keyboards/bemeier/bmek/info.json @@ -2,8 +2,6 @@ "keyboard_name": "bmek", "url": "https://github.com/Bemeier/bmek", "maintainer": "Bemeier", - "width": 18, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/bemeier/bmek/rev1/rules.mk b/keyboards/bemeier/bmek/rev1/rules.mk index 17d390f22146..9e6bcd765393 100755 --- a/keyboards/bemeier/bmek/rev1/rules.mk +++ b/keyboards/bemeier/bmek/rev1/rules.mk @@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no EXTRAKEY_ENABLE = yes CONSOLE_ENABLE = no diff --git a/keyboards/bemeier/bmek/rev2/rules.mk b/keyboards/bemeier/bmek/rev2/rules.mk index 17d390f22146..9e6bcd765393 100755 --- a/keyboards/bemeier/bmek/rev2/rules.mk +++ b/keyboards/bemeier/bmek/rev2/rules.mk @@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no EXTRAKEY_ENABLE = yes CONSOLE_ENABLE = no diff --git a/keyboards/bemeier/bmek/rev3/rules.mk b/keyboards/bemeier/bmek/rev3/rules.mk index 17d390f22146..9e6bcd765393 100755 --- a/keyboards/bemeier/bmek/rev3/rules.mk +++ b/keyboards/bemeier/bmek/rev3/rules.mk @@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no EXTRAKEY_ENABLE = yes CONSOLE_ENABLE = no diff --git a/keyboards/bfake/bfake.h b/keyboards/bfake/bfake.h index 599ea0f870ee..59a40de2f862 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 . */ -#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/bfake/info.json b/keyboards/bfake/info.json index 761cbdc54bf2..576c470b882d 100644 --- a/keyboards/bfake/info.json +++ b/keyboards/bfake/info.json @@ -2,8 +2,6 @@ "keyboard_name": "b.fake", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "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/bfake/rules.mk b/keyboards/bfake/rules.mk index c25b22249f3d..5b70617255f1 100644 --- a/keyboards/bfake/rules.mk +++ b/keyboards/bfake/rules.mk @@ -2,17 +2,10 @@ MCU = atmega32a # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid # build options -BOOTMAGIC_ENABLE = full +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes EXTRAKEY_ENABLE = yes CONSOLE_ENABLE = no diff --git a/keyboards/bigseries/1key/1key.h b/keyboards/bigseries/1key/1key.h index 34414077986a..6e5ddcc7606e 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 . */ -#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 f26b242128f8..f31a7fc0575a 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 . */ -#ifndef CONFIG_H -#define CONFIG_H + +#pragma once #include "config_common.h" @@ -55,5 +55,3 @@ along with this program. If not, see . #endif #define RGBLIGHT_LIMIT_VAL 128 #endif - -#endif diff --git a/keyboards/bigseries/1key/info.json b/keyboards/bigseries/1key/info.json index a289e122d175..4355191d2ced 100644 --- a/keyboards/bigseries/1key/info.json +++ b/keyboards/bigseries/1key/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Big Series 1-Key", "url": "", "maintainer": "qmk", - "width": 4, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/bigseries/1key/keymaps/default/keymap.c b/keyboards/bigseries/1key/keymaps/default/keymap.c index 781205d42a46..830093af54f9 100755 --- a/keyboards/bigseries/1key/keymaps/default/keymap.c +++ b/keyboards/bigseries/1key/keymaps/default/keymap.c @@ -39,9 +39,6 @@ void matrix_init_user(void) { } } -void matrix_scan_user(void) { -} - bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case KC_A: @@ -53,37 +50,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -void led_set_user(uint8_t usb_led) { - - if (usb_led & (1 << USB_LED_NUM_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_CAPS_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_SCROLL_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_COMPOSE)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_KANA)) { - - } else { - - } - -} diff --git a/keyboards/bigseries/1key/keymaps/tester/keymap.c b/keyboards/bigseries/1key/keymaps/tester/keymap.c index bfecdb38b8e3..8248ae789507 100755 --- a/keyboards/bigseries/1key/keymaps/tester/keymap.c +++ b/keyboards/bigseries/1key/keymaps/tester/keymap.c @@ -42,9 +42,6 @@ void matrix_init_user(void) { } } -void matrix_scan_user(void) { -} - bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case KC_A: @@ -56,37 +53,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -void led_set_user(uint8_t usb_led) { - - if (usb_led & (1 << USB_LED_NUM_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_CAPS_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_SCROLL_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_COMPOSE)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_KANA)) { - - } else { - - } - -} diff --git a/keyboards/bigseries/1key/rules.mk b/keyboards/bigseries/1key/rules.mk index 18863477f06f..a8df3272aa6e 100755 --- a/keyboards/bigseries/1key/rules.mk +++ b/keyboards/bigseries/1key/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u2 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE = no # Audio output diff --git a/keyboards/bigseries/2key/2key.h b/keyboards/bigseries/2key/2key.h index dcbf2f764c44..eff82fef9362 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 . */ -#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 4f75e28470fa..53866a15d1c0 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 . */ -#ifndef CONFIG_H -#define CONFIG_H + +#pragma once #include "config_common.h" @@ -55,5 +55,3 @@ along with this program. If not, see . #endif #define RGBLIGHT_LIMIT_VAL 128 #endif - -#endif diff --git a/keyboards/bigseries/2key/info.json b/keyboards/bigseries/2key/info.json index faa5ac8545f8..df3237defca2 100644 --- a/keyboards/bigseries/2key/info.json +++ b/keyboards/bigseries/2key/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Big Series 2-Key", "url": "", "maintainer": "qmk", - "width": 8, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/bigseries/2key/keymaps/default/keymap.c b/keyboards/bigseries/2key/keymaps/default/keymap.c index de430d24d38d..128a3e9c821a 100755 --- a/keyboards/bigseries/2key/keymaps/default/keymap.c +++ b/keyboards/bigseries/2key/keymaps/default/keymap.c @@ -40,44 +40,3 @@ void matrix_init_user(void) { initialized = 1; } } - -void matrix_scan_user(void) { -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - - if (usb_led & (1 << USB_LED_NUM_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_CAPS_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_SCROLL_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_COMPOSE)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_KANA)) { - - } else { - - } - -} diff --git a/keyboards/bigseries/2key/keymaps/lock/keymap.c b/keyboards/bigseries/2key/keymaps/lock/keymap.c index 6acf62d48260..3646fb40d16c 100755 --- a/keyboards/bigseries/2key/keymaps/lock/keymap.c +++ b/keyboards/bigseries/2key/keymaps/lock/keymap.c @@ -42,44 +42,3 @@ void matrix_init_user(void) { initialized = 1; } } - -void matrix_scan_user(void) { -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - - if (usb_led & (1 << USB_LED_NUM_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_CAPS_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_SCROLL_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_COMPOSE)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_KANA)) { - - } else { - - } - -} diff --git a/keyboards/bigseries/2key/keymaps/tester/keymap.c b/keyboards/bigseries/2key/keymaps/tester/keymap.c index 025fd734926a..8938b1b40bc6 100755 --- a/keyboards/bigseries/2key/keymaps/tester/keymap.c +++ b/keyboards/bigseries/2key/keymaps/tester/keymap.c @@ -41,44 +41,3 @@ void matrix_init_user(void) { initialized = 1; } } - -void matrix_scan_user(void) { -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - - if (usb_led & (1 << USB_LED_NUM_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_CAPS_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_SCROLL_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_COMPOSE)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_KANA)) { - - } else { - - } - -} diff --git a/keyboards/bigseries/2key/rules.mk b/keyboards/bigseries/2key/rules.mk index 18863477f06f..a8df3272aa6e 100755 --- a/keyboards/bigseries/2key/rules.mk +++ b/keyboards/bigseries/2key/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u2 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE = no # Audio output diff --git a/keyboards/bigseries/3key/3key.h b/keyboards/bigseries/3key/3key.h index 6aa843c263f3..caee1e455198 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 . */ -#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 a4a369454284..4a474cc3d14c 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 . */ -#ifndef CONFIG_H -#define CONFIG_H + +#pragma once #include "config_common.h" @@ -55,5 +55,3 @@ along with this program. If not, see . #endif #define RGBLIGHT_LIMIT_VAL 128 #endif - -#endif diff --git a/keyboards/bigseries/3key/info.json b/keyboards/bigseries/3key/info.json index 4e48ca47e66a..17f76214801f 100644 --- a/keyboards/bigseries/3key/info.json +++ b/keyboards/bigseries/3key/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Big Series 3-Key", "url": "", "maintainer": "qmk", - "width": 12, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/bigseries/3key/keymaps/default/keymap.c b/keyboards/bigseries/3key/keymaps/default/keymap.c index 3d3f4923dd3f..855c7c3ecd44 100755 --- a/keyboards/bigseries/3key/keymaps/default/keymap.c +++ b/keyboards/bigseries/3key/keymaps/default/keymap.c @@ -41,9 +41,6 @@ void matrix_init_user(void) { } } -void matrix_scan_user(void) { -} - bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case KC_A: @@ -55,37 +52,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -void led_set_user(uint8_t usb_led) { - - if (usb_led & (1 << USB_LED_NUM_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_CAPS_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_SCROLL_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_COMPOSE)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_KANA)) { - - } else { - - } - -} diff --git a/keyboards/bigseries/3key/keymaps/tester/keymap.c b/keyboards/bigseries/3key/keymaps/tester/keymap.c index a201acd7e447..7ee0d7a4193d 100755 --- a/keyboards/bigseries/3key/keymaps/tester/keymap.c +++ b/keyboards/bigseries/3key/keymaps/tester/keymap.c @@ -41,44 +41,3 @@ void matrix_init_user(void) { initialized = 1; } } - -void matrix_scan_user(void) { -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - - if (usb_led & (1 << USB_LED_NUM_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_CAPS_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_SCROLL_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_COMPOSE)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_KANA)) { - - } else { - - } - -} diff --git a/keyboards/bigseries/3key/rules.mk b/keyboards/bigseries/3key/rules.mk index 18863477f06f..a8df3272aa6e 100755 --- a/keyboards/bigseries/3key/rules.mk +++ b/keyboards/bigseries/3key/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u2 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE = no # Audio output diff --git a/keyboards/bigseries/4key/4key.c b/keyboards/bigseries/4key/4key.c index 891f11bbb01c..fdb9a9251426 100755 --- a/keyboards/bigseries/4key/4key.c +++ b/keyboards/bigseries/4key/4key.c @@ -15,9 +15,3 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include "4key.h" - -void matrix_scan_kb(void) { - // Looping keyboard code goes here - // This runs every cycle (a lot) - matrix_scan_user(); -}; diff --git a/keyboards/bigseries/4key/4key.h b/keyboards/bigseries/4key/4key.h index 21373fdeda43..7e9ff7a7935a 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 . */ -#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 3e965357990b..c1635022de2c 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 . */ -#ifndef CONFIG_H -#define CONFIG_H + +#pragma once #include "config_common.h" @@ -55,5 +55,3 @@ along with this program. If not, see . #endif #define RGBLIGHT_LIMIT_VAL 128 #endif - -#endif diff --git a/keyboards/bigseries/4key/info.json b/keyboards/bigseries/4key/info.json index f31e4826a7dc..4429159a6b1e 100644 --- a/keyboards/bigseries/4key/info.json +++ b/keyboards/bigseries/4key/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Big Series 4-Key", "url": "", "maintainer": "qmk", - "width": 8, - "height": 8, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/bigseries/4key/keymaps/default/keymap.c b/keyboards/bigseries/4key/keymaps/default/keymap.c index 4d662a27b97f..5674bc6194cf 100755 --- a/keyboards/bigseries/4key/keymaps/default/keymap.c +++ b/keyboards/bigseries/4key/keymaps/default/keymap.c @@ -40,46 +40,9 @@ void matrix_init_user(void) { } } -void matrix_scan_user(void) { -} - bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (record->event.pressed) { rgblight_step(); } return true; } - -void led_set_user(uint8_t usb_led) { - - if (usb_led & (1 << USB_LED_NUM_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_CAPS_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_SCROLL_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_COMPOSE)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_KANA)) { - - } else { - - } - -} diff --git a/keyboards/bigseries/4key/keymaps/tester/keymap.c b/keyboards/bigseries/4key/keymaps/tester/keymap.c index 021c7c4b69ce..eb2e42b7af28 100755 --- a/keyboards/bigseries/4key/keymaps/tester/keymap.c +++ b/keyboards/bigseries/4key/keymaps/tester/keymap.c @@ -41,44 +41,3 @@ void matrix_init_user(void) { initialized = 1; } } - -void matrix_scan_user(void) { -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - - if (usb_led & (1 << USB_LED_NUM_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_CAPS_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_SCROLL_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_COMPOSE)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_KANA)) { - - } else { - - } - -} diff --git a/keyboards/bigseries/4key/rules.mk b/keyboards/bigseries/4key/rules.mk index 18863477f06f..a8df3272aa6e 100755 --- a/keyboards/bigseries/4key/rules.mk +++ b/keyboards/bigseries/4key/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u2 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE = no # Audio output diff --git a/keyboards/binepad/bn003/info.json b/keyboards/binepad/bn003/info.json index fdf7e3fbb969..6bb5724e471d 100644 --- a/keyboards/binepad/bn003/info.json +++ b/keyboards/binepad/bn003/info.json @@ -2,8 +2,6 @@ "keyboard_name": "BN003", "url": "https://binepad.com", "maintainer": "binepad", - "width": 3, - "height": 1, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/binepad/bn003/rules.mk b/keyboards/binepad/bn003/rules.mk index 7b15ae06513f..60eb027a116f 100644 --- a/keyboards/binepad/bn003/rules.mk +++ b/keyboards/binepad/bn003/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = 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 diff --git a/keyboards/binepad/bn009/bn009.c b/keyboards/binepad/bn009/bn009.c new file mode 100644 index 000000000000..48bfb44dae56 --- /dev/null +++ b/keyboards/binepad/bn009/bn009.c @@ -0,0 +1,16 @@ +/* Copyright 2020 BINEPAD + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "bn009.h" diff --git a/keyboards/binepad/bn009/bn009.h b/keyboards/binepad/bn009/bn009.h new file mode 100644 index 000000000000..9a3a23fbcb4b --- /dev/null +++ b/keyboards/binepad/bn009/bn009.h @@ -0,0 +1,28 @@ +/* Copyright 2020 BINEPAD + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "quantum.h" + +#define LAYOUT( \ + k00, k01, k02, \ + k10, k11, k12, \ + k20, k21, k22 \ +) \ +{ \ + { k00, k01, k02 }, \ + { k10, k11, k12 }, \ + { k20, k21, k22 } \ +} + diff --git a/keyboards/binepad/bn009/config.h b/keyboards/binepad/bn009/config.h new file mode 100644 index 000000000000..0b12f54c75f3 --- /dev/null +++ b/keyboards/binepad/bn009/config.h @@ -0,0 +1,78 @@ +/* Copyright 2020 BINEPAD + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4249 // Binepad +#define PRODUCT_ID 0x4295 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Binepad +#define PRODUCT BN009 + +/* Key matrix size */ +#define MATRIX_ROWS 3 +#define MATRIX_COLS 3 + +#define MATRIX_ROW_PINS { D2, D1, D0 } +#define MATRIX_COL_PINS { B6, B5, B4 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is userful for the Windows task manager shortcut (ctrl+shift+esc). + */ +// #define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + + */ +//#define FORCE_NKRO + diff --git a/keyboards/binepad/bn009/info.json b/keyboards/binepad/bn009/info.json new file mode 100644 index 000000000000..2d439c825737 --- /dev/null +++ b/keyboards/binepad/bn009/info.json @@ -0,0 +1,10 @@ +{ + "keyboard_name": "BN009", + "url": "https://binepad.com", + "maintainer": "binepad", + "layouts": { + "LAYOUT": { + "layout": [{"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, {"label":"k02", "x":2, "y":0}, {"label":"k10", "x":0, "y":1}, {"label":"k11", "x":1, "y":1}, {"label":"k12", "x":2, "y":1}, {"label":"k20", "x":0, "y":2}, {"label":"k21", "x":1, "y":2}, {"label":"k22", "x":2, "y":2}] + } + } +} \ No newline at end of file diff --git a/keyboards/binepad/bn009/keymaps/default/keymap.c b/keyboards/binepad/bn009/keymaps/default/keymap.c new file mode 100644 index 000000000000..573a25d01dcb --- /dev/null +++ b/keyboards/binepad/bn009/keymaps/default/keymap.c @@ -0,0 +1,42 @@ +/* Copyright 2021 BINEPAD + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + +[0] = LAYOUT( + KC_7, KC_8, KC_9, + KC_4, KC_5, KC_6, + KC_1, KC_2, KC_3 +), + + +[1] = LAYOUT( + KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO +), + + +[2] = LAYOUT( + KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO +) + +}; diff --git a/keyboards/binepad/bn009/keymaps/default/readme.md b/keyboards/binepad/bn009/keymaps/default/readme.md new file mode 100644 index 000000000000..b3c7ba28dc50 --- /dev/null +++ b/keyboards/binepad/bn009/keymaps/default/readme.md @@ -0,0 +1 @@ +# bn009 - Default layout diff --git a/keyboards/binepad/bn009/keymaps/via/keymap.c b/keyboards/binepad/bn009/keymaps/via/keymap.c new file mode 100644 index 000000000000..4ce3d1ae786d --- /dev/null +++ b/keyboards/binepad/bn009/keymaps/via/keymap.c @@ -0,0 +1,44 @@ +/* Copyright 2021 BINEPAD + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = + LAYOUT( + KC_7 , KC_8 , KC_9, + KC_4 , KC_5 , KC_6, + KC_1 , KC_2 , KC_3 + ), + [1] = + LAYOUT( + KC_NO , KC_NO, KC_NO, + KC_NO , KC_NO, KC_NO, + KC_NO , KC_NO, KC_NO + ), + [2] = + LAYOUT( + KC_NO , KC_NO, KC_NO, + KC_NO , KC_NO, KC_NO, + KC_NO , KC_NO, KC_NO + ), + [3] = + LAYOUT( + KC_NO , KC_NO, KC_NO, + KC_NO , KC_NO, KC_NO, + KC_NO , KC_NO, KC_NO + ), +}; diff --git a/keyboards/ramonimbao/mona/keymaps/via/rules.mk b/keyboards/binepad/bn009/keymaps/via/rules.mk similarity index 100% rename from keyboards/ramonimbao/mona/keymaps/via/rules.mk rename to keyboards/binepad/bn009/keymaps/via/rules.mk diff --git a/keyboards/binepad/bn009/readme.md b/keyboards/binepad/bn009/readme.md new file mode 100644 index 000000000000..dc0442fa8269 --- /dev/null +++ b/keyboards/binepad/bn009/readme.md @@ -0,0 +1,17 @@ +# BINEPAD BN009 + +![BINEPAD BN009](https://imgur.com/fu0iXD0h.jpg) + +A 9% macropad. + +* Keyboard Maintainer: [BINEPAD] +* Hardware Supported: BN009 PCB (ATmega32U4) +* Hardware Availability: [Interest Check](https://www.binepad.com/bn009) + +**Physical reset button**: There's a small hole at the bottom of macropad. Use the reset pin provided in box and push it hard through the hole, so that it press the reset button on pcb. + +Make example for this keyboard (after setting up your build environment): + + make binepad/bn009: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/binepad/bn009/rules.mk b/keyboards/binepad/bn009/rules.mk new file mode 100644 index 000000000000..60eb027a116f --- /dev/null +++ b/keyboards/binepad/bn009/rules.mk @@ -0,0 +1,19 @@ +# 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 = yes # Commands for debug and configuration +# 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 diff --git a/keyboards/bioi/ble.c b/keyboards/bioi/ble.c index 6d1c24c3a15e..d941f7c43de4 100644 --- a/keyboards/bioi/ble.c +++ b/keyboards/bioi/ble.c @@ -31,7 +31,6 @@ along with this program. If not, see . #include "lufa.h" #include "quantum.h" #include -#include "outputselect.h" #include "print.h" diff --git a/keyboards/bioi/f60/config.h b/keyboards/bioi/f60/config.h new file mode 100644 index 000000000000..a0d498b90e68 --- /dev/null +++ b/keyboards/bioi/f60/config.h @@ -0,0 +1,72 @@ +/* +Copyright 2021 kb-elmo + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x8101 +#define PRODUCT_ID 0x4660 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Basic IO Instruments +#define PRODUCT BIOI F60 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/* Keyboard Matrix Assignments */ +#define MATRIX_ROW_PINS { B0, E6, F1, F5, F4 } +#define MATRIX_COL_PINS { F6, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, D0, D1 } + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Indicator LEDs */ +#define LED_CAPS_LOCK_PIN F0 + +#define BACKLIGHT_PIN B7 +#define BACKLIGHT_LEVELS 8 +#define BACKLIGHT_BREATHING + +#define RGB_DI_PIN B1 +#ifdef RGB_DI_PIN +# define RGBLED_NUM 5 +# define RGBLIGHT_HUE_STEP 8 +# define RGBLIGHT_SAT_STEP 8 +# define RGBLIGHT_VAL_STEP 8 +# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +# 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 WS2812_BYTE_ORDER WS2812_BYTE_ORDER_RGB +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/bioi/f60/f60.c b/keyboards/bioi/f60/f60.c new file mode 100644 index 000000000000..2af81d7ba901 --- /dev/null +++ b/keyboards/bioi/f60/f60.c @@ -0,0 +1,17 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "f60.h" diff --git a/keyboards/bioi/f60/f60.h b/keyboards/bioi/f60/f60.h new file mode 100644 index 000000000000..f984df7d0df9 --- /dev/null +++ b/keyboards/bioi/f60/f60.h @@ -0,0 +1,161 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ____ KC_NO + +#define LAYOUT_all( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k409, \ + 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, k212, k213, \ + k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k313, k407, k312, \ + k400, k401, k402, k405, k410, k411, k408, k412, k413 \ +) { \ + { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013 }, \ + { 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, k212, k213 }, \ + { k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313 }, \ + { k400, k401, k402, ____, ____, k405, ____, k407, k408, k409, k410, k411, k412, k413 } \ +} + +#define LAYOUT_60_ansi( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, \ + 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, k405, k410, k411, k412, k413 \ +) { \ + { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013 }, \ + { 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, ____, ____, k405, ____, ____, ____, ____, k410, k411, k412, k413 } \ +} + +#define LAYOUT_60_ansi_tsangan( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, \ + 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, k405, k411, k412, k413 \ +) { \ + { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013 }, \ + { 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, ____, ____, k405, ____, ____, ____, ____, ____, k411, k412, k413 } \ +} + +#define LAYOUT_60_ansi_split_bs_rshift( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, K409, \ + 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, k312, \ + k400, k401, k402, k405, k410, k411, k412, k413 \ +) { \ + { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013 }, \ + { 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, k312, k313 }, \ + { k400, k401, k402, ____, ____, k405, ____, ____, ____, K409, k410, k411, k412, k413 } \ +} + +#define LAYOUT_60_hhkb( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k409, \ + 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, k312, \ + k401, k402, k405, k411, k412 \ +) { \ + { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013 }, \ + { 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, k312, k313 }, \ + { ____, k401, k402, ____, ____, k405, ____, ____, ____, k409, ____, k411, k412, ____ } \ +} + +#define LAYOUT_60_tsangan_hhkb( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k409, \ + 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, k312, \ + k400, k401, k402, k405, k411, k412, k413 \ +) { \ + { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013 }, \ + { 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, k312, k313 }, \ + { k400, k401, k402, ____, ____, k405, ____, ____, ____, k409, ____, k411, k412, k413 } \ +} + +#define LAYOUT_60_ansi_arrow( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, \ + 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, k313, K407, K312, \ + k400, k401, k402, k405, k410, k411, k408, k412, k413 \ +) { \ + { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013 }, \ + { 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, ____, K312, k313 }, \ + { k400, k401, k402, ____, ____, k405, ____, K407, k408, ____, k410, k411, k412, k413 } \ +} + +#define LAYOUT_60_iso( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, \ + 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, k405, k410, k411, k412, k413 \ +) { \ + { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013 }, \ + { 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, ____, ____, k405, ____, ____, ____, ____, k410, k411, k412, k413 } \ +} + +#define LAYOUT_60_iso_split_bs_rshift( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k409, \ + 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, k312, \ + k400, k401, k402, k405, k410, k411, k412, k413 \ +) { \ + { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013 }, \ + { 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, k312, k313 }, \ + { k400, k401, k402, ____, ____, k405, ____, ____, ____, k409, k410, k411, k412, k413 } \ +} + +#define LAYOUT_60_iso_tsangan( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, \ + 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, k405, k411, k412, k413 \ +) { \ + { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013 }, \ + { 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, ____, ____, k405, ____, ____, ____, ____, ____, k411, k412, k413 } \ +} diff --git a/keyboards/bioi/f60/info.json b/keyboards/bioi/f60/info.json new file mode 100644 index 000000000000..dda3ffa69031 --- /dev/null +++ b/keyboards/bioi/f60/info.json @@ -0,0 +1,670 @@ +{ + "keyboard_name": "f60", + "url": "", + "maintainer": "kb-elmo", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + {"x":13.75, "y":2, "w":1.25}, + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3}, + {"x":6, "y":3}, + {"x":7, "y":3}, + {"x":8, "y":3}, + {"x":9, "y":3}, + {"x":10, "y":3}, + {"x":11, "y":3}, + {"x":12, "y":3}, + {"x":13, "y":3}, + {"x":14, "y":3}, + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4}, + {"x":11, "y":4}, + {"x":12, "y":4}, + {"x":13, "y":4}, + {"x":14, "y":4} + ] + }, + "LAYOUT_60_ansi": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":2.75}, + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":12.5, "y":4, "w":1.25}, + {"x":13.75, "y":4, "w":1.25} + ] + }, + "LAYOUT_60_ansi_tsangan": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":2.75}, + {"x":0, "y":4, "w":1.5}, + {"x":1.5, "y":4}, + {"x":2.5, "y":4, "w":1.5}, + {"x":4, "y":4, "w":7}, + {"x":11, "y":4, "w":1.5}, + {"x":12.5, "y":4}, + {"x":13.5, "y":4, "w":1.5} + ] + }, + "LAYOUT_60_ansi_split_bs_rshift": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":12.5, "y":4, "w":1.25}, + {"x":13.75, "y":4, "w":1.25} + ] + }, + "LAYOUT_60_hhkb": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":1.5, "y":4}, + {"x":2.5, "y":4, "w":1.5}, + {"x":4, "y":4, "w":7}, + {"x":11, "y":4, "w":1.5}, + {"x":12.5, "y":4} + ] + }, + "LAYOUT_60_tsangan_hhkb": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":0, "y":4, "w":1.5}, + {"x":1.5, "y":4}, + {"x":2.5, "y":4, "w":1.5}, + {"x":4, "y":4, "w":7}, + {"x":11, "y":4, "w":1.5}, + {"x":12.5, "y":4}, + {"x":13.5, "y":4, "w":1.5} + ] + }, + "LAYOUT_60_ansi_arrow": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3, "w":1.75}, + {"x":13, "y":3}, + {"x":14, "y":3}, + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4}, + {"x":11, "y":4}, + {"x":12, "y":4}, + {"x":13, "y":4}, + {"x":14, "y":4} + ] + }, + "LAYOUT_60_iso": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + {"x":13.75, "y":1, "w":1.25, "h":2}, + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":2.75}, + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":12.5, "y":4, "w":1.25}, + {"x":13.75, "y":4, "w":1.25} + ] + }, + "LAYOUT_60_iso_split_bs_rshift": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + {"x":13.75, "y":1, "w":1.25, "h":2}, + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":12.5, "y":4, "w":1.25}, + {"x":13.75, "y":4, "w":1.25} + ] + }, + "LAYOUT_60_iso_tsangan": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + {"x":13.75, "y":1, "w":1.25, "h":2}, + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":2.75}, + {"x":0, "y":4, "w":1.5}, + {"x":1.5, "y":4}, + {"x":2.5, "y":4, "w":1.5}, + {"x":4, "y":4, "w":7}, + {"x":11, "y":4, "w":1.5}, + {"x":12.5, "y":4}, + {"x":13.5, "y":4, "w":1.5} + ] + } + } +} diff --git a/keyboards/bioi/f60/keymaps/default/keymap.c b/keyboards/bioi/f60/keymaps/default/keymap.c new file mode 100644 index 000000000000..12162579cc6d --- /dev/null +++ b/keyboards/bioi/f60/keymaps/default/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_60_ansi( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL + ), + [1] = LAYOUT_60_ansi( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, + KC_TRNS, KC_HOME, KC_UP, KC_END, KC_PGUP, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, BL_TOGG, BL_INC, BL_DEC, BL_BRTG, KC_VOLD, KC_VOLU, KC_MUTE, KC_MPRV, KC_MNXT, KC_MPLY, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/bioi/f60/keymaps/via/keymap.c b/keyboards/bioi/f60/keymaps/via/keymap.c new file mode 100644 index 000000000000..398dc16ab66b --- /dev/null +++ b/keyboards/bioi/f60/keymaps/via/keymap.c @@ -0,0 +1,48 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_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_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_LEFT, KC_APP, KC_RCTL + ), + [1] = 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_HOME, KC_UP, KC_END, KC_PGUP, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, BL_TOGG, BL_INC, BL_DEC, BL_BRTG, KC_VOLD, KC_VOLU, KC_MUTE, KC_MPRV, KC_MNXT, KC_MPLY, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_DOWN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_DOWN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/ergosaurus/keymaps/default/via/rules.mk b/keyboards/bioi/f60/keymaps/via/rules.mk similarity index 100% rename from keyboards/ergosaurus/keymaps/default/via/rules.mk rename to keyboards/bioi/f60/keymaps/via/rules.mk diff --git a/keyboards/bioi/f60/readme.md b/keyboards/bioi/f60/readme.md new file mode 100644 index 000000000000..6a120acdedc9 --- /dev/null +++ b/keyboards/bioi/f60/readme.md @@ -0,0 +1,25 @@ +# BIOI F60 + +![f60](https://i.imgur.com/xOcgowIl.jpg) + +60% PCB used in the Percent Trio HHKB + +* Keyboard Maintainer: [kb-elmo](https://github.com/kb-elmo) +* Hardware Supported: BIOI F60v1.0 PCB +* Hardware Availability: (Ended groupbuy) https://percent.studio/trio-60 + +Make example for this keyboard (after setting up your build environment): + + make bioi/f60:default + +Flashing example for this keyboard: + + make bioi/f60: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 the top left key (ESC) and plug in the keyboard +* **Physical reset button**: Short the two small pads labeled "RESET" the back of the PCB +* **Keycode in layout**: Press the key mapped to `RESET` if it is available diff --git a/keyboards/bioi/f60/rules.mk b/keyboards/bioi/f60/rules.mk new file mode 100644 index 000000000000..3b84085e329a --- /dev/null +++ b/keyboards/bioi/f60/rules.mk @@ -0,0 +1,21 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +LAYOUTS = 60_ansi 60_ansi_tsangan 60_ansi_split_bs_rshift 60_hhkb 60_tsangan_hhkb 60_ansi_arrow 60_iso 60_iso_split_bs_rshift 60_iso_tsangan diff --git a/keyboards/bioi/g60/info.json b/keyboards/bioi/g60/info.json index 1594edc712a1..e14021a3eb7a 100644 --- a/keyboards/bioi/g60/info.json +++ b/keyboards/bioi/g60/info.json @@ -2,8 +2,6 @@ "keyboard_name": "BIOI G60", "url": "https://scottywei.github.io/bioi-g60ble/", "maintainer": "scottywei", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/bioi/g60/rules.mk b/keyboards/bioi/g60/rules.mk index a7e616d4d186..925767c63813 100644 --- a/keyboards/bioi/g60/rules.mk +++ b/keyboards/bioi/g60/rules.mk @@ -7,9 +7,9 @@ F_CPU = 8000000 # Bootloader selection BOOTLOADER = qmk-dfu -SRC += ../usart.c \ - ../ble.c \ - ../main.c +SRC += usart.c \ + ble.c \ + main.c OPT_DEFS += -DPROTOCOL_BLE OPT_DEFS += -DUART_RX1_BUFFER_SIZE=16 -DUART_TX1_BUFFER_SIZE=16 @@ -18,18 +18,15 @@ OPT_DEFS += -DUSART1_ENABLED # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LTO_ENABLE = yes # Reduce firmware size diff --git a/keyboards/bioi/g60ble/info.json b/keyboards/bioi/g60ble/info.json index f9c7408e5f55..f8a453773fed 100644 --- a/keyboards/bioi/g60ble/info.json +++ b/keyboards/bioi/g60ble/info.json @@ -2,11 +2,8 @@ "keyboard_name": "BIOI G60 BLE", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { - "key_count": 67, "layout": [ { "label": "Esc", "x": 0, "y": 0 }, { "label": "!", "x": 1, "y": 0 }, @@ -78,7 +75,6 @@ ] }, "LAYOUT_60_ansi": { - "key_count": 61, "layout": [ { "label": "~", "x": 0, "y": 0 }, { "label": "!", "x": 1, "y": 0 }, @@ -144,7 +140,6 @@ ] }, "LAYOUT_60_iso": { - "key_count": 62, "layout": [ { "label": "¬", "x": 0, "y": 0 }, { "label": "!", "x": 1, "y": 0 }, @@ -211,7 +206,6 @@ ] }, "LAYOUT_60_hhkb": { - "key_count": 60, "layout": [ { "label": "Esc", "x": 0, "y": 0 }, { "label": "1", "x": 1, "y": 0 }, @@ -276,7 +270,6 @@ ] }, "LAYOUT_60_ansi_split_bs_rshift": { - "key_count": 63, "layout": [ { "label": "ESC", "x": 0, "y": 0 }, { "label": "!", "x": 1, "y": 0 }, @@ -344,7 +337,6 @@ ] }, "LAYOUT_60_tsangan_hhkb": { - "key_count": 62, "layout": [ { "label": "Esc", "x": 0, "y": 0 }, { "label": "!", "x": 1, "y": 0 }, diff --git a/keyboards/bioi/g60ble/rules.mk b/keyboards/bioi/g60ble/rules.mk index 464a6d136c67..51c3119dd929 100644 --- a/keyboards/bioi/g60ble/rules.mk +++ b/keyboards/bioi/g60ble/rules.mk @@ -5,24 +5,16 @@ MCU = atmega32u4 F_CPU = 8000000 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = qmk-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # 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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes diff --git a/keyboards/bioi/main.c b/keyboards/bioi/main.c index 14f0f8de7ae2..7c8922c0a05c 100644 --- a/keyboards/bioi/main.c +++ b/keyboards/bioi/main.c @@ -33,7 +33,6 @@ along with this program. If not, see . #include "lufa.h" #include "quantum.h" #include -#include "outputselect.h" #ifdef NKRO_ENABLE #include "keycode_config.h" diff --git a/keyboards/bioi/morgan65/info.json b/keyboards/bioi/morgan65/info.json index d757f8716737..925f7af15db0 100644 --- a/keyboards/bioi/morgan65/info.json +++ b/keyboards/bioi/morgan65/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Morgan65", "url": "", "maintainer": "scottywei", - "width": 16, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/bioi/morgan65/rules.mk b/keyboards/bioi/morgan65/rules.mk index a7e616d4d186..925767c63813 100644 --- a/keyboards/bioi/morgan65/rules.mk +++ b/keyboards/bioi/morgan65/rules.mk @@ -7,9 +7,9 @@ F_CPU = 8000000 # Bootloader selection BOOTLOADER = qmk-dfu -SRC += ../usart.c \ - ../ble.c \ - ../main.c +SRC += usart.c \ + ble.c \ + main.c OPT_DEFS += -DPROTOCOL_BLE OPT_DEFS += -DUART_RX1_BUFFER_SIZE=16 -DUART_TX1_BUFFER_SIZE=16 @@ -18,18 +18,15 @@ OPT_DEFS += -DUSART1_ENABLED # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LTO_ENABLE = yes # Reduce firmware size diff --git a/keyboards/bioi/s65/info.json b/keyboards/bioi/s65/info.json index 344c701cd980..e87437a26762 100644 --- a/keyboards/bioi/s65/info.json +++ b/keyboards/bioi/s65/info.json @@ -2,8 +2,6 @@ "keyboard_name": "BIOI S65", "url": "", "maintainer": "scottywei", - "width": 18.25, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/bioi/s65/rules.mk b/keyboards/bioi/s65/rules.mk index 2c7c89112669..69b336fe56d3 100644 --- a/keyboards/bioi/s65/rules.mk +++ b/keyboards/bioi/s65/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = qmk-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # 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 LTO_ENABLE = yes # Reduce firmware size diff --git a/keyboards/bkf/bkf.c b/keyboards/bkf/bkf.c new file mode 100644 index 000000000000..6df3ed56f641 --- /dev/null +++ b/keyboards/bkf/bkf.c @@ -0,0 +1,16 @@ +/* Copyright 2021 drhigsby + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "bkf.h" diff --git a/keyboards/bkf/bkf.h b/keyboards/bkf/bkf.h new file mode 100644 index 000000000000..3ea53e2de529 --- /dev/null +++ b/keyboards/bkf/bkf.h @@ -0,0 +1,53 @@ +/* Copyright 2021 drhigsby + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +/* This a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + +#define zzzz KC_NO + +#define LAYOUT_625uC( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k311, \ + 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, k306, k308, k309, k310 \ +) { \ + { 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, zzzz, zzzz, zzzz, k306, zzzz, k308, k309, k310, k311 } \ +} + +#define LAYOUT_2x3uC( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k311, \ + 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, k304, k306, k308, k309, k310 \ +) { \ + { 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, zzzz, k304, zzzz, k306, zzzz, k308, k309, k310, k311 } \ +} diff --git a/keyboards/bkf/config.h b/keyboards/bkf/config.h new file mode 100644 index 000000000000..af1b2be747aa --- /dev/null +++ b/keyboards/bkf/config.h @@ -0,0 +1,60 @@ +/* Copyright 2021 drhigsby + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define MANUFACTURER DrHigsby +#define PRODUCT BKF - Base Kit Forty +#define VENDOR_ID 0x0007 +#define PRODUCT_ID 0x0003 +#define DEVICE_VER 0x0001 + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + +/* + * 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) + * + */ + +/* key matrix pins */ +#define MATRIX_ROW_PINS { F6, F7, B1, B3 } +#define MATRIX_COL_PINS { B6, B2, D3, D2, D1, D0, D4, C6, D7, E6, B4, B5 } +#define UNUSED_PINS + +/* Define encoder pads */ +#define ENCODERS_PAD_A { F4 } +#define ENCODERS_PAD_B { F5 } + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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/bkf/info.json b/keyboards/bkf/info.json new file mode 100644 index 000000000000..1ab228c1c25c --- /dev/null +++ b/keyboards/bkf/info.json @@ -0,0 +1,15 @@ +{ + "keyboard_name": "BKF - Base Kit Forty", + "url": "http://www.keyboard-layout-editor.com/#/gists/8a9ebae3a5f3f601bb928f7265db0e2e", + "maintainer": "drhigsby", + "layouts": { + "LAYOUT_625uC": { + "layout": [{"label":"Tab", "x":0, "y":0, "w":1.5}, {"label":"Q", "x":1.5, "y":0}, {"label":"W", "x":2.5, "y":0}, {"label":"E", "x":3.5, "y":0}, {"label":"R", "x":4.5, "y":0}, {"label":"T", "x":5.5, "y":0}, {"label":"Y", "x":6.5, "y":0}, {"label":"U", "x":7.5, "y":0}, {"label":"I", "x":8.5, "y":0}, {"label":"O", "x":9.5, "y":0}, {"label":"P", "x":10.5, "y":0}, {"label":"{", "x":11.5, "y":0}, {"label":"}", "x":12.5, "y":0}, {"label":"Caps Lock", "x":0, "y":1, "w":1.75}, {"label":"A", "x":1.75, "y":1}, {"label":"S", "x":2.75, "y":1}, {"label":"D", "x":3.75, "y":1}, {"label":"F", "x":4.75, "y":1}, {"label":"G", "x":5.75, "y":1}, {"label":"H", "x":6.75, "y":1}, {"label":"J", "x":7.75, "y":1}, {"label":"K", "x":8.75, "y":1}, {"label":"L", "x":9.75, "y":1}, {"label":":", "x":10.75, "y":1}, {"label":"Control", "x":11.75, "y":1, "w":1.75}, {"label":"Shift", "x":0, "y":2, "w":2.25}, {"label":"Z", "x":2.25, "y":2}, {"label":"X", "x":3.25, "y":2}, {"label":"C", "x":4.25, "y":2}, {"label":"V", "x":5.25, "y":2}, {"label":"B", "x":6.25, "y":2}, {"label":"N", "x":7.25, "y":2}, {"label":"M", "x":8.25, "y":2}, {"label":"<", "x":9.25, "y":2}, {"label":">", "x":10.25, "y":2}, {"label":"?", "x":11.25, "y":2}, {"label":"Shift", "x":12.25, "y":2, "w":1.25}, {"label":"Ctrl", "x":0, "y":3, "w":1.25}, {"label":"Win", "x":1.25, "y":3, "w":1.25}, {"label":"Alt", "x":2.5, "y":3, "w":1.25}, {"label":"", "x":3.75, "y":3, "w":6.25}, {"label":"Alt", "x":10, "y":3, "w":1.25}, {"label":"Win", "x":11.25, "y":3}, {"label":"Menu", "x":12.25, "y":3, "w":1.25}] + }, + + "LAYOUT_2x3uC": { + "layout": [{"label":"Tab", "x":0, "y":0, "w":1.5}, {"label":"Q", "x":1.5, "y":0}, {"label":"W", "x":2.5, "y":0}, {"label":"E", "x":3.5, "y":0}, {"label":"R", "x":4.5, "y":0}, {"label":"T", "x":5.5, "y":0}, {"label":"Y", "x":6.5, "y":0}, {"label":"U", "x":7.5, "y":0}, {"label":"I", "x":8.5, "y":0}, {"label":"O", "x":9.5, "y":0}, {"label":"P", "x":10.5, "y":0}, {"label":"{", "x":11.5, "y":0}, {"label":"}", "x":12.5, "y":0}, {"label":"Caps Lock", "x":0, "y":1, "w":1.75}, {"label":"A", "x":1.75, "y":1}, {"label":"S", "x":2.75, "y":1}, {"label":"D", "x":3.75, "y":1}, {"label":"F", "x":4.75, "y":1}, {"label":"G", "x":5.75, "y":1}, {"label":"H", "x":6.75, "y":1}, {"label":"J", "x":7.75, "y":1}, {"label":"K", "x":8.75, "y":1}, {"label":"L", "x":9.75, "y":1}, {"label":":", "x":10.75, "y":1}, {"label":"Control", "x":11.75, "y":1, "w":1.75}, {"label":"Shift", "x":0, "y":2, "w":2.25}, {"label":"Z", "x":2.25, "y":2}, {"label":"X", "x":3.25, "y":2}, {"label":"C", "x":4.25, "y":2}, {"label":"V", "x":5.25, "y":2}, {"label":"B", "x":6.25, "y":2}, {"label":"N", "x":7.25, "y":2}, {"label":"M", "x":8.25, "y":2}, {"label":"<", "x":9.25, "y":2}, {"label":">", "x":10.25, "y":2}, {"label":"?", "x":11.25, "y":2}, {"label":"Shift", "x":12.25, "y":2, "w":1.25}, {"label":"Ctrl", "x":0, "y":3, "w":1.25}, {"label":"Win", "x":1.25, "y":3, "w":1.25}, {"label":"Alt", "x":2.5, "y":3, "w":1.25}, {"label":"", "x":3.75, "y":3, "w":3}, {"label":"", "x":6.75, "y":3, "w":3}, {"label":"Alt", "x":9.75, "y":3, "w":1.25}, {"label":"Win", "x":11, "y":3, "w":1.25}, {"label":"Menu", "x":12.25, "y":3, "w":1.25}] + }, + + } +} diff --git a/keyboards/bkf/keymaps/default/keymap.c b/keyboards/bkf/keymaps/default/keymap.c new file mode 100644 index 000000000000..cb047a681673 --- /dev/null +++ b/keyboards/bkf/keymaps/default/keymap.c @@ -0,0 +1,62 @@ +/* Copyright 2021 drhigsby + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layers{ + _BASE, + _NUM, + _FN +}; + +#define NUM MO(_NUM) +#define FN MO(_FN) +#define xxx KC_TRNS + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_625uC( + KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_DEL, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, NUM, FN, KC_QUOT + ), + + + [_NUM] = LAYOUT_625uC( + KC_GRV, 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_CAPS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_MINS, KC_EQL, KC_PIPE, + xxx, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_HOME, KC_END, xxx, xxx, xxx, xxx, xxx, + xxx, xxx, xxx, xxx, xxx, xxx, xxx + ), + + [_FN] = LAYOUT_625uC( + xxx, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, + xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, + xxx, xxx, xxx, xxx, xxx, xxx, xxx + ) + +}; + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } + return true; +} diff --git a/keyboards/bkf/keymaps/default/readme.md b/keyboards/bkf/keymaps/default/readme.md new file mode 100644 index 000000000000..ea52e615832f --- /dev/null +++ b/keyboards/bkf/keymaps/default/readme.md @@ -0,0 +1 @@ +# Default BKF - Base Kit Forty Keymap diff --git a/keyboards/bkf/readme.md b/keyboards/bkf/readme.md new file mode 100644 index 000000000000..d55f9637eefd --- /dev/null +++ b/keyboards/bkf/readme.md @@ -0,0 +1,21 @@ +# BKF - Base Kit Forty + +![BKF](https://i.imgur.com/3vR0yeW.png) + +BKF, Base Kit Forty, is a 40% style keyboard that is fully compatbile with a standard base kit of keycaps with 3 different spacebar configurations. It supports both standard R3 1.75u as well as stepped R3 1.75u on the left side. The key in the top right corner also sports rotary encoder support. + +* Keyboard Maintainer: [H. Bond](https://github.com/drhigsby) +* Hardware Supported: BKF (https://github.com/drhigsby/bkf) +* Hardware Availability: open-source stacked acrylic case design available at maintainer's github / make your own + +Make example for this keyboard (after setting up your build environment): + + make bkf:default + +To place this keyboard into bootloader mode, press the reset button on the PCB or short the RST and GND pins on the pro micro. + +Flashing example for this keyboard: + + make bkf:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/bkf/rules.mk b/keyboards/bkf/rules.mk new file mode 100644 index 000000000000..c9c6de7eb4c5 --- /dev/null +++ b/keyboards/bkf/rules.mk @@ -0,0 +1,21 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 +LTO_ENABLE = no # Use link time optimization +ENCODER_ENABLE = yes diff --git a/keyboards/blackplum/info.json b/keyboards/blackplum/info.json index 8e3efc873842..63230de4f8d3 100644 --- a/keyboards/blackplum/info.json +++ b/keyboards/blackplum/info.json @@ -2,8 +2,6 @@ "keyboard_name": "blackplum", "url": "www.tokopedia.com/pixlup", "maintainer": "eriqadams", - "width": 17.25, - "height": 5.25, "layouts": { "LAYOUT_68_ansi": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Insert", "x":15.25, "y":0}, {"label":"PgUp", "x":16.25, "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":"Delete", "x":15.25, "y":1}, {"label":"PgDn", "x":16.25, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"\u2191", "x":15.25, "y":3.25}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"OS", "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":"Fn", "x":11.25, "y":4, "w":1.25}, {"label":"Ctrl", "x":12.5, "y":4, "w":1.25}, {"label":"\u2190", "x":14.25, "y":4.25}, {"label":"\u2193", "x":15.25, "y":4.25}, {"label":"\u2192", "x":16.25, "y":4.25}] diff --git a/keyboards/blackplum/rules.mk b/keyboards/blackplum/rules.mk index 76aeee6ecea4..28cb46aea891 100644 --- a/keyboards/blackplum/rules.mk +++ b/keyboards/blackplum/rules.mk @@ -2,23 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID BOOTLOADER = qmk-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 -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 diff --git a/keyboards/blank/blank01/blank01.c b/keyboards/blank/blank01/blank01.c new file mode 100644 index 000000000000..7b74a1ae348a --- /dev/null +++ b/keyboards/blank/blank01/blank01.c @@ -0,0 +1,17 @@ +/* Copyright 2021 gkeyboard + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "blank01.h" diff --git a/keyboards/blank/blank01/blank01.h b/keyboards/blank/blank01/blank01.h new file mode 100644 index 000000000000..426ebd410a61 --- /dev/null +++ b/keyboards/blank/blank01/blank01.h @@ -0,0 +1,84 @@ +/* Copyright 2021 gkeyboard + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + +/* LAYOUT_60_tsangan_hhkb + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │0e │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ + * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │ + * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ + * │40 │41 │42 │46 │4a │4b │4c │ + * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ +*/ +#define LAYOUT_60_tsangan_hhkb( \ + 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, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \ + k40, k41, k42, k46, k4a, 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, k2c, XXX, XXX }, \ + { k30, k31, 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, XXX, XXX } \ +} + +/* LAYOUT_60_ansi_tsangan + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0e │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ + * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │ + * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤ + * │40 │41 │42 │46 │4a │4b │4c │ + * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ +*/ +#define LAYOUT_60_ansi_tsangan( \ + 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, k2c, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \ + k40, k41, k42, k46, k4a, k4b, k4c \ +) { \ + { 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, k2c, XXX, XXX }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, XXX, XXX }, \ + { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, k4a, k4b, k4c, XXX, XXX } \ +} diff --git a/keyboards/blank/blank01/config.h b/keyboards/blank/blank01/config.h new file mode 100644 index 000000000000..5b28e8199c91 --- /dev/null +++ b/keyboards/blank/blank01/config.h @@ -0,0 +1,152 @@ +/* +Copyright 2021 gkeyboard + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x424C // "BL" +#define PRODUCT_ID 0x4B01 // "K01" +#define DEVICE_VER 0x0001 +#define MANUFACTURER BLANK +#define PRODUCT BLANK.01 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * 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 { D0, D1, D2, D3, B3 } +#define MATRIX_COL_PINS { D5, D4, D6, D7, B5, B4, B6, C6, C7, F7, F6, F5, F4, F1, F0 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +//#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +//#define LED_NUM_LOCK_PIN B0 +#define LED_CAPS_LOCK_PIN B7 +//#define LED_SCROLL_LOCK_PIN B2 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +//#define RGB_DI_PIN E2 +//#ifdef RGB_DI_PIN +//# define RGBLED_NUM 16 +//# define RGBLIGHT_HUE_STEP 8 +//# define RGBLIGHT_SAT_STEP 8 +//# define RGBLIGHT_VAL_STEP 8 +//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +//# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +//#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/blank/blank01/info.json b/keyboards/blank/blank01/info.json new file mode 100644 index 000000000000..af79aa7e8b67 --- /dev/null +++ b/keyboards/blank/blank01/info.json @@ -0,0 +1,146 @@ +{ + "keyboard_name": "blank01", + "url": "", + "maintainer": "gkeyboard", + "layouts": { + "LAYOUT_60_tsangan_hhkb": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + + {"x":0, "y":4, "w":1.5}, + {"x":1.5, "y":4}, + {"x":2.5, "y":4, "w":1.5}, + {"x":4, "y":4, "w":7}, + {"x":11, "y":4, "w":1.5}, + {"x":12.5, "y":4}, + {"x":13.5, "y":4, "w":1.5} + ] + }, + + "LAYOUT_60_ansi_tsangan": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":2.75}, + + {"x":0, "y":4, "w":1.5}, + {"x":1.5, "y":4}, + {"x":2.5, "y":4, "w":1.5}, + {"x":4, "y":4, "w":7}, + {"x":11, "y":4, "w":1.5}, + {"x":12.5, "y":4}, + {"x":13.5, "y":4, "w":1.5} + ] + } + } +} diff --git a/keyboards/blank/blank01/keymaps/default/keymap.c b/keyboards/blank/blank01/keymaps/default/keymap.c new file mode 100644 index 000000000000..02722766e88b --- /dev/null +++ b/keyboards/blank/blank01/keymaps/default/keymap.c @@ -0,0 +1,37 @@ +/* Copyright 2021 gkeyboard + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + // Default layer + [0] = LAYOUT_60_tsangan_hhkb( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL + ), + + // Fn1 Layer + [1] = LAYOUT_60_tsangan_hhkb( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; diff --git a/keyboards/blank/blank01/keymaps/default/readme.md b/keyboards/blank/blank01/keymaps/default/readme.md new file mode 100644 index 000000000000..e81b2134e9ce --- /dev/null +++ b/keyboards/blank/blank01/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for blank01 diff --git a/keyboards/blank/blank01/keymaps/via/keymap.c b/keyboards/blank/blank01/keymaps/via/keymap.c new file mode 100644 index 000000000000..503dec460f1e --- /dev/null +++ b/keyboards/blank/blank01/keymaps/via/keymap.c @@ -0,0 +1,55 @@ +/* Copyright 2021 gkeyboard + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + // Default layer + [0] = LAYOUT_60_tsangan_hhkb( + 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_DEL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL + ), + + // Fn1 Layer + [1] = LAYOUT_60_tsangan_hhkb( + 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_DEL, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + // Fn2 Layer + [2] = LAYOUT_60_tsangan_hhkb( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + // Fn3 Layer + [3] = LAYOUT_60_tsangan_hhkb( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; diff --git a/keyboards/blank/blank01/keymaps/via/readme.md b/keyboards/blank/blank01/keymaps/via/readme.md new file mode 100644 index 000000000000..257f797f083c --- /dev/null +++ b/keyboards/blank/blank01/keymaps/via/readme.md @@ -0,0 +1 @@ +# The via keymap for blank01 diff --git a/keyboards/lazydesigners/bolt/via/rules.mk b/keyboards/blank/blank01/keymaps/via/rules.mk similarity index 100% rename from keyboards/lazydesigners/bolt/via/rules.mk rename to keyboards/blank/blank01/keymaps/via/rules.mk diff --git a/keyboards/blank/blank01/readme.md b/keyboards/blank/blank01/readme.md new file mode 100644 index 000000000000..059bb2c8dc5d --- /dev/null +++ b/keyboards/blank/blank01/readme.md @@ -0,0 +1,26 @@ +# BLANK.01 + + +60% keyboard + +* Keyboard Maintainer: [gkeyboard](https://github.com/gkeyboard) +* Hardware Supported: BLANK.01 PCB +* Hardware Availability: *Soon* + +Make example for this keyboard (after setting up your build environment): + + make blank/blank01:default + +Flashing example for this keyboard: + + make blank/blank01:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the front of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `RESET` if it is available diff --git a/keyboards/blank/blank01/rules.mk b/keyboards/blank/blank01/rules.mk new file mode 100644 index 000000000000..ef61685f7c09 --- /dev/null +++ b/keyboards/blank/blank01/rules.mk @@ -0,0 +1,19 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 diff --git a/keyboards/blank_tehnologii/manibus/info.json b/keyboards/blank_tehnologii/manibus/info.json index 8a6892344f35..ab8d9b923e3b 100644 --- a/keyboards/blank_tehnologii/manibus/info.json +++ b/keyboards/blank_tehnologii/manibus/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Manibus", "url": "https://blank.computer/", "maintainer": "SamuraiKek", - "width": 14, - "height": 4.75, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/blank_tehnologii/manibus/rules.mk b/keyboards/blank_tehnologii/manibus/rules.mk index bf50c05ddbf1..325f573a1540 100644 --- a/keyboards/blank_tehnologii/manibus/rules.mk +++ b/keyboards/blank_tehnologii/manibus/rules.mk @@ -6,19 +6,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# 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 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = yes diff --git a/keyboards/blockey/blockey.h b/keyboards/blockey/blockey.h index fa7624be76e8..7b007a2e978d 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 . */ -#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 44a3f0a55a3c..7ad3311c71f0 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -96,54 +95,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -161,25 +112,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - -#endif diff --git a/keyboards/blockey/info.json b/keyboards/blockey/info.json index 618048972655..473bf288a06c 100644 --- a/keyboards/blockey/info.json +++ b/keyboards/blockey/info.json @@ -2,8 +2,6 @@ "keyboard_name": "BlocKey", "url": "", "maintainer": "qmk", - "width": 14.16, - "height": 5, "layouts": { "LAYOUT": { "layout": [{"label":"`", "x":0, "y":0}, {"label":"1", "x":1, "y":0}, {"label":"2", "x":2, "y":0}, {"label":"3", "x":3, "y":0}, {"label":"4", "x":4, "y":0}, {"label":"5", "x":5, "y":0}, {"label":"6", "x":6, "y":0}, {"label":"7", "x":7, "y":0}, {"label":"8", "x":8, "y":0}, {"label":"9", "x":9, "y":0}, {"label":"0", "x":10, "y":0}, {"label":"-", "x":11, "y":0}, {"label":"=", "x":12, "y":0}, {"label":"Back Space", "x":13, "y":0}, {"label":"Tab", "x":0.16, "y":1}, {"label":"Q", "x":1.16, "y":1}, {"label":"W", "x":2.16, "y":1}, {"label":"E", "x":3.16, "y":1}, {"label":"R", "x":4.16, "y":1}, {"label":"T", "x":5.16, "y":1}, {"label":"Y", "x":6.16, "y":1}, {"label":"U", "x":7.16, "y":1}, {"label":"I", "x":8.16, "y":1}, {"label":"O", "x":9.16, "y":1}, {"label":"P", "x":10.16, "y":1}, {"label":"[", "x":11.16, "y":1}, {"label":"]", "x":12.16, "y":1}, {"label":"\\", "x":13.16, "y":1}, {"label":"LCtrl", "x":0.33, "y":2}, {"label":"A", "x":1.33, "y":2}, {"label":"S", "x":2.33, "y":2}, {"label":"D", "x":3.33, "y":2}, {"label":"F", "x":4.33, "y":2}, {"label":"G", "x":5.33, "y":2}, {"label":"H", "x":6.33, "y":2}, {"label":"J", "x":7.33, "y":2}, {"label":"K", "x":8.33, "y":2}, {"label":"L", "x":9.33, "y":2}, {"label":";", "x":10.33, "y":2}, {"label":"\"", "x":11.33, "y":2}, {"label":"Enter", "x":12.66, "y":2}, {"label":"LShift", "x":0.5, "y":3}, {"label":"Z", "x":1.5, "y":3}, {"label":"X", "x":2.5, "y":3}, {"label":"C", "x":3.5, "y":3}, {"label":"V", "x":4.5, "y":3}, {"label":"B", "x":5.5, "y":3}, {"label":"N", "x":6.5, "y":3}, {"label":"M", "x":7.5, "y":3}, {"label":",", "x":8.5, "y":3}, {"label":".", "x":9.5, "y":3}, {"label":"/", "x":10.5, "y":3}, {"label":"Up", "x":11.5, "y":3}, {"label":"Fn", "x":12.83, "y":3}, {"label":"Esc", "x":0, "y":4}, {"label":"Caps Lock", "x":1, "y":4}, {"label":"LAlt", "x":2, "y":4}, {"label":"LGUI", "x":3, "y":4}, {"label":"Space", "x":4, "y":4, "w":6}, {"label":"Left", "x":10.5, "y":4}, {"label":"Down", "x":11.5, "y":4}, {"label":"Right", "x":12.5, "y":4}] diff --git a/keyboards/blockey/keymaps/default/keymap.c b/keyboards/blockey/keymaps/default/keymap.c index 82366501aedf..804500cd0fae 100644 --- a/keyboards/blockey/keymaps/default/keymap.c +++ b/keyboards/blockey/keymaps/default/keymap.c @@ -37,19 +37,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/blockey/rules.mk b/keyboards/blockey/rules.mk index e32a36be836f..cac0bcf47261 100644 --- a/keyboards/blockey/rules.mk +++ b/keyboards/blockey/rules.mk @@ -2,31 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes diff --git a/keyboards/bm16a/bm16a.c b/keyboards/bm16a/bm16a.c deleted file mode 100644 index 3d616f29e9dc..000000000000 --- a/keyboards/bm16a/bm16a.c +++ /dev/null @@ -1,43 +0,0 @@ -/* 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 . - */ -#include "bm16a.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/bm16a/config.h b/keyboards/bm16a/config.h deleted file mode 100644 index 496ac4a74dc6..000000000000 --- a/keyboards/bm16a/config.h +++ /dev/null @@ -1,214 +0,0 @@ -/* 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 . - */ - -#pragma once - -#include "config_common.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x4B50 // "KP" -#define PRODUCT_ID 0x016A -#define DEVICE_VER 0x0001 -#define MANUFACTURER KPrepublic -#define PRODUCT bm16a - -/* key matrix size */ -#define MATRIX_ROWS 4 -#define MATRIX_COLS 4 - -/* - * 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 { D3, D5, D1, D2} -#define MATRIX_COL_PINS { D6, D4, D7, B4} -#define UNUSED_PINS - -/* COL2ROW, ROW2COL*/ -#define DIODE_DIRECTION COL2ROW - -/* - * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. - */ -//#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 - -#define BACKLIGHT_PIN B6 -// #define BACKLIGHT_BREATHING -#define BACKLIGHT_LEVELS 5 - -#define RGB_DI_PIN E2 -#define RGBLED_NUM 4 -#define RGBLIGHT_ANIMATIONS -// #ifdef RGB_DI_PIN -// #define RGBLED_NUM 16 -// #define RGBLIGHT_HUE_STEP 8 -// #define RGBLIGHT_SAT_STEP 8 -// #define RGBLIGHT_VAL_STEP 8 -// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ -// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ -// /*== all animations enable ==*/ -// #define RGBLIGHT_ANIMATIONS -// /*== or choose animations ==*/ -// #define RGBLIGHT_EFFECT_BREATHING -// #define RGBLIGHT_EFFECT_RAINBOW_MOOD -// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL -// #define RGBLIGHT_EFFECT_SNAKE -// #define RGBLIGHT_EFFECT_KNIGHT -// #define RGBLIGHT_EFFECT_CHRISTMAS -// #define RGBLIGHT_EFFECT_STATIC_GRADIENT -// #define RGBLIGHT_EFFECT_RGB_TEST -// #define RGBLIGHT_EFFECT_ALTERNATING -// #endif - -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 5 - -/* define if matrix has ghost (lacks anti-ghosting diodes) */ -//#define MATRIX_HAS_GHOST - -/* number of backlight levels */ - -/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ -#define LOCKING_SUPPORT_ENABLE -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE - -/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. - * This is userful for the Windows task manager shortcut (ctrl+shift+esc). - */ -// #define GRAVE_ESC_CTRL_OVERRIDE - -/* - * Force NKRO - * - * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved - * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the - * makefile for this to work.) - * - * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) - * until the next keyboard reset. - * - * NKRO may prevent your keystrokes from being detected in the BIOS, but it is - * fully operational during normal computer usage. - * - * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) - * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by - * bootmagic, NKRO mode will always be enabled until it is toggled again during a - * power-up. - * - */ -//#define FORCE_NKRO - -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - -/* - * Feature disable options - * These options are also useful to firmware size reduction. - */ - -/* disable debug print */ -//#define NO_DEBUG - -/* disable print */ -//#define NO_PRINT - -/* disable action features */ -//#define NO_ACTION_LAYER -//#define NO_ACTION_TAPPING -//#define NO_ACTION_ONESHOT -//#define NO_ACTION_MACRO -//#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - -/* Bootmagic Lite key configuration */ -// #define BOOTMAGIC_LITE_ROW 0 -// #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/bm16a/info.json b/keyboards/bm16a/info.json deleted file mode 100644 index 4f87c5ae1d27..000000000000 --- a/keyboards/bm16a/info.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "keyboard_name": "bm16a", - "url": "", - "maintainer": "qmk", - "width": 4, - "height": 4, - "layouts": { - "LAYOUT_ortho_4x4": { - "key_count": 16, - "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} - ] - } - } - } \ No newline at end of file diff --git a/keyboards/bm16a/readme.md b/keyboards/bm16a/readme.md deleted file mode 100644 index 8d43b7014d03..000000000000 --- a/keyboards/bm16a/readme.md +++ /dev/null @@ -1,15 +0,0 @@ -# bm16a - -![bm16a](https://ae01.alicdn.com/kf/HTB1RRRQaZfrK1RjSszcq6xGGFXaY.jpg) - -A 16 key macropad, with USB C, RGB underglow and backlight. - -Keyboard Maintainer: QMK Community -Hardware Supported: The PCBs, controllers supported -Hardware Availability: [KPrepublic](https://kprepublic.com/products/bm16a-16-keys-custom-mechanical-keyboard-pcb-plate-programmed-numpad-layouts-qmk-firmware-with-rgb-bottom-underglow-alps-mx); [AliExpress](https://www.aliexpress.com/store/product/bm16a-16-keys-Custom-Mechanical-Keyboard-PCB-plate-programmed-numpad-layouts-qmk-firmware-with-rgb-bottom/3034003_32970629907.html) - -Make example for this keyboard (after setting up your build environment): - - make bm16a: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/bm16a/rules.mk b/keyboards/bm16a/rules.mk deleted file mode 100644 index cd6f78f43ba4..000000000000 --- a/keyboards/bm16a/rules.mk +++ /dev/null @@ -1,33 +0,0 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = atmel-dfu - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -# 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 = yes # Enable keyboard backlight functionality on B7 by default -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 - -LAYOUTS = ortho_4x4 diff --git a/keyboards/bm16s/info.json b/keyboards/bm16s/info.json deleted file mode 100644 index 706453561e7d..000000000000 --- a/keyboards/bm16s/info.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "keyboard_name": "bm16s", - "url": "", - "maintainer": "qmk", - "width": 4, - "height": 4, - "layouts": { - "LAYOUT_ortho_4x4": { - "key_count": 16, - "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} - ] - } - } - } \ No newline at end of file diff --git a/keyboards/bm16s/readme.md b/keyboards/bm16s/readme.md deleted file mode 100644 index 097a38008031..000000000000 --- a/keyboards/bm16s/readme.md +++ /dev/null @@ -1,13 +0,0 @@ -# bm16s - -A 16-key macropad, with USB C and per-key RGB backlighting. This is a variant of the BM16A, but with low profile Choc switches. - -Keyboard Maintainer: QMK Community -Hardware Supported: The PCBs, controllers supported -Hardware Availability: [KPrepublic](https://kprepublic.com/collections/pcb/products/bm16s-16-keys-custom-mechanical-keyboard-pcb-plate-programmed-numpad-layouts-qmk-firmware-with-rgb-switch-leds-choc-switch); [AliExpress](https://www.aliexpress.com/item/bm16s-16-keys-Custom-Mechanical-Keyboard-PCB-plate-programmed-numpad-layouts-qmk-firmware-with-rgb-switch/32999247908.html); [Massdrop](https://www.massdrop.com/buy/78169) - -Make example for this keyboard (after setting up your build environment): - - make bm16s: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/bm16s/rules.mk b/keyboards/bm16s/rules.mk deleted file mode 100755 index 23573664db53..000000000000 --- a/keyboards/bm16s/rules.mk +++ /dev/null @@ -1,28 +0,0 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = atmel-dfu - -# Build Options -# comment out to disable the options. -# -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -SLEEP_LED_ENABLE = 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 - -LAYOUTS = ortho_4x4 diff --git a/keyboards/bm40hsrgb/config.h b/keyboards/bm40hsrgb/config.h deleted file mode 100755 index 167a5667a441..000000000000 --- a/keyboards/bm40hsrgb/config.h +++ /dev/null @@ -1,55 +0,0 @@ -/* Copyright 2020 tominabox1 - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#pragma once - -#include "config_common.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x4B50 // "KP" -#define PRODUCT_ID 0x3430 // "40" -#define DEVICE_VER 0x0001 -#define MANUFACTURER KPRepublic -#define PRODUCT BM40 Hotswap RGB - -/* key matrix size */ -#define MATRIX_ROWS 4 -#define MATRIX_COLS 12 - -/* key matrix pins */ -#define MATRIX_ROW_PINS { B3, B2, E6, B5 } -#define MATRIX_COL_PINS { B6, C6, B4, D7, D4, D6, C7, F6, F5, F4, F1, F0 } -#define UNUSED_PINS - -/* COL2ROW or ROW2COL */ -#define DIODE_DIRECTION COL2ROW - -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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 RGB_DI_PIN E2 -#define DRIVER_LED_TOTAL 53 -#ifdef RGB_DI_PIN - #define RGB_MATRIX_KEYPRESSES // reacts to keypresses -#endif -#ifndef RGB_DISABLE_WHEN_USB_SUSPENDED -# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended -#endif diff --git a/keyboards/bm40hsrgb/info.json b/keyboards/bm40hsrgb/info.json deleted file mode 100644 index 54b4a5890ebd..000000000000 --- a/keyboards/bm40hsrgb/info.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "keyboard_name": "BM40HSRGB", - "url": "", - "maintainer": "qmk", - "width": 12, - "height": 4, - "layouts": { - "LAYOUT_planck_mit": { - "layout": [ - {"label":"K00 (B3,B6)", "x":0, "y":0}, - {"label":"K01 (B3,C6)", "x":1, "y":0}, - {"label":"K02 (B3,B4)", "x":2, "y":0}, - {"label":"K03 (B3,D7)", "x":3, "y":0}, - {"label":"K04 (B3,D4)", "x":4, "y":0}, - {"label":"K05 (B3,D6)", "x":5, "y":0}, - {"label":"K06 (B3,C7)", "x":6, "y":0}, - {"label":"K07 (B3,F6)", "x":7, "y":0}, - {"label":"K08 (B3,F5)", "x":8, "y":0}, - {"label":"K09 (B3,F4)", "x":9, "y":0}, - {"label":"K0A (B3,F1)", "x":10, "y":0}, - {"label":"K0B (B3,F0)", "x":11, "y":0}, - {"label":"K10 (B2,B6)", "x":0, "y":1}, - {"label":"K11 (B2,C6)", "x":1, "y":1}, - {"label":"K12 (B2,B4)", "x":2, "y":1}, - {"label":"K13 (B2,D7)", "x":3, "y":1}, - {"label":"K14 (B2,D4)", "x":4, "y":1}, - {"label":"K15 (B2,D6)", "x":5, "y":1}, - {"label":"K16 (B2,C7)", "x":6, "y":1}, - {"label":"K17 (B2,F6)", "x":7, "y":1}, - {"label":"K18 (B2,F5)", "x":8, "y":1}, - {"label":"K19 (B2,F4)", "x":9, "y":1}, - {"label":"K1A (B2,F1)", "x":10, "y":1}, - {"label":"K1B (B2,F0)", "x":11, "y":1}, - {"label":"K20 (E6,B6)", "x":0, "y":2}, - {"label":"K21 (E6,C6)", "x":1, "y":2}, - {"label":"K22 (E6,B4)", "x":2, "y":2}, - {"label":"K23 (E6,D7)", "x":3, "y":2}, - {"label":"K24 (E6,D4)", "x":4, "y":2}, - {"label":"K25 (E6,D6)", "x":5, "y":2}, - {"label":"K26 (E6,C7)", "x":6, "y":2}, - {"label":"K27 (E6,F6)", "x":7, "y":2}, - {"label":"K28 (E6,F5)", "x":8, "y":2}, - {"label":"K29 (E6,F4)", "x":9, "y":2}, - {"label":"K2A (E6,F1)", "x":10, "y":2}, - {"label":"K2B (E6,F0)", "x":11, "y":2}, - {"label":"K30 (B5,B6)", "x":0, "y":3}, - {"label":"K31 (B5,C6)", "x":1, "y":3}, - {"label":"K32 (B5,B4)", "x":2, "y":3}, - {"label":"K33 (B5,D7)", "x":3, "y":3}, - {"label":"K34 (B5,D4)", "x":4, "y":3}, - {"label":"K35 (B5,D6)", "x":5, "y":3, "w":2}, - {"label":"K37 (B5,F6)", "x":7, "y":3}, - {"label":"K38 (B5,F5)", "x":8, "y":3}, - {"label":"K39 (B5,F4)", "x":9, "y":3}, - {"label":"K3A (B5,F1)", "x":10, "y":3}, - {"label":"K3B (B5,F0)", "x":11, "y":3} - ] - } - } -} diff --git a/keyboards/bm40hsrgb/keymaps/signynt/config.h b/keyboards/bm40hsrgb/keymaps/signynt/config.h deleted file mode 100644 index 9fcddca2cb96..000000000000 --- a/keyboards/bm40hsrgb/keymaps/signynt/config.h +++ /dev/null @@ -1,80 +0,0 @@ -// qmk flash -kb bm40hsrgb -km signynt - -/* Copyright 2021 Vincenzo Mitchell Barroso - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#define RGBLIGHT_LAYERS -#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF -#define RGBLIGHT_ANIMATIONS - -//#define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS -#define RGBLIGHT_LIMIT_VAL 10 - -//bootmagic -#define BOOTMAGIC_KEY_SALT KC_V -#define BOOTMAGIC_KEY_EEPROM_CLEAR KC_Q - -#ifdef RGB_MATRIX_ENABLE - -#define TAPPING_TERM 200 - -//-------------------------------------------------------------------------------------------------------- - -//disable broken animations -#define DISABLE_RGB_MATRIX_ALPHAS_MODS -#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -#define DISABLE_RGB_MATRIX_BREATHING -#define DISABLE_RGB_MATRIX_BAND_SAT -#define DISABLE_RGB_MATRIX_BAND_VAL -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL -#define DISABLE_RGB_MATRIX_CYCLE_ALL -#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT -#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN -#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN -#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL -//#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON -//#define DISABLE_RGB_MATRIX_DUAL_BEACON -#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL -#define DISABLE_RGB_MATRIX_CYCLE_SPIRAL -//#define DISABLE_RGB_MATRIX_RAINBOW_BEACON -//#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS -//#define DISABLE_RGB_MATRIX_RAINDROPS -#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // DO NOT ENABLE -//#define DISABLE_RGB_MATRIX_TYPING_HEATMAP -//#define DISABLE_RGB_MATRIX_DIGITAL_RAIN -//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE -//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -//#define DISABLE_RGB_MATRIX_SPLASH -//#define DISABLE_RGB_MATRIX_MULTISPLASH -//#define DISABLE_RGB_MATRIX_SOLID_SPLASH -//#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH - -#undef RGB_MATRIX_STARTUP_MODE - -#define RGBLIGHT_HUE_STEP 20 - -#endif diff --git a/keyboards/bm40hsrgb/keymaps/signynt/readme.md b/keyboards/bm40hsrgb/keymaps/signynt/readme.md deleted file mode 100644 index 938803c26827..000000000000 --- a/keyboards/bm40hsrgb/keymaps/signynt/readme.md +++ /dev/null @@ -1,117 +0,0 @@ -# Signynt's Keymap: 'Sigma-Squared' - -Sigma Squared is an adaptation & modification of the Layout [Miryoku](https://github.com/manna-harbour/qmk_firmware/blob/miryoku/users/manna-harbour_miryoku/miryoku.org#miryoku-) by *manna-harbour* - -*manna-harbour* lays out the general principles of the layout as follows: - -- Use layers instead of reaching. -- Use both hands instead of contortions. -- Use the home positions as much as possible. -- Make full use of the thumbs. -- Avoid unnecessary complication. - - - -Sigma Squared modifies on **Miryoku** in the following ways: - -- Added the Mods to the outer most columns to be easily accessed while typing with the pinkies -- Extended the **NUMBER** layer to include symbols on the right side to allow calcualtion to be typed more easily without haveing to move between layers -- Added a **GAME** layer to be used for gaming that emulates a more standard keyboard that most games expect - - moves *left shift* and *left ctrl* down - - *esc* moved to top left - - gives access to a **SECOND GAME** layer that contains an Fn row as well as number and arrow keys right under your left fingers -- Added Shortcuts to the bottom row to reduce the amount of keycombos needed to use commonly needed features - - Mission Control, Screenshot, Cycling Apps & Windows -- Added LED indicators to display what layer is currently active (only active while RGB is turned on) - - - -### Flashing - -- to directly flash to board: - - `qmk flash -kb bm40hsrgb -km signynt` - -- to only compile: - - `qmk compile -kb bm40hsrgb -km signynt` - - - -# Layout - -## BASE - -Tap the layer keys to use the black legends, hold them to activate the corresponding layer. - -The Shortcut keys can be modified to suit your needs, or change them in your OS to match the keys. - -If you are using MacOS I recommend swapping your *Ctrl* and *Cmd* keys in system preferences - -The Music Control key can be pressed once to pause and be pressed twice in rapid succession to skip to the next song. - -The Screenshot Key takes a screenshot to the clipboard if pressed once, if double tapped it will take a screenshot to be saved to the desktop. - -![img](https://i.imgur.com/vhb1L2f.png) - -## NAVIGATION - -Provides access to all essential navigation keys, comfortably under your home row. Modifiers remain identical to **BASE** layer to be used for navigating lines and words. - -*Game Layer* key takes you to the **GAME** layer. *(duh)* - -Bottom right keys are used to swap between Virtual Desktops. You might need to modify these to fit your OS. - -![img](https://i.imgur.com/daKxxFz.png) - - - -## MEDIA - -Provides access to all basic media keys, emulating the arrow keys on the home row. - -Also gives access to RGB controls. - -![img](https://i.imgur.com/1jWOvvH.png) - -## NUMBER - -Numbers are arranged in a numpad layout beneath home row, with 0 being positioned under the thumb resting position. Layer includes all most commonly needed symbols to reduce amount of layer switching needed to type longer calculations. - -Top right key changed to *Back Space* so corrections can be made without leaving layer. - -![img](https://i.imgur.com/LGJT3so.png) - -## SYMBOL - -Symbols are positioned over respective numbers from the **NUMBER** layer. - -Mouse keys are positioned similarly under the home row corresponding to the arrow keys. - -Also includes *Back Space* key for corrections. - -![img](https://i.imgur.com/ihOcdPj.png) - -## Fn - -Fn keys are arranged in the same layout as the numbers, with *F10* to *F12* added to the left - -![img](https://i.imgur.com/bPpI8KN.png) - -## GAME - -Somewhat emulates a regular layout needed for gaming. Top right key LED will indicate that you are on the **GAME** layer, and can be pressed to exit it. Holding one of the *Second Game* keys will give you access to **SECOND GAME** - -![img](https://i.imgur.com/r9KIWLX.png) - -## SECOND GAME - -Top right key will turn red to indicate you are in the layer - -![img](https://i.imgur.com/BLKHfVB.png) - - - -# Contact - -If you have any issues or questions you can reach me through Reddit at u/Signynt or on the QMK Discord diff --git a/keyboards/bm40hsrgb/keymaps/signynt/rules.mk b/keyboards/bm40hsrgb/keymaps/signynt/rules.mk deleted file mode 100644 index 29b992b605c6..000000000000 --- a/keyboards/bm40hsrgb/keymaps/signynt/rules.mk +++ /dev/null @@ -1,7 +0,0 @@ -#rules - -MOUSEKEY_ENABLE = yes # Mouse keys -BOOTMAGIC_ENABLE = full -EXTRAKEY_ENABLE = yes # Audio control and System control -TAP_DANCE_ENABLE = yes -#RGB_MATRIX_ENABLE = no diff --git a/keyboards/bm40hsrgb/keymaps/signynt_2_loud/config.h b/keyboards/bm40hsrgb/keymaps/signynt_2_loud/config.h deleted file mode 100644 index 7cfbf0fde48c..000000000000 --- a/keyboards/bm40hsrgb/keymaps/signynt_2_loud/config.h +++ /dev/null @@ -1,80 +0,0 @@ -// qmk flash -kb bm40hsrgb -km signynt_2_loud - -/* Copyright 2021 Vincenzo Mitchell Barroso - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#define RGBLIGHT_LAYERS -#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF -#define RGBLIGHT_ANIMATIONS - -//#define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS -#define RGBLIGHT_LIMIT_VAL 10 - -//bootmagic -#define BOOTMAGIC_KEY_SALT KC_V -#define BOOTMAGIC_KEY_EEPROM_CLEAR KC_Q - -#ifdef RGB_MATRIX_ENABLE - -#define TAPPING_TERM 200 - -//-------------------------------------------------------------------------------------------------------- - -//disable broken animations -#define DISABLE_RGB_MATRIX_ALPHAS_MODS -#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -#define DISABLE_RGB_MATRIX_BREATHING -#define DISABLE_RGB_MATRIX_BAND_SAT -#define DISABLE_RGB_MATRIX_BAND_VAL -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL -#define DISABLE_RGB_MATRIX_CYCLE_ALL -#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT -#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN -#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN -#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL -//#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON -//#define DISABLE_RGB_MATRIX_DUAL_BEACON -#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL -#define DISABLE_RGB_MATRIX_CYCLE_SPIRAL -//#define DISABLE_RGB_MATRIX_RAINBOW_BEACON -//#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS -//#define DISABLE_RGB_MATRIX_RAINDROPS -#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // DO NOT ENABLE -//#define DISABLE_RGB_MATRIX_TYPING_HEATMAP -//#define DISABLE_RGB_MATRIX_DIGITAL_RAIN -//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE -//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -//#define DISABLE_RGB_MATRIX_SPLASH -//#define DISABLE_RGB_MATRIX_MULTISPLASH -//#define DISABLE_RGB_MATRIX_SOLID_SPLASH -//#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH - -#undef RGB_MATRIX_STARTUP_MODE - -#define RGBLIGHT_HUE_STEP 20 - -#endif diff --git a/keyboards/bm40hsrgb/keymaps/signynt_2_loud/readme.md b/keyboards/bm40hsrgb/keymaps/signynt_2_loud/readme.md deleted file mode 100644 index 938803c26827..000000000000 --- a/keyboards/bm40hsrgb/keymaps/signynt_2_loud/readme.md +++ /dev/null @@ -1,117 +0,0 @@ -# Signynt's Keymap: 'Sigma-Squared' - -Sigma Squared is an adaptation & modification of the Layout [Miryoku](https://github.com/manna-harbour/qmk_firmware/blob/miryoku/users/manna-harbour_miryoku/miryoku.org#miryoku-) by *manna-harbour* - -*manna-harbour* lays out the general principles of the layout as follows: - -- Use layers instead of reaching. -- Use both hands instead of contortions. -- Use the home positions as much as possible. -- Make full use of the thumbs. -- Avoid unnecessary complication. - - - -Sigma Squared modifies on **Miryoku** in the following ways: - -- Added the Mods to the outer most columns to be easily accessed while typing with the pinkies -- Extended the **NUMBER** layer to include symbols on the right side to allow calcualtion to be typed more easily without haveing to move between layers -- Added a **GAME** layer to be used for gaming that emulates a more standard keyboard that most games expect - - moves *left shift* and *left ctrl* down - - *esc* moved to top left - - gives access to a **SECOND GAME** layer that contains an Fn row as well as number and arrow keys right under your left fingers -- Added Shortcuts to the bottom row to reduce the amount of keycombos needed to use commonly needed features - - Mission Control, Screenshot, Cycling Apps & Windows -- Added LED indicators to display what layer is currently active (only active while RGB is turned on) - - - -### Flashing - -- to directly flash to board: - - `qmk flash -kb bm40hsrgb -km signynt` - -- to only compile: - - `qmk compile -kb bm40hsrgb -km signynt` - - - -# Layout - -## BASE - -Tap the layer keys to use the black legends, hold them to activate the corresponding layer. - -The Shortcut keys can be modified to suit your needs, or change them in your OS to match the keys. - -If you are using MacOS I recommend swapping your *Ctrl* and *Cmd* keys in system preferences - -The Music Control key can be pressed once to pause and be pressed twice in rapid succession to skip to the next song. - -The Screenshot Key takes a screenshot to the clipboard if pressed once, if double tapped it will take a screenshot to be saved to the desktop. - -![img](https://i.imgur.com/vhb1L2f.png) - -## NAVIGATION - -Provides access to all essential navigation keys, comfortably under your home row. Modifiers remain identical to **BASE** layer to be used for navigating lines and words. - -*Game Layer* key takes you to the **GAME** layer. *(duh)* - -Bottom right keys are used to swap between Virtual Desktops. You might need to modify these to fit your OS. - -![img](https://i.imgur.com/daKxxFz.png) - - - -## MEDIA - -Provides access to all basic media keys, emulating the arrow keys on the home row. - -Also gives access to RGB controls. - -![img](https://i.imgur.com/1jWOvvH.png) - -## NUMBER - -Numbers are arranged in a numpad layout beneath home row, with 0 being positioned under the thumb resting position. Layer includes all most commonly needed symbols to reduce amount of layer switching needed to type longer calculations. - -Top right key changed to *Back Space* so corrections can be made without leaving layer. - -![img](https://i.imgur.com/LGJT3so.png) - -## SYMBOL - -Symbols are positioned over respective numbers from the **NUMBER** layer. - -Mouse keys are positioned similarly under the home row corresponding to the arrow keys. - -Also includes *Back Space* key for corrections. - -![img](https://i.imgur.com/ihOcdPj.png) - -## Fn - -Fn keys are arranged in the same layout as the numbers, with *F10* to *F12* added to the left - -![img](https://i.imgur.com/bPpI8KN.png) - -## GAME - -Somewhat emulates a regular layout needed for gaming. Top right key LED will indicate that you are on the **GAME** layer, and can be pressed to exit it. Holding one of the *Second Game* keys will give you access to **SECOND GAME** - -![img](https://i.imgur.com/r9KIWLX.png) - -## SECOND GAME - -Top right key will turn red to indicate you are in the layer - -![img](https://i.imgur.com/BLKHfVB.png) - - - -# Contact - -If you have any issues or questions you can reach me through Reddit at u/Signynt or on the QMK Discord diff --git a/keyboards/bm40hsrgb/keymaps/signynt_2_loud/rules.mk b/keyboards/bm40hsrgb/keymaps/signynt_2_loud/rules.mk deleted file mode 100644 index 29b992b605c6..000000000000 --- a/keyboards/bm40hsrgb/keymaps/signynt_2_loud/rules.mk +++ /dev/null @@ -1,7 +0,0 @@ -#rules - -MOUSEKEY_ENABLE = yes # Mouse keys -BOOTMAGIC_ENABLE = full -EXTRAKEY_ENABLE = yes # Audio control and System control -TAP_DANCE_ENABLE = yes -#RGB_MATRIX_ENABLE = no diff --git a/keyboards/bm40hsrgb/keymaps/signynt_2_quiet/config.h b/keyboards/bm40hsrgb/keymaps/signynt_2_quiet/config.h deleted file mode 100644 index 4dd37189a92c..000000000000 --- a/keyboards/bm40hsrgb/keymaps/signynt_2_quiet/config.h +++ /dev/null @@ -1,80 +0,0 @@ -// qmk flash -kb bm40hsrgb -km signynt_2_quiet - -/* Copyright 2021 Vincenzo Mitchell Barroso - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#define RGBLIGHT_LAYERS -#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF -#define RGBLIGHT_ANIMATIONS - -//#define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS -#define RGBLIGHT_LIMIT_VAL 10 - -//bootmagic -#define BOOTMAGIC_KEY_SALT KC_V -#define BOOTMAGIC_KEY_EEPROM_CLEAR KC_Q - -#ifdef RGB_MATRIX_ENABLE - -#define TAPPING_TERM 200 - -//-------------------------------------------------------------------------------------------------------- - -//disable broken animations -#define DISABLE_RGB_MATRIX_ALPHAS_MODS -#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -#define DISABLE_RGB_MATRIX_BREATHING -#define DISABLE_RGB_MATRIX_BAND_SAT -#define DISABLE_RGB_MATRIX_BAND_VAL -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL -#define DISABLE_RGB_MATRIX_CYCLE_ALL -#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT -#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN -#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN -#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL -//#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON -//#define DISABLE_RGB_MATRIX_DUAL_BEACON -#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL -#define DISABLE_RGB_MATRIX_CYCLE_SPIRAL -//#define DISABLE_RGB_MATRIX_RAINBOW_BEACON -//#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS -//#define DISABLE_RGB_MATRIX_RAINDROPS -#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // DO NOT ENABLE -//#define DISABLE_RGB_MATRIX_TYPING_HEATMAP -//#define DISABLE_RGB_MATRIX_DIGITAL_RAIN -//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE -//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -//#define DISABLE_RGB_MATRIX_SPLASH -//#define DISABLE_RGB_MATRIX_MULTISPLASH -//#define DISABLE_RGB_MATRIX_SOLID_SPLASH -//#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH - -#undef RGB_MATRIX_STARTUP_MODE - -#define RGBLIGHT_HUE_STEP 20 - -#endif diff --git a/keyboards/bm40hsrgb/keymaps/signynt_2_quiet/readme.md b/keyboards/bm40hsrgb/keymaps/signynt_2_quiet/readme.md deleted file mode 100644 index 938803c26827..000000000000 --- a/keyboards/bm40hsrgb/keymaps/signynt_2_quiet/readme.md +++ /dev/null @@ -1,117 +0,0 @@ -# Signynt's Keymap: 'Sigma-Squared' - -Sigma Squared is an adaptation & modification of the Layout [Miryoku](https://github.com/manna-harbour/qmk_firmware/blob/miryoku/users/manna-harbour_miryoku/miryoku.org#miryoku-) by *manna-harbour* - -*manna-harbour* lays out the general principles of the layout as follows: - -- Use layers instead of reaching. -- Use both hands instead of contortions. -- Use the home positions as much as possible. -- Make full use of the thumbs. -- Avoid unnecessary complication. - - - -Sigma Squared modifies on **Miryoku** in the following ways: - -- Added the Mods to the outer most columns to be easily accessed while typing with the pinkies -- Extended the **NUMBER** layer to include symbols on the right side to allow calcualtion to be typed more easily without haveing to move between layers -- Added a **GAME** layer to be used for gaming that emulates a more standard keyboard that most games expect - - moves *left shift* and *left ctrl* down - - *esc* moved to top left - - gives access to a **SECOND GAME** layer that contains an Fn row as well as number and arrow keys right under your left fingers -- Added Shortcuts to the bottom row to reduce the amount of keycombos needed to use commonly needed features - - Mission Control, Screenshot, Cycling Apps & Windows -- Added LED indicators to display what layer is currently active (only active while RGB is turned on) - - - -### Flashing - -- to directly flash to board: - - `qmk flash -kb bm40hsrgb -km signynt` - -- to only compile: - - `qmk compile -kb bm40hsrgb -km signynt` - - - -# Layout - -## BASE - -Tap the layer keys to use the black legends, hold them to activate the corresponding layer. - -The Shortcut keys can be modified to suit your needs, or change them in your OS to match the keys. - -If you are using MacOS I recommend swapping your *Ctrl* and *Cmd* keys in system preferences - -The Music Control key can be pressed once to pause and be pressed twice in rapid succession to skip to the next song. - -The Screenshot Key takes a screenshot to the clipboard if pressed once, if double tapped it will take a screenshot to be saved to the desktop. - -![img](https://i.imgur.com/vhb1L2f.png) - -## NAVIGATION - -Provides access to all essential navigation keys, comfortably under your home row. Modifiers remain identical to **BASE** layer to be used for navigating lines and words. - -*Game Layer* key takes you to the **GAME** layer. *(duh)* - -Bottom right keys are used to swap between Virtual Desktops. You might need to modify these to fit your OS. - -![img](https://i.imgur.com/daKxxFz.png) - - - -## MEDIA - -Provides access to all basic media keys, emulating the arrow keys on the home row. - -Also gives access to RGB controls. - -![img](https://i.imgur.com/1jWOvvH.png) - -## NUMBER - -Numbers are arranged in a numpad layout beneath home row, with 0 being positioned under the thumb resting position. Layer includes all most commonly needed symbols to reduce amount of layer switching needed to type longer calculations. - -Top right key changed to *Back Space* so corrections can be made without leaving layer. - -![img](https://i.imgur.com/LGJT3so.png) - -## SYMBOL - -Symbols are positioned over respective numbers from the **NUMBER** layer. - -Mouse keys are positioned similarly under the home row corresponding to the arrow keys. - -Also includes *Back Space* key for corrections. - -![img](https://i.imgur.com/ihOcdPj.png) - -## Fn - -Fn keys are arranged in the same layout as the numbers, with *F10* to *F12* added to the left - -![img](https://i.imgur.com/bPpI8KN.png) - -## GAME - -Somewhat emulates a regular layout needed for gaming. Top right key LED will indicate that you are on the **GAME** layer, and can be pressed to exit it. Holding one of the *Second Game* keys will give you access to **SECOND GAME** - -![img](https://i.imgur.com/r9KIWLX.png) - -## SECOND GAME - -Top right key will turn red to indicate you are in the layer - -![img](https://i.imgur.com/BLKHfVB.png) - - - -# Contact - -If you have any issues or questions you can reach me through Reddit at u/Signynt or on the QMK Discord diff --git a/keyboards/bm40hsrgb/keymaps/signynt_2_quiet/rules.mk b/keyboards/bm40hsrgb/keymaps/signynt_2_quiet/rules.mk deleted file mode 100644 index 29b992b605c6..000000000000 --- a/keyboards/bm40hsrgb/keymaps/signynt_2_quiet/rules.mk +++ /dev/null @@ -1,7 +0,0 @@ -#rules - -MOUSEKEY_ENABLE = yes # Mouse keys -BOOTMAGIC_ENABLE = full -EXTRAKEY_ENABLE = yes # Audio control and System control -TAP_DANCE_ENABLE = yes -#RGB_MATRIX_ENABLE = no diff --git a/keyboards/bm40hsrgb/readme.md b/keyboards/bm40hsrgb/readme.md deleted file mode 100644 index a2448f9571da..000000000000 --- a/keyboards/bm40hsrgb/readme.md +++ /dev/null @@ -1,21 +0,0 @@ -# bm40hsrgb - -![BM40 RGB](https://rgoulter.com/images/keyboards/bm40rgb/bm40rgb_large.jpg) - -An ortholinear 40% hotswap keyboard with per-key RGB in-switch LEDs and RGB Backlighting, from KP Republic. - -This firmware was originally taken from a kbfirmware.json and manually converted. You may find the original `.json` files [here](https://drive.google.com/drive/folders/1tlTHQIFcluK2mjZ4UbbKCsdRLgSRSPw6). - -* Keyboard Maintainer: [rgoulter](https://github.com/rgoulter) -* Hardware Supported: bm40hsrgb PCB -* Hardware Availability: [KPRepublic](https://www.aliexpress.com/item/4001147779116.html) - -Make example for this keyboard (after setting up your build environment): - - make bm40hsrgb:default - -Flashing example for this keyboard: - - make bm40hsrgb:default:flash - -See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/bm40hsrgb/rules.mk b/keyboards/bm40hsrgb/rules.mk deleted file mode 100755 index 426c99c98d86..000000000000 --- a/keyboards/bm40hsrgb/rules.mk +++ /dev/null @@ -1,26 +0,0 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -BOOTLOADER = atmel-dfu - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -BLUETOOTH_ENABLE = no # Enable Bluetooth -AUDIO_ENABLE = no # Audio output -RGB_MATRIX_ENABLE = yes -RGB_MATRIX_DRIVER = WS2812 - -LAYOUTS = planck_mit -LAYOUTS_HAS_RGB = yes diff --git a/keyboards/bm43a/bm43a.c b/keyboards/bm43a/bm43a.c deleted file mode 100644 index 36543e3721d1..000000000000 --- a/keyboards/bm43a/bm43a.c +++ /dev/null @@ -1,51 +0,0 @@ -/* Copyright 2019 mechmerlin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include "bm43a.h" - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -/* - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - -*/ diff --git a/keyboards/bm43a/config.h b/keyboards/bm43a/config.h deleted file mode 100644 index 2ab84781b446..000000000000 --- a/keyboards/bm43a/config.h +++ /dev/null @@ -1,72 +0,0 @@ -/* -Copyright 2019 mechmerlin - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -#include "config_common.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x0000 -#define DEVICE_VER 0x0001 -#define MANUFACTURER KPRepublic -#define PRODUCT BM43A - -/* key matrix size */ -#define MATRIX_ROWS 4 -#define MATRIX_COLS 12 - -/* - * 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 { D1, F4, F1, F0 } -#define MATRIX_COL_PINS { B0, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4 } - -#define DIODE_DIRECTION COL2ROW - -#define BACKLIGHT_PIN B7 -// #define BACKLIGHT_BREATHING -#define BACKLIGHT_LEVELS 5 - -#define RGB_DI_PIN E2 -#ifdef RGB_DI_PIN - #define RGBLED_NUM 10 - #define RGBLIGHT_HUE_STEP 8 - #define RGBLIGHT_SAT_STEP 8 - #define RGBLIGHT_VAL_STEP 8 - #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ - #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ -/*== all animations enable ==*/ - #define RGBLIGHT_ANIMATIONS -// /*== or choose animations ==*/ -// #define RGBLIGHT_EFFECT_BREATHING -// #define RGBLIGHT_EFFECT_RAINBOW_MOOD -// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL -// #define RGBLIGHT_EFFECT_SNAKE -// #define RGBLIGHT_EFFECT_KNIGHT -// #define RGBLIGHT_EFFECT_CHRISTMAS -// #define RGBLIGHT_EFFECT_STATIC_GRADIENT -// #define RGBLIGHT_EFFECT_RGB_TEST -// #define RGBLIGHT_EFFECT_ALTERNATING -#endif diff --git a/keyboards/bm43a/info.json b/keyboards/bm43a/info.json deleted file mode 100644 index 59dd63c72ef6..000000000000 --- a/keyboards/bm43a/info.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "keyboard_name": "BM43A", - "url": "", - "maintainer": "qmk", - "width": 12, - "height": 4, - "layouts": { - "LAYOUT": { - "key_count": 43, - "layout": [ - {"label":"K00 (D1,B0)", "x":0, "y":0}, - {"label":"K01 (D1,F5)", "x":1, "y":0}, - {"label":"K02 (D1,F6)", "x":2, "y":0}, - {"label":"K03 (D1,F7)", "x":3, "y":0}, - {"label":"K04 (D1,C7)", "x":4, "y":0}, - {"label":"K05 (D1,C6)", "x":5, "y":0}, - {"label":"K06 (D1,B6)", "x":6, "y":0}, - {"label":"K07 (D1,B5)", "x":7, "y":0}, - {"label":"K08 (D1,B4)", "x":8, "y":0}, - {"label":"K09 (D1,D7)", "x":9, "y":0}, - {"label":"K0A (D1,D6)", "x":10, "y":0}, - {"label":"K0B (D1,D4)", "x":11, "y":0}, - {"label":"K10 (F4,B0)", "x":0, "y":1, "w":1.25}, - {"label":"K11 (F4,F5)", "x":1.25, "y":1}, - {"label":"K12 (F4,F6)", "x":2.25, "y":1}, - {"label":"K13 (F4,F7)", "x":3.25, "y":1}, - {"label":"K14 (F4,C7)", "x":4.25, "y":1}, - {"label":"K15 (F4,C6)", "x":5.25, "y":1}, - {"label":"K16 (F4,B6)", "x":6.25, "y":1}, - {"label":"K17 (F4,B5)", "x":7.25, "y":1}, - {"label":"K18 (F4,B4)", "x":8.25, "y":1}, - {"label":"K19 (F4,D7)", "x":9.25, "y":1}, - {"label":"K1B (F4,D4)", "x":10.25, "y":1, "w":1.75}, - {"label":"K20 (F1,B0)", "x":0, "y":2, "w":2}, - {"label":"K21 (F1,F5)", "x":2, "y":2}, - {"label":"K22 (F1,F6)", "x":3, "y":2}, - {"label":"K23 (F1,F7)", "x":4, "y":2}, - {"label":"K24 (F1,C7)", "x":5, "y":2}, - {"label":"K25 (F1,C6)", "x":6, "y":2}, - {"label":"K26 (F1,B6)", "x":7, "y":2}, - {"label":"K27 (F1,B5)", "x":8, "y":2}, - {"label":"K28 (F1,B4)", "x":9, "y":2}, - {"label":"K29 (F1,D7)", "x":10, "y":2}, - {"label":"K2B (F1,D4)", "x":11, "y":2}, - {"label":"K30 (F0,B0)", "x":0, "y":3}, - {"label":"K31 (F0,F5)", "x":1, "y":3}, - {"label":"K32 (F0,F6)", "x":2, "y":3}, - {"label":"K33 (F0,F7)", "x":3, "y":3, "w":2.75}, - {"label":"K35 (F0,C6)", "x":5.75, "y":3, "w":2.25}, - {"label":"K37 (F0,B5)", "x":8, "y":3}, - {"label":"K38 (F0,B4)", "x":9, "y":3}, - {"label":"K39 (F0,D7)", "x":10, "y":3}, - {"label":"K3B (F0,D4)", "x":11, "y":3} - ] - } - } - ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/" -} \ No newline at end of file diff --git a/keyboards/bm43a/keymaps/stevexyz/readme.md b/keyboards/bm43a/keymaps/stevexyz/readme.md deleted file mode 100644 index 56d0823d19b9..000000000000 --- a/keyboards/bm43a/keymaps/stevexyz/readme.md +++ /dev/null @@ -1,25 +0,0 @@ -This is a full-featured bm43a layout inspired by the smaller "Super Micro gherkin" and "jj28" sisters. - -In addition to the default key layer, there is a function/numbers/symbols layer easily activated with either one of the two "meta" (red) keys and containing almost all keyset missing. - -On top of this, activated with both meta keys, there a system layer where are placed media keys, mouse emulation, and Numpad in addition to the PrintScreen/ScrLock/Pause keys. - -The below picture show all layers on the actual keys (if someone would be able to print these labels let me know! :)). - -![layout](https://raw.githubusercontent.com/stevexyz/qmk_firmware/master/keyboards/bm43a/keymaps/stevexyz/layout.jpeg) - -Notes: -- The Windows/OS key is overlayed with the Esc one -- To activate permanently the function/number/symbols layer you can use the "layer tap toggle" functionality (now set to the default 5 presses). For the system layer to be activated permanently is enough to hit shift in this layer (so with the two meta keys pressed) -- From the System Layer you can "jump" to an additional Lights layer pressing the control key -- Meta-Esc (or simply Esc from the System and Lights layers) and the keyboard is coming back to default key layer in case they are activated permanently - - -And a view on the actual build: - -![layout](https://raw.githubusercontent.com/stevexyz/qmk_firmware/master/keyboards/bm43a/keymaps/stevexyz/actualbuild.jpeg) - -In order to compile the module from qmk root directory use the command 'make bm43a:stevexyz' - -And in order to upload the new firmware use the command: 'qmk flash -kb bm43a -km stevexyz' (you can initiate programming with keyboard RESET key, that in this keymap has been moved on the backspace button in the "lights" layer) - diff --git a/keyboards/bm43a/keymaps/stevexyz/rules.mk b/keyboards/bm43a/keymaps/stevexyz/rules.mk deleted file mode 100644 index fa2ef5c2b28a..000000000000 --- a/keyboards/bm43a/keymaps/stevexyz/rules.mk +++ /dev/null @@ -1,8 +0,0 @@ -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration -COMMAND_ENABLE = no # Commands for debug and configuration -CONSOLE_ENABLE = no # Console for debug - -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow diff --git a/keyboards/bm43a/readme.md b/keyboards/bm43a/readme.md deleted file mode 100644 index ee5c173338f1..000000000000 --- a/keyboards/bm43a/readme.md +++ /dev/null @@ -1,16 +0,0 @@ -# bm43a - -A 40% mechanical keyboard. - -This firmware was originally taken from a kbfirmware.json and converted through [kbf_qmk_converter](https://noroadsleft.github.io/kbf_qmk_converter/). You may find the original `.json` files [here](https://drive.google.com/drive/folders/11DowBYrFN_uCNa9Q9bXwuMn91vmZYBcG). - - -Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin) -Hardware Supported: bm43a PCB -Hardware Availability: [KPRepublic](https://kprepublic.com/products/bm43a-bm43-43-keys-40-custom-mechanical-keyboard-pcb-programmed-numpad-layouts-qmk-firmware-with-rgb-bottom-underglow-alps-mx) - -Make example for this keyboard (after setting up your build environment): - - make bm43a: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/bm43a/rules.mk b/keyboards/bm43a/rules.mk deleted file mode 100644 index 2b32bbee9226..000000000000 --- a/keyboards/bm43a/rules.mk +++ /dev/null @@ -1,31 +0,0 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = atmel-dfu - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = yes # Console for debug -COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 diff --git a/keyboards/bm60poker/bm60poker.c b/keyboards/bm60poker/bm60poker.c deleted file mode 100644 index a7a335209754..000000000000 --- a/keyboards/bm60poker/bm60poker.c +++ /dev/null @@ -1,52 +0,0 @@ -/* Copyright 2020 ipetepete - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include "bm60poker.h" - -#ifdef RGB_MATRIX_ENABLE -led_config_t g_led_config = { { - { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 }, - { 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27 }, - { 28, NO_LED, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40 }, - { NO_LED, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, NO_LED, 52 }, - { 53, 54, 55, NO_LED, NO_LED, NO_LED, 56, NO_LED, NO_LED, 57, 58, NO_LED, 59, 60 } -}, { - // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace - { 0, 0 }, { 15, 0 }, { 30, 0 }, { 45, 0 }, { 60, 0 }, { 75, 0 }, { 90, 0 }, { 105, 0 }, { 120, 0 }, { 135, 0 }, { 150, 0 }, { 165, 0 }, { 180, 0 }, { 202, 0 }, - // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], , - { 7, 16 }, { 22, 16 }, { 37, 16 }, { 52, 16 }, { 67, 16 }, { 82, 16 }, { 97, 16 }, { 112, 16 }, { 127, 16 }, { 142, 16 }, { 157, 16 }, { 172, 16 }, { 187, 16 }, { 206, 16 }, - // Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter - { 11, 32 }, { 26, 32 }, { 41, 32 }, { 56, 32 }, { 71, 32 }, { 86, 32 }, { 101, 32 }, { 116, 32 }, { 131, 32 }, { 146, 32 }, { 161, 32 }, { 176, 32 }, { 198, 32 }, - // LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up, - { 18, 48 }, { 30, 48 }, { 45, 48 }, { 60, 48 }, { 75, 48 }, { 90, 48 }, { 105, 48 }, { 120, 48 }, { 135, 48 }, { 150, 48 }, { 165, 48 }, { 191, 48 }, - // Ctrl, GUI, Alt, Space, RAlt, FN, Left, Down, Right - { 3, 64 }, { 22, 64 }, { 33, 64 }, { 101, 64 }, { 135, 64 }, { 153, 64 }, { 210, 64 }, { 225, 64 }, - // UNDERGLOW - { 216, 32 }, { 180, 32 }, { 144, 32 }, { 108, 32 }, { 72, 32 }, { 36, 32 } -}, { - // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, - // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], , - 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, - // Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter - 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, - // LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up, - 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, - // Ctrl, GUI, Alt, Space, RAlt, FN, Left, Down, Right - 1, 1, 1, 4, 1, 1, 1, 1, - // UNDERGLOW - 2, 2, 2, 2, 2, 2 -} }; -#endif diff --git a/keyboards/bm60poker/config.h b/keyboards/bm60poker/config.h deleted file mode 100644 index 4fbec4f9bd48..000000000000 --- a/keyboards/bm60poker/config.h +++ /dev/null @@ -1,70 +0,0 @@ -/* -Copyright 2020 ipetepete - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -#include "config_common.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x4B50 // "KP" -#define PRODUCT_ID 0xEF8D -#define DEVICE_VER 0x0001 -#define MANUFACTURER KP Republic -#define PRODUCT BM60 RGB POKER - -/* key matrix size */ -#define MATRIX_ROWS 5 -#define MATRIX_COLS 14 - -/* - * 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, E6 } -#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4, B5, B6, C6, C7, F7 } - -#define DIODE_DIRECTION COL2ROW - -#define RGB_DI_PIN E2 -#define DRIVER_LED_TOTAL 67 -#ifdef RGB_DI_PIN - #define RGBLED_NUM 67 - #define RGB_MATRIX_KEYPRESSES - #define RGBLIGHT_HUE_STEP 8 - #define RGBLIGHT_SAT_STEP 8 - #define RGBLIGHT_VAL_STEP 8 - #define RGBLIGHT_LIMIT_VAL 5 /* The maximum brightness level */ - #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ -/*== all animations enable ==*/ - #define RGBLIGHT_ANIMATIONS -// /*== or choose animations ==*/ -// #define RGBLIGHT_EFFECT_BREATHING -// #define RGBLIGHT_EFFECT_RAINBOW_MOOD -// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL -// #define RGBLIGHT_EFFECT_SNAKE -// #define RGBLIGHT_EFFECT_KNIGHT -// #define RGBLIGHT_EFFECT_CHRISTMAS -// #define RGBLIGHT_EFFECT_STATIC_GRADIENT -// #define RGBLIGHT_EFFECT_RGB_TEST -// #define RGBLIGHT_EFFECT_ALTERNATING -#endif diff --git a/keyboards/bm60poker/info.json b/keyboards/bm60poker/info.json deleted file mode 100644 index 4a5ae3519755..000000000000 --- a/keyboards/bm60poker/info.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "keyboard_name": "BM60 POKER RGB", - "url": "", - "maintainer": "qmk", - "width": 15, - "height": 5, - "layouts": { - "LAYOUT_60_ansi": { - "layout": [ - {"label":"K00 (B0,D0)", "x":0, "y":0}, - {"label":"K01 (B0,D1)", "x":1, "y":0}, - {"label":"K02 (B0,D2)", "x":2, "y":0}, - {"label":"K03 (B0,D3)", "x":3, "y":0}, - {"label":"K04 (B0,D5)", "x":4, "y":0}, - {"label":"K05 (B0,D4)", "x":5, "y":0}, - {"label":"K06 (B0,D6)", "x":6, "y":0}, - {"label":"K07 (B0,D7)", "x":7, "y":0}, - {"label":"K08 (B0,B4)", "x":8, "y":0}, - {"label":"K09 (B0,B5)", "x":9, "y":0}, - {"label":"K0A (B0,B6)", "x":10, "y":0}, - {"label":"K0B (B0,C6)", "x":11, "y":0}, - {"label":"K0C (B0,C7)", "x":12, "y":0}, - {"label":"K0D (B0,F7)", "x":13, "y":0, "w":2}, - {"label":"K10 (B1,D0)", "x":0, "y":1, "w":1.5}, - {"label":"K11 (B1,D1)", "x":1.5, "y":1}, - {"label":"K12 (B1,D2)", "x":2.5, "y":1}, - {"label":"K13 (B1,D3)", "x":3.5, "y":1}, - {"label":"K14 (B1,D5)", "x":4.5, "y":1}, - {"label":"K15 (B1,D4)", "x":5.5, "y":1}, - {"label":"K16 (B1,D6)", "x":6.5, "y":1}, - {"label":"K17 (B1,D7)", "x":7.5, "y":1}, - {"label":"K18 (B1,B4)", "x":8.5, "y":1}, - {"label":"K19 (B1,B5)", "x":9.5, "y":1}, - {"label":"K1A (B1,B6)", "x":10.5, "y":1}, - {"label":"K1B (B1,C6)", "x":11.5, "y":1}, - {"label":"K1C (B1,C7)", "x":12.5, "y":1}, - {"label":"K1D (B1,F7)", "x":13.5, "y":1, "w":1.5}, - {"label":"K20 (B2,D0)", "x":0, "y":2, "w":1.75}, - {"label":"K22 (B2,D2)", "x":1.75, "y":2}, - {"label":"K23 (B2,D3)", "x":2.75, "y":2}, - {"label":"K24 (B2,D5)", "x":3.75, "y":2}, - {"label":"K25 (B2,D4)", "x":4.75, "y":2}, - {"label":"K26 (B2,D6)", "x":5.75, "y":2}, - {"label":"K27 (B2,D7)", "x":6.75, "y":2}, - {"label":"K28 (B2,B4)", "x":7.75, "y":2}, - {"label":"K29 (B2,B5)", "x":8.75, "y":2}, - {"label":"K2A (B2,B6)", "x":9.75, "y":2}, - {"label":"K2B (B2,C6)", "x":10.75, "y":2}, - {"label":"K2C (B2,C7)", "x":11.75, "y":2}, - {"label":"K2D (B2,F7)", "x":12.75, "y":2, "w":2.25}, - {"label":"K31 (B3,D1)", "x":0, "y":3, "w":2.25}, - {"label":"K32 (B3,D2)", "x":2.25, "y":3}, - {"label":"K33 (B3,D3)", "x":3.25, "y":3}, - {"label":"K34 (B3,D5)", "x":4.25, "y":3}, - {"label":"K35 (B3,D4)", "x":5.25, "y":3}, - {"label":"K36 (B3,D6)", "x":6.25, "y":3}, - {"label":"K37 (B3,D7)", "x":7.25, "y":3}, - {"label":"K38 (B3,B4)", "x":8.25, "y":3}, - {"label":"K39 (B3,B5)", "x":9.25, "y":3}, - {"label":"K3A (B3,B6)", "x":10.25, "y":3}, - {"label":"K3B (B3,C6)", "x":11.25, "y":3}, - {"label":"K3D (B3,F7)", "x":12.25, "y":3, "w":2.75}, - {"label":"K40 (E6,D0)", "x":0, "y":4, "w":1.25}, - {"label":"K41 (E6,D1)", "x":1.25, "y":4, "w":1.25}, - {"label":"K42 (E6,D2)", "x":2.5, "y":4, "w":1.25}, - {"label":"K46 (E6,D6)", "x":3.75, "y":4, "w":6.25}, - {"label":"K49 (E6,B5)", "x":10, "y":4, "w":1.25}, - {"label":"K4A (E6,B6)", "x":11.25, "y":4, "w":1.25}, - {"label":"K4C (E6,C7)", "x":12.5, "y":4, "w":1.25}, - {"label":"K4D (E6,F7)", "x":13.75, "y":4, "w":1.25} - ] - } - } -} diff --git a/keyboards/bm60poker/readme.md b/keyboards/bm60poker/readme.md deleted file mode 100644 index 62dde405c469..000000000000 --- a/keyboards/bm60poker/readme.md +++ /dev/null @@ -1,15 +0,0 @@ -# BM60 Poker 60% Mechanical Keyboard RGB PCB - -A 60% hotswap inswitch RGB (north facing) keyboard from KP Republic. - -* Keyboard Maintainer: [ipetepete](https://github.com/ipetepete) -* Hardware Supported: BM60 POKER RGB -* Hardware Availability: [KP Republic](https://kprepublic.com/products/bm60-rgb-poker-60-gh60-hot-swap-custom-mechanical-keyboard-pcb-program-qmk-underglow-type-c) - -Make example for this keyboard (after setting up your build environment): - - make bm60poker: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). - -Video tutorials for customizing the layout: [QMK Tutorials](https://www.youtube.com/playlist?list=PLZlceRZZjRugJFL-vnenYnDrbMc6wu_e_) - By MechMerlin diff --git a/keyboards/bm60poker/rules.mk b/keyboards/bm60poker/rules.mk deleted file mode 100644 index 74364ace19c8..000000000000 --- a/keyboards/bm60poker/rules.mk +++ /dev/null @@ -1,25 +0,0 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -BOOTLOADER = atmel-dfu - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth -AUDIO_ENABLE = no # Audio output -RGB_MATRIX_ENABLE = yes -RGB_MATRIX_DRIVER = WS2812 -LAYOUTS = 60_ansi diff --git a/keyboards/bm60rgb/bm60rgb.c b/keyboards/bm60rgb/bm60rgb.c deleted file mode 100644 index cbd020faf958..000000000000 --- a/keyboards/bm60rgb/bm60rgb.c +++ /dev/null @@ -1,77 +0,0 @@ -/* Copyright 2020 MechMerlin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include "bm60rgb.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - -led_config_t g_led_config = { { - { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 }, - { 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27 }, - { 28, NO_LED, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40 }, - { NO_LED, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53 }, - { 54, 55, 56, NO_LED, NO_LED, NO_LED, 57, NO_LED, NO_LED, 58, 59, 60, 61, 62 } -}, { - // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace - { 0, 0 }, { 15, 0 }, { 30, 0 }, { 45, 0 }, { 60, 0 }, { 75, 0 }, { 90, 0 }, { 105, 0 }, { 120, 0 }, { 135, 0 }, { 150, 0 }, { 165, 0 }, { 180, 0 }, { 202, 0 }, - // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], , - { 7, 16 }, { 22, 16 }, { 37, 16 }, { 52, 16 }, { 67, 16 }, { 82, 16 }, { 97, 16 }, { 112, 16 }, { 127, 16 }, { 142, 16 }, { 157, 16 }, { 172, 16 }, { 187, 16 }, { 206, 16 }, - // Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter - { 11, 32 }, { 26, 32 }, { 41, 32 }, { 56, 32 }, { 71, 32 }, { 86, 32 }, { 101, 32 }, { 116, 32 }, { 131, 32 }, { 146, 32 }, { 161, 32 }, { 176, 32 }, { 198, 32 }, - // LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up, - { 18, 48 }, { 30, 48 }, { 45, 48 }, { 60, 48 }, { 75, 48 }, { 90, 48 }, { 105, 48 }, { 120, 48 }, { 135, 48 }, { 150, 48 }, { 165, 48 }, { 191, 48 }, { 210, 48 }, - // Ctrl, GUI, Alt, Space, RAlt, FN, Left, Down, Right - { 3, 64 }, { 22, 64 }, { 33, 64 }, { 101, 64 }, { 135, 64 }, { 153, 64 }, { 195, 64 }, { 210, 64 }, { 225, 64 }, - // UNDERGLOW - { 216, 32 }, { 180, 32 }, { 144, 32 }, { 108, 32 }, { 72, 32 }, { 36, 32 } -}, { - // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, - // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], , - 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, - // Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter - 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, - // LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up, - 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, - // Ctrl, GUI, Alt, Space, RAlt, FN, Left, Down, Right - 1, 1, 1, 4, 1, 1, 1, 1, 1, - // UNDERGLOW - 2, 2, 2, 2, 2, 2 -} }; diff --git a/keyboards/bm60rgb/bm60rgb.h b/keyboards/bm60rgb/bm60rgb.h deleted file mode 100644 index 4a3dc2e83d59..000000000000 --- a/keyboards/bm60rgb/bm60rgb.h +++ /dev/null @@ -1,36 +0,0 @@ -/* Copyright 2020 MechMerlin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#pragma once - -#include "quantum.h" - -#define LAYOUT_60_ansi_arrow( \ - 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, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \ - K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \ - K40, K41, K42, K46, 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, KC_NO, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \ - { KC_NO, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \ - { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, K49, K4A, K4B, K4C, K4D }, \ -} - -// generated by KBFirmware JSON to QMK Parser -// https://noroadsleft.github.io/kbf_qmk_converter/ - diff --git a/keyboards/bm60rgb/config.h b/keyboards/bm60rgb/config.h deleted file mode 100644 index 3eee00e51edc..000000000000 --- a/keyboards/bm60rgb/config.h +++ /dev/null @@ -1,58 +0,0 @@ -/* -Copyright 2020 MechMerlin - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -#include "config_common.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x4B50 // "KP" -#define PRODUCT_ID 0xEF8C -#define DEVICE_VER 0x0001 -#define MANUFACTURER KP Republic -#define PRODUCT BM60 RGB - -/* key matrix size */ -#define MATRIX_ROWS 5 -#define MATRIX_COLS 14 - -/* - * 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) - * - */ - -// 0 1 2 3 4 5 6 7 8 9 A B C D -#define MATRIX_ROW_PINS { B0, B1, B2, B3, E6 } -#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4, B5, B6, C6, C7, F7 } - -#define DIODE_DIRECTION COL2ROW - -#define RGB_DI_PIN E2 -#define DRIVER_LED_TOTAL 69 -#ifdef RGB_DI_PIN - #define RGBLED_NUM 69 - #define RGB_MATRIX_KEYPRESSES -#endif - -// generated by KBFirmware JSON to QMK Parser -// https://noroadsleft.github.io/kbf_qmk_converter/ diff --git a/keyboards/bm60rgb/info.json b/keyboards/bm60rgb/info.json deleted file mode 100644 index d467a0405d1c..000000000000 --- a/keyboards/bm60rgb/info.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "keyboard_name": "BM60 RGB", - "url": "", - "maintainer": "qmk", - "width": 15, - "height": 5, - "layout_aliases": { - "LAYOUT": "LAYOUT_60_ansi_arrow" - }, - "layouts": { - "LAYOUT_60_ansi_arrow": { - "layout": [ - {"label":"K00 (B0,D0)", "x":0, "y":0}, - {"label":"K01 (B0,D1)", "x":1, "y":0}, - {"label":"K02 (B0,D2)", "x":2, "y":0}, - {"label":"K03 (B0,D3)", "x":3, "y":0}, - {"label":"K04 (B0,D5)", "x":4, "y":0}, - {"label":"K05 (B0,D4)", "x":5, "y":0}, - {"label":"K06 (B0,D6)", "x":6, "y":0}, - {"label":"K07 (B0,D7)", "x":7, "y":0}, - {"label":"K08 (B0,B4)", "x":8, "y":0}, - {"label":"K09 (B0,B5)", "x":9, "y":0}, - {"label":"K0A (B0,B6)", "x":10, "y":0}, - {"label":"K0B (B0,C6)", "x":11, "y":0}, - {"label":"K0C (B0,C7)", "x":12, "y":0}, - {"label":"K0D (B0,F7)", "x":13, "y":0, "w":2}, - {"label":"K10 (B1,D0)", "x":0, "y":1, "w":1.5}, - {"label":"K11 (B1,D1)", "x":1.5, "y":1}, - {"label":"K12 (B1,D2)", "x":2.5, "y":1}, - {"label":"K13 (B1,D3)", "x":3.5, "y":1}, - {"label":"K14 (B1,D5)", "x":4.5, "y":1}, - {"label":"K15 (B1,D4)", "x":5.5, "y":1}, - {"label":"K16 (B1,D6)", "x":6.5, "y":1}, - {"label":"K17 (B1,D7)", "x":7.5, "y":1}, - {"label":"K18 (B1,B4)", "x":8.5, "y":1}, - {"label":"K19 (B1,B5)", "x":9.5, "y":1}, - {"label":"K1A (B1,B6)", "x":10.5, "y":1}, - {"label":"K1B (B1,C6)", "x":11.5, "y":1}, - {"label":"K1C (B1,C7)", "x":12.5, "y":1}, - {"label":"K1D (B1,F7)", "x":13.5, "y":1, "w":1.5}, - {"label":"K20 (B2,D0)", "x":0, "y":2, "w":1.75}, - {"label":"K22 (B2,D2)", "x":1.75, "y":2}, - {"label":"K23 (B2,D3)", "x":2.75, "y":2}, - {"label":"K24 (B2,D5)", "x":3.75, "y":2}, - {"label":"K25 (B2,D4)", "x":4.75, "y":2}, - {"label":"K26 (B2,D6)", "x":5.75, "y":2}, - {"label":"K27 (B2,D7)", "x":6.75, "y":2}, - {"label":"K28 (B2,B4)", "x":7.75, "y":2}, - {"label":"K29 (B2,B5)", "x":8.75, "y":2}, - {"label":"K2A (B2,B6)", "x":9.75, "y":2}, - {"label":"K2B (B2,C6)", "x":10.75, "y":2}, - {"label":"K2C (B2,C7)", "x":11.75, "y":2}, - {"label":"K2D (B2,F7)", "x":12.75, "y":2, "w":2.25}, - {"label":"K31 (B3,D1)", "x":0, "y":3, "w":2.25}, - {"label":"K32 (B3,D2)", "x":2.25, "y":3}, - {"label":"K33 (B3,D3)", "x":3.25, "y":3}, - {"label":"K34 (B3,D5)", "x":4.25, "y":3}, - {"label":"K35 (B3,D4)", "x":5.25, "y":3}, - {"label":"K36 (B3,D6)", "x":6.25, "y":3}, - {"label":"K37 (B3,D7)", "x":7.25, "y":3}, - {"label":"K38 (B3,B4)", "x":8.25, "y":3}, - {"label":"K39 (B3,B5)", "x":9.25, "y":3}, - {"label":"K3A (B3,B6)", "x":10.25, "y":3}, - {"label":"K3B (B3,C6)", "x":11.25, "y":3, "w":1.75}, - {"label":"K3C (B3,C7)", "x":13, "y":3}, - {"label":"K3D (B3,F7)", "x":14, "y":3}, - {"label":"K40 (E6,D0)", "x":0, "y":4, "w":1.25}, - {"label":"K41 (E6,D1)", "x":1.25, "y":4, "w":1.25}, - {"label":"K42 (E6,D2)", "x":2.5, "y":4, "w":1.25}, - {"label":"K46 (E6,D6)", "x":3.75, "y":4, "w":6.25}, - {"label":"K49 (E6,B5)", "x":10, "y":4}, - {"label":"K4A (E6,B6)", "x":11, "y":4}, - {"label":"K4B (E6,C6)", "x":12, "y":4}, - {"label":"K4C (E6,C7)", "x":13, "y":4}, - {"label":"K4D (E6,F7)", "x":14, "y":4} - ] - } - } - ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/" -} - diff --git a/keyboards/bm60rgb/readme.md b/keyboards/bm60rgb/readme.md deleted file mode 100644 index dc093c7b40ad..000000000000 --- a/keyboards/bm60rgb/readme.md +++ /dev/null @@ -1,13 +0,0 @@ -# BM60 RGB - -A 60% hotswap inswitch RGB keyboard from KP Republic. - -* Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin) -* Hardware Supported: BM60 RGB -* Hardware Availability: [KP Republic](https://kprepublic.com/products/bm60-rgb-60-gh60-hot-swappable-pcb-programmed-qmk-firmware-type-c) - -Make example for this keyboard (after setting up your build environment): - - make bm60rgb: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/bm60rgb/rules.mk b/keyboards/bm60rgb/rules.mk deleted file mode 100644 index 49f18fcbffd8..000000000000 --- a/keyboards/bm60rgb/rules.mk +++ /dev/null @@ -1,39 +0,0 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = atmel-dfu - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 -RGB_MATRIX_ENABLE = yes -RGB_MATRIX_DRIVER = WS2812 -LTO_ENABLE = yes - -LAYOUTS = 60_ansi_arrow - -# partially generated by KBFirmware JSON to QMK Parser -# https://noroadsleft.github.io/kbf_qmk_converter/ diff --git a/keyboards/bm60rgb_iso/bm60rgb_iso.c b/keyboards/bm60rgb_iso/bm60rgb_iso.c deleted file mode 100644 index 4e292bc54966..000000000000 --- a/keyboards/bm60rgb_iso/bm60rgb_iso.c +++ /dev/null @@ -1,52 +0,0 @@ -/* Copyright 2020 markva - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include "bm60rgb_iso.h" - -#if defined(RGB_MATRIX_ENABLE) -led_config_t g_led_config = { { - { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 }, - { 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27 }, - { 28, NO_LED, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40 }, - { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54 }, - { 55, 56, 57, NO_LED, NO_LED, NO_LED, 58, NO_LED, NO_LED, 59, 60, 61, 62, 63} -}, { - // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace - { 0, 0 }, { 15, 0 }, { 30, 0 }, { 45, 0 }, { 60, 0 }, { 75, 0 }, { 90, 0 }, { 105, 0 }, { 120, 0 }, { 135, 0 }, { 150, 0 }, { 165, 0 }, { 180, 0 }, { 202, 0 }, - // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], , - { 7, 16 }, { 22, 16 }, { 37, 16 }, { 52, 16 }, { 67, 16 }, { 82, 16 }, { 97, 16 }, { 112, 16 }, { 127, 16 }, { 142, 16 }, { 157, 16 }, { 172, 16 }, { 187, 16 }, { 206, 16 }, - // Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter - { 11, 32 }, { 26, 32 }, { 41, 32 }, { 56, 32 }, { 71, 32 }, { 86, 32 }, { 101, 32 }, { 116, 32 }, { 131, 32 }, { 146, 32 }, { 161, 32 }, { 176, 32 }, { 198, 32 }, - // LShift, <, Z, X, C, V, B, N, M, ,, ., /, Shift, Up, - { 3, 48 }, { 22, 48 }, { 33, 48 }, { 48, 48 }, { 63, 48 }, { 78, 48 }, { 93, 48 }, { 108, 48 }, { 123, 48 }, { 138, 48 }, { 153, 48 }, { 168, 48 }, { 194, 48 }, { 213, 48 }, - // Ctrl, GUI, Alt, Space, RAlt, FN, Left, Down, Right - { 3, 64 }, { 22, 64 }, { 33, 64 }, { 101, 64 }, { 135, 64 }, { 153, 64 }, { 195, 64 }, { 210, 64 }, { 225, 64 }, - // UNDERGLOW - { 216, 32 }, { 180, 32 }, { 144, 32 }, { 108, 32 }, { 72, 32 }, { 36, 32 } -}, { - // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, - // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], , - 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, - // Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter - 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, - // LShift,<, Z, X, C, V, B, N, M, ,, ., Shift, Up, / - 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, - // Ctrl, GUI, Alt, Space, RAlt, FN, Left, Down, Right - 1, 1, 1, 4, 1, 1, 1, 1, 1, - // UNDERGLOW - 2, 2, 2, 2, 2, 2 -} }; -#endif diff --git a/keyboards/bm60rgb_iso/config.h b/keyboards/bm60rgb_iso/config.h deleted file mode 100644 index 61d30cd83cea..000000000000 --- a/keyboards/bm60rgb_iso/config.h +++ /dev/null @@ -1,72 +0,0 @@ -/* -Copyright 2020 markva - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -#include "config_common.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x4B50 // "KP" -#define PRODUCT_ID 0xEF8C -#define DEVICE_VER 0x0001 -#define MANUFACTURER KPRepublic -#define PRODUCT bm60hsrgb-iso - -/* key matrix size */ -#define MATRIX_ROWS 5 -#define MATRIX_COLS 14 - -/* - * 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) - * - */ - -// 0 1 2 3 4 5 6 7 8 9 A B C D -#define MATRIX_ROW_PINS { B0, B1, B2, B3, E6 } -#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4, B5, B6, C6, C7, F7 } - -#define DIODE_DIRECTION COL2ROW - -#define RGB_DI_PIN E2 -#define DRIVER_LED_TOTAL 70 -#ifdef RGB_DI_PIN - #define RGBLED_NUM 70 - #define RGB_MATRIX_KEYPRESSES - // #define RGBLIGHT_HUE_STEP 8 - // #define RGBLIGHT_SAT_STEP 8 - // #define RGBLIGHT_VAL_STEP 8 - // #define RGBLIGHT_LIMIT_VAL 180 /* The maximum brightness level */ - // #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ - /*== all animations enable ==*/ - // #define RGBLIGHT_ANIMATIONS - // /*== or choose animations ==*/ - // #define RGBLIGHT_EFFECT_BREATHING - // #define RGBLIGHT_EFFECT_RAINBOW_MOOD - // #define RGBLIGHT_EFFECT_RAINBOW_SWIRL - // #define RGBLIGHT_EFFECT_SNAKE - // #define RGBLIGHT_EFFECT_KNIGHT - // #define RGBLIGHT_EFFECT_CHRISTMAS - // #define RGBLIGHT_EFFECT_STATIC_GRADIENT - // #define RGBLIGHT_EFFECT_RGB_TEST - // #define RGBLIGHT_EFFECT_ALTERNATING -#endif diff --git a/keyboards/bm60rgb_iso/info.json b/keyboards/bm60rgb_iso/info.json deleted file mode 100644 index 75984a958e87..000000000000 --- a/keyboards/bm60rgb_iso/info.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "keyboard_name": "BM60 RGB ISO", - "url": "", - "maintainer": "qmk", - "width": 15, - "height": 5, - "layouts": { - "LAYOUT_60_iso_arrow": { - "layout": [ - {"label":"K00 (B0,D0)", "x":0, "y":0}, - {"label":"K01 (B0,D1)", "x":1, "y":0}, - {"label":"K02 (B0,D2)", "x":2, "y":0}, - {"label":"K03 (B0,D3)", "x":3, "y":0}, - {"label":"K04 (B0,D5)", "x":4, "y":0}, - {"label":"K05 (B0,D4)", "x":5, "y":0}, - {"label":"K06 (B0,D6)", "x":6, "y":0}, - {"label":"K07 (B0,D7)", "x":7, "y":0}, - {"label":"K08 (B0,B4)", "x":8, "y":0}, - {"label":"K09 (B0,B5)", "x":9, "y":0}, - {"label":"K0A (B0,B6)", "x":10, "y":0}, - {"label":"K0B (B0,C6)", "x":11, "y":0}, - {"label":"K0C (B0,C7)", "x":12, "y":0}, - {"label":"K0D (B0,F7)", "x":13, "y":0, "w":2}, - {"label":"K10 (B1,D0)", "x":0, "y":1, "w":1.5}, - {"label":"K11 (B1,D1)", "x":1.5, "y":1}, - {"label":"K12 (B1,D2)", "x":2.5, "y":1}, - {"label":"K13 (B1,D3)", "x":3.5, "y":1}, - {"label":"K14 (B1,D5)", "x":4.5, "y":1}, - {"label":"K15 (B1,D4)", "x":5.5, "y":1}, - {"label":"K16 (B1,D6)", "x":6.5, "y":1}, - {"label":"K17 (B1,D7)", "x":7.5, "y":1}, - {"label":"K18 (B1,B4)", "x":8.5, "y":1}, - {"label":"K19 (B1,B5)", "x":9.5, "y":1}, - {"label":"K1A (B1,B6)", "x":10.5, "y":1}, - {"label":"K1B (B1,C6)", "x":11.5, "y":1}, - {"label":"K1C (B1,C7)", "x":12.5, "y":1}, - {"label":"K20 (B2,D0)", "x":0, "y":2, "w":1.75}, - {"label":"K22 (B2,D2)", "x":1.75, "y":2}, - {"label":"K23 (B2,D3)", "x":2.75, "y":2}, - {"label":"K24 (B2,D5)", "x":3.75, "y":2}, - {"label":"K25 (B2,D4)", "x":4.75, "y":2}, - {"label":"K26 (B2,D6)", "x":5.75, "y":2}, - {"label":"K27 (B2,D7)", "x":6.75, "y":2}, - {"label":"K28 (B2,B4)", "x":7.75, "y":2}, - {"label":"K29 (B2,B5)", "x":8.75, "y":2}, - {"label":"K2A (B2,B6)", "x":9.75, "y":2}, - {"label":"K2B (B2,C6)", "x":10.75, "y":2}, - {"label":"K2C (B2,C7)", "x":11.75, "y":2}, - {"label":"K2D (B2,F7)", "x":12.75, "y":2}, - {"label":"K1D (B1,F7)", "x":13.75, "y":1, "w":1.25, "h":2}, - {"label":"K30 (B3,D0)", "x":0, "y":3, "w":1.25}, - {"label":"K31 (B3,D1)", "x":1.25, "y":3}, - {"label":"K32 (B3,D2)", "x":2.25, "y":3}, - {"label":"K33 (B3,D3)", "x":3.25, "y":3}, - {"label":"K34 (B3,D5)", "x":4.25, "y":3}, - {"label":"K35 (B3,D4)", "x":5.25, "y":3}, - {"label":"K36 (B3,D6)", "x":6.25, "y":3}, - {"label":"K37 (B3,D7)", "x":7.25, "y":3}, - {"label":"K38 (B3,B4)", "x":8.25, "y":3}, - {"label":"K39 (B3,B5)", "x":9.25, "y":3}, - {"label":"K3A (B3,B6)", "x":10.25, "y":3}, - {"label":"K3B (B3,C6)", "x":11.25, "y":3, "w":1.75}, - {"label":"K3C (B3,C7)", "x":13, "y":3}, - {"label":"K3D (B3,F7)", "x":14, "y":3}, - {"label":"K40 (E6,D0)", "x":0, "y":4, "w":1.25}, - {"label":"K41 (E6,D1)", "x":1.25, "y":4, "w":1.25}, - {"label":"K42 (E6,D2)", "x":2.5, "y":4, "w":1.25}, - {"label":"K46 (E6,D6)", "x":3.75, "y":4, "w":6.25}, - {"label":"K49 (E6,B5)", "x":10, "y":4}, - {"label":"K4A (E6,B6)", "x":11, "y":4}, - {"label":"K4B (E6,C6)", "x":12, "y":4}, - {"label":"K4C (E6,C7)", "x":13, "y":4}, - {"label":"K4D (E6,F7)", "x":14, "y":4} - ] - } - } -} diff --git a/keyboards/bm60rgb_iso/readme.md b/keyboards/bm60rgb_iso/readme.md deleted file mode 100644 index 8ae86e4a6fc4..000000000000 --- a/keyboards/bm60rgb_iso/readme.md +++ /dev/null @@ -1,19 +0,0 @@ -# BM60 RGB ISO - -![BM60 RGB ISO](https://i.imgur.com/i3gk2vql.jpg) - -A 60% ISO hotswap inswitch RGB keyboard. - -* Keyboard Maintainer: [markva](https://github.com/markva) -* Hardware Supported: BM60 RGB ISO -* Hardware Availability: [KP Republic](https://kprepublic.com/products/bm60-rgb-iso-uk-eu-rgb-60-hot-swappable-pcb-qmk-firmware-rgb-underglow-type-c) - -Make example for this keyboard (after setting up your build environment): - - make bm60rgb_iso:default - -Flashing example for this keyboard: - - make bm60rgb_iso:default:flash - -See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/bm60rgb_iso/rules.mk b/keyboards/bm60rgb_iso/rules.mk deleted file mode 100644 index 8a550e633186..000000000000 --- a/keyboards/bm60rgb_iso/rules.mk +++ /dev/null @@ -1,25 +0,0 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -BOOTLOADER = atmel-dfu - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth -AUDIO_ENABLE = no # Audio output -RGB_MATRIX_ENABLE = yes -RGB_MATRIX_DRIVER = WS2812 -LTO_ENABLE = yes diff --git a/keyboards/bm68rgb/bm68rgb.c b/keyboards/bm68rgb/bm68rgb.c deleted file mode 100644 index f3d2cc7b4fdc..000000000000 --- a/keyboards/bm68rgb/bm68rgb.c +++ /dev/null @@ -1,44 +0,0 @@ -/* Copyright 2021 peepeetee - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "bm68rgb.h" - -#ifdef RGB_MATRIX_ENABLE -led_config_t g_led_config = { { - // Key Matrix to LED Index - { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }, - { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 }, - { 30, NO_LED, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43 }, - { NO_LED, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57 }, - { 58, 59, 60, NO_LED, NO_LED, NO_LED, 61, NO_LED, NO_LED, 62, 63, 64, 65, 66, 67 } -}, { - // LED Index to Physical Position - { 0, 0}, { 15, 0}, { 30, 0}, { 45, 0}, { 60, 0}, { 75, 0}, { 90, 0}, {105, 0}, {120, 0}, {135, 0}, {150, 0}, {165, 0}, {180, 0}, {202, 0}, {225, 0}, // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace, Delete - { 4, 16}, { 22, 16}, { 37, 16}, { 52, 16}, { 67, 16}, { 82, 16}, { 97, 16}, {112, 16}, {127, 16}, {142, 16}, {157, 16}, {172, 16}, {187, 16}, {206, 16}, {225, 16}, // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], backslash , Home - { 6, 32}, { 26, 32}, { 41, 32}, { 56, 32}, { 71, 32}, { 86, 32}, {101, 32}, {116, 32}, {131, 32}, {146, 32}, {161, 32}, {176, 32}, {201, 32}, {225, 32}, // Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter, Page up - { 9, 48}, { 34, 48}, { 49, 48}, { 64, 48}, { 79, 48}, { 94, 48}, {109, 48}, {124, 48}, {139, 48}, {154, 48}, {169, 48}, {189, 48}, {208, 48}, {225, 48}, // LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up, Page Down - { 2, 64}, { 21, 64}, { 39, 64}, { 94, 64}, {148, 64}, {163, 64}, {178, 64}, {193, 64}, {208, 64}, {225, 64}, // Ctrl, GUI, Alt, Space, RAlt, FN, Ctrl, Left, Down, Right - {185, 45}, {160, 45}, {125, 45}, { 95, 45}, { 60, 45}, { 25, 45} // UNDERGLOW -}, { - // LED Index to Flag - 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace, Delete - 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], backslash , Home - 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, // Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter, Page up - 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, // LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up, Page Down - 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, // Ctrl, GUI, Alt, Space, RAlt, FN, Ctrl, Left, Down, Right - 2, 2, 2, 2, 2, 2 // UNDERGLOW -} }; -#endif diff --git a/keyboards/bm68rgb/config.h b/keyboards/bm68rgb/config.h deleted file mode 100644 index 1923192e5f32..000000000000 --- a/keyboards/bm68rgb/config.h +++ /dev/null @@ -1,122 +0,0 @@ -/* -Copyright 2021 peepeetee - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -#include "config_common.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x4B50 //KP -#define PRODUCT_ID 0xEF6F -#define DEVICE_VER 0x0001 -#define MANUFACTURER KPRepublic -#define PRODUCT BM68 RGB - -/* key matrix size */ -#define MATRIX_ROWS 5 -#define MATRIX_COLS 15 - -/* - * 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, \ - E6 } -#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4, B5, B6, C6, C7, F7, F6 } -#define UNUSED_PINS - -/* COL2ROW, ROW2COL */ -#define DIODE_DIRECTION COL2ROW - -// The pin connected to the data pin of the LEDs -#define RGB_DI_PIN E2 -// The number of LEDs connected -#define DRIVER_LED_TOTAL 74 -#ifdef RGB_DI_PIN - #define RGBLED_NUM 74 - #define RGB_MATRIX_KEYPRESSES // reacts to keypresses -#endif - -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 5 - -/* define if matrix has ghost (lacks anti-ghosting diodes) */ -//#define MATRIX_HAS_GHOST - -/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ -#define LOCKING_SUPPORT_ENABLE -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE - -/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. - * This is useful for the Windows task manager shortcut (ctrl+shift+esc). - */ -//#define GRAVE_ESC_CTRL_OVERRIDE - -/* - * Force NKRO - * - * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved - * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the - * makefile for this to work.) - * - * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) - * until the next keyboard reset. - * - * NKRO may prevent your keystrokes from being detected in the BIOS, but it is - * fully operational during normal computer usage. - * - * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) - * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by - * bootmagic, NKRO mode will always be enabled until it is toggled again during a - * power-up. - * - */ -//#define FORCE_NKRO - -/* - * 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 - -/* disable these deprecated features by default */ -#define NO_ACTION_MACRO -#define NO_ACTION_FUNCTION - -/* Bootmagic Lite key configuration */ -//#define BOOTMAGIC_LITE_ROW 0 -//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/bm68rgb/info.json b/keyboards/bm68rgb/info.json deleted file mode 100644 index a0b48ba90c96..000000000000 --- a/keyboards/bm68rgb/info.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "keyboard_name": "bm68rgb", - "url": "", - "maintainer": "peepeetee", - "width": 15, - "height": 5, - "layouts": { - "LAYOUT_65_ansi": { - "layout": [ - {"label":"K00 (B0,D0)", "x":0, "y":0}, - {"label":"K01 (B0,D1)", "x":1, "y":0}, - {"label":"K02 (B0,D2)", "x":2, "y":0}, - {"label":"K03 (B0,D3)", "x":3, "y":0}, - {"label":"K04 (B0,D5)", "x":4, "y":0}, - {"label":"K05 (B0,D4)", "x":5, "y":0}, - {"label":"K06 (B0,D6)", "x":6, "y":0}, - {"label":"K07 (B0,D7)", "x":7, "y":0}, - {"label":"K08 (B0,B4)", "x":8, "y":0}, - {"label":"K09 (B0,B5)", "x":9, "y":0}, - {"label":"K0A (B0,B6)", "x":10, "y":0}, - {"label":"K0B (B0,C6)", "x":11, "y":0}, - {"label":"K0C (B0,C7)", "x":12, "y":0}, - {"label":"K0D (B0,F7)", "x":13, "y":0, "w":2}, - {"label":"K0E (B0,F6)", "x":15, "y":0}, - {"label":"K10 (B1,D0)", "x":0, "y":1, "w":1.5}, - {"label":"K11 (B1,D1)", "x":1.5, "y":1}, - {"label":"K12 (B1,D2)", "x":2.5, "y":1}, - {"label":"K13 (B1,D3)", "x":3.5, "y":1}, - {"label":"K14 (B1,D5)", "x":4.5, "y":1}, - {"label":"K15 (B1,D4)", "x":5.5, "y":1}, - {"label":"K16 (B1,D6)", "x":6.5, "y":1}, - {"label":"K17 (B1,D7)", "x":7.5, "y":1}, - {"label":"K18 (B1,B4)", "x":8.5, "y":1}, - {"label":"K19 (B1,B5)", "x":9.5, "y":1}, - {"label":"K1A (B1,B6)", "x":10.5, "y":1}, - {"label":"K1B (B1,C6)", "x":11.5, "y":1}, - {"label":"K1C (B1,C7)", "x":12.5, "y":1}, - {"label":"K1D (B1,F7)", "x":13.5, "y":1, "w":1.5}, - {"label":"K1E (B1,F6)", "x":15, "y":1}, - {"label":"K20 (B2,D0)", "x":0, "y":2, "w":1.75}, - {"label":"K22 (B2,D2)", "x":1.75, "y":2}, - {"label":"K23 (B2,D3)", "x":2.75, "y":2}, - {"label":"K24 (B2,D5)", "x":3.75, "y":2}, - {"label":"K25 (B2,D4)", "x":4.75, "y":2}, - {"label":"K26 (B2,D6)", "x":5.75, "y":2}, - {"label":"K27 (B2,D7)", "x":6.75, "y":2}, - {"label":"K28 (B2,B4)", "x":7.75, "y":2}, - {"label":"K29 (B2,B5)", "x":8.75, "y":2}, - {"label":"K2A (B2,B6)", "x":9.75, "y":2}, - {"label":"K2B (B2,C6)", "x":10.75, "y":2}, - {"label":"K2C (B2,C7)", "x":11.75, "y":2}, - {"label":"K2D (B2,F7)", "x":12.75, "y":2, "w":2.25}, - {"label":"K2E (B2,F6)", "x":15, "y":2}, - {"label":"K31 (B3,D1)", "x":0, "y":3, "w":2.25}, - {"label":"K32 (B3,D2)", "x":2.25, "y":3}, - {"label":"K33 (B3,D3)", "x":3.25, "y":3}, - {"label":"K34 (B3,D5)", "x":4.25, "y":3}, - {"label":"K35 (B3,D4)", "x":5.25, "y":3}, - {"label":"K36 (B3,D6)", "x":6.25, "y":3}, - {"label":"K37 (B3,D7)", "x":7.25, "y":3}, - {"label":"K38 (B3,B4)", "x":8.25, "y":3}, - {"label":"K39 (B3,B5)", "x":9.25, "y":3}, - {"label":"K3A (B3,B6)", "x":10.25, "y":3}, - {"label":"K3B (B3,C6)", "x":11.25, "y":3}, - {"label":"K3C (B3,C7)", "x":12.25, "y":3, "w":1.75}, - {"label":"K3D (B3,F7)", "x":14, "y":3}, - {"label":"K3E (B3,F6)", "x":15, "y":3}, - {"label":"K40 (E6,D0)", "x":0, "y":4, "w":1.25}, - {"label":"K41 (E6,D1)", "x":1.25, "y":4, "w":1.25}, - {"label":"K42 (E6,D2)", "x":2.5, "y":4, "w":1.25}, - {"label":"K46 (E6,D6)", "x":3.75, "y":4, "w":6.25}, - {"label":"K49 (E6,B5)", "x":10, "y":4}, - {"label":"K4A (E6,B6)", "x":11, "y":4}, - {"label":"K4B (E6,C6)", "x":12, "y":4}, - {"label":"K4C (E6,C7)", "x":13, "y":4}, - {"label":"K4D (E6,F7)", "x":14, "y":4}, - {"label":"K4E (E6,F6)", "x":15, "y":4} - ] - } - } -} diff --git a/keyboards/bm68rgb/keymaps/peepeetee/config.h b/keyboards/bm68rgb/keymaps/peepeetee/config.h deleted file mode 100644 index 53eebce7f2be..000000000000 --- a/keyboards/bm68rgb/keymaps/peepeetee/config.h +++ /dev/null @@ -1,132 +0,0 @@ -/* Copyright 2021 peepeetee - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#pragma once - - -// #define MODS_SHIFT (get_mods() & MOD_MASK_SHIFT) -// #define MODS_CTRL (get_mods() & MOD_MASK_CTRL) -// #define MODS_ALT (get_mods() & MOD_MASK_ALT) - -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) // Key combination that allows the use of magic commands (useful for debugging) - -// #define NO_DEBUG // Disable debugging -// #define NO_PRINT // Disable printing/debugging using hid_listen -// #define NO_ACTION_LAYER // Disable layers -// #define NO_ACTION_TAPPING // Disable tap dance and other tapping features -// #define NO_ACTION_ONESHOT // Disable one-shot modifiers -// #define NO_ACTION_MACRO // Disable old style macro handling: MACRO() & action_get_macro -// #define TERMINAL_HELP -// #define MOUSEKEY_INTERVAL 20 -// #define MOUSEKEY_DELAY 0 -// #define MOUSEKEY_TIME_TO_MAX 60 -// #define MOUSEKEY_MAX_SPEED 10 -// #define MOUSEKEY_WHEEL_DELAY 0 -#define FORCE_NKRO // NKRO by default requires to be turned on, this forces it on during keyboard startup regardless of EEPROM setting. NKRO can still be turned off but will be turned on again if the keyboard reboots. -// #define QMK_KEYS_PER_SCAN 4 // Allows sending more than one key per scan. By default, only one key event gets sent via process_record() per scan. This has little impact on most typing, but if you're doing a lot of chords, or your scan rate is slow to begin with, you can have some delay in processing key events. Each press and release is a separate event. For a keyboard with 1ms or so scan times, even a very fast typist isn't going to produce the 500 keystrokes a second needed to actually get more than a few ms of delay from this. But if you're doing chording on something with 3-4ms scan times? You probably want this. -// #define STRICT_LAYER_RELEASE // Force a key release to be evaluated using the current layer stack instead of remembering which layer it came from (used for advanced cases) -// #define LOCKING_SUPPORT_ENABLE // Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap -// #define LOCKING_RESYNC_ENABLE // Tries to keep switch state consistent with keyboard LED state - #define TAPPING_TERM 200 // How long before a tap becomes a hold, if set above 500, a key tapped during the tapping term will turn it into a hold too -// #define TAPPING_TERM_PER_KEY // Enables handling for per key TAPPING_TERM settings -// #define RETRO_TAPPING // Tap anyway, even after TAPPING_TERM, if there was no other key interruption between press and release -// #define TAPPING_TOGGLE 2 // How many taps before triggering the toggle -// #define PERMISSIVE_HOLD // Makes tap and hold keys trigger the hold if another key is pressed before releasing, even if it hasn't hit the TAPPING_TERM. See Permissive Hold for details -// #define IGNORE_MOD_TAP_INTERRUPT // Makes it possible to do rolling combos (zx) with keys that convert to other keys on hold, by enforcing the TAPPING_TERM for both keys. See Mod tap interrupt for details -// #define TAPPING_FORCE_HOLD // Makes it possible to use a dual role key as modifier shortly after having been tapped. See Hold after tap. Breaks any Tap Toggle functionality (TT or the One Shot Tap Toggle) -// #define LEADER_TIMEOUT 300 // How long before the leader key times out. If you're having issues finishing the sequence before it times out, you may need to increase the timeout setting. Or you may want to enable the LEADER_PER_KEY_TIMING option, which resets the timeout after each key is tapped. -// #define LEADER_PER_KEY_TIMING // Sets the timer for leader key chords to run on each key press rather than overall -// #define LEADER_KEY_STRICT_KEY_PROCESSING // Disables keycode filtering for Mod-Tap and Layer-Tap keycodes. Eg, if you enable this, you would need to specify MT(MOD_CTL, KC_A) if you want to use KC_A. -// #define ONESHOT_TIMEOUT 300 // How long before oneshot times out -// #define ONESHOT_TAP_TOGGLE 2 // How many taps before oneshot toggle is triggered -// #define COMBO_COUNT 2 // Set this to the number of combos that you're using in the Combo feature. -// #define COMBO_TERM 200 // How long for the Combo keys to be detected. Defaults to TAPPING_TERM if not defined. -// #define TAP_CODE_DELAY 100 // Sets the delay between register_code and unregister_code, if you're having issues with it registering properly (common on VUSB boards). The value is in milliseconds. -// #define TAP_HOLD_CAPS_DELAY 80 // Sets the delay for Tap Hold keys (LT, MT) when using KC_CAPSLOCK keycode, as this has some special handling on MacOS. The value is in milliseconds, and defaults to 80 ms if not defined. For macOS, you may want to set this to 200 or higher. - -#define RGB_MATRIX_FRAMEBUFFER_EFFECTS -#define RGB_MATRIX_KEYPRESSES // reacts to keypresses -// #define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses) -#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_ALPHAS_MODS // Sets the default mode, if none has been set -// #define RGBLIGHT_HUE_STEP 12 // Units to step when in/decreasing hue -// #define RGBLIGHT_SAT_STEP 25 // Units to step when in/decreasing saturation -// #define RGBLIGHT_VAL_STEP 12 // Units to step when in/decreasing value (brightness) -// #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -// #define RGB_DISABLE_WHEN_USB_SUSPENDED false // turn off effects when suspended -// #define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness) -// #define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness) -// #define RGBLIGHT_ANIMATIONS // Run RGB animations -// #define RGBLIGHT_ANIMATIONS // Enable all additional animation modes. -// #define RGBLIGHT_EFFECT_ALTERNATING // Enable alternating animation mode. -// #define RGBLIGHT_EFFECT_BREATHING // Enable breathing animation mode. -// #define RGBLIGHT_EFFECT_CHRISTMAS // Enable christmas animation mode. -// #define RGBLIGHT_EFFECT_KNIGHT // Enable knight animation mode. -// #define RGBLIGHT_EFFECT_RAINBOW_MOOD // Enable rainbow mood animation mode. -// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL // Enable rainbow swirl animation mode. -// #define RGBLIGHT_EFFECT_RGB_TEST // Enable RGB test animation mode. -// #define RGBLIGHT_EFFECT_SNAKE // Enable snake animation mode. -// #define RGBLIGHT_EFFECT_STATIC_GRADIENT // Enable static gradient mode. - -// #define RGBLIGHT_EFFECT_BREATHE_CENTER // If defined, used to calculate the curve for the breathing animation. Valid values are 1.0 to 2.7 -// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // The maximum brightness for the breathing mode. Valid values are 1 to 255 -// #define RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL 1000 // How long to wait between light changes for the "Christmas" animation, in milliseconds -// #define RGBLIGHT_EFFECT_CHRISTMAS_STEP 2 // The number of LEDs to group the red/green colors by for the "Christmas" animation -// #define RGBLIGHT_EFFECT_KNIGHT_LED_NUM RGBLED_NUM // The number of LEDs to have the "Knight" animation travel -// #define RGBLIGHT_EFFECT_KNIGHT_LENGTH 3 // The number of LEDs to light up for the "Knight" animation -// #define RGBLIGHT_EFFECT_KNIGHT_OFFSET 0 // The number of LEDs to start the "Knight" animation from the start of the strip by -// #define RGBLIGHT_RAINBOW_SWIRL_RANGE 255 // Range adjustment for the rainbow swirl effect to get different swirls -// #define RGBLIGHT_EFFECT_SNAKE_LENGTH 4 // The number of LEDs to light up for the "Snake" animation - -// This list in in the correct mode order. Next mode is the following line, previous mode is previous line. Loops around. -// #define DISABLE_RGB_MATRIX_SOLID_COLOR // Static single hue, no speed support -// #define DISABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue -#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes -#define DISABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Static gradient top to bottom, speed controls how much gradient changes -#define DISABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation -#define DISABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right -#define DISABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades saturation -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness -#define DISABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient -//#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right -#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom -#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradent Chevron shapped scrolling left to right -#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in -#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in -#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard -#define DISABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard -#define DISABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard -#define DISABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard -#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard - #define DISABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue - #define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation -// =================================================== Requires RGB_MATRIX_FRAMEBUFFER_EFFECTS ============================================================= -// #define DISABLE_RGB_MATRIX_TYPING_HEATMAP // How hot is your WPM! -#define DISABLE_RGB_MATRIX_DIGITAL_RAIN // That famous computer simulation -// =================================================== RGB_MATRIX_KEYPRESSES OR RGB_MATRIX_KEYRELEASES ===================================================== - #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out -#define DISABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out -#define DISABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out -#define DISABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out -#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out diff --git a/keyboards/bm68rgb/readme.md b/keyboards/bm68rgb/readme.md deleted file mode 100644 index 4087fd8664e5..000000000000 --- a/keyboards/bm68rgb/readme.md +++ /dev/null @@ -1,24 +0,0 @@ -# bm68rgb - -![bm68rgb](https://i.imgur.com/uuYP8OIl.jpeg) - -A 65% hotswap in switch RGB keyboard from KPRepublic. - -* Keyboard Maintainer: [peepeetee](https://github.com/peepeetee) -* Hardware Supported: BM68 RGB -* Hardware Availability: [KP Republic](https://kprepublic.com/products/bm68rgb-bm68-rgb-65-hot-swappable-custom-mechanical-keyboard-pcb-programmed-qmk-via-firmware-full-rgb-switch-underglow-type-c) - -Make example for this keyboard (after setting up your build environment): - - make bm68rgb:default - -Flashing example for this keyboard: - - make bm68rgb:default:flash - -To reset the board into bootloader mode, do one of the following: - -* Short the two-pad footprint to the left of the spacebar switch while the board is plugged in -* Hold the Esc key while connecting the USB cable (also erases persistent settings) - -See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/bm68rgb/rules.mk b/keyboards/bm68rgb/rules.mk deleted file mode 100644 index ce5ad8447774..000000000000 --- a/keyboards/bm68rgb/rules.mk +++ /dev/null @@ -1,27 +0,0 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -BOOTLOADER = atmel-dfu - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -# 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth -AUDIO_ENABLE = no # Audio output -RGB_MATRIX_ENABLE = yes -RGB_MATRIX_DRIVER = WS2812 -LTO_ENABLE = yes - -LAYOUTS = 65_ansi diff --git a/keyboards/boardrun/bizarre/info.json b/keyboards/boardrun/bizarre/info.json index b03e25c81cd9..066095aa34a6 100644 --- a/keyboards/boardrun/bizarre/info.json +++ b/keyboards/boardrun/bizarre/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Boardrun Bizarre", "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/boardrun/bizarre", "maintainer": "QMK Community", - "width": 21, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/boardrun/bizarre/rules.mk b/keyboards/boardrun/bizarre/rules.mk index f841c16c30c3..7cd63143048b 100644 --- a/keyboards/boardrun/bizarre/rules.mk +++ b/keyboards/boardrun/bizarre/rules.mk @@ -7,17 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # 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 -UNICODE_ENABLE = no # Unicode diff --git a/keyboards/boardrun/classic/info.json b/keyboards/boardrun/classic/info.json index 4dc3c82a3f30..538814f36f77 100644 --- a/keyboards/boardrun/classic/info.json +++ b/keyboards/boardrun/classic/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Boardrun Classic", "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/boardrun/classic", "maintainer": "QMK Community", - "width": 16.5, - "height": 5, "layouts": { "LAYOUT_classic": { "layout": [ diff --git a/keyboards/boardrun/classic/rules.mk b/keyboards/boardrun/classic/rules.mk index 065bd5403481..66169abc1a1f 100644 --- a/keyboards/boardrun/classic/rules.mk +++ b/keyboards/boardrun/classic/rules.mk @@ -7,17 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output -UNICODE_ENABLE = no # Unicode diff --git a/keyboards/boardsource/3x4/config.h b/keyboards/boardsource/3x4/config.h index c997f72a9d40..01d163ca5021 100644 --- a/keyboards/boardsource/3x4/config.h +++ b/keyboards/boardsource/3x4/config.h @@ -15,7 +15,7 @@ #define MATRIX_ROWS 3 #define MATRIX_COLS 4 -#define MATRIX_ROW_PINS { F7, F6, F5,} +#define MATRIX_ROW_PINS {F7, F6, F5} #define MATRIX_COL_PINS {B6, B2, B3, B1} #define DIODE_DIRECTION COL2ROW @@ -53,54 +53,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -118,23 +70,3 @@ //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 diff --git a/keyboards/boardsource/3x4/info.json b/keyboards/boardsource/3x4/info.json index ea7a981032b6..649c35af3f34 100644 --- a/keyboards/boardsource/3x4/info.json +++ b/keyboards/boardsource/3x4/info.json @@ -2,8 +2,6 @@ "keyboard_name": "boardsource 4x3", "url": "https://boardsource.xyz", "maintainer": "boardsource", - "width": 4, - "height": 3, "layouts": { "LAYOUT": { diff --git a/keyboards/boardsource/3x4/rules.mk b/keyboards/boardsource/3x4/rules.mk index 9c9acfda2900..0fc354f78c73 100644 --- a/keyboards/boardsource/3x4/rules.mk +++ b/keyboards/boardsource/3x4/rules.mk @@ -2,27 +2,17 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/boardsource/4x12/config.h b/keyboards/boardsource/4x12/config.h index 6125260cd76f..967bb1c9f032 100644 --- a/keyboards/boardsource/4x12/config.h +++ b/keyboards/boardsource/4x12/config.h @@ -51,54 +51,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -116,23 +68,3 @@ //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 diff --git a/keyboards/boardsource/4x12/info.json b/keyboards/boardsource/4x12/info.json index d5f40fd3b282..bb4acbbfe859 100644 --- a/keyboards/boardsource/4x12/info.json +++ b/keyboards/boardsource/4x12/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Boardsource 4x12", "url": "https://boardsource.xyz", "maintainer": "Boardsource", - "width": 12, - "height": 4, "layouts": { "LAYOUT_ortho_4x12": { "layout": [ diff --git a/keyboards/boardsource/4x12/rules.mk b/keyboards/boardsource/4x12/rules.mk index 6799d7072460..951c34d10920 100644 --- a/keyboards/boardsource/4x12/rules.mk +++ b/keyboards/boardsource/4x12/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = ortho_4x12 diff --git a/keyboards/boardsource/5x12/config.h b/keyboards/boardsource/5x12/config.h index 3628431d76ac..455965a09ef0 100644 --- a/keyboards/boardsource/5x12/config.h +++ b/keyboards/boardsource/5x12/config.h @@ -52,54 +52,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -117,23 +69,3 @@ //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 diff --git a/keyboards/boardsource/5x12/info.json b/keyboards/boardsource/5x12/info.json index a609f2a05142..92debddd9252 100644 --- a/keyboards/boardsource/5x12/info.json +++ b/keyboards/boardsource/5x12/info.json @@ -2,8 +2,6 @@ "keyboard_name": "boardsource 5x12", "url": "https://boardsource.xyz", "maintainer": "boardsource", - "width": 12, - "height": 5, "layouts": { "LAYOUT_ortho_5x12": { "layout": [ diff --git a/keyboards/boardsource/5x12/rules.mk b/keyboards/boardsource/5x12/rules.mk index 4a60507b48b7..8e46c9d36fed 100644 --- a/keyboards/boardsource/5x12/rules.mk +++ b/keyboards/boardsource/5x12/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = ortho_5x12 diff --git a/keyboards/boardsource/beiwagon/beiwagon.c b/keyboards/boardsource/beiwagon/beiwagon.c new file mode 100644 index 000000000000..f4ba170e6e86 --- /dev/null +++ b/keyboards/boardsource/beiwagon/beiwagon.c @@ -0,0 +1,38 @@ +/* Copyright 2020 Boardsource + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "beiwagon.h" +#ifdef RGB_MATRIX_ENABLE +led_config_t g_led_config = { { + {7,8,9}, + {10,11,12}, + {13,14,15}, + {16,17,18} +}, { + {2, 0}, {1, 0}, {0, 0}, + {2, 1}, {1, 1}, {0, 1}, + {2, 2}, {1, 2}, {0, 2}, + {2, 3}, {1, 3}, {0, 3}, +}, { + 2, 2, 2, 2, 2, 2, + 1, 1, 1, + 1, 4, 1, + 1, 4, 1, + 1, 1, 1 + +} }; +#endif + diff --git a/keyboards/boardsource/beiwagon/beiwagon.h b/keyboards/boardsource/beiwagon/beiwagon.h new file mode 100644 index 000000000000..ed5d516529f1 --- /dev/null +++ b/keyboards/boardsource/beiwagon/beiwagon.h @@ -0,0 +1,32 @@ +/* Copyright 2020 Boardsource + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + K00, K01, K02, \ + K10, K11, K12, \ + K20, K21, K22, \ + K30, K31, K32\ + ) { \ + {K00, K01, K02 }, \ + {K10, K11, K12 }, \ + {K20, K21, K22 }, \ + {K30, K31, K32 } \ + } + diff --git a/keyboards/boardsource/beiwagon/config.h b/keyboards/boardsource/beiwagon/config.h new file mode 100644 index 000000000000..eb30e5535c61 --- /dev/null +++ b/keyboards/boardsource/beiwagon/config.h @@ -0,0 +1,169 @@ +/* +Copyright 2020 Boardsource + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4273 +#define PRODUCT_ID 0x0066 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Boardsource +#define PRODUCT Beiwagon + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 3 + +/* + * 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} +#define MATRIX_COL_PINS {B5,B6,B7} +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +#define BACKLIGHT_BREATHING +#define RGBLIGHT_ANIMATIONS +#define RGB_DI_PIN C6 +#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120 +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH +#ifdef RGBLIGHT_ENABLE +#define RGBLED_NUM 6 // Number of LEDs +#endif + +#define DRIVER_LED_TOTAL 22 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/boardsource/beiwagon/info.json b/keyboards/boardsource/beiwagon/info.json new file mode 100644 index 000000000000..6f7518b8587d --- /dev/null +++ b/keyboards/boardsource/beiwagon/info.json @@ -0,0 +1,26 @@ +{ + "keyboard_name": "Beiwagon", + "url": "", + "maintainer": "Boardsource", + "layouts": { + "LAYOUT": { + "layout": [ + { "label": "k00", "x": 0, "y": 0 }, + { "label": "k01", "x": 1, "y": 0 }, + { "label": "k02", "x": 2, "y": 0 }, + + { "label": "k10", "x": 0, "y": 1 }, + { "label": "k11", "x": 1, "y": 1 }, + { "label": "k12", "x": 2, "y": 1 }, + + { "label": "k20", "x": 0, "y": 2 }, + { "label": "k21", "x": 1, "y": 2 }, + { "label": "k22", "x": 2, "y": 2 }, + + { "label": "k30", "x": 0, "y": 3 }, + { "label": "k31", "x": 1, "y": 3 }, + { "label": "k32", "x": 2, "y": 3 } + ] + } + } +} diff --git a/keyboards/boardsource/beiwagon/keymaps/default/keymap.c b/keyboards/boardsource/beiwagon/keymaps/default/keymap.c new file mode 100644 index 000000000000..396a0c720769 --- /dev/null +++ b/keyboards/boardsource/beiwagon/keymaps/default/keymap.c @@ -0,0 +1,47 @@ +/* Copyright 2020 Boardsource + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layers { + _MAIN, + _RAISE, + _LOWER, +}; + +// Readability keycodes +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_MAIN] = LAYOUT( + KC_7, KC_8, KC_9, + KC_4, KC_5, KC_6, + KC_1, KC_2, KC_3, + KC_0, KC_PENT,RAISE + ), + + [_RAISE] = LAYOUT( + KC_7, KC_8, RGB_TOG, + KC_4, KC_5, RGB_MOD, + KC_1, KC_2, KC_3, + KC_0, KC_PENT,KC_TRNS + + ) + +}; + diff --git a/keyboards/boardsource/beiwagon/keymaps/default/readme.md b/keyboards/boardsource/beiwagon/keymaps/default/readme.md new file mode 100644 index 000000000000..95f466aa831b --- /dev/null +++ b/keyboards/boardsource/beiwagon/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for Beiwagon diff --git a/keyboards/boardsource/beiwagon/keymaps/via/keymap.c b/keyboards/boardsource/beiwagon/keymaps/via/keymap.c new file mode 100644 index 000000000000..396a0c720769 --- /dev/null +++ b/keyboards/boardsource/beiwagon/keymaps/via/keymap.c @@ -0,0 +1,47 @@ +/* Copyright 2020 Boardsource + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layers { + _MAIN, + _RAISE, + _LOWER, +}; + +// Readability keycodes +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_MAIN] = LAYOUT( + KC_7, KC_8, KC_9, + KC_4, KC_5, KC_6, + KC_1, KC_2, KC_3, + KC_0, KC_PENT,RAISE + ), + + [_RAISE] = LAYOUT( + KC_7, KC_8, RGB_TOG, + KC_4, KC_5, RGB_MOD, + KC_1, KC_2, KC_3, + KC_0, KC_PENT,KC_TRNS + + ) + +}; + diff --git a/keyboards/boardsource/beiwagon/keymaps/via/readme.md b/keyboards/boardsource/beiwagon/keymaps/via/readme.md new file mode 100644 index 000000000000..f1b294c22a70 --- /dev/null +++ b/keyboards/boardsource/beiwagon/keymaps/via/readme.md @@ -0,0 +1 @@ +# The via keymap for Beiwagon diff --git a/keyboards/tokyo60/keymaps/via/rules.mk b/keyboards/boardsource/beiwagon/keymaps/via/rules.mk similarity index 100% rename from keyboards/tokyo60/keymaps/via/rules.mk rename to keyboards/boardsource/beiwagon/keymaps/via/rules.mk diff --git a/keyboards/boardsource/beiwagon/readme.md b/keyboards/boardsource/beiwagon/readme.md new file mode 100644 index 000000000000..104c1a1f2abb --- /dev/null +++ b/keyboards/boardsource/beiwagon/readme.md @@ -0,0 +1,21 @@ +# Beiwagon + +![Beiwagon](https://i.imgur.com/eQi2Laqh.jpeg) + +The Beiwagon was designed to be a companion to the Technik keeping the same height and design it is a perfect match to sit along side. + +* Keyboard Maintainer: [Boardsource](https://github.com/boardsource) +* Hardware Supported: V1 pcb +* Hardware Availability: [boardsource](https://boardsource.xyz/store/5ffb9b01edd0447f8023fdb2) + +Make example for this keyboard (after setting up your build environment): + + make boardsource/beiwagon:default + +Flashing example for this keyboard: + + make boardsource/beiwagon:default:flash + +Reset keyboard by pushing reset button on back of pcb through access hole. Or hold down top left key while you plug in the usb cable. + +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/boardsource/beiwagon/rules.mk b/keyboards/boardsource/beiwagon/rules.mk new file mode 100644 index 000000000000..011d4f909657 --- /dev/null +++ b/keyboards/boardsource/beiwagon/rules.mk @@ -0,0 +1,21 @@ +# 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 = no # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = WS2812 diff --git a/keyboards/boardsource/holiday/spooky/info.json b/keyboards/boardsource/holiday/spooky/info.json index a39b45b72688..c942b2af1126 100644 --- a/keyboards/boardsource/holiday/spooky/info.json +++ b/keyboards/boardsource/holiday/spooky/info.json @@ -2,10 +2,8 @@ "keyboard_name": "spooky", "url": "https://boardsource.xyz/store/5f783f6da2c1b43e37ca0795", "maintainer": "boardsource", - "width": 3, - "height": 2, "layouts": { - "LAYOUT": { + "LAYOUT_ortho_2x3": { "layout": [ { "label": "k00", "x": 0, "y": 0 }, { "label": "k01", "x": 1, "y": 0 }, diff --git a/keyboards/boardsource/holiday/spooky/keymaps/default/keymap.c b/keyboards/boardsource/holiday/spooky/keymaps/default/keymap.c index b4fcfc1bc19b..63fbb1b94cef 100644 --- a/keyboards/boardsource/holiday/spooky/keymaps/default/keymap.c +++ b/keyboards/boardsource/holiday/spooky/keymaps/default/keymap.c @@ -24,7 +24,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Base */ [_BASE] = LAYOUT_ortho_2x3( KC_F1, KC_F2, KC_F3, - KC_F4, KC_F5,KC_F6 + KC_F4, KC_F5, KC_F6 ), }; - diff --git a/keyboards/boardsource/holiday/spooky/keymaps/rip_mx/keymap.c b/keyboards/boardsource/holiday/spooky/keymaps/rip_mx/keymap.c index 44b234e4ab6c..eb56d117355b 100644 --- a/keyboards/boardsource/holiday/spooky/keymaps/rip_mx/keymap.c +++ b/keyboards/boardsource/holiday/spooky/keymaps/rip_mx/keymap.c @@ -27,52 +27,53 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { RGB_MOD, KC_VOLD, KC_F1 ), }; -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; } static void render_RIP(void) { static const char PROGMEM my_logo[] = { -0xff, 0xff, 0x07, 0x1e, 0x70, 0xc0, 0x00, 0x00, 0xe0, 0x78, 0x1e, 0x07, 0xff, 0xfe, 0x00, 0x00, -0x00, 0x00, 0x03, 0x06, 0x1c, 0xb8, 0xf0, 0xe0, 0xb8, 0x1c, 0x0e, 0x07, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x3e, 0x66, 0x63, 0x63, 0x43, 0x43, 0xc3, 0xc2, 0x82, -0x00, 0x00, 0x00, 0x30, 0xf0, 0xc0, 0x00, 0x00, 0xc0, 0xf0, 0x30, 0xf0, 0x80, 0x00, 0x00, 0xc0, -0xf0, 0x10, 0x00, 0x00, 0x00, 0xf3, 0xf3, 0x00, 0x00, 0x10, 0x18, 0xfe, 0x18, 0x10, 0x10, 0x10, -0x00, 0x00, 0xc0, 0xe0, 0x30, 0x10, 0x18, 0x18, 0x18, 0x10, 0x10, 0x00, 0x00, 0x00, 0xff, 0xff, -0x30, 0x10, 0x18, 0x18, 0x18, 0x30, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0xe0, 0xf0, 0x90, 0x90, 0x98, -0x98, 0x98, 0xb0, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0xf0, 0x90, 0x98, 0x98, 0x18, 0x18, 0x10, 0x00, -0x1f, 0x1f, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, -0x00, 0x10, 0x1c, 0x0e, 0x07, 0x01, 0x00, 0x00, 0x01, 0x07, 0x0e, 0x1c, 0x18, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x18, 0x18, 0x10, 0x10, 0x18, 0x18, 0x0d, 0x0f, -0x03, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x1e, 0x1e, 0x07, 0x00, 0x00, 0x01, 0x0f, 0x1c, 0x1e, 0x07, -0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0c, 0x18, 0x18, 0x18, -0x00, 0x00, 0x03, 0x0f, 0x0c, 0x18, 0x10, 0x10, 0x10, 0x18, 0x08, 0x00, 0x00, 0x00, 0x1f, 0x1f, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x08, 0x18, 0x10, -0x10, 0x10, 0x18, 0x18, 0x08, 0x00, 0x00, 0x08, 0x18, 0x10, 0x11, 0x11, 0x11, 0x19, 0x0f, 0x0e, -0x00, 0x30, 0x30, 0x10, 0x10, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf0, -0x30, 0x10, 0x18, 0x18, 0x10, 0x70, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x40, 0xf0, 0xb0, 0x10, 0x18, -0x18, 0x10, 0x30, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0x80, 0xe0, 0x70, 0x10, 0x18, 0x18, 0x10, 0x30, -0xf0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x10, 0x10, 0x18, 0x18, 0x18, -0x10, 0x30, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x80, 0xe0, 0xf0, 0x30, 0x10, 0x18, 0x10, 0x30, 0xf0, -0xe0, 0x00, 0x00, 0x00, 0x00, 0x30, 0x10, 0x10, 0x18, 0x18, 0x10, 0x30, 0xf0, 0xe0, 0x00, 0x00, -0x00, 0x00, 0xc0, 0xe0, 0x30, 0x10, 0x18, 0x18, 0x10, 0x30, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xff, 0xff, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc7, -0xc4, 0x8c, 0x8c, 0xcc, 0xc4, 0x77, 0x3f, 0x0f, 0x00, 0x00, 0x00, 0x38, 0x7d, 0xc7, 0xc3, 0x82, -0x82, 0xc3, 0xc7, 0x7d, 0x7c, 0x00, 0x00, 0x00, 0x0f, 0x3f, 0x70, 0xc0, 0x80, 0x80, 0xc0, 0xc0, -0x7f, 0x3f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, -0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xf0, 0xf0, 0xd8, 0xcc, -0xc6, 0xc3, 0xc1, 0xc0, 0x00, 0x00, 0x00, 0x0f, 0x3f, 0x70, 0xc0, 0xc0, 0x80, 0xc0, 0xc0, 0x70, -0x3f, 0x0f, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xf0, 0xd8, 0xcc, 0xcc, 0xc7, 0xc3, 0xc1, 0x00, 0x00, +0xff, 0xff, 0x07, 0x1e, 0x70, 0xc0, 0x00, 0x00, 0xe0, 0x78, 0x1e, 0x07, 0xff, 0xfe, 0x00, 0x00, +0x00, 0x00, 0x03, 0x06, 0x1c, 0xb8, 0xf0, 0xe0, 0xb8, 0x1c, 0x0e, 0x07, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x3e, 0x66, 0x63, 0x63, 0x43, 0x43, 0xc3, 0xc2, 0x82, +0x00, 0x00, 0x00, 0x30, 0xf0, 0xc0, 0x00, 0x00, 0xc0, 0xf0, 0x30, 0xf0, 0x80, 0x00, 0x00, 0xc0, +0xf0, 0x10, 0x00, 0x00, 0x00, 0xf3, 0xf3, 0x00, 0x00, 0x10, 0x18, 0xfe, 0x18, 0x10, 0x10, 0x10, +0x00, 0x00, 0xc0, 0xe0, 0x30, 0x10, 0x18, 0x18, 0x18, 0x10, 0x10, 0x00, 0x00, 0x00, 0xff, 0xff, +0x30, 0x10, 0x18, 0x18, 0x18, 0x30, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0xe0, 0xf0, 0x90, 0x90, 0x98, +0x98, 0x98, 0xb0, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0xf0, 0x90, 0x98, 0x98, 0x18, 0x18, 0x10, 0x00, +0x1f, 0x1f, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, +0x00, 0x10, 0x1c, 0x0e, 0x07, 0x01, 0x00, 0x00, 0x01, 0x07, 0x0e, 0x1c, 0x18, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x18, 0x18, 0x10, 0x10, 0x18, 0x18, 0x0d, 0x0f, +0x03, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x1e, 0x1e, 0x07, 0x00, 0x00, 0x01, 0x0f, 0x1c, 0x1e, 0x07, +0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0c, 0x18, 0x18, 0x18, +0x00, 0x00, 0x03, 0x0f, 0x0c, 0x18, 0x10, 0x10, 0x10, 0x18, 0x08, 0x00, 0x00, 0x00, 0x1f, 0x1f, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x08, 0x18, 0x10, +0x10, 0x10, 0x18, 0x18, 0x08, 0x00, 0x00, 0x08, 0x18, 0x10, 0x11, 0x11, 0x11, 0x19, 0x0f, 0x0e, +0x00, 0x30, 0x30, 0x10, 0x10, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf0, +0x30, 0x10, 0x18, 0x18, 0x10, 0x70, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x40, 0xf0, 0xb0, 0x10, 0x18, +0x18, 0x10, 0x30, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0x80, 0xe0, 0x70, 0x10, 0x18, 0x18, 0x10, 0x30, +0xf0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x10, 0x10, 0x18, 0x18, 0x18, +0x10, 0x30, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x80, 0xe0, 0xf0, 0x30, 0x10, 0x18, 0x10, 0x30, 0xf0, +0xe0, 0x00, 0x00, 0x00, 0x00, 0x30, 0x10, 0x10, 0x18, 0x18, 0x10, 0x30, 0xf0, 0xe0, 0x00, 0x00, +0x00, 0x00, 0xc0, 0xe0, 0x30, 0x10, 0x18, 0x18, 0x10, 0x30, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xff, 0xff, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc7, +0xc4, 0x8c, 0x8c, 0xcc, 0xc4, 0x77, 0x3f, 0x0f, 0x00, 0x00, 0x00, 0x38, 0x7d, 0xc7, 0xc3, 0x82, +0x82, 0xc3, 0xc7, 0x7d, 0x7c, 0x00, 0x00, 0x00, 0x0f, 0x3f, 0x70, 0xc0, 0x80, 0x80, 0xc0, 0xc0, +0x7f, 0x3f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, +0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xf0, 0xf0, 0xd8, 0xcc, +0xc6, 0xc3, 0xc1, 0xc0, 0x00, 0x00, 0x00, 0x0f, 0x3f, 0x70, 0xc0, 0xc0, 0x80, 0xc0, 0xc0, 0x70, +0x3f, 0x0f, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xf0, 0xd8, 0xcc, 0xcc, 0xc7, 0xc3, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x7f, 0xe0, 0xc0, 0x80, 0x80, 0xc0, 0x60, 0x7f, 0x1f, 0x00, 0x00, 0x00, 0x00 }; oled_write_raw_P(my_logo, sizeof(my_logo)); } -void oled_task_user(void) { +bool oled_task_user(void) { render_RIP(); + return false; } #endif diff --git a/keyboards/boardsource/holiday/spooky/keymaps/rip_mx/rules.mk b/keyboards/boardsource/holiday/spooky/keymaps/rip_mx/rules.mk index c582662134c4..d34d066ded93 100644 --- a/keyboards/boardsource/holiday/spooky/keymaps/rip_mx/rules.mk +++ b/keyboards/boardsource/holiday/spooky/keymaps/rip_mx/rules.mk @@ -1 +1,2 @@ -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/boardsource/holiday/spooky/keymaps/rip_my_wallet/keymap.c b/keyboards/boardsource/holiday/spooky/keymaps/rip_my_wallet/keymap.c index 88fc47a1dc29..f8cac5087518 100644 --- a/keyboards/boardsource/holiday/spooky/keymaps/rip_my_wallet/keymap.c +++ b/keyboards/boardsource/holiday/spooky/keymaps/rip_my_wallet/keymap.c @@ -27,52 +27,53 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { RGB_MOD, KC_3,KC_4 ), }; -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; } static void render_RIP(void) { static const char PROGMEM my_logo[] = { -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x08, 0x04, -0x04, 0x7c, 0xfc, 0xf0, 0x00, 0x00, 0x40, 0x20, 0xf0, 0x7c, 0x06, 0x00, 0x41, 0xc0, 0x00, 0x00, -0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0xc0, 0x00, -0x00, 0x00, 0xe0, 0x60, 0x00, 0x80, 0x40, 0x20, 0x20, 0xe0, 0x00, 0x00, 0x00, 0xf0, 0x3c, 0x02, -0x01, 0xc1, 0xf8, 0x0e, 0x00, 0x01, 0xc0, 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0xf0, 0x50, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, -0x03, 0x00, 0x00, 0x0f, 0x06, 0x01, 0x00, 0x1e, 0x1f, 0x10, 0x00, 0x00, 0x1e, 0x1f, 0x08, 0xc0, -0x3e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x1e, 0x11, 0x08, 0x04, 0x1e, 0x11, 0x00, -0x08, 0x06, 0x01, 0x00, 0x1e, 0x19, 0x08, 0x00, 0x1e, 0x0b, 0x08, 0x00, 0x1f, 0x1b, 0x08, 0x00, -0x18, 0x1f, 0x00, 0x00, 0x00, 0x1f, 0x12, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x19, 0x08, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, -0x84, 0x84, 0x84, 0xcc, 0x38, 0x00, 0x00, 0x00, 0xf0, 0x18, 0x04, 0x05, 0x0f, 0x79, 0xe1, 0x00, -0x00, 0x00, 0xc0, 0x78, 0x0c, 0x00, 0x00, 0x0c, 0x84, 0x84, 0xcc, 0xf8, 0x30, 0x00, 0x00, 0xe0, -0xf8, 0x0c, 0x04, 0x04, 0x0c, 0xf8, 0x80, 0x00, 0x00, 0x00, 0xe0, 0x1c, 0x00, 0x00, 0x08, 0x0c, -0x04, 0x04, 0xcc, 0x78, 0x00, 0x00, 0x00, 0xf0, 0x18, 0x0c, 0x04, 0x0c, 0x18, 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, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, -0x10, 0x10, 0x10, 0x19, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x18, 0x10, 0x10, 0x18, 0x0f, 0x07, 0x00, -0x20, 0x1e, 0x03, 0x00, 0x00, 0x00, 0x18, 0x10, 0x10, 0x10, 0x10, 0x1d, 0x0f, 0x00, 0x00, 0x03, -0x0f, 0x18, 0x10, 0x10, 0x18, 0x0f, 0x00, 0x00, 0x38, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x18, 0x1c, -0x16, 0x13, 0x10, 0x10, 0x00, 0x00, 0x00, 0x07, 0x1c, 0x10, 0x10, 0x10, 0x0c, 0x07, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x08, 0x04, +0x04, 0x7c, 0xfc, 0xf0, 0x00, 0x00, 0x40, 0x20, 0xf0, 0x7c, 0x06, 0x00, 0x41, 0xc0, 0x00, 0x00, +0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0xc0, 0x00, +0x00, 0x00, 0xe0, 0x60, 0x00, 0x80, 0x40, 0x20, 0x20, 0xe0, 0x00, 0x00, 0x00, 0xf0, 0x3c, 0x02, +0x01, 0xc1, 0xf8, 0x0e, 0x00, 0x01, 0xc0, 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0xf0, 0x50, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, +0x03, 0x00, 0x00, 0x0f, 0x06, 0x01, 0x00, 0x1e, 0x1f, 0x10, 0x00, 0x00, 0x1e, 0x1f, 0x08, 0xc0, +0x3e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x1e, 0x11, 0x08, 0x04, 0x1e, 0x11, 0x00, +0x08, 0x06, 0x01, 0x00, 0x1e, 0x19, 0x08, 0x00, 0x1e, 0x0b, 0x08, 0x00, 0x1f, 0x1b, 0x08, 0x00, +0x18, 0x1f, 0x00, 0x00, 0x00, 0x1f, 0x12, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x19, 0x08, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, +0x84, 0x84, 0x84, 0xcc, 0x38, 0x00, 0x00, 0x00, 0xf0, 0x18, 0x04, 0x05, 0x0f, 0x79, 0xe1, 0x00, +0x00, 0x00, 0xc0, 0x78, 0x0c, 0x00, 0x00, 0x0c, 0x84, 0x84, 0xcc, 0xf8, 0x30, 0x00, 0x00, 0xe0, +0xf8, 0x0c, 0x04, 0x04, 0x0c, 0xf8, 0x80, 0x00, 0x00, 0x00, 0xe0, 0x1c, 0x00, 0x00, 0x08, 0x0c, +0x04, 0x04, 0xcc, 0x78, 0x00, 0x00, 0x00, 0xf0, 0x18, 0x0c, 0x04, 0x0c, 0x18, 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, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, +0x10, 0x10, 0x10, 0x19, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x18, 0x10, 0x10, 0x18, 0x0f, 0x07, 0x00, +0x20, 0x1e, 0x03, 0x00, 0x00, 0x00, 0x18, 0x10, 0x10, 0x10, 0x10, 0x1d, 0x0f, 0x00, 0x00, 0x03, +0x0f, 0x18, 0x10, 0x10, 0x18, 0x0f, 0x00, 0x00, 0x38, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x18, 0x1c, +0x16, 0x13, 0x10, 0x10, 0x00, 0x00, 0x00, 0x07, 0x1c, 0x10, 0x10, 0x10, 0x0c, 0x07, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; oled_write_raw_P(my_logo, sizeof(my_logo)); } -void oled_task_user(void) { +bool oled_task_user(void) { render_RIP(); + return false; } #endif diff --git a/keyboards/boardsource/holiday/spooky/keymaps/rip_my_wallet/rules.mk b/keyboards/boardsource/holiday/spooky/keymaps/rip_my_wallet/rules.mk index c582662134c4..d34d066ded93 100644 --- a/keyboards/boardsource/holiday/spooky/keymaps/rip_my_wallet/rules.mk +++ b/keyboards/boardsource/holiday/spooky/keymaps/rip_my_wallet/rules.mk @@ -1 +1,2 @@ -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/boardsource/holiday/spooky/rules.mk b/keyboards/boardsource/holiday/spooky/rules.mk index d23e95512672..54e80111a0e0 100644 --- a/keyboards/boardsource/holiday/spooky/rules.mk +++ b/keyboards/boardsource/holiday/spooky/rules.mk @@ -7,16 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 + +LAYOUTS = ortho_2x3 diff --git a/keyboards/boardsource/microdox/info.json b/keyboards/boardsource/microdox/info.json index fad30399d4ef..325505600284 100644 --- a/keyboards/boardsource/microdox/info.json +++ b/keyboards/boardsource/microdox/info.json @@ -2,8 +2,6 @@ "keyboard_name": "microdox", "url": "https://boardsource.xyz/store/5f2e7e4a2902de7151494f92", "maintainer": "boardsource", - "width": 13, - "height": 4.7, "layouts": { "LAYOUT_split_3x5_3": { "layout": [ diff --git a/keyboards/boardsource/microdox/keymaps/cole/keymap.c b/keyboards/boardsource/microdox/keymaps/cole/keymap.c index 62d728000018..8ff57074787e 100644 --- a/keyboards/boardsource/microdox/keymaps/cole/keymap.c +++ b/keyboards/boardsource/microdox/keymaps/cole/keymap.c @@ -38,27 +38,27 @@ enum layers { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT_split_3x5_3( - KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, - CTRL_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_CTSC, - SHFT_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, SHIFT_SLASH, + [_QWERTY] = LAYOUT_split_3x5_3( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + CTRL_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_CTSC, + SHFT_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, SHIFT_SLASH, MO(_LOWER),KC_LGUI, RASE_ENT, RASE_BACK, LOWER_SPC, KC_TAB ), - [_RAISE] = LAYOUT_split_3x5_3( - KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, - KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_QUOT, - KC_LSFT, KC_GRV, PREVWINDOW, NEXTWINDOW, XXXXXXX, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, + [_RAISE] = LAYOUT_split_3x5_3( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_QUOT, + KC_LSFT, KC_GRV, PREVWINDOW, NEXTWINDOW, XXXXXXX, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, _______, KC_LGUI, KC_ENT, KC_BSPC, KC_SPC, _______ ), - [_LOWER] = LAYOUT_split_3x5_3( + [_LOWER] = LAYOUT_split_3x5_3( KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, - KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_DQT, - KC_ESC, KC_TILD, PREVWINDOW, NEXTWINDOW, RGB_MODE_FORWARD, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_DQT, + KC_ESC, KC_TILD, PREVWINDOW, NEXTWINDOW, RGB_MODE_FORWARD, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, _______, KC_LGUI, KC_ENT, KC_BSPC, KC_SPC, _______ ) }; -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { if (is_keyboard_master()) return OLED_ROTATION_180; @@ -73,7 +73,7 @@ static void render_logo(void) { 0 }; oled_write_P(qmk_logo, false); -} +} static void render_status(void) { switch (get_highest_layer(layer_state)) { @@ -104,13 +104,14 @@ static void render_status(void) { } } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { render_status(); } else { render_logo(); oled_scroll_left(); } + return false; } #endif diff --git a/keyboards/boardsource/microdox/keymaps/cole/rules.mk b/keyboards/boardsource/microdox/keymaps/cole/rules.mk index 48a51b225024..d34d066ded93 100644 --- a/keyboards/boardsource/microdox/keymaps/cole/rules.mk +++ b/keyboards/boardsource/microdox/keymaps/cole/rules.mk @@ -1 +1,2 @@ -OLED_DRIVER_ENABLE = yes \ No newline at end of file +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/boardsource/microdox/keymaps/via/keymap.c b/keyboards/boardsource/microdox/keymaps/via/keymap.c index 2f4785ad2e8e..e02fb0b6eeb1 100644 --- a/keyboards/boardsource/microdox/keymaps/via/keymap.c +++ b/keyboards/boardsource/microdox/keymaps/via/keymap.c @@ -46,7 +46,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { if (is_keyboard_master()) return OLED_ROTATION_180; @@ -92,13 +92,14 @@ static void render_status(void) { } } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { render_status(); } else { render_logo(); oled_scroll_left(); } + return false; } #endif diff --git a/keyboards/boardsource/microdox/keymaps/via/rules.mk b/keyboards/boardsource/microdox/keymaps/via/rules.mk index fc32a8b111e3..c84c1f41767b 100644 --- a/keyboards/boardsource/microdox/keymaps/via/rules.mk +++ b/keyboards/boardsource/microdox/keymaps/via/rules.mk @@ -1,4 +1,5 @@ -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 VIA_ENABLE = yes EXTRAKEY_ENABLE = yes RGBLIGHT_ENABLE = yes diff --git a/keyboards/boardsource/microdox/rules.mk b/keyboards/boardsource/microdox/rules.mk index b6afb77c7830..10dc2701fed7 100644 --- a/keyboards/boardsource/microdox/rules.mk +++ b/keyboards/boardsource/microdox/rules.mk @@ -7,17 +7,16 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 = 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 SPLIT_KEYBOARD = yes + +LAYOUTS = split_3x5_3 diff --git a/keyboards/boardsource/technik_o/config.h b/keyboards/boardsource/technik_o/config.h new file mode 100644 index 000000000000..3b9bf2021784 --- /dev/null +++ b/keyboards/boardsource/technik_o/config.h @@ -0,0 +1,169 @@ +/* +Copyright 2020 Boardsource + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4273 +#define PRODUCT_ID 0x0079 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Boardsource +#define PRODUCT Technik-O + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + +/* + * 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} +#define MATRIX_COL_PINS {B5, B6, B7, F5, C7, D0, D1, D2, D3, D4, D5, D6} +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +#define BACKLIGHT_BREATHING +#define RGBLIGHT_ANIMATIONS +#define RGB_DI_PIN C6 +#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120 +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH +#ifdef RGBLIGHT_ENABLE +# define RGBLED_NUM 10 // Number of LEDs +#endif + +#define DRIVER_LED_TOTAL 58 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/boardsource/technik_o/info.json b/keyboards/boardsource/technik_o/info.json new file mode 100644 index 000000000000..0aa780ca7ba4 --- /dev/null +++ b/keyboards/boardsource/technik_o/info.json @@ -0,0 +1,62 @@ +{ + "keyboard_name": "Technik-O", + "url": "https://boardsource.xyz", + "maintainer": "Boardsource", + "layouts": { + "LAYOUT_ortho_4x12": { + "layout": [ + { "label": "K01", "x": 0, "y": 0 }, + { "label": "K02", "x": 1, "y": 0 }, + { "label": "K03", "x": 2, "y": 0 }, + { "label": "K04", "x": 3, "y": 0 }, + { "label": "K05", "x": 4, "y": 0 }, + { "label": "K06", "x": 5, "y": 0 }, + { "label": "K07", "x": 6, "y": 0 }, + { "label": "K08", "x": 7, "y": 0 }, + { "label": "K09", "x": 8, "y": 0 }, + { "label": "K010", "x": 9, "y": 0 }, + { "label": "K011", "x": 10, "y": 0 }, + { "label": "K012", "x": 11, "y": 0 }, + + { "label": "K11", "x": 0, "y": 1 }, + { "label": "K12", "x": 1, "y": 1 }, + { "label": "K13", "x": 2, "y": 1 }, + { "label": "K14", "x": 3, "y": 1 }, + { "label": "K15", "x": 4, "y": 1 }, + { "label": "K16", "x": 5, "y": 1 }, + { "label": "K17", "x": 6, "y": 1 }, + { "label": "K18", "x": 7, "y": 1 }, + { "label": "K19", "x": 8, "y": 1 }, + { "label": "K110", "x": 9, "y": 1 }, + { "label": "K111", "x": 10, "y": 1 }, + { "label": "K112", "x": 11, "y": 1 }, + + { "label": "K21", "x": 0, "y": 2 }, + { "label": "K22", "x": 1, "y": 2 }, + { "label": "K23", "x": 2, "y": 2 }, + { "label": "K24", "x": 3, "y": 2 }, + { "label": "K25", "x": 4, "y": 2 }, + { "label": "K26", "x": 5, "y": 2 }, + { "label": "K27", "x": 6, "y": 2 }, + { "label": "K28", "x": 7, "y": 2 }, + { "label": "K29", "x": 8, "y": 2 }, + { "label": "K210", "x": 9, "y": 2 }, + { "label": "K211", "x": 10, "y": 2 }, + { "label": "K212", "x": 11, "y": 2 }, + + { "label": "K31", "x": 0, "y": 3 }, + { "label": "K32", "x": 1, "y": 3 }, + { "label": "K33", "x": 2, "y": 3 }, + { "label": "K34", "x": 3, "y": 3 }, + { "label": "K35", "x": 4, "y": 3 }, + { "label": "K36", "x": 5, "y": 3 }, + { "label": "K37", "x": 6, "y": 3 }, + { "label": "K38", "x": 7, "y": 3 }, + { "label": "K39", "x": 8, "y": 3 }, + { "label": "K310", "x": 9, "y": 3 }, + { "label": "K311", "x": 10, "y": 3 }, + { "label": "K312", "x": 11, "y": 3 } + ] + } + } +} diff --git a/keyboards/boardsource/technik_o/keymaps/default/keymap.c b/keyboards/boardsource/technik_o/keymaps/default/keymap.c new file mode 100644 index 000000000000..44e2b86ac18b --- /dev/null +++ b/keyboards/boardsource/technik_o/keymaps/default/keymap.c @@ -0,0 +1,53 @@ +/* Copyright 2020 Boardsource + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layers { + _MAIN, + _RAISE, + _LOWER, +}; + +// Readability keycodes +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_MAIN] = LAYOUT_ortho_4x12( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , + RGB_TOG, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + + [_RAISE] = LAYOUT_ortho_4x12( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______, + RESET, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), + + [_LOWER] = LAYOUT_ortho_4x12( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, + RGB_MOD, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ) + +}; + diff --git a/keyboards/boardsource/technik_o/keymaps/default/readme.md b/keyboards/boardsource/technik_o/keymaps/default/readme.md new file mode 100644 index 000000000000..e9427401d0c9 --- /dev/null +++ b/keyboards/boardsource/technik_o/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for Technik-O diff --git a/keyboards/boardsource/technik_o/keymaps/via/keymap.c b/keyboards/boardsource/technik_o/keymaps/via/keymap.c new file mode 100644 index 000000000000..44e2b86ac18b --- /dev/null +++ b/keyboards/boardsource/technik_o/keymaps/via/keymap.c @@ -0,0 +1,53 @@ +/* Copyright 2020 Boardsource + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layers { + _MAIN, + _RAISE, + _LOWER, +}; + +// Readability keycodes +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_MAIN] = LAYOUT_ortho_4x12( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , + RGB_TOG, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + + [_RAISE] = LAYOUT_ortho_4x12( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______, + RESET, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), + + [_LOWER] = LAYOUT_ortho_4x12( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, + RGB_MOD, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ) + +}; + diff --git a/keyboards/boardsource/technik_o/keymaps/via/readme.md b/keyboards/boardsource/technik_o/keymaps/via/readme.md new file mode 100644 index 000000000000..6ae03a917f14 --- /dev/null +++ b/keyboards/boardsource/technik_o/keymaps/via/readme.md @@ -0,0 +1 @@ +# The via keymap for Technik-O diff --git a/keyboards/xd60/keymaps/shura30/rules.mk b/keyboards/boardsource/technik_o/keymaps/via/rules.mk old mode 100755 new mode 100644 similarity index 100% rename from keyboards/xd60/keymaps/shura30/rules.mk rename to keyboards/boardsource/technik_o/keymaps/via/rules.mk diff --git a/keyboards/boardsource/technik_o/readme.md b/keyboards/boardsource/technik_o/readme.md new file mode 100644 index 000000000000..90c3588f9027 --- /dev/null +++ b/keyboards/boardsource/technik_o/readme.md @@ -0,0 +1,21 @@ +# Technik-O + +![Technik-O](https://i.imgur.com/F2VTqAs.jpeg) + +The Technik is a low profile keyboard offered in two layout options. This one is the 4x12 ortho option. This keyboard offers per key and under glow lighting as well as hotswap. + +* Keyboard Maintainer: [Boardsource](https://github.com/boardsource) +* Hardware Supported: V1 pcb +* Hardware Availability: [boardsource](https://boardsource.xyz/store/5ffb9b01edd0447f8023fdb2) + +Make example for this keyboard (after setting up your build environment): + + make boardsource/technik_o:default + +Flashing example for this keyboard: + + make boardsource/technik_o:default:flash + +Reset keyboard by pushing reset button on back of pcb through access hole. Or hold down top left key while you plug in the usb cable. + +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/boardsource/technik_o/rules.mk b/keyboards/boardsource/technik_o/rules.mk new file mode 100644 index 000000000000..845634ad5ef9 --- /dev/null +++ b/keyboards/boardsource/technik_o/rules.mk @@ -0,0 +1,22 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = WS2812 +LAYOUTS = ortho_4x12 diff --git a/keyboards/boardsource/technik_o/technik_o.c b/keyboards/boardsource/technik_o/technik_o.c new file mode 100644 index 000000000000..706939a58b2c --- /dev/null +++ b/keyboards/boardsource/technik_o/technik_o.c @@ -0,0 +1,38 @@ +/* Copyright 2020 Boardsource + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "technik_o.h" +#ifdef RGB_MATRIX_ENABLE +led_config_t g_led_config = { { + { 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21}, + { 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33}, + { 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45}, + { 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57} +}, { + {220, 17}, {172, 17}, {112, 17}, { 50, 17}, { 4, 17}, { 4, 56}, { 50, 56}, {112, 56}, {172, 56}, {220, 56}, + { 0, 0}, { 20, 0}, { 40, 0}, { 61, 0}, { 81, 0}, {101, 0}, {122, 0}, {142, 0}, {162, 0}, {183, 0}, {203, 0}, {224, 0}, + { 0, 21}, { 20, 21}, { 40, 21}, { 61, 21}, { 81, 21}, {101, 21}, {122, 21}, {142, 21}, {162, 21}, {183, 21}, {203, 21}, {224, 21}, + { 0, 42}, { 20, 42}, { 40, 42}, { 61, 42}, { 81, 42}, {101, 42}, {122, 42}, {142, 42}, {162, 42}, {183, 42}, {203, 42}, {224, 42}, + { 0, 64}, { 20, 64}, { 40, 64}, { 61, 64}, { 81, 64}, {101, 64}, {122, 64}, {142, 64}, {162, 64}, {183, 64}, {203, 64}, {224, 64} +}, { + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 1, 1, 1, 1, 1, 4, 4, 1, 1, 1, 1, 1 +} }; +#endif + diff --git a/keyboards/boardsource/technik_o/technik_o.h b/keyboards/boardsource/technik_o/technik_o.h new file mode 100644 index 000000000000..e2af9f834ab5 --- /dev/null +++ b/keyboards/boardsource/technik_o/technik_o.h @@ -0,0 +1,31 @@ +/* Copyright 2020 Boardsource + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" +#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 \ + ) { \ + {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} \ + } + diff --git a/keyboards/boardsource/technik_s/config.h b/keyboards/boardsource/technik_s/config.h new file mode 100644 index 000000000000..4f665330a3c7 --- /dev/null +++ b/keyboards/boardsource/technik_s/config.h @@ -0,0 +1,169 @@ +/* +Copyright 2020 Boardsource + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4273 +#define PRODUCT_ID 0x0083 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Boardsource +#define PRODUCT Technik-S + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + +/* + * 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} +#define MATRIX_COL_PINS {B5, B6, B7, F5, C7, D0, D1, D2, D3, D4, D5, D6} +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +#define BACKLIGHT_BREATHING +#define RGBLIGHT_ANIMATIONS +#define RGB_DI_PIN C6 +#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120 +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH +#ifdef RGBLIGHT_ENABLE +# define RGBLED_NUM 10 // Number of LEDs +#endif + +#define DRIVER_LED_TOTAL 55 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/boardsource/technik_s/info.json b/keyboards/boardsource/technik_s/info.json new file mode 100644 index 000000000000..938501b613cf --- /dev/null +++ b/keyboards/boardsource/technik_s/info.json @@ -0,0 +1,56 @@ +{ + "keyboard_name": "Technik-S", + "url": "", + "maintainer": "Boardsource", + "layouts": { + "LAYOUT": { + "layout": [ + { "label": "1", "x": 0, "y": 0 }, + { "label": "2", "x": 1, "y": 0 }, + { "label": "3", "x": 2, "y": 0 }, + { "label": "4", "x": 3, "y": 0 }, + { "label": "5", "x": 4, "y": 0 }, + { "label": "6", "x": 5, "y": 0 }, + { "label": "7", "x": 6, "y": 0 }, + { "label": "8", "x": 7, "y": 0 }, + { "label": "9", "x": 8, "y": 0 }, + { "label": "10", "x": 9, "y": 0 }, + { "label": "11", "x": 10, "y": 0 }, + { "label": "12", "x": 11, "y": 0 }, + { "label": "13", "x": 0, "y": 1, "w": 1.5 }, + { "label": "14", "x": 1.5, "y": 1 }, + { "label": "15", "x": 2.5, "y": 1 }, + { "label": "16", "x": 3.5, "y": 1 }, + { "label": "17", "x": 4.5, "y": 1 }, + { "label": "18", "x": 5.5, "y": 1 }, + { "label": "19", "x": 6.5, "y": 1 }, + { "label": "20", "x": 7.5, "y": 1 }, + { "label": "21", "x": 8.5, "y": 1 }, + { "label": "22", "x": 9.5, "y": 1 }, + { "label": "23", "x": 10.5, "y": 1, "w": 1.5 }, + { "label": "24", "x": 0, "y": 2 }, + { "label": "25", "x": 1, "y": 2 }, + { "label": "26", "x": 2, "y": 2 }, + { "label": "27", "x": 3, "y": 2 }, + { "label": "28", "x": 4, "y": 2 }, + { "label": "29", "x": 5, "y": 2 }, + { "label": "30", "x": 6, "y": 2 }, + { "label": "31", "x": 7, "y": 2 }, + { "label": "32", "x": 8, "y": 2 }, + { "label": "33", "x": 9, "y": 2 }, + { "label": "34", "x": 10, "y": 2 }, + { "label": "35", "x": 11, "y": 2 }, + { "label": "36", "x": 0, "y": 3 }, + { "label": "37", "x": 1, "y": 3 }, + { "label": "38", "x": 2, "y": 3 }, + { "label": "39", "x": 3, "y": 3, "w": 1.5 }, + { "label": "40", "x": 4.5, "y": 3, "w": 1.5 }, + { "label": "41", "x": 6, "y": 3, "w": 1.5 }, + { "label": "42", "x": 7.5, "y": 3, "w": 1.5 }, + { "label": "43", "x": 9, "y": 3 }, + { "label": "44", "x": 10, "y": 3 }, + { "label": "45", "x": 11, "y": 3 } + ] + } + } +} diff --git a/keyboards/boardsource/technik_s/keymaps/default/keymap.c b/keyboards/boardsource/technik_s/keymaps/default/keymap.c new file mode 100644 index 000000000000..89dfaa4ace8c --- /dev/null +++ b/keyboards/boardsource/technik_s/keymaps/default/keymap.c @@ -0,0 +1,53 @@ +/* Copyright 2020 Boardsource + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layers { + _MAIN, + _RAISE, + _LOWER, +}; + +// Readability keycodes +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_MAIN] = LAYOUT( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, + KC_LSHIFT,KC_LSHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_UP, KC_ENT , + RGB_TOG, KC_LCTL, KC_LALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_RIGHT + ), + + [_RAISE] = LAYOUT( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, + RGB_MOD, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______, + RESET, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD + ), + + [_LOWER] = LAYOUT( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD + ) + +}; + diff --git a/keyboards/boardsource/technik_s/keymaps/default/readme.md b/keyboards/boardsource/technik_s/keymaps/default/readme.md new file mode 100644 index 000000000000..0e6753504bf0 --- /dev/null +++ b/keyboards/boardsource/technik_s/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for Technik-S diff --git a/keyboards/boardsource/technik_s/keymaps/via/keymap.c b/keyboards/boardsource/technik_s/keymaps/via/keymap.c new file mode 100644 index 000000000000..89dfaa4ace8c --- /dev/null +++ b/keyboards/boardsource/technik_s/keymaps/via/keymap.c @@ -0,0 +1,53 @@ +/* Copyright 2020 Boardsource + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layers { + _MAIN, + _RAISE, + _LOWER, +}; + +// Readability keycodes +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_MAIN] = LAYOUT( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, + KC_LSHIFT,KC_LSHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_UP, KC_ENT , + RGB_TOG, KC_LCTL, KC_LALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_RIGHT + ), + + [_RAISE] = LAYOUT( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, + RGB_MOD, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______, + RESET, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD + ), + + [_LOWER] = LAYOUT( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD + ) + +}; + diff --git a/keyboards/boardsource/technik_s/keymaps/via/readme.md b/keyboards/boardsource/technik_s/keymaps/via/readme.md new file mode 100644 index 000000000000..54e975a5aa79 --- /dev/null +++ b/keyboards/boardsource/technik_s/keymaps/via/readme.md @@ -0,0 +1 @@ +# The via keymap for Technik-S diff --git a/keyboards/xd60/keymaps/via/rules.mk b/keyboards/boardsource/technik_s/keymaps/via/rules.mk similarity index 100% rename from keyboards/xd60/keymaps/via/rules.mk rename to keyboards/boardsource/technik_s/keymaps/via/rules.mk diff --git a/keyboards/boardsource/technik_s/readme.md b/keyboards/boardsource/technik_s/readme.md new file mode 100644 index 000000000000..9bc60d4018a0 --- /dev/null +++ b/keyboards/boardsource/technik_s/readme.md @@ -0,0 +1,22 @@ +# Technik-S + +![Technik-S](https://i.imgur.com/0QLgu5V.jpeg) + +The technik-s is a 40% staggard keyboard that is designed to fit in the same case as the technik-o a 4x12 ortho + +* Keyboard Maintainer: [Boardsource](https://github.com/boardsource) +* Hardware Supported: V1 pcb +* Hardware Availability: [boardsource](https://boardsource.xyz/store/5ffb9b01edd0447f8023fdb2) + +Make example for this keyboard (after setting up your build environment): + + make boardsource/technik_s:default + +Flashing example for this keyboard: + + make boardsource/technik_s:default:flash + +Reset keyboard by pushing reset button on back of pcb through access hole. Or hold down top left key while you plug in the usb cable. +Then run this command in your local qmk repo, or flash using qmk toolbox. + +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/boardsource/technik_s/rules.mk b/keyboards/boardsource/technik_s/rules.mk new file mode 100644 index 000000000000..72c2df7dfb65 --- /dev/null +++ b/keyboards/boardsource/technik_s/rules.mk @@ -0,0 +1,22 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = WS2812 +LTO_ENABLE = yes diff --git a/keyboards/boardsource/technik_s/technik_s.c b/keyboards/boardsource/technik_s/technik_s.c new file mode 100644 index 000000000000..bb7245c73d5d --- /dev/null +++ b/keyboards/boardsource/technik_s/technik_s.c @@ -0,0 +1,38 @@ +/* Copyright 2020 Boardsource + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "technik_s.h" +#ifdef RGB_MATRIX_ENABLE +led_config_t g_led_config = { { + {10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21}, + {22, NO_LED, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}, + {33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44}, + {45, 46, 47, 48, NO_LED, 49, 50, NO_LED, 51, 52, 53, 54} +}, { + {220, 17}, {172, 17}, {112, 17}, { 50, 17}, { 4, 17}, { 4, 56}, { 50, 56}, {112, 56}, {172, 56}, {220, 56}, + { 0, 0}, { 20, 0}, { 40, 0}, { 61, 0}, { 81, 0}, {101, 0}, {122, 0}, {142, 0}, {162, 0}, {183, 0}, {203, 0}, {224, 0}, + { 10, 21}, { 30, 21}, { 51, 21}, { 71, 21}, { 91, 21}, {112, 21}, {132, 21}, {152, 21}, {173, 21}, {193, 21}, {214, 21}, + { 0, 42}, { 20, 42}, { 40, 42}, { 61, 42}, { 81, 42}, {101, 42}, {122, 42}, {142, 42}, {162, 42}, {183, 42}, {203, 42}, {224, 42}, + { 0, 64}, { 20, 64}, { 40, 64}, { 68, 64}, { 97, 64}, {126, 64}, {154, 64}, {183, 64}, {203, 64}, {224, 64} +}, { + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 1, 1, 1, 1, 4, 4, 1, 1, 1, 1 +} }; +#endif + diff --git a/keyboards/boardsource/technik_s/technik_s.h b/keyboards/boardsource/technik_s/technik_s.h new file mode 100644 index 000000000000..97ee9a7f5f94 --- /dev/null +++ b/keyboards/boardsource/technik_s/technik_s.h @@ -0,0 +1,31 @@ +/* Copyright 2020 Boardsource + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" +#define LAYOUT( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, \ + K12, 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 \ + ) { \ + {K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11}, \ + {K12, KC_NO, 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,KC_NO,K40, K41,KC_NO,K42, K43, K44, K45} \ + } + diff --git a/keyboards/boardsource/the_mark/config.h b/keyboards/boardsource/the_mark/config.h index 5888452ce4ab..cbfe4cd51096 100644 --- a/keyboards/boardsource/the_mark/config.h +++ b/keyboards/boardsource/the_mark/config.h @@ -41,8 +41,8 @@ along with this program. If not, see . * */ -#define MATRIX_ROW_PINS {B0, B1, B2, B3, B4,} -#define MATRIX_COL_PINS { B5, B6, B7, F5, C7, D0, D1, D2, D3, D4, D5, D6, D7,F0, F1, F4} +#define MATRIX_ROW_PINS {B0, B1, B2, B3, B4} +#define MATRIX_COL_PINS {B5, B6, B7, F5, C7, D0, D1, D2, D3, D4, D5, D6, D7,F0, F1, F4} #define UNUSED_PINS /* COL2ROW, ROW2COL */ @@ -56,11 +56,9 @@ along with this program. If not, see . /* RGB matrix support */ #ifdef RGB_MATRIX_ENABLE -#define DRIVER_LED_TOTAL 24 // Number of LEDs -#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 -# ifndef RGB_DISABLE_WHEN_USB_SUSPENDED -# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended -# endif +# define DRIVER_LED_TOTAL 24 // Number of LEDs +# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended #endif /* diff --git a/keyboards/boardsource/the_mark/info.json b/keyboards/boardsource/the_mark/info.json index 5a9cdb6be0c9..07e3a34e5496 100644 --- a/keyboards/boardsource/the_mark/info.json +++ b/keyboards/boardsource/the_mark/info.json @@ -2,8 +2,6 @@ "keyboard_name": "The Mark: 65", "url": "", "maintainer": "Boardsource", - "width": 16, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/boardsource/the_mark/rules.mk b/keyboards/boardsource/the_mark/rules.mk index 8fb8f42bc153..ede8b321d54c 100644 --- a/keyboards/boardsource/the_mark/rules.mk +++ b/keyboards/boardsource/the_mark/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 RGB_MATRIX_ENABLE = no # Enable keyboard RGB matrix (do not use together with RGBLIGHT_ENABLE) RGB_MATRIX_DRIVER = WS2812 # RGB matrix driver support diff --git a/keyboards/boardwalk/info.json b/keyboards/boardwalk/info.json index dffcba6c2741..63630cae8aff 100644 --- a/keyboards/boardwalk/info.json +++ b/keyboards/boardwalk/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Boardwalk", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_ortho_5x14": { "layout": [ diff --git a/keyboards/boardwalk/keymaps/mcallaster/keymap.c b/keyboards/boardwalk/keymaps/mcallaster/keymap.c index 9ec6f926711b..ac1df1b0337b 100644 --- a/keyboards/boardwalk/keymaps/mcallaster/keymap.c +++ b/keyboards/boardwalk/keymaps/mcallaster/keymap.c @@ -49,6 +49,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _FN); } diff --git a/keyboards/boardwalk/keymaps/niclake/keymap.c b/keyboards/boardwalk/keymaps/niclake/keymap.c index 2188660d019a..b6a986c0d02d 100644 --- a/keyboards/boardwalk/keymaps/niclake/keymap.c +++ b/keyboards/boardwalk/keymaps/niclake/keymap.c @@ -37,7 +37,7 @@ enum custom_keycodes { #define FN MO(_FN) #define NUM TT(_NUM) #define ADJ MO(_ADJ) -#define MACWIN AG_TOGG +#define MACWIN MAGIC_TOGGLE_ALT_GUI #define RGB_ON RGB_MODE_PLAIN const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { @@ -128,7 +128,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* ADJUST + RGB Control * .-----------------------------------------------------------------------------------------------------------------------------. - * | | Static | Breath | Rainbw | Swirl | Gradnt | Test | | | | | | | | + * | | Static | Breath | Rainbw | Swirl | Gradnt | Twnkle | Test | | | | | | | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| * | | On/Off | ModeUp | Hue Up | Sat Up | Val Up | | | | | | | RESET | | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------| @@ -140,11 +140,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * '-----------------------------------------------------------------------------------------------------------' */ [_ADJ] = LAYOUT_ortho_hhkb( - _______, RGB_ON, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_G, RGB_M_T, _______, _______, _______, _______, _______, _______, _______, - _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, RESET, _______, - _______, MACWIN, _______, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, - _______, COLEMAK, QWERTY, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + XXXXXXX, RGB_ON, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_G, RGB_M_TW, RGB_M_T, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, + XXXXXXX, MACWIN, XXXXXXX, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, COLEMAK, QWERTY, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX ) - }; diff --git a/keyboards/boardwalk/keymaps/niclake/rules.mk b/keyboards/boardwalk/keymaps/niclake/rules.mk index 000a2e1215db..31d6053e03d9 100644 --- a/keyboards/boardwalk/keymaps/niclake/rules.mk +++ b/keyboards/boardwalk/keymaps/niclake/rules.mk @@ -1,3 +1,3 @@ COMMAND_ENABLE = no RGBLIGHT_ENABLE = yes -BOOTMAGIC_ENABLE = full +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite diff --git a/keyboards/boardwalk/rules.mk b/keyboards/boardwalk/rules.mk index 88cce1631392..21b2094732c3 100644 --- a/keyboards/boardwalk/rules.mk +++ b/keyboards/boardwalk/rules.mk @@ -2,31 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # QMK Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 = yes # 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 -MIDI_ENABLE = no # MIDI support -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output UNICODE_ENABLE = yes # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend LAYOUTS = ortho_5x14 diff --git a/keyboards/bobpad/bobpad.c b/keyboards/bobpad/bobpad.c new file mode 100644 index 000000000000..59507d7d8c04 --- /dev/null +++ b/keyboards/bobpad/bobpad.c @@ -0,0 +1,45 @@ +/* Copyright 2021 Ananya Kirti + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "bobpad.h" + +bool led_update_kb(led_t led_state) { + if (!led_update_user(led_state)) { return false; } + + writePin(LED_CAPS_LOCK_PIN, led_state.caps_lock); + return true; +}; + +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + + if(IS_LAYER_ON(1)) { // on Raise layer + if (clockwise) { + tap_code(KC_A); + } else { + tap_code(KC_B); + } + } + // default layer + else { + if (clockwise) { + tap_code(KC_C); + } else { + tap_code(KC_D); + } + } + return true; +} \ No newline at end of file diff --git a/keyboards/bobpad/bobpad.h b/keyboards/bobpad/bobpad.h new file mode 100644 index 000000000000..da9c0fa02591 --- /dev/null +++ b/keyboards/bobpad/bobpad.h @@ -0,0 +1,27 @@ +/* Copyright 2021 Ananya Kirti + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_ortho_2x3( \ + K00, K01, K02, \ + K10, K11, K12 \ +) { \ + { K00, K01, K02 }, \ + { K10, K11, K12 }, \ +} diff --git a/keyboards/bobpad/config.h b/keyboards/bobpad/config.h new file mode 100644 index 000000000000..c744a455e3af --- /dev/null +++ b/keyboards/bobpad/config.h @@ -0,0 +1,63 @@ +/* Copyright 2021 Ananya Kirti + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x416B +#define PRODUCT_ID 0x0002 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Desiboards +#define PRODUCT bobpad + +/* key matrix size */ +#define MATRIX_ROWS 2 +#define MATRIX_COLS 3 + +/* + * 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 { F7, B1 } +#define MATRIX_COL_PINS { F6, F5, F4 } + +#define DIODE_DIRECTION COL2ROW + + + + + +// D4 D0 +// C6 E6 D7 + +#define LED_NUM_LOCK_PIN D4 +#define LED_CAPS_LOCK_PIN D0 +#define LED_SCROLL_LOCK_PIN C6 +#define LED_COMPOSE_PIN E6 +#define LED_KANA_PIN D7 + + + +#define ENCODERS_PAD_A { B3 } +#define ENCODERS_PAD_B { B2 } \ No newline at end of file diff --git a/keyboards/bobpad/info.json b/keyboards/bobpad/info.json new file mode 100644 index 000000000000..53ac20e9dc4f --- /dev/null +++ b/keyboards/bobpad/info.json @@ -0,0 +1,17 @@ +{ + "keyboard_name": "bobPad", + "url": "", + "maintainer": "Ananya Kirti", + "layouts": { + "LAYOUT_ortho_2x3": { + "layout": [ + {"label":"K00 (B0,B2)", "x":0, "y":0}, + {"label":"K01 (B0,B3)", "x":1, "y":0}, + {"label":"K02 (B0,B4)", "x":2, "y":0}, + {"label":"K10 (B1,B2)", "x":0, "y":1}, + {"label":"K11 (B1,B3)", "x":1, "y":1}, + {"label":"K12 (B1,B4)", "x":2, "y":1} + ] + } + } +} diff --git a/keyboards/bobpad/keymaps/default/keymap.c b/keyboards/bobpad/keymaps/default/keymap.c new file mode 100644 index 000000000000..a6e7e190da10 --- /dev/null +++ b/keyboards/bobpad/keymaps/default/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2021 Ananya Kirti + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ortho_2x3( + KC_CAPSLOCK, MO(1), KC_PGUP, + KC_DEL, KC_END, KC_PGDN + ), + [1] = LAYOUT_ortho_2x3( + KC_CAPSLOCK, MO(1), KC_PGUP, + KC_DEL, KC_END, KC_PGDN + ), + +}; + +layer_state_t layer_state_set_user(layer_state_t state) { + writePin(D0, IS_LAYER_ON_STATE(state, 1)); + + return state; +} diff --git a/keyboards/bobpad/keymaps/via/keymap.c b/keyboards/bobpad/keymaps/via/keymap.c new file mode 100644 index 000000000000..e4fb137c4137 --- /dev/null +++ b/keyboards/bobpad/keymaps/via/keymap.c @@ -0,0 +1,106 @@ +/* Copyright 2021 Ananya Kirti + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + +#include QMK_KEYBOARD_H + + +bool is_alt_tab_active = false; +uint16_t alt_tab_timer = 0; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ortho_2x3( + KC_MEDIA_STOP, KC_MEDIA_PLAY_PAUSE, KC__MUTE, + KC_MEDIA_REWIND, KC_MEDIA_FAST_FORWARD, KC_PGDN + ), + [1] = LAYOUT_ortho_2x3( + _______, _______, _______, + _______, _______, _______ + ), + [2] = LAYOUT_ortho_2x3( + _______, _______, _______, + _______, _______, _______ + ), + [3] = LAYOUT_ortho_2x3( + _______, _______, _______, + _______, _______, _______ + ), +}; + + + +// D4 D0 +// C6 E6 D7 + +void matrix_scan_user(void) { + writePin(C6, layer_state_is(1)); + writePin(E6, layer_state_is(2)); + writePin(D7, layer_state_is(3)); + writePin(D4, layer_state_is(4)); + writePin(D0, layer_state_is(5)); + if (is_alt_tab_active) { + if (timer_elapsed(alt_tab_timer) > 1000) { + unregister_code(KC_LWIN); + is_alt_tab_active = false; + } + } +} + +bool led_update_user(led_t led_state) { + return false; +}; + + + +bool encoder_update_user(uint8_t index, bool clockwise) { + if(IS_LAYER_ON(1)) { // on 1st layer + if (clockwise) { + if (!is_alt_tab_active) { + is_alt_tab_active = true; + register_code(KC_LWIN); + } + alt_tab_timer = timer_read(); + tap_code16(KC_TAB); + } else { + alt_tab_timer = timer_read(); + tap_code16(S(KC_TAB)); + } + } + // 2nd layer + else if(IS_LAYER_ON(2)) { + if (clockwise) { + tap_code(KC_DOWN); + } else { + tap_code(KC_UP); + } + } + else if(IS_LAYER_ON(3)) { + if (clockwise) { + tap_code(KC_BRIU); + } else { + tap_code(KC_BRID); + } + } + // default layer + else if(IS_LAYER_ON(0)) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } + return false; +} diff --git a/keyboards/xd68/keymaps/via/rules.mk b/keyboards/bobpad/keymaps/via/rules.mk similarity index 100% rename from keyboards/xd68/keymaps/via/rules.mk rename to keyboards/bobpad/keymaps/via/rules.mk diff --git a/keyboards/bobpad/readme.md b/keyboards/bobpad/readme.md new file mode 100644 index 000000000000..776ef58e4705 --- /dev/null +++ b/keyboards/bobpad/readme.md @@ -0,0 +1,25 @@ +# bobpad + +![bobpad](https://i.imgur.com/93zguh1h.jpg) + +A bentopad based macropad with incline + +* Keyboard Maintainer: [Ananya Kirti](https://github.com/AnanyaKirti) +* Hardware Supported: Custom 3D printed Case +* Hardware Availability: Contact bob at IMKC Discord + +Make example for this keyboard (after setting up your build environment): + + make bobpad:default + +Flashing example for this keyboard: + + make bobpad:default:flash + +## Bootloader + +Enter the bootloader in 3 ways: +* **Physical reset button**: Briefly short the pad connected to RESET and GND on the back +* **Keycode in layout**: Press the key mapped to `RESET`, this is the recommened method + +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/bobpad/rules.mk b/keyboards/bobpad/rules.mk new file mode 100644 index 000000000000..1b81eeea34f0 --- /dev/null +++ b/keyboards/bobpad/rules.mk @@ -0,0 +1,23 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +ENCODER_ENABLE = yes + +LAYOUTS = ortho_2x3 diff --git a/keyboards/bop/info.json b/keyboards/bop/info.json index f638d84eb6de..398e9c32e9da 100644 --- a/keyboards/bop/info.json +++ b/keyboards/bop/info.json @@ -2,8 +2,6 @@ "keyboard_name": "bop", "url": "https://github.com/blewis308/BOP-Keyboard", "maintainer": "Fruit", - "width": 20.0, - "height": 6.0, "layouts": { "LAYOUT": { "layout": [ @@ -135,4 +133,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/bop/rules.mk b/keyboards/bop/rules.mk index 2ddb011e1a53..e3fd68773d21 100644 --- a/keyboards/bop/rules.mk +++ b/keyboards/bop/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = halfkay # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output SWAP_HANDS_ENABLE = no diff --git a/keyboards/boston/config.h b/keyboards/boston/config.h index 7fa5d0ef5dc7..ff9c253ded5c 100644 --- a/keyboards/boston/config.h +++ b/keyboards/boston/config.h @@ -17,8 +17,8 @@ #pragma once /* USB Device descriptor parameter */ -#define VENDOR_ID 0xAC11 -#define PRODUCT_ID 0x4175 +#define VENDOR_ID 0xAC12 +#define PRODUCT_ID 0x4176 #define DEVICE_VER 0x0001 #define MANUFACTURER Pylon #define PRODUCT Boston diff --git a/keyboards/boston/info.json b/keyboards/boston/info.json index f6b745f89dda..82e4915176be 100644 --- a/keyboards/boston/info.json +++ b/keyboards/boston/info.json @@ -2,8 +2,6 @@ "keyboard_name": "boston", "url": "https://github.com/bluepylons/Boston", "maintainer": "bluepylons", - "width": 20.5, - "height": 7.75, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/boston/rules.mk b/keyboards/boston/rules.mk index 24e1dbe3c5bc..cef3f45d10b7 100644 --- a/keyboards/boston/rules.mk +++ b/keyboards/boston/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration -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 -# 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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes @@ -26,4 +23,4 @@ ENCODER_ENABLE = yes OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE # RGB setting -WS2812_DRIVER = bitbang \ No newline at end of file +WS2812_DRIVER = bitbang diff --git a/keyboards/boston_meetup/2019/2019.c b/keyboards/boston_meetup/2019/2019.c index fd283b087ab7..e558048f6a50 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 . */ #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; +#ifdef OLED_ENABLE +oled_rotation_t oled_init_kb(oled_rotation_t rotation) { return OLED_ROTATION_180; } -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; - -__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 - - 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); +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } + 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); + } + return false; } - -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 d9fd93da6e28..80896242e074 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 * @@ -113,26 +106,6 @@ //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ - -#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 2 /* Haptic Driver initialization settings * Feedback Control Settings */ diff --git a/keyboards/boston_meetup/2019/info.json b/keyboards/boston_meetup/2019/info.json index 15ab72935c2b..53beef5a8454 100644 --- a/keyboards/boston_meetup/2019/info.json +++ b/keyboards/boston_meetup/2019/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Boston Meetup 2019", "url": "", "maintainer": "qmk", - "width": 4, - "height": 4, "layouts": { "LAYOUT": { - "key_count": 13, "layout": [{"label":"K00", "x":0, "y":0}, {"label":"K10", "x":0, "y":1}, {"label":"K11", "x":1, "y":1}, {"label":"K12", "x":2, "y":1}, {"label":"K13", "x":3, "y":1}, {"label":"K20", "x":0, "y":2}, {"label":"K21", "x":1, "y":2}, {"label":"K22", "x":2, "y":2}, {"label":"K23", "x":3, "y":2}, {"label":"K30", "x":0, "y":3}, {"label":"K31", "x":1, "y":3}, {"label":"K32", "x":2, "y":3}, {"label":"K33", "x":3, "y":3}] } } } diff --git a/keyboards/boston_meetup/2019/keymaps/default/keymap.c b/keyboards/boston_meetup/2019/keymaps/default/keymap.c index 8e729ca714c1..666624b18c37 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 @@ -156,10 +145,3 @@ bool music_mask_user(uint16_t keycode) { return true; } } - -void matrix_init_user(void) { -} - - -void matrix_scan_user(void) { -} diff --git a/keyboards/boston_meetup/2019/keymaps/readme.md b/keyboards/boston_meetup/2019/keymaps/readme.md deleted file mode 100644 index c10a49f7d03e..000000000000 --- 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 aa1920ae5081..e329c032c1d2 100644 --- a/keyboards/boston_meetup/2019/rules.mk +++ b/keyboards/boston_meetup/2019/rules.mk @@ -8,19 +8,19 @@ BOOTLOADER = stm32-dfu # Build Options # comment out to disable the options. # -BACKLIGHT_ENABLE = no -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend -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 +# 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/botanicalkeyboards/fm2u/info.json b/keyboards/botanicalkeyboards/fm2u/info.json index 1798e19435d5..5fceadb1fb1d 100644 --- a/keyboards/botanicalkeyboards/fm2u/info.json +++ b/keyboards/botanicalkeyboards/fm2u/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Botanical Keyboards FM2U", "url": "", "maintainer": "qmk", - "width": 1, - "height": 1, "layouts": { "LAYOUT_1u": { "layout": [ diff --git a/keyboards/botanicalkeyboards/fm2u/rules.mk b/keyboards/botanicalkeyboards/fm2u/rules.mk index be4309735628..3b4e81e52776 100644 --- a/keyboards/botanicalkeyboards/fm2u/rules.mk +++ b/keyboards/botanicalkeyboards/fm2u/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u2 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/box75/info.json b/keyboards/box75/info.json index 1fe97f296aa7..9fe35289cf94 100644 --- a/keyboards/box75/info.json +++ b/keyboards/box75/info.json @@ -2,8 +2,6 @@ "keyboard_name": "BOX75", "url": "", "maintainer": "Gondolindrim", - "width": 16.25, - "height": 6.375, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/box75/rules.mk b/keyboards/box75/rules.mk index f444528f1e88..bb9e5edc372d 100644 --- a/keyboards/box75/rules.mk +++ b/keyboards/box75/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = 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 ENCODER_ENABLE = no diff --git a/keyboards/bpiphany/frosty_flake/config.h b/keyboards/bpiphany/frosty_flake/config.h index 344db5f0d91e..1a337b111f05 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -40,7 +39,12 @@ along with this program. If not, see . /* * Keyboard Matrix Assignments + * + * MATRIX_ROW_PINS and MATRIX_COL_PINS aren't actually used and are included + * for data driven compatibility. */ +#define MATRIX_COL_PINS { B0, B3, B2, B1, B6, B4, B5, C7 } +#define MATRIX_ROW_PINS { NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN } #define UNUSED_PINS { C0, C1, C2, C3, C4, D2, D7 } /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ @@ -72,54 +76,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -137,5 +93,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -#endif diff --git a/keyboards/bpiphany/frosty_flake/frosty_flake.h b/keyboards/bpiphany/frosty_flake/frosty_flake.h index cc870c277e08..f4f69f1a3d56 100644 --- a/keyboards/bpiphany/frosty_flake/frosty_flake.h +++ b/keyboards/bpiphany/frosty_flake/frosty_flake.h @@ -111,12 +111,26 @@ KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, \ KN2, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, \ KA4, KP2, KC6, KK6, KC0, KM3, KD0, KA1, KO0, KK0, KL0 \ -) LAYOUT_tkl( \ - 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, \ - KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, KK4, KO7, KQ7, \ - KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, \ - KN2, KC_NO, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, \ - KA4, KP2, KC6, KK6, KC0, KM3, KD0, KA1, KO0, KK0, KL0 \ -) +) \ +{ \ +/* 0 1 2 3 4 5 6 7 */ \ +/* A */ { KC_NO, KA1, KC_NO, KC_NO, KA4, KA5, KC_NO, KA7, }, \ +/* B */ { KB0, KB1, KB2, KB3, KB4, KC_NO, KB6, KB7, }, \ +/* C */ { KC0, KC_NO, KC_NO, KC_NO, KC_NO, KC5, KC6, KC7, }, \ +/* D */ { KD0, KD1, KD2, KD3, KD4, KD5, KC_NO, KD7, }, \ +/* E */ { KC_NO, KE1, KE2, KE3, KE4, KE5, KE6, KE7, }, \ +/* F */ { KF0, KF1, KF2, KF3, KF4, KF5, KF6, KF7, }, \ +/* G */ { KG0, KG1, KG2, KG3, KG4, KG5, KG6, KG7, }, \ +/* H */ { KC_NO, KH1, KH2, KH3, KH4, KH5, KH6, KH7, }, \ +/* I */ { KC_NO, KI1, KI2, KI3, KI4, KI5, KC_NO, KI7, }, \ +/* J */ { KC_NO, KJ1, KJ2, KJ3, KJ4, KJ5, KJ6, KJ7, }, \ +/* K */ { KK0, KC_NO, KC_NO, KC_NO, KK4, KC_NO, KK6, KC_NO, }, \ +/* L */ { KL0, KC_NO, KC_NO, KC_NO, KL4, KC_NO, KC_NO, KC_NO, }, \ +/* M */ { KC_NO, KC_NO, KC_NO, KM3, KC_NO, KC_NO, KC_NO, KC_NO, }, \ +/* N */ { KC_NO, KC_NO, KN2, KN3, KC_NO, KC_NO, KC_NO, KC_NO, }, \ +/* O */ { KO0, KC_NO, KC_NO, KC_NO, KO4, KC_NO, KO6, KO7, }, \ +/* P */ { KC_NO, KC_NO, KP2, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, }, \ +/* Q */ { KC_NO, KC_NO, KC_NO, KC_NO, KQ4, KC_NO, KC_NO, KQ7, }, \ +/* R */ { KR0, KC_NO, KR2, KR3, KR4, KR5, KR6, KR7, }, \ +} diff --git a/keyboards/bpiphany/frosty_flake/info.json b/keyboards/bpiphany/frosty_flake/info.json index 15fb23d737b1..9d5d6aace082 100644 --- a/keyboards/bpiphany/frosty_flake/info.json +++ b/keyboards/bpiphany/frosty_flake/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Frosty Flake", "url": "", "maintainer": "qmk", - "width": 22.5, - "height": 6.5, "layouts": { "LAYOUT": { "layout": [ @@ -298,4 +296,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/bpiphany/frosty_flake/keymaps/QFR_JM/rules.mk b/keyboards/bpiphany/frosty_flake/keymaps/QFR_JM/rules.mk index 1b0aead1d0f7..2c5d53c82114 100644 --- a/keyboards/bpiphany/frosty_flake/keymaps/QFR_JM/rules.mk +++ b/keyboards/bpiphany/frosty_flake/keymaps/QFR_JM/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = yes # Console for debug(+400) diff --git a/keyboards/bpiphany/frosty_flake/keymaps/default/rules.mk b/keyboards/bpiphany/frosty_flake/keymaps/default/rules.mk index a5a411e8f234..6df730e0c095 100644 --- a/keyboards/bpiphany/frosty_flake/keymaps/default/rules.mk +++ b/keyboards/bpiphany/frosty_flake/keymaps/default/rules.mk @@ -2,16 +2,12 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = 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 -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend diff --git a/keyboards/bpiphany/frosty_flake/keymaps/nikchi/rules.mk b/keyboards/bpiphany/frosty_flake/keymaps/nikchi/rules.mk index de0f30e48e7b..c2682fb1b4a2 100644 --- a/keyboards/bpiphany/frosty_flake/keymaps/nikchi/rules.mk +++ b/keyboards/bpiphany/frosty_flake/keymaps/nikchi/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/bpiphany/frosty_flake/keymaps/tkl/rules.mk b/keyboards/bpiphany/frosty_flake/keymaps/tkl/rules.mk index c76a5a80e4b3..eca7c6c70f16 100644 --- a/keyboards/bpiphany/frosty_flake/keymaps/tkl/rules.mk +++ b/keyboards/bpiphany/frosty_flake/keymaps/tkl/rules.mk @@ -2,16 +2,13 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = yes # Console for debug(+400) COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode +AUDIO_ENABLE = no # Audio output BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend diff --git a/keyboards/bpiphany/frosty_flake/rules.mk b/keyboards/bpiphany/frosty_flake/rules.mk index 8756a89b6ef3..7801c8dff7b1 100644 --- a/keyboards/bpiphany/frosty_flake/rules.mk +++ b/keyboards/bpiphany/frosty_flake/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u2 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output CUSTOM_MATRIX = lite SRC += matrix.c diff --git a/keyboards/bpiphany/ghost_squid/config.h b/keyboards/bpiphany/ghost_squid/config.h new file mode 100644 index 000000000000..bb8535b17769 --- /dev/null +++ b/keyboards/bpiphany/ghost_squid/config.h @@ -0,0 +1,42 @@ +/* +Copyright 2016 Daniel Svensson + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6050 +#define DEVICE_VER 0x0104 +#define MANUFACTURER Bathroom Epiphanies +#define PRODUCT ghost_squid + +/* key matrix size */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 18 + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +#define LED_PIN_ON_STATE 0 +#define LED_NUM_LOCK_PIN C5 +#define LED_CAPS_LOCK_PIN C6 +#define LED_SCROLL_LOCK_PIN B7 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 diff --git a/keyboards/bpiphany/ghost_squid/ghost_squid.c b/keyboards/bpiphany/ghost_squid/ghost_squid.c new file mode 100644 index 000000000000..3ecac66f7a7c --- /dev/null +++ b/keyboards/bpiphany/ghost_squid/ghost_squid.c @@ -0,0 +1,26 @@ +/* +Copyright 2016 Daniel Svensson + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "ghost_squid.h" + +void keyboard_pre_init_kb(void) { + setPinOutput(D0); + writePinLow(D0); + fn_led_off(); + + keyboard_pre_init_user(); +} diff --git a/keyboards/bpiphany/ghost_squid/ghost_squid.h b/keyboards/bpiphany/ghost_squid/ghost_squid.h new file mode 100644 index 000000000000..839c9fc123f9 --- /dev/null +++ b/keyboards/bpiphany/ghost_squid/ghost_squid.h @@ -0,0 +1,44 @@ +/* +Copyright 2016 Daniel Svensson + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +#define fn_led_on() writePinLow(D0) +#define fn_led_off() writePinHigh(D0) + +#define ___ KC_NO + +#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 \ + ) { /* 00-A 01-B 02-C 03-D 04-E 05-F 06-G 07-H 08-I 09-J 10-K 11-L 12-M 13-N 14-O 15-P 16-Q 17-R */ \ + /* 0 */ { ___ , KB0 , KC0 , KD0 , ___ , KF0 , KG0 , ___ , ___ , ___ , KK0 , KL0 , ___ , ___ , KO0 , ___ , KQ0 , KR0 }, \ + /* 1 */ { KA1 , KB1 , ___ , KD1 , KE1 , KF1 , KG1 , KH1 , KI1 , KJ1 , KK1 , KL1 , ___ , ___ , ___ , ___ , KQ1 , ___ }, \ + /* 2 */ { ___ , KB2 , ___ , KD2 , KE2 , KF2 , KG2 , KH2 , KI2 , KJ2 , KK2 , KL2 , ___ , KN2 , ___ , KP2 , KQ2 , KR2 }, \ + /* 3 */ { ___ , KB3 , ___ , KD3 , KE3 , KF3 , KG3 , KH3 , KI3 , KJ3 , KK3 , KL3 , KM3 , KN3 , KO3 , ___ , KQ3 , KR3 }, \ + /* 4 */ { KA4 , KB4 , ___ , KD4 , KE4 , KF4 , KG4 , KH4 , KI4 , KJ4 , KK4 , KL4 , ___ , ___ , KO4 , ___ , KQ4 , KR4 }, \ + /* 5 */ { KA5 , ___ , KC5 , KD5 , KE5 , KF5 , KG5 , KH5 , KI5 , KJ5 , KK5 , KL5 , ___ , ___ , KO5 , ___ , KQ5 , KR5 }, \ + /* 6 */ { ___ , KB6 , KC6 , ___ , KE6 , KF6 , KG6 , KH6 , KI6 , KJ6 , KK6 , KL6 , ___ , ___ , KO6 , ___ , KQ6 , KR6 }, \ + /* 7 */ { KA7 , KB7 , KC7 , KD7 , KE7 , KF7 , KG7 , KH7 , KI7 , KJ7 , ___ , ___ , ___ , ___ , KO7 , ___ , KQ7 , KR7 } \ + } + diff --git a/keyboards/bpiphany/ghost_squid/keymaps/default/keymap.c b/keyboards/bpiphany/ghost_squid/keymaps/default/keymap.c new file mode 100644 index 000000000000..09523ebbb91b --- /dev/null +++ b/keyboards/bpiphany/ghost_squid/keymaps/default/keymap.c @@ -0,0 +1,77 @@ +/* +Copyright 2016 Daniel Svensson + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +/* Default qwerty layout +* ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ ┌───────────┐ +* │ESC│ │F1 │F2 │F3 │F4 │ │F5 │F6 │F7 │F8 │ │F9 │F10│F11│F12│ │PRT│SCR│PAU│ │Ghost Squid│ +* └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ └───────────┘ +* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐ +* │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ │INS│HOM│PgU│ │NUM│ / │ * │ - │ +* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤ +* │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │ │DEL│END│PgD│ │ 7 │ 8 │ 9 │ │ +* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ↲ │ └───┴───┴───┘ ├───┼───┼───┤ + │ +* │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ \ │ │ │ 7 │ 8 │ 9 │ │ +* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───┐ ├───┼───┼───┼───┤ +* │Shif│ # │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │ │ 1 │ 2 │ 3 │ │ +* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤ ↲ │ +* │Ctrl│GUI │Alt │ │ Alt│ GUI│Fn │Ctrl│ │ ← │ ↓ │ → │ │ 0 │ , │ │ +* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘ +*/ + +enum layer_names { + KM_QWERTY, + KM_MEDIA, + KM_GUI_LOCK +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Layer 0: Standard ISO layer */ + [KM_QWERTY] = LAYOUT( +KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,KC_PAUS, +KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, KC_INS, KC_HOME,KC_PGUP, KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS, +KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, +KC_CLCK, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, +KC_LSFT, KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, +KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI,MO(KM_MEDIA),KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT, KC_P0, KC_PDOT), + /* Layer 1: Function layer */ + [KM_MEDIA] = LAYOUT( +_______,_______,_______,_______,_______, KC_MEDIA_PLAY_PAUSE, KC_MEDIA_STOP, KC_MEDIA_PREV_TRACK, KC_MEDIA_NEXT_TRACK, TG(KM_GUI_LOCK),KC_MUTE, KC_VOLD, KC_VOLU,_______,_______, RESET, +_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, +_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, +_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, +_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______, +_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______), + [KM_GUI_LOCK] = LAYOUT( +_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, +_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, +_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, +_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, +_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, +_______,KC_NO,_______,_______,_______,KC_NO,_______,_______,_______,_______,_______,_______,_______) +}; + + +layer_state_t layer_state_set_user(layer_state_t state) { + if (IS_LAYER_ON_STATE(state, KM_GUI_LOCK)) { + fn_led_on(); + } else { + fn_led_off(); + } + return state; +} diff --git a/keyboards/bpiphany/ghost_squid/keymaps/default/readme.md b/keyboards/bpiphany/ghost_squid/keymaps/default/readme.md new file mode 100644 index 000000000000..3c27324d1c57 --- /dev/null +++ b/keyboards/bpiphany/ghost_squid/keymaps/default/readme.md @@ -0,0 +1 @@ +# Default layout desc TODO diff --git a/keyboards/bpiphany/ghost_squid/matrix.c b/keyboards/bpiphany/ghost_squid/matrix.c new file mode 100644 index 000000000000..b0ad6075554a --- /dev/null +++ b/keyboards/bpiphany/ghost_squid/matrix.c @@ -0,0 +1,97 @@ +/* + Copyright 2014 Ralf Schmitt + Copyright 2016 Daniel Svensson + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#include "matrix.h" +#include "quantum.h" + +matrix_row_t read_rows(void) { + return + (PINB & (1 << 1) ? 0 : ((matrix_row_t)1 << 0)) | + (PINC & (1 << 2) ? 0 : ((matrix_row_t)1 << 1)) | + (PINB & (1 << 6) ? 0 : ((matrix_row_t)1 << 2)) | + (PINB & (1 << 4) ? 0 : ((matrix_row_t)1 << 3)) | + (PINB & (1 << 3) ? 0 : ((matrix_row_t)1 << 4)) | + (PINB & (1 << 2) ? 0 : ((matrix_row_t)1 << 5)) | + (PINB & (1 << 0) ? 0 : ((matrix_row_t)1 << 6)) | + (PINB & (1 << 5) ? 0 : ((matrix_row_t)1 << 7)); +} + +void select_col(uint8_t col) { + switch (col) { + case 0: PORTD = (PORTD & ~0b01111110) | 0b01100010; break; + case 1: PORTD = (PORTD & ~0b01111110) | 0b01101000; break; + case 2: PORTD = (PORTD & ~0b01111110) | 0b01101100; break; + case 3: PORTD = (PORTD & ~0b01111110) | 0b01110000; break; + case 4: PORTD = (PORTD & ~0b01111110) | 0b01111000; break; + case 5: PORTD = (PORTD & ~0b01111110) | 0b01100000; break; + case 6: PORTD = (PORTD & ~0b01111110) | 0b01110100; break; + case 7: PORTD = (PORTD & ~0b01111110) | 0b01100100; break; + case 8: PORTD = (PORTD & ~0b01111110) | 0b01111100; break; + case 9: PORTD = (PORTD & ~0b01111110) | 0b01101010; break; + case 10: PORTD = (PORTD & ~0b01111110) | 0b00110110; break; + case 11: PORTD = (PORTD & ~0b01111110) | 0b00010110; break; + case 12: PORTD = (PORTD & ~0b01111110) | 0b01001110; break; + case 13: PORTD = (PORTD & ~0b01111110) | 0b00111110; break; + case 14: PORTD = (PORTD & ~0b01111110) | 0b00011110; break; + case 15: PORTD = (PORTD & ~0b01111110) | 0b01000110; break; + case 16: PORTD = (PORTD & ~0b01111110) | 0b00100110; break; + case 17: PORTD = (PORTD & ~0b01111110) | 0b00101110; break; + } +} + +void matrix_init_custom(void) { + /* Column output pins */ + setPinOutput(D1); + setPinOutput(D2); + setPinOutput(D3); + setPinOutput(D4); + setPinOutput(D5); + setPinOutput(D6); + + /* Row input pins */ + writePinHigh(B0); + writePinHigh(B1); + writePinHigh(B2); + writePinHigh(B3); + writePinHigh(B4); + writePinHigh(B5); + writePinHigh(B6); + writePinHigh(C2); +} + +bool matrix_scan_custom(matrix_row_t current_matrix[]) { + bool changed = false; + + for (uint8_t col = 0; col < MATRIX_COLS; col++) { + select_col(col); + matrix_io_delay(); + matrix_row_t rows = read_rows(); + + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + bool prev_bit = current_matrix[row] & ((matrix_row_t)1 << col); + bool curr_bit = rows & (1 << row); + + if (prev_bit != curr_bit) { + current_matrix[row] ^= (matrix_row_t)1 << col; + changed = true; + } + } + } + + return changed; +} diff --git a/keyboards/bpiphany/ghost_squid/readme.md b/keyboards/bpiphany/ghost_squid/readme.md new file mode 100644 index 000000000000..ab39e0f72526 --- /dev/null +++ b/keyboards/bpiphany/ghost_squid/readme.md @@ -0,0 +1,27 @@ +# Ghost Squid Controller + +This is the firmware for Rev. 20140518 of the Ghost Squid controller by [Bathroom Epiphanies](http://bathroomepiphanies.com/controllers/), a replacement controller for the [Cooler Master Quick Fire XT](https://www.coolermaster.com/catalog/peripheral/keyboards/quick-fire-xt/). + +The code was adapted from the [BathroomEpiphanies QMK Firmware](https://github.com/BathroomEpiphanies/epiphanies_qmk_keyboard/tree/master/keyboards/ghost_squid_20140518). + +* Keyboard Maintainer: QMK Community +* Hardware Supported: Ghost Squid +* Hardware Availability: [1upkeyboards](https://1upkeyboards.com/shop/controllers/qf-xt-ghost-squid-controller-2/) + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `RESET` if it is available + +Make example for this keyboard (after setting up your build environment): + +104 key default layout: + + make bpiphany/ghost_squid:default + +Flashing example for this keyboard: + + make bpiphany/ghost_squid:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/bpiphany/ghost_squid/rules.mk b/keyboards/bpiphany/ghost_squid/rules.mk new file mode 100644 index 000000000000..e6be43ba5895 --- /dev/null +++ b/keyboards/bpiphany/ghost_squid/rules.mk @@ -0,0 +1,21 @@ +# MCU name +MCU = atmega32u2 + +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +CUSTOM_MATRIX = lite +SRC += matrix.c diff --git a/keyboards/bpiphany/kitten_paw/config.h b/keyboards/bpiphany/kitten_paw/config.h index 5e1429c8d5b9..7dbf0276994b 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -91,54 +90,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -156,5 +107,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -#endif diff --git a/keyboards/bpiphany/kitten_paw/info.json b/keyboards/bpiphany/kitten_paw/info.json index 7d2574710a36..f9c517ca482c 100644 --- a/keyboards/bpiphany/kitten_paw/info.json +++ b/keyboards/bpiphany/kitten_paw/info.json @@ -2,16 +2,12 @@ "keyboard_name": "Kitten Paw", "url": "", "maintainer": "qmk", - "width": 22.5, - "height": 6.5, "layouts": { "LAYOUT": { - "key_count": 105, "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"@", "x":2, "y":1.5}, {"label":"#", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"Backspace", "x":13, "y":1.5, "w":2}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.25, "y":1.5}, {"label":"Num Lock", "x":18.5, "y":1.5}, {"label":"/", "x":19.5, "y":1.5}, {"label":"*", "x":20.5, "y":1.5}, {"label":"-", "x":21.5, "y":1.5}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":6.5, "y":2.5}, {"label":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"|", "x":13.5, "y":2.5, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"7", "x":18.5, "y":2.5}, {"label":"8", "x":19.5, "y":2.5}, {"label":"9", "x":20.5, "y":2.5}, {"label":"+", "x":21.5, "y":2.5, "h":2}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, {"label":"4", "x":18.5, "y":3.5}, {"label":"5", "x":19.5, "y":3.5}, {"label":"6", "x":20.5, "y":3.5}, {"label":"Shift", "x":0, "y":4.5, "w":1.25}, {"label":"KC_NUBS", "x":1.25, "y":4.5}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"N", "x":7.25, "y":4.5}, {"label":"M", "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":"Shift", "x":12.25, "y":4.5, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"1", "x":18.5, "y":4.5}, {"label":"2", "x":19.5, "y":4.5}, {"label":"3", "x":20.5, "y":4.5}, {"label":"Enter", "x":21.5, "y":4.5, "h":2}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, {"label":"Win", "x":1.25, "y":5.5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"label":"Alt", "x":10, "y":5.5, "w":1.25}, {"label":"Win", "x":11.25, "y":5.5, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.5, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}, {"label":"0", "x":18.5, "y":5.5, "w":2}, {"label":".", "x":20.5, "y":5.5}] }, "LAYOUT_fullsize_ansi": { - "key_count": 104, "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"@", "x":2, "y":1.5}, {"label":"#", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"Backspace", "x":13, "y":1.5, "w":2}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.25, "y":1.5}, {"label":"Num Lock", "x":18.5, "y":1.5}, {"label":"/", "x":19.5, "y":1.5}, {"label":"*", "x":20.5, "y":1.5}, {"label":"-", "x":21.5, "y":1.5}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":6.5, "y":2.5}, {"label":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"|", "x":13.5, "y":2.5, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"7", "x":18.5, "y":2.5}, {"label":"8", "x":19.5, "y":2.5}, {"label":"9", "x":20.5, "y":2.5}, {"label":"+", "x":21.5, "y":2.5, "h":2}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, {"label":"4", "x":18.5, "y":3.5}, {"label":"5", "x":19.5, "y":3.5}, {"label":"6", "x":20.5, "y":3.5}, {"label":"Shift", "x":0, "y":4.5, "w":2.25}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"N", "x":7.25, "y":4.5}, {"label":"M", "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":"Shift", "x":12.25, "y":4.5, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"1", "x":18.5, "y":4.5}, {"label":"2", "x":19.5, "y":4.5}, {"label":"3", "x":20.5, "y":4.5}, {"label":"Enter", "x":21.5, "y":4.5, "h":2}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, {"label":"Win", "x":1.25, "y":5.5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"label":"Alt", "x":10, "y":5.5, "w":1.25}, {"label":"Win", "x":11.25, "y":5.5, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.5, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}, {"label":"0", "x":18.5, "y":5.5, "w":2}, {"label":".", "x":20.5, "y":5.5}] } } diff --git a/keyboards/bpiphany/kitten_paw/keymaps/default/keymap.c b/keyboards/bpiphany/kitten_paw/keymaps/default/keymap.c index bd909c288cc7..8f229c8ba853 100644 --- a/keyboards/bpiphany/kitten_paw/keymaps/default/keymap.c +++ b/keyboards/bpiphany/kitten_paw/keymaps/default/keymap.c @@ -13,19 +13,3 @@ 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_RSFT, KC_UP, KC_P1, KC_P2, KC_P3,KC_PENT, \ KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_APP,KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT, KC_P0,KC_PDOT) }; - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/bpiphany/kitten_paw/keymaps/ickerwx/keymap.c b/keyboards/bpiphany/kitten_paw/keymaps/ickerwx/keymap.c index e2b56132bfbe..cc4d0bca636c 100644 --- a/keyboards/bpiphany/kitten_paw/keymaps/ickerwx/keymap.c +++ b/keyboards/bpiphany/kitten_paw/keymaps/ickerwx/keymap.c @@ -1,12 +1,6 @@ #include QMK_KEYBOARD_H #include "mousekey.h" -#undef C -#undef S -#define C(kc) LCTL(KC_##kc) -#define S(kc) LSFT(KC_##kc) -#define RA(kc) RALT(KC_##kc) -#define KC_SLCT KC_SELECT #define MEDAPP LT(MEDIA, KC_APP) uint8_t current_layer_global = 255; @@ -21,19 +15,16 @@ enum layers { MISC, }; -enum function_id { - LSHFT_PAREN, +enum custom_keycodes { + LSHFT_PAREN = SAFE_RANGE, RSHFT_PAREN, LCTRL_BRACKET, RCTRL_BRACKET, LALT_CURLY, RALT_CURLY, - CTRL_CLICK -}; - -enum macro_id { - GRV, - CFLEX + CTRL_CLICK, + M_GRV, + M_CFLEX }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { @@ -42,25 +33,25 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, KC_INS,KC_HOME,KC_PGUP, KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS, \ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_DEL, KC_END,KC_PGDN, KC_P7, KC_P8, KC_P9,KC_PPLS, \ TT(MOUSE1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, \ - F(8),KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH, F(9), KC_UP, KC_P1, KC_P2, KC_P3,KC_PENT, \ - F(1),KC_LGUI, F(3), LT(MISC, KC_SPC), F(4),TT(PROG1), MEDAPP, F(2), KC_LEFT,KC_DOWN,KC_RGHT, KC_P0,KC_PDOT), + LSHFT_PAREN,KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH, RSHFT_PAREN, KC_UP, KC_P1, KC_P2, KC_P3,KC_PENT, \ + LCTRL_BRACKET,KC_LGUI, LALT_CURLY, LT(MISC, KC_SPC), RALT_CURLY,TT(PROG1), MEDAPP, RCTRL_BRACKET, KC_LEFT,KC_DOWN,KC_RGHT, KC_P0,KC_PDOT), /* Layer 1: Programming Layer 1, emulating US l ayout */ [PROG1] = LAYOUT(\ KC_ESC,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______, \ - M(GRV),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,KC_SLSH, S(0),_______, _______,_______,_______, _______,_______,_______,_______, \ - _______,_______,_______,_______,_______,_______, KC_Z,_______,_______,_______,_______, RA(8), RA(9),RA(MINS), _______,_______,_______, _______,_______,_______,_______, \ - _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,S(COMM),S(BSLS), _______, _______,_______,_______, \ - MO(PROG2),_______, KC_Y,_______,_______,_______,_______,_______,_______,_______,_______, S(7), MO(PROG2), _______, _______,_______,_______,_______, \ + M_GRV,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,KC_SLSH,S(KC_0),_______, _______,_______,_______, _______,_______,_______,_______, \ + _______,_______,_______,_______,_______,_______, KC_Z,_______,_______,_______,_______,ALGR(KC_8),ALGR(KC_9),ALGR(KC_MINS), _______,_______,_______, _______,_______,_______,_______, \ + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,S(KC_COMM),S(KC_BSLS), _______, _______,_______,_______, \ + MO(PROG2),_______, KC_Y,_______,_______,_______,_______,_______,_______,_______,_______, S(KC_7), MO(PROG2), _______, _______,_______,_______,_______, \ _______,_______,_______, _______, _______,_______,_______,_______, _______,_______,_______, _______,_______), /* Layer 2: programming layer 2 all keys that are not FN keys are sent as LSFT+key on this layer */ [PROG2] = LAYOUT(\ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______, \ - RA(RBRC),_______, RA(Q),KC_BSLS,_______,_______,M(CFLEX), S(6),S(RBRC), S(8), S(9),S(SLSH),KC_RBRC,_______, _______,_______,_______, _______,_______,_______,_______, \ - _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, RA(7), RA(0),RA(NUBS), _______,_______,_______, _______,_______,_______,_______, \ - _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, S(DOT), S(2), _______, _______,_______,_______, \ - _______,S(NUBS),_______,_______,_______,_______,_______,_______,_______,KC_NUBS,S(NUBS),S(MINS), _______, _______, _______,_______,_______,_______, \ + ALGR(KC_RBRC),_______, ALGR(KC_Q),KC_BSLS,_______,_______,M_CFLEX, S(KC_6),S(KC_RBRC), S(KC_8),S(KC_9),S(KC_SLSH),KC_RBRC,_______, _______,_______,_______, _______,_______,_______,_______, \ + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, ALGR(KC_7),ALGR(KC_0),ALGR(KC_NUBS), _______,_______,_______, _______,_______,_______,_______, \ + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, S(KC_DOT), S(KC_2), _______, _______,_______,_______, \ + _______,S(KC_NUBS),_______,_______,_______,_______,_______,_______,_______,KC_NUBS,S(KC_NUBS),S(KC_MINS), _______, _______, _______,_______,_______,_______, \ _______,_______,_______, _______, _______,_______,_______,_______, _______,_______,_______, _______,_______), /* Layer 3: media layer */ [MEDIA] = LAYOUT(\ @@ -72,11 +63,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { XXXXXXX,XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX,XXXXXXX,_______,XXXXXXX, KC_MRWD,KC_MSTP,KC_MFFD, XXXXXXX,XXXXXXX), /* Layer 4: Mouse layer */ [MOUSE1] = LAYOUT(\ - F(6),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______, \ + TO(DEFAULT),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______, \ _______,KC_ACL0,KC_ACL1,KC_ACL2,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______, _______,_______,_______,_______, \ - _______,KC_BTN4,KC_WH_D,KC_MS_U,KC_WH_U,_______, C(Z),_______,_______,_______,_______,_______,_______,_______, _______,_______,_______, _______,_______,_______,_______, \ - _______,KC_BTN5,KC_MS_L,KC_MS_D,KC_MS_R, F(7),KC_WH_L,KC_WH_D,KC_WH_U,KC_WH_R,_______,_______, _______, _______,_______,_______, \ - MO(MOUSE2),_______, C(Y), C(X), C(C), C(V),_______,KC_BTN2,KC_BTN3,C(PGUP),C(PGDN),_______, KC_RSFT, _______, _______,_______,_______,_______, \ + _______,KC_BTN4,KC_WH_D,KC_MS_U,KC_WH_U,_______, C(KC_Z),_______,_______,_______,_______,_______,_______,_______, _______,_______,_______, _______,_______,_______,_______, \ + _______,KC_BTN5,KC_MS_L,KC_MS_D,KC_MS_R, CTRL_CLICK,KC_WH_L,KC_WH_D,KC_WH_U,KC_WH_R,_______,_______, _______, _______,_______,_______, \ + MO(MOUSE2),_______,C(KC_Y),C(KC_X),C(KC_C),C(KC_V),_______,KC_BTN2,KC_BTN3,C(KC_PGUP),C(KC_PGDN),_______, KC_RSFT, _______, _______,_______,_______,_______, \ KC_LCTL,_______,KC_LALT, KC_BTN1, KC_RALT,KC_RGUI, KC_APP,KC_RCTL, _______,_______,_______, _______,_______), /* Layer 5: Mouse layer 2*/ [MOUSE2] = LAYOUT(\ @@ -90,44 +81,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [MISC] = LAYOUT(\ _______, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, _______,_______,_______, \ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______, _______,_______,_______,_______, \ - _______,KC_SLCT, C(W), KC_UP,_______,_______,_______,_______,KC_BSPC, KC_DEL,_______,_______,_______,_______, _______,_______,_______, _______,_______,_______,_______, \ + _______,KC_SLCT, C(KC_W), KC_UP,_______,_______,_______,_______,KC_BSPC, KC_DEL,_______,_______,_______,_______, _______,_______,_______, _______,_______,_______,_______, \ _______,_______,KC_LEFT,KC_DOWN,KC_RGHT,_______,KC_HOME,KC_PGDN,KC_PGUP,_______,_______,_______, _______, _______,_______,_______, \ - KC_LSFT,_______, C(Y), C(X), C(C), C(V), KC_SPC, KC_END,_______,C(PGUP),C(PGDN),_______, _______, _______, _______,_______,_______,_______, \ + KC_LSFT,_______,C(KC_Y),C(KC_X),C(KC_C),C(KC_V), KC_SPC, KC_END,_______,C(KC_PGUP),C(KC_PGDN),_______, _______, _______, _______,_______,_______,_______, \ _______,_______,_______, LT(MISC, KC_SPC), _______,_______,_______,_______, _______,_______,_______, _______,_______), }; -const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_FUNCTION_TAP(LCTRL_BRACKET), // tap to print [ - [2] = ACTION_FUNCTION_TAP(RCTRL_BRACKET), // tap to print ] - [3] = ACTION_FUNCTION_TAP(LALT_CURLY), // tap to print { - [4] = ACTION_FUNCTION_TAP(RALT_CURLY), // tap to print } - [6] = ACTION_LAYER_SET_CLEAR(DEFAULT), - [7] = ACTION_FUNCTION_TAP(CTRL_CLICK), - [8] = ACTION_FUNCTION_TAP(LSHFT_PAREN), // tap to print ( - [9] = ACTION_FUNCTION_TAP(RSHFT_PAREN), // tap to print ) -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - // MACRODOWN only works in this function - switch(id) { - case GRV: // macro to print accent grave - return (record->event.pressed ? - MACRO( D(LSFT), T(EQL), U(RALT), T(SPC), END) : - MACRO_NONE ); - case CFLEX: // print accent circonflex - return (record->event.pressed ? - MACRO( T(GRV), T(SPC), END ) : - MACRO_NONE ); - } - return MACRO_NONE; -}; - - -void matrix_init_user(void) { - -} - void matrix_scan_user(void) { uint8_t layer; layer = biton32(layer_state); @@ -147,10 +106,6 @@ void matrix_scan_user(void) { } } -void led_set_user(uint8_t usb_led) { - -} - void tap_helper(keyrecord_t *record, uint16_t orig_mod, uint16_t macro_mod, uint16_t macro_kc ) { if (record->event.pressed) { if (record->tap.count > 0 && !record->tap.interrupted) { @@ -175,28 +130,45 @@ void tap_helper(keyrecord_t *record, uint16_t orig_mod, uint16_t macro_mod, uint } } -/* if LCTRL is tabbed, print (, or ) if RCTRL is tabbed, same for LALT/RALT and [/] */ -void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { - // The code is copied from keymap_hasu.c in the tmk keyboards hhkb folder - switch (id) { +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + uint8_t layer; + layer = biton32(layer_state); + if (layer == PROG2) { + if (keycode >= KC_A && keycode <= KC_EXSEL && \ + !( // do not send LSFT + these keycodes, they are needed for emulating the US layout + keycode == KC_NONUS_BSLASH || + keycode == KC_RBRC || + keycode == KC_BSLS || + keycode == KC_GRV + )) { + // LSFT is the modifier for this layer, so we set LSFT for every key to get the expected behavior + if (record->event.pressed) { + register_mods(MOD_LSFT); + } else { + unregister_mods(MOD_LSFT); + } + } + } + + switch (keycode) { case LCTRL_BRACKET: tap_helper(record, KC_LCTL, KC_RALT, KC_8); - break; + return false; case RCTRL_BRACKET: tap_helper(record, KC_RCTL, KC_RALT, KC_9); - break; + return false; case LALT_CURLY: tap_helper(record, KC_LALT, KC_RALT, KC_7); - break; + return false; case RALT_CURLY: tap_helper(record, KC_RALT, KC_RALT, KC_0); - break; + return false; case LSHFT_PAREN: tap_helper(record, KC_LSFT, KC_LSFT, KC_8); - break; + return false; case RSHFT_PAREN: tap_helper(record, KC_RSFT, KC_LSFT, KC_9); - break; + return false; case CTRL_CLICK: if (record->event.pressed) { mousekey_clear(); @@ -212,28 +184,16 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { unregister_mods(MOD_BIT(KC_LCTL)); send_keyboard_report(); } - break; + return false; + case M_GRV: + tap_code16(S(KC_EQL)); + tap_code(KC_SPC); + return false; + case M_CFLEX: + tap_code(KC_GRV); + tap_code(KC_SPC); + return false; } -} -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - uint8_t layer; - layer = biton32(layer_state); - if (layer == PROG2) { - if (keycode >= KC_A && keycode <= KC_EXSEL && \ - !( // do not send LSFT + these keycodes, they are needed for emulating the US layout - keycode == KC_NONUS_BSLASH || - keycode == KC_RBRC || - keycode == KC_BSLS || - keycode == KC_GRV - )) { - // LSFT is the modifier for this layer, so we set LSFT for every key to get the expected behavior - if (record->event.pressed) { - register_mods(MOD_LSFT); - } else { - unregister_mods(MOD_LSFT); - } - } - } return true; } diff --git a/keyboards/bpiphany/kitten_paw/kitten_paw.h b/keyboards/bpiphany/kitten_paw/kitten_paw.h index 38b2a943346a..d4a9a166566a 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/kitten_paw/rules.mk b/keyboards/bpiphany/kitten_paw/rules.mk index 23546e4f0a08..fd69c42e3139 100644 --- a/keyboards/bpiphany/kitten_paw/rules.mk +++ b/keyboards/bpiphany/kitten_paw/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u2 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output CUSTOM_MATRIX = yes SRC += matrix.c diff --git a/keyboards/bpiphany/pegasushoof/2013/2013.c b/keyboards/bpiphany/pegasushoof/2013/2013.c index 7a489b22a70a..c9bd01a9978f 100644 --- a/keyboards/bpiphany/pegasushoof/2013/2013.c +++ b/keyboards/bpiphany/pegasushoof/2013/2013.c @@ -23,37 +23,3 @@ extern inline void ph_caps_led_off(void); extern inline void ph_sclk_led_on(void); extern inline void ph_sclk_led_off(void); - - -__attribute__ ((weak)) -void matrix_init_user(void) { -}; - -__attribute__ ((weak)) -void matrix_scan_user(void) { -} - -__attribute__ ((weak)) -bool process_action_user(keyrecord_t *record) { - return true; -} - -__attribute__ ((weak)) -void led_set_user(uint8_t usb_led) { -} - -void matrix_init_kb(void) { - matrix_init_user(); -} - -void matrix_scan_kb(void) { - matrix_scan_user(); -} - -bool process_action_kb(keyrecord_t *record) { - return process_action_user(record); -} - -void led_set_kb(uint8_t usb_led) { - led_set_user(usb_led); -} diff --git a/keyboards/bpiphany/pegasushoof/2013/2013.h b/keyboards/bpiphany/pegasushoof/2013/2013.h index b3e911ab41b7..7a4d7f0b5862 100644 --- a/keyboards/bpiphany/pegasushoof/2013/2013.h +++ b/keyboards/bpiphany/pegasushoof/2013/2013.h @@ -45,14 +45,16 @@ along with this program. If not, see . 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, KD2, KN6, KQ6, KN0, KA3, KM0, KP1, KC0, KQ0, KR0 \ - ) LAYOUT( \ - 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,KC_NO,KG1, KH1, KI1, KJ1, KJ0, KK0, KK1, KL1, KM1, KF0, KB3, KC6, \ - KP4, KD2, KN6, KQ6, KN0, KA3, KM0, KP1, KC0, KQ0, KR0 \ - ) + ) { /* 00-A 01-B 02-C 03-D 04-E 05-F 06-G 07-H 08-I 09-J 10-K 11-L 12-M 13-N 14-O 15-P 16-Q 17-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 , KD2 , KC_NO , KF2 , KG2 , KH2 , KI2 , KJ2 , KK2 , KL2 , KM2 , KC_NO , KO2 , KC_NO , KC_NO , KC_NO }, \ + /* 3 */ { KA3 , KB3 , KC_NO , KC_NO , KC_NO , KF3 , KG3 , KH3 , KI3 , KJ3 , KK3 , KL3 , KM3 , KC_NO , 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 } \ + } #define LAYOUT_tkl_jis( \ KG6, KH4, KI4, KI2, KI6, KP5, KL6, KM2, KM4, KO4, KO5, KO6, KO0, KN5, KN7, KP7, \ diff --git a/keyboards/bpiphany/pegasushoof/2015/2015.c b/keyboards/bpiphany/pegasushoof/2015/2015.c index 62841e7af189..401dc2633b74 100644 --- a/keyboards/bpiphany/pegasushoof/2015/2015.c +++ b/keyboards/bpiphany/pegasushoof/2015/2015.c @@ -23,36 +23,3 @@ extern inline void ph_caps_led_off(void); extern inline void ph_sclk_led_on(void); extern inline void ph_sclk_led_off(void); - -__attribute__ ((weak)) -void matrix_init_user(void) { -}; - -__attribute__ ((weak)) -void matrix_scan_user(void) { -} - -__attribute__ ((weak)) -bool process_action_user(keyrecord_t *record) { - return true; -} - -__attribute__ ((weak)) -void led_set_user(uint8_t usb_led) { -} - -void matrix_init_kb(void) { - matrix_init_user(); -} - -void matrix_scan_kb(void) { - matrix_scan_user(); -} - -bool process_action_kb(keyrecord_t *record) { - return process_action_user(record); -} - -void led_set_kb(uint8_t usb_led) { - led_set_user(usb_led); -} diff --git a/keyboards/bpiphany/pegasushoof/2015/2015.h b/keyboards/bpiphany/pegasushoof/2015/2015.h index 8a0084d4053a..418772aa2875 100644 --- a/keyboards/bpiphany/pegasushoof/2015/2015.h +++ b/keyboards/bpiphany/pegasushoof/2015/2015.h @@ -47,14 +47,16 @@ along with this program. If not, see . KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, \ KN2, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, \ KA4, KP2, KC6, KK6, KC0, KM3, KD0, KA1, KO0, KK0, KL0 \ - ) 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, \ - KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, KK4, KO7, KQ7, \ - KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, \ - KN2,KC_NO,KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, \ - KA4, KP2, KC6, KK6, KC0, KM3, KD0, KA1, KO0, KK0, KL0 \ - ) + ) { /* 00-A 01-B 02-C 03-D 04-E 05-F 06-G 07-H 08-I 09-J 10-K 11-L 12-M 13-N 14-O 15-P 16-Q 17-R */ \ + /* 0 */ { ___ , KB0 , KC0 , KD0 , ___ , KF0 , KG0 , ___ , ___ , ___ , KK0 , KL0 , ___ , ___ , KO0 , ___ , ___ , KR0 }, \ + /* 1 */ { KA1 , KB1 , ___ , KD1 , KE1 , KF1 , KG1 , KH1 , KI1 , KJ1 , ___ , ___ , ___ , ___ , ___ , ___ , ___ , ___ }, \ + /* 2 */ { ___ , KB2 , ___ , KD2 , KE2 , KF2 , KG2 , KH2 , KI2 , KJ2 , ___ , ___ , ___ , KN2 , ___ , KP2 , ___ , KR2 }, \ + /* 3 */ { ___ , KB3 , ___ , KD3 , KE3 , KF3 , KG3 , KH3 , KI3 , KJ3 , ___ , ___ , KM3 , KN3 , ___ , ___ , ___ , KR3 }, \ + /* 4 */ { KA4 , KB4 , ___ , KD4 , KE4 , KF4 , KG4 , KH4 , KI4 , KJ4 , KK4 , KL4 , ___ , ___ , KO4 , ___ , KQ4 , KR4 }, \ + /* 5 */ { KA5 , ___ , KC5 , KD5 , KE5 , KF5 , KG5 , KH5 , KI5 , KJ5 , ___ , ___ , ___ , ___ , ___ , ___ , ___ , KR5 }, \ + /* 6 */ { ___ , KB6 , KC6 , ___ , KE6 , KF6 , KG6 , KH6 , ___ , KJ6 , KK6 , ___ , ___ , ___ , KO6 , ___ , ___ , KR6 }, \ + /* 7 */ { KA7 , KB7 , KC7 , KD7 , KE7 , KF7 , KG7 , KH7 , KI7 , KJ7 , ___ , ___ , ___ , ___ , KO7 , ___ , KQ7 , KR7 } \ + } #define LAYOUT_tkl_iso( \ KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \ @@ -63,14 +65,16 @@ along with this program. If not, see . KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB3, KB1, \ KN2, KI6, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, \ KA4, KP2, KC6, KK6, KC0, KM3, KD0, KA1, KO0, KK0, KL0 \ - ) 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, \ - KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, KK4, KO7, KQ7, \ - KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, \ - KN2, KI6 ,KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, \ - KA4, KP2, KC6, KK6, KC0, KM3, KD0, KA1, KO0, KK0, KL0 \ - ) + ) { /* 00-A 01-B 02-C 03-D 04-E 05-F 06-G 07-H 08-I 09-J 10-K 11-L 12-M 13-N 14-O 15-P 16-Q 17-R */ \ + /* 0 */ { ___ , KB0 , KC0 , KD0 , ___ , KF0 , KG0 , ___ , ___ , ___ , KK0 , KL0 , ___ , ___ , KO0 , ___ , ___ , KR0 }, \ + /* 1 */ { KA1 , KB1 , ___ , KD1 , KE1 , KF1 , KG1 , KH1 , KI1 , KJ1 , ___ , ___ , ___ , ___ , ___ , ___ , ___ , ___ }, \ + /* 2 */ { ___ , KB2 , ___ , KD2 , KE2 , KF2 , KG2 , KH2 , KI2 , KJ2 , ___ , ___ , ___ , KN2 , ___ , KP2 , ___ , KR2 }, \ + /* 3 */ { ___ , KB3 , ___ , KD3 , KE3 , KF3 , KG3 , KH3 , KI3 , KJ3 , ___ , ___ , KM3 , KN3 , ___ , ___ , ___ , KR3 }, \ + /* 4 */ { KA4 , KB4 , ___ , KD4 , KE4 , KF4 , KG4 , KH4 , KI4 , KJ4 , KK4 , KL4 , ___ , ___ , KO4 , ___ , KQ4 , KR4 }, \ + /* 5 */ { KA5 , ___ , KC5 , KD5 , KE5 , KF5 , KG5 , KH5 , KI5 , KJ5 , ___ , ___ , ___ , ___ , ___ , ___ , ___ , KR5 }, \ + /* 6 */ { ___ , KB6 , KC6 , ___ , KE6 , KF6 , KG6 , KH6 , KI6 , KJ6 , KK6 , ___ , ___ , ___ , KO6 , ___ , ___ , KR6 }, \ + /* 7 */ { KA7 , KB7 , KC7 , KD7 , KE7 , KF7 , KG7 , KH7 , KI7 , KJ7 , ___ , ___ , ___ , ___ , KO7 , ___ , KQ7 , KR7 } \ + } #define LAYOUT_tkl_jis( \ KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \ diff --git a/keyboards/bpiphany/pegasushoof/2015/matrix.c b/keyboards/bpiphany/pegasushoof/2015/matrix.c index 42c5da3bc538..b05869fedac0 100644 --- a/keyboards/bpiphany/pegasushoof/2015/matrix.c +++ b/keyboards/bpiphany/pegasushoof/2015/matrix.c @@ -33,6 +33,18 @@ static matrix_row_t matrix_debouncing[MATRIX_ROWS]; static matrix_row_t read_cols(void); static void select_row(uint8_t col); +// user-defined overridable functions + +__attribute__((weak)) void matrix_init_kb(void) { matrix_init_user(); } + +__attribute__((weak)) void matrix_scan_kb(void) { matrix_scan_user(); } + +__attribute__((weak)) void matrix_init_user(void) {} + +__attribute__((weak)) void matrix_scan_user(void) {} + +// helper functions + inline uint8_t matrix_rows(void) { return MATRIX_ROWS; diff --git a/keyboards/bpiphany/pegasushoof/info.json b/keyboards/bpiphany/pegasushoof/info.json index 9243e0c083ed..fb4d2479a5d1 100644 --- a/keyboards/bpiphany/pegasushoof/info.json +++ b/keyboards/bpiphany/pegasushoof/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Pegasus Hoof", "url": "", "maintainer": "qmk", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/bpiphany/pegasushoof/keymaps/blowrak/keymap.c b/keyboards/bpiphany/pegasushoof/keymaps/blowrak/keymap.c index f9234a7b2f9d..7884462021d9 100644 --- a/keyboards/bpiphany/pegasushoof/keymaps/blowrak/keymap.c +++ b/keyboards/bpiphany/pegasushoof/keymaps/blowrak/keymap.c @@ -24,8 +24,8 @@ along with this program. If not, see . #define SE_AO KC_LBRC #define SE_CIRC KC_RBRC #define SE_QUOT KC_BSLS -#define SE_OE KC_SCLN -#define SE_AE KC_QUOT +#define SE_ODIA KC_SCLN +#define SE_ADIA KC_QUOT #define SE_MINS KC_SLSH #define SE_LTGT KC_NUBS #define SE_LCBR RALT(KC_7) @@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [KM_BLOWRAK] = LAYOUT( \ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,KC_PAUS, \ SE_HALF, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, SE_PLUS,SE_ACUT,KC_BSPC, KC_INS, KC_HOME,KC_PGUP, \ - KC_TAB, SE_AO, SE_AE, SE_OE, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_COMM,SE_CIRC,SE_QUOT, KC_DEL, KC_END, KC_PGDN, \ + KC_TAB, SE_AO, SE_ADIA,SE_ODIA,KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_COMM,SE_CIRC,SE_QUOT, KC_DEL, KC_END, KC_PGDN, \ KC_LCTRL,KC_A, KC_O, KC_E, KC_U, KC_I, KC_H, KC_D, KC_T, KC_N, KC_S, SE_MINS, KC_ENT, \ KC_LSFT, SE_LTGT,KC_DOT, KC_Q, KC_J, KC_K, KC_B, KC_X, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, KC_UP, \ MO(KM_MEDIA),KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI,KC_MENU,TG(KM_QWERTY), KC_LEFT,KC_DOWN,KC_RGHT), @@ -54,7 +54,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,KC_PAUS, \ SE_HALF, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, SE_PLUS,SE_ACUT,KC_BSPC, KC_INS, KC_HOME,KC_PGUP, \ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, SE_AO, SE_CIRC,SE_QUOT, KC_DEL, KC_END, KC_PGDN, \ - KC_LCTRL,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, SE_OE, SE_AE, KC_ENT, \ + KC_LCTRL,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, SE_ODIA,SE_ADIA, KC_ENT, \ KC_LSFT, SE_LTGT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, SE_MINS, KC_RSFT, KC_UP, \ MO(KM_MEDIA),KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI,KC_MENU,TG(KM_QWERTY), KC_LEFT,KC_DOWN,KC_RGHT), /* Layer 2: Media layer */ diff --git a/keyboards/bpiphany/pegasushoof/keymaps/blowrak/rules.mk b/keyboards/bpiphany/pegasushoof/keymaps/blowrak/rules.mk index a605a865e937..737451b39ad2 100644 --- a/keyboards/bpiphany/pegasushoof/keymaps/blowrak/rules.mk +++ b/keyboards/bpiphany/pegasushoof/keymaps/blowrak/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = yes # Console for debug(+400) diff --git a/keyboards/bpiphany/pegasushoof/keymaps/citadel/rules.mk b/keyboards/bpiphany/pegasushoof/keymaps/citadel/rules.mk index 3eb289a71667..294a245aabcd 100644 --- a/keyboards/bpiphany/pegasushoof/keymaps/citadel/rules.mk +++ b/keyboards/bpiphany/pegasushoof/keymaps/citadel/rules.mk @@ -1,7 +1,7 @@ # Build Options # change to "no" to disable the options # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/bpiphany/pegasushoof/keymaps/default/rules.mk b/keyboards/bpiphany/pegasushoof/keymaps/default/rules.mk index 972b7fc71945..c1e6e9ed02f9 100644 --- a/keyboards/bpiphany/pegasushoof/keymaps/default/rules.mk +++ b/keyboards/bpiphany/pegasushoof/keymaps/default/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 @@ -10,8 +10,5 @@ COMMAND_ENABLE = yes # Commands for debug and configuration CUSTOM_MATRIX = yes # Custom matrix file for the Pegasus Hoof due to the 2x74HC42 NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. diff --git a/keyboards/bpiphany/pegasushoof/keymaps/default_jis/rules.mk b/keyboards/bpiphany/pegasushoof/keymaps/default_jis/rules.mk index a605a865e937..f23c2105a3b4 100644 --- a/keyboards/bpiphany/pegasushoof/keymaps/default_jis/rules.mk +++ b/keyboards/bpiphany/pegasushoof/keymaps/default_jis/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = yes # Console for debug(+400) @@ -10,8 +10,5 @@ COMMAND_ENABLE = yes # Commands for debug and configuration CUSTOM_MATRIX = yes # Custom matrix file for the Pegasus Hoof due to the 2x74HC42 NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. diff --git a/keyboards/bpiphany/pegasushoof/rules.mk b/keyboards/bpiphany/pegasushoof/rules.mk index ffc4fc0e806e..232de655c7aa 100644 --- a/keyboards/bpiphany/pegasushoof/rules.mk +++ b/keyboards/bpiphany/pegasushoof/rules.mk @@ -2,29 +2,19 @@ MCU = atmega32u2 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. LAYOUTS = tkl_ansi diff --git a/keyboards/bpiphany/sixshooter/config.h b/keyboards/bpiphany/sixshooter/config.h index 0637e8d6bc2b..9e7a1803af35 100644 --- a/keyboards/bpiphany/sixshooter/config.h +++ b/keyboards/bpiphany/sixshooter/config.h @@ -44,54 +44,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. diff --git a/keyboards/bpiphany/sixshooter/info.json b/keyboards/bpiphany/sixshooter/info.json index 79044589da1d..f45419746a02 100644 --- a/keyboards/bpiphany/sixshooter/info.json +++ b/keyboards/bpiphany/sixshooter/info.json @@ -2,11 +2,8 @@ "keyboard_name": "SixShooter", "maintainer": "qmk", "url": "https://geekhack.org/index.php?topic=70033.0", - "width": 3, - "height": 2, "layouts": { "LAYOUT": { - "key_count": 6, "layout": [{"label":"K00", "x":0, "y":0}, {"label":"K01", "x":1, "y":0}, {"label":"K02", "x":2, "y":0}, {"label":"K03", "x":0, "y":1}, {"label":"K04", "x":1, "y":1}, {"label":"K05", "x":2, "y":1}] } } diff --git a/keyboards/bpiphany/sixshooter/rules.mk b/keyboards/bpiphany/sixshooter/rules.mk index 0aafb9099f62..601e812367ae 100644 --- a/keyboards/bpiphany/sixshooter/rules.mk +++ b/keyboards/bpiphany/sixshooter/rules.mk @@ -2,29 +2,17 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = halfkay # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/bpiphany/sixshooter/sixshooter.c b/keyboards/bpiphany/sixshooter/sixshooter.c index 87a739454d33..e95a06f16f8f 100644 --- a/keyboards/bpiphany/sixshooter/sixshooter.c +++ b/keyboards/bpiphany/sixshooter/sixshooter.c @@ -16,23 +16,3 @@ extern inline void sixshooter_led_5_off(void); extern inline void sixshooter_led_all_on(void); extern inline void sixshooter_led_all_off(void); - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/bpiphany/sixshooter/sixshooter.h b/keyboards/bpiphany/sixshooter/sixshooter.h index e8fc68f5c90e..33ac9335e614 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 a86cffd16b5d..54a1c2e7f4a0 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -40,7 +39,12 @@ along with this program. If not, see . /* * Keyboard Matrix Assignments + * + * MATRIX_ROW_PINS and MATRIX_COL_PINS aren't actually used and are included + * for data driven compatibility. */ +#define MATRIX_ROW_PINS { C2, B3, B4, B2, B1, C7, B6, B5 } +#define MATRIX_COL_PINS { NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN } #define UNUSED_PINS { B0, C4, D3 } #define LED_NUM_LOCK_PIN C5 @@ -77,54 +81,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -142,5 +98,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -#endif diff --git a/keyboards/bpiphany/tiger_lily/info.json b/keyboards/bpiphany/tiger_lily/info.json index 1a2194b06ffc..aacd06dcb4b6 100644 --- a/keyboards/bpiphany/tiger_lily/info.json +++ b/keyboards/bpiphany/tiger_lily/info.json @@ -2,8 +2,6 @@ "keyboard_name": "tiger_lily", "url": "", "maintainer": "qmk", - "width": 22.5, - "height": 6.5, "layouts": { "LAYOUT": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"@", "x":2, "y":1.5}, {"label":"#", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"Backspace", "x":13, "y":1.5, "w":2}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.25, "y":1.5}, {"label":"Num Lock", "x":18.5, "y":1.5}, {"label":"/", "x":19.5, "y":1.5}, {"label":"*", "x":20.5, "y":1.5}, {"label":"-", "x":21.5, "y":1.5}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":6.5, "y":2.5}, {"label":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"|", "x":13.5, "y":2.5, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"7", "x":18.5, "y":2.5}, {"label":"8", "x":19.5, "y":2.5}, {"label":"9", "x":20.5, "y":2.5}, {"label":"+", "x":21.5, "y":2.5, "h":2}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, {"label":"4", "x":18.5, "y":3.5}, {"label":"5", "x":19.5, "y":3.5}, {"label":"6", "x":20.5, "y":3.5}, {"label":"Shift", "x":0, "y":4.5, "w":1.25}, {"label":"|", "x":1.25, "y":4.5}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"N", "x":7.25, "y":4.5}, {"label":"M", "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":"Shift", "x":12.25, "y":4.5, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"1", "x":18.5, "y":4.5}, {"label":"2", "x":19.5, "y":4.5}, {"label":"3", "x":20.5, "y":4.5}, {"label":"Enter", "x":21.5, "y":4.5, "h":2}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, {"label":"Win", "x":1.25, "y":5.5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"label":"Alt", "x":10, "y":5.5, "w":1.25}, {"label":"Win", "x":11.25, "y":5.5, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.5, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}, {"label":"0", "x":18.5, "y":5.5, "w":2}, {"label":".", "x":20.5, "y":5.5}] diff --git a/keyboards/bpiphany/tiger_lily/keymaps/default/rules.mk b/keyboards/bpiphany/tiger_lily/keymaps/default/rules.mk index 46af5cd7b4b7..69e27bd2babc 100644 --- a/keyboards/bpiphany/tiger_lily/keymaps/default/rules.mk +++ b/keyboards/bpiphany/tiger_lily/keymaps/default/rules.mk @@ -2,17 +2,12 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = 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 -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - diff --git a/keyboards/bpiphany/tiger_lily/keymaps/default_ansi/rules.mk b/keyboards/bpiphany/tiger_lily/keymaps/default_ansi/rules.mk index 7a331cd530cf..37f7e2bf93e9 100644 --- a/keyboards/bpiphany/tiger_lily/keymaps/default_ansi/rules.mk +++ b/keyboards/bpiphany/tiger_lily/keymaps/default_ansi/rules.mk @@ -2,17 +2,12 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) COMMAND_ENABLE = yes # 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 -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - diff --git a/keyboards/bpiphany/tiger_lily/keymaps/via/rules.mk b/keyboards/bpiphany/tiger_lily/keymaps/via/rules.mk index d68fae9b2cdf..a0b328e065f6 100644 --- a/keyboards/bpiphany/tiger_lily/keymaps/via/rules.mk +++ b/keyboards/bpiphany/tiger_lily/keymaps/via/rules.mk @@ -6,9 +6,5 @@ CONSOLE_ENABLE = no COMMAND_ENABLE = yes NKRO_ENABLE = yes BACKLIGHT_ENABLE = no -MIDI_ENABLE = no AUDIO_ENABLE = no -UNICODE_ENABLE = no -BLUETOOTH_ENABLE = no RGBLIGHT_ENABLE = no -SLEEP_LED_ENABLE = no \ No newline at end of file diff --git a/keyboards/bpiphany/tiger_lily/rules.mk b/keyboards/bpiphany/tiger_lily/rules.mk index 23546e4f0a08..fd69c42e3139 100644 --- a/keyboards/bpiphany/tiger_lily/rules.mk +++ b/keyboards/bpiphany/tiger_lily/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u2 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output CUSTOM_MATRIX = yes SRC += matrix.c diff --git a/keyboards/bpiphany/tiger_lily/tiger_lily.h b/keyboards/bpiphany/tiger_lily/tiger_lily.h index 65e4d91564a3..b1a872e21593 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 5bd8e532a509..a6589be4a1df 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -75,54 +74,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -140,25 +91,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - -#endif diff --git a/keyboards/bpiphany/unloved_bastard/info.json b/keyboards/bpiphany/unloved_bastard/info.json index 782abf130378..0fe42d31979d 100644 --- a/keyboards/bpiphany/unloved_bastard/info.json +++ b/keyboards/bpiphany/unloved_bastard/info.json @@ -1,8 +1,6 @@ { "keyboard_name": "unloved_bastard", "maintainer": "qmk", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT_all": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"@", "x":2, "y":1.5}, {"label":"#", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"Backspace", "x":13, "y":1.5, "w":2}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.25, "y":1.5}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":6.5, "y":2.5}, {"label":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"|", "x":13.5, "y":2.5, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, {"label":"Shift", "x":0, "y":4.5, "w":1.25}, {"label":"|", "x":1.25, "y":4.5}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"N", "x":7.25, "y":4.5}, {"label":"M", "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":"Shift", "x":12.25, "y":4.5, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, {"label":"Win", "x":1.25, "y":5.5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"label":"Alt", "x":10, "y":5.5, "w":1.25}, {"label":"Win", "x":11.25, "y":5.5, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.5, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}] diff --git a/keyboards/bpiphany/unloved_bastard/keymaps/default_ansi/keymap.c b/keyboards/bpiphany/unloved_bastard/keymaps/default_ansi/keymap.c index 783e37196ea5..a65346d8a7fa 100644 --- a/keyboards/bpiphany/unloved_bastard/keymaps/default_ansi/keymap.c +++ b/keyboards/bpiphany/unloved_bastard/keymaps/default_ansi/keymap.c @@ -24,19 +24,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \ KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ) }; - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/bpiphany/unloved_bastard/keymaps/default_iso/keymap.c b/keyboards/bpiphany/unloved_bastard/keymaps/default_iso/keymap.c index b6b78c2c5a72..30dee23ad124 100644 --- a/keyboards/bpiphany/unloved_bastard/keymaps/default_iso/keymap.c +++ b/keyboards/bpiphany/unloved_bastard/keymaps/default_iso/keymap.c @@ -24,19 +24,3 @@ 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_RSFT, KC_UP, \ KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ) }; - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/bpiphany/unloved_bastard/rules.mk b/keyboards/bpiphany/unloved_bastard/rules.mk index d6c3d6232a4c..c1d6aacd8d63 100644 --- a/keyboards/bpiphany/unloved_bastard/rules.mk +++ b/keyboards/bpiphany/unloved_bastard/rules.mk @@ -2,32 +2,21 @@ MCU = atmega32u2 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output +SLEEP_LED_ENABLE = yes CUSTOM_MATRIX = yes SRC += matrix.c diff --git a/keyboards/bpiphany/unloved_bastard/unloved_bastard.h b/keyboards/bpiphany/unloved_bastard/unloved_bastard.h index d444fd0d8afb..26fce8749a14 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 . */ -#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/bt66tech/bt66tech60/config.h b/keyboards/bt66tech/bt66tech60/config.h index ae2024074d2d..7083b0f70d72 100644 --- a/keyboards/bt66tech/bt66tech60/config.h +++ b/keyboards/bt66tech/bt66tech60/config.h @@ -18,11 +18,11 @@ along with this program. If not, see . #pragma once /* USB Device descriptor parameter */ -#define VENDOR_ID 0xCA04 -#define PRODUCT_ID 0x6060 +#define VENDOR_ID 0x4254 +#define PRODUCT_ID 0x7070 #define DEVICE_VER 0x0001 #define MANUFACTURER bt66tech -#define PRODUCT bt66tech 60% +#define PRODUCT bt66tech 60% /* key matrix size */ #define MATRIX_ROWS 5 diff --git a/keyboards/bt66tech/bt66tech60/info.json b/keyboards/bt66tech/bt66tech60/info.json index 3ea3f584ebdf..c4011c343951 100644 --- a/keyboards/bt66tech/bt66tech60/info.json +++ b/keyboards/bt66tech/bt66tech60/info.json @@ -2,8 +2,6 @@ "keyboard_name": "bt66tech60", "url": "", "maintainer": "bt66tech", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_ansi": { "layout": [ @@ -12,4 +10,3 @@ } } } - diff --git a/keyboards/bt66tech/bt66tech60/keymaps/via/keymap.c b/keyboards/bt66tech/bt66tech60/keymaps/via/keymap.c new file mode 100644 index 000000000000..498f11d67d11 --- /dev/null +++ b/keyboards/bt66tech/bt66tech60/keymaps/via/keymap.c @@ -0,0 +1,60 @@ +/* Copyright 2020 bt66tech + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +// enum layer_names { +// _BASE, +// _FN, +// _FN1 +// }; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + +[0] = LAYOUT_60_ansi( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, MO(1) + ), + + [1] = LAYOUT_60_ansi( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_MS_ACCEL0, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCREEN, KC_TRNS, KC_TRNS, KC_TRNS, + KC_MS_ACCEL1, KC_MS_LEFT, KC_MS_DOWN,KC_MS_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_MS_ACCEL2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, MO(2), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS + ), + + [2] = LAYOUT_60_ansi( + BL_TOGG, BL_STEP, BL_ON, BL_OFF, BL_INC, BL_DEC, BL_BRTG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_INC, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT_60_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) + +}; diff --git a/keyboards/xd75/keymaps/via/rules.mk b/keyboards/bt66tech/bt66tech60/keymaps/via/rules.mk similarity index 100% rename from keyboards/xd75/keymaps/via/rules.mk rename to keyboards/bt66tech/bt66tech60/keymaps/via/rules.mk diff --git a/keyboards/bt66tech/bt66tech60/rules.mk b/keyboards/bt66tech/bt66tech60/rules.mk index e043210f34a7..ba30a4f51032 100644 --- a/keyboards/bt66tech/bt66tech60/rules.mk +++ b/keyboards/bt66tech/bt66tech60/rules.mk @@ -7,19 +7,17 @@ BOOTLOADER = stm32duino # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = yes # 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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output +SLEEP_LED_ENABLE = yes WS2812_DRIVER = spi DEFAULT_FOLDER = bt66tech/bt66tech60 diff --git a/keyboards/bthlabs/geekpad/config.h b/keyboards/bthlabs/geekpad/config.h index 85fa2f00bbdd..7994a9cab50c 100644 --- a/keyboards/bthlabs/geekpad/config.h +++ b/keyboards/bthlabs/geekpad/config.h @@ -99,54 +99,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -165,26 +117,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/bthlabs/geekpad/geekpad.c b/keyboards/bthlabs/geekpad/geekpad.c index e52507c93dc6..6b8edd31c344 100644 --- a/keyboards/bthlabs/geekpad/geekpad.c +++ b/keyboards/bthlabs/geekpad/geekpad.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "geekpad.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/bthlabs/geekpad/geekpad.h b/keyboards/bthlabs/geekpad/geekpad.h index c9f1ac9d4f63..4dc6800fe592 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 . */ -#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/bthlabs/geekpad/info.json b/keyboards/bthlabs/geekpad/info.json index c95497c5537d..52ecd7a69342 100644 --- a/keyboards/bthlabs/geekpad/info.json +++ b/keyboards/bthlabs/geekpad/info.json @@ -2,8 +2,6 @@ "keyboard_name": "BTHLabs GeekPad", "url": "https://git.bthlabs.pl/tomekwojcik/geekpad", "maintainer": "Tomek Wójcik ", - "width": 3, - "height": 3, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/bthlabs/geekpad/rules.mk b/keyboards/bthlabs/geekpad/rules.mk index 1a7800dd14d2..9ed996e4c064 100644 --- a/keyboards/bthlabs/geekpad/rules.mk +++ b/keyboards/bthlabs/geekpad/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/buildakb/potato65/info.json b/keyboards/buildakb/potato65/info.json index 0063b293e41f..a7713ef1bd0e 100644 --- a/keyboards/buildakb/potato65/info.json +++ b/keyboards/buildakb/potato65/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Potato 65", "url": "https://github.com/Aeonstrife/potato65", "maintainer": "Maelkk", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_ansi_split_bs": { "layout": [ diff --git a/keyboards/buildakb/potato65/rules.mk b/keyboards/buildakb/potato65/rules.mk index 468d4dbcec70..3c6205091408 100644 --- a/keyboards/buildakb/potato65/rules.mk +++ b/keyboards/buildakb/potato65/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow diff --git a/keyboards/buildakb/potato65hs/info.json b/keyboards/buildakb/potato65hs/info.json index 264adbbb6b01..52ea416fa29d 100644 --- a/keyboards/buildakb/potato65hs/info.json +++ b/keyboards/buildakb/potato65hs/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Potato 65 Hotswap", "url": "https://github.com/Aeonstrife/potato65hotswap", "maintainer": "Maelkk", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_ansi_blocker": { "layout": [ diff --git a/keyboards/buildakb/potato65hs/rules.mk b/keyboards/buildakb/potato65hs/rules.mk index c538b0c21d9f..be3664d89edd 100644 --- a/keyboards/buildakb/potato65hs/rules.mk +++ b/keyboards/buildakb/potato65hs/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow diff --git a/keyboards/buildakb/potato65s/config.h b/keyboards/buildakb/potato65s/config.h new file mode 100644 index 000000000000..5183327855f5 --- /dev/null +++ b/keyboards/buildakb/potato65s/config.h @@ -0,0 +1,72 @@ +/* +Copyright 2021 Maelkk + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4A56 +#define PRODUCT_ID 0x0003 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Maelkk +#define PRODUCT Potato 65 Solderable + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { F5, F4, F6, F0, D2 } +#define MATRIX_COL_PINS { D3, D4, D6, D7, B4, B5, B6, F1, B0, B1, B2, B3, B7, D0, D1 } +#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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +#define RGB_DI_PIN D5 +#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 16 +# define RGBLIGHT_HUE_STEP 8 +# define RGBLIGHT_SAT_STEP 8 +# define RGBLIGHT_VAL_STEP 8 +# define RGBLIGHT_LIMIT_VAL 240 +# define RGBLIGHT_SLEEP +#endif diff --git a/keyboards/buildakb/potato65s/info.json b/keyboards/buildakb/potato65s/info.json new file mode 100644 index 000000000000..257ed6022d62 --- /dev/null +++ b/keyboards/buildakb/potato65s/info.json @@ -0,0 +1,83 @@ +{ + "keyboard_name": "Potato 65 Solderable", + "url": "https://github.com/Aeonstrife/potato65solderable", + "maintainer": "Maelkk", + "layouts": { + "LAYOUT_all": { + "layout": [ + { "x":0, "y":0 }, + { "x":1, "y":0 }, + { "x":2, "y":0 }, + { "x":3, "y":0 }, + { "x":4, "y":0 }, + { "x":5, "y":0 }, + { "x":6, "y":0 }, + { "x":7, "y":0 }, + { "x":8, "y":0 }, + { "x":9, "y":0 }, + { "x":10, "y":0 }, + { "x":11, "y":0 }, + { "x":12, "y":0 }, + { "x":13, "y":0 }, + { "x":14, "y":0 }, + { "x":15, "y":0 }, + + { "x":0, "y":1, "w":1.5 }, + { "x":1.5, "y":1 }, + { "x":2.5, "y":1 }, + { "x":3.5, "y":1 }, + { "x":4.5, "y":1 }, + { "x":5.5, "y":1 }, + { "x":6.5, "y":1 }, + { "x":7.5, "y":1 }, + { "x":8.5, "y":1 }, + { "x":9.5, "y":1 }, + { "x":10.5, "y":1 }, + { "x":11.5, "y":1 }, + { "x":12.5, "y":1 }, + { "x":13.5, "y":1, "w":1.5 }, + { "x":15, "y":1 }, + + { "x":0, "y":2, "w":1.75 }, + { "x":1.75, "y":2 }, + { "x":2.75, "y":2 }, + { "x":3.75, "y":2 }, + { "x":4.75, "y":2 }, + { "x":5.75, "y":2 }, + { "x":6.75, "y":2 }, + { "x":7.75, "y":2 }, + { "x":8.75, "y":2 }, + { "x":9.75, "y":2 }, + { "x":10.75, "y":2 }, + { "x":11.75, "y":2 }, + { "x":12.75, "y":2, "w":2.25 }, + { "x":15, "y":2 }, + + { "x":0, "y":3, "w":2.25 }, + { "x":2.25, "y":3 }, + { "x":3.25, "y":3 }, + { "x":4.25, "y":3 }, + { "x":5.25, "y":3 }, + { "x":6.25, "y":3 }, + { "x":7.25, "y":3 }, + { "x":8.25, "y":3 }, + { "x":9.25, "y":3 }, + { "x":10.25, "y":3 }, + { "x":11.25, "y":3 }, + { "x":12.25, "y":3, "w":1.75 }, + { "x":14, "y":3 }, + { "x":15, "y":3 }, + + { "x":0, "y":4, "w":1.25 }, + { "x":1.25, "y":4, "w":1.25 }, + { "x":2.5, "y":4, "w":1.25 }, + { "x":3.75, "y":4, "w":6.25 }, + { "x":10, "y":4, "w":1.25 }, + { "x":11.25, "y":4, "w":1.25 }, + { "x":13, "y":4 }, + { "x":14, "y":4 }, + { "x":15, "y":4 } + ] + } + } +} diff --git a/keyboards/buildakb/potato65s/keymaps/default/keymap.c b/keyboards/buildakb/potato65s/keymaps/default/keymap.c new file mode 100644 index 000000000000..9f6eb0890b43 --- /dev/null +++ b/keyboards/buildakb/potato65s/keymaps/default/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2021 Maelkk + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_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_BSPC, KC_DEL, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + MO(_FN), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_FN] = LAYOUT_all( + KC_TILD, 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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MUTE, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT + ) +}; diff --git a/keyboards/buildakb/potato65s/keymaps/default/readme.md b/keyboards/buildakb/potato65s/keymaps/default/readme.md new file mode 100644 index 000000000000..bb34368c9966 --- /dev/null +++ b/keyboards/buildakb/potato65s/keymaps/default/readme.md @@ -0,0 +1,3 @@ +# Default Potato65 Hotswap Layout + +This is the default layout for the Potato65 Hotswap keyboard. Largely based on the KBD67 layout. diff --git a/keyboards/buildakb/potato65s/keymaps/via/keymap.c b/keyboards/buildakb/potato65s/keymaps/via/keymap.c new file mode 100644 index 000000000000..ad49cf5a4d13 --- /dev/null +++ b/keyboards/buildakb/potato65s/keymaps/via/keymap.c @@ -0,0 +1,54 @@ +/* Copyright 2021 Maelkk + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _FN1, + _FN2, + _FN3 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_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_BSPC, KC_DEL, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_FN1] = LAYOUT_all( + KC_TILD, 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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MUTE, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT + ), + [_FN2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [_FN3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; \ No newline at end of file diff --git a/keyboards/buildakb/potato65s/keymaps/via/readme.md b/keyboards/buildakb/potato65s/keymaps/via/readme.md new file mode 100644 index 000000000000..4e3ddd1228a5 --- /dev/null +++ b/keyboards/buildakb/potato65s/keymaps/via/readme.md @@ -0,0 +1,3 @@ +# Default Potato65 Layout + +This is the VIA layout for the Potato65 Hotswap Keyboard. Largely based on the KBD67 layout. diff --git a/keyboards/xd84/keymaps/via/rules.mk b/keyboards/buildakb/potato65s/keymaps/via/rules.mk similarity index 100% rename from keyboards/xd84/keymaps/via/rules.mk rename to keyboards/buildakb/potato65s/keymaps/via/rules.mk diff --git a/keyboards/buildakb/potato65s/potato65s.c b/keyboards/buildakb/potato65s/potato65s.c new file mode 100644 index 000000000000..0d865641283a --- /dev/null +++ b/keyboards/buildakb/potato65s/potato65s.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Maelkk + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "potato65s.h" diff --git a/keyboards/buildakb/potato65s/potato65s.h b/keyboards/buildakb/potato65s/potato65s.h new file mode 100644 index 000000000000..739a01af2232 --- /dev/null +++ b/keyboards/buildakb/potato65s/potato65s.h @@ -0,0 +1,33 @@ +/* Copyright 2021 Maelkk + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_all( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K212, K014, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K213, K214, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K312, K313, K314, \ + K400, K401, K402, K403, K409, K410, K412, K413, K414 \ +) { \ + { 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, K114 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, KC_NO, K312, K313, K314 }, \ + { K400, K401, K402, K403, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K409, K410, KC_NO, K412, K413, K414 } \ +} diff --git a/keyboards/buildakb/potato65s/readme.md b/keyboards/buildakb/potato65s/readme.md new file mode 100644 index 000000000000..f24b97ca637c --- /dev/null +++ b/keyboards/buildakb/potato65s/readme.md @@ -0,0 +1,24 @@ +# Potato65 Solderable Keyboard + +![Potato65 Solderable](https://i.imgur.com/ysAGZCmh.jpg) + +A solderable gasket mount stacked acrylic 65% keyboard + +- Keyboard Maintainer: [Maelkk](https://github.com/Aeonstrife) +- Hardware Supported: Potato65 Keyboard +- Hardware Availability: Private Group-Buy + +Make example for this keyboard (after setting up your build environment): + + make buildakb/potato65s:default + +Flashing example for this keyboard: + + make buildakb/potato65s:default:flash + +To reset into bootloader mode: + +While plugged in, press the RESET switch located on the back of the pcb. +The keyboard should now be in bootloader mode. + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). \ No newline at end of file diff --git a/keyboards/buildakb/potato65s/rules.mk b/keyboards/buildakb/potato65s/rules.mk new file mode 100644 index 000000000000..4572decc82e2 --- /dev/null +++ b/keyboards/buildakb/potato65s/rules.mk @@ -0,0 +1,19 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 keyboard RGB underglow diff --git a/keyboards/business_card/alpha/alpha.c b/keyboards/business_card/alpha/alpha.c index 3d2d1de77905..1c2936e1574a 100644 --- a/keyboards/business_card/alpha/alpha.c +++ b/keyboards/business_card/alpha/alpha.c @@ -14,38 +14,3 @@ * along with this program. If not, see . */ #include "alpha.h" - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -/* - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - -*/ diff --git a/keyboards/business_card/alpha/config.h b/keyboards/business_card/alpha/config.h index b9bb67f05f47..81bb16161f4e 100644 --- a/keyboards/business_card/alpha/config.h +++ b/keyboards/business_card/alpha/config.h @@ -115,59 +115,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -186,26 +133,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/business_card/alpha/info.json b/keyboards/business_card/alpha/info.json index f0cd04efa28f..57f0fbd9a608 100644 --- a/keyboards/business_card/alpha/info.json +++ b/keyboards/business_card/alpha/info.json @@ -2,8 +2,6 @@ "keyboard_name": "business_card alpha", "url": "", "maintainer": "kakunpc", - "width": 3, - "height": 2, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/business_card/alpha/keymaps/default/keymap.c b/keyboards/business_card/alpha/keymaps/default/keymap.c index 4c7b4237c372..64070d23d28b 100644 --- a/keyboards/business_card/alpha/keymaps/default/keymap.c +++ b/keyboards/business_card/alpha/keymaps/default/keymap.c @@ -26,16 +26,12 @@ LAYOUT(/* Base */ ), }; -bool process_record_user(uint16_t keycode, keyrecord_t *record) { return true; } - -void led_set_user(uint8_t usb_led) {} - void keyboard_post_init_user(void) { rgblight_enable_noeeprom(); rgblight_mode_noeeprom(RGBLIGHT_MODE_RAINBOW_MOOD); } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE static void render_logo(void) { static const char PROGMEM qmk_logo[] = {0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, @@ -43,5 +39,8 @@ static void render_logo(void) { oled_write_P(qmk_logo, false); } -void oled_task_user(void) { render_logo(); } +bool oled_task_user(void) { + render_logo(); + return false; +} #endif diff --git a/keyboards/business_card/alpha/rules.mk b/keyboards/business_card/alpha/rules.mk index 19083c8c473b..56c809277cab 100644 --- a/keyboards/business_card/alpha/rules.mk +++ b/keyboards/business_card/alpha/rules.mk @@ -2,31 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 -OLED_DRIVER_ENABLE = yes +AUDIO_ENABLE = no # Audio output +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/business_card/beta/beta.c b/keyboards/business_card/beta/beta.c index c43be6c16ad5..7a9aa1b9bd61 100644 --- a/keyboards/business_card/beta/beta.c +++ b/keyboards/business_card/beta/beta.c @@ -14,38 +14,3 @@ * along with this program. If not, see . */ #include "beta.h" - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -/* - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - -*/ diff --git a/keyboards/business_card/beta/config.h b/keyboards/business_card/beta/config.h index 1db0abbc90ab..9e4e8da96380 100644 --- a/keyboards/business_card/beta/config.h +++ b/keyboards/business_card/beta/config.h @@ -115,59 +115,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -186,26 +133,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/business_card/beta/info.json b/keyboards/business_card/beta/info.json index 62f2797a75e5..58f2a5b20d29 100644 --- a/keyboards/business_card/beta/info.json +++ b/keyboards/business_card/beta/info.json @@ -2,8 +2,6 @@ "keyboard_name": "business_card beta", "url": "", "maintainer": "kakunpc", - "width": 2, - "height": 3, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/business_card/beta/keymaps/default/keymap.c b/keyboards/business_card/beta/keymaps/default/keymap.c index c317a236c43d..8d2413477eb6 100644 --- a/keyboards/business_card/beta/keymaps/default/keymap.c +++ b/keyboards/business_card/beta/keymaps/default/keymap.c @@ -25,20 +25,12 @@ LAYOUT(/* Base */ ), }; -bool process_record_user(uint16_t keycode, keyrecord_t *record) { return true; } - void matrix_init_user(void) { rgblight_enable_noeeprom(); rgblight_mode_noeeprom(RGBLIGHT_MODE_RAINBOW_MOOD); } -void matrix_scan_user(void) {} - -void led_set_user(uint8_t usb_led) {} - -void keyboard_post_init_user(void) {} - -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE static void render_logo(void) { static const char PROGMEM qmk_logo[] = {0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, @@ -46,5 +38,8 @@ static void render_logo(void) { oled_write_P(qmk_logo, false); } -void oled_task_user(void) { render_logo(); } +bool oled_task_user(void) { + render_logo(); + return false; +} #endif diff --git a/keyboards/business_card/beta/rules.mk b/keyboards/business_card/beta/rules.mk index 19083c8c473b..56c809277cab 100644 --- a/keyboards/business_card/beta/rules.mk +++ b/keyboards/business_card/beta/rules.mk @@ -2,31 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 -OLED_DRIVER_ENABLE = yes +AUDIO_ENABLE = no # Audio output +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/business_card/business_card.c b/keyboards/business_card/business_card.c index a57c004570b7..01beb28220ff 100644 --- a/keyboards/business_card/business_card.c +++ b/keyboards/business_card/business_card.c @@ -14,38 +14,3 @@ * along with this program. If not, see . */ #include "business_card.h" - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -/* - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - -*/ diff --git a/keyboards/business_card/rules.mk b/keyboards/business_card/rules.mk index 5989077345fa..8fffa6d1cee7 100644 --- a/keyboards/business_card/rules.mk +++ b/keyboards/business_card/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output DEFAULT_FOLDER = business_card/beta diff --git a/keyboards/butterstick/butterstick.c b/keyboards/butterstick/butterstick.c index 431e93fa12ed..3bcbcbe8b419 100644 --- a/keyboards/butterstick/butterstick.c +++ b/keyboards/butterstick/butterstick.c @@ -15,20 +15,6 @@ */ #include "butterstick.h" -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -/* - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} -*/ - void matrix_scan_kb(void) { #ifdef DEBUG_MATRIX for (uint8_t c = 0; c < MATRIX_COLS; c++) @@ -38,19 +24,3 @@ void matrix_scan_kb(void) { matrix_scan_user(); } - -/* -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - -*/ diff --git a/keyboards/butterstick/info.json b/keyboards/butterstick/info.json index 6e3f16479478..6bfd58e5943d 100644 --- a/keyboards/butterstick/info.json +++ b/keyboards/butterstick/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Butter Stick", "url": "", "maintainer": "germ", - "width": 10, - "height": 2, "layouts": { "LAYOUT_butter": { "layout": [ diff --git a/keyboards/butterstick/rules.mk b/keyboards/butterstick/rules.mk index b73ed405ad60..60ec14df81e8 100644 --- a/keyboards/butterstick/rules.mk +++ b/keyboards/butterstick/rules.mk @@ -2,13 +2,6 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu MOUSEKEY_ENABLE = yes # Mouse keys @@ -20,4 +13,4 @@ STENO_ENABLE = yes # Needed for chording OPT_DEFS += -DONLYQWERTY -DDEBUG_MATRIX SRC += sten.c -EXTRAFLAGS += -flto +LTO_ENABLE = yes diff --git a/keyboards/c39/config.h b/keyboards/c39/config.h index fb7172c57e8c..409023f1fa41 100755 --- a/keyboards/c39/config.h +++ b/keyboards/c39/config.h @@ -57,18 +57,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - /* * Feature disable options * These options are also useful to firmware size reduction. diff --git a/keyboards/c39/info.json b/keyboards/c39/info.json index 4ed7f018c8d9..3600570ddefe 100755 --- a/keyboards/c39/info.json +++ b/keyboards/c39/info.json @@ -2,11 +2,9 @@ "keyboard_name": "C39", "url": "", "maintainer": "Space Cat", - "width": 13.25, - "height": 3, "layouts": { "LAYOUT": { "layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "y":0}, {"label":"Back", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"M1", "x":11.25, "y":0}, {"label":"M2", "x":12.25, "y":0}, {"label":"A", "x":0, "y":1}, {"label":"S", "x":1, "y":1}, {"label":"D", "x":2, "y":1}, {"label":"F", "x":3, "y":1}, {"label":"G", "x":4, "y":1}, {"label":"Enter", "x":5, "y":1}, {"label":"H", "x":6, "y":1}, {"label":"J", "x":7, "y":1}, {"label":"K", "x":8, "y":1}, {"label":"L", "x":9, "y":1}, {"label":";", "x":10, "y":1}, {"label":"M3", "x":11.25, "y":1}, {"label":"M4", "x":12.25, "y":1}, {"label":"Z", "x":0, "y":2}, {"label":"X", "x":1, "y":2}, {"label":"C", "x":2, "y":2}, {"label":"V", "x":3, "y":2}, {"label":"B", "x":4, "y":2}, {"label":"Fn", "x":5, "y":2}, {"label":"N", "x":6, "y":2}, {"label":"M", "x":7, "y":2}, {"label":"<", "x":8, "y":2}, {"label":">", "x":9, "y":2}, {"label":"?", "x":10, "y":2}, {"label":"M5", "x":11.25, "y":2}, {"label":"M6", "x":12.25, "y":2}] } } -} \ No newline at end of file +} diff --git a/keyboards/c39/keymaps/drashna/keymap.c b/keyboards/c39/keymaps/drashna/keymap.c index 88065263cfcb..6fd1f1298449 100755 --- a/keyboards/c39/keymaps/drashna/keymap.c +++ b/keyboards/c39/keymaps/drashna/keymap.c @@ -39,54 +39,29 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT_base_wrapper( + [_DEFAULT_LAYER_1] = LAYOUT_base_wrapper( _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, _________________QWERTY_L3_________________, _________________QWERTY_R3_________________ ), - [_COLEMAK] = LAYOUT_base_wrapper( + [_DEFAULT_LAYER_2] = LAYOUT_base_wrapper( + ______________COLEMAK_MOD_DH_L1____________, ______________COLEMAK_MOD_DH_R1____________, + ______________COLEMAK_MOD_DH_L2____________, ______________COLEMAK_MOD_DH_R2____________, + ______________COLEMAK_MOD_DH_L3____________, ______________COLEMAK_MOD_DH_R3____________ + ), + [_DEFAULT_LAYER_3] = LAYOUT_base_wrapper( _________________COLEMAK_L1________________, _________________COLEMAK_R1________________, _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, _________________COLEMAK_L3________________, _________________COLEMAK_R3________________ ), - [_DVORAK] = LAYOUT_base_wrapper( + [_DEFAULT_LAYER_4] = LAYOUT_base_wrapper( _________________DVORAK_L1_________________, _________________DVORAK_R1_________________, _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, _________________DVORAK_L3_________________, _________________DVORAK_R3_________________ ), - [_WORKMAN] = LAYOUT_base_wrapper( - _________________WORKMAN_L1________________, _________________WORKMAN_R1________________, - _________________WORKMAN_L2________________, _________________WORKMAN_R2________________, - _________________WORKMAN_L3________________, _________________WORKMAN_R3________________ - ), - - [_NORMAN] = LAYOUT_base_wrapper( - _________________NORMAN_L1_________________, _________________NORMAN_L1_________________, - _________________NORMAN_L2_________________, _________________NORMAN_R2_________________, - _________________NORMAN_L3_________________, _________________NORMAN_R3_________________ - ), - - [_MALTRON] = LAYOUT_base_wrapper( - _________________MALTRON_L1________________, _________________MALTRON_R1________________, - _________________MALTRON_L2________________, _________________MALTRON_R2________________, - _________________MALTRON_L3________________, _________________MALTRON_R3________________ - ), - - [_EUCALYN] = LAYOUT_base_wrapper( - _________________EUCALYN_L1________________, _________________EUCALYN_R1________________, - _________________EUCALYN_L2________________, _________________EUCALYN_R2________________, - _________________EUCALYN_L3________________, _________________EUCALYN_R3________________ - ), - - [_CARPLAX] = LAYOUT_base_wrapper( - _____________CARPLAX_QFMLWY_L1_____________, _____________CARPLAX_QFMLWY_R1_____________, - _____________CARPLAX_QFMLWY_L2_____________, _____________CARPLAX_QFMLWY_R2_____________, - _____________CARPLAX_QFMLWY_L3_____________, _____________CARPLAX_QFMLWY_R3_____________ - ), - [_LOWER] = LAYOUT_wrapper( KC_TILD, _________________LOWER_L1__________________, _______, _________________LOWER_R1__________________, KC_BSPC, KC_DEL, _________________LOWER_L2__________________, _______, _________________LOWER_R2__________________, KC_PIPE, diff --git a/keyboards/c39/keymaps/drashna/rules.mk b/keyboards/c39/keymaps/drashna/rules.mk index a11acc240fe2..a6575bbd93b0 100644 --- a/keyboards/c39/keymaps/drashna/rules.mk +++ b/keyboards/c39/keymaps/drashna/rules.mk @@ -5,22 +5,15 @@ BOARD = QMK_PROTON_C # Bootloader selection BOOTLOADER = stm32-dfu -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) -COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE = yes # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = yes # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = yes # Audio output on port C6 -RGBLIGHT_ENABLE = yes # RGB Enable / Disable +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes +EXTRAKEY_ENABLE = yes +CONSOLE_ENABLE = yes +COMMAND_ENABLE = yes +NKRO_ENABLE = yes +AUDIO_ENABLE = yes +UNICODE_ENABLE = yes +HAPTIC_ENABLE = yes +HAPTIC_DRIVER = SOLENOID RGBLIGHT_STARTUP_ANIMATION = yes - -HAPTIC_ENABLE = SOLENOID diff --git a/keyboards/c39/keymaps/kuchosauronad0/rules.mk b/keyboards/c39/keymaps/kuchosauronad0/rules.mk index ac7c77dd4608..a6304cdf4afc 100644 --- a/keyboards/c39/keymaps/kuchosauronad0/rules.mk +++ b/keyboards/c39/keymaps/kuchosauronad0/rules.mk @@ -1,5 +1,5 @@ BOOTLOADER = caterina -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/c39/rules.mk b/keyboards/c39/rules.mk index ed3554aac4bb..42a56ef39b52 100755 --- a/keyboards/c39/rules.mk +++ b/keyboards/c39/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # RGB Enable / Disable diff --git a/keyboards/caffeinated/serpent65/info.json b/keyboards/caffeinated/serpent65/info.json index ebcf9345e5d5..b1511c51cf6d 100644 --- a/keyboards/caffeinated/serpent65/info.json +++ b/keyboards/caffeinated/serpent65/info.json @@ -3,8 +3,6 @@ "keyboard_folder": "caffeinated/serpent65", "url": "https", "maintainer": "jrfhoutx", - "width": 16.25, - "height": 5.25, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/caffeinated/serpent65/rules.mk b/keyboards/caffeinated/serpent65/rules.mk index 612d7e4ccb77..3b1d550b6087 100644 --- a/keyboards/caffeinated/serpent65/rules.mk +++ b/keyboards/caffeinated/serpent65/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/canary/canary60rgb/canary60rgb.c b/keyboards/canary/canary60rgb/canary60rgb.c new file mode 100644 index 000000000000..b37a88b32f06 --- /dev/null +++ b/keyboards/canary/canary60rgb/canary60rgb.c @@ -0,0 +1,117 @@ +/* Copyright 2021 CANARYTEAM + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #include "canary60rgb.h" + +#ifdef RGB_MATRIX_ENABLE +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { + { 0, J_14, K_14, L_14 }, + { 0, J_13, K_13, L_13 }, + { 0, J_12, K_12, L_12 }, + { 0, J_11, K_11, L_11 }, + { 0, J_10, K_10, L_10 }, + { 0, J_9, K_9, L_9 }, + { 0, J_8, K_8, L_8 }, + { 0, J_7, K_7, L_7 }, + { 0, J_6, K_6, L_6 }, + { 0, J_5, K_5, L_5 }, + { 0, J_4, K_4, L_4 }, + { 0, J_3, K_3, L_3 }, + { 0, J_2, K_2, L_2 }, + { 0, J_1, K_1, L_1 }, + + { 0, G_14, H_14, I_14 }, + { 0, G_13, H_13, I_13 }, + { 0, G_12, H_12, I_12 }, + { 0, G_11, H_11, I_11 }, + { 0, G_10, H_10, I_10 }, + { 0, G_9, H_9, I_9 }, + { 0, G_8, H_8, I_8 }, + { 0, G_7, H_7, I_7 }, + { 0, G_6, H_6, I_6 }, + { 0, G_5, H_5, I_5 }, + { 0, G_4, H_4, I_4 }, + { 0, G_3, H_3, I_3 }, + { 0, G_2, H_2, I_2 }, + { 0, G_1, H_1, I_1 }, + + { 0, D_14, E_14, F_14 }, + { 0, D_12, E_12, F_12 }, + { 0, D_11, E_11, F_11 }, + { 0, D_10, E_10, F_10 }, + { 0, D_9, E_9, F_9 }, + { 0, D_8, E_8, F_8 }, + { 0, D_7, E_7, F_7 }, + { 0, D_6, E_6, F_6 }, + { 0, D_5, E_5, F_5 }, + { 0, D_4, E_4, F_4 }, + { 0, D_3, E_3, F_3 }, + { 0, D_2, E_2, F_2 }, + { 0, D_1, E_1, F_1 }, + + { 0, A_14, B_14, C_14 }, + { 0, A_13, B_13, C_13 }, + { 0, A_11, B_11, C_11 }, + { 0, A_10, B_10, C_10 }, + { 0, A_9, B_9, C_9 }, + { 0, A_8, B_8, C_8 }, + { 0, A_7, B_7, C_7 }, + { 0, A_6, B_6, C_6 }, + { 0, A_5, B_5, C_5 }, + { 0, A_4, B_4, C_4 }, + { 0, A_3, B_3, C_3 }, + { 0, A_2, B_2, C_2 }, + { 0, A_1, B_1, C_1 }, + + { 0, A_15, B_15, C_15 }, + { 0, D_13, E_13, F_13 }, + { 0, A_12, B_12, C_12 }, + { 0, D_15, E_15, F_15 }, + { 0, G_15, H_15, I_15 }, + { 0, A_16, B_16, C_16 }, + { 0, D_16, E_16, F_16 }, + { 0, G_16, H_16, I_16 }, + { 0, J_16, K_16, L_16 } +}; + +led_config_t g_led_config = { + { + { 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 }, + { 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14 }, + { 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, NO_LED, 28 }, + { 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, NO_LED, 41 }, + { 62, 61, 60, NO_LED, NO_LED, 59, NO_LED, NO_LED, 58, 57, 56, 55, NO_LED, 54 } + }, { + { 216, 0 }, { 192, 0 }, { 176, 0 }, { 160, 0 }, { 144, 0 }, { 128, 0 }, { 112, 0 }, { 96, 0 }, { 80, 0 }, { 64, 0 }, { 48, 0 }, { 32, 0 }, { 16, 0 }, { 0, 0 }, + { 220, 16 }, { 200, 16 }, { 184, 16 }, { 168, 16 }, { 152, 16 }, { 136, 16 }, { 120, 16 }, { 104, 16 }, { 88, 16 }, { 72, 16 }, { 56, 16 }, { 40, 16 }, { 24, 16 }, { 4, 16 }, + { 214, 32 }, { 188, 32 }, { 172, 32 }, { 156, 32 }, { 140, 32 }, { 124, 32 }, { 108, 32 }, { 92, 32 }, { 76, 32 }, { 60, 32 }, { 44, 32 }, { 28, 32 }, { 6, 32 }, + { 224, 48 }, { 208, 48 }, { 186, 48 }, { 164, 48 }, { 148, 48 }, { 132, 48 }, { 116, 48 }, { 100, 48 }, { 84, 48 }, { 68, 48 }, { 52, 48 }, { 36, 48 }, { 9, 48 }, + { 224, 64 }, { 208, 64 }, { 192, 64 }, { 176, 64 }, { 160, 64 }, { 102, 64 }, { 42, 64 }, { 22, 64 }, { 2, 64 } + }, { + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 1, 1, 1, 1, 1, 4, 1, 1, 1 + } +}; + +__attribute__ ((weak)) +void rgb_matrix_indicators_user(void) { + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color(40, 0xFF, 0xFF, 0xFF); + } +} +#endif diff --git a/keyboards/canary/canary60rgb/canary60rgb.h b/keyboards/canary/canary60rgb/canary60rgb.h new file mode 100644 index 000000000000..59c677c5de49 --- /dev/null +++ b/keyboards/canary/canary60rgb/canary60rgb.h @@ -0,0 +1,34 @@ +/* Copyright 2021 CANARYTEAM + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #pragma once + +#include "quantum.h" + +#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, K3B, K3D, \ + K40, K41, K42, K45, K48, K49, K4A, K4B, 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, K3B, XXX, K3D }, \ + { K40, K41, K42, XXX, XXX, K45, XXX, XXX, K48, K49, K4A, K4B, XXX, K4D } \ +} diff --git a/keyboards/canary/canary60rgb/config.h b/keyboards/canary/canary60rgb/config.h new file mode 100644 index 000000000000..3666ea194ad7 --- /dev/null +++ b/keyboards/canary/canary60rgb/config.h @@ -0,0 +1,18 @@ +/* Copyright 2021 CANARYTEAM + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #pragma once + +#include "config_common.h" diff --git a/keyboards/canary/canary60rgb/info.json b/keyboards/canary/canary60rgb/info.json new file mode 100644 index 000000000000..e8cc4c0fe592 --- /dev/null +++ b/keyboards/canary/canary60rgb/info.json @@ -0,0 +1,78 @@ +{ + "keyboard_name": "CANARY60RGB", + "url": "", + "maintainer": "tuananhnguyen204", + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3, "w":1.75}, + {"x":13, "y":3}, + {"x":14, "y":3}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4}, + {"x":11, "y":4}, + {"x":12, "y":4}, + {"x":13, "y":4}, + {"x":14, "y":4} + ] + } + } +} diff --git a/keyboards/canary/canary60rgb/keymaps/default/keymap.c b/keyboards/canary/canary60rgb/keymaps/default/keymap.c new file mode 100644 index 000000000000..150b18764546 --- /dev/null +++ b/keyboards/canary/canary60rgb/keymaps/default/keymap.c @@ -0,0 +1,54 @@ +/* Copyright 2021 CANARYTEAM + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), KC_UP, LT(2, KC_DEL), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + _______, _______, KC_UP, _______, _______, _______, KC_CALC, _______, KC_INS, _______, KC_PSCR, KC_SLCK, KC_PAUS, RESET, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, EEP_RST, + _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, KC_END, KC_PGDN, KC_VOLU, KC_MUTE, + _______, _______, TO(3), _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT + ), + [2] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, RESET, + _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPI, RGB_SPD, _______, _______, EEP_RST, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT( + KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_PPLS, _______, _______, _______, _______, KC_PSLS, KC_PAST, KC_PMNS, KC_PPLS, _______, + _______, KC_P7, KC_P8, KC_P9, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, _______, _______, TO(0), + _______, KC_P4, KC_P5, KC_P6, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, KC_PENT, + _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______, + _______, KC_P0, KC_PDOT, KC_PENT, KC_P0, KC_PDOT, _______, _______, _______ + ), + [4] = LAYOUT( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_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, + CTL_T(KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), KC_UP, LT(2, KC_DEL), + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RALT, TO(0), KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/keyboards/canary/canary60rgb/keymaps/via/config.h b/keyboards/canary/canary60rgb/keymaps/via/config.h new file mode 100644 index 000000000000..452510f79b12 --- /dev/null +++ b/keyboards/canary/canary60rgb/keymaps/via/config.h @@ -0,0 +1,19 @@ +/* Copyright 2021 CANARYTEAM + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define DISABLE_RGB_MATRIX_PIXEL_FLOW diff --git a/keyboards/canary/canary60rgb/keymaps/via/keymap.c b/keyboards/canary/canary60rgb/keymaps/via/keymap.c new file mode 100644 index 000000000000..6bef543a160a --- /dev/null +++ b/keyboards/canary/canary60rgb/keymaps/via/keymap.c @@ -0,0 +1,54 @@ +/* Copyright 2021 CANARYTEAM + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), KC_UP, LT(2, KC_DEL), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + _______, _______, KC_UP, _______, _______, _______, KC_CALC, _______, KC_INS, _______, KC_PSCR, KC_SLCK, KC_PAUS, RESET, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, EEP_RST, + _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, KC_END, KC_PGDN, KC_VOLU, KC_MUTE, + _______, _______, TO(3), _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT + ), + [2] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, RESET, + _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPI, RGB_SPD, _______, _______, EEP_RST, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT( + KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_PPLS, _______, _______, _______, _______, KC_PSLS, KC_PAST, KC_PMNS, KC_PPLS, _______, + _______, KC_P7, KC_P8, KC_P9, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, _______, _______, TO(0), + _______, KC_P4, KC_P5, KC_P6, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, KC_PENT, + _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______, + _______, KC_P0, KC_PDOT, KC_PENT, KC_P0, KC_PDOT, _______, _______, _______ + ), + [4] = LAYOUT( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_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, + CTL_T(KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), KC_UP, LT(2, KC_DEL), + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RALT, TO(0), KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/keyboards/phase_studio/titan65/keymaps/via/rules.mk b/keyboards/canary/canary60rgb/keymaps/via/rules.mk similarity index 100% rename from keyboards/phase_studio/titan65/keymaps/via/rules.mk rename to keyboards/canary/canary60rgb/keymaps/via/rules.mk diff --git a/keyboards/canary/canary60rgb/readme.md b/keyboards/canary/canary60rgb/readme.md new file mode 100644 index 000000000000..7abceb07f04e --- /dev/null +++ b/keyboards/canary/canary60rgb/readme.md @@ -0,0 +1,17 @@ +# Canary60RGB + +![canary60rgb1](https://github.com/AnthonyNguyen168/keyboards/blob/main/2.jpg) +![canary60rgb2](https://github.com/AnthonyNguyen168/keyboards/blob/main/3.jpg) + +A hotswap 60% RGB keyboard. + +* Keyboard Maintainer: [tuananhnguyen204](https://github.com/AnthonyNguyen168) (tuananhnguyen204@gmail.com) +* Hardware Supported: CanaryTeam Canary60RGB V1 +* Hardware Availability: [CanaryTeam](https://www.facebook.com/CanaryTeam/), [Shopee](https://shopee.vn/search?keyword=canary60rgb) +* To reset the board into bootloader mode: press Reset hardware button or hold FN + Backslash (layer 1 RESET key) + + +Make example for this keyboard (after setting up your build environment): + make canary/canary60rgb/v1:default # AVR (ATmega32U4) + +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/canary/canary60rgb/v1/config.h b/keyboards/canary/canary60rgb/v1/config.h new file mode 100644 index 000000000000..303bde7e77ac --- /dev/null +++ b/keyboards/canary/canary60rgb/v1/config.h @@ -0,0 +1,94 @@ +/* Copyright 2021 CANARYTEAM + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4341 +#define PRODUCT_ID 0x0621 +#define DEVICE_VER 0x0001 +#define MANUFACTURER CANARY +#define PRODUCT CANARY60RGB + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/* + * 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 { F5, F4, F1, B3, B2 } +#define MATRIX_COL_PINS { C7, F7, F6, F0, B0, B1, B4, D7, D6, D4, D5, D3, D2, B7 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +#define RGB_DI_PIN B6 +#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 20 +# define RGBLIGHT_HUE_STEP 8 +# define RGBLIGHT_SAT_STEP 8 +# define RGBLIGHT_VAL_STEP 8 +# define RGBLIGHT_SLEEP +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +#ifdef RGB_MATRIX_ENABLE +# define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended +# define RGB_MATRIX_KEYPRESSES +# define RGB_MATRIX_FRAMEBUFFER_EFFECTS +# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define DISABLE_RGB_MATRIX_BAND_SAT +# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define DISABLE_RGB_MATRIX_SPLASH +# define DISABLE_RGB_MATRIX_MULTISPLASH +# define DISABLE_RGB_MATRIX_SOLID_SPLASH +# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH +# define DRIVER_ADDR_1 0b1010000 +# define DRIVER_COUNT 1 +# define DRIVER_LED_TOTAL 63 +#endif \ No newline at end of file diff --git a/keyboards/canary/canary60rgb/v1/rules.mk b/keyboards/canary/canary60rgb/v1/rules.mk new file mode 100644 index 000000000000..2852bd661327 --- /dev/null +++ b/keyboards/canary/canary60rgb/v1/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 = 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 +# 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 +RGB_MATRIX_ENABLE = yes # Use RGB matrix +RGB_MATRIX_DRIVER = IS31FL3733 + +LTO_ENABLE = yes diff --git a/keyboards/cannonkeys/aella/aella.c b/keyboards/cannonkeys/aella/aella.c new file mode 100644 index 000000000000..862bf414519e --- /dev/null +++ b/keyboards/cannonkeys/aella/aella.c @@ -0,0 +1 @@ +#include "aella.h" diff --git a/keyboards/cannonkeys/aella/aella.h b/keyboards/cannonkeys/aella/aella.h new file mode 100644 index 000000000000..457c5111c160 --- /dev/null +++ b/keyboards/cannonkeys/aella/aella.h @@ -0,0 +1,19 @@ +#pragma once + +#include "quantum.h" + +#define LAYOUT_all( \ + K000, K001, K002, K003, K004, 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, K215, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K315, \ + K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K415, \ + K500, K502, K506, K510, K511, K512, K513, K515 \ +) { \ + { K000, K001, K002, K003, K004, KC_NO, 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, KC_NO, K215 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, KC_NO, K315 }, \ + { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, KC_NO, K415 }, \ + { K500, KC_NO, K502, KC_NO, KC_NO, KC_NO, K506, KC_NO, KC_NO, KC_NO, K510, K511, K512, K513, KC_NO, K515 } \ +} diff --git a/keyboards/cannonkeys/aella/chconf.h b/keyboards/cannonkeys/aella/chconf.h new file mode 100644 index 000000000000..645412d47c65 --- /dev/null +++ b/keyboards/cannonkeys/aella/chconf.h @@ -0,0 +1,31 @@ +/* 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/cannonkeys/obliterated75/chconf.h -r platforms/chibios/common/configs/chconf.h` + */ + +#pragma once + +#define CH_CFG_ST_FREQUENCY 10000 + +#define CH_CFG_OPTIMIZE_SPEED FALSE + +#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE + +#include_next + diff --git a/keyboards/cannonkeys/aella/config.h b/keyboards/cannonkeys/aella/config.h new file mode 100644 index 000000000000..b32880d40979 --- /dev/null +++ b/keyboards/cannonkeys/aella/config.h @@ -0,0 +1,63 @@ +/* +Copyright 2015 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xCA04 +#define PRODUCT_ID 0x0007 +#define DEVICE_VER 0x0001 +#define MANUFACTURER CannonKeys +#define PRODUCT Aella + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 16 + +#define MATRIX_COL_PINS { A5, B0, B1, B2, B10, A9, C13, B9, B8, B7, B6, B5, B4, B3, A15, A14 } +#define MATRIX_ROW_PINS { A13, B12, B11, B14, A8, A7 } +#define DIODE_DIRECTION COL2ROW + + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* 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 + +/* + * 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/cannonkeys/aella/info.json b/keyboards/cannonkeys/aella/info.json new file mode 100644 index 000000000000..806905428d21 --- /dev/null +++ b/keyboards/cannonkeys/aella/info.json @@ -0,0 +1,10 @@ +{ + "keyboard_name": "Aella", + "url": "https://www.alchemistkeyboards.com/aella", + "maintainer": "Alchemist Keyboards", + "layouts": { + "LAYOUT_all": { + "layout": [{"x":0, "y":0}, {"x":1.25, "y":0}, {"x":2.25, "y":0}, {"x":3.25, "y":0}, {"x":4.25, "y":0}, {"x":5.5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.75, "y":0}, {"x":10.75, "y":0}, {"x":11.75, "y":0}, {"x":12.75, "y":0}, {"x":14, "y":0}, {"x":15, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.5}, {"x":1.5, "y":2}, {"x":2.5, "y":2}, {"x":3.5, "y":2}, {"x":4.5, "y":2}, {"x":5.5, "y":2}, {"x":6.5, "y":2}, {"x":7.5, "y":2}, {"x":8.5, "y":2}, {"x":9.5, "y":2}, {"x":10.5, "y":2}, {"x":11.5, "y":2}, {"x":12.5, "y":2}, {"x":13.5, "y":2, "w":1.5}, {"x":15, "y":2}, {"x":0, "y":3, "w":1.75}, {"x":1.75, "y":3}, {"x":2.75, "y":3}, {"x":3.75, "y":3}, {"x":4.75, "y":3}, {"x":5.75, "y":3}, {"x":6.75, "y":3}, {"x":7.75, "y":3}, {"x":8.75, "y":3}, {"x":9.75, "y":3}, {"x":10.75, "y":3}, {"x":11.75, "y":3}, {"x":12.75, "y":3}, {"x":13.75, "y":3, "w":1.25}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4}, {"x":2.25, "y":4}, {"x":3.25, "y":4}, {"x":4.25, "y":4}, {"x":5.25, "y":4}, {"x":6.25, "y":4}, {"x":7.25, "y":4}, {"x":8.25, "y":4}, {"x":9.25, "y":4}, {"x":10.25, "y":4}, {"x":11.25, "y":4}, {"x":12.25, "y":4, "w":1.75}, {"x":14, "y":4}, {"x":15, "y":4}, {"x":0, "y":5, "w":1.5}, {"x":2.25, "y":5, "w":1.25}, {"x":3.5, "y":5, "w":6.25}, {"x":9.75, "y":5, "w":1.25}, {"x":11, "y":5, "w":1.25}, {"x":13, "y":5}, {"x":14, "y":5}, {"x":15, "y":5}] + } + } +} diff --git a/keyboards/cannonkeys/aella/keymaps/default/keymap.c b/keyboards/cannonkeys/aella/keymaps/default/keymap.c new file mode 100644 index 000000000000..4bd71e79f99c --- /dev/null +++ b/keyboards/cannonkeys/aella/keymaps/default/keymap.c @@ -0,0 +1,48 @@ +/* +Copyright 2012,2013 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +enum layer_names { + _BASE, + _FN1, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_BASE] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MPLY, KC_MUTE, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUBS, KC_ENT, KC_PGUP, + KC_LSFT, KC_NUHS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LALT, KC_SPC, MO(_FN1), KC_LGUI, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_FN1] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/cannonkeys/aella/keymaps/via/keymap.c b/keyboards/cannonkeys/aella/keymaps/via/keymap.c new file mode 100644 index 000000000000..3a204be6c516 --- /dev/null +++ b/keyboards/cannonkeys/aella/keymaps/via/keymap.c @@ -0,0 +1,71 @@ +/* +Copyright 2012,2013 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +enum layer_names { + _BASE, + _FN1, + _FN2, + _FN3 +}; + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_BASE] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MPLY, KC_MUTE, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUBS, KC_ENT, KC_PGUP, + KC_LSFT, KC_NUHS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LALT, KC_SPC, MO(_FN1), KC_LGUI, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_FN1] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS + ), + + + [_FN2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_FN3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) + +}; diff --git a/keyboards/xd87/keymaps/via/rules.mk b/keyboards/cannonkeys/aella/keymaps/via/rules.mk similarity index 100% rename from keyboards/xd87/keymaps/via/rules.mk rename to keyboards/cannonkeys/aella/keymaps/via/rules.mk diff --git a/keyboards/cannonkeys/aella/readme.md b/keyboards/cannonkeys/aella/readme.md new file mode 100644 index 000000000000..32015375659e --- /dev/null +++ b/keyboards/cannonkeys/aella/readme.md @@ -0,0 +1,10 @@ +# Alchemist Keyboards Aella + +* Keyboard Maintainer: [Andrew Kannan](https://github.com/awkannan) +* Hardware Supported: STM32F072CBT6 + +Make example for this keyboard (after setting up your build environment): + + make cannonkeys/aella: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/cannonkeys/aella/rules.mk b/keyboards/cannonkeys/aella/rules.mk new file mode 100644 index 000000000000..6b98e275f2e2 --- /dev/null +++ b/keyboards/cannonkeys/aella/rules.mk @@ -0,0 +1,25 @@ +# MCU name +MCU = STM32F072 + +# Bootloader selection +BOOTLOADER = stm32-dfu + +# Wildcard to allow APM32 MCU +DFU_SUFFIX_ARGS = -v FFFF -p FFFF + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# 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 + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/cannonkeys/an_c/info.json b/keyboards/cannonkeys/an_c/info.json index 712ce269e198..12d20010b3d3 100644 --- a/keyboards/cannonkeys/an_c/info.json +++ b/keyboards/cannonkeys/an_c/info.json @@ -2,8 +2,6 @@ "keyboard_name": "AN-C", "url": "https://cannonkeys.com", "maintainer": "awkannan", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_ansi": { "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}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"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/cannonkeys/an_c/rules.mk b/keyboards/cannonkeys/an_c/rules.mk index 55e03edeaedb..44d260b4d8a5 100644 --- a/keyboards/cannonkeys/an_c/rules.mk +++ b/keyboards/cannonkeys/an_c/rules.mk @@ -12,14 +12,12 @@ DFU_SUFFIX_ARGS = -v FFFF -p FFFF # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 BACKLIGHT_ENABLE = yes RGBLIGHT_ENABLE = yes WS2812_DRIVER = spi diff --git a/keyboards/cannonkeys/atlas/info.json b/keyboards/cannonkeys/atlas/info.json index 10d952973007..123b0cd11896 100644 --- a/keyboards/cannonkeys/atlas/info.json +++ b/keyboards/cannonkeys/atlas/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Atlas", "url": "https://cannonkeys.com", "maintainer": "awkannan", - "width": 12, - "height": 5, "layouts": { "LAYOUT_ortho_5x12": { "layout": [ diff --git a/keyboards/cannonkeys/atlas/rules.mk b/keyboards/cannonkeys/atlas/rules.mk index 0f13950c63f3..e84f4250b504 100644 --- a/keyboards/cannonkeys/atlas/rules.mk +++ b/keyboards/cannonkeys/atlas/rules.mk @@ -1,4 +1,4 @@ -# MCU Name +# MCU name MCU = STM32F072 # Bootloader selection @@ -6,14 +6,12 @@ BOOTLOADER = stm32-dfu # Build Options # comment out to disable the options. -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 BACKLIGHT_ENABLE = no RGBLIGHT_ENABLE = yes WS2812_DRIVER = spi diff --git a/keyboards/cannonkeys/atlas_alps/info.json b/keyboards/cannonkeys/atlas_alps/info.json index d5d6003fc7cc..278b48b831dc 100644 --- a/keyboards/cannonkeys/atlas_alps/info.json +++ b/keyboards/cannonkeys/atlas_alps/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Atlas_Alps", "url": "https://geekhack.org/index.php?topic=106683.msg2975081#msg2975081", "maintainer": "Nasp", - "width": 12, - "height": 5, "layouts": { "LAYOUT_ortho_5x12": { "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":"Tab", "x":0, "y":1}, {"label":"Q", "x":1, "y":1}, {"label":"W", "x":2, "y":1}, {"label":"E", "x":3, "y":1}, {"label":"R", "x":4, "y":1}, {"label":"T", "x":5, "y":1}, {"label":"Y", "x":6, "y":1}, {"label":"U", "x":7, "y":1}, {"label":"I", "x":8, "y":1}, {"label":"O", "x":9, "y":1}, {"label":"P", "x":10, "y":1}, {"label":"Back Space", "x":11, "y":1}, {"label":"Esc", "x":0, "y":2}, {"label":"A", "x":1, "y":2}, {"label":"S", "x":2, "y":2}, {"label":"D", "x":3, "y":2}, {"label":"F", "x":4, "y":2}, {"label":"G", "x":5, "y":2}, {"label":"H", "x":6, "y":2}, {"label":"J", "x":7, "y":2}, {"label":"K", "x":8, "y":2}, {"label":"L", "x":9, "y":2}, {"label":";", "x":10, "y":2}, {"label":"'", "x":11, "y":2}, {"label":"Shift", "x":0, "y":3}, {"label":"Z", "x":1, "y":3}, {"label":"X", "x":2, "y":3}, {"label":"C", "x":3, "y":3}, {"label":"V", "x":4, "y":3}, {"label":"B", "x":5, "y":3}, {"label":"N", "x":6, "y":3}, {"label":"M", "x":7, "y":3}, {"label":",", "x":8, "y":3}, {"label":".", "x":9, "y":3}, {"label":"/", "x":10, "y":3}, {"label":"Return", "x":11, "y":3}, {"label":"Caps Lock", "x":0, "y":4}, {"label":"Ctrl", "x":1, "y":4}, {"label":"Alt", "x":2, "y":4}, {"label":"Super", "x":3, "y":4}, {"label":"⇓", "x":4, "y":4}, {"x":5, "y":4}, {"x":6, "y":4}, {"label":"⇑", "x":7, "y":4}, {"label":"←", "x":8, "y":4}, {"label":"↓", "x":9, "y":4}, {"label":"↑", "x":10, "y":4}, {"label":"→", "x":11, "y":4}] diff --git a/keyboards/cannonkeys/atlas_alps/rules.mk b/keyboards/cannonkeys/atlas_alps/rules.mk index 8fbc75bf22c4..79304fc07eab 100644 --- a/keyboards/cannonkeys/atlas_alps/rules.mk +++ b/keyboards/cannonkeys/atlas_alps/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LAYOUTS = ortho_5x12 diff --git a/keyboards/cannonkeys/balance/balance.c b/keyboards/cannonkeys/balance/balance.c new file mode 100644 index 000000000000..2bb4485521d8 --- /dev/null +++ b/keyboards/cannonkeys/balance/balance.c @@ -0,0 +1,27 @@ +/* +Copyright 2021 Andrew Kannan + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "balance.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/cannonkeys/balance/balance.h b/keyboards/cannonkeys/balance/balance.h new file mode 100644 index 000000000000..7d0ad50a3fbd --- /dev/null +++ b/keyboards/cannonkeys/balance/balance.h @@ -0,0 +1,33 @@ +/* +Copyright 2021 Andrew Kannan + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "quantum.h" + +#define LAYOUT_all( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, K017, K018, K019, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K115, K116, K117, K118, K119, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K215, K216, K217, K218, K219, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K315, K316, K317, K318, K319, \ + K400, K401, K402, K406, K410, K411, K412, K413, K415, K416, K417, K418, K419 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, K017, K018, K019 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, KC_NO, K115, K116, K117, K118, K119 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, KC_NO, K215, K216, K217, K218, K219 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO, KC_NO, K315, K316, K317, K318, K319 }, \ + { K400, K401, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, K410, K411, K412, K413, KC_NO, K415, K416, K417, K418, K419 } \ +} diff --git a/keyboards/cannonkeys/balance/chconf.h b/keyboards/cannonkeys/balance/chconf.h new file mode 100644 index 000000000000..9f541944f81d --- /dev/null +++ b/keyboards/cannonkeys/balance/chconf.h @@ -0,0 +1,31 @@ +/* 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/cannonkeys/db60/chconf.h -r platforms/chibios/common/configs/chconf.h` + */ + +#pragma once + +#define CH_CFG_ST_FREQUENCY 10000 + +#define CH_CFG_OPTIMIZE_SPEED FALSE + +#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE + +#include_next + diff --git a/keyboards/cannonkeys/balance/config.h b/keyboards/cannonkeys/balance/config.h new file mode 100644 index 000000000000..2cdf7d27a740 --- /dev/null +++ b/keyboards/cannonkeys/balance/config.h @@ -0,0 +1,71 @@ +/* +Copyright 2015 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xCA04 +#define PRODUCT_ID 0xBA77 +#define DEVICE_VER 0x0001 +#define MANUFACTURER CannonKeys +#define PRODUCT Balance + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 20 + +#define MATRIX_COL_PINS { B11, B10, B2, B1, B0, A7, A6, A5, A4, A3, A2, A1, F1, C15, B3, C14, C13, B9, B8, B7 } +#define MATRIX_ROW_PINS { B4, A15, A14, A0, F0 } +#define DIODE_DIRECTION COL2ROW + + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* 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 { B5 } +#define ENCODERS_PAD_B { B6 } + +#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/cannonkeys/balance/halconf.h b/keyboards/cannonkeys/balance/halconf.h new file mode 100644 index 000000000000..de8d8035d04b --- /dev/null +++ b/keyboards/cannonkeys/balance/halconf.h @@ -0,0 +1,31 @@ +/* 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/cannonkeys/db60/halconf.h -r platforms/chibios/common/configs/halconf.h` + */ + +#pragma once + +#define HAL_USE_I2C TRUE + +#define HAL_USE_PWM TRUE + +#define HAL_USE_SPI TRUE + +#include_next + diff --git a/keyboards/cannonkeys/balance/info.json b/keyboards/cannonkeys/balance/info.json new file mode 100644 index 000000000000..9aa79c51c617 --- /dev/null +++ b/keyboards/cannonkeys/balance/info.json @@ -0,0 +1,104 @@ +{ + "keyboard_name": "Balance", + "url": "https://cannonkeys.com", + "maintainer": "awkannan", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"~", "x":0, "y":0.25}, + {"label":"!", "x":1, "y":0.25}, + {"label":"@", "x":2, "y":0.25}, + {"label":"#", "x":3, "y":0.25}, + {"label":"$", "x":4, "y":0.25}, + {"label":"%", "x":5, "y":0.25}, + {"label":"^", "x":6, "y":0.25}, + {"label":"&", "x":7, "y":0.25}, + {"label":"*", "x":8, "y":0.25}, + {"label":"(", "x":9, "y":0.25}, + {"label":")", "x":10, "y":0.25}, + {"label":"_", "x":11, "y":0.25}, + {"label":"+", "x":12, "y":0.25}, + {"label":"Backspace", "x":13, "y":0.25}, + {"label":"Delete", "x":14, "y":0.25}, + {"label":"KNOB", "x":15.25, "y":0}, + {"label":"Num Lock", "x":16.5, "y":0.25}, + {"label":"/", "x":17.5, "y":0.25}, + {"label":"*", "x":18.5, "y":0.25}, + {"label":"-", "x":19.5, "y":0.25}, + + {"label":"Tab", "x":0, "y":1.25, "w":1.5}, + {"label":"Q", "x":1.5, "y":1.25}, + {"label":"W", "x":2.5, "y":1.25}, + {"label":"E", "x":3.5, "y":1.25}, + {"label":"R", "x":4.5, "y":1.25}, + {"label":"T", "x":5.5, "y":1.25}, + {"label":"Y", "x":6.5, "y":1.25}, + {"label":"U", "x":7.5, "y":1.25}, + {"label":"I", "x":8.5, "y":1.25}, + {"label":"O", "x":9.5, "y":1.25}, + {"label":"P", "x":10.5, "y":1.25}, + {"label":"{", "x":11.5, "y":1.25}, + {"label":"}", "x":12.5, "y":1.25}, + {"label":"|", "x":13.5, "y":1.25, "w":1.5}, + {"label":"PgUp", "x":15.25, "y":1.25}, + {"label":"7", "x":16.5, "y":1.25}, + {"label":"8", "x":17.5, "y":1.25}, + {"label":"9", "x":18.5, "y":1.25}, + {"label":"+", "x":19.5, "y":1.25}, + + {"label":"Caps Lock", "x":0, "y":2.25, "w":1.75}, + {"label":"A", "x":1.75, "y":2.25}, + {"label":"S", "x":2.75, "y":2.25}, + {"label":"D", "x":3.75, "y":2.25}, + {"label":"F", "x":4.75, "y":2.25}, + {"label":"G", "x":5.75, "y":2.25}, + {"label":"H", "x":6.75, "y":2.25}, + {"label":"J", "x":7.75, "y":2.25}, + {"label":"K", "x":8.75, "y":2.25}, + {"label":"L", "x":9.75, "y":2.25}, + {"label":":", "x":10.75, "y":2.25}, + {"label":"\"", "x":11.75, "y":2.25}, + {"label":"ISO ~", "x":12.75, "y":2.25}, + {"label":"Enter", "x":13.75, "y":2.25, "w":1.25}, + {"label":"PgDn", "x":15.25, "y":2.25}, + {"label":"4", "x":16.5, "y":2.25}, + {"label":"5", "x":17.5, "y":2.25}, + {"label":"6", "x":18.5, "y":2.25}, + {"label":"+", "x":19.5, "y":2.25}, + + {"label":"Shift", "x":0, "y":3.25, "w":1.25}, + {"label":"ISO |", "x":1.25, "y":3.25}, + {"label":"Z", "x":2.25, "y":3.25}, + {"label":"X", "x":3.25, "y":3.25}, + {"label":"C", "x":4.25, "y":3.25}, + {"label":"V", "x":5.25, "y":3.25}, + {"label":"B", "x":6.25, "y":3.25}, + {"label":"N", "x":7.25, "y":3.25}, + {"label":"M", "x":8.25, "y":3.25}, + {"label":"<", "x":9.25, "y":3.25}, + {"label":">", "x":10.25, "y":3.25}, + {"label":"?", "x":11.25, "y":3.25}, + {"label":"Shift", "x":12.25, "y":3.25, "w":2.75}, + {"label":"Up", "x":15.25, "y":3.5}, + {"label":"1", "x":16.5, "y":3.25}, + {"label":"2", "x":17.5, "y":3.25}, + {"label":"3", "x":18.5, "y":3.25}, + {"label":"Enter", "x":19.5, "y":3.25}, + + {"label":"Ctrl", "x":0, "y":4.25, "w":1.25}, + {"label":"Win", "x":1.25, "y":4.25}, + {"label":"Alt", "x":2.25, "y":4.25, "w":1.25}, + {"label":"Space", "x":3.5, "y":4.25, "w":7}, + {"label":"Alt", "x":10.5, "y":4.25, "w":1.25}, + {"label":"Fn", "x":11.75, "y":4.25}, + {"label":"Ctrl", "x":12.75, "y":4.25, "w":1.25}, + {"label":"Left", "x":14.25, "y":4.5}, + {"label":"Down", "x":15.25, "y":4.5}, + {"label":"Right", "x":16.25, "y":4.5}, + {"label":"0", "x":17.5, "y":4.25}, + {"label":".", "x":18.5, "y":4.25}, + {"label":"Enter", "x":19.5, "y":4.25} + ] + } + } +} diff --git a/keyboards/cannonkeys/balance/keymaps/default/keymap.c b/keyboards/cannonkeys/balance/keymaps/default/keymap.c new file mode 100644 index 000000000000..b1e507bc172f --- /dev/null +++ b/keyboards/cannonkeys/balance/keymaps/default/keymap.c @@ -0,0 +1,46 @@ +/* +Copyright 2012,2013 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +enum layer_names { + _BASE, + _FN1, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_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_BSPC, KC_DEL, KC_MPLY, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUBS, KC_ENT, KC_PGDN, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_NUHS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT + ), + + [_FN1] = LAYOUT_all( + RESET , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/cannonkeys/balance/keymaps/via/keymap.c b/keyboards/cannonkeys/balance/keymaps/via/keymap.c new file mode 100644 index 000000000000..ad5f009d4326 --- /dev/null +++ b/keyboards/cannonkeys/balance/keymaps/via/keymap.c @@ -0,0 +1,56 @@ +/* +Copyright 2012,2013 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +enum layer_names { + _BASE, + _FN1, + _FN2, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_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_BSPC, KC_DEL, KC_MPLY, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUBS, KC_ENT, KC_PGDN, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_NUHS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT + ), + + [_FN1] = LAYOUT_all( + RESET , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_FN2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; + diff --git a/keyboards/xd96/keymaps/via/rules.mk b/keyboards/cannonkeys/balance/keymaps/via/rules.mk similarity index 100% rename from keyboards/xd96/keymaps/via/rules.mk rename to keyboards/cannonkeys/balance/keymaps/via/rules.mk diff --git a/keyboards/cannonkeys/balance/mcuconf.h b/keyboards/cannonkeys/balance/mcuconf.h new file mode 100644 index 000000000000..f2212bd2c4f5 --- /dev/null +++ b/keyboards/cannonkeys/balance/mcuconf.h @@ -0,0 +1,34 @@ +/* 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/cannonkeys/db60/mcuconf.h -r platforms/chibios/GENERIC_STM32_F072XB/configs/mcuconf.h` + */ + +#pragma once + +#include_next + +#undef STM32_I2C_USE_I2C1 +#define STM32_I2C_USE_I2C1 TRUE + +#undef STM32_PWM_USE_TIM3 +#define STM32_PWM_USE_TIM3 TRUE + +#undef STM32_SPI_USE_SPI2 +#define STM32_SPI_USE_SPI2 TRUE + diff --git a/keyboards/cannonkeys/balance/readme.md b/keyboards/cannonkeys/balance/readme.md new file mode 100644 index 000000000000..eb06169845d0 --- /dev/null +++ b/keyboards/cannonkeys/balance/readme.md @@ -0,0 +1,10 @@ +# CannonKeys Balance + +* Keyboard Maintainer: [Andrew Kannan](https://github.com/awkannan) +* Hardware Supported: STM32F072CBT6 + +Make example for this keyboard (after setting up your build environment): + + make cannonkeys/balance: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/cannonkeys/balance/rules.mk b/keyboards/cannonkeys/balance/rules.mk new file mode 100644 index 000000000000..5bb5a8bd3efc --- /dev/null +++ b/keyboards/cannonkeys/balance/rules.mk @@ -0,0 +1,26 @@ +# MCU name +MCU = STM32F072 + +# Bootloader selection +BOOTLOADER = stm32-dfu + +# Wildcard to allow APM32 MCU +DFU_SUFFIX_ARGS = -p FFFF -v FFFF + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# 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/cannonkeys/bluepill/keyboard.c b/keyboards/cannonkeys/bluepill/keyboard.c deleted file mode 100644 index 6a8edd4a93f6..000000000000 --- a/keyboards/cannonkeys/bluepill/keyboard.c +++ /dev/null @@ -1,20 +0,0 @@ -#include -#include -#include "util.h" -#include "quantum.h" - -#ifdef BOARD_STM32_F103_STM32DUINO -#define LED_ON() do { palClearPad(GPIOC, 13) ;} while (0) -#define LED_OFF() do { palSetPad(GPIOC, 13); } while (0) -#define LED_TGL() do { palTogglePad(GPIOC, 13); } while (0) -#else -#define LED_ON() -#define LED_OFF() -#define LED_TGL() -#endif - -void matrix_init_kb(void){ - LED_ON(); - wait_ms(500); - LED_OFF(); -} diff --git a/keyboards/cannonkeys/bluepill/ws2812.c b/keyboards/cannonkeys/bluepill/ws2812.c deleted file mode 100644 index 779e905198de..000000000000 --- a/keyboards/cannonkeys/bluepill/ws2812.c +++ /dev/null @@ -1,133 +0,0 @@ -/* - * LEDDriver.c - * - * Created on: Aug 26, 2013 - * Author: Omri Iluz - */ - -#include "ws2812.h" -#include - -#define BYTES_FOR_LED_BYTE 4 -#define NB_COLORS 3 -#define BYTES_FOR_LED BYTES_FOR_LED_BYTE*NB_COLORS -#define DATA_SIZE BYTES_FOR_LED*NB_LEDS -#define RESET_SIZE 200 -#define PREAMBLE_SIZE 4 -// Define the spi your LEDs are plugged to here -#define WS2812_SPI SPID2 -// Define the number of LEDs you wish to control in your LED strip -#define NB_LEDS RGBLED_NUM - - #define LED_SPIRAL 1 - - static uint8_t txbuf[PREAMBLE_SIZE + DATA_SIZE + RESET_SIZE]; -static uint8_t get_protocol_eq(uint8_t data, int pos); - - /* - * This lib is meant to be used asynchronously, thus the colors contained in - * the txbuf will be sent in loop, so that the colors are always the ones you - * put in the table (the user thus have less to worry about) - * - * Since the data are sent via DMA, and the call to spiSend is a blocking one, - * the processor ressources are not used to much, if you see your program being - * too slow, simply add a: - * chThdSleepMilliseconds(x); - * after the spiSend, where you increment x untill you are satisfied with your - * program speed, another trick may be to lower this thread priority : your call - */ -static THD_WORKING_AREA(LEDS_THREAD_WA, 128); -static THD_FUNCTION(ledsThread, arg) { - (void) arg; - while(1){ - spiSend(&WS2812_SPI, PREAMBLE_SIZE + DATA_SIZE + RESET_SIZE, txbuf); - } -} - - static const SPIConfig spicfg = { - false, - NULL, - PORT_WS2812, - PIN_WS2812, - SPI_CR1_BR_1|SPI_CR1_BR_0 // baudrate : fpclk / 8 => 1tick is 0.32us (2.25 MHz) -}; - - /* - * Function used to initialize the driver. - * - * Starts by shutting off all the LEDs. - * Then gets access on the LED_SPI driver. - * May eventually launch an animation on the LEDs (e.g. a thread setting the - * txbuff values) - */ -void leds_init(void){ - /* MOSI pin*/ - palSetPadMode(PORT_WS2812, PIN_WS2812, PAL_MODE_STM32_ALTERNATE_PUSHPULL); - for(int i = 0; i < RESET_SIZE; i++) - txbuf[DATA_SIZE+i] = 0x00; - for (int i=0; i", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"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/cannonkeys/db60/rules.mk b/keyboards/cannonkeys/db60/rules.mk index d7157ce76e10..04676bc7e868 100644 --- a/keyboards/cannonkeys/db60/rules.mk +++ b/keyboards/cannonkeys/db60/rules.mk @@ -10,12 +10,11 @@ DFU_SUFFIX_ARGS = -v FFFF -p FFFF # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = yes RGBLIGHT_ENABLE = yes diff --git a/keyboards/cannonkeys/devastatingtkl/info.json b/keyboards/cannonkeys/devastatingtkl/info.json index 042410e280ad..93871900864d 100644 --- a/keyboards/cannonkeys/devastatingtkl/info.json +++ b/keyboards/cannonkeys/devastatingtkl/info.json @@ -2,8 +2,6 @@ "keyboard_name": "DevastatingTKL", "url": "https://cannonkeys.com", "maintainer": "awkannan", - "width": 18.25, - "height": 6.25, "layouts": { "LAYOUT_all": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.25, "y":0}, {"label":"F2", "x":2.25, "y":0}, {"label":"F3", "x":3.25, "y":0}, {"label":"F4", "x":4.25, "y":0}, {"label":"F5", "x":5.5, "y":0}, {"label":"F6", "x":6.5, "y":0}, {"label":"F7", "x":7.5, "y":0}, {"label":"F8", "x":8.5, "y":0}, {"label":"F9", "x":9.75, "y":0}, {"label":"F10", "x":10.75, "y":0}, {"label":"F11", "x":11.75, "y":0}, {"label":"F12", "x":12.75, "y":0}, {"x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"x":13, "y":1.25}, {"x":14, "y":1.25}, {"label":"Insert", "x":15.25, "y":1.25}, {"label":"Home", "x":16.25, "y":1.25}, {"label":"PgUp", "x":17.25, "y":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Y", "x":6.5, "y":2.25}, {"label":"U", "x":7.5, "y":2.25}, {"label":"I", "x":8.5, "y":2.25}, {"label":"O", "x":9.5, "y":2.25}, {"label":"P", "x":10.5, "y":2.25}, {"label":"{", "x":11.5, "y":2.25}, {"label":"}", "x":12.5, "y":2.25}, {"label":"|", "x":13.5, "y":2.25, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.25}, {"label":"End", "x":16.25, "y":2.25}, {"label":"PgDn", "x":17.25, "y":2.25}, {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"H", "x":6.75, "y":3.25}, {"label":"J", "x":7.75, "y":3.25}, {"label":"K", "x":8.75, "y":3.25}, {"label":"L", "x":9.75, "y":3.25}, {"label":":", "x":10.75, "y":3.25}, {"label":"\"", "x":11.75, "y":3.25}, {"x":12.75, "y":3.25}, {"x":13.75, "y":3.25, "w":1.25}, {"label":"Shift", "x":0, "y":4.25, "w":1.25}, {"x":1.25, "y":4.25}, {"label":"Z", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"N", "x":7.25, "y":4.25}, {"label":"M", "x":8.25, "y":4.25}, {"label":"<", "x":9.25, "y":4.25}, {"label":">", "x":10.25, "y":4.25}, {"label":"?", "x":11.25, "y":4.25}, {"label":"Shift", "x":12.25, "y":4.25, "w":1.75}, {"x":14, "y":4.25}, {"label":"\u2191", "x":16.25, "y":4.25}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, {"x":3.75, "y":5.25, "w":6.25}, {"label":"Alt", "x":10, "y":5.25, "w":1.25}, {"label":"Fn", "x":11.25, "y":5.25, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.25, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.25}, {"label":"\u2193", "x":16.25, "y":5.25}, {"label":"\u2192", "x":17.25, "y":5.25}] diff --git a/keyboards/cannonkeys/devastatingtkl/rules.mk b/keyboards/cannonkeys/devastatingtkl/rules.mk index 3a17bc4bd291..1b47de53c6ad 100644 --- a/keyboards/cannonkeys/devastatingtkl/rules.mk +++ b/keyboards/cannonkeys/devastatingtkl/rules.mk @@ -10,14 +10,12 @@ DFU_SUFFIX_ARGS = -v FFFF -p FFFF # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 BACKLIGHT_ENABLE = yes RGBLIGHT_ENABLE = yes WS2812_DRIVER = spi diff --git a/keyboards/cannonkeys/instant60/info.json b/keyboards/cannonkeys/instant60/info.json index 6d410968a06f..e20acf495eb3 100644 --- a/keyboards/cannonkeys/instant60/info.json +++ b/keyboards/cannonkeys/instant60/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Instant60", "url": "https://cannonkeys.com", "maintainer": "awkannan", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_ansi": { "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}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"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/cannonkeys/instant60/rules.mk b/keyboards/cannonkeys/instant60/rules.mk index 81ee89594065..7b12059d3a9b 100644 --- a/keyboards/cannonkeys/instant60/rules.mk +++ b/keyboards/cannonkeys/instant60/rules.mk @@ -11,14 +11,12 @@ DFU_SUFFIX_ARGS = -v FFFF -p FFFF # comment out to disable the options. # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 BACKLIGHT_ENABLE = yes RGBLIGHT_ENABLE = yes WS2812_DRIVER = spi diff --git a/keyboards/cannonkeys/instant65/info.json b/keyboards/cannonkeys/instant65/info.json index 5a9da70837de..6a4961881619 100644 --- a/keyboards/cannonkeys/instant65/info.json +++ b/keyboards/cannonkeys/instant65/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Instant65", "url": "https://cannonkeys.com", "maintainer": "awkannan", - "width": 16, - "height": 5, "layouts": { "LAYOUT_default": { "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}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Ctrl", "x":11.25, "y":4, "w":1.25}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] diff --git a/keyboards/cannonkeys/instant65/rules.mk b/keyboards/cannonkeys/instant65/rules.mk index a930d7025f99..7546ce9b8773 100644 --- a/keyboards/cannonkeys/instant65/rules.mk +++ b/keyboards/cannonkeys/instant65/rules.mk @@ -10,18 +10,15 @@ DFU_SUFFIX_ARGS = -v FFFF -p FFFF # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output WS2812_DRIVER = spi diff --git a/keyboards/cannonkeys/iron165/info.json b/keyboards/cannonkeys/iron165/info.json index c9d1ebea3b84..7d25a5d2aabb 100644 --- a/keyboards/cannonkeys/iron165/info.json +++ b/keyboards/cannonkeys/iron165/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Iron165", "url": "https://cannonkeys.com", "maintainer": "awkannan", - "width": 16, - "height": 5, "layouts": { "LAYOUT_default": { "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}, {"x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.25}, {"x":15, "y":2}, {"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}, {"x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Ctrl", "x":11.25, "y":4, "w":1.25}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] diff --git a/keyboards/cannonkeys/iron165/rules.mk b/keyboards/cannonkeys/iron165/rules.mk index f42acaafe36b..275abdb42647 100644 --- a/keyboards/cannonkeys/iron165/rules.mk +++ b/keyboards/cannonkeys/iron165/rules.mk @@ -7,14 +7,12 @@ BOOTLOADER = stm32-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 BACKLIGHT_ENABLE = yes RGBLIGHT_ENABLE = no diff --git a/keyboards/cannonkeys/obliterated75/info.json b/keyboards/cannonkeys/obliterated75/info.json index b62cee36ca4e..51052fce19bd 100644 --- a/keyboards/cannonkeys/obliterated75/info.json +++ b/keyboards/cannonkeys/obliterated75/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Obliterated75", "url": "https://cannonkeys.com", "maintainer": "awkannan", - "width": 16, - "height": 6.25, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":1.5, "y":0}, {"x":2.5, "y":0}, {"x":3.5, "y":0}, {"x":4.5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10.5, "y":0}, {"x":11.5, "y":0}, {"x":12.5, "y":0}, {"x":13.5, "y":0}, {"x":15, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"x":13, "y":1.25}, {"x":14, "y":1.25}, {"x":15, "y":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Y", "x":6.5, "y":2.25}, {"label":"U", "x":7.5, "y":2.25}, {"label":"I", "x":8.5, "y":2.25}, {"label":"O", "x":9.5, "y":2.25}, {"label":"P", "x":10.5, "y":2.25}, {"label":"{", "x":11.5, "y":2.25}, {"label":"}", "x":12.5, "y":2.25}, {"label":"|", "x":13.5, "y":2.25, "w":1.5}, {"x":15, "y":2.25}, {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"H", "x":6.75, "y":3.25}, {"label":"J", "x":7.75, "y":3.25}, {"label":"K", "x":8.75, "y":3.25}, {"label":"L", "x":9.75, "y":3.25}, {"label":":", "x":10.75, "y":3.25}, {"label":"\"", "x":11.75, "y":3.25}, {"x":12.75, "y":3.25}, {"label":"Enter", "x":13.75, "y":3.25, "w":1.25}, {"x":15, "y":3.25}, {"x":0, "y":4.25, "w":1.25}, {"x":1.25, "y":4.25}, {"label":"Z", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"N", "x":7.25, "y":4.25}, {"label":"M", "x":8.25, "y":4.25}, {"label":"<", "x":9.25, "y":4.25}, {"label":">", "x":10.25, "y":4.25}, {"label":"?", "x":11.25, "y":4.25}, {"label":"Shift", "x":12.25, "y":4.25, "w":1.75}, {"x":14, "y":4.25}, {"x":15, "y":4.25}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, {"x":3.75, "y":5.25, "w":6.25}, {"label":"Alt", "x":10, "y":5.25, "w":1.25}, {"label":"Ctrl", "x":11.25, "y":5.25, "w":1.25}, {"x":13, "y":5.25}, {"x":14, "y":5.25}, {"x":15, "y":5.25}] diff --git a/keyboards/cannonkeys/obliterated75/rules.mk b/keyboards/cannonkeys/obliterated75/rules.mk index 5dd12f03cadb..ee3221639f33 100644 --- a/keyboards/cannonkeys/obliterated75/rules.mk +++ b/keyboards/cannonkeys/obliterated75/rules.mk @@ -10,18 +10,15 @@ DFU_SUFFIX_ARGS = -v FFFF -p FFFF # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output WS2812_DRIVER = spi # Enter lower-power sleep mode when on the ChibiOS idle thread diff --git a/keyboards/cannonkeys/onyx/info.json b/keyboards/cannonkeys/onyx/info.json index bcb62ba25fb9..782056cda18e 100644 --- a/keyboards/cannonkeys/onyx/info.json +++ b/keyboards/cannonkeys/onyx/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Onyx", "url": "https://cannonkeys.com", "maintainer": "awkannan", - "width": 19.5, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/cannonkeys/onyx/rules.mk b/keyboards/cannonkeys/onyx/rules.mk index f48fd0fa150f..b5a89420a749 100644 --- a/keyboards/cannonkeys/onyx/rules.mk +++ b/keyboards/cannonkeys/onyx/rules.mk @@ -10,18 +10,15 @@ DFU_SUFFIX_ARGS = -v FFFF -p FFFF # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output # Enter lower-power sleep mode when on the ChibiOS idle thread diff --git a/keyboards/cannonkeys/ortho48/info.json b/keyboards/cannonkeys/ortho48/info.json index 0e834245a119..1192482bce16 100644 --- a/keyboards/cannonkeys/ortho48/info.json +++ b/keyboards/cannonkeys/ortho48/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Ortho48", "url": "", "maintainer": "qmk", - "width": 12, - "height": 4, "layouts": { "LAYOUT_ortho_4x12": { "layout": [ diff --git a/keyboards/cannonkeys/ortho48/ortho48.h b/keyboards/cannonkeys/ortho48/ortho48.h index b0197c3cf77c..1e51c37af7ee 100644 --- a/keyboards/cannonkeys/ortho48/ortho48.h +++ b/keyboards/cannonkeys/ortho48/ortho48.h @@ -6,13 +6,13 @@ 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 \ + 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, KC_NO, k36, k37, k38, k39, k3a, k3b } \ + { k30, k31, k32, k33, k34, k35, KC_NO, k37, k38, k39, k3a, k3b } \ } #define LAYOUT_ortho_4x12( \ diff --git a/keyboards/cannonkeys/ortho48/rules.mk b/keyboards/cannonkeys/ortho48/rules.mk index ac927481f203..4b88c3f7052c 100644 --- a/keyboards/cannonkeys/ortho48/rules.mk +++ b/keyboards/cannonkeys/ortho48/rules.mk @@ -4,19 +4,15 @@ MCU = STM32F103 # Bootloader selection BOOTLOADER = stm32duino -# project specific files -VPATH += keyboards/cannonkeys/bluepill -SRC = keyboard.c - -#BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = yes RGBLIGHT_ENABLE = yes +SLEEP_LED_ENABLE = yes WS2812_DRIVER = spi LAYOUTS = ortho_4x12 diff --git a/keyboards/cannonkeys/ortho60/info.json b/keyboards/cannonkeys/ortho60/info.json index b94bfc7b538a..f799e2a4c063 100644 --- a/keyboards/cannonkeys/ortho60/info.json +++ b/keyboards/cannonkeys/ortho60/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Ortho60", "url": "", "maintainer": "qmk", - "width": 12, - "height": 5, "layouts": { "LAYOUT_ortho_5x12": { "layout": [ diff --git a/keyboards/cannonkeys/ortho60/ortho60.h b/keyboards/cannonkeys/ortho60/ortho60.h index 2dcc00ddb9fd..0f3ae127aada 100644 --- a/keyboards/cannonkeys/ortho60/ortho60.h +++ b/keyboards/cannonkeys/ortho60/ortho60.h @@ -7,14 +7,14 @@ 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, k46 , k47, k48, k49, k4a, k4b \ + k40, k41, k42, k43, k44, k45 , k47, k48, k49, k4a, k4b \ ) \ { \ { 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, k46, k47, k48, k49, k4a, k4b }, \ + { k40, k41, k42, k43, k44, k45, KC_NO, k47, k48, k49, k4a, k4b }, \ } #define LAYOUT_ortho_5x12( \ diff --git a/keyboards/cannonkeys/ortho60/rules.mk b/keyboards/cannonkeys/ortho60/rules.mk index ec91d3b81d5a..c426c7ee988d 100644 --- a/keyboards/cannonkeys/ortho60/rules.mk +++ b/keyboards/cannonkeys/ortho60/rules.mk @@ -4,19 +4,15 @@ MCU = STM32F103 # Bootloader selection BOOTLOADER = stm32duino -# project specific files -VPATH += keyboards/cannonkeys/bluepill -SRC = keyboard.c - -#BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = yes RGBLIGHT_ENABLE = yes +SLEEP_LED_ENABLE = yes WS2812_DRIVER = spi LAYOUTS = ortho_5x12 diff --git a/keyboards/cannonkeys/ortho75/info.json b/keyboards/cannonkeys/ortho75/info.json index a57f184218fa..cb6ca4c242e4 100644 --- a/keyboards/cannonkeys/ortho75/info.json +++ b/keyboards/cannonkeys/ortho75/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Ortho75", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_ortho_5x15": { "layout": [ diff --git a/keyboards/cannonkeys/ortho75/rules.mk b/keyboards/cannonkeys/ortho75/rules.mk index 9d6004656fd8..d8b49c561a9e 100644 --- a/keyboards/cannonkeys/ortho75/rules.mk +++ b/keyboards/cannonkeys/ortho75/rules.mk @@ -4,19 +4,15 @@ MCU = STM32F103 # Bootloader selection BOOTLOADER = stm32duino -# project specific files -VPATH += keyboards/cannonkeys/bluepill -SRC = keyboard.c - -#BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = yes RGBLIGHT_ENABLE = yes +SLEEP_LED_ENABLE = yes WS2812_DRIVER = spi ENCODER_ENABLE = yes diff --git a/keyboards/cannonkeys/practice60/info.json b/keyboards/cannonkeys/practice60/info.json index cffbcf49246a..226149433100 100644 --- a/keyboards/cannonkeys/practice60/info.json +++ b/keyboards/cannonkeys/practice60/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Practice 60", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_ansi": { "layout": [ diff --git a/keyboards/cannonkeys/practice60/rules.mk b/keyboards/cannonkeys/practice60/rules.mk index 80bde01cf4fe..5dc92df6329e 100644 --- a/keyboards/cannonkeys/practice60/rules.mk +++ b/keyboards/cannonkeys/practice60/rules.mk @@ -4,19 +4,15 @@ MCU = STM32F103 # Bootloader selection BOOTLOADER = stm32duino -# project specific files -VPATH += keyboards/cannonkeys/bluepill -SRC = keyboard.c - -#BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = yes RGBLIGHT_ENABLE = yes +SLEEP_LED_ENABLE = yes WS2812_DRIVER = spi LAYOUTS = 60_ansi diff --git a/keyboards/cannonkeys/practice65/info.json b/keyboards/cannonkeys/practice65/info.json index 6c448fda205a..fa2eff8e214c 100644 --- a/keyboards/cannonkeys/practice65/info.json +++ b/keyboards/cannonkeys/practice65/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Practice65", "url": "https://cannonkeys.com", "maintainer": "awkannan", - "width": 16, - "height": 5, "layouts": { "LAYOUT_default": { "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}, {"x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] diff --git a/keyboards/cannonkeys/practice65/rules.mk b/keyboards/cannonkeys/practice65/rules.mk index 130f9b98e3f3..3b78dc099530 100644 --- a/keyboards/cannonkeys/practice65/rules.mk +++ b/keyboards/cannonkeys/practice65/rules.mk @@ -4,19 +4,15 @@ MCU = STM32F103 # Bootloader selection BOOTLOADER = stm32duino -# project specific files -VPATH += keyboards/cannonkeys/bluepill -SRC = keyboard.c - -#BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = yes RGBLIGHT_ENABLE = yes +SLEEP_LED_ENABLE = yes WS2812_DRIVER = spi # Enter lower-power sleep mode when on the ChibiOS idle thread diff --git a/keyboards/cannonkeys/rekt1800/info.json b/keyboards/cannonkeys/rekt1800/info.json index 32942f1ec44d..2ff238b39666 100644 --- a/keyboards/cannonkeys/rekt1800/info.json +++ b/keyboards/cannonkeys/rekt1800/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Rekt1800", "url": "https://cannonkeys.com", "maintainer": "awkannan", - "width": 19.5, - "height": 6.5, "layouts": { "LAYOUT_all": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.25, "y":0}, {"label":"F2", "x":2.25, "y":0}, {"label":"F3", "x":3.25, "y":0}, {"label":"F4", "x":4.25, "y":0}, {"label":"F5", "x":5.5, "y":0}, {"label":"F6", "x":6.5, "y":0}, {"label":"F7", "x":7.5, "y":0}, {"label":"F8", "x":8.5, "y":0}, {"label":"F9", "x":9.75, "y":0}, {"label":"F10", "x":10.75, "y":0}, {"label":"F11", "x":11.75, "y":0}, {"label":"F12", "x":12.75, "y":0}, {"x":14, "y":0}, {"label":"PrtSc", "x":15.5, "y":0}, {"label":"Scroll Lock", "x":16.5, "y":0}, {"label":"Pause", "x":17.5, "y":0}, {"x":18.5, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"x":13, "y":1.25}, {"x":14, "y":1.25}, {"label":"Insert", "x":15.5, "y":1.25}, {"label":"Home", "x":16.5, "y":1.25}, {"label":"PgUp", "x":17.5, "y":1.25}, {"x":18.5, "y":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Y", "x":6.5, "y":2.25}, {"label":"U", "x":7.5, "y":2.25}, {"label":"I", "x":8.5, "y":2.25}, {"label":"O", "x":9.5, "y":2.25}, {"label":"P", "x":10.5, "y":2.25}, {"label":"{", "x":11.5, "y":2.25}, {"label":"}", "x":12.5, "y":2.25}, {"label":"|", "x":13.5, "y":2.25, "w":1.5}, {"label":"Delete", "x":15.5, "y":2.25}, {"label":"End", "x":16.5, "y":2.25}, {"label":"PgDn", "x":17.5, "y":2.25}, {"x":18.5, "y":2.25}, {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"H", "x":6.75, "y":3.25}, {"label":"J", "x":7.75, "y":3.25}, {"label":"K", "x":8.75, "y":3.25}, {"label":"L", "x":9.75, "y":3.25}, {"label":":", "x":10.75, "y":3.25}, {"label":"\"", "x":11.75, "y":3.25}, {"x":12.75, "y":3.25}, {"label":"Enter", "x":13.75, "y":3.25, "w":1.25}, {"x":15.5, "y":3.25}, {"x":16.5, "y":3.25}, {"x":17.5, "y":3.25}, {"x":18.5, "y":3.25}, {"label":"Shift", "x":0, "y":4.25, "w":1.25}, {"x":1.25, "y":4.25}, {"label":"Z", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"N", "x":7.25, "y":4.25}, {"label":"M", "x":8.25, "y":4.25}, {"label":"<", "x":9.25, "y":4.25}, {"label":">", "x":10.25, "y":4.25}, {"label":"?", "x":11.25, "y":4.25}, {"label":"Shift", "x":12.25, "y":4.25, "w":1.75}, {"label":"\u2191", "x":14.25, "y":4.5}, {"x":15.5, "y":4.25}, {"x":16.5, "y":4.25}, {"x":17.5, "y":4.25}, {"x":18.5, "y":4.25, "h":2}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, {"label":"Alt", "x":1.25, "y":5.25, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, {"x":3.75, "y":5.25, "w":6.25}, {"label":"Alt", "x":10, "y":5.25, "w":1.5}, {"label":"Ctrl", "x":11.5, "y":5.25, "w":1.5}, {"label":"\u2190", "x":13.25, "y":5.5}, {"label":"\u2193", "x":14.25, "y":5.5}, {"label":"\u2192", "x":15.25, "y":5.5}, {"x":16.5, "y":5.25}, {"x":17.5, "y":5.25}] diff --git a/keyboards/cannonkeys/rekt1800/rules.mk b/keyboards/cannonkeys/rekt1800/rules.mk index 0f3d34ea5a9a..14284a6081f5 100644 --- a/keyboards/cannonkeys/rekt1800/rules.mk +++ b/keyboards/cannonkeys/rekt1800/rules.mk @@ -10,14 +10,12 @@ DFU_SUFFIX_ARGS = -v FFFF -p FFFF # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 BACKLIGHT_ENABLE = yes RGBLIGHT_ENABLE = no diff --git a/keyboards/cannonkeys/sagittarius/info.json b/keyboards/cannonkeys/sagittarius/info.json index 0fa825ef5235..2cb553044797 100644 --- a/keyboards/cannonkeys/sagittarius/info.json +++ b/keyboards/cannonkeys/sagittarius/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Sagittarius", "url": "https://cannonkeys.com", "maintainer": "awkannan", - "width": 20.25, - "height": 5, "layouts": { "LAYOUT_default": { "layout": [{"x":0, "y":0}, {"x":1.5, "y":0}, {"x":2.5, "y":0}, {"x":3.5, "y":0}, {"x":4.5, "y":0}, {"x":5.5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":10.75, "y":0}, {"x":11.75, "y":0}, {"x":12.75, "y":0}, {"x":13.75, "y":0}, {"x":14.75, "y":0}, {"x":15.75, "y":0}, {"x":16.75, "y":0}, {"x":17.75, "y":0}, {"x":0, "y":1}, {"x":1.5, "y":1, "w":1.5}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":10.75, "y":1}, {"x":11.75, "y":1}, {"x":12.75, "y":1}, {"x":13.75, "y":1}, {"x":14.75, "y":1}, {"x":15.75, "y":1}, {"x":16.75, "y":1}, {"x":17.75, "y":1, "w":1.5}, {"x":0, "y":2}, {"x":1.5, "y":2, "w":1.75}, {"x":3.25, "y":2}, {"x":4.25, "y":2}, {"x":5.25, "y":2}, {"x":6.25, "y":2}, {"x":7.25, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":13, "y":2}, {"x":14, "y":2}, {"x":15, "y":2}, {"x":16, "y":2}, {"x":17, "y":2}, {"x":18, "y":2, "w":1.25}, {"x":19.25, "y":2}, {"x":0, "y":3}, {"x":1.5, "y":3, "w":1.25}, {"x":2.75, "y":3}, {"x":3.75, "y":3}, {"x":4.75, "y":3}, {"x":5.75, "y":3}, {"x":6.75, "y":3}, {"x":7.75, "y":3}, {"x":11, "y":3}, {"x":12, "y":3}, {"x":13, "y":3}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":16, "y":3, "w":1.25}, {"x":17.25, "y":3}, {"x":18.25, "y":3}, {"x":1.5, "y":4, "w":1.25}, {"x":2.75, "y":4, "w":1.25}, {"x":5.5, "y":4}, {"x":6.5, "y":4, "w":2.25}, {"x":11, "y":4, "w":1.75}, {"x":12.75, "y":4}, {"x":16.25, "y":4}, {"x":17.25, "y":4}, {"x":18.25, "y":4}] diff --git a/keyboards/cannonkeys/sagittarius/rules.mk b/keyboards/cannonkeys/sagittarius/rules.mk index 968520203d30..7546ce9b8773 100644 --- a/keyboards/cannonkeys/sagittarius/rules.mk +++ b/keyboards/cannonkeys/sagittarius/rules.mk @@ -10,18 +10,15 @@ DFU_SUFFIX_ARGS = -v FFFF -p FFFF # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output WS2812_DRIVER = spi diff --git a/keyboards/cannonkeys/satisfaction75/config.h b/keyboards/cannonkeys/satisfaction75/config.h index e100cc99b1e1..53e4c18e5ecb 100644 --- a/keyboards/cannonkeys/satisfaction75/config.h +++ b/keyboards/cannonkeys/satisfaction75/config.h @@ -53,9 +53,8 @@ along with this program. If not, see . // 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 . /* 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/keymaps/via/keymap.c b/keyboards/cannonkeys/satisfaction75/keymaps/via/keymap.c index ce97d7554f81..85cbadc0b97b 100644 --- a/keyboards/cannonkeys/satisfaction75/keymaps/via/keymap.c +++ b/keyboards/cannonkeys/satisfaction75/keymaps/via/keymap.c @@ -33,5 +33,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) }; diff --git a/keyboards/cannonkeys/satisfaction75/prototype/info.json b/keyboards/cannonkeys/satisfaction75/prototype/info.json index 8f5ab9f2a69d..29e727835a54 100644 --- a/keyboards/cannonkeys/satisfaction75/prototype/info.json +++ b/keyboards/cannonkeys/satisfaction75/prototype/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Satisfaction75 prototype", "url": "", "maintainer": "Cannon Keys", - "width": 16.5, - "height": 6.5, "layouts": { "LAYOUT_default": { "layout": [{"x":0, "y":0}, {"x":1.5, "y":0}, {"x":2.5, "y":0}, {"x":3.5, "y":0}, {"x":4.5, "y":0}, {"x":5.75, "y":0}, {"x":6.75, "y":0}, {"x":7.75, "y":0}, {"x":8.75, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":4, "y":1.25}, {"x":5, "y":1.25}, {"x":6, "y":1.25}, {"x":7, "y":1.25}, {"x":8, "y":1.25}, {"x":9, "y":1.25}, {"x":10, "y":1.25}, {"x":11, "y":1.25}, {"x":12, "y":1.25}, {"x":13, "y":1.25, "w":2}, {"x":15.5, "y":1}, {"x":0, "y":2.25, "w":1.5}, {"x":1.5, "y":2.25}, {"x":2.5, "y":2.25}, {"x":3.5, "y":2.25}, {"x":4.5, "y":2.25}, {"x":5.5, "y":2.25}, {"x":6.5, "y":2.25}, {"x":7.5, "y":2.25}, {"x":8.5, "y":2.25}, {"x":9.5, "y":2.25}, {"x":10.5, "y":2.25}, {"x":11.5, "y":2.25}, {"x":12.5, "y":2.25}, {"x":13.5, "y":2.25, "w":1.5}, {"x":15.5, "y":2.25}, {"x":0, "y":3.25, "w":1.75}, {"x":1.75, "y":3.25}, {"x":2.75, "y":3.25}, {"x":3.75, "y":3.25}, {"x":4.75, "y":3.25}, {"x":5.75, "y":3.25}, {"x":6.75, "y":3.25}, {"x":7.75, "y":3.25}, {"x":8.75, "y":3.25}, {"x":9.75, "y":3.25}, {"x":10.75, "y":3.25}, {"x":11.75, "y":3.25}, {"x":12.75, "y":3.25, "w":2.25}, {"x":15.5, "y":3.25}, {"x":0, "y":4.25, "w":2.25}, {"x":2.25, "y":4.25}, {"x":3.25, "y":4.25}, {"x":4.25, "y":4.25}, {"x":5.25, "y":4.25}, {"x":6.25, "y":4.25}, {"x":7.25, "y":4.25}, {"x":8.25, "y":4.25}, {"x":9.25, "y":4.25}, {"x":10.25, "y":4.25}, {"x":11.25, "y":4.25}, {"x":12.25, "y":4.25, "w":1.75}, {"x":14.25, "y":4.5}, {"x":15.5, "y":4.25}, {"x":0, "y":5.25, "w":1.25}, {"x":1.25, "y":5.25, "w":1.25}, {"x":2.5, "y":5.25, "w":1.25}, {"x":3.75, "y":5.25, "w":6.25}, {"x":10, "y":5.25}, {"x":11, "y":5.25}, {"x":12, "y":5.25}, {"x":13.25, "y":5.5}, {"x":14.25, "y":5.5}, {"x":15.25, "y":5.5}] diff --git a/keyboards/cannonkeys/satisfaction75/rev1/info.json b/keyboards/cannonkeys/satisfaction75/rev1/info.json index fd25aacdb7c1..b0e171660288 100644 --- a/keyboards/cannonkeys/satisfaction75/rev1/info.json +++ b/keyboards/cannonkeys/satisfaction75/rev1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Satisfaction75 rev1", "url": "", "maintainer": "Cannon Keys", - "width": 16.5, - "height": 6.5, "layouts": { "LAYOUT_default": { "layout": [{"x":0, "y":0}, {"x":1.5, "y":0}, {"x":2.5, "y":0}, {"x":3.5, "y":0}, {"x":4.5, "y":0}, {"x":5.75, "y":0}, {"x":6.75, "y":0}, {"x":7.75, "y":0}, {"x":8.75, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":4, "y":1.25}, {"x":5, "y":1.25}, {"x":6, "y":1.25}, {"x":7, "y":1.25}, {"x":8, "y":1.25}, {"x":9, "y":1.25}, {"x":10, "y":1.25}, {"x":11, "y":1.25}, {"x":12, "y":1.25}, {"x":13, "y":1.25, "w":2}, {"x":15.5, "y":1}, {"x":0, "y":2.25, "w":1.5}, {"x":1.5, "y":2.25}, {"x":2.5, "y":2.25}, {"x":3.5, "y":2.25}, {"x":4.5, "y":2.25}, {"x":5.5, "y":2.25}, {"x":6.5, "y":2.25}, {"x":7.5, "y":2.25}, {"x":8.5, "y":2.25}, {"x":9.5, "y":2.25}, {"x":10.5, "y":2.25}, {"x":11.5, "y":2.25}, {"x":12.5, "y":2.25}, {"x":13.5, "y":2.25, "w":1.5}, {"x":15.5, "y":2.25}, {"x":0, "y":3.25, "w":1.75}, {"x":1.75, "y":3.25}, {"x":2.75, "y":3.25}, {"x":3.75, "y":3.25}, {"x":4.75, "y":3.25}, {"x":5.75, "y":3.25}, {"x":6.75, "y":3.25}, {"x":7.75, "y":3.25}, {"x":8.75, "y":3.25}, {"x":9.75, "y":3.25}, {"x":10.75, "y":3.25}, {"x":11.75, "y":3.25}, {"x":12.75, "y":3.25, "w":2.25}, {"x":15.5, "y":3.25}, {"x":0, "y":4.25, "w":2.25}, {"x":2.25, "y":4.25}, {"x":3.25, "y":4.25}, {"x":4.25, "y":4.25}, {"x":5.25, "y":4.25}, {"x":6.25, "y":4.25}, {"x":7.25, "y":4.25}, {"x":8.25, "y":4.25}, {"x":9.25, "y":4.25}, {"x":10.25, "y":4.25}, {"x":11.25, "y":4.25}, {"x":12.25, "y":4.25, "w":1.75}, {"x":14.25, "y":4.5}, {"x":15.5, "y":4.25}, {"x":0, "y":5.25, "w":1.25}, {"x":1.25, "y":5.25, "w":1.25}, {"x":2.5, "y":5.25, "w":1.25}, {"x":3.75, "y":5.25, "w":6.25}, {"x":10, "y":5.25}, {"x":11, "y":5.25}, {"x":12, "y":5.25}, {"x":13.25, "y":5.5}, {"x":14.25, "y":5.5}, {"x":15.25, "y":5.5}] diff --git a/keyboards/cannonkeys/satisfaction75/rules.mk b/keyboards/cannonkeys/satisfaction75/rules.mk index 174f20c0e6bd..08d5ed47a89e 100644 --- a/keyboards/cannonkeys/satisfaction75/rules.mk +++ b/keyboards/cannonkeys/satisfaction75/rules.mk @@ -16,17 +16,15 @@ SRC += led.c \ satisfaction_encoder.c \ satisfaction_oled.c -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 d3853c229230..bd7eaf188588 100644 --- a/keyboards/cannonkeys/satisfaction75/satisfaction75.c +++ b/keyboards/cannonkeys/satisfaction75/satisfaction75.c @@ -5,33 +5,27 @@ #include #include -#ifdef QWIIC_MICRO_OLED_ENABLE -#include "micro_oled.h" -#include "qwiic.h" -#endif - #include "timer.h" #include "raw_hid.h" #include "dynamic_keymap.h" -#include "tmk_core/common/eeprom.h" +#include "eeprom.h" #include "version.h" // for QMK_BUILDDATE used in EEPROM magic /* 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: @@ -244,21 +238,20 @@ void read_host_led_state(void) { } } -uint32_t layer_state_set_kb(uint32_t state) { +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 13aaf688826d..c6dbc31f1bbe 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 8fcd720e2f98..0d2fdc359cf1 100644 --- a/keyboards/cannonkeys/satisfaction75/satisfaction_encoder.c +++ b/keyboards/cannonkeys/satisfaction75/satisfaction_encoder.c @@ -1,5 +1,5 @@ #include "satisfaction75.h" -#include "tmk_core/common/eeprom.h" +#include "eeprom.h" void pre_encoder_mode_change(){ if(encoder_mode == ENC_MODE_CLOCK_SET){ @@ -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 6553bd13004e..fff8b65bd70b 100644 --- a/keyboards/cannonkeys/satisfaction75/satisfaction_oled.c +++ b/keyboards/cannonkeys/satisfaction75/satisfaction_oled.c @@ -1,271 +1,267 @@ #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 + +oled_rotation_t oled_init_kb(oled_rotation_t rotation) { return OLED_ROTATION_0; } + +bool oled_task_kb(void) { + if (!oled_task_user()) { return false; } + if (!oled_task_needs_to_repaint()) { + return false; + } + oled_clear(); + if (clock_set_mode) { + draw_clock(); + return false;; + } + switch (oled_mode) { + default: + case OLED_DEFAULT: + draw_default(); + break; + case OLED_TIME: + draw_clock(); + break; + } + return false; } -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/cannonkeys/savage65/info.json b/keyboards/cannonkeys/savage65/info.json index f85172d1a5e3..a3c8574b1362 100644 --- a/keyboards/cannonkeys/savage65/info.json +++ b/keyboards/cannonkeys/savage65/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Savage65", "url": "https://cannonkeys.com", "maintainer": "awkannan", - "width": 16, - "height": 5, "layouts": { "LAYOUT_default": { "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}, {"x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.25}, {"x":15, "y":2}, {"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}, {"x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Ctrl", "x":11.25, "y":4, "w":1.25}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] diff --git a/keyboards/cannonkeys/savage65/rules.mk b/keyboards/cannonkeys/savage65/rules.mk index 094dcf3ce2e0..14bd161e98ff 100644 --- a/keyboards/cannonkeys/savage65/rules.mk +++ b/keyboards/cannonkeys/savage65/rules.mk @@ -12,14 +12,12 @@ DFU_SUFFIX_ARGS = -v FFFF -p FFFF # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 BACKLIGHT_ENABLE = yes RGBLIGHT_ENABLE = yes WS2812_DRIVER = spi diff --git a/keyboards/cannonkeys/tmov2/info.json b/keyboards/cannonkeys/tmov2/info.json index 0ee4fed70938..6e157d4bd7ec 100644 --- a/keyboards/cannonkeys/tmov2/info.json +++ b/keyboards/cannonkeys/tmov2/info.json @@ -2,8 +2,6 @@ "keyboard_name": "TMOv2", "url": "https://cannonkeys.com", "maintainer": "awkannan", - "width": 17, - "height": 4, "layouts": { "LAYOUT_default": { "layout": [{"x":0, "y":0}, {"label":"Tab", "x":1.25, "y":0, "w":1.5}, {"label":"Q", "x":2.75, "y":0}, {"label":"W", "x":3.75, "y":0}, {"label":"E", "x":4.75, "y":0}, {"label":"R", "x":5.75, "y":0}, {"label":"T", "x":6.75, "y":0}, {"label":"Y", "x":7.75, "y":0}, {"label":"U", "x":8.75, "y":0}, {"label":"I", "x":9.75, "y":0}, {"label":"O", "x":10.75, "y":0}, {"label":"P", "x":11.75, "y":0}, {"label":"{", "x":12.75, "y":0}, {"label":"}", "x":13.75, "y":0}, {"label":"Backspace", "x":14.75, "y":0}, {"x":0, "y":1}, {"label":"Caps Lock", "x":1.25, "y":1, "w":1.75}, {"label":"A", "x":3, "y":1}, {"label":"S", "x":4, "y":1}, {"label":"D", "x":5, "y":1}, {"label":"F", "x":6, "y":1}, {"label":"G", "x":7, "y":1}, {"label":"H", "x":8, "y":1}, {"label":"J", "x":9, "y":1}, {"label":"K", "x":10, "y":1}, {"label":"L", "x":11, "y":1}, {"label":":", "x":12, "y":1}, {"label":"\"", "x":13, "y":1}, {"label":"Enter", "x":14, "y":1, "w":1.75}, {"x":0, "y":2}, {"label":"Shift", "x":1.25, "y":2, "w":1.25}, {"label":"ISO \\", "x":2.5, "y":2}, {"label":"Z", "x":3.5, "y":2}, {"label":"X", "x":4.5, "y":2}, {"label":"C", "x":5.5, "y":2}, {"label":"V", "x":6.5, "y":2}, {"label":"B", "x":7.5, "y":2}, {"label":"N", "x":8.5, "y":2}, {"label":"M", "x":9.5, "y":2}, {"label":"<", "x":10.5, "y":2}, {"label":">", "x":11.5, "y":2}, {"label":"?", "x":12.5, "y":2}, {"label":"Shift", "x":13.5, "y":2, "w":1.25}, {"x":14.75, "y":2}, {"x":0, "y":3}, {"label":"Win", "x":3.25, "y":3}, {"label":"Alt", "x":4.25, "y":3, "w":1.5}, {"x":5.75, "y":3, "w":2.25}, {"x":8, "y":3, "w":2.75}, {"label":"Alt", "x":10.75, "y":3, "w":1.5}, {"label":"Menu", "x":12.25, "y":3}] diff --git a/keyboards/cannonkeys/tmov2/rules.mk b/keyboards/cannonkeys/tmov2/rules.mk index f1e48a6b7a9a..9a89d4e80479 100644 --- a/keyboards/cannonkeys/tmov2/rules.mk +++ b/keyboards/cannonkeys/tmov2/rules.mk @@ -12,14 +12,12 @@ DFU_SUFFIX_ARGS = -v FFFF -p FFFF # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 BACKLIGHT_ENABLE = yes RGBLIGHT_ENABLE = yes WS2812_DRIVER = spi diff --git a/keyboards/cannonkeys/tsukuyomi/info.json b/keyboards/cannonkeys/tsukuyomi/info.json index 433f19344969..297aca739733 100644 --- a/keyboards/cannonkeys/tsukuyomi/info.json +++ b/keyboards/cannonkeys/tsukuyomi/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Tsukuyomi", "url": "https://cannonkeys.com", "maintainer": "awkannan", - "width": 17.25, - "height": 5, "layouts": { "LAYOUT_default": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"~", "x":1.25, "y":0}, {"label":"!", "x":2.25, "y":0}, {"label":"@", "x":3.25, "y":0}, {"label":"#", "x":4.25, "y":0}, {"label":"$", "x":5.25, "y":0}, {"label":"%", "x":6.25, "y":0}, {"label":"^", "x":7.25, "y":0}, {"label":"&", "x":8.25, "y":0}, {"label":"*", "x":9.25, "y":0}, {"label":"(", "x":10.25, "y":0}, {"label":")", "x":11.25, "y":0}, {"label":"_", "x":12.25, "y":0}, {"label":"+", "x":13.25, "y":0}, {"x":14.25, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":0, "y":1}, {"label":"Tab", "x":1.25, "y":1, "w":1.5}, {"label":"Q", "x":2.75, "y":1}, {"label":"W", "x":3.75, "y":1}, {"label":"E", "x":4.75, "y":1}, {"label":"R", "x":5.75, "y":1}, {"label":"T", "x":6.75, "y":1}, {"label":"Y", "x":7.75, "y":1}, {"label":"U", "x":8.75, "y":1}, {"label":"I", "x":9.75, "y":1}, {"label":"O", "x":10.75, "y":1}, {"label":"P", "x":11.75, "y":1}, {"label":"{", "x":12.75, "y":1}, {"label":"}", "x":13.75, "y":1}, {"label":"|", "x":14.75, "y":1, "w":1.5}, {"x":16.25, "y":1}, {"x":0, "y":2}, {"label":"Caps Lock", "x":1.25, "y":2, "w":1.75}, {"label":"A", "x":3, "y":2}, {"label":"S", "x":4, "y":2}, {"label":"D", "x":5, "y":2}, {"label":"F", "x":6, "y":2}, {"label":"G", "x":7, "y":2}, {"label":"H", "x":8, "y":2}, {"label":"J", "x":9, "y":2}, {"label":"K", "x":10, "y":2}, {"label":"L", "x":11, "y":2}, {"label":":", "x":12, "y":2}, {"label":"\"", "x":13, "y":2}, {"x":14, "y":2}, {"label":"Enter", "x":15, "y":2, "w":1.25}, {"x":16.25, "y":2}, {"x":0, "y":3}, {"x":1.25, "y":3, "w":1.25}, {"x":2.5, "y":3}, {"label":"Z", "x":3.5, "y":3}, {"label":"X", "x":4.5, "y":3}, {"label":"C", "x":5.5, "y":3}, {"label":"V", "x":6.5, "y":3}, {"label":"B", "x":7.5, "y":3}, {"label":"N", "x":8.5, "y":3}, {"label":"M", "x":9.5, "y":3}, {"label":"<", "x":10.5, "y":3}, {"label":">", "x":11.5, "y":3}, {"label":"?", "x":12.5, "y":3}, {"label":"Shift", "x":13.5, "y":3, "w":1.75}, {"x":15.25, "y":3}, {"x":16.25, "y":3}, {"x":0, "y":4}, {"label":"Ctrl", "x":1.25, "y":4, "w":1.25}, {"label":"Win", "x":2.5, "y":4, "w":1.25}, {"label":"Alt", "x":3.75, "y":4, "w":1.25}, {"x":5, "y":4, "w":6.25}, {"label":"Alt", "x":11.25, "y":4, "w":1.25}, {"label":"Ctrl", "x":12.5, "y":4, "w":1.25}, {"x":14.25, "y":4}, {"x":15.25, "y":4}, {"x":16.25, "y":4}] diff --git a/keyboards/cannonkeys/tsukuyomi/rules.mk b/keyboards/cannonkeys/tsukuyomi/rules.mk index a930d7025f99..7546ce9b8773 100644 --- a/keyboards/cannonkeys/tsukuyomi/rules.mk +++ b/keyboards/cannonkeys/tsukuyomi/rules.mk @@ -10,18 +10,15 @@ DFU_SUFFIX_ARGS = -v FFFF -p FFFF # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output WS2812_DRIVER = spi diff --git a/keyboards/cannonkeys/vicious40/chconf.h b/keyboards/cannonkeys/vicious40/chconf.h new file mode 100644 index 000000000000..f3eb1c05e539 --- /dev/null +++ b/keyboards/cannonkeys/vicious40/chconf.h @@ -0,0 +1,31 @@ +/* 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/cannonkeys/savage65/chconf.h -r platforms/chibios/common/configs/chconf.h` + */ + +#pragma once + +#define CH_CFG_ST_FREQUENCY 10000 + +#define CH_CFG_OPTIMIZE_SPEED FALSE + +#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE + +#include_next + diff --git a/keyboards/cannonkeys/vicious40/config.h b/keyboards/cannonkeys/vicious40/config.h new file mode 100644 index 000000000000..768ee7397d64 --- /dev/null +++ b/keyboards/cannonkeys/vicious40/config.h @@ -0,0 +1,70 @@ +/* +Copyright 2015 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xCA04 +#define PRODUCT_ID 0x0004 +#define DEVICE_VER 0x0001 +#define MANUFACTURER CannonKeys +#define PRODUCT Vicious40 + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + +#define MATRIX_COL_PINS { B0, A7, A5, B1, B2, B10, B11, A9, B6, B7, B8, B9 } +#define MATRIX_ROW_PINS { A15, B3, B4, B5 } +#define DIODE_DIRECTION COL2ROW + +#define BACKLIGHT_PIN A6 +#define BACKLIGHT_PWM_DRIVER PWMD3 +#define BACKLIGHT_PWM_CHANNEL 1 +#define BACKLIGHT_PAL_MODE 1 +#define BACKLIGHT_LEVELS 6 +#define BACKLIGHT_BREATHING +#define BREATHING_PERIOD 6 + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* 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 + +/* + * 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/cannonkeys/vicious40/halconf.h b/keyboards/cannonkeys/vicious40/halconf.h new file mode 100644 index 000000000000..63f5cf44a1aa --- /dev/null +++ b/keyboards/cannonkeys/vicious40/halconf.h @@ -0,0 +1,27 @@ +/* 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/cannonkeys/savage65/halconf.h -r platforms/chibios/common/configs/halconf.h` + */ + +#pragma once + +#define HAL_USE_PWM TRUE + +#include_next + diff --git a/keyboards/cannonkeys/vicious40/info.json b/keyboards/cannonkeys/vicious40/info.json new file mode 100644 index 000000000000..1652e9d3e62e --- /dev/null +++ b/keyboards/cannonkeys/vicious40/info.json @@ -0,0 +1,10 @@ +{ + "keyboard_name": "Vicious40", + "url": "https://cannonkeys.com", + "maintainer": "awkannan", + "layouts": { + "LAYOUT_default": { + "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"Backspace", "x":11, "y":0, "w":1.75}, {"label":"Tab", "x":0, "y":1, "w":1.25}, {"label":"A", "x":1.25, "y":1}, {"label":"S", "x":2.25, "y":1}, {"label":"D", "x":3.25, "y":1}, {"label":"F", "x":4.25, "y":1}, {"label":"G", "x":5.25, "y":1}, {"label":"H", "x":6.25, "y":1}, {"label":"J", "x":7.25, "y":1}, {"label":"K", "x":8.25, "y":1}, {"label":"L", "x":9.25, "y":1}, {"label":":", "x":10.25, "y":1}, {"label":"Enter", "x":11.25, "y":1, "w":1.5}, {"label":"Shift", "x":0, "y":2, "w":1.75}, {"label":"Z", "x":1.75, "y":2}, {"label":"X", "x":2.75, "y":2}, {"label":"C", "x":3.75, "y":2}, {"label":"V", "x":4.75, "y":2}, {"label":"B", "x":5.75, "y":2}, {"label":"N", "x":6.75, "y":2}, {"label":"M", "x":7.75, "y":2}, {"label":"<", "x":8.75, "y":2}, {"label":">", "x":9.75, "y":2}, {"label":"Up", "x":10.75, "y":2}, {"label":"?", "x":11.75, "y":2}, {"label":"Ctrl", "x":0, "y":3}, {"label":"Super", "x":1, "y":3}, {"label":"Alt", "x":2, "y":3}, {"label":"Space", "x":3, "y":3, "w":2.25}, {"label":"Space", "x":5.25, "y":3, "w":1.25}, {"label":"Space", "x":6.5, "y":3, "w":2.75}, {"label":"Left", "x":9.75, "y":3}, {"label":"Down", "x":10.75, "y":3}, {"label":"Right", "x":11.75, "y":3}] + } + } +} diff --git a/keyboards/cannonkeys/vicious40/keymaps/default/keymap.c b/keyboards/cannonkeys/vicious40/keymaps/default/keymap.c new file mode 100644 index 000000000000..25959e719eca --- /dev/null +++ b/keyboards/cannonkeys/vicious40/keymaps/default/keymap.c @@ -0,0 +1,52 @@ +/* +Copyright 2012,2013 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +enum layer_names { + _BASE, + _FN1, + _FN2 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_BASE] = LAYOUT_default( + KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_SLSH, + KC_LCTL, KC_LGUI, KC_LALT, LT(_FN1, KC_SPC), KC_SPC, LT(_FN2, KC_SPC), KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_FN1] = LAYOUT_default( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_TRNS, KC_TRNS, KC_TRNS, KC_QUOT, KC_BSLS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END + ), + + [_FN2] = LAYOUT_default( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_INS, + KC_TRNS, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_INC, BL_TOGG, + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_BRTG + ) +}; diff --git a/keyboards/cannonkeys/vicious40/keymaps/via/keymap.c b/keyboards/cannonkeys/vicious40/keymaps/via/keymap.c new file mode 100644 index 000000000000..fa74f8271e42 --- /dev/null +++ b/keyboards/cannonkeys/vicious40/keymaps/via/keymap.c @@ -0,0 +1,60 @@ +/* +Copyright 2012,2013 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +enum layer_names { + _BASE, + _FN1, + _FN2, + _FN3 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_BASE] = LAYOUT_default( + KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_SLSH, + KC_LCTL, KC_LGUI, KC_LALT, LT(_FN1, KC_SPC), KC_SPC, LT(_FN2, KC_SPC), KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_FN1] = LAYOUT_default( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_TRNS, KC_TRNS, KC_TRNS, KC_QUOT, KC_BSLS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END + ), + + [_FN2] = LAYOUT_default( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_INS, + KC_TRNS, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_INC, BL_TOGG, + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_BRTG + ), + + [_FN3] = LAYOUT_default( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/cannonkeys/vicious40/keymaps/via/rules.mk b/keyboards/cannonkeys/vicious40/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/cannonkeys/vicious40/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/cannonkeys/vicious40/mcuconf.h b/keyboards/cannonkeys/vicious40/mcuconf.h new file mode 100644 index 000000000000..54e614d1c2c5 --- /dev/null +++ b/keyboards/cannonkeys/vicious40/mcuconf.h @@ -0,0 +1,28 @@ +/* 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/cannonkeys/savage65/mcuconf.h -r platforms/chibios/GENERIC_STM32_F072XB/configs/mcuconf.h` + */ + +#pragma once + +#include_next + +#undef STM32_PWM_USE_TIM3 +#define STM32_PWM_USE_TIM3 TRUE + diff --git a/keyboards/cannonkeys/vicious40/readme.md b/keyboards/cannonkeys/vicious40/readme.md new file mode 100644 index 000000000000..741902fe2d59 --- /dev/null +++ b/keyboards/cannonkeys/vicious40/readme.md @@ -0,0 +1,12 @@ +# CannonKeys Vicious40 + +Vicious40 Keyboard + +* Keyboard Maintainer: [Andrew Kannan](https://github.com/awkannan) +* Hardware Supported: STM32F072CBT6 or APM32F072CBT6 + +Make example for this keyboard (after setting up your build environment): + + make cannonkeys/vicious40: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/cannonkeys/vicious40/rules.mk b/keyboards/cannonkeys/vicious40/rules.mk new file mode 100644 index 000000000000..f5f8884088ba --- /dev/null +++ b/keyboards/cannonkeys/vicious40/rules.mk @@ -0,0 +1,25 @@ +# MCU name +MCU = STM32F072 + +# Bootloader selection +BOOTLOADER = stm32-dfu + +# Wildcard to allow APM32 MCU +DFU_SUFFIX_ARGS = -p FFFF -v FFFF + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# 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 = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/cannonkeys/vicious40/vicious40.c b/keyboards/cannonkeys/vicious40/vicious40.c new file mode 100644 index 000000000000..ae8ca5082b39 --- /dev/null +++ b/keyboards/cannonkeys/vicious40/vicious40.c @@ -0,0 +1,17 @@ + /* Copyright 2021 Andrew Kannan + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "vicious40.h" diff --git a/keyboards/cannonkeys/vicious40/vicious40.h b/keyboards/cannonkeys/vicious40/vicious40.h new file mode 100644 index 000000000000..fd48716748ab --- /dev/null +++ b/keyboards/cannonkeys/vicious40/vicious40.h @@ -0,0 +1,33 @@ + /* Copyright 2021 Andrew Kannan + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define XXXX KC_NO + +#define LAYOUT_default( \ + 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, K306, K309, K310, K311 \ +) { \ + { 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, XXXX, K306, XXXX, XXXX, K309, K310, K311 } \ +} diff --git a/keyboards/capsunlocked/cu65/cu65.h b/keyboards/capsunlocked/cu65/cu65.h index dafaba3322b6..78bed765c4dc 100644 --- a/keyboards/capsunlocked/cu65/cu65.h +++ b/keyboards/capsunlocked/cu65/cu65.h @@ -65,3 +65,17 @@ along with this program. If not, see . { K300, K301, KC_NO,K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315 }, \ { K400, K401, K402, KC_NO,KC_NO,KC_NO,KC_NO,K407, KC_NO,KC_NO,K410, KC_NO,K412, K413, K414, K415 } \ } + +#define LAYOUT_65_iso_blocker_split_bs( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, \ + K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K115, \ + K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, \ + K300, K301, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, \ + K400, K401, K402, K407, K410, K412, K413, K414, K415 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \ + { K100, KC_NO,K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, KC_NO,K115 }, \ + { K200, KC_NO,K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \ + { K300, K301, KC_NO,K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315 }, \ + { K400, K401, K402, KC_NO,KC_NO,KC_NO,KC_NO,K407, KC_NO,KC_NO,K410, KC_NO,K412, K413, K414, K415 } \ +} diff --git a/keyboards/capsunlocked/cu65/info.json b/keyboards/capsunlocked/cu65/info.json index 4f8f08a2f5fc..0e5390ae5e9b 100644 --- a/keyboards/capsunlocked/cu65/info.json +++ b/keyboards/capsunlocked/cu65/info.json @@ -2,8 +2,6 @@ "keyboard_name": "CU65", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ @@ -233,6 +231,83 @@ {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4} ] + }, + "LAYOUT_65_iso_blocker_split_bs": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"!", "x":1, "y":0}, + {"label":"@", "x":2, "y":0}, + {"label":"#", "x":3, "y":0}, + {"label":"$", "x":4, "y":0}, + {"label":"%", "x":5, "y":0}, + {"label":"^", "x":6, "y":0}, + {"label":"&", "x":7, "y":0}, + {"label":"*", "x":8, "y":0}, + {"label":"(", "x":9, "y":0}, + {"label":")", "x":10, "y":0}, + {"label":"_", "x":11, "y":0}, + {"label":"+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0}, + {"label":"Delete", "x":14, "y":0}, + {"label":"Insert", "x":15, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"{", "x":11.5, "y":1}, + {"label":"}", "x":12.5, "y":1}, + {"label":"Home", "x":15, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":":", "x":10.75, "y":2}, + {"label":"\"", "x":11.75, "y":2}, + {"label":"~", "x":12.75, "y":2}, + {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, + {"label":"PgUp", "x":15, "y":2}, + + {"label":"Shift", "x":0, "y":3, "w":1.25}, + {"label":"|", "x":1.25, "y":3}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"\u2191", "x":14, "y":3}, + {"label":"PgDn", "x":15, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"Win", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space", "x":3.75, "y":4, "w":6.25}, + {"label":"Alt", "x":10, "y":4, "w":1.25}, + {"label":"Fn", "x":11.25, "y":4, "w":1.25}, + {"label":"\u2190", "x":13, "y":4}, + {"label":"\u2193", "x":14, "y":4}, + {"label":"\u2192", "x":15, "y":4} + ] } } } diff --git a/keyboards/capsunlocked/cu65/keymaps/iso_split_bs/keymap.c b/keyboards/capsunlocked/cu65/keymaps/iso_split_bs/keymap.c new file mode 100644 index 000000000000..2de0de76b48e --- /dev/null +++ b/keyboards/capsunlocked/cu65/keymaps/iso_split_bs/keymap.c @@ -0,0 +1,61 @@ +/* +Copyright 2020 CapsUnlocked + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_iso_blocker_split_bs( + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Bsp│Del│Ins│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │Hom│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent├───┤ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │ │Pg+│ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤ + * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │Pg-│ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │Ctrl│LGUI│LAlt│ Space │RAlt│ L1 │ │ ← │ ↓ │ → │ + * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + */ + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS, + 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_HOME, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_iso_blocker_split_bs( + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │RST│ F1│ F2│ F3│ F4│ F5│ F6│ F7│ F8│ F9│F10│F11│F12│ │ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ├───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ + * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + */ + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/capsunlocked/cu65/keymaps/iso_split_bs/readme.md b/keyboards/capsunlocked/cu65/keymaps/iso_split_bs/readme.md new file mode 100644 index 000000000000..5ec6b24d12b7 --- /dev/null +++ b/keyboards/capsunlocked/cu65/keymaps/iso_split_bs/readme.md @@ -0,0 +1 @@ +# A 69-key variant of the ISO keymap for CU65 (w/ split Backspace) diff --git a/keyboards/capsunlocked/cu65/rules.mk b/keyboards/capsunlocked/cu65/rules.mk index 520df45ab1e1..0577bad38725 100644 --- a/keyboards/capsunlocked/cu65/rules.mk +++ b/keyboards/capsunlocked/cu65/rules.mk @@ -1,24 +1,21 @@ # MCU name MCU = atmega32u4 -# Bootloader +# Bootloader selection BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 -LAYOUTS = 65_ansi_blocker 65_iso_blocker +LAYOUTS = 65_ansi_blocker 65_iso_blocker 65_iso_blocker_split_bs diff --git a/keyboards/capsunlocked/cu7/config.h b/keyboards/capsunlocked/cu7/config.h new file mode 100644 index 000000000000..cc22be0f0258 --- /dev/null +++ b/keyboards/capsunlocked/cu7/config.h @@ -0,0 +1,72 @@ +/* +Copyright 2021 CapsUnlocked + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4355 +#define PRODUCT_ID 0x0007 +#define DEVICE_VER 0x0001 +#define MANUFACTURER CapsUnlocked +#define PRODUCT CU7 + +/* key matrix size */ +#define MATRIX_ROWS 3 +#define MATRIX_COLS 3 + +/* + * 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 ENCODER_RESOLUTION 2 + +#define ENCODERS_PAD_A { D6 } +#define ENCODERS_PAD_B { D4 } + +#define MATRIX_ROW_PINS { D7, F0, F6 } +#define MATRIX_COL_PINS { F5, F7, F4 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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 RGB_DI_PIN F1 +#ifdef RGB_DI_PIN +#define RGBLIGHT_ANIMATIONS +// #define RGBLIGHT_EFFECT_BREATHING +#define RGBLED_NUM 6 +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 17 +#define RGBLIGHT_VAL_STEP 17 +#define RGBLIGHT_LIMIT_VAL 50 +#endif diff --git a/keyboards/capsunlocked/cu7/cu7.c b/keyboards/capsunlocked/cu7/cu7.c new file mode 100644 index 000000000000..815ac53c9409 --- /dev/null +++ b/keyboards/capsunlocked/cu7/cu7.c @@ -0,0 +1,14 @@ +/* +Copyright 2021 CapsUnlocked +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "cu7.h" diff --git a/keyboards/capsunlocked/cu7/cu7.h b/keyboards/capsunlocked/cu7/cu7.h new file mode 100644 index 000000000000..2f30dbb2d57e --- /dev/null +++ b/keyboards/capsunlocked/cu7/cu7.h @@ -0,0 +1,36 @@ +/* +Copyright 2021 CapsUnlocked +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "quantum.h" + +/* This a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + +#define LAYOUT( \ + K01, \ + K10, K11, K12, \ + K20, K21, K22 \ +) { \ + { KC_NO, K01, KC_NO }, \ + { K10, K11, K12 }, \ + { K20, K21, K22 } \ +} + diff --git a/keyboards/capsunlocked/cu7/info.json b/keyboards/capsunlocked/cu7/info.json new file mode 100644 index 000000000000..9d1d84354d38 --- /dev/null +++ b/keyboards/capsunlocked/cu7/info.json @@ -0,0 +1,20 @@ +{ + "keyboard_name": "CU7", + "url": "https://caps-unlocked.com/cu7/", + "maintainer": "rys", + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0.5, "y":0, "w":2, "h":2}, + + {"x":0, "y":2.5}, + {"x":1, "y":2.5}, + {"x":2, "y":2.5}, + + {"x":0, "y":3.5}, + {"x":1, "y":3.5}, + {"x":2, "y":3.5} + ] + } + } +} diff --git a/keyboards/capsunlocked/cu7/keymaps/default/keymap.c b/keyboards/capsunlocked/cu7/keymaps/default/keymap.c new file mode 100644 index 000000000000..66ee4f7a9045 --- /dev/null +++ b/keyboards/capsunlocked/cu7/keymaps/default/keymap.c @@ -0,0 +1,42 @@ +/* +Copyright 2021 CapsUnlocked + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + MO(1), + KC_1, KC_2, KC_3, + KC_4, KC_5, KC_6 + ), + [1] = LAYOUT( + _______, + RGB_MOD, KC_UP, RESET, + KC_LEFT, KC_DOWN, KC_RGHT + ), +}; + +// Volume up/down on the encoder +bool encoder_update_user(uint8_t index, bool clockwise) { + if (clockwise) { + tap_code_delay(KC_VOLU, 10); + } + else { + tap_code_delay(KC_VOLD, 10); + } + + return true; +} diff --git a/keyboards/capsunlocked/cu7/keymaps/default/readme.md b/keyboards/capsunlocked/cu7/keymaps/default/readme.md new file mode 100644 index 000000000000..e6123685748a --- /dev/null +++ b/keyboards/capsunlocked/cu7/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for CU7 \ No newline at end of file diff --git a/keyboards/capsunlocked/cu7/readme.md b/keyboards/capsunlocked/cu7/readme.md new file mode 100644 index 000000000000..bd5759a3971a --- /dev/null +++ b/keyboards/capsunlocked/cu7/readme.md @@ -0,0 +1,15 @@ +# CU7 + +The CU7 is a customisable 3x2 key macropad with a clickable rotary encoder. + +To place the keyboard into bootloader mode in order to flash it, use the reset button on the PCB. + +* Keyboard maintainer: [rys](https://github.com/rys) +* Hardware supported: CU7 +* Hardware availability: [CapsUnlocked](https://caps-unlocked.com/cu7/) + +Make and flash example for this keyboard (after setting up your build environment): + + make capsunlocked/cu7:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/capsunlocked/cu7/rules.mk b/keyboards/capsunlocked/cu7/rules.mk new file mode 100644 index 000000000000..254c5dbfc9c2 --- /dev/null +++ b/keyboards/capsunlocked/cu7/rules.mk @@ -0,0 +1,20 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes diff --git a/keyboards/capsunlocked/cu80/v2_ansi/info.json b/keyboards/capsunlocked/cu80/v2_ansi/info.json index f4b8a1f70956..f0317de36d54 100644 --- a/keyboards/capsunlocked/cu80/v2_ansi/info.json +++ b/keyboards/capsunlocked/cu80/v2_ansi/info.json @@ -2,8 +2,6 @@ "manufacturer": "CapsUnlocked", "keyboard_name": "CapsUnlocked CU80 v2 ANSI", "maintainer": "rys / maz0r", - "height": 6.5, - "width": 18.25, "bootloader": "atmel-dfu", "debounce": 5, "diode_direction": "COL2ROW", @@ -11,7 +9,7 @@ "audio": false, "backlight": false, "bluetooth": false, - "bootmagic_lite": true, + "bootmagic": true, "command": false, "console": false, "extrakey": true, diff --git a/keyboards/capsunlocked/cu80/v2_ansi/rgb/config.h b/keyboards/capsunlocked/cu80/v2_ansi/rgb/config.h index 7e0f0bfccdf4..00a05ad7da01 100644 --- a/keyboards/capsunlocked/cu80/v2_ansi/rgb/config.h +++ b/keyboards/capsunlocked/cu80/v2_ansi/rgb/config.h @@ -26,6 +26,54 @@ along with this program. If not, see . /* moved to RGB specific */ #define RGB_MATRIX_KEYPRESSES #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 50 +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH /* RGB firmware override */ #undef RGBLIGHT_ANIMATIONS diff --git a/keyboards/capsunlocked/cu80/v2_iso/info.json b/keyboards/capsunlocked/cu80/v2_iso/info.json index fd572704d950..c3321560695c 100644 --- a/keyboards/capsunlocked/cu80/v2_iso/info.json +++ b/keyboards/capsunlocked/cu80/v2_iso/info.json @@ -2,8 +2,6 @@ "manufacturer": "CapsUnlocked", "keyboard_name": "CapsUnlocked CU80 v2 ISO", "maintainer": "rys / maz0r", - "height": 6.5, - "width": 18.25, "bootloader": "atmel-dfu", "debounce": 5, "diode_direction": "COL2ROW", @@ -11,7 +9,7 @@ "audio": false, "backlight": false, "bluetooth": false, - "bootmagic_lite": true, + "bootmagic": true, "command": false, "console": false, "extrakey": true, diff --git a/keyboards/capsunlocked/cu80/v2_iso/rgb/config.h b/keyboards/capsunlocked/cu80/v2_iso/rgb/config.h index 3f784e2e0634..dbe9143b8bcc 100644 --- a/keyboards/capsunlocked/cu80/v2_iso/rgb/config.h +++ b/keyboards/capsunlocked/cu80/v2_iso/rgb/config.h @@ -25,6 +25,54 @@ along with this program. If not, see . /* moved to RGB specific */ #define RGB_MATRIX_KEYPRESSES #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 50 +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH /* RGB firmware override */ #undef RGBLIGHT_ANIMATIONS diff --git a/keyboards/carbo65/info.json b/keyboards/carbo65/info.json index 27b44b9529fe..7adfc8c04bed 100644 --- a/keyboards/carbo65/info.json +++ b/keyboards/carbo65/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Carbo65", "url": "https://yiancar-designs.com", "maintainer": "Yiancar-Designs", - "width": 16, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] diff --git a/keyboards/carbo65/rules.mk b/keyboards/carbo65/rules.mk index 6a7c2ca63be9..26154419de13 100644 --- a/keyboards/carbo65/rules.mk +++ b/keyboards/carbo65/rules.mk @@ -12,16 +12,13 @@ OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/cassette42/common/oled_helper.c b/keyboards/cassette42/common/oled_helper.c index de908f128aaa..8800699a8501 100644 --- a/keyboards/cassette42/common/oled_helper.c +++ b/keyboards/cassette42/common/oled_helper.c @@ -1,4 +1,4 @@ -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE # include QMK_KEYBOARD_H # include # include diff --git a/keyboards/cassette42/common/oled_helper.h b/keyboards/cassette42/common/oled_helper.h index 6c2680664cd1..daeb7bfa4d5f 100644 --- a/keyboards/cassette42/common/oled_helper.h +++ b/keyboards/cassette42/common/oled_helper.h @@ -1,4 +1,4 @@ -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE void render_logo(void); @@ -19,4 +19,4 @@ void render_led_status(void); # define UPDATE_LED_STATUS() # define RENDER_LED_STATUS(a) -#endif \ No newline at end of file +#endif diff --git a/keyboards/cassette42/info.json b/keyboards/cassette42/info.json index f792797ec885..87c67df95165 100644 --- a/keyboards/cassette42/info.json +++ b/keyboards/cassette42/info.json @@ -2,11 +2,9 @@ "keyboard_name": "cassette42", "url": "http://www.sho-k.co.uk/tech/1246.html", "maintainer": "monksoffunk", - "width": 4, - "height": 2.75, "layouts": { "LAYOUT": { "layout": [{"x":0.5, "y":0.75}, {"x":2.5, "y":0.75}, {"x":0, "y":1.75}, {"x":1, "y":1.75}, {"x":2, "y":1.75}, {"x":3, "y":1.75}] } } -} \ No newline at end of file +} diff --git a/keyboards/cassette42/keymaps/default/keymap.c b/keyboards/cassette42/keymaps/default/keymap.c index 4dc46d74e9e7..4943be9c7b3e 100644 --- a/keyboards/cassette42/keymaps/default/keymap.c +++ b/keyboards/cassette42/keymaps/default/keymap.c @@ -64,7 +64,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return true; } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE # include # include @@ -101,17 +101,16 @@ void render_status(void) { RENDER_LED_STATUS(); } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { render_status(); } else { render_logo(); } + return false; } #endif -void led_set_user(uint8_t usb_led) {} - bool encoder_update_user(uint8_t index, bool clockwise) { oled_on(); if (index == 0) { /* left encoder */ diff --git a/keyboards/cassette42/rules.mk b/keyboards/cassette42/rules.mk index 4fd8e384b354..a3dc47ee8759 100644 --- a/keyboards/cassette42/rules.mk +++ b/keyboards/cassette42/rules.mk @@ -7,20 +7,18 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 SRC += ./common/oled_helper.c diff --git a/keyboards/catch22/info.json b/keyboards/catch22/info.json index eb95b8561dd9..94e2128536cc 100644 --- a/keyboards/catch22/info.json +++ b/keyboards/catch22/info.json @@ -1,7 +1,5 @@ { "keyboard_name": "catch22", - "width": 5, - "height": 5, "layouts": { "LAYOUT": { "layout": [{"label":"A", "x":1, "y":0}, {"label":"B", "x":2, "y":0}, {"label":"C", "x":3, "y":0}, {"label":"D", "x":4, "y":0}, {"label":"E", "x":1, "y":1}, {"label":"F", "x":2, "y":1}, {"label":"G", "x":3, "y":1}, {"label":"H", "x":4, "y":1}, {"label":"I", "x":0, "y":2}, {"label":"J", "x":1, "y":2}, {"label":"K", "x":2, "y":2}, {"label":"L", "x":3, "y":2}, {"label":"M", "x":4, "y":2}, {"label":"1", "x":0, "y":3, "h":2}, {"label":"N", "x":1, "y":3}, {"label":"O", "x":2, "y":3}, {"label":"P", "x":3, "y":3}, {"label":"Q", "x":4, "y":3}, {"label":"R", "x":1, "y":4}, {"label":"S", "x":2, "y":4}, {"label":"T", "x":3, "y":4}, {"label":"U", "x":4, "y":4}] diff --git a/keyboards/catch22/rules.mk b/keyboards/catch22/rules.mk index 1622b95c5aa5..9bee718f8223 100644 --- a/keyboards/catch22/rules.mk +++ b/keyboards/catch22/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # Audio control and System control 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 = no # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work 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 diff --git a/keyboards/centromere/info.json b/keyboards/centromere/info.json index 8fb421313012..839a4ec84ae9 100644 --- a/keyboards/centromere/info.json +++ b/keyboards/centromere/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Centromere", "url": "", "maintainer": "spe2", - "width": 14, - "height": 4, "layouts": { "LAYOUT_split_3x6_3": { "layout": [ diff --git a/keyboards/centromere/keymaps/default_u2/rules.mk b/keyboards/centromere/keymaps/default_u2/rules.mk index 5fdb02af5ac1..6ab81f6b120c 100644 --- a/keyboards/centromere/keymaps/default_u2/rules.mk +++ b/keyboards/centromere/keymaps/default_u2/rules.mk @@ -2,11 +2,4 @@ MCU = atmega32u2 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu diff --git a/keyboards/centromere/rules.mk b/keyboards/centromere/rules.mk index 2469d244a64b..e74f0bdf24fc 100644 --- a/keyboards/centromere/rules.mk +++ b/keyboards/centromere/rules.mk @@ -5,31 +5,20 @@ MCU = atmega32u4 F_CPU = 8000000 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration CUSTOM_MATRIX = yes # Remote matrix from the wireless bridge -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls UNICODE_ENABLE = yes # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID # # project specific files SRC += matrix.c serial_uart.c diff --git a/keyboards/cest73/tkm/config.h b/keyboards/cest73/tkm/config.h new file mode 100644 index 000000000000..e925f397150a --- /dev/null +++ b/keyboards/cest73/tkm/config.h @@ -0,0 +1,55 @@ + /* Copyright 2021 cest73 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xBADD +#define PRODUCT_ID 0xAA55 +#define DEVICE_VER 0x0001 +#define MANUFACTURER cest73 +#define PRODUCT TKM-2021 R1.03 + +/* key matrix size */ +#define MATRIX_ROWS 11 +#define MATRIX_COLS 10 + +/* matrix sz handy ruler: 1 2 3 4 5 6 7 8 9 10 11 12 */ +/* key matrix pins */ +/* row handy ruler: r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 */ +#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, B5, B6, B7, C6, C7, D0 } +/* column handy ruler: c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 */ +#define MATRIX_COL_PINS { D1, D2, D3, D4, D5, D6, D7, F0, F1, F4 } +#define UNUSED_PINS { } + +//NOTE: if D6 pin shows any issues in exploatation the LED on the Teensy is to be removed + +#define LED_NUM_LOCK_PIN F6 +#define LED_CAPS_LOCK_PIN F5 +#define LED_SCROLL_LOCK_PIN F7 +#define LED_PIN_ON_STATE 0 +//TODO change the E6 pin to either B5, B6, B7 or C6 to utilize hardware PWM on a future PCB revision +#define BACKLIGHT_PIN E6 + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* force n-key rollover*/ +#define FORCE_NKRO diff --git a/keyboards/cest73/tkm/info.json b/keyboards/cest73/tkm/info.json new file mode 100644 index 000000000000..c37cfcadb618 --- /dev/null +++ b/keyboards/cest73/tkm/info.json @@ -0,0 +1,126 @@ +{ + "keyboard_name": "TKM 2021", + "url": "https://geekhack.org/index.php?topic=110499", + "maintainer": "cest73 (aka fire-h0und)", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"Fn", "x":0, "y":0}, + {"label":"PrtSc", "x":1, "y":0}, + {"label":"Scroll Lock", "x":2, "y":0}, + {"label":"Pause", "x":3, "y":0}, + {"label":"Esc", "x":4.5, "y":0}, + {"label":"F1", "x":6, "y":0}, + {"label":"F2", "x":7, "y":0}, + {"label":"F3", "x":8, "y":0}, + {"label":"F4", "x":9, "y":0}, + {"label":"F5", "x":10.25, "y":0}, + {"label":"F6", "x":11.25, "y":0}, + {"label":"F7", "x":12.25, "y":0}, + {"label":"F8", "x":13.25, "y":0}, + {"label":"F9", "x":14.5, "y":0}, + {"label":"F10", "x":15.5, "y":0}, + {"label":"F11", "x":16.5, "y":0}, + {"label":"F12", "x":17.5, "y":0}, + {"label":"Home", "x":19, "y":0}, + {"label":"PgUp", "x":20, "y":0}, + + {"label":"-", "x":0, "y":1.5}, + {"label":"*", "x":1, "y":1.5}, + {"label":"/", "x":2, "y":1.5}, + {"label":"Num Lock", "x":3, "y":1.5}, + {"label":"~", "x":4.5, "y":1.5}, + {"label":"!", "x":5.5, "y":1.5}, + {"label":"\"", "x":6.5, "y":1.5}, + {"label":"\u00a3", "x":7.5, "y":1.5}, + {"label":"$", "x":8.5, "y":1.5}, + {"label":"%", "x":9.5, "y":1.5}, + {"label":"^", "x":10.5, "y":1.5}, + {"label":"&", "x":11.5, "y":1.5}, + {"label":"*", "x":12.5, "y":1.5}, + {"label":"(", "x":13.5, "y":1.5}, + {"label":")", "x":14.5, "y":1.5}, + {"label":"_", "x":15.5, "y":1.5}, + {"label":"+", "x":16.5, "y":1.5}, + {"label":"Backspace", "x":17.5, "y":1.5}, + {"label":"Backspace", "x":18.5, "y":1.5}, + {"label":"Insert", "x":20, "y":1.5}, + + {"label":"+", "x":0, "y":2.5}, + {"label":"9", "x":1, "y":2.5}, + {"label":"8", "x":2, "y":2.5}, + {"label":"7", "x":3, "y":2.5}, + {"label":"Tab", "x":4.5, "y":2.5, "w":1.5}, + {"label":"Q", "x":6, "y":2.5}, + {"label":"W", "x":7, "y":2.5}, + {"label":"E", "x":8, "y":2.5}, + {"label":"R", "x":9, "y":2.5}, + {"label":"T", "x":10, "y":2.5}, + {"label":"Y", "x":11, "y":2.5}, + {"label":"U", "x":12, "y":2.5}, + {"label":"I", "x":13, "y":2.5}, + {"label":"O", "x":14, "y":2.5}, + {"label":"P", "x":15, "y":2.5}, + {"label":"{", "x":16, "y":2.5}, + {"label":"}", "x":17, "y":2.5}, + {"label":"Backslash", "x":18, "y":2.5, "w":1.5}, + {"label":"Delete", "x":20, "y":2.5}, + + {"label":"+", "x":0, "y":3.5}, + {"label":"6", "x":1, "y":3.5}, + {"label":"5", "x":2, "y":3.5}, + {"label":"4", "x":3, "y":3.5}, + {"label":"CAPS", "x":4.5, "y":3.5, "w":1.25}, + {"label":"A", "x":6.25, "y":3.5}, + {"label":"S", "x":7.25, "y":3.5}, + {"label":"D", "x":8.25, "y":3.5}, + {"label":"F", "x":9.25, "y":3.5}, + {"label":"G", "x":10.25, "y":3.5}, + {"label":"H", "x":11.25, "y":3.5}, + {"label":"J", "x":12.25, "y":3.5}, + {"label":"K", "x":13.25, "y":3.5}, + {"label":"L", "x":14.25, "y":3.5}, + {"label":":", "x":15.25, "y":3.5}, + {"label":"@", "x":16.25, "y":3.5}, + {"label":"|", "x":17.25, "y":3.5}, + {"label":"Enter", "x":18.25, "y":3.5, "w":1.25}, + {"label":"PgDn", "x":20, "y":3.5}, + + {"label":"Enter", "x":0, "y":4.5}, + {"label":"3", "x":1, "y":4.5}, + {"label":"2", "x":2, "y":4.5}, + {"label":"1", "x":3, "y":4.5}, + {"label":"Shift", "x":4.5, "y":4.5, "w":1.25}, + {"label":"|", "x":5.75, "y":4.5}, + {"label":"Z", "x":6.75, "y":4.5}, + {"label":"X", "x":7.75, "y":4.5}, + {"label":"C", "x":8.75, "y":4.5}, + {"label":"V", "x":9.75, "y":4.5}, + {"label":"B", "x":10.75, "y":4.5}, + {"label":"N", "x":11.75, "y":4.5}, + {"label":"M", "x":12.75, "y":4.5}, + {"label":"<", "x":13.75, "y":4.5}, + {"label":">", "x":14.75, "y":4.5}, + {"label":"?", "x":15.75, "y":4.5}, + {"label":"Shift", "x":16.75, "y":4.5, "w":1.75}, + {"label":"\u2191", "x":18.75, "y":4.75}, + {"label":"End", "x":20, "y":4.5}, + + {"label":"Enter", "x":0, "y":5.5}, + {"label":".", "x":1, "y":5.5}, + {"label":",", "x":2, "y":5.5}, + {"label":"0", "x":3, "y":5.5}, + {"label":"Ctrl", "x":4.5, "y":5.5, "w":1.25}, + {"label":"Win", "x":5.75, "y":5.5}, + {"label":"Alt", "x":6.75, "y":5.5, "w":1.25}, + {"label":"Space", "x":8, "y":5.5, "w":6.25}, + {"label":"AltGr", "x":14.25, "y":5.5}, + {"label":"Menu", "x":15.25, "y":5.5}, + {"label":"Ctrl", "x":16.25, "y":5.5, "w":1.25}, + {"label":"\u2190", "x":17.75, "y":5.75}, + {"label":"\u2193", "x":18.75, "y":5.75}, + {"label":"\u2192", "x":19.75, "y":5.75} + ] + } + } +} diff --git a/keyboards/cest73/tkm/keymaps/default/keymap.c b/keyboards/cest73/tkm/keymaps/default/keymap.c new file mode 100644 index 000000000000..0fa9ea921ded --- /dev/null +++ b/keyboards/cest73/tkm/keymaps/default/keymap.c @@ -0,0 +1,79 @@ + /* Copyright 2021 cest73 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN +}; + +/* + * ┌───┬───┬───┬───┐ ┌───┐ ┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐ ┌───┬───┐ + * │Fn │PSc│Scr│Pse│ │Esc│ │F1 │F2 │F3 │F4 ││F5 │F6 │F7 │F8 ││F9 │F10│F11│F12│ │Hme│PgU│ + * └───┴───┴───┴───┘ └───┘ └───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘ └───┴───┘ + * + * ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┐ + * │ - │ * │ / │Num│ │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Bsl│Bsp│ │Ins│ + * ├───┼───┼───┼───┤ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┤ + * │ + │ 9 │ 8 │ 7 │ │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │  \  │ │Del│ + * ├───┼───┼───┼───┤ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬────│ ├───┤ + * │ = │ 6 │ 5 │ 4 │ │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │Etl│ Ent│ │PgD│ + * ├───┼───┼───┼───┤ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┘ ├───┤ + * │Tab│ 3 │ 2 │ 1 │ │Shft│Shl│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│┌───┐│End│ + * ├───┼───┼───┼───┤ ├────┼───┼───┴┬──┴───┴───┴───┴───┴───┴─┬─┴─┬─┴─┬─┴──┬───┘│ ↑ │└───┘ + * │Ent│ . │ , │ 0 │ │Ctrl│GUI│Alt │                        │Alt│Mnu│Ctrl│┌───┼───┼───┐ + * └───┴───┴───┴───┘ └────┴───┴────┴────────────────────────┴───┴───┴────┘│ ← │ ↓ │ → │ + * └───┴───┴───┘ + */ + /* + * ┌───┬───┬───┬───┐ ┌───┐ ┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐ ┌───┬───┐ + * │ │ │ │ │ │Rst│ │  │  │  │  ││  │  │  │  ││  │ │ │ │ │ │ │ + * └───┴───┴───┴───┘ └───┘ └───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘ └───┴───┘ + * + * ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┐ + * │ │   │   │ │ │   │   │   │   │   │   │   │   │   │   │   │   │   │ │ │ │ │ + * ├───┼───┼───┼───┤ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┤ + * │   │   │   │   │ │   │   │   │   │   │   │   │   │   │   │   │   │   │     │ │ │ + * ├───┼───┼───┼───┤ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬────│ ├───┤ + * │   │   │   │   │ │  │   │   │   │   │   │ ← │ ↑ │ ↓ │ → │   │   │ │ Ent│ │ │ + * ├───┼───┼───┼───┤ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┘ ├───┤ + * │ │   │   │   │ │Shft│ │   │   │   │   │   │   │   │   │   │   │ Shift│┌───┐│ │ + * ├───┼───┼───┼───┤ ├────┼───┼───┴┬──┴───┴───┴───┴───┴───┴─┬─┴─┬─┴─┬─┴──┬───┘│ ↑ │└───┘ + * │ │   │  │   │ │Ctrl│GUI│Alt │                        │Alt│Mnu│Ctrl│┌───┼───┼───┐ + * └───┴───┴───┴───┘ └────┴───┴────┴────────────────────────┴───┴───┴────┘│ ← │ ↓ │ → │ + * └───┴───┴───┘ + */ + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_all( + MO(1), KC_PSCR, KC_SLCK, KC_PAUS, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_HOME, KC_PGUP, + KC_PMNS, KC_PAST, KC_PSLS, KC_NLCK, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, KC_INS, + KC_PPLS, KC_P9, KC_P8, KC_P7, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_PEQL, KC_P6, KC_P5, KC_P4, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN, + KC_TAB, KC_P3, KC_P2, KC_P1, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_PENT, KC_PDOT, KC_PCMM, KC_P0, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_FN] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/cest73/tkm/readme.md b/keyboards/cest73/tkm/readme.md new file mode 100644 index 000000000000..947cc2677961 --- /dev/null +++ b/keyboards/cest73/tkm/readme.md @@ -0,0 +1,22 @@ +# Ten Key Mirrored - 2021 + +![TKM-2021](https://imgur.com/AlvRk1zh.jpg) + +Another take on left side numpad and this time mirrored too for the ever more spacious mouse playground. + +* Keyboard Maintainer: cest73 (aka fire-h0und) +* Hardware Supported: TKM-2021 (multiple layouts and switch options including ALPS, ISO and BAE) +* Hardware Availability: https://geekhack.org/index.php?topic=110499 + + +Make example for this keyboard (after setting up your build environment): + + qmk compile -kb cest73/tkm -km default + +As the board uses Teensy 2.0 as a daughter board, to bring the board into flash mode is it sufficient to press the button present on the Teensy. + +[TKM-2021 PCB](https://geekhack.org/index.php?action=dlattach;topic=110499.0;attach=268641;image) + +Despite many hours gazing over the schematics there was a nasty error on the first batch: namely the 6 and 7 columns got swapped in the design process. Luckily it was trivial to fix in the firmware section (see the comments in the layout file(s)). + +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/cest73/tkm/rules.mk b/keyboards/cest73/tkm/rules.mk new file mode 100644 index 000000000000..06942aca7856 --- /dev/null +++ b/keyboards/cest73/tkm/rules.mk @@ -0,0 +1,19 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = halfkay + +# 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 +# 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 = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/cest73/tkm/tkm.c b/keyboards/cest73/tkm/tkm.c new file mode 100644 index 000000000000..b127e9eb5317 --- /dev/null +++ b/keyboards/cest73/tkm/tkm.c @@ -0,0 +1,16 @@ + /* Copyright 2021 cest73 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "tkm.h" diff --git a/keyboards/cest73/tkm/tkm.h b/keyboards/cest73/tkm/tkm.h new file mode 100644 index 000000000000..e846f5f597c5 --- /dev/null +++ b/keyboards/cest73/tkm/tkm.h @@ -0,0 +1,66 @@ + /* Copyright 2021 cest73 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +/* This a shortcut to help you visually see your layout. + * The first section contains "names" for physical keys of the keyboard + * and defines their position on the board. + * The second section defines position of the keys on the switch matrix + * (where COLUMNS and ROWS crosses). + This looks so much better in an terminal window :-(*/ + /* + * ┌───┬───┬───┬───┐ ┌───┐ ┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐ ┌───┬───┐ + * │Fn │PSc│Scr│Pse│ │Esc│ │F1 │F2 │F3 │F4 ││F5 │F6 │F7 │F8 ││F9 │F10│F11│F12│ │Hme│PgU│ + * └───┴───┴───┴───┘ └───┘ └───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘ └───┴───┘ + * + * ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┐ + * │ - │ * │ / │Num│ │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Bsl│Bsp│ │Ins│ + * ├───┼───┼───┼───┤ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┤ + * │ + │ 9 │ 8 │ 7 │ │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │  \  │ │Del│ + * ├───┼───┼───┼───┤ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬────│ ├───┤ + * │ = │ 6 │ 5 │ 4 │ │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │Etl│ Ent│ │PgD│ + * ├───┼───┼───┼───┤ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┘ ├───┤ + * │Tab│ 3 │ 2 │ 1 │ │Shft│Shl│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│┌───┐│End│ + * ├───┼───┼───┼───┤ ├────┼───┼───┴┬──┴───┴───┴───┴───┴───┴─┬─┴─┬─┴─┬─┴──┬───┘│ ↑ │└───┘ + * │Ent│ . │ , │ 0 │ │Ctrl│GUI│Alt │                        │Alt│Mnu│Ctrl│┌───┼───┼───┐ + * └───┴───┴───┴───┘ └────┴───┴────┴────────────────────────┴───┴───┴────┘│ ← │ ↓ │ → │ + * └───┴───┴───┘ + */ +// due to a nasty PCB layout bug the R1.03 board has "6" and "7" keyboard coulmns swapped... + +#define LAYOUT_all( \ + k00, k10, k01, k11, k02, k12, k03, k13, k04, k14, k15, k05, k06, k16, k07, k17, k08, k18, k09, \ +\ + k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k35, k25, k26, k36, k27, k37, k28, k19, k38, k29, \ + k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k55, k45, k46, k56, k47, k57, k48, k58, k49, \ + k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k75, k65, k66, k76, k67, k77, k68, k78, k69, \ + k39, k90, k81, k91, k82, k92, k83, k93, k84, k94, k95, k85, k86, k96, k87, k97, k88, k98, k89, \ + k80, kA0, k59, kA1, kA2, kA3, kA4, kA5, kA6, kA7, kA8, kA9, k99, k79 \ +) { \ + { 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, k72, k73, k74, k75, k76, k77, k78, k79 }, \ + { k80, k81, k82, k83, k84, k85, k86, k87, k88, k89 }, \ + { k90, k91, k92, k93, k94, k95, k96, k97, k98, k99 }, \ + { kA0, kA1, kA2, kA3, kA4, kA5, kA6, kA7, kA8, kA9 } \ +} diff --git a/keyboards/chalice/chalice.c b/keyboards/chalice/chalice.c new file mode 100644 index 000000000000..1d7cc122284e --- /dev/null +++ b/keyboards/chalice/chalice.c @@ -0,0 +1,18 @@ +/* Copyright 2020 null-ll + * Copyright 2021 Jels, Josh Johnson + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "chalice.h" diff --git a/keyboards/chalice/chalice.h b/keyboards/chalice/chalice.h new file mode 100644 index 000000000000..c55cd4ba0b22 --- /dev/null +++ b/keyboards/chalice/chalice.h @@ -0,0 +1,60 @@ +/* Copyright 2020 null-ll + * Copyright 2021 Jels, Josh Johnson + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define ___ KC_NO + +#include "quantum.h" + +#define LAYOUT_default( \ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, K46, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K56, \ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K66, K76, \ + K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K86, K96, \ + K80, K91, K82, K92, K83, K93, K84, K94, K85, 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, K44, K45, K46 }, \ + { K50, K51, K52, K53, K54, K55, K56 }, \ + { K60, K61, K62, K63, K64, K65, K66 }, \ + { K70, K71, K72, K73, K74, K75, K76 }, \ + { K80, ___, K82, K83, K84, K85, K86 }, \ + { ___, K91, K92, K93, K94, K95, K96 } \ +} + +#define LAYOUT_split_bs( \ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, K46, K81, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K56, \ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K66, K76, \ + K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K86, K96, \ + K80, K91, K82, K92, K83, K93, K84, K94, K85, 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, K44, K45, K46 }, \ + { K50, K51, K52, K53, K54, K55, K56 }, \ + { K60, K61, K62, K63, K64, K65, K66 }, \ + { K70, K71, K72, K73, K74, K75, K76 }, \ + { K80, K81, K82, K83, K84, K85, K86 }, \ + { ___, K91, K92, K93, K94, K95, K96 } \ +} diff --git a/keyboards/chalice/config.h b/keyboards/chalice/config.h new file mode 100644 index 000000000000..75c34cacd0c6 --- /dev/null +++ b/keyboards/chalice/config.h @@ -0,0 +1,66 @@ +/* Copyright 2020 null-ll + * Copyright 2021 Jels, Josh Johnson + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +#define VENDOR_ID 0x6A6A +#define PRODUCT_ID 0x000C +#define DEVICE_VER 0x0001 +#define MANUFACTURER CustomKBD +#define PRODUCT Chalice + +/* key matrix size */ +#define MATRIX_ROWS 10 +#define MATRIX_COLS 7 + +#define MATRIX_ROW_PINS {F4, D1, D0, F5, D4, F6, B4, B5, B2, B6} +#define MATRIX_COL_PINS {F7, C6, B1, D2, E6, B3, D7} + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +#define RGB_DI_PIN D3 + +#ifdef RGBLIGHT_ENABLE + #define RGBLED_NUM 14 + #define RGBLIGHT_SLEEP +#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 +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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 + +/* Bootmagic Lite key configuration */ +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 + diff --git a/keyboards/chalice/info.json b/keyboards/chalice/info.json new file mode 100644 index 000000000000..77a3f7bc128e --- /dev/null +++ b/keyboards/chalice/info.json @@ -0,0 +1,160 @@ +{ + "keyboard_name": "Chalice", + "url": "https://customkbd.com/products/chalice-pre-order", + "maintainer": "joshajohnson, CustomKBD", + "layouts": { + "LAYOUT_default": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"`~", "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":10.5, "y":0}, + {"label":"8*", "x":11.5, "y":0}, + {"label":"9(", "x":12.5, "y":0}, + {"label":"0)", "x":13.5, "y":0}, + {"label":"-_", "x":14.5, "y":0}, + {"label":"=+", "x":15.5, "y":0}, + {"label":"Backspace", "x":16.5, "y":0, "w":2}, + + {"label":"Insert", "x":0, "y":1}, + {"label":"Tab", "x":1.5, "y":1, "w":1.5}, + {"label":"Q", "x":3, "y":1}, + {"label":"W", "x":4, "y":1}, + {"label":"E", "x":5, "y":1}, + {"label":"R", "x":6, "y":1}, + {"label":"T", "x":7, "y":1}, + {"label":"Y", "x":10, "y":1}, + {"label":"U", "x":11, "y":1}, + {"label":"I", "x":12, "y":1}, + {"label":"O", "x":13, "y":1}, + {"label":"P", "x":14, "y":1}, + {"label":"[{", "x":15, "y":1}, + {"label":"]}", "x":16, "y":1}, + {"label":"\\|", "x":17, "y":1, "w":1.5}, + + {"label":"Delete", "x":0, "y":2}, + {"label":"Caps Lock", "x":1.5, "y":2, "w":1.75}, + {"label":"A", "x":3.25, "y":2}, + {"label":"S", "x":4.25, "y":2}, + {"label":"D", "x":5.25, "y":2}, + {"label":"F", "x":6.25, "y":2}, + {"label":"G", "x":7.25, "y":2}, + {"label":"H", "x":10.25, "y":2}, + {"label":"J", "x":11.25, "y":2}, + {"label":"K", "x":12.25, "y":2}, + {"label":"L", "x":13.25, "y":2}, + {"label":";:", "x":14.25, "y":2}, + {"label":"'\"", "x":15.25, "y":2}, + {"label":"Enter", "x":16.25, "y":2, "w":2.25}, + + {"label":"Shift", "x":1.5, "y":3, "w":2.25}, + {"label":"Z", "x":3.75, "y":3}, + {"label":"X", "x":4.75, "y":3}, + {"label":"C", "x":5.75, "y":3}, + {"label":"V", "x":6.75, "y":3}, + {"label":"B", "x":7.75, "y":3}, + {"label":"B", "x":9.75, "y":3}, + {"label":"N", "x":10.75, "y":3}, + {"label":"M", "x":11.75, "y":3}, + {"label":",<", "x":12.75, "y":3}, + {"label":".>", "x":13.75, "y":3}, + {"label":"/?", "x":14.75, "y":3}, + {"label":"Shift", "x":15.75, "y":3, "w":1.75}, + {"label":"Up", "x":17.5, "y":3}, + + {"label":"Ctrl", "x":1.5, "y":4, "w":1.5}, + {"label":"Alt", "x":4.5, "y":4, "w":1.5}, + {"label":"Space", "x":6, "y":4, "w":2.25}, + {"label":"Fn", "x":8.25, "y":4}, + {"label":"Space", "x":9.75, "y":4, "w":2.75}, + {"label":"Alt", "x":12.5, "y":4, "w":1.5}, + {"label":"Ctrl", "x":15, "y":4, "w":1.5}, + {"label":"Left", "x":16.5, "y":4}, + {"label":"Down", "x":17.5, "y":4}, + {"label":"Right", "x":18.5, "y":4} + ] + }, + "LAYOUT_split_bs": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"`~", "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":10.5, "y":0}, + {"label":"8*", "x":11.5, "y":0}, + {"label":"9(", "x":12.5, "y":0}, + {"label":"0)", "x":13.5, "y":0}, + {"label":"-_", "x":14.5, "y":0}, + {"label":"=+", "x":15.5, "y":0}, + {"label":"Backspace", "x":16.5, "y":0}, + {"label":"Backspace", "x":17.5, "y":0}, + + {"label":"Insert", "x":0, "y":1}, + {"label":"Tab", "x":1.5, "y":1, "w":1.5}, + {"label":"Q", "x":3, "y":1}, + {"label":"W", "x":4, "y":1}, + {"label":"E", "x":5, "y":1}, + {"label":"R", "x":6, "y":1}, + {"label":"T", "x":7, "y":1}, + {"label":"Y", "x":10, "y":1}, + {"label":"U", "x":11, "y":1}, + {"label":"I", "x":12, "y":1}, + {"label":"O", "x":13, "y":1}, + {"label":"P", "x":14, "y":1}, + {"label":"[{", "x":15, "y":1}, + {"label":"]}", "x":16, "y":1}, + {"label":"\\|", "x":17, "y":1, "w":1.5}, + + {"label":"Delete", "x":0, "y":2}, + {"label":"Caps Lock", "x":1.5, "y":2, "w":1.75}, + {"label":"A", "x":3.25, "y":2}, + {"label":"S", "x":4.25, "y":2}, + {"label":"D", "x":5.25, "y":2}, + {"label":"F", "x":6.25, "y":2}, + {"label":"G", "x":7.25, "y":2}, + {"label":"H", "x":10.25, "y":2}, + {"label":"J", "x":11.25, "y":2}, + {"label":"K", "x":12.25, "y":2}, + {"label":"L", "x":13.25, "y":2}, + {"label":";:", "x":14.25, "y":2}, + {"label":"'\"", "x":15.25, "y":2}, + {"label":"Enter", "x":16.25, "y":2, "w":2.25}, + + {"label":"Shift", "x":1.5, "y":3, "w":2.25}, + {"label":"Z", "x":3.75, "y":3}, + {"label":"X", "x":4.75, "y":3}, + {"label":"C", "x":5.75, "y":3}, + {"label":"V", "x":6.75, "y":3}, + {"label":"B", "x":7.75, "y":3}, + {"label":"B", "x":9.75, "y":3}, + {"label":"N", "x":10.75, "y":3}, + {"label":"M", "x":11.75, "y":3}, + {"label":",<", "x":12.75, "y":3}, + {"label":".>", "x":13.75, "y":3}, + {"label":"/?", "x":14.75, "y":3}, + {"label":"Shift", "x":15.75, "y":3, "w":1.75}, + {"label":"Up", "x":17.5, "y":3}, + + {"label":"Ctrl", "x":1.5, "y":4, "w":1.5}, + {"label":"Alt", "x":4.5, "y":4, "w":1.5}, + {"label":"Space", "x":6, "y":4, "w":2.25}, + {"label":"Fn", "x":8.25, "y":4}, + {"label":"Space", "x":9.75, "y":4, "w":2.75}, + {"label":"Alt", "x":12.5, "y":4, "w":1.5}, + {"label":"Ctrl", "x":15, "y":4, "w":1.5}, + {"label":"Left", "x":16.5, "y":4}, + {"label":"Down", "x":17.5, "y":4}, + {"label":"Right", "x":18.5, "y":4} + ] + } + } +} diff --git a/keyboards/chalice/keymaps/default/keymap.c b/keyboards/chalice/keymaps/default/keymap.c new file mode 100644 index 000000000000..c33ebfabd294 --- /dev/null +++ b/keyboards/chalice/keymaps/default/keymap.c @@ -0,0 +1,55 @@ +/* Copyright 2020 null-ll + * Copyright 2021 Jels, Josh Johnson + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_default( + KC_ESC, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_INS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_DEL, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT + ), + + + [1] = LAYOUT_default( + RESET, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, + _______, _______, RGB_TOG, RGB_HUD, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, RGB_MOD, RGB_SAD, RGB_SAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD,RGB_VAD, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, + _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END + ), + + [2] = LAYOUT_default( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [3] = LAYOUT_default( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; \ No newline at end of file diff --git a/keyboards/chalice/keymaps/via/keymap.c b/keyboards/chalice/keymaps/via/keymap.c new file mode 100644 index 000000000000..c33ebfabd294 --- /dev/null +++ b/keyboards/chalice/keymaps/via/keymap.c @@ -0,0 +1,55 @@ +/* Copyright 2020 null-ll + * Copyright 2021 Jels, Josh Johnson + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_default( + KC_ESC, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_INS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_DEL, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT + ), + + + [1] = LAYOUT_default( + RESET, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, + _______, _______, RGB_TOG, RGB_HUD, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, RGB_MOD, RGB_SAD, RGB_SAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD,RGB_VAD, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, + _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END + ), + + [2] = LAYOUT_default( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [3] = LAYOUT_default( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; \ No newline at end of file diff --git a/keyboards/cospad/keymaps/via/rules.mk b/keyboards/chalice/keymaps/via/rules.mk similarity index 100% rename from keyboards/cospad/keymaps/via/rules.mk rename to keyboards/chalice/keymaps/via/rules.mk diff --git a/keyboards/chalice/readme.md b/keyboards/chalice/readme.md new file mode 100644 index 000000000000..ebfaa3cbd11f --- /dev/null +++ b/keyboards/chalice/readme.md @@ -0,0 +1,25 @@ +# Chalice + +A Cheap Alice, powered by a Pro-Micro + +* Keyboard Maintainer: [CustomKBD](https://github.com/customkbd/) +* Hardware Supported: Pro-Micro (or equivalent - Sea Micro, Elite-C etc.) +* Hardware Availability: [CustomKBD](https://customkbd.com/products/chalice-pre-order) + +Make example for this keyboard (after setting up your build environment): + + make chalice:default + +Flashing example for this keyboard: + + make chalice:default:flash + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down Escape and plug in the keyboard. +* **Physical reset button**: Briefly press the reset button below the pro-micro. +* **Keycode in layout**: The `RESET` key can be found by holding `FUNC` in between the space bars and pressing `ESC`. + +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/chalice/rules.mk b/keyboards/chalice/rules.mk new file mode 100644 index 000000000000..6f114436f0b8 --- /dev/null +++ b/keyboards/chalice/rules.mk @@ -0,0 +1,19 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 diff --git a/keyboards/charue/sunsetter/info.json b/keyboards/charue/sunsetter/info.json index cd9c2a01dbf5..2471c60fd220 100644 --- a/keyboards/charue/sunsetter/info.json +++ b/keyboards/charue/sunsetter/info.json @@ -2,11 +2,438 @@ "keyboard_name": "Sunsetter", "url": "https://charue-design.com/products/sunsetter", "maintainer": "coarse", - "width": 18.25, - "height": 5, "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"F1", "x":0, "y":0}, + {"label":"F2", "x":1, "y":0}, + {"label":"~", "x":2.25, "y":0}, + {"label":"!", "x":3.25, "y":0}, + {"label":"@", "x":4.25, "y":0}, + {"label":"#", "x":5.25, "y":0}, + {"label":"$", "x":6.25, "y":0}, + {"label":"%", "x":7.25, "y":0}, + {"label":"^", "x":8.25, "y":0}, + {"label":"&", "x":9.25, "y":0}, + {"label":"*", "x":10.25, "y":0}, + {"label":"(", "x":11.25, "y":0}, + {"label":")", "x":12.25, "y":0}, + {"label":"_", "x":13.25, "y":0}, + {"label":"+", "x":14.25, "y":0}, + {"label":"Backspace", "x":15.25, "y":0}, + {"label":"Backspace", "x":16.25, "y":0}, + {"label":"", "x":17.25, "y":0}, + + {"label":"F3", "x":0, "y":1}, + {"label":"F4", "x":1, "y":1}, + {"label":"Tab", "x":2.25, "y":1, "w":1.5}, + {"label":"Q", "x":3.75, "y":1}, + {"label":"W", "x":4.75, "y":1}, + {"label":"E", "x":5.75, "y":1}, + {"label":"R", "x":6.75, "y":1}, + {"label":"T", "x":7.75, "y":1}, + {"label":"Y", "x":8.75, "y":1}, + {"label":"U", "x":9.75, "y":1}, + {"label":"I", "x":10.75, "y":1}, + {"label":"O", "x":11.75, "y":1}, + {"label":"P", "x":12.75, "y":1}, + {"label":"{", "x":13.75, "y":1}, + {"label":"}", "x":14.75, "y":1}, + {"label":"|", "x":15.75, "y":1, "w":1.5}, + {"label":"", "x":17.25, "y":1}, + + {"label":"F5", "x":0, "y":2}, + {"label":"F6", "x":1, "y":2}, + {"label":"Caps Lock", "x":2.25, "y":2, "w":1.25}, + {"label":"A", "x":4, "y":2}, + {"label":"S", "x":5, "y":2}, + {"label":"D", "x":6, "y":2}, + {"label":"F", "x":7, "y":2}, + {"label":"G", "x":8, "y":2}, + {"label":"H", "x":9, "y":2}, + {"label":"J", "x":10, "y":2}, + {"label":"K", "x":11, "y":2}, + {"label":"L", "x":12, "y":2}, + {"label":":", "x":13, "y":2}, + {"label":"\"", "x":14, "y":2}, + {"label":"~", "x":18.5, "y":2}, + {"label":"Enter", "x":15, "y":2, "w":2.25}, + {"label":"Enter", "x":19.5, "y":1, "w":1.25, "h":2}, + {"label":"", "x":17.25, "y":2}, + + {"label":"F7", "x":0, "y":3}, + {"label":"F8", "x":1, "y":3}, + {"label":"Shift", "x":2.25, "y":3, "w":1.25}, + {"label":"|", "x":3.5, "y":3}, + {"label":"Z", "x":4.5, "y":3}, + {"label":"X", "x":5.5, "y":3}, + {"label":"C", "x":6.5, "y":3}, + {"label":"V", "x":7.5, "y":3}, + {"label":"B", "x":8.5, "y":3}, + {"label":"N", "x":9.5, "y":3}, + {"label":"M", "x":10.5, "y":3}, + {"label":"<", "x":11.5, "y":3}, + {"label":">", "x":12.5, "y":3}, + {"label":"?", "x":13.5, "y":3}, + {"label":"Shift", "x":14.5, "y":3, "w":1.75}, + {"label":"", "x":16.25, "y":3}, + {"label":"", "x":17.25, "y":3}, + + {"label":"F9/11", "x":0, "y":4}, + {"label":"F10/12", "x":1, "y":4}, + {"label":"Ctrl", "x":2.25, "y":4, "w":1.25}, + {"label":"Win", "x":3.5, "y":4, "w":1.25}, + {"label":"Alt", "x":4.75, "y":4, "w":1.25}, + {"label":"2.25", "x":6, "y":4, "w":2.25}, + {"label":"1.25", "x":8.25, "y":4, "w":1.25}, + {"label":"2.75", "x":9.5, "y":4, "w":2.75}, + {"label":"Fn", "x":12.25, "y":4}, + {"label":"Win", "x":13.25, "y":4}, + {"label":"Ctrl", "x":14.25, "y":4}, + {"label":"", "x":15.25, "y":4}, + {"label":"", "x":16.25, "y":4}, + {"label":"", "x":17.25, "y":4} + ] + }, "LAYOUT_1065_ansi": { - "layout": [{"label":"F1", "x":0, "y":0}, {"label":"F2", "x":1, "y":0}, {"label":"~", "x":2.25, "y":0}, {"label":"!", "x":3.25, "y":0}, {"label":"@", "x":4.25, "y":0}, {"label":"#", "x":5.25, "y":0}, {"label":"$", "x":6.25, "y":0}, {"label":"%", "x":7.25, "y":0}, {"label":"^", "x":8.25, "y":0}, {"label":"&", "x":9.25, "y":0}, {"label":"*", "x":10.25, "y":0}, {"label":"(", "x":11.25, "y":0}, {"label":")", "x":12.25, "y":0}, {"label":"_", "x":13.25, "y":0}, {"label":"+", "x":14.25, "y":0}, {"label":"Backspace", "x":15.25, "y":0, "w":2}, {"label":"", "x":17.25, "y":0}, {"label":"F3", "x":0, "y":1}, {"label":"F4", "x":1, "y":1}, {"label":"Tab", "x":2.25, "y":1, "w":1.5}, {"label":"Q", "x":3.75, "y":1}, {"label":"W", "x":4.75, "y":1}, {"label":"E", "x":5.75, "y":1}, {"label":"R", "x":6.75, "y":1}, {"label":"T", "x":7.75, "y":1}, {"label":"Y", "x":8.75, "y":1}, {"label":"U", "x":9.75, "y":1}, {"label":"I", "x":10.75, "y":1}, {"label":"O", "x":11.75, "y":1}, {"label":"P", "x":12.75, "y":1}, {"label":"{", "x":13.75, "y":1}, {"label":"}", "x":14.75, "y":1}, {"label":"|", "x":15.75, "y":1, "w":1.5}, {"label":"", "x":17.25, "y":1}, {"label":"F5", "x":0, "y":2}, {"label":"F6", "x":1, "y":2}, {"label":"Caps Lock", "x":2.25, "y":2, "w":1.25}, {"label":"A", "x":4, "y":2}, {"label":"S", "x":5, "y":2}, {"label":"D", "x":6, "y":2}, {"label":"F", "x":7, "y":2}, {"label":"G", "x":8, "y":2}, {"label":"H", "x":9, "y":2}, {"label":"J", "x":10, "y":2}, {"label":"K", "x":11, "y":2}, {"label":"L", "x":12, "y":2}, {"label":":", "x":13, "y":2}, {"label":"\"", "x":14, "y":2}, {"label":"Enter", "x":15, "y":2, "w":2.25}, {"label":"", "x":17.25, "y":2}, {"label":"F7", "x":0, "y":3}, {"label":"F8", "x":1, "y":3}, {"label":"Shift", "x":2.25, "y":3, "w":2.25}, {"label":"Z", "x":4.5, "y":3}, {"label":"X", "x":5.5, "y":3}, {"label":"C", "x":6.5, "y":3}, {"label":"V", "x":7.5, "y":3}, {"label":"B", "x":8.5, "y":3}, {"label":"N", "x":9.5, "y":3}, {"label":"M", "x":10.5, "y":3}, {"label":"<", "x":11.5, "y":3}, {"label":">", "x":12.5, "y":3}, {"label":"?", "x":13.5, "y":3}, {"label":"Shift", "x":14.5, "y":3, "w":1.75}, {"label":"", "x":16.25, "y":3}, {"label":"", "x":17.25, "y":3}, {"label":"F9/11", "x":0, "y":4}, {"label":"F10/12", "x":1, "y":4}, {"label":"Ctrl", "x":2.25, "y":4, "w":1.25}, {"label":"Win", "x":3.5, "y":4, "w":1.25}, {"label":"Alt", "x":4.75, "y":4, "w":1.25}, {"label":"6.25", "x":6, "y":4, "w":6.25}, {"label":"Fn", "x":12.25, "y":4}, {"label":"", "x":15.25, "y":4}, {"label":"", "x":16.25, "y":4}, {"label":"", "x":17.25, "y":4}] + "layout": [ + {"label":"F1", "x":0, "y":0}, + {"label":"F2", "x":1, "y":0}, + {"label":"~", "x":2.25, "y":0}, + {"label":"!", "x":3.25, "y":0}, + {"label":"@", "x":4.25, "y":0}, + {"label":"#", "x":5.25, "y":0}, + {"label":"$", "x":6.25, "y":0}, + {"label":"%", "x":7.25, "y":0}, + {"label":"^", "x":8.25, "y":0}, + {"label":"&", "x":9.25, "y":0}, + {"label":"*", "x":10.25, "y":0}, + {"label":"(", "x":11.25, "y":0}, + {"label":")", "x":12.25, "y":0}, + {"label":"_", "x":13.25, "y":0}, + {"label":"+", "x":14.25, "y":0}, + {"label":"Backspace", "x":15.25, "y":0, "w":2}, + {"label":"", "x":17.25, "y":0}, + + {"label":"F3", "x":0, "y":1}, + {"label":"F4", "x":1, "y":1}, + {"label":"Tab", "x":2.25, "y":1, "w":1.5}, + {"label":"Q", "x":3.75, "y":1}, + {"label":"W", "x":4.75, "y":1}, + {"label":"E", "x":5.75, "y":1}, + {"label":"R", "x":6.75, "y":1}, + {"label":"T", "x":7.75, "y":1}, + {"label":"Y", "x":8.75, "y":1}, + {"label":"U", "x":9.75, "y":1}, + {"label":"I", "x":10.75, "y":1}, + {"label":"O", "x":11.75, "y":1}, + {"label":"P", "x":12.75, "y":1}, + {"label":"{", "x":13.75, "y":1}, + {"label":"}", "x":14.75, "y":1}, + {"label":"|", "x":15.75, "y":1, "w":1.5}, + {"label":"", "x":17.25, "y":1}, + + {"label":"F5", "x":0, "y":2}, + {"label":"F6", "x":1, "y":2}, + {"label":"Caps Lock", "x":2.25, "y":2, "w":1.25}, + {"label":"A", "x":4, "y":2}, + {"label":"S", "x":5, "y":2}, + {"label":"D", "x":6, "y":2}, + {"label":"F", "x":7, "y":2}, + {"label":"G", "x":8, "y":2}, + {"label":"H", "x":9, "y":2}, + {"label":"J", "x":10, "y":2}, + {"label":"K", "x":11, "y":2}, + {"label":"L", "x":12, "y":2}, + {"label":":", "x":13, "y":2}, + {"label":"\"", "x":14, "y":2}, + {"label":"Enter", "x":15, "y":2, "w":2.25}, + {"label":"", "x":17.25, "y":2}, + + {"label":"F7", "x":0, "y":3}, + {"label":"F8", "x":1, "y":3}, + {"label":"Shift", "x":2.25, "y":3, "w":2.25}, + {"label":"Z", "x":4.5, "y":3}, + {"label":"X", "x":5.5, "y":3}, + {"label":"C", "x":6.5, "y":3}, + {"label":"V", "x":7.5, "y":3}, + {"label":"B", "x":8.5, "y":3}, + {"label":"N", "x":9.5, "y":3}, + {"label":"M", "x":10.5, "y":3}, + {"label":"<", "x":11.5, "y":3}, + {"label":">", "x":12.5, "y":3}, + {"label":"?", "x":13.5, "y":3}, + {"label":"Shift", "x":14.5, "y":3, "w":1.75}, + {"label":"", "x":16.25, "y":3}, + {"label":"", "x":17.25, "y":3}, + + {"label":"F9/11", "x":0, "y":4}, + {"label":"F10/12", "x":1, "y":4}, + {"label":"Ctrl", "x":2.25, "y":4, "w":1.25}, + {"label":"Win", "x":3.5, "y":4, "w":1.25}, + {"label":"Alt", "x":4.75, "y":4, "w":1.25}, + {"label":"6.25", "x":6, "y":4, "w":6.25}, + {"label":"Fn", "x":12.25, "y":4}, + {"label":"", "x":15.25, "y":4}, + {"label":"", "x":16.25, "y":4}, + {"label":"", "x":17.25, "y":4} + ] + }, + "LAYOUT_1065_ansi_split_bs": { + "layout": [ + {"label":"F1", "x":0, "y":0}, + {"label":"F2", "x":1, "y":0}, + {"label":"~", "x":2.25, "y":0}, + {"label":"!", "x":3.25, "y":0}, + {"label":"@", "x":4.25, "y":0}, + {"label":"#", "x":5.25, "y":0}, + {"label":"$", "x":6.25, "y":0}, + {"label":"%", "x":7.25, "y":0}, + {"label":"^", "x":8.25, "y":0}, + {"label":"&", "x":9.25, "y":0}, + {"label":"*", "x":10.25, "y":0}, + {"label":"(", "x":11.25, "y":0}, + {"label":")", "x":12.25, "y":0}, + {"label":"_", "x":13.25, "y":0}, + {"label":"+", "x":14.25, "y":0}, + {"label":"Backspace", "x":15.25, "y":0}, + {"label":"Backspace", "x":16.25, "y":0}, + {"label":"", "x":17.25, "y":0}, + + {"label":"F3", "x":0, "y":1}, + {"label":"F4", "x":1, "y":1}, + {"label":"Tab", "x":2.25, "y":1, "w":1.5}, + {"label":"Q", "x":3.75, "y":1}, + {"label":"W", "x":4.75, "y":1}, + {"label":"E", "x":5.75, "y":1}, + {"label":"R", "x":6.75, "y":1}, + {"label":"T", "x":7.75, "y":1}, + {"label":"Y", "x":8.75, "y":1}, + {"label":"U", "x":9.75, "y":1}, + {"label":"I", "x":10.75, "y":1}, + {"label":"O", "x":11.75, "y":1}, + {"label":"P", "x":12.75, "y":1}, + {"label":"{", "x":13.75, "y":1}, + {"label":"}", "x":14.75, "y":1}, + {"label":"|", "x":15.75, "y":1, "w":1.5}, + {"label":"", "x":17.25, "y":1}, + + {"label":"F5", "x":0, "y":2}, + {"label":"F6", "x":1, "y":2}, + {"label":"Caps Lock", "x":2.25, "y":2, "w":1.25}, + {"label":"A", "x":4, "y":2}, + {"label":"S", "x":5, "y":2}, + {"label":"D", "x":6, "y":2}, + {"label":"F", "x":7, "y":2}, + {"label":"G", "x":8, "y":2}, + {"label":"H", "x":9, "y":2}, + {"label":"J", "x":10, "y":2}, + {"label":"K", "x":11, "y":2}, + {"label":"L", "x":12, "y":2}, + {"label":":", "x":13, "y":2}, + {"label":"\"", "x":14, "y":2}, + {"label":"Enter", "x":15, "y":2, "w":2.25}, + {"label":"", "x":17.25, "y":2}, + + {"label":"F7", "x":0, "y":3}, + {"label":"F8", "x":1, "y":3}, + {"label":"Shift", "x":2.25, "y":3, "w":2.25}, + {"label":"Z", "x":4.5, "y":3}, + {"label":"X", "x":5.5, "y":3}, + {"label":"C", "x":6.5, "y":3}, + {"label":"V", "x":7.5, "y":3}, + {"label":"B", "x":8.5, "y":3}, + {"label":"N", "x":9.5, "y":3}, + {"label":"M", "x":10.5, "y":3}, + {"label":"<", "x":11.5, "y":3}, + {"label":">", "x":12.5, "y":3}, + {"label":"?", "x":13.5, "y":3}, + {"label":"Shift", "x":14.5, "y":3, "w":1.75}, + {"label":"", "x":16.25, "y":3}, + {"label":"", "x":17.25, "y":3}, + + {"label":"F9/11", "x":0, "y":4}, + {"label":"F10/12", "x":1, "y":4}, + {"label":"Ctrl", "x":2.25, "y":4, "w":1.25}, + {"label":"Win", "x":3.5, "y":4, "w":1.25}, + {"label":"Alt", "x":4.75, "y":4, "w":1.25}, + {"label":"6.25", "x":6, "y":4, "w":6.25}, + {"label":"Fn", "x":12.25, "y":4}, + {"label":"", "x":15.25, "y":4}, + {"label":"", "x":16.25, "y":4}, + {"label":"", "x":17.25, "y":4} + ] + }, + "LAYOUT_1065_iso": { + "layout": [ + {"label":"F1", "x":0, "y":0}, + {"label":"F2", "x":1, "y":0}, + {"label":"~", "x":2.25, "y":0}, + {"label":"!", "x":3.25, "y":0}, + {"label":"@", "x":4.25, "y":0}, + {"label":"#", "x":5.25, "y":0}, + {"label":"$", "x":6.25, "y":0}, + {"label":"%", "x":7.25, "y":0}, + {"label":"^", "x":8.25, "y":0}, + {"label":"&", "x":9.25, "y":0}, + {"label":"*", "x":10.25, "y":0}, + {"label":"(", "x":11.25, "y":0}, + {"label":")", "x":12.25, "y":0}, + {"label":"_", "x":13.25, "y":0}, + {"label":"+", "x":14.25, "y":0}, + {"label":"Backspace", "x":15.25, "y":0, "w":2}, + {"label":"", "x":17.25, "y":0}, + + {"label":"F3", "x":0, "y":1}, + {"label":"F4", "x":1, "y":1}, + {"label":"Tab", "x":2.25, "y":1, "w":1.5}, + {"label":"Q", "x":3.75, "y":1}, + {"label":"W", "x":4.75, "y":1}, + {"label":"E", "x":5.75, "y":1}, + {"label":"R", "x":6.75, "y":1}, + {"label":"T", "x":7.75, "y":1}, + {"label":"Y", "x":8.75, "y":1}, + {"label":"U", "x":9.75, "y":1}, + {"label":"I", "x":10.75, "y":1}, + {"label":"O", "x":11.75, "y":1}, + {"label":"P", "x":12.75, "y":1}, + {"label":"{", "x":13.75, "y":1}, + {"label":"}", "x":14.75, "y":1}, + {"label":"", "x":17.25, "y":1}, + + {"label":"F5", "x":0, "y":2}, + {"label":"F6", "x":1, "y":2}, + {"label":"Caps Lock", "x":2.25, "y":2, "w":1.25}, + {"label":"A", "x":4, "y":2}, + {"label":"S", "x":5, "y":2}, + {"label":"D", "x":6, "y":2}, + {"label":"F", "x":7, "y":2}, + {"label":"G", "x":8, "y":2}, + {"label":"H", "x":9, "y":2}, + {"label":"J", "x":10, "y":2}, + {"label":"K", "x":11, "y":2}, + {"label":"L", "x":12, "y":2}, + {"label":":", "x":13, "y":2}, + {"label":"\"", "x":14, "y":2}, + {"label":"~", "x":15, "y":2}, + {"label":"Enter", "x":16, "y":1, "w":1.25, "h":2}, + {"label":"", "x":17.25, "y":2}, + + {"label":"F7", "x":0, "y":3}, + {"label":"F8", "x":1, "y":3}, + {"label":"Shift", "x":2.25, "y":3, "w":1.25}, + {"label":"|", "x":3.5, "y":3}, + {"label":"Z", "x":4.5, "y":3}, + {"label":"X", "x":5.5, "y":3}, + {"label":"C", "x":6.5, "y":3}, + {"label":"V", "x":7.5, "y":3}, + {"label":"B", "x":8.5, "y":3}, + {"label":"N", "x":9.5, "y":3}, + {"label":"M", "x":10.5, "y":3}, + {"label":"<", "x":11.5, "y":3}, + {"label":">", "x":12.5, "y":3}, + {"label":"?", "x":13.5, "y":3}, + {"label":"Shift", "x":14.5, "y":3, "w":1.75}, + {"label":"", "x":16.25, "y":3}, + {"label":"", "x":17.25, "y":3}, + + {"label":"F9/11", "x":0, "y":4}, + {"label":"F10/12", "x":1, "y":4}, + {"label":"Ctrl", "x":2.25, "y":4, "w":1.25}, + {"label":"Win", "x":3.5, "y":4, "w":1.25}, + {"label":"Alt", "x":4.75, "y":4, "w":1.25}, + {"label":"6.25", "x":6, "y":4, "w":6.25}, + {"label":"Fn", "x":12.25, "y":4}, + {"label":"", "x":15.25, "y":4}, + {"label":"", "x":16.25, "y":4}, + {"label":"", "x":17.25, "y":4} + ] + }, + "LAYOUT_1065_iso_split_bs": { + "layout": [ + {"label":"F1", "x":0, "y":0}, + {"label":"F2", "x":1, "y":0}, + {"label":"~", "x":2.25, "y":0}, + {"label":"!", "x":3.25, "y":0}, + {"label":"@", "x":4.25, "y":0}, + {"label":"#", "x":5.25, "y":0}, + {"label":"$", "x":6.25, "y":0}, + {"label":"%", "x":7.25, "y":0}, + {"label":"^", "x":8.25, "y":0}, + {"label":"&", "x":9.25, "y":0}, + {"label":"*", "x":10.25, "y":0}, + {"label":"(", "x":11.25, "y":0}, + {"label":")", "x":12.25, "y":0}, + {"label":"_", "x":13.25, "y":0}, + {"label":"+", "x":14.25, "y":0}, + {"label":"Backspace", "x":15.25, "y":0}, + {"label":"Backspace", "x":16.25, "y":0}, + {"label":"", "x":17.25, "y":0}, + + {"label":"F3", "x":0, "y":1}, + {"label":"F4", "x":1, "y":1}, + {"label":"Tab", "x":2.25, "y":1, "w":1.5}, + {"label":"Q", "x":3.75, "y":1}, + {"label":"W", "x":4.75, "y":1}, + {"label":"E", "x":5.75, "y":1}, + {"label":"R", "x":6.75, "y":1}, + {"label":"T", "x":7.75, "y":1}, + {"label":"Y", "x":8.75, "y":1}, + {"label":"U", "x":9.75, "y":1}, + {"label":"I", "x":10.75, "y":1}, + {"label":"O", "x":11.75, "y":1}, + {"label":"P", "x":12.75, "y":1}, + {"label":"{", "x":13.75, "y":1}, + {"label":"}", "x":14.75, "y":1}, + {"label":"", "x":17.25, "y":1}, + + {"label":"F5", "x":0, "y":2}, + {"label":"F6", "x":1, "y":2}, + {"label":"Caps Lock", "x":2.25, "y":2, "w":1.25}, + {"label":"A", "x":4, "y":2}, + {"label":"S", "x":5, "y":2}, + {"label":"D", "x":6, "y":2}, + {"label":"F", "x":7, "y":2}, + {"label":"G", "x":8, "y":2}, + {"label":"H", "x":9, "y":2}, + {"label":"J", "x":10, "y":2}, + {"label":"K", "x":11, "y":2}, + {"label":"L", "x":12, "y":2}, + {"label":":", "x":13, "y":2}, + {"label":"\"", "x":14, "y":2}, + {"label":"~", "x":15, "y":2}, + {"label":"Enter", "x":16, "y":1, "w":1.25, "h":2}, + {"label":"", "x":17.25, "y":2}, + + {"label":"F7", "x":0, "y":3}, + {"label":"F8", "x":1, "y":3}, + {"label":"Shift", "x":2.25, "y":3, "w":1.25}, + {"label":"|", "x":3.5, "y":3}, + {"label":"Z", "x":4.5, "y":3}, + {"label":"X", "x":5.5, "y":3}, + {"label":"C", "x":6.5, "y":3}, + {"label":"V", "x":7.5, "y":3}, + {"label":"B", "x":8.5, "y":3}, + {"label":"N", "x":9.5, "y":3}, + {"label":"M", "x":10.5, "y":3}, + {"label":"<", "x":11.5, "y":3}, + {"label":">", "x":12.5, "y":3}, + {"label":"?", "x":13.5, "y":3}, + {"label":"Shift", "x":14.5, "y":3, "w":1.75}, + {"label":"", "x":16.25, "y":3}, + {"label":"", "x":17.25, "y":3}, + + {"label":"F9/11", "x":0, "y":4}, + {"label":"F10/12", "x":1, "y":4}, + {"label":"Ctrl", "x":2.25, "y":4, "w":1.25}, + {"label":"Win", "x":3.5, "y":4, "w":1.25}, + {"label":"Alt", "x":4.75, "y":4, "w":1.25}, + {"label":"6.25", "x":6, "y":4, "w":6.25}, + {"label":"Fn", "x":12.25, "y":4}, + {"label":"", "x":15.25, "y":4}, + {"label":"", "x":16.25, "y":4}, + {"label":"", "x":17.25, "y":4} + ] } } } diff --git a/keyboards/charue/sunsetter/keymaps/default/keymap.c b/keyboards/charue/sunsetter/keymaps/default/keymap.c index 1af121ea2ea2..01cf15282f89 100755 --- a/keyboards/charue/sunsetter/keymaps/default/keymap.c +++ b/keyboards/charue/sunsetter/keymaps/default/keymap.c @@ -18,9 +18,9 @@ along with this program. If not, see . const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_1065_ansi( - KC_F1, KC_F2, KC_GESC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_VOLU, - KC_F3, KC_F4, KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_VOLD, - KC_F5, KC_F6, KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_ENT , KC_MUTE, - KC_F7, KC_F8, KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_MNXT, - KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT), + KC_F1, KC_F2, KC_GESC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_VOLU, + KC_F3, KC_F4, KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_VOLD, + KC_F5, KC_F6, KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_MUTE, + KC_F7, KC_F8, KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_MNXT, + KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT), }; diff --git a/keyboards/charue/sunsetter/keymaps/default_all/keymap.c b/keyboards/charue/sunsetter/keymaps/default_all/keymap.c new file mode 100644 index 000000000000..99ac800734c6 --- /dev/null +++ b/keyboards/charue/sunsetter/keymaps/default_all/keymap.c @@ -0,0 +1,26 @@ +/* +Copyright 2012,2013 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_F1, KC_F2, KC_GESC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_BSPC, KC_VOLU, + KC_F3, KC_F4, KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_VOLD, + KC_F5, KC_F6, KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT , KC_ENT , KC_MUTE, + KC_F7, KC_F8, KC_LSFT, KC_NUBS, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_MNXT, + KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_SPC , KC_SPC , KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), +}; diff --git a/keyboards/charue/sunsetter/keymaps/default_iso/keymap.c b/keyboards/charue/sunsetter/keymaps/default_iso/keymap.c new file mode 100644 index 000000000000..84b0a99e3597 --- /dev/null +++ b/keyboards/charue/sunsetter/keymaps/default_iso/keymap.c @@ -0,0 +1,26 @@ +/* +Copyright 2012,2013 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_1065_iso( + KC_F1, KC_F2, KC_GESC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_VOLU, + KC_F3, KC_F4, KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_VOLD, + KC_F5, KC_F6, KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT , KC_MUTE, + KC_F7, KC_F8, KC_LSFT, KC_NUBS, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_MNXT, + KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT), +}; diff --git a/keyboards/charue/sunsetter/keymaps/via/keymap.c b/keyboards/charue/sunsetter/keymaps/via/keymap.c index 53d5ced2d631..ceba72e92f96 100644 --- a/keyboards/charue/sunsetter/keymaps/via/keymap.c +++ b/keyboards/charue/sunsetter/keymaps/via/keymap.c @@ -18,27 +18,27 @@ along with this program. If not, see . const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_1065_ansi( - KC_F1, KC_F2, KC_GESC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_VOLU, - KC_F3, KC_F4, KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_VOLD, - KC_F5, KC_F6, KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_ENT , KC_MUTE, - KC_F7, KC_F8, KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_MNXT, - KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT), + KC_F1, KC_F2, KC_GESC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_VOLU, + KC_F3, KC_F4, KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_VOLD, + KC_F5, KC_F6, KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_MUTE, + KC_F7, KC_F8, KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_MNXT, + KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT), [1] = LAYOUT_1065_ansi( - KC_F1, KC_F2, KC_GESC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_VOLU, - KC_F3, KC_F4, KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_VOLD, - KC_F5, KC_F6, KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_ENT , KC_MUTE, - KC_F7, KC_F8, KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_MNXT, - KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT), + KC_F1, KC_F2, KC_GESC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_VOLU, + KC_F3, KC_F4, KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_VOLD, + KC_F5, KC_F6, KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_MUTE, + KC_F7, KC_F8, KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_MNXT, + KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT), [2] = LAYOUT_1065_ansi( - KC_F1, KC_F2, KC_GESC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_VOLU, - KC_F3, KC_F4, KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_VOLD, - KC_F5, KC_F6, KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_ENT , KC_MUTE, - KC_F7, KC_F8, KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_MNXT, - KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT), + KC_F1, KC_F2, KC_GESC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_VOLU, + KC_F3, KC_F4, KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_VOLD, + KC_F5, KC_F6, KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_MUTE, + KC_F7, KC_F8, KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_MNXT, + KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT), [3] = LAYOUT_1065_ansi( - KC_F1, KC_F2, KC_GESC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_VOLU, - KC_F3, KC_F4, KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_VOLD, - KC_F5, KC_F6, KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_ENT , KC_MUTE, - KC_F7, KC_F8, KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_MNXT, - KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT), + KC_F1, KC_F2, KC_GESC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_VOLU, + KC_F3, KC_F4, KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_VOLD, + KC_F5, KC_F6, KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_MUTE, + KC_F7, KC_F8, KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_MNXT, + KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT), }; diff --git a/keyboards/charue/sunsetter/rules.mk b/keyboards/charue/sunsetter/rules.mk index dde961d7a5c1..7b5105d59bde 100644 --- a/keyboards/charue/sunsetter/rules.mk +++ b/keyboards/charue/sunsetter/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = 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 # Enter lower-power sleep mode when on the ChibiOS idle thread diff --git a/keyboards/charue/sunsetter/sunsetter.h b/keyboards/charue/sunsetter/sunsetter.h index 47089ad2610c..51dd26f4ec71 100644 --- a/keyboards/charue/sunsetter/sunsetter.h +++ b/keyboards/charue/sunsetter/sunsetter.h @@ -21,16 +21,94 @@ along with this program. If not, see . #define ____ KC_NO +/* LAYOUT_all + * ┌───────┐ + * │016 │2u Backspace + * └───────┘ + * ┌───┬───┐┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │000│001││002│003│004│005│006│007│008│009│010│011│012│013│014│015│016│017│ + * ├───┼───┤├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ ┌─────┐ + * │100│101││102 │103│104│105│106│107│108│109│110│111│112│113│114│116 │117│ │ │ISO + * 2.25u ├───┼───┤├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ ┌──┴┐216 │Enter + * LShift │200│201││202 │203│204│205│206│207│208│209│210│211│212│213│215 │217│ │214│ │ + * ┌────────┐ ├───┼───┤├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ └───┴────┘ + * │302 │ │300│301││302 │303│304│305│306│307│308│309│310│311│312│313│314 │316│317│ + * └────────┘ ├───┼───┤├────┼───┴┬──┴─┬─┴───┴──┬┴───┼───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤ + * │400│401││402 │403 │404 │406 │408 │410 │412│413│414│415│416│417│ + * └───┴───┘└────┴────┴────┴────────┴────┴──────────┴───┴───┴───┴───┴───┴───┘ + * ┌────────────────────────┐ └───┬───┘ + * │ 408 │ (a) + * └────────────────────────┘ + * + * (a) Positions 413 and 414 are present on the PCB, but inaccessible when using the standard Sunsetter top case. + */ + +#define LAYOUT_all( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, K017, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K116, K117, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, K217, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K316, K317, \ + K400, K401, K402, K403, K404, K406, K408, K410, K412, K413, K414, K415, K416, K417 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, K017 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, ____, K116, K117 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, K217 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, ____, K316, K317 }, \ + { K400, K401, K402, K403, K404, ____, K406, ____, K408, ____, K410, ____, K412, K413, K414, K415, K416, K417 } \ +} + #define LAYOUT_1065_ansi( \ - K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K016, K017, \ - K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K116, K117, \ - K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K217, \ - K300, K301, K302, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K316, K317, \ - K400, K401, K402, K403, K404, K408, K412, K415, K416, K417 \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K016, K017, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K116, K117, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K215, K217, \ + K300, K301, K302, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K316, K317, \ + K400, K401, K402, K403, K404, K408, K412, K415, K416, K417 \ ) { \ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, ____, K016, K017 }, \ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, ____, K116, K117 }, \ - { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, ____, K217 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, ____, K215, ____, K217 }, \ + { K300, K301, K302, ____, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, ____, K316, K317 }, \ + { K400, K401, K402, K403, K404, ____, ____, ____, K408, ____, ____, ____, K412, ____, ____, K415, K416, K417 } \ +} + +#define LAYOUT_1065_ansi_split_bs( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, K017, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K116, K117, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K215, K217, \ + K300, K301, K302, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K316, K317, \ + K400, K401, K402, K403, K404, K408, K412, K415, K416, K417 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, K017 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, ____, K116, K117 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, ____, K215, ____, K217 }, \ { K300, K301, K302, ____, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, ____, K316, K317 }, \ { K400, K401, K402, K403, K404, ____, ____, ____, K408, ____, ____, ____, K412, ____, ____, K415, K416, K417 } \ } + +#define LAYOUT_1065_iso( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K016, K017, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K117, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K216, K217, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K316, K317, \ + K400, K401, K402, K403, K404, K408, K412, K415, K416, K417 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, ____, K016, K017 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, ____, ____, K117 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, ____, K216, K217 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, ____, K316, K317 }, \ + { K400, K401, K402, K403, K404, ____, ____, ____, K408, ____, ____, ____, K412, ____, ____, K415, K416, K417 } \ +} + +#define LAYOUT_1065_iso_split_bs( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, K017, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K117, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K216, K217, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K316, K317, \ + K400, K401, K402, K403, K404, K408, K412, K415, K416, K417 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, K017 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, ____, ____, K117 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, ____, K216, K217 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, ____, K316, K317 }, \ + { K400, K401, K402, K403, K404, ____, ____, ____, K408, ____, ____, ____, K412, ____, ____, K415, K416, K417 } \ +} diff --git a/keyboards/chavdai40/info.json b/keyboards/chavdai40/info.json index 53007b923d13..9c95d21239f5 100644 --- a/keyboards/chavdai40/info.json +++ b/keyboards/chavdai40/info.json @@ -2,8 +2,6 @@ "keyboard_name": "chavdai40", "url": "https://github.com/dvorak55/chavdai40", "maintainer": "t-miyajima", - "width": 14, - "height": 4, "layouts": { "LAYOUT_44key": { "layout": [ @@ -98,4 +96,4 @@ {"label":"Alt", "x":11.38, "y":3, "w":1.25}] } } -} \ No newline at end of file +} diff --git a/keyboards/chavdai40/rev1/rules.mk b/keyboards/chavdai40/rev1/rules.mk index 379bdb6c6513..47a4e0462db2 100644 --- a/keyboards/chavdai40/rev1/rules.mk +++ b/keyboards/chavdai40/rev1/rules.mk @@ -6,16 +6,13 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/chavdai40/rev2/rules.mk b/keyboards/chavdai40/rev2/rules.mk index 379bdb6c6513..47a4e0462db2 100644 --- a/keyboards/chavdai40/rev2/rules.mk +++ b/keyboards/chavdai40/rev2/rules.mk @@ -6,16 +6,13 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/checkerboards/axon40/axon40.c b/keyboards/checkerboards/axon40/axon40.c new file mode 100644 index 000000000000..a18e99cfabd2 --- /dev/null +++ b/keyboards/checkerboards/axon40/axon40.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Nathan Spears +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*/ + +#include "axon40.h" diff --git a/keyboards/checkerboards/axon40/axon40.h b/keyboards/checkerboards/axon40/axon40.h new file mode 100644 index 000000000000..fc0c0b1df18e --- /dev/null +++ b/keyboards/checkerboards/axon40/axon40.h @@ -0,0 +1,33 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +#define LAYOUT_all( \ + 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 \ +) { \ + { 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 }, \ + { XXX, K300, K301, XXX, K302, XXX, XXX, K303, XXX, K304, K305, XXX } \ +} diff --git a/keyboards/checkerboards/axon40/config.h b/keyboards/checkerboards/axon40/config.h new file mode 100644 index 000000000000..f2deb4ad8367 --- /dev/null +++ b/keyboards/checkerboards/axon40/config.h @@ -0,0 +1,56 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7070 +#define PRODUCT_ID 0x1119 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Nasp +#define PRODUCT Axon40 + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { D2, D3, D1, D5 } +#define MATRIX_COL_PINS { C7, B7, D4, D6, F0, F1, C6, B6, B5, B4, E6, B0 } + +#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 + +#define RGB_DI_PIN D7 +#define RGBLIGHT_ANIMATIONS +#define RGBLED_NUM 29 +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 +#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 290 diff --git a/keyboards/checkerboards/axon40/info.json b/keyboards/checkerboards/axon40/info.json new file mode 100644 index 000000000000..6f4dfb4c9fdd --- /dev/null +++ b/keyboards/checkerboards/axon40/info.json @@ -0,0 +1,10 @@ +{ + "keyboard_name": "Axon40", + "url": "", + "maintainer": "nasp", + "layouts": { + "LAYOUT_all": { + "layout": [{"label":"Tab", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"Back Space", "x":11, "y":0}, {"label":"Esc", "x":0, "y":1}, {"label":"A", "x":1, "y":1}, {"label":"S", "x":2, "y":1}, {"label":"D", "x":3, "y":1}, {"label":"F", "x":4, "y":1}, {"label":"G", "x":5, "y":1}, {"label":"H", "x":6, "y":1}, {"label":"J", "x":7, "y":1}, {"label":"K", "x":8, "y":1}, {"label":"L", "x":9, "y":1}, {"label":";", "x":10, "y":1}, {"label":"'", "x":11, "y":1}, {"label":"Shift", "x":0, "y":2}, {"label":"Z", "x":1, "y":2}, {"label":"X", "x":2, "y":2}, {"label":"C", "x":3, "y":2}, {"label":"V", "x":4, "y":2}, {"label":"B", "x":5, "y":2}, {"label":"N", "x":6, "y":2}, {"label":"M", "x":7, "y":2}, {"label":",", "x":8, "y":2}, {"label":".", "x":9, "y":2}, {"label":"/", "x":10, "y":2}, {"label":"Return", "x":11, "y":2}, {"x":1, "y":3}, {"x":2, "y":3, "w":1.5}, {"x":3.5, "y":3, "w":2.25}, {"x":5.75, "y":3, "w":2.75}, {"x":8.5, "y":3, "w":1.5}, {"x":10, "y":3}] + } + } +} diff --git a/keyboards/checkerboards/axon40/keymaps/default/config.h b/keyboards/checkerboards/axon40/keymaps/default/config.h new file mode 100644 index 000000000000..6d6bb8ea3902 --- /dev/null +++ b/keyboards/checkerboards/axon40/keymaps/default/config.h @@ -0,0 +1,20 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define TAPPING_TOGGLE 2 +#define TAPPING_TERM 200 diff --git a/keyboards/checkerboards/axon40/keymaps/default/keymap.c b/keyboards/checkerboards/axon40/keymaps/default/keymap.c new file mode 100644 index 000000000000..93c801ae7839 --- /dev/null +++ b/keyboards/checkerboards/axon40/keymaps/default/keymap.c @@ -0,0 +1,86 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + + +// Defines for task manager and such +#define CALTDEL LCTL(LALT(KC_DEL)) +#define TSKMGR LCTL(LSFT(KC_ESC)) + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Ctrl | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | OS | Alt | Layer | Space | Alt | Caps | | + * `-----------------------------------------------------------------------------------' + */ +[0] = LAYOUT_all( \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, + CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_LGUI, KC_LALT, TT(1), LT(2, KC_SPC), KC_RALT, KC_CAPS \ +), + +/* 1 +* ,---------------------------------------------------------------------------------------. +* |------------+------+------+------+------+------+------+------+------+------+------+----| +* | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | BCKSPC | +* |------------+------+------+------+------+-------------+------+------+------+------+----| +* | \ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | / | +* |------------+------+------+------+------+------|------+------+------+------+------+----| +* | | | | | | | | + | = | | | | +* |-------+-------+-------+-------+-------+-------+------+------+------+------+------+----| +* | | CTRL-ALT-DEL | TASK | | Space | ' | ` | | +* `---------------------------------------------------------------------------------------' + */ + +[1] = LAYOUT_all( \ + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \ + KC_SLSH, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_EQL, _______, _______, _______, \ + CALTDEL, TSKMGR, _______, KC_SPC, KC_NUBS, KC_GRV \ +), + +/* 2 +* ,--------------------------------------------------------------------------------------. +* |------------+------+------+------+------+------+------+------+------+------+------+---| +* | | | | UP | | | | _ | | [ | ] | | +* |------------+------+------+------+------+-------------+------+------+------+------+---| +* | | | LEFT | DOWN | RIGHT | | | - | | [ | ] | | +* |------------+------+------+------+------+-----+-----+------+------+------+------+-----| +* | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | +* |-------+-------+-------+-------+-------+-------+------+------+------+------+------+---| +* | | RESET | RGB | | | RGB Mod | RGB Mod Rev | | +* `---------------------------------------------------------------------------------------' +*/ + +[2] = LAYOUT_all( \ + RGB_HUI, RGB_SAI, _______, KC_UP, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, RGB_VAI, \ + RGB_HUD, RGB_SAD, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, RGB_VAD, \ + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \ + RESET, RGB_TOG, _______, _______, RGB_MOD, RGB_RMOD \ +), + +}; diff --git a/keyboards/checkerboards/axon40/keymaps/default/readme.md b/keyboards/checkerboards/axon40/keymaps/default/readme.md new file mode 100644 index 000000000000..4bab3a595c1c --- /dev/null +++ b/keyboards/checkerboards/axon40/keymaps/default/readme.md @@ -0,0 +1,2 @@ +# The Default Axon40 Layout + diff --git a/keyboards/checkerboards/axon40/keymaps/npspears/config.h b/keyboards/checkerboards/axon40/keymaps/npspears/config.h new file mode 100644 index 000000000000..6d6bb8ea3902 --- /dev/null +++ b/keyboards/checkerboards/axon40/keymaps/npspears/config.h @@ -0,0 +1,20 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define TAPPING_TOGGLE 2 +#define TAPPING_TERM 200 diff --git a/keyboards/checkerboards/axon40/keymaps/npspears/keymap.c b/keyboards/checkerboards/axon40/keymaps/npspears/keymap.c new file mode 100644 index 000000000000..f8fed200e811 --- /dev/null +++ b/keyboards/checkerboards/axon40/keymaps/npspears/keymap.c @@ -0,0 +1,85 @@ +/* Copyright 2015-2017 Jack Humbert + * Modified by Nasp for the Orbit40 + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + + +// Defines for task manager and such +#define CALTDEL LCTL(LALT(KC_DEL)) +#define TSKMGR LCTL(LSFT(KC_ESC)) + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Ctrl | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Esc | OS | Alt | Layer | Space | Alt | RGB | Super | + * `-----------------------------------------------------------------------------------' + */ +[0] = LAYOUT_all( \ + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \ + CTL_T(KC_ESC), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \ + KC_LGUI, KC_LALT, TT(1), LT(2, KC_SPC), KC_RALT, KC_CAPS \ +), + +/* 1 + * ,-----------------------------------------------------------------------------------. + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[1] = LAYOUT_all( \ + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \ + KC_SLSH, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_EQL, _______, _______, _______, \ + CALTDEL, TSKMGR, _______, KC_SPC, KC_NUBS, KC_GRV \ +), + +/* 2 + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | " | , | . | P | Y | F | G | C | R | L | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | O | E | U | I | D | H | T | N | S | / | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[2] = LAYOUT_all( \ + RGB_HUI, RGB_SAI, _______, KC_UP, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, RGB_VAI, \ + RGB_HUD, RGB_SAD, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, RGB_VAD, \ + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \ + RESET, RGB_TOG, _______, _______, RGB_MOD, RGB_RMOD \ +), + +}; diff --git a/keyboards/checkerboards/axon40/keymaps/via/keymap.c b/keyboards/checkerboards/axon40/keymaps/via/keymap.c new file mode 100644 index 000000000000..24be3f64f5ad --- /dev/null +++ b/keyboards/checkerboards/axon40/keymaps/via/keymap.c @@ -0,0 +1,109 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + + +// Defines for task manager and such +#define CALTDEL LCTL(LALT(KC_DEL)) +#define TSKMGR LCTL(LSFT(KC_ESC)) + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Ctrl | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Esc | OS | Alt | Layer | Space | Alt | RGB | Super | + * `-----------------------------------------------------------------------------------' + */ + +[0] = LAYOUT_all( \ + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \ + CTL_T(KC_ESC), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \ + KC_LGUI, KC_LALT, TT(1), LT(2, KC_SPC), KC_RALT, KC_CAPS \ +), + +/* 1 + * ,-----------------------------------------------------------------------------------. + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ + +[1] = LAYOUT_all( \ + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \ + KC_SLSH, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_EQL, _______, _______, _______, \ + CALTDEL, TSKMGR, _______, KC_SPC, KC_NUBS, KC_GRV \ +), + +/* 2 + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | " | , | . | P | Y | F | G | C | R | L | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | O | E | U | I | D | H | T | N | S | / | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ + +[2] = LAYOUT_all( \ + RGB_HUI, RGB_SAI, _______, KC_UP, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, RGB_VAI, \ + RGB_HUD, RGB_SAD, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, RGB_VAD, \ + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \ + RESET, RGB_TOG, _______, _______, RGB_MOD, RGB_RMOD \ +), + +/* 2 + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | " | , | . | P | Y | F | G | C | R | L | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | O | E | U | I | D | H | T | N | S | / | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ + +[3] = LAYOUT_all( \ + RGB_HUI, RGB_SAI, _______, KC_UP, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, RGB_VAI, \ + RGB_HUD, RGB_SAD, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, RGB_VAD, \ + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \ + RESET, RGB_TOG, _______, _______, RGB_MOD, RGB_RMOD \ +), + +}; diff --git a/keyboards/checkerboards/axon40/keymaps/via/rules.mk b/keyboards/checkerboards/axon40/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/checkerboards/axon40/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/checkerboards/axon40/readme.md b/keyboards/checkerboards/axon40/readme.md new file mode 100644 index 000000000000..2797afa141f8 --- /dev/null +++ b/keyboards/checkerboards/axon40/readme.md @@ -0,0 +1,15 @@ +# Axon40 + +The Axon40 PCB is a modified layout for the Neuron ortho. It's ortho but with a bottom row with larger than 1u keys. + +- Keyboard Maintainer: Nasp +- Hardware Supported: Axon40 +- Hardware Availability: www.CheckerBoards.xyz + +Make example for this keyboard (after setting up your build environment): + + make checkerboards/axon40:default + +Enter the bootloader by shorting GND and RESET between switches 37 and 38. + +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/checkerboards/axon40/rules.mk b/keyboards/checkerboards/axon40/rules.mk new file mode 100644 index 000000000000..6f114436f0b8 --- /dev/null +++ b/keyboards/checkerboards/axon40/rules.mk @@ -0,0 +1,19 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 diff --git a/keyboards/checkerboards/candybar_ortho/info.json b/keyboards/checkerboards/candybar_ortho/info.json index 2ec898cbb0af..0044f154da01 100644 --- a/keyboards/checkerboards/candybar_ortho/info.json +++ b/keyboards/checkerboards/candybar_ortho/info.json @@ -2,8 +2,6 @@ "keyboard_name": "CandyBar_Ortho", "url": "", "maintainer": "nasp", - "width": 17, - "height": 4, "layouts": { "LAYOUT_grid": { "layout": [{"label":"Tab", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"label":"Y", "x":11, "y":0}, {"label":"U", "x":12, "y":0}, {"label":"I", "x":13, "y":0}, {"label":"O", "x":14, "y":0}, {"label":"P", "x":15, "y":0}, {"label":"Back Space", "x":16, "y":0}, {"label":"Esc", "x":0, "y":1}, {"label":"A", "x":1, "y":1}, {"label":"S", "x":2, "y":1}, {"label":"D", "x":3, "y":1}, {"label":"F", "x":4, "y":1}, {"label":"G", "x":5, "y":1}, {"x":6, "y":1}, {"label":"7", "x":7, "y":1}, {"label":"8", "x":8, "y":1}, {"label":"9", "x":9, "y":1}, {"x":10, "y":1}, {"label":"H", "x":11, "y":1}, {"label":"J", "x":12, "y":1}, {"label":"K", "x":13, "y":1}, {"label":"L", "x":14, "y":1}, {"label":";", "x":15, "y":1}, {"label":"'", "x":16, "y":1}, {"label":"Shift", "x":0, "y":2}, {"label":"Z", "x":1, "y":2}, {"label":"X", "x":2, "y":2}, {"label":"C", "x":3, "y":2}, {"label":"V", "x":4, "y":2}, {"label":"B", "x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"label":"N", "x":11, "y":2}, {"label":"M", "x":12, "y":2}, {"label":",", "x":13, "y":2}, {"label":".", "x":14, "y":2}, {"label":"/", "x":15, "y":2}, {"label":"Return", "x":16, "y":2}, {"x":0, "y":3}, {"label":"Ctrl", "x":1, "y":3}, {"label":"Alt", "x":2, "y":3}, {"label":"Super", "x":3, "y":3}, {"label":"⇓", "x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"label":"8", "x":7, "y":3}, {"x":8, "y":3}, {"label":"10", "x":9, "y":3}, {"label":"11", "x":10, "y":3}, {"label":"12", "x":11, "y":3}, {"label":"⇑", "x":12, "y":3}, {"label":"←", "x":13, "y":3}, {"label":"15", "x":14, "y":3}, {"label":"↑", "x":15, "y":3}, {"label":"→", "x":16, "y":3}] diff --git a/keyboards/checkerboards/candybar_ortho/rules.mk b/keyboards/checkerboards/candybar_ortho/rules.mk index 8f0f91d057f9..44d91109528f 100644 --- a/keyboards/checkerboards/candybar_ortho/rules.mk +++ b/keyboards/checkerboards/candybar_ortho/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # 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 diff --git a/keyboards/checkerboards/g_idb60/config.h b/keyboards/checkerboards/g_idb60/config.h new file mode 100644 index 000000000000..996097d5a877 --- /dev/null +++ b/keyboards/checkerboards/g_idb60/config.h @@ -0,0 +1,48 @@ + /* +Copyright 2021 Nathan Spears + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7070 +#define PRODUCT_ID 0x3508 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Nasp +#define PRODUCT G_IDB60 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { D6, D7, B4, B5, F7 } +#define MATRIX_COL_PINS { B6, C6, C7, D4, F6, F0, B0, F1, F4, F5, D1, D0, D3, D5 } +#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/checkerboards/g_idb60/g_idb60.c b/keyboards/checkerboards/g_idb60/g_idb60.c new file mode 100644 index 000000000000..d09f2dbb2048 --- /dev/null +++ b/keyboards/checkerboards/g_idb60/g_idb60.c @@ -0,0 +1,18 @@ + /* + Copyright 2021 Nathan Spears + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +#include "g_idb60.h" diff --git a/keyboards/checkerboards/g_idb60/g_idb60.h b/keyboards/checkerboards/g_idb60/g_idb60.h new file mode 100644 index 000000000000..d471c6a775c2 --- /dev/null +++ b/keyboards/checkerboards/g_idb60/g_idb60.h @@ -0,0 +1,36 @@ + /* + Copyright 2021 Nathan Spears + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define xxx KC_NO + +#define LAYOUT_all( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k2D, \ + 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, k3C, \ + k40, k41, k42, k43, k44, k45, k46 \ +) { \ + { 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, xxx }, \ + { k40, k41, k42, xxx, xxx, xxx, k43, xxx, xxx, xxx, k44, k45, k46, xxx } \ +} diff --git a/keyboards/checkerboards/g_idb60/info.json b/keyboards/checkerboards/g_idb60/info.json new file mode 100644 index 000000000000..a410350ef8c8 --- /dev/null +++ b/keyboards/checkerboards/g_idb60/info.json @@ -0,0 +1,10 @@ +{ + "keyboard_name": "g_idb60", + "url": "", + "maintainer": "nasp", + "layouts": { + "LAYOUT_all": { + "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"~", "x":13, "y":0}, {"label":"Bksp", "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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Fn", "x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"Win", "x":12.5, "y":4}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}] + } + } +} diff --git a/keyboards/checkerboards/g_idb60/keymaps/default/config.h b/keyboards/checkerboards/g_idb60/keymaps/default/config.h new file mode 100644 index 000000000000..7012e9a7e650 --- /dev/null +++ b/keyboards/checkerboards/g_idb60/keymaps/default/config.h @@ -0,0 +1,24 @@ + /* + Copyright 2021 Nathan Spears + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +#pragma once + +#define TAPPING_TERM 175 + +#define PERMISSIVE_HOLD + +#define MOD_TAP_INTERUPT diff --git a/keyboards/checkerboards/g_idb60/keymaps/default/keymap.c b/keyboards/checkerboards/g_idb60/keymaps/default/keymap.c new file mode 100644 index 000000000000..730b2597b1b9 --- /dev/null +++ b/keyboards/checkerboards/g_idb60/keymaps/default/keymap.c @@ -0,0 +1,85 @@ + /* + Copyright 2021 Nathan Spears + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + + +#define RS_SLS RSFT_T(KC_SLSH) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Default QWERTY layer + * ,-------------------------------------------------------------. + * |Esc| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ |Del| + * |-------------------------------------------------------------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Bksp | + * |-------------------------------------------------------------| + * | Caps | A | S | D | F | G | H | J | K | L | ; | ' | Enter | + * |-------------------------------------------------------------| + * | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | FN | + * |-------------------------------------------------------------| + * |Ctrl |GUI |Alt | Space |Alt |GUI |Ctrl | + * `-------------------------------------------------------------' + */ + [0] = LAYOUT_all( + 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_BSLS, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, TT(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL + ), + /* Main Numbers, Symbols & Function Layer + * ,------------------------------------------------------------------------------. + * | `~ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |Del | | + * |------------------------------------------------------------------------------| + * |RTOG |RMOD| UP | | | | | | | | | | | | | + * |------------------------------------------------------------------------------| + * |BRTHE |LFT|DWN|RGHT| | | | | | | | | | | + * |------------------------------------------------------------------------------| + * |BINC |BDEC|BTOG| | | | | | | | | | | | + * |------------------------------------------------------------------------------| + * | | | | | | |RESET | + * `------------------------------------------------------------------------------' + */ + [1] = 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_DEL, _______, + _______,_______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______,_______,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, RESET + ), + + /* Main Numbers, Symbols & Function Layer + * ,------------------------------------------------------------------------------. + * | `~ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |Del | | + * |------------------------------------------------------------------------------| + * |RTOG |RMOD| UP | | | | | | | | | | | | | + * |------------------------------------------------------------------------------| + * |BRTHE |LFT|DWN|RGHT| | | | | | | | | | | + * |------------------------------------------------------------------------------| + * |BINC |BDEC|BTOG| | | | | | | | | | | | + * |------------------------------------------------------------------------------| + * | | | | | | |RESET | + * `------------------------------------------------------------------------------' + */ + [2] = 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_DEL, _______, + _______,_______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______,_______,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, RESET + ) +}; diff --git a/keyboards/checkerboards/g_idb60/keymaps/via/config.h b/keyboards/checkerboards/g_idb60/keymaps/via/config.h new file mode 100644 index 000000000000..e862c2548397 --- /dev/null +++ b/keyboards/checkerboards/g_idb60/keymaps/via/config.h @@ -0,0 +1,22 @@ + /* + Copyright 2021 Nathan Spears + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +#pragma once + +#define TAPPING_TERM 175 + +#define TAPPING_TOGGLE 2 diff --git a/keyboards/checkerboards/g_idb60/keymaps/via/keymap.c b/keyboards/checkerboards/g_idb60/keymaps/via/keymap.c new file mode 100644 index 000000000000..cd6c10c7e0ea --- /dev/null +++ b/keyboards/checkerboards/g_idb60/keymaps/via/keymap.c @@ -0,0 +1,85 @@ + /* + Copyright 2021 Nathan Spears + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + + +#define RS_SLS RSFT_T(KC_SLSH) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Default QWERTY layer + * ,-------------------------------------------------------------. + * |Esc| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ |Del| + * |-------------------------------------------------------------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Bksp | + * |-------------------------------------------------------------| + * | Caps | A | S | D | F | G | H | J | K | L | ; | ' | Enter | + * |-------------------------------------------------------------| + * | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | FN | + * |-------------------------------------------------------------| + * |Ctrl |GUI |Alt | Space |Alt |GUI |Ctrl | + * `-------------------------------------------------------------' + */ + [0] = LAYOUT_all( + 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_BSLS, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, TT(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL + ), + /* Main Numbers, Symbols & Function Layer + * ,------------------------------------------------------------------------------. + * | `~ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |Del | | + * |------------------------------------------------------------------------------| + * |RTOG |RMOD| UP | | | | | | | | | | | | | + * |------------------------------------------------------------------------------| + * |BRTHE |LFT|DWN|RGHT| | | | | | | | | | | + * |------------------------------------------------------------------------------| + * |BINC |BDEC|BTOG| | | | | | | | | | | | + * |------------------------------------------------------------------------------| + * | | | | | | |RESET | + * `------------------------------------------------------------------------------' + */ + [1] = 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_DEL, _______, + _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, RESET + ), + + /* Main Numbers, Symbols & Function Layer + * ,------------------------------------------------------------------------------. + * | `~ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |Del | | + * |------------------------------------------------------------------------------| + * |RTOG |RMOD| UP | | | | | | | | | | | | | + * |------------------------------------------------------------------------------| + * |BRTHE |LFT|DWN|RGHT| | | | | | | | | | | + * |------------------------------------------------------------------------------| + * |BINC |BDEC|BTOG| | | | | | | | | | | | + * |------------------------------------------------------------------------------| + * | | | | | | |RESET | + * `------------------------------------------------------------------------------' + */ + [2] = 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_DEL, _______, + _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, RESET + ) +}; diff --git a/keyboards/checkerboards/g_idb60/keymaps/via/rules.mk b/keyboards/checkerboards/g_idb60/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/checkerboards/g_idb60/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/checkerboards/g_idb60/readme.md b/keyboards/checkerboards/g_idb60/readme.md new file mode 100644 index 000000000000..19d2dc83718b --- /dev/null +++ b/keyboards/checkerboards/g_idb60/readme.md @@ -0,0 +1,15 @@ +# G-IDB60 + +60% drop-in PCB for IDB60 feauturing Tsangan bottom row, split right shift, and split backspace. + +- Keyboard Maintainer: [Nasp](https://github.com/npspears) +- Hardware Supported: G-IDB60 PCB +- Hardware Availability: https://www.checkerboards.xyz/gidb60.html + +Make example for this keyboard (after setting up your build environment): + + make checkerboards/g_idb60:default + +Enter the bootloader by shorting RESET and GND next to the spacebar switch. + +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/checkerboards/g_idb60/rules.mk b/keyboards/checkerboards/g_idb60/rules.mk new file mode 100644 index 000000000000..d2109f62500b --- /dev/null +++ b/keyboards/checkerboards/g_idb60/rules.mk @@ -0,0 +1,19 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/checkerboards/nop60/info.json b/keyboards/checkerboards/nop60/info.json index 82ff7229fab0..18b0bb25c2df 100644 --- a/keyboards/checkerboards/nop60/info.json +++ b/keyboards/checkerboards/nop60/info.json @@ -1,15 +1,153 @@ { "keyboard_name": "nop60", - "url": "", "maintainer": "nasp", - "width": 15, - "height": 5, + "url": "", + "layout_aliases": { + "LAYOUT_2x3u": "LAYOUT_60_tsangan_hhkb_split_space", + "LAYOUT_7u": "LAYOUT_60_tsangan_hhkb" + }, "layouts": { - "LAYOUT": { - "2x3u": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"~", "x":13, "y":0}, {"label":"Bksp", "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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Fn", "x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":3}, {"x":7, "y":4}, {"x":8, "y":4, "w":3}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"Win", "x":12.5, "y":4}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}] + "LAYOUT_60_tsangan_hhkb_split_space": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"!", "x":1, "y":0}, + {"label":"@", "x":2, "y":0}, + {"label":"#", "x":3, "y":0}, + {"label":"$", "x":4, "y":0}, + {"label":"%", "x":5, "y":0}, + {"label":"^", "x":6, "y":0}, + {"label":"&", "x":7, "y":0}, + {"label":"*", "x":8, "y":0}, + {"label":"(", "x":9, "y":0}, + {"label":")", "x":10, "y":0}, + {"label":"_", "x":11, "y":0}, + {"label":"+", "x":12, "y":0}, + {"label":"~", "x":13, "y":0}, + {"label":"Bksp", "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":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"Fn", "x":14, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.5}, + {"label":"Win", "x":1.5, "y":4}, + {"label":"Alt", "x":2.5, "y":4, "w":1.5}, + {"x":4, "y":4, "w":3}, + {"x":7, "y":4}, + {"x":8, "y":4, "w":3}, + {"label":"Alt", "x":11, "y":4, "w":1.5}, + {"label":"Win", "x":12.5, "y":4}, + {"label":"Ctrl", "x":13.5, "y":4, "w":1.5} + ] }, - "LAYOUT": { - "7u": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"~", "x":13, "y":0}, {"label":"Bksp", "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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Fn", "x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"Win", "x":12.5, "y":4}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}] + "LAYOUT_60_tsangan_hhkb": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"!", "x":1, "y":0}, + {"label":"@", "x":2, "y":0}, + {"label":"#", "x":3, "y":0}, + {"label":"$", "x":4, "y":0}, + {"label":"%", "x":5, "y":0}, + {"label":"^", "x":6, "y":0}, + {"label":"&", "x":7, "y":0}, + {"label":"*", "x":8, "y":0}, + {"label":"(", "x":9, "y":0}, + {"label":")", "x":10, "y":0}, + {"label":"_", "x":11, "y":0}, + {"label":"+", "x":12, "y":0}, + {"label":"~", "x":13, "y":0}, + {"label":"Bksp", "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":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"Fn", "x":14, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.5}, + {"label":"Win", "x":1.5, "y":4}, + {"label":"Alt", "x":2.5, "y":4, "w":1.5}, + {"x":4, "y":4, "w":7}, + {"label":"Alt", "x":11, "y":4, "w":1.5}, + {"label":"Win", "x":12.5, "y":4}, + {"label":"Ctrl", "x":13.5, "y":4, "w":1.5} + ] } } } diff --git a/keyboards/checkerboards/nop60/keymaps/2x3u/keymap.c b/keyboards/checkerboards/nop60/keymaps/2x3u/keymap.c deleted file mode 100644 index eb05ab1364a1..000000000000 --- a/keyboards/checkerboards/nop60/keymaps/2x3u/keymap.c +++ /dev/null @@ -1,83 +0,0 @@ - /* - Copyright 2021 Nathan Spears - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - */ - -#include QMK_KEYBOARD_H - - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Default QWERTY layer - * ,-------------------------------------------------------------. - * |Esc| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ |Del| - * |-------------------------------------------------------------| - * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Bksp | - * |-------------------------------------------------------------| - * | Caps | A | S | D | F | G | H | J | K | L | ; | ' | Enter | - * |-------------------------------------------------------------| - * | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | FN | - * |-------------------------------------------------------------| - * |Ctrl |GUI |Alt |Space |BLTOG |Space |Alt |GUI |Ctrl | - * `-------------------------------------------------------------' - */ - [0] = LAYOUT_2x3u( - 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_BSLS, KC_DEL, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_SPC, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, BL_TOGG, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL - ), - /* Main Numbers, Symbols & Function Layer (MOMENTARY) - * ,------------------------------------------------------------------------------. - * | `~ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |Del | | - * |------------------------------------------------------------------------------| - * |RTOG |RMOD| UP | | | | | | | | | | | | | - * |------------------------------------------------------------------------------| - * |BRTHE |LFT|DWN|RGHT| | | | | | | | | | | - * |------------------------------------------------------------------------------| - * |BINC |BDEC|BTOG| | | | | | | | | | | | - * |------------------------------------------------------------------------------| - * | | | | | | | | |RESET | - * `------------------------------------------------------------------------------' - */ - [1] = LAYOUT_2x3u( - KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, - RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, - BL_INC, BL_DEC, BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, RESET - ), - - /* ALTERNATE Function layer (MOMENTARY) - * ,------------------------------------------------------------------------------. - * | `~ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |Del | | - * |------------------------------------------------------------------------------| - * |RTOG |RMOD| UP | | | | | | | | | | | | | - * |------------------------------------------------------------------------------| - * |BRTHE |LFT|DWN|RGHT| | | | | | | | | | | - * |------------------------------------------------------------------------------| - * |BINC |BDEC|BTOG| | | | | | | | | | | | - * |------------------------------------------------------------------------------| - * | | | | | | | | |RESET | - * `------------------------------------------------------------------------------' - */ - [2] = LAYOUT_2x3u( - KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, - RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, - BL_INC, BL_DEC, BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, RESET - ) -}; diff --git a/keyboards/checkerboards/nop60/keymaps/7u/keymap.c b/keyboards/checkerboards/nop60/keymaps/7u/keymap.c index 1d230c36326e..61bca2616dc9 100644 --- a/keyboards/checkerboards/nop60/keymaps/7u/keymap.c +++ b/keyboards/checkerboards/nop60/keymaps/7u/keymap.c @@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |Ctrl |GUI |Alt | Space |Alt |GUI |Ctrl | * `-------------------------------------------------------------' */ - [0] = LAYOUT_7u( + [0] = LAYOUT_60_tsangan_hhkb( 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_BSLS, KC_DEL, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, @@ -54,7 +54,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | |RESET | * `------------------------------------------------------------------------------' */ - [1] = LAYOUT_7u( + [1] = LAYOUT_60_tsangan_hhkb( KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -75,7 +75,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | |RESET | * `------------------------------------------------------------------------------' */ - [2] = LAYOUT_7u( + [2] = LAYOUT_60_tsangan_hhkb( KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/checkerboards/nop60/keymaps/2x3u/config.h b/keyboards/checkerboards/nop60/keymaps/default/config.h similarity index 100% rename from keyboards/checkerboards/nop60/keymaps/2x3u/config.h rename to keyboards/checkerboards/nop60/keymaps/default/config.h diff --git a/keyboards/checkerboards/nop60/keymaps/default/keymap.c b/keyboards/checkerboards/nop60/keymaps/default/keymap.c new file mode 100644 index 000000000000..ef3ff4b8bdac --- /dev/null +++ b/keyboards/checkerboards/nop60/keymaps/default/keymap.c @@ -0,0 +1,83 @@ + /* + Copyright 2021 Nathan Spears + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Default QWERTY layer + * ,-------------------------------------------------------------. + * |Esc| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ |Del| + * |-------------------------------------------------------------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Bksp | + * |-------------------------------------------------------------| + * | Caps | A | S | D | F | G | H | J | K | L | ; | ' | Enter | + * |-------------------------------------------------------------| + * | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | FN | + * |-------------------------------------------------------------| + * |Ctrl |GUI |Alt |Space |BLTOG |Space |Alt |GUI |Ctrl | + * `-------------------------------------------------------------' + */ + [0] = LAYOUT_60_tsangan_hhkb_split_space( + 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_BSLS, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_SPC, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, BL_TOGG, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL + ), + /* Main Numbers, Symbols & Function Layer (MOMENTARY) + * ,------------------------------------------------------------------------------. + * | `~ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |Del | | + * |------------------------------------------------------------------------------| + * |RTOG |RMOD| UP | | | | | | | | | | | | | + * |------------------------------------------------------------------------------| + * |BRTHE |LFT|DWN|RGHT| | | | | | | | | | | + * |------------------------------------------------------------------------------| + * |BINC |BDEC|BTOG| | | | | | | | | | | | + * |------------------------------------------------------------------------------| + * | | | | | | | | |RESET | + * `------------------------------------------------------------------------------' + */ + [1] = LAYOUT_60_tsangan_hhkb_split_space( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, + RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + BL_INC, BL_DEC, BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, RESET + ), + + /* ALTERNATE Function layer (MOMENTARY) + * ,------------------------------------------------------------------------------. + * | `~ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |Del | | + * |------------------------------------------------------------------------------| + * |RTOG |RMOD| UP | | | | | | | | | | | | | + * |------------------------------------------------------------------------------| + * |BRTHE |LFT|DWN|RGHT| | | | | | | | | | | + * |------------------------------------------------------------------------------| + * |BINC |BDEC|BTOG| | | | | | | | | | | | + * |------------------------------------------------------------------------------| + * | | | | | | | | |RESET | + * `------------------------------------------------------------------------------' + */ + [2] = LAYOUT_60_tsangan_hhkb_split_space( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, + RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + BL_INC, BL_DEC, BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, RESET + ) +}; diff --git a/keyboards/checkerboards/nop60/keymaps/via/keymap.c b/keyboards/checkerboards/nop60/keymaps/via/keymap.c index 06714115f5d6..1fbed16ca1bb 100644 --- a/keyboards/checkerboards/nop60/keymaps/via/keymap.c +++ b/keyboards/checkerboards/nop60/keymaps/via/keymap.c @@ -43,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * └────┴───┴────┴──────────┴────────┴────┴────┘ │ ← │ ↓ │ → │ * └───┴───┴───┘ */ - [_BASE] = LAYOUT_2x3u( + [_BASE] = LAYOUT_60_tsangan_hhkb_split_space( 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_BSLS, KC_DEL, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, @@ -62,7 +62,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * └────┴───┴────┴──────────┴────────┴────┴────┘ │ │ │ │ * └───┴───┴───┘ */ - [_FN1] = LAYOUT_2x3u( + [_FN1] = LAYOUT_60_tsangan_hhkb_split_space( KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -82,7 +82,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * └────┴────┴────┴──────────┴────────┴────┴────┘ │ │ │ │ * └───┴───┴───┘ */ - [_FN2] = LAYOUT_2x3u( + [_FN2] = LAYOUT_60_tsangan_hhkb_split_space( KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -90,7 +90,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, RESET ), - [_VIA] = LAYOUT_2x3u( + [_VIA] = LAYOUT_60_tsangan_hhkb_split_space( KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/checkerboards/nop60/nop60.h b/keyboards/checkerboards/nop60/nop60.h index 57da9d51ed15..6e98e854b7ff 100644 --- a/keyboards/checkerboards/nop60/nop60.h +++ b/keyboards/checkerboards/nop60/nop60.h @@ -21,7 +21,7 @@ #define xxx KC_NO -#define LAYOUT_2x3u( \ +#define LAYOUT_60_tsangan_hhkb_split_space( \ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k4D, \ 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, \ @@ -34,7 +34,7 @@ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, xxx, k3D }, \ { k40, k41, k42, xxx, k44, xxx, k46, xxx, k48, xxx, k4A, k4B, k4C, k4D } \ } -#define LAYOUT_7u( \ +#define LAYOUT_60_tsangan_hhkb( \ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k4D, \ 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, \ diff --git a/keyboards/checkerboards/nop60/rules.mk b/keyboards/checkerboards/nop60/rules.mk index b78caef5e1b3..0afa8cc63c3d 100644 --- a/keyboards/checkerboards/nop60/rules.mk +++ b/keyboards/checkerboards/nop60/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/checkerboards/phoenix45_ortho/config.h b/keyboards/checkerboards/phoenix45_ortho/config.h new file mode 100644 index 000000000000..ebd954be33af --- /dev/null +++ b/keyboards/checkerboards/phoenix45_ortho/config.h @@ -0,0 +1,52 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7070 +#define PRODUCT_ID 0x1849 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Nasp +#define PRODUCT PHOENIX45_ORTHO + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 13 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { D2, D1, D0, C4 } +#define MATRIX_COL_PINS { D3, C2, C5, B0, D6, D5, D4, B4, B5, B6, B7, C7, C6 } +#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 + +/* encoder pads */ +#define ENCODERS_PAD_A { B1 } +#define ENCODERS_PAD_B { B2 } +#define ENCODER_RESOLUTION 4 diff --git a/keyboards/checkerboards/phoenix45_ortho/info.json b/keyboards/checkerboards/phoenix45_ortho/info.json new file mode 100644 index 000000000000..e64e67abbf63 --- /dev/null +++ b/keyboards/checkerboards/phoenix45_ortho/info.json @@ -0,0 +1,16 @@ +{ + "keyboard_name": "Phoenix45_Ortho", + "url": "www.checkerboards.xyz", + "maintainer": "nasp", + "layouts": { + "LAYOUT_ortho_2x225u": { + "layout": [{"label":"Tab", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"x":11, "y":0}, {"label":"Back Space", "x":12, "y":0}, {"label":"Esc", "x":0, "y":1}, {"label":"A", "x":1, "y":1}, {"label":"S", "x":2, "y":1}, {"label":"D", "x":3, "y":1}, {"label":"F", "x":4, "y":1}, {"label":"G", "x":5, "y":1}, {"label":"H", "x":6, "y":1}, {"label":"J", "x":7, "y":1}, {"label":"K", "x":8, "y":1}, {"label":"L", "x":9, "y":1}, {"label":";", "x":10, "y":1}, {"x":11, "y":1}, {"label":"'", "x":12, "y":1}, {"label":"Shift", "x":0, "y":2}, {"label":"Z", "x":1, "y":2}, {"label":"X", "x":2, "y":2}, {"label":"C", "x":3, "y":2}, {"label":"V", "x":4, "y":2}, {"label":"B", "x":5, "y":2}, {"label":"N", "x":6, "y":2}, {"label":"M", "x":7, "y":2}, {"label":",", "x":8, "y":2}, {"label":".", "x":9, "y":2}, {"label":"/", "x":10, "y":2}, {"x":11, "y":2}, {"label":"Return", "x":12, "y":2}, {"label":"Hyper", "x":0, "y":3, "w":1.25}, {"label":"Super", "x":1.25, "y":3}, {"label":"Meta", "x":2.25, "y":3, "w":1.5}, {"x":3.75, "y":3, "w":2.25}, {"label":"Fn", "x":6, "y":3}, {"x":7, "y":3, "w":2.25}, {"label":"Meta", "x":9.25, "y":3, "w":1.5}, {"label":"Super", "x":10.75, "y":3}, {"label":"Hyper", "x":11.75, "y":3, "w":1.25}] + }, + "LAYOUT_ortho_2x3u": { + "layout": [{"label":"Tab", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"x":11, "y":0}, {"label":"Back Space", "x":12, "y":0}, {"label":"Esc", "x":0, "y":1}, {"label":"A", "x":1, "y":1}, {"label":"S", "x":2, "y":1}, {"label":"D", "x":3, "y":1}, {"label":"F", "x":4, "y":1}, {"label":"G", "x":5, "y":1}, {"label":"H", "x":6, "y":1}, {"label":"J", "x":7, "y":1}, {"label":"K", "x":8, "y":1}, {"label":"L", "x":9, "y":1}, {"label":";", "x":10, "y":1}, {"x":11, "y":1}, {"label":"'", "x":12, "y":1}, {"label":"Shift", "x":0, "y":2}, {"label":"Z", "x":1, "y":2}, {"label":"X", "x":2, "y":2}, {"label":"C", "x":3, "y":2}, {"label":"V", "x":4, "y":2}, {"label":"B", "x":5, "y":2}, {"label":"N", "x":6, "y":2}, {"label":"M", "x":7, "y":2}, {"label":",", "x":8, "y":2}, {"label":".", "x":9, "y":2}, {"label":"/", "x":10, "y":2}, {"x":11, "y":2}, {"label":"Return", "x":12, "y":2}, {"label":"Hyper", "x":0, "y":3, "w":1.25}, {"label":"Super", "x":1.25, "y":3}, {"label":"Meta", "x":2.25, "y":3, "w":1.25}, {"x":3.5, "y":3, "w":3}, {"x":6.5, "y":3, "w":3}, {"label":"Meta", "x":9.5, "y":3, "w":1.25}, {"label":"Super", "x":10.75, "y":3}, {"label":"Hyper", "x":11.75, "y":3, "w":1.25}] + }, +"LAYOUT_ortho_6u": { + "layout": [{"label":"Tab", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"x":11, "y":0}, {"label":"Back Space", "x":12, "y":0}, {"label":"Esc", "x":0, "y":1}, {"label":"A", "x":1, "y":1}, {"label":"S", "x":2, "y":1}, {"label":"D", "x":3, "y":1}, {"label":"F", "x":4, "y":1}, {"label":"G", "x":5, "y":1}, {"label":"H", "x":6, "y":1}, {"label":"J", "x":7, "y":1}, {"label":"K", "x":8, "y":1}, {"label":"L", "x":9, "y":1}, {"label":";", "x":10, "y":1}, {"x":11, "y":1}, {"label":"'", "x":12, "y":1}, {"label":"Shift", "x":0, "y":2}, {"label":"Z", "x":1, "y":2}, {"label":"X", "x":2, "y":2}, {"label":"C", "x":3, "y":2}, {"label":"V", "x":4, "y":2}, {"label":"B", "x":5, "y":2}, {"label":"N", "x":6, "y":2}, {"label":"M", "x":7, "y":2}, {"label":",", "x":8, "y":2}, {"label":".", "x":9, "y":2}, {"label":"/", "x":10, "y":2}, {"x":11, "y":2}, {"label":"Return", "x":12, "y":2}, {"label":"Hyper", "x":0, "y":3, "w":1.25}, {"label":"Super", "x":1.25, "y":3}, {"label":"Meta", "x":2.25, "y":3, "w":1.25}, {"label":"", "x":3.5, "y":3, "w":6}, {"label":"Meta", "x":9.5, "y":3, "w":1.25}, {"label":"Super", "x":10.75, "y":3}, {"label":"Hyper", "x":11.75, "y":3, "w":1.25}] + } + } +} \ No newline at end of file diff --git a/keyboards/checkerboards/phoenix45_ortho/keymaps/2x3u/config.h b/keyboards/checkerboards/phoenix45_ortho/keymaps/2x3u/config.h new file mode 100644 index 000000000000..b1498826ee3e --- /dev/null +++ b/keyboards/checkerboards/phoenix45_ortho/keymaps/2x3u/config.h @@ -0,0 +1,19 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define TAPPING_TOGGLE 2 diff --git a/keyboards/checkerboards/phoenix45_ortho/keymaps/2x3u/keymap.c b/keyboards/checkerboards/phoenix45_ortho/keymaps/2x3u/keymap.c new file mode 100644 index 000000000000..d72c7fecc123 --- /dev/null +++ b/keyboards/checkerboards/phoenix45_ortho/keymaps/2x3u/keymap.c @@ -0,0 +1,46 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Defines for task manager and such +#define CALTDEL LCTL(LALT(KC_DEL)) +#define TSKMGR LCTL(LSFT(KC_ESC)) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_ortho_2x3u( + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_PGUP, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, + CTL_T(KC_ESC), KC_A, KC_R, KC_S, KC_T, KC_D, KC_PGDN, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_HOME, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_GRV, KC_LGUI, KC_LALT, TT(1), LT(2, KC_SPC), CALTDEL, KC_RALT, KC_CAPS + ), + + [1] = LAYOUT_ortho_2x3u( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_SLSH, KC_1, KC_2, KC_3, KC_4, KC_5, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, + _______, _______, _______, _______, _______, _______, _______, _______, KC_PPLS, KC_EQL, _______, _______, _______, + KC_ESC, CALTDEL, TSKMGR, _______, _______, KC_NUBS, KC_GRV, _______ + ), + + [2] = LAYOUT_ortho_2x3u( + _______, _______, _______, KC_UP, _______, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, _______, + _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, _______, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + RESET, _______, _______, _______, _______, _______, _______, _______ + ) +}; + diff --git a/keyboards/checkerboards/phoenix45_ortho/keymaps/6u/config.h b/keyboards/checkerboards/phoenix45_ortho/keymaps/6u/config.h new file mode 100644 index 000000000000..b1498826ee3e --- /dev/null +++ b/keyboards/checkerboards/phoenix45_ortho/keymaps/6u/config.h @@ -0,0 +1,19 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define TAPPING_TOGGLE 2 diff --git a/keyboards/checkerboards/phoenix45_ortho/keymaps/6u/keymap.c b/keyboards/checkerboards/phoenix45_ortho/keymaps/6u/keymap.c new file mode 100644 index 000000000000..53bc6a3286ba --- /dev/null +++ b/keyboards/checkerboards/phoenix45_ortho/keymaps/6u/keymap.c @@ -0,0 +1,46 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Defines for task manager and such +#define CALTDEL LCTL(LALT(KC_DEL)) +#define TSKMGR LCTL(LSFT(KC_ESC)) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_ortho_6u( + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_PGUP, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, + CTL_T(KC_ESC), KC_A, KC_R, KC_S, KC_T, KC_D, KC_PGDN, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, TT(2), KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_GRV, KC_LGUI, KC_LALT, LT(1, KC_SPC), CALTDEL, KC_RALT, KC_CAPS + ), + + [1] = LAYOUT_ortho_6u( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_SLSH, KC_1, KC_2, KC_3, KC_4, KC_5, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, + _______, _______, _______, _______, _______, _______, _______, _______, KC_PPLS, KC_EQL, _______, _______, _______, + KC_ESC, CALTDEL, TSKMGR, _______, KC_NUBS, KC_GRV, _______ + ), + + [2] = LAYOUT_ortho_6u( + _______, _______, _______, KC_UP, _______, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, _______, + _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, _______, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + RESET, _______, _______, _______, _______, _______, _______ + ) +}; + diff --git a/keyboards/checkerboards/phoenix45_ortho/keymaps/default/config.h b/keyboards/checkerboards/phoenix45_ortho/keymaps/default/config.h new file mode 100644 index 000000000000..b1498826ee3e --- /dev/null +++ b/keyboards/checkerboards/phoenix45_ortho/keymaps/default/config.h @@ -0,0 +1,19 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define TAPPING_TOGGLE 2 diff --git a/keyboards/checkerboards/phoenix45_ortho/keymaps/default/keymap.c b/keyboards/checkerboards/phoenix45_ortho/keymaps/default/keymap.c new file mode 100644 index 000000000000..cfe0615dee14 --- /dev/null +++ b/keyboards/checkerboards/phoenix45_ortho/keymaps/default/keymap.c @@ -0,0 +1,46 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Defines for task manager and such +#define CALTDEL LCTL(LALT(KC_DEL)) +#define TSKMGR LCTL(LSFT(KC_ESC)) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_ortho_2x225u( + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_PGUP, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, + CTL_T(KC_ESC), KC_A, KC_R, KC_S, KC_T, KC_D, KC_PGDN, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_HOME, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_GRV, KC_LGUI, KC_LALT, TT(1), CALTDEL, LT(2, KC_SPC), CALTDEL, KC_RALT, KC_CAPS + ), + + [1] = LAYOUT_ortho_2x225u( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_SLSH, KC_1, KC_2, KC_3, KC_4, KC_5, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, + _______, _______, _______, _______, _______, _______, _______, _______, KC_PPLS, KC_EQL, _______, _______, _______, + KC_ESC, CALTDEL, TSKMGR, _______, _______, _______, KC_NUBS, KC_GRV, _______ + ), + + [2] = LAYOUT_ortho_2x225u( + _______, _______, _______, KC_UP, _______, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, _______, + _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, _______, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + RESET, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + diff --git a/keyboards/checkerboards/phoenix45_ortho/keymaps/via/config.h b/keyboards/checkerboards/phoenix45_ortho/keymaps/via/config.h new file mode 100644 index 000000000000..b1498826ee3e --- /dev/null +++ b/keyboards/checkerboards/phoenix45_ortho/keymaps/via/config.h @@ -0,0 +1,19 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define TAPPING_TOGGLE 2 diff --git a/keyboards/checkerboards/phoenix45_ortho/keymaps/via/keymap.c b/keyboards/checkerboards/phoenix45_ortho/keymaps/via/keymap.c new file mode 100644 index 000000000000..9bd72c06cf5a --- /dev/null +++ b/keyboards/checkerboards/phoenix45_ortho/keymaps/via/keymap.c @@ -0,0 +1,52 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Defines for task manager and such +#define CALTDEL LCTL(LALT(KC_DEL)) +#define TSKMGR LCTL(LSFT(KC_ESC)) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_ortho_2x225u( + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_PGUP, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, + CTL_T(KC_ESC), KC_A, KC_R, KC_S, KC_T, KC_D, KC_PGDN, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_HOME, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_GRV, KC_LGUI, KC_LALT, TT(1), CALTDEL, LT(2, KC_SPC), CALTDEL, KC_RALT, KC_CAPS + ), + + [1] = LAYOUT_ortho_2x225u( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_SLSH, KC_1, KC_2, KC_3, KC_4, KC_5, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, + _______, _______, _______, _______, _______, _______, _______, _______, KC_PPLS, KC_EQL, _______, _______, _______, + KC_ESC, CALTDEL, TSKMGR, _______, _______, _______, KC_NUBS, KC_GRV, _______ + ), + + [2] = LAYOUT_ortho_2x225u( + _______, _______, _______, KC_UP, _______, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, _______, + _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, _______, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + RESET, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [3] = LAYOUT_ortho_2x225u( + _______, _______, _______, KC_UP, _______, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, _______, + _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, _______, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + RESET, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/checkerboards/phoenix45_ortho/keymaps/via/rules.mk b/keyboards/checkerboards/phoenix45_ortho/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/checkerboards/phoenix45_ortho/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/checkerboards/phoenix45_ortho/phoenix45_ortho.c b/keyboards/checkerboards/phoenix45_ortho/phoenix45_ortho.c new file mode 100644 index 000000000000..89ce3f5ce91a --- /dev/null +++ b/keyboards/checkerboards/phoenix45_ortho/phoenix45_ortho.c @@ -0,0 +1,29 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "phoenix45_ortho.h" + +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + if (index == 0) { + if (clockwise) { + tap_code_delay(KC_VOLD, 10); + } else { + tap_code_delay(KC_VOLU, 10); + } + } + return true; +} diff --git a/keyboards/checkerboards/phoenix45_ortho/phoenix45_ortho.h b/keyboards/checkerboards/phoenix45_ortho/phoenix45_ortho.h new file mode 100644 index 000000000000..8abf2875a9f8 --- /dev/null +++ b/keyboards/checkerboards/phoenix45_ortho/phoenix45_ortho.h @@ -0,0 +1,58 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + + +#define LAYOUT_ortho_2x225u( \ + 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, k34, k36, k38, k39, k3B, k3C \ +) { \ + { 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, XXX, k34, XXX, k36, XXX, k38, k39, XXX, k3B, k3C } \ +} + +#define LAYOUT_ortho_2x3u( \ + 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, k34, k38, k39, k3B, k3C \ +) { \ + { 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, XXX, k34, XXX, XXX, XXX, k38, k39, XXX, k3B, k3C } \ +} + +#define LAYOUT_ortho_6u( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, kOC, \ + 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, k36, k39, k3B, k3C \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, kOC }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k2C }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k3C }, \ + { k30, k31, k32, XXX, XXX, XXX, k36, XXX, XXX, k39, XXX, k3B, k3C } \ +} diff --git a/keyboards/checkerboards/phoenix45_ortho/readme.md b/keyboards/checkerboards/phoenix45_ortho/readme.md new file mode 100644 index 000000000000..46e158c0aac2 --- /dev/null +++ b/keyboards/checkerboards/phoenix45_ortho/readme.md @@ -0,0 +1,17 @@ +# Phoenix45_Ortho + +![Phoenix45_Ortho](https://i.imgur.com/OvgOhIe.png) + +The Phoenix45_Ortho PCB is an ortholinear alternative to Mechvault's Phoenix45. It should also work in the JD45. + +* Keyboard Maintainer: [Nasp](https://github.com/npspears) +* Hardware Supported: Phoenix45 +* Hardware Availability: https://www.checkerboards.xyz/phoenix45-ortho.html + +Make example for this keyboard (after setting up your build environment): + + make checkerboards/phoenix45_ortho:default + +To put the PCB into bootloader mode, short the two pin holes together that are just beneath diode #23. + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). \ No newline at end of file diff --git a/keyboards/checkerboards/phoenix45_ortho/rules.mk b/keyboards/checkerboards/phoenix45_ortho/rules.mk new file mode 100644 index 000000000000..126f9ce142c3 --- /dev/null +++ b/keyboards/checkerboards/phoenix45_ortho/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = atmega32u2 + +# 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 = yes # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +UNICODE_ENABLE = yes # Unicode +ENCODER_ENABLE = yes # Encoder enable + +# Disable unsupported hardware +AUDIO_SUPPORTED = no +BACKLIGHT_SUPPORTED = no diff --git a/keyboards/checkerboards/quark_lp/config.h b/keyboards/checkerboards/quark_lp/config.h new file mode 100644 index 000000000000..78197d33a25a --- /dev/null +++ b/keyboards/checkerboards/quark_lp/config.h @@ -0,0 +1,64 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7070 +#define PRODUCT_ID 0x5354 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Nasp +#define PRODUCT QUARK_LP + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { C5, C4, C6, C7 } +#define MATRIX_COL_PINS { B6, B5, B4, B3, B0, D6, D5, D4, D3, D2, D1, D0 } +#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 + +// ws2812 options +#define RGB_DI_PIN C2 // pin the DI on the ws2812 is hooked-up to +#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 // number of LEDs +#define RGBLIGHT_HUE_STEP 12 // units to step when in/decreasing hue +#define RGBLIGHT_SAT_STEP 12 // units to step when in/decresing saturation +#define RGBLIGHT_VAL_STEP 12 // units to step when in/decreasing value (brightness) diff --git a/keyboards/checkerboards/quark_lp/info.json b/keyboards/checkerboards/quark_lp/info.json new file mode 100644 index 000000000000..4568a4cfad2f --- /dev/null +++ b/keyboards/checkerboards/quark_lp/info.json @@ -0,0 +1,16 @@ +{ + "keyboard_name": "Quark_LP", + "url": "https://github.com/npspears", + "maintainer": "nasp", + "layouts": { + "LAYOUT_ortho_4x12": { + "layout": [{"label":"Tab", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"Back Space", "x":11, "y":0}, {"label":"Esc", "x":0, "y":1}, {"label":"A", "x":1, "y":1}, {"label":"S", "x":2, "y":1}, {"label":"D", "x":3, "y":1}, {"label":"F", "x":4, "y":1}, {"label":"G", "x":5, "y":1}, {"label":"H", "x":6, "y":1}, {"label":"J", "x":7, "y":1}, {"label":"K", "x":8, "y":1}, {"label":"L", "x":9, "y":1}, {"label":";", "x":10, "y":1}, {"label":"'", "x":11, "y":1}, {"label":"Shift", "x":0, "y":2}, {"label":"Z", "x":1, "y":2}, {"label":"X", "x":2, "y":2}, {"label":"C", "x":3, "y":2}, {"label":"V", "x":4, "y":2}, {"label":"B", "x":5, "y":2}, {"label":"N", "x":6, "y":2}, {"label":"M", "x":7, "y":2}, {"label":",", "x":8, "y":2}, {"label":".", "x":9, "y":2}, {"label":"/", "x":10, "y":2}, {"label":"Return", "x":11, "y":2}, {"x":0, "y":3}, {"label":"Ctrl", "x":1, "y":3}, {"label":"Alt", "x":2, "y":3}, {"label":"Super", "x":3, "y":3}, {"label":"⇓", "x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"label":"⇑", "x":7, "y":3}, {"label":"←", "x":8, "y":3}, {"label":"↓", "x":9, "y":3}, {"label":"↑", "x":10, "y":3}, {"label":"→", "x":11, "y":3}] + }, + "LAYOUT_ortho_4x12_1x2uC": { + "layout": [{"label":"Tab", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"Back Space", "x":11, "y":0}, {"label":"Esc", "x":0, "y":1}, {"label":"A", "x":1, "y":1}, {"label":"S", "x":2, "y":1}, {"label":"D", "x":3, "y":1}, {"label":"F", "x":4, "y":1}, {"label":"G", "x":5, "y":1}, {"label":"H", "x":6, "y":1}, {"label":"J", "x":7, "y":1}, {"label":"K", "x":8, "y":1}, {"label":"L", "x":9, "y":1}, {"label":";", "x":10, "y":1}, {"label":"'", "x":11, "y":1}, {"label":"Shift", "x":0, "y":2}, {"label":"Z", "x":1, "y":2}, {"label":"X", "x":2, "y":2}, {"label":"C", "x":3, "y":2}, {"label":"V", "x":4, "y":2}, {"label":"B", "x":5, "y":2}, {"label":"N", "x":6, "y":2}, {"label":"M", "x":7, "y":2}, {"label":",", "x":8, "y":2}, {"label":".", "x":9, "y":2}, {"label":"/", "x":10, "y":2}, {"label":"Return", "x":11, "y":2}, {"x":0, "y":3}, {"label":"Ctrl", "x":1, "y":3}, {"label":"Alt", "x":2, "y":3}, {"label":"Super", "x":3, "y":3}, {"label":"⇓", "x":4, "y":3}, {"x":5, "y":3, "w":2}, {"label":"⇑", "x":7, "y":3}, {"label":"←", "x":8, "y":3}, {"label":"↓", "x":9, "y":3}, {"label":"↑", "x":10, "y":3}, {"label":"→", "x":11, "y":3}] + }, + "LAYOUT_ortho_4x12_2x2u": { + "layout": [{"label":"Tab", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"Back Space", "x":11, "y":0}, {"label":"Esc", "x":0, "y":1}, {"label":"A", "x":1, "y":1}, {"label":"S", "x":2, "y":1}, {"label":"D", "x":3, "y":1}, {"label":"F", "x":4, "y":1}, {"label":"G", "x":5, "y":1}, {"label":"H", "x":6, "y":1}, {"label":"J", "x":7, "y":1}, {"label":"K", "x":8, "y":1}, {"label":"L", "x":9, "y":1}, {"label":";", "x":10, "y":1}, {"label":"'", "x":11, "y":1}, {"label":"Shift", "x":0, "y":2}, {"label":"Z", "x":1, "y":2}, {"label":"X", "x":2, "y":2}, {"label":"C", "x":3, "y":2}, {"label":"V", "x":4, "y":2}, {"label":"B", "x":5, "y":2}, {"label":"N", "x":6, "y":2}, {"label":"M", "x":7, "y":2}, {"label":",", "x":8, "y":2}, {"label":".", "x":9, "y":2}, {"label":"/", "x":10, "y":2}, {"label":"Return", "x":11, "y":2}, {"x":0, "y":3}, {"label":"Ctrl", "x":1, "y":3}, {"label":"Alt", "x":2, "y":3}, {"label":"Super", "x":3, "y":3}, {"x":4, "y":3, "w":2}, {"x":6, "y":3, "w":2}, {"label":"←", "x":8, "y":3}, {"label":"↓", "x":9, "y":3}, {"label":"↑", "x":10, "y":3}, {"label":"→", "x":11, "y":3}] + } + } +} diff --git a/keyboards/checkerboards/quark_lp/keymaps/2x2u/config.h b/keyboards/checkerboards/quark_lp/keymaps/2x2u/config.h new file mode 100644 index 000000000000..b1498826ee3e --- /dev/null +++ b/keyboards/checkerboards/quark_lp/keymaps/2x2u/config.h @@ -0,0 +1,19 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define TAPPING_TOGGLE 2 diff --git a/keyboards/checkerboards/quark_lp/keymaps/2x2u/keymap.c b/keyboards/checkerboards/quark_lp/keymaps/2x2u/keymap.c new file mode 100644 index 000000000000..8c09b3a58e4e --- /dev/null +++ b/keyboards/checkerboards/quark_lp/keymaps/2x2u/keymap.c @@ -0,0 +1,80 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Defines for task manager and such +#define CALTDEL LCTL(LALT(KC_DEL)) +#define TSKMGR LCTL(LSFT(KC_ESC)) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* [0] + * ,-----------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del | + * |------------+------+------+------+------+-------------+------+------+------+------+------| + * | CTL & ESC | A | S | D | F | G | H | J | K | L | ; | " | + * |------------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift | Z | X | C | V | B | N | M | , | . | / |Enter | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+------| + * | PRINT | OS | Alt | Layer | Space & Layer | [ | ] | CAPS | + * `-----------------------------------------------------------------------------------------' + */ + [0] = LAYOUT_ortho_4x12_2x2u( + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, + CTL_T(KC_ESC), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_CAPS, KC_GRV, KC_LGUI, KC_LALT, TT(1), LT(2, KC_SPC), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + + /* [1] + * ,---------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+----| + * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | BCKSPC | + * |------------+------+------+------+------+-------------+------+------+------+------+----| + * | \ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | / | + * |------------+------+------+------+------+------|------+------+------+------+------+----| + * | | | | | | | | + | = | | | | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+----| + * | ESC | CTRL-ALT-DEL | TASK | | | '|' | ` | | + * `---------------------------------------------------------------------------------------' + */ + [1] = LAYOUT_ortho_4x12_2x2u( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_SLSH, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, + _______, _______, _______, _______, _______, _______, _______, KC_PPLS, KC_EQL, _______, _______, _______, + KC_ESC, CALTDEL, TSKMGR, _______, _______, _______, _______, KC_NUBS, KC_GRV, _______ + ), + + /* [2] + * ,---------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+---| + * | | | | UP | | | | _ | | [ | ] | | + * |------------+------+------+------+------+-------------+------+------+------+------+---| + * | | | LEFT | DOWN | RIGHT | | | - | | [ | ] | | + * |------------+------+------+------+------+-----+-----+------+------+------+------+-----| + * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+---| + * | RESET | | | | | | | | + * `---------------------------------------------------------------------------------------' + */ + [2] = LAYOUT_ortho_4x12_2x2u( + _______, _______, _______, KC_UP, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, _______, + _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, _______, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/checkerboards/quark_lp/keymaps/default/config.h b/keyboards/checkerboards/quark_lp/keymaps/default/config.h new file mode 100644 index 000000000000..b1498826ee3e --- /dev/null +++ b/keyboards/checkerboards/quark_lp/keymaps/default/config.h @@ -0,0 +1,19 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define TAPPING_TOGGLE 2 diff --git a/keyboards/checkerboards/quark_lp/keymaps/default/keymap.c b/keyboards/checkerboards/quark_lp/keymaps/default/keymap.c new file mode 100644 index 000000000000..22e589d8a653 --- /dev/null +++ b/keyboards/checkerboards/quark_lp/keymaps/default/keymap.c @@ -0,0 +1,80 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Defines for task manager and such +#define CALTDEL LCTL(LALT(KC_DEL)) +#define TSKMGR LCTL(LSFT(KC_ESC)) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* [0] + * ,-----------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del | + * |------------+------+------+------+------+-------------+------+------+------+------+------| + * | CTL & ESC | A | S | D | F | G | H | J | K | L | ; | " | + * |------------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift | Z | X | C | V | B | N | M | , | . | / |Enter | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+------| + * | PRINT | OS | Alt | Layer | Space & Layer | [ | ] | CAPS | + * `-----------------------------------------------------------------------------------------' + */ + [0] = LAYOUT_ortho_4x12( + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, + CTL_T(KC_ESC), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_PSCR, KC_LCTL, KC_LALT, KC_LGUI, TT(1), KC_SPC, KC_SPC, TT(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + + /* [1] + * ,---------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+----| + * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | BCKSPC | + * |------------+------+------+------+------+-------------+------+------+------+------+----| + * | \ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | / | + * |------------+------+------+------+------+------|------+------+------+------+------+----| + * | | | | | | | | + | = | | | | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+----| + * | ESC | CTRL-ALT-DEL | TASK | | | '|' | ` | | + * `---------------------------------------------------------------------------------------' + */ + [1] = LAYOUT_ortho_4x12( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_SLSH, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, + _______, _______, _______, _______, _______, _______, _______, KC_PPLS, KC_EQL, _______, _______, _______, + _______, KC_ESC, CALTDEL, TSKMGR, _______, _______, _______, _______, _______, KC_NUBS, KC_GRV, _______ + ), + + /* [2] + * ,---------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+---| + * | | | | UP | | | | _ | | [ | ] | | + * |------------+------+------+------+------+-------------+------+------+------+------+---| + * | | | LEFT | DOWN | RIGHT | | | - | | [ | ] | | + * |------------+------+------+------+------+-----+-----+------+------+------+------+-----| + * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+---| + * | RESET | | | | | | | | + * `---------------------------------------------------------------------------------------' + */ + [2] = LAYOUT_ortho_4x12( + _______, _______, _______, KC_UP, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, _______, + _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, _______, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/checkerboards/quark_lp/keymaps/mit/config.h b/keyboards/checkerboards/quark_lp/keymaps/mit/config.h new file mode 100644 index 000000000000..b1498826ee3e --- /dev/null +++ b/keyboards/checkerboards/quark_lp/keymaps/mit/config.h @@ -0,0 +1,19 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define TAPPING_TOGGLE 2 diff --git a/keyboards/checkerboards/quark_lp/keymaps/mit/keymap.c b/keyboards/checkerboards/quark_lp/keymaps/mit/keymap.c new file mode 100644 index 000000000000..f747f4f26b39 --- /dev/null +++ b/keyboards/checkerboards/quark_lp/keymaps/mit/keymap.c @@ -0,0 +1,80 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Defines for task manager and such +#define CALTDEL LCTL(LALT(KC_DEL)) +#define TSKMGR LCTL(LSFT(KC_ESC)) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* [0] + * ,-----------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del | + * |------------+------+------+------+------+-------------+------+------+------+------+------| + * | CTL & ESC | A | S | D | F | G | H | J | K | L | ; | " | + * |------------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift | Z | X | C | V | B | N | M | , | . | / |Enter | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+------| + * | PRINT | OS | Alt | Layer | Space & Layer | [ | ] | CAPS | + * `-----------------------------------------------------------------------------------------' + */ + [0] = LAYOUT_ortho_4x12_1x2uC( + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, + CTL_T(KC_ESC), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_PSCR, KC_LCTL, KC_LALT, KC_LGUI, TT(1), KC_SPC, TT(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + + /* [1] + * ,---------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+----| + * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | BCKSPC | + * |------------+------+------+------+------+-------------+------+------+------+------+----| + * | \ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | / | + * |------------+------+------+------+------+------|------+------+------+------+------+----| + * | | | | | | | | + | = | | | | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+----| + * | ESC | CTRL-ALT-DEL | TASK | | | '|' | ` | | + * `---------------------------------------------------------------------------------------' + */ + [1] = LAYOUT_ortho_4x12_1x2uC( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_SLSH, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, + _______, _______, _______, _______, _______, _______, _______, KC_PPLS, KC_EQL, _______, _______, _______, + _______, KC_ESC, CALTDEL, TSKMGR, _______, _______, _______, _______, KC_NUBS, KC_GRV, _______ + ), + + /* [2] + * ,---------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+---| + * | | | | UP | | | | _ | | [ | ] | | + * |------------+------+------+------+------+-------------+------+------+------+------+---| + * | | | LEFT | DOWN | RIGHT | | | - | | [ | ] | | + * |------------+------+------+------+------+-----+-----+------+------+------+------+-----| + * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+---| + * | RESET | | | | | | | | + * `---------------------------------------------------------------------------------------' + */ + [2] = LAYOUT_ortho_4x12_1x2uC( + _______, _______, _______, KC_UP, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, _______, + _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, _______, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/checkerboards/quark_lp/keymaps/via/config.h b/keyboards/checkerboards/quark_lp/keymaps/via/config.h new file mode 100644 index 000000000000..b1498826ee3e --- /dev/null +++ b/keyboards/checkerboards/quark_lp/keymaps/via/config.h @@ -0,0 +1,19 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define TAPPING_TOGGLE 2 diff --git a/keyboards/checkerboards/quark_lp/keymaps/via/keymap.c b/keyboards/checkerboards/quark_lp/keymaps/via/keymap.c new file mode 100644 index 000000000000..d7e281730aba --- /dev/null +++ b/keyboards/checkerboards/quark_lp/keymaps/via/keymap.c @@ -0,0 +1,99 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Defines for task manager and such +#define CALTDEL LCTL(LALT(KC_DEL)) +#define TSKMGR LCTL(LSFT(KC_ESC)) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* [0] + * ,-----------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del | + * |------------+------+------+------+------+-------------+------+------+------+------+------| + * | CTL & ESC | A | S | D | F | G | H | J | K | L | ; | " | + * |------------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift | Z | X | C | V | B | N | M | , | . | / |Enter | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+------| + * | PRINT | OS | Alt | Layer | Space & Layer | [ | ] | CAPS | + * `-----------------------------------------------------------------------------------------' + */ + [0] = LAYOUT_ortho_4x12( + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, + CTL_T(KC_ESC), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_PSCR, KC_LCTL, KC_LALT, KC_LGUI, TT(1), KC_SPC, KC_SPC, TT(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + + /* [1] + * ,---------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+----| + * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | BCKSPC | + * |------------+------+------+------+------+-------------+------+------+------+------+----| + * | \ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | / | + * |------------+------+------+------+------+------|------+------+------+------+------+----| + * | | | | | | | | + | = | | | | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+----| + * | ESC | CTRL-ALT-DEL | TASK | | | '|' | ` | | + * `---------------------------------------------------------------------------------------' + */ + [1] = LAYOUT_ortho_4x12( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_SLSH, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, + _______, _______, _______, _______, _______, _______, _______, KC_PPLS, KC_EQL, _______, _______, _______, + _______, KC_ESC, CALTDEL, TSKMGR, _______, _______, _______, _______, _______, KC_NUBS, KC_GRV, _______ + ), + + /* [2] + * ,---------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+---| + * | | | | UP | | | | _ | | [ | ] | | + * |------------+------+------+------+------+-------------+------+------+------+------+---| + * | | | LEFT | DOWN | RIGHT | | | - | | [ | ] | | + * |------------+------+------+------+------+-----+-----+------+------+------+------+-----| + * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+---| + * | RESET | | | | | | | | + * `---------------------------------------------------------------------------------------' + */ + [2] = LAYOUT_ortho_4x12( + _______, _______, _______, KC_UP, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, _______, + _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, _______, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + /* [3] + * ,---------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+---| + * | | | | UP | | | | _ | | [ | ] | | + * |------------+------+------+------+------+-------------+------+------+------+------+---| + * | | | LEFT | DOWN | RIGHT | | | - | | [ | ] | | + * |------------+------+------+------+------+-----+-----+------+------+------+------+-----| + * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+---| + * | RESET | | | | | | | | + * `---------------------------------------------------------------------------------------' + */ +[3] = LAYOUT_ortho_4x12( + _______, _______, _______, KC_UP, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, _______, + _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, _______, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) + }; diff --git a/keyboards/checkerboards/quark_lp/keymaps/via/rules.mk b/keyboards/checkerboards/quark_lp/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/checkerboards/quark_lp/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/checkerboards/quark_lp/quark_lp.c b/keyboards/checkerboards/quark_lp/quark_lp.c new file mode 100644 index 000000000000..bc9a192bf50c --- /dev/null +++ b/keyboards/checkerboards/quark_lp/quark_lp.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "quark_lp.h" diff --git a/keyboards/checkerboards/quark_lp/quark_lp.h b/keyboards/checkerboards/quark_lp/quark_lp.h new file mode 100644 index 000000000000..a7bb3fda8bd2 --- /dev/null +++ b/keyboards/checkerboards/quark_lp/quark_lp.h @@ -0,0 +1,58 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + + +#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 } \ +} + +#define LAYOUT_ortho_4x12_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, XXX, k37, k38, k39, k3A, k3B } \ +} + +#define LAYOUT_ortho_4x12_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, 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, k1A, k1B }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B }, \ + { k30, k31, k32, k33, k34, XXX, k36, XXX, k38, k39, k3A, k3B } \ +} diff --git a/keyboards/checkerboards/quark_lp/readme.md b/keyboards/checkerboards/quark_lp/readme.md new file mode 100644 index 000000000000..427f1081cf9f --- /dev/null +++ b/keyboards/checkerboards/quark_lp/readme.md @@ -0,0 +1,18 @@ +# Quark_LP + +![Quark_LP](https://i.imgur.com/EgdbzxE.png) + +The Quark LP PCB is compatible with Cherry Low-Profile switches and Kailh Choc switches, and is drop-in compatible with the OLKB Planck board. + +* Keyboard Maintainer: [Nasp](https://github.com/npspears) +* Hardware Supported: Planck +* Hardware Availability: www.checkerboards.xyz + +Make example for this keyboard (after setting up your build environment): + + make checkerboards/quark_lp:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader +Enter the bootloader by pressing the reset pin on the back of the PCB. You can do this through the back of the case through the small hole near the USB connector. diff --git a/keyboards/checkerboards/quark_lp/rules.mk b/keyboards/checkerboards/quark_lp/rules.mk new file mode 100644 index 000000000000..92dd86afda42 --- /dev/null +++ b/keyboards/checkerboards/quark_lp/rules.mk @@ -0,0 +1,19 @@ +# MCU name +MCU = atmega32u2 + +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/checkerboards/quark_squared/config.h b/keyboards/checkerboards/quark_squared/config.h new file mode 100644 index 000000000000..89e7eb072553 --- /dev/null +++ b/keyboards/checkerboards/quark_squared/config.h @@ -0,0 +1,55 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7070 +#define PRODUCT_ID 0x5342 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Nasp +#define PRODUCT QUARK² + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { C5, C4, C6, C7 } +#define MATRIX_COL_PINS { B4, B5, B6, B3, C2, B2, D6, D2, D3, D4, D5, B1 } +#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 + +// ws2812 options +#define RGB_DI_PIN D0 // pin the DI on the ws2812 is hooked-up to +#define RGBLIGHT_ANIMATIONS // run RGB animations +#define RGBLED_NUM 14 // number of LEDs +#define RGBLIGHT_HUE_STEP 12 // units to step when in/decreasing hue +#define RGBLIGHT_SAT_STEP 12 // units to step when in/decresing saturation +#define RGBLIGHT_VAL_STEP 12 // units to step when in/decreasing value (brightness) diff --git a/keyboards/checkerboards/quark_squared/info.json b/keyboards/checkerboards/quark_squared/info.json new file mode 100644 index 000000000000..76f68353b597 --- /dev/null +++ b/keyboards/checkerboards/quark_squared/info.json @@ -0,0 +1,13 @@ +{ + "keyboard_name": "Quark_Squared", + "url": "", + "maintainer": "nasp", + "layouts": { + "LAYOUT_ortho_2x225u": { + "layout": [{"label":"Tab", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"Back Space", "x":11, "y":0}, {"label":"Esc", "x":0, "y":1}, {"label":"A", "x":1, "y":1}, {"label":"S", "x":2, "y":1}, {"label":"D", "x":3, "y":1}, {"label":"F", "x":4, "y":1}, {"label":"G", "x":5, "y":1}, {"label":"H", "x":6, "y":1}, {"label":"J", "x":7, "y":1}, {"label":"K", "x":8, "y":1}, {"label":"L", "x":9, "y":1}, {"label":";", "x":10, "y":1}, {"label":"'", "x":11, "y":1}, {"label":"Shift", "x":0, "y":2}, {"label":"Z", "x":1, "y":2}, {"label":"X", "x":2, "y":2}, {"label":"C", "x":3, "y":2}, {"label":"V", "x":4, "y":2}, {"label":"B", "x":5, "y":2}, {"label":"N", "x":6, "y":2}, {"label":"M", "x":7, "y":2}, {"label":",", "x":8, "y":2}, {"label":".", "x":9, "y":2}, {"label":"/", "x":10, "y":2}, {"label":"Return", "x":11, "y":2}, {"label":"Ctrl", "x":0, "y":3, "w":1.25}, {"label":"Super", "x":1.25, "y":3, "w":1.25}, {"label":"Alt", "x":2.5, "y":3, "w":1.25}, {"x":3.75, "y":3, "w":2.25}, {"x":6, "y":3, "w":2.25}, {"label":"Alt", "x":8.25, "y":3, "w":1.25}, {"label":"Super", "x":9.5, "y":3, "w":1.25}, {"label":"Ctrl", "x":10.75, "y":3, "w":1.25}] + }, + "LAYOUT_ortho_2u": { + "layout": [{"label":"Tab", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"Back Space", "x":11, "y":0}, {"label":"Esc", "x":0, "y":1}, {"label":"A", "x":1, "y":1}, {"label":"S", "x":2, "y":1}, {"label":"D", "x":3, "y":1}, {"label":"F", "x":4, "y":1}, {"label":"G", "x":5, "y":1}, {"label":"H", "x":6, "y":1}, {"label":"J", "x":7, "y":1}, {"label":"K", "x":8, "y":1}, {"label":"L", "x":9, "y":1}, {"label":";", "x":10, "y":1}, {"label":"'", "x":11, "y":1}, {"label":"Shift", "x":0, "y":2}, {"label":"Z", "x":1, "y":2}, {"label":"X", "x":2, "y":2}, {"label":"C", "x":3, "y":2}, {"label":"V", "x":4, "y":2}, {"label":"B", "x":5, "y":2}, {"label":"N", "x":6, "y":2}, {"label":"M", "x":7, "y":2}, {"label":",", "x":8, "y":2}, {"label":".", "x":9, "y":2}, {"label":"/", "x":10, "y":2}, {"label":"Return", "x":11, "y":2}, {"label":"Ctrl", "x":0, "y":3, "w":1.25}, {"label":"Alt", "x":1.25, "y":3, "w":1.25}, {"label":"Super", "x":2.5, "y":3, "w":1.25}, {"label":"⇓", "x":3.75, "y":3, "w":1.25}, {"x":5, "y":3, "w":2}, {"label":"←", "x":7, "y":3, "w":1.25}, {"label":"↓", "x":8.25, "y":3, "w":1.25}, {"label":"↑", "x":9.5, "y":3, "w":1.25}, {"label":"→", "x":10.75, "y":3, "w":1.25}] + } + } +} diff --git a/keyboards/checkerboards/quark_squared/keymaps/2u/config.h b/keyboards/checkerboards/quark_squared/keymaps/2u/config.h new file mode 100644 index 000000000000..b1498826ee3e --- /dev/null +++ b/keyboards/checkerboards/quark_squared/keymaps/2u/config.h @@ -0,0 +1,19 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define TAPPING_TOGGLE 2 diff --git a/keyboards/checkerboards/quark_squared/keymaps/2u/keymap.c b/keyboards/checkerboards/quark_squared/keymaps/2u/keymap.c new file mode 100644 index 000000000000..0892729cf3a1 --- /dev/null +++ b/keyboards/checkerboards/quark_squared/keymaps/2u/keymap.c @@ -0,0 +1,80 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Defines for task manager and such +#define CALTDEL LCTL(LALT(KC_DEL)) +#define TSKMGR LCTL(LSFT(KC_ESC)) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* [0] + * ,-----------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del | + * |------------+------+------+------+------+-------------+------+------+------+------+------| + * | CTL & ESC | A | S | D | F | G | H | J | K | L | ; | " | + * |------------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift | Z | X | C | V | B | N | M | , | . | / |Enter | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+------| + * | PRINT | OS | Alt | Layer | Space & Layer | [ | ] | CAPS | + * `-----------------------------------------------------------------------------------------' + */ + [0] = LAYOUT_ortho_2u( + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, + CTL_T(KC_ESC), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_GRV, KC_LGUI, KC_LALT, TT(1), KC_SPC, TT(2), CALTDEL, KC_RALT, KC_CAPS + ), + + /* [1] + * ,---------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+----| + * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | BCKSPC | + * |------------+------+------+------+------+-------------+------+------+------+------+----| + * | \ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | / | + * |------------+------+------+------+------+------|------+------+------+------+------+----| + * | | | | | | | | + | = | | | | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+----| + * | ESC | CTRL-ALT-DEL | TASK | | | '|' | ` | | + * `---------------------------------------------------------------------------------------' + */ + [1] = LAYOUT_ortho_2u( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_SLSH, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, + _______, _______, _______, _______, _______, _______, _______, KC_PPLS, KC_EQL, _______, _______, _______, + KC_ESC, CALTDEL, TSKMGR, _______, _______, _______, KC_NUBS, KC_GRV, _______ + ), + + /* [2] + * ,---------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+---| + * | | | | UP | | | | _ | | [ | ] | | + * |------------+------+------+------+------+-------------+------+------+------+------+---| + * | | | LEFT | DOWN | RIGHT | | | - | | [ | ] | | + * |------------+------+------+------+------+-----+-----+------+------+------+------+-----| + * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+---| + * | RESET | | | | | | | | + * `---------------------------------------------------------------------------------------' + */ + [2] = LAYOUT_ortho_2u( + _______, _______, _______, KC_UP, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, _______, + _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, _______, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + RESET, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/checkerboards/quark_squared/keymaps/default/config.h b/keyboards/checkerboards/quark_squared/keymaps/default/config.h new file mode 100644 index 000000000000..b1498826ee3e --- /dev/null +++ b/keyboards/checkerboards/quark_squared/keymaps/default/config.h @@ -0,0 +1,19 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define TAPPING_TOGGLE 2 diff --git a/keyboards/checkerboards/quark_squared/keymaps/default/keymap.c b/keyboards/checkerboards/quark_squared/keymaps/default/keymap.c new file mode 100644 index 000000000000..56aa2ea6b20c --- /dev/null +++ b/keyboards/checkerboards/quark_squared/keymaps/default/keymap.c @@ -0,0 +1,80 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Defines for task manager and such +#define CALTDEL LCTL(LALT(KC_DEL)) +#define TSKMGR LCTL(LSFT(KC_ESC)) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* [0] + * ,-----------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del | + * |------------+------+------+------+------+-------------+------+------+------+------+------| + * | CTL & ESC | A | S | D | F | G | H | J | K | L | ; | " | + * |------------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift | Z | X | C | V | B | N | M | , | . | / |Enter | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+------| + * | PRINT | OS | Alt | Layer | Space & Layer | [ | ] | CAPS | + * `-----------------------------------------------------------------------------------------' + */ + [0] = LAYOUT_ortho_2x225u( + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, + CTL_T(KC_ESC), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_GRV, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, CALTDEL, KC_RALT, KC_CAPS + ), + + /* [1] + * ,---------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+----| + * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | BCKSPC | + * |------------+------+------+------+------+-------------+------+------+------+------+----| + * | \ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | / | + * |------------+------+------+------+------+------|------+------+------+------+------+----| + * | | | | | | | | + | = | | | | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+----| + * | ESC | CTRL-ALT-DEL | TASK | | | '|' | ` | | + * `---------------------------------------------------------------------------------------' + */ + [1] = LAYOUT_ortho_2x225u( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_SLSH, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, + _______, _______, _______, _______, _______, _______, _______, KC_PPLS, KC_EQL, _______, _______, _______, + KC_ESC, CALTDEL, TSKMGR, _______, _______, KC_NUBS, KC_GRV, _______ + ), + + /* [2] + * ,---------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+---| + * | | | | UP | | | | _ | | [ | ] | | + * |------------+------+------+------+------+-------------+------+------+------+------+---| + * | | | LEFT | DOWN | RIGHT | | | - | | [ | ] | | + * |------------+------+------+------+------+-----+-----+------+------+------+------+-----| + * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+---| + * | RESET | | | | | | | | + * `---------------------------------------------------------------------------------------' + */ + [2] = LAYOUT_ortho_2x225u( + _______, _______, _______, KC_UP, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, _______, + _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, _______, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + RESET, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/checkerboards/quark_squared/keymaps/via/config.h b/keyboards/checkerboards/quark_squared/keymaps/via/config.h new file mode 100644 index 000000000000..b1498826ee3e --- /dev/null +++ b/keyboards/checkerboards/quark_squared/keymaps/via/config.h @@ -0,0 +1,19 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define TAPPING_TOGGLE 2 diff --git a/keyboards/checkerboards/quark_squared/keymaps/via/keymap.c b/keyboards/checkerboards/quark_squared/keymaps/via/keymap.c new file mode 100644 index 000000000000..928965f97381 --- /dev/null +++ b/keyboards/checkerboards/quark_squared/keymaps/via/keymap.c @@ -0,0 +1,102 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Defines for task manager and such +#define CALTDEL LCTL(LALT(KC_DEL)) +#define TSKMGR LCTL(LSFT(KC_ESC)) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* [0] + * ,-----------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del | + * |------------+------+------+------+------+-------------+------+------+------+------+------| + * | CTL & ESC | A | S | D | F | G | H | J | K | L | ; | " | + * |------------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift | Z | X | C | V | B | N | M | , | . | / |Enter | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+------| + * | PRINT | OS | Alt | Layer | Space & Layer | [ | ] | CAPS | + * `-----------------------------------------------------------------------------------------' + */ + [0] = LAYOUT_ortho_2x225u( + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, + CTL_T(KC_ESC), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_GRV, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, CALTDEL, KC_RALT, KC_CAPS + ), + + /* [1] + * ,---------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+----| + * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | BCKSPC | + * |------------+------+------+------+------+-------------+------+------+------+------+----| + * | \ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | / | + * |------------+------+------+------+------+------|------+------+------+------+------+----| + * | | | | | | | | + | = | | | | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+----| + * | ESC | CTRL-ALT-DEL | TASK | | | '|' | ` | | + * `---------------------------------------------------------------------------------------' + */ + + [1] = LAYOUT_ortho_2x225u( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_SLSH, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, + _______, _______, _______, _______, _______, _______, _______, KC_PPLS, KC_EQL, _______, _______, _______, + KC_ESC, CALTDEL, TSKMGR, _______, _______, KC_NUBS, KC_GRV, _______ + ), + + /* [2] + * ,---------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+---| + * | | | | UP | | | | _ | | [ | ] | | + * |------------+------+------+------+------+-------------+------+------+------+------+---| + * | | | LEFT | DOWN | RIGHT | | | - | | [ | ] | | + * |------------+------+------+------+------+-----+-----+------+------+------+------+-----| + * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+---| + * | RESET | | | | | | | | + * `---------------------------------------------------------------------------------------' + */ + + [2] = LAYOUT_ortho_2x225u( + _______, _______, _______, KC_UP, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, _______, + _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, _______, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + RESET, _______, _______, _______, _______, _______, _______, _______ + ), + + /* [3] + * ,---------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+---| + * | | | | UP | | | | _ | | [ | ] | | + * |------------+------+------+------+------+-------------+------+------+------+------+---| + * | | | LEFT | DOWN | RIGHT | | | - | | [ | ] | | + * |------------+------+------+------+------+-----+-----+------+------+------+------+-----| + * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+---| + * | RESET | | | | | | | | + * `---------------------------------------------------------------------------------------' + */ + + [3] = LAYOUT_ortho_2x225u( + _______, _______, _______, KC_UP, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, _______, + _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, _______, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + RESET, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/checkerboards/quark_squared/keymaps/via/rules.mk b/keyboards/checkerboards/quark_squared/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/checkerboards/quark_squared/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/checkerboards/quark_squared/quark_squared.c b/keyboards/checkerboards/quark_squared/quark_squared.c new file mode 100644 index 000000000000..fbd7346cc0d5 --- /dev/null +++ b/keyboards/checkerboards/quark_squared/quark_squared.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "quark_squared.h" diff --git a/keyboards/checkerboards/quark_squared/quark_squared.h b/keyboards/checkerboards/quark_squared/quark_squared.h new file mode 100644 index 000000000000..d3d88422124f --- /dev/null +++ b/keyboards/checkerboards/quark_squared/quark_squared.h @@ -0,0 +1,46 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + + +#define LAYOUT_ortho_2x225u( \ + 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, k33, k34, k36, k38, k39, 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, XXX, k33, k34, XXX, k36, XXX, k38, k39, XXX, k3B } \ +} + +#define LAYOUT_ortho_2u( \ + 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, k33, k34, k35, k36, k38, k39, 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, XXX, k33, k34, k35, k36, XXX, k38, k39, XXX, k3B } \ +} diff --git a/keyboards/checkerboards/quark_squared/readme.md b/keyboards/checkerboards/quark_squared/readme.md new file mode 100644 index 000000000000..bbbe2bfb5b3b --- /dev/null +++ b/keyboards/checkerboards/quark_squared/readme.md @@ -0,0 +1,15 @@ +# Quark_Squared + +![Quark_Squared](https://i.imgur.com/zYH25zQ.png) + +The Quark² PCB is a hotswap version of the Quark PCB. Just like the OG, it has a modified layout than a traditonal 4x12 ortholinear keyboard. + +* Keyboard Maintainer: [Nasp](https://github.com/npspears) +* Hardware Supported: Planck +* Hardware Availability: https://www.checkerboards.xyz/Quark2_p_35.html + +Make example for this keyboard (after setting up your build environment): + + make checkerboards:quark_squared: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/checkerboards/quark_squared/rules.mk b/keyboards/checkerboards/quark_squared/rules.mk new file mode 100644 index 000000000000..7d7e00b82fae --- /dev/null +++ b/keyboards/checkerboards/quark_squared/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = atmega32u2 + +# 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 = yes # Commands for debug and configuration +# 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 +UNICODE_ENABLE = yes # Unicode + +# Disable unsupported hardware +AUDIO_SUPPORTED = no +BACKLIGHT_SUPPORTED = no diff --git a/keyboards/checkerboards/ud40_ortho_alt/config.h b/keyboards/checkerboards/ud40_ortho_alt/config.h new file mode 100644 index 000000000000..0595b41acfca --- /dev/null +++ b/keyboards/checkerboards/ud40_ortho_alt/config.h @@ -0,0 +1,55 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7070 +#define PRODUCT_ID 0x7030 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Nasp +#define PRODUCT UD40_Ortho_Alt + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { E6, F0, F1, F4 } +#define MATRIX_COL_PINS { B2, B1, F7, D6, D7, B4, B5, B6, C6, C7, F5, F6 } +#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 + +// ws2812 options +#define RGB_DI_PIN D4 // pin the DI on the ws2812 is hooked-up to +#define RGBLIGHT_ANIMATIONS // run RGB animations +#define RGBLED_NUM 12 // number of LEDs +#define RGBLIGHT_HUE_STEP 12 // units to step when in/decreasing hue +#define RGBLIGHT_SAT_STEP 12 // units to step when in/decresing saturation +#define RGBLIGHT_VAL_STEP 12 // units to step when in/decreasing value (brightness) diff --git a/keyboards/checkerboards/ud40_ortho_alt/info.json b/keyboards/checkerboards/ud40_ortho_alt/info.json new file mode 100644 index 000000000000..7236497d9622 --- /dev/null +++ b/keyboards/checkerboards/ud40_ortho_alt/info.json @@ -0,0 +1,22 @@ +{ + "keyboard_name": "UD40_Ortho_Alt", + "url": "", + "maintainer": "nasp", + "layouts": { + "LAYOUT_default": { + "layout": [{"label":"Tab", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"Back Space", "x":11, "y":0}, {"label":"Esc", "x":0, "y":1}, {"label":"A", "x":1, "y":1}, {"label":"S", "x":2, "y":1}, {"label":"D", "x":3, "y":1}, {"label":"F", "x":4, "y":1}, {"label":"G", "x":5, "y":1}, {"label":"H", "x":6, "y":1}, {"label":"J", "x":7, "y":1}, {"label":"K", "x":8, "y":1}, {"label":"L", "x":9, "y":1}, {"label":";", "x":10, "y":1}, {"label":"'", "x":11, "y":1}, {"label":"Shift", "x":0, "y":2}, {"label":"Z", "x":1, "y":2}, {"label":"X", "x":2, "y":2}, {"label":"C", "x":3, "y":2}, {"label":"V", "x":4, "y":2}, {"label":"B", "x":5, "y":2}, {"label":"N", "x":6, "y":2}, {"label":"M", "x":7, "y":2}, {"label":",", "x":8, "y":2}, {"label":".", "x":9, "y":2}, {"label":"/", "x":10, "y":2}, {"label":"Return", "x":11, "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":2.25}, {"x":6, "y":3, "w":2.25}, {"x":8.25, "y":3, "w":1.25}, {"x":9.5, "y":3, "w":1.25}, {"x":10.75, "y":3, "w":1.25}] + }, + "LAYOUT_2x3u_alt": { + "layout": [{"label":"Tab", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"Back Space", "x":11, "y":0}, {"label":"Esc", "x":0, "y":1}, {"label":"A", "x":1, "y":1}, {"label":"S", "x":2, "y":1}, {"label":"D", "x":3, "y":1}, {"label":"F", "x":4, "y":1}, {"label":"G", "x":5, "y":1}, {"label":"H", "x":6, "y":1}, {"label":"J", "x":7, "y":1}, {"label":"K", "x":8, "y":1}, {"label":"L", "x":9, "y":1}, {"label":";", "x":10, "y":1}, {"label":"'", "x":11, "y":1}, {"label":"Shift", "x":0, "y":2}, {"label":"Z", "x":1, "y":2}, {"label":"X", "x":2, "y":2}, {"label":"C", "x":3, "y":2}, {"label":"V", "x":4, "y":2}, {"label":"B", "x":5, "y":2}, {"label":"N", "x":6, "y":2}, {"label":"M", "x":7, "y":2}, {"label":",", "x":8, "y":2}, {"label":".", "x":9, "y":2}, {"label":"/", "x":10, "y":2}, {"label":"Return", "x":11, "y":2}, {"x":0, "y":3, "w":1.5}, {"x":1.5, "y":3, "w":1.5}, {"x":3, "y":3, "w":3}, {"x":6, "y":3, "w":3}, {"x":9, "y":3, "w":1.5}, {"x":10.5, "y":3, "w":1.5}] + }, + "LAYOUT_600u": { + "layout": [{"label":"Tab", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"Back Space", "x":11, "y":0}, {"label":"Esc", "x":0, "y":1}, {"label":"A", "x":1, "y":1}, {"label":"S", "x":2, "y":1}, {"label":"D", "x":3, "y":1}, {"label":"F", "x":4, "y":1}, {"label":"G", "x":5, "y":1}, {"label":"H", "x":6, "y":1}, {"label":"J", "x":7, "y":1}, {"label":"K", "x":8, "y":1}, {"label":"L", "x":9, "y":1}, {"label":";", "x":10, "y":1}, {"label":"'", "x":11, "y":1}, {"label":"Shift", "x":0, "y":2}, {"label":"Z", "x":1, "y":2}, {"label":"X", "x":2, "y":2}, {"label":"C", "x":3, "y":2}, {"label":"V", "x":4, "y":2}, {"label":"B", "x":5, "y":2}, {"label":"N", "x":6, "y":2}, {"label":"M", "x":7, "y":2}, {"label":",", "x":8, "y":2}, {"label":".", "x":9, "y":2}, {"label":"/", "x":10, "y":2}, {"label":"Return", "x":11, "y":2}, {"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}] + }, + "LAYOUT_600u_alt": { + "layout": [{"label":"Tab", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"Back Space", "x":11, "y":0}, {"label":"Esc", "x":0, "y":1}, {"label":"A", "x":1, "y":1}, {"label":"S", "x":2, "y":1}, {"label":"D", "x":3, "y":1}, {"label":"F", "x":4, "y":1}, {"label":"G", "x":5, "y":1}, {"label":"H", "x":6, "y":1}, {"label":"J", "x":7, "y":1}, {"label":"K", "x":8, "y":1}, {"label":"L", "x":9, "y":1}, {"label":";", "x":10, "y":1}, {"label":"'", "x":11, "y":1}, {"label":"Shift", "x":0, "y":2}, {"label":"Z", "x":1, "y":2}, {"label":"X", "x":2, "y":2}, {"label":"C", "x":3, "y":2}, {"label":"V", "x":4, "y":2}, {"label":"B", "x":5, "y":2}, {"label":"N", "x":6, "y":2}, {"label":"M", "x":7, "y":2}, {"label":",", "x":8, "y":2}, {"label":".", "x":9, "y":2}, {"label":"/", "x":10, "y":2}, {"label":"Return", "x":11, "y":2}, {"x":0, "y":3, "w":1.5}, {"x":1.5, "y":3, "w":1.5}, {"x":3, "y":3, "w":6}, {"x":9, "y":3, "w":1.5}, {"x":10.5, "y":3, "w":1.5}] + }, + "LAYOUT_700u": { + "layout": [{"label":"Tab", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"Back Space", "x":11, "y":0}, {"label":"Esc", "x":0, "y":1}, {"label":"A", "x":1, "y":1}, {"label":"S", "x":2, "y":1}, {"label":"D", "x":3, "y":1}, {"label":"F", "x":4, "y":1}, {"label":"G", "x":5, "y":1}, {"label":"H", "x":6, "y":1}, {"label":"J", "x":7, "y":1}, {"label":"K", "x":8, "y":1}, {"label":"L", "x":9, "y":1}, {"label":";", "x":10, "y":1}, {"label":"'", "x":11, "y":1}, {"label":"Shift", "x":0, "y":2}, {"label":"Z", "x":1, "y":2}, {"label":"X", "x":2, "y":2}, {"label":"C", "x":3, "y":2}, {"label":"V", "x":4, "y":2}, {"label":"B", "x":5, "y":2}, {"label":"N", "x":6, "y":2}, {"label":"M", "x":7, "y":2}, {"label":",", "x":8, "y":2}, {"label":".", "x":9, "y":2}, {"label":"/", "x":10, "y":2}, {"label":"Return", "x":11, "y":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3, "w":1.25}, {"x":2.5, "y":3, "w":7}, {"x":9.5, "y":3, "w":1.25}, {"x":10.75, "y":3, "w":1.25}] + } + } +} diff --git a/keyboards/checkerboards/ud40_ortho_alt/keymaps/2x3u_alt/config.h b/keyboards/checkerboards/ud40_ortho_alt/keymaps/2x3u_alt/config.h new file mode 100644 index 000000000000..b1498826ee3e --- /dev/null +++ b/keyboards/checkerboards/ud40_ortho_alt/keymaps/2x3u_alt/config.h @@ -0,0 +1,19 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define TAPPING_TOGGLE 2 diff --git a/keyboards/checkerboards/ud40_ortho_alt/keymaps/2x3u_alt/keymap.c b/keyboards/checkerboards/ud40_ortho_alt/keymaps/2x3u_alt/keymap.c new file mode 100644 index 000000000000..92216ed03f2a --- /dev/null +++ b/keyboards/checkerboards/ud40_ortho_alt/keymaps/2x3u_alt/keymap.c @@ -0,0 +1,80 @@ +/* Copyright 2020 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Defines for task manager and such +#define CALTDEL LCTL(LALT(KC_DEL)) +#define TSKMGR LCTL(LSFT(KC_ESC)) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* [0] + * ,-----------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del | + * |------------+------+------+------+------+-------------+------+------+------+------+------| + * | CTL & ESC | A | S | D | F | G | H | J | K | L | ; | " | + * |------------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift | Z | X | C | V | B | N | M | , | . | / |Enter | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+------| + * | RESET | OS | Alt | Layer | Space & Layer | [ | ] | CAPS | + * `-----------------------------------------------------------------------------------------' + */ + [0] = LAYOUT_2x3u_alt( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, + CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + RESET, KC_LALT, TT(1), LT(2, KC_SPC), KC_LGUI, KC_CAPS + ), + + /* [1] + * ,---------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+----| + * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | BCKSPC | + * |------------+------+------+------+------+-------------+------+------+------+------+----| + * | \ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | / | + * |------------+------+------+------+------+------|------+------+------+------+------+----| + * | | | | | | | | + | = | | | | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+----| + * | ESC | CTRL-ALT-DEL | TASK | | | '|' | ` | | + * `---------------------------------------------------------------------------------------' + */ + [1] = LAYOUT_2x3u_alt( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_SLSH, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, + _______, _______, _______, _______, _______, _______, _______, KC_PPLS, KC_EQL, _______, _______, _______, + CALTDEL, TSKMGR, _______, _______, KC_NUBS, KC_GRV + ), + + /* [2] + * ,---------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+---| + * | | | | UP | | | | _ | | [ | ] | | + * |------------+------+------+------+------+-------------+------+------+------+------+---| + * | | | LEFT | DOWN | RIGHT | | | - | | [ | ] | | + * |------------+------+------+------+------+-----+-----+------+------+------+------+-----| + * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+---| + * | RESET | | | | | | | | + * `---------------------------------------------------------------------------------------' + */ + [2] = LAYOUT_2x3u_alt( + _______, _______, _______, KC_UP, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, _______, + _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, _______, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + RESET, RESET, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/checkerboards/ud40_ortho_alt/keymaps/600u/config.h b/keyboards/checkerboards/ud40_ortho_alt/keymaps/600u/config.h new file mode 100644 index 000000000000..b1498826ee3e --- /dev/null +++ b/keyboards/checkerboards/ud40_ortho_alt/keymaps/600u/config.h @@ -0,0 +1,19 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define TAPPING_TOGGLE 2 diff --git a/keyboards/checkerboards/ud40_ortho_alt/keymaps/600u/keymap.c b/keyboards/checkerboards/ud40_ortho_alt/keymaps/600u/keymap.c new file mode 100644 index 000000000000..74bbd2918f69 --- /dev/null +++ b/keyboards/checkerboards/ud40_ortho_alt/keymaps/600u/keymap.c @@ -0,0 +1,80 @@ +/* Copyright 2020 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Defines for task manager and such +#define CALTDEL LCTL(LALT(KC_DEL)) +#define TSKMGR LCTL(LSFT(KC_ESC)) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* [0] + * ,-----------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del | + * |------------+------+------+------+------+-------------+------+------+------+------+------| + * | CTL & ESC | A | S | D | F | G | H | J | K | L | ; | " | + * |------------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift | Z | X | C | V | B | N | M | , | . | / |Enter | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+------| + * | RESET | OS | Alt | Layer | Space & Layer | [ | ] | CAPS | + * `-----------------------------------------------------------------------------------------' + */ + [0] = LAYOUT_600u( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, + CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + RESET, RGB_TOG, KC_LALT, LT(2, KC_SPC), TT(1), KC_LGUI, KC_CAPS + ), + + /* [1] + * ,---------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+----| + * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | BCKSPC | + * |------------+------+------+------+------+-------------+------+------+------+------+----| + * | \ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | / | + * |------------+------+------+------+------+------|------+------+------+------+------+----| + * | | | | | | | | + | = | | | | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+----| + * | ESC | CTRL-ALT-DEL | TASK | | | '|' | ` | | + * `---------------------------------------------------------------------------------------' + */ + [1] = LAYOUT_600u( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_SLSH, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, + _______, _______, _______, _______, _______, _______, _______, KC_PPLS, KC_EQL, _______, _______, _______, + CALTDEL, _______, TSKMGR, _______, _______, KC_NUBS, KC_GRV + ), + + /* [2] + * ,---------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+---| + * | | | | UP | | | | _ | | [ | ] | | + * |------------+------+------+------+------+-------------+------+------+------+------+---| + * | | | LEFT | DOWN | RIGHT | | | - | | [ | ] | | + * |------------+------+------+------+------+-----+-----+------+------+------+------+-----| + * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+---| + * | RESET | | | | | | | | + * `---------------------------------------------------------------------------------------' + */ + [2] = LAYOUT_600u( + _______, _______, _______, KC_UP, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, _______, + _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, _______, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + RESET, RESET, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/checkerboards/ud40_ortho_alt/keymaps/600u_alt/config.h b/keyboards/checkerboards/ud40_ortho_alt/keymaps/600u_alt/config.h new file mode 100644 index 000000000000..b1498826ee3e --- /dev/null +++ b/keyboards/checkerboards/ud40_ortho_alt/keymaps/600u_alt/config.h @@ -0,0 +1,19 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define TAPPING_TOGGLE 2 diff --git a/keyboards/checkerboards/ud40_ortho_alt/keymaps/600u_alt/keymap.c b/keyboards/checkerboards/ud40_ortho_alt/keymaps/600u_alt/keymap.c new file mode 100644 index 000000000000..76c8b06cc42c --- /dev/null +++ b/keyboards/checkerboards/ud40_ortho_alt/keymaps/600u_alt/keymap.c @@ -0,0 +1,80 @@ +/* Copyright 2020 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Defines for task manager and such +#define CALTDEL LCTL(LALT(KC_DEL)) +#define TSKMGR LCTL(LSFT(KC_ESC)) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* [0] + * ,-----------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del | + * |------------+------+------+------+------+-------------+------+------+------+------+------| + * | CTL & ESC | A | S | D | F | G | H | J | K | L | ; | " | + * |------------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift | Z | X | C | V | B | N | M | , | . | / |Enter | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+------| + * | RESET | OS | Alt | Layer | Space & Layer | [ | ] | CAPS | + * `-----------------------------------------------------------------------------------------' + */ + [0] = LAYOUT_600u_alt( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, + CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + RESET, KC_LALT, LT(2, KC_SPC), TT(1), KC_RGUI + ), + + /* [1] + * ,---------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+----| + * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | BCKSPC | + * |------------+------+------+------+------+-------------+------+------+------+------+----| + * | \ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | / | + * |------------+------+------+------+------+------|------+------+------+------+------+----| + * | | | | | | | | + | = | | | | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+----| + * | ESC | CTRL-ALT-DEL | TASK | | | '|' | ` | | + * `---------------------------------------------------------------------------------------' + */ + [1] = LAYOUT_600u_alt( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_SLSH, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, + _______, _______, _______, _______, _______, _______, _______, KC_PPLS, KC_EQL, _______, _______, _______, + CALTDEL, TSKMGR, _______, KC_NUBS, KC_GRV + ), + + /* [2] + * ,---------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+---| + * | | | | UP | | | | _ | | [ | ] | | + * |------------+------+------+------+------+-------------+------+------+------+------+---| + * | | | LEFT | DOWN | RIGHT | | | - | | [ | ] | | + * |------------+------+------+------+------+-----+-----+------+------+------+------+-----| + * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+---| + * | RESET | | | | | | | | + * `---------------------------------------------------------------------------------------' + */ + [2] = LAYOUT_600u_alt( + _______, _______, _______, KC_UP, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, _______, + _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, _______, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + RESET, RESET, _______, _______, _______ + ) +}; diff --git a/keyboards/checkerboards/ud40_ortho_alt/keymaps/700u/config.h b/keyboards/checkerboards/ud40_ortho_alt/keymaps/700u/config.h new file mode 100644 index 000000000000..b1498826ee3e --- /dev/null +++ b/keyboards/checkerboards/ud40_ortho_alt/keymaps/700u/config.h @@ -0,0 +1,19 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define TAPPING_TOGGLE 2 diff --git a/keyboards/checkerboards/ud40_ortho_alt/keymaps/700u/keymap.c b/keyboards/checkerboards/ud40_ortho_alt/keymaps/700u/keymap.c new file mode 100644 index 000000000000..37f46f72e3bd --- /dev/null +++ b/keyboards/checkerboards/ud40_ortho_alt/keymaps/700u/keymap.c @@ -0,0 +1,80 @@ +/* Copyright 2020 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Defines for task manager and such +#define CALTDEL LCTL(LALT(KC_DEL)) +#define TSKMGR LCTL(LSFT(KC_ESC)) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* [0] + * ,-----------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del | + * |------------+------+------+------+------+-------------+------+------+------+------+------| + * | CTL & ESC | A | S | D | F | G | H | J | K | L | ; | " | + * |------------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift | Z | X | C | V | B | N | M | , | . | / |Enter | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+------| + * | RESET | OS | Alt | Layer | Space & Layer | [ | ] | CAPS | + * `-----------------------------------------------------------------------------------------' + */ + [0] = LAYOUT_700u( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, + CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + RESET, KC_LALT, LT(2, KC_SPC), TT(1), KC_RGUI + ), + + /* [1] + * ,---------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+----| + * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | BCKSPC | + * |------------+------+------+------+------+-------------+------+------+------+------+----| + * | \ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | / | + * |------------+------+------+------+------+------|------+------+------+------+------+----| + * | | | | | | | | + | = | | | | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+----| + * | ESC | CTRL-ALT-DEL | TASK | | | '|' | ` | | + * `---------------------------------------------------------------------------------------' + */ + [1] = LAYOUT_700u( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_SLSH, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, + _______, _______, _______, _______, _______, _______, _______, KC_PPLS, KC_EQL, _______, _______, _______, + CALTDEL, TSKMGR, _______, KC_NUBS, KC_GRV + ), + + /* [2] + * ,---------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+---| + * | | | | UP | | | | _ | | [ | ] | | + * |------------+------+------+------+------+-------------+------+------+------+------+---| + * | | | LEFT | DOWN | RIGHT | | | - | | [ | ] | | + * |------------+------+------+------+------+-----+-----+------+------+------+------+-----| + * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+---| + * | RESET | | | | | | | | + * `---------------------------------------------------------------------------------------' + */ + [2] = LAYOUT_700u( + _______, _______, _______, KC_UP, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, _______, + _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, _______, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + RESET, RESET, _______, _______, _______ + ) +}; diff --git a/keyboards/checkerboards/ud40_ortho_alt/keymaps/default/config.h b/keyboards/checkerboards/ud40_ortho_alt/keymaps/default/config.h new file mode 100644 index 000000000000..b1498826ee3e --- /dev/null +++ b/keyboards/checkerboards/ud40_ortho_alt/keymaps/default/config.h @@ -0,0 +1,19 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define TAPPING_TOGGLE 2 diff --git a/keyboards/checkerboards/ud40_ortho_alt/keymaps/default/keymap.c b/keyboards/checkerboards/ud40_ortho_alt/keymaps/default/keymap.c new file mode 100644 index 000000000000..88c1834d15d6 --- /dev/null +++ b/keyboards/checkerboards/ud40_ortho_alt/keymaps/default/keymap.c @@ -0,0 +1,80 @@ +/* Copyright 2020 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Defines for task manager and such +#define CALTDEL LCTL(LALT(KC_DEL)) +#define TSKMGR LCTL(LSFT(KC_ESC)) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* [0] + * ,-----------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del | + * |------------+------+------+------+------+-------------+------+------+------+------+------| + * | CTL & ESC | A | S | D | F | G | H | J | K | L | ; | " | + * |------------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift | Z | X | C | V | B | N | M | , | . | / |Enter | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+------| + * | RESET | OS | Alt | Layer | Space & Layer | [ | ] | CAPS | + * `-----------------------------------------------------------------------------------------' + */ + [0] = LAYOUT_default( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, + CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + RESET, KC_LGUI, KC_LALT, TT(1), LT(2, KC_SPC), KC_LBRC, KC_RBRC, KC_CAPS + ), + + /* [1] + * ,---------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+----| + * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | BCKSPC | + * |------------+------+------+------+------+-------------+------+------+------+------+----| + * | \ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | / | + * |------------+------+------+------+------+------|------+------+------+------+------+----| + * | | | | | | | | + | = | | | | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+----| + * | ESC | CTRL-ALT-DEL | TASK | | | '|' | ` | | + * `---------------------------------------------------------------------------------------' + */ + [1] = LAYOUT_default( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_SLSH, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, + _______, _______, _______, _______, _______, _______, _______, KC_PPLS, KC_EQL, _______, _______, _______, + KC_ESC, CALTDEL, TSKMGR, _______, _______, KC_NUBS, KC_GRV, _______ + ), + + /* [2] + * ,---------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+---| + * | | | | UP | | | | _ | | [ | ] | | + * |------------+------+------+------+------+-------------+------+------+------+------+---| + * | | | LEFT | DOWN | RIGHT | | | - | | [ | ] | | + * |------------+------+------+------+------+-----+-----+------+------+------+------+-----| + * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+---| + * | RESET | | | | | | | | + * `---------------------------------------------------------------------------------------' + */ + [2] = LAYOUT_default( + _______, _______, _______, KC_UP, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, _______, + _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, _______, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + RESET, RESET, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/checkerboards/ud40_ortho_alt/keymaps/default/readme.md b/keyboards/checkerboards/ud40_ortho_alt/keymaps/default/readme.md new file mode 100644 index 000000000000..126d92ab548c --- /dev/null +++ b/keyboards/checkerboards/ud40_ortho_alt/keymaps/default/readme.md @@ -0,0 +1,4 @@ +# The Default UD40 Ortho Alt Layout +# 1.25 - 1.25 - 1.25 - 2.25 - 2.25 - 1.25 - 1.25 - 1.25 +# or +# 1 - 1 - 1 - 3 - 3 - 1 - 1 - 1 diff --git a/keyboards/checkerboards/ud40_ortho_alt/keymaps/npspears/config.h b/keyboards/checkerboards/ud40_ortho_alt/keymaps/npspears/config.h new file mode 100644 index 000000000000..b1498826ee3e --- /dev/null +++ b/keyboards/checkerboards/ud40_ortho_alt/keymaps/npspears/config.h @@ -0,0 +1,19 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define TAPPING_TOGGLE 2 diff --git a/keyboards/checkerboards/ud40_ortho_alt/keymaps/npspears/keymap.c b/keyboards/checkerboards/ud40_ortho_alt/keymaps/npspears/keymap.c new file mode 100644 index 000000000000..59579383a502 --- /dev/null +++ b/keyboards/checkerboards/ud40_ortho_alt/keymaps/npspears/keymap.c @@ -0,0 +1,80 @@ +/* Copyright 2020 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Defines for task manager and such +#define CALTDEL LCTL(LALT(KC_DEL)) +#define TSKMGR LCTL(LSFT(KC_ESC)) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* [0] + * ,-----------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del | + * |------------+------+------+------+------+-------------+------+------+------+------+------| + * | CTL & ESC | A | S | D | F | G | H | J | K | L | ; | " | + * |------------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift | Z | X | C | V | B | N | M | , | . | / |Enter | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+------| + * | RESET | OS | Alt | Layer | Space & Layer | [ | ] | CAPS | + * `-----------------------------------------------------------------------------------------' + */ + [0] = LAYOUT_default( + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, + CTL_T(KC_ESC), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + RESET, KC_LGUI, KC_LALT, TT(1), LT(2, KC_SPC), KC_LBRC, KC_RBRC, KC_CAPS + ), + + /* [1] + * ,---------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+----| + * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | BCKSPC | + * |------------+------+------+------+------+-------------+------+------+------+------+----| + * | \ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | / | + * |------------+------+------+------+------+------|------+------+------+------+------+----| + * | | | | | | | | + | = | | | | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+----| + * | ESC | CTRL-ALT-DEL | TASK | | | '|' | ` | | + * `---------------------------------------------------------------------------------------' + */ + [1] = LAYOUT_default( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_SLSH, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, + _______, _______, _______, _______, _______, _______, _______, KC_PPLS, KC_EQL, _______, _______, _______, + KC_ESC, CALTDEL, TSKMGR, _______, _______, KC_NUBS, KC_GRV, _______ + ), + + /* [2] + * ,---------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+---| + * | | | | UP | | | | _ | | [ | ] | | + * |------------+------+------+------+------+-------------+------+------+------+------+---| + * | | | LEFT | DOWN | RIGHT | | | - | | [ | ] | | + * |------------+------+------+------+------+-----+-----+------+------+------+------+-----| + * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+---| + * | RESET | | | | | | | | + * `---------------------------------------------------------------------------------------' + */ + [2] = LAYOUT_default( + _______, _______, _______, KC_UP, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, _______, + _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, _______, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + RESET, RESET, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/checkerboards/ud40_ortho_alt/keymaps/npspears/readme.md b/keyboards/checkerboards/ud40_ortho_alt/keymaps/npspears/readme.md new file mode 100644 index 000000000000..126d92ab548c --- /dev/null +++ b/keyboards/checkerboards/ud40_ortho_alt/keymaps/npspears/readme.md @@ -0,0 +1,4 @@ +# The Default UD40 Ortho Alt Layout +# 1.25 - 1.25 - 1.25 - 2.25 - 2.25 - 1.25 - 1.25 - 1.25 +# or +# 1 - 1 - 1 - 3 - 3 - 1 - 1 - 1 diff --git a/keyboards/checkerboards/ud40_ortho_alt/keymaps/via/keymap.c b/keyboards/checkerboards/ud40_ortho_alt/keymaps/via/keymap.c new file mode 100644 index 000000000000..cbe2d9778aa6 --- /dev/null +++ b/keyboards/checkerboards/ud40_ortho_alt/keymaps/via/keymap.c @@ -0,0 +1,100 @@ +/* Copyright 2020 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Defines for task manager and such +#define CALTDEL LCTL(LALT(KC_DEL)) +#define TSKMGR LCTL(LSFT(KC_ESC)) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* [0] + * ,-----------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del | + * |------------+------+------+------+------+-------------+------+------+------+------+------| + * | CTL & ESC | A | S | D | F | G | H | J | K | L | ; | " | + * |------------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift | Z | X | C | V | B | N | M | , | . | / |Enter | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+------| + * | PRINT | OS | Alt | Layer | Space & Layer | [ | ] | CAPS | + * `-----------------------------------------------------------------------------------------' + */ + [0] = LAYOUT_default( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, + CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_PSCR, KC_LGUI, KC_LALT, TT(1), LT(2, KC_SPC), KC_LBRC, KC_RBRC, KC_CAPS + ), + + /* [1] + * ,---------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+----| + * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | BCKSPC | + * |------------+------+------+------+------+-------------+------+------+------+------+----| + * | \ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | / | + * |------------+------+------+------+------+------|------+------+------+------+------+----| + * | | | | | | | | + | = | | | | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+----| + * | ESC | CTRL-ALT-DEL | TASK | | | '|' | ` | | + * `---------------------------------------------------------------------------------------' + */ + [1] = LAYOUT_default( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_SLSH, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, + _______, _______, _______, _______, _______, _______, _______, KC_PPLS, KC_EQL, _______, _______, _______, + KC_ESC, CALTDEL, TSKMGR, _______, _______, KC_NUBS, KC_GRV, _______ + ), + + /* [2] + * ,--------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+---| + * | | | | UP | | | | _ | | [ | ] | | + * |------------+------+------+------+------+-------------+------+------+------+------+---| + * | | | LEFT | DOWN | RIGHT | | | - | | [ | ] | | + * |------------+------+------+------+------+-----+-----+------+------+------+------+-----| + * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+---| + * | RESET | | | | | | | | + * `---------------------------------------------------------------------------------------' + */ + [2] = LAYOUT_default( + _______, _______, _______, KC_UP, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, _______, + _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, _______, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + RESET, _______, _______, _______, _______, _______, _______, _______ + ), + + /* [3] + * ,---------------------------------------------------------------------------------------. + * |------------+------+------+------+------+------+------+------+------+------+------+----| + * | | | | | | | | | | | | | | + * |------------+------+------+------+------+-------------+------+------+------+------+----| + * | | | | | | | | | | | | | | + * |------------+------+------+------+------+------|------+------+------+------+------+----| + * | | | | | | | | | | | | | | + * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+----| + * | | | | | | | | | | | | | | + * `---------------------------------------------------------------------------------------' + */ + [3] = LAYOUT_default( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + + }; diff --git a/keyboards/checkerboards/ud40_ortho_alt/keymaps/via/rules.mk b/keyboards/checkerboards/ud40_ortho_alt/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/checkerboards/ud40_ortho_alt/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/checkerboards/ud40_ortho_alt/readme.md b/keyboards/checkerboards/ud40_ortho_alt/readme.md new file mode 100644 index 000000000000..c7118f82e4f3 --- /dev/null +++ b/keyboards/checkerboards/ud40_ortho_alt/readme.md @@ -0,0 +1,17 @@ +# UD40_Ortho_Alt + +![UD40_Ortho_Alt](https://i.imgur.com/NnGIo0O.png) + +The UD40_Ortho_Alt PCB is a modified layout for the UD040. It's similar to traditional ortho but the bottom row keys are larger than 1u. + +* Keyboard Maintainer: [Nasp](https://github.com/npspears) +* Hardware Supported: UD40 +* Hardware Availability: MyKeyboard.EU + +Make example for this keyboard (after setting up your build environment): + + make checkerboards/ud40_ortho_alt:default + +Enter the bootloader by shorting GND and RESET just above the Atmega MCU. + +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/checkerboards/ud40_ortho_alt/rules.mk b/keyboards/checkerboards/ud40_ortho_alt/rules.mk new file mode 100644 index 000000000000..f40141ea4eab --- /dev/null +++ b/keyboards/checkerboards/ud40_ortho_alt/rules.mk @@ -0,0 +1,21 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 +UNICODE_ENABLE = yes # Unicode + diff --git a/keyboards/checkerboards/ud40_ortho_alt/ud40_ortho_alt.c b/keyboards/checkerboards/ud40_ortho_alt/ud40_ortho_alt.c new file mode 100644 index 000000000000..7000732a1319 --- /dev/null +++ b/keyboards/checkerboards/ud40_ortho_alt/ud40_ortho_alt.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "ud40_ortho_alt.h" diff --git a/keyboards/checkerboards/ud40_ortho_alt/ud40_ortho_alt.h b/keyboards/checkerboards/ud40_ortho_alt/ud40_ortho_alt.h new file mode 100644 index 000000000000..9a0bb6b6080d --- /dev/null +++ b/keyboards/checkerboards/ud40_ortho_alt/ud40_ortho_alt.h @@ -0,0 +1,81 @@ +/* Copyright 2021 Nathan Spears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +#define LAYOUT_default( \ + 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 \ +) { \ + { 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, XXX, k32, k33, XXX, k34, XXX, k35, k36, XXX, k37 } \ +} + +#define LAYOUT_2x3u_alt( \ + 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 \ +) { \ + { 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, XXX, XXX, k31, k32, XXX, k33, XXX, XXX, k34, XXX, k35 } \ +} + +#define LAYOUT_600u( \ + 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 \ +) { \ + { 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, XXX, k32, XXX, XXX, k33, XXX, k34, k35, XXX, k36 } \ +} + +#define LAYOUT_600u_alt( \ + 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 \ +) { \ + { 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, XXX, XXX, k31, XXX, XXX, k32, XXX, XXX, k33, XXX, k34 } \ +} + +#define LAYOUT_700u( \ + 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 \ +) { \ + { 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, XXX, XXX, XXX, XXX, k32, XXX, XXX, k33, XXX, k34 } \ +} diff --git a/keyboards/cherrybstudio/cb1800/cb1800.c b/keyboards/cherrybstudio/cb1800/cb1800.c new file mode 100644 index 000000000000..6a42e65db565 --- /dev/null +++ b/keyboards/cherrybstudio/cb1800/cb1800.c @@ -0,0 +1,14 @@ +/* +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "cb1800.h" diff --git a/keyboards/cherrybstudio/cb1800/cb1800.h b/keyboards/cherrybstudio/cb1800/cb1800.h new file mode 100644 index 000000000000..990bc5cfd6b2 --- /dev/null +++ b/keyboards/cherrybstudio/cb1800/cb1800.h @@ -0,0 +1,38 @@ +/* +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_all( \ + K000, K001, K002, K003, K004,K005, K006, K007, K008, K009, K010, K100, K101, K909, K102, K103, K104, K105, \ + K106, K107, K108, K109, \ + K110, K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K300, K301, K302, K303, K304, K305, K306, \ + K307, K308, K309, K310, K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K500, K501, K502, \ + K503, K504, K505, K506, K507, K508, K509, K510, K600, K601, K602, K603, K604, K605, K606, K607, K608, K609, \ + K610, K700, K701, K702, K703, K704, 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 \ +) { \ + { 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, K304, K305, K306, K307, K308, K309, K310 }, \ + { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410 }, \ + { K500, K501, K502, K503, K504, K505, K506, K507, K508, K509, K510 }, \ + { K600, K601, K602, K603, K604, K605, K606, K607, K608, K609, K610 }, \ + { K700, K701, K702, K703, K704, 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, KC_NO } \ +} + diff --git a/keyboards/cherrybstudio/cb1800/config.h b/keyboards/cherrybstudio/cb1800/config.h new file mode 100644 index 000000000000..81d24669dca0 --- /dev/null +++ b/keyboards/cherrybstudio/cb1800/config.h @@ -0,0 +1,63 @@ +/* +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4342 // CB +#define PRODUCT_ID 0x1818 +#define DEVICE_VER 0x0001 +#define MANUFACTURER CherryB.Studio +#define PRODUCT CB1800 + +/* key matrix size */ +#define MATRIX_ROWS 10 +#define MATRIX_COLS 11 + +/* + * 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) + * + * 0 1 2 3 4 5 6 7 8 9 +*/ +#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, B5, B6, B7, C6, C7 } +#define MATRIX_COL_PINS { D0, D1, D2, D3, D4, D5, D6, D7, F0, F1, F4 } +//#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* LED Indicators */ +#define LED_CAPS_LOCK_PIN F5 +#define LED_NUM_LOCK_PIN F6 +#define LED_SCROLL_LOCK_PIN F7 + + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +#define RGB_DI_PIN E6 +#ifdef RGB_DI_PIN +# define RGBLIGHT_ANIMATIONS +# define RGBLED_NUM 20 +# define RGBLIGHT_HUE_STEP 8 +# define RGBLIGHT_SAT_STEP 8 +# define RGBLIGHT_VAL_STEP 8 +#endif diff --git a/keyboards/cherrybstudio/cb1800/info.json b/keyboards/cherrybstudio/cb1800/info.json new file mode 100644 index 000000000000..ea54e1e6c528 --- /dev/null +++ b/keyboards/cherrybstudio/cb1800/info.json @@ -0,0 +1,126 @@ +{ + "keyboard_name": "cb1800", + "url": "https://discord.gg/qVwv3gcq83", + "maintainer": "duongaanh", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":1.25, "y":0}, + {"label":"F2", "x":2.25, "y":0}, + {"label":"F3", "x":3.25, "y":0}, + {"label":"F4", "x":4.25, "y":0}, + {"label":"F5", "x":5.5, "y":0}, + {"label":"F6", "x":6.5, "y":0}, + {"label":"F7", "x":7.5, "y":0}, + {"label":"F8", "x":8.5, "y":0}, + {"label":"F9", "x":9.75, "y":0}, + {"label":"F10", "x":10.75, "y":0}, + {"label":"F11", "x":11.75, "y":0}, + {"label":"F12", "x":12.75, "y":0}, + {"label":"Esc", "x":14, "y":0}, + {"label":"Insert", "x":15.5, "y":0}, + {"label":"Home", "x":16.5, "y":0}, + {"label":"PgUp", "x":17.5, "y":0}, + {"label":"PrtSc", "x":18.5, "y":0}, + + {"label":"Delete", "x":15.5, "y":1}, + {"label":"End", "x":16.5, "y":1}, + {"label":"PgDn", "x":17.5, "y":1}, + {"label":"Scroll Lock", "x":18.5, "y":1}, + + {"label":"~", "x":0, "y":2}, + {"label":"!", "x":1, "y":2}, + {"label":"@", "x":2, "y":2}, + {"label":"#", "x":3, "y":2}, + {"label":"$", "x":4, "y":2}, + {"label":"%", "x":5, "y":2}, + {"label":"^", "x":6, "y":2}, + {"label":"&", "x":7, "y":2}, + {"label":"*", "x":8, "y":2}, + {"label":"(", "x":9, "y":2}, + {"label":")", "x":10, "y":2}, + {"label":"_", "x":11, "y":2}, + {"label":"+", "x":12, "y":2}, + {"x":13, "y":2}, + {"label":"Backspace", "x":14, "y":2}, + {"label":"Num Lock", "x":15.5, "y":2}, + {"label":"/", "x":16.5, "y":2}, + {"label":"*", "x":17.5, "y":2}, + {"label":"Pause", "x":18.5, "y":2}, + + {"label":"Tab", "x":0, "y":3, "w":1.5}, + {"label":"Q", "x":1.5, "y":3}, + {"label":"W", "x":2.5, "y":3}, + {"label":"E", "x":3.5, "y":3}, + {"label":"R", "x":4.5, "y":3}, + {"label":"T", "x":5.5, "y":3}, + {"label":"Y", "x":6.5, "y":3}, + {"label":"U", "x":7.5, "y":3}, + {"label":"I", "x":8.5, "y":3}, + {"label":"O", "x":9.5, "y":3}, + {"label":"P", "x":10.5, "y":3}, + {"label":"{", "x":11.5, "y":3}, + {"label":"}", "x":12.5, "y":3}, + {"label":"|", "x":13.5, "y":3, "w":1.5}, + {"label":"7", "x":15.5, "y":3}, + {"label":"8", "x":16.5, "y":3}, + {"label":"9", "x":17.5, "y":3}, + {"label":"-", "x":18.5, "y":3}, + + {"label":"Caps Lock", "x":0, "y":4, "w":1.75}, + {"label":"A", "x":1.75, "y":4}, + {"label":"S", "x":2.75, "y":4}, + {"label":"D", "x":3.75, "y":4}, + {"label":"F", "x":4.75, "y":4}, + {"label":"G", "x":5.75, "y":4}, + {"label":"H", "x":6.75, "y":4}, + {"label":"J", "x":7.75, "y":4}, + {"label":"K", "x":8.75, "y":4}, + {"label":"L", "x":9.75, "y":4}, + {"label":":", "x":10.75, "y":4}, + {"label":"\"", "x":11.75, "y":4}, + {"label":"ISO~", "x":12.75, "y":4}, + {"label":"Enter", "x":13.75, "y":4, "w":1.25}, + {"label":"4", "x":15.5, "y":4}, + {"label":"5", "x":16.5, "y":4}, + {"label":"6", "x":17.5, "y":4}, + {"label":"+", "x":18.5, "y":4}, + + {"label":"Shift", "x":0, "y":5, "w":1.25}, + {"label":"ISO|", "x":1.25, "y":5}, + {"label":"Z", "x":2.25, "y":5}, + {"label":"X", "x":3.25, "y":5}, + {"label":"C", "x":4.25, "y":5}, + {"label":"V", "x":5.25, "y":5}, + {"label":"B", "x":6.25, "y":5}, + {"label":"N", "x":7.25, "y":5}, + {"label":"M", "x":8.25, "y":5}, + {"label":"<", "x":9.25, "y":5}, + {"label":">", "x":10.25, "y":5}, + {"label":"?", "x":11.25, "y":5}, + {"label":"Shift", "x":12.25, "y":5, "w":1.75}, + {"label":"Up", "x":14.25, "y":5.25}, + {"label":"1", "x":15.5, "y":5}, + {"label":"2", "x":16.5, "y":5}, + {"label":"3", "x":17.5, "y":5}, + {"label":"Enter", "x":18.5, "y":5}, + + {"label":"LCtrl", "x":0, "y":6}, + {"label":"LGui", "x":1, "y":6}, + {"label":"LAlt", "x":2, "y":6}, + {"label":"Space", "x":3, "y":6, "w":6}, + {"label":"RAlt", "x":9, "y":6}, + {"label":"RGui", "x":10, "y":6}, + {"label":"Menu", "x":11, "y":6}, + {"label":"LCtrl", "x":12, "y":6}, + {"label":"Left", "x":13.25, "y":6.25}, + {"label":"Down", "x":14.25, "y":6.25}, + {"label":"Right", "x":15.25, "y":6.25}, + {"label":"0", "x":16.5, "y":6}, + {"label":".", "x":17.5, "y":6}, + {"label":"Enter", "x":18.5, "y":6} + ] + } + } +} diff --git a/keyboards/cherrybstudio/cb1800/keymaps/default/keymap.c b/keyboards/cherrybstudio/cb1800/keymaps/default/keymap.c new file mode 100644 index 000000000000..75a1c207039e --- /dev/null +++ b/keyboards/cherrybstudio/cb1800/keymaps/default/keymap.c @@ -0,0 +1,36 @@ +/* +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RESET, KC_INS, KC_HOME, KC_PGUP, KC_PSCR, + KC_DEL, KC_END, KC_PGDN, KC_SLCK, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PAUS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_P0, KC_PDOT, KC_PENT + ), + [1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + +}; diff --git a/keyboards/cherrybstudio/cb1800/keymaps/default/readme.md b/keyboards/cherrybstudio/cb1800/keymaps/default/readme.md new file mode 100644 index 000000000000..d68382007dd0 --- /dev/null +++ b/keyboards/cherrybstudio/cb1800/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for cb1800 \ No newline at end of file diff --git a/keyboards/cherrybstudio/cb1800/keymaps/via/keymap.c b/keyboards/cherrybstudio/cb1800/keymaps/via/keymap.c new file mode 100644 index 000000000000..7bdb7b023e84 --- /dev/null +++ b/keyboards/cherrybstudio/cb1800/keymaps/via/keymap.c @@ -0,0 +1,56 @@ +/* +Copyright 2020 Tybera +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RESET, KC_INS, KC_HOME, KC_PGUP, KC_PSCR, + KC_DEL, KC_END, KC_PGDN, KC_SLCK, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PAUS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_P0, KC_PDOT, KC_PENT + ), + [1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + +}; + diff --git a/keyboards/cherrybstudio/cb1800/keymaps/via/rules.mk b/keyboards/cherrybstudio/cb1800/keymaps/via/rules.mk new file mode 100644 index 000000000000..ca9fed0e6b53 --- /dev/null +++ b/keyboards/cherrybstudio/cb1800/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +LTO_ENABLE = yes +VIA_ENABLE = yes diff --git a/keyboards/cherrybstudio/cb1800/readme.md b/keyboards/cherrybstudio/cb1800/readme.md new file mode 100644 index 000000000000..8ab8f3462f0c --- /dev/null +++ b/keyboards/cherrybstudio/cb1800/readme.md @@ -0,0 +1,26 @@ +# CherryB Studio CB1800 + +![cb1800](https://i.imgur.com/QRJ6DFsl.jpg) + +A G80-1800 inspired PCB for CB1800 Zakabato and any suitable 1800 layout keyboards. + +* Keyboard Maintainer: duongaanh +* Hardware Supported: cb1800, atmega32u4 +* Hardware Availability: [CherryB Studio](https://www.reddit.com/r/mechmarket/comments/mneayy/ic_cb1800zanbato_1800_classic_by_cherryb/) + +Make example for this keyboard (after setting up your build environment): + + make cherrybstudio/cb1800:default + +Flashing example for this keyboard: + + make cherrybstudio/cb1800:default:flash + +## Accessing Bootloader Mode + +To access Bootloader Mode, do one of the following: + +* Tap the Reset switch mounted on the top side of the PCB to the left of the spacebar +* Hold the top left key of the keyboard while connecting the USB cable + +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/cherrybstudio/cb1800/rules.mk b/keyboards/cherrybstudio/cb1800/rules.mk new file mode 100644 index 000000000000..7579a497191d --- /dev/null +++ b/keyboards/cherrybstudio/cb1800/rules.mk @@ -0,0 +1,19 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 diff --git a/keyboards/cherrybstudio/cb87/info.json b/keyboards/cherrybstudio/cb87/info.json index cd02a5816620..dc6d017b33d3 100644 --- a/keyboards/cherrybstudio/cb87/info.json +++ b/keyboards/cherrybstudio/cb87/info.json @@ -2,8 +2,6 @@ "keyboard_name": "CB87", "url": "https://discord.gg/qVwv3gcq83", "maintainer": "duongaanh", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/cherrybstudio/cb87/rules.mk b/keyboards/cherrybstudio/cb87/rules.mk index 43a7e336c488..9df5a685a750 100644 --- a/keyboards/cherrybstudio/cb87/rules.mk +++ b/keyboards/cherrybstudio/cb87/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LAYOUTS = tkl_ansi tkl_iso diff --git a/keyboards/cheshire/curiosity/info.json b/keyboards/cheshire/curiosity/info.json index d9a28d016073..95a9e06d3e96 100644 --- a/keyboards/cheshire/curiosity/info.json +++ b/keyboards/cheshire/curiosity/info.json @@ -1,8 +1,6 @@ { "keyboard_name": "Curiosity", "maintainer": "zvecr", - "width": 19.75, - "height": 5.25, "layouts": { "LAYOUT_alice_split_bs": { "layout": [ diff --git a/keyboards/cheshire/curiosity/rules.mk b/keyboards/cheshire/curiosity/rules.mk index b0bca5a89c55..97618f964bca 100644 --- a/keyboards/cheshire/curiosity/rules.mk +++ b/keyboards/cheshire/curiosity/rules.mk @@ -7,13 +7,11 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality diff --git a/keyboards/chidori/config.h b/keyboards/chidori/config.h index 69292e7f9e28..2db5d57ef7a0 100644 --- a/keyboards/chidori/config.h +++ b/keyboards/chidori/config.h @@ -141,43 +141,6 @@ along with this program. If not, see . /* defined by default; to change, uncomment and set to the combination you want */ #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSFT) | MOD_BIT(KC_LCTL))) -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -196,26 +159,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/chidori/info.json b/keyboards/chidori/info.json index 0c892aa084f8..9c879c7649a1 100644 --- a/keyboards/chidori/info.json +++ b/keyboards/chidori/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Chidori", "url": "", "maintainer": "ka2hiro", - "width": 13, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/chidori/keymaps/oled_sample/keymap.c b/keyboards/chidori/keymaps/oled_sample/keymap.c index 6c9b7869ba2a..78107a18ec9c 100644 --- a/keyboards/chidori/keymaps/oled_sample/keymap.c +++ b/keyboards/chidori/keymaps/oled_sample/keymap.c @@ -181,7 +181,7 @@ bool led_update_user(led_t led_state) { return false; } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE void oled_write_layer_state(void) { oled_write_P(PSTR("Layer: "), false); @@ -210,8 +210,9 @@ void oled_write_layer_state(void) { } } -void oled_task_user(void) { +bool oled_task_user(void) { // If you want to change the display of OLED, you need to change here oled_write_layer_state(); + return false; } #endif diff --git a/keyboards/chidori/keymaps/oled_sample/rules.mk b/keyboards/chidori/keymaps/oled_sample/rules.mk index cc60236cac91..7a7b1acc03aa 100644 --- a/keyboards/chidori/keymaps/oled_sample/rules.mk +++ b/keyboards/chidori/keymaps/oled_sample/rules.mk @@ -1,2 +1,3 @@ # Enable SSD1306 OLED -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/chidori/rules.mk b/keyboards/chidori/rules.mk index 312a4a372e2e..3a1fe047bd51 100644 --- a/keyboards/chidori/rules.mk +++ b/keyboards/chidori/rules.mk @@ -2,33 +2,21 @@ MCU = atmega328p # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = USBasp +BOOTLOADER = usbasploader # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output CUSTOM_MATRIX = lite diff --git a/keyboards/chili/config.h b/keyboards/chili/config.h index 08c24758751e..13bd700363b1 100644 --- a/keyboards/chili/config.h +++ b/keyboards/chili/config.h @@ -93,54 +93,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -158,23 +110,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 diff --git a/keyboards/chili/info.json b/keyboards/chili/info.json index 414ae9b7fa4e..8e92d83de044 100644 --- a/keyboards/chili/info.json +++ b/keyboards/chili/info.json @@ -2,8 +2,6 @@ "keyboard_name": "YDKB Chili", "url": "", "maintainer": "qmk", - "width": 22.5, - "height": 6.5, "layouts": { "LAYOUT_all": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"@", "x":2, "y":1.5}, {"label":"#", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"Backsp", "x":13, "y":1.5}, {"x":14, "y":1.5}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.25, "y":1.5}, {"label":"Num Lock", "x":18.5, "y":1.5}, {"label":"/", "x":19.5, "y":1.5}, {"label":"*", "x":20.5, "y":1.5}, {"label":"-", "x":21.5, "y":1.5}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":6.5, "y":2.5}, {"label":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"|", "x":13.5, "y":2.5, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"7", "x":18.5, "y":2.5}, {"label":"8", "x":19.5, "y":2.5}, {"label":"9", "x":20.5, "y":2.5}, {"label":"+", "x":21.5, "y":2.5}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, {"label":"4", "x":18.5, "y":3.5}, {"label":"5", "x":19.5, "y":3.5}, {"label":"6", "x":20.5, "y":3.5}, {"x":21.5, "y":3.5}, {"label":"Shift", "x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"N", "x":7.25, "y":4.5}, {"label":"M", "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":"Shift", "x":12.25, "y":4.5, "w":1.75}, {"x":14, "y":4.5}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"1", "x":18.5, "y":4.5}, {"label":"2", "x":19.5, "y":4.5}, {"label":"3", "x":20.5, "y":4.5}, {"label":"Enter", "x":21.5, "y":4.5, "h":2}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, {"label":"Win", "x":1.25, "y":5.5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":3}, {"x":6.75, "y":5.5, "w":3}, {"label":"Alt", "x":9.75, "y":5.5, "w":1.5}, {"label":"Win", "x":11.25, "y":5.5, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.5, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}, {"label":"0", "x":18.5, "y":5.5}, {"x":19.5, "y":5.5}, {"label":".", "x":20.5, "y":5.5}] diff --git a/keyboards/chili/rules.mk b/keyboards/chili/rules.mk index a99c946d2878..ca1bcda2d26a 100644 --- a/keyboards/chili/rules.mk +++ b/keyboards/chili/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/chimera_ergo/chimera_ergo.h b/keyboards/chimera_ergo/chimera_ergo.h index 32d02886c475..b8897ac14ed0 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<. */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -66,5 +65,3 @@ along with this program. If not, see . UCSR1B = _BV(TXEN1) | _BV(RXEN1); \ /* 8-bit data */ \ UCSR1C = _BV(UCSZ11) | _BV(UCSZ10); - -#endif diff --git a/keyboards/chimera_ergo/info.json b/keyboards/chimera_ergo/info.json index c614480882fc..28a9689bae7a 100644 --- a/keyboards/chimera_ergo/info.json +++ b/keyboards/chimera_ergo/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Chimera Ergo", "url": "", "maintainer": "qmk", - "width": 13, - "height": 6, "layouts": { "LAYOUT": { - "key_count": 52, "layout": [{"label":"k00", "x":0, "y":1}, {"label":"k01", "x":1, "y":0.75}, {"label":"k02", "x":2, "y":0.25}, {"label":"k03", "x":3, "y":0}, {"label":"k04", "x":4, "y":0.25}, {"label":"k05", "x":5, "y":0.5}, {"label":"k06", "x":7, "y":0.5}, {"label":"k07", "x":8, "y":0.25}, {"label":"k08", "x":9, "y":0}, {"label":"k09", "x":10, "y":0.25}, {"label":"k10", "x":11, "y":0.75}, {"label":"k11", "x":12, "y":1}, {"label":"k12", "x":0, "y":2}, {"label":"k13", "x":1, "y":1.75}, {"label":"k14", "x":2, "y":1.25}, {"label":"k15", "x":3, "y":1}, {"label":"k16", "x":4, "y":1.25}, {"label":"k17", "x":5, "y":1.5}, {"label":"k18", "x":7, "y":1.5}, {"label":"k19", "x":8, "y":1.25}, {"label":"k20", "x":9, "y":1}, {"label":"k21", "x":10, "y":1.25}, {"label":"k22", "x":11, "y":1.75}, {"label":"k23", "x":12, "y":2}, {"label":"k24", "x":0, "y":3}, {"label":"k25", "x":1, "y":2.75}, {"label":"k26", "x":2, "y":2.25}, {"label":"k27", "x":3, "y":2}, {"label":"k28", "x":4, "y":2.25}, {"label":"k29", "x":5, "y":2.5}, {"label":"k30", "x":7, "y":2.5}, {"label":"k31", "x":8, "y":2.25}, {"label":"k32", "x":9, "y":2}, {"label":"k33", "x":10, "y":2.25}, {"label":"k34", "x":11, "y":2.75}, {"label":"k35", "x":12, "y":3}, {"label":"k36", "x":0, "y":4}, {"label":"k37", "x":1, "y":3.75}, {"label":"k38", "x":2, "y":3.25}, {"label":"k39", "x":3, "y":3}, {"label":"k40", "x":4, "y":3.25}, {"label":"k41", "x":5, "y":3.5}, {"label":"k42", "x":7, "y":3.5}, {"label":"k43", "x":8, "y":3.25}, {"label":"k44", "x":9, "y":3}, {"label":"k45", "x":10, "y":3.25}, {"label":"k46", "x":11, "y":3.75}, {"label":"k47", "x":12, "y":4}, {"label":"k48", "x":4, "y":4.75}, {"label":"k49", "x":5, "y":5}, {"label":"k50", "x":7, "y":5}, {"label":"k51", "x":8, "y":4.75}] } } diff --git a/keyboards/chimera_ergo/rules.mk b/keyboards/chimera_ergo/rules.mk index b7084b4a1a7f..2a0e387afd81 100644 --- a/keyboards/chimera_ergo/rules.mk +++ b/keyboards/chimera_ergo/rules.mk @@ -2,31 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # comment out to disable the options. # -#BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration CUSTOM_MATRIX = yes # Remote matrix from the wireless bridge -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA # BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -# MIDI_ENABLE = YES # MIDI controls -UNICODE_ENABLE = YES # Unicode -# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID # # project specific files SRC += matrix.c serial_uart.c diff --git a/keyboards/chimera_ls/chimera_ls.h b/keyboards/chimera_ls/chimera_ls.h index 45c91acc3dba..7d67d573db4c 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<. */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -66,5 +65,3 @@ along with this program. If not, see . UCSR1B = _BV(TXEN1) | _BV(RXEN1); \ /* 8-bit data */ \ UCSR1C = _BV(UCSZ11) | _BV(UCSZ10); - -#endif diff --git a/keyboards/chimera_ls/info.json b/keyboards/chimera_ls/info.json index 077a76079695..b6585a5c28ff 100644 --- a/keyboards/chimera_ls/info.json +++ b/keyboards/chimera_ls/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Chimera LS", "url": "", "maintainer": "qmk", - "width": 13, - "height": 4, "layouts": { "LAYOUT_ortho_4x12": { - "key_count": 48, "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":12, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}, {"x":12, "y":3}] } } diff --git a/keyboards/chimera_ls/rules.mk b/keyboards/chimera_ls/rules.mk index 2f414ba81b3e..7aa7abad7e88 100644 --- a/keyboards/chimera_ls/rules.mk +++ b/keyboards/chimera_ls/rules.mk @@ -2,31 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # comment out to disable the options. # -#BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration CUSTOM_MATRIX = yes # Remote matrix from the wireless bridge -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA # BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -# MIDI_ENABLE = YES # MIDI controls -UNICODE_ENABLE = YES # Unicode -# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID # project specific files SRC += matrix.c serial_uart.c diff --git a/keyboards/chimera_ortho/chimera_ortho.h b/keyboards/chimera_ortho/chimera_ortho.h index ec893990a3a9..03384c9b2853 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<. */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -66,5 +65,3 @@ along with this program. If not, see . UCSR1B = _BV(TXEN1) | _BV(RXEN1); \ /* 8-bit data */ \ UCSR1C = _BV(UCSZ11) | _BV(UCSZ10); - -#endif diff --git a/keyboards/chimera_ortho/info.json b/keyboards/chimera_ortho/info.json index 9e960e80c99e..73e15c64f396 100644 --- a/keyboards/chimera_ortho/info.json +++ b/keyboards/chimera_ortho/info.json @@ -1,8 +1,6 @@ { "keyboard_name": "Chimera Ortho", "maintainer": "qmk", - "width": 15.5, - "height": 4.25, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/chimera_ortho/rules.mk b/keyboards/chimera_ortho/rules.mk index d97cff59f3bf..9e5b4c9f31c1 100644 --- a/keyboards/chimera_ortho/rules.mk +++ b/keyboards/chimera_ortho/rules.mk @@ -2,31 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # comment out to disable the options. # -#BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration CUSTOM_MATRIX = yes # Remote matrix from the wireless bridge -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA # BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -# MIDI_ENABLE = YES # MIDI controls -UNICODE_ENABLE = YES # Unicode -# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID # project specific files SRC += matrix.c serial_uart.c diff --git a/keyboards/chimera_ortho_plus/info.json b/keyboards/chimera_ortho_plus/info.json index 3215ff52233b..29a2c2a6348d 100644 --- a/keyboards/chimera_ortho_plus/info.json +++ b/keyboards/chimera_ortho_plus/info.json @@ -1,8 +1,6 @@ { "keyboard_name": "Chimera Ortho Plus", "maintainer": "qmk", - "width": 13.5, - "height": 6, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/chimera_ortho_plus/rules.mk b/keyboards/chimera_ortho_plus/rules.mk index c11b5c601ea3..b1eedb7fbe00 100644 --- a/keyboards/chimera_ortho_plus/rules.mk +++ b/keyboards/chimera_ortho_plus/rules.mk @@ -1,32 +1,21 @@ # MCU name MCU = atmega32u4 -# Bootloader -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp +# Bootloader selection BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# 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 -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE = no # Audio output UNICODE_ENABLE = yes CUSTOM_MATRIX = yes diff --git a/keyboards/chlx/merro60/info.json b/keyboards/chlx/merro60/info.json index 8205d4d24cfe..e0a697df0652 100644 --- a/keyboards/chlx/merro60/info.json +++ b/keyboards/chlx/merro60/info.json @@ -2,10 +2,14 @@ "keyboard_name": "merro60", "url": "www.github.com/gaclee3b", "maintainer": "gaclee3b", - "width": 15, - "height": 5, + "layout_aliases": { + "LAYOUT_default": "LAYOUT_all", + "LAYOUT_hhkb": "LAYOUT_60_hhkb", + "LAYOUT_iso": "LAYOUT_60_iso_split_bs_rshift", + "LAYOUT_tsangan": "LAYOUT_60_tsangan_hhkb" + }, "layouts": { - "LAYOUT_default": { + "LAYOUT_all": { "layout": [ {"x": 0, "y": 0}, {"x": 1, "y": 0}, @@ -78,7 +82,76 @@ {"x": 13.75, "y": 4, "w": 1.25} ] }, - "LAYOUT_ansi": { + "LAYOUT_60_ansi": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":2.75}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":12.5, "y":4, "w":1.25}, + {"x":13.75, "y":4, "w":1.25} + ] + }, + "LAYOUT_60_ansi_split_bs_rshift": { "layout": [ {"x": 0, "y": 0}, {"x": 1, "y": 0}, @@ -125,8 +198,7 @@ {"x": 11.75, "y": 2}, {"x": 12.75, "y": 2, "w": 2.25}, - {"x": 0, "y": 3, "w": 1.25}, - {"x": 1.25, "y": 3}, + {"x": 0, "y": 3, "w": 2.25}, {"x": 2.25, "y": 3}, {"x": 3.25, "y": 3}, {"x": 4.25, "y": 3}, @@ -150,7 +222,7 @@ {"x": 13.75, "y": 4, "w": 1.25} ] }, - "LAYOUT_hhkb": { + "LAYOUT_60_hhkb": { "layout": [ {"x": 0, "y": 0}, {"x": 1, "y": 0}, @@ -218,7 +290,77 @@ {"x": 12.5, "y": 4} ] }, - "LAYOUT_iso": { + "LAYOUT_60_iso": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0, "w": 2}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2}, + {"x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"x": 0, "y": 3, "w": 1.25}, + {"x": 1.25, "y": 3}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3}, + {"x": 12.25, "y": 3, "w": 2.75}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6.25}, + {"x": 10, "y": 4, "w": 1.25}, + {"x": 11.25, "y": 4, "w": 1.25}, + {"x": 12.5, "y": 4, "w": 1.25}, + {"x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_60_iso_split_bs_rshift": { "layout": [ {"x": 0, "y": 0}, {"x": 1, "y": 0}, @@ -290,7 +432,7 @@ {"x": 13.75, "y": 4, "w": 1.25} ] }, - "LAYOUT_tsangan": { + "LAYOUT_60_tsangan_hhkb": { "layout": [ {"x": 0, "y": 0}, {"x": 1, "y": 0}, @@ -362,4 +504,3 @@ } } } - diff --git a/keyboards/chlx/merro60/keymaps/ansi/keymap.c b/keyboards/chlx/merro60/keymaps/ansi/keymap.c index 307f98866e09..eebc623cc857 100644 --- a/keyboards/chlx/merro60/keymaps/ansi/keymap.c +++ b/keyboards/chlx/merro60/keymaps/ansi/keymap.c @@ -19,17 +19,17 @@ along with this program. If not, see . const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[0] = LAYOUT_ansi( +[0] = LAYOUT_60_ansi_split_bs_rshift( KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, - KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL), -[1] = LAYOUT_ansi( +[1] = LAYOUT_60_ansi_split_bs_rshift( KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, RESET, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), }; diff --git a/keyboards/chlx/merro60/keymaps/default/keymap.c b/keyboards/chlx/merro60/keymaps/default/keymap.c index 98046d06496c..ee16d638002a 100644 --- a/keyboards/chlx/merro60/keymaps/default/keymap.c +++ b/keyboards/chlx/merro60/keymaps/default/keymap.c @@ -19,14 +19,14 @@ along with this program. If not, see . const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[0] = LAYOUT_default( +[0] = 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_BSLS, KC_GRV, 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_UP, KC_ENT, KC_LSFT, KC_LEFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RGHT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_DOWN, KC_RCTL), -[1] = LAYOUT_default( +[1] = 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_DEL, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/chlx/merro60/keymaps/hhkb/keymap.c b/keyboards/chlx/merro60/keymaps/hhkb/keymap.c index 3ea2901bd132..b7058cfc1b14 100644 --- a/keyboards/chlx/merro60/keymaps/hhkb/keymap.c +++ b/keyboards/chlx/merro60/keymaps/hhkb/keymap.c @@ -19,14 +19,14 @@ along with this program. If not, see . const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[0] = LAYOUT_hhkb( +[0] = LAYOUT_60_hhkb( 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_BSLS, KC_GRV, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI), -[1] = LAYOUT_hhkb( +[1] = LAYOUT_60_hhkb( 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_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, RESET, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, diff --git a/keyboards/chlx/merro60/keymaps/iso/keymap.c b/keyboards/chlx/merro60/keymaps/iso/keymap.c index f96ad9adee26..fdfbeafce0d4 100644 --- a/keyboards/chlx/merro60/keymaps/iso/keymap.c +++ b/keyboards/chlx/merro60/keymaps/iso/keymap.c @@ -19,14 +19,14 @@ along with this program. If not, see . const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[0] = LAYOUT_iso( +[0] = LAYOUT_60_iso_split_bs_rshift( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RGHT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL), -[1] = LAYOUT_iso( +[1] = LAYOUT_60_iso_split_bs_rshift( KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/chlx/merro60/keymaps/tsangan/keymap.c b/keyboards/chlx/merro60/keymaps/tsangan/keymap.c index 2083bf9be1a0..560abd994743 100644 --- a/keyboards/chlx/merro60/keymaps/tsangan/keymap.c +++ b/keyboards/chlx/merro60/keymaps/tsangan/keymap.c @@ -19,14 +19,14 @@ along with this program. If not, see . const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[0] = LAYOUT_tsangan( +[0] = LAYOUT_60_tsangan_hhkb( KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL), -[1] = LAYOUT_tsangan( +[1] = LAYOUT_60_tsangan_hhkb( KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/chlx/merro60/keymaps/via/keymap.c b/keyboards/chlx/merro60/keymaps/via/keymap.c index 8f756aefbdd9..1e44a9cfd6c8 100644 --- a/keyboards/chlx/merro60/keymaps/via/keymap.c +++ b/keyboards/chlx/merro60/keymaps/via/keymap.c @@ -19,28 +19,28 @@ along with this program. If not, see . const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[0] = LAYOUT_via( +[0] = 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_BSLS, KC_GRV, 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_UP, KC_ENT, KC_LSFT, KC_LEFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RGHT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_DOWN, KC_RCTL), -[1] = LAYOUT_via( +[1] = 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_DEL, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), -[2] = LAYOUT_via( +[2] = LAYOUT_all( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), -[3] = LAYOUT_via( +[3] = LAYOUT_all( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/chlx/merro60/merro60.h b/keyboards/chlx/merro60/merro60.h index 22811299963f..dee6a5a96ab6 100644 --- a/keyboards/chlx/merro60/merro60.h +++ b/keyboards/chlx/merro60/merro60.h @@ -23,7 +23,7 @@ along with this program. If not, see . #define XXX KC_NO -/* //////////////////// LAYOUT_default //////////////////// +/* //////////////////// LAYOUT_all //////////////////// * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │0e │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ @@ -37,7 +37,7 @@ along with this program. If not, see . * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ -#define LAYOUT_default( \ +#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, \ @@ -51,34 +51,61 @@ along with this program. If not, see . { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, XXX } \ } -/* //////////////////// LAYOUT_ansi //////////////////// +/* //////////////////// LAYOUT_60_ansi //////////////////// + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2d │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ + * │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ + * │40 │41 │42 │45 │4a │4b │4c │4d │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ +*/ +#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, \ + k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \ + k40, k41, k42, k45, 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 }, \ + { XXX, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, XXX, XXX }, \ + { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, XXX } \ +} + +/* //////////////////// LAYOUT_60_ansi_split_bs_rshift //////////////////// * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │0e │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2d │ - * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ - * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3d │3e │ - * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ + * │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ * │40 │41 │42 │45 │4a │4b │4d │4e │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ -#define LAYOUT_ansi( \ +#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, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \ + k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \ k40, k41, k42, k45, 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, XXX, k2d, XXX }, \ - { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, XXX }, \ + { XXX, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, XXX }, \ { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, XXX } \ } -/* //////////////////// LAYOUT_hhkb //////////////////// +/* //////////////////// LAYOUT_60_hhkb //////////////////// * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │0e │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ @@ -91,7 +118,7 @@ along with this program. If not, see . * │▓▓▓▓▓│41 │42 │45 (7u) │4b │4c │▓▓▓▓▓│ * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ */ -#define LAYOUT_hhkb( \ +#define LAYOUT_60_hhkb( \ 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, \ @@ -105,7 +132,34 @@ along with this program. If not, see . { XXX, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, XXX, k4b, k4c, XXX, XXX } \ } -/* //////////////////// LAYOUT_iso //////////////////// +/* //////////////////// LAYOUT_60_iso //////////////////// + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐2d │ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ + * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ + * │40 │41 │42 │45 │4a │4b │4c │4d │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ +*/ +#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, k3c, \ + k40, k41, k42, k45, 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, 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, k3c, XXX, XXX }, \ + { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, XXX } \ +} + +/* //////////////////// LAYOUT_60_iso_split_bs_rshift //////////////////// * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │0e │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ @@ -118,7 +172,7 @@ along with this program. If not, see . * │40 │41 │42 │45 │4a │4b │4c │4d │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ -#define LAYOUT_iso( \ +#define LAYOUT_60_iso_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, \ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \ @@ -132,7 +186,7 @@ along with this program. If not, see . { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, XXX } \ } -/* //////////////////// LAYOUT_tsangan //////////////////// +/* //////////////////// LAYOUT_60_tsangan_hhkb //////////////////// * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │0e │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ @@ -145,7 +199,7 @@ along with this program. If not, see . * │40 │41 │42 │45 (7u) │4b │4c │4d │ * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ */ -#define LAYOUT_tsangan( \ +#define LAYOUT_60_tsangan_hhkb( \ 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, \ @@ -158,32 +212,3 @@ along with this program. If not, see . { XXX, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, XXX }, \ { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, XXX, k4b, k4c, k4d, XXX } \ } - -/* //////////////////// LAYOUT_via //////////////////// - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ - * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │0e │ - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ - * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬────┤ - * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2d │ - * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ - * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │ - * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ - * │40 │41 │42 │45 (6.25u) │4a │4b │4c │4d │ - * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ -*/ - -#define LAYOUT_via( \ - 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, k45, 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, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, XXX } \ -} - diff --git a/keyboards/chlx/merro60/rules.mk b/keyboards/chlx/merro60/rules.mk index 32981133b2eb..3facb1adf416 100644 --- a/keyboards/chlx/merro60/rules.mk +++ b/keyboards/chlx/merro60/rules.mk @@ -7,16 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output + +LAYOUTS = 60_ansi 60_ansi_split_bs_rshift 60_hhkb 60_iso 60_tsangan_hhkb diff --git a/keyboards/choc_taro/config.h b/keyboards/choc_taro/config.h index 7dee9d336401..2852206b14e8 100644 --- a/keyboards/choc_taro/config.h +++ b/keyboards/choc_taro/config.h @@ -118,59 +118,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -191,26 +138,6 @@ along with this program. If not, see . #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/choc_taro/info.json b/keyboards/choc_taro/info.json index 33821afe0088..3a193ee05ed3 100644 --- a/keyboards/choc_taro/info.json +++ b/keyboards/choc_taro/info.json @@ -2,8 +2,6 @@ "keyboard_name": "choc_taro", "url": "https://kakunpc.booth.pm/", "maintainer": "kakunpc", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/choc_taro/rules.mk b/keyboards/choc_taro/rules.mk index 19b81990aaba..1f76c036a57b 100644 --- a/keyboards/choc_taro/rules.mk +++ b/keyboards/choc_taro/rules.mk @@ -2,31 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE = no # Audio output CUSTOM_MATRIX = lite diff --git a/keyboards/choco60/info.json b/keyboards/choco60/info.json index 3918dcb5f012..193e8f37b63b 100644 --- a/keyboards/choco60/info.json +++ b/keyboards/choco60/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Choco60", "url": "https://keys.recompile.net/projects/choco60/", "maintainer": "Naoto Takai", - "width": 16, - "height": 5, "layouts": { "LAYOUT": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":7, "y":0}, {"label":"&", "x":8, "y":0}, {"label":"*", "x":9, "y":0}, {"label":"(", "x":10, "y":0}, {"label":")", "x":11, "y":0}, {"label":"_", "x":12, "y":0}, {"label":"+", "x":13, "y":0}, {"label":"|", "x":14, "y":0}, {"label":"~", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":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":"Delete", "x":14.5, "y":1, "w":1.5}, {"label":"Control", "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":7.75, "y":2}, {"label":"J", "x":8.75, "y":2}, {"label":"K", "x":9.75, "y":2}, {"label":"L", "x":10.75, "y":2}, {"label":":", "x":11.75, "y":2}, {"label":"\"", "x":12.75, "y":2}, {"label":"Return", "x":13.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":8.25, "y":3}, {"label":"M", "x":9.25, "y":3}, {"label":"<", "x":10.25, "y":3}, {"label":">", "x":11.25, "y":3}, {"label":"?", "x":12.25, "y":3}, {"label":"Shift", "x":13.25, "y":3, "w":1.75}, {"label":"Fn", "x":15, "y":3}, {"label":"Opt", "x":1.5, "y":4}, {"label":"\u2318", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":2.75}, {"label":"Opt", "x":7.75, "y":4}, {"x":8.75, "y":4, "w":2.25}, {"label":"\u2318", "x":11, "y":4, "w":1.5}, {"label":"Ctrl", "x":12.5, "y":4}] diff --git a/keyboards/choco60/rev1/rules.mk b/keyboards/choco60/rev1/rules.mk index 12453d839e54..07bf2c196ec8 100644 --- a/keyboards/choco60/rev1/rules.mk +++ b/keyboards/choco60/rev1/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = yes # Enable split keyboard diff --git a/keyboards/choco60/rev2/rules.mk b/keyboards/choco60/rev2/rules.mk index b93b9467a6a6..1f7efca6f08d 100644 --- a/keyboards/choco60/rev2/rules.mk +++ b/keyboards/choco60/rev2/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 SPLIT_KEYBOARD = yes diff --git a/keyboards/christmas_tree/V2017/V2017.h b/keyboards/christmas_tree/V2017/V2017.h index a82a1e82f493..f779c0ed4795 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 ebe3d3bf1e38..abc94749a85f 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/V2017/rules.mk b/keyboards/christmas_tree/V2017/rules.mk index ce107055d584..184a1f2247e6 100644 --- a/keyboards/christmas_tree/V2017/rules.mk +++ b/keyboards/christmas_tree/V2017/rules.mk @@ -1,3 +1,3 @@ BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -AUDIO_ENABLE = no # Audio output on port C6 \ No newline at end of file +AUDIO_ENABLE = no # Audio output \ No newline at end of file diff --git a/keyboards/christmas_tree/christmas_tree.c b/keyboards/christmas_tree/christmas_tree.c index 04d41c1db333..c03670a3a54f 100644 --- a/keyboards/christmas_tree/christmas_tree.c +++ b/keyboards/christmas_tree/christmas_tree.c @@ -1,5 +1 @@ #include "christmas_tree.h" - -void matrix_init_kb(void) { - matrix_init_user(); -} diff --git a/keyboards/christmas_tree/christmas_tree.h b/keyboards/christmas_tree/christmas_tree.h index 11063c9152fd..68eefca6a865 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 05e5bdb2b491..531c5996d2f5 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -53,5 +52,3 @@ along with this program. If not, see . #define LOCKING_SUPPORT_ENABLE /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE - -#endif diff --git a/keyboards/christmas_tree/info.json b/keyboards/christmas_tree/info.json index 1d9cf2cc720d..5d24218c7007 100644 --- a/keyboards/christmas_tree/info.json +++ b/keyboards/christmas_tree/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Christmas Tree", "url": "https://www.reddit.com/r/MechanicalKeyboards/comments/7cqxpf/gb_christmas_tree_pcb_gb_now_live/", "maintainer": "That-Canadian", - "width": 3, - "height": 3, "layouts": { "LAYOUT": { - "key_count": 6, "layout": [{"x":1, "y":0}, {"x":0.5, "y":1}, {"x":1.5, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}] } } diff --git a/keyboards/christmas_tree/rules.mk b/keyboards/christmas_tree/rules.mk index da85eb37286c..4add8b53990d 100644 --- a/keyboards/christmas_tree/rules.mk +++ b/keyboards/christmas_tree/rules.mk @@ -2,34 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -API_SYSEX_ENABLE = no - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend DEFAULT_FOLDER = christmas_tree/V2017 diff --git a/keyboards/ck60i/info.json b/keyboards/ck60i/info.json index f7bec1378deb..f0a81eb62bc9 100644 --- a/keyboards/ck60i/info.json +++ b/keyboards/ck60i/info.json @@ -2,8 +2,6 @@ "keyboard_name": "CK60i", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/ck60i/rules.mk b/keyboards/ck60i/rules.mk index 1138f462e019..1164b959deab 100644 --- a/keyboards/ck60i/rules.mk +++ b/keyboards/ck60i/rules.mk @@ -7,13 +7,11 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality diff --git a/keyboards/ckeys/handwire_101/config.h b/keyboards/ckeys/handwire_101/config.h index f1e784fd245d..42e26be8692e 100755 --- a/keyboards/ckeys/handwire_101/config.h +++ b/keyboards/ckeys/handwire_101/config.h @@ -23,8 +23,8 @@ along with this program. If not, see . #define VENDOR_ID 0xFEED #define PRODUCT_ID 0x6060 #define DEVICE_VER 0x0001 -#define MANUFACTURER ckeys_handwire -#define PRODUCT ckeys_handwire +#define MANUFACTURER cKeys +#define PRODUCT Handwire 101 /* key matrix size */ #define MATRIX_ROWS 4 @@ -64,26 +64,6 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* * Force NKRO * @@ -105,54 +85,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - // Audio Click //#define AUDIO_CLICKY diff --git a/keyboards/ckeys/handwire_101/handwire_101.c b/keyboards/ckeys/handwire_101/handwire_101.c index a6ff8f0e3d0f..7d251ddce6c5 100755 --- a/keyboards/ckeys/handwire_101/handwire_101.c +++ b/keyboards/ckeys/handwire_101/handwire_101.c @@ -1,28 +1,17 @@ -#include "handwire_101.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - // Turn status LED on - //DDRD |= (1<<6); - //PORTD |= (1<<6); - - matrix_init_user(); -} +/* Copyright 2019 Branden Byers + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - led_set_user(usb_led); -} +#include "handwire_101.h" diff --git a/keyboards/ckeys/handwire_101/handwire_101.h b/keyboards/ckeys/handwire_101/handwire_101.h index 0f0309c3245c..5d6ef6ff09f7 100755 --- a/keyboards/ckeys/handwire_101/handwire_101.h +++ b/keyboards/ckeys/handwire_101/handwire_101.h @@ -1,12 +1,24 @@ +/* Copyright 2019 Branden Byers + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #pragma once #include "quantum.h" -// This a shortcut to help you visually see your layout. -// The 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( \ +#define LAYOUT_ortho_4x4( \ k00, k01, k02, k03, \ k10, k11, k12, k13, \ k20, k21, k22, k23, \ @@ -18,4 +30,3 @@ { k20, k21, k22, k23 }, \ { k30, k31, k32, k33 } \ } - diff --git a/keyboards/ckeys/handwire_101/info.json b/keyboards/ckeys/handwire_101/info.json index dfe6c4830462..19e6edb48101 100644 --- a/keyboards/ckeys/handwire_101/info.json +++ b/keyboards/ckeys/handwire_101/info.json @@ -1,13 +1,33 @@ { - "keyboard_name": "cKeys Handwire 101", - "url": "https://ckeys.org/slides/handwire/", - "maintainer": "brandenbyers", - "width": 4, - "height": 4, - "layouts": { - "LAYOUT_ortho_4x4": { - "key_count": 16, - "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}] + "keyboard_name": "cKeys Handwire 101", + "url": "https://ckeys.org/slides/handwire/", + "maintainer": "brandenbyers", + "layout_aliases": { + "LAYOUT": "LAYOUT_ortho_4x4" + }, + "layouts": { + "LAYOUT_ortho_4x4": { + "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} + ] + } } - } } diff --git a/keyboards/ckeys/handwire_101/keymaps/default/config.h b/keyboards/ckeys/handwire_101/keymaps/default/config.h deleted file mode 100755 index 9935accb02dd..000000000000 --- a/keyboards/ckeys/handwire_101/keymaps/default/config.h +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -// Add overrides here diff --git a/keyboards/ckeys/handwire_101/keymaps/default/keymap.c b/keyboards/ckeys/handwire_101/keymaps/default/keymap.c index 8c65406ddb7f..fdca99fd0726 100755 --- a/keyboards/ckeys/handwire_101/keymaps/default/keymap.c +++ b/keyboards/ckeys/handwire_101/keymaps/default/keymap.c @@ -1,177 +1,191 @@ +/* Copyright 2019 Branden Byers + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #include QMK_KEYBOARD_H enum layers { - _BASE, // base layer - _LAYERS, // layer of all layers - _MUSIC, // music mode - _MUSIC_4_LIFE, // music mode until unplugged - _MOUSE, // mousekeys - _TERMINAL, // terminal - _ADMIN // admin duties + _BASE, // base layer + _LAYERS, // layer of all layers + _MUSIC, // music mode + _MUSIC_4_LIFE, // music mode until unplugged + _MOUSE, // mousekeys + _TERMINAL, // terminal + _ADMIN // admin duties }; enum custom_keycodes { - TERM_ABOUT = SAFE_RANGE, - TERM_PRINT, - TERM_FLUSH, - TERM_HELP, - CKEYS_ABOUT, + TERM_ABOUT = SAFE_RANGE, + TERM_PRINT, + TERM_FLUSH, + TERM_HELP, + CKEYS_ABOUT, }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* BASE (numpad) - * ,-----------------------. - * | 7 | 8 | 9 | / | <-- Hold for LAYERS - * |-----+-----+-----+-----| - * | 4 | 5 | 6 | * | - * |-----+-----+-----+-----| - * | 1 | 2 | 3 | - | - * |-----+-----+-----+-----| - * | 0 | . | = | + | - * `---------------------- ' - */ - [_BASE] = LAYOUT( - KC_KP_7, KC_KP_8, KC_KP_9, LT(MO(_LAYERS), KC_PSLS), \ - KC_KP_4, KC_KP_5, KC_KP_6, KC_PAST, \ - KC_KP_1, KC_KP_2, KC_KP_3, KC_PMNS, \ - KC_KP_0, KC_KP_DOT, KC_KP_EQUAL, KC_PPLS \ - ), + * ,-----------------------. + * | 7 | 8 | 9 | / | <-- Hold for LAYERS + * |-----+-----+-----+-----| + * | 4 | 5 | 6 | * | + * |-----+-----+-----+-----| + * | 1 | 2 | 3 | - | + * |-----+-----+-----+-----| + * | 0 | . | = | + | + * `-----------------------' + */ + [_BASE] = LAYOUT_ortho_4x4( + KC_P7, KC_P8, KC_P9, LT(_LAYERS, KC_PSLS), + KC_P4, KC_P5, KC_P6, KC_PAST, + KC_P1, KC_P2, KC_P3, KC_PMNS, + KC_P0, KC_PDOT, KC_PEQL, KC_PPLS + ), /* LAYERS - * ,---------------------------. - * | MUSIC | | | X | - * |---------+-----+-----+-----| - * | MOUSE | | | | - * |---------+-----+-----+-----| - * |TERMINAL | | | | - * |---------+-----+-----+-----| - * | ADMIN | | | | - * `---------------------------' - */ - [_LAYERS] = LAYOUT( - TG(_MUSIC), _______, _______, _______, \ - TG(_MOUSE), _______, _______, _______, \ - TG(_TERMINAL), _______, _______, _______, \ - TG(_ADMIN), _______, _______, _______\ - ), + * ,---------------------------. + * | MUSIC | | | X | + * |---------+-----+-----+-----| + * | MOUSE | | | | + * |---------+-----+-----+-----| + * |TERMINAL | | | | + * |---------+-----+-----+-----| + * | ADMIN | | | | + * `---------------------------' + */ + [_LAYERS] = LAYOUT_ortho_4x4( + TG(_MUSIC), _______, _______, _______, + TG(_MOUSE), _______, _______, _______, + TG(_TERMINAL), _______, _______, _______, + TG(_ADMIN), _______, _______, _______ + ), /* MUSIC - * ,-----------------------. - * | X | | | X | - * |-----+-----+-----+-----| - * | | | |4EVER| - * |-----+-----+-----+-----| - * | OFF | | | | - * |-----+-----+-----+-----| - * | ON | | |MODES| - * `---------------------- ' - */ - // TODO: Make this music layer the one to jump to other music layers (different octaves) - [_MUSIC] = LAYOUT( - _______, _______, _______, _______, \ - _______, _______, _______, TG(_MUSIC_4_LIFE), \ - MU_OFF, _______, _______, _______, \ - MU_ON, _______, _______, MU_MOD \ - ), + * ,-----------------------. + * | X | | | X | + * |-----+-----+-----+-----| + * | | | |4EVER| + * |-----+-----+-----+-----| + * | OFF | | | | + * |-----+-----+-----+-----| + * | ON | | |MODES| + * `-----------------------' + */ + // TODO: Make this music layer the one to jump to other music layers (different octaves) + [_MUSIC] = LAYOUT_ortho_4x4( + _______, _______, _______, _______, + _______, _______, _______, TG(_MUSIC_4_LIFE), + MU_OFF, _______, _______, _______, + MU_ON, _______, _______, MU_MOD + ), /* MUSIC_4_LIFE - * ,-----------------------. - * | ♫ | ♫ | ♫ | ♫ | - * |-----+-----+-----+-----| - * | ♫ | ♫ | ♫ | ♫ | - * |-----+-----+-----+-----| - * | ♫ | ♫ | ♫ | ♫ | - * |-----+-----+-----+-----| - * | ♫ | ♫ | ♫ | ♫ | - * `---------------------- ' - */ - [_MUSIC_4_LIFE] = LAYOUT( - KC_M, KC_M, KC_M, KC_M, \ - KC_M, KC_M, KC_M, KC_M, \ - KC_M, KC_M, KC_M, KC_M, \ - KC_M, KC_M, KC_M, KC_M \ - ), + * ,-----------------------. + * | ♫ | ♫ | ♫ | ♫ | + * |-----+-----+-----+-----| + * | ♫ | ♫ | ♫ | ♫ | + * |-----+-----+-----+-----| + * | ♫ | ♫ | ♫ | ♫ | + * |-----+-----+-----+-----| + * | ♫ | ♫ | ♫ | ♫ | + * `-----------------------' + */ + [_MUSIC_4_LIFE] = LAYOUT_ortho_4x4( + KC_M, KC_M, KC_M, KC_M, + KC_M, KC_M, KC_M, KC_M, + KC_M, KC_M, KC_M, KC_M, + KC_M, KC_M, KC_M, KC_M + ), /* MOUSE - * ,-------------------------------------------------. - * | BUTTON 5 | | SCROLL UP | X | - * |-----------+-----------+------------+------------| - * | X |LEFT CLICK | UP |RIGHT CLICK | - * |-----------+-----------+------------+------------| - * | BUTTON 4 | LEFT | DOWN | RIGHT | - * |-----------+-----------+------------+------=-----| - * | BUTTON 3 |SCROLL LEFT|SCROLL DOWN |SCROLL RIGHT| - * `-------------------------------------------------' - */ - [_MOUSE] = LAYOUT( - KC_MS_BTN5, _______, KC_MS_WH_UP, _______, \ - _______, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, \ - KC_MS_BTN4, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, \ - KC_MS_BTN3, KC_MS_WH_LEFT, KC_MS_WH_DOWN, KC_MS_WH_RIGHT \ - ), + * ,-------------------------------------------------. + * | BUTTON 5 | | SCROLL UP | X | + * |-----------+-----------+------------+------------| + * | X |LEFT CLICK | UP |RIGHT CLICK | + * |-----------+-----------+------------+------------| + * | BUTTON 4 | LEFT | DOWN | RIGHT | + * |-----------+-----------+------------+------=-----| + * | BUTTON 3 |SCROLL LEFT|SCROLL DOWN |SCROLL RIGHT| + * `-------------------------------------------------' + */ + [_MOUSE] = LAYOUT_ortho_4x4( + KC_BTN5, _______, KC_WH_U, _______, + _______, KC_BTN1, KC_MS_U, KC_BTN2, + KC_BTN4, KC_MS_L, KC_MS_D, KC_MS_R, + KC_BTN3, KC_WH_L, KC_WH_D, KC_WH_R + ), /* TERMINAL - * ,---------------------------------------. - * | |ABOUT| | X | - * |------------+-----+----------+---------| - * |TERMINAL OFF|PRINT| | | - * |------------+-----+----------+---------| - * | X |FLUSH| | | - * |------------+-----+----------+---------| - * |TERMINAL ON |HELP | | | - * `--------=======------------------------' - */ - [_TERMINAL] = LAYOUT( - _______, TERM_ABOUT, _______, _______, \ - TERM_OFF, TERM_PRINT, _______, _______, \ - _______, TERM_FLUSH, _______, _______, \ - TERM_ON, TERM_HELP , _______, _______\ - ), + * ,---------------------------------------. + * | |ABOUT| | X | + * |------------+-----+----------+---------| + * |TERMINAL OFF|PRINT| | | + * |------------+-----+----------+---------| + * | X |FLUSH| | | + * |------------+-----+----------+---------| + * |TERMINAL ON |HELP | | | + * `--------=======------------------------' + */ + [_TERMINAL] = LAYOUT_ortho_4x4( + _______, TERM_ABOUT, _______, _______, + TERM_OFF, TERM_PRINT, _______, _______, + _______, TERM_FLUSH, _______, _______, + TERM_ON, TERM_HELP , _______, _______ + ), /* ADMIN - * ,-----------------------------------------. - * | RESET | | | X | - * |------------+-----+-----------+----------| - * |ABOUT CKEYS | | | | - * |------------+-----+-----------+----------| - * | | |CLICKY UP |CLICKY OFF| - * |------------+-----+-----------+----------| - * | X | |CLICKY DOWN|CLICKY ON | - * `-----------------------------------------' - */ - [_ADMIN] = LAYOUT( - RESET, _______, _______, _______, \ - CKEYS_ABOUT, _______, _______, _______, \ - _______, _______, _______, CK_OFF, \ - _______, _______, _______, CK_ON \ - ), + * ,-----------------------------------------. + * | RESET | | | X | + * |------------+-----+-----------+----------| + * |ABOUT CKEYS | | | | + * |------------+-----+-----------+----------| + * | | |CLICKY UP |CLICKY OFF| + * |------------+-----+-----------+----------| + * | X | |CLICKY DOWN|CLICKY ON | + * `-----------------------------------------' + */ + [_ADMIN] = LAYOUT_ortho_4x4( + RESET, _______, _______, _______, + CKEYS_ABOUT, _______, _______, _______, + _______, _______, _______, CK_OFF, + _______, _______, _______, CK_ON + ), }; bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case TERM_ABOUT: - if (record->event.pressed) { - // when keycode TERM_ABOUT is pressed - SEND_STRING("about"SS_TAP(X_ENTER)); - } else { - // when keycode TERM_ABOUT is released - } - break; - case TERM_PRINT: - if (record->event.pressed) { - SEND_STRING("print"SS_TAP(X_ENTER)); - } else { } - break; - case TERM_FLUSH: - if (record->event.pressed) { - SEND_STRING("flush"SS_TAP(X_ENTER)); - } else { } - break; - case TERM_HELP: - if (record->event.pressed) { - SEND_STRING("help"SS_TAP(X_ENTER)); - } else { } - break; - case CKEYS_ABOUT: - if (record->event.pressed) { - SEND_STRING("https://cKeys.org"SS_TAP(X_ENTER)"Making people smile one keyboard at a time."SS_TAP(X_ENTER)"cKeys is a volunteer-run 501(c)(3) nonprofit organization."SS_TAP(X_ENTER)); - } else { } - break; - } - return true; + switch (keycode) { + case TERM_ABOUT: + if (record->event.pressed) { + // when keycode TERM_ABOUT is pressed + SEND_STRING("about\n"); + } + break; + case TERM_PRINT: + if (record->event.pressed) { + SEND_STRING("print\n"); + } + break; + case TERM_FLUSH: + if (record->event.pressed) { + SEND_STRING("flush\n"); + } + break; + case TERM_HELP: + if (record->event.pressed) { + SEND_STRING("help\n"); + } + break; + case CKEYS_ABOUT: + if (record->event.pressed) { + SEND_STRING("https://cKeys.org\nMaking people smile one keyboard at a time.\ncKeys is a volunteer-run 501(c)(3) nonprofit organization.\n"); + } + break; + } + return true; }; diff --git a/keyboards/ckeys/handwire_101/rules.mk b/keyboards/ckeys/handwire_101/rules.mk index 715738a0cd48..b29b082bead7 100755 --- a/keyboards/ckeys/handwire_101/rules.mk +++ b/keyboards/ckeys/handwire_101/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 TERMINAL_ENABLE = yes -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # 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 on B7 by default -#MIDI_ENABLE = yes # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality AUDIO_ENABLE = no # Audio output diff --git a/keyboards/ckeys/nakey/config.h b/keyboards/ckeys/nakey/config.h index 9fa59689dba2..26ba86e14679 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -91,54 +90,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -156,25 +107,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - -#endif diff --git a/keyboards/ckeys/nakey/info.json b/keyboards/ckeys/nakey/info.json index 093e61d0e051..2f939be5783d 100644 --- a/keyboards/ckeys/nakey/info.json +++ b/keyboards/ckeys/nakey/info.json @@ -2,8 +2,6 @@ "keyboard_name": "naKey", "url": "", "maintainer": "qmk", - "width": 4, - "height": 5, "layouts": { "LAYOUT_numpad_5x4": { "layout": [{"label":"Num Lock", "x":0, "y":0}, {"label":"/", "x":1, "y":0}, {"label":"*", "x":2, "y":0}, {"label":"-", "x":3, "y":0}, {"label":"7", "x":0, "y":1}, {"label":"8", "x":1, "y":1}, {"label":"9", "x":2, "y":1}, {"label":"4", "x":0, "y":2}, {"label":"5", "x":1, "y":2}, {"label":"6", "x":2, "y":2}, {"label":"+", "x":3, "y":1, "h":2}, {"label":"1", "x":0, "y":3}, {"label":"2", "x":1, "y":3}, {"label":"3", "x":2, "y":3}, {"label":"0", "x":0, "y":4, "w":2}, {"label":".", "x":2, "y":4}, {"label":"Enter", "x":3, "y":3, "h":2}] diff --git a/keyboards/ckeys/nakey/keymaps/default/keymap.c b/keyboards/ckeys/nakey/keymaps/default/keymap.c index be147b2d88c8..4ecacc731fe7 100644 --- a/keyboards/ckeys/nakey/keymaps/default/keymap.c +++ b/keyboards/ckeys/nakey/keymaps/default/keymap.c @@ -24,19 +24,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_P0, KC_PDOT, KC_PENT \ ), }; - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/ckeys/nakey/nakey.c b/keyboards/ckeys/nakey/nakey.c index ba2fb90ebe40..84c0b03ff66f 100644 --- a/keyboards/ckeys/nakey/nakey.c +++ b/keyboards/ckeys/nakey/nakey.c @@ -13,30 +13,3 @@ * along with this program. If not, see . */ #include "nakey.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/ckeys/nakey/nakey.h b/keyboards/ckeys/nakey/nakey.h index bbf531fb680a..bdb26afa26b4 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 . */ -#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/nakey/rules.mk b/keyboards/ckeys/nakey/rules.mk index 6910997e8e3b..7df4f6eb39a6 100644 --- a/keyboards/ckeys/nakey/rules.mk +++ b/keyboards/ckeys/nakey/rules.mk @@ -2,31 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = halfkay # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output LAYOUTS = numpad_5x4 diff --git a/keyboards/ckeys/obelus/config.h b/keyboards/ckeys/obelus/config.h index 25bc1db03c1f..00e224c206b4 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -86,54 +85,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -157,5 +108,3 @@ along with this program. If not, see . #define AUDIO_PIN C6 #define STARTUP_SONG SONG(STARTUP_SOUND) #endif - -#endif diff --git a/keyboards/ckeys/obelus/info.json b/keyboards/ckeys/obelus/info.json index 70d2f7e7e571..f930f65bc52e 100644 --- a/keyboards/ckeys/obelus/info.json +++ b/keyboards/ckeys/obelus/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Obelus", "url": "", "maintainer": "qmk", - "width": 4, - "height": 4, "layouts": { "LAYOUT_ortho_4x4": { - "key_count": 16, "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}] } } diff --git a/keyboards/ckeys/obelus/obelus.c b/keyboards/ckeys/obelus/obelus.c index 2905f0724df0..fc6b961f2a69 100644 --- a/keyboards/ckeys/obelus/obelus.c +++ b/keyboards/ckeys/obelus/obelus.c @@ -9,20 +9,3 @@ void matrix_init_kb(void) { matrix_init_user(); } - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - led_set_user(usb_led); -} diff --git a/keyboards/ckeys/obelus/obelus.h b/keyboards/ckeys/obelus/obelus.h index 371b79df2016..76ff4f1a9f59 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/ckeys/obelus/rules.mk b/keyboards/ckeys/obelus/rules.mk index 706cfd61f9a6..94d56a4b0504 100644 --- a/keyboards/ckeys/obelus/rules.mk +++ b/keyboards/ckeys/obelus/rules.mk @@ -2,31 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = yes # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = yes # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +MIDI_ENABLE = yes # MIDI support +AUDIO_ENABLE = yes # Audio output LAYOUTS = ortho_4x4 diff --git a/keyboards/ckeys/thedora/config.h b/keyboards/ckeys/thedora/config.h index c7557aa62d6d..bfc314173176 100755 --- a/keyboards/ckeys/thedora/config.h +++ b/keyboards/ckeys/thedora/config.h @@ -62,26 +62,6 @@ #define DAC_SAMPLE_MAX 65535U -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* * Force NKRO * @@ -103,54 +83,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - // Audio Click // Music Mode Polyphony diff --git a/keyboards/ckeys/thedora/info.json b/keyboards/ckeys/thedora/info.json index a0daa5b21ec6..631da8f26e5e 100644 --- a/keyboards/ckeys/thedora/info.json +++ b/keyboards/ckeys/thedora/info.json @@ -2,36 +2,33 @@ "keyboard_name": "The Dora Board.", "url": "https://ckeys.org/slides/exboard", "maintainer": "brandenbyers", - "width": 4, - "height": 4, "layouts": { - "LAYOUT_ortho_4x5": { - "key_count": 21, + "LAYOUT": { "layout": [ {"label":"k00", "x":1, "y":0}, {"label":"k01", "x":2, "y":0}, {"label":"k02", "x":3, "y":0}, {"label":"k03", "x":4, "y":0}, {"label":"k04", "x":5, "y":0}, - {"label":"k05 (Rotary Push)", "x":0, "y":3}, - {"label":"k06", "x":1, "y":1}, - {"label":"k07", "x":2, "y":1}, - {"label":"k08", "x":3, "y":1}, - {"label":"k09", "x":4, "y":1}, - {"label":"k10", "x":5, "y":1}, + {"label":"k10", "x":1, "y":1}, + {"label":"k11", "x":2, "y":1}, + {"label":"k12", "x":3, "y":1}, + {"label":"k13", "x":4, "y":1}, + {"label":"k14", "x":5, "y":1}, - {"label":"k11", "x":1, "y":2}, - {"label":"k12", "x":2, "y":2}, - {"label":"k13", "x":3, "y":2}, - {"label":"k14", "x":4, "y":2}, - {"label":"k15", "x":5, "y":2}, + {"label":"k20", "x":1, "y":2}, + {"label":"k21", "x":2, "y":2}, + {"label":"k22", "x":3, "y":2}, + {"label":"k23", "x":4, "y":2}, + {"label":"k24", "x":5, "y":2}, - {"label":"k16", "x":1, "y":3}, - {"label":"k17", "x":2, "y":3}, - {"label":"k18", "x":3, "y":3}, - {"label":"k19", "x":4, "y":3}, - {"label":"k20", "x":5, "y":3} + {"label":"k05 (Rotary Push)", "x":0, "y":3}, + {"label":"k30", "x":1, "y":3}, + {"label":"k31", "x":2, "y":3}, + {"label":"k32", "x":3, "y":3}, + {"label":"k33", "x":4, "y":3}, + {"label":"k34", "x":5, "y":3} ] } } diff --git a/keyboards/ckeys/thedora/keymaps/default/config.h b/keyboards/ckeys/thedora/keymaps/default/config.h deleted file mode 100755 index 507a9ccdcae5..000000000000 --- a/keyboards/ckeys/thedora/keymaps/default/config.h +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -// Add overrides here diff --git a/keyboards/ckeys/thedora/keymaps/default/keymap.c b/keyboards/ckeys/thedora/keymaps/default/keymap.c index 783475eb0a40..e2ce9b0d732e 100755 --- a/keyboards/ckeys/thedora/keymaps/default/keymap.c +++ b/keyboards/ckeys/thedora/keymaps/default/keymap.c @@ -1,156 +1,172 @@ +/* Copyright 2019 Branden Byers (@brandenbyers) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #include QMK_KEYBOARD_H enum layers { - _BASE, // base layer - _MUSIC, // music mode - _MIDI, // midi mode - _MOUSE, // mouse keys - _ADMIN // admin duties + _BASE, // base layer + _MUSIC, // music mode + _MIDI, // midi mode + _MOUSE, // mouse keys + _ADMIN // admin duties }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -// ┌─────────┬─────────┬─────────┬─────────┬─────────┐ -// │ │ │ │ │ │ -// │ 7 │ 8 │ 9 │ / │ ADMIN │ -// ROTORY │ │ │ │ │ │ -// RIGHT: ├─────────┼─────────┼─────────┼─────────┼─────────┤ -// VOL UP │ │ │ │ │ │ -// │ 4 │ 5 │ 6 │ * │ MOUSE │ -// ROTORY │ │ │ │ │ │ -// LEFT: ├─────────┼─────────┼─────────┼─────────┼─────────┤ -// VOL DOWN │ │ │ │ │ │ -// │ 1 │ 2 │ 3 │ - │ MIDI │ -// │ │ │ │ │ │ -// ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ -// │ TOGGLE │ │ │ │ │ │ -// │ MUSIC │ 0 │ . │ = │ + │ MUSIC │ -// │ │ │ │ │ │ │ -// └─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘ + // ┌─────────┬─────────┬─────────┬─────────┬─────────┐ + // │ │ │ │ │ │ + // │ 7 │ 8 │ 9 │ / │ ADMIN │ + // ROTARY │ │ │ │ │ │ + // RIGHT: ├─────────┼─────────┼─────────┼─────────┼─────────┤ + // PAGE DOWN│ │ │ │ │ │ + // │ 4 │ 5 │ 6 │ * │ MOUSE │ + // ROTARY │ │ │ │ │ │ + // LEFT: ├─────────┼─────────┼─────────┼─────────┼─────────┤ + // PAGE UP │ │ │ │ │ │ + // │ 1 │ 2 │ 3 │ - │ MIDI │ + // │ │ │ │ │ │ + // ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ + // │ TOGGLE │ │ │ │ │ │ + // │ MUSIC │ 0 │ . │ = │ + │ MUSIC │ + // │ │ │ │ │ │ │ + // └─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘ - [_BASE] = LAYOUT( - KC_KP_7, KC_KP_8, KC_KP_9, KC_PSLS, MO(_ADMIN), MU_TOG, - KC_KP_4, KC_KP_5, KC_KP_6, KC_PAST, TG(_MOUSE), - KC_KP_1, KC_KP_2, KC_KP_3, KC_PMNS, TG(_MIDI), - KC_KP_0, KC_KP_DOT, KC_KP_EQUAL, KC_PPLS, MO(_MUSIC) - ), + [_BASE] = LAYOUT( + KC_P7, KC_P8 , KC_P9 , KC_PSLS, MO(_ADMIN), + KC_P4, KC_P5 , KC_P6 , KC_PAST, TG(_MOUSE), + KC_P1, KC_P2 , KC_P3 , KC_PMNS, TG(_MIDI), + MU_TOG, KC_P0, KC_PDOT, KC_PEQL, KC_PPLS, MO(_MUSIC) + ), -// MUSIC LAYER - // ┌─────────┬─────────┬─────────┬─────────┬─────────┐ - // │ │ │ │ │ │ - // │ │ │ │ │ │ - // ROTORY │ │ │ │ │ │ - // RIGHT: ├─────────┼─────────┼─────────┼─────────┼─────────┤ - // PAGE UP │ │ │ │ │ │ - // │ │ │ │ │ │ - // ROTORY │ │ │ │ │ │ - // LEFT: ├─────────┼─────────┼─────────┼─────────┼─────────┤ - // PAGE DOWN│ │ │ │ │ │ - // │ │ │ │ MODE │ │ - // │ │ │ │ │ │ - //┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ - //│ │ │ │ │ │ │ - //│ │ RECORD │ STOP │ │ PLAY │ │ - //│ │ │ │ │ │ │ - //└─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘ + // MUSIC LAYER + // ┌─────────┬─────────┬─────────┬─────────┬─────────┐ + // │ │ │ │ │ │ + // │ │ │ │ │ │ + // ROTARY │ │ │ │ │ │ + // RIGHT: ├─────────┼─────────┼─────────┼─────────┼─────────┤ + // PAGE DOWN│ │ │ │ │ │ + // │ │ │ │ │ │ + // ROTARY │ │ │ │ │ │ + // LEFT: ├─────────┼─────────┼─────────┼─────────┼─────────┤ + // PAGE UP │ │ │ │ │ │ + // │ │ │ │ MODE │ │ + // │ │ │ │ │ │ + // ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ + // │ │ │ │ │ │ │ + // │ │ RECORD │ STOP │ │ PLAY │ │ + // │ │ │ │ │ │ │ + // └─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘ - [_MUSIC] = LAYOUT( - _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, - _______, _______, _______, _______, MU_MOD, - KC_LCTL, KC_LALT, _______, KC_LGUI, _______ - ), + [_MUSIC] = LAYOUT( + _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, + _______, _______, _______, _______, MU_MOD, + _______, KC_LCTL, KC_LALT, _______, KC_LGUI, _______ + ), -// MIDI LAYER -// ┌─────────┬─────────┬─────────┬─────────┬─────────┐ -// │ │ │ │ │ │ -// │ D♯ │ E │ F │ F♯ │ G │ -// ROTORY │ │ │ │ │ │ -// RIGHT: ├─────────┼─────────┼─────────┼─────────┼─────────┤ -// PAGE UP │ │ │ │ │ │ -// │ A♯ │ B │ C │ C♯ │ D │ -// ROTORY │ │ │ │ │ │ -// LEFT: ├─────────┼─────────┼─────────┼─────────┼─────────┤ -// PAGE DOWN│ │ │ │ │ │ -// │ F │ F♯ │ G │ G♯ │ A │ -// │ │ │ │ │ │ -// ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ -// │ │ │ │ │ │ │ -// │ │ C │ C♯ │ D │ D♯ │ E │ -// │ │ │ │ │ │ │ -// └─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘ + // MIDI LAYER + // ┌─────────┬─────────┬─────────┬─────────┬─────────┐ + // │ │ │ │ │ │ + // │ D♯ │ E │ F │ F♯ │ G │ + // ROTARY │ │ │ │ │ │ + // RIGHT: ├─────────┼─────────┼─────────┼─────────┼─────────┤ + // PAGE DOWN│ │ │ │ │ │ + // │ A♯ │ B │ C │ C♯ │ D │ + // ROTARY │ │ │ │ │ │ + // LEFT: ├─────────┼─────────┼─────────┼─────────┼─────────┤ + // PAGE UP │ │ │ │ │ │ + // │ F │ F♯ │ G │ G♯ │ A │ + // │ │ │ │ │ │ + // ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ + // │ │ │ │ │ │ │ + // │ │ C │ C♯ │ D │ D♯ │ E │ + // │ │ │ │ │ │ │ + // └─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘ - [_MIDI] = LAYOUT( - MI_Ds_3, MI_E_3, MI_F_3, MI_Fs_3, MI_G_3, _______, - MI_As_2, MI_B_2, MI_C_3, MI_Cs_3, MI_D_3, - MI_F_2, MI_Fs_2, MI_G_2, MI_Gs_2, TG(_MIDI), - MI_C_2, MI_Cs_2, MI_D_2, MI_Ds_2, MI_E_2 - ), + [_MIDI] = LAYOUT( + MI_Ds_3, MI_E_3, MI_F_3, MI_Fs_3, MI_G_3, + MI_As_2, MI_B_2, MI_C_3, MI_Cs_3, MI_D_3, + MI_F_2, MI_Fs_2, MI_G_2, MI_Gs_2, TG(_MIDI), + _______, MI_C_2, MI_Cs_2, MI_D_2, MI_Ds_2, MI_E_2 + ), -// MOUSE LAYER -// ┌─────────┬─────────┬─────────┬─────────┬─────────┐ -// │ │ │ │ │ │ -// │ BTN 5 │ │ WHEEL │ │ │ -// ROTORY │ │ │ UP │ │ │ -// RIGHT: ├─────────┼─────────┼─────────┼─────────┼─────────┤ -// PAGE DOWN│ │ │ │ │ │ -// │ │ LEFT │ MOUSE │ RIGHT │ │ -// ROTORY │ │ CLICK │ UP │ CLICK │ │ -// LEFT: ├─────────┼─────────┼─────────┼─────────┼─────────┤ -// PAGE UP │ │ │ │ │ │ -// │ BTN 4 │ MOUSE │ MOUSE │ MOUSE │ │ -// │ │ LEFT │ DOWN │ RIGHT │ │ -// ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ -// │ │ │ │ │ │ │ -// │ │ BTN 3 │ WHEEL │ WHEEL │ WHEEL │ │ -// │ │ │ LEFT │ DOWN │ RIGHT │ │ -// └─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘ + // MOUSE LAYER + // ┌─────────┬─────────┬─────────┬─────────┬─────────┐ + // │ │ │ │ │ │ + // │ BTN 5 │ │ WHEEL │ │ │ + // ROTARY │ │ │ UP │ │ │ + // RIGHT: ├─────────┼─────────┼─────────┼─────────┼─────────┤ + // PAGE DOWN│ │ │ │ │ │ + // │ │ LEFT │ MOUSE │ RIGHT │ │ + // ROTARY │ │ CLICK │ UP │ CLICK │ │ + // LEFT: ├─────────┼─────────┼─────────┼─────────┼─────────┤ + // PAGE UP │ │ │ │ │ │ + // │ BTN 4 │ MOUSE │ MOUSE │ MOUSE │ │ + // │ │ LEFT │ DOWN │ RIGHT │ │ + // ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ + // │ │ │ │ │ │ │ + // │ │ BTN 3 │ WHEEL │ WHEEL │ WHEEL │ │ + // │ │ │ LEFT │ DOWN │ RIGHT │ │ + // └─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘ - [_MOUSE] = LAYOUT( - KC_MS_BTN5, _______, KC_MS_WH_UP, _______, _______, _______, - _______, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, TG(_MOUSE), - KC_MS_BTN4, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, _______, - KC_MS_BTN3, KC_MS_WH_LEFT, KC_MS_WH_DOWN, KC_MS_WH_RIGHT, _______ - ), + [_MOUSE] = LAYOUT( + KC_BTN5, _______, KC_WH_U, _______, _______, + _______, KC_BTN1, KC_MS_U, KC_BTN2, TG(_MOUSE), + KC_BTN4, KC_MS_L, KC_MS_D, KC_MS_R, _______, + _______, KC_BTN3, KC_WH_L, KC_WH_D, KC_WH_R, _______ + ), -// ADMIN LAYER -// ┌─────────┬─────────┬─────────┬─────────┬─────────┐ -// │ │ │ │ │ │ -// │ RESET │ │ │ │ │ -// ROTORY │ │ │ │ │ │ -// RIGHT: ├─────────┼─────────┼─────────┼─────────┼─────────┤ -// PAGE UP │ │ │ │ │ │ -// │ 4 │ 5 │ 6 │ * │ │ -// ROTORY │ │ │ │ │ │ -// LEFT: ├─────────┼─────────┼─────────┼─────────┼─────────┤ -// PAGE DOWN│ │ │ │ │ │ -// │ 1 │ 2 │ 3 │ │ │ -// │ │ │ │ │ │ -// ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ -// │ │ │ │ │ │ │ -// │ │ 0 │ . │ = │ │ │ -// │ │ │ │ │ │ │ -// └─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘ + // ADMIN LAYER + // ┌─────────┬─────────┬─────────┬─────────┬─────────┐ + // │ │ │ │ │ │ + // │ RESET │ │ │ │ │ + // ROTARY │ │ │ │ │ │ + // RIGHT: ├─────────┼─────────┼─────────┼─────────┼─────────┤ + // PAGE DOWN│ │ │ │ │ │ + // │ 4 │ 5 │ 6 │ * │ │ + // ROTARY │ │ │ │ │ │ + // LEFT: ├─────────┼─────────┼─────────┼─────────┼─────────┤ + // PAGE UP │ │ │ │ │ │ + // │ 1 │ 2 │ 3 │ │ │ + // │ │ │ │ │ │ + // ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ + // │ │ │ │ │ │ │ + // │ │ 0 │ . │ = │ │ │ + // │ │ │ │ │ │ │ + // └─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘ - [_ADMIN] = LAYOUT( - RESET, _______, _______, _______, TG(_ADMIN), _______, - _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______ - ), + [_ADMIN] = LAYOUT( + RESET, _______, _______, _______, TG(_ADMIN), + _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______ + ), }; bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; + return true; }; 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); + if (index == 0) { /* First encoder */ + if (clockwise) { + tap_code(KC_PGDN); + } else { + tap_code(KC_PGUP); + } } - } return true; } diff --git a/keyboards/ckeys/thedora/keymaps/default/readme.md b/keyboards/ckeys/thedora/keymaps/default/readme.md deleted file mode 100755 index 4594bdfe317c..000000000000 --- a/keyboards/ckeys/thedora/keymaps/default/readme.md +++ /dev/null @@ -1 +0,0 @@ -# The default keymap for the cKeys Handwire 101 4x4 keyboard. \ No newline at end of file diff --git a/keyboards/ckeys/thedora/readme.md b/keyboards/ckeys/thedora/readme.md index 991b5df02dc6..26233de3c77e 100755 --- a/keyboards/ckeys/thedora/readme.md +++ b/keyboards/ckeys/thedora/readme.md @@ -4,9 +4,9 @@ A 4x5 keyboard with rotary encoder, QWIIC connector, and header pinouts for easy access to all pins on the Proton C. This keyboard was built for QMK exploration big and small. What will you discover next? -Keyboard Maintainer: [brandenbyers](https://github.com/brandenbyers) -Hardware Supported: theDora -Hardware Availability: [cKeys.org](https://ckeys.org) +* Keyboard Maintainer: [brandenbyers](https://github.com/brandenbyers) +* Hardware Supported: theDora +* Hardware Availability: [cKeys.org](https://ckeys.org) Make example for this keyboard (after setting up your build environment): diff --git a/keyboards/ckeys/thedora/rules.mk b/keyboards/ckeys/thedora/rules.mk index 265e6b347979..9f9cc9ecc692 100755 --- a/keyboards/ckeys/thedora/rules.mk +++ b/keyboards/ckeys/thedora/rules.mk @@ -6,17 +6,18 @@ BOARD = QMK_PROTON_C BOOTLOADER = stm32-dfu # Build Options -# comment out to disable the options. +# change yes to no to disable # -BACKLIGHT_ENABLE = no -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend -NKRO_ENABLE = yes # USB Nkey Rollover -AUDIO_ENABLE = yes -MIDI_ENABLE = yes # MIDI controls -RGBLIGHT_ENABLE = no +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 +# 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 = yes # Audio output + +MIDI_ENABLE = yes # MIDI support ENCODER_ENABLE = yes diff --git a/keyboards/ckeys/thedora/thedora.c b/keyboards/ckeys/thedora/thedora.c index 438320ef1c62..58953f7437ee 100755 --- a/keyboards/ckeys/thedora/thedora.c +++ b/keyboards/ckeys/thedora/thedora.c @@ -1,28 +1,31 @@ -#include "thedora.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - // Turn status LED on - //DDRD |= (1<<6); - //PORTD |= (1<<6); - - matrix_init_user(); -} +/* Copyright 2019 Branden Byers (@brandenbyers) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - return process_record_user(keycode, record); -} +#include "thedora.h" -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - led_set_user(usb_led); +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { + return false; + } + if (index == 0) { + if (clockwise) { + tap_code(KC_PGDN); + } else { + tap_code(KC_PGUP); + } + } + return true; } diff --git a/keyboards/ckeys/thedora/thedora.h b/keyboards/ckeys/thedora/thedora.h index 2c4443c3ad42..5e66f6716680 100755 --- a/keyboards/ckeys/thedora/thedora.h +++ b/keyboards/ckeys/thedora/thedora.h @@ -1,21 +1,37 @@ +/* Copyright 2019 Branden Byers (@brandenbyers) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #pragma once #include "quantum.h" +#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 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 \ + k00, k01, k02, k03, k04, \ + k10, k11, k12, k13, k14, \ + k20, k21, k22, k23, k24, \ + k05, k30, k31, k32, k33, k34 \ ) \ { \ - { k00, k01, k02, k03, k04, k05, }, \ - { k06, k07, k08, k09, k10 }, \ - { k11, k12, k13, k14, k15 }, \ - { k16, k17, k18, k19, k20 } \ + { k00, k01, k02, k03, k04, k05 }, \ + { k10, k11, k12, k13, k14, XXX }, \ + { k20, k21, k22, k23, k24, XXX }, \ + { k30, k31, k32, k33, k34, XXX } \ } - diff --git a/keyboards/ckeys/washington/config.h b/keyboards/ckeys/washington/config.h index 1f4fb8f9d10d..0b7da2782e87 100644 --- a/keyboards/ckeys/washington/config.h +++ b/keyboards/ckeys/washington/config.h @@ -122,59 +122,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -195,26 +142,6 @@ along with this program. If not, see . #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/ckeys/washington/info.json b/keyboards/ckeys/washington/info.json index a956d957e96c..304e4f335421 100644 --- a/keyboards/ckeys/washington/info.json +++ b/keyboards/ckeys/washington/info.json @@ -2,8 +2,6 @@ "keyboard_name": "washington", "url": "https://keypcb.xyz/ViewPage/Washington", "maintainer": "merlin04", - "width": 4.5, - "height": 3, "layouts": { "LAYOUT": { "layout": [{"x":1.5, "y":0}, {"x":2.5, "y":0}, {"x":3.5, "y":0}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":0, "y":0.75}, {"x":0.5, "y":1.75}, {"x":1.5, "y":2}] diff --git a/keyboards/ckeys/washington/keymaps/default/keymap.c b/keyboards/ckeys/washington/keymaps/default/keymap.c index 7adac3c433b9..771905814a12 100644 --- a/keyboards/ckeys/washington/keymaps/default/keymap.c +++ b/keyboards/ckeys/washington/keymaps/default/keymap.c @@ -58,8 +58,8 @@ bool encoder_update_user(uint8_t index, bool clockwise) { return true; } -#ifdef OLED_DRIVER_ENABLE -void oled_task_user(void) { +#ifdef OLED_ENABLE +bool oled_task_user(void) { // Host Keyboard Layer Status oled_write_P(PSTR("Layer: "), false); switch (biton32(layer_state)) { @@ -79,5 +79,6 @@ void oled_task_user(void) { oled_write_P(IS_LED_ON(usb_led, USB_LED_NUM_LOCK) ? PSTR("NUMLCK ") : PSTR(" "), false); oled_write_P(IS_LED_ON(usb_led, USB_LED_CAPS_LOCK) ? PSTR("CAPLCK ") : PSTR(" "), false); oled_write_P(IS_LED_ON(usb_led, USB_LED_SCROLL_LOCK) ? PSTR("SCRLCK ") : PSTR(" "), false); + return false; } #endif diff --git a/keyboards/ckeys/washington/rules.mk b/keyboards/ckeys/washington/rules.mk index 65f6105055e2..08325aa2e9aa 100644 --- a/keyboards/ckeys/washington/rules.mk +++ b/keyboards/ckeys/washington/rules.mk @@ -2,31 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes # Enable support for encoders -OLED_DRIVER_ENABLE = yes # Enable support for OLED displays +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enable support for OLED displays diff --git a/keyboards/claw44/keymaps/oled/keymap.c b/keyboards/claw44/keymaps/oled/keymap.c index 5a590341679c..1778ac616728 100644 --- a/keyboards/claw44/keymaps/oled/keymap.c +++ b/keyboards/claw44/keymaps/oled/keymap.c @@ -84,7 +84,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE void render_layer_state(void) { switch (get_highest_layer(layer_state)) { @@ -140,7 +140,7 @@ void set_keylog(uint16_t keycode, keyrecord_t *record) { const char *read_keylog(void) { return keylog_str; } const char *read_keylogs(void) { return keylogs_str; } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { render_layer_state(); oled_write_ln(read_keylog(), false); @@ -148,6 +148,7 @@ void oled_task_user(void) { } else { render_logo(); } + return false; } bool process_record_user(uint16_t keycode, keyrecord_t *record) { diff --git a/keyboards/claw44/keymaps/oled/rules.mk b/keyboards/claw44/keymaps/oled/rules.mk index c582662134c4..d34d066ded93 100644 --- a/keyboards/claw44/keymaps/oled/rules.mk +++ b/keyboards/claw44/keymaps/oled/rules.mk @@ -1 +1,2 @@ -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/claw44/rev1/info.json b/keyboards/claw44/rev1/info.json index 3132ca817f73..3301e7d2ec86 100644 --- a/keyboards/claw44/rev1/info.json +++ b/keyboards/claw44/rev1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Claw44 rev1", "url": "", "maintainer": "yfuku", - "width": 17.5, - "height": 4.5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/claw44/rev1/rules.mk b/keyboards/claw44/rev1/rules.mk index b1af22c59a2a..1c6d7700296a 100644 --- a/keyboards/claw44/rev1/rules.mk +++ b/keyboards/claw44/rev1/rules.mk @@ -1,19 +1,14 @@ # Build Options -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. SWAP_HANDS_ENABLE = no # Enable one-hand typing -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - -OLED_DRIVER_ENABLE = no # Add OLED displays support +OLED_ENABLE = no # Add OLED displays support SPLIT_KEYBOARD = yes diff --git a/keyboards/claw44/rules.mk b/keyboards/claw44/rules.mk index f4d44b23b799..d7b80bf4934e 100644 --- a/keyboards/claw44/rules.mk +++ b/keyboards/claw44/rules.mk @@ -2,31 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend DEFAULT_FOLDER = claw44/rev1 diff --git a/keyboards/clawsome/bookerboard/info.json b/keyboards/clawsome/bookerboard/info.json index a0eb1b59809b..3e1eae3d2145 100644 --- a/keyboards/clawsome/bookerboard/info.json +++ b/keyboards/clawsome/bookerboard/info.json @@ -1,12 +1,9 @@ { "keyboard_name": "bookerboard", "url": "", - "maintainer": "qmk", - "width": 3, - "height": 4, + "maintainer": "AlisGraveNil", "layouts": { "LAYOUT": { - "key_count": 12, "layout": [ {"label":"K00 (B5,B6)", "x":0, "y":0}, {"label":"K01 (B5,B2)", "x":1, "y":0}, @@ -23,6 +20,4 @@ ] } } - ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/" } - diff --git a/keyboards/clawsome/bookerboard/rules.mk b/keyboards/clawsome/bookerboard/rules.mk index 92a34279957c..ccbdffd07534 100644 --- a/keyboards/clawsome/bookerboard/rules.mk +++ b/keyboards/clawsome/bookerboard/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/clawsome/coupe/info.json b/keyboards/clawsome/coupe/info.json index 6c930922a5cf..5c6654425268 100644 --- a/keyboards/clawsome/coupe/info.json +++ b/keyboards/clawsome/coupe/info.json @@ -1,9 +1,7 @@ { "keyboard_name": "Coupe", "url": "www.clawboards.xyz", - "maintainer": "AAClawson (AlisGraveNil)", - "width": 15, - "height": 5, + "maintainer": "AlisGraveNil", "layouts": { "LAYOUT_60_ansi": { "layout": [ diff --git a/keyboards/clawsome/coupe/rules.mk b/keyboards/clawsome/coupe/rules.mk index dba2a63d44b3..bef690fe5b2c 100644 --- a/keyboards/clawsome/coupe/rules.mk +++ b/keyboards/clawsome/coupe/rules.mk @@ -7,20 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = 60_ansi diff --git a/keyboards/clawsome/doodle/info.json b/keyboards/clawsome/doodle/info.json index aa1b657d7af0..df9ca138343b 100644 --- a/keyboards/clawsome/doodle/info.json +++ b/keyboards/clawsome/doodle/info.json @@ -1,9 +1,7 @@ { "keyboard_name": "doodle", "url": "www.clawboards.xyz", - "maintainer": "AAClawson (AlisGraveNil)", - "width": 3, - "height": 2, + "maintainer": "AlisGraveNil", "layouts": { "LAYOUT": { "layout": [ @@ -17,4 +15,3 @@ } } } - diff --git a/keyboards/clawsome/doodle/rules.mk b/keyboards/clawsome/doodle/rules.mk index 64d67049f9a6..14190d2fda8b 100644 --- a/keyboards/clawsome/doodle/rules.mk +++ b/keyboards/clawsome/doodle/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output \ No newline at end of file diff --git a/keyboards/clawsome/fightpad/info.json b/keyboards/clawsome/fightpad/info.json index b5ad80effb3a..5d52c0ce87be 100644 --- a/keyboards/clawsome/fightpad/info.json +++ b/keyboards/clawsome/fightpad/info.json @@ -1,9 +1,7 @@ { "keyboard_name": "FightPad", "url": "www.clawboards.xyz", - "maintainer": "AAClawson (AlisGraveNil)", - "width": 8, - "height": 2, + "maintainer": "AlisGraveNil", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/clawsome/fightpad/rules.mk b/keyboards/clawsome/fightpad/rules.mk index fd76a52478f7..bc3a9f5e3582 100644 --- a/keyboards/clawsome/fightpad/rules.mk +++ b/keyboards/clawsome/fightpad/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/clawsome/gamebuddy/config.h b/keyboards/clawsome/gamebuddy/config.h deleted file mode 100644 index d5fad415f9eb..000000000000 --- a/keyboards/clawsome/gamebuddy/config.h +++ /dev/null @@ -1,36 +0,0 @@ -/* -Copyright 2020 AAClawson (AlisGraveNil) - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -#include "config_common.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x17B9 -#define DEVICE_VER 0x0001 -#define MANUFACTURER AlisGraveNil -#define PRODUCT GameBuddy - -/* key matrix size */ -#define MATRIX_ROWS 5 -#define MATRIX_COLS 7 - -#define MATRIX_ROW_PINS { D1, D0, E6, B3, B2 } -#define MATRIX_COL_PINS { F5, F6, F7, B1, C6, D7, B6 } - -#define DIODE_DIRECTION COL2ROW diff --git a/keyboards/clawsome/gamebuddy/gamebuddy.c b/keyboards/clawsome/gamebuddy/gamebuddy.c deleted file mode 100644 index 464bdef8926c..000000000000 --- a/keyboards/clawsome/gamebuddy/gamebuddy.c +++ /dev/null @@ -1,16 +0,0 @@ -/* Copyright 2020 AAClawson (AlisGraveNil) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include "gamebuddy.h" \ No newline at end of file diff --git a/keyboards/clawsome/gamebuddy/info.json b/keyboards/clawsome/gamebuddy/info.json deleted file mode 100644 index 5562f0615efe..000000000000 --- a/keyboards/clawsome/gamebuddy/info.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "keyboard_name": "GameBuddy", - "url": "", - "maintainer": "qmk", - "width": 7, - "height": 5, - "layouts": { - "LAYOUT": { - "layout": [ - {"label":"K00 (D1,F5)", "x":0, "y":0}, - {"label":"K01 (D1,F6)", "x":1, "y":0}, - {"label":"K02 (D1,F7)", "x":2, "y":0}, - {"label":"K03 (D1,B1)", "x":3, "y":0}, - {"label":"K04 (D1,C6)", "x":4, "y":0}, - {"label":"K05 (D1,D7)", "x":5, "y":0}, - {"label":"K10 (D0,F5)", "x":0, "y":1}, - {"label":"K11 (D0,F6)", "x":1, "y":1}, - {"label":"K12 (D0,F7)", "x":2, "y":1}, - {"label":"K13 (D0,B1)", "x":3, "y":1}, - {"label":"K14 (D0,C6)", "x":4, "y":1}, - {"label":"K15 (D0,D7)", "x":5, "y":1}, - {"label":"K20 (E6,F5)", "x":0, "y":2, "w":2}, - {"label":"K22 (E6,F7)", "x":2, "y":2}, - {"label":"K23 (E6,B1)", "x":3, "y":2}, - {"label":"K24 (E6,C6)", "x":4, "y":2}, - {"label":"K25 (E6,D7)", "x":5, "y":2}, - {"label":"K30 (B3,F5)", "x":0, "y":3}, - {"label":"K31 (B3,F6)", "x":1, "y":3}, - {"label":"K32 (B3,F7)", "x":2, "y":3}, - {"label":"K33 (B3,B1)", "x":3, "y":3}, - {"label":"K34 (B3,C6)", "x":4, "y":3}, - {"label":"K35 (B3,D7)", "x":5, "y":3}, - {"label":"K46 (B2,B6)", "x":6, "y":3, "h":2}, - {"label":"K44 (B2,C6)", "x":4, "y":4}, - {"label":"K45 (B2,D7)", "x":5, "y":4} - ] - } - } - ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/" -} - diff --git a/keyboards/clawsome/gamebuddy/rules.mk b/keyboards/clawsome/gamebuddy/rules.mk deleted file mode 100644 index a3a91009b08f..000000000000 --- a/keyboards/clawsome/gamebuddy/rules.mk +++ /dev/null @@ -1,24 +0,0 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -BOOTLOADER = caterina - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = yes # Console for debug -COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 diff --git a/keyboards/clawsome/gamebuddy/v1_0/config.h b/keyboards/clawsome/gamebuddy/v1_0/config.h new file mode 100644 index 000000000000..91b6fc6374a6 --- /dev/null +++ b/keyboards/clawsome/gamebuddy/v1_0/config.h @@ -0,0 +1,36 @@ +/* +Copyright 2020 AAClawson (AlisGraveNil) + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x17B9 +#define DEVICE_VER 0x0001 +#define MANUFACTURER AlisGraveNil +#define PRODUCT GameBuddy1_0 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 7 + +#define MATRIX_ROW_PINS { D1, D0, E6, B3, B2 } +#define MATRIX_COL_PINS { F5, F6, F7, B1, C6, D7, B6 } + +#define DIODE_DIRECTION COL2ROW diff --git a/keyboards/clawsome/gamebuddy/v1_0/info.json b/keyboards/clawsome/gamebuddy/v1_0/info.json new file mode 100644 index 000000000000..dc9c56587e0d --- /dev/null +++ b/keyboards/clawsome/gamebuddy/v1_0/info.json @@ -0,0 +1,37 @@ +{ + "keyboard_name": "GameBuddy1_0", + "url": "www.clawboards.xyz", + "maintainer": "AlisGraveNil", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"K00 (D1,F5)", "x":0, "y":0}, + {"label":"K01 (D1,F6)", "x":1, "y":0}, + {"label":"K02 (D1,F7)", "x":2, "y":0}, + {"label":"K03 (D1,B1)", "x":3, "y":0}, + {"label":"K04 (D1,C6)", "x":4, "y":0}, + {"label":"K05 (D1,D7)", "x":5, "y":0}, + {"label":"K10 (D0,F5)", "x":0, "y":1}, + {"label":"K11 (D0,F6)", "x":1, "y":1}, + {"label":"K12 (D0,F7)", "x":2, "y":1}, + {"label":"K13 (D0,B1)", "x":3, "y":1}, + {"label":"K14 (D0,C6)", "x":4, "y":1}, + {"label":"K15 (D0,D7)", "x":5, "y":1}, + {"label":"K20 (E6,F5)", "x":0, "y":2, "w":2}, + {"label":"K22 (E6,F7)", "x":2, "y":2}, + {"label":"K23 (E6,B1)", "x":3, "y":2}, + {"label":"K24 (E6,C6)", "x":4, "y":2}, + {"label":"K25 (E6,D7)", "x":5, "y":2}, + {"label":"K30 (B3,F5)", "x":0, "y":3}, + {"label":"K31 (B3,F6)", "x":1, "y":3}, + {"label":"K32 (B3,F7)", "x":2, "y":3}, + {"label":"K33 (B3,B1)", "x":3, "y":3}, + {"label":"K34 (B3,C6)", "x":4, "y":3}, + {"label":"K35 (B3,D7)", "x":5, "y":3}, + {"label":"K46 (B2,B6)", "x":6, "y":3, "h":2}, + {"label":"K44 (B2,C6)", "x":4, "y":4}, + {"label":"K45 (B2,D7)", "x":5, "y":4} + ] + } + } +} diff --git a/keyboards/clawsome/gamebuddy/keymaps/default/keymap.c b/keyboards/clawsome/gamebuddy/v1_0/keymaps/default/keymap.c similarity index 100% rename from keyboards/clawsome/gamebuddy/keymaps/default/keymap.c rename to keyboards/clawsome/gamebuddy/v1_0/keymaps/default/keymap.c diff --git a/keyboards/clawsome/gamebuddy/readme.md b/keyboards/clawsome/gamebuddy/v1_0/readme.md similarity index 100% rename from keyboards/clawsome/gamebuddy/readme.md rename to keyboards/clawsome/gamebuddy/v1_0/readme.md diff --git a/keyboards/clawsome/gamebuddy/v1_0/rules.mk b/keyboards/clawsome/gamebuddy/v1_0/rules.mk new file mode 100644 index 000000000000..fce3a6d38235 --- /dev/null +++ b/keyboards/clawsome/gamebuddy/v1_0/rules.mk @@ -0,0 +1,19 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# 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 = yes # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/clawsome/gamebuddy/v1_0/v1_0.c b/keyboards/clawsome/gamebuddy/v1_0/v1_0.c new file mode 100644 index 000000000000..b63474c28aef --- /dev/null +++ b/keyboards/clawsome/gamebuddy/v1_0/v1_0.c @@ -0,0 +1,16 @@ +/* Copyright 2020 AAClawson (AlisGraveNil) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "v1_0.h" diff --git a/keyboards/clawsome/gamebuddy/gamebuddy.h b/keyboards/clawsome/gamebuddy/v1_0/v1_0.h similarity index 100% rename from keyboards/clawsome/gamebuddy/gamebuddy.h rename to keyboards/clawsome/gamebuddy/v1_0/v1_0.h diff --git a/keyboards/clawsome/gamebuddy/v1_m/config.h b/keyboards/clawsome/gamebuddy/v1_m/config.h new file mode 100644 index 000000000000..748e35237a82 --- /dev/null +++ b/keyboards/clawsome/gamebuddy/v1_m/config.h @@ -0,0 +1,45 @@ +/* Copyright 2021 AAClawson (AlisGraveNil) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7767 +#define PRODUCT_ID 0x0000 +#define DEVICE_VER 0x0001 +#define MANUFACTURER AlisGraveNil +#define PRODUCT GameBuddy1_M + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 7 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS { C6, D7, B5, B3, B2 } +#define MATRIX_COL_PINS { B1, F7, F6, F5, E6, B4, B6 } + +#define DIODE_DIRECTION COL2ROW diff --git a/keyboards/clawsome/gamebuddy/v1_m/info.json b/keyboards/clawsome/gamebuddy/v1_m/info.json new file mode 100644 index 000000000000..57b970e146ad --- /dev/null +++ b/keyboards/clawsome/gamebuddy/v1_m/info.json @@ -0,0 +1,38 @@ +{ + "keyboard_name": "GameBuddy1_M", + "url": "www.clawboards.xyz", + "maintainer": "AlisGraveNil", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"K00 (C6,B1)", "x":0, "y":0}, + {"label":"K01 (C6,F7)", "x":1, "y":0}, + {"label":"K02 (C6,F6)", "x":2, "y":0}, + {"label":"K03 (C6,F5)", "x":3, "y":0}, + {"label":"K04 (C6,E6)", "x":4, "y":0}, + {"label":"K05 (C6,B4)", "x":5, "y":0}, + {"label":"K10 (D7,B1)", "x":0, "y":1}, + {"label":"K11 (D7,F7)", "x":1, "y":1}, + {"label":"K12 (D7,F6)", "x":2, "y":1}, + {"label":"K13 (D7,F5)", "x":3, "y":1}, + {"label":"K14 (D7,E6)", "x":4, "y":1}, + {"label":"K15 (D7,B4)", "x":5, "y":1}, + {"label":"K20 (B5,B1)", "x":0, "y":2}, + {"label":"K21 (B5,F7)", "x":1, "y":2}, + {"label":"K22 (B5,F6)", "x":2, "y":2}, + {"label":"K23 (B5,F5)", "x":3, "y":2}, + {"label":"K24 (B5,E6)", "x":4, "y":2}, + {"label":"K25 (B5,B4)", "x":5, "y":2}, + {"label":"K30 (B3,B1)", "x":0, "y":3}, + {"label":"K31 (B3,F7)", "x":1, "y":3}, + {"label":"K32 (B3,F6)", "x":2, "y":3}, + {"label":"K33 (B3,F5)", "x":3, "y":3}, + {"label":"K34 (B3,E6)", "x":4, "y":3}, + {"label":"K35 (B3,B4)", "x":5, "y":3}, + {"label":"K46 (B2,B6)", "x":6, "y":3, "h":2}, + {"label":"K44 (B2,E6)", "x":4, "y":4}, + {"label":"K45 (B2,B4)", "x":5, "y":4} + ] + } + } +} diff --git a/keyboards/clawsome/gamebuddy/v1_m/keymaps/default/keymap.c b/keyboards/clawsome/gamebuddy/v1_m/keymaps/default/keymap.c new file mode 100644 index 000000000000..88f40733d53f --- /dev/null +++ b/keyboards/clawsome/gamebuddy/v1_m/keymaps/default/keymap.c @@ -0,0 +1,29 @@ +/* Copyright 2021 AAClawson (AlisGraveNil) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, + KC_TAB, KC_V, KC_Q, KC_W, KC_E, KC_R, + KC_LSFT, KC_LSFT, KC_A, KC_S, KC_D, KC_G, + KC_LCTL, KC_N, KC_X, KC_F, KC_C, KC_M, KC_SPC, + KC_LALT, KC_LGUI + ), + +}; + diff --git a/keyboards/clawsome/gamebuddy/v1_m/readme.md b/keyboards/clawsome/gamebuddy/v1_m/readme.md new file mode 100644 index 000000000000..add8b04ea02a --- /dev/null +++ b/keyboards/clawsome/gamebuddy/v1_m/readme.md @@ -0,0 +1,13 @@ +# GameBuddy + +This is a 5x7 macropad designed for left OR right hand usage in videogames, with special focus on FPS layouts! + +* Keyboard Maintainer: [AAClawson](https://github.com/AlisGraveNil) +* Hardware Supported: GameBuddy, Pro Micro, Elite-C, nice!nano +* Hardware Availability: www.clawboards.xyz + +Make example for this keyboard (after setting up your build environment): + + make clawsome/gamebuddy/v1_m: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/clawsome/gamebuddy/v1_m/rules.mk b/keyboards/clawsome/gamebuddy/v1_m/rules.mk new file mode 100644 index 000000000000..14190d2fda8b --- /dev/null +++ b/keyboards/clawsome/gamebuddy/v1_m/rules.mk @@ -0,0 +1,19 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# 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 = yes # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output \ No newline at end of file diff --git a/keyboards/clawsome/gamebuddy/v1_m/v1_m.c b/keyboards/clawsome/gamebuddy/v1_m/v1_m.c new file mode 100644 index 000000000000..88db72d27b8a --- /dev/null +++ b/keyboards/clawsome/gamebuddy/v1_m/v1_m.c @@ -0,0 +1,16 @@ +/* Copyright 2021 AAClawson (AlisGraveNil) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "v1_m.h" diff --git a/keyboards/clawsome/gamebuddy/v1_m/v1_m.h b/keyboards/clawsome/gamebuddy/v1_m/v1_m.h new file mode 100644 index 000000000000..23e4d03bbc7f --- /dev/null +++ b/keyboards/clawsome/gamebuddy/v1_m/v1_m.h @@ -0,0 +1,33 @@ +/* Copyright 2021 AAClawson (AlisGraveNil) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + K00, K01, K02, K03, K04, K05, \ + K10, K11, K12, K13, K14, K15, \ + K20, K21, K22, K23, K24, K25, \ + K30, K31, K32, K33, K34, K35, K46, \ + K44, K45 \ +) { \ + { K00, K01, K02, K03, K04, K05, KC_NO }, \ + { K10, K11, K12, K13, K14, K15, KC_NO }, \ + { K20, K21, K22, K23, K24, K25, KC_NO }, \ + { K30, K31, K32, K33, K34, K35, KC_NO }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, K44, K45, K46 }, \ +} diff --git a/keyboards/clawsome/hatchback/hatcback.h b/keyboards/clawsome/hatchback/hatcback.h deleted file mode 100644 index b30eda09f478..000000000000 --- a/keyboards/clawsome/hatchback/hatcback.h +++ /dev/null @@ -1,41 +0,0 @@ -/* Copyright 2021 AAClawson (AlisGraveNil) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include "quantum.h" - -#define LAYOUT( \ - K00, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, K07, K18, K09, \ - K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K27, K38, K29, \ - K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K46, K56, K47, K58, K49, \ - K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K76, \ - K80, K90, K81, K91, K82, K92, K83, K93, K84, K94, K85, K96, K98, \ - KA0, KB0, KA1, KA2, KA3, KA4, KA5, KB5, KA6, KB6, KA7, KB8, KA9 \ -) { \ - { K00, K01, K02, K03, K04, K05, K06, K07, KC_NO, K09 }, \ - { KC_NO, K11, K12, K13, K14, K15, K16, KC_NO, K18, KC_NO }, \ - { K20, K21, K22, K23, K24, K25, K26, K27, KC_NO, K29 }, \ - { K30, K31, K32, K33, K34, K35, K36, KC_NO, K38, KC_NO }, \ - { K40, K41, K42, K43, K44, K45, K46, K47, KC_NO, K49 }, \ - { K50, K51, K52, K53, K54, K55, K56, KC_NO, K58, KC_NO }, \ - { K60, K61, K62, K63, K64, K65, KC_NO, KC_NO, KC_NO, KC_NO }, \ - { K70, K71, K72, K73, K74, K75, K76, KC_NO, KC_NO, KC_NO }, \ - { K80, K81, K82, K83, K84, K85, KC_NO, KC_NO, KC_NO, KC_NO }, \ - { K90, K91, K92, K93, K94, KC_NO, K96, KC_NO, K98, KC_NO }, \ - { KA0, KA1, KA2, KA3, KA4, KA5, KA6, KA7, KC_NO, KA9 }, \ - { KB0, KC_NO, KC_NO, KC_NO, KC_NO, KB5, KB6, KC_NO, KB8, KC_NO }, \ -} diff --git a/keyboards/clawsome/hatchback/hatchback.h b/keyboards/clawsome/hatchback/hatchback.h new file mode 100644 index 000000000000..b55f6adc2802 --- /dev/null +++ b/keyboards/clawsome/hatchback/hatchback.h @@ -0,0 +1,43 @@ +/* Copyright 2021 AAClawson (AlisGraveNil) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +// clang-format off +#define LAYOUT( \ + K00, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, K07, K18, K09, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K27, K38, K29, \ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K46, K56, K47, K58, K49, \ + K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K76, \ + K80, K90, K81, K91, K82, K92, K83, K93, K84, K94, K85, K96, K98, \ + KA0, KB0, KA1, KA2, KA3, KA4, KA5, KB5, KA6, KB6, KA7, KB8, KA9 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, KC_NO, K09 }, \ + { KC_NO, K11, K12, K13, K14, K15, K16, KC_NO, K18, KC_NO }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, KC_NO, K29 }, \ + { K30, K31, K32, K33, K34, K35, K36, KC_NO, K38, KC_NO }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, KC_NO, K49 }, \ + { K50, K51, K52, K53, K54, K55, K56, KC_NO, K58, KC_NO }, \ + { K60, K61, K62, K63, K64, K65, KC_NO, KC_NO, KC_NO, KC_NO }, \ + { K70, K71, K72, K73, K74, K75, K76, KC_NO, KC_NO, KC_NO }, \ + { K80, K81, K82, K83, K84, K85, KC_NO, KC_NO, KC_NO, KC_NO }, \ + { K90, K91, K92, K93, K94, KC_NO, K96, KC_NO, K98, KC_NO }, \ + { KA0, KA1, KA2, KA3, KA4, KA5, KA6, KA7, KC_NO, KA9 }, \ + { KB0, KC_NO, KC_NO, KC_NO, KC_NO, KB5, KB6, KC_NO, KB8, KC_NO }, \ +} +// clang-format on diff --git a/keyboards/clawsome/hatchback/info.json b/keyboards/clawsome/hatchback/info.json index f3d750607d39..94e350b4b1ab 100644 --- a/keyboards/clawsome/hatchback/info.json +++ b/keyboards/clawsome/hatchback/info.json @@ -1,9 +1,7 @@ { "keyboard_name": "hatchbackTKL", "url": "www.clawboards.xyz", - "maintainer": "AAClawson (AlisGraveNil)", - "width": 18.25, - "height": 6.5, + "maintainer": "AlisGraveNil", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/clawsome/hatchback/keymap/default/keymap.c b/keyboards/clawsome/hatchback/keymaps/default/keymap.c similarity index 100% rename from keyboards/clawsome/hatchback/keymap/default/keymap.c rename to keyboards/clawsome/hatchback/keymaps/default/keymap.c diff --git a/keyboards/clawsome/hatchback/rules.mk b/keyboards/clawsome/hatchback/rules.mk index 6b8d1b5f071c..3c961f9c2ab9 100644 --- a/keyboards/clawsome/hatchback/rules.mk +++ b/keyboards/clawsome/hatchback/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/clawsome/luggage_rack/config.h b/keyboards/clawsome/luggage_rack/config.h new file mode 100644 index 000000000000..32b3ea45619b --- /dev/null +++ b/keyboards/clawsome/luggage_rack/config.h @@ -0,0 +1,45 @@ +/* Copyright 2021 AAClawson (AlisGraveNil) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7767 +#define PRODUCT_ID 0x0000 +#define DEVICE_VER 0x0001 +#define MANUFACTURER AlisGraveNil +#define PRODUCT luggage_rack + +/* key matrix size */ +#define MATRIX_ROWS 9 +#define MATRIX_COLS 3 + +/* + * 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 { D3, F4, B0, B2, F7, B6, B1, F5, F6 } +#define MATRIX_COL_PINS { D4, D0, D1 } + +#define DIODE_DIRECTION COL2ROW diff --git a/keyboards/clawsome/luggage_rack/info.json b/keyboards/clawsome/luggage_rack/info.json new file mode 100644 index 000000000000..56b38ea49daf --- /dev/null +++ b/keyboards/clawsome/luggage_rack/info.json @@ -0,0 +1,24 @@ +{ + "keyboard_name": "luggage_rack", + "url": "www.clawboards.xyz", + "maintainer": "AlisGraveNil", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"K00 (D3,D4)", "x":0, "y":0}, + {"label":"K11 (F4,D0)", "x":1, "y":0}, + {"label":"K02 (D3,D1)", "x":2, "y":0}, + {"label":"K20 (B0,D4)", "x":0, "y":1.5}, + {"label":"K31 (B2,D0)", "x":1, "y":1.5}, + {"label":"K22 (B0,D1)", "x":2, "y":1.5}, + {"label":"K40 (F7,D4)", "x":0, "y":2.5}, + {"label":"K51 (B6,D0)", "x":1, "y":2.5}, + {"label":"K42 (F7,D1)", "x":2, "y":2.5}, + {"label":"K61 (B1,D0)", "x":1, "y":4.5}, + {"label":"K70 (F5,D4)", "x":0, "y":5.5}, + {"label":"K81 (F6,D0)", "x":1, "y":5.5}, + {"label":"K72 (F5,D1)", "x":2, "y":5.5} + ] + } + } +} diff --git a/keyboards/clawsome/luggage_rack/keymaps/default/keymap.c b/keyboards/clawsome/luggage_rack/keymaps/default/keymap.c new file mode 100644 index 000000000000..5d7871730d5d --- /dev/null +++ b/keyboards/clawsome/luggage_rack/keymaps/default/keymap.c @@ -0,0 +1,29 @@ +/* Copyright 2021 AAClawson (AlisGraveNil) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_PSCR, KC_SLCK, KC_PAUS, + KC_INS, KC_HOME, KC_PGUP, + KC_DEL, KC_END, KC_PGDN, + + KC_UP, + KC_LEFT, KC_DOWN, KC_RGHT + ), + +}; diff --git a/keyboards/clawsome/luggage_rack/luggage_rack.c b/keyboards/clawsome/luggage_rack/luggage_rack.c new file mode 100644 index 000000000000..3a49c797d0b8 --- /dev/null +++ b/keyboards/clawsome/luggage_rack/luggage_rack.c @@ -0,0 +1,17 @@ +/* Copyright 2021 AAClawson (AlisGraveNil) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "luggage_rack.h" diff --git a/keyboards/clawsome/luggage_rack/luggage_rack.h b/keyboards/clawsome/luggage_rack/luggage_rack.h new file mode 100644 index 000000000000..20c4947bd250 --- /dev/null +++ b/keyboards/clawsome/luggage_rack/luggage_rack.h @@ -0,0 +1,38 @@ +/* Copyright 2021 AAClawson (AlisGraveNil) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + K00, K11, K02, \ + K20, K31, K22, \ + K40, K51, K42, \ + \ + K61, \ + K70, K81, K72 \ +) { \ + { K00, KC_NO, K02 }, \ + { KC_NO, K11, KC_NO }, \ + { K20, KC_NO, K22 }, \ + { KC_NO, K31, KC_NO }, \ + { K40, KC_NO, K42 }, \ + { KC_NO, K51, KC_NO }, \ + { KC_NO, K61, KC_NO }, \ + { K70, KC_NO, K72 }, \ + { KC_NO, K81, KC_NO }, \ +} diff --git a/keyboards/clawsome/luggage_rack/readme.md b/keyboards/clawsome/luggage_rack/readme.md new file mode 100644 index 000000000000..69856494d5ea --- /dev/null +++ b/keyboards/clawsome/luggage_rack/readme.md @@ -0,0 +1,13 @@ +# Luggage Rack + +This is 13-key macropad based on the nav cluster of a 100% layout. This is only available as a break-away item if you get a HatchbackTKL keyboard. + +- Keyboard Maintainer: [AAClawson](https://github.com/AlisGraveNil) +- Hardware Supported: Luggage Rack, Pro-Micro, nice!nano, Elite-C +- Hardware Availability: Only available in conjunction with the Hatchback + +Make example for this keyboard (after setting up your build environment): + + make clawsome/luggage_rack: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/clawsome/luggage_rack/rules.mk b/keyboards/clawsome/luggage_rack/rules.mk new file mode 100644 index 000000000000..3c961f9c2ab9 --- /dev/null +++ b/keyboards/clawsome/luggage_rack/rules.mk @@ -0,0 +1,19 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# 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 = yes # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/clawsome/numeros/info.json b/keyboards/clawsome/numeros/info.json index 9576e6221865..4d9f59e553d7 100644 --- a/keyboards/clawsome/numeros/info.json +++ b/keyboards/clawsome/numeros/info.json @@ -1,9 +1,7 @@ { "keyboard_name": "numeros", "url": "www.clawboards.xyz", - "maintainer": "AAClawson (AlisGraveNil)", - "width": 4, - "height": 5, + "maintainer": "AlisGraveNil", "layouts": { "LAYOUT_numpad_5x4": { "layout": [ @@ -31,5 +29,4 @@ ] } } - ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/" } diff --git a/keyboards/clawsome/numeros/rules.mk b/keyboards/clawsome/numeros/rules.mk index c0d663b11347..45931cf00748 100644 --- a/keyboards/clawsome/numeros/rules.mk +++ b/keyboards/clawsome/numeros/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LAYOUTS = numpad_5x4 diff --git a/keyboards/clawsome/roadster/info.json b/keyboards/clawsome/roadster/info.json index 93b5f11f9ea0..999f64c2f44e 100644 --- a/keyboards/clawsome/roadster/info.json +++ b/keyboards/clawsome/roadster/info.json @@ -1,9 +1,7 @@ { "keyboard_name": "Roadster", "url": "www.clawboards.xyz", - "maintainer": "AAClawson (AlisGraveNil)", - "width": 12, - "height": 4, + "maintainer": "AlisGraveNil", "layouts": { "LAYOUT": { "layout": [ @@ -55,4 +53,3 @@ } } } - diff --git a/keyboards/clawsome/roadster/rules.mk b/keyboards/clawsome/roadster/rules.mk index 6b8d1b5f071c..3c961f9c2ab9 100644 --- a/keyboards/clawsome/roadster/rules.mk +++ b/keyboards/clawsome/roadster/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/clawsome/sedan/info.json b/keyboards/clawsome/sedan/info.json index ecf4c7212aa4..568c1e010b0b 100644 --- a/keyboards/clawsome/sedan/info.json +++ b/keyboards/clawsome/sedan/info.json @@ -1,9 +1,7 @@ { "keyboard_name": "sedan", "url": "www.clawboards.xyz", - "maintainer": "AAClawson (AlisGraveNil)", - "width": 16, - "height": 5, + "maintainer": "AlisGraveNil", "layouts": { "LAYOUT_65_ansi": { "layout": [ diff --git a/keyboards/clawsome/sedan/rules.mk b/keyboards/clawsome/sedan/rules.mk index 47532471a210..a211a1cee78f 100644 --- a/keyboards/clawsome/sedan/rules.mk +++ b/keyboards/clawsome/sedan/rules.mk @@ -7,20 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = 65_ansi diff --git a/keyboards/clawsome/sidekick/info.json b/keyboards/clawsome/sidekick/info.json index cd6d4f00041d..0dd1ed5e8010 100644 --- a/keyboards/clawsome/sidekick/info.json +++ b/keyboards/clawsome/sidekick/info.json @@ -1,9 +1,7 @@ { "keyboard_name": "Sidekick", "url": "", - "maintainer": "qmk", - "width": 7, - "height": 5, + "maintainer": "AlisGraveNil", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/clawsome/sidekick/rules.mk b/keyboards/clawsome/sidekick/rules.mk index 8c9c905e65d6..ccbdffd07534 100644 --- a/keyboards/clawsome/sidekick/rules.mk +++ b/keyboards/clawsome/sidekick/rules.mk @@ -7,18 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/clawsome/suv/info.json b/keyboards/clawsome/suv/info.json index f44f6aa4447a..70cfd37908bb 100644 --- a/keyboards/clawsome/suv/info.json +++ b/keyboards/clawsome/suv/info.json @@ -1,9 +1,7 @@ { "keyboard_name": "suv1.1", "url": "www.clawboards.xyz", - "maintainer": "AAClawson (AlisGraveNil)", - "width": 22.5, - "height": 6.5, + "maintainer": "AlisGraveNil", "layouts": { "LAYOUT": { "layout": [ @@ -117,4 +115,3 @@ } } } - diff --git a/keyboards/clawsome/suv/keymap/default/keymap.c b/keyboards/clawsome/suv/keymaps/default/keymap.c similarity index 100% rename from keyboards/clawsome/suv/keymap/default/keymap.c rename to keyboards/clawsome/suv/keymaps/default/keymap.c diff --git a/keyboards/clawsome/suv/rules.mk b/keyboards/clawsome/suv/rules.mk index 64d67049f9a6..14190d2fda8b 100644 --- a/keyboards/clawsome/suv/rules.mk +++ b/keyboards/clawsome/suv/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output \ No newline at end of file diff --git a/keyboards/clueboard/17/17.h b/keyboards/clueboard/17/17.h index ebf2083862fb..ef5b3f3e04d7 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 877f47869087..e2d0d1a23e4c 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 . */ -#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/17/info.json b/keyboards/clueboard/17/info.json index 47260572e641..fb12f7dcceab 100644 --- a/keyboards/clueboard/17/info.json +++ b/keyboards/clueboard/17/info.json @@ -2,8 +2,6 @@ "manufacturer": "Clueboard", "keyboard_name": "Clueboard 17% (Cluepad)", "maintainer": "skullydazed", - "height": 5, - "width": 4, "diode_direction": "COL2ROW", "processor": "atmega32u4", "features": { @@ -39,12 +37,10 @@ "vid": "0xC1ED" }, "layout_aliases": { - "KEYMAP": "LAYOUT_numpad_5x4", "LAYOUT": "LAYOUT_numpad_5x4" }, "layouts": { "LAYOUT_numpad_5x4": { - "key_count": 17, "layout": [ { "label": "Num Lock", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, { "label": "/", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, diff --git a/keyboards/clueboard/2x1800/2018/2018.h b/keyboards/clueboard/2x1800/2018/2018.h index c6e152ad441f..6e2d3b3831b5 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 . */ -#ifndef TWOX1800_H -#define TWOX1800_H -#include "quantum.h" +#pragma once -#endif +#include "quantum.h" diff --git a/keyboards/clueboard/2x1800/2018/info.json b/keyboards/clueboard/2x1800/2018/info.json index 878b24ce178d..38e7421a1416 100644 --- a/keyboards/clueboard/2x1800/2018/info.json +++ b/keyboards/clueboard/2x1800/2018/info.json @@ -2,8 +2,6 @@ "manufacturer": "Clueboard", "keyboard_name": "Clueboard 2x1800 2018", "maintainer": "skullydazed", - "height": 6.5, - "width": 24, "processor": "at90usb1286", "bootloader": "halfkay", "debounce": 5, @@ -43,12 +41,10 @@ "pid": "0x23A0" }, "layout_aliases": { - "KEYMAP": "LAYOUT_all", "LAYOUT": "LAYOUT_all" }, "layouts": { "LAYOUT_4u_space": { - "key_count": 124, "layout": [ { "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, { "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, @@ -177,7 +173,6 @@ ] }, "LAYOUT_7u_space": { - "key_count": 121, "layout": [ { "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, { "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, @@ -303,7 +298,6 @@ ] }, "LAYOUT_all": { - "key_count": 127, "layout": [ { "label": "Home", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, { "label": "End", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, diff --git a/keyboards/clueboard/2x1800/2019/info.json b/keyboards/clueboard/2x1800/2019/info.json index 26185b7a4822..a877cae8b07b 100644 --- a/keyboards/clueboard/2x1800/2019/info.json +++ b/keyboards/clueboard/2x1800/2019/info.json @@ -2,8 +2,6 @@ "manufacturer": "Clueboard", "keyboard_name": "Clueboard 2x1800 2019", "maintainer": "skullydazed", - "height": 8, - "width": 24, "debounce": 5, "processor": "at90usb1286", "bootloader": "halfkay", @@ -35,7 +33,6 @@ }, "layouts": { "LAYOUT_1u_ansi": { - "key_count": 131, "layout": [ { "matrix": [12, 3], "w": 1, "x": 3, "y": 0 }, { "matrix": [12, 4], "w": 1, "x": 4, "y": 0 }, @@ -171,7 +168,6 @@ ] }, "LAYOUT_1u_iso": { - "key_count": 131, "layout": [ { "matrix": [12, 3], "w": 1, "x": 3, "y": 0 }, { "matrix": [12, 4], "w": 1, "x": 4, "y": 0 }, @@ -307,7 +303,6 @@ ] }, "LAYOUT_2u_ansi": { - "key_count": 130, "layout": [ { "matrix": [12, 3], "w": 1, "x": 3, "y": 0 }, { "matrix": [12, 4], "w": 1, "x": 4, "y": 0 }, @@ -442,7 +437,6 @@ ] }, "LAYOUT_2u_iso": { - "key_count": 130, "layout": [ { "matrix": [12, 3], "w": 1, "x": 3, "y": 0 }, { "matrix": [12, 4], "w": 1, "x": 4, "y": 0 }, @@ -577,7 +571,6 @@ ] }, "LAYOUT_4u_ansi": { - "key_count": 128, "layout": [ { "matrix": [12, 3], "w": 1, "x": 3, "y": 0 }, { "matrix": [12, 4], "w": 1, "x": 4, "y": 0 }, @@ -710,7 +703,6 @@ ] }, "LAYOUT_4u_iso": { - "key_count": 128, "layout": [ { "matrix": [12, 3], "w": 1, "x": 3, "y": 0 }, { "matrix": [12, 4], "w": 1, "x": 4, "y": 0 }, @@ -843,7 +835,6 @@ ] }, "LAYOUT_7u_ansi": { - "key_count": 125, "layout": [ { "matrix": [12, 3], "w": 1, "x": 3, "y": 0 }, { "matrix": [12, 4], "w": 1, "x": 4, "y": 0 }, @@ -973,7 +964,6 @@ ] }, "LAYOUT_7u_iso": { - "key_count": 125, "layout": [ { "matrix": [12, 3], "w": 1, "x": 3, "y": 0 }, { "matrix": [12, 4], "w": 1, "x": 4, "y": 0 }, @@ -1103,7 +1093,6 @@ ] }, "LAYOUT_all": { - "key_count": 132, "layout": [ { "matrix": [12, 3], "w": 1, "x": 3, "y": 0 }, { "matrix": [12, 4], "w": 1, "x": 4, "y": 0 }, diff --git a/keyboards/converter/ibm_5291/.noci b/keyboards/clueboard/2x1800/2021/.noci similarity index 100% rename from keyboards/converter/ibm_5291/.noci rename to keyboards/clueboard/2x1800/2021/.noci diff --git a/keyboards/clueboard/2x1800/2021/2021.c b/keyboards/clueboard/2x1800/2021/2021.c new file mode 100644 index 000000000000..40f2a2ed671e --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/2021.c @@ -0,0 +1,154 @@ +/* Copyright 2017 Zach White + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "2021.h" +#include "max7219.h" +#include "font.h" + +#ifndef DRAWING_TOY_MODE +static uint16_t led_frame_timer = 0; + +void matrix_scan_kb(void) { + if (timer_elapsed(led_frame_timer) > 100) { + max7219_message_sign_task(true); + led_frame_timer = timer_read(); + } +} +#endif + +void matrix_init_kb(void) { + max7219_init(); + +#if defined(MAX7219_LED_TEST) + while(1) { + for (int i=0; i 0) { // turned left + led_position[0]--; + } else { + led_position[0]=NUM_COLUMNS-1; + } + } + + // Encoder 2, right + else if (index == 1 && clockwise) { + if (led_position[1] < 7) { // turned right + led_position[1]++; + } else { + led_position[1]=0; + } + } else if (index == 1) { + if (led_position[1] > 0) { // turned left + led_position[1]--; + } else { + led_position[1]=7; + } + } + + max7219_set_led(led_position[1], led_position[0], true); +#else + // Encoder 1, left + if (index == 0 && clockwise) { + tap_code(KC_MS_R); // turned right + } else if (index == 0) { + tap_code(KC_MS_L); // turned left + } + + // Encoder 2, right + else if (index == 1 && clockwise) { + tap_code(KC_MS_U); // turned right + } else if (index == 1) { + tap_code(KC_MS_D); // turned left + } +#endif + } + return true; +} diff --git a/keyboards/clueboard/2x1800/2021/2021.h b/keyboards/clueboard/2x1800/2021/2021.h new file mode 100644 index 000000000000..ecb9e00c4e65 --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/2021.h @@ -0,0 +1,18 @@ +/* Copyright 2017 Zach White + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" diff --git a/keyboards/clueboard/2x1800/2021/config.h b/keyboards/clueboard/2x1800/2021/config.h new file mode 100644 index 000000000000..eccede6a418e --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/config.h @@ -0,0 +1,96 @@ +/* +Copyright 2017 Zach White + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* audio support */ +#define AUDIO_PIN_ALT B7 +#define AUDIO_PIN C4 +#define AUDIO_CLICKY + +/* + * Encoder Assignments + */ +#define ENCODERS_PAD_A { D0, C5 } +#define ENCODERS_PAD_B { D1, C6 } +#define ENCODER_RESOLUTION 4 + +/* 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 + +// Configure our MAX7219's +//#define MAX7219_LOAD B0 +//#define MAX7219_CONTROLLERS 4 +//#define MAX7219_LED_INTENSITY 1 // Max: 15 + +// Define this to disable the startup test +//#define MAX7219_NO_STARTUP_TEST + +/* This controls the speed of the sign, lower is faster. This is the minimal + * time between animation frames, in ms. Actual time between frames will + * always be slightly longer due to other keyboard tasks. + */ +//#define MAX7219_SCROLL_TIME 100 + +/* This setting controls how big the scrollable area for your message sign + * is. If you set it to 0 your display will not work. If you set it to 1 + * you will have no buffer area, and you will only be able to display a + * total of 6 characters. Every number after that increases the buffer area + * by 32 columns. + * + * You can calculate how big to make this for the number of characters you + * want to display: + * + * * 6 / 32 + 1 + * + * You do not need to tune this unless you are trying to save ram. + */ +//#define MAX7219_BUFFER_MULTIPLIER 24 + +// You can only define one of these at a time: + +// Define this to test all LEDs. Keyboard functions will not work. +//#define MAX7219_LED_TEST + +// Define this to iterate through LEDs 1 by 1. Keyboard functions will not work. +//#define MAX7219_LED_ITERATE + +// Define this to show a simple animation. Keyboard functions will not work. +//#define MAX7219_LED_DANCE + +// Define this to show all the characters available +//#define MAX7219_LED_FONTTEST + +// Define this to show Clueboard on the sign +//#define MAX7219_LED_CLUEBOARD + +// Define this to show the Konami code on the sign +//#define MAX7219_LED_KONAMI + +// Define this to show QMK on the sign +//#define MAX7219_LED_QMK_POWERED + +// Define this to treat the message board like an etch-a-sketch +//#define DRAWING_TOY_MODE + +// Define this if you don't want any of the above +//#define MAX7219_LED_CUSTOM diff --git a/keyboards/clueboard/2x1800/2021/font.h b/keyboards/clueboard/2x1800/2021/font.h new file mode 100644 index 000000000000..5ddcbfba56f5 --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/font.h @@ -0,0 +1,156 @@ +/* 5x8 Font for Clueboard 2x1800. + * + * Copyright (c) 2021 Zach White + * + * 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: + * + * 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. + */ + +// Top row of keyboard, when shift held +#define CHR_TILDE {0b00110000, 0b01000000, 0b00110000, 0b00001000, 0b00110000, 0b00000000} +#define CHR_BANG {0b00000000, 0b00000000, 0b11111010, 0b10000000, 0b00000000, 0b00000000} +#define CHR_AT {0b01001100, 0b10010010, 0b10011110, 0b10000010, 0b01111100, 0b00000000} +#define CHR_POUND {0b00101000, 0b11111110, 0b00101000, 0b11111110, 0b00101000, 0b00000000} +#define CHR_DOLLAR {0b00100100, 0b01010100, 0b11111110, 0b10101010, 0b01001000, 0b00000000} +#define CHR_PERCENT {0b11000010, 0b11000100, 0b00010000, 0b00100110, 0b01000110, 0b00000000} +#define CHR_CARET {0b00100000, 0b01000000, 0b10000000, 0b01000000, 0b00100000, 0b00000000} +#define CHR_AMPERSAND {0b01101100, 0b10010010, 0b10101010, 0b01000100, 0b00001010, 0b00000000} +#define CHR_ASTERISK {0b00101000, 0b00010000, 0b01111100, 0b00010000, 0b00101000, 0b00000000} +#define CHR_LPAREN {0b00000000, 0b00111000, 0b01000100, 0b10000010, 0b00000000, 0b00000000} +#define CHR_RPAREN {0b00000000, 0b10000010, 0b01000100, 0b00111000, 0b00000000, 0b00000000} +#define CHR_UNDERSCORE {0b00000010, 0b00000010, 0b00000010, 0b00000010, 0b00000010, 0b00000000} +#define CHR_PLUS {0b00010000, 0b00010000, 0b01111100, 0b00010000, 0b00010000, 0b00000000} + +// Top row of keyboard, without shift +#define CHR_BACKTICK {0b00000000, 0b11000000, 0b01100000, 0b10000000, 0b00000000, 0b00000000} +#define CHR_1 {0b00100000, 0b01000010, 0b11111110, 0b00000010, 0b00000010, 0b00000000} +#define CHR_2 {0b01000010, 0b10000110, 0b10001010, 0b10010010, 0b01100010, 0b00000000} +#define CHR_3 {0b10000100, 0b10000010, 0b10100010, 0b11010010, 0b10001100, 0b00000000} +#define CHR_4 {0b00011000, 0b00101000, 0b01001000, 0b11111110, 0b00001000, 0b00000000} +#define CHR_5 {0b11100100, 0b10100010, 0b10100010, 0b10100010, 0b10011100, 0b00000000} +#define CHR_6 {0b00111100, 0b01010010, 0b10010010, 0b10010010, 0b00001100, 0b00000000} +#define CHR_7 {0b11000000, 0b10001110, 0b10010000, 0b10100000, 0b11000000, 0b00000000} +#define CHR_8 {0b01101100, 0b10010010, 0b10010010, 0b10010010, 0b01101100, 0b00000000} +#define CHR_9 {0b01100000, 0b10010010, 0b10010010, 0b10010010, 0b01111000, 0b00000000} +#define CHR_0 {0b01111100, 0b10001010, 0b10010010, 0b10100010, 0b01111100, 0b00000000} +#define CHR_DASH {0b00000000, 0b00010000, 0b00010000, 0b00010000, 0b00000000, 0b00000000} +#define CHR_EQUAL {0b00000000, 0b00101000, 0b00101000, 0b00101000, 0b00000000, 0b00000000} + +// Letters +#define CHR_A {0b01111110, 0b10001000, 0b10001000, 0b10001000, 0b01111110, 0b00000000} +#define CHR_B {0b11111110, 0b10010010, 0b10010010, 0b10010010, 0b01101100, 0b00000000} +#define CHR_C {0b01111100, 0b10000010, 0b10000010, 0b10000010, 0b01000100, 0b00000000} +#define CHR_D {0b11111110, 0b10000010, 0b10000010, 0b10000010, 0b01111100, 0b00000000} +#define CHR_E {0b11111110, 0b10010010, 0b10010010, 0b10010010, 0b10000010, 0b00000000} +#define CHR_F {0b11111110, 0b10010000, 0b10010000, 0b10010000, 0b10000000, 0b00000000} +#define CHR_G {0b01111100, 0b10000010, 0b10010010, 0b10010010, 0b01011100, 0b00000000} +#define CHR_H {0b11111110, 0b00010000, 0b00010000, 0b00010000, 0b11111110, 0b00000000} +#define CHR_I {0b00000000, 0b10000010, 0b11111110, 0b10000010, 0b00000000, 0b00000000} +#define CHR_J {0b00000100, 0b00000010, 0b10000010, 0b11111100, 0b10000000, 0b00000000} +#define CHR_K {0b11111110, 0b00010000, 0b00101000, 0b01000100, 0b10000010, 0b00000000} +#define CHR_L {0b00000000, 0b11111110, 0b00000010, 0b00000010, 0b00000010, 0b00000000} +#define CHR_M {0b11111110, 0b01000000, 0b00110000, 0b01000000, 0b11111110, 0b00000000} +#define CHR_N {0b11111110, 0b01100000, 0b00010000, 0b00001100, 0b11111110, 0b00000000} +#define CHR_O {0b01111100, 0b10000010, 0b10000010, 0b10000010, 0b01111100, 0b00000000} +#define CHR_P {0b11111110, 0b10010000, 0b10010000, 0b10010000, 0b01100000, 0b00000000} +#define CHR_Q {0b01111100, 0b10000010, 0b10001010, 0b10000100, 0b01111010, 0b00000000} +#define CHR_R {0b11111110, 0b10010000, 0b10011000, 0b10010100, 0b01100010, 0b00000000} +#define CHR_S {0b01100100, 0b10010010, 0b10010010, 0b10010010, 0b01001100, 0b00000000} +#define CHR_T {0b10000000, 0b10000000, 0b11111110, 0b10000000, 0b10000000, 0b00000000} +#define CHR_U {0b11111100, 0b00000010, 0b00000010, 0b00000010, 0b11111100, 0b00000000} +#define CHR_V {0b11111000, 0b00000100, 0b00000010, 0b00000100, 0b11111000, 0b00000000} +#define CHR_W {0b11111100, 0b00000010, 0b00011100, 0b00000010, 0b11111110, 0b00000000} +#define CHR_X {0b11000110, 0b00101000, 0b00010000, 0b00101000, 0b11000110, 0b00000000} +#define CHR_Y {0b11100000, 0b00010000, 0b00001110, 0b00010000, 0b11100000, 0b00000000} +#define CHR_Z {0b10000110, 0b10001010, 0b10010010, 0b10100010, 0b11000010, 0b00000000} + +#define CHR_a {0b00000100, 0b00101010, 0b00101010, 0b00101010, 0b00011110, 0b00000000} +#define CHR_b {0b11111110, 0b00010010, 0b00100010, 0b00100010, 0b00011100, 0b00000000} +#define CHR_c {0b00011100, 0b00100010, 0b00100010, 0b00100010, 0b00000100, 0b00000000} +#define CHR_d {0b00011100, 0b00100010, 0b00100010, 0b00010010, 0b11111110, 0b00000000} +#define CHR_e {0b00011100, 0b00101010, 0b00101010, 0b00101010, 0b00011000, 0b00000000} +#define CHR_f {0b00000000, 0b00010000, 0b01111110, 0b10010000, 0b10000000, 0b01000000} +#define CHR_g {0b00011000, 0b00100101, 0b00100101, 0b00100101, 0b00111110, 0b00000000} +#define CHR_h {0b11111110, 0b00010000, 0b00100000, 0b00100000, 0b00011110, 0b00000000} +#define CHR_i {0b00000000, 0b00010010, 0b10111110, 0b00000010, 0b00000000, 0b00000000} +#define CHR_j {0b00000100, 0b00000010, 0b00100010, 0b10111100, 0b00000000, 0b00000000} +#define CHR_k {0b11111110, 0b00001000, 0b00010100, 0b00100010, 0b00000000, 0b00000000} +#define CHR_l {0b00000000, 0b10000010, 0b11111110, 0b00000010, 0b00000000, 0b00000000} +#define CHR_m {0b00111110, 0b00100000, 0b00111110, 0b00100000, 0b00111110, 0b00000000} +#define CHR_n {0b00111110, 0b00010000, 0b00100000, 0b00100000, 0b00011110, 0b00000000} +#define CHR_o {0b00011100, 0b00100010, 0b00100010, 0b00100010, 0b00011100, 0b00000000} +#define CHR_p {0b00111111, 0b00100100, 0b00100100, 0b00100100, 0b00011000, 0b00000000} +#define CHR_q {0b00011000, 0b00100100, 0b00100100, 0b00011000, 0b00111111, 0b00000000} +#define CHR_r {0b00111110, 0b00010000, 0b00100000, 0b00100000, 0b00010000, 0b00000000} +#define CHR_s {0b00010010, 0b00101010, 0b00101010, 0b00101010, 0b00000100, 0b00000000} +#define CHR_t {0b00100000, 0b11111100, 0b00100010, 0b00000010, 0b00000100, 0b00000000} +#define CHR_u {0b00111100, 0b00000010, 0b00000010, 0b00000100, 0b00111110, 0b00000000} +#define CHR_v {0b00111000, 0b00000100, 0b00000010, 0b00000100, 0b00111000, 0b00000000} +#define CHR_w {0b00111100, 0b00000010, 0b00111100, 0b00000010, 0b00111100, 0b00000000} +#define CHR_x {0b00100010, 0b00010100, 0b00001000, 0b00010100, 0b00100010, 0b00000000} +#define CHR_y {0b00111000, 0b00000101, 0b00000101, 0b00000101, 0b00111110, 0b00000000} +#define CHR_z {0b00100010, 0b00100110, 0b00101010, 0b00110010, 0b00100010, 0b00000000} + +// Punctuation +#define CHR_LCURLY {0b00000000, 0b00010000, 0b01101100, 0b10000010, 0b00000000, 0b00000000} +#define CHR_RCURLY {0b00000000, 0b10000010, 0b01101100, 0b00010000, 0b00000000, 0b00000000} +#define CHR_PIPE {0b00000000, 0b00000000, 0b11101110, 0b00000000, 0b00000000, 0b00000000} +#define CHR_COLON {0b00000000, 0b00000000, 0b01101100, 0b01101100, 0b00000000, 0b00000000} +#define CHR_QUOTE {0b00000000, 0b01110000, 0b00000000, 0b01110000, 0b00000000, 0b00000000} +#define CHR_LESSTHAN {0b00010000, 0b00101000, 0b01000100, 0b10000010, 0b00000000, 0b00000000} +#define CHR_GREATERTHAN {0b10000010, 0b01000100, 0b00101000, 0b00010000, 0b00000000, 0b00000000} +#define CHR_QUESTIONMARK {0b01000000, 0b10000000, 0b10001010, 0b10010000, 0b01100000, 0b00000000} +#define CHR_INTERROBANG {0b01100000, 0b10000000, 0b11101010, 0b10010000, 0b01100000, 0b00000000} +#define CHR_LBRACKET {0b00000000, 0b11111110, 0b10000010, 0b10000010, 0b00000000, 0b00000000} +#define CHR_RBRACKET {0b00000000, 0b10000010, 0b10000010, 0b11111110, 0b00000000, 0b00000000} +#define CHR_BACKSLASH {0b01000000, 0b00100000, 0b00010000, 0b00001000, 0b00000100, 0b00000000} +#define CHR_SEMICOLON {0b00000000, 0b00000000, 0b01101010, 0b01101100, 0b00000000, 0b00000000} +#define CHR_APOSTROPHE {0b00000000, 0b00000000, 0b01110000, 0b00000000, 0b00000000, 0b00000000} +#define CHR_COMMA {0b00000000, 0b00000000, 0b00001010, 0b00001100, 0b00000000, 0b00000000} +#define CHR_PERIOD {0b00000000, 0b00000000, 0b00000110, 0b00000110, 0b00000000, 0b00000000} +#define CHR_SLASH {0b00000100, 0b00001000, 0b00010000, 0b00100000, 0b01000000, 0b00000000} +#define CHR_SPACE {0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000} +#define CHR_DEGREES {0b11000000, 0b11000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000} + +// Graphics +#define CHR_CENT {0b00111000, 0b01000100, 0b11111110, 0b01000100, 0b00101000, 0b00000000} +#define CHR_DEGREES_C {0b11000000, 0b11001100, 0b00010010, 0b00010010, 0b00000000, 0b00000000} +#define CHR_DEGREES_F {0b11000000, 0b11011110, 0b00010100, 0b00010000, 0b00000000, 0b00000000} +#define CHR_DIVISION {0b00010000, 0b00010000, 0b01010100, 0b00010000, 0b00010000, 0b00000000} +#define CHR_LEFT_ARROW {0b00010000, 0b00111000, 0b01010100, 0b00010000, 0b00010000, 0b00000000} +#define CHR_RIGHT_ARROW {0b00010000, 0b00010000, 0b01010100, 0b00111000, 0b00010000, 0b00000000} +#define CHR_UP_ARROW {0b00010000, 0b00100000, 0b01111110, 0b00100000, 0b00010000, 0b00000000} +#define CHR_DOWN_ARROW {0b00001000, 0b00000100, 0b01111110, 0b00000100, 0b00001000, 0b00000000} +#define CHR_PI {0b00100010, 0b00111100, 0b00100000, 0b00111110, 0b00100010, 0b00000000} +#define CHR_PSI {0b01111000, 0b00001000, 0b01111110, 0b00001000, 0b01111000, 0b00000000} + +// Predefined messages +#define MSG_FONTTEST {CHR_TILDE, CHR_BANG, CHR_AT, CHR_POUND, CHR_PERCENT, CHR_CARET, CHR_AMPERSAND, CHR_LPAREN, CHR_RPAREN, CHR_UNDERSCORE, CHR_PLUS, CHR_BACKTICK, CHR_1, CHR_2, CHR_3, CHR_4, CHR_5, CHR_6, CHR_7, CHR_8, CHR_9, CHR_0, CHR_DASH, CHR_EQUAL, CHR_A, CHR_B, CHR_C, CHR_D, CHR_E, CHR_F, CHR_G, CHR_H, CHR_I, CHR_J, CHR_K, CHR_L, CHR_M, CHR_N, CHR_O, CHR_P, CHR_Q, CHR_R, CHR_S, CHR_T, CHR_U, CHR_V, CHR_W, CHR_X, CHR_Y, CHR_Z, CHR_a, CHR_b, CHR_c, CHR_d, CHR_e, CHR_f, CHR_g, CHR_h, CHR_i, CHR_j, CHR_k, CHR_l, CHR_m, CHR_n, CHR_o, CHR_p, CHR_q, CHR_r, CHR_s, CHR_t, CHR_u, CHR_v, CHR_w, CHR_x, CHR_y, CHR_z, CHR_LCURLY, CHR_RCURLY, CHR_PIPE, CHR_COLON, CHR_QUOTE, CHR_LESSTHAN, CHR_GREATERTHAN, CHR_QUESTIONMARK, CHR_INTERROBANG, CHR_LBRACKET, CHR_RBRACKET, CHR_BACKSLASH, CHR_SEMICOLON, CHR_APOSTROPHE, CHR_COMMA, CHR_PERIOD, CHR_SLASH, CHR_CENT, CHR_DEGREES, CHR_DEGREES_C, CHR_DEGREES_F, CHR_DIVISION, CHR_LEFT_ARROW, CHR_RIGHT_ARROW, CHR_UP_ARROW, CHR_DOWN_ARROW, CHR_PI, CHR_PSI} +#define MSG_FONTTEST_LEN 104 + +#define MSG_CLUEBOARD {CHR_INTERROBANG, CHR_C, CHR_l, CHR_u, CHR_e, CHR_b, CHR_o, CHR_a, CHR_r, CHR_d} +#define MSG_CLUEBOARD_LEN 10 + +#define MSG_KONAMI {CHR_UP_ARROW, CHR_SPACE, CHR_UP_ARROW, CHR_SPACE, CHR_DOWN_ARROW, CHR_SPACE, CHR_DOWN_ARROW, CHR_SPACE, CHR_LEFT_ARROW, CHR_SPACE, CHR_RIGHT_ARROW, CHR_SPACE, CHR_LEFT_ARROW, CHR_SPACE, CHR_RIGHT_ARROW, CHR_SPACE, CHR_B, CHR_SPACE, CHR_A, CHR_SPACE, CHR_LESSTHAN, CHR_S, CHR_E, CHR_L, CHR_E, CHR_C, CHR_T, CHR_GREATERTHAN, CHR_SPACE, CHR_LESSTHAN, CHR_S, CHR_T, CHR_A, CHR_R, CHR_T, CHR_GREATERTHAN} +#define MSG_KONAMI_LEN 36 + +#define MSG_QMK_POWERED {CHR_PSI, CHR_P, CHR_o, CHR_w, CHR_e, CHR_r, CHR_e, CHR_d, CHR_SPACE, CHR_b, CHR_y, CHR_SPACE, CHR_Q, CHR_M, CHR_K} +#define MSG_QMK_POWERED_LEN 15 diff --git a/keyboards/clueboard/2x1800/2021/info.json b/keyboards/clueboard/2x1800/2021/info.json new file mode 100644 index 000000000000..088ce343db98 --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/info.json @@ -0,0 +1,419 @@ +{ + "manufacturer": "Clueboard", + "keyboard_name": "Clueboard 2x1800 2021", + "maintainer": "skullydazed", + "bootloader": "halfkay", + "debounce": 5, + "diode_direction": "ROW2COL", + "features": { + "audio": true, + "bootmagic": false, + "console": true, + "encoder": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "indicators": { + "caps_lock": "B5", + "num_lock": "B4", + "scroll_lock": "B6" + }, + "matrix_pins": { + "cols": ["D2", "D3", "D4", "D5", "D7", "E0", "E1", "F0", "E6", "A0", "E7"], + "rows": ["C0", "C1", "C2", "C3", "C7", "F7", "F1", "F2", "F3", "F4", "F5", "F6"] + }, + "processor": "at90usb1286", + "usb": { + "pid": "0x23A0" + }, + "layout_aliases": { + "LAYOUT": "LAYOUT_all" + }, + "layouts": { + "LAYOUT_4u_space": { + "layout": [ + { "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, + { "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, + { "matrix": [0, 2], "w": 1, "x": 2, "y": 0 }, + { "matrix": [0, 3], "w": 1, "x": 3, "y": 0 }, + { "matrix": [0, 4], "w": 1, "x": 4.75, "y": 0 }, + { "matrix": [0, 6], "w": 1, "x": 6.25, "y": 0 }, + { "matrix": [0, 7], "w": 1, "x": 7.25, "y": 0 }, + { "matrix": [0, 8], "w": 1, "x": 8.25, "y": 0 }, + { "matrix": [0, 9], "w": 1, "x": 9.25, "y": 0 }, + { "matrix": [0, 10], "w": 1, "x": 10.75, "y": 0 }, + { "matrix": [6, 0], "w": 1, "x": 11.75, "y": 0 }, + { "matrix": [6, 1], "w": 1, "x": 12.75, "y": 0 }, + { "matrix": [6, 2], "w": 1, "x": 13.75, "y": 0 }, + { "matrix": [6, 3], "w": 1, "x": 15.25, "y": 0 }, + { "matrix": [6, 4], "w": 1, "x": 16.25, "y": 0 }, + { "matrix": [6, 5], "w": 1, "x": 17.25, "y": 0 }, + { "matrix": [6, 6], "w": 1, "x": 18.25, "y": 0 }, + { "matrix": [6, 7], "w": 1, "x": 20, "y": 0 }, + { "matrix": [6, 8], "w": 1, "x": 21, "y": 0 }, + { "matrix": [6, 9], "w": 1, "x": 22, "y": 0 }, + { "matrix": [6, 10], "w": 1, "x": 23, "y": 0 }, + { "matrix": [1, 0], "w": 1, "x": 0, "y": 1.25 }, + { "matrix": [1, 1], "w": 1, "x": 1, "y": 1.25 }, + { "matrix": [1, 2], "w": 1, "x": 2, "y": 1.25 }, + { "matrix": [1, 3], "w": 1, "x": 3, "y": 1.25 }, + { "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1.25 }, + { "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1.25 }, + { "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1.25 }, + { "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1.25 }, + { "matrix": [1, 8], "w": 1, "x": 8.5, "y": 1.25 }, + { "matrix": [1, 9], "w": 1, "x": 9.5, "y": 1.25 }, + { "matrix": [1, 10], "w": 1, "x": 10.5, "y": 1.25 }, + { "matrix": [7, 0], "w": 1, "x": 11.5, "y": 1.25 }, + { "matrix": [7, 1], "w": 1, "x": 12.5, "y": 1.25 }, + { "matrix": [7, 2], "w": 1, "x": 13.5, "y": 1.25 }, + { "matrix": [7, 3], "w": 1, "x": 14.5, "y": 1.25 }, + { "matrix": [7, 4], "w": 1, "x": 15.5, "y": 1.25 }, + { "matrix": [7, 5], "w": 1, "x": 16.5, "y": 1.25 }, + { "matrix": [7, 6], "w": 2, "x": 17.5, "y": 1.25 }, + { "matrix": [7, 7], "w": 1, "x": 20, "y": 1.25 }, + { "matrix": [7, 8], "w": 1, "x": 21, "y": 1.25 }, + { "matrix": [7, 9], "w": 1, "x": 22, "y": 1.25 }, + { "matrix": [7, 10], "w": 1, "x": 23, "y": 1.25 }, + { "h": 2, "matrix": [2, 0], "w": 1, "x": 0, "y": 2.25 }, + { "matrix": [2, 1], "w": 1, "x": 1, "y": 2.25 }, + { "matrix": [2, 2], "w": 1, "x": 2, "y": 2.25 }, + { "matrix": [2, 3], "w": 1, "x": 3, "y": 2.25 }, + { "matrix": [2, 4], "w": 1.5, "x": 4.5, "y": 2.25 }, + { "matrix": [2, 5], "w": 1, "x": 6, "y": 2.25 }, + { "matrix": [2, 6], "w": 1, "x": 7, "y": 2.25 }, + { "matrix": [2, 7], "w": 1, "x": 8, "y": 2.25 }, + { "matrix": [2, 8], "w": 1, "x": 9, "y": 2.25 }, + { "matrix": [2, 9], "w": 1, "x": 10, "y": 2.25 }, + { "matrix": [2, 10], "w": 1, "x": 11, "y": 2.25 }, + { "matrix": [8, 0], "w": 1, "x": 12, "y": 2.25 }, + { "matrix": [8, 1], "w": 1, "x": 13, "y": 2.25 }, + { "matrix": [8, 2], "w": 1, "x": 14, "y": 2.25 }, + { "matrix": [8, 3], "w": 1, "x": 15, "y": 2.25 }, + { "matrix": [8, 4], "w": 1, "x": 16, "y": 2.25 }, + { "matrix": [8, 5], "w": 1, "x": 17, "y": 2.25 }, + { "matrix": [8, 6], "w": 1.5, "x": 18, "y": 2.25 }, + { "matrix": [8, 7], "w": 1, "x": 20, "y": 2.25 }, + { "matrix": [8, 8], "w": 1, "x": 21, "y": 2.25 }, + { "matrix": [8, 9], "w": 1, "x": 22, "y": 2.25 }, + { "h": 2, "matrix": [8, 10], "w": 1, "x": 23, "y": 2.25 }, + { "matrix": [3, 1], "w": 1, "x": 1, "y": 3.25 }, + { "matrix": [3, 2], "w": 1, "x": 2, "y": 3.25 }, + { "matrix": [3, 3], "w": 1, "x": 3, "y": 3.25 }, + { "matrix": [3, 4], "w": 1.75, "x": 4.5, "y": 3.25 }, + { "matrix": [3, 5], "w": 1, "x": 6.25, "y": 3.25 }, + { "matrix": [3, 6], "w": 1, "x": 7.25, "y": 3.25 }, + { "matrix": [3, 7], "w": 1, "x": 8.25, "y": 3.25 }, + { "matrix": [3, 8], "w": 1, "x": 9.25, "y": 3.25 }, + { "matrix": [3, 9], "w": 1, "x": 10.25, "y": 3.25 }, + { "matrix": [3, 10], "w": 1, "x": 11.25, "y": 3.25 }, + { "matrix": [9, 0], "w": 1, "x": 12.25, "y": 3.25 }, + { "matrix": [9, 1], "w": 1, "x": 13.25, "y": 3.25 }, + { "matrix": [9, 2], "w": 1, "x": 14.25, "y": 3.25 }, + { "matrix": [9, 3], "w": 1, "x": 15.25, "y": 3.25 }, + { "matrix": [9, 4], "w": 1, "x": 16.25, "y": 3.25 }, + { "matrix": [9, 5], "w": 2.25, "x": 17.25, "y": 3.25 }, + { "matrix": [9, 7], "w": 1, "x": 20, "y": 3.25 }, + { "matrix": [9, 8], "w": 1, "x": 21, "y": 3.25 }, + { "matrix": [9, 9], "w": 1, "x": 22, "y": 3.25 }, + { "h": 2, "matrix": [4, 0], "w": 1, "x": 0, "y": 4.25 }, + { "matrix": [4, 1], "w": 1, "x": 1, "y": 4.25 }, + { "matrix": [4, 2], "w": 1, "x": 2, "y": 4.25 }, + { "matrix": [4, 3], "w": 1, "x": 3, "y": 4.25 }, + { "matrix": [4, 4], "w": 1.25, "x": 5.5, "y": 4.25 }, + { "matrix": [4, 5], "w": 1, "x": 6.75, "y": 4.25 }, + { "matrix": [4, 6], "w": 1, "x": 7.75, "y": 4.25 }, + { "matrix": [4, 7], "w": 1, "x": 8.75, "y": 4.25 }, + { "matrix": [4, 8], "w": 1, "x": 9.75, "y": 4.25 }, + { "matrix": [4, 9], "w": 1, "x": 10.75, "y": 4.25 }, + { "matrix": [4, 10], "w": 1, "x": 11.75, "y": 4.25 }, + { "matrix": [10, 0], "w": 1, "x": 12.75, "y": 4.25 }, + { "matrix": [10, 1], "w": 1, "x": 13.75, "y": 4.25 }, + { "matrix": [10, 2], "w": 1, "x": 14.75, "y": 4.25 }, + { "matrix": [10, 3], "w": 1, "x": 15.75, "y": 4.25 }, + { "matrix": [10, 4], "w": 1.75, "x": 16.75, "y": 4.25 }, + { "matrix": [10, 5], "w": 1, "x": 20, "y": 4.25 }, + { "matrix": [9, 6], "w": 1, "x": 21, "y": 4.25 }, + { "matrix": [10, 7], "w": 1, "x": 22, "y": 4.25 }, + { "h": 2, "matrix": [10, 8], "w": 1, "x": 23, "y": 4.25 }, + { "matrix": [10, 9], "w": 1, "x": 4.25, "y": 4.5 }, + { "matrix": [10, 10], "w": 1, "x": 18.75, "y": 4.5 }, + { "matrix": [5, 1], "w": 1, "x": 1, "y": 5.25 }, + { "matrix": [5, 2], "w": 1, "x": 2, "y": 5.25 }, + { "matrix": [5, 3], "w": 1, "x": 6.5, "y": 5.25 }, + { "matrix": [5, 4], "w": 1, "x": 7.5, "y": 5.25 }, + { "matrix": [5, 5], "w": 1, "x": 8.5, "y": 5.25 }, + { "matrix": [5, 6], "w": 4, "x": 9.5, "y": 5.25 }, + { "matrix": [5, 7], "w": 1, "x": 13.5, "y": 5.25 }, + { "matrix": [5, 8], "w": 1, "x": 14.5, "y": 5.25 }, + { "matrix": [11, 0], "w": 1, "x": 15.5, "y": 5.25 }, + { "matrix": [11, 2], "w": 1, "x": 16.5, "y": 5.25 }, + { "matrix": [11, 3], "w": 1, "x": 21, "y": 5.25 }, + { "matrix": [11, 4], "w": 1, "x": 22, "y": 5.25 }, + { "matrix": [11, 5], "w": 1, "x": 3.25, "y": 5.5 }, + { "matrix": [10, 6], "w": 1, "x": 4.25, "y": 5.5 }, + { "matrix": [11, 6], "w": 1, "x": 5.25, "y": 5.5 }, + { "matrix": [11, 7], "w": 1, "x": 17.75, "y": 5.5 }, + { "matrix": [11, 8], "w": 1, "x": 18.75, "y": 5.5 }, + { "matrix": [11, 9], "w": 1, "x": 19.75, "y": 5.5 } + ] + }, + "LAYOUT_7u_space": { + "layout": [ + { "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, + { "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, + { "matrix": [0, 2], "w": 1, "x": 2, "y": 0 }, + { "matrix": [0, 3], "w": 1, "x": 3, "y": 0 }, + { "matrix": [0, 4], "w": 1, "x": 4.75, "y": 0 }, + { "matrix": [0, 6], "w": 1, "x": 6.25, "y": 0 }, + { "matrix": [0, 7], "w": 1, "x": 7.25, "y": 0 }, + { "matrix": [0, 8], "w": 1, "x": 8.25, "y": 0 }, + { "matrix": [0, 9], "w": 1, "x": 9.25, "y": 0 }, + { "matrix": [0, 10], "w": 1, "x": 10.75, "y": 0 }, + { "matrix": [6, 0], "w": 1, "x": 11.75, "y": 0 }, + { "matrix": [6, 1], "w": 1, "x": 12.75, "y": 0 }, + { "matrix": [6, 2], "w": 1, "x": 13.75, "y": 0 }, + { "matrix": [6, 3], "w": 1, "x": 15.25, "y": 0 }, + { "matrix": [6, 4], "w": 1, "x": 16.25, "y": 0 }, + { "matrix": [6, 5], "w": 1, "x": 17.25, "y": 0 }, + { "matrix": [6, 6], "w": 1, "x": 18.25, "y": 0 }, + { "matrix": [6, 7], "w": 1, "x": 20, "y": 0 }, + { "matrix": [6, 8], "w": 1, "x": 21, "y": 0 }, + { "matrix": [6, 9], "w": 1, "x": 22, "y": 0 }, + { "matrix": [6, 10], "w": 1, "x": 23, "y": 0 }, + { "matrix": [1, 0], "w": 1, "x": 0, "y": 1.25 }, + { "matrix": [1, 1], "w": 1, "x": 1, "y": 1.25 }, + { "matrix": [1, 2], "w": 1, "x": 2, "y": 1.25 }, + { "matrix": [1, 3], "w": 1, "x": 3, "y": 1.25 }, + { "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1.25 }, + { "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1.25 }, + { "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1.25 }, + { "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1.25 }, + { "matrix": [1, 8], "w": 1, "x": 8.5, "y": 1.25 }, + { "matrix": [1, 9], "w": 1, "x": 9.5, "y": 1.25 }, + { "matrix": [1, 10], "w": 1, "x": 10.5, "y": 1.25 }, + { "matrix": [7, 0], "w": 1, "x": 11.5, "y": 1.25 }, + { "matrix": [7, 1], "w": 1, "x": 12.5, "y": 1.25 }, + { "matrix": [7, 2], "w": 1, "x": 13.5, "y": 1.25 }, + { "matrix": [7, 3], "w": 1, "x": 14.5, "y": 1.25 }, + { "matrix": [7, 4], "w": 1, "x": 15.5, "y": 1.25 }, + { "matrix": [7, 5], "w": 1, "x": 16.5, "y": 1.25 }, + { "matrix": [7, 6], "w": 2, "x": 17.5, "y": 1.25 }, + { "matrix": [7, 7], "w": 1, "x": 20, "y": 1.25 }, + { "matrix": [7, 8], "w": 1, "x": 21, "y": 1.25 }, + { "matrix": [7, 9], "w": 1, "x": 22, "y": 1.25 }, + { "matrix": [7, 10], "w": 1, "x": 23, "y": 1.25 }, + { "h": 2, "matrix": [2, 0], "w": 1, "x": 0, "y": 2.25 }, + { "matrix": [2, 1], "w": 1, "x": 1, "y": 2.25 }, + { "matrix": [2, 2], "w": 1, "x": 2, "y": 2.25 }, + { "matrix": [2, 3], "w": 1, "x": 3, "y": 2.25 }, + { "matrix": [2, 4], "w": 1.5, "x": 4.5, "y": 2.25 }, + { "matrix": [2, 5], "w": 1, "x": 6, "y": 2.25 }, + { "matrix": [2, 6], "w": 1, "x": 7, "y": 2.25 }, + { "matrix": [2, 7], "w": 1, "x": 8, "y": 2.25 }, + { "matrix": [2, 8], "w": 1, "x": 9, "y": 2.25 }, + { "matrix": [2, 9], "w": 1, "x": 10, "y": 2.25 }, + { "matrix": [2, 10], "w": 1, "x": 11, "y": 2.25 }, + { "matrix": [8, 0], "w": 1, "x": 12, "y": 2.25 }, + { "matrix": [8, 1], "w": 1, "x": 13, "y": 2.25 }, + { "matrix": [8, 2], "w": 1, "x": 14, "y": 2.25 }, + { "matrix": [8, 3], "w": 1, "x": 15, "y": 2.25 }, + { "matrix": [8, 4], "w": 1, "x": 16, "y": 2.25 }, + { "matrix": [8, 5], "w": 1, "x": 17, "y": 2.25 }, + { "matrix": [8, 6], "w": 1.5, "x": 18, "y": 2.25 }, + { "matrix": [8, 7], "w": 1, "x": 20, "y": 2.25 }, + { "matrix": [8, 8], "w": 1, "x": 21, "y": 2.25 }, + { "matrix": [8, 9], "w": 1, "x": 22, "y": 2.25 }, + { "h": 2, "matrix": [8, 10], "w": 1, "x": 23, "y": 2.25 }, + { "matrix": [3, 1], "w": 1, "x": 1, "y": 3.25 }, + { "matrix": [3, 2], "w": 1, "x": 2, "y": 3.25 }, + { "matrix": [3, 3], "w": 1, "x": 3, "y": 3.25 }, + { "matrix": [3, 4], "w": 1.75, "x": 4.5, "y": 3.25 }, + { "matrix": [3, 5], "w": 1, "x": 6.25, "y": 3.25 }, + { "matrix": [3, 6], "w": 1, "x": 7.25, "y": 3.25 }, + { "matrix": [3, 7], "w": 1, "x": 8.25, "y": 3.25 }, + { "matrix": [3, 8], "w": 1, "x": 9.25, "y": 3.25 }, + { "matrix": [3, 9], "w": 1, "x": 10.25, "y": 3.25 }, + { "matrix": [3, 10], "w": 1, "x": 11.25, "y": 3.25 }, + { "matrix": [9, 0], "w": 1, "x": 12.25, "y": 3.25 }, + { "matrix": [9, 1], "w": 1, "x": 13.25, "y": 3.25 }, + { "matrix": [9, 2], "w": 1, "x": 14.25, "y": 3.25 }, + { "matrix": [9, 3], "w": 1, "x": 15.25, "y": 3.25 }, + { "matrix": [9, 4], "w": 1, "x": 16.25, "y": 3.25 }, + { "matrix": [9, 5], "w": 2.25, "x": 17.25, "y": 3.25 }, + { "matrix": [9, 7], "w": 1, "x": 20, "y": 3.25 }, + { "matrix": [9, 8], "w": 1, "x": 21, "y": 3.25 }, + { "matrix": [9, 9], "w": 1, "x": 22, "y": 3.25 }, + { "h": 2, "matrix": [4, 0], "w": 1, "x": 0, "y": 4.25 }, + { "matrix": [4, 1], "w": 1, "x": 1, "y": 4.25 }, + { "matrix": [4, 2], "w": 1, "x": 2, "y": 4.25 }, + { "matrix": [4, 3], "w": 1, "x": 3, "y": 4.25 }, + { "matrix": [4, 4], "w": 1.25, "x": 5.5, "y": 4.25 }, + { "matrix": [4, 5], "w": 1, "x": 6.75, "y": 4.25 }, + { "matrix": [4, 6], "w": 1, "x": 7.75, "y": 4.25 }, + { "matrix": [4, 7], "w": 1, "x": 8.75, "y": 4.25 }, + { "matrix": [4, 8], "w": 1, "x": 9.75, "y": 4.25 }, + { "matrix": [4, 9], "w": 1, "x": 10.75, "y": 4.25 }, + { "matrix": [4, 10], "w": 1, "x": 11.75, "y": 4.25 }, + { "matrix": [10, 0], "w": 1, "x": 12.75, "y": 4.25 }, + { "matrix": [10, 1], "w": 1, "x": 13.75, "y": 4.25 }, + { "matrix": [10, 2], "w": 1, "x": 14.75, "y": 4.25 }, + { "matrix": [10, 3], "w": 1, "x": 15.75, "y": 4.25 }, + { "matrix": [10, 4], "w": 1.75, "x": 16.75, "y": 4.25 }, + { "matrix": [10, 5], "w": 1, "x": 20, "y": 4.25 }, + { "matrix": [9, 6], "w": 1, "x": 21, "y": 4.25 }, + { "matrix": [10, 7], "w": 1, "x": 22, "y": 4.25 }, + { "h": 2, "matrix": [10, 8], "w": 1, "x": 23, "y": 4.25 }, + { "matrix": [10, 9], "w": 1, "x": 4.25, "y": 4.5 }, + { "matrix": [10, 10], "w": 1, "x": 18.75, "y": 4.5 }, + { "matrix": [5, 1], "w": 1, "x": 1, "y": 5.25 }, + { "matrix": [5, 2], "w": 1, "x": 2, "y": 5.25 }, + { "matrix": [5, 3], "w": 1, "x": 6.5, "y": 5.25 }, + { "matrix": [5, 4], "w": 1, "x": 7.5, "y": 5.25 }, + { "matrix": [5, 5], "w": 7, "x": 8.5, "y": 5.25 }, + { "matrix": [5, 6], "w": 1, "x": 15.5, "y": 5.25 }, + { "matrix": [5, 7], "w": 1, "x": 16.5, "y": 5.25 }, + { "matrix": [11, 0], "w": 1, "x": 21, "y": 5.25 }, + { "matrix": [11, 4], "w": 1, "x": 22, "y": 5.25 }, + { "matrix": [11, 5], "w": 1, "x": 3.25, "y": 5.5 }, + { "matrix": [10, 6], "w": 1, "x": 4.25, "y": 5.5 }, + { "matrix": [11, 6], "w": 1, "x": 5.25, "y": 5.5 }, + { "matrix": [11, 7], "w": 1, "x": 17.75, "y": 5.5 }, + { "matrix": [11, 8], "w": 1, "x": 18.75, "y": 5.5 }, + { "matrix": [11, 9], "w": 1, "x": 19.75, "y": 5.5 } + ] + }, + "LAYOUT_all": { + "layout": [ + { "label": "Home", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, + { "label": "End", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, + { "label": "PgUp", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 }, + { "label": "PgDn", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 }, + { "label": "Esc", "matrix": [0, 4], "w": 1, "x": 4.75, "y": 0 }, + { "label": "F1", "matrix": [0, 6], "w": 1, "x": 6.25, "y": 0 }, + { "label": "F2", "matrix": [0, 7], "w": 1, "x": 7.25, "y": 0 }, + { "label": "F3", "matrix": [0, 8], "w": 1, "x": 8.25, "y": 0 }, + { "label": "F4", "matrix": [0, 9], "w": 1, "x": 9.25, "y": 0 }, + { "label": "F5", "matrix": [0, 10], "w": 1, "x": 10.75, "y": 0 }, + { "label": "F6", "matrix": [6, 0], "w": 1, "x": 11.75, "y": 0 }, + { "label": "F7", "matrix": [6, 1], "w": 1, "x": 12.75, "y": 0 }, + { "label": "F8", "matrix": [6, 2], "w": 1, "x": 13.75, "y": 0 }, + { "label": "F9", "matrix": [6, 3], "w": 1, "x": 15.25, "y": 0 }, + { "label": "F10", "matrix": [6, 4], "w": 1, "x": 16.25, "y": 0 }, + { "label": "F11", "matrix": [6, 5], "w": 1, "x": 17.25, "y": 0 }, + { "label": "F12", "matrix": [6, 6], "w": 1, "x": 18.25, "y": 0 }, + { "label": "PrtSc", "matrix": [6, 7], "w": 1, "x": 20, "y": 0 }, + { "label": "Scroll Lock", "matrix": [6, 8], "w": 1, "x": 21, "y": 0 }, + { "label": "Pause", "matrix": [6, 9], "w": 1, "x": 22, "y": 0 }, + { "label": "Insert", "matrix": [6, 10], "w": 1, "x": 23, "y": 0 }, + { "label": "-", "matrix": [1, 0], "w": 1, "x": 0, "y": 1.25 }, + { "label": "Num Lock", "matrix": [1, 1], "w": 1, "x": 1, "y": 1.25 }, + { "label": "/", "matrix": [1, 2], "w": 1, "x": 2, "y": 1.25 }, + { "label": "*", "matrix": [1, 3], "w": 1, "x": 3, "y": 1.25 }, + { "label": "~", "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1.25 }, + { "label": "!", "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1.25 }, + { "label": "@", "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1.25 }, + { "label": "#", "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1.25 }, + { "label": "$", "matrix": [1, 8], "w": 1, "x": 8.5, "y": 1.25 }, + { "label": "%", "matrix": [1, 9], "w": 1, "x": 9.5, "y": 1.25 }, + { "label": "^", "matrix": [1, 10], "w": 1, "x": 10.5, "y": 1.25 }, + { "label": "&", "matrix": [7, 0], "w": 1, "x": 11.5, "y": 1.25 }, + { "label": "*", "matrix": [7, 1], "w": 1, "x": 12.5, "y": 1.25 }, + { "label": "(", "matrix": [7, 2], "w": 1, "x": 13.5, "y": 1.25 }, + { "label": ")", "matrix": [7, 3], "w": 1, "x": 14.5, "y": 1.25 }, + { "label": "_", "matrix": [7, 4], "w": 1, "x": 15.5, "y": 1.25 }, + { "label": "+", "matrix": [7, 5], "w": 1, "x": 16.5, "y": 1.25 }, + { "label": "Backspace", "matrix": [7, 6], "w": 2, "x": 17.5, "y": 1.25 }, + { "label": "Num Lock", "matrix": [7, 7], "w": 1, "x": 20, "y": 1.25 }, + { "label": "/", "matrix": [7, 8], "w": 1, "x": 21, "y": 1.25 }, + { "label": "*", "matrix": [7, 9], "w": 1, "x": 22, "y": 1.25 }, + { "label": "-", "matrix": [7, 10], "w": 1, "x": 23, "y": 1.25 }, + { "h": 2, "label": "+", "matrix": [2, 0], "w": 1, "x": 0, "y": 2.25 }, + { "label": "7", "matrix": [2, 1], "w": 1, "x": 1, "y": 2.25 }, + { "label": "8", "matrix": [2, 2], "w": 1, "x": 2, "y": 2.25 }, + { "label": "9", "matrix": [2, 3], "w": 1, "x": 3, "y": 2.25 }, + { "label": "Tab", "matrix": [2, 4], "w": 1.5, "x": 4.5, "y": 2.25 }, + { "label": "Q", "matrix": [2, 5], "w": 1, "x": 6, "y": 2.25 }, + { "label": "W", "matrix": [2, 6], "w": 1, "x": 7, "y": 2.25 }, + { "label": "E", "matrix": [2, 7], "w": 1, "x": 8, "y": 2.25 }, + { "label": "R", "matrix": [2, 8], "w": 1, "x": 9, "y": 2.25 }, + { "label": "T", "matrix": [2, 9], "w": 1, "x": 10, "y": 2.25 }, + { "label": "Y", "matrix": [2, 10], "w": 1, "x": 11, "y": 2.25 }, + { "label": "U", "matrix": [8, 0], "w": 1, "x": 12, "y": 2.25 }, + { "label": "I", "matrix": [8, 1], "w": 1, "x": 13, "y": 2.25 }, + { "label": "O", "matrix": [8, 2], "w": 1, "x": 14, "y": 2.25 }, + { "label": "P", "matrix": [8, 3], "w": 1, "x": 15, "y": 2.25 }, + { "label": "{", "matrix": [8, 4], "w": 1, "x": 16, "y": 2.25 }, + { "label": "}", "matrix": [8, 5], "w": 1, "x": 17, "y": 2.25 }, + { "label": "|", "matrix": [8, 6], "w": 1.5, "x": 18, "y": 2.25 }, + { "label": "7", "matrix": [8, 7], "w": 1, "x": 20, "y": 2.25 }, + { "label": "8", "matrix": [8, 8], "w": 1, "x": 21, "y": 2.25 }, + { "label": "9", "matrix": [8, 9], "w": 1, "x": 22, "y": 2.25 }, + { "h": 2, "label": "+", "matrix": [8, 10], "w": 1, "x": 23, "y": 2.25 }, + { "label": "4", "matrix": [3, 1], "w": 1, "x": 1, "y": 3.25 }, + { "label": "5", "matrix": [3, 2], "w": 1, "x": 2, "y": 3.25 }, + { "label": "6", "matrix": [3, 3], "w": 1, "x": 3, "y": 3.25 }, + { "label": "Caps Lock", "matrix": [3, 4], "w": 1.75, "x": 4.5, "y": 3.25 }, + { "label": "A", "matrix": [3, 5], "w": 1, "x": 6.25, "y": 3.25 }, + { "label": "S", "matrix": [3, 6], "w": 1, "x": 7.25, "y": 3.25 }, + { "label": "D", "matrix": [3, 7], "w": 1, "x": 8.25, "y": 3.25 }, + { "label": "F", "matrix": [3, 8], "w": 1, "x": 9.25, "y": 3.25 }, + { "label": "G", "matrix": [3, 9], "w": 1, "x": 10.25, "y": 3.25 }, + { "label": "H", "matrix": [3, 10], "w": 1, "x": 11.25, "y": 3.25 }, + { "label": "J", "matrix": [9, 0], "w": 1, "x": 12.25, "y": 3.25 }, + { "label": "K", "matrix": [9, 1], "w": 1, "x": 13.25, "y": 3.25 }, + { "label": "L", "matrix": [9, 2], "w": 1, "x": 14.25, "y": 3.25 }, + { "label": ":", "matrix": [9, 3], "w": 1, "x": 15.25, "y": 3.25 }, + { "label": "\"", "matrix": [9, 4], "w": 1, "x": 16.25, "y": 3.25 }, + { "label": "Enter", "matrix": [9, 5], "w": 2.25, "x": 17.25, "y": 3.25 }, + { "label": "4", "matrix": [9, 7], "w": 1, "x": 20, "y": 3.25 }, + { "label": "5", "matrix": [9, 8], "w": 1, "x": 21, "y": 3.25 }, + { "label": "6", "matrix": [9, 9], "w": 1, "x": 22, "y": 3.25 }, + { "h": 2, "label": "Enter", "matrix": [4, 0], "w": 1, "x": 0, "y": 4.25 }, + { "label": "1", "matrix": [4, 1], "w": 1, "x": 1, "y": 4.25 }, + { "label": "2", "matrix": [4, 2], "w": 1, "x": 2, "y": 4.25 }, + { "label": "3", "matrix": [4, 3], "w": 1, "x": 3, "y": 4.25 }, + { "label": "\\u2191", "matrix": [4, 4], "w": 1, "x": 4.25, "y": 4.5 }, + { "label": "Shift", "matrix": [4, 5], "w": 1.25, "x": 5.5, "y": 4.25 }, + { "label": "Z", "matrix": [4, 6], "w": 1, "x": 6.75, "y": 4.25 }, + { "label": "X", "matrix": [4, 7], "w": 1, "x": 7.75, "y": 4.25 }, + { "label": "C", "matrix": [4, 8], "w": 1, "x": 8.75, "y": 4.25 }, + { "label": "V", "matrix": [4, 9], "w": 1, "x": 9.75, "y": 4.25 }, + { "label": "B", "matrix": [4, 10], "w": 1, "x": 10.75, "y": 4.25 }, + { "label": "N", "matrix": [10, 0], "w": 1, "x": 11.75, "y": 4.25 }, + { "label": "M", "matrix": [10, 1], "w": 1, "x": 12.75, "y": 4.25 }, + { "label": "<", "matrix": [10, 2], "w": 1, "x": 13.75, "y": 4.25 }, + { "label": ">", "matrix": [10, 3], "w": 1, "x": 14.75, "y": 4.25 }, + { "label": "?", "matrix": [10, 4], "w": 1, "x": 15.75, "y": 4.25 }, + { "label": "Shift", "matrix": [10, 5], "w": 1.75, "x": 16.75, "y": 4.25 }, + { "label": "\\u2191", "matrix": [9, 6], "w": 1, "x": 18.75, "y": 4.5 }, + { "label": "1", "matrix": [10, 7], "w": 1, "x": 20, "y": 4.25 }, + { "label": "2", "matrix": [10, 8], "w": 1, "x": 21, "y": 4.25 }, + { "label": "3", "matrix": [10, 9], "w": 1, "x": 22, "y": 4.25 }, + { "h": 2, "label": "Enter", "matrix": [10, 10], "w": 1, "x": 23, "y": 4.25 }, + { "label": "0", "matrix": [5, 1], "w": 1, "x": 1, "y": 5.25 }, + { "label": ".", "matrix": [5, 2], "w": 1, "x": 2, "y": 5.25 }, + { "label": "\\u2190", "matrix": [5, 3], "w": 1, "x": 3.25, "y": 5.5 }, + { "label": "\\u2193", "matrix": [5, 4], "w": 1, "x": 4.25, "y": 5.5 }, + { "label": "\\u2192", "matrix": [5, 5], "w": 1, "x": 5.25, "y": 5.5 }, + { "label": "Ctrl", "matrix": [5, 6], "w": 1, "x": 6.5, "y": 5.25 }, + { "label": "Win", "matrix": [5, 7], "w": 1, "x": 7.5, "y": 5.25 }, + { "label": "Alt", "matrix": [5, 8], "w": 1, "x": 8.5, "y": 5.25 }, + { "label": "1u", "matrix": [5, 9], "w": 1, "x": 9.5, "y": 5.25 }, + { "label": "1u", "matrix": [5, 10], "w": 1, "x": 10.5, "y": 5.25 }, + { "label": "1u", "matrix": [11, 0], "w": 1, "x": 11.5, "y": 5.25 }, + { "label": "1u", "matrix": [11, 1], "w": 1, "x": 12.5, "y": 5.25 }, + { "label": "Alt", "matrix": [11, 2], "w": 1, "x": 13.5, "y": 5.25 }, + { "label": "Win", "matrix": [11, 3], "w": 1, "x": 14.5, "y": 5.25 }, + { "label": "Menu", "matrix": [11, 4], "w": 1, "x": 15.5, "y": 5.25 }, + { "label": "Ctrl", "matrix": [11, 5], "w": 1, "x": 16.5, "y": 5.25 }, + { "label": "\\u2190", "matrix": [10, 6], "w": 1, "x": 17.75, "y": 5.5 }, + { "label": "\\u2193", "matrix": [11, 6], "w": 1, "x": 18.75, "y": 5.5 }, + { "label": "\\u2192", "matrix": [11, 7], "w": 1, "x": 19.75, "y": 5.5 }, + { "label": "0", "matrix": [11, 8], "w": 1, "x": 21, "y": 5.25 }, + { "label": ".", "matrix": [11, 9], "w": 1, "x": 22, "y": 5.25 } + ] + } + } +} diff --git a/keyboards/clueboard/2x1800/2021/keymaps/default/keymap.json b/keyboards/clueboard/2x1800/2021/keymaps/default/keymap.json new file mode 100644 index 000000000000..7122f42d4fc5 --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/keymaps/default/keymap.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "author": "skullydazed", + "notes": "", + "keyboard": "clueboard/2x1800/2018", + "keymap": "default", + "layout": "LAYOUT_all", + "layers": [ + [ + "KC_HOME", "KC_END", "KC_PGUP", "KC_PGDN", "KC_ESC", "KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "KC_F11", "KC_F12", "KC_PSCR", "KC_SLCK", "KC_PAUS", "KC_INS", + "KC_PMNS", "KC_NLCK", "KC_PSLS", "KC_PAST", "KC_GRV", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_MINS", "KC_EQL", "KC_BSPC", "KC_NLCK", "KC_PSLS", "KC_PAST", "KC_PMNS", + "KC_PPLS", "KC_P7", "KC_P8", "KC_P9", "KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_LBRC", "KC_RBRC", "KC_BSLS", "KC_P7", "KC_P8", "KC_P9", "KC_PPLS", + "KC_P4", "KC_P5", "KC_P6", "KC_CAPS", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT", "KC_ENT", "KC_P4", "KC_P5", "KC_P6", + "KC_PENT", "KC_P1", "KC_P2", "KC_P3", "KC_UP", "KC_LSFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_RSFT", "KC_UP", "KC_P1", "KC_P2", "KC_P3", "KC_PENT", + "KC_P0", "KC_PDOT", "KC_LEFT", "KC_DOWN", "KC_RGHT", "KC_LCTL", "KC_LGUI", "KC_LALT", "KC_SPC", "KC_SPC", "KC_SPC", "KC_SPC", "KC_RALT", "KC_RGUI", "KC_APP", "KC_RCTL", "KC_LEFT", "KC_DOWN", "KC_RGHT", "KC_P0", "KC_PDOT" + ] + ] +} diff --git a/keyboards/clueboard/2x1800/2021/keymaps/default_4u/keymap.c b/keyboards/clueboard/2x1800/2021/keymaps/default_4u/keymap.c new file mode 100644 index 000000000000..14d76a59fcb8 --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/keymaps/default_4u/keymap.c @@ -0,0 +1,28 @@ +/* Copyright 2017 Zach White + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_4u_space( + KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_INS, \ + \ + KC_PMNS, KC_NLCK, KC_PSLS, KC_PAST, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \ + KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS, \ + KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, \ + KC_PENT, KC_P1, KC_P2, KC_P3, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, \ + KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT \ +) +}; diff --git a/keyboards/clueboard/2x1800/2021/keymaps/default_4u/readme.md b/keyboards/clueboard/2x1800/2021/keymaps/default_4u/readme.md new file mode 100644 index 000000000000..a696972e8c4b --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/keymaps/default_4u/readme.md @@ -0,0 +1 @@ +# The default keymap for 2x1800 with 4u Spacebar diff --git a/keyboards/clueboard/2x1800/2021/keymaps/default_7u/keymap.c b/keyboards/clueboard/2x1800/2021/keymaps/default_7u/keymap.c new file mode 100644 index 000000000000..3717bd54089e --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/keymaps/default_7u/keymap.c @@ -0,0 +1,49 @@ +/* Copyright 2017 Zach White + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_7u_space( + KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_DEL, \ + \ + KC_PMNS, KC_NLCK, KC_PSLS, KC_PAST, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \ + KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS, \ + KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, \ + KC_PENT, KC_P1, KC_P2, KC_P3, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, \ + KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LALT, KC_SPC, KC_LGUI, KC_APP, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT \ +) +}; + + +#ifdef AUDIO_ENABLE + float song_one_up[][2] = SONG(ONE_UP_SOUND); +#endif + +volatile uint8_t runonce = true; +static uint16_t my_timer; + +void matrix_init_user(void) { + my_timer = timer_read(); +} + +void matrix_scan_user(void) { + if (runonce && timer_elapsed(my_timer) > 500) { + runonce = false; +#ifdef AUDIO_ENABLE + PLAY_SONG(song_one_up); +#endif + } +} diff --git a/keyboards/clueboard/2x1800/2021/keymaps/default_7u/readme.md b/keyboards/clueboard/2x1800/2021/keymaps/default_7u/readme.md new file mode 100644 index 000000000000..f5718e842dc2 --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/keymaps/default_7u/readme.md @@ -0,0 +1 @@ +# The default keymap for 2x1800 with 7u spacebar diff --git a/keyboards/clueboard/2x1800/2021/keymaps/signboard/config.h b/keyboards/clueboard/2x1800/2021/keymaps/signboard/config.h new file mode 100644 index 000000000000..81995d66f39e --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/keymaps/signboard/config.h @@ -0,0 +1,20 @@ +/* Copyright 2017 Zach White + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once +#define MAX7219_LED_FONTTEST + +// place overrides here diff --git a/keyboards/clueboard/2x1800/2021/keymaps/signboard/keymap.c b/keyboards/clueboard/2x1800/2021/keymaps/signboard/keymap.c new file mode 100644 index 000000000000..3559455b66cc --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/keymaps/signboard/keymap.c @@ -0,0 +1,50 @@ +#include QMK_KEYBOARD_H +#include "font.h" +#include "max7219.h" + +enum custom_keycodes { + MSG_CB = SAFE_RANGE, + MSG_CS, + MSG_KMI, + MSG_QMK, +}; + +uint8_t custom_message[5][6] = {CHR_M, CHR_y, CHR_SPACE, CHR_2, CHR_CENT}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + MSG_CB, MSG_QMK, MSG_KMI, MSG_CS, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_INS, + KC_PMNS, KC_NLCK, KC_PSLS, KC_PAST, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_PENT, KC_P1, KC_P2, KC_P3, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT + ) +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (record->event.pressed) { + switch (keycode) { + case MSG_CB: + max7219_led_scrolling=true; + uint8_t cb_msg[MSG_CLUEBOARD_LEN][6] = MSG_CLUEBOARD; + max7219_message_sign(cb_msg, MSG_CLUEBOARD_LEN); + return true; + case MSG_CS: + max7219_led_scrolling=false; + max7219_message_sign(custom_message, 5); + return true; + case MSG_KMI: + max7219_led_scrolling=true; + uint8_t kmi_msg[MSG_KONAMI_LEN][6] = MSG_KONAMI; + max7219_message_sign(kmi_msg, MSG_KONAMI_LEN); + return true; + case MSG_QMK: + max7219_led_scrolling=true; + uint8_t qmk_msg[MSG_QMK_POWERED_LEN][6] = MSG_QMK_POWERED; + max7219_message_sign(qmk_msg, MSG_QMK_POWERED_LEN); + return true; + } + } + return true; +}; diff --git a/keyboards/clueboard/2x1800/2021/keymaps/signboard/readme.md b/keyboards/clueboard/2x1800/2021/keymaps/signboard/readme.md new file mode 100644 index 000000000000..4e3457efce62 --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/keymaps/signboard/readme.md @@ -0,0 +1 @@ +# The default keymap for 2x1800 diff --git a/keyboards/clueboard/2x1800/2021/max7219.c b/keyboards/clueboard/2x1800/2021/max7219.c new file mode 100644 index 000000000000..1ba22362fe4f --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/max7219.c @@ -0,0 +1,318 @@ +/* + * Copyright (c) 2021 Zach White + * Copyright (c) 2007 Eberhard Fahle + * + * max7219.c - A library for controling Leds with a MAX7219/MAX7221 + * + * 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: + * + * 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. + */ + +/* + * This driver started as a port of Arduino's LedControl to QMK. The + * original Arduino code can be found here: + * + * https://github.com/wayoda/LedControl + * + * Unlike LedControl we are using the native SPI support, you will need to + * use the native SPI pins for your MCU. You can set the CS pin with + * `#define MAX7219_LOAD `. + * + * This has only been tested on AVR, specifically a Teensy 2.0++. + */ + +#include "max7219.h" +#include "font.h" + +// Datastructures +bool max7219_led_scrolling = true; +uint16_t max7219_buffer_end = 0; +uint8_t max7219_spidata[MAX_BYTES]; +uint8_t max7219_led_a[8][MAX7219_BUFFER_SIZE]; + +/* Write max7219_spidata to all the max7219's + */ +void max7219_write_all(void) { + dprintf("max7219_write_all()\n"); + if (spi_start(MAX7219_LOAD, false, 0, 8)) { + for(int i = MAX_BYTES; i>0; i--) { + dprintf("spi_write(%d)\n", max7219_spidata[i-1]); + spi_write(max7219_spidata[i-1]); + } + spi_stop(); + } else { + xprintf("Could not spi_start!\n"); + } +} + +/* Write the current frame in max7219_led_a to all the max7219's + */ +void max7219_write_frame(void) { + dprintf("max7219_write_frame()\n"); + + // Set our opcode and data + for (int col=0; col<8; col++) { + for (int device_num=0; device_num + * macros from font.h to populate your array. + * + * Example: + * + * uint8_t message[10][6] = {CHR_INTERROBANG, CHR_C, CHR_l, CHR_u, CHR_e, CHR_b, CHR_o, CHR_a, CHR_r, CHR_d}; + * max7219_message(message, 10); + */ +void max7219_message_sign(uint8_t message[][6], size_t message_len) { + uint8_t letter_num = 0; + uint8_t letter_col = 0; + max7219_buffer_end = message_len * 6 + 32; + + for (int device_num=0; device_num= message_len) { + max7219_led_a[col][device_num] = 0b00000000; + } else { + max7219_led_a[col][device_num] = message[letter_num][letter_col]; + if (letter_col == 5) { + letter_num++; + letter_col = 0; + } else { + letter_col++; + } + } + } + } + + max7219_write_frame(); +} + +/* Scroll the content on the sign left by 1 column. + * + * When loop_message is true columns that slide off the left will be added + * to the right to be displayed again. + */ +void max7219_message_sign_task(bool loop_message) { + uint8_t left_col = 0b00000000; + + if (!max7219_led_scrolling) { + return; + } + + if (loop_message) { + left_col = max7219_led_a[0][0]; + } + + int i=0; + + for (int device_num=0; device_num0; i--) { + max7219_spidata[i-1]=0; + } + + // Set our opcode and data + uint8_t offset = device_num*2; + max7219_spidata[offset] = data; + max7219_spidata[offset+1] = opcode; + + // Write the data + max7219_write_all(); +} + +/* Turn off all the LEDs + */ +void max7219_clear_display(void) { + dprintf("max7219_clear_display();\n"); + + for (int col=0; col<8; col++) { + for (int device_num=0; device_num= MAX7219_CONTROLLERS) { + return; + } + + max7219_write(device_num, OP_DISPLAYTEST, enabled); +} + +/* Initialize the max7219 system and set the controller(s) to a default state. + */ +void max7219_init(void) { + wait_ms(1500); + dprintf("max7219_init()\n"); + + setPinOutput(MAX7219_LOAD); + writePinHigh(MAX7219_LOAD); + spi_init(); + + for (int i=0; i= MAX7219_CONTROLLERS) { + return; + } + + max7219_write(device_num, OP_DECODEMODE, mode); +} + +/* Set the intensity (brightness) for the LEDs. + */ +void max7219_set_intensity(int device_num, int intensity) { + dprintf("max7219_set_intensity(%d, %d);\n", device_num, intensity); + + if (device_num<0 || device_num >= MAX7219_CONTROLLERS) { + return; + } + + if (intensity >= 0 && intensity<16) { + max7219_write(device_num, OP_INTENSITY, intensity); + } +} + +/* Control a single LED. + */ +void max7219_set_led(int row, int column, bool state) { + dprintf("max7219_set_led(%d, %d, %d);\n", row, column, state); + + if (column<0 || column>8*MAX7219_CONTROLLERS) { + xprintf("max7219_set_led: column (%d) out of bounds\n", column); + return; + } + + if (row<0 || row>7) { + xprintf("max7219_set_led: row (%d) out of bounds\n", row); + return; + } + + /* At this point we reverse the sense of row and column to match the + * physical layout of my LEDs. + */ + uint8_t device_num = column / 8; + uint8_t col = column % 8; + uint8_t val = 0b10000000 >> row; + + if (state) { + max7219_led_a[col][device_num] = max7219_led_a[col][device_num]|val; + } else { + val = ~val; + max7219_led_a[col][device_num] = max7219_led_a[col][device_num]&val; + } + max7219_write(device_num, col+1, max7219_led_a[col][device_num]); +} + +/* Set the number of digits (rows) to be scanned. + */ +void max7219_set_scan_limit(int device_num, int limit) { + dprintf("max7219_set_scan_limit(%d, %d);\n", device_num, limit); + + if (device_num<0 || device_num >= MAX7219_CONTROLLERS) { + return; + } + + if (limit >= 0 && limit < 8) { + max7219_write(device_num, OP_SCANLIMIT, limit); + } +} + +/* Enable (true) or disable (false) the controller. + */ +void max7219_shutdown(int device_num, bool shutdown) { + dprintf("max7219_shutdown(%d, %d);\n", device_num, shutdown); + + if (device_num<0 || device_num >= MAX7219_CONTROLLERS) { + return; + } + + max7219_write(device_num, OP_SHUTDOWN, !shutdown); +} diff --git a/keyboards/clueboard/2x1800/2021/max7219.h b/keyboards/clueboard/2x1800/2021/max7219.h new file mode 100644 index 000000000000..95d1d9389d1b --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/max7219.h @@ -0,0 +1,87 @@ +/* + * Copyright (c) 2021 Zach White + * Copyright (c) 2007 Eberhard Fahle + * + * max7219.h - A library for controling Leds with a MAX7219/MAX7221 + * + * 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: + * + * 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 "quantum.h" +#include "spi_master.h" + +// Set defaults if they're not set +#ifndef MAX7219_LOAD +# define MAX7219_LOAD B0 +#endif + +#ifndef MAX7219_CONTROLLERS +# define MAX7219_CONTROLLERS 4 +#endif + +#ifndef MAX7219_LED_INTENSITY +# define MAX7219_LED_INTENSITY 1 +#endif + +#ifndef MAX7219_SCROLL_TIME +# define MAX7219_SCROLL_TIME 100 +#endif + +#ifndef MAX7219_BUFFER_MULTIPLIER +# define MAX7219_BUFFER_MULTIPLIER 24 +#endif + +#if !defined(MAX7219_LED_TEST) && !defined(MAX7219_LED_ITERATE) && !defined(MAX7219_LED_DANCE) && !defined(MAX7219_LED_FONTTEST) && !defined(MAX7219_LED_CLUEBOARD) && !defined(MAX7219_LED_KONAMI) && !defined(MAX7219_LED_QMK_POWERED) && !defined(MAX7219_DRAWING_TOY_MODE) && !defined(MAX7219_LED_CUSTOM) +# define MAX7219_QMK_POWERED +#endif + +// Configure our MAX7219's +#define MAX_BYTES MAX7219_CONTROLLERS * 2 +#define LED_COUNT MAX7219_CONTROLLERS * 64 +#define MAX7219_BUFFER_SIZE MAX7219_CONTROLLERS*MAX7219_BUFFER_MULTIPLIER + +// Opcodes for the MAX7219 +#define OP_DECODEMODE 9 +#define OP_INTENSITY 10 +#define OP_SCANLIMIT 11 +#define OP_SHUTDOWN 12 +#define OP_DISPLAYTEST 15 + +// Datastructures +extern uint8_t max7219_led_a[8][MAX7219_BUFFER_SIZE]; +extern bool max7219_led_scrolling; + +// Functions +void max7219_write(int device_num, volatile uint8_t opcode, volatile uint8_t data); +void max7219_write_all(void); +void max7219_write_frame(void); +void max7219_clear_display(void); +void max7219_display_test(int device_num, bool enabled); +void max7219_init(void); +void max7219_message_sign(uint8_t message[][6], size_t message_len); +void max7219_message_sign_task(bool loop_message); +void max7219_set_decode_mode(int device_num, int mode); +void max7219_set_intensity(int device_num, int intensity); +void max7219_set_led(int row, int column, bool state); +void max7219_set_all_leds(uint8_t led_matrix[LED_COUNT]); +void max7219_set_scan_limit(int device_num, int limit); +void max7219_shutdown(int device_num, bool is_in_shutdown); diff --git a/keyboards/clueboard/2x1800/2021/readme.md b/keyboards/clueboard/2x1800/2021/readme.md new file mode 100644 index 000000000000..97d536740b70 --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/readme.md @@ -0,0 +1,17 @@ +# Clueboard 2x1800 + +Clueboard 2x1800 LED Sign Edition + +* Keyboard Maintainer: [Zach White](https://github.com/skullydazed) +* Hardware Supported: Clueboard 2x1800 PCB +* Hardware Availability: 2021 Apr 1 Group Buy + +Make example for this keyboard: + + make clueboard/2x1800/2021:default + +Flashing example for this keyboard: + + make clueboard/2x1800/2021:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/clueboard/2x1800/2021/rules.mk b/keyboards/clueboard/2x1800/2021/rules.mk new file mode 100644 index 000000000000..e9f44d7bd23e --- /dev/null +++ b/keyboards/clueboard/2x1800/2021/rules.mk @@ -0,0 +1 @@ +QUANTUM_LIB_SRC += max7219.c spi_master.c diff --git a/keyboards/clueboard/2x1800/info.json b/keyboards/clueboard/2x1800/info.json index 55207e2b4dca..e3fa1b8b84e8 100644 --- a/keyboards/clueboard/2x1800/info.json +++ b/keyboards/clueboard/2x1800/info.json @@ -1,4 +1,3 @@ { - "diode_direction": "ROW2COL", - "width": 24 + "diode_direction": "ROW2COL" } diff --git a/keyboards/clueboard/60/60.c b/keyboards/clueboard/60/60.c index aac4e94c3daa..90d16613946b 100644 --- a/keyboards/clueboard/60/60.c +++ b/keyboards/clueboard/60/60.c @@ -14,11 +14,3 @@ * along with this program. If not, see . */ #include "60.h" - -void matrix_init_kb(void) { - -} - -void matrix_scan_kb(void) { - -} diff --git a/keyboards/clueboard/60/60.h b/keyboards/clueboard/60/60.h index 0345f419fa4d..9a019ccf6db0 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 . */ -#ifndef CLUEBOARD60_H -#define CLUEBOARD60_H -#include "quantum.h" +#pragma once -#endif +#include "quantum.h" diff --git a/keyboards/clueboard/60/info.json b/keyboards/clueboard/60/info.json index a68081daf00f..1698d221d372 100644 --- a/keyboards/clueboard/60/info.json +++ b/keyboards/clueboard/60/info.json @@ -2,8 +2,6 @@ "manufacturer": "Clueboard", "keyboard_name": "Clueboard 60%", "maintainer": "skullydazed", - "height": 5, - "width": 15, "debounce": 6, "processor": "STM32F303", "board": "QMK_PROTON_C", @@ -32,12 +30,10 @@ }, "community_layouts": ["60_ansi", "60_ansi_split_bs_rshift", "60_iso"], "layout_aliases": { - "KEYMAP": "LAYOUT_all", "LAYOUT": "LAYOUT_all" }, "layouts": { "LAYOUT_60_ansi": { - "key_count": 61, "layout": [ { "label": "~", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, { "label": "!", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, @@ -103,7 +99,6 @@ ] }, "LAYOUT_60_ansi_split_bs_rshift": { - "key_count": 63, "layout": [ { "label": "~", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, { "label": "!", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, @@ -171,7 +166,6 @@ ] }, "LAYOUT_60_iso": { - "key_count": 62, "layout": [ { "label": "\\u00ac", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, { "label": "!", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, @@ -238,7 +232,6 @@ ] }, "LAYOUT_aek": { - "key_count": 60, "layout": [ { "label": "~", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, { "label": "!", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, @@ -303,7 +296,6 @@ ] }, "LAYOUT_all": { - "key_count": 65, "layout": [ { "label": "~", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, { "label": "!", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, diff --git a/keyboards/clueboard/66/info.json b/keyboards/clueboard/66/info.json index df88648d8025..0967ef424bce 100644 --- a/keyboards/clueboard/66/info.json +++ b/keyboards/clueboard/66/info.json @@ -1,4 +1 @@ -{ - "width": 16.5, - "height": 5 -} +{} diff --git a/keyboards/clueboard/66/keymaps/magicmonty/keymap.c b/keyboards/clueboard/66/keymaps/magicmonty/keymap.c index 54420d31b6fa..56d4c47071c6 100644 --- a/keyboards/clueboard/66/keymaps/magicmonty/keymap.c +++ b/keyboards/clueboard/66/keymaps/magicmonty/keymap.c @@ -40,8 +40,9 @@ // CTRL when held, ESC when tapped #define CTL_ESC CTL_T(KC_ESC) -// Reset RGB mode to layer signalling -#define RGB_RST F(0) +enum custom_keycodes { + RGB_RST = SAFE_RANGE +}; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap _BL: Base Layer (Default Layer) */ @@ -103,21 +104,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #endif }; -/* This is a list of user defined functions. F(N) corresponds to item N - of this list. - */ -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_FUNCTION(0), // Calls action_function() -}; - -void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { - switch (id) { - case 0: - if (record->event.pressed) { - rgblight_mode(1); - rgblight_sethsv(206, 255, 255); - } - } +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case RGB_RST: + if (record->event.pressed) { + rgblight_mode(1); + rgblight_sethsv(206, 255, 255); + } + return false; + } + return true; } enum layer_id { diff --git a/keyboards/clueboard/66/keymaps/tetris/keymap.c b/keyboards/clueboard/66/keymaps/tetris/keymap.c index ef3abd667200..26dd97feecd9 100644 --- a/keyboards/clueboard/66/keymaps/tetris/keymap.c +++ b/keyboards/clueboard/66/keymaps/tetris/keymap.c @@ -1,9 +1,6 @@ #include QMK_KEYBOARD_H #include "tetris_text.h" -// Helpful defines -#define GRAVE_MODS (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)|MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)|MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT)) - // Each layer gets a name for readability, which is then used in the keymap matrix below. // The underscores don't mean anything - you can have a layer called STUFF or any other name. // Layer names don't all need to be of the same length, obviously, and you can also skip them @@ -12,11 +9,15 @@ #define _FL 1 #define _CL 2 +enum custom_keycodes { + TETRIS_START = SAFE_RANGE +}; + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap _BL: Base Layer (Default Layer) */ [_BL] = LAYOUT( - F(0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_PGUP, + 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_BSPC, KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT, KC_UP, @@ -41,71 +42,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______,_______, RGB_MOD, RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI), }; -/* This is a list of user defined functions. F(N) corresponds to item N - of this list. - */ -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_FUNCTION(0), // Calls action_function() - [1] = ACTION_FUNCTION(1) -}; - static uint8_t tetris_key_presses = 0; static uint16_t tetris_timer = 0; static uint8_t tetris_running = 0; static int tetris_keypress = 0; -void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { - static uint8_t mods_pressed; - static bool mod_flag; - - switch (id) { - case 0: - // clueboard specific hook to make escape quite tetris - if (tetris_running) { - tetris_running = 0; - return; - } - - /* Handle the combined Grave/Esc key - */ - mods_pressed = get_mods()&GRAVE_MODS; // Check to see what mods are pressed - - if (record->event.pressed) { - /* The key is being pressed. - */ - if (mods_pressed) { - mod_flag = true; - add_key(KC_GRV); - send_keyboard_report(); - } else { - add_key(KC_ESC); - send_keyboard_report(); - } - } else { - /* The key is being released. - */ - if (mod_flag) { - mod_flag = false; - del_key(KC_GRV); - send_keyboard_report(); - } else { - del_key(KC_ESC); - send_keyboard_report(); - } - } - break; - case 1: - if (record->event.pressed) { - tetris_running = 1; - tetris_timer = 0; - tetris_keypress = 0; - // set randomness using total number of key presses - tetris_start(tetris_key_presses); - } - break; - } -} - /* * Set up tetris */ @@ -130,6 +71,25 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } } + switch (keycode) { + case KC_GESC: + // clueboard specific hook to make escape quite tetris + if (tetris_running) { + tetris_running = 0; + return false; + } + break; + case TETRIS_START: + if (record->event.pressed) { + tetris_running = 1; + tetris_timer = 0; + tetris_keypress = 0; + // set randomness using total number of key presses + tetris_start(tetris_key_presses); + } + return false; + } + return true; } @@ -148,57 +108,45 @@ void matrix_scan_user(void) { } } -void send_keycode(uint16_t keycode) { - register_code(keycode); - unregister_code(keycode); -} - -void send_keycode_shift(uint16_t keycode) { - register_code(KC_LSFT); - register_code(keycode); - unregister_code(keycode); - unregister_code(KC_LSFT); -} - void tetris_send_up(void) { - send_keycode(KC_UP); + tap_code(KC_UP); } void tetris_send_left(void) { - send_keycode(KC_LEFT); + tap_code(KC_LEFT); } void tetris_send_down(void) { - send_keycode(KC_DOWN); + tap_code(KC_DOWN); } void tetris_send_right(void) { - send_keycode(KC_RGHT); + tap_code(KC_RGHT); } void tetris_send_backspace(void) { - send_keycode(KC_BSPC); + tap_code(KC_BSPC); } void tetris_send_delete(void) { - send_keycode(KC_DEL); + tap_code(KC_DEL); } void tetris_send_string(const char *s) { for (int i = 0; s[i] != 0; i++) { if (s[i] >= 'a' && s[i] <= 'z') { - send_keycode(KC_A + (s[i] - 'a')); + tap_code(KC_A + (s[i] - 'a')); } else if (s[i] >= 'A' && s[i] <= 'Z') { - send_keycode_shift(KC_A + (s[i] - 'A')); + tap_code16(S(KC_A + (s[i] - 'A'))); } else if (s[i] >= '1' && s[i] <= '9') { - send_keycode(KC_1 + (s[i] - '1')); + tap_code(KC_1 + (s[i] - '1')); } else { switch (s[i]) { - case ' ': send_keycode(KC_SPACE); break; - case '.': send_keycode(KC_DOT); break; - case '0': send_keycode(KC_0); break; + case ' ': tap_code(KC_SPACE); break; + case '.': tap_code(KC_DOT); break; + case '0': tap_code(KC_0); break; } } } } void tetris_send_newline(void) { - send_keycode(KC_ENT); + tap_code(KC_ENT); } int tetris_get_keypress(void) { diff --git a/keyboards/clueboard/66/rev1/info.json b/keyboards/clueboard/66/rev1/info.json index beb83b5e654e..6ff733b3ddae 100644 --- a/keyboards/clueboard/66/rev1/info.json +++ b/keyboards/clueboard/66/rev1/info.json @@ -2,8 +2,6 @@ "manufacturer": "Clueboard", "keyboard_name": "Clueboard 66%", "maintainer": "skullydazed", - "height": 5, - "width": 16.5, "processor": "atmega32u4", "debounce": 5, "diode_direction": "COL2ROW", @@ -45,12 +43,10 @@ }, "community_layouts": ["66_ansi", "66_iso"], "layout_aliases": { - "KEYMAP": "LAYOUT_all", "LAYOUT": "LAYOUT_all" }, "layouts": { "LAYOUT_66_ansi": { - "key_count": 66, "layout": [ { "label": "~", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, { "label": "!", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, @@ -121,7 +117,6 @@ ] }, "LAYOUT_66_iso": { - "key_count": 67, "layout": [ { "label": "~", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, { "label": "!", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, @@ -193,7 +188,6 @@ ] }, "LAYOUT_all": { - "key_count": 73, "layout": [ { "label": "GRAVE", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, { "label": "1", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, diff --git a/keyboards/clueboard/66/rev2/info.json b/keyboards/clueboard/66/rev2/info.json index 603558de829d..27d293552db3 100644 --- a/keyboards/clueboard/66/rev2/info.json +++ b/keyboards/clueboard/66/rev2/info.json @@ -2,8 +2,6 @@ "manufacturer": "Clueboard", "keyboard_name": "Clueboard 66%", "maintainer": "skullydazed", - "height": 5, - "width": 16.5, "processor": "atmega32u4", "debounce": 5, "diode_direction": "COL2ROW", @@ -45,12 +43,10 @@ }, "community_layouts": ["66_ansi", "66_iso"], "layout_aliases": { - "KEYMAP": "LAYOUT_all", "LAYOUT": "LAYOUT_all" }, "layouts": { "LAYOUT_66_ansi": { - "key_count": 66, "layout": [ { "label": "~", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, { "label": "!", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, @@ -121,7 +117,6 @@ ] }, "LAYOUT_66_iso": { - "key_count": 67, "layout": [ { "label": "~", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, { "label": "!", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, @@ -193,7 +188,6 @@ ] }, "LAYOUT_all": { - "key_count": 73, "layout": [ { "label": "GRAVE", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, { "label": "1", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, diff --git a/keyboards/clueboard/66/rev3/info.json b/keyboards/clueboard/66/rev3/info.json index d3b13bed7ad6..0f2eada753e6 100644 --- a/keyboards/clueboard/66/rev3/info.json +++ b/keyboards/clueboard/66/rev3/info.json @@ -2,8 +2,6 @@ "manufacturer": "Clueboard", "keyboard_name": "Clueboard 66% rev3", "maintainer": "skullydazed", - "height": 5, - "width": 16.5, "processor": "atmega32u4", "debounce": 5, "diode_direction": "COL2ROW", @@ -45,12 +43,10 @@ }, "community_layouts": ["66_ansi", "66_iso"], "layout_aliases": { - "KEYMAP": "LAYOUT_all", "LAYOUT": "LAYOUT_all" }, "layouts": { "LAYOUT_66_ansi": { - "key_count": 66, "layout": [ { "label": "~", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, { "label": "!", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, @@ -121,7 +117,6 @@ ] }, "LAYOUT_66_iso": { - "key_count": 67, "layout": [ { "label": "~", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, { "label": "!", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, @@ -193,7 +188,6 @@ ] }, "LAYOUT_all": { - "key_count": 73, "layout": [ { "label": "GRAVE", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, { "label": "1", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, diff --git a/keyboards/clueboard/66/rev4/info.json b/keyboards/clueboard/66/rev4/info.json index 9c8fcbef5e44..f1f1ae4dec5a 100644 --- a/keyboards/clueboard/66/rev4/info.json +++ b/keyboards/clueboard/66/rev4/info.json @@ -2,8 +2,6 @@ "manufacturer": "Clueboard", "keyboard_name": "Clueboard 66% rev4", "maintainer": "skullydazed", - "height": 5, - "width": 16.5, "debounce": 5, "processor": "STM32F303", "board": "QMK_PROTON_C", @@ -43,12 +41,10 @@ }, "community_layouts": ["66_ansi", "66_iso"], "layout_aliases": { - "KEYMAP": "LAYOUT_all", "LAYOUT": "LAYOUT_all" }, "layouts": { "LAYOUT_66_ansi": { - "key_count": 66, "layout": [ { "label": "~", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, { "label": "!", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, @@ -119,7 +115,6 @@ ] }, "LAYOUT_66_iso": { - "key_count": 67, "layout": [ { "label": "~", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, { "label": "!", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, @@ -191,7 +186,6 @@ ] }, "LAYOUT_all": { - "key_count": 73, "layout": [ { "label": "GRAVE", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, { "label": "1", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, diff --git a/keyboards/clueboard/66/rev4/rev4.c b/keyboards/clueboard/66/rev4/rev4.c index 00d4f325e507..510181827097 100644 --- a/keyboards/clueboard/66/rev4/rev4.c +++ b/keyboards/clueboard/66/rev4/rev4.c @@ -1,12 +1,6 @@ #include "rev4.h" -void matrix_init_kb(void) { - led_init_ports(); - - matrix_init_user(); -} - -void led_init_ports() { +void led_init_ports(void) { // Set our LED pins as output setPinOutput(B13); // LED1 writePinLow(B13); diff --git a/keyboards/clueboard/66_hotswap/gen1/config.h b/keyboards/clueboard/66_hotswap/gen1/config.h index e0e69a2bafee..1e124745bd97 100644 --- a/keyboards/clueboard/66_hotswap/gen1/config.h +++ b/keyboards/clueboard/66_hotswap/gen1/config.h @@ -65,26 +65,6 @@ //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Backlight configuration */ #define BACKLIGHT_LEVELS 10 @@ -97,12 +77,38 @@ // 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 +// LED Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_led_matrix?id=led-matrix-effects +#define ENABLE_LED_MATRIX_ALPHAS_MODS +#define ENABLE_LED_MATRIX_BREATHING +#define ENABLE_LED_MATRIX_BAND +#define ENABLE_LED_MATRIX_BAND_PINWHEEL +#define ENABLE_LED_MATRIX_BAND_SPIRAL +#define ENABLE_LED_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_LED_MATRIX_CYCLE_UP_DOWN +#define ENABLE_LED_MATRIX_CYCLE_OUT_IN +#define ENABLE_LED_MATRIX_DUAL_BEACON +#if defined(LED_MATRIX_KEYREACTIVE_ENABLED) +# define ENABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_LED_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_LED_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_LED_MATRIX_SPLASH +# define ENABLE_LED_MATRIX_MULTISPLASH +#endif +#define ENABLE_LED_MATRIX_WAVE_LEFT_RIGHT +#define ENABLE_LED_MATRIX_WAVE_UP_DOWN + #define AUDIO_PIN A5 #define AUDIO_PIN_ALT A4 #define AUDIO_PIN_ALT_AS_NEGATIVE diff --git a/keyboards/clueboard/66_hotswap/gen1/gen1.c b/keyboards/clueboard/66_hotswap/gen1/gen1.c index 339bd78d5abd..66c40731ec81 100644 --- a/keyboards/clueboard/66_hotswap/gen1/gen1.c +++ b/keyboards/clueboard/66_hotswap/gen1/gen1.c @@ -16,7 +16,7 @@ #include "gen1.h" #ifdef LED_MATRIX_ENABLE -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { /* Refer to IS31 manual for these locations * driver * | LED address diff --git a/keyboards/clueboard/66_hotswap/gen1/info.json b/keyboards/clueboard/66_hotswap/gen1/info.json index bcf66e8afc00..5e0e5b8acaf9 100644 --- a/keyboards/clueboard/66_hotswap/gen1/info.json +++ b/keyboards/clueboard/66_hotswap/gen1/info.json @@ -2,8 +2,6 @@ "manufacturer": "Clueboard", "keyboard_name": "Clueboard 66% HotSwap Gen1", "maintainer": "skullydazed", - "height": 5, - "width": 16.5, "debounce": 5, "processor": "STM32F303", "board": "QMK_PROTON_C", @@ -36,7 +34,6 @@ }, "layouts": { "LAYOUT_66_ansi": { - "key_count": 66, "layout": [ { "label": "k00", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, { "label": "k01", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, @@ -107,7 +104,6 @@ ] }, "LAYOUT_all": { - "key_count": 68, "layout": [ { "label": "k00", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, { "label": "k01", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, diff --git a/keyboards/clueboard/66_hotswap/gen1/keymaps/66_ansi/keymap.c b/keyboards/clueboard/66_hotswap/gen1/keymaps/66_ansi/keymap.c new file mode 100644 index 000000000000..9c4bd407942b --- /dev/null +++ b/keyboards/clueboard/66_hotswap/gen1/keymaps/66_ansi/keymap.c @@ -0,0 +1,52 @@ +/* Copyright 2017 Zach White + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +#define _BL 0 +#define _FL 1 +#define _CL 2 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: Base Layer (Default Layer) + */ +[_BL] = LAYOUT_66_ansi( + KC_GESC,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, KC_PGUP, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS, KC_PGDN, \ + KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \ + KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,MO(_FL),KC_RCTL,KC_LEFT,KC_DOWN,KC_RGHT), + + /* Keymap _FL: Function Layer + */ +[_FL] = LAYOUT_66_ansi( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_VOLU, \ + _______,_______,_______,_______,_______,_______,_______,_______,_______,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_MUTE, KC_VOLD, \ + _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \ + _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, KC_PGUP, \ + _______,_______,_______, _______, _______,MO(_FL),_______,KC_HOME,KC_PGDN,KC_END), + + /* Keymap _CL: Control layer + */ +[_CL] = LAYOUT_66_ansi( + BL_STEP,RGB_M_P,RGB_M_B,RGB_M_R,RGB_M_SW,RGB_M_SN,RGB_M_K,RGB_M_X,RGB_M_G,_______,_______,_______,_______, RGB_TOG, RGB_VAI, \ + _______,_______,_______,_______,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_VAD, \ + _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \ + _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, RGB_SAI, \ + _______,_______,_______, RGB_MOD, _______,MO(_FL),_______,RGB_HUD,RGB_SAD,RGB_HUI), +}; diff --git a/keyboards/clueboard/66_hotswap/keymaps/66_ansi/readme.md b/keyboards/clueboard/66_hotswap/gen1/keymaps/66_ansi/readme.md similarity index 100% rename from keyboards/clueboard/66_hotswap/keymaps/66_ansi/readme.md rename to keyboards/clueboard/66_hotswap/gen1/keymaps/66_ansi/readme.md diff --git a/keyboards/clueboard/66_hotswap/gen1/keymaps/default/keymap.c b/keyboards/clueboard/66_hotswap/gen1/keymaps/default/keymap.c new file mode 100644 index 000000000000..3d640d89b149 --- /dev/null +++ b/keyboards/clueboard/66_hotswap/gen1/keymaps/default/keymap.c @@ -0,0 +1,139 @@ +/* Copyright 2017 Zach White + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +#define _BL 0 +#define _FL 1 +#define _CL 2 + +enum custom_keycodes { + S_BSKTC = SAFE_RANGE, + S_ODEJY, + S_RCKBY, + S_DOEDR, + S_SCALE, + S_ONEUP, + S_COIN, + S_SONIC, + S_ZELDA +}; + +#ifdef AUDIO_ENABLE + float song_basketcase[][2] = SONG(BASKET_CASE); + float song_ode_to_joy[][2] = SONG(ODE_TO_JOY); + float song_rock_a_bye_baby[][2] = SONG(ROCK_A_BYE_BABY); + float song_doe_a_deer[][2] = SONG(DOE_A_DEER); + float song_scale[][2] = SONG(MUSIC_SCALE_SOUND); + float song_coin[][2] = SONG(COIN_SOUND); + float song_one_up[][2] = SONG(ONE_UP_SOUND); + float song_sonic_ring[][2] = SONG(SONIC_RING); + float song_zelda_puzzle[][2] = SONG(ZELDA_PUZZLE); +#endif + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: Base Layer (Default Layer) + */ +[_BL] = LAYOUT( + KC_GESC,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, KC_PGUP, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS, KC_PGDN, \ + KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \ + KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_SPC, KC_RGUI,KC_RALT,MO(_FL),KC_RCTL,KC_LEFT,KC_DOWN,KC_RGHT), + + /* Keymap _FL: Function Layer + */ +[_FL] = LAYOUT( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_VOLU, \ + _______,_______,_______,_______,_______,_______,_______,_______,_______,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_MUTE, KC_VOLD, \ + _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \ + _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, KC_PGUP, \ + _______,_______,_______, _______,_______, _______,_______,MO(_FL),_______,KC_HOME,KC_PGDN,KC_END), + + /* Keymap _CL: Control layer + */ +[_CL] = LAYOUT( + BL_STEP,S_ONEUP,S_SCALE,RGB_M_R,RGB_M_SW,RGB_M_SN,RGB_M_K,RGB_M_X,RGB_M_G,_______,_______,_______,_______, BL_TOGG, BL_INC, \ + _______,_______,_______,_______,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______, BL_DEC, \ + _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \ + _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, RGB_SAI, \ + _______,_______,_______, BL_BRTG,BL_BRTG, _______,_______,MO(_FL),_______,RGB_HUD,RGB_SAD,RGB_HUI), +}; + + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + #ifdef AUDIO_ENABLE + case S_BSKTC: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_basketcase); + } + return false; + case S_ODEJY: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_ode_to_joy); + } + return false; + case S_RCKBY: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_rock_a_bye_baby); + } + return false; + case S_DOEDR: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_doe_a_deer); + } + return false; + case S_SCALE: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_scale); + } + return false; + case S_ONEUP: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_one_up); + } + return false; + case S_COIN: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_coin); + } + return false; + case S_SONIC: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_sonic_ring); + } + return false; + case S_ZELDA: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_zelda_puzzle); + } + return false; + #endif + } + return true; +} diff --git a/keyboards/clueboard/66_hotswap/keymaps/default/readme.md b/keyboards/clueboard/66_hotswap/gen1/keymaps/default/readme.md similarity index 100% rename from keyboards/clueboard/66_hotswap/keymaps/default/readme.md rename to keyboards/clueboard/66_hotswap/gen1/keymaps/default/readme.md diff --git a/keyboards/clueboard/66_hotswap/keymaps/json/keymap.json b/keyboards/clueboard/66_hotswap/gen1/keymaps/json/keymap.json similarity index 100% rename from keyboards/clueboard/66_hotswap/keymaps/json/keymap.json rename to keyboards/clueboard/66_hotswap/gen1/keymaps/json/keymap.json diff --git a/keyboards/clueboard/66_hotswap/keymaps/66_ansi/keymap.c b/keyboards/clueboard/66_hotswap/keymaps/66_ansi/keymap.c deleted file mode 100644 index 224362fe549e..000000000000 --- a/keyboards/clueboard/66_hotswap/keymaps/66_ansi/keymap.c +++ /dev/null @@ -1,36 +0,0 @@ -#include QMK_KEYBOARD_H - -// Each layer gets a name for readability, which is then used in the keymap matrix below. -// The underscores don't mean anything - you can have a layer called STUFF or any other name. -#define _BL 0 -#define _FL 1 -#define _CL 2 - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Keymap _BL: Base Layer (Default Layer) - */ -[_BL] = LAYOUT_66_ansi( - KC_GESC,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, KC_PGUP, \ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS, KC_PGDN, \ - KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, \ - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \ - KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,MO(_FL),KC_RCTL,KC_LEFT,KC_DOWN,KC_RGHT), - - /* Keymap _FL: Function Layer - */ -[_FL] = LAYOUT_66_ansi( - KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_VOLU, \ - _______,_______,_______,_______,_______,_______,_______,_______,_______,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_MUTE, KC_VOLD, \ - _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \ - _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, KC_PGUP, \ - _______,_______,_______, _______, _______,MO(_FL),_______,KC_HOME,KC_PGDN,KC_END), - - /* Keymap _CL: Control layer - */ -[_CL] = LAYOUT_66_ansi( - BL_STEP,RGB_M_P,RGB_M_B,RGB_M_R,RGB_M_SW,RGB_M_SN,RGB_M_K,RGB_M_X,RGB_M_G,_______,_______,_______,_______, RGB_TOG, RGB_VAI, \ - _______,_______,_______,_______,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_VAD, \ - _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \ - _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, RGB_SAI, \ - _______,_______,_______, RGB_MOD, _______,MO(_FL),_______,RGB_HUD,RGB_SAD,RGB_HUI), -}; diff --git a/keyboards/clueboard/66_hotswap/keymaps/default/keymap.c b/keyboards/clueboard/66_hotswap/keymaps/default/keymap.c deleted file mode 100644 index 6451cf0370bc..000000000000 --- a/keyboards/clueboard/66_hotswap/keymaps/default/keymap.c +++ /dev/null @@ -1,123 +0,0 @@ -#include QMK_KEYBOARD_H - -// Each layer gets a name for readability, which is then used in the keymap matrix below. -// The underscores don't mean anything - you can have a layer called STUFF or any other name. -#define _BL 0 -#define _FL 1 -#define _CL 2 - -enum custom_keycodes { - S_BSKTC = SAFE_RANGE, - S_ODEJY, - S_RCKBY, - S_DOEDR, - S_SCALE, - S_ONEUP, - S_COIN, - S_SONIC, - S_ZELDA -}; - -#ifdef AUDIO_ENABLE - float song_basketcase[][2] = SONG(BASKET_CASE); - float song_ode_to_joy[][2] = SONG(ODE_TO_JOY); - float song_rock_a_bye_baby[][2] = SONG(ROCK_A_BYE_BABY); - float song_doe_a_deer[][2] = SONG(DOE_A_DEER); - float song_scale[][2] = SONG(MUSIC_SCALE_SOUND); - float song_coin[][2] = SONG(COIN_SOUND); - float song_one_up[][2] = SONG(ONE_UP_SOUND); - float song_sonic_ring[][2] = SONG(SONIC_RING); - float song_zelda_puzzle[][2] = SONG(ZELDA_PUZZLE); -#endif - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Keymap _BL: Base Layer (Default Layer) - */ -[_BL] = LAYOUT( - KC_GESC,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, KC_PGUP, \ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS, KC_PGDN, \ - KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, \ - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \ - KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_SPC, KC_RGUI,KC_RALT,MO(_FL),KC_RCTL,KC_LEFT,KC_DOWN,KC_RGHT), - - /* Keymap _FL: Function Layer - */ -[_FL] = LAYOUT( - KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_VOLU, \ - _______,_______,_______,_______,_______,_______,_______,_______,_______,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_MUTE, KC_VOLD, \ - _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \ - _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, KC_PGUP, \ - _______,_______,_______, _______,_______, _______,_______,MO(_FL),_______,KC_HOME,KC_PGDN,KC_END), - - /* Keymap _CL: Control layer - */ -[_CL] = LAYOUT( - BL_STEP,S_ONEUP,S_SCALE,RGB_M_R,RGB_M_SW,RGB_M_SN,RGB_M_K,RGB_M_X,RGB_M_G,_______,_______,_______,_______, BL_TOGG, BL_INC, \ - _______,_______,_______,_______,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______, BL_DEC, \ - _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \ - _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, RGB_SAI, \ - _______,_______,_______, BL_BRTG,BL_BRTG, _______,_______,MO(_FL),_______,RGB_HUD,RGB_SAD,RGB_HUI), -}; - - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - #ifdef AUDIO_ENABLE - case S_BSKTC: - if (record->event.pressed) { - stop_all_notes(); - PLAY_SONG(song_basketcase); - } - return false; - case S_ODEJY: - if (record->event.pressed) { - stop_all_notes(); - PLAY_SONG(song_ode_to_joy); - } - return false; - case S_RCKBY: - if (record->event.pressed) { - stop_all_notes(); - PLAY_SONG(song_rock_a_bye_baby); - } - return false; - case S_DOEDR: - if (record->event.pressed) { - stop_all_notes(); - PLAY_SONG(song_doe_a_deer); - } - return false; - case S_SCALE: - if (record->event.pressed) { - stop_all_notes(); - PLAY_SONG(song_scale); - } - return false; - case S_ONEUP: - if (record->event.pressed) { - stop_all_notes(); - PLAY_SONG(song_one_up); - } - return false; - case S_COIN: - if (record->event.pressed) { - stop_all_notes(); - PLAY_SONG(song_coin); - } - return false; - case S_SONIC: - if (record->event.pressed) { - stop_all_notes(); - PLAY_SONG(song_sonic_ring); - } - return false; - case S_ZELDA: - if (record->event.pressed) { - stop_all_notes(); - PLAY_SONG(song_zelda_puzzle); - } - return false; - #endif - } - return true; -} diff --git a/keyboards/clueboard/66_hotswap/prototype/info.json b/keyboards/clueboard/66_hotswap/prototype/info.json index 0b55b3b638e4..d3f81851f4d6 100644 --- a/keyboards/clueboard/66_hotswap/prototype/info.json +++ b/keyboards/clueboard/66_hotswap/prototype/info.json @@ -2,8 +2,6 @@ "manufacturer": "Clueboard", "keyboard_name": "Clueboard 66% HotSwap Prototype", "maintainer": "skullydazed", - "height": 5, - "width": 16.5, "debounce": 5, "diode_direction": "COL2ROW", "processor": "atmega32u4", @@ -45,12 +43,10 @@ }, "community_layouts": ["66_ansi"], "layout_aliases": { - "KEYMAP": "LAYOUT_all", "LAYOUT": "LAYOUT_all" }, "layouts": { "LAYOUT_66_ansi": { - "key_count": 66, "layout": [ { "label": "k00", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, { "label": "k01", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, @@ -121,7 +117,6 @@ ] }, "LAYOUT_all": { - "key_count": 70, "layout": [ { "label": "k00", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, { "label": "k01", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, diff --git a/keyboards/clueboard/66_hotswap/prototype/keymaps/66_ansi/keymap.c b/keyboards/clueboard/66_hotswap/prototype/keymaps/66_ansi/keymap.c new file mode 100644 index 000000000000..9c4bd407942b --- /dev/null +++ b/keyboards/clueboard/66_hotswap/prototype/keymaps/66_ansi/keymap.c @@ -0,0 +1,52 @@ +/* Copyright 2017 Zach White + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +#define _BL 0 +#define _FL 1 +#define _CL 2 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: Base Layer (Default Layer) + */ +[_BL] = LAYOUT_66_ansi( + KC_GESC,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, KC_PGUP, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS, KC_PGDN, \ + KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \ + KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,MO(_FL),KC_RCTL,KC_LEFT,KC_DOWN,KC_RGHT), + + /* Keymap _FL: Function Layer + */ +[_FL] = LAYOUT_66_ansi( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_VOLU, \ + _______,_______,_______,_______,_______,_______,_______,_______,_______,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_MUTE, KC_VOLD, \ + _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \ + _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, KC_PGUP, \ + _______,_______,_______, _______, _______,MO(_FL),_______,KC_HOME,KC_PGDN,KC_END), + + /* Keymap _CL: Control layer + */ +[_CL] = LAYOUT_66_ansi( + BL_STEP,RGB_M_P,RGB_M_B,RGB_M_R,RGB_M_SW,RGB_M_SN,RGB_M_K,RGB_M_X,RGB_M_G,_______,_______,_______,_______, RGB_TOG, RGB_VAI, \ + _______,_______,_______,_______,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_VAD, \ + _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \ + _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, RGB_SAI, \ + _______,_______,_______, RGB_MOD, _______,MO(_FL),_______,RGB_HUD,RGB_SAD,RGB_HUI), +}; diff --git a/keyboards/clueboard/66_hotswap/prototype/keymaps/66_ansi/readme.md b/keyboards/clueboard/66_hotswap/prototype/keymaps/66_ansi/readme.md new file mode 100644 index 000000000000..25b5d7eb18c7 --- /dev/null +++ b/keyboards/clueboard/66_hotswap/prototype/keymaps/66_ansi/readme.md @@ -0,0 +1,11 @@ +![Clueboard Layout Image](http://i.imgur.com/7Capi8W.png) + +# Basic Clueboard 66% Hotswap Layout + +This is the default layout that comes flashed on every Clueboard. For the most +part it's a straightforward and easy to follow layout. The only unusual key is +the key in the upper left, which sends Escape normally, but Grave when any of +the Ctrl, Alt, or GUI modifiers are held down. + +This uses `LAYOUT_66_ansi`, which is compatable with the `66_ansi` community +layout. diff --git a/keyboards/clueboard/66_hotswap/prototype/keymaps/default/keymap.c b/keyboards/clueboard/66_hotswap/prototype/keymaps/default/keymap.c new file mode 100644 index 000000000000..3b8ff6600506 --- /dev/null +++ b/keyboards/clueboard/66_hotswap/prototype/keymaps/default/keymap.c @@ -0,0 +1,139 @@ +/* Copyright 2017 Zach White + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +#define _BL 0 +#define _FL 1 +#define _CL 2 + +enum custom_keycodes { + S_BSKTC = SAFE_RANGE, + S_ODEJY, + S_RCKBY, + S_DOEDR, + S_SCALE, + S_ONEUP, + S_COIN, + S_SONIC, + S_ZELDA +}; + +#ifdef AUDIO_ENABLE + float song_basketcase[][2] = SONG(BASKET_CASE); + float song_ode_to_joy[][2] = SONG(ODE_TO_JOY); + float song_rock_a_bye_baby[][2] = SONG(ROCK_A_BYE_BABY); + float song_doe_a_deer[][2] = SONG(DOE_A_DEER); + float song_scale[][2] = SONG(MUSIC_SCALE_SOUND); + float song_coin[][2] = SONG(COIN_SOUND); + float song_one_up[][2] = SONG(ONE_UP_SOUND); + float song_sonic_ring[][2] = SONG(SONIC_RING); + float song_zelda_puzzle[][2] = SONG(ZELDA_PUZZLE); +#endif + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: Base Layer (Default Layer) + */ +[_BL] = LAYOUT( + KC_GESC,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, KC_PGUP, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS, KC_PGDN, \ + KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, \ + KC_LSFT, KC_NUHS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_NUBS,KC_RSFT, KC_UP, \ + KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_SPC, KC_RGUI,KC_RALT,MO(_FL),KC_RCTL,KC_LEFT,KC_DOWN,KC_RGHT), + + /* Keymap _FL: Function Layer + */ +[_FL] = LAYOUT( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_VOLU, \ + _______,_______,_______,_______,_______,_______,_______,_______,_______,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_MUTE, KC_VOLD, \ + _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \ + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______, KC_PGUP, \ + _______,_______,_______, _______,_______, _______,_______,MO(_FL),_______,KC_HOME,KC_PGDN,KC_END), + + /* Keymap _CL: Control layer + */ +[_CL] = LAYOUT( + BL_STEP,S_ONEUP,S_SCALE,RGB_M_R,RGB_M_SW,RGB_M_SN,RGB_M_K,RGB_M_X,RGB_M_G,_______,_______,_______,_______, BL_TOGG, BL_INC, \ + _______,_______,_______,_______,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______, BL_DEC, \ + _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \ + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_SAI, \ + _______,_______,_______, BL_BRTG,BL_BRTG, _______,_______,MO(_FL),_______,RGB_HUD,RGB_SAD,RGB_HUI), +}; + + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + #ifdef AUDIO_ENABLE + case S_BSKTC: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_basketcase); + } + return false; + case S_ODEJY: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_ode_to_joy); + } + return false; + case S_RCKBY: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_rock_a_bye_baby); + } + return false; + case S_DOEDR: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_doe_a_deer); + } + return false; + case S_SCALE: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_scale); + } + return false; + case S_ONEUP: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_one_up); + } + return false; + case S_COIN: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_coin); + } + return false; + case S_SONIC: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_sonic_ring); + } + return false; + case S_ZELDA: + if (record->event.pressed) { + stop_all_notes(); + PLAY_SONG(song_zelda_puzzle); + } + return false; + #endif + } + return true; +} diff --git a/keyboards/clueboard/66_hotswap/prototype/keymaps/default/readme.md b/keyboards/clueboard/66_hotswap/prototype/keymaps/default/readme.md new file mode 100644 index 000000000000..66e52308869d --- /dev/null +++ b/keyboards/clueboard/66_hotswap/prototype/keymaps/default/readme.md @@ -0,0 +1,8 @@ +![Clueboard Layout Image](http://i.imgur.com/7Capi8W.png) + +# Default Clueboard 66% Hotswap Layout + +This is the default layout that comes flashed on every Clueboard. For the most +part it's a straightforward and easy to follow layout. The only unusual key is +the key in the upper left, which sends Escape normally, but Grave when any of +the Ctrl, Alt, or GUI modifiers are held down. diff --git a/keyboards/clueboard/66_hotswap/prototype/rules.mk b/keyboards/clueboard/66_hotswap/prototype/rules.mk index f144042edd22..02ad91caa970 100644 --- a/keyboards/clueboard/66_hotswap/prototype/rules.mk +++ b/keyboards/clueboard/66_hotswap/prototype/rules.mk @@ -3,4 +3,4 @@ # BACKLIGHT_DRIVER = custom -EXTRAFLAGS += -flto +LTO_ENABLE = yes diff --git a/keyboards/clueboard/card/info.json b/keyboards/clueboard/card/info.json index 67830c423531..24088b2c41b2 100644 --- a/keyboards/clueboard/card/info.json +++ b/keyboards/clueboard/card/info.json @@ -2,8 +2,6 @@ "manufacturer": "Clueboard", "keyboard_name": "Cluecard", "maintainer": "skullydazed", - "height": 8, - "width": 10, "debounce": 20, "processor": "atmega32u4", "diode_direction": "ROW2COL", @@ -43,7 +41,6 @@ }, "layouts": { "LAYOUT_all": { - "key_count": 12, "layout": [ { "label": "ON/OFF", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, { "label": "SAT+", "matrix": [0, 1], "w": 1, "x": 4, "y": 0 }, diff --git a/keyboards/clueboard/card/keymaps/default/keymap.c b/keyboards/clueboard/card/keymaps/default/keymap.c index 0d94eb46c92a..23ff1c4ec21e 100644 --- a/keyboards/clueboard/card/keymaps/default/keymap.c +++ b/keyboards/clueboard/card/keymaps/default/keymap.c @@ -29,13 +29,6 @@ float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); float tone_goodbye[][2] = SONG(GOODBYE_SOUND); #endif -void matrix_init_user(void) { -} - -void matrix_scan_user(void) { - -} - bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { #ifdef AUDIO_ENABLE @@ -64,6 +57,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return true; } } - -void led_set_user(uint8_t usb_led) { -} diff --git a/keyboards/clueboard/card/keymaps/default/rules.mk b/keyboards/clueboard/card/keymaps/default/rules.mk index 82ee482bed11..780b69428282 100644 --- a/keyboards/clueboard/card/keymaps/default/rules.mk +++ b/keyboards/clueboard/card/keymaps/default/rules.mk @@ -2,16 +2,12 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls AUDIO_ENABLE = no # Audio output -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend diff --git a/keyboards/clueboard/card/keymaps/rgb_effects/keymap.c b/keyboards/clueboard/card/keymaps/rgb_effects/keymap.c index 92d39aef5b62..c30e5082075e 100644 --- a/keyboards/clueboard/card/keymaps/rgb_effects/keymap.c +++ b/keyboards/clueboard/card/keymaps/rgb_effects/keymap.c @@ -12,17 +12,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint8_t RGBLED_SNAKE_INTERVALS[] PROGMEM = {255, 170, 85}; const uint8_t RGBLED_KNIGHT_INTERVALS[] PROGMEM = {255, 170, 85}; - -void matrix_init_user(void) { -} - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { -} diff --git a/keyboards/clueboard/card/keymaps/rgb_effects/rules.mk b/keyboards/clueboard/card/keymaps/rgb_effects/rules.mk index 54d74abbe53a..bb487f988cd8 100644 --- a/keyboards/clueboard/card/keymaps/rgb_effects/rules.mk +++ b/keyboards/clueboard/card/keymaps/rgb_effects/rules.mk @@ -2,16 +2,12 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = no # Audio control and System control(+450) CONSOLE_ENABLE = yes # Console for debug(+400) COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend diff --git a/keyboards/cmm_studio/saka68/hotswap/config.h b/keyboards/cmm_studio/saka68/hotswap/config.h index 7f19723b7001..9879dadd5064 100644 --- a/keyboards/cmm_studio/saka68/hotswap/config.h +++ b/keyboards/cmm_studio/saka68/hotswap/config.h @@ -25,7 +25,7 @@ along with this program. If not, see . #define PRODUCT_ID 0x5348 #define DEVICE_VER 0x0001 #define MANUFACTURER CMM.Studio -#define PRODUCT Saka68 +#define PRODUCT Saka68 Hotswap /* key matrix size */ #define MATRIX_ROWS 5 @@ -45,7 +45,3 @@ along with this program. If not, see . #define MATRIX_COL_PINS { D4, D6, D7, B4, B5, B6, C6, F5, F4, F1, F0, B1, B2, B3, D3, D5 } #define DIODE_DIRECTION COL2ROW - - -// generated by KBFirmware JSON to QMK Parser -// https://noroadsleft.github.io/kbf_qmk_converter/ diff --git a/keyboards/cmm_studio/saka68/hotswap/hotswap.h b/keyboards/cmm_studio/saka68/hotswap/hotswap.h index 69f782ad78d4..f8b45f09807a 100644 --- a/keyboards/cmm_studio/saka68/hotswap/hotswap.h +++ b/keyboards/cmm_studio/saka68/hotswap/hotswap.h @@ -14,23 +14,34 @@ * along with this program. If not, see . */ - #pragma once +#pragma once - #include "quantum.h" +#include "quantum.h" - #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, K1E, K1F, \ - 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, K3E, \ - K40, K41, K42, K46, K49, K4A, K4B, 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, K1E, K1F }, \ - { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO, KC_NO }, \ - { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KC_NO, K3E, KC_NO }, \ - { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, K49, K4A, K4B, KC_NO, K4D, K4E, K4F }, \ - } +#define LAYOUT_68_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, K1E, K1F, \ + 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, K3E, \ + K40, K41, K42, K46, K49, K4A, K4B, 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, K1E, K1F }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO, KC_NO }, \ + { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KC_NO, K3E, KC_NO }, \ + { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, K49, K4A, K4B, KC_NO, K4D, K4E, K4F }, \ +} - // generated by KBFirmware JSON to QMK Parser - // https://noroadsleft.github.io/kbf_qmk_converter/ +#define LAYOUT_68_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, K1E, K1F, \ + 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, K3E, \ + K40, K41, K42, K46, K49, K4A, K4B, 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, K1E, K1F }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO, KC_NO }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KC_NO, K3E, KC_NO }, \ + { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, K49, K4A, K4B, KC_NO, K4D, K4E, K4F }, \ +} diff --git a/keyboards/cmm_studio/saka68/hotswap/info.json b/keyboards/cmm_studio/saka68/hotswap/info.json index f6d467159ace..2e48427712d4 100644 --- a/keyboards/cmm_studio/saka68/hotswap/info.json +++ b/keyboards/cmm_studio/saka68/hotswap/info.json @@ -1,11 +1,12 @@ { - "keyboard_name": "CMM.Studio Saka68", + "keyboard_name": "CMM.Studio Saka68 Hotswap", "url": "", - "maintainer": "qmk", - "width": 17.25, - "height": 5, + "maintainer": "CMMS-Freather", + "layout_aliases": { + "LAYOUT": "LAYOUT_68_ansi" + }, "layouts": { - "LAYOUT": { + "LAYOUT_68_ansi": { "layout": [ {"label":"K00 (D2,D4)", "x":0, "y":0}, {"label":"K01 (D2,D6)", "x":1, "y":0}, @@ -23,6 +24,7 @@ {"label":"K0D (D2,B3)", "x":13, "y":0, "w":2}, {"label":"K0E (D2,D3)", "x":15.25, "y":0}, {"label":"K0F (D2,D5)", "x":16.25, "y":0}, + {"label":"K10 (D1,D4)", "x":0, "y":1, "w":1.5}, {"label":"K11 (D1,D6)", "x":1.5, "y":1}, {"label":"K12 (D1,D7)", "x":2.5, "y":1}, @@ -39,6 +41,7 @@ {"label":"K1D (D1,B3)", "x":13.5, "y":1, "w":1.5}, {"label":"K1E (D1,D3)", "x":15.25, "y":1}, {"label":"K1F (D1,D5)", "x":16.25, "y":1}, + {"label":"K20 (B0,D4)", "x":0, "y":2, "w":1.75}, {"label":"K21 (B0,D6)", "x":1.75, "y":2}, {"label":"K22 (B0,D7)", "x":2.75, "y":2}, @@ -52,6 +55,7 @@ {"label":"K2A (B0,F0)", "x":10.75, "y":2}, {"label":"K2B (B0,B1)", "x":11.75, "y":2}, {"label":"K2D (B0,B3)", "x":12.75, "y":2, "w":2.25}, + {"label":"K30 (F6,D4)", "x":0, "y":3, "w":2.25}, {"label":"K32 (F6,D7)", "x":2.25, "y":3}, {"label":"K33 (F6,B4)", "x":3.25, "y":3}, @@ -65,6 +69,84 @@ {"label":"K3B (F6,B1)", "x":11.25, "y":3}, {"label":"K3C (F6,B2)", "x":12.25, "y":3, "w":2.75}, {"label":"K3E (F6,D3)", "x":15.25, "y":3}, + + {"label":"K40 (F7,D4)", "x":0, "y":4, "w":1.25}, + {"label":"K41 (F7,D6)", "x":1.25, "y":4, "w":1.25}, + {"label":"K42 (F7,D7)", "x":2.5, "y":4, "w":1.25}, + {"label":"K46 (F7,C6)", "x":3.75, "y":4, "w":6.25}, + {"label":"K49 (F7,F1)", "x":10, "y":4, "w":1.25}, + {"label":"K4A (F7,F0)", "x":11.25, "y":4, "w":1.25}, + {"label":"K4B (F7,B1)", "x":12.5, "y":4, "w":1.25}, + {"label":"K4D (F7,B3)", "x":14.25, "y":4}, + {"label":"K4E (F7,D3)", "x":15.25, "y":4}, + {"label":"K4F (F7,D5)", "x":16.25, "y":4} + ] + }, + "LAYOUT_68_iso": { + "layout": [ + {"label":"K00 (D2,D4)", "x":0, "y":0}, + {"label":"K01 (D2,D6)", "x":1, "y":0}, + {"label":"K02 (D2,D7)", "x":2, "y":0}, + {"label":"K03 (D2,B4)", "x":3, "y":0}, + {"label":"K04 (D2,B5)", "x":4, "y":0}, + {"label":"K05 (D2,B6)", "x":5, "y":0}, + {"label":"K06 (D2,C6)", "x":6, "y":0}, + {"label":"K07 (D2,F5)", "x":7, "y":0}, + {"label":"K08 (D2,F4)", "x":8, "y":0}, + {"label":"K09 (D2,F1)", "x":9, "y":0}, + {"label":"K0A (D2,F0)", "x":10, "y":0}, + {"label":"K0B (D2,B1)", "x":11, "y":0}, + {"label":"K0C (D2,B2)", "x":12, "y":0}, + {"label":"K0D (D2,B3)", "x":13, "y":0, "w":2}, + {"label":"K0E (D2,D3)", "x":15.25, "y":0}, + {"label":"K0F (D2,D5)", "x":16.25, "y":0}, + + {"label":"K10 (D1,D4)", "x":0, "y":1, "w":1.5}, + {"label":"K11 (D1,D6)", "x":1.5, "y":1}, + {"label":"K12 (D1,D7)", "x":2.5, "y":1}, + {"label":"K13 (D1,B4)", "x":3.5, "y":1}, + {"label":"K14 (D1,B5)", "x":4.5, "y":1}, + {"label":"K15 (D1,B6)", "x":5.5, "y":1}, + {"label":"K16 (D1,C6)", "x":6.5, "y":1}, + {"label":"K17 (D1,F5)", "x":7.5, "y":1}, + {"label":"K18 (D1,F4)", "x":8.5, "y":1}, + {"label":"K19 (D1,F1)", "x":9.5, "y":1}, + {"label":"K1A (D1,F0)", "x":10.5, "y":1}, + {"label":"K1B (D1,B1)", "x":11.5, "y":1}, + {"label":"K1C (D1,B2)", "x":12.5, "y":1}, + {"label":"K1E (D1,D3)", "x":15.25, "y":1}, + {"label":"K1F (D1,D5)", "x":16.25, "y":1}, + + {"label":"K20 (B0,D4)", "x":0, "y":2, "w":1.75}, + {"label":"K21 (B0,D6)", "x":1.75, "y":2}, + {"label":"K22 (B0,D7)", "x":2.75, "y":2}, + {"label":"K23 (B0,B4)", "x":3.75, "y":2}, + {"label":"K24 (B0,B5)", "x":4.75, "y":2}, + {"label":"K25 (B0,B6)", "x":5.75, "y":2}, + {"label":"K26 (B0,C6)", "x":6.75, "y":2}, + {"label":"K27 (B0,F5)", "x":7.75, "y":2}, + {"label":"K28 (B0,F4)", "x":8.75, "y":2}, + {"label":"K29 (B0,F1)", "x":9.75, "y":2}, + {"label":"K2A (B0,F0)", "x":10.75, "y":2}, + {"label":"K2B (B0,B1)", "x":11.75, "y":2}, + {"label":"K2C (B0,B2)", "x":12.75, "y":2}, + {"label":"K2D (B0,B3)", "x":13.75, "y":1, "w":1.25, "h":2}, + + {"label":"K30 (F6,D4)", "x":0, "y":3, "w":1.25}, + {"label":"K31 (F6,D6)", "x":1.25, "y":3}, + {"label":"K32 (F6,D7)", "x":2.25, "y":3}, + {"label":"K33 (F6,B4)", "x":3.25, "y":3}, + {"label":"K34 (F6,B5)", "x":4.25, "y":3}, + {"label":"K35 (F6,B6)", "x":5.25, "y":3}, + {"label":"K36 (F6,C6)", "x":6.25, "y":3}, + {"label":"K37 (F6,F5)", "x":7.25, "y":3}, + {"label":"K38 (F6,F4)", "x":8.25, "y":3}, + {"label":"K39 (F6,F1)", "x":9.25, "y":3}, + {"label":"K3A (F6,F0)", "x":10.25, "y":3}, + {"label":"K3B (F6,B1)", "x":11.25, "y":3}, + {"label":"K3C (F6,B2)", "x":12.25, "y":3, "w":2.75}, + {"label":"K3E (F6,D3)", "x":15.25, "y":3}, + {"label":"K40 (F7,D4)", "x":0, "y":4, "w":1.25}, {"label":"K41 (F7,D6)", "x":1.25, "y":4, "w":1.25}, {"label":"K42 (F7,D7)", "x":2.5, "y":4, "w":1.25}, @@ -78,5 +160,4 @@ ] } } - ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/" } diff --git a/keyboards/cmm_studio/saka68/hotswap/keymaps/default/keymap.c b/keyboards/cmm_studio/saka68/hotswap/keymaps/default/keymap.c index 8f4ad5b4fb74..5b65e62b5946 100644 --- a/keyboards/cmm_studio/saka68/hotswap/keymaps/default/keymap.c +++ b/keyboards/cmm_studio/saka68/hotswap/keymaps/default/keymap.c @@ -14,23 +14,23 @@ * along with this program. If not, see . */ - #include QMK_KEYBOARD_H +#include QMK_KEYBOARD_H - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_SPC, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_SPC, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_68_ansi( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_SPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_SPC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), - [1] = LAYOUT( - KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), + [1] = LAYOUT_68_ansi( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), - }; +}; diff --git a/keyboards/cmm_studio/saka68/hotswap/keymaps/default/readme.md b/keyboards/cmm_studio/saka68/hotswap/keymaps/default/readme.md deleted file mode 100644 index db71e7842a57..000000000000 --- a/keyboards/cmm_studio/saka68/hotswap/keymaps/default/readme.md +++ /dev/null @@ -1 +0,0 @@ -# The default keymap for Saka68 diff --git a/keyboards/cmm_studio/saka68/hotswap/keymaps/via/keymap.c b/keyboards/cmm_studio/saka68/hotswap/keymaps/via/keymap.c index bd94987d8767..603ca01ba6f1 100644 --- a/keyboards/cmm_studio/saka68/hotswap/keymaps/via/keymap.c +++ b/keyboards/cmm_studio/saka68/hotswap/keymaps/via/keymap.c @@ -14,38 +14,39 @@ * along with this program. If not, see . */ - #include QMK_KEYBOARD_H +#include QMK_KEYBOARD_H - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_SPC, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_SPC, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_68_ansi( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_SPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_SPC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_68_ansi( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), - [1] = LAYOUT( - KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), - [2] = LAYOUT( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), + [2] = LAYOUT_68_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), - [3] = LAYOUT( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + [3] = LAYOUT_68_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), - }; +}; diff --git a/keyboards/cmm_studio/saka68/hotswap/rules.mk b/keyboards/cmm_studio/saka68/hotswap/rules.mk index 14b22efbdb00..984dff4aba03 100644 --- a/keyboards/cmm_studio/saka68/hotswap/rules.mk +++ b/keyboards/cmm_studio/saka68/hotswap/rules.mk @@ -7,19 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output -# generated by KBFirmware JSON to QMK Parser -# https://noroadsleft.github.io/kbf_qmk_converter/ +LAYOUTS = 68_ansi 68_iso diff --git a/keyboards/cmm_studio/saka68/solder/config.h b/keyboards/cmm_studio/saka68/solder/config.h index a886f01a4b96..3dd09922cc12 100644 --- a/keyboards/cmm_studio/saka68/solder/config.h +++ b/keyboards/cmm_studio/saka68/solder/config.h @@ -23,7 +23,7 @@ #define PRODUCT_ID 0x534B #define DEVICE_VER 0x0001 #define MANUFACTURER CMM.Studio -#define PRODUCT Saka68 +#define PRODUCT Saka68 Solder /* key matrix size */ #define MATRIX_ROWS 5 diff --git a/keyboards/cmm_studio/saka68/solder/info.json b/keyboards/cmm_studio/saka68/solder/info.json index 3829d1553a95..6856294471fd 100644 --- a/keyboards/cmm_studio/saka68/solder/info.json +++ b/keyboards/cmm_studio/saka68/solder/info.json @@ -1,11 +1,12 @@ { - "keyboard_name": "CMM.Studio Saka68", + "keyboard_name": "CMM.Studio Saka68 Solder", "url": "", - "maintainer": "qmk", - "width": 17.25, - "height": 5, + "maintainer": "CMMS-Freather", + "layout_aliases": { + "LAYOUT": "LAYOUT_68_ansi" + }, "layouts": { - "LAYOUT": { + "LAYOUT_68_ansi": { "layout": [ {"label":"K00 (D1,D4)", "x":0, "y":0}, {"label":"K01 (D1,D6)", "x":1, "y":0}, @@ -23,6 +24,7 @@ {"label":"K0D (D1,B3)", "x":13, "y":0, "w":2}, {"label":"K0F (D1,D3)", "x":15.25, "y":0}, {"label":"K0G (D1,D5)", "x":16.25, "y":0}, + {"label":"K10 (D0,D4)", "x":0, "y":1, "w":1.5}, {"label":"K11 (D0,D6)", "x":1.5, "y":1}, {"label":"K12 (D0,D7)", "x":2.5, "y":1}, @@ -39,6 +41,7 @@ {"label":"K1D (D0,B3)", "x":13.5, "y":1, "w":1.5}, {"label":"K1E (D0,D2)", "x":15.25, "y":1}, {"label":"K1F (D0,D3)", "x":16.25, "y":1}, + {"label":"K20 (B0,D4)", "x":0, "y":2, "w":1.75}, {"label":"K21 (B0,D6)", "x":1.75, "y":2}, {"label":"K22 (B0,D7)", "x":2.75, "y":2}, @@ -52,6 +55,7 @@ {"label":"K2A (B0,F0)", "x":10.75, "y":2}, {"label":"K2B (B0,B1)", "x":11.75, "y":2}, {"label":"K2D (B0,B3)", "x":12.75, "y":2, "w":2.25}, + {"label":"K30 (F6,D4)", "x":0, "y":3, "w":2.25}, {"label":"K32 (F6,D7)", "x":2.25, "y":3}, {"label":"K33 (F6,B4)", "x":3.25, "y":3}, @@ -65,6 +69,239 @@ {"label":"K3B (F6,B1)", "x":11.25, "y":3}, {"label":"K3C (F6,B2)", "x":12.25, "y":3, "w":2.75}, {"label":"K3E (F6,D2)", "x":15.25, "y":3}, + + {"label":"K40 (F7,D4)", "x":0, "y":4, "w":1.25}, + {"label":"K41 (F7,D6)", "x":1.25, "y":4, "w":1.25}, + {"label":"K42 (F7,D7)", "x":2.5, "y":4, "w":1.25}, + {"label":"K46 (F7,C6)", "x":3.75, "y":4, "w":6.25}, + {"label":"K4A (F7,F0)", "x":10, "y":4, "w":1.25}, + {"label":"K4B (F7,B1)", "x":11.25, "y":4, "w":1.25}, + {"label":"K4C (F7,B2)", "x":12.5, "y":4, "w":1.25}, + {"label":"K4D (F7,B3)", "x":14.25, "y":4}, + {"label":"K4E (F7,D2)", "x":15.25, "y":4}, + {"label":"K4F (F7,D3)", "x":16.25, "y":4} + ] + }, + "LAYOUT_68_ansi_split_bs": { + "layout": [ + {"label":"K00 (D1,D4)", "x":0, "y":0}, + {"label":"K01 (D1,D6)", "x":1, "y":0}, + {"label":"K02 (D1,D7)", "x":2, "y":0}, + {"label":"K03 (D1,B4)", "x":3, "y":0}, + {"label":"K04 (D1,B5)", "x":4, "y":0}, + {"label":"K05 (D1,B6)", "x":5, "y":0}, + {"label":"K06 (D1,C6)", "x":6, "y":0}, + {"label":"K07 (D1,F5)", "x":7, "y":0}, + {"label":"K08 (D1,F4)", "x":8, "y":0}, + {"label":"K09 (D1,F1)", "x":9, "y":0}, + {"label":"K0A (D1,F0)", "x":10, "y":0}, + {"label":"K0B (D1,B1)", "x":11, "y":0}, + {"label":"K0C (D1,B2)", "x":12, "y":0}, + {"label":"K0D (D1,B3)", "x":13, "y":0}, + {"label":"K0E (D1,D2)", "x":14, "y":0}, + {"label":"K0F (D1,D3)", "x":15.25, "y":0}, + {"label":"K0G (D1,D5)", "x":16.25, "y":0}, + + {"label":"K10 (D0,D4)", "x":0, "y":1, "w":1.5}, + {"label":"K11 (D0,D6)", "x":1.5, "y":1}, + {"label":"K12 (D0,D7)", "x":2.5, "y":1}, + {"label":"K13 (D0,B4)", "x":3.5, "y":1}, + {"label":"K14 (D0,B5)", "x":4.5, "y":1}, + {"label":"K15 (D0,B6)", "x":5.5, "y":1}, + {"label":"K16 (D0,C6)", "x":6.5, "y":1}, + {"label":"K17 (D0,F5)", "x":7.5, "y":1}, + {"label":"K18 (D0,F4)", "x":8.5, "y":1}, + {"label":"K19 (D0,F1)", "x":9.5, "y":1}, + {"label":"K1A (D0,F0)", "x":10.5, "y":1}, + {"label":"K1B (D0,B1)", "x":11.5, "y":1}, + {"label":"K1C (D0,B2)", "x":12.5, "y":1}, + {"label":"K1D (D0,B3)", "x":13.5, "y":1, "w":1.5}, + {"label":"K1E (D0,D2)", "x":15.25, "y":1}, + {"label":"K1F (D0,D3)", "x":16.25, "y":1}, + + {"label":"K20 (B0,D4)", "x":0, "y":2, "w":1.75}, + {"label":"K21 (B0,D6)", "x":1.75, "y":2}, + {"label":"K22 (B0,D7)", "x":2.75, "y":2}, + {"label":"K23 (B0,B4)", "x":3.75, "y":2}, + {"label":"K24 (B0,B5)", "x":4.75, "y":2}, + {"label":"K25 (B0,B6)", "x":5.75, "y":2}, + {"label":"K26 (B0,C6)", "x":6.75, "y":2}, + {"label":"K27 (B0,F5)", "x":7.75, "y":2}, + {"label":"K28 (B0,F4)", "x":8.75, "y":2}, + {"label":"K29 (B0,F1)", "x":9.75, "y":2}, + {"label":"K2A (B0,F0)", "x":10.75, "y":2}, + {"label":"K2B (B0,B1)", "x":11.75, "y":2}, + {"label":"K2D (B0,B3)", "x":12.75, "y":2, "w":2.25}, + + {"label":"K30 (F6,D4)", "x":0, "y":3, "w":2.25}, + {"label":"K32 (F6,D7)", "x":2.25, "y":3}, + {"label":"K33 (F6,B4)", "x":3.25, "y":3}, + {"label":"K34 (F6,B5)", "x":4.25, "y":3}, + {"label":"K35 (F6,B6)", "x":5.25, "y":3}, + {"label":"K36 (F6,C6)", "x":6.25, "y":3}, + {"label":"K37 (F6,F5)", "x":7.25, "y":3}, + {"label":"K38 (F6,F4)", "x":8.25, "y":3}, + {"label":"K39 (F6,F1)", "x":9.25, "y":3}, + {"label":"K3A (F6,F0)", "x":10.25, "y":3}, + {"label":"K3B (F6,B1)", "x":11.25, "y":3}, + {"label":"K3C (F6,B2)", "x":12.25, "y":3, "w":2.75}, + {"label":"K3E (F6,D2)", "x":15.25, "y":3}, + + {"label":"K40 (F7,D4)", "x":0, "y":4, "w":1.25}, + {"label":"K41 (F7,D6)", "x":1.25, "y":4, "w":1.25}, + {"label":"K42 (F7,D7)", "x":2.5, "y":4, "w":1.25}, + {"label":"K46 (F7,C6)", "x":3.75, "y":4, "w":6.25}, + {"label":"K4A (F7,F0)", "x":10, "y":4, "w":1.25}, + {"label":"K4B (F7,B1)", "x":11.25, "y":4, "w":1.25}, + {"label":"K4C (F7,B2)", "x":12.5, "y":4, "w":1.25}, + {"label":"K4D (F7,B3)", "x":14.25, "y":4}, + {"label":"K4E (F7,D2)", "x":15.25, "y":4}, + {"label":"K4F (F7,D3)", "x":16.25, "y":4} + ] + }, + "LAYOUT_68_iso": { + "layout": [ + {"label":"K00 (D1,D4)", "x":0, "y":0}, + {"label":"K01 (D1,D6)", "x":1, "y":0}, + {"label":"K02 (D1,D7)", "x":2, "y":0}, + {"label":"K03 (D1,B4)", "x":3, "y":0}, + {"label":"K04 (D1,B5)", "x":4, "y":0}, + {"label":"K05 (D1,B6)", "x":5, "y":0}, + {"label":"K06 (D1,C6)", "x":6, "y":0}, + {"label":"K07 (D1,F5)", "x":7, "y":0}, + {"label":"K08 (D1,F4)", "x":8, "y":0}, + {"label":"K09 (D1,F1)", "x":9, "y":0}, + {"label":"K0A (D1,F0)", "x":10, "y":0}, + {"label":"K0B (D1,B1)", "x":11, "y":0}, + {"label":"K0C (D1,B2)", "x":12, "y":0}, + {"label":"K0D (D1,B3)", "x":13, "y":0, "w":2}, + {"label":"K0F (D1,D3)", "x":15.25, "y":0}, + {"label":"K0G (D1,D5)", "x":16.25, "y":0}, + + {"label":"K10 (D0,D4)", "x":0, "y":1, "w":1.5}, + {"label":"K11 (D0,D6)", "x":1.5, "y":1}, + {"label":"K12 (D0,D7)", "x":2.5, "y":1}, + {"label":"K13 (D0,B4)", "x":3.5, "y":1}, + {"label":"K14 (D0,B5)", "x":4.5, "y":1}, + {"label":"K15 (D0,B6)", "x":5.5, "y":1}, + {"label":"K16 (D0,C6)", "x":6.5, "y":1}, + {"label":"K17 (D0,F5)", "x":7.5, "y":1}, + {"label":"K18 (D0,F4)", "x":8.5, "y":1}, + {"label":"K19 (D0,F1)", "x":9.5, "y":1}, + {"label":"K1A (D0,F0)", "x":10.5, "y":1}, + {"label":"K1B (D0,B1)", "x":11.5, "y":1}, + {"label":"K1C (D0,B2)", "x":12.5, "y":1}, + {"label":"K1E (D0,D2)", "x":15.25, "y":1}, + {"label":"K1F (D0,D3)", "x":16.25, "y":1}, + + {"label":"K20 (B0,D4)", "x":0, "y":2, "w":1.75}, + {"label":"K21 (B0,D6)", "x":1.75, "y":2}, + {"label":"K22 (B0,D7)", "x":2.75, "y":2}, + {"label":"K23 (B0,B4)", "x":3.75, "y":2}, + {"label":"K24 (B0,B5)", "x":4.75, "y":2}, + {"label":"K25 (B0,B6)", "x":5.75, "y":2}, + {"label":"K26 (B0,C6)", "x":6.75, "y":2}, + {"label":"K27 (B0,F5)", "x":7.75, "y":2}, + {"label":"K28 (B0,F4)", "x":8.75, "y":2}, + {"label":"K29 (B0,F1)", "x":9.75, "y":2}, + {"label":"K2A (B0,F0)", "x":10.75, "y":2}, + {"label":"K2B (B0,B1)", "x":11.75, "y":2}, + {"label":"K2C (B0,B2)", "x":12.75, "y":2}, + {"label":"K2D (B0,B3)", "x":13.75, "y":1, "w":1.25, "h":2}, + + {"label":"K30 (F6,D4)", "x":0, "y":3, "w":1.25}, + {"label":"K31 (F6,D6)", "x":1.25, "y":3}, + {"label":"K32 (F6,D7)", "x":2.25, "y":3}, + {"label":"K33 (F6,B4)", "x":3.25, "y":3}, + {"label":"K34 (F6,B5)", "x":4.25, "y":3}, + {"label":"K35 (F6,B6)", "x":5.25, "y":3}, + {"label":"K36 (F6,C6)", "x":6.25, "y":3}, + {"label":"K37 (F6,F5)", "x":7.25, "y":3}, + {"label":"K38 (F6,F4)", "x":8.25, "y":3}, + {"label":"K39 (F6,F1)", "x":9.25, "y":3}, + {"label":"K3A (F6,F0)", "x":10.25, "y":3}, + {"label":"K3B (F6,B1)", "x":11.25, "y":3}, + {"label":"K3C (F6,B2)", "x":12.25, "y":3, "w":2.75}, + {"label":"K3E (F6,D2)", "x":15.25, "y":3}, + + {"label":"K40 (F7,D4)", "x":0, "y":4, "w":1.25}, + {"label":"K41 (F7,D6)", "x":1.25, "y":4, "w":1.25}, + {"label":"K42 (F7,D7)", "x":2.5, "y":4, "w":1.25}, + {"label":"K46 (F7,C6)", "x":3.75, "y":4, "w":6.25}, + {"label":"K4A (F7,F0)", "x":10, "y":4, "w":1.25}, + {"label":"K4B (F7,B1)", "x":11.25, "y":4, "w":1.25}, + {"label":"K4C (F7,B2)", "x":12.5, "y":4, "w":1.25}, + {"label":"K4D (F7,B3)", "x":14.25, "y":4}, + {"label":"K4E (F7,D2)", "x":15.25, "y":4}, + {"label":"K4F (F7,D3)", "x":16.25, "y":4} + ] + }, + "LAYOUT_68_iso_split_bs": { + "layout": [ + {"label":"K00 (D1,D4)", "x":0, "y":0}, + {"label":"K01 (D1,D6)", "x":1, "y":0}, + {"label":"K02 (D1,D7)", "x":2, "y":0}, + {"label":"K03 (D1,B4)", "x":3, "y":0}, + {"label":"K04 (D1,B5)", "x":4, "y":0}, + {"label":"K05 (D1,B6)", "x":5, "y":0}, + {"label":"K06 (D1,C6)", "x":6, "y":0}, + {"label":"K07 (D1,F5)", "x":7, "y":0}, + {"label":"K08 (D1,F4)", "x":8, "y":0}, + {"label":"K09 (D1,F1)", "x":9, "y":0}, + {"label":"K0A (D1,F0)", "x":10, "y":0}, + {"label":"K0B (D1,B1)", "x":11, "y":0}, + {"label":"K0C (D1,B2)", "x":12, "y":0}, + {"label":"K0D (D1,B3)", "x":13, "y":0}, + {"label":"K0E (D1,D2)", "x":14, "y":0}, + {"label":"K0F (D1,D3)", "x":15.25, "y":0}, + {"label":"K0G (D1,D5)", "x":16.25, "y":0}, + + {"label":"K10 (D0,D4)", "x":0, "y":1, "w":1.5}, + {"label":"K11 (D0,D6)", "x":1.5, "y":1}, + {"label":"K12 (D0,D7)", "x":2.5, "y":1}, + {"label":"K13 (D0,B4)", "x":3.5, "y":1}, + {"label":"K14 (D0,B5)", "x":4.5, "y":1}, + {"label":"K15 (D0,B6)", "x":5.5, "y":1}, + {"label":"K16 (D0,C6)", "x":6.5, "y":1}, + {"label":"K17 (D0,F5)", "x":7.5, "y":1}, + {"label":"K18 (D0,F4)", "x":8.5, "y":1}, + {"label":"K19 (D0,F1)", "x":9.5, "y":1}, + {"label":"K1A (D0,F0)", "x":10.5, "y":1}, + {"label":"K1B (D0,B1)", "x":11.5, "y":1}, + {"label":"K1C (D0,B2)", "x":12.5, "y":1}, + {"label":"K1E (D0,D2)", "x":15.25, "y":1}, + {"label":"K1F (D0,D3)", "x":16.25, "y":1}, + + {"label":"K20 (B0,D4)", "x":0, "y":2, "w":1.75}, + {"label":"K21 (B0,D6)", "x":1.75, "y":2}, + {"label":"K22 (B0,D7)", "x":2.75, "y":2}, + {"label":"K23 (B0,B4)", "x":3.75, "y":2}, + {"label":"K24 (B0,B5)", "x":4.75, "y":2}, + {"label":"K25 (B0,B6)", "x":5.75, "y":2}, + {"label":"K26 (B0,C6)", "x":6.75, "y":2}, + {"label":"K27 (B0,F5)", "x":7.75, "y":2}, + {"label":"K28 (B0,F4)", "x":8.75, "y":2}, + {"label":"K29 (B0,F1)", "x":9.75, "y":2}, + {"label":"K2A (B0,F0)", "x":10.75, "y":2}, + {"label":"K2B (B0,B1)", "x":11.75, "y":2}, + {"label":"K2C (B0,B2)", "x":12.75, "y":2}, + {"label":"K2D (B0,B3)", "x":13.75, "y":1, "w":1.25, "h":2}, + + {"label":"K30 (F6,D4)", "x":0, "y":3, "w":1.25}, + {"label":"K31 (F6,D6)", "x":1.25, "y":3}, + {"label":"K32 (F6,D7)", "x":2.25, "y":3}, + {"label":"K33 (F6,B4)", "x":3.25, "y":3}, + {"label":"K34 (F6,B5)", "x":4.25, "y":3}, + {"label":"K35 (F6,B6)", "x":5.25, "y":3}, + {"label":"K36 (F6,C6)", "x":6.25, "y":3}, + {"label":"K37 (F6,F5)", "x":7.25, "y":3}, + {"label":"K38 (F6,F4)", "x":8.25, "y":3}, + {"label":"K39 (F6,F1)", "x":9.25, "y":3}, + {"label":"K3A (F6,F0)", "x":10.25, "y":3}, + {"label":"K3B (F6,B1)", "x":11.25, "y":3}, + {"label":"K3C (F6,B2)", "x":12.25, "y":3, "w":2.75}, + {"label":"K3E (F6,D2)", "x":15.25, "y":3}, + {"label":"K40 (F7,D4)", "x":0, "y":4, "w":1.25}, {"label":"K41 (F7,D6)", "x":1.25, "y":4, "w":1.25}, {"label":"K42 (F7,D7)", "x":2.5, "y":4, "w":1.25}, @@ -78,5 +315,4 @@ ] } } - ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/" } diff --git a/keyboards/cmm_studio/saka68/solder/keymaps/default/keymap.c b/keyboards/cmm_studio/saka68/solder/keymaps/default/keymap.c index 88f6db4ed3bf..0c99835847ca 100644 --- a/keyboards/cmm_studio/saka68/solder/keymaps/default/keymap.c +++ b/keyboards/cmm_studio/saka68/solder/keymaps/default/keymap.c @@ -17,20 +17,20 @@ #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( + [0] = LAYOUT_68_ansi( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), - [1] = LAYOUT( - KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + [1] = LAYOUT_68_ansi( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), }; diff --git a/keyboards/cmm_studio/saka68/solder/keymaps/via/keymap.c b/keyboards/cmm_studio/saka68/solder/keymaps/via/keymap.c index bd55f0d85bd7..12334284a071 100644 --- a/keyboards/cmm_studio/saka68/solder/keymaps/via/keymap.c +++ b/keyboards/cmm_studio/saka68/solder/keymaps/via/keymap.c @@ -17,35 +17,35 @@ #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( + [0] = LAYOUT_68_ansi( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), - [1] = LAYOUT( - KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + [1] = LAYOUT_68_ansi( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), - [2] = LAYOUT( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + [2] = LAYOUT_68_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), - [3] = LAYOUT( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + [3] = LAYOUT_68_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), }; diff --git a/keyboards/cmm_studio/saka68/solder/rules.mk b/keyboards/cmm_studio/saka68/solder/rules.mk index a90eef1fc65a..a569c5184c90 100644 --- a/keyboards/cmm_studio/saka68/solder/rules.mk +++ b/keyboards/cmm_studio/saka68/solder/rules.mk @@ -7,16 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 + +LAYOUTS = 68_ansi 68_iso diff --git a/keyboards/cmm_studio/saka68/solder/solder.c b/keyboards/cmm_studio/saka68/solder/solder.c index 5ff4cf0b97f9..195c14023b48 100644 --- a/keyboards/cmm_studio/saka68/solder/solder.c +++ b/keyboards/cmm_studio/saka68/solder/solder.c @@ -15,6 +15,3 @@ */ #include "solder.h" - -// generated by KBFirmware JSON to QMK Parser -// https://noroadsleft.github.io/kbf_qmk_converter/ diff --git a/keyboards/cmm_studio/saka68/solder/solder.h b/keyboards/cmm_studio/saka68/solder/solder.h index 4d1d02163a3c..e1945eab46c5 100644 --- a/keyboards/cmm_studio/saka68/solder/solder.h +++ b/keyboards/cmm_studio/saka68/solder/solder.h @@ -18,7 +18,7 @@ #include "quantum.h" -#define LAYOUT( \ +#define LAYOUT_68_ansi( \ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, K0G, \ 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, K2D, \ @@ -32,5 +32,44 @@ { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E, K4F, KC_NO }, \ } -// generated by KBFirmware JSON to QMK Parser -// https://noroadsleft.github.io/kbf_qmk_converter/ +#define LAYOUT_68_ansi_split_bs( \ + 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, \ + 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, K3E, \ + K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E, K4F \ +) { \ + { 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, KC_NO }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO, KC_NO, KC_NO }, \ + { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KC_NO, K3E, KC_NO, KC_NO }, \ + { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E, K4F, KC_NO }, \ +} + +#define LAYOUT_68_iso( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, K0G, \ + 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, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, \ + K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E, K4F \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KC_NO, K0F, K0G }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KC_NO, K1E, K1F, KC_NO }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO, KC_NO, KC_NO }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KC_NO, K3E, KC_NO, KC_NO }, \ + { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E, K4F, KC_NO }, \ +} + +#define LAYOUT_68_iso_split_bs( \ + 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, K1E, K1F, \ + 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, K3E, \ + K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E, K4F \ +) { \ + { 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, KC_NO, K1E, K1F, KC_NO }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO, KC_NO, KC_NO }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KC_NO, K3E, KC_NO, KC_NO }, \ + { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E, K4F, KC_NO }, \ +} diff --git a/keyboards/coarse/cordillera/info.json b/keyboards/coarse/cordillera/info.json index e6bc832221b4..a94459180ffc 100644 --- a/keyboards/coarse/cordillera/info.json +++ b/keyboards/coarse/cordillera/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Cordillera", "url": "https://keyboard.coarse.tech/Cordillera-Alice-like-PCB-b34d95777ea44249bad3271b01d7838a", "maintainer": "coarse", - "width": 19, - "height": 5, "layouts": { "LAYOUT_alice": { "layout": [ diff --git a/keyboards/coarse/cordillera/rules.mk b/keyboards/coarse/cordillera/rules.mk index 70d00be2f71d..346067683604 100644 --- a/keyboards/coarse/cordillera/rules.mk +++ b/keyboards/coarse/cordillera/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LAYOUTS = alice alice_split_bs diff --git a/keyboards/peiorisboards/ixora/chconf.h b/keyboards/coarse/ixora/chconf.h similarity index 100% rename from keyboards/peiorisboards/ixora/chconf.h rename to keyboards/coarse/ixora/chconf.h diff --git a/keyboards/peiorisboards/ixora/config.h b/keyboards/coarse/ixora/config.h similarity index 100% rename from keyboards/peiorisboards/ixora/config.h rename to keyboards/coarse/ixora/config.h diff --git a/keyboards/peiorisboards/ixora/halconf.h b/keyboards/coarse/ixora/halconf.h similarity index 100% rename from keyboards/peiorisboards/ixora/halconf.h rename to keyboards/coarse/ixora/halconf.h diff --git a/keyboards/coarse/ixora/info.json b/keyboards/coarse/ixora/info.json new file mode 100644 index 000000000000..1bf292888519 --- /dev/null +++ b/keyboards/coarse/ixora/info.json @@ -0,0 +1,19 @@ +{ + "keyboard_name": "Ixora", + "url": "", + "maintainer": "Peioris", + "layouts": { + "LAYOUT_full": { + "layout": [{"label":"1", "x":0, "y":0}, {"label":"2", "x":1, "y":0}, {"label":"3", "x":2, "y":0}, {"label":"Caps Lock", "x":0, "y":1}, {"label":"Num Lock", "x":1, "y":1}, {"label":"Scroll Lock", "x":2, "y":1}] + }, + "LAYOUT_blocker_right": { + "layout": [{"label":"1", "x":0, "y":0}, {"label":"2", "x":1, "y":0}, {"label":"Caps Lock", "x":0, "y":1}, {"label":"Num Lock", "x":1, "y":1}, {"label":"Scroll Lock", "x":2, "y":1}] + }, + "LAYOUT_blocker_left": { + "layout": [{"label":"2", "x":1, "y":0}, {"label":"3", "x":2, "y":0}, {"label":"Caps Lock", "x":0, "y":1}, {"label":"Num Lock", "x":1, "y":1}, {"label":"Scroll Lock", "x":2, "y":1}] + }, + "LAYOUT_arrows": { + "layout": [{"label":"\u2191", "x":1, "y":0}, {"label":"\u2190", "x":0, "y":1}, {"label":"\u2193", "x":1, "y":1}, {"label":"\u2192", "x":2, "y":1}] + } + } + } diff --git a/keyboards/peiorisboards/ixora/ixora.c b/keyboards/coarse/ixora/ixora.c similarity index 100% rename from keyboards/peiorisboards/ixora/ixora.c rename to keyboards/coarse/ixora/ixora.c diff --git a/keyboards/peiorisboards/ixora/ixora.h b/keyboards/coarse/ixora/ixora.h similarity index 100% rename from keyboards/peiorisboards/ixora/ixora.h rename to keyboards/coarse/ixora/ixora.h diff --git a/keyboards/coarse/ixora/keymaps/default/keymap.c b/keyboards/coarse/ixora/keymaps/default/keymap.c new file mode 100644 index 000000000000..65daf5c218b1 --- /dev/null +++ b/keyboards/coarse/ixora/keymaps/default/keymap.c @@ -0,0 +1,30 @@ +/* Copyright 2018 Peioris + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: (Base Layer) Default Layer + * ,-----------------. + * |RESET| 2 | 3 | + * |-----------------| + * |Caps |NmLk |ScLk | + * `-----------------' + */ +[0] = LAYOUT_full( + RESET, KC_2, KC_3, + KC_CAPS, KC_NLCK, KC_SLCK) +}; diff --git a/keyboards/peiorisboards/ixora/keymaps/wntrmln/keymap.c b/keyboards/coarse/ixora/keymaps/wntrmln/keymap.c similarity index 100% rename from keyboards/peiorisboards/ixora/keymaps/wntrmln/keymap.c rename to keyboards/coarse/ixora/keymaps/wntrmln/keymap.c diff --git a/keyboards/coarse/ixora/readme.md b/keyboards/coarse/ixora/readme.md new file mode 100644 index 000000000000..a094bbd5e7dd --- /dev/null +++ b/keyboards/coarse/ixora/readme.md @@ -0,0 +1,22 @@ +Ixora +========= + +[Ixora](https://i.imgur.com/GqDk3XY.png) + + +Ixora is an ARM-powered 6-key macropad with a USB connector, hotswap sockets, and indicator LEDs. + +Keyboard Maintainer: [Coarse](https://github.com/coarse) +Hardware Supported: Ixora PCB +Hardware Availability: [Coarse](https://github.com/coarse) + +Make example for this keyboard (after setting up your build environment): + + make coarse/ixora:default + +See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information. + +#### Developer's Note + +STM32F042xx chips does not allow jumping to bootloader without BOOT0 being set to high, therefore it is impossible to enter the bootloader from sending a `RESET` keycode nor using bootmagic or bootmagic lite. +The only way to enter bootloader is to hold the BOOT0 button while the keyboard is powering up or after a power reset (done by pressing the reset switch or sending a `RESET` keycode). diff --git a/keyboards/coarse/ixora/rules.mk b/keyboards/coarse/ixora/rules.mk new file mode 100644 index 000000000000..5026583b0684 --- /dev/null +++ b/keyboards/coarse/ixora/rules.mk @@ -0,0 +1,21 @@ +# MCU name +MCU = STM32F042 + +# Bootloader selection +BOOTLOADER = stm32-dfu + +# Build Options +# comment out to disable the options. +# +BACKLIGHT_ENABLE = no +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 # USB Nkey Rollover +NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in + + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/vinta/chconf.h b/keyboards/coarse/vinta/chconf.h similarity index 100% rename from keyboards/vinta/chconf.h rename to keyboards/coarse/vinta/chconf.h diff --git a/keyboards/coarse/vinta/config.h b/keyboards/coarse/vinta/config.h new file mode 100644 index 000000000000..d08994ae67ae --- /dev/null +++ b/keyboards/coarse/vinta/config.h @@ -0,0 +1,52 @@ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x0C61 +#define DEVICE_VER 0x00C6 +#define MANUFACTURER PeiorisBoards +#define PRODUCT Vinta R1 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 16 + +#define MATRIX_ROW_PINS { A10, A9, B0, A7, A6 } +#define MATRIX_COL_PINS { A5, A4, A3, A2, A1, A0, F1, F0, B7, B6, B5, B4, B3, A15, A14, A13 } + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 0 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is userful for the Windows task manager shortcut (ctrl+shift+esc). + */ +// #define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO diff --git a/keyboards/vinta/halconf.h b/keyboards/coarse/vinta/halconf.h similarity index 100% rename from keyboards/vinta/halconf.h rename to keyboards/coarse/vinta/halconf.h diff --git a/keyboards/coarse/vinta/info.json b/keyboards/coarse/vinta/info.json new file mode 100644 index 000000000000..af78ac45e24b --- /dev/null +++ b/keyboards/coarse/vinta/info.json @@ -0,0 +1,16 @@ +{ + "keyboard_name": "vinta", + "url": "", + "maintainer": "Peioris", + "layouts": { + "LAYOUT_69_ansi": { + "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"~", "x":13, "y":0}, {"label":"|", "x":14, "y":0}, {"label":"Del", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"PgUp", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"PgDn", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"label":"End", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4}, {"label":"Reset", "x":11, "y":4}, {"label":"Ctrl", "x":12, "y":4}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}] + }, + "LAYOUT_68_tada": { + "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"~", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Del", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"PgUp", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"label":"PgDn", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4}, {"label":"Menu", "x":11, "y":4}, {"label":"Ctrl", "x":12, "y":4}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}] + }, + "LAYOUT_65_ansi_blocker": { + "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"~", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Del", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"PgUp", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"label":"PgDn", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Ctrl", "x":11.25, "y":4, "w":1.25}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}] + } + } +} diff --git a/keyboards/coarse/vinta/keymaps/default/keymap.c b/keyboards/coarse/vinta/keymaps/default/keymap.c new file mode 100644 index 000000000000..58a8f7ab59cc --- /dev/null +++ b/keyboards/coarse/vinta/keymaps/default/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2018 Peioris + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: (Base Layer) Default Layer + * ,----------------------------------------------------------------. + * |Esc | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \ | ` |Del | + * |----------------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| Bspc|PgUp| + * |----------------------------------------------------------------| + * |CAPS | A| S| D| F| G| H| J| K| L| ;| '|Return |PgDn| + * |----------------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up|End | + * |----------------------------------------------------------------| + * |Ctrl|Win |Alt | Space |Alt|RST|Ctrl|Lef|Dow|Rig | + * `----------------------------------------------------------------' + */ +[0] = LAYOUT_69_ansi( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, KC_DEL,\ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGUP,\ + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,\ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, \ + KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT, RESET, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), +}; diff --git a/keyboards/coarse/vinta/readme.md b/keyboards/coarse/vinta/readme.md new file mode 100644 index 000000000000..42291cd1fe49 --- /dev/null +++ b/keyboards/coarse/vinta/readme.md @@ -0,0 +1,22 @@ +Vinta +========= + +[Vinta](https://i.imgur.com/huX3lff.jpg) + + +This is an ARM-powered 65% keyboard PCB with USB Mini B connector and breakout for optional RGB underglow. + +Keyboard Maintainer: [Coarse](https://github.com/coarse) +Hardware Supported: Vinta with STM32F042K6T6 +Hardware Availability: Private Groupbuy + +Make example for this keyboard (after setting up your build environment): + + make coarse/vinta:default + +See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. + +#### Developer's Note + +STM32F042xx chips does not allow jumping to bootloader without BOOT0 being set to high, therefore it is impossible to enter the bootloader from sending a `RESET` keycode nor using bootmagic or bootmagic lite. +The only way to enter bootloader is to hold the BOOT0 button while the keyboard is powering up or after a power reset (done by pressing the reset switch or sending a `RESET` keycode). diff --git a/keyboards/coarse/vinta/rules.mk b/keyboards/coarse/vinta/rules.mk new file mode 100644 index 000000000000..fd336cf02116 --- /dev/null +++ b/keyboards/coarse/vinta/rules.mk @@ -0,0 +1,23 @@ +# MCU name +MCU = STM32F042 + +# Bootloader selection +BOOTLOADER = stm32-dfu + +# Build Options +# comment out to disable the options. +# +BACKLIGHT_ENABLE = no +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 # USB Nkey Rollover +NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in + +LAYOUTS = 65_ansi_blocker + + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/coarse/vinta/vinta.c b/keyboards/coarse/vinta/vinta.c new file mode 100644 index 000000000000..edd45511b498 --- /dev/null +++ b/keyboards/coarse/vinta/vinta.c @@ -0,0 +1 @@ +#include "vinta.h" diff --git a/keyboards/coarse/vinta/vinta.h b/keyboards/coarse/vinta/vinta.h new file mode 100644 index 000000000000..18f51cd434bd --- /dev/null +++ b/keyboards/coarse/vinta/vinta.h @@ -0,0 +1,49 @@ +#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 } \ +} + +#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 } \ +} + +#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 } \ +} diff --git a/keyboards/cocoa40/cocoa40.c b/keyboards/cocoa40/cocoa40.c index 22d19828d6a6..fdc9f9c0eaca 100644 --- a/keyboards/cocoa40/cocoa40.c +++ b/keyboards/cocoa40/cocoa40.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "cocoa40.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/cocoa40/info.json b/keyboards/cocoa40/info.json index d359c0ddb6be..d2b75a6fcaa3 100644 --- a/keyboards/cocoa40/info.json +++ b/keyboards/cocoa40/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Cocoa40", "url": "https://keys.recompile.net/projects/cocoa40/", "maintainer": "Naoto Takai", - "width": 15.25, - "height": 4, "layouts": { "LAYOUT": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":7.25, "y":0}, {"label":"U", "x":8.25, "y":0}, {"label":"I", "x":9.25, "y":0}, {"label":"O", "x":10.25, "y":0}, {"label":"P", "x":11.25, "y":0}, {"label":"{", "x":12.25, "y":0}, {"label":"}", "x":13.25, "y":0}, {"label":"Back
Space", "x":14.25, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.25}, {"label":"A", "x":1.25, "y":1}, {"label":"S", "x":2.25, "y":1}, {"label":"D", "x":3.25, "y":1}, {"label":"F", "x":4.25, "y":1}, {"label":"G", "x":5.25, "y":1}, {"label":"H", "x":7.5, "y":1}, {"label":"J", "x":8.5, "y":1}, {"label":"K", "x":9.5, "y":1}, {"label":"L", "x":10.5, "y":1}, {"label":":", "x":11.5, "y":1}, {"label":"\"", "x":12.5, "y":1}, {"label":"Enter", "x":13.5, "y":1, "w":1.75}, {"label":"Shift", "x":0, "y":2, "w":1.75}, {"label":"Z", "x":1.75, "y":2}, {"label":"X", "x":2.75, "y":2}, {"label":"C", "x":3.75, "y":2}, {"label":"V", "x":4.75, "y":2}, {"label":"B", "x":5.75, "y":2}, {"label":"N", "x":8, "y":2}, {"label":"M", "x":9, "y":2}, {"label":"<", "x":10, "y":2}, {"label":">", "x":11, "y":2}, {"label":"?", "x":12, "y":2}, {"label":"Shift", "x":13, "y":2, "w":1.25}, {"label":"Fn", "x":14.25, "y":2}, {"label":"Opt", "x":1.5, "y":3}, {"label":"Command", "x":2.5, "y":3, "w":1.5}, {"label":"", "x":4, "y":3, "w":2.25}, {"label":"", "x":7.5, "y":3, "w":2.75}, {"label":"Command", "x":10.25, "y":3, "w":1.5}, {"label":"Opt", "x":11.75, "y":3}] diff --git a/keyboards/cocoa40/rules.mk b/keyboards/cocoa40/rules.mk index 5d56f07fa822..4b2fe33448c1 100644 --- a/keyboards/cocoa40/rules.mk +++ b/keyboards/cocoa40/rules.mk @@ -2,31 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE =no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = yes diff --git a/keyboards/comet46/comet46.h b/keyboards/comet46/comet46.h index c108d4193b30..094d960e2000 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 5ae026f92385..067dabb1036a 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -72,5 +71,3 @@ along with this program. If not, see . 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 47cf6bd1b2c9..710662c7abd6 100644 --- a/keyboards/comet46/i2c.h +++ b/keyboards/comet46/i2c.h @@ -1,5 +1,4 @@ -#ifndef I2C_H -#define I2C_H +#pragma once #include @@ -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/comet46/info.json b/keyboards/comet46/info.json index 9881397b404b..f49c878e0814 100644 --- a/keyboards/comet46/info.json +++ b/keyboards/comet46/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Comet46", "url": "", "maintainer": "SatT", - "width": 15, - "height": 4.9, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/comet46/keymaps/default-rgbled/keymap.c b/keyboards/comet46/keymaps/default-rgbled/keymap.c index a576cc36b132..d1e5b663dcbc 100644 --- a/keyboards/comet46/keymaps/default-rgbled/keymap.c +++ b/keyboards/comet46/keymaps/default-rgbled/keymap.c @@ -140,7 +140,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST); } diff --git a/keyboards/comet46/keymaps/satt/keymap.c b/keyboards/comet46/keymaps/satt/keymap.c index 98c3c175be70..57aa6359345d 100644 --- a/keyboards/comet46/keymaps/satt/keymap.c +++ b/keyboards/comet46/keymaps/satt/keymap.c @@ -30,7 +30,7 @@ enum custom_keycodes { }; // JIS keycodes -#define KC_JZHT JP_ZHTG // hankaku/zenkaku|kanzi +#define KC_JZHT JP_ZKHK // hankaku/zenkaku|kanzi #define KC_JCIR JP_CIRC // ^, ~ #define KC_JAT JP_AT // @, ` #define KC_JLBR JP_LBRC // [, { @@ -40,8 +40,8 @@ enum custom_keycodes { #define KC_JMHE JP_MHEN // muhenkan #define KC_JHEN JP_HENK // henkan #define KC_JKAN JP_KANA // katakana/hiragana|ro-mazi -#define KC_JMKA JP_MKANA //kana on MacOSX -#define KC_JMEI JP_MEISU //eisu on MacOSX +#define KC_JMKA JP_LANG1 //kana on MacOSX +#define KC_JMEI KC_LANG2 //eisu on MacOSX #define KC_JAMP JP_AMPR // & #define KC_JQUO JP_QUOT // ' #define KC_JLPR JP_LPRN // ( @@ -164,7 +164,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { switch (biton32(state)) { case _PSEUDO_US_LOWER: case _PSEUDO_US_RAISE: diff --git a/keyboards/comet46/rules.mk b/keyboards/comet46/rules.mk index 1f22b7535eb2..77554b81f2d3 100644 --- a/keyboards/comet46/rules.mk +++ b/keyboards/comet46/rules.mk @@ -2,31 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration CUSTOM_MATRIX = yes # Remote matrix from the wireless bridge -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA # BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -# MIDI_ENABLE = YES # MIDI controls -UNICODE_ENABLE = YES # Unicode -# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID # project specific files SRC += matrix.c \ diff --git a/keyboards/compound/compound.c b/keyboards/compound/compound.c new file mode 100644 index 000000000000..046eae950fcc --- /dev/null +++ b/keyboards/compound/compound.c @@ -0,0 +1,18 @@ +/* +Copyright 2021 Rafael Yumagulov + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "compound.h" diff --git a/keyboards/compound/compound.h b/keyboards/compound/compound.h new file mode 100644 index 000000000000..697ca3d0f81f --- /dev/null +++ b/keyboards/compound/compound.h @@ -0,0 +1,38 @@ +/* +Copyright 2021 Rafael Yumagulov + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +// Improve readability +#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, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \ + k40, k41, k42, k46, k4a, 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, k2c, XXX, XXX}, \ + {k30, k31, 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, XXX, XXX} \ +} diff --git a/keyboards/compound/config.h b/keyboards/compound/config.h new file mode 100644 index 000000000000..43edc00660f5 --- /dev/null +++ b/keyboards/compound/config.h @@ -0,0 +1,48 @@ +/* +Copyright 2021 Rafael Yumagulov + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x420A +#define PRODUCT_ID 0xB0BA +#define DEVICE_VER 0x0001 +#define MANUFACTURER Sabomov +#define PRODUCT Compound + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +// ROWS: Top to bottom, COLS: Left to right + +#define MATRIX_ROW_PINS {B0,B7,D0,D1,D2} +#define MATRIX_COL_PINS {F0,D5,D4,D6,D7,B4,B5,B6,C6,C7,F7,F6,F5,F4,F1} + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +#define QMK_ESC_OUTPUT B3 // usually COL +#define QMK_ESC_INPUT F0 // usually ROW diff --git a/keyboards/compound/info.json b/keyboards/compound/info.json new file mode 100644 index 000000000000..f39a9ba1d405 --- /dev/null +++ b/keyboards/compound/info.json @@ -0,0 +1,77 @@ +{ + "keyboard_name": "Compound", + "url": "https://geekhack.org/index.php?topic=111187.0", + "maintainer": "yumagulovrn", + "layouts": { + "LAYOUT": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"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}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3}, + {"x": 12.25, "y": 3, "w": 1.75}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.5}, + {"x": 1.5, "y": 4}, + {"x": 2.5, "y": 4, "w": 1.5}, + {"x": 4, "y": 4, "w": 7}, + {"x": 11, "y": 4, "w": 1.5}, + {"x": 12.5, "y": 4}, + {"x": 13.5, "y": 4, "w": 1.5} + ] + } + } +} diff --git a/keyboards/compound/keymaps/default/keymap.c b/keyboards/compound/keymaps/default/keymap.c new file mode 100644 index 000000000000..c5f4bd73896e --- /dev/null +++ b/keyboards/compound/keymaps/default/keymap.c @@ -0,0 +1,40 @@ +/* +Copyright 2021 Rafael Yumagulov + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum _layer { + _MA, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[_MA] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, + 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL), + +[_FN] = LAYOUT( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, _______, + _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_MPLY, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, _______, + _______, _______, _______, _______, _______, _______, _______) +}; diff --git a/keyboards/compound/keymaps/via/keymap.c b/keyboards/compound/keymaps/via/keymap.c new file mode 100644 index 000000000000..797be4dc6838 --- /dev/null +++ b/keyboards/compound/keymaps/via/keymap.c @@ -0,0 +1,49 @@ +/* +Copyright 2021 Rafael Yumagulov + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[0] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, + 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL), + +[1] = LAYOUT( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, _______, + _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_MPLY, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, _______, + _______, _______, _______, _______, _______, _______, _______), + +[2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______), + +[3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______), +}; diff --git a/keyboards/compound/keymaps/via/rules.mk b/keyboards/compound/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/compound/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/compound/readme.md b/keyboards/compound/readme.md new file mode 100644 index 000000000000..9422939ac83e --- /dev/null +++ b/keyboards/compound/readme.md @@ -0,0 +1,30 @@ +# Compound + +![Compound](https://imgur.com/0DC9F9dh.jpg) + +A compact 60% Compound keyboard with fixed Tsangan style layout. + +* Keyboard Maintainer: [yumagulovrn](https://github.com/yumagulovrn) +* Hardware Supported: Compound PCB +* Hardware Availability: [GeekHack IC](https://geekhack.org/index.php?topic=111187.0) + +## Entering bootloader mode + +Keyboard doesn't have dedicated RESET button on the PCB, however, there are alternatives: + +### Bootmagic + +Hold down ESC while plugging the keyboard in. + +### Shorting RESET pin + +Short GND and RST pads on the bottom of the keyboard. Location of the pads can be seen [here](https://imgur.com/uw7Zz7Y.jpg). + + +## Building keyboard firmware + +Make example for this keyboard (after setting up your build environment): + + make compound: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/compound/rules.mk b/keyboards/compound/rules.mk new file mode 100644 index 000000000000..74047d4dec7d --- /dev/null +++ b/keyboards/compound/rules.mk @@ -0,0 +1,19 @@ +# 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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/contra/config.h b/keyboards/contra/config.h index 8dc565546bea..499517f98484 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 74aad77d0b09..27a8dd2956f5 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/keyboards/contra/info.json b/keyboards/contra/info.json index c047406d01c6..0aff3f3c2f14 100644 --- a/keyboards/contra/info.json +++ b/keyboards/contra/info.json @@ -2,16 +2,12 @@ "keyboard_name": "Contra", "url": "", "maintainer": "qmk", - "width": 12, - "height": 4, "layouts": { "LAYOUT_ortho_4x12": { - "key_count": 48, "layout": [{"label":"Tab", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"Back Space", "x":11, "y":0}, {"label":"Esc", "x":0, "y":1}, {"label":"A", "x":1, "y":1}, {"label":"S", "x":2, "y":1}, {"label":"D", "x":3, "y":1}, {"label":"F", "x":4, "y":1}, {"label":"G", "x":5, "y":1}, {"label":"H", "x":6, "y":1}, {"label":"J", "x":7, "y":1}, {"label":"K", "x":8, "y":1}, {"label":"L", "x":9, "y":1}, {"label":";", "x":10, "y":1}, {"label":"'", "x":11, "y":1}, {"label":"Shift", "x":0, "y":2}, {"label":"Z", "x":1, "y":2}, {"label":"X", "x":2, "y":2}, {"label":"C", "x":3, "y":2}, {"label":"V", "x":4, "y":2}, {"label":"B", "x":5, "y":2}, {"label":"N", "x":6, "y":2}, {"label":"M", "x":7, "y":2}, {"label":",", "x":8, "y":2}, {"label":".", "x":9, "y":2}, {"label":"/", "x":10, "y":2}, {"label":"Return", "x":11, "y":2}, {"x":0, "y":3}, {"label":"Ctrl", "x":1, "y":3}, {"label":"Alt", "x":2, "y":3}, {"label":"Super", "x":3, "y":3}, {"label":"⇓", "x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"label":"⇑", "x":7, "y":3}, {"label":"←", "x":8, "y":3}, {"label":"↓", "x":9, "y":3}, {"label":"↑", "x":10, "y":3}, {"label":"→", "x":11, "y":3}] }, "LAYOUT_planck_mit": { - "key_count": 47, "layout": [{"label":"Tab", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"Back Space", "x":11, "y":0}, {"label":"Esc", "x":0, "y":1}, {"label":"A", "x":1, "y":1}, {"label":"S", "x":2, "y":1}, {"label":"D", "x":3, "y":1}, {"label":"F", "x":4, "y":1}, {"label":"G", "x":5, "y":1}, {"label":"H", "x":6, "y":1}, {"label":"J", "x":7, "y":1}, {"label":"K", "x":8, "y":1}, {"label":"L", "x":9, "y":1}, {"label":";", "x":10, "y":1}, {"label":"'", "x":11, "y":1}, {"label":"Shift", "x":0, "y":2}, {"label":"Z", "x":1, "y":2}, {"label":"X", "x":2, "y":2}, {"label":"C", "x":3, "y":2}, {"label":"V", "x":4, "y":2}, {"label":"B", "x":5, "y":2}, {"label":"N", "x":6, "y":2}, {"label":"M", "x":7, "y":2}, {"label":",", "x":8, "y":2}, {"label":".", "x":9, "y":2}, {"label":"/", "x":10, "y":2}, {"label":"Return", "x":11, "y":2}, {"x":0, "y":3}, {"label":"Ctrl", "x":1, "y":3}, {"label":"Alt", "x":2, "y":3}, {"label":"Super", "x":3, "y":3}, {"label":"⇓", "x":4, "y":3}, {"x":5, "y":3, "w":2}, {"label":"⇑", "x":7, "y":3}, {"label":"←", "x":8, "y":3}, {"label":"↓", "x":9, "y":3}, {"label":"↑", "x":10, "y":3}, {"label":"→", "x":11, "y":3}] } } diff --git a/keyboards/contra/keymaps/dana/rules.mk b/keyboards/contra/keymaps/dana/rules.mk index cf891fad3534..bd29e0f41075 100644 --- a/keyboards/contra/keymaps/dana/rules.mk +++ b/keyboards/contra/keymaps/dana/rules.mk @@ -4,7 +4,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = no # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/contra/keymaps/deastiny/keymap.c b/keyboards/contra/keymaps/deastiny/keymap.c index 846cbe9c7b11..026db263edf4 100644 --- a/keyboards/contra/keymaps/deastiny/keymap.c +++ b/keyboards/contra/keymaps/deastiny/keymap.c @@ -46,9 +46,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { `-----------------------------------------------------------------------------------' **/ [_DVORAK] = LAYOUT_planck_mit( - KC_ESC, DE_UE, DE_COMM, DE_DOT, DE_P, DE_Y, DE_F, DE_G, DE_C, DE_T, DE_Z, KC_BSPC, + KC_ESC, DE_UDIA, DE_COMM, DE_DOT, DE_P, DE_Y, DE_F, DE_G, DE_C, DE_T, DE_Z, KC_BSPC, KC_TAB, DE_A, DE_O, DE_E, DE_I, DE_U, DE_H, DE_D, DE_R, DE_N, DE_S, DE_L, - KC_LSFT, DE_AE, DE_OE, DE_Q, DE_J, DE_K, DE_X, DE_B, DE_M, DE_W, DE_V, KC_ENT , + KC_LSFT, DE_ADIA, DE_ODIA, DE_Q, DE_J, DE_K, DE_X, DE_B, DE_M, DE_W, DE_V, KC_ENT , KC_LCTL, KC_LGUI, KC_LALT, MO(3), LOWER, KC_SPC, RAISE, KC_LEFT, KC_RIGHT, KC_UP, KC_DOWN ), @@ -66,7 +66,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_LOWER] = LAYOUT_planck_mit( DE_TILD, DE_EXLM, DE_AT, DE_HASH, DE_DLR, DE_PERC, DE_CIRC, DE_AMPR, DE_ASTR, DE_LPRN, DE_RPRN, KC_DEL, KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, DE_UNDS, DE_PLUS, DE_LCBR, DE_RCBR, DE_PIPE, - _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, DE_QST, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, DE_QUES, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY ), diff --git a/keyboards/contra/keymaps/default/keymap.c b/keyboards/contra/keymaps/default/keymap.c index 31e90ed26765..6a653d9cec48 100644 --- a/keyboards/contra/keymaps/default/keymap.c +++ b/keyboards/contra/keymaps/default/keymap.c @@ -222,10 +222,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { #ifdef BACKLIGHT_ENABLE backlight_step(); #endif - PORTE &= ~(1<<6); } else { unregister_code(KC_RSFT); - PORTE |= (1<<6); } return false; break; diff --git a/keyboards/contra/keymaps/losinggeneration/rules.mk b/keyboards/contra/keymaps/losinggeneration/rules.mk index 17ef684830f4..34b0ba318fba 100644 --- a/keyboards/contra/keymaps/losinggeneration/rules.mk +++ b/keyboards/contra/keymaps/losinggeneration/rules.mk @@ -5,7 +5,7 @@ AUDIO_ENABLE = no # Audio output on port C6 BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite COMMAND_ENABLE = no # Commands for debug and configuration CONSOLE_ENABLE = no # Console for debug(+400) MIDI_ENABLE = no # MIDI controls diff --git a/keyboards/contra/keymaps/maxr1998/keymap.c b/keyboards/contra/keymaps/maxr1998/keymap.c index c32a8566115c..044ed0c0cb4e 100644 --- a/keyboards/contra/keymaps/maxr1998/keymap.c +++ b/keyboards/contra/keymaps/maxr1998/keymap.c @@ -65,8 +65,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_FN] = { - {_______, _______, _______, _______, _______, _______, _______, DE_UE, _______, DE_OE, _______, KC_DEL }, - {KC_LOCK, DE_AE, DE_SS, _______, _______, G_1, _______, RGB_M_P, RGB_M_B, RGB_M_SW,_______, _______}, + {_______, _______, _______, _______, _______, _______, _______, DE_UDIA, _______, DE_ODIA, _______, KC_DEL }, + {KC_LOCK, DE_ADIA, DE_SS, _______, _______, G_1, _______, RGB_M_P, RGB_M_B, RGB_M_SW,_______, _______}, {_______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_TOG, RGB_HUI, KC_PGUP, _______}, {_______, _______, _______, XXXXXXX, XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, KC_HOME, KC_PGDN, KC_END } }, @@ -85,13 +85,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_NR] = { {_______, DE_1, DE_2, DE_3, DE_4, DE_5, DE_6, DE_7, DE_8, DE_9, DE_0, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, DE_HASH, _______}, - {_______, DE_LESS, _______, _______, _______, _______, _______, _______, _______, _______, DE_MINS, _______}, + {_______, DE_LABK, _______, _______, _______, _______, _______, _______, _______, _______, DE_MINS, _______}, {_______, _______, _______, XXXXXXX, _______, _______, _______, _______, XXXXXXX, _______, _______, _______} }, [_NR_L3] = { {_______, DE_1, DE_2, DE_3, DE_4, DE_5, DE_6, DE_7, DE_8, DE_9, DE_0, DE_SS }, {_______, DE_Q, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, - {_______, DE_LESS, _______, _______, _______, _______, _______, _______, _______, _______, DE_MINS, _______}, + {_______, DE_LABK, _______, _______, _______, _______, _______, _______, _______, _______, DE_MINS, _______}, {_______, _______, _______, XXXXXXX, _______, _______, _______, _______, XXXXXXX, _______, _______, _______} }, diff --git a/keyboards/contra/rules.mk b/keyboards/contra/rules.mk index 9bd4c08513b7..0b072591d984 100755 --- a/keyboards/contra/rules.mk +++ b/keyboards/contra/rules.mk @@ -2,30 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output LAYOUTS = planck_mit ortho_4x12 LAYOUTS_HAS_RGB = no diff --git a/keyboards/converter/a1200/a1200.c b/keyboards/converter/a1200/a1200.c new file mode 100644 index 000000000000..5e7e40428738 --- /dev/null +++ b/keyboards/converter/a1200/a1200.c @@ -0,0 +1,16 @@ +/* Copyright 2021 8bits4ever + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "a1200.h" diff --git a/keyboards/converter/a1200/a1200.h b/keyboards/converter/a1200/a1200.h new file mode 100644 index 000000000000..ae99809e0972 --- /dev/null +++ b/keyboards/converter/a1200/a1200.h @@ -0,0 +1,47 @@ +/* Copyright 2021 8bits4ever + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#define _x_ KC_NO + +#include "quantum.h" + +/* This a shortcut to help you visually see your layout. + * The first section contains "names" for physical keys of the keyboard + * and defines their position on the board. + * The second section defines position of the keys on the switch matrix + * (where COLUMNS and ROWS crosses). */ + +#define LAYOUT( \ + K5A, K5B, K5C, K5D, K5E, K5F, K5G, K5H, K5I, K5J, K5K, \ + \ + K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H, K4I, K4J, K4K, K4L, K4M, K4N,K4O, K4P, K4Q, K4R, K4S, K4T, K4U, \ + K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H, K3I, K3J, K3K, K3L, K3M, K3R, K3S, K3T, K3U, \ + K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H, K2I, K2J, K2K, K2L, K2M, K2N, K2O, K2P, K2Q, K2R, K2S, K2T, \ + K1A, K1B, K1C, K1D, K1E, K1F, K1G, K1H, K1I, K1J, K1K, K1L, K1M, K0F, K0G, K0H, K1O, K1P, K1Q, K1R, \ + K0A, K0B, K0C, K0D, K0E, K0I, K0J \ +) \ +{ \ +/* "Q" */ { K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H, K3I, K3J, K3K, K3L, K3M, K2O, K0F, K4P }, \ +/* "A" */ { K2B, K2C, K2D, K2E, K2F, K2G, K2H, K2I, K2J, K2K, K2L, K2M, K2N, K4P, K0H, K0B }, \ +/* "Z" */ { K1B, K1C, K1D, K1E, K1F, K1G, K1H, K1I, K1J, K1K, K1L, K4O, K0C, K4O, K0G, K0A }, \ +/* PAD */ { K4U, K2T, K3T, K2S, K1Q, K0J, K3S, K2R, K1P, K1R, K3R, K2Q, K1O, K0I, K3U, K1A }, \ +/* "1" */ { K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H, K4I, K4J, K4K, K4L, K4M, K4N, K2P, K2A }, \ +/* 05 */ { _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, K1M }, \ +/* FN */ { K5A, K4R, K5B, K5C, K5D, K5E, K5F, K4S, K5G, K4T, K5H, K5I, K5J, K5K, K4Q, K0D }, \ +/* 07 */ { _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, K0E }, \ +} +/* A(15) B(16) C(17) D(18) E(19) F(20) G(21) H(22) I(23) J(24) K(25) L(26) M(27) N(28) O(29) P(30) */ diff --git a/keyboards/converter/a1200/info.json b/keyboards/converter/a1200/info.json new file mode 100644 index 000000000000..41f328668e7c --- /dev/null +++ b/keyboards/converter/a1200/info.json @@ -0,0 +1,110 @@ +{ + "keyboard_name": "Amiga 1200 Keyboard", + "maintainer": "8bits4ever", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":2, "y":0}, + {"label":"F2", "x":3, "y":0}, + {"label":"F3", "x":4, "y":0}, + {"label":"F4", "x":5, "y":0}, + {"label":"F5", "x":6, "y":0}, + {"label":"F6", "x":8, "y":0}, + {"label":"F7", "x":9, "y":0}, + {"label":"F8", "x":10, "y":0}, + {"label":"F9", "x":11, "y":0}, + {"label":"F10", "x":12, "y":0}, + + {"label":"~", "x":0, "y":1.5}, + {"label":"!", "x":1, "y":1.5}, + {"label":"@", "x":2, "y":1.5}, + {"label":"#", "x":3, "y":1.5}, + {"label":"$", "x":4, "y":1.5}, + {"label":"%", "x":5, "y":1.5}, + {"label":"^", "x":6, "y":1.5}, + {"label":"&", "x":7, "y":1.5}, + {"label":"*", "x":8, "y":1.5}, + {"label":"(", "x":9, "y":1.5}, + {"label":")", "x":10, "y":1.5}, + {"label":"_", "x":11, "y":1.5}, + {"label":"+", "x":12, "y":1.5}, + {"label":"`", "x":13, "y":1.5}, + {"label":"Backspace", "x":14, "y":1.5}, + {"label":"Del", "x":15.25, "y":1.5, "w":1.5}, + {"label":"Help", "x":16.75, "y":1.5, "w":1.5}, + {"label":"Num Lock", "x":18.5, "y":1.5}, + {"label":"/", "x":19.5, "y":1.5}, + {"label":"*", "x":20.5, "y":1.5}, + {"label":"-", "x":21.5, "y":1.5}, + + {"label":"Tab", "x":0, "y":2.5, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.5}, + {"label":"W", "x":2.5, "y":2.5}, + {"label":"E", "x":3.5, "y":2.5}, + {"label":"R", "x":4.5, "y":2.5}, + {"label":"T", "x":5.5, "y":2.5}, + {"label":"Y", "x":6.5, "y":2.5}, + {"label":"U", "x":7.5, "y":2.5}, + {"label":"I", "x":8.5, "y":2.5}, + {"label":"O", "x":9.5, "y":2.5}, + {"label":"P", "x":10.5, "y":2.5}, + {"label":"{", "x":11.5, "y":2.5}, + {"label":"}", "x":12.5, "y":2.5}, + {"label":"7", "x":18.5, "y":2.5}, + {"label":"8", "x":19.5, "y":2.5}, + {"label":"9", "x":20.5, "y":2.5}, + {"label":"+", "x":21.5, "y":2.5}, + + {"label":"CTRL", "x":0, "y":3.5}, + {"label":"Caps Lock", "x":1, "y":3.5}, + {"label":"A", "x":2, "y":3.5}, + {"label":"S", "x":3, "y":3.5}, + {"label":"D", "x":4, "y":3.5}, + {"label":"F", "x":5, "y":3.5}, + {"label":"G", "x":6, "y":3.5}, + {"label":"H", "x":7, "y":3.5}, + {"label":"J", "x":8, "y":3.5}, + {"label":"K", "x":9, "y":3.5}, + {"label":"L", "x":10, "y":3.5}, + {"label":":", "x":11, "y":3.5}, + {"label":"\"", "x":12, "y":3.5}, + {"label":"~", "x":13, "y":3.5}, + {"label":"Enter", "x":14, "y":2.5, "w":1, "h":2}, + {"label":"\u2191", "x":16.25, "y":3.5}, + {"label":"4", "x":18.5, "y":3.5}, + {"label":"5", "x":19.5, "y":3.5}, + {"label":"6", "x":20.5, "y":3.5}, + {"label":"+", "x":21.5, "y":3.5}, + + {"label":"Shift", "x":0, "y":4.5, "w":1.25}, + {"label":"|", "x":1.25, "y":4.5}, + {"label":"Z", "x":2.25, "y":4.5}, + {"label":"X", "x":3.25, "y":4.5}, + {"label":"C", "x":4.25, "y":4.5}, + {"label":"V", "x":5.25, "y":4.5}, + {"label":"B", "x":6.25, "y":4.5}, + {"label":"N", "x":7.25, "y":4.5}, + {"label":"M", "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":"Shift", "x":12.25, "y":4.5, "w":2.75}, + {"label":"\u2190", "x":15.25, "y":4.5}, + {"label":"\u2193", "x":16.25, "y":4.5}, + {"label":"\u2192", "x":17.25, "y":4.5}, + {"label":"1", "x":18.5, "y":4.5}, + {"label":"2", "x":19.5, "y":4.5}, + {"label":"3", "x":20.5, "y":4.5}, + {"label":"Enter", "x":21.5, "y":4.5, "h":2}, + + {"label":"Alt", "x":1, "y":5.5, "w":1.5}, + {"label":"Amiga", "x":2.5, "y":5.5, "w":1.5}, + {"label":"Space", "x":4, "y":5.5, "w":7}, + {"label":"Amiga", "x":11, "y":5.5, "w":1.5}, + {"label":"Alt", "x":12.5, "y":5.5, "w":1.5}, + {"label":"0", "x":18.5, "y":5.5, "w":2}, + {"label":".", "x":20.5, "y":5.5}] + } + } +} diff --git a/keyboards/converter/a1200/keymaps/default/keymap.c b/keyboards/converter/a1200/keymaps/default/keymap.c new file mode 100644 index 000000000000..4f7c7be8430b --- /dev/null +++ b/keyboards/converter/a1200/keymaps/default/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2021 8bits4ever + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, + + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, KC_DEL, MO(1), KC_LPRN, KC_RPRN, KC_PSLS, KC_PAST, + 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_P7, KC_P8, KC_P9, KC_PMNS, + KC_LCTL, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT, KC_UP, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_LEFT, KC_DOWN, KC_RGHT, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, KC_P0, KC_PDOT + ), + + [1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_F11, KC_F12, + + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_NLCK, KC_SLCK, _______, KC_PSCR, + _______, _______, _______, _______, RESET,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_NO, _______, _______, _______, _______, _______, _______, + _______, KC_NO, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ), +}; + diff --git a/keyboards/converter/a1200/miss1200/config.h b/keyboards/converter/a1200/miss1200/config.h new file mode 100644 index 000000000000..5a6c679651a7 --- /dev/null +++ b/keyboards/converter/a1200/miss1200/config.h @@ -0,0 +1,62 @@ +/* +Copyright 2021 8bits4ever + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFFFF +#define PRODUCT_ID 0x0000 +#define DEVICE_VER 0x0001 +#define MANUFACTURER 8bits4ever +#define PRODUCT MiSS-1200 + +/* key matrix size */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 16 + +/* + * 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 { F7, F6, F5, F4, F1, F0, B1, B3 } +#define MATRIX_COL_PINS { D0, D1, C7, D6, B7, B6, B5, B4, E6, D7, C6, D4, B2, D5, D3, D2 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION ROW2COL + +#define LED_CAPS_LOCK_PIN B0 +#define LED_PIN_ON_STATE 0 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + + +/* 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/converter/a1200/miss1200/rules.mk b/keyboards/converter/a1200/miss1200/rules.mk new file mode 100644 index 000000000000..ac31d99beac1 --- /dev/null +++ b/keyboards/converter/a1200/miss1200/rules.mk @@ -0,0 +1,19 @@ +# 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 +# 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 diff --git a/keyboards/converter/a1200/readme.md b/keyboards/converter/a1200/readme.md new file mode 100644 index 000000000000..96c36b6207aa --- /dev/null +++ b/keyboards/converter/a1200/readme.md @@ -0,0 +1,55 @@ +# Amiga 1200 Keyboard Converter + +Modification of the Model-M 101 membrane adapter (converter/modelm101) to work with Amiga 1200 keyboard (and possibly Amiga 500/600 too). +The adapter allows using the original Amiga keyboard as a USB input device, either with a desktop PC or a R-Pi/FPGA board hosted inside the Amiga case. + +Available for two micros: AT90USB1286 (Teensy 2++ board), and ATmega32u4 (MiSS-1200 FPGA board). + +A small PCB adapter is needed for connecting the keyboard membrane to the Teensy 2.0++ board. A very simple example of such a board is available here: +https://github.com/8bits4ever/A1200-Keyboard-Adapter + +The MiSS-1200 FPGA board features a dedicated connector for the Amiga 1200 membrane keyboard. + +Files have been modified in accordance to the Amiga keyboard layout and features. A second layer has been implemented (momentary toggle "Help" key) to access unexistent keys (like F11 and F12). This is a work in progress. + + +Pins of the Teensy board you should use by default: +``` +Columns: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 +Pins: D2 D3 D4 D5 D6 D7 E0 E1 C0 C1 C2 C3 C4 C5 C6 C7 +-------------------------------------------------------- +Rows: 1 2 3 4 5 6 7 8 +Pins: F0 F1 F2 F3 F4 F5 F6 F7 +-------------------------------------------------------- +Status LEDs: CapsLock +5V +Pins: B6 5V +``` + +Pins assignment MiSS-1200 board (ATmega32u4): +``` +Columns: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 +Pins: D0 D1 C7 D6 B7 B6 B5 B4 E6 D7 C6 D4 B2 D5 D3 D2 +-------------------------------------------------------- +Rows: 1 2 3 4 5 6 7 8 +Pins: F7 F6 F5 F4 F1 F0 B1 B3 +-------------------------------------------------------- +Status LEDs: CapsLock +5V +Pins: B0 5V +``` + +* Keyboard Maintainer: [8bits4ever](https://github.com/8bits4ever) +* Hardware Supported: Teensy 2.0++ board by PJRC, MiSS-1200 FPGA by 8bits4ever +* Hardware Availability: https://www.pjrc.com/store/teensypp.html + +For first time flashing use the reset button to enter in bootloader mode. Once the board is flashed you can use "HELP"+"R" on the Amiga keyboard for reflashing. + +Make example for this keyboard (after setting up your build environment): + + make converter/a1200/teensy2pp:default + +Or: + + make converter/a1200/miss1200: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/converter/a1200/teensy2pp/config.h b/keyboards/converter/a1200/teensy2pp/config.h new file mode 100644 index 000000000000..19e7ca9b95a9 --- /dev/null +++ b/keyboards/converter/a1200/teensy2pp/config.h @@ -0,0 +1,61 @@ +/* +Copyright 2021 8bits4ever + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x0000 +#define DEVICE_VER 0x0001 +#define MANUFACTURER 8bits4ever +#define PRODUCT Amiga-1200 + +/* key matrix size */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 16 + +/* + * 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 { F0, F1, F2, F3, F4, F5, F6, F7 } +#define MATRIX_COL_PINS { D2, D3, D4, D5, D6, D7, E0, E1, C0, C1, C2, C3, C4, C5, C6, C7 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION ROW2COL + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed (5 is default) */ +#define DEBOUNCE 5 + +#define LED_CAPS_LOCK_PIN B6 + + +/* 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/converter/a1200/teensy2pp/rules.mk b/keyboards/converter/a1200/teensy2pp/rules.mk new file mode 100644 index 000000000000..0c722e9d44a0 --- /dev/null +++ b/keyboards/converter/a1200/teensy2pp/rules.mk @@ -0,0 +1,19 @@ +# MCU name +MCU = at90usb1286 + +# Bootloader selection +BOOTLOADER = halfkay + +# 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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/tmk_core/protocol/adb.c b/keyboards/converter/adb_usb/adb.c similarity index 99% rename from tmk_core/protocol/adb.c rename to keyboards/converter/adb_usb/adb.c index 367f1b09fa11..28f14c9fe890 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 similarity index 100% rename from tmk_core/protocol/adb.h rename to 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 3db303b039fc..ddbbd7156490 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 . Ported to QMK by Peter Roe */ -#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 * `-----------------------------------------------------------' `-----------' `---------------' */ #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 * +---------------------------------------------------------+ +-------+---+---+ */ #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/info.json b/keyboards/converter/adb_usb/info.json index e00b3b05f96d..45ae5e4f34bc 100644 --- a/keyboards/converter/adb_usb/info.json +++ b/keyboards/converter/adb_usb/info.json @@ -2,8 +2,6 @@ "keyboard_name": "ADB to USB Keyboard Converter", "url": "", "maintainer": "qmk", - "width": 22.5, - "height": 7, "layouts": { "LAYOUT_ext_ansi": { "layout": [ diff --git a/keyboards/converter/adb_usb/matrix.c b/keyboards/converter/adb_usb/matrix.c index 9e5399de5d6b..e6a4921960e7 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 #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 70df2561d190..ffdbed0dfae8 100644 --- a/keyboards/converter/adb_usb/rules.mk +++ b/keyboards/converter/adb_usb/rules.mk @@ -2,28 +2,22 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend 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/hp_46010a/info.json b/keyboards/converter/hp_46010a/info.json index 3d66074a3dd4..01e9f4d25fd3 100644 --- a/keyboards/converter/hp_46010a/info.json +++ b/keyboards/converter/hp_46010a/info.json @@ -2,8 +2,6 @@ "keyboard_name": "HP_46010A", "url": "https://deskthority.net/wiki/HP_46010A", "maintainer": "listofoptions", - "width": 22, - "height": 7, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/converter/hp_46010a/rules.mk b/keyboards/converter/hp_46010a/rules.mk index b7199d7f9028..c7e54cbe4269 100644 --- a/keyboards/converter/hp_46010a/rules.mk +++ b/keyboards/converter/hp_46010a/rules.mk @@ -2,37 +2,24 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp 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 # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = 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 -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -API_SYSEX_ENABLE = no SPLIT_KEYBOARD = no WAIT_FOR_USB = yes LAYOUTS_HAS_RGB = 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 CUSTOM_MATRIX = yes SRC = matrix.c diff --git a/keyboards/converter/ibm_5291/config.h b/keyboards/converter/ibm_5291/config.h deleted file mode 100644 index adf66cc697f8..000000000000 --- a/keyboards/converter/ibm_5291/config.h +++ /dev/null @@ -1,39 +0,0 @@ -/* -Copyright 2018 listofoptions - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -#include "config_common.h" - -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x6060 -#define DEVICE_VER 0x0001 -#define MANUFACTURER QMK -#define PRODUCT 5291 keyboard converter - -#define MATRIX_ROWS 24 -#define MATRIX_COLS 4 - -#define MATRIX_ROW_PINS {B2, B3, B4, B5, B6} -#define MATRIX_COL_PINS {B0, B1} -#define MATRIX_DATA_PIN D0 -#define MATRIX_STROBE_PIN D1 -#define LED_PIN D6 - - -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 0 diff --git a/keyboards/converter/ibm_5291/ibm_5291.c b/keyboards/converter/ibm_5291/ibm_5291.c deleted file mode 100644 index 9b937a545ae2..000000000000 --- a/keyboards/converter/ibm_5291/ibm_5291.c +++ /dev/null @@ -1,3 +0,0 @@ -#include "ibm_5291.h" -#include -#include "quantum.h" \ No newline at end of file diff --git a/keyboards/converter/ibm_5291/ibm_5291.h b/keyboards/converter/ibm_5291/ibm_5291.h deleted file mode 100644 index aa1b403242e2..000000000000 --- a/keyboards/converter/ibm_5291/ibm_5291.h +++ /dev/null @@ -1,69 +0,0 @@ -/* -Copyright 2018 listofoptions - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -#include "quantum.h" - -/* - * ,-------. ,--------------------------------------------------------------------------. - * | F1| F2| |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| BS |NumLck |ScrLck | - * |-------| |--------------------------------------------------------------------------| - * | F3| F4| | Tab | Q| W| E| R| T| Y| U| I| O| P| [| ] | | 7| 8| 9| -| - * |-------| |------------------------------------------------------|Ent|---------------| - * | F5| F6| | Ctrl | A| S| D| F| G| H| J| K| L| ;| '| `| | 4| 5| 6| | - * |-------| |----------------------------------------------------------------------| | - * | F7| F8| |Shif| \| Z| X| C| V| B| N| M| ,| .| /|Shift|PrS| 1| 2| 3| +| - * |-------| |----------------------------------------------------------------------| | - * | F9|F10| | Alt | Space |CapsLck| 0 | . | | - * `-------' `--------------------------------------------------------------------------' -*/ - -#define LAYOUT_5291( \ - KEY_F1,KEY_F2, KEY_ESC, KEY_1, KEY_2,KEY_3,KEY_4,KEY_5,KEY_6,KEY_7,KEY_8,KEY_9, KEY_0, KEY_MIN, KEY_EQU, KEY_BACK, KEY_NLOCK, KEY_SLOCK, \ - KEY_F3,KEY_F4, KEY_TAB, KEY_Q, KEY_W,KEY_E,KEY_R,KEY_T,KEY_Y,KEY_U,KEY_I,KEY_O, KEY_P, KEY_LBRC,KEY_RBRC, KEY_PAD7,KEY_PAD8, KEY_PAD9,KEY_PMIN, \ - KEY_F5,KEY_F6, KEY_LCTR,KEY_A, KEY_S,KEY_D,KEY_F,KEY_G,KEY_H,KEY_J,KEY_K,KEY_L, KEY_SEMI,KEY_QUOT,KEY_TICK, KEY_ENTR,KEY_PAD4,KEY_PAD5, KEY_PAD6, \ - KEY_F7,KEY_F8, KEY_LSFS,KEY_BSLS,KEY_Z,KEY_X,KEY_C,KEY_V,KEY_B,KEY_N,KEY_M,KEY_COMM,KEY_DOT, KEY_SLS,KEY_RSFS, KEY_PAST,KEY_PAD1,KEY_PAD2, KEY_PAD3,KEY_PPLS, \ - KEY_F9,KEY_F10, KEY_LALT, KEY_SPACE, KEY_CLOCK, KEY_PAD0, KEY_PDOT \ -) \ -{ {KEY_Z, KEY_S, KEY_W, KEY_3 }\ -, {KEY_X, KEY_D, KEY_E, KEY_4 }\ -, {KEY_C, KEY_F, KEY_R, KEY_5 }\ -, {KEY_V, KEY_G, KEY_T, KEY_6 }\ -, {KEY_B, KEY_H, KEY_Y, KEY_7 }\ -, {KEY_N, KEY_J, KEY_U, KEY_8 }\ -, {KEY_PAD2, KEY_PAD5,KEY_PAD8,KEY_NLOCK }\ -, {KEY_M, KEY_K, KEY_I, KEY_9 }\ -, {KEY_COMM, KEY_L, KEY_O, KEY_0 }\ -, {KEY_DOT, KEY_SEMI,KEY_P, KEY_MIN }\ -, {KEY_SLS, KEY_QUOT,KEY_LBRC,KEY_EQU }\ -, {KEY_SPACE, KEY_RSFS,KEY_TICK,KEY_RBRC }\ -, {KEY_CLOCK, KEY_PAST,KEY_ENTR,KEY_BACK }\ -, {KEY_PAD0, KEY_PAD1,KEY_PAD4,KEY_PAD7 }\ -, {KEY_PPLS, KC_NO, KEY_PMIN,KEY_SLOCK }\ -, {KEY_PDOT, KEY_PAD3,KEY_PAD6,KEY_PAD9 }\ -, {KEY_BSLS, KEY_A, KEY_Q, KEY_2 }\ -, {KEY_LALT, KC_NO, KC_NO, KEY_1 }\ -, {KEY_F7, KEY_F5, KEY_F3, KEY_F1 }\ -, {KEY_F8, KEY_F6, KEY_F4, KEY_F2 }\ -, {KC_F10, KC_NO, KC_NO, KC_NO }\ -, {KC_F9, KC_NO, KC_NO, KC_NO }\ -, {KEY_LSFS, KEY_LCTR,KEY_TAB, KEY_ESC }\ -, {KC_NO, KC_NO, KC_NO, KC_NO }\ -} - -#define LAYOUT LAYOUT_5291 \ No newline at end of file diff --git a/keyboards/converter/ibm_5291/info.json b/keyboards/converter/ibm_5291/info.json deleted file mode 100644 index dca1ca6f0de9..000000000000 --- a/keyboards/converter/ibm_5291/info.json +++ /dev/null @@ -1,96 +0,0 @@ -{ - "keyboard_name": "IBM 5291", - "url": "https://deskthority.net/wiki/IBM_Model_F#IBM_5291_Keyboard", - "maintainer": "listofoptions", - "width": 21, - "height": 5, - "layouts": { - "LAYOUT_5291": { - "layout": [ - {"label":"Sys Req", "x":0, "y":0}, - {"label":"Cmd", "x":1, "y":0}, - {"label":"`", "x":2.25, "y":0}, - {"label":"1", "x":3.25, "y":0}, - {"label":"2", "x":4.25, "y":0}, - {"label":"3", "x":5.25, "y":0}, - {"label":"4", "x":6.25, "y":0}, - {"label":"5", "x":7.25, "y":0}, - {"label":"6", "x":8.25, "y":0}, - {"label":"7", "x":9.25, "y":0}, - {"label":"8", "x":10.25, "y":0}, - {"label":"9", "x":11.25, "y":0}, - {"label":"0", "x":12.25, "y":0}, - {"label":"-", "x":13.25, "y":0}, - {"label":"=", "x":14.25, "y":0}, - {"label":"Backspace", "x":15.25, "y":0, "w":1.75}, - {"label":"Reverse Tab", "x":17, "y":0, "w":2}, - {"label":"Dup", "x":19, "y":0, "w":2}, - {"label":"Del", "x":0, "y":1}, - {"label":"Erase Input", "x":1, "y":1}, - {"label":"Tab", "x":2.25, "y":1, "w":1.5}, - {"label":"Q", "x":3.75, "y":1}, - {"label":"W", "x":4.75, "y":1}, - {"label":"E", "x":5.75, "y":1}, - {"label":"R", "x":6.75, "y":1}, - {"label":"T", "x":7.75, "y":1}, - {"label":"Y", "x":8.75, "y":1}, - {"label":"U", "x":9.75, "y":1}, - {"label":"I", "x":10.75, "y":1}, - {"label":"O", "x":11.75, "y":1}, - {"label":"P", "x":12.75, "y":1}, - {"label":"¢", "x":13.75, "y":1}, - {"label":"\\", "x":14.75, "y":1, "w":1.25}, - {"label":"7", "x":17, "y":1}, - {"label":"8", "x":18, "y":1}, - {"label":"9", "x":19, "y":1}, - {"label":"Field -", "x":20, "y":1}, - {"label":"Print", "x":0, "y":2}, - {"label":"Help", "x":1, "y":2}, - {"label":"Caps Lock", "x":2.25, "y":2, "w":1.75}, - {"label":"A", "x":4, "y":2}, - {"label":"S", "x":5, "y":2}, - {"label":"D", "x":6, "y":2}, - {"label":"F", "x":7, "y":2}, - {"label":"G", "x":8, "y":2}, - {"label":"H", "x":9, "y":2}, - {"label":"J", "x":10, "y":2}, - {"label":"K", "x":11, "y":2}, - {"label":"L", "x":12, "y":2}, - {"label":";", "x":13, "y":2}, - {"label":"'", "x":14, "y":2}, - {"label":"{", "x":15, "y":2}, - {"label":"Field Exit", "x":16, "y":1, "h":2}, - {"label":"4", "x":17, "y":2}, - {"label":"5", "x":18, "y":2}, - {"label":"6", "x":19, "y":2}, - {"label":"Roll Up", "x":0, "y":3}, - {"label":"Roll Down", "x":1, "y":3}, - {"label":"Shift", "x":2.25, "y":3, "w":1.25}, - {"label":"<", "x":3.5, "y":3}, - {"label":"Z", "x":4.5, "y":3}, - {"label":"X", "x":5.5, "y":3}, - {"label":"C", "x":6.5, "y":3}, - {"label":"V", "x":7.5, "y":3}, - {"label":"B", "x":8.5, "y":3}, - {"label":"N", "x":9.5, "y":3}, - {"label":"M", "x":10.5, "y":3}, - {"label":",", "x":11.5, "y":3}, - {"label":".", "x":12.5, "y":3}, - {"label":"/", "x":13.5, "y":3}, - {"label":"Shift", "x":14.5, "y":3, "w":1.5}, - {"label":"Return", "x":16, "y":3}, - {"label":"1", "x":17, "y":3}, - {"label":"2", "x":18, "y":3}, - {"label":"3", "x":19, "y":3}, - {"label":"Field +", "x":20, "y":2, "h":3}, - {"label":"Left", "x":0, "y":4}, - {"label":"Right", "x":1, "y":4}, - {"label":"Error Reset", "x":2.25, "y":4, "w":2}, - {"label":"Space", "x":4.25, "y":4, "w":9.75}, - {"label":"Enter Rec Adv", "x":14, "y":4, "w":2}, - {"label":"0", "x":16, "y":4, "w":2}, - {"label":".", "x":18, "y":4, "w":2} - ] - } - } -} diff --git a/keyboards/converter/ibm_5291/keymaps/default/keymap.c b/keyboards/converter/ibm_5291/keymaps/default/keymap.c deleted file mode 100644 index 9b286c887d61..000000000000 --- a/keyboards/converter/ibm_5291/keymaps/default/keymap.c +++ /dev/null @@ -1,233 +0,0 @@ -/* -Copyright 2018 listofoptions - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#include QMK_KEYBOARD_H -/* -enum xt_keycodes - { XT_PAST = SAFE_RANGE // XT pad asterisk / print screen - , XT_SLCK // XT scroll lock / break - , XT_F6 // F6 / app key - , XT_F5 // F5 / gui - , XT_F9 // F9 / F11 - , XT_F10 // F10 / F12 - } ; - -static bool shift_pressed = false , - alt_pressed = false , - ctrl_pressed = false , - xt_pscr_pressed = false , - xt_brk_pressed = false , - xt_app_pressed = false , - xt_gui_pressed = false , - xt_lout_pressed = false , - xt_f11_pressed = false , - xt_f12_pressed = false ; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case KC_LSFT: - case KC_RSFT: - if (record->event.pressed) { - shift_pressed = true ; - } else { - shift_pressed = false ; - } - return true; - break; - - case KC_LALT: - if (record->event.pressed) { - alt_pressed = true ; - } else { - alt_pressed = false ; - } - return true; - break; - - case KC_LCTL: - if (record->event.pressed) { - ctrl_pressed = true ; - } else { - ctrl_pressed = false ; - } - return true; - break; - - case XT_PAST: - if (record->event.pressed) { - if (shift_pressed) { - xt_pscr_pressed = true ; - register_code(KC_PSCR); - } else { - register_code(KC_PAST); - } - } else { - if (xt_pscr_pressed) { - xt_pscr_pressed = false ; - unregister_code(KC_PSCR); - } else { - unregister_code(KC_PAST); - } - } - return false; - break; - - case XT_SLCK: - if (record->event.pressed) { - if (ctrl_pressed) { - xt_brk_pressed = true ; - register_code(KC_BRK); - } else { - register_code(KC_SLCK); - } - } else { - if (xt_brk_pressed) { - xt_brk_pressed = false ; - unregister_code(KC_BRK); - } else { - unregister_code(KC_SLCK); - } - } - return false; - break; - - case XT_F6: - if (record->event.pressed) { - if (shift_pressed) { - xt_app_pressed = true ; - register_code(KC_APP); - } else { - register_code(KC_F6); - } - } else { - if (xt_app_pressed) { - xt_app_pressed = false ; - unregister_code(KC_APP); - } else { - unregister_code(KC_F6); - } - } - return false; - break; - - case XT_F5: - if (record->event.pressed) { - if (shift_pressed) { - xt_gui_pressed = true ; - register_code(KC_LGUI); - } else if (ctrl_pressed) { - xt_lout_pressed = true ; - register_code (KC_LGUI) ; - register_code (KC_L) ; - } else { - register_code(KC_F5); - } - } else { - if (xt_gui_pressed) { - xt_gui_pressed = false ; - unregister_code(KC_LGUI); - } else if (xt_lout_pressed) { - xt_lout_pressed = false ; - unregister_code (KC_LGUI) ; - unregister_code (KC_L) ; - } else { - unregister_code(KC_F5); - } - } - return false; - break; - - case XT_F9: - if (record->event.pressed) { - if (shift_pressed) { - xt_f11_pressed = true ; - register_code(KC_F11); - } else { - register_code(KC_F9); - } - } else { - if (xt_f11_pressed) { - xt_f11_pressed = false ; - unregister_code(KC_F11); - } else { - unregister_code(KC_F9); - } - } - return false; - break; - - case XT_F10: - if (record->event.pressed) { - if (shift_pressed) { - xt_f12_pressed = true ; - register_code(KC_F12); - } else { - register_code(KC_F10); - } - } else { - if (xt_f12_pressed) { - xt_f12_pressed = false ; - unregister_code(KC_F12); - } else { - unregister_code(KC_F10); - } - } - return false; - break; - - default: - return true; - break; - } - - return true; -} -*/ - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -// default layout is the standard XT layout -/* - * ,-------. ,--------------------------------------------------------------------------. - * | F1| F2| |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| BS |NumLck |ScrLck | - * |-------| |--------------------------------------------------------------------------| - * | F3| F4| | Tab | Q| W| E| R| T| Y| U| I| O| P| [| ] | | 7| 8| 9| -| - * |-------| |------------------------------------------------------|Ent|---------------| - * | F5| F6| | Ctrl | A| S| D| F| G| H| J| K| L| ;| '| `| | 4| 5| 6| | - * |-------| |----------------------------------------------------------------------| | - * | F7| F8| |Shif| \| Z| X| C| V| B| N| M| ,| .| /|Shift| *| 1| 2| 3| +| - * |-------| |----------------------------------------------------------------------| | - * | F9|F10| | Alt | Space |CapsLck| 0 | . | | - * `-------' `--------------------------------------------------------------------------' -*/ -/* - [0] = LAYOUT ( - KC_F1,KC_F2, KC_ESC, KC_1, KC_2,KC_3,KC_4,KC_5,KC_6,KC_7,KC_8,KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, KC_NLCK, XT_SLCK, - KC_F3,KC_F4, KC_TAB, KC_Q, KC_W,KC_E,KC_R,KC_T,KC_Y,KC_U,KC_I,KC_O, KC_P, KC_LBRC,KC_RBRC, KC_P7,KC_P8, KC_P9, KC_PMNS, - XT_F5,XT_F6, 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_GRV, KC_ENT, KC_P4,KC_P5, KC_P6, - KC_F7,KC_F8, KC_LSFT,KC_BSLS,KC_Z,KC_X,KC_C,KC_V,KC_B,KC_N,KC_M,KC_COMM,KC_DOT, KC_SLSH,KC_RSFT,XT_PAST,KC_P1,KC_P2, KC_P3, KC_PPLS, - XT_F9,XT_F10,KC_LALT, KC_SPACE, KC_CAPS, KC_P0, KC_PDOT - ) -*/ - [0] = LAYOUT ( - KC_F1,KC_F2, KC_ESC, KC_1, KC_2,KC_3,KC_4,KC_5,KC_6,KC_7,KC_8,KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, KC_NLCK, KC_SLCK, - KC_F3,KC_F4, KC_TAB, KC_Q, KC_W,KC_E,KC_R,KC_T,KC_Y,KC_U,KC_I,KC_O, KC_P, KC_LBRC,KC_RBRC, KC_P7,KC_P8, KC_P9, KC_PMNS, - KC_F5,KC_F6, 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_GRV, KC_ENT, KC_P4,KC_P5, KC_P6, - KC_F7,KC_F8, KC_LSFT,KC_BSLS,KC_Z,KC_X,KC_C,KC_V,KC_B,KC_N,KC_M,KC_COMM,KC_DOT, KC_SLSH,KC_RSFT,KC_PAST,KC_P1,KC_P2, KC_P3, KC_PPLS, - KC_F9,KC_F10,KC_LALT, KC_SPACE, KC_CAPS, KC_P0, KC_PDOT - ) -} ; - diff --git a/keyboards/converter/ibm_5291/keymaps/kbdbabel_doc_ibm5291_kbd.pdf b/keyboards/converter/ibm_5291/keymaps/kbdbabel_doc_ibm5291_kbd.pdf deleted file mode 100644 index 3560598f02b8bacc12ef9426875a5b7076e32eab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13054 zcmb_@by$?!*0>x z2-2Y_zZX5{+;h)&pYQwqap&QA-0yzZ+I!_*>s@=vsiUka2o(|~;_UsBP(UOGf`E|L z4~S%C!J2S{y@vxx9GKAqt2#P+z)>Kusx!<3t_-(9+QQ}KiQGL@t#aia^fB@Mua>Vy)h$OAUK-#sv}4wxDD&x^KSi* z_+=G3Jkx#2edkoT9FK7LwiY5BJuqPxqa6~@%N7FV$RD0+7uwH{C$f<3 z{{9E=wvcz;uYosF7_UhAk6U9=?+0c;0;ACOtqKY3ve&x!;oV7< zHhAGxd*@4px=r@f;>_^UXA8d6hdbPI~&dAALzHzEh~d+U%l##-P?w$pZ_!(9oB9|8To&UH|xz2MHpB ze@sCu1B_!4o%^-yXM+ANX_^ml8ps%%BpxbrRh6fAw0x^ML?DK1E`*DZF?~+bA6PPS6i4Ufv+2CI zO?m3kT$Q4)ic|fo37tY zlsC@tEotUa8g~Ov=Cy!|0XkCs_(DaRt&cC;H|QkGx=hAozkTR}^}9)aV*gxU@7hNj zntU?;vD2-Geq5HqkRb!|VttSzO*T&d{80v*0RJFrIX33L+b8)nhS|!4Pg(YNV0zP272*@+%1ow3Nt(SOkljm~ z&5%DZe1-eW&GHHvH5o>6O00-3-fXz*%)ovaedWz(0fu5`wX4{ZAM;Iy3f-7QrQe66 zd`d(z?MjB5NRQqt@Lr81=p7wNelW5;JF*_Y3S)?STiF_hVotz+;5=m^wEgJ`Jg?F# zPtYpRCB08cD!#X6v?+##9_hro-4AIyU=U!=XU^rGyjJhYf9%S{I-cPkc8%frZgcD> zer+X~T9}V)C9K#tGKM#8pt-t|6?L?KH_NZ7>Gk~aP$Xeywd8?Yw;+vBO@W4+$aNI| zQUE%{#Tz|mMPkh_1R<5w&zVDibagMHL3`URTM}Q$wQ-XTMoL<8OT((i)AQkNy&?g>aHT$FY&Lop>)BXh2~48BaUmm?xgo74 zjDq74w9$}eU}pQe_VIyjKx40O#h0Di&r(!g=n&8mgWi|lEH@o_xBhi2MfZt8dMytH z(Jc^GY<10*xXq>~%{AGEGEhI}MR?Y2;i7WW3_Z6OVbNxu)i9WnH$v)lhk)u8T9Z%; zKAZ|mwqsQq%u5#D9bLr_r8LuS*2`)|cTC~G94Ax7&~cHOe;C7et=2*P!uaFjlL&~@JO z8fbnP@uG(p*9+q-&tDJ-nSJ*?d6lW22}p{E%H7RT^eH!zRJbsj$8jUmgYAbN6>M@A;v#lrZ?Ra}UIvc41H$aq|2Qtdh| z5gRpOn7K!ki=+%X+}JqHF}B!9!^9I3u3L?x`e6oOD6O`+x!a`cy{Y~BhV+ZSkv82J zr5|SE)%~_JP20aA%_LHfk0|vukD1I!W6;#2?*!SrDcG&p3J=uM3mo9sok^QGW;9VS zNfk7lUcez8I;@JFeh*il;i`sJR0U;sHNroFNj#fNQ!v;3DZ6@Uib|CZLB?&+a=|U< z(4%MzFBS4Ev@i7E1=k=0`^bn9fNh3(mQr)PO{sODC0ew`!pWkIvaot-;@!=#-&|fS zovsqBLx4>T3ah~FE)kk}v=>QWqt6QoEVmK2Q#YyqWd>b<8C0hvTljQ~X0aI(^972B zYVZj+)3y6*zvO&oXNRqT>x!3$6kn0b$4soz7-ru&0AW9PQxaqM)_rVYOMhh3oDNrs zjX>ZLMI+txnr(T3VcMNT8s*{?l`&<&rR$qY+ulzNZm`8fLVc@B38o=4568+O^^q9?dq{Zb@i}(psEJ_9QlXEhcG67;JBNT-atpt2i7IA5 z!Uz$bHe|vR62WokqY)5QGy=k7GGwqY;U)Wi=XC{}0ADDb8=NWHkX^GnuzTUfHxqOa z>PS*slHyo^s(z3!MGqQ<6Ee*-%8=&DXRO!kVj=0`HQrPQDElJ401BOx1xzcfm%cT@Xs2E_Ut3>J$gx@X!ncZM)U4MP@ z-pud35uf1Z1y_35dN$bI&*S{XPsNXj=*LsGgiX>kmciX-TftoVr_EzUzCA11Y3^^L8d)7)rZ68< zr|LjY#Mgt1QSX=Tq`rnvbkeAHQZc}tdgB`2E!MkM;>KH8qU2-iS?B%xX3)xStE)oA zhVXgbP`rH*fo*YU@!i*huLJRoSM-osc8)j5c2dlvoS@DT0XArft#jSxJW7e@d9GC? zv6^x(LnzV47+v3Ge0QFCQaC)pdQLiDVq`zWf&+~)HO_;Z+eG7p%wp0prtlKA8ooyZ zr6D}n1w<6F6|~0;Gu>h^2fwLv8;NeKkFU?0y!1OQ^$m#xc0P?Vo7UF$(3(p6x^t&} zed=9#Ho3#_LS|DbWmqdN_nEv+guwNirA}LAub^vvJy@0;{iw%2tkVH`0zV_kvbz=3 zO=QtJr3w0kv?ycf`2%@kLzaW}Rj$0w`tjm?Bsj~MD6(O}^D%c5M+6qn`VNj|Yf60)Q7Jmg7{~uUxSb#J zA;5hBDq~Hy(^uJ2cJD4aic2${Kv-6DOs+7Cn#|+FjP#dlc54IhIVR$8uVH~;?G!Bpe6hny8KtNnZl)JpdS`dF-L(SY;Yu=PFCCc@bon_%sooZdJ zxxCL+#7mA`oVU;V*97ESIKDcJ_>zoYhMqy*rzi`a0o3DjvApl2g_^}9x<$F^I^X$e zJ8{Fy)iOBs^v@ZLssJ4y^5{!#DspO!2$$*H>CU6#doxeqpR%!crL$FJ^}38-O!ar7 zN^)WsQ#~HZr>8fJz{YHiuF+W~BawK#zDM?rGHn`-x{Rht=vSIX!>SjgQ}9}W^uBZl zyt%-%JmR^yw7l39&IdPWh_<3|qQ7~FuWvgp=CzJq+V3r%U-mmm<}dOwEW*q5)3pDL z{p#+kRgV5eDRYCLpP7SP`FFUcS%>E(HM5@y52@RoOQ)|<>FF3vPw<;-QdbhgO@y9+ z$*5nAmeNEfQ}}TnqxI<0d1>}D*z>J-TwXIya|^2R$vFSxSkekuwInuQ@3O*rGGe$S zdXiJy$fX-Eqc!Q!wz?C4o;T%j%4*XyUYW8Lr-*N++J-xPwfr!d#?^K@+})_k6{^)D zlnifaZ0^#lyd~Vd=pN_eb!}WSiyfg-JxtJP^Wb`gB}+123A}{DB4aVE(42CB{bqFe zO#<3S2KE6JxDu14*Ni^w#ctCdCq81ELEQ{f!{6SlZ5rcwqw?9$p%+7xk8E|EoG3C= z`n6Q6 zyfvvZa0O|xHQS)jlsS4FIHuXry%}=AI z7|Ol*M+A8V4?x(r@;0$+L_Y6(ttOW?KAk$Skapn$x!4y^d+j*(iK)fjf_5*iyvP$W z?H?mj%D1y7{1{z+YxV=Imb@zG4XnRi-J(9_9=<*UuKJ~{(j~;SE32*Q1%KorR5H_! zM}qHYbOfBBsOLppv{H&IWEkVJQ;+z!e6@NTM)Sqx2%{q2y!$!8eN)%kEcxXMYJ3XrJ(MKk{D zwdm)KKZl>@+7BunJIl6gVAFI#>L_(HKa>=*(Vxn0ZEi4DY2unswuJD?W+dWdINgrS zh});xBWiZF-Sr*SR5LeZ(S*@(DC#zPF{2ZCtj1*%StNLGNFbNgvJz7RK>=x%(IjqKZct`dhOGat7KQcbKSpBKUaPG*C%2% zj^c+8Zob_2_t7>By~AI{e{%hBOYR#!r7jTt`K*vF9jxKcT7ov0E{)Th%paoh!n^nA zlxWPVO+Ayo4Xc#7LFUC3J|D_5gN>g_Z_hFU65D__YT(H1M&M@XkPEI`8j4QWB7 z_h`{+Z&D*n)E_buVa@rmzyy522#fcdM~MLWq_S=*3y={repJ_Zm&9FHDRyumz797 z$Ifv+BW+Lp5?}f+IB)Cfu(yo3OX~3bXWrL2alDIQPr*n9oH19vUHslo_~HyQdBwWl z?Iu}a^c8{wd+CEN&K&(uyRQV5EY^W3qh3%=lNIl9RUzFnH4q-Z*);gg<fjxBdiKk!0RfkhzcZA<{b@fZ;WOBp9L7Yacg}_nZx^B0K%`MQ^N{4?g0eWHyM;% z;>pddt1ZU+UuymhDa|NraPD1l-C0nB0AE-a$S_O0y{W+1&i-DuEsV*&hubpUTvH*j zw$zp=*cvOWC7M2lj>IkN{*rCo`2&+T#Nk(}uXNduE-)k@1=t@7-s{VaQRa=&&Zppe zaR+th8q<@lZOKMP5Ysqr;=035o+8q-v-TV;& zekup5oyG^7QYnSsaQ~hsMFt{PWw_sOYA!zS(rXy>OHJBnph?qtass^?i0D$htHSa7 zgp9hZIk}xi6<3G_J!87>k)iB-O&ZqKwK}k=3V%#!o`j$4q^@5%C_dgY!d;@Y|tqZ+4 znX`NzjW}Nx#CO~#(u8N_kgp1djsnLm%c;tK35)gWp1u(=q@rIH)?1yAIQ%Z0{lGOv zsbjf*x#BJUW)@i|tFc0FnLts;mb{E#Hr@Q0xoM_}dL8$% zpKEAmaec2!%IsB2yPW3AT%UHKlk6T^a@1bxjsEVF^_7nHHs2pRM-SVut9GZ{PB+%3 zz9QNm{=nRi7$5LfX#Y8^HTgLOrgcv?HlWbCb3Dt>FqqJ6O^&PBSg6!z#(-aN0X;*TYPymdX@*9j8cV{wl^>w7U@ zCxQv4?=_lh)|i_g)W5J7L$s8uN_i&--%xw-^{9VfCm7sbOEZv_1Ijy2tCIimxhCf{ znn)f^MP%XlU}(>E89d6m+_|6qBQ$%~_rB%6D7Pc;@mc970IlokO{roF9BJ$x&g@D5j2#q7( zkF$9ra{0jh(T0OOUyqaa^X0;egYy%k)11hlTR+am*K*}Xhi)1U@wamr3|%~?+9SUE z#IAY*-y8?og0^mHUUk$TZrn;6c(B|k&iHuD^{E>9E7#AhB_cV@KdAgxKW9GIdWH8R zV&FkoN8nqRp&v1Xq~*1#-u-WI29}Mo&7F~4N*K`=$+WBY?bt)$C^S=PfPESoZIvPP zWr$Vgy4{PA>l;^bSC(BE4JEo58!XQs8i%atWf9;@4f|EJH zgStAD&o^I8>^?rWXZ$dPv2K-?@UzyeSz0Je<{KAvhZgNo`B3J4)U*{UHm;1?;S>){ zo)XP`HY>J~JbL9GZ*wJm--c!e8~lcnF@L>H+>|8+BQTz8m8gmO1gpR0KK zT6jdZFtl5EG*LuT8LBC}obs4AVq==&4SZ7i`30FxqFh0|VvglDgRKxt=peio z@?s`daj#PtFJmBHaWM(XV{S(xoF1>ZT5FTo;sFdqvT3_42IfIOF95=Psr!%e$(bKRp?0F&mbiY{SD}gyOjW4Pm)AqyoaJ z^fEPJz}l#rlBfzg-I(~XI9j*`*h$c_)gu-~Ed`xtT{pBC+?JRXr*dEY+?We|30zSa zq#ND6-jeVmaQePY$yLMF`$5>`PGp~MUl*hlXBm#5uMYFuqdX6-is?8dFodD6S(GZj zs7>Q*ulUSWN!3Cm5Qp_8`?+Xj{zqB=LuQ{2pR=70W#dkj>B>e)(Hax?_~akGYfPx9 zOlj6`SKu&juG-o?TwMDk7QsEtO1|@TNik5F*s+)EDU=BgfW4_j!mb`T@c{g8GhIz)Bz-~oa5!^a|lhcBpn?44|Q zn7Fu%x#p-&CWwsqf7HLQv!ST#r8LcIh`S?7PrgU`vE?yoRstS@OEl!1BstE!#Zd^~ z+mJ?gS8UVZ#GAiTCV63r{SHP&47l)$>k&*J^)VUloRex##)`KNix06_8$N0O*_u$9 zj$0M{+#eFuKDnZ@K=GZ>;MtGm8}_XggKjP>1#fPMvtnD&-=!j@)^SBRp(V=&uNzZF z-|JiS!l*A16fJ$~4pz_td*HxYGT+f5otEfa0^M(lzc|85)hGOjF;&)#_C`4(g>^V3w=K z$pu8+-}?%U@6*hE}5$ z&~b0buZ@R{+OM#VSkyjxYoh-!!7~}>_3J0}E997b0a4#>n*nKlxm_98^=HG&veq5N zu0WbbR^Dk8iDx32-_^;ali#ZMy*DfCn5@8&Ng(JZW`yMpp1SNs_RmolMpgeZ9WI9Z z2TyPe#~`NF*#EE;=o@DwfPg305GCkqi2}EQ}9X-yQoE`{5SvCd)j+ zTT{!;WIKXnf5lulAdZq|#pWV-u8+8{GgfR%ks~*xj@=)ptPjZY7c)OJgzK8+(gumY z&@}$&-WYd)-w|jSeR(-Oa&HDNZlQoM%bYSh_vZCfTLH=Q64{=Dy*cm!a0xPO(i7FP zk=avYPb(X(Iko8K*|xRYT%vu|G_^>I1WpLcOfA4vBU8t{V0&+uUH4{3= zqa&&$6&q0{C*gqDkU@-llQ05Tx0t}*0z&)Q)p4zHbo`)}d)tk>J}t5mLc4n|b@!&# zxxD4#29gZVvl;Ai2xwyaW^tnu9*fgyV%@H-v0`iow@$xe<3AcmUu7Ie5jHBTlWD=JZZVy7xdos;gD6Sq8YMm?r`3Q73i0jj6#U< z__8)0Vel#K@waHGZXOfLN>vom5;gX@^j~KJtj+aW;6^UPcK;E_>XtCS#V~}{D*BO= zzbxhc{*fJd0VyXj-MEghWVlAeTh^)112XbrEjQ*~E$cVf3)ipA*%UYbsdIh6z=p{=j_Ca3Ct_Qh5s%<8T;e%+!qw|KBP zzKYsik!v~ZPBKHe+o67}uQVYoNx#mM-GB9S@w*YYqt(mJ-S*fDHMN7gGiw=e*hF6J z%2Ho#sV4Nvw?EXeMH>t$zqr+`ui5&`>$0U5Km`e@3HZq z7m-Fk$)?b^5sL^GmFXgv5B&^n-%Bd#g?ODOmVMV{;b-#{lYE5sE>zzCq~=1BBoII9*3{MNxs{F9 z!>04|WZ$13WG{ffBLAOdf#=DA=amo7+aI3iKRl;ImY9LxrC{DM>kG8(d1syd+?{CM zi)pHk$`%fue~WmWhPk!}flqQe}MwlQ#ghxbXJBB$m` zM9F5!%D$X+!gevU;|t{dY8;`m%lq-P%WG>y%Wrp2QUd*e8D}>!#!ier-xc$h=x#H#k2Q)9YY$^fW?Ygh@xS8+i zfSh7vhJAzi{TnSUdPE4jNkxvq+r2U`?%~qrD=F*7z^>f;a1G0xj#i0{LLgYN(eT`E zx@rvab_$LC&g+!cyn}%AGo^HUVaNevF@7@Y-ELGGVNpP@8t18O3HJS1qV+567ZHVl z;dDC0R1kB8O*^W=(2|0(R#O zWHa`~24o;t1pf0udcG#-HkQV1_cOAl)wgBv@|rY)0#rG1;6&u*hab>vkO-88jeK|n-!tiOVNnZWd>QjAPLmU^%Pqx5Fv4F=I3yg3phne8 z^Bb+cAjH~{am?b7Pajt+(su48oY6m!v z(nzq5sK|hVJ^1D^V8I`%-q*HD>o1JbEflhqOlyO#|=U~y2}EwKrm1sKDV2#nrf8s z2Qo;~)ExselgblH@R;kw4tZIzro1TBuqrugL5j3=eoLx@eRo>6H*e|6j?yErB;~H7s z14V0`?y$9+;^^z2tuv=@#i-;N@;ufSF~L6c&rVfV6SN`KBugd5U!{=1E-7J*dQH(R zeakuS^j-D+LfC0|NK|e?_b{{d19)4f9PZgkuaUzm4FBu~JzCbTr(aP2kVXG>I@#)M z#!uIyiz}rYdev}*?H_HD!058I^0J}w@?R)KOjwNQk4e#g^<5hHy28OaFnc&y3vTNO zQ$qTH%pkyPF)1;Sq^Ph35m*oD0d!%4q#yto3XbpqiCp$*0`qWpq$kP-?hbTs>Y$J| z`fv|3Fwox#0vo`6JOD%$9}hMC-?+aqRFMES^m27QBA}lWd<%F67IX()_JRJI`h&j9 z9e($P0*e6zf__ox4gza9+PZ_xh%V{ZBeDPiD|lWmdAZsjsL;Pq|G>Nj^ME-c?f+cj z58}1p9xz+r4G1dykG&=SeSv>*K?J_5qXmM>%m1;H)V~1rB#182^!`T1C6~Wh0P9H- zN&frW%f~-nD#6_0mvRB$hC6$~JsfRdzvu>E&H*As0KKn{2zwCpk}o~5zNfXvrNSEm7Kx|@Q7e|DryT#uyFWLWtlwYRsr(lTw+RIo=^Uv;F zsIa7jy!;;qCad7%3bS#7dw{Ir_KpZS?ys#K+#p9=Ic_5{Er^!uEx3c@Z9f!T-%s1X z#?Q${%9dL}o=8>!2G}KB&ia6@-cifb38(7q~YPqHOJ?^#IHKy&&);$L-+Z;VKOVdwY8ed5Z`kQTAY{l#~=0A`BK576c#!-F*=r zFdspL`wd{fUxYXs|AmHd7y3n$kPXrW>}U*z3PHesZlnybgK~8Ba6}?Nmm9;Zk)9rM z+~U?^5NjJ@h@h~IwVfao3YQXu06#$yDBM~^%1&HVSkm^-om~G$;lFJKya4tR0Ym_d zqyew9^|XPb7QfJ0$Hh=c(IA`Ov{hKTV)pwbWsz$5^A3+Uwrdb|G*P&=wX~#_kv5(#zzL_W z{Qs%{|DwulZT=$D)f46X%fxMMz;I{yB}MLl)}R2Lwl>msNR$fWM%W?Y%+QRK%p3WZJfNFk0+x`~6v!nd)!7n`U zzt;K>%K0?~I4Gbe@L%pPPXzie{r-Ck{p-vFf`A;i_vMKOjQ&03{_RNp(?fawlY{aC z5%AIr02{va10H4ROP_%VLnMH6LE@LYa0BiFfB}B>ze4;KlYCHcJ0b`ODnfL5w*3Bq z#Kpu!#6WhS-*Zriq!*NV;V#4c zKjx(VCmi%Y;Yx`CNy|TRCI81BPzaEs`~waO6$1kNpST_cs1^o9C5Ln;Q4-Uu$ z1f(-aAY-_UrXa97!VU@godAHVFd- diff --git a/keyboards/converter/ibm_5291/matrix.c b/keyboards/converter/ibm_5291/matrix.c deleted file mode 100644 index 3946d02e518d..000000000000 --- a/keyboards/converter/ibm_5291/matrix.c +++ /dev/null @@ -1,284 +0,0 @@ -/* -Copyright 2018 listofoptions - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#include -#include -#include -#if defined(__AVR__) -#include -#endif -#include - -#include "wait.h" -#include "print.h" -#include "debug.h" -#include "util.h" -#include "matrix.h" -#include "timer.h" - -#include "config.h" - - -#ifndef DEBOUNCE -# define DEBOUNCE 5 -#endif - -#define print_matrix_header() print("\nr/c 01234567\n") -#define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) -#define matrix_bitpop(i) bitpop(matrix[i]) -#define ROW_SHIFTER ((uint8_t)1) -#define check_bit(var,pos) ((var) & (1<<(pos))) - -#define NUM_ROW_PINS 5 -#define NUM_COL_PINS 2 - -static const uint8_t row_pins [NUM_ROW_PINS] = MATRIX_ROW_PINS ; -static const uint8_t col_pins [NUM_ROW_PINS] = MATRIX_COL_PINS ; - -#if ( DEBOUNCE > 0 ) -static uint16_t debouncing_time ; -static bool debouncing = false ; -#endif - -static uint8_t matrix [MATRIX_ROWS] = {0}; - -#if ( DEBOUNCE > 0 ) -static uint8_t matrix_debounce [MATRIX_ROWS] = {0}; -#endif - -static -inline -void toggle_led(void) { - uint8_t pin = LED_PIN ; - _SFR_IO8((pin >> 4) + 2) ^= _BV(pin & 0xF); -} - -static -inline -void init_led(void) { - uint8_t pin = LED_PIN ; - _SFR_IO8((pin >> 4) + 1) |= _BV(pin & 0xF); // OUT - _SFR_IO8((pin >> 4) + 2) &= ~_BV(pin & 0xF); // LOW -} - -static -inline -void init_data(void) { - uint8_t pin = MATRIX_DATA_PIN ; - _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN - _SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // LO -} - -static -inline -void init_strobe(void) { - uint8_t pin = MATRIX_STROBE_PIN ; - _SFR_IO8((pin >> 4) + 1) |= _BV(pin & 0xF); // OUT - _SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI -} - -static -inline -void init_rows(void) { - for ( uint8_t i = 0 ; i < NUM_ROW_PINS; ++i ) { - uint8_t pin = row_pins[i]; - _SFR_IO8((pin >> 4) + 1) |= _BV(pin & 0xF); // OUT - _SFR_IO8((pin >> 4) + 2) &= ~_BV(pin & 0xF); // LOW - } -} - -static -inline -void init_cols(void) { - for ( uint8_t i = 0 ; i < NUM_COL_PINS; ++i ) { - uint8_t pin = col_pins[i]; - _SFR_IO8((pin >> 4) + 1) |= _BV(pin & 0xF); // OUT - _SFR_IO8((pin >> 4) + 2) &= ~_BV(pin & 0xF); // LOW - } -} - -static -inline -void select_row(uint8_t current_row) { - for ( uint8_t i = 0 ; i < NUM_ROW_PINS; ++i ) { - uint8_t pin = row_pins[i] ; - if ( check_bit( current_row, i ) ) { - _SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI - } else { - _SFR_IO8((pin >> 4) + 2) &= ~_BV(pin & 0xF); // LOW - } - } - wait_us(30) ; -} - -static -inline -void select_col(uint8_t current_col) { - for ( uint8_t i = 0 ; i < NUM_COL_PINS; ++i ) { - uint8_t pin = col_pins[i] ; - if ( check_bit( current_col, i ) ) { - _SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI - } else { - _SFR_IO8((pin >> 4) + 2) &= ~_BV(pin & 0xF); // LOW - } - } - wait_us(30) ; -} - -static -inline -uint8_t matrix_strobe(uint8_t col_index) { - uint8_t strobe_pin = MATRIX_STROBE_PIN ; - uint8_t data_pin = MATRIX_DATA_PIN ; - - // set strobe pin low - _SFR_IO8((strobe_pin >> 4) + 2) &= ~_BV(strobe_pin & 0xF); - - wait_us(30) ; - - // read data - uint8_t data = (_SFR_IO8(data_pin >> 4) & _BV(data_pin & 0xF)) ; - - // set strobe pin hi - _SFR_IO8((strobe_pin >> 4) + 2) |= _BV(strobe_pin & 0xF); - - uint8_t out = data ? (1 << col_index) : 0 ; - return out ; -} - -static -bool matrix_read(uint8_t current_matrix[], uint8_t current_row) { - // Store last value of row prior to reading - uint8_t last_row_value = current_matrix[current_row]; - - // Clear data in matrix row - current_matrix[current_row] = 0; - - select_row(current_row); - - // For each col... - for(uint8_t col_index = 0; col_index < MATRIX_COLS; ++col_index) { - - select_col(col_index) ; - - // strobe the matrix - // Populate the matrix row with the state of the data pin - current_matrix[current_row] |= matrix_strobe(col_index) ; - } - - bool test = last_row_value != current_matrix[current_row] ; - return test ; -} - -__attribute__ ((weak)) -void matrix_init_quantum(void) { - matrix_init_kb(); -} - -__attribute__ ((weak)) -void matrix_scan_quantum(void) { - matrix_scan_kb(); -} - -__attribute__ ((weak)) -void matrix_init_kb(void) { - matrix_init_user(); -} - -__attribute__ ((weak)) -void matrix_scan_kb(void) { - matrix_scan_user(); -} - -__attribute__ ((weak)) -void matrix_init_user(void) { -} - -__attribute__ ((weak)) -void matrix_scan_user(void) { -} - -inline -uint8_t matrix_rows(void) { - return MATRIX_ROWS; -} - -inline -uint8_t matrix_cols(void) { - return MATRIX_COLS; -} - -inline -uint8_t matrix_get_row(uint8_t row) { - return matrix[row]; -} - -void matrix_init(void) { - init_led() ; - init_rows() ; - init_cols() ; - init_data() ; - init_strobe() ; - - // initialize matrix state: all keys off - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - matrix[i] = 0; -# if (DEBOUNCE > 0) - matrix_debounce [i] = 0; -# endif - } - - matrix_init_quantum() ; -} - -uint8_t matrix_scan(void) { - for ( uint8_t current_row = 0; current_row < MATRIX_ROWS; ++current_row ) { -# if (DEBOUNCE > 0) - bool matrix_changed = matrix_read(matrix_debounce, current_row); - - if (matrix_changed) { - debouncing = true ; - debouncing_time = timer_read(); - } - -# else - matrix_read(matrix, current_row); -# endif - } - -# if (DEBOUNCE > 0) - if (debouncing && (timer_elapsed(debouncing_time) > DEBOUNCE)) { - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - matrix[i] = matrix_debounce[i]; - } - debouncing = false; - } -# endif - - matrix_scan_quantum(); - return 1; -} - -void matrix_print(void) { - print_matrix_header(); - - for (uint8_t row = 0; row < MATRIX_ROWS; row++) { - print_hex8(row); print(": "); - print_matrix_row(row); - print("\n"); - } -} diff --git a/keyboards/converter/ibm_5291/matrix.csv b/keyboards/converter/ibm_5291/matrix.csv deleted file mode 100644 index 40462c2143ef..000000000000 --- a/keyboards/converter/ibm_5291/matrix.csv +++ /dev/null @@ -1,96 +0,0 @@ -0,Z -1,S -2,W -3,3 -4,X -5,D -6,E -7,4 -8,C -9,F -10,R -11,5 -12,V -13,G -14,T -15,6 -16,B -17,H -18,Y -19,7 -20,N -21,J -22,U -23,8 -24,PAD_2 -25,PAD_5 -26,PAD_8 -27,NUM_LOCK -28,M -29,K -30,I -31,9 -32,COMMA -33,L -34,O -35,0 -36,PERIOD -37,SEMICOLON -38,P -39,MINUS -40,SLASH -41,QUOTE -42,LEFT_BRACE -43,EQUAL -44,SPACE -45,RSHIFT -46,BACK_QUOTE -47,RIGHT_BRACE -48,CAPS_LOCK -49,PAD_ASTERIX -50,ENTER -51,BACKSPACE -52,PAD_0 -53,PAD_1 -54,PAD_4 -55,PAD_7 -56,PAD_PLUS -57,UNASSIGNED -58,PAD_MINUS -59,SCROLL_LOCK -60,PAD_PERIOD -61,PAD_3 -62,PAD_6 -63,PAD_9 -64,BACKSLASH -65,A -66,Q -67,2 -68,LALT -69,UNASSIGNED -70,UNASSIGNED -71,1 -72,F7 -73,F5 -74,F3 -75,F1 -76,F8 -77,F6 -78,F4 -79,F2 -80,F10 -81,UNASSIGNED -82,UNASSIGNED -83,UNASSIGNED -84,F9 -85,UNASSIGNED -86,UNASSIGNED -87,UNASSIGNED -88,LSHIFT -89,LCTRL -90,TAB -91,ESC -92,UNASSIGNED -93,UNASSIGNED -94,UNASSIGNED -95,UNASSIGNED diff --git a/keyboards/converter/ibm_5291/readme.md b/keyboards/converter/ibm_5291/readme.md deleted file mode 100644 index 03406d3f9de6..000000000000 --- a/keyboards/converter/ibm_5291/readme.md +++ /dev/null @@ -1,72 +0,0 @@ -# IBM 5291 keyboard converter - -[IBM 5291](https://deskthority.net/wiki/IBM_Model_F#IBM_5291_Keyboard) - -A converter for the eponymous keyboard. - -Keyboard Maintainer: [Listofoptions](https://github.com/listofoptions) -Hardware Supported: IBM 5291, Teensy 2.0 - -Make example for this keyboard (after setting up your build environment): - - make converter/ibm_5291: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). - - -The pinout is as follows: - -IBM−5291−Cable to Pinhead−14 - -| pin | description -----|------------------------ -1 | GND -2 | NC -3 | GND -4 | GN) -5 | +5V -6 | D0 -7 | D1 -8 | D2 -9 | D3 -10| D4 -11| D5 -12| D6 -13| Strobe -14| Out - -The pins on this connector are organized -![here](https://geekhack.org/index.php?action=dlattach;topic=48950.0;attach=36759;image) - -IBM−5291−2 Cable with DB15M connector - -| pin | description -----|------------- -|1,2,3 | GND -|4 | +5V -|5 | D0 -|6 | D1 -|7 | D2 -|8 | D3 -|9 | D4 -|10 | D5 -|11 | D6 -|12 | Strobe -|13 | Out -|14 | PE -|15 | NC - -The above connector is actually numbered so it should be easier to determine -where the needed connections are. - -To connect to the teensy, the following are pins are needed (if you should choose not set your own): - -* PB0 -> PB6 are connected to D0 -> D6 -* +5V is connected to the corresponding teensy pin -* gnd is as well, only one of the gnd pins needs to be connected though. -* strobe is connected to pin PD1 -* data is connected to PD0 -* PE does not need to be connected to anything, but it could also be connected to gnd - -sources: - http://www.retrocomputing.eu/documents/5291_MaintenanceLibrary.pdf diff --git a/keyboards/converter/ibm_5291/rules.mk b/keyboards/converter/ibm_5291/rules.mk deleted file mode 100644 index 0b53753ebc6a..000000000000 --- a/keyboards/converter/ibm_5291/rules.mk +++ /dev/null @@ -1,38 +0,0 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -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 -# -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration -MOUSEKEY_ENABLE = no # Mouse keys -EXTRAKEY_ENABLE = no # 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 -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -API_SYSEX_ENABLE = no -SPLIT_KEYBOARD = no -WAIT_FOR_USB = yes -LAYOUTS_HAS_RGB = 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 -CUSTOM_MATRIX = yes - -SRC = matrix.c diff --git a/keyboards/converter/ibm_terminal/config.h b/keyboards/converter/ibm_terminal/config.h index 5d8e5f8135be..2cd36c5fb0ae 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 . */ -#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 . */ #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 . */ #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<. * 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 adf048206e9b..ce50e5f437c8 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/keyboards/converter/ibm_terminal/info.json b/keyboards/converter/ibm_terminal/info.json index f064f3c5bd14..2c1a605ad995 100644 --- a/keyboards/converter/ibm_terminal/info.json +++ b/keyboards/converter/ibm_terminal/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Keyboard converter for IBM terminal keyboard", "url": "", "maintainer": "qmk", - "width": 24.75, - "height": 8, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/converter/ibm_terminal/keymaps/default/rules.mk b/keyboards/converter/ibm_terminal/keymaps/default/rules.mk index 749b93312cd1..3746db2ca908 100644 --- a/keyboards/converter/ibm_terminal/keymaps/default/rules.mk +++ b/keyboards/converter/ibm_terminal/keymaps/default/rules.mk @@ -2,20 +2,13 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. PS2_USE_USART = yes -API_SYSEX_ENABLE = no - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend diff --git a/keyboards/converter/ibm_terminal/keymaps/priyadi/rules.mk b/keyboards/converter/ibm_terminal/keymaps/priyadi/rules.mk index 76d349920fc7..8c5f3d70343e 100644 --- a/keyboards/converter/ibm_terminal/keymaps/priyadi/rules.mk +++ b/keyboards/converter/ibm_terminal/keymaps/priyadi/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) @@ -16,7 +16,6 @@ UNICODEMAP_ENABLE = yes BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. PS2_USE_USART = yes -API_SYSEX_ENABLE = no # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend diff --git a/keyboards/converter/ibm_terminal/rules.mk b/keyboards/converter/ibm_terminal/rules.mk index 059d7b303e20..6e659f53b248 100644 --- a/keyboards/converter/ibm_terminal/rules.mk +++ b/keyboards/converter/ibm_terminal/rules.mk @@ -2,35 +2,22 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. PS2_USE_USART = yes -API_SYSEX_ENABLE = no -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend CUSTOM_MATRIX = yes SRC = matrix.c led.c diff --git a/keyboards/converter/m0110_usb/info.json b/keyboards/converter/m0110_usb/info.json index 6ef610334506..278b98781a4c 100644 --- a/keyboards/converter/m0110_usb/info.json +++ b/keyboards/converter/m0110_usb/info.json @@ -2,11 +2,8 @@ "keyboard_name": "M0110(A) keyboard converter", "url": "", "maintainer": "qmk", - "width": 19.25, - "height": 5, "layouts": { "LAYOUT_ansi": { - "key_count": 78, "layout": [ {"label":"`", "x":0, "y":0}, {"label":"1", "x":1, "y":0}, @@ -89,7 +86,6 @@ ] }, "LAYOUT_iso": { - "key_count": 75, "layout": [ {"label":"`", "x":0, "y":0}, {"label":"1", "x":1, "y":0}, diff --git a/tmk_core/protocol/m0110.c b/keyboards/converter/m0110_usb/m0110.c similarity index 100% rename from tmk_core/protocol/m0110.c rename to keyboards/converter/m0110_usb/m0110.c diff --git a/tmk_core/protocol/m0110.h b/keyboards/converter/m0110_usb/m0110.h similarity index 100% rename from tmk_core/protocol/m0110.h rename to 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 88e74024fc87..944296afdc78 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 . Ported to QMK by Techsock */ -#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 * 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 * 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 a0f0c5ce426d..f08a0b085bbc 100644 --- a/keyboards/converter/m0110_usb/rules.mk +++ b/keyboards/converter/m0110_usb/rules.mk @@ -5,28 +5,19 @@ MCU = atmega32u4 F_CPU = 8000000 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys 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 = 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/modelm101/config.h b/keyboards/converter/modelm101/config.h index 7dcb82549290..639b325ff38c 100644 --- a/keyboards/converter/modelm101/config.h +++ b/keyboards/converter/modelm101/config.h @@ -50,58 +50,8 @@ along with this program. If not, see . /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed (5 is default) */ #define DEBOUNCE 5 -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z +/* The Model M has no diodes */ +#define MATRIX_HAS_GHOST /* * Feature disable options diff --git a/keyboards/converter/modelm101/info.json b/keyboards/converter/modelm101/info.json index 868cd89b1a60..ffc679dbbb5a 100644 --- a/keyboards/converter/modelm101/info.json +++ b/keyboards/converter/modelm101/info.json @@ -2,11 +2,9 @@ "keyboard_name": "IBM Model M 101 ANSI/102 ISO", "url": "https://github.com/iw0rm3r/qmk_firmware/tree/modelm101/keyboards/converter/modelm101", "maintainer": "iw0rm3r", - "width": 22.5, - "height": 6.5, "layouts": { "LAYOUT": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"@", "x":2, "y":1.5}, {"label":"#", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"Backspace", "x":13, "y":1.5, "w":2}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.25, "y":1.5}, {"label":"Num Lock", "x":18.5, "y":1.5}, {"label":"/", "x":19.5, "y":1.5}, {"label":"*", "x":20.5, "y":1.5}, {"label":"-", "x":21.5, "y":1.5}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":6.5, "y":2.5}, {"label":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"|", "x":13.5, "y":2.5, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"7", "x":18.5, "y":2.5}, {"label":"8", "x":19.5, "y":2.5}, {"label":"9", "x":20.5, "y":2.5}, {"label":"+", "x":21.5, "y":2.5, "h":2}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.5}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"~", "x":12.75, "y":3.5}, {"label":"Enter", "x":13.75, "y":3.5, "w":1.25}, {"label":"4", "x":18.5, "y":3.5}, {"label":"5", "x":19.5, "y":3.5}, {"label":"6", "x":20.5, "y":3.5}, {"label":"Shift", "x":0, "y":4.5, "w":1.25}, {"label":"|", "x":1.25, "y":4.5}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"N", "x":7.25, "y":4.5}, {"label":"M", "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":"Shift", "x":12.25, "y":4.5, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"1", "x":18.5, "y":4.5}, {"label":"2", "x":19.5, "y":4.5}, {"label":"3", "x":20.5, "y":4.5}, {"label":"Enter", "x":21.5, "y":4.5, "h":2}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.5}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":7}, {"label":"Alt", "x":11, "y":5.5, "w":1.5}, {"label":"Ctrl", "x":13.5, "y":5.5, "w":1.5}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}, {"label":"0", "x":18.5, "y":5.5, "w":2}, {"label":".", "x":20.5, "y":5.5}] } } -} \ No newline at end of file +} diff --git a/keyboards/converter/modelm101/keymaps/default/keymap.c b/keyboards/converter/modelm101/keymaps/default/keymap.c index 644e9a5ef82e..3f01f2c65cdc 100644 --- a/keyboards/converter/modelm101/keymaps/default/keymap.c +++ b/keyboards/converter/modelm101/keymaps/default/keymap.c @@ -25,19 +25,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ), }; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/converter/modelm101/modelm101.c b/keyboards/converter/modelm101/modelm101.c index c2204bea660e..708259cab48e 100644 --- a/keyboards/converter/modelm101/modelm101.c +++ b/keyboards/converter/modelm101/modelm101.c @@ -25,27 +25,6 @@ void keyboard_pre_init_kb(void) { writePinHigh(B6); } -void matrix_init_kb(void) { - /* put your keyboard start-up code here - * runs once when the firmware starts up */ - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - /* put your looping keyboard code here - * runs every cycle (a lot) */ - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - /* put your per-action keyboard code here - * runs for every action, just before processing by the firmware */ - - return process_record_user(keycode, record); -} - void led_set_kb(uint8_t usb_led) { if (usb_led & (1<. +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x0000 +#define DEVICE_VER 0x0001 +#define MANUFACTURER tiltowait +#define PRODUCT IBM Model M Space-Saving Keyboard + +/* key matrix size */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 16 + +/* + * 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_COL_PINS { C7, C6, C5, C4, C3, C2, C1, C0, E1, E0, D7, D5, D4, D3, D2, D1 } +#define MATRIX_ROW_PINS { F0, F1, F2, F3, F4, F5, F6, F7 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION ROW2COL + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed (5 is default) */ +#define DEBOUNCE 5 + +/* The Model M does not have NKRO */ +#define MATRIX_HAS_GHOST + +#define LED_NUM_LOCK_PIN B4 +#define LED_CAPS_LOCK_PIN B6 +#define LED_SCROLL_LOCK_PIN B5 + +/* + * 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/converter/modelm_ssk/info.json b/keyboards/converter/modelm_ssk/info.json new file mode 100644 index 000000000000..78d75c8d17a3 --- /dev/null +++ b/keyboards/converter/modelm_ssk/info.json @@ -0,0 +1,455 @@ +{ + "keyboard_name": "IBM Model M Space-Saving Keyboard", + "url": "https://github.com/tiltowait/qmk_firmware/tree/modelm_ssk/keyboards/converter/modelm_ssk", + "maintainer": "tiltowait", + "layouts": + { + "LAYOUT": + { + "layout": + [ + { + "label": "Esc", + "x": 0, + "y": 0 + }, + { + "label": "F1", + "x": 2, + "y": 0 + }, + { + "label": "F2", + "x": 3, + "y": 0 + }, + { + "label": "F3", + "x": 4, + "y": 0 + }, + { + "label": "F4", + "x": 5, + "y": 0 + }, + { + "label": "F5", + "x": 6.5, + "y": 0 + }, + { + "label": "F6", + "x": 7.5, + "y": 0 + }, + { + "label": "F7", + "x": 8.5, + "y": 0 + }, + { + "label": "F8", + "x": 9.5, + "y": 0 + }, + { + "label": "F9", + "x": 11, + "y": 0 + }, + { + "label": "F10", + "x": 12, + "y": 0 + }, + { + "label": "F11", + "x": 13, + "y": 0 + }, + { + "label": "F12", + "x": 14, + "y": 0 + }, + { + "label": "PrtSc", + "x": 15.25, + "y": 0 + }, + { + "label": "Scroll Lock", + "x": 16.25, + "y": 0 + }, + { + "label": "Pause", + "x": 17.25, + "y": 0 + }, + { + "label": "~", + "x": 0, + "y": 1.5 + }, + { + "label": "!", + "x": 1, + "y": 1.5 + }, + { + "label": "@", + "x": 2, + "y": 1.5 + }, + { + "label": "#", + "x": 3, + "y": 1.5 + }, + { + "label": "$", + "x": 4, + "y": 1.5 + }, + { + "label": "%", + "x": 5, + "y": 1.5 + }, + { + "label": "^", + "x": 6, + "y": 1.5 + }, + { + "label": "&", + "x": 7, + "y": 1.5 + }, + { + "label": "*", + "x": 8, + "y": 1.5 + }, + { + "label": "(", + "x": 9, + "y": 1.5 + }, + { + "label": ")", + "x": 10, + "y": 1.5 + }, + { + "label": "_", + "x": 11, + "y": 1.5 + }, + { + "label": "+", + "x": 12, + "y": 1.5 + }, + { + "label": "Backspace", + "x": 13, + "y": 1.5, + "w": 2 + }, + { + "label": "Insert", + "x": 15.25, + "y": 1.5 + }, + { + "label": "Home", + "x": 16.25, + "y": 1.5 + }, + { + "label": "PgUp", + "x": 17.25, + "y": 1.5 + }, + { + "label": "Tab", + "x": 0, + "y": 2.5, + "w": 1.5 + }, + { + "label": "Q", + "x": 1.5, + "y": 2.5 + }, + { + "label": "W", + "x": 2.5, + "y": 2.5 + }, + { + "label": "E", + "x": 3.5, + "y": 2.5 + }, + { + "label": "R", + "x": 4.5, + "y": 2.5 + }, + { + "label": "T", + "x": 5.5, + "y": 2.5 + }, + { + "label": "Y", + "x": 6.5, + "y": 2.5 + }, + { + "label": "U", + "x": 7.5, + "y": 2.5 + }, + { + "label": "I", + "x": 8.5, + "y": 2.5 + }, + { + "label": "O", + "x": 9.5, + "y": 2.5 + }, + { + "label": "P", + "x": 10.5, + "y": 2.5 + }, + { + "label": "{", + "x": 11.5, + "y": 2.5 + }, + { + "label": "}", + "x": 12.5, + "y": 2.5 + }, + { + "label": "|", + "x": 13.5, + "y": 2.5, + "w": 1.5 + }, + { + "label": "Delete", + "x": 15.25, + "y": 2.5 + }, + { + "label": "End", + "x": 16.25, + "y": 2.5 + }, + { + "label": "PgDn", + "x": 17.25, + "y": 2.5 + }, + { + "label": "Caps Lock", + "x": 0, + "y": 3.5, + "w": 1.5 + }, + { + "label": "A", + "x": 1.75, + "y": 3.5 + }, + { + "label": "S", + "x": 2.75, + "y": 3.5 + }, + { + "label": "D", + "x": 3.75, + "y": 3.5 + }, + { + "label": "F", + "x": 4.75, + "y": 3.5 + }, + { + "label": "G", + "x": 5.75, + "y": 3.5 + }, + { + "label": "H", + "x": 6.75, + "y": 3.5 + }, + { + "label": "J", + "x": 7.75, + "y": 3.5 + }, + { + "label": "K", + "x": 8.75, + "y": 3.5 + }, + { + "label": "L", + "x": 9.75, + "y": 3.5 + }, + { + "label": ":", + "x": 10.75, + "y": 3.5 + }, + { + "label": "\"", + "x": 11.75, + "y": 3.5 + }, + { + "label": "~", + "x": 12.75, + "y": 3.5 + }, + { + "label": "Enter", + "x": 13.75, + "y": 3.5, + "w": 1.25 + }, + { + "label": "Shift", + "x": 0, + "y": 4.5, + "w": 1.25 + }, + { + "label": "|", + "x": 1.25, + "y": 4.5 + }, + { + "label": "Z", + "x": 2.25, + "y": 4.5 + }, + { + "label": "X", + "x": 3.25, + "y": 4.5 + }, + { + "label": "C", + "x": 4.25, + "y": 4.5 + }, + { + "label": "V", + "x": 5.25, + "y": 4.5 + }, + { + "label": "B", + "x": 6.25, + "y": 4.5 + }, + { + "label": "N", + "x": 7.25, + "y": 4.5 + }, + { + "label": "M", + "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": "Shift", + "x": 12.25, + "y": 4.5, + "w": 2.75 + }, + { + "label": "↑", + "x": 16.25, + "y": 4.5 + }, + { + "label": "Ctrl", + "x": 0, + "y": 5.5, + "w": 1.5 + }, + { + "label": "Alt", + "x": 2.5, + "y": 5.5, + "w": 1.5 + }, + { + "x": 4, + "y": 5.5, + "w": 7 + }, + { + "label": "Alt", + "x": 11, + "y": 5.5, + "w": 1.5 + }, + { + "label": "Ctrl", + "x": 13.5, + "y": 5.5, + "w": 1.5 + }, + { + "label": "←", + "x": 15.25, + "y": 5.5 + }, + { + "label": "↓", + "x": 16.25, + "y": 5.5 + }, + { + "label": "→", + "x": 17.25, + "y": 5.5 + } + ] + } + } +} diff --git a/keyboards/converter/modelm_ssk/keymaps/default/keymap.c b/keyboards/converter/modelm_ssk/keymaps/default/keymap.c new file mode 100644 index 000000000000..adf557b268eb --- /dev/null +++ b/keyboards/converter/modelm_ssk/keymaps/default/keymap.c @@ -0,0 +1,114 @@ +/* Copyright 2019-2021 iw0rm3r, tiltowait + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum custom_layers { + _BASE, + _NUMPAD, +}; + +enum custom_keycodes { + NUM_SCRL = SAFE_RANGE +}; + +void toggle_numpad_layer(int set_state); + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( /* Base layer */ + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, NUM_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_NUMPAD] = LAYOUT( /* Numpad Layer */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_7, KC_KP_8, KC_KP_9, KC_TRNS, KC_KP_MINUS, KC_KP_PLUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_4, KC_KP_5, KC_KP_6, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_ASTERISK, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_0, KC_TRNS, KC_KP_DOT, KC_KP_SLASH, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + static uint16_t last_num_scroll = 0; /* For unregistering the proper key */ + + switch (keycode) { + case NUM_SCRL: /* Numlock / Scroll Lock */ + if (record->event.pressed) { + if (get_mods() & MOD_MASK_SHIFT) { + /* Remove the shift modifiers */ + uint8_t shift_mods = get_mods() & (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)); + del_mods(MOD_MASK_SHIFT); + + last_num_scroll = KC_NUMLOCK; + register_code(last_num_scroll); + toggle_numpad_layer(-1); + + /* Reset the shift modifiers */ + set_mods(shift_mods); + } else { + last_num_scroll = KC_SCROLLLOCK; + register_code(last_num_scroll); + } + } else { + unregister_code(last_num_scroll); + } + break; + } + return true; +} + +void toggle_numpad_layer(int set_state) { + static uint8_t numlock_enabled = 0; + + /* set_state allows us to explicitly change the numlock state + rather than merely toggling it. */ + if (set_state == -1) { + numlock_enabled = !numlock_enabled; + } else { + numlock_enabled = set_state; + } + + if (numlock_enabled) { + layer_on(_NUMPAD); + } + else { + layer_off(_NUMPAD); + } +} + +bool led_update_user(led_t led_state) { + /* In rare and unlikely conditions, it's possible for numlock + state to change externally from the keyboard. If this happens, + we want to match the new state. + + On Windows and Linux, this means that the keyboard will technically + toggle the numpad layer twice. + */ + + static int8_t numlock_state = -1; /* Unknown state at default */ + + if (led_state.num_lock != numlock_state) { + numlock_state = led_state.num_lock; + toggle_numpad_layer(led_state.num_lock); + } + return true; +} + diff --git a/keyboards/converter/modelm_ssk/keymaps/default/readme.md b/keyboards/converter/modelm_ssk/keymaps/default/readme.md new file mode 100644 index 000000000000..bc829be26628 --- /dev/null +++ b/keyboards/converter/modelm_ssk/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for modelm_ssk diff --git a/keyboards/converter/modelm_ssk/keymaps/tiltowait/config.h b/keyboards/converter/modelm_ssk/keymaps/tiltowait/config.h new file mode 100644 index 000000000000..151118fdf675 --- /dev/null +++ b/keyboards/converter/modelm_ssk/keymaps/tiltowait/config.h @@ -0,0 +1,21 @@ +/* Copyright 2021 tiltowait + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +// place overrides here + +#define PERMISSIVE_HOLD diff --git a/keyboards/converter/modelm_ssk/keymaps/tiltowait/keymap.c b/keyboards/converter/modelm_ssk/keymaps/tiltowait/keymap.c new file mode 100644 index 000000000000..58726fec86f5 --- /dev/null +++ b/keyboards/converter/modelm_ssk/keymaps/tiltowait/keymap.c @@ -0,0 +1,116 @@ +/* Copyright 2021 tiltowait + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum custom_layers { + _BASE, + _SECOND, + _NUMPAD, +}; + +enum custom_keycodes { + NUM_SCRL = SAFE_RANGE /* Dual-purpose Scroll Lock / Numlock button as on original hardware */ +}; + +void toggle_numlock_layer(int set_state); + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( /* Base layer */ + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_MUTE, KC_F10, KC_VOLD, KC_VOLU, S(G(KC_4)), NUM_SCRL, KC_PAUS, + + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_INS, KC_HOME, KC_PGUP, + LT(_SECOND,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_DEL, KC_END, 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_NUHS, 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_RSFT, KC_UP, + KC_LALT, LGUI_T(KC_ENT), KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_SECOND] = LAYOUT( /* Layer 1 */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, S(A(KC_MINS)), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, C(KC_LEFT), C(KC_RGHT), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, S(A(KC_M)), KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_ENT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, C(KC_SPC), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [_NUMPAD] = LAYOUT( /* Numpad Layer */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_7, KC_KP_8, KC_KP_9, KC_TRNS, KC_KP_MINUS, KC_KP_PLUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_4, KC_KP_5, KC_KP_6, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_ASTERISK, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_0, KC_TRNS, KC_KP_DOT, KC_KP_SLASH, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + static uint16_t last_num_scroll = 0; /* For unregistering the proper key */ + + switch (keycode) { + case NUM_SCRL: + if (record->event.pressed) { + if (get_mods() & MOD_MASK_SHIFT) { + /* Remove the shift modifiers */ + uint8_t shift_mods = get_mods() & (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)); + set_mods(get_mods() & ~(MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) ); + + last_num_scroll = KC_NUMLOCK; + register_code(last_num_scroll); + toggle_numlock_layer(-1); + + /* Reset the shift modifiers */ + set_mods(shift_mods); + } else { + last_num_scroll = KC_SCROLLLOCK; + register_code(last_num_scroll); + } + } else { + unregister_code(last_num_scroll); + } + break; + } + return true; +} + +void toggle_numlock_layer(int set_state) { + static uint8_t numlock_enabled = 0; + + /* set_state allows us to explicitly change the numlock state + rather than merely toggling it. */ + if (set_state == -1) { + numlock_enabled = !numlock_enabled; + } else { + numlock_enabled = set_state; + } + + if (numlock_enabled) { + layer_on(_NUMPAD); + } + else { + layer_off(_NUMPAD); + } +} + +bool led_update_kb(led_t led_state) { + static int8_t numlock_state = -1; + + if (led_state.num_lock != numlock_state) { + numlock_state = led_state.num_lock; + toggle_numlock_layer(led_state.num_lock); + } + return true; +} diff --git a/keyboards/converter/modelm_ssk/keymaps/tiltowait/readme.md b/keyboards/converter/modelm_ssk/keymaps/tiltowait/readme.md new file mode 100644 index 000000000000..aecdd89b82da --- /dev/null +++ b/keyboards/converter/modelm_ssk/keymaps/tiltowait/readme.md @@ -0,0 +1,11 @@ +# The maintainer's personal keymap for modelm_ssk + +This is a keymap suitable for macOS use. + +* Backspace and backslash have been swapped (HHKB style) +* Capslock is LCTRL +* LCTRL is LALT +* LALT is LGUI +* Tab shifts to layer 1 on hold +* Layer 1 has a couple of Mac shortcuts, plus Vim-style arrow keys +* Shift+Numlock enables numlock diff --git a/keyboards/converter/modelm_ssk/modelm_ssk.c b/keyboards/converter/modelm_ssk/modelm_ssk.c new file mode 100644 index 000000000000..1b01115e5db4 --- /dev/null +++ b/keyboards/converter/modelm_ssk/modelm_ssk.c @@ -0,0 +1,19 @@ +/* Copyright 2019 iw0rm3r + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "modelm_ssk.h" + + + diff --git a/keyboards/converter/modelm_ssk/modelm_ssk.h b/keyboards/converter/modelm_ssk/modelm_ssk.h new file mode 100644 index 000000000000..5c4b9b80eac0 --- /dev/null +++ b/keyboards/converter/modelm_ssk/modelm_ssk.h @@ -0,0 +1,45 @@ +/* Copyright 2019-2021 iw0rm3r, tiltowait + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +/* This a shortcut to help you visually see your layout. + * The first section contains "names" for physical keys of the keyboard + * and defines their position on the board. + * The second section defines position of the keys on the switch matrix + * (where COLUMNS and ROWS crosses). */ + +#define LAYOUT( \ + K5A, K5B, K5C, K5D, K5E, K5F, K5G, K5H, K5I, K5J, K5K, K5L, K5M, K5N, K5O, K5P, \ + \ + K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H, K4I, K4J, K4K, K4L, K4M, K4N, K4O, K4P, K4Q, \ + K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H, K3I, K3J, K3K, K3L, K3M, K3N, K3O, K3P, K3Q, \ + K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H, K2I, K2J, K2K, K2L, K2M, K2N, \ + K1A, K1B, K1C, K1D, K1E, K1F, K1G, K1H, K1I, K1J, K1K, K1L, K1M, K1N, \ + K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H \ +) \ +{ \ +/* 00 */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K1G, K0C, K1H, KC_NO, KC_NO, K1L, K0G, K0H, KC_NO, K0F, K0D }, \ +/* 01 */ { K0E, K1M, K1C, K1D, K1E, K1F, K2N, K1I, K1J, K1K, KC_NO, KC_NO, KC_NO, KC_NO, K5P, KC_NO }, \ +/* 02 */ { KC_NO, KC_NO, K2B, K2C, K2D, K2E, K3N, K2H, K2I, K2J, K2K, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ +/* 03 */ { KC_NO, KC_NO, K3B, K3C, K3D, K3E, KC_NO, K3H, K3I, K3J, K3K, KC_NO, KC_NO, KC_NO, KC_NO, K5O }, \ +/* 04 */ { KC_NO, KC_NO, K4B, K4C, K4D, K4E, K5K, K4H, K4I, K4J, K4K, K5L, K5M, K3Q, K3P, K5N }, \ +/* 05 */ { K0A, KC_NO, K4A, K5B, K5C, K4F, K5J, K4G, K4M, K5I, K4L, K3O, K4O, K4Q, K4P, KC_NO }, \ +/* 06 */ { KC_NO, K1A, K3A, K2A, K5D, K3F, K4N, K3G, K3M, K5H, K3L, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ +/* 07 */ { KC_NO, KC_NO, K5A, KC_NO, K5E, K2F, K5F, K2G, K5G, KC_NO, K2L, KC_NO, KC_NO, KC_NO, K1N, K0B }, \ +} +/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ diff --git a/keyboards/converter/modelm_ssk/readme.md b/keyboards/converter/modelm_ssk/readme.md new file mode 100644 index 000000000000..8105a0c2dfd3 --- /dev/null +++ b/keyboards/converter/modelm_ssk/readme.md @@ -0,0 +1,55 @@ +# modelm_ssk + +![IBM Model M Space-Saving Keyboard](https://i.imgur.com/CSXrQI5.jpg) + +This is a QMK firmware configuration for the IBM Model M Space-Saving Keyboard (SSK). Based on [this project](https://github.com/qmk/qmk_firmware/tree/master/keyboards/converter/modelm101), it features a few slight improvements and, most importantly, a full remapping to match the SSK's matrix, which differs from its full-sized cousins. The modification is easily reversible, as no part of the keyboard is permanently changed. Just take out the replacement controller and reinstall the original, should you desire. + +The numpad layer (accessed with Shift + Scroll Lock as with the original controller) is mapped to layer 7 by default. All non-numpad keys are transparent. + +**Note:** As of this writing, this configuration has only been tested on the 1392464 SSK. It's possible other models differ in their internal matrices. Should the provided matrix not work for you (and you are certain of your connections), you can enable debugging with `CONSOLE_ENABLE = yes` in `rules.mk` and by following the directions in `default/keymap.c`. Once done, [QMK Toolbox](https://github.com/qmk/qmk_toolbox) will display row/col information to help you remap `modelm_ssk.h`. + +## Requirements + +* [Teensy++ 2.0](https://www.pjrc.com/store/teensypp.html) - I recommend buying one with pins already attached +* A Trio-Mate 16-pin ribbon connector (6-520315-6 or 6-520415-6) +* A Trio-Mate 8-pin ribbon connector (5-120628-8 or 5-520314-8). Alternatively, two 16-pin connectors can be used if the 8-pin is out of stock. Just be sure to line up your pins correctly +* Breadboard or perfboard. A perfboard is recommended due to its reduced height and low clearance inside the chassis +* Mini-B to USB-A cable +* Jumper wires and wire strippers/cutters +* Soldering iron if not using a breadboard + +## Setup + +![Finished controller](https://i.imgur.com/m1yuo4F.jpg) + +The controller uses the following mapping (in zero-indexed hex): + +``` +Column: 0 1 2 3 4 5 6 7 8 9 A B C D E F +Pin: C7 C6 C5 C4 C3 C2 C1 C0 E1 E0 D7 D5 D4 D3 D2 D1 +-------------------------------------------------------- +Row: 0 1 2 3 4 5 6 7 +Pin: F0 F1 F2 F3 F4 F5 F6 F7 +``` + +**IMPORTANT:** It is necessary to skip pin D6 on the Teensy. There is an LED attached to this pin, which can cause interference with registering keys. Alternatively, you can remove the LED from the board, which is likely to be a permanent modification of the Teensy. The choice is yours. I am not responsible for any damage to your Teensy or keyboard. + +## A note on the Unicomp Mini M + +This configuration will not work out of the box with the [Unicomp Mini M](https://www.pckeyboard.com/page/product/MINI_M). That keyboard uses a 16x12 matrix rather than the SSK's 16x8 in order to reduce occurrences of 2KRO lockup. It also features lock lights, which the SSK lacks. However, it should be possible to map out the Mini M's matrix to get it working. + +## Maintainer + +* Keyboard Maintainer: [tiltowait](https://github.com/tiltowait), original work by [iw0rm3r](https://github.com/iw0rm3r) +* Hardware Supported: Teensy 2.0++ board by PJRC +* Hardware Availability: https://www.pjrc.com/store/teensypp.html + +## Building + +Make example for this keyboard (after setting up your build environment): + + make converter/modelm_ssk:default + +You must press the button on the Teensy to enter the bootloader the first time. Afterward, so long as you keep `COMMAND_ENABLE = yes` in `rules.mk` (enabled by default), you can use `Left Shift + Right Shift + B` to enter the bootloader. With this method, you can omit `:teensy` from the end of the `make` command. + +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/converter/modelm_ssk/rules.mk b/keyboards/converter/modelm_ssk/rules.mk new file mode 100644 index 000000000000..95734d675c61 --- /dev/null +++ b/keyboards/converter/modelm_ssk/rules.mk @@ -0,0 +1,20 @@ +# MCU name +MCU = at90usb1286 + +# Bootloader selection +BOOTLOADER = halfkay + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +# Do not enable NKRO_ENABLE. The SSK lacks diodes and cannot support it +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/converter/numeric_keypad_IIe/info.json b/keyboards/converter/numeric_keypad_IIe/info.json index f1990698ae1c..97e40bbad324 100644 --- a/keyboards/converter/numeric_keypad_IIe/info.json +++ b/keyboards/converter/numeric_keypad_IIe/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Numeric Keypad IIe", "url": "", "maintainer": "qmk", - "width": 7.5, - "height": 4, "layouts": { "LAYOUT": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"7", "x":2, "y":0}, {"label":"8", "x":3, "y":0}, {"label":"9", "x":4, "y":0}, {"label":"(", "x":5.5, "y":0}, {"label":")", "x":6.5, "y":0}, {"label":"\u2190", "x":0, "y":1}, {"label":"4", "x":2, "y":1}, {"label":"5", "x":3, "y":1}, {"label":"6", "x":4, "y":1}, {"label":"\u2212", "x":5.5, "y":1}, {"label":"\u00f7", "x":6.5, "y":1}, {"label":"\u2192", "x":0, "y":2}, {"label":"1", "x":2, "y":2}, {"label":"2", "x":3, "y":2}, {"label":"3", "x":4, "y":2}, {"label":"+", "x":5.5, "y":2}, {"label":"\u00d7", "x":6.5, "y":2}, {"label":"Space", "x":0, "y":3}, {"label":"0", "x":1.5, "y":3, "w":1.5}, {"label":",", "x":3, "y":3}, {"label":".", "x":4, "y":3}, {"label":"Ret", "x":5.5, "y":3}, {"label":"Print", "x":6.5, "y":3}] diff --git a/keyboards/converter/numeric_keypad_IIe/keymaps/default/keymap.c b/keyboards/converter/numeric_keypad_IIe/keymaps/default/keymap.c index a8f45535569a..d4aed559f44b 100644 --- a/keyboards/converter/numeric_keypad_IIe/keymaps/default/keymap.c +++ b/keyboards/converter/numeric_keypad_IIe/keymaps/default/keymap.c @@ -40,23 +40,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_SPACE, KC_KP_0, KC_KP_COMMA, KC_KP_DOT, KC_RETURN, KC_QUESTION \ ), }; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void keyboard_post_init_user(void) { - -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/converter/numeric_keypad_IIe/numeric_keypad_IIe.c b/keyboards/converter/numeric_keypad_IIe/numeric_keypad_IIe.c index c29d85d488ef..a2f8a5bd6e8c 100644 --- a/keyboards/converter/numeric_keypad_IIe/numeric_keypad_IIe.c +++ b/keyboards/converter/numeric_keypad_IIe/numeric_keypad_IIe.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "numeric_keypad_IIe.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/converter/numeric_keypad_IIe/rules.mk b/keyboards/converter/numeric_keypad_IIe/rules.mk index b828d7c361d3..1b3f48990ee1 100644 --- a/keyboards/converter/numeric_keypad_IIe/rules.mk +++ b/keyboards/converter/numeric_keypad_IIe/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/converter/palm_usb/post_rules.mk b/keyboards/converter/palm_usb/post_rules.mk new file mode 100644 index 000000000000..9c110767015e --- /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 15114192e7de..d69beb492889 100644 --- a/keyboards/converter/palm_usb/rules.mk +++ b/keyboards/converter/palm_usb/rules.mk @@ -2,43 +2,24 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend #HARDWARE_SERIAL = yes 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/palm_usb/stowaway/info.json b/keyboards/converter/palm_usb/stowaway/info.json index 5e0b5f930a41..c3c520f260f8 100644 --- a/keyboards/converter/palm_usb/stowaway/info.json +++ b/keyboards/converter/palm_usb/stowaway/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Palm Stowaway Serial", "url": "", "maintainer": "qmk", - "width": 15.25, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/converter/periboard_512/info.json b/keyboards/converter/periboard_512/info.json index 89e8d75bc46a..7c178418c811 100644 --- a/keyboards/converter/periboard_512/info.json +++ b/keyboards/converter/periboard_512/info.json @@ -6,5 +6,121 @@ "matrix_pins": { "cols": ["B7", "D0", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "E0", "E1", "C0", "C1", "C2", "C3", "C4", "C5", "C6", "C7"], "rows": ["B6", "B5", "B4", "B3", "B2", "B1", "B0", "E7"] + }, + "url": "", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"Esc", "x":0, "y":0, "h":0.833}, + {"label":"F1", "x":2, "y":0, "h":0.833}, + {"label":"F2", "x":3, "y":0, "h":0.833}, + {"label":"F3", "x":4, "y":0, "h":0.833}, + {"label":"F4", "x":5, "y":0, "h":0.833}, + {"label":"F5", "x":6, "y":0, "h":0.833}, + {"label":"F6", "x":7, "y":0, "h":0.833}, + {"label":"F7", "x":8, "y":0, "h":0.833}, + {"label":"F8", "x":9, "y":0, "h":0.833}, + {"label":"F9", "x":10, "y":0, "h":0.833}, + {"label":"F10", "x":11, "y":0, "h":0.833}, + {"label":"F11", "x":12, "y":0, "h":0.833}, + {"label":"F12", "x":13, "y":0, "h":0.833}, + {"label":"PrtSc", "x":14.25, "y":0, "h":0.833}, + {"label":"Scroll Lock", "x":15.25, "y":0, "h":0.833}, + {"label":"Pause", "x":16.25, "y":0, "h":0.833}, + + {"label":"~", "x":0, "y":1.333}, + {"label":"!", "x":1, "y":1.333}, + {"label":"@", "x":2, "y":1.333}, + {"label":"#", "x":3, "y":1.333}, + {"label":"$", "x":4, "y":1.333}, + {"label":"%", "x":5, "y":1.333}, + {"label":"^", "x":6, "y":1.333}, + {"label":"&", "x":7, "y":1.333}, + {"label":"*", "x":8, "y":1.333}, + {"label":"(", "x":9, "y":1.333}, + {"label":")", "x":10, "y":1.333}, + {"label":"_", "x":11, "y":1.333}, + {"label":"+", "x":12, "y":1.333}, + {"label":"Backspace", "x":13, "y":1.333, "w":2}, + {"label":"Insert", "x":16.25, "y":3, "h":0.833}, + {"label":"Home", "x":15.25, "y":1.333, "h":0.833}, + {"label":"PgUp", "x":16.25, "y":1.333, "h":0.833}, + {"label":"Num Lock", "x":17.5, "y":1.333}, + {"label":"/", "x":18.5, "y":1.333}, + {"label":"*", "x":19.5, "y":1.333}, + {"label":"-", "x":20.5, "y":1.333}, + + {"label":"Tab", "x":0, "y":2.333, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.333}, + {"label":"W", "x":2.5, "y":2.333}, + {"label":"E", "x":3.5, "y":2.333}, + {"label":"R", "x":4.5, "y":2.333}, + {"label":"T", "x":5.5, "y":2.333}, + {"label":"Y", "x":6.5, "y":2.333}, + {"label":"U", "x":7.5, "y":2.333}, + {"label":"I", "x":8.5, "y":2.333}, + {"label":"O", "x":9.5, "y":2.333}, + {"label":"P", "x":10.5, "y":2.333}, + {"label":"{", "x":11.5, "y":2.333}, + {"label":"}", "x":12.5, "y":2.333}, + {"label":"|", "x":13.5, "y":2.333, "w":1.5}, + {"label":"Delete", "x":15.25, "y":3, "h":0.833}, + {"label":"End", "x":15.25, "y":2.167, "h":0.833}, + {"label":"PgDn", "x":16.25, "y":2.167, "h":0.833}, + {"label":"7", "x":17.5, "y":2.333}, + {"label":"8", "x":18.5, "y":2.333}, + {"label":"9", "x":19.5, "y":2.333}, + {"label":"+", "x":20.5, "y":2.333, "h":2}, + + {"label":"Caps Lock", "x":0, "y":3.333, "w":1.75}, + {"label":"A", "x":1.75, "y":3.333}, + {"label":"S", "x":2.75, "y":3.333}, + {"label":"D", "x":3.75, "y":3.333}, + {"label":"F", "x":4.75, "y":3.333}, + {"label":"G", "x":5.75, "y":3.333}, + {"label":"H", "x":6.75, "y":3.333}, + {"label":"J", "x":7.75, "y":3.333}, + {"label":"K", "x":8.75, "y":3.333}, + {"label":"L", "x":9.75, "y":3.333}, + {"label":":", "x":10.75, "y":3.333}, + {"label":"\"", "x":11.75, "y":3.333}, + {"label":"Enter", "x":12.75, "y":3.333, "w":2.25}, + {"label":"4", "x":17.5, "y":3.333}, + {"label":"5", "x":18.5, "y":3.333}, + {"label":"6", "x":19.5, "y":3.333}, + + {"label":"Shift", "x":0, "y":4.333, "w":2.25}, + {"label":"Z", "x":2.25, "y":4.333}, + {"label":"X", "x":3.25, "y":4.333}, + {"label":"C", "x":4.25, "y":4.333}, + {"label":"V", "x":5.25, "y":4.333}, + {"label":"B", "x":6.25, "y":4.333}, + {"label":"N", "x":7.25, "y":4.333}, + {"label":"M", "x":8.25, "y":4.333}, + {"label":"<", "x":9.25, "y":4.333}, + {"label":">", "x":10.25, "y":4.333}, + {"label":"?", "x":11.25, "y":4.333}, + {"label":"Shift", "x":12.25, "y":4.333, "w":2.75}, + {"label":"Up", "x":15.75, "y":3.833, "h":0.833}, + {"label":"1", "x":17.5, "y":4.333}, + {"label":"2", "x":18.5, "y":4.333}, + {"label":"3", "x":19.5, "y":4.333}, + {"label":"Enter", "x":20.5, "y":4.333, "h":2}, + + {"label":"Ctrl", "x":0, "y":5.333, "w":1.25}, + {"label":"GUI", "x":1.25, "y":5.333, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5.333, "w":1.25}, + {"label":"Space", "x":3.75, "y":5.333, "w":6.25}, + {"label":"Alt", "x":10, "y":5.333, "w":1.25}, + {"label":"GUI", "x":11.25, "y":5.333, "w":1.25}, + {"label":"Menu", "x":12.5, "y":5.333, "w":1.25}, + {"label":"Ctrl", "x":13.75, "y":5.333, "w":1.25}, + {"label":"Left", "x":15.25, "y":4.667, "h":0.833}, + {"label":"Down", "x":15.75, "y":5.5, "h":0.833}, + {"label":"Right", "x":16.25, "y":4.667, "h":0.833}, + {"label":"0", "x":17.5, "y":5.333, "w":2}, + {"label":".", "x":19.5, "y":5.333} + ] + } } } diff --git a/keyboards/converter/periboard_512/rules.mk b/keyboards/converter/periboard_512/rules.mk index c1cb4919a7b3..b6a9366006e4 100644 --- a/keyboards/converter/periboard_512/rules.mk +++ b/keyboards/converter/periboard_512/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = halfkay # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 = 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 diff --git a/keyboards/converter/siemens_tastatur/config.h b/keyboards/converter/siemens_tastatur/config.h index ae6f1a209aa3..cd54ed3d83bb 100644 --- a/keyboards/converter/siemens_tastatur/config.h +++ b/keyboards/converter/siemens_tastatur/config.h @@ -26,11 +26,11 @@ along with this program. If not, see . #define PRODUCT Siemens Tastatur /* key matrix size */ -#define MATRIX_ROWS 4 +#define MATRIX_ROWS 5 #define MATRIX_COLS 19 //This is all fake and not used -#define MATRIX_COL_PINS { B11, B10, B1, B0, A7, A6, A5, A4, A3, A2, A1, A0, C15, C14 } +#define MATRIX_COL_PINS { B11, B10, B1, B0, A7, A6, A5, A4, A3, A2, A1, A0, C15, C14, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN } #define MATRIX_ROW_PINS { B3, B4, B5, B6, B7 } #define DIODE_DIRECTION COL2ROW diff --git a/keyboards/converter/siemens_tastatur/info.json b/keyboards/converter/siemens_tastatur/info.json index de9998cb7131..7c4ebe769ba6 100644 --- a/keyboards/converter/siemens_tastatur/info.json +++ b/keyboards/converter/siemens_tastatur/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Siemens Tastatur", "url": "", "maintainer": "qmk", - "width": 20, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/converter/siemens_tastatur/keymaps/default/keymap.c b/keyboards/converter/siemens_tastatur/keymaps/default/keymap.c index 70edf94d73f6..0ce8a64ab7ae 100644 --- a/keyboards/converter/siemens_tastatur/keymaps/default/keymap.c +++ b/keyboards/converter/siemens_tastatur/keymaps/default/keymap.c @@ -51,10 +51,6 @@ void matrix_init_user(void) { writePinLow(B0); } -void matrix_scan_user(void) { - -} - void led_set_user(uint8_t usb_led) { if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) { writePinHigh(B0); diff --git a/keyboards/converter/siemens_tastatur/rules.mk b/keyboards/converter/siemens_tastatur/rules.mk index ff54cf24e857..f5cc4c10d98d 100644 --- a/keyboards/converter/siemens_tastatur/rules.mk +++ b/keyboards/converter/siemens_tastatur/rules.mk @@ -6,15 +6,15 @@ BOOTLOADER = stm32duino SRC = matrix.c -#BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = no RGBLIGHT_ENABLE = no +SLEEP_LED_ENABLE = yes CUSTOM_MATRIX = yes diff --git a/keyboards/converter/siemens_tastatur/siemens_tastatur.c b/keyboards/converter/siemens_tastatur/siemens_tastatur.c index 298f24c36f95..21d00c8c30e9 100644 --- a/keyboards/converter/siemens_tastatur/siemens_tastatur.c +++ b/keyboards/converter/siemens_tastatur/siemens_tastatur.c @@ -15,31 +15,3 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include "siemens_tastatur.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - diff --git a/keyboards/converter/sun_usb/config.h b/keyboards/converter/sun_usb/config.h index f073e61e4402..c67ae5ebae86 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 . */ -#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 . /* 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 000000000000..2ea1f0a5bf3e --- /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 5a1a117c0c89..c5e9b5b9542e 100644 --- a/keyboards/converter/sun_usb/rules.mk +++ b/keyboards/converter/sun_usb/rules.mk @@ -2,42 +2,24 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = lufa-dfu # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend #HARDWARE_SERIAL = yes 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/info.json b/keyboards/converter/sun_usb/type3/info.json index 996f5dc0ccad..9a60b09607a9 100644 --- a/keyboards/converter/sun_usb/type3/info.json +++ b/keyboards/converter/sun_usb/type3/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Sun Type 3", "url": "", "maintainer": "qmk", - "width": 21, - "height": 6, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/converter/sun_usb/type3/type3.h b/keyboards/converter/sun_usb/type3/type3.h index f6f14f4effd9..b84a703d6b8b 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 . */ -#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 . | 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/info.json b/keyboards/converter/sun_usb/type5/info.json index 2b4343ae6ed4..9613d46e5029 100644 --- a/keyboards/converter/sun_usb/type5/info.json +++ b/keyboards/converter/sun_usb/type5/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Sun Type 5", "url": "", "maintainer": "qmk", - "width": 24.75, - "height": 7, "layouts": { "LAYOUT_jp_unix": { "layout": [ diff --git a/keyboards/converter/sun_usb/type5/type5.h b/keyboards/converter/sun_usb/type5/type5.h index da66d80abc82..d4c9cc267c9a 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 . */ -#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 d28629643a9d..3dccc23a413c 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 93e85832dc17..6c1829a02c6a 100644 --- a/keyboards/converter/usb_usb/ble/rules.mk +++ b/keyboards/converter/usb_usb/ble/rules.mk @@ -1,22 +1,18 @@ # Processor frequency F_CPU = 8000000 -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 -BLUETOOTH = AdafruitBLE -ADAFRUIT_BLE_ENABLE = yes +AUDIO_ENABLE = no # Audio output -EXTRAFLAGS += -flto +BLUETOOTH_ENABLE = yes +BLUETOOTH_DRIVER = AdafruitBLE + +LTO_ENABLE = yes diff --git a/keyboards/converter/usb_usb/config.h b/keyboards/converter/usb_usb/config.h index 7ff8ceeebd7e..d2488336a5c0 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 . */ -#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 . //#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 d5e78558608e..3dccc23a413c 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/info.json b/keyboards/converter/usb_usb/info.json index af3dd0b5e418..5ba1a46b7125 100644 --- a/keyboards/converter/usb_usb/info.json +++ b/keyboards/converter/usb_usb/info.json @@ -2,8 +2,6 @@ "keyboard_name": "converter/usb_usb", "url": "", "maintainer": "qmk", - "width": 22.5, - "height": 6.5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/converter/usb_usb/keymaps/narze/README.md b/keyboards/converter/usb_usb/keymaps/narze/README.md index a089568d2cfa..eb9dbbf60b0f 100644 --- a/keyboards/converter/usb_usb/keymaps/narze/README.md +++ b/keyboards/converter/usb_usb/keymaps/narze/README.md @@ -2,7 +2,7 @@ ## Key features - Qwerty + [Colemak](https://colemak.com) layouts, and you can type Qwerty on software-level Colemak as well. Very useful for gaming or when your friend wanna type something but don't use Colemak. -- [(S)uper (D)uper Mode](https://github.com/jasonrudolph/keyboard#super-duper-mode) inspired by [jasonrudolph](https://github.com/jasonrudolph), with [some extensions](https://gist.github.com/narze/861e2167784842d38771) such as backspace & forward delete. +- [(S)uper (D)uper Mode](/users/narze/readme.md) ## Build instructions - `cd /path/to/qmk_firmware` diff --git a/keyboards/converter/usb_usb/pro_micro/pro_micro.h b/keyboards/converter/usb_usb/pro_micro/pro_micro.h index 566df9f20fd8..3dccc23a413c 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/rules.mk b/keyboards/converter/usb_usb/rules.mk index d2b99183712b..9f14764edf4b 100644 --- a/keyboards/converter/usb_usb/rules.mk +++ b/keyboards/converter/usb_usb/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # comment out to disable the options. # -#BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite #MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control #CONSOLE_ENABLE = yes # Console for debug #COMMAND_ENABLE = yes # Commands for debug and configuration -#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend #NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA #BACKLIGHT_ENABLE = yes USB_HID_ENABLE = yes diff --git a/keyboards/converter/usb_usb/usb_usb.h b/keyboards/converter/usb_usb/usb_usb.h index e0c7c9c0d452..3acd67634a5d 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 . */ -#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 . * 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,21 +107,31 @@ along with this program. If not, see . * `-----------------------------------------------------------' `-----------' `---------------' */ #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 \ -) LAYOUT_all( \ - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ - K29, K3A, K3B, K3C, K3D, K3E, K3F, K40, K41, K42, K43, K44, K45, K46, K47, K48, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ - K35, K1E, K1F, K20, K21, K22, K23, K24, K25, K26, K27, K2D, K2E, KC_NO, K2A, K49, K4A, K4B, K53, K54, K55, K56, KC_NO, KC_NO, \ - K2B, K14, K1A, K08, K15, K17, K1C, K18, K0C, K12, K13, K2F, K30, K31, K4C, K4D, K4E, K5F, K60, K61, K57, KC_NO, KC_NO, \ - K39, K04, K16, K07, K09, K0A, K0B, K0D, K0E, K0F, K33, K34, KC_NO, K28, K5C, K5D, K5E, KC_NO, KC_NO, KC_NO, \ - KE1, KC_NO, K1D, K1B, K06, K19, K05, K11, K10, K36, K37, K38, KC_NO, KE5, K52, K59, K5A, K5B, KC_NO, KC_NO, KC_NO, \ - KE0, KE3, KE2, KC_NO, KC_NO, K2C, KC_NO, KC_NO, KC_NO, KE6, KE7, K65, KE4, K50, K51, K4F, K62, K63, K58, KC_NO, KC_NO \ -) + 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 \ +) { \ + { 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 } \ +} /* ,---. ,---------------. ,---------------. ,---------------. ,-----------. * |Esc| |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau| @@ -153,21 +149,31 @@ along with this program. If not, see . * `-----------------------------------------------------------' `-----------' `---------------' */ #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 \ -) LAYOUT_all( \ - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ - K29, K3A, K3B, K3C, K3D, K3E, K3F, K40, K41, K42, K43, K44, K45, K46, K47, K48, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ - K35, K1E, K1F, K20, K21, K22, K23, K24, K25, K26, K27, K2D, K2E, KC_NO, K2A, K49, K4A, K4B, K53, K54, K55, K56, KC_NO, KC_NO, \ - K2B, K14, K1A, K08, K15, K17, K1C, K18, K0C, K12, K13, K2F, K30, K32, K4C, K4D, K4E, K5F, K60, K61, K57, KC_NO, KC_NO, \ - K39, K04, K16, K07, K09, K0A, K0B, K0D, K0E, K0F, K33, K34, K32, K28, K5C, K5D, K5E, KC_NO, KC_NO, KC_NO, \ - KE1, K64, K1D, K1B, K06, K19, K05, K11, K10, K36, K37, K38, KC_NO, KE5, K52, K59, K5A, K5B, KC_NO, KC_NO, KC_NO, \ - KE0, KE3, KE2, KC_NO, KC_NO, K2C, KC_NO, KC_NO, KC_NO, KE6, KE7, K65, KE4, K50, K51, K4F, K62, K63, K58, KC_NO, KC_NO \ -) + 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 \ +) { \ + { 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 } \ +} /* ,---. ,---------------. ,---------------. ,---------------. ,-----------. * |Esc| |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau| @@ -185,19 +191,28 @@ along with this program. If not, see . * `-----------------------------------------------------------' `-----------' `---------------' */ #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 \ -) LAYOUT_all( \ - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ - K29, K3A, K3B, K3C, K3D, K3E, K3F, K40, K41, K42, K43, K44, K45, K46, K47, K48, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ - K35, K1E, K1F, K20, K21, K22, K23, K24, K25, K26, K27, K2D, K2E, K89, K2A, K49, K4A, K4B, K53, K54, K55, K56, KC_NO, KC_NO, \ - K2B, K14, K1A, K08, K15, K17, K1C, K18, K0C, K12, K13, K2F, K30, K32, K4C, K4D, K4E, K5F, K60, K61, K57, KC_NO, KC_NO, \ - K39, K04, K16, K07, K09, K0A, K0B, K0D, K0E, K0F, K33, K34, K32, K28, K5C, K5D, K5E, KC_NO, KC_NO, KC_NO, \ - KE1, KC_NO, K1D, K1B, K06, K19, K05, K11, K10, K36, K37, K38, K87, KE5, K52, K59, K5A, K5B, KC_NO, KC_NO, KC_NO, \ - KE0, KE3, KE2, K8B, KC_NO, K2C, KC_NO, K8A, K88, KE6, KE7, K65, KE4, K50, K51, K4F, K62, K63, K58, KC_NO, KC_NO \ -) -#endif + 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 \ +) { \ + { 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 } \ +} diff --git a/keyboards/converter/xt_usb/info.json b/keyboards/converter/xt_usb/info.json index 4bae773623c9..4dbe14b6fa67 100644 --- a/keyboards/converter/xt_usb/info.json +++ b/keyboards/converter/xt_usb/info.json @@ -2,8 +2,6 @@ "keyboard_name": "IBM PC XT", "url": "", "maintainer": "qmk", - "width": 21, - "height": 5, "layouts": { "LAYOUT_xt": { "layout": [ diff --git a/keyboards/converter/xt_usb/rules.mk b/keyboards/converter/xt_usb/rules.mk index ca9382f8a619..e353cf9e33bf 100644 --- a/keyboards/converter/xt_usb/rules.mk +++ b/keyboards/converter/xt_usb/rules.mk @@ -7,20 +7,16 @@ BOOTLOADER = halfkay # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth 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 similarity index 100% rename from tmk_core/protocol/xt.h rename to keyboards/converter/xt_usb/xt.h diff --git a/tmk_core/protocol/xt_interrupt.c b/keyboards/converter/xt_usb/xt_interrupt.c similarity index 100% rename from tmk_core/protocol/xt_interrupt.c rename to keyboards/converter/xt_usb/xt_interrupt.c diff --git a/keyboards/cool836a/info.json b/keyboards/cool836a/info.json index 01f996490751..fb9e7a2f2437 100644 --- a/keyboards/cool836a/info.json +++ b/keyboards/cool836a/info.json @@ -2,8 +2,6 @@ "keyboard_name": "cool836a", "url": "https://github.com/telzo2000/cool836A", "maintainer": "Ohashi", - "width": 12, - "height": 3, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/cool836a/rules.mk b/keyboards/cool836a/rules.mk index 5c0d8f307c54..d2109f62500b 100644 --- a/keyboards/cool836a/rules.mk +++ b/keyboards/cool836a/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/copenhagen_click/click_pad_v1/config.h b/keyboards/copenhagen_click/click_pad_v1/config.h index 62d08fab245c..08a9777b517d 100755 --- a/keyboards/copenhagen_click/click_pad_v1/config.h +++ b/keyboards/copenhagen_click/click_pad_v1/config.h @@ -123,59 +123,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -194,26 +141,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/copenhagen_click/click_pad_v1/info.json b/keyboards/copenhagen_click/click_pad_v1/info.json index b3327e88097e..f684748c64fc 100755 --- a/keyboards/copenhagen_click/click_pad_v1/info.json +++ b/keyboards/copenhagen_click/click_pad_v1/info.json @@ -2,11 +2,9 @@ "keyboard_name": "CopenhagenClickPad-V1", "url": "http://copenhagenclick.com/ClickPad-V1/", "maintainer": "mini-ninja-64", - "width": 1, - "height": 1, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0}] } } -} \ No newline at end of file +} diff --git a/keyboards/copenhagen_click/click_pad_v1/keymaps/default/keymap.c b/keyboards/copenhagen_click/click_pad_v1/keymaps/default/keymap.c index a11872782618..17549dd09565 100755 --- a/keyboards/copenhagen_click/click_pad_v1/keymaps/default/keymap.c +++ b/keyboards/copenhagen_click/click_pad_v1/keymaps/default/keymap.c @@ -43,11 +43,3 @@ void matrix_init_user(void) { breathing_enable(); } - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/copenhagen_click/click_pad_v1/rules.mk b/keyboards/copenhagen_click/click_pad_v1/rules.mk index 2bfc5d095760..2fdf9d8b53a0 100755 --- a/keyboards/copenhagen_click/click_pad_v1/rules.mk +++ b/keyboards/copenhagen_click/click_pad_v1/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/coseyfannitutti/discipad/config.h b/keyboards/coseyfannitutti/discipad/config.h index 01b12cf3aa63..33ce2576f811 100644 --- a/keyboards/coseyfannitutti/discipad/config.h +++ b/keyboards/coseyfannitutti/discipad/config.h @@ -120,59 +120,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -191,26 +138,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ #define BOOTMAGIC_LITE_ROW 0 #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/coseyfannitutti/discipad/info.json b/keyboards/coseyfannitutti/discipad/info.json index fc50d3a18715..267fd9f0398b 100644 --- a/keyboards/coseyfannitutti/discipad/info.json +++ b/keyboards/coseyfannitutti/discipad/info.json @@ -2,8 +2,6 @@ "keyboard_name": "DISCIPAD", "url": "https://github.com/coseyfannitutti/discipad", "maintainer": "coseyfannitutti", - "width": 4, - "height": 5, "layouts": { "LAYOUT_numpad_5x4": { "layout": [{"label":"Num Lock", "x":0, "y":0}, {"label":"/", "x":1, "y":0}, {"label":"*", "x":2, "y":0}, {"label":"-", "x":3, "y":0}, {"label":"7", "x":0, "y":1}, {"label":"8", "x":1, "y":1}, {"label":"9", "x":2, "y":1}, {"label":"4", "x":0, "y":2}, {"label":"5", "x":1, "y":2}, {"label":"6", "x":2, "y":2}, {"label":"+", "x":3, "y":1, "h":2}, {"label":"1", "x":0, "y":3}, {"label":"2", "x":1, "y":3}, {"label":"3", "x":2, "y":3}, {"label":"0", "x":0, "y":4, "w":2}, {"label":".", "x":2, "y":4}, {"label":"Enter", "x":3, "y":3, "h":2}] diff --git a/keyboards/coseyfannitutti/discipad/rules.mk b/keyboards/coseyfannitutti/discipad/rules.mk index 057bea42bbb0..63f74859beeb 100644 --- a/keyboards/coseyfannitutti/discipad/rules.mk +++ b/keyboards/coseyfannitutti/discipad/rules.mk @@ -2,30 +2,18 @@ MCU = atmega328p # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = USBasp +BOOTLOADER = usbasploader # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/coseyfannitutti/discipline/config.h b/keyboards/coseyfannitutti/discipline/config.h index af2bc452b01e..70bc4536f315 100644 --- a/keyboards/coseyfannitutti/discipline/config.h +++ b/keyboards/coseyfannitutti/discipline/config.h @@ -118,59 +118,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -189,26 +136,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ #define BOOTMAGIC_LITE_ROW 0 #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/coseyfannitutti/discipline/discipline.h b/keyboards/coseyfannitutti/discipline/discipline.h index 61ac086c8cdf..ebfebfe382fa 100644 --- a/keyboards/coseyfannitutti/discipline/discipline.h +++ b/keyboards/coseyfannitutti/discipline/discipline.h @@ -48,9 +48,7 @@ { K40, K41, K42, _x_, _x_, _x_, K46, _x_, _x_, K49, K4A, _x_, K4C, K4D, K4E} \ } -#define LAYOUT_65_ansi_2_right_mods LAYOUT_65_ansi_blocker - -#define LAYOUT_wkl_ansi_2_right_mods( \ +#define LAYOUT_65_ansi_wkl( \ 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, K2D, K2E, \ @@ -64,7 +62,7 @@ { K40, _x_, K42, _x_, _x_, _x_, K46, _x_, _x_, K49, K4A, _x_, K4C, K4D, K4E} \ } -#define LAYOUT_wkl_ansi_3_right_mods( \ +#define LAYOUT_65_ansi_lwkl( \ 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, K2D, K2E, \ @@ -106,9 +104,7 @@ { K40, K41, K42, _x_, _x_, _x_, K46, _x_, _x_, K49, K4A, _x_, K4C, K4D, K4E} \ } -#define LAYOUT_65_iso_2_right_mods LAYOUT_65_iso_blocker - -#define LAYOUT_wkl_iso_2_right_mods( \ +#define LAYOUT_65_iso_wkl( \ 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, K2D, K1D, K2E, \ @@ -122,7 +118,7 @@ { K40, _x_, K42, _x_, _x_, _x_, K46, _x_, _x_, K49, K4A, _x_, K4C, K4D, K4E} \ } -#define LAYOUT_wkl_iso_3_right_mods( \ +#define LAYOUT_65_iso_lwkl( \ 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, K2D, K1D, K2E, \ diff --git a/keyboards/coseyfannitutti/discipline/info.json b/keyboards/coseyfannitutti/discipline/info.json index 9583665c57b4..ea1886a3531f 100644 --- a/keyboards/coseyfannitutti/discipline/info.json +++ b/keyboards/coseyfannitutti/discipline/info.json @@ -2,26 +2,618 @@ "keyboard_name": "DISCIPLINE", "url": "https://github.com/coseyfannitutti/discipline", "maintainer": "coseyfannitutti", - "width": 16, - "height": 5, + "layout_aliases": { + "LAYOUT_65_ansi_2_right_mods": "LAYOUT_65_ansi_blocker", + "LAYOUT_65_iso_2_right_mods": "LAYOUT_65_iso_blocker", + "LAYOUT_wkl_ansi_2_right_mods": "LAYOUT_65_ansi_wkl", + "LAYOUT_wkl_ansi_3_right_mods": "LAYOUT_65_ansi_lwkl", + "LAYOUT_wkl_iso_2_right_mods": "LAYOUT_65_iso_wkl", + "LAYOUT_wkl_iso_3_right_mods": "LAYOUT_65_iso_lwkl" + }, "layouts": { + "LAYOUT_65_ansi": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":15, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + {"x":15, "y":1}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":15, "y":2}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4}, + {"x":11, "y":4}, + {"x":12, "y":4}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + }, "LAYOUT_65_ansi_blocker": { - "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"~", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Delete", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"PgUp", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"label":"PgDn", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4}, {"label":"Fn", "x":11, "y":4}, {"label":"Ctrl", "x":12, "y":4}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}] + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":15, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + {"x":15, "y":1}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":15, "y":2}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.5}, + {"x":11.5, "y":4, "w":1.5}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + }, + "LAYOUT_65_ansi_wkl": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":15, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + {"x":15, "y":1}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":15, "y":2}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + + {"x":0, "y":4, "w":1.5}, + {"x":1.5, "y":4, "w":1.5}, + {"x":3, "y":4, "w":7}, + {"x":10, "y":4, "w":1.5}, + {"x":11.5, "y":4, "w":1.5}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] }, - "LAYOUT_wkl_ansi_2_right_mods": { - "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"~", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Delete", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"PgUp", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"label":"PgDn", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Alt", "x":1.5, "y":4, "w":1.5}, {"x":3, "y":4, "w":7}, {"label":"Alt", "x":10, "y":4, "w":1.5}, {"label":"Fn", "x":11.5, "y":4, "w":1.5}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}] + "LAYOUT_65_ansi_lwkl": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":15, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + {"x":15, "y":1}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":15, "y":2}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + + {"x":0, "y":4, "w":1.5}, + {"x":1.5, "y":4, "w":1.5}, + {"x":3, "y":4, "w":7}, + {"x":10, "y":4}, + {"x":11, "y":4}, + {"x":12, "y":4}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] }, - "LAYOUT_wkl_ansi_3_right_mods": { - "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"~", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Delete", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"PgUp", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"label":"PgDn", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Alt", "x":1.5, "y":4, "w":1.5}, {"x":3, "y":4, "w":7}, {"label":"Alt", "x":10, "y":4}, {"label":"Fn", "x":11, "y":4}, {"label":"Ctrl", "x":12, "y":4}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}] + "LAYOUT_65_iso": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":15, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":15, "y":1}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + {"x":13.75, "y":1, "w":1.25, "h":2}, + {"x":15, "y":2}, + + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4}, + {"x":11, "y":4}, + {"x":12, "y":4}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] }, "LAYOUT_65_iso_blocker": { - "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2}, {"x":13.75, "y":1, "w":1.25, "h":2}, {"x":15, "y":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":15, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":15, "y":1}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + {"x":13.75, "y":1, "w":1.25, "h":2}, + {"x":15, "y":2}, + + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.5}, + {"x":11.5, "y":4, "w":1.5}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] }, - "LAYOUT_wkl_iso_2_right_mods": { - "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2}, {"x":13.75, "y":1, "w":1.25, "h":2}, {"x":15, "y":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.5}, {"x":1.5, "y":4, "w":1.5}, {"x":3, "y":4, "w":7}, {"x":10, "y":4, "w":1.5}, {"x":11.5, "y":4, "w":1.5}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] + "LAYOUT_65_iso_wkl": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":15, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":15, "y":1}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + {"x":13.75, "y":1, "w":1.25, "h":2}, + {"x":15, "y":2}, + + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + + {"x":0, "y":4, "w":1.5}, + {"x":1.5, "y":4, "w":1.5}, + {"x":3, "y":4, "w":7}, + {"x":10, "y":4, "w":1.5}, + {"x":11.5, "y":4, "w":1.5}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] }, - "LAYOUT_wkl_iso_3_right_mods": { - "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2}, {"x":13.75, "y":1, "w":1.25, "h":2}, {"x":15, "y":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.5}, {"x":1.5, "y":4, "w":1.5}, {"x":3, "y":4, "w":7}, {"x":10, "y":4}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] + "LAYOUT_65_iso_lwkl": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":15, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":15, "y":1}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + {"x":13.75, "y":1, "w":1.25, "h":2}, + {"x":15, "y":2}, + + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + + {"x":0, "y":4, "w":1.5}, + {"x":1.5, "y":4, "w":1.5}, + {"x":3, "y":4, "w":7}, + {"x":10, "y":4}, + {"x":11, "y":4}, + {"x":12, "y":4}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] } } } diff --git a/keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/keymap.c b/keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/keymap.c index b948c9fb1d06..977e3a26f6d7 100644 --- a/keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/keymap.c +++ b/keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/keymap.c @@ -66,7 +66,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { XXXXXXX, XXXXXXX, M_MDSWP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, TG(_NP), XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX ) }; diff --git a/keyboards/coseyfannitutti/discipline/rules.mk b/keyboards/coseyfannitutti/discipline/rules.mk index c5153c876e8a..b859ba06a805 100644 --- a/keyboards/coseyfannitutti/discipline/rules.mk +++ b/keyboards/coseyfannitutti/discipline/rules.mk @@ -5,32 +5,20 @@ MCU = atmega32a F_CPU = 16000000 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = USBasp +BOOTLOADER = usbasploader # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = 65_ansi 65_ansi_blocker 65_iso 65_iso_blocker diff --git a/keyboards/coseyfannitutti/mullet/config.h b/keyboards/coseyfannitutti/mullet/config.h index 9d92d0839bd3..b186aa82d1af 100644 --- a/keyboards/coseyfannitutti/mullet/config.h +++ b/keyboards/coseyfannitutti/mullet/config.h @@ -118,23 +118,3 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - diff --git a/keyboards/coseyfannitutti/mullet/info.json b/keyboards/coseyfannitutti/mullet/info.json index a6088863336b..0be8b8776737 100644 --- a/keyboards/coseyfannitutti/mullet/info.json +++ b/keyboards/coseyfannitutti/mullet/info.json @@ -2,11 +2,9 @@ "keyboard_name": "mullet", "url": "https://github.com/coseyfannitutti/mullet", "maintainer": "coseyfannitutti", - "width": 16, - "height": 5, "layouts": { "LAYOUT": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Insert", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Page Up", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Page Down", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"label":"End", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Fn", "x":11.25, "y":4, "w":1.25}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}] } } -} \ No newline at end of file +} diff --git a/keyboards/coseyfannitutti/mullet/mullet.c b/keyboards/coseyfannitutti/mullet/mullet.c index 4f451f3dbb17..18445a6c937f 100644 --- a/keyboards/coseyfannitutti/mullet/mullet.c +++ b/keyboards/coseyfannitutti/mullet/mullet.c @@ -14,10 +14,3 @@ * along with this program. If not, see . */ #include "mullet.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} diff --git a/keyboards/coseyfannitutti/mullet/rules.mk b/keyboards/coseyfannitutti/mullet/rules.mk index 6efa76cb907e..8d4fb270abe4 100644 --- a/keyboards/coseyfannitutti/mullet/rules.mk +++ b/keyboards/coseyfannitutti/mullet/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/coseyfannitutti/mulletpad/config.h b/keyboards/coseyfannitutti/mulletpad/config.h index 782bc16e76ca..b2a930357177 100644 --- a/keyboards/coseyfannitutti/mulletpad/config.h +++ b/keyboards/coseyfannitutti/mulletpad/config.h @@ -41,7 +41,7 @@ along with this program. If not, see . * */ #define MATRIX_ROW_PINS { F4, F1, F5, F6, F7 } -#define MATRIX_COL_PINS { F0, C7, C6, B6, } +#define MATRIX_COL_PINS { F0, C7, C6, B6 } #define UNUSED_PINS /* COL2ROW, ROW2COL */ @@ -118,23 +118,3 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - diff --git a/keyboards/coseyfannitutti/mulletpad/info.json b/keyboards/coseyfannitutti/mulletpad/info.json index 7115bc75122c..5decb0e4506a 100644 --- a/keyboards/coseyfannitutti/mulletpad/info.json +++ b/keyboards/coseyfannitutti/mulletpad/info.json @@ -2,8 +2,6 @@ "keyboard_name": "mulletpad", "url": "https://github.com/coseyfannitutti/mulletpad", "maintainer": "coseyfannitutti", - "width": 4, - "height": 5, "layouts": { "LAYOUT_numpad_5x4": { "layout": [{"label":"Num Lock", "x":0, "y":0}, {"label":"/", "x":1, "y":0}, {"label":"*", "x":2, "y":0}, {"label":"-", "x":3, "y":0}, {"label":"7", "x":0, "y":1}, {"label":"8", "x":1, "y":1}, {"label":"9", "x":2, "y":1}, {"label":"4", "x":0, "y":2}, {"label":"5", "x":1, "y":2}, {"label":"6", "x":2, "y":2}, {"label":"+", "x":3, "y":1, "h":2}, {"label":"1", "x":0, "y":3}, {"label":"2", "x":1, "y":3}, {"label":"3", "x":2, "y":3}, {"label":"0", "x":0, "y":4, "w":2}, {"label":".", "x":2, "y":4}, {"label":"Enter", "x":3, "y":3, "h":2}] diff --git a/keyboards/coseyfannitutti/mulletpad/mulletpad.c b/keyboards/coseyfannitutti/mulletpad/mulletpad.c index be335cc547cb..72bb19c3036c 100644 --- a/keyboards/coseyfannitutti/mulletpad/mulletpad.c +++ b/keyboards/coseyfannitutti/mulletpad/mulletpad.c @@ -14,10 +14,3 @@ * along with this program. If not, see . */ #include "mulletpad.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} diff --git a/keyboards/coseyfannitutti/mulletpad/rules.mk b/keyboards/coseyfannitutti/mulletpad/rules.mk index 4a4a7e1e72cd..c524faf9845c 100644 --- a/keyboards/coseyfannitutti/mulletpad/rules.mk +++ b/keyboards/coseyfannitutti/mulletpad/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = numpad_5x4 diff --git a/keyboards/coseyfannitutti/mysterium/config.h b/keyboards/coseyfannitutti/mysterium/config.h index 9b657d5bdafe..0b2df0a051be 100644 --- a/keyboards/coseyfannitutti/mysterium/config.h +++ b/keyboards/coseyfannitutti/mysterium/config.h @@ -116,59 +116,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -187,26 +134,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ #define BOOTMAGIC_LITE_ROW 0 #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/coseyfannitutti/mysterium/info.json b/keyboards/coseyfannitutti/mysterium/info.json index 4c180b7d5f35..900597409963 100644 --- a/keyboards/coseyfannitutti/mysterium/info.json +++ b/keyboards/coseyfannitutti/mysterium/info.json @@ -2,8 +2,6 @@ "keyboard_name": "MYSTERIUM", "url": "https://github.com/coseyfannitutti/mysterium", "maintainer": "coseyfannitutti", - "width": 18.25, - "height": 6.25, "layouts": { "LAYOUT_tkl_ansi": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"label":"Backspace", "x":13, "y":1.25, "w":2}, {"label":"Insert", "x":15.25, "y":1.25}, {"label":"Home", "x":16.25, "y":1.25}, {"label":"PgUp", "x":17.25, "y":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Y", "x":6.5, "y":2.25}, {"label":"U", "x":7.5, "y":2.25}, {"label":"I", "x":8.5, "y":2.25}, {"label":"O", "x":9.5, "y":2.25}, {"label":"P", "x":10.5, "y":2.25}, {"label":"{", "x":11.5, "y":2.25}, {"label":"}", "x":12.5, "y":2.25}, {"label":"|", "x":13.5, "y":2.25, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.25}, {"label":"End", "x":16.25, "y":2.25}, {"label":"PgDn", "x":17.25, "y":2.25}, {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"H", "x":6.75, "y":3.25}, {"label":"J", "x":7.75, "y":3.25}, {"label":"K", "x":8.75, "y":3.25}, {"label":"L", "x":9.75, "y":3.25}, {"label":":", "x":10.75, "y":3.25}, {"label":"\"", "x":11.75, "y":3.25}, {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, {"label":"Shift", "x":0, "y":4.25, "w":2.25}, {"label":"Z", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"N", "x":7.25, "y":4.25}, {"label":"M", "x":8.25, "y":4.25}, {"label":"<", "x":9.25, "y":4.25}, {"label":">", "x":10.25, "y":4.25}, {"label":"?", "x":11.25, "y":4.25}, {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.25}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, {"x":3.75, "y":5.25, "w":6.25}, {"label":"Alt", "x":10, "y":5.25, "w":1.25}, {"label":"Menu", "x":11.25, "y":5.25, "w":1.25}, {"label":"Fn", "x":12.5, "y":5.25, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.25}, {"label":"\u2193", "x":16.25, "y":5.25}, {"label":"\u2192", "x":17.25, "y":5.25}] @@ -18,4 +16,4 @@ "layout": [{"x":0, "y":0.25}, {"x":2, "y":0.25}, {"x":3, "y":0.25}, {"x":4, "y":0.25}, {"x":5, "y":0.25}, {"x":6.5, "y":0.25}, {"x":7.5, "y":0.25}, {"x":8.5, "y":0.25}, {"x":9.5, "y":0.25}, {"x":11, "y":0.25}, {"x":12, "y":0.25}, {"x":13, "y":0.25}, {"x":14, "y":0.25}, {"x":15.25, "y":0.25}, {"x":16.25, "y":0.25}, {"x":17.25, "y":0.25}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.75, "y":2.5, "w":1.25, "h":2}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5}, {"x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":7}, {"x":11, "y":5.5, "w":1.5}, {"x":12.5, "y":5.5}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}] } } -} \ No newline at end of file +} diff --git a/keyboards/coseyfannitutti/mysterium/rules.mk b/keyboards/coseyfannitutti/mysterium/rules.mk index 65dbecf214fc..866f32ecb879 100644 --- a/keyboards/coseyfannitutti/mysterium/rules.mk +++ b/keyboards/coseyfannitutti/mysterium/rules.mk @@ -5,32 +5,20 @@ MCU = atmega32a F_CPU = 16000000 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = USBasp +BOOTLOADER = usbasploader # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = tkl_ansi diff --git a/keyboards/coseyfannitutti/romeo/config.h b/keyboards/coseyfannitutti/romeo/config.h index 8be834db89df..93cda95d2099 100644 --- a/keyboards/coseyfannitutti/romeo/config.h +++ b/keyboards/coseyfannitutti/romeo/config.h @@ -119,59 +119,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -190,26 +137,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration #define BOOTMAGIC_LITE_ROW 0 #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/coseyfannitutti/romeo/info.json b/keyboards/coseyfannitutti/romeo/info.json index 9bc387428855..a79308a8dacc 100644 --- a/keyboards/coseyfannitutti/romeo/info.json +++ b/keyboards/coseyfannitutti/romeo/info.json @@ -2,8 +2,6 @@ "keyboard_name": "ROMEO", "url": "https://github.com/coseyfannitutti/romeo", "maintainer": "coseyfannitutti", - "width": 13, - "height": 4, "layouts": { "LAYOUT_all": { "layout": [{"label":"1.5u", "x":0, "y":0, "w":1.5}, {"x":1.5, "y":0}, {"x":2.5, "y":0}, {"x":3.5, "y":0}, {"x":4.5, "y":0}, {"x":5.5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":10.5, "y":0}, {"label":"1.5u", "x":11.5, "y":0, "w":1.5}, {"label":"1.75u", "x":0, "y":1, "w":1.75}, {"x":1.75, "y":1}, {"x":2.75, "y":1}, {"x":3.75, "y":1}, {"x":4.75, "y":1}, {"x":5.75, "y":1}, {"x":6.75, "y":1}, {"x":7.75, "y":1}, {"x":8.75, "y":1}, {"x":9.75, "y":1}, {"label":"2.25u", "x":10.75, "y":1, "w":2.25}, {"label":"1.25u", "x":0, "y":2, "w":1.25}, {"x":1.25, "y":2}, {"x":2.25, "y":2}, {"x":3.25, "y":2}, {"x":4.25, "y":2}, {"x":5.25, "y":2}, {"x":6.25, "y":2}, {"x":7.25, "y":2}, {"x":8.25, "y":2}, {"x":9.25, "y":2}, {"x":10.25, "y":2}, {"label":"1.75u", "x":11.25, "y":2, "w":1.75}, {"label":"1.25u", "x":0, "y":3, "w":1.25}, {"label":"1u", "x":1.25, "y":3}, {"label":"1.25u", "x":2.25, "y":3, "w":1.25}, {"label":"2.25u", "x":3.5, "y":3, "w":2.25}, {"label":"1u", "x":5.75, "y":3}, {"label":"2.75u", "x":6.75, "y":3, "w":2.75}, {"label":"1.25u", "x":9.5, "y":3, "w":1.25}, {"label":"1u", "x":10.75, "y":3}, {"label":"1.25u", "x":11.75, "y":3, "w":1.25}] @@ -18,4 +16,4 @@ "layout": [{"label":"1.5u", "x":0, "y":0, "w":1.5}, {"x":1.5, "y":0}, {"x":2.5, "y":0}, {"x":3.5, "y":0}, {"x":4.5, "y":0}, {"x":5.5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":10.5, "y":0}, {"label":"1.5u", "x":11.5, "y":0, "w":1.5}, {"label":"1.75u", "x":0, "y":1, "w":1.75}, {"x":1.75, "y":1}, {"x":2.75, "y":1}, {"x":3.75, "y":1}, {"x":4.75, "y":1}, {"x":5.75, "y":1}, {"x":6.75, "y":1}, {"x":7.75, "y":1}, {"x":8.75, "y":1}, {"x":9.75, "y":1}, {"label":"2.25u", "x":10.75, "y":1, "w":2.25}, {"label":"2.25u", "x":0, "y":2, "w":2.25}, {"x":2.25, "y":2}, {"x":3.25, "y":2}, {"x":4.25, "y":2}, {"x":5.25, "y":2}, {"x":6.25, "y":2}, {"x":7.25, "y":2}, {"x":8.25, "y":2}, {"x":9.25, "y":2}, {"x":10.25, "y":2}, {"label":"1.75u", "x":11.25, "y":2, "w":1.75}, {"label":"1.25u", "x":0, "y":3, "w":1.25}, {"label":"1u", "x":1.25, "y":3}, {"label":"1u", "x":2.25, "y":3}, {"label":"6.25u", "x":3.25, "y":3, "w":6.25}, {"label":"1.25u", "x":9.5, "y":3, "w":1.25}, {"label":"1u", "x":10.75, "y":3}, {"label":"1.25u", "x":11.75, "y":3, "w":1.25}] } } -} \ No newline at end of file +} diff --git a/keyboards/coseyfannitutti/romeo/rules.mk b/keyboards/coseyfannitutti/romeo/rules.mk index 51d0b1ef7339..f3f83c1f60ab 100644 --- a/keyboards/coseyfannitutti/romeo/rules.mk +++ b/keyboards/coseyfannitutti/romeo/rules.mk @@ -2,30 +2,18 @@ MCU = atmega328p # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = USBasp +BOOTLOADER = usbasploader # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/cospad/config.h b/keyboards/cospad/config.h deleted file mode 100644 index fd7baf1b8713..000000000000 --- a/keyboards/cospad/config.h +++ /dev/null @@ -1,223 +0,0 @@ -/* -Copyright 2020 - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -#include "config_common.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x4B5C // "KP" -#define PRODUCT_ID 0xB1E5 -#define DEVICE_VER 0x0001 -#define MANUFACTURER KPrepublic -#define PRODUCT Cospad - -/* key matrix size */ -#define MATRIX_ROWS 6 -#define MATRIX_COLS 4 - -/* - * 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 { D0, D1, D2, D3, D4, D5 } -#define MATRIX_COL_PINS { F0, F1, E6, C7 } -#define UNUSED_PINS - -/* COL2ROW, ROW2COL */ -#define DIODE_DIRECTION COL2ROW - -/* - * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. - */ -#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 - -#define LED_NUM_LOCK_PIN B2 -#define LED_PIN_ON_STATE 0 - -#define BACKLIGHT_PIN F7 -// #define BACKLIGHT_BREATHING -#define BACKLIGHT_LEVELS 3 -#define BACKLIGHT_ON_STATE 0 - -#define RGB_DI_PIN F6 -#ifdef RGB_DI_PIN - #define RGBLED_NUM 4 -// #define RGBLIGHT_HUE_STEP 8 -// #define RGBLIGHT_SAT_STEP 8 -// #define RGBLIGHT_VAL_STEP 8 -// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ -#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ -// /*== all animations enable ==*/ - #define RGBLIGHT_ANIMATIONS -// /*== or choose animations ==*/ -// #define RGBLIGHT_EFFECT_BREATHING -// #define RGBLIGHT_EFFECT_RAINBOW_MOOD -// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL -// #define RGBLIGHT_EFFECT_SNAKE -// #define RGBLIGHT_EFFECT_KNIGHT -// #define RGBLIGHT_EFFECT_CHRISTMAS -// #define RGBLIGHT_EFFECT_STATIC_GRADIENT -// #define RGBLIGHT_EFFECT_RGB_TEST -// #define RGBLIGHT_EFFECT_ALTERNATING -// /*== customize breathing effect ==*/ -// /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ -// #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 -// /*==== use exp() and sin() ====*/ -// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 -// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 -#endif - -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 5 - -/* define if matrix has ghost (lacks anti-ghosting diodes) */ -//#define MATRIX_HAS_GHOST - -/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ -#define LOCKING_SUPPORT_ENABLE -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE - -/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. - * This is userful for the Windows task manager shortcut (ctrl+shift+esc). - */ -// #define GRAVE_ESC_CTRL_OVERRIDE - -/* - * Force NKRO - * - * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved - * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the - * makefile for this to work.) - * - * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) - * until the next keyboard reset. - * - * NKRO may prevent your keystrokes from being detected in the BIOS, but it is - * fully operational during normal computer usage. - * - * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) - * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by - * bootmagic, NKRO mode will always be enabled until it is toggled again during a - * power-up. - * - */ -//#define FORCE_NKRO - -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - -/* - * Feature disable options - * These options are also useful to firmware size reduction. - */ - -/* disable debug print */ -//#define NO_DEBUG - -/* disable print */ -//#define NO_PRINT - -/* disable action features */ -//#define NO_ACTION_LAYER -//#define NO_ACTION_TAPPING -//#define NO_ACTION_ONESHOT - -/* disable these deprecated features by default */ -#define NO_ACTION_MACRO -#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - -/* Bootmagic Lite key configuration */ -// #define BOOTMAGIC_LITE_ROW 0 -// #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/cospad/info.json b/keyboards/cospad/info.json deleted file mode 100644 index 1cd197d3fdd9..000000000000 --- a/keyboards/cospad/info.json +++ /dev/null @@ -1,172 +0,0 @@ -{ - "keyboard_name": "Cospad", - "url": "", - "maintainer": "qmk", - "width": 4, - "height": 6, - "layouts": { - "LAYOUT_numpad_6x4": { - "key_count": 21, - "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":0, "y":3}, - {"x":1, "y":3}, - {"x":2, "y":3}, - {"x":3, "y":2, "h":2}, - - {"x":0, "y":4}, - {"x":1, "y":4}, - {"x":2, "y":4}, - - {"x":0, "y":5, "w":2}, - {"x":2, "y":5}, - {"x":3, "y":4, "h":2} - ] - }, - "LAYOUT_gamepad_6x4": { - "key_count": 23, - "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":0, "y":3}, - {"x":1, "y":3}, - {"x":2, "y":3}, - {"x":3, "y":2, "h":2}, - - {"x":0, "y":4}, - {"x":1, "y":4}, - {"x":2, "y":4}, - {"x":3, "y":4}, - - {"x":0, "y":5}, - {"x":1, "y":5}, - {"x":2, "y":5}, - {"x":3, "y":5} - ] - }, - "LAYOUT_ortho_6x4": { - "key_count": 24, - "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}, - - {"x":0, "y":5}, - {"x":1, "y":5}, - {"x":2, "y":5}, - {"x":3, "y":5} - ] - }, - "LAYOUT_numpad_6x4_split_plus_zero": { - "key_count": 23, - "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":0, "y":5}, - {"x":1, "y":5}, - {"x":2, "y":5}, - {"x":3, "y":4, "h":2} - ] - }, - "LAYOUT_numpad_6x4_split_zero": { - "key_count": 22, - "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":0, "y":3}, - {"x":1, "y":3}, - {"x":2, "y":3}, - {"x":3, "y":2, "h":2}, - - {"x":0, "y":4}, - {"x":1, "y":4}, - {"x":2, "y":4}, - - {"x":0, "y":5}, - {"x":1, "y":5}, - {"x":2, "y":5}, - {"x":3, "y":4, "h":2} - ] - } - } -} diff --git a/keyboards/cospad/keymaps/detrus/keymap.c b/keyboards/cospad/keymaps/detrus/keymap.c deleted file mode 100644 index 93f95bb01eff..000000000000 --- a/keyboards/cospad/keymaps/detrus/keymap.c +++ /dev/null @@ -1,367 +0,0 @@ -#include QMK_KEYBOARD_H -#include "led.h" -#include - -#ifdef RGBLIGHT_ENABLE -#include "rgblight.h" -#endif - -// Each layer gets a name for readability, which is then used in the keymap matrix below. -enum cospad_layers { - _QWERTY_LAYER, - _QWERTZ_LAYER, - _COLEMA_LAYER, - _DVORAK_LAYER, - _QWERTY_LOWER_LAYER, - _QWERTZ_LOWER_LAYER, - _COLEMA_LOWER_LAYER, - _DVORAK_LOWER_LAYER, - _RAISE_LAYER, - _ALTER_LAYER, -}; - -// To switch the default layer used for the layout, there are special keycodes. -// Which onces detected below serve to switch it. -enum cospad_keycodes { - QWERTY = SAFE_RANGE, - QWERTZ, - COLEMAK, - DVORAK -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - /* Keymap _QWERTY_LAYER: Default layer - * ,-----------------------. - * | T | G | B | Alt | - * |-----|-----|-----|-----| - * | R | F | V | LOW | - * |-----|-----|-----|-----| - * | E | D | C | | - * |-----|-----|-----| Spc | - * | W | S | X | | - * |-----|-----|-----|-----| - * | Q | A | Z | RAI | - * |-----|-----|-----|-----| - * | Esc | Tab | Sft | Ctl | - * `-----------------------' - * - * And it's LOWER layer - * ,-----------------------. - * | P | ; | / | Alt | - * |-----|-----|-----|-----| - * | O | L | . | LOW | - * |-----|-----|-----|-----| - * | I | K | , | | - * |-----|-----|-----| Ent | - * | U | J | M | | - * |-----|-----|-----|-----| - * | Y | H | N | RAI | - * |-----|-----|-----|-----| - * | Esc | Tab | Sft | Ctl | - * `-----------------------' - */ - [_QWERTY_LAYER] = LAYOUT_gamepad_6x4( - KC_T, KC_G, KC_B, KC_LALT, \ - KC_R, KC_F, KC_V, MO(_QWERTY_LOWER_LAYER),\ - KC_E, KC_D, KC_C, \ - KC_W, KC_S, KC_X, KC_SPACE, \ - KC_Q, KC_A, KC_Z, MO(_RAISE_LAYER),\ - KC_GESC, KC_TAB, KC_LSFT, KC_LCTRL), - [_QWERTY_LOWER_LAYER] = LAYOUT_gamepad_6x4( - KC_P, KC_SCLN, KC_SLSH, KC_LALT, \ - KC_O, KC_L, KC_DOT, _______, \ - KC_I, KC_K, KC_COMM, \ - KC_U, KC_J, KC_M, KC_ENTER, \ - KC_Y, KC_H, KC_N, _______, \ - _______, _______, _______, _______), - - - - /* Keymap _QWERTZ_LAYER: Alternate default layer - * ,-----------------------. - * | T | G | B | Alt | - * |-----|-----|-----|-----| - * | R | F | V | LOW | - * |-----|-----|-----|-----| - * | E | D | C | | - * |-----|-----|-----| Spc | - * | W | S | X | | - * |-----|-----|-----|-----| - * | Q | A | Y | RAI | - * |-----|-----|-----|-----| - * | Esc | Tab | Sft | Ctl | - * `-----------------------' - * - * And it's LOWER layer - * ,-----------------------. - * | P | ; | / | Alt | - * |-----|-----|-----|-----| - * | O | L | > | LOW | - * |-----|-----|-----|-----| - * | I | K | < | | - * |-----|-----|-----| Ent | - * | U | J | M | | - * |-----|-----|-----|-----| - * | Z | H | N | RAI | - * |-----|-----|-----|-----| - * | Esc | Tab | Sft | Ctl | - * `-----------------------' - */ - [_QWERTZ_LAYER] = LAYOUT_gamepad_6x4( - KC_T, KC_G, KC_B, KC_LALT, \ - KC_R, KC_F, KC_V, MO(_QWERTZ_LOWER_LAYER),\ - KC_E, KC_D, KC_C, \ - KC_W, KC_S, KC_X, KC_SPACE, \ - KC_Q, KC_A, KC_Y, MO(_RAISE_LAYER),\ - KC_GESC, KC_TAB, KC_LSFT, KC_LCTRL), - [_QWERTZ_LOWER_LAYER] = LAYOUT_gamepad_6x4( - KC_P, KC_SCLN, KC_SLSH, KC_LALT, \ - KC_O, KC_L, KC_DOT, _______, \ - KC_I, KC_K, KC_COMM, \ - KC_U, KC_J, KC_M, KC_ENTER, \ - KC_Z, KC_H, KC_N, _______, \ - _______, _______, _______, _______), - - - - /* Keymap _COLEMA_LAYER: Alternate default layer - * ,-----------------------. - * | G | D | B | Alt | - * |-----|-----|-----|-----| - * | P | T | V | LOW | - * |-----|-----|-----|-----| - * | F | S | C | | - * |-----|-----|-----| Spc | - * | W | R | X | | - * |-----|-----|-----|-----| - * | Q | A | Z | RAI | - * |-----|-----|-----|-----| - * | Esc | Tab | Sft | Ctl | - * `-----------------------' - * - * And it's LOWER layer - * ,-----------------------. - * | ; | O | / | Alt | - * |-----|-----|-----|-----| - * | Y | I | . | LOW | - * |-----|-----|-----|-----| - * | U | E | , | | - * |-----|-----|-----| Ent | - * | L | N | M | | - * |-----|-----|-----|-----| - * | J | H | K | RAI | - * |-----|-----|-----|-----| - * | Esc | Tab | Sft | Ctl | - * `-----------------------' - */ - [_COLEMA_LAYER] = LAYOUT_gamepad_6x4( - KC_T, KC_D, KC_B, KC_LALT, \ - KC_R, KC_T, KC_V, MO(_COLEMA_LOWER_LAYER),\ - KC_E, KC_S, KC_C, \ - KC_W, KC_R, KC_X, KC_SPACE, \ - KC_Q, KC_A, KC_Z, MO(_RAISE_LAYER),\ - KC_GESC, KC_TAB, KC_LSFT, KC_LCTRL), - [_COLEMA_LOWER_LAYER] = LAYOUT_gamepad_6x4( - KC_SCLN, KC_O, KC_SLSH, _______, \ - KC_Y, KC_I, KC_DOT, _______, \ - KC_U, KC_E, KC_COMM, \ - KC_L, KC_N, KC_M, KC_ENTER, \ - KC_J, KC_H, KC_K, _______, \ - KC_F, KC_G, _______, _______), - - - - /* Keymap _DVORAK_LAYER: Alternate default layer - * ,-----------------------. - * | Y | I | X | Alt | - * |-----|-----|-----|-----| - * | P | U | K | LOW | - * |-----|-----|-----|-----| - * | . | E | J | | - * |-----|-----|-----| Spc | - * | , | O | Q | | - * |-----|-----|-----|-----| - * | ' | A | ; | RAI | - * |-----|-----|-----|-----| - * | Esc | Tab | Sft | Ctl | - * `-----------------------' - * - * And it's LOWER layer - * ,-----------------------. - * | L | S | Z | Alt | - * |-----|-----|-----|-----| - * | R | N | V | LOW | - * |-----|-----|-----|-----| - * | C | T | W | | - * |-----|-----|-----| Ent | - * | G | H | M | | - * |-----|-----|-----|-----| - * | F | D | B | RAI | - * |-----|-----|-----|-----| - * | Esc | Tab | Sft | Ctl | - * `-----------------------' - */ - [_DVORAK_LAYER] = LAYOUT_gamepad_6x4( - KC_Y, KC_I, KC_X, KC_LALT, \ - KC_P, KC_U, KC_K, MO(_DVORAK_LOWER_LAYER),\ - KC_DOT, KC_E, KC_J, \ - KC_COMM, KC_O, KC_A, KC_SPACE, \ - KC_QUOT, KC_A, KC_SCLN, MO(_RAISE_LAYER),\ - KC_GESC, KC_TAB, KC_LSFT, KC_LCTRL), - [_DVORAK_LOWER_LAYER] = LAYOUT_gamepad_6x4( - KC_L, KC_S, KC_Z, KC_LALT, \ - KC_R, KC_N, KC_V, _______, \ - KC_C, KC_T, KC_W, \ - KC_G, KC_H, KC_M, KC_ENTER,\ - KC_F, KC_D, KC_B, _______, \ - _______, _______, _______, _______), - - - - /* Keymap _RAISE_LAYER: Additional layer to access more - * ,-----------------------. - * | 5 | 0 | del | Alt | - * |-----|-----|-----|-----| - * | 4 | 9 | -> | LOW | - * |-----|-----|-----|-----| - * | 3 | 8 | <- | | - * |-----|-----|-----| Spc | - * | 2 | 7 | -> | | - * |-----|-----|-----|-----| - * | 1 | 6 | <- | RAI | - * |-----|-----|-----|-----| - * | Esc | Tab | Sft | Ctl | - * `-----------------------' - */ - [_RAISE_LAYER] = LAYOUT_gamepad_6x4( - KC_5, KC_0, KC_BSPC, _______, \ - KC_4, KC_9, KC_RIGHT, _______, \ - KC_3, KC_8, KC_UP, \ - KC_2, KC_7, KC_DOWN, _______, \ - KC_1, KC_6, KC_LEFT, _______, \ - _______, _______, _______, _______), - - - - /* Keymap _ALTER_LAYER: Function layer used to control the Leds - * and use media buttons - * ,----------------------------------------. - * | Val Dec | Bl Toggle | Qwertz | Super | - * |---------|------------|---------|-------| - * | Val Inc | Bl Off | Qwerty | | - * |---------|------------|---------|-------| - * | Sat Dec | Bl On | Colemak | | - * |---------|------------|---------| | - * | Sat Inc | RGB Toggle | Dvorak | | - * |---------|------------|---------|-------| - * | Hue Dec | RGB Next | Vol Dwn | | - * |---------|------------|---------|-------| - * | Hue Inc | RGB Prev | Vol Up | Reset | - * `----------------------------------------' - */ - [_ALTER_LAYER] = LAYOUT_gamepad_6x4( - RGB_VAD, BL_TOGG, QWERTZ, KC_LGUI, \ - RGB_VAI, BL_OFF, QWERTY, _______, \ - RGB_SAD, BL_ON, COLEMAK, \ - RGB_SAI, RGB_TOG, DVORAK, _______, \ - RGB_HUD, RGB_MOD, KC_VOLD, _______, \ - RGB_HUI, RGB_RMOD, KC_VOLU, RESET), -}; - -// Makes sure to update the good tri-layer if a layer changes -uint32_t layer_state_set_user(uint32_t state) { - switch (biton32(default_layer_state)) { - case _QWERTY_LAYER: - state = update_tri_layer_state(state, _RAISE_LAYER, _QWERTY_LOWER_LAYER, _ALTER_LAYER); - break; - case _QWERTZ_LAYER: - state = update_tri_layer_state(state, _RAISE_LAYER, _QWERTZ_LOWER_LAYER, _ALTER_LAYER); - break; - case _COLEMA_LAYER: - state = update_tri_layer_state(state, _RAISE_LAYER, _COLEMA_LOWER_LAYER, _ALTER_LAYER); - break; - case _DVORAK_LAYER: - state = update_tri_layer_state(state, _RAISE_LAYER, _DVORAK_LOWER_LAYER, _ALTER_LAYER); - break; - } - return state; -} - -// Makes the tri-layer -uint32_t default_layer_state_set_kb(uint32_t state) { - switch (biton32(state)) { - case _QWERTY_LAYER: - state = update_tri_layer_state(state, _RAISE_LAYER, _QWERTZ_LOWER_LAYER, _ALTER_LAYER); - state = update_tri_layer_state(state, _RAISE_LAYER, _COLEMA_LOWER_LAYER, _ALTER_LAYER); - state = update_tri_layer_state(state, _RAISE_LAYER, _DVORAK_LOWER_LAYER, _ALTER_LAYER); - layer_move(_QWERTY_LAYER); - break; - case _QWERTZ_LAYER: - state = update_tri_layer_state(state, _RAISE_LAYER, _QWERTY_LOWER_LAYER, _ALTER_LAYER); - state = update_tri_layer_state(state, _RAISE_LAYER, _COLEMA_LOWER_LAYER, _ALTER_LAYER); - state = update_tri_layer_state(state, _RAISE_LAYER, _DVORAK_LOWER_LAYER, _ALTER_LAYER); - layer_move(_QWERTZ_LAYER); - break; - case _COLEMA_LAYER: - state = update_tri_layer_state(state, _RAISE_LAYER, _QWERTY_LOWER_LAYER, _ALTER_LAYER); - state = update_tri_layer_state(state, _RAISE_LAYER, _QWERTZ_LOWER_LAYER, _ALTER_LAYER); - state = update_tri_layer_state(state, _RAISE_LAYER, _DVORAK_LOWER_LAYER, _ALTER_LAYER); - layer_move(_COLEMA_LAYER); - break; - case _DVORAK_LAYER: - state = update_tri_layer_state(state, _RAISE_LAYER, _QWERTY_LOWER_LAYER, _ALTER_LAYER); - state = update_tri_layer_state(state, _RAISE_LAYER, _QWERTZ_LOWER_LAYER, _ALTER_LAYER); - state = update_tri_layer_state(state, _RAISE_LAYER, _COLEMA_LOWER_LAYER, _ALTER_LAYER); - layer_move(_DVORAK_LAYER); - break; - } - return state; -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case BL_TOGG: - if (record->event.pressed) { - cospad_bl_led_togg(); - } - return false; - case BL_ON: - if (record->event.pressed) { - cospad_bl_led_on(); - } - return false; - case BL_OFF: - if (record->event.pressed) { - cospad_bl_led_off(); - } - return false; - case QWERTY: - if (record->event.pressed) { - set_single_persistent_default_layer(_QWERTY_LAYER); - print("switched to QWERTY layout\n"); - } - return false; - break; - case QWERTZ: - if (record->event.pressed) { - set_single_persistent_default_layer(_QWERTZ_LAYER); - } - return false; - break; - case COLEMAK: - if (record->event.pressed) { - set_single_persistent_default_layer(_COLEMA_LAYER); - } - return false; - break; - case DVORAK: - if (record->event.pressed) { - set_single_persistent_default_layer(_DVORAK_LAYER); - } - return false; - break; - default: - return true; - } -} diff --git a/keyboards/cospad/readme.md b/keyboards/cospad/readme.md deleted file mode 100644 index 9bb3dfdc0ee2..000000000000 --- a/keyboards/cospad/readme.md +++ /dev/null @@ -1,18 +0,0 @@ -# Cospad - -A DIY keypad kit sold by KPRepublic, runs TKG natively. - -* Keyboard Maintainer: QMK Community -* Hardware Supported: Cospad PCB -* Hardware Availability: [KPrepublic on Aliexpress](https://aliexpress.com/item/cospad-Custom-Mechanical-Keyboard-Kit-up-tp-24-keys-Supports-TKG-TOOLS-Underglow-RGB-PCB-20/32818383873.html) - -Supported Layouts: - -![Numpad layouts](https://i.imgur.com/t03lXJ4.png) -![Ortholinear layouts](https://i.imgur.com/mliUcCc.png) - -Make example for this keyboard (after setting up your build environment): - - make cospad: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/cospad/rules.mk b/keyboards/cospad/rules.mk deleted file mode 100644 index fd79af01f382..000000000000 --- a/keyboards/cospad/rules.mk +++ /dev/null @@ -1,32 +0,0 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = atmel-dfu - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration -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 = yes # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 - -LAYOUTS = numpad_6x4 ortho_6x4 diff --git a/keyboards/cozykeys/bloomer/v2/info.json b/keyboards/cozykeys/bloomer/v2/info.json index 113515811777..7e268a4640e8 100644 --- a/keyboards/cozykeys/bloomer/v2/info.json +++ b/keyboards/cozykeys/bloomer/v2/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Bloomer", "url": "https://github.com/cozykeys/bloomer", "maintainer": "pcewing", - "width": 15, - "height": 6, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/cozykeys/bloomer/v2/rules.mk b/keyboards/cozykeys/bloomer/v2/rules.mk index d23e95512672..df5ec72db4a0 100644 --- a/keyboards/cozykeys/bloomer/v2/rules.mk +++ b/keyboards/cozykeys/bloomer/v2/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/cozykeys/bloomer/v3/info.json b/keyboards/cozykeys/bloomer/v3/info.json index 6d547acf1fec..47d74269d23d 100644 --- a/keyboards/cozykeys/bloomer/v3/info.json +++ b/keyboards/cozykeys/bloomer/v3/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Bloomer", "url": "https://github.com/cozykeys/bloomer", "maintainer": "pcewing", - "width": 15, - "height": 6, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/cozykeys/bloomer/v3/rules.mk b/keyboards/cozykeys/bloomer/v3/rules.mk index 806a19af3853..4d5f68b1d3fe 100644 --- a/keyboards/cozykeys/bloomer/v3/rules.mk +++ b/keyboards/cozykeys/bloomer/v3/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/cozykeys/speedo/v2/info.json b/keyboards/cozykeys/speedo/v2/info.json index 714de357e303..775511dda1df 100644 --- a/keyboards/cozykeys/speedo/v2/info.json +++ b/keyboards/cozykeys/speedo/v2/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Speedo", "url": "https://github.com/cozykeys/speedo", "maintainer": "pcewing", - "width": 14, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/cozykeys/speedo/v2/rules.mk b/keyboards/cozykeys/speedo/v2/rules.mk index 53127aafba50..2f96bf0296ea 100644 --- a/keyboards/cozykeys/speedo/v2/rules.mk +++ b/keyboards/cozykeys/speedo/v2/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = halfkay # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/cozykeys/speedo/v3/info.json b/keyboards/cozykeys/speedo/v3/info.json index 079f5de46f78..8f2e2674bf90 100644 --- a/keyboards/cozykeys/speedo/v3/info.json +++ b/keyboards/cozykeys/speedo/v3/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Speedo", "url": "https://github.com/cozykeys/speedo", "maintainer": "pcewing", - "width": 14, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/cozykeys/speedo/v3/rules.mk b/keyboards/cozykeys/speedo/v3/rules.mk index 15eb4da91910..64bbb9ab4479 100644 --- a/keyboards/cozykeys/speedo/v3/rules.mk +++ b/keyboards/cozykeys/speedo/v3/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/cradio/config.h b/keyboards/cradio/config.h new file mode 100644 index 000000000000..2d76de6a8e3c --- /dev/null +++ b/keyboards/cradio/config.h @@ -0,0 +1,83 @@ +/* Copyright 2018-2021 + * ENDO Katsuhiro + * David Philip Barr <@davidphilipbarr> + * Pierre Chevalier + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xC88B +#define PRODUCT_ID 0x3988 +#define DEVICE_VER 0x0001 +#define MANUFACTURER DPB +#define PRODUCT Cradio + +/* key matrix size */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 5 + +/* + * 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) + * NO_DIODE = switches are directly connected to AVR pins + * +*/ +#define DIRECT_PINS { \ + { E6, F7, F6, F5, F4 }, \ + { B1, B3, B2, B6, D3 }, \ + { D1, D0, D4, C6, D7 }, \ + { B4, B5, NO_PIN, NO_PIN, NO_PIN } \ +} + +#define DIRECT_PINS_RIGHT { \ + { F4, F5, F6, F7, E6 }, \ + { D3, B6, B2, B3, B1 }, \ + { D7, C6, D4, D0, D1 }, \ + { B5, B4, NO_PIN, NO_PIN, NO_PIN } \ +} + +#define UNUSED_PINS + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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 + +/* Serial settings */ +#define USE_SERIAL +/* serial.c configuration for split keyboard */ +#define SOFT_SERIAL_PIN D2 + +/* Split handedness */ +#define EE_HANDS + +/* Top left key on left half */ +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 +/* Top right key on right half */ +#define BOOTMAGIC_LITE_ROW_RIGHT 4 +#define BOOTMAGIC_LITE_COLUMN_RIGHT 4 diff --git a/keyboards/cradio/cradio.c b/keyboards/cradio/cradio.c new file mode 100644 index 000000000000..76c64cbb8cc1 --- /dev/null +++ b/keyboards/cradio/cradio.c @@ -0,0 +1,38 @@ +/* Copyright 2018-2021 + * ENDO Katsuhiro + * David Philip Barr <@davidphilipbarr> + * Pierre Chevalier + * @filterpaper + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "cradio.h" + +#ifdef SWAP_HANDS_ENABLE +__attribute__ ((weak)) +const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { + // Left + {{4, 4}, {3, 4}, {2, 4}, {1, 4}, {0, 4}}, + {{4, 5}, {3, 5}, {2, 5}, {1, 5}, {0, 5}}, + {{4, 6}, {3, 6}, {2, 6}, {1, 6}, {0, 6}}, + {{1, 7}, {0, 7}, {2, 7}, {3, 7}, {4, 7}}, + // Right + {{4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0}}, + {{4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1}}, + {{4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2}}, + {{1, 3}, {0, 3}, {2, 3}, {3, 3}, {4, 3}} +}; +#endif + diff --git a/keyboards/cradio/cradio.h b/keyboards/cradio/cradio.h new file mode 100644 index 000000000000..29e81ef9b8da --- /dev/null +++ b/keyboards/cradio/cradio.h @@ -0,0 +1,50 @@ +/* Copyright 2018-2021 + * ENDO Katsuhiro + * David Philip Barr <@davidphilipbarr> + * Pierre Chevalier + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "quantum.h" + +/* This a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + +// readability +#define ___ KC_NO + +#define LAYOUT( \ + 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, R16, R17 \ + ) \ + { \ + { L01, L02, L03, L04, L05 }, \ + { L06, L07, L08, L09, L10 }, \ + { L11, L12, L13, L14, L15 }, \ + { L16, L17, ___, ___, ___ }, \ + { R01, R02, R03, R04, R05 }, \ + { R06, R07, R08, R09, R10 }, \ + { R11, R12, R13, R14, R15 }, \ + { R16, R17, ___, ___, ___ } \ + } + diff --git a/keyboards/cradio/info.json b/keyboards/cradio/info.json new file mode 100644 index 000000000000..c553810656d1 --- /dev/null +++ b/keyboards/cradio/info.json @@ -0,0 +1,52 @@ +{ + "keyboard_name": "Cradio", + "url": "https://github.com/davidphilipbarr/Sweep", + "maintainer": "@davidphilipbarr", + "layouts": { + "LAYOUT": { + "layout": [ + {"x": 0, "y": 1.27}, + {"x": 1, "y": 0.31}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0.28}, + {"x": 4, "y": 0.42}, + + {"x": 8, "y": 0.42}, + {"x": 9, "y": 0.28}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0.31}, + {"x": 12, "y": 1.27}, + + {"x": 0, "y": 2.27}, + {"x": 1, "y": 1.31}, + {"x": 2, "y": 1}, + {"x": 3, "y": 1.28}, + {"x": 4, "y": 1.42}, + + {"x": 8, "y": 1.42}, + {"x": 9, "y": 1.28}, + {"x": 10, "y": 1}, + {"x": 11, "y": 1.31}, + {"x": 12, "y": 2.27}, + + {"x": 0, "y": 3.27}, + {"x": 1, "y": 2.31}, + {"x": 2, "y": 2}, + {"x": 3, "y": 2.28}, + {"x": 4, "y": 2.42}, + + {"x": 8, "y": 2.42}, + {"x": 9, "y": 2.28}, + {"x": 10, "y": 2}, + {"x": 11, "y": 2.31}, + {"x": 12, "y": 3.27}, + + {"x": 4, "y": 3.9}, + {"x": 5, "y": 3.7}, + + {"x": 7, "y": 3.7}, + {"x": 8, "y": 3.9} + ] + } + } +} diff --git a/keyboards/cradio/keymaps/default/config.h b/keyboards/cradio/keymaps/default/config.h new file mode 100644 index 000000000000..dd469ca5533e --- /dev/null +++ b/keyboards/cradio/keymaps/default/config.h @@ -0,0 +1,39 @@ +/* Copyright 2018-2021 + * ENDO Katsuhiro + * David Philip Barr <@davidphilipbarr> + * Pierre Chevalier + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +// Defaults for usable home row mods +#define TAPPING_TERM 230 +#define IGNORE_MOD_TAP_INTERRUPT + +// Improved mouse key defaults +// Delay between pressing a key and cursor movement +#define MOUSEKEY_DELAY 16 +// Time between cursor movements in milliseconds +#define MOUSEKEY_INTERVAL 16 +// Step size for acceleration +#define MOUSEKEY_MOVE_DELTA 9 +#define MOUSEKEY_MAX_SPEED 12 +#define MOUSEKEY_TIME_TO_MAX 70 +#define MOUSEKEY_WHEEL_DELAY 16 +#define MOUSEKEY_WHEEL_INTERVAL 30 +#define MOUSEKEY_WHEEL_MAX_SPEED 10 +#define MOUSEKEY_WHEEL_TIME_TO_MAX 95 + diff --git a/keyboards/cradio/keymaps/default/keymap.c b/keyboards/cradio/keymaps/default/keymap.c new file mode 100644 index 000000000000..bb7e2d35e68f --- /dev/null +++ b/keyboards/cradio/keymaps/default/keymap.c @@ -0,0 +1,51 @@ +/* Copyright 2018-2021 + * ENDO Katsuhiro + * David Philip Barr <@davidphilipbarr> + * Pierre Chevalier + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +/* Base layer 0 layout uses home row mods. See the following guide for details: + * https://precondition.github.io/home-row-mods + */ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + SFT_T(KC_A),ALT_T(KC_S),CTL_T(KC_D),GUI_T(KC_F), KC_G, KC_H, GUI_T(KC_J),CTL_T(KC_K),ALT_T(KC_L),SFT_T(KC_SCLN), + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, + LT(2,KC_TAB), KC_ENT, KC_SPC, LT(1,KC_BSPC) + ), + [1] = LAYOUT( + _______, KC_1, KC_2, KC_3, KC_VOLU, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_DQUO, + _______, KC_4, KC_5, KC_6, KC_VOLD, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_QUOT, + KC_CAPS, KC_7, KC_8, KC_9, KC_0, _______, _______, _______, _______, _______, + MO(3), KC_GESC, _______, _______ + ), + [2] = LAYOUT( + _______, KC_LBRC, KC_LCBR, KC_RCBR, _______, KC_CIRC, KC_LPRN, KC_RPRN, KC_RBRC, KC_TILD, + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_AMPR, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, + _______, _______, _______, _______, _______, KC_ASTR, KC_UNDS, KC_PLUS, KC_PIPE, _______, + _______, _______, KC_DEL, MO(3) + ), + [3] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F10, _______, KC_WH_U, KC_WH_D, _______, RESET, + _______, KC_F4, KC_F5, KC_F6, KC_F11, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_INS, + _______, KC_F7, KC_F8, KC_F9, KC_F12, _______, KC_BTN1, KC_BTN2, _______, _______, + _______, _______, _______, _______ + ) +}; diff --git a/keyboards/cradio/readme.md b/keyboards/cradio/readme.md new file mode 100644 index 000000000000..e538a417dc92 --- /dev/null +++ b/keyboards/cradio/readme.md @@ -0,0 +1,60 @@ +# Cradio keyboards + +![Cradio](https://github.com/davidphilipbarr/hypergolic/raw/main/hypergarlic/ht.png) + +Cradio are low-profile 34-key split-keyboards designed by [@davidphilipbarr](https://github.com/davidphilipbarr), with no diodes and direct micro-controller pin wiring. + +## Keyboard Info + +* Keyboard Maintainer: [davidphilipbarr](https://github.com/davidphilipbarr) +* Hardware Supported: + * [Cradio](https://github.com/davidphilipbarr/36keys/tree/master/34Keys) + * [Sweep](https://github.com/davidphilipbarr/Sweep) + * [Hypergarlic](https://github.com/davidphilipbarr/hypergolic/tree/main/hypergarlic) + * [Paroxysm](https://github.com/davidphilipbarr/hypergolic/tree/main/paroxysm) + * Variants of the same 34-key direct pin PCB +* Hardware Availability: order PCBs with gerber files from the repository + +Make example for this keyboard (after setting up your build environment): + + make cradio: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). + +## Setting Handedness + +Firmware uses [handedness by EEPROM](https://docs.qmk.fm/#/feature_split_keyboard?id=handedness-by-eeprom) as default and it must be *configured once* on each side. The make commands are: + + make cradio:default:dfu-split-left + make cradio:default:dfu-split-right + +[QMK Toolbox](http://qmk.fm/toolbox) can also be used to set EEPROM handedness. Place the controller in bootloader mode and select menu option Tools -> EEPROM -> Set Left/Right Hand + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the top left key on the left half (or the top right right key on the right half) and plug in the controller on that side. +* **Physical reset button**: Briefly press the reset button soldered on the PCB. +* **Keycode in layout**: Press the key mapped to `RESET` if it is configured. + +## Swapped Pins + +If you have one of the PCB variant with swapped letters `Q` and `B` / `P` and `N`, add the following code to your keymap's `config.h` to swap pins `E6` and `D7` in the firmware: +```c +#undef DIRECT_PINS +#define DIRECT_PINS { \ + { D7, F7, F6, F5, F4 }, \ + { B1, B3, B2, B6, D3 }, \ + { D1, D0, D4, C6, E6 }, \ + { B4, B5, NO_PIN, NO_PIN, NO_PIN } \ +} +#undef DIRECT_PINS_RIGHT +#define DIRECT_PINS_RIGHT { \ + { F4, F5, F6, F7, D7 }, \ + { D3, B6, B2, B3, B1 }, \ + { E6, C6, D4, D0, D1 }, \ + { B5, B4, NO_PIN, NO_PIN, NO_PIN } \ +} +``` + diff --git a/keyboards/cradio/rules.mk b/keyboards/cradio/rules.mk new file mode 100644 index 000000000000..93f9c1a13d3a --- /dev/null +++ b/keyboards/cradio/rules.mk @@ -0,0 +1,21 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +UNICODE_ENABLE = yes # Unicode +AUDIO_ENABLE = no # Audio output +SPLIT_KEYBOARD = yes # Use shared split_common code diff --git a/keyboards/craftwalk/config.h b/keyboards/craftwalk/config.h index d7f9f8a309df..484a2e13aa8d 100644 --- a/keyboards/craftwalk/config.h +++ b/keyboards/craftwalk/config.h @@ -121,59 +121,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. diff --git a/keyboards/craftwalk/info.json b/keyboards/craftwalk/info.json index 764af5b6485d..0d854c533324 100644 --- a/keyboards/craftwalk/info.json +++ b/keyboards/craftwalk/info.json @@ -2,8 +2,6 @@ "keyboard_name": "craftwalk", "url": "https://github.com/sotoba/craftwalk", "maintainer": "sotoba", - "width": 7.25, - "height": 4.5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/craftwalk/keymaps/default/keymap.c b/keyboards/craftwalk/keymaps/default/keymap.c index 40c951447566..f02f9c975f20 100644 --- a/keyboards/craftwalk/keymaps/default/keymap.c +++ b/keyboards/craftwalk/keymaps/default/keymap.c @@ -22,15 +22,15 @@ enum layer_names { _ADJUST }; -#define KC_NUM MO(_NUM) -#define KC_ADJ MO(_ADJUST) +#define MO_NUM MO(_NUM) +#define MO_ADJ MO(_ADJUST) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Base */ [_BASE] = LAYOUT( KC_Q, KC_W, KC_E, KC_LCTL, KC_A, KC_S, KC_D, - KC_LSFT, KC_ADJ, KC_WH_U, KC_WH_D, KC_F, KC_NUM, KC_SPC + KC_LSFT, MO_ADJ, KC_WH_U, KC_WH_D, KC_F, MO_NUM, KC_SPC ), /* Number */ [_NUM] = LAYOUT( diff --git a/keyboards/craftwalk/rules.mk b/keyboards/craftwalk/rules.mk index f5b6bc72c0c8..37ffff6fc0e7 100644 --- a/keyboards/craftwalk/rules.mk +++ b/keyboards/craftwalk/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = no # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/crawlpad/info.json b/keyboards/crawlpad/info.json index b243ead304d8..4613a4a5a01d 100644 --- a/keyboards/crawlpad/info.json +++ b/keyboards/crawlpad/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Crawlpad", "url": "", "maintainer": "colemarkham", - "width": 4, - "height": 4, "layouts": { "LAYOUT_ortho_4x4": { "layout": [ diff --git a/keyboards/crawlpad/keymaps/default/keymap.c b/keyboards/crawlpad/keymaps/default/keymap.c index ec985739f11a..c81bb56bd5d1 100755 --- a/keyboards/crawlpad/keymaps/default/keymap.c +++ b/keyboards/crawlpad/keymaps/default/keymap.c @@ -76,40 +76,3 @@ void matrix_init_user(void) { DDRB |= (1 << 4) | (1 << 5) | (1 << 6) | (1 << 7); PORTB &= ~(1 << 4) & ~(1 << 5) & ~(1 << 6) & ~(1 << 7); } - -void matrix_scan_user(void) { -} - -void led_set_user(uint8_t usb_led) { - - if (usb_led & (1 << USB_LED_NUM_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_CAPS_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_SCROLL_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_COMPOSE)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_KANA)) { - - } else { - - } - -} diff --git a/keyboards/crawlpad/rules.mk b/keyboards/crawlpad/rules.mk index 1d4019b7af3b..2029dad72749 100755 --- a/keyboards/crawlpad/rules.mk +++ b/keyboards/crawlpad/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 = 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 # [Crawlpad] Custom backlighting code is used, so this should not be enabled AUDIO_ENABLE = no # [Crawlpad] This can be enabled if a speaker is connected to the expansion port. Not compatible with RGBLIGHT below diff --git a/keyboards/crazy_keyboard_68/info.json b/keyboards/crazy_keyboard_68/info.json index fa9546a1b124..38c3025ec8e1 100644 --- a/keyboards/crazy_keyboard_68/info.json +++ b/keyboards/crazy_keyboard_68/info.json @@ -2,8 +2,6 @@ "keyboard_name": "crazy_keyboard_68", "url": "", "maintainer": "chent7", - "width": 15, - "height": 5, "layouts": { "LAYOUT_65_ansi": { "layout": [ diff --git a/keyboards/crazy_keyboard_68/rules.mk b/keyboards/crazy_keyboard_68/rules.mk index 5a51c94e72e3..d8e68a51a818 100644 --- a/keyboards/crazy_keyboard_68/rules.mk +++ b/keyboards/crazy_keyboard_68/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LAYOUTS = 65_ansi diff --git a/keyboards/crbn/info.json b/keyboards/crbn/info.json index 7d980ef0d3ee..f9369ec2cd43 100644 --- a/keyboards/crbn/info.json +++ b/keyboards/crbn/info.json @@ -2,8 +2,6 @@ "keyboard_name": "CRBN", "url": "polarityworks.com", "maintainer": "qmk", - "width": 12, - "height": 4, "layouts": { "LAYOUT_crbn_1x2u": { "layout": [ diff --git a/keyboards/crbn/rules.mk b/keyboards/crbn/rules.mk index 9e47502904b9..22df224eb544 100644 --- a/keyboards/crbn/rules.mk +++ b/keyboards/crbn/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes diff --git a/keyboards/crin/config.h b/keyboards/crin/config.h new file mode 100644 index 000000000000..4561a05df0ac --- /dev/null +++ b/keyboards/crin/config.h @@ -0,0 +1,38 @@ +/* +Copyright 2020 KnoblesseOblige + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x6400 +#define PRODUCT_ID 0xCC11 +#define DEVICE_VER 0x0001 + +#define MANUFACTURER Bachoo +#define PRODUCT Crin + +#define MATRIX_ROWS 5 +#define MATRIX_COLS 17 + +#define MATRIX_COL_PINS { B11, B10, B2, B1, B0, A7, A6, A5, A4, A3, B9, B8, B7, B6, B5, B4, B3 } +#define MATRIX_ROW_PINS { A9, A8, B15, B14, B13 } +#define DIODE_DIRECTION COL2ROW + +#define DEBOUNCE 5 + +#define LOCKING_SUPPORT_ENABLE +#define LOCKING_RESYNC_ENABLE diff --git a/keyboards/crin/crin.c b/keyboards/crin/crin.c new file mode 100644 index 000000000000..dd7d9383083b --- /dev/null +++ b/keyboards/crin/crin.c @@ -0,0 +1,18 @@ +/* +Copyright 2020 KnoblesseOblige + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "crin.h" diff --git a/keyboards/crin/crin.h b/keyboards/crin/crin.h new file mode 100644 index 000000000000..160fc0b393a4 --- /dev/null +++ b/keyboards/crin/crin.h @@ -0,0 +1,112 @@ +/* +Copyright 2020 KnoblesseOblige + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +#define kxx KC_NO + +/* + * ┌───────┐ + * 2u Backspace │0d │ + * └───────┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │2d │ │0e │0f │0g │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ ┌─────┐ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │ │1e │1f │1g │ │ │ ISO + * 2.25u ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ ┌──┴┐2c │ Enter + * LShift │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │ │1d │ │ + * ┌────────┐ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ ┌─┴───┴────┤ + * │30 │ │30 │41 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3d │ │3f │ │3b │ 2.75u RShift + * └────────┘ ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ ┌───┼───┼───┐ └──────────┘ + * │40 │42 │43 │ 45 │49 │4a │4b │4d │ │4e │4f │4g │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ + * ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐ + * │40 │42 │43 │ 45 │4a │4b │4d │ Tsangan + * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ + */ + +#define LAYOUT_all( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k2d, 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, \ + k30, k41, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3f, \ + k40, k42, k43, k45, k49, k4a, k4b, k4d, 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, kxx, kxx, kxx }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, kxx, k3d, kxx, k3f, kxx }, \ + { k40, k41, k42, k43, kxx, k45, kxx, kxx, kxx, k49, k4a, k4b, kxx, k4d, k4e, k4f, k4g } \ +} + +#define LAYOUT_ansi( \ + 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, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3f, \ + k40, k42, k43, k45, k49, k4a, k4b, k4d, 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, kxx, kxx, kxx, kxx }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, kxx, kxx, kxx, k3f, kxx }, \ + { k40, kxx, k42, k43, kxx, k45, kxx, kxx, kxx, k49, k4a, k4b, kxx, k4d, k4e, k4f, k4g } \ +} + +#define LAYOUT_ansi_tsangan( \ + 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, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3f, \ + k40, k42, k43, k45, k4a, k4b, k4d, 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, kxx, kxx, kxx, kxx }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, kxx, kxx, kxx, k3f, kxx }, \ + { k40, kxx, k42, k43, kxx, k45, kxx, kxx, kxx, kxx, k4a, k4b, kxx, k4d, k4e, k4f, k4g } \ +} + +#define LAYOUT_iso( \ + 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, k1e, k1f, k1g, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k1d, k2c, \ + k30, k41, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3f, \ + k40, k42, k43, k45, k49, k4a, k4b, k4d, 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, kxx, kxx, kxx, kxx }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, kxx, kxx, kxx, k3f, kxx }, \ + { k40, k41, k42, k43, kxx, k45, kxx, kxx, kxx, k49, k4a, k4b, kxx, k4d, k4e, k4f, k4g } \ +} + +#define LAYOUT_iso_tsangan( \ + 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, k1e, k1f, k1g, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k1d, k2c, \ + k30, k41, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3f, \ + k40, k42, k43, k45, k4a, k4b, k4d, 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, kxx, kxx, kxx, kxx }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, kxx, kxx, kxx, k3f, kxx }, \ + { k40, k41, k42, k43, kxx, k45, kxx, kxx, kxx, kxx, k4a, k4b, kxx, k4d, k4e, k4f, k4g } \ +} diff --git a/keyboards/crin/info.json b/keyboards/crin/info.json new file mode 100644 index 000000000000..94f57c48bf4b --- /dev/null +++ b/keyboards/crin/info.json @@ -0,0 +1,409 @@ +{ + "keyboard_name": "Crin", + "url": "https://bachoo.com", + "maintainer": "KnoblesseOblige", + "layout_aliases": { + "LAYOUT_default": "LAYOUT_all", + "LAYOUT_tsangan": "LAYOUT_ansi_tsangan" + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"!", "x":1, "y":0}, + {"label":"@", "x":2, "y":0}, + {"label":"#", "x":3, "y":0}, + {"label":"$", "x":4, "y":0}, + {"label":"%", "x":5, "y":0}, + {"label":"^", "x":6, "y":0}, + {"label":"&", "x":7, "y":0}, + {"label":"*", "x":8, "y":0}, + {"label":"(", "x":9, "y":0}, + {"label":")", "x":10, "y":0}, + {"label":"_", "x":11, "y":0}, + {"label":"+", "x":12, "y":0}, + {"label":"|", "x":13, "y":0}, + {"label":"~", "x":14, "y":0}, + {"label":"Insert", "x":15.5, "y":0}, + {"label":"Home", "x":16.5, "y":0}, + {"label":"Page Up", "x":17.5, "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":"Delete", "x":15.5, "y":1}, + {"label":"End", "x":16.5, "y":1}, + {"label":"Page Down", "x":17.5, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":":", "x":10.75, "y":2}, + {"label":"\"", "x":11.75, "y":2}, + {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + + {"label":"Shift", "x":0, "y":3, "w":1.25}, + {"label":"|", "x":1.25, "y":3}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"Fn", "x":14, "y":3}, + {"label":"Up", "x":16.5, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"GUI", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space", "x":3.75, "y":4, "w":6.25}, + {"label":"Alt", "x":10, "y":4, "w":1.25}, + {"label":"GUI", "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}, + {"label":"Left", "x":15.5, "y":4}, + {"label":"Down", "x":16.5, "y":4}, + {"label":"Right", "x":17.5, "y":4} + ] + }, + "LAYOUT_ansi": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"!", "x":1, "y":0}, + {"label":"@", "x":2, "y":0}, + {"label":"#", "x":3, "y":0}, + {"label":"$", "x":4, "y":0}, + {"label":"%", "x":5, "y":0}, + {"label":"^", "x":6, "y":0}, + {"label":"&", "x":7, "y":0}, + {"label":"*", "x":8, "y":0}, + {"label":"(", "x":9, "y":0}, + {"label":")", "x":10, "y":0}, + {"label":"_", "x":11, "y":0}, + {"label":"+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + {"label":"Insert", "x":15.5, "y":0}, + {"label":"Home", "x":16.5, "y":0}, + {"label":"Page Up", "x":17.5, "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":"Delete", "x":15.5, "y":1}, + {"label":"End", "x":16.5, "y":1}, + {"label":"Page Down", "x":17.5, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":":", "x":10.75, "y":2}, + {"label":"\"", "x":11.75, "y":2}, + {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + + {"label":"Shift", "x":0, "y":3, "w":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":2.75}, + {"label":"Up", "x":16.5, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"GUI", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space", "x":3.75, "y":4, "w":6.25}, + {"label":"Alt", "x":10, "y":4, "w":1.25}, + {"label":"GUI", "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}, + {"label":"Left", "x":15.5, "y":4}, + {"label":"Down", "x":16.5, "y":4}, + {"label":"Right", "x":17.5, "y":4} + ] + }, + "LAYOUT_ansi_tsangan": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"!", "x":1, "y":0}, + {"label":"@", "x":2, "y":0}, + {"label":"#", "x":3, "y":0}, + {"label":"$", "x":4, "y":0}, + {"label":"%", "x":5, "y":0}, + {"label":"^", "x":6, "y":0}, + {"label":"&", "x":7, "y":0}, + {"label":"*", "x":8, "y":0}, + {"label":"(", "x":9, "y":0}, + {"label":")", "x":10, "y":0}, + {"label":"_", "x":11, "y":0}, + {"label":"+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + {"label":"Insert", "x":15.5, "y":0}, + {"label":"Home", "x":16.5, "y":0}, + {"label":"Page Up", "x":17.5, "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":"Delete", "x":15.5, "y":1}, + {"label":"End", "x":16.5, "y":1}, + {"label":"Page Down", "x":17.5, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":":", "x":10.75, "y":2}, + {"label":"\"", "x":11.75, "y":2}, + {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + + {"label":"Shift", "x":0, "y":3, "w":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":2.75}, + {"label":"Up", "x":16.5, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.5}, + {"label":"GUI", "x":1.5, "y":4}, + {"label":"Alt", "x":2.5, "y":4, "w":1.5}, + {"label":"Space", "x":4, "y":4, "w":7}, + {"label":"Alt", "x":11, "y":4, "w":1.5}, + {"label":"GUI", "x":12.5, "y":4}, + {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}, + {"label":"Left", "x":15.5, "y":4}, + {"label":"Down", "x":16.5, "y":4}, + {"label":"Right", "x":17.5, "y":4} + ] + }, + "LAYOUT_iso": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"!", "x":1, "y":0}, + {"label":"@", "x":2, "y":0}, + {"label":"#", "x":3, "y":0}, + {"label":"$", "x":4, "y":0}, + {"label":"%", "x":5, "y":0}, + {"label":"^", "x":6, "y":0}, + {"label":"&", "x":7, "y":0}, + {"label":"*", "x":8, "y":0}, + {"label":"(", "x":9, "y":0}, + {"label":")", "x":10, "y":0}, + {"label":"_", "x":11, "y":0}, + {"label":"+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + {"label":"Insert", "x":15.5, "y":0}, + {"label":"Home", "x":16.5, "y":0}, + {"label":"Page Up", "x":17.5, "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":"Delete", "x":15.5, "y":1}, + {"label":"End", "x":16.5, "y":1}, + {"label":"Page Down", "x":17.5, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":":", "x":10.75, "y":2}, + {"label":"\"", "x":11.75, "y":2}, + {"label":"ISO~", "x":12.75, "y":2}, + {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, + + {"label":"Shift", "x":0, "y":3, "w":1.25}, + {"label":"|", "x":1.25, "y":3}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":2.75}, + {"label":"Up", "x":16.5, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"GUI", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space", "x":3.75, "y":4, "w":6.25}, + {"label":"Alt", "x":10, "y":4, "w":1.25}, + {"label":"GUI", "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}, + {"label":"Left", "x":15.5, "y":4}, + {"label":"Down", "x":16.5, "y":4}, + {"label":"Right", "x":17.5, "y":4} + ] + }, + "LAYOUT_iso_tsangan": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"!", "x":1, "y":0}, + {"label":"@", "x":2, "y":0}, + {"label":"#", "x":3, "y":0}, + {"label":"$", "x":4, "y":0}, + {"label":"%", "x":5, "y":0}, + {"label":"^", "x":6, "y":0}, + {"label":"&", "x":7, "y":0}, + {"label":"*", "x":8, "y":0}, + {"label":"(", "x":9, "y":0}, + {"label":")", "x":10, "y":0}, + {"label":"_", "x":11, "y":0}, + {"label":"+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + {"label":"Insert", "x":15.5, "y":0}, + {"label":"Home", "x":16.5, "y":0}, + {"label":"Page Up", "x":17.5, "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":"Delete", "x":15.5, "y":1}, + {"label":"End", "x":16.5, "y":1}, + {"label":"Page Down", "x":17.5, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":":", "x":10.75, "y":2}, + {"label":"\"", "x":11.75, "y":2}, + {"label":"ISO~", "x":12.75, "y":2}, + {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, + + {"label":"Shift", "x":0, "y":3, "w":1.25}, + {"label":"|", "x":1.25, "y":3}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":2.75}, + {"label":"Up", "x":16.5, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.5}, + {"label":"GUI", "x":1.5, "y":4}, + {"label":"Alt", "x":2.5, "y":4, "w":1.5}, + {"label":"Space", "x":4, "y":4, "w":7}, + {"label":"Alt", "x":11, "y":4, "w":1.5}, + {"label":"GUI", "x":12.5, "y":4}, + {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}, + {"label":"Left", "x":15.5, "y":4}, + {"label":"Down", "x":16.5, "y":4}, + {"label":"Right", "x":17.5, "y":4} + ] + } + } +} diff --git a/keyboards/crin/keymaps/default/keymap.c b/keyboards/crin/keymaps/default/keymap.c new file mode 100644 index 000000000000..87bae7da65d4 --- /dev/null +++ b/keyboards/crin/keymaps/default/keymap.c @@ -0,0 +1,63 @@ +/* +Copyright 2012,2013 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +enum layer_names { + _BASE, + _FN1, + _FN2, + _FN3 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_ansi_tsangan( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(_FN1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_FN1] = LAYOUT_ansi_tsangan( + 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_PSCR, KC_SLCK, KC_PAUS, + _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_FN2] = LAYOUT_ansi_tsangan( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_FN3] = LAYOUT_ansi_tsangan( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/crin/keymaps/via/keymap.c b/keyboards/crin/keymaps/via/keymap.c new file mode 100644 index 000000000000..87bae7da65d4 --- /dev/null +++ b/keyboards/crin/keymaps/via/keymap.c @@ -0,0 +1,63 @@ +/* +Copyright 2012,2013 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +enum layer_names { + _BASE, + _FN1, + _FN2, + _FN3 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_ansi_tsangan( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(_FN1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_FN1] = LAYOUT_ansi_tsangan( + 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_PSCR, KC_SLCK, KC_PAUS, + _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_FN2] = LAYOUT_ansi_tsangan( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_FN3] = LAYOUT_ansi_tsangan( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/crin/keymaps/via/rules.mk b/keyboards/crin/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/crin/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/crin/readme.md b/keyboards/crin/readme.md new file mode 100644 index 000000000000..1912cee1f78e --- /dev/null +++ b/keyboards/crin/readme.md @@ -0,0 +1,24 @@ +# Bachoo Crin + +Crin is an F-rowless 65%. + +* Keyboard Maintainer: [KnoblesseOblige](https://github.com/KnoblesseOblige) +* Hardware Supported: STM32F303CBT +* Hardware Availability: TBD + +Make example for this keyboard (after setting up your build environment): + + make crin:default + +Flashing example for this keyboard: + + make crin:default:flash + +To reset the board into bootloader mode, do one of the following: + +* Hold Esc while plugging the PCB in, if Bootmagic Lite is enabled (also erases persistent settings). +* Press the RESET keycode, if programmed on the keymap (Fn+R by default). +* Slide the switch just below the reset button to the left and press the reset button. + * Please note that you must slide it back to the right for the PCB to boot QMK again. + +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/crin/rules.mk b/keyboards/crin/rules.mk new file mode 100644 index 000000000000..5aca8ef1b8cf --- /dev/null +++ b/keyboards/crin/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = STM32F303 + +# Bootloader selection +BOOTLOADER = stm32-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 = yes # Commands for debug and configuration +# 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 + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/crkbd/config.h b/keyboards/crkbd/config.h index d7a3474733af..f354efbb47d7 100644 --- a/keyboards/crkbd/config.h +++ b/keyboards/crkbd/config.h @@ -21,20 +21,22 @@ along with this program. If not, see . #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0x4653 -#define PRODUCT_ID 0x0001 -#define DEVICE_VER 0x0001 -#define MANUFACTURER foostan -#define PRODUCT Corne +#define VENDOR_ID 0x4653 +#define PRODUCT_ID 0x0001 +#define DEVICE_VER 0x0001 +#define MANUFACTURER foostan +#define PRODUCT Corne /* key matrix size */ // Rows are doubled-up -#define MATRIX_ROWS 8 -#define MATRIX_COLS 6 -#define MATRIX_ROW_PINS { D4, C6, D7, E6 } +#define MATRIX_ROWS 8 +#define MATRIX_COLS 6 +#define MATRIX_ROW_PINS \ + { D4, C6, D7, E6 } // wiring of each half -#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3 } +#define MATRIX_COL_PINS \ + { F4, F5, F6, F7, B1, B3 } // #define MATRIX_COL_PINS { B2, B3, B1, F7, F6, F5, F4 } //uncomment this line and comment line above if you need to reverse left-to-right key order /* define if matrix has ghost */ @@ -51,7 +53,6 @@ along with this program. If not, see . /* Locking resynchronize hack */ //#define LOCKING_RESYNC_ENABLE - /* * Feature disable options * These options are also useful to firmware size reduction. diff --git a/keyboards/crkbd/info.json b/keyboards/crkbd/info.json index 34b3e95b9423..9a73ec68e9bd 100644 --- a/keyboards/crkbd/info.json +++ b/keyboards/crkbd/info.json @@ -2,8 +2,6 @@ "keyboard_name": "crkbd rev. 1", "url": "", "maintainer": "qmk", - "width": 15, - "height": 4.7, "layouts": { "LAYOUT_split_3x6_3": { "layout": [ diff --git a/keyboards/crkbd/keymaps/armand1m/keymap.c b/keyboards/crkbd/keymaps/armand1m/keymap.c index 190cb4cf376f..3caee1c827fb 100644 --- a/keyboards/crkbd/keymaps/armand1m/keymap.c +++ b/keyboards/crkbd/keymaps/armand1m/keymap.c @@ -67,7 +67,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { if (!is_keyboard_master()) { @@ -130,7 +130,8 @@ void oled_render_amsterdam_flag(void) { oled_write_raw_P(amsterdam_flag, sizeof(amsterdam_flag)); } -void oled_task_user(void) { +bool oled_task_user(void) { oled_render_amsterdam_flag(); + return false; } -#endif // OLED_DRIVER_ENABLE +#endif // OLED_ENABLE diff --git a/keyboards/crkbd/keymaps/armand1m/rules.mk b/keyboards/crkbd/keymaps/armand1m/rules.mk index 9444b88d51a0..d34d066ded93 100644 --- a/keyboards/crkbd/keymaps/armand1m/rules.mk +++ b/keyboards/crkbd/keymaps/armand1m/rules.mk @@ -1 +1,2 @@ -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/crkbd/keymaps/blipson/blipsonfont.c b/keyboards/crkbd/keymaps/blipson/blipsonfont.c new file mode 100644 index 000000000000..48f8de2c2e77 --- /dev/null +++ b/keyboards/crkbd/keymaps/blipson/blipsonfont.c @@ -0,0 +1,232 @@ +// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0. +// See gfxfont.h for newer custom bitmap font info. + +#include "progmem.h" + +// Standard ASCII 5x7 font +const unsigned char font[] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, + 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, + 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, + 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, + 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, + 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, + 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, + 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, + 0x00, 0x18, 0x24, 0x18, 0x00, 0x00, + 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, + 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, + 0x26, 0x29, 0x79, 0x29, 0x26, 0x00, + 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, + 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, + 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, + 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, + 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, + 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, + 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, + 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, + 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, + 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, + 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00, + 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00, + 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, + 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, + 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, + 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, + 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, + 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, + 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, + 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, + 0x23, 0x13, 0x08, 0x64, 0x62, 0x00, + 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, + 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, + 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, + 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, + 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, + 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, + 0x00, 0x80, 0x70, 0x30, 0x00, 0x00, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, + 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, + 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, + 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, + 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, + 0x72, 0x49, 0x49, 0x49, 0x46, 0x00, + 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, + 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, + 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, + 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, + 0x41, 0x21, 0x11, 0x09, 0x07, 0x00, + 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, + 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, + 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, + 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, + 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, + 0x02, 0x01, 0x59, 0x09, 0x06, 0x00, + 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00, + 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, + 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, + 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, + 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, + 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, + 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, + 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, + 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, + 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, + 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, + 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, + 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, + 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, + 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, + 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, + 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, + 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, + 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, + 0x26, 0x49, 0x49, 0x49, 0x32, 0x00, + 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00, + 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, + 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, + 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, + 0x63, 0x14, 0x08, 0x14, 0x63, 0x00, + 0x03, 0x04, 0x78, 0x04, 0x03, 0x00, + 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, + 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, + 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, + 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, + 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, + 0x00, 0x03, 0x07, 0x08, 0x00, 0x00, + 0x20, 0x54, 0x54, 0x78, 0x40, 0x00, + 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00, + 0x38, 0x44, 0x44, 0x44, 0x28, 0x00, + 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00, + 0x38, 0x54, 0x54, 0x54, 0x18, 0x00, + 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00, + 0x18, 0x24, 0x24, 0x1C, 0x18, 0x00, + 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, + 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, + 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, + 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, + 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, + 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00, + 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, + 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, + 0x7C, 0x18, 0x24, 0x24, 0x18, 0x00, + 0x18, 0x24, 0x24, 0x18, 0x7C, 0x00, + 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, + 0x48, 0x54, 0x54, 0x54, 0x24, 0x00, + 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00, + 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, + 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, + 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, + 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, + 0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00, + 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, + 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, + 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0x00, 0x41, 0x36, 0x08, 0x00, 0x00, + 0x02, 0x01, 0x02, 0x04, 0x02, 0x00, + 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFC, + 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xC0, 0xC0, 0x00, 0x00, 0x80, + 0xC0, 0xE0, 0x60, 0x60, 0xE0, 0xC0, + 0x80, 0x00, 0x00, 0x80, 0xC0, 0xC0, + 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x00, + 0x00, 0x00, 0xC0, 0x80, 0xC0, 0xC0, + 0xC0, 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, + 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC, + 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00, + 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, + 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00, + 0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B, + 0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00, + 0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE, + 0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x30, 0x18, 0x18, 0x38, + 0xF0, 0xE0, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFE, 0xFE, 0x00, 0x00, 0xFF, + 0xFF, 0x18, 0x30, 0x30, 0x38, 0x1F, + 0x0F, 0x00, 0x8F, 0x1F, 0x38, 0x30, + 0x70, 0xE3, 0xC7, 0x00, 0x00, 0xFF, + 0xFF, 0x01, 0x00, 0x01, 0xFF, 0xFF, + 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x00, + 0x01, 0xFF, 0xFF, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 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, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, + 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00, + 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, + 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00, + 0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20, + 0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00, + 0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F, + 0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x07, 0x0E, 0x0C, 0x0C, 0x0E, + 0x07, 0x03, 0x00, 0x00, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, + 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x3F, + 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x07, 0x0C, 0x0C, + 0x0E, 0x07, 0x03, 0x00, 0x00, 0x03, + 0x07, 0x0E, 0x0C, 0x0E, 0x07, 0x03, + 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, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 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/keyboards/crkbd/keymaps/blipson/config.h b/keyboards/crkbd/keymaps/blipson/config.h new file mode 100644 index 000000000000..19947958369b --- /dev/null +++ b/keyboards/crkbd/keymaps/blipson/config.h @@ -0,0 +1,51 @@ +/* +This is the c configuration file for the keymap + +Copyright 2015 Jack Humbert +Copyright 2020 Ben Lipson + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +/* Select hand configuration */ +#define MASTER_LEFT +// #define MASTER_RIGHT +// #define EE_HANDS + +#define TAPPING_FORCE_HOLD +#define TAPPING_TERM 100 + +#ifdef RGBLIGHT_ENABLE + #undef RGBLED_NUM + #define RGBLIGHT_EFFECT_BREATHING + #define RGBLIGHT_EFFECT_RAINBOW_MOOD + #define RGBLIGHT_EFFECT_RAINBOW_SWIRL + #define RGBLIGHT_EFFECT_SNAKE + #define RGBLIGHT_EFFECT_KNIGHT + #define RGBLIGHT_EFFECT_CHRISTMAS + #define RGBLIGHT_EFFECT_STATIC_GRADIENT + // #define RGBLIGHT_EFFECT_RGB_TEST + // #define RGBLIGHT_EFFECT_ALTERNATING + #define RGBLIGHT_EFFECT_TWINKLE + #define RGBLED_NUM 27 + #define RGBLIGHT_LIMIT_VAL 120 + #define RGBLIGHT_HUE_STEP 10 + #define RGBLIGHT_SAT_STEP 17 + #define RGBLIGHT_VAL_STEP 17 +#endif + +#define OLED_FONT_H "keyboards/crkbd/keymaps/blipson/blipsonfont.c" +#define SPLIT_LAYER_STATE_ENABLE diff --git a/keyboards/crkbd/keymaps/blipson/keymap.c b/keyboards/crkbd/keymaps/blipson/keymap.c new file mode 100644 index 000000000000..ad7664c29597 --- /dev/null +++ b/keyboards/crkbd/keymaps/blipson/keymap.c @@ -0,0 +1,140 @@ +/* +Copyright 2019 @foostan +Copyright 2020 Ben Lipson + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_split_3x6_3( + //,-----------------------------------------------------. ,-----------------------------------------------------. + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + MO(1), KC_LGUI, KC_SPC, KC_SPC, KC_RALT, MO(2) + //`--------------------------' `--------------------------' + + ), + + [1] = LAYOUT_split_3x6_3( + //,-----------------------------------------------------. ,-----------------------------------------------------. + KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_UP, KC_LPRN, KC_RPRN, KC_BSLS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_RIGHT, XXXXXXX, KC_ENT, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_INS, KC_END, KC_HOME, KC_PGDN, KC_PGUP, KC_RSFT, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + _______, KC_LGUI, KC_SPC, KC_SPC, KC_RALT, MO(3) + //`--------------------------' `--------------------------' + ), + + [2] = LAYOUT_split_3x6_3( + //,-----------------------------------------------------. ,-----------------------------------------------------. + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_LCTL, KC_ASTR, KC_MINS, KC_PLUS, KC_LCBR, KC_RCBR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_BSLS, KC_PIPE, KC_UNDS, KC_EQL, KC_LBRC, KC_RBRC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + MO(3), KC_LGUI, KC_SPC, KC_SPC, KC_RALT, _______ + //`--------------------------' `--------------------------' + ), + + [3] = LAYOUT_split_3x6_3( + //,-------------------------------------------------------------------------------. ,------------------------------------------------------------------. + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, RESET, + //|----------+------------+--------------+---------------+-----------+------------| |------------+------------+------------+--------+--------+---------| + KC_LCTL, A(KC_F12), A(G(KC_LEFT)), A(G(KC_RIGHT)), S(KC_F6), C(S(KC_D)), C(S(KC_R)), G(KC_LBRC), G(KC_RBRC), KC_F11, KC_F12, KC_MPLY, + //|----------+------------+--------------+---------------+-----------+------------| |------------+------------+------------+--------+--------+---------| + G(KC_F2), A(G(KC_F)), KC_MUTE, KC__VOLDOWN, KC__VOLUP, G(KC_GRV), C(G(KC_G)), KC_TAB, S(KC_TAB), KC_BRID, KC_BRIU, KC_CAPS, + //|----------+------------+--------------+---------------+-----------+------------+--------| |--------+------------+------------+------------+--------+--------+---------| + _______, KC_LGUI, KC_SPC, KC_SPC, KC_RALT, _______ + //`----------------------------------' `-------------------------------' + ) + }; + +#ifdef OLED_ENABLE +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + if (!is_keyboard_left()) { + return OLED_ROTATION_180; // flips the display 180 degrees if offhand + } + return rotation; +} + +#define L_BASE 0 +#define L_LOWER 2 +#define L_RAISE 4 +#define L_ADJUST 8 + +void oled_render_layer_state(void) { + oled_write_P(PSTR("Layer: "), false); + switch (layer_state) { + case L_BASE: + oled_write_ln_P(PSTR("Default"), false); + break; + case L_LOWER: + oled_write_ln_P(PSTR("Lower"), false); + break; + case L_RAISE: + oled_write_ln_P(PSTR("Raise"), false); + break; + case L_ADJUST: + case L_ADJUST|L_LOWER: + case L_ADJUST|L_RAISE: + case L_ADJUST|L_LOWER|L_RAISE: + oled_write_ln_P(PSTR("Adjust"), false); + break; + } + oled_write_P(PSTR("I love Marce"), false); +} + +void render_bootmagic_status(bool status) { + /* Show Ctrl-Gui Swap options */ + static const char PROGMEM logo[][2][3] = { + {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}}, + {{0x95, 0x96, 0}, {0xb5, 0xb6, 0}}, + }; + if (status) { + oled_write_ln_P(logo[0][0], false); + oled_write_ln_P(logo[0][1], false); + } else { + oled_write_ln_P(logo[1][0], false); + oled_write_ln_P(logo[1][1], false); + } +} + +void oled_render_logo(void) { + static const char PROGMEM crkbd_logo[] = { + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, + 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, + 0}; + oled_write_P(crkbd_logo, false); +} + +bool oled_task_user(void) { + if (is_keyboard_master()) { + oled_render_layer_state(); + } else { + oled_render_logo(); + } + return false; +} + +#endif // OLED_ENABLE diff --git a/keyboards/crkbd/keymaps/blipson/readme.md b/keyboards/crkbd/keymaps/blipson/readme.md new file mode 100644 index 000000000000..5dfb926bc642 --- /dev/null +++ b/keyboards/crkbd/keymaps/blipson/readme.md @@ -0,0 +1,10 @@ +# bLipson +a keymap for the CRKBD/Corne geared towards professional software development on MacOS. + +#### Meant for use with the following tools: + +- [Intellij IDEA](https://www.jetbrains.com/idea/) +- [Rectangle](https://rectangleapp.com/) + +## Building +`make crkbd:blipson` diff --git a/keyboards/crkbd/keymaps/blipson/rules.mk b/keyboards/crkbd/keymaps/blipson/rules.mk new file mode 100644 index 000000000000..5cad39dbd20a --- /dev/null +++ b/keyboards/crkbd/keymaps/blipson/rules.mk @@ -0,0 +1,3 @@ +OLED_ENABLE = yes +RGBLIGHT_ENABLE = no +AUDIO_ENABLE = no diff --git a/keyboards/crkbd/keymaps/curry/rules.mk b/keyboards/crkbd/keymaps/curry/rules.mk index a75335782d36..fc0e7e1924aa 100644 --- a/keyboards/crkbd/keymaps/curry/rules.mk +++ b/keyboards/crkbd/keymaps/curry/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no CONSOLE_ENABLE = no COMMAND_ENABLE = no @@ -10,7 +10,7 @@ COMMAND_ENABLE = no RGBLIGHT_ENABLE = no RGB_MATRIX_ENABLE = yes -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes BOOTLOADER = atmel-dfu SPLIT_TRANSPORT = mirror diff --git a/keyboards/crkbd/keymaps/davidrambo/config.h b/keyboards/crkbd/keymaps/davidrambo/config.h new file mode 100644 index 000000000000..bf96f265f44a --- /dev/null +++ b/keyboards/crkbd/keymaps/davidrambo/config.h @@ -0,0 +1,102 @@ +/* +This is the c configuration file for the keymap + +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +//#define USE_MATRIX_I2C + +/* Select hand configuration */ + +#define MASTER_LEFT +// #define MASTER_RIGHT +// #define EE_HANDS + +#define RGBLIGHT_SPLIT + +//#define SSD1306OLED + +#define TAPPING_TERM 200 +#define PERMISSIVE_HOLD + +#ifdef RGB_MATRIX_ENABLE + #define RGB_MATRIX_STARTUP_HUE 231 + #define RGB_MATRIX_KEYPRESSES // reacts to keypresses + #define RGB_MATRIX_TYPING_MEATMAP_DECREASE_DELAY_MS 50 + // # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses) + // # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS + // # define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness) + // # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness) + #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 100 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash. + #define RGB_MATRIX_HUE_STEP 8 + #define RGB_MATRIX_SAT_STEP 8 + #define RGB_MATRIX_VAL_STEP 8 + #define RGB_MATRIX_SPD_STEP 10 + +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +// # define ENABLE_RGB_MATRIX_ALPHAS_MODS +// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +// # define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +// # define ENABLE_RGB_MATRIX_CYCLE_ALL +// # define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +// # define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +// # define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +// # define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +// # define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +// # define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +// # define ENABLE_RGB_MATRIX_DUAL_BEACON +// # define ENABLE_RGB_MATRIX_RAINBOW_BEACON +// # define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +// # define ENABLE_RGB_MATRIX_RAINDROPS +// # define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +// # define ENABLE_RGB_MATRIX_HUE_BREATHING +// # define ENABLE_RGB_MATRIX_HUE_PENDULUM +// # define ENABLE_RGB_MATRIX_HUE_WAVE +// # define ENABLE_RGB_MATRIX_PIXEL_RAIN +// # define ENABLE_RGB_MATRIX_PIXEL_FLOW +// # define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// # define ENABLE_RGB_MATRIX_SPLASH +// # define ENABLE_RGB_MATRIX_MULTISPLASH +// # define ENABLE_RGB_MATRIX_SOLID_SPLASH +// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH +#endif diff --git a/keyboards/crkbd/keymaps/davidrambo/keymap.c b/keyboards/crkbd/keymaps/davidrambo/keymap.c new file mode 100644 index 000000000000..6e9779522079 --- /dev/null +++ b/keyboards/crkbd/keymaps/davidrambo/keymap.c @@ -0,0 +1,126 @@ +/* Copyright 2021 David Rambo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +//extern uint8_t is_master; + + +enum custom_layers { + _COLEMAK, + _SYMBOL, + _NAVIGATION, + _FKEYS, +}; + +//keycode shorthands +#define SYM MO(1) +#define NAV LT(2, KC_ESC) +#define FKEY MO(3) + +//aliases for clarity in layering +#define SftEnt SFT_T(KC_ENT) // Shift when held, Enter when tapped +#define BSCTL LCTL_T(KC_BSPC) // Ctrl when held, Backspace when tapped +#define CTAB LCTL(KC_TAB) +#define ATAB LALT(KC_TAB) + +//aliases for Navigation layer +#define CBSPC LCTL(KC_BSPC) // delete whole word +#define C_CL LCTL(KC_LEFT) // move cursor one word back +#define C_CR LCTL(KC_RGHT) // move cursor one word forward + +//internet browser tab shortcuts and window swapping +#define CTLPGDN LCTL(KC_PGDN) +#define CTLPGUP LCTL(KC_PGUP) + +#define G_GRV LGUI(KC_GRV) +#define SftEnt SFT_T(KC_ENT) + +enum custom_keycodes { + PLACEHOLDER = SAFE_RANGE, + SET_RGB, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_COLEMAK] = LAYOUT( + //,-----------------------------------------------------. ,-----------------------------------------------------. + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + NAV , KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O , KC_QUOT, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, SftEnt, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + KC_LALT, KC_LGUI, BSCTL, KC_SPC, SYM , FKEY + //`--------------------------' `--------------------------' + + ), + + [_SYMBOL] = LAYOUT( + //,-----------------------------------------------------. ,-----------------------------------------------------. + KC_LBRC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_RBRC, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_BSLS, KC_EXLM, KC_AT , KC_HASH, KC_DLR , KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_EQL , + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, KC_HOME, KC_END, _______, _______, _______, KC_GRV, KC_MINS, KC_PGUP, _______, _______, _______, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + _______, _______, _______, _______, _______, KC_PGDN + //`--------------------------' `--------------------------' + ), + + [_NAVIGATION] = LAYOUT( + //,-----------------------------------------------------. ,-----------------------------------------------------. + _______, _______, _______, _______, _______, _______, CTAB , C_CL , KC_UP, C_CR , KC_DEL, _______, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, _______, _______, _______, _______, _______, CTLPGUP, KC_LEFT , KC_DOWN, KC_RGHT, CTLPGDN, _______, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + RESET, _______, _______, _______, _______, _______, ATAB , CBSPC , KC_HOME, KC_END, G_GRV , _______, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + _______, _______, _______, _______, _______, KC_RALT + //`--------------------------' `--------------------------' + ), + + [_FKEYS] = LAYOUT( + //,-----------------------------------------------------. ,-----------------------------------------------------. + KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, RGB_SAI, RGB_HUI, RGB_VAI, RGB_TOG, SET_RGB, _______, _______, _______, _______, _______, _______, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, RGB_MOD, RGB_M_P, KC_VOLD, KC_VOLU, KC_MPLY, _______, _______, _______, _______, _______, _______, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + _______, _______, _______, _______, _______, _______ + //`--------------------------' `--------------------------' + ) +}; + +void keyboard_post_init_user(void) { +// rgb_matrix_sethsv(191, 43, 81); + rgblight_mode_noeeprom(RGB_MATRIX_TYPING_HEATMAP); +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + + switch (keycode) { + + case SET_RGB: + if (record->event.pressed) { + rgb_matrix_sethsv_noeeprom(18, 86, 95); + } + return false; + break; + + } + return true; +} diff --git a/keyboards/crkbd/keymaps/davidrambo/readme.md b/keyboards/crkbd/keymaps/davidrambo/readme.md new file mode 100644 index 000000000000..e8ce162b64ef --- /dev/null +++ b/keyboards/crkbd/keymaps/davidrambo/readme.md @@ -0,0 +1 @@ +This is my Corne keymap, which uses Colemak and shortcuts for Linux and Windows. diff --git a/keyboards/crkbd/keymaps/davidrambo/rules.mk b/keyboards/crkbd/keymaps/davidrambo/rules.mk new file mode 100644 index 000000000000..782b689f4204 --- /dev/null +++ b/keyboards/crkbd/keymaps/davidrambo/rules.mk @@ -0,0 +1,3 @@ +RGBLIGHT_ENABLE = no +RGB_MATRIX_ENABLE = yes +BOOTLOADER = atmel-dfu diff --git a/keyboards/crkbd/keymaps/default/keymap.c b/keyboards/crkbd/keymaps/default/keymap.c index 0bc459126305..e06cfa34655a 100644 --- a/keyboards/crkbd/keymaps/default/keymap.c +++ b/keyboards/crkbd/keymaps/default/keymap.c @@ -70,7 +70,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { if (!is_keyboard_master()) { return OLED_ROTATION_180; // flips the display 180 degrees if offhand @@ -157,13 +157,14 @@ void oled_render_logo(void) { oled_write_P(crkbd_logo, false); } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { oled_render_layer_state(); oled_render_keylog(); } else { oled_render_logo(); } + return false; } bool process_record_user(uint16_t keycode, keyrecord_t *record) { @@ -172,4 +173,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } -#endif // OLED_DRIVER_ENABLE +#endif // OLED_ENABLE diff --git a/keyboards/crkbd/keymaps/default/rules.mk b/keyboards/crkbd/keymaps/default/rules.mk index 9444b88d51a0..d34d066ded93 100644 --- a/keyboards/crkbd/keymaps/default/rules.mk +++ b/keyboards/crkbd/keymaps/default/rules.mk @@ -1 +1,2 @@ -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/crkbd/keymaps/devdev/config.h b/keyboards/crkbd/keymaps/devdev/config.h index 793c7b020b12..4848af2245fc 100644 --- a/keyboards/crkbd/keymaps/devdev/config.h +++ b/keyboards/crkbd/keymaps/devdev/config.h @@ -32,7 +32,7 @@ along with this program. If not, see . #define CUSTOM_FONT -#define CUSTOM_LAYER_READ //if you remove this it causes issues - needs better guarding +#define CUSTOM_LAYER_READ //if you remove this it causes issues - needs better guarding #define TAPPING_FORCE_HOLD #define TAPPING_TERM 200 @@ -43,7 +43,7 @@ along with this program. If not, see . #ifdef RGBLIGHT_ENABLE #undef RGBLED_NUM - + //#define RGBLIGHT_ANIMATIONS #define RGBLIGHT_EFFECT_BREATHING #define RGBLIGHT_EFFECT_RAINBOW_MOOD @@ -55,11 +55,11 @@ along with this program. If not, see . //#define RGBLIGHT_EFFECT_RGB_TEST //#define RGBLIGHT_EFFECT_ALTERNATING //#define RGBLIGHT_EFFECT_TWINKLE - + //#define RGBLED_NUM 54 //#define RGBLED_SPLIT 27 - //#define RGBLED_SPLIT { 27, 27 } // haven't figured out how to use this yet - + //#define RGBLED_SPLIT { 27, 27 } // haven't figured out how to use this yet + #define RGBLED_NUM 27 #define RGBLIGHT_LIMIT_VAL 120 #define RGBLIGHT_HUE_STEP 10 @@ -71,11 +71,11 @@ along with this program. If not, see . # define RGB_MATRIX_KEYPRESSES // reacts to keypresses // # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses) // # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended # define RGB_MATRIX_FRAMEBUFFER_EFFECTS // # define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness) // # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness) -# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash. +# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash. #define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_GRADIENT_LEFT_RIGHT @@ -84,34 +84,52 @@ along with this program. If not, see . # define RGB_MATRIX_VAL_STEP 8 # define RGB_MATRIX_SPD_STEP 10 -/* Disable the animations you don't want/need. You will need to disable a good number of these * - * because they take up a lot of space. Disable until you can successfully compile your firmware. */ - # define DISABLE_RGB_MATRIX_ALPHAS_MODS -// # define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -// # define DISABLE_RGB_MATRIX_BREATHING -// # define DISABLE_RGB_MATRIX_CYCLE_ALL -// # define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT -// # define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN -// # define DISABLE_RGB_MATRIX_CYCLE_OUT_IN -// # define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL -// # define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON -// # define DISABLE_RGB_MATRIX_DUAL_BEACON -// # define DISABLE_RGB_MATRIX_RAINBOW_BEACON -// # define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS -// # define DISABLE_RGB_MATRIX_RAINDROPS -// # define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS - # define DISABLE_RGB_MATRIX_TYPING_HEATMAP -// # define DISABLE_RGB_MATRIX_DIGITAL_RAIN -// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE -// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE - # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS - # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -// # define DISABLE_RGB_MATRIX_SPLASH -// # define DISABLE_RGB_MATRIX_MULTISPLASH -// # define DISABLE_RGB_MATRIX_SOLID_SPLASH -// # define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +// # define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +// # define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH #endif diff --git a/keyboards/crkbd/keymaps/devdev/keymap.c b/keyboards/crkbd/keymaps/devdev/keymap.c index 4da3fcaa6429..a5062957497d 100644 --- a/keyboards/crkbd/keymaps/devdev/keymap.c +++ b/keyboards/crkbd/keymaps/devdev/keymap.c @@ -1,18 +1,18 @@ /* Copyright 2020 Dane Evans - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ // CRKBD @@ -20,12 +20,12 @@ char layer_state_str[24]; - - + + enum userspace_layers { _DEFAULTS = 0, _COLEMAK = 0, - _COLEMAKDH, + _COLEMAKDH, _QWERTY, _NUM, _SYM, @@ -33,37 +33,37 @@ char layer_state_str[24]; _NUMPAD, _SWITCH, _MOVE, - + }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - // colemak + + // colemak [_COLEMAK] = LAYOUT( //,-----------------------------------------------------. ,-----------------------------------------------------. LT(_NUMPAD,KC_TAB), KC_Q, KC_W, KC_F, KC_P, KC_G, LT(_SWITCH,KC_J), KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| KC_LSFT, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I,LT(_NUMPAD,KC_O),KC_QUOT, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| KC_LGUI, MO(_NUM), KC_SPC, KC_ENT, MO(_SYM), KC_LALT //`--------------------------' `--------------------------' ), - + // colemak DH [_COLEMAKDH] = LAYOUT( //,-----------------------------------------------------. ,-----------------------------------------------------. LT(_NUMPAD,KC_TAB), KC_Q, KC_W, KC_F, KC_P, KC_B, LT(_SWITCH,KC_J), KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| KC_LSFT, KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I,LT(_NUMPAD,KC_O),KC_QUOT, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| KC_LCTL, KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - KC_LGUI, MO(_NUM), KC_SPC, KC_ENT, MO(_SYM), KC_LALT + KC_LGUI, MO(_NUM), KC_SPC, KC_ENT, MO(_SYM), KC_LALT //`--------------------------' `--------------------------' ), - + // qwerty [_QWERTY] = LAYOUT( //,-----------------------------------------------------. ,-----------------------------------------------------. @@ -77,9 +77,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //`--------------------------' `--------------------------' ), - - - // numbers - L thumb + + + // numbers - L thumb [_NUM] = LAYOUT( //,-----------------------------------------------------. ,-----------------------------------------------------. KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, @@ -91,8 +91,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(_COMMAND), KC_TRNS //`--------------------------' `--------------------------' ), - - // symbols - R thumb + + // symbols - R thumb [_SYM] = LAYOUT( //,-----------------------------------------------------. ,-----------------------------------------------------. KC_ESC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, @@ -104,8 +104,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, MO(_COMMAND), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS //`--------------------------' `--------------------------' ), - - // commands - both thumbs + + // commands - both thumbs [_COMMAND] = LAYOUT( //,-----------------------------------------------------. ,-----------------------------------------------------. RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_NO, @@ -114,24 +114,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, KC_NO, DF(2), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS //`--------------------------' `--------------------------' ), - - // numpad + + // numpad [_NUMPAD] = LAYOUT( //,-----------------------------------------------------. ,-----------------------------------------------------. LT(0,KC_NO), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_CIRC, KC_P7, KC_P8, KC_P9, KC_ASTR, KC_BSPC, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MINS, KC_P4, KC_P5, KC_P6, KC_EQL, KC_DEL, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PLUS, KC_P1, KC_P2, KC_P3, KC_SLSH, KC_NO, - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| OSM(MOD_MEH), KC_NO, KC_TRNS, KC_ENT, KC_P0, KC_PDOT //`--------------------------' `--------------------------' - ), - - // layer switcher + ), + + // layer switcher [_SWITCH] = LAYOUT( //,-----------------------------------------------------. ,-----------------------------------------------------. TO(0), TO(1), TO(2), TO(3), TO(4), TO(5), KC_NO, TO(7), KC_NO, KC_NO, KC_NO, RESET, @@ -139,62 +139,62 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_NO, KC_NO, KC_BRIU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, EEP_RST, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| KC_SYSTEM_SLEEP, KC_NO, KC_BRID, 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 //`--------------------------' `--------------------------' - - ), - - // amovement + + ), + + // amovement [_MOVE] = LAYOUT( //,-----------------------------------------------------. ,-----------------------------------------------------. LT(0,KC_NO), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_HOME, KC_UP, KC_PGUP, KC_NO, KC_NO, KC_NO, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_LEFT, KC_ENT, KC_RGHT, KC_NO, KC_NO, KC_NO, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| KC_APP, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_END, KC_DOWN, KC_PGDN, KC_DEL, KC_NO, KC_NO, - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO //`--------------------------' `--------------------------' ) }; -// it appears that these are different to the board numbering. -// when you specify n here, it lightss up n+1 on the board diagram - actually may be an entirely different pattern +// it appears that these are different to the board numbering. +// when you specify n here, it lightss up n+1 on the board diagram - actually may be an entirely different pattern // _QWERTY, -// Light on inner column and underglow +// Light on inner column and underglow const rgblight_segment_t PROGMEM layer_qwerty_lights[] = RGBLIGHT_LAYER_SEGMENTS( {0, 10, HSV_AZURE} ); // _COLEMAKDH, -// Light on inner column and underglow +// Light on inner column and underglow const rgblight_segment_t PROGMEM layer_colemakdh_lights[] = RGBLIGHT_LAYER_SEGMENTS( {0, 10, HSV_RED} ); // _NUM, -// Light on inner column and underglow +// Light on inner column and underglow const rgblight_segment_t PROGMEM layer_num_lights[] = RGBLIGHT_LAYER_SEGMENTS( {0, 10, HSV_TEAL} ); // _SYMBOL, -// Light on inner column and underglow +// Light on inner column and underglow const rgblight_segment_t PROGMEM layer_symbol_lights[] = RGBLIGHT_LAYER_SEGMENTS( {0, 10, HSV_BLUE} ); // _COMMAND, -// Light on inner column and underglow +// Light on inner column and underglow const rgblight_segment_t PROGMEM layer_command_lights[] = RGBLIGHT_LAYER_SEGMENTS( {0, 10, HSV_PURPLE} ); //_NUMPAD -//havent worked out how to do each side individually either +//havent worked out how to do each side individually either const rgblight_segment_t PROGMEM layer_numpad_lights[] = RGBLIGHT_LAYER_SEGMENTS( {0, 10, HSV_ORANGE} ); @@ -206,13 +206,13 @@ const rgblight_segment_t PROGMEM layer_numpad_rh_lights[] = RGBLIGHT_LAYER_SEGME ); // _MOVE, -// Light on inner column and underglow +// Light on inner column and underglow const rgblight_segment_t PROGMEM layer_move_lights[] = RGBLIGHT_LAYER_SEGMENTS( {0, 10, HSV_PINK} ); // _SWITCHER // light up top row -const rgblight_segment_t PROGMEM layer_switcher_lights[] = RGBLIGHT_LAYER_SEGMENTS( +const rgblight_segment_t PROGMEM layer_switcher_lights[] = RGBLIGHT_LAYER_SEGMENTS( {0, 6, HSV_GREEN}, {9, 2, HSV_GREEN}, {17, 2, HSV_GREEN}, @@ -222,12 +222,12 @@ const rgblight_segment_t PROGMEM layer_switcher_lights[] = RGBLIGHT_LAYER_SEGMEN // Now define the array of layers. Later layers take precedence const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( - layer_qwerty_lights, + layer_qwerty_lights, layer_colemakdh_lights, layer_num_lights,// overrides layer 1 layer_symbol_lights, - layer_command_lights, - layer_numpad_lights, + layer_command_lights, + layer_numpad_lights, layer_numpad_rh_lights, layer_move_lights, layer_switcher_lights // Overrides other layers @@ -236,7 +236,7 @@ const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( void keyboard_post_init_user(void) { // Enable the LED layers rgblight_layers = my_rgb_layers; - rgblight_mode(10);// haven't found a way to set this in a more useful way + rgblight_mode(10);// haven't found a way to set this in a more useful way } @@ -244,7 +244,7 @@ void keyboard_post_init_user(void) { layer_state_t layer_state_set_user(layer_state_t state) { rgblight_set_layer_state(0, layer_state_cmp(state, _DEFAULTS) && layer_state_cmp(default_layer_state,_QWERTY)); rgblight_set_layer_state(1, layer_state_cmp(state, _DEFAULTS) && layer_state_cmp(default_layer_state,_QWERTY)); - + rgblight_set_layer_state(2, layer_state_cmp(state, _NUM)); rgblight_set_layer_state(3, layer_state_cmp(state, _SYM)); rgblight_set_layer_state(4, layer_state_cmp(state, _COMMAND)); @@ -266,7 +266,7 @@ bool led_update_user(led_t led_state) { //SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { if (!is_keyboard_master()) { return OLED_ROTATION_180; // flips the display 180 degrees if offhand @@ -288,7 +288,7 @@ const char *read_mode_icon(bool swap); void oled_render_layer_state(void) { - char string [24]; + char string [24]; switch (get_highest_layer(default_layer_state|layer_state)) { case _QWERTY: @@ -296,10 +296,10 @@ void oled_render_layer_state(void) { break; case _COLEMAK: oled_write_ln_P(PSTR("Layer: COLEMAK"),false); - break; + break; case _COLEMAKDH: oled_write_ln_P(PSTR("Layer: COLEMAKDH"),false); - break; + break; case _NUM: oled_write_ln_P(PSTR("Layer: Numbers"),false); break; @@ -311,13 +311,13 @@ void oled_render_layer_state(void) { break; case _NUMPAD: oled_write_ln_P(PSTR("Layer: Numpad"),false); - break; + break; case _MOVE: oled_write_ln_P(PSTR("Layer: Movement"),false); break; case _SWITCH: oled_write_ln_P(PSTR("Layer: Layer Switch"),false); - break; + break; default: snprintf(string, sizeof(string), "%ld",layer_state); oled_write_P(PSTR("Layer: Undef-"),false); @@ -392,13 +392,14 @@ void oled_render_logo(void) { oled_write_P(crkbd_logo, false); } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_master) { oled_render_layer_state(); oled_render_keylog(); } else { oled_render_logo(); } + return false; } bool process_record_user(uint16_t keycode, keyrecord_t *record) { @@ -407,4 +408,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } -#endif // OLED_DRIVER_ENABLE \ No newline at end of file +#endif // OLED_ENABLE diff --git a/keyboards/crkbd/keymaps/devdev/rules.mk b/keyboards/crkbd/keymaps/devdev/rules.mk index 58e90c811653..4aaf22fd0495 100644 --- a/keyboards/crkbd/keymaps/devdev/rules.mk +++ b/keyboards/crkbd/keymaps/devdev/rules.mk @@ -1,4 +1,5 @@ MOUSEKEY_ENABLE = yes EXTRAKEY_ENABLE = yes RGBLIGHT_ENABLE = yes -OLED_DRIVER_ENABLE = yes \ No newline at end of file +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/crkbd/keymaps/dsanchezseco/config.h b/keyboards/crkbd/keymaps/dsanchezseco/config.h index f10c474057c7..bece69ba67af 100644 --- a/keyboards/crkbd/keymaps/dsanchezseco/config.h +++ b/keyboards/crkbd/keymaps/dsanchezseco/config.h @@ -33,38 +33,51 @@ along with this program. If not, see . #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 #define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_GRADIENT_LEFT_RIGHT -//disable effects -#define DISABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue speed is hue for secondary hue -#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom speed controls how much gradient changes -#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Static gradient left to right speed controls how much gradient changes -#define DISABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right -#define DISABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades saturation -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness -#define DISABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient -#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom -#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in -#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in -#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradent Chevron shapped scrolling left to right -#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard -#define DISABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard -#define DISABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard -#define DISABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard -#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard -#define DISABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue -#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue pulses keys hit to shifted hue then fades to current hue -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out -#define DISABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out -#define DISABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out -#define DISABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out -#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out -#define DISABLE_RGB_MATRIX_EFFECT_MAX +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +// #define ENABLE_RGB_MATRIX_ALPHAS_MODS +// #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +// #define ENABLE_RGB_MATRIX_BAND_SAT +// #define ENABLE_RGB_MATRIX_BAND_VAL +// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +// #define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +// #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +// #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +// #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +// #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +// #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +// #define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +// #define ENABLE_RGB_MATRIX_DUAL_BEACON +// #define ENABLE_RGB_MATRIX_RAINBOW_BEACON +// #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +// #define ENABLE_RGB_MATRIX_RAINDROPS +// #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +// // #define ENABLE_RGB_MATRIX_HUE_BREATHING +// #define ENABLE_RGB_MATRIX_HUE_PENDULUM +// #define ENABLE_RGB_MATRIX_HUE_WAVE +// #define ENABLE_RGB_MATRIX_PIXEL_RAIN +// #define ENABLE_RGB_MATRIX_PIXEL_FLOW +// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// // enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// // enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// #define ENABLE_RGB_MATRIX_SPLASH +// #define ENABLE_RGB_MATRIX_MULTISPLASH +// #define ENABLE_RGB_MATRIX_SOLID_SPLASH +// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH diff --git a/keyboards/crkbd/keymaps/dsanchezseco/keymap.c b/keyboards/crkbd/keymaps/dsanchezseco/keymap.c index 9a48ee259505..6ef428a11fcd 100644 --- a/keyboards/crkbd/keymaps/dsanchezseco/keymap.c +++ b/keyboards/crkbd/keymaps/dsanchezseco/keymap.c @@ -71,11 +71,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { if (!is_keyboard_left()) return OLED_ROTATION_180; // flips the display 180 to see it from my side @@ -83,7 +83,7 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) { } const char *read_logo(void); -void oled_task_user(void){ +bool oled_task_user(void){ switch (biton32(layer_state)){ case _DVORAK: oled_write_ln_P(PSTR("DVRK"), false); @@ -102,5 +102,6 @@ void oled_task_user(void){ } //now print logo oled_write(read_logo(), false); + return false; } #endif diff --git a/keyboards/crkbd/keymaps/dsanchezseco/rules.mk b/keyboards/crkbd/keymaps/dsanchezseco/rules.mk index 0de8069718f5..161517dd8553 100644 --- a/keyboards/crkbd/keymaps/dsanchezseco/rules.mk +++ b/keyboards/crkbd/keymaps/dsanchezseco/rules.mk @@ -3,7 +3,7 @@ SRC += ./logo_reader.c # enable OLED displays -OLED_DRIVER_ENABLE = no +OLED_ENABLE = no # enable media keys EXTRAKEY_ENABLE = yes diff --git a/keyboards/crkbd/keymaps/edvorakjp/oled.c b/keyboards/crkbd/keymaps/edvorakjp/oled.c index 2e0fed47ee6b..e5ff02956555 100644 --- a/keyboards/crkbd/keymaps/edvorakjp/oled.c +++ b/keyboards/crkbd/keymaps/edvorakjp/oled.c @@ -2,7 +2,7 @@ #include #include "oled.h" -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE void render_host_led_state(void) { oled_write(read_host_led_state(), false); } void render_layer_state(void) { @@ -43,7 +43,7 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) { return is_keyboard_left() ? rotation : rotation ^ OLED_ROTATION_180; } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_left()) { render_mode_icon(!get_enable_kc_lang()); render_layer_state(); @@ -51,5 +51,6 @@ void oled_task_user(void) { } else { render_logo(); } + return false; } -#endif // OLED_DRIVER_ENABLE +#endif // OLED_ENABLE diff --git a/keyboards/crkbd/keymaps/edvorakjp/rules.mk b/keyboards/crkbd/keymaps/edvorakjp/rules.mk index 111f6de27d90..1291d50e921d 100644 --- a/keyboards/crkbd/keymaps/edvorakjp/rules.mk +++ b/keyboards/crkbd/keymaps/edvorakjp/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = no # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) @@ -16,7 +16,8 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. SWAP_HANDS_ENABLE = no # Enable one-hand typing TAP_DANCE_ENABLE = yes -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # 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/crkbd/keymaps/gotham/config.h b/keyboards/crkbd/keymaps/gotham/config.h index dd58a0fe05d3..1ff008b2ded7 100644 --- a/keyboards/crkbd/keymaps/gotham/config.h +++ b/keyboards/crkbd/keymaps/gotham/config.h @@ -39,7 +39,7 @@ #ifdef RGB_MATRIX_ENABLE # define RGB_MATRIX_KEYPRESSES // reacts to keypresses -# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended # define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash. # define RGB_MATRIX_HUE_STEP 32 # define RGB_MATRIX_SAT_STEP 64 @@ -49,40 +49,40 @@ /* Disable the animations you don't want/need. You will need to disable a good number of these * * because they take up a lot of space. Disable until you can successfully compile your firmware. */ -# define DISABLE_RGB_MATRIX_ALPHAS_MODS -# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -# define DISABLE_RGB_MATRIX_BREATHING -# define DISABLE_RGB_MATRIX_BAND_SAT -# define DISABLE_RGB_MATRIX_BAND_VAL -# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL -# define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT -# define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL -// #define DISABLE_RGB_MATRIX_CYCLE_ALL -# define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT -# define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN -# define DISABLE_RGB_MATRIX_CYCLE_OUT_IN -# define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL -// #define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON -# define DISABLE_RGB_MATRIX_DUAL_BEACON -# define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL -# define DISABLE_RGB_MATRIX_CYCLE_SPIRAL -# define DISABLE_RGB_MATRIX_RAINBOW_BEACON -# define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS -# define DISABLE_RGB_MATRIX_RAINDROPS -# define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS -# define DISABLE_RGB_MATRIX_TYPING_HEATMAP -# define DISABLE_RGB_MATRIX_DIGITAL_RAIN -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -// #define DISABLE_RGB_MATRIX_SPLASH -# define DISABLE_RGB_MATRIX_MULTISPLASH -# define DISABLE_RGB_MATRIX_SOLID_SPLASH -# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH +# undef ENABLE_RGB_MATRIX_ALPHAS_MODS +# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# undef ENABLE_RGB_MATRIX_BREATHING +# undef ENABLE_RGB_MATRIX_BAND_SAT +# undef ENABLE_RGB_MATRIX_BAND_VAL +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +// #undef ENABLE_RGB_MATRIX_CYCLE_ALL +# undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +// #undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# undef ENABLE_RGB_MATRIX_DUAL_BEACON +# undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# undef ENABLE_RGB_MATRIX_RAINBOW_BEACON +# undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# undef ENABLE_RGB_MATRIX_RAINDROPS +# undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# undef ENABLE_RGB_MATRIX_TYPING_HEATMAP +# undef ENABLE_RGB_MATRIX_DIGITAL_RAIN +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// #undef ENABLE_RGB_MATRIX_SPLASH +# undef ENABLE_RGB_MATRIX_MULTISPLASH +# undef ENABLE_RGB_MATRIX_SOLID_SPLASH +# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH #endif diff --git a/keyboards/crkbd/keymaps/gotham/keymap.c b/keyboards/crkbd/keymaps/gotham/keymap.c index 8b864277c8fa..7cf4b7fd501b 100644 --- a/keyboards/crkbd/keymaps/gotham/keymap.c +++ b/keyboards/crkbd/keymaps/gotham/keymap.c @@ -1,7 +1,7 @@ #include QMK_KEYBOARD_H #include "keycodes.h" -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE # include "oled.c" #endif @@ -78,7 +78,7 @@ layer_state_t layer_state_set_user(layer_state_t state) { #endif bool process_record_user(uint16_t keycode, keyrecord_t *record) { -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE if (record->event.pressed) { oled_timer = timer_read(); add_keylog(keycode); diff --git a/keyboards/crkbd/keymaps/gotham/oled.c b/keyboards/crkbd/keymaps/gotham/oled.c index 4d2c10b60aa7..baacc86b183a 100644 --- a/keyboards/crkbd/keymaps/gotham/oled.c +++ b/keyboards/crkbd/keymaps/gotham/oled.c @@ -246,7 +246,7 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; } -void oled_task_user(void) { +bool oled_task_user(void) { if (timer_elapsed(oled_timer) > 10000) { oled_off(); return; @@ -262,4 +262,5 @@ void oled_task_user(void) { } else { render_status_secondary(); } + return false; } diff --git a/keyboards/crkbd/keymaps/gotham/rules.mk b/keyboards/crkbd/keymaps/gotham/rules.mk index eaf8f89fd1f0..48a2c1d72aaa 100644 --- a/keyboards/crkbd/keymaps/gotham/rules.mk +++ b/keyboards/crkbd/keymaps/gotham/rules.mk @@ -2,5 +2,6 @@ MOUSEKEY_ENABLE = no EXTRAKEY_ENABLE = yes AUDIO_ENABLE = yes RGBLIGHT_ENABLE = yes -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 LTO_ENABLE = yes diff --git a/keyboards/crkbd/keymaps/jarred/rules.mk b/keyboards/crkbd/keymaps/jarred/rules.mk index 5806ce0930a0..c5a73d5bd652 100644 --- a/keyboards/crkbd/keymaps/jarred/rules.mk +++ b/keyboards/crkbd/keymaps/jarred/rules.mk @@ -3,7 +3,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = no # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/crkbd/keymaps/kidbrazil/config.h b/keyboards/crkbd/keymaps/kidbrazil/config.h index be1777e57502..e44ae520f4c9 100644 --- a/keyboards/crkbd/keymaps/kidbrazil/config.h +++ b/keyboards/crkbd/keymaps/kidbrazil/config.h @@ -56,7 +56,7 @@ along with this program. If not, see . //# define RGB_MATRIX_KEYPRESSES // reacts to keypresses // # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses) // # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects - #define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended + #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended #define RGB_MATRIX_FRAMEBUFFER_EFFECTS // # define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness) // # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness) @@ -68,48 +68,48 @@ along with this program. If not, see . /* Disable the animations you don't want/need. You will need to disable a good number of these * * because they take up a lot of space. Disable until you can successfully compile your firmware. */ - #define DISABLE_RGB_MATRIX_ALPHAS_MODS - #define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN - #define DISABLE_RGB_MATRIX_BREATHING - #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT - #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL - #define DISABLE_RGB_MATRIX_BAND_SAT - #define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT - #define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL - #define DISABLE_RGB_MATRIX_BAND_VAL - #define DISABLE_RGB_MATRIX_CYCLE_ALL - #define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT - #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN - #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL - #define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL - #define DISABLE_RGB_MATRIX_CYCLE_SPIRAL - #define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN - #define DISABLE_RGB_MATRIX_DUAL_BEACON - #define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS - #define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON - #define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS - #define DISABLE_RGB_MATRIX_SOLID_REACTIVE - #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS - #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS - #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS - #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS - #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS - #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS - #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS - #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS - #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE - #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE - #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE - #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE - #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE - #define DISABLE_RGB_MATRIX_SOLID_SPLASH - #define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH - #define DISABLE_RGB_MATRIX_SOLID_SPLASH - #define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH - #define DISABLE_RGB_MATRIX_SPLASH - #define DISABLE_RGB_MATRIX_MULTISPLASH - #define DISABLE_RGB_MATRIX_SPLASH - #define DISABLE_RGB_MATRIX_MULTISPLASH +# undef ENABLE_RGB_MATRIX_ALPHAS_MODS +# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# undef ENABLE_RGB_MATRIX_BREATHING +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# undef ENABLE_RGB_MATRIX_BAND_SAT +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# undef ENABLE_RGB_MATRIX_BAND_VAL +# undef ENABLE_RGB_MATRIX_CYCLE_ALL +# undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# undef ENABLE_RGB_MATRIX_DUAL_BEACON +# undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# undef ENABLE_RGB_MATRIX_SOLID_SPLASH +# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH +# undef ENABLE_RGB_MATRIX_SOLID_SPLASH +# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH +# undef ENABLE_RGB_MATRIX_SPLASH +# undef ENABLE_RGB_MATRIX_MULTISPLASH +# undef ENABLE_RGB_MATRIX_SPLASH +# undef ENABLE_RGB_MATRIX_MULTISPLASH #endif // Custom Font path #define OLED_FONT_H "keyboards/crkbd/keymaps/kidbrazil/glcdfont.c" diff --git a/keyboards/crkbd/keymaps/kidbrazil/keymap.c b/keyboards/crkbd/keymaps/kidbrazil/keymap.c index 3ef5998c0719..219db2243333 100644 --- a/keyboards/crkbd/keymaps/kidbrazil/keymap.c +++ b/keyboards/crkbd/keymaps/kidbrazil/keymap.c @@ -54,7 +54,7 @@ void keyboard_post_init_user(void) { // Set RGB to known state rgb_matrix_enable_noeeprom(); rgb_matrix_set_color_all(RGB_GREEN); - rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); + rgb_matrix_mode_noeeprom(RGB_MATRIX_SOLID_COLOR); user_led_enabled = true; } // [Process User Input] ------------------------------------------------------// @@ -73,7 +73,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { default: // Use process_record_keymap to reset timer on all other keypresses to awaken from idle. if (record->event.pressed) { - #ifdef OLED_DRIVER_ENABLE + #ifdef OLED_ENABLE oled_timer = timer_read32(); #endif // Restore LEDs if they are enabled by user @@ -125,7 +125,7 @@ void matrix_scan_user(void) { } } // [OLED Configuration] ------------------------------------------------------// -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE // Init Oled and Rotate.... oled_rotation_t oled_init_user(oled_rotation_t rotation) { if (!is_keyboard_master()) @@ -172,7 +172,7 @@ void render_slave_oled(void) { } // {OLED Task} -----------------------------------------------// -void oled_task_user(void) { +bool oled_task_user(void) { // First time out switches to logo as first indication of iddle. if (timer_elapsed32(oled_timer) > 100000 && timer_elapsed32(oled_timer) < 479999) { // Render logo on both halves before full timeout @@ -209,5 +209,6 @@ void oled_task_user(void) { } } } + return false; } #endif diff --git a/keyboards/crkbd/keymaps/kidbrazil/rules.mk b/keyboards/crkbd/keymaps/kidbrazil/rules.mk index c58f43c2b4c0..5566a6130b64 100644 --- a/keyboards/crkbd/keymaps/kidbrazil/rules.mk +++ b/keyboards/crkbd/keymaps/kidbrazil/rules.mk @@ -5,7 +5,8 @@ AUDIO_ENABLE = no # Audio output on port C6 MOUSEKEY_ENABLE = no RGBLIGHT_ENABLE = no RGB_MATRIX_ENABLE = yes -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # If you want to change the display of OLED, you need to change here SRC += logo_reader.c \ diff --git a/keyboards/crkbd/keymaps/manna-harbour_miryoku/config.h b/keyboards/crkbd/keymaps/manna-harbour_miryoku/config.h deleted file mode 100644 index 3f28d1323f16..000000000000 --- a/keyboards/crkbd/keymaps/manna-harbour_miryoku/config.h +++ /dev/null @@ -1,16 +0,0 @@ -// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*- - -#pragma once - -#define LAYOUT_miryoku( \ - 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, \ - N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ -) \ -LAYOUT_split_3x6_3( \ -KC_NO, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, KC_NO, \ -KC_NO, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, KC_NO, \ -KC_NO, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, KC_NO, \ - K32, K33, K34, K35, K36, K37 \ -) diff --git a/keyboards/crkbd/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/crkbd/keymaps/manna-harbour_miryoku/keymap.c deleted file mode 100644 index a852ddd05cd4..000000000000 --- a/keyboards/crkbd/keymaps/manna-harbour_miryoku/keymap.c +++ /dev/null @@ -1 +0,0 @@ -// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*- diff --git a/keyboards/crkbd/keymaps/mcrown/config.h b/keyboards/crkbd/keymaps/mcrown/config.h index e40bd639f38d..15a1f20954da 100644 --- a/keyboards/crkbd/keymaps/mcrown/config.h +++ b/keyboards/crkbd/keymaps/mcrown/config.h @@ -36,50 +36,50 @@ #define RGB_MATRIX_FRAMEBUFFER_EFFECTS /* BEGIN: Disable RGB Effects */ -// #define DISABLE_RGB_MATRIX_SOLID_COLOR -// #define DISABLE_RGB_MATRIX_ALPHAS_MODS -// #define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -// #define DISABLE_RGB_MATRIX_BREATHING -// #define DISABLE_RGB_MATRIX_BAND_SAT -// #define DISABLE_RGB_MATRIX_BAND_VAL -// #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -// #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL -// #define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT -// #define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL -// #define DISABLE_RGB_MATRIX_CYCLE_ALL -// #define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT -// #define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN -// #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN -// #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL - #define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON - #define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL - #define DISABLE_RGB_MATRIX_CYCLE_SPIRAL -// #define DISABLE_RGB_MATRIX_DUAL_BEACON - #define DISABLE_RGB_MATRIX_RAINBOW_BEACON - #define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS - #define DISABLE_RGB_MATRIX_RAINDROPS -// #define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +// #undef ENABLE_RGB_MATRIX_SOLID_COLOR +// #undef ENABLE_RGB_MATRIX_ALPHAS_MODS +// #undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +// #undef ENABLE_RGB_MATRIX_BREATHING +// #undef ENABLE_RGB_MATRIX_BAND_SAT +// #undef ENABLE_RGB_MATRIX_BAND_VAL +// #undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +// #undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +// #undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +// #undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +// #undef ENABLE_RGB_MATRIX_CYCLE_ALL +// #undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +// #undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +// #undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN +// #undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL +// #undef ENABLE_RGB_MATRIX_DUAL_BEACON +# undef ENABLE_RGB_MATRIX_RAINBOW_BEACON +# undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# undef ENABLE_RGB_MATRIX_RAINDROPS +// #undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS - /* BEGIN: RGB_MATRIX_FRAMEBUFFER_EFFECTS */ -// #define DISABLE_RGB_MATRIX_TYPING_HEATMAP -// #define DISABLE_RGB_MATRIX_DIGITAL_RAIN - /* END: RGB_MATRIX_FRAMEBUFFER_EFFECTS */ +/* BEGIN: RGB_MATRIX_FRAMEBUFFER_EFFECTS */ +// #undef ENABLE_RGB_MATRIX_TYPING_HEATMAP +// #undef ENABLE_RGB_MATRIX_DIGITAL_RAIN +/* END: RGB_MATRIX_FRAMEBUFFER_EFFECTS */ - /* BEGIN: RGB_MATRIX_KEYPRESSES */ -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -// #define DISABLE_RGB_MATRIX_SPLASH -// #define DISABLE_RGB_MATRIX_MULTISPLASH -// #define DISABLE_RGB_MATRIX_SOLID_SPLASH -// #define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH - /* END: RGB_MATRIX_KEYPRESSES */ - /* END: Disable RGB Effects */ +/* BEGIN: RGB_MATRIX_KEYPRESSES */ +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// #undef ENABLE_RGB_MATRIX_SPLASH +// #undef ENABLE_RGB_MATRIX_MULTISPLASH +// #undef ENABLE_RGB_MATRIX_SOLID_SPLASH +// #undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH +/* END: RGB_MATRIX_KEYPRESSES */ +/* END: Disable RGB Effects */ #endif /* To tell the compiler to use custom font */ diff --git a/keyboards/crkbd/keymaps/mcrown/oled.c b/keyboards/crkbd/keymaps/mcrown/oled.c index b728a5806e09..9623b921a7e6 100644 --- a/keyboards/crkbd/keymaps/mcrown/oled.c +++ b/keyboards/crkbd/keymaps/mcrown/oled.c @@ -308,7 +308,7 @@ static void render_logo(void){ * @param void. * @return void. */ -void oled_task_user(void){ +bool oled_task_user(void){ if (timer_elapsed32(standby_oled_timer) > 15000){ oled_off(); }else{ @@ -321,6 +321,7 @@ void oled_task_user(void){ oled_scroll_left(); } } + return false; } /** @brief process the current key and add it to the keylog string. diff --git a/keyboards/crkbd/keymaps/mcrown/rules.mk b/keyboards/crkbd/keymaps/mcrown/rules.mk index df09acc6c0a1..922e246ba9ad 100644 --- a/keyboards/crkbd/keymaps/mcrown/rules.mk +++ b/keyboards/crkbd/keymaps/mcrown/rules.mk @@ -5,8 +5,9 @@ # MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = no # Audio control and System control(+450) -RGB_MATRIX_ENABLE = yes # Enable RGB Matrix. -OLED_DRIVER_ENABLE = yes +RGB_MATRIX_ENABLE = yes # Enable RGB Matrix. +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend diff --git a/keyboards/crkbd/keymaps/ninjonas/config.h b/keyboards/crkbd/keymaps/ninjonas/config.h index d5b9a86985b6..0c0819130f70 100644 --- a/keyboards/crkbd/keymaps/ninjonas/config.h +++ b/keyboards/crkbd/keymaps/ninjonas/config.h @@ -37,51 +37,51 @@ along with this program. If not, see . // #define RGB_MATRIX_KEYPRESSES #define RGB_MATRIX_FRAMEBUFFER_EFFECTS - // BEGIN: Disable RGB Effects - //#define DISABLE_RGB_MATRIX_SOLID_COLOR - //#define DISABLE_RGB_MATRIX_ALPHAS_MODS - //#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN - #define DISABLE_RGB_MATRIX_BREATHING - #define DISABLE_RGB_MATRIX_BAND_SAT - #define DISABLE_RGB_MATRIX_BAND_VAL - // #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT - #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL - #define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT - #define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL - #define DISABLE_RGB_MATRIX_CYCLE_ALL - #define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT - #define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN - #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN - #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL - #define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON - #define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL - #define DISABLE_RGB_MATRIX_CYCLE_SPIRAL - #define DISABLE_RGB_MATRIX_DUAL_BEACON - #define DISABLE_RGB_MATRIX_RAINBOW_BEACON - #define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS - #define DISABLE_RGB_MATRIX_RAINDROPS - #define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +// BEGIN: Disable RGB Effects +//#undef ENABLE_RGB_MATRIX_SOLID_COLOR +//#undef ENABLE_RGB_MATRIX_ALPHAS_MODS +//#undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# undef ENABLE_RGB_MATRIX_BREATHING +# undef ENABLE_RGB_MATRIX_BAND_SAT +# undef ENABLE_RGB_MATRIX_BAND_VAL +// #undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# undef ENABLE_RGB_MATRIX_CYCLE_ALL +# undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# undef ENABLE_RGB_MATRIX_DUAL_BEACON +# undef ENABLE_RGB_MATRIX_RAINBOW_BEACON +# undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# undef ENABLE_RGB_MATRIX_RAINDROPS +# undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS - // BEGIN: RGB_MATRIX_FRAMEBUFFER_EFFECTS - #define DISABLE_RGB_MATRIX_TYPING_HEATMAP - // #define DISABLE_RGB_MATRIX_DIGITAL_RAIN - // END: RGB_MATRIX_FRAMEBUFFER_EFFECTS +// BEGIN: RGB_MATRIX_FRAMEBUFFER_EFFECTS +# undef ENABLE_RGB_MATRIX_TYPING_HEATMAP +// #undef ENABLE_RGB_MATRIX_DIGITAL_RAIN +// END: RGB_MATRIX_FRAMEBUFFER_EFFECTS - // BEGIN: RGB_MATRIX_KEYPRESSES - #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE - #define DISABLE_RGB_MATRIX_SOLID_REACTIVE - #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE - #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE - #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS - #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS - #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS - #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS - #define DISABLE_RGB_MATRIX_SPLASH - #define DISABLE_RGB_MATRIX_MULTISPLASH - #define DISABLE_RGB_MATRIX_SOLID_SPLASH - #define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH - // END: RGB_MATRIX_KEYPRESSES - // END: Disable RGB Effects +// BEGIN: RGB_MATRIX_KEYPRESSES +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# undef ENABLE_RGB_MATRIX_SPLASH +# undef ENABLE_RGB_MATRIX_MULTISPLASH +# undef ENABLE_RGB_MATRIX_SOLID_SPLASH +# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH +// END: RGB_MATRIX_KEYPRESSES +// END: Disable RGB Effects #endif #define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c" diff --git a/keyboards/crkbd/keymaps/ninjonas/rules.mk b/keyboards/crkbd/keymaps/ninjonas/rules.mk index 3c3bf923e641..c40a827798ac 100644 --- a/keyboards/crkbd/keymaps/ninjonas/rules.mk +++ b/keyboards/crkbd/keymaps/ninjonas/rules.mk @@ -1,6 +1,7 @@ RGB_MATRIX_ENABLE = yes MOUSEKEY_ENABLE = no -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 LTO_ENABLE = yes # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE diff --git a/keyboards/crkbd/keymaps/oled_sample/keymap.c b/keyboards/crkbd/keymaps/oled_sample/keymap.c index b8c3985fb986..9daae9607d4c 100644 --- a/keyboards/crkbd/keymaps/oled_sample/keymap.c +++ b/keyboards/crkbd/keymaps/oled_sample/keymap.c @@ -74,7 +74,7 @@ layer_state_t layer_state_set_user(layer_state_t state) { } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { if (is_keyboard_master()) { return OLED_ROTATION_270; @@ -190,13 +190,14 @@ void render_status_main(void) { render_keylogger_status(); } -void oled_task_user(void) { +bool oled_task_user(void) { update_log(); if (is_keyboard_master()) { render_status_main(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) } else { render_crkbd_logo(); } + return false; } bool process_record_user(uint16_t keycode, keyrecord_t *record) { diff --git a/keyboards/crkbd/keymaps/oled_sample/rules.mk b/keyboards/crkbd/keymaps/oled_sample/rules.mk index fb480bba88c9..d9db223cfa5e 100644 --- a/keyboards/crkbd/keymaps/oled_sample/rules.mk +++ b/keyboards/crkbd/keymaps/oled_sample/rules.mk @@ -4,4 +4,5 @@ # the appropriate keymap folder that will get included automatically # RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/crkbd/keymaps/oo/keymap.c b/keyboards/crkbd/keymaps/oo/keymap.c index 17d5788d6dc9..bcc296c8b603 100644 --- a/keyboards/crkbd/keymaps/oo/keymap.c +++ b/keyboards/crkbd/keymaps/oo/keymap.c @@ -60,7 +60,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE #include oled_rotation_t oled_init_user(oled_rotation_t rotation) { if (!is_keyboard_master()) { @@ -148,13 +148,14 @@ void oled_render_logo(void) { oled_write_P(crkbd_logo, false); } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { oled_render_layer_state(); oled_render_keylog(); } else { oled_render_logo(); } + return false; } bool process_record_user(uint16_t keycode, keyrecord_t *record) { @@ -163,4 +164,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } -#endif // OLED_DRIVER_ENABLE +#endif // OLED_ENABLE diff --git a/keyboards/crkbd/keymaps/oo/rules.mk b/keyboards/crkbd/keymaps/oo/rules.mk index c582662134c4..d34d066ded93 100644 --- a/keyboards/crkbd/keymaps/oo/rules.mk +++ b/keyboards/crkbd/keymaps/oo/rules.mk @@ -1 +1,2 @@ -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/crkbd/keymaps/rarick/config.h b/keyboards/crkbd/keymaps/rarick/config.h new file mode 100644 index 000000000000..dca1af4cafb2 --- /dev/null +++ b/keyboards/crkbd/keymaps/rarick/config.h @@ -0,0 +1,48 @@ +/* +This is the c configuration file for the keymap + +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + + +/* Select hand configuration */ + +#define MASTER_LEFT +// #define MASTER_RIGHT +// #define EE_HANDS + +#define TAPPING_FORCE_HOLD +#define TAPPING_TERM 100 + +#ifdef RGBLIGHT_ENABLE + #undef RGBLED_NUM + #define RGBLIGHT_ANIMATIONS + #define RGBLED_NUM 27 + #define RGBLIGHT_LIMIT_VAL 120 + #define RGBLIGHT_HUE_STEP 10 + #define RGBLIGHT_SAT_STEP 17 + #define RGBLIGHT_VAL_STEP 17 +#endif + +// Sets path to OLED font +#define OLED_FONT_H "keyboards/crkbd/keymaps/rarick/glcdfont.c" + +// Limits maximum brightness of LEDs to 150 out of 255 +// Higher may cause the controller to crash. +#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 diff --git a/keyboards/crkbd/keymaps/rarick/glcdfont.c b/keyboards/crkbd/keymaps/rarick/glcdfont.c new file mode 100644 index 000000000000..ae81ba573765 --- /dev/null +++ b/keyboards/crkbd/keymaps/rarick/glcdfont.c @@ -0,0 +1,233 @@ +// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0. +// See gfxfont.h for newer custom bitmap font info. + +#include "progmem.h" + +// Standard ASCII 5x7 font +// Cowboy Bebop +const unsigned char font[] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, + 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, + 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, + 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, + 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, + 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, + 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, + 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, + 0x00, 0x18, 0x24, 0x18, 0x00, 0x00, + 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, + 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, + 0x26, 0x29, 0x79, 0x29, 0x26, 0x00, + 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, + 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, + 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, + 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, + 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, + 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, + 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, + 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, + 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, + 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, + 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00, + 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00, + 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, + 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, + 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, + 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, + 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, + 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, + 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, + 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, + 0x23, 0x13, 0x08, 0x64, 0x62, 0x00, + 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, + 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, + 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, + 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, + 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, + 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, + 0x00, 0x80, 0x70, 0x30, 0x00, 0x00, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, + 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, + 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, + 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, + 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, + 0x72, 0x49, 0x49, 0x49, 0x46, 0x00, + 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, + 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, + 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, + 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, + 0x41, 0x21, 0x11, 0x09, 0x07, 0x00, + 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, + 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, + 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, + 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, + 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, + 0x02, 0x01, 0x59, 0x09, 0x06, 0x00, + 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00, + 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, + 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, + 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, + 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, + 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, + 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, + 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, + 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, + 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, + 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, + 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, + 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, + 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, + 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, + 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, + 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, + 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, + 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, + 0x26, 0x49, 0x49, 0x49, 0x32, 0x00, + 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00, + 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, + 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, + 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, + 0x63, 0x14, 0x08, 0x14, 0x63, 0x00, + 0x03, 0x04, 0x78, 0x04, 0x03, 0x00, + 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, + 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, + 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, + 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, + 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, + 0x00, 0x03, 0x07, 0x08, 0x00, 0x00, + 0x20, 0x54, 0x54, 0x78, 0x40, 0x00, + 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00, + 0x38, 0x44, 0x44, 0x44, 0x28, 0x00, + 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00, + 0x38, 0x54, 0x54, 0x54, 0x18, 0x00, + 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00, + 0x18, 0x24, 0x24, 0x1C, 0x78, 0x00, + 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, + 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, + 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, + 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, + 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, + 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00, + 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, + 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, + 0x7C, 0x18, 0x24, 0x24, 0x18, 0x00, + 0x18, 0x24, 0x24, 0x18, 0x7C, 0x00, + 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, + 0x48, 0x54, 0x54, 0x54, 0x24, 0x00, + 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00, + 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, + 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, + 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, + 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, + 0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00, + 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, + 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, + 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0x00, 0x41, 0x36, 0x08, 0x00, 0x00, + 0x02, 0x01, 0x02, 0x04, 0x02, 0x00, + 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, + 0x06, 0x06, 0x06, 0x7F, 0xFF, 0xFF, + 0xFF, 0x07, 0x01, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 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, + 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC, + 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00, + 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, + 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00, + 0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B, + 0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00, + 0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE, + 0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0xFF, 0xFF, + 0xFF, 0x36, 0x3E, 0x7F, 0x3E, 0x1C, + 0x1C, 0x1C, 0x1C, 0x7F, 0xFF, 0x1C, + 0x08, 0x00, 0x00, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x00, + 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, + 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00, + 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, + 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00, + 0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20, + 0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00, + 0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F, + 0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x30, + 0x30, 0x30, 0x30, 0x7F, 0x7F, 0x7F, + 0x7F, 0x70, 0x40, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x48, + 0x54, 0x24, 0x00, 0x78, 0x54, 0x54, + 0x04, 0x78, 0x54, 0x54, 0x04, 0x00, + 0x00, 0x0C, 0x70, 0x08, 0x04, 0x78, + 0x44, 0x44, 0x3C, 0x00, 0x78, 0x40, + 0x40, 0x3C, 0x00, 0x00, 0x40, 0x48, + 0x54, 0x24, 0x00, 0x78, 0x14, 0x14, + 0x48, 0x30, 0x28, 0x7C, 0x00, 0x78, + 0x44, 0x44, 0x04, 0x78, 0x54, 0x54, + 0x04, 0x00, 0x00, 0x78, 0x44, 0x44, + 0x04, 0x78, 0x44, 0x44, 0x3C, 0x00, + 0x7C, 0x20, 0x18, 0x78, 0x30, 0x0C, + 0x78, 0x54, 0x54, 0x28, 0x78, 0x44, + 0x44, 0x3C, 0x00, 0x0C, 0x70, 0x08, + 0x44, 0x00, 0x40, 0x00, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 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/keyboards/crkbd/keymaps/rarick/keymap.c b/keyboards/crkbd/keymaps/rarick/keymap.c new file mode 100644 index 000000000000..adf955542170 --- /dev/null +++ b/keyboards/crkbd/keymaps/rarick/keymap.c @@ -0,0 +1,178 @@ +/* +Copyright 2019 @foostan +Copyright 2020 Drashna Jaelre <@drashna> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H +#include + +#define KC_SFTTB LSFT_T(KC_TAB) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_split_3x6_3( + //,-----------------------------------------------------. ,-----------------------------------------------------. + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_SFTTB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_LCTRL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + KC_LALT, MO(1), KC_SPC, KC_ENT, MO(2), KC_RGUI + //`--------------------------' `--------------------------' + + ), + + [1] = LAYOUT_split_3x6_3( + //,-----------------------------------------------------. ,-----------------------------------------------------. + _______, KC_PGUP, KC_UP, KC_PGDN, XXXXXXX, XXXXXXX, XXXXXXX, KC_7, KC_8, KC_9, KC_0, KC_DEL, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, KC_HOME, KC_4, KC_5, KC_6, XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_END, KC_1, KC_2, KC_3, XXXXXXX, _______, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + _______, _______, _______, _______, MO(3), _______ + //`--------------------------' `--------------------------' + ), + + [2] = LAYOUT_split_3x6_3( + //,-----------------------------------------------------. ,-----------------------------------------------------. + _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL, KC_LCBR, KC_RCBR, KC_PIPE, KC_GRV, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, KC_UNDS, KC_PLUS, KC_LBRC, KC_RBRC, KC_BSLS, KC_TILD, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + _______, MO(3), _______, _______, _______, _______ + //`--------------------------' `--------------------------' + ), + + [3] = LAYOUT_split_3x6_3( + //,-----------------------------------------------------. ,-----------------------------------------------------. + RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_RSFT, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + _______, _______, _______, _______, _______, _______ + //`--------------------------' `--------------------------' + ) +}; + +#ifdef OLED_DRIVER_ENABLE +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + if (!is_keyboard_master()) { + return OLED_ROTATION_180; // flips the display 180 degrees if offhand + } + return rotation; +} + +#define L_BASE 0 +#define L_LOWER 2 +#define L_RAISE 4 +#define L_ADJUST 8 + +void oled_render_layer_state(void) { + oled_write_P(PSTR("Layer: "), false); + switch (layer_state) { + case L_BASE: + oled_write_ln_P(PSTR("Spike"), false); + break; + case L_LOWER: + oled_write_ln_P(PSTR("Jet"), false); + break; + case L_RAISE: + oled_write_ln_P(PSTR("Faye"), false); + break; + case L_ADJUST: + case L_ADJUST|L_LOWER: + case L_ADJUST|L_RAISE: + case L_ADJUST|L_LOWER|L_RAISE: + oled_write_ln_P(PSTR("Ed"), false); + break; + } +} + +char keylog_str[24] = {}; + +const char code_to_name[60] = { + ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', + 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', + 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', + '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', + 'R', 'E', 'B', 'T', '_', '-', '=', '[', ']', '\\', + '#', ';', '\'', '`', ',', '.', '/', ' ', ' ', ' '}; + +void set_keylog(uint16_t keycode, keyrecord_t *record) { + char name = ' '; + if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || + (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) { keycode = keycode & 0xFF; } + if (keycode < 60) { + name = code_to_name[keycode]; + } + + // update keylog + snprintf(keylog_str, sizeof(keylog_str), "%dx%d, k%2d : %c", + record->event.key.row, record->event.key.col, + keycode, name); +} + +void oled_render_keylog(void) { + oled_write(keylog_str, false); +} + +void render_bootmagic_status(bool status) { + /* Show Ctrl-Gui Swap options */ + static const char PROGMEM logo[][2][3] = { + {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}}, + {{0x95, 0x96, 0}, {0xb5, 0xb6, 0}}, + }; + if (status) { + oled_write_ln_P(logo[0][0], false); + oled_write_ln_P(logo[0][1], false); + } else { + oled_write_ln_P(logo[1][0], false); + oled_write_ln_P(logo[1][1], false); + } +} + +void oled_render_logo(void) { + static const char PROGMEM crkbd_logo[] = { + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, + 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, + 0}; + oled_write_P(crkbd_logo, false); +} + +bool oled_task_user(void) { + if (is_keyboard_master()) { + oled_render_layer_state(); + oled_render_keylog(); + } else { + oled_render_logo(); + } + return false; +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (record->event.pressed) { + set_keylog(keycode, record); + } + return true; +} + +#endif // OLED_DRIVER_ENABLE diff --git a/keyboards/crkbd/keymaps/rarick/rules.mk b/keyboards/crkbd/keymaps/rarick/rules.mk new file mode 100644 index 000000000000..775268a1d472 --- /dev/null +++ b/keyboards/crkbd/keymaps/rarick/rules.mk @@ -0,0 +1,14 @@ +# Bootloader for the elite-c +BOOTLOADER = atmel-dfu + +# Enable RGB matric +RGB_MATRIX_ENABLE = yes + +# Enable OLED driver +OLED_DRIVER_ENABLE = yes + +# Enable media keys +EXTRAKEY_ENABLE = yes + +# Disabled to save space +MOUSEKEY_ENABLE = no diff --git a/keyboards/crkbd/keymaps/rjhilgefort/keymap.c b/keyboards/crkbd/keymaps/rjhilgefort/keymap.c index e1e0518745bf..a753b2b87220 100644 --- a/keyboards/crkbd/keymaps/rjhilgefort/keymap.c +++ b/keyboards/crkbd/keymaps/rjhilgefort/keymap.c @@ -103,7 +103,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE # include oled_rotation_t oled_init_user(oled_rotation_t rotation) { @@ -204,13 +204,14 @@ void oled_render_logo(void) { oled_write_P(crkbd_logo, false); } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { oled_render_layer_state(); oled_render_keylog(); } else { oled_render_logo(); } + return false; } bool process_record_user(uint16_t keycode, keyrecord_t *record) { @@ -219,4 +220,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } -#endif // OLED_DRIVER_ENABLE +#endif // OLED_ENABLE diff --git a/keyboards/crkbd/keymaps/rjhilgefort/rules.mk b/keyboards/crkbd/keymaps/rjhilgefort/rules.mk index a1b6e79e7e26..c6c258e255e1 100644 --- a/keyboards/crkbd/keymaps/rjhilgefort/rules.mk +++ b/keyboards/crkbd/keymaps/rjhilgefort/rules.mk @@ -4,4 +4,5 @@ BOOTLOADER = atmel-dfu # https://www.reddit.com/r/olkb/comments/9pyc0u/qmk_media_keys_are_not_working/ EXTRAKEY_ENABLE = yes -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/crkbd/keymaps/rpbaptist/config.h b/keyboards/crkbd/keymaps/rpbaptist/config.h index 6bd16725f54d..3300684d635e 100644 --- a/keyboards/crkbd/keymaps/rpbaptist/config.h +++ b/keyboards/crkbd/keymaps/rpbaptist/config.h @@ -25,7 +25,7 @@ along with this program. If not, see . /* Select hand configuration */ #define EE_HANDS -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE # undef SSD1306OLED # define OLED_TIMEOUT 600000 #endif @@ -42,7 +42,7 @@ along with this program. If not, see . #define NO_ACTION_ONESHOT #ifdef RGB_MATRIX_ENABLE -# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended # define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 # define RGB_MATRIX_HUE_STEP 8 @@ -50,50 +50,50 @@ along with this program. If not, see . # define RGB_MATRIX_VAL_STEP 10 # define RGB_MATRIX_SPD_STEP 10 -# define DISABLE_RGB_MATRIX_ALPHAS_MODS -# define DISABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT -# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -# define DISABLE_RGB_MATRIX_BREATHING -# define DISABLE_RGB_MATRIX_BAND_SAT -# define DISABLE_RGB_MATRIX_BAND_VAL -# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL -# define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT -# define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL - -// #define DISABLE_RGB_MATRIX_CYCLE_ALL -// # define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT -# define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN -# define DISABLE_RGB_MATRIX_CYCLE_OUT_IN -# define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL -# define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON -# define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL -# define DISABLE_RGB_MATRIX_CYCLE_SPIRAL -# define DISABLE_RGB_MATRIX_DUAL_BEACON -# define DISABLE_RGB_MATRIX_RAINBOW_BEACON -// #define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS -# define DISABLE_RGB_MATRIX_RAINDROPS -# define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# undef ENABLE_RGB_MATRIX_ALPHAS_MODS +# undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# undef ENABLE_RGB_MATRIX_BREATHING +# undef ENABLE_RGB_MATRIX_BAND_SAT +# undef ENABLE_RGB_MATRIX_BAND_VAL +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL + +// #undef ENABLE_RGB_MATRIX_CYCLE_ALL +// # undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# undef ENABLE_RGB_MATRIX_DUAL_BEACON +# undef ENABLE_RGB_MATRIX_RAINBOW_BEACON +// #undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# undef ENABLE_RGB_MATRIX_RAINDROPS +# undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS # define RGB_MATRIX_FRAMEBUFFER_EFFECTS -// #define DISABLE_RGB_MATRIX_TYPING_HEATMAP -# define DISABLE_RGB_MATRIX_DIGITAL_RAIN +// #undef ENABLE_RGB_MATRIX_TYPING_HEATMAP +# undef ENABLE_RGB_MATRIX_DIGITAL_RAIN # define RGB_MATRIX_KEYPRESSES // reacts to keypresses -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS - -# define DISABLE_RGB_MATRIX_SPLASH -# define DISABLE_RGB_MATRIX_MULTISPLASH -# define DISABLE_RGB_MATRIX_SOLID_SPLASH -# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +// # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS + +# undef ENABLE_RGB_MATRIX_SPLASH +# undef ENABLE_RGB_MATRIX_MULTISPLASH +# undef ENABLE_RGB_MATRIX_SOLID_SPLASH +# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH # define RGB_MATRIX_ANIMATION_SPEED_DEFAULT UINT8_MAX / 2 # define RGB_MATRIX_ANIMATION_SPEED_SLOW RGB_MATRIX_ANIMATION_SPEED_DEFAULT / 4 diff --git a/keyboards/crkbd/keymaps/rpbaptist/keymap.c b/keyboards/crkbd/keymaps/rpbaptist/keymap.c index 2dafbd2a70bf..a098c73d2c2a 100644 --- a/keyboards/crkbd/keymaps/rpbaptist/keymap.c +++ b/keyboards/crkbd/keymaps/rpbaptist/keymap.c @@ -180,7 +180,7 @@ layer_state_t layer_state_set_user(layer_state_t state) { return state; } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { if (is_keyboard_master()) { return OLED_ROTATION_270; @@ -290,7 +290,7 @@ void render_status(void) { # endif } -void oled_task_user(void) { +bool oled_task_user(void) { if (timer_elapsed32(oled_timer) > OLED_TIMEOUT) { oled_off(); return; @@ -310,6 +310,7 @@ void oled_task_user(void) { } #endif } + return false; } #endif diff --git a/keyboards/crkbd/keymaps/rpbaptist/readme.md b/keyboards/crkbd/keymaps/rpbaptist/readme.md index b9e749b5c67e..9525cf7cfe3b 100644 --- a/keyboards/crkbd/keymaps/rpbaptist/readme.md +++ b/keyboards/crkbd/keymaps/rpbaptist/readme.md @@ -51,7 +51,7 @@ This is the gaming extended layer where movement keys remain the same. This mean I took a big inspiration from Drashna's RGB configuration and tweaked it. - `RGB_UND`: Toggles underglow indicators on and off. Each layer has its own color. -- `RGB_IDL`: This will enable/disable idle mode. By default, when typing, the `DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS` will be used. When the idle timeout has exceeded the secondary animation will be activated, which is `RGB_MATRIX_CYCLE_ALL` by default. When switching to `GAMING` layer the timeout will be reduced and the idle animation changed to `RGB_MATRIX_RAINBOW_PINWHEELS`. +- `RGB_IDL`: This will enable/disable idle mode. By default, when typing, the `ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS` will be used. When the idle timeout has exceeded the secondary animation will be activated, which is `RGB_MATRIX_CYCLE_ALL` by default. When switching to `GAMING` layer the timeout will be reduced and the idle animation changed to `RGB_MATRIX_RAINBOW_PINWHEELS`. When idle mode is enabled, `RGB_MATRIX_TYPING_HEATMAP` and `RGB_MATRIX_MULTISPLASH` will be used for active animation. All others for idle animation. When disabling idle mode, the current idle animation will be activated. Additionally, on idling, the underglow layer indication will be deactivated. - There are no RGB mode cycle keys, but instead several keys to use a specific RGB directly. Each has their own default speed, although this can be changed. diff --git a/keyboards/crkbd/keymaps/rpbaptist/rules.mk b/keyboards/crkbd/keymaps/rpbaptist/rules.mk index 623de8c9412f..2366f669a0d2 100644 --- a/keyboards/crkbd/keymaps/rpbaptist/rules.mk +++ b/keyboards/crkbd/keymaps/rpbaptist/rules.mk @@ -11,7 +11,7 @@ NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: http MOUSEKEY_ENABLE = no # Mouse keys(+4700) RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite CONSOLE_ENABLE = no # Console for debug(+400) COMMAND_ENABLE = no # Commands for debug and configuration BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality @@ -28,7 +28,8 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend BOOTLOADER = qmk-dfu -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 ifeq ($(strip $(THEME)), godspeed) OPT_DEFS += -DTHEME_GODSPEED diff --git a/keyboards/crkbd/keymaps/rs/oled.c b/keyboards/crkbd/keymaps/rs/oled.c index c94dff9eda9e..bd8ae7d299d9 100644 --- a/keyboards/crkbd/keymaps/rs/oled.c +++ b/keyboards/crkbd/keymaps/rs/oled.c @@ -61,7 +61,7 @@ void keylog_set_keymap(uint16_t keycode, keyrecord_t *record) { set_keylog(keycode, record); } -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { for (layer_name_idx = 0; layer_name_idx < LAYER_DISPLAY_MAX; ++layer_name_idx) { if (state == 0 && layer_display_name[layer_name_idx].state == default_layer_state) { break; diff --git a/keyboards/crkbd/keymaps/rs/rules.mk b/keyboards/crkbd/keymaps/rs/rules.mk index 8c9897ffb456..c754ebdcbcf8 100644 --- a/keyboards/crkbd/keymaps/rs/rules.mk +++ b/keyboards/crkbd/keymaps/rs/rules.mk @@ -3,7 +3,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/crkbd/keymaps/snowe/rules.mk b/keyboards/crkbd/keymaps/snowe/rules.mk index fac462a685be..ce3b5928fadc 100644 --- a/keyboards/crkbd/keymaps/snowe/rules.mk +++ b/keyboards/crkbd/keymaps/snowe/rules.mk @@ -1,4 +1,4 @@ -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) @@ -13,7 +13,8 @@ UNICODE_ENABLE = no # Unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID SWAP_HANDS_ENABLE = no # Enable one-hand typing RGBLIGHT_TWINKLE = no -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 RGB_MATRIX_ENABLE = yes OCEAN_DREAM_ENABLE = yes diff --git a/keyboards/crkbd/keymaps/soundmonster/config.h b/keyboards/crkbd/keymaps/soundmonster/config.h index 1e58af3abec7..0687f9c5c8ce 100644 --- a/keyboards/crkbd/keymaps/soundmonster/config.h +++ b/keyboards/crkbd/keymaps/soundmonster/config.h @@ -59,11 +59,11 @@ along with this program. If not, see . # define RGB_MATRIX_KEYPRESSES // reacts to keypresses // # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses) // # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended # define RGB_MATRIX_FRAMEBUFFER_EFFECTS # define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness) # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness) -# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash. +# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash. # define RGB_MATRIX_HUE_STEP 8 # define RGB_MATRIX_SAT_STEP 8 # define RGB_MATRIX_VAL_STEP 8 @@ -71,40 +71,40 @@ along with this program. If not, see . /* Disable the animations you don't want/need. You will need to disable a good number of these * * because they take up a lot of space. Disable until you can successfully compile your firmware. */ -// # define DISABLE_RGB_MATRIX_ALPHAS_MODS -# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -# define DISABLE_RGB_MATRIX_BREATHING -// # define DISABLE_RGB_MATRIX_BAND_SAT -# define DISABLE_RGB_MATRIX_BAND_VAL -# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL -# define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT -# define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL -# define DISABLE_RGB_MATRIX_CYCLE_ALL -# define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT -# define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN -# define DISABLE_RGB_MATRIX_CYCLE_OUT_IN -# define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL -// # define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON -# define DISABLE_RGB_MATRIX_DUAL_BEACON -# define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL -# define DISABLE_RGB_MATRIX_CYCLE_SPIRAL -# define DISABLE_RGB_MATRIX_RAINBOW_BEACON -# define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS -// # define DISABLE_RGB_MATRIX_RAINDROPS -# define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS -// # define DISABLE_RGB_MATRIX_TYPING_HEATMAP -// # define DISABLE_RGB_MATRIX_DIGITAL_RAIN -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -# define DISABLE_RGB_MATRIX_SPLASH -// # define DISABLE_RGB_MATRIX_MULTISPLASH -# define DISABLE_RGB_MATRIX_SOLID_SPLASH -# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH +// # undef ENABLE_RGB_MATRIX_ALPHAS_MODS +# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# undef ENABLE_RGB_MATRIX_BREATHING +// # undef ENABLE_RGB_MATRIX_BAND_SAT +# undef ENABLE_RGB_MATRIX_BAND_VAL +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# undef ENABLE_RGB_MATRIX_CYCLE_ALL +# undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +// # undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# undef ENABLE_RGB_MATRIX_DUAL_BEACON +# undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# undef ENABLE_RGB_MATRIX_RAINBOW_BEACON +# undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +// # undef ENABLE_RGB_MATRIX_RAINDROPS +# undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +// # undef ENABLE_RGB_MATRIX_TYPING_HEATMAP +// # undef ENABLE_RGB_MATRIX_DIGITAL_RAIN +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +// # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# undef ENABLE_RGB_MATRIX_SPLASH +// # undef ENABLE_RGB_MATRIX_MULTISPLASH +# undef ENABLE_RGB_MATRIX_SOLID_SPLASH +# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH #endif diff --git a/keyboards/crkbd/keymaps/soundmonster/keymap.c b/keyboards/crkbd/keymaps/soundmonster/keymap.c index 144586969dd6..98afe3685f29 100644 --- a/keyboards/crkbd/keymaps/soundmonster/keymap.c +++ b/keyboards/crkbd/keymaps/soundmonster/keymap.c @@ -7,7 +7,7 @@ extern keymap_config_t keymap_config; extern rgblight_config_t rgblight_config; #endif -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE static uint32_t oled_timer = 0; #endif @@ -102,7 +102,7 @@ void matrix_init_user(void) { #endif } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; } void render_space(void) { @@ -300,7 +300,7 @@ void suspend_power_down_user() { oled_off(); } -void oled_task_user(void) { +bool oled_task_user(void) { if (timer_elapsed32(oled_timer) > 30000) { oled_off(); return; @@ -314,12 +314,13 @@ void oled_task_user(void) { } else { render_status_secondary(); } + return false; } #endif bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (record->event.pressed) { -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_timer = timer_read32(); #endif // set_timelog(); diff --git a/keyboards/crkbd/keymaps/soundmonster/rules.mk b/keyboards/crkbd/keymaps/soundmonster/rules.mk index a73e6fe027c6..62971258e9fd 100644 --- a/keyboards/crkbd/keymaps/soundmonster/rules.mk +++ b/keyboards/crkbd/keymaps/soundmonster/rules.mk @@ -2,5 +2,6 @@ RGBLIGHT_ENABLE = no RGB_MATRIX_ENABLE = yes MOUSEKEY_ENABLE = no NKRO_ENABLE = yes -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/crkbd/keymaps/sulrich/README.md b/keyboards/crkbd/keymaps/sulrich/README.md new file mode 100644 index 000000000000..0bb585aa2eac --- /dev/null +++ b/keyboards/crkbd/keymaps/sulrich/README.md @@ -0,0 +1,72 @@ +# sulrich crkbd layout + +this is the personal keyboard layout of [@sulrich](https://github.com/sulrich), +and is heavily oriented towards operation in the Mac OS environment. + +there are no LED rules in this keymap and the OLED display uses the default +corne images + +## layout notes + +this layout uses a standard QWERTY layout on the default layer followed by a +separate layer for symbols and numbers (and F-keys) + +### thumb cluster: left + +this contains the Mac OS modifier keys as well as the enter key. these are +transparently mapped through the remaining layers with the exception of the +enter key which is toggled to backspace on the symbols layer. + +### thumb cluster: right + +the largest right thumb button provides the space and the layer toggles. + +### default layer +```text + //,-----------------------------------------------------. ,-----------------------------------------------------. + TAB, Q, W, E, R, T, Y, U, I, O, P, \, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + LCTL, A, S, D, F, G, H, J, K, L, ;, ', + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + LSFT, Z, X, C, V, B, N, M, ,, ., /, RSFT, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + OPT, CMD, ENTER, SPC, MO(1), MO(2) + //`--------------------------' `--------------------------' +``` + +### symbols layer [1] + +this layer contains all of the standard symbols. the arrow keys are mapped to +the default vi bindings for single character motion (h, j, k, l). + +```text + //,-----------------------------------------------------. ,-----------------------------------------------------. + ESC, !, @, {, }, |, ^, +, =, -, *, , + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + , #, $, (, ), `, LEFT, DOWN, UP, RIGHT, , ENTER, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + , %, ^, [, ], ~, _, &, <, >, \, , + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + OPT, CMD, BSPACE, SPC, MO(1), MO(2) + //`--------------------------' `--------------------------' +``` + +### number/media layer [2] + +this layer has all of the numbers and the F-keys mapped to reasonably intuitive +locations. additionally, media controls allow for quick access to volume and +track changes. + +```text + //,-----------------------------------------------------. ,-----------------------------------------------------. + ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + , 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, F12, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + , PREV, PLAY, NEXT, VOL_DN, VOL_UP, , MUTE, , , , , + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + OPT, CMD, ENTER, SPC, MO(1), MO(2) + //`--------------------------' `--------------------------' + +``` + diff --git a/keyboards/crkbd/keymaps/sulrich/config.h b/keyboards/crkbd/keymaps/sulrich/config.h new file mode 100644 index 000000000000..29b1f44191d0 --- /dev/null +++ b/keyboards/crkbd/keymaps/sulrich/config.h @@ -0,0 +1,36 @@ +/* +This is the c configuration file for the keymap + +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +/* select hand configuration */ +#define MASTER_LEFT + +#ifdef RGBLIGHT_ENABLE + #undef RGBLED_NUM + #define RGBLIGHT_ANIMATIONS + #define RGBLED_NUM 27 + #define RGBLIGHT_LIMIT_VAL 120 + #define RGBLIGHT_HUE_STEP 10 + #define RGBLIGHT_SAT_STEP 17 + #define RGBLIGHT_VAL_STEP 17 +#endif + +#define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c" diff --git a/keyboards/crkbd/keymaps/sulrich/keymap.c b/keyboards/crkbd/keymaps/sulrich/keymap.c new file mode 100644 index 000000000000..84668b53c85d --- /dev/null +++ b/keyboards/crkbd/keymaps/sulrich/keymap.c @@ -0,0 +1,156 @@ +/* +Copyright 2021 @sulrich + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_split_3x6_3( + //,-----------------------------------------------------. ,-----------------------------------------------------. + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + KC_LOPT, KC_LGUI, KC_ENT, KC_SPC, MO(1), MO(2) + //`--------------------------' `--------------------------' + + ), + + [1] = LAYOUT_split_3x6_3( + //,-----------------------------------------------------. ,-----------------------------------------------------. + KC_ESC, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_CIRC, KC_PLUS,KC_EQUAL,KC_MINUS, KC_ASTR, KC_TRNS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_TRNS, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN,KC_GRAVE, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT, KC_TRNS,KC_ENTER, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_TRNS, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_UNDS, KC_AMPR, KC_LABK, KC_RABK,KC_BSLASH,KC_TRNS, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + KC_TRNS, KC_TRNS,KC_BSPACE, KC_TRNS, KC_TRNS, KC_TRNS + //`--------------------------' `--------------------------' + ), + + [2] = LAYOUT_split_3x6_3( + //,-----------------------------------------------------. ,-----------------------------------------------------. + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_F12, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_TRNS, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + KC_TRNS, KC_TRNS, KC_ENT, KC_TRNS, KC_TRNS, KC_TRNS + //`--------------------------' `--------------------------' + ) +}; + +#ifdef OLED_ENABLE +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + if (!is_keyboard_master()) { + return OLED_ROTATION_180; // flips the display 180 degrees if offhand + } + return rotation; +} + +#define L_BASE 0 +#define L_SYMBOLS 2 +#define L_NUMBERS 4 + +void oled_render_layer_state(void) { + oled_write_P(PSTR("layer: "), false); + switch (layer_state) { + case L_BASE: + oled_write_ln_P(PSTR("default"), false); + break; + case L_SYMBOLS: + oled_write_ln_P(PSTR("symbols"), false); + break; + case L_NUMBERS: + oled_write_ln_P(PSTR("numbers/media"), false); + break; + } +} + + +char keylog_str[24] = {}; + +const char code_to_name[60] = { + ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', + 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', + 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', + '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', + 'R', 'E', 'B', 'T', '_', '-', '=', '[', ']', '\\', + '#', ';', '\'', '`', ',', '.', '/', ' ', ' ', ' '}; + +void set_keylog(uint16_t keycode, keyrecord_t *record) { + char name = ' '; + if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || + (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) { keycode = keycode & 0xFF; } + if (keycode < 60) { + name = code_to_name[keycode]; + } + + // update keylog + snprintf(keylog_str, sizeof(keylog_str), "%dx%d, k%2d : %c", + record->event.key.row, record->event.key.col, + keycode, name); +} + +void oled_render_keylog(void) { + oled_write(keylog_str, false); +} + +void render_bootmagic_status(bool status) { + /* Show ctrl-Gui Swap options */ + static const char PROGMEM logo[][2][3] = { + {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}}, + {{0x95, 0x96, 0}, {0xb5, 0xb6, 0}}, + }; + if (status) { + oled_write_ln_P(logo[0][0], false); + oled_write_ln_P(logo[0][1], false); + } else { + oled_write_ln_P(logo[1][0], false); + oled_write_ln_P(logo[1][1], false); + } +} + +void oled_render_logo(void) { + static const char PROGMEM crkbd_logo[] = { + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, + 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, + 0}; + oled_write_P(crkbd_logo, false); +} + +bool oled_task_user(void) { + if (is_keyboard_master()) { + oled_render_layer_state(); + oled_render_keylog(); + } else { + oled_render_logo(); + } + return false; +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (record->event.pressed) { + set_keylog(keycode, record); + } + return true; +} +#endif // OLED_ENABLE diff --git a/keyboards/crkbd/keymaps/sulrich/rules.mk b/keyboards/crkbd/keymaps/sulrich/rules.mk new file mode 100644 index 000000000000..24d83947a9ef --- /dev/null +++ b/keyboards/crkbd/keymaps/sulrich/rules.mk @@ -0,0 +1,3 @@ +EXTRAKEY_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/crkbd/keymaps/thumb_ctrl/rules.mk b/keyboards/crkbd/keymaps/thumb_ctrl/rules.mk index b2014be78aad..e1d691834d9c 100755 --- a/keyboards/crkbd/keymaps/thumb_ctrl/rules.mk +++ b/keyboards/crkbd/keymaps/thumb_ctrl/rules.mk @@ -3,7 +3,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = no # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/crkbd/keymaps/vayashiko/config.h b/keyboards/crkbd/keymaps/vayashiko/config.h new file mode 100644 index 000000000000..dd6cca89e45e --- /dev/null +++ b/keyboards/crkbd/keymaps/vayashiko/config.h @@ -0,0 +1,42 @@ +/* +This is the c configuration file for the keymap + +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +//#define USE_MATRIX_I2C + +/* Select hand configuration */ + +#define MASTER_LEFT +// #define MASTER_RIGHT +// #define EE_HANDS + + + +#define TAPPING_FORCE_HOLD +#define TAPPING_TERM 100 + +#undef RGBLED_NUM +#define RGBLIGHT_ANIMATIONS +#define RGBLED_NUM 42 +#define RGBLIGHT_LIMIT_VAL 120 +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 17 +#define RGBLIGHT_VAL_STEP 17 diff --git a/keyboards/crkbd/keymaps/vayashiko/keymap.c b/keyboards/crkbd/keymaps/vayashiko/keymap.c new file mode 100644 index 000000000000..ecb629f30d99 --- /dev/null +++ b/keyboards/crkbd/keymaps/vayashiko/keymap.c @@ -0,0 +1,183 @@ +/* +Copyright 2019 @foostan +Copyright 2020 Drashna Jaelre <@drashna> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H +#include "keymap_jp.h" + +enum custom_layers { + _QWERTY, + _LOWER, + _RAISE, + _ADJUST, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QWERTY] = LAYOUT_split_3x6_3( + //,-----------------------------------------------------. ,-----------------------------------------------------. + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_LALT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + KC_LCTRL, MO(1), KC_SPC, KC_ENT, MO(2), KC_RALT + //`--------------------------' `--------------------------' + + ), + + [_LOWER] = LAYOUT_split_3x6_3( + //,-----------------------------------------------------. ,-----------------------------------------------------. + KC_DELETE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, XXXXXXX, KC_7, KC_8, KC_9, JP_MINS,KC_DELETE, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_LALT, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, KC_4, KC_5, KC_6, JP_PLUS,LSFT(KC_CAPS), + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_LSFT, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_0, KC_1, KC_2, KC_3, KC_DOT, KC_RSFT, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + KC_LCTRL, _______, KC_SPC, KC_ENT, MO(3), KC_RALT + //`--------------------------' `--------------------------' + ), + + [_RAISE] = LAYOUT_split_3x6_3( + //,-----------------------------------------------------. ,-----------------------------------------------------. + KC_ESC, JP_EXLM, JP_DQT, JP_HASH, KC_DLR, JP_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_MINS, JP_CIRC, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_LCTL, KC_GRV, XXXXXXX, XXXXXXX, KC_MHEN, KC_G, XXXXXXX, KC_HENK, JP_LBRC, JP_RBRC, XXXXXXX, JP_YEN, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, JP_EQL,JP_AT,LSFT(JP_LBRC),LSFT(JP_RBRC),XXXXXXX,JP_UNDS, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + KC_LGUI, MO(3), KC_SPC, KC_ENT, _______, KC_RALT + //`--------------------------' `--------------------------' + ), + + [_ADJUST] = LAYOUT_split_3x6_3( + //,-----------------------------------------------------. ,-----------------------------------------------------. + KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UP, XXXXXXX, XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_LCTL, KC_HOME, KC_S, XXXXXXX, KC_END, KC_G, XXXXXXX, KC_LEFT, KC_DOWN,KC_RIGHT, XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_LSFT, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_DOWN, XXXXXXX, XXXXXXX, KC_RSFT, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + KC_LGUI, _______, KC_SPC, KC_ENT, _______, KC_RALT + //`--------------------------' `--------------------------' + ) +}; + +#ifdef OLED_ENABLE +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + if (!is_master) { + return OLED_ROTATION_180; // flips the display 180 degrees if offhand + } + return rotation; +} + +#define L_BASE 0 +#define L_LOWER 2 +#define L_RAISE 4 +#define L_ADJUST 8 + +void oled_render_layer_state(void) { + oled_write_P(PSTR("Layer: "), false); + switch (layer_state) { + case L_BASE: + oled_write_ln_P(PSTR("Default"), false); + break; + case L_LOWER: + oled_write_ln_P(PSTR("Lower"), false); + break; + case L_RAISE: + oled_write_ln_P(PSTR("Raise"), false); + break; + case L_ADJUST: + case L_ADJUST|L_LOWER: + case L_ADJUST|L_RAISE: + case L_ADJUST|L_LOWER|L_RAISE: + oled_write_ln_P(PSTR("Adjust"), false); + break; + } +} + + +char keylog_str[24] = {}; + +const char code_to_name[60] = { + ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', + 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', + 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', + '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', + 'R', 'E', 'B', 'T', '_', '-', '=', '[', ']', '\\', + '#', ';', '\'', '`', ',', '.', '/', ' ', ' ', ' '}; + +void set_keylog(uint16_t keycode, keyrecord_t *record) { + char name = ' '; + if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || + (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) { keycode = keycode & 0xFF; } + if (keycode < 60) { + name = code_to_name[keycode]; + } + + // update keylog + snprintf(keylog_str, sizeof(keylog_str), "%dx%d, k%2d : %c", + record->event.key.row, record->event.key.col, + keycode, name); +} + +void oled_render_keylog(void) { + oled_write(keylog_str, false); +} + +void render_bootmagic_status(bool status) { + /* Show Ctrl-Gui Swap options */ + static const char PROGMEM logo[][2][3] = { + {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}}, + {{0x95, 0x96, 0}, {0xb5, 0xb6, 0}}, + }; + if (status) { + oled_write_ln_P(logo[0][0], false); + oled_write_ln_P(logo[0][1], false); + } else { + oled_write_ln_P(logo[1][0], false); + oled_write_ln_P(logo[1][1], false); + } +} + +void oled_render_logo(void) { + static const char PROGMEM crkbd_logo[] = { + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, + 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, + 0}; + oled_write_P(crkbd_logo, false); +} + +bool oled_task_user(void) { + if (is_master) { + oled_render_layer_state(); + oled_render_keylog(); + } else { + oled_render_logo(); + } + return false; +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (record->event.pressed) { + set_keylog(keycode, record); + } + return true; +} +#endif // OLED_ENABLE diff --git a/keyboards/crkbd/keymaps/vayashiko/rules.mk b/keyboards/crkbd/keymaps/vayashiko/rules.mk new file mode 100644 index 000000000000..b8ba8384223c --- /dev/null +++ b/keyboards/crkbd/keymaps/vayashiko/rules.mk @@ -0,0 +1,31 @@ + +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys(+4700) +EXTRAKEY_ENABLE = no # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = no # Commands for debug and configuration +NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = no # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. +SWAP_HANDS_ENABLE = no # Enable one-hand typing + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + +# If you want to change the display of OLED, you need to change here +SRC += ./lib/glcdfont.c \ + ./lib/rgb_state_reader.c \ + ./lib/layer_state_reader.c \ + ./lib/logo_reader.c \ + ./lib/keylogger.c \ + # ./lib/mode_icon_reader.c \ + # ./lib/host_led_state_reader.c \ + # ./lib/timelogger.c \ diff --git a/keyboards/crkbd/keymaps/via/config.h b/keyboards/crkbd/keymaps/via/config.h index aa2d45e56d43..fc8e7c47814d 100644 --- a/keyboards/crkbd/keymaps/via/config.h +++ b/keyboards/crkbd/keymaps/via/config.h @@ -16,31 +16,25 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ - - #pragma once -//#define USE_MATRIX_I2C -#ifdef KEYBOARD_crkbd_rev1_legacy -# undef USE_I2C -# define USE_SERIAL -#endif - /* Select hand configuration */ #define MASTER_LEFT // #define MASTER_RIGHT // #define EE_HANDS -#define USE_SERIAL_PD2 - - -#undef RGBLED_NUM -#define RGBLIGHT_ANIMATIONS -#define RGBLED_NUM 27 -#define RGBLIGHT_LIMIT_VAL 120 -#define RGBLIGHT_HUE_STEP 10 -#define RGBLIGHT_SAT_STEP 17 -#define RGBLIGHT_VAL_STEP 17 +#ifdef RGBLIGHT_ENABLE +# undef RGBLED_NUM +# define RGBLIGHT_ANIMATIONS +# define RGBLED_NUM 54 +# undef RGBLED_SPLIT +# define RGBLED_SPLIT \ + { 27, 27 } +# define RGBLIGHT_LIMIT_VAL 120 +# define RGBLIGHT_HUE_STEP 10 +# define RGBLIGHT_SAT_STEP 17 +# define RGBLIGHT_VAL_STEP 17 +#endif #define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c" diff --git a/keyboards/crkbd/keymaps/via/keymap.c b/keyboards/crkbd/keymaps/via/keymap.c index 4735255eaecc..12c86f6bbceb 100644 --- a/keyboards/crkbd/keymaps/via/keymap.c +++ b/keyboards/crkbd/keymaps/via/keymap.c @@ -69,7 +69,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE #include oled_rotation_t oled_init_user(oled_rotation_t rotation) { @@ -158,13 +158,14 @@ void oled_render_logo(void) { oled_write_P(crkbd_logo, false); } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { oled_render_layer_state(); oled_render_keylog(); } else { oled_render_logo(); } + return false; } bool process_record_user(uint16_t keycode, keyrecord_t *record) { @@ -173,4 +174,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } -#endif // OLED_DRIVER_ENABLE +#endif // OLED_ENABLE diff --git a/keyboards/crkbd/keymaps/via/rules.mk b/keyboards/crkbd/keymaps/via/rules.mk index 93b2afed4470..69841c2358f7 100644 --- a/keyboards/crkbd/keymaps/via/rules.mk +++ b/keyboards/crkbd/keymaps/via/rules.mk @@ -1,5 +1,6 @@ MOUSEKEY_ENABLE = no # Mouse keys RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. VIA_ENABLE = yes # Enable VIA -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 LTO_ENABLE = yes diff --git a/keyboards/crkbd/keymaps/vxid/rules.mk b/keyboards/crkbd/keymaps/vxid/rules.mk index 8cc80475e687..cb104fb34494 100644 --- a/keyboards/crkbd/keymaps/vxid/rules.mk +++ b/keyboards/crkbd/keymaps/vxid/rules.mk @@ -3,7 +3,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = no # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/crkbd/keymaps/xyverz/keymap.c b/keyboards/crkbd/keymaps/xyverz/keymap.c index ff9d258f0122..0b7fc0a0ac7d 100644 --- a/keyboards/crkbd/keymaps/xyverz/keymap.c +++ b/keyboards/crkbd/keymaps/xyverz/keymap.c @@ -100,7 +100,7 @@ layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { if (!is_keyboard_master()) { return OLED_ROTATION_180; // flips the display 180 degrees if offhand @@ -187,13 +187,14 @@ void oled_render_logo(void) { oled_write_P(crkbd_logo, false); } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { oled_render_layer_state(); oled_render_keylog(); } else { oled_render_logo(); } + return false; } bool process_record_user(uint16_t keycode, keyrecord_t *record) { @@ -202,4 +203,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } -#endif // OLED_DRIVER_ENABLE +#endif // OLED_ENABLE diff --git a/keyboards/crkbd/keymaps/xyverz/rules.mk b/keyboards/crkbd/keymaps/xyverz/rules.mk index 1d320c0f35c6..d34d066ded93 100644 --- a/keyboards/crkbd/keymaps/xyverz/rules.mk +++ b/keyboards/crkbd/keymaps/xyverz/rules.mk @@ -1 +1,2 @@ -OLED_DRIVER_ENABLE = yes \ No newline at end of file +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/crkbd/post_config.h b/keyboards/crkbd/post_config.h new file mode 100644 index 000000000000..00034a163cac --- /dev/null +++ b/keyboards/crkbd/post_config.h @@ -0,0 +1,43 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#ifndef BOOTMAGIC_LITE_ROW +# define BOOTMAGIC_LITE_ROW 0 +#endif +#ifndef BOOTMAGIC_LITE_COLUMN +# define BOOTMAGIC_LITE_COLUMN 1 +#endif + +#ifndef BOOTMAGIC_LITE_ROW_RIGHT +# define BOOTMAGIC_LITE_ROW_RIGHT 4 +#endif +#ifndef BOOTMAGIC_LITE_COLUMN_RIGHT +# define BOOTMAGIC_LITE_COLUMN_RIGHT 1 +#endif + +#ifdef RGBLIGHT_ENABLE +# ifndef RGBLIGHT_LIMIT_VAL +# define RGBLIGHT_LIMIT_VAL 120 +# endif +#endif + +#ifdef RGB_MATRIX_ENABLE +# ifndef RGB_MATRIX_MAXIMUM_BRIGHTNESS +# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120 +# endif +#endif diff --git a/keyboards/crkbd/readme.md b/keyboards/crkbd/readme.md index 1e5bfb39ab90..64b51f54f051 100644 --- a/keyboards/crkbd/readme.md +++ b/keyboards/crkbd/readme.md @@ -20,6 +20,12 @@ make crkbd:default See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). +## Bootloader + +The Corne PCBs have a reset button next to the TRRS jack to enter in to the bootloader. + +Additionally, if you hold down the "Q" or "P" buttons when plugging in that half of the keyboard (per the default QWERTY layout), this will jump to the bootloader and reset the EEPROM (persistent storage). This would normally be the very top corner-most position, but due to the breakaway column, it's left at Q and P for compatibility. + ## RGB Matrix The Corne Keyboard also supports using the RGB Matrix feature, in place of RGB Light. This provids a better experience when using the keyboard, as it supports a number of per key effects properly. If you're not using the in switch LEDs, then you may want to pass on doing this. @@ -38,7 +44,7 @@ And in your `config.h` file, add the following: # define RGB_MATRIX_KEYPRESSES // reacts to keypresses // # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses) // # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended # define RGB_MATRIX_FRAMEBUFFER_EFFECTS // # define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness) // # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness) @@ -50,34 +56,54 @@ And in your `config.h` file, add the following: /* Disable the animations you don't want/need. You will need to disable a good number of these * * because they take up a lot of space. Disable until you can successfully compile your firmware. */ -// # define DISABLE_RGB_MATRIX_ALPHAS_MODS -// # define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -// # define DISABLE_RGB_MATRIX_BREATHING -// # define DISABLE_RGB_MATRIX_CYCLE_ALL -// # define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT -// # define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN -// # define DISABLE_RGB_MATRIX_CYCLE_OUT_IN -// # define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL -// # define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON -// # define DISABLE_RGB_MATRIX_DUAL_BEACON -// # define DISABLE_RGB_MATRIX_RAINBOW_BEACON -// # define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS -// # define DISABLE_RGB_MATRIX_RAINDROPS -// # define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS -// # define DISABLE_RGB_MATRIX_TYPING_HEATMAP -// # define DISABLE_RGB_MATRIX_DIGITAL_RAIN -// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE -// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -// # define DISABLE_RGB_MATRIX_SPLASH -// # define DISABLE_RGB_MATRIX_MULTISPLASH -// # define DISABLE_RGB_MATRIX_SOLID_SPLASH -// # define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH #endif ``` diff --git a/keyboards/crkbd/rev1/config.h b/keyboards/crkbd/rev1/config.h index 95ffb6d5bf3c..337859d05ca1 100644 --- a/keyboards/crkbd/rev1/config.h +++ b/keyboards/crkbd/rev1/config.h @@ -22,17 +22,20 @@ along with this program. If not, see . #define SOFT_SERIAL_PIN D2 /* ws2812 RGB LED */ -#define RGB_DI_PIN D3 +#define RGB_DI_PIN D3 #ifdef RGBLIGHT_ENABLE -# define RGBLED_NUM 12 // Number of LEDs +# define RGBLED_NUM 12 // Number of LEDs +# define RGBLED_SPLIT \ + { 6, 6 } # define RGBLIGHT_SPLIT #endif #ifdef RGB_MATRIX_ENABLE -# define RGBLED_NUM 54 // Number of LEDs +# define RGBLED_NUM 54 // Number of LEDs # define DRIVER_LED_TOTAL RGBLED_NUM -# define RGB_MATRIX_SPLIT { 27, 27 } +# define RGB_MATRIX_SPLIT \ + { 27, 27 } # define SPLIT_TRANSPORT_MIRROR #endif diff --git a/keyboards/crkbd/rules.mk b/keyboards/crkbd/rules.mk index 466d9265f813..b13459080c92 100644 --- a/keyboards/crkbd/rules.mk +++ b/keyboards/crkbd/rules.mk @@ -2,39 +2,30 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # 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 +# change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = no # Audio control and System control +EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 RGB_MATRIX_ENABLE = no RGB_MATRIX_DRIVER = WS2812 -# 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 firmware size over limit, try this option # LTO_ENABLE = yes -LAYOUTS = split_3x5_3 split_3x6_3 DEFAULT_FOLDER = crkbd/rev1 + +RGBLIGHT_SUPPORTED = yes +RGB_MATRIX_SUPPORTED = yes + +LAYOUTS = split_3x5_3 split_3x6_3 diff --git a/keyboards/cu24/config.h b/keyboards/cu24/config.h index b6443ab99912..a2a4e727ff63 100644 --- a/keyboards/cu24/config.h +++ b/keyboards/cu24/config.h @@ -14,8 +14,7 @@ * along with this program. If not, see . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -94,54 +93,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -159,25 +110,3 @@ //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - -#endif diff --git a/keyboards/cu24/cu24.h b/keyboards/cu24/cu24.h index d329182d2387..8e3daa4758ae 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 . */ -#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/cu24/info.json b/keyboards/cu24/info.json index 7cd9a3f1f904..532bc13bee9e 100644 --- a/keyboards/cu24/info.json +++ b/keyboards/cu24/info.json @@ -2,8 +2,6 @@ "keyboard_name": "cu24", "url": "", "maintainer": "qmk", - "width": 4, - "height": 6, "layouts": { "LAYOUT_grid": { "layout": [{"label":"Num Lock", "x":0, "y":0}, {"label":"/", "x":1, "y":0}, {"label":"*", "x":2, "y":0}, {"label":"-", "x":3, "y":0}, {"label":"7", "x":0, "y":1}, {"label":"8", "x":1, "y":1}, {"label":"9", "x":2, "y":1}, {"label":"+", "x":3, "y":1}, {"label":"4", "x":0, "y":2}, {"label":"5", "x":1, "y":2}, {"label":"6", "x":2, "y":2}, {"x":3, "y":2}, {"label":"1", "x":0, "y":3}, {"label":"2", "x":1, "y":3}, {"label":"3", "x":2, "y":3}, {"label":"Enter", "x":3, "y":3}, {"label":"0", "x":0, "y":4}, {"x":1, "y":4}, {"label":".", "x":2, "y":4}, {"x":3, "y":4}, {"x":0, "y":5}, {"x":1, "y":5}, {"x":2, "y":5}, {"x":3, "y":5}] @@ -13,4 +11,4 @@ "layout": [{"label":"Num Lock", "x":0, "y":0}, {"label":"/", "x":1, "y":0}, {"label":"*", "x":2, "y":0}, {"label":"-", "x":3, "y":0}, {"label":"7", "x":0, "y":1}, {"label":"8", "x":1, "y":1}, {"label":"9", "x":2, "y":1}, {"label":"+", "x":3, "y":1}, {"label":"4", "x":0, "y":2}, {"label":"5", "x":1, "y":2}, {"label":"6", "x":2, "y":2}, {"x":3, "y":2, "h":2}, {"label":"1", "x":0, "y":3}, {"label":"2", "x":1, "y":3}, {"label":"3", "x":2, "y":3}, {"label":"0", "x":0, "y":4}, {"x":1, "y":4}, {"label":".", "x":2, "y":4}, {"x":3, "y":4, "h":2}, {"x":0, "y":5, "w":2}, {"x":2, "y":5}] } } -} \ No newline at end of file +} diff --git a/keyboards/cu24/rules.mk b/keyboards/cu24/rules.mk index 36641e4c3d61..07d3b59544ea 100644 --- a/keyboards/cu24/rules.mk +++ b/keyboards/cu24/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# 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 = yes # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # RGB drivers diff --git a/keyboards/cu75/config.h b/keyboards/cu75/config.h index 232a3a8ebb93..cfcb08cce1b3 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -76,54 +75,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -141,5 +92,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -#endif diff --git a/keyboards/cu75/cu75.c b/keyboards/cu75/cu75.c index 80941df39053..273dd092718b 100644 --- a/keyboards/cu75/cu75.c +++ b/keyboards/cu75/cu75.c @@ -28,12 +28,12 @@ void matrix_init_kb(void) audio_init(); PLAY_SONG(test_sound); // Fix port B5 - cbi(DDRB, 5); - sbi(PORTB, 5); + setPinInput(B5); + writePinHigh(B5); #else // If we're not using the audio pin, drive it low - sbi(DDRC, 6); - cbi(PORTC, 6); + setPinOutput(C6); + writePinLow(C6); #endif #ifdef ISSI_ENABLE issi_init(); @@ -163,13 +163,6 @@ void reset_keyboard_kb(){ reset_keyboard(); } -void led_set_kb(uint8_t usb_led) -{ - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - // LFK lighting info const uint8_t switch_matrices[] = {0, 1}; const uint8_t rgb_matrices[] = {6, 7}; diff --git a/keyboards/cu75/cu75.h b/keyboards/cu75/cu75.h index 5abce8fcd40d..444c8daaec93 100644 --- a/keyboards/cu75/cu75.h +++ b/keyboards/cu75/cu75.h @@ -1,26 +1,9 @@ -#ifndef CU75_H -#define CU75_H - -/* if the kb.h file exists (because we're running from qmkbuilder) include it */ -#ifdef __has_include -#if __has_include("kb.h") -#include "kb.h" -#endif -#endif +#pragma once #include "quantum.h" #include "matrix.h" #include -#ifndef cbi -#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) -#endif - -#ifndef sbi -#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) -#endif - - typedef struct RGB_Color { uint16_t red; uint16_t green; @@ -56,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/cu75/info.json b/keyboards/cu75/info.json index 7a8e360ab12d..07812ddb584d 100644 --- a/keyboards/cu75/info.json +++ b/keyboards/cu75/info.json @@ -2,21 +2,16 @@ "keyboard_name": "cu75", "url": "", "maintainer": "qmk", - "width": 16, - "height": 6, "layouts": { "LAYOUT": { - "key_count": 86, "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, {"label":"F2", "x":2, "y":0}, {"label":"F3", "x":3, "y":0}, {"label":"F4", "x":4, "y":0}, {"label":"F5", "x":5, "y":0}, {"label":"F6", "x":6, "y":0}, {"label":"F7", "x":7, "y":0}, {"label":"F8", "x":8, "y":0}, {"label":"F9", "x":9, "y":0}, {"label":"F10", "x":10, "y":0}, {"label":"F11", "x":11, "y":0}, {"label":"F12", "x":12, "y":0}, {"label":"PrtSc", "x":13, "y":0}, {"label":"Pause", "x":14, "y":0}, {"label":"Delete", "x":15, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"@", "x":2, "y":1}, {"label":"#", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"label":"Backspace", "x":13, "y":1, "w":2}, {"label":"Home", "x":15, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"Page Up", "x":15, "y":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"\"", "x":11.75, "y":3}, {"label":"Enter", "x":12.75, "y":3, "w":2.25}, {"label":"Page Down", "x":15, "y":3}, {"label":"Shift", "x":0, "y":4, "w":2.25}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"label":"\u2191", "x":14, "y":4}, {"label":"End", "x":15, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":2.75}, {"x":6.5, "y":5}, {"x":7.5, "y":5, "w":2.5}, {"label":"Alt", "x":10, "y":5}, {"label":"Fn", "x":11, "y":5}, {"label":"Ctrl", "x":12, "y":5}, {"label":"\u2190", "x":13, "y":5}, {"label":"\u2193", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}] }, "LAYOUT_all": { - "key_count": 89, "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, {"label":"F2", "x":2, "y":0}, {"label":"F3", "x":3, "y":0}, {"label":"F4", "x":4, "y":0}, {"label":"F5", "x":5, "y":0}, {"label":"F6", "x":6, "y":0}, {"label":"F7", "x":7, "y":0}, {"label":"F8", "x":8, "y":0}, {"label":"F9", "x":9, "y":0}, {"label":"F10", "x":10, "y":0}, {"label":"F11", "x":11, "y":0}, {"label":"F12", "x":12, "y":0}, {"label":"PrtSc", "x":13, "y":0}, {"label":"Pause", "x":14, "y":0}, {"label":"Delete", "x":15, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"@", "x":2, "y":1}, {"label":"#", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, {"label":"Home", "x":15, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"Page Up", "x":15, "y":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"\"", "x":11.75, "y":3}, {"x":12.75, "y":3}, {"label":"Enter", "x":13.75, "y":3, "w":1.25}, {"label":"Page Down", "x":15, "y":3}, {"label":"Shift", "x":0, "y":4, "w":1.25}, {"x":1.25, "y":4}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"label":"\u2191", "x":14, "y":4}, {"label":"End", "x":15, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":2.75}, {"x":6.5, "y":5}, {"x":7.5, "y":5, "w":2.5}, {"label":"Alt", "x":10, "y":5}, {"label":"Fn", "x":11, "y":5}, {"label":"Ctrl", "x":12, "y":5}, {"label":"\u2190", "x":13, "y":5}, {"label":"\u2193", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}] }, "LAYOUT_iso": { - "key_count": 87, "layout": [{"label":"k01", "x":0, "y":0}, {"label":"k02", "x":1, "y":0}, {"label":"k03", "x":2, "y":0}, {"label":"k04", "x":3, "y":0}, {"label":"k05", "x":4, "y":0}, {"label":"k06", "x":5, "y":0}, {"label":"k07", "x":6, "y":0}, {"label":"k08", "x":7, "y":0}, {"label":"k09", "x":8, "y":0}, {"label":"k0A", "x":9, "y":0}, {"label":"k0B", "x":10, "y":0}, {"label":"k0C", "x":11, "y":0}, {"label":"k0D", "x":12, "y":0}, {"label":"k0E", "x":13, "y":0}, {"label":"k0F", "x":14, "y":0}, {"label":"k0G", "x":15, "y":0}, {"label":"k11", "x":0, "y":1}, {"label":"k12", "x":1, "y":1}, {"label":"k13", "x":2, "y":1}, {"label":"k14", "x":3, "y":1}, {"label":"k15", "x":4, "y":1}, {"label":"k16", "x":5, "y":1}, {"label":"k17", "x":6, "y":1}, {"label":"k18", "x":7, "y":1}, {"label":"k19", "x":8, "y":1}, {"label":"k1A", "x":9, "y":1}, {"label":"k1B", "x":10, "y":1}, {"label":"k1C", "x":11, "y":1}, {"label":"k1D", "x":12, "y":1}, {"label":"k1E", "x":13, "y":1, "w":2}, {"label":"k1G", "x":15, "y":1}, {"label":"k21", "x":0, "y":2, "w":1.5}, {"label":"k22", "x":1.5, "y":2}, {"label":"k23", "x":2.5, "y":2}, {"label":"k24", "x":3.5, "y":2}, {"label":"k25", "x":4.5, "y":2}, {"label":"k26", "x":5.5, "y":2}, {"label":"k27", "x":6.5, "y":2}, {"label":"k28", "x":7.5, "y":2}, {"label":"k29", "x":8.5, "y":2}, {"label":"k2A", "x":9.5, "y":2}, {"label":"k2B", "x":10.5, "y":2}, {"label":"k2C", "x":11.5, "y":2}, {"label":"k2D", "x":12.5, "y":2}, {"label":"k2E", "x":13.75, "y":2, "w":1.25, "h":2}, {"label":"k2F", "x":15, "y":2}, {"label":"k31", "x":0, "y":3, "w":1.75}, {"label":"k32", "x":1.75, "y":3}, {"label":"k33", "x":2.75, "y":3}, {"label":"k34", "x":3.75, "y":3}, {"label":"k35", "x":4.75, "y":3}, {"label":"k36", "x":5.75, "y":3}, {"label":"k37", "x":6.75, "y":3}, {"label":"k38", "x":7.75, "y":3}, {"label":"k39", "x":8.75, "y":3}, {"label":"k3A", "x":9.75, "y":3}, {"label":"k3B", "x":10.75, "y":3}, {"label":"k3C", "x":11.75, "y":3}, {"label":"k3D", "x":12.75, "y":3}, {"label":"k3F", "x":15, "y":3}, {"label":"k41", "x":0, "y":4, "w":1.25}, {"label":"k42", "x":1.25, "y":4}, {"label":"k43", "x":2.25, "y":4}, {"label":"k44", "x":3.25, "y":4}, {"label":"k45", "x":4.25, "y":4}, {"label":"k46", "x":5.25, "y":4}, {"label":"k47", "x":6.25, "y":4}, {"label":"k48", "x":7.25, "y":4}, {"label":"k49", "x":8.25, "y":4}, {"label":"k4A", "x":9.25, "y":4}, {"label":"k4B", "x":10.25, "y":4}, {"label":"k4C", "x":11.25, "y":4}, {"label":"k4D", "x":12.25, "y":4, "w":1.75}, {"label":"k4E", "x":14, "y":4}, {"label":"k4F", "x":15, "y":4}, {"label":"k51", "x":0, "y":5, "w":1.25}, {"label":"k52", "x":1.25, "y":5, "w":1.25}, {"label":"k53", "x":2.5, "y":5, "w":1.25}, {"label":"k54", "x":3.75, "y":5, "w":2.25}, {"label":"k57", "x":6, "y":5, "w":1.25}, {"label":"k59", "x":7.25, "y":5, "w":2.75}, {"label":"k5A", "x":10, "y":5}, {"label":"k5B", "x":11, "y":5}, {"label":"k5C", "x":12, "y":5}, {"label":"k5D", "x":13, "y":5}, {"label":"k5E", "x":14, "y":5}, {"label":"k5F", "x":15, "y":5}] } } diff --git a/keyboards/cu75/keymaps/default/keymap.c b/keyboards/cu75/keymaps/default/keymap.c index c78c5cd121d0..923faf97d508 100644 --- a/keyboards/cu75/keymaps/default/keymap.c +++ b/keyboards/cu75/keymaps/default/keymap.c @@ -57,19 +57,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_HUD, RGB_SAI \ ), }; - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/cu75/keymaps/default/rules.mk b/keyboards/cu75/keymaps/default/rules.mk index 5eb2a0e80215..9466daf315ab 100644 --- a/keyboards/cu75/keymaps/default/rules.mk +++ b/keyboards/cu75/keymaps/default/rules.mk @@ -3,21 +3,17 @@ # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Disable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Disable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Disable RGB underlight RGBLIGHT_CUSTOM_DRIVER = yes # RGB code is implemented in lefkeyboards, not WS2812 -SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend -TAP_DANCE_ENABLE = no +SLEEP_LED_ENABLE = yes 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 diff --git a/keyboards/cu75/keymaps/iso/keymap.c b/keyboards/cu75/keymaps/iso/keymap.c index 18bd9a59ae7c..60c06905ff43 100644 --- a/keyboards/cu75/keymaps/iso/keymap.c +++ b/keyboards/cu75/keymaps/iso/keymap.c @@ -56,19 +56,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_HUD, RGB_SAI \ ), }; - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/cu75/keymaps/iso/rules.mk b/keyboards/cu75/keymaps/iso/rules.mk index 9407f1103464..d399776db591 100644 --- a/keyboards/cu75/keymaps/iso/rules.mk +++ b/keyboards/cu75/keymaps/iso/rules.mk @@ -3,21 +3,17 @@ # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = yes # Console for debug(+400) COMMAND_ENABLE = yes # Commands for debug and configuration 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 # Disable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Disable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Disable RGB underlight RGBLIGHT_CUSTOM_DRIVER = yes # RGB code is implemented in lefkeyboards, not WS2812 -SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend -TAP_DANCE_ENABLE = no +SLEEP_LED_ENABLE = yes ISSI_ENABLE = no # If the I2C pullup resistors aren't install this must be disabled WATCHDOG_ENABLE = yes # Resets keyboard if matrix_scan isn't run every 250ms diff --git a/keyboards/cu75/rules.mk b/keyboards/cu75/rules.mk index 1eb9cf8f76fd..6274267ab150 100644 --- a/keyboards/cu75/rules.mk +++ b/keyboards/cu75/rules.mk @@ -2,13 +2,6 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options diff --git a/keyboards/cu80/info.json b/keyboards/cu80/info.json index 02dd2c6a3be0..937dfd8b5abc 100644 --- a/keyboards/cu80/info.json +++ b/keyboards/cu80/info.json @@ -2,15 +2,11 @@ "keyboard_name": "CU80", "url": "https://caps-unlocked.com/group-buy-cu80/", "maintainer": "aHolland909", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT_all": { - "key_count": 88, "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"\u00ac", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"\"", "x":2, "y":1.5}, {"label":"\u00a3", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"Backspace", "x":13, "y":1.5, "w":2}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.25, "y":1.5}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":6.5, "y":2.5}, {"label":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"@", "x":11.75, "y":3.5}, {"label":"~", "x":12.75, "y":3.5}, {"label":"Enter", "x":13.75, "y":2.5, "w":1.25, "h":2}, {"label":"Shift", "x":0, "y":4.5, "w":1.25}, {"label":"|", "x":1.25, "y":4.5}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"N", "x":7.25, "y":4.5}, {"label":"M", "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":"Shift", "x":12.25, "y":4.5, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, {"label":"Win", "x":1.25, "y":5.5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"label":"AltGr", "x":10, "y":5.5, "w":1.25}, {"label":"Win", "x":11.25, "y":5.5, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.5, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}] }, "LAYOUT_tkl_ansi":{ - "key_count": 87, "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"@", "x":2, "y":1.5}, {"label":"#", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"Backspace", "x":13, "y":1.5, "w":2}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.25, "y":1.5}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":6.5, "y":2.5}, {"label":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"|", "x":13.5, "y":2.5, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, {"label":"Shift", "x":0, "y":4.5, "w":2.25}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"N", "x":7.25, "y":4.5}, {"label":"M", "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":"Shift", "x":12.25, "y":4.5, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, {"label":"Win", "x":1.25, "y":5.5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"label":"Alt", "x":10, "y":5.5, "w":1.25}, {"label":"Win", "x":11.25, "y":5.5, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.5, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}] } } diff --git a/keyboards/cu80/rules.mk b/keyboards/cu80/rules.mk index 7c27fe7f9ede..8275ccc841df 100644 --- a/keyboards/cu80/rules.mk +++ b/keyboards/cu80/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = tkl_iso tkl_ansi diff --git a/keyboards/custommk/genesis/config.h b/keyboards/custommk/genesis/config.h index a527737f00d1..72f33c155423 100644 --- a/keyboards/custommk/genesis/config.h +++ b/keyboards/custommk/genesis/config.h @@ -18,45 +18,3 @@ #include "config_common.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0xF35B -#define PRODUCT_ID 0xFAB0 -#define DEVICE_VER 0x0001 -#define MANUFACTURER customMK -#define PRODUCT Genesis - -/* key matrix size */ -#define MATRIX_ROWS 5 -#define MATRIX_COLS 4 - -/* key matrix pins */ -#define MATRIX_ROW_PINS { F0, C7, C6, B6, B5 } -#define MATRIX_COL_PINS { F4, F5, D7, B4 } -#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 - -#define ENCODERS_PAD_A { F6, D2 } -#define ENCODERS_PAD_B { F7, D1 } -#define ENCODER_RESOLUTION 4 -#define TAP_CODE_DELAY 10 - -#define RGB_DI_PIN E6 -#define RGBLIGHT_ANIMATIONS -#define RGBLED_NUM 13 -#define RGBLIGHT_HUE_STEP 8 -#define RGBLIGHT_SAT_STEP 8 -#define RGBLIGHT_VAL_STEP 8 -#define RGBLIGHT_LIMIT_VAL 128 - diff --git a/keyboards/custommk/genesis/genesis.c b/keyboards/custommk/genesis/genesis.c deleted file mode 100644 index f684d7ef7a5d..000000000000 --- a/keyboards/custommk/genesis/genesis.c +++ /dev/null @@ -1,38 +0,0 @@ -/* Copyright 2020 customMK - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "genesis.h" - -bool encoder_update_kb(uint8_t index, bool clockwise) { - if (!encoder_update_user(index, clockwise)) return false; - /* top left encoder */ - if (index == 0) { - if (clockwise) { - tap_code(KC_VOLU); - } else { - tap_code(KC_VOLD); - } - } - /* top right encoder */ - else if (index == 1) { - if (clockwise) { - tap_code(KC_VOLU); - } else { - tap_code(KC_VOLD); - } - } - return true; -} diff --git a/keyboards/custommk/genesis/genesis.h b/keyboards/custommk/genesis/genesis.h deleted file mode 100644 index ad107365230f..000000000000 --- a/keyboards/custommk/genesis/genesis.h +++ /dev/null @@ -1,48 +0,0 @@ -/* Copyright 2020 customMK - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include "quantum.h" - -#define LAYOUT_numpad_5x4( \ - K00, K01, K02, K03, \ - K10, K11, K12, \ - K20, K21, K22, K23, \ - K30, K31, K32, \ - K40, K42, K43 \ -) { \ - { K00, K01, K02, K03 }, \ - { K10, K11, K12, KC_NO }, \ - { K20, K21, K22, K23 }, \ - { K30, K31, K32, KC_NO }, \ - { K40, KC_NO, K42, K43 } \ -} - -#define LAYOUT_ortho_5x4( \ - 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 } \ -} - diff --git a/keyboards/custommk/genesis/info.json b/keyboards/custommk/genesis/info.json deleted file mode 100644 index ddba21f99e0b..000000000000 --- a/keyboards/custommk/genesis/info.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "keyboard_name": "Genesis", - "url": "https://www.customMK.com", - "maintainer": "customMK", - "width": 4, - "height": 5, - "layouts": { - "LAYOUT_ortho_5x4": { - "layout": [{"label":"MO(1)", "x":0, "y":0}, {"label":"/", "x":1, "y":0}, {"label":"*", "x":2, "y":0}, {"label":"Mute", "x":3, "y":0}, {"label":"7", "x":0, "y":1}, {"label":"8", "x":1, "y":1}, {"label":"9", "x":2, "y":1}, {"label":"+", "x":3, "y":1}, {"label":"4", "x":0, "y":2}, {"label":"5", "x":1, "y":2}, {"label":"6", "x":2, "y":2}, {"label":"Pg Up", "x":3, "y":2}, {"label":"1", "x":0, "y":3}, {"label":"2", "x":1, "y":3}, {"label":"3", "x":2, "y":3}, {"label":"Pg Dn", "x":3, "y":3}, {"label":"0", "x":0, "y":4}, {"label":"Spc", "x":1, "y":4}, {"label":".", "x":2, "y":4}, {"label":"Enter", "x":3, "y":4}] - }, - "LAYOUT_numpad_5x4": { - "layout": [{"label":"MO(1)", "x":0, "y":0}, {"label":"/", "x":1, "y":0}, {"label":"*", "x":2, "y":0}, {"label":"-", "x":3, "y":0}, {"label":"7", "x":0, "y":1}, {"label":"8", "x":1, "y":1}, {"label":"9", "x":2, "y":1}, {"label":"+", "x":3, "y":1, "h":2}, {"label":"4", "x":0, "y":2}, {"label":"5", "x":1, "y":2}, {"label":"6", "x":2, "y":2}, {"label":"1", "x":0, "y":3}, {"label":"2", "x":1, "y":3}, {"label":"3", "x":2, "y":3}, {"label":"Enter", "x":3, "y":3, "h":2}, {"label":"0", "x":0, "y":4, "w":2}, {"label":".", "x":2, "y":4}] - } - - } -} \ No newline at end of file diff --git a/keyboards/custommk/genesis/keymaps/via/keymap.c b/keyboards/custommk/genesis/keymaps/via/keymap.c deleted file mode 100644 index fe375547626e..000000000000 --- a/keyboards/custommk/genesis/keymaps/via/keymap.c +++ /dev/null @@ -1,51 +0,0 @@ -/* Copyright 2020 customMK - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [0] = LAYOUT_ortho_5x4( - MO(1), KC_PSLS, KC_PAST, KC_PMNS, - KC_P7, KC_P8, KC_P9, KC_PPLS, - KC_P4, KC_P5, KC_P6, KC_PGUP, - KC_P1, KC_P2, KC_P3, KC_PGDN, - KC_P0, KC_SPC, KC_PDOT, KC_PENT), - - [1] = LAYOUT_ortho_5x4( - KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - RGB_HUI, RGB_HUD, KC_TRNS, KC_TRNS), - - [2] = LAYOUT_ortho_5x4( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), - - [3] = LAYOUT_ortho_5x4( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), - -}; - - diff --git a/keyboards/custommk/genesis/readme.md b/keyboards/custommk/genesis/readme.md index 58bd27121a8d..bf967a2bdaf9 100644 --- a/keyboards/custommk/genesis/readme.md +++ b/keyboards/custommk/genesis/readme.md @@ -1,10 +1,10 @@ # Genesis +Genesis is a 5x4 ortholinear macro pad designed and produced by customMK. + ![Genesis Macro Pad](https://i.imgur.com/voBjLrM.jpeg) ![Genesis Macro Pad PCB](https://i.imgur.com/ST2vtkV.jpeg) -Genesis is a 5x4 ortholinear macro pad designed and produced by customMK. - * Keyboard Maintainer: [customMK](https://github.com/customMK) * Hardware Supported: Genesis Macro Pad * Hardware Availability: [customMK](https://shop.custommk.com/products/genesis_macropad) diff --git a/keyboards/custommk/genesis/rev1/config.h b/keyboards/custommk/genesis/rev1/config.h new file mode 100644 index 000000000000..3393c53302f6 --- /dev/null +++ b/keyboards/custommk/genesis/rev1/config.h @@ -0,0 +1,65 @@ +/* Copyright 2020 customMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xF35B +#define PRODUCT_ID 0xFAB0 +#define DEVICE_VER 0x0001 +#define MANUFACTURER customMK +#define PRODUCT GenesisRev1 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 4 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { F0, C7, C6, B6, B5 } +#define MATRIX_COL_PINS { F4, F5, D7, B4 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +#define ENCODERS_PAD_A { F6, D2 } +#define ENCODERS_PAD_B { F7, D1 } +#define ENCODER_RESOLUTION 2 +#define TAP_CODE_DELAY 10 + +#define RGB_DI_PIN E6 +#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 13 +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 +#define RGBLIGHT_LIMIT_VAL 128 +#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_SWIRL + 4 + diff --git a/keyboards/custommk/genesis/rev1/info.json b/keyboards/custommk/genesis/rev1/info.json new file mode 100644 index 000000000000..a000b9cfbbb0 --- /dev/null +++ b/keyboards/custommk/genesis/rev1/info.json @@ -0,0 +1,14 @@ +{ + "keyboard_name": "Genesis Rev1", + "url": "https://www.customMK.com", + "maintainer": "customMK", + "layouts": { + "LAYOUT_ortho_5x4": { + "layout": [{"label":"MO(1)", "x":0, "y":0}, {"label":"/", "x":1, "y":0}, {"label":"*", "x":2, "y":0}, {"label":"Mute", "x":3, "y":0}, {"label":"7", "x":0, "y":1}, {"label":"8", "x":1, "y":1}, {"label":"9", "x":2, "y":1}, {"label":"+", "x":3, "y":1}, {"label":"4", "x":0, "y":2}, {"label":"5", "x":1, "y":2}, {"label":"6", "x":2, "y":2}, {"label":"Pg Up", "x":3, "y":2}, {"label":"1", "x":0, "y":3}, {"label":"2", "x":1, "y":3}, {"label":"3", "x":2, "y":3}, {"label":"Pg Dn", "x":3, "y":3}, {"label":"0", "x":0, "y":4}, {"label":"Spc", "x":1, "y":4}, {"label":".", "x":2, "y":4}, {"label":"Enter", "x":3, "y":4}] + }, + "LAYOUT_numpad_5x4": { + "layout": [{"label":"MO(1)", "x":0, "y":0}, {"label":"/", "x":1, "y":0}, {"label":"*", "x":2, "y":0}, {"label":"-", "x":3, "y":0}, {"label":"7", "x":0, "y":1}, {"label":"8", "x":1, "y":1}, {"label":"9", "x":2, "y":1}, {"label":"+", "x":3, "y":1, "h":2}, {"label":"4", "x":0, "y":2}, {"label":"5", "x":1, "y":2}, {"label":"6", "x":2, "y":2}, {"label":"1", "x":0, "y":3}, {"label":"2", "x":1, "y":3}, {"label":"3", "x":2, "y":3}, {"label":"Enter", "x":3, "y":3, "h":2}, {"label":"0", "x":0, "y":4, "w":2}, {"label":".", "x":2, "y":4}] + } + + } +} diff --git a/keyboards/custommk/genesis/keymaps/default/keymap.c b/keyboards/custommk/genesis/rev1/keymaps/default/keymap.c similarity index 100% rename from keyboards/custommk/genesis/keymaps/default/keymap.c rename to keyboards/custommk/genesis/rev1/keymaps/default/keymap.c diff --git a/keyboards/custommk/genesis/keymaps/default/readme.md b/keyboards/custommk/genesis/rev1/keymaps/default/readme.md similarity index 100% rename from keyboards/custommk/genesis/keymaps/default/readme.md rename to keyboards/custommk/genesis/rev1/keymaps/default/readme.md diff --git a/keyboards/custommk/genesis/keymaps/numpad/keymap.c b/keyboards/custommk/genesis/rev1/keymaps/numpad/keymap.c similarity index 100% rename from keyboards/custommk/genesis/keymaps/numpad/keymap.c rename to keyboards/custommk/genesis/rev1/keymaps/numpad/keymap.c diff --git a/keyboards/custommk/genesis/keymaps/numpad/readme.md b/keyboards/custommk/genesis/rev1/keymaps/numpad/readme.md similarity index 100% rename from keyboards/custommk/genesis/keymaps/numpad/readme.md rename to keyboards/custommk/genesis/rev1/keymaps/numpad/readme.md diff --git a/keyboards/custommk/genesis/rev1/keymaps/via/keymap.c b/keyboards/custommk/genesis/rev1/keymaps/via/keymap.c new file mode 100644 index 000000000000..6b795f4c23fe --- /dev/null +++ b/keyboards/custommk/genesis/rev1/keymaps/via/keymap.c @@ -0,0 +1,51 @@ +/* Copyright 2020 customMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_ortho_5x4( + MO(1), KC_PSLS, KC_PAST, KC_PMNS, + KC_P7, KC_P8, KC_P9, KC_PGUP, + KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_P1, KC_P2, KC_P3, KC_PGDN, + KC_P0, KC_SPC, KC_PDOT, KC_PENT), + + [1] = LAYOUT_ortho_5x4( + KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + RGB_HUI, RGB_HUD, KC_TRNS, KC_TRNS), + + [2] = LAYOUT_ortho_5x4( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + [3] = LAYOUT_ortho_5x4( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +}; + + diff --git a/keyboards/custommk/genesis/keymaps/via/readme.md b/keyboards/custommk/genesis/rev1/keymaps/via/readme.md similarity index 100% rename from keyboards/custommk/genesis/keymaps/via/readme.md rename to keyboards/custommk/genesis/rev1/keymaps/via/readme.md diff --git a/keyboards/bm16s/keymaps/via/rules.mk b/keyboards/custommk/genesis/rev1/keymaps/via/rules.mk similarity index 100% rename from keyboards/bm16s/keymaps/via/rules.mk rename to keyboards/custommk/genesis/rev1/keymaps/via/rules.mk diff --git a/keyboards/custommk/genesis/rev1/readme.md b/keyboards/custommk/genesis/rev1/readme.md new file mode 100644 index 000000000000..bba03cceb835 --- /dev/null +++ b/keyboards/custommk/genesis/rev1/readme.md @@ -0,0 +1,19 @@ +# Genesis + +Genesis is a 5x4 ortholinear macro pad designed and produced by customMK. + +* Keyboard Maintainer: [customMK](https://github.com/customMK) +* Hardware Supported: Genesis Macro Pad +* Hardware Availability: [customMK](https://shop.custommk.com/products/genesis_macropad) + +Make example for this keyboard (after setting up your build environment): + + make custommk/genesis/rev1:default + +Flashing example for this keyboard: + + make custommk/genesis/rev1:default:flash + +Genesis Macro Pad has qmk-dfu bootloader preinstalled. To enter the bootloader, run the flashing command above, and then either plug in the USB connection while holding the top-left key, or alternatively, plug in the USB connection and then press the reset button on the PCB + +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/custommk/genesis/rev1/rev1.c b/keyboards/custommk/genesis/rev1/rev1.c new file mode 100644 index 000000000000..ac40eedbf202 --- /dev/null +++ b/keyboards/custommk/genesis/rev1/rev1.c @@ -0,0 +1,38 @@ +/* Copyright 2020 customMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "rev1.h" + +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) return false; + /* top left encoder */ + if (index == 0) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } + /* top right encoder */ + else if (index == 1) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } + return true; +} diff --git a/keyboards/custommk/genesis/rev1/rev1.h b/keyboards/custommk/genesis/rev1/rev1.h new file mode 100644 index 000000000000..0516b41ad884 --- /dev/null +++ b/keyboards/custommk/genesis/rev1/rev1.h @@ -0,0 +1,48 @@ +/* Copyright 2020 customMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_numpad_5x4( \ + K00, K01, K02, K03, \ + K10, K11, K12, \ + K20, K21, K22, K23, \ + K30, K31, K32, \ + K40, K42, K43 \ +) { \ + { K00, K01, K02, K03 }, \ + { K10, K11, K12, KC_NO }, \ + { K20, K21, K22, K23 }, \ + { K30, K31, K32, KC_NO }, \ + { K40, KC_NO, K42, K43 } \ +} + +#define LAYOUT_ortho_5x4( \ + 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 } \ +} + diff --git a/keyboards/mechlovin/adelais/standard_led/rev2/rules.mk b/keyboards/custommk/genesis/rev1/rules.mk similarity index 100% rename from keyboards/mechlovin/adelais/standard_led/rev2/rules.mk rename to keyboards/custommk/genesis/rev1/rules.mk diff --git a/keyboards/custommk/genesis/rev2/config.h b/keyboards/custommk/genesis/rev2/config.h new file mode 100644 index 000000000000..cbfda53f14c5 --- /dev/null +++ b/keyboards/custommk/genesis/rev2/config.h @@ -0,0 +1,66 @@ +/* Copyright 2020 customMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xF35B +#define PRODUCT_ID 0xFAB1 +#define DEVICE_VER 0x0001 +#define MANUFACTURER customMK +#define PRODUCT GenesisRev2 + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 4 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { F0, C7, C6, B6, B5, B0} +#define MATRIX_COL_PINS { F4, F5, D7, B4 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +#define ENCODERS_PAD_A { F6, D2 } +#define ENCODERS_PAD_B { F7, D1 } +#define ENCODER_RESOLUTION 2 +#define TAP_CODE_DELAY 10 + +#define RGB_DI_PIN E6 +#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 13 +#define RGBLIGHT_LAYERS +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 +#define RGBLIGHT_LIMIT_VAL 128 +#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_SWIRL + 4 + diff --git a/keyboards/custommk/genesis/rev2/info.json b/keyboards/custommk/genesis/rev2/info.json new file mode 100644 index 000000000000..16501ca1d1ae --- /dev/null +++ b/keyboards/custommk/genesis/rev2/info.json @@ -0,0 +1,74 @@ +{ + "keyboard_name": "Genesis Rev2", + "url": "https://www.customMK.com", + "maintainer": "customMK", + "layouts": { + "LAYOUT_ortho_5x4": { + "layout": [{"label":"MO(1)", "x":0, "y":0}, + {"label":"/", "x":1, "y":0}, + {"label":"*", "x":2, "y":0}, + {"label":"Mute", "x":3, "y":0}, + {"label":"7", "x":0, "y":1}, + {"label":"8", "x":1, "y":1}, + {"label":"9", "x":2, "y":1}, + {"label":"+", "x":3, "y":1}, + {"label":"4", "x":0, "y":2}, + {"label":"5", "x":1, "y":2}, + {"label":"6", "x":2, "y":2}, + {"label":"Pg Up", "x":3, "y":2}, + {"label":"1", "x":0, "y":3}, + {"label":"2", "x":1, "y":3}, + {"label":"3", "x":2, "y":3}, + {"label":"Pg Dn", "x":3, "y":3}, + {"label":"0", "x":0, "y":4}, + {"label":"Spc", "x":1, "y":4}, + {"label":".", "x":2, "y":4}, + {"label":"Enter", "x":3, "y":4}] + }, + "LAYOUT_numpad_5x4": { + "layout": [{"label":"MO(1)", "x":0, "y":0}, + {"label":"/", "x":1, "y":0}, + {"label":"*", "x":2, "y":0}, + {"label":"-", "x":3, "y":0}, + {"label":"7", "x":0, "y":1}, + {"label":"8", "x":1, "y":1}, + {"label":"9", "x":2, "y":1}, + {"label":"+", "x":3, "y":1, "h":2}, + {"label":"4", "x":0, "y":2}, + {"label":"5", "x":1, "y":2}, + {"label":"6", "x":2, "y":2}, + {"label":"1", "x":0, "y":3}, + {"label":"2", "x":1, "y":3}, + {"label":"3", "x":2, "y":3}, + {"label":"Enter", "x":3, "y":3, "h":2}, + {"label":"0", "x":0, "y":4, "w":2}, + {"label":".", "x":2, "y":4}] + }, + "LAYOUT_via_6x4": { + "layout": [{"label":"Vol-", "x":0, "y":0}, + {"label":"Vol+", "x":1, "y":0}, + {"label":"Vol-", "x":3, "y":0}, + {"label":"Vol+", "x":4, "y":0}, + {"label":"MO(1)", "x":0.5, "y":1.1}, + {"label":"/", "x":1.5, "y":1.1}, + {"label":"*", "x":2.5, "y":1.1}, + {"label":"Mute", "x":3.5, "y":1.1}, + {"label":"7", "x":0.5, "y":2.1}, + {"label":"8", "x":1.5, "y":2.1}, + {"label":"9", "x":2.5, "y":2.1}, + {"label":"+", "x":3.5, "y":2.1}, + {"label":"4", "x":0.5, "y":3.1}, + {"label":"5", "x":1.5, "y":3.1}, + {"label":"6", "x":2.5, "y":3.1}, + {"label":"Pg Up", "x":3.5, "y":3.1}, + {"label":"1", "x":0.5, "y":4.1}, + {"label":"2", "x":1.5, "y":4.1}, + {"label":"3", "x":2.5, "y":4.1}, + {"label":"Pg Dn", "x":3.5, "y":4.1}, + {"label":"0", "x":0.5, "y":5.1}, + {"label":"Spc", "x":1.5, "y":5.1}, + {"label":".", "x":2.5, "y":5.1}, + {"label":"Enter", "x":3.5, "y":5.1}] + } + } +} diff --git a/keyboards/custommk/genesis/rev2/keymaps/default/keymap.c b/keyboards/custommk/genesis/rev2/keymaps/default/keymap.c new file mode 100644 index 000000000000..7ba558ca96d9 --- /dev/null +++ b/keyboards/custommk/genesis/rev2/keymaps/default/keymap.c @@ -0,0 +1,76 @@ +/* Copyright 2020 customMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +//#define GENESIS_LAYER_COLORS +#define GENESIS_LAYER1_COLOR HSV_CYAN +#define GENESIS_LAYER2_COLOR HSV_GREEN +#define GENESIS_LAYER3_COLOR HSV_WHITE + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_ortho_5x4( + MO(1), KC_PSLS, KC_PAST, KC_PMNS, + KC_P7, KC_P8, KC_P9, KC_BSPC, + KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_P1, KC_P2, KC_P3, KC_CAPS, + KC_P0, KC_SPC, KC_PDOT, KC_ENT), + + [1] = LAYOUT_ortho_5x4( + KC_TRNS, KC_VOLU, RGB_TOG, RGB_MOD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + RGB_HUI, KC_TRNS, KC_TRNS, RGB_HUD), + +}; + + +#ifdef GENESIS_LAYER_COLORS +const rgblight_segment_t PROGMEM my_layer1_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0,13,GENESIS_LAYER1_COLOR} + ); + +const rgblight_segment_t PROGMEM my_layer2_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0,13,GENESIS_LAYER2_COLOR} + ); + +const rgblight_segment_t PROGMEM my_layer3_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0,13,GENESIS_LAYER3_COLOR} + ); + + +const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( + my_layer1_layer, + my_layer2_layer, + my_layer3_layer + ); + +//Set the appropriate layer color +layer_state_t layer_state_set_user(layer_state_t state) { + rgblight_set_layer_state(0, layer_state_cmp(state, 1)); + rgblight_set_layer_state(1, layer_state_cmp(state, 2)); + rgblight_set_layer_state(2, layer_state_cmp(state, 3)); + return state; +} + +void keyboard_post_init_user(void) { + //Enable the LED layers + rgblight_layers = my_rgb_layers; +} +#endif \ No newline at end of file diff --git a/keyboards/custommk/genesis/rev2/keymaps/default/readme.md b/keyboards/custommk/genesis/rev2/keymaps/default/readme.md new file mode 100644 index 000000000000..202402d8319d --- /dev/null +++ b/keyboards/custommk/genesis/rev2/keymaps/default/readme.md @@ -0,0 +1,6 @@ +# Default Genesis Macro Pad Layout + +This is the default layout for the Genesis Macro Pad. It assumes all 1u switches +and optional rotary encoder in the top-left or top-right corner for media volume +control. The top left switch activates Layer 1 which enables control of the RGB +underglow. \ No newline at end of file diff --git a/keyboards/custommk/genesis/rev2/keymaps/numpad/keymap.c b/keyboards/custommk/genesis/rev2/keymaps/numpad/keymap.c new file mode 100644 index 000000000000..e6b84c3f6be6 --- /dev/null +++ b/keyboards/custommk/genesis/rev2/keymaps/numpad/keymap.c @@ -0,0 +1,89 @@ +/* Copyright 2020 customMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +//#define GENESIS_LAYER_COLORS +#define GENESIS_LAYER1_COLOR HSV_CYAN +#define GENESIS_LAYER2_COLOR HSV_GREEN +#define GENESIS_LAYER3_COLOR HSV_WHITE + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_numpad_5x4( + MO(1), KC_PSLS, KC_PAST, 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_ENT), + + [1] = LAYOUT_numpad_5x4( + KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, + KC_TRNS, KC_TRNS, KC_TRNS, + RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, + KC_TRNS, KC_TRNS, KC_TRNS, + RGB_HUI, KC_TRNS, RGB_HUD), + + [2] = LAYOUT_numpad_5x4( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS), + + [3] = LAYOUT_numpad_5x4( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS), + +}; + + +#ifdef GENESIS_LAYER_COLORS +const rgblight_segment_t PROGMEM my_layer1_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0,13,GENESIS_LAYER1_COLOR} + ); + +const rgblight_segment_t PROGMEM my_layer2_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0,13,GENESIS_LAYER2_COLOR} + ); + +const rgblight_segment_t PROGMEM my_layer3_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0,13,GENESIS_LAYER3_COLOR} + ); + + +const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( + my_layer1_layer, + my_layer2_layer, + my_layer3_layer + ); + +//Set the appropriate layer color +layer_state_t layer_state_set_user(layer_state_t state) { + rgblight_set_layer_state(0, layer_state_cmp(state, 1)); + rgblight_set_layer_state(1, layer_state_cmp(state, 2)); + rgblight_set_layer_state(2, layer_state_cmp(state, 3)); + return state; +} + +void keyboard_post_init_user(void) { + //Enable the LED layers + rgblight_layers = my_rgb_layers; +} +#endif \ No newline at end of file diff --git a/keyboards/custommk/genesis/rev2/keymaps/numpad/readme.md b/keyboards/custommk/genesis/rev2/keymaps/numpad/readme.md new file mode 100644 index 000000000000..795e4341a961 --- /dev/null +++ b/keyboards/custommk/genesis/rev2/keymaps/numpad/readme.md @@ -0,0 +1,3 @@ +# Numpad Genesis Macro Pad Layout + +This is the numpad layout for the Genesis Macro Pad. It assumes the 0, +, and enter keys are all 2u size, with an optional rotary encoder in the top-left or top-right corner for media volume control. The top left switch activates Layer 1 which enables control of the RGB underglow. \ No newline at end of file diff --git a/keyboards/custommk/genesis/rev2/keymaps/via/keymap.c b/keyboards/custommk/genesis/rev2/keymaps/via/keymap.c new file mode 100644 index 000000000000..eb0f7772cf4b --- /dev/null +++ b/keyboards/custommk/genesis/rev2/keymaps/via/keymap.c @@ -0,0 +1,167 @@ +/* Copyright 2020 customMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +//#define GENESIS_LAYER_COLORS +#define GENESIS_LAYER1_COLOR HSV_CYAN +#define GENESIS_LAYER2_COLOR HSV_GREEN +#define GENESIS_LAYER3_COLOR HSV_WHITE + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_via_6x4( + KC_VOLD, KC_VOLU, KC_VOLD, KC_VOLU, + MO(1), KC_PSLS, KC_PAST, KC_PMNS, + KC_P7, KC_P8, KC_P9, KC_PGUP, + KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_P1, KC_P2, KC_P3, KC_PGDN, + KC_P0, KC_SPC, KC_PDOT, KC_PENT), + + [1] = LAYOUT_via_6x4( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + RGB_HUI, RGB_HUD, KC_TRNS, KC_TRNS), + + [2] = LAYOUT_via_6x4( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + [3] = LAYOUT_via_6x4( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +}; + +#ifdef GENESIS_LAYER_COLORS +const rgblight_segment_t PROGMEM my_layer1_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0,13,GENESIS_LAYER1_COLOR} + ); + +const rgblight_segment_t PROGMEM my_layer2_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0,13,GENESIS_LAYER2_COLOR} + ); + +const rgblight_segment_t PROGMEM my_layer3_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0,13,GENESIS_LAYER3_COLOR} + ); + + +const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( + my_layer1_layer, + my_layer2_layer, + my_layer3_layer + ); + +//Set the appropriate layer color +layer_state_t layer_state_set_user(layer_state_t state) { + rgblight_set_layer_state(0, layer_state_cmp(state, 1)); + rgblight_set_layer_state(1, layer_state_cmp(state, 2)); + rgblight_set_layer_state(2, layer_state_cmp(state, 3)); + return state; +} + +void keyboard_post_init_user(void) { + //Enable the LED layers + rgblight_layers = my_rgb_layers; +} +#endif + + +keyevent_t encoder_left_ccw = { + .key = (keypos_t){.row = 5, .col = 0}, + .pressed = false +}; + +keyevent_t encoder_left_cw = { + .key = (keypos_t){.row = 5, .col = 1}, + .pressed = false +}; + +keyevent_t encoder_right_ccw = { + .key = (keypos_t){.row = 5, .col = 2}, + .pressed = false +}; + +keyevent_t encoder_right_cw = { + .key = (keypos_t){.row = 5, .col = 3}, + .pressed = false +}; + +void matrix_scan_user(void) { + if (IS_PRESSED(encoder_left_ccw)) { + encoder_left_ccw.pressed = false; + encoder_left_ccw.time = (timer_read() | 1); + action_exec(encoder_left_ccw); + } + + if (IS_PRESSED(encoder_left_cw)) { + encoder_left_cw.pressed = false; + encoder_left_cw.time = (timer_read() | 1); + action_exec(encoder_left_cw); + } + + if (IS_PRESSED(encoder_right_ccw)) { + encoder_right_ccw.pressed = false; + encoder_right_ccw.time = (timer_read() | 1); + action_exec(encoder_right_ccw); + } + + if (IS_PRESSED(encoder_right_cw)) { + encoder_right_cw.pressed = false; + encoder_right_cw.time = (timer_read() | 1); + action_exec(encoder_right_cw); + } + +} + + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + if (clockwise) { + encoder_left_cw.pressed = true; + encoder_left_cw.time = (timer_read() | 1); + action_exec(encoder_left_cw); + } else { + encoder_left_ccw.pressed = true; + encoder_left_ccw.time = (timer_read() | 1); + action_exec(encoder_left_ccw); + } + } else { + if (clockwise) { + encoder_right_cw.pressed = true; + encoder_right_cw.time = (timer_read() | 1); + action_exec(encoder_right_cw); + } else { + encoder_right_ccw.pressed = true; + encoder_right_ccw.time = (timer_read() | 1); + action_exec(encoder_right_ccw); + } + } + return false; +} diff --git a/keyboards/custommk/genesis/rev2/keymaps/via/readme.md b/keyboards/custommk/genesis/rev2/keymaps/via/readme.md new file mode 100644 index 000000000000..aa70d62257de --- /dev/null +++ b/keyboards/custommk/genesis/rev2/keymaps/via/readme.md @@ -0,0 +1,3 @@ +# Genesis Macro Pad Layout for VIA + +This is the via layout for the Genesis Macro Pad. It is identical to the default 1u layout which assumes all 1u switches and optional rotary encoder in the top-left or top-right corner for media volume control. The top-left switch activates Layer 1 which enables control of the RGB underglow. \ No newline at end of file diff --git a/keyboards/custommk/genesis/keymaps/via/rules.mk b/keyboards/custommk/genesis/rev2/keymaps/via/rules.mk similarity index 100% rename from keyboards/custommk/genesis/keymaps/via/rules.mk rename to keyboards/custommk/genesis/rev2/keymaps/via/rules.mk diff --git a/keyboards/custommk/genesis/rev2/readme.md b/keyboards/custommk/genesis/rev2/readme.md new file mode 100644 index 000000000000..1b531b29c753 --- /dev/null +++ b/keyboards/custommk/genesis/rev2/readme.md @@ -0,0 +1,19 @@ +# Genesis + +Genesis Rev2 is the same as Genesis Rev1 firmware, except Rev2 allows encoder function remapping using VIA. + +* Keyboard Maintainer: [customMK](https://github.com/customMK) +* Hardware Supported: Genesis Macro Pad +* Hardware Availability: [customMK](https://shop.custommk.com/products/genesis_macropad) + +Make example for this keyboard (after setting up your build environment): + + make custommk/genesis/rev2:default + +Flashing example for this keyboard: + + make custommk/genesis/rev2:default:flash + +Genesis Macro Pad has qmk-dfu bootloader preinstalled. To enter the bootloader, run the flashing command above, and then either plug in the USB connection while holding the top-left key, or alternatively, plug in the USB connection and then press the reset button on the PCB + +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/custommk/genesis/rev2/rev2.c b/keyboards/custommk/genesis/rev2/rev2.c new file mode 100644 index 000000000000..bfa4cb055830 --- /dev/null +++ b/keyboards/custommk/genesis/rev2/rev2.c @@ -0,0 +1,39 @@ +/* Copyright 2020 customMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "rev2.h" + +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + /* top left encoder */ + if (index == 0) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } + /* top right encoder */ + else if (index == 1) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } + return false; +} + diff --git a/keyboards/custommk/genesis/rev2/rev2.h b/keyboards/custommk/genesis/rev2/rev2.h new file mode 100644 index 000000000000..e978e706c3b1 --- /dev/null +++ b/keyboards/custommk/genesis/rev2/rev2.h @@ -0,0 +1,66 @@ +/* Copyright 2020 customMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_numpad_5x4( \ + K00, K01, K02, K03, \ + K10, K11, K12, \ + K20, K21, K22, K23, \ + K30, K31, K32, \ + K40, K42, K43 \ +) { \ + { K00, K01, K02, K03 }, \ + { K10, K11, K12, KC_NO }, \ + { K20, K21, K22, K23 }, \ + { K30, K31, K32, KC_NO }, \ + { K40, KC_NO, K42, K43 }, \ + { KC_NO, KC_NO, KC_NO, KC_NO} \ +} + +#define LAYOUT_ortho_5x4( \ + 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 }, \ + { KC_NO, KC_NO, KC_NO, KC_NO} \ +} + + +#define LAYOUT_via_6x4( \ + E00A, E00B, E01A, E01B, \ + 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 }, \ + { E00A, E00B, E01A, E01B } \ +} diff --git a/keyboards/custommk/genesis/rev2/rules.mk b/keyboards/custommk/genesis/rev2/rules.mk new file mode 100644 index 000000000000..2430759f4f6e --- /dev/null +++ b/keyboards/custommk/genesis/rev2/rules.mk @@ -0,0 +1,20 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = qmk-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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 +ENCODER_ENABLE = yes \ No newline at end of file diff --git a/keyboards/custommk/genesis/rules.mk b/keyboards/custommk/genesis/rules.mk index 1556125ec793..30195c49d6ef 100644 --- a/keyboards/custommk/genesis/rules.mk +++ b/keyboards/custommk/genesis/rules.mk @@ -7,17 +7,16 @@ BOOTLOADER = qmk-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output -ENCODER_ENABLE = yes \ No newline at end of file +ENCODER_ENABLE = yes + +DEFAULT_FOLDER = custommk/genesis/rev2 diff --git a/keyboards/cutie_club/borsdorf/info.json b/keyboards/cutie_club/borsdorf/info.json index 51630da42ca6..2f3941ba6e18 100644 --- a/keyboards/cutie_club/borsdorf/info.json +++ b/keyboards/cutie_club/borsdorf/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Borsdorf", "url": "", "maintainer": "Cutie Club", - "width": 16.5, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/cutie_club/borsdorf/rules.mk b/keyboards/cutie_club/borsdorf/rules.mk index 6d815e4ff3a3..229cbfd3445f 100644 --- a/keyboards/cutie_club/borsdorf/rules.mk +++ b/keyboards/cutie_club/borsdorf/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/cutie_club/giant_macro_pad/info.json b/keyboards/cutie_club/giant_macro_pad/info.json new file mode 100644 index 000000000000..348f3a3f5ad6 --- /dev/null +++ b/keyboards/cutie_club/giant_macro_pad/info.json @@ -0,0 +1,430 @@ +{ + "keyboard_name": "Cupar19 Giant Macro Pad", + "url": "", + "maintainer": "cutie-club", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"k00_00", "x":0, "y":0}, + {"label":"k00_01", "x":1, "y":0}, + {"label":"k00_02", "x":2, "y":0}, + {"label":"k00_03", "x":3, "y":0}, + {"label":"k00_04", "x":4, "y":0}, + {"label":"k00_05", "x":5, "y":0}, + {"label":"k00_06", "x":6, "y":0}, + {"label":"k00_07", "x":7, "y":0}, + {"label":"k00_08", "x":8, "y":0}, + {"label":"k00_09", "x":9, "y":0}, + {"label":"k00_10", "x":10, "y":0}, + {"label":"k00_11", "x":11, "y":0}, + {"label":"k00_12", "x":12, "y":0}, + {"label":"k00_13", "x":13, "y":0}, + {"label":"k00_14", "x":14, "y":0}, + {"label":"k00_15", "x":15, "y":0}, + {"label":"k00_16", "x":16, "y":0}, + {"label":"k00_17", "x":17, "y":0}, + {"label":"k00_18", "x":18, "y":0}, + {"label":"k00_19", "x":19, "y":0}, + + {"label":"k01_00", "x":0, "y":1}, + {"label":"k01_01", "x":1, "y":1}, + {"label":"k01_02", "x":2, "y":1}, + {"label":"k01_03", "x":3, "y":1}, + {"label":"k01_04", "x":4, "y":1}, + {"label":"k01_05", "x":5, "y":1}, + {"label":"k01_06", "x":6, "y":1}, + {"label":"k01_07", "x":7, "y":1}, + {"label":"k01_08", "x":8, "y":1}, + {"label":"k01_09", "x":9, "y":1}, + {"label":"k01_10", "x":10, "y":1}, + {"label":"k01_11", "x":11, "y":1}, + {"label":"k01_12", "x":12, "y":1}, + {"label":"k01_13", "x":13, "y":1}, + {"label":"k01_14", "x":14, "y":1}, + {"label":"k01_15", "x":15, "y":1}, + {"label":"k01_16", "x":16, "y":1}, + {"label":"k01_17", "x":17, "y":1}, + {"label":"k01_18", "x":18, "y":1}, + {"label":"k01_19", "x":19, "y":1}, + + {"label":"k02_00", "x":0, "y":2}, + {"label":"k02_01", "x":1, "y":2}, + {"label":"k02_02", "x":2, "y":2}, + {"label":"k02_03", "x":3, "y":2}, + {"label":"k02_04", "x":4, "y":2}, + {"label":"k02_05", "x":5, "y":2}, + {"label":"k02_06", "x":6, "y":2}, + {"label":"k02_07", "x":7, "y":2}, + {"label":"k02_08", "x":8, "y":2}, + {"label":"k02_09", "x":9, "y":2}, + {"label":"k02_10", "x":10, "y":2}, + {"label":"k02_11", "x":11, "y":2}, + {"label":"k02_12", "x":12, "y":2}, + {"label":"k02_13", "x":13, "y":2}, + {"label":"k02_14", "x":14, "y":2}, + {"label":"k02_15", "x":15, "y":2}, + {"label":"k02_16", "x":16, "y":2}, + {"label":"k02_17", "x":17, "y":2}, + {"label":"k02_18", "x":18, "y":2}, + {"label":"k02_19", "x":19, "y":2}, + + {"label":"k03_00", "x":0, "y":3}, + {"label":"k03_01", "x":1, "y":3}, + {"label":"k03_02", "x":2, "y":3}, + {"label":"k03_03", "x":3, "y":3}, + {"label":"k03_04", "x":4, "y":3}, + {"label":"k03_05", "x":5, "y":3}, + {"label":"k03_06", "x":6, "y":3}, + {"label":"k03_07", "x":7, "y":3}, + {"label":"k03_08", "x":8, "y":3}, + {"label":"k03_09", "x":9, "y":3}, + {"label":"k03_10", "x":10, "y":3}, + {"label":"k03_11", "x":11, "y":3}, + {"label":"k03_12", "x":12, "y":3}, + {"label":"k03_13", "x":13, "y":3}, + {"label":"k03_14", "x":14, "y":3}, + {"label":"k03_15", "x":15, "y":3}, + {"label":"k03_16", "x":16, "y":3}, + {"label":"k03_17", "x":17, "y":3}, + {"label":"k03_18", "x":18, "y":3}, + {"label":"k03_19", "x":19, "y":3}, + + {"label":"k04_00", "x":0, "y":4}, + {"label":"k04_01", "x":1, "y":4}, + {"label":"k04_02", "x":2, "y":4}, + {"label":"k04_03", "x":3, "y":4}, + {"label":"k04_04", "x":4, "y":4}, + {"label":"k04_05", "x":5, "y":4}, + {"label":"k04_06", "x":6, "y":4}, + {"label":"k04_07", "x":7, "y":4}, + {"label":"k04_08", "x":8, "y":4}, + {"label":"k04_09", "x":9, "y":4}, + {"label":"k04_10", "x":10, "y":4}, + {"label":"k04_11", "x":11, "y":4}, + {"label":"k04_12", "x":12, "y":4}, + {"label":"k04_13", "x":13, "y":4}, + {"label":"k04_14", "x":14, "y":4}, + {"label":"k04_15", "x":15, "y":4}, + {"label":"k04_16", "x":16, "y":4}, + {"label":"k04_17", "x":17, "y":4}, + {"label":"k04_18", "x":18, "y":4}, + {"label":"k04_19", "x":19, "y":4}, + + {"label":"k05_00", "x":0, "y":5}, + {"label":"k05_01", "x":1, "y":5}, + {"label":"k05_02", "x":2, "y":5}, + {"label":"k05_03", "x":3, "y":5}, + {"label":"k05_04", "x":4, "y":5}, + {"label":"k05_05", "x":5, "y":5}, + {"label":"k05_06", "x":6, "y":5}, + {"label":"k05_07", "x":7, "y":5}, + {"label":"k05_08", "x":8, "y":5}, + {"label":"k05_09", "x":9, "y":5}, + {"label":"k05_10", "x":10, "y":5}, + {"label":"k05_11", "x":11, "y":5}, + {"label":"k05_12", "x":12, "y":5}, + {"label":"k05_13", "x":13, "y":5}, + {"label":"k05_14", "x":14, "y":5}, + {"label":"k05_15", "x":15, "y":5}, + {"label":"k05_16", "x":16, "y":5}, + {"label":"k05_17", "x":17, "y":5}, + {"label":"k05_18", "x":18, "y":5}, + {"label":"k05_19", "x":19, "y":5}, + + {"label":"k06_00", "x":0, "y":6}, + {"label":"k06_01", "x":1, "y":6}, + {"label":"k06_02", "x":2, "y":6}, + {"label":"k06_03", "x":3, "y":6}, + {"label":"k06_04", "x":4, "y":6}, + {"label":"k06_05", "x":5, "y":6}, + {"label":"k06_06", "x":6, "y":6}, + {"label":"k06_07", "x":7, "y":6}, + {"label":"k06_08", "x":8, "y":6}, + {"label":"k06_09", "x":9, "y":6}, + {"label":"k06_10", "x":10, "y":6}, + {"label":"k06_11", "x":11, "y":6}, + {"label":"k06_12", "x":12, "y":6}, + {"label":"k06_13", "x":13, "y":6}, + {"label":"k06_14", "x":14, "y":6}, + {"label":"k06_15", "x":15, "y":6}, + {"label":"k06_16", "x":16, "y":6}, + {"label":"k06_17", "x":17, "y":6}, + {"label":"k06_18", "x":18, "y":6}, + {"label":"k06_19", "x":19, "y":6}, + + {"label":"k07_00", "x":0, "y":7}, + {"label":"k07_01", "x":1, "y":7}, + {"label":"k07_02", "x":2, "y":7}, + {"label":"k07_03", "x":3, "y":7}, + {"label":"k07_04", "x":4, "y":7}, + {"label":"k07_05", "x":5, "y":7}, + {"label":"k07_06", "x":6, "y":7}, + {"label":"k07_07", "x":7, "y":7}, + {"label":"k07_08", "x":8, "y":7}, + {"label":"k07_09", "x":9, "y":7}, + {"label":"k07_10", "x":10, "y":7}, + {"label":"k07_11", "x":11, "y":7}, + {"label":"k07_12", "x":12, "y":7}, + {"label":"k07_13", "x":13, "y":7}, + {"label":"k07_14", "x":14, "y":7}, + {"label":"k07_15", "x":15, "y":7}, + {"label":"k07_16", "x":16, "y":7}, + {"label":"k07_17", "x":17, "y":7}, + {"label":"k07_18", "x":18, "y":7}, + {"label":"k07_19", "x":19, "y":7}, + + {"label":"k08_00", "x":0, "y":8}, + {"label":"k08_01", "x":1, "y":8}, + {"label":"k08_02", "x":2, "y":8}, + {"label":"k08_03", "x":3, "y":8}, + {"label":"k08_04", "x":4, "y":8}, + {"label":"k08_05", "x":5, "y":8}, + {"label":"k08_06", "x":6, "y":8}, + {"label":"k08_07", "x":7, "y":8}, + {"label":"k08_08", "x":8, "y":8}, + {"label":"k08_09", "x":9, "y":8}, + {"label":"k08_10", "x":10, "y":8}, + {"label":"k08_11", "x":11, "y":8}, + {"label":"k08_12", "x":12, "y":8}, + {"label":"k08_13", "x":13, "y":8}, + {"label":"k08_14", "x":14, "y":8}, + {"label":"k08_15", "x":15, "y":8}, + {"label":"k08_16", "x":16, "y":8}, + {"label":"k08_17", "x":17, "y":8}, + {"label":"k08_18", "x":18, "y":8}, + {"label":"k08_19", "x":19, "y":8}, + + {"label":"k09_00", "x":0, "y":9}, + {"label":"k09_01", "x":1, "y":9}, + {"label":"k09_02", "x":2, "y":9}, + {"label":"k09_03", "x":3, "y":9}, + {"label":"k09_04", "x":4, "y":9}, + {"label":"k09_05", "x":5, "y":9}, + {"label":"k09_06", "x":6, "y":9}, + {"label":"k09_07", "x":7, "y":9}, + {"label":"k09_08", "x":8, "y":9}, + {"label":"k09_09", "x":9, "y":9}, + {"label":"k09_10", "x":10, "y":9}, + {"label":"k09_11", "x":11, "y":9}, + {"label":"k09_12", "x":12, "y":9}, + {"label":"k09_13", "x":13, "y":9}, + {"label":"k09_14", "x":14, "y":9}, + {"label":"k09_15", "x":15, "y":9}, + {"label":"k09_16", "x":16, "y":9}, + {"label":"k09_17", "x":17, "y":9}, + {"label":"k09_18", "x":18, "y":9}, + {"label":"k09_19", "x":19, "y":9}, + + {"label":"k10_00", "x":0, "y":10}, + {"label":"k10_01", "x":1, "y":10}, + {"label":"k10_02", "x":2, "y":10}, + {"label":"k10_03", "x":3, "y":10}, + {"label":"k10_04", "x":4, "y":10}, + {"label":"k10_05", "x":5, "y":10}, + {"label":"k10_06", "x":6, "y":10}, + {"label":"k10_07", "x":7, "y":10}, + {"label":"k10_08", "x":8, "y":10}, + {"label":"k10_09", "x":9, "y":10}, + {"label":"k10_10", "x":10, "y":10}, + {"label":"k10_11", "x":11, "y":10}, + {"label":"k10_12", "x":12, "y":10}, + {"label":"k10_13", "x":13, "y":10}, + {"label":"k10_14", "x":14, "y":10}, + {"label":"k10_15", "x":15, "y":10}, + {"label":"k10_16", "x":16, "y":10}, + {"label":"k10_17", "x":17, "y":10}, + {"label":"k10_18", "x":18, "y":10}, + {"label":"k10_19", "x":19, "y":10}, + + {"label":"k11_00", "x":0, "y":11}, + {"label":"k11_01", "x":1, "y":11}, + {"label":"k11_02", "x":2, "y":11}, + {"label":"k11_03", "x":3, "y":11}, + {"label":"k11_04", "x":4, "y":11}, + {"label":"k11_05", "x":5, "y":11}, + {"label":"k11_06", "x":6, "y":11}, + {"label":"k11_07", "x":7, "y":11}, + {"label":"k11_08", "x":8, "y":11}, + {"label":"k11_09", "x":9, "y":11}, + {"label":"k11_10", "x":10, "y":11}, + {"label":"k11_11", "x":11, "y":11}, + {"label":"k11_12", "x":12, "y":11}, + {"label":"k11_13", "x":13, "y":11}, + {"label":"k11_14", "x":14, "y":11}, + {"label":"k11_15", "x":15, "y":11}, + {"label":"k11_16", "x":16, "y":11}, + {"label":"k11_17", "x":17, "y":11}, + {"label":"k11_18", "x":18, "y":11}, + {"label":"k11_19", "x":19, "y":11}, + + {"label":"k12_00", "x":0, "y":12}, + {"label":"k12_01", "x":1, "y":12}, + {"label":"k12_02", "x":2, "y":12}, + {"label":"k12_03", "x":3, "y":12}, + {"label":"k12_04", "x":4, "y":12}, + {"label":"k12_05", "x":5, "y":12}, + {"label":"k12_06", "x":6, "y":12}, + {"label":"k12_07", "x":7, "y":12}, + {"label":"k12_08", "x":8, "y":12}, + {"label":"k12_09", "x":9, "y":12}, + {"label":"k12_10", "x":10, "y":12}, + {"label":"k12_11", "x":11, "y":12}, + {"label":"k12_12", "x":12, "y":12}, + {"label":"k12_13", "x":13, "y":12}, + {"label":"k12_14", "x":14, "y":12}, + {"label":"k12_15", "x":15, "y":12}, + {"label":"k12_16", "x":16, "y":12}, + {"label":"k12_17", "x":17, "y":12}, + {"label":"k12_18", "x":18, "y":12}, + {"label":"k12_19", "x":19, "y":12}, + + {"label":"k13_00", "x":0, "y":13}, + {"label":"k13_01", "x":1, "y":13}, + {"label":"k13_02", "x":2, "y":13}, + {"label":"k13_03", "x":3, "y":13}, + {"label":"k13_04", "x":4, "y":13}, + {"label":"k13_05", "x":5, "y":13}, + {"label":"k13_06", "x":6, "y":13}, + {"label":"k13_07", "x":7, "y":13}, + {"label":"k13_08", "x":8, "y":13}, + {"label":"k13_09", "x":9, "y":13}, + {"label":"k13_10", "x":10, "y":13}, + {"label":"k13_11", "x":11, "y":13}, + {"label":"k13_12", "x":12, "y":13}, + {"label":"k13_13", "x":13, "y":13}, + {"label":"k13_14", "x":14, "y":13}, + {"label":"k13_15", "x":15, "y":13}, + {"label":"k13_16", "x":16, "y":13}, + {"label":"k13_17", "x":17, "y":13}, + {"label":"k13_18", "x":18, "y":13}, + {"label":"k13_19", "x":19, "y":13}, + + {"label":"k14_00", "x":0, "y":14}, + {"label":"k14_01", "x":1, "y":14}, + {"label":"k14_02", "x":2, "y":14}, + {"label":"k14_03", "x":3, "y":14}, + {"label":"k14_04", "x":4, "y":14}, + {"label":"k14_05", "x":5, "y":14}, + {"label":"k14_06", "x":6, "y":14}, + {"label":"k14_07", "x":7, "y":14}, + {"label":"k14_08", "x":8, "y":14}, + {"label":"k14_09", "x":9, "y":14}, + {"label":"k14_10", "x":10, "y":14}, + {"label":"k14_11", "x":11, "y":14}, + {"label":"k14_12", "x":12, "y":14}, + {"label":"k14_13", "x":13, "y":14}, + {"label":"k14_14", "x":14, "y":14}, + {"label":"k14_15", "x":15, "y":14}, + {"label":"k14_16", "x":16, "y":14}, + {"label":"k14_17", "x":17, "y":14}, + {"label":"k14_18", "x":18, "y":14}, + {"label":"k14_19", "x":19, "y":14}, + + {"label":"k15_00", "x":0, "y":15}, + {"label":"k15_01", "x":1, "y":15}, + {"label":"k15_02", "x":2, "y":15}, + {"label":"k15_03", "x":3, "y":15}, + {"label":"k15_04", "x":4, "y":15}, + {"label":"k15_05", "x":5, "y":15}, + {"label":"k15_06", "x":6, "y":15}, + {"label":"k15_07", "x":7, "y":15}, + {"label":"k15_08", "x":8, "y":15}, + {"label":"k15_09", "x":9, "y":15}, + {"label":"k15_10", "x":10, "y":15}, + {"label":"k15_11", "x":11, "y":15}, + {"label":"k15_12", "x":12, "y":15}, + {"label":"k15_13", "x":13, "y":15}, + {"label":"k15_14", "x":14, "y":15}, + {"label":"k15_15", "x":15, "y":15}, + {"label":"k15_16", "x":16, "y":15}, + {"label":"k15_17", "x":17, "y":15}, + {"label":"k15_18", "x":18, "y":15}, + {"label":"k15_19", "x":19, "y":15}, + + {"label":"k16_00", "x":0, "y":16}, + {"label":"k16_01", "x":1, "y":16}, + {"label":"k16_02", "x":2, "y":16}, + {"label":"k16_03", "x":3, "y":16}, + {"label":"k16_04", "x":4, "y":16}, + {"label":"k16_05", "x":5, "y":16}, + {"label":"k16_06", "x":6, "y":16}, + {"label":"k16_07", "x":7, "y":16}, + {"label":"k16_08", "x":8, "y":16}, + {"label":"k16_09", "x":9, "y":16}, + {"label":"k16_10", "x":10, "y":16}, + {"label":"k16_11", "x":11, "y":16}, + {"label":"k16_12", "x":12, "y":16}, + {"label":"k16_13", "x":13, "y":16}, + {"label":"k16_14", "x":14, "y":16}, + {"label":"k16_15", "x":15, "y":16}, + {"label":"k16_16", "x":16, "y":16}, + {"label":"k16_17", "x":17, "y":16}, + {"label":"k16_18", "x":18, "y":16}, + {"label":"k16_19", "x":19, "y":16}, + + {"label":"k17_00", "x":0, "y":17}, + {"label":"k17_01", "x":1, "y":17}, + {"label":"k17_02", "x":2, "y":17}, + {"label":"k17_03", "x":3, "y":17}, + {"label":"k17_04", "x":4, "y":17}, + {"label":"k17_05", "x":5, "y":17}, + {"label":"k17_06", "x":6, "y":17}, + {"label":"k17_07", "x":7, "y":17}, + {"label":"k17_08", "x":8, "y":17}, + {"label":"k17_09", "x":9, "y":17}, + {"label":"k17_10", "x":10, "y":17}, + {"label":"k17_11", "x":11, "y":17}, + {"label":"k17_12", "x":12, "y":17}, + {"label":"k17_13", "x":13, "y":17}, + {"label":"k17_14", "x":14, "y":17}, + {"label":"k17_15", "x":15, "y":17}, + {"label":"k17_16", "x":16, "y":17}, + {"label":"k17_17", "x":17, "y":17}, + {"label":"k17_18", "x":18, "y":17}, + {"label":"k17_19", "x":19, "y":17}, + + {"label":"k18_00", "x":0, "y":18}, + {"label":"k18_01", "x":1, "y":18}, + {"label":"k18_02", "x":2, "y":18}, + {"label":"k18_03", "x":3, "y":18}, + {"label":"k18_04", "x":4, "y":18}, + {"label":"k18_05", "x":5, "y":18}, + {"label":"k18_06", "x":6, "y":18}, + {"label":"k18_07", "x":7, "y":18}, + {"label":"k18_08", "x":8, "y":18}, + {"label":"k18_09", "x":9, "y":18}, + {"label":"k18_10", "x":10, "y":18}, + {"label":"k18_11", "x":11, "y":18}, + {"label":"k18_12", "x":12, "y":18}, + {"label":"k18_13", "x":13, "y":18}, + {"label":"k18_14", "x":14, "y":18}, + {"label":"k18_15", "x":15, "y":18}, + {"label":"k18_16", "x":16, "y":18}, + {"label":"k18_17", "x":17, "y":18}, + {"label":"k18_18", "x":18, "y":18}, + {"label":"k18_19", "x":19, "y":18}, + + {"label":"k19_00", "x":0, "y":19}, + {"label":"k19_01", "x":1, "y":19}, + {"label":"k19_02", "x":2, "y":19}, + {"label":"k19_03", "x":3, "y":19}, + {"label":"k19_04", "x":4, "y":19}, + {"label":"k19_05", "x":5, "y":19}, + {"label":"k19_06", "x":6, "y":19}, + {"label":"k19_07", "x":7, "y":19}, + {"label":"k19_08", "x":8, "y":19}, + {"label":"k19_09", "x":9, "y":19}, + {"label":"k19_10", "x":10, "y":19}, + {"label":"k19_11", "x":11, "y":19}, + {"label":"k19_12", "x":12, "y":19}, + {"label":"k19_13", "x":13, "y":19}, + {"label":"k19_14", "x":14, "y":19}, + {"label":"k19_15", "x":15, "y":19}, + {"label":"k19_16", "x":16, "y":19}, + {"label":"k19_17", "x":17, "y":19}, + {"label":"k19_18", "x":18, "y":19}, + {"label":"k19_19", "x":19, "y":19} + ] + } + } +} diff --git a/keyboards/cutie_club/giant_macro_pad/rules.mk b/keyboards/cutie_club/giant_macro_pad/rules.mk index 6d815e4ff3a3..229cbfd3445f 100755 --- a/keyboards/cutie_club/giant_macro_pad/rules.mk +++ b/keyboards/cutie_club/giant_macro_pad/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/cutie_club/keebcats/denis/config.h b/keyboards/cutie_club/keebcats/denis/config.h new file mode 100644 index 000000000000..473b6906346a --- /dev/null +++ b/keyboards/cutie_club/keebcats/denis/config.h @@ -0,0 +1,50 @@ +/* Copyright 2021 Cutie Club + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFB9C +#define PRODUCT_ID 0xB260 +#define DEVICE_VER 0x0000 +#define MANUFACTURER Cutie Club +#define PRODUCT Keebcats Denis 60% + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * Keyboard Matrix Assignments + */ +#define MATRIX_ROW_PINS { B2, D0, F5, F4, F1 } +#define MATRIX_COL_PINS { E6, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, D1 } +#define UNUSED_PINS { B0, B1, B7 } + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +#define LED_CAPS_LOCK_PIN F0 + +/* 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/cutie_club/keebcats/denis/denis.c b/keyboards/cutie_club/keebcats/denis/denis.c new file mode 100644 index 000000000000..c661e8cbb537 --- /dev/null +++ b/keyboards/cutie_club/keebcats/denis/denis.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Cutie Club + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "denis.h" diff --git a/keyboards/cutie_club/keebcats/denis/denis.h b/keyboards/cutie_club/keebcats/denis/denis.h new file mode 100644 index 000000000000..7ba152b8eaff --- /dev/null +++ b/keyboards/cutie_club/keebcats/denis/denis.h @@ -0,0 +1,155 @@ +/* Copyright 2021 Cutie Club + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_all( \ + k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_13, k00_14, \ + k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, \ + k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_12, k02_13, \ + k03_00, k03_01, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, k03_13, \ + k04_00, k04_01, k04_02, k04_04, k04_06, k04_08, k04_10, k04_11, k04_12, k04_13 \ +) \ +{ \ + { k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_13, k00_14 }, \ + { k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, KC_NO }, \ + { k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_12, k02_13, KC_NO }, \ + { k03_00, k03_01, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, k03_13, KC_NO }, \ + { k04_00, k04_01, k04_02, KC_NO, k04_04, KC_NO, k04_06, KC_NO, k04_08, KC_NO, k04_10, k04_11, k04_12, k04_13, KC_NO } \ +} + +#define LAYOUT_60_ansi( \ + k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_14, \ + k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, \ + k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_13, \ + k03_00, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, \ + k04_00, k04_01, k04_02, k04_06, k04_10, k04_11, k04_12, k04_13 \ +) \ +{ \ + { k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, KC_NO, k00_14 }, \ + { k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, KC_NO }, \ + { k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, KC_NO, k02_13, KC_NO }, \ + { k03_00, KC_NO, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, KC_NO, KC_NO }, \ + { k04_00, k04_01, k04_02, KC_NO, KC_NO, KC_NO, k04_06, KC_NO, KC_NO, KC_NO, k04_10, k04_11, k04_12, k04_13, KC_NO } \ +} + +#define LAYOUT_60_ansi_split_bs_rshift( \ + k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_13, k00_14, \ + k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, \ + k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_13, \ + k03_00, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, k03_13, \ + k04_00, k04_01, k04_02, k04_06, k04_10, k04_11, k04_12, k04_13 \ +) \ +{ \ + { k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_13, k00_14 }, \ + { k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, KC_NO }, \ + { k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, KC_NO, k02_13, KC_NO }, \ + { k03_00, KC_NO, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, k03_13, KC_NO }, \ + { k04_00, k04_01, k04_02, KC_NO, KC_NO, KC_NO, k04_06, KC_NO, KC_NO, KC_NO, k04_10, k04_11, k04_12, k04_13, KC_NO } \ +} + +#define LAYOUT_60_ansi_tsangan( \ + k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_14, \ + k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, \ + k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_13, \ + k03_00, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, \ + k04_00, k04_01, k04_02, k04_06, k04_11, k04_12, k04_13 \ +) \ +{ \ + { k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, KC_NO, k00_14 }, \ + { k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, KC_NO }, \ + { k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, KC_NO, k02_13, KC_NO }, \ + { k03_00, KC_NO, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, KC_NO, KC_NO }, \ + { k04_00, k04_01, k04_02, KC_NO, KC_NO, KC_NO, k04_06, KC_NO, KC_NO, KC_NO, KC_NO, k04_11, k04_12, k04_13, KC_NO } \ +} + +#define LAYOUT_60_hhkb( \ + k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_13, k00_14, \ + k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, \ + k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_13, \ + k03_00, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, k03_13, \ + k04_01, k04_02, k04_06, k04_11, k04_12 \ +) \ +{ \ + { k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_13, k00_14 }, \ + { k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, KC_NO }, \ + { k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, KC_NO, k02_13, KC_NO }, \ + { k03_00, KC_NO, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, k03_13, KC_NO }, \ + { KC_NO, k04_01, k04_02, KC_NO, KC_NO, KC_NO, k04_06, KC_NO, KC_NO, KC_NO, KC_NO, k04_11, k04_12, KC_NO, KC_NO } \ +} + +#define LAYOUT_60_tsangan_hhkb( \ + k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_13, k00_14, \ + k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, \ + k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_13, \ + k03_00, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, k03_13, \ + k04_00, k04_01, k04_02, k04_06, k04_11, k04_12, k04_13 \ +) \ +{ \ + { k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_13, k00_14 }, \ + { k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, KC_NO }, \ + { k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, KC_NO, k02_13, KC_NO }, \ + { k03_00, KC_NO, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, k03_13, KC_NO }, \ + { k04_00, k04_01, k04_02, KC_NO, KC_NO, KC_NO, k04_06, KC_NO, KC_NO, KC_NO, KC_NO, k04_11, k04_12, k04_13, KC_NO } \ +} + + +#define LAYOUT_60_iso( \ + k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_14, \ + k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, \ + k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_12, k02_13, \ + k03_00, k03_01, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, \ + k04_00, k04_01, k04_02, k04_06, k04_10, k04_11, k04_12, k04_13 \ +) \ +{ \ + { k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, KC_NO, k00_14 }, \ + { k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, KC_NO, KC_NO }, \ + { k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_12, k02_13, KC_NO }, \ + { k03_00, k03_01, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, KC_NO, KC_NO }, \ + { k04_00, k04_01, k04_02, KC_NO, KC_NO, KC_NO, k04_06, KC_NO, KC_NO, KC_NO, k04_10, k04_11, k04_12, k04_13, KC_NO } \ +} + +#define LAYOUT_60_iso_split_bs_rshift( \ + k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_13, k00_14, \ + k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, \ + k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_12, k02_13, \ + k03_00, k03_01, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, k03_13, \ + k04_00, k04_01, k04_02, k04_06, k04_10, k04_11, k04_12, k04_13 \ +) \ +{ \ + { k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_13, k00_14 }, \ + { k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, KC_NO, KC_NO }, \ + { k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_12, k02_13, KC_NO }, \ + { k03_00, k03_01, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, k03_13, KC_NO }, \ + { k04_00, k04_01, k04_02, KC_NO, KC_NO, KC_NO, k04_06, KC_NO, KC_NO, KC_NO, k04_10, k04_11, k04_12, k04_13, KC_NO } \ +} + +#define LAYOUT_60_iso_tsangan( \ + k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_14, \ + k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, \ + k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_12, k02_13, \ + k03_00, k03_01, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, \ + k04_00, k04_01, k04_02, k04_06, k04_11, k04_12, k04_13 \ +) \ +{ \ + { k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, KC_NO, k00_14 }, \ + { k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, KC_NO, KC_NO }, \ + { k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_12, k02_13, KC_NO }, \ + { k03_00, k03_01, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, KC_NO, KC_NO }, \ + { k04_00, k04_01, k04_02, KC_NO, KC_NO, KC_NO, k04_06, KC_NO, KC_NO, KC_NO, KC_NO, k04_11, k04_12, k04_13, KC_NO } \ +} diff --git a/keyboards/cutie_club/keebcats/denis/info.json b/keyboards/cutie_club/keebcats/denis/info.json new file mode 100644 index 000000000000..a19a16a15ce2 --- /dev/null +++ b/keyboards/cutie_club/keebcats/denis/info.json @@ -0,0 +1,209 @@ +{ + "keyboard_name": "Keebcats Denis", + "url": "", + "maintainer": "Cutie Club", + "layouts": { + "LAYOUT_all": { + "layout": [ + { "x": 0, "y": 0 }, + { "x": 1, "y": 0 }, + { "x": 2, "y": 0 }, + { "x": 3, "y": 0 }, + { "x": 4, "y": 0 }, + { "x": 5, "y": 0 }, + { "x": 6, "y": 0 }, + { "x": 7, "y": 0 }, + { "x": 8, "y": 0 }, + { "x": 9, "y": 0 }, + { "x": 10, "y": 0 }, + { "x": 11, "y": 0 }, + { "x": 12, "y": 0 }, + { "x": 13, "y": 0 }, + { "x": 14, "y": 0 }, + { "x": 0, "y": 1, "w": 1.5 }, + { "x": 1.5, "y": 1 }, + { "x": 2.5, "y": 1 }, + { "x": 3.5, "y": 1 }, + { "x": 4.5, "y": 1 }, + { "x": 5.5, "y": 1 }, + { "x": 6.5, "y": 1 }, + { "x": 7.5, "y": 1 }, + { "x": 8.5, "y": 1 }, + { "x": 9.5, "y": 1 }, + { "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 }, + { "x": 2.75, "y": 2 }, + { "x": 3.75, "y": 2 }, + { "x": 4.75, "y": 2 }, + { "x": 5.75, "y": 2 }, + { "x": 6.75, "y": 2 }, + { "x": 7.75, "y": 2 }, + { "x": 8.75, "y": 2 }, + { "x": 9.75, "y": 2 }, + { "x": 10.75, "y": 2 }, + { "x": 11.75, "y": 2 }, + { "x": 12.75, "y": 2 }, + { "x": 14, "y": 2 }, + { "x": 0, "y": 3, "w": 1.25 }, + { "x": 1.25, "y": 3 }, + { "x": 2.25, "y": 3 }, + { "x": 3.25, "y": 3 }, + { "x": 4.25, "y": 3 }, + { "x": 5.25, "y": 3 }, + { "x": 6.25, "y": 3 }, + { "x": 7.25, "y": 3 }, + { "x": 8.25, "y": 3 }, + { "x": 9.25, "y": 3 }, + { "x": 10.25, "y": 3 }, + { "x": 11.25, "y": 3 }, + { "x": 12.25, "y": 3, "w": 1.75 }, + { "x": 14, "y": 3 }, + { "x": 0, "y": 4, "w": 1.25 }, + { "x": 1.25, "y": 4, "w": 1.25 }, + { "x": 2.5, "y": 4, "w": 1.25 }, + { "x": 3.75, "y": 4, "w": 2.25 }, + { "x": 6, "y": 4, "w": 1.25 }, + { "x": 7.25, "y": 4, "w": 2.75 }, + { "x": 10, "y": 4, "w": 1.25 }, + { "x": 11.25, "y": 4, "w": 1.25 }, + { "x": 12.5, "y": 4, "w": 1.25 }, + { "x": 13.75, "y": 4, "w": 1.25 } + ] + }, + "LAYOUT_60_iso": { + "layout": [ + { "x": 0, "y": 0 }, + { "x": 1, "y": 0 }, + { "x": 2, "y": 0 }, + { "x": 3, "y": 0 }, + { "x": 4, "y": 0 }, + { "x": 5, "y": 0 }, + { "x": 6, "y": 0 }, + { "x": 7, "y": 0 }, + { "x": 8, "y": 0 }, + { "x": 9, "y": 0 }, + { "x": 10, "y": 0 }, + { "x": 11, "y": 0 }, + { "x": 12, "y": 0 }, + { "x": 13, "y": 0, "w": 2 }, + { "x": 0, "y": 1, "w": 1.5 }, + { "x": 1.5, "y": 1 }, + { "x": 2.5, "y": 1 }, + { "x": 3.5, "y": 1 }, + { "x": 4.5, "y": 1 }, + { "x": 5.5, "y": 1 }, + { "x": 6.5, "y": 1 }, + { "x": 7.5, "y": 1 }, + { "x": 8.5, "y": 1 }, + { "x": 9.5, "y": 1 }, + { "x": 10.5, "y": 1 }, + { "x": 11.5, "y": 1 }, + { "x": 12.5, "y": 1 }, + { "x": 13.75, "y": 1, "w": 1.25, "h": 2 }, + { "x": 0, "y": 2, "w": 1.75 }, + { "x": 1.75, "y": 2 }, + { "x": 2.75, "y": 2 }, + { "x": 3.75, "y": 2 }, + { "x": 4.75, "y": 2 }, + { "x": 5.75, "y": 2 }, + { "x": 6.75, "y": 2 }, + { "x": 7.75, "y": 2 }, + { "x": 8.75, "y": 2 }, + { "x": 9.75, "y": 2 }, + { "x": 10.75, "y": 2 }, + { "x": 11.75, "y": 2 }, + { "x": 12.75, "y": 2 }, + { "x": 0, "y": 3, "w": 1.25 }, + { "x": 1.25, "y": 3 }, + { "x": 2.25, "y": 3 }, + { "x": 3.25, "y": 3 }, + { "x": 4.25, "y": 3 }, + { "x": 5.25, "y": 3 }, + { "x": 6.25, "y": 3 }, + { "x": 7.25, "y": 3 }, + { "x": 8.25, "y": 3 }, + { "x": 9.25, "y": 3 }, + { "x": 10.25, "y": 3 }, + { "x": 11.25, "y": 3 }, + { "x": 12.25, "y": 3, "w": 2.75 }, + { "x": 0, "y": 4, "w": 1.25 }, + { "x": 1.25, "y": 4, "w": 1.25 }, + { "x": 2.5, "y": 4, "w": 1.25 }, + { "x": 3.75, "y": 4, "w": 6.25 }, + { "x": 10, "y": 4, "w": 1.25 }, + { "x": 11.25, "y": 4, "w": 1.25 }, + { "x": 12.5, "y": 4, "w": 1.25 }, + { "x": 13.75, "y": 4, "w": 1.25 } + ] + }, + "LAYOUT_60_ansi": { + "layout": [ + { "x": 0, "y": 0 }, + { "x": 1, "y": 0 }, + { "x": 2, "y": 0 }, + { "x": 3, "y": 0 }, + { "x": 4, "y": 0 }, + { "x": 5, "y": 0 }, + { "x": 6, "y": 0 }, + { "x": 7, "y": 0 }, + { "x": 8, "y": 0 }, + { "x": 9, "y": 0 }, + { "x": 10, "y": 0 }, + { "x": 11, "y": 0 }, + { "x": 12, "y": 0 }, + { "x": 13, "y": 0, "w": 2 }, + { "x": 0, "y": 1, "w": 1.5 }, + { "x": 1.5, "y": 1 }, + { "x": 2.5, "y": 1 }, + { "x": 3.5, "y": 1 }, + { "x": 4.5, "y": 1 }, + { "x": 5.5, "y": 1 }, + { "x": 6.5, "y": 1 }, + { "x": 7.5, "y": 1 }, + { "x": 8.5, "y": 1 }, + { "x": 9.5, "y": 1 }, + { "x": 10.5, "y": 1 }, + { "x": 11.5, "y": 1 }, + { "x": 12.5, "y": 1 }, + { "x": 13.75, "y": 1, "w": 1.25 }, + { "x": 0, "y": 2, "w": 1.75 }, + { "x": 1.75, "y": 2 }, + { "x": 2.75, "y": 2 }, + { "x": 3.75, "y": 2 }, + { "x": 4.75, "y": 2 }, + { "x": 5.75, "y": 2 }, + { "x": 6.75, "y": 2 }, + { "x": 7.75, "y": 2 }, + { "x": 8.75, "y": 2 }, + { "x": 9.75, "y": 2 }, + { "x": 10.75, "y": 2 }, + { "x": 11.75, "y": 2 }, + { "x": 12.75, "y": 2, "w": 2.25 }, + { "x": 0, "y": 3, "w": 2.25 }, + { "x": 2.25, "y": 3 }, + { "x": 3.25, "y": 3 }, + { "x": 4.25, "y": 3 }, + { "x": 5.25, "y": 3 }, + { "x": 6.25, "y": 3 }, + { "x": 7.25, "y": 3 }, + { "x": 8.25, "y": 3 }, + { "x": 9.25, "y": 3 }, + { "x": 10.25, "y": 3 }, + { "x": 11.25, "y": 3 }, + { "x": 12.25, "y": 3, "w": 2.75 }, + { "x": 0, "y": 4, "w": 1.25 }, + { "x": 1.25, "y": 4, "w": 1.25 }, + { "x": 2.5, "y": 4, "w": 1.25 }, + { "x": 3.75, "y": 4, "w": 6.25 }, + { "x": 10, "y": 4, "w": 1.25 }, + { "x": 11.25, "y": 4, "w": 1.25 }, + { "x": 12.5, "y": 4, "w": 1.25 }, + { "x": 13.75, "y": 4, "w": 1.25 } + ] + } + } +} diff --git a/keyboards/cutie_club/keebcats/denis/keymaps/default/keymap.c b/keyboards/cutie_club/keebcats/denis/keymaps/default/keymap.c new file mode 100644 index 000000000000..3dbf5dc5b53e --- /dev/null +++ b/keyboards/cutie_club/keebcats/denis/keymaps/default/keymap.c @@ -0,0 +1,28 @@ +/* Copyright 2021 Cutie Club + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [0] = 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_BSPC, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, 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_RSFT, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTRL + ) +}; diff --git a/keyboards/cutie_club/keebcats/denis/keymaps/via/keymap.c b/keyboards/cutie_club/keebcats/denis/keymaps/via/keymap.c new file mode 100644 index 000000000000..b7fa4f154fd1 --- /dev/null +++ b/keyboards/cutie_club/keebcats/denis/keymaps/via/keymap.c @@ -0,0 +1,49 @@ +/* Copyright 2021 Cutie Club + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [0] = 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_BSPC, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, 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_RSFT, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTRL + ), + [1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/cutie_club/keebcats/denis/keymaps/via/rules.mk b/keyboards/cutie_club/keebcats/denis/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/cutie_club/keebcats/denis/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/cutie_club/keebcats/denis/readme.md b/keyboards/cutie_club/keebcats/denis/readme.md new file mode 100644 index 000000000000..5f734e7e9350 --- /dev/null +++ b/keyboards/cutie_club/keebcats/denis/readme.md @@ -0,0 +1,18 @@ +# Denis + +* Keyboard Maintainer: [Cutie Club](https://github.com/cutie-club/) +* Hardware Supported: Atmega32u4 based 60% PCB, with wide compatibility +* Hardware Availability: [Keebcats](https://keebcats.co.uk) + +## Bootloader + +Enter the bootloader in 2 ways with the default configuration: + +* **Bootmagic reset**: Hold down the key at top left key (matrix position 0,0) and plug the device in +* **Physical reset button**: Press the button marked reset on the back of the PCB + +Make example for this keyboard (after setting up your build environment): + + make cutie_club/keebcats/denis: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/cutie_club/keebcats/denis/rules.mk b/keyboards/cutie_club/keebcats/denis/rules.mk new file mode 100644 index 000000000000..9ad4c783bced --- /dev/null +++ b/keyboards/cutie_club/keebcats/denis/rules.mk @@ -0,0 +1,21 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable bootmagic +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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +LAYOUTS = 60_iso_tsangan 60_iso_split_bs_rshift 60_iso 60_tsangan_hhkb 60_hhkb 60_ansi_tsangan 60_ansi_split_bs_rshift 60_ansi diff --git a/keyboards/cutie_club/keebcats/dougal/config.h b/keyboards/cutie_club/keebcats/dougal/config.h new file mode 100644 index 000000000000..05160322c4ba --- /dev/null +++ b/keyboards/cutie_club/keebcats/dougal/config.h @@ -0,0 +1,50 @@ +/* Copyright 2021 Cutie Club + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFB9C +#define PRODUCT_ID 0xB265 +#define DEVICE_VER 0x0000 +#define MANUFACTURER Cutie Club +#define PRODUCT Keebcats Dougal 65% + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 16 + +/* + * Keyboard Matrix Assignments + */ +#define MATRIX_ROW_PINS { B2, D0, F5, F4, F1 } +#define MATRIX_COL_PINS { E6, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, D1, B7 } +#define UNUSED_PINS { B0, B1, B3 } + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +#define LED_CAPS_LOCK_PIN F0 + +/* 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/cutie_club/keebcats/dougal/dougal.c b/keyboards/cutie_club/keebcats/dougal/dougal.c new file mode 100644 index 000000000000..8f247bd2879e --- /dev/null +++ b/keyboards/cutie_club/keebcats/dougal/dougal.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Cutie Club + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "dougal.h" diff --git a/keyboards/cutie_club/keebcats/dougal/dougal.h b/keyboards/cutie_club/keebcats/dougal/dougal.h new file mode 100644 index 000000000000..cd0fa1d2cd99 --- /dev/null +++ b/keyboards/cutie_club/keebcats/dougal/dougal.h @@ -0,0 +1,34 @@ +/* Copyright 2021 Cutie Club + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_all( \ + k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_13, k00_14, k00_15, \ + k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, k01_15, \ + k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_12, k02_13, k02_15, \ + k03_00, k03_01, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, k03_13, k03_15, \ + k04_00, k04_01, k04_02, k04_04, k04_06, k04_08, k04_09, k04_10, k04_11, k04_12, k04_13, k04_15 \ +) \ +{ \ + { k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_13, k00_14, k00_15 }, \ + { k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, KC_NO, k01_15 }, \ + { k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_12, k02_13, KC_NO, k02_15 }, \ + { k03_00, k03_01, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, k03_13, KC_NO, k03_15 }, \ + { k04_00, k04_01, k04_02, KC_NO, k04_04, KC_NO, k04_06, KC_NO, k04_08, k04_09, k04_10, k04_11, k04_12, k04_13, KC_NO, k04_15 } \ +} diff --git a/keyboards/cutie_club/keebcats/dougal/info.json b/keyboards/cutie_club/keebcats/dougal/info.json new file mode 100644 index 000000000000..70c804e20d61 --- /dev/null +++ b/keyboards/cutie_club/keebcats/dougal/info.json @@ -0,0 +1,84 @@ +{ + "keyboard_name": "Keebcats Dougal", + "url": "", + "maintainer": "Cutie Club", + "layouts": { + "LAYOUT_all": { + "layout": [ + { "x": 0, "y": 0 }, + { "x": 1, "y": 0 }, + { "x": 2, "y": 0 }, + { "x": 3, "y": 0 }, + { "x": 4, "y": 0 }, + { "x": 5, "y": 0 }, + { "x": 6, "y": 0 }, + { "x": 7, "y": 0 }, + { "x": 8, "y": 0 }, + { "x": 9, "y": 0 }, + { "x": 10, "y": 0 }, + { "x": 11, "y": 0 }, + { "x": 12, "y": 0 }, + { "x": 13, "y": 0 }, + { "x": 14, "y": 0 }, + { "x": 15, "y": 0 }, + { "x": 0, "y": 1, "w": 1.5 }, + { "x": 1.5, "y": 1 }, + { "x": 2.5, "y": 1 }, + { "x": 3.5, "y": 1 }, + { "x": 4.5, "y": 1 }, + { "x": 5.5, "y": 1 }, + { "x": 6.5, "y": 1 }, + { "x": 7.5, "y": 1 }, + { "x": 8.5, "y": 1 }, + { "x": 9.5, "y": 1 }, + { "x": 10.5, "y": 1 }, + { "x": 11.5, "y": 1 }, + { "x": 12.5, "y": 1 }, + { "x": 13.5, "y": 1, "w": 1.5 }, + { "x": 15, "y": 1 }, + { "x": 0, "y": 2, "w": 1.75 }, + { "x": 1.75, "y": 2 }, + { "x": 2.75, "y": 2 }, + { "x": 3.75, "y": 2 }, + { "x": 4.75, "y": 2 }, + { "x": 5.75, "y": 2 }, + { "x": 6.75, "y": 2 }, + { "x": 7.75, "y": 2 }, + { "x": 8.75, "y": 2 }, + { "x": 9.75, "y": 2 }, + { "x": 10.75, "y": 2 }, + { "x": 11.75, "y": 2 }, + { "x": 12.75, "y": 2 }, + { "x": 14, "y": 2 }, + { "x": 15, "y": 2 }, + { "x": 0, "y": 3, "w": 1.25 }, + { "x": 1.25, "y": 3 }, + { "x": 2.25, "y": 3 }, + { "x": 3.25, "y": 3 }, + { "x": 4.25, "y": 3 }, + { "x": 5.25, "y": 3 }, + { "x": 6.25, "y": 3 }, + { "x": 7.25, "y": 3 }, + { "x": 8.25, "y": 3 }, + { "x": 9.25, "y": 3 }, + { "x": 10.25, "y": 3 }, + { "x": 11.25, "y": 3 }, + { "x": 12.25, "y": 3, "w": 1.75 }, + { "x": 14, "y": 3 }, + { "x": 15, "y": 3 }, + { "x": 0, "y": 4, "w": 1.25 }, + { "x": 1.25, "y": 4, "w": 1.25 }, + { "x": 2.5, "y": 4, "w": 1.25 }, + { "x": 3.75, "y": 4, "w": 2.25 }, + { "x": 6, "y": 4, "w": 1.25 }, + { "x": 7.25, "y": 4, "w": 2.75 }, + { "x": 10, "y": 4 }, + { "x": 11, "y": 4 }, + { "x": 12, "y": 4 }, + { "x": 13, "y": 4 }, + { "x": 14, "y": 4 }, + { "x": 15, "y": 4 } + ] + } + } +} diff --git a/keyboards/cutie_club/keebcats/dougal/keymaps/default/keymap.c b/keyboards/cutie_club/keebcats/dougal/keymaps/default/keymap.c new file mode 100644 index 000000000000..ec3e1c21f7a3 --- /dev/null +++ b/keyboards/cutie_club/keebcats/dougal/keymaps/default/keymap.c @@ -0,0 +1,28 @@ +/* Copyright 2021 Cutie Club + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [0] = 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_BSPC, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTRL, KC_LEFT, KC_DOWN, KC_RIGHT + ) +}; diff --git a/keyboards/cutie_club/keebcats/dougal/keymaps/via/keymap.c b/keyboards/cutie_club/keebcats/dougal/keymaps/via/keymap.c new file mode 100644 index 000000000000..58d184a064b6 --- /dev/null +++ b/keyboards/cutie_club/keebcats/dougal/keymaps/via/keymap.c @@ -0,0 +1,49 @@ +/* Copyright 2021 Cutie Club + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [0] = 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_BSPC, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTRL, KC_LEFT, KC_DOWN, KC_RIGHT + ), + [1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/cutie_club/keebcats/dougal/keymaps/via/rules.mk b/keyboards/cutie_club/keebcats/dougal/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/cutie_club/keebcats/dougal/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/cutie_club/keebcats/dougal/readme.md b/keyboards/cutie_club/keebcats/dougal/readme.md new file mode 100644 index 000000000000..3c0dd932aa47 --- /dev/null +++ b/keyboards/cutie_club/keebcats/dougal/readme.md @@ -0,0 +1,18 @@ +# Dougal + +* Keyboard Maintainer: [Cutie Club](https://github.com/cutie-club/) +* Hardware Supported: Atmega32u4 based 65% PCB, with wide compatibility +* Hardware Availability: [Keebcats](https://keebcats.co.uk) + +## Bootloader + +Enter the bootloader in 2 ways with the default configuration: + +* **Bootmagic reset**: Hold down the key at top left key (matrix position 0,0) and plug the device in +* **Physical reset button**: Press the button marked reset on the back of the PCB + +Make example for this keyboard (after setting up your build environment): + + make cutie_club/keebcats/dougal: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/cutie_club/keebcats/dougal/rules.mk b/keyboards/cutie_club/keebcats/dougal/rules.mk new file mode 100644 index 000000000000..bc2921090446 --- /dev/null +++ b/keyboards/cutie_club/keebcats/dougal/rules.mk @@ -0,0 +1,19 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic +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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/cutie_club/wraith/config.h b/keyboards/cutie_club/wraith/config.h index 1f3e172d02a4..685aed81d674 100644 --- a/keyboards/cutie_club/wraith/config.h +++ b/keyboards/cutie_club/wraith/config.h @@ -119,59 +119,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -190,26 +137,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/cutie_club/wraith/info.json b/keyboards/cutie_club/wraith/info.json index 51ca82677f41..40cade6f1ab4 100644 --- a/keyboards/cutie_club/wraith/info.json +++ b/keyboards/cutie_club/wraith/info.json @@ -2,11 +2,8 @@ "keyboard_name": "wraith", "url": "", "maintainer": "amberstarlight", - "width": 16, - "height": 6, "layouts": { "LAYOUT_ansi": { - "key_count": 80, "layout": [ {"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.25, "y":0}, @@ -91,7 +88,6 @@ ] }, "LAYOUT_iso": { - "key_count": 81, "layout": [ {"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.25, "y":0}, diff --git a/keyboards/cutie_club/wraith/keymaps/default/keymap.c b/keyboards/cutie_club/wraith/keymaps/default/keymap.c index 342a411ef775..74a6bff26d99 100644 --- a/keyboards/cutie_club/wraith/keymaps/default/keymap.c +++ b/keyboards/cutie_club/wraith/keymaps/default/keymap.c @@ -40,11 +40,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; - -void matrix_init_user(void) { - -} - void matrix_scan_user(void) { // escape LED on layer 1 if (IS_LAYER_ON(1)) { @@ -53,7 +48,3 @@ void matrix_scan_user(void) { writePinHigh(B0); } } - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/cutie_club/wraith/keymaps/timer/keymap.c b/keyboards/cutie_club/wraith/keymaps/timer/keymap.c index e57c62103836..8b79709b3927 100644 --- a/keyboards/cutie_club/wraith/keymaps/timer/keymap.c +++ b/keyboards/cutie_club/wraith/keymaps/timer/keymap.c @@ -42,11 +42,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; - -void matrix_init_user(void) { - -} - void matrix_scan_user(void) { layer_time_remaining -= timer_read()-prev_loop_time; //amount of time elapsed since the start of the previous loop prev_loop_time = timer_read(); //start counting the time to check at the next iteration @@ -84,7 +79,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; }; - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/cutie_club/wraith/rules.mk b/keyboards/cutie_club/wraith/rules.mk index a42fd42576f8..60c0e1b1938b 100644 --- a/keyboards/cutie_club/wraith/rules.mk +++ b/keyboards/cutie_club/wraith/rules.mk @@ -2,19 +2,12 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 @@ -22,7 +15,4 @@ COMMAND_ENABLE = yes # Commands for debug and configuration 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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/cx60/config.h b/keyboards/cx60/config.h new file mode 100644 index 000000000000..5ff4865a77d5 --- /dev/null +++ b/keyboards/cx60/config.h @@ -0,0 +1,58 @@ +/* +Copyright 2019 Rodrigo Feijao + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4358 // "CX" +#define PRODUCT_ID 0x3630 // "60" +#define DEVICE_VER 0x0001 +#define MANUFACTURER CX60 +#define PRODUCT CX60 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/* Keyboard Matrix Assignments */ +#define MATRIX_ROW_PINS { F1, F4, F5, F6, E6 } +#define MATRIX_COL_PINS { C7, C6, F7, F0, B4, D7, D6, B0, B1, B2, B3, D2, D3, D5 } +#define UNUSED_PINS + +/* Backlight Setup */ +#define BACKLIGHT_PIN B7 +#ifdef BACKLIGHT_PIN +#define BACKLIGHT_LEVELS 5 +#endif + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* RGB Underglow */ +#define RGB_DI_PIN B6 +#define RGBLIGHT_ANIMATIONS +#define RGBLED_NUM 14 +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 17 +#define RGBLIGHT_VAL_STEP 17 + +#define LED_CAPS_LOCK_PIN B5 +#define LED_PIN_ON_STATE 0 diff --git a/keyboards/cx60/cx60.c b/keyboards/cx60/cx60.c new file mode 100644 index 000000000000..2277d1463888 --- /dev/null +++ b/keyboards/cx60/cx60.c @@ -0,0 +1,15 @@ +/* +Copyright 2021 Horns Lyn + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "cx60.h" diff --git a/keyboards/cx60/cx60.h b/keyboards/cx60/cx60.h new file mode 100644 index 000000000000..e13b2f36b96c --- /dev/null +++ b/keyboards/cx60/cx60.h @@ -0,0 +1,33 @@ +/* +Copyright 2021 Horns Lyn + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "quantum.h" + +/* CX60 Keymap Definition Macro */ +#define LAYOUT_all( \ + 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, K3C, K3D, \ + K40, K41, K42, K45, 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, KC_NO }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \ + { K40, K41, K42, KC_NO, KC_NO, K45, KC_NO, KC_NO, KC_NO, K49, K4A, K4B, K4C, K4D } \ +} + diff --git a/keyboards/cx60/info.json b/keyboards/cx60/info.json new file mode 100644 index 000000000000..fc301d45e643 --- /dev/null +++ b/keyboards/cx60/info.json @@ -0,0 +1,10 @@ +{ + "keyboard_name": "CX60-VIA", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_all": { + "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"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":2}, {"label":"Z", "x":2, "y":3}, {"label":"X", "x":3, "y":3}, {"label":"C", "x":4, "y":3}, {"label":"V", "x":5, "y":3}, {"label":"B", "x":6, "y":3}, {"label":"N", "x":7, "y":3}, {"label":"M", "x":8, "y":3}, {"label":"<", "x":9, "y":3}, {"label":">", "x":10, "y":3}, {"label":"?", "x":11, "y":3}, {"label":"Shift", "x":12, "y":3}, {"label":"Up", "x":13, "y":3}, {"label":"Del", "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}, {"label":"Fn", "x":11, "y":4}, {"label":"Left", "x":12, "y":4}, {"label":"Down", "x":13, "y":4}, {"label":"Right", "x":14, "y":4}] + } + } +} diff --git a/keyboards/cx60/keymaps/default/keymap.c b/keyboards/cx60/keymaps/default/keymap.c new file mode 100644 index 000000000000..1d32050cbdf5 --- /dev/null +++ b/keyboards/cx60/keymaps/default/keymap.c @@ -0,0 +1,49 @@ +/* +Copyright 2021 Horns Lyn +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* 0: Base Layer */ + 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_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), + + /* 1: Function Layer */ + LAYOUT_all( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + BL_TOGG, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI,RGB_VAI, RGB_HUD, + RGB_SAI, RGB_SAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_VAD, RGB_MOD), + + /* 2: Function Layer 2 */ + LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + /* 3: Function Layer 3 */ + LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; + diff --git a/keyboards/cx60/keymaps/default/readme.md b/keyboards/cx60/keymaps/default/readme.md new file mode 100644 index 000000000000..37128e7c072a --- /dev/null +++ b/keyboards/cx60/keymaps/default/readme.md @@ -0,0 +1 @@ +# The CX60-VIA default layout diff --git a/keyboards/cx60/keymaps/via/keymap.c b/keyboards/cx60/keymaps/via/keymap.c new file mode 100644 index 000000000000..2a1b08709085 --- /dev/null +++ b/keyboards/cx60/keymaps/via/keymap.c @@ -0,0 +1,50 @@ +/* +Copyright 2021 Horns Lyn + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* 0: Base Layer */ + 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_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), + + /* 1: Function Layer */ + LAYOUT_all( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + BL_TOGG, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI,RGB_VAI, RGB_HUD, + RGB_SAI, RGB_SAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_VAD, RGB_MOD), + + /* 2: Function Layer 2 */ + LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + /* 3: Function Layer 3 */ + LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; + diff --git a/keyboards/cx60/keymaps/via/readme.md b/keyboards/cx60/keymaps/via/readme.md new file mode 100644 index 000000000000..37128e7c072a --- /dev/null +++ b/keyboards/cx60/keymaps/via/readme.md @@ -0,0 +1 @@ +# The CX60-VIA default layout diff --git a/keyboards/cx60/keymaps/via/rules.mk b/keyboards/cx60/keymaps/via/rules.mk new file mode 100644 index 000000000000..ca9fed0e6b53 --- /dev/null +++ b/keyboards/cx60/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +LTO_ENABLE = yes +VIA_ENABLE = yes diff --git a/keyboards/cx60/keymaps/via_caps/config.h b/keyboards/cx60/keymaps/via_caps/config.h new file mode 100644 index 000000000000..fcd63384fa4a --- /dev/null +++ b/keyboards/cx60/keymaps/via_caps/config.h @@ -0,0 +1,20 @@ +/* +Copyright 2021 Horns Lyn + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +/* this is for rgb underglow capslock indicator */ +#define RGBLIGHT_LAYERS +#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF + diff --git a/keyboards/cx60/keymaps/via_caps/keymap.c b/keyboards/cx60/keymaps/via_caps/keymap.c new file mode 100644 index 000000000000..af2d862df4aa --- /dev/null +++ b/keyboards/cx60/keymaps/via_caps/keymap.c @@ -0,0 +1,80 @@ +/* +Copyright 2021 Horns Lyn + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* 0: Base Layer */ + + /* Qwerty + * ,-----------------------------------------------------------------------------------------. + * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Bkspc | + * |-----------------------------------------------------------------------------------------+ + * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | + * |-----------------------------------------------------------------------------------------+ + * | Caps | A | S | D | F | G | H | J | K | L | ; | ' | Enter | + * |-----------------------------------------------------------------------------------------+ + * | Shift | Z | X | C | V | B | N | M | , | . | / | RSh | U | FN | + * |-----------------------------------------------------------------------------------------+ + * | Ctrl | Win | Alt | Space | RAlt | FN | L | D | R | + * `-----------------------------------------------------------------------------------------' + */ + + 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_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), + + /* 1: Function Layer */ + 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, RESET, + KC_TRNS, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, RGB_M_K, RGB_M_X, RGB_M_G, RGB_RMOD, RGB_MOD, KC_TRNS, KC_TRNS, RGB_TOG, + KC_TRNS, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SPD, KC_VOLU, RGB_SPI, + MO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAD, KC_VOLD, RGB_VAI), + + /* 2: Function Layer 2 */ + LAYOUT_all( + KC_PWR, KC_SLEP, KC_WAKE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MYCM, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_WWW_HOME, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_TRNS), + + /* 3: Function Layer 3 */ + LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; + +/* rgb underglow capslock indicator; by Dominic Lee/MYMKB; */ +const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS( {0, 14, HSV_RED} ); + +bool led_update_user(led_t led_state) { + rgblight_set_layer_state(0, led_state.caps_lock); + return true; +} + +const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( my_capslock_layer ); + +void keyboard_post_init_user(void) { + /* Enable the LED layers */ + rgblight_layers = my_rgb_layers; +} +/* rgb underglow capslock indicator; end; */ diff --git a/keyboards/cx60/keymaps/via_caps/readme.md b/keyboards/cx60/keymaps/via_caps/readme.md new file mode 100644 index 000000000000..37128e7c072a --- /dev/null +++ b/keyboards/cx60/keymaps/via_caps/readme.md @@ -0,0 +1 @@ +# The CX60-VIA default layout diff --git a/keyboards/cx60/keymaps/via_caps/rules.mk b/keyboards/cx60/keymaps/via_caps/rules.mk new file mode 100644 index 000000000000..ca9fed0e6b53 --- /dev/null +++ b/keyboards/cx60/keymaps/via_caps/rules.mk @@ -0,0 +1,2 @@ +LTO_ENABLE = yes +VIA_ENABLE = yes diff --git a/keyboards/cx60/readme.md b/keyboards/cx60/readme.md new file mode 100644 index 000000000000..868f319b6a14 --- /dev/null +++ b/keyboards/cx60/readme.md @@ -0,0 +1,15 @@ +# CX60-VIA + +64-key 60% with dedicated arrow keys, single-layout, VIA-enabled. + +![Top View of a pair of CX60 Keyboard](https://i.imgur.com/Q2YVuhd.jpg) + +* Keyboard Maintainer: QMK Community +* Hardware Supported: CX60 PCB +* Hardware Availability: [晨星XCstore](https://item.taobao.com/item.htm?id=641932740480) + +Make example for this keyboard (after setting up your build environment): + + make cx60: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/cx60/rules.mk b/keyboards/cx60/rules.mk new file mode 100644 index 000000000000..1f44da3ea6c9 --- /dev/null +++ b/keyboards/cx60/rules.mk @@ -0,0 +1,19 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/cybergear/macro25/info.json b/keyboards/cybergear/macro25/info.json index 4117d12bb595..a029ae1ce33d 100644 --- a/keyboards/cybergear/macro25/info.json +++ b/keyboards/cybergear/macro25/info.json @@ -7,8 +7,6 @@ "pid": "0x69A1", "device_ver": "0x0001" }, - "width": 5, - "height": 2, "diode_direction": "COL2ROW", "layouts": { "LAYOUT_ortho_2x5": { diff --git a/keyboards/cybergear/macro25/rules.mk b/keyboards/cybergear/macro25/rules.mk index e4ffb10d0494..b97001801122 100644 --- a/keyboards/cybergear/macro25/rules.mk +++ b/keyboards/cybergear/macro25/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/daisy/config.h b/keyboards/daisy/config.h deleted file mode 100644 index ea56f948eef7..000000000000 --- a/keyboards/daisy/config.h +++ /dev/null @@ -1,222 +0,0 @@ -/* -Copyright 2020 - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -#include "config_common.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x4B50 -#define PRODUCT_ID 0xD7DC -#define DEVICE_VER 0x0501 -#define MANUFACTURER KTEC -#define PRODUCT Daisy - -/* key matrix size */ -#define MATRIX_ROWS 4 -#define MATRIX_COLS 11 - -/* - * 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 { D2, D3, D5, B7 } -#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, B6, B5, B4, D7, D6 } -#define UNUSED_PINS - -/* COL2ROW, ROW2COL*/ -#define DIODE_DIRECTION COL2ROW - -/* - * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. - */ -//#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 - -#define LED_CAPS_LOCK_PIN C6 -#define LED_PIN_ON_STATE 0 - -#define BACKLIGHT_PIN D0 -// #define BACKLIGHT_BREATHING -#define BACKLIGHT_LEVELS 6 - -#define RGB_DI_PIN C7 -#ifdef RGB_DI_PIN -# define RGBLED_NUM 8 -# define RGBLIGHT_HUE_STEP 12 -# define RGBLIGHT_SAT_STEP 25 -# define RGBLIGHT_VAL_STEP 12 -// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ -// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ -// /*== all animations enable ==*/ -# define RGBLIGHT_ANIMATIONS -// /*== or choose animations ==*/ -// #define RGBLIGHT_EFFECT_BREATHING -// #define RGBLIGHT_EFFECT_RAINBOW_MOOD -// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL -// #define RGBLIGHT_EFFECT_SNAKE -// #define RGBLIGHT_EFFECT_KNIGHT -// #define RGBLIGHT_EFFECT_CHRISTMAS -// #define RGBLIGHT_EFFECT_STATIC_GRADIENT -// #define RGBLIGHT_EFFECT_RGB_TEST -// #define RGBLIGHT_EFFECT_ALTERNATING -// /*== customize breathing effect ==*/ -// /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ -// #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 -// /*==== use exp() and sin() ====*/ -// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 -// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 -#endif - -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 5 - -/* define if matrix has ghost (lacks anti-ghosting diodes) */ -//#define MATRIX_HAS_GHOST - -/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ -#define LOCKING_SUPPORT_ENABLE -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE - -/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. - * This is userful for the Windows task manager shortcut (ctrl+shift+esc). - */ -// #define GRAVE_ESC_CTRL_OVERRIDE - -/* - * Force NKRO - * - * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved - * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the - * makefile for this to work.) - * - * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) - * until the next keyboard reset. - * - * NKRO may prevent your keystrokes from being detected in the BIOS, but it is - * fully operational during normal computer usage. - * - * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) - * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by - * bootmagic, NKRO mode will always be enabled until it is toggled again during a - * power-up. - * - */ -//#define FORCE_NKRO - -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - -/* - * Feature disable options - * These options are also useful to firmware size reduction. - */ - -/* disable debug print */ -//#define NO_DEBUG - -/* disable print */ -//#define NO_PRINT - -/* disable action features */ -//#define NO_ACTION_LAYER -//#define NO_ACTION_TAPPING -//#define NO_ACTION_ONESHOT - -/* disable these deprecated features by default */ -#define NO_ACTION_MACRO -#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - -/* Bootmagic Lite key configuration */ -// #define BOOTMAGIC_LITE_ROW 0 -// #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/daisy/info.json b/keyboards/daisy/info.json deleted file mode 100644 index fcc7cd9faf46..000000000000 --- a/keyboards/daisy/info.json +++ /dev/null @@ -1,107 +0,0 @@ -{ - "keyboard_name": "Daisy", - "url": "", - "maintainer": "qmk", - "width": 12, - "height": 4, - "layouts": { - "LAYOUT": { - "key_count": 42, - "layout": [ - {"x": 0, "y": 0}, - {"x": 1, "y": 0}, - {"x": 2, "y": 0}, - {"x": 3, "y": 0}, - {"x": 4, "y": 0}, - {"x": 5, "y": 0}, - {"x": 6, "y": 0}, - {"x": 7, "y": 0}, - {"x": 8, "y": 0}, - {"x": 9, "y": 0}, - {"x": 10, "y": 0}, - {"x": 11, "y": 0}, - - {"x": 0, "y": 1, "w": 1.25}, - {"x": 1.25, "y": 1}, - {"x": 2.25, "y": 1}, - {"x": 3.25, "y": 1}, - {"x": 4.25, "y": 1}, - {"x": 5.25, "y": 1}, - {"x": 6.25, "y": 1}, - {"x": 7.25, "y": 1}, - {"x": 8.25, "y": 1}, - {"x": 9.25, "y": 1}, - {"x": 10.25, "y": 1, "w": 1.75}, - - {"x": 0, "y": 2, "w": 1.75}, - {"x": 1.75, "y": 2}, - {"x": 2.75, "y": 2}, - {"x": 3.75, "y": 2}, - {"x": 4.75, "y": 2}, - {"x": 5.75, "y": 2}, - {"x": 6.75, "y": 2}, - {"x": 7.75, "y": 2}, - {"x": 8.75, "y": 2}, - {"x": 9.75, "y": 2}, - {"x": 10.75, "y": 2, "w": 1.25}, - - {"x": 0, "y": 3, "w": 1.25}, - {"x": 1.25, "y": 3}, - {"x": 2.25, "y": 3, "w": 1.25}, - {"x": 3.5, "y": 3, "w": 2.25}, - {"x": 5.75, "y": 3, "w": 2.75}, - {"x": 8.5, "y": 3, "w": 1.25}, - {"x": 9.75, "y": 3}, - {"x": 10.75, "y": 3, "w": 1.25} - ] - }, - "LAYOUT_625_space": { - "key_count": 40, - "layout": [ - {"x": 0, "y": 0}, - {"x": 1, "y": 0}, - {"x": 2, "y": 0}, - {"x": 3, "y": 0}, - {"x": 4, "y": 0}, - {"x": 5, "y": 0}, - {"x": 6, "y": 0}, - {"x": 7, "y": 0}, - {"x": 8, "y": 0}, - {"x": 9, "y": 0}, - {"x": 10, "y": 0}, - {"x": 11, "y": 0}, - - {"x": 0, "y": 1, "w": 1.25}, - {"x": 1.25, "y": 1}, - {"x": 2.25, "y": 1}, - {"x": 3.25, "y": 1}, - {"x": 4.25, "y": 1}, - {"x": 5.25, "y": 1}, - {"x": 6.25, "y": 1}, - {"x": 7.25, "y": 1}, - {"x": 8.25, "y": 1}, - {"x": 9.25, "y": 1}, - {"x": 10.25, "y": 1, "w": 1.75}, - - {"x": 0, "y": 2, "w": 1.75}, - {"x": 1.75, "y": 2}, - {"x": 2.75, "y": 2}, - {"x": 3.75, "y": 2}, - {"x": 4.75, "y": 2}, - {"x": 5.75, "y": 2}, - {"x": 6.75, "y": 2}, - {"x": 7.75, "y": 2}, - {"x": 8.75, "y": 2}, - {"x": 9.75, "y": 2}, - {"x": 10.75, "y": 2, "w": 1.25}, - - {"x": 0, "y": 3, "w": 1.25}, - {"x": 1.25, "y": 3}, - {"x": 2.25, "y": 3}, - {"x": 3.25, "y": 3, "w": 6.25}, - {"x": 9.5, "y": 3, "w": 1.25}, - {"x": 10.75, "y": 3, "w": 1.25} - ] - } - } -} diff --git a/keyboards/daisy/readme.md b/keyboards/daisy/readme.md deleted file mode 100644 index a8a93bf79127..000000000000 --- a/keyboards/daisy/readme.md +++ /dev/null @@ -1,15 +0,0 @@ -# Daisy - -![Daisy PCB](https://cdn.shopify.com/s/files/1/2711/4238/products/HTB1Pj1UggMPMeJjy1Xcq6xpppXa7_1024x1024.jpg) - -A 40% keyboard kit sold by KPrepublic. - -* Keyboard Maintainer: [westfoxtrot](https://github.com/westfoxtrot) -* Hardware Supported: Daisy PCB Rev.1, Daisy PCB Rev.2 -* Hardware Availability: [KPrepublic](https://kprepublic.com/products/daisy-40-custom-keyboard-pcb) - -Make example for this keyboard (after setting up your build environment): - - make daisy: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/daisy/rules.mk b/keyboards/daisy/rules.mk deleted file mode 100644 index 7d2d6d405618..000000000000 --- a/keyboards/daisy/rules.mk +++ /dev/null @@ -1,30 +0,0 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = atmel-dfu - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration -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 = no # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 diff --git a/keyboards/daji/seis_cinco/info.json b/keyboards/daji/seis_cinco/info.json index 364e621a1cdd..7c213d216c3b 100644 --- a/keyboards/daji/seis_cinco/info.json +++ b/keyboards/daji/seis_cinco/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Seis Cinco", "url": "", "maintainer": "toraifu", - "width": 16, - "height": 5, "layouts": { "LAYOUT_default": { "layout": [ diff --git a/keyboards/daji/seis_cinco/rules.mk b/keyboards/daji/seis_cinco/rules.mk index f2f3619b5638..1571953b4bd9 100644 --- a/keyboards/daji/seis_cinco/rules.mk +++ b/keyboards/daji/seis_cinco/rules.mk @@ -8,18 +8,15 @@ BOOTLOADER = stm32-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output # Enter lower-power sleep mode when on the ChibiOS idle thread diff --git a/keyboards/db/db63/info.json b/keyboards/db/db63/info.json index b8ec10539e83..e588de4879a5 100644 --- a/keyboards/db/db63/info.json +++ b/keyboards/db/db63/info.json @@ -2,8 +2,6 @@ "keyboard_name": "db63", "url": "http://www.keyboard-layout-editor.com/#/gists/dadea703fc8bfc87dc7c480de9f3ef38", "maintainer": "QMK Community", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { "layout": [ @@ -15,4 +13,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/db/db63/rules.mk b/keyboards/db/db63/rules.mk index 3d51be11332d..3bff3ee31b28 100644 --- a/keyboards/db/db63/rules.mk +++ b/keyboards/db/db63/rules.mk @@ -2,17 +2,10 @@ MCU = atmega32a # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid # build options -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes EXTRAKEY_ENABLE = yes CONSOLE_ENABLE = no diff --git a/keyboards/dc01/arrow/info.json b/keyboards/dc01/arrow/info.json index c1fc105923c9..fccf577941ff 100644 --- a/keyboards/dc01/arrow/info.json +++ b/keyboards/dc01/arrow/info.json @@ -2,8 +2,6 @@ "keyboard_name": "DC01 Arrow Cluster", "url": "", "maintainer": "Yiancar-Designs", - "width": 3, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"label":"Insert", "x":0, "y":0}, {"label":"Home", "x":1, "y":0}, {"label":"PgUp", "x":2, "y":0}, {"label":"Delete", "x":0, "y":1}, {"label":"End", "x":1, "y":1}, {"label":"PgDn", "x":2, "y":1}, {"label":"\u2191", "x":1, "y":3}, {"label":"\u2190", "x":0, "y":4}, {"label":"\u2193", "x":1, "y":4}, {"label":"\u2192", "x":2, "y":4}] diff --git a/keyboards/dc01/arrow/rules.mk b/keyboards/dc01/arrow/rules.mk index 17de05bc7d37..ae547d90f700 100644 --- a/keyboards/dc01/arrow/rules.mk +++ b/keyboards/dc01/arrow/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output NO_USB_STARTUP_CHECK = yes # Disable initialization only when usb is plugged in CUSTOM_MATRIX = yes # Use custom matrix SRC += matrix.c \ diff --git a/keyboards/dc01/left/config.h b/keyboards/dc01/left/config.h index 57614e84ab21..bc934e4a3943 100644 --- a/keyboards/dc01/left/config.h +++ b/keyboards/dc01/left/config.h @@ -42,7 +42,7 @@ along with this program. If not, see . * */ #define MATRIX_ROW_PINS { B6, B5, B4, D7, D6 } -#define MATRIX_COL_PINS { F4, F1, F0, F7, F6, F5 } +#define MATRIX_COL_PINS { F4, F1, F0, F7, F6, F5, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN } #define UNUSED_PINS #define F_SCL 350000UL @@ -122,23 +122,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 diff --git a/keyboards/dc01/left/i2c.h b/keyboards/dc01/left/i2c.h index 25e876658bbd..0d93e4ecaa41 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 @@ -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/dc01/left/info.json b/keyboards/dc01/left/info.json index d2329df72826..c2bc9337c53c 100644 --- a/keyboards/dc01/left/info.json +++ b/keyboards/dc01/left/info.json @@ -2,8 +2,6 @@ "keyboard_name": "DC01 Left Half", "url": "", "maintainer": "Yiancar-Designs", - "width": 22.5, - "height": 5, "layouts": { "LAYOUT_ansi": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"\"", "x":2, "y":0}, {"label":"\u00a3", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Back", "x":13, "y":0}, {"label":"Del", "x":14, "y":0}, {"label":"Insert", "x":15.25, "y":0}, {"label":"Home", "x":16.25, "y":0}, {"label":"PgUp", "x":17.25, "y":0}, {"label":"Num Lock", "x":18.5, "y":0}, {"label":"/", "x":19.5, "y":0}, {"label":"*", "x":20.5, "y":0}, {"label":"-", "x":21.5, "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":"Delete", "x":15.25, "y":1}, {"label":"End", "x":16.25, "y":1}, {"label":"PgDn", "x":17.25, "y":1}, {"label":"7", "x":18.5, "y":1}, {"label":"8", "x":19.5, "y":1}, {"label":"9", "x":20.5, "y":1}, {"label":"+", "x":21.5, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"@", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"4", "x":18.5, "y":2}, {"label":"5", "x":19.5, "y":2}, {"label":"6", "x":20.5, "y":2}, {"label":"+", "x":21.5, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Shift", "x":14, "y":3}, {"label":"\u2191", "x":16.25, "y":3}, {"label":"1", "x":18.5, "y":3}, {"label":"2", "x":19.5, "y":3}, {"label":"3", "x":20.5, "y":3}, {"label":"Enter", "x":21.5, "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":2.75}, {"label":"Fn", "x":6.5, "y":4, "w":1.25}, {"x":7.75, "y":4, "w":2.25}, {"label":"AltGr", "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}, {"label":"\u2190", "x":15.25, "y":4}, {"label":"\u2193", "x":16.25, "y":4}, {"label":"\u2192", "x":17.25, "y":4}, {"label":"0", "x":18.5, "y":4}, {"label":"00", "x":19.5, "y":4}, {"label":".", "x":20.5, "y":4}, {"label":"Enter", "x":21.5, "y":4}] diff --git a/keyboards/dc01/left/matrix.c b/keyboards/dc01/left/matrix.c index c3b3b39a4f5e..bf5aba849790 100644 --- a/keyboards/dc01/left/matrix.c +++ b/keyboards/dc01/left/matrix.c @@ -26,6 +26,7 @@ along with this program. If not, see . #include "wait.h" #include "print.h" #include "debug.h" +#include "gpio.h" #include "util.h" #include "matrix.h" #include "timer.h" @@ -71,7 +72,7 @@ along with this program. If not, see . #if (DIODE_DIRECTION == ROW2COL) || (DIODE_DIRECTION == COL2ROW) static const uint8_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; -static const uint8_t col_pins[MATRIX_COLS_SCANNED] = MATRIX_COL_PINS; +static const uint8_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; #endif /* matrix state(1:on, 0:off) */ @@ -451,4 +452,4 @@ i2c_status_t i2c_transaction(uint8_t address, uint32_t mask, uint8_t col_offset) i2c_stop(); return (status < 0) ? status : I2C_STATUS_SUCCESS; -} \ No newline at end of file +} diff --git a/keyboards/dc01/left/rules.mk b/keyboards/dc01/left/rules.mk index cd440a494a74..d891474d0f0b 100644 --- a/keyboards/dc01/left/rules.mk +++ b/keyboards/dc01/left/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output CUSTOM_MATRIX = yes # Use custom matrix SRC += matrix.c \ diff --git a/keyboards/dc01/numpad/info.json b/keyboards/dc01/numpad/info.json index 047065cb6f26..6a151aa93bc0 100644 --- a/keyboards/dc01/numpad/info.json +++ b/keyboards/dc01/numpad/info.json @@ -2,8 +2,6 @@ "keyboard_name": "DC01 Numpad", "url": "", "maintainer": "Yiancar-Designs", - "width": 4, - "height": 5, "layouts": { "LAYOUT_numpad_5x4": { "layout": [{"label":"Num Lock", "x":0, "y":0}, {"label":"/", "x":1, "y":0}, {"label":"*", "x":2, "y":0}, {"label":"-", "x":3, "y":0}, {"label":"7", "x":0, "y":1}, {"label":"8", "x":1, "y":1}, {"label":"9", "x":2, "y":1}, {"label":"4", "x":0, "y":2}, {"label":"5", "x":1, "y":2}, {"label":"6", "x":2, "y":2}, {"label":"+", "x":3, "y":1, "h":2}, {"label":"1", "x":0, "y":3}, {"label":"2", "x":1, "y":3}, {"label":"3", "x":2, "y":3}, {"label":"0", "x":0, "y":4, "w":2}, {"label":".", "x":2, "y":4}, {"label":"Enter", "x":3, "y":3, "h":2}] diff --git a/keyboards/dc01/numpad/rules.mk b/keyboards/dc01/numpad/rules.mk index b60a646e13f0..106611905333 100644 --- a/keyboards/dc01/numpad/rules.mk +++ b/keyboards/dc01/numpad/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output NO_USB_STARTUP_CHECK = yes # Disable initialization only when usb is plugged in CUSTOM_MATRIX = yes # Use custom matrix SRC += matrix.c \ diff --git a/keyboards/dc01/right/info.json b/keyboards/dc01/right/info.json index 92acdf5e019d..1eb6f1792829 100644 --- a/keyboards/dc01/right/info.json +++ b/keyboards/dc01/right/info.json @@ -2,8 +2,6 @@ "keyboard_name": "DC01 Right Half", "url": "", "maintainer": "Yiancar-Designs", - "width": 8.5, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"label":"&", "x":0.5, "y":0}, {"label":"*", "x":1.5, "y":0}, {"label":"(", "x":2.5, "y":0}, {"label":")", "x":3.5, "y":0}, {"label":"_", "x":4.5, "y":0}, {"label":"+", "x":5.5, "y":0}, {"label":"Back", "x":6.5, "y":0}, {"label":"Del", "x":7.5, "y":0}, {"label":"Y", "x":0, "y":1}, {"label":"U", "x":1, "y":1}, {"label":"I", "x":2, "y":1}, {"label":"O", "x":3, "y":1}, {"label":"P", "x":4, "y":1}, {"label":"{", "x":5, "y":1}, {"label":"}", "x":6, "y":1}, {"label":"|", "x":7, "y":1, "w":1.5}, {"label":"H", "x":0.25, "y":2}, {"label":"J", "x":1.25, "y":2}, {"label":"K", "x":2.25, "y":2}, {"label":"L", "x":3.25, "y":2}, {"label":":", "x":4.25, "y":2}, {"label":"@", "x":5.25, "y":2}, {"label":"~", "x":6.25, "y":2}, {"label":"Enter", "x":7.25, "y":2, "w":1.25}, {"label":"N", "x":0.75, "y":3}, {"label":"M", "x":1.75, "y":3}, {"label":"<", "x":2.75, "y":3}, {"label":">", "x":3.75, "y":3}, {"label":"?", "x":4.75, "y":3}, {"label":"Shift", "x":5.75, "y":3, "w":1.75}, {"label":"Shift", "x":7.5, "y":3}, {"label":"Fn", "x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":2.25}, {"label":"AltGr", "x":3.5, "y":4, "w":1.25}, {"label":"Win", "x":4.75, "y":4, "w":1.25}, {"label":"Menu", "x":6, "y":4, "w":1.25}, {"label":"Ctrl", "x":7.25, "y":4, "w":1.25}] diff --git a/keyboards/dc01/right/rules.mk b/keyboards/dc01/right/rules.mk index 17de05bc7d37..ae547d90f700 100644 --- a/keyboards/dc01/right/rules.mk +++ b/keyboards/dc01/right/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output NO_USB_STARTUP_CHECK = yes # Disable initialization only when usb is plugged in CUSTOM_MATRIX = yes # Use custom matrix SRC += matrix.c \ diff --git a/keyboards/dekunukem/duckypad/config.h b/keyboards/dekunukem/duckypad/config.h index 2f1b2ef32ca9..06f2ae807d40 100644 --- a/keyboards/dekunukem/duckypad/config.h +++ b/keyboards/dekunukem/duckypad/config.h @@ -42,12 +42,59 @@ along with this program. If not, see . #define RGB_MATRIX_KEYPRESSES #define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_REACTIVE_SIMPLE #define RGB_MATRIX_STARTUP_HUE 221 - +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH #endif -#define 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/dekunukem/duckypad/info.json b/keyboards/dekunukem/duckypad/info.json index 664e9314c964..e9e6e250c5c3 100644 --- a/keyboards/dekunukem/duckypad/info.json +++ b/keyboards/dekunukem/duckypad/info.json @@ -2,8 +2,6 @@ "keyboard_name": "duckyPad", "url": "https://github.com/dekuNukem/", "maintainer": "M4cs", - "width": 3, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/dekunukem/duckypad/keymaps/default/keymap.c b/keyboards/dekunukem/duckypad/keymaps/default/keymap.c index a87caa2cdd42..3b74640fe6d7 100644 --- a/keyboards/dekunukem/duckypad/keymaps/default/keymap.c +++ b/keyboards/dekunukem/duckypad/keymaps/default/keymap.c @@ -125,7 +125,7 @@ char* make_rgb_text(void){ return s; }; -void oled_task_user(void) { +bool oled_task_user(void) { render_logo(); oled_set_cursor(0,3); if (rgbToggled) { @@ -137,6 +137,7 @@ void oled_task_user(void) { oled_write_ln_P(s, false); free(s); } + return false; } bool process_record_user(uint16_t keycode, keyrecord_t *record) { diff --git a/keyboards/dekunukem/duckypad/keymaps/m4cs/keymap.c b/keyboards/dekunukem/duckypad/keymaps/m4cs/keymap.c index 80b188a480a9..cd8a31473902 100644 --- a/keyboards/dekunukem/duckypad/keymaps/m4cs/keymap.c +++ b/keyboards/dekunukem/duckypad/keymaps/m4cs/keymap.c @@ -203,7 +203,7 @@ char* make_sys_info_text(void) { }; -void oled_task_user(void) { +bool oled_task_user(void) { if (!sysToggled) { render_logo(); oled_set_cursor(0,3); @@ -221,6 +221,7 @@ void oled_task_user(void) { free(s); } } + return false; }; int concat(int a, int b) { diff --git a/keyboards/dekunukem/duckypad/keymaps/m4cs/sysinfo.py b/keyboards/dekunukem/duckypad/keymaps/m4cs/sysinfo.py index 04cf343ea69e..4dfcd4d4d172 100644 --- a/keyboards/dekunukem/duckypad/keymaps/m4cs/sysinfo.py +++ b/keyboards/dekunukem/duckypad/keymaps/m4cs/sysinfo.py @@ -21,7 +21,6 @@ import hid import time -import string import psutil import GPUtil import datetime diff --git a/keyboards/dekunukem/duckypad/keymaps/via/keymap.c b/keyboards/dekunukem/duckypad/keymaps/via/keymap.c index 5d11b6d6c874..01baaeb59377 100644 --- a/keyboards/dekunukem/duckypad/keymaps/via/keymap.c +++ b/keyboards/dekunukem/duckypad/keymaps/via/keymap.c @@ -67,7 +67,7 @@ static void render_logo(void) { oled_write_raw_P(ducky_logo, LOGO_SIZE); } -void oled_task_user(void) { +bool oled_task_user(void) { render_logo(); + return false; } - diff --git a/keyboards/dekunukem/duckypad/rules.mk b/keyboards/dekunukem/duckypad/rules.mk index 1a7031eff3e3..be291d733814 100644 --- a/keyboards/dekunukem/duckypad/rules.mk +++ b/keyboards/dekunukem/duckypad/rules.mk @@ -7,22 +7,20 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output WS2812_DRIVER = bitbang RGB_MATRIX_ENABLE = yes RGB_MATRIX_DRIVER = WS2812 -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/delikeeb/flatbread60/config.h b/keyboards/delikeeb/flatbread60/config.h index 6c40d46bffcb..5d63a8f5fcf2 100644 --- a/keyboards/delikeeb/flatbread60/config.h +++ b/keyboards/delikeeb/flatbread60/config.h @@ -101,59 +101,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. diff --git a/keyboards/delikeeb/flatbread60/info.json b/keyboards/delikeeb/flatbread60/info.json index ed621e8175b8..6de1a7e82776 100644 --- a/keyboards/delikeeb/flatbread60/info.json +++ b/keyboards/delikeeb/flatbread60/info.json @@ -2,8 +2,6 @@ "keyboard_name": "flatbread60", "url": "", "maintainer": "noclew", - "width": 12, - "height": 5, "layouts": { "LAYOUT_ortho_5x12": { "layout": [ diff --git a/keyboards/delikeeb/flatbread60/rules.mk b/keyboards/delikeeb/flatbread60/rules.mk index 4012c6ac3e4b..68c9cf03c384 100644 --- a/keyboards/delikeeb/flatbread60/rules.mk +++ b/keyboards/delikeeb/flatbread60/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/delikeeb/vaguettelite/info.json b/keyboards/delikeeb/vaguettelite/info.json index 0f3d6049a2fb..f3e99b374cab 100644 --- a/keyboards/delikeeb/vaguettelite/info.json +++ b/keyboards/delikeeb/vaguettelite/info.json @@ -2,8 +2,6 @@ "keyboard_name": "vaguettelite", "url": "", "maintainer": "noclew", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1, "w":1.5}, {"x":13, "y":1}, {"x":14, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2, "w":1.25}, {"x":13, "y":2}, {"x":14, "y":2}, {"x":0, "y":3}, {"x":1, "y":3, "w":1.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4}, {"x":2.25, "y":4, "w":1.25}, {"x":3.5, "y":4}, {"x":4.5, "y":4, "w":1.25}, {"x":5.75, "y":4, "w":2}, {"x":7.75, "y":4, "w":1.25}, {"x":9, "y":4}, {"x":10, "y":4}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}] diff --git a/keyboards/delikeeb/vaguettelite/rules.mk b/keyboards/delikeeb/vaguettelite/rules.mk index 5fff90decf93..254c5dbfc9c2 100644 --- a/keyboards/delikeeb/vaguettelite/rules.mk +++ b/keyboards/delikeeb/vaguettelite/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = yes diff --git a/keyboards/delikeeb/vanana/info.json b/keyboards/delikeeb/vanana/info.json index 486e8a7672f4..78c11fbee206 100644 --- a/keyboards/delikeeb/vanana/info.json +++ b/keyboards/delikeeb/vanana/info.json @@ -2,8 +2,6 @@ "keyboard_name": "vanana", "url": "", "maintainer": "noclew", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":7, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":13, "y":2}, {"x":14, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":7, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}, {"x":12, "y":3}, {"x":13, "y":3}, {"x":14, "y":3}, {"x":1, "y":4}, {"x":2, "y":4}, {"x":3, "y":4}, {"x":4, "y":4, "w":1.25}, {"x":5.25, "y":4, "w":1.5}, {"x":8.25, "y":4, "w":1.5}, {"x":9.75, "y":4, "w":1.25}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}] diff --git a/keyboards/delikeeb/vanana/rules.mk b/keyboards/delikeeb/vanana/rules.mk index f4aa7990930c..d4cfb68bd950 100644 --- a/keyboards/delikeeb/vanana/rules.mk +++ b/keyboards/delikeeb/vanana/rules.mk @@ -5,17 +5,14 @@ MCU = atmega32u4 BOOTLOADER = atmel-dfu # Build Options -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -BLUETOOTH_ENABLE = no # Enable Bluetooth ENCODER_ENABLE = yes # Enable Rotary Encoder # additional features for ELITE-C diff --git a/keyboards/delikeeb/vaneela/config.h b/keyboards/delikeeb/vaneela/config.h index b8f031d7c8f2..4feaf44a7241 100644 --- a/keyboards/delikeeb/vaneela/config.h +++ b/keyboards/delikeeb/vaneela/config.h @@ -85,59 +85,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. diff --git a/keyboards/delikeeb/vaneela/info.json b/keyboards/delikeeb/vaneela/info.json index 9faf7ceffb67..20f0fa9f4951 100644 --- a/keyboards/delikeeb/vaneela/info.json +++ b/keyboards/delikeeb/vaneela/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Vaneela", "url": "http://www.keyboard-layout-editor.com/#/gists/be89ff3a761a44280296994d459bd0a9", "maintainer": "qmk", - "width": 12.5, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/delikeeb/vaneela/rules.mk b/keyboards/delikeeb/vaneela/rules.mk index fd76a52478f7..bc3a9f5e3582 100644 --- a/keyboards/delikeeb/vaneela/rules.mk +++ b/keyboards/delikeeb/vaneela/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/delikeeb/vaneelaex/config.h b/keyboards/delikeeb/vaneelaex/config.h index 0b96918cbf12..4eb6303838fb 100644 --- a/keyboards/delikeeb/vaneelaex/config.h +++ b/keyboards/delikeeb/vaneelaex/config.h @@ -84,59 +84,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. diff --git a/keyboards/delikeeb/vaneelaex/info.json b/keyboards/delikeeb/vaneelaex/info.json index aa5b81f4d688..8ecd733aa291 100644 --- a/keyboards/delikeeb/vaneelaex/info.json +++ b/keyboards/delikeeb/vaneelaex/info.json @@ -2,8 +2,6 @@ "keyboard_name": "VaneelaEx", "url": "http://www.keyboard-layout-editor.com/#/gists/f605c1a2cb2fea256161964740bd2a52", "maintainer": "qmk", - "width": 16.5, - "height": 4, "layouts": { "LAYOUT_ss_6x12": { "layout": [ diff --git a/keyboards/delikeeb/vaneelaex/rules.mk b/keyboards/delikeeb/vaneelaex/rules.mk index fd76a52478f7..bc3a9f5e3582 100644 --- a/keyboards/delikeeb/vaneelaex/rules.mk +++ b/keyboards/delikeeb/vaneelaex/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/delikeeb/waaffle/rev3/info.json b/keyboards/delikeeb/waaffle/rev3/info.json index 200dce5a2a96..f855f89732a7 100644 --- a/keyboards/delikeeb/waaffle/rev3/info.json +++ b/keyboards/delikeeb/waaffle/rev3/info.json @@ -2,8 +2,6 @@ "keyboard_name": "waaffle", "url": "", "maintainer": "noclew", - "width": 16.25, - "height": 5, "layouts": { "LAYOUT_ortho_5x16": { "layout": diff --git a/keyboards/delikeeb/waaffle/rev3/rules.mk b/keyboards/delikeeb/waaffle/rev3/rules.mk index 775a281931dc..dc69fb178680 100644 --- a/keyboards/delikeeb/waaffle/rev3/rules.mk +++ b/keyboards/delikeeb/waaffle/rev3/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 DEFAULT_FOLDER = delikeeb/waaffle/rev3/pro_micro diff --git a/keyboards/delilah/info.json b/keyboards/delilah/info.json index 343a100a2d71..d6a378eeba3b 100644 --- a/keyboards/delilah/info.json +++ b/keyboards/delilah/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Delilah", "url": "https://www.rainkeebs.mx/product/delilah-keyboard-group-buy", "maintainer": "rainkeebs", - "width": 12.25, - "height": 4, "layouts": { "LAYOUT": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"Back
Space", "x":11, "y":0, "w":1.25}, {"label":"Tab", "x":0, "y":1, "w":1.25}, {"label":"A", "x":1.25, "y":1}, {"label":"S", "x":2.25, "y":1}, {"label":"D", "x":3.25, "y":1}, {"label":"F", "x":4.25, "y":1}, {"label":"G", "x":5.25, "y":1}, {"label":"H", "x":6.25, "y":1}, {"label":"J", "x":7.25, "y":1}, {"label":"K", "x":8.25, "y":1}, {"label":"L", "x":9.25, "y":1}, {"label":":", "x":10.25, "y":1}, {"label":"Enter", "x":11.25, "y":1}, {"label":"Shift", "x":0, "y":2, "w":1.75}, {"label":"Z", "x":1.75, "y":2}, {"label":"X", "x":2.75, "y":2}, {"label":"C", "x":3.75, "y":2}, {"label":"V", "x":4.75, "y":2}, {"label":"B", "x":5.75, "y":2}, {"label":"N", "x":6.75, "y":2}, {"label":"M", "x":7.75, "y":2}, {"label":"<", "x":8.75, "y":2}, {"label":">", "x":9.75, "y":2}, {"label":"Shift", "x":10.75, "y":2, "w":1.5}, {"label":"Ctrl", "x":0, "y":3, "w":1.25}, {"label":"Win", "x":1.25, "y":3}, {"label":"Alt", "x":2.25, "y":3}, {"label":"225", "x":3.25, "y":3, "w":2.25}, {"label":"275", "x":5.5, "y":3, "w":2.75}, {"label":"Alt", "x":9.0, "y":3}, {"label":"Win", "x":10.0, "y":3}, {"label":"Ctrl", "x":11.0, "y":3, "w":1.25}] diff --git a/keyboards/delilah/rules.mk b/keyboards/delilah/rules.mk index 41a0abee9b67..8ce3bfdfb9bb 100644 --- a/keyboards/delilah/rules.mk +++ b/keyboards/delilah/rules.mk @@ -7,12 +7,11 @@ BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -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 diff --git a/keyboards/deltasplit75/info.json b/keyboards/deltasplit75/info.json index 7bcb14d1cc09..da5e226cb2fe 100644 --- a/keyboards/deltasplit75/info.json +++ b/keyboards/deltasplit75/info.json @@ -1,8 +1,6 @@ { "keyboard_name": "DeltaSplit75", "maintainer": "xyxjj & itsaferbie", - "width": 17, - "height": 6, "layouts": { "LAYOUT_v2": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, {"label":"F2", "x":2, "y":0}, {"label":"F3", "x":3, "y":0}, {"label":"F4", "x":4, "y":0}, {"label":"F5", "x":5, "y":0}, {"label":"F6", "x":6, "y":0}, {"label":"F7", "x":8, "y":0}, {"label":"F8", "x":9, "y":0}, {"label":"F9", "x":10, "y":0}, {"label":"F10", "x":11, "y":0}, {"label":"F11", "x":12, "y":0}, {"label":"F12", "x":13, "y":0}, {"label":"Print", "x":14, "y":0}, {"label":"Scroll", "x":15, "y":0}, {"label":"Pause", "x":16, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"@", "x":2, "y":1}, {"label":"#", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":8, "y":1}, {"label":"*", "x":9, "y":1}, {"label":"(", "x":10, "y":1}, {"label":")", "x":11, "y":1}, {"label":"_", "x":12, "y":1}, {"label":"+", "x":13, "y":1}, {"label":"Back", "x":14, "y":1}, {"label":"Trns", "x":15, "y":1}, {"label":"Home", "x":16, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":7.5, "y":2}, {"label":"U", "x":8.5, "y":2}, {"label":"I", "x":9.5, "y":2}, {"label":"O", "x":10.5, "y":2}, {"label":"P", "x":11.5, "y":2}, {"label":"{", "x":12.5, "y":2}, {"label":"}", "x":13.5, "y":2}, {"label":"Back", "x":14.5, "y":2, "w":1.5}, {"label":"PgUp", "x":16, "y":2}, {"label":"Ctrl", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":7.75, "y":3}, {"label":"J", "x":8.75, "y":3}, {"label":"K", "x":9.75, "y":3}, {"label":"L", "x":10.75, "y":3}, {"label":":", "x":11.75, "y":3}, {"label":"\"", "x":12.75, "y":3}, {"label":"Trns", "x":13.75, "y":3}, {"label":"Enter", "x":14.75, "y":3, "w":1.25}, {"label":"PgDn", "x":16, "y":3}, {"label":"Shift", "x":0, "y":4, "w":1.25}, {"label":"Trns", "x":1.25, "y":4}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"B", "x":7.25, "y":4}, {"label":"N", "x":8.25, "y":4}, {"label":"M", "x":9.25, "y":4}, {"label":"<", "x":10.25, "y":4}, {"label":">", "x":11.25, "y":4}, {"label":"?", "x":12.25, "y":4}, {"label":"Shift", "x":13.25, "y":4, "w":1.75}, {"label":"Up", "x":15, "y":4}, {"label":"End", "x":16, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"label":"Space", "x":3.75, "y":5, "w":2}, {"label":"Fn", "x":5.75, "y":5}, {"label":"Space", "x":7.75, "y":5, "w":2.75}, {"label":"Alt", "x":10.5, "y":5, "w":1.25}, {"label":"Win", "x":11.75, "y":5}, {"label":"Ctrl", "x":12.75, "y":5, "w":1.25}, {"label":"Left", "x":14, "y":5}, {"label":"Down", "x":15, "y":5}, {"label":"Right", "x":16, "y":5}] diff --git a/keyboards/deltasplit75/rules.mk b/keyboards/deltasplit75/rules.mk index 5df20f03f8eb..1eef37879a19 100644 --- a/keyboards/deltasplit75/rules.mk +++ b/keyboards/deltasplit75/rules.mk @@ -2,32 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = yes diff --git a/keyboards/dichotomy/config.h b/keyboards/dichotomy/config.h index 0cdaf776b465..03e19b138838 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -66,5 +65,3 @@ along with this program. If not, see . 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 2023259b1111..37372d6496f6 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/dichotomy/info.json b/keyboards/dichotomy/info.json index 4008ce18b75d..e5f3265f357d 100644 --- a/keyboards/dichotomy/info.json +++ b/keyboards/dichotomy/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Dichotomy", "url": "", "maintainer": "qmk", - "width": 13, - "height": 6, "layouts": { "LAYOUT": { "layout": [{"label":"k00", "x":0, "y":0.5}, {"label":"k01", "x":1, "y":0.5}, {"label":"k02", "x":2, "y":0.25}, {"label":"k03", "x":3, "y":0}, {"label":"k04", "x":4, "y":0.5}, {"label":"k05", "x":5, "y":0.5}, {"label":"k06", "x":7, "y":0.5}, {"label":"k07", "x":8, "y":0.5}, {"label":"k08", "x":9, "y":0}, {"label":"k09", "x":10, "y":0.25}, {"label":"k0A", "x":11, "y":0.5}, {"label":"k0B", "x":12, "y":0.5}, {"label":"k10", "x":0, "y":1.5}, {"label":"k11", "x":1, "y":1.5}, {"label":"k12", "x":2, "y":1.25}, {"label":"k13", "x":3, "y":1}, {"label":"k14", "x":4, "y":1.5}, {"label":"k15", "x":5, "y":1.5}, {"label":"k16", "x":7, "y":1.5}, {"label":"k17", "x":8, "y":1.5}, {"label":"k18", "x":9, "y":1}, {"label":"k19", "x":10, "y":1.25}, {"label":"k1A", "x":11, "y":1.5}, {"label":"k1B", "x":12, "y":1.5}, {"label":"k20", "x":0, "y":2.5}, {"label":"k21", "x":1, "y":2.5}, {"label":"k22", "x":2, "y":2.25}, {"label":"k23", "x":3, "y":2}, {"label":"k24", "x":4, "y":2.5}, {"label":"k25", "x":5, "y":2.5}, {"label":"k26", "x":7, "y":2.5}, {"label":"k27", "x":8, "y":2.5}, {"label":"k28", "x":9, "y":2}, {"label":"k29", "x":10, "y":2.25}, {"label":"k2A", "x":11, "y":2.5}, {"label":"k2B", "x":12, "y":2.5}, {"label":"k33", "x":3, "y":4}, {"label":"k34", "x":4, "y":4}, {"label":"k35", "x":5, "y":4}, {"label":"k36", "x":7, "y":4}, {"label":"k37", "x":8, "y":4}, {"label":"k38", "x":9, "y":4}, {"label":"k42", "x":2, "y":5}, {"label":"k43", "x":3, "y":5}, {"label":"k44", "x":4, "y":5}, {"label":"k45", "x":5, "y":5}, {"label":"k46", "x":7, "y":5}, {"label":"k47", "x":8, "y":5}, {"label":"k48", "x":9, "y":5}, {"label":"k49", "x":10, "y":5}] diff --git a/keyboards/dichotomy/rules.mk b/keyboards/dichotomy/rules.mk index a9a01d867307..b95c9d5f33f7 100755 --- a/keyboards/dichotomy/rules.mk +++ b/keyboards/dichotomy/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # comment out to disable the options. # -#BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite #MOUSEKEY_ENABLE = yes # Mouse keys POINTING_DEVICE_ENABLE = yes # Generic Pointer, not as big as mouse keys hopefully. EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration CUSTOM_MATRIX = yes # Remote matrix from the wireless bridge -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA # BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -# MIDI_ENABLE = YES # MIDI controls -UNICODE_ENABLE = YES # Unicode -# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID # # project specific files SRC += matrix.c serial_uart.c diff --git a/keyboards/dinofizz/fnrow/v1/chconf.h b/keyboards/dinofizz/fnrow/v1/chconf.h new file mode 100644 index 000000000000..4f26862ffac3 --- /dev/null +++ b/keyboards/dinofizz/fnrow/v1/chconf.h @@ -0,0 +1,35 @@ +/* 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confupdate -i keyboards/dinofizz/fnrow/v1/chconf.h -r platforms/chibios/common/configs/chconf.h` + */ + +#pragma once + +#define CH_CFG_ST_FREQUENCY 10000 + +#define CH_CFG_USE_TM FALSE + +#define CH_CFG_USE_MESSAGES_PRIORITY FALSE + +#define CH_CFG_USE_DYNAMIC FALSE + +#define CH_DBG_ENABLE_STACK_CHECK FALSE + +#include_next + diff --git a/keyboards/dinofizz/fnrow/v1/config.h b/keyboards/dinofizz/fnrow/v1/config.h new file mode 100644 index 000000000000..fb7e4e91db3a --- /dev/null +++ b/keyboards/dinofizz/fnrow/v1/config.h @@ -0,0 +1,36 @@ +/* +Copyright 2021 Dino Fizzotti + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +#define VENDOR_ID 0xD1F1 +#define PRODUCT_ID 0x0100 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Dino Fizzotti +#define PRODUCT FnRow v1 + +#define MATRIX_ROWS 2 +#define MATRIX_COLS 7 + +#define MATRIX_ROW_PINS { A0, A1 } +#define MATRIX_COL_PINS {B0, B1, B3, B4, B5, B6, B7 } + +#define DIODE_DIRECTION COL2ROW + +#define DEBOUNCE 5 diff --git a/keyboards/dinofizz/fnrow/v1/halconf.h b/keyboards/dinofizz/fnrow/v1/halconf.h new file mode 100644 index 000000000000..68dc2abdf523 --- /dev/null +++ b/keyboards/dinofizz/fnrow/v1/halconf.h @@ -0,0 +1,51 @@ +/* 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confupdate -i keyboards/dinofizz/fnrow/v1/halconf.h -r platforms/chibios/common/configs/halconf.h` + */ + +#pragma once + +#define HAL_USE_DAC FALSE + +#define HAL_USE_GPT FALSE + +#define HAL_USE_I2C FALSE + +#define HAL_USE_PWM FALSE + +#define HAL_USE_SERIAL_USB FALSE + +#define HAL_USE_SPI FALSE + +#define PAL_USE_CALLBACKS FALSE + +#define PAL_USE_WAIT FALSE + +#define ADC_USE_WAIT FALSE + +#define ADC_USE_MUTUAL_EXCLUSION FALSE + +#define SERIAL_USB_BUFFERS_SIZE 256 + +#define SPI_USE_WAIT FALSE + +#define SPI_USE_MUTUAL_EXCLUSION FALSE + +#include_next + diff --git a/keyboards/dinofizz/fnrow/v1/info.json b/keyboards/dinofizz/fnrow/v1/info.json new file mode 100644 index 000000000000..b0dc34c43cb5 --- /dev/null +++ b/keyboards/dinofizz/fnrow/v1/info.json @@ -0,0 +1,76 @@ +{ + "keyboard_name": "FnRow v1", + "maintainer": "dinofizz", + "url": "https://github.com/dinofizz/fnrow-pcb", + "layouts": { + "LAYOUT_fn_row": { + "layout": [ + { + "label": "SW1", + "x": 0, + "y": 0 + }, + { + "label": "SW3", + "x": 2, + "y": 0 + }, + { + "label": "SW5", + "x": 3, + "y": 0 + }, + { + "label": "SW7", + "x": 4, + "y": 0 + }, + { + "label": "SW9", + "x": 5, + "y": 0 + }, + { + "label": "SW11", + "x": 6.5, + "y": 0 + }, + { + "label": "SW13", + "x": 7.5, + "y": 0 + }, + { + "label": "SW2", + "x": 8.5, + "y": 0 + }, + { + "label": "SW4", + "x": 9.5, + "y": 0 + }, + { + "label": "SW6", + "x": 11, + "y": 0 + }, + { + "label": "SW8", + "x": 12, + "y": 0 + }, + { + "label": "SW10", + "x": 13, + "y": 0 + }, + { + "label": "SW12", + "x": 14, + "y": 0 + } + ] + } + } +} diff --git a/keyboards/dinofizz/fnrow/v1/keymaps/default/keymap.c b/keyboards/dinofizz/fnrow/v1/keymaps/default/keymap.c new file mode 100644 index 000000000000..653d03619aca --- /dev/null +++ b/keyboards/dinofizz/fnrow/v1/keymaps/default/keymap.c @@ -0,0 +1,22 @@ +/* Copyright 2021 Dino Fizzotti + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_fn_row( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12 + ), +}; diff --git a/keyboards/dinofizz/fnrow/v1/keymaps/default/readme.md b/keyboards/dinofizz/fnrow/v1/keymaps/default/readme.md new file mode 100644 index 000000000000..465257793434 --- /dev/null +++ b/keyboards/dinofizz/fnrow/v1/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for FnRow v1 diff --git a/keyboards/dinofizz/fnrow/v1/keymaps/via/keymap.c b/keyboards/dinofizz/fnrow/v1/keymaps/via/keymap.c new file mode 100644 index 000000000000..025b730b46c7 --- /dev/null +++ b/keyboards/dinofizz/fnrow/v1/keymaps/via/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2021 Dino Fizzotti + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_fn_row( + MO(1), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12 + ), + + [1] = LAYOUT_fn_row( + KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_HOME, KC_END + ), + + [2] = LAYOUT_fn_row( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT_fn_row( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; diff --git a/keyboards/dinofizz/fnrow/v1/keymaps/via/rules.mk b/keyboards/dinofizz/fnrow/v1/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/dinofizz/fnrow/v1/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/dinofizz/fnrow/v1/mcuconf.h b/keyboards/dinofizz/fnrow/v1/mcuconf.h new file mode 100644 index 000000000000..6c4685668fa9 --- /dev/null +++ b/keyboards/dinofizz/fnrow/v1/mcuconf.h @@ -0,0 +1,28 @@ +/* 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confupdate -i keyboards/dinofizz/fnrow/v1/mcuconf.h -r platforms/chibios/GENERIC_STM32_F042X6/configs/mcuconf.h` + */ + +#pragma once + +#include_next + +#undef STM32_SERIAL_USE_USART2 +#define STM32_SERIAL_USE_USART2 TRUE + diff --git a/keyboards/dinofizz/fnrow/v1/readme.md b/keyboards/dinofizz/fnrow/v1/readme.md new file mode 100644 index 000000000000..707cbdcbfe15 --- /dev/null +++ b/keyboards/dinofizz/fnrow/v1/readme.md @@ -0,0 +1,28 @@ +# FnRow v1 + +A keyboard featuring a single horizontal row of switches in the style of a "function row" layout. + +* Keyboard Maintainer: [Dino Fizzotti](https://www.dinofizzotti.com) +* [PCB Schematic and layout](https://github.com/dinofizz/fnrow-pcb) +* [Blog post](https://www.dinofizzotti.com/blog/2021-02-07-fnrow-v1-a-configurable-function-row-layout-mechanical-keyboard/) + +## Features + +* USB-C +* USB ESD and overcurrent protection +* Dedicated reset switch to enable DFU mode +* Optional status LED + +## Compilation + +Make compilation example for this keyboard (after setting up your build environment): + + make dinofizz/fnrow/v1:default + +# Flashing + +The FnRow features a hardware reset push-button to the left of the USB-C port. To flash new firmware you will need to enter the bootloader mode first. Plug the FnRow in to your computer using a USB cable and press the reset button momentarily. The board will then show up as an STM32 flash bootloader device. You can then use the following command to flash new firmware to the board. + + make dinofizz/fnrow/v1:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/dinofizz/fnrow/v1/rules.mk b/keyboards/dinofizz/fnrow/v1/rules.mk new file mode 100644 index 000000000000..0695714edea6 --- /dev/null +++ b/keyboards/dinofizz/fnrow/v1/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = STM32F042 + +# Bootloader selection +BOOTLOADER = stm32-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/dinofizz/fnrow/v1/v1.c b/keyboards/dinofizz/fnrow/v1/v1.c new file mode 100644 index 000000000000..a5c5b21eac02 --- /dev/null +++ b/keyboards/dinofizz/fnrow/v1/v1.c @@ -0,0 +1,36 @@ +/* Copyright 2021 Dino Fizzotti + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "v1.h" + +void keyboard_pre_init_kb(void) { + // Immediately set the LED pin as an output and set it ON + setPinOutput(A15); + writePinHigh(A15); + + keyboard_pre_init_user(); +} + +void keyboard_post_init_kb(void) { + // Blink the LED so we know everything is running OK + // Finish with LED OFF + writePinLow(A15); + wait_ms(100); + writePinHigh(A15); + wait_ms(100); + writePinLow(A15); + + keyboard_post_init_user(); +} diff --git a/keyboards/dinofizz/fnrow/v1/v1.h b/keyboards/dinofizz/fnrow/v1/v1.h new file mode 100644 index 000000000000..ce9209cad9a9 --- /dev/null +++ b/keyboards/dinofizz/fnrow/v1/v1.h @@ -0,0 +1,25 @@ +/* Copyright 2021 Dino Fizzotti + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define LAYOUT_fn_row( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, }, \ + { K007, K008, K009, K010, K011, K012, KC_NO }, \ +} diff --git a/keyboards/diverge3/config.h b/keyboards/diverge3/config.h index 7357b146e70d..45dedfe6210a 100644 --- a/keyboards/diverge3/config.h +++ b/keyboards/diverge3/config.h @@ -95,54 +95,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -160,23 +112,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 diff --git a/keyboards/diverge3/diverge3.h b/keyboards/diverge3/diverge3.h index 53364213f6e7..c668bb29efa1 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 . */ -#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/diverge3/info.json b/keyboards/diverge3/info.json index d0240a9ea5c9..fc678b40bc53 100644 --- a/keyboards/diverge3/info.json +++ b/keyboards/diverge3/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Diverge3", "url": "", "maintainer": "qmk", - "width": 17, - "height": 6.25, "layouts": { "LAYOUT": { - "key_count": 72, "layout": [{"x":0, "y":0}, {"x":1, "y":0.75}, {"x":2, "y":0.25}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0.25}, {"x":6, "y":0.5}, {"x":10, "y":0.5}, {"x":11, "y":0.25}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0.25}, {"x":15, "y":0.75}, {"x":16, "y":0}, {"x":0, "y":1}, {"x":1, "y":1.75}, {"x":2, "y":1.25}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1.25}, {"x":6, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.25}, {"x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1.25}, {"x":15, "y":1.75}, {"x":16, "y":1}, {"x":0, "y":2}, {"x":1, "y":2.75}, {"x":2, "y":2.25}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2.25}, {"x":6, "y":2.5}, {"x":10, "y":2.5}, {"x":11, "y":2.25}, {"x":12, "y":2}, {"x":13, "y":2}, {"x":14, "y":2.25}, {"x":15, "y":2.75}, {"x":16, "y":2}, {"x":0, "y":3}, {"x":1, "y":3.75}, {"x":2, "y":3.25}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3.25}, {"x":6, "y":3.5}, {"x":10, "y":3.5}, {"x":11, "y":3.25}, {"x":12, "y":3}, {"x":13, "y":3}, {"x":14, "y":3.25}, {"x":15, "y":3.75}, {"x":16, "y":3}, {"x":0, "y":4}, {"x":1, "y":4.75}, {"x":2, "y":4.25}, {"x":3, "y":4}, {"x":4, "y":4}, {"x":5, "y":4.75, "h":1.25}, {"x":6, "y":5, "h":1.25}, {"x":7, "y":5.25}, {"x":9, "y":5.25}, {"x":10, "y":5, "h":1.25}, {"x":11, "y":4.75, "h":1.25}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4.25}, {"x":15, "y":4.75}, {"x":16, "y":4}] } } diff --git a/keyboards/diverge3/rules.mk b/keyboards/diverge3/rules.mk index 0b5ad749adf9..f0c250c82a2c 100644 --- a/keyboards/diverge3/rules.mk +++ b/keyboards/diverge3/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. SPLIT_KEYBOARD = yes -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend diff --git a/keyboards/divergetm2/info.json b/keyboards/divergetm2/info.json index 3a4389bb8275..fc64e57906dd 100644 --- a/keyboards/divergetm2/info.json +++ b/keyboards/divergetm2/info.json @@ -2,8 +2,6 @@ "keyboard_name": "UniKeyboard Diverge TM 2", "url": "", "maintainer": "islandman93, xton", - "width": 13, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/divergetm2/keymaps/xtonhasvim/keymap.c b/keyboards/divergetm2/keymaps/xtonhasvim/keymap.c index 9d5135baa3d1..5f478c1df155 100644 --- a/keyboards/divergetm2/keymaps/xtonhasvim/keymap.c +++ b/keyboards/divergetm2/keymaps/xtonhasvim/keymap.c @@ -150,6 +150,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST); } diff --git a/keyboards/divergetm2/rules.mk b/keyboards/divergetm2/rules.mk index 25f872bd05f7..2830d2d32d40 100644 --- a/keyboards/divergetm2/rules.mk +++ b/keyboards/divergetm2/rules.mk @@ -2,32 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - SPLIT_KEYBOARD = yes diff --git a/keyboards/dk60/dk60.c b/keyboards/dk60/dk60.c index 6d72ff6bd816..7d9f793866fa 100644 --- a/keyboards/dk60/dk60.c +++ b/keyboards/dk60/dk60.c @@ -34,7 +34,6 @@ void dk60_blink_all_leds(void) { } void matrix_init_kb(void) { - led_init_ports(); dk60_blink_all_leds(); matrix_init_user(); diff --git a/keyboards/dk60/info.json b/keyboards/dk60/info.json index 2a6725bd2fa3..f32bd47cfa50 100644 --- a/keyboards/dk60/info.json +++ b/keyboards/dk60/info.json @@ -2,8 +2,6 @@ "keyboard_name": "DK60", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/dk60/rules.mk b/keyboards/dk60/rules.mk index bd7843a9bd1f..5ef194a5b2cf 100644 --- a/keyboards/dk60/rules.mk +++ b/keyboards/dk60/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output -KEYBOARD_LOCK_ENABLE = yes +SLEEP_LED_ENABLE = yes UNICODE_ENABLE = yes diff --git a/keyboards/dm9records/ergoinu/ergoinu.c b/keyboards/dm9records/ergoinu/ergoinu.c index b43ab17c8bbc..c6d099a14835 100644 --- a/keyboards/dm9records/ergoinu/ergoinu.c +++ b/keyboards/dm9records/ergoinu/ergoinu.c @@ -1,5 +1 @@ #include "ergoinu.h" - -void matrix_init_kb(void) { - matrix_init_user(); -}; diff --git a/keyboards/dm9records/ergoinu/info.json b/keyboards/dm9records/ergoinu/info.json index 3627049a5ed7..b9ce9ea5cb3a 100644 --- a/keyboards/dm9records/ergoinu/info.json +++ b/keyboards/dm9records/ergoinu/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Ergoinu", "url": "", "maintainer": "hsgw(Takuya Urakawa)", - "width": 18, - "height": 5.4, "layouts": { "LAYOUT": { - "key_count": 64, "layout": [ { "x": 0, "y": 0.6, "label": "ESC" }, { "x": 1, "y": 0.4, "label": "1" }, diff --git a/keyboards/dm9records/ergoinu/keymaps/default/keymap.c b/keyboards/dm9records/ergoinu/keymaps/default/keymap.c index 7f1be4796ccc..3192b0f22015 100644 --- a/keyboards/dm9records/ergoinu/keymaps/default/keymap.c +++ b/keyboards/dm9records/ergoinu/keymaps/default/keymap.c @@ -96,6 +96,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return true; } - -void matrix_init_user(void) { -} diff --git a/keyboards/dm9records/ergoinu/keymaps/default/rules.mk b/keyboards/dm9records/ergoinu/keymaps/default/rules.mk index b2eff12b042b..a9e20abf10af 100644 --- a/keyboards/dm9records/ergoinu/keymaps/default/rules.mk +++ b/keyboards/dm9records/ergoinu/keymaps/default/rules.mk @@ -3,23 +3,17 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. SWAP_HANDS_ENABLE = no # Enable one-hand typing -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - # ergoinu configs DISABLE_PROMICRO_LEDs = yes diff --git a/keyboards/dm9records/ergoinu/keymaps/default_jis/keymap.c b/keyboards/dm9records/ergoinu/keymaps/default_jis/keymap.c index 3a1a88f47c45..e161145f4f26 100644 --- a/keyboards/dm9records/ergoinu/keymaps/default_jis/keymap.c +++ b/keyboards/dm9records/ergoinu/keymaps/default_jis/keymap.c @@ -96,6 +96,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { #endif return true; } - -void matrix_init_user(void) { -} diff --git a/keyboards/dm9records/ergoinu/keymaps/default_jis/rules.mk b/keyboards/dm9records/ergoinu/keymaps/default_jis/rules.mk index 92dde90ff1b5..96054eb9554b 100644 --- a/keyboards/dm9records/ergoinu/keymaps/default_jis/rules.mk +++ b/keyboards/dm9records/ergoinu/keymaps/default_jis/rules.mk @@ -3,23 +3,17 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = no # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. SWAP_HANDS_ENABLE = no # Enable one-hand typing -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - # ergoinu configs DISABLE_PROMICRO_LEDs = yes diff --git a/keyboards/dm9records/ergoinu/post_rules.mk b/keyboards/dm9records/ergoinu/post_rules.mk new file mode 100644 index 000000000000..02aa48104c19 --- /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 493046ffa4de..5a8fc65bad33 100644 --- a/keyboards/dm9records/ergoinu/rules.mk +++ b/keyboards/dm9records/ergoinu/rules.mk @@ -2,48 +2,26 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. SUBPROJECT_rev1 = no USE_I2C = no # i2c is not supported -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend CUSTOM_MATRIX = yes 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/dm9records/plaid/config.h b/keyboards/dm9records/plaid/config.h index 49bdf6ce2b72..86ff5be35654 100644 --- a/keyboards/dm9records/plaid/config.h +++ b/keyboards/dm9records/plaid/config.h @@ -120,59 +120,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -191,26 +138,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/dm9records/plaid/info.json b/keyboards/dm9records/plaid/info.json index 7f909a774a0a..12c9e43c08ce 100644 --- a/keyboards/dm9records/plaid/info.json +++ b/keyboards/dm9records/plaid/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Plaid // Through Hole", "url": "https://github.com/hsgw/plaid", "maintainer": "hsgw(Takuya Urakawa)", - "width": 12, - "height": 4, "layouts": { "LAYOUT_plaid_mit": { - "key_count": 47, "layout": [ { "w": 1, "x": 0, "y": 0 }, { "w": 1, "x": 1, "y": 0 }, @@ -57,7 +54,6 @@ { "w": 1, "x": 11, "y": 3 } ] }, "LAYOUT_plaid_grid": { - "key_count": 48, "layout": [ { "w": 1, "x": 0, "y": 0 }, { "w": 1, "x": 1, "y": 0 }, diff --git a/keyboards/dm9records/plaid/keymaps/brickbots/keymap.c b/keyboards/dm9records/plaid/keymaps/brickbots/keymap.c index 20b6eac6825a..646a942c588f 100644 --- a/keyboards/dm9records/plaid/keymaps/brickbots/keymap.c +++ b/keyboards/dm9records/plaid/keymaps/brickbots/keymap.c @@ -227,7 +227,7 @@ void keyboard_post_init_user(void) { } } -void eeconfig_init_user(void) { // EEPROM is getting reset! +void eeconfig_init_user(void) { // EEPROM is getting reset! led_config.raw = 0; led_config.red_mode = LEDMODE_ON; led_config.green_mode = LEDMODE_MODS; @@ -235,7 +235,7 @@ void eeconfig_init_user(void) { // EEPROM is getting reset! eeconfig_update_user(led_config.raw); } -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } @@ -289,7 +289,7 @@ void led_keypress_update(uint8_t led, uint8_t led_mode, uint16_t keycode, keyrec bool process_record_user(uint16_t keycode, keyrecord_t *record) { /* If the either led mode is keypressed based, call the led updater - then let it fall through the keypress handlers. Just to keep + then let it fall through the keypress handlers. Just to keep the logic out of this procedure */ if (led_config.red_mode >= LEDMODE_MODS && led_config.red_mode <= LEDMODE_ENTER) { led_keypress_update(LED_RED, led_config.red_mode, keycode, record); diff --git a/keyboards/dm9records/plaid/keymaps/thehalfdeafchef/keymap.c b/keyboards/dm9records/plaid/keymaps/thehalfdeafchef/keymap.c index bdf6c54c316c..6dcabb160e74 100644 --- a/keyboards/dm9records/plaid/keymaps/thehalfdeafchef/keymap.c +++ b/keyboards/dm9records/plaid/keymaps/thehalfdeafchef/keymap.c @@ -125,7 +125,7 @@ void eeconfig_init_user(void) { // EEPROM is getting reset! } // When LOWER and RAISE are held together, go to the FUNCTION layer -uint32_t layer_state_set_user(uint32_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _FUNCTION); } +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _FUNCTION); } // Runs constantly in the background, in a loop. void matrix_scan_user(void) { diff --git a/keyboards/dm9records/plaid/plaid.c b/keyboards/dm9records/plaid/plaid.c index 28f56d7f93c8..50da81950e0f 100644 --- a/keyboards/dm9records/plaid/plaid.c +++ b/keyboards/dm9records/plaid/plaid.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "plaid.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/dm9records/plaid/rules.mk b/keyboards/dm9records/plaid/rules.mk index 756cfc1fe99f..113ad0739033 100644 --- a/keyboards/dm9records/plaid/rules.mk +++ b/keyboards/dm9records/plaid/rules.mk @@ -2,33 +2,21 @@ MCU = atmega328p # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = USBasp +BOOTLOADER = usbasploader # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = ortho_4x12 planck_mit LAYOUTS_HAS_RGB = no diff --git a/keyboards/dm9records/tartan/config.h b/keyboards/dm9records/tartan/config.h index 06f346c7e181..7ad97ea453a9 100644 --- a/keyboards/dm9records/tartan/config.h +++ b/keyboards/dm9records/tartan/config.h @@ -118,59 +118,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -189,26 +136,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/dm9records/tartan/info.json b/keyboards/dm9records/tartan/info.json index 0b76326d92f8..32e018fde724 100644 --- a/keyboards/dm9records/tartan/info.json +++ b/keyboards/dm9records/tartan/info.json @@ -2,31 +2,23 @@ "keyboard_name": "Tartan # Through Hole", "url": "https://github.com/hsgw/tartan", "maintainer": "hsgw(Takuya Urakawa)", - "width": 13, - "height": 5, "layouts": { "LAYOUT_60_ansi": { - "key_count": 61, "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}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"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}] }, "LAYOUT_60_ansi_split_bs": { - "key_count": 62, "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}, {"label":"Backspace", "x":13, "y":0, "w":1}, {"label":"", "x":14, "y":0, "w":1}, {"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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"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}] }, "LAYOUT_60_ansi_split_bs_rshift": { - "key_count": 63, "layout": [{"label":"ESC", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"|", "x":13, "y":0}, {"label":"~", "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":"BS", "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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Fn", "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}] }, "LAYOUT_60_iso": { - "key_count": 62, "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}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"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":"CapsLock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"@", "x":11.75, "y":2}, {"label":"~", "x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"label":"|", "x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"AltGr", "x":10, "y":4, "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}] }, "LAYOUT_60_iso_split_bs": { - "key_count": 63, "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}, {"label":"Backspace", "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":"CapsLock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"@", "x":11.75, "y":2}, {"label":"~", "x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"label":"|", "x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"AltGr", "x":10, "y":4, "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}] }, "LAYOUT_60_iso_split_bs_rshift": { - "key_count": 64, "layout": [{"label":"¬", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"\"", "x":2, "y":0}, {"label":"\u00a3", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0}, {"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":"CapsLock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"@", "x":11.75, "y":2}, {"label":"~", "x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"label":"|", "x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"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":"AltGr", "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/dm9records/tartan/rules.mk b/keyboards/dm9records/tartan/rules.mk index a4bffe29d36c..ca8b059d9ab2 100644 --- a/keyboards/dm9records/tartan/rules.mk +++ b/keyboards/dm9records/tartan/rules.mk @@ -2,33 +2,21 @@ MCU = atmega328p # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = USBasp +BOOTLOADER = usbasploader # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = 60_ansi 60_ansi_split_bs_rshift 60_iso 60_iso_split_bs_rshift LAYOUTS_HAS_RGB = no diff --git a/keyboards/dmqdesign/spin/info.json b/keyboards/dmqdesign/spin/info.json index 032ff39908b3..4d8c09c27727 100644 --- a/keyboards/dmqdesign/spin/info.json +++ b/keyboards/dmqdesign/spin/info.json @@ -2,8 +2,6 @@ "keyboard_name": "SPIN", "url": "https://www.DMQdesign.com", "maintainer": "Quarren42", - "width": 4.5, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/dmqdesign/spin/keymaps/gorbachev/keymap.c b/keyboards/dmqdesign/spin/keymaps/gorbachev/keymap.c index 4760011da578..b41359c5b60e 100644 --- a/keyboards/dmqdesign/spin/keymaps/gorbachev/keymap.c +++ b/keyboards/dmqdesign/spin/keymaps/gorbachev/keymap.c @@ -160,7 +160,7 @@ layer_state_t layer_state_set_user(layer_state_t state) { //This will run every return state; } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE static const char *ANIMATION_NAMES[] = { "unknown", @@ -220,7 +220,7 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) { #endif } -void oled_task_user(void) { +bool oled_task_user(void) { // Host Keyboard Layer Status oled_write_P(PSTR("Layer: "), false); @@ -244,5 +244,6 @@ void oled_task_user(void) { oled_write_P(PSTR("Mode: "), false); oled_write_ln(rgb_mode_name, false); + return false; } #endif diff --git a/keyboards/dmqdesign/spin/keymaps/gorbachev/rules.mk b/keyboards/dmqdesign/spin/keymaps/gorbachev/rules.mk index 553adac19325..6af3117b94fd 100644 --- a/keyboards/dmqdesign/spin/keymaps/gorbachev/rules.mk +++ b/keyboards/dmqdesign/spin/keymaps/gorbachev/rules.mk @@ -1,3 +1,4 @@ -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 MOUSEKEY_ENABLE = no MIDI_ENABLE = no diff --git a/keyboards/dmqdesign/spin/keymaps/spidey3_pad/rules.mk b/keyboards/dmqdesign/spin/keymaps/spidey3_pad/rules.mk index 6df20e87101f..7fe1f992aa08 100644 --- a/keyboards/dmqdesign/spin/keymaps/spidey3_pad/rules.mk +++ b/keyboards/dmqdesign/spin/keymaps/spidey3_pad/rules.mk @@ -1,6 +1,6 @@ MOUSEKEY_ENABLE = no MIDI_ENABLE = no -BOOTMAGIC_ENABLE = lite +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite LTO_ENABLE = yes CONSOLE_ENABLE = yes # Console for debug GRAVE_ESC_ENABLE = no diff --git a/keyboards/dmqdesign/spin/rules.mk b/keyboards/dmqdesign/spin/rules.mk index a299f2da5a00..abdb31623d10 100644 --- a/keyboards/dmqdesign/spin/rules.mk +++ b/keyboards/dmqdesign/spin/rules.mk @@ -2,31 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# 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 MIDI_ENABLE = yes # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes # Enable rotary encoder support diff --git a/keyboards/do60/config.h b/keyboards/do60/config.h index f3ee1ed04552..8a0f324aa299 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -75,5 +74,3 @@ along with this program. If not, see . #define LOCKING_RESYNC_ENABLE #define TAPPING_TERM 200 - -#endif diff --git a/keyboards/do60/info.json b/keyboards/do60/info.json index 4c98bd851334..fbc1cb1c7819 100644 --- a/keyboards/do60/info.json +++ b/keyboards/do60/info.json @@ -2,8 +2,6 @@ "keyboard_name": "do60", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"~", "x":13, "y":0}, {"label":"\u2190", "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}, {"x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.25}, {"label":"Shift", "x":0, "y":3}, {"x":1, "y":3}, {"label":"Z", "x":2, "y":3}, {"label":"X", "x":3, "y":3}, {"label":"C", "x":4, "y":3}, {"label":"V", "x":5, "y":3}, {"label":"B", "x":6, "y":3}, {"label":"N", "x":7, "y":3}, {"label":"M", "x":8, "y":3}, {"label":"<", "x":9, "y":3}, {"label":">", "x":10, "y":3}, {"label":"?", "x":11, "y":3}, {"x":12, "y":3}, {"label":"\u2191", "x":13, "y":3}, {"label":"Del", "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}, {"label":"3u(Space)", "x":3.75, "y":4, "w":2.75}, {"x":6.5, "y":4}, {"label":"3u(Space)", "x":7.5, "y":4, "w":2.25}, {"label":"Alt", "x":9.75, "y":4, "w":1.25}, {"label":"win", "x":11, "y":4}, {"label":"\u2190", "x":12, "y":4}, {"label":"\u2193", "x":13, "y":4}, {"label":"\u2192", "x":14, "y":4}] @@ -25,4 +23,4 @@ "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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"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}] } } -} \ No newline at end of file +} diff --git a/keyboards/do60/rules.mk b/keyboards/do60/rules.mk index 106a1f06dabe..aec41cc8f0f6 100644 --- a/keyboards/do60/rules.mk +++ b/keyboards/do60/rules.mk @@ -2,28 +2,17 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite COMMAND_ENABLE = no # Commands for debug and configuration CONSOLE_ENABLE = no # Console for debug EXTRAKEY_ENABLE = yes # Audio control and System control -MIDI_ENABLE = no # MIDI controls MOUSEKEY_ENABLE = yes # Mouse keys NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -UNICODE_ENABLE = no # Unicode LAYOUTS = 60_ansi 60_hhkb 60_ansi_split_bs_rshift diff --git a/keyboards/donutcables/budget96/info.json b/keyboards/donutcables/budget96/info.json index 40a942127f48..a392a9eb5ea2 100644 --- a/keyboards/donutcables/budget96/info.json +++ b/keyboards/donutcables/budget96/info.json @@ -2,8 +2,6 @@ "keyboard_name": "budget96", "url": "", "maintainer": "qmk", - "width": 19, - "height": 6, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15, "y":0}, {"x":16, "y":0}, {"x":17, "y":0}, {"x":18, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, {"x":15, "y":1}, {"x":16, "y":1}, {"x":17, "y":1}, {"x":18, "y":1}, {"x":0, "y":2, "w":1.5}, {"x":1.5, "y":2}, {"x":2.5, "y":2}, {"x":3.5, "y":2}, {"x":4.5, "y":2}, {"x":5.5, "y":2}, {"x":6.5, "y":2}, {"x":7.5, "y":2}, {"x":8.5, "y":2}, {"x":9.5, "y":2}, {"x":10.5, "y":2}, {"x":11.5, "y":2}, {"x":12.5, "y":2}, {"x":13.5, "y":2, "w":1.5}, {"x":15, "y":2}, {"x":16, "y":2}, {"x":17, "y":2}, {"x":18, "y":2}, {"x":0, "y":3, "w":1.75}, {"x":1.75, "y":3}, {"x":2.75, "y":3}, {"x":3.75, "y":3}, {"x":4.75, "y":3}, {"x":5.75, "y":3}, {"x":6.75, "y":3}, {"x":7.75, "y":3}, {"x":8.75, "y":3}, {"x":9.75, "y":3}, {"x":10.75, "y":3}, {"x":11.75, "y":3}, {"x":12.75, "y":3}, {"x":13.75, "y":3, "w":1.25}, {"x":15, "y":3}, {"x":16, "y":3}, {"x":17, "y":3}, {"x":18, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4}, {"x":2.25, "y":4}, {"x":3.25, "y":4}, {"x":4.25, "y":4}, {"x":5.25, "y":4}, {"x":6.25, "y":4}, {"x":7.25, "y":4}, {"x":8.25, "y":4}, {"x":9.25, "y":4}, {"x":10.25, "y":4}, {"x":11.25, "y":4}, {"x":12.25, "y":4, "w":1.75}, {"x":14, "y":4}, {"x":15, "y":4}, {"x":16, "y":4}, {"x":17, "y":4}, {"x":18, "y":4}, {"x":0, "y":5, "w":1.25}, {"x":1.25, "y":5, "w":1.25}, {"x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"x":10, "y":5}, {"x":11, "y":5}, {"x":12, "y":5}, {"x":13, "y":5}, {"x":14, "y":5}, {"x":15, "y":5}, {"x":16, "y":5}, {"x":17, "y":5}, {"x":18, "y":5}] diff --git a/keyboards/donutcables/budget96/rules.mk b/keyboards/donutcables/budget96/rules.mk index 3d51be11332d..3bff3ee31b28 100644 --- a/keyboards/donutcables/budget96/rules.mk +++ b/keyboards/donutcables/budget96/rules.mk @@ -2,17 +2,10 @@ MCU = atmega32a # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid # build options -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes EXTRAKEY_ENABLE = yes CONSOLE_ENABLE = no diff --git a/keyboards/donutcables/scrabblepad/config.h b/keyboards/donutcables/scrabblepad/config.h index f792d5b1d5f7..5543c6133519 100644 --- a/keyboards/donutcables/scrabblepad/config.h +++ b/keyboards/donutcables/scrabblepad/config.h @@ -1,5 +1,5 @@ /* -Copyright 2018 MechMerlin +Copyright 2021 DonutCables This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,10 +20,10 @@ along with this program. If not, see . #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x0000 -#define DEVICE_VER 0x0001 -#define MANUFACTURER Donut Cables +#define VENDOR_ID 0x4443 +#define PRODUCT_ID 0x21D7 +#define DEVICE_VER 0x0100 +#define MANUFACTURER DonutCables #define PRODUCT ScrabblePad /* key matrix size */ @@ -39,43 +39,72 @@ along with this program. If not, see . * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) * -*/ + */ #define MATRIX_ROW_PINS { D5, F1, C7, F2, C6, F3, C5, F4, C4, F5, C3, F6, C2, F7, C1 } #define MATRIX_COL_PINS { D6, D7, E0, E1, B7, D2, D3, D4, C0, B4, B5, B6, F0, E6, E7 } #define UNUSED_PINS -/* COL2ROW, ROW2COL*/ +/* COL2ROW, ROW2COL */ #define DIODE_DIRECTION COL2ROW -// #define BACKLIGHT_PIN -// #define BACKLIGHT_BREATHING -// #define BACKLIGHT_LEVELS 3 +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ -// ws2812 options -//#define RGB_DI_PIN A0 // pin the DI on the ws2812 is hooked-up to -//#define RGBLIGHT_ANIMATIONS // run RGB animations -//#define RGBLED_NUM 6 // number of LEDs -//#define RGBLIGHT_HUE_STEP 12 // units to step when in/decreasing hue -//#define RGBLIGHT_SAT_STEP 25 // units to step when in/decresing saturation -//#define RGBLIGHT_VAL_STEP 12 // units to step when in/decreasing value (brightness) +//#define LED_NUM_LOCK_PIN B0 +//#define LED_CAPS_LOCK_PIN B1 +//#define LED_SCROLL_LOCK_PIN B2 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +//#define RGB_DI_PIN E2 +//#ifdef RGB_DI_PIN +//# define RGBLED_NUM 16 +//# define RGBLIGHT_HUE_STEP 8 +//# define RGBLIGHT_SAT_STEP 8 +//# define RGBLIGHT_VAL_STEP 8 +//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +//# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +//#endif /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ #define DEBOUNCE 5 + /* define if matrix has ghost (lacks anti-ghosting diodes) */ //#define MATRIX_HAS_GHOST -/* number of backlight levels */ - /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ #define LOCKING_SUPPORT_ENABLE /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE /* If defined, GRAVE_ESC will always act as ESC when CTRL is held. - * This is userful for the Windows task manager shortcut (ctrl+shift+esc). + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). */ -// #define GRAVE_ESC_CTRL_OVERRIDE +//#define GRAVE_ESC_CTRL_OVERRIDE /* * Force NKRO @@ -98,54 +127,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -161,25 +142,9 @@ along with this program. If not, see . //#define NO_ACTION_LAYER //#define NO_ACTION_TAPPING //#define NO_ACTION_ONESHOT -//#define NO_ACTION_MACRO -//#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED +/* disable these deprecated features by default */ -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/donutcables/scrabblepad/info.json b/keyboards/donutcables/scrabblepad/info.json index 1368abd4b2b7..e4579f58ff05 100644 --- a/keyboards/donutcables/scrabblepad/info.json +++ b/keyboards/donutcables/scrabblepad/info.json @@ -2,8 +2,6 @@ "keyboard_name": "scrabblepad", "url": "", "maintainer": "qmk", - "width": 15, - "height": 15, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":13, "y":2}, {"x":14, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}, {"x":12, "y":3}, {"x":13, "y":3}, {"x":14, "y":3}, {"x":0, "y":4}, {"x":1, "y":4}, {"x":2, "y":4}, {"x":3, "y":4}, {"x":4, "y":4}, {"x":5, "y":4}, {"x":6, "y":4}, {"x":7, "y":4}, {"x":8, "y":4}, {"x":9, "y":4}, {"x":10, "y":4}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":0, "y":5}, {"x":1, "y":5}, {"x":2, "y":5}, {"x":3, "y":5}, {"x":4, "y":5}, {"x":5, "y":5}, {"x":6, "y":5}, {"x":7, "y":5}, {"x":8, "y":5}, {"x":9, "y":5}, {"x":10, "y":5}, {"x":11, "y":5}, {"x":12, "y":5}, {"x":13, "y":5}, {"x":14, "y":5}, {"x":0, "y":6}, {"x":1, "y":6}, {"x":2, "y":6}, {"x":3, "y":6}, {"x":4, "y":6}, {"x":5, "y":6}, {"x":6, "y":6}, {"x":7, "y":6}, {"x":8, "y":6}, {"x":9, "y":6}, {"x":10, "y":6}, {"x":11, "y":6}, {"x":12, "y":6}, {"x":13, "y":6}, {"x":14, "y":6}, {"x":0, "y":7}, {"x":1, "y":7}, {"x":2, "y":7}, {"x":3, "y":7}, {"x":4, "y":7}, {"x":5, "y":7}, {"x":6, "y":7}, {"x":7, "y":7}, {"x":8, "y":7}, {"x":9, "y":7}, {"x":10, "y":7}, {"x":11, "y":7}, {"x":12, "y":7}, {"x":13, "y":7}, {"x":14, "y":7}, {"x":0, "y":8}, {"x":1, "y":8}, {"x":2, "y":8}, {"x":3, "y":8}, {"x":4, "y":8}, {"x":5, "y":8}, {"x":6, "y":8}, {"x":7, "y":8}, {"x":8, "y":8}, {"x":9, "y":8}, {"x":10, "y":8}, {"x":11, "y":8}, {"x":12, "y":8}, {"x":13, "y":8}, {"x":14, "y":8}, {"x":0, "y":9}, {"x":1, "y":9}, {"x":2, "y":9}, {"x":3, "y":9}, {"x":4, "y":9}, {"x":5, "y":9}, {"x":6, "y":9}, {"x":7, "y":9}, {"x":8, "y":9}, {"x":9, "y":9}, {"x":10, "y":9}, {"x":11, "y":9}, {"x":12, "y":9}, {"x":13, "y":9}, {"x":14, "y":9}, {"x":0, "y":10}, {"x":1, "y":10}, {"x":2, "y":10}, {"x":3, "y":10}, {"x":4, "y":10}, {"x":5, "y":10}, {"x":6, "y":10}, {"x":7, "y":10}, {"x":8, "y":10}, {"x":9, "y":10}, {"x":10, "y":10}, {"x":11, "y":10}, {"x":12, "y":10}, {"x":13, "y":10}, {"x":14, "y":10}, {"x":0, "y":11}, {"x":1, "y":11}, {"x":2, "y":11}, {"x":3, "y":11}, {"x":4, "y":11}, {"x":5, "y":11}, {"x":6, "y":11}, {"x":7, "y":11}, {"x":8, "y":11}, {"x":9, "y":11}, {"x":10, "y":11}, {"x":11, "y":11}, {"x":12, "y":11}, {"x":13, "y":11}, {"x":14, "y":11}, {"x":0, "y":12}, {"x":1, "y":12}, {"x":2, "y":12}, {"x":3, "y":12}, {"x":4, "y":12}, {"x":5, "y":12}, {"x":6, "y":12}, {"x":7, "y":12}, {"x":8, "y":12}, {"x":9, "y":12}, {"x":10, "y":12}, {"x":11, "y":12}, {"x":12, "y":12}, {"x":13, "y":12}, {"x":14, "y":12}, {"x":0, "y":13}, {"x":1, "y":13}, {"x":2, "y":13}, {"x":3, "y":13}, {"x":4, "y":13}, {"x":5, "y":13}, {"x":6, "y":13}, {"x":7, "y":13}, {"x":8, "y":13}, {"x":9, "y":13}, {"x":10, "y":13}, {"x":11, "y":13}, {"x":12, "y":13}, {"x":13, "y":13}, {"x":14, "y":13}, {"x":0, "y":14}, {"x":1, "y":14}, {"x":2, "y":14}, {"x":3, "y":14}, {"x":4, "y":14}, {"x":5, "y":14}, {"x":6, "y":14}, {"x":7, "y":14}, {"x":8, "y":14}, {"x":9, "y":14}, {"x":10, "y":14}, {"x":11, "y":14}, {"x":12, "y":14}, {"x":13, "y":14}, {"x":14, "y":14}] diff --git a/keyboards/donutcables/scrabblepad/keymaps/default/keymap.c b/keyboards/donutcables/scrabblepad/keymaps/default/keymap.c index bb78e71313bc..2762453f79e7 100644 --- a/keyboards/donutcables/scrabblepad/keymaps/default/keymap.c +++ b/keyboards/donutcables/scrabblepad/keymaps/default/keymap.c @@ -1,52 +1,43 @@ -/* Copyright 2018 MechMerlin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ +/* +Copyright 2021 DonutCables + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + #include QMK_KEYBOARD_H -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[0] = LAYOUT( /* Base */ - KC_D, KC_O, KC_N, KC_U, KC_T, KC_C, KC_A, KC_T, KC_SPC, KC_R, KC_U, KC_L, KC_E, KC_S, KC_SPC, \ - KC_D, KC_O, KC_N, KC_U, KC_T, KC_C, KC_A, KC_T, KC_SPC, KC_R, KC_U, KC_L, KC_E, KC_S, KC_SPC, \ - KC_D, KC_O, KC_N, KC_U, KC_T, KC_C, KC_A, KC_T, KC_SPC, KC_R, KC_U, KC_L, KC_E, KC_S, KC_SPC, \ - KC_D, KC_O, KC_N, KC_U, KC_T, KC_C, KC_A, KC_T, KC_SPC, KC_R, KC_U, KC_L, KC_E, KC_S, KC_SPC, \ - KC_D, KC_O, KC_N, KC_U, KC_T, KC_C, KC_A, KC_T, KC_SPC, KC_R, KC_U, KC_L, KC_E, KC_S, KC_SPC, \ - KC_D, KC_O, KC_N, KC_U, KC_T, KC_C, KC_A, KC_T, KC_SPC, KC_R, KC_U, KC_L, KC_E, KC_S, KC_SPC, \ - KC_D, KC_O, KC_N, KC_U, KC_T, KC_C, KC_A, KC_T, KC_SPC, KC_R, KC_U, KC_L, KC_E, KC_S, KC_SPC, \ - KC_D, KC_O, KC_N, KC_U, KC_T, KC_C, KC_A, KC_T, KC_SPC, KC_R, KC_U, KC_L, KC_E, KC_S, KC_SPC, \ - KC_D, KC_O, KC_N, KC_U, KC_T, KC_C, KC_A, KC_T, KC_SPC, KC_R, KC_U, KC_L, KC_E, KC_S, KC_SPC, \ - KC_D, KC_O, KC_N, KC_U, KC_T, KC_C, KC_A, KC_T, KC_SPC, KC_R, KC_U, KC_L, KC_E, KC_S, KC_SPC, \ - KC_D, KC_O, KC_N, KC_U, KC_T, KC_C, KC_A, KC_T, KC_SPC, KC_R, KC_U, KC_L, KC_E, KC_S, KC_SPC, \ - KC_D, KC_O, KC_N, KC_U, KC_T, KC_C, KC_A, KC_T, KC_SPC, KC_R, KC_U, KC_L, KC_E, KC_S, KC_SPC, \ - KC_D, KC_O, KC_N, KC_U, KC_T, KC_C, KC_A, KC_T, KC_SPC, KC_R, KC_U, KC_L, KC_E, KC_S, KC_SPC, \ - KC_D, KC_O, KC_N, KC_U, KC_T, KC_C, KC_A, KC_T, KC_SPC, KC_R, KC_U, KC_L, KC_E, KC_S, KC_SPC, \ - KC_D, KC_O, KC_N, KC_U, KC_T, KC_C, KC_A, KC_T, KC_SPC, KC_R, KC_U, KC_L, KC_E, KC_S, KC_SPC \ -), +enum layer_names { + _BASE, }; -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT( + KC_SPC, KC_SPC, KC_S, KC_C, KC_R, KC_A, KC_B, KC_B, KC_L, KC_E, KC_P, KC_A, KC_D, KC_SPC, KC_SPC, + KC_SPC, KC_SPC, KC_S, KC_C, KC_R, KC_A, KC_B, KC_B, KC_L, KC_E, KC_P, KC_A, KC_D, KC_SPC, KC_SPC, + KC_SPC, KC_SPC, KC_S, KC_C, KC_R, KC_A, KC_B, KC_B, KC_L, KC_E, KC_P, KC_A, KC_D, KC_SPC, KC_SPC, + KC_SPC, KC_SPC, KC_S, KC_C, KC_R, KC_A, KC_B, KC_B, KC_L, KC_E, KC_P, KC_A, KC_D, KC_SPC, KC_SPC, + KC_SPC, KC_SPC, KC_S, KC_C, KC_R, KC_A, KC_B, KC_B, KC_L, KC_E, KC_P, KC_A, KC_D, KC_SPC, KC_SPC, + KC_SPC, KC_SPC, KC_S, KC_C, KC_R, KC_A, KC_B, KC_B, KC_L, KC_E, KC_P, KC_A, KC_D, KC_SPC, KC_SPC, + KC_SPC, KC_SPC, KC_S, KC_C, KC_R, KC_A, KC_B, KC_B, KC_L, KC_E, KC_P, KC_A, KC_D, KC_SPC, KC_SPC, + KC_SPC, KC_SPC, KC_S, KC_C, KC_R, KC_A, KC_B, KC_B, KC_L, KC_E, KC_P, KC_A, KC_D, KC_SPC, KC_SPC, + KC_SPC, KC_SPC, KC_S, KC_C, KC_R, KC_A, KC_B, KC_B, KC_L, KC_E, KC_P, KC_A, KC_D, KC_SPC, KC_SPC, + KC_SPC, KC_SPC, KC_S, KC_C, KC_R, KC_A, KC_B, KC_B, KC_L, KC_E, KC_P, KC_A, KC_D, KC_SPC, KC_SPC, + KC_SPC, KC_SPC, KC_S, KC_C, KC_R, KC_A, KC_B, KC_B, KC_L, KC_E, KC_P, KC_A, KC_D, KC_SPC, KC_SPC, + KC_SPC, KC_SPC, KC_S, KC_C, KC_R, KC_A, KC_B, KC_B, KC_L, KC_E, KC_P, KC_A, KC_D, KC_SPC, KC_SPC, + KC_SPC, KC_SPC, KC_S, KC_C, KC_R, KC_A, KC_B, KC_B, KC_L, KC_E, KC_P, KC_A, KC_D, KC_SPC, KC_SPC, + KC_SPC, KC_SPC, KC_S, KC_C, KC_R, KC_A, KC_B, KC_B, KC_L, KC_E, KC_P, KC_A, KC_D, KC_SPC, KC_SPC, + KC_SPC, KC_SPC, KC_S, KC_C, KC_R, KC_A, KC_B, KC_B, KC_L, KC_E, KC_P, KC_A, KC_D, KC_SPC, KC_SPC + ), +}; diff --git a/keyboards/donutcables/scrabblepad/keymaps/default/readme.md b/keyboards/donutcables/scrabblepad/keymaps/default/readme.md index 4123e76671de..4dca7ad27249 100644 --- a/keyboards/donutcables/scrabblepad/keymaps/default/readme.md +++ b/keyboards/donutcables/scrabblepad/keymaps/default/readme.md @@ -3,4 +3,4 @@ This is the default keymap for the ScrabblePad. On each row, each key is used to spell out each character in -the following string: "donutcat rules ". +the following string: " scrabblepad ". \ No newline at end of file diff --git a/keyboards/donutcables/scrabblepad/keymaps/random/keymap.c b/keyboards/donutcables/scrabblepad/keymaps/random/keymap.c index 8e782596615b..462e06875a86 100644 --- a/keyboards/donutcables/scrabblepad/keymaps/random/keymap.c +++ b/keyboards/donutcables/scrabblepad/keymaps/random/keymap.c @@ -60,16 +60,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY ), }; - - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/donutcables/scrabblepad/keymaps/via/keymap.c b/keyboards/donutcables/scrabblepad/keymaps/via/keymap.c new file mode 100644 index 000000000000..c35af06133cf --- /dev/null +++ b/keyboards/donutcables/scrabblepad/keymaps/via/keymap.c @@ -0,0 +1,92 @@ +/* +Copyright 2021 DonutCables + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_SPC, KC_SPC, KC_S, KC_C, KC_R, KC_A, KC_B, KC_B, KC_L, KC_E, KC_P, KC_A, KC_D, KC_SPC, KC_SPC, + KC_SPC, KC_SPC, KC_S, KC_C, KC_R, KC_A, KC_B, KC_B, KC_L, KC_E, KC_P, KC_A, KC_D, KC_SPC, KC_SPC, + KC_SPC, KC_SPC, KC_S, KC_C, KC_R, KC_A, KC_B, KC_B, KC_L, KC_E, KC_P, KC_A, KC_D, KC_SPC, KC_SPC, + KC_SPC, KC_SPC, KC_S, KC_C, KC_R, KC_A, KC_B, KC_B, KC_L, KC_E, KC_P, KC_A, KC_D, KC_SPC, KC_SPC, + KC_SPC, KC_SPC, KC_S, KC_C, KC_R, KC_A, KC_B, KC_B, KC_L, KC_E, KC_P, KC_A, KC_D, KC_SPC, KC_SPC, + KC_SPC, KC_SPC, KC_S, KC_C, KC_R, KC_A, KC_B, KC_B, KC_L, KC_E, KC_P, KC_A, KC_D, KC_SPC, KC_SPC, + KC_SPC, KC_SPC, KC_S, KC_C, KC_R, KC_A, KC_B, KC_B, KC_L, KC_E, KC_P, KC_A, KC_D, KC_SPC, KC_SPC, + KC_SPC, KC_SPC, KC_S, KC_C, KC_R, KC_A, KC_B, KC_B, KC_L, KC_E, KC_P, KC_A, KC_D, KC_SPC, KC_SPC, + KC_SPC, KC_SPC, KC_S, KC_C, KC_R, KC_A, KC_B, KC_B, KC_L, KC_E, KC_P, KC_A, KC_D, KC_SPC, KC_SPC, + KC_SPC, KC_SPC, KC_S, KC_C, KC_R, KC_A, KC_B, KC_B, KC_L, KC_E, KC_P, KC_A, KC_D, KC_SPC, KC_SPC, + KC_SPC, KC_SPC, KC_S, KC_C, KC_R, KC_A, KC_B, KC_B, KC_L, KC_E, KC_P, KC_A, KC_D, KC_SPC, KC_SPC, + KC_SPC, KC_SPC, KC_S, KC_C, KC_R, KC_A, KC_B, KC_B, KC_L, KC_E, KC_P, KC_A, KC_D, KC_SPC, KC_SPC, + KC_SPC, KC_SPC, KC_S, KC_C, KC_R, KC_A, KC_B, KC_B, KC_L, KC_E, KC_P, KC_A, KC_D, KC_SPC, KC_SPC, + KC_SPC, KC_SPC, KC_S, KC_C, KC_R, KC_A, KC_B, KC_B, KC_L, KC_E, KC_P, KC_A, KC_D, KC_SPC, KC_SPC, + KC_SPC, KC_SPC, KC_S, KC_C, KC_R, KC_A, KC_B, KC_B, KC_L, KC_E, KC_P, KC_A, KC_D, KC_SPC, KC_SPC + ), + + [1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; diff --git a/keyboards/donutcables/scrabblepad/keymaps/via/readme.md b/keyboards/donutcables/scrabblepad/keymaps/via/readme.md new file mode 100644 index 000000000000..1e976d866029 --- /dev/null +++ b/keyboards/donutcables/scrabblepad/keymaps/via/readme.md @@ -0,0 +1,5 @@ +# The VIA keymap for ScrabblePad + +This is the VIA keymap for the ScrabblePad. + +The base map is the same as the default map and then three available layers above that. \ No newline at end of file diff --git a/keyboards/spaceman/pancake/keymaps/via/rules.mk b/keyboards/donutcables/scrabblepad/keymaps/via/rules.mk similarity index 100% rename from keyboards/spaceman/pancake/keymaps/via/rules.mk rename to keyboards/donutcables/scrabblepad/keymaps/via/rules.mk diff --git a/keyboards/donutcables/scrabblepad/rules.mk b/keyboards/donutcables/scrabblepad/rules.mk index a4d303b0d32c..6d79c8cdfc59 100644 --- a/keyboards/donutcables/scrabblepad/rules.mk +++ b/keyboards/donutcables/scrabblepad/rules.mk @@ -2,29 +2,16 @@ MCU = at90usb1286 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = halfkay # Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # Mouse keys +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = yes # Console for debug -COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +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 diff --git a/keyboards/donutcables/scrabblepad/scrabblepad.c b/keyboards/donutcables/scrabblepad/scrabblepad.c index e97cbd46c014..88e60fea26ea 100644 --- a/keyboards/donutcables/scrabblepad/scrabblepad.c +++ b/keyboards/donutcables/scrabblepad/scrabblepad.c @@ -1,4 +1,4 @@ -/* Copyright 2018 MechMerlin +/* Copyright 2021 DonutCables * * This 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,30 +14,3 @@ * along with this program. If not, see . */ #include "scrabblepad.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/donutcables/scrabblepad/scrabblepad.h b/keyboards/donutcables/scrabblepad/scrabblepad.h index b4ac8b2c4f53..f27d990eb2d0 100644 --- a/keyboards/donutcables/scrabblepad/scrabblepad.h +++ b/keyboards/donutcables/scrabblepad/scrabblepad.h @@ -1,4 +1,4 @@ -/* Copyright 2018 MechMerlin +/* Copyright 2021 DonutCables * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,7 +17,6 @@ #include "quantum.h" -// Written in the format K(row)(column) where numbering is in hexadecimal #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, k1E, \ diff --git a/keyboards/doodboard/duckboard/info.json b/keyboards/doodboard/duckboard/info.json index 074f5c88ad0a..69dde7790db1 100644 --- a/keyboards/doodboard/duckboard/info.json +++ b/keyboards/doodboard/duckboard/info.json @@ -2,8 +2,6 @@ "keyboard_name": "duckboard", "url": "https://doodboard.xyz/", "maintainer": "doodboard", - "width": 5, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/doodboard/duckboard/keymaps/default/keymap.c b/keyboards/doodboard/duckboard/keymaps/default/keymap.c index 9c849a8a1e69..b4e6207aea4c 100644 --- a/keyboards/doodboard/duckboard/keymaps/default/keymap.c +++ b/keyboards/doodboard/duckboard/keymaps/default/keymap.c @@ -50,7 +50,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; } @@ -89,7 +89,7 @@ static void render_anim(void) { } } -void oled_task_user(void) { +bool oled_task_user(void) { render_anim(); oled_set_cursor(0,6); oled_write_P(PSTR("DUCK\nBOARD\n"), false); @@ -109,6 +109,7 @@ void oled_task_user(void) { oled_write_P(PSTR("RGB\n"), false); break; } + return false; } #endif diff --git a/keyboards/doodboard/duckboard/rules.mk b/keyboards/doodboard/duckboard/rules.mk index 09a60d8a7956..dd81d1b55f61 100644 --- a/keyboards/doodboard/duckboard/rules.mk +++ b/keyboards/doodboard/duckboard/rules.mk @@ -7,19 +7,17 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/doodboard/duckboard_r2/info.json b/keyboards/doodboard/duckboard_r2/info.json index 69a1b1cd1a2e..5a774a6e517e 100644 --- a/keyboards/doodboard/duckboard_r2/info.json +++ b/keyboards/doodboard/duckboard_r2/info.json @@ -2,8 +2,6 @@ "keyboard_name": "duckboard", "url": "https://doodboard.xyz/", "maintainer": "doodboard", - "width": 5, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/doodboard/duckboard_r2/keymaps/default/keymap.c b/keyboards/doodboard/duckboard_r2/keymaps/default/keymap.c index 40b685d1d60f..af6e469ab2ac 100644 --- a/keyboards/doodboard/duckboard_r2/keymaps/default/keymap.c +++ b/keyboards/doodboard/duckboard_r2/keymaps/default/keymap.c @@ -50,7 +50,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; } @@ -89,7 +89,7 @@ static void render_anim(void) { } } -void oled_task_user(void) { +bool oled_task_user(void) { render_anim(); oled_set_cursor(0,6); oled_write_P(PSTR("DUCK\nBOARD\n"), false); @@ -109,6 +109,7 @@ void oled_task_user(void) { oled_write_P(PSTR("RGB\n"), false); break; } + return false; } #endif diff --git a/keyboards/doodboard/duckboard_r2/keymaps/via/keymap.c b/keyboards/doodboard/duckboard_r2/keymaps/via/keymap.c index 521f374c30a8..7911d9e3cc93 100644 --- a/keyboards/doodboard/duckboard_r2/keymaps/via/keymap.c +++ b/keyboards/doodboard/duckboard_r2/keymaps/via/keymap.c @@ -57,7 +57,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; } @@ -96,7 +96,7 @@ static void render_anim(void) { } } -void oled_task_user(void) { +bool oled_task_user(void) { render_anim(); oled_set_cursor(0,6); oled_write_P(PSTR("DUCK\nBOARD\n"), false); @@ -119,6 +119,7 @@ void oled_task_user(void) { oled_write_P(PSTR("FN2\n"), false); break; } + return false; } #endif diff --git a/keyboards/doodboard/duckboard_r2/rules.mk b/keyboards/doodboard/duckboard_r2/rules.mk index 09a60d8a7956..dd81d1b55f61 100644 --- a/keyboards/doodboard/duckboard_r2/rules.mk +++ b/keyboards/doodboard/duckboard_r2/rules.mk @@ -7,19 +7,17 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/doppelganger/config.h b/keyboards/doppelganger/config.h index fa909feea747..d063cee5bc31 100644 --- a/keyboards/doppelganger/config.h +++ b/keyboards/doppelganger/config.h @@ -129,59 +129,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -200,26 +147,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ #define BOOTMAGIC_LITE_ROW 0 #define BOOTMAGIC_LITE_COLUMN 2 diff --git a/keyboards/doppelganger/info.json b/keyboards/doppelganger/info.json index 4de98961a48a..7200fab68f5a 100644 --- a/keyboards/doppelganger/info.json +++ b/keyboards/doppelganger/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Doppelganger", "url": "", "maintainer": "yiancar", - "width": 20, - "height": 5.25, "layouts": { "LAYOUT": { "layout": [{"label":"F1", "x":1, "y":0}, {"label":"Esc", "x":2.5, "y":0}, {"label":"1", "x":3.5, "y":0}, {"label":"2", "x":4.5, "y":0}, {"label":"3", "x":5.5, "y":0}, {"label":"4", "x":6.5, "y":0}, {"label":"5", "x":7.5, "y":0}, {"label":"6", "x":8.5, "y":0}, {"label":"7", "x":10.5, "y":0}, {"label":"8", "x":11.5, "y":0}, {"label":"9", "x":12.5, "y":0}, {"label":"0", "x":13.5, "y":0}, {"label":"_", "x":14.5, "y":0}, {"label":"+", "x":15.5, "y":0}, {"x":16.5, "y":0}, {"x":17.5, "y":0}, {"label":"F2", "x":0, "y":1}, {"label":"F3", "x":1, "y":1}, {"label":"Tab", "x":2.5, "y":1, "w":1.5}, {"label":"Q", "x":4, "y":1}, {"label":"W", "x":5, "y":1}, {"label":"E", "x":6, "y":1}, {"label":"R", "x":7, "y":1}, {"label":"T", "x":8, "y":1}, {"label":"Y", "x":10, "y":1}, {"label":"U", "x":11, "y":1}, {"label":"I", "x":12, "y":1}, {"label":"O", "x":13, "y":1}, {"label":"P", "x":14, "y":1}, {"label":"{", "x":15, "y":1}, {"label":"}", "x":16, "y":1}, {"label":"|", "x":17, "y":1, "w":1.5}, {"label":"Pg Up", "x":19, "y":1}, {"label":"F4", "x":0, "y":2}, {"label":"F5", "x":1, "y":2}, {"label":"Caps Lock", "x":2.5, "y":2, "w":1.75}, {"label":"A", "x":4.25, "y":2}, {"label":"S", "x":5.25, "y":2}, {"label":"D", "x":6.25, "y":2}, {"label":"F", "x":7.25, "y":2}, {"label":"G", "x":8.25, "y":2}, {"label":"H", "x":10.25, "y":2}, {"label":"J", "x":11.25, "y":2}, {"label":"K", "x":12.25, "y":2}, {"label":"L", "x":13.25, "y":2}, {"label":":", "x":14.25, "y":2}, {"label":"\"", "x":15.25, "y":2}, {"label":"~", "x":16.25, "y":2}, {"label":"Enter", "x":17.25, "y":2, "w":1.25}, {"label":"Pg Dn", "x":19, "y":2}, {"label":"F6", "x":0, "y":3}, {"label":"F7", "x":1, "y":3}, {"label":"Shift", "x":2.5, "y":3, "w":1.25}, {"label":"|", "x":3.75, "y":3}, {"label":"Z", "x":4.75, "y":3}, {"label":"X", "x":5.75, "y":3}, {"label":"C", "x":6.75, "y":3}, {"label":"V", "x":7.75, "y":3}, {"label":"B", "x":8.75, "y":3}, {"label":"N", "x":10.75, "y":3}, {"label":"M", "x":11.75, "y":3}, {"label":"<", "x":12.75, "y":3}, {"label":">", "x":13.75, "y":3}, {"label":"?", "x":14.75, "y":3}, {"label":"Shift", "x":15.75, "y":3, "w":1.75}, {"label":"Up", "x":17.75, "y":3.25}, {"label":"Fn", "x":19, "y":3}, {"label":"F8", "x":0, "y":4}, {"label":"F9", "x":1, "y":4}, {"label":"Ctrl", "x":2.5, "y":4, "w":1.25}, {"label":"Win", "x":3.75, "y":4}, {"label":"Alt", "x":4.75, "y":4, "w":1.25}, {"x":6, "y":4, "w":2.25}, {"x":8.25, "y":4}, {"x":10.25, "y":4, "w":2.75}, {"label":"Alt", "x":13, "y":4, "w":1.25}, {"x":14.25, "y":4}, {"label":"Win", "x":15.25, "y":4, "w":1.25}, {"label":"Left", "x":16.75, "y":4.25}, {"label":"Down", "x":17.75, "y":4.25}, {"label":"Right", "x":18.75, "y":4.25}] diff --git a/keyboards/doppelganger/rules.mk b/keyboards/doppelganger/rules.mk index e10f6450b2ab..dbfa5ebe2de3 100644 --- a/keyboards/doppelganger/rules.mk +++ b/keyboards/doppelganger/rules.mk @@ -2,31 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = yes diff --git a/keyboards/doro67/multi/info.json b/keyboards/doro67/multi/info.json index 747c8ab7b002..24a798243711 100644 --- a/keyboards/doro67/multi/info.json +++ b/keyboards/doro67/multi/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Doro67 Multi PCB", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_ansi_blocker": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Ins", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Del", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"PgUp", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"label":"PgDn", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Fn", "x":11.25, "y":4, "w":1.25}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}] diff --git a/keyboards/doro67/multi/keymaps/konstantin/config.h b/keyboards/doro67/multi/keymaps/konstantin/config.h index 1d12c7db3761..3c2583e2d46f 100644 --- a/keyboards/doro67/multi/keymaps/konstantin/config.h +++ b/keyboards/doro67/multi/keymaps/konstantin/config.h @@ -1,6 +1,4 @@ #pragma once -#define DYNAMIC_KEYMAP_LAYER_COUNT 3 - #define LAYER_FN #define LAYER_NUMPAD diff --git a/keyboards/doro67/multi/keymaps/konstantin/rules.mk b/keyboards/doro67/multi/keymaps/konstantin/rules.mk index 50c3f77ddb4c..7bab7513ed3f 100644 --- a/keyboards/doro67/multi/keymaps/konstantin/rules.mk +++ b/keyboards/doro67/multi/keymaps/konstantin/rules.mk @@ -1,5 +1,5 @@ # Generic features -BOOTMAGIC_ENABLE = lite +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite COMMAND_ENABLE = yes CONSOLE_ENABLE = yes EXTRAKEY_ENABLE = yes diff --git a/keyboards/doro67/multi/rules.mk b/keyboards/doro67/multi/rules.mk index fa93c56d2557..4111d3a5975b 100644 --- a/keyboards/doro67/multi/rules.mk +++ b/keyboards/doro67/multi/rules.mk @@ -1,32 +1,21 @@ +# MCU name MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = 65_ansi_blocker diff --git a/keyboards/doro67/regular/info.json b/keyboards/doro67/regular/info.json index e5ea4c16a64d..34120a166354 100644 --- a/keyboards/doro67/regular/info.json +++ b/keyboards/doro67/regular/info.json @@ -1,10 +1,7 @@ { "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_ansi_blocker": { - "key_count": 67, "layout": [ {"label":"K00", "x":0, "y":0}, {"label":"K01", "x":1, "y":0}, @@ -77,4 +74,3 @@ } } } - diff --git a/keyboards/doro67/regular/rules.mk b/keyboards/doro67/regular/rules.mk index 037b1d978335..e4822fb171f7 100644 --- a/keyboards/doro67/regular/rules.mk +++ b/keyboards/doro67/regular/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = 65_ansi_blocker diff --git a/keyboards/doro67/rgb/config.h b/keyboards/doro67/rgb/config.h index 709d3cdd3b54..b2d26b29aebb 100644 --- a/keyboards/doro67/rgb/config.h +++ b/keyboards/doro67/rgb/config.h @@ -56,6 +56,54 @@ along with this program. If not, see . #define DRIVER_LED_TOTAL 67 #define RGB_MATRIX_KEYPRESSES +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH /* * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. diff --git a/keyboards/doro67/rgb/info.json b/keyboards/doro67/rgb/info.json index a87b1d4a677b..f7895ce55b76 100644 --- a/keyboards/doro67/rgb/info.json +++ b/keyboards/doro67/rgb/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Doro 67 RGB", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_ansi_blocker": { - "key_count": 67, "layout": [ {"label":"K00", "x":0, "y":0}, {"label":"K01", "x":1, "y":0}, @@ -79,4 +76,3 @@ } } } - \ No newline at end of file diff --git a/keyboards/doro67/rgb/rules.mk b/keyboards/doro67/rgb/rules.mk index 7f2494316425..2aec9c86690c 100644 --- a/keyboards/doro67/rgb/rules.mk +++ b/keyboards/doro67/rgb/rules.mk @@ -2,33 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output RGB_MATRIX_ENABLE = yes RGB_MATRIX_DRIVER = WS2812 diff --git a/keyboards/dozen0/config.h b/keyboards/dozen0/config.h index 11a8e196644c..48d847bde123 100644 --- a/keyboards/dozen0/config.h +++ b/keyboards/dozen0/config.h @@ -99,54 +99,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -165,26 +117,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/dozen0/dozen0.c b/keyboards/dozen0/dozen0.c index 8b52aa898677..42872a2105d2 100644 --- a/keyboards/dozen0/dozen0.c +++ b/keyboards/dozen0/dozen0.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "dozen0.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/dozen0/info.json b/keyboards/dozen0/info.json index 36eb8bec63c2..38e0f387517f 100644 --- a/keyboards/dozen0/info.json +++ b/keyboards/dozen0/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Dozen0", "url": "http://yynmt.com", "maintainer": "yynmt", - "width": 6, - "height": 2, "layouts": { "LAYOUT": { - "key_count": 12, "layout": [ {"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1} diff --git a/keyboards/dozen0/keymaps/default/keymap.c b/keyboards/dozen0/keymaps/default/keymap.c index fdc344f66022..a869c6e93c31 100644 --- a/keyboards/dozen0/keymaps/default/keymap.c +++ b/keyboards/dozen0/keymaps/default/keymap.c @@ -120,11 +120,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/dozen0/rules.mk b/keyboards/dozen0/rules.mk index 271ccf470f49..4d5f68b1d3fe 100644 --- a/keyboards/dozen0/rules.mk +++ b/keyboards/dozen0/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/dp60/config.h b/keyboards/dp60/config.h index 2593b7ff71aa..f4a44206f437 100644 --- a/keyboards/dp60/config.h +++ b/keyboards/dp60/config.h @@ -59,3 +59,51 @@ #define DRIVER_1_LED_TOTAL 36 #define DRIVER_2_LED_TOTAL 36 #define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH diff --git a/keyboards/dp60/dp60.c b/keyboards/dp60/dp60.c index 475084b0496f..16aac75fa5ed 100644 --- a/keyboards/dp60/dp60.c +++ b/keyboards/dp60/dp60.c @@ -17,7 +17,7 @@ #include "dp60.h" #ifdef RGB_MATRIX_ENABLE -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { /* Refer to IS31 manual for these locations * driver * | R location diff --git a/keyboards/dp60/dp60.h b/keyboards/dp60/dp60.h index 9d8bffa64acd..515a2c0745cf 100644 --- a/keyboards/dp60/dp60.h +++ b/keyboards/dp60/dp60.h @@ -93,7 +93,7 @@ k40, k42, k43, k47, k48, k49, k4a, k4b \ {k40, k42, k43, KC_NO, KC_NO, KC_NO, k47, k07, KC_NO, KC_NO, k48, k49, k4a, k4b} \ } -#define LAYOUT_60_wkl( \ +#define LAYOUT_60_ansi_tsangan_split_rshift( \ 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, k1e, \ k20, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2e, \ @@ -122,7 +122,7 @@ k40, k42, k43, k47, k48, k49, k4a, k4b \ {k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d}, \ {KC_NO, k42, k43, KC_NO, KC_NO, KC_NO, k47, k07, KC_NO, KC_NO, KC_NO, k49, k4a, KC_NO} \ } -#define LAYOUT_60_wkl_split_bs( \ +#define LAYOUT_60_tsangan_hhkb( \ 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, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2e, \ diff --git a/keyboards/dp60/info.json b/keyboards/dp60/info.json index 9387c3f940cb..e5c7bbfeedb4 100644 --- a/keyboards/dp60/info.json +++ b/keyboards/dp60/info.json @@ -2,32 +2,427 @@ "keyboard_name": "rgb60", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, + "layout_aliases": { + "LAYOUT_60_wkl": "LAYOUT_60_ansi_tsangan_split_rshift", + "LAYOUT_60_wkl_split_bs": "LAYOUT_60_tsangan_hhkb" + }, "layouts": { - "LAYOUT_60_wkl": { - "key_count":61, - "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}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Fn", "x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"Win", "x":12.5, "y":4}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}] + "LAYOUT_60_ansi_tsangan_split_rshift": { + "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}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + + {"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":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"Fn", "x":14, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.5}, + {"label":"Win", "x":1.5, "y":4}, + {"label":"Alt", "x":2.5, "y":4, "w":1.5}, + {"x":4, "y":4, "w":7}, + {"label":"Alt", "x":11, "y":4, "w":1.5}, + {"label":"Win", "x":12.5, "y":4}, + {"label":"Ctrl", "x":13.5, "y":4, "w":1.5} + ] }, "LAYOUT_60_ansi": { - "key_count":61, - "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}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"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}] + "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}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + + {"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":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":2.75}, + + {"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} + ] }, "LAYOUT_60_hhkb": { - "key_count":60, - "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"|", "x":13, "y":0}, {"label":"~", "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":"Backspace", "x":13.5, "y":1, "w":1.5}, {"label":"Control", "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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Fn", "x":14, "y":3}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"Win", "x":12.5, "y":4}] + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"!", "x":1, "y":0}, + {"label":"@", "x":2, "y":0}, + {"label":"#", "x":3, "y":0}, + {"label":"$", "x":4, "y":0}, + {"label":"%", "x":5, "y":0}, + {"label":"^", "x":6, "y":0}, + {"label":"&", "x":7, "y":0}, + {"label":"*", "x":8, "y":0}, + {"label":"(", "x":9, "y":0}, + {"label":")", "x":10, "y":0}, + {"label":"_", "x":11, "y":0}, + {"label":"+", "x":12, "y":0}, + {"label":"|", "x":13, "y":0}, + {"label":"~", "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":"Backspace", "x":13.5, "y":1, "w":1.5}, + + {"label":"Control", "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":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"Fn", "x":14, "y":3}, + + {"label":"Win", "x":1.5, "y":4}, + {"label":"Alt", "x":2.5, "y":4, "w":1.5}, + {"x":4, "y":4, "w":7}, + {"label":"Alt", "x":11, "y":4, "w":1.5}, + {"label":"Win", "x":12.5, "y":4} + ] }, "LAYOUT_60_iso": { - "key_count":62, - "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.75, "y":1, "w":1.25, "h":2}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":2.75}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}] + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.75, "y":1, "w":1.25, "h":2}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":2.75}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":12.5, "y":4, "w":1.25}, + {"x":13.75, "y":4, "w":1.25} + ] }, "LAYOUT_60_ansi_split_bs_rshift": { - "key_count":63, - "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"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}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}] + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":12.5, "y":4, "w":1.25}, + {"x":13.75, "y":4, "w":1.25} + ] }, - "LAYOUT_60_wkl_split_bs": { - "key_count":62, - "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"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}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.5}, {"x":1.5, "y":4}, {"x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"x":11, "y":4, "w":1.5}, {"x":12.5, "y":4}, {"x":13.5, "y":4, "w":1.5}] + "LAYOUT_60_tsangan_hhkb": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + + {"x":0, "y":4, "w":1.5}, + {"x":1.5, "y":4}, + {"x":2.5, "y":4, "w":1.5}, + {"x":4, "y":4, "w":7}, + {"x":11, "y":4, "w":1.5}, + {"x":12.5, "y":4}, + {"x":13.5, "y":4, "w":1.5} + ] } } - } \ No newline at end of file +} diff --git a/keyboards/dp60/rules.mk b/keyboards/dp60/rules.mk index c18d9605e135..99f86179d45f 100644 --- a/keyboards/dp60/rules.mk +++ b/keyboards/dp60/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Use RGB underglow light RGB_MATRIX_ENABLE = yes RGB_MATRIX_DRIVER = IS31FL3731 # Use RGB matrix diff --git a/keyboards/draculad/config.h b/keyboards/draculad/config.h index 8a27fdea4de6..abcdc76b4b45 100644 --- a/keyboards/draculad/config.h +++ b/keyboards/draculad/config.h @@ -39,7 +39,7 @@ along with this program. If not, see . #define USE_SERIAL #define SOFT_SERIAL_PIN D2 -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE #define OLED_DISPLAY_128X64 #define OLED_TIMEOUT 30000 #endif @@ -65,3 +65,5 @@ along with this program. If not, see . #define UNUSED_PINS #define EE_HANDS + +#define LAYER_STATE_8BIT diff --git a/keyboards/draculad/info.json b/keyboards/draculad/info.json index c0f37771b92e..351ebb58fcad 100644 --- a/keyboards/draculad/info.json +++ b/keyboards/draculad/info.json @@ -2,8 +2,6 @@ "keyboard_name": "DracuLad", "url": "", "maintainer": "MangoIV", - "width": 13, - "height": 5.5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/draculad/keymaps/default/keymap.c b/keyboards/draculad/keymaps/default/keymap.c index 1d3591ce9938..a352359d132d 100644 --- a/keyboards/draculad/keymaps/default/keymap.c +++ b/keyboards/draculad/keymaps/default/keymap.c @@ -17,7 +17,6 @@ along with this program. If not, see . #include QMK_KEYBOARD_H - enum layer_number { _BASE, _NUM, @@ -26,9 +25,6 @@ enum layer_number { _ADJ }; - -char wpm_as_str[8]; - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_BASE] = LAYOUT( KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, @@ -67,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { @@ -155,14 +151,20 @@ static void render_logo(void) { } static void render_status(void) { - oled_write_P(PSTR("This is\n~~~~~~~~~\nDracu\nLad\n~~~~~~~~~\nv1.0\n~~~~~~~~~\n"), false); - sprintf(wpm_as_str, "WPM %03d", get_current_wpm()); - oled_write(wpm_as_str,false); - led_t led_state = host_keyboard_led_state(); - oled_write_P(PSTR("\nCaps: "), false); - oled_write_P(led_state.caps_lock ? PSTR("on ") : PSTR("off"), false); - oled_write_P(PSTR("\n"),false); - switch (get_highest_layer(layer_state)) { + oled_write_P(PSTR("This is\n~~~~~~~~~\nDracu\nLad\n~~~~~~~~~\nv1.0\n~~~~~~~~~\n"), false); + uint8_t n = get_current_wpm(); + char wpm_counter[4]; + wpm_counter[3] = '\0'; + wpm_counter[2] = '0' + n % 10; + wpm_counter[1] = (n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' '; + wpm_counter[0] = n / 10 ? '0' + n / 10 : ' '; + oled_write_P(PSTR("WPM:"), false); + oled_write(wpm_counter, false); + led_t led_state = host_keyboard_led_state(); + oled_write_P(PSTR("\nCaps: "), false); + oled_write_P(led_state.caps_lock ? PSTR("on ") : PSTR("off"), false); + oled_write_P(PSTR("\n"), false); + switch (get_highest_layer(layer_state)) { case _BASE: oled_write_P(PSTR("Base "), false); break; @@ -184,12 +186,13 @@ static void render_status(void) { } } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) } else { render_logo(); } + return false; } #endif diff --git a/keyboards/draculad/keymaps/pimoroni/keymap.c b/keyboards/draculad/keymaps/pimoroni/keymap.c index 87cbe3cd3a58..b70184dbc811 100644 --- a/keyboards/draculad/keymaps/pimoroni/keymap.c +++ b/keyboards/draculad/keymaps/pimoroni/keymap.c @@ -16,7 +16,7 @@ along with this program. If not, see . */ #include QMK_KEYBOARD_H -#include "pimoroni_trackball.h" +#include "drivers/sensors/pimoroni_trackball.h" #include "pointing_device.h" @@ -38,9 +38,6 @@ enum custom_keycodes { BALL_MCL,//middle click }; - -char wpm_as_str[8]; - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_BASE] = LAYOUT( KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, @@ -80,7 +77,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { @@ -168,14 +165,20 @@ static void render_logo(void) { } static void render_status(void) { - oled_write_P(PSTR("This is\n~~~~~~~~~\nDracu\nLad\n~~~~~~~~~\nv1.0\n~~~~~~~~~\n"), false); - sprintf(wpm_as_str, "WPM %03d", get_current_wpm()); - oled_write(wpm_as_str,false); - led_t led_state = host_keyboard_led_state(); - oled_write_P(PSTR("\nCaps: "), false); - oled_write_P(led_state.caps_lock ? PSTR("on ") : PSTR("off"), false); - oled_write_P(PSTR("\n"),false); - switch (get_highest_layer(layer_state)) { + oled_write_P(PSTR("This is\n~~~~~~~~~\nDracu\nLad\n~~~~~~~~~\nv1.0\n~~~~~~~~~\n"), false); + uint8_t n = get_current_wpm(); + char wpm_counter[4]; + wpm_counter[3] = '\0'; + wpm_counter[2] = '0' + n % 10; + wpm_counter[1] = (n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' '; + wpm_counter[0] = n / 10 ? '0' + n / 10 : ' '; + oled_write_P(PSTR("WPM:"), false); + oled_write(wpm_counter, false); + led_t led_state = host_keyboard_led_state(); + oled_write_P(PSTR("\nCaps: "), false); + oled_write_P(led_state.caps_lock ? PSTR("on ") : PSTR("off"), false); + oled_write_P(PSTR("\n"), false); + switch (get_highest_layer(layer_state)) { case _BASE: oled_write_P(PSTR("Base "), false); break; @@ -197,12 +200,13 @@ static void render_status(void) { } } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) } else { render_logo(); } + return false; } #endif diff --git a/keyboards/draculad/keymaps/pimoroni/rules.mk b/keyboards/draculad/keymaps/pimoroni/rules.mk index 547a02f26f7e..704aad070aa6 100644 --- a/keyboards/draculad/keymaps/pimoroni/rules.mk +++ b/keyboards/draculad/keymaps/pimoroni/rules.mk @@ -1,6 +1,7 @@ # only uncomment on the side you have your trackball on POINTING_DEVICE_ENABLE = yes -SRC += pimoroni_trackball.c +SRC += drivers/sensors/pimoroni_trackball.c QUANTUM_LIB_SRC += i2c_master.c -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 MOUSEKEY_ENABLE = no diff --git a/keyboards/draculad/rules.mk b/keyboards/draculad/rules.mk index d8596006c375..8ed7061e8984 100644 --- a/keyboards/draculad/rules.mk +++ b/keyboards/draculad/rules.mk @@ -7,21 +7,19 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = yes -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 WPM_ENABLE = yes ENCODER_ENABLE = yes LTO_ENABLE = yes diff --git a/keyboards/draytronics/daisy/info.json b/keyboards/draytronics/daisy/info.json index ac3b83f81ffa..bb20b0c9bfe2 100644 --- a/keyboards/draytronics/daisy/info.json +++ b/keyboards/draytronics/daisy/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Draytronics DAISY", "url": "https://www.draytronics.co.uk/daisy", "maintainer": "ghostseven", - "width": 4, - "height": 3, "layout_aliases": { "LAYOUT_daisy": "LAYOUT" }, diff --git a/keyboards/draytronics/daisy/rules.mk b/keyboards/draytronics/daisy/rules.mk index f826ee61873d..9e04140a0b4e 100644 --- a/keyboards/draytronics/daisy/rules.mk +++ b/keyboards/draytronics/daisy/rules.mk @@ -2,22 +2,19 @@ MCU = atmega328p # Bootloader selection -BOOTLOADER = USBasp +BOOTLOADER = usbasploader # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = yes # Rotary encoder support diff --git a/keyboards/draytronics/elise/config.h b/keyboards/draytronics/elise/config.h new file mode 100644 index 000000000000..f5fde6987efa --- /dev/null +++ b/keyboards/draytronics/elise/config.h @@ -0,0 +1,70 @@ +/*Copyright 2021 Blake Drayson / Draytronics + +Contact info@draytronics.co.uk + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4454 //DT for DrayTronics +#define PRODUCT_ID 0x454C //EL for Elise +#define DEVICE_VER 0x0100 //Version 1 +#define MANUFACTURER Draytronics +#define PRODUCT ELISE + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * 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 { B2,B3, B1, F0, F1} +#define MATRIX_COL_PINS { F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, D2, D3, D5} +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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 + +// ws2812 options +#define RGB_DI_PIN D1 // pin the DI on the ws2812 is hooked-up to +#ifdef RGB_DI_PIN + #define RGBLED_NUM 7 + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ + #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ + /*== all animations enable ==*/ + #define RGBLIGHT_ANIMATIONS +#endif diff --git a/keyboards/draytronics/elise/elise.c b/keyboards/draytronics/elise/elise.c new file mode 100755 index 000000000000..731202ab6d58 --- /dev/null +++ b/keyboards/draytronics/elise/elise.c @@ -0,0 +1,18 @@ +/*Copyright 2021 Blake Drayson / Draytronics + +Contact info@draytronics.co.uk + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "elise.h" diff --git a/keyboards/draytronics/elise/elise.h b/keyboards/draytronics/elise/elise.h new file mode 100755 index 000000000000..750d651a238c --- /dev/null +++ b/keyboards/draytronics/elise/elise.h @@ -0,0 +1,135 @@ +/*Copyright 2021 Blake Drayson / Draytronics + +Contact info@draytronics.co.uk + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#define _x_ KC_NO + +#include "quantum.h" + +#define LAYOUT_65_ansi( \ + 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, K2D, K2E, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + 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, _x_, K2D, K2E }, \ +{ K30, _x_, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \ +{ K40, K41, K42, _x_, _x_, K45, _x_, _x_, _x_, K49, K4A, K4B, K4C, K4D, K4E} \ +} + +#define LAYOUT_65_ansi_rwkl( \ + 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, K2D, K2E, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K40, K41, K42, K45, K49, 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, _x_, K2D, K2E }, \ +{ K30, _x_, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \ +{ K40, K41, K42, _x_, _x_, K45, _x_, _x_, _x_, K49, _x_, K4B, K4C, K4D, K4E} \ +} + +#define LAYOUT_65_ansi_lwkl( \ + 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, K2D, K2E, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K40, 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, _x_, K2D, K2E }, \ +{ K30, _x_, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \ +{ K40, _x_, K42, _x_, _x_, K45, _x_, _x_, _x_, K49, K4A, K4B, K4C, K4D, K4E} \ +} + +#define LAYOUT_65_ansi_wkl( \ + 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, K2D, K2E, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K40, K42, K45, K49, 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, _x_, K2D, K2E }, \ +{ K30, _x_, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \ +{ K40, _x_, K42, _x_, _x_, K45, _x_, _x_, _x_, K49, _x_, K4B, K4C, K4D, K4E} \ +} + +#define LAYOUT_65_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, K2D, K1D, K2E, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + 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, _x_, K2D, K2E }, \ +{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \ +{ K40, K41, K42, _x_, _x_, K45, _x_, _x_, _x_, K49, K4A, K4B, K4C, K4D, K4E} \ +} + +#define LAYOUT_65_iso_rwkl( \ + 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, K2D, K1D, K2E, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K40, K41, K42, K45, K49, 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, _x_, K2D, K2E }, \ +{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \ +{ K40, K41, K42, _x_, _x_, K45, _x_, _x_, _x_, K49, _x_, K4B, K4C, K4D, K4E} \ +} + +#define LAYOUT_65_iso_lwkl( \ + 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, K2D, K1D, K2E, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K40, 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, _x_, K2D, K2E }, \ +{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \ +{ K40, _x_, K42, _x_, _x_, K45, _x_, _x_, _x_, K49, K4A, K4B, K4C, K4D, K4E} \ +} + +#define LAYOUT_65_iso_wkl( \ + 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, K2D, K1D, K2E, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K40, K42, K45, K49, 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, _x_, K2D, K2E }, \ +{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \ +{ K40, _x_, K42, _x_, _x_, K45, _x_, _x_, _x_, K49, _x_, K4B, K4C, K4D, K4E} \ +} diff --git a/keyboards/draytronics/elise/info.json b/keyboards/draytronics/elise/info.json new file mode 100644 index 000000000000..6393dbfab52c --- /dev/null +++ b/keyboards/draytronics/elise/info.json @@ -0,0 +1,619 @@ +{ + "keyboard_name": "Draytronics ELISE", + "url": "https://www.draytronics.co.uk/elise", + "maintainer": "ghostseven", + "layout_aliases": { + "LAYOUT_65_ansi_right_lrg": "LAYOUT_65_ansi_rwkl", + "LAYOUT_65_ansi_left_lrg": "LAYOUT_65_ansi_lwkl", + "LAYOUT_65_ansi_lrg": "LAYOUT_65_ansi_wkl", + "LAYOUT_65_iso_right_lrg": "LAYOUT_65_iso_rwkl", + "LAYOUT_65_iso_left_lrg": "LAYOUT_65_iso_lwkl", + "LAYOUT_65_iso_lrg": "LAYOUT_65_iso_wkl" + }, + "layouts": { + "LAYOUT_65_ansi": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1", "x":1, "y":0}, + {"label":"2", "x":2, "y":0}, + {"label":"3", "x":3, "y":0}, + {"label":"4", "x":4, "y":0}, + {"label":"5", "x":5, "y":0}, + {"label":"6", "x":6, "y":0}, + {"label":"7", "x":7, "y":0}, + {"label":"8", "x":8, "y":0}, + {"label":"9", "x":9, "y":0}, + {"label":"10", "x":10, "y":0}, + {"label":"-", "x":11, "y":0}, + {"label":"=", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + {"label":"~", "x":15, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"[", "x":11.5, "y":1}, + {"label":"]", "x":12.5, "y":1}, + {"label":"\\", "x":13.5, "y":1, "w":1.5}, + {"label":"Delete", "x":15, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";", "x":10.75, "y":2}, + {"label":"'", "x":11.75, "y":2}, + {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + {"label":"PgUp", "x":15, "y":2}, + + {"label":"Shift", "x":0, "y":3, "w":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",", "x":9.25, "y":3}, + {"label":".", "x":10.25, "y":3}, + {"label":"/", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"\u2191", "x":14, "y":3}, + {"label":"PgDn", "x":15, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"Win", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space", "x":3.75, "y":4, "w":6.25}, + {"label":"Alt", "x":10, "y":4}, + {"label":"Fn", "x":11, "y":4}, + {"label":"Ctrl", "x":12, "y":4}, + {"label":"\u2190", "x":13, "y":4}, + {"label":"\u2193", "x":14, "y":4}, + {"label":"\u2192", "x":15, "y":4} + ] + }, + "LAYOUT_65_ansi_rwkl": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1", "x":1, "y":0}, + {"label":"2", "x":2, "y":0}, + {"label":"3", "x":3, "y":0}, + {"label":"4", "x":4, "y":0}, + {"label":"5", "x":5, "y":0}, + {"label":"6", "x":6, "y":0}, + {"label":"7", "x":7, "y":0}, + {"label":"8", "x":8, "y":0}, + {"label":"9", "x":9, "y":0}, + {"label":"10", "x":10, "y":0}, + {"label":"-", "x":11, "y":0}, + {"label":"=", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + {"label":"~", "x":15, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"[", "x":11.5, "y":1}, + {"label":"]", "x":12.5, "y":1}, + {"label":"\\", "x":13.5, "y":1, "w":1.5}, + {"label":"Delete", "x":15, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";", "x":10.75, "y":2}, + {"label":"'", "x":11.75, "y":2}, + {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + {"label":"PgUp", "x":15, "y":2}, + + {"label":"Shift", "x":0, "y":3, "w":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",", "x":9.25, "y":3}, + {"label":".", "x":10.25, "y":3}, + {"label":"/", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"\u2191", "x":14, "y":3}, + {"label":"PgDn", "x":15, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"Win", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space", "x":3.75, "y":4, "w":6.25}, + {"label":"Alt", "x":10, "y":4, "w":1.5}, + {"label":"Fn", "x":11.5, "y":4, "w":1.5}, + {"label":"\u2190", "x":13, "y":4}, + {"label":"\u2193", "x":14, "y":4}, + {"label":"\u2192", "x":15, "y":4} + ] + }, + "LAYOUT_65_ansi_lwkl": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1", "x":1, "y":0}, + {"label":"2", "x":2, "y":0}, + {"label":"3", "x":3, "y":0}, + {"label":"4", "x":4, "y":0}, + {"label":"5", "x":5, "y":0}, + {"label":"6", "x":6, "y":0}, + {"label":"7", "x":7, "y":0}, + {"label":"8", "x":8, "y":0}, + {"label":"9", "x":9, "y":0}, + {"label":"10", "x":10, "y":0}, + {"label":"-", "x":11, "y":0}, + {"label":"=", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + {"label":"~", "x":15, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"[", "x":11.5, "y":1}, + {"label":"]", "x":12.5, "y":1}, + {"label":"\\", "x":13.5, "y":1, "w":1.5}, + {"label":"Delete", "x":15, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";", "x":10.75, "y":2}, + {"label":"'", "x":11.75, "y":2}, + {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + {"label":"PgUp", "x":15, "y":2}, + + {"label":"Shift", "x":0, "y":3, "w":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",", "x":9.25, "y":3}, + {"label":".", "x":10.25, "y":3}, + {"label":"/", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"\u2191", "x":14, "y":3}, + {"label":"PgDn", "x":15, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.5}, + {"label":"Alt", "x":1.5, "y":4, "w":1.5}, + {"label":"Space", "x":3, "y":4, "w":7}, + {"label":"Alt", "x":10, "y":4}, + {"label":"Fn", "x":11, "y":4}, + {"label":"Ctrl", "x":12, "y":4}, + {"label":"\u2190", "x":13, "y":4}, + {"label":"\u2193", "x":14, "y":4}, + {"label":"\u2192", "x":15, "y":4} + ] + }, + "LAYOUT_65_ansi_wkl": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1", "x":1, "y":0}, + {"label":"2", "x":2, "y":0}, + {"label":"3", "x":3, "y":0}, + {"label":"4", "x":4, "y":0}, + {"label":"5", "x":5, "y":0}, + {"label":"6", "x":6, "y":0}, + {"label":"7", "x":7, "y":0}, + {"label":"8", "x":8, "y":0}, + {"label":"9", "x":9, "y":0}, + {"label":"10", "x":10, "y":0}, + {"label":"-", "x":11, "y":0}, + {"label":"=", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + {"label":"~", "x":15, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"[", "x":11.5, "y":1}, + {"label":"]", "x":12.5, "y":1}, + {"label":"\\", "x":13.5, "y":1, "w":1.5}, + {"label":"Delete", "x":15, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";", "x":10.75, "y":2}, + {"label":"'", "x":11.75, "y":2}, + {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + {"label":"PgUp", "x":15, "y":2}, + + {"label":"Shift", "x":0, "y":3, "w":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",", "x":9.25, "y":3}, + {"label":".", "x":10.25, "y":3}, + {"label":"/", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"\u2191", "x":14, "y":3}, + {"label":"PgDn", "x":15, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.5}, + {"label":"Alt", "x":1.5, "y":4, "w":1.5}, + {"label":"Space", "x":3, "y":4, "w":7}, + {"label":"Alt", "x":10, "y":4, "w":1.5}, + {"label":"Fn", "x":11.5, "y":4, "w":1.5}, + {"label":"\u2190", "x":13, "y":4}, + {"label":"\u2193", "x":14, "y":4}, + {"label":"\u2192", "x":15, "y":4} + ] + }, + "LAYOUT_65_iso": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1", "x":1, "y":0}, + {"label":"2", "x":2, "y":0}, + {"label":"3", "x":3, "y":0}, + {"label":"4", "x":4, "y":0}, + {"label":"5", "x":5, "y":0}, + {"label":"6", "x":6, "y":0}, + {"label":"7", "x":7, "y":0}, + {"label":"8", "x":8, "y":0}, + {"label":"9", "x":9, "y":0}, + {"label":"10", "x":10, "y":0}, + {"label":"-", "x":11, "y":0}, + {"label":"=", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + {"label":"~", "x":15, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"[", "x":11.5, "y":1}, + {"label":"]", "x":12.5, "y":1}, + {"label":"Delete", "x":15, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";", "x":10.75, "y":2}, + {"label":"'", "x":11.75, "y":2}, + {"label":"#", "x":12.75, "y":2}, + {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, + {"label":"PgUp", "x":15, "y":2}, + + {"label":"Shift", "x":0, "y":3, "w":1.25}, + {"label":"\\", "x":1.25, "y":3}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",", "x":9.25, "y":3}, + {"label":".", "x":10.25, "y":3}, + {"label":"/", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"\u2191", "x":14, "y":3}, + {"label":"PgDn", "x":15, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"Win", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space", "x":3.75, "y":4, "w":6.25}, + {"label":"Alt", "x":10, "y":4}, + {"label":"Fn", "x":11, "y":4}, + {"label":"Ctrl", "x":12, "y":4}, + {"label":"\u2190", "x":13, "y":4}, + {"label":"\u2193", "x":14, "y":4}, + {"label":"\u2192", "x":15, "y":4} + ] + }, + "LAYOUT_65_iso_rwkl": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1", "x":1, "y":0}, + {"label":"2", "x":2, "y":0}, + {"label":"3", "x":3, "y":0}, + {"label":"4", "x":4, "y":0}, + {"label":"5", "x":5, "y":0}, + {"label":"6", "x":6, "y":0}, + {"label":"7", "x":7, "y":0}, + {"label":"8", "x":8, "y":0}, + {"label":"9", "x":9, "y":0}, + {"label":"10", "x":10, "y":0}, + {"label":"-", "x":11, "y":0}, + {"label":"=", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + {"label":"~", "x":15, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"[", "x":11.5, "y":1}, + {"label":"]", "x":12.5, "y":1}, + {"label":"Delete", "x":15, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";", "x":10.75, "y":2}, + {"label":"'", "x":11.75, "y":2}, + {"label":"#", "x":12.75, "y":2}, + {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, + {"label":"PgUp", "x":15, "y":2}, + + {"label":"Shift", "x":0, "y":3, "w":1.25}, + {"label":"\\", "x":1.25, "y":3}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",", "x":9.25, "y":3}, + {"label":".", "x":10.25, "y":3}, + {"label":"/", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"\u2191", "x":14, "y":3}, + {"label":"PgDn", "x":15, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"Win", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space", "x":3.75, "y":4, "w":6.25}, + {"label":"Alt", "x":10, "y":4, "w":1.5}, + {"label":"Fn", "x":11.5, "y":4, "w":1.5}, + {"label":"\u2190", "x":13, "y":4}, + {"label":"\u2193", "x":14, "y":4}, + {"label":"\u2192", "x":15, "y":4} + ] + }, + "LAYOUT_65_iso_lwkl": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1", "x":1, "y":0}, + {"label":"2", "x":2, "y":0}, + {"label":"3", "x":3, "y":0}, + {"label":"4", "x":4, "y":0}, + {"label":"5", "x":5, "y":0}, + {"label":"6", "x":6, "y":0}, + {"label":"7", "x":7, "y":0}, + {"label":"8", "x":8, "y":0}, + {"label":"9", "x":9, "y":0}, + {"label":"10", "x":10, "y":0}, + {"label":"-", "x":11, "y":0}, + {"label":"=", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + {"label":"~", "x":15, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"[", "x":11.5, "y":1}, + {"label":"]", "x":12.5, "y":1}, + {"label":"Delete", "x":15, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";", "x":10.75, "y":2}, + {"label":"'", "x":11.75, "y":2}, + {"label":"#", "x":12.75, "y":2}, + {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, + {"label":"PgUp", "x":15, "y":2}, + + {"label":"Shift", "x":0, "y":3, "w":1.25}, + {"label":"\\", "x":1.25, "y":3}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",", "x":9.25, "y":3}, + {"label":".", "x":10.25, "y":3}, + {"label":"/", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"\u2191", "x":14, "y":3}, + {"label":"PgDn", "x":15, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.5}, + {"label":"Alt", "x":1.5, "y":4, "w":1.5}, + {"label":"Space", "x":3, "y":4, "w":7}, + {"label":"Alt", "x":10, "y":4}, + {"label":"Fn", "x":11, "y":4}, + {"label":"Ctrl", "x":12, "y":4}, + {"label":"\u2190", "x":13, "y":4}, + {"label":"\u2193", "x":14, "y":4}, + {"label":"\u2192", "x":15, "y":4} + ] + }, + "LAYOUT_65_iso_wkl": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1", "x":1, "y":0}, + {"label":"2", "x":2, "y":0}, + {"label":"3", "x":3, "y":0}, + {"label":"4", "x":4, "y":0}, + {"label":"5", "x":5, "y":0}, + {"label":"6", "x":6, "y":0}, + {"label":"7", "x":7, "y":0}, + {"label":"8", "x":8, "y":0}, + {"label":"9", "x":9, "y":0}, + {"label":"10", "x":10, "y":0}, + {"label":"-", "x":11, "y":0}, + {"label":"=", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + {"label":"~", "x":15, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"[", "x":11.5, "y":1}, + {"label":"]", "x":12.5, "y":1}, + {"label":"Delete", "x":15, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";", "x":10.75, "y":2}, + {"label":"'", "x":11.75, "y":2}, + {"label":"#", "x":12.75, "y":2}, + {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, + {"label":"PgUp", "x":15, "y":2}, + + {"label":"Shift", "x":0, "y":3, "w":1.25}, + {"label":"\\", "x":1.25, "y":3}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",", "x":9.25, "y":3}, + {"label":".", "x":10.25, "y":3}, + {"label":"/", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"\u2191", "x":14, "y":3}, + {"label":"PgDn", "x":15, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.5}, + {"label":"Alt", "x":1.5, "y":4, "w":1.5}, + {"label":"Space", "x":3, "y":4, "w":7}, + {"label":"Alt", "x":10, "y":4, "w":1.5}, + {"label":"Fn", "x":11.5, "y":4, "w":1.5}, + {"label":"\u2190", "x":13, "y":4}, + {"label":"\u2193", "x":14, "y":4}, + {"label":"\u2192", "x":15, "y":4} + ] + } + } +} diff --git a/keyboards/draytronics/elise/keymaps/blake_iso/keymap.c b/keyboards/draytronics/elise/keymaps/blake_iso/keymap.c new file mode 100644 index 000000000000..65e0629e1dc5 --- /dev/null +++ b/keyboards/draytronics/elise/keymaps/blake_iso/keymap.c @@ -0,0 +1,68 @@ +/*Copyright 2021 Blake Drayson / Draytronics + +Contact info@draytronics.co.uk + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum custom_layers { + _BL, + _FL, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: (Base Layer) Default Layer + * ,----------------------------------------------------------------. + * |Esc | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |Home| + * |----------------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| |PgUp| + * |------------------------------------------------------- -----| + * |CAPS | A| S| D| F| G| H| J| K| L| ;| '| #|Entr|PgDn| + * |----------------------------------------------------------------| + * |Shift| \ | Z| X| C| V| B| N| M| ,| .| /|RShif| ↑ |End | + * |----------------------------------------------------------------| + * |Ctrl|Win |Alt | Space |RAlt|RCtrl|Fn| ← | ↓ | → | + * `----------------------------------------------------------------' + */ + [_BL] = LAYOUT_65_iso( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RALT, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* Keymap _FL1: Function Layer 1 + * ,----------------------------------------------------------------. + * |~ `| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| Delete| Ins| + * |----------------------------------------------------------------| + * |RESET| | ↑ | | | | | | | | | | | | | + * |------------------------------------------------------- -----| + * | | ← | ↓ | → | | | | | | | | | | | | + * |----------------------------------------------------------------| + * |HUI |SAI|VAI |RGBMOD| | | | | | | | |Play|V+|Mut| + * |----------------------------------------------------------------| + * |HUD |SAD |VAD | RGB_Tog | | | | | + * `----------------------------------------------------------------' + */ + [_FL] = LAYOUT_65_iso( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS, + RESET, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_VOLU, KC_MUTE, + RGB_HUD, RGB_SAD, RGB_VAD, RGB_TOG, _______, _______, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT + ) +}; diff --git a/keyboards/draytronics/elise/keymaps/default/keymap.c b/keyboards/draytronics/elise/keymaps/default/keymap.c new file mode 100644 index 000000000000..4208da13b303 --- /dev/null +++ b/keyboards/draytronics/elise/keymaps/default/keymap.c @@ -0,0 +1,67 @@ +/*Copyright 2021 Blake Drayson / Draytronics + +Contact info@draytronics.co.uk + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +enum custom_layers { + _BL, + _FL, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: (Base Layer) Default Layer + * ,----------------------------------------------------------------. + * |Esc | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |Home| + * |----------------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ |PgUp| + * |----------------------------------------------------------------| + * |CAPS | A| S| D| F| G| H| J| K| L| ;| '|Return |PgDn| + * |----------------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |Up |End | + * |----------------------------------------------------------------| + * |Ctrl|Win |Alt | Space |RAlt|FN|RCtrl| ← | ↓ | → | + * `----------------------------------------------------------------' + */ + [_BL] = LAYOUT_65_ansi( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* Keymap _FL: Function Layer + * ,----------------------------------------------------------------. + * | ~ | F1|F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|Del |INS | + * |----------------------------------------------------------------| + * |RESET| | ↑ | | | | | | | | | | | | | + * |------------------------------------------------------- -----| + * | | ← | ↓ | → | | | | | | | | | | | | + * |----------------------------------------------------------------| + * |HUI |SAI|VAI|RGBMOD| | | | | | | |Play |V+ |Mut | + * |----------------------------------------------------------------| + * |HUD |SAD |VAD | RGB_Tog | | | | | + * `----------------------------------------------------------------' + */ + [_FL] = LAYOUT_65_ansi( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS, + RESET, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_VOLU, KC_MUTE, + RGB_HUD, RGB_SAD, RGB_VAD, RGB_TOG, _______, KC_TRNS, _______, KC_MPRV, KC_VOLD, KC_MNXT + ), +}; diff --git a/keyboards/draytronics/elise/keymaps/default_iso/keymap.c b/keyboards/draytronics/elise/keymaps/default_iso/keymap.c new file mode 100644 index 000000000000..a51272a35715 --- /dev/null +++ b/keyboards/draytronics/elise/keymaps/default_iso/keymap.c @@ -0,0 +1,68 @@ +/*Copyright 2021 Blake Drayson / Draytronics + +Contact info@draytronics.co.uk + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum custom_layers { + _BL, + _FL, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: (Base Layer) Default Layer + * ,----------------------------------------------------------------. + * |Esc | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |Home| + * |----------------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| |PgUp| + * |------------------------------------------------------- -----| + * |CAPS | A| S| D| F| G| H| J| K| L| ;| '| #|Entr|PgDn| + * |----------------------------------------------------------------| + * |Shift| \ | Z| X| C| V| B| N| M| ,| .| /|RShif| ↑ |End | + * |----------------------------------------------------------------| + * |Ctrl|Win |Alt | Space |RAlt|RCtrl|Fn| ← | ↓ | → | + * `----------------------------------------------------------------' + */ + [_BL] = LAYOUT_65_iso( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* Keymap _FL1: Function Layer 1 + * ,----------------------------------------------------------------. + * |~ `| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| Delete| Ins| + * |----------------------------------------------------------------| + * |RESET| | ↑ | | | | | | | | | | | | | + * |------------------------------------------------------- -----| + * | | ← | ↓ | → | | | | | | | | | | | | + * |----------------------------------------------------------------| + * |HUI |SAI|VAI |RGBMOD| | | | | | | | |Play|V+|Mut| + * |----------------------------------------------------------------| + * |HUD |SAD |VAD | RGB_Tog | | | | | + * `----------------------------------------------------------------' + */ + [_FL] = LAYOUT_65_iso( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS, + RESET, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_VOLU, KC_MUTE, + RGB_HUD, RGB_SAD, RGB_VAD, RGB_TOG, _______, _______, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT + ) +}; diff --git a/keyboards/draytronics/elise/readme.md b/keyboards/draytronics/elise/readme.md new file mode 100644 index 000000000000..278bc1065647 --- /dev/null +++ b/keyboards/draytronics/elise/readme.md @@ -0,0 +1,32 @@ +# ELISE + +![elise](https://www.draytronics.co.uk/wp-content/uploads/2021/04/repository-open-graph-template.png) + +A open source, low cost 65% keyboard PCB with USB-C, ESD protection, RGB underglow and XD68 case / plate compatability. Designed in the UK. +More info / sales / PCB designs available at [draytronics.co.uk/elise](https://draytronics.co.uk) + +* Keyboard Maintainer: [Blake Drayson](https://github.com/ghostseven) +* Hardware Supported: ELISE PCB / ATMega32U4 +* Hardware Availability: [draytronics.co.uk](https://draytronics.co.uk) + + +Entering DFU mode (to allow flashing): + + - Pressing the reset button on the back of the board when it is plugged in will enter DFU. + - Holding down the ESC key whilst plugging in the keyboard will enter DFU. + - If you have one of the provided keymaps flashed, then pressing FN-Tab will enter DFU. + +Make example for this keyboard (after setting up your build environment): + + make draytronics/elise:default + +Flashing example for this keyboard: + + make draytronics/elise: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). + + +![elise-pcb-top](https://www.draytronics.co.uk/wp-content/uploads/2021/04/Draytronics-Elise-PCB-V1-top.png) + +![elise-pcb-bot](https://www.draytronics.co.uk/wp-content/uploads/2021/04/Draytronics-Elise-PCB-V1-bottom.png) diff --git a/keyboards/draytronics/elise/rules.mk b/keyboards/draytronics/elise/rules.mk new file mode 100644 index 000000000000..cef3e746598d --- /dev/null +++ b/keyboards/draytronics/elise/rules.mk @@ -0,0 +1,21 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# 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 = 65_ansi 65_iso diff --git a/keyboards/draytronics/elise_v2/config.h b/keyboards/draytronics/elise_v2/config.h new file mode 100644 index 000000000000..931125e11735 --- /dev/null +++ b/keyboards/draytronics/elise_v2/config.h @@ -0,0 +1,79 @@ +/*Copyright 2021 Blake Drayson / Draytronics + +Contact info@draytronics.co.uk + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4454 //DT for DrayTronics +#define PRODUCT_ID 0x454C //EL for Elise +#define DEVICE_VER 0x0200 //Version 2 +#define MANUFACTURER Draytronics +#define PRODUCT ELISE + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * 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 { B2,B3, B1, F0, F1} +#define MATRIX_COL_PINS { F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, D2, D3, D5} +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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 + +// ws2812 options +#define RGB_DI_PIN D1 // pin the DI on the ws2812 is hooked-up to +#ifdef RGB_DI_PIN + #define RGBLED_NUM 16 + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ + #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ + /*== all animations enable ==*/ +#define RGBLIGHT_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 +#endif diff --git a/keyboards/draytronics/elise_v2/elise_v2.c b/keyboards/draytronics/elise_v2/elise_v2.c new file mode 100755 index 000000000000..f153d7a34115 --- /dev/null +++ b/keyboards/draytronics/elise_v2/elise_v2.c @@ -0,0 +1,18 @@ +/*Copyright 2021 Blake Drayson / Draytronics + +Contact info@draytronics.co.uk + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "elise_v2.h" diff --git a/keyboards/draytronics/elise_v2/elise_v2.h b/keyboards/draytronics/elise_v2/elise_v2.h new file mode 100755 index 000000000000..750d651a238c --- /dev/null +++ b/keyboards/draytronics/elise_v2/elise_v2.h @@ -0,0 +1,135 @@ +/*Copyright 2021 Blake Drayson / Draytronics + +Contact info@draytronics.co.uk + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#define _x_ KC_NO + +#include "quantum.h" + +#define LAYOUT_65_ansi( \ + 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, K2D, K2E, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + 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, _x_, K2D, K2E }, \ +{ K30, _x_, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \ +{ K40, K41, K42, _x_, _x_, K45, _x_, _x_, _x_, K49, K4A, K4B, K4C, K4D, K4E} \ +} + +#define LAYOUT_65_ansi_rwkl( \ + 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, K2D, K2E, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K40, K41, K42, K45, K49, 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, _x_, K2D, K2E }, \ +{ K30, _x_, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \ +{ K40, K41, K42, _x_, _x_, K45, _x_, _x_, _x_, K49, _x_, K4B, K4C, K4D, K4E} \ +} + +#define LAYOUT_65_ansi_lwkl( \ + 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, K2D, K2E, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K40, 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, _x_, K2D, K2E }, \ +{ K30, _x_, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \ +{ K40, _x_, K42, _x_, _x_, K45, _x_, _x_, _x_, K49, K4A, K4B, K4C, K4D, K4E} \ +} + +#define LAYOUT_65_ansi_wkl( \ + 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, K2D, K2E, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K40, K42, K45, K49, 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, _x_, K2D, K2E }, \ +{ K30, _x_, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \ +{ K40, _x_, K42, _x_, _x_, K45, _x_, _x_, _x_, K49, _x_, K4B, K4C, K4D, K4E} \ +} + +#define LAYOUT_65_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, K2D, K1D, K2E, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + 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, _x_, K2D, K2E }, \ +{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \ +{ K40, K41, K42, _x_, _x_, K45, _x_, _x_, _x_, K49, K4A, K4B, K4C, K4D, K4E} \ +} + +#define LAYOUT_65_iso_rwkl( \ + 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, K2D, K1D, K2E, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K40, K41, K42, K45, K49, 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, _x_, K2D, K2E }, \ +{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \ +{ K40, K41, K42, _x_, _x_, K45, _x_, _x_, _x_, K49, _x_, K4B, K4C, K4D, K4E} \ +} + +#define LAYOUT_65_iso_lwkl( \ + 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, K2D, K1D, K2E, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K40, 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, _x_, K2D, K2E }, \ +{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \ +{ K40, _x_, K42, _x_, _x_, K45, _x_, _x_, _x_, K49, K4A, K4B, K4C, K4D, K4E} \ +} + +#define LAYOUT_65_iso_wkl( \ + 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, K2D, K1D, K2E, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K40, K42, K45, K49, 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, _x_, K2D, K2E }, \ +{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \ +{ K40, _x_, K42, _x_, _x_, K45, _x_, _x_, _x_, K49, _x_, K4B, K4C, K4D, K4E} \ +} diff --git a/keyboards/draytronics/elise_v2/info.json b/keyboards/draytronics/elise_v2/info.json new file mode 100644 index 000000000000..9e391ad1dbeb --- /dev/null +++ b/keyboards/draytronics/elise_v2/info.json @@ -0,0 +1,619 @@ +{ + "keyboard_name": "Draytronics ELISE V2", + "url": "https://www.draytronics.co.uk/elisev2", + "maintainer": "ghostseven", + "layout_aliases": { + "LAYOUT_65_ansi_right_lrg": "LAYOUT_65_ansi_rwkl", + "LAYOUT_65_ansi_left_lrg": "LAYOUT_65_ansi_lwkl", + "LAYOUT_65_ansi_lrg": "LAYOUT_65_ansi_wkl", + "LAYOUT_65_iso_right_lrg": "LAYOUT_65_iso_rwkl", + "LAYOUT_65_iso_left_lrg": "LAYOUT_65_iso_lwkl", + "LAYOUT_65_iso_lrg": "LAYOUT_65_iso_wkl" + }, + "layouts": { + "LAYOUT_65_ansi": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1", "x":1, "y":0}, + {"label":"2", "x":2, "y":0}, + {"label":"3", "x":3, "y":0}, + {"label":"4", "x":4, "y":0}, + {"label":"5", "x":5, "y":0}, + {"label":"6", "x":6, "y":0}, + {"label":"7", "x":7, "y":0}, + {"label":"8", "x":8, "y":0}, + {"label":"9", "x":9, "y":0}, + {"label":"10", "x":10, "y":0}, + {"label":"-", "x":11, "y":0}, + {"label":"=", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + {"label":"~", "x":15, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"[", "x":11.5, "y":1}, + {"label":"]", "x":12.5, "y":1}, + {"label":"\\", "x":13.5, "y":1, "w":1.5}, + {"label":"Delete", "x":15, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";", "x":10.75, "y":2}, + {"label":"'", "x":11.75, "y":2}, + {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + {"label":"PgUp", "x":15, "y":2}, + + {"label":"Shift", "x":0, "y":3, "w":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",", "x":9.25, "y":3}, + {"label":".", "x":10.25, "y":3}, + {"label":"/", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"\u2191", "x":14, "y":3}, + {"label":"PgDn", "x":15, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"Win", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space", "x":3.75, "y":4, "w":6.25}, + {"label":"Alt", "x":10, "y":4}, + {"label":"Fn", "x":11, "y":4}, + {"label":"Ctrl", "x":12, "y":4}, + {"label":"\u2190", "x":13, "y":4}, + {"label":"\u2193", "x":14, "y":4}, + {"label":"\u2192", "x":15, "y":4} + ] + }, + "LAYOUT_65_ansi_rwkl": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1", "x":1, "y":0}, + {"label":"2", "x":2, "y":0}, + {"label":"3", "x":3, "y":0}, + {"label":"4", "x":4, "y":0}, + {"label":"5", "x":5, "y":0}, + {"label":"6", "x":6, "y":0}, + {"label":"7", "x":7, "y":0}, + {"label":"8", "x":8, "y":0}, + {"label":"9", "x":9, "y":0}, + {"label":"10", "x":10, "y":0}, + {"label":"-", "x":11, "y":0}, + {"label":"=", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + {"label":"~", "x":15, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"[", "x":11.5, "y":1}, + {"label":"]", "x":12.5, "y":1}, + {"label":"\\", "x":13.5, "y":1, "w":1.5}, + {"label":"Delete", "x":15, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";", "x":10.75, "y":2}, + {"label":"'", "x":11.75, "y":2}, + {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + {"label":"PgUp", "x":15, "y":2}, + + {"label":"Shift", "x":0, "y":3, "w":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",", "x":9.25, "y":3}, + {"label":".", "x":10.25, "y":3}, + {"label":"/", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"\u2191", "x":14, "y":3}, + {"label":"PgDn", "x":15, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"Win", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space", "x":3.75, "y":4, "w":6.25}, + {"label":"Alt", "x":10, "y":4, "w":1.5}, + {"label":"Fn", "x":11.5, "y":4, "w":1.5}, + {"label":"\u2190", "x":13, "y":4}, + {"label":"\u2193", "x":14, "y":4}, + {"label":"\u2192", "x":15, "y":4} + ] + }, + "LAYOUT_65_ansi_lwkl": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1", "x":1, "y":0}, + {"label":"2", "x":2, "y":0}, + {"label":"3", "x":3, "y":0}, + {"label":"4", "x":4, "y":0}, + {"label":"5", "x":5, "y":0}, + {"label":"6", "x":6, "y":0}, + {"label":"7", "x":7, "y":0}, + {"label":"8", "x":8, "y":0}, + {"label":"9", "x":9, "y":0}, + {"label":"10", "x":10, "y":0}, + {"label":"-", "x":11, "y":0}, + {"label":"=", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + {"label":"~", "x":15, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"[", "x":11.5, "y":1}, + {"label":"]", "x":12.5, "y":1}, + {"label":"\\", "x":13.5, "y":1, "w":1.5}, + {"label":"Delete", "x":15, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";", "x":10.75, "y":2}, + {"label":"'", "x":11.75, "y":2}, + {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + {"label":"PgUp", "x":15, "y":2}, + + {"label":"Shift", "x":0, "y":3, "w":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",", "x":9.25, "y":3}, + {"label":".", "x":10.25, "y":3}, + {"label":"/", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"\u2191", "x":14, "y":3}, + {"label":"PgDn", "x":15, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.5}, + {"label":"Alt", "x":1.5, "y":4, "w":1.5}, + {"label":"Space", "x":3, "y":4, "w":7}, + {"label":"Alt", "x":10, "y":4}, + {"label":"Fn", "x":11, "y":4}, + {"label":"Ctrl", "x":12, "y":4}, + {"label":"\u2190", "x":13, "y":4}, + {"label":"\u2193", "x":14, "y":4}, + {"label":"\u2192", "x":15, "y":4} + ] + }, + "LAYOUT_65_ansi_wkl": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1", "x":1, "y":0}, + {"label":"2", "x":2, "y":0}, + {"label":"3", "x":3, "y":0}, + {"label":"4", "x":4, "y":0}, + {"label":"5", "x":5, "y":0}, + {"label":"6", "x":6, "y":0}, + {"label":"7", "x":7, "y":0}, + {"label":"8", "x":8, "y":0}, + {"label":"9", "x":9, "y":0}, + {"label":"10", "x":10, "y":0}, + {"label":"-", "x":11, "y":0}, + {"label":"=", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + {"label":"~", "x":15, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"[", "x":11.5, "y":1}, + {"label":"]", "x":12.5, "y":1}, + {"label":"\\", "x":13.5, "y":1, "w":1.5}, + {"label":"Delete", "x":15, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";", "x":10.75, "y":2}, + {"label":"'", "x":11.75, "y":2}, + {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + {"label":"PgUp", "x":15, "y":2}, + + {"label":"Shift", "x":0, "y":3, "w":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",", "x":9.25, "y":3}, + {"label":".", "x":10.25, "y":3}, + {"label":"/", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"\u2191", "x":14, "y":3}, + {"label":"PgDn", "x":15, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.5}, + {"label":"Alt", "x":1.5, "y":4, "w":1.5}, + {"label":"Space", "x":3, "y":4, "w":7}, + {"label":"Alt", "x":10, "y":4, "w":1.5}, + {"label":"Fn", "x":11.5, "y":4, "w":1.5}, + {"label":"\u2190", "x":13, "y":4}, + {"label":"\u2193", "x":14, "y":4}, + {"label":"\u2192", "x":15, "y":4} + ] + }, + "LAYOUT_65_iso": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1", "x":1, "y":0}, + {"label":"2", "x":2, "y":0}, + {"label":"3", "x":3, "y":0}, + {"label":"4", "x":4, "y":0}, + {"label":"5", "x":5, "y":0}, + {"label":"6", "x":6, "y":0}, + {"label":"7", "x":7, "y":0}, + {"label":"8", "x":8, "y":0}, + {"label":"9", "x":9, "y":0}, + {"label":"10", "x":10, "y":0}, + {"label":"-", "x":11, "y":0}, + {"label":"=", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + {"label":"~", "x":15, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"[", "x":11.5, "y":1}, + {"label":"]", "x":12.5, "y":1}, + {"label":"Delete", "x":15, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";", "x":10.75, "y":2}, + {"label":"'", "x":11.75, "y":2}, + {"label":"#", "x":12.75, "y":2}, + {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, + {"label":"PgUp", "x":15, "y":2}, + + {"label":"Shift", "x":0, "y":3, "w":1.25}, + {"label":"\\", "x":1.25, "y":3}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",", "x":9.25, "y":3}, + {"label":".", "x":10.25, "y":3}, + {"label":"/", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"\u2191", "x":14, "y":3}, + {"label":"PgDn", "x":15, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"Win", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space", "x":3.75, "y":4, "w":6.25}, + {"label":"Alt", "x":10, "y":4}, + {"label":"Fn", "x":11, "y":4}, + {"label":"Ctrl", "x":12, "y":4}, + {"label":"\u2190", "x":13, "y":4}, + {"label":"\u2193", "x":14, "y":4}, + {"label":"\u2192", "x":15, "y":4} + ] + }, + "LAYOUT_65_iso_rwkl": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1", "x":1, "y":0}, + {"label":"2", "x":2, "y":0}, + {"label":"3", "x":3, "y":0}, + {"label":"4", "x":4, "y":0}, + {"label":"5", "x":5, "y":0}, + {"label":"6", "x":6, "y":0}, + {"label":"7", "x":7, "y":0}, + {"label":"8", "x":8, "y":0}, + {"label":"9", "x":9, "y":0}, + {"label":"10", "x":10, "y":0}, + {"label":"-", "x":11, "y":0}, + {"label":"=", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + {"label":"~", "x":15, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"[", "x":11.5, "y":1}, + {"label":"]", "x":12.5, "y":1}, + {"label":"Delete", "x":15, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";", "x":10.75, "y":2}, + {"label":"'", "x":11.75, "y":2}, + {"label":"#", "x":12.75, "y":2}, + {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, + {"label":"PgUp", "x":15, "y":2}, + + {"label":"Shift", "x":0, "y":3, "w":1.25}, + {"label":"\\", "x":1.25, "y":3}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",", "x":9.25, "y":3}, + {"label":".", "x":10.25, "y":3}, + {"label":"/", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"\u2191", "x":14, "y":3}, + {"label":"PgDn", "x":15, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"Win", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space", "x":3.75, "y":4, "w":6.25}, + {"label":"Alt", "x":10, "y":4, "w":1.5}, + {"label":"Fn", "x":11.5, "y":4, "w":1.5}, + {"label":"\u2190", "x":13, "y":4}, + {"label":"\u2193", "x":14, "y":4}, + {"label":"\u2192", "x":15, "y":4} + ] + }, + "LAYOUT_65_iso_lwkl": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1", "x":1, "y":0}, + {"label":"2", "x":2, "y":0}, + {"label":"3", "x":3, "y":0}, + {"label":"4", "x":4, "y":0}, + {"label":"5", "x":5, "y":0}, + {"label":"6", "x":6, "y":0}, + {"label":"7", "x":7, "y":0}, + {"label":"8", "x":8, "y":0}, + {"label":"9", "x":9, "y":0}, + {"label":"10", "x":10, "y":0}, + {"label":"-", "x":11, "y":0}, + {"label":"=", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + {"label":"~", "x":15, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"[", "x":11.5, "y":1}, + {"label":"]", "x":12.5, "y":1}, + {"label":"Delete", "x":15, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";", "x":10.75, "y":2}, + {"label":"'", "x":11.75, "y":2}, + {"label":"#", "x":12.75, "y":2}, + {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, + {"label":"PgUp", "x":15, "y":2}, + + {"label":"Shift", "x":0, "y":3, "w":1.25}, + {"label":"\\", "x":1.25, "y":3}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",", "x":9.25, "y":3}, + {"label":".", "x":10.25, "y":3}, + {"label":"/", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"\u2191", "x":14, "y":3}, + {"label":"PgDn", "x":15, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.5}, + {"label":"Alt", "x":1.5, "y":4, "w":1.5}, + {"label":"Space", "x":3, "y":4, "w":7}, + {"label":"Alt", "x":10, "y":4}, + {"label":"Fn", "x":11, "y":4}, + {"label":"Ctrl", "x":12, "y":4}, + {"label":"\u2190", "x":13, "y":4}, + {"label":"\u2193", "x":14, "y":4}, + {"label":"\u2192", "x":15, "y":4} + ] + }, + "LAYOUT_65_iso_wkl": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1", "x":1, "y":0}, + {"label":"2", "x":2, "y":0}, + {"label":"3", "x":3, "y":0}, + {"label":"4", "x":4, "y":0}, + {"label":"5", "x":5, "y":0}, + {"label":"6", "x":6, "y":0}, + {"label":"7", "x":7, "y":0}, + {"label":"8", "x":8, "y":0}, + {"label":"9", "x":9, "y":0}, + {"label":"10", "x":10, "y":0}, + {"label":"-", "x":11, "y":0}, + {"label":"=", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + {"label":"~", "x":15, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"[", "x":11.5, "y":1}, + {"label":"]", "x":12.5, "y":1}, + {"label":"Delete", "x":15, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";", "x":10.75, "y":2}, + {"label":"'", "x":11.75, "y":2}, + {"label":"#", "x":12.75, "y":2}, + {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, + {"label":"PgUp", "x":15, "y":2}, + + {"label":"Shift", "x":0, "y":3, "w":1.25}, + {"label":"\\", "x":1.25, "y":3}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",", "x":9.25, "y":3}, + {"label":".", "x":10.25, "y":3}, + {"label":"/", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"\u2191", "x":14, "y":3}, + {"label":"PgDn", "x":15, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.5}, + {"label":"Alt", "x":1.5, "y":4, "w":1.5}, + {"label":"Space", "x":3, "y":4, "w":7}, + {"label":"Alt", "x":10, "y":4, "w":1.5}, + {"label":"Fn", "x":11.5, "y":4, "w":1.5}, + {"label":"\u2190", "x":13, "y":4}, + {"label":"\u2193", "x":14, "y":4}, + {"label":"\u2192", "x":15, "y":4} + ] + } + } +} diff --git a/keyboards/draytronics/elise_v2/keymaps/blake_iso/keymap.c b/keyboards/draytronics/elise_v2/keymaps/blake_iso/keymap.c new file mode 100644 index 000000000000..65e0629e1dc5 --- /dev/null +++ b/keyboards/draytronics/elise_v2/keymaps/blake_iso/keymap.c @@ -0,0 +1,68 @@ +/*Copyright 2021 Blake Drayson / Draytronics + +Contact info@draytronics.co.uk + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum custom_layers { + _BL, + _FL, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: (Base Layer) Default Layer + * ,----------------------------------------------------------------. + * |Esc | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |Home| + * |----------------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| |PgUp| + * |------------------------------------------------------- -----| + * |CAPS | A| S| D| F| G| H| J| K| L| ;| '| #|Entr|PgDn| + * |----------------------------------------------------------------| + * |Shift| \ | Z| X| C| V| B| N| M| ,| .| /|RShif| ↑ |End | + * |----------------------------------------------------------------| + * |Ctrl|Win |Alt | Space |RAlt|RCtrl|Fn| ← | ↓ | → | + * `----------------------------------------------------------------' + */ + [_BL] = LAYOUT_65_iso( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RALT, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* Keymap _FL1: Function Layer 1 + * ,----------------------------------------------------------------. + * |~ `| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| Delete| Ins| + * |----------------------------------------------------------------| + * |RESET| | ↑ | | | | | | | | | | | | | + * |------------------------------------------------------- -----| + * | | ← | ↓ | → | | | | | | | | | | | | + * |----------------------------------------------------------------| + * |HUI |SAI|VAI |RGBMOD| | | | | | | | |Play|V+|Mut| + * |----------------------------------------------------------------| + * |HUD |SAD |VAD | RGB_Tog | | | | | + * `----------------------------------------------------------------' + */ + [_FL] = LAYOUT_65_iso( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS, + RESET, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_VOLU, KC_MUTE, + RGB_HUD, RGB_SAD, RGB_VAD, RGB_TOG, _______, _______, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT + ) +}; diff --git a/keyboards/draytronics/elise_v2/keymaps/default/keymap.c b/keyboards/draytronics/elise_v2/keymaps/default/keymap.c new file mode 100644 index 000000000000..62b4b576dd11 --- /dev/null +++ b/keyboards/draytronics/elise_v2/keymaps/default/keymap.c @@ -0,0 +1,67 @@ +/*Copyright 2021 Blake Drayson / Draytronics + +Contact info@draytronics.co.uk + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +enum custom_layers { + _BL, + _FL, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: (Base Layer) Default Layer + * ,----------------------------------------------------------------. + * |Esc | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |Home| + * |----------------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ |PgUp| + * |----------------------------------------------------------------| + * |CAPS | A| S| D| F| G| H| J| K| L| ;| '|Return |PgDn| + * |----------------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |Up |End | + * |----------------------------------------------------------------| + * |Ctrl|Win |Alt | Space |RAlt|FN|RCtrl| ← | ↓ | → | + * `----------------------------------------------------------------' + */ + [_BL] = LAYOUT_65_ansi( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_NUHS, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* Keymap _FL: Function Layer + * ,----------------------------------------------------------------. + * | ~ | F1|F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|Del |INS | + * |----------------------------------------------------------------| + * |RESET| | ↑ | | | | | | | | | | | | | + * |------------------------------------------------------- -----| + * | | ← | ↓ | → | | | | | | | | | | | | + * |----------------------------------------------------------------| + * |HUI |SAI|VAI|RGBMOD| | | | | | | |Play |V+ |Mut | + * |----------------------------------------------------------------| + * |HUD |SAD |VAD | RGB_Tog | | | | | + * `----------------------------------------------------------------' + */ + [_FL] = LAYOUT_65_ansi( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS, + RESET, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_VOLU, KC_MUTE, + RGB_HUD, RGB_SAD, RGB_VAD, RGB_TOG, _______, KC_TRNS, _______, KC_MPRV, KC_VOLD, KC_MNXT + ), +}; diff --git a/keyboards/draytronics/elise_v2/keymaps/default_iso/keymap.c b/keyboards/draytronics/elise_v2/keymaps/default_iso/keymap.c new file mode 100644 index 000000000000..a51272a35715 --- /dev/null +++ b/keyboards/draytronics/elise_v2/keymaps/default_iso/keymap.c @@ -0,0 +1,68 @@ +/*Copyright 2021 Blake Drayson / Draytronics + +Contact info@draytronics.co.uk + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum custom_layers { + _BL, + _FL, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: (Base Layer) Default Layer + * ,----------------------------------------------------------------. + * |Esc | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |Home| + * |----------------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| |PgUp| + * |------------------------------------------------------- -----| + * |CAPS | A| S| D| F| G| H| J| K| L| ;| '| #|Entr|PgDn| + * |----------------------------------------------------------------| + * |Shift| \ | Z| X| C| V| B| N| M| ,| .| /|RShif| ↑ |End | + * |----------------------------------------------------------------| + * |Ctrl|Win |Alt | Space |RAlt|RCtrl|Fn| ← | ↓ | → | + * `----------------------------------------------------------------' + */ + [_BL] = LAYOUT_65_iso( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* Keymap _FL1: Function Layer 1 + * ,----------------------------------------------------------------. + * |~ `| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| Delete| Ins| + * |----------------------------------------------------------------| + * |RESET| | ↑ | | | | | | | | | | | | | + * |------------------------------------------------------- -----| + * | | ← | ↓ | → | | | | | | | | | | | | + * |----------------------------------------------------------------| + * |HUI |SAI|VAI |RGBMOD| | | | | | | | |Play|V+|Mut| + * |----------------------------------------------------------------| + * |HUD |SAD |VAD | RGB_Tog | | | | | + * `----------------------------------------------------------------' + */ + [_FL] = LAYOUT_65_iso( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS, + RESET, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_VOLU, KC_MUTE, + RGB_HUD, RGB_SAD, RGB_VAD, RGB_TOG, _______, _______, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT + ) +}; diff --git a/keyboards/draytronics/elise_v2/readme.md b/keyboards/draytronics/elise_v2/readme.md new file mode 100644 index 000000000000..32730f930a6f --- /dev/null +++ b/keyboards/draytronics/elise_v2/readme.md @@ -0,0 +1,34 @@ +# ELISE V2 + +![elise](https://www.draytronics.co.uk/wp-content/uploads/2021/08/repository-open-graph-template-v2.png) + +***V2 now includes an tweaked design and 16 RGB underglow LEDs for a more consistent and even underglow effect (up from 7 on the original)*** + +A open source, low cost 65% keyboard PCB with USB-C, ESD protection, RGB underglow and XD68 case / plate compatability. Designed in the UK. +More info / sales / PCB designs available at [draytronics.co.uk/elise](https://draytronics.co.uk) + +* Keyboard Maintainer: [Blake Drayson](https://github.com/ghostseven) +* Hardware Supported: ELISE PCB / ATMega32U4 +* Hardware Availability: [draytronics.co.uk](https://draytronics.co.uk) + + +Entering DFU mode (to allow flashing): + + - Pressing the reset button on the back of the board when it is plugged in will enter DFU. + - Holding down the ESC key whilst plugging in the keyboard will enter DFU. + - If you have one of the provided keymaps flashed, then pressing FN-Tab will enter DFU. + +Make example for this keyboard (after setting up your build environment): + + make draytronics/elise_v2:default + +Flashing example for this keyboard: + + make draytronics/elise_v2: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). + + +![elise-pcb-top](https://www.draytronics.co.uk/wp-content/uploads/2021/08/Draytronics-Elise-PCB-V2-top.png) + +![elise-pcb-bot](https://www.draytronics.co.uk/wp-content/uploads/2021/08/Draytronics-Elise-PCB-V2-bottom.png) diff --git a/keyboards/draytronics/elise_v2/rules.mk b/keyboards/draytronics/elise_v2/rules.mk new file mode 100644 index 000000000000..cef3e746598d --- /dev/null +++ b/keyboards/draytronics/elise_v2/rules.mk @@ -0,0 +1,21 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# 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 = 65_ansi 65_iso diff --git a/keyboards/draytronics/scarlet/info.json b/keyboards/draytronics/scarlet/info.json index 42066162eb53..2e3f4f4b88be 100644 --- a/keyboards/draytronics/scarlet/info.json +++ b/keyboards/draytronics/scarlet/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Draytronics SCARLET", "url": "https://www.draytronics.co.uk/scarlet", "maintainer": "ghostseven", - "width": 4, - "height": 5, "layouts": { "LAYOUT_numpad_5x4": { "layout": [ diff --git a/keyboards/draytronics/scarlet/rules.mk b/keyboards/draytronics/scarlet/rules.mk index 43f524034aa8..3845d2980e96 100644 --- a/keyboards/draytronics/scarlet/rules.mk +++ b/keyboards/draytronics/scarlet/rules.mk @@ -5,23 +5,20 @@ MCU = atmega32a F_CPU = 16000000 # Bootloader selection -BOOTLOADER = USBasp +BOOTLOADER = usbasploader # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 LAYOUTS = numpad_5x4 diff --git a/keyboards/dtisaac/cg108/cg108.c b/keyboards/dtisaac/cg108/cg108.c new file mode 100644 index 000000000000..c2a7254aa89c --- /dev/null +++ b/keyboards/dtisaac/cg108/cg108.c @@ -0,0 +1,17 @@ +/* Copyright 2021 DTIsaac + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "cg108.h" diff --git a/keyboards/dtisaac/cg108/cg108.h b/keyboards/dtisaac/cg108/cg108.h new file mode 100644 index 000000000000..35321933928a --- /dev/null +++ b/keyboards/dtisaac/cg108/cg108.h @@ -0,0 +1,49 @@ +/* Copyright 2021 DTIsaac + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +// 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 \ +) { \ + { 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 } \ +} diff --git a/keyboards/dtisaac/cg108/config.h b/keyboards/dtisaac/cg108/config.h new file mode 100644 index 000000000000..7ce2de42b8b9 --- /dev/null +++ b/keyboards/dtisaac/cg108/config.h @@ -0,0 +1,62 @@ +/* +Copyright 2021 DTIsaac + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4454 // DT +#define PRODUCT_ID 0x4973 // Is +#define DEVICE_VER 0x0002 +#define MANUFACTURER DTIsaac +#define PRODUCT CG108 + +/* key matrix size */ +#define MATRIX_ROWS 11 +#define MATRIX_COLS 11 + +/* + * 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) + * + */ +/* key matrix pins */ +#define MATRIX_ROW_PINS { F4, F1, F0, F5, F6, F7, D4, D5, D3, D2, D0 } +#define MATRIX_COL_PINS { C7, C6, B4, D7, B3, B2, B0, E6, B1, D1, D6 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +#define LED_NUM_LOCK_PIN B5 +#define LED_CAPS_LOCK_PIN B6 +#define LED_SCROLL_LOCK_PIN B7 +#define LED_PIN_ON_STATE 0 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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/dtisaac/cg108/info.json b/keyboards/dtisaac/cg108/info.json new file mode 100644 index 000000000000..0ecc1764f680 --- /dev/null +++ b/keyboards/dtisaac/cg108/info.json @@ -0,0 +1,130 @@ +{ + "keyboard_name": "CG108", + "url": "", + "maintainer": "daotakisaac", + "width": 22.5, + "height": 6.5, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"K000", "x":0, "y":0}, + {"label":"K001", "x":2, "y":0}, + {"label":"K002", "x":3, "y":0}, + {"label":"K003", "x":4, "y":0}, + {"label":"K300", "x":5, "y":0}, + {"label":"K301", "x":6.5, "y":0}, + {"label":"K302", "x":7.5, "y":0}, + {"label":"K303", "x":8.5, "y":0}, + {"label":"K306", "x":9.5, "y":0}, + {"label":"K307", "x":11, "y":0}, + {"label":"K308", "x":12, "y":0}, + {"label":"K309", "x":13, "y":0}, + {"label":"K310", "x":14, "y":0}, + {"label":"K004", "x":15.25, "y":0}, + {"label":"K005", "x":16.25, "y":0}, + {"label":"K006", "x":17.25, "y":0}, + {"label":"K007", "x":18.5, "y":0}, + {"label":"K008", "x":19.5, "y":0}, + {"label":"K009", "x":20.5, "y":0}, + {"label":"K010", "x":21.5, "y":0}, + {"label":"K100", "x":0, "y":1.5}, + {"label":"K101", "x":1, "y":1.5}, + {"label":"K102", "x":2, "y":1.5}, + {"label":"K103", "x":3, "y":1.5}, + {"label":"K400", "x":4, "y":1.5}, + {"label":"K401", "x":5, "y":1.5}, + {"label":"K402", "x":6, "y":1.5}, + {"label":"K403", "x":7, "y":1.5}, + {"label":"K404", "x":8, "y":1.5}, + {"label":"K405", "x":9, "y":1.5}, + {"label":"K406", "x":10, "y":1.5}, + {"label":"K407", "x":11, "y":1.5}, + {"label":"K408", "x":12, "y":1.5}, + {"label":"K409", "x":13, "y":1.5}, + {"label":"K410", "x":14, "y":1.5}, + {"label":"K104", "x":15.25, "y":1.5}, + {"label":"K105", "x":16.25, "y":1.5}, + {"label":"K106", "x":17.25, "y":1.5}, + {"label":"K107", "x":18.5, "y":1.5}, + {"label":"K108", "x":19.5, "y":1.5}, + {"label":"K109", "x":20.5, "y":1.5}, + {"label":"K110", "x":21.5, "y":1.5}, + {"label":"K200", "x":0, "y":2.5, "w":1.5}, + {"label":"K201", "x":1.5, "y":2.5}, + {"label":"K202", "x":2.5, "y":2.5}, + {"label":"K203", "x":3.5, "y":2.5}, + {"label":"K500", "x":4.5, "y":2.5}, + {"label":"K501", "x":5.5, "y":2.5}, + {"label":"K502", "x":6.5, "y":2.5}, + {"label":"K503", "x":7.5, "y":2.5}, + {"label":"K505", "x":8.5, "y":2.5}, + {"label":"K506", "x":9.5, "y":2.5}, + {"label":"K507", "x":10.5, "y":2.5}, + {"label":"K508", "x":11.5, "y":2.5}, + {"label":"K509", "x":12.5, "y":2.5}, + {"label":"K510", "x":13.5, "y":2.5, "w":1.5}, + {"label":"K204", "x":15.25, "y":2.5}, + {"label":"K205", "x":16.25, "y":2.5}, + {"label":"K206", "x":17.25, "y":2.5}, + {"label":"K207", "x":18.5, "y":2.5}, + {"label":"K208", "x":19.5, "y":2.5}, + {"label":"K209", "x":20.5, "y":2.5}, + {"label":"K210", "x":21.5, "y":2.5}, + {"label":"K800", "x":0, "y":3.5, "w":1.75}, + {"label":"K801", "x":1.75, "y":3.5}, + {"label":"K802", "x":2.75, "y":3.5}, + {"label":"K803", "x":3.75, "y":3.5}, + {"label":"K600", "x":4.75, "y":3.5}, + {"label":"K601", "x":5.75, "y":3.5}, + {"label":"K602", "x":6.75, "y":3.5}, + {"label":"K603", "x":7.75, "y":3.5}, + {"label":"K606", "x":8.75, "y":3.5}, + {"label":"K607", "x":9.75, "y":3.5}, + {"label":"K608", "x":10.75, "y":3.5}, + {"label":"K609", "x":11.75, "y":3.5}, + {"label":"K610", "x":12.75, "y":3.5, "w":2.25}, + {"label":"K807", "x":18.5, "y":3.5}, + {"label":"K808", "x":19.5, "y":3.5}, + {"label":"K809", "x":20.5, "y":3.5}, + {"label":"K810", "x":21.5, "y":3.5}, + {"label":"K900", "x":0, "y":4.5, "w":1.25}, + {"label":"K901", "x":1.25, "y":4.5}, + {"label":"K902", "x":2.25, "y":4.5}, + {"label":"K903", "x":3.25, "y":4.5}, + {"label":"K700", "x":4.25, "y":4.5}, + {"label":"K701", "x":5.25, "y":4.5}, + {"label":"K702", "x":6.25, "y":4.5}, + {"label":"K703", "x":7.25, "y":4.5}, + {"label":"K705", "x":8.25, "y":4.5}, + {"label":"K706", "x":9.25, "y":4.5}, + {"label":"K707", "x":10.25, "y":4.5}, + {"label":"K708", "x":11.25, "y":4.5}, + {"label":"K709", "x":12.25, "y":4.5, "w":1.75}, + {"label":"K710", "x":14, "y":4.5}, + {"label":"K906", "x":16.25, "y":4.5}, + {"label":"K907", "x":18.5, "y":4.5}, + {"label":"K908", "x":19.5, "y":4.5}, + {"label":"K909", "x":20.5, "y":4.5}, + {"label":"K910", "x":21.5, "y":4.5}, + {"label":"KA00", "x":0, "y":5.5, "w":1.5}, + {"label":"KA01", "x":1.5, "y":5.5}, + {"label":"KA02", "x":2.5, "y":5.5, "w":1.5}, + {"label":"KA03", "x":4, "y":5.5}, + {"label":"K804", "x":5, "y":5.5, "w":2}, + {"label":"K805", "x":7, "y":5.5}, + {"label":"K806", "x":8, "y":5.5, "w":2}, + {"label":"K604", "x":10, "y":5.5}, + {"label":"K605", "x":11, "y":5.5, "w":1.5}, + {"label":"K904", "x":12.5, "y":5.5}, + {"label":"K905", "x":13.5, "y":5.5, "w":1.5}, + {"label":"KA04", "x":15.25, "y":5.5}, + {"label":"KA05", "x":16.25, "y":5.5}, + {"label":"KA06", "x":17.25, "y":5.5}, + {"label":"KA07", "x":18.5, "y":5.5}, + {"label":"KA08", "x":19.5, "y":5.5}, + {"label":"KA09", "x":20.5, "y":5.5}, + {"label":"KA10", "x":21.5, "y":5.5} + ] + } + } +} diff --git a/keyboards/dtisaac/cg108/keymaps/default/keymap.c b/keyboards/dtisaac/cg108/keymaps/default/keymap.c new file mode 100644 index 000000000000..b7658315c59d --- /dev/null +++ b/keyboards/dtisaac/cg108/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +/* Copyright 2021 DTIsaac + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_MPLY, KC_MPRV, KC_MNXT, KC_MUTE, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PCMM, KC_PDOT, KC_PENT + ) +}; \ No newline at end of file diff --git a/keyboards/dtisaac/cg108/keymaps/default/readme.md b/keyboards/dtisaac/cg108/keymaps/default/readme.md new file mode 100644 index 000000000000..48c74775db4a --- /dev/null +++ b/keyboards/dtisaac/cg108/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for CG108 diff --git a/keyboards/dtisaac/cg108/readme.md b/keyboards/dtisaac/cg108/readme.md new file mode 100644 index 000000000000..3bf38f768937 --- /dev/null +++ b/keyboards/dtisaac/cg108/readme.md @@ -0,0 +1,26 @@ +# CG108 + +![CG108](https://i.imgur.com/AUqkNhEh.jpg) + +A base full-size keyboard CG108 of DTIsaac + +* Keyboard Maintainer: [DTIsaac](https://github.com/daotakisaac) +* Hardware Supported: CG108 DTIsaac + +Make example for this keyboard (after setting up your build environment): + + make dtisaac/cg108:default + +Flashing example for this keyboard: + + make dtisaac/cg108:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `RESET` if it is available diff --git a/keyboards/dtisaac/cg108/rules.mk b/keyboards/dtisaac/cg108/rules.mk new file mode 100644 index 000000000000..c0beb17571b7 --- /dev/null +++ b/keyboards/dtisaac/cg108/rules.mk @@ -0,0 +1,20 @@ +# 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 +# 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 +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/dtisaac/dosa40rgb/config.h b/keyboards/dtisaac/dosa40rgb/config.h new file mode 100644 index 000000000000..c2c0ebd6d440 --- /dev/null +++ b/keyboards/dtisaac/dosa40rgb/config.h @@ -0,0 +1,113 @@ +/* +Copyright 2021 DTIsaac + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4454 // DT +#define PRODUCT_ID 0x4973 // Is +#define DEVICE_VER 0x0004 +#define MANUFACTURER DTIsaac +#define PRODUCT >_Dosa40 + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 11 + +/* + * 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 { B7, D7, F1, F0 } +#define MATRIX_COL_PINS { D1, D6, D3, D2, B6, C6, C7, F7, F6, F5, F4 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +#ifdef RGB_MATRIX_ENABLE +#define RGB_DI_PIN D0 +#define DRIVER_LED_TOTAL 42 +#define RGB_MATRIX_KEYPRESSES // reacts to keypresses +#define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses) +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define RGB_DISABLE_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 150 // 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 ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_FRACTAL +#define ENABLE_RGB_MATRIX_PIXEL_RAIN + +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN + +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +//#define DEBOUNCE 5 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/dtisaac/dosa40rgb/dosa40rgb.c b/keyboards/dtisaac/dosa40rgb/dosa40rgb.c new file mode 100644 index 000000000000..c46bfc291d96 --- /dev/null +++ b/keyboards/dtisaac/dosa40rgb/dosa40rgb.c @@ -0,0 +1,39 @@ +/* Copyright 2021 DTIsaac + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "dosa40rgb.h" + +#ifdef RGB_MATRIX_ENABLE +led_config_t g_led_config = { { + //Key Matrix to LED Index + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, + {22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12 }, + {23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33}, + {41, 40, 39, NO_LED, 38, NO_LED, 37, 36, 35, 34, 11} +}, { + //LED Index to Physical Positon + { 0, 0}, { 20, 0}, { 40, 0 }, { 61, 0 }, { 81, 0}, { 101, 0}, { 122, 0}, { 142, 0}, { 162, 0}, { 183, 0}, { 203, 0}, { 224, 0}, + {203, 21}, {183, 21}, {162,21 }, {142, 21}, {122,21}, { 101,21}, { 81 ,21}, { 61 ,21}, { 40 ,21}, { 20 ,21}, { 0 ,21}, + { 0, 42}, { 20, 42}, { 40,42 }, { 61, 42}, { 81,42}, { 101,42}, { 122,42}, { 142,42}, { 162,42}, { 183,42}, { 203,42}, + {203, 64}, {183, 64}, {162,64 }, {122, 64}, { 81,64}, { 40, 64}, { 20, 64}, { 0, 64}, +}, { + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 1, 1, 1, 1, 1, 1, 1, 1, +} }; + +#endif \ No newline at end of file diff --git a/keyboards/dtisaac/dosa40rgb/dosa40rgb.h b/keyboards/dtisaac/dosa40rgb/dosa40rgb.h new file mode 100644 index 000000000000..659e42f8f2cd --- /dev/null +++ b/keyboards/dtisaac/dosa40rgb/dosa40rgb.h @@ -0,0 +1,40 @@ +/* Copyright 2021 DTIsaac + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k41, \ + 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 \ +) \ +{ \ + {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, KC_NO,k36, KC_NO, k37, k38, k39, k40, k41}, \ +} diff --git a/keyboards/dtisaac/dosa40rgb/info.json b/keyboards/dtisaac/dosa40rgb/info.json new file mode 100644 index 000000000000..2feed40d4202 --- /dev/null +++ b/keyboards/dtisaac/dosa40rgb/info.json @@ -0,0 +1,53 @@ +{ + "keyboard_name": ">_Dosa40rgb", + "url": "", + "maintainer": "DTIsaac", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"Q", "x":1, "y":0}, + {"label":"W", "x":2, "y":0}, + {"label":"E", "x":3, "y":0}, + {"label":"R", "x":4, "y":0}, + {"label":"T", "x":5, "y":0}, + {"label":"Y", "x":6, "y":0}, + {"label":"U", "x":7, "y":0}, + {"label":"I", "x":8, "y":0}, + {"label":"O", "x":9, "y":0}, + {"label":"P", "x":10, "y":0}, + {"label":"BSPC", "x":11, "y":0}, + {"label":"Caps Lock", "x":0, "y":1, "w":1.5}, + {"label":"A", "x":1.5, "y":1}, + {"label":"S", "x":2.5, "y":1}, + {"label":"D", "x":3.5, "y":1}, + {"label":"F", "x":4.5, "y":1}, + {"label":"G", "x":5.5, "y":1}, + {"label":"H", "x":6.5, "y":1}, + {"label":"J", "x":7.5, "y":1}, + {"label":"K", "x":8.5, "y":1}, + {"label":"L", "x":9.5, "y":1}, + {"label":"Enter", "x":10.5, "y":1, "w":1.5}, + {"label":"Shift", "x":0, "y":2, "w":1.75}, + {"label":"Z", "x":1.75, "y":2}, + {"label":"X", "x":2.75, "y":2}, + {"label":"C", "x":3.75, "y":2}, + {"label":"V", "x":4.75, "y":2}, + {"label":"B", "x":5.75, "y":2}, + {"label":"N", "x":6.75, "y":2}, + {"label":"M", "x":7.75, "y":2}, + {"label":",", "x":8.75, "y":2}, + {"label":".", "x":9.75, "y":2}, + {"label":"Shift", "x":10.75, "y":2, "w":1.25}, + {"label":"Ctrl", "x":0, "y":3, "w":1.25}, + {"label":"Win", "x":1.25, "y":3, "w":1}, + {"label":"Alt", "x":2.25, "y":3, "w":1.25}, + {"label":"Space", "x":3.5, "y":3, "w":2.25}, + {"label":"Space", "x":5.75, "y":3, "w":2.75}, + {"label":"App", "x":8.5, "y":3, "w":1.25}, + {"label":"Fn", "x":9.75, "y":3, "w":1}, + {"label":"Ctrl", "x":10.75, "y":3, "w":1.25} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/dtisaac/dosa40rgb/keymaps/default/keymap.c b/keyboards/dtisaac/dosa40rgb/keymaps/default/keymap.c new file mode 100644 index 000000000000..3edc5cfab738 --- /dev/null +++ b/keyboards/dtisaac/dosa40rgb/keymaps/default/keymap.c @@ -0,0 +1,74 @@ +/* Copyright 2021 DTIsaac + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _L1, + _L2 +}; + +// Defines the keycodes used by our macros in process_record_user +enum custom_keycodes { + BASE, + L1, +}; + +#define L1 MO(_L1) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + LT(_L2,KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, KC_SPACE, KC_RALT, L1, KC_RCTL + ), + [_L1] = LAYOUT( + RESET, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_SCLN, KC_QUOT, + KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_SLSH, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [_L2] = LAYOUT( + RGB_TOG, RGB_RMOD, KC_UP, RGB_MOD, RGB_HUI, RGB_VAI, RGB_SAI, RGB_SPI, KC_TRNS, OUT_USB, OUT_BT, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, RGB_HUD, RGB_VAD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_BSLS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TAB, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; + +void rgb_matrix_indicators_user(void) +{ + if (host_keyboard_led_state().caps_lock) + { + rgb_matrix_set_color(22, 200, 200, 200); + } + if (IS_LAYER_ON(_L1)) + { + rgb_matrix_set_color(35, 0, 200, 200); + } + if (IS_LAYER_ON(_L2)) + { + rgb_matrix_set_color(22, 200, 0, 200); + } +} + +void keyboard_pre_init_user(void) { + setPinOutput(B5); + writePinLow(B5); +} \ No newline at end of file diff --git a/keyboards/dtisaac/dosa40rgb/keymaps/default/readme.md b/keyboards/dtisaac/dosa40rgb/keymaps/default/readme.md new file mode 100644 index 000000000000..35494635d866 --- /dev/null +++ b/keyboards/dtisaac/dosa40rgb/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for dosa40rgb diff --git a/keyboards/dtisaac/dosa40rgb/readme.md b/keyboards/dtisaac/dosa40rgb/readme.md new file mode 100644 index 000000000000..5f288c6b760e --- /dev/null +++ b/keyboards/dtisaac/dosa40rgb/readme.md @@ -0,0 +1,26 @@ +# dosa40rgb + +![dosa40rgb](https://i.imgur.com/NfuF82nh.jpg) + +A 40 percent keyboard dosa40rgb Bluetooth Low Energy + +* Keyboard Maintainer: [DTIsaac](https://github.com/daotakisaac) +* Hardware Supported: ATmega32U4 + AdafruitBLE SPI + +Make example for this keyboard (after setting up your build environment): + + make dtisaac/dosa40rgb:default + +Flashing example for this keyboard: + + make dtisaac/dosa40rgb:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `RESET` if it is available diff --git a/keyboards/dtisaac/dosa40rgb/rules.mk b/keyboards/dtisaac/dosa40rgb/rules.mk new file mode 100644 index 000000000000..a56ba6dbc924 --- /dev/null +++ b/keyboards/dtisaac/dosa40rgb/rules.mk @@ -0,0 +1,26 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = lufa-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = no # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +BLUETOOTH_ENABLE = yes # Enable Bluetooth +BLUETOOTH_DRIVER = AdafruitBLE +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = WS2812 + +LTO_ENABLE = yes diff --git a/keyboards/dtisaac/dtisaac01/config.h b/keyboards/dtisaac/dtisaac01/config.h new file mode 100644 index 000000000000..f417d644998b --- /dev/null +++ b/keyboards/dtisaac/dtisaac01/config.h @@ -0,0 +1,95 @@ +/* +Copyright 2021 DTIsaac + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4454 +#define PRODUCT_ID 0x4973 +#define DEVICE_VER 0x0001 +#define MANUFACTURER DTIsaac +#define PRODUCT dtisaac01 + +/* key matrix size */ +#define MATRIX_ROWS 12 +#define MATRIX_COLS 9 + +/* + * 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 { F7, F6, F5, F4, F1, B4, D2, B2, B1, B3, D4, D6 } +#define MATRIX_COL_PINS { C7, C6, D0, B5, F0, D7, B0, B7, D1 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION ROW2COL + +#define LED_CAPS_LOCK_PIN D3 +#define LED_SCROLL_LOCK_PIN D5 +#define LED_PIN_ON_STATE 0 + + +#define BACKLIGHT_PIN B6 +#define BACKLIGHT_LEVELS 3 +#define BACKLIGHT_BREATHING + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable these deprecated features by default */ +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/dtisaac/dtisaac01/dtisaac01.c b/keyboards/dtisaac/dtisaac01/dtisaac01.c new file mode 100644 index 000000000000..b11920280f94 --- /dev/null +++ b/keyboards/dtisaac/dtisaac01/dtisaac01.c @@ -0,0 +1,17 @@ +/* Copyright 2021 DTIsaac + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "dtisaac01.h" diff --git a/keyboards/dtisaac/dtisaac01/dtisaac01.h b/keyboards/dtisaac/dtisaac01/dtisaac01.h new file mode 100644 index 000000000000..e017c6570055 --- /dev/null +++ b/keyboards/dtisaac/dtisaac01/dtisaac01.h @@ -0,0 +1,49 @@ +/* Copyright 2021 DTIsaac + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K058, K061, K062, K063, K064, K065, K066, \ + K010, K011, K012, K013, K014, K015, K016, K017, K018, K068, K060, K071, K072, K073, K074, K075, K076, \ + K020, K021, K022, K023, K024, K025, K026, K027, K028, K078, K070, K081, K082, K083, K084, K085, K086, \ + K030, K031, K032, K033, K034, K035, K036, K037, K038, K088, K080, K091, K093, \ + K040, K042, K043, K044, K045, K046, K047, K048, K098, K090, K101, K103, K105, \ + K050, K051, K052, K056, K100, K111, K112, K113, K114, K115, K116 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008 }, \ + { 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, KC_NO, K042, K043, K044, K045, K046, K047, K048 }, \ + { K050, K051, K052, KC_NO, KC_NO, KC_NO, K056, KC_NO, K058 }, \ + { K060, K061, K062, K063, K064, K065, K066, KC_NO, K068 }, \ + { K070, K071, K072, K073, K074, K075, K076, KC_NO, K078 }, \ + { K080, K081, K082, K083, K084, K085, K086, KC_NO, K088 }, \ + { K090, K091, KC_NO, K093, KC_NO, KC_NO, KC_NO, KC_NO, K098 }, \ + { K100, K101, KC_NO, K103, KC_NO, K105, KC_NO, KC_NO, KC_NO }, \ + { KC_NO, K111, K112, K113, K114, K115, K116, KC_NO, KC_NO } \ +} diff --git a/keyboards/dtisaac/dtisaac01/info.json b/keyboards/dtisaac/dtisaac01/info.json new file mode 100644 index 000000000000..bf3582d2a2ef --- /dev/null +++ b/keyboards/dtisaac/dtisaac01/info.json @@ -0,0 +1,98 @@ +{ + "keyboard_name": "dtisaac01", + "url": "", + "maintainer": "DTIsaac", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"K000", "x":0, "y":0}, + {"label":"K001", "x":2, "y":0}, + {"label":"K002", "x":3, "y":0}, + {"label":"K003", "x":4, "y":0}, + {"label":"K004", "x":5, "y":0}, + {"label":"K005", "x":6.5, "y":0}, + {"label":"K006", "x":7.5, "y":0}, + {"label":"K007", "x":8.5, "y":0}, + {"label":"K008", "x":9.5, "y":0}, + {"label":"K058", "x":11, "y":0}, + {"label":"K061", "x":12, "y":0}, + {"label":"K062", "x":13, "y":0}, + {"label":"K063", "x":14, "y":0}, + {"label":"K064", "x":15.25, "y":0}, + {"label":"K065", "x":16.25, "y":0}, + {"label":"K066", "x":17.25, "y":0}, + {"label":"K010", "x":0, "y":1.5}, + {"label":"K011", "x":1, "y":1.5}, + {"label":"K012", "x":2, "y":1.5}, + {"label":"K013", "x":3, "y":1.5}, + {"label":"K014", "x":4, "y":1.5}, + {"label":"K015", "x":5, "y":1.5}, + {"label":"K016", "x":6, "y":1.5}, + {"label":"K017", "x":7, "y":1.5}, + {"label":"K018", "x":8, "y":1.5}, + {"label":"K068", "x":9, "y":1.5}, + {"label":"K060", "x":10, "y":1.5}, + {"label":"K071", "x":11, "y":1.5}, + {"label":"K072", "x":12, "y":1.5}, + {"label":"K073", "x":13, "y":1.5, "w":2}, + {"label":"K074", "x":15.25, "y":1.5}, + {"label":"K075", "x":16.25, "y":1.5}, + {"label":"K076", "x":17.25, "y":1.5}, + {"label":"K020", "x":0, "y":2.5, "w":1.5}, + {"label":"K021", "x":1.5, "y":2.5}, + {"label":"K022", "x":2.5, "y":2.5}, + {"label":"K023", "x":3.5, "y":2.5}, + {"label":"K024", "x":4.5, "y":2.5}, + {"label":"K025", "x":5.5, "y":2.5}, + {"label":"K026", "x":6.5, "y":2.5}, + {"label":"K027", "x":7.5, "y":2.5}, + {"label":"K028", "x":8.5, "y":2.5}, + {"label":"K078", "x":9.5, "y":2.5}, + {"label":"K070", "x":10.5, "y":2.5}, + {"label":"K081", "x":11.5, "y":2.5}, + {"label":"K082", "x":12.5, "y":2.5}, + {"label":"K083", "x":13.5, "y":2.5, "w":1.5}, + {"label":"K084", "x":15.25, "y":2.5}, + {"label":"K085", "x":16.25, "y":2.5}, + {"label":"K086", "x":17.25, "y":2.5}, + {"label":"K030", "x":0, "y":3.5, "w":1.75}, + {"label":"K031", "x":1.75, "y":3.5}, + {"label":"K032", "x":2.75, "y":3.5}, + {"label":"K033", "x":3.75, "y":3.5}, + {"label":"K034", "x":4.75, "y":3.5}, + {"label":"K035", "x":5.75, "y":3.5}, + {"label":"K036", "x":6.75, "y":3.5}, + {"label":"K037", "x":7.75, "y":3.5}, + {"label":"K038", "x":8.75, "y":3.5}, + {"label":"K088", "x":9.75, "y":3.5}, + {"label":"K080", "x":10.75, "y":3.5}, + {"label":"K091", "x":11.75, "y":3.5}, + {"label":"K093", "x":12.75, "y":3.5, "w":2.25}, + {"label":"K040", "x":0, "y":4.5, "w":2.25}, + {"label":"K042", "x":2.25, "y":4.5}, + {"label":"K043", "x":3.25, "y":4.5}, + {"label":"K044", "x":4.25, "y":4.5}, + {"label":"K045", "x":5.25, "y":4.5}, + {"label":"K046", "x":6.25, "y":4.5}, + {"label":"K047", "x":7.25, "y":4.5}, + {"label":"K048", "x":8.25, "y":4.5}, + {"label":"K098", "x":9.25, "y":4.5}, + {"label":"K090", "x":10.25, "y":4.5}, + {"label":"K101", "x":11.25, "y":4.5}, + {"label":"K103", "x":12.25, "y":4.5, "w":2.75}, + {"label":"K105", "x":16.25, "y":4.5}, + {"label":"K050", "x":0, "y":5.5, "w":1.25}, + {"label":"K051", "x":1.25, "y":5.5, "w":1.25}, + {"label":"K052", "x":2.5, "y":5.5, "w":1.25}, + {"label":"K056", "x":3.75, "y":5.5, "w":6.25}, + {"label":"K100", "x":10, "y":5.5, "w":1.25}, + {"label":"K111", "x":11.25, "y":5.5, "w":1.25}, + {"label":"K112", "x":12.5, "y":5.5, "w":1.25}, + {"label":"K113", "x":13.75, "y":5.5, "w":1.25} + {"label":"K114", "x":15.25, "y":5.5}, + {"label":"K115", "x":16.25, "y":5.5}, + {"label":"K116", "x":17.25, "y":5.5}, + ] + } + } +} diff --git a/keyboards/dtisaac/dtisaac01/keymaps/default/keymap.c b/keyboards/dtisaac/dtisaac01/keymaps/default/keymap.c new file mode 100644 index 000000000000..15d0f2374a26 --- /dev/null +++ b/keyboards/dtisaac/dtisaac01/keymaps/default/keymap.c @@ -0,0 +1,47 @@ +/* Copyright 2021 DTIsaac + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, LT(1, KC_NO), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_FN] = LAYOUT( + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/dtisaac/dtisaac01/keymaps/default/readme.md b/keyboards/dtisaac/dtisaac01/keymaps/default/readme.md new file mode 100644 index 000000000000..0407ae2339fe --- /dev/null +++ b/keyboards/dtisaac/dtisaac01/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for dtisaac01 diff --git a/keyboards/dtisaac/dtisaac01/keymaps/via/keymap.c b/keyboards/dtisaac/dtisaac01/keymaps/via/keymap.c new file mode 100644 index 000000000000..2f61c803f7f5 --- /dev/null +++ b/keyboards/dtisaac/dtisaac01/keymaps/via/keymap.c @@ -0,0 +1,59 @@ +/* Copyright 2021 DTIsaac + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layers { + _LAYER0, + _LAYER1, + _LAYER2, + _LAYER3, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_LAYER0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, LT(1, KC_NO), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_LAYER1] = LAYOUT( + RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SLEP, KC_WAKE, KC_PWR, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_STEP, BL_ON, BL_INC, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_BRTG, BL_OFF, BL_DEC, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT + ), + [_LAYER2] = LAYOUT( + RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [_LAYER3] = LAYOUT( + RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; \ No newline at end of file diff --git a/keyboards/dtisaac/dtisaac01/keymaps/via/readme.md b/keyboards/dtisaac/dtisaac01/keymaps/via/readme.md new file mode 100644 index 000000000000..0407ae2339fe --- /dev/null +++ b/keyboards/dtisaac/dtisaac01/keymaps/via/readme.md @@ -0,0 +1 @@ +# The default keymap for dtisaac01 diff --git a/keyboards/daisy/keymaps/via/rules.mk b/keyboards/dtisaac/dtisaac01/keymaps/via/rules.mk similarity index 100% rename from keyboards/daisy/keymaps/via/rules.mk rename to keyboards/dtisaac/dtisaac01/keymaps/via/rules.mk diff --git a/keyboards/dtisaac/dtisaac01/readme.md b/keyboards/dtisaac/dtisaac01/readme.md new file mode 100644 index 000000000000..bf37c4dd2e5f --- /dev/null +++ b/keyboards/dtisaac/dtisaac01/readme.md @@ -0,0 +1,19 @@ +# dtisaac01 + +![dtisaac01](https://i.imgur.com/BoKW4uEh.jpg) + +A 87 percent keyboard DTIsaac01 version + +* Keyboard Maintainer: [DTIsaac](https://github.com/daotakisaac) +* Hardware Supported: dtisaac01-atmega32U4 +* Hardware Availability: dtisaac01-atmega32U4 + +Make example for this keyboard (after setting up your build environment): + + make dtisaac01:default + +Flashing example for this keyboard: + + make dtisaac01:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/dtisaac/dtisaac01/rules.mk b/keyboards/dtisaac/dtisaac01/rules.mk new file mode 100644 index 000000000000..445a6fefc580 --- /dev/null +++ b/keyboards/dtisaac/dtisaac01/rules.mk @@ -0,0 +1,19 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/dubba175/info.json b/keyboards/dubba175/info.json index 5f8c3f1f44f2..e2830ff4c218 100644 --- a/keyboards/dubba175/info.json +++ b/keyboards/dubba175/info.json @@ -2,11 +2,9 @@ "keyboard_name": "dubba175", "url": "http://www.keyboard-layout-editor.com/#/gists/3185de74dfb973bf6d42e785994cfd4e", "maintainer": "drhigsby", - "width": 10, - "height": 4, "layouts": { "LAYOUT": { "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":0, "y":1}, {"label":"", "x":1, "y":1}, {"label":"", "x":2, "y":1}, {"label":"", "x":3, "y":1}, {"label":"", "x":4, "y":1}, {"label":"", "x":5, "y":1}, {"label":"", "x":6, "y":1}, {"label":"", "x":7, "y":1}, {"label":"", "x":8, "y":1}, {"label":"", "x":9, "y":1}, {"label":"", "x":0, "y":2}, {"label":"", "x":1, "y":2}, {"label":"", "x":2, "y":2}, {"label":"", "x":3, "y":2}, {"label":"", "x":4, "y":2}, {"label":"", "x":5, "y":2}, {"label":"", "x":6, "y":2}, {"label":"<", "x":7, "y":2}, {"label":">", "x":8, "y":2}, {"label":"", "x":9, "y":2}, {"label":"", "x":1.25, "y":3}, {"label":"", "x":2.25, "y":3}, {"label":"", "x":3.25, "y":3, "w":1.75}, {"x":5, "y":3, "w":1.75}, {"label":"", "x":6.75, "y":3}, {"label":"", "x":7.75, "y":3}] } } -} \ No newline at end of file +} diff --git a/keyboards/dubba175/keymaps/default/keymap.c b/keyboards/dubba175/keymaps/default/keymap.c index e502e9498177..37bae5b435b4 100644 --- a/keyboards/dubba175/keymaps/default/keymap.c +++ b/keyboards/dubba175/keymaps/default/keymap.c @@ -18,7 +18,6 @@ enum layers{ _BASE, _NUM, - _NAV, _FN }; @@ -36,9 +35,9 @@ enum combo_events { const uint16_t PROGMEM esc_combo[] = {KC_Q, KC_W, COMBO_END}; const uint16_t PROGMEM bspc_combo[] = {KC_O, KC_P, COMBO_END}; const uint16_t PROGMEM tab_combo[] = {KC_A, KC_S, COMBO_END}; -const uint16_t PROGMEM del_combo[] = {KC_Q, KC_P, COMBO_END}; +const uint16_t PROGMEM del_combo[] = {KC_I, KC_O, COMBO_END}; const uint16_t PROGMEM enter_combo[] = {KC_L, KC_SCLN, COMBO_END}; -const uint16_t PROGMEM quot_combo[] = {KC_P, KC_SCLN, COMBO_END}; +const uint16_t PROGMEM quot_combo[] = {KC_K, KC_L, COMBO_END}; const uint16_t PROGMEM lprn_combo[] = {KC_X, KC_C, COMBO_END}; const uint16_t PROGMEM rprn_combo[] = {KC_COMM, KC_DOT, COMBO_END}; @@ -55,7 +54,6 @@ combo_t key_combos[COMBO_COUNT] = { }; #define NUM MO(_NUM) -#define NAV MO(_NAV) #define FN MO(_FN) #define xxx KC_TRNS @@ -64,29 +62,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), - KC_LCTL, KC_LALT, NUM, KC_SPC, NAV, FN + KC_LALT, KC_LCTL, NUM, KC_SPC, KC_RGUI, FN ), - [_NUM] = LAYOUT( KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_MINS, KC_EQL, - KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_HOME, KC_END, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, - KC_PGUP, KC_PGDN, xxx, xxx, KC_PGUP, KC_PGDN - ), - - [_NAV] = LAYOUT( - xxx, KC_UP, xxx, xxx, xxx, xxx, xxx, xxx, KC_UP, xxx, - KC_LEFT, KC_DOWN, KC_RGHT, xxx, xxx, xxx, xxx, KC_LEFT, KC_DOWN, KC_RGHT, - xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, - xxx, xxx, xxx, xxx, xxx, xxx + KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_HOME, KC_END, KC_PIPE, KC_BSLS, KC_DQUO, KC_QUOT, + xxx, xxx, xxx, xxx, KC_PGUP, KC_PGDN ), - + [_FN] = LAYOUT( KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, KC_F11, KC_F12, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, - xxx, xxx, xxx, xxx, xxx, xxx + xxx, xxx, xxx, xxx, xxx, xxx ) }; diff --git a/keyboards/dubba175/rules.mk b/keyboards/dubba175/rules.mk index f9c2a3c5eac4..43eca1cad44b 100644 --- a/keyboards/dubba175/rules.mk +++ b/keyboards/dubba175/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LTO_ENABLE = no # Use link time optimization diff --git a/keyboards/duck/eagle_viper/info.json b/keyboards/duck/eagle_viper/info.json deleted file mode 100644 index 1ab27a6d8dc9..000000000000 --- a/keyboards/duck/eagle_viper/info.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "keyboard_name": "Eagle/Viper", - "width": 15, - "height": 5, - "layouts": { - "LAYOUT_all": { - "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"|", "x":13, "y":0}, {"label":"~", "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":"Backspace", "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":"ISO#", "x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.25}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"label":"ISO\\", "x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Fn", "x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"GUI", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"GUI", "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}] - }, - "LAYOUT_60_ansi": { - "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}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"GUI", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"GUI", "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}] - }, - "LAYOUT_eagle_splits": { - "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":"GUI", "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":"GUI", "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}] - }, - "LAYOUT_viper": { - "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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"label":"GUI", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"GUI", "x":12.5, "y":4}] - } - } -} diff --git a/keyboards/duck/eagle_viper/readme.md b/keyboards/duck/eagle_viper/readme.md deleted file mode 100644 index 63623940bec8..000000000000 --- a/keyboards/duck/eagle_viper/readme.md +++ /dev/null @@ -1,7 +0,0 @@ -# Duck Eagle/Viper - -Non official firmware for custom Korean keyboard with 60% key layout made by Duck. - -Newest version is the [Eagle/Viper V2](http://duck0113.tistory.com/127) - -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/duck/eagle_viper/rules.mk b/keyboards/duck/eagle_viper/rules.mk deleted file mode 100644 index 263767d06490..000000000000 --- a/keyboards/duck/eagle_viper/rules.mk +++ /dev/null @@ -1,3 +0,0 @@ -DEFAULT_FOLDER = duck/eagle_viper/v2 - -LAYOUTS = 60_ansi \ No newline at end of file diff --git a/keyboards/duck/eagle_viper/v2/info.json b/keyboards/duck/eagle_viper/v2/info.json new file mode 100644 index 000000000000..57d6af4fa82f --- /dev/null +++ b/keyboards/duck/eagle_viper/v2/info.json @@ -0,0 +1,362 @@ +{ + "keyboard_name": "Eagle/Viper V2", + "layout_aliases": { + "LAYOUT_eagle": "LAYOUT_60_ansi", + "LAYOUT_viper": "LAYOUT_60_hhkb", + "LAYOUT_eagle_splits": "LAYOUT_60_ansi_split_bs_lshift_rshift" + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"!", "x":1, "y":0}, + {"label":"@", "x":2, "y":0}, + {"label":"#", "x":3, "y":0}, + {"label":"$", "x":4, "y":0}, + {"label":"%", "x":5, "y":0}, + {"label":"^", "x":6, "y":0}, + {"label":"&", "x":7, "y":0}, + {"label":"*", "x":8, "y":0}, + {"label":"(", "x":9, "y":0}, + {"label":")", "x":10, "y":0}, + {"label":"_", "x":11, "y":0}, + {"label":"+", "x":12, "y":0}, + {"label":"|", "x":13, "y":0}, + {"label":"~", "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":"Backspace", "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":"ISO#", "x":12.75, "y":2}, + {"label":"Enter", "x":13.75, "y":2, "w":1.25}, + + {"label":"Shift", "x":0, "y":3, "w":1.25}, + {"label":"ISO\\", "x":1.25, "y":3}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"Fn", "x":14, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"GUI", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"label":"Alt", "x":10, "y":4, "w":1.25}, + {"label":"GUI", "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} + ] + }, + "LAYOUT_60_ansi": { + "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}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + + {"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":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":2.75}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"GUI", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"label":"Alt", "x":10, "y":4, "w":1.25}, + {"label":"GUI", "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} + ] + }, + "LAYOUT_60_ansi_split_bs_rshift": { + "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":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"GUI", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"label":"Alt", "x":10, "y":4, "w":1.25}, + {"label":"GUI", "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} + ] + }, + "LAYOUT_60_ansi_split_bs_lshift_rshift": { + "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":"GUI", "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":"GUI", "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} + ] + }, + "LAYOUT_60_hhkb": { + "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":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"label":"GUI", "x":1.5, "y":4}, + {"label":"Alt", "x":2.5, "y":4, "w":1.5}, + {"x":4, "y":4, "w":7}, + {"label":"Alt", "x":11, "y":4, "w":1.5}, + {"label":"GUI", "x":12.5, "y":4} + ] + } + } +} diff --git a/keyboards/duck/eagle_viper/v2/readme.md b/keyboards/duck/eagle_viper/v2/readme.md index 2dca0b5b76ad..0e9685e13769 100644 --- a/keyboards/duck/eagle_viper/v2/readme.md +++ b/keyboards/duck/eagle_viper/v2/readme.md @@ -1,17 +1,16 @@ # Duck Eagle/Viper V2 -Non official firmware for custom Korean keyboard with 60% key layout made by Duck. -Group buy was run November 2016 via [geekhack](https://geekhack.org/index.php?topic=86087.0) with 100 keyboards total. +Non-official firmware for custom Korean keyboard with 60% key layout made by Duck. Group buy was run November 2016 via [geekhack](https://geekhack.org/index.php?topic=86087.0) with 100 keyboards total. Newest version is the [Eagle/Viper V2](http://duck0113.tistory.com/127). -Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin) -Hardware Supported: Duck Eagle/Viper PCB Ver 2.0, Atmega32u4 -Hardware Availability: Wait until GB of the next revision +* Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin) +* Hardware Supported: Duck Eagle/Viper PCB Ver 2.0, Atmega32u4 +* Hardware Availability: Wait until GB of the next revision Make example for this keyboard (after setting up your build environment): - make eagle_viper/v2:default + make duck/eagle_viper/v2:default -**Reset Key:** To put the Eagle/Viper V2 into reset, hold caps lock key (`K2A`) while plugging in. +**Reset Key:** To put the Eagle/Viper V2 into reset, hold caps lock key (`K2A`) while plugging in. 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/duck/eagle_viper/v2/rules.mk b/keyboards/duck/eagle_viper/v2/rules.mk index 2f1b12397f87..2f40560e1cc4 100644 --- a/keyboards/duck/eagle_viper/v2/rules.mk +++ b/keyboards/duck/eagle_viper/v2/rules.mk @@ -2,35 +2,24 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality BACKLIGHT_DRIVER = custom -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 -RGBLIGHT_ENABLE = yes +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +LAYOUTS = 60_ansi 60_hhkb 60_ansi_split_bs_rshift CUSTOM_MATRIX = yes -SRC += indicator_leds.c \ - matrix.c duck_led/duck_led.c +SRC += indicator_leds.c matrix.c duck_led/duck_led.c diff --git a/keyboards/duck/eagle_viper/v2/v2.c b/keyboards/duck/eagle_viper/v2/v2.c index a60acb9784dc..d3e1368de98b 100644 --- a/keyboards/duck/eagle_viper/v2/v2.c +++ b/keyboards/duck/eagle_viper/v2/v2.c @@ -59,7 +59,3 @@ void led_set_kb(uint8_t usb_led) { indicator_leds_set(status); } - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - return process_record_user(keycode, record); -} diff --git a/keyboards/duck/eagle_viper/v2/v2.h b/keyboards/duck/eagle_viper/v2/v2.h index 7fefcf770cd2..78b6fe5ea168 100644 --- a/keyboards/duck/eagle_viper/v2/v2.h +++ b/keyboards/duck/eagle_viper/v2/v2.h @@ -47,7 +47,21 @@ { K0A, K0B, K0C, ___, ___, ___, ___, ___, K0I, ___, K0K, ___, K0M, K0N, K0O } \ } -#define LAYOUT_eagle_splits( \ +#define LAYOUT_60_ansi_split_bs_rshift( \ + K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H, K4I, K4J, K4K, K4L, K4M, K4N, K4O, \ + K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H, K3I, K3J, K3K, K3L, K3M, K3O, \ + K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H, K2I, K2J, K2K, K2L, K2O, \ + K1A, K1C, K1D, K1E, K1F, K1G, K1H, K1I, K1J, K1K, K1M, K1N, K1O, \ + K0A, K0B, K0C, K0I, K0K, K0M, K0N, K0O \ +) { \ + { K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H, K4I, K4J, K4K, K4L, K4M, K4N, K4O }, \ + { K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H, K3I, K3J, K3K, K3L, K3M, ___, K3O }, \ + { K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H, K2I, K2J, K2K, K2L, ___, ___, K2O }, \ + { K1A, ___, K1C, K1D, K1E, K1F, K1G, K1H, K1I, K1J, K1K, ___, K1M, K1N, K1O }, \ + { K0A, K0B, K0C, ___, ___, ___, ___, ___, K0I, ___, K0K, ___, K0M, K0N, K0O } \ +} + +#define LAYOUT_60_ansi_split_bs_lshift_rshift( \ K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H, K4I, K4J, K4K, K4L, K4M, K4N, K4O, \ K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H, K3I, K3J, K3K, K3L, K3M, K3O, \ K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H, K2I, K2J, K2K, K2L, K2O, \ @@ -61,7 +75,7 @@ { K0A, K0B, K0C, ___, ___, ___, ___, ___, K0I, ___, K0K, ___, K0M, K0N, K0O } \ } -#define LAYOUT_viper( \ +#define LAYOUT_60_hhkb( \ K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H, K4I, K4J, K4K, K4L, K4M, K4N, K4O, \ K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H, K3I, K3J, K3K, K3L, K3M, K3O, \ K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H, K2I, K2J, K2K, K2L, K2O, \ @@ -74,6 +88,3 @@ { K1A, ___, K1C, K1D, K1E, K1F, K1G, K1H, K1I, K1J, K1K, ___, K1M, K1N, K1O }, \ { ___, K0B, K0C, ___, ___, ___, ___, ___, K0I, ___, ___, ___, K0M, K0N, ___ } \ } - -#define LAYOUT_eagle LAYOUT_60_ansi - diff --git a/keyboards/duck/jetfire/config.h b/keyboards/duck/jetfire/config.h index 37e81e830a97..3b6c7d89fdb2 100644 --- a/keyboards/duck/jetfire/config.h +++ b/keyboards/duck/jetfire/config.h @@ -77,54 +77,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -142,24 +94,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - diff --git a/keyboards/duck/jetfire/info.json b/keyboards/duck/jetfire/info.json index ec88a23ac849..9325fffb7714 100644 --- a/keyboards/duck/jetfire/info.json +++ b/keyboards/duck/jetfire/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Jetfire", "url": "", "maintainer": "qmk", - "width": 20.5, - "height": 6.5, "layouts": { "LAYOUT_all": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"x":15.25, "y":0}, {"label":"PrtSc", "x":16.5, "y":0}, {"label":"Scroll Lock", "x":17.5, "y":0}, {"label":"Pause", "x":18.5, "y":0}, {"x":19.5, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"label":"Back Space", "x":13, "y":1.25}, {"x":14, "y":1.25}, {"label":"Insert", "x":15.25, "y":1.25}, {"label":"Num Lock", "x":16.5, "y":1.25}, {"label":"/", "x":17.5, "y":1.25}, {"label":"*", "x":18.5, "y":1.25}, {"label":"-", "x":19.5, "y":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Y", "x":6.5, "y":2.25}, {"label":"U", "x":7.5, "y":2.25}, {"label":"I", "x":8.5, "y":2.25}, {"label":"O", "x":9.5, "y":2.25}, {"label":"P", "x":10.5, "y":2.25}, {"label":"{", "x":11.5, "y":2.25}, {"label":"}", "x":12.5, "y":2.25}, {"label":"|", "x":13.5, "y":2.25, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.25}, {"label":"7", "x":16.5, "y":2.25}, {"label":"8", "x":17.5, "y":2.25}, {"label":"9", "x":18.5, "y":2.25}, {"label":"+", "x":19.5, "y":2.25}, {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"H", "x":6.75, "y":3.25}, {"label":"J", "x":7.75, "y":3.25}, {"label":"K", "x":8.75, "y":3.25}, {"label":"L", "x":9.75, "y":3.25}, {"label":":", "x":10.75, "y":3.25}, {"label":"\"", "x":11.75, "y":3.25}, {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, {"label":"4", "x":16.5, "y":3.25}, {"label":"5", "x":17.5, "y":3.25}, {"label":"6", "x":18.5, "y":3.25}, {"x":19.5, "y":3.25}, {"label":"Shift", "x":0, "y":4.25, "w":1.25}, {"label":"ISO \\", "x":1.25, "y":4.25}, {"label":"Z", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"N", "x":7.25, "y":4.25}, {"label":"M", "x":8.25, "y":4.25}, {"label":"<", "x":9.25, "y":4.25}, {"label":">", "x":10.25, "y":4.25}, {"label":"?", "x":11.25, "y":4.25}, {"label":"Shift", "x":12.25, "y":4.25, "w":1.75}, {"x":14, "y":4.25}, {"label":"\u2191", "x":15.25, "y":4.5}, {"label":"1", "x":16.5, "y":4.25}, {"label":"2", "x":17.5, "y":4.25}, {"label":"3", "x":18.5, "y":4.25}, {"label":"Enter", "x":19.5, "y":4.25}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.5}, {"label":"Win", "x":1.5, "y":5.25}, {"label":"Alt", "x":2.5, "y":5.25, "w":1.5}, {"x":4, "y":5.25, "w":6.25}, {"label":"Alt", "x":10.25, "y":5.25, "w":1.25}, {"x":11.5, "y":5.25, "w":1.25}, {"label":"Ctrl", "x":12.75, "y":5.25, "w":1.25}, {"label":"\u2190", "x":14.25, "y":5.5}, {"label":"\u2193", "x":15.25, "y":5.5}, {"label":"\u2192", "x":16.25, "y":5.5}, {"label":"0", "x":17.5, "y":5.25}, {"label":".", "x":18.5, "y":5.25}, {"x":19.5, "y":5.25}] diff --git a/keyboards/duck/jetfire/jetfire.c b/keyboards/duck/jetfire/jetfire.c index 0662489c6f26..9bb02ca22ccb 100644 --- a/keyboards/duck/jetfire/jetfire.c +++ b/keyboards/duck/jetfire/jetfire.c @@ -121,16 +121,6 @@ void backlight_set(uint8_t level) backlight_toggle_rgb(level & BACKLIGHT_RGB); } - - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - - void backlight_update_state() { cli(); diff --git a/keyboards/duck/jetfire/keymaps/default/keymap.c b/keyboards/duck/jetfire/keymaps/default/keymap.c index 9377ef00280d..fc5fd39ea5f0 100644 --- a/keyboards/duck/jetfire/keymaps/default/keymap.c +++ b/keyboards/duck/jetfire/keymaps/default/keymap.c @@ -25,19 +25,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_COMM), }; - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/duck/jetfire/rules.mk b/keyboards/duck/jetfire/rules.mk index 1fd9c3e82721..65319e9a962d 100644 --- a/keyboards/duck/jetfire/rules.mk +++ b/keyboards/duck/jetfire/rules.mk @@ -2,34 +2,22 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality BACKLIGHT_DRIVER = custom RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output CUSTOM_MATRIX = yes SRC += indicator_leds.c \ diff --git a/keyboards/duck/lightsaver/info.json b/keyboards/duck/lightsaver/info.json index 0637ef9a1810..92ffbf1c9daf 100644 --- a/keyboards/duck/lightsaver/info.json +++ b/keyboards/duck/lightsaver/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Duck Lightsaver V3", "url": "", "maintainer": "qmk", - "width": 19, - "height": 6, "layouts": { "LAYOUT": { - "key_count": 100, "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, {"label":"F2", "x":2, "y":0}, {"label":"F3", "x":3, "y":0}, {"label":"F4", "x":4, "y":0}, {"label":"F5", "x":5, "y":0}, {"label":"F6", "x":6, "y":0}, {"label":"F7", "x":7, "y":0}, {"label":"F8", "x":8, "y":0}, {"label":"F9", "x":9, "y":0}, {"label":"F10", "x":10, "y":0}, {"label":"F11", "x":11, "y":0}, {"label":"F12", "x":12, "y":0}, {"label":"PrtSc", "x":13, "y":0}, {"label":"Num
Lock", "x":14, "y":0}, {"label":"Insert", "x":15, "y":0}, {"label":"Home", "x":16, "y":0}, {"label":"PgUp", "x":17, "y":0}, {"label":"/", "x":18, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"@", "x":2, "y":1}, {"label":"#", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"label":"Bkspc", "x":13, "y":1, "w":2}, {"label":"Delete", "x":15, "y":1}, {"label":"End", "x":16, "y":1}, {"label":"PgDn", "x":17, "y":1}, {"label":"*", "x":18, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"7", "x":15, "y":2}, {"label":"8", "x":16, "y":2}, {"label":"9", "x":17, "y":2}, {"label":"-", "x":18, "y":2}, {"label":"CapsLock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"\"", "x":11.75, "y":3}, {"label":"Enter", "x":12.75, "y":3, "w":2.25}, {"label":"4", "x":15, "y":3}, {"label":"5", "x":16, "y":3}, {"label":"6", "x":17, "y":3}, {"label":"+", "x":18, "y":3}, {"label":"Shift", "x":0, "y":4, "w":2.25}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"label":"\u2191", "x":14, "y":4}, {"label":"1", "x":15, "y":4}, {"label":"2", "x":16, "y":4}, {"label":"3", "x":17, "y":4}, {"label":"Enter", "x":18, "y":4, "h":2}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5, "w":1.5}, {"label":"Ctrl", "x":11.5, "y":5, "w":1.5}, {"label":"\u2190", "x":13, "y":5}, {"label":"\u2193", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}, {"label":"0", "x":16, "y":5}, {"label":".", "x":17, "y":5}] } } diff --git a/keyboards/duck/lightsaver/lightsaver.c b/keyboards/duck/lightsaver/lightsaver.c index 75e35b28b28b..e0fe918e7d5e 100644 --- a/keyboards/duck/lightsaver/lightsaver.c +++ b/keyboards/duck/lightsaver/lightsaver.c @@ -54,7 +54,3 @@ void led_set_kb(uint8_t usb_led) { led_set_user(usb_led); } - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - return process_record_user(keycode, record); -} diff --git a/keyboards/duck/lightsaver/rules.mk b/keyboards/duck/lightsaver/rules.mk index 6c6a776771d4..cd1ece1c254a 100644 --- a/keyboards/duck/lightsaver/rules.mk +++ b/keyboards/duck/lightsaver/rules.mk @@ -2,33 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality BACKLIGHT_DRIVER = custom -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes CUSTOM_MATRIX = yes diff --git a/keyboards/duck/octagon/v1/info.json b/keyboards/duck/octagon/v1/info.json index ff45267004d7..1fae48975bfc 100644 --- a/keyboards/duck/octagon/v1/info.json +++ b/keyboards/duck/octagon/v1/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Octagon V1", "url": "", "maintainer": "qmk", - "width": 16, - "height": 6, "layouts": { "LAYOUT_75_ansi": { - "key_count": 84, "layout": [ {"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, diff --git a/keyboards/duck/octagon/v1/rules.mk b/keyboards/duck/octagon/v1/rules.mk index 18b7d73dd149..25b8e78528a0 100644 --- a/keyboards/duck/octagon/v1/rules.mk +++ b/keyboards/duck/octagon/v1/rules.mk @@ -2,33 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality BACKLIGHT_DRIVER = custom -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes CUSTOM_MATRIX = yes diff --git a/keyboards/duck/octagon/v1/v1.c b/keyboards/duck/octagon/v1/v1.c index 2586882291e5..e9e88c70d0e0 100644 --- a/keyboards/duck/octagon/v1/v1.c +++ b/keyboards/duck/octagon/v1/v1.c @@ -44,7 +44,3 @@ void led_set_kb(uint8_t usb_led) { backlight_os_state & (1<", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"label":"\u2191", "x":14, "y":4}, {"label":"End", "x":15, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5}, {"label":"Fn", "x":11, "y":5}, {"label":"Ctrl", "x":12, "y":5}, {"label":"\u2190", "x":13, "y":5}, {"label":"\u2193", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}] diff --git a/keyboards/duck/octagon/v2/rules.mk b/keyboards/duck/octagon/v2/rules.mk index 1fdf9c77e78e..d7bfdae0ce53 100644 --- a/keyboards/duck/octagon/v2/rules.mk +++ b/keyboards/duck/octagon/v2/rules.mk @@ -2,33 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality BACKLIGHT_DRIVER = custom -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes CUSTOM_MATRIX = yes diff --git a/keyboards/duck/octagon/v2/v2.c b/keyboards/duck/octagon/v2/v2.c index 52653b37e79e..23e92b27697b 100644 --- a/keyboards/duck/octagon/v2/v2.c +++ b/keyboards/duck/octagon/v2/v2.c @@ -111,7 +111,3 @@ void led_set_kb(uint8_t usb_led) { backlight_os_state & (1<. + */ +#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 + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT_all( \ + 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, k3d, \ + k40, k41, k42, k45, 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, k2c, k2d, XXX }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, XXX }, \ + { k40, k41, k42, XXX, XXX, k45, XXX, 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, k3d, \ + k40, k41, k42, k45, 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, XXX, k3d, XXX }, \ + { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, XXX } \ +} + +#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, k45, 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, 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, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, XXX } \ +} diff --git a/keyboards/ducky/one2mini/1861st/boards/NUC123SD4AN0/board.c b/keyboards/ducky/one2mini/1861st/boards/NUC123SD4AN0/board.c new file mode 100644 index 000000000000..a10223603ef9 --- /dev/null +++ b/keyboards/ducky/one2mini/1861st/boards/NUC123SD4AN0/board.c @@ -0,0 +1,57 @@ +/* + ChibiOS Driver element - Copyright (C) 2019 /u/KeepItUnder + + 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. +*/ + +#include "hal.h" + +#if HAL_USE_PAL || defined(__DOXYGEN__) +/** + * @brief PAL setup. + * @details Digital I/O ports static configuration as defined in @p board.h. + * This variable is used by the HAL when initializing the PAL driver. + */ +const PALConfig pal_default_config = { +# if NUC123_HAS_GPIOA + {VAL_GPIOA_PMD, VAL_GPIOA_OFFD, VAL_GPIOA_DMASK, VAL_GPIOA_DBEN, VAL_GPIOA_IMD, VAL_GPIOA_IEN, VAL_GPIOA_ISRC, VAL_GPIOA_DOUT}, +# endif +# if NUC123_HAS_GPIOB + {VAL_GPIOB_PMD, VAL_GPIOB_OFFD, VAL_GPIOB_DMASK, VAL_GPIOB_DBEN, VAL_GPIOB_IMD, VAL_GPIOB_IEN, VAL_GPIOB_ISRC, VAL_GPIOB_DOUT}, +# endif +# if NUC123_HAS_GPIOC + {VAL_GPIOC_PMD, VAL_GPIOC_OFFD, VAL_GPIOC_DMASK, VAL_GPIOC_DBEN, VAL_GPIOC_IMD, VAL_GPIOC_IEN, VAL_GPIOC_ISRC, VAL_GPIOC_DOUT}, +# endif +# if NUC123_HAS_GPIOD + {VAL_GPIOD_PMD, VAL_GPIOD_OFFD, VAL_GPIOD_DMASK, VAL_GPIOD_DBEN, VAL_GPIOD_IMD, VAL_GPIOD_IEN, VAL_GPIOD_ISRC, VAL_GPIOD_DOUT}, +# endif +# if NUC123_HAS_GPIOF + {VAL_GPIOF_PMD, VAL_GPIOF_OFFD, VAL_GPIOF_DMASK, VAL_GPIOF_DBEN, VAL_GPIOF_IMD, VAL_GPIOF_IEN, VAL_GPIOF_ISRC, VAL_GPIOF_DOUT}, +# endif +}; +#endif + +/** + * @brief Early initialization code. + * @details This initialization must be performed just after stack setup + * and before any other initialization. + */ +void __early_init(void) { + NUC123_clock_init(); +} + +/** + * @brief Board-specific initialization code. + * @todo Add your board-specific code, if any. + */ +void boardInit(void) {} diff --git a/keyboards/ducky/one2mini/1861st/boards/NUC123SD4AN0/board.h b/keyboards/ducky/one2mini/1861st/boards/NUC123SD4AN0/board.h new file mode 100644 index 000000000000..c43b2ce422ea --- /dev/null +++ b/keyboards/ducky/one2mini/1861st/boards/NUC123SD4AN0/board.h @@ -0,0 +1,961 @@ +/* + ChibiOS Driver element - Copyright (C) 2019 /u/KeepItUnder + + 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 BOARD_H +#define BOARD_H + +/* + * Setup for Generic NUC123 board. + */ + +/* + * Board identifier. + */ +#define BOARD_NUC123SD4AN0 +#define BOARD_NAME "Nuvoton NUC123SD4AN0 MCU" + +/* + * Board oscillators-related settings. + * NOTE: LSE not fitted. + * NOTE: HSE is fitted. + */ +#if !defined(NUC123_LSECLK) +#define NUC123_LSECLK 0U +#endif + +#define NUC123_LSEDRV (3U << 3U) + +#if !defined(NUC123_HSECLK) +#define NUC123_HSECLK 12000000U +#endif + +//#define NUC123_HSE_BYPASS + +/* + * MCU type as defined in the NUC123 header. + */ +#define NUC123SD4AN0 + +/* + * GPIO Multi Function Pin USB Setup + * Requires Some GPIO pins to be disabled/set to USB + */ + +/* + * IO pins assignments. + */ +#define GPIOA_PIN0 0U +#define GPIOA_PIN1 1U +#define GPIOA_PIN2 2U +#define GPIOA_PIN3 3U +#define GPIOA_PIN4 4U +#define GPIOA_PIN5 5U +#define GPIOA_PIN6 6U +#define GPIOA_PIN7 7U +#define GPIOA_PIN8 8U +#define GPIOA_PIN9 9U +#define GPIOA_SPI1_MISO0 10U +#define GPIOA_SPI1_CLK 11U +#define GPIOA_PWM0 12U +#define GPIOA_PWM1 13U +#define GPIOA_PWM2 14U +#define GPIOA_PWM3 15U + +#define GPIOB_UART0_RXD 0U +#define GPIOB_UART0_TXD 1U +#define GPIOB_UART0_RTS 2U +#define GPIOB_UART0_CTS 3U +#define GPIOB_UART1_RXD 4U +#define GPIOB_UART1_TXD 5U +#define GPIOB_UART1_RTS 6U +#define GPIOB_UART1_CTS 7U +#define GPIOB_TM0 8U +#define GPIOB_TM1 9U +#define GPIOB_TM2 10U +#define GPIOB_PIN11 11U +#define GPIOB_CLK0 12U +#define GPIOB_PIN13 13U +#define GPIOB_INT0 14U +#define GPIOB_INT1 15U + +#define GPIOC_PIN0 0U +#define GPIOC_PIN1 1U +#define GPIOC_PIN2 2U +#define GPIOC_PIN3 3U +#define GPIOC_PIN4 4U +#define GPIOC_PIN5 5U +#define GPIOC_PIN6 6U +#define GPIOC_PIN7 7U +#define GPIOC_PIN8 8U +#define GPIOC_PIN9 9U +#define GPIOC_PIN10 10U +#define GPIOC_PIN11 11U +#define GPIOC_PIN12 12U +#define GPIOC_PIN13 13U +#define GPIOC_PIN14 14U +#define GPIOC_PIN15 15U + +#define GPIOD_ADC0 0U +#define GPIOD_ADC1 1U +#define GPIOD_ADC2 2U +#define GPIOD_ADC3 3U +#define GPIOD_ADC4 4U +#define GPIOD_ADC5 5U +#define GPIOD_PIN6 6U +#define GPIOD_PIN7 7U +#define GPIOD_PIN8 8U +#define GPIOD_PIN9 9U +#define GPIOD_PIN10 10U +#define GPIOD_PIN11 11U +#define GPIOD_PIN12 12U +#define GPIOD_PIN13 13U +#define GPIOD_PIN14 14U +#define GPIOD_PIN15 15U + +#define GPIOE_PIN0 0U +#define GPIOE_PIN1 1U +#define GPIOE_PIN2 2U +#define GPIOE_PIN3 3U +#define GPIOE_PIN4 4U +#define GPIOE_PIN5 5U +#define GPIOE_PIN6 6U +#define GPIOE_PIN7 7U +#define GPIOE_PIN8 8U +#define GPIOE_PIN9 9U +#define GPIOE_PIN10 10U +#define GPIOE_PIN11 11U +#define GPIOE_PIN12 12U +#define GPIOE_PIN13 13U +#define GPIOE_PIN14 14U +#define GPIOE_PIN15 15U + +#define GPIOF_OSC_OUT 0U +#define GPIOF_OSC_IN 1U +#define GPIOF_I2C0_SDA 2U +#define GPIOF_I2C0_SCL 3U +#define GPIOF_PIN4 4U +#define GPIOF_PIN5 5U +#define GPIOF_PIN6 6U +#define GPIOF_PIN7 7U +#define GPIOF_PIN8 8U +#define GPIOF_PIN9 9U +#define GPIOF_PIN10 10U +#define GPIOF_PIN11 11U +#define GPIOF_PIN12 12U +#define GPIOF_PIN13 13U +#define GPIOF_PIN14 14U +#define GPIOF_PIN15 15U + +/* + * IO lines assignments. + */ +#define LINE_USB_DM PAL_LINE(GPIOA, 11U) +#define LINE_USB_DP PAL_LINE(GPIOA, 12U) +#define LINE_SWDIO PAL_LINE(GPIOA, 13U) +#define LINE_SWCLK PAL_LINE(GPIOA, 14U) + +// #define LINE_SPI2_SCK PAL_LINE(GPIOB, 13U) +// #define LINE_SPI2_MISO PAL_LINE(GPIOB, 14U) +// #define LINE_SPI2_MOSI PAL_LINE(GPIOB, 15U) + +#define LINE_OSC_IN PAL_LINE(GPIOF, 0U) +#define LINE_OSC_OUT PAL_LINE(GPIOF, 1U) + +/* + * I/O ports initial setup, this configuration is established soon after reset + * in the initialization code. + * Please refer to the NUC123 Reference Manual for details. + */ +#define PIN_MODE_INPUT(n) (0U << ((n) * 2U)) +#define PIN_MODE_OUTPUT(n) (1U << ((n) * 2U)) +#define PIN_MODE_OPENDRAIN(n) (2U << ((n) * 2U)) +#define PIN_MODE_QUASI(n) (3U << ((n) * 2U)) +#define PIN_DIGITAL_EN(n) (0U << (n)) +#define PIN_DIGITAL_DIS(n) (1U << (n)) +#define PIN_DMASK_DIS(n) (0U << (n)) +#define PIN_DMASK_EN(n) (1U << (n)) +#define PIN_DBNCE_DIS(n) (0U << (n)) +#define PIN_DBNCE_EN(n) (1U << (n)) +#define PIN_IMD_EDGE(n) (0U << (n)) +#define PIN_IMD_LVL(n) (1U << (n)) +#define PIN_IEN_FELL_DIS(n) (0U << (n)) +#define PIN_IEN_FELL_EN(n) (1U << (n)) +#define PIN_IEN_REHL_DIS(n) ((0U << (n)) << 16) +#define PIN_IEN_REHL_EN(n) ((1U << (n)) << 16) +#define PIN_ISRC_EN(n) (1U << (n)) +#define PIN_ISRC_DIS(n) (0U << (n)) +#define PIN_ISRC_CLR(n) (1U << (n)) +#define PIN_DATA_LOW(n) (0U << (n)) +#define PIN_DATA_HIGH(n) (1U << (n)) + +/* + * GPIOA setup: + * + * PA0 - PIN0 (input pullup). + * PA1 - PIN1 (input pullup). + * PA2 - PIN2 (input pullup). + * PA3 - PIN3 (input pullup). + * PA4 - PIN4 (input pullup). + * PA5 - PIN5 (input pullup). + * PA6 - PIN6 (input pullup). + * PA7 - PIN7 (input pullup). + * PA8 - PIN8 (input pullup). + * PA9 - PIN9 (input pullup). + * PA10 - SPI1_MISO0 (input pullup). + * PA11 - SPI1_CLK (input floating). + * PA12 - PWM0 (input floating). + * PA13 - PWM1 (input pullup). + * PA14 - PWM2 (input pullup). + * PA15 - PWM3 (input pullup). + */ + +#define VAL_GPIOA_PMD (PIN_MODE_INPUT(GPIOA_PIN0) | \ + PIN_MODE_INPUT(GPIOA_PIN1) | \ + PIN_MODE_INPUT(GPIOA_PIN2) | \ + PIN_MODE_INPUT(GPIOA_PIN3) | \ + PIN_MODE_INPUT(GPIOA_PIN4) | \ + PIN_MODE_INPUT(GPIOA_PIN5) | \ + PIN_MODE_INPUT(GPIOA_PIN6) | \ + PIN_MODE_INPUT(GPIOA_PIN7) | \ + PIN_MODE_INPUT(GPIOA_PIN8) | \ + PIN_MODE_INPUT(GPIOA_PIN9) | \ + PIN_MODE_INPUT(GPIOA_SPI1_MISO0) | \ + PIN_MODE_INPUT(GPIOA_SPI1_CLK) | \ + PIN_MODE_INPUT(GPIOA_PWM0) | \ + PIN_MODE_INPUT(GPIOA_PWM1) | \ + PIN_MODE_INPUT(GPIOA_PWM2) | \ + PIN_MODE_INPUT(GPIOA_PWM3)) +#define VAL_GPIOA_OFFD (PIN_DIGITAL_EN(GPIOA_PIN0) | \ + PIN_DIGITAL_EN(GPIOA_PIN1) | \ + PIN_DIGITAL_EN(GPIOA_PIN2) | \ + PIN_DIGITAL_EN(GPIOA_PIN3) | \ + PIN_DIGITAL_EN(GPIOA_PIN4) | \ + PIN_DIGITAL_EN(GPIOA_PIN5) | \ + PIN_DIGITAL_EN(GPIOA_PIN6) | \ + PIN_DIGITAL_EN(GPIOA_PIN7) | \ + PIN_DIGITAL_EN(GPIOA_PIN8) | \ + PIN_DIGITAL_EN(GPIOA_PIN9) | \ + PIN_DIGITAL_EN(GPIOA_SPI1_MISO0) | \ + PIN_DIGITAL_EN(GPIOA_SPI1_CLK) | \ + PIN_DIGITAL_EN(GPIOA_PWM0) | \ + PIN_DIGITAL_EN(GPIOA_PWM1) | \ + PIN_DIGITAL_EN(GPIOA_PWM2) | \ + PIN_DIGITAL_EN(GPIOA_PWM3)) +#define VAL_GPIOA_DMASK (PIN_DMASK_EN(GPIOA_PIN0) | \ + PIN_DMASK_EN(GPIOA_PIN1) | \ + PIN_DMASK_EN(GPIOA_PIN2) | \ + PIN_DMASK_EN(GPIOA_PIN3) | \ + PIN_DMASK_EN(GPIOA_PIN4) | \ + PIN_DMASK_EN(GPIOA_PIN5) | \ + PIN_DMASK_EN(GPIOA_PIN6) | \ + PIN_DMASK_EN(GPIOA_PIN7) | \ + PIN_DMASK_EN(GPIOA_PIN8) | \ + PIN_DMASK_EN(GPIOA_PIN9) | \ + PIN_DMASK_EN(GPIOA_SPI1_MISO0) | \ + PIN_DMASK_EN(GPIOA_SPI1_CLK) | \ + PIN_DMASK_EN(GPIOA_PWM0) | \ + PIN_DMASK_EN(GPIOA_PWM1) | \ + PIN_DMASK_EN(GPIOA_PWM2) | \ + PIN_DMASK_EN(GPIOA_PWM3)) +#define VAL_GPIOA_DBEN (PIN_DBNCE_EN(GPIOA_PIN0) | \ + PIN_DBNCE_EN(GPIOA_PIN1) | \ + PIN_DBNCE_EN(GPIOA_PIN2) | \ + PIN_DBNCE_EN(GPIOA_PIN3) | \ + PIN_DBNCE_EN(GPIOA_PIN4) | \ + PIN_DBNCE_EN(GPIOA_PIN5) | \ + PIN_DBNCE_EN(GPIOA_PIN6) | \ + PIN_DBNCE_EN(GPIOA_PIN7) | \ + PIN_DBNCE_EN(GPIOA_PIN8) | \ + PIN_DBNCE_EN(GPIOA_PIN9) | \ + PIN_DBNCE_EN(GPIOA_SPI1_MISO0) | \ + PIN_DBNCE_EN(GPIOA_SPI1_CLK) | \ + PIN_DBNCE_EN(GPIOA_PWM0) | \ + PIN_DBNCE_EN(GPIOA_PWM1) | \ + PIN_DBNCE_EN(GPIOA_PWM2) | \ + PIN_DBNCE_EN(GPIOA_PWM3)) +#define VAL_GPIOA_IMD (PIN_IMD_EDGE(GPIOA_PIN0) | \ + PIN_IMD_EDGE(GPIOA_PIN1) | \ + PIN_IMD_EDGE(GPIOA_PIN2) | \ + PIN_IMD_EDGE(GPIOA_PIN3) | \ + PIN_IMD_EDGE(GPIOA_PIN4) | \ + PIN_IMD_EDGE(GPIOA_PIN5) | \ + PIN_IMD_EDGE(GPIOA_PIN6) | \ + PIN_IMD_EDGE(GPIOA_PIN7) | \ + PIN_IMD_EDGE(GPIOA_PIN8) | \ + PIN_IMD_EDGE(GPIOA_PIN9) | \ + PIN_IMD_EDGE(GPIOA_SPI1_MISO0) | \ + PIN_IMD_EDGE(GPIOA_SPI1_CLK) | \ + PIN_IMD_EDGE(GPIOA_PWM0) | \ + PIN_IMD_EDGE(GPIOA_PWM1) | \ + PIN_IMD_EDGE(GPIOA_PWM2) | \ + PIN_IMD_EDGE(GPIOA_PWM3)) +#define VAL_GPIOA_IEN (PIN_IEN_FELL_DIS(GPIOA_PIN0) | \ + PIN_IEN_FELL_DIS(GPIOA_PIN1) | \ + PIN_IEN_FELL_DIS(GPIOA_PIN2) | \ + PIN_IEN_FELL_DIS(GPIOA_PIN3) | \ + PIN_IEN_FELL_DIS(GPIOA_PIN4) | \ + PIN_IEN_FELL_DIS(GPIOA_PIN5) | \ + PIN_IEN_FELL_DIS(GPIOA_PIN6) | \ + PIN_IEN_FELL_DIS(GPIOA_PIN7) | \ + PIN_IEN_FELL_DIS(GPIOA_PIN8) | \ + PIN_IEN_FELL_DIS(GPIOA_PIN9) | \ + PIN_IEN_FELL_DIS(GPIOA_SPI1_MISO0) | \ + PIN_IEN_FELL_DIS(GPIOA_SPI1_CLK) | \ + PIN_IEN_FELL_DIS(GPIOA_PWM0) | \ + PIN_IEN_FELL_DIS(GPIOA_PWM1) | \ + PIN_IEN_FELL_DIS(GPIOA_PWM2) | \ + PIN_IEN_FELL_DIS(GPIOA_PWM3)) +#define VAL_GPIOA_ISRC (PIN_ISRC_DIS(GPIOA_PIN0) | \ + PIN_ISRC_DIS(GPIOA_PIN1) | \ + PIN_ISRC_DIS(GPIOA_PIN2) | \ + PIN_ISRC_DIS(GPIOA_PIN3) | \ + PIN_ISRC_DIS(GPIOA_PIN4) | \ + PIN_ISRC_DIS(GPIOA_PIN5) | \ + PIN_ISRC_DIS(GPIOA_PIN6) | \ + PIN_ISRC_DIS(GPIOA_PIN7) | \ + PIN_ISRC_DIS(GPIOA_PIN8) | \ + PIN_ISRC_DIS(GPIOA_PIN9) | \ + PIN_ISRC_DIS(GPIOA_SPI1_MISO0) | \ + PIN_ISRC_DIS(GPIOA_SPI1_CLK) | \ + PIN_ISRC_DIS(GPIOA_PWM0) | \ + PIN_ISRC_DIS(GPIOA_PWM1) | \ + PIN_ISRC_DIS(GPIOA_PWM2) | \ + PIN_ISRC_DIS(GPIOA_PWM3)) +#define VAL_GPIOA_DOUT (PIN_DATA_LOW(GPIOA_PIN0) | \ + PIN_DATA_LOW(GPIOA_PIN1) | \ + PIN_DATA_LOW(GPIOA_PIN2) | \ + PIN_DATA_LOW(GPIOA_PIN3) | \ + PIN_DATA_LOW(GPIOA_PIN4) | \ + PIN_DATA_LOW(GPIOA_PIN5) | \ + PIN_DATA_LOW(GPIOA_PIN6) | \ + PIN_DATA_LOW(GPIOA_PIN7) | \ + PIN_DATA_LOW(GPIOA_PIN8) | \ + PIN_DATA_LOW(GPIOA_PIN9) | \ + PIN_DATA_LOW(GPIOA_SPI1_MISO0) | \ + PIN_DATA_LOW(GPIOA_SPI1_CLK) | \ + PIN_DATA_LOW(GPIOA_PWM0) | \ + PIN_DATA_LOW(GPIOA_PWM1) | \ + PIN_DATA_LOW(GPIOA_PWM2) | \ + PIN_DATA_LOW(GPIOA_PWM3)) + +/* + * GPIOB setup: + * + * PB0 - UART0_RXD (input pullup). + * PB1 - UART0_TXD (output). + * PB2 - UART0_RTS (output). + * PB3 - UART0_CTS (output). + * PB4 - UART1_RXD (output). + * PB5 - UART1_TXD (output). + * PB6 - UART1_RTS (output). + * PB7 - UART1_CTS (output). + * PB8 - TM0 (input pullup). + * PB9 - TM1 (input pullup). + * PB10 - TM2 (input pullup). + * PB11 - PIN11 (input pullup). + * PB12 - CLK0 (output). + * PB13 - PIN13 (output). + * PB14 - INT0 (debug output). + * PB15 - INT1 (input pullup). + */ +#define VAL_GPIOB_PMD (PIN_MODE_INPUT(GPIOB_UART0_RXD) | \ + PIN_MODE_OUTPUT(GPIOB_UART0_TXD) | \ + PIN_MODE_OUTPUT(GPIOB_UART0_RTS) | \ + PIN_MODE_OUTPUT(GPIOB_UART0_CTS) | \ + PIN_MODE_OUTPUT(GPIOB_UART1_RXD) | \ + PIN_MODE_OUTPUT(GPIOB_UART1_TXD) | \ + PIN_MODE_OUTPUT(GPIOB_UART1_RTS) | \ + PIN_MODE_OUTPUT(GPIOB_UART1_CTS) | \ + PIN_MODE_INPUT(GPIOB_TM0) | \ + PIN_MODE_INPUT(GPIOB_TM1) | \ + PIN_MODE_INPUT(GPIOB_TM2) | \ + PIN_MODE_INPUT(GPIOB_PIN11) | \ + PIN_MODE_OUTPUT(GPIOB_CLK0) | \ + PIN_MODE_OUTPUT(GPIOB_PIN13) | \ + PIN_MODE_OUTPUT(GPIOB_INT0) | \ + PIN_MODE_INPUT(GPIOB_INT1)) +#define VAL_GPIOB_OFFD (PIN_DIGITAL_EN(GPIOB_UART0_RXD) | \ + PIN_DIGITAL_DIS(GPIOB_UART0_TXD) | \ + PIN_DIGITAL_DIS(GPIOB_UART0_RTS) | \ + PIN_DIGITAL_DIS(GPIOB_UART0_CTS) | \ + PIN_DIGITAL_DIS(GPIOB_UART1_RXD) | \ + PIN_DIGITAL_DIS(GPIOB_UART1_TXD) | \ + PIN_DIGITAL_DIS(GPIOB_UART1_RTS) | \ + PIN_DIGITAL_DIS(GPIOB_UART1_CTS) | \ + PIN_DIGITAL_DIS(GPIOB_TM0) | \ + PIN_DIGITAL_EN(GPIOB_TM1) | \ + PIN_DIGITAL_EN(GPIOB_TM2) | \ + PIN_DIGITAL_EN(GPIOB_PIN11) | \ + PIN_DIGITAL_DIS(GPIOB_CLK0) | \ + PIN_DIGITAL_DIS(GPIOB_PIN13) | \ + PIN_DIGITAL_DIS(GPIOB_INT0) | \ + PIN_DIGITAL_EN(GPIOB_INT1)) +#define VAL_GPIOB_DMASK (PIN_DMASK_EN(GPIOB_UART0_RXD) | \ + PIN_DMASK_DIS(GPIOB_UART0_TXD) | \ + PIN_DMASK_DIS(GPIOB_UART0_RTS) | \ + PIN_DMASK_DIS(GPIOB_UART0_CTS) | \ + PIN_DMASK_DIS(GPIOB_UART1_RXD) | \ + PIN_DMASK_DIS(GPIOB_UART1_TXD) | \ + PIN_DMASK_DIS(GPIOB_UART1_RTS) | \ + PIN_DMASK_DIS(GPIOB_UART1_CTS) | \ + PIN_DMASK_EN(GPIOB_TM0) | \ + PIN_DMASK_EN(GPIOB_TM1) | \ + PIN_DMASK_EN(GPIOB_TM2) | \ + PIN_DMASK_EN(GPIOB_PIN11) | \ + PIN_DMASK_DIS(GPIOB_CLK0) | \ + PIN_DMASK_DIS(GPIOB_PIN13) | \ + PIN_DMASK_DIS(GPIOB_INT0) | \ + PIN_DMASK_EN(GPIOB_INT1)) +#define VAL_GPIOB_DBEN (PIN_DBNCE_EN(GPIOB_UART0_RXD) | \ + PIN_DBNCE_DIS(GPIOB_UART0_TXD) | \ + PIN_DBNCE_DIS(GPIOB_UART0_RTS) | \ + PIN_DBNCE_DIS(GPIOB_UART0_CTS) | \ + PIN_DBNCE_DIS(GPIOB_UART1_RXD) | \ + PIN_DBNCE_DIS(GPIOB_UART1_TXD) | \ + PIN_DBNCE_DIS(GPIOB_UART1_RTS) | \ + PIN_DBNCE_DIS(GPIOB_UART1_CTS) | \ + PIN_DBNCE_EN(GPIOB_TM0) | \ + PIN_DBNCE_EN(GPIOB_TM1) | \ + PIN_DBNCE_EN(GPIOB_TM2) | \ + PIN_DBNCE_EN(GPIOB_PIN11) | \ + PIN_DBNCE_DIS(GPIOB_CLK0) | \ + PIN_DBNCE_DIS(GPIOB_PIN13) | \ + PIN_DBNCE_DIS(GPIOB_INT0) | \ + PIN_DBNCE_EN(GPIOB_INT1)) +#define VAL_GPIOB_IMD (PIN_IMD_EDGE(GPIOB_UART0_RXD) | \ + PIN_IMD_EDGE(GPIOB_UART0_TXD) | \ + PIN_IMD_EDGE(GPIOB_UART0_RTS) | \ + PIN_IMD_EDGE(GPIOB_UART0_CTS) | \ + PIN_IMD_EDGE(GPIOB_UART1_RXD) | \ + PIN_IMD_EDGE(GPIOB_UART1_TXD) | \ + PIN_IMD_EDGE(GPIOB_UART1_RTS) | \ + PIN_IMD_EDGE(GPIOB_UART1_CTS) | \ + PIN_IMD_EDGE(GPIOB_TM0) | \ + PIN_IMD_EDGE(GPIOB_TM1) | \ + PIN_IMD_EDGE(GPIOB_TM2) | \ + PIN_IMD_EDGE(GPIOB_PIN11) | \ + PIN_IMD_EDGE(GPIOB_CLK0) | \ + PIN_IMD_EDGE(GPIOB_PIN13) | \ + PIN_IMD_EDGE(GPIOB_INT0) | \ + PIN_IMD_EDGE(GPIOB_INT1)) +#define VAL_GPIOB_IEN (PIN_IEN_FELL_DIS(GPIOB_UART0_RXD) | \ + PIN_IEN_FELL_DIS(GPIOB_UART0_TXD) | \ + PIN_IEN_FELL_DIS(GPIOB_UART0_RTS) | \ + PIN_IEN_FELL_DIS(GPIOB_UART0_CTS) | \ + PIN_IEN_FELL_DIS(GPIOB_UART1_RXD) | \ + PIN_IEN_FELL_DIS(GPIOB_UART1_TXD) | \ + PIN_IEN_FELL_DIS(GPIOB_UART1_RTS) | \ + PIN_IEN_FELL_DIS(GPIOB_UART1_CTS) | \ + PIN_IEN_FELL_DIS(GPIOB_TM0) | \ + PIN_IEN_FELL_DIS(GPIOB_TM1) | \ + PIN_IEN_FELL_DIS(GPIOB_TM2) | \ + PIN_IEN_FELL_DIS(GPIOB_PIN11) | \ + PIN_IEN_FELL_DIS(GPIOB_CLK0) | \ + PIN_IEN_FELL_DIS(GPIOB_PIN13) | \ + PIN_IEN_FELL_DIS(GPIOB_INT0) | \ + PIN_IEN_FELL_DIS(GPIOB_INT1)) +#define VAL_GPIOB_ISRC (PIN_ISRC_DIS(GPIOB_UART0_RXD) | \ + PIN_ISRC_DIS(GPIOB_UART0_TXD) | \ + PIN_ISRC_DIS(GPIOB_UART0_RTS) | \ + PIN_ISRC_DIS(GPIOB_UART0_CTS) | \ + PIN_ISRC_DIS(GPIOB_UART1_RXD) | \ + PIN_ISRC_DIS(GPIOB_UART1_TXD) | \ + PIN_ISRC_DIS(GPIOB_UART1_RTS) | \ + PIN_ISRC_DIS(GPIOB_UART1_CTS) | \ + PIN_ISRC_DIS(GPIOB_TM0) | \ + PIN_ISRC_DIS(GPIOB_TM1) | \ + PIN_ISRC_DIS(GPIOB_TM2) | \ + PIN_ISRC_DIS(GPIOB_PIN11) | \ + PIN_ISRC_DIS(GPIOB_CLK0) | \ + PIN_ISRC_DIS(GPIOB_PIN13) | \ + PIN_ISRC_DIS(GPIOB_INT0) | \ + PIN_ISRC_DIS(GPIOB_INT1)) +#define VAL_GPIOB_DOUT (PIN_DATA_LOW(GPIOB_UART0_RXD) | \ + PIN_DATA_LOW(GPIOB_UART0_TXD) | \ + PIN_DATA_LOW(GPIOB_UART0_RTS) | \ + PIN_DATA_LOW(GPIOB_UART0_CTS) | \ + PIN_DATA_LOW(GPIOB_UART1_RXD) | \ + PIN_DATA_LOW(GPIOB_UART1_TXD) | \ + PIN_DATA_LOW(GPIOB_UART1_RTS) | \ + PIN_DATA_LOW(GPIOB_UART1_CTS) | \ + PIN_DATA_LOW(GPIOB_TM0) | \ + PIN_DATA_LOW(GPIOB_TM1) | \ + PIN_DATA_LOW(GPIOB_TM2) | \ + PIN_DATA_LOW(GPIOB_PIN11) | \ + PIN_DATA_LOW(GPIOB_CLK0) | \ + PIN_DATA_LOW(GPIOB_PIN13) | \ + PIN_DATA_LOW(GPIOB_INT0) | \ + PIN_DATA_LOW(GPIOB_INT1)) + +/* + * GPIOC setup: + * + * PC0 - PIN0 (input pullup). + * PC1 - PIN1 (input pullup). + * PC2 - PIN2 (input pullup). + * PC3 - PIN3 (input pullup). + * PC4 - PIN4 (output). + * PC5 - PIN5 (output). + * PC6 - PIN6 (input pullup). + * PC7 - PIN7 (input pullup). + * PC8 - PIN8 (input pullup). + * PC9 - PIN9 (input pullup). + * PC10 - PIN10 (input pullup). + * PC11 - PIN11 (input pullup). + * PC12 - PIN12 (input pullup). + * PC13 - PIN13 (input pullup). + * PC14 - PIN14 (input pullup). + * PC15 - PIN15 (input pullup). + */ +#define VAL_GPIOC_PMD (PIN_MODE_INPUT(GPIOC_PIN0) | \ + PIN_MODE_INPUT(GPIOC_PIN1) | \ + PIN_MODE_INPUT(GPIOC_PIN2) | \ + PIN_MODE_INPUT(GPIOC_PIN3) | \ + PIN_MODE_OUTPUT(GPIOC_PIN4) | \ + PIN_MODE_OUTPUT(GPIOC_PIN5) | \ + PIN_MODE_INPUT(GPIOC_PIN6) | \ + PIN_MODE_INPUT(GPIOC_PIN7) | \ + PIN_MODE_INPUT(GPIOC_PIN8) | \ + PIN_MODE_INPUT(GPIOC_PIN9) | \ + PIN_MODE_INPUT(GPIOC_PIN10) | \ + PIN_MODE_INPUT(GPIOC_PIN11) | \ + PIN_MODE_INPUT(GPIOC_PIN12) | \ + PIN_MODE_INPUT(GPIOC_PIN13) | \ + PIN_MODE_INPUT(GPIOC_PIN14) | \ + PIN_MODE_INPUT(GPIOC_PIN15)) +#define VAL_GPIOC_OFFD (PIN_DIGITAL_EN(GPIOC_PIN0) | \ + PIN_DIGITAL_EN(GPIOC_PIN1) | \ + PIN_DIGITAL_EN(GPIOC_PIN2) | \ + PIN_DIGITAL_EN(GPIOC_PIN3) | \ + PIN_DIGITAL_DIS(GPIOC_PIN4) | \ + PIN_DIGITAL_DIS(GPIOC_PIN5) | \ + PIN_DIGITAL_EN(GPIOC_PIN6) | \ + PIN_DIGITAL_EN(GPIOC_PIN7) | \ + PIN_DIGITAL_EN(GPIOC_PIN8) | \ + PIN_DIGITAL_EN(GPIOC_PIN9) | \ + PIN_DIGITAL_EN(GPIOC_PIN10) | \ + PIN_DIGITAL_EN(GPIOC_PIN11) | \ + PIN_DIGITAL_EN(GPIOC_PIN12) | \ + PIN_DIGITAL_EN(GPIOC_PIN13) | \ + PIN_DIGITAL_EN(GPIOC_PIN14) | \ + PIN_DIGITAL_EN(GPIOC_PIN15)) +#define VAL_GPIOC_DMASK (PIN_DMASK_EN(GPIOC_PIN0) | \ + PIN_DMASK_EN(GPIOC_PIN1) | \ + PIN_DMASK_EN(GPIOC_PIN2) | \ + PIN_DMASK_EN(GPIOC_PIN3) | \ + PIN_DMASK_DIS(GPIOC_PIN4) | \ + PIN_DMASK_DIS(GPIOC_PIN5) | \ + PIN_DMASK_EN(GPIOC_PIN6) | \ + PIN_DMASK_EN(GPIOC_PIN7) | \ + PIN_DMASK_EN(GPIOC_PIN8) | \ + PIN_DMASK_EN(GPIOC_PIN9) | \ + PIN_DMASK_EN(GPIOC_PIN10) | \ + PIN_DMASK_EN(GPIOC_PIN11) | \ + PIN_DMASK_EN(GPIOC_PIN12) | \ + PIN_DMASK_EN(GPIOC_PIN13) | \ + PIN_DMASK_EN(GPIOC_PIN14) | \ + PIN_DMASK_EN(GPIOC_PIN15)) +#define VAL_GPIOC_DBEN (PIN_DBNCE_EN(GPIOC_PIN0) | \ + PIN_DBNCE_EN(GPIOC_PIN1) | \ + PIN_DBNCE_EN(GPIOC_PIN2) | \ + PIN_DBNCE_EN(GPIOC_PIN3) | \ + PIN_DBNCE_DIS(GPIOC_PIN4) | \ + PIN_DBNCE_DIS(GPIOC_PIN5) | \ + PIN_DBNCE_EN(GPIOC_PIN6) | \ + PIN_DBNCE_EN(GPIOC_PIN7) | \ + PIN_DBNCE_EN(GPIOC_PIN8) | \ + PIN_DBNCE_EN(GPIOC_PIN9) | \ + PIN_DBNCE_EN(GPIOC_PIN10) | \ + PIN_DBNCE_EN(GPIOC_PIN11) | \ + PIN_DBNCE_EN(GPIOC_PIN12) | \ + PIN_DBNCE_EN(GPIOC_PIN13) | \ + PIN_DBNCE_EN(GPIOC_PIN14) | \ + PIN_DBNCE_EN(GPIOC_PIN15)) +#define VAL_GPIOC_IMD (PIN_IMD_EDGE(GPIOC_PIN0) | \ + PIN_IMD_EDGE(GPIOC_PIN1) | \ + PIN_IMD_EDGE(GPIOC_PIN2) | \ + PIN_IMD_EDGE(GPIOC_PIN3) | \ + PIN_IMD_EDGE(GPIOC_PIN4) | \ + PIN_IMD_EDGE(GPIOC_PIN5) | \ + PIN_IMD_EDGE(GPIOC_PIN6) | \ + PIN_IMD_EDGE(GPIOC_PIN7) | \ + PIN_IMD_EDGE(GPIOC_PIN8) | \ + PIN_IMD_EDGE(GPIOC_PIN9) | \ + PIN_IMD_EDGE(GPIOC_PIN10) | \ + PIN_IMD_EDGE(GPIOC_PIN11) | \ + PIN_IMD_EDGE(GPIOC_PIN12) | \ + PIN_IMD_EDGE(GPIOC_PIN13) | \ + PIN_IMD_EDGE(GPIOC_PIN14) | \ + PIN_IMD_EDGE(GPIOC_PIN15)) +#define VAL_GPIOC_IEN (PIN_IEN_FELL_DIS(GPIOC_PIN0) | \ + PIN_IEN_FELL_DIS(GPIOC_PIN1) | \ + PIN_IEN_FELL_DIS(GPIOC_PIN2) | \ + PIN_IEN_FELL_DIS(GPIOC_PIN3) | \ + PIN_IEN_FELL_DIS(GPIOC_PIN4) | \ + PIN_IEN_FELL_DIS(GPIOC_PIN5) | \ + PIN_IEN_FELL_DIS(GPIOC_PIN6) | \ + PIN_IEN_FELL_DIS(GPIOC_PIN7) | \ + PIN_IEN_FELL_DIS(GPIOC_PIN8) | \ + PIN_IEN_FELL_DIS(GPIOC_PIN9) | \ + PIN_IEN_FELL_DIS(GPIOC_PIN10) | \ + PIN_IEN_FELL_DIS(GPIOC_PIN11) | \ + PIN_IEN_FELL_DIS(GPIOC_PIN12) | \ + PIN_IEN_FELL_DIS(GPIOC_PIN13) | \ + PIN_IEN_FELL_DIS(GPIOC_PIN14) | \ + PIN_IEN_FELL_DIS(GPIOC_PIN15)) +#define VAL_GPIOC_ISRC (PIN_ISRC_DIS(GPIOC_PIN0) | \ + PIN_ISRC_DIS(GPIOC_PIN1) | \ + PIN_ISRC_DIS(GPIOC_PIN2) | \ + PIN_ISRC_DIS(GPIOC_PIN3) | \ + PIN_ISRC_DIS(GPIOC_PIN4) | \ + PIN_ISRC_DIS(GPIOC_PIN5) | \ + PIN_ISRC_DIS(GPIOC_PIN6) | \ + PIN_ISRC_DIS(GPIOC_PIN7) | \ + PIN_ISRC_DIS(GPIOC_PIN8) | \ + PIN_ISRC_DIS(GPIOC_PIN9) | \ + PIN_ISRC_DIS(GPIOC_PIN10) | \ + PIN_ISRC_DIS(GPIOC_PIN11) | \ + PIN_ISRC_DIS(GPIOC_PIN12) | \ + PIN_ISRC_DIS(GPIOC_PIN13) | \ + PIN_ISRC_DIS(GPIOC_PIN14) | \ + PIN_ISRC_DIS(GPIOC_PIN15)) +#define VAL_GPIOC_DOUT (PIN_DATA_LOW(GPIOC_PIN0) | \ + PIN_DATA_LOW(GPIOC_PIN1) | \ + PIN_DATA_LOW(GPIOC_PIN2) | \ + PIN_DATA_LOW(GPIOC_PIN3) | \ + PIN_DATA_LOW(GPIOC_PIN4) | \ + PIN_DATA_LOW(GPIOC_PIN5) | \ + PIN_DATA_LOW(GPIOC_PIN6) | \ + PIN_DATA_LOW(GPIOC_PIN7) | \ + PIN_DATA_LOW(GPIOC_PIN8) | \ + PIN_DATA_LOW(GPIOC_PIN9) | \ + PIN_DATA_LOW(GPIOC_PIN10) | \ + PIN_DATA_LOW(GPIOC_PIN11) | \ + PIN_DATA_LOW(GPIOC_PIN12) | \ + PIN_DATA_LOW(GPIOC_PIN13) | \ + PIN_DATA_LOW(GPIOC_PIN14) | \ + PIN_DATA_LOW(GPIOC_PIN15)) + +/* + * GPIOD setup: + * + * PD0 - ADC0 (input pullup). + * PD1 - ADC1 (input pullup). + * PD2 - ADC2 (input pullup). + * PD3 - ADC3 (output). + * PD4 - ADC4 (output). + * PD5 - ADC5 (output). + * PD6 - PIN6 (input pullup). + * PD7 - PIN7 (input pullup). + * PD8 - PIN8 (input pullup). + * PD9 - PIN9 (output). + * PD10 - PIN10 (debug output). + * PD11 - PIN11 (output). + * PD12 - PIN12 (input pullup). + * PD13 - PIN13 (input pullup). + * PD14 - PIN14 (input pullup). + * PD15 - PIN15 (input pullup). + */ +#define VAL_GPIOD_PMD (PIN_MODE_INPUT(GPIOD_ADC0) | \ + PIN_MODE_INPUT(GPIOD_ADC1) | \ + PIN_MODE_INPUT(GPIOD_ADC2) | \ + PIN_MODE_OUTPUT(GPIOD_ADC3) | \ + PIN_MODE_OUTPUT(GPIOD_ADC4) | \ + PIN_MODE_OUTPUT(GPIOD_ADC5) | \ + PIN_MODE_INPUT(GPIOD_PIN6) | \ + PIN_MODE_INPUT(GPIOD_PIN7) | \ + PIN_MODE_INPUT(GPIOD_PIN8) | \ + PIN_MODE_OUTPUT(GPIOD_PIN9) | \ + PIN_MODE_OUTPUT(GPIOD_PIN10) | \ + PIN_MODE_OUTPUT(GPIOD_PIN11) | \ + PIN_MODE_INPUT(GPIOD_PIN12) | \ + PIN_MODE_INPUT(GPIOD_PIN13) | \ + PIN_MODE_INPUT(GPIOD_PIN14) | \ + PIN_MODE_INPUT(GPIOD_PIN15)) +#define VAL_GPIOD_OFFD (PIN_DIGITAL_EN(GPIOD_ADC0) | \ + PIN_DIGITAL_EN(GPIOD_ADC1) | \ + PIN_DIGITAL_EN(GPIOD_ADC2) | \ + PIN_DIGITAL_DIS(GPIOD_ADC3) | \ + PIN_DIGITAL_DIS(GPIOD_ADC4) | \ + PIN_DIGITAL_DIS(GPIOD_ADC5) | \ + PIN_DIGITAL_EN(GPIOD_PIN6) | \ + PIN_DIGITAL_EN(GPIOD_PIN7) | \ + PIN_DIGITAL_EN(GPIOD_PIN8) | \ + PIN_DIGITAL_DIS(GPIOD_PIN9) | \ + PIN_DIGITAL_DIS(GPIOD_PIN10) | \ + PIN_DIGITAL_DIS(GPIOD_PIN11) | \ + PIN_DIGITAL_EN(GPIOD_PIN12) | \ + PIN_DIGITAL_EN(GPIOD_PIN13) | \ + PIN_DIGITAL_EN(GPIOD_PIN14) | \ + PIN_DIGITAL_EN(GPIOD_PIN15)) +#define VAL_GPIOD_DMASK (PIN_DMASK_EN(GPIOD_ADC0) | \ + PIN_DMASK_EN(GPIOD_ADC1) | \ + PIN_DMASK_EN(GPIOD_ADC2) | \ + PIN_DMASK_DIS(GPIOD_ADC3) | \ + PIN_DMASK_DIS(GPIOD_ADC4) | \ + PIN_DMASK_DIS(GPIOD_ADC5) | \ + PIN_DMASK_EN(GPIOD_PIN6) | \ + PIN_DMASK_EN(GPIOD_PIN7) | \ + PIN_DMASK_EN(GPIOD_PIN8) | \ + PIN_DMASK_DIS(GPIOD_PIN9) | \ + PIN_DMASK_DIS(GPIOD_PIN10) | \ + PIN_DMASK_DIS(GPIOD_PIN11) | \ + PIN_DMASK_EN(GPIOD_PIN12) | \ + PIN_DMASK_EN(GPIOD_PIN13) | \ + PIN_DMASK_EN(GPIOD_PIN14) | \ + PIN_DMASK_EN(GPIOD_PIN15)) +#define VAL_GPIOD_DBEN (PIN_DBNCE_EN(GPIOD_ADC0) | \ + PIN_DBNCE_EN(GPIOD_ADC1) | \ + PIN_DBNCE_EN(GPIOD_ADC2) | \ + PIN_DBNCE_DIS(GPIOD_ADC3) | \ + PIN_DBNCE_DIS(GPIOD_ADC4) | \ + PIN_DBNCE_DIS(GPIOD_ADC5) | \ + PIN_DBNCE_EN(GPIOD_PIN6) | \ + PIN_DBNCE_EN(GPIOD_PIN7) | \ + PIN_DBNCE_EN(GPIOD_PIN8) | \ + PIN_DBNCE_DIS(GPIOD_PIN9) | \ + PIN_DBNCE_DIS(GPIOD_PIN10) | \ + PIN_DBNCE_DIS(GPIOD_PIN11) | \ + PIN_DBNCE_EN(GPIOD_PIN12) | \ + PIN_DBNCE_EN(GPIOD_PIN13) | \ + PIN_DBNCE_EN(GPIOD_PIN14) | \ + PIN_DBNCE_EN(GPIOD_PIN15)) +#define VAL_GPIOD_IMD (PIN_IMD_EDGE(GPIOD_ADC0) | \ + PIN_IMD_EDGE(GPIOD_ADC1) | \ + PIN_IMD_EDGE(GPIOD_ADC2) | \ + PIN_IMD_EDGE(GPIOD_ADC3) | \ + PIN_IMD_EDGE(GPIOD_ADC4) | \ + PIN_IMD_EDGE(GPIOD_ADC5) | \ + PIN_IMD_EDGE(GPIOD_PIN6) | \ + PIN_IMD_EDGE(GPIOD_PIN7) | \ + PIN_IMD_EDGE(GPIOD_PIN8) | \ + PIN_IMD_EDGE(GPIOD_PIN9) | \ + PIN_IMD_EDGE(GPIOD_PIN10) | \ + PIN_IMD_EDGE(GPIOD_PIN11) | \ + PIN_IMD_EDGE(GPIOD_PIN12) | \ + PIN_IMD_EDGE(GPIOD_PIN13) | \ + PIN_IMD_EDGE(GPIOD_PIN14) | \ + PIN_IMD_EDGE(GPIOD_PIN15)) +#define VAL_GPIOD_IEN (PIN_IEN_FELL_DIS(GPIOD_ADC0) | \ + PIN_IEN_FELL_DIS(GPIOD_ADC1) | \ + PIN_IEN_FELL_DIS(GPIOD_ADC2) | \ + PIN_IEN_FELL_DIS(GPIOD_ADC3) | \ + PIN_IEN_FELL_DIS(GPIOD_ADC4) | \ + PIN_IEN_FELL_DIS(GPIOD_ADC5) | \ + PIN_IEN_FELL_DIS(GPIOD_PIN6) | \ + PIN_IEN_FELL_DIS(GPIOD_PIN7) | \ + PIN_IEN_FELL_DIS(GPIOD_PIN8) | \ + PIN_IEN_FELL_DIS(GPIOD_PIN9) | \ + PIN_IEN_FELL_DIS(GPIOD_PIN10) | \ + PIN_IEN_FELL_DIS(GPIOD_PIN11) | \ + PIN_IEN_FELL_DIS(GPIOD_PIN12) | \ + PIN_IEN_FELL_DIS(GPIOD_PIN13) | \ + PIN_IEN_FELL_DIS(GPIOD_PIN14) | \ + PIN_IEN_FELL_DIS(GPIOD_PIN15)) +#define VAL_GPIOD_ISRC (PIN_ISRC_DIS(GPIOD_ADC0) | \ + PIN_ISRC_DIS(GPIOD_ADC1) | \ + PIN_ISRC_DIS(GPIOD_ADC2) | \ + PIN_ISRC_DIS(GPIOD_ADC3) | \ + PIN_ISRC_DIS(GPIOD_ADC4) | \ + PIN_ISRC_DIS(GPIOD_ADC5) | \ + PIN_ISRC_DIS(GPIOD_PIN6) | \ + PIN_ISRC_DIS(GPIOD_PIN7) | \ + PIN_ISRC_DIS(GPIOD_PIN8) | \ + PIN_ISRC_DIS(GPIOD_PIN9) | \ + PIN_ISRC_DIS(GPIOD_PIN10) | \ + PIN_ISRC_DIS(GPIOD_PIN11) | \ + PIN_ISRC_DIS(GPIOD_PIN12) | \ + PIN_ISRC_DIS(GPIOD_PIN13) | \ + PIN_ISRC_DIS(GPIOD_PIN14) | \ + PIN_ISRC_DIS(GPIOD_PIN15)) +#define VAL_GPIOD_DOUT (PIN_DATA_LOW(GPIOD_ADC0) | \ + PIN_DATA_LOW(GPIOD_ADC1) | \ + PIN_DATA_LOW(GPIOD_ADC2) | \ + PIN_DATA_LOW(GPIOD_ADC3) | \ + PIN_DATA_LOW(GPIOD_ADC4) | \ + PIN_DATA_LOW(GPIOD_ADC5) | \ + PIN_DATA_LOW(GPIOD_PIN6) | \ + PIN_DATA_LOW(GPIOD_PIN7) | \ + PIN_DATA_LOW(GPIOD_PIN8) | \ + PIN_DATA_LOW(GPIOD_PIN9) | \ + PIN_DATA_LOW(GPIOD_PIN10) | \ + PIN_DATA_LOW(GPIOD_PIN11) | \ + PIN_DATA_LOW(GPIOD_PIN12) | \ + PIN_DATA_LOW(GPIOD_PIN13) | \ + PIN_DATA_LOW(GPIOD_PIN14) | \ + PIN_DATA_LOW(GPIOD_PIN15)) + +/* + * GPIOF setup: + * + * PF0 - OSC_IN (input floating). + * PF1 - OSC_OUT (input floating). + * PF2 - I2C0_SDA (input pullup). + * PF3 - I2C0_SCL (input pullup). + * PF4 - PIN4 (input pullup). + * PF5 - PIN5 (input pullup). + * PF6 - PIN6 (input pullup). + * PF7 - PIN7 (input pullup). + * PF8 - PIN8 (input pullup). + * PF9 - PIN9 (input pullup). + * PF10 - PIN10 (input pullup). + * PF11 - PIN11 (input pullup). + * PF12 - PIN12 (input pullup). + * PF13 - PIN13 (input pullup). + * PF14 - PIN14 (input pullup). + * PF15 - PIN15 (input pullup). + */ +#define VAL_GPIOF_PMD (PIN_MODE_QUASI(GPIOF_OSC_IN) | \ + PIN_MODE_QUASI(GPIOF_OSC_OUT) | \ + PIN_MODE_INPUT(GPIOF_I2C0_SDA) | \ + PIN_MODE_INPUT(GPIOF_I2C0_SCL) | \ + PIN_MODE_INPUT(GPIOF_PIN4) | \ + PIN_MODE_INPUT(GPIOF_PIN5) | \ + PIN_MODE_INPUT(GPIOF_PIN6) | \ + PIN_MODE_INPUT(GPIOF_PIN7) | \ + PIN_MODE_INPUT(GPIOF_PIN8) | \ + PIN_MODE_INPUT(GPIOF_PIN9) | \ + PIN_MODE_INPUT(GPIOF_PIN10) | \ + PIN_MODE_INPUT(GPIOF_PIN11) | \ + PIN_MODE_INPUT(GPIOF_PIN12) | \ + PIN_MODE_INPUT(GPIOF_PIN13) | \ + PIN_MODE_INPUT(GPIOF_PIN14) | \ + PIN_MODE_INPUT(GPIOF_PIN15)) +#define VAL_GPIOF_OFFD (PIN_DIGITAL_DIS(GPIOF_OSC_IN) | \ + PIN_DIGITAL_DIS(GPIOF_OSC_OUT) | \ + PIN_DIGITAL_EN(GPIOF_I2C0_SDA) | \ + PIN_DIGITAL_EN(GPIOF_I2C0_SCL) | \ + PIN_DIGITAL_EN(GPIOF_PIN4) | \ + PIN_DIGITAL_EN(GPIOF_PIN5) | \ + PIN_DIGITAL_EN(GPIOF_PIN6) | \ + PIN_DIGITAL_EN(GPIOF_PIN7) | \ + PIN_DIGITAL_EN(GPIOF_PIN8) | \ + PIN_DIGITAL_EN(GPIOF_PIN9) | \ + PIN_DIGITAL_EN(GPIOF_PIN10) | \ + PIN_DIGITAL_EN(GPIOF_PIN11) | \ + PIN_DIGITAL_EN(GPIOF_PIN12) | \ + PIN_DIGITAL_EN(GPIOF_PIN13) | \ + PIN_DIGITAL_EN(GPIOF_PIN14) | \ + PIN_DIGITAL_EN(GPIOF_PIN15)) +#define VAL_GPIOF_DMASK (PIN_DMASK_DIS(GPIOF_OSC_IN) | \ + PIN_DMASK_DIS(GPIOF_OSC_OUT) | \ + PIN_DMASK_EN(GPIOF_I2C0_SDA) | \ + PIN_DMASK_EN(GPIOF_I2C0_SCL) | \ + PIN_DMASK_EN(GPIOF_PIN4) | \ + PIN_DMASK_EN(GPIOF_PIN5) | \ + PIN_DMASK_EN(GPIOF_PIN6) | \ + PIN_DMASK_EN(GPIOF_PIN7) | \ + PIN_DMASK_EN(GPIOF_PIN8) | \ + PIN_DMASK_EN(GPIOF_PIN9) | \ + PIN_DMASK_EN(GPIOF_PIN10) | \ + PIN_DMASK_EN(GPIOF_PIN11) | \ + PIN_DMASK_EN(GPIOF_PIN12) | \ + PIN_DMASK_EN(GPIOF_PIN13) | \ + PIN_DMASK_EN(GPIOF_PIN14) | \ + PIN_DMASK_EN(GPIOF_PIN15)) +#define VAL_GPIOF_DBEN (PIN_DBNCE_DIS(GPIOF_OSC_IN) | \ + PIN_DBNCE_DIS(GPIOF_OSC_OUT) | \ + PIN_DBNCE_EN(GPIOF_I2C0_SDA) | \ + PIN_DBNCE_EN(GPIOF_I2C0_SCL) | \ + PIN_DBNCE_EN(GPIOF_PIN4) | \ + PIN_DBNCE_EN(GPIOF_PIN5) | \ + PIN_DBNCE_EN(GPIOF_PIN6) | \ + PIN_DBNCE_EN(GPIOF_PIN7) | \ + PIN_DBNCE_EN(GPIOF_PIN8) | \ + PIN_DBNCE_EN(GPIOF_PIN9) | \ + PIN_DBNCE_EN(GPIOF_PIN10) | \ + PIN_DBNCE_EN(GPIOF_PIN11) | \ + PIN_DBNCE_EN(GPIOF_PIN12) | \ + PIN_DBNCE_EN(GPIOF_PIN13) | \ + PIN_DBNCE_EN(GPIOF_PIN14) | \ + PIN_DBNCE_EN(GPIOF_PIN15)) +#define VAL_GPIOF_IMD (PIN_IMD_LVL(GPIOF_OSC_IN) | \ + PIN_IMD_LVL(GPIOF_OSC_OUT) | \ + PIN_IMD_EDGE(GPIOF_I2C0_SDA) | \ + PIN_IMD_EDGE(GPIOF_I2C0_SCL) | \ + PIN_IMD_EDGE(GPIOF_PIN4) | \ + PIN_IMD_EDGE(GPIOF_PIN5) | \ + PIN_IMD_EDGE(GPIOF_PIN6) | \ + PIN_IMD_EDGE(GPIOF_PIN7) | \ + PIN_IMD_EDGE(GPIOF_PIN8) | \ + PIN_IMD_EDGE(GPIOF_PIN9) | \ + PIN_IMD_EDGE(GPIOF_PIN10) | \ + PIN_IMD_EDGE(GPIOF_PIN11) | \ + PIN_IMD_EDGE(GPIOF_PIN12) | \ + PIN_IMD_EDGE(GPIOF_PIN13) | \ + PIN_IMD_EDGE(GPIOF_PIN14) | \ + PIN_IMD_EDGE(GPIOF_PIN15)) +#define VAL_GPIOF_IEN (PIN_IEN_FELL_DIS(GPIOF_OSC_IN) | \ + PIN_IEN_FELL_DIS(GPIOF_OSC_OUT) | \ + PIN_IEN_FELL_DIS(GPIOF_I2C0_SDA) | \ + PIN_IEN_FELL_DIS(GPIOF_I2C0_SCL) | \ + PIN_IEN_FELL_DIS(GPIOF_PIN4) | \ + PIN_IEN_FELL_DIS(GPIOF_PIN5) | \ + PIN_IEN_FELL_DIS(GPIOF_PIN6) | \ + PIN_IEN_FELL_DIS(GPIOF_PIN7) | \ + PIN_IEN_FELL_DIS(GPIOF_PIN8) | \ + PIN_IEN_FELL_DIS(GPIOF_PIN9) | \ + PIN_IEN_FELL_DIS(GPIOF_PIN10) | \ + PIN_IEN_FELL_DIS(GPIOF_PIN11) | \ + PIN_IEN_FELL_DIS(GPIOF_PIN12) | \ + PIN_IEN_FELL_DIS(GPIOF_PIN13) | \ + PIN_IEN_FELL_DIS(GPIOF_PIN14) | \ + PIN_IEN_FELL_DIS(GPIOF_PIN15)) +#define VAL_GPIOF_ISRC (PIN_ISRC_DIS(GPIOF_OSC_IN) | \ + PIN_ISRC_DIS(GPIOF_OSC_OUT) | \ + PIN_ISRC_DIS(GPIOF_I2C0_SDA) | \ + PIN_ISRC_DIS(GPIOF_I2C0_SCL) | \ + PIN_ISRC_DIS(GPIOF_PIN4) | \ + PIN_ISRC_DIS(GPIOF_PIN5) | \ + PIN_ISRC_DIS(GPIOF_PIN6) | \ + PIN_ISRC_DIS(GPIOF_PIN7) | \ + PIN_ISRC_DIS(GPIOF_PIN8) | \ + PIN_ISRC_DIS(GPIOF_PIN9) | \ + PIN_ISRC_DIS(GPIOF_PIN10) | \ + PIN_ISRC_DIS(GPIOF_PIN11) | \ + PIN_ISRC_DIS(GPIOF_PIN12) | \ + PIN_ISRC_DIS(GPIOF_PIN13) | \ + PIN_ISRC_DIS(GPIOF_PIN14) | \ + PIN_ISRC_DIS(GPIOF_PIN15)) +#define VAL_GPIOF_DOUT (PIN_DATA_LOW(GPIOF_OSC_IN) | \ + PIN_DATA_LOW(GPIOF_OSC_OUT) | \ + PIN_DATA_LOW(GPIOF_I2C0_SDA) | \ + PIN_DATA_LOW(GPIOF_I2C0_SCL) | \ + PIN_DATA_LOW(GPIOF_PIN4) | \ + PIN_DATA_LOW(GPIOF_PIN5) | \ + PIN_DATA_LOW(GPIOF_PIN6) | \ + PIN_DATA_LOW(GPIOF_PIN7) | \ + PIN_DATA_LOW(GPIOF_PIN8) | \ + PIN_DATA_LOW(GPIOF_PIN9) | \ + PIN_DATA_LOW(GPIOF_PIN10) | \ + PIN_DATA_LOW(GPIOF_PIN11) | \ + PIN_DATA_LOW(GPIOF_PIN12) | \ + PIN_DATA_LOW(GPIOF_PIN13) | \ + PIN_DATA_LOW(GPIOF_PIN14) | \ + PIN_DATA_LOW(GPIOF_PIN15)) + + +#if !defined(_FROM_ASM_) +#ifdef __cplusplus +extern "C" { +#endif + void boardInit(void); +#ifdef __cplusplus +} +#endif +#endif /* _FROM_ASM_ */ + +#endif /* BOARD_H */ diff --git a/keyboards/ducky/one2mini/1861st/boards/NUC123SD4AN0/board.mk b/keyboards/ducky/one2mini/1861st/boards/NUC123SD4AN0/board.mk new file mode 100644 index 000000000000..dd9917fc6adc --- /dev/null +++ b/keyboards/ducky/one2mini/1861st/boards/NUC123SD4AN0/board.mk @@ -0,0 +1,5 @@ +# List of all the board related files. +BOARDSRC = $(BOARD_PATH)/boards/NUC123SD4AN0/board.c + +# Required include directories +BOARDINC = $(BOARD_PATH)/boards/NUC123SD4AN0 diff --git a/keyboards/ducky/one2mini/1861st/chconf.h b/keyboards/ducky/one2mini/1861st/chconf.h new file mode 100644 index 000000000000..617be40dd90c --- /dev/null +++ b/keyboards/ducky/one2mini/1861st/chconf.h @@ -0,0 +1,23 @@ +/* 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 . + */ + +#pragma once + +#define CH_CFG_ST_FREQUENCY 10000 +#define CH_CFG_ST_TIMEDELTA 0 +#define CH_CFG_USE_WAITEXIT TRUE + +#include_next diff --git a/keyboards/ducky/one2mini/1861st/config.h b/keyboards/ducky/one2mini/1861st/config.h new file mode 100644 index 000000000000..3f5676280c18 --- /dev/null +++ b/keyboards/ducky/one2mini/1861st/config.h @@ -0,0 +1,56 @@ +/* +Copyright 2019 /u/KeepItUnder + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x0416 +#define PRODUCT_ID 0x0123 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Ducky +#define PRODUCT One2mini + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * 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 { D11, B4, B5, B6, B7 } +#define MATRIX_COL_PINS { B10, B9, C13, C12, C11, C10, C9, C8, A15, A14, A13, D0, D1, D2, B8 } +#define DIP_SWITCH_MATRIX_GRID { {0,14}, {1,14}, {2,14}, {3,14} } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +#define FORCE_NKRO + +#define GPIO_INPUT_PIN_DELAY (NUC123_HCLK / 6 / 1000000L) diff --git a/keyboards/ducky/one2mini/1861st/info.json b/keyboards/ducky/one2mini/1861st/info.json new file mode 100644 index 000000000000..9e121fbf4b04 --- /dev/null +++ b/keyboards/ducky/one2mini/1861st/info.json @@ -0,0 +1,220 @@ +{ + "keyboard_name": "Ducky One 2 Mini", + "layout_aliases": { + "LAYOUT_iso": "LAYOUT_60_iso" + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + { "x": 0, "y": 0, "w": 1, "label": "ESC" }, + { "x": 1, "y": 0, "w": 1, "label": "1" }, + { "x": 2, "y": 0, "w": 1, "label": "2" }, + { "x": 3, "y": 0, "w": 1, "label": "3" }, + { "x": 4, "y": 0, "w": 1, "label": "4" }, + { "x": 5, "y": 0, "w": 1, "label": "5" }, + { "x": 6, "y": 0, "w": 1, "label": "6" }, + { "x": 7, "y": 0, "w": 1, "label": "7" }, + { "x": 8, "y": 0, "w": 1, "label": "8" }, + { "x": 9, "y": 0, "w": 1, "label": "9" }, + { "x": 10, "y": 0, "w": 1, "label": "0" }, + { "x": 11, "y": 0, "w": 1, "label": "DASH" }, + { "x": 12, "y": 0, "w": 1, "label": "EQUALSIGN" }, + { "x": 13, "y": 0, "w": 2, "label": "BACKSPACE" }, + + { "x": 0, "y": 1, "w": 1.5, "label": "TAB" }, + { "x": 1.5, "y": 1, "w": 1, "label": "Q" }, + { "x": 2.5, "y": 1, "w": 1, "label": "W" }, + { "x": 3.5, "y": 1, "w": 1, "label": "E" }, + { "x": 4.5, "y": 1, "w": 1, "label": "R" }, + { "x": 5.5, "y": 1, "w": 1, "label": "T" }, + { "x": 6.5, "y": 1, "w": 1, "label": "Y" }, + { "x": 7.5, "y": 1, "w": 1, "label": "U" }, + { "x": 8.5, "y": 1, "w": 1, "label": "I" }, + { "x": 9.5, "y": 1, "w": 1, "label": "O" }, + { "x": 10.5, "y": 1, "w": 1, "label": "P" }, + { "x": 11.5, "y": 1, "w": 1, "label": "LBRACKET" }, + { "x": 12.5, "y": 1, "w": 1, "label": "RBRACKET" }, + { "x": 13.5, "y": 1, "w": 1.5, "label": "BACKSLASH" }, + + { "x": 0, "y": 2, "w": 1.75, "label": "CAPSLOCK" }, + { "x": 1.75, "y": 2, "w": 1, "label": "A" }, + { "x": 2.75, "y": 2, "w": 1, "label": "S" }, + { "x": 3.75, "y": 2, "w": 1, "label": "D" }, + { "x": 4.75, "y": 2, "w": 1, "label": "F" }, + { "x": 5.75, "y": 2, "w": 1, "label": "G" }, + { "x": 6.75, "y": 2, "w": 1, "label": "H" }, + { "x": 7.75, "y": 2, "w": 1, "label": "J" }, + { "x": 8.75, "y": 2, "w": 1, "label": "K" }, + { "x": 9.75, "y": 2, "w": 1, "label": "L" }, + { "x": 10.75, "y": 2, "w": 1, "label": "SEMICOLON" }, + { "x": 11.75, "y": 2, "w": 1, "label": "QUOTE" }, + { "x": 12.75, "y": 2, "w": 1, "label": "ISOHASH" }, + { "x": 13.75, "y": 2, "w": 1.25, "label": "ENTER" }, + + { "x": 0, "y": 3, "w": 1.25, "label": "LSHIFT" }, + { "x": 1.25, "y": 3, "w": 1, "label": "ISOBACKSLASH" }, + { "x": 2.25, "y": 3, "w": 1, "label": "Z" }, + { "x": 3.25, "y": 3, "w": 1, "label": "X" }, + { "x": 4.25, "y": 3, "w": 1, "label": "C" }, + { "x": 5.25, "y": 3, "w": 1, "label": "V" }, + { "x": 6.25, "y": 3, "w": 1, "label": "B" }, + { "x": 7.25, "y": 3, "w": 1, "label": "N" }, + { "x": 8.25, "y": 3, "w": 1, "label": "M" }, + { "x": 9.25, "y": 3, "w": 1, "label": "COMMA" }, + { "x": 10.25, "y": 3, "w": 1, "label": "PERIOD" }, + { "x": 11.25, "y": 3, "w": 1, "label": "SLASH" }, + { "x": 12.25, "y": 3, "w": 2.75, "label": "RSHIFT" }, + + { "x": 0, "y": 4, "w": 1.25, "label": "LCTRL" }, + { "x": 1.25, "y": 4, "w": 1.25, "label": "LCMD" }, + { "x": 2.5, "y": 4, "w": 1.25, "label": "LALT" }, + { "x": 3.75, "y": 4, "w": 6.25, "label": "SPACE" }, + { "x": 10, "y": 4, "w": 1.25, "label": "RALT" }, + { "x": 11.25, "y": 4, "w": 1.25, "label": "RCMD" }, + { "x": 12.5, "y": 4, "w": 1.25, "label": "FN" }, + { "x": 13.75, "y": 4, "w": 1.25, "label": "RCTRL" } + ] + }, + + "LAYOUT_60_ansi": { + "layout": [ + { "x": 0, "y": 0, "w": 1, "label": "ESC" }, + { "x": 1, "y": 0, "w": 1, "label": "1" }, + { "x": 2, "y": 0, "w": 1, "label": "2" }, + { "x": 3, "y": 0, "w": 1, "label": "3" }, + { "x": 4, "y": 0, "w": 1, "label": "4" }, + { "x": 5, "y": 0, "w": 1, "label": "5" }, + { "x": 6, "y": 0, "w": 1, "label": "6" }, + { "x": 7, "y": 0, "w": 1, "label": "7" }, + { "x": 8, "y": 0, "w": 1, "label": "8" }, + { "x": 9, "y": 0, "w": 1, "label": "9" }, + { "x": 10, "y": 0, "w": 1, "label": "0" }, + { "x": 11, "y": 0, "w": 1, "label": "DASH" }, + { "x": 12, "y": 0, "w": 1, "label": "EQUALSIGN" }, + { "x": 13, "y": 0, "w": 2, "label": "BACKSPACE" }, + + { "x": 0, "y": 1, "w": 1.5, "label": "TAB" }, + { "x": 1.5, "y": 1, "w": 1, "label": "Q" }, + { "x": 2.5, "y": 1, "w": 1, "label": "W" }, + { "x": 3.5, "y": 1, "w": 1, "label": "E" }, + { "x": 4.5, "y": 1, "w": 1, "label": "R" }, + { "x": 5.5, "y": 1, "w": 1, "label": "T" }, + { "x": 6.5, "y": 1, "w": 1, "label": "Y" }, + { "x": 7.5, "y": 1, "w": 1, "label": "U" }, + { "x": 8.5, "y": 1, "w": 1, "label": "I" }, + { "x": 9.5, "y": 1, "w": 1, "label": "O" }, + { "x": 10.5, "y": 1, "w": 1, "label": "P" }, + { "x": 11.5, "y": 1, "w": 1, "label": "LBRACKET" }, + { "x": 12.5, "y": 1, "w": 1, "label": "RBRACKET" }, + { "x": 13.5, "y": 1, "w": 1.5, "label": "BACKSLASH" }, + + { "x": 0, "y": 2, "w": 1.75, "label": "CAPSLOCK" }, + { "x": 1.75, "y": 2, "w": 1, "label": "A" }, + { "x": 2.75, "y": 2, "w": 1, "label": "S" }, + { "x": 3.75, "y": 2, "w": 1, "label": "D" }, + { "x": 4.75, "y": 2, "w": 1, "label": "F" }, + { "x": 5.75, "y": 2, "w": 1, "label": "G" }, + { "x": 6.75, "y": 2, "w": 1, "label": "H" }, + { "x": 7.75, "y": 2, "w": 1, "label": "J" }, + { "x": 8.75, "y": 2, "w": 1, "label": "K" }, + { "x": 9.75, "y": 2, "w": 1, "label": "L" }, + { "x": 10.75, "y": 2, "w": 1, "label": "SEMICOLON" }, + { "x": 11.75, "y": 2, "w": 1, "label": "QUOTE" }, + { "x": 12.75, "y": 2, "w": 2.25, "label": "ENTER" }, + + { "x": 0, "y": 3, "w": 2.25, "label": "LSHIFT" }, + { "x": 2.25, "y": 3, "w": 1, "label": "Z" }, + { "x": 3.25, "y": 3, "w": 1, "label": "X" }, + { "x": 4.25, "y": 3, "w": 1, "label": "C" }, + { "x": 5.25, "y": 3, "w": 1, "label": "V" }, + { "x": 6.25, "y": 3, "w": 1, "label": "B" }, + { "x": 7.25, "y": 3, "w": 1, "label": "N" }, + { "x": 8.25, "y": 3, "w": 1, "label": "M" }, + { "x": 9.25, "y": 3, "w": 1, "label": "COMMA" }, + { "x": 10.25, "y": 3, "w": 1, "label": "PERIOD" }, + { "x": 11.25, "y": 3, "w": 1, "label": "SLASH" }, + { "x": 12.25, "y": 3, "w": 2.75, "label": "RSHIFT" }, + + { "x": 0, "y": 4, "w": 1.25, "label": "LCTRL" }, + { "x": 1.25, "y": 4, "w": 1.25, "label": "LCMD" }, + { "x": 2.5, "y": 4, "w": 1.25, "label": "LALT" }, + { "x": 3.75, "y": 4, "w": 6.25, "label": "SPACE" }, + { "x": 10, "y": 4, "w": 1.25, "label": "RALT" }, + { "x": 11.25, "y": 4, "w": 1.25, "label": "RCMD" }, + { "x": 12.5, "y": 4, "w": 1.25, "label": "FN" }, + { "x": 13.75, "y": 4, "w": 1.25, "label": "RCTRL" } + ] + }, + + "LAYOUT_60_iso": { + "layout": [ + { "x": 0, "y": 0, "w": 1, "label": "ESC" }, + { "x": 1, "y": 0, "w": 1, "label": "1" }, + { "x": 2, "y": 0, "w": 1, "label": "2" }, + { "x": 3, "y": 0, "w": 1, "label": "3" }, + { "x": 4, "y": 0, "w": 1, "label": "4" }, + { "x": 5, "y": 0, "w": 1, "label": "5" }, + { "x": 6, "y": 0, "w": 1, "label": "6" }, + { "x": 7, "y": 0, "w": 1, "label": "7" }, + { "x": 8, "y": 0, "w": 1, "label": "8" }, + { "x": 9, "y": 0, "w": 1, "label": "9" }, + { "x": 10, "y": 0, "w": 1, "label": "0" }, + { "x": 11, "y": 0, "w": 1, "label": "DASH" }, + { "x": 12, "y": 0, "w": 1, "label": "EQUALSIGN" }, + { "x": 13, "y": 0, "w": 2, "label": "BACKSPACE" }, + + { "x": 0, "y": 1, "w": 1.5, "label": "TAB" }, + { "x": 1.5, "y": 1, "w": 1, "label": "Q" }, + { "x": 2.5, "y": 1, "w": 1, "label": "W" }, + { "x": 3.5, "y": 1, "w": 1, "label": "E" }, + { "x": 4.5, "y": 1, "w": 1, "label": "R" }, + { "x": 5.5, "y": 1, "w": 1, "label": "T" }, + { "x": 6.5, "y": 1, "w": 1, "label": "Y" }, + { "x": 7.5, "y": 1, "w": 1, "label": "U" }, + { "x": 8.5, "y": 1, "w": 1, "label": "I" }, + { "x": 9.5, "y": 1, "w": 1, "label": "O" }, + { "x": 10.5, "y": 1, "w": 1, "label": "P" }, + { "x": 11.5, "y": 1, "w": 1, "label": "LBRACKET" }, + { "x": 12.5, "y": 1, "w": 1, "label": "RBRACKET" }, + + { "x": 0, "y": 2, "w": 1.75, "label": "CAPSLOCK" }, + { "x": 1.75, "y": 2, "w": 1, "label": "A" }, + { "x": 2.75, "y": 2, "w": 1, "label": "S" }, + { "x": 3.75, "y": 2, "w": 1, "label": "D" }, + { "x": 4.75, "y": 2, "w": 1, "label": "F" }, + { "x": 5.75, "y": 2, "w": 1, "label": "G" }, + { "x": 6.75, "y": 2, "w": 1, "label": "H" }, + { "x": 7.75, "y": 2, "w": 1, "label": "J" }, + { "x": 8.75, "y": 2, "w": 1, "label": "K" }, + { "x": 9.75, "y": 2, "w": 1, "label": "L" }, + { "x": 10.75, "y": 2, "w": 1, "label": "SEMICOLON" }, + { "x": 11.75, "y": 2, "w": 1, "label": "QUOTE" }, + { "x": 12.75, "y": 2, "w": 1, "label": "ISOHASH" }, + { "x": 13.75, "y": 1, "w": 1.25, "h": 2, "label": "ENTER" }, + + { "x": 0, "y": 3, "w": 1.25, "label": "LSHIFT" }, + { "x": 1.25, "y": 3, "w": 1, "label": "ISOBACKSLASH" }, + { "x": 2.25, "y": 3, "w": 1, "label": "Z" }, + { "x": 3.25, "y": 3, "w": 1, "label": "X" }, + { "x": 4.25, "y": 3, "w": 1, "label": "C" }, + { "x": 5.25, "y": 3, "w": 1, "label": "V" }, + { "x": 6.25, "y": 3, "w": 1, "label": "B" }, + { "x": 7.25, "y": 3, "w": 1, "label": "N" }, + { "x": 8.25, "y": 3, "w": 1, "label": "M" }, + { "x": 9.25, "y": 3, "w": 1, "label": "COMMA" }, + { "x": 10.25, "y": 3, "w": 1, "label": "PERIOD" }, + { "x": 11.25, "y": 3, "w": 1, "label": "SLASH" }, + { "x": 12.25, "y": 3, "w": 2.75, "label": "RSHIFT" }, + + { "x": 0, "y": 4, "w": 1.25, "label": "LCTRL" }, + { "x": 1.25, "y": 4, "w": 1.25, "label": "LCMD" }, + { "x": 2.5, "y": 4, "w": 1.25, "label": "LALT" }, + { "x": 3.75, "y": 4, "w": 6.25, "label": "SPACE" }, + { "x": 10, "y": 4, "w": 1.25, "label": "RALT" }, + { "x": 11.25, "y": 4, "w": 1.25, "label": "RCMD" }, + { "x": 12.5, "y": 4, "w": 1.25, "label": "FN" }, + { "x": 13.75, "y": 4, "w": 1.25, "label": "RCTRL" } + ] + } + } +} diff --git a/keyboards/ducky/one2mini/1861st/mcuconf.h b/keyboards/ducky/one2mini/1861st/mcuconf.h new file mode 100644 index 000000000000..12e9d2a82dc3 --- /dev/null +++ b/keyboards/ducky/one2mini/1861st/mcuconf.h @@ -0,0 +1,51 @@ +/* + ChibiOS - Copyright (C) 2020 Alex Lewontin + + 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_ + +/* + * Board setting + * 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: + * 3...0 Lowest...Highest. + * + * DMA priorities: + * 5...0 Lowest...Highest. + */ + +/* + * HAL driver system settings. + */ +#define NUC123_HSE_ENABLED TRUE +#define NUC123_PLL_ENABLED TRUE +#define NUC123_PLLSRC NUC123_PLLSRC_HSE +#define NUC123_HCLKSRC NUC123_HCLKSRC_PLL +#define NUC123_HCLKDIV 2 +#define NUC123_PLL_NF 144 +#define NUC123_USB_USE_USB0 TRUE +#define NUC123_USB_USE_USB1 TRUE + +#define NUC123_SERIAL_USE_UART0 TRUE +#define NUC123_SERIAL_CLKSRC NUC123_SERIAL_CLKSRC_HSI + +#define NUC123_MCUCONF + +#endif /* _MCUCONF_H_ */ diff --git a/keyboards/ducky/one2mini/1861st/readme.md b/keyboards/ducky/one2mini/1861st/readme.md new file mode 100644 index 000000000000..bf6b3974a364 --- /dev/null +++ b/keyboards/ducky/one2mini/1861st/readme.md @@ -0,0 +1,29 @@ +# one2mini + +![one2mini](http://www.duckychannel.com.tw/page-en/One_2_Mini_RGB/images/One2_Mini_01_02.jpg) + +A 60% keyboard featuring per-key RGB LEDs. + +* Keyboard Maintainer: [Reza Jelveh](https://github.com/fishman) +* Hardware Supported: Ducky One 2 Mini RGB / NUC123SD4AN0 / MBI5042GP +* Hardware Availability: [Ducky Channel](http://www.duckychannel.com.tw/page-en/One_2_Mini_RGB/) + +Make example for this keyboard (after setting up your build environment): + + make ducky/one2mini: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). + +RGB LEDs are currently disabled until the driver is merged. + +This firmware was tested on the duckyon2mini 1861ST version. To enter the 1861ST bootloader to flash you can boot the keyboard while holding D+L. + +There are then two ways to flash the keyboard: + + pip install --user nuvoton-isp + nuvoisp -f ducky_one2mini_default.bin + +Alternatively you can use elfmimi's [nu-isp-cli](https://lib.rs/crates/nu-isp-cli) which is more complete than nuvoisp and allows flashing .hex files as well. + + cargo install nu-isp-cli + nu-isp-cli flash ducky_one2mini_default.bin diff --git a/keyboards/ducky/one2mini/1861st/rules.mk b/keyboards/ducky/one2mini/1861st/rules.mk new file mode 100644 index 000000000000..afcf6593ee75 --- /dev/null +++ b/keyboards/ducky/one2mini/1861st/rules.mk @@ -0,0 +1,32 @@ +MCU_FAMILY = NUMICRO +MCU_SERIES = NUC123 + +# linker script to use +MCU_LDSCRIPT = NUC123xD4xx0 + +# startup code to use +MCU_STARTUP = NUC123 +BOARD = NUC123SD4AN0 + +# NUC123 series is Cortex M0 +MCU = cortex-m0 +# ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 +ARMV = 6 + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 +DIP_SWITCH_ENABLE = yes + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/ducky/one2mini/keymaps/ansi/keymap.c b/keyboards/ducky/one2mini/keymaps/ansi/keymap.c new file mode 100644 index 000000000000..3f03525e1789 --- /dev/null +++ b/keyboards/ducky/one2mini/keymaps/ansi/keymap.c @@ -0,0 +1,56 @@ +/* Copyright 2019 /u/KeepItUnder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// LAYERS +enum Layer { + _QWERTY = 0, // Standard QWERTY layer + _FUNCTION, // Function key layer + _COLOUR // RGB key layer +}; +#define _QW _QWERTY +#define _FN _FUNCTION +#define _CLR _COLOUR + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_QWERTY] = LAYOUT_60_ansi( + // 2 3 4 5 6 7 8 9 10 11 12 13 14 + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_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_NUBS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(_FN), KC_RCTL + ), + + [_FUNCTION] = LAYOUT_60_ansi( + // 2 3 4 5 6 7 8 9 10 11 12 13 14 + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + _______, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, _______, KC_INS, _______, KC_UP, KC_PAUS, KC_PGUP, KC_HOME, KC_PSCR, _______, + _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, KC_SLCK, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_END, KC_ENT, + _______, _______, KC_APP, _______, _______, _______, KC_CALC, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, + _______, KC_APP, MO(_CLR), _______, _______, KC_APP, _______, _______ + ), + + [_COLOUR] = LAYOUT_60_ansi( + // 2 3 4 5 6 7 8 9 10 11 12 13 14 + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, RGB_TOG, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/ducky/one2mini/keymaps/ansi/readme.md b/keyboards/ducky/one2mini/keymaps/ansi/readme.md new file mode 100644 index 000000000000..e4eb351aea9a --- /dev/null +++ b/keyboards/ducky/one2mini/keymaps/ansi/readme.md @@ -0,0 +1 @@ +# The default ANSI keymap for one2mini \ No newline at end of file diff --git a/keyboards/ducky/one2mini/keymaps/default/config.h b/keyboards/ducky/one2mini/keymaps/default/config.h new file mode 100644 index 000000000000..b052c604f5a9 --- /dev/null +++ b/keyboards/ducky/one2mini/keymaps/default/config.h @@ -0,0 +1,25 @@ +/* Copyright 2019 /u/KeepItUnder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +// place overrides here +#define GRAVE_ESC_GUI_OVERRIDE +#define MK_3_SPEED +#define MK_C_OFFSET_UNMOD 400 /* Cursor offset per movement (unmodified) */ +#define MK_C_INTERVAL_UNMOD 5 /* Time between cursor movements (unmodified) */ +#define MK_W_OFFSET_UNMOD 100 /* Scroll steps per scroll action (unmodified) */ +#define MK_W_INTERVAL_UNMOD 10 /* Time between scroll steps (unmodified) */ diff --git a/keyboards/ducky/one2mini/keymaps/default/keymap.c b/keyboards/ducky/one2mini/keymaps/default/keymap.c new file mode 100644 index 000000000000..d8bc5bbe2437 --- /dev/null +++ b/keyboards/ducky/one2mini/keymaps/default/keymap.c @@ -0,0 +1,56 @@ +/* Copyright 2019 /u/KeepItUnder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// LAYERS +enum Layer { + _QWERTY = 0, // Standard QWERTY layer + _FUNCTION, // Function key layer + _COLOUR // RGB key layer +}; +#define _QW _QWERTY +#define _FN _FUNCTION +#define _CLR _COLOUR + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_QWERTY] = LAYOUT_all( + // 2 3 4 5 6 7 8 9 10 11 12 13 14 + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, 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_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(_FN), KC_RCTL + ), + + [_FUNCTION] = LAYOUT_all( + // 2 3 4 5 6 7 8 9 10 11 12 13 14 + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + _______, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, _______, KC_INS, _______, KC_UP, KC_PAUS, KC_PGUP, KC_HOME, KC_PSCR, _______, + _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, KC_SLCK, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_END, _______, KC_ENT, + _______, _______, _______, KC_APP, _______, _______, _______, KC_CALC, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, + _______, _______, MO(_CLR), KC_MPLY, _______, KC_APP, _______, _______ + ), + + [_COLOUR] = LAYOUT_all( + // 2 3 4 5 6 7 8 9 10 11 12 13 14 + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, RGB_TOG, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/ducky/one2mini/keymaps/default/readme.md b/keyboards/ducky/one2mini/keymaps/default/readme.md new file mode 100644 index 000000000000..c83b30eeffc0 --- /dev/null +++ b/keyboards/ducky/one2mini/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for one2mini (ISO & ANSI combined) \ No newline at end of file diff --git a/keyboards/ducky/one2mini/keymaps/iso/keymap.c b/keyboards/ducky/one2mini/keymaps/iso/keymap.c new file mode 100644 index 000000000000..1929b86c1e8b --- /dev/null +++ b/keyboards/ducky/one2mini/keymaps/iso/keymap.c @@ -0,0 +1,56 @@ +/* Copyright 2019 /u/KeepItUnder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// LAYERS +enum Layer { + _QWERTY = 0, // Standard QWERTY layer + _FUNCTION, // Function key layer + _COLOUR // RGB key layer +}; +#define _QW _QWERTY +#define _FN _FUNCTION +#define _CLR _COLOUR + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_QWERTY] = LAYOUT_60_iso( + // 2 3 4 5 6 7 8 9 10 11 12 13 14 + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(_FN), KC_RCTL + ), + + [_FUNCTION] = LAYOUT_60_iso( + // 2 3 4 5 6 7 8 9 10 11 12 13 14 + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + _______, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, _______, KC_INS, _______, KC_UP, KC_PAUS, KC_PGUP, KC_HOME, KC_PSCR, + _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, KC_SLCK, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_END, _______, KC_ENT, + _______, _______, _______, KC_APP, _______, _______, _______, KC_CALC, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, + _______, KC_APP, MO(_CLR), _______, _______, KC_APP, _______, _______ + ), + + [_COLOUR] = LAYOUT_60_iso( + // 2 3 4 5 6 7 8 9 10 11 12 13 14 + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, + _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, RGB_TOG, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/ducky/one2mini/keymaps/iso/readme.md b/keyboards/ducky/one2mini/keymaps/iso/readme.md new file mode 100644 index 000000000000..218e0dff0f10 --- /dev/null +++ b/keyboards/ducky/one2mini/keymaps/iso/readme.md @@ -0,0 +1 @@ +# The default ISO keymap for one2mini \ No newline at end of file diff --git a/keyboards/ducky/one2mini/readme.md b/keyboards/ducky/one2mini/readme.md new file mode 100644 index 000000000000..d03cb5d7b2da --- /dev/null +++ b/keyboards/ducky/one2mini/readme.md @@ -0,0 +1,7 @@ +# one2mini + +![one2mini](http://www.duckychannel.com.tw/page-en/One_2_Mini_RGB/images/One2_Mini_01_02.jpg) + +A 60% keyboard featuring per-key RGB LEDs. + +See child directories for compatible boards. diff --git a/keyboards/ducky/one2mini/rules.mk b/keyboards/ducky/one2mini/rules.mk new file mode 100644 index 000000000000..628be832eeb6 --- /dev/null +++ b/keyboards/ducky/one2mini/rules.mk @@ -0,0 +1 @@ +DEFAULT_FOLDER = ducky/one2mini/1861st diff --git a/keyboards/dumbo/info.json b/keyboards/dumbo/info.json index 900b5bb5acbf..885ea08e2976 100644 --- a/keyboards/dumbo/info.json +++ b/keyboards/dumbo/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Dumbo", "url": "", "maintainer": "adamnaldal", - "width": 15.5, - "height": 5.25, "layouts": { "LAYOUT_split_3x6_4": { "layout": [ diff --git a/keyboards/dumbo/keymaps/default/keymap.c b/keyboards/dumbo/keymaps/default/keymap.c index 63b9936032c0..7fc3ffc2c443 100644 --- a/keyboards/dumbo/keymaps/default/keymap.c +++ b/keyboards/dumbo/keymaps/default/keymap.c @@ -130,7 +130,7 @@ layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _NN, _MS, _SP); } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE static void render_logo(void) { static const char PROGMEM qmk_logo[] = { @@ -179,12 +179,13 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) { return rotation; } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { print_status_narrow(); } else { render_logo(); } + return false; } #endif diff --git a/keyboards/dumbo/keymaps/default/rules.mk b/keyboards/dumbo/keymaps/default/rules.mk index 16913b421c2c..a2d6e788f985 100644 --- a/keyboards/dumbo/keymaps/default/rules.mk +++ b/keyboards/dumbo/keymaps/default/rules.mk @@ -1,2 +1,3 @@ -OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enables the use of OLED displays ENCODER_ENABLE = yes # Enables the use of one or more encoders diff --git a/keyboards/dumbo/keymaps/trip-trap/keymap.c b/keyboards/dumbo/keymaps/trip-trap/keymap.c index 03825db031a1..73042f5f5ee8 100644 --- a/keyboards/dumbo/keymaps/trip-trap/keymap.c +++ b/keyboards/dumbo/keymaps/trip-trap/keymap.c @@ -207,7 +207,7 @@ layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _NN, _MS, _SP); } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE char wpm_str[10]; // static void render_logo(void) { @@ -375,7 +375,7 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) { return rotation; } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { print_status_narrow(); sprintf(wpm_str, "%03d", get_current_wpm()); @@ -383,6 +383,7 @@ void oled_task_user(void) { } else { render_anim(); } + return false; } #endif diff --git a/keyboards/dumbo/keymaps/trip-trap/rules.mk b/keyboards/dumbo/keymaps/trip-trap/rules.mk index 1eb566bbef0e..1913e10c490b 100644 --- a/keyboards/dumbo/keymaps/trip-trap/rules.mk +++ b/keyboards/dumbo/keymaps/trip-trap/rules.mk @@ -1,3 +1,4 @@ -OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enables the use of OLED displays ENCODER_ENABLE = yes # Enables the use of one or more encoders WPM_ENABLE = yes diff --git a/keyboards/dumbo/rules.mk b/keyboards/dumbo/rules.mk index ffc7dc55d591..f006740227e1 100644 --- a/keyboards/dumbo/rules.mk +++ b/keyboards/dumbo/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = yes LTO_ENABLE = yes diff --git a/keyboards/dumbpad/v0x/info.json b/keyboards/dumbpad/v0x/info.json index 7ac64ee68902..b8caefd14d7c 100644 --- a/keyboards/dumbpad/v0x/info.json +++ b/keyboards/dumbpad/v0x/info.json @@ -3,8 +3,6 @@ "keyboard_folder": "dumbpad/v0x", "url": "https://www.github.com/imchipwood/dumbpad", "maintainer": "imchipwood", - "width": 5, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/dumbpad/v0x/rules.mk b/keyboards/dumbpad/v0x/rules.mk index 309e3d48c047..fe555840565c 100644 --- a/keyboards/dumbpad/v0x/rules.mk +++ b/keyboards/dumbpad/v0x/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = yes diff --git a/keyboards/dumbpad/v0x_dualencoder/info.json b/keyboards/dumbpad/v0x_dualencoder/info.json index 09a7d14b9523..fcccdaa5329c 100644 --- a/keyboards/dumbpad/v0x_dualencoder/info.json +++ b/keyboards/dumbpad/v0x_dualencoder/info.json @@ -3,8 +3,6 @@ "keyboard_folder": "dumbpad/v0x_dualencoder", "url": "https://www.github.com/imchipwood/dumbpad", "maintainer": "imchipwood", - "width": 4, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/dumbpad/v0x_dualencoder/rules.mk b/keyboards/dumbpad/v0x_dualencoder/rules.mk index 309e3d48c047..fe555840565c 100644 --- a/keyboards/dumbpad/v0x_dualencoder/rules.mk +++ b/keyboards/dumbpad/v0x_dualencoder/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = yes diff --git a/keyboards/dumbpad/v0x_right/info.json b/keyboards/dumbpad/v0x_right/info.json index d8225c6ee50f..4a6fec1e3fec 100644 --- a/keyboards/dumbpad/v0x_right/info.json +++ b/keyboards/dumbpad/v0x_right/info.json @@ -3,8 +3,6 @@ "keyboard_folder": "dumbpad/v0x_right", "url": "https://www.github.com/imchipwood/dumbpad", "maintainer": "imchipwood", - "width": 5, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/dumbpad/v0x_right/rules.mk b/keyboards/dumbpad/v0x_right/rules.mk index 309e3d48c047..fe555840565c 100644 --- a/keyboards/dumbpad/v0x_right/rules.mk +++ b/keyboards/dumbpad/v0x_right/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = yes diff --git a/keyboards/dumbpad/v1x/info.json b/keyboards/dumbpad/v1x/info.json index 3b5739d832ee..24c73bfeceb5 100644 --- a/keyboards/dumbpad/v1x/info.json +++ b/keyboards/dumbpad/v1x/info.json @@ -3,8 +3,6 @@ "keyboard_folder": "dumbpad/v1x", "url": "https://www.github.com/imchipwood/dumbpad", "maintainer": "imchipwood", - "width": 5, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/dumbpad/v1x/keymaps/imchipwood/keymap.c b/keyboards/dumbpad/v1x/keymaps/imchipwood/keymap.c new file mode 100644 index 000000000000..96a98b11c5a7 --- /dev/null +++ b/keyboards/dumbpad/v1x/keymaps/imchipwood/keymap.c @@ -0,0 +1,95 @@ +/* Copyright 2020 imchipwood + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +#include "imchipwood.h" + +enum custom_layers { + _BASE, + _SUB, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + BASE LAYER + /-----------------------------------------------------` + | | 7 | 8 | 9 | Bkspc | + | |---------|---------|---------|---------| + | | 4 | 5 | 6 | + | + | |---------|---------|---------|---------| + | | 1 | 2 | 3 | * | + |-------------|---------|---------|---------|---------| + | Play/Pause | TT(SUB) | 0 | . | Enter | + \-----------------------------------------------------' + */ + [_BASE] = LAYOUT( + KC_P7, KC_P8, KC_P9, KC_BSPC, + KC_P4, KC_P5, KC_P6, KC_KP_PLUS, + KC_P1, KC_P2, KC_P3, KC_KP_ASTERISK, + MEH_T(KC_MPLY), TT(_SUB), KC_P0, KC_PDOT, KC_KP_ENTER + ), + /* + SUB LAYER + /-----------------------------------------------------` + | | F7 | F8 | F9 | Del/NLK | + | |---------|---------|---------|---------| + | | F4 | F5 | F6 | - | + | |---------|---------|---------|---------| + | | F1 | F2 | F3 | / | + |-------------|---------|---------|---------|---------| + | MUTE | | LSFT | LCTL | = | + \-----------------------------------------------------' + */ + [_SUB] = LAYOUT( + TD(ALT_F7), KC_F8, KC_F9, TD(DEL_NLCK), + KC_F4, TD(CTL_F5), KC_F6, KC_KP_MINUS, + KC_F1, TD(ALT_F2), KC_F3, KC_KP_SLASH, + KC_MUTE, _______, OSM(MOD_LSFT), OSM(MOD_LCTL), KC_KP_EQUAL + ) +}; + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + switch (get_highest_layer(layer_state)) { + case _BASE: + // main layer - volume up/down + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + break; + + case _SUB: + // sub layer - next/previous track + if (clockwise) { + tap_code(KC_MNXT); + } else { + tap_code(KC_MPRV); + } + break; + + default: + // default - volume up/down + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + break; + } + } + return true; +} diff --git a/keyboards/dumbpad/v1x/keymaps/numpad_media/keymap.c b/keyboards/dumbpad/v1x/keymaps/numpad_media/keymap.c new file mode 100644 index 000000000000..2806a31740a8 --- /dev/null +++ b/keyboards/dumbpad/v1x/keymaps/numpad_media/keymap.c @@ -0,0 +1,88 @@ +/* Copyright 2020 imchipwood + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + BASE LAYER + /-----------------------------------------------------` + | | 7 | 8 | 9 | Bkspc | + | |---------|---------|---------|---------| + | | 4 | 5 | 6 | + | + | |---------|---------|---------|---------| + | | 1 | 2 | 3 | * | + |-------------|---------|---------|---------|---------| + | Play/pause | TT(1) | 0 | . | Enter | + \-----------------------------------------------------' + */ + [0] = LAYOUT( + KC_P7, KC_P8, KC_P9, KC_BSPC, + KC_P4, KC_P5, KC_P6, KC_KP_PLUS, + KC_P1, KC_P2, KC_P3, KC_KP_ASTERISK, + KC_MPLY, TT(1), KC_P0, KC_PDOT, KC_KP_ENTER + ), + /* + SUB LAYER + /-----------------------------------------------------` + | | | | | Numlock | + | |---------|---------|---------|---------| + | | | | | - | + | |---------|---------|---------|---------| + | | | | | / | + |-------------|---------|---------|---------|---------| + | MUTE | | | | = | + \-----------------------------------------------------' + */ + [1] = LAYOUT( + _______, _______, _______, KC_NLCK, + _______, _______, _______, KC_KP_MINUS, + _______, _______, _______, KC_KP_SLASH, + KC_MUTE, _______, _______, _______, KC_KP_EQUAL + ), +}; + +void encoder_update_user(uint8_t index, bool clockwise) { + /* Custom encoder control - handles CW/CCW turning of encoder + * Default behavior: + * main layer: + * CW: volume up + * CCW: volume down + * other layers: + * CW: next track + * CCW: previous track + */ + if (index == 0) { + switch (get_highest_layer(layer_state)) { + case 0: + // main layer - volume up (CW) and volume down (CCW) + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + break; + + default: + // other layers - media next (CW) and media previous (CCW) + if (clockwise) { + tap_code(KC_MNXT); + } else { + tap_code(KC_MPRV); + } + break; + } + } +} diff --git a/keyboards/dumbpad/v1x/rules.mk b/keyboards/dumbpad/v1x/rules.mk index 309e3d48c047..fe555840565c 100644 --- a/keyboards/dumbpad/v1x/rules.mk +++ b/keyboards/dumbpad/v1x/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = yes diff --git a/keyboards/dumbpad/v1x_dualencoder/info.json b/keyboards/dumbpad/v1x_dualencoder/info.json index 60e584193ca2..3e4cffbc5c9f 100644 --- a/keyboards/dumbpad/v1x_dualencoder/info.json +++ b/keyboards/dumbpad/v1x_dualencoder/info.json @@ -3,8 +3,6 @@ "keyboard_folder": "dumbpad/v1x_dualencoder", "url": "https://www.github.com/imchipwood/dumbpad", "maintainer": "imchipwood", - "width": 5, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/dumbpad/v1x_dualencoder/rules.mk b/keyboards/dumbpad/v1x_dualencoder/rules.mk index 309e3d48c047..fe555840565c 100644 --- a/keyboards/dumbpad/v1x_dualencoder/rules.mk +++ b/keyboards/dumbpad/v1x_dualencoder/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = yes diff --git a/keyboards/dumbpad/v1x_right/info.json b/keyboards/dumbpad/v1x_right/info.json index e812f0bb8d6c..31c0cac44744 100644 --- a/keyboards/dumbpad/v1x_right/info.json +++ b/keyboards/dumbpad/v1x_right/info.json @@ -3,8 +3,6 @@ "keyboard_folder": "dumbpad/v1x_right", "url": "https://www.github.com/imchipwood/dumbpad", "maintainer": "imchipwood", - "width": 5, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/dumbpad/v1x_right/rules.mk b/keyboards/dumbpad/v1x_right/rules.mk index 309e3d48c047..fe555840565c 100644 --- a/keyboards/dumbpad/v1x_right/rules.mk +++ b/keyboards/dumbpad/v1x_right/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = yes diff --git a/keyboards/durgod/dgk6x/config.h b/keyboards/durgod/dgk6x/config.h new file mode 100644 index 000000000000..92673e5c24a5 --- /dev/null +++ b/keyboards/durgod/dgk6x/config.h @@ -0,0 +1,138 @@ +/* Copyright 2021 Jessica Sullivan and Don Kjer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xD60D +#define MANUFACTURER Hoksi Technology + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION ROW2COL + +// Dynamic EEPROM +// Something sensible or else VIA may crash +// Users may enable more if they wish +#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 4095 + +// Increase VIA layer count +#define DYNAMIC_KEYMAP_LAYER_COUNT 16 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* Bootmagic Lite key configuration */ +#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 + +/* LED indicator pins */ +#define LED_CAPS_LOCK_PIN C4 +#define LED_WIN_LOCK_PIN C5 +#define LED_SCROLL_LOCK_PIN A8 +#define LED_MR_LOCK_PIN LED_SCROLL_LOCK_PIN +#define LED_PIN_ON_STATE 0 + +#ifdef RGB_MATRIX_ENABLE +// This is a 7-bit address, that gets left-shifted and bit 0 +// set to 0 for write, 1 for read (as per I2C protocol) +// The address will vary depending on your wiring: +// 00 <-> GND +// 01 <-> SCL +// 10 <-> SDA +// 11 <-> VCC +// ADDR1 represents A1:A0 of the 7-bit address. +// ADDR2 represents A3:A2 of the 7-bit address. +// The result is: 0b101(ADDR2)(ADDR1) + +#define DRIVER_ADDR_1 0b1010000 +#define DRIVER_ADDR_2 0b1010011 + +#define DRIVER_COUNT 2 +#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) + +/* I2C Alternate function settings */ +#define I2C1_SCL_PAL_MODE 1 +#define I2C1_SDA_PAL_MODE 1 + +/* Set I2C speed to 400kHz, 300ns Tr, 14ns Tf */ +#define I2C1_TIMINGR_PRESC 0x1U +#define I2C1_TIMINGR_SCLDEL 0x9U +#define I2C1_TIMINGR_SDADEL 0x0U +#define I2C1_TIMINGR_SCLH 0x0cU +#define I2C1_TIMINGR_SCLL 0x22U + +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended +# define RGB_MATRIX_FRAMEBUFFER_EFFECTS +# define RGB_MATRIX_KEYPRESSES +# define RGB_MATRIX_LED_PROCESS_LIMIT 4 +# define RGB_MATRIX_LED_FLUSH_LIMIT 26 + +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +// # define ENABLE_RGB_MATRIX_HUE_BREATHING +// # define ENABLE_RGB_MATRIX_HUE_PENDULUM +// # define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + +// This allows VIA to control RGB Matrix settings in the 'Lighting' section. +#define VIA_QMK_RGBLIGHT_ENABLE + +#endif /* RGB_MATRIX_ENABLE */ diff --git a/keyboards/durgod/dgk6x/dgk6x.c b/keyboards/durgod/dgk6x/dgk6x.c new file mode 100644 index 000000000000..d7e871327aa1 --- /dev/null +++ b/keyboards/durgod/dgk6x/dgk6x.c @@ -0,0 +1,73 @@ +/* Copyright 2021 Jessica Sullivan and Don Kjer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "dgk6x.h" + +/* Private Functions */ +void off_all_leds(void) { + writePinHigh(LED_CAPS_LOCK_PIN); + writePinHigh(LED_WIN_LOCK_PIN); + writePinHigh(LED_MR_LOCK_PIN); +} + +void on_all_leds(void) { + writePinLow(LED_CAPS_LOCK_PIN); + writePinLow(LED_WIN_LOCK_PIN); + writePinLow(LED_MR_LOCK_PIN); +} + +/* WinLock and MR LEDs are non-standard. Need to override led init */ +void led_init_ports(void) { + setPinOutput(LED_CAPS_LOCK_PIN); + setPinOutput(LED_WIN_LOCK_PIN); + setPinOutput(LED_MR_LOCK_PIN); + off_all_leds(); +} + + +#ifndef WINLOCK_DISABLED +static bool win_key_locked = false; + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_TGUI: + if (record->event.pressed) { + // Toggle GUI lock on key press + win_key_locked = !win_key_locked; + writePin(LED_WIN_LOCK_PIN, !win_key_locked); + } + break; + case KC_LGUI: + if (win_key_locked) { return false; } + break; + } + return process_record_user(keycode, record); +} +#endif /* WINLOCK_DISABLED */ + +#ifdef RGB_MATRIX_ENABLE + +__attribute__ ((weak)) +void rgb_matrix_indicators_user(void) +{ + if (host_keyboard_led_state().caps_lock) + { + rgb_matrix_set_color(CAPS_LED, 0xFF, 0xFF, 0xFF); + } +} +#endif /* RGB_MATRIX_ENABLE */ + + diff --git a/keyboards/durgod/dgk6x/dgk6x.h b/keyboards/durgod/dgk6x/dgk6x.h new file mode 100644 index 000000000000..e2c6d19c27c2 --- /dev/null +++ b/keyboards/durgod/dgk6x/dgk6x.h @@ -0,0 +1,47 @@ +/* Copyright 2021 Jessica Sullivan and Don Kjer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#ifdef KEYBOARD_durgod_dgk6x_hades +# include "hades.h" +#elif defined KEYBOARD_durgod_dgk6x_venus +# include "venus.h" +#elif defined KEYBOARD_durgod_dgk6x_galaxy +# include "galaxy.h" +#endif + +#ifndef WINLOCK_DISABLED +// Define the TGUI key here so it is available in QMK configurator +enum DGK6X_keycodes { +#ifdef VIA_ENABLE + KC_TGUI = USER00, // Toggle between GUI Lock or Unlock + NEW_SAFE_RANGE = SAFE_RANGE +#else + KC_TGUI = SAFE_RANGE, // Toggle between GUI Lock or Unlock + NEW_SAFE_RANGE +#endif +}; + +#undef SAFE_RANGE +#define SAFE_RANGE NEW_SAFE_RANGE +#endif /* WINLOCK_DISABLED */ + +/* Function Prototype */ +void off_all_leds(void); +void on_all_leds(void); + diff --git a/keyboards/durgod/dgk6x/galaxy/config.h b/keyboards/durgod/dgk6x/galaxy/config.h new file mode 100644 index 000000000000..e8108f7d11f0 --- /dev/null +++ b/keyboards/durgod/dgk6x/galaxy/config.h @@ -0,0 +1,37 @@ +/* Copyright 2021 Don Kjer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define PRODUCT_ID 0x6A1A +#define DEVICE_VER 0x0001 +#define PRODUCT Galaxy 84 HK gaming x DURGOD (QMK) + +/* key matrix rows */ +#define MATRIX_ROWS 6 +#define MATRIX_ROW_PINS { A0, A1, A2, A3, A4, A5 } + +/* key matrix columns */ +#define MATRIX_COLS 16 +#define MATRIX_COL_PINS { B0, B1, B2, B10, B11, B12, B13, B14, B15, C6, C7, C8, C9, C10, C11, C12 } + +#ifdef RGB_MATRIX_ENABLE +#define DRIVER_1_LED_TOTAL 58 +#define DRIVER_2_LED_TOTAL 26 +#endif diff --git a/keyboards/durgod/dgk6x/galaxy/galaxy.c b/keyboards/durgod/dgk6x/galaxy/galaxy.c new file mode 100644 index 000000000000..86aef1bced99 --- /dev/null +++ b/keyboards/durgod/dgk6x/galaxy/galaxy.c @@ -0,0 +1,142 @@ +/* Copyright 2021 Don Kjer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "galaxy.h" + +#ifdef RGB_MATRIX_ENABLE + +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { +/* Refer to IS31 manual for these locations + * driver + * | R location + * | | G location + * | | | B location + * | | | | */ + + {0, C_1, B_1, A_1}, // Esc + {0, C_2, B_2, A_2}, // F1 + {0, C_3, B_3, A_3}, // F2 + {0, C_4, B_4, A_4}, // F3 + {0, C_5, B_5, A_5}, // F4 + {0, C_6, B_6, A_6}, // F5 + {0, C_7, B_7, A_7}, // F6 + {0, C_8, B_8, A_8}, // F7 + {0, C_9, B_9, A_9}, // F8 + {0, C_10, B_10, A_10}, // F9 + {0, C_11, B_11, A_11}, // F10 + {0, C_12, B_12, A_12}, // F11 + {0, C_13, B_13, A_13}, // F12 + {0, C_14, B_14, A_14}, // PrtSc + {0, C_15, B_15, A_15}, // Pause + {0, C_16, B_16, A_16}, // Del + + {0, F_1, E_1, D_1}, // ` + {0, F_2, E_2, D_2}, // 1 + {0, F_3, E_3, D_3}, // 2 + {0, F_4, E_4, D_4}, // 3 + {0, F_5, E_5, D_5}, // 4 + {0, F_6, E_6, D_6}, // 5 + {0, F_7, E_7, D_7}, // 6 + {0, F_8, E_8, D_8}, // 7 + {0, F_9, E_9, D_9}, // 8 + {0, F_10, E_10, D_10}, // 9 + {0, F_11, E_11, D_11}, // 0 + {0, F_12, E_12, D_12}, // - + {0, F_13, E_13, D_13}, // = + {0, F_14, E_14, D_14}, // Bksp + {0, F_15, E_15, D_15}, // Home + + {0, I_1, H_1, G_1}, // Tab + {0, I_2, H_2, G_2}, // Q + {0, I_3, H_3, G_3}, // W + {0, I_4, H_4, G_4}, // E + {0, I_5, H_5, G_5}, // R + {0, I_6, H_6, G_6}, // T + {0, I_7, H_7, G_7}, // Y + {0, I_8, H_8, G_8}, // U + {0, I_9, H_9, G_9}, // I + {0, I_10, H_10, G_10}, // O + {0, I_11, H_11, G_11}, // P + {0, I_12, H_12, G_12}, // [ + {0, I_13, H_13, G_13}, // ] + {0, I_14, H_14, G_14}, // Pipe + {0, I_15, H_15, G_15}, // End + + {0, L_1, K_1, J_1}, // Caps + {0, L_2, K_2, J_2}, // A + {0, L_3, K_3, J_3}, // S + {0, L_4, K_4, J_4}, // D + {0, L_5, K_5, J_5}, // F + {0, L_6, K_6, J_6}, // G + {0, L_7, K_7, J_7}, // H + {0, L_8, K_8, J_8}, // J + {0, L_9, K_9, J_9}, // K + {0, L_10, K_10, J_10}, // L + {0, L_11, K_11, J_11}, // : + {0, L_12, K_12, J_12}, // ' + {0, L_14, K_14, J_14}, // Enter + {0, L_15, K_15, J_15}, // PgUp + + {1, C_1, B_1, A_1}, // LShift + {1, C_3, B_3, A_3}, // Z + {1, C_4, B_4, A_4}, // X + {1, C_5, B_5, A_5}, // C + {1, C_6, B_6, A_6}, // V + {1, C_7, B_7, A_7}, // B + {1, C_8, B_8, A_8}, // N + {1, C_9, B_9, A_9}, // M + {1, C_10, B_10, A_10}, // < + {1, C_11, B_11, A_11}, // > + {1, C_12, B_12, A_12}, // ? + {1, C_13, B_13, A_13}, // RShift + {1, C_14, B_14, A_14}, // Up + {1, C_15, B_15, A_15}, // PgDn + + {1, F_1, E_1, D_1}, // LCtrl + {1, F_2, E_2, D_2}, // LAlt + {1, F_3, E_3, D_3}, // LGUI + {1, F_7, E_7, D_7}, // Space + {1, F_10, E_10, D_10}, // RAlt + {1, F_11, E_11, D_11}, // Fn1 + {1, F_12, E_12, D_12}, // Fn2 + {1, F_13, E_13, D_13}, // Left + {1, F_14, E_14, D_14}, // Down + {1, F_15, E_15, D_15} // Right +}; + +led_config_t g_led_config = {{ + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }, + { 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, NO_LED }, + { 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, NO_LED }, + { 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, NO_LED, 58, 59, NO_LED }, + { 60, NO_LED, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, NO_LED }, + { 74, 75, 76, NO_LED, NO_LED, NO_LED, 77, NO_LED, NO_LED, 78, 79, 80, 81, 82, 83, NO_LED } +}, { + { 0, 0 }, { 16, 0 }, { 32, 0 }, { 48, 0 }, { 64, 0 }, { 80, 0 }, { 96, 0 }, { 112, 0 }, { 128, 0 }, { 144, 0 }, { 160, 0 }, { 176, 0 }, { 192, 0 }, { 208, 0 }, { 224, 0 }, { 240, 0 }, + { 0, 13 }, { 16, 13 }, { 32, 13 }, { 48, 13 }, { 64, 13 }, { 80, 13 }, { 96, 13 }, { 112, 13 }, { 128, 13 }, { 144, 13 }, { 160, 13 }, { 176, 13 }, { 192, 13 }, { 216, 13 }, { 240, 13 }, + { 4, 26 }, { 24, 26 }, { 40, 26 }, { 56, 26 }, { 72, 26 }, { 88, 26 }, { 104, 26 }, { 120, 26 }, { 136, 26 }, { 152, 26 }, { 168, 26 }, { 184, 26 }, { 200, 26 }, { 220, 26 }, { 240, 26 }, + { 6, 38 }, { 28, 38 }, { 44, 38 }, { 60, 38 }, { 76, 38 }, { 92, 38 }, { 108, 38 }, { 124, 38 }, { 140, 38 }, { 156, 38 }, { 172, 38 }, { 188, 38 }, { 214, 38 }, { 240, 38 }, + { 10, 51 }, { 36, 51 }, { 52, 51 }, { 68, 51 }, { 84, 51 }, { 100, 51 }, { 116, 51 }, { 132, 51 }, { 148, 51 }, { 164, 51 }, { 180, 51 }, { 202, 51 }, { 224, 51 }, { 240, 51 }, + { 2, 64 }, { 22, 64 }, { 42, 64 }, { 101, 64 }, { 160, 64 }, { 176, 64 }, { 192, 64 }, { 208, 64 }, { 224, 64 }, { 240, 64 } +}, { + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, + 1, 1, 1, 4, 1, 1, 1, 4, 4, 4 +}}; +#endif /* RGB_MATRIX_ENABLE */ diff --git a/keyboards/durgod/dgk6x/galaxy/galaxy.h b/keyboards/durgod/dgk6x/galaxy/galaxy.h new file mode 100644 index 000000000000..3ba96aaf7b75 --- /dev/null +++ b/keyboards/durgod/dgk6x/galaxy/galaxy.h @@ -0,0 +1,40 @@ +/* Copyright 2021 Don Kjer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define CAPS_LED 46 + +#define XXX KC_NO + +// This a shortcut to help you visually see your layout. +#define LAYOUT_75_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, 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, K3D, K3E, \ + K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, \ + K50, K51, K52, K56, K59, K5A, 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, K1D, K1E, XXX }, \ + { 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, XXX, K3D, K3E, XXX }, \ + { K40, XXX, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, XXX }, \ + { K50, K51, K52, XXX, XXX, XXX, K56, XXX, XXX, K59, K5A, K5B, K5C, K5D, K5E, XXX }, \ +} + diff --git a/keyboards/durgod/dgk6x/galaxy/info.json b/keyboards/durgod/dgk6x/galaxy/info.json new file mode 100644 index 000000000000..6fc8959d0b7f --- /dev/null +++ b/keyboards/durgod/dgk6x/galaxy/info.json @@ -0,0 +1,100 @@ +{ + "keyboard_name": "DURGOD Galaxy", + "url": "https://www.amazon.com/Galaxy-75-Modular-Mechanical-Keyboard/dp/B08PDRD8MP", + "maintainer": "dkjer", + "layouts": { + "LAYOUT_75_ansi": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "F1", "x": 1, "y": 0 }, + { "label": "F2", "x": 2, "y": 0 }, + { "label": "F3", "x": 3, "y": 0 }, + { "label": "F4", "x": 4, "y": 0 }, + { "label": "F5", "x": 5, "y": 0 }, + { "label": "F6", "x": 6, "y": 0 }, + { "label": "F7", "x": 7, "y": 0 }, + { "label": "F8", "x": 8, "y": 0 }, + { "label": "F9", "x": 9, "y": 0 }, + { "label": "F10", "x": 10, "y": 0 }, + { "label": "F11", "x": 11, "y": 0 }, + { "label": "F12", "x": 12, "y": 0 }, + { "label": "PrintScreen", "x": 13, "y": 0 }, + { "label": "ScrollLock", "x": 14, "y": 0 }, + { "label": "Delete", "x": 15, "y": 0 }, + + { "label": "~", "x": 0, "y": 1 }, + { "label": "!", "x": 1, "y": 1 }, + { "label": "@", "x": 2, "y": 1 }, + { "label": "#", "x": 3, "y": 1 }, + { "label": "$", "x": 4, "y": 1 }, + { "label": "%", "x": 5, "y": 1 }, + { "label": "^", "x": 6, "y": 1 }, + { "label": "&", "x": 7, "y": 1 }, + { "label": "*", "x": 8, "y": 1 }, + { "label": "(", "x": 9, "y": 1 }, + { "label": ")", "x": 10, "y": 1 }, + { "label": "_", "x": 11, "y": 1 }, + { "label": "+", "x": 12, "y": 1 }, + { "label": "Backspace", "x": 13, "y": 1, "w": 2 }, + { "label": "Home", "x": 15, "y": 1 }, + + { "label": "Tab", "x": 0, "y": 2, "w": 1.5 }, + { "label": "Q", "x": 1.5, "y": 2 }, + { "label": "W", "x": 2.5, "y": 2 }, + { "label": "E", "x": 3.5, "y": 2 }, + { "label": "R", "x": 4.5, "y": 2 }, + { "label": "T", "x": 5.5, "y": 2 }, + { "label": "Y", "x": 6.5, "y": 2 }, + { "label": "U", "x": 7.5, "y": 2 }, + { "label": "I", "x": 8.5, "y": 2 }, + { "label": "O", "x": 9.5, "y": 2 }, + { "label": "P", "x": 10.5, "y": 2 }, + { "label": "{", "x": 11.5, "y": 2 }, + { "label": "}", "x": 12.5, "y": 2 }, + { "label": "|", "x": 13.5, "y": 2, "w": 1.5 }, + { "label": "End", "x": 15, "y": 2 }, + + { "label": "CapsLock", "x": 0, "y": 3, "w": 1.75 }, + { "label": "A", "x": 1.75, "y": 3 }, + { "label": "S", "x": 2.75, "y": 3 }, + { "label": "D", "x": 3.75, "y": 3 }, + { "label": "F", "x": 4.75, "y": 3 }, + { "label": "G", "x": 5.75, "y": 3 }, + { "label": "H", "x": 6.75, "y": 3 }, + { "label": "J", "x": 7.75, "y": 3 }, + { "label": "K", "x": 8.75, "y": 3 }, + { "label": "L", "x": 9.75, "y": 3 }, + { "label": ":", "x": 10.75, "y": 3 }, + { "label": "\"", "x": 11.75, "y": 3 }, + { "label": "Enter", "x": 12.75, "y": 3, "w": 2.25 }, + { "label": "PgUp", "x": 15, "y": 3 }, + + { "label": "Shift", "x": 0, "y": 4, "w": 2.25 }, + { "label": "Z", "x": 2.25, "y": 4 }, + { "label": "X", "x": 3.25, "y": 4 }, + { "label": "C", "x": 4.25, "y": 4 }, + { "label": "V", "x": 5.25, "y": 4 }, + { "label": "B", "x": 6.25, "y": 4 }, + { "label": "N", "x": 7.25, "y": 4 }, + { "label": "M", "x": 8.25, "y": 4 }, + { "label": "<", "x": 9.25, "y": 4 }, + { "label": ">", "x": 10.25, "y": 4 }, + { "label": "?", "x": 11.25, "y": 4 }, + { "label": "Shift", "x": 12.25, "y": 4, "w": 1.75 }, + { "label": "Up", "x": 14, "y": 4 }, + { "label": "PgDn", "x": 15, "y": 4 }, + + { "label": "Ctrl", "x": 0, "y": 5, "w": 1.25 }, + { "label": "Win", "x": 1.25, "y": 5, "w": 1.25 }, + { "label": "Alt", "x": 2.5, "y": 5, "w": 1.25 }, + { "x": 3.75, "y": 5, "w": 6.25 }, + { "label": "Alt", "x": 10, "y": 5 }, + { "label": "Fn1", "x": 11, "y": 5 }, + { "label": "Fn2", "x": 12, "y": 5 }, + { "label": "Left", "x": 13, "y": 5 }, + { "label": "Down", "x": 14, "y": 5 }, + { "label": "Right", "x": 15, "y": 5 } + ] + } + } +} diff --git a/keyboards/durgod/dgk6x/galaxy/keymaps/default/keymap.json b/keyboards/durgod/dgk6x/galaxy/keymaps/default/keymap.json new file mode 100644 index 000000000000..70e31cc5d0b0 --- /dev/null +++ b/keyboards/durgod/dgk6x/galaxy/keymaps/default/keymap.json @@ -0,0 +1,42 @@ +{ + "keyboard": "durgod/dgk6x/galaxy", + "keymap": "default", + "layout": "LAYOUT_75_ansi", + "layers": [ + [ + "KC_ESC", "KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "KC_F11", "KC_F12", "KC_PSCR", "KC_SLCK", "KC_DEL", + "KC_GRV", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_MINS", "KC_EQL", "KC_BSPC", "KC_HOME", + "KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_LBRC", "KC_RBRC", "KC_BSLS", "KC_END", + "KC_CAPS", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT", "KC_ENT", "KC_PGUP", + "KC_LSFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_RSFT", "KC_UP", "KC_PGDN", + "KC_LCTL", "KC_LGUI", "KC_LALT", "KC_SPC", "KC_RALT", "MO(1)", "MO(2)", "KC_LEFT", "KC_DOWN", "KC_RIGHT" + ], + [ + "KC_TRNS", "KC_MPLY", "KC_MSTP", "KC_MPRV", "KC_MNXT", "KC_MUTE", "KC_VOLD", "KC_VOLU", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TGUI", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "MO(3)", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "RGB_RMOD","RGB_MOD", "RGB_TOG", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "RGB_VAI", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "MO(3)", "KC_TRNS", "RGB_SPD", "RGB_VAD", "RGB_SPI" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "RGB_SAI", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "RGB_HUD", "RGB_SAD", "RGB_HUI" + ] + ], + "author":"dkjer", + "notes":"", + "version":1 +} diff --git a/keyboards/durgod/dgk6x/galaxy/keymaps/default/readme.md b/keyboards/durgod/dgk6x/galaxy/keymaps/default/readme.md new file mode 100644 index 000000000000..72ba9da6eb06 --- /dev/null +++ b/keyboards/durgod/dgk6x/galaxy/keymaps/default/readme.md @@ -0,0 +1,14 @@ +![Durgod Galaxy Layout Image](https://i.imgur.com/KrcXUSK.png) + +# The default keymap for Durgod Galaxy. + +Currently only supports ANSI + +This keymap is intended to closely follow the stock Durgod Galaxy layout. RGB Hue and Saturation can be changed Fn1 + Fn2 + arrow keys. + +## Windows key lock + +You can hold down Fn1 + Windows key to disable the Windows key while in locked mode. +The 'Lock' LED indicates if the Windows key is locked. + +This is similar to the stock Galaxy Windows key lock functionality. diff --git a/keyboards/durgod/dgk6x/galaxy/keymaps/via/keymap.json b/keyboards/durgod/dgk6x/galaxy/keymaps/via/keymap.json new file mode 100644 index 000000000000..5e472baad116 --- /dev/null +++ b/keyboards/durgod/dgk6x/galaxy/keymaps/via/keymap.json @@ -0,0 +1,138 @@ +{ + "keyboard": "durgod/dgk6x/galaxy", + "keymap": "via", + "layout": "LAYOUT_75_ansi", + "layers": [ + [ + "KC_ESC", "KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "KC_F11", "KC_F12", "KC_PSCR", "KC_SLCK", "KC_DEL", + "KC_GRV", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_MINS", "KC_EQL", "KC_BSPC", "KC_HOME", + "KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_LBRC", "KC_RBRC", "KC_BSLS", "KC_END", + "KC_CAPS", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT", "KC_ENT", "KC_PGUP", + "KC_LSFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_RSFT", "KC_UP", "KC_PGDN", + "KC_LCTL", "KC_LGUI", "KC_LALT", "KC_SPC", "KC_RALT", "MO(1)", "MO(2)", "KC_LEFT", "KC_DOWN", "KC_RIGHT" + ], + [ + "KC_TRNS", "KC_MPLY", "KC_MSTP", "KC_MPRV", "KC_MNXT", "KC_MUTE", "KC_VOLD", "KC_VOLU", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TGUI", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "MO(3)", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "RGB_RMOD","RGB_MOD", "RGB_TOG", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "RGB_VAI", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "MO(3)", "KC_TRNS", "RGB_SPD", "RGB_VAD", "RGB_SPI" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "RGB_SAI", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "RGB_HUD", "RGB_SAD", "RGB_HUI" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ] + ], + "author":"dkjer", + "notes":"", + "version":1 +} diff --git a/keyboards/durgod/dgk6x/galaxy/keymaps/via/readme.md b/keyboards/durgod/dgk6x/galaxy/keymaps/via/readme.md new file mode 100644 index 000000000000..1a9953a1d9c5 --- /dev/null +++ b/keyboards/durgod/dgk6x/galaxy/keymaps/via/readme.md @@ -0,0 +1,14 @@ +![Durgod Galaxy Layout Image](https://i.imgur.com/KrcXUSK.png) + +# The via keymap for Durgod Galaxy. + +Currently only supports ANSI + +This keymap is intended to closely follow the stock Durgod Galaxy layout. RGB Hue and Saturation can be changed Fn1 + Fn2 + arrow keys. + +## Windows key lock + +You can hold down Fn1 + Windows key to disable the Windows key while in locked mode. +The 'Lock' LED indicates if the Windows key is locked. + +This is similar to the stock Galaxy Windows key lock functionality. diff --git a/keyboards/durgod/dgk6x/galaxy/keymaps/via/rules.mk b/keyboards/durgod/dgk6x/galaxy/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/durgod/dgk6x/galaxy/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/durgod/dgk6x/galaxy/readme.md b/keyboards/durgod/dgk6x/galaxy/readme.md new file mode 100644 index 000000000000..9d1b3840cdf6 --- /dev/null +++ b/keyboards/durgod/dgk6x/galaxy/readme.md @@ -0,0 +1,26 @@ +# Galaxy + +This is a standard off-the-shelf Durgod Galaxy 75% ANSI layout keyboard with RGB matrix. + +* Keyboard Maintainer: [dkjer](https://github.com/dkjer) +* Hardware Supported: Durgod Galaxy board with STM32F070RBT6 +* Hardware Availability: https://www.amazon.com/Galaxy-75-Modular-Mechanical-Keyboard/dp/B08PDRD8MP + +## Instructions + +### Build + +Make command example for this keyboard (after setting up your build environment): + + make durgod/galaxy:default + +Flashing example for this keyboard: + + make durgod/galaxy: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). + +### Initial Flash + +Instructions for Flashing from initial Stock Firmware: +* [Initial Flashing](../readme.md#initial-flash) diff --git a/keyboards/durgod/dgk6x/galaxy/rules.mk b/keyboards/durgod/dgk6x/galaxy/rules.mk new file mode 100644 index 000000000000..255352f11a51 --- /dev/null +++ b/keyboards/durgod/dgk6x/galaxy/rules.mk @@ -0,0 +1 @@ +LAYOUTS = 75_ansi diff --git a/keyboards/durgod/dgk6x/hades/config.h b/keyboards/durgod/dgk6x/hades/config.h new file mode 100644 index 000000000000..c148ae1b1f13 --- /dev/null +++ b/keyboards/durgod/dgk6x/hades/config.h @@ -0,0 +1,37 @@ +/* Copyright 2021 Jessica Sullivan and Don Kjer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define PRODUCT_ID 0x4AD3 +#define DEVICE_VER 0x0001 +#define PRODUCT DURGOD Hades (QMK) + +/* key matrix rows */ +#define MATRIX_ROWS 5 +#define MATRIX_ROW_PINS { A0, A1, A2, A3, A4 } + +/* key matrix columns */ +#define MATRIX_COLS 15 +#define MATRIX_COL_PINS { B0, B1, B2, B10, B11, B12, B13, B14, B15, C6, C7, C8, C9, C10, C11 } + +#ifdef RGB_MATRIX_ENABLE +#define DRIVER_1_LED_TOTAL 58 +#define DRIVER_2_LED_TOTAL 10 +#endif diff --git a/keyboards/durgod/dgk6x/hades/hades.c b/keyboards/durgod/dgk6x/hades/hades.c new file mode 100644 index 000000000000..2f2f9e650f58 --- /dev/null +++ b/keyboards/durgod/dgk6x/hades/hades.c @@ -0,0 +1,123 @@ +/* Copyright 2021 Jessica Sullivan and Don Kjer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "hades.h" + +#ifdef RGB_MATRIX_ENABLE + + +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { +/* Refer to IS31 manual for these locations + * driver + * | R location + * | | G location + * | | | B location + * | | | | */ + + {0, C_1, B_1, A_1}, // Esc + {0, C_2, B_2, A_2}, // 1 + {0, C_3, B_3, A_3}, // 2 + {0, C_4, B_4, A_4}, // 3 + {0, C_5, B_5, A_5}, // 4 + {0, C_6, B_6, A_6}, // 5 + {0, C_7, B_7, A_7}, // 6 + {0, C_8, B_8, A_8}, // 7 + {0, C_9, B_9, A_9}, // 8 + {0, C_10, B_10, A_10}, // 9 + {0, C_11, B_11, A_11}, // 0 + {0, C_12, B_12, A_12}, // - + {0, C_13, B_13, A_13}, // = + {0, C_14, B_14, A_14}, // Bksp + {0, C_15, B_15, A_15}, // Del + + {0, F_1, E_1, D_1}, // Tab + {0, F_2, E_2, D_2}, // Q + {0, F_3, E_3, D_3}, // W + {0, F_4, E_4, D_4}, // E + {0, F_5, E_5, D_5}, // R + {0, F_6, E_6, D_6}, // T + {0, F_7, E_7, D_7}, // Y + {0, F_8, E_8, D_8}, // U + {0, F_9, E_9, D_9}, // I + {0, F_10, E_10, D_10}, // O + {0, F_11, E_11, D_11}, // P + {0, F_12, E_12, D_12}, // [ + {0, F_13, E_13, D_13}, // ] + {0, F_14, E_14, D_14}, // Pipe + {0, F_15, E_15, D_15}, // Home + + {0, I_1, H_1, G_1}, // Caps + {0, I_2, H_2, G_2}, // A + {0, I_3, H_3, G_3}, // S + {0, I_4, H_4, G_4}, // D + {0, I_5, H_5, G_5}, // F + {0, I_6, H_6, G_6}, // G + {0, I_7, H_7, G_7}, // H + {0, I_8, H_8, G_8}, // J + {0, I_9, H_9, G_9}, // K + {0, I_10, H_10, G_10}, // L + {0, I_11, H_11, G_11}, // : + {0, I_12, H_12, G_12}, // ' + {0, I_14, H_14, G_14}, // Enter + {0, I_15, H_15, G_15}, // PgUp + + {0, L_1, K_1, J_1}, // LShift + {0, L_2, K_2, J_2}, // Z + {0, L_3, K_3, J_3}, // X + {0, L_4, K_4, J_4}, // C + {0, L_5, K_5, J_5}, // V + {0, L_6, K_6, J_6}, // B + {0, L_7, K_7, J_7}, // N + {0, L_8, K_8, J_8}, // M + {0, L_9, K_9, J_9}, // < + {0, L_10, K_10, J_10}, // > + {0, L_11, K_11, J_11}, // ? + {0, L_12, K_12, J_12}, // RShift + {0, L_14, K_14, J_14}, // Up + {0, L_15, K_15, J_15}, // PgOn + + {1, C_1, B_1, A_1}, // LCtrl + {1, C_2, B_2, A_2}, // LAlt + {1, C_3, B_3, A_3}, // Windows + {1, C_6, B_6, A_6}, // Space + {1, C_10, B_10, A_10}, // Fn1/RAlt hades/venus + {1, C_11, B_11, A_11}, // Fn2/Fn1 + {1, C_12, B_12, A_12}, // RCtrl/Fn2 + {1, C_13, B_13, A_13}, // LEFT/RCtrl + {1, C_14, B_14, A_14}, // DOWN + {1, C_15, B_15, A_15} // RIGHT +}; + +led_config_t g_led_config = {{ + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }, + { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 }, + { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, NO_LED, 42, 43 }, + { 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, NO_LED, 56, 57 }, + { 58, 59, 60, NO_LED, NO_LED, 61, NO_LED, NO_LED, NO_LED, 62, 63, 64, 65, 66, 67 } +}, { + { 0, 0 }, { 16, 0 }, { 32, 0 }, { 48, 0 }, { 64, 0 }, { 80, 0 }, { 96, 0 }, { 112, 0 }, { 128, 0 }, { 144, 0 }, { 160, 0 }, { 176, 0 }, { 192, 0 }, { 216, 0 }, { 240, 0 }, + { 4, 16 }, { 24, 16 }, { 40, 16 }, { 56, 16 }, { 72, 16 }, { 88, 16 }, { 104, 16 }, { 120, 16 }, { 136, 16 }, { 152, 16 }, { 168, 16 }, { 184, 16 }, { 200, 16 }, { 220, 16 }, { 240, 16 }, + { 6, 32 }, { 28, 32 }, { 44, 32 }, { 60, 32 }, { 76, 32 }, { 92, 32 }, { 108, 32 }, { 124, 32 }, { 140, 32 }, { 156, 32 }, { 172, 32 }, { 188, 32 }, { 214, 32 }, { 240, 32 }, + { 10, 48 }, { 36, 48 }, { 52, 48 }, { 68, 48 }, { 84, 48 }, { 100, 48 }, { 116, 48 }, { 132, 48 }, { 148, 48 }, { 164, 48 }, { 180, 48 }, { 202, 48 }, { 224, 48 }, { 240, 48 }, + { 2, 64 }, { 22, 64 }, { 42, 64 }, { 101, 64 }, { 160, 64 }, { 176, 64 }, { 192, 64 }, { 208, 64 }, { 224, 64 }, { 240, 64 } +}, { + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, + 1, 1, 1, 4, 1, 1, 1, 4, 4, 4 +}}; +#endif /* RGB_MATRIX_ENABLE */ diff --git a/keyboards/durgod/dgk6x/hades/hades.h b/keyboards/durgod/dgk6x/hades/hades.h new file mode 100644 index 000000000000..630f7e92b57b --- /dev/null +++ b/keyboards/durgod/dgk6x/hades/hades.h @@ -0,0 +1,39 @@ +/* Copyright 2021 Jessica Sullivan and Don Kjer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define CAPS_LED 30 + +#define XXX KC_NO + +// This a shortcut to help you visually see your layout. +#define LAYOUT_65_ansi( \ + 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, K2D, K2E, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \ + 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, XXX, K2D, K2E }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, K3D, K3E }, \ + { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, K4B, K4C, K4D, K4E }, \ +} + + diff --git a/keyboards/durgod/dgk6x/hades/info.json b/keyboards/durgod/dgk6x/hades/info.json new file mode 100644 index 000000000000..b439ea4acbc7 --- /dev/null +++ b/keyboards/durgod/dgk6x/hades/info.json @@ -0,0 +1,83 @@ +{ + "keyboard_name": "DURGOD Hades", + "url": "https://www.amazon.com/gp/product/B08562392T", + "maintainer": "J-Sully", + "layouts": { + "LAYOUT_65_ansi": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "!", "x": 1, "y": 0 }, + { "label": "@", "x": 2, "y": 0 }, + { "label": "#", "x": 3, "y": 0 }, + { "label": "$", "x": 4, "y": 0 }, + { "label": "%", "x": 5, "y": 0 }, + { "label": "^", "x": 6, "y": 0 }, + { "label": "&", "x": 7, "y": 0 }, + { "label": "*", "x": 8, "y": 0 }, + { "label": "(", "x": 9, "y": 0 }, + { "label": ")", "x": 10, "y": 0 }, + { "label": "_", "x": 11, "y": 0 }, + { "label": "+", "x": 12, "y": 0 }, + { "label": "Backspace", "x": 13, "y": 0, "w": 2 }, + { "label": "Delete", "x": 15, "y": 0 }, + + { "label": "Tab", "x": 0, "y": 1, "w": 1.5 }, + { "label": "Q", "x": 1.5, "y": 1 }, + { "label": "W", "x": 2.5, "y": 1 }, + { "label": "E", "x": 3.5, "y": 1 }, + { "label": "R", "x": 4.5, "y": 1 }, + { "label": "T", "x": 5.5, "y": 1 }, + { "label": "Y", "x": 6.5, "y": 1 }, + { "label": "U", "x": 7.5, "y": 1 }, + { "label": "I", "x": 8.5, "y": 1 }, + { "label": "O", "x": 9.5, "y": 1 }, + { "label": "P", "x": 10.5, "y": 1 }, + { "label": "{", "x": 11.5, "y": 1 }, + { "label": "}", "x": 12.5, "y": 1 }, + { "label": "|", "x": 13.5, "y": 1, "w": 1.5 }, + { "label": "Home", "x": 15, "y": 1 }, + + { "label": "CapsLock", "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": "PgUp", "x": 15, "y": 2 }, + + { "label": "Shift", "x": 0, "y": 3, "w": 2.25 }, + { "label": "Z", "x": 2.25, "y": 3 }, + { "label": "X", "x": 3.25, "y": 3 }, + { "label": "C", "x": 4.25, "y": 3 }, + { "label": "V", "x": 5.25, "y": 3 }, + { "label": "B", "x": 6.25, "y": 3 }, + { "label": "N", "x": 7.25, "y": 3 }, + { "label": "M", "x": 8.25, "y": 3 }, + { "label": "<", "x": 9.25, "y": 3 }, + { "label": ">", "x": 10.25, "y": 3 }, + { "label": "?", "x": 11.25, "y": 3 }, + { "label": "Shift", "x": 12.25, "y": 3, "w": 1.75 }, + { "label": "Up", "x": 14, "y": 3 }, + { "label": "PgDn", "x": 15, "y": 3 }, + + { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 1.25, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 2.5, "y": 4, "w": 1.25 }, + { "x": 3.75, "y": 4, "w": 6.25 }, + { "label": "Fn1", "x": 10, "y": 4 }, + { "label": "Fn2", "x": 11, "y": 4 }, + { "label": "Ctrl", "x": 12, "y": 4 }, + { "label": "Left", "x": 13, "y": 4 }, + { "label": "Down", "x": 14, "y": 4 }, + { "label": "Right", "x": 15, "y": 4 } + ] + } + } +} diff --git a/keyboards/durgod/dgk6x/hades/keymaps/default/keymap.json b/keyboards/durgod/dgk6x/hades/keymaps/default/keymap.json new file mode 100644 index 000000000000..4794aa7d9fbe --- /dev/null +++ b/keyboards/durgod/dgk6x/hades/keymaps/default/keymap.json @@ -0,0 +1,38 @@ +{ + "keyboard": "durgod/dgk6x/hades", + "keymap": "default", + "layout": "LAYOUT_65_ansi", + "layers": [ + [ + "KC_GESC", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_MINS", "KC_EQL", "KC_BSPC", "KC_DEL", + "KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_LBRC", "KC_RBRC", "KC_BSLS", "KC_HOME", + "KC_CAPS", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT", "KC_ENT", "KC_PGUP", + "KC_LSFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_RSFT", "KC_UP", "KC_PGDN", + "KC_LCTL", "KC_LGUI", "KC_LALT", "KC_SPC", "MO(1)", "MO(2)", "KC_RCTL", "KC_LEFT", "KC_DOWN", "KC_RIGHT" + ], + [ + "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_UP", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_PSCR", "KC_SLCK", "KC_PAUS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_LEFT", "KC_DOWN", "KC_RIGHT", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_INS", "KC_END", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TGUI", "KC_TRNS", "KC_TRNS", "KC_TRNS", "MO(3)", "KC_TRNS", "KC_APP", "KC_TRNS", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_MPLY", "KC_MSTP", "KC_MPRV", "KC_MNXT", "KC_VOLD", "KC_VOLU", "KC_MUTE", "KC_TRNS", "KC_TRNS", "KC_TRNS", "RGB_TOG", "RGB_MOD", "RGB_RMOD", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "RGB_VAI", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "MO(3)", "KC_TRNS", "KC_TRNS", "RGB_SPD", "RGB_VAD", "RGB_SPI" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "RGB_SAI", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "RGB_HUD", "RGB_SAD", "RGB_HUI" + ] + ], + "author":"J-Sully", + "notes":"", + "version":1 +} diff --git a/keyboards/durgod/dgk6x/hades/keymaps/default/readme.md b/keyboards/durgod/dgk6x/hades/keymaps/default/readme.md new file mode 100644 index 000000000000..83bc679361bd --- /dev/null +++ b/keyboards/durgod/dgk6x/hades/keymaps/default/readme.md @@ -0,0 +1,14 @@ +![Durgod Hades Layout Image](https://i.imgur.com/vsi6sdK.png) + +# The default keymap for Durgod Hades. + +Currently only supports ANSI + +This keymap is intended to closely follow the stock Durgod Hades layout. RGB Hue and Saturation can be changed Fn1 + Fn2 + arrow keys. + +## Windows key lock + +You can hold down Fn1 + Windows key to disable the Windows key while in locked mode. +The 'Lock' LED indicates if the Windows key is locked. + +This is similar to the stock Hades Windows key lock functionality. diff --git a/keyboards/durgod/dgk6x/hades/keymaps/via/keymap.json b/keyboards/durgod/dgk6x/hades/keymaps/via/keymap.json new file mode 100644 index 000000000000..f1ed0ecef65c --- /dev/null +++ b/keyboards/durgod/dgk6x/hades/keymaps/via/keymap.json @@ -0,0 +1,122 @@ +{ + "keyboard": "durgod/dgk6x/hades", + "keymap": "via", + "layout": "LAYOUT_65_ansi", + "layers": [ + [ + "KC_GESC", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_MINS", "KC_EQL", "KC_BSPC", "KC_DEL", + "KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_LBRC", "KC_RBRC", "KC_BSLS", "KC_HOME", + "KC_CAPS", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT", "KC_ENT", "KC_PGUP", + "KC_LSFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_RSFT", "KC_UP", "KC_PGDN", + "KC_LCTL", "KC_LGUI", "KC_LALT", "KC_SPC", "MO(1)", "MO(2)", "KC_RCTL", "KC_LEFT", "KC_DOWN", "KC_RIGHT" + ], + [ + "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_UP", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_PSCR", "KC_SLCK", "KC_PAUS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_LEFT", "KC_DOWN", "KC_RIGHT", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_INS", "KC_END", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TGUI", "KC_TRNS", "KC_TRNS", "KC_TRNS", "MO(3)", "KC_TRNS", "KC_APP", "KC_TRNS", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_MPLY", "KC_MSTP", "KC_MPRV", "KC_MNXT", "KC_VOLD", "KC_VOLU", "KC_MUTE", "KC_TRNS", "KC_TRNS", "KC_TRNS", "RGB_TOG", "RGB_MOD", "RGB_RMOD", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "RGB_VAI", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "MO(3)", "KC_TRNS", "KC_TRNS", "RGB_SPD", "RGB_VAD", "RGB_SPI" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "RGB_SAI", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "RGB_HUD", "RGB_SAD", "RGB_HUI" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ] + ], + "author":"J-Sully", + "notes":"", + "version":1 +} diff --git a/keyboards/durgod/dgk6x/hades/keymaps/via/readme.md b/keyboards/durgod/dgk6x/hades/keymaps/via/readme.md new file mode 100644 index 000000000000..4a1ff85a7439 --- /dev/null +++ b/keyboards/durgod/dgk6x/hades/keymaps/via/readme.md @@ -0,0 +1,14 @@ +![Durgod Hades Layout Image](https://i.imgur.com/vsi6sdK.png) + +# The via keymap for Durgod Hades. + +Currently only supports ANSI + +This keymap is intended to closely follow the stock Durgod Hades layout. RGB Hue and Saturation can be changed Fn1 + Fn2 + arrow keys. + +## Windows key lock + +You can hold down Fn1 + Windows key to disable the Windows key while in locked mode. +The 'Lock' LED indicates if the Windows key is locked. + +This is similar to the stock Hades Windows key lock functionality. diff --git a/keyboards/durgod/dgk6x/hades/keymaps/via/rules.mk b/keyboards/durgod/dgk6x/hades/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/durgod/dgk6x/hades/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/durgod/dgk6x/hades/readme.md b/keyboards/durgod/dgk6x/hades/readme.md new file mode 100644 index 000000000000..950696186f4b --- /dev/null +++ b/keyboards/durgod/dgk6x/hades/readme.md @@ -0,0 +1,26 @@ +# Hades + +This is a standard off-the-shelf Durgod Hades 65% ANSI layout keyboard with RGB matrix. + +* Keyboard Maintainer: [J-Sully](https://github.com/J-Sully) and [dkjer](https://github.com/dkjer) +* Hardware Supported: Durgod Hades board with STM32F070RBT6 +* Hardware Availability: https://www.amazon.com/gp/product/B08562392T + +## Instructions + +### Build + +Make command example for this keyboard (after setting up your build environment): + + make durgod/hades:default + +Flashing example for this keyboard: + + make durgod/hades: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). + +### Initial Flash + +Instructions for Flashing from initial Stock Firmware: +* [Initial Flashing](../readme.md#initial-flash) diff --git a/keyboards/durgod/dgk6x/hades/rules.mk b/keyboards/durgod/dgk6x/hades/rules.mk new file mode 100644 index 000000000000..41f77628cd4f --- /dev/null +++ b/keyboards/durgod/dgk6x/hades/rules.mk @@ -0,0 +1 @@ +LAYOUTS = 65_ansi diff --git a/keyboards/durgod/dgk6x/halconf.h b/keyboards/durgod/dgk6x/halconf.h new file mode 100644 index 000000000000..1772f8e4104e --- /dev/null +++ b/keyboards/durgod/dgk6x/halconf.h @@ -0,0 +1,22 @@ +/* Copyright 2021 Jessica Sullivan and Don Kjer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#ifdef RGB_MATRIX_ENABLE +#define HAL_USE_I2C TRUE +#endif +#include_next diff --git a/keyboards/durgod/dgk6x/mcuconf.h b/keyboards/durgod/dgk6x/mcuconf.h new file mode 100644 index 000000000000..45c06a6f45ed --- /dev/null +++ b/keyboards/durgod/dgk6x/mcuconf.h @@ -0,0 +1,28 @@ +/* Copyright 2021 Jessica Sullivan and Don Kjer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + +#pragma once + +#include_next + +#ifdef RGB_MATRIX_ENABLE +#undef STM32_I2C_USE_DMA +#define STM32_I2C_USE_DMA FALSE + +#undef STM32_I2C_USE_I2C1 +#define STM32_I2C_USE_I2C1 TRUE +#endif /* RGB_MATRIX_ENABLE */ diff --git a/keyboards/durgod/dgk6x/readme.md b/keyboards/durgod/dgk6x/readme.md new file mode 100644 index 000000000000..06ce965690cb --- /dev/null +++ b/keyboards/durgod/dgk6x/readme.md @@ -0,0 +1,55 @@ +# DGK6X = Venus, Hades, Galaxy, etc. + +This DGK6X code is shared between the ANSI variants of Venus, Hades and Galaxy keyboards. + +* Keyboard Maintainer: [J-Sully](https://github.com/J-Sully) and [dkjer](https://github.com/dkjer) +* Hardware Supported: Durgod Venus, Hades or Galaxy board with STM32F070RBT6 +* Hardware Availability: [Venus](https://www.amazon.com/dp/B07XFP5MMZ), [Hades](https://www.amazon.com/gp/product/B08562392T) and [Galaxy](https://www.amazon.com/Galaxy-75-Modular-Mechanical-Keyboard/dp/B08PDRD8MP) + +## Instructions + +### Build + +Instructions for building the Venus, Hades and Galaxy firmware can be found here: +* [Venus](venus/readme.md) +* [Hades](hades/readme.md) +* [Galaxy](galaxy/readme.md) + +### Initial Flash + +For first Flashing from initial Stock's Firmware + +1. Back up original Firmware Image: +- Unplug +- Short Boot0 to Vdd (See below) +- Plug In USB +- Make a Flash Image's Backup in case you wanted to restore the Keyboard to Stock's Image: + - Using dfu-util: + + dfu-util --list + dfu-util --alt 0 --dfuse-address 0x08000000 --upload ${OLD_STOCK_BIN} + +2. Flash the QMK Firmware Image. +- Put board into Bootloader mode, using the same method as when backing up the original Firmware (above) +- Here are a few options for performing the initial Flash: + - Using [QMK Toolbox](https://github.com/qmk/qmk_toolbox) + - Using dfu-util: + + dfu-util --alt 0 --dfuse-address 0x08000000 --download ${NEW_QMK_BIN} + +You can short Boot0 to Vdd by shorting R19 to C30 on the sides closest to the processor, as shown: + +* Hades & Venus: +Shorting Boot0 to Vdd on Hades or Venus + +* Galaxy 75 +Shorting Boot0 to Vdd on Galaxy 75 + +### Subsequent Flashing + +For repeating Flashing you can use BootMagic: +- BootMagic Lite has been enabled with Assigned "Esc" key +- Unplug USB Cable +- Holding Esc Button +- Plug in USB Cable, Keyboard should be in ST-Bootloader state + diff --git a/keyboards/durgod/dgk6x/rules.mk b/keyboards/durgod/dgk6x/rules.mk new file mode 100644 index 000000000000..31c358a6cd9f --- /dev/null +++ b/keyboards/durgod/dgk6x/rules.mk @@ -0,0 +1,28 @@ +# MCU name +# Actually F070, but close enough +MCU = STM32F072 + +BOARD = DURGOD_STM32_F070 + +# Do not put the microcontroller into power saving mode +NO_SUSPEND_POWER_DOWN = yes + +# 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 +# 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 +LTO_ENABLE = yes + +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = IS31FL3733 + +DEFAULT_FOLDER=durgod/dgk6x/hades diff --git a/keyboards/durgod/dgk6x/venus/config.h b/keyboards/durgod/dgk6x/venus/config.h new file mode 100644 index 000000000000..3bef1ea7ed78 --- /dev/null +++ b/keyboards/durgod/dgk6x/venus/config.h @@ -0,0 +1,37 @@ +/* Copyright 2021 Jessica Sullivan and Don Kjer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define PRODUCT_ID 0x7EC5 +#define DEVICE_VER 0x0001 +#define PRODUCT DURGOD Venus (QMK) + +/* key matrix rows */ +#define MATRIX_ROWS 5 +#define MATRIX_ROW_PINS { A0, A1, A2, A3, A4 } + +/* key matrix columns */ +#define MATRIX_COLS 14 +#define MATRIX_COL_PINS { B0, B1, B2, B10, B11, B12, B13, B14, B15, C6, C7, C8, C9, C10 } + +#ifdef RGB_MATRIX_ENABLE +#define DRIVER_1_LED_TOTAL 53 +#define DRIVER_2_LED_TOTAL 8 +#endif diff --git a/keyboards/durgod/dgk6x/venus/info.json b/keyboards/durgod/dgk6x/venus/info.json new file mode 100644 index 000000000000..21e93d55c2b6 --- /dev/null +++ b/keyboards/durgod/dgk6x/venus/info.json @@ -0,0 +1,76 @@ +{ + "keyboard_name": "DURGOD Venus", + "url": "https://www.amazon.com/dp/B07XFP5MMZ", + "maintainer": "J-Sully", + "layouts": { + "LAYOUT_60_ansi": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"!", "x":1, "y":0}, + {"label":"@", "x":2, "y":0}, + {"label":"#", "x":3, "y":0}, + {"label":"$", "x":4, "y":0}, + {"label":"%", "x":5, "y":0}, + {"label":"^", "x":6, "y":0}, + {"label":"&", "x":7, "y":0}, + {"label":"*", "x":8, "y":0}, + {"label":"(", "x":9, "y":0}, + {"label":")", "x":10, "y":0}, + {"label":"_", "x":11, "y":0}, + {"label":"+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + + {"label":"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":"CapsLock", "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":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":2.75}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"Gui", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":" ", "x":3.75, "y":4, "w":6.25}, + {"label":"Alt", "x":10, "y":4, "w":1.25}, + {"label":"Gui", "x":11.25, "y":4, "w":1.25}, + {"label":"Win", "x":12.5, "y":4, "w":1.25}, + {"label":"Ctrl", "x":13.75, "y":4, "w":1.25} + ] + } + } +} diff --git a/keyboards/durgod/dgk6x/venus/keymaps/default/keymap.json b/keyboards/durgod/dgk6x/venus/keymaps/default/keymap.json new file mode 100644 index 000000000000..00742818f156 --- /dev/null +++ b/keyboards/durgod/dgk6x/venus/keymaps/default/keymap.json @@ -0,0 +1,38 @@ +{ + "keyboard": "durgod/venus", + "keymap": "default", + "layout": "LAYOUT_60_ansi", + "layers": [ + [ + "KC_GESC", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_MINS", "KC_EQL", "KC_BSPC", + "KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_LBRC", "KC_RBRC", "KC_BSLS", + "KC_CAPS", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT", "KC_ENT", + "KC_LSFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "RSFT_T(KC_UP)", + "KC_LCTL", "KC_LGUI", "KC_LALT", "KC_SPC", "KC_RALT","LT(1,KC_LEFT)","LT(2,KC_DOWN)","RCTL_T(KC_RIGHT)" + ], + [ + "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_UP", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_PSCR", "KC_INS", "KC_HOME", "KC_END", "KC_DEL", + "KC_TRNS", "KC_LEFT", "KC_DOWN", "KC_RIGHT","KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_PGUP", "KC_PGDN", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TGUI", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "MO(3)", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_MPLY", "KC_MSTP", "KC_MPRV", "KC_MNXT", "KC_MUTE", "KC_VOLD", "KC_VOLU", "KC_TRNS", "KC_TRNS", "KC_TRNS", "RGB_TOG", "RGB_MOD", "RGB_RMOD", + "KC_TRNS", "KC_TRNS", "RGB_VAI", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "RGB_SPD", "RGB_VAD", "RGB_SPI", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "MO(3)", "KC_TRNS", "KC_TRNS" + ], + [ + "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", + "XXXXXXX", "XXXXXXX", "RGB_SAI", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", + "XXXXXXX", "RGB_HUD", "RGB_SAD", "RGB_HUI", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", + "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", + "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "KC_TRNS", "KC_TRNS", "XXXXXXX" + ] + ], + "author":"dkjer", + "notes":"", + "version":1 +} diff --git a/keyboards/durgod/dgk6x/venus/keymaps/default/readme.md b/keyboards/durgod/dgk6x/venus/keymaps/default/readme.md new file mode 100644 index 000000000000..da166eb60a34 --- /dev/null +++ b/keyboards/durgod/dgk6x/venus/keymaps/default/readme.md @@ -0,0 +1,11 @@ +![Durgod Venus Layout Image](https://i.imgur.com/eYjuTLy.png) + +# The default keymap for Durgod Venus. + +Layer 0 : Standard ANSI 60 Keys layout + +Layer 1 : F1-12 and additional navigation keys. + +Layer 2 : Media and RGB matrix control + +Layer 3 : RGB matrix hue and saturation diff --git a/keyboards/durgod/dgk6x/venus/keymaps/via/keymap.json b/keyboards/durgod/dgk6x/venus/keymaps/via/keymap.json new file mode 100644 index 000000000000..9d9bcf746798 --- /dev/null +++ b/keyboards/durgod/dgk6x/venus/keymaps/via/keymap.json @@ -0,0 +1,122 @@ +{ + "keyboard": "durgod/venus", + "keymap": "via", + "layout": "LAYOUT_60_ansi", + "layers": [ + [ + "KC_GESC", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_MINS", "KC_EQL", "KC_BSPC", + "KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_LBRC", "KC_RBRC", "KC_BSLS", + "KC_CAPS", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT", "KC_ENT", + "KC_LSFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "RSFT_T(KC_UP)", + "KC_LCTL", "KC_LGUI", "KC_LALT", "KC_SPC", "KC_RALT","LT(1,KC_LEFT)","LT(2,KC_DOWN)","RCTL_T(KC_RIGHT)" + ], + [ + "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_UP", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_PSCR", "KC_INS", "KC_HOME", "KC_END", "KC_DEL", + "KC_TRNS", "KC_LEFT", "KC_DOWN", "KC_RIGHT","KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_PGUP", "KC_PGDN", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TGUI", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "MO(3)", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_MPLY", "KC_MSTP", "KC_MPRV", "KC_MNXT", "KC_MUTE", "KC_VOLD", "KC_VOLU", "KC_TRNS", "KC_TRNS", "KC_TRNS", "RGB_TOG", "RGB_MOD", "RGB_RMOD", + "KC_TRNS", "KC_TRNS", "RGB_VAI", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "RGB_SPD", "RGB_VAD", "RGB_SPI", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "MO(3)", "KC_TRNS", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "RGB_SAI", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "RGB_HUD", "RGB_SAD", "RGB_HUI", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ] + ], + "author":"dkjer", + "notes":"", + "version":1 +} diff --git a/keyboards/durgod/dgk6x/venus/keymaps/via/readme.md b/keyboards/durgod/dgk6x/venus/keymaps/via/readme.md new file mode 100644 index 000000000000..b23f4eccf860 --- /dev/null +++ b/keyboards/durgod/dgk6x/venus/keymaps/via/readme.md @@ -0,0 +1,12 @@ +![Durgod Venus Layout Image](https://i.imgur.com/eYjuTLy.png) + +# The via keymap for Durgod Venus. + +Layer 0 : Standard ANSI 60 Keys layout + +Layer 1 : F1-12 and additional navigation keys. + +Layer 2 : Media and RGB matrix control + +Layer 3 : RGB matrix hue and saturation + diff --git a/keyboards/durgod/dgk6x/venus/keymaps/via/rules.mk b/keyboards/durgod/dgk6x/venus/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/durgod/dgk6x/venus/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/durgod/dgk6x/venus/readme.md b/keyboards/durgod/dgk6x/venus/readme.md new file mode 100644 index 000000000000..9e37d49633cc --- /dev/null +++ b/keyboards/durgod/dgk6x/venus/readme.md @@ -0,0 +1,26 @@ +# Venus + +This is a standard off-the-shelf Durgod Venus 60% ANSI Layout keyboard with RGB matrix. + +* Keyboard Maintainer: [J-Sully](https://github.com/J-Sully) and [dkjer](https://github.com/dkjer) +* Hardware Supported: Durgod Venus board with STM32F070RBT6 +* Hardware Availability: https://www.amazon.com/dp/B07XFP5MMZ + +## Instructions + +### Build + +Make command example for this keyboard (after setting up your build environment): + + make durgod/venus:default + +Flashing example for this keyboard: + + make durgod/venus: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). + +### Initial Flash + +Instructions for Flashing from initial Stock Firmware: +* [Initial Flashing](../readme.md#initial-flash) diff --git a/keyboards/durgod/dgk6x/venus/rules.mk b/keyboards/durgod/dgk6x/venus/rules.mk new file mode 100644 index 000000000000..cdf5ba34a210 --- /dev/null +++ b/keyboards/durgod/dgk6x/venus/rules.mk @@ -0,0 +1 @@ +LAYOUTS = 60_ansi diff --git a/keyboards/durgod/dgk6x/venus/venus.c b/keyboards/durgod/dgk6x/venus/venus.c new file mode 100644 index 000000000000..0b7fbd12f3d5 --- /dev/null +++ b/keyboards/durgod/dgk6x/venus/venus.c @@ -0,0 +1,115 @@ +/* Copyright 2021 Jessica Sullivan and Don Kjer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "venus.h" + +#ifdef RGB_MATRIX_ENABLE + +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { +/* Refer to IS31 manual for these locations + * driver + * | R location + * | | G location + * | | | B location + * | | | | */ + + {0, C_1, B_1, A_1}, // Esc + {0, C_2, B_2, A_2}, // 1 + {0, C_3, B_3, A_3}, // 2 + {0, C_4, B_4, A_4}, // 3 + {0, C_5, B_5, A_5}, // 4 + {0, C_6, B_6, A_6}, // 5 + {0, C_7, B_7, A_7}, // 6 + {0, C_8, B_8, A_8}, // 7 + {0, C_9, B_9, A_9}, // 8 + {0, C_10, B_10, A_10}, // 9 + {0, C_11, B_11, A_11}, // 0 + {0, C_12, B_12, A_12}, // - + {0, C_13, B_13, A_13}, // = + {0, C_14, B_14, A_14}, // Bksp + + {0, F_1, E_1, D_1}, // Tab + {0, F_2, E_2, D_2}, // Q + {0, F_3, E_3, D_3}, // W + {0, F_4, E_4, D_4}, // E + {0, F_5, E_5, D_5}, // R + {0, F_6, E_6, D_6}, // T + {0, F_7, E_7, D_7}, // Y + {0, F_8, E_8, D_8}, // U + {0, F_9, E_9, D_9}, // I + {0, F_10, E_10, D_10}, // O + {0, F_11, E_11, D_11}, // P + {0, F_12, E_12, D_12}, // [ + {0, F_13, E_13, D_13}, // ] + {0, F_14, E_14, D_14}, // Pipe + + {0, I_1, H_1, G_1}, // Caps + {0, I_2, H_2, G_2}, // A + {0, I_3, H_3, G_3}, // S + {0, I_4, H_4, G_4}, // D + {0, I_5, H_5, G_5}, // F + {0, I_6, H_6, G_6}, // G + {0, I_7, H_7, G_7}, // H + {0, I_8, H_8, G_8}, // J + {0, I_9, H_9, G_9}, // K + {0, I_10, H_10, G_10}, // L + {0, I_11, H_11, G_11}, // : + {0, I_12, H_12, G_12}, // ' + {0, I_14, H_14, G_14}, // Enter + + {0, L_1, K_1, J_1}, // LShift + {0, L_2, K_2, J_2}, // Z + {0, L_3, K_3, J_3}, // X + {0, L_4, K_4, J_4}, // C + {0, L_5, K_5, J_5}, // V + {0, L_6, K_6, J_6}, // B + {0, L_7, K_7, J_7}, // N + {0, L_8, K_8, J_8}, // M + {0, L_9, K_9, J_9}, // < + {0, L_10, K_10, J_10}, // > + {0, L_11, K_11, J_11}, // ? + {0, L_12, K_12, J_12}, // RShift + + {1, C_1, B_1, A_1}, // LCtrl + {1, C_2, B_2, A_2}, // LAlt + {1, C_3, B_3, A_3}, // Windows + {1, C_6, B_6, A_6}, // Space + {1, C_10, B_10, A_10}, // Fn1/RAlt hades/venus + {1, C_11, B_11, A_11}, // Fn2/Fn1 + {1, C_12, B_12, A_12}, // RCtrl/Fn2 + {1, C_13, B_13, A_13}, // LEFT/RCtrl +}; + +led_config_t g_led_config = { { + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 }, + { 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27 }, + { 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, NO_LED, 40 }, + { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, NO_LED, NO_LED }, + { 53, 54, 55, NO_LED, NO_LED, 56, NO_LED, NO_LED, NO_LED, 57, 58, 59, 60, NO_LED } +}, { + { 0, 0 }, { 16, 0 }, { 32, 0 }, { 48, 0 }, { 64, 0 }, { 80, 0 }, { 96, 0 }, { 112, 0 }, { 128, 0 }, { 144, 0 }, { 160, 0 }, { 176, 0 }, { 192, 0 }, { 216, 0 }, + { 4, 16 }, { 24, 16 }, { 40, 16 }, { 56, 16 }, { 72, 16 }, { 88, 16 }, { 104, 16 }, { 120, 16 }, { 136, 16 }, { 152, 16 }, { 168, 16 }, { 184, 16 }, { 200, 16 }, { 220, 16 }, + { 6, 32 }, { 28, 32 }, { 44, 32 }, { 60, 32 }, { 76, 32 }, { 92, 32 }, { 108, 32 }, { 124, 32 }, { 140, 32 }, { 156, 32 }, { 172, 32 }, { 188, 32 }, { 214, 32 }, + { 10, 48 }, { 36, 48 }, { 52, 48 }, { 68, 48 }, { 84, 48 }, { 100, 48 }, { 116, 48 }, { 132, 48 }, { 148, 48 }, { 164, 48 }, { 180, 48 }, { 210, 48 }, + { 2, 64 }, { 22, 64 }, { 42, 64 }, { 102, 64 }, { 162, 64 }, { 182, 64 }, { 202, 64 }, { 222, 64 }, +}, { + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 1, 1, 1, 4, 1, 1, 1, 1 +} }; +#endif /* RGB_MATRIX_ENABLE */ diff --git a/keyboards/durgod/dgk6x/venus/venus.h b/keyboards/durgod/dgk6x/venus/venus.h new file mode 100644 index 000000000000..6103c531dc6b --- /dev/null +++ b/keyboards/durgod/dgk6x/venus/venus.h @@ -0,0 +1,37 @@ +/* Copyright 2021 Jessica Sullivan and Don Kjer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define CAPS_LED 28 + +#define XXX KC_NO + +// This a shortcut to help you visually see your layout. +#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, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, \ + K40, K41, K42, K45, K49, K4A, K4B, K4C \ +) { \ + { 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, K3B, XXX, XXX }, \ + { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, K4B, K4C, XXX }, \ +} diff --git a/keyboards/durgod/galaxy/readme.md b/keyboards/durgod/galaxy/readme.md new file mode 100644 index 000000000000..a85bf3f73784 --- /dev/null +++ b/keyboards/durgod/galaxy/readme.md @@ -0,0 +1,3 @@ +# Galaxy 75 + +See: [Galaxy 75](../dgk6x/galaxy/readme.md) diff --git a/keyboards/durgod/galaxy/rules.mk b/keyboards/durgod/galaxy/rules.mk new file mode 100644 index 000000000000..ff1e1ff2050c --- /dev/null +++ b/keyboards/durgod/galaxy/rules.mk @@ -0,0 +1 @@ +DEFAULT_FOLDER=durgod/dgk6x/galaxy diff --git a/keyboards/durgod/hades/readme.md b/keyboards/durgod/hades/readme.md new file mode 100644 index 000000000000..c132a99bf9da --- /dev/null +++ b/keyboards/durgod/hades/readme.md @@ -0,0 +1,3 @@ +# Hades + +See: [Hades](../dgk6x/hades/readme.md) diff --git a/keyboards/durgod/hades/rules.mk b/keyboards/durgod/hades/rules.mk new file mode 100644 index 000000000000..b5a326f3443a --- /dev/null +++ b/keyboards/durgod/hades/rules.mk @@ -0,0 +1 @@ +DEFAULT_FOLDER=durgod/dgk6x/hades diff --git a/keyboards/durgod/k310/base/readme.md b/keyboards/durgod/k310/base/readme.md new file mode 100644 index 000000000000..1f818dacc9c0 --- /dev/null +++ b/keyboards/durgod/k310/base/readme.md @@ -0,0 +1,6 @@ +# Taurus K310 + +Base Model - no backlight leds + +See: [K310](../../k3x0/k310/base/readme.md) + diff --git a/keyboards/durgod/k310/base/rules.mk b/keyboards/durgod/k310/base/rules.mk new file mode 100644 index 000000000000..ff432cc4aa12 --- /dev/null +++ b/keyboards/durgod/k310/base/rules.mk @@ -0,0 +1 @@ +DEFAULT_FOLDER=durgod/k3x0/k310/base diff --git a/keyboards/durgod/k310/readme.md b/keyboards/durgod/k310/readme.md new file mode 100644 index 000000000000..234fcc875d67 --- /dev/null +++ b/keyboards/durgod/k310/readme.md @@ -0,0 +1,4 @@ +# K310 + +See: [K310](../k3x0/k310/readme.md) + diff --git a/keyboards/durgod/k310/rules.mk b/keyboards/durgod/k310/rules.mk new file mode 100644 index 000000000000..e200539b260f --- /dev/null +++ b/keyboards/durgod/k310/rules.mk @@ -0,0 +1 @@ +DEFAULT_FOLDER=durgod/k3x0/k310 diff --git a/keyboards/durgod/k320/base/readme.md b/keyboards/durgod/k320/base/readme.md new file mode 100644 index 000000000000..8b74e28e54c9 --- /dev/null +++ b/keyboards/durgod/k320/base/readme.md @@ -0,0 +1,6 @@ +# Taurus K320 + +Base Model - no backlight leds + +See: [K320](../../k3x0/k320/base/readme.md) + diff --git a/keyboards/durgod/k320/base/rules.mk b/keyboards/durgod/k320/base/rules.mk new file mode 100644 index 000000000000..de33470cc001 --- /dev/null +++ b/keyboards/durgod/k320/base/rules.mk @@ -0,0 +1 @@ +DEFAULT_FOLDER=durgod/k3x0/k320/base diff --git a/keyboards/durgod/k320/config.h b/keyboards/durgod/k320/config.h deleted file mode 100644 index 323a9ccff9ba..000000000000 --- a/keyboards/durgod/k320/config.h +++ /dev/null @@ -1,56 +0,0 @@ -/* Copyright 2021 kuenhlee and Don Kjer - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include "config_common.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0xD60D -#define PRODUCT_ID 0x3200 -#define DEVICE_VER 0x0001 -#define MANUFACTURER Hoksi Technology -#define PRODUCT DURGOD Taurus K320 (QMK) - -/* key matrix size */ -#define MATRIX_ROWS 7 -#define MATRIX_COLS 16 - -#define MATRIX_ROW_PINS { A0, A1, A2, A3, A4, A5, A6 } -#define MATRIX_COL_PINS { C4, C5, B0, B1, B2, B10, B11, B12, B13, B14, B15, C6, C7, C10, C11, C12 } - -/* COL2ROW, ROW2COL*/ -#define DIODE_DIRECTION ROW2COL - -// Dynamic EEPROM -// Something sensible or else VIA may crash -// Users may enable more if they wish -#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 4095 - -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 5 - -/* Bootmagic Lite key configuration */ -#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE -#define BOOTMAGIC_LITE_ROW 0 -#define BOOTMAGIC_LITE_COLUMN 0 - -/* LED indicator pins */ -#define LED_CAPS_LOCK_PIN C9 -#define LED_SCROLL_LOCK_PIN A8 -#define LED_WIN_LOCK_PIN A9 -#define LED_MR_LOCK_PIN A10 -#define LED_PIN_ON_STATE 0 diff --git a/keyboards/durgod/k320/info.json b/keyboards/durgod/k320/info.json deleted file mode 100644 index 6c67c3d453ad..000000000000 --- a/keyboards/durgod/k320/info.json +++ /dev/null @@ -1,300 +0,0 @@ -{ - "keyboard_name": "DURGOD Taurus K320", - "url": "https://www.durgod.com/page9?product_id=47&_l=en", - "maintainer": "dkjer", - "width": 18.25, - "height": 6.5, - "layouts": { - "LAYOUT_tkl_ansi": { - "layout": [ - { "label": "Esc", "x": 0, "y": 0 }, - { "label": "F1", "x": 2, "y": 0 }, - { "label": "F2", "x": 3, "y": 0 }, - { "label": "F3", "x": 4, "y": 0 }, - { "label": "F4", "x": 5, "y": 0 }, - { "label": "F5", "x": 6.5, "y": 0 }, - { "label": "F6", "x": 7.5, "y": 0 }, - { "label": "F7", "x": 8.5, "y": 0 }, - { "label": "F8", "x": 9.5, "y": 0 }, - { "label": "F9", "x": 11, "y": 0 }, - { "label": "F10", "x": 12, "y": 0 }, - { "label": "F11", "x": 13, "y": 0 }, - { "label": "F12", "x": 14, "y": 0 }, - { "label": "PrtSc", "x": 15.25, "y": 0 }, - { "label": "Scroll Lock", "x": 16.25, "y": 0 }, - { "label": "Pause", "x": 17.25, "y": 0 }, - - { "label": "~", "x": 0, "y": 1.5 }, - { "label": "!", "x": 1, "y": 1.5 }, - { "label": "@", "x": 2, "y": 1.5 }, - { "label": "#", "x": 3, "y": 1.5 }, - { "label": "$", "x": 4, "y": 1.5 }, - { "label": "%", "x": 5, "y": 1.5 }, - { "label": "^", "x": 6, "y": 1.5 }, - { "label": "&", "x": 7, "y": 1.5 }, - { "label": "*", "x": 8, "y": 1.5 }, - { "label": "(", "x": 9, "y": 1.5 }, - { "label": ")", "x": 10, "y": 1.5 }, - { "label": "_", "x": 11, "y": 1.5 }, - { "label": "+", "x": 12, "y": 1.5 }, - { "label": "Backspace", "x": 13, "y": 1.5, "w": 2 }, - { "label": "Insert", "x": 15.25, "y": 1.5 }, - { "label": "Home", "x": 16.25, "y": 1.5 }, - { "label": "PgUp", "x": 17.25, "y": 1.5 }, - - { "label": "Tab", "x": 0, "y": 2.5, "w": 1.5 }, - { "label": "Q", "x": 1.5, "y": 2.5 }, - { "label": "W", "x": 2.5, "y": 2.5 }, - { "label": "E", "x": 3.5, "y": 2.5 }, - { "label": "R", "x": 4.5, "y": 2.5 }, - { "label": "T", "x": 5.5, "y": 2.5 }, - { "label": "Y", "x": 6.5, "y": 2.5 }, - { "label": "U", "x": 7.5, "y": 2.5 }, - { "label": "I", "x": 8.5, "y": 2.5 }, - { "label": "O", "x": 9.5, "y": 2.5 }, - { "label": "P", "x": 10.5, "y": 2.5 }, - { "label": "{", "x": 11.5, "y": 2.5 }, - { "label": "}", "x": 12.5, "y": 2.5 }, - { "label": "|", "x": 13.5, "y": 2.5, "w": 1.5 }, - { "label": "Delete", "x": 15.25, "y": 2.5 }, - { "label": "End", "x": 16.25, "y": 2.5 }, - { "label": "PgDn", "x": 17.25, "y": 2.5 }, - - { "label": "Caps Lock", "x": 0, "y": 3.5, "w": 1.75 }, - { "label": "A", "x": 1.75, "y": 3.5 }, - { "label": "S", "x": 2.75, "y": 3.5 }, - { "label": "D", "x": 3.75, "y": 3.5 }, - { "label": "F", "x": 4.75, "y": 3.5 }, - { "label": "G", "x": 5.75, "y": 3.5 }, - { "label": "H", "x": 6.75, "y": 3.5 }, - { "label": "J", "x": 7.75, "y": 3.5 }, - { "label": "K", "x": 8.75, "y": 3.5 }, - { "label": "L", "x": 9.75, "y": 3.5 }, - { "label": ":", "x": 10.75, "y": 3.5 }, - { "label": "\"", "x": 11.75, "y": 3.5 }, - { "label": "Enter", "x": 12.75, "y": 3.5, "w": 2.25 }, - - { "label": "Shift", "x": 0, "y": 4.5, "w": 2.25 }, - { "label": "Z", "x": 2.25, "y": 4.5 }, - { "label": "X", "x": 3.25, "y": 4.5 }, - { "label": "C", "x": 4.25, "y": 4.5 }, - { "label": "V", "x": 5.25, "y": 4.5 }, - { "label": "B", "x": 6.25, "y": 4.5 }, - { "label": "N", "x": 7.25, "y": 4.5 }, - { "label": "M", "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": "Shift", "x": 12.25, "y": 4.5, "w": 2.75 }, - { "label": "\u2191", "x": 16.25, "y": 4.5 }, - - { "label": "Ctrl", "x": 0, "y": 5.5, "w": 1.25 }, - { "label": "Win", "x": 1.25, "y": 5.5, "w": 1.25 }, - { "label": "Alt", "x": 2.5, "y": 5.5, "w": 1.25 }, - { "x": 3.75, "y": 5.5, "w": 6.25 }, - { "label": "Alt", "x": 10, "y": 5.5, "w": 1.25 }, - { "label": "Fn", "x": 11.25, "y": 5.5, "w": 1.25 }, - { "label": "Menu", "x": 12.5, "y": 5.5, "w": 1.25 }, - { "label": "Ctrl", "x": 13.75, "y": 5.5, "w": 1.25 }, - { "label": "\u2190", "x": 15.25, "y": 5.5 }, - { "label": "\u2193", "x": 16.25, "y": 5.5 }, - { "label": "\u2192", "x": 17.25, "y": 5.5 } - ] - }, - "LAYOUT_tkl_iso": { - "layout": [ - { "label": "Esc", "x": 0, "y": 0 }, - { "label": "F1", "x": 2, "y": 0 }, - { "label": "F2", "x": 3, "y": 0 }, - { "label": "F3", "x": 4, "y": 0 }, - { "label": "F4", "x": 5, "y": 0 }, - { "label": "F5", "x": 6.5, "y": 0 }, - { "label": "F6", "x": 7.5, "y": 0 }, - { "label": "F7", "x": 8.5, "y": 0 }, - { "label": "F8", "x": 9.5, "y": 0 }, - { "label": "F9", "x": 11, "y": 0 }, - { "label": "F10", "x": 12, "y": 0 }, - { "label": "F11", "x": 13, "y": 0 }, - { "label": "F12", "x": 14, "y": 0 }, - { "label": "PrtSc", "x": 15.25, "y": 0 }, - { "label": "Scroll Lock", "x": 16.25, "y": 0 }, - { "label": "Pause", "x": 17.25, "y": 0 }, - - { "label": "~", "x": 0, "y": 1.5 }, - { "label": "!", "x": 1, "y": 1.5 }, - { "label": "@", "x": 2, "y": 1.5 }, - { "label": "#", "x": 3, "y": 1.5 }, - { "label": "$", "x": 4, "y": 1.5 }, - { "label": "%", "x": 5, "y": 1.5 }, - { "label": "^", "x": 6, "y": 1.5 }, - { "label": "&", "x": 7, "y": 1.5 }, - { "label": "*", "x": 8, "y": 1.5 }, - { "label": "(", "x": 9, "y": 1.5 }, - { "label": ")", "x": 10, "y": 1.5 }, - { "label": "_", "x": 11, "y": 1.5 }, - { "label": "+", "x": 12, "y": 1.5 }, - { "label": "Backspace", "x": 13, "y": 1.5, "w": 2 }, - { "label": "Insert", "x": 15.25, "y": 1.5 }, - { "label": "Home", "x": 16.25, "y": 1.5 }, - { "label": "PgUp", "x": 17.25, "y": 1.5 }, - - { "label": "Tab", "x": 0, "y": 2.5, "w": 1.5 }, - { "label": "Q", "x": 1.5, "y": 2.5 }, - { "label": "W", "x": 2.5, "y": 2.5 }, - { "label": "E", "x": 3.5, "y": 2.5 }, - { "label": "R", "x": 4.5, "y": 2.5 }, - { "label": "T", "x": 5.5, "y": 2.5 }, - { "label": "Y", "x": 6.5, "y": 2.5 }, - { "label": "U", "x": 7.5, "y": 2.5 }, - { "label": "I", "x": 8.5, "y": 2.5 }, - { "label": "O", "x": 9.5, "y": 2.5 }, - { "label": "P", "x": 10.5, "y": 2.5 }, - { "label": "{", "x": 11.5, "y": 2.5 }, - { "label": "}", "x": 12.5, "y": 2.5 }, - { "label": "Delete", "x": 15.25, "y": 2.5 }, - { "label": "End", "x": 16.25, "y": 2.5 }, - { "label": "PgDn", "x": 17.25, "y": 2.5 }, - - { "label": "Caps Lock", "x": 0, "y": 3.5, "w": 1.75 }, - { "label": "A", "x": 1.75, "y": 3.5 }, - { "label": "S", "x": 2.75, "y": 3.5 }, - { "label": "D", "x": 3.75, "y": 3.5 }, - { "label": "F", "x": 4.75, "y": 3.5 }, - { "label": "G", "x": 5.75, "y": 3.5 }, - { "label": "H", "x": 6.75, "y": 3.5 }, - { "label": "J", "x": 7.75, "y": 3.5 }, - { "label": "K", "x": 8.75, "y": 3.5 }, - { "label": "L", "x": 9.75, "y": 3.5 }, - { "label": ":", "x": 10.75, "y": 3.5 }, - { "label": "\"", "x": 11.75, "y": 3.5 }, - { "label": "#", "x": 12.75, "y": 3.5 }, - { "label": "Enter", "x": 13.75, "y": 2.5, "w": 1.25, "h": 2 }, - - { "label": "Shift", "x": 0, "y": 4.5, "w": 1.25 }, - { "label": "\\", "x": 1.25, "y": 4.5 }, - { "label": "Z", "x": 2.25, "y": 4.5 }, - { "label": "X", "x": 3.25, "y": 4.5 }, - { "label": "C", "x": 4.25, "y": 4.5 }, - { "label": "V", "x": 5.25, "y": 4.5 }, - { "label": "B", "x": 6.25, "y": 4.5 }, - { "label": "N", "x": 7.25, "y": 4.5 }, - { "label": "M", "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": "Shift", "x": 12.25, "y": 4.5, "w": 2.75 }, - { "label": "\u2191", "x": 16.25, "y": 4.5 }, - - { "label": "Ctrl", "x": 0, "y": 5.5, "w": 1.25 }, - { "label": "Win", "x": 1.25, "y": 5.5, "w": 1.25 }, - { "label": "Alt", "x": 2.5, "y": 5.5, "w": 1.25 }, - { "x": 3.75, "y": 5.5, "w": 6.25 }, - { "label": "Alt", "x": 10, "y": 5.5, "w": 1.25 }, - { "label": "Fn", "x": 11.25, "y": 5.5, "w": 1.25 }, - { "label": "Menu", "x": 12.5, "y": 5.5, "w": 1.25 }, - { "label": "Ctrl", "x": 13.75, "y": 5.5, "w": 1.25 }, - { "label": "\u2190", "x": 15.25, "y": 5.5 }, - { "label": "\u2193", "x": 16.25, "y": 5.5 }, - { "label": "\u2192", "x": 17.25, "y": 5.5 } - ] - }, - "LAYOUT_all": { - "layout": [ - { "label": "Esc", "x": 0, "y": 0 }, - { "label": "F1", "x": 2, "y": 0 }, - { "label": "F2", "x": 3, "y": 0 }, - { "label": "F3", "x": 4, "y": 0 }, - { "label": "F4", "x": 5, "y": 0 }, - { "label": "F5", "x": 6.5, "y": 0 }, - { "label": "F6", "x": 7.5, "y": 0 }, - { "label": "F7", "x": 8.5, "y": 0 }, - { "label": "F8", "x": 9.5, "y": 0 }, - { "label": "F9", "x": 11, "y": 0 }, - { "label": "F10", "x": 12, "y": 0 }, - { "label": "F11", "x": 13, "y": 0 }, - { "label": "F12", "x": 14, "y": 0 }, - { "label": "PrtSc", "x": 15.25, "y": 0 }, - { "label": "Scroll Lock", "x": 16.25, "y": 0 }, - { "label": "Pause", "x": 17.25, "y": 0 }, - - { "label": "~", "x": 0, "y": 1.5 }, - { "label": "!", "x": 1, "y": 1.5 }, - { "label": "@", "x": 2, "y": 1.5 }, - { "label": "#", "x": 3, "y": 1.5 }, - { "label": "$", "x": 4, "y": 1.5 }, - { "label": "%", "x": 5, "y": 1.5 }, - { "label": "^", "x": 6, "y": 1.5 }, - { "label": "&", "x": 7, "y": 1.5 }, - { "label": "*", "x": 8, "y": 1.5 }, - { "label": "(", "x": 9, "y": 1.5 }, - { "label": ")", "x": 10, "y": 1.5 }, - { "label": "_", "x": 11, "y": 1.5 }, - { "label": "+", "x": 12, "y": 1.5 }, - { "label": "Backspace", "x": 13, "y": 1.5, "w": 2 }, - { "label": "Insert", "x": 15.25, "y": 1.5 }, - { "label": "Home", "x": 16.25, "y": 1.5 }, - { "label": "PgUp", "x": 17.25, "y": 1.5 }, - - { "label": "Tab", "x": 0, "y": 2.5, "w": 1.5 }, - { "label": "Q", "x": 1.5, "y": 2.5 }, - { "label": "W", "x": 2.5, "y": 2.5 }, - { "label": "E", "x": 3.5, "y": 2.5 }, - { "label": "R", "x": 4.5, "y": 2.5 }, - { "label": "T", "x": 5.5, "y": 2.5 }, - { "label": "Y", "x": 6.5, "y": 2.5 }, - { "label": "U", "x": 7.5, "y": 2.5 }, - { "label": "I", "x": 8.5, "y": 2.5 }, - { "label": "O", "x": 9.5, "y": 2.5 }, - { "label": "P", "x": 10.5, "y": 2.5 }, - { "label": "{", "x": 11.5, "y": 2.5 }, - { "label": "}", "x": 12.5, "y": 2.5 }, - { "label": "|", "x": 13.5, "y": 2.5, "w": 1.5 }, - { "label": "Delete", "x": 15.25, "y": 2.5 }, - { "label": "End", "x": 16.25, "y": 2.5 }, - { "label": "PgDn", "x": 17.25, "y": 2.5 }, - - { "label": "Caps Lock", "x": 0, "y": 3.5, "w": 1.75 }, - { "label": "A", "x": 1.75, "y": 3.5 }, - { "label": "S", "x": 2.75, "y": 3.5 }, - { "label": "D", "x": 3.75, "y": 3.5 }, - { "label": "F", "x": 4.75, "y": 3.5 }, - { "label": "G", "x": 5.75, "y": 3.5 }, - { "label": "H", "x": 6.75, "y": 3.5 }, - { "label": "J", "x": 7.75, "y": 3.5 }, - { "label": "K", "x": 8.75, "y": 3.5 }, - { "label": "L", "x": 9.75, "y": 3.5 }, - { "label": ":", "x": 10.75, "y": 3.5 }, - { "label": "\"", "x": 11.75, "y": 3.5 }, - { "label": "#", "x": 12.75, "y": 3.5 }, - { "label": "Enter", "x": 13.75, "y": 3.5, "w": 1.25 }, - - { "label": "Shift", "x": 0, "y": 4.5, "w": 1.25 }, - { "label": "\\", "x": 1.25, "y": 4.5 }, - { "label": "Z", "x": 2.25, "y": 4.5 }, - { "label": "X", "x": 3.25, "y": 4.5 }, - { "label": "C", "x": 4.25, "y": 4.5 }, - { "label": "V", "x": 5.25, "y": 4.5 }, - { "label": "B", "x": 6.25, "y": 4.5 }, - { "label": "N", "x": 7.25, "y": 4.5 }, - { "label": "M", "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": "Shift", "x": 12.25, "y": 4.5, "w": 2.75 }, - { "label": "\u2191", "x": 16.25, "y": 4.5 }, - - { "label": "Ctrl", "x": 0, "y": 5.5, "w": 1.25 }, - { "label": "Win", "x": 1.25, "y": 5.5, "w": 1.25 }, - { "label": "Alt", "x": 2.5, "y": 5.5, "w": 1.25 }, - { "x": 3.75, "y": 5.5, "w": 6.25 }, - { "label": "Alt", "x": 10, "y": 5.5, "w": 1.25 }, - { "label": "Fn", "x": 11.25, "y": 5.5, "w": 1.25 }, - { "label": "Menu", "x": 12.5, "y": 5.5, "w": 1.25 }, - { "label": "Ctrl", "x": 13.75, "y": 5.5, "w": 1.25 }, - { "label": "\u2190", "x": 15.25, "y": 5.5 }, - { "label": "\u2193", "x": 16.25, "y": 5.5 }, - { "label": "\u2192", "x": 17.25, "y": 5.5 } - ] - } - } -} diff --git a/keyboards/durgod/k320/k320.c b/keyboards/durgod/k320/k320.c deleted file mode 100644 index 42091f36cd2c..000000000000 --- a/keyboards/durgod/k320/k320.c +++ /dev/null @@ -1,62 +0,0 @@ -/* Copyright 2021 kuenhlee and Don Kjer - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "k320.h" - -/* Private Functions */ -void off_all_leds(void) { - writePinHigh(LED_CAPS_LOCK_PIN); - writePinHigh(LED_SCROLL_LOCK_PIN); - writePinHigh(LED_WIN_LOCK_PIN); - writePinHigh(LED_MR_LOCK_PIN); -} - -void on_all_leds(void) { - writePinLow(LED_CAPS_LOCK_PIN); - writePinLow(LED_SCROLL_LOCK_PIN); - writePinLow(LED_WIN_LOCK_PIN); - writePinLow(LED_MR_LOCK_PIN); -} - -/* WinLock and MR LEDs are non-standard. Need to override led init */ -void led_init_ports(void) { - setPinOutput(LED_CAPS_LOCK_PIN); - setPinOutput(LED_SCROLL_LOCK_PIN); - setPinOutput(LED_WIN_LOCK_PIN); - setPinOutput(LED_MR_LOCK_PIN); - off_all_leds(); -} - - -#ifndef WINLOCK_DISABLED -static bool win_key_locked = false; - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case KC_TGUI: - if (record->event.pressed) { - // Toggle GUI lock on key press - win_key_locked = !win_key_locked; - writePin(LED_WIN_LOCK_PIN, !win_key_locked); - } - break; - case KC_LGUI: - if (win_key_locked) { return false; } - break; - } - return process_record_user(keycode, record); -} -#endif /* WINLOCK_DISABLED */ diff --git a/keyboards/durgod/k320/keymaps/default/keymap.json b/keyboards/durgod/k320/keymaps/default/keymap.json deleted file mode 100644 index d8242ae7646d..000000000000 --- a/keyboards/durgod/k320/keymaps/default/keymap.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "keyboard": "durgod/k320", - "keymap": "default", - "layout": "LAYOUT_all", - "layers": [ - [ - "KC_ESC", "KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "KC_F11", "KC_F12", "KC_PSCR", "KC_SLCK", "KC_PAUS", - "KC_GRV", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_MINS", "KC_EQL", "KC_BSPC", "KC_INS", "KC_HOME", "KC_PGUP", - "KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_LBRC", "KC_RBRC", "KC_BSLS", "KC_DEL", "KC_END", "KC_PGDN", - "KC_CAPS", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT", "KC_NUHS", "KC_ENT", - "KC_LSFT", "KC_NUBS", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_RSFT", "KC_UP", - "KC_LCTL", "KC_LGUI", "KC_LALT", "KC_SPC", "KC_RALT", "MO(1)", "KC_APP", "KC_RCTL", "KC_LEFT", "KC_DOWN", "KC_RGHT" - ], - [ - "KC_TRNS", "KC_MPLY", "KC_MSTP", "KC_MPRV", "KC_MNXT", "KC_MUTE", "KC_VOLD", "KC_VOLU", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", - "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", - "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", - "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", - "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", - "KC_TRNS", "KC_TGUI", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" - ] - ], - "author":"dkjer", - "notes":"", - "version":1 -} diff --git a/keyboards/durgod/k320/keymaps/default/readme.md b/keyboards/durgod/k320/keymaps/default/readme.md deleted file mode 100644 index c94943a83773..000000000000 --- a/keyboards/durgod/k320/keymaps/default/readme.md +++ /dev/null @@ -1,16 +0,0 @@ -# The default keymap for Durgod Taurus K320. - -Supports both ANSI and ISO layouts. - -Layer 0 : Standard 87/88 keys TKL layout (Windows) - -Layer 1 : Media control and Windows lock key -- Reusing Durgod's Original Media Control for Fn + F1 ~ Fn + F7 -- Fn + Windows to toggle Windows lock key functionality - -## Windows key lock - -You can hold down Fn + Windows key to disable the Windows key while in locked mode. -The 'Lock' LED indicates if the Windows key is locked. - -This is similar to the stock K320 Windows key lock functionality. diff --git a/keyboards/durgod/k320/keymaps/default_mac/keymap.json b/keyboards/durgod/k320/keymaps/default_mac/keymap.json deleted file mode 100644 index dc5d3d3fd5e9..000000000000 --- a/keyboards/durgod/k320/keymaps/default_mac/keymap.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "keyboard": "durgod/k320", - "keymap": "default_mac", - "layout": "LAYOUT_all", - "layers": [ - [ - "KC_ESC", "KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "KC_F11", "KC_F12", "KC_F13", "KC_F14", "KC_F15", - "KC_GRV", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_MINS", "KC_EQL", "KC_BSPC", "KC_INS", "KC_HOME", "KC_PGUP", - "KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_LBRC", "KC_RBRC", "KC_BSLS", "KC_DEL", "KC_END", "KC_PGDN", - "KC_CAPS", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT", "KC_NUHS", "KC_ENT", - "KC_LSFT", "KC_NUBS", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_RSFT", "KC_UP", - "KC_LCTL", "KC_LALT", "KC_LGUI", "KC_SPC", "KC_RGUI", "KC_RALT", "MO(1)", "KC_RCTL", "KC_LEFT", "KC_DOWN", "KC_RGHT" - ], - [ - "KC_TRNS", "KC_MPLY", "KC_MSTP", "KC_MPRV", "KC_MNXT", "KC_MUTE", "KC_VOLD", "KC_VOLU", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", - "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", - "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", - "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", - "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", - "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" - ] - ], - "author":"AlCutter", - "notes":"", - "version":1 -} diff --git a/keyboards/durgod/k320/keymaps/default_toggle_mac_windows/keymap.c b/keyboards/durgod/k320/keymaps/default_toggle_mac_windows/keymap.c deleted file mode 100644 index 8494fbe03997..000000000000 --- a/keyboards/durgod/k320/keymaps/default_toggle_mac_windows/keymap.c +++ /dev/null @@ -1,367 +0,0 @@ -/* Copyright 2021 kuenhlee and Don Kjer - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include QMK_KEYBOARD_H - -// Layer shorthand -enum _layer { - _WBL, - _WFL, - _WSL, - _MBL, - _MFL, - _MSL -}; - -#ifndef DEFAULT_LAYOUT -# define DEFAULT_LAYOUT _WBL // Change to _MBL to boot into Mac layout. -#endif -#ifndef ALT_LAYOUT -# define ALT_LAYOUT _MBL // Layout to display 'MR' led when active. -#endif - -static bool win_key_locked = false; -static bool mac_media_locked = false; -static bool win_appkey_pressed = false; -static bool mac_fnkey_pressed = false; - - -// Defines the keycodes used by our macros in process_record_user -enum custom_keycodes { - KC_TGUI = SAFE_RANGE, // Toggle between GUI Lock or Unlock (Windows) - KC_TMED, // Toggle between Fx keys or Media keys (Mac) - KC_WFN, // Windows function key - KC_MFN, // Mac function key - MO_WSL, // Windows system key - MO_MSL, // Mac system key - DF_W2MBL, // Change layout from Windows to Mac - DF_M2WBL // Change layout from Mac to Windows -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Keymap _WBL: Windows Base Layer (Default Layer) - * ,-----------------------------------------------------------. ,--------------. - * |Esc |f1| f2| f3| f4| | f5| f6| f7| f8| | f9|f10|f11|f12| |Prnt|ScLk|Paus| - * |-----------------------------------------------------------| |--------------| - * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0| - | = |Backsp | | Ins|Home|PgUp| - * |-----------------------------------------------------------| |--------------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| | Del| End|PgDn| - * |-----------------------------------------------------------| `--------------' - * |CAPS | A| S| D| F| G| H| J| K| L| ;| '| #|Ret | - * |-----------------------------------------------------------| ,----. - * |Shift| \| Z| X| C| V| B| N| M| ,| .| /|Shift | | Up | - * |-----------------------------------------------------------| ,-------------. - * |Ctrl|Gui |Alt | Space |Alt |Func |App|Ctrl | |Lft| Dn |Rig | - * `-----------------------------------------------------------' `-------------' - */ - [_WBL] = LAYOUT_all( /* Windows Base Layer */ - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, - KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_WFN, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), - /* Keymap _WFL: Windows Function Layer - * ,-----------------------------------------------------------. ,--------------. - * | |Play|Stop|Prev|Next| |Mute|Vol+|Vol-| | | | | | | | | | | - * |-----------------------------------------------------------| |--------------| - * | | | | | | | | | | | | | | | | | | | - * |-----------------------------------------------------------| |--------------| - * | | | | | | | | | | | | | | | | | | | - * |-----------------------------------------------------------| `--------------' - * | | | | | | | | | | | | | | | - * |-----------------------------------------------------------| ,----. - * | | | | | | | | | | | | | | | | - * |-----------------------------------------------------------| ,-------------. - * | |Lock| | | |Func |Sys| | | | | | - * `-----------------------------------------------------------' `-------------' - */ - [_WFL] = LAYOUT_all( /* Windows First Layer */ - _______, KC_MPLY, KC_MSTP, KC_MPRV, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, KC_TGUI, _______, _______, _______, _______, MO_WSL, _______, _______, _______, _______ - ), - /* Keymap _WSL: Windows System Layer - * ,-----------------------------------------------------------. ,--------------. - * |Reset |Sleep| | |Power| | | | | | | | | |MAC| | | - * |-----------------------------------------------------------| |--------------| - * | | | | | | | | | | | | | | | | | | | - * |-----------------------------------------------------------| |--------------| - * | | | | | | | | | | | | | | | | | | | - * |-----------------------------------------------------------| `--------------' - * | | | | | | | | | | | | | | | - * |-----------------------------------------------------------| ,----. - * | | | | | | | | | | | | | | | | - * |-----------------------------------------------------------| ,-------------. - * | | | | | |Func |Sys| | | | | | - * `-----------------------------------------------------------' `-------------' - */ - [_WSL] = LAYOUT_all( /* Windows Second / System Layer */ - RESET, KC_SLEP, XXXXXXX, XXXXXXX, KC_PWR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DF_W2MBL, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, DEBUG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX - ), - - /* Keymap _MBL: Mac Base Layer (Alternate Layout) - * ,-----------------------------------------------------------. ,--------------. - * |Esc |f1| f2| f3| f4| | f5| f6| f7| f8| | f9|f10|f11|f12| | f13| f14| f15| - * |-----------------------------------------------------------| |--------------| - * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0| - | = |Backsp | | Ins|Home|PgUp| - * |-----------------------------------------------------------| |--------------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| | Del| End|PgDn| - * |-----------------------------------------------------------| `--------------' - * |CAPS | A| S| D| F| G| H| J| K| L| ;| '| #|Ret | - * |-----------------------------------------------------------| ,----. - * |Shift| \| Z| X| C| V| B| N| M| ,| .| /|Shift | | Up | - * |-----------------------------------------------------------| ,-------------. - * |Ctrl|Alt |Gui | Space |Gui |Alt|Func |Ctrl | |Lft| Dn |Rig | - * `-----------------------------------------------------------' `-------------' - */ - [_MBL] = LAYOUT_all( /* Mac Base Layer */ - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, - KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, - KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, KC_MFN, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), - /* Keymap _MFL: Mac Function Layer - * ,-----------------------------------------------------------. ,--------------. - * | |Bri-|Bri+|MCon|LPad| | | |Prv|Ply| |Nxt|Mute|Vol-|Vol+| |TMed| | | - * |-----------------------------------------------------------| |--------------| - * | | | | | | | | | | | | | | | | | | | - * |-----------------------------------------------------------| |--------------| - * | | | | | | | | | | | | | | | | | | | - * |-----------------------------------------------------------| `--------------' - * | | | | | | | | | | | | | | | - * |-----------------------------------------------------------| ,----. - * | | | | | | | | | | | | | | | | - * |-----------------------------------------------------------| ,-------------. - * | | | | | |Sys|Func | | | | | | - * `-----------------------------------------------------------' `-------------' - */ - [_MFL] = LAYOUT_all( /* Mac First Layer */ - _______, KC_BRID, KC_BRIU, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TMED, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, MO_MSL, _______, _______, _______, _______, _______ - ), - /* Keymap _MSL: Mac System Layer - * ,-----------------------------------------------------------. ,--------------. - * |Reset | | | |Sleep| | | | | | | | | |WIN| | | - * |-----------------------------------------------------------| |--------------| - * | | | | | | | | | | | | | | | | | | | - * |-----------------------------------------------------------| |--------------| - * | | | | | | | | | | | | | | | | | | | - * |-----------------------------------------------------------| `--------------' - * | | | | | | | | | | | | | | | - * |-----------------------------------------------------------| ,----. - * | | | | | | | | | | | | | | | | - * |-----------------------------------------------------------| ,-------------. - * | | | | | |Sys|Func | | | | | | - * `-----------------------------------------------------------' `-------------' - */ - [_MSL] = LAYOUT_all( /* Mac Second / System Layer */ - RESET, XXXXXXX, XXXXXXX, XXXXXXX, KC_SLEP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DF_M2WBL, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, DEBUG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX - ) -}; - -void unlock_win_key(void) { - win_key_locked = false; - mac_media_locked = false; - writePinHigh(LED_WIN_LOCK_PIN); -} - -void toggle_lock_win_key(void) { - win_key_locked = !win_key_locked; - writePin(LED_WIN_LOCK_PIN, !win_key_locked); -} - -void toggle_lock_media_key(void) { - mac_media_locked = !mac_media_locked; - writePin(LED_WIN_LOCK_PIN, !mac_media_locked); -} - -#ifdef CONSOLE_ENABLE -void dprint_global_layers(void) { - dprint("Global Layers:"); - if (IS_LAYER_ON(_WFL)) { dprint(" _WFL"); } - if (IS_LAYER_ON(_WSL)) { dprint(" _WSL"); } - if (IS_LAYER_ON(_MFL)) { dprint(" _MFL"); } - if (IS_LAYER_ON(_MSL)) { dprint(" _MSL"); } - dprintf("\n"); -} - -void dprint_layers(layer_state_t state) { - dprint("Layers:"); - if (IS_LAYER_ON_STATE(state, _WFL)) { dprint(" _WFL"); } - if (IS_LAYER_ON_STATE(state, _WSL)) { dprint(" _WSL"); } - if (IS_LAYER_ON_STATE(state, _MFL)) { dprint(" _MFL"); } - if (IS_LAYER_ON_STATE(state, _MSL)) { dprint(" _MSL"); } - dprintf("\n"); -} -#endif - -layer_state_t default_layer_state_set_user(layer_state_t state) { -#ifdef CONSOLE_ENABLE - dprintf("default_layer_state_set_user: 0x%x\n", state); - dprint_global_layers(); -#endif - // Disable windows key lock on default layer transition. - unlock_win_key(); - win_appkey_pressed = false; - mac_fnkey_pressed = false; - writePin(LED_MR_LOCK_PIN, !IS_LAYER_ON_STATE(state, ALT_LAYOUT)); - return state; -} - -layer_state_t layer_state_set_user(layer_state_t state) { -#ifdef CONSOLE_ENABLE - dprintf("layer_state_set_user: 0x%x\n", state); - dprint_layers(state); -#endif - return state; -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case KC_TGUI: - if (!record->event.pressed) { - // Toggle GUI lock on key release - toggle_lock_win_key(); - } - break; - case KC_TMED: - // Only trigger when Fn key is also held down, to avoid accidental unlock. - if (!mac_fnkey_pressed) { return false; } - if (!record->event.pressed) { - // Toggle Media Lock on key release - toggle_lock_media_key(); - } - break; - case KC_LGUI: - if (win_key_locked) { return false; } - break; - case KC_WFN: - // Like MO(_WFL), but also enables _WSL if KC_APP is already pressed down. - if (record->event.pressed) { - layer_on(_WFL); - if (win_appkey_pressed) { - // Also enable Secondary layer if App key is being held down. - win_appkey_pressed = false; - layer_on(_WSL); - } - } else { - if (IS_LAYER_ON(_WFL)) { layer_off(_WFL); } - if (IS_LAYER_ON(_MSL)) { layer_off(_MSL); } - } - break; - case KC_APP: - if (record->event.pressed) { - // Don't actually press down the app menu key - win_appkey_pressed = true; - } else { - if (IS_LAYER_ON(_WSL)) { layer_off(_WSL); } - if (IS_LAYER_ON(_MFL)) { layer_off(_MFL); } - if (win_appkey_pressed) { - win_appkey_pressed = false; - // Tap the KC_APP key on key release. - tap_code(KC_APP); - } - } - return false; - break; - case KC_MFN: - // Mac Fn key. Emit Fn keycode, and also transition layers similar to KC_WFN. - if (record->event.pressed) { - mac_fnkey_pressed = true; - layer_on(_MFL); - // Also enable Secondary layer if Right-Alt key is being held down. - if (get_mods() & MOD_BIT(KC_RALT)) { - layer_on(_MSL); - } - } else { - mac_fnkey_pressed = false; - if (!mac_media_locked) { - if (IS_LAYER_ON(_MFL)) { layer_off(_MFL); } - if (IS_LAYER_ON(_WSL)) { layer_off(_WSL); } - } - } - break; - case KC_RALT: - // Disable MSL/WFL layer on key-up. - if (!record->event.pressed) { - if (IS_LAYER_ON(_MSL)) { layer_off(_MSL); } - if (IS_LAYER_ON(_WFL)) { layer_off(_WFL); } - } - break; - case MO_WSL: - if (record->event.pressed) { - layer_on(_WSL); - } else { - if (IS_LAYER_ON(_WSL)) { layer_off(_WSL); } - if (IS_LAYER_ON(_MFL)) { layer_off(_MFL); } - } - break; - case MO_MSL: - if (record->event.pressed) { - layer_on(_MSL); - } else { - if (IS_LAYER_ON(_MSL)) { layer_off(_MSL); } - if (IS_LAYER_ON(_WFL)) { layer_off(_WFL); } - } - break; - case DF_W2MBL: - if (!record->event.pressed) { - // Switch base layer, but preserve first/secondary layers. - default_layer_set(1UL<<_MBL); - layer_state_set(1UL<<_MFL | 1UL<<_MSL); - } - break; - case DF_M2WBL: - if (!record->event.pressed) { - // Switch base layer, but preserve first/secondary layers. - default_layer_set(1UL<<_WBL); - layer_state_set(1UL<<_WFL | 1UL<<_WSL); - } - break; - case RESET: - if (record->event.pressed) { - // Flash LEDs to indicate bootloader mode is enabled. - on_all_leds(); - } - break; - } - return true; -} - -void keyboard_post_init_user(void) { - default_layer_set(1UL<. + */ + +#pragma once + +#define DYNAMIC_KEYMAP_LAYER_COUNT 3 diff --git a/keyboards/durgod/k320/keymaps/moults31/keymap.c b/keyboards/durgod/k320/keymaps/moults31/keymap.c new file mode 100644 index 000000000000..c44fe15855df --- /dev/null +++ b/keyboards/durgod/k320/keymaps/moults31/keymap.c @@ -0,0 +1,84 @@ +/* Copyright 2021 moults31 + * Adapted from kuenhlee and Don Kjer and Coirault + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +#include "moults31.h" + +// Layer shorthand +enum _layer { + _BASE, + _FUNC, + _LAYER3 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BASE: Base Layer (Default Layer) + * ,-----------------------------------------------------------. ,--------------. + * |Esc |f1| f2| f3| f4| | f5| f6| f7| f8| | f9|f10|f11|f12| |Prnt|ScLk|Paus| + * |-----------------------------------------------------------| |--------------| + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0| - | = |Backsp | | Ins|Home|PgUp| + * |-----------------------------------------------------------| |--------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| | | Del| End|PgDn| + * |------------------------------------------------------ Ret | `--------------' + * |CAPS | A| S| D| F| G| H| J| K| L| ;| '| #| | + * |-----------------------------------------------------------| ,----. + * |Shift| \| Z| X| C| V| B| N| M| ,| .| /|Shift | | Up | + * |-----------------------------------------------------------| ,-------------. + * |Ctrl|Gui |Alt | Space |Alt | Fn |App |Ctrl| |Lft| Dn |Rig | + * `-----------------------------------------------------------' `-------------' + */ + [_BASE] = LAYOUT_tkl_ansi( /* Base Layer */ + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FUNC),KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + /* Keymap _FUNC: Function Layer + * ,-----------------------------------------------------------. ,--------------. + * | |Play|Stop|Prev|Next| |Mute|Vol+|Vol-| | | | | | | | | | | + * |-----------------------------------------------------------| |--------------| + * | | | | | | | | | | | | | | | | | | | + * |-----------------------------------------------------------| |--------------| + * | | | | | | | | | | | | | | | | | | | + * |------------------------------------------------------- | `--------------' + * | | | | | | | | | | | | | | | + * |-----------------------------------------------------------| ,----. + * | | | | | | | | | | | | | | | | + * |-----------------------------------------------------------| ,-------------. + * | | | | | |Func | | | | | | | + * `-----------------------------------------------------------' `-------------' + */ + [_FUNC] = LAYOUT_tkl_ansi( /* Function Layer */ + _______, KC_MPLY, KC_MSTP, KC_MRWD, KC_MFFD, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, M_VSC_VIEWSIZEINC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, M_VSC_EDGRPPRV, M_VSC_VIEWSIZEDEC, M_VSC_EDGRPNXT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, M_VSC_MVEDTRPRVGRP, _______, M_VSC_MVEDTRNXTGRP + ), + [_LAYER3] = LAYOUT_tkl_ansi( /* Function Layer */ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; + diff --git a/keyboards/durgod/k320/keymaps/moults31/readme.md b/keyboards/durgod/k320/keymaps/moults31/readme.md new file mode 100644 index 000000000000..e3a3f150f3a2 --- /dev/null +++ b/keyboards/durgod/k320/keymaps/moults31/readme.md @@ -0,0 +1,10 @@ +# The default keymap for Durgod Taurus K320. + +Layer 0 : Standard Keys TKL layout + +Layer 1 : Media control and VScode navigation +- Reusing Durgod's Original Media Control for Fn + F1 ~ Fn + F7 + +## Supported PCBs + +This keymap intended for use on Durgod K320 ANSI diff --git a/keyboards/tgr/jane/keymaps/via/rules.mk b/keyboards/durgod/k320/keymaps/moults31/rules.mk similarity index 100% rename from keyboards/tgr/jane/keymaps/via/rules.mk rename to keyboards/durgod/k320/keymaps/moults31/rules.mk diff --git a/keyboards/durgod/k320/keymaps/via/keymap.c b/keyboards/durgod/k320/keymaps/via/keymap.c deleted file mode 100644 index fc46e3860fd3..000000000000 --- a/keyboards/durgod/k320/keymaps/via/keymap.c +++ /dev/null @@ -1,90 +0,0 @@ -/* Copyright 2021 Maxime Coirault - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include QMK_KEYBOARD_H - -// Layer shorthand -enum _layer { - _BASE, - _FUNC, - _LAYER3, - _LAYER4 -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Keymap _BASE: Base Layer (Default Layer) - * ,-----------------------------------------------------------. ,--------------. - * |Esc |f1| f2| f3| f4| | f5| f6| f7| f8| | f9|f10|f11|f12| |Prnt|ScLk|Paus| - * |-----------------------------------------------------------| |--------------| - * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0| - | = |Backsp | | Ins|Home|PgUp| - * |-----------------------------------------------------------| |--------------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| | | Del| End|PgDn| - * |------------------------------------------------------ Ret | `--------------' - * |CAPS | A| S| D| F| G| H| J| K| L| ;| '| #| | - * |-----------------------------------------------------------| ,----. - * |Shift| \| Z| X| C| V| B| N| M| ,| .| /|Shift | | Up | - * |-----------------------------------------------------------| ,-------------. - * |Ctrl|Gui |Alt | Space |Alt | Fn |App |Ctrl| |Lft| Dn |Rig | - * `-----------------------------------------------------------' `-------------' - */ - [_BASE] = LAYOUT_all( /* Base Layer */ - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, - KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FUNC),KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), - /* Keymap _FUNC: Function Layer - * ,-----------------------------------------------------------. ,--------------. - * | |Play|Stop|Prev|Next| |Mute|Vol+|Vol-| | | | | | | | | | | - * |-----------------------------------------------------------| |--------------| - * | | | | | | | | | | | | | | | | | | | - * |-----------------------------------------------------------| |--------------| - * | | | | | | | | | | | | | | | | | | | - * |------------------------------------------------------- | `--------------' - * | | | | | | | | | | | | | | | - * |-----------------------------------------------------------| ,----. - * | | | | | | | | | | | | | | | | - * |-----------------------------------------------------------| ,-------------. - * | | | | | |Func | | | | | | | - * `-----------------------------------------------------------' `-------------' - */ - [_FUNC] = LAYOUT_all( /* Function Layer */ - _______, KC_MPLY, KC_MSTP, KC_MPRV, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - [_LAYER3] = LAYOUT_all( /* Layer 3 */ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - [_LAYER4] = LAYOUT_all( /* Layer 4 */ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ) -}; - diff --git a/keyboards/durgod/k320/keymaps/via/readme.md b/keyboards/durgod/k320/keymaps/via/readme.md deleted file mode 100644 index d1b2ac191daf..000000000000 --- a/keyboards/durgod/k320/keymaps/via/readme.md +++ /dev/null @@ -1,12 +0,0 @@ -# The default keymap for Durgod Taurus K320. - -Layer 0 : Standard 87/88 keys TKL layout - -Layer 1 : Media control -- Reusing Durgod's Original Media Control for Fn + F1 ~ Fn + F7 - -## Supported PCBs - -This firmware was tested on a Durgod K320 ISO with the PCB marked "DGK320ST-Single v1.0 HS20181227". - -The pcb features switch holes for ANSI layout, so this firmware might be compatible with with the Durgod K320 ANSI. diff --git a/keyboards/durgod/k320/keymaps/via/rules.mk b/keyboards/durgod/k320/keymaps/via/rules.mk deleted file mode 100644 index 8815b6a0a62c..000000000000 --- a/keyboards/durgod/k320/keymaps/via/rules.mk +++ /dev/null @@ -1,4 +0,0 @@ -OPT_DEFS += -DWINLOCK_DISABLED - -VIA_ENABLE = yes -LTO_ENABLE = yes diff --git a/keyboards/durgod/k320/readme.md b/keyboards/durgod/k320/readme.md index 551a29282443..b8ca5b6da1a0 100644 --- a/keyboards/durgod/k320/readme.md +++ b/keyboards/durgod/k320/readme.md @@ -1,57 +1,4 @@ # K320 -This is a standard off-the-shelf Durgod Taurus K320 TKL (87/88-key) keyboard without backlight. +See: [K320](../k3x0/k320/readme.md) -* Keyboard Maintainer: [dkjer](https://github.com/dkjer) -* Hardware Supported: Durgod Taurus K320 board with STM32F070RBT6 -* Hardware Availability: https://www.durgod.com/page9?product_id=47&_l=en - -## Instructions - -### Build - -Make command example for this keyboard (after setting up your build environment): - - make durgod/k320:default - -Flashing example for this keyboard: - - make durgod/k320: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). - -### Initial Flash - -For first Flashing from initial Stock's Firmware - -1. Back up original Firmware Image: -- Unplug -- Short Boot0 to Vdd (See below) -- Plug In USB -- Make a Flash Image's Backup in case you wanted to restore the Keyboard to Stock's Image: - - Using DFUseDemo.exe from ST's STSW-STM32080: https://www.st.com/en/development-tools/stsw-stm32080.html - - Using dfu-util: - - dfu-util --list - dfu-util --alt 0 --dfuse-address 0x08000000 --upload ${OLD_STOCK_BIN} - -2. Flash the QMK Firmware Image. -- Put board into Bootloader mode, using the same method as when backing up the original Firmware (above) -- Here are a few options for performing the initial Flash: - - Using [QMK Toolbox](https://github.com/qmk/qmk_toolbox) - - Using DFuseDemo.exe if STTub30 driver is used. - - Using dfu-util: - - dfu-util --alt 0 --dfuse-address 0x08000000 --download ${NEW_QMK_BIN} - -You can short Boot0 to Vdd by shorting R21 to C27 on the sides closest to the processor, as shown: - -Shorting Boot0 to Vdd on K320 - -### Subsequent Flashing - -For repeating Flashing you can use BootMagic: -- BootMagic Lite has been enabled with Assigned "Esc" key -- Unplug USB Cable -- Holding Esc Button -- Plug in USB Cable, Keyboard should be in ST-Bootloader state diff --git a/keyboards/durgod/k320/rules.mk b/keyboards/durgod/k320/rules.mk index e6f0007fd42b..d3f7b11945cc 100644 --- a/keyboards/durgod/k320/rules.mk +++ b/keyboards/durgod/k320/rules.mk @@ -1,29 +1 @@ -# MCU name -# Actually F070, but close enough -MCU = STM32F072 -BOARD = DURGOD_STM32_F070 - -# Bootloader selection -BOOTLOADER = stm32-dfu - -# Do not put the microcontroller into power saving mode -OPT_DEFS += -DNO_SUSPEND_POWER_DOWN - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration -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 -BLUETOOTH_ENABLE = no # Enable Bluetooth -AUDIO_ENABLE = no # Audio output - -LAYOUTS = tkl_ansi tkl_iso +DEFAULT_FOLDER=durgod/k3x0/k320 diff --git a/keyboards/durgod/k3x0/config.h b/keyboards/durgod/k3x0/config.h new file mode 100644 index 000000000000..ef73a710164b --- /dev/null +++ b/keyboards/durgod/k3x0/config.h @@ -0,0 +1,56 @@ +/* Copyright 2021 kuenhlee, Don Kjer, Tyler Tidman + * Copyright 2021 Simon Arlott + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xD60D +#define MANUFACTURER Hoksi Technology + +/* key matrix size (rows in specific keyboard variant) */ +#define MATRIX_COLS 16 + +#define MATRIX_COL_PINS { C4, C5, B0, B1, B2, B10, B11, B12, B13, B14, B15, C6, C7, C10, C11, C12 } + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION ROW2COL + +// Dynamic EEPROM +// Something sensible or else VIA may crash +// Users may enable more if they wish +#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 4095 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 +// #define USB_POLLING_INTERVAL_MS 1 + +/* Bootmagic Lite key configuration */ +#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 + +/* LED indicator pins */ +#define LED_CAPS_LOCK_PIN C9 +#define LED_SCROLL_LOCK_PIN A8 +#define LED_WIN_LOCK_PIN A9 +#define LED_MR_LOCK_PIN A10 +#define LED_PIN_ON_STATE 0 + +/* Original hardware "reset" button on pin D2 */ +#define HARDWARE_RESET_PIN D2 diff --git a/keyboards/durgod/k3x0/halconf.h b/keyboards/durgod/k3x0/halconf.h new file mode 100644 index 000000000000..fa20fe30a98e --- /dev/null +++ b/keyboards/durgod/k3x0/halconf.h @@ -0,0 +1,22 @@ +/* Copyright 2021 Simon Arlott + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define HAL_USE_PAL TRUE +#define PAL_USE_CALLBACKS TRUE + +#include_next diff --git a/keyboards/durgod/k3x0/k310/base/config.h b/keyboards/durgod/k3x0/k310/base/config.h new file mode 100644 index 000000000000..025369acd7fa --- /dev/null +++ b/keyboards/durgod/k3x0/k310/base/config.h @@ -0,0 +1,23 @@ +/* Copyright 2021 Don Kjer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define PRODUCT DURGOD Taurus K310 (QMK) +#define DEVICE_VER 0x0001 // Base (no backlight) diff --git a/keyboards/durgod/k3x0/k310/base/readme.md b/keyboards/durgod/k3x0/k310/base/readme.md new file mode 100644 index 000000000000..9f465404366b --- /dev/null +++ b/keyboards/durgod/k3x0/k310/base/readme.md @@ -0,0 +1,27 @@ +# K310 + +This is a standard off-the-shelf Durgod Taurus K310 full-sized 104/105-key +keyboard without backlight. This supports both the ANSI and ISO variants. + +* Keyboard Maintainers: [dkjer](https://github.com/dkjer) and [tylert](https://github.com/tylert) +* Hardware Supported: Durgod Taurus K310 board with STM32F070RBT6 +* Hardware Availability: K310 https://www.durgod.com/page9?product_id=53&_l=en + +## Instructions + +### Build + +Make command example for this keyboard (after setting up your build environment): + + make durgod/k310:default + +Flashing example for this keyboard: + + make durgod/k310: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). + +### Initial Flash + +Instructions for Flashing from initial Stock Firmware: +* [Initial Flashing](../../readme.md#initial-flash) diff --git a/keyboards/durgod/k3x0/k310/base/rules.mk b/keyboards/durgod/k3x0/k310/base/rules.mk new file mode 100644 index 000000000000..323c12fc6e05 --- /dev/null +++ b/keyboards/durgod/k3x0/k310/base/rules.mk @@ -0,0 +1 @@ +# see common rules.mk diff --git a/keyboards/durgod/k3x0/k310/config.h b/keyboards/durgod/k3x0/k310/config.h new file mode 100644 index 000000000000..1eadb8e52d13 --- /dev/null +++ b/keyboards/durgod/k3x0/k310/config.h @@ -0,0 +1,36 @@ +/* Copyright 2021 Don Kjer and Tyler Tidman + * Copyright 2021 Simon Arlott + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define PRODUCT_ID 0x3100 +// Taurus K310 models: +//#define DEVICE_VER 0x0001 // Base (no backlight) +//#define DEVICE_VER 0x0002 // Corona (white led matrix) +//#define DEVICE_VER 0x0003 // Aurora (red & blue led matrix) +//#define DEVICE_VER 0x0004 // Nebula (rgb led matrix) + +/* key matrix size (cols in generic keyboard config) */ +#define MATRIX_ROWS 8 + +#define MATRIX_ROW_PINS { A0, A1, A2, A3, A4, A5, A6, A7 } + +/* LED indicator pins */ +#define LED_NUM_LOCK_PIN C8 diff --git a/keyboards/durgod/k3x0/k310/info.json b/keyboards/durgod/k3x0/k310/info.json new file mode 100644 index 000000000000..bf960ebd9485 --- /dev/null +++ b/keyboards/durgod/k3x0/k310/info.json @@ -0,0 +1,349 @@ +{ + "keyboard_name": "DURGOD Taurus K310", + "url": "https://www.durgod.com/page9?product_id=53&_l=en", + "maintainer": "tylert", + "layouts": { + "LAYOUT_fullsize_ansi": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "F1", "x": 2, "y": 0 }, + { "label": "F2", "x": 3, "y": 0 }, + { "label": "F3", "x": 4, "y": 0 }, + { "label": "F4", "x": 5, "y": 0 }, + { "label": "F5", "x": 6.5, "y": 0 }, + { "label": "F6", "x": 7.5, "y": 0 }, + { "label": "F7", "x": 8.5, "y": 0 }, + { "label": "F8", "x": 9.5, "y": 0 }, + { "label": "F9", "x": 11, "y": 0 }, + { "label": "F10", "x": 12, "y": 0 }, + { "label": "F11", "x": 13, "y": 0 }, + { "label": "F12", "x": 14, "y": 0 }, + { "label": "PrtSc", "x": 15.25, "y": 0 }, + { "label": "Scroll Lock", "x": 16.25, "y": 0 }, + { "label": "Pause", "x": 17.25, "y": 0 }, + + { "label": "~", "x": 0, "y": 1.5 }, + { "label": "!", "x": 1, "y": 1.5 }, + { "label": "@", "x": 2, "y": 1.5 }, + { "label": "#", "x": 3, "y": 1.5 }, + { "label": "$", "x": 4, "y": 1.5 }, + { "label": "%", "x": 5, "y": 1.5 }, + { "label": "^", "x": 6, "y": 1.5 }, + { "label": "&", "x": 7, "y": 1.5 }, + { "label": "*", "x": 8, "y": 1.5 }, + { "label": "(", "x": 9, "y": 1.5 }, + { "label": ")", "x": 10, "y": 1.5 }, + { "label": "_", "x": 11, "y": 1.5 }, + { "label": "+", "x": 12, "y": 1.5 }, + { "label": "Backspace", "x": 13, "y": 1.5, "w": 2 }, + { "label": "Insert", "x": 15.25, "y": 1.5 }, + { "label": "Home", "x": 16.25, "y": 1.5 }, + { "label": "PgUp", "x": 17.25, "y": 1.5 }, + { "label": "Num Lock", "x": 18.5, "y": 1.5 }, + { "label": "/", "x": 19.5, "y": 1.5 }, + { "label": "*", "x": 20.5, "y": 1.5 }, + { "label": "-", "x": 21.5, "y": 1.5 }, + + { "label": "Tab", "x": 0, "y": 2.5, "w": 1.5 }, + { "label": "Q", "x": 1.5, "y": 2.5 }, + { "label": "W", "x": 2.5, "y": 2.5 }, + { "label": "E", "x": 3.5, "y": 2.5 }, + { "label": "R", "x": 4.5, "y": 2.5 }, + { "label": "T", "x": 5.5, "y": 2.5 }, + { "label": "Y", "x": 6.5, "y": 2.5 }, + { "label": "U", "x": 7.5, "y": 2.5 }, + { "label": "I", "x": 8.5, "y": 2.5 }, + { "label": "O", "x": 9.5, "y": 2.5 }, + { "label": "P", "x": 10.5, "y": 2.5 }, + { "label": "{", "x": 11.5, "y": 2.5 }, + { "label": "}", "x": 12.5, "y": 2.5 }, + { "label": "|", "x": 13.5, "y": 2.5, "w": 1.5 }, + { "label": "Delete", "x": 15.25, "y": 2.5 }, + { "label": "End", "x": 16.25, "y": 2.5 }, + { "label": "PgDn", "x": 17.25, "y": 2.5 }, + { "label": "7", "x": 18.5, "y": 2.5 }, + { "label": "8", "x": 19.5, "y": 2.5 }, + { "label": "9", "x": 20.5, "y": 2.5 }, + { "label": "+", "x": 21.5, "y": 2.5, "h": 2 }, + + { "label": "Caps Lock", "x": 0, "y": 3.5, "w": 1.75 }, + { "label": "A", "x": 1.75, "y": 3.5 }, + { "label": "S", "x": 2.75, "y": 3.5 }, + { "label": "D", "x": 3.75, "y": 3.5 }, + { "label": "F", "x": 4.75, "y": 3.5 }, + { "label": "G", "x": 5.75, "y": 3.5 }, + { "label": "H", "x": 6.75, "y": 3.5 }, + { "label": "J", "x": 7.75, "y": 3.5 }, + { "label": "K", "x": 8.75, "y": 3.5 }, + { "label": "L", "x": 9.75, "y": 3.5 }, + { "label": ":", "x": 10.75, "y": 3.5 }, + { "label": "\"", "x": 11.75, "y": 3.5 }, + { "label": "Enter", "x": 12.75, "y": 3.5, "w": 2.25 }, + { "label": "4", "x": 18.5, "y": 3.5 }, + { "label": "5", "x": 19.5, "y": 3.5 }, + { "label": "6", "x": 20.5, "y": 3.5 }, + + { "label": "Shift", "x": 0, "y": 4.5, "w": 2.25 }, + { "label": "Z", "x": 2.25, "y": 4.5 }, + { "label": "X", "x": 3.25, "y": 4.5 }, + { "label": "C", "x": 4.25, "y": 4.5 }, + { "label": "V", "x": 5.25, "y": 4.5 }, + { "label": "B", "x": 6.25, "y": 4.5 }, + { "label": "N", "x": 7.25, "y": 4.5 }, + { "label": "M", "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": "Shift", "x": 12.25, "y": 4.5, "w": 2.75 }, + { "label": "\u2191", "x": 16.25, "y": 4.5 }, + { "label": "1", "x": 18.5, "y": 4.5 }, + { "label": "2", "x": 19.5, "y": 4.5 }, + { "label": "3", "x": 20.5, "y": 4.5 }, + { "label": "Enter", "x": 21.5, "y": 4.5, "h": 2 }, + + { "label": "Ctrl", "x": 0, "y": 5.5, "w": 1.25 }, + { "label": "Win", "x": 1.25, "y": 5.5, "w": 1.25 }, + { "label": "Alt", "x": 2.5, "y": 5.5, "w": 1.25 }, + { "x": 3.75, "y": 5.5, "w": 6.25 }, + { "label": "Alt", "x": 10, "y": 5.5, "w": 1.25 }, + { "label": "Fn", "x": 11.25, "y": 5.5, "w": 1.25 }, + { "label": "Menu", "x": 12.5, "y": 5.5, "w": 1.25 }, + { "label": "Ctrl", "x": 13.75, "y": 5.5, "w": 1.25 }, + { "label": "\u2190", "x": 15.25, "y": 5.5 }, + { "label": "\u2193", "x": 16.25, "y": 5.5 }, + { "label": "\u2192", "x": 17.25, "y": 5.5 }, + { "label": "0", "x": 18.5, "y": 5.5, "w": 2 }, + { "label": ".", "x": 20.5, "y": 5.5 } + ] + }, + "LAYOUT_fullsize_iso": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "F1", "x": 2, "y": 0 }, + { "label": "F2", "x": 3, "y": 0 }, + { "label": "F3", "x": 4, "y": 0 }, + { "label": "F4", "x": 5, "y": 0 }, + { "label": "F5", "x": 6.5, "y": 0 }, + { "label": "F6", "x": 7.5, "y": 0 }, + { "label": "F7", "x": 8.5, "y": 0 }, + { "label": "F8", "x": 9.5, "y": 0 }, + { "label": "F9", "x": 11, "y": 0 }, + { "label": "F10", "x": 12, "y": 0 }, + { "label": "F11", "x": 13, "y": 0 }, + { "label": "F12", "x": 14, "y": 0 }, + { "label": "PrtSc", "x": 15.25, "y": 0 }, + { "label": "Scroll Lock", "x": 16.25, "y": 0 }, + { "label": "Pause", "x": 17.25, "y": 0 }, + + { "label": "~", "x": 0, "y": 1.5 }, + { "label": "!", "x": 1, "y": 1.5 }, + { "label": "@", "x": 2, "y": 1.5 }, + { "label": "#", "x": 3, "y": 1.5 }, + { "label": "$", "x": 4, "y": 1.5 }, + { "label": "%", "x": 5, "y": 1.5 }, + { "label": "^", "x": 6, "y": 1.5 }, + { "label": "&", "x": 7, "y": 1.5 }, + { "label": "*", "x": 8, "y": 1.5 }, + { "label": "(", "x": 9, "y": 1.5 }, + { "label": ")", "x": 10, "y": 1.5 }, + { "label": "_", "x": 11, "y": 1.5 }, + { "label": "+", "x": 12, "y": 1.5 }, + { "label": "Backspace", "x": 13, "y": 1.5, "w": 2 }, + { "label": "Insert", "x": 15.25, "y": 1.5 }, + { "label": "Home", "x": 16.25, "y": 1.5 }, + { "label": "PgUp", "x": 17.25, "y": 1.5 }, + { "label": "Num Lock", "x": 18.5, "y": 1.5 }, + { "label": "/", "x": 19.5, "y": 1.5 }, + { "label": "*", "x": 20.5, "y": 1.5 }, + { "label": "-", "x": 21.5, "y": 1.5 }, + + { "label": "Tab", "x": 0, "y": 2.5, "w": 1.5 }, + { "label": "Q", "x": 1.5, "y": 2.5 }, + { "label": "W", "x": 2.5, "y": 2.5 }, + { "label": "E", "x": 3.5, "y": 2.5 }, + { "label": "R", "x": 4.5, "y": 2.5 }, + { "label": "T", "x": 5.5, "y": 2.5 }, + { "label": "Y", "x": 6.5, "y": 2.5 }, + { "label": "U", "x": 7.5, "y": 2.5 }, + { "label": "I", "x": 8.5, "y": 2.5 }, + { "label": "O", "x": 9.5, "y": 2.5 }, + { "label": "P", "x": 10.5, "y": 2.5 }, + { "label": "{", "x": 11.5, "y": 2.5 }, + { "label": "}", "x": 12.5, "y": 2.5 }, + { "label": "Delete", "x": 15.25, "y": 2.5 }, + { "label": "End", "x": 16.25, "y": 2.5 }, + { "label": "PgDn", "x": 17.25, "y": 2.5 }, + { "label": "7", "x": 18.5, "y": 2.5 }, + { "label": "8", "x": 19.5, "y": 2.5 }, + { "label": "9", "x": 20.5, "y": 2.5 }, + { "label": "+", "x": 21.5, "y": 2.5, "h": 2 }, + + { "label": "Caps Lock", "x": 0, "y": 3.5, "w": 1.75 }, + { "label": "A", "x": 1.75, "y": 3.5 }, + { "label": "S", "x": 2.75, "y": 3.5 }, + { "label": "D", "x": 3.75, "y": 3.5 }, + { "label": "F", "x": 4.75, "y": 3.5 }, + { "label": "G", "x": 5.75, "y": 3.5 }, + { "label": "H", "x": 6.75, "y": 3.5 }, + { "label": "J", "x": 7.75, "y": 3.5 }, + { "label": "K", "x": 8.75, "y": 3.5 }, + { "label": "L", "x": 9.75, "y": 3.5 }, + { "label": ":", "x": 10.75, "y": 3.5 }, + { "label": "\"", "x": 11.75, "y": 3.5 }, + { "label": "#", "x": 12.75, "y": 3.5 }, + { "label": "Enter", "x": 13.75, "y": 2.5, "w": 1.25, "h": 2 }, + { "label": "4", "x": 18.5, "y": 3.5 }, + { "label": "5", "x": 19.5, "y": 3.5 }, + { "label": "6", "x": 20.5, "y": 3.5 }, + + { "label": "Shift", "x": 0, "y": 4.5, "w": 1.25 }, + { "label": "\\", "x": 1.25, "y": 4.5 }, + { "label": "Z", "x": 2.25, "y": 4.5 }, + { "label": "X", "x": 3.25, "y": 4.5 }, + { "label": "C", "x": 4.25, "y": 4.5 }, + { "label": "V", "x": 5.25, "y": 4.5 }, + { "label": "B", "x": 6.25, "y": 4.5 }, + { "label": "N", "x": 7.25, "y": 4.5 }, + { "label": "M", "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": "Shift", "x": 12.25, "y": 4.5, "w": 2.75 }, + { "label": "\u2191", "x": 16.25, "y": 4.5 }, + { "label": "1", "x": 18.5, "y": 4.5 }, + { "label": "2", "x": 19.5, "y": 4.5 }, + { "label": "3", "x": 20.5, "y": 4.5 }, + { "label": "Enter", "x": 21.5, "y": 4.5, "h": 2 }, + + { "label": "Ctrl", "x": 0, "y": 5.5, "w": 1.25 }, + { "label": "Win", "x": 1.25, "y": 5.5, "w": 1.25 }, + { "label": "Alt", "x": 2.5, "y": 5.5, "w": 1.25 }, + { "x": 3.75, "y": 5.5, "w": 6.25 }, + { "label": "Alt", "x": 10, "y": 5.5, "w": 1.25 }, + { "label": "Fn", "x": 11.25, "y": 5.5, "w": 1.25 }, + { "label": "Menu", "x": 12.5, "y": 5.5, "w": 1.25 }, + { "label": "Ctrl", "x": 13.75, "y": 5.5, "w": 1.25 }, + { "label": "\u2190", "x": 15.25, "y": 5.5 }, + { "label": "\u2193", "x": 16.25, "y": 5.5 }, + { "label": "\u2192", "x": 17.25, "y": 5.5 }, + { "label": "0", "x": 18.5, "y": 5.5, "w": 2 }, + { "label": ".", "x": 20.5, "y": 5.5 } + ] + }, + "LAYOUT_all": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "F1", "x": 2, "y": 0 }, + { "label": "F2", "x": 3, "y": 0 }, + { "label": "F3", "x": 4, "y": 0 }, + { "label": "F4", "x": 5, "y": 0 }, + { "label": "F5", "x": 6.5, "y": 0 }, + { "label": "F6", "x": 7.5, "y": 0 }, + { "label": "F7", "x": 8.5, "y": 0 }, + { "label": "F8", "x": 9.5, "y": 0 }, + { "label": "F9", "x": 11, "y": 0 }, + { "label": "F10", "x": 12, "y": 0 }, + { "label": "F11", "x": 13, "y": 0 }, + { "label": "F12", "x": 14, "y": 0 }, + { "label": "PrtSc", "x": 15.25, "y": 0 }, + { "label": "Scroll Lock", "x": 16.25, "y": 0 }, + { "label": "Pause", "x": 17.25, "y": 0 }, + + { "label": "~", "x": 0, "y": 1.5 }, + { "label": "!", "x": 1, "y": 1.5 }, + { "label": "@", "x": 2, "y": 1.5 }, + { "label": "#", "x": 3, "y": 1.5 }, + { "label": "$", "x": 4, "y": 1.5 }, + { "label": "%", "x": 5, "y": 1.5 }, + { "label": "^", "x": 6, "y": 1.5 }, + { "label": "&", "x": 7, "y": 1.5 }, + { "label": "*", "x": 8, "y": 1.5 }, + { "label": "(", "x": 9, "y": 1.5 }, + { "label": ")", "x": 10, "y": 1.5 }, + { "label": "_", "x": 11, "y": 1.5 }, + { "label": "+", "x": 12, "y": 1.5 }, + { "label": "Backspace", "x": 13, "y": 1.5, "w": 2 }, + { "label": "Insert", "x": 15.25, "y": 1.5 }, + { "label": "Home", "x": 16.25, "y": 1.5 }, + { "label": "PgUp", "x": 17.25, "y": 1.5 }, + { "label": "Num Lock", "x": 18.5, "y": 1.5 }, + { "label": "/", "x": 19.5, "y": 1.5 }, + { "label": "*", "x": 20.5, "y": 1.5 }, + { "label": "-", "x": 21.5, "y": 1.5 }, + + { "label": "Tab", "x": 0, "y": 2.5, "w": 1.5 }, + { "label": "Q", "x": 1.5, "y": 2.5 }, + { "label": "W", "x": 2.5, "y": 2.5 }, + { "label": "E", "x": 3.5, "y": 2.5 }, + { "label": "R", "x": 4.5, "y": 2.5 }, + { "label": "T", "x": 5.5, "y": 2.5 }, + { "label": "Y", "x": 6.5, "y": 2.5 }, + { "label": "U", "x": 7.5, "y": 2.5 }, + { "label": "I", "x": 8.5, "y": 2.5 }, + { "label": "O", "x": 9.5, "y": 2.5 }, + { "label": "P", "x": 10.5, "y": 2.5 }, + { "label": "{", "x": 11.5, "y": 2.5 }, + { "label": "}", "x": 12.5, "y": 2.5 }, + { "label": "|", "x": 13.5, "y": 2.5, "w": 1.5 }, + { "label": "Delete", "x": 15.25, "y": 2.5 }, + { "label": "End", "x": 16.25, "y": 2.5 }, + { "label": "PgDn", "x": 17.25, "y": 2.5 }, + { "label": "7", "x": 18.5, "y": 2.5 }, + { "label": "8", "x": 19.5, "y": 2.5 }, + { "label": "9", "x": 20.5, "y": 2.5 }, + { "label": "+", "x": 21.5, "y": 2.5, "h": 2 }, + + { "label": "Caps Lock", "x": 0, "y": 3.5, "w": 1.75 }, + { "label": "A", "x": 1.75, "y": 3.5 }, + { "label": "S", "x": 2.75, "y": 3.5 }, + { "label": "D", "x": 3.75, "y": 3.5 }, + { "label": "F", "x": 4.75, "y": 3.5 }, + { "label": "G", "x": 5.75, "y": 3.5 }, + { "label": "H", "x": 6.75, "y": 3.5 }, + { "label": "J", "x": 7.75, "y": 3.5 }, + { "label": "K", "x": 8.75, "y": 3.5 }, + { "label": "L", "x": 9.75, "y": 3.5 }, + { "label": ":", "x": 10.75, "y": 3.5 }, + { "label": "\"", "x": 11.75, "y": 3.5 }, + { "label": "#", "x": 12.75, "y": 3.5 }, + { "label": "Enter", "x": 13.75, "y": 3.5, "w": 1.25 }, + { "label": "4", "x": 18.5, "y": 3.5 }, + { "label": "5", "x": 19.5, "y": 3.5 }, + { "label": "6", "x": 20.5, "y": 3.5 }, + + { "label": "Shift", "x": 0, "y": 4.5, "w": 1.25 }, + { "label": "\\", "x": 1.25, "y": 4.5 }, + { "label": "Z", "x": 2.25, "y": 4.5 }, + { "label": "X", "x": 3.25, "y": 4.5 }, + { "label": "C", "x": 4.25, "y": 4.5 }, + { "label": "V", "x": 5.25, "y": 4.5 }, + { "label": "B", "x": 6.25, "y": 4.5 }, + { "label": "N", "x": 7.25, "y": 4.5 }, + { "label": "M", "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": "Shift", "x": 12.25, "y": 4.5, "w": 2.75 }, + { "label": "\u2191", "x": 16.25, "y": 4.5 }, + { "label": "1", "x": 18.5, "y": 4.5 }, + { "label": "2", "x": 19.5, "y": 4.5 }, + { "label": "3", "x": 20.5, "y": 4.5 }, + { "label": "Enter", "x": 21.5, "y": 4.5, "h": 2 }, + + { "label": "Ctrl", "x": 0, "y": 5.5, "w": 1.25 }, + { "label": "Win", "x": 1.25, "y": 5.5, "w": 1.25 }, + { "label": "Alt", "x": 2.5, "y": 5.5, "w": 1.25 }, + { "x": 3.75, "y": 5.5, "w": 6.25 }, + { "label": "Alt", "x": 10, "y": 5.5, "w": 1.25 }, + { "label": "Fn", "x": 11.25, "y": 5.5, "w": 1.25 }, + { "label": "Menu", "x": 12.5, "y": 5.5, "w": 1.25 }, + { "label": "Ctrl", "x": 13.75, "y": 5.5, "w": 1.25 }, + { "label": "\u2190", "x": 15.25, "y": 5.5 }, + { "label": "\u2193", "x": 16.25, "y": 5.5 }, + { "label": "\u2192", "x": 17.25, "y": 5.5 }, + { "label": "0", "x": 18.5, "y": 5.5, "w": 2 }, + { "label": ".", "x": 20.5, "y": 5.5 } + ] + } + } +} diff --git a/keyboards/durgod/k3x0/k310/k310.h b/keyboards/durgod/k3x0/k310/k310.h new file mode 100644 index 000000000000..2d82ee155018 --- /dev/null +++ b/keyboards/durgod/k3x0/k310/k310.h @@ -0,0 +1,78 @@ +/* Copyright 2021 Don Kjer and Tyler Tidman + * Copyright 2021 Simon Arlott + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define XXX KC_NO + +// This a shortcut to help you visually see your layout. +#define LAYOUT_fullsize_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, K2E, K2F, K1F, K6A, K69, K68, K67, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K3D, K3E, K3F, K7A, K79, K78, K6B, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K4E, K7E, K7D, K7C, \ + K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4D, K4F, K6E, K6D, K6C, K7B, \ + K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E, K5F, K6F, K7F, K77 \ +) { \ + { 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, K2D, K2E, K2F }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, K3D, K3E, K3F }, \ + { K40, XXX, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, XXX, K4D, K4E, K4F }, \ + { K50, K51, K52, XXX, XXX, XXX, K56, XXX, XXX, XXX, K5A, K5B, K5C, K5D, K5E, K5F }, \ + { XXX, XXX, XXX, XXX, XXX, XXX, XXX, K67, K68, K69, K6A, K6B, K6C, K6D, K6E, K6F }, \ + { XXX, XXX, XXX, XXX, XXX, XXX, XXX, K77, K78, K79, K7A, K7B, K7C, K7D, K7E, K7F } \ +} + +// This a shortcut to help you visually see your layout. +#define LAYOUT_fullsize_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, K1E, K2E, K2F, K1F, K6A, K69, K68, K67, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K3D, K3E, K3F, K7A, K79, K78, K6B, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K4E, K7E, K7D, K7C, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4D, K4F, K6E, K6D, K6C, K7B, \ + K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E, K5F, K6F, K7F, K77 \ +) { \ + { 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, K3D, K3E, K3F }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, XXX, K4D, K4E, K4F }, \ + { K50, K51, K52, XXX, XXX, XXX, K56, XXX, XXX, XXX, K5A, K5B, K5C, K5D, K5E, K5F }, \ + { XXX, XXX, XXX, XXX, XXX, XXX, XXX, K67, K68, K69, K6A, K6B, K6C, K6D, K6E, K6F }, \ + { XXX, XXX, XXX, XXX, XXX, XXX, XXX, K77, K78, K79, K7A, K7B, K7C, K7D, K7E, K7F } \ +} + +// This a shortcut to help you visually see your layout. +#define LAYOUT_all( \ + 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, K2E, K2F, K1F, K6A, K69, K68, K67, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K3D, K3E, K3F, K7A, K79, K78, K6B, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K4E, K7E, K7D, K7C, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4D, K4F, K6E, K6D, K6C, K7B, \ + K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E, K5F, K6F, K7F, K77 \ +) { \ + { 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, 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, XXX, K4D, K4E, K4F }, \ + { K50, K51, K52, XXX, XXX, XXX, K56, XXX, XXX, XXX, K5A, K5B, K5C, K5D, K5E, K5F }, \ + { XXX, XXX, XXX, XXX, XXX, XXX, XXX, K67, K68, K69, K6A, K6B, K6C, K6D, K6E, K6F }, \ + { XXX, XXX, XXX, XXX, XXX, XXX, XXX, K77, K78, K79, K7A, K7B, K7C, K7D, K7E, K7F } \ +} + diff --git a/keyboards/durgod/k3x0/k310/readme.md b/keyboards/durgod/k3x0/k310/readme.md new file mode 100644 index 000000000000..bee903b88f7f --- /dev/null +++ b/keyboards/durgod/k3x0/k310/readme.md @@ -0,0 +1,10 @@ +# Taurus K310 + +This code is shared between all K310 variants. Currently only the base model with no backlight is supported. + +* Keyboard Maintainers: [dkjer](https://github.com/dkjer) and [tylert](https://github.com/tylert) +* Hardware Supported: Durgod Taurus K310 board with STM32F070RBT6 +* Hardware Availability: Base https://www.durgod.com/page9?product_id=53&_l=en + +Instructions for building the K310 firmware can be found here: +* [No Backlight](base/readme.md) diff --git a/keyboards/durgod/k3x0/k310/rules.mk b/keyboards/durgod/k3x0/k310/rules.mk new file mode 100644 index 000000000000..2df1aff9c80f --- /dev/null +++ b/keyboards/durgod/k3x0/k310/rules.mk @@ -0,0 +1,4 @@ +# Default to the base model +DEFAULT_FOLDER=durgod/k3x0/k310/base + +LAYOUTS = fullsize_ansi fullsize_iso diff --git a/keyboards/durgod/k3x0/k320/base/config.h b/keyboards/durgod/k3x0/k320/base/config.h new file mode 100644 index 000000000000..d4eb732b90b7 --- /dev/null +++ b/keyboards/durgod/k3x0/k320/base/config.h @@ -0,0 +1,23 @@ +/* Copyright 2021 Don Kjer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define PRODUCT DURGOD Taurus K320 (QMK) +#define DEVICE_VER 0x0001 // Base (no backlight) diff --git a/keyboards/durgod/k3x0/k320/base/readme.md b/keyboards/durgod/k3x0/k320/base/readme.md new file mode 100644 index 000000000000..8f46cc122cee --- /dev/null +++ b/keyboards/durgod/k3x0/k320/base/readme.md @@ -0,0 +1,27 @@ +# K320 + +This is a standard off-the-shelf Durgod Taurus K320 TKL (87/88-key) +keyboard without backlight. This supports both the ANSI and ISO variants. + +* Keyboard Maintainers: [dkjer](https://github.com/dkjer) and [tylert](https://github.com/tylert) +* Hardware Supported: Durgod Taurus K320 board with STM32F070RBT6 +* Hardware Availability: https://www.durgod.com/page9?product_id=47&_l=en + +## Instructions + +### Build + +Make command example for this keyboard (after setting up your build environment): + + make durgod/k320:default + +Flashing example for this keyboard: + + make durgod/k320: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). + +### Initial Flash + +Instructions for Flashing from initial Stock Firmware: +* [Initial Flashing](../../readme.md#initial-flash) diff --git a/keyboards/durgod/k3x0/k320/base/rules.mk b/keyboards/durgod/k3x0/k320/base/rules.mk new file mode 100644 index 000000000000..323c12fc6e05 --- /dev/null +++ b/keyboards/durgod/k3x0/k320/base/rules.mk @@ -0,0 +1 @@ +# see common rules.mk diff --git a/keyboards/durgod/k3x0/k320/config.h b/keyboards/durgod/k3x0/k320/config.h new file mode 100644 index 000000000000..25b4c630365e --- /dev/null +++ b/keyboards/durgod/k3x0/k320/config.h @@ -0,0 +1,33 @@ +/* Copyright 2021 Don Kjer and Tyler Tidman + * Copyright 2021 Simon Arlott + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define PRODUCT_ID 0x3200 +// Taurus K320 models: +//#define DEVICE_VER 0x0001 // Base (no backlight) +//#define DEVICE_VER 0x0002 // Corona (white led matrix) +//#define DEVICE_VER 0x0003 // Aurora (red & blue led matrix) +//#define DEVICE_VER 0x0004 // Nebula (rgb led matrix) + +/* key matrix size (cols in generic keyboard config) */ +#define MATRIX_ROWS 7 + +#define MATRIX_ROW_PINS { A0, A1, A2, A3, A4, A5, A6 } diff --git a/keyboards/durgod/k3x0/k320/info.json b/keyboards/durgod/k3x0/k320/info.json new file mode 100644 index 000000000000..cc0da77a3f3b --- /dev/null +++ b/keyboards/durgod/k3x0/k320/info.json @@ -0,0 +1,413 @@ +{ + "keyboard_name": "DURGOD Taurus K320", + "url": "https://www.durgod.com/page9?product_id=47&_l=en", + "maintainer": "dkjer", + "layouts": { + "LAYOUT_tkl_ansi": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "F1", "x": 2, "y": 0 }, + { "label": "F2", "x": 3, "y": 0 }, + { "label": "F3", "x": 4, "y": 0 }, + { "label": "F4", "x": 5, "y": 0 }, + { "label": "F5", "x": 6.5, "y": 0 }, + { "label": "F6", "x": 7.5, "y": 0 }, + { "label": "F7", "x": 8.5, "y": 0 }, + { "label": "F8", "x": 9.5, "y": 0 }, + { "label": "F9", "x": 11, "y": 0 }, + { "label": "F10", "x": 12, "y": 0 }, + { "label": "F11", "x": 13, "y": 0 }, + { "label": "F12", "x": 14, "y": 0 }, + { "label": "PrtSc", "x": 15.25, "y": 0 }, + { "label": "Scroll Lock", "x": 16.25, "y": 0 }, + { "label": "Pause", "x": 17.25, "y": 0 }, + + { "label": "~", "x": 0, "y": 1.5 }, + { "label": "!", "x": 1, "y": 1.5 }, + { "label": "@", "x": 2, "y": 1.5 }, + { "label": "#", "x": 3, "y": 1.5 }, + { "label": "$", "x": 4, "y": 1.5 }, + { "label": "%", "x": 5, "y": 1.5 }, + { "label": "^", "x": 6, "y": 1.5 }, + { "label": "&", "x": 7, "y": 1.5 }, + { "label": "*", "x": 8, "y": 1.5 }, + { "label": "(", "x": 9, "y": 1.5 }, + { "label": ")", "x": 10, "y": 1.5 }, + { "label": "_", "x": 11, "y": 1.5 }, + { "label": "+", "x": 12, "y": 1.5 }, + { "label": "Backspace", "x": 13, "y": 1.5, "w": 2 }, + { "label": "Insert", "x": 15.25, "y": 1.5 }, + { "label": "Home", "x": 16.25, "y": 1.5 }, + { "label": "PgUp", "x": 17.25, "y": 1.5 }, + + { "label": "Tab", "x": 0, "y": 2.5, "w": 1.5 }, + { "label": "Q", "x": 1.5, "y": 2.5 }, + { "label": "W", "x": 2.5, "y": 2.5 }, + { "label": "E", "x": 3.5, "y": 2.5 }, + { "label": "R", "x": 4.5, "y": 2.5 }, + { "label": "T", "x": 5.5, "y": 2.5 }, + { "label": "Y", "x": 6.5, "y": 2.5 }, + { "label": "U", "x": 7.5, "y": 2.5 }, + { "label": "I", "x": 8.5, "y": 2.5 }, + { "label": "O", "x": 9.5, "y": 2.5 }, + { "label": "P", "x": 10.5, "y": 2.5 }, + { "label": "{", "x": 11.5, "y": 2.5 }, + { "label": "}", "x": 12.5, "y": 2.5 }, + { "label": "|", "x": 13.5, "y": 2.5, "w": 1.5 }, + { "label": "Delete", "x": 15.25, "y": 2.5 }, + { "label": "End", "x": 16.25, "y": 2.5 }, + { "label": "PgDn", "x": 17.25, "y": 2.5 }, + + { "label": "Caps Lock", "x": 0, "y": 3.5, "w": 1.75 }, + { "label": "A", "x": 1.75, "y": 3.5 }, + { "label": "S", "x": 2.75, "y": 3.5 }, + { "label": "D", "x": 3.75, "y": 3.5 }, + { "label": "F", "x": 4.75, "y": 3.5 }, + { "label": "G", "x": 5.75, "y": 3.5 }, + { "label": "H", "x": 6.75, "y": 3.5 }, + { "label": "J", "x": 7.75, "y": 3.5 }, + { "label": "K", "x": 8.75, "y": 3.5 }, + { "label": "L", "x": 9.75, "y": 3.5 }, + { "label": ":", "x": 10.75, "y": 3.5 }, + { "label": "\"", "x": 11.75, "y": 3.5 }, + { "label": "Enter", "x": 12.75, "y": 3.5, "w": 2.25 }, + + { "label": "Shift", "x": 0, "y": 4.5, "w": 2.25 }, + { "label": "Z", "x": 2.25, "y": 4.5 }, + { "label": "X", "x": 3.25, "y": 4.5 }, + { "label": "C", "x": 4.25, "y": 4.5 }, + { "label": "V", "x": 5.25, "y": 4.5 }, + { "label": "B", "x": 6.25, "y": 4.5 }, + { "label": "N", "x": 7.25, "y": 4.5 }, + { "label": "M", "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": "Shift", "x": 12.25, "y": 4.5, "w": 2.75 }, + { "label": "\u2191", "x": 16.25, "y": 4.5 }, + + { "label": "Ctrl", "x": 0, "y": 5.5, "w": 1.25 }, + { "label": "Win", "x": 1.25, "y": 5.5, "w": 1.25 }, + { "label": "Alt", "x": 2.5, "y": 5.5, "w": 1.25 }, + { "x": 3.75, "y": 5.5, "w": 6.25 }, + { "label": "Alt", "x": 10, "y": 5.5, "w": 1.25 }, + { "label": "Fn", "x": 11.25, "y": 5.5, "w": 1.25 }, + { "label": "Menu", "x": 12.5, "y": 5.5, "w": 1.25 }, + { "label": "Ctrl", "x": 13.75, "y": 5.5, "w": 1.25 }, + { "label": "\u2190", "x": 15.25, "y": 5.5 }, + { "label": "\u2193", "x": 16.25, "y": 5.5 }, + { "label": "\u2192", "x": 17.25, "y": 5.5 } + ] + }, + "LAYOUT_tkl_iso": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "F1", "x": 2, "y": 0 }, + { "label": "F2", "x": 3, "y": 0 }, + { "label": "F3", "x": 4, "y": 0 }, + { "label": "F4", "x": 5, "y": 0 }, + { "label": "F5", "x": 6.5, "y": 0 }, + { "label": "F6", "x": 7.5, "y": 0 }, + { "label": "F7", "x": 8.5, "y": 0 }, + { "label": "F8", "x": 9.5, "y": 0 }, + { "label": "F9", "x": 11, "y": 0 }, + { "label": "F10", "x": 12, "y": 0 }, + { "label": "F11", "x": 13, "y": 0 }, + { "label": "F12", "x": 14, "y": 0 }, + { "label": "PrtSc", "x": 15.25, "y": 0 }, + { "label": "Scroll Lock", "x": 16.25, "y": 0 }, + { "label": "Pause", "x": 17.25, "y": 0 }, + + { "label": "~", "x": 0, "y": 1.5 }, + { "label": "!", "x": 1, "y": 1.5 }, + { "label": "@", "x": 2, "y": 1.5 }, + { "label": "#", "x": 3, "y": 1.5 }, + { "label": "$", "x": 4, "y": 1.5 }, + { "label": "%", "x": 5, "y": 1.5 }, + { "label": "^", "x": 6, "y": 1.5 }, + { "label": "&", "x": 7, "y": 1.5 }, + { "label": "*", "x": 8, "y": 1.5 }, + { "label": "(", "x": 9, "y": 1.5 }, + { "label": ")", "x": 10, "y": 1.5 }, + { "label": "_", "x": 11, "y": 1.5 }, + { "label": "+", "x": 12, "y": 1.5 }, + { "label": "Backspace", "x": 13, "y": 1.5, "w": 2 }, + { "label": "Insert", "x": 15.25, "y": 1.5 }, + { "label": "Home", "x": 16.25, "y": 1.5 }, + { "label": "PgUp", "x": 17.25, "y": 1.5 }, + + { "label": "Tab", "x": 0, "y": 2.5, "w": 1.5 }, + { "label": "Q", "x": 1.5, "y": 2.5 }, + { "label": "W", "x": 2.5, "y": 2.5 }, + { "label": "E", "x": 3.5, "y": 2.5 }, + { "label": "R", "x": 4.5, "y": 2.5 }, + { "label": "T", "x": 5.5, "y": 2.5 }, + { "label": "Y", "x": 6.5, "y": 2.5 }, + { "label": "U", "x": 7.5, "y": 2.5 }, + { "label": "I", "x": 8.5, "y": 2.5 }, + { "label": "O", "x": 9.5, "y": 2.5 }, + { "label": "P", "x": 10.5, "y": 2.5 }, + { "label": "{", "x": 11.5, "y": 2.5 }, + { "label": "}", "x": 12.5, "y": 2.5 }, + { "label": "Delete", "x": 15.25, "y": 2.5 }, + { "label": "End", "x": 16.25, "y": 2.5 }, + { "label": "PgDn", "x": 17.25, "y": 2.5 }, + + { "label": "Caps Lock", "x": 0, "y": 3.5, "w": 1.75 }, + { "label": "A", "x": 1.75, "y": 3.5 }, + { "label": "S", "x": 2.75, "y": 3.5 }, + { "label": "D", "x": 3.75, "y": 3.5 }, + { "label": "F", "x": 4.75, "y": 3.5 }, + { "label": "G", "x": 5.75, "y": 3.5 }, + { "label": "H", "x": 6.75, "y": 3.5 }, + { "label": "J", "x": 7.75, "y": 3.5 }, + { "label": "K", "x": 8.75, "y": 3.5 }, + { "label": "L", "x": 9.75, "y": 3.5 }, + { "label": ":", "x": 10.75, "y": 3.5 }, + { "label": "\"", "x": 11.75, "y": 3.5 }, + { "label": "#", "x": 12.75, "y": 3.5 }, + { "label": "Enter", "x": 13.75, "y": 2.5, "w": 1.25, "h": 2 }, + + { "label": "Shift", "x": 0, "y": 4.5, "w": 1.25 }, + { "label": "\\", "x": 1.25, "y": 4.5 }, + { "label": "Z", "x": 2.25, "y": 4.5 }, + { "label": "X", "x": 3.25, "y": 4.5 }, + { "label": "C", "x": 4.25, "y": 4.5 }, + { "label": "V", "x": 5.25, "y": 4.5 }, + { "label": "B", "x": 6.25, "y": 4.5 }, + { "label": "N", "x": 7.25, "y": 4.5 }, + { "label": "M", "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": "Shift", "x": 12.25, "y": 4.5, "w": 2.75 }, + { "label": "\u2191", "x": 16.25, "y": 4.5 }, + + { "label": "Ctrl", "x": 0, "y": 5.5, "w": 1.25 }, + { "label": "Win", "x": 1.25, "y": 5.5, "w": 1.25 }, + { "label": "Alt", "x": 2.5, "y": 5.5, "w": 1.25 }, + { "x": 3.75, "y": 5.5, "w": 6.25 }, + { "label": "Alt", "x": 10, "y": 5.5, "w": 1.25 }, + { "label": "Fn", "x": 11.25, "y": 5.5, "w": 1.25 }, + { "label": "Menu", "x": 12.5, "y": 5.5, "w": 1.25 }, + { "label": "Ctrl", "x": 13.75, "y": 5.5, "w": 1.25 }, + { "label": "\u2190", "x": 15.25, "y": 5.5 }, + { "label": "\u2193", "x": 16.25, "y": 5.5 }, + { "label": "\u2192", "x": 17.25, "y": 5.5 } + ] + }, + "LAYOUT_tkl": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "F1", "x": 2, "y": 0 }, + { "label": "F2", "x": 3, "y": 0 }, + { "label": "F3", "x": 4, "y": 0 }, + { "label": "F4", "x": 5, "y": 0 }, + { "label": "F5", "x": 6.5, "y": 0 }, + { "label": "F6", "x": 7.5, "y": 0 }, + { "label": "F7", "x": 8.5, "y": 0 }, + { "label": "F8", "x": 9.5, "y": 0 }, + { "label": "F9", "x": 11, "y": 0 }, + { "label": "F10", "x": 12, "y": 0 }, + { "label": "F11", "x": 13, "y": 0 }, + { "label": "F12", "x": 14, "y": 0 }, + { "label": "PrtSc", "x": 15.25, "y": 0 }, + { "label": "Scroll Lock", "x": 16.25, "y": 0 }, + { "label": "Pause", "x": 17.25, "y": 0 }, + + { "label": "~", "x": 0, "y": 1.5 }, + { "label": "!", "x": 1, "y": 1.5 }, + { "label": "@", "x": 2, "y": 1.5 }, + { "label": "#", "x": 3, "y": 1.5 }, + { "label": "$", "x": 4, "y": 1.5 }, + { "label": "%", "x": 5, "y": 1.5 }, + { "label": "^", "x": 6, "y": 1.5 }, + { "label": "&", "x": 7, "y": 1.5 }, + { "label": "*", "x": 8, "y": 1.5 }, + { "label": "(", "x": 9, "y": 1.5 }, + { "label": ")", "x": 10, "y": 1.5 }, + { "label": "_", "x": 11, "y": 1.5 }, + { "label": "+", "x": 12, "y": 1.5 }, + { "label": "Backspace", "x": 13, "y": 1.5, "w": 2 }, + { "label": "Insert", "x": 15.25, "y": 1.5 }, + { "label": "Home", "x": 16.25, "y": 1.5 }, + { "label": "PgUp", "x": 17.25, "y": 1.5 }, + + { "label": "Tab", "x": 0, "y": 2.5, "w": 1.5 }, + { "label": "Q", "x": 1.5, "y": 2.5 }, + { "label": "W", "x": 2.5, "y": 2.5 }, + { "label": "E", "x": 3.5, "y": 2.5 }, + { "label": "R", "x": 4.5, "y": 2.5 }, + { "label": "T", "x": 5.5, "y": 2.5 }, + { "label": "Y", "x": 6.5, "y": 2.5 }, + { "label": "U", "x": 7.5, "y": 2.5 }, + { "label": "I", "x": 8.5, "y": 2.5 }, + { "label": "O", "x": 9.5, "y": 2.5 }, + { "label": "P", "x": 10.5, "y": 2.5 }, + { "label": "{", "x": 11.5, "y": 2.5 }, + { "label": "}", "x": 12.5, "y": 2.5 }, + { "label": "|", "x": 13.5, "y": 2.5, "w": 1.5 }, + { "label": "Delete", "x": 15.25, "y": 2.5 }, + { "label": "End", "x": 16.25, "y": 2.5 }, + { "label": "PgDn", "x": 17.25, "y": 2.5 }, + + { "label": "Caps Lock", "x": 0, "y": 3.5, "w": 1.75 }, + { "label": "A", "x": 1.75, "y": 3.5 }, + { "label": "S", "x": 2.75, "y": 3.5 }, + { "label": "D", "x": 3.75, "y": 3.5 }, + { "label": "F", "x": 4.75, "y": 3.5 }, + { "label": "G", "x": 5.75, "y": 3.5 }, + { "label": "H", "x": 6.75, "y": 3.5 }, + { "label": "J", "x": 7.75, "y": 3.5 }, + { "label": "K", "x": 8.75, "y": 3.5 }, + { "label": "L", "x": 9.75, "y": 3.5 }, + { "label": ":", "x": 10.75, "y": 3.5 }, + { "label": "\"", "x": 11.75, "y": 3.5 }, + { "label": "#", "x": 12.75, "y": 3.5 }, + { "label": "Enter", "x": 13.75, "y": 3.5, "w": 1.25 }, + + { "label": "Shift", "x": 0, "y": 4.5, "w": 1.25 }, + { "label": "\\", "x": 1.25, "y": 4.5 }, + { "label": "Z", "x": 2.25, "y": 4.5 }, + { "label": "X", "x": 3.25, "y": 4.5 }, + { "label": "C", "x": 4.25, "y": 4.5 }, + { "label": "V", "x": 5.25, "y": 4.5 }, + { "label": "B", "x": 6.25, "y": 4.5 }, + { "label": "N", "x": 7.25, "y": 4.5 }, + { "label": "M", "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": "Shift", "x": 12.25, "y": 4.5, "w": 2.75 }, + { "label": "\u2191", "x": 16.25, "y": 4.5 }, + + { "label": "Ctrl", "x": 0, "y": 5.5, "w": 1.25 }, + { "label": "Win", "x": 1.25, "y": 5.5, "w": 1.25 }, + { "label": "Alt", "x": 2.5, "y": 5.5, "w": 1.25 }, + { "x": 3.75, "y": 5.5, "w": 6.25 }, + { "label": "Alt", "x": 10, "y": 5.5, "w": 1.25 }, + { "label": "Fn", "x": 11.25, "y": 5.5, "w": 1.25 }, + { "label": "Menu", "x": 12.5, "y": 5.5, "w": 1.25 }, + { "label": "Ctrl", "x": 13.75, "y": 5.5, "w": 1.25 }, + { "label": "\u2190", "x": 15.25, "y": 5.5 }, + { "label": "\u2193", "x": 16.25, "y": 5.5 }, + { "label": "\u2192", "x": 17.25, "y": 5.5 } + ] + }, + "LAYOUT_all": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "F1", "x": 2, "y": 0 }, + { "label": "F2", "x": 3, "y": 0 }, + { "label": "F3", "x": 4, "y": 0 }, + { "label": "F4", "x": 5, "y": 0 }, + { "label": "F5", "x": 6.5, "y": 0 }, + { "label": "F6", "x": 7.5, "y": 0 }, + { "label": "F7", "x": 8.5, "y": 0 }, + { "label": "F8", "x": 9.5, "y": 0 }, + { "label": "F9", "x": 11, "y": 0 }, + { "label": "F10", "x": 12, "y": 0 }, + { "label": "F11", "x": 13, "y": 0 }, + { "label": "F12", "x": 14, "y": 0 }, + { "label": "PrtSc", "x": 15.25, "y": 0 }, + { "label": "Scroll Lock", "x": 16.25, "y": 0 }, + { "label": "Pause", "x": 17.25, "y": 0 }, + + { "label": "~", "x": 0, "y": 1.5 }, + { "label": "!", "x": 1, "y": 1.5 }, + { "label": "@", "x": 2, "y": 1.5 }, + { "label": "#", "x": 3, "y": 1.5 }, + { "label": "$", "x": 4, "y": 1.5 }, + { "label": "%", "x": 5, "y": 1.5 }, + { "label": "^", "x": 6, "y": 1.5 }, + { "label": "&", "x": 7, "y": 1.5 }, + { "label": "*", "x": 8, "y": 1.5 }, + { "label": "(", "x": 9, "y": 1.5 }, + { "label": ")", "x": 10, "y": 1.5 }, + { "label": "_", "x": 11, "y": 1.5 }, + { "label": "+", "x": 12, "y": 1.5 }, + { "label": "Backspace", "x": 13, "y": 1.5, "w": 2 }, + { "label": "Insert", "x": 15.25, "y": 1.5 }, + { "label": "Home", "x": 16.25, "y": 1.5 }, + { "label": "PgUp", "x": 17.25, "y": 1.5 }, + { "label": "Num Lock", "x": 18.5, "y": 1.5 }, + { "label": "/", "x": 19.5, "y": 1.5 }, + { "label": "*", "x": 20.5, "y": 1.5 }, + { "label": "-", "x": 21.5, "y": 1.5 }, + + { "label": "Tab", "x": 0, "y": 2.5, "w": 1.5 }, + { "label": "Q", "x": 1.5, "y": 2.5 }, + { "label": "W", "x": 2.5, "y": 2.5 }, + { "label": "E", "x": 3.5, "y": 2.5 }, + { "label": "R", "x": 4.5, "y": 2.5 }, + { "label": "T", "x": 5.5, "y": 2.5 }, + { "label": "Y", "x": 6.5, "y": 2.5 }, + { "label": "U", "x": 7.5, "y": 2.5 }, + { "label": "I", "x": 8.5, "y": 2.5 }, + { "label": "O", "x": 9.5, "y": 2.5 }, + { "label": "P", "x": 10.5, "y": 2.5 }, + { "label": "{", "x": 11.5, "y": 2.5 }, + { "label": "}", "x": 12.5, "y": 2.5 }, + { "label": "|", "x": 13.5, "y": 2.5, "w": 1.5 }, + { "label": "Delete", "x": 15.25, "y": 2.5 }, + { "label": "End", "x": 16.25, "y": 2.5 }, + { "label": "PgDn", "x": 17.25, "y": 2.5 }, + { "label": "7", "x": 18.5, "y": 2.5 }, + { "label": "8", "x": 19.5, "y": 2.5 }, + { "label": "9", "x": 20.5, "y": 2.5 }, + { "label": "+", "x": 21.5, "y": 2.5, "h": 2 }, + + { "label": "Caps Lock", "x": 0, "y": 3.5, "w": 1.75 }, + { "label": "A", "x": 1.75, "y": 3.5 }, + { "label": "S", "x": 2.75, "y": 3.5 }, + { "label": "D", "x": 3.75, "y": 3.5 }, + { "label": "F", "x": 4.75, "y": 3.5 }, + { "label": "G", "x": 5.75, "y": 3.5 }, + { "label": "H", "x": 6.75, "y": 3.5 }, + { "label": "J", "x": 7.75, "y": 3.5 }, + { "label": "K", "x": 8.75, "y": 3.5 }, + { "label": "L", "x": 9.75, "y": 3.5 }, + { "label": ":", "x": 10.75, "y": 3.5 }, + { "label": "\"", "x": 11.75, "y": 3.5 }, + { "label": "#", "x": 12.75, "y": 3.5 }, + { "label": "Enter", "x": 13.75, "y": 3.5, "w": 1.25 }, + { "label": "4", "x": 18.5, "y": 3.5 }, + { "label": "5", "x": 19.5, "y": 3.5 }, + { "label": "6", "x": 20.5, "y": 3.5 }, + + { "label": "Shift", "x": 0, "y": 4.5, "w": 1.25 }, + { "label": "\\", "x": 1.25, "y": 4.5 }, + { "label": "Z", "x": 2.25, "y": 4.5 }, + { "label": "X", "x": 3.25, "y": 4.5 }, + { "label": "C", "x": 4.25, "y": 4.5 }, + { "label": "V", "x": 5.25, "y": 4.5 }, + { "label": "B", "x": 6.25, "y": 4.5 }, + { "label": "N", "x": 7.25, "y": 4.5 }, + { "label": "M", "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": "Shift", "x": 12.25, "y": 4.5, "w": 2.75 }, + { "label": "\u2191", "x": 16.25, "y": 4.5 }, + { "label": "1", "x": 18.5, "y": 4.5 }, + { "label": "2", "x": 19.5, "y": 4.5 }, + { "label": "3", "x": 20.5, "y": 4.5 }, + { "label": "Enter", "x": 21.5, "y": 4.5, "h": 2 }, + + { "label": "Ctrl", "x": 0, "y": 5.5, "w": 1.25 }, + { "label": "Win", "x": 1.25, "y": 5.5, "w": 1.25 }, + { "label": "Alt", "x": 2.5, "y": 5.5, "w": 1.25 }, + { "x": 3.75, "y": 5.5, "w": 6.25 }, + { "label": "Alt", "x": 10, "y": 5.5, "w": 1.25 }, + { "label": "Fn", "x": 11.25, "y": 5.5, "w": 1.25 }, + { "label": "Menu", "x": 12.5, "y": 5.5, "w": 1.25 }, + { "label": "Ctrl", "x": 13.75, "y": 5.5, "w": 1.25 }, + { "label": "\u2190", "x": 15.25, "y": 5.5 }, + { "label": "\u2193", "x": 16.25, "y": 5.5 }, + { "label": "\u2192", "x": 17.25, "y": 5.5 }, + { "label": "0", "x": 18.5, "y": 5.5, "w": 2 }, + { "label": ".", "x": 20.5, "y": 5.5 } + ] + } + } +} diff --git a/keyboards/durgod/k320/k320.h b/keyboards/durgod/k3x0/k320/k320.h similarity index 75% rename from keyboards/durgod/k320/k320.h rename to keyboards/durgod/k3x0/k320/k320.h index c504f5a2bbc8..23b48d0f3921 100644 --- a/keyboards/durgod/k320/k320.h +++ b/keyboards/durgod/k3x0/k320/k320.h @@ -1,4 +1,5 @@ -/* Copyright 2021 kuenhlee and Don Kjer +/* Copyright 2021 Don Kjer and Tyler Tidman + * Copyright 2021 Simon Arlott * * This 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,25 +14,8 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -#pragma once - -#include "quantum.h" - -#ifndef WINLOCK_DISABLED -// Define the TGUI key here so it is available in QMK configurator -enum K320_keycodes { - KC_TGUI = SAFE_RANGE, // Toggle between GUI Lock or Unlock - NEW_SAFE_RANGE -}; - -#undef SAFE_RANGE -#define SAFE_RANGE NEW_SAFE_RANGE -#endif /* WINLOCK_DISABLED */ - -/* Function Prototype */ -void off_all_leds(void); -void on_all_leds(void); +#pragma once #define XXX KC_NO @@ -53,7 +37,6 @@ void on_all_leds(void); { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, K6F } \ } - // This a shortcut to help you visually see your layout. #define LAYOUT_tkl_iso( \ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \ @@ -72,9 +55,8 @@ void on_all_leds(void); { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, K6F } \ } - // This a shortcut to help you visually see your layout. -#define LAYOUT_all( \ +#define LAYOUT_tkl( \ 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, K2E, K2F, K1F, \ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K3D, K3E, K3F, \ @@ -90,3 +72,21 @@ void on_all_leds(void); { K50, K51, K52, XXX, XXX, XXX, K56, XXX, XXX, XXX, K5A, K5B, K5C, K5D, K5E, K5F }, \ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, K6F } \ } + +// This a shortcut to help you visually see your layout. +#define LAYOUT_all( \ + 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, K2E, K2F, K1F, K6A, K69, K68, K67, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K3D, K3E, K3F, K7A, K79, K78, K6B, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K4E, K7E, K7D, K7C, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4D, K4F, K6E, K6D, K6C, K7B, \ + K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E, K5F, K6F, K7F, K77 \ +) { \ + { 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, 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, XXX, K4D, K4E, K4F }, \ + { K50, K51, K52, XXX, XXX, XXX, K56, XXX, XXX, XXX, K5A, K5B, K5C, K5D, K5E, K5F }, \ + { XXX, XXX, XXX, XXX, XXX, XXX, XXX, K67, K68, K69, K6A, K6B, K6C, K6D, K6E, K6F } \ +} diff --git a/keyboards/durgod/k320/keymaps/kuenhlee/keymap.c b/keyboards/durgod/k3x0/k320/keymaps/kuenhlee/keymap.c similarity index 100% rename from keyboards/durgod/k320/keymaps/kuenhlee/keymap.c rename to keyboards/durgod/k3x0/k320/keymaps/kuenhlee/keymap.c diff --git a/keyboards/durgod/k320/keymaps/kuenhlee/readme.md b/keyboards/durgod/k3x0/k320/keymaps/kuenhlee/readme.md similarity index 100% rename from keyboards/durgod/k320/keymaps/kuenhlee/readme.md rename to keyboards/durgod/k3x0/k320/keymaps/kuenhlee/readme.md diff --git a/keyboards/durgod/k320/keymaps/kuenhlee/rules.mk b/keyboards/durgod/k3x0/k320/keymaps/kuenhlee/rules.mk similarity index 100% rename from keyboards/durgod/k320/keymaps/kuenhlee/rules.mk rename to keyboards/durgod/k3x0/k320/keymaps/kuenhlee/rules.mk diff --git a/keyboards/durgod/k3x0/k320/readme.md b/keyboards/durgod/k3x0/k320/readme.md new file mode 100644 index 000000000000..e584bd187460 --- /dev/null +++ b/keyboards/durgod/k3x0/k320/readme.md @@ -0,0 +1,10 @@ +# Taurus K320 + +This code is shared between all K320 variants. Currently only the base model with no backlight is supported. + +* Keyboard Maintainers: [dkjer](https://github.com/dkjer) and [tylert](https://github.com/tylert) +* Hardware Supported: Durgod Taurus K320 board with STM32F070RBT6 +* Hardware Availability: Base https://www.amazon.com/Durgod-Taurus-Corona-Mechanical-Keyboard/dp/B078H3WPHM + +Instructions for building the K320 firmware can be found here: +* [No Backlight](base/readme.md) diff --git a/keyboards/durgod/k3x0/k320/rules.mk b/keyboards/durgod/k3x0/k320/rules.mk new file mode 100644 index 000000000000..fabc0854ff3a --- /dev/null +++ b/keyboards/durgod/k3x0/k320/rules.mk @@ -0,0 +1,4 @@ +# Default to the base model +DEFAULT_FOLDER=durgod/k3x0/k320/base + +LAYOUTS = tkl_ansi tkl_iso diff --git a/keyboards/durgod/k3x0/k3x0.c b/keyboards/durgod/k3x0/k3x0.c new file mode 100644 index 000000000000..d12b46bc51b0 --- /dev/null +++ b/keyboards/durgod/k3x0/k3x0.c @@ -0,0 +1,96 @@ +/* Copyright 2021 kuenhlee, Don Kjer, Tyler Tidman + * Copyright 2021 Simon Arlott + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "k3x0.h" +#include +#include + +/* Private Functions */ +void off_all_leds(void) { +#ifdef LED_NUM_LOCK_PIN + writePinHigh(LED_NUM_LOCK_PIN); +#endif + writePinHigh(LED_CAPS_LOCK_PIN); + writePinHigh(LED_SCROLL_LOCK_PIN); + writePinHigh(LED_WIN_LOCK_PIN); + writePinHigh(LED_MR_LOCK_PIN); +} + +void on_all_leds(void) { +#ifdef LED_NUM_LOCK_PIN + writePinLow(LED_NUM_LOCK_PIN); +#endif + writePinLow(LED_CAPS_LOCK_PIN); + writePinLow(LED_SCROLL_LOCK_PIN); + writePinLow(LED_WIN_LOCK_PIN); + writePinLow(LED_MR_LOCK_PIN); +} + +/* WinLock and MR LEDs are non-standard. Need to override led init */ +void led_init_ports(void) { +#ifdef LED_NUM_LOCK_PIN + setPinOutput(LED_NUM_LOCK_PIN); +#endif + setPinOutput(LED_CAPS_LOCK_PIN); + setPinOutput(LED_SCROLL_LOCK_PIN); + setPinOutput(LED_WIN_LOCK_PIN); + setPinOutput(LED_MR_LOCK_PIN); + off_all_leds(); +} + +#ifndef WINLOCK_DISABLED +static bool win_key_locked = false; + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_TGUI: + if (record->event.pressed) { + // Toggle GUI lock on key press + win_key_locked = !win_key_locked; + writePin(LED_WIN_LOCK_PIN, !win_key_locked); + } + break; + case KC_LGUI: + if (win_key_locked) { return false; } + break; + } + return process_record_user(keycode, record); +} +#endif /* WINLOCK_DISABLED */ + +#ifndef HW_RESET_PIN_DISABLED +static void hardware_reset_cb(void *arg) { + chSysLockFromISR(); + bootloader_jump(); + chSysUnlockFromISR(); +} +#endif + +void keyboard_pre_init_kb(void) { + setPinInputHigh(HARDWARE_RESET_PIN); + +#ifndef HW_RESET_PIN_DISABLED + /* Jump to bootloader when the hardware reset button is pressed */ + palEnablePadEvent(PAL_PORT(HARDWARE_RESET_PIN), PAL_PAD(HARDWARE_RESET_PIN), PAL_EVENT_MODE_FALLING_EDGE); + palSetPadCallback(PAL_PORT(HARDWARE_RESET_PIN), PAL_PAD(HARDWARE_RESET_PIN), hardware_reset_cb, NULL); + + /* The interrupt is edge-triggered so check that it's not already pressed */ + if (!readPin(HARDWARE_RESET_PIN)) { + bootloader_jump(); + } +#endif +} diff --git a/keyboards/durgod/k3x0/k3x0.h b/keyboards/durgod/k3x0/k3x0.h new file mode 100644 index 000000000000..93740a5512f5 --- /dev/null +++ b/keyboards/durgod/k3x0/k3x0.h @@ -0,0 +1,47 @@ +/* Copyright 2021 kuenhlee, Don Kjer, Tyler Tidman + * Copyright 2021 Simon Arlott + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#ifdef KEYBOARD_durgod_k3x0_k310 +# include "k310.h" +#elif KEYBOARD_durgod_k3x0_k320 +# include "k320.h" +#endif + +#ifndef WINLOCK_DISABLED +// Define the TGUI key here so it is available in QMK configurator +enum K3x0_keycodes { +#ifdef VIA_ENABLE + KC_TGUI = USER00, // Toggle between GUI Lock or Unlock + NEW_SAFE_RANGE = SAFE_RANGE +#else + KC_TGUI = SAFE_RANGE, // Toggle between GUI Lock or Unlock + NEW_SAFE_RANGE +#endif +}; + +#undef SAFE_RANGE +#define SAFE_RANGE NEW_SAFE_RANGE +#endif /* WINLOCK_DISABLED */ + +/* Function Prototype */ +void off_all_leds(void); +void on_all_leds(void); + diff --git a/keyboards/durgod/k3x0/keymaps/chimera/keymap.c b/keyboards/durgod/k3x0/keymaps/chimera/keymap.c new file mode 100644 index 000000000000..8053da351a50 --- /dev/null +++ b/keyboards/durgod/k3x0/keymaps/chimera/keymap.c @@ -0,0 +1,373 @@ +/* Copyright 2021 Don Kjer and Tyler Tidman + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Layer shorthand +enum _layer { + _WBL, + _WFL, + _WSL, + _MBL, + _MFL, + _MSL +}; + +#ifndef DEFAULT_LAYOUT +# define DEFAULT_LAYOUT _WBL // Change to _MBL to boot into Mac layout. +#endif +#ifndef ALT_LAYOUT +# define ALT_LAYOUT _MBL // Layout to display 'MR' led when active. +#endif + +static bool win_key_locked = false; +static bool mac_media_locked = false; +static bool win_appkey_pressed = false; +static bool mac_fnkey_pressed = false; + + +// Defines the keycodes used by our macros in process_record_user +enum custom_keycodes { + KC_TGUI = SAFE_RANGE, // Toggle between GUI Lock or Unlock (Windows) + KC_TMED, // Toggle between Fx keys or Media keys (Mac) + KC_WFN, // Windows function key + KC_MFN, // Mac function key + MO_WSL, // Windows system key + MO_MSL, // Mac system key + DF_W2MBL, // Change layout from Windows to Mac + DF_M2WBL // Change layout from Mac to Windows +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _WBL: Windows Base Layer (Default Layer) + * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ + * │Esc│ │F1 │F2 │F3 │F4 │ │F5 │F6 │F7 │F8 │ │F9 │F10│F11│F12│ │PSc│Slk│Pse│ + * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ │Ins│Hom│PgU│ │Num│ / │ * │ - │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ │Del│End│PgD│ │ 7 │ 8 │ 9 │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬┈┈┈┈┤ └───┴───┴───┘ ├───┼───┼───┤ + │ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │Entr│ │ 4 │ 5 │ 6 │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───┐ ├───┼───┼───┼───┤ + * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │ │ 1 │ 2 │ 3 │ │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤Ent│ + * │Ctrl│GUI │Alt │ │ Alt│Func│ App│Ctrl│ │ ← │ ↓ │ → │ │ 0 │ . │ │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘ + */ + [_WBL] = LAYOUT_all( /* Windows Base Layer */ + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_WFN, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT + ), + /* Keymap _WFL: Windows Function Layer + * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ + * │ │ │Ply│Stp│Prv│Nxt│ │Mut│Vo+│Vo-│ │ │ │ │ │ │ │ │ │Mut│ + * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │Vo+│ │ │ │ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │Vo-│ │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬┈┈┈┈┤ └───┴───┴───┘ ├───┼───┼───┤ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───┐ ├───┼───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤ │ + * │ │Lock│ │ │ │Func│ Sys│ │ │ │ │ │ │ │ │ │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘ + */ + [_WFL] = LAYOUT_all( /* Windows Function Layer */ + _______, KC_MPLY, KC_MSTP, KC_MPRV, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_TGUI, _______, _______, _______, _______, MO_WSL, _______, _______, _______, _______, _______, _______ + ), + /* Keymap _WSL: Windows System Layer + * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ + * │Rst│ │Slp│ │ │Pwr│ │ │ │ │ │ │ │ │ │MAC│ │ │ │ │ + * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬┈┈┈┈┤ └───┴───┴───┘ ├───┼───┼───┤ │ + * │ │ │ │DBG│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───┐ ├───┼───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘ + */ + [_WSL] = LAYOUT_all( /* Windows Second / System Layer */ + RESET, KC_SLEP, XXXXXXX, XXXXXXX, KC_PWR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DF_W2MBL, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, DEBUG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + ), + + /* Keymap _MBL: Mac Base Layer (Alternate Layout) + * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ + * │Esc│ │F1 │F2 │F3 │F4 │ │F5 │F6 │F7 │F8 │ │F9 │F10│F11│F12│ │F13│F14│F15│ + * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ │Ins│Hom│PgU│ │Num│ / │ * │ - │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ │Del│End│PgD│ │ 7 │ 8 │ 9 │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬┈┈┈┈┤ └───┴───┴───┘ ├───┼───┼───┤ + │ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │Entr│ │ 4 │ 5 │ 6 │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───┐ ├───┼───┼───┼───┤ + * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │ │ 1 │ 2 │ 3 │ │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤Ent│ + * │Ctrl│Alt │GUI │ │ GUI│ Alt│Func│Ctrl│ │ ← │ ↓ │ → │ │ 0 │ . │ │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘ + */ + [_MBL] = LAYOUT_all( /* Mac Base Layer */ + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, KC_MFN, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT + ), + /* Keymap _MFL: Mac Function Layer + * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ + * │ │ │Br-│Br+│ │ │ │ │ │Prv│Ply│ │Nxt│Mut│Vo-│Vo+│ │TMd│ │Mut│ + * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │Vo+│ │ │ │ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │Vo-│ │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬┈┈┈┈┤ └───┴───┴───┘ ├───┼───┼───┤ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───┐ ├───┼───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤ │ + * │ │ │ │ │ │ Sys│Func│ │ │ │ │ │ │ │ │ │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘ + */ + [_MFL] = LAYOUT_all( /* Mac Function Layer */ + _______, KC_BRID, KC_BRIU, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TMED, _______, KC_MUTE, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, MO_MSL, _______, _______, _______, _______, _______, _______, _______ + ), + /* Keymap _MSL: Mac System Layer + * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ + * │Rst│ │ │ │ │Slp│ │ │ │ │ │ │ │ │ │WIN│ │ │ │ │ + * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬┈┈┈┈┤ └───┴───┴───┘ ├───┼───┼───┤ │ + * │ │ │ │DBG│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───┐ ├───┼───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤ │ + * │ │ │ │ │ │ Sys│Func│ │ │ │ │ │ │ │ │ │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘ + */ + [_MSL] = LAYOUT_all( /* Mac Second / System Layer */ + RESET, XXXXXXX, XXXXXXX, XXXXXXX, KC_SLEP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DF_M2WBL, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, DEBUG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + ) +}; + +void unlock_win_key(void) { + win_key_locked = false; + mac_media_locked = false; + writePinHigh(LED_WIN_LOCK_PIN); +} + +void toggle_lock_win_key(void) { + win_key_locked = !win_key_locked; + writePin(LED_WIN_LOCK_PIN, !win_key_locked); +} + +void toggle_lock_media_key(void) { + mac_media_locked = !mac_media_locked; + writePin(LED_WIN_LOCK_PIN, !mac_media_locked); +} + +#ifdef CONSOLE_ENABLE +void dprint_global_layers(void) { + dprint("Global Layers:"); + if (IS_LAYER_ON(_WFL)) { dprint(" _WFL"); } + if (IS_LAYER_ON(_WSL)) { dprint(" _WSL"); } + if (IS_LAYER_ON(_MFL)) { dprint(" _MFL"); } + if (IS_LAYER_ON(_MSL)) { dprint(" _MSL"); } + dprintf("\n"); +} + +void dprint_layers(layer_state_t state) { + dprint("Layers:"); + if (IS_LAYER_ON_STATE(state, _WFL)) { dprint(" _WFL"); } + if (IS_LAYER_ON_STATE(state, _WSL)) { dprint(" _WSL"); } + if (IS_LAYER_ON_STATE(state, _MFL)) { dprint(" _MFL"); } + if (IS_LAYER_ON_STATE(state, _MSL)) { dprint(" _MSL"); } + dprintf("\n"); +} +#endif + +layer_state_t default_layer_state_set_user(layer_state_t state) { +#ifdef CONSOLE_ENABLE + dprintf("default_layer_state_set_user: 0x%x\n", state); + dprint_global_layers(); +#endif + // Disable windows key lock on default layer transition. + unlock_win_key(); + win_appkey_pressed = false; + mac_fnkey_pressed = false; + writePin(LED_MR_LOCK_PIN, !IS_LAYER_ON_STATE(state, ALT_LAYOUT)); + return state; +} + +layer_state_t layer_state_set_user(layer_state_t state) { +#ifdef CONSOLE_ENABLE + dprintf("layer_state_set_user: 0x%x\n", state); + dprint_layers(state); +#endif + return state; +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_TGUI: + if (!record->event.pressed) { + // Toggle GUI lock on key release + toggle_lock_win_key(); + } + break; + case KC_TMED: + // Only trigger when Fn key is also held down, to avoid accidental unlock. + if (!mac_fnkey_pressed) { return false; } + if (!record->event.pressed) { + // Toggle Media Lock on key release + toggle_lock_media_key(); + } + break; + case KC_LGUI: + if (win_key_locked) { return false; } + break; + case KC_WFN: + // Like MO(_WFL), but also enables _WSL if KC_APP is already pressed down. + if (record->event.pressed) { + layer_on(_WFL); + if (win_appkey_pressed) { + // Also enable Secondary layer if App key is being held down. + win_appkey_pressed = false; + layer_on(_WSL); + } + } else { + if (IS_LAYER_ON(_WFL)) { layer_off(_WFL); } + if (IS_LAYER_ON(_MSL)) { layer_off(_MSL); } + } + break; + case KC_APP: + if (record->event.pressed) { + // Don't actually press down the app menu key + win_appkey_pressed = true; + } else { + if (IS_LAYER_ON(_WSL)) { layer_off(_WSL); } + if (IS_LAYER_ON(_MFL)) { layer_off(_MFL); } + if (win_appkey_pressed) { + win_appkey_pressed = false; + // Tap the KC_APP key on key release. + tap_code(KC_APP); + } + } + return false; + break; + case KC_MFN: + // Mac Fn key. Emit Fn keycode, and also transition layers similar to KC_WFN. + if (record->event.pressed) { + mac_fnkey_pressed = true; + layer_on(_MFL); + // Also enable Secondary layer if Right-Alt key is being held down. + if (get_mods() & MOD_BIT(KC_RALT)) { + layer_on(_MSL); + } + } else { + mac_fnkey_pressed = false; + if (!mac_media_locked) { + if (IS_LAYER_ON(_MFL)) { layer_off(_MFL); } + if (IS_LAYER_ON(_WSL)) { layer_off(_WSL); } + } + } + break; + case KC_RALT: + // Disable MSL/WFL layer on key-up. + if (!record->event.pressed) { + if (IS_LAYER_ON(_MSL)) { layer_off(_MSL); } + if (IS_LAYER_ON(_WFL)) { layer_off(_WFL); } + } + break; + case MO_WSL: + if (record->event.pressed) { + layer_on(_WSL); + } else { + if (IS_LAYER_ON(_WSL)) { layer_off(_WSL); } + if (IS_LAYER_ON(_MFL)) { layer_off(_MFL); } + } + break; + case MO_MSL: + if (record->event.pressed) { + layer_on(_MSL); + } else { + if (IS_LAYER_ON(_MSL)) { layer_off(_MSL); } + if (IS_LAYER_ON(_WFL)) { layer_off(_WFL); } + } + break; + case DF_W2MBL: + if (!record->event.pressed) { + // Switch base layer, but preserve first/secondary layers. + default_layer_set(1UL<<_MBL); + layer_state_set(1UL<<_MFL | 1UL<<_MSL); + } + break; + case DF_M2WBL: + if (!record->event.pressed) { + // Switch base layer, but preserve first/secondary layers. + default_layer_set(1UL<<_WBL); + layer_state_set(1UL<<_WFL | 1UL<<_WSL); + } + break; + case RESET: + if (record->event.pressed) { + // Flash LEDs to indicate bootloader mode is enabled. + on_all_leds(); + } + break; + } + return true; +} + +void keyboard_post_init_user(void) { + default_layer_set(1UL<. + */ + +#include QMK_KEYBOARD_H + +// Layer shorthand +enum _layer { + _WBL, + _WFL, + _WSL, + _MBL, + _MFL, + _MSL +}; + +#ifndef DEFAULT_LAYOUT +# define DEFAULT_LAYOUT _WBL // Change to _MBL to boot into Mac layout. +#endif +#ifndef ALT_LAYOUT +# define ALT_LAYOUT _MBL // Layout to display 'MR' led when active. +#endif + +static bool win_key_locked = false; +static bool mac_media_locked = false; +static bool win_appkey_pressed = false; +static bool mac_fnkey_pressed = false; + + +// Defines the keycodes used by our macros in process_record_user +enum custom_keycodes { + KC_TGUI = SAFE_RANGE, // Toggle between GUI Lock or Unlock (Windows) + KC_TMED, // Toggle between Fx keys or Media keys (Mac) + KC_WFN, // Windows function key + KC_MFN, // Mac function key + MO_WSL, // Windows system key + MO_MSL, // Mac system key + DF_W2MBL, // Change layout from Windows to Mac + DF_M2WBL // Change layout from Mac to Windows +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _WBL: Windows Base Layer (Default Layer) + * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ + * │Esc│ │M1 │M3 │M2 │M4 │ │M1 │M3 │M2 │M4 │ │M1 │M3 │M2 │M4 │ │PSc│Slk│Pse│ + * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ │Ins│Hom│PgU│ │Num│ / │ * │ - │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ │Del│End│PgD│ │ 7 │ 8 │ 9 │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬┈┈┈┈┤ └───┴───┴───┘ ├───┼───┼───┤ + │ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │Entr│ │ 4 │ 5 │ 6 │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───┐ ├───┼───┼───┼───┤ + * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │ │ 1 │ 2 │ 3 │ │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤Ent│ + * │Ctrl│GUI │Alt │ │ Alt│Func│ App│Ctrl│ │ ← │ ↓ │ → │ │ 0 │ . │ │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘ + */ + [_WBL] = LAYOUT_all( /* Windows Base Layer */ + KC_ESC, KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN4, KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN4, KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN4, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_WFN, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT + ), + /* Keymap _WFL: Windows Function Layer + * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ + * │ │ │F1 │F2 │F3 │F4 │ │F5 │F6 │F7 │F8 │ │F9 │F10│F11│F12│ │ │ │Mut│ + * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │Vo+│ │ │ │ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │Vo-│ │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬┈┈┈┈┤ └───┴───┴───┘ ├───┼───┼───┤ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───┐ ├───┼───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤ │ + * │ │Lock│ │ │ │Func│ Sys│ │ │ │ │ │ │ │ │ │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘ + */ + [_WFL] = LAYOUT_all( /* Windows Function Layer */ + _______, 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_MUTE, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_TGUI, _______, _______, _______, _______, MO_WSL, _______, _______, _______, _______, _______, _______ + ), + /* Keymap _WSL: Windows System Layer + * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ + * │Rst│ │Slp│ │ │Pwr│ │ │ │ │ │ │ │ │ │MAC│ │ │ │ │ + * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬┈┈┈┈┤ └───┴───┴───┘ ├───┼───┼───┤ │ + * │ │ │ │DBG│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───┐ ├───┼───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘ + */ + [_WSL] = LAYOUT_all( /* Windows Second / System Layer */ + RESET, KC_SLEP, XXXXXXX, XXXXXXX, KC_PWR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DF_W2MBL, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, DEBUG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + ), + + /* Keymap _MBL: Mac Base Layer (Alternate Layout) + * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ + * │Esc│ │M1 │M3 │M2 │M4 │ │M1 │M3 │M2 │M4 │ │M1 │M3 │M2 │M4 │ │F13│F14│F15│ + * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ │Ins│Hom│PgU│ │Num│ / │ * │ - │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ │Del│End│PgD│ │ 7 │ 8 │ 9 │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬┈┈┈┈┤ └───┴───┴───┘ ├───┼───┼───┤ + │ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │Entr│ │ 4 │ 5 │ 6 │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───┐ ├───┼───┼───┼───┤ + * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │ │ 1 │ 2 │ 3 │ │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤Ent│ + * │Ctrl│Alt │GUI │ │ GUI│ Alt│Func│Ctrl│ │ ← │ ↓ │ → │ │ 0 │ . │ │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘ + */ + [_MBL] = LAYOUT_all( /* Mac Base Layer */ + KC_ESC, KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN4, KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN4, KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN4, KC_F13, KC_F14, KC_F15, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, KC_MFN, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT + ), + /* Keymap _MFL: Mac Function Layer + * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ + * │ │ │F1 │F2 │F3 │F4 │ │F5 │F6 │F7 │F8 │ │F9 │F10│F11│F12│ │TMd│ │Mut│ + * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │Vo+│ │ │ │ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │Vo-│ │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬┈┈┈┈┤ └───┴───┴───┘ ├───┼───┼───┤ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───┐ ├───┼───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤ │ + * │ │ │ │ │ │ Sys│Func│ │ │ │ │ │ │ │ │ │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘ + */ + [_MFL] = LAYOUT_all( /* Mac Function Layer */ + _______, 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_TMED, _______, KC_MUTE, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, MO_MSL, _______, _______, _______, _______, _______, _______, _______ + ), + /* Keymap _MSL: Mac System Layer + * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ + * │Rst│ │ │ │ │Slp│ │ │ │ │ │ │ │ │ │WIN│ │ │ │ │ + * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬┈┈┈┈┤ └───┴───┴───┘ ├───┼───┼───┤ │ + * │ │ │ │DBG│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───┐ ├───┼───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤ │ + * │ │ │ │ │ │ Sys│Func│ │ │ │ │ │ │ │ │ │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘ + */ + [_MSL] = LAYOUT_all( /* Mac Second / System Layer */ + RESET, XXXXXXX, XXXXXXX, XXXXXXX, KC_SLEP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DF_M2WBL, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, DEBUG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + ) +}; + +void unlock_win_key(void) { + win_key_locked = false; + mac_media_locked = false; + writePinHigh(LED_WIN_LOCK_PIN); +} + +void toggle_lock_win_key(void) { + win_key_locked = !win_key_locked; + writePin(LED_WIN_LOCK_PIN, !win_key_locked); +} + +void toggle_lock_media_key(void) { + mac_media_locked = !mac_media_locked; + writePin(LED_WIN_LOCK_PIN, !mac_media_locked); +} + +#ifdef CONSOLE_ENABLE +void dprint_global_layers(void) { + dprint("Global Layers:"); + if (IS_LAYER_ON(_WFL)) { dprint(" _WFL"); } + if (IS_LAYER_ON(_WSL)) { dprint(" _WSL"); } + if (IS_LAYER_ON(_MFL)) { dprint(" _MFL"); } + if (IS_LAYER_ON(_MSL)) { dprint(" _MSL"); } + dprintf("\n"); +} + +void dprint_layers(layer_state_t state) { + dprint("Layers:"); + if (IS_LAYER_ON_STATE(state, _WFL)) { dprint(" _WFL"); } + if (IS_LAYER_ON_STATE(state, _WSL)) { dprint(" _WSL"); } + if (IS_LAYER_ON_STATE(state, _MFL)) { dprint(" _MFL"); } + if (IS_LAYER_ON_STATE(state, _MSL)) { dprint(" _MSL"); } + dprintf("\n"); +} +#endif + +layer_state_t default_layer_state_set_user(layer_state_t state) { +#ifdef CONSOLE_ENABLE + dprintf("default_layer_state_set_user: 0x%x\n", state); + dprint_global_layers(); +#endif + // Disable windows key lock on default layer transition. + unlock_win_key(); + win_appkey_pressed = false; + mac_fnkey_pressed = false; + writePin(LED_MR_LOCK_PIN, !IS_LAYER_ON_STATE(state, ALT_LAYOUT)); + return state; +} + +layer_state_t layer_state_set_user(layer_state_t state) { +#ifdef CONSOLE_ENABLE + dprintf("layer_state_set_user: 0x%x\n", state); + dprint_layers(state); +#endif + return state; +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_TGUI: + if (!record->event.pressed) { + // Toggle GUI lock on key release + toggle_lock_win_key(); + } + break; + case KC_TMED: + // Only trigger when Fn key is also held down, to avoid accidental unlock. + if (!mac_fnkey_pressed) { return false; } + if (!record->event.pressed) { + // Toggle Media Lock on key release + toggle_lock_media_key(); + } + break; + case KC_LGUI: + if (win_key_locked) { return false; } + break; + case KC_WFN: + // Like MO(_WFL), but also enables _WSL if KC_APP is already pressed down. + if (record->event.pressed) { + layer_on(_WFL); + if (win_appkey_pressed) { + // Also enable Secondary layer if App key is being held down. + win_appkey_pressed = false; + layer_on(_WSL); + } + } else { + if (IS_LAYER_ON(_WFL)) { layer_off(_WFL); } + if (IS_LAYER_ON(_MSL)) { layer_off(_MSL); } + } + break; + case KC_APP: + if (record->event.pressed) { + // Don't actually press down the app menu key + win_appkey_pressed = true; + } else { + if (IS_LAYER_ON(_WSL)) { layer_off(_WSL); } + if (IS_LAYER_ON(_MFL)) { layer_off(_MFL); } + if (win_appkey_pressed) { + win_appkey_pressed = false; + // Tap the KC_APP key on key release. + tap_code(KC_APP); + } + } + return false; + break; + case KC_MFN: + // Mac Fn key. Emit Fn keycode, and also transition layers similar to KC_WFN. + if (record->event.pressed) { + mac_fnkey_pressed = true; + layer_on(_MFL); + // Also enable Secondary layer if Right-Alt key is being held down. + if (get_mods() & MOD_BIT(KC_RALT)) { + layer_on(_MSL); + } + } else { + mac_fnkey_pressed = false; + if (!mac_media_locked) { + if (IS_LAYER_ON(_MFL)) { layer_off(_MFL); } + if (IS_LAYER_ON(_WSL)) { layer_off(_WSL); } + } + } + break; + case KC_RALT: + // Disable MSL/WFL layer on key-up. + if (!record->event.pressed) { + if (IS_LAYER_ON(_MSL)) { layer_off(_MSL); } + if (IS_LAYER_ON(_WFL)) { layer_off(_WFL); } + } + break; + case MO_WSL: + if (record->event.pressed) { + layer_on(_WSL); + } else { + if (IS_LAYER_ON(_WSL)) { layer_off(_WSL); } + if (IS_LAYER_ON(_MFL)) { layer_off(_MFL); } + } + break; + case MO_MSL: + if (record->event.pressed) { + layer_on(_MSL); + } else { + if (IS_LAYER_ON(_MSL)) { layer_off(_MSL); } + if (IS_LAYER_ON(_WFL)) { layer_off(_WFL); } + } + break; + case DF_W2MBL: + if (!record->event.pressed) { + // Switch base layer, but preserve first/secondary layers. + default_layer_set(1UL<<_MBL); + layer_state_set(1UL<<_MFL | 1UL<<_MSL); + } + break; + case DF_M2WBL: + if (!record->event.pressed) { + // Switch base layer, but preserve first/secondary layers. + default_layer_set(1UL<<_WBL); + layer_state_set(1UL<<_WFL | 1UL<<_WSL); + } + break; + case RESET: + if (record->event.pressed) { + // Flash LEDs to indicate bootloader mode is enabled. + on_all_leds(); + } + break; + } + return true; +} + +void keyboard_post_init_user(void) { + default_layer_set(1UL<. + */ + +#include QMK_KEYBOARD_H + +// Layer shorthand +enum _layer { + _BASE, + _FN, + _LAYER3, + _LAYER4 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BASE: Base Layer (Default Layer) + * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ + * │Esc│ │F1 │F2 │F3 │F4 │ │F5 │F6 │F7 │F8 │ │F9 │F10│F11│F12│ │PSc│Slk│Pse│ + * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ │Ins│Hom│PgU│ │Num│ / │ * │ - │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ │Del│End│PgD│ │ 7 │ 8 │ 9 │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬┈┈┈┈┤ └───┴───┴───┘ ├───┼───┼───┤ + │ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │Entr│ │ 4 │ 5 │ 6 │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───┐ ├───┼───┼───┼───┤ + * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │ │ 1 │ 2 │ 3 │ │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤Ent│ + * │Ctrl│GUI │Alt │ │ Alt│Func│ App│Ctrl│ │ ← │ ↓ │ → │ │ 0 │ . │ │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘ + */ + [_BASE] = LAYOUT_all( /* Base Layer */ + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT + ), + /* Keymap _FN: Function Layer + * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ + * │ │ │Ply│Stp│Prv│Nxt│ │Mut│Vo+│Vo-│ │ │ │ │ │ │ │ │ │ │ + * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬┈┈┈┈┤ └───┴───┴───┘ ├───┼───┼───┤ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───┐ ├───┼───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤ │ + * │ │Lock│ │ │ │Func│ Sys│ │ │ │ │ │ │ │ │ │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘ + */ + [_FN] = LAYOUT_all( /* Function Layer */ + _______, KC_MPLY, KC_MSTP, KC_MPRV, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_TGUI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [_LAYER3] = LAYOUT_all( /* Layer 3 */ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [_LAYER4] = LAYOUT_all( /* Layer 4 */ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/durgod/k3x0/keymaps/via/readme.md b/keyboards/durgod/k3x0/keymaps/via/readme.md new file mode 100644 index 000000000000..ffa1c4ce0a2f --- /dev/null +++ b/keyboards/durgod/k3x0/keymaps/via/readme.md @@ -0,0 +1,6 @@ +# The via keymap for Durgod Taurus K310/K320. + +Layer 0 : Standard layout + +Layer 1 : Media control +- Reusing Durgod's Original Media Control for Fn + F1 ~ Fn + F7 diff --git a/keyboards/durgod/k3x0/keymaps/via/rules.mk b/keyboards/durgod/k3x0/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/durgod/k3x0/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/durgod/k3x0/readme.md b/keyboards/durgod/k3x0/readme.md new file mode 100644 index 000000000000..cbb170160c18 --- /dev/null +++ b/keyboards/durgod/k3x0/readme.md @@ -0,0 +1,51 @@ +# K3X0 = K310, K320, etc. + +This K3X0 code is shared between both the ANSI and ISO variants of both the +K310 full-sized 104/105-key and K320 TKL 87/88-key keyboards. + +* Keyboard Maintainers: [dkjer](https://github.com/dkjer) and [tylert](https://github.com/tylert) +* Hardware Supported: Durgod Taurus K310 or K320 board with STM32F070RBT6 +* Hardware Availability: K310 https://www.durgod.com/page9?product_id=53&_l=en + and K320 https://www.durgod.com/page9?product_id=47&_l=en + +## Instructions + +### Build + +Instructions for building the K310 and K320 firmware can be found here: +* [K310](k310/readme.md) +* [K320](k320/readme.md) + +### Initial Flash + +For first Flashing from initial Stock Firmware + +1. Back up original Firmware Image: +- Unplug +- Short Boot0 to Vdd (See below) +- Plug In USB +- Make a Flash Image's Backup in case you wanted to restore the Keyboard to Stock's Image: + - Using dfu-util: + + dfu-util --list + dfu-util --alt 0 --dfuse-address 0x08000000 --upload ${OLD_STOCK_BIN} + +2. Flash the QMK Firmware Image. +- Put board into Bootloader mode, using the same method as when backing up the original Firmware (above) +- Here are a few options for performing the initial Flash: + - Using [QMK Toolbox](https://github.com/qmk/qmk_toolbox) + - Using dfu-util: + + dfu-util --alt 0 --dfuse-address 0x08000000 --download ${NEW_QMK_BIN} + +You can short Boot0 to Vdd by shorting R21 to C27 on the sides closest to the processor, as shown: + +Shorting Boot0 to Vdd on K320 + +### Subsequent Flashing + +For repeating Flashing you can use BootMagic: +- BootMagic Lite has been enabled with Assigned "Esc" key +- Unplug USB Cable +- Holding Esc Button +- Plug in USB Cable, Keyboard should be in ST-Bootloader state diff --git a/keyboards/durgod/k3x0/rules.mk b/keyboards/durgod/k3x0/rules.mk new file mode 100644 index 000000000000..d55d90d8cc07 --- /dev/null +++ b/keyboards/durgod/k3x0/rules.mk @@ -0,0 +1,25 @@ +# Default to K310 variant, since it will also work on a K320 +DEFAULT_FOLDER=durgod/k3x0/k310 + +# MCU name +# Actually F070, but close enough +MCU = STM32F072 +BOARD = DURGOD_STM32_F070 + +# 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 +# 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 +LTO_ENABLE = yes diff --git a/keyboards/durgod/venus/readme.md b/keyboards/durgod/venus/readme.md new file mode 100644 index 000000000000..c2228583a90f --- /dev/null +++ b/keyboards/durgod/venus/readme.md @@ -0,0 +1,3 @@ +# Venus + +See: [Venus](../dgk6x/venus/readme.md) diff --git a/keyboards/durgod/venus/rules.mk b/keyboards/durgod/venus/rules.mk new file mode 100644 index 000000000000..57acf2a48cfe --- /dev/null +++ b/keyboards/durgod/venus/rules.mk @@ -0,0 +1 @@ +DEFAULT_FOLDER=durgod/dgk6x/venus diff --git a/keyboards/dyz/dyz40/config.h b/keyboards/dyz/dyz40/config.h new file mode 100644 index 000000000000..581f925165a0 --- /dev/null +++ b/keyboards/dyz/dyz40/config.h @@ -0,0 +1,42 @@ +/* +Copyright 2021 dayatz + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define MANUFACTURER dyz +#define PRODUCT dyz40 + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 13 + + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* Bootmagic Lite key configuration */ +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 + +#define TAP_CODE_DELAY 10 // Need this delay for some keys like VOLD/VOLU to work +#define ENCODERS_PAD_A { D1 } +#define ENCODERS_PAD_B { D0 } + +#define DYNAMIC_KEYMAP_LAYER_COUNT 3 diff --git a/keyboards/dyz/dyz40/dyz40.c b/keyboards/dyz/dyz40/dyz40.c new file mode 100644 index 000000000000..1ca2cf1082b2 --- /dev/null +++ b/keyboards/dyz/dyz40/dyz40.c @@ -0,0 +1,16 @@ +/* Copyright 2021 dayatz + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "dyz40.h" diff --git a/keyboards/dyz/dyz40/dyz40.h b/keyboards/dyz/dyz40/dyz40.h new file mode 100644 index 000000000000..8a704321966d --- /dev/null +++ b/keyboards/dyz/dyz40/dyz40.h @@ -0,0 +1,96 @@ +/* Copyright 2021 dayatz + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" +#define _X_ KC_NO + +/* ┌───────┐ + * │0B │ 2u Backspace + * └───────┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │ + * ├───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │ + * ├────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬────┤ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │ + * ├─────┬┴──┬┴───┴┬──┴───┴─┬─┴───┴───┴┬──┴──┬┴──┬┴────┤ + * │30 │31 │32 │33 │37 │3A │3B │3C │ + * └─────┴───┴─────┴────────┴──────────┴─────┴───┴─────┘ + * ┌─────┬─────┬───────────────────────────┬─────┬─────┐ + * │30 │31 │36 │3B │3C │ 7u Space + * └─────┴─────┴───────────────────────────┴─────┴─────┘ + */ + +#define LAYOUT_all( \ + 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, K36, K37, K3A, K3B, K3C \ +) { \ + { 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, _X_ }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, _X_ }, \ + { K30, K31, K32, K33, _X_, _X_, K36, K37, _X_, _X_, K3A, K3B, K3C } \ +} + +#define LAYOUT_7u_space( \ + 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, K36, K3B, K3C \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, _X_ }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, _X_ }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, _X_ }, \ + { K30, K31, _X_, _X_, _X_, _X_, K36, _X_, _X_, _X_, _X_, K3B, K3C } \ +} + +#define LAYOUT_7u_space_split_bs( \ + 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, K36, K3B, K3C \ +) { \ + { 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, _X_ }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, _X_ }, \ + { K30, K31, _X_, _X_, _X_, _X_, K36, _X_, _X_, _X_, _X_, K3B, K3C } \ +} + +#define LAYOUT_split_space( \ + 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, K37, K3A, K3B, K3C \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, _X_ }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, _X_ }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, _X_ }, \ + { K30, K31, K32, K33, _X_, _X_, _X_, K37, _X_, _X_, K3A, K3B, K3C } \ +} + +#define LAYOUT_split_space_split_bs( \ + 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, K37, K3A, K3B, K3C \ +) { \ + { 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, _X_ }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, _X_ }, \ + { K30, K31, K32, K33, _X_, _X_, _X_, K37, _X_, _X_, K3A, K3B, K3C } \ +} diff --git a/keyboards/dyz/dyz40/info.json b/keyboards/dyz/dyz40/info.json new file mode 100644 index 000000000000..2a30ca0bb205 --- /dev/null +++ b/keyboards/dyz/dyz40/info.json @@ -0,0 +1,280 @@ +{ + "keyboard_name": "dyz40", + "url": "https://github.com/dayatz/mechanical-keyboards/tree/master/dyz40", + "maintainer": "dayatz", + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["E6", "F0", "F1", "F4", "F5", "F6", "F7", "C7", "C6", "B6", "B5", "B4", "D7"], + "rows": ["B0", "B1", "B3", "B2"] + }, + "rgblight": { + "led_count": 13, + "pin": "B7", + "hue_steps": 10, + "saturation_steps": 10, + "brightness_steps": 10, + "animations": { + "all": true + } + }, + "usb": { + "vid": "0xD772", + "pid": "0x000B", + "device_ver": "0x0001" + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"Q", "x":1, "y":0}, + {"label":"W", "x":2, "y":0}, + {"label":"E", "x":3, "y":0}, + {"label":"R", "x":4, "y":0}, + {"label":"T", "x":5, "y":0}, + {"label":"Y", "x":6, "y":0}, + {"label":"U", "x":7, "y":0}, + {"label":"I", "x":8, "y":0}, + {"label":"O", "x":9, "y":0}, + {"label":"P", "x":10, "y":0}, + {"label":"[{", "x":11, "y":0}, + {"label":"]}", "x":12, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.25}, + {"label":"A", "x":1.25, "y":1}, + {"label":"S", "x":2.25, "y":1}, + {"label":"D", "x":3.25, "y":1}, + {"label":"F", "x":4.25, "y":1}, + {"label":"G", "x":5.25, "y":1}, + {"label":"H", "x":6.25, "y":1}, + {"label":"J", "x":7.25, "y":1}, + {"label":"K", "x":8.25, "y":1}, + {"label":"L", "x":9.25, "y":1}, + {"label":"'\"", "x":10.25, "y":1}, + {"label":"Enter", "x":11.25, "y":1, "w":1.75}, + + {"label":"Shift", "x":0, "y":2, "w":1.75}, + {"label":"Z", "x":1.75, "y":2}, + {"label":"X", "x":2.75, "y":2}, + {"label":"C", "x":3.75, "y":2}, + {"label":"V", "x":4.75, "y":2}, + {"label":"B", "x":5.75, "y":2}, + {"label":"N", "x":6.75, "y":2}, + {"label":"M", "x":7.75, "y":2}, + {"label":",<", "x":8.75, "y":2}, + {"label":".>", "x":9.75, "y":2}, + {"label":"/?", "x":10.75, "y":2}, + {"label":"Shift", "x":11.75, "y":2, "w":1.25}, + + {"label":"Ctrl", "x":0, "y":3, "w":1.5}, + {"label":"Win", "x":1.5, "y":3}, + {"label":"Alt", "x":2.5, "y":3, "w":1.5}, + {"label":"Space", "x":4, "y":3, "w":2.25}, + {"label":"7uSpace", "x":3, "y":4, "w":7}, + {"label":"Fn2", "x":6.25, "y":3, "w":2.75}, + {"label":"Alt", "x":9, "y":3, "w":1.5}, + {"label":"Win", "x":10.5, "y":3}, + {"label":"Ctrl", "x":11.5, "y":3, "w":1.5} + ] + }, + "LAYOUT_7u_space": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"Q", "x":1, "y":0}, + {"label":"W", "x":2, "y":0}, + {"label":"E", "x":3, "y":0}, + {"label":"R", "x":4, "y":0}, + {"label":"T", "x":5, "y":0}, + {"label":"Y", "x":6, "y":0}, + {"label":"U", "x":7, "y":0}, + {"label":"I", "x":8, "y":0}, + {"label":"O", "x":9, "y":0}, + {"label":"P", "x":10, "y":0}, + {"label":"Bksp", "x":11, "y":0, "w":2}, + + {"label":"Tab", "x":0, "y":1, "w":1.25}, + {"label":"A", "x":1.25, "y":1}, + {"label":"S", "x":2.25, "y":1}, + {"label":"D", "x":3.25, "y":1}, + {"label":"F", "x":4.25, "y":1}, + {"label":"G", "x":5.25, "y":1}, + {"label":"H", "x":6.25, "y":1}, + {"label":"J", "x":7.25, "y":1}, + {"label":"K", "x":8.25, "y":1}, + {"label":"L", "x":9.25, "y":1}, + {"label":"'\"", "x":10.25, "y":1}, + {"label":"Enter", "x":11.25, "y":1, "w":1.75}, + + {"label":"Shift", "x":0, "y":2, "w":1.75}, + {"label":"Z", "x":1.75, "y":2}, + {"label":"X", "x":2.75, "y":2}, + {"label":"C", "x":3.75, "y":2}, + {"label":"V", "x":4.75, "y":2}, + {"label":"B", "x":5.75, "y":2}, + {"label":"N", "x":6.75, "y":2}, + {"label":"M", "x":7.75, "y":2}, + {"label":",<", "x":8.75, "y":2}, + {"label":".>", "x":9.75, "y":2}, + {"label":"/?", "x":10.75, "y":2}, + {"label":"Shift", "x":11.75, "y":2, "w":1.25}, + + {"label":"Ctrl", "x":0, "y":3, "w":1.5}, + {"label":"Alt", "x":1.5, "y":3, "w":1.5}, + {"label":"7uSpace", "x":3, "y":3, "w":7}, + {"label":"Alt", "x":10, "y":3, "w":1.5}, + {"label":"Ctrl", "x":11.5, "y":3, "w":1.5} + ] + }, + "LAYOUT_7u_space_split_bs": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"Q", "x":1, "y":0}, + {"label":"W", "x":2, "y":0}, + {"label":"E", "x":3, "y":0}, + {"label":"R", "x":4, "y":0}, + {"label":"T", "x":5, "y":0}, + {"label":"Y", "x":6, "y":0}, + {"label":"U", "x":7, "y":0}, + {"label":"I", "x":8, "y":0}, + {"label":"O", "x":9, "y":0}, + {"label":"P", "x":10, "y":0}, + {"label":"[{", "x":11, "y":0}, + {"label":"]}", "x":12, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.25}, + {"label":"A", "x":1.25, "y":1}, + {"label":"S", "x":2.25, "y":1}, + {"label":"D", "x":3.25, "y":1}, + {"label":"F", "x":4.25, "y":1}, + {"label":"G", "x":5.25, "y":1}, + {"label":"H", "x":6.25, "y":1}, + {"label":"J", "x":7.25, "y":1}, + {"label":"K", "x":8.25, "y":1}, + {"label":"L", "x":9.25, "y":1}, + {"label":"'\"", "x":10.25, "y":1}, + {"label":"Enter", "x":11.25, "y":1, "w":1.75}, + + {"label":"Shift", "x":0, "y":2, "w":1.75}, + {"label":"Z", "x":1.75, "y":2}, + {"label":"X", "x":2.75, "y":2}, + {"label":"C", "x":3.75, "y":2}, + {"label":"V", "x":4.75, "y":2}, + {"label":"B", "x":5.75, "y":2}, + {"label":"N", "x":6.75, "y":2}, + {"label":"M", "x":7.75, "y":2}, + {"label":",<", "x":8.75, "y":2}, + {"label":".>", "x":9.75, "y":2}, + {"label":"/?", "x":10.75, "y":2}, + {"label":"Shift", "x":11.75, "y":2, "w":1.25}, + + {"label":"Ctrl", "x":0, "y":3, "w":1.5}, + {"label":"Alt", "x":1.5, "y":3, "w":1.5}, + {"label":"7uSpace", "x":3, "y":3, "w":7}, + {"label":"Alt", "x":10, "y":3, "w":1.5}, + {"label":"Ctrl", "x":11.5, "y":3, "w":1.5} + ] + }, + "LAYOUT_split_space": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"Q", "x":1, "y":0}, + {"label":"W", "x":2, "y":0}, + {"label":"E", "x":3, "y":0}, + {"label":"R", "x":4, "y":0}, + {"label":"T", "x":5, "y":0}, + {"label":"Y", "x":6, "y":0}, + {"label":"U", "x":7, "y":0}, + {"label":"I", "x":8, "y":0}, + {"label":"O", "x":9, "y":0}, + {"label":"P", "x":10, "y":0}, + {"label":"Bksp", "x":11, "y":0, "w":2}, + + {"label":"Tab", "x":0, "y":1, "w":1.25}, + {"label":"A", "x":1.25, "y":1}, + {"label":"S", "x":2.25, "y":1}, + {"label":"D", "x":3.25, "y":1}, + {"label":"F", "x":4.25, "y":1}, + {"label":"G", "x":5.25, "y":1}, + {"label":"H", "x":6.25, "y":1}, + {"label":"J", "x":7.25, "y":1}, + {"label":"K", "x":8.25, "y":1}, + {"label":"L", "x":9.25, "y":1}, + {"label":"'\"", "x":10.25, "y":1}, + {"label":"Enter", "x":11.25, "y":1, "w":1.75}, + + {"label":"Shift", "x":0, "y":2, "w":1.75}, + {"label":"Z", "x":1.75, "y":2}, + {"label":"X", "x":2.75, "y":2}, + {"label":"C", "x":3.75, "y":2}, + {"label":"V", "x":4.75, "y":2}, + {"label":"B", "x":5.75, "y":2}, + {"label":"N", "x":6.75, "y":2}, + {"label":"M", "x":7.75, "y":2}, + {"label":",<", "x":8.75, "y":2}, + {"label":".>", "x":9.75, "y":2}, + {"label":"/?", "x":10.75, "y":2}, + {"label":"Shift", "x":11.75, "y":2, "w":1.25}, + + {"label":"Ctrl", "x":0, "y":3, "w":1.5}, + {"label":"Win", "x":1.5, "y":3}, + {"label":"Alt", "x":2.5, "y":3, "w":1.5}, + {"label":"Space", "x":4, "y":3, "w":2.25}, + {"label":"Fn", "x":6.25, "y":3, "w":2.75}, + {"label":"Alt", "x":9, "y":3, "w":1.5}, + {"label":"Win", "x":10.5, "y":3}, + {"label":"Ctrl", "x":11.5, "y":3, "w":1.5} + ] + }, + "LAYOUT_split_space_split_bs": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"Q", "x":1, "y":0}, + {"label":"W", "x":2, "y":0}, + {"label":"E", "x":3, "y":0}, + {"label":"R", "x":4, "y":0}, + {"label":"T", "x":5, "y":0}, + {"label":"Y", "x":6, "y":0}, + {"label":"U", "x":7, "y":0}, + {"label":"I", "x":8, "y":0}, + {"label":"O", "x":9, "y":0}, + {"label":"P", "x":10, "y":0}, + {"label":"[{", "x":11, "y":0}, + {"label":"]}", "x":12, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.25}, + {"label":"A", "x":1.25, "y":1}, + {"label":"S", "x":2.25, "y":1}, + {"label":"D", "x":3.25, "y":1}, + {"label":"F", "x":4.25, "y":1}, + {"label":"G", "x":5.25, "y":1}, + {"label":"H", "x":6.25, "y":1}, + {"label":"J", "x":7.25, "y":1}, + {"label":"K", "x":8.25, "y":1}, + {"label":"L", "x":9.25, "y":1}, + {"label":"'\"", "x":10.25, "y":1}, + {"label":"Enter", "x":11.25, "y":1, "w":1.75}, + + {"label":"Shift", "x":0, "y":2, "w":1.75}, + {"label":"Z", "x":1.75, "y":2}, + {"label":"X", "x":2.75, "y":2}, + {"label":"C", "x":3.75, "y":2}, + {"label":"V", "x":4.75, "y":2}, + {"label":"B", "x":5.75, "y":2}, + {"label":"N", "x":6.75, "y":2}, + {"label":"M", "x":7.75, "y":2}, + {"label":",<", "x":8.75, "y":2}, + {"label":".>", "x":9.75, "y":2}, + {"label":"/?", "x":10.75, "y":2}, + {"label":"Shift", "x":11.75, "y":2, "w":1.25}, + + {"label":"Ctrl", "x":0, "y":3, "w":1.5}, + {"label":"Win", "x":1.5, "y":3}, + {"label":"Alt", "x":2.5, "y":3, "w":1.5}, + {"label":"Space", "x":4, "y":3, "w":2.25}, + {"label":"Fn", "x":6.25, "y":3, "w":2.75}, + {"label":"Alt", "x":9, "y":3, "w":1.5}, + {"label":"Win", "x":10.5, "y":3}, + {"label":"Ctrl", "x":11.5, "y":3, "w":1.5} + ] + } + } +} diff --git a/keyboards/dyz/dyz40/keymaps/default/keymap.c b/keyboards/dyz/dyz40/keymaps/default/keymap.c new file mode 100644 index 000000000000..0c0c98470267 --- /dev/null +++ b/keyboards/dyz/dyz40/keymaps/default/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2021 dayatz + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _FN, + _FN2 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_all( /* Base */ + KC_ESC, 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_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN), MO(_FN2), KC_RALT, KC_RWIN, KC_SCLN + ), + [_FN] = LAYOUT_all( + KC_CAPS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [_FN2] = 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, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/dyz/dyz40/keymaps/via/keymap.c b/keyboards/dyz/dyz40/keymaps/via/keymap.c new file mode 100644 index 000000000000..0c0c98470267 --- /dev/null +++ b/keyboards/dyz/dyz40/keymaps/via/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2021 dayatz + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _FN, + _FN2 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_all( /* Base */ + KC_ESC, 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_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN), MO(_FN2), KC_RALT, KC_RWIN, KC_SCLN + ), + [_FN] = LAYOUT_all( + KC_CAPS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [_FN2] = 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, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/dyz/dyz40/keymaps/via/rules.mk b/keyboards/dyz/dyz40/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/dyz/dyz40/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/dyz/dyz40/readme.md b/keyboards/dyz/dyz40/readme.md new file mode 100644 index 000000000000..f73c4ef46c42 --- /dev/null +++ b/keyboards/dyz/dyz40/readme.md @@ -0,0 +1,27 @@ +# dyz40 + +![pcb](https://i.imgur.com/XFYzF94h.jpg) + +40% 13u hotswap with multiple layouts for bottom row + +- Keyboard Maintainer: [dayatz](https://github.com/dayatz) +- Hardware Supported: ATMega32u4 +- Hardware Availability: Local Indonesia GB. + +Make example for this keyboard (after setting up your build environment): + + make dyz/dyz40:default + +Flashing example for this keyboard: + + make dyz/dyz40:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +- **Bootmagic reset**: Hold the `Esc` key while plugging in the USB cable +- **Physical reset button**: Briefly short the pins under the Enter key +- **Keycode in layout**: Press the key mapped to `RESET` if it is available diff --git a/keyboards/dyz/dyz40/rules.mk b/keyboards/dyz/dyz40/rules.mk new file mode 100644 index 000000000000..eea7ef17f16e --- /dev/null +++ b/keyboards/dyz/dyz40/rules.mk @@ -0,0 +1,20 @@ +# 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 +# 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 +ENCODER_ENABLE = yes diff --git a/keyboards/dyz/dyz60/config.h b/keyboards/dyz/dyz60/config.h new file mode 100644 index 000000000000..a40d2de47eab --- /dev/null +++ b/keyboards/dyz/dyz60/config.h @@ -0,0 +1,39 @@ +/* +Copyright 2021 dayatz + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define MANUFACTURER dyz +#define PRODUCT dyz60 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* Bootmagic Lite key configuration */ +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 + +#define LED_CAPS_LOCK_PIN F1 + +#define TAP_CODE_DELAY 10 // Need this delay for some keys like VOLD/VOLU to work +#define ENCODERS_PAD_A { D0 } +#define ENCODERS_PAD_B { D1 } + +#define DYNAMIC_KEYMAP_LAYER_COUNT 3 diff --git a/keyboards/dyz/dyz60/dyz60.c b/keyboards/dyz/dyz60/dyz60.c new file mode 100644 index 000000000000..b5a260621055 --- /dev/null +++ b/keyboards/dyz/dyz60/dyz60.c @@ -0,0 +1,16 @@ +/* Copyright 2021 dayatz + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "dyz60.h" diff --git a/keyboards/dyz/dyz60/dyz60.h b/keyboards/dyz/dyz60/dyz60.h new file mode 100644 index 000000000000..f933c243e5a8 --- /dev/null +++ b/keyboards/dyz/dyz60/dyz60.h @@ -0,0 +1,106 @@ +/* Copyright 2021 dayatz + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" +#define KNO KC_NO + +/* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───────┐ + * │00 │01 │02 │03 │04 │05 │45 │06 │07 │08 │09 │0A │0B │0C │0D │ │0C │ 2u Backspace + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ └─┬─────┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │ │ │ + * 2.25u ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ┌──┴┐2D │ ISO Enter + * LShift │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │ │2C │ │ + * ┌────────┐ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌─┴───┴────┤ + * │30 │ │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │ │3C │ 2.75u RShift + * └────────┘ ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ └──────────┘ + * │40 │41 │42 │46 │4A │4B │4C │4D │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ + * ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐ + * │40 │41 │42 │46 │4B │4C │4D │ Tsangan + * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ + */ + +#define LAYOUT_all( \ + K00, K01, K02, K03, K04, K05, K45, 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, 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, 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, KNO, KNO, K45, K46, KNO, KNO, KNO, K4A, K4B, K4C, K4D } \ +} + +#define LAYOUT_60_ansi( \ + K00, K01, K02, K03, K04, K05, K45, K06, K07, K08, K09, K0A, K0B, K0C, \ + 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, 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, KNO }, \ + { 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, KNO }, \ + { K30, KNO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KNO }, \ + { K40, K41, K42, KNO, KNO, K45, K46, KNO, KNO, KNO, K4A, K4B, K4C, K4D } \ +} + +#define LAYOUT_60_ansi_split_bs_rshift( \ + K00, K01, K02, K03, K04, K05, K45, 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, 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 }, \ + { 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, KNO }, \ + { K30, KNO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \ + { K40, K41, K42, KNO, KNO, K45, K46, KNO, KNO, KNO, K4A, K4B, K4C, K4D } \ +} + +#define LAYOUT_60_iso( \ + K00, K01, K02, K03, K04, K05, K45, 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, K2D, \ + K30, K31, 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, KNO }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KNO }, \ + { 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, KNO }, \ + { K40, K41, K42, KNO, KNO, K45, K46, KNO, KNO, KNO, K4A, K4B, K4C, K4D } \ +} + +#define LAYOUT_60_iso_split_bs_rshift( \ + K00, K01, K02, K03, K04, K05, K45, 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, K3C, 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, KNO }, \ + { 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, KNO, KNO, K45, K46, KNO, KNO, KNO, K4A, K4B, K4C, K4D } \ +} diff --git a/keyboards/dyz/dyz60/info.json b/keyboards/dyz/dyz60/info.json new file mode 100644 index 000000000000..24ff25755418 --- /dev/null +++ b/keyboards/dyz/dyz60/info.json @@ -0,0 +1,382 @@ +{ + "keyboard_name": "dyz60", + "url": "https://github.com/dayatz/mechanical-keyboards/tree/master/dyz60", + "maintainer": "dayatz", + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["F6", "F7", "B3", "B2", "B1", "D2", "C7", "C6", "B6", "B5", "B4", "D7", "D6", "D4"], + "rows": ["B0", "E6", "F0", "F5", "F4"] + }, + "rgblight": { + "led_count": 16, + "pin": "B7", + "hue_steps": 10, + "saturation_steps": 10, + "brightness_steps": 10, + "animations": { + "all": true + } + }, + "usb": { + "vid": "0xD772", + "pid": "0x000A", + "device_ver": "0x0001" + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2@", "x":2, "y":0}, + {"label":"3#", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":7, "y":0}, + {"label":"8*", "x":8, "y":0}, + {"label":"9(", "x":9, "y":0}, + {"label":"0)", "x":10, "y":0}, + {"label":"-_", "x":11, "y":0}, + {"label":"=+", "x":12, "y":0}, + {"label":"`~", "x":13, "y":0}, + {"label":"\\|", "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":"#~", "x":12.75, "y":2}, + {"label":"Enter", "x":13.75, "y":2, "w":1.25}, + + {"label":"Shift", "x":0, "y":3, "w":1.25}, + {"label":"\\|", "x":1.25, "y":3}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",<", "x":9.25, "y":3}, + {"label":".>", "x":10.25, "y":3}, + {"label":"/?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"Fn", "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}, + {"label":"Space", "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} + ] + }, + "LAYOUT_60_ansi": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2@", "x":2, "y":0}, + {"label":"3#", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":7, "y":0}, + {"label":"8*", "x":8, "y":0}, + {"label":"9(", "x":9, "y":0}, + {"label":"0)", "x":10, "y":0}, + {"label":"-_", "x":11, "y":0}, + {"label":"=+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + + {"label":"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":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",<", "x":9.25, "y":3}, + {"label":".>", "x":10.25, "y":3}, + {"label":"/?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":2.75}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"Win", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space", "x":3.75, "y":4, "w":6.25}, + {"label":"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} + ] + }, + "LAYOUT_60_ansi_split_bs_rshift": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2@", "x":2, "y":0}, + {"label":"3#", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":7, "y":0}, + {"label":"8*", "x":8, "y":0}, + {"label":"9(", "x":9, "y":0}, + {"label":"0)", "x":10, "y":0}, + {"label":"-_", "x":11, "y":0}, + {"label":"=+", "x":12, "y":0}, + {"label":"`~", "x":13, "y":0}, + {"label":"\\|", "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":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",<", "x":9.25, "y":3}, + {"label":".>", "x":10.25, "y":3}, + {"label":"/?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"Fn", "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}, + {"label":"Space", "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} + ] + }, + "LAYOUT_60_iso": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2@", "x":2, "y":0}, + {"label":"3#", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":7, "y":0}, + {"label":"8*", "x":8, "y":0}, + {"label":"9(", "x":9, "y":0}, + {"label":"0)", "x":10, "y":0}, + {"label":"-_", "x":11, "y":0}, + {"label":"=+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + + {"label":"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":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";:", "x":10.75, "y":2}, + {"label":"'\"", "x":11.75, "y":2}, + {"label":"#~", "x":12.75, "y":2}, + {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, + + {"label":"Shift", "x":0, "y":3, "w":1.25}, + {"label":"\\|", "x":1.25, "y":3}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",<", "x":9.25, "y":3}, + {"label":".>", "x":10.25, "y":3}, + {"label":"/?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":2.75}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"Win", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space", "x":3.75, "y":4, "w":6.25}, + {"label":"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} + ] + }, + "LAYOUT_60_iso_split_bs_rshift": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2@", "x":2, "y":0}, + {"label":"3#", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":7, "y":0}, + {"label":"8*", "x":8, "y":0}, + {"label":"9(", "x":9, "y":0}, + {"label":"0)", "x":10, "y":0}, + {"label":"-_", "x":11, "y":0}, + {"label":"=+", "x":12, "y":0}, + {"label":"`~", "x":13, "y":0}, + {"label":"\\|", "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":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";:", "x":10.75, "y":2}, + {"label":"'\"", "x":11.75, "y":2}, + {"label":"#~", "x":12.75, "y":2}, + {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, + + {"label":"Shift", "x":0, "y":3, "w":1.25}, + {"label":"\\|", "x":1.25, "y":3}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",<", "x":9.25, "y":3}, + {"label":".>", "x":10.25, "y":3}, + {"label":"/?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"Fn", "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}, + {"label":"Space", "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/dyz/dyz60/keymaps/default/keymap.c b/keyboards/dyz/dyz60/keymaps/default/keymap.c new file mode 100644 index 000000000000..4bebaf6b101c --- /dev/null +++ b/keyboards/dyz/dyz60/keymaps/default/keymap.c @@ -0,0 +1,46 @@ +/* Copyright 2021 dayatz + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _FN, + _FN2 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_all( /* Base */ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_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_RSFT, MO(_FN), + KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, KC_MENU, KC_RCTL + ), + [_FN] = LAYOUT_all( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_RGHT, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DOWN, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + [_FN2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/dyz/dyz60/keymaps/via/keymap.c b/keyboards/dyz/dyz60/keymaps/via/keymap.c new file mode 100644 index 000000000000..4bebaf6b101c --- /dev/null +++ b/keyboards/dyz/dyz60/keymaps/via/keymap.c @@ -0,0 +1,46 @@ +/* Copyright 2021 dayatz + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _FN, + _FN2 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_all( /* Base */ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_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_RSFT, MO(_FN), + KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, KC_MENU, KC_RCTL + ), + [_FN] = LAYOUT_all( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_RGHT, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DOWN, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + [_FN2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/dyz/dyz60/keymaps/via/rules.mk b/keyboards/dyz/dyz60/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/dyz/dyz60/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/dyz/dyz60/readme.md b/keyboards/dyz/dyz60/readme.md new file mode 100644 index 000000000000..5e436fdb28a3 --- /dev/null +++ b/keyboards/dyz/dyz60/readme.md @@ -0,0 +1,19 @@ +# dyz60 + +![dyz60 pcb](https://i.imgur.com/l9z5KuJh.jpg) + +60% layout has flexcut with multiple layout and mounting support. + +* Keyboard Maintainer: [dayatz](https://github.com/dayatz) +* Hardware Supported: dyz60, ATmega32U4 +* Hardware Availability: Local Indonesia GB. + +Make example for this keyboard (after setting up your build environment): + + make dyz/dyz60:default + +Flashing example for this keyboard: + + make dyz/dyz60:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/dyz/dyz60/rules.mk b/keyboards/dyz/dyz60/rules.mk new file mode 100644 index 000000000000..eea7ef17f16e --- /dev/null +++ b/keyboards/dyz/dyz60/rules.mk @@ -0,0 +1,20 @@ +# 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 +# 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 +ENCODER_ENABLE = yes diff --git a/keyboards/dyz/dyz_tkl/config.h b/keyboards/dyz/dyz_tkl/config.h new file mode 100644 index 000000000000..c872680e6412 --- /dev/null +++ b/keyboards/dyz/dyz_tkl/config.h @@ -0,0 +1,37 @@ +/* +Copyright 2021 dayatz + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define MANUFACTURER dyz +#define PRODUCT dyz_TKL + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* Bootmagic Lite key configuration */ +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 + +#define LED_CAPS_LOCK_PIN D2 + +#define TAP_CODE_DELAY 10 // Need this delay for some keys like VOLD/VOLU to work + +#define DYNAMIC_KEYMAP_LAYER_COUNT 3 diff --git a/keyboards/dyz/dyz_tkl/dyz_tkl.c b/keyboards/dyz/dyz_tkl/dyz_tkl.c new file mode 100644 index 000000000000..cdc23b866431 --- /dev/null +++ b/keyboards/dyz/dyz_tkl/dyz_tkl.c @@ -0,0 +1,16 @@ +/* Copyright 2021 dayatz + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "dyz_tkl.h" diff --git a/keyboards/dyz/dyz_tkl/dyz_tkl.h b/keyboards/dyz/dyz_tkl/dyz_tkl.h new file mode 100644 index 000000000000..e6f140fe7e2e --- /dev/null +++ b/keyboards/dyz/dyz_tkl/dyz_tkl.h @@ -0,0 +1,152 @@ +/* Copyright 2021 dayatz + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" +#define _X_ KC_NO + +/* + * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐┌───┬───┬───┐ + * │00 ││10 │01 │11 │02 ││12 │03 │13 │04 ││14 │05 │06 │16 ││07 ││17 │08 │18 │ F13 Function Row + * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘└───┴───┴───┘ + * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐┌───┬───┬───┐ + * │00 │ │01 │11 │02 │12 │ │03 │13 │04 │14 │ │05 │06 │16 │07 ││17 │08 │18 │ + * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘└───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐┌───┬───┬───┐ ┌───────┐ + * │20 │30 │21 │31 │22 │32 │23 │33 │24 │34 │25 │35 │26 │36 │27 ││37 │28 │38 │ │36 │ 2u Backspace + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤├───┼───┼───┤ └─┬─────┤ + * │40 │50 │41 │51 │42 │52 │53 │44 │54 │45 │55 │46 │56 │47 ││57 │48 │58 │ │ │ + * 2.25u ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤└───┴───┴───┘ ┌──┴┐67 │ ISO Enter + * LShift │60 │70 │61 │71 │62 │72 │73 │64 │74 │65 │75 │66 │76 │ │76 │ │ + * ┌────────┐ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ ┌─┴───┴────┤ + * │80 │ │80 │90 │81 │91 │82 │92 │93 │84 │94 │85 │95 │86 │96 │87 │ │88 │ │96 │ 2.75u RShift + * └────────┘ ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤┌───┼───┼───┐ └──────────┘ + * │A0 │B0 │A1 │B3 │B5 │A6 │B6 │A7 ││B7 │A8 │B8 │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘└───┴───┴───┘ + * ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐ + * │A0 │B0 │A1 │B3 │A6 │B6 │A7 │ Tsangan + * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ + */ + +#define LAYOUT_all( \ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K06, K16, K07, K17, K08, K18, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K27, K37, K28, K38, \ + K40, K50, K41, K51, K42, K52, K53, K44, K54, K45, K55, K46, K56, K47, K57, K48, K58, \ + K60, K70, K61, K71, K62, K72, K73, K64, K74, K65, K75, K66, K76, K67, \ + K80, K90, K81, K91, K82, K92, K93, K84, K94, K85, K95, K86, K96, K87, K88, \ + KA0, KB0, KA1, KB3, KB5, KA6, KB6, KA7, KB7, KA8, KB8 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08 }, \ + { K10, K11, K12, K13, K14, _X_, K16, K17, K18 }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28 }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38 }, \ + { K40, K41, K42, _X_, K44, K45, K46, K47, K48 }, \ + { K50, K51, K52, K53, K54, K55, K56, K57, K58 }, \ + { K60, K61, K62, _X_, K64, K65, K66, K67, _X_ }, \ + { K70, K71, K72, K73, K74, K75, K76, _X_, _X_ }, \ + { K80, K81, K82, _X_, K84, K85, K86, K87, K88 }, \ + { K90, K91, K92, K93, K94, K95, K96, _X_, _X_ }, \ + { KA0, KA1, _X_, _X_, _X_, _X_, KA6, KA7, KA8 }, \ + { KB0, _X_, _X_, KB3, _X_, KB5, KB6, KB7, KB8 } \ +} + +#define LAYOUT_tkl_ansi( \ + K00, K01, K11, K02, K12, K03, K13, K04, K14, K05, K06, K16, K07, K17, K08, K18, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K37, K28, K38, \ + K40, K50, K41, K51, K42, K52, K53, K44, K54, K45, K55, K46, K56, K47, K57, K48, K58, \ + K60, K70, K61, K71, K62, K72, K73, K64, K74, K65, K75, K66, K76, \ + K80, K81, K91, K82, K92, K93, K84, K94, K85, K95, K86, K96, K88, \ + KA0, KB0, KA1, KB3, KB5, KA6, KB6, KA7, KB7, KA8, KB8 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08 }, \ + { _X_, K11, K12, K13, K14, _X_, K16, K17, K18 }, \ + { K20, K21, K22, K23, K24, K25, K26, _X_, K28 }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38 }, \ + { K40, K41, K42, _X_, K44, K45, K46, K47, K48 }, \ + { K50, K51, K52, K53, K54, K55, K56, K57, K58 }, \ + { K60, K61, K62, _X_, K64, K65, K66, _X_, _X_ }, \ + { K70, K71, K72, K73, K74, K75, K76, _X_, _X_ }, \ + { K80, K81, K82, _X_, K84, K85, K86, _X_, K88 }, \ + { _X_, K91, K92, K93, K94, K95, K96, _X_, _X_ }, \ + { KA0, KA1, _X_, _X_, _X_, _X_, KA6, KA7, KA8 }, \ + { KB0, _X_, _X_, KB3, _X_, KB5, KB6, KB7, KB8 } \ +} + +#define LAYOUT_tkl_f13_ansi( \ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K06, K16, K07, K17, K08, K18, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K37, K28, K38, \ + K40, K50, K41, K51, K42, K52, K53, K44, K54, K45, K55, K46, K56, K47, K57, K48, K58, \ + K60, K70, K61, K71, K62, K72, K73, K64, K74, K65, K75, K66, K76, \ + K80, K81, K91, K82, K92, K93, K84, K94, K85, K95, K86, K96, K88, \ + KA0, KB0, KA1, KB3, KB5, KA6, KB6, KA7, KB7, KA8, KB8 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08 }, \ + { K10, K11, K12, K13, K14, _X_, K16, K17, K18 }, \ + { K20, K21, K22, K23, K24, K25, K26, _X_, K28 }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38 }, \ + { K40, K41, K42, _X_, K44, K45, K46, K47, K48 }, \ + { K50, K51, K52, K53, K54, K55, K56, K57, K58 }, \ + { K60, K61, K62, _X_, K64, K65, K66, _X_, _X_ }, \ + { K70, K71, K72, K73, K74, K75, K76, _X_, _X_ }, \ + { K80, K81, K82, _X_, K84, K85, K86, _X_, K88 }, \ + { _X_, K91, K92, K93, K94, K95, K96, _X_, _X_ }, \ + { KA0, KA1, _X_, _X_, _X_, _X_, KA6, KA7, KA8 }, \ + { KB0, _X_, _X_, KB3, _X_, KB5, KB6, KB7, KB8 } \ +} + +#define LAYOUT_tkl_iso( \ + K00, K01, K11, K02, K12, K03, K13, K04, K14, K05, K06, K16, K07, K17, K08, K18, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K37, K28, K38, \ + K40, K50, K41, K51, K42, K52, K53, K44, K54, K45, K55, K46, K56, K57, K48, K58, \ + K60, K70, K61, K71, K62, K72, K73, K64, K74, K65, K75, K66, K76, K67, \ + K80, K90, K81, K91, K82, K92, K93, K84, K94, K85, K95, K86, K96, K88, \ + KA0, KB0, KA1, KB3, KB5, KA6, KB6, KA7, KB7, KA8, KB8 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08 }, \ + { _X_, K11, K12, K13, K14, _X_, K16, K17, K18 }, \ + { K20, K21, K22, K23, K24, K25, K26, _X_, K28 }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38 }, \ + { K40, K41, K42, _X_, K44, K45, K46, _X_, K48 }, \ + { K50, K51, K52, K53, K54, K55, K56, K57, K58 }, \ + { K60, K61, K62, _X_, K64, K65, K66, K67, _X_ }, \ + { K70, K71, K72, K73, K74, K75, K76, _X_, _X_ }, \ + { K80, K81, K82, _X_, K84, K85, K86, _X_, K88 }, \ + { K90, K91, K92, K93, K94, K95, K96, _X_, _X_ }, \ + { KA0, KA1, _X_, _X_, _X_, _X_, KA6, KA7, KA8 }, \ + { KB0, _X_, _X_, KB3, _X_, KB5, KB6, KB7, KB8 } \ +} + +#define LAYOUT_tkl_f13_iso( \ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K06, K16, K07, K17, K08, K18, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K37, K28, K38, \ + K40, K50, K41, K51, K42, K52, K53, K44, K54, K45, K55, K46, K56, K57, K48, K58, \ + K60, K70, K61, K71, K62, K72, K73, K64, K74, K65, K75, K66, K76, K67, \ + K80, K90, K81, K91, K82, K92, K93, K84, K94, K85, K95, K86, K96, K88, \ + KA0, KB0, KA1, KB3, KB5, KA6, KB6, KA7, KB7, KA8, KB8 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08 }, \ + { K10, K11, K12, K13, K14, _X_, K16, K17, K18 }, \ + { K20, K21, K22, K23, K24, K25, K26, _X_, K28 }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38 }, \ + { K40, K41, K42, _X_, K44, K45, K46, _X_, K48 }, \ + { K50, K51, K52, K53, K54, K55, K56, K57, K58 }, \ + { K60, K61, K62, _X_, K64, K65, K66, K67, _X_ }, \ + { K70, K71, K72, K73, K74, K75, K76, _X_, _X_ }, \ + { K80, K81, K82, _X_, K84, K85, K86, _X_, K88 }, \ + { K90, K91, K92, K93, K94, K95, K96, _X_, _X_ }, \ + { KA0, KA1, _X_, _X_, _X_, _X_, KA6, KA7, KA8 }, \ + { KB0, _X_, _X_, KB3, _X_, KB5, KB6, KB7, KB8 } \ +} diff --git a/keyboards/dyz/dyz_tkl/info.json b/keyboards/dyz/dyz_tkl/info.json new file mode 100644 index 000000000000..8cba9c24e756 --- /dev/null +++ b/keyboards/dyz/dyz_tkl/info.json @@ -0,0 +1,513 @@ +{ + "keyboard_name": "dyz_TKL", + "url": "https://github.com/dayatz/mechanical-keyboards/tree/master/dyz_tkl", + "maintainer": "dayatz", + "diode_direction": "COL2ROW", + "matrix_pins": { + "rows": ["E6", "B0", "B3", "B1", "B7", "B2", "F1", "F0", "F5", "F4", "F7", "F6"], + "cols": ["C7", "C6", "B6", "B5", "B4", "D7", "D6", "D4", "D0"] + }, + "rgblight": { + "led_count": 25, + "pin": "D1", + "animations": { + "all": true + } + }, + "usb": { + "vid": "0xD772", + "pid": "0x000C", + "device_ver": "0x0001" + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":1.25, "y":0}, + {"label":"F2", "x":2.25, "y":0}, + {"label":"F3", "x":3.25, "y":0}, + {"label":"F4", "x":4.25, "y":0}, + {"label":"F5", "x":5.5, "y":0}, + {"label":"F6", "x":6.5, "y":0}, + {"label":"F7", "x":7.5, "y":0}, + {"label":"F8", "x":8.5, "y":0}, + {"label":"F9", "x":9.75, "y":0}, + {"label":"F10", "x":10.75, "y":0}, + {"label":"F11", "x":11.75, "y":0}, + {"label":"F12", "x":12.75, "y":0}, + {"label":"F13", "x":14, "y":0}, + {"label":"PrtSc", "x":15.25, "y":0}, + {"label":"Scroll Lock", "x":16.25, "y":0}, + {"label":"Pause", "x":17.25, "y":0}, + + {"label":"~", "x":0, "y":1.25}, + {"label":"!", "x":1, "y":1.25}, + {"label":"@", "x":2, "y":1.25}, + {"label":"#", "x":3, "y":1.25}, + {"label":"$", "x":4, "y":1.25}, + {"label":"%", "x":5, "y":1.25}, + {"label":"^", "x":6, "y":1.25}, + {"label":"&", "x":7, "y":1.25}, + {"label":"*", "x":8, "y":1.25}, + {"label":"(", "x":9, "y":1.25}, + {"label":")", "x":10, "y":1.25}, + {"label":"_", "x":11, "y":1.25}, + {"label":"+", "x":12, "y":1.25}, + {"label":"Backspace", "x":13, "y":1.25}, + {"label":"Backspace", "x":14, "y":1.25}, + {"label":"Insert", "x":15.25, "y":1.25}, + {"label":"Home", "x":16.25, "y":1.25}, + {"label":"PgUp", "x":17.25, "y":1.25}, + + {"label":"Tab", "x":0, "y":2.25, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.25}, + {"label":"W", "x":2.5, "y":2.25}, + {"label":"E", "x":3.5, "y":2.25}, + {"label":"R", "x":4.5, "y":2.25}, + {"label":"T", "x":5.5, "y":2.25}, + {"label":"Y", "x":6.5, "y":2.25}, + {"label":"U", "x":7.5, "y":2.25}, + {"label":"I", "x":8.5, "y":2.25}, + {"label":"O", "x":9.5, "y":2.25}, + {"label":"P", "x":10.5, "y":2.25}, + {"label":"{", "x":11.5, "y":2.25}, + {"label":"}", "x":12.5, "y":2.25}, + {"label":"|", "x":13.5, "y":2.25, "w":1.5}, + {"label":"Delete", "x":15.25, "y":2.25}, + {"label":"End", "x":16.25, "y":2.25}, + {"label":"PgDn", "x":17.25, "y":2.25}, + + {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, + {"label":"A", "x":1.75, "y":3.25}, + {"label":"S", "x":2.75, "y":3.25}, + {"label":"D", "x":3.75, "y":3.25}, + {"label":"F", "x":4.75, "y":3.25}, + {"label":"G", "x":5.75, "y":3.25}, + {"label":"H", "x":6.75, "y":3.25}, + {"label":"J", "x":7.75, "y":3.25}, + {"label":"K", "x":8.75, "y":3.25}, + {"label":"L", "x":9.75, "y":3.25}, + {"label":":", "x":10.75, "y":3.25}, + {"label":"\"", "x":11.75, "y":3.25}, + {"label":"~", "x":12.75, "y":3.25}, + {"label":"Enter", "x":13.75, "y":3.25, "w":1.25}, + + {"label":"Shift", "x":0, "y":4.25, "w":1.25}, + {"label":"|", "x":1.25, "y":4.25}, + {"label":"Z", "x":2.25, "y":4.25}, + {"label":"X", "x":3.25, "y":4.25}, + {"label":"C", "x":4.25, "y":4.25}, + {"label":"V", "x":5.25, "y":4.25}, + {"label":"B", "x":6.25, "y":4.25}, + {"label":"N", "x":7.25, "y":4.25}, + {"label":"M", "x":8.25, "y":4.25}, + {"label":"<", "x":9.25, "y":4.25}, + {"label":">", "x":10.25, "y":4.25}, + {"label":"?", "x":11.25, "y":4.25}, + {"label":"Shift", "x":12.25, "y":4.25, "w":1.75}, + {"label":"Shift", "x":14, "y":4.25}, + {"label":"\u2191", "x":16.25, "y":4.25}, + + {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, + {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, + {"x":3.75, "y":5.25, "w":6.25}, + {"label":"Alt", "x":10, "y":5.25, "w":1.25}, + {"label":"Win", "x":11.25, "y":5.25, "w":1.25}, + {"label":"Menu", "x":12.5, "y":5.25, "w":1.25}, + {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, + {"label":"\u2190", "x":15.25, "y":5.25}, + {"label":"\u2193", "x":16.25, "y":5.25}, + {"label":"\u2192", "x":17.25, "y":5.25} + ] + }, + "LAYOUT_tkl_ansi": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":2, "y":0}, + {"label":"F2", "x":3, "y":0}, + {"label":"F3", "x":4, "y":0}, + {"label":"F4", "x":5, "y":0}, + {"label":"F5", "x":6.5, "y":0}, + {"label":"F6", "x":7.5, "y":0}, + {"label":"F7", "x":8.5, "y":0}, + {"label":"F8", "x":9.5, "y":0}, + {"label":"F9", "x":11, "y":0}, + {"label":"F10", "x":12, "y":0}, + {"label":"F11", "x":13, "y":0}, + {"label":"F12", "x":14, "y":0}, + {"label":"PrtSc", "x":15.25, "y":0}, + {"label":"Scroll Lock", "x":16.25, "y":0}, + {"label":"Pause", "x":17.25, "y":0}, + + {"label":"~", "x":0, "y":1.25}, + {"label":"!", "x":1, "y":1.25}, + {"label":"@", "x":2, "y":1.25}, + {"label":"#", "x":3, "y":1.25}, + {"label":"$", "x":4, "y":1.25}, + {"label":"%", "x":5, "y":1.25}, + {"label":"^", "x":6, "y":1.25}, + {"label":"&", "x":7, "y":1.25}, + {"label":"*", "x":8, "y":1.25}, + {"label":"(", "x":9, "y":1.25}, + {"label":")", "x":10, "y":1.25}, + {"label":"_", "x":11, "y":1.25}, + {"label":"+", "x":12, "y":1.25}, + {"label":"Backspace", "x":13, "y":1.25, "w":2}, + {"label":"Insert", "x":15.25, "y":1.25}, + {"label":"Home", "x":16.25, "y":1.25}, + {"label":"PgUp", "x":17.25, "y":1.25}, + + {"label":"Tab", "x":0, "y":2.25, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.25}, + {"label":"W", "x":2.5, "y":2.25}, + {"label":"E", "x":3.5, "y":2.25}, + {"label":"R", "x":4.5, "y":2.25}, + {"label":"T", "x":5.5, "y":2.25}, + {"label":"Y", "x":6.5, "y":2.25}, + {"label":"U", "x":7.5, "y":2.25}, + {"label":"I", "x":8.5, "y":2.25}, + {"label":"O", "x":9.5, "y":2.25}, + {"label":"P", "x":10.5, "y":2.25}, + {"label":"{", "x":11.5, "y":2.25}, + {"label":"}", "x":12.5, "y":2.25}, + {"label":"|", "x":13.5, "y":2.25, "w":1.5}, + {"label":"Delete", "x":15.25, "y":2.25}, + {"label":"End", "x":16.25, "y":2.25}, + {"label":"PgDn", "x":17.25, "y":2.25}, + + {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, + {"label":"A", "x":1.75, "y":3.25}, + {"label":"S", "x":2.75, "y":3.25}, + {"label":"D", "x":3.75, "y":3.25}, + {"label":"F", "x":4.75, "y":3.25}, + {"label":"G", "x":5.75, "y":3.25}, + {"label":"H", "x":6.75, "y":3.25}, + {"label":"J", "x":7.75, "y":3.25}, + {"label":"K", "x":8.75, "y":3.25}, + {"label":"L", "x":9.75, "y":3.25}, + {"label":":", "x":10.75, "y":3.25}, + {"label":"\"", "x":11.75, "y":3.25}, + {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, + + {"label":"Shift", "x":0, "y":4.25, "w":2.25}, + {"label":"Z", "x":2.25, "y":4.25}, + {"label":"X", "x":3.25, "y":4.25}, + {"label":"C", "x":4.25, "y":4.25}, + {"label":"V", "x":5.25, "y":4.25}, + {"label":"B", "x":6.25, "y":4.25}, + {"label":"N", "x":7.25, "y":4.25}, + {"label":"M", "x":8.25, "y":4.25}, + {"label":"<", "x":9.25, "y":4.25}, + {"label":">", "x":10.25, "y":4.25}, + {"label":"?", "x":11.25, "y":4.25}, + {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, + {"label":"\u2191", "x":16.25, "y":4.25}, + + {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, + {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, + {"x":3.75, "y":5.25, "w":6.25}, + {"label":"Alt", "x":10, "y":5.25, "w":1.25}, + {"label":"Win", "x":11.25, "y":5.25, "w":1.25}, + {"label":"Menu", "x":12.5, "y":5.25, "w":1.25}, + {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, + {"label":"\u2190", "x":15.25, "y":5.25}, + {"label":"\u2193", "x":16.25, "y":5.25}, + {"label":"\u2192", "x":17.25, "y":5.25} + ] + }, + "LAYOUT_tkl_f13_ansi": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":1.25, "y":0}, + {"label":"F2", "x":2.25, "y":0}, + {"label":"F3", "x":3.25, "y":0}, + {"label":"F4", "x":4.25, "y":0}, + {"label":"F5", "x":5.5, "y":0}, + {"label":"F6", "x":6.5, "y":0}, + {"label":"F7", "x":7.5, "y":0}, + {"label":"F8", "x":8.5, "y":0}, + {"label":"F9", "x":9.75, "y":0}, + {"label":"F10", "x":10.75, "y":0}, + {"label":"F11", "x":11.75, "y":0}, + {"label":"F12", "x":12.75, "y":0}, + {"label":"F13", "x":14, "y":0}, + {"label":"PrtSc", "x":15.25, "y":0}, + {"label":"Scroll Lock", "x":16.25, "y":0}, + {"label":"Pause", "x":17.25, "y":0}, + + {"label":"~", "x":0, "y":1.25}, + {"label":"!", "x":1, "y":1.25}, + {"label":"@", "x":2, "y":1.25}, + {"label":"#", "x":3, "y":1.25}, + {"label":"$", "x":4, "y":1.25}, + {"label":"%", "x":5, "y":1.25}, + {"label":"^", "x":6, "y":1.25}, + {"label":"&", "x":7, "y":1.25}, + {"label":"*", "x":8, "y":1.25}, + {"label":"(", "x":9, "y":1.25}, + {"label":")", "x":10, "y":1.25}, + {"label":"_", "x":11, "y":1.25}, + {"label":"+", "x":12, "y":1.25}, + {"label":"Backspace", "x":13, "y":1.25, "w":2}, + {"label":"Insert", "x":15.25, "y":1.25}, + {"label":"Home", "x":16.25, "y":1.25}, + {"label":"PgUp", "x":17.25, "y":1.25}, + + {"label":"Tab", "x":0, "y":2.25, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.25}, + {"label":"W", "x":2.5, "y":2.25}, + {"label":"E", "x":3.5, "y":2.25}, + {"label":"R", "x":4.5, "y":2.25}, + {"label":"T", "x":5.5, "y":2.25}, + {"label":"Y", "x":6.5, "y":2.25}, + {"label":"U", "x":7.5, "y":2.25}, + {"label":"I", "x":8.5, "y":2.25}, + {"label":"O", "x":9.5, "y":2.25}, + {"label":"P", "x":10.5, "y":2.25}, + {"label":"{", "x":11.5, "y":2.25}, + {"label":"}", "x":12.5, "y":2.25}, + {"label":"|", "x":13.5, "y":2.25, "w":1.5}, + {"label":"Delete", "x":15.25, "y":2.25}, + {"label":"End", "x":16.25, "y":2.25}, + {"label":"PgDn", "x":17.25, "y":2.25}, + + {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, + {"label":"A", "x":1.75, "y":3.25}, + {"label":"S", "x":2.75, "y":3.25}, + {"label":"D", "x":3.75, "y":3.25}, + {"label":"F", "x":4.75, "y":3.25}, + {"label":"G", "x":5.75, "y":3.25}, + {"label":"H", "x":6.75, "y":3.25}, + {"label":"J", "x":7.75, "y":3.25}, + {"label":"K", "x":8.75, "y":3.25}, + {"label":"L", "x":9.75, "y":3.25}, + {"label":":", "x":10.75, "y":3.25}, + {"label":"\"", "x":11.75, "y":3.25}, + {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, + + {"label":"Shift", "x":0, "y":4.25, "w":2.25}, + {"label":"Z", "x":2.25, "y":4.25}, + {"label":"X", "x":3.25, "y":4.25}, + {"label":"C", "x":4.25, "y":4.25}, + {"label":"V", "x":5.25, "y":4.25}, + {"label":"B", "x":6.25, "y":4.25}, + {"label":"N", "x":7.25, "y":4.25}, + {"label":"M", "x":8.25, "y":4.25}, + {"label":"<", "x":9.25, "y":4.25}, + {"label":">", "x":10.25, "y":4.25}, + {"label":"?", "x":11.25, "y":4.25}, + {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, + {"label":"\u2191", "x":16.25, "y":4.25}, + + {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, + {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, + {"x":3.75, "y":5.25, "w":6.25}, + {"label":"Alt", "x":10, "y":5.25, "w":1.25}, + {"label":"Win", "x":11.25, "y":5.25, "w":1.25}, + {"label":"Menu", "x":12.5, "y":5.25, "w":1.25}, + {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, + {"label":"\u2190", "x":15.25, "y":5.25}, + {"label":"\u2193", "x":16.25, "y":5.25}, + {"label":"\u2192", "x":17.25, "y":5.25} + ] + }, + "LAYOUT_tkl_iso": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":2, "y":0}, + {"label":"F2", "x":3, "y":0}, + {"label":"F3", "x":4, "y":0}, + {"label":"F4", "x":5, "y":0}, + {"label":"F5", "x":6.5, "y":0}, + {"label":"F6", "x":7.5, "y":0}, + {"label":"F7", "x":8.5, "y":0}, + {"label":"F8", "x":9.5, "y":0}, + {"label":"F9", "x":11, "y":0}, + {"label":"F10", "x":12, "y":0}, + {"label":"F11", "x":13, "y":0}, + {"label":"F12", "x":14, "y":0}, + {"label":"PrtSc", "x":15.25, "y":0}, + {"label":"Scroll Lock", "x":16.25, "y":0}, + {"label":"Pause", "x":17.25, "y":0}, + + {"label":"~", "x":0, "y":1.25}, + {"label":"!", "x":1, "y":1.25}, + {"label":"@", "x":2, "y":1.25}, + {"label":"#", "x":3, "y":1.25}, + {"label":"$", "x":4, "y":1.25}, + {"label":"%", "x":5, "y":1.25}, + {"label":"^", "x":6, "y":1.25}, + {"label":"&", "x":7, "y":1.25}, + {"label":"*", "x":8, "y":1.25}, + {"label":"(", "x":9, "y":1.25}, + {"label":")", "x":10, "y":1.25}, + {"label":"_", "x":11, "y":1.25}, + {"label":"+", "x":12, "y":1.25}, + {"label":"Backspace", "x":13, "y":1.25, "w":2}, + {"label":"Insert", "x":15.25, "y":1.25}, + {"label":"Home", "x":16.25, "y":1.25}, + {"label":"PgUp", "x":17.25, "y":1.25}, + + {"label":"Tab", "x":0, "y":2.25, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.25}, + {"label":"W", "x":2.5, "y":2.25}, + {"label":"E", "x":3.5, "y":2.25}, + {"label":"R", "x":4.5, "y":2.25}, + {"label":"T", "x":5.5, "y":2.25}, + {"label":"Y", "x":6.5, "y":2.25}, + {"label":"U", "x":7.5, "y":2.25}, + {"label":"I", "x":8.5, "y":2.25}, + {"label":"O", "x":9.5, "y":2.25}, + {"label":"P", "x":10.5, "y":2.25}, + {"label":"{", "x":11.5, "y":2.25}, + {"label":"}", "x":12.5, "y":2.25}, + {"label":"Delete", "x":15.25, "y":2.25}, + {"label":"End", "x":16.25, "y":2.25}, + {"label":"PgDn", "x":17.25, "y":2.25}, + + {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, + {"label":"A", "x":1.75, "y":3.25}, + {"label":"S", "x":2.75, "y":3.25}, + {"label":"D", "x":3.75, "y":3.25}, + {"label":"F", "x":4.75, "y":3.25}, + {"label":"G", "x":5.75, "y":3.25}, + {"label":"H", "x":6.75, "y":3.25}, + {"label":"J", "x":7.75, "y":3.25}, + {"label":"K", "x":8.75, "y":3.25}, + {"label":"L", "x":9.75, "y":3.25}, + {"label":":", "x":10.75, "y":3.25}, + {"label":"\"", "x":11.75, "y":3.25}, + {"label":"~", "x":12.75, "y":3.25}, + {"label":"Enter", "x":13.75, "y":2.25, "w":1.25, "h":2}, + + {"label":"Shift", "x":0, "y":4.25, "w":1.25}, + {"label":"|", "x":1.25, "y":4.25}, + {"label":"Z", "x":2.25, "y":4.25}, + {"label":"X", "x":3.25, "y":4.25}, + {"label":"C", "x":4.25, "y":4.25}, + {"label":"V", "x":5.25, "y":4.25}, + {"label":"B", "x":6.25, "y":4.25}, + {"label":"N", "x":7.25, "y":4.25}, + {"label":"M", "x":8.25, "y":4.25}, + {"label":"<", "x":9.25, "y":4.25}, + {"label":">", "x":10.25, "y":4.25}, + {"label":"?", "x":11.25, "y":4.25}, + {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, + {"label":"\u2191", "x":16.25, "y":4.25}, + + {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, + {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, + {"x":3.75, "y":5.25, "w":6.25}, + {"label":"Alt", "x":10, "y":5.25, "w":1.25}, + {"label":"Win", "x":11.25, "y":5.25, "w":1.25}, + {"label":"Menu", "x":12.5, "y":5.25, "w":1.25}, + {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, + {"label":"\u2190", "x":15.25, "y":5.25}, + {"label":"\u2193", "x":16.25, "y":5.25}, + {"label":"\u2192", "x":17.25, "y":5.25} + ] + }, + "LAYOUT_tkl_f13_iso": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":1.25, "y":0}, + {"label":"F2", "x":2.25, "y":0}, + {"label":"F3", "x":3.25, "y":0}, + {"label":"F4", "x":4.25, "y":0}, + {"label":"F5", "x":5.5, "y":0}, + {"label":"F6", "x":6.5, "y":0}, + {"label":"F7", "x":7.5, "y":0}, + {"label":"F8", "x":8.5, "y":0}, + {"label":"F9", "x":9.75, "y":0}, + {"label":"F10", "x":10.75, "y":0}, + {"label":"F11", "x":11.75, "y":0}, + {"label":"F12", "x":12.75, "y":0}, + {"label":"F13", "x":14, "y":0}, + {"label":"PrtSc", "x":15.25, "y":0}, + {"label":"Scroll Lock", "x":16.25, "y":0}, + {"label":"Pause", "x":17.25, "y":0}, + + {"label":"~", "x":0, "y":1.25}, + {"label":"!", "x":1, "y":1.25}, + {"label":"@", "x":2, "y":1.25}, + {"label":"#", "x":3, "y":1.25}, + {"label":"$", "x":4, "y":1.25}, + {"label":"%", "x":5, "y":1.25}, + {"label":"^", "x":6, "y":1.25}, + {"label":"&", "x":7, "y":1.25}, + {"label":"*", "x":8, "y":1.25}, + {"label":"(", "x":9, "y":1.25}, + {"label":")", "x":10, "y":1.25}, + {"label":"_", "x":11, "y":1.25}, + {"label":"+", "x":12, "y":1.25}, + {"label":"Backspace", "x":13, "y":1.25, "w":2}, + {"label":"Insert", "x":15.25, "y":1.25}, + {"label":"Home", "x":16.25, "y":1.25}, + {"label":"PgUp", "x":17.25, "y":1.25}, + + {"label":"Tab", "x":0, "y":2.25, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.25}, + {"label":"W", "x":2.5, "y":2.25}, + {"label":"E", "x":3.5, "y":2.25}, + {"label":"R", "x":4.5, "y":2.25}, + {"label":"T", "x":5.5, "y":2.25}, + {"label":"Y", "x":6.5, "y":2.25}, + {"label":"U", "x":7.5, "y":2.25}, + {"label":"I", "x":8.5, "y":2.25}, + {"label":"O", "x":9.5, "y":2.25}, + {"label":"P", "x":10.5, "y":2.25}, + {"label":"{", "x":11.5, "y":2.25}, + {"label":"}", "x":12.5, "y":2.25}, + {"label":"Delete", "x":15.25, "y":2.25}, + {"label":"End", "x":16.25, "y":2.25}, + {"label":"PgDn", "x":17.25, "y":2.25}, + + {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, + {"label":"A", "x":1.75, "y":3.25}, + {"label":"S", "x":2.75, "y":3.25}, + {"label":"D", "x":3.75, "y":3.25}, + {"label":"F", "x":4.75, "y":3.25}, + {"label":"G", "x":5.75, "y":3.25}, + {"label":"H", "x":6.75, "y":3.25}, + {"label":"J", "x":7.75, "y":3.25}, + {"label":"K", "x":8.75, "y":3.25}, + {"label":"L", "x":9.75, "y":3.25}, + {"label":":", "x":10.75, "y":3.25}, + {"label":"\"", "x":11.75, "y":3.25}, + {"label":"~", "x":12.75, "y":3.25}, + {"label":"Enter", "x":13.75, "y":2.25, "w":1.25, "h":2}, + + {"label":"Shift", "x":0, "y":4.25, "w":1.25}, + {"label":"|", "x":1.25, "y":4.25}, + {"label":"Z", "x":2.25, "y":4.25}, + {"label":"X", "x":3.25, "y":4.25}, + {"label":"C", "x":4.25, "y":4.25}, + {"label":"V", "x":5.25, "y":4.25}, + {"label":"B", "x":6.25, "y":4.25}, + {"label":"N", "x":7.25, "y":4.25}, + {"label":"M", "x":8.25, "y":4.25}, + {"label":"<", "x":9.25, "y":4.25}, + {"label":">", "x":10.25, "y":4.25}, + {"label":"?", "x":11.25, "y":4.25}, + {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, + {"label":"\u2191", "x":16.25, "y":4.25}, + + {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, + {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, + {"x":3.75, "y":5.25, "w":6.25}, + {"label":"Alt", "x":10, "y":5.25, "w":1.25}, + {"label":"Win", "x":11.25, "y":5.25, "w":1.25}, + {"label":"Menu", "x":12.5, "y":5.25, "w":1.25}, + {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, + {"label":"\u2190", "x":15.25, "y":5.25}, + {"label":"\u2193", "x":16.25, "y":5.25}, + {"label":"\u2192", "x":17.25, "y":5.25} + ] + } + } +} diff --git a/keyboards/dyz/dyz_tkl/keymaps/default/keymap.c b/keyboards/dyz/dyz_tkl/keymaps/default/keymap.c new file mode 100644 index 000000000000..56aae4be1662 --- /dev/null +++ b/keyboards/dyz/dyz_tkl/keymaps/default/keymap.c @@ -0,0 +1,49 @@ +/* Copyright 2021 dayatz + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _FN, + _FN2 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSLS, KC_INSERT, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_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_RSFT, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT + ), + [_FN] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [_FN2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/dyz/dyz_tkl/keymaps/via/keymap.c b/keyboards/dyz/dyz_tkl/keymaps/via/keymap.c new file mode 100644 index 000000000000..56aae4be1662 --- /dev/null +++ b/keyboards/dyz/dyz_tkl/keymaps/via/keymap.c @@ -0,0 +1,49 @@ +/* Copyright 2021 dayatz + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _FN, + _FN2 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSLS, KC_INSERT, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_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_RSFT, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT + ), + [_FN] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [_FN2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/dyz/dyz_tkl/keymaps/via/rules.mk b/keyboards/dyz/dyz_tkl/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/dyz/dyz_tkl/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/dyz/dyz_tkl/readme.md b/keyboards/dyz/dyz_tkl/readme.md new file mode 100644 index 000000000000..2de8105d2437 --- /dev/null +++ b/keyboards/dyz/dyz_tkl/readme.md @@ -0,0 +1,27 @@ +# dyz_tkl + +![pcb](https://i.imgur.com/5OYWF0Mh.jpg) + +TKL pcb that fits most of the boards, support 2 sides of USB and multiple layouts for F row. + +- Keyboard Maintainer: [dayatz](https://github.com/dayatz) +- Hardware Supported: ATMega32u4 +- Hardware Availability: Local Indonesia GB and will available publicly in the future. + +Make example for this keyboard (after setting up your build environment): + + make dyz/dyz_tkl:default + +Flashing example for this keyboard: + + make dyz/dyz_tkl:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +- **Bootmagic reset**: Hold the `Esc` key while plugging in the USB cable +- **Physical reset button**: Briefly short the pins under the spacebar key +- **Keycode in layout**: Press the key mapped to `RESET` if it is available diff --git a/keyboards/dyz/dyz_tkl/rules.mk b/keyboards/dyz/dyz_tkl/rules.mk new file mode 100644 index 000000000000..66169abc1a1f --- /dev/null +++ b/keyboards/dyz/dyz_tkl/rules.mk @@ -0,0 +1,19 @@ +# 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 +# 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 diff --git a/keyboards/dyz/selka40/config.h b/keyboards/dyz/selka40/config.h new file mode 100644 index 000000000000..1871fd2cb65e --- /dev/null +++ b/keyboards/dyz/selka40/config.h @@ -0,0 +1,41 @@ +/* +Copyright 2021 dayatz + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define MANUFACTURER dyz +#define PRODUCT selka40 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* Bootmagic Lite key configuration */ +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 + +#define LED_CAPS_LOCK_PIN B1 +#define LED_NUM_LOCK_PIN B3 +#define LED_SCROLL_LOCK_PIN B2 + +#define TAP_CODE_DELAY 10 // Need this delay for some keys like VOLD/VOLU to work +#define ENCODERS_PAD_A { D6 } +#define ENCODERS_PAD_B { D7 } + +#define DYNAMIC_KEYMAP_LAYER_COUNT 3 diff --git a/keyboards/dyz/selka40/info.json b/keyboards/dyz/selka40/info.json new file mode 100644 index 000000000000..b947bbb59a31 --- /dev/null +++ b/keyboards/dyz/selka40/info.json @@ -0,0 +1,132 @@ +{ + "keyboard_name": "selka40", + "url": "https://github.com/dayatz/mechanical-keyboards/tree/master/selka40", + "maintainer": "dayatz", + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["F0", "F1", "F4", "F5", "F6", "F7", "E6", "B7", "D5", "D3", "D2", "D1", "D0"], + "rows": ["C7", "C6", "B6", "B5"] + }, + "rgblight": { + "led_count": 14, + "pin": "B4", + "hue_steps": 10, + "saturation_steps": 10, + "brightness_steps": 10, + "animations": { + "all": true + } + }, + "usb": { + "vid": "0xD772", + "pid": "0x0012", + "device_ver": "0x0001" + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"Esc", "x":0.5, "y":0}, + {"label":"Q", "x":1.5, "y":0}, + {"label":"W", "x":2.5, "y":0}, + {"label":"E", "x":3.5, "y":0}, + {"label":"R", "x":4.5, "y":0}, + {"label":"T", "x":5.5, "y":0}, + {"label":"Y", "x":7.5, "y":0}, + {"label":"U", "x":8.5, "y":0}, + {"label":"I", "x":9.5, "y":0}, + {"label":"O", "x":10.5, "y":0}, + {"label":"P", "x":11.5, "y":0}, + {"label":"{", "x":12.5, "y":0}, + {"label":"}", "x":13.5, "y":0}, + + {"label":"Tab", "x":0.25, "y":1, "w":1.25}, + {"label":"A", "x":1.5, "y":1}, + {"label":"S", "x":2.5, "y":1}, + {"label":"D", "x":3.5, "y":1}, + {"label":"F", "x":4.5, "y":1}, + {"label":"G", "x":5.5, "y":1}, + {"label":"H", "x":8, "y":1}, + {"label":"J", "x":9, "y":1}, + {"label":"K", "x":10, "y":1}, + {"label":"L", "x":11, "y":1}, + {"label":"\"", "x":12, "y":1}, + {"label":"Enter", "x":13, "y":1, "w":1.75}, + + {"label":"Shift", "x":0, "y":2, "w":1.75}, + {"label":"Z", "x":1.75, "y":2}, + {"label":"X", "x":2.75, "y":2}, + {"label":"C", "x":3.75, "y":2}, + {"label":"V", "x":4.75, "y":2}, + {"label":"B", "x":5.75, "y":2}, + {"label":"B", "x":7.75, "y":2}, + {"label":"N", "x":8.75, "y":2}, + {"label":"M", "x":9.75, "y":2}, + {"label":"<", "x":10.75, "y":2}, + {"label":">", "x":11.75, "y":2}, + {"label":"?", "x":12.75, "y":2}, + {"label":"Shift", "x":13.75, "y":2, "w":1.25}, + + {"label":"Ctrl", "x":0.25, "y":3, "w":1.25}, + {"label":"Win", "x":1.5, "y":3}, + {"label":"Alt", "x":3.75, "y":3}, + {"label":"Space", "x":4.75, "y":3, "w":2}, + {"label":"Space", "x":7.75, "y":3, "w":2.25}, + {"label":"Fn", "x":10, "y":3}, + {"label":"Fn2", "x":12.5, "y":3}, + {"label":"Ctrl", "x":13.5, "y":3, "w":1.25} + ] + }, + "LAYOUT_2u_bs": { + "layout": [ + {"label":"Esc", "x":0.5, "y":0}, + {"label":"Q", "x":1.5, "y":0}, + {"label":"W", "x":2.5, "y":0}, + {"label":"E", "x":3.5, "y":0}, + {"label":"R", "x":4.5, "y":0}, + {"label":"T", "x":5.5, "y":0}, + {"label":"Y", "x":7.5, "y":0}, + {"label":"U", "x":8.5, "y":0}, + {"label":"I", "x":9.5, "y":0}, + {"label":"O", "x":10.5, "y":0}, + {"label":"P", "x":11.5, "y":0}, + {"label":"Backspace", "x":12.5, "y":0, "w":2}, + + {"label":"Tab", "x":0.25, "y":1, "w":1.25}, + {"label":"A", "x":1.5, "y":1}, + {"label":"S", "x":2.5, "y":1}, + {"label":"D", "x":3.5, "y":1}, + {"label":"F", "x":4.5, "y":1}, + {"label":"G", "x":5.5, "y":1}, + {"label":"H", "x":8, "y":1}, + {"label":"J", "x":9, "y":1}, + {"label":"K", "x":10, "y":1}, + {"label":"L", "x":11, "y":1}, + {"label":"\"", "x":12, "y":1}, + {"label":"Enter", "x":13, "y":1, "w":1.75}, + + {"label":"Shift", "x":0, "y":2, "w":1.75}, + {"label":"Z", "x":1.75, "y":2}, + {"label":"X", "x":2.75, "y":2}, + {"label":"C", "x":3.75, "y":2}, + {"label":"V", "x":4.75, "y":2}, + {"label":"B", "x":5.75, "y":2}, + {"label":"B", "x":7.75, "y":2}, + {"label":"N", "x":8.75, "y":2}, + {"label":"M", "x":9.75, "y":2}, + {"label":"<", "x":10.75, "y":2}, + {"label":">", "x":11.75, "y":2}, + {"label":"?", "x":12.75, "y":2}, + {"label":"Shift", "x":13.75, "y":2, "w":1.25}, + + {"label":"Ctrl", "x":0.25, "y":3, "w":1.25}, + {"label":"Win", "x":1.5, "y":3}, + {"label":"Alt", "x":3.75, "y":3}, + {"label":"Space", "x":4.75, "y":3, "w":2}, + {"label":"Space", "x":7.75, "y":3, "w":2.25}, + {"label":"Fn", "x":10, "y":3}, + {"label":"Fn2", "x":12.5, "y":3}, + {"label":"Ctrl", "x":13.5, "y":3, "w":1.25} + ] + } + } +} diff --git a/keyboards/dyz/selka40/keymaps/default/keymap.c b/keyboards/dyz/selka40/keymaps/default/keymap.c new file mode 100644 index 000000000000..9a386de9629d --- /dev/null +++ b/keyboards/dyz/selka40/keymaps/default/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2021 dayatz + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _FN, + _FN2 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_all( /* Base */ + KC_ESC, 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_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, 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, + KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_SPC, MO(_FN), MO(_FN2), KC_RCTL + ), + [_FN] = LAYOUT_all( + KC_CAPS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + [_FN2] = 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, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/dyz/selka40/keymaps/via/keymap.c b/keyboards/dyz/selka40/keymaps/via/keymap.c new file mode 100644 index 000000000000..e142587994a6 --- /dev/null +++ b/keyboards/dyz/selka40/keymaps/via/keymap.c @@ -0,0 +1,44 @@ +/* Copyright 2021 dayatz + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _FN, + _FN2 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_all( /* Base */ + KC_ESC, 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_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, 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, + KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_SPC, MO(_FN), MO(_FN2), KC_RCTL + ), + [_FN] = LAYOUT_all( + KC_CAPS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + [_FN2] = 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, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + diff --git a/keyboards/dyz/selka40/keymaps/via/rules.mk b/keyboards/dyz/selka40/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/dyz/selka40/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/dyz/selka40/readme.md b/keyboards/dyz/selka40/readme.md new file mode 100644 index 000000000000..6232d18a1020 --- /dev/null +++ b/keyboards/dyz/selka40/readme.md @@ -0,0 +1,26 @@ +# selka40 + +![pcb](https://i.imgur.com/pqnEVngh.jpg) + +40% (13u) ergo hotswap with multiple layouts for bottom row + +- Keyboard Maintainer: [dayatz](https://github.com/dayatz) +- Hardware Supported: ATMega32u4 + +Make example for this keyboard (after setting up your build environment): + + make dyz/selka40:default + +Flashing example for this keyboard: + + make dyz/selka40:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +- **Bootmagic reset**: Hold the `Esc` key while plugging in the USB cable +- **Physical reset button**: Briefly press the button on the back of the PCB +- **Keycode in layout**: Press the key mapped to `RESET` if it is available diff --git a/keyboards/dyz/selka40/rules.mk b/keyboards/dyz/selka40/rules.mk new file mode 100644 index 000000000000..eea7ef17f16e --- /dev/null +++ b/keyboards/dyz/selka40/rules.mk @@ -0,0 +1,20 @@ +# 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 +# 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 +ENCODER_ENABLE = yes diff --git a/keyboards/dyz/selka40/selka40.c b/keyboards/dyz/selka40/selka40.c new file mode 100644 index 000000000000..f46aac4b2bc1 --- /dev/null +++ b/keyboards/dyz/selka40/selka40.c @@ -0,0 +1,16 @@ +/* Copyright 2021 dayatz + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "selka40.h" diff --git a/keyboards/dyz/selka40/selka40.h b/keyboards/dyz/selka40/selka40.h new file mode 100644 index 000000000000..ddff79f9f9af --- /dev/null +++ b/keyboards/dyz/selka40/selka40.h @@ -0,0 +1,58 @@ +/* Copyright 2021 dayatz + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" +#define _X_ KC_NO + +/* + * ┌───────┐ + * │0B │ 2u Backspace + * └───────┘ + * ┌───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┬───┐ + * │00 │01 │02 │03 │04 │05 │ │06 │07 │08 │09 │0A │0B │0C │ + * ┌┴───┼───┼───┼───┼───┼───┤ └─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┐ + * │10 │11 │12 │13 │14 │15 │ │16 │17 │18 │19 │1A │1B │ + * ┌┴────┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ┌┴──┬┴──┬┴──┬┴──┬┴──┬┴──┬───┴┐ + * │20 │21 │22 │23 │24 │25 │ │26 │27 │28 │29 │2A │2B │2C │ + * └┬────┬┴──┬┴───┼───┼───┴───┤ ├───┴───┴┬──┴┬──┴──┬┴──┬┴───┬┘ + * │30 │31 │ │34 │35 │ │36 │37 │ │3B │3C │ + * └────┴───┘ └───┴───────┘ └────────┴───┘ └───┴────┘ + */ + +#define LAYOUT_all( \ + 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, K2C, \ + K30, K31, K34, K35, K36, K37, K3B, K3C \ +) { \ + { 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, _X_ }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C }, \ + { K30, K31, _X_, _X_, K34, K35, K36, K37, _X_, _X_, _X_, K3B, K3C } \ +} + +#define LAYOUT_2u_bs( \ + 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, K2C, \ + K30, K31, K34, K35, K36, K37, K3B, K3C \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, _X_ }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, _X_ }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C }, \ + { K30, K31, _X_, _X_, K34, K35, K36, K37, _X_, _X_, _X_, K3B, K3C } \ +} diff --git a/keyboards/dz60/dz60.h b/keyboards/dz60/dz60.h index 9cec58c9956f..352968f57c06 100644 --- a/keyboards/dz60/dz60.h +++ b/keyboards/dz60/dz60.h @@ -259,9 +259,9 @@ * │20 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2d │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3d │ - * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ + * ├────┬───┴┬──┴─┬─┴───┴──┬┴───┼───┴───┴──┬┴───┼───┴┬────┬────┤ * │40 │41 │43 │44 │46 │48 │4a │4b │4d │4e │ - * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ + * └────┴────┴────┴────────┴────┴──────────┴────┴────┴────┴────┘ */ #define LAYOUT_60_ansi_split( \ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, \ @@ -735,3 +735,30 @@ { k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e }, \ { k40, k41, KC_NO, k43, KC_NO, KC_NO, k46, KC_NO, KC_NO, KC_NO, k4a, k4b, k4c, k4d, k4e } \ } + +/* LAYOUT_64_ansi_split_bs + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │0e │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ + * │10 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │1e │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │20 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2d │ + * ├──────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬───┬───┤ + * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │3e │ + * ├────┬──┴─┬─┴──┬┴───┴───┴───┴───┴───┴───┼───┼───┼───┼───┼───┤ + * │40 │41 │43 │46 │4a │4b │4c │4d │4e │ + * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘ +*/ +#define LAYOUT_64_ansi_split_bs( \ + 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, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \ + k40, k41, k43, k46, 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, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e }, \ + { k40, k41, KC_NO, k43, KC_NO, KC_NO, k46, KC_NO, KC_NO, KC_NO, k4a, k4b, k4c, k4d, k4e } \ +} diff --git a/keyboards/dz60/info.json b/keyboards/dz60/info.json index 5990bbec11c5..bb607a4a2942 100644 --- a/keyboards/dz60/info.json +++ b/keyboards/dz60/info.json @@ -2,8 +2,6 @@ "keyboard_name": "DZ60", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { "layout": [ @@ -1941,6 +1939,75 @@ {"x":13, "y":4}, {"x":14, "y":4} ] + }, + "LAYOUT_64_ansi_split_bs": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":0, "y":3, "w":2}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3}, + {"x":6, "y":3}, + {"x":7, "y":3}, + {"x":8, "y":3}, + {"x":9, "y":3}, + {"x":10, "y":3}, + {"x":11, "y":3}, + {"x":12, "y":3}, + {"x":13, "y":3}, + {"x":14, "y":3}, + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4}, + {"x":11, "y":4}, + {"x":12, "y":4}, + {"x":13, "y":4}, + {"x":14, "y":4} + ] } } } diff --git a/keyboards/dz60/keymaps/LEdiodes/rules.mk b/keyboards/dz60/keymaps/LEdiodes/rules.mk index 251d25fade6c..2f6622e587e5 100644 --- a/keyboards/dz60/keymaps/LEdiodes/rules.mk +++ b/keyboards/dz60/keymaps/LEdiodes/rules.mk @@ -1,7 +1,7 @@ # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/dz60/keymaps/billypython/rules.mk b/keyboards/dz60/keymaps/billypython/rules.mk index 3326136043fd..3b7016f57007 100644 --- a/keyboards/dz60/keymaps/billypython/rules.mk +++ b/keyboards/dz60/keymaps/billypython/rules.mk @@ -1,5 +1,5 @@ BACKLIGHT_ENABLE = no -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite COMMAND_ENABLE = yes CONSOLE_ENABLE = yes EXTRAKEY_ENABLE = yes diff --git a/keyboards/dz60/keymaps/coppertop/rules.mk b/keyboards/dz60/keymaps/coppertop/rules.mk index 27905483738a..7b4abdbc1bae 100644 --- a/keyboards/dz60/keymaps/coppertop/rules.mk +++ b/keyboards/dz60/keymaps/coppertop/rules.mk @@ -1 +1 @@ -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite diff --git a/keyboards/dz60/keymaps/default_abnt2/keymap.c b/keyboards/dz60/keymaps/default_abnt2/keymap.c index d6273780f149..3ed1484bd72c 100644 --- a/keyboards/dz60/keymaps/default_abnt2/keymap.c +++ b/keyboards/dz60/keymaps/default_abnt2/keymap.c @@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_BL] = LAYOUT_60_abnt2( KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, BR_ACUT, BR_LBRC, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, BR_CCDL, BR_TILD, BR_RBRC, KC_ENT, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, BR_CCED, BR_TILD, BR_RBRC, KC_ENT, KC_LSFT, BR_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, BR_SCLN, BR_SLSH, KC_RSFT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(_FL), KC_RCTL), diff --git a/keyboards/dz60/keymaps/hailbreno/rules.mk b/keyboards/dz60/keymaps/hailbreno/rules.mk index ad188f7dd5c8..975bfbbbcb2b 100644 --- a/keyboards/dz60/keymaps/hailbreno/rules.mk +++ b/keyboards/dz60/keymaps/hailbreno/rules.mk @@ -1,2 +1,2 @@ -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) \ No newline at end of file diff --git a/keyboards/dz60/keymaps/iso_de_andys8/rules.mk b/keyboards/dz60/keymaps/iso_de_andys8/rules.mk index b5f45d7aa89c..0aa5b7946054 100644 --- a/keyboards/dz60/keymaps/iso_de_andys8/rules.mk +++ b/keyboards/dz60/keymaps/iso_de_andys8/rules.mk @@ -1,7 +1,7 @@ # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/dz60/keymaps/iso_de_root/rules.mk b/keyboards/dz60/keymaps/iso_de_root/rules.mk index 0dcfa1b71d6e..2f8792070ff6 100644 --- a/keyboards/dz60/keymaps/iso_de_root/rules.mk +++ b/keyboards/dz60/keymaps/iso_de_root/rules.mk @@ -1,7 +1,7 @@ # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/dz60/keymaps/iso_vim_arrow/rules.mk b/keyboards/dz60/keymaps/iso_vim_arrow/rules.mk index b5f45d7aa89c..0aa5b7946054 100644 --- a/keyboards/dz60/keymaps/iso_vim_arrow/rules.mk +++ b/keyboards/dz60/keymaps/iso_vim_arrow/rules.mk @@ -1,7 +1,7 @@ # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/dz60/keymaps/iso_vim_arrow_split_rs/rules.mk b/keyboards/dz60/keymaps/iso_vim_arrow_split_rs/rules.mk index 3bfdaadaf7f5..4b8068fe7891 100644 --- a/keyboards/dz60/keymaps/iso_vim_arrow_split_rs/rules.mk +++ b/keyboards/dz60/keymaps/iso_vim_arrow_split_rs/rules.mk @@ -1,7 +1,7 @@ # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no diff --git a/keyboards/dz60/keymaps/jdelkins/config.h b/keyboards/dz60/keymaps/jdelkins/config.h index 95b45b2c12b0..9d50abd3ecb1 100644 --- a/keyboards/dz60/keymaps/jdelkins/config.h +++ b/keyboards/dz60/keymaps/jdelkins/config.h @@ -17,35 +17,38 @@ #pragma once -/* Directional arrangement | LAYOUT_directional - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │ 0e │ - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ +/* My hhkb variant + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │0e │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ * │10 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │1e │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ * │20 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2d │ - * ├──────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬───┬───┤ - * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │3e │ - * ├────┬──┴─┬─┴──┬┴───┴───┴───┴───┴───┴───┼───┼───┼───┼───┼───┤ - * │40 │41 │43 │ 46 │4a │4b │4c │4d │4e │ - * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘ -*/ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ + * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3d │3e │ + * ├────┬───┴┬──┴─┬─┴───┴──┬┴───┼───┴───┴──┬┴──┬┴──┬┴──┬───┼───┤ + * │40 │41 │43 │44 │46 │48 │4a │4b │4c │4d │4e │ + * └────┴────┴────┴────────┴────┴──────────┴───┴───┴───┴───┴───┘ + */ -#define LAYOUT_directional_nosplitspace( \ - k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, \ +#define LAYOUT_hhkb_split( \ + 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, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \ - k40, k41, k43, k46, k4a, k4b, k4c, k4d, k4e \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, \ + k40, k41, k43, k44, k46, k48, k4a, k4b, k4c, k4d, k4e \ ) { \ - { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, KC_NO,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, k3d, k3e }, \ - { k40, k41, KC_NO, k43, 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, 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, k3e }, \ + { k40, k41, KC_NO, k43, k44, KC_NO, k46, KC_NO, k48, KC_NO, k4a, k4b, k4c, k4d, k4e } \ } #define AUTO_SHIFT_TIMEOUT 160 +#define AUTO_SHIFT_REPEAT #define RGBLIGHT_LAYERS +#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF #define LEADER_TIMEOUT 400 #define LEADER_PER_KEY_TIMING +#define USB_MAX_POWER_CONSUMPTION 100 diff --git a/keyboards/dz60/keymaps/jdelkins/keymap.c b/keyboards/dz60/keymaps/jdelkins/keymap.c index c0bf4445a846..cf9dd584f638 100644 --- a/keyboards/dz60/keymaps/jdelkins/keymap.c +++ b/keyboards/dz60/keymaps/jdelkins/keymap.c @@ -18,20 +18,26 @@ #include "jdelkins.h" #undef LAYOUT -#define LAYOUT LAYOUT_directional_nosplitspace +#define LAYOUT LAYOUT_hhkb_split #define IDLE_TIMEOUT 360 + uint16_t rgb_idle_seconds = 0; uint16_t rgb_timer; +uint16_t bspc_timer; bool rgb_was_enabled; +enum { + MY_BSPC = USER_SAFE_RANGE, +}; + // Tap Dance int ctl_state = 0; void ctl_finished(qk_tap_dance_state_t *state, void *user_data) { ctl_state = cur_dance(state); - switch(ctl_state) { + switch (ctl_state) { case SINGLE_TAP: qk_leader_start(); break; case SINGLE_HOLD: register_code(KC_LCTL); break; case DOUBLE_TAP: tap_code(KC_RCTL); break; @@ -42,7 +48,7 @@ void ctl_finished(qk_tap_dance_state_t *state, void *user_data) { } void ctl_reset(qk_tap_dance_state_t *state, void *user_data) { - switch(ctl_state) { + switch (ctl_state) { case SINGLE_HOLD: unregister_code(KC_LCTL); break; case DOUBLE_HOLD: case TRIPLE_HOLD: unregister_code(KC_RCTL); break; @@ -61,56 +67,93 @@ void g_finished(qk_tap_dance_state_t *state, void *user_data) { } } +int kp_state = 0; + +void kp_finished(qk_tap_dance_state_t *state, void *user_data) { + kp_state = hold_cur_dance(state); + switch (kp_state) { + case SINGLE_TAP: + tap_code(KC_SPC); + break; + default: + layer_invert(_KP); + break; + } +} + +void kp_reset(qk_tap_dance_state_t *state, void *user_data) { + switch (kp_state) { + case SINGLE_HOLD: + case DOUBLE_HOLD: + case TRIPLE_HOLD: + layer_invert(_KP); + break; + } +} + enum { TD_LDCTL, TD_G, + TD_KP, }; qk_tap_dance_action_t tap_dance_actions[] = { [TD_LDCTL] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ctl_finished, ctl_reset), [TD_G] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, g_finished, NULL), + [TD_KP] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, kp_finished, kp_reset), }; // Layers const uint16_t PROGMEM keymaps[_LAYER_MAX][MATRIX_ROWS][MATRIX_COLS] = { [_QWERTY] = LAYOUT( - KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, - KC_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, - MY_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_BSPC, MO(_ADJUST), - TD(TD_LDCTL), MY_GUI, MY_ALT, MY_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, + 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, + MY_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_ADJUST), + TD(TD_LDCTL), MY_GUI, MY_ALT, MY_BSPC, TD(TD_KP), MY_SPC, KC_RGUI, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT + ), + [_RPT] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), [_GAME] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - KC_LCTL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, KC_LALT, KC_SPC, _______, _______, _______, _______, _______ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_LCTL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, KC_LALT, KC_SPC, KC_LALT, _______, _______, _______, _______, _______, _______ ), [_FUNC] = LAYOUT( - KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, - _______, _______, FW_WRD, KB_EOL, _______, _______, KB_COPY, KC_PGUP, _______, _______, KB_PASTE, KC_SLCK, _______, MY_CALC, - _______, KB_BOL, _______, KC_PGDN, _______, TD(TD_G), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, - _______, _______, KC_DEL, _______, _______, BK_WRD, _______, _______, _______, _______, _______, _______, KC_INS, _______, - _______, MY_RGUI, MY_RALT, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_F13, + _______, _______, FW_WRD, KB_EOL, TG(_RPT), _______, KB_COPY, KC_PGUP, _______, _______, KB_PASTE, KC_SLCK, _______, MY_CALC, + KC_RCTL, KB_BOL, _______, KC_PGDN, _______, TD(TD_G), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, + _______, _______, KC_DEL, _______, _______, BK_WRD, _______, _______, _______, _______, _______, _______, KC_NO, + KC_RCTL, MY_RGUI, MY_RALT, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END ), [_KP] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, KC_KP_ASTERISK, _______, _______, _______, _______, _______, - KC_NUMLOCK, _______, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, _______, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_MINUS, _______, _______, _______, - _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_PLUS, _______, _______, - _______, _______, _______, _______, _______, _______, _______, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_SLASH, _______, _______, TG(_KP), - _______, _______, _______, KC_KP_0, KC_KP_DOT, _______, _______, _______, _______ + _______, _______, _______, _______, _______, _______, _______, _______, KC_KP_ASTERISK, _______, _______, _______, _______, _______, _______, + KC_NUMLOCK, _______, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, _______, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_MINUS, _______, _______, _______, + _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_PLUS, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_SLASH, _______, TG(_KP), + _______, _______, _______, _______, _______, KC_KP_0, KC_KP_DOT, _______, _______, _______, _______ ), [_ADJUST] = LAYOUT( - KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, - _______, RGB_SPD, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, _______, _______, _______, KC_PSCR, KC_SLCK, _______, KC_MUTE, - _______, RGB_RMOD, RGB_VAD, RGB_MOD, RGB_HUD, RGB_SAD, _______, _______, TG(_KP), _______, _______, _______, KC_MPLY, - _______, RGB_TOG, KB_MAKE, KB_FLSH, KB_VRSN, KB_BOOT, _______, TG_SYS, _______, _______, _______, _______, KC_DEL, _______, - _______, MY_RGUI, MY_RALT, _______, _______, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT + 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_SLCK, KC_F13, + _______, RGB_SPD, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, _______, _______, _______, KC_PSCR, KC_BRID, KC_BRIU, KC_MUTE, + KC_RCTL, RGB_RMOD, RGB_VAD, RGB_MOD, RGB_HUD, RGB_SAD, _______, _______, TG(_KP), _______, _______, _______, KC_MPLY, + _______, RGB_TOG, KB_MAKE, KB_FLSH, KB_VRSN, KB_BOOT, _______, TG_SYS, _______, _______, _______, _______, _______, + KC_RCTL, MY_RGUI, MY_RALT, KC_DEL, _______, _______, _______, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT ), }; +const rgblight_segment_t PROGMEM rpt_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {8, 8, HSV_PINK} +); + const rgblight_segment_t PROGMEM game_layer[] = RGBLIGHT_LAYER_SEGMENTS( {0, 1, HSV_RED}, {7, 2, HSV_RED}, @@ -118,7 +161,7 @@ const rgblight_segment_t PROGMEM game_layer[] = RGBLIGHT_LAYER_SEGMENTS( ); const rgblight_segment_t PROGMEM func_layer[] = RGBLIGHT_LAYER_SEGMENTS( - {0, 8, HSV_GREEN} + {0, 16, HSV_GREEN} ); const rgblight_segment_t PROGMEM kp_layer[] = RGBLIGHT_LAYER_SEGMENTS( @@ -140,6 +183,7 @@ const rgblight_segment_t PROGMEM numlock_layer[] = RGBLIGHT_LAYER_SEGMENTS( enum rgb_layer_index { + L_RPT, L_GAME, L_FUNC, L_KP, @@ -149,6 +193,7 @@ enum rgb_layer_index { }; const rgblight_segment_t * const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( + [L_RPT] = rpt_layer, [L_GAME] = game_layer, [L_FUNC] = func_layer, [L_KP] = kp_layer, @@ -158,13 +203,14 @@ const rgblight_segment_t * const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( ); layer_state_t layer_state_set_keymap(layer_state_t state) { + rgblight_set_layer_state(L_RPT, layer_state_cmp(state, _RPT)); rgblight_set_layer_state(L_GAME, layer_state_cmp(state, _GAME)); rgblight_set_layer_state(L_FUNC, layer_state_cmp(state, _FUNC)); rgblight_set_layer_state(L_KP, layer_state_cmp(state, _KP)); rgblight_set_layer_state(L_ADJUST, layer_state_cmp(state, _ADJUST)); rgblight_set_layer_state(L_CAPSLOCK, CAPSLOCK_ON); rgblight_set_layer_state(L_NUMLOCK, NUMLOCK_ON && layer_state_cmp(state, _KP)); - if (layer_state_cmp(state, _GAME)) + if (layer_state_cmp(state, _GAME) || layer_state_cmp(state, _RPT)) autoshift_disable(); else autoshift_enable(); @@ -180,6 +226,7 @@ bool led_update_user(led_t led_state) { void keyboard_post_init_keymap(void) { rgblight_layers = my_rgb_layers; rgb_was_enabled = rgblight_is_enabled(); + bspc_timer = 0; } LEADER_EXTERNS(); @@ -194,86 +241,116 @@ void matrix_scan_keymap(void) { rgblight_disable_noeeprom(); rgb_idle_seconds = 0; } + // if MY_BSPC is held down too long, pretend like it wasn't and start + // pressing backspace + if (bspc_timer > 0 && timer_elapsed(bspc_timer) > LEADER_TIMEOUT) { + layer_off(_FUNC); + bspc_timer = 0; + register_code(KC_BSPC); + } LEADER_DICTIONARY() { leading = false; leader_end(); - SEQ_ONE_KEY(KC_K) { - layer_invert(_KP); - } - SEQ_ONE_KEY(KC_G) { - layer_invert(_GAME); - } - SEQ_ONE_KEY(KC_KP_5) { - layer_invert(_KP); - } - SEQ_TWO_KEYS(KC_SCLN, KC_1) { - send_secret_string(0); - } - SEQ_TWO_KEYS(KC_SCLN, KC_2) { - send_secret_string(1); - } - SEQ_TWO_KEYS(KC_SCLN, KC_3) { - send_secret_string(2); - } - SEQ_TWO_KEYS(KC_SCLN, KC_4) { - send_secret_string(3); - } - SEQ_TWO_KEYS(KC_SCLN, KC_5) { - send_secret_string(4); - } - SEQ_TWO_KEYS(KC_SCLN, KC_6) { - send_secret_string(5); - } - SEQ_TWO_KEYS(KC_SCLN, KC_M) { - send_secret_string(0); - } - SEQ_TWO_KEYS(KC_SCLN, KC_COMM) { - send_secret_string(1); - } - SEQ_TWO_KEYS(KC_SCLN, KC_DOT) { - send_secret_string(2); - } - SEQ_TWO_KEYS(KC_SCLN, KC_J) { - send_secret_string(3); - } - SEQ_TWO_KEYS(KC_SCLN, KC_K) { - send_secret_string(4); - } - SEQ_TWO_KEYS(KC_SCLN, KC_L) { - send_secret_string(5); - } - SEQ_ONE_KEY(KC_C) { - tap_code16(C(KC_C)); + // layer navigation + SEQ_ONE_KEY(KC_R) { layer_invert(_RPT); } + SEQ_ONE_KEY(KC_G) { layer_invert(_GAME); } + SEQ_ONE_KEY(KC_K) { layer_invert(_KP); } + SEQ_ONE_KEY(KC_KP_5) { layer_invert(_KP); } + + // tmux navigation + SEQ_ONE_KEY(KC_L) { SEND_STRING(SS_LCTL("a") "n"); } + SEQ_ONE_KEY(KC_H) { SEND_STRING(SS_LCTL("a") "p"); } + SEQ_ONE_KEY(KC_N) { SEND_STRING(SS_LCTL("a") "c"); } + SEQ_ONE_KEY(KC_W) { SEND_STRING(SS_LCTL("a") "x"); } + SEQ_ONE_KEY(KC_MINS) { SEND_STRING(SS_LCTL("a") "-"); } + SEQ_ONE_KEY(KC_QUOT) { SEND_STRING(SS_LCTL("a") "\""); } + SEQ_ONE_KEY(KC_1) { SEND_STRING(SS_LCTL("a") "1"); } + SEQ_ONE_KEY(KC_2) { SEND_STRING(SS_LCTL("a") "2"); } + SEQ_ONE_KEY(KC_3) { SEND_STRING(SS_LCTL("a") "3"); } + SEQ_ONE_KEY(KC_4) { SEND_STRING(SS_LCTL("a") "4"); } + SEQ_ONE_KEY(KC_5) { SEND_STRING(SS_LCTL("a") "5"); } + SEQ_ONE_KEY(KC_6) { SEND_STRING(SS_LCTL("a") "6"); } + SEQ_ONE_KEY(KC_7) { SEND_STRING(SS_LCTL("a") "7"); } + SEQ_ONE_KEY(KC_8) { SEND_STRING(SS_LCTL("a") "8"); } + SEQ_ONE_KEY(KC_9) { SEND_STRING(SS_LCTL("a") "9"); } + + // secrets + SEQ_TWO_KEYS(KC_SCLN, KC_M) { send_secret_string(0); } + SEQ_TWO_KEYS(KC_SCLN, KC_COMM) { send_secret_string(1); } + SEQ_TWO_KEYS(KC_SCLN, KC_DOT) { send_secret_string(2); } + SEQ_TWO_KEYS(KC_SCLN, KC_J) { send_secret_string(3); } + SEQ_TWO_KEYS(KC_SCLN, KC_K) { send_secret_string(4); } + SEQ_TWO_KEYS(KC_SCLN, KC_L) { send_secret_string(5); } + + // fast control-C + SEQ_ONE_KEY(KC_C) { tap_code16(C(KC_C)); } + + // neovim: terminal escape + SEQ_ONE_KEY(KC_BSLS) { + tap_code16(C(KC_BSLS)); + tap_code16(C(KC_N)); } } } bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { - static uint16_t gesc_timer; + static bool bspc_del = false; + static bool bspc_initiated_func = false; + bool rc = true; rgb_idle_seconds = 0; if (!rgblight_is_enabled() && rgb_was_enabled) rgblight_enable_noeeprom(); switch (keycode) { - // custom handle KC_GESC to emulate auto shift on it - case KC_GESC: - if (get_autoshift_state()) { - if (record->event.pressed) - gesc_timer = timer_read(); - else { - if (timer_elapsed(gesc_timer) > AUTO_SHIFT_TIMEOUT || MODS_SHIFT) { - tap_code16(S(KC_GRV)); - } else if (MODS_GUI) - tap_code(KC_GRV); - else - tap_code(KC_ESC); + case MY_BSPC: + if (record->event.pressed) { + if (IS_LAYER_ON(_FUNC)) { + // special case: if _FUNC was turned on by another key, + // treat this as KC_DEL and don't do anything else + bspc_del = true; + register_code(KC_DEL); + return false; + } else { + bspc_timer = timer_read(); + bspc_initiated_func = true; + layer_on(_FUNC); + } + } else { + if (bspc_del) { + // special case: if _FUNC was turned on by another key, + // treat this as KC_DEL and don't do anything else + unregister_code(KC_DEL); + bspc_del = false; + return false; + } + + if (bspc_initiated_func) { + layer_off(_FUNC); + bspc_initiated_func = false; + } + + if (bspc_timer > 0) { + // here the key was pressed and released before the timer + // expired, so treat as a backspace tap and pretend we + // never activated _FUNC + bspc_timer = 0; + tap_code(KC_BSPC); + } else { + // the timer went off, so KC_BSPC was registered in + // matrix_scan_keymap. unregister it now + unregister_code(KC_BSPC); } - return false; } - return false; + return false; // special case, return now without resetting timer + // other paths should set rc and break + break; } - return true; + // if something was pressed while MY_BSPC was held down, keep it pressed by + // disabling the timer + bspc_timer = 0; + return rc; } + diff --git a/keyboards/dz60/keymaps/jdelkins/rules.mk b/keyboards/dz60/keymaps/jdelkins/rules.mk index b0a4f73dd779..2eacc54ea108 100644 --- a/keyboards/dz60/keymaps/jdelkins/rules.mk +++ b/keyboards/dz60/keymaps/jdelkins/rules.mk @@ -1,7 +1,7 @@ LEADER_ENABLE = yes -MOUSEKEY_ENABLE = yes +MOUSEKEY_ENABLE = no CONSOLE_ENABLE = no NKRO_ENABLE = no TAP_DANCE_ENABLE = yes -LTO_ENABLE = yes AUTO_SHIFT_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/dz60/keymaps/jdelkins_ss/config.h b/keyboards/dz60/keymaps/jdelkins_ss/config.h deleted file mode 100644 index e023d3452baf..000000000000 --- a/keyboards/dz60/keymaps/jdelkins_ss/config.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - Copyright 2020 Joel Elkins - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#pragma once - -/* My hhkb variant - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ - * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │0e │ - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ - * │10 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │1e │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │20 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2d │ - * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ - * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3d │3e │ - * ├────┬───┴┬──┴─┬─┴───┴──┬┴───┼───┴───┴──┬┴──┬┴──┬┴──┬───┼───┤ - * │40 │41 │43 │44 │46 │48 │4a │4b │4c │4d │4e │ - * └────┴────┴────┴────────┴────┴──────────┴───┴───┴───┴───┴───┘ - */ - -#define LAYOUT_hhkb_split( \ - 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, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, \ - k40, k41, k43, k44, k46, k48, 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, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, KC_NO, k3d, k3e }, \ - { k40, k41, KC_NO, k43, k44, KC_NO, k46, KC_NO, k48, KC_NO, k4a, k4b, k4c, k4d, k4e } \ -} - -#define AUTO_SHIFT_TIMEOUT 165 -#define RGBLIGHT_LAYERS -#define LEADER_TIMEOUT 400 -#define LEADER_PER_KEY_TIMING diff --git a/keyboards/dz60/keymaps/jdelkins_ss/keymap.c b/keyboards/dz60/keymaps/jdelkins_ss/keymap.c deleted file mode 100644 index 2744c43727f6..000000000000 --- a/keyboards/dz60/keymaps/jdelkins_ss/keymap.c +++ /dev/null @@ -1,367 +0,0 @@ -/* - Copyright 2020 Joel Elkins - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "jdelkins.h" - -#undef LAYOUT -#define LAYOUT LAYOUT_hhkb_split - -#define IDLE_TIMEOUT 360 -uint16_t rgb_idle_seconds = 0; -uint16_t rgb_timer; -uint16_t bspc_timer; -bool rgb_was_enabled; - -enum { - MY_BSPC = USER_SAFE_RANGE, -}; - -// Tap Dance - -int ctl_state = 0; - -void ctl_finished(qk_tap_dance_state_t *state, void *user_data) { - ctl_state = cur_dance(state); - switch (ctl_state) { - case SINGLE_TAP: qk_leader_start(); break; - case SINGLE_HOLD: register_code(KC_LCTL); break; - case DOUBLE_TAP: tap_code(KC_RCTL); break; - case DOUBLE_HOLD: register_code(KC_RCTL); break; - case TRIPLE_TAP: tap_code(KC_RCTL); tap_code(KC_RCTL); break; - case TRIPLE_HOLD: tap_code(KC_RCTL); register_code(KC_RCTL); break; - } -} - -void ctl_reset(qk_tap_dance_state_t *state, void *user_data) { - switch (ctl_state) { - case SINGLE_HOLD: unregister_code(KC_LCTL); break; - case DOUBLE_HOLD: - case TRIPLE_HOLD: unregister_code(KC_RCTL); break; - } - ctl_state = 0; -} - -void g_finished(qk_tap_dance_state_t *state, void *user_data) { - switch (cur_dance(state)) { - case SINGLE_TAP: - tap_code16(C(KC_END)); - break; - case DOUBLE_TAP: - tap_code16(C(KC_HOME)); - break; - } -} - -int kp_state = 0; - -void kp_finished(qk_tap_dance_state_t *state, void *user_data) { - kp_state = hold_cur_dance(state); - switch (kp_state) { - case SINGLE_TAP: - tap_code(KC_SPC); - break; - default: - layer_invert(_KP); - break; - } -} - -void kp_reset(qk_tap_dance_state_t *state, void *user_data) { - switch (kp_state) { - case SINGLE_HOLD: - case DOUBLE_HOLD: - case TRIPLE_HOLD: - layer_invert(_KP); - break; - } -} - -enum { - TD_LDCTL, - TD_G, - TD_KP, -}; - -qk_tap_dance_action_t tap_dance_actions[] = { - [TD_LDCTL] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ctl_finished, ctl_reset), - [TD_G] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, g_finished, NULL), - [TD_KP] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, kp_finished, kp_reset), -}; - -// Layers - -const uint16_t PROGMEM keymaps[_LAYER_MAX][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, - 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, - MY_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_ADJUST), - TD(TD_LDCTL), MY_GUI, MY_ALT, MY_BSPC, TD(TD_KP), MY_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT - ), - [_RPT] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - [_GAME] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - KC_LCTL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, KC_LALT, KC_SPC, KC_LALT, _______, _______, _______, _______, _______, _______ - ), - [_FUNC] = LAYOUT( - KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_F13, - _______, _______, FW_WRD, KB_EOL, TG(_RPT), _______, KB_COPY, KC_PGUP, _______, _______, KB_PASTE, KC_SLCK, _______, MY_CALC, - _______, KB_BOL, _______, KC_PGDN, _______, TD(TD_G), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, - _______, _______, KC_DEL, _______, _______, BK_WRD, _______, _______, _______, _______, _______, _______, KC_NO, - _______, MY_RGUI, MY_RALT, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END - ), - [_KP] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, KC_KP_ASTERISK, _______, _______, _______, _______, _______, _______, - KC_NUMLOCK, _______, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, _______, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_MINUS, _______, _______, _______, - _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_PLUS, _______, _______, - _______, _______, _______, _______, _______, _______, _______, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_SLASH, _______, TG(_KP), - _______, _______, _______, _______, _______, KC_KP_0, KC_KP_DOT, _______, _______, _______, _______ - ), - [_ADJUST] = LAYOUT( - KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_F13, - _______, RGB_SPD, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, _______, _______, _______, KC_PSCR, KC_SLCK, _______, KC_MUTE, - _______, RGB_RMOD, RGB_VAD, RGB_MOD, RGB_HUD, RGB_SAD, _______, _______, TG(_KP), _______, _______, _______, KC_MPLY, - _______, RGB_TOG, KB_MAKE, KB_FLSH, KB_VRSN, KB_BOOT, _______, TG_SYS, _______, _______, _______, _______, _______, - _______, MY_RGUI, MY_RALT, KC_DEL, _______, _______, _______, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT - ), -}; - -const rgblight_segment_t PROGMEM rpt_layer[] = RGBLIGHT_LAYER_SEGMENTS( - {8, 8, HSV_PINK} -); - -const rgblight_segment_t PROGMEM game_layer[] = RGBLIGHT_LAYER_SEGMENTS( - {0, 1, HSV_RED}, - {7, 2, HSV_RED}, - {15, 1, HSV_RED} -); - -const rgblight_segment_t PROGMEM func_layer[] = RGBLIGHT_LAYER_SEGMENTS( - {0, 8, HSV_GREEN} -); - -const rgblight_segment_t PROGMEM kp_layer[] = RGBLIGHT_LAYER_SEGMENTS( - {0, 16, HSV_ORANGE} -); - -const rgblight_segment_t PROGMEM adjust_layer[] = RGBLIGHT_LAYER_SEGMENTS( - {0, 16, HSV_BLUE} -); - -const rgblight_segment_t PROGMEM capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS( - {10, 4, HSV_WHITE} -); - -const rgblight_segment_t PROGMEM numlock_layer[] = RGBLIGHT_LAYER_SEGMENTS( - {0, 2, HSV_PURPLE}, - {14, 2, HSV_PURPLE} -); - - -enum rgb_layer_index { - L_RPT, - L_GAME, - L_FUNC, - L_KP, - L_ADJUST, - L_CAPSLOCK, - L_NUMLOCK, -}; - -const rgblight_segment_t * const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( - [L_RPT] = rpt_layer, - [L_GAME] = game_layer, - [L_FUNC] = func_layer, - [L_KP] = kp_layer, - [L_ADJUST] = adjust_layer, - [L_CAPSLOCK] = capslock_layer, - [L_NUMLOCK] = numlock_layer -); - -layer_state_t layer_state_set_keymap(layer_state_t state) { - rgblight_set_layer_state(L_RPT, layer_state_cmp(state, _RPT)); - rgblight_set_layer_state(L_GAME, layer_state_cmp(state, _GAME)); - rgblight_set_layer_state(L_FUNC, layer_state_cmp(state, _FUNC)); - rgblight_set_layer_state(L_KP, layer_state_cmp(state, _KP)); - rgblight_set_layer_state(L_ADJUST, layer_state_cmp(state, _ADJUST)); - rgblight_set_layer_state(L_CAPSLOCK, CAPSLOCK_ON); - rgblight_set_layer_state(L_NUMLOCK, NUMLOCK_ON && layer_state_cmp(state, _KP)); - if (layer_state_cmp(state, _GAME) || layer_state_cmp(state, _RPT)) - autoshift_disable(); - else - autoshift_enable(); - return state; -} - -bool led_update_user(led_t led_state) { - rgblight_set_layer_state(L_CAPSLOCK, led_state.caps_lock); - rgblight_set_layer_state(L_NUMLOCK, led_state.num_lock && layer_state_is(_KP)); - return true; -} - -void keyboard_post_init_keymap(void) { - rgblight_layers = my_rgb_layers; - rgb_was_enabled = rgblight_is_enabled(); - bspc_timer = 0; -} - -LEADER_EXTERNS(); - -void matrix_scan_keymap(void) { - if (rgblight_is_enabled() && timer_elapsed(rgb_timer) > 1000) { - rgb_idle_seconds++; - rgb_timer = timer_read(); - } - if (rgb_idle_seconds > IDLE_TIMEOUT) { - rgb_was_enabled = rgblight_is_enabled(); - rgblight_disable_noeeprom(); - rgb_idle_seconds = 0; - } - // if MY_BSPC is held down too long, pretend like it wasn't and start - // pressing backspace - if (bspc_timer > 0 && timer_elapsed(bspc_timer) > LEADER_TIMEOUT) { - layer_off(_FUNC); - bspc_timer = 0; - register_code(KC_BSPC); - } - LEADER_DICTIONARY() { - leading = false; - leader_end(); - - SEQ_ONE_KEY(KC_R) { - layer_invert(_RPT); - } - SEQ_ONE_KEY(KC_G) { - layer_invert(_GAME); - } - SEQ_ONE_KEY(KC_K) { - layer_invert(_KP); - } - SEQ_ONE_KEY(KC_KP_5) { - layer_invert(_KP); - } - SEQ_TWO_KEYS(KC_SCLN, KC_1) { - send_secret_string(0); - } - SEQ_TWO_KEYS(KC_SCLN, KC_2) { - send_secret_string(1); - } - SEQ_TWO_KEYS(KC_SCLN, KC_3) { - send_secret_string(2); - } - SEQ_TWO_KEYS(KC_SCLN, KC_4) { - send_secret_string(3); - } - SEQ_TWO_KEYS(KC_SCLN, KC_5) { - send_secret_string(4); - } - SEQ_TWO_KEYS(KC_SCLN, KC_6) { - send_secret_string(5); - } - SEQ_TWO_KEYS(KC_SCLN, KC_M) { - send_secret_string(0); - } - SEQ_TWO_KEYS(KC_SCLN, KC_COMM) { - send_secret_string(1); - } - SEQ_TWO_KEYS(KC_SCLN, KC_DOT) { - send_secret_string(2); - } - SEQ_TWO_KEYS(KC_SCLN, KC_J) { - send_secret_string(3); - } - SEQ_TWO_KEYS(KC_SCLN, KC_K) { - send_secret_string(4); - } - SEQ_TWO_KEYS(KC_SCLN, KC_L) { - send_secret_string(5); - } - SEQ_ONE_KEY(KC_C) { - tap_code16(C(KC_C)); - } - } -} - -bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { - static bool bspc_del = false; - static bool bspc_initiated_func = false; - bool rc = true; - - rgb_idle_seconds = 0; - if (!rgblight_is_enabled() && rgb_was_enabled) - rgblight_enable_noeeprom(); - - switch (keycode) { - case MY_BSPC: - if (record->event.pressed) { - if (IS_LAYER_ON(_FUNC)) { - // special case: if _FUNC was turned on by another key, - // treat this as KC_DEL and don't do anything else - bspc_del = true; - register_code(KC_DEL); - return false; - } else { - bspc_timer = timer_read(); - bspc_initiated_func = true; - layer_on(_FUNC); - } - } else { - if (bspc_del) { - // special case: if _FUNC was turned on by another key, - // treat this as KC_DEL and don't do anything else - unregister_code(KC_DEL); - bspc_del = false; - return false; - } - - if (bspc_initiated_func) { - layer_off(_FUNC); - bspc_initiated_func = false; - } - - if (bspc_timer > 0) { - // here the key was pressed and released before the timer - // expired, so treat as a backspace tap and pretend we - // never activated _FUNC - bspc_timer = 0; - tap_code(KC_BSPC); - } else { - // the timer went off, so KC_BSPC was registered in - // matrix_scan_keymap. unregister it now - unregister_code(KC_BSPC); - } - } - return false; // special case, return now without resetting timer - // other paths should set rc and break - break; - } - - // if something was pressed while MY_BSPC was held down, keep it pressed by - // disabling the timer - bspc_timer = 0; - return rc; -} - diff --git a/keyboards/dz60/keymaps/jdelkins_ss/rules.mk b/keyboards/dz60/keymaps/jdelkins_ss/rules.mk deleted file mode 100644 index 49346a80e455..000000000000 --- a/keyboards/dz60/keymaps/jdelkins_ss/rules.mk +++ /dev/null @@ -1,8 +0,0 @@ -LEADER_ENABLE = yes -MOUSEKEY_ENABLE = yes -CONSOLE_ENABLE = no -NKRO_ENABLE = no -TAP_DANCE_ENABLE = yes -AUTO_SHIFT_ENABLE = yes -LTO_ENABLE = yes -USER_NAME := jdelkins diff --git a/keyboards/dz60/keymaps/kifinnsson/rules.mk b/keyboards/dz60/keymaps/kifinnsson/rules.mk index 5fb201c88a2a..1874258612c4 100644 --- a/keyboards/dz60/keymaps/kifinnsson/rules.mk +++ b/keyboards/dz60/keymaps/kifinnsson/rules.mk @@ -1,6 +1,6 @@ # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = no # Audio control and System control(+450) \ No newline at end of file diff --git a/keyboards/dz60/keymaps/konstantin_b/rules.mk b/keyboards/dz60/keymaps/konstantin_b/rules.mk index a6e88d49b578..18ea01311fcb 100644 --- a/keyboards/dz60/keymaps/konstantin_b/rules.mk +++ b/keyboards/dz60/keymaps/konstantin_b/rules.mk @@ -1,13 +1,21 @@ -BACKLIGHT_ENABLE = no -BOOTMAGIC_ENABLE = no +USER_NAME := konstantin + +# Generic features +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite COMMAND_ENABLE = yes CONSOLE_ENABLE = yes EXTRAKEY_ENABLE = yes MOUSEKEY_ENABLE = yes NKRO_ENABLE = yes -RGBLIGHT_ENABLE = no -SPACE_CADET_ENABLE = no TAP_DANCE_ENABLE = yes UNICODEMAP_ENABLE = no -USER_NAME = konstantin +# Keyboard-specific features +BACKLIGHT_ENABLE = no +RGBLIGHT_ENABLE = no +VIA_ENABLE = yes + +# Firmware size reduction +GRAVE_ESC_ENABLE = no +MAGIC_ENABLE = no +SPACE_CADET_ENABLE = no diff --git a/keyboards/dz60/keymaps/krusli/rules.mk b/keyboards/dz60/keymaps/krusli/rules.mk index 1e7c0f745327..3207000a16b3 100644 --- a/keyboards/dz60/keymaps/krusli/rules.mk +++ b/keyboards/dz60/keymaps/krusli/rules.mk @@ -1,7 +1,7 @@ # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/dz60/keymaps/marianas/customLogic.c b/keyboards/dz60/keymaps/marianas/customLogic.c index b7dbcac95b79..f22bd882e90c 100644 --- a/keyboards/dz60/keymaps/marianas/customLogic.c +++ b/keyboards/dz60/keymaps/marianas/customLogic.c @@ -9,7 +9,7 @@ static int16_t fnTimer = 0; -uint32_t layer_state_set_user(uint32_t state) +layer_state_t layer_state_set_user(layer_state_t state) { switch (biton32(state)) { @@ -40,34 +40,34 @@ bool printSqlVerbs(uint16_t keycode, keyrecord_t *record) { switch (keycode) { - case S_LFTJN: - SEND_STRING("LEFT JOIN"); + case S_LFTJN: + SEND_STRING("LEFT JOIN"); activateRelativity(); return false; - case S_INRJN: - SEND_STRING("INNER JOIN "); + case S_INRJN: + SEND_STRING("INNER JOIN "); activateRelativity(); return false; - case S_SLCT: - SEND_STRING("SELECT "); return + case S_SLCT: + SEND_STRING("SELECT "); return false; - case S_FROM: - SEND_STRING("FROM "); return + case S_FROM: + SEND_STRING("FROM "); return false; - case S_DSNCT: - SEND_STRING("DISTINCT "); return + case S_DSNCT: + SEND_STRING("DISTINCT "); return false; - case S_ORDER: - SEND_STRING("ORDER BY "); return + case S_ORDER: + SEND_STRING("ORDER BY "); return false; - case S_WHERE: - SEND_STRING("WHERE "); return + case S_WHERE: + SEND_STRING("WHERE "); return false; - case S_ALTER: + case S_ALTER: SEND_STRING("ALTER SESSION SET CURRENT_SCHEMA = SUPPLY;"); return false; - case S_ASTRK: + case S_ASTRK: SEND_STRING("* "); return false; - + } } return true; diff --git a/keyboards/dz60/keymaps/marianas/customLogic.h b/keyboards/dz60/keymaps/marianas/customLogic.h index f0e6ecdcac1c..29198d60b2ed 100644 --- a/keyboards/dz60/keymaps/marianas/customLogic.h +++ b/keyboards/dz60/keymaps/marianas/customLogic.h @@ -1,7 +1,7 @@ #define fnTimeout 500 -uint32_t layer_state_set_user(uint32_t state); +layer_state_t layer_state_set_user(layer_state_t state); bool printSqlVerbs(uint16_t keycode, keyrecord_t *record); diff --git a/keyboards/dz60/keymaps/marianas/rules.mk b/keyboards/dz60/keymaps/marianas/rules.mk index b68cc80cf725..11eb15fe15f5 100644 --- a/keyboards/dz60/keymaps/marianas/rules.mk +++ b/keyboards/dz60/keymaps/marianas/rules.mk @@ -3,7 +3,7 @@ # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/dz60/keymaps/mechmerlin/readme.md b/keyboards/dz60/keymaps/mechmerlin/readme.md index 76ff54de548b..9c53288feac0 100644 --- a/keyboards/dz60/keymaps/mechmerlin/readme.md +++ b/keyboards/dz60/keymaps/mechmerlin/readme.md @@ -45,7 +45,7 @@ This is the control layer also known as layer 2. It utilizes the following: --- ### RESET -As long `BOOTMAGIC_ENABLE` is set to `yes` in `rules.mk`, the DZ60 can be put into bootloader mode by holding the `space` key and the `b` key while plugging in. However sometmes this doesn't work or is troublesome to do, might as well use the `RESET` keycode to accomplish this. +As long `BOOTMAGIC_ENABLE` is set to `yes` in `rules.mk`, the DZ60 can be put into bootloader mode by holding the `Escape` key while plugging in. However sometmes this doesn't work or is troublesome to do, might as well use the `RESET` keycode to accomplish this. ### RSFT_T(KC_SLSH) diff --git a/keyboards/dz60/keymaps/niclake/config.h b/keyboards/dz60/keymaps/niclake/config.h new file mode 100644 index 000000000000..9028fcf9fbb0 --- /dev/null +++ b/keyboards/dz60/keymaps/niclake/config.h @@ -0,0 +1,18 @@ +/* + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define TAPPING_TOGGLE 2 diff --git a/keyboards/dz60/keymaps/niclake/keymap.c b/keyboards/dz60/keymaps/niclake/keymap.c new file mode 100644 index 000000000000..6191e18c0b13 --- /dev/null +++ b/keyboards/dz60/keymaps/niclake/keymap.c @@ -0,0 +1,82 @@ +/* + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _QWERTY, + _FN, + _ADJ +}; + +enum custom_keycodes { + COLEMAK = SAFE_RANGE, + QWERTY, + FN, + ADJ, + MACWIN +}; + +#define COLEMAK DF(_BASE) +#define QWERTY DF(_QWERTY) +#define RAISE MO(_RAISE) +#define LOWER MO(_LOWER) +#define ADJUST TT(_ADJUST) +#define MACWIN MAGIC_TOGGLE_ALT_GUI +#define RGB_ON RGB_MODE_PLAIN +#define RGB_TW RGB_MODE_TWINKLE + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, + FN, 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_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL + ), + + [_QWERTY] = LAYOUT( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + FN, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, LOWER, KC_RCTL + ), + + [_RAISE] = LAYOUT( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, + _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, _______, KC_PGUP, KC_UP, KC_PGDN, KC_PSCR, _______, _______, _______, + _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_HOME, _______, KC_END, _______, KC_CAPS, + _______, _______, _______, _______, _______, _______, ADJUST, _______ + ), + + [_LOWER] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + ADJUST, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_ADJUST] = LAYOUT( + XXXXXXX, RGB_ON, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_G, RGB_M_TW, RGB_M_T, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, + ADJUST, MACWIN, XXXXXXX, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + ) +}; diff --git a/keyboards/dz60/keymaps/niclake/readme.md b/keyboards/dz60/keymaps/niclake/readme.md new file mode 100644 index 000000000000..a36c32d2465a --- /dev/null +++ b/keyboards/dz60/keymaps/niclake/readme.md @@ -0,0 +1,12 @@ +# Nic Lake's DZ60 Layout + +This is Nic's DZ60 layout. + +- Colemak base layer w/ QWERTY support +- Caps -> FN +- Bottom row set up for Mac usage (use `MACWIN`/`AG_TOGG` to toggle) +- Latching Numpad layer for data entry +- Uses [Space Cadet shift keys](https://docs.qmk.fm/#/feature_space_cadet?id=usage) +- Experimenting with [Home Row Mods](https://precondition.github.io/home-row-mods) + +![Nic's DZ60 Layout](https://i.imgur.com/Lmw08LT.jpg) \ No newline at end of file diff --git a/keyboards/dz60/keymaps/niclake/rules.mk b/keyboards/dz60/keymaps/niclake/rules.mk new file mode 100644 index 000000000000..31d6053e03d9 --- /dev/null +++ b/keyboards/dz60/keymaps/niclake/rules.mk @@ -0,0 +1,3 @@ +COMMAND_ENABLE = no +RGBLIGHT_ENABLE = yes +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite diff --git a/keyboards/dz60/keymaps/olligranlund_iso/keymap.c b/keyboards/dz60/keymaps/olligranlund_iso/keymap.c index 74953764fdc9..b5cc920b565c 100644 --- a/keyboards/dz60/keymaps/olligranlund_iso/keymap.c +++ b/keyboards/dz60/keymaps/olligranlund_iso/keymap.c @@ -1,3 +1,19 @@ +/* Copyright 2020 Oliver Granlund + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #include QMK_KEYBOARD_H /* ISO 60 layout by olligranlund @@ -19,20 +35,79 @@ * `-----------------------------------------------------------------------------------------' */ +enum custom_keycodes { + EMOJI_DANCERS = SAFE_RANGE, + EMOJI_PERJANTAI, + EMOJI_THISISFINE, + EMOJI_KOVAAAJOA, +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case EMOJI_DANCERS: + if (record->event.pressed) { + // when keycode QMKBEST is pressed + SEND_STRING(">dancers>"); + } + break; + + case EMOJI_PERJANTAI: + if (record->event.pressed) { + // when keycode QMKBEST is pressed + SEND_STRING(">perjantaideploy>"); + } + break; + + case EMOJI_THISISFINE: + if (record->event.pressed) { + // when keycode QMKBEST is pressed + SEND_STRING(">this/is/fine>"); + } + break; + + case EMOJI_KOVAAAJOA: + if (record->event.pressed) { + // when keycode QMKBEST is pressed + SEND_STRING(">kovaaajoa>"); + } + break; + } + + return true; +}; + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // 0 Base LAYOUT_60_iso_split_space_bs_rshift( 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_DEL, 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, - MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, 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_RSFT, KC_PSCR, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL), + MO(2), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, 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_RSFT, TG(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(3), KC_APP, KC_RCTL), + // 1 Base with arrows + LAYOUT_60_iso_split_space_bs_rshift( + 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_DEL, 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, + MO(2), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, 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_UP, KC_TRNS, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT), + + // 2 FN LAYOUT_60_iso_split_space_bs_rshift( KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, - KC_NO, KC_MPRV, KC_MPLY, KC_MNXT, KC_NO, KC_NO, KC_NO, KC_PGDOWN,KC_UP, KC_PGUP, KC_NO, KC_NO, KC_NO, - KC_NO, KC_VOLD, KC_MUTE, KC_VOLU, KC_NO, KC_NO, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_MPRV, KC_MPLY, KC_MNXT, KC_NO, KC_NO, KC_NO, KC_PGDN, KC_UP, KC_PGUP, KC_NO, KC_NO, KC_NO, + KC_NO, KC_VOLD, KC_MUTE, KC_VOLU, KC_NO, KC_NO, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, KC_NO, KC_NO, KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_END, KC_NO, KC_NO, KC_NO, KC_NO, KC_RSFT, KC_CAPS, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_NO, KC_APP, KC_RCTL), + + // 3 FN with RGB and macros + LAYOUT_60_iso_split_space_bs_rshift( + KC_GRV, RGB_TOG, RGB_MOD, RGB_RMOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_HUD, RGB_SAD, RGB_VAD, KC_F10, KC_F11, KC_F12, KC_DEL, RESET, + KC_NO, KC_NO, EMOJI_DANCERS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, EMOJI_PERJANTAI, EMOJI_THISISFINE,EMOJI_KOVAAAJOA, KC_NO, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, KC_NO, KC_NO, + KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_END, KC_NO, KC_NO, KC_NO, KC_NO, KC_RSFT, KC_CAPS, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_NO, KC_APP, KC_RCTL), }; diff --git a/keyboards/dz60/keymaps/olligranlund_iso/readme.md b/keyboards/dz60/keymaps/olligranlund_iso/readme.md index 6aa4007d3871..77869e4361f8 100644 --- a/keyboards/dz60/keymaps/olligranlund_iso/readme.md +++ b/keyboards/dz60/keymaps/olligranlund_iso/readme.md @@ -1,6 +1,6 @@ -# DZ60 with splitted parts +# DZ60 with splitted parts with VIA support ### by Oliver Granlund -![Finished product](https://i.imgur.com/HlEo5Yg.jpg) +![Finished product](https://i.imgur.com/HlEo5Ygl.jpg) This is still under progress, but currently works on Windows as a daily driver. \ No newline at end of file diff --git a/keyboards/dz60/keymaps/olligranlund_iso/rules.mk b/keyboards/dz60/keymaps/olligranlund_iso/rules.mk new file mode 100644 index 000000000000..9008ce984f86 --- /dev/null +++ b/keyboards/dz60/keymaps/olligranlund_iso/rules.mk @@ -0,0 +1,3 @@ +EXTRAKEY_ENABLE = yes +VIA_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/dz60/keymaps/olligranlund_iso_v2/keymap.c b/keyboards/dz60/keymaps/olligranlund_iso_v2/keymap.c new file mode 100644 index 000000000000..76fdedbbd68a --- /dev/null +++ b/keyboards/dz60/keymaps/olligranlund_iso_v2/keymap.c @@ -0,0 +1,113 @@ +/* Copyright 2020 Oliver Granlund + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +/* ISO 60 layout by olligranlund +* +* This layout starts from a standard ISO 60% layout, and adds one function layer. +* If you wish to only have one wide spacebar, you can easily do that by dismissing the "side" spacebar switches. +* +* Default Layer +* ,-----------------------------------------------------------------------------------------. +* | Esc | 1 ! | 2 " | 3 § | 4 $ | 5 % | 6 & | 7 / | 8 ( | 9 ) | 0 = | ß ? | ´ ` | Del | BSPC| +* |-----------------------------------------------------------------------------------------| +* | Tab | Q | W | E | R | T | Y | U | I | O | P | Ä | + * | Enter | +* |---------------------------------------------------------------------------------- | +* | FN | A | S | D | F | G | H | J | K | L | Ö | Ü | # ' | | +* |-----------------------------------------------------------------------------------------| +* | Shift | < > | Z | X | C | V | B | N | M | , ; | . : | - _ | Shift |Shift| +* |-----------------------------------------------------------------------------------------| +* | LCtl | LGUI | LAlt | Space | Space | Space | RAlt | FN | App | RCtl | | +* `-----------------------------------------------------------------------------------------' +*/ + +enum custom_keycodes { + EMOJI_DANCERS = SAFE_RANGE, + EMOJI_PERJANTAI, + EMOJI_THISISFINE, + EMOJI_KOVAAAJOA, +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case EMOJI_DANCERS: + if (record->event.pressed) { + // when keycode QMKBEST is pressed + SEND_STRING(">dancers>"); + } + break; + + case EMOJI_PERJANTAI: + if (record->event.pressed) { + // when keycode QMKBEST is pressed + SEND_STRING(">perjantaideploy>"); + } + break; + + case EMOJI_THISISFINE: + if (record->event.pressed) { + // when keycode QMKBEST is pressed + SEND_STRING(">this/is/fine>"); + } + break; + + case EMOJI_KOVAAAJOA: + if (record->event.pressed) { + // when keycode QMKBEST is pressed + SEND_STRING(">kovaaajoa>"); + } + break; + } + + return true; +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + // 0 Base + LAYOUT_60_iso_5x1u_split_bs_rshift_spc( + 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_DEL, 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, + MO(2), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, 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_RSFT, TG(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(3), KC_APP, KC_PSCR, KC_RCTL), + + // 1 Base with arrows + LAYOUT_60_iso_5x1u_split_bs_rshift_spc( + 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_DEL, 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, + MO(2), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, 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_UP, KC_TRNS, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(3), KC_LEFT, KC_DOWN, KC_RGHT), + + // 2 FN + LAYOUT_60_iso_5x1u_split_bs_rshift_spc( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, + KC_NO, KC_MPRV, KC_MPLY, KC_MNXT, KC_NO, KC_NO, KC_NO, KC_PGDN, KC_UP, KC_PGUP, KC_NO, KC_NO, KC_NO, + KC_NO, KC_VOLD, KC_MUTE, KC_VOLU, KC_NO, KC_NO, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, KC_NO, KC_NO, + KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_END, KC_NO, KC_NO, KC_NO, KC_NO, KC_RSFT, KC_CAPS, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_NO, KC_APP, KC_PSCR, KC_RCTL), + + // 3 FN with RGB and macros + LAYOUT_60_iso_5x1u_split_bs_rshift_spc( + KC_GRV, RGB_TOG, RGB_MOD, RGB_RMOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_HUD, RGB_SAD, RGB_VAD, KC_F10, KC_F11, KC_F12, KC_DEL, RESET, + KC_NO, KC_NO, EMOJI_DANCERS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, EMOJI_PERJANTAI, EMOJI_THISISFINE,EMOJI_KOVAAAJOA, KC_NO, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, KC_NO, KC_NO, + KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_END, KC_NO, KC_NO, KC_NO, KC_NO, KC_RSFT, KC_CAPS, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_NO, KC_APP, KC_PSCR, KC_RCTL), + +}; diff --git a/keyboards/dz60/keymaps/olligranlund_iso_v2/readme.md b/keyboards/dz60/keymaps/olligranlund_iso_v2/readme.md new file mode 100644 index 000000000000..1d81116af837 --- /dev/null +++ b/keyboards/dz60/keymaps/olligranlund_iso_v2/readme.md @@ -0,0 +1,6 @@ +# DZ60 with splitted parts with VIA support +### by Oliver Granlund + +![Finished product](https://i.imgur.com/AT1Lyrxl.jpg) + +This is still under progress, but currently works on Windows as a daily driver. Also added macros for Slack emojis \ No newline at end of file diff --git a/keyboards/dz60/keymaps/olligranlund_iso_v2/rules.mk b/keyboards/dz60/keymaps/olligranlund_iso_v2/rules.mk new file mode 100644 index 000000000000..9008ce984f86 --- /dev/null +++ b/keyboards/dz60/keymaps/olligranlund_iso_v2/rules.mk @@ -0,0 +1,3 @@ +EXTRAKEY_ENABLE = yes +VIA_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/dz60/keymaps/pinpox/rules.mk b/keyboards/dz60/keymaps/pinpox/rules.mk index fcf3767e1663..7e4fd5d3491d 100644 --- a/keyboards/dz60/keymaps/pinpox/rules.mk +++ b/keyboards/dz60/keymaps/pinpox/rules.mk @@ -1 +1 @@ -BOOTMAGIC_ENABLE = lite +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite diff --git a/keyboards/dz60/keymaps/split_space_arrows/rules.mk b/keyboards/dz60/keymaps/split_space_arrows/rules.mk index 5d38b9d367dc..81c7b3f26314 100644 --- a/keyboards/dz60/keymaps/split_space_arrows/rules.mk +++ b/keyboards/dz60/keymaps/split_space_arrows/rules.mk @@ -1,6 +1,6 @@ # Build Options # override the options specified in dz60/rules.mk -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow diff --git a/keyboards/dz60/keymaps/spotpuff/rules.mk b/keyboards/dz60/keymaps/spotpuff/rules.mk index 27905483738a..7b4abdbc1bae 100644 --- a/keyboards/dz60/keymaps/spotpuff/rules.mk +++ b/keyboards/dz60/keymaps/spotpuff/rules.mk @@ -1 +1 @@ -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite diff --git a/keyboards/dz60/keymaps/twschum_b_4_10/rules.mk b/keyboards/dz60/keymaps/twschum_b_4_10/rules.mk index 1610eace747d..b3e56546acd9 100644 --- a/keyboards/dz60/keymaps/twschum_b_4_10/rules.mk +++ b/keyboards/dz60/keymaps/twschum_b_4_10/rules.mk @@ -1,6 +1,6 @@ # Build Options # override the options specified in dz60/rules.mk -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 diff --git a/keyboards/dz60/keymaps/xtonhasvim/keymap.c b/keyboards/dz60/keymaps/xtonhasvim/keymap.c index 34b724aaad64..9a482686d888 100644 --- a/keyboards/dz60/keymaps/xtonhasvim/keymap.c +++ b/keyboards/dz60/keymaps/xtonhasvim/keymap.c @@ -69,7 +69,7 @@ void matrix_init_user(void) { user_led_off(); } -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { static uint32_t last_state = 0; if(last_state != state) { diff --git a/keyboards/dz60/rules.mk b/keyboards/dz60/rules.mk index 1671c42e9b28..d957d152b6bd 100644 --- a/keyboards/dz60/rules.mk +++ b/keyboards/dz60/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LAYOUTS = 60_ansi 60_ansi_arrow_split_bs_7u_spc 60_ansi_arrow 60_ansi_split_bs_rshift 60_hhkb 60_iso 60_abnt2 60_tsangan_hhkb diff --git a/keyboards/dztech/bocc/config.h b/keyboards/dztech/bocc/config.h index e0effdd7b837..95362b01fc3a 100644 --- a/keyboards/dztech/bocc/config.h +++ b/keyboards/dztech/bocc/config.h @@ -51,7 +51,7 @@ #define RGB_DI_PIN E2 #ifdef RGB_DI_PIN # define RGBLIGHT_ANIMATIONS -# define RGBLED_NUM 16 +# define RGBLED_NUM 20 # define RGBLIGHT_HUE_STEP 8 # define RGBLIGHT_SAT_STEP 8 # define RGBLIGHT_VAL_STEP 8 diff --git a/keyboards/dztech/bocc/info.json b/keyboards/dztech/bocc/info.json index 10b4bc5449e1..e06f83f27741 100644 --- a/keyboards/dztech/bocc/info.json +++ b/keyboards/dztech/bocc/info.json @@ -2,8 +2,6 @@ "keyboard_name": "BOCC", "url": "", "maintainer": "DZTECH", - "width": 18.5, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"label":"~", "x":2.5, "y":0}, {"label":"!", "x":3.5, "y":0}, {"label":"@", "x":4.5, "y":0}, {"label":"#", "x":5.5, "y":0}, {"label":"$", "x":6.5, "y":0}, {"label":"%", "x":7.5, "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":"Backspace", "x":15.5, "y":0}, {"x":16.5, "y":0}, {"label":"Home", "x":17.5, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"label":"Tab", "x":2.5, "y":1, "w":1.5}, {"label":"Q", "x":4, "y":1}, {"label":"W", "x":5, "y":1}, {"label":"E", "x":6, "y":1}, {"label":"R", "x":7, "y":1}, {"label":"T", "x":8, "y":1}, {"label":"Y", "x":9, "y":1}, {"label":"U", "x":10, "y":1}, {"label":"I", "x":11, "y":1}, {"label":"O", "x":12, "y":1}, {"label":"P", "x":13, "y":1}, {"label":"{", "x":14, "y":1}, {"label":"}", "x":15, "y":1}, {"label":"|", "x":16, "y":1, "w":1.5}, {"label":"Page Up", "x":17.5, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"label":"Caps Lock", "x":2.5, "y":2, "w":1.75}, {"label":"A", "x":4.25, "y":2}, {"label":"S", "x":5.25, "y":2}, {"label":"D", "x":6.25, "y":2}, {"label":"F", "x":7.25, "y":2}, {"label":"G", "x":8.25, "y":2}, {"label":"H", "x":9.25, "y":2}, {"label":"J", "x":10.25, "y":2}, {"label":"K", "x":11.25, "y":2}, {"label":"L", "x":12.25, "y":2}, {"label":":", "x":13.25, "y":2}, {"label":"\"", "x":14.25, "y":2}, {"label":"Enter", "x":15.25, "y":2, "w":2.25}, {"label":"Page Down", "x":17.5, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2.5, "y":3, "w":1.25}, {"label":"Shift", "x":3.75, "y":3}, {"label":"Z", "x":4.75, "y":3}, {"label":"X", "x":5.75, "y":3}, {"label":"C", "x":6.75, "y":3}, {"label":"V", "x":7.75, "y":3}, {"label":"B", "x":8.75, "y":3}, {"label":"N", "x":9.75, "y":3}, {"label":"M", "x":10.75, "y":3}, {"label":"<", "x":11.75, "y":3}, {"label":">", "x":12.75, "y":3}, {"label":"?", "x":13.75, "y":3}, {"label":"Shift", "x":14.75, "y":3, "w":1.75}, {"label":"\u2191", "x":16.5, "y":3}, {"label":"End", "x":17.5, "y":3}, {"x":0, "y":4}, {"x":1, "y":4}, {"label":"Ctrl", "x":2.5, "y":4, "w":1.25}, {"label":"Win", "x":3.75, "y":4, "w":1.25}, {"label":"Alt", "x":5, "y":4, "w":1.25}, {"x":6.25, "y":4, "w":6.25}, {"label":"Alt", "x":12.5, "y":4, "w":1.25}, {"label":"Fn", "x":13.75, "y":4, "w":1.25}, {"label":"\u2190", "x":15.5, "y":4}, {"label":"\u2193", "x":16.5, "y":4}, {"label":"\u2192", "x":17.5, "y":4}] diff --git a/keyboards/dztech/bocc/rules.mk b/keyboards/dztech/bocc/rules.mk index 2668874ea20a..1f44da3ea6c9 100644 --- a/keyboards/dztech/bocc/rules.mk +++ b/keyboards/dztech/bocc/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/dztech/duo_s/config.h b/keyboards/dztech/duo_s/config.h new file mode 100644 index 000000000000..a108fa665ecc --- /dev/null +++ b/keyboards/dztech/duo_s/config.h @@ -0,0 +1,64 @@ +/* Copyright 2021 DZTECH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x445A +#define PRODUCT_ID 0X1012 +#define DEVICE_VER 0x0001 +#define MANUFACTURER DZTECH +#define PRODUCT DUO-S + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 +#define MATRIX_ROW_PINS { A15, B3, B4, B5, B11 } +#define MATRIX_COL_PINS { B12, B13, B14, A8, B9, C13, C14, C15, A1, A2, A3, A4, A5, A6, A7 } +#define UNUSED_PINS +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +#define RGB_DI_PIN B15 +#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 RGBLIGHT_DEFAULT_MODE (RGBLIGHT_EFFECT_RAINBOW_MOOD + 6) +#define RGBLIGHT_DEFAULT_SPD 15 +#define RGBLED_NUM 16 +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 10 +#define RGBLIGHT_VAL_STEP 10 +#define RGBLIGHT_SLEEP +#endif +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +#define VIA_EEPROM_LAYOUT_OPTIONS_SIZE 2 diff --git a/keyboards/dztech/duo_s/duo_s.c b/keyboards/dztech/duo_s/duo_s.c new file mode 100644 index 000000000000..ca64b1ff5632 --- /dev/null +++ b/keyboards/dztech/duo_s/duo_s.c @@ -0,0 +1,16 @@ +/* Copyright 2021 DZTECH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "duo_s.h" diff --git a/keyboards/dztech/duo_s/duo_s.h b/keyboards/dztech/duo_s/duo_s.h new file mode 100644 index 000000000000..772a5a25ca4d --- /dev/null +++ b/keyboards/dztech/duo_s/duo_s.h @@ -0,0 +1,33 @@ +/* Copyright 2021 DZTECH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define LAYOUT_65_ansi_blocker( \ + 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, K114, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K213, K214, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, \ + K400, K401, K402, K405, K408, K410, K411, K413, K414 \ +) \ +{ \ + { 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, K114 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, KC_NO, K213, K214 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, K314 }, \ + { K400, K401, K402, KC_NO, KC_NO, K405, KC_NO, KC_NO, K408, KC_NO, K410, K411, KC_NO, K413, K414 } \ +} diff --git a/keyboards/dztech/duo_s/info.json b/keyboards/dztech/duo_s/info.json new file mode 100644 index 000000000000..6adac04ae6f9 --- /dev/null +++ b/keyboards/dztech/duo_s/info.json @@ -0,0 +1,10 @@ +{ + "keyboard_name": "duo_s", + "url": "", + "maintainer": "moyi4681", + "layouts": { + "LAYOUT_65_ansi_blocker": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] + } + } +} diff --git a/keyboards/dztech/duo_s/keymaps/default/keymap.c b/keyboards/dztech/duo_s/keymaps/default/keymap.c new file mode 100644 index 000000000000..56c7b7d2f3e6 --- /dev/null +++ b/keyboards/dztech/duo_s/keymaps/default/keymap.c @@ -0,0 +1,50 @@ +/* Copyright 2021 DZTECH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi_blocker( /* Base */ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_65_ansi_blocker( /* FN */ + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, BL_INC, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_DEC, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, RGB_MOD, + _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END + ), + + [2] = LAYOUT_65_ansi_blocker( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [3] = LAYOUT_65_ansi_blocker( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/dztech/duo_s/keymaps/via/keymap.c b/keyboards/dztech/duo_s/keymaps/via/keymap.c new file mode 100644 index 000000000000..667112dea76f --- /dev/null +++ b/keyboards/dztech/duo_s/keymaps/via/keymap.c @@ -0,0 +1,50 @@ +/* Copyright 2021 DZTECH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi_blocker( /* Base */ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_65_ansi_blocker( /* FN */ + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, BL_INC, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_DEC, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, RGB_MOD, + _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END + ), + + [2] = LAYOUT_65_ansi_blocker( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [3] = LAYOUT_65_ansi_blocker( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/thevankeyboards/minivan/keymaps/via/rules.mk b/keyboards/dztech/duo_s/keymaps/via/rules.mk similarity index 100% rename from keyboards/thevankeyboards/minivan/keymaps/via/rules.mk rename to keyboards/dztech/duo_s/keymaps/via/rules.mk diff --git a/keyboards/dztech/duo_s/readme.md b/keyboards/dztech/duo_s/readme.md new file mode 100644 index 000000000000..7346663854d8 --- /dev/null +++ b/keyboards/dztech/duo_s/readme.md @@ -0,0 +1,21 @@ +# DUO-S + +A customizable 65% HOTSWAP keyboard. + +* Keyboard Maintainer: [moyi4681](https://github.com/moyi4681) +* Hardware Supported: moyi4681 +* Hardware Availability: [moyi4681](https://github.com/moyi4681) + +Make example for this keyboard (after setting up your build environment): + + make dztech/duo_s:default + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix +* **Physical reset button**: hold the button on the back of the PCB during plug in cable. +* **Keycode in layout**: Press the key mapped to `RESET` if it is available + +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/dztech/duo_s/rules.mk b/keyboards/dztech/duo_s/rules.mk new file mode 100644 index 000000000000..b6db0aef55b9 --- /dev/null +++ b/keyboards/dztech/duo_s/rules.mk @@ -0,0 +1,21 @@ +# MCU name +MCU = STM32F303 + +# Bootloader selection +BOOTLOADER = stm32-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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 = 65_ansi_blocker \ No newline at end of file diff --git a/keyboards/dztech/dz60rgb/dz60rgb.c b/keyboards/dztech/dz60rgb/dz60rgb.c index aa02fb902d01..81f4846c2c80 100644 --- a/keyboards/dztech/dz60rgb/dz60rgb.c +++ b/keyboards/dztech/dz60rgb/dz60rgb.c @@ -1,7 +1,7 @@ #include "dz60rgb.h" #ifdef RGB_MATRIX_ENABLE -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { { 0, K_14, J_14, L_14 }, { 0, K_13, J_13, L_13 }, { 0, K_12, J_12, L_12 }, diff --git a/keyboards/dztech/dz60rgb/info.json b/keyboards/dztech/dz60rgb/info.json index 0f03fa9f7ead..5cbce57165d7 100644 --- a/keyboards/dztech/dz60rgb/info.json +++ b/keyboards/dztech/dz60rgb/info.json @@ -2,8 +2,6 @@ "keyboard_name": "DZ60RGB", "url": "", "maintainer": "dztech", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/dztech/dz60rgb/keymaps/kgreulich/config.h b/keyboards/dztech/dz60rgb/keymaps/kgreulich/config.h index 3c8872177749..fc836b5ebb35 100644 --- a/keyboards/dztech/dz60rgb/keymaps/kgreulich/config.h +++ b/keyboards/dztech/dz60rgb/keymaps/kgreulich/config.h @@ -31,40 +31,40 @@ #undef DISABLE_RGB_MATRIX_SOLID_MULTISPLASH #undef RGB_MATRIX_STARTUP_MODE #define RGB_MATRIX_FRAMEBUFFER_EFFECTS -#define DISABLE_RGB_MATRIX_SOLID_COLOR -#define DISABLE_RGB_MATRIX_ALPHAS_MODS -#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -#define DISABLE_RGB_MATRIX_BREATHING -#define DISABLE_RGB_MATRIX_BAND_SAT -#define DISABLE_RGB_MATRIX_BAND_VAL -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL -#define DISABLE_RGB_MATRIX_CYCLE_ALL -#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT -#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN -#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN -#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL -#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON -#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL -#define DISABLE_RGB_MATRIX_CYCLE_SPIRAL -#define DISABLE_RGB_MATRIX_DUAL_BEACON -#define DISABLE_RGB_MATRIX_RAINBOW_BEACON -#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS -#define DISABLE_RGB_MATRIX_RAINDROPS -#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS -#define DISABLE_RGB_MATRIX_TYPING_HEATMAP -#define DISABLE_RGB_MATRIX_DIGITAL_RAIN -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -#define DISABLE_RGB_MATRIX_SPLASH -#define DISABLE_RGB_MATRIX_MULTISPLASH -#define DISABLE_RGB_MATRIX_SOLID_SPLASH -#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH +#undef ENABLE_RGB_MATRIX_SOLID_COLOR +#undef ENABLE_RGB_MATRIX_ALPHAS_MODS +#undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#undef ENABLE_RGB_MATRIX_BREATHING +#undef ENABLE_RGB_MATRIX_BAND_SAT +#undef ENABLE_RGB_MATRIX_BAND_VAL +#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#undef ENABLE_RGB_MATRIX_CYCLE_ALL +#undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#undef ENABLE_RGB_MATRIX_DUAL_BEACON +#undef ENABLE_RGB_MATRIX_RAINBOW_BEACON +#undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#undef ENABLE_RGB_MATRIX_RAINDROPS +#undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#undef ENABLE_RGB_MATRIX_TYPING_HEATMAP +#undef ENABLE_RGB_MATRIX_DIGITAL_RAIN +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +//#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#undef ENABLE_RGB_MATRIX_SPLASH +#undef ENABLE_RGB_MATRIX_MULTISPLASH +#undef ENABLE_RGB_MATRIX_SOLID_SPLASH +#undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH diff --git a/keyboards/dztech/dz60rgb/keymaps/matthewrobo/config.h b/keyboards/dztech/dz60rgb/keymaps/matthewrobo/config.h index 1002f010e1f0..c2b14f52845f 100644 --- a/keyboards/dztech/dz60rgb/keymaps/matthewrobo/config.h +++ b/keyboards/dztech/dz60rgb/keymaps/matthewrobo/config.h @@ -13,43 +13,43 @@ #undef RGB_MATRIX_STARTUP_MODE #define RGB_MATRIX_FRAMEBUFFER_EFFECTS -// #define DISABLE_RGB_MATRIX_SOLID_COLOR -// #define DISABLE_RGB_MATRIX_ALPHAS_MODS -// #define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -// #define DISABLE_RGB_MATRIX_BREATHING -#define DISABLE_RGB_MATRIX_BAND_SAT -// #define DISABLE_RGB_MATRIX_BAND_VAL -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL -#define DISABLE_RGB_MATRIX_CYCLE_ALL -#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT -#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN -#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN -#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL -#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON -#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL -// #define DISABLE_RGB_MATRIX_CYCLE_SPIRAL -#define DISABLE_RGB_MATRIX_DUAL_BEACON -#define DISABLE_RGB_MATRIX_RAINBOW_BEACON -#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS -#define DISABLE_RGB_MATRIX_RAINDROPS -#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS -// #define DISABLE_RGB_MATRIX_TYPING_HEATMAP -#define DISABLE_RGB_MATRIX_DIGITAL_RAIN -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -// #define DISABLE_RGB_MATRIX_SPLASH -// #define DISABLE_RGB_MATRIX_MULTISPLASH -// #define DISABLE_RGB_MATRIX_SOLID_SPLASH -// #define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH +// #undef ENABLE_RGB_MATRIX_SOLID_COLOR +// #undef ENABLE_RGB_MATRIX_ALPHAS_MODS +// #undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +// #undef ENABLE_RGB_MATRIX_BREATHING +#undef ENABLE_RGB_MATRIX_BAND_SAT +// #undef ENABLE_RGB_MATRIX_BAND_VAL +#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#undef ENABLE_RGB_MATRIX_CYCLE_ALL +#undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +// #undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#undef ENABLE_RGB_MATRIX_DUAL_BEACON +#undef ENABLE_RGB_MATRIX_RAINBOW_BEACON +#undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#undef ENABLE_RGB_MATRIX_RAINDROPS +#undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +// #undef ENABLE_RGB_MATRIX_TYPING_HEATMAP +#undef ENABLE_RGB_MATRIX_DIGITAL_RAIN +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// #undef ENABLE_RGB_MATRIX_SPLASH +// #undef ENABLE_RGB_MATRIX_MULTISPLASH +// #undef ENABLE_RGB_MATRIX_SOLID_SPLASH +// #undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH #define QMK_KEYS_PER_SCAN 4 diff --git a/keyboards/dztech/dz60rgb/keymaps/moults31/keymap.c b/keyboards/dztech/dz60rgb/keymaps/moults31/keymap.c new file mode 100644 index 000000000000..98802270a6f6 --- /dev/null +++ b/keyboards/dztech/dz60rgb/keymaps/moults31/keymap.c @@ -0,0 +1,42 @@ +/* + * Copyright 2021 moults31 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_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, + CTL_T(KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_DOT, KC_SLSH, KC_RSHFT, KC_UP, LT(2, KC_DEL), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_COMM, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + _______, _______, KC_UP, _______, _______, _______, KC_CALC, _______, KC_INS, _______, KC_PSCR, KC_HOME, KC_END, RESET, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, EEP_RST, + _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, KC_MPLY, KC_VOLU, KC_MUTE, + _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT + ), + [2] = LAYOUT( + RGB_MOD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + _______, _______, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, RESET, + _______, RGB_SAD, RGB_HUD, RGB_SAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, _______, + _______, _______, _______, _______, _______, _______, RGB_SPI, RGB_VAD, RGB_SPD + ), +}; diff --git a/keyboards/dztech/dz60rgb/keymaps/moults31/readme.md b/keyboards/dztech/dz60rgb/keymaps/moults31/readme.md new file mode 100644 index 000000000000..19bccf13e6c8 --- /dev/null +++ b/keyboards/dztech/dz60rgb/keymaps/moults31/readme.md @@ -0,0 +1,11 @@ +# moults31 DZ60RBG V2 Layout + +Similar to the default dz60rgb v2 layout with some minor changes for quality of life in programming. + +Brief summary of improvements over default: +* More intuitive media keys in layer 1 +* More intuitive RGB control keys in layer 2 +* Standard left-alt +* Anne Pro 2 style home/end placement in layer 1 +* Grave key moved to right-alt position for easier ctrl-grave vscode shortcut +* Removed layer 4 (mac layout?) diff --git a/keyboards/dztech/dz60rgb/keymaps/moults31/rules.mk b/keyboards/dztech/dz60rgb/keymaps/moults31/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/dztech/dz60rgb/keymaps/moults31/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/dztech/dz60rgb/keymaps/piv3rt/config.h b/keyboards/dztech/dz60rgb/keymaps/piv3rt/config.h index a2b29c03be5d..bdc2a1a057a6 100644 --- a/keyboards/dztech/dz60rgb/keymaps/piv3rt/config.h +++ b/keyboards/dztech/dz60rgb/keymaps/piv3rt/config.h @@ -18,39 +18,39 @@ along with this program. If not, see . #define FORCE_NKRO #define TAPPING_TERM 100 -#define DISABLE_RGB_MATRIX_ALPHAS_MODS -#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -#define DISABLE_RGB_MATRIX_BREATHING -#define DISABLE_RGB_MATRIX_BAND_SAT -#define DISABLE_RGB_MATRIX_BAND_VAL -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL -#define DISABLE_RGB_MATRIX_CYCLE_ALL -//#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT -#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN -#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN -#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL -#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON -#define DISABLE_RGB_MATRIX_DUAL_BEACON -#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL -#define DISABLE_RGB_MATRIX_CYCLE_SPIRAL -#define DISABLE_RGB_MATRIX_RAINBOW_BEACON -#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS -#define DISABLE_RGB_MATRIX_RAINDROPS -#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS -#define DISABLE_RGB_MATRIX_TYPING_HEATMAP -#define DISABLE_RGB_MATRIX_DIGITAL_RAIN -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -#define DISABLE_RGB_MATRIX_SPLASH -#define DISABLE_RGB_MATRIX_MULTISPLASH -#define DISABLE_RGB_MATRIX_SOLID_SPLASH -#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH +#undef ENABLE_RGB_MATRIX_ALPHAS_MODS +#undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#undef ENABLE_RGB_MATRIX_BREATHING +#undef ENABLE_RGB_MATRIX_BAND_SAT +#undef ENABLE_RGB_MATRIX_BAND_VAL +#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#undef ENABLE_RGB_MATRIX_CYCLE_ALL +//#undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#undef ENABLE_RGB_MATRIX_DUAL_BEACON +#undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#undef ENABLE_RGB_MATRIX_RAINBOW_BEACON +#undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#undef ENABLE_RGB_MATRIX_RAINDROPS +#undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#undef ENABLE_RGB_MATRIX_TYPING_HEATMAP +#undef ENABLE_RGB_MATRIX_DIGITAL_RAIN +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#undef ENABLE_RGB_MATRIX_SPLASH +#undef ENABLE_RGB_MATRIX_MULTISPLASH +#undef ENABLE_RGB_MATRIX_SOLID_SPLASH +#undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH diff --git a/keyboards/dztech/dz60rgb/keymaps/piv3rt/keymap.c b/keyboards/dztech/dz60rgb/keymaps/piv3rt/keymap.c index b4b77b392d05..38c5959374a0 100644 --- a/keyboards/dztech/dz60rgb/keymaps/piv3rt/keymap.c +++ b/keyboards/dztech/dz60rgb/keymaps/piv3rt/keymap.c @@ -93,8 +93,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { void reset_leds(void) { current_profile = OFF; - rgblight_enable(); - rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT); + rgb_matrix_enable(); + rgb_matrix_mode(RGB_MATRIX_SOLID_COLOR); rgb_matrix_sethsv(0x6a, 0x33, 0xff); } diff --git a/keyboards/dztech/dz60rgb/keymaps/via/config.h b/keyboards/dztech/dz60rgb/keymaps/via/config.h new file mode 100644 index 000000000000..8ef0df8ee87c --- /dev/null +++ b/keyboards/dztech/dz60rgb/keymaps/via/config.h @@ -0,0 +1,21 @@ +/* Copyright 2021 DZTECH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#undef ENABLE_RGB_MATRIX_PIXEL_FLOW +#undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL +#undef ENABLE_RGB_MATRIX_PIXEL_RAIN diff --git a/keyboards/dztech/dz60rgb/keymaps/xunz/config.h b/keyboards/dztech/dz60rgb/keymaps/xunz/config.h index 60220cbbf746..cfeba003bd47 100644 --- a/keyboards/dztech/dz60rgb/keymaps/xunz/config.h +++ b/keyboards/dztech/dz60rgb/keymaps/xunz/config.h @@ -8,43 +8,43 @@ #define RGB_MATRIX_FRAMEBUFFER_EFFECTS -// #define DISABLE_RGB_MATRIX_SOLID_COLOR -// #define DISABLE_RGB_MATRIX_ALPHAS_MODS -// #define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -// #define DISABLE_RGB_MATRIX_BREATHING -// #define DISABLE_RGB_MATRIX_BAND_SAT -// #define DISABLE_RGB_MATRIX_BAND_VAL -// #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -// #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL -// #define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT -// #define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL -// #define DISABLE_RGB_MATRIX_CYCLE_ALL -// #define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT -// #define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN -// #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN -// #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL -// #define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON -// #define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL -// #define DISABLE_RGB_MATRIX_CYCLE_SPIRAL -// #define DISABLE_RGB_MATRIX_DUAL_BEACON -// #define DISABLE_RGB_MATRIX_RAINBOW_BEACON -// #define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS -// #define DISABLE_RGB_MATRIX_RAINDROPS -// #define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS -// #define DISABLE_RGB_MATRIX_TYPING_HEATMAP -// #define DISABLE_RGB_MATRIX_DIGITAL_RAIN -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -// #define DISABLE_RGB_MATRIX_SPLASH -// #define DISABLE_RGB_MATRIX_MULTISPLASH -// #define DISABLE_RGB_MATRIX_SOLID_SPLASH -// #define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH +// #undef ENABLE_RGB_MATRIX_SOLID_COLOR +// #undef ENABLE_RGB_MATRIX_ALPHAS_MODS +// #undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +// #undef ENABLE_RGB_MATRIX_BREATHING +// #undef ENABLE_RGB_MATRIX_BAND_SAT +// #undef ENABLE_RGB_MATRIX_BAND_VAL +// #undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +// #undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +// #undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +// #undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +// #undef ENABLE_RGB_MATRIX_CYCLE_ALL +// #undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +// #undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +// #undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN +// #undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +// #undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +// #undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +// #undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL +// #undef ENABLE_RGB_MATRIX_DUAL_BEACON +// #undef ENABLE_RGB_MATRIX_RAINBOW_BEACON +// #undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +// #undef ENABLE_RGB_MATRIX_RAINDROPS +// #undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +// #undef ENABLE_RGB_MATRIX_TYPING_HEATMAP +// #undef ENABLE_RGB_MATRIX_DIGITAL_RAIN +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// #undef ENABLE_RGB_MATRIX_SPLASH +// #undef ENABLE_RGB_MATRIX_MULTISPLASH +// #undef ENABLE_RGB_MATRIX_SOLID_SPLASH +// #undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH #define QMK_KEYS_PER_SCAN 4 @@ -53,4 +53,3 @@ #define NO_ACTION_ONESHOT #define TAPPING_FORCE_HOLD #define IGNORE_MOD_TAP_INTERRUPT - diff --git a/keyboards/dztech/dz60rgb/readme.md b/keyboards/dztech/dz60rgb/readme.md index 1b2eb6f85ff9..6accc60765f3 100644 --- a/keyboards/dztech/dz60rgb/readme.md +++ b/keyboards/dztech/dz60rgb/readme.md @@ -8,14 +8,17 @@ A hotswap 60% RGB keyboard. * Hardware Supported: DZtech DZ60RGB V1 and V2 * Hardware Availability: [KBDfans](https://kbdfans.com/) -There are two versions of the DZ60RGB. Please use the appropriate firmware for your board. +There are three versions of the DZ60RGB. Please use the appropriate firmware for your board. * V1: STM32F303 (Arm), takes .bin files * V2: ATmega32U4 (AVR), takes .hex files +* V2.1: ATmega32U4 (AVR), takes .bin files [Flash Manual](https://docs.google.com/document/d/111qx6Qec4JqtIhWaZlMND-VuRnFtn9a-gJaHN8fsL7M/edit?usp=sharing) + Started shipping in June 2021 as a slightly modified version of v2. Make example for this keyboard (after setting up your build environment): make dztech/dz60rgb/v1:default # Arm (STM32F303) make dztech/dz60rgb/v2:default # AVR (ATmega32U4) + make dztech/dz60rgb/v2_1:default # AVR (ATmega32U4) 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/dztech/dz60rgb/v1/config.h b/keyboards/dztech/dz60rgb/v1/config.h index 6e5b3da6ffbd..0d464b5d6b7b 100644 --- a/keyboards/dztech/dz60rgb/v1/config.h +++ b/keyboards/dztech/dz60rgb/v1/config.h @@ -37,17 +37,61 @@ #ifdef RGB_MATRIX_ENABLE # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended # define RGB_MATRIX_KEYPRESSES # define RGB_MATRIX_LED_PROCESS_LIMIT 4 # define RGB_MATRIX_LED_FLUSH_LIMIT 26 -# define DISABLE_RGB_MATRIX_SPLASH -# define DISABLE_RGB_MATRIX_MULTISPLASH -# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// # define ENABLE_RGB_MATRIX_SPLASH +// # define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + # define RGB_MATRIX_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/v1/rules.mk b/keyboards/dztech/dz60rgb/v1/rules.mk index 678eb385c39a..f3ed99ecdb8d 100644 --- a/keyboards/dztech/dz60rgb/v1/rules.mk +++ b/keyboards/dztech/dz60rgb/v1/rules.mk @@ -8,20 +8,16 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output RGB_MATRIX_ENABLE = yes # Use RGB matrix RGB_MATRIX_DRIVER = IS31FL3733 NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in diff --git a/keyboards/dztech/dz60rgb/v2/config.h b/keyboards/dztech/dz60rgb/v2/config.h index df84fff59a23..3db8ea40f510 100644 --- a/keyboards/dztech/dz60rgb/v2/config.h +++ b/keyboards/dztech/dz60rgb/v2/config.h @@ -37,27 +37,59 @@ #ifdef RGB_MATRIX_ENABLE # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended # define RGB_MATRIX_KEYPRESSES # define RGB_MATRIX_FRAMEBUFFER_EFFECTS -# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -# define DISABLE_RGB_MATRIX_BAND_SAT -# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -# define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -# define DISABLE_RGB_MATRIX_SPLASH -# define DISABLE_RGB_MATRIX_MULTISPLASH -# define DISABLE_RGB_MATRIX_SOLID_SPLASH -# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH -# define DISABLE_RGB_MATRIX_DIGITAL_RAIN +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +// # define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// # define ENABLE_RGB_MATRIX_SPLASH +// # define ENABLE_RGB_MATRIX_MULTISPLASH +// # define ENABLE_RGB_MATRIX_SOLID_SPLASH +// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + # define 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/rules.mk b/keyboards/dztech/dz60rgb/v2/rules.mk index f35c9f40c9d6..bc119c682508 100644 --- a/keyboards/dztech/dz60rgb/v2/rules.mk +++ b/keyboards/dztech/dz60rgb/v2/rules.mk @@ -2,32 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output RGB_MATRIX_ENABLE = yes # Use RGB matrix RGB_MATRIX_DRIVER = IS31FL3733 NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in diff --git a/keyboards/dztech/dz60rgb/v2_1/config.h b/keyboards/dztech/dz60rgb/v2_1/config.h new file mode 100644 index 000000000000..d785d1e539ab --- /dev/null +++ b/keyboards/dztech/dz60rgb/v2_1/config.h @@ -0,0 +1,111 @@ +/* Copyright 2021 trankimtung + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x445A +#define PRODUCT_ID 0x1121 +#define DEVICE_VER 0x0003 +#define MANUFACTURER DZTECH +#define PRODUCT DZ60RGB + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/* + * 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 { F5, F4, F1, B3, B2 } +#define MATRIX_COL_PINS { C7, F7, F6, F0, B0, B1, B4, D7, D6, D4, D5, D3, D2, B7 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 3 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +#ifdef RGB_MATRIX_ENABLE +# define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended +# define RGB_MATRIX_KEYPRESSES +# define RGB_MATRIX_FRAMEBUFFER_EFFECTS +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +// # define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// # define ENABLE_RGB_MATRIX_SPLASH +// # define ENABLE_RGB_MATRIX_MULTISPLASH +// # define ENABLE_RGB_MATRIX_SOLID_SPLASH +// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + +# define DRIVER_ADDR_1 0b1010000 +# define DRIVER_COUNT 1 +# define DRIVER_LED_TOTAL 63 +#endif diff --git a/keyboards/dztech/dz60rgb/v2_1/rules.mk b/keyboards/dztech/dz60rgb/v2_1/rules.mk new file mode 100644 index 000000000000..69644fe4891c --- /dev/null +++ b/keyboards/dztech/dz60rgb/v2_1/rules.mk @@ -0,0 +1,27 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = lufa-ms +BOOTLOADER_SIZE = 6144 + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 +RGB_MATRIX_ENABLE = yes # Use RGB matrix +RGB_MATRIX_DRIVER = IS31FL3733 +NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in +LTO_ENABLE = yes + +SPACE_CADET_ENABLE = no +GRAVE_ESC_ENABLE = no diff --git a/keyboards/dztech/dz60rgb_ansi/dz60rgb_ansi.c b/keyboards/dztech/dz60rgb_ansi/dz60rgb_ansi.c index 4bb5938b66ed..0929ddbf4772 100644 --- a/keyboards/dztech/dz60rgb_ansi/dz60rgb_ansi.c +++ b/keyboards/dztech/dz60rgb_ansi/dz60rgb_ansi.c @@ -1,7 +1,7 @@ #include "dz60rgb_ansi.h" #ifdef RGB_MATRIX_ENABLE -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { { 0, K_14, J_14, L_14 }, { 0, K_13, J_13, L_13 }, { 0, K_12, J_12, L_12 }, diff --git a/keyboards/dztech/dz60rgb_ansi/info.json b/keyboards/dztech/dz60rgb_ansi/info.json index 3e55011c1d9c..8431f1770850 100644 --- a/keyboards/dztech/dz60rgb_ansi/info.json +++ b/keyboards/dztech/dz60rgb_ansi/info.json @@ -2,8 +2,6 @@ "keyboard_name": "dz60rgb_ansi", "url": "", "maintainer": "dztech", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_ansi": { "layout": [ diff --git a/keyboards/dztech/dz60rgb_ansi/keymaps/bingocaller/config.h b/keyboards/dztech/dz60rgb_ansi/keymaps/bingocaller/config.h new file mode 100644 index 000000000000..59fc46d260dd --- /dev/null +++ b/keyboards/dztech/dz60rgb_ansi/keymaps/bingocaller/config.h @@ -0,0 +1,27 @@ + /* Copyright 2021 Jesper Nellemann Jakobsen + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define MOUSEKEY_DELAY 0 // default is 300ms +#define MOUSEKEY_INTERVAL 16 // ~ 60Hz (1/60) +#define MOUSEKEY_MAX_SPEED 8 // default is 10; the lower interval, the lower this ought to be +#define MOUSEKEY_TIME_TO_MAX 15 // default is 20 + +#define MOUSEKEY_WHEEL_DELAY 0 // default is 300ms +#define MOUSEKEY_WHEEL_INTERVAL 50 // default is 100ms +#define MOUSEKEY_WHEEL_MAX_SPEED 10 // default is 8 +#define MOUSEKEY_WHEEL_TIME_TO_MAX 30 // default is 40 diff --git a/keyboards/dztech/dz60rgb_ansi/keymaps/bingocaller/keymap.c b/keyboards/dztech/dz60rgb_ansi/keymaps/bingocaller/keymap.c new file mode 100644 index 000000000000..63282e8b6a35 --- /dev/null +++ b/keyboards/dztech/dz60rgb_ansi/keymaps/bingocaller/keymap.c @@ -0,0 +1,128 @@ + /* Copyright 2021 Jesper Nellemann Jakobsen + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layers { + _BASE, + _ARROWS, + _HDUE, /* Home, pgDown, pgUp, End */ + _MOUSE, + _FN +}; + +/* Custom keys */ + +/* Word movement/deletetion */ +#define WORD_BK A(KC_LEFT) +#define WORD_FW A(KC_RIGHT) +#define D_WORD_BK A(KC_BSPACE) +#define D_WORD_FW A(KC_DELETE) +/* Fine volume control */ +#define FVOLU S(A(KC_VOLU)) +#define F_VOLD S(A(KC_VOLD)) +/* Multi-purpose keys */ +#define HYPR_CAPS ALL_T(KC_CAPS) +#define CTL_ESC LCTL_T(KC_ESC) +/* Layer keys */ +#define ARROWS LT(_ARROWS, KC_D) +#define HDUE MO(_HDUE) +#define MOUSP LT(_MOUSE, KC_SPC) +#define FN MO(_FN) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Default layer: + * Space Cadet shifts (parentheses on tap) + * Caps Lock is Control on hold, Esc on tap + * Hyper/Caps Lock on Control keys + * Hold D to activate layer 1 (Arrows) + * Hold Space to activate layer 3 (Mouse keys) + * Hold FN to activate layer 4 (FN layer) + */ + [_BASE] = LAYOUT_60_ansi( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + CTL_ESC, KC_A, KC_S, ARROWS, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, + HYPR_CAPS, KC_LALT, KC_LGUI, MOUSP, KC_RGUI, KC_RALT, FN, HYPR_CAPS + ), + + /* Layer 1: + * Vim arrows (HJKL) + * Vim-like move across words with W(ord), and B(eginning) + * Media controls (fine volume controls using Option+Shift) + * Backspace/Del on N/M + * Hold F to activate layer 2 (HDUE: Home, Down, Up, End) + */ + [_ARROWS] = LAYOUT_60_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, WORD_FW, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, F_VOLD, FVOLU, _______, + _______, _______, _______, _______, HDUE, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, + _______, _______, _______, _______, _______, WORD_BK, KC_BSPC, KC_DEL, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + + /* Layer 2: + * Home, Page Down, Page Up, End + * Delete word forward/back on W/B + */ + [_HDUE] = LAYOUT_60_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, D_WORD_FW, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______, _______, + _______, _______, _______, _______, _______, D_WORD_BK, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + + /* Layer 3: + * Mouse keys + * Cursor movement: HJKL + * MB 1, 2, and 3 on F, D, and S, respectively + * Mouse wheel: up (V), down (R) (reversed because of Natural Scrolling) + * Change mouse acceleration on U, I, O (0, 1, 2) + */ + [_MOUSE] = LAYOUT_60_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, KC_WH_D, _______, _______, KC_ACL0, KC_ACL1, KC_ACL2, _______, _______, _______, _______, + _______, _______, KC_BTN3, KC_BTN2, KC_BTN1, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, _______, _______, _______, + _______, _______, _______, _______, KC_WH_U, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + + /* Layer 4: + * F1-12 + * Del on backspace + * Lots of RGB controls + * RESET firmware on backslash + * Screen brightness: Z (decrease), X (increase) + */ + [_FN] = LAYOUT_60_ansi( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, RGB_M_P, RGB_M_B, RGB_M_R, _______, _______, _______, RESET, + _______, _______, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, RGB_M_SW, RGB_M_SN, RGB_M_K, _______, _______, _______, + _______, KC_BRID, KC_BRIU, _______, _______, _______, _______, RGB_M_X, RGB_M_G, RGB_M_T, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ) + + // TEMPLATE + // LAYOUT_60_ansi( + // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + // _______, _______, _______, _______, _______, _______, _______, _______, + // ), +}; diff --git a/keyboards/dztech/dz60rgb_ansi/keymaps/bingocaller/readme.md b/keyboards/dztech/dz60rgb_ansi/keymaps/bingocaller/readme.md new file mode 100644 index 000000000000..5f65c349dc38 --- /dev/null +++ b/keyboards/dztech/dz60rgb_ansi/keymaps/bingocaller/readme.md @@ -0,0 +1,51 @@ +# MacOS standard-ish 60% keymap with Vim-like arrows + +This is a MacOS-specific keymap for DZ60 RGB ANSI with a bit of Vim arrows and other niceties. + +## Base Layer + +![Graphical representation of the Base Layer](https://i.imgur.com/L66C3ya.png) + +* Space Cadet shifts (parentheses on tap) +* Caps Lock is Control on hold, Esc on tap +* Hyper/Caps Lock on Control keys +* Hold D to activate layer 1 (Arrows) +* Hold Space to activate layer 3 (Mouse keys) +* Hold FN to activate layer 4 (FN layer) + +## Layer 1: "Arrows" + +![Graphical representation of Layer 1](https://i.imgur.com/VirYuoO.png) + +* Vim arrows (HJKL) +* Vim-like move across words with W(ord), and B(eginning) +* Media controls (fine volume controls using Option+Shift) +* Backspace/Del on N/M +* Hold F to activate layer 2 (HDUE: Home, Down, Up, End) + +## Layer 2: "HDUE" + +![Graphical representation of Layer 2](https://i.imgur.com/xWMqCmD.png) + +* **H**ome, Page **D**own, Page **U**p, **E**nd +* Delete word forward/back on W/B + +## Layer 3: "Mouse keys" + +![Graphical representation of Layer 3](https://i.imgur.com/x5vmAyK.png) + +* Mouse keys +* Cursor movement: HJKL +* MB 1, 2, and 3 on F, D, and S, respectively +* Mouse wheel: up (V), down (R) (reversed because of Natural Scrolling) +* Change mouse acceleration on U, I, O (0, 1, 2) + +## Layer 4: "The FN layer" + +![Graphical representation of Layer 4](https://i.imgur.com/6favpke.png) + +* F1-12 +* Del on backspace +* Lots of RGB controls +* RESET firmware on backslash +* Screen brightness: Z (decrease), X (increase) diff --git a/keyboards/dztech/dz60rgb_ansi/readme.md b/keyboards/dztech/dz60rgb_ansi/readme.md index aa15dda89019..1d0ca38f4d8c 100644 --- a/keyboards/dztech/dz60rgb_ansi/readme.md +++ b/keyboards/dztech/dz60rgb_ansi/readme.md @@ -8,14 +8,16 @@ A hotswap 60% RGB keyboard. * Hardware Supported: DZtech DZ60RGB-ANSI V1 and V2 * Hardware Availability: [KBDfans](https://kbdfans.com/) -There are two versions of the DZ60RGB-ANSI. Please use the appropriate firmware for your board. +There are three versions of the DZ60RGB-ANSI. Please use the appropriate firmware for your board. * V1: STM32F303 (Arm), takes .bin files * V2: ATmega32U4 (AVR), takes .hex files +* V2.1: ATmega32U4 (AVR), takes .bin files Make example for this keyboard (after setting up your build environment): make dztech/dz60rgb_ansi/v1:default # Arm (STM32F303) make dztech/dz60rgb_ansi/v2:default # AVR (ATmega32U4) + make dztech/dz60rgb_ansi/v2_1:default # AVR (ATmega32U4) 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/dztech/dz60rgb_ansi/v1/config.h b/keyboards/dztech/dz60rgb_ansi/v1/config.h index 8710f8d07b21..176bb03a1363 100644 --- a/keyboards/dztech/dz60rgb_ansi/v1/config.h +++ b/keyboards/dztech/dz60rgb_ansi/v1/config.h @@ -37,17 +37,61 @@ #ifdef RGB_MATRIX_ENABLE # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended # define RGB_MATRIX_KEYPRESSES # define RGB_MATRIX_LED_PROCESS_LIMIT 4 # define RGB_MATRIX_LED_FLUSH_LIMIT 26 -# define DISABLE_RGB_MATRIX_SPLASH -# define DISABLE_RGB_MATRIX_MULTISPLASH -# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// # define ENABLE_RGB_MATRIX_SPLASH +// # define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + # define RGB_MATRIX_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/v1/rules.mk b/keyboards/dztech/dz60rgb_ansi/v1/rules.mk index 678eb385c39a..f3ed99ecdb8d 100644 --- a/keyboards/dztech/dz60rgb_ansi/v1/rules.mk +++ b/keyboards/dztech/dz60rgb_ansi/v1/rules.mk @@ -8,20 +8,16 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output RGB_MATRIX_ENABLE = yes # Use RGB matrix RGB_MATRIX_DRIVER = IS31FL3733 NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in diff --git a/keyboards/dztech/dz60rgb_ansi/v2/config.h b/keyboards/dztech/dz60rgb_ansi/v2/config.h index f3c9b73fb4b7..5ff2cd6a8c42 100644 --- a/keyboards/dztech/dz60rgb_ansi/v2/config.h +++ b/keyboards/dztech/dz60rgb_ansi/v2/config.h @@ -37,27 +37,59 @@ #ifdef RGB_MATRIX_ENABLE # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended # define RGB_MATRIX_KEYPRESSES # define RGB_MATRIX_FRAMEBUFFER_EFFECTS -# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -# define DISABLE_RGB_MATRIX_BAND_SAT -# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -# define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -# define DISABLE_RGB_MATRIX_SPLASH -# define DISABLE_RGB_MATRIX_MULTISPLASH -# define DISABLE_RGB_MATRIX_SOLID_SPLASH -# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH -# define DISABLE_RGB_MATRIX_DIGITAL_RAIN +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +// # define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// # define ENABLE_RGB_MATRIX_SPLASH +// # define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + # define 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/rules.mk b/keyboards/dztech/dz60rgb_ansi/v2/rules.mk index f35c9f40c9d6..bafc0b23062b 100644 --- a/keyboards/dztech/dz60rgb_ansi/v2/rules.mk +++ b/keyboards/dztech/dz60rgb_ansi/v2/rules.mk @@ -2,32 +2,23 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output RGB_MATRIX_ENABLE = yes # Use RGB matrix RGB_MATRIX_DRIVER = IS31FL3733 NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in + +LTO_ENABLE = yes diff --git a/keyboards/dztech/dz60rgb_ansi/v2_1/config.h b/keyboards/dztech/dz60rgb_ansi/v2_1/config.h new file mode 100644 index 000000000000..84aa7802c3e7 --- /dev/null +++ b/keyboards/dztech/dz60rgb_ansi/v2_1/config.h @@ -0,0 +1,111 @@ +/* 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 . + */ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x445A +#define PRODUCT_ID 0x1221 +#define DEVICE_VER 0x0002 +#define MANUFACTURER DZTECH +#define PRODUCT DZ60RGB_ANSI + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/* + * 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 { F5, F4, F1, B3, B2 } +#define MATRIX_COL_PINS { C7, F7, F6, F0, B0, B1, B4, D7, D6, D4, D5, D3, D2, B7 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 3 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +#ifdef RGB_MATRIX_ENABLE +# define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended +// # define RGB_MATRIX_KEYPRESSES +# define RGB_MATRIX_FRAMEBUFFER_EFFECTS +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +// # define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// # define ENABLE_RGB_MATRIX_SPLASH +// # define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + +# define DRIVER_ADDR_1 0b1010000 +# define DRIVER_COUNT 1 +# define DRIVER_LED_TOTAL 61 +#endif diff --git a/keyboards/dztech/dz60rgb_ansi/v2_1/rules.mk b/keyboards/dztech/dz60rgb_ansi/v2_1/rules.mk new file mode 100644 index 000000000000..1b773a6718be --- /dev/null +++ b/keyboards/dztech/dz60rgb_ansi/v2_1/rules.mk @@ -0,0 +1,23 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = lufa-ms +BOOTLOADER_SIZE = 6144 + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 +RGB_MATRIX_ENABLE = yes # Use RGB matrix +RGB_MATRIX_DRIVER = IS31FL3733 +LTO_ENABLE = yes diff --git a/keyboards/dztech/dz60rgb_wkl/dz60rgb_wkl.c b/keyboards/dztech/dz60rgb_wkl/dz60rgb_wkl.c index b57560bacd74..83feb584562c 100644 --- a/keyboards/dztech/dz60rgb_wkl/dz60rgb_wkl.c +++ b/keyboards/dztech/dz60rgb_wkl/dz60rgb_wkl.c @@ -1,7 +1,7 @@ #include "dz60rgb_wkl.h" #ifdef RGB_MATRIX_ENABLE -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { { 0, H_15, G_15, I_15 }, { 0, K_14, J_14, L_14 }, { 0, K_13, J_13, L_13 }, diff --git a/keyboards/dztech/dz60rgb_wkl/info.json b/keyboards/dztech/dz60rgb_wkl/info.json index 2e4923ab05ee..304c571f22db 100644 --- a/keyboards/dztech/dz60rgb_wkl/info.json +++ b/keyboards/dztech/dz60rgb_wkl/info.json @@ -2,8 +2,6 @@ "keyboard_name": "dz60rgb_wkl", "url": "", "maintainer": "dztech", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_tsangan_hhkb": { "layout": [ diff --git a/keyboards/dztech/dz60rgb_wkl/readme.md b/keyboards/dztech/dz60rgb_wkl/readme.md index a80236437a08..23ec5fa94247 100644 --- a/keyboards/dztech/dz60rgb_wkl/readme.md +++ b/keyboards/dztech/dz60rgb_wkl/readme.md @@ -8,14 +8,17 @@ A hotswap 60% RGB keyboard. * Hardware Supported: DZtech DZ60RGB-WKL V1 and V2 * Hardware Availability: [KBDfans](https://kbdfans.com/) -There are two versions of the DZ60RGB-WKL. Please use the appropriate firmware for your board. +There are three versions of the DZ60RGB-WKL. Please use the appropriate firmware for your board. * V1: STM32F303 (Arm), takes .bin files * V2: ATmega32U4 (AVR), takes .hex files +* V2.1: ATmega32U4 (AVR), takes .bin files + Started shipping in June 2021 as a slightly modified version of v2. Make example for this keyboard (after setting up your build environment): make dztech/dz60rgb_wkl/v1:default # Arm (STM32F303) make dztech/dz60rgb_wkl/v2:default # AVR (ATmega32U4) + make dztech/dz60rgb_wkl/v2_1:default # AVR (ATmega32U4) 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/dztech/dz60rgb_wkl/v1/config.h b/keyboards/dztech/dz60rgb_wkl/v1/config.h index 9c630c75be0f..b8c70ff4fb4a 100644 --- a/keyboards/dztech/dz60rgb_wkl/v1/config.h +++ b/keyboards/dztech/dz60rgb_wkl/v1/config.h @@ -37,17 +37,61 @@ #ifdef RGB_MATRIX_ENABLE # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended # define RGB_MATRIX_KEYPRESSES # define RGB_MATRIX_LED_PROCESS_LIMIT 4 # define RGB_MATRIX_LED_FLUSH_LIMIT 26 -# define DISABLE_RGB_MATRIX_SPLASH -# define DISABLE_RGB_MATRIX_MULTISPLASH -# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// # define ENABLE_RGB_MATRIX_SPLASH +// # define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + # define RGB_MATRIX_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/v1/rules.mk b/keyboards/dztech/dz60rgb_wkl/v1/rules.mk index 6a9af2dee543..4a4513ac0391 100644 --- a/keyboards/dztech/dz60rgb_wkl/v1/rules.mk +++ b/keyboards/dztech/dz60rgb_wkl/v1/rules.mk @@ -8,20 +8,16 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output RGB_MATRIX_ENABLE = yes # Use RGB matrix RGB_MATRIX_DRIVER = IS31FL3733 NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in diff --git a/keyboards/dztech/dz60rgb_wkl/v2/config.h b/keyboards/dztech/dz60rgb_wkl/v2/config.h index a6145c274968..5985fccea714 100644 --- a/keyboards/dztech/dz60rgb_wkl/v2/config.h +++ b/keyboards/dztech/dz60rgb_wkl/v2/config.h @@ -37,27 +37,59 @@ #ifdef RGB_MATRIX_ENABLE # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended # define RGB_MATRIX_KEYPRESSES # define RGB_MATRIX_FRAMEBUFFER_EFFECTS -# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -# define DISABLE_RGB_MATRIX_BAND_SAT -# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -# define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -# define DISABLE_RGB_MATRIX_SPLASH -# define DISABLE_RGB_MATRIX_MULTISPLASH -# define DISABLE_RGB_MATRIX_SOLID_SPLASH -# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH -# define DISABLE_RGB_MATRIX_DIGITAL_RAIN +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +// # define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// # define ENABLE_RGB_MATRIX_SPLASH +// # define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + # define 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/rules.mk b/keyboards/dztech/dz60rgb_wkl/v2/rules.mk index 5386768c261f..12a54e7751b6 100644 --- a/keyboards/dztech/dz60rgb_wkl/v2/rules.mk +++ b/keyboards/dztech/dz60rgb_wkl/v2/rules.mk @@ -2,32 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output RGB_MATRIX_ENABLE = yes # Use RGB matrix RGB_MATRIX_DRIVER = IS31FL3733 NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in diff --git a/keyboards/dztech/dz60rgb_wkl/v2_1/config.h b/keyboards/dztech/dz60rgb_wkl/v2_1/config.h new file mode 100644 index 000000000000..bfa9d8d9555d --- /dev/null +++ b/keyboards/dztech/dz60rgb_wkl/v2_1/config.h @@ -0,0 +1,111 @@ +/* Copyright 2021 trankimtung + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x445A +#define PRODUCT_ID 0x1321 +#define DEVICE_VER 0x0003 +#define MANUFACTURER DZTECH +#define PRODUCT DZ60RGB_WKL + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/* + * 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 { F5, F4, F1, B3, B2 } +#define MATRIX_COL_PINS { C7, F7, F6, F0, B0, B1, B4, D7, D6, D4, D5, D3, D2, B7 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 3 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +#ifdef RGB_MATRIX_ENABLE +# define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended +# define RGB_MATRIX_KEYPRESSES +# define RGB_MATRIX_FRAMEBUFFER_EFFECTS +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +// # define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// # define ENABLE_RGB_MATRIX_SPLASH +// # define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + +# define DRIVER_ADDR_1 0b1010000 +# define DRIVER_COUNT 1 +# define DRIVER_LED_TOTAL 62 +#endif diff --git a/keyboards/dztech/dz60rgb_wkl/v2_1/rules.mk b/keyboards/dztech/dz60rgb_wkl/v2_1/rules.mk new file mode 100644 index 000000000000..bc483eedcd42 --- /dev/null +++ b/keyboards/dztech/dz60rgb_wkl/v2_1/rules.mk @@ -0,0 +1,25 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = lufa-ms +BOOTLOADER_SIZE = 6144 + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 +RGB_MATRIX_ENABLE = yes # Use RGB matrix +RGB_MATRIX_DRIVER = IS31FL3733 +LTO_ENABLE = yes + +LAYOUTS = 60_tsangan_hhkb diff --git a/keyboards/dztech/dz65rgb/info.json b/keyboards/dztech/dz65rgb/info.json index 66ed072af3bc..4a97f4fd82f6 100644 --- a/keyboards/dztech/dz65rgb/info.json +++ b/keyboards/dztech/dz65rgb/info.json @@ -2,8 +2,6 @@ "keyboard_name": "dz65rgb", "url": "", "maintainer": "dztech", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_ansi": { "layout": [ diff --git a/keyboards/dztech/dz65rgb/keymaps/drootz/config.h b/keyboards/dztech/dz65rgb/keymaps/drootz/config.h index 5810507975a5..109aa3d07efb 100644 --- a/keyboards/dztech/dz65rgb/keymaps/drootz/config.h +++ b/keyboards/dztech/dz65rgb/keymaps/drootz/config.h @@ -6,13 +6,13 @@ #ifdef RGB_MATRIX_ENABLE /* Reset default from dz65rgb/v2 config.h */ -# undef DISABLE_RGB_MATRIX_SPLASH -# undef DISABLE_RGB_MATRIX_SOLID_SPLASH +# undef DISABLE_RGB_MATRIX_SPLASH +# undef DISABLE_RGB_MATRIX_SOLID_SPLASH # undef RGB_MATRIX_LED_FLUSH_LIMIT # undef RGB_MATRIX_STARTUP_MODE # undef RGB_MATRIX_MAXIMUM_BRIGHTNESS # define RGB_MATRIX_MAXIMUM_BRIGHTNESS 255 -# define RGB_MATRIX_LED_FLUSH_LIMIT 16 // default: 26 +# define RGB_MATRIX_LED_FLUSH_LIMIT 16 // default: 26 # define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_TYPING_HEATMAP # define RGB_MATRIX_FRAMEBUFFER_EFFECTS # define RGB_MATRIX_STARTUP_HUE 10 @@ -20,33 +20,33 @@ # define RGB_MATRIX_STARTUP_VAL 200 # define RGB_MATRIX_STARTUP_SPD 75 /* Active RBG Modes */ -/* # define DISABLE_RGB_MATRIX_TYPING_HEATMAP // How hot is your WPM! */ -/* # define DISABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out */ -/* # define DISABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out */ +/* # undef ENABLE_RGB_MATRIX_TYPING_HEATMAP // How hot is your WPM! */ +/* # undef ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out */ +/* # undef ENABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out */ /* Disabling to optimize firmware size */ -# define DISABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue -# define DISABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Static gradient left to right, speed controls how much gradient changes -# define DISABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation -# define DISABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right -# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness -# define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness -# define DISABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient -# define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right -# define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom -# define DISABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in -# define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in -# define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradent Chevron shapped scrolling left to right -# define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard -# define DISABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard -# define DISABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard -# define DISABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard -# define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard -# define DISABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue -# define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue +# undef ENABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue +# undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Static gradient left to right, speed controls how much gradient changes +# undef ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation +# undef ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness +# undef ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient +# undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right +# undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom +# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in +# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in +# undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradent Chevron shapped scrolling left to right +# undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard +# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard +# undef ENABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard +# undef ENABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard +# undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard +# undef ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue +# undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue #endif /* RBG MATRIX */ /* Firmware size Optimizations */ #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION -#define NO_ACTION_ONESHOT +#define NO_ACTION_ONESHOT diff --git a/keyboards/dztech/dz65rgb/keymaps/haervig/keymap.c b/keyboards/dztech/dz65rgb/keymaps/haervig/keymap.c new file mode 100644 index 000000000000..6784c14f00a1 --- /dev/null +++ b/keyboards/dztech/dz65rgb/keymaps/haervig/keymap.c @@ -0,0 +1,36 @@ +/* +Copyright 2021 Jakob Hærvig + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H +#include "haervig.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi( + KC_GESC, DK_1, CU_2, DK_3, CU_4, DK_5, CU_6, CU_7, CU_8, CU_9, CU_0, CU_MINS, CU_EQL, CU_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, CU_LBRC, CU_RBRC, CU_BSLS, KC_PGUP, + CTL_T(KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, CU_SCLN, CU_QUOT, KC_ENT, KC_PGDN, + CU_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, CU_COMM, CU_DOT, CU_SLSH, CU_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, MO(1), KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_ansi( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/dztech/dz65rgb/keymaps/haervig/rules.mk b/keyboards/dztech/dz65rgb/keymaps/haervig/rules.mk new file mode 100644 index 000000000000..676050bfcec7 --- /dev/null +++ b/keyboards/dztech/dz65rgb/keymaps/haervig/rules.mk @@ -0,0 +1,3 @@ +# Userspace defines +DANISH_ENABLE = yes # Enable Custom US Ansi Keycodes for PC with Danish set as input language +RGB_MATRIX_ENABLE = no # Disable the ugly RGB light \ No newline at end of file diff --git a/keyboards/dztech/dz65rgb/keymaps/jumper149/config.h b/keyboards/dztech/dz65rgb/keymaps/jumper149/config.h index d9d295dfa882..504fc7f4f30a 100644 --- a/keyboards/dztech/dz65rgb/keymaps/jumper149/config.h +++ b/keyboards/dztech/dz65rgb/keymaps/jumper149/config.h @@ -19,42 +19,42 @@ #ifdef RGB_MATRIX_ENABLE -#define DISABLE_RGB_MATRIX_ALPHAS_MODS -#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -#define DISABLE_RGB_MATRIX_BREATHING -#define DISABLE_RGB_MATRIX_BAND_SAT -#define DISABLE_RGB_MATRIX_BAND_VAL -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL -#define DISABLE_RGB_MATRIX_CYCLE_ALL -#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT -#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN -#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN -#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL -#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON -#define DISABLE_RGB_MATRIX_DUAL_BEACON -#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL -#define DISABLE_RGB_MATRIX_CYCLE_SPIRAL -#define DISABLE_RGB_MATRIX_RAINBOW_BEACON -#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS -#define DISABLE_RGB_MATRIX_RAINDROPS -#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS -#define DISABLE_RGB_MATRIX_TYPING_HEATMAP -#define DISABLE_RGB_MATRIX_DIGITAL_RAIN -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -#define DISABLE_RGB_MATRIX_SPLASH -#define DISABLE_RGB_MATRIX_MULTISPLASH -#define DISABLE_RGB_MATRIX_SOLID_SPLASH -#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH +# undef ENABLE_RGB_MATRIX_ALPHAS_MODS +# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# undef ENABLE_RGB_MATRIX_BREATHING +# undef ENABLE_RGB_MATRIX_BAND_SAT +# undef ENABLE_RGB_MATRIX_BAND_VAL +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# undef ENABLE_RGB_MATRIX_CYCLE_ALL +# undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# undef ENABLE_RGB_MATRIX_DUAL_BEACON +# undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# undef ENABLE_RGB_MATRIX_RAINBOW_BEACON +# undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# undef ENABLE_RGB_MATRIX_RAINDROPS +# undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# undef ENABLE_RGB_MATRIX_TYPING_HEATMAP +# undef ENABLE_RGB_MATRIX_DIGITAL_RAIN +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# undef ENABLE_RGB_MATRIX_SPLASH +# undef ENABLE_RGB_MATRIX_MULTISPLASH +# undef ENABLE_RGB_MATRIX_SOLID_SPLASH +# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Fix RGB_MATRIX_STARTUP, because RGB_MATRIX_CYCLE_ALL is disabled. // The actual handling of RGB_EFFECTs is done in keymap.c diff --git a/keyboards/dztech/dz65rgb/keymaps/jumper149/readme.md b/keyboards/dztech/dz65rgb/keymaps/jumper149/readme.md index d872587317d2..9de86be2d12c 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/keymaps/matthewrobo/config.h b/keyboards/dztech/dz65rgb/keymaps/matthewrobo/config.h index a56af01656cc..586e5765aa77 100644 --- a/keyboards/dztech/dz65rgb/keymaps/matthewrobo/config.h +++ b/keyboards/dztech/dz65rgb/keymaps/matthewrobo/config.h @@ -9,43 +9,43 @@ #undef RGB_MATRIX_STARTUP_MODE #define RGB_MATRIX_FRAMEBUFFER_EFFECTS -// #define DISABLE_RGB_MATRIX_SOLID_COLOR -// #define DISABLE_RGB_MATRIX_ALPHAS_MODS -// #define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -// #define DISABLE_RGB_MATRIX_BREATHING -#define DISABLE_RGB_MATRIX_BAND_SAT -// #define DISABLE_RGB_MATRIX_BAND_VAL -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL -#define DISABLE_RGB_MATRIX_CYCLE_ALL -#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT -#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN -#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN -#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL -#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON -#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL -// #define DISABLE_RGB_MATRIX_CYCLE_SPIRAL -#define DISABLE_RGB_MATRIX_DUAL_BEACON -#define DISABLE_RGB_MATRIX_RAINBOW_BEACON -#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS -#define DISABLE_RGB_MATRIX_RAINDROPS -#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS -// #define DISABLE_RGB_MATRIX_TYPING_HEATMAP -#define DISABLE_RGB_MATRIX_DIGITAL_RAIN -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -// #define DISABLE_RGB_MATRIX_SPLASH -// #define DISABLE_RGB_MATRIX_MULTISPLASH -// #define DISABLE_RGB_MATRIX_SOLID_SPLASH -// #define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH +// #undef ENABLE_RGB_MATRIX_SOLID_COLOR +// #undef ENABLE_RGB_MATRIX_ALPHAS_MODS +// #undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +// #undef ENABLE_RGB_MATRIX_BREATHING +#undef ENABLE_RGB_MATRIX_BAND_SAT +// #undef ENABLE_RGB_MATRIX_BAND_VAL +#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#undef ENABLE_RGB_MATRIX_CYCLE_ALL +#undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +// #undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#undef ENABLE_RGB_MATRIX_DUAL_BEACON +#undef ENABLE_RGB_MATRIX_RAINBOW_BEACON +#undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#undef ENABLE_RGB_MATRIX_RAINDROPS +#undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +// #undef ENABLE_RGB_MATRIX_TYPING_HEATMAP +#undef ENABLE_RGB_MATRIX_DIGITAL_RAIN +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// #undef ENABLE_RGB_MATRIX_SPLASH +// #undef ENABLE_RGB_MATRIX_MULTISPLASH +// #undef ENABLE_RGB_MATRIX_SOLID_SPLASH +// #undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH #define QMK_KEYS_PER_SCAN 4 diff --git a/keyboards/dztech/dz65rgb/keymaps/via/config.h b/keyboards/dztech/dz65rgb/keymaps/via/config.h new file mode 100644 index 000000000000..8ef0df8ee87c --- /dev/null +++ b/keyboards/dztech/dz65rgb/keymaps/via/config.h @@ -0,0 +1,21 @@ +/* Copyright 2021 DZTECH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#undef ENABLE_RGB_MATRIX_PIXEL_FLOW +#undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL +#undef ENABLE_RGB_MATRIX_PIXEL_RAIN diff --git a/keyboards/dztech/dz65rgb/v1/config.h b/keyboards/dztech/dz65rgb/v1/config.h index adfa934b04af..5fe0ba3eba48 100644 --- a/keyboards/dztech/dz65rgb/v1/config.h +++ b/keyboards/dztech/dz65rgb/v1/config.h @@ -51,24 +51,56 @@ # define RGB_MATRIX_LED_FLUSH_LIMIT 26 # define DEBOUNCE 3 # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended # define RGB_MATRIX_KEYPRESSES -# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -# define DISABLE_RGB_MATRIX_BAND_SAT -# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -# define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -# define DISABLE_RGB_MATRIX_SPLASH -# define DISABLE_RGB_MATRIX_MULTISPLASH -# define DISABLE_RGB_MATRIX_SOLID_SPLASH -# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH -# define DISABLE_RGB_MATRIX_DIGITAL_RAIN +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +// # define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// # define ENABLE_RGB_MATRIX_SPLASH +// # define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH # define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 # define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL # define DRIVER_ADDR_1 0b1110100 diff --git a/keyboards/dztech/dz65rgb/v1/rules.mk b/keyboards/dztech/dz65rgb/v1/rules.mk index 5468deb718c6..5343c92074de 100644 --- a/keyboards/dztech/dz65rgb/v1/rules.mk +++ b/keyboards/dztech/dz65rgb/v1/rules.mk @@ -8,20 +8,16 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output RGB_MATRIX_ENABLE = yes # Use RGB matrix RGB_MATRIX_DRIVER = IS31FL3731 diff --git a/keyboards/dztech/dz65rgb/v1/v1.c b/keyboards/dztech/dz65rgb/v1/v1.c index 8a3f0e27bf70..8caced800b4d 100644 --- a/keyboards/dztech/dz65rgb/v1/v1.c +++ b/keyboards/dztech/dz65rgb/v1/v1.c @@ -16,7 +16,7 @@ #include "v1.h" #ifdef RGB_MATRIX_ENABLE -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { { 0, C8_8, C7_8, C6_8 }, { 0, C9_8, C7_7, C6_7 }, { 0, C9_7, C8_7, C6_6 }, diff --git a/keyboards/dztech/dz65rgb/v2/config.h b/keyboards/dztech/dz65rgb/v2/config.h index f86d65cd0685..b8677e44364a 100644 --- a/keyboards/dztech/dz65rgb/v2/config.h +++ b/keyboards/dztech/dz65rgb/v2/config.h @@ -51,24 +51,56 @@ # define RGB_MATRIX_LED_FLUSH_LIMIT 26 # define DEBOUNCE 3 # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended # define RGB_MATRIX_KEYPRESSES -# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -# define DISABLE_RGB_MATRIX_BAND_SAT -# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -# define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -# define DISABLE_RGB_MATRIX_SPLASH -# define DISABLE_RGB_MATRIX_MULTISPLASH -# define DISABLE_RGB_MATRIX_SOLID_SPLASH -# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH -# define DISABLE_RGB_MATRIX_DIGITAL_RAIN +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +// # define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// # define ENABLE_RGB_MATRIX_SPLASH +// # define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH # define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 # define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL # define DRIVER_ADDR_1 0b1110100 diff --git a/keyboards/dztech/dz65rgb/v2/rules.mk b/keyboards/dztech/dz65rgb/v2/rules.mk index 4267e708061b..5f67d647ae5d 100644 --- a/keyboards/dztech/dz65rgb/v2/rules.mk +++ b/keyboards/dztech/dz65rgb/v2/rules.mk @@ -2,32 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output RGB_MATRIX_ENABLE = yes # Use RGB matrix RGB_MATRIX_DRIVER = IS31FL3731 diff --git a/keyboards/dztech/dz65rgb/v2/v2.c b/keyboards/dztech/dz65rgb/v2/v2.c index 788709d98961..db8e968cc4d2 100644 --- a/keyboards/dztech/dz65rgb/v2/v2.c +++ b/keyboards/dztech/dz65rgb/v2/v2.c @@ -16,7 +16,7 @@ #include "v2.h" #ifdef RGB_MATRIX_ENABLE -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { { 0, C8_8, C7_8, C6_8 }, { 0, C9_8, C7_7, C6_7 }, { 0, C9_7, C8_7, C6_6 }, diff --git a/keyboards/dztech/dz65rgb/v3/config.h b/keyboards/dztech/dz65rgb/v3/config.h index c348e323d475..ba7863f42a81 100755 --- a/keyboards/dztech/dz65rgb/v3/config.h +++ b/keyboards/dztech/dz65rgb/v3/config.h @@ -42,16 +42,63 @@ #define NO_ACTION_FUNCTION #ifdef RGB_MATRIX_ENABLE #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended -#define USB_SUSPEND_WAKEUP_DELAY 5000 -#define RGB_MATRIX_KEYPRESSES -#define RGB_MATRIX_LED_PROCESS_LIMIT 4 -#define RGB_MATRIX_LED_FLUSH_LIMIT 26 -#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_INDICATOR_LED_TOTAL 0 +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended +# define USB_SUSPEND_WAKEUP_DELAY 5000 +# define RGB_MATRIX_KEYPRESSES +# define RGB_MATRIX_LED_PROCESS_LIMIT 4 +# define RGB_MATRIX_LED_FLUSH_LIMIT 26 +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + +# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL +# define DRIVER_ADDR_1 0b0110000 +# define DRIVER_COUNT 1 +# define DRIVER_LED_TOTAL 68 +# define DRIVER_INDICATOR_LED_TOTAL 0 #endif diff --git a/keyboards/dztech/dz65rgb/v3/rules.mk b/keyboards/dztech/dz65rgb/v3/rules.mk index ace821a327f3..c2ad8df18ee3 100755 --- a/keyboards/dztech/dz65rgb/v3/rules.mk +++ b/keyboards/dztech/dz65rgb/v3/rules.mk @@ -3,22 +3,20 @@ MCU = atmega32u4 # Bootloader selection BOOTLOADER = lufa-ms +BOOTLOADER_SIZE = 6144 # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output RGB_MATRIX_ENABLE = yes # Use RGB matrix RGB_MATRIX_DRIVER = IS31FL3741 diff --git a/keyboards/dztech/dz65rgb/v3/v3.c b/keyboards/dztech/dz65rgb/v3/v3.c index dec75814ca0c..18f87dc00b6f 100755 --- a/keyboards/dztech/dz65rgb/v3/v3.c +++ b/keyboards/dztech/dz65rgb/v3/v3.c @@ -18,7 +18,7 @@ #ifdef RGB_MATRIX_ENABLE -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { {0, CS21_SW1, CS20_SW1, CS19_SW1}, {0, CS21_SW2, CS20_SW2, CS19_SW2}, {0, CS21_SW3, CS20_SW3, CS19_SW3}, diff --git a/keyboards/dztech/dz96/info.json b/keyboards/dztech/dz96/info.json index d378a28699a5..25c4d2265d1f 100644 --- a/keyboards/dztech/dz96/info.json +++ b/keyboards/dztech/dz96/info.json @@ -2,8 +2,6 @@ "keyboard_name": "DZ96", "url": "", "maintainer": "kb-elmo", - "width": 19, - "height": 6, "layouts": { "LAYOUT_default": { "layout": [ diff --git a/keyboards/dztech/dz96/rules.mk b/keyboards/dztech/dz96/rules.mk index 6e53d4cab232..9acbf8bee1c0 100644 --- a/keyboards/dztech/dz96/rules.mk +++ b/keyboards/dztech/dz96/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/dztech/volcano660/info.json b/keyboards/dztech/volcano660/info.json deleted file mode 100644 index 04122620a6b7..000000000000 --- a/keyboards/dztech/volcano660/info.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "keyboard_name": "volcano660", - "url": "", - "maintainer": "dztech", - "width": 16.5, - "height": 5, - "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}, {"label":"Backspace", "x":13, "y":0}, {"x":14, "y":0}, {"x":15.5, "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}, {"x":15.5, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":1.25}, {"label":"Shift", "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":2.25}, {"x":14.5, "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}, {"label":"Menu", "x":12.25, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.5, "y":4}, {"x":14.5, "y":4}, {"x":15.5, "y":4}] - } - } -} diff --git a/keyboards/dztech/volcano660/readme.md b/keyboards/dztech/volcano660/readme.md deleted file mode 100644 index f6a4e822c81e..000000000000 --- a/keyboards/dztech/volcano660/readme.md +++ /dev/null @@ -1,12 +0,0 @@ -# Volcano660 - -* Keyboard Maintainer: DZTECH -* Hardware Supported: DZTECH -* Hardware Availability: iLumkb - -Make example for this keyboard (after setting up your build environment): - - make dztech/volcano660:default - make dztech/volcano660:via - -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/dztech/volcano660/rules.mk b/keyboards/dztech/volcano660/rules.mk deleted file mode 100644 index e7aea4087f94..000000000000 --- a/keyboards/dztech/volcano660/rules.mk +++ /dev/null @@ -1,22 +0,0 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -BOOTLOADER = atmel-dfu - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -# 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 = yes # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth -AUDIO_ENABLE = no # Audio output diff --git a/keyboards/e88/info.json b/keyboards/e88/info.json index eb9c8365dfe2..ed240910ea93 100644 --- a/keyboards/e88/info.json +++ b/keyboards/e88/info.json @@ -2,8 +2,6 @@ "keyboard_name": "e88", "url": "", "maintainer": "2-n", - "width": 18.25, - "height": 6.25, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/e88/rules.mk b/keyboards/e88/rules.mk index dc1dcdb8519d..4f2bcf8ec0b7 100644 --- a/keyboards/e88/rules.mk +++ b/keyboards/e88/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = qmk-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/ealdin/quadrant/info.json b/keyboards/ealdin/quadrant/info.json index dadcaf084d40..e9e02e3d6797 100644 --- a/keyboards/ealdin/quadrant/info.json +++ b/keyboards/ealdin/quadrant/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Quadrant E-C", "url": "https://github.com/Ealdin/keyboards/tree/master/Quadrant", "maintainer": "Ealdin Keyboards", - "width": 14, - "height": 5, "layouts": { "LAYOUT_ortho_5x14": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":12, "y":1}, {"x":13, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":13, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}, {"x":12, "y":3}, {"x":13, "y":3}, {"x":0, "y":4}, {"x":1, "y":4}, {"x":2, "y":4}, {"x":3, "y":4}, {"x":4, "y":4}, {"x":5, "y":4}, {"x":6, "y":4}, {"x":7, "y":4}, {"x":8, "y":4}, {"x":9, "y":4}, {"x":10, "y":4}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}] diff --git a/keyboards/ealdin/quadrant/rules.mk b/keyboards/ealdin/quadrant/rules.mk index c3d0a548c1e0..d6f68f6fb62b 100644 --- a/keyboards/ealdin/quadrant/rules.mk +++ b/keyboards/ealdin/quadrant/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # 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 = 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 ENCODER_ENABLE = yes # Enable rotary encoders diff --git a/keyboards/earth_rover/info.json b/keyboards/earth_rover/info.json index 3cfc28285358..59249b819e00 100644 --- a/keyboards/earth_rover/info.json +++ b/keyboards/earth_rover/info.json @@ -2,8 +2,6 @@ "keyboard_name": "earth_rover", "url": "https://github.com/bigwheel/earth_rover", "maintainer": "k.bigwheel", - "width": 4, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/earth_rover/rules.mk b/keyboards/earth_rover/rules.mk index fd76a52478f7..bc3a9f5e3582 100644 --- a/keyboards/earth_rover/rules.mk +++ b/keyboards/earth_rover/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/ebastler/isometria_75/rev1/info.json b/keyboards/ebastler/isometria_75/rev1/info.json index d1c2654f0e60..cbca4c40ff54 100644 --- a/keyboards/ebastler/isometria_75/rev1/info.json +++ b/keyboards/ebastler/isometria_75/rev1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "isometria_75", "url": "https://github.com/ebastler/isometria-75", "maintainer": "ebastler", - "width": 16.25, - "height": 6.25, "layouts": { "LAYOUT_iso": { "layout": [ diff --git a/keyboards/ebastler/isometria_75/rev1/rules.mk b/keyboards/ebastler/isometria_75/rev1/rules.mk index ec05abff0d49..cbe80194dce3 100644 --- a/keyboards/ebastler/isometria_75/rev1/rules.mk +++ b/keyboards/ebastler/isometria_75/rev1/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes WS2812_DRIVER = pwm diff --git a/keyboards/eco/config.h b/keyboards/eco/config.h index db1c61ab4f99..e5258e3a0bb8 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -68,5 +67,3 @@ along with this program. If not, see . #ifdef SUBPROJECT_rev2 #include "rev2/config.h" #endif - -#endif diff --git a/keyboards/eco/eco.h b/keyboards/eco/eco.h index 211e41fe8ffd..885bf982d7ff 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/info.json b/keyboards/eco/info.json index 78b1dd7705fe..2553371de2ac 100644 --- a/keyboards/eco/info.json +++ b/keyboards/eco/info.json @@ -2,11 +2,8 @@ "keyboard_name": "ECO", "url": "", "maintainer": "qmk", - "width": 14, - "height": 4, "layouts": { "LAYOUT": { - "key_count": 56, "layout": [{"label":"k01", "x":0, "y":0}, {"label":"k02", "x":1, "y":0}, {"label":"k03", "x":2, "y":0}, {"label":"k04", "x":3, "y":0}, {"label":"k05", "x":4, "y":0}, {"label":"k06", "x":5, "y":0}, {"label":"k07", "x":6, "y":0}, {"label":"k08", "x":7, "y":0}, {"label":"k09", "x":8, "y":0}, {"label":"k010", "x":9, "y":0}, {"label":"k011", "x":10, "y":0}, {"label":"k012", "x":11, "y":0}, {"label":"k013", "x":12, "y":0}, {"label":"k014", "x":13, "y":0}, {"label":"k11", "x":0, "y":1}, {"label":"k12", "x":1, "y":1}, {"label":"k13", "x":2, "y":1}, {"label":"k14", "x":3, "y":1}, {"label":"k15", "x":4, "y":1}, {"label":"k16", "x":5, "y":1}, {"label":"k17", "x":6, "y":1}, {"label":"k18", "x":7, "y":1}, {"label":"k19", "x":8, "y":1}, {"label":"k110", "x":9, "y":1}, {"label":"k111", "x":10, "y":1}, {"label":"k112", "x":11, "y":1}, {"label":"k113", "x":12, "y":1}, {"label":"k114", "x":13, "y":1}, {"label":"k21", "x":0, "y":2}, {"label":"k22", "x":1, "y":2}, {"label":"k23", "x":2, "y":2}, {"label":"k24", "x":3, "y":2}, {"label":"k25", "x":4, "y":2}, {"label":"k26", "x":5, "y":2}, {"label":"k27", "x":6, "y":2}, {"label":"k28", "x":7, "y":2}, {"label":"k29", "x":8, "y":2}, {"label":"k210", "x":9, "y":2}, {"label":"k211", "x":10, "y":2}, {"label":"k212", "x":11, "y":2}, {"label":"k213", "x":12, "y":2}, {"label":"k214", "x":13, "y":2}, {"label":"k31", "x":0, "y":3}, {"label":"k32", "x":1, "y":3}, {"label":"k33", "x":2, "y":3}, {"label":"k34", "x":3, "y":3}, {"label":"k35", "x":4, "y":3}, {"label":"k36", "x":5, "y":3}, {"label":"k37", "x":6, "y":3}, {"label":"k38", "x":7, "y":3}, {"label":"k39", "x":8, "y":3}, {"label":"k310", "x":9, "y":3}, {"label":"k311", "x":10, "y":3}, {"label":"k312", "x":11, "y":3}, {"label":"k313", "x":12, "y":3}, {"label":"k314", "x":13, "y":3}] } } diff --git a/keyboards/eco/keymaps/bcat/keymap.c b/keyboards/eco/keymaps/bcat/keymap.c index 066acbe64906..d46a7d416b25 100644 --- a/keyboards/eco/keymaps/bcat/keymap.c +++ b/keyboards/eco/keymaps/bcat/keymap.c @@ -34,6 +34,7 @@ enum layer { #define KY_ZMRST LCTL(KC_0) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off /* Default layer: http://www.keyboard-layout-editor.com/#/gists/2c11371c7a5f7cd08a0132631d3d3281 */ [LAYER_DEFAULT] = LAYOUT( KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, @@ -41,7 +42,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_END, KC_PGDN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, XXXXXXX, XXXXXXX, KC_LALT, KC_LCTL, LY_LWR, KC_SPC, XXXXXXX, XXXXXXX, KC_ENT, LY_RSE, KC_RALT, KC_RGUI, XXXXXXX, XXXXXXX ), - /* Lower layer: http://www.keyboard-layout-editor.com/#/gists/11256970dc0552886a82382ee02fa415 */ [LAYER_LOWER] = LAYOUT( MC_ALTT, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, @@ -49,7 +49,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, KC_APP, KC_PSCR, KC_SLCK, KC_PAUS, KC_LGUI, _______, _______, KC_BSLS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_GRV, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), - /* Raise layer: http://www.keyboard-layout-editor.com/#/gists/308a8be75e0b85902dc18db1b2546862 */ [LAYER_RAISE] = LAYOUT( KC_CAPS, KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, _______, @@ -57,7 +56,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_F12, KC_INS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), - /* Adjust layer: http://www.keyboard-layout-editor.com/#/gists/b18aafa0327d7e83eaf485546c067a21 */ [LAYER_ADJUST] = LAYOUT( _______, NK_TOGG, KC_MPLY, KC_VOLU, KC_MSTP, _______, _______, _______, EEP_RST, RESET, _______, _______, _______, _______, @@ -65,8 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, KC_MUTE, _______, _______, _______, _______, RGB_HUI, RGB_SAD, RGB_SAI, RGB_HUD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, _______, _______, _______ ), + // clang-format on }; -layer_state_t layer_state_set_keymap(layer_state_t state) { - return update_tri_layer_state(state, LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST); -} +layer_state_t layer_state_set_keymap(layer_state_t state) { return update_tri_layer_state(state, LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST); } diff --git a/keyboards/eco/keymaps/default/rules.mk b/keyboards/eco/keymaps/default/rules.mk index 3898578a8230..1c113ac3c067 100644 --- a/keyboards/eco/keymaps/default/rules.mk +++ b/keyboards/eco/keymaps/default/rules.mk @@ -4,7 +4,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 @@ -12,11 +12,5 @@ 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 MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - diff --git a/keyboards/eco/keymaps/fsck/rules.mk b/keyboards/eco/keymaps/fsck/rules.mk index 8fb2adf38380..e48f4aec52fe 100644 --- a/keyboards/eco/keymaps/fsck/rules.mk +++ b/keyboards/eco/keymaps/fsck/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/eco/keymaps/that_canadian/rules.mk b/keyboards/eco/keymaps/that_canadian/rules.mk index 83d1175db993..c76a07e24bde 100644 --- a/keyboards/eco/keymaps/that_canadian/rules.mk +++ b/keyboards/eco/keymaps/that_canadian/rules.mk @@ -4,7 +4,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/eco/keymaps/xyverz/rules.mk b/keyboards/eco/keymaps/xyverz/rules.mk index 9e7b9c20246b..d8d012a9fa56 100644 --- a/keyboards/eco/keymaps/xyverz/rules.mk +++ b/keyboards/eco/keymaps/xyverz/rules.mk @@ -4,7 +4,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/eco/rev1/config.h b/keyboards/eco/rev1/config.h index 1e97a703d160..65cb050d6cab 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 . */ -#ifndef REV1_CONFIG_H -#define REV1_CONFIG_H +#pragma once #include "../config.h" @@ -26,5 +25,3 @@ along with this program. If not, see . #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 132760fbe859..a6ceafb815f9 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 83f2defc9e48..bbc0492e065a 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 . */ -#ifndef REV2_CONFIG_H -#define REV2_CONFIG_H +#pragma once #include "../config.h" @@ -26,5 +25,3 @@ along with this program. If not, see . #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 881bcc77b904..a6ceafb815f9 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/eco/rules.mk b/keyboards/eco/rules.mk index 078131da7c77..fbab54a044c9 100644 --- a/keyboards/eco/rules.mk +++ b/keyboards/eco/rules.mk @@ -2,34 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = yes # MIDI controls +MIDI_ENABLE = yes # MIDI support AUDIO_ENABLE = no # Audio output -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -API_SYSEX_ENABLE = no - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend DEFAULT_FOLDER = eco/rev2 diff --git a/keyboards/edc40/info.json b/keyboards/edc40/info.json index 1585294bcf6a..ae66ec229761 100644 --- a/keyboards/edc40/info.json +++ b/keyboards/edc40/info.json @@ -2,8 +2,6 @@ "keyboard_name": "edc40", "url": "", "maintainer": "ojthetiny", - "width": 12, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/edc40/rules.mk b/keyboards/edc40/rules.mk index c5128a8f25cd..8f859135a6ce 100644 --- a/keyboards/edc40/rules.mk +++ b/keyboards/edc40/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = 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 UNICODE_ENABLE = yes diff --git a/keyboards/edda/config.h b/keyboards/edda/config.h new file mode 100644 index 000000000000..bd9a0ab77d5e --- /dev/null +++ b/keyboards/edda/config.h @@ -0,0 +1,46 @@ +/* +Copyright 2021 Martin Arnstad +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4D45 +#define PRODUCT_ID 0x4544 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Mekanisk +#define PRODUCT Edda PCB + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 16 + +// ROWS: Top to bottom, COLS: Left to right + +#define MATRIX_ROW_PINS {F1, F0, E6, B5, B4} +#define MATRIX_COL_PINS {F4, F5, F6, F7, C7, C6, B6, B3, D7, D6, D4, D5, D3, D2, D1, D0 } + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +// Indicators +#define INDICATOR_PIN_0 B2 +#define INDICATOR_PIN_1 B1 +#define INDICATOR_PIN_2 B0 \ No newline at end of file diff --git a/keyboards/edda/edda.c b/keyboards/edda/edda.c new file mode 100644 index 000000000000..a04f3cc4c131 --- /dev/null +++ b/keyboards/edda/edda.c @@ -0,0 +1,50 @@ +/* +Copyright 2021 Martin Arnstad +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "edda.h" + +void keyboard_pre_init_kb(void) { + // Call the keyboard pre init code. + keyboard_pre_init_user(); + + // Set our LED pins as output + setPinOutput(B2); + setPinOutput(B1); + setPinOutput(B0); +} + +__attribute__((weak)) layer_state_t layer_state_set_user(layer_state_t state) { + switch (get_highest_layer(state)) { + case 1: + writePin(B2, 1); + writePin(B1, 0); + writePin(B0, 0); + break; + case 2: + writePin(B2, 1); + writePin(B1, 1); + writePin(B0, 0); + break; + case 3: + writePin(B2, 1); + writePin(B1, 1); + writePin(B0, 1); + break; + default: // for any other layers, or the default layer + writePin(B2, 0); + writePin(B1, 0); + writePin(B0, 0); + break; + } + return state; +} diff --git a/keyboards/edda/edda.h b/keyboards/edda/edda.h new file mode 100644 index 000000000000..d15606b2c22a --- /dev/null +++ b/keyboards/edda/edda.h @@ -0,0 +1,47 @@ +/* +Copyright 2021 Martin Arnstad +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "quantum.h" + +#define KNO KC_NO +#define LAYOUT_default LAYOUT_alice_split_bs + +#define LAYOUT_alice_split_bs( \ + K00, K01, K02, K03, K04, K05, K06, K07, 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, K2F, \ + K31, K32, K33, K34, K35, K36, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, \ + K41, K43, K44, K46, K49, K4B, K4F \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \ + { K10, K11, K12, K13, K14, K15, K16, KNO, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \ + { K20, K21, K22, K23, K24, K25, K26, KNO, K28, K29, K2A, K2B, K2C, K2D, KNO, K2F }, \ + { KNO, K31, K32, K33, K34, K35, K36, KNO, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F }, \ + { KNO, K41, KNO, K43, K44, KNO, K46, KNO, KNO, K49, KNO, K4B, KNO, KNO, KNO, K4F } \ +} + +#define LAYOUT_alice( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, 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, K2F, \ + K31, K32, K33, K34, K35, K36, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, \ + K41, K43, K44, K46, K49, K4B, K4F \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KNO, K0F }, \ + { K10, K11, K12, K13, K14, K15, K16, KNO, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \ + { K20, K21, K22, K23, K24, K25, K26, KNO, K28, K29, K2A, K2B, K2C, K2D, KNO, K2F }, \ + { KNO, K31, K32, K33, K34, K35, K36, KNO, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F }, \ + { KNO, K41, KNO, K43, K44, KNO, K46, KNO, KNO, K49, KNO, K4B, KNO, KNO, KNO, K4F } \ +} diff --git a/keyboards/edda/info.json b/keyboards/edda/info.json new file mode 100644 index 000000000000..2945b2b22d29 --- /dev/null +++ b/keyboards/edda/info.json @@ -0,0 +1,154 @@ +{ + "keyboard_name": "Edda", + "url": "https://mekanisk.com", + "maintainer": "qmk", + "layouts": { + "LAYOUT_alice_split_bs": { + "layout": [ + {"label":"Esc", "x":0.5, "y":0}, + {"label":"`", "x":1.75, "y":0.25}, + {"label":"1", "x":2.75, "y":0.25}, + {"label":"2", "x":3.75, "y":0}, + {"label":"3", "x":4.75, "y":0.25}, + {"label":"4", "x":5.75, "y":0.25}, + {"label":"5", "x":6.75, "y":0.25}, + {"label":"6", "x":7.75, "y":0.25}, + {"label":"7", "x":11, "y":0.25}, + {"label":"8", "x":12, "y":0.25}, + {"label":"9", "x":13, "y":0.25}, + {"label":"0", "x":14, "y":0.25}, + {"label":"-", "x":15, "y":0}, + {"label":"=", "x":16, "y":0.25}, + {"label":"Del", "x":17, "y":0.25}, + {"label":"Backspace", "x":18, "y":0.25}, + + {"label":"PgUp", "x":0.25, "y":1}, + {"label":"Tab", "x":1.5, "y":1.25, "w":1.5}, + {"label":"Q", "x":3, "y":1.25}, + {"label":"W", "x":4.25, "y":1.25}, + {"label":"E", "x":5.25, "y":1.25}, + {"label":"R", "x":6.25, "y":1.25}, + {"label":"T", "x":7.25, "y":1.25}, + {"label":"Y", "x":10.5, "y":1.25}, + {"label":"U", "x":11.5, "y":1.25}, + {"label":"I", "x":12.5, "y":1.25}, + {"label":"O", "x":13.5, "y":1.25}, + {"label":"P", "x":14.75, "y":1.25}, + {"label":"{", "x":15.75, "y":1.25}, + {"label":"}", "x":16.75, "y":1.25}, + {"label":"|", "x":17.75, "y":1.25, "w":1.5}, + + {"label":"PgDn", "x":0, "y":2}, + {"label":"Caps Lock", "x":1.5, "y":2.25, "w":1.75}, + {"label":"A", "x":3.25, "y":2.25}, + {"label":"S", "x":4.5, "y":2.25}, + {"label":"D", "x":5.5, "y":2.25}, + {"label":"F", "x":6.5, "y":2.25}, + {"label":"G", "x":7.5, "y":2.25}, + {"label":"H", "x":10.75, "y":2.25}, + {"label":"J", "x":11.75, "y":2.25}, + {"label":"K", "x":12.75, "y":2.25}, + {"label":"L", "x":13.75, "y":2.25}, + {"label":":", "x":15.25, "y":2.25}, + {"label":"\"", "x":16.25, "y":2.25}, + {"label":"Enter", "x":17.25, "y":2.25, "w":2.25}, + + {"label":"Shift", "x":1.5, "y":3.25, "w":2.25}, + {"label":"Z", "x":3.75, "y":3.25}, + {"label":"X", "x":5, "y":3.25}, + {"label":"C", "x":6, "y":3.25}, + {"label":"V", "x":7, "y":3.25}, + {"label":"B", "x":8, "y":3.25}, + {"label":"Fn", "x":10.25, "y":3.25}, + {"label":"N", "x":11.25, "y":3.25}, + {"label":"M", "x":12.25, "y":3.25}, + {"label":"<", "x":13.25, "y":3.25}, + {"label":">", "x":15, "y":3.25}, + {"label":"?", "x":16, "y":3.25}, + {"label":"Shift", "x":17, "y":3.25, "w":1.75}, + {"label":"Fn", "x":18.75, "y":3.25}, + + {"label":"Ctrl", "x":1.5, "y":4.25, "w":1.5}, + {"label":"Alt", "x":5, "y":4.25, "w":1.5}, + {"label":"Space", "x":6.5, "y":4.25, "w":2}, + {"label":"Menu", "x":8.5, "y":4.25}, + {"label":"Space", "x":10.25, "y":4.25, "w":2.75}, + {"label":"Alt", "x":13, "y":4.25, "w":1.5}, + {"label":"Ctrl", "x":18, "y":4.25, "w":1.5} + ] + }, + "LAYOUT_alice": { + "layout": [ + {"label":"Esc", "x":0.5, "y":0}, + {"label":"`", "x":1.75, "y":0.25}, + {"label":"1", "x":2.75, "y":0.25}, + {"label":"2", "x":3.75, "y":0}, + {"label":"3", "x":4.75, "y":0.25}, + {"label":"4", "x":5.75, "y":0.25}, + {"label":"5", "x":6.75, "y":0.25}, + {"label":"6", "x":7.75, "y":0.25}, + {"label":"7", "x":11, "y":0.25}, + {"label":"8", "x":12, "y":0.25}, + {"label":"9", "x":13, "y":0.25}, + {"label":"0", "x":14, "y":0.25}, + {"label":"-", "x":15, "y":0}, + {"label":"=", "x":16, "y":0.25}, + {"label":"Backspace", "x":17, "y":0.25, "w":2}, + + {"label":"PgUp", "x":0.25, "y":1}, + {"label":"Tab", "x":1.5, "y":1.25, "w":1.5}, + {"label":"Q", "x":3, "y":1.25}, + {"label":"W", "x":4.25, "y":1.25}, + {"label":"E", "x":5.25, "y":1.25}, + {"label":"R", "x":6.25, "y":1.25}, + {"label":"T", "x":7.25, "y":1.25}, + {"label":"Y", "x":10.5, "y":1.25}, + {"label":"U", "x":11.5, "y":1.25}, + {"label":"I", "x":12.5, "y":1.25}, + {"label":"O", "x":13.5, "y":1.25}, + {"label":"P", "x":14.75, "y":1.25}, + {"label":"{", "x":15.75, "y":1.25}, + {"label":"}", "x":16.75, "y":1.25}, + {"label":"|", "x":17.75, "y":1.25, "w":1.5}, + + {"label":"PgDn", "x":0, "y":2}, + {"label":"Caps Lock", "x":1.5, "y":2.25, "w":1.75}, + {"label":"A", "x":3.25, "y":2.25}, + {"label":"S", "x":4.5, "y":2.25}, + {"label":"D", "x":5.5, "y":2.25}, + {"label":"F", "x":6.5, "y":2.25}, + {"label":"G", "x":7.5, "y":2.25}, + {"label":"H", "x":10.75, "y":2.25}, + {"label":"J", "x":11.75, "y":2.25}, + {"label":"K", "x":12.75, "y":2.25}, + {"label":"L", "x":13.75, "y":2.25}, + {"label":":", "x":15.25, "y":2.25}, + {"label":"\"", "x":16.25, "y":2.25}, + {"label":"Enter", "x":17.25, "y":2.25, "w":2.25}, + + {"label":"Shift", "x":1.5, "y":3.25, "w":2.25}, + {"label":"Z", "x":3.75, "y":3.25}, + {"label":"X", "x":5, "y":3.25}, + {"label":"C", "x":6, "y":3.25}, + {"label":"V", "x":7, "y":3.25}, + {"label":"B", "x":8, "y":3.25}, + {"label":"Fn", "x":10.25, "y":3.25}, + {"label":"N", "x":11.25, "y":3.25}, + {"label":"M", "x":12.25, "y":3.25}, + {"label":"<", "x":13.25, "y":3.25}, + {"label":">", "x":15, "y":3.25}, + {"label":"?", "x":16, "y":3.25}, + {"label":"Shift", "x":17, "y":3.25, "w":1.75}, + {"label":"Fn", "x":18.75, "y":3.25}, + + {"label":"Ctrl", "x":1.5, "y":4.25, "w":1.5}, + {"label":"Alt", "x":5, "y":4.25, "w":1.5}, + {"label":"Space", "x":6.5, "y":4.25, "w":2}, + {"label":"Menu", "x":8.5, "y":4.25}, + {"label":"Space", "x":10.25, "y":4.25, "w":2.75}, + {"label":"Alt", "x":13, "y":4.25, "w":1.5}, + {"label":"Ctrl", "x":18, "y":4.25, "w":1.5} + ] + } + } +} diff --git a/keyboards/edda/keymaps/default/keymap.c b/keyboards/edda/keymaps/default/keymap.c new file mode 100644 index 000000000000..d935a74826b6 --- /dev/null +++ b/keyboards/edda/keymaps/default/keymap.c @@ -0,0 +1,40 @@ +/* +Copyright 2021 Martin Arnstad +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _BASE 0 +#define _FN1 1 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_alice_split_bs( + KC_ESC, KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, KC_BSPC, + KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RGUI, + KC_LCTL, KC_LALT, KC_SPC, MO(_FN1), KC_SPC, KC_RALT, KC_RCTL + ), + + [_FN1] = LAYOUT_alice_split_bs( + RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, + RGB_MOD, _______, _______, KC_UP, _______, _______, _______, RGB_SAI, RGB_HUI, RGB_VAI, _______, _______, _______, _______, _______, + RGB_RMOD, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, RGB_SAD, RGB_HUD, RGB_VAD, _______, _______, _______, _______, + _______, BL_INC, BL_DEC, BL_TOGG, BL_BRTG, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, RESET + ) +}; diff --git a/keyboards/edda/keymaps/via/keymap.c b/keyboards/edda/keymaps/via/keymap.c new file mode 100644 index 000000000000..9437fbc12722 --- /dev/null +++ b/keyboards/edda/keymaps/via/keymap.c @@ -0,0 +1,53 @@ +/* +Copyright 2021 Martin Arnstad +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_alice_split_bs( + KC_ESC, KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, KC_BSPC, + KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RGUI, + KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RCTL + ), + [1] = LAYOUT_alice_split_bs( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_alice_split_bs( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_alice_split_bs( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) + +}; diff --git a/keyboards/edda/keymaps/via/rules.mk b/keyboards/edda/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/edda/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/edda/readme.md b/keyboards/edda/readme.md new file mode 100644 index 000000000000..6bfe89b29a8d --- /dev/null +++ b/keyboards/edda/readme.md @@ -0,0 +1,21 @@ +# Edda PCB + +Alice layout PCB with top mounted USB C used in Mekanisk Edda + +* Keyboard Maintainer: [martin](https://github.com/arnstadm) +* Hardware Supported: [Edda PCB](https://tastatur.no/collections/forhandsbestilling-1/products/edda-pcb?variant=39481626001453) + +Make example for this keyboard (after setting up your build environment): + + make edda:default + +Flashing example for this keyboard: + + make edda: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). + +How to enter bootloader (DFU): + + Press and hold the button on the keyboard (the small one on the same side as the MCU) for more than 1 second. The keyboard will then enter bootloader (DFU) mode and it's ready to flash the firmware. + Note: If holding the button a shorter time, the keyboard will just reset. If you want to exit bootloader mode without flashing a firmware, disconnect the keyboard from your PC and reconnect it. diff --git a/keyboards/edda/rules.mk b/keyboards/edda/rules.mk new file mode 100644 index 000000000000..335dc9356b24 --- /dev/null +++ b/keyboards/edda/rules.mk @@ -0,0 +1,21 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = qmk-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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +LAYOUTS = alice alice_split_bs diff --git a/keyboards/edi/hardlight/mk1/config.h b/keyboards/edi/hardlight/mk1/config.h new file mode 100644 index 000000000000..be136fe9c90b --- /dev/null +++ b/keyboards/edi/hardlight/mk1/config.h @@ -0,0 +1,109 @@ +/* +©2021 Everywhere Defense Industries / Fate Everywhere + +This program is free software: you can 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 . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xF7E0 +#define PRODUCT_ID 0x2401 +#define DEVICE_VER 0x0000 +#define MANUFACTURER Everywhere Defense Industries +#define PRODUCT Hard Light + +/* key matrix size */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 8 + +/* + * 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, D4, D6, D7, B4 } +#define MATRIX_COL_PINS { E6, F0, F1, F4, F5, F6, F7, B5 } +#define UNUSED_PINS { B7, D2, D3, D5 } + + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +// #define BACKLIGHT_PIN C7 +// #define BACKLIGHT_BREATHING +// #define BACKLIGHT_LEVELS 3 + + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* 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 + +/* + * Enable RGB Underlighting + */ +#define RGB_DI_PIN C7 +#define RGBLED_NUM 15 +#define RGBLIGHT_ANIMATIONS +//#define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//#define RGBLIGHT_EFFECT_KNIGHT +//#define RGBLIGHT_EFFECT_TWINKLE +//#define RGBLIGHT_EFFECT_BREATHING + + +/* + * Enable Audio Subsystem with two voices + */ +// #define AUDIO_PIN C6 + + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is userful for the Windows task manager shortcut (ctrl+shift+esc). + */ +// #define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO diff --git a/keyboards/edi/hardlight/mk1/keymaps/.gitignore b/keyboards/edi/hardlight/mk1/keymaps/.gitignore new file mode 100644 index 000000000000..08a0f321a2d7 --- /dev/null +++ b/keyboards/edi/hardlight/mk1/keymaps/.gitignore @@ -0,0 +1 @@ +fate \ No newline at end of file diff --git a/keyboards/edi/hardlight/mk1/keymaps/default/config.h b/keyboards/edi/hardlight/mk1/keymaps/default/config.h new file mode 100644 index 000000000000..2db5f3b3282b --- /dev/null +++ b/keyboards/edi/hardlight/mk1/keymaps/default/config.h @@ -0,0 +1,20 @@ +/* +©2021 Everywhere Defense Industries / Fate Everywhere + +This program is free software: you can 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 . +*/ + +#pragma once + +// place overrides here diff --git a/keyboards/edi/hardlight/mk1/keymaps/default/keymap.c b/keyboards/edi/hardlight/mk1/keymaps/default/keymap.c new file mode 100644 index 000000000000..251b6c8b38fe --- /dev/null +++ b/keyboards/edi/hardlight/mk1/keymaps/default/keymap.c @@ -0,0 +1,115 @@ +/* +©2021 Everywhere Defense Industries / Fate Everywhere + +This program is free software: you can 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 . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _MAIN, + _RAISE, + _LOWER, + _SET, +}; + +// Readability keycodes +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) +#define SET MO(_SET) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + +/* MAIN + * .-----------------------------------------------------------------------------------------------------------------------------------------------. + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Backsp | Delete | 7 | 8 | 9 | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | ' | Pause | 4 | 5 | 6 | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | LShift | Z | X | C | V | B | N | M | , | . | / | Up | Enter | 1 | 2 | 3 | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | LCtrl | Lock | GUI | Alt | Lower | Space | Space | Raise | PrtScr | RShift | Left | Down | Right | 0 | . | Enter | + * '-----------------------------------------------------------------------------------------------------------------------------------------------' + */ + + [_MAIN] = LAYOUT_ortho_4x16( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_DEL, KC_KP_7, KC_KP_8, KC_KP_9, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_PAUS, KC_KP_4, KC_KP_5, KC_KP_6, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_ENT, KC_KP_1, KC_KP_2, KC_KP_3, + KC_LCTL, KC_LOCK, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_PSCR, KC_RSFT, KC_LEFT, KC_DOWN, KC_RGHT, KC_KP_0, KC_KP_DOT, KC_PENT + ), + +/* RAISE + * .-----------------------------------------------------------------------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | | Insert | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | | | - | = | [ | ] | \ | | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | | | | | | | PgUp | | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | | | | | | Vol- | PgDn | Vol+ | | | | + * '-----------------------------------------------------------------------------------------------------------------------------------------------' + */ + + [_RAISE] = LAYOUT_ortho_4x16( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, KC_INS, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_PGDN, KC_VOLU, _______, _______, _______ + ), + +/* LOWER + * .-----------------------------------------------------------------------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | | | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | | Home | | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | | | | | | Mute | End | Play | | | | + * '-----------------------------------------------------------------------------------------------------------------------------------------------' + */ + + [_LOWER] = LAYOUT_ortho_4x16( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, _______, _______, _______, _______, + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, _______, _______, _______, _______, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, KC_HOME, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_END, KC_MPLY, _______, _______, _______ + ), + + /* SETTINGS + * .-----------------------------------------------------------------------------------------------------------------------------------------------. + * | | CapLok | ScrLok | NumLok | | | | RGB IO | Mode+ | Mode- | Plain | | | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | | | Hue+ | Sat+ | Val+ | RSwirl | | | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | | | Hue- | Sat- | Val- | Larsen | | Reset | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | | | | | | | | | | | | + * '-----------------------------------------------------------------------------------------------------------------------------------------------' + */ + + [_SET] = LAYOUT_ortho_4x16( + _______, KC_CAPS, KC_SLCK, KC_NLCK, _______, _______, _______, RGB_TOG, RGB_MOD, RGB_RMOD, RGB_M_P, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, RGB_M_SW, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, RGB_M_K, _______, RESET, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; + +layer_state_t layer_state_set_user(layer_state_t state) { + return update_tri_layer_state(state, _LOWER, _RAISE, _SET); +} \ No newline at end of file diff --git a/keyboards/edi/hardlight/mk1/mk1.c b/keyboards/edi/hardlight/mk1/mk1.c new file mode 100644 index 000000000000..5a1e0bbb1912 --- /dev/null +++ b/keyboards/edi/hardlight/mk1/mk1.c @@ -0,0 +1,18 @@ +/* +©2021 Everywhere Defense Industries / Fate Everywhere + +This program is free software: you can 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 . +*/ + +#include "mk1.h" diff --git a/keyboards/edi/hardlight/mk1/mk1.h b/keyboards/edi/hardlight/mk1/mk1.h new file mode 100644 index 000000000000..e8ef9777a4c0 --- /dev/null +++ b/keyboards/edi/hardlight/mk1/mk1.h @@ -0,0 +1,41 @@ +/* +©2021 Everywhere Defense Industries / Fate Everywhere + +This program is free software: you can 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 . +*/ + +#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_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 } \ +} diff --git a/keyboards/edi/hardlight/mk1/readme.md b/keyboards/edi/hardlight/mk1/readme.md new file mode 100644 index 000000000000..177a46b5d087 --- /dev/null +++ b/keyboards/edi/hardlight/mk1/readme.md @@ -0,0 +1,19 @@ +# Hard Light Mark 1 + +![Hard Light Mark 1](https://i.imgur.com/X6Katarh.png) + +A compact 60% keyboard designed by Fate Everywhere. Born out of the desire for a Planck with a numpad for technical work and a lack of reliance on the Elite-C. + +* Keyboard Maintainer: [Fate Everywhere](https://github.com/fateeverywhere) +* Hardware Supported: Revision P, Revision Q, Mark 1 Hard Light. +* Hardware Availability: Seven Store (https://store.7storm.org). + +Build example for this keyboard (after setting up your build environment): + + make edi/hardlight/mk1:default + +Flash example for this keyboard (after setting up your build environment): + + make edi/hardlight/mk1:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/edi/hardlight/mk1/rules.mk b/keyboards/edi/hardlight/mk1/rules.mk new file mode 100644 index 000000000000..7e451b92a5a3 --- /dev/null +++ b/keyboards/edi/hardlight/mk1/rules.mk @@ -0,0 +1,20 @@ +# 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 = yes # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +KEY_LOCK_ENABLE = yes \ No newline at end of file diff --git a/keyboards/eek/info.json b/keyboards/eek/info.json index c911e50c7d72..b6934c2a3937 100644 --- a/keyboards/eek/info.json +++ b/keyboards/eek/info.json @@ -2,8 +2,6 @@ "keyboard_name": "eek!", "url": "http://www.keyboard-layout-editor.com/#/gists/3e4d0cd1534dd4e4b9f25cf2b36d0d63", "maintainer": "klackygears", - "width": 13, - "height": 6.25, "layouts": { "LAYOUT_split_3x5_3": { "layout": [ diff --git a/keyboards/eek/rules.mk b/keyboards/eek/rules.mk index ce3df8f21fcc..66e320364139 100644 --- a/keyboards/eek/rules.mk +++ b/keyboards/eek/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = qmk-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output RGB_MATRIX_DRIVER = WS2812 DEFAULT_FOLDER = eek/silk_down diff --git a/keyboards/efreet/info.json b/keyboards/efreet/info.json index 6766b39527b5..0b34c4c6f174 100644 --- a/keyboards/efreet/info.json +++ b/keyboards/efreet/info.json @@ -2,8 +2,6 @@ "keyboard_name": "efreet", "url": "", "maintainer": "amberstarlight", - "width": 12, - "height": 4, "layouts": { "LAYOUT_planck_mit": { "layout": [ diff --git a/keyboards/efreet/rules.mk b/keyboards/efreet/rules.mk index eeacc5199b67..a643be5d7e86 100644 --- a/keyboards/efreet/rules.mk +++ b/keyboards/efreet/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LAYOUTS = ortho_4x12 planck_mit diff --git a/keyboards/eggman/info.json b/keyboards/eggman/info.json index d7b6d21fe555..17e1cb216680 100644 --- a/keyboards/eggman/info.json +++ b/keyboards/eggman/info.json @@ -2,8 +2,6 @@ "keyboard_name": "eggman", "url": "", "maintainer": "qpockets", - "width": 11.5, - "height": 5, "layouts": { "LAYOUT_default": { "layout": [ diff --git a/keyboards/eggman/rules.mk b/keyboards/eggman/rules.mk index 131c62bd1770..8eaff8d7130d 100644 --- a/keyboards/eggman/rules.mk +++ b/keyboards/eggman/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes diff --git a/keyboards/ein_60/config.h b/keyboards/ein_60/config.h new file mode 100644 index 000000000000..c701f1f6d6c6 --- /dev/null +++ b/keyboards/ein_60/config.h @@ -0,0 +1,98 @@ +/* +Copyright 2021 klackygears + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4A53 +#define PRODUCT_ID 0x0003 +#define DEVICE_VER 0x0001 +#define MANUFACTURER klackygears +#define PRODUCT EIN_60 + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 13 + +#define MATRIX_ROW_PINS { F1, F2, F3, F4 } +#define MATRIX_COL_PINS { A3, A2, A1, A0, F6, F5, F0, E0, E1, C0, C1, C2, C3 } + +#define DIODE_DIRECTION COL2ROW + +#ifdef ENCODER_ENABLE +# define ENCODERS_PAD_A { B0, C5 } +# define ENCODERS_PAD_B { E3, C4 } +# define ENCODER_RESOLUTIONS { 4, 4 } +#endif + +#ifdef OLED_ENABLE +# define OLED_DISPLAY_128X64 +# define OLED_TIMEOUT 450000 +# define OLED_FONT_H "keyboards/ein_60/glcdfont.c" +#endif + +#ifdef AUDIO_ENABLE +# define AUDIO_PIN C6 +# define AUDIO_CLICKY +# define AUDIO_DAC_SAMPLE_MAX 4095U +#endif + +#define RGB_DI_PIN E7 +#ifdef RGB_DI_PIN +# define RGBLED_NUM 38 +# define RGBLIGHT_HUE_STEP 4 +# define RGBLIGHT_SAT_STEP 8 +# define RGBLIGHT_VAL_STEP 8 +# define RGBLIGHT_LIMIT_VAL 200 /* The maximum brightness level */ +# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +# 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 +// /*== customize breathing effect ==*/ +// /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +// #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +// /*==== use exp() and sin() ====*/ +// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +#endif + +#ifdef RGB_MATRIX_ENABLE +# define DRIVER_LED_TOTAL 38 +# define RGB_MATRIX_LED_FLUSH_LIMIT 16 +# define RGB_MATRIX_STARTUP_VAL 150 +# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* 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/ein_60/ein_60.c b/keyboards/ein_60/ein_60.c new file mode 100644 index 000000000000..d15ad0cd526e --- /dev/null +++ b/keyboards/ein_60/ein_60.c @@ -0,0 +1,123 @@ +/* Copyright 2021 klackygears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "ein_60.h" + +#ifdef RGB_MATRIX_ENABLE + + // Logical Layout + // Columns + // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 + // ROWS + // 37 0 1 2 3 4 5 6 7 8 9 10 11 12 0 + // 36 13 1 + // 35 14 2 + // 34 15 3 + // 33 16 3 + // 32 17 4 + // 31 30 29 28 27 26 25 24 23 22 21 20 19 18 5 + +led_config_t g_led_config = { { + { 36, 1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 10, 13 }, + { 34, 1, 2, 3, 4, 5, NO_LED, 6, 7, 8, 9, 10, 15 }, + { 33, 30, 29, 28, 27, 26, NO_LED, 23, 22, 21, 20, 19, 16 }, + { 32, 30, 29, 28, 27, 26, 24, 23, 22, 21, 20, 19, 17 } +}, { + { 30, 0 }, { 45, 0 }, { 60, 0 }, { 75, 0 }, { 90, 0 }, { 105, 0 }, { 119, 0 }, { 134, 0 }, { 149, 0 }, { 164, 0 }, { 179, 0 }, { 194, 0 }, { 209, 0 }, { 224, 11 }, + { 224, 21 }, { 224, 32 }, { 224, 43 }, { 224, 53 }, { 209, 64 }, { 194, 64 }, { 179, 64 }, { 164, 64 }, { 149, 64 }, { 134, 64 }, { 119, 64 }, { 105, 64 }, { 90, 64 }, + { 75, 64 }, { 60, 64 }, { 45, 64 }, { 30, 64 }, { 15, 64 }, { 0, 53 }, { 0, 43 }, { 0, 32 }, { 0, 21 }, { 0, 11 }, { 15, 0 }, +}, { + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, +} }; +#endif + +#ifdef AUDIO_ENABLE +const uint8_t music_map[MATRIX_ROWS][MATRIX_COLS] = LAYOUT( + 30, 31, 32, 33, 34, 35, 35, 36, 37, 38, 39, 40, 41, + 18, 9, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 +); +#endif + +#ifdef OLED_ENABLE +bool oled_task_kb(void) { + if (!oled_task_user()) { return false; } + // Host Keyboard Layer Status + oled_write_P(PSTR("Layer: "), false); + switch (get_highest_layer(layer_state)) { + case 0: + oled_write_P(PSTR("Default\n"), false); + break; + case 1: + oled_write_P(PSTR("Lower\n"), false); + break; + case 2: + oled_write_P(PSTR("Raise\n"), false); + break; + case 3: + oled_write_P(PSTR("Adjust\n"), false); + break; + case 4: + oled_write_P(PSTR("FN\n"), false); + break; + default: + // Or use the write_ln shortcut over adding '\n' to the end of your string + oled_write_ln_P(PSTR("Undefined"), false); + } + + + // Host Keyboard LED Status + led_t led_state = host_keyboard_led_state(); + oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); + oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); + oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); + + oled_set_cursor(1,2); + oled_advance_page(true); + static const char PROGMEM ein60_logo[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 11,251,139,139,139,139,139,139,139,139,139,139,139, 11, 15, 0,240,240, 16,240, 0,240,240, 16,240,224,192,128, 0, 0, 0, 0,240, 16,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254,255, 11,251,139,139,139,139,139,139,139,139,139,139,139,143,128, 0, 0, 0, 0,254,255, 11,251, 11, 11, 11, 11,139,203,235,123,187,219,235,251,255, 7,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 4,253,197,197,197,197,197,197,197,197,197,197,199,192,192, 0,255,255, 0,255, 0,255,255, 0,254, 13, 27, 55,111,222,188,120,255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0,255,197,197,197,197,197,197,197,197,197,197,253,253,255,131,254, 0, 0,255,255, 0,255,184,220,238,247,219,205,198,195,193,192,255,255,255,128,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 0, 3, 3, 2, 3, 0, 3, 3, 2, 3, 0, 0, 0, 0, 0, 1, 3, 2, 2, 3, 0, 8, 28, 20, 20, 20, 20, 20, 28, 8, 0, 1, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 0, 0, 0, 1, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }; + + oled_write_raw_P(ein60_logo, sizeof(ein60_logo)); + return false; +} +#endif + +#ifdef ENCODER_ENABLE +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + if (index == 0) { /* First encoder */ + if (clockwise) { + tap_code_delay(KC_VOLU, 10); + } else { + tap_code_delay(KC_VOLD, 10); + } + } else if (index == 1) { /* Second encoder */ + if (clockwise) { + tap_code(KC_DOWN); + } else { + tap_code(KC_UP); + } + } + return true; +} +#endif diff --git a/keyboards/ein_60/ein_60.h b/keyboards/ein_60/ein_60.h new file mode 100644 index 000000000000..91bfe3acfd3c --- /dev/null +++ b/keyboards/ein_60/ein_60.h @@ -0,0 +1,38 @@ +/* Copyright 2021 klackygears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, \ + K10, K11, K12, K13, K14, K15, K17, K18, K19, K1A, K1B, K1C, \ + K20, K21, K22, K23, K24, K25, K27, K28, K29, K2A, K2B, K2C, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C }, \ + { K10, K11, K12, K13, K14, K15, KC_NO, K17, K18, K19, K1A, K1B, K1C }, \ + { K20, K21, K22, K23, K24, K25, KC_NO, K27, K28, K29, K2A, K2B, K2C }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C } \ +} diff --git a/keyboards/ein_60/glcdfont.c b/keyboards/ein_60/glcdfont.c new file mode 100644 index 000000000000..b53b0918f54c --- /dev/null +++ b/keyboards/ein_60/glcdfont.c @@ -0,0 +1,233 @@ +// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0. +// See gfxfont.h for newer custom bitmap font info. + +#pragma once + +#include "progmem.h" + +static const unsigned char PROGMEM font[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, + 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, + 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, + 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, + 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, + 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, + 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, + 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, + 0x00, 0x18, 0x24, 0x18, 0x00, 0x00, + 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, + 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, + 0x26, 0x29, 0x79, 0x29, 0x26, 0x00, + 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, + 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, + 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, + 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, + 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, + 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, + 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, + 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, + 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, + 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, + 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00, + 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00, + 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, + 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, + 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, + 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, + 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, + 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, + 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, + 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, + 0x23, 0x13, 0x08, 0x64, 0x62, 0x00, + 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, + 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, + 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, + 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, + 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, + 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, + 0x00, 0x80, 0x70, 0x30, 0x00, 0x00, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, + 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, + 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, + 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, + 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, + 0x72, 0x49, 0x49, 0x49, 0x46, 0x00, + 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, + 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, + 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, + 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, + 0x41, 0x21, 0x11, 0x09, 0x07, 0x00, + 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, + 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, + 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, + 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, + 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, + 0x02, 0x01, 0x59, 0x09, 0x06, 0x00, + 0x00, 0x41, 0x5D, 0x59, 0x4E, 0x00, + 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, + 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, + 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, + 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, + 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, + 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, + 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, + 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, + 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, + 0x20, 0x40, 0x40, 0x3F, 0x00, 0x00, + 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, + 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, + 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, + 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, + 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, + 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, + 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, + 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, + 0x26, 0x49, 0x49, 0x49, 0x32, 0x00, + 0x01, 0x01, 0x7F, 0x01, 0x01, 0x00, + 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, + 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, + 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, + 0x63, 0x14, 0x08, 0x14, 0x63, 0x00, + 0x03, 0x04, 0x78, 0x04, 0x03, 0x00, + 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, + 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, + 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, + 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, + 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, + 0x00, 0x03, 0x07, 0x08, 0x00, 0x00, + 0x78, 0x14, 0x14, 0x78, 0x00, 0x00, + 0x7C, 0x54, 0x54, 0x28, 0x00, 0x00, + 0x38, 0x44, 0x44, 0x28, 0x00, 0x00, + 0x7C, 0x44, 0x44, 0x38, 0x00, 0x00, + 0x7C, 0x54, 0x54, 0x44, 0x00, 0x00, + 0x7C, 0x14, 0x14, 0x04, 0x00, 0x00, + 0x38, 0x44, 0x54, 0x34, 0x00, 0x00, + 0x7C, 0x10, 0x10, 0x7C, 0x00, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x40, 0x40, 0x3C, 0x00, 0x00, + 0x7C, 0x10, 0x28, 0x44, 0x00, 0x00, + 0x7C, 0x40, 0x40, 0x40, 0x00, 0x00, + 0x7C, 0x08, 0x70, 0x08, 0x7C, 0x00, + 0x7C, 0x08, 0x10, 0x7C, 0x00, 0x00, + 0x38, 0x44, 0x44, 0x38, 0x00, 0x00, + 0x7C, 0x14, 0x14, 0x08, 0x00, 0x00, + 0x38, 0x44, 0x24, 0x58, 0x00, 0x00, + 0x7C, 0x14, 0x34, 0x48, 0x00, 0x00, + 0x48, 0x54, 0x54, 0x24, 0x00, 0x00, + 0x04, 0x7C, 0x04, 0x00, 0x00, 0x00, + 0x3C, 0x40, 0x40, 0x3C, 0x00, 0x00, + 0x3C, 0x40, 0x20, 0x1C, 0x00, 0x00, + 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, + 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, + 0x0C, 0x10, 0x70, 0x10, 0x0C, 0x00, + 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, + 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, + 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0x00, 0x41, 0x36, 0x08, 0x00, 0x00, + 0x02, 0x01, 0x02, 0x04, 0x02, 0x00, + 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFC, 0xFC, 0x2C, 0xEC, 0x2C, + 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, + 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x3C, + 0x00, 0xC0, 0xC0, 0x40, 0xC0, 0x00, + 0xC0, 0xC0, 0x40, 0xC0, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, + 0x40, 0xC0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xF8, 0xFC, 0x2C, 0xEC, 0x2C, + 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, + 0x2C, 0x2C, 0x2C, 0x2C, 0x3C, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFC, + 0x2C, 0xEC, 0x2C, 0x2C, 0x2C, 0x2C, + 0x2C, 0x2C, 0xAC, 0xEC, 0xEC, 0x6C, + 0xAC, 0xEC, 0xFC, 0x1C, 0xF0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC, + 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00, + 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, + 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00, + 0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B, + 0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00, + 0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE, + 0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFF, 0xFF, 0x10, 0xF7, 0x16, + 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, + 0x16, 0x16, 0x16, 0x1E, 0x00, 0x00, + 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, + 0xFF, 0xFF, 0x00, 0xFB, 0x37, 0x6F, + 0xDE, 0xBC, 0x78, 0xF0, 0xE0, 0xFF, + 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x16, + 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, + 0x16, 0x16, 0x16, 0xF6, 0xF6, 0xFE, + 0x0C, 0xF8, 0x00, 0x00, 0xFF, 0xFF, + 0x00, 0xFF, 0xE0, 0x70, 0xB8, 0xDC, + 0x6E, 0x37, 0x1B, 0x0D, 0x06, 0x03, + 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, + 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00, + 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, + 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00, + 0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20, + 0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00, + 0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F, + 0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0F, 0x0F, 0x08, 0x0B, 0x0B, + 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, + 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0F, + 0x00, 0x0F, 0x0F, 0x08, 0x0F, 0x00, + 0x0F, 0x0F, 0x08, 0x0F, 0x00, 0x00, + 0x00, 0x01, 0x03, 0x06, 0x0D, 0x0B, + 0x08, 0x0F, 0x00, 0x20, 0x70, 0x50, + 0x50, 0x50, 0x50, 0x50, 0x70, 0x20, + 0x00, 0x07, 0x0F, 0x0C, 0x0B, 0x0B, + 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, + 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, + 0x0E, 0x03, 0x00, 0x00, 0x07, 0x0F, + 0x0C, 0x0B, 0x0A, 0x0B, 0x0B, 0x0B, + 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, + 0x0B, 0x0B, 0x0B, 0x0E, 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, +}; diff --git a/keyboards/ein_60/info.json b/keyboards/ein_60/info.json new file mode 100644 index 000000000000..c1cd5c7f77ca --- /dev/null +++ b/keyboards/ein_60/info.json @@ -0,0 +1,64 @@ +{ + "keyboard_name": "Ein_60", + "url": "", + "maintainer": "klackygears", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"Tab", "x":0, "y":1}, + {"label":"Q", "x":1, "y":0.75}, + {"label":"W", "x":2, "y":0.25}, + {"label":"E", "x":3, "y":0}, + {"label":"R", "x":4, "y":0.25}, + {"label":"T", "x":5, "y":0.5}, + {"label":"Mute", "x":6.5, "y":0.5}, + {"label":"Y", "x":8, "y":0.5}, + {"label":"U", "x":9, "y":0.25}, + {"label":"I", "x":10, "y":0}, + {"label":"O", "x":11, "y":0.25}, + {"label":"P", "x":12, "y":0.75}, + {"label":"Backspace", "x":13, "y":1}, + + {"label":"Fn", "x":0, "y":2}, + {"label":"A", "x":1, "y":1.75}, + {"label":"S", "x":2, "y":1.25}, + {"label":"D", "x":3, "y":1}, + {"label":"F", "x":4, "y":1.25}, + {"label":"G", "x":5, "y":1.5}, + {"label":"H", "x":8, "y":1.5}, + {"label":"J", "x":9, "y":1.25}, + {"label":"K", "x":10, "y":1}, + {"label":"L", "x":11, "y":1.25}, + {"label":";:", "x":12, "y":1.75}, + {"label":"Enter", "x":13, "y":2}, + + {"label":"Shift", "x":0, "y":3}, + {"label":"Z", "x":1, "y":2.75}, + {"label":"X", "x":2, "y":2.25}, + {"label":"C", "x":3, "y":2}, + {"label":"V", "x":4, "y":2.25}, + {"label":"B", "x":5, "y":2.5}, + {"label":"N", "x":8, "y":2.5}, + {"label":"M", "x":9, "y":2.25}, + {"label":",<", "x":10, "y":2}, + {"label":".>", "x":11, "y":2.25}, + {"label":"/?", "x":12, "y":2.75}, + {"label":"'\"", "x":13, "y":3}, + + {"label":"Ctrl", "x":0, "y":4}, + {"label":"`~", "x":1, "y":3.75}, + {"label":"GUI", "x":2, "y":3.25}, + {"label":"Alt", "x":3, "y":3}, + {"label":"Lower", "x":4, "y":3.25}, + {"label":"Space", "x":5, "y":3.5}, + {"label":"Space", "x":6.25, "y":3.5, "w":1.5}, + {"label":"Space", "x":8, "y":3.5}, + {"label":"Raise", "x":9, "y":3.25}, + {"label":"\u2190", "x":10, "y":3}, + {"label":"\u2193", "x":11, "y":3.25}, + {"label":"\u2191", "x":12, "y":3.75}, + {"label":"\u2192", "x":13, "y":4} + ] + } + } +} diff --git a/keyboards/ein_60/keymaps/default/keymap.c b/keyboards/ein_60/keymaps/default/keymap.c new file mode 100644 index 000000000000..24a705106c24 --- /dev/null +++ b/keyboards/ein_60/keymaps/default/keymap.c @@ -0,0 +1,209 @@ +/* Copyright 2021 klackygears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layer_names { + _QWERTY, + _LOWER, + _RAISE, + _ADJUST, + _FUNCTION, +}; + +enum custom_keycodes { + RGBRST = SAFE_RANGE, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* Qwerty + * ,-----------------------------------------. ,------. ,----------------------------------------. + * | Tab | Q | W | E | R | T | | Mute | | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+------| `------' |------+------+------+------+------+------| + * | Func | A | S | D | F | G | | H | J | K | L | ; | Enter| + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | | N | M | , | . | / | ' | + * |------+------+------|--------------------+ ,------. +--------------------|------+------+------| + * | Ctrl | ` | GUI | Alt |Lower |Space | |Space | |Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------' `------' `-----------------------------------------' + */ + [_QWERTY] = LAYOUT( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_MUTE, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + MO(_FUNCTION), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + OSM(MOD_LSFT), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT, + KC_LCTL, KC_GRV, KC_LGUI, KC_LALT, MO(_LOWER), KC_SPC, KC_SPC, KC_SPC, MO(_RAISE), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + /* Lower + * ,-----------------------------------------. ,------. ,-----------------------------------------. + * | Esc | ! | @ | # | $ | % | | | | ^ | & | * | ( | ) | Del | + * |------+------+------+------+------+------| `------' |------+------+------+------+------+------| + * | F1 | F2 | F3 | F4 | F5 | F6 | | | _ | + | { | } |Enter | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | F7 | F8 | F9 | F10 | F11 | F12 | | | | | Mute | | | | + * |------+------+------|--------------------+ ,------. +--------------------|------+------+------| + * | | | | |Lower | Bksp | | | | Bksp |Raise | Next | Vol- | Vol+ | Play | + * `-----------------------------------------' `------' `-----------------------------------------' + */ + [_LOWER] = LAYOUT( + KC_ESC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, _______, + KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, KC_MUTE, _______, KC_PIPE, + _______, _______, _______, _______, _______, KC_BSPC, _______, KC_BSPC, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), + /* Raise + * ,-----------------------------------------. ,------. ,-----------------------------------------. + * | Esc | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | Del | + * |------+------+------+------+------+------| `------' |------+------+------+------+------+------| + * | | 4 | 5 | 6 | + | F5 | | F6 | - | = | [ | ] |Enter | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * |Enter | 7 | 8 | 9 | - | F11 | | F12 |ISO # |ISO / | Mute | | \ | + * |------+------+------|--------------------+ ,------. +--------------------|------+------+------| + * | | , | 0 | . |Lower | Bksp | | | | Bksp |Raise | Next | Vol- | Vol+ | Play | + * `-----------------------------------------' `------' `-----------------------------------------' + */ + [_RAISE] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + _______, KC_4, KC_5, KC_6, KC_PLUS, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______, + KC_ENT, KC_7, KC_8, KC_9, KC_MINS, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_MUTE, _______, KC_BSLS, + _______, KC_COMM, KC_0, KC_DOT, _______, KC_BSPC, _______, KC_BSPC, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), + /* Adjust (Lower + Raise) + * ,-----------------------------------------. ,------. ,-----------------------------------------. + * | | | | | | | | | |RGBRST|RGBMOD|RGBVAI|RGBSAI|RGBHUI| | + * |------+------+------+------+------+------| `------' |------+------+------+------+------+------| + * | | | | | | | | |RGBRMO|RGBVAD|RGBSAD|RGBHUD|RGBTOG| + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | | | | | | | |BLSTEP| + * |------+------+------|--------------------+ ,------. +--------------------|------+------+------| + * | | | | | | | | | | | | | | | RESET| + * `-----------------------------------------' `------' `-----------------------------------------' + */ + [_ADJUST] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, RGBRST, RGB_MOD, RGB_VAI, RGB_SAI, RGB_HUI, _______, + _______, _______, _______, _______, _______, _______, _______, RGB_RMOD,RGB_VAD, RGB_SAD, RGB_HUD, RGB_TOG, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_STEP, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET + ), + /* Function + * ,-----------------------------------------. ,------. ,-----------------------------------------. + * | | | | | | | | | | | | Up | | | | + * |------+------+------+------+------+------| `------' |------+------+------+------+------+------| + * | | | | | | | | | Left | Down |Right | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Caps | | | | | | | | | | | | | + * |------+------+------|--------------------+ ,------. +--------------------|------+------+------| + * | | | | | | | | | | | | | | | | + * `-----------------------------------------' `------' `-----------------------------------------' + */ + [_FUNCTION] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + +layer_state_t layer_state_set_user(layer_state_t state) { + return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); +} + +#ifdef OLED_ENABLE + + +static void render_ein60_logo(void) { + static const char PROGMEM ein60_logo[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 11,251,139,139,139,139,139,139,139,139,139,139,139, 11, 15, 0,240,240, 16,240, 0,240,240, 16,240,224,192,128, 0, 0, 0, 0,240, 16,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254,255, 11,251,139,139,139,139,139,139,139,139,139,139,139,143,128, 0, 0, 0, 0,254,255, 11,251, 11, 11, 11, 11,139,203,235,123,187,219,235,251,255, 7,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 4,253,197,197,197,197,197,197,197,197,197,197,199,192,192, 0,255,255, 0,255, 0,255,255, 0,254, 13, 27, 55,111,222,188,120,255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0,255,197,197,197,197,197,197,197,197,197,197,253,253,255,131,254, 0, 0,255,255, 0,255,184,220,238,247,219,205,198,195,193,192,255,255,255,128,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 0, 3, 3, 2, 3, 0, 3, 3, 2, 3, 0, 0, 0, 0, 0, 1, 3, 2, 2, 3, 0, 8, 28, 20, 20, 20, 20, 20, 28, 8, 0, 1, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 0, 0, 0, 1, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }; + oled_write_raw_P(ein60_logo, sizeof(ein60_logo)); + } + +static void render_status(void) { + // Host Keyboard Layer Status + oled_write_P(PSTR("Layer: "), false); + switch (get_highest_layer(layer_state)) { + case _QWERTY: + oled_write_P(PSTR("Default\n"), false); + break; + case _LOWER: + oled_write_P(PSTR("Lower\n"), false); + break; + case _RAISE: + oled_write_P(PSTR("Raise\n"), false); + break; + case _ADJUST: + oled_write_P(PSTR("Adjust\n"), false); + break; + case _FUNCTION: + oled_write_P(PSTR("FN\n"), false); + break; + default: + // Or use the write_ln shortcut over adding '\n' to the end of your string + oled_write_ln_P(PSTR("Undefined"), false); + } + + + // Host Keyboard LED Status + led_t led_state = host_keyboard_led_state(); + oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); + oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); + oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); + + oled_set_cursor(1,2); +} + +bool oled_task_user(void) { + + render_status(); + oled_write_ln_P(PSTR(""), false); + render_ein60_logo(); + return false; +} +#endif + + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { /* First encoder */ + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else if (index == 1) { /* Second encoder */ + if (clockwise) { + tap_code(KC_DOWN); + } else { + tap_code(KC_UP); + } + } + return true; +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case RGBRST: + #ifdef RGBLIGHT_ENABLE + if (record->event.pressed) { + eeconfig_update_rgblight_default(); + rgblight_enable(); + } + #endif + break; + } + return true; +} diff --git a/keyboards/ein_60/keymaps/default/readme.md b/keyboards/ein_60/keymaps/default/readme.md new file mode 100644 index 000000000000..8f9aab04356d --- /dev/null +++ b/keyboards/ein_60/keymaps/default/readme.md @@ -0,0 +1,3 @@ +# The default keymap for EIN_60. + +It utilizes a nearly identical layout as the Plank. The OLED is enabled, rotary encoders are enabled, and the LEDs are enabled with RGB Matrix. You'll need to alter the rules.mk file in your own keymap to change this or simply cut the jumper pad with a hobby knife to disconnect them completely. There is an option to install a KELIKING KLJ-1102 speaker and enable with "AUDIO_ENABLE = yes" in your rules.mk file. diff --git a/keyboards/ein_60/keymaps/default/rules.mk b/keyboards/ein_60/keymaps/default/rules.mk new file mode 100644 index 000000000000..04b133f6a0bf --- /dev/null +++ b/keyboards/ein_60/keymaps/default/rules.mk @@ -0,0 +1,4 @@ +# Build Options +# change yes to no to disable +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +RGB_MATRIX_ENABLE = yes # Enable for pretty RGB matrix effects diff --git a/keyboards/ein_60/keymaps/klackygears/config.h b/keyboards/ein_60/keymaps/klackygears/config.h new file mode 100644 index 000000000000..d3b1c7b4d9d9 --- /dev/null +++ b/keyboards/ein_60/keymaps/klackygears/config.h @@ -0,0 +1,28 @@ +/* Copyright 2021 klackygears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + + + +#define PERMISSIVE_HOLD +#define TAPPING_TERM 150 +#define IGNORE_MOD_TAP_INTERRUPT + + +#ifdef RGB_MATRIX_ENABLE + #define RGB_MATRIX_KEYPRESSES +#endif diff --git a/keyboards/ein_60/keymaps/klackygears/keymap.c b/keyboards/ein_60/keymaps/klackygears/keymap.c new file mode 100644 index 000000000000..be3c30b97d76 --- /dev/null +++ b/keyboards/ein_60/keymaps/klackygears/keymap.c @@ -0,0 +1,175 @@ +/* Copyright 2020 klackygears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +#include "klackygears.h" +#include "stdio.h" + +//For an explanation of what's going on here with the keymap wrappers, check out drashna's user folder. +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_WINBASE] = LAYOUT_wrapper( + KC_ESC, _______________DVORAK_L1___________________, KC_MUTE, _______________DVORAK_R1___________________, KC_BSPC, + AU_TOG, _______________DVORAK_L2___________________, _______________DVORAK_R2___________________, RGB_TOG, + CK_TOGG, _______________WINDVK_L3___________________, _______________WINDVK_R3___________________, RGB_MOD, + KC_1, KC_2, KC_3, ________WIN_THUMB_L______, KC_SPC, ________WIN_THUMB_R______, KC_1, KC_2, KC_GAMER + ), + [_MACBASE] = LAYOUT_wrapper( + KC_ESC, _______________DVORAK_L1___________________, _______, _______________DVORAK_R1___________________, KC_BSPC, + RGB_TOG, _______________DVORAK_L2___________________, _______________DVORAK_R2___________________, RGB_TOG, + RGB_MOD, _______________MACDVK_L3___________________, _______________MACDVK_R3___________________, RGB_MOD, + _______, _______, _______, ________MAC_THUMB_L______, _______, ________MAC_THUMB_R______, _______, _______, _______ + ), + [_QWERTY] = LAYOUT_wrapper( + KC_ESC, _________________COLEMAK_L1________________, KC_ESC, _________________QWERTY_R1_________________, KC_BSPC, + KC_CAPS, _________________COLEMAK_L2________________, _________________QWERTY_R2_________________, KC_ENT, + KC_LSFT, _________________COLEMAK_L3________________, _________________QWERTY_R3_________________, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, _______, MO(_MNMB), MO(_SYMB), KC_SPC, MO(_SYMB), MO(_MNMB), KC_RGUI,_______, MO(_MDIA), MO(_FUNC) + ), + + //Borderlands + [_GAMER] = LAYOUT_wrapper( + KC_ESC, KC_R, KC_G, KC_W, KC_E, KC_1, _______, _________________RGB_1_____________________, KC_WINBASE, + KC_TAB, KC_V, KC_A, KC_S, KC_D, KC_2, _________________RGB_2_____________________, _______, + KC_C, KC_I, KC_F, KC_Q, KC_4, KC_3, _________________MEDIA_____________________, _______, + KC_Z, KC_X, KC_K, KC_LCTL, KC_LSFT, KC_SPC, KC_SPC, KC_F12, KC_P, KC_LEFT, KC_UP, KC_DOWN, KC_RIGHT + ), + + [_SYMB] = LAYOUT_wrapper( + _______, _________________PUNC_L1_ALT_______________, _______, _________________PUNC_R1___________________, _______, + _______, _________________PUNC_L3___________________, _________________PUNC_R2___________________, _______, + RGB_MOD, _________________PUNC_L3_ALT_______________, _________________PUNC_R3___________________, _______, + _______, _______, KC_NLCK, KC_SLCK, KC_DEL, _______, _______, _______, KC_CAPS, _______, _______, _______, _______ + ), + + [_FUNC] = LAYOUT_wrapper( + _______, _____________FUNC_L1_______________________, _______, _______, _____________FUNC_1_______________, _______, + _______, ________MAC_MISSION_CTRL__________, LGUI(KC_L), _______, _____________FUNC_2_______________, _______, + RGB_MOD, _____________FUNC_L3_______________________, _______, _____________FUNC_3_______________, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_CAPS, _______, _______, _______, _______ + ), + + [_MNMB] = LAYOUT_wrapper( + _______, _________________MACNAV_L1_________________, _______, _________________NUMB_R1___________________, _______, + _______, _________________MACNAV_L2_________________, _________________NUMB_R2___________________, _______, + RGB_MOD, _________________MACNAV_L3_________________, _________________NUMB_R3_MAC_______________, _______, + _______, _______, _______, _______, _______, _______, _______, _______, RSFT_T(KC_ENT), KC_RSFT, _______, _______, _______ + ), + + + [_NUMB] = LAYOUT_wrapper( + _______, _________________WINNAV_L1_________________, _______, _________________NUMB_R1___________________, _______, + _______, _________________WINNAV_L2_________________, _________________NUMB_R2___________________, _______, + RGB_MOD, _________________WINNAV_L3_________________, _________________NUMB_R3_WIN_______________, _______, + _______, _______, _______, TO(_WINBASE), _______, _______, _______, _______, RSFT_T(KC_ENT), KC_RSFT, _______, _______, _______ + ), + + [_MDIA] = LAYOUT_wrapper( + _______, _________________LYOUT_____________________, _______, _________________RGB_1_____________________, RGB_TOG, + _______, MU_TOG, _______, _______, _______, CK_UP, _________________RGB_2_____________________, _______, + RGB_MOD, MU_MOD, MU_TOG, CK_TOGG, CK_RST, CK_DOWN, _________________MEDIA_____________________, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) + +}; + + +#ifdef OLED_ENABLE + + char wpm_str[10]; + +static void render_ein60_logo(void) { + static const char PROGMEM ein60_logo[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 11,251,139,139,139,139,139,139,139,139,139,139,139, 11, 15, 0,240,240, 16,240, 0,240,240, 16,240,224,192,128, 0, 0, 0, 0,240, 16,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254,255, 11,251,139,139,139,139,139,139,139,139,139,139,139,143,128, 0, 0, 0, 0,254,255, 11,251, 11, 11, 11, 11,139,203,235,123,187,219,235,251,255, 7,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 4,253,197,197,197,197,197,197,197,197,197,197,199,192,192, 0,255,255, 0,255, 0,255,255, 0,254, 13, 27, 55,111,222,188,120,255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0,255,197,197,197,197,197,197,197,197,197,197,253,253,255,131,254, 0, 0,255,255, 0,255,184,220,238,247,219,205,198,195,193,192,255,255,255,128,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 0, 3, 3, 2, 3, 0, 3, 3, 2, 3, 0, 0, 0, 0, 0, 1, 3, 2, 2, 3, 0, 8, 28, 20, 20, 20, 20, 20, 28, 8, 0, 1, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 0, 0, 0, 1, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }; + oled_write_raw_P(ein60_logo, sizeof(ein60_logo)); + } + + + +static void render_status(void) { +//bool oled_task_user(void) { + + // Host Keyboard Layer Status + oled_write_P(PSTR("Layer: "), false); + switch (get_highest_layer(layer_state)) { + case _WINBASE: + oled_write_P(PSTR("Base\n"), false); + break; + case _SYMB: + oled_write_P(PSTR("Symbol\n"), false); + break; + case _FUNC: + oled_write_P(PSTR("FN\n"), false); + break; + case _MNMB: + oled_write_P(PSTR("Numbpad Mac\n"), false); + break; + case _NUMB: + oled_write_P(PSTR("Numbpad\n"), false); + break; + case _MDIA: + oled_write_P(PSTR("Media\n"), false); + break; + default: + // Or use the write_ln shortcut over adding '\n' to the end of your string + oled_write_ln_P(PSTR("Undefined"), false); + } + + // Host Keyboard LED Status + led_t led_state = host_keyboard_led_state(); + oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); + oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); + oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); + + + sprintf(wpm_str, "WPM: %03d", get_current_wpm()); + oled_set_cursor(1,2); + oled_write(wpm_str, false); + +} + +bool oled_task_user(void) { + + render_status(); + oled_write_ln_P(PSTR(""), false); + render_ein60_logo(); + + return false; +} + +#endif + + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { /* First encoder */ + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else if (index == 1) { /* Second encoder */ + if (clockwise) { + tap_code(KC_DOWN); + } else { + tap_code(KC_UP); + } + } + return true; +} diff --git a/keyboards/ein_60/keymaps/klackygears/readme.md b/keyboards/ein_60/keymaps/klackygears/readme.md new file mode 100644 index 000000000000..f97a08bd0982 --- /dev/null +++ b/keyboards/ein_60/keymaps/klackygears/readme.md @@ -0,0 +1 @@ +This is the klackygears userspace keymap for EIN_60. My userspace is heavily based on Drashna's userspace and draws a lot of features from him. diff --git a/keyboards/ein_60/keymaps/klackygears/rules.mk b/keyboards/ein_60/keymaps/klackygears/rules.mk new file mode 100644 index 000000000000..885ab5bafed5 --- /dev/null +++ b/keyboards/ein_60/keymaps/klackygears/rules.mk @@ -0,0 +1,8 @@ + +# Build Options +# change yes to no to disable +ENCODER_ENABLE = yes # Enables the use of one or more encoders +WPM_ENABLE = yes # Enables the WPM counter on the OLED +RGB_MATRIX_ENABLE = yes # Enable for pretty RGB matrix effects +AUDIO_ENABLE = yes +TAP_DANCE_ENABLE = yes diff --git a/keyboards/ein_60/keymaps/ledtest/keymap.c b/keyboards/ein_60/keymaps/ledtest/keymap.c new file mode 100644 index 000000000000..5fb5217c98b5 --- /dev/null +++ b/keyboards/ein_60/keymaps/ledtest/keymap.c @@ -0,0 +1,209 @@ +/* Copyright 2021 klackygears + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layer_names { + _QWERTY, + _LOWER, + _RAISE, + _ADJUST, + _FUNCTION, + }; + +enum custom_keycodes { + RGBRST = SAFE_RANGE +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* Qwerty + * ,-----------------------------------------. ,------. ,----------------------------------------. + * | Tab | Q | W | E | R | T | | Esc | |RGBRST|RGBHUI|RGBSAI|RGBVAI|RGBSPI| Bksp | + * |------+------+------+------+------+------| `------' |------+------+------+------+------+------| + * | Func | A | S | D | F | G | |RGBRMO|RGBHUD|RGBSAD|RGBVAD|RGBSPD|Enter | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | |RGBTOG| M | , | . | / | ' | + * |------+------+------|--------------------+ ,------. +--------------------|------+------+------| + * | Ctrl | ` | GUI | Alt |Lower |Space | |Space | |Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------' `------' `-----------------------------------------' + */ + [_QWERTY] = LAYOUT( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_MUTE, RGBRST, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_BSPC, + MO(_FUNCTION), KC_A, KC_S, KC_D, KC_F, KC_G, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_ENT, + OSM(MOD_LSFT), KC_Z, KC_X, KC_C, KC_V, KC_B, RGB_TOG, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT, + KC_LCTL, KC_GRV, KC_LGUI, KC_LALT, MO(_LOWER), KC_SPC, KC_SPC, KC_CAPS, MO(_RAISE), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + /* Lower + * ,-----------------------------------------. ,------. ,-----------------------------------------. + * | Esc | ! | @ | # | $ | % | | | | ^ | & | * | ( | ) | Del | + * |------+------+------+------+------+------| `------' |------+------+------+------+------+------| + * | F1 | F2 | F3 | F4 | F5 | F6 | | | _ | + | { | } |Enter | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | F7 | F8 | F9 | F10 | F11 | F12 | | | | | Mute | | | | + * |------+------+------|--------------------+ ,------. +--------------------|------+------+------| + * | | | | |Lower | Bksp | | | | Bksp |Raise | Next | Vol- | Vol+ | Play | + * `-----------------------------------------' `------' `-----------------------------------------' + */ + [_LOWER] = LAYOUT( + KC_ESC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, _______, + KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, KC_MUTE, _______, KC_PIPE, + _______, _______, _______, _______, _______, KC_BSPC, _______, KC_BSPC, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), + /* Raise + * ,-----------------------------------------. ,------. ,-----------------------------------------. + * | Esc | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | Del | + * |------+------+------+------+------+------| `------' |------+------+------+------+------+------| + * | | 4 | 5 | 6 | + | F5 | | F6 | - | = | [ | ] |Enter | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * |Enter | 7 | 8 | 9 | - | F11 | | F12 |ISO # |ISO / | Mute | | \ | + * |------+------+------|--------------------+ ,------. +--------------------|------+------+------| + * | | , | 0 | . |Lower | Bksp | | | | Bksp |Raise | Next | Vol- | Vol+ | Play | + * `-----------------------------------------' `------' `-----------------------------------------' + */ + [_RAISE] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + _______, KC_4, KC_5, KC_6, KC_PLUS, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______, + KC_ENT, KC_7, KC_8, KC_9, KC_MINS, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_MUTE, _______, KC_BSLS, + _______, KC_COMM, KC_0, KC_DOT, _______, KC_BSPC, _______, KC_BSPC, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), + /* Adjust (Lower + Raise) + * ,-----------------------------------------. ,------. ,-----------------------------------------. + * | | | | | | | | | |RGBRST|RGBMOD|RGBVAI|RGBSAI|RGBHUI| | + * |------+------+------+------+------+------| `------' |------+------+------+------+------+------| + * | | | | | | | | |RGBRMO|RGBVAD|RGBSAD|RGBHUD|RGBTOG| + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | | | | | | | |BLSTEP| + * |------+------+------|--------------------+ ,------. +--------------------|------+------+------| + * | | | | | | | | | | | | | | | RESET| + * `-----------------------------------------' `------' `-----------------------------------------' + */ + [_ADJUST] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, RGBRST, RGB_MOD, RGB_VAI, RGB_SAI, RGB_HUI, _______, + _______, _______, _______, _______, _______, _______, _______, RGB_RMOD,RGB_VAD, RGB_SAD, RGB_HUD, RGB_TOG, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_STEP, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET + ), + /* Function + * ,-----------------------------------------. ,------. ,-----------------------------------------. + * | | | | | | | | | | | | Up | | | | + * |------+------+------+------+------+------| `------' |------+------+------+------+------+------| + * | | | | | | | | | Left | Down |Right | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Caps | | | | | | | | | | | | | + * |------+------+------|--------------------+ ,------. +--------------------|------+------+------| + * | | | | | | | | | | | | | | | | + * `-----------------------------------------' `------' `-----------------------------------------' + */ + [_FUNCTION] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + +layer_state_t layer_state_set_user(layer_state_t state) { + return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); +} + +#ifdef OLED_ENABLE + + +static void render_ein60_logo(void) { + static const char PROGMEM ein60_logo[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 11,251,139,139,139,139,139,139,139,139,139,139,139, 11, 15, 0,240,240, 16,240, 0,240,240, 16,240,224,192,128, 0, 0, 0, 0,240, 16,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254,255, 11,251,139,139,139,139,139,139,139,139,139,139,139,143,128, 0, 0, 0, 0,254,255, 11,251, 11, 11, 11, 11,139,203,235,123,187,219,235,251,255, 7,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 4,253,197,197,197,197,197,197,197,197,197,197,199,192,192, 0,255,255, 0,255, 0,255,255, 0,254, 13, 27, 55,111,222,188,120,255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0,255,197,197,197,197,197,197,197,197,197,197,253,253,255,131,254, 0, 0,255,255, 0,255,184,220,238,247,219,205,198,195,193,192,255,255,255,128,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 0, 3, 3, 2, 3, 0, 3, 3, 2, 3, 0, 0, 0, 0, 0, 1, 3, 2, 2, 3, 0, 8, 28, 20, 20, 20, 20, 20, 28, 8, 0, 1, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 0, 0, 0, 1, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }; + oled_write_raw_P(ein60_logo, sizeof(ein60_logo)); + } + +static void render_status(void) { + // Host Keyboard Layer Status + oled_write_P(PSTR("Layer: "), false); + switch (get_highest_layer(layer_state)) { + case _QWERTY: + oled_write_P(PSTR("Default\n"), false); + break; + case _LOWER: + oled_write_P(PSTR("Lower\n"), false); + break; + case _RAISE: + oled_write_P(PSTR("Raise\n"), false); + break; + case _ADJUST: + oled_write_P(PSTR("Adjust\n"), false); + break; + case _FUNCTION: + oled_write_P(PSTR("FN\n"), false); + break; + default: + // Or use the write_ln shortcut over adding '\n' to the end of your string + oled_write_ln_P(PSTR("Undefined"), false); + } + + // Host Keyboard LED Status + led_t led_state = host_keyboard_led_state(); + oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); + oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); + oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); + + oled_set_cursor(1,2); +} + +bool oled_task_user(void) { + + render_status(); + oled_write_ln_P(PSTR(""), false); + render_ein60_logo(); + + return false; +} +#endif + + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { /* First encoder */ + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else if (index == 1) { /* Second encoder */ + if (clockwise) { + tap_code(KC_DOWN); + } else { + tap_code(KC_UP); + } + } + return true; +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case RGBRST: + #ifdef RGBLIGHT_ENABLE + if (record->event.pressed) { + eeconfig_update_rgblight_default(); + rgblight_enable(); + } + #endif + break; + } + return true; +} diff --git a/keyboards/ein_60/keymaps/ledtest/readme.md b/keyboards/ein_60/keymaps/ledtest/readme.md new file mode 100644 index 000000000000..17954c3322e9 --- /dev/null +++ b/keyboards/ein_60/keymaps/ledtest/readme.md @@ -0,0 +1 @@ +# The keymap for testing the LEDs and OLED on the EIN_60 diff --git a/keyboards/ein_60/keymaps/ledtest/rules.mk b/keyboards/ein_60/keymaps/ledtest/rules.mk new file mode 100644 index 000000000000..a62854456279 --- /dev/null +++ b/keyboards/ein_60/keymaps/ledtest/rules.mk @@ -0,0 +1,4 @@ +# Build Options +# change yes to no to disable +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +RGB_MATRIX_ENABLE = no # Enable for pretty RGB matrix effects diff --git a/keyboards/ein_60/readme.md b/keyboards/ein_60/readme.md new file mode 100644 index 000000000000..bbcf05f96750 --- /dev/null +++ b/keyboards/ein_60/readme.md @@ -0,0 +1,27 @@ +# Ein_60 + +![Ein_60](https://i.imgur.com/cKPrNwO.jpeg) + +The Ein_60 is a 50 key ergo style column stagger keyboard PCB with a combined split layout that is designed to fit into a standard 60% tray mount case. It has USB C and comes in either hotswap or soldered versions. (Soldered version is Alps and MX compatible.) It can have two encoders in either of it's middle keys and an OLED installed in the center below the plate. The PCB supports a bottom mounted KELIKING KLJ-1102 low profile buzzer speaker for audio effects. It has 38 side facing LEDs around the entire outside edge of the PCB for very bright RGB effects as well as solder points for LED strips. The Ein_60 is compatible with the majority of Planck keycap sets and can have a 1U only layout, two 2U and two 1U, or two 3U keys in the thumb cluster (or any combination of those). + + +When flashing the Ein_60 use: make ein_60:default:flash + +![Ein_60 in 3D printed 60% case](https://i.imgur.com/3jkrERV.jpeg) + +* Keyboard Maintainer: [klackygears](https://github.com/klackygears) +* Hardware Supported: The Ein_60 PCBs +* Hardware Availability: [Case Data & firmware](https://github.com/klackygears) + +Make example for this keyboard (after setting up your build environment): + + make ein_60:default + +Flashing example for this keyboard: + + make ein_60: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). + +![Ein_60 PCB](https://i.imgur.com/5A1xW8S.jpeg) +![Ein_60 with FR4 plate](https://i.imgur.com/42DNsLY.jpeg) diff --git a/keyboards/ein_60/rules.mk b/keyboards/ein_60/rules.mk new file mode 100644 index 000000000000..5e03285f405c --- /dev/null +++ b/keyboards/ein_60/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = at90usb1286 + +# Bootloader selection +BOOTLOADER = qmk-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 = yes # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +RGB_MATRIX_ENABLE = no # Enable for pretty RGB matrix effects +RGB_MATRIX_DRIVER = WS2812 # Define RGB Matrix +ENCODER_ENABLE = yes # Enables the use of one or more encoders +OLED_ENABLE = yes # Enables the use of OLED displays +OLED_DRIVER = SSD1306 diff --git a/keyboards/emajesty/eiri/info.json b/keyboards/emajesty/eiri/info.json index 63154b324cf9..2816dba4c7e6 100644 --- a/keyboards/emajesty/eiri/info.json +++ b/keyboards/emajesty/eiri/info.json @@ -2,8 +2,6 @@ "keyboard_name": "eiri", "url": "https://github.com/EMajesty/eiri", "maintainer": "EMajesty", - "width": 15, - "height": 4.5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/emajesty/eiri/rules.mk b/keyboards/emajesty/eiri/rules.mk index fd76a52478f7..bc3a9f5e3582 100644 --- a/keyboards/emajesty/eiri/rules.mk +++ b/keyboards/emajesty/eiri/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/emery65/config.h b/keyboards/emery65/config.h new file mode 100644 index 000000000000..cbe31b75da67 --- /dev/null +++ b/keyboards/emery65/config.h @@ -0,0 +1,80 @@ +/* +Copyright 2021 Yiancar-Designs + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published byß +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x8968 +#define PRODUCT_ID 0x4536 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Yiancar-Designs +#define PRODUCT Emery65 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +#define MATRIX_ROW_PINS { A2, B9, B8, B5, B4 } +#define MATRIX_COL_PINS { A1, B1, B0, A7, A6, A5, A4, A3, B2, B10, B11, B12, B13, B14, B15 } + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* Ensure we jump to bootloader if the RESET keycode was pressed */ +#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE + +/* Indicator LEDs */ +#define LED_CAPS_LOCK_PIN B6 +#define LED_PIN_ON_STATE 0 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is userful for the Windows task manager shortcut (ctrl+shift+esc). + */ +// #define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* Bootmagic Lite key configuration */ +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/emery65/emery65.c b/keyboards/emery65/emery65.c new file mode 100644 index 000000000000..11cac7c4620a --- /dev/null +++ b/keyboards/emery65/emery65.c @@ -0,0 +1,21 @@ +/* Copyright 2021 Yiancar-Designs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #include "emery65.h" + +void led_init_ports(void) { + // Set our LED pins as open drain outputs + palSetLineMode(LED_CAPS_LOCK_PIN, PAL_MODE_OUTPUT_OPENDRAIN); +} diff --git a/keyboards/emery65/emery65.h b/keyboards/emery65/emery65.h new file mode 100644 index 000000000000..5bffeaab81cc --- /dev/null +++ b/keyboards/emery65/emery65.h @@ -0,0 +1,34 @@ +/* Copyright 2021 Yiancar-Designs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#define XXX KC_NO + +#include "quantum.h" + +#define LAYOUT_all( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2C, 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, 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, XXX, 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 } \ +} diff --git a/keyboards/emery65/info.json b/keyboards/emery65/info.json new file mode 100644 index 000000000000..9d8058e8315e --- /dev/null +++ b/keyboards/emery65/info.json @@ -0,0 +1,10 @@ +{ + "keyboard_name": "Emery65", + "url": "https://yiancar-designs.com", + "maintainer": "Yiancar-Designs", + "layouts": { + "LAYOUT_all": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] + } + } +} diff --git a/keyboards/emery65/keymaps/default/keymap.c b/keyboards/emery65/keymaps/default/keymap.c new file mode 100644 index 000000000000..332babc8c623 --- /dev/null +++ b/keyboards/emery65/keymaps/default/keymap.c @@ -0,0 +1,32 @@ +/* Copyright 2021 Yiancar-Designs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_all( /* Base */ + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), + + [1] = LAYOUT_all( /* FN */ + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; diff --git a/keyboards/emery65/keymaps/default/readme.md b/keyboards/emery65/keymaps/default/readme.md new file mode 100644 index 000000000000..25aae30244c3 --- /dev/null +++ b/keyboards/emery65/keymaps/default/readme.md @@ -0,0 +1,5 @@ +# The default keymap for Emery 65. + +![Layer 0](https://i.imgur.com/xiHQsWw.png) + +![Layer 1](https://i.imgur.com/l9qSeTv.png) diff --git a/keyboards/emery65/keymaps/via/keymap.c b/keyboards/emery65/keymaps/via/keymap.c new file mode 100644 index 000000000000..beeae2971bae --- /dev/null +++ b/keyboards/emery65/keymaps/via/keymap.c @@ -0,0 +1,46 @@ +/* Copyright 2021 Yiancar-Designs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_all( /* Base */ + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), + +[1] = LAYOUT_all( /* FN */ + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +[2] = LAYOUT_all( /* Empty for dynamic keymaps */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +[3] = LAYOUT_all( /* Empty for dynamic keymaps */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; diff --git a/keyboards/emery65/keymaps/via/readme.md b/keyboards/emery65/keymaps/via/readme.md new file mode 100644 index 000000000000..2e2bd04d1933 --- /dev/null +++ b/keyboards/emery65/keymaps/via/readme.md @@ -0,0 +1,5 @@ +# The default keymap for Emery 65. VIA support enabled. + +![Layer 0](https://i.imgur.com/xiHQsWw.png) + +![Layer 1](https://i.imgur.com/l9qSeTv.png) \ No newline at end of file diff --git a/keyboards/emery65/keymaps/via/rules.mk b/keyboards/emery65/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/emery65/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/emery65/readme.md b/keyboards/emery65/readme.md new file mode 100644 index 000000000000..4450be104617 --- /dev/null +++ b/keyboards/emery65/readme.md @@ -0,0 +1,32 @@ +# Emery 65 + +This is a standard 65% layout PCB. It supports VIA. + +* Keyboard Maintainer: [Yiancar](http://yiancar-designs.com/) and on [GitHub](https://github.com/yiancar) +* Hardware Supported: A 65% keyboard with STM32F072CB +* Hardware Availability: https://geekhack.org/index.php?topic=112678.0 + +## Instructions + +### Build + +Make example for this keyboard (after setting up your build environment): + + make emery65:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +### Reset + +- Unplug +- Hold Escape +- Plug In +- Unplug +- Release Escape + +### Flash + +- Unplug +- Hold Escape +- Plug In +- Flash using QMK Toolbox or CLI (`make emery65::flash`) diff --git a/keyboards/emery65/rules.mk b/keyboards/emery65/rules.mk new file mode 100644 index 000000000000..bc2fdaccd8be --- /dev/null +++ b/keyboards/emery65/rules.mk @@ -0,0 +1,27 @@ +# MCU name +MCU = STM32F072 + +# Bootloader selection +BOOTLOADER = stm32-dfu + +# Wildcard to allow APM32 MCU +DFU_SUFFIX_ARGS = -v FFFF -p FFFF + +# Do not put the microcontroller into power saving mode +# when we get USB suspend event. We want it to keep updating +# backlight effects. +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 diff --git a/keyboards/emi20/config.h b/keyboards/emi20/config.h new file mode 100644 index 000000000000..98eefdc6ad79 --- /dev/null +++ b/keyboards/emi20/config.h @@ -0,0 +1,57 @@ +/* Copyright 2021 Aquacylinder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6060 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Aquacylinder +#define PRODUCT emi20 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 4 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { F4, F5, F6, F7, B6 } +#define MATRIX_COL_PINS { C7, C6, B5, B4 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* number of backlight levels */ + +#ifdef BACKLIGHT_PIN +#define BACKLIGHT_LEVELS 3 +#endif + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + + + +#ifdef RGB_DI_PIN +#define RGBLIGHT_ANIMATIONS +#define RGBLED_NUM 0 +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 +#endif diff --git a/keyboards/emi20/emi20.c b/keyboards/emi20/emi20.c new file mode 100644 index 000000000000..a5bcc89d498d --- /dev/null +++ b/keyboards/emi20/emi20.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Aquacylinder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "emi20.h" diff --git a/keyboards/emi20/emi20.h b/keyboards/emi20/emi20.h new file mode 100644 index 000000000000..30d5750e49ae --- /dev/null +++ b/keyboards/emi20/emi20.h @@ -0,0 +1,33 @@ +/* Copyright 2021 Aquacylinder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_ortho_5x4( \ + 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 } \ +} diff --git a/keyboards/emi20/info.json b/keyboards/emi20/info.json new file mode 100644 index 000000000000..408c30d04bcf --- /dev/null +++ b/keyboards/emi20/info.json @@ -0,0 +1,35 @@ +{ + "keyboard_name": "Emi20", + "url": "", + "maintainer": "Aquacylinder", + "layouts": { + "LAYOUT_ortho_5x4": { + "layout": [ + {"label":"K11 (F7,C7)", "x":0, "y":0}, + {"label":"K21 (F1,C7)", "x":1, "y":0}, + {"label":"K31 (B2,C7)", "x":2, "y":0}, + {"label":"K41 (B2,F0)", "x":3, "y":0}, + + {"label":"K12 (F1,F0)", "x":0, "y":1}, + {"label":"K22 (B2,B6)", "x":1, "y":1}, + {"label":"K32 (F1,B6)", "x":2, "y":1}, + {"label":"K42 (B2,B3)", "x":3, "y":1}, + + {"label":"K13 (F1,B3)", "x":0, "y":2}, + {"label":"K23 (B2,C6)", "x":1, "y":2}, + {"label":"K33 (F1,C6)", "x":2, "y":2}, + {"label":"K43 (B2,E6)", "x":3, "y":2}, + + {"label":"K14 (F1,E6)", "x":0, "y":3}, + {"label":"K24 (B2,D5)", "x":1, "y":3}, + {"label":"K34 (F1,D5)", "x":2, "y":3}, + {"label":"K44 (D0,B1)", "x":3, "y":3}, + + {"label":"K15 (D0,F4)", "x":0, "y":4}, + {"label":"K25 (F7,D1)", "x":1, "y":4}, + {"label":"K35 (F7,B3)", "x":2, "y":4}, + {"label":"K45 (B5,C7)", "x":3, "y":4} + ] + } + } +} diff --git a/keyboards/emi20/keymaps/default/keymap.c b/keyboards/emi20/keymaps/default/keymap.c new file mode 100644 index 000000000000..b0400108fa9e --- /dev/null +++ b/keyboards/emi20/keymaps/default/keymap.c @@ -0,0 +1,74 @@ +/* Copyright 2021 Aquacylinder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + + +enum custom_keycodes { + MACRO1 = SAFE_RANGE, //MACRO1 can be anything you want see the qmk documentation + MACRO2, //MACRO2 Same thing, you can add as many as you like +}; + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + //Macro's are mentioned here allong with the keycodes + LAYOUT_ortho_5x4( //Base layer (0) + TG(1), KC_VOLD, KC_VOLU, KC_BSPC, + KC_P7, KC_P8, KC_P9, KC_PAST, + KC_P4, KC_P5, KC_P6, KC_PSLS, + KC_P1, KC_P2, KC_P3, KC_PPLS, + KC_P0, KC_PDOT, KC_PENT, KC_PMNS), + + LAYOUT_ortho_5x4( //Layer 1 + KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, + KC_MPRV, KC_MSTP, KC_MPLY, KC_MNXT, + KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_UP, KC_NO, + MO(2), KC_LEFT, KC_DOWN, KC_RGHT), + + LAYOUT_ortho_5x4( //Layer 2 + KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, RESET, + KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, + KC_TRNS, KC_NLCK, KC_NO, KC_NO), + //Copy any layer and edit it for more layers, be sure to add a key to go to that layer +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case MACRO1: //This is where the macro's are located + if (record->event.pressed) { + // when keycode MACRO1 is pressed + SEND_STRING("Thank you"); + } else { + // when keycode MACRO1 is released + SEND_STRING("for being you <3"); + } + break; + + case MACRO2: + if (record->event.pressed) { + // when keycode MACRO2 is pressed + SEND_STRING("Pizza is"); + } else { + // when keycode MACRO2 is released + SEND_STRING("delicious ;)"); + } + break; + } + return true; +} diff --git a/keyboards/emi20/readme.md b/keyboards/emi20/readme.md new file mode 100644 index 000000000000..54c27aa6a344 --- /dev/null +++ b/keyboards/emi20/readme.md @@ -0,0 +1,18 @@ +# Emi20 + +![Emi20](https://i.imgur.com/Mc84fLGl.jpg) + +A compact 4x5 ortholinear keyboard made by Project Aqua and sold by Evil-cables. + +* Keyboard Maintainer: [AquaCylinder](https://github.com/AquaCylinder) +* Hardware Supported: PCB, Atmega32u4 +* Connector: USB mini B + +Make example for this keyboard (after setting up your build environment): + + make emi20:default + +To reset the board into bootloader mode, press the physical reset button on the back of the PCB or press the bottom most left key to momentarily switch to layer 2 (on layer 1) and then press the key from the top right down one. + +The default keymap.c file has comments to help you on your journey, +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/emi20/rules.mk b/keyboards/emi20/rules.mk new file mode 100644 index 000000000000..c3849a52bf1e --- /dev/null +++ b/keyboards/emi20/rules.mk @@ -0,0 +1,19 @@ +# 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 +# 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 diff --git a/keyboards/emptystring/NQG/info.json b/keyboards/emptystring/NQG/info.json index 008dbbe98d91..14191209d692 100644 --- a/keyboards/emptystring/NQG/info.json +++ b/keyboards/emptystring/NQG/info.json @@ -2,8 +2,6 @@ "keyboard_name": "NQG (Not Quite Gherkin)", "url": "", "maintainer": "culturalsnow", - "width": 11, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/emptystring/NQG/rules.mk b/keyboards/emptystring/NQG/rules.mk index 45f2f61551af..d4c6e1fcafec 100644 --- a/keyboards/emptystring/NQG/rules.mk +++ b/keyboards/emptystring/NQG/rules.mk @@ -2,28 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. diff --git a/keyboards/eniigmakeyboards/ek60/config.h b/keyboards/eniigmakeyboards/ek60/config.h new file mode 100644 index 000000000000..25653750105e --- /dev/null +++ b/keyboards/eniigmakeyboards/ek60/config.h @@ -0,0 +1,42 @@ +/* +Copyright 2020 adamws + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x454B +#define PRODUCT_ID 0x0003 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Eniigma Keyboards +#define PRODUCT ek60 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* Keyboard Matrix Assignments */ +#define MATRIX_ROW_PINS { B2, B1, B0, F0, B4 } +#define MATRIX_COL_PINS { F7, C6, F6, B6, F5, F4, B5, F1, E6, D0, D7, D5, D1, D3, D2 } +#define UNUSED_PINS { B3, B7, C7, D4, D6 } + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 diff --git a/keyboards/eniigmakeyboards/ek60/ek60.c b/keyboards/eniigmakeyboards/ek60/ek60.c new file mode 100644 index 000000000000..2ce369ec829a --- /dev/null +++ b/keyboards/eniigmakeyboards/ek60/ek60.c @@ -0,0 +1,18 @@ +/* Copyright 2021 adamws + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "ek60.h" + diff --git a/keyboards/eniigmakeyboards/ek60/ek60.h b/keyboards/eniigmakeyboards/ek60/ek60.h new file mode 100644 index 000000000000..992618e44730 --- /dev/null +++ b/keyboards/eniigmakeyboards/ek60/ek60.h @@ -0,0 +1,135 @@ +/* Copyright 2021 adamws + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT_all( \ + 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, k3d, k3e, \ + k40, k41, k43, k46, k4a, k4b, 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, XXX, k3d, k3e }, \ + { k40, k41, XXX, k43, XXX, XXX, k46, XXX, XXX, XXX, k4a, k4b, XXX, 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, k41, k43, k46, 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, k41, XXX, k43, XXX, XXX, k46, XXX, XXX, XXX, k4a, k4b, XXX, k4d, k4e } \ +} + +#define LAYOUT_60_ansi_tsangan( \ + 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, k41, k43, k46, 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, k41, XXX, k43, XXX, XXX, k46, XXX, XXX, XXX, XXX, k4b, XXX, k4d, k4e } \ +} + +#define LAYOUT_60_iso( \ + 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, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, \ + k40, k41, k43, k46, 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, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, XXX }, \ + { k40, k41, XXX, k43, XXX, XXX, k46, XXX, XXX, XXX, k4a, k4b, XXX, k4d, k4e } \ +} + +#define LAYOUT_60_iso_tsangan( \ + 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, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, \ + k40, k41, k43, k46, 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, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, XXX }, \ + { k40, k41, XXX, k43, XXX, XXX, k46, XXX, XXX, XXX, XXX, k4b, XXX, k4d, k4e } \ +} + +#define LAYOUT_60_iso_split_bs( \ + 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, k3d, \ + k40, k41, k43, k46, k4a, k4b, 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, XXX, k3d, XXX }, \ + { k40, k41, XXX, k43, XXX, XXX, k46, XXX, XXX, XXX, k4a, k4b, XXX, k4d, k4e } \ +} + +#define LAYOUT_60_iso_split_rshift( \ + 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, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, \ + k40, k41, k43, k46, 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, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, k3e }, \ + { k40, k41, XXX, k43, XXX, XXX, k46, XXX, XXX, XXX, k4a, k4b, XXX, k4d, k4e } \ +} + diff --git a/keyboards/eniigmakeyboards/ek60/info.json b/keyboards/eniigmakeyboards/ek60/info.json new file mode 100644 index 000000000000..37bb01b0bead --- /dev/null +++ b/keyboards/eniigmakeyboards/ek60/info.json @@ -0,0 +1,70 @@ +{ + "keyboard_name": "ek60", + "url": "", + "maintainer": "adamws", + "layouts": { + "LAYOUT_all": { + "layout":[ + {"label":"k00","x":0,"y":0},{"label":"k01","x":1,"y":0},{"label":"k02","x":2,"y":0},{"label":"k03","x":3,"y":0},{"label":"k04","x":4,"y":0},{"label":"k05","x":5,"y":0},{"label":"k06","x":6,"y":0},{"label":"k07","x":7,"y":0},{"label":"k08","x":8,"y":0},{"label":"k09","x":9,"y":0},{"label":"k0a","x":10,"y":0},{"label":"k0b","x":11,"y":0},{"label":"k0c","x":12,"y":0},{"label":"k0d","x":13,"y":0},{"label":"k0e","x":14,"y":0}, + {"label":"k10","x":0,"y":1,"w":1.5},{"label":"k12","x":1.5,"y":1},{"label":"k13","x":2.5,"y":1},{"label":"k14","x":3.5,"y":1},{"label":"k15","x":4.5,"y":1},{"label":"k16","x":5.5,"y":1},{"label":"k17","x":6.5,"y":1},{"label":"k18","x":7.5,"y":1},{"label":"k19","x":8.5,"y":1},{"label":"k1a","x":9.5,"y":1},{"label":"k1b","x":10.5,"y":1},{"label":"k1c","x":11.5,"y":1},{"label":"k1d","x":12.5,"y":1},{"label":"k1e","x":13.5,"y":1,"w":1.5}, + {"label":"k20","x":0,"y":2,"w":1.75},{"label":"k22","x":1.75,"y":2},{"label":"k23","x":2.75,"y":2},{"label":"k24","x":3.75,"y":2},{"label":"k25","x":4.75,"y":2},{"label":"k26","x":5.75,"y":2},{"label":"k27","x":6.75,"y":2},{"label":"k28","x":7.75,"y":2},{"label":"k29","x":8.75,"y":2},{"label":"k2a","x":9.75,"y":2},{"label":"k2b","x":10.75,"y":2},{"label":"k2c","x":11.75,"y":2},{"label":"k2d","x":12.75,"y":2,"w":2.25}, + {"label":"k30","x":0,"y":3,"w":1.25},{"label":"k31","x":1.25,"y":3},{"label":"k32","x":2.25,"y":3},{"label":"k33","x":3.25,"y":3},{"label":"k34","x":4.25,"y":3},{"label":"k35","x":5.25,"y":3},{"label":"k36","x":6.25,"y":3},{"label":"k37","x":7.25,"y":3},{"label":"k38","x":8.25,"y":3},{"label":"k39","x":9.25,"y":3},{"label":"k3a","x":10.25,"y":3},{"label":"k3b","x":11.25,"y":3},{"label":"k3d","x":12.25,"y":3,"w":1.75},{"label":"k3e","x":14,"y":3}, + {"label":"k40","x":0,"y":4,"w":1.25},{"label":"k41","x":1.25,"y":4,"w":1.25},{"label":"k43","x":2.5,"y":4,"w":1.25},{"label":"k46","x":3.75,"y":4,"w":6.25},{"label":"k4a","x":10,"y":4,"w":1.25},{"label":"k4b","x":11.25,"y":4,"w":1.25},{"label":"k4d","x":12.5,"y":4,"w":1.25},{"label":"k4e","x":13.75,"y":4,"w":1.25} + ] + }, + "LAYOUT_60_ansi": { + "layout":[ + {"label":"k00","x":0,"y":0},{"label":"k01","x":1,"y":0},{"label":"k02","x":2,"y":0},{"label":"k03","x":3,"y":0},{"label":"k04","x":4,"y":0},{"label":"k05","x":5,"y":0},{"label":"k06","x":6,"y":0},{"label":"k07","x":7,"y":0},{"label":"k08","x":8,"y":0},{"label":"k09","x":9,"y":0},{"label":"k0a","x":10,"y":0},{"label":"k0b","x":11,"y":0},{"label":"k0c","x":12,"y":0},{"label":"k0d","x":13,"y":0,"w":2}, + {"label":"k10","x":0,"y":1,"w":1.5},{"label":"k12","x":1.5,"y":1},{"label":"k13","x":2.5,"y":1},{"label":"k14","x":3.5,"y":1},{"label":"k15","x":4.5,"y":1},{"label":"k16","x":5.5,"y":1},{"label":"k17","x":6.5,"y":1},{"label":"k18","x":7.5,"y":1},{"label":"k19","x":8.5,"y":1},{"label":"k1a","x":9.5,"y":1},{"label":"k1b","x":10.5,"y":1},{"label":"k1c","x":11.5,"y":1},{"label":"k1d","x":12.5,"y":1},{"label":"k1e","x":13.5,"y":1,"w":1.5}, + {"label":"k20","x":0,"y":2,"w":1.75},{"label":"k22","x":1.75,"y":2},{"label":"k23","x":2.75,"y":2},{"label":"k24","x":3.75,"y":2},{"label":"k25","x":4.75,"y":2},{"label":"k26","x":5.75,"y":2},{"label":"k27","x":6.75,"y":2},{"label":"k28","x":7.75,"y":2},{"label":"k29","x":8.75,"y":2},{"label":"k2a","x":9.75,"y":2},{"label":"k2b","x":10.75,"y":2},{"label":"k2c","x":11.75,"y":2},{"label":"k2d","x":12.75,"y":2,"w":2.25}, + {"label":"k30","x":0,"y":3,"w":2.25},{"label":"k32","x":2.25,"y":3},{"label":"k33","x":3.25,"y":3},{"label":"k34","x":4.25,"y":3},{"label":"k35","x":5.25,"y":3},{"label":"k36","x":6.25,"y":3},{"label":"k37","x":7.25,"y":3},{"label":"k38","x":8.25,"y":3},{"label":"k39","x":9.25,"y":3},{"label":"k3a","x":10.25,"y":3},{"label":"k3b","x":11.25,"y":3},{"label":"k3d","x":12.25,"y":3,"w":2.75}, + {"label":"k40","x":0,"y":4,"w":1.25},{"label":"k41","x":1.25,"y":4,"w":1.25},{"label":"k43","x":2.5,"y":4,"w":1.25},{"label":"k46","x":3.75,"y":4,"w":6.25},{"label":"k4a","x":10,"y":4,"w":1.25},{"label":"k4b","x":11.25,"y":4,"w":1.25},{"label":"k4d","x":12.5,"y":4,"w":1.25},{"label":"k4e","x":13.75,"y":4,"w":1.25} + ] + }, + "LAYOUT_60_ansi_tsangan": { + "layout":[ + {"label":"k00","x":0,"y":0},{"label":"k01","x":1,"y":0},{"label":"k02","x":2,"y":0},{"label":"k03","x":3,"y":0},{"label":"k04","x":4,"y":0},{"label":"k05","x":5,"y":0},{"label":"k06","x":6,"y":0},{"label":"k07","x":7,"y":0},{"label":"k08","x":8,"y":0},{"label":"k09","x":9,"y":0},{"label":"k0a","x":10,"y":0},{"label":"k0b","x":11,"y":0},{"label":"k0c","x":12,"y":0},{"label":"k0d","x":13,"y":0,"w":2}, + {"label":"k10","x":0,"y":1,"w":1.5},{"label":"k12","x":1.5,"y":1},{"label":"k13","x":2.5,"y":1},{"label":"k14","x":3.5,"y":1},{"label":"k15","x":4.5,"y":1},{"label":"k16","x":5.5,"y":1},{"label":"k17","x":6.5,"y":1},{"label":"k18","x":7.5,"y":1},{"label":"k19","x":8.5,"y":1},{"label":"k1a","x":9.5,"y":1},{"label":"k1b","x":10.5,"y":1},{"label":"k1c","x":11.5,"y":1},{"label":"k1d","x":12.5,"y":1},{"label":"k1e","x":13.5,"y":1,"w":1.5}, + {"label":"k20","x":0,"y":2,"w":1.75},{"label":"k22","x":1.75,"y":2},{"label":"k23","x":2.75,"y":2},{"label":"k24","x":3.75,"y":2},{"label":"k25","x":4.75,"y":2},{"label":"k26","x":5.75,"y":2},{"label":"k27","x":6.75,"y":2},{"label":"k28","x":7.75,"y":2},{"label":"k29","x":8.75,"y":2},{"label":"k2a","x":9.75,"y":2},{"label":"k2b","x":10.75,"y":2},{"label":"k2c","x":11.75,"y":2},{"label":"k2d","x":12.75,"y":2,"w":2.25}, + {"label":"k30","x":0,"y":3,"w":2.25},{"label":"k32","x":2.25,"y":3},{"label":"k33","x":3.25,"y":3},{"label":"k34","x":4.25,"y":3},{"label":"k35","x":5.25,"y":3},{"label":"k36","x":6.25,"y":3},{"label":"k37","x":7.25,"y":3},{"label":"k38","x":8.25,"y":3},{"label":"k39","x":9.25,"y":3},{"label":"k3a","x":10.25,"y":3},{"label":"k3b","x":11.25,"y":3},{"label":"k3d","x":12.25,"y":3,"w":2.75}, + {"label":"k40","x":0,"y":4,"w":1.5},{"label":"k41","x":1.5,"y":4},{"label":"k43","x":2.5,"y":4,"w":1.5},{"label":"k46","x":4,"y":4,"w":7},{"label":"k4b","x":11,"y":4,"w":1.5},{"label":"k4d","x":12.5,"y":4},{"label":"k4e","x":13.5,"y":4,"w":1.5} + ] + }, + "LAYOUT_60_iso": { + "layout":[ + {"label":"k00","x":0,"y":0},{"label":"k01","x":1,"y":0},{"label":"k02","x":2,"y":0},{"label":"k03","x":3,"y":0},{"label":"k04","x":4,"y":0},{"label":"k05","x":5,"y":0},{"label":"k06","x":6,"y":0},{"label":"k07","x":7,"y":0},{"label":"k08","x":8,"y":0},{"label":"k09","x":9,"y":0},{"label":"k0a","x":10,"y":0},{"label":"k0b","x":11,"y":0},{"label":"k0c","x":12,"y":0},{"label":"k0d","x":13,"y":0,"w":2}, + {"label":"k10","x":0,"y":1,"w":1.5},{"label":"k12","x":1.5,"y":1},{"label":"k13","x":2.5,"y":1},{"label":"k14","x":3.5,"y":1},{"label":"k15","x":4.5,"y":1},{"label":"k16","x":5.5,"y":1},{"label":"k17","x":6.5,"y":1},{"label":"k18","x":7.5,"y":1},{"label":"k19","x":8.5,"y":1},{"label":"k1a","x":9.5,"y":1},{"label":"k1b","x":10.5,"y":1},{"label":"k1c","x":11.5,"y":1},{"label":"k1d","x":12.5,"y":1}, + {"label":"k20","x":0,"y":2,"w":1.75},{"label":"k22","x":1.75,"y":2},{"label":"k23","x":2.75,"y":2},{"label":"k24","x":3.75,"y":2},{"label":"k25","x":4.75,"y":2},{"label":"k26","x":5.75,"y":2},{"label":"k27","x":6.75,"y":2},{"label":"k28","x":7.75,"y":2},{"label":"k29","x":8.75,"y":2},{"label":"k2a","x":9.75,"y":2},{"label":"k2b","x":10.75,"y":2},{"label":"k2c","x":11.75,"y":2},{"label":"k2d","x":12.75,"y":2},{"label":"k1e","x":13.75,"y":1,"w":1.25,"h":2}, + {"label":"k30","x":0,"y":3,"w":1.25},{"label":"k31","x":1.25,"y":3},{"label":"k32","x":2.25,"y":3},{"label":"k33","x":3.25,"y":3},{"label":"k34","x":4.25,"y":3},{"label":"k35","x":5.25,"y":3},{"label":"k36","x":6.25,"y":3},{"label":"k37","x":7.25,"y":3},{"label":"k38","x":8.25,"y":3},{"label":"k39","x":9.25,"y":3},{"label":"k3a","x":10.25,"y":3},{"label":"k3b","x":11.25,"y":3},{"label":"k3d","x":12.25,"y":3,"w":2.75}, + {"label":"k40","x":0,"y":4,"w":1.25},{"label":"k41","x":1.25,"y":4,"w":1.25},{"label":"k43","x":2.5,"y":4,"w":1.25},{"label":"k46","x":3.75,"y":4,"w":6.25},{"label":"k4a","x":10,"y":4,"w":1.25},{"label":"k4b","x":11.25,"y":4,"w":1.25},{"label":"k4d","x":12.5,"y":4,"w":1.25},{"label":"k4e","x":13.75,"y":4,"w":1.25} + ] + }, + "LAYOUT_60_iso_tsangan": { + "layout":[ + {"label":"k00","x":0,"y":0},{"label":"k01","x":1,"y":0},{"label":"k02","x":2,"y":0},{"label":"k03","x":3,"y":0},{"label":"k04","x":4,"y":0},{"label":"k05","x":5,"y":0},{"label":"k06","x":6,"y":0},{"label":"k07","x":7,"y":0},{"label":"k08","x":8,"y":0},{"label":"k09","x":9,"y":0},{"label":"k0a","x":10,"y":0},{"label":"k0b","x":11,"y":0},{"label":"k0c","x":12,"y":0},{"label":"k0d","x":13,"y":0,"w":2}, + {"label":"k10","x":0,"y":1,"w":1.5},{"label":"k12","x":1.5,"y":1},{"label":"k13","x":2.5,"y":1},{"label":"k14","x":3.5,"y":1},{"label":"k15","x":4.5,"y":1},{"label":"k16","x":5.5,"y":1},{"label":"k17","x":6.5,"y":1},{"label":"k18","x":7.5,"y":1},{"label":"k19","x":8.5,"y":1},{"label":"k1a","x":9.5,"y":1},{"label":"k1b","x":10.5,"y":1},{"label":"k1c","x":11.5,"y":1},{"label":"k1d","x":12.5,"y":1}, + {"label":"k20","x":0,"y":2,"w":1.75},{"label":"k22","x":1.75,"y":2},{"label":"k23","x":2.75,"y":2},{"label":"k24","x":3.75,"y":2},{"label":"k25","x":4.75,"y":2},{"label":"k26","x":5.75,"y":2},{"label":"k27","x":6.75,"y":2},{"label":"k28","x":7.75,"y":2},{"label":"k29","x":8.75,"y":2},{"label":"k2a","x":9.75,"y":2},{"label":"k2b","x":10.75,"y":2},{"label":"k2c","x":11.75,"y":2},{"label":"k2d","x":12.75,"y":2},{"label":"k1e","x":13.75,"y":1,"w":1.25,"h":2}, + {"label":"k30","x":0,"y":3,"w":1.25},{"label":"k31","x":1.25,"y":3},{"label":"k32","x":2.25,"y":3},{"label":"k33","x":3.25,"y":3},{"label":"k34","x":4.25,"y":3},{"label":"k35","x":5.25,"y":3},{"label":"k36","x":6.25,"y":3},{"label":"k37","x":7.25,"y":3},{"label":"k38","x":8.25,"y":3},{"label":"k39","x":9.25,"y":3},{"label":"k3a","x":10.25,"y":3},{"label":"k3b","x":11.25,"y":3},{"label":"k3d","x":12.25,"y":3,"w":2.75}, + {"label":"k40","x":0,"y":4,"w":1.5},{"label":"k41","x":1.5,"y":4},{"label":"k43","x":2.5,"y":4,"w":1.5},{"label":"k46","x":4,"y":4,"w":7},{"label":"k4b","x":11,"y":4,"w":1.5},{"label":"k4d","x":12.5,"y":4},{"label":"k4e","x":13.5,"y":4,"w":1.5} + ] + }, + "LAYOUT_60_iso_split_bs": { + "layout":[ + {"label":"k00","x":0,"y":0},{"label":"k01","x":1,"y":0},{"label":"k02","x":2,"y":0},{"label":"k03","x":3,"y":0},{"label":"k04","x":4,"y":0},{"label":"k05","x":5,"y":0},{"label":"k06","x":6,"y":0},{"label":"k07","x":7,"y":0},{"label":"k08","x":8,"y":0},{"label":"k09","x":9,"y":0},{"label":"k0a","x":10,"y":0},{"label":"k0b","x":11,"y":0},{"label":"k0c","x":12,"y":0},{"label":"k0d","x":13,"y":0},{"label":"k0e","x":14,"y":0}, + {"label":"k10","x":0,"y":1,"w":1.5},{"label":"k12","x":1.5,"y":1},{"label":"k13","x":2.5,"y":1},{"label":"k14","x":3.5,"y":1},{"label":"k15","x":4.5,"y":1},{"label":"k16","x":5.5,"y":1},{"label":"k17","x":6.5,"y":1},{"label":"k18","x":7.5,"y":1},{"label":"k19","x":8.5,"y":1},{"label":"k1a","x":9.5,"y":1},{"label":"k1b","x":10.5,"y":1},{"label":"k1c","x":11.5,"y":1},{"label":"k1d","x":12.5,"y":1}, + {"label":"k20","x":0,"y":2,"w":1.75},{"label":"k22","x":1.75,"y":2},{"label":"k23","x":2.75,"y":2},{"label":"k24","x":3.75,"y":2},{"label":"k25","x":4.75,"y":2},{"label":"k26","x":5.75,"y":2},{"label":"k27","x":6.75,"y":2},{"label":"k28","x":7.75,"y":2},{"label":"k29","x":8.75,"y":2},{"label":"k2a","x":9.75,"y":2},{"label":"k2b","x":10.75,"y":2},{"label":"k2c","x":11.75,"y":2},{"label":"k2d","x":12.75,"y":2},{"label":"k1e","x":13.75,"y":1,"w":1.25,"h":2}, + {"label":"k30","x":0,"y":3,"w":1.25},{"label":"k31","x":1.25,"y":3},{"label":"k32","x":2.25,"y":3},{"label":"k33","x":3.25,"y":3},{"label":"k34","x":4.25,"y":3},{"label":"k35","x":5.25,"y":3},{"label":"k36","x":6.25,"y":3},{"label":"k37","x":7.25,"y":3},{"label":"k38","x":8.25,"y":3},{"label":"k39","x":9.25,"y":3},{"label":"k3a","x":10.25,"y":3},{"label":"k3b","x":11.25,"y":3},{"label":"k3d","x":12.25,"y":3,"w":2.75}, + {"label":"k40","x":0,"y":4,"w":1.25},{"label":"k41","x":1.25,"y":4,"w":1.25},{"label":"k43","x":2.5,"y":4,"w":1.25},{"label":"k46","x":3.75,"y":4,"w":6.25},{"label":"k4a","x":10,"y":4,"w":1.25},{"label":"k4b","x":11.25,"y":4,"w":1.25},{"label":"k4d","x":12.5,"y":4,"w":1.25},{"label":"k4e","x":13.75,"y":4,"w":1.25} + ] + }, + "LAYOUT_60_iso_split_rshift": { + "layout":[ + {"label":"k00","x":0,"y":0},{"label":"k01","x":1,"y":0},{"label":"k02","x":2,"y":0},{"label":"k03","x":3,"y":0},{"label":"k04","x":4,"y":0},{"label":"k05","x":5,"y":0},{"label":"k06","x":6,"y":0},{"label":"k07","x":7,"y":0},{"label":"k08","x":8,"y":0},{"label":"k09","x":9,"y":0},{"label":"k0a","x":10,"y":0},{"label":"k0b","x":11,"y":0},{"label":"k0c","x":12,"y":0},{"label":"k0d","x":13,"y":0,"w":2}, + {"label":"k10","x":0,"y":1,"w":1.5},{"label":"k12","x":1.5,"y":1},{"label":"k13","x":2.5,"y":1},{"label":"k14","x":3.5,"y":1},{"label":"k15","x":4.5,"y":1},{"label":"k16","x":5.5,"y":1},{"label":"k17","x":6.5,"y":1},{"label":"k18","x":7.5,"y":1},{"label":"k19","x":8.5,"y":1},{"label":"k1a","x":9.5,"y":1},{"label":"k1b","x":10.5,"y":1},{"label":"k1c","x":11.5,"y":1},{"label":"k1d","x":12.5,"y":1}, + {"label":"k20","x":0,"y":2,"w":1.75},{"label":"k22","x":1.75,"y":2},{"label":"k23","x":2.75,"y":2},{"label":"k24","x":3.75,"y":2},{"label":"k25","x":4.75,"y":2},{"label":"k26","x":5.75,"y":2},{"label":"k27","x":6.75,"y":2},{"label":"k28","x":7.75,"y":2},{"label":"k29","x":8.75,"y":2},{"label":"k2a","x":9.75,"y":2},{"label":"k2b","x":10.75,"y":2},{"label":"k2c","x":11.75,"y":2},{"label":"k2d","x":12.75,"y":2},{"label":"k1e","x":13.75,"y":1,"w":1.25,"h":2}, + {"label":"k30","x":0,"y":3,"w":1.25},{"label":"k31","x":1.25,"y":3},{"label":"k32","x":2.25,"y":3},{"label":"k33","x":3.25,"y":3},{"label":"k34","x":4.25,"y":3},{"label":"k35","x":5.25,"y":3},{"label":"k36","x":6.25,"y":3},{"label":"k37","x":7.25,"y":3},{"label":"k38","x":8.25,"y":3},{"label":"k39","x":9.25,"y":3},{"label":"k3a","x":10.25,"y":3},{"label":"k3b","x":11.25,"y":3},{"label":"k3d","x":12.25,"y":3,"w":1.75},{"label":"k3e","x":14,"y":3}, + {"label":"k40","x":0,"y":4,"w":1.25},{"label":"k41","x":1.25,"y":4,"w":1.25},{"label":"k43","x":2.5,"y":4,"w":1.25},{"label":"k46","x":3.75,"y":4,"w":6.25},{"label":"k4a","x":10,"y":4,"w":1.25},{"label":"k4b","x":11.25,"y":4,"w":1.25},{"label":"k4d","x":12.5,"y":4,"w":1.25},{"label":"k4e","x":13.75,"y":4,"w":1.25} + ] + } + } +} diff --git a/keyboards/eniigmakeyboards/ek60/keymaps/default/keymap.c b/keyboards/eniigmakeyboards/ek60/keymaps/default/keymap.c new file mode 100644 index 000000000000..2cd9e8bc303d --- /dev/null +++ b/keyboards/eniigmakeyboards/ek60/keymaps/default/keymap.c @@ -0,0 +1,28 @@ + /* Copyright 2021 Eniigma Keyboards + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_60_ansi( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL + ) +}; + diff --git a/keyboards/eniigmakeyboards/ek60/keymaps/via/keymap.c b/keyboards/eniigmakeyboards/ek60/keymaps/via/keymap.c new file mode 100644 index 000000000000..a2c225e7d107 --- /dev/null +++ b/keyboards/eniigmakeyboards/ek60/keymaps/via/keymap.c @@ -0,0 +1,49 @@ + /* Copyright 2021 Eniigma Keyboards + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_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_BSPC, KC_TRNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_TRNS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_TRNS, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL + ), + [1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; + diff --git a/keyboards/eniigmakeyboards/ek60/keymaps/via/rules.mk b/keyboards/eniigmakeyboards/ek60/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/eniigmakeyboards/ek60/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/eniigmakeyboards/ek60/readme.md b/keyboards/eniigmakeyboards/ek60/readme.md new file mode 100644 index 000000000000..afa33f0243d0 --- /dev/null +++ b/keyboards/eniigmakeyboards/ek60/readme.md @@ -0,0 +1,11 @@ +# Eniigma Keyboards ek60 + +* Keyboard Maintainer: [eniigmakeyboards](https://github.com/eniigmakeyboards) and [adamws](https://github.com/adamws) + +Make example for this keyboard (after setting up your build environment): + + make eniigmakeyboards/ek60: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). + +Press and hold the reset button on the underside of the PCB while plugging in the cable to reset the bootloader. diff --git a/keyboards/eniigmakeyboards/ek60/rules.mk b/keyboards/eniigmakeyboards/ek60/rules.mk new file mode 100644 index 000000000000..298d9e7e149e --- /dev/null +++ b/keyboards/eniigmakeyboards/ek60/rules.mk @@ -0,0 +1,21 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +LAYOUTS = 60_ansi 60_iso diff --git a/keyboards/eniigmakeyboards/ek65/config.h b/keyboards/eniigmakeyboards/ek65/config.h index e1b86dfa1d5b..bd8f59ef1b1a 100644 --- a/keyboards/eniigmakeyboards/ek65/config.h +++ b/keyboards/eniigmakeyboards/ek65/config.h @@ -121,59 +121,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. diff --git a/keyboards/eniigmakeyboards/ek65/info.json b/keyboards/eniigmakeyboards/ek65/info.json index 6de239e7c620..361a444128b5 100644 --- a/keyboards/eniigmakeyboards/ek65/info.json +++ b/keyboards/eniigmakeyboards/ek65/info.json @@ -2,8 +2,6 @@ "keyboard_name": "ek65", "url": "", "maintainer": "adamws", - "width": 16, - "height": 5, "layouts": { "LAYOUT_all": { "layout":[ diff --git a/keyboards/eniigmakeyboards/ek65/rules.mk b/keyboards/eniigmakeyboards/ek65/rules.mk index 5c0d8f307c54..d2109f62500b 100644 --- a/keyboards/eniigmakeyboards/ek65/rules.mk +++ b/keyboards/eniigmakeyboards/ek65/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/eniigmakeyboards/ek87/config.h b/keyboards/eniigmakeyboards/ek87/config.h index 21298bd29ebf..fdde69cef316 100644 --- a/keyboards/eniigmakeyboards/ek87/config.h +++ b/keyboards/eniigmakeyboards/ek87/config.h @@ -121,59 +121,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -193,25 +140,6 @@ along with this program. If not, see . /* disable these deprecated features by default */ #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 diff --git a/keyboards/eniigmakeyboards/ek87/info.json b/keyboards/eniigmakeyboards/ek87/info.json index d8e622ca90da..6f934e75a8f4 100644 --- a/keyboards/eniigmakeyboards/ek87/info.json +++ b/keyboards/eniigmakeyboards/ek87/info.json @@ -2,8 +2,6 @@ "keyboard_name": "ek87", "url": "", "maintainer": "adamws", - "width": 18.25, - "height": 6.25, "layouts": { "LAYOUT_all": { "layout":[ diff --git a/keyboards/eniigmakeyboards/ek87/rules.mk b/keyboards/eniigmakeyboards/ek87/rules.mk index cb477d0661d8..ffe07f88d18c 100644 --- a/keyboards/eniigmakeyboards/ek87/rules.mk +++ b/keyboards/eniigmakeyboards/ek87/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/ep/40/40.c b/keyboards/ep/40/40.c index 7c235f3ce5cb..fad78a79417a 100644 --- a/keyboards/ep/40/40.c +++ b/keyboards/ep/40/40.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "40.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/ep/40/40.h b/keyboards/ep/40/40.h index 30f3d15b4fb9..1ac39a278d74 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 . */ -#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/40/info.json b/keyboards/ep/40/info.json index 51c000e7403d..58e76c608c0f 100644 --- a/keyboards/ep/40/info.json +++ b/keyboards/ep/40/info.json @@ -1,8 +1,6 @@ { "keyboard_name":"ep40", "maintainer":"e11i0t23", - "width":12, - "hight":4, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":0, "y":1, "w":1.25}, {"x":1.25, "y":1}, {"x":2.25, "y":1}, {"x":3.25, "y":1}, {"x":4.25, "y":1}, {"x":5.25, "y":1}, {"x":6.25, "y":1}, {"x":7.25, "y":1}, {"x":8.25, "y":1}, {"x":9.25, "y":1}, {"x":10.25, "y":1, "w":1.75}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2, "w":1.25}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3, "w":2.25}, {"x":5.25, "y":3, "w":2.75}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}] diff --git a/keyboards/ep/40/rules.mk b/keyboards/ep/40/rules.mk index a818ddd62271..07a1a6e85c32 100644 --- a/keyboards/ep/40/rules.mk +++ b/keyboards/ep/40/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/ep/96/96.c b/keyboards/ep/96/96.c index 9fdd51977d4c..70b48aa41147 100644 --- a/keyboards/ep/96/96.c +++ b/keyboards/ep/96/96.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "96.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/ep/96/96.h b/keyboards/ep/96/96.h index 1887eb472c02..1117256cdc2f 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 . */ -#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/ep/96/config.h b/keyboards/ep/96/config.h index 3df6a968e8d4..83ddb873de1a 100644 --- a/keyboards/ep/96/config.h +++ b/keyboards/ep/96/config.h @@ -86,54 +86,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -151,24 +103,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - diff --git a/keyboards/ep/96/info.json b/keyboards/ep/96/info.json index 7f9dd0e534a6..6f216064eb0b 100644 --- a/keyboards/ep/96/info.json +++ b/keyboards/ep/96/info.json @@ -1,11 +1,8 @@ { "keyboard_name": "ep96", "maintainer": "e11i0t23", - "width": 19, - "height": 6, "layouts": { "LAYOUT": { - "key_count": 100, "layout": [ {"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, diff --git a/keyboards/ep/96/keymaps/default/keymap.c b/keyboards/ep/96/keymaps/default/keymap.c index d5120415359d..c3892148e69c 100644 --- a/keyboards/ep/96/keymaps/default/keymap.c +++ b/keyboards/ep/96/keymaps/default/keymap.c @@ -53,15 +53,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/ep/96/rules.mk b/keyboards/ep/96/rules.mk index a818ddd62271..07a1a6e85c32 100644 --- a/keyboards/ep/96/rules.mk +++ b/keyboards/ep/96/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/ep/comsn/hs68/hs68.c b/keyboards/ep/comsn/hs68/hs68.c index fdde3ad78d40..16595739c017 100644 --- a/keyboards/ep/comsn/hs68/hs68.c +++ b/keyboards/ep/comsn/hs68/hs68.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "hs68.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/ep/comsn/hs68/info.json b/keyboards/ep/comsn/hs68/info.json index 957684bc5b79..8463ce491b97 100644 --- a/keyboards/ep/comsn/hs68/info.json +++ b/keyboards/ep/comsn/hs68/info.json @@ -1,8 +1,6 @@ { "keyboard_name": "EPHS68", "maintainer": "Elliot Powell (u/e11i0t23)", - "width": 16, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/ep/comsn/hs68/rules.mk b/keyboards/ep/comsn/hs68/rules.mk index 276a85cbc688..00a8fa07a459 100644 --- a/keyboards/ep/comsn/hs68/rules.mk +++ b/keyboards/ep/comsn/hs68/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/ep/comsn/mollydooker/config.h b/keyboards/ep/comsn/mollydooker/config.h index 8b0e5930b400..ec4f47f87075 100644 --- a/keyboards/ep/comsn/mollydooker/config.h +++ b/keyboards/ep/comsn/mollydooker/config.h @@ -95,54 +95,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -160,24 +112,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - diff --git a/keyboards/ep/comsn/mollydooker/info.json b/keyboards/ep/comsn/mollydooker/info.json index 6ede5c1d8a2e..611efe6c6494 100644 --- a/keyboards/ep/comsn/mollydooker/info.json +++ b/keyboards/ep/comsn/mollydooker/info.json @@ -1,8 +1,6 @@ { "keyboard_name": "mollydooker", "maintainer": "Elliot Powell (u/e11i0t23)", - "width": 20, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/ep/comsn/mollydooker/keymaps/default/keymap.c b/keyboards/ep/comsn/mollydooker/keymaps/default/keymap.c index a213973cdb50..1858cedf771d 100644 --- a/keyboards/ep/comsn/mollydooker/keymaps/default/keymap.c +++ b/keyboards/ep/comsn/mollydooker/keymaps/default/keymap.c @@ -45,11 +45,3 @@ void matrix_init_user(void) { }; } - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/ep/comsn/mollydooker/mollydooker.c b/keyboards/ep/comsn/mollydooker/mollydooker.c index d0d6f302eeb6..3657ac964287 100644 --- a/keyboards/ep/comsn/mollydooker/mollydooker.c +++ b/keyboards/ep/comsn/mollydooker/mollydooker.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "mollydooker.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/ep/comsn/mollydooker/rules.mk b/keyboards/ep/comsn/mollydooker/rules.mk index 08b69dae9e81..c5c80197478c 100644 --- a/keyboards/ep/comsn/mollydooker/rules.mk +++ b/keyboards/ep/comsn/mollydooker/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/ep/comsn/tf_longeboye/info.json b/keyboards/ep/comsn/tf_longeboye/info.json index d34294b670d5..e6992f448117 100644 --- a/keyboards/ep/comsn/tf_longeboye/info.json +++ b/keyboards/ep/comsn/tf_longeboye/info.json @@ -1,8 +1,6 @@ { "keyboard_name": "tf_longeboye", "maintainer": "Elliot Powell (u/e11i0t23)", - "width": 21.5, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/ep/comsn/tf_longeboye/rules.mk b/keyboards/ep/comsn/tf_longeboye/rules.mk index 13f194d5a3a6..21bda2a32242 100644 --- a/keyboards/ep/comsn/tf_longeboye/rules.mk +++ b/keyboards/ep/comsn/tf_longeboye/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/ep/comsn/tf_longeboye/tf__longeboye.c b/keyboards/ep/comsn/tf_longeboye/tf__longeboye.c index 9e8141772c25..ee8db1e523a7 100644 --- a/keyboards/ep/comsn/tf_longeboye/tf__longeboye.c +++ b/keyboards/ep/comsn/tf_longeboye/tf__longeboye.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "tf_longeboye.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/epoch80/info.json b/keyboards/epoch80/info.json index eaf99df698ee..97a23cac6d28 100644 --- a/keyboards/epoch80/info.json +++ b/keyboards/epoch80/info.json @@ -2,8 +2,6 @@ "keyboard_name": "epoch80", "url": "https://kbdfans.com/collections/80-diy-kit/products/coming-soon-epoch-80-mechanical-keyboard", "maintainer": "kb-elmo", - "width": 18.5, - "height": 6.5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/epoch80/rules.mk b/keyboards/epoch80/rules.mk index 277cde08e2e7..88f8bffc2e4b 100644 --- a/keyboards/epoch80/rules.mk +++ b/keyboards/epoch80/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 LAYOUTS = tkl_ansi tkl_iso diff --git a/keyboards/ergo42/info.json b/keyboards/ergo42/info.json index 6489e25a8069..a4c4f7fd189d 100644 --- a/keyboards/ergo42/info.json +++ b/keyboards/ergo42/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Ergo42", "url": "", "maintainer": "qmk", - "width": 15, - "height": 4, "layouts": { "LAYOUT_ortho_4x14": { - "key_count": 56, "layout": [{"label":"L00", "x":0, "y":0}, {"label":"L01", "x":1, "y":0}, {"label":"L02", "x":2, "y":0}, {"label":"L03", "x":3, "y":0}, {"label":"L04", "x":4, "y":0}, {"label":"L05", "x":5, "y":0}, {"label":"L06", "x":6, "y":0}, {"label":"R00", "x":8, "y":0}, {"label":"R01", "x":9, "y":0}, {"label":"R02", "x":10, "y":0}, {"label":"R03", "x":11, "y":0}, {"label":"R04", "x":12, "y":0}, {"label":"R05", "x":13, "y":0}, {"label":"R06", "x":14, "y":0}, {"label":"L10", "x":0, "y":1}, {"label":"L11", "x":1, "y":1}, {"label":"L12", "x":2, "y":1}, {"label":"L13", "x":3, "y":1}, {"label":"L14", "x":4, "y":1}, {"label":"L15", "x":5, "y":1}, {"label":"L16", "x":6, "y":1}, {"label":"R10", "x":8, "y":1}, {"label":"R11", "x":9, "y":1}, {"label":"R12", "x":10, "y":1}, {"label":"R13", "x":11, "y":1}, {"label":"R14", "x":12, "y":1}, {"label":"R15", "x":13, "y":1}, {"label":"R16", "x":14, "y":1}, {"label":"L20", "x":0, "y":2}, {"label":"L21", "x":1, "y":2}, {"label":"L22", "x":2, "y":2}, {"label":"L23", "x":3, "y":2}, {"label":"L24", "x":4, "y":2}, {"label":"L25", "x":5, "y":2}, {"label":"L26", "x":6, "y":2}, {"label":"R20", "x":8, "y":2}, {"label":"R21", "x":9, "y":2}, {"label":"R22", "x":10, "y":2}, {"label":"R23", "x":11, "y":2}, {"label":"R24", "x":12, "y":2}, {"label":"R25", "x":13, "y":2}, {"label":"R26", "x":14, "y":2}, {"label":"L30", "x":0, "y":3}, {"label":"L31", "x":1, "y":3}, {"label":"L32", "x":2, "y":3}, {"label":"L33", "x":3, "y":3}, {"label":"L34", "x":4, "y":3}, {"label":"L35", "x":5, "y":3}, {"label":"L36", "x":6, "y":3}, {"label":"R30", "x":8, "y":3}, {"label":"R31", "x":9, "y":3}, {"label":"R32", "x":10, "y":3}, {"label":"R33", "x":11, "y":3}, {"label":"R34", "x":12, "y":3}, {"label":"R35", "x":13, "y":3}, {"label":"R36", "x":14, "y":3}] } } diff --git a/keyboards/ergo42/keymaps/hdbx/keymap.c b/keyboards/ergo42/keymaps/hdbx/keymap.c index da579de01a9a..0931ce86b46e 100644 --- a/keyboards/ergo42/keymaps/hdbx/keymap.c +++ b/keyboards/ergo42/keymaps/hdbx/keymap.c @@ -90,7 +90,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_RAISE] = LAYOUT( \ _______, KC_EXLM, JP_AT, KC_HASH, KC_DLR, KC_PERC, JP_UNDS, JP_GRV, JP_CIRC, JP_AMPR, KC_INS, JP_YEN, KC_ALPS, _______, \ - _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, JP_LCBR, JP_RCBR, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_SCLN, JP_DQT, \ + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, JP_LCBR, JP_RCBR, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_SCLN, JP_DQUO, \ KC_LSFT, KC_MPLY, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPRV, KC_MNXT, KC_PGUP, XXXXXXX, XXXXXXX, KC_LT, KC_GT, KC_QUES, KC_RSFT, \ _______, _______, JP_PIPE, _______, _______, _______, _______, KC_PGDN, _______, _______, _______, _______, _______, _______ \ ), @@ -145,7 +145,7 @@ void matrix_init_user(void) { #endif } -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST); #ifdef RGBLIGHT_ENABLE switch (biton32(state)) { diff --git a/keyboards/ergo42/keymaps/shinze/keymap.c b/keyboards/ergo42/keymaps/shinze/keymap.c index e07ff9f9eb03..f5cc3c520ea1 100644 --- a/keyboards/ergo42/keymaps/shinze/keymap.c +++ b/keyboards/ergo42/keymaps/shinze/keymap.c @@ -15,15 +15,15 @@ extern keymap_config_t keymap_config; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = LAYOUT( \ - KC_TAB, BP_B, BP_ECUT, BP_P, BP_O, BP_EGRV, KC_ESC, KC_BSPC, BP_DCRC, BP_V, BP_D, BP_L, BP_J, BP_Z, \ + KC_TAB, BP_B, BP_EACU, BP_P, BP_O, BP_EGRV, KC_ESC, KC_BSPC, BP_DCIR, BP_V, BP_D, BP_L, BP_J, BP_Z, \ BP_W, BP_A, BP_U, BP_I, BP_E, BP_COMM, _______, _______, BP_C, BP_T, BP_S, BP_R, BP_N, BP_M, \ - KC_LSFT, BP_AGRV, BP_Y, BP_X, BP_DOT, BP_K, _______, _______, BP_APOS, BP_Q, BP_G, BP_H, BP_F, BP_CCED, \ + KC_LSFT, BP_AGRV, BP_Y, BP_X, BP_DOT, BP_K, _______, _______, BP_QUOT, BP_Q, BP_G, BP_H, BP_F, BP_CCED, \ MO(SHORT), KC_LCTL, _______, KC_LALT, KC_LGUI, KC_SPC, MO(NUMB), KC_ENT , KC_RSFT, KC_SPC, _______, _______, _______, _______ \ ), [NUMB] = LAYOUT( \ - BP_HASH, BP_DQOT, BP_LDQU, BP_RDQU, BP_LPRN, BP_RPRN, BP_AT, BP_PLUS, BP_MINS, BP_SLSH, BP_ASTR, BP_EQL, BP_PERC, KC_BSPC, \ - BP_DLR, BP_1, BP_2, BP_3, BP_4, BP_5, KC_LBRC, KC_RBRC, BP_6, BP_7, BP_8, BP_9, BP_0, BP_DEGR, \ + BP_HASH, BP_DQUO, BP_LDQU, BP_RDQU, BP_LPRN, BP_RPRN, BP_AT, BP_PLUS, BP_MINS, BP_SLSH, BP_ASTR, BP_EQL, BP_PERC, KC_BSPC, \ + BP_DLR, BP_1, BP_2, BP_3, BP_4, BP_5, KC_LBRC, KC_RBRC, BP_6, BP_7, BP_8, BP_9, BP_0, BP_DEG, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ ), diff --git a/keyboards/ergo42/rules.mk b/keyboards/ergo42/rules.mk index b593de2be37f..89a5ef0ea3c4 100644 --- a/keyboards/ergo42/rules.mk +++ b/keyboards/ergo42/rules.mk @@ -2,35 +2,22 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = yes -LAYOUTS = ortho_4x14 - DEFAULT_FOLDER = ergo42/rev1 diff --git a/keyboards/ergoarrows/info.json b/keyboards/ergoarrows/info.json index fca43fcd2de2..a625476e7932 100644 --- a/keyboards/ergoarrows/info.json +++ b/keyboards/ergoarrows/info.json @@ -2,87 +2,97 @@ "keyboard_name": "ergoarrows", "url": "https://salicylic-acid3.hatenablog.com/", "maintainer": "Salicylic_acid3", - "width": 16.25, - "height": 6.51, "layouts": { "LAYOUT": { "layout": [ - {"label":"Esc", "x":0.5, "y":0.38}, - {"label":"1", "x":1.5, "y":0.375}, - {"label":"2", "x":2.5, "y":0.125}, - {"label":"3", "x":3.5, "y":0}, - {"label":"4", "x":4.5, "y":0.125}, - {"label":"5", "x":5.5, "y":0.25}, - {"label":"6", "x":6.5, "y":0.5}, - {"label":"5", "x":9.25, "y":0.5}, - {"label":"6", "x":10.25, "y":0.25}, - {"label":"7", "x":11.25, "y":0.13}, - {"label":"8", "x":12.25, "y":0}, - {"label":"9", "x":13.25, "y":0.13}, - {"label":"0", "x":14.25, "y":0.38}, - {"label":"PrtScr", "x":15.25, "y":0.38}, - {"label":"Tab", "x":0.5, "y":1.38}, - {"label":"Q", "x":1.5, "y":1.375}, - {"label":"W", "x":2.5, "y":1.125}, - {"label":"E", "x":3.5, "y":1}, - {"label":"R", "x":4.5, "y":1.125}, - {"label":"T", "x":5.5, "y":1.25}, - {"label":"Y", "x":6.5, "y":1.5}, - {"label":"T", "x":9.25, "y":1.5}, - {"label":"Y", "x":10.25, "y":1.25}, - {"label":"U", "x":11.25, "y":1.13}, - {"label":"I", "x":12.25, "y":1}, - {"label":"O", "x":13.25, "y":1.13}, - {"label":"P", "x":14.25, "y":1.38}, - {"label":"[", "x":15.25, "y":1.38}, - {"label":"Caps", "x":0.5, "y":2.38}, - {"label":"A", "x":1.5, "y":2.375}, - {"label":"S", "x":2.5, "y":2.125}, - {"label":"D", "x":3.5, "y":2}, - {"label":"F", "x":4.5, "y":2.125}, - {"label":"G", "x":5.5, "y":2.25}, - {"label":"H", "x":6.5, "y":2.5}, - {"label":"G", "x":9.25, "y":2.5}, - {"label":"H", "x":10.25, "y":2.25}, - {"label":"J", "x":11.25, "y":2.13}, - {"label":"K", "x":12.25, "y":2}, - {"label":"L", "x":13.25, "y":2.13}, - {"label":":", "x":14.25, "y":2.38}, - {"label":"Ent", "x":15.25, "y":2.38}, - {"label":"Shift", "x":0.5, "y":3.38}, - {"label":"Z", "x":1.5, "y":3.375}, - {"label":"X", "x":2.5, "y":3.125}, - {"label":"C", "x":3.5, "y":3}, - {"label":"V", "x":4.5, "y":3.125}, - {"label":"B", "x":5.5, "y":3.25}, - {"label":"N", "x":6.5, "y":3.5}, - {"label":"B", "x":9.25, "y":3.5}, - {"label":"N", "x":10.25, "y":3.25}, - {"label":"M", "x":11.25, "y":3.13}, - {"label":"<", "x":12.25, "y":3}, - {"label":">", "x":13.25, "y":3.13}, - {"label":"?", "x":14.25, "y":3.38}, - {"label":"_", "x":15.25, "y":3.38}, - {"label":"Ctrl", "x":0.5, "y":4.38}, - {"label":"Win", "x":1.5, "y":4.38}, - {"label":"↑", "x":2.63, "y":4.51}, - {"label":"Alt", "x":3.75, "y":4.38}, - {"label":"Ent", "x":4.75, "y":4.38}, - {"label":"BS", "x":5.85, "y":4.6}, - {"label":"Del", "x":6.9, "y":5.15}, - {"label":"BS", "x":8.85, "y":5.15}, - {"label":"Del", "x":9.9, "y":4.6}, - {"label":"Spc", "x":11, "y":4.38}, - {"label":"Alt", "x":12, "y":4.38}, - {"label":"↑", "x":13.13, "y":4.51}, - {"label":"Alt", "x":14.25, "y":4.38}, - {"label":"App", "x":15.25, "y":4.38}, - {"label":"←", "x":1.63, "y":5.51}, - {"label":"⇓", "x":2.63, "y":5.51}, - {"label":"→", "x":3.625, "y":5.51}, - {"label":"←", "x":12.13, "y":5.51}, - {"label":"⇓", "x":13.13, "y":5.51}, - {"label":"→", "x":14.13, "y":5.51}] + {"label":"Esc", "x":0, "y":0.375}, + {"label":"1", "x":1, "y":0.375}, + {"label":"2", "x":2, "y":0.125}, + {"label":"3", "x":3, "y":0}, + {"label":"4", "x":4, "y":0.125}, + {"label":"5", "x":5, "y":0.25}, + {"label":"6", "x":6, "y":0.5}, + + {"label":"5", "x":8.8, "y":0.5}, + {"label":"6", "x":9.8, "y":0.25}, + {"label":"7", "x":10.8, "y":0.125}, + {"label":"8", "x":11.8, "y":0}, + {"label":"9", "x":12.8, "y":0.125}, + {"label":"0", "x":13.8, "y":0.375}, + {"label":"PrtScr", "x":14.8, "y":0.375}, + + {"label":"Tab", "x":0, "y":1.375}, + {"label":"Q", "x":1, "y":1.375}, + {"label":"W", "x":2, "y":1.125}, + {"label":"E", "x":3, "y":1}, + {"label":"R", "x":4, "y":1.125}, + {"label":"T", "x":5, "y":1.25}, + {"label":"Y", "x":6, "y":1.5}, + + {"label":"T", "x":8.8, "y":1.5}, + {"label":"Y", "x":9.8, "y":1.25}, + {"label":"U", "x":10.8, "y":1.125}, + {"label":"I", "x":11.8, "y":1}, + {"label":"O", "x":12.8, "y":1.125}, + {"label":"P", "x":13.8, "y":1.375}, + {"label":"[", "x":14.8, "y":1.375}, + + {"label":"Caps", "x":0, "y":2.375}, + {"label":"A", "x":1, "y":2.375}, + {"label":"S", "x":2, "y":2.125}, + {"label":"D", "x":3, "y":2}, + {"label":"F", "x":4, "y":2.125}, + {"label":"G", "x":5, "y":2.25}, + {"label":"H", "x":6, "y":2.5}, + + {"label":"G", "x":8.8, "y":2.5}, + {"label":"H", "x":9.8, "y":2.25}, + {"label":"J", "x":10.8, "y":2.125}, + {"label":"K", "x":11.8, "y":2}, + {"label":"L", "x":12.8, "y":2.125}, + {"label":":", "x":13.8, "y":2.375}, + {"label":"Ent", "x":14.8, "y":2.375}, + + {"label":"Shift", "x":0, "y":3.375}, + {"label":"Z", "x":1, "y":3.375}, + {"label":"X", "x":2, "y":3.125}, + {"label":"C", "x":3, "y":3}, + {"label":"V", "x":4, "y":3.125}, + {"label":"B", "x":5, "y":3.25}, + {"label":"N", "x":6, "y":3.5}, + + {"label":"B", "x":8.8, "y":3.5}, + {"label":"N", "x":9.8, "y":3.25}, + {"label":"M", "x":10.8, "y":3.125}, + {"label":"<", "x":11.8, "y":3}, + {"label":">", "x":12.8, "y":3.125}, + {"label":"?", "x":13.8, "y":3.375}, + {"label":"_", "x":14.8, "y":3.375}, + + {"label":"Ctrl", "x":0, "y":4.375}, + {"label":"Win", "x":1, "y":4.375}, + {"label":"↑", "x":2.125, "y":4.5}, + {"label":"Alt", "x":3.25, "y":4.375}, + {"label":"Ent", "x":4.25, "y":4.375}, + {"label":"BS", "x":5.35, "y":4.625}, + {"label":"Del", "x":6.4, "y":5.125}, + + {"label":"BS", "x":8.4, "y":5.125}, + {"label":"Del", "x":9.45, "y":4.625}, + {"label":"Spc", "x":10.55, "y":4.375}, + {"label":"Alt", "x":11.55, "y":4.375}, + {"label":"↑", "x":12.675, "y":4.5}, + {"label":"Alt", "x":13.8, "y":4.375}, + {"label":"App", "x":14.8, "y":4.375}, + + {"label":"←", "x":1.125, "y":5.5}, + {"label":"⇓", "x":2.125, "y":5.5}, + {"label":"→", "x":3.125, "y":5.5}, + + {"label":"←", "x":11.675, "y":5.5}, + {"label":"⇓", "x":12.675, "y":5.5}, + {"label":"→", "x":13.675, "y":5.5} + ] } } -} \ No newline at end of file +} diff --git a/keyboards/ergoarrows/keymaps/salicylic/keymap.c b/keyboards/ergoarrows/keymaps/salicylic/keymap.c index a8211e65aaa8..c841371dba73 100644 --- a/keyboards/ergoarrows/keymaps/salicylic/keymap.c +++ b/keyboards/ergoarrows/keymaps/salicylic/keymap.c @@ -52,7 +52,7 @@ LALT_T(KC_ZKHK),KC_LGUI, KC_UP, KC_MHEN,LT(_LOWER,KC_ENT),KC_BSPC,KC_DEL,KC_BSP //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| JP_DQUO, JP_EXLM, JP_QUES, JP_LBRC, JP_RBRC, JP_TILD, _______, _______, KC_P6, KC_P7, KC_P8, KC_P9, JP_ASTR, JP_SLSH, //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - JP_QUOT, JP_HASH, JP_DQT, JP_LPRN, JP_RPRN, JP_AT, _______, _______, XXXXXXX, KC_P4, KC_P5, KC_P6, JP_MINS, JP_EQL, + JP_QUOT, JP_HASH, JP_DQUO, JP_LPRN, JP_RPRN, JP_AT, _______, _______, XXXXXXX, KC_P4, KC_P5, KC_P6, JP_MINS, JP_EQL, //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| JP_CIRC, JP_PERC, JP_AMPR, JP_SCLN, JP_COLN, JP_PIPE, _______, _______, KC_P0, KC_P1, KC_P2, KC_P3, JP_PLUS, _______, //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| diff --git a/keyboards/ergoarrows/rules.mk b/keyboards/ergoarrows/rules.mk index abffa14b3461..d9a3e4aae73e 100644 --- a/keyboards/ergoarrows/rules.mk +++ b/keyboards/ergoarrows/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 SPLIT_KEYBOARD = yes diff --git a/keyboards/ergodash/config.h b/keyboards/ergodash/config.h index c910d8f24f0c..cfb6bf4ffccd 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" - -#endif diff --git a/keyboards/ergodash/mini/info.json b/keyboards/ergodash/mini/info.json index 538e0b87205c..1a0c1766f635 100644 --- a/keyboards/ergodash/mini/info.json +++ b/keyboards/ergodash/mini/info.json @@ -2,11 +2,8 @@ "keyboard_name": "ErgoDash mini", "url": "", "maintainer": "qmk", - "width": 18, - "height": 6.25, "layouts": { "LAYOUT": { - "key_count": 56, "layout": [{"label":"L00", "x":0, "y":1.375}, {"label":"L01", "x":1, "y":1.375}, {"label":"L02", "x":2, "y":1.125}, {"label":"L03", "x":3, "y":1}, {"label":"L04", "x":4, "y":1.125}, {"label":"L05", "x":5, "y":1.25}, {"label":"L06", "x":6, "y":1.75}, {"label":"R00", "x":11, "y":1.75}, {"label":"R01", "x":12, "y":1.25}, {"label":"R02", "x":13, "y":1.125}, {"label":"R03", "x":14, "y":1}, {"label":"R04", "x":15, "y":1.125}, {"label":"R05", "x":16, "y":1.375}, {"label":"R06", "x":17, "y":1.375}, {"label":"L10", "x":0, "y":2.375}, {"label":"L11", "x":1, "y":2.375}, {"label":"L12", "x":2, "y":2.125}, {"label":"L13", "x":3, "y":2}, {"label":"L14", "x":4, "y":2.125}, {"label":"L15", "x":5, "y":2.25}, {"label":"L16", "x":6, "y":2.75}, {"label":"R10", "x":11, "y":2.75}, {"label":"R11", "x":12, "y":2.25}, {"label":"R12", "x":13, "y":2.125}, {"label":"R13", "x":14, "y":2}, {"label":"R14", "x":15, "y":2.125}, {"label":"R15", "x":16, "y":2.375}, {"label":"R16", "x":17, "y":2.375}, {"label":"L20", "x":0, "y":3.375}, {"label":"L21", "x":1, "y":3.375}, {"label":"L22", "x":2, "y":3.125}, {"label":"L23", "x":3, "y":3}, {"label":"L24", "x":4, "y":3.125}, {"label":"L25", "x":5, "y":3.25}, {"label":"L26", "x":6.5, "y":4.25}, {"label":"R20", "x":10.5, "y":4.25}, {"label":"R21", "x":12, "y":3.25}, {"label":"R22", "x":13, "y":3.125}, {"label":"R23", "x":14, "y":3}, {"label":"R24", "x":15, "y":3.125}, {"label":"R25", "x":16, "y":3.375}, {"label":"R26", "x":17, "y":3.375}, {"label":"L30", "x":0, "y":4.375}, {"label":"L31", "x":1, "y":4.375}, {"label":"L32", "x":2, "y":4.125}, {"label":"L33", "x":3, "y":4}, {"label":"L34", "x":5.5, "y":5.25}, {"label":"L35", "x":6.5, "y":5.25}, {"label":"L36", "x":7.5, "y":4.25, "h":2}, {"label":"R30", "x":9.5, "y":4.25, "h":2}, {"label":"R31", "x":10.5, "y":5.25}, {"label":"R32", "x":11.5, "y":5.25}, {"label":"R33", "x":14, "y":4}, {"label":"R34", "x":15, "y":4.125}, {"label":"R35", "x":16, "y":4.375}, {"label":"R36", "x":17, "y":4.375}] } } diff --git a/keyboards/ergodash/mini/keymaps/yoshimaru46/config.h b/keyboards/ergodash/mini/keymaps/yoshimaru46/config.h new file mode 100644 index 000000000000..df04873a97ec --- /dev/null +++ b/keyboards/ergodash/mini/keymaps/yoshimaru46/config.h @@ -0,0 +1,33 @@ +/* +This is the c configuration file for the keymap + +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + + +/* Use I2C or Serial, not both */ + +#define USE_SERIAL +// #define USE_I2C + +/* Select hand configuration */ + +#define MASTER_LEFT +// #define MASTER_RIGHT +// #define EE_HANDS diff --git a/keyboards/ergodash/mini/keymaps/yoshimaru46/keymap.c b/keyboards/ergodash/mini/keymaps/yoshimaru46/keymap.c new file mode 100644 index 000000000000..98c56c8d16bd --- /dev/null +++ b/keyboards/ergodash/mini/keymaps/yoshimaru46/keymap.c @@ -0,0 +1,111 @@ +/* Copyright 2021 Yoshihiro Saito + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see + */ + +#include QMK_KEYBOARD_H + +enum layers { + _QWERTY, + _LOWER, + _RAISE, + _ADJUST, +}; + +enum custom_keycodes { + QWERTY = SAFE_RANGE, + LOWER, + RAISE, + ADJUST, +}; + +// Shift + ( = < +const key_override_t left_paren_angle_bracket_override = ko_make_basic(MOD_MASK_SHIFT, KC_LEFT_PAREN, KC_LEFT_ANGLE_BRACKET); + +// Shift + ) = > +const key_override_t right_paren_angle_bracket_override = ko_make_basic(MOD_MASK_SHIFT, KC_RIGHT_PAREN, KC_RIGHT_ANGLE_BRACKET); + +const key_override_t **key_overrides = (const key_override_t *[]){ + &left_paren_angle_bracket_override, + &right_paren_angle_bracket_override, + NULL +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Qwerty */ + [_QWERTY] = LAYOUT( + KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LPRN, KC_RPRN, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LBRC, KC_RBRC, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_DEL, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, XXXXXXX, XXXXXXX, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LGUI, LOWER, CTL_T(KC_SPC), KC_SFTENT, RAISE, KC_RGUI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + ), + + /* Lower */ + [_LOWER] = LAYOUT( + XXXXXXX, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_F11, KC_GRV, KC_CIRC, KC_AMPR, KC_ASTR, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F12, KC_TILD, KC_BSLS, KC_MINS, KC_EQL, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX, KC_PIPE, KC_UNDS, KC_PLUS, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, _______, _______, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + ), + + /* Raise */ + [_RAISE] = LAYOUT( + XXXXXXX, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, XXXXXXX, XXXXXXX, KC_P6, KC_P7, KC_P8, KC_P9, KC_P0, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, _______, _______, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + ), + + /* Adjust */ + [_ADJUST] = LAYOUT( + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX ,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX ,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX ,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______ ,_______, _______, _______, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + ), +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case ADJUST: + if (record->event.pressed) { + layer_on(_ADJUST); + } else { + layer_off(_ADJUST); + } + return false; + break; + } + return true; +} diff --git a/keyboards/ergodash/mini/keymaps/yoshimaru46/readme.md b/keyboards/ergodash/mini/keymaps/yoshimaru46/readme.md new file mode 100644 index 000000000000..67a6ed9b90fa --- /dev/null +++ b/keyboards/ergodash/mini/keymaps/yoshimaru46/readme.md @@ -0,0 +1,4 @@ +# yoshimaru46's keymap for Ergodash mini + +This is the yoshimaru46's keymap configuration for Ergodash mini. +There are three layers, QWERTY(default), LOWER, and RAISE. diff --git a/keyboards/ergodash/mini/keymaps/yoshimaru46/rules.mk b/keyboards/ergodash/mini/keymaps/yoshimaru46/rules.mk new file mode 100644 index 000000000000..f85c6a4151a4 --- /dev/null +++ b/keyboards/ergodash/mini/keymaps/yoshimaru46/rules.mk @@ -0,0 +1,4 @@ +BACKLIGHT_ENABLE = no +RGBLIGHT_ENABLE = no +AUDIO_ENABLE = no +KEY_OVERRIDE_ENABLE = yes diff --git a/keyboards/ergodash/mini/mini.c b/keyboards/ergodash/mini/mini.c index 89b8212976d0..3aa9e74ccec8 100644 --- a/keyboards/ergodash/mini/mini.c +++ b/keyboards/ergodash/mini/mini.c @@ -4,10 +4,3 @@ float tone_startup[][2] = SONG(STARTUP_SOUND); float tone_goodbye[][2] = SONG(GOODBYE_SOUND); #endif - -#ifdef SSD1306OLED -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - led_set_user(usb_led); -} -#endif diff --git a/keyboards/ergodash/mini/mini.h b/keyboards/ergodash/mini/mini.h index d565c6168ff5..4aca15775b05 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/info.json b/keyboards/ergodash/rev1/info.json index de8b0c070e09..bb491b5f507f 100644 --- a/keyboards/ergodash/rev1/info.json +++ b/keyboards/ergodash/rev1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "ErgoDash rev1.2", "url": "", "maintainer": "qmk", - "width": 19, - "height": 8.375, "layouts": { "LAYOUT_4key": { "layout": [ diff --git a/keyboards/ergodash/rev1/keymaps/m47ch4n/keymap.c b/keyboards/ergodash/rev1/keymaps/m47ch4n/keymap.c index 4d1d0131f58d..4b102157d584 100644 --- a/keyboards/ergodash/rev1/keymaps/m47ch4n/keymap.c +++ b/keyboards/ergodash/rev1/keymaps/m47ch4n/keymap.c @@ -26,7 +26,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_QWERTY] = LAYOUT( \ KC_ESC, CSTM_1, CSTM_2, CSTM_3, CSTM_4, CSTM_5, JP_KANA, JP_KANA, CSTM_6, CSTM_7, CSTM_8, CSTM_9, CSTM_0, GRV , \ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, JP_MHEN, JP_HENK, KC_Y, KC_U, KC_I, KC_O, KC_P, BSLS , \ - KC_LGUI, KC_A, KC_S, KC_D, KC_F, KC_G, JP_MEISU, JP_MKANA,KC_H, KC_J, KC_K, KC_L, SCLN, QUOT , \ + KC_LGUI, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LANG2, JP_LANG1,KC_H, KC_J, KC_K, KC_L, SCLN, QUOT , \ SHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, SHIFT , SHIFT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SHIFT , \ SHIFT, ADJUST, KC_LALT, KC_LCTL, LOWER, KC_SPC ,XXXXXXX, XXXXXXX,KC_ENT , RAISE, KC_LCTL, KC_LALT, ADJUST, SHIFT \ ), diff --git a/keyboards/ergodash/rev1/keymaps/yet-another-developer/rules.mk b/keyboards/ergodash/rev1/keymaps/yet-another-developer/rules.mk index 6ba6c5b2211f..a7d4fcaac371 100644 --- a/keyboards/ergodash/rev1/keymaps/yet-another-developer/rules.mk +++ b/keyboards/ergodash/rev1/keymaps/yet-another-developer/rules.mk @@ -1,4 +1,4 @@ -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite # Device AUDIO_ENABLE = no diff --git a/keyboards/ergodash/rev1/rev1.c b/keyboards/ergodash/rev1/rev1.c index 5e787921cbbc..00f81cae1175 100644 --- a/keyboards/ergodash/rev1/rev1.c +++ b/keyboards/ergodash/rev1/rev1.c @@ -5,13 +5,6 @@ float tone_goodbye[][2] = SONG(GOODBYE_SOUND); #endif -#ifdef SSD1306OLED -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - led_set_user(usb_led); -} -#endif - void matrix_init_kb(void) { #ifdef AUDIO_ENABLE diff --git a/keyboards/ergodash/rev1/rev1.h b/keyboards/ergodash/rev1/rev1.h index eaabf7cc5f82..7f094534cc39 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/ergodash/rules.mk b/keyboards/ergodash/rules.mk index de06b3427068..b4da694b1063 100644 --- a/keyboards/ergodash/rules.mk +++ b/keyboards/ergodash/rules.mk @@ -2,33 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend SPLIT_KEYBOARD = yes # Enables split keyboard support diff --git a/keyboards/ergodone/config.h b/keyboards/ergodone/config.h deleted file mode 100644 index 39e0ae8c7564..000000000000 --- a/keyboards/ergodone/config.h +++ /dev/null @@ -1,81 +0,0 @@ -#ifndef ERGODOX_ERGODONE_CONFIG_H -#define ERGODOX_ERGODONE_CONFIG_H - -#include "config_common.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x1209 -#define PRODUCT_ID 0x2328 -// The official ErgoDone VID and PID are documented at http://pid.codes/1209/2328/. -#define DEVICE_VER 0x0001 -#define MANUFACTURER K.T.E.C. -#define PRODUCT ErgoDone - -/* key matrix size */ -#define MATRIX_ROWS 6 -#define MATRIX_COLS 14 - -#define MOUSEKEY_INTERVAL 20 -#define MOUSEKEY_DELAY 0 -#define MOUSEKEY_TIME_TO_MAX 60 -#define MOUSEKEY_MAX_SPEED 7 -#define MOUSEKEY_WHEEL_DELAY 0 - -#define TAPPING_TOGGLE 1 - -/* define if matrix has ghost */ -//#define MATRIX_HAS_GHOST - -#define TAPPING_TERM 200 -#define IGNORE_MOD_TAP_INTERRUPT // this makes it possible to do rolling combos (zx) with keys that convert to other keys on hold (z becomes ctrl when you hold it, and when this option isn't enabled, z rapidly followed by x actually sends Ctrl-x. That's bad.) - -/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ -#define LOCKING_SUPPORT_ENABLE -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE - -/* key combination for command */ -#define IS_COMMAND() ( \ - get_mods() == (MOD_BIT(KC_LCTL) | MOD_BIT(KC_RCTL)) || \ - get_mods() == (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) \ -) - -/* number of backlight levels */ -#define BACKLIGHT_LEVELS 3 - -#define LED_BRIGHTNESS_LO 15 -#define LED_BRIGHTNESS_HI 255 - -/* fix space cadet rollover issue */ -#define DISABLE_SPACE_CADET_ROLLOVER - -/* Set 0 if debouncing isn't needed */ -#define DEBOUNCE 5 - -#define USB_MAX_POWER_CONSUMPTION 500 - -/* NKRO */ -#ifndef FORCE_NKRO - #define FORCE_NKRO // Depends on NKRO_ENABLE. -#endif - -/* - * Feature disable options - * These options are also useful to firmware size reduction. - */ - -/* disable debug print */ -// #define NO_DEBUG - -/* disable print */ -// #define NO_PRINT - -/* disable action features */ -//#define NO_ACTION_LAYER -//#define NO_ACTION_TAPPING -//#define NO_ACTION_ONESHOT -//#define NO_ACTION_MACRO -//#define NO_ACTION_FUNCTION -//#define DEBUG_MATRIX_SCAN_RATE - -#endif diff --git a/keyboards/ergodone/ergodone.h b/keyboards/ergodone/ergodone.h deleted file mode 100644 index f88280fa2a4f..000000000000 --- a/keyboards/ergodone/ergodone.h +++ /dev/null @@ -1,182 +0,0 @@ -#ifndef ERGODOX_ERGODONE_H -#define ERGODOX_ERGODONE_H - -#include "quantum.h" -#include -#include - -#define CPU_PRESCALE(n) (CLKPR = 0x80, CLKPR = (n)) -#define CPU_16MHz 0x00 - -void init_ergodox(void); - -inline void ergodox_right_led_1_off(void) { DDRB &= ~(1< http://jump.to/fleury -* File: $Id: i2cmaster.h,v 1.10 2005/03/06 22:39:57 Peter Exp $ -* Software: AVR-GCC 3.4.3 / avr-libc 1.2.3 -* Target: any AVR device -* Usage: see Doxygen manual -**************************************************************************/ - -#ifdef DOXYGEN -/** - @defgroup pfleury_ic2master I2C Master library - @code #include @endcode - - @brief I2C (TWI) Master Software Library - - Basic routines for communicating with I2C slave devices. This single master - implementation is limited to one bus master on the I2C bus. - - This I2c library is implemented as a compact assembler software implementation of the I2C protocol - which runs on any AVR (i2cmaster.S) and as a TWI hardware interface for all AVR with built-in TWI hardware (twimaster.c). - Since the API for these two implementations is exactly the same, an application can be linked either against the - software I2C implementation or the hardware I2C implementation. - - Use 4.7k pull-up resistor on the SDA and SCL pin. - - Adapt the SCL and SDA port and pin definitions and eventually the delay routine in the module - i2cmaster.S to your target when using the software I2C implementation ! - - Adjust the CPU clock frequence F_CPU in twimaster.c or in the Makfile when using the TWI hardware implementaion. - - @note - The module i2cmaster.S is based on the Atmel Application Note AVR300, corrected and adapted - to GNU assembler and AVR-GCC C call interface. - Replaced the incorrect quarter period delays found in AVR300 with - half period delays. - - @author Peter Fleury pfleury@gmx.ch http://jump.to/fleury - - @par API Usage Example - The following code shows typical usage of this library, see example test_i2cmaster.c - - @code - - #include - - - #define Dev24C02 0xA2 // device address of EEPROM 24C02, see datasheet - - int main(void) - { - unsigned char ret; - - i2c_init(); // initialize I2C library - - // write 0x75 to EEPROM address 5 (Byte Write) - i2c_start_wait(Dev24C02+I2C_WRITE); // set device address and write mode - i2c_write(0x05); // write address = 5 - i2c_write(0x75); // write value 0x75 to EEPROM - i2c_stop(); // set stop conditon = release bus - - - // read previously written value back from EEPROM address 5 - i2c_start_wait(Dev24C02+I2C_WRITE); // set device address and write mode - - i2c_write(0x05); // write address = 5 - i2c_rep_start(Dev24C02+I2C_READ); // set device address and read mode - - ret = i2c_readNak(); // read one byte from EEPROM - i2c_stop(); - - for(;;); - } - @endcode - -*/ -#endif /* DOXYGEN */ - -/**@{*/ - -#if (__GNUC__ * 100 + __GNUC_MINOR__) < 304 -#error "This library requires AVR-GCC 3.4 or later, update to newer AVR-GCC compiler !" -#endif - -#include - -/** defines the data direction (reading from I2C device) in i2c_start(),i2c_rep_start() */ -#define I2C_READ 1 - -/** defines the data direction (writing to I2C device) in i2c_start(),i2c_rep_start() */ -#define I2C_WRITE 0 - - -/** - @brief initialize the I2C master interace. Need to be called only once - @param void - @return none - */ -extern void i2c_init(void); - - -/** - @brief Terminates the data transfer and releases the I2C bus - @param void - @return none - */ -extern void i2c_stop(void); - - -/** - @brief Issues a start condition and sends address and transfer direction - - @param addr address and transfer direction of I2C device - @retval 0 device accessible - @retval 1 failed to access device - */ -extern unsigned char i2c_start(unsigned char addr); - - -/** - @brief Issues a repeated start condition and sends address and transfer direction - - @param addr address and transfer direction of I2C device - @retval 0 device accessible - @retval 1 failed to access device - */ -extern unsigned char i2c_rep_start(unsigned char addr); - - -/** - @brief Issues a start condition and sends address and transfer direction - - If device is busy, use ack polling to wait until device ready - @param addr address and transfer direction of I2C device - @return none - */ -extern void i2c_start_wait(unsigned char addr); - - -/** - @brief Send one byte to I2C device - @param data byte to be transfered - @retval 0 write successful - @retval 1 write failed - */ -extern unsigned char i2c_write(unsigned char data); - - -/** - @brief read one byte from the I2C device, request more data from device - @return byte read from I2C device - */ -extern unsigned char i2c_readAck(void); - -/** - @brief read one byte from the I2C device, read is followed by a stop condition - @return byte read from I2C device - */ -extern unsigned char i2c_readNak(void); - -/** - @brief read one byte from the I2C device - - Implemented as a macro, which calls either i2c_readAck or i2c_readNak - - @param ack 1 send ack, request more data from device
- 0 send nak, read is followed by a stop condition - @return byte read from I2C device - */ -extern unsigned char i2c_read(unsigned char ack); -#define i2c_read(ack) (ack) ? i2c_readAck() : i2c_readNak(); - - -/**@}*/ -#endif diff --git a/keyboards/ergodone/info.json b/keyboards/ergodone/info.json deleted file mode 100644 index 33128758ac3c..000000000000 --- a/keyboards/ergodone/info.json +++ /dev/null @@ -1,107 +0,0 @@ -{ - "keyboard_name": "Ergodone", - "maintainer": "Yu He", - "width": 17, - "height": 8, - - "layouts": { - "LAYOUT_ergodox": { - - "layout": [ - {"x":0, "y":0.375, "w":1.5}, {"x":1.5, "y":0.375}, {"x":2.5, "y":0.125}, {"x":3.5, "y":0}, {"x":4.5, "y":0.125}, {"x":5.5, "y":0.25}, {"x":6.5, "y":0.25}, - {"x":0, "y":1.375, "w":1.5}, {"x":1.5, "y":1.375}, {"x":2.5, "y":1.125}, {"x":3.5, "y":1}, {"x":4.5, "y":1.125}, {"x":5.5, "y":1.25}, {"x":6.5, "y":1.25, "h":1.5}, - {"x":0, "y":2.375, "w":1.5}, {"x":1.5, "y":2.375}, {"x":2.5, "y":2.125}, {"x":3.5, "y":2}, {"x":4.5, "y":2.125}, {"x":5.5, "y":2.25}, - {"x":0, "y":3.375, "w":1.5}, {"x":1.5, "y":3.375}, {"x":2.5, "y":3.125}, {"x":3.5, "y":3}, {"x":4.5, "y":3.125}, {"x":5.5, "y":3.25}, {"x":6.5, "y":2.75, "h":1.5}, - {"x":0.5, "y":4.375}, {"x":1.5, "y":4.375}, {"x":2.5, "y":4.125}, {"x":3.5, "y":4}, {"x":4.5, "y":4.125}, - - {"x":6, "y":5}, {"x":7, "y":5}, - {"x":7, "y":6}, - {"x":5, "y":6, "h":2}, {"x":6, "y":6, "h":2}, {"x":7, "y":7}, - - - {"x":9.5, "y":0.25}, {"x":10.5, "y":0.25}, {"x":11.5, "y":0.125}, {"x":12.5, "y":0}, {"x":13.5, "y":0.125}, {"x":14.5, "y":0.375}, {"x":15.5, "y":0.375, "w":1.5}, - {"x":9.5, "y":1.25, "h":1.5}, {"x":10.5, "y":1.25}, {"x":11.5, "y":1.125}, {"x":12.5, "y":1}, {"x":13.5, "y":1.125}, {"x":14.5, "y":1.375}, {"x":15.5, "y":1.375, "w":1.5}, - {"x":10.5, "y":2.25}, {"x":11.5, "y":2.125}, {"x":12.5, "y":2}, {"x":13.5, "y":2.125}, {"x":14.5, "y":2.375}, {"x":15.5, "y":2.375, "w":1.5}, - {"x":9.5, "y":2.75, "h":1.5}, {"x":10.5, "y":3.25}, {"x":11.5, "y":3.125}, {"x":12.5, "y":3}, {"x":13.5, "y":3.125}, {"x":14.5, "y":3.375}, {"x":15.5, "y":3.375, "w":1.5}, - {"x":11.5, "y":4.125}, {"x":12.5, "y":4}, {"x":13.5, "y":4.125}, {"x":14.5, "y":4.375}, {"x":15.5, "y":4.375}, - - - {"x":9, "y":5}, {"x":10, "y":5}, - {"x":9, "y":6}, - {"x":9, "y":7}, {"x":10, "y":6, "h":2}, {"x":11, "y":6, "h":2} - ] - }, - "LAYOUT_ergodox_pretty": { - "layout": [ - {"x":0, "y":0.375, "w":1.5}, {"x":1.5, "y":0.375}, {"x":2.5, "y":0.125}, {"x":3.5, "y":0}, {"x":4.5, "y":0.125}, {"x":5.5, "y":0.25}, {"x":6.5, "y":0.25}, - {"x":9.5, "y":0.25}, {"x":10.5, "y":0.25}, {"x":11.5, "y":0.125}, {"x":12.5, "y":0}, {"x":13.5, "y":0.125}, {"x":14.5, "y":0.375}, {"x":15.5, "y":0.375, "w":1.5}, - - {"x":0, "y":1.375, "w":1.5}, {"x":1.5, "y":1.375}, {"x":2.5, "y":1.125}, {"x":3.5, "y":1}, {"x":4.5, "y":1.125}, {"x":5.5, "y":1.25}, {"x":6.5, "y":1.25, "h":1.5}, - {"x":9.5, "y":1.25, "h":1.5}, {"x":10.5, "y":1.25}, {"x":11.5, "y":1.125}, {"x":12.5, "y":1}, {"x":13.5, "y":1.125}, {"x":14.5, "y":1.375}, {"x":15.5, "y":1.375, "w":1.5}, - - {"x":0, "y":2.375, "w":1.5}, {"x":1.5, "y":2.375}, {"x":2.5, "y":2.125}, {"x":3.5, "y":2}, {"x":4.5, "y":2.125}, {"x":5.5, "y":2.25}, - {"x":10.5, "y":2.25}, {"x":11.5, "y":2.125}, {"x":12.5, "y":2}, {"x":13.5, "y":2.125}, {"x":14.5, "y":2.375}, {"x":15.5, "y":2.375, "w":1.5}, - - {"x":0, "y":3.375, "w":1.5}, {"x":1.5, "y":3.375}, {"x":2.5, "y":3.125}, {"x":3.5, "y":3}, {"x":4.5, "y":3.125}, {"x":5.5, "y":3.25}, {"x":6.5, "y":2.75, "h":1.5}, - {"x":9.5, "y":2.75, "h":1.5}, {"x":10.5, "y":3.25}, {"x":11.5, "y":3.125}, {"x":12.5, "y":3}, {"x":13.5, "y":3.125}, {"x":14.5, "y":3.375}, {"x":15.5, "y":3.375, "w":1.5}, - - {"x":0.5, "y":4.375}, {"x":1.5, "y":4.375}, {"x":2.5, "y":4.125}, {"x":3.5, "y":4}, {"x":4.5, "y":4.125}, - {"x":11.5, "y":4.125}, {"x":12.5, "y":4}, {"x":13.5, "y":4.125}, {"x":14.5, "y":4.375}, {"x":15.5, "y":4.375}, - - {"x":6, "y":5}, {"x":7, "y":5}, {"x":9, "y":5}, {"x":10, "y":5}, - {"x":7, "y":6}, {"x":9, "y":6}, - {"x":5, "y":6, "h":2}, {"x":6, "y":6, "h":2}, {"x":7, "y":7}, {"x":9, "y":7}, {"x":10, "y":6, "h":2}, {"x":11, "y":6, "h":2} - ] - }, - "LAYOUT_ergodox_80": { - - "layout": [ - {"x":0, "y":0.375, "w":1.5}, {"x":1.5, "y":0.375}, {"x":2.5, "y":0.125}, {"x":3.5, "y":0}, {"x":4.5, "y":0.125}, {"x":5.5, "y":0.25}, {"x":6.5, "y":0.25}, - {"x":0, "y":1.375, "w":1.5}, {"x":1.5, "y":1.375}, {"x":2.5, "y":1.125}, {"x":3.5, "y":1}, {"x":4.5, "y":1.125}, {"x":5.5, "y":1.25}, {"x":6.5, "y":1.25, "h":1.5}, - {"x":0, "y":2.375, "w":1.5}, {"x":1.5, "y":2.375}, {"x":2.5, "y":2.125}, {"x":3.5, "y":2}, {"x":4.5, "y":2.125}, {"x":5.5, "y":2.25}, - {"x":0, "y":3.375, "w":1.5}, {"x":1.5, "y":3.375}, {"x":2.5, "y":3.125}, {"x":3.5, "y":3}, {"x":4.5, "y":3.125}, {"x":5.5, "y":3.25}, {"x":6.5, "y":2.75, "h":1.5}, - {"x":0.5, "y":4.375}, {"x":1.5, "y":4.375}, {"x":2.5, "y":4.125}, {"x":3.5, "y":4}, {"x":4.5, "y":4.125}, - - {"x":6, "y":5}, {"x":7, "y":5}, - - {"x":5, "y":6}, {"x":6, "y":6}, {"x":7, "y":6}, - {"x":5, "y":7}, {"x":6, "y":7}, {"x":7, "y":7}, - - - {"x":9.5, "y":0.25}, {"x":10.5, "y":0.25}, {"x":11.5, "y":0.125}, {"x":12.5, "y":0}, {"x":13.5, "y":0.125}, {"x":14.5, "y":0.375}, {"x":15.5, "y":0.375, "w":1.5}, - {"x":9.5, "y":1.25, "h":1.5}, {"x":10.5, "y":1.25}, {"x":11.5, "y":1.125}, {"x":12.5, "y":1}, {"x":13.5, "y":1.125}, {"x":14.5, "y":1.375}, {"x":15.5, "y":1.375, "w":1.5}, - {"x":10.5, "y":2.25}, {"x":11.5, "y":2.125}, {"x":12.5, "y":2}, {"x":13.5, "y":2.125}, {"x":14.5, "y":2.375}, {"x":15.5, "y":2.375, "w":1.5}, - {"x":9.5, "y":2.75, "h":1.5}, {"x":10.5, "y":3.25}, {"x":11.5, "y":3.125}, {"x":12.5, "y":3}, {"x":13.5, "y":3.125}, {"x":14.5, "y":3.375}, {"x":15.5, "y":3.375, "w":1.5}, - {"x":11.5, "y":4.125}, {"x":12.5, "y":4}, {"x":13.5, "y":4.125}, {"x":14.5, "y":4.375}, {"x":15.5, "y":4.375}, - - - {"x":9, "y":5}, {"x":10, "y":5}, - {"x":9, "y":6}, {"x":10, "y":6}, {"x":11, "y":6}, - {"x":9, "y":7}, {"x":10, "y":7}, {"x":11, "y":7} - ] - }, - "LAYOUT_ergodox_pretty_80": { - - "layout": [ - {"x":0, "y":0.375, "w":1.5}, {"x":1.5, "y":0.375}, {"x":2.5, "y":0.125}, {"x":3.5, "y":0}, {"x":4.5, "y":0.125}, {"x":5.5, "y":0.25}, {"x":6.5, "y":0.25}, - {"x":9.5, "y":0.25}, {"x":10.5, "y":0.25}, {"x":11.5, "y":0.125}, {"x":12.5, "y":0}, {"x":13.5, "y":0.125}, {"x":14.5, "y":0.375}, {"x":15.5, "y":0.375, "w":1.5}, - - {"x":0, "y":1.375, "w":1.5}, {"x":1.5, "y":1.375}, {"x":2.5, "y":1.125}, {"x":3.5, "y":1}, {"x":4.5, "y":1.125}, {"x":5.5, "y":1.25}, {"x":6.5, "y":1.25, "h":1.5}, - {"x":9.5, "y":1.25, "h":1.5}, {"x":10.5, "y":1.25}, {"x":11.5, "y":1.125}, {"x":12.5, "y":1}, {"x":13.5, "y":1.125}, {"x":14.5, "y":1.375}, {"x":15.5, "y":1.375, "w":1.5}, - - {"x":0, "y":2.375, "w":1.5}, {"x":1.5, "y":2.375}, {"x":2.5, "y":2.125}, {"x":3.5, "y":2}, {"x":4.5, "y":2.125}, {"x":5.5, "y":2.25}, - {"x":10.5, "y":2.25}, {"x":11.5, "y":2.125}, {"x":12.5, "y":2}, {"x":13.5, "y":2.125}, {"x":14.5, "y":2.375}, {"x":15.5, "y":2.375, "w":1.5}, - - {"x":0, "y":3.375, "w":1.5}, {"x":1.5, "y":3.375}, {"x":2.5, "y":3.125}, {"x":3.5, "y":3}, {"x":4.5, "y":3.125}, {"x":5.5, "y":3.25}, {"x":6.5, "y":2.75, "h":1.5}, - {"x":9.5, "y":2.75, "h":1.5}, {"x":10.5, "y":3.25}, {"x":11.5, "y":3.125}, {"x":12.5, "y":3}, {"x":13.5, "y":3.125}, {"x":14.5, "y":3.375}, {"x":15.5, "y":3.375, "w":1.5}, - - {"x":0.5, "y":4.375}, {"x":1.5, "y":4.375}, {"x":2.5, "y":4.125}, {"x":3.5, "y":4}, {"x":4.5, "y":4.125}, - {"x":11.5, "y":4.125}, {"x":12.5, "y":4}, {"x":13.5, "y":4.125}, {"x":14.5, "y":4.375}, {"x":15.5, "y":4.375}, - - {"x":6, "y":5}, {"x":7, "y":5}, {"x":9, "y":5}, {"x":10, "y":5}, - {"x":5, "y":6}, {"x":6, "y":6}, {"x":7, "y":6}, {"x":9, "y":6}, {"x":10, "y":6}, {"x":11, "y":6}, - {"x":5, "y":7}, {"x":6, "y":7}, {"x":7, "y":7}, {"x":9, "y":7}, {"x":10, "y":7}, {"x":11, "y":7} - ] - } - } -} diff --git a/keyboards/ergodone/keymaps/default/keymap.c b/keyboards/ergodone/keymaps/default/keymap.c deleted file mode 100644 index 2fc53440113e..000000000000 --- a/keyboards/ergodone/keymaps/default/keymap.c +++ /dev/null @@ -1,199 +0,0 @@ -#include QMK_KEYBOARD_H -#include "version.h" - -#define BASE 0 // default layer -#define SYMB 1 // symbols -#define MDIA 2 // media keys - -enum custom_keycodes { - PLACEHOLDER = SAFE_RANGE, // can always be here - EPRM, - VRSN, - RGB_SLD -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* Keymap 0: Basic layer - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | Del | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | BkSp | A | S | D | F | G |------| |------| H | J | K | L |; / L2|' / Cmd | - * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| - * | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | App | LGui | | Alt |Ctrl/Esc| - * ,------|------|------| |------+--------+------. - * | | | Home | | PgUp | | | - * | Space|Backsp|------| |------| Tab |Enter | - * | |ace | End | | PgDn | | | - * `--------------------' `----------------------' - */ -// If it accepts an argument (i.e, is a function), it doesn't need KC_. -// Otherwise, it needs KC_* -[BASE] = LAYOUT_ergodox( // layer 0 : default - // left hand - KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, - KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), - KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, - KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), - LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, - ALT_T(KC_APP), KC_LGUI, - KC_HOME, - KC_SPC,KC_BSPC,KC_END, - // right hand - KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, - TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, - KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),GUI_T(KC_QUOT), - MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT, - KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, TT(SYMB), - KC_LALT, CTL_T(KC_ESC), - KC_PGUP, - KC_PGDN,KC_TAB, KC_ENT - ), -/* Keymap 1: Symbol Layer - * - * ,---------------------------------------------------. ,--------------------------------------------------. - * |Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | - * |---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------| - * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 | - * |---------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | | - * |---------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | | - * `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | EPRM | | | | | | | . | 0 | = | | - * `-----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * |Animat| | |Toggle|Solid | - * ,------|------|------| |------+------+------. - * |Bright|Bright| | | |Hue- |Hue+ | - * |ness- |ness+ |------| |------| | | - * | | | | | | | | - * `--------------------' `--------------------' - */ -// SYMBOLS -[SYMB] = LAYOUT_ergodox( - // left hand - VRSN, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, - KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS, - KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV, - KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS, - EPRM,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, - RGB_MOD,KC_TRNS, - KC_TRNS, - RGB_VAD,RGB_VAI,KC_TRNS, - // right hand - KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, - KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12, - KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS, - KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS, - KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS, - RGB_TOG, RGB_SLD, - KC_TRNS, - KC_TRNS, RGB_HUD, RGB_HUI -), -/* Keymap 2: Media and mouse keys - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | | | | | | | | | | | | | | | | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | | | MsUp | | | | | | | | | | | | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | | | | | | | | | | | Prev | Next | | | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | | | | | | - * ,------|------|------| |------+------+------. - * | | | | | | |Brwser| - * | | |------| |------| |Back | - * | | | | | | | | - * `--------------------' `--------------------' - */ -// MEDIA AND MOUSE -[MDIA] = LAYOUT_ergodox( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, - // right hand - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, - KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, - KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS, KC_WBAK -), -}; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - // dynamically generate these. - case EPRM: - if (record->event.pressed) { - eeconfig_init(); - } - return false; - break; - case VRSN: - if (record->event.pressed) { - SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); - } - return false; - break; - case RGB_SLD: - if (record->event.pressed) { - #ifdef RGBLIGHT_ENABLE - rgblight_mode(1); - #endif - } - return false; - break; - } - return true; -} - -// Runs just one time when the keyboard initializes. -void matrix_init_user(void) { - -}; - - -// Runs constantly in the background, in a loop. -void matrix_scan_user(void) { - - uint8_t layer = biton32(layer_state); - - ergodox_board_led_off(); - ergodox_right_led_1_off(); - ergodox_right_led_2_off(); - ergodox_right_led_3_off(); - switch (layer) { - // TODO: Make this relevant to the ErgoDox EZ. - case 1: - ergodox_right_led_1_on(); - break; - case 2: - ergodox_right_led_2_on(); - break; - default: - // none - break; - } - -}; diff --git a/keyboards/ergodone/keymaps/erovia/keymap.c b/keyboards/ergodone/keymaps/erovia/keymap.c deleted file mode 100644 index 697e917119ab..000000000000 --- a/keyboards/ergodone/keymaps/erovia/keymap.c +++ /dev/null @@ -1,229 +0,0 @@ -#include QMK_KEYBOARD_H -#include "version.h" -#include "bootmagic.h" - -#define QWERTY 0 // qwerty layer -#define COLEMAK 1 // colemak layer -#define FN 2 // function layer - -enum custom_keycodes { - QWRTY = SAFE_RANGE, // can always be here - CLMK, - VRSN, - FNCTN -}; - -/* false: Caps Lock LED is off - true: Caps Lock LED is on */ -bool CAPS_LED = false; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* Keymap 0: Qwerty layer - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | Copy | | Paste| 6 | 7 | 8 | 9 | 0 | Sleep | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | Tab | Q | W | E | R | T | Mute | | { | Y | U | I | O | P | \ | - * |--------+------+------+------+------+------| | | [ |------+------+------+------+------+--------| - * | Esc | A | S | D | F | G |------| |------| H | J | K | L | ; | ' | - * |--------+------+------+------+------+------| Fn1 | | } |------+------+------+------+------+--------| - * | LShift | Z | X | C | V | B | | | ] | N | M | , | . | / | RShift | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * |LCtrl | LGui | LAlt | Left | Right| | Down | Up | - | = | RCtrl | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | Caps | LGui | | Ins | Del | - * ,------|------|------| |------+--------+------. - * | | | Home | | PgUp | | | - * | Space|Backsp|------| |------| Tab |Enter | - * | |ace | End | | PgDn | | | - * `--------------------' `----------------------' - */ -// If it accepts an argument (i.e, is a function), it doesn't need KC_. -// Otherwise, it needs KC_* -[QWERTY] = LAYOUT_ergodox( // layer 0 : qwerty - // left hand - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_COPY, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_MUTE, - KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, - KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, TT(FN), - KC_LCTL, KC_LGUI, KC_LALT, KC_LEFT, KC_RGHT, - KC_CAPS, KC_LGUI, - KC_HOME, - KC_SPC, KC_BSPC, KC_END, - // right hand - KC_PASTE, KC_6, KC_7, KC_8, KC_9, KC_0, KC_SLEP, - KC_LBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, - KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOTE, - KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, - KC_DOWN, KC_UP, KC_MINS, KC_EQL, KC_RCTL, - KC_INS, KC_DEL, - KC_PGUP, - KC_PGDN, KC_TAB, KC_ENT -), -/* Keymap 1: Colemak layer - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | Copy | | Paste| 6 | 7 | 8 | 9 | 0 | Sleep | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | Tab | Q | W | F | P | B | Mute | | { | J | L | U | Y | ; | \ | - * |--------+------+------+------+------+------| | | [ |------+------+------+------+------+--------| - * | Esc | A | R | S | T | G |------| |------| M | N | E | I | O | ' | - * |--------+------+------+------+------+------| Fn1 | | } |------+------+------+------+------+--------| - * | LShift | Z | X | C | D | V | | | ] | K | H | , | . | / | RShift | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * |LCtrl | LGui | LAlt | Left | Right| | Down | Up | - | = | RCtrl | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | Caps | LGui | | Ins | Del | - * ,------|------|------| |------+--------+------. - * | | | Home | | PgUp | | | - * | Space|Backsp|------| |------| Tab |Enter | - * | |ace | End | | PgDn | | | - * `--------------------' `----------------------' - */ -[COLEMAK] = LAYOUT_ergodox( // layer 1 : colemak - // left hand - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_COPY, - KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_MUTE, - KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_G, - KC_LSPO, KC_Z, KC_X, KC_C, KC_D, KC_V, TT(FN), - KC_LCTL, KC_LGUI, KC_LALT, KC_LEFT, KC_RGHT, - KC_CAPS, KC_LGUI, - KC_HOME, - KC_SPC, KC_BSPC, KC_END, - // right hand - KC_PASTE, KC_6, KC_7, KC_8, KC_9, KC_0, KC_SLEP, - KC_LBRC, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS, - KC_M, KC_N, KC_E, KC_I, KC_O, KC_QUOTE, - KC_RBRC, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, - KC_DOWN, KC_UP, KC_MINS, KC_EQL, KC_RCTL, - KC_INS, KC_DEL, - KC_PGUP, - KC_PGDN, KC_TAB, KC_ENT -), -/* Keymap 2: Function Layer - * - * ,---------------------------------------------------. ,--------------------------------------------------. - * |Version | F1 | F2 | F3 | F4 | F5 | F11 | | F12 | F6 | F7 | F8 | F9 | F10 | | - * |---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------| - * | | | | Prev | Play | Next | | | | | | | | | | - * |---------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | | | |VolDn | VolUp|------| |------| |QWRTY | CLMK | | | | - * |---------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | | | | | | | | | | | | | | | - * `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | | | | | | | | | - * `-----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | | | | | | - * ,------|------|------| |------+------+------. - * | | | | | | | | - * | | |------| |------| | | - * | | | | | | | | - * `--------------------' `--------------------' - */ -// Functions -[FN] = LAYOUT_ergodox( - // left hand - VRSN, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, - KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, - // right hand - KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, QWRTY, CLMK, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS -), -}; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case VRSN: - if (record->event.pressed) { - SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); - } - return false; - break; - case QWRTY: - if (record->event.pressed) { - set_single_persistent_default_layer(QWERTY); - } - return false; - break; - case CLMK: - if (record->event.pressed) { - set_single_persistent_default_layer(COLEMAK); - } - return false; - break; - case KC_CAPS: - if (record->event.pressed) { - // Turn LED1 On/Off for Caps Lock - if (CAPS_LED) { - ergodox_right_led_1_off(); - CAPS_LED = false; - } else { - ergodox_right_led_1_on(); - CAPS_LED = true; - } - } - return true; - break; - } - return true; -}; - -// Set LED according to the default layer -void default_layer_led_set(void) { - switch (biton32(eeconfig_read_default_layer())) { - case COLEMAK: - // LED2 for COLEMAK - ergodox_right_led_2_on(); - break; - case QWERTY: - // LED3 for QWERTY - ergodox_right_led_3_on(); - break; - }; -}; - -// Runs just one time when the keyboard initializes. -void matrix_init_user(void) { - default_layer_led_set(); -}; - -uint32_t layer_state_set_user(uint32_t state) { - ergodox_led_all_off(); - switch (biton32(state)) { - case FN: - // Red led on Pro Micro for Fn layer - ergodox_board_led_on(); - break; - }; - - if (CAPS_LED) { - ergodox_right_led_1_on(); - } - - default_layer_led_set(); - - return state; -}; - -void suspend_power_down_user(void) { - ergodox_led_all_off(); -}; - -void suspend_wakeup_init_user(void) { - default_layer_led_set(); -}; diff --git a/keyboards/ergodone/readme.md b/keyboards/ergodone/readme.md deleted file mode 100644 index 82c1043dad21..000000000000 --- a/keyboards/ergodone/readme.md +++ /dev/null @@ -1,33 +0,0 @@ -ErgoDone -======== - -![ErgoDone](https://i.imgur.com/QERsQGQ.jpg) - -The ErgoDone is a modified version of the ErgoDox, made by K.T.E.C., with pre-soldered components. It has different wiring and uses a SparkFun Pro Micro instead of Teensy. - -- Keyboard maintainer: [Yu He](http://github.com/yuhe00) -- Hardware supported: - - ErgoDone v1.3 (tested) -- Hardware availability: - - [AliExpress](https://www.aliexpress.com/store/product/ergodone-Custom-Mechanical-Keyboard-TKG-TOOLS-PCB-programmed-Ergonomic-Keyboard-Kit-similar-with-infinity-ergodox/3034003_32830050940.html) - - [KBDfans](https://kbdfans.myshopify.com/collections/pcb/products/ergodone-keyboard-pcb-1pcs-free-shipping) - -# Building the firmware - -[Install the build tools.](https://docs.qmk.fm/#/getting_started_build_tools) - -In the root directory of the repository, build the firmware with a command like: - - make ergodone:default - -For more information on the layout option and other ones, see the [`make` guide](https://docs.qmk.fm/#/getting_started_make_guide). - -# Flashing the firmware onto the keyboard - -The ErgoDone uses a customized HID bootloader rather than the Teensy one. It doesn't need an OS driver, and the required actions before flashing are a little different than with an ErgoDox. - -1. To enter flash mode, disconnect the keyboard first. Then, on the left-hand device, in the top row, press and hold the two rightmost keys while reconnecting the keyboard. -![Ergodone Flash Mode](https://i.imgur.com/sNivAnr.jpg) -2. To flash the .hex file, use the `hid_bootloader_cli` utlity from the [TKG Toolkit](https://github.com/kairyu/tkg-toolkit) (as of 2017-10-03, only [this old version](https://github.com/kairyu/tkg-toolkit/blob/b14c67ca8bc84c07e5fc6b2e01ae4002b808243a/windows/bin/hid_bootloader_cli.exe) works under Windows): - - hid_bootloader_cli -mmcu=atmega32u4 ergodone_default.hex diff --git a/keyboards/ergodone/rules.mk b/keyboards/ergodone/rules.mk deleted file mode 100644 index acd485f2f8f4..000000000000 --- a/keyboards/ergodone/rules.mk +++ /dev/null @@ -1,38 +0,0 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = caterina - -# Build Options -# comment out to disable the options. -# -CUSTOM_MATRIX = yes # Custom matrix file for the ErgoDone -UNICODE_ENABLE = yes # Unicode -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA -USB_6KRO_ENABLE = no # USB 6key Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -SWAP_HANDS_ENABLE = no # Disable Onehand -RGBLIGHT_ENABLE = no -MIDI_ENABLE = no - -# project specific files -SRC = \ - twimaster.c \ - matrix.c \ - expander.c \ - -LAYOUTS = ergodox diff --git a/keyboards/ergodone/twimaster.c b/keyboards/ergodone/twimaster.c deleted file mode 100644 index d6f3f7840512..000000000000 --- a/keyboards/ergodone/twimaster.c +++ /dev/null @@ -1,208 +0,0 @@ -/************************************************************************* -* Title: I2C master library using hardware TWI interface -* Author: Peter Fleury http://jump.to/fleury -* File: $Id: twimaster.c,v 1.3 2005/07/02 11:14:21 Peter Exp $ -* Software: AVR-GCC 3.4.3 / avr-libc 1.2.3 -* Target: any AVR device with hardware TWI -* Usage: API compatible with I2C Software Library i2cmaster.h -**************************************************************************/ -#include -#include - -#include "i2cmaster.h" - - -/* define CPU frequency in Mhz here if not defined in Makefile */ -#ifndef F_CPU -#define F_CPU 16000000UL -#endif - -/* I2C clock in Hz */ -#define SCL_CLOCK 400000L - - -/************************************************************************* - Initialization of the I2C bus interface. Need to be called only once -*************************************************************************/ -void i2c_init(void) -{ - /* initialize TWI clock - * minimal values in Bit Rate Register (TWBR) and minimal Prescaler - * bits in the TWI Status Register should give us maximal possible - * I2C bus speed - about 444 kHz - * - * for more details, see 20.5.2 in ATmega16/32 secification - */ - - TWSR = 0; /* no prescaler */ - TWBR = 10; /* must be >= 10 for stable operation */ - -}/* i2c_init */ - - -/************************************************************************* - Issues a start condition and sends address and transfer direction. - return 0 = device accessible, 1= failed to access device -*************************************************************************/ -unsigned char i2c_start(unsigned char address) -{ - uint8_t twst; - - // send START condition - TWCR = (1<. #define RGB_MATRIX_LED_PROCESS_LIMIT 5 #define RGB_MATRIX_LED_FLUSH_LIMIT 26 -#define RGB_DISABLE_WHEN_USB_SUSPENDED true +#define RGB_DISABLE_WHEN_USB_SUSPENDED +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // #define RGBLIGHT_COLOR_LAYER_0 0x00, 0x00, 0xFF /* #define RGBLIGHT_COLOR_LAYER_1 0x00, 0x00, 0xFF */ diff --git a/keyboards/ergodox_ez/ergodox_ez.c b/keyboards/ergodox_ez/ergodox_ez.c index 4d356752113c..49f690fa70a3 100644 --- a/keyboards/ergodox_ez/ergodox_ez.c +++ b/keyboards/ergodox_ez/ergodox_ez.c @@ -44,29 +44,29 @@ extern inline void ergodox_led_all_set(uint8_t n); keyboard_config_t keyboard_config; -bool i2c_initialized = 0; +bool i2c_initialized = 0; i2c_status_t mcp23018_status = 0x20; void matrix_init_kb(void) { - // keyboard LEDs (see "PWM on ports OC1(A|B|C)" in "teensy-2-0.md") + // keyboard LEDs (see "PWM on ports OC1(A|B|C)" in "teensy-2-0.md") TCCR1A = 0b10101001; // set and configure fast PWM TCCR1B = 0b00001001; // set and configure fast PWM // (tied to Vcc for hardware convenience) - DDRB &= ~(1<<4); // set B(4) as input - PORTB &= ~(1<<4); // set B(4) internal pull-up disabled + DDRB &= ~(1 << 4); // set B(4) as input + PORTB &= ~(1 << 4); // set B(4) internal pull-up disabled // unused pins - C7, D4, D5, D7, E6 // set as input with internal pull-up enabled - DDRC &= ~(1<<7); - DDRD &= ~(1<<5 | 1<<4); - DDRE &= ~(1<<6); - PORTC |= (1<<7); - PORTD |= (1<<5 | 1<<4); - PORTE |= (1<<6); + DDRC &= ~(1 << 7); + DDRD &= ~(1 << 5 | 1 << 4); + DDRE &= ~(1 << 6); + PORTC |= (1 << 7); + PORTD |= (1 << 5 | 1 << 4); + PORTE |= (1 << 6); keyboard_config.raw = eeconfig_read_kb(); - ergodox_led_all_set((uint8_t)keyboard_config.led_level * 255 / 4 ); + ergodox_led_all_set((uint8_t)keyboard_config.led_level * 255 / 4); #ifdef RGB_MATRIX_ENABLE if (keyboard_config.rgb_matrix_enable) { rgb_matrix_set_flags(LED_FLAG_ALL); @@ -80,8 +80,7 @@ void matrix_init_kb(void) { matrix_init_user(); } -void ergodox_blink_all_leds(void) -{ +void ergodox_blink_all_leds(void) { ergodox_led_all_off(); ergodox_led_all_set(LED_BRIGHTNESS_DEFAULT); ergodox_right_led_1_on(); @@ -94,17 +93,17 @@ void ergodox_blink_all_leds(void) ergodox_left_led_1_on(); _delay_ms(50); if (!mcp23018_status) { - mcp23018_status = ergodox_left_leds_update(); + mcp23018_status = ergodox_left_leds_update(); } ergodox_left_led_2_on(); _delay_ms(50); if (!mcp23018_status) { - mcp23018_status = ergodox_left_leds_update(); + mcp23018_status = ergodox_left_leds_update(); } ergodox_left_led_3_on(); _delay_ms(50); if (!mcp23018_status) { - mcp23018_status = ergodox_left_leds_update(); + mcp23018_status = ergodox_left_leds_update(); } #endif ergodox_right_led_1_off(); @@ -116,21 +115,21 @@ void ergodox_blink_all_leds(void) _delay_ms(50); ergodox_left_led_1_off(); if (!mcp23018_status) { - mcp23018_status = ergodox_left_leds_update(); + mcp23018_status = ergodox_left_leds_update(); } _delay_ms(50); ergodox_left_led_2_off(); if (!mcp23018_status) { - mcp23018_status = ergodox_left_leds_update(); + mcp23018_status = ergodox_left_leds_update(); } _delay_ms(50); ergodox_left_led_3_off(); if (!mcp23018_status) { - mcp23018_status = ergodox_left_leds_update(); + mcp23018_status = ergodox_left_leds_update(); } #endif - //ergodox_led_all_on(); + // ergodox_led_all_on(); //_delay_ms(333); ergodox_led_all_off(); } @@ -156,27 +155,35 @@ uint8_t init_mcp23018(void) { // - unused : input : 1 // - input : input : 1 // - driving : output : 0 - mcp23018_status = i2c_start(I2C_ADDR_WRITE, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(IODIRA, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(0b00000000, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(0b00111111, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out; + mcp23018_status = i2c_start(I2C_ADDR_WRITE, ERGODOX_EZ_I2C_TIMEOUT); + if (mcp23018_status) goto out; + mcp23018_status = i2c_write(IODIRA, ERGODOX_EZ_I2C_TIMEOUT); + if (mcp23018_status) goto out; + mcp23018_status = i2c_write(0b00000000, ERGODOX_EZ_I2C_TIMEOUT); + if (mcp23018_status) goto out; + mcp23018_status = i2c_write(0b00111111, ERGODOX_EZ_I2C_TIMEOUT); + if (mcp23018_status) goto out; i2c_stop(); // set pull-up // - unused : on : 1 // - input : on : 1 // - driving : off : 0 - mcp23018_status = i2c_start(I2C_ADDR_WRITE, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(GPPUA, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(0b00000000, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(0b00111111, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out; + mcp23018_status = i2c_start(I2C_ADDR_WRITE, ERGODOX_EZ_I2C_TIMEOUT); + if (mcp23018_status) goto out; + mcp23018_status = i2c_write(GPPUA, ERGODOX_EZ_I2C_TIMEOUT); + if (mcp23018_status) goto out; + mcp23018_status = i2c_write(0b00000000, ERGODOX_EZ_I2C_TIMEOUT); + if (mcp23018_status) goto out; + mcp23018_status = i2c_write(0b00111111, ERGODOX_EZ_I2C_TIMEOUT); + if (mcp23018_status) goto out; out: i2c_stop(); #ifdef LEFT_LEDS if (!mcp23018_status) mcp23018_status = ergodox_left_leds_update(); -#endif // LEFT_LEDS +#endif // LEFT_LEDS // SREG=sreg_prev; @@ -185,12 +192,12 @@ uint8_t init_mcp23018(void) { #ifdef LEFT_LEDS uint8_t ergodox_left_leds_update(void) { - if (mcp23018_status) { // if there was an error + if (mcp23018_status) { // if there was an error return mcp23018_status; } -#define LEFT_LED_1_SHIFT 7 // in MCP23018 port B -#define LEFT_LED_2_SHIFT 6 // in MCP23018 port B -#define LEFT_LED_3_SHIFT 7 // in MCP23018 port A +# define LEFT_LED_1_SHIFT 7 // in MCP23018 port B +# define LEFT_LED_2_SHIFT 6 // in MCP23018 port B +# define LEFT_LED_3_SHIFT 7 // in MCP23018 port A // set logical value (doesn't matter on inputs) // - unused : hi-Z : 1 @@ -200,48 +207,43 @@ uint8_t ergodox_left_leds_update(void) { if (mcp23018_status) goto out; mcp23018_status = i2c_write(OLATA, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(0b11111111 - & ~(ergodox_left_led_3<event.pressed) { - keyboard_config.led_level++; - if (keyboard_config.led_level > 4) { + keyboard_config.led_level++; + if (keyboard_config.led_level > 4) { keyboard_config.led_level = 0; - } - ergodox_led_all_set((uint8_t)keyboard_config.led_level * 255 / 4 ); - eeconfig_update_kb(keyboard_config.raw); - layer_state_set_kb(layer_state); + } + ergodox_led_all_set((uint8_t)keyboard_config.led_level * 255 / 4); + eeconfig_update_kb(keyboard_config.raw); + layer_state_set_kb(layer_state); } break; -#ifdef RGB_MATRIX_ENABLE +# ifdef RGB_MATRIX_ENABLE case TOGGLE_LAYER_COLOR: if (record->event.pressed) { keyboard_config.disable_layer_led ^= 1; - if (keyboard_config.disable_layer_led) - rgb_matrix_set_color_all(0, 0, 0); + if (keyboard_config.disable_layer_led) rgb_matrix_set_color_all(0, 0, 0); eeconfig_update_kb(keyboard_config.raw); } break; case RGB_TOG: if (record->event.pressed) { - switch (rgb_matrix_get_flags()) { - case LED_FLAG_ALL: { - rgb_matrix_set_flags(LED_FLAG_NONE); - keyboard_config.rgb_matrix_enable = false; - rgb_matrix_set_color_all(0, 0, 0); - } - break; - default: { - rgb_matrix_set_flags(LED_FLAG_ALL); - keyboard_config.rgb_matrix_enable = true; - } - break; - } - eeconfig_update_kb(keyboard_config.raw); + switch (rgb_matrix_get_flags()) { + case LED_FLAG_ALL: { + rgb_matrix_set_flags(LED_FLAG_NONE); + keyboard_config.rgb_matrix_enable = false; + rgb_matrix_set_color_all(0, 0, 0); + } break; + default: { + rgb_matrix_set_flags(LED_FLAG_ALL); + keyboard_config.rgb_matrix_enable = true; + } break; + } + eeconfig_update_kb(keyboard_config.raw); } return false; -#endif +# endif } return process_record_user(keycode, record); } #endif void eeconfig_init_kb(void) { // EEPROM is getting reset! - keyboard_config.raw = 0; - keyboard_config.led_level = 4; + keyboard_config.raw = 0; + keyboard_config.led_level = 4; keyboard_config.rgb_matrix_enable = true; eeconfig_update_kb(keyboard_config.raw); eeconfig_init_user(); diff --git a/keyboards/ergodox_ez/info.json b/keyboards/ergodox_ez/info.json index 6c5598b0837e..1682f4bb4514 100644 --- a/keyboards/ergodox_ez/info.json +++ b/keyboards/ergodox_ez/info.json @@ -2,9 +2,6 @@ "keyboard_name": "ErgoDox EZ", "url": "ergodox-ez.com", "maintainer": "ZSA via Drashna", - "width": 17, - "height": 8, - "layouts": { "LAYOUT_ergodox": { "layout": [ diff --git a/keyboards/ergodox_ez/keymaps/bepo_tm_style/keymap.c b/keyboards/ergodox_ez/keymaps/bepo_tm_style/keymap.c index b9c65944f63e..a5b107baae84 100755 --- a/keyboards/ergodox_ez/keymaps/bepo_tm_style/keymap.c +++ b/keyboards/ergodox_ez/keymaps/bepo_tm_style/keymap.c @@ -54,19 +54,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Layer 0: basic keys. [BASE] = LAYOUT_ergodox( /* left hand */ - BP_DLR, BP_DQOT, BP_LGIL, BP_RGIL, BP_LPRN, BP_RPRN, KC_DEL, - KC_TAB, BP_B, BP_ECUT, BP_P, BP_O, BP_EGRV, KC_BSPC, + BP_DLR, BP_DQUO, BP_LDAQ, BP_RDAQ, BP_LPRN, BP_RPRN, KC_DEL, + KC_TAB, BP_B, BP_EACU, BP_P, BP_O, BP_EGRV, KC_BSPC, KC_LSFT, BP_A, BP_U, BP_I, BP_E, BP_COMM, KC_LCTRL, BP_AGRV, BP_Y, BP_X, BP_DOT, BP_K, KC_ENT, - ESC_FN, BP_ECRC, KC_LGUI, KC_LALT, SPC_RALT, + ESC_FN, BP_ECIR, KC_LGUI, KC_LALT, SPC_RALT, TT(SWAP), KC_MNXT, KC_MPLY, TT(FN), TT(NUMS), KC_MPRV, /* right hand */ KC_DEL, BP_AT, BP_PLUS, BP_MINS, BP_SLSH, BP_ASTR, BP_EQL, - KC_BSPC, BP_DCRC, BP_V, BP_D, BP_L, BP_J, BP_Z, + KC_BSPC, BP_DCIR, BP_V, BP_D, BP_L, BP_J, BP_Z, BP_C, BP_T, BP_S, BP_R, BP_N, M_RSFT, - KC_ENT, BP_APOS, BP_Q, BP_G, BP_H, BP_F, W_RCTL, + KC_ENT, BP_QUOT, BP_Q, BP_G, BP_H, BP_F, W_RCTL, SPC_RALT, KC_LALT, TT(SYSLEDS), BP_CCED, PERC_FN, KC_LEFT, KC_RIGHT, KC_UP, @@ -191,7 +191,7 @@ static bool is_macro1_recording = false; // There is a global 'layer_state' variable but it is set after the call // to layer_state_set_user(). static uint32_t current_layer_state = 0; -uint32_t layer_state_set_user(uint32_t state); +layer_state_t layer_state_set_user(layer_state_t state); // Method called at the end of the tap dance on the TAP_MACRO key. That key is // used to start recording a macro (double tap or more), to stop recording (any @@ -315,7 +315,7 @@ void led_set_user(uint8_t usb_led) { } } -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { current_layer_state = state; swap_hands = LAYER_ON(SWAP); diff --git a/keyboards/ergodox_ez/keymaps/bepo_tm_style/rules.mk b/keyboards/ergodox_ez/keymaps/bepo_tm_style/rules.mk index 6d20fcf762e1..9c24dadd78f9 100755 --- a/keyboards/ergodox_ez/keymaps/bepo_tm_style/rules.mk +++ b/keyboards/ergodox_ez/keymaps/bepo_tm_style/rules.mk @@ -7,9 +7,8 @@ KEY_LOCK_ENABLE = yes # Enable the KC_LOCK key TAP_DANCE_ENABLE = yes # Enable the tap dance feature. CONSOLE_ENABLE = yes # Console for debug -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite UNICODE_ENABLE = no SLEEP_LED_ENABLE = no -API_SYSEX_ENABLE = no RGBLIGHT_ENABLE = no RGBLIGHT_ANIMATION = no diff --git a/keyboards/ergodox_ez/keymaps/bpruitt-goddard/keymap.c b/keyboards/ergodox_ez/keymaps/bpruitt-goddard/keymap.c index ec77b6aa0f6f..229ece0d74b1 100644 --- a/keyboards/ergodox_ez/keymaps/bpruitt-goddard/keymap.c +++ b/keyboards/ergodox_ez/keymaps/bpruitt-goddard/keymap.c @@ -99,7 +99,7 @@ static bool is_macro1_recording = false; // There is a global 'layer_state' variable but it is set after the call // to layer_state_set_user(). static uint32_t current_layer_state = 0; -uint32_t layer_state_set_user(uint32_t state); +layer_state_t layer_state_set_user(layer_state_t state); // Method called at the end of the tap dance on the TAP_MACRO key. That key is // used to start recording a macro (double tap or more), to stop recording (any @@ -202,7 +202,7 @@ void led_3_off(void) { ergodox_right_led_3_off(); } -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { current_layer_state = state; if (is_macro1_recording) { diff --git a/keyboards/ergodox_ez/keymaps/bpruitt-goddard/rules.mk b/keyboards/ergodox_ez/keymaps/bpruitt-goddard/rules.mk index 6ed55e72b4ae..a7f524fa430e 100644 --- a/keyboards/ergodox_ez/keymaps/bpruitt-goddard/rules.mk +++ b/keyboards/ergodox_ez/keymaps/bpruitt-goddard/rules.mk @@ -2,14 +2,13 @@ MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = yes # USB Nkey Rollover - for issues, see github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -ONEHAND_ENABLE = yes # Allow swapping hands of keyboard +SWAP_HANDS_ENABLE = yes # Allow swapping hands of keyboard KEY_LOCK_ENABLE = yes # Enable the KC_LOCK key TAP_DANCE_ENABLE = yes # Enable the tap dance feature. CONSOLE_ENABLE = yes # Console for debug -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite UNICODE_ENABLE = no SLEEP_LED_ENABLE = no -API_SYSEX_ENABLE = no RGBLIGHT_ENABLE = no RGBLIGHT_ANIMATION = no diff --git a/keyboards/ergodox_ez/keymaps/colemak_es_osx/keymap.c b/keyboards/ergodox_ez/keymaps/colemak_es_osx/keymap.c index 0abd028a0186..a505fc2b62b3 100644 --- a/keyboards/ergodox_ez/keymaps/colemak_es_osx/keymap.c +++ b/keyboards/ergodox_ez/keymaps/colemak_es_osx/keymap.c @@ -76,7 +76,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [BASE] = LAYOUT_ergodox( // left hand - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, ES_LESS, + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, ES_LABK, KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_HOME, KC_CAPS, KC_A, KC_R, KC_S, KC_T, KC_D, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_GRV, @@ -88,7 +88,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // right hand ES_IEXL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, - KC_END, KC_J, KC_L, KC_U, KC_Y, ES_NTIL, ES_APOS, + KC_END, KC_J, KC_L, KC_U, KC_Y, ES_NTIL, ES_QUOT, KC_H, KC_N, KC_E, KC_I, KC_O, KC_ENT, ES_MINS, KC_K, KC_M, KC_COMM, KC_DOT, KC_UP, KC_RSFT, GUI_T(ES_ACUT), ALT_T(KC_BSLS), KC_LEFT, KC_DOWN, KC_RIGHT, @@ -358,7 +358,7 @@ void led_3_on(void) { ergodox_right_led_3_set(max_led_value); } -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { if(layer_state_cmp(state ,IDEA)) { led_1_on(); diff --git a/keyboards/ergodox_ez/keymaps/default/keymap.c b/keyboards/ergodox_ez/keymaps/default/keymap.c index 9079e48fcb3a..3c0ef320a42f 100644 --- a/keyboards/ergodox_ez/keymaps/default/keymap.c +++ b/keyboards/ergodox_ez/keymaps/default/keymap.c @@ -2,20 +2,20 @@ #include "version.h" enum layers { - BASE, // default layer - SYMB, // symbols + BASE, // default layer + SYMB, // symbols MDIA, // media keys }; enum custom_keycodes { #ifdef ORYX_CONFIGURATOR - VRSN = EZ_SAFE_RANGE, + VRSN = EZ_SAFE_RANGE, #else - VRSN = SAFE_RANGE, + VRSN = SAFE_RANGE, #endif - RGB_SLD }; +// clang-format off const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 0: Basic layer * @@ -77,7 +77,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV, KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS, KC_TRNS, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_TRNS, KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS, EEP_RST, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DOT, KC_0, KC_EQL, KC_TRNS, - RGB_MOD, KC_TRNS, RGB_TOG, RGB_SLD, + RGB_MOD, KC_TRNS, RGB_TOG, RGB_M_P, KC_TRNS, KC_TRNS, RGB_VAD, RGB_VAI, KC_TRNS, KC_TRNS, RGB_HUD, RGB_HUI ), @@ -115,94 +115,90 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_WBAK ), }; +// clang-format on bool process_record_user(uint16_t keycode, keyrecord_t *record) { - if (record->event.pressed) { - switch (keycode) { - case VRSN: - SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); - return false; - #ifdef RGBLIGHT_ENABLE - case RGB_SLD: - rgblight_mode(1); - return false; - #endif + if (record->event.pressed) { + switch (keycode) { + case VRSN: + SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); + return false; + } } - } - return true; + return true; } // Runs just one time when the keyboard initializes. void keyboard_post_init_user(void) { #ifdef RGBLIGHT_COLOR_LAYER_0 - rgblight_setrgb(RGBLIGHT_COLOR_LAYER_0); + rgblight_setrgb(RGBLIGHT_COLOR_LAYER_0); #endif }; // Runs whenever there is a layer state change. layer_state_t layer_state_set_user(layer_state_t state) { - ergodox_board_led_off(); - ergodox_right_led_1_off(); - ergodox_right_led_2_off(); - ergodox_right_led_3_off(); + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); - uint8_t layer = get_highest_layer(state); - switch (layer) { - case 0: - #ifdef RGBLIGHT_COLOR_LAYER_0 - rgblight_setrgb(RGBLIGHT_COLOR_LAYER_0); - #endif - break; - case 1: - ergodox_right_led_1_on(); - #ifdef RGBLIGHT_COLOR_LAYER_1 - rgblight_setrgb(RGBLIGHT_COLOR_LAYER_1); - #endif - break; - case 2: - ergodox_right_led_2_on(); - #ifdef RGBLIGHT_COLOR_LAYER_2 - rgblight_setrgb(RGBLIGHT_COLOR_LAYER_2); - #endif - break; - case 3: - ergodox_right_led_3_on(); - #ifdef RGBLIGHT_COLOR_LAYER_3 - rgblight_setrgb(RGBLIGHT_COLOR_LAYER_3); - #endif - break; - case 4: - ergodox_right_led_1_on(); - ergodox_right_led_2_on(); - #ifdef RGBLIGHT_COLOR_LAYER_4 - rgblight_setrgb(RGBLIGHT_COLOR_LAYER_4); - #endif - break; - case 5: - ergodox_right_led_1_on(); - ergodox_right_led_3_on(); - #ifdef RGBLIGHT_COLOR_LAYER_5 - rgblight_setrgb(RGBLIGHT_COLOR_LAYER_5); - #endif - break; - case 6: - ergodox_right_led_2_on(); - ergodox_right_led_3_on(); - #ifdef RGBLIGHT_COLOR_LAYER_6 - rgblight_setrgb(RGBLIGHT_COLOR_LAYER_6); - #endif - break; - case 7: - ergodox_right_led_1_on(); - ergodox_right_led_2_on(); - ergodox_right_led_3_on(); - #ifdef RGBLIGHT_COLOR_LAYER_7 - rgblight_setrgb(RGBLIGHT_COLOR_LAYER_7); - #endif - break; - default: - break; + uint8_t layer = get_highest_layer(state); + switch (layer) { + case 0: +#ifdef RGBLIGHT_COLOR_LAYER_0 + rgblight_setrgb(RGBLIGHT_COLOR_LAYER_0); +#endif + break; + case 1: + ergodox_right_led_1_on(); +#ifdef RGBLIGHT_COLOR_LAYER_1 + rgblight_setrgb(RGBLIGHT_COLOR_LAYER_1); +#endif + break; + case 2: + ergodox_right_led_2_on(); +#ifdef RGBLIGHT_COLOR_LAYER_2 + rgblight_setrgb(RGBLIGHT_COLOR_LAYER_2); +#endif + break; + case 3: + ergodox_right_led_3_on(); +#ifdef RGBLIGHT_COLOR_LAYER_3 + rgblight_setrgb(RGBLIGHT_COLOR_LAYER_3); +#endif + break; + case 4: + ergodox_right_led_1_on(); + ergodox_right_led_2_on(); +#ifdef RGBLIGHT_COLOR_LAYER_4 + rgblight_setrgb(RGBLIGHT_COLOR_LAYER_4); +#endif + break; + case 5: + ergodox_right_led_1_on(); + ergodox_right_led_3_on(); +#ifdef RGBLIGHT_COLOR_LAYER_5 + rgblight_setrgb(RGBLIGHT_COLOR_LAYER_5); +#endif + break; + case 6: + ergodox_right_led_2_on(); + ergodox_right_led_3_on(); +#ifdef RGBLIGHT_COLOR_LAYER_6 + rgblight_setrgb(RGBLIGHT_COLOR_LAYER_6); +#endif + break; + case 7: + ergodox_right_led_1_on(); + ergodox_right_led_2_on(); + ergodox_right_led_3_on(); +#ifdef RGBLIGHT_COLOR_LAYER_7 + rgblight_setrgb(RGBLIGHT_COLOR_LAYER_7); +#endif + break; + default: + break; } - return state; + return state; }; diff --git a/keyboards/ergodox_ez/keymaps/default_osx/keymap.c b/keyboards/ergodox_ez/keymaps/default_osx/keymap.c index 3f52528f8b06..73b1077b83b3 100644 --- a/keyboards/ergodox_ez/keymaps/default_osx/keymap.c +++ b/keyboards/ergodox_ez/keymaps/default_osx/keymap.c @@ -138,11 +138,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -// Runs just one time when the keyboard initializes. -void matrix_init_user(void) { - -}; - // Runs constantly in the background, in a loop. void matrix_scan_user(void) { diff --git a/keyboards/ergodox_ez/keymaps/ericgebhart/keymap.c b/keyboards/ergodox_ez/keymaps/ericgebhart/keymap.c index dc33e4e0a9b1..55bf4209fdef 100644 --- a/keyboards/ergodox_ez/keymaps/ericgebhart/keymap.c +++ b/keyboards/ergodox_ez/keymaps/ericgebhart/keymap.c @@ -175,7 +175,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Right hand MDIA_SYMB_KP_LAYERS, ___SYMBOL_BEPO_R___, BP_EQL, - BP_DCRC, ___BEPO_FR_R1___, BP_W, + BP_DCIR, ___BEPO_FR_R1___, BP_W, /* */ ___BEPO_FR_R2___, BP_CCED, BP_C, ___BEPO_FR_R3___, KC_RSFT, diff --git a/keyboards/ergodox_ez/keymaps/hacker_dvorak/config.h b/keyboards/ergodox_ez/keymaps/hacker_dvorak/config.h index a0ba655ede1c..da2082078738 100644 --- a/keyboards/ergodox_ez/keymaps/hacker_dvorak/config.h +++ b/keyboards/ergodox_ez/keymaps/hacker_dvorak/config.h @@ -14,7 +14,7 @@ #undef IGNORE_MOD_TAP_INTERRUPT #define IGNORE_MOD_TAP_INTERRUPT -#define RGB_DISABLE_WHEN_USB_SUSPENDED true +#define RGB_DISABLE_WHEN_USB_SUSPENDED #undef FORCE_NKRO #define FORCE_NKRO diff --git a/keyboards/ergodox_ez/keymaps/hacker_dvorak/rules.mk b/keyboards/ergodox_ez/keymaps/hacker_dvorak/rules.mk index 184a90228e4e..9da5278ed916 100644 --- a/keyboards/ergodox_ez/keymaps/hacker_dvorak/rules.mk +++ b/keyboards/ergodox_ez/keymaps/hacker_dvorak/rules.mk @@ -21,8 +21,6 @@ SWAP_HANDS_ENABLE = no # Allow swapping hands of keyboard. # SLEEP_LED_ENABLE = no # Turn off leds when computer is sleeping. # KEY_LOCK_ENABLE = no # (+1730b) # CONSOLE_ENABLE = no # Console for debug(+400b) -# BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000b) -# API_SYSEX_ENABLE = no # MIDI_ENABLE = no # BLUETOOTH_ENABLE = no # AUDIO_ENABLE = no diff --git a/keyboards/ergodox_ez/keymaps/hacker_dvorak/user/layer_set_state_user.c b/keyboards/ergodox_ez/keymaps/hacker_dvorak/user/layer_set_state_user.c index c0b3b9c9951f..fd022681b0d4 100644 --- a/keyboards/ergodox_ez/keymaps/hacker_dvorak/user/layer_set_state_user.c +++ b/keyboards/ergodox_ez/keymaps/hacker_dvorak/user/layer_set_state_user.c @@ -1,5 +1,5 @@ -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { uint8_t layer = biton32(state); switch (layer) { diff --git a/keyboards/ergodox_ez/keymaps/heartrobotninja/rules.mk b/keyboards/ergodox_ez/keymaps/heartrobotninja/rules.mk index 6f40259b61c8..3cd837d56913 100644 --- a/keyboards/ergodox_ez/keymaps/heartrobotninja/rules.mk +++ b/keyboards/ergodox_ez/keymaps/heartrobotninja/rules.mk @@ -1,4 +1,4 @@ -BOOTMAGIC_ENABLE=no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite COMMAND_ENABLE=no SLEEP_LED_ENABLE=no NKRO_ENABLE = yes diff --git a/keyboards/ergodox_ez/keymaps/ifohancroft/config.h b/keyboards/ergodox_ez/keymaps/ifohancroft/config.h new file mode 100644 index 000000000000..fcc7c11be79d --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/ifohancroft/config.h @@ -0,0 +1,23 @@ +/* Copyright 2021 IFo Hancroft + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +// place overrides here +#define USB_POLLING_INTERVAL_MS 1 +#define FORCE_NKRO +#undef DEBOUNCE +#define DEBOUNCE 5 diff --git a/keyboards/ergodox_ez/keymaps/ifohancroft/keymap.c b/keyboards/ergodox_ez/keymaps/ifohancroft/keymap.c new file mode 100644 index 000000000000..27524b178270 --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/ifohancroft/keymap.c @@ -0,0 +1,157 @@ +/* Copyright 2021 IFo Hancroft + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* Default Layer + * *---------------------------------------------------------------------* *---------------------------------------------------------------------* + * | ` | 1 | 2 | 3 | 4 | 5 | - | | = | 6 | 7 | 8 | 9 | 0 | Del | + * |---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------| + * | Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | \ | + * |---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------| + * | ESC | A | S | D | F | G | | | | H | J | K | L | ; | ' | + * |---------+---------+---------+---------+---------+---------+---------* *---------+---------+---------+---------+---------+---------+---------| + * | Shift | Z | X | C | V | B | | N | M | , | . | / | Shift | + * |---------+---------+---------+---------+---------+---------* *---------+---------+---------+---------+---------+---------| + * | Ctrl | Super | Alt | TT(3) | MO(2) | | MO(2) | Left | Down | Up | Right | + * *-------------------------------------------------* *-------------------------------------------------* + * + * *-------------------* *-------------------* + * | | TG(1) | | | | + * *---------+---------+---------| |---------+---------+---------* + * | | | | | | | | + * | Bckspc | Enter |---------| |---------| Enter | Space | + * | | | PgDn | | PgUp | | | + * *---------+---------+---------* *---------+---------+---------* + */ + + LAYOUT_ergodox_pretty( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_NO, KC_NO, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, TT(3), MO(2), MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, + + KC_NO, TG(1), KC_NO, KC_NO, + KC_NO, KC_NO, + KC_BSPC, KC_ENT, KC_PGDN, KC_PGUP, KC_ENT, KC_SPC + ), + + /* Gaming Layer + * *---------------------------------------------------------------------* *---------------------------------------------------------------------* + * | | | | | | | 6 | | | | | | | | | + * |---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------| + * | | | | | | | | | | | | | | | | + * |---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------| + * | | | | | | | | | | | | | | | | + * |---------+---------+---------+---------+---------+---------+---------* *---------+---------+---------+---------+---------+---------+---------| + * | | | | | | | | | | | | | | + * |---------+---------+---------+---------+---------+---------* *---------+---------+---------+---------+---------+---------| + * | | | | | | | | | | | | + * *-------------------------------------------------* *-------------------------------------------------* + * + * *-------------------* *-------------------* + * | | | | | | + * *---------+---------+---------| |---------+---------+---------* + * | | | | | | | | + * | Space | |---------| |---------| | | + * | | | | | | | | + * *---------+---------+---------* *---------+---------+---------* + */ + + LAYOUT_ergodox_pretty( + _______, _______, _______, _______, _______, _______, KC_6, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, + _______, _______, + KC_SPC, _______, _______, _______, _______, _______ + ), + + /* Function Keys Layer + * *---------------------------------------------------------------------* *---------------------------------------------------------------------* + * | | F1 | F2 | F3 | F4 | F5 | F11 | | F12 | F6 | F7 | F8 | F9 | F10 | | + * |---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------| + * | | | Up | | | | | | | | | | | | | + * |---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------| + * | | Left | Down | Right | | | | | | Left | Down | Up | Right | | | + * |---------+---------+---------+---------+---------+---------+---------* *---------+---------+---------+---------+---------+---------+---------| + * | | | | | | | | | | | | | | + * |---------+---------+---------+---------+---------+---------* *---------+---------+---------+---------+---------+---------| + * | | | | | | | | | | | | + * *-------------------------------------------------* *-------------------------------------------------* + * + * *-------------------* *-------------------* + * | | | | | | + * *---------+---------+---------| |---------+---------+---------* + * | | | | | | | | + * | | |---------| |---------| | | + * | | | | | | | | + * *---------+---------+---------* *---------+---------+---------* + */ + + LAYOUT_ergodox_pretty( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, + _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, + _______, _______, + _______, _______, _______, _______, _______, _______ + ), + + /* CAD Layer + * *---------------------------------------------------------------------* *---------------------------------------------------------------------* + * | Del | 0 | 9 | 8 | 7 | 6 | = | | | | | | | | | + * |---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------| + * | \ | P | O | I | U | Y | ] | | | | | | | | | + * |---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------| + * | ' | ; | L | K | J | H | | | | | | | | | | + * |---------+---------+---------+---------+---------+---------+---------* *---------+---------+---------+---------+---------+---------+---------| + * | | / | . | , | M | N | | | | | | | | + * |---------+---------+---------+---------+---------+---------* *---------+---------+---------+---------+---------+---------| + * | | | | | | | | | | | | + * *-------------------------------------------------* *-------------------------------------------------* + * + * *-------------------* *-------------------* + * | | | | | | + * *---------+---------+---------| |---------+---------+---------* + * | | | | | | | | + * | Space | |---------| |---------| | | + * | | | PgUp | | | | | + * *---------+---------+---------* *---------+---------+---------* + */ + + LAYOUT_ergodox_pretty( + KC_DEL, KC_0, KC_9, KC_8, KC_7, KC_6, KC_EQL, _______, _______, _______, _______, _______, _______, _______, + KC_BSLS, KC_P, KC_O, KC_I, KC_U, KC_Y, KC_RBRC, _______, _______, _______, _______, _______, _______, _______, + KC_QUOT, KC_SCLN, KC_L, KC_K, KC_J, KC_H, _______, _______, _______, _______, _______, _______, + _______, KC_SLSH, KC_DOT, KC_COMM, KC_M, KC_N, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, + _______, _______, + KC_SPC, _______, KC_PGUP, _______, _______, _______ + ) + +}; diff --git a/keyboards/ergodox_ez/keymaps/ifohancroft/readme.md b/keyboards/ergodox_ez/keymaps/ifohancroft/readme.md new file mode 100644 index 000000000000..6bda1f2fc552 --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/ifohancroft/readme.md @@ -0,0 +1,19 @@ +![IFo Hancroft ErgoDox EZ Layout Image](https://i.imgur.com/v0kRHX5.png) + +# IFo Hancroft's ErgoDox EZ Layout + +- Layer 0: A Standard ANSI QWERTY Layer. +- Layer 1: A Gaming Layer. It replaces the Backspace with a Space, and the Dash with a 6, so you can play CS:GO without needing to lift your right hand from the mouse. +- Layer 2: A function layer. It contains the F1-F12 keys and arrows on WASD. +- Layer 3: A CAD Layer. It is basically a mirrored version of the right hand side, so you can use CAD without needing to lift your right hand from the the mouse. + +This keymap also does the following: + +- Sets the polling rate of the keyboard to 1ms +- Sets the debounce time to 5ms +- NKRO (Forced on) +- Disables: + - Mouse Key + - Extra Key + - Unicode + - Swap Hands diff --git a/keyboards/ergodox_ez/keymaps/ifohancroft/rules.mk b/keyboards/ergodox_ez/keymaps/ifohancroft/rules.mk new file mode 100644 index 000000000000..bf0efc77e5c6 --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/ifohancroft/rules.mk @@ -0,0 +1,4 @@ +MOUSEKEY_ENABLE = no +EXTRAKEY_ENABLE = no +UNICODE_ENABLE = no +SWAP_HANDS_ENABLE = no diff --git a/keyboards/ergodox_ez/keymaps/lukaus/keymap.c b/keyboards/ergodox_ez/keymaps/lukaus/keymap.c index 40156b3ff393..5d797beb1850 100644 --- a/keyboards/ergodox_ez/keymaps/lukaus/keymap.c +++ b/keyboards/ergodox_ez/keymaps/lukaus/keymap.c @@ -8,7 +8,7 @@ enum custom_keycodes { PLACEHOLDER = SAFE_RANGE, // can always be here - // Programmer's Dvorak "macros" : + // Programmer's Dvorak "macros" : // To be paired with get_mods to enable both // Shift functionality and Programmer's Dvorak @@ -50,19 +50,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Programmer's Dvorak layer [0] = LAYOUT_ergodox( DVP_ESC, DVP_AMPR, DVP_LBRACKET, DVP_LCBR, DVP_RCBR, DVP_LPRN, DVP_AT, - KC_TAB, KC_SCOLON, KC_COMMA, KC_DOT, KC_P, KC_Y, MO(4), - MO(3), KC_A, KC_O, KC_E, KC_U, KC_I, + KC_TAB, KC_SCOLON, KC_COMMA, KC_DOT, KC_P, KC_Y, MO(4), + MO(3), KC_A, KC_O, KC_E, KC_U, KC_I, KC_LSHIFT, KC_QUOTE, KC_Q, KC_J, KC_K, KC_X, KC_HYPR, KC_LCTL, KC_LALT, KC_LGUI, LCTL(KC_C), LCTL(KC_V), - + KC_MS_BTN3, TO(1), KC_HOME, KC_SPACE, MO(4), KC_END, - + DVP_EQUAL, DVP_ASTERISK, DVP_RPRN, DVP_PLUS, DVP_RBRACKET, DVP_EXLM, DVP_HASH, TT(4), KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLASH, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINUS, KC_MEH, KC_B, KC_M, KC_W, KC_V, KC_Z, MO(3), KC_DELETE, KC_BSLASH, KC_RGUI, KC_RCTL, LCTL(KC_F), - + KC_F17, KC_F18, KC_PGUP, KC_PGDOWN, KC_ENTER, KC_BSPACE ), // Gaming QWERTY layer @@ -72,9 +72,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { MO(3), KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_F24, KC_LCTL, KC_F8, KC_LALT, KC_F14, KC_F13, - + KC_HOME, TO(0), KC_F15, KC_SPACE, KC_LCTL, KC_LALT, - + KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, KC_F24, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLASH, KC_H, KC_J, KC_K, KC_L, KC_SCOLON, KC_QUOTE, @@ -89,9 +89,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { MO(3), KC_1, KC_2, KC_3, KC_4, KC_5, KC_LSHIFT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_NO, KC_LCTL, KC_F8, KC_LALT, KC_I, KC_S, - + KC_MS_BTN3, TO(1), KC_HOME, KC_SPACE, KC_LSHIFT, KC_END, - + KC_NO, KC_NUMLOCK, KC_KP_SLASH, KC_KP_ASTERISK, KC_KP_MINUS, KC_NO, KC_NO, TO(0), KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_PLUS, KC_NO, KC_NO, KC_KP_4, KC_KP_5, KC_KP_6, KC_EQUAL, KC_NO, KC_NO, @@ -115,20 +115,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRANSPARENT, KC_TRANSPARENT, MEH_T(KC_NO), KC_CALCULATOR, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_RSHIFT, KC_DELETE, KC_INSERT, KC_TRANSPARENT, KC_F19, KC_RCTL, - + TO(2),KC_TRANSPARENT,KC_TRANSPARENT,LALT(KC_F10),KC_ENTER,KC_BSPACE ), // Keypad, Lighting, and Mouse emulation layer - ///* + ///* [4] = LAYOUT_ergodox( KC_ESCAPE, KC_NO, KC_NO, KC_MS_BTN3, KC_NO, KC_NO, KC_NO, KC_TAB, KC_NO, KC_MS_BTN2, KC_MS_UP, KC_MS_BTN1, KC_MS_WH_UP, TO(0), KC_NO, KC_NO, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_WH_DOWN, KC_LSHIFT, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, TO(5), KC_LCTL, KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT, - + KC_MS_BTN3, TO(1), KC_HOME, KC_SPACE, KC_LSHIFT, KC_END, - + KC_NO, KC_NUMLOCK, KC_KP_SLASH, KC_KP_ASTERISK, KC_CALCULATOR, KC_NO, RGB_VAI, TO(0), KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_MINUS, KC_NO, RGB_VAD, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_PLUS, KC_NO, RGB_HUI, @@ -146,9 +146,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_NO, KC_NO, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_WH_DOWN, KC_LSHIFT, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, TO(5), KC_LCTL, KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT, - + KC_MS_BTN3, TO(1), KC_HOME, KC_SPACE, KC_LSHIFT, KC_END, - + KC_NO, KC_I, KC_NUMLOCK, KC_KP_SLASH, KC_KP_ASTERISK, KC_CALCULATOR, RGB_VAI, TO(0), KC_G, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_MINUS, RGB_VAD, SHFT_COMMA, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_PLUS, RGB_HUI, @@ -162,11 +162,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; void led_set_keymap(uint8_t usb_led) { - + } void matrix_init_user (void) { - + } @@ -176,7 +176,7 @@ bool right_shift_down = false; bool numlock = false; bool process_record_user(uint16_t keycode, keyrecord_t *record) { - + switch (keycode) { case KC_LSHIFT: if (record->event.pressed) @@ -205,7 +205,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { break; case KC_NUMLOCK: - if (record->event.pressed) + if (record->event.pressed) { numlock = !numlock; } @@ -213,7 +213,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case DVP_ESC: if (left_shift_down || right_shift_down) - { + { if(record->event.pressed) SEND_STRING("~"); return false; @@ -229,7 +229,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { break; case DVP_AMPR: - if (left_shift_down || right_shift_down) + if (left_shift_down || right_shift_down) { if(record->event.pressed) { @@ -244,7 +244,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; - break; + break; case SHFT_DOT: if(record->event.pressed) @@ -257,7 +257,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { break; case DVP_LBRACKET: - if (left_shift_down || right_shift_down) + if (left_shift_down || right_shift_down) { if(record->event.pressed) { @@ -283,13 +283,13 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return false; return false; - break; - + break; + case DVP_LCBR: - if (left_shift_down || right_shift_down) + if (left_shift_down || right_shift_down) { if(record->event.pressed) - { + { if(left_shift_down) unregister_code(KC_LSHIFT); if(right_shift_down) @@ -297,7 +297,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { register_code(KC_5); unregister_code(KC_5); - + if(left_shift_down) register_code(KC_LSHIFT); if(right_shift_down) @@ -310,10 +310,10 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { SEND_STRING("{"); } return false; - break; - + break; + case DVP_RCBR: - if (left_shift_down || right_shift_down) + if (left_shift_down || right_shift_down) { if(record->event.pressed) { @@ -324,7 +324,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { register_code(KC_3); unregister_code(KC_3); - + if(left_shift_down) register_code(KC_LSHIFT); if(right_shift_down) @@ -337,10 +337,10 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { SEND_STRING("}"); } return false; - break; - + break; + case DVP_LPRN: - if (left_shift_down || right_shift_down) + if (left_shift_down || right_shift_down) { if(record->event.pressed) { @@ -351,7 +351,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { register_code(KC_1); unregister_code(KC_1); - + if(left_shift_down) register_code(KC_LSHIFT); if(right_shift_down) @@ -364,10 +364,10 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { SEND_STRING("("); } return false; - break; - + break; + case DVP_AT: - if (left_shift_down || right_shift_down) + if (left_shift_down || right_shift_down) { if(record->event.pressed) { @@ -380,7 +380,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { register_code(KC_6); unregister_code(KC_6); unregister_code(KC_LSHIFT); - + if(left_shift_down) register_code(KC_LSHIFT); if(right_shift_down) @@ -393,11 +393,11 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { SEND_STRING("@"); } return false; - break; + break; + - case DVP_EQUAL: - if (left_shift_down || right_shift_down) + if (left_shift_down || right_shift_down) { if(record->event.pressed) { @@ -408,7 +408,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { register_code(KC_9); unregister_code(KC_9); - + if(left_shift_down) register_code(KC_LSHIFT); if(right_shift_down) @@ -421,10 +421,10 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { SEND_STRING("="); } return false; - break; - + break; + case DVP_ASTERISK: - if (left_shift_down || right_shift_down) + if (left_shift_down || right_shift_down) { if(record->event.pressed) { @@ -435,7 +435,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { register_code(KC_0); unregister_code(KC_0); - + if(left_shift_down) register_code(KC_LSHIFT); if(right_shift_down) @@ -448,10 +448,10 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { SEND_STRING("*"); } return false; - break; - + break; + case DVP_RPRN: - if (left_shift_down || right_shift_down) + if (left_shift_down || right_shift_down) { if(record->event.pressed) { @@ -462,7 +462,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { register_code(KC_2); unregister_code(KC_2); - + if(left_shift_down) register_code(KC_LSHIFT); if(right_shift_down) @@ -475,10 +475,10 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { SEND_STRING(")"); } return false; - break; - + break; + case DVP_PLUS: - if (left_shift_down || right_shift_down) + if (left_shift_down || right_shift_down) { if(record->event.pressed) { @@ -489,7 +489,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { register_code(KC_4); unregister_code(KC_4); - + if(left_shift_down) register_code(KC_LSHIFT); if(right_shift_down) @@ -502,10 +502,10 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { SEND_STRING("+"); } return false; - break; - + break; + case DVP_RBRACKET: - if (left_shift_down || right_shift_down) + if (left_shift_down || right_shift_down) { if(record->event.pressed) { @@ -516,7 +516,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { register_code(KC_6); unregister_code(KC_6); - + if(left_shift_down) register_code(KC_LSHIFT); if(right_shift_down) @@ -529,10 +529,10 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { SEND_STRING("]"); } return false; - break; - + break; + case DVP_EXLM: - if (left_shift_down || right_shift_down) + if (left_shift_down || right_shift_down) { if(record->event.pressed) { @@ -543,7 +543,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { register_code(KC_8); unregister_code(KC_8); - + if(left_shift_down) register_code(KC_LSHIFT); if(right_shift_down) @@ -556,10 +556,10 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { SEND_STRING("!"); } return false; - break; - + break; + case DVP_HASH: - if (left_shift_down || right_shift_down) + if (left_shift_down || right_shift_down) { if(record->event.pressed) { @@ -570,7 +570,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { register_code(KC_GRAVE); unregister_code(KC_GRAVE); - + if(left_shift_down) register_code(KC_LSHIFT); if(right_shift_down) @@ -583,11 +583,11 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { SEND_STRING("#"); } return false; - break; + break; - // Russian + // Russian case RU_2: - if (left_shift_down || right_shift_down) + if (left_shift_down || right_shift_down) { if(record->event.pressed) { @@ -598,7 +598,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { register_code(KC_GRAVE); unregister_code(KC_GRAVE); - + if(left_shift_down) register_code(KC_LSHIFT); if(right_shift_down) @@ -611,9 +611,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { SEND_STRING("#"); } return false; - break; + break; case RU_3: - if (left_shift_down || right_shift_down) + if (left_shift_down || right_shift_down) { if(record->event.pressed) { @@ -624,7 +624,7 @@ case RU_3: register_code(KC_GRAVE); unregister_code(KC_GRAVE); - + if(left_shift_down) register_code(KC_LSHIFT); if(right_shift_down) @@ -637,9 +637,9 @@ case RU_3: SEND_STRING("#"); } return false; - break; + break; case RU_4: - if (left_shift_down || right_shift_down) + if (left_shift_down || right_shift_down) { if(record->event.pressed) { @@ -650,7 +650,7 @@ case RU_4: register_code(KC_GRAVE); unregister_code(KC_GRAVE); - + if(left_shift_down) register_code(KC_LSHIFT); if(right_shift_down) @@ -663,9 +663,9 @@ case RU_4: SEND_STRING("#"); } return false; - break; + break; case RU_6: - if (left_shift_down || right_shift_down) + if (left_shift_down || right_shift_down) { if(record->event.pressed) { @@ -676,7 +676,7 @@ case RU_6: register_code(KC_GRAVE); unregister_code(KC_GRAVE); - + if(left_shift_down) register_code(KC_LSHIFT); if(right_shift_down) @@ -689,9 +689,9 @@ case RU_6: SEND_STRING("#"); } return false; - break; + break; case RU_7: - if (left_shift_down || right_shift_down) + if (left_shift_down || right_shift_down) { if(record->event.pressed) { @@ -702,7 +702,7 @@ case RU_7: register_code(KC_GRAVE); unregister_code(KC_GRAVE); - + if(left_shift_down) register_code(KC_LSHIFT); if(right_shift_down) @@ -715,10 +715,10 @@ case RU_7: SEND_STRING("#"); } return false; - break; + break; case RU_DOT: - if (left_shift_down || right_shift_down) + if (left_shift_down || right_shift_down) { if(record->event.pressed) { @@ -729,7 +729,7 @@ case RU_7: register_code(KC_GRAVE); unregister_code(KC_GRAVE); - + if(left_shift_down) register_code(KC_LSHIFT); if(right_shift_down) @@ -742,7 +742,7 @@ case RU_7: SEND_STRING("#"); } return false; - break; + break; case RGB_SLD: @@ -751,7 +751,7 @@ case RU_7: } return false; break; - + case RGB_FF0000: if (record->event.pressed) { #ifdef RGBLIGHT_ENABLE @@ -762,7 +762,7 @@ case RU_7: } return false; break; - + case RGB_008000: if (record->event.pressed) { #ifdef RGBLIGHT_ENABLE @@ -773,7 +773,7 @@ case RU_7: } return false; break; - + case RGB_0000FF: if (record->event.pressed) { #ifdef RGBLIGHT_ENABLE @@ -784,7 +784,7 @@ case RU_7: } return false; break; - + case RGB_FFFFFF: if (record->event.pressed) { #ifdef RGBLIGHT_ENABLE @@ -795,7 +795,7 @@ case RU_7: } return false; break; - + case RGB_800080: if (record->event.pressed) { #ifdef RGBLIGHT_ENABLE @@ -806,12 +806,12 @@ case RU_7: } return false; break; - + } return true; } -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { uint8_t layer = biton32(state); @@ -823,7 +823,7 @@ uint32_t layer_state_set_user(uint32_t state) { case 0: break; case 1: - ergodox_right_led_1_on(); + ergodox_right_led_1_on(); break; case 2: ergodox_right_led_2_on(); diff --git a/keyboards/ergodox_ez/keymaps/nathanvercaemert/keymap.c b/keyboards/ergodox_ez/keymaps/nathanvercaemert/keymap.c index e06d0b769fe9..18d6e667cc6a 100644 --- a/keyboards/ergodox_ez/keymaps/nathanvercaemert/keymap.c +++ b/keyboards/ergodox_ez/keymaps/nathanvercaemert/keymap.c @@ -20,8 +20,8 @@ #define KC_PC_CUT LCTL(KC_X) #define KC_PC_COPY LCTL(KC_C) #define KC_PC_PASTE LCTL(KC_V) -#define ES_LESS_MAC KC_GRAVE -#define ES_GRTR_MAC LSFT(KC_GRAVE) +#define ES_LABK_MAC KC_GRAVE +#define ES_RABK_MAC LSFT(KC_GRAVE) #define ES_BSLS_MAC ALGR(KC_6) #define NO_PIPE_ALT KC_GRAVE #define NO_BSLS_ALT KC_EQUAL @@ -217,7 +217,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { uint8_t layer = biton32(state); ergodox_board_led_off(); ergodox_right_led_1_off(); diff --git a/keyboards/ergodox_ez/keymaps/nfriend/keymap.c b/keyboards/ergodox_ez/keymaps/nfriend/keymap.c index ccea63c97ba1..1d12093babe4 100644 --- a/keyboards/ergodox_ez/keymaps/nfriend/keymap.c +++ b/keyboards/ergodox_ez/keymaps/nfriend/keymap.c @@ -1056,7 +1056,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return true; } -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { uint8_t layer = biton32(state); ergodox_board_led_off(); diff --git a/keyboards/ergodox_ez/keymaps/nfriend/rules.mk b/keyboards/ergodox_ez/keymaps/nfriend/rules.mk index 7e037f6414f2..721d8036010c 100644 --- a/keyboards/ergodox_ez/keymaps/nfriend/rules.mk +++ b/keyboards/ergodox_ez/keymaps/nfriend/rules.mk @@ -1,6 +1,6 @@ # Set any rules.mk overrides for your specific keymap here. # See rules at https://docs.qmk.fm/#/config_options?id=the-rulesmk-file -DEBOUNCE_TYPE = eager_pk +DEBOUNCE_TYPE = sym_eager_pk LTO_ENABLE = yes COMMAND_ENABLE = no UNICODE_ENABLE = no diff --git a/keyboards/ergodox_ez/keymaps/rgb_layer/keymap.c b/keyboards/ergodox_ez/keymaps/rgb_layer/keymap.c index 2c90c02a6b63..3e607edb39e6 100644 --- a/keyboards/ergodox_ez/keymaps/rgb_layer/keymap.c +++ b/keyboards/ergodox_ez/keymaps/rgb_layer/keymap.c @@ -223,7 +223,7 @@ void matrix_scan_user(void) { }; -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { ergodox_board_led_off(); ergodox_right_led_1_off(); ergodox_right_led_2_off(); diff --git a/keyboards/ergodox_ez/keymaps/skug/keymap.c b/keyboards/ergodox_ez/keymaps/skug/keymap.c index bebb8c6a6f8f..1446ea7466f6 100644 --- a/keyboards/ergodox_ez/keymaps/skug/keymap.c +++ b/keyboards/ergodox_ez/keymaps/skug/keymap.c @@ -27,9 +27,6 @@ #define MDIA 2 // media keys #define ARRW 3 // arrow + soon mouse -#define SE_LT SE_LESS -#define SE_GT LSFT(SE_LESS) - enum custom_keycodes { PLACEHOLDER = SAFE_RANGE, // can always be here EPRM, @@ -73,15 +70,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), MO(ARRW), KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSPO, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_WBAK, - CTL_T(SE_APOS), SE_ACUT, KC_LALT, KC_BSPC, KC_SPC, - SE_LESS, KC_END, + CTL_T(SE_QUOT), SE_ACUT, KC_LALT, KC_BSPC, KC_SPC, + SE_LABK, KC_END, KC_LEFT, KC_RIGHT, KC_PGDN, CTL_T(KC_ENT), ALT_T(KC_ESC), KC_LGUI, // right hand TO(ARRW), KC_6, KC_7, KC_8, KC_9, KC_0, SE_PLUS, - TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, SE_AA, - KC_H, KC_J, KC_K, KC_L, LT(MDIA, SE_OSLH), LT(SYMB, SE_AE), + TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, SE_ARNG, + KC_H, KC_J, KC_K, KC_L, LT(MDIA, SE_ODIA), LT(SYMB, SE_ADIA), KC_WFWD, KC_N, KC_M, KC_COMM, KC_DOT, SE_MINS, KC_RSPC, KC_SPC, KC_BSPC, KC_ALGR, SE_ASTR, CTL_T(SE_TILD), KC_HOME, SE_CIRC, @@ -116,7 +113,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______,KC_EXLM,SE_AT, SE_LCBR,SE_RCBR,SE_PIPE,_______, _______,KC_HASH,SE_DLR, SE_LPRN,SE_RPRN,SE_GRV, _______,KC_PERC,SE_CIRC,SE_LBRC,SE_RBRC,SE_TILD,_______, - EPRM, _______, _______, SE_LT , SE_GT, + EPRM, _______, _______, SE_LABK , SE_RABK, _______,_______, _______,_______,_______, _______,_______,_______, diff --git a/keyboards/ergodox_ez/keymaps/stamm/keymap.c b/keyboards/ergodox_ez/keymaps/stamm/keymap.c index 890fbdc02311..19eecae03d03 100644 --- a/keyboards/ergodox_ez/keymaps/stamm/keymap.c +++ b/keyboards/ergodox_ez/keymaps/stamm/keymap.c @@ -24,8 +24,8 @@ #define KC_PC_CUT LCTL(KC_X) #define KC_PC_COPY LCTL(KC_C) #define KC_PC_PASTE LCTL(KC_V) -#define ES_LESS_MAC KC_GRAVE -#define ES_GRTR_MAC LSFT(KC_GRAVE) +#define ES_LABK_MAC KC_GRAVE +#define ES_RABK_MAC LSFT(KC_GRAVE) #define ES_BSLS_MAC ALGR(KC_6) #define NO_PIPE_ALT KC_GRAVE #define NO_BSLS_ALT KC_EQUAL diff --git a/keyboards/ergodox_ez/keymaps/testing/keymap.c b/keyboards/ergodox_ez/keymaps/testing/keymap.c index a90458cefe4d..5c1fc4af284e 100644 --- a/keyboards/ergodox_ez/keymaps/testing/keymap.c +++ b/keyboards/ergodox_ez/keymaps/testing/keymap.c @@ -60,7 +60,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return true; } -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { uint8_t layer = biton32(layer_state); diff --git a/keyboards/ergodox_ez/rules.mk b/keyboards/ergodox_ez/rules.mk index 1000ef78633c..a8d94247c5b9 100644 --- a/keyboards/ergodox_ez/rules.mk +++ b/keyboards/ergodox_ez/rules.mk @@ -2,13 +2,6 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = halfkay # If you have Left LEDs (see @@ -19,7 +12,7 @@ BOOTLOADER = halfkay # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 @@ -28,12 +21,10 @@ CUSTOM_MATRIX = lite # Custom matrix file for the ErgoDox EZ NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work UNICODE_ENABLE = yes # Unicode SWAP_HANDS_ENABLE= yes # Allow swapping hands of keyboard -SLEEP_LED_ENABLE = no -API_SYSEX_ENABLE = no RGB_MATRIX_ENABLE = no # enable later RGB_MATRIX_DRIVER = IS31FL3731 -DEBOUNCE_TYPE = eager_pr +DEBOUNCE_TYPE = sym_eager_pr # project specific files SRC += matrix.c \ diff --git a/keyboards/ergodox_ez/util/compile_keymap.py b/keyboards/ergodox_ez/util/compile_keymap.py index f427d6fd8020..b447ecaf5ce4 100755 --- a/keyboards/ergodox_ez/util/compile_keymap.py +++ b/keyboards/ergodox_ez/util/compile_keymap.py @@ -584,11 +584,6 @@ def unicode_macro_cases(config): for macro_id, uc_hex in config['unicode_macros'].items(): hi = int(uc_hex, 16) >> 8 lo = int(uc_hex, 16) & 0xFF - unimacro_keys = ", ".join( - "T({})".format( - "KP_" + digit if digit.isdigit() else digit - ) for digit in uc_hex - ) yield UNICODE_MACRO_TEMPLATE.format( macro_id=macro_id, hi=hi, lo=lo ) diff --git a/keyboards/ergodox_ez/util/keymap_beautifier/KeymapBeautifier.py b/keyboards/ergodox_ez/util/keymap_beautifier/KeymapBeautifier.py index f55bdaf2d7d5..9beee379610b 100755 --- a/keyboards/ergodox_ez/util/keymap_beautifier/KeymapBeautifier.py +++ b/keyboards/ergodox_ez/util/keymap_beautifier/KeymapBeautifier.py @@ -227,7 +227,6 @@ def grab_next_n_columns(self, n_columns, input_layout, layer_keys = None, from_b self.layer_keys_pointer = 0 begin = self.layer_keys_pointer - end = begin + n_columns return self.layer_keys[self.layer_keys_pointer-n_keys:self.layer_keys_pointer] key_coordinates_counter = 0 diff --git a/keyboards/ergodox_infinity/board_is31fl3731c.h b/keyboards/ergodox_infinity/board_is31fl3731c.h deleted file mode 100644 index b2ed2b003103..000000000000 --- a/keyboards/ergodox_infinity/board_is31fl3731c.h +++ /dev/null @@ -1,110 +0,0 @@ -/* -Copyright 2016 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 . -*/ - -#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 875ed9e65c6c..000000000000 --- 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 a64f3f4a1394..e6f1b81f5476 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 . */ -#ifndef INFINITY_ERGODOX_CONFIG_H -#define INFINITY_ERGODOX_CONFIG_H - +#pragma once /* USB Device descriptor parameter */ #define VENDOR_ID 0x1c11 @@ -54,7 +52,19 @@ along with this program. If not, see . /* key matrix size */ #define MATRIX_ROWS 18 #define MATRIX_COLS 5 -#define LOCAL_MATRIX_ROWS 9 + +// For some reason, the rows are colums in the schematic, and vice versa +#define MATRIX_ROW_PINS { B2, B3, B18, B19, C0, C9, C10, C11, D0 } +#define MATRIX_COL_PINS { D1, D4, D5, D6, D7 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION ROW2COL + +/* Serial config (for communication between halves) */ +#define SERIAL_USART_DRIVER SD1 // Only true for the master half +#define SERIAL_USART_CONFIG { (SERIAL_USART_SPEED), } // Only field is speed +#define SERIAL_USART_FULL_DUPLEX /* number of backlight levels */ #define BACKLIGHT_LEVELS 3 @@ -62,16 +72,72 @@ along with this program. If not, see . #define LED_BRIGHTNESS_LO 100 #define LED_BRIGHTNESS_HI 255 +/* LED matrix driver */ +#define LED_DRIVER_ADDR_1 0x74 +#define LED_DRIVER_COUNT 1 +#define DRIVER_LED_TOTAL 76 +#define LED_MATRIX_SPLIT { 38, 38 } +#define LED_DISABLE_WHEN_USB_SUSPENDED + +// LED Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_led_matrix?id=led-matrix-effects +#define ENABLE_LED_MATRIX_ALPHAS_MODS +#define ENABLE_LED_MATRIX_BREATHING +#define ENABLE_LED_MATRIX_BAND +#define ENABLE_LED_MATRIX_BAND_PINWHEEL +#define ENABLE_LED_MATRIX_BAND_SPIRAL +#define ENABLE_LED_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_LED_MATRIX_CYCLE_UP_DOWN +#define ENABLE_LED_MATRIX_CYCLE_OUT_IN +#define ENABLE_LED_MATRIX_DUAL_BEACON +#if defined(LED_MATRIX_KEYREACTIVE_ENABLED) +# define ENABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_LED_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_LED_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_LED_MATRIX_SPLASH +# define ENABLE_LED_MATRIX_MULTISPLASH +#endif +#define ENABLE_LED_MATRIX_WAVE_LEFT_RIGHT +#define ENABLE_LED_MATRIX_WAVE_UP_DOWN + +/* i2c (for LED matrix) */ +#define I2C1_CLOCK_SPEED 400000 +#define I2C1_SCL_PAL_MODE PAL_MODE_ALTERNATIVE_2 +#define I2C1_SDA_PAL_MODE PAL_MODE_ALTERNATIVE_2 +#define I2C1_SCL_PIN B0 +#define I2C1_SDA_PIN B1 + +#ifdef ST7565_ENABLE +/* LCD driver */ +# define ST7565_A0_PIN C7 +# define ST7565_RST_PIN C8 +# define ST7565_SS_PIN C4 +# define ST7565_SPI_CLK_DIVISOR 2 +# define ST7565_CONTRAST 22 +# define ST7565_DISPLAY_WIDTH 128 +# define ST7565_DISPLAY_HEIGHT 32 + +/* SPI (for LCD) */ +# define SPI_DRIVER SPID1 +# define SPI_SCK_PIN C5 +# define SPI_SCK_PAL_MODE PAL_MODE_ALTERNATIVE_2 +# define SPI_MOSI_PIN C6 +# define SPI_MOSI_PAL_MODE PAL_MODE_ALTERNATIVE_2 +# define SPI_MISO_PIN A4 // Just an unused pin, the "normal" MISO pin (C7) is used for other things +# define SPI_MISO_PAL_MODE PAL_MODE_ALTERNATIVE_7 // Default for A4 +#endif + /* define if matrix has ghost */ //#define MATRIX_HAS_GHOST /* Set 0 if debouncing isn't needed */ #define DEBOUNCE 5 -#define SERIAL_LINK_BAUD 562500 -#define SERIAL_LINK_THREAD_PRIORITY (NORMALPRIO - 1) - -#define VISUALIZER_USER_DATA_SIZE 16 /* * Feature disable options * These options are also useful to firmware size reduction. @@ -89,5 +155,3 @@ along with this program. If not, see . //#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 97b628470bfa..e6ac2c4559c6 100644 --- a/keyboards/ergodox_infinity/ergodox_infinity.c +++ b/keyboards/ergodox_infinity/ergodox_infinity.c @@ -1,28 +1,8 @@ #include QMK_KEYBOARD_H #include #include -#include "serial_link/system/serial_link.h" -#ifdef VISUALIZER_ENABLE -#include "lcd_backlight.h" -#endif - -#ifdef WPM_ENABLE -# include "serial_link/protocol/transport.h" -# include "wpm.h" - -MASTER_TO_ALL_SLAVES_OBJECT(current_wpm, uint8_t); -static remote_object_t* remote_objects[] = { - REMOTE_OBJECT(current_wpm), -}; -static uint8_t last_sent_wpm = 0; -#endif - -void init_serial_link_hal(void) { - PORTA->PCR[1] = PORTx_PCRn_PE | PORTx_PCRn_PS | PORTx_PCRn_PFE | PORTx_PCRn_MUX(2); - PORTA->PCR[2] = PORTx_PCRn_DSE | PORTx_PCRn_SRE | PORTx_PCRn_MUX(2); - PORTE->PCR[0] = PORTx_PCRn_PE | PORTx_PCRn_PS | PORTx_PCRn_PFE | PORTx_PCRn_MUX(3); - PORTE->PCR[1] = PORTx_PCRn_DSE | PORTx_PCRn_SRE | PORTx_PCRn_MUX(3); -} +#include +#include "eeconfig.h" #define RED_PIN 1 #define GREEN_PIN 2 @@ -52,7 +32,7 @@ void init_serial_link_hal(void) { void lcd_backlight_hal_init(void) { // Setup Backlight SIM->SCGC6 |= SIM_SCGC6_FTM0; - FTM0->CNT = 0; // Reset counter + FTM0->CNT = 0; // Reset counter // PWM Period // 16-bit maximum @@ -60,25 +40,25 @@ void lcd_backlight_hal_init(void) { // Set FTM to PWM output - Edge Aligned, Low-true pulses #define CNSC_MODE FTM_SC_CPWMS | FTM_SC_PS(4) | FTM_SC_CLKS(0) - CHANNEL_RED.CnSC = CNSC_MODE; + CHANNEL_RED.CnSC = CNSC_MODE; CHANNEL_GREEN.CnSC = CNSC_MODE; - CHANNEL_BLUE.CnSC = CNSC_MODE; + CHANNEL_BLUE.CnSC = CNSC_MODE; // System clock, /w prescalar setting FTM0->SC = FTM_SC_CLKS(1) | FTM_SC_PS(PRESCALAR_DEFINE); - CHANNEL_RED.CnV = 0; + CHANNEL_RED.CnV = 0; CHANNEL_GREEN.CnV = 0; - CHANNEL_BLUE.CnV = 0; + CHANNEL_BLUE.CnV = 0; RGB_PORT_GPIO->PDDR |= (1 << RED_PIN); RGB_PORT_GPIO->PDDR |= (1 << GREEN_PIN); RGB_PORT_GPIO->PDDR |= (1 << BLUE_PIN); #define RGB_MODE PORTx_PCRn_SRE | PORTx_PCRn_DSE | PORTx_PCRn_MUX(4) - RGB_PORT->PCR[RED_PIN] = RGB_MODE; + RGB_PORT->PCR[RED_PIN] = RGB_MODE; RGB_PORT->PCR[GREEN_PIN] = RGB_MODE; - RGB_PORT->PCR[BLUE_PIN] = RGB_MODE; + RGB_PORT->PCR[BLUE_PIN] = RGB_MODE; } static uint16_t cie_lightness(uint16_t v) { @@ -89,12 +69,11 @@ static uint16_t cie_lightness(uint16_t v) { // Y = (L* / 902.3) if L* <= 8 // Y = ((L* + 16) / 116)^3 if L* > 8 - float l = 100.0f * (v / 65535.0f); + float l = 100.0f * (v / 65535.0f); float y = 0.0f; if (l <= 8.0f) { - y = l / 902.3; - } - else { + y = l / 902.3; + } else { y = ((l + 16.0f) / 116.0f); y = y * y * y; if (y > 1.0f) { @@ -104,109 +83,76 @@ static uint16_t cie_lightness(uint16_t v) { return y * 65535.0f; } -void lcd_backlight_hal_color(uint16_t r, uint16_t g, uint16_t b) { - CHANNEL_RED.CnV = cie_lightness(r); +void ergodox_infinity_lcd_color(uint16_t r, uint16_t g, uint16_t b) { + CHANNEL_RED.CnV = cie_lightness(r); CHANNEL_GREEN.CnV = cie_lightness(g); - CHANNEL_BLUE.CnV = cie_lightness(b); + CHANNEL_BLUE.CnV = cie_lightness(b); } -__attribute__ ((weak)) -void matrix_init_user(void) { -} +__attribute__ ((weak)) void matrix_init_user(void) {} -__attribute__ ((weak)) -void matrix_scan_user(void) { -} +__attribute__ ((weak)) void matrix_scan_user(void) {} -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); +void keyboard_pre_init_kb() { +#ifdef LED_MATRIX_ENABLE + // Turn on LED controller + setPinOutput(B16); + writePinHigh(B16); +#endif // The backlight always has to be initialized, otherwise it will stay lit -#ifndef VISUALIZER_ENABLE lcd_backlight_hal_init(); +#ifdef ST7565_ENABLE + ergodox_infinity_lcd_color(UINT16_MAX / 2, UINT16_MAX / 2, UINT16_MAX / 2); #endif -#ifdef WPM_ENABLE - add_remote_objects(remote_objects, sizeof(remote_objects) / sizeof(remote_object_t*)); -#endif + keyboard_pre_init_user(); } -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - -#ifdef WPM_ENABLE - if (is_serial_link_master()) { - uint8_t current_wpm = get_current_wpm(); - if (current_wpm != last_sent_wpm) { - *begin_write_current_wpm() = current_wpm; - end_write_current_wpm(); - last_sent_wpm = current_wpm; - } - } else if (is_serial_link_connected()) { - uint8_t* new_wpm = read_current_wpm(); - if (new_wpm) { - set_current_wpm(*new_wpm); - } - } +void matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + +#ifdef LED_MATRIX_ENABLE + /* + * Since K20x is stuck with a 32 byte EEPROM (see tmk_core/common/chibios/eeprom_teensy.c), + * and neither led_matrix_eeconfig.speed or .flags fit in this boundary, just force their values to default on boot. + */ +# if !defined(LED_MATRIX_STARTUP_SPD) +# define LED_MATRIX_STARTUP_SPD UINT8_MAX / 2 +# endif + led_matrix_set_speed(LED_MATRIX_STARTUP_SPD); + led_matrix_set_flags(LED_FLAG_ALL); #endif - matrix_scan_user(); -} -bool is_keyboard_master(void) { - return is_serial_link_master(); + matrix_init_user(); } -__attribute__ ((weak)) -void ergodox_board_led_on(void){ -} +__attribute__ ((weak)) void ergodox_board_led_on(void) {} -__attribute__ ((weak)) -void ergodox_right_led_1_on(void){ -} +__attribute__ ((weak)) void ergodox_right_led_1_on(void) {} -__attribute__ ((weak)) -void ergodox_right_led_2_on(void){ -} +__attribute__ ((weak)) void ergodox_right_led_2_on(void) {} -__attribute__ ((weak)) -void ergodox_right_led_3_on(void){ -} +__attribute__ ((weak)) void ergodox_right_led_3_on(void) {} -__attribute__ ((weak)) -void ergodox_board_led_off(void){ -} +__attribute__ ((weak)) void ergodox_board_led_off(void) {} -__attribute__ ((weak)) -void ergodox_right_led_1_off(void){ -} +__attribute__ ((weak)) void ergodox_right_led_1_off(void) {} -__attribute__ ((weak)) -void ergodox_right_led_2_off(void){ -} +__attribute__ ((weak)) void ergodox_right_led_2_off(void) {} -__attribute__ ((weak)) -void ergodox_right_led_3_off(void){ -} +__attribute__ ((weak)) void ergodox_right_led_3_off(void) {} -__attribute__ ((weak)) -void ergodox_right_led_1_set(uint8_t n) { -} +__attribute__ ((weak)) void ergodox_right_led_1_set(uint8_t n) {} -__attribute__ ((weak)) -void ergodox_right_led_2_set(uint8_t n) { -} +__attribute__ ((weak)) void ergodox_right_led_2_set(uint8_t n) {} -__attribute__ ((weak)) -void ergodox_right_led_3_set(uint8_t n) { -} +__attribute__ ((weak)) void ergodox_right_led_3_set(uint8_t n) {} #ifdef SWAP_HANDS_ENABLE __attribute__ ((weak)) const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { - {{0, 9}, {1, 9}, {2, 9}, {3, 9}, {4, 9}}, + {{0, 9}, {1, 9}, {2, 9}, {3, 9}, {4, 9}}, {{0, 10}, {1, 10}, {2, 10}, {3, 10}, {4, 10}}, {{0, 11}, {1, 11}, {2, 11}, {3, 11}, {4, 11}}, {{0, 12}, {1, 12}, {2, 12}, {3, 12}, {4, 12}}, @@ -226,3 +172,192 @@ const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { {{0, 8}, {1, 8}, {2, 8}, {3, 8}, {4, 8}}, }; #endif + +#ifdef LED_MATRIX_ENABLE +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { +// The numbers in the comments are the led numbers DXX on the PCB +/* Refer to IS31 manual for these locations + * driver + * | LED address + * | | */ +// Left half +// 45 44 43 42 41 40 39 + { 0, C2_2 }, { 0, C1_2 }, { 0, C5_1 }, { 0, C4_1 }, { 0, C3_1 }, { 0, C2_1 }, { 0, C1_1 }, +// 52 51 50 49 48 47 46 + { 0, C4_3 }, { 0, C3_3 }, { 0, C2_3 }, { 0, C1_3 }, { 0, C5_2 }, { 0, C4_2 }, { 0, C3_2 }, +// 58 57 56 55 54 53 + { 0, C5_4 }, { 0, C4_4 }, { 0, C3_4 }, { 0, C2_4 }, { 0, C1_4 }, { 0, C5_3 }, +// 67 66 65 64 63 62 61 + { 0, C4_6 }, { 0, C3_6 }, { 0, C2_6 }, { 0, C1_6 }, { 0, C5_5 }, { 0, C4_5 }, { 0, C3_5 }, +// 76 75 74 73 72 + { 0, C4_8 }, { 0, C3_8 }, { 0, C2_8 }, { 0, C1_8 }, { 0, C4_7 }, +// 60 59 + { 0, C2_5 }, { 0, C1_5 }, +// 68 + { 0, C5_6 }, +// 71 70 69 + { 0, C3_7 }, { 0, C2_7 }, { 0, C1_7 }, +// Right half (mirrored) +// Due to how LED_MATRIX_SPLIT is implemented, only the first half of g_is31_leds is actually used. +// Luckily, the right half has the same LED pinouts, just mirrored. +// 45 44 43 42 41 40 39 + { 0, C2_2 }, { 0, C1_2 }, { 0, C5_1 }, { 0, C4_1 }, { 0, C3_1 }, { 0, C2_1 }, { 0, C1_1 }, +// 52 51 50 49 48 47 46 + { 0, C4_3 }, { 0, C3_3 }, { 0, C2_3 }, { 0, C1_3 }, { 0, C5_2 }, { 0, C4_2 }, { 0, C3_2 }, +// 58 57 56 55 54 53 + { 0, C5_4 }, { 0, C4_4 }, { 0, C3_4 }, { 0, C2_4 }, { 0, C1_4 }, { 0, C5_3 }, +// 67 66 65 64 63 62 61 + { 0, C4_6 }, { 0, C3_6 }, { 0, C2_6 }, { 0, C1_6 }, { 0, C5_5 }, { 0, C4_5 }, { 0, C3_5 }, +// 76 75 74 73 72 + { 0, C4_8 }, { 0, C3_8 }, { 0, C2_8 }, { 0, C1_8 }, { 0, C4_7 }, +// 60 59 + { 0, C2_5 }, { 0, C1_5 }, +// 68 + { 0, C5_6 }, +// 71 70 69 + { 0, C3_7 }, { 0, C2_7 }, { 0, C1_7 }, +}; + +led_config_t g_led_config = { + { + // Key Matrix to LED Index + // Left half + { NO_LED, NO_LED, NO_LED, 33, 34 }, + { NO_LED, NO_LED, NO_LED, 32, 37 }, + { 6, 13, NO_LED, 26, 36 }, + { 5, 12, 19, 25, 35 }, + { 4, 11, 18, 24, 31 }, + { 3, 10, 17, 23, 30 }, + { 2, 9, 16, 22, 29 }, + { 1, 8, 15, 21, 28 }, + { 0, 7, 14, 20, 27 }, + // Right half + { NO_LED, NO_LED, NO_LED, 71, 72 }, + { NO_LED, NO_LED, NO_LED, 70, 75 }, + { 44, 51, NO_LED, 64, 74 }, + { 43, 50, 57, 63, 73 }, + { 42, 49, 56, 62, 69 }, + { 41, 48, 55, 61, 68 }, + { 40, 47, 54, 60, 67 }, + { 39, 46, 53, 59, 66 }, + { 38, 45, 52, 58, 65 }, + }, { + // LED Index to Physical Position (assumes a reasonable gap between halves) + // Left half + { 0, 3 }, { 15, 3 }, { 27, 1 }, { 39, 0 }, { 51, 1 }, { 63, 2 }, { 75, 2 }, + { 0, 13 }, { 15, 13 }, { 27, 11 }, { 39, 10 }, { 51, 11 }, { 63, 12 }, { 78, 17 }, + { 0, 23 }, { 15, 23 }, { 27, 21 }, { 39, 20 }, { 51, 21 }, { 63, 22 }, + { 0, 33 }, { 15, 33 }, { 27, 31 }, { 39, 30 }, { 51, 31 }, { 63, 32 }, { 78, 32 }, + { 4, 43 }, { 15, 43 }, { 27, 41 }, { 39, 40 }, { 51, 41 }, + { 89, 41 }, { 100, 46 }, + { 95, 55 }, + { 72, 54 }, { 83, 59 }, { 90, 64 }, + // Right half (mirrored) + { 224, 3 }, { 209, 3 }, { 197, 1 }, { 185, 0 }, { 173, 1 }, { 161, 2 }, { 149, 2 }, + { 224, 13 }, { 209, 13 }, { 197, 11 }, { 185, 10 }, { 173, 11 }, { 161, 12 }, { 146, 17 }, + { 224, 23 }, { 209, 23 }, { 197, 21 }, { 185, 20 }, { 173, 21 }, { 161, 22 }, + { 224, 33 }, { 209, 33 }, { 197, 31 }, { 185, 30 }, { 173, 31 }, { 161, 32 }, { 146, 32 }, + { 220, 43 }, { 209, 43 }, { 197, 41 }, { 185, 40 }, { 173, 41 }, + { 135, 41 }, { 124, 46 }, + { 129, 55 }, + { 152, 54 }, { 141, 59 }, { 134, 64 }, + }, { + // LED Index to Flag + // Left half + 1, 4, 4, 4, 4, 4, 1, + 1, 4, 4, 4, 4, 4, 1, + 1, 4, 4, 4, 4, 4, + 1, 4, 4, 4, 4, 4, 1, + 1, 1, 1, 1, 1, + 1, 1, + 1, + 1, 1, 1, + // Right half (mirrored) + 1, 4, 4, 4, 4, 4, 1, + 1, 4, 4, 4, 4, 4, 1, + 1, 4, 4, 4, 4, 4, + 1, 4, 4, 4, 4, 4, 1, + 1, 1, 1, 1, 1, + 1, 1, + 1, + 1, 1, 1, + } +}; +#endif + +#ifdef ST7565_ENABLE +__attribute__((weak)) void st7565_on_user(void) { + ergodox_infinity_lcd_color(UINT16_MAX / 2, UINT16_MAX / 2, UINT16_MAX / 2); +} + +__attribute__((weak)) void st7565_off_user(void) { + ergodox_infinity_lcd_color(0, 0, 0); +} + +static void format_layer_bitmap_string(char* buffer, uint8_t offset) { + for (int i = 0; i < 16 && i + offset < MAX_LAYER; i++) { + if (i == 0 || i == 4 || i == 8 || i == 12) { + *buffer = ' '; + ++buffer; + } + + uint8_t layer = i + offset; + if (layer_state_cmp(default_layer_state, layer)) { + *buffer = 'D'; + } else if (layer_state_is(layer)) { + *buffer = '1'; + } else { + *buffer = '_'; + } + ++buffer; + } + *buffer = 0; +} + +__attribute__((weak)) void st7565_task_user(void) { + if (is_keyboard_master()) { + // Draw led and layer status + led_t leds = host_keyboard_led_state(); + if(leds.num_lock) { st7565_write("Num ", false); } + if(leds.caps_lock) { st7565_write("Cap ", false); } + if(leds.scroll_lock) { st7565_write("Scrl ", false); } + if(leds.compose) { st7565_write("Com ", false); } + if(leds.kana) { st7565_write("Kana", false); } + st7565_advance_page(true); + + char layer_buffer[16 + 5]; // 3 spaces and one null terminator + st7565_set_cursor(0, 1); + format_layer_bitmap_string(layer_buffer, 0); + st7565_write_ln(layer_buffer, false); + format_layer_bitmap_string(layer_buffer, 16); + st7565_write_ln(layer_buffer, false); + st7565_write_ln(" 1=On D=Default", false); + } else { + // Draw logo + static const char qmk_logo[] = { + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00 + }; + + st7565_write(qmk_logo, false); + st7565_write(" Infinity Ergodox ", false); + } +} +#endif + +#if defined(SPLIT_KEYBOARD) +void usart_master_init(SerialDriver **driver) { + PORTA->PCR[1] = PORTx_PCRn_PE | PORTx_PCRn_PS | PORTx_PCRn_PFE | PORTx_PCRn_MUX(2); + PORTA->PCR[2] = PORTx_PCRn_DSE | PORTx_PCRn_SRE | PORTx_PCRn_MUX(2); + + // driver is set to SD1 in config.h +} + +void usart_slave_init(SerialDriver **driver) { + PORTE->PCR[0] = PORTx_PCRn_PE | PORTx_PCRn_PS | PORTx_PCRn_PFE | PORTx_PCRn_MUX(3); + PORTE->PCR[1] = PORTx_PCRn_DSE | PORTx_PCRn_SRE | PORTx_PCRn_MUX(3); + + *driver = &SD2; +} +#endif diff --git a/keyboards/ergodox_infinity/ergodox_infinity.h b/keyboards/ergodox_infinity/ergodox_infinity.h index 79f01b1849a7..b9636b69be32 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,81 +79,75 @@ inline void ergodox_led_all_set(uint8_t n) { ergodox_right_led_3_set(n); } -/* - * LEFT HAND: LINES 88-95 - * RIGHT HAND: LINES 97-104 - */ +void ergodox_infinity_lcd_color(uint16_t r, uint16_t g, uint16_t b); + +#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 ca338399d31b..000000000000 --- 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/info.json b/keyboards/ergodox_infinity/info.json index e70b2a19e70d..22b20eec3903 100644 --- a/keyboards/ergodox_infinity/info.json +++ b/keyboards/ergodox_infinity/info.json @@ -1,7 +1,5 @@ { "keyboard_name": "Infinity Ergodox", - "width": 17, - "height": 8, "layouts": { "LAYOUT_ergodox": { "layout": [ diff --git a/keyboards/ergodox_infinity/keymaps/default/keymap.c b/keyboards/ergodox_infinity/keymaps/default/keymap.c index cd9b476bbd7b..cd650018032d 100644 --- a/keyboards/ergodox_infinity/keymaps/default/keymap.c +++ b/keyboards/ergodox_infinity/keymaps/default/keymap.c @@ -164,12 +164,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return true; } -// Runs just one time when the keyboard initializes. -void matrix_init_user(void) { - -}; - - // Runs constantly in the background, in a loop. void matrix_scan_user(void) { @@ -192,4 +186,4 @@ void matrix_scan_user(void) { break; } -}; +} diff --git a/keyboards/ergodox_infinity/keymaps/dudeofawesome/config.h b/keyboards/ergodox_infinity/keymaps/dudeofawesome/config.h index 161958233e28..9dcf8a7f43e6 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 c3ea48654da4..675b56edec77 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 9213e99f4289..000000000000 --- 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 . - */ - -#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 54fc2363c76c..000000000000 --- 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 . -*/ - -#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 740a951ec887..000000000000 --- 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 . - */ - -#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 61a724c63f50..000000000000 --- 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 . -*/ - -#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 c97a7a22a583..000000000000 --- 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 . - */ - -#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/keymaps/narze/keymap.c b/keyboards/ergodox_infinity/keymaps/narze/keymap.c index d9499f00376c..dd721e9a7895 100644 --- a/keyboards/ergodox_infinity/keymaps/narze/keymap.c +++ b/keyboards/ergodox_infinity/keymaps/narze/keymap.c @@ -43,8 +43,6 @@ enum ergodox_keycodes { }; // Narze : Custom Macros -#define HPR_ESC ALL_T(KC_ESC) -#define SFT_ENT SFT_T(KC_ENT) #define SFT_PO LSFT_LPRN #define SFT_PC RSFT_RPRN @@ -89,7 +87,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LT(_SYMB, KC_NO), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, LT(_SUPERDUPER, KC_SLSH), SFT_PC, - RAISE, KC_BSPC,KC_RALT,KC_RCTL, LT(_LOWER, KC_RBRC), + RAISE, KC_BSPC,ALT_COLN,KC_RCTL, LT(_LOWER, KC_RBRC), KC_LALT, CTL_T(KC_ESC), KC_PGUP, KC_PGDN,KC_BSPC, KC_ENT @@ -130,7 +128,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LT(_SYMB, KC_NO), KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, MEH_T(KC_NO),KC_K, KC_M, KC_COMM,KC_DOT, LT(_SUPERDUPER, KC_SLSH), SFT_PC, - RAISE, KC_BSPC,KC_RALT,KC_RCTL, LT(_LOWER, KC_RBRC), + RAISE, KC_BSPC,ALT_COLN,KC_RCTL, LT(_LOWER, KC_RBRC), KC_LALT, CTL_T(KC_ESC), KC_PGUP, KC_PGDN,KC_BSPC, KC_ENT @@ -151,7 +149,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LT(_SYMB, KC_NO), CM_Y, CM_U, CM_I, CM_O, CM_P, KC_BSLS, CM_H, CM_J, CM_K, CM_L, CM_SCLN, KC_QUOT, MEH_T(KC_NO),CM_N, CM_M, CM_COMM,CM_DOT, LT(_SUPERDUPER, KC_SLSH), SFT_PC, - RAISE, KC_BSPC,KC_RALT,KC_RCTL, LT(_LOWER, KC_RBRC), + RAISE, KC_BSPC,ALT_COLN,KC_RCTL, LT(_LOWER, KC_RBRC), KC_LALT, CTL_T(KC_ESC), KC_PGUP, KC_PGDN,KC_BSPC, KC_ENT diff --git a/keyboards/ergodox_infinity/keymaps/narze/readme.md b/keyboards/ergodox_infinity/keymaps/narze/readme.md index f24fc05fe051..3094b021e069 100644 --- a/keyboards/ergodox_infinity/keymaps/narze/readme.md +++ b/keyboards/ergodox_infinity/keymaps/narze/readme.md @@ -6,24 +6,9 @@ ## Key features - Qwerty + [Colemak](https://colemak.com) layouts, and you can type Qwerty on software-level Colemak as well. Very useful for gaming or when your friend wanna type something but don't use Colemak. -- [(S)uper (D)uper Mode](https://github.com/jasonrudolph/keyboard#super-duper-mode) inspired by [jasonrudolph](https://github.com/jasonrudolph), with [some extensions](https://gist.github.com/narze/861e2167784842d38771) such as backspace & forward delete. +- [(S)uper (D)uper Mode](/users/narze/readme.md) - Mouse keys with Z -## (S)uper (D)uper Mode -Press `S+D` simultaneously and hold, then... -- `H/J/K/L` for Vim-like movement -- `I/O` to move between browser tabs (Not working on Windows yet) -- `A` for `Option (Alt)` -- `F/;` for `Backspace/Forward delete` -- `A` with `H/L` to move to previous/next word -- `A` with `G/;` to delete to previous/next word -- `G` for `Cmd` (Gui/Windows) -- Available for all layouts (but plover) using physical S & D keys position in qwerty -- `Spacebar` for `Shift` (it's easier when already holding A with your pinky) -- Disable with `Raise+Lower+M` -- You can edit or add more useful keys in SUPERDUPER layer -- It can be activated by holding `/` as well, but it's slower since `LT()` uses `TAPPING_TERM` of 200ms but `S+D` uses `COMBO_TERM` of only 20ms (Can be changed within config.h) - ## Build instructions If your environment is ready to build with `make`, don't use docker since it takes 5m+ to compile. Use the instructions in Ergodox Infinity's readme. diff --git a/keyboards/ergodox_infinity/keymaps/narze/rules.mk b/keyboards/ergodox_infinity/keymaps/narze/rules.mk index 4bfa4fde264e..4a4ed58610ad 100644 --- a/keyboards/ergodox_infinity/keymaps/narze/rules.mk +++ b/keyboards/ergodox_infinity/keymaps/narze/rules.mk @@ -4,7 +4,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/ergodox_infinity/led.c b/keyboards/ergodox_infinity/led.c deleted file mode 100644 index 0b50247d7a31..000000000000 --- a/keyboards/ergodox_infinity/led.c +++ /dev/null @@ -1,26 +0,0 @@ -/* -Copyright 2012 Jun Wako - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#include - -#include "led.h" - - -void led_set(uint8_t usb_led) { - //TODO: Add led emulation if there's no customized visualization - (void)usb_led; -} diff --git a/keyboards/ergodox_infinity/matrix.c b/keyboards/ergodox_infinity/matrix.c deleted file mode 100644 index 7baacd24d08b..000000000000 --- a/keyboards/ergodox_infinity/matrix.c +++ /dev/null @@ -1,184 +0,0 @@ -/* -Copyright 2016 Fred Sundvik -Jun Wako - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ -#include -#include -#include -#include -#include "timer.h" -#include "wait.h" -#include "print.h" -#include "debug.h" -#include "matrix.h" -#include "eeconfig.h" -#include "serial_link/system/serial_link.h" - - -/* - * Infinity ErgoDox Pinusage: - * Column pins are input with internal pull-down. Row pins are output and strobe with high. - * Key is high or 1 when it turns on. - * - * col: { PTD1, PTD4, PTD5, PTD6, PTD7 } - * row: { PTB2, PTB3, PTB18, PTB19, PTC0, PTC9, PTC10, PTC11, PTD0 } - */ -/* matrix state(1:on, 0:off) */ -static matrix_row_t matrix[MATRIX_ROWS]; -static matrix_row_t matrix_debouncing[LOCAL_MATRIX_ROWS]; -static bool debouncing = false; -static uint16_t debouncing_time = 0; - - -void matrix_init(void) -{ - /* Row(sense) */ - palSetPadMode(GPIOD, 1, PAL_MODE_INPUT_PULLDOWN); - palSetPadMode(GPIOD, 4, PAL_MODE_INPUT_PULLDOWN); - palSetPadMode(GPIOD, 5, PAL_MODE_INPUT_PULLDOWN); - palSetPadMode(GPIOD, 6, PAL_MODE_INPUT_PULLDOWN); - palSetPadMode(GPIOD, 7, PAL_MODE_INPUT_PULLDOWN); - - /* Column(strobe) */ - palSetPadMode(GPIOB, 2, PAL_MODE_OUTPUT_PUSHPULL); - palSetPadMode(GPIOB, 3, PAL_MODE_OUTPUT_PUSHPULL); - palSetPadMode(GPIOB, 18, PAL_MODE_OUTPUT_PUSHPULL); - palSetPadMode(GPIOB, 19, PAL_MODE_OUTPUT_PUSHPULL); - palSetPadMode(GPIOC, 0, PAL_MODE_OUTPUT_PUSHPULL); - palSetPadMode(GPIOC, 9, PAL_MODE_OUTPUT_PUSHPULL); - palSetPadMode(GPIOC, 10, PAL_MODE_OUTPUT_PUSHPULL); - palSetPadMode(GPIOC, 11, PAL_MODE_OUTPUT_PUSHPULL); - palSetPadMode(GPIOD, 0, PAL_MODE_OUTPUT_PUSHPULL); - - memset(matrix, 0, MATRIX_ROWS * sizeof(matrix_row_t)); - memset(matrix_debouncing, 0, LOCAL_MATRIX_ROWS * sizeof(matrix_row_t)); - - matrix_init_quantum(); -} - -uint8_t matrix_scan(void) -{ - for (int row = 0; row < LOCAL_MATRIX_ROWS; row++) { - matrix_row_t data = 0; - - // strobe row - switch (row) { - case 0: palSetPad(GPIOB, 2); break; - case 1: palSetPad(GPIOB, 3); break; - case 2: palSetPad(GPIOB, 18); break; - case 3: palSetPad(GPIOB, 19); break; - case 4: palSetPad(GPIOC, 0); break; - case 5: palSetPad(GPIOC, 9); break; - case 6: palSetPad(GPIOC, 10); break; - case 7: palSetPad(GPIOC, 11); break; - case 8: palSetPad(GPIOD, 0); break; - } - - // need wait to settle pin state - // if you wait too short, or have a too high update rate - // the keyboard might freeze, or there might not be enough - // processing power to update the LCD screen properly. - // 20us, or two ticks at 100000Hz seems to be OK - wait_us(20); - - // read col data: { PTD1, PTD4, PTD5, PTD6, PTD7 } - data = ((palReadPort(GPIOD) & 0xF0) >> 3) | - ((palReadPort(GPIOD) & 0x02) >> 1); - - // un-strobe row - switch (row) { - case 0: palClearPad(GPIOB, 2); break; - case 1: palClearPad(GPIOB, 3); break; - case 2: palClearPad(GPIOB, 18); break; - case 3: palClearPad(GPIOB, 19); break; - case 4: palClearPad(GPIOC, 0); break; - case 5: palClearPad(GPIOC, 9); break; - case 6: palClearPad(GPIOC, 10); break; - case 7: palClearPad(GPIOC, 11); break; - case 8: palClearPad(GPIOD, 0); break; - } - - if (matrix_debouncing[row] != data) { - matrix_debouncing[row] = data; - debouncing = true; - debouncing_time = timer_read(); - } - } - - uint8_t offset = 0; -#if (defined(EE_HANDS) || defined(MASTER_IS_ON_RIGHT)) -#ifdef EE_HANDS - if (is_serial_link_master() && !eeconfig_read_handedness()) { -#else - if (is_serial_link_master()) { -#endif - offset = MATRIX_ROWS - LOCAL_MATRIX_ROWS; - } -#endif - - if (debouncing && timer_elapsed(debouncing_time) > DEBOUNCE) { - for (int row = 0; row < LOCAL_MATRIX_ROWS; row++) { - matrix[offset + row] = matrix_debouncing[row]; - } - debouncing = false; - } - matrix_scan_quantum(); - return 1; -} - -bool matrix_is_on(uint8_t row, uint8_t col) -{ - return (matrix[row] & (1</os/hal/boards/ +# or /boards +# This board was copied from PJRC_TEENSY_3_1. The only difference should be a +# hack to ensure the watchdog has started before trying to disable it, and an +# override to disable restart of USB driver after returning from suspend. +BOARD = IC_TEENSY_3_1 + # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -CUSTOM_MATRIX = yes # Custom matrix file for the ErgoDox EZ -SLEEP_LED_ENABLE = yes # 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 UNICODE_ENABLE = yes # Unicode SWAP_HANDS_ENABLE= yes # Allow swapping hands of keyboard +SLEEP_LED_ENABLE = yes -CUSTOM_MATRIX = yes # Custom matrix file -SERIAL_LINK_ENABLE = yes -VISUALIZER_ENABLE = yes -LCD_ENABLE = yes -BACKLIGHT_ENABLE = yes -BACKLIGHT_DRIVER = custom -LCD_BACKLIGHT_ENABLE = yes -MIDI_ENABLE = no RGBLIGHT_ENABLE = no -LCD_DRIVER = st7565 -LCD_WIDTH = 128 -LCD_HEIGHT = 32 +SPLIT_KEYBOARD = yes +SERIAL_DRIVER = usart -LED_DRIVER = is31fl3731c -LED_WIDTH = 7 -LED_HEIGHT = 7 +ST7565_ENABLE = yes -# project specific files -SRC = matrix.c \ - led.c +LED_MATRIX_ENABLE = yes +LED_MATRIX_DRIVER = IS31FL3731 LAYOUTS = ergodox diff --git a/keyboards/ergodox_infinity/simple_visualizer.h b/keyboards/ergodox_infinity/simple_visualizer.h deleted file mode 100644 index 73d0e088700a..000000000000 --- 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 . - */ - -#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 4b16021abcd9..000000000000 --- a/keyboards/ergodox_infinity/visualizer.c +++ /dev/null @@ -1,329 +0,0 @@ -/* -Copyright 2016 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 . -*/ - -// 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 "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_serial_link_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/ergodox_stm32/info.json b/keyboards/ergodox_stm32/info.json index 627b300fe73d..ee406e4743d1 100644 --- a/keyboards/ergodox_stm32/info.json +++ b/keyboards/ergodox_stm32/info.json @@ -2,9 +2,6 @@ "keyboard_name": "ErgoDox STM32", "url": "github.com/codetector1374", "maintainer": "codetector1374", - "width": 19.5, - "height": 9.375, - "layouts": { "LAYOUT_ergodox": { "layout": [ diff --git a/keyboards/ergodox_stm32/rules.mk b/keyboards/ergodox_stm32/rules.mk index c2eaaa52690d..598a92a076a6 100644 --- a/keyboards/ergodox_stm32/rules.mk +++ b/keyboards/ergodox_stm32/rules.mk @@ -7,12 +7,11 @@ BOARD = ST_NUCLEO64_F103RB CFLAGS += "-Wno-error=deprecated" EXTRAFLAGS = -O0 -g -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover CUSTOM_MATRIX = yes # Custom matrix file NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work diff --git a/keyboards/ergosaurus/config.h b/keyboards/ergosaurus/config.h index 9731897c6536..e4981e0013f9 100644 --- a/keyboards/ergosaurus/config.h +++ b/keyboards/ergosaurus/config.h @@ -123,59 +123,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -194,27 +141,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ #define BOOTMAGIC_LITE_ROW 0 #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/ergosaurus/info.json b/keyboards/ergosaurus/info.json index 13fda81f87b9..8048896be2f4 100644 --- a/keyboards/ergosaurus/info.json +++ b/keyboards/ergosaurus/info.json @@ -1,8 +1,6 @@ { "keyboard_name": "Ergosaurus", "maintainer": "cfbender", - "width": 19.75, - "height": 5.25, "layouts": { "LAYOUT_alice_split_bs": { "layout": [ diff --git a/keyboards/ergosaurus/keymaps/default/via/keymap.c b/keyboards/ergosaurus/keymaps/via/keymap.c similarity index 100% rename from keyboards/ergosaurus/keymaps/default/via/keymap.c rename to keyboards/ergosaurus/keymaps/via/keymap.c diff --git a/keyboards/ergosaurus/keymaps/via/rules.mk b/keyboards/ergosaurus/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/ergosaurus/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/ergosaurus/rules.mk b/keyboards/ergosaurus/rules.mk index 841c3fb6c4a3..bd521a33216c 100644 --- a/keyboards/ergosaurus/rules.mk +++ b/keyboards/ergosaurus/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = alice_split_bs diff --git a/keyboards/ergoslab/info.json b/keyboards/ergoslab/info.json index e24f0f1fc713..e37a3b7cbf34 100644 --- a/keyboards/ergoslab/info.json +++ b/keyboards/ergoslab/info.json @@ -2,11 +2,8 @@ "keyboard_name": "ergoslab", "url": "https://github.com/tomsaleeba/ergoslab", "maintainer": "tomsaleeba", - "width": 13, - "height": 5.25, "layouts": { "LAYOUT_ergoslab": { - "key_count": 52, "layout": [ {"label":"Q", "x":0, "y":0.625}, {"label":"W", "x":1, "y":0.125}, diff --git a/keyboards/ergoslab/rules.mk b/keyboards/ergoslab/rules.mk index f5ae8c51eef1..068b575f8b4f 100644 --- a/keyboards/ergoslab/rules.mk +++ b/keyboards/ergoslab/rules.mk @@ -2,33 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend SPLIT_KEYBOARD = yes diff --git a/keyboards/ergotaco/ergotaco.h b/keyboards/ergotaco/ergotaco.h index 6bc5ce36f896..5a0cd5e8fb1a 100644 --- a/keyboards/ergotaco/ergotaco.h +++ b/keyboards/ergotaco/ergotaco.h @@ -9,8 +9,6 @@ extern i2c_status_t mcp23018_status; #define ERGODOX_EZ_I2C_TIMEOUT 1000 -#define CPU_PRESCALE(n) (CLKPR = 0x80, CLKPR = (n)) -#define CPU_16MHz 0x00 // I2C aliases and register addresses (see "mcp23018.md") //#define I2C_ADDR 0b0100000 diff --git a/keyboards/ergotaco/info.json b/keyboards/ergotaco/info.json index cf6b810fecd2..e7794e6ee366 100644 --- a/keyboards/ergotaco/info.json +++ b/keyboards/ergotaco/info.json @@ -2,8 +2,6 @@ "keyboard_name": "ErgoTaco", "url": "http://gboards.ca", "maintainer": "germ", - "width": 13, - "height": 2.75, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/ergotaco/keymaps/default/keymap.c b/keyboards/ergotaco/keymaps/default/keymap.c index be1267ef06c4..8de5ea6371eb 100644 --- a/keyboards/ergotaco/keymaps/default/keymap.c +++ b/keyboards/ergotaco/keymaps/default/keymap.c @@ -32,11 +32,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), */ - -// Runs just one time when the keyboard initializes. -void matrix_init_user(void) { -}; - -// Runs constantly in the background, in a loop. -void matrix_scan_user(void) { -}; diff --git a/keyboards/ergotaco/post_rules.mk b/keyboards/ergotaco/post_rules.mk new file mode 100644 index 000000000000..0db3171b33db --- /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 cd8ebc58f0df..db236477b0f6 100644 --- a/keyboards/ergotaco/rules.mk +++ b/keyboards/ergotaco/rules.mk @@ -2,13 +2,6 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu CUSTOM_MATRIX = yes @@ -21,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/info.json b/keyboards/ergotravel/info.json index efc59f6a62ef..71e9cf7f4f36 100644 --- a/keyboards/ergotravel/info.json +++ b/keyboards/ergotravel/info.json @@ -5,11 +5,8 @@ "maintainer": "qmk", "bootloader": "caterina", "processor": "atmega32u4", - "width": 16, - "height": 5, "layouts": { "LAYOUT": { - "key_count": 54, "layout": [{"label":"L00", "x":0, "y":0.375}, {"label":"L01", "x":1, "y":0.25}, {"label":"L02", "x":2, "y":0.125}, {"label":"L03", "x":3, "y":0}, {"label":"L04", "x":4, "y":0.125}, {"label":"L05", "x":5, "y":0.25}, {"label":"L06", "x":6, "y":0.5}, {"label":"R00", "x":9, "y":0.5}, {"label":"R01", "x":10, "y":0.25}, {"label":"R02", "x":11, "y":0.125}, {"label":"R03", "x":12, "y":0}, {"label":"R04", "x":13, "y":0.125}, {"label":"R05", "x":14, "y":0.25}, {"label":"R06", "x":15, "y":0.375}, {"label":"L10", "x":0, "y":1.375}, {"label":"L11", "x":1, "y":1.25}, {"label":"L12", "x":2, "y":1.125}, {"label":"L13", "x":3, "y":1}, {"label":"L14", "x":4, "y":1.125}, {"label":"L15", "x":5, "y":1.25}, {"label":"L16", "x":6, "y":1.5}, {"label":"R10", "x":9, "y":1.5}, {"label":"R11", "x":10, "y":1.25}, {"label":"R12", "x":11, "y":1.125}, {"label":"R13", "x":12, "y":1}, {"label":"R14", "x":13, "y":1.125}, {"label":"R15", "x":14, "y":1.25}, {"label":"R16", "x":15, "y":1.375}, {"label":"L20", "x":0, "y":2.375}, {"label":"L21", "x":1, "y":2.25}, {"label":"L22", "x":2, "y":2.125}, {"label":"L23", "x":3, "y":2}, {"label":"L24", "x":4, "y":2.125}, {"label":"L25", "x":5, "y":2.25}, {"label":"L26", "x":6.5, "y":3}, {"label":"R20", "x":8.5, "y":3}, {"label":"R21", "x":10, "y":2.25}, {"label":"R22", "x":11, "y":2.125}, {"label":"R23", "x":12, "y":2}, {"label":"R24", "x":13, "y":2.125}, {"label":"R25", "x":14, "y":2.25}, {"label":"R26", "x":15, "y":2.375}, {"label":"L30", "x":0, "y":3.375}, {"label":"L31", "x":1, "y":3.25}, {"label":"L32", "x":2, "y":3.125}, {"label":"L33", "x":3, "y":3}, {"label":"L34", "x":5.5, "y":4}, {"label":"L35", "x":6.5, "y":4}, {"label":"R30", "x":8.5, "y":4}, {"label":"R31", "x":9.5, "y":4}, {"label":"R32", "x":12, "y":3}, {"label":"R33", "x":13, "y":3.125}, {"label":"R34", "x":14, "y":3.25}, {"label":"R35", "x":15, "y":3.375}] } } diff --git a/keyboards/ergotravel/keymaps/manna-harbour_miryoku/config.h b/keyboards/ergotravel/keymaps/manna-harbour_miryoku/config.h new file mode 100644 index 000000000000..a246476ddcdc --- /dev/null +++ b/keyboards/ergotravel/keymaps/manna-harbour_miryoku/config.h @@ -0,0 +1,22 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . + +#pragma once + +#define XXX KC_NO + +#define LAYOUT_miryoku( \ + 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, \ + N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ +) \ +LAYOUT( \ +XXX, K00, K01, K02, K03, K04, XXX, XXX, K05, K06, K07, K08, K09, XXX, \ +XXX, K10, K11, K12, K13, K14, XXX, XXX, K15, K16, K17, K18, K19, XXX, \ +XXX, K20, K21, K22, K23, K24, XXX, XXX, K25, K26, K27, K28, K29, XXX, \ +XXX, XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX, XXX \ +) diff --git a/keyboards/ergotravel/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/ergotravel/keymaps/manna-harbour_miryoku/keymap.c new file mode 100644 index 000000000000..7c5717a0fee0 --- /dev/null +++ b/keyboards/ergotravel/keymaps/manna-harbour_miryoku/keymap.c @@ -0,0 +1,5 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/keyboards/ergotravel/keymaps/yanfali/rules.mk b/keyboards/ergotravel/keymaps/yanfali/rules.mk index 2964d73ab8a3..ab3621cd7ed7 100644 --- a/keyboards/ergotravel/keymaps/yanfali/rules.mk +++ b/keyboards/ergotravel/keymaps/yanfali/rules.mk @@ -1,6 +1,6 @@ BOOTLOADER = qmk-dfu -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. diff --git a/keyboards/ergotravel/rev1/rev1.c b/keyboards/ergotravel/rev1/rev1.c index 609c479eb378..520a869e57ba 100644 --- a/keyboards/ergotravel/rev1/rev1.c +++ b/keyboards/ergotravel/rev1/rev1.c @@ -1,22 +1 @@ #include "rev1.h" - - -#ifdef SSD1306OLED -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - led_set_user(usb_led); -} -#endif - -void matrix_init_kb(void) { - - // // green led on - // DDRD |= (1<<5); - // PORTD &= ~(1<<5); - - // // orange led on - // DDRB |= (1<<0); - // PORTB &= ~(1<<0); - - matrix_init_user(); -}; diff --git a/keyboards/ergotravel/rev1/rev1.h b/keyboards/ergotravel/rev1/rev1.h index 5907617ef321..2973f4d9f3b1 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/ergotravel/rules.mk b/keyboards/ergotravel/rules.mk index ab0ae83c14f7..f0749d198e6d 100644 --- a/keyboards/ergotravel/rules.mk +++ b/keyboards/ergotravel/rules.mk @@ -2,20 +2,15 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend SPLIT_KEYBOARD = yes diff --git a/keyboards/ericrlau/numdiscipline/info.json b/keyboards/ericrlau/numdiscipline/info.json index fbd40f399d16..202aceda767d 100644 --- a/keyboards/ericrlau/numdiscipline/info.json +++ b/keyboards/ericrlau/numdiscipline/info.json @@ -2,8 +2,6 @@ "keyboard_name": "ELau NumDiscipline KB", "url": "https://github.com/ericrlau/NumDiscipline", "maintainer": "ericrlau", - "width": 19.5, - "height": 5.25, "layouts": { "LAYOUT_all": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"BackSpace", "x":13, "y":0, "w":2}, {"label":"Del", "x":15.5, "y":0}, {"label":"", "x":16.5, "y":0}, {"label":"", "x":17.5, "y":0}, {"label":"", "x":18.5, "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":"7", "x":15.5, "y":1}, {"label":"8", "x":16.5, "y":1}, {"label":"9", "x":17.5, "y":1}, {"label":"+", "x":18.5, "y":1, "h":2}, {"label":"CapsLock", "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":"4", "x":15.5, "y":2}, {"label":"5", "x":16.5, "y":2}, {"label":"6", "x":17.5, "y":2}, {"label":"Left Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Right Shift", "x":12.25, "y":3, "w":1.75}, {"label":"", "x":14.25, "y":3.25}, {"label":"1", "x":15.5, "y":3}, {"label":"2", "x":16.5, "y":3}, {"label":"3", "x":17.5, "y":3}, {"label":"Enter", "x":18.5, "y":3, "h":2}, {"label":"Left Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Left Alt", "x":2.5, "y":4, "w":1.25}, {"label":"Space", "x":3.75, "y":4, "w":6.25}, {"label":"Right Alt", "x":10, "y":4}, {"label":"Right Ctrl", "x":11, "y":4}, {"label":"Func", "x":12, "y":4}, {"label":"", "x":13.25, "y":4.25}, {"label":"", "x":14.25, "y":4.25}, {"label":"", "x":15.25, "y":4.25}, {"label":"0", "x":16.5, "y":4}, {"label":".", "x":17.5, "y":4}] diff --git a/keyboards/ericrlau/numdiscipline/rev1/config.h b/keyboards/ericrlau/numdiscipline/rev1/config.h index 71169683a87d..82035518a603 100644 --- a/keyboards/ericrlau/numdiscipline/rev1/config.h +++ b/keyboards/ericrlau/numdiscipline/rev1/config.h @@ -120,59 +120,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -191,26 +138,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ #define BOOTMAGIC_LITE_ROW 0 #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/ericrlau/numdiscipline/rev1/rules.mk b/keyboards/ericrlau/numdiscipline/rev1/rules.mk index 03063dec2f2c..d9ea6f539e6e 100644 --- a/keyboards/ericrlau/numdiscipline/rev1/rules.mk +++ b/keyboards/ericrlau/numdiscipline/rev1/rules.mk @@ -5,30 +5,18 @@ MCU = atmega32a F_CPU = 16000000 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = USBasp +BOOTLOADER = usbasploader # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/esca/getawayvan/chconf.h b/keyboards/esca/getawayvan/chconf.h new file mode 100644 index 000000000000..0a31d366f909 --- /dev/null +++ b/keyboards/esca/getawayvan/chconf.h @@ -0,0 +1,61 @@ +/* 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/esca/getawayvan/chconf.h -r platforms/chibios/common/configs/chconf.h` + */ + +#pragma once + +#define CH_CFG_ST_FREQUENCY 10000 + +#define CH_CFG_USE_REGISTRY TRUE + +#define CH_CFG_USE_WAITEXIT TRUE + +#define CH_CFG_USE_CONDVARS TRUE + +#define CH_CFG_USE_MESSAGES TRUE + +#define CH_CFG_USE_MAILBOXES TRUE + +#define CH_CFG_USE_HEAP TRUE + +#define CH_CFG_USE_MEMPOOLS TRUE + +#define CH_CFG_USE_OBJ_FIFOS TRUE + +#define CH_CFG_USE_PIPES TRUE + +#define CH_CFG_USE_DYNAMIC TRUE + +#define CH_CFG_USE_FACTORY TRUE + +#define CH_CFG_FACTORY_OBJECTS_REGISTRY TRUE + +#define CH_CFG_FACTORY_GENERIC_BUFFERS TRUE + +#define CH_CFG_FACTORY_SEMAPHORES TRUE + +#define CH_CFG_FACTORY_MAILBOXES TRUE + +#define CH_CFG_FACTORY_OBJ_FIFOS TRUE + +#define CH_CFG_FACTORY_PIPES TRUE + +#include_next + diff --git a/keyboards/esca/getawayvan/config.h b/keyboards/esca/getawayvan/config.h new file mode 100644 index 000000000000..3b718c583596 --- /dev/null +++ b/keyboards/esca/getawayvan/config.h @@ -0,0 +1,77 @@ +/* +Copyright 2015 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xE5CA +#define PRODUCT_ID 0x0401 +#define DEVICE_VER 0x0001 +#define MANUFACTURER esca +#define PRODUCT GetawayVan + + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + +#define MATRIX_COL_PINS { B11, B10, B2, B1, B0, A7, A6, A4, A13, A10, C13, C14 } +#define MATRIX_ROW_PINS { A9, A8, A3, A5 } +#define DIODE_DIRECTION COL2ROW + +#define BACKLIGHT_LEVELS 6 + +#define GRAVE_ESC_CTRL_OVERRIDE + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* 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 RGBLIGHT_ANIMATIONS +#define RGB_DI_PIN B15 +#define RGBLED_NUM 51 +#define RGBLIGHT_HUE_STEP 20 +#define RGBLIGHT_SAT_STEP 17 +#define RGBLIGHT_VAL_STEP 17 +#define RGBLIGHT_LIMIT_VAL 128 + +/* + * 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/esca/getawayvan/getawayvan.c b/keyboards/esca/getawayvan/getawayvan.c new file mode 100644 index 000000000000..ecd2bcf48770 --- /dev/null +++ b/keyboards/esca/getawayvan/getawayvan.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Enrique Cabrera + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "getawayvan.h" diff --git a/keyboards/esca/getawayvan/getawayvan.h b/keyboards/esca/getawayvan/getawayvan.h new file mode 100644 index 000000000000..30d67697fafe --- /dev/null +++ b/keyboards/esca/getawayvan/getawayvan.h @@ -0,0 +1,33 @@ +/* Copyright 2021 Enrique Cabrera + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define KNO 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, 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, K30, K31, K32, K33, K34, K35}, \ + {K36, K37, K38, KNO, K39, KNO, K40, KNO, K41, K42, K43, K45} \ +} diff --git a/keyboards/esca/getawayvan/halconf.h b/keyboards/esca/getawayvan/halconf.h new file mode 100644 index 000000000000..8e768a63c139 --- /dev/null +++ b/keyboards/esca/getawayvan/halconf.h @@ -0,0 +1,37 @@ +/* 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/esca/getawayvan/halconf.h -r platforms/chibios/common/configs/halconf.h` + */ + +#pragma once + +#define HAL_USE_SERIAL_USB TRUE + +#define ADC_USE_WAIT FALSE + +#define ADC_USE_MUTUAL_EXCLUSION FALSE + +#define SERIAL_USB_BUFFERS_SIZE 256 + +#define SPI_USE_WAIT FALSE + +#define SPI_USE_MUTUAL_EXCLUSION FALSE + +#include_next + diff --git a/keyboards/esca/getawayvan/info.json b/keyboards/esca/getawayvan/info.json new file mode 100644 index 000000000000..e49d4a8e4701 --- /dev/null +++ b/keyboards/esca/getawayvan/info.json @@ -0,0 +1,10 @@ +{ + "keyboard_name": "GetawayVan", + "url": "", + "maintainer": "esca", + "layouts": { + "LAYOUT": { + "layout": [{"label":"esc", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"NoNo Key", "x":11, "y":0, "w":1.75}, {"label":"Tab", "x":0, "y":1, "w":1.25}, {"label":"A", "x":1.25, "y":1}, {"label":"S", "x":2.25, "y":1}, {"label":"D", "x":3.25, "y":1}, {"label":"F", "x":4.25, "y":1}, {"label":"G", "x":5.25, "y":1}, {"label":"H", "x":6.25, "y":1}, {"label":"J", "x":7.25, "y":1}, {"label":"K", "x":8.25, "y":1}, {"label":"L", "x":9.25, "y":1}, {"label":"\"", "x":10.25, "y":1}, {"label":"Enter", "x":11.25, "y":1, "w":1.5}, {"label":"Shift", "x":0, "y":2, "w":1.75}, {"label":"Z", "x":1.75, "y":2}, {"label":"X", "x":2.75, "y":2}, {"label":"C", "x":3.75, "y":2}, {"label":"V", "x":4.75, "y":2}, {"label":"B", "x":5.75, "y":2}, {"label":"N", "x":6.75, "y":2}, {"label":"M", "x":7.75, "y":2}, {"label":"<", "x":8.75, "y":2}, {"label":">", "x":9.75, "y":2}, {"x":10.75, "y":2}, {"label":"Shift", "x":11.75, "y":2}, {"label":"Ctrl", "x":0, "y":3}, {"label":"Win", "x":1, "y":3, "w":1.25}, {"label":"Alt", "x":2.25, "y":3}, {"label":"", "x":3.25, "y":3, "w":2.75}, {"label":"", "x":6, "y":3, "w":2.25}, {"label":"Alt", "x":8.25, "y":3, "w":1.25}, {"x":9.75, "y":3}, {"x":10.75, "y":3}, {"x":11.75, "y":3}] + } + } +} diff --git a/keyboards/esca/getawayvan/keymaps/7u/keymap.c b/keyboards/esca/getawayvan/keymaps/7u/keymap.c new file mode 100644 index 000000000000..c837b1d4af6d --- /dev/null +++ b/keyboards/esca/getawayvan/keymaps/7u/keymap.c @@ -0,0 +1,44 @@ +/* Copyright 2021 Enrique Cabrera + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( /* Qwerty */ + KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + CTL_T(KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, LT(3, KC_ENT), + KC_LSFT, ALT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_NO, KC_RSFT, + KC_LCTL, KC_LGUI, KC_NO, KC_NO, LT(1, KC_SPC), KC_NO, MO(2), KC_NO, KC_LALT + ), + [1] = LAYOUT( /* LAYER 2 */ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, + KC_TRNS, KC_MINS, KC_EQL, KC_BSLS, KC_TRNS, KC_TRNS, KC_UP, KC_LEFT, KC_DOWN, KC_RGHT, KC_SCLN, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PIPE, KC_LBRC, KC_RBRC, KC_SLSH, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT( /* LAYER 1 */ + KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_MPLY, + KC_TRNS, KC_UNDS, KC_PLUS, KC_PIPE, KC_TRNS, KC_TRNS, KC_VOLU, KC_MPRV, KC_VOLD, KC_MNXT, KC_COLN, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LCBR, KC_RCBR, KC_QUES, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT( /* LAYER 3 */ + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL, + KC_TRNS, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/esca/getawayvan/keymaps/default/keymap.c b/keyboards/esca/getawayvan/keymaps/default/keymap.c new file mode 100644 index 000000000000..98c10322ef2d --- /dev/null +++ b/keyboards/esca/getawayvan/keymaps/default/keymap.c @@ -0,0 +1,45 @@ +/* Copyright 2021 Enrique Cabrera + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( /* Qwerty */ + KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + CTL_T(KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, LT(3, KC_ENT), + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, LT(2, KC_SPC), LT(1, KC_SPC), MO(2), KC_LEFT, KC_DOWN, KC_RIGHT + ), + [1] = LAYOUT( /* LAYER 2 */ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, + KC_TRNS, KC_MINS, KC_EQL, KC_BSLS, KC_TRNS, KC_TRNS, KC_UP, KC_LEFT, KC_DOWN, KC_RGHT, KC_SCLN, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_SLSH, KC_PGUP, KC_BSLS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END + ), + [2] = LAYOUT( /* LAYER 1 */ + KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_MPLY, + KC_TRNS, KC_UNDS, KC_PLUS, KC_PIPE, KC_TRNS, KC_TRNS, KC_VOLU, KC_MPRV, KC_VOLD, KC_MNXT, KC_COLN, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LCBR, KC_RCBR, KC_QUES, KC_VOLU, KC_PIPE, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT + ), + [3] = LAYOUT( /* LAYER 3 */ + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL, + KC_TRNS, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/esca/getawayvan/keymaps/via/keymap.c b/keyboards/esca/getawayvan/keymaps/via/keymap.c new file mode 100644 index 000000000000..8cc90b2299e0 --- /dev/null +++ b/keyboards/esca/getawayvan/keymaps/via/keymap.c @@ -0,0 +1,44 @@ +/* Copyright 2021 Enrique Cabrera + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( /* Qwerty */ + KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + CTL_T(KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, LT(3, KC_ENT), + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, LT(2, KC_SPC), LT(1, KC_SPC), MO(2), KC_LEFT, KC_DOWN, KC_RIGHT + ), + [1] = LAYOUT( /* LAYER 2 */ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, + KC_TRNS, KC_MINS, KC_EQL, KC_BSLS, KC_TRNS, KC_TRNS, KC_UP, KC_LEFT, KC_DOWN, KC_RGHT, KC_SCLN, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_SLSH, KC_PGUP, KC_BSLS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END + ), + [2] = LAYOUT( /* LAYER 1 */ + KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_MPLY, + KC_TRNS, KC_UNDS, KC_PLUS, KC_PIPE, KC_TRNS, KC_TRNS, KC_VOLU, KC_MPRV, KC_VOLD, KC_MNXT, KC_COLN, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LCBR, KC_RCBR, KC_QUES, KC_VOLU, KC_PIPE, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT + ), + [3] = LAYOUT( /* LAYER 3 */ + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL, + KC_TRNS, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/esca/getawayvan/keymaps/via/rules.mk b/keyboards/esca/getawayvan/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/esca/getawayvan/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/esca/getawayvan/readme.md b/keyboards/esca/getawayvan/readme.md new file mode 100644 index 000000000000..4c0a23384b97 --- /dev/null +++ b/keyboards/esca/getawayvan/readme.md @@ -0,0 +1,12 @@ +# GetawayVan + +GetawayVan Keyboard + +* Keyboard Maintainer: [esca](https://github.com/esca47) +* Hardware Supported: STM32F072C8T6/(STM32F042C6T6 in getawayvan_f042) + +Make example for this keyboard (after setting up your build environment): + + make esca/getawayvan: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/esca/getawayvan/rules.mk b/keyboards/esca/getawayvan/rules.mk new file mode 100644 index 000000000000..eb078a6bc094 --- /dev/null +++ b/keyboards/esca/getawayvan/rules.mk @@ -0,0 +1,20 @@ +# 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 +# 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 +LTO_ENABLE = yes diff --git a/keyboards/esca/getawayvan_f042/chconf.h b/keyboards/esca/getawayvan_f042/chconf.h new file mode 100644 index 000000000000..14b19f08d8fb --- /dev/null +++ b/keyboards/esca/getawayvan_f042/chconf.h @@ -0,0 +1,27 @@ +/* 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/vinta/chconf.h -r platforms/chibios/common/configs/chconf.h` + */ + +#pragma once + +#define CH_CFG_ST_FREQUENCY 10000 + +#include_next + diff --git a/keyboards/esca/getawayvan_f042/config.h b/keyboards/esca/getawayvan_f042/config.h new file mode 100644 index 000000000000..8921e9db4d16 --- /dev/null +++ b/keyboards/esca/getawayvan_f042/config.h @@ -0,0 +1,76 @@ +/* +Copyright 2015 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xE5CA +#define PRODUCT_ID 0x0401 +#define DEVICE_VER 0x0001 +#define MANUFACTURER esca +#define PRODUCT GetawayVan + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + +#define MATRIX_COL_PINS { B11, B10, B2, B1, B0, A7, A6, A4, A13, A10, C13, C14 } +#define MATRIX_ROW_PINS { A9, A8, A3, A5 } +#define DIODE_DIRECTION COL2ROW + +#define BACKLIGHT_LEVELS 6 + +#define GRAVE_ESC_CTRL_OVERRIDE + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* 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 RGBLIGHT_ANIMATIONS +#define RGB_DI_PIN B15 +#define RGBLED_NUM 51 +#define RGBLIGHT_HUE_STEP 20 +#define RGBLIGHT_SAT_STEP 17 +#define RGBLIGHT_VAL_STEP 17 +#define RGBLIGHT_LIMIT_VAL 128 + +/* + * 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/esca/getawayvan_f042/getawayvan_f042.c b/keyboards/esca/getawayvan_f042/getawayvan_f042.c new file mode 100644 index 000000000000..6ee36ae43229 --- /dev/null +++ b/keyboards/esca/getawayvan_f042/getawayvan_f042.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Enrique Cabrer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "getawayvan_f042.h" diff --git a/keyboards/esca/getawayvan_f042/getawayvan_f042.h b/keyboards/esca/getawayvan_f042/getawayvan_f042.h new file mode 100644 index 000000000000..2e3a4d2dc1fd --- /dev/null +++ b/keyboards/esca/getawayvan_f042/getawayvan_f042.h @@ -0,0 +1,33 @@ + /* Copyright 2021 Enrique Cabrera + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define KNO 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, 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, K30, K31, K32, K33, K34, K35}, \ + {K36, K37, K38, KNO, K39, KNO, K40, KNO, K41, K42, K43, K45} \ +} diff --git a/keyboards/esca/getawayvan_f042/halconf.h b/keyboards/esca/getawayvan_f042/halconf.h new file mode 100644 index 000000000000..66ed246c5d4b --- /dev/null +++ b/keyboards/esca/getawayvan_f042/halconf.h @@ -0,0 +1,37 @@ +/* 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/vinta/halconf.h -r platforms/chibios/common/configs/halconf.h` + */ + +#pragma once + +#define HAL_USE_SERIAL_USB TRUE + +#define ADC_USE_WAIT FALSE + +#define ADC_USE_MUTUAL_EXCLUSION FALSE + +#define SERIAL_USB_BUFFERS_SIZE 256 + +#define SPI_USE_WAIT FALSE + +#define SPI_USE_MUTUAL_EXCLUSION FALSE + +#include_next + diff --git a/keyboards/esca/getawayvan_f042/info.json b/keyboards/esca/getawayvan_f042/info.json new file mode 100644 index 000000000000..e49d4a8e4701 --- /dev/null +++ b/keyboards/esca/getawayvan_f042/info.json @@ -0,0 +1,10 @@ +{ + "keyboard_name": "GetawayVan", + "url": "", + "maintainer": "esca", + "layouts": { + "LAYOUT": { + "layout": [{"label":"esc", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"NoNo Key", "x":11, "y":0, "w":1.75}, {"label":"Tab", "x":0, "y":1, "w":1.25}, {"label":"A", "x":1.25, "y":1}, {"label":"S", "x":2.25, "y":1}, {"label":"D", "x":3.25, "y":1}, {"label":"F", "x":4.25, "y":1}, {"label":"G", "x":5.25, "y":1}, {"label":"H", "x":6.25, "y":1}, {"label":"J", "x":7.25, "y":1}, {"label":"K", "x":8.25, "y":1}, {"label":"L", "x":9.25, "y":1}, {"label":"\"", "x":10.25, "y":1}, {"label":"Enter", "x":11.25, "y":1, "w":1.5}, {"label":"Shift", "x":0, "y":2, "w":1.75}, {"label":"Z", "x":1.75, "y":2}, {"label":"X", "x":2.75, "y":2}, {"label":"C", "x":3.75, "y":2}, {"label":"V", "x":4.75, "y":2}, {"label":"B", "x":5.75, "y":2}, {"label":"N", "x":6.75, "y":2}, {"label":"M", "x":7.75, "y":2}, {"label":"<", "x":8.75, "y":2}, {"label":">", "x":9.75, "y":2}, {"x":10.75, "y":2}, {"label":"Shift", "x":11.75, "y":2}, {"label":"Ctrl", "x":0, "y":3}, {"label":"Win", "x":1, "y":3, "w":1.25}, {"label":"Alt", "x":2.25, "y":3}, {"label":"", "x":3.25, "y":3, "w":2.75}, {"label":"", "x":6, "y":3, "w":2.25}, {"label":"Alt", "x":8.25, "y":3, "w":1.25}, {"x":9.75, "y":3}, {"x":10.75, "y":3}, {"x":11.75, "y":3}] + } + } +} diff --git a/keyboards/esca/getawayvan_f042/keymaps/7u/keymap.c b/keyboards/esca/getawayvan_f042/keymaps/7u/keymap.c new file mode 100644 index 000000000000..c837b1d4af6d --- /dev/null +++ b/keyboards/esca/getawayvan_f042/keymaps/7u/keymap.c @@ -0,0 +1,44 @@ +/* Copyright 2021 Enrique Cabrera + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( /* Qwerty */ + KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + CTL_T(KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, LT(3, KC_ENT), + KC_LSFT, ALT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_NO, KC_RSFT, + KC_LCTL, KC_LGUI, KC_NO, KC_NO, LT(1, KC_SPC), KC_NO, MO(2), KC_NO, KC_LALT + ), + [1] = LAYOUT( /* LAYER 2 */ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, + KC_TRNS, KC_MINS, KC_EQL, KC_BSLS, KC_TRNS, KC_TRNS, KC_UP, KC_LEFT, KC_DOWN, KC_RGHT, KC_SCLN, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PIPE, KC_LBRC, KC_RBRC, KC_SLSH, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT( /* LAYER 1 */ + KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_MPLY, + KC_TRNS, KC_UNDS, KC_PLUS, KC_PIPE, KC_TRNS, KC_TRNS, KC_VOLU, KC_MPRV, KC_VOLD, KC_MNXT, KC_COLN, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LCBR, KC_RCBR, KC_QUES, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT( /* LAYER 3 */ + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL, + KC_TRNS, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/esca/getawayvan_f042/keymaps/default/keymap.c b/keyboards/esca/getawayvan_f042/keymaps/default/keymap.c new file mode 100644 index 000000000000..8cc90b2299e0 --- /dev/null +++ b/keyboards/esca/getawayvan_f042/keymaps/default/keymap.c @@ -0,0 +1,44 @@ +/* Copyright 2021 Enrique Cabrera + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( /* Qwerty */ + KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + CTL_T(KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, LT(3, KC_ENT), + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, LT(2, KC_SPC), LT(1, KC_SPC), MO(2), KC_LEFT, KC_DOWN, KC_RIGHT + ), + [1] = LAYOUT( /* LAYER 2 */ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, + KC_TRNS, KC_MINS, KC_EQL, KC_BSLS, KC_TRNS, KC_TRNS, KC_UP, KC_LEFT, KC_DOWN, KC_RGHT, KC_SCLN, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_SLSH, KC_PGUP, KC_BSLS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END + ), + [2] = LAYOUT( /* LAYER 1 */ + KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_MPLY, + KC_TRNS, KC_UNDS, KC_PLUS, KC_PIPE, KC_TRNS, KC_TRNS, KC_VOLU, KC_MPRV, KC_VOLD, KC_MNXT, KC_COLN, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LCBR, KC_RCBR, KC_QUES, KC_VOLU, KC_PIPE, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT + ), + [3] = LAYOUT( /* LAYER 3 */ + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL, + KC_TRNS, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/esca/getawayvan_f042/readme.md b/keyboards/esca/getawayvan_f042/readme.md new file mode 100644 index 000000000000..0f03237128ff --- /dev/null +++ b/keyboards/esca/getawayvan_f042/readme.md @@ -0,0 +1,12 @@ +# GetawayVan + +GetawayVan Keyboard + +* Keyboard Maintainer: [esca](https://github.com/esca47) +* Hardware Supported: STM32F042C6T6/(STM32F072C8T6 in getawayvan) + +Make example for this keyboard (after setting up your build environment): + + make esca/getawayvan_f042: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/esca/getawayvan_f042/rules.mk b/keyboards/esca/getawayvan_f042/rules.mk new file mode 100644 index 000000000000..5714f7c606c4 --- /dev/null +++ b/keyboards/esca/getawayvan_f042/rules.mk @@ -0,0 +1,20 @@ +# MCU name +MCU = STM32F042 + +# Bootloader selection +BOOTLOADER = stm32-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 +LTO_ENABLE = yes diff --git a/keyboards/espectro/info.json b/keyboards/espectro/info.json index 08796068de2b..cb34f6938c92 100644 --- a/keyboards/espectro/info.json +++ b/keyboards/espectro/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Espectro", "url": "", "maintainer": "qmk", - "width": 19, - "height": 6, "layouts": { "LAYOUT_default": { - "key_count": 100, "layout": [ {"label":"ESC", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, @@ -117,7 +114,6 @@ }, "LAYOUT_split_bs_joined_right": { - "key_count": 100, "layout": [ {"label": "K00", "x": 0, "y": 0}, {"label": "K01", "x": 1, "y": 0}, @@ -228,7 +224,6 @@ }, "LAYOUT_split_shift_and_bs": { - "key_count": 104, "layout": [ {"label":"ESC", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, @@ -343,7 +338,6 @@ }, "LAYOUT_iso": { - "key_count": 101, "layout": [ {"label":"ESC", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, diff --git a/keyboards/espectro/rules.mk b/keyboards/espectro/rules.mk index 57a846fb3a28..a911cf548197 100755 --- a/keyboards/espectro/rules.mk +++ b/keyboards/espectro/rules.mk @@ -2,25 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -SLEEP_LED_ENABLE = yes # 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 = yes # Enable keyboard backlight functionality AUDIO_ENABLE = no RGBLIGHT_ENABLE = yes +SLEEP_LED_ENABLE = yes diff --git a/keyboards/eve/meteor/info.json b/keyboards/eve/meteor/info.json index 15ad8a1e1310..4c86d09bfde9 100644 --- a/keyboards/eve/meteor/info.json +++ b/keyboards/eve/meteor/info.json @@ -2,8 +2,6 @@ "keyboard_name": "EVE Meteor", "url": "", "maintainer": "qmk", - "width": 15, - "height": 6.5, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5}, {"x":14, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5, "w":2.25}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":1.75}, {"x":14, "y":4.5}, {"x":0, "y":5.5, "w":1.25}, {"x":1.25, "y":5.5, "w":1.25}, {"x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"x":10, "y":5.5}, {"x":11, "y":5.5}, {"x":12, "y":5.5}, {"x":13, "y":5.5}, {"x":14, "y":5.5}] diff --git a/keyboards/eve/meteor/rules.mk b/keyboards/eve/meteor/rules.mk index 93bb0a56eb7e..4c4a33355eef 100644 --- a/keyboards/eve/meteor/rules.mk +++ b/keyboards/eve/meteor/rules.mk @@ -2,17 +2,10 @@ MCU = atmega32a # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid # build options -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes EXTRAKEY_ENABLE = yes CONSOLE_ENABLE = no diff --git a/keyboards/evil80/evil80.h b/keyboards/evil80/evil80.h index a880de98f5fe..90d4f6564b80 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/evil80/info.json b/keyboards/evil80/info.json index 8b3b4cd0d6f1..b37086c1a730 100644 --- a/keyboards/evil80/info.json +++ b/keyboards/evil80/info.json @@ -2,12 +2,9 @@ "keyboard_name": "Evil80", "url": "", "maintainer": "qmk", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT": { - "key_count": 90, "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"@", "x":2, "y":1.5}, {"label":"#", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"Backspace", "x":13, "y":1.5, "w":2}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.25, "y":1.5}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":6.5, "y":2.5}, {"label":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"|", "x":13.5, "y":2.5, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"label":"Enter", "x":13.75, "y":3.5, "w":1.25}, {"label":"Shift", "x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"N", "x":7.25, "y":4.5}, {"label":"M", "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":"Shift", "x":12.25, "y":4.5, "w":1.75}, {"x":14, "y":4.5}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, {"label":"Win", "x":1.25, "y":5.5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"label":"Alt", "x":10, "y":5.5, "w":1.25}, {"label":"Win", "x":11.25, "y":5.5, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.5, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}] } } -} \ No newline at end of file +} diff --git a/keyboards/evil80/rules.mk b/keyboards/evil80/rules.mk index 46b76962b659..393db581d63e 100644 --- a/keyboards/evil80/rules.mk +++ b/keyboards/evil80/rules.mk @@ -2,32 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -API_SYSEX_ENABLE = no - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend diff --git a/keyboards/evolv/config.h b/keyboards/evolv/config.h index 2b91033c98f0..59223cd2c9dd 100644 --- a/keyboards/evolv/config.h +++ b/keyboards/evolv/config.h @@ -59,6 +59,8 @@ along with this program. If not, see . #define ENCODERS_PAD_A { B3 } #define ENCODERS_PAD_B { A15 } +#define ENCODER_RESOLUTION 2 +#define TAPPING_TERM 200 /* * Feature disable options diff --git a/keyboards/evolv/evolv.c b/keyboards/evolv/evolv.c index 90df449ee204..3f2762894614 100644 --- a/keyboards/evolv/evolv.c +++ b/keyboards/evolv/evolv.c @@ -17,14 +17,12 @@ along with this program. If not, see . #include "evolv.h" +#ifndef MEDIA_KEY_DELAY +# define MEDIA_KEY_DELAY 100 +#endif + bool encoder_update_kb(uint8_t index, bool clockwise) { if (!encoder_update_user(index, clockwise)) return false; - if (index == 0) { /* First encoder */ - if (clockwise) { - tap_code(KC_VOLU); - } else { - tap_code(KC_VOLD); - } - } + tap_code_delay(clockwise ? KC_VOLU : KC_VOLD, MEDIA_KEY_DELAY); return true; } diff --git a/keyboards/evolv/info.json b/keyboards/evolv/info.json index 8774a7d04fdb..baa7b9c8436c 100644 --- a/keyboards/evolv/info.json +++ b/keyboards/evolv/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Evolv75", "url": "", "maintainer": "qmk", - "width": 17.5, - "height": 6.75, "layouts": { "LAYOUT_evolv_ansi": { "layout": [ diff --git a/keyboards/evolv/keymaps/default/keymap.c b/keyboards/evolv/keymaps/default/keymap.c index 5e5e5e7abb63..22866270411e 100755 --- a/keyboards/evolv/keymaps/default/keymap.c +++ b/keyboards/evolv/keymaps/default/keymap.c @@ -17,6 +17,8 @@ along with this program. If not, see . #include QMK_KEYBOARD_H +#define MEDIA_KEY_DELAY 100 + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_evolv_ansi( KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_INS , diff --git a/keyboards/evolv/keymaps/iso/keymap.c b/keyboards/evolv/keymaps/iso/keymap.c index 4efe8268d350..391bcdf5bbf1 100755 --- a/keyboards/evolv/keymaps/iso/keymap.c +++ b/keyboards/evolv/keymaps/iso/keymap.c @@ -17,6 +17,8 @@ along with this program. If not, see . #include QMK_KEYBOARD_H +#define MEDIA_KEY_DELAY 100 + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_evolv_iso( KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_INS , diff --git a/keyboards/evolv/keymaps/via/keymap.c b/keyboards/evolv/keymaps/via/keymap.c index 4efe8268d350..391bcdf5bbf1 100755 --- a/keyboards/evolv/keymaps/via/keymap.c +++ b/keyboards/evolv/keymaps/via/keymap.c @@ -17,6 +17,8 @@ along with this program. If not, see . #include QMK_KEYBOARD_H +#define MEDIA_KEY_DELAY 100 + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_evolv_iso( KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_INS , diff --git a/keyboards/evolv/mcuconf.h b/keyboards/evolv/mcuconf.h index 2836e4b01a76..84d14114ff36 100644 --- a/keyboards/evolv/mcuconf.h +++ b/keyboards/evolv/mcuconf.h @@ -23,9 +23,5 @@ #include_next -#undef STM32_I2C_USE_DMA -#define STM32_I2C_USE_DMA FALSE - #undef STM32_SPI_USE_SPI2 #define STM32_SPI_USE_SPI2 TRUE - diff --git a/keyboards/evolv/rules.mk b/keyboards/evolv/rules.mk index b01db8134b94..1cf67211420e 100644 --- a/keyboards/evolv/rules.mk +++ b/keyboards/evolv/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration # 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes diff --git a/keyboards/evyd13/atom47/keymaps/LEdiodes/keymap.c b/keyboards/evyd13/atom47/keymaps/LEdiodes/keymap.c index 87e1244214a5..ae72a3fd94b3 100644 --- a/keyboards/evyd13/atom47/keymaps/LEdiodes/keymap.c +++ b/keyboards/evyd13/atom47/keymaps/LEdiodes/keymap.c @@ -1,3 +1,20 @@ +/* +Copyright 2021 Evelien 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 . +*/ + #include QMK_KEYBOARD_H // These are all aliases for the function layers. @@ -7,27 +24,27 @@ #define _L3 3 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[_L0] = LAYOUT( - KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_BSPC, \ - KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, \ - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, MO(_L1), \ - KC_LCTL, KC_LGUI, KC_LALT, TG(_L3), KC_SPC, KC_SPC, MO(_L2), KC_RALT, KC_APP, KC_RCTRL), \ +[_L0] = LAYOUT_split_space( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, MO(_L1), + KC_LCTL, KC_LGUI, KC_LALT, TG(_L3), KC_SPC, KC_SPC, MO(_L2), KC_RALT, KC_APP, KC_RCTRL), -[_L2] = LAYOUT( - _______, KC_VOLD, KC_VOLU, KC_MUTE, RESET, _______, KC_CALC, KC_PGUP, KC_UP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, \ - KC_CAPS, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT, KC_INS, _______, \ - _______, _______, _______, _______, _______, _______, _______, BL_TOGG, BL_DEC, BL_INC, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), \ +[_L2] = LAYOUT_split_space( + _______, KC_VOLD, KC_VOLU, KC_MUTE, RESET, _______, KC_CALC, KC_PGUP, KC_UP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, + KC_CAPS, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT, KC_INS, _______, + _______, _______, _______, _______, _______, _______, _______, BL_TOGG, BL_DEC, BL_INC, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), -[_L1] = LAYOUT( - 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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, \ - _______, _______, _______, _______, _______, KC_QUOT, KC_SLSH, KC_LBRC, KC_RBRC, KC_BSLS, KC_RSFT, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), \ +[_L1] = LAYOUT_split_space( + 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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, + _______, _______, _______, _______, _______, KC_QUOT, KC_SLSH, KC_LBRC, KC_RBRC, KC_BSLS, KC_RSFT, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), -[_L3] = LAYOUT( - _______, _______, _______, KC_7, KC_8, KC_9, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, KC_4, KC_5, KC_6, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, KC_1, KC_2, KC_3, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, KC_0, KC_DOT, _______, _______, _______, RESET), \ +[_L3] = LAYOUT_split_space( + _______, _______, _______, KC_7, KC_8, KC_9, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_4, KC_5, KC_6, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_1, KC_2, KC_3, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, KC_0, KC_DOT, _______, _______, _______, RESET) }; diff --git a/keyboards/evyd13/atom47/keymaps/default/keymap.c b/keyboards/evyd13/atom47/keymaps/default/keymap.c index dc87b5a52bea..a7fbdda31d84 100644 --- a/keyboards/evyd13/atom47/keymaps/default/keymap.c +++ b/keyboards/evyd13/atom47/keymaps/default/keymap.c @@ -1,3 +1,20 @@ +/* +Copyright 2021 Evelien 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 . +*/ + #include QMK_KEYBOARD_H // Each layer gets a name for readability, which is then used in the keymap matrix below. @@ -11,40 +28,27 @@ #define _PN 3 //Pn const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[_MA] = LAYOUT( - KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_BSPC, \ - KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, \ - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, MO(_FN1), \ - KC_LCTL, KC_LGUI, KC_LALT, MO(_PN), KC_SPC, KC_SPC, MO(_FN), KC_RALT, KC_APP, KC_RCTRL), \ +[_MA] = LAYOUT_split_space( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, MO(_FN1), + KC_LCTL, KC_LGUI, KC_LALT, MO(_PN), KC_SPC, KC_SPC, MO(_FN), KC_RALT, KC_APP, KC_RCTRL), -[_FN] = LAYOUT( - _______, KC_VOLD, KC_VOLU, KC_MUTE, RESET, _______, KC_CALC, KC_PGUP, KC_UP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, \ - KC_CAPS, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT, KC_INS, _______, \ - _______, _______, _______, _______, _______, _______, _______, BL_TOGG, BL_DEC, BL_INC, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), \ +[_FN] = LAYOUT_split_space( + _______, KC_VOLD, KC_VOLU, KC_MUTE, RESET, _______, KC_CALC, KC_PGUP, KC_UP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, + KC_CAPS, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT, KC_INS, _______, + _______, _______, _______, _______, _______, _______, _______, BL_TOGG, BL_DEC, BL_INC, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), -[_FN1] = LAYOUT( - 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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, \ - _______, _______, _______, _______, _______, KC_QUOT, KC_SLSH, KC_LBRC, KC_RBRC, KC_BSLS, KC_RSFT, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), \ +[_FN1] = LAYOUT_split_space( + 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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, + _______, _______, _______, _______, _______, KC_QUOT, KC_SLSH, KC_LBRC, KC_RBRC, KC_BSLS, KC_RSFT, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), -[_PN] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, \ - RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET), +[_PN] = LAYOUT_split_space( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, + RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET), }; - -void led_set_user(uint8_t usb_led) { - if (usb_led & (1<. +*/ + #include QMK_KEYBOARD_H // Each layer gets a name for readability, which is then used in the keymap matrix below. @@ -9,60 +26,24 @@ #define _LO 1 //FN1 #define _RA 2 //FN -enum custom_keycodes { - CTRLZ = SAFE_RANGE, - CTRLX, - CTRLC, - CTRLV -}; - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[_MA] = LAYOUT( - KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_BSPC, \ - KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, \ - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \ - KC_LCTL, KC_LGUI, KC_LALT, MO(_LO), KC_SPC, KC_SPC, MO(_RA), KC_RALT, KC_APP, KC_RCTRL), \ - -[_LO] = LAYOUT( - 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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, \ - _______, CTRLZ, CTRLX, CTRLC, CTRLV, _______, _______, KC_QUOT, KC_LBRC, KC_RBRC, KC_BSLS, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET), \ - -[_RA] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_UP, KC_PGDN, _______, _______, _______, \ - KC_CAPS, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MPLY, KC_PSCR, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), \ +[_MA] = LAYOUT_split_space( + KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, MO(_LO), KC_SPC, KC_SPC, MO(_RA), KC_RALT, KC_APP, KC_RCTRL), + +[_LO] = LAYOUT_split_space( + 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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, + _______, LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), _______, _______, KC_QUOT, KC_LBRC, KC_RBRC, KC_BSLS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET), + +[_RA] = LAYOUT_split_space( + _______, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_UP, KC_PGDN, _______, _______, _______, + KC_CAPS, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MPLY, KC_PSCR, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) }; -void led_set_user(uint8_t usb_led) { - if (usb_led & (1<event.pressed) { - switch(keycode) { - case CTRLZ: - SEND_STRING(SS_LCTRL("z")); - return false; - case CTRLX: - SEND_STRING(SS_LCTRL("x")); - return false; - case CTRLC: - SEND_STRING(SS_LCTRL("c")); - return false; - case CTRLV: - SEND_STRING(SS_LCTRL("v")); - return false; - } - } - return true; -}; diff --git a/keyboards/evyd13/atom47/keymaps/junonum_a47/keymap.c b/keyboards/evyd13/atom47/keymaps/junonum_a47/keymap.c index ebd52ffd032b..8204bc32b424 100644 --- a/keyboards/evyd13/atom47/keymaps/junonum_a47/keymap.c +++ b/keyboards/evyd13/atom47/keymaps/junonum_a47/keymap.c @@ -1,3 +1,20 @@ +/* +Copyright 2021 Evelien 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 . +*/ + #include QMK_KEYBOARD_H /* enum custom_keycodes { @@ -35,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Primary layer - [_MAIN] = LAYOUT( + [_MAIN] = LAYOUT_split_space( KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_BSPC, KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SHIFTEN, @@ -43,7 +60,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), // Main Fn navigation layer - [_SPLEFT] = LAYOUT( + [_SPLEFT] = LAYOUT_split_space( _______, KC_VOLU, KC_PGUP, KC_UP, KC_PGDN, KC_INS, _______, _______, KC_UP, _______, KC_PSCR, _______, _______, _______, KC_VOLD, KC_LEFT, KC_DOWN, KC_RGHT, KC_HOME, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_DEL , _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_END, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, @@ -51,7 +68,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), // Primary numeric layer using right Spacebar - [_SPRIGHT] = LAYOUT( + [_SPRIGHT] = LAYOUT_split_space( KC_GRV, _______, _______, KC_LBRC, KC_RBRC, _______, _______, KC_7, KC_8, KC_9, KC_0, _______, _______, _______, _______, _______, KC_LCBR, KC_RCBR, _______, _______, KC_4, KC_5, KC_6, KC_MINUS, KC_BSLS, _______, _______, _______, _______, _______, _______, _______, KC_1, KC_2, KC_3, KC_EQUAL, _______, @@ -59,7 +76,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), // Secondary symbol layer, also Lower - [_LOWER] = LAYOUT( + [_LOWER] = LAYOUT_split_space( KC_TILD, _______, _______, _______, _______, _______, _______, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_SLCK, KC_PAUS, KC_CAPS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_DLR, KC_PERC, KC_CIRC, KC_UNDS, KC_PIPE, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_EXLM, KC_AT, KC_HASH, KC_PLUS, _______, @@ -67,7 +84,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), // Numpad layer // Also a homage to Planck with the media player/pause button - [_RAISE] = LAYOUT( + [_RAISE] = LAYOUT_split_space( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -75,26 +92,26 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), // Safety layer for special functions - [_ADJUST] = LAYOUT( + [_ADJUST] = LAYOUT_split_space( _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, DP_ON, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), - [_DPAD] = LAYOUT( + [_DPAD] = LAYOUT_split_space( KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_BSPC, KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_ENT, KC_LCTL, KC_LGUI, KC_LALT, XXXXXXX, DPADNUM, KC_SPC, DP_OFF, KC_LEFT, KC_DOWN, KC_RGHT ), - [_DPADNUM] = LAYOUT( + [_DPADNUM] = LAYOUT_split_space( _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, _______, _______, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, _______, _______, _______, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), + ) }; bool process_record_user(uint16_t keycode, keyrecord_t *record) { @@ -136,15 +153,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -void led_set_user(uint8_t usb_led) { - if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) { - // Turn capslock on - writePinLow(E6); - - - } else { - // Turn capslock off - writePinHigh(E6); - } -} diff --git a/keyboards/evyd13/atom47/keymaps/via/keymap.c b/keyboards/evyd13/atom47/keymaps/via/keymap.c new file mode 100644 index 000000000000..686a4d3dbe80 --- /dev/null +++ b/keyboards/evyd13/atom47/keymaps/via/keymap.c @@ -0,0 +1,44 @@ +/* +Copyright 2021 Evelien 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 . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_split_space( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, MO(2), + KC_LCTL, KC_LGUI, KC_LALT, MO(3), KC_SPC, KC_SPC, MO(1), KC_RALT, KC_APP, KC_RCTRL), + +[1] = LAYOUT_split_space( + _______, KC_VOLD, KC_VOLU, KC_MUTE, RESET, _______, KC_CALC, KC_PGUP, KC_UP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, + KC_CAPS, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT, KC_INS, _______, + _______, _______, _______, _______, _______, _______, _______, BL_TOGG, BL_DEC, BL_INC, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + +[2] = LAYOUT_split_space( + 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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, + _______, _______, _______, _______, _______, KC_QUOT, KC_SLSH, KC_LBRC, KC_RBRC, KC_BSLS, KC_RSFT, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + +[3] = LAYOUT_split_space( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, + RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET), +}; diff --git a/keyboards/evyd13/atom47/keymaps/via/rules.mk b/keyboards/evyd13/atom47/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/evyd13/atom47/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/evyd13/atom47/readme.md b/keyboards/evyd13/atom47/readme.md index 70171c04d1a4..30ad714a7a61 100644 --- a/keyboards/evyd13/atom47/readme.md +++ b/keyboards/evyd13/atom47/readme.md @@ -3,24 +3,13 @@ ![Atom47](https://i.imgur.com/Wwflqvt.png) ## Support -Keyboard Maintainer: [Evyd13](https://github.com/evyd13) -Hardware Supported: Atom47 rev2/rev3 -Hardware Availability: [GeekHack.com Group Buy](https://geekhack.org/index.php?topic=93447.msg2545221) - - -## Features (rev3 and up) -- QMK Firmware -- 6 Underglow RGB leds -- In-switch leds -- Through-hole micro usb connector (less likely to break off!) -- South facing leds for the QMX/Zealencio users -- Multiple layouts -- Easily reachable reset button under the spacebar -- CapsLock indicator +* Keyboard Maintainer: [Evelien Dekkers](https://github.com/evyd13) +* Hardware Supported: Atom47 rev2/rev3/rev4/rev5 +* Hardware Availability: [Open source on GitHub](https://github.com/evyd13/atom47) ## Build -To build the default keymap for the latest revision, simply run `make atom47:default`. Specifiy the revision like so: `make atom47/rev3:default`. +Make example for this keyboard (after setting up your build environment): -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. + make evyd13/atom47/rev5:default -![Atom47](https://i.imgur.com/JfYnOba.jpg) +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/evyd13/atom47/rev2/config.h b/keyboards/evyd13/atom47/rev2/config.h index 62e72723dcf9..95fc7a478964 100644 --- a/keyboards/evyd13/atom47/rev2/config.h +++ b/keyboards/evyd13/atom47/rev2/config.h @@ -1,5 +1,5 @@ /* -Copyright 2012 Evy Dekkers +Copyright 2021 Evelien 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 @@ -15,17 +15,16 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#ifndef REV2_CONFIG_H -#define REV2_CONFIG_H +#pragma once #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x6060 -#define DEVICE_VER 0x0003 -#define MANUFACTURER Vortex -#define PRODUCT Core +#define VENDOR_ID 0x4705 +#define PRODUCT_ID 0x8E66 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Evyd13 +#define PRODUCT Atom47 rev2 /* key matrix size */ #define MATRIX_ROWS 4 @@ -37,7 +36,6 @@ along with this program. If not, see . #define MATRIX_COL_PINS {D7,D5,F0,F1,F4,F6,F7,D4,C7,C6,D6,B5,B4} #define UNUSED_PINS -#define BACKLIGHT_PIN B6 /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW @@ -55,13 +53,15 @@ along with this program. If not, see . /* Backlight configuration */ +#define BACKLIGHT_PIN B6 +#define BACKLIGHT_BREATHING #define BACKLIGHT_LEVELS 4 +#define LED_CAPS_LOCK_PIN F5 + #define RGB_DI_PIN D0 // The pin the LED strip is connected to #define RGBLED_NUM 1 // Number of LEDs in your strip #define QMK_ESC_OUTPUT D7 // usually COL -#define QMK_ESC_INPUT B1 // usually ROW +#define QMK_ESC_INPUT B7 // usually ROW #define QMK_LED B6 - -#endif diff --git a/keyboards/evyd13/atom47/rev2/info.json b/keyboards/evyd13/atom47/rev2/info.json index aa15e76064af..5603c0e24761 100644 --- a/keyboards/evyd13/atom47/rev2/info.json +++ b/keyboards/evyd13/atom47/rev2/info.json @@ -1,12 +1,61 @@ { - "keyboard_name": "Atom47", - "url": "", - "maintainer": "evyd13", - "width": 13, - "height": 4, - "layouts": { - "LAYOUT": { - "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":0, "y":1, "w":1.25}, {"x":1.25, "y":1}, {"x":2.25, "y":1}, {"x":3.25, "y":1}, {"x":4.25, "y":1}, {"x":5.25, "y":1}, {"x":6.25, "y":1}, {"x":7.25, "y":1}, {"x":8.25, "y":1}, {"x":9.25, "y":1}, {"x":10.25, "y":1}, {"x":11.25, "y":1, "w":1.75}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2, "w":1.25}, {"x":12, "y":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3, "w":1.75}, {"x":6, "y":3, "w":2.75}, {"x":8.75, "y":3}, {"x":9.75, "y":3}, {"x":10.75, "y":3}, {"x":11.75, "y":3, "w":1.25}] + "keyboard_name": "Atom47 rev2", + "url": "", + "maintainer": "evyd13", + "layouts": { + "LAYOUT_split_space": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + + {"x":0, "y":1, "w":1.25}, + {"x":1.25, "y":1}, + {"x":2.25, "y":1}, + {"x":3.25, "y":1}, + {"x":4.25, "y":1}, + {"x":5.25, "y":1}, + {"x":6.25, "y":1}, + {"x":7.25, "y":1}, + {"x":8.25, "y":1}, + {"x":9.25, "y":1}, + {"x":10.25, "y":1}, + {"x":11.25, "y":1, "w":1.75}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2, "w":1.25}, + {"x":12, "y":2}, + + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3, "w":1.75}, + {"x":6, "y":3, "w":2.75}, + {"x":8.75, "y":3}, + {"x":9.75, "y":3}, + {"x":10.75, "y":3}, + {"x":11.75, "y":3, "w":1.25} + ] + } } - } } diff --git a/keyboards/evyd13/atom47/rev2/rev2.c b/keyboards/evyd13/atom47/rev2/rev2.c index 06fce06dad41..adb21be36850 100644 --- a/keyboards/evyd13/atom47/rev2/rev2.c +++ b/keyboards/evyd13/atom47/rev2/rev2.c @@ -1,34 +1,18 @@ -#include "rev2.h" -#include "led.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - matrix_init_user(); - led_init_ports(); -}; +/* +Copyright 2021 Evelien Dekkers -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - matrix_scan_user(); -}; +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. -void led_init_ports(void) { - // * Set our LED pins as output - DDRB &= ~(1<<5); +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. - //Set output high, so the capslock led is off - PORTB |= (1 << 5); -} +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ -void led_set_kb(uint8_t usb_led) { - if (usb_led & (1<. +*/ + +#pragma once #include "quantum.h" // readability #define XXX KC_NO -#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, k1c, \ - k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2c, \ - k30, k31, k32, k33, k34, k36, k38, k39, k3a, k3c \ +#define LAYOUT_all LAYOUT_split_space + +#define LAYOUT_split_space( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1c, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2c, \ + k30, k31, k32, k33, k34, k36, k38, k39, k3a, k3c \ ) \ { \ - {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c}, \ - {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, XXX, k1c}, \ - {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, XXX, k2c}, \ - {k30, k31, k32, k33, k34, XXX, k36, XXX, k38, k39, k3a, XXX, k3c} \ + {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c}, \ + {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, XXX, k1c}, \ + {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, XXX, k2c}, \ + {k30, k31, k32, k33, k34, XXX, k36, XXX, k38, k39, k3a, XXX, k3c} \ } void matrix_init_user(void); void matrix_scan_user(void); - -#endif diff --git a/keyboards/evyd13/atom47/rev2/rules.mk b/keyboards/evyd13/atom47/rev2/rules.mk index 0b6b8799863f..632bdae8f307 100644 --- a/keyboards/evyd13/atom47/rev2/rules.mk +++ b/keyboards/evyd13/atom47/rev2/rules.mk @@ -1,2 +1,2 @@ -NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -RGBLIGHT_ENABLE = no # Enable keyboard underlight functionality +# Build Options +RGBLIGHT_ENABLE = no diff --git a/keyboards/evyd13/atom47/rev3/config.h b/keyboards/evyd13/atom47/rev3/config.h index f585ddda9e3e..4e53abd01e08 100644 --- a/keyboards/evyd13/atom47/rev3/config.h +++ b/keyboards/evyd13/atom47/rev3/config.h @@ -1,5 +1,5 @@ /* -Copyright 2012 Evy Dekkers +Copyright 2021 Evelien 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 @@ -15,17 +15,16 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#ifndef REV3_CONFIG_H -#define REV3_CONFIG_H +#pragma once #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x6060 -#define DEVICE_VER 0x0003 -#define MANUFACTURER Vortex -#define PRODUCT Core +#define VENDOR_ID 0x4705 +#define PRODUCT_ID 0x0E6D +#define DEVICE_VER 0x0001 +#define MANUFACTURER Evyd13 +#define PRODUCT Atom47 rev3 /* key matrix size */ #define MATRIX_ROWS 4 @@ -37,7 +36,6 @@ along with this program. If not, see . #define MATRIX_COL_PINS {B7,F0,F1,F4,F6,D4,D6,D7,B4,B5,C6,C7,F7} #define UNUSED_PINS -#define BACKLIGHT_PIN B6 /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW @@ -50,13 +48,15 @@ along with this program. If not, see . /* Backlight configuration */ -#define BACKLIGHT_LEVELS 4 +#define BACKLIGHT_PIN B6 +#define BACKLIGHT_BREATHING +#define BACKLIGHT_LEVELS 5 + +#define LED_CAPS_LOCK_PIN E6 #define RGB_DI_PIN F5 // The pin the LED strip is connected to #define RGBLED_NUM 6 // Number of LEDs in your strip #define RGBLIGHT_ANIMATIONS #define QMK_ESC_OUTPUT B7 // usually COL -#define QMK_ESC_INPUT B3 // usually ROW +#define QMK_ESC_INPUT B0 // usually ROW #define QMK_LED E6 - -#endif diff --git a/keyboards/evyd13/atom47/rev3/info.json b/keyboards/evyd13/atom47/rev3/info.json index aa15e76064af..fc602f699b62 100644 --- a/keyboards/evyd13/atom47/rev3/info.json +++ b/keyboards/evyd13/atom47/rev3/info.json @@ -1,12 +1,113 @@ { - "keyboard_name": "Atom47", - "url": "", - "maintainer": "evyd13", - "width": 13, - "height": 4, - "layouts": { - "LAYOUT": { - "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":0, "y":1, "w":1.25}, {"x":1.25, "y":1}, {"x":2.25, "y":1}, {"x":3.25, "y":1}, {"x":4.25, "y":1}, {"x":5.25, "y":1}, {"x":6.25, "y":1}, {"x":7.25, "y":1}, {"x":8.25, "y":1}, {"x":9.25, "y":1}, {"x":10.25, "y":1}, {"x":11.25, "y":1, "w":1.75}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2, "w":1.25}, {"x":12, "y":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3, "w":1.75}, {"x":6, "y":3, "w":2.75}, {"x":8.75, "y":3}, {"x":9.75, "y":3}, {"x":10.75, "y":3}, {"x":11.75, "y":3, "w":1.25}] + "keyboard_name": "Atom47 rev3", + "url": "", + "maintainer": "evyd13", + "layouts": { + "LAYOUT_split_space": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + + {"x":0, "y":1, "w":1.25}, + {"x":1.25, "y":1}, + {"x":2.25, "y":1}, + {"x":3.25, "y":1}, + {"x":4.25, "y":1}, + {"x":5.25, "y":1}, + {"x":6.25, "y":1}, + {"x":7.25, "y":1}, + {"x":8.25, "y":1}, + {"x":9.25, "y":1}, + {"x":10.25, "y":1}, + {"x":11.25, "y":1, "w":1.75}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2, "w":1.25}, + {"x":12, "y":2}, + + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3, "w":1.75}, + {"x":6, "y":3, "w":2.75}, + {"x":8.75, "y":3}, + {"x":9.75, "y":3}, + {"x":10.75, "y":3}, + {"x":11.75, "y":3, "w":1.25} + ] + }, + "LAYOUT_full_space": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + + {"x":0, "y":1, "w":1.25}, + {"x":1.25, "y":1}, + {"x":2.25, "y":1}, + {"x":3.25, "y":1}, + {"x":4.25, "y":1}, + {"x":5.25, "y":1}, + {"x":6.25, "y":1}, + {"x":7.25, "y":1}, + {"x":8.25, "y":1}, + {"x":9.25, "y":1}, + {"x":10.25, "y":1}, + {"x":11.25, "y":1, "w":1.75}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2, "w":1.25}, + {"x":12, "y":2}, + + {"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/rev3/rev3.c b/keyboards/evyd13/atom47/rev3/rev3.c index c541ed559c69..52fa91fbc492 100644 --- a/keyboards/evyd13/atom47/rev3/rev3.c +++ b/keyboards/evyd13/atom47/rev3/rev3.c @@ -1,27 +1,18 @@ -#include "rev3.h" -#include "led.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - matrix_init_user(); - led_init_ports(); -}; +/* +Copyright 2021 Evelien Dekkers -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - matrix_scan_user(); -}; +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. -void led_init_ports(void) { - // * Set our LED pins as output - DDRE |= (1 << 6); +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. - //Set output high, so the capslock led is off - PORTE |= (1 << 6); -} +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ -void led_set_kb(uint8_t usb_led) { - led_set_user(usb_led); -} +#include "rev3.h" diff --git a/keyboards/evyd13/atom47/rev3/rev3.h b/keyboards/evyd13/atom47/rev3/rev3.h index ad875bb404fd..aa2e53ba227d 100644 --- a/keyboards/evyd13/atom47/rev3/rev3.h +++ b/keyboards/evyd13/atom47/rev3/rev3.h @@ -1,23 +1,51 @@ -#ifndef ATOM47_REV3_H -#define ATOM47_REV3_H +/* +Copyright 2021 Evelien 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 . +*/ + +#pragma once #include "quantum.h" // readability #define XXX KC_NO -#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, k1c, \ - k20, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, \ - k30, k31, k32, k33, k35, k37, k39, k3a, k3b, k3c \ +#define LAYOUT_all LAYOUT_split_space + +#define LAYOUT_split_space( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1c, \ + k20, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, \ + k30, k31, k32, k33, k35, k37, k39, k3a, k3b, k3c \ ) \ { \ - {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c}, \ - {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, XXX, k1c}, \ - {k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c}, \ - {k30, k31, k32, k33, XXX, k35, XXX, k37, XXX, k39, k3a, k3b, k3c} \ + {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c}, \ + {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, XXX, k1c}, \ + {k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c}, \ + {k30, k31, k32, k33, XXX, k35, XXX, k37, XXX, k39, k3a, k3b, k3c} \ } - -#endif +#define LAYOUT_full_space( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1c, \ + k20, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, \ + k30, k31, k32, k37, k39, k3a, k3b, k3c \ +) \ +{ \ + {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c}, \ + {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, XXX, k1c}, \ + {k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c}, \ + {k30, k31, k32, XXX, XXX, XXX, XXX, k37, XXX, k39, k3a, k3b, k3c} \ +} diff --git a/keyboards/evyd13/atom47/rev3/rules.mk b/keyboards/evyd13/atom47/rev3/rules.mk index 2df225e389f2..e69de29bb2d1 100644 --- a/keyboards/evyd13/atom47/rev3/rules.mk +++ b/keyboards/evyd13/atom47/rev3/rules.mk @@ -1,2 +0,0 @@ -NKRO_ENABLE = no # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality diff --git a/keyboards/evyd13/atom47/rev4/config.h b/keyboards/evyd13/atom47/rev4/config.h new file mode 100644 index 000000000000..02a1b16755b7 --- /dev/null +++ b/keyboards/evyd13/atom47/rev4/config.h @@ -0,0 +1,58 @@ +/* +Copyright 2021 Evelien 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 . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4705 +#define PRODUCT_ID 0x8446 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Evyd13 +#define PRODUCT Atom47 rev4 + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 13 + +// ROWS: Top to bottom, COLS: Left to right + +#define MATRIX_ROW_PINS {D0,C2,C5,C6} +#define MATRIX_COL_PINS {C4,C7,B7,B6,B5,B2,B1,B0,D6,D5,D4,D3,D2} +#define UNUSED_PINS + +#define ENCODERS_PAD_A { B3 } +#define ENCODERS_PAD_B { B4 } + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* Backlight configuration + */ + +#define QMK_ESC_OUTPUT C4 // usually COL +#define QMK_ESC_INPUT C6 // usually ROW +#define QMK_LED D1 + +#define LED_CAPS_LOCK_PIN D1 diff --git a/keyboards/evyd13/atom47/rev4/info.json b/keyboards/evyd13/atom47/rev4/info.json new file mode 100644 index 000000000000..d0fbf98742e8 --- /dev/null +++ b/keyboards/evyd13/atom47/rev4/info.json @@ -0,0 +1,113 @@ +{ + "keyboard_name": "Atom47 rev4", + "url": "", + "maintainer": "evyd13", + "layouts": { + "LAYOUT_split_space": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + + {"x":0, "y":1, "w":1.25}, + {"x":1.25, "y":1}, + {"x":2.25, "y":1}, + {"x":3.25, "y":1}, + {"x":4.25, "y":1}, + {"x":5.25, "y":1}, + {"x":6.25, "y":1}, + {"x":7.25, "y":1}, + {"x":8.25, "y":1}, + {"x":9.25, "y":1}, + {"x":10.25, "y":1}, + {"x":11.25, "y":1, "w":1.75}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2, "w":1.25}, + {"x":12, "y":2}, + + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3, "w":1.75}, + {"x":6, "y":3, "w":2.75}, + {"x":8.75, "y":3}, + {"x":9.75, "y":3}, + {"x":10.75, "y":3}, + {"x":11.75, "y":3, "w":1.25} + ] + }, + "LAYOUT_full_space": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + + {"x":0, "y":1, "w":1.25}, + {"x":1.25, "y":1}, + {"x":2.25, "y":1}, + {"x":3.25, "y":1}, + {"x":4.25, "y":1}, + {"x":5.25, "y":1}, + {"x":6.25, "y":1}, + {"x":7.25, "y":1}, + {"x":8.25, "y":1}, + {"x":9.25, "y":1}, + {"x":10.25, "y":1}, + {"x":11.25, "y":1, "w":1.75}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2, "w":1.25}, + {"x":12, "y":2}, + + {"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/rev4.c b/keyboards/evyd13/atom47/rev4/rev4.c new file mode 100644 index 000000000000..0ac2a41acc03 --- /dev/null +++ b/keyboards/evyd13/atom47/rev4/rev4.c @@ -0,0 +1,18 @@ +/* +Copyright 2021 Evelien 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 . +*/ + +#include "rev4.h" diff --git a/keyboards/evyd13/atom47/rev4/rev4.h b/keyboards/evyd13/atom47/rev4/rev4.h new file mode 100644 index 000000000000..aa2e53ba227d --- /dev/null +++ b/keyboards/evyd13/atom47/rev4/rev4.h @@ -0,0 +1,51 @@ +/* +Copyright 2021 Evelien 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 . +*/ + +#pragma once + +#include "quantum.h" + +// readability +#define XXX KC_NO + +#define LAYOUT_all LAYOUT_split_space + +#define LAYOUT_split_space( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1c, \ + k20, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, \ + k30, k31, k32, k33, k35, k37, k39, k3a, k3b, k3c \ +) \ +{ \ + {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c}, \ + {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, XXX, k1c}, \ + {k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c}, \ + {k30, k31, k32, k33, XXX, k35, XXX, k37, XXX, k39, k3a, k3b, k3c} \ +} + +#define LAYOUT_full_space( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1c, \ + k20, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, \ + k30, k31, k32, k37, k39, k3a, k3b, k3c \ +) \ +{ \ + {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c}, \ + {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, XXX, k1c}, \ + {k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c}, \ + {k30, k31, k32, XXX, XXX, XXX, XXX, k37, XXX, k39, k3a, k3b, k3c} \ +} diff --git a/keyboards/evyd13/atom47/rev4/rules.mk b/keyboards/evyd13/atom47/rev4/rules.mk new file mode 100644 index 000000000000..3bce3b43af54 --- /dev/null +++ b/keyboards/evyd13/atom47/rev4/rules.mk @@ -0,0 +1,7 @@ +# MCU name +MCU = atmega32u2 + +# Build Options +ENCODER_ENABLE = yes +BACKLIGHT_ENABLE = no +RGBLIGHT_ENABLE = no \ No newline at end of file diff --git a/keyboards/evyd13/atom47/rev5/config.h b/keyboards/evyd13/atom47/rev5/config.h new file mode 100644 index 000000000000..383aa23789fb --- /dev/null +++ b/keyboards/evyd13/atom47/rev5/config.h @@ -0,0 +1,210 @@ +/* +Copyright 2021 Evelien 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 . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4705 +#define PRODUCT_ID 0x92EA +#define DEVICE_VER 0x0001 +#define MANUFACTURER Evyd13 +#define PRODUCT Atom47 rev5 + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 13 + +/* + * 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 {B1,B2,B3,D4} +#define MATRIX_COL_PINS {F0,F1,F4,F5,F6,F7,E6,D7,B4,B5,B6,C6,C7} +#define UNUSED_PINS {B0,B7,D2,D3,D5,D6} + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +//#define LED_NUM_LOCK_PIN B0 +//#define LED_CAPS_LOCK_PIN B1 +//#define LED_SCROLL_LOCK_PIN B2 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +//#define RGB_DI_PIN E2 +//#ifdef RGB_DI_PIN +//# define RGBLED_NUM 16 +//# define RGBLIGHT_HUE_STEP 8 +//# define RGBLIGHT_SAT_STEP 8 +//# define RGBLIGHT_VAL_STEP 8 +//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +//# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +//#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 + +// This is a 7-bit address, that gets left-shifted and bit 0 +// set to 0 for write, 1 for read (as per I2C protocol) +// The address will vary depending on your wiring: +// 00 <-> GND +// 01 <-> SCL +// 10 <-> SDA +// 11 <-> VCC +// ADDR1 represents A1:A0 of the 7-bit address. +// ADDR2 represents A3:A2 of the 7-bit address. +// The result is: 0b101(ADDR2)(ADDR1) +#define DRIVER_ADDR_1 0b1010000 +#define DRIVER_COUNT 1 +#define DRIVER_LED_TOTAL 64 + +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH diff --git a/keyboards/evyd13/atom47/rev5/info.json b/keyboards/evyd13/atom47/rev5/info.json new file mode 100644 index 000000000000..eae42fe7464b --- /dev/null +++ b/keyboards/evyd13/atom47/rev5/info.json @@ -0,0 +1,61 @@ +{ + "keyboard_name": "Atom47 rev5", + "url": "", + "maintainer": "evyd13", + "layouts": { + "LAYOUT_split_space": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + + {"x":0, "y":1, "w":1.25}, + {"x":1.25, "y":1}, + {"x":2.25, "y":1}, + {"x":3.25, "y":1}, + {"x":4.25, "y":1}, + {"x":5.25, "y":1}, + {"x":6.25, "y":1}, + {"x":7.25, "y":1}, + {"x":8.25, "y":1}, + {"x":9.25, "y":1}, + {"x":10.25, "y":1}, + {"x":11.25, "y":1, "w":1.75}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2, "w":1.25}, + {"x":12, "y":2}, + + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3, "w":1.75}, + {"x":6, "y":3, "w":2.75}, + {"x":8.75, "y":3}, + {"x":9.75, "y":3}, + {"x":10.75, "y":3}, + {"x":11.75, "y":3, "w":1.25} + ] + } + } +} diff --git a/keyboards/evyd13/atom47/rev5/rev5.c b/keyboards/evyd13/atom47/rev5/rev5.c new file mode 100644 index 000000000000..f972b78867c8 --- /dev/null +++ b/keyboards/evyd13/atom47/rev5/rev5.c @@ -0,0 +1,153 @@ +/* +Copyright 2021 Evelien 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 . +*/ + +#include "rev5.h" + +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { +/* Refer to IS31 manual for these locations + * driver + * | R location + * | | G location + * | | | B location + * | | | | */ + {0, B_1, C_1, A_1}, + {0, B_2, C_2, A_2}, + {0, B_3, C_3, A_3}, + {0, B_4, C_4, A_4}, + {0, B_5, C_5, A_5}, + {0, B_6, C_6, A_6}, + {0, B_7, C_7, A_7}, + {0, B_8, C_8, A_8}, + {0, B_9, C_9, A_9}, + {0, B_10, C_10, A_10}, + {0, B_11, C_11, A_11}, + {0, B_12, C_12, A_12}, + {0, B_13, C_13, A_13}, + + {0, E_1, F_1, D_1}, + {0, E_2, F_2, D_2}, + {0, E_3, F_3, D_3}, + {0, E_4, F_4, D_4}, + {0, E_5, F_5, D_5}, + {0, E_6, F_6, D_6}, + {0, E_7, F_7, D_7}, + {0, E_8, F_8, D_8}, + {0, E_9, F_9, D_9}, + {0, E_10, F_10, D_10}, + {0, E_11, F_11, D_11}, + {0, E_13, F_13, D_13}, + + {0, H_1, I_1, G_1}, + {0, H_2, I_2, G_2}, + {0, H_3, I_3, G_3}, + {0, H_4, I_4, G_4}, + {0, H_5, I_5, G_5}, + {0, H_6, I_6, G_6}, + {0, H_7, I_7, G_7}, + {0, H_8, I_8, G_8}, + {0, H_9, I_9, G_9}, + {0, H_10, I_10, G_10}, + {0, H_11, I_11, G_11}, + {0, H_12, I_12, G_12}, + {0, H_13, I_13, G_13}, + + {0, K_1, L_1, J_1}, + {0, K_2, L_2, J_2}, + {0, K_3, L_3, J_3}, + {0, K_4, L_4, J_4}, + {0, K_6, L_6, J_6}, + {0, K_8, L_8, J_8}, + {0, K_10, L_10, J_10}, + {0, K_11, L_11, J_11}, + {0, K_12, L_12, J_12}, + {0, K_13, L_13, J_13} +}; + +led_config_t g_led_config = { { + // Key Matrix to LED Index + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }, + { 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, NO_LED, 24 }, + { 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37 }, + { 38, 39, 40, 41, NO_LED, 42, NO_LED, 43, NO_LED, 44, 45, 46, 47 } +}, { + // LED Index to Physical Position + { 9, 8 }, + { 26, 8 }, + { 43, 8 }, + { 60, 8 }, + { 78, 8 }, + { 95, 8 }, + { 112, 8 }, + { 129, 8 }, + { 146, 8 }, + { 164, 8 }, + { 181, 8 }, + { 198, 8 }, + { 215, 8 }, + + { 11, 24 }, + { 30, 24 }, + { 47, 24 }, + { 64, 24 }, + { 82, 24 }, + { 99, 24 }, + { 116, 24 }, + { 134, 24 }, + { 151, 24 }, + { 168, 24 }, + { 185, 24 }, + { 209, 24 }, + + { 15, 40 }, + { 20, 22 }, + { 39, 40 }, + { 56, 40 }, + { 73, 40 }, + { 90, 40 }, + { 108, 40 }, + { 125, 40 }, + { 142, 40 }, + { 159, 40 }, + { 177, 40 }, + { 196, 40 }, + { 215, 40 }, + + { 11, 56 }, + { 30, 56 }, + { 47, 56 }, + { 64, 56 }, + { 88, 56 }, + { 127, 56 }, + { 159, 56 }, + { 177, 56 }, + { 194, 56 }, + { 213, 56 }, +}, { + // LED Index to Flag + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 1, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 +} }; + +void rgb_matrix_indicators_kb(void) { + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color(26, 255, 255, 255); + } else { + rgb_matrix_set_color(26, 0, 0, 0); + } +} diff --git a/keyboards/evyd13/atom47/rev5/rev5.h b/keyboards/evyd13/atom47/rev5/rev5.h new file mode 100644 index 000000000000..874dc285abde --- /dev/null +++ b/keyboards/evyd13/atom47/rev5/rev5.h @@ -0,0 +1,38 @@ +/* +Copyright 2021 Evelien 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 . +*/ + +#pragma once + +#include "quantum.h" + +// readability +#define XXX KC_NO + +#define LAYOUT_all LAYOUT_split_space + +#define LAYOUT_split_space( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1c, \ + k20, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, \ + k30, k31, k32, k33, k35, k37, k39, k3a, k3b, k3c \ +) \ +{ \ + {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c}, \ + {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, XXX, k1c}, \ + {k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c}, \ + {k30, k31, k32, k33, XXX, k35, XXX, k37, XXX, k39, k3a, k3b, k3c} \ +} diff --git a/keyboards/evyd13/atom47/rev5/rules.mk b/keyboards/evyd13/atom47/rev5/rules.mk new file mode 100644 index 000000000000..3f2f8d3dd74c --- /dev/null +++ b/keyboards/evyd13/atom47/rev5/rules.mk @@ -0,0 +1,2 @@ +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = IS31FL3733 diff --git a/keyboards/evyd13/atom47/rules.mk b/keyboards/evyd13/atom47/rules.mk index 72c0b219b961..c1c01180c979 100644 --- a/keyboards/evyd13/atom47/rules.mk +++ b/keyboards/evyd13/atom47/rules.mk @@ -2,27 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = qmk-dfu # Build Options -# comment out to disable the options. +# change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration -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 -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output -DEFAULT_FOLDER = evyd13/atom47/rev3 +DEFAULT_FOLDER = evyd13/atom47/rev4 diff --git a/keyboards/evyd13/eon40/config.h b/keyboards/evyd13/eon40/config.h index 625576c74f75..8f39d0532ed1 100644 --- a/keyboards/evyd13/eon40/config.h +++ b/keyboards/evyd13/eon40/config.h @@ -123,59 +123,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -194,26 +141,6 @@ //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/evyd13/eon40/info.json b/keyboards/evyd13/eon40/info.json index 056be65d0da8..38348b49b9c9 100644 --- a/keyboards/evyd13/eon40/info.json +++ b/keyboards/evyd13/eon40/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Eon40", "url": "https://maartenwut.com/product/eon40/", "maintainer": "qmk", - "width": 12, - "height": 4, "layouts": { "LAYOUT_ortho_4x12": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}] diff --git a/keyboards/evyd13/eon40/rules.mk b/keyboards/evyd13/eon40/rules.mk index 969a296835ec..d405ad0c72cc 100644 --- a/keyboards/evyd13/eon40/rules.mk +++ b/keyboards/evyd13/eon40/rules.mk @@ -2,33 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = qmk-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes LAYOUTS = ortho_4x12 planck_mit diff --git a/keyboards/evyd13/eon65/config.h b/keyboards/evyd13/eon65/config.h index ffcde47f673f..7d4e80d5bbe2 100644 --- a/keyboards/evyd13/eon65/config.h +++ b/keyboards/evyd13/eon65/config.h @@ -120,59 +120,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -191,26 +138,6 @@ //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/evyd13/eon65/info.json b/keyboards/evyd13/eon65/info.json index 1a9f7495762c..41b1b056ee37 100644 --- a/keyboards/evyd13/eon65/info.json +++ b/keyboards/evyd13/eon65/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Eon65", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/evyd13/eon65/rules.mk b/keyboards/evyd13/eon65/rules.mk index 9c35f1e1aea2..65efce641774 100644 --- a/keyboards/evyd13/eon65/rules.mk +++ b/keyboards/evyd13/eon65/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = 65_ansi 65_ansi_blocker 65_iso 65_iso_blocker diff --git a/keyboards/evyd13/eon75/config.h b/keyboards/evyd13/eon75/config.h index d7d84de2a363..da2775fd40ca 100644 --- a/keyboards/evyd13/eon75/config.h +++ b/keyboards/evyd13/eon75/config.h @@ -125,59 +125,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -196,27 +143,6 @@ //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 - diff --git a/keyboards/evyd13/eon75/info.json b/keyboards/evyd13/eon75/info.json index 9066542a1f36..9730b069e842 100644 --- a/keyboards/evyd13/eon75/info.json +++ b/keyboards/evyd13/eon75/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Eon75", "url": "", "maintainer": "qmk", - "width": 16.5, - "height": 6.5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/evyd13/eon75/rules.mk b/keyboards/evyd13/eon75/rules.mk index b78fcc9f5ae9..5a4811cd656d 100644 --- a/keyboards/evyd13/eon75/rules.mk +++ b/keyboards/evyd13/eon75/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/evyd13/eon87/config.h b/keyboards/evyd13/eon87/config.h index dcbac216c472..18a21bac27d9 100644 --- a/keyboards/evyd13/eon87/config.h +++ b/keyboards/evyd13/eon87/config.h @@ -120,59 +120,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -191,26 +138,6 @@ //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/evyd13/eon87/info.json b/keyboards/evyd13/eon87/info.json index b0ed86a7ead0..1020ccd06ed8 100644 --- a/keyboards/evyd13/eon87/info.json +++ b/keyboards/evyd13/eon87/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Eon87", "url": "", "maintainer": "qmk", - "width": 18.25, - "height": 6.25, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/evyd13/eon87/rules.mk b/keyboards/evyd13/eon87/rules.mk index 101ebacc81e6..38b86134c925 100644 --- a/keyboards/evyd13/eon87/rules.mk +++ b/keyboards/evyd13/eon87/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = qmk-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # 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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = tkl_ansi tkl_iso diff --git a/keyboards/evyd13/eon95/config.h b/keyboards/evyd13/eon95/config.h index 2d9ede3ee27a..48de3f3782d8 100644 --- a/keyboards/evyd13/eon95/config.h +++ b/keyboards/evyd13/eon95/config.h @@ -125,59 +125,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -196,26 +143,6 @@ //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/evyd13/eon95/info.json b/keyboards/evyd13/eon95/info.json index 6580ef66ee5c..18cb38ad2f25 100644 --- a/keyboards/evyd13/eon95/info.json +++ b/keyboards/evyd13/eon95/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Eon95", "url": "", "maintainer": "qmk", - "width": 19.5, - "height": 6.5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/evyd13/eon95/rules.mk b/keyboards/evyd13/eon95/rules.mk index b78fcc9f5ae9..5a4811cd656d 100644 --- a/keyboards/evyd13/eon95/rules.mk +++ b/keyboards/evyd13/eon95/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/evyd13/gh80_1800/info.json b/keyboards/evyd13/gh80_1800/info.json index b468320d8cc6..5019157c0603 100644 --- a/keyboards/evyd13/gh80_1800/info.json +++ b/keyboards/evyd13/gh80_1800/info.json @@ -2,8 +2,6 @@ "keyboard_name": "GH80-1800", "url": "https://github.com/evyd13/gh80-series/tree/master/GH80-1800", "maintainer": "evyd13", - "width": 19.5, - "height": 7.25, "layouts": { "LAYOUT_all": { "layout": [ @@ -353,4 +351,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/evyd13/gh80_1800/rules.mk b/keyboards/evyd13/gh80_1800/rules.mk index eaca844339d6..f4d32aad5ca4 100644 --- a/keyboards/evyd13/gh80_1800/rules.mk +++ b/keyboards/evyd13/gh80_1800/rules.mk @@ -7,15 +7,12 @@ BOOTLOADER = qmk-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # 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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth diff --git a/keyboards/evyd13/gh80_3700/gh80_3700.c b/keyboards/evyd13/gh80_3700/gh80_3700.c index f607a440e9aa..40093f10223f 100644 --- a/keyboards/evyd13/gh80_3700/gh80_3700.c +++ b/keyboards/evyd13/gh80_3700/gh80_3700.c @@ -15,14 +15,6 @@ */ #include "gh80_3700.h" -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); - led_init_ports(); -} - void led_init_ports(void) { setPinOutput(E6); setPinOutput(B1); diff --git a/keyboards/evyd13/gh80_3700/info.json b/keyboards/evyd13/gh80_3700/info.json index 9f3ff6e5ed56..8f6402a45e61 100644 --- a/keyboards/evyd13/gh80_3700/info.json +++ b/keyboards/evyd13/gh80_3700/info.json @@ -2,8 +2,6 @@ "keyboard_name": "GH80-3700", "url": "https://github.com/evyd13/gh80-series/tree/master/GH80-3700", "maintainer": "evyd13", - "width": 4, - "height": 7, "layouts": { "LAYOUT_ortho_6x4": { "layout": [ diff --git a/keyboards/evyd13/gh80_3700/keymaps/ps2/config.h b/keyboards/evyd13/gh80_3700/keymaps/ps2/config.h index 44ac7dcd034c..b77ac95d7d47 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/evyd13/gh80_3700/rules.mk b/keyboards/evyd13/gh80_3700/rules.mk index 01ea4754f450..7bc613b9a1e4 100644 --- a/keyboards/evyd13/gh80_3700/rules.mk +++ b/keyboards/evyd13/gh80_3700/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = qmk-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth ENCODER_ENABLE = yes # Enable support for rotary encoders LAYOUTS = numpad_6x4 ortho_6x4 diff --git a/keyboards/evyd13/gud70/config.h b/keyboards/evyd13/gud70/config.h new file mode 100644 index 000000000000..914a87f4f538 --- /dev/null +++ b/keyboards/evyd13/gud70/config.h @@ -0,0 +1,150 @@ +/* Copyright 2020 Evelien 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 . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4705 +#define PRODUCT_ID 0x198B +#define DEVICE_VER 0x0001 +#define MANUFACTURER Evyd13 +#define PRODUCT Gud70 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 16 + +/* + * 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 {D7,D6,D4,E6,B7} +#define MATRIX_COL_PINS {D5,D3,D2,D1,D0,B4,B5,B6,C6,C7,F0,F1,F4,F5,F6,F7} +#define UNUSED_PINS {} + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +#define LED_NUM_LOCK_PIN B2 +#define LED_CAPS_LOCK_PIN B1 +#define LED_SCROLL_LOCK_PIN B0 +#define LED_PIN_ON_STATE 0 + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +// #define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +// #define BACKLIGHT_PIN B7 +// #define BACKLIGHT_BREATHING +// #define BACKLIGHT_LEVELS 3 + +// #define RGB_DI_PIN E2 +// #ifdef RGB_DI_PIN +// #define RGBLED_NUM 16 +// #define RGBLIGHT_HUE_STEP 8 +// #define RGBLIGHT_SAT_STEP 8 +// #define RGBLIGHT_VAL_STEP 8 +// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +// /*== all animations enable ==*/ +// #define RGBLIGHT_ANIMATIONS +// /*== or choose animations ==*/ +// #define RGBLIGHT_EFFECT_BREATHING +// #define RGBLIGHT_EFFECT_RAINBOW_MOOD +// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL +// #define RGBLIGHT_EFFECT_SNAKE +// #define RGBLIGHT_EFFECT_KNIGHT +// #define RGBLIGHT_EFFECT_CHRISTMAS +// #define RGBLIGHT_EFFECT_STATIC_GRADIENT +// #define RGBLIGHT_EFFECT_RGB_TEST +// #define RGBLIGHT_EFFECT_ALTERNATING +// /*== customize breathing effect ==*/ +// /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +// #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +// /*==== use exp() and sin() ====*/ +// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +// #endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +// #define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +// #define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is userful for the Windows task manager shortcut (ctrl+shift+esc). + */ +// #define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/evyd13/gud70/gud70.c b/keyboards/evyd13/gud70/gud70.c new file mode 100644 index 000000000000..7b8c0a98f993 --- /dev/null +++ b/keyboards/evyd13/gud70/gud70.c @@ -0,0 +1,22 @@ +/* Copyright 2020 Evelien 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 . + */ +#include "gud70.h" + +void keyboard_pre_init_kb(void) { + // Enable top LED + setPinOutput(B3); + writePinLow(B3); +} diff --git a/keyboards/evyd13/gud70/gud70.h b/keyboards/evyd13/gud70/gud70.h new file mode 100644 index 000000000000..338fafd35128 --- /dev/null +++ b/keyboards/evyd13/gud70/gud70.h @@ -0,0 +1,73 @@ +/* Copyright 2020 Evelien 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 . + */ +#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 + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + +#define LAYOUT_all( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k1d, 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, k47, k4a, 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, 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, XXX, XXX, XXX, XXX, k47, XXX, XXX, k4a, k4b, k4c, k4d, k4e, k4f } \ +} + +#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, k2c, 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, k47, k4a, 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, k1e, k1f }, \ + { k20, k21, 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, k3e, k3f }, \ + { k40, k41, k42, XXX, XXX, XXX, XXX, k47, XXX, XXX, k4a, 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, 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, k47, k4a, 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, 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, XXX, XXX, XXX, XXX, k47, XXX, XXX, k4a, k4b, k4c, k4d, k4e, k4f } \ +} diff --git a/keyboards/evyd13/gud70/info.json b/keyboards/evyd13/gud70/info.json new file mode 100644 index 000000000000..bf0ac9df4ee1 --- /dev/null +++ b/keyboards/evyd13/gud70/info.json @@ -0,0 +1,250 @@ +{ + "keyboard_name": "Gud70", + "url": "https://github.com/evyd13/gud70-pcb", + "maintainer": "evyd13", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15, "y":0}, + {"x":16, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + {"x":15, "y":1}, + {"x":16, "y":1}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":15, "y":2}, + {"x":16, "y":2}, + + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + {"x":16, "y":3}, + + {"x":0, "y":4, "w":1.5}, + {"x":1.5, "y":4}, + {"x":2.5, "y":4, "w":1.5}, + {"x":4, "y":4, "w":6}, + {"x":10, "y":4, "w":1.5}, + {"x":11.5, "y":4}, + {"x":12.5, "y":4, "w":1.5}, + {"x":14, "y":4}, + {"x":15, "y":4}, + {"x":16, "y":4} + ] + }, + "LAYOUT_ansi": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":15, "y":0}, + {"x":16, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + {"x":15, "y":1}, + {"x":16, "y":1}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":15, "y":2}, + {"x":16, "y":2}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + {"x":16, "y":3}, + + {"x":0, "y":4, "w":1.5}, + {"x":1.5, "y":4}, + {"x":2.5, "y":4, "w":1.5}, + {"x":4, "y":4, "w":6}, + {"x":10, "y":4, "w":1.5}, + {"x":11.5, "y":4}, + {"x":12.5, "y":4, "w":1.5}, + {"x":14, "y":4}, + {"x":15, "y":4}, + {"x":16, "y":4} + ] + }, + "LAYOUT_iso": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":15, "y":0}, + {"x":16, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":15, "y":1}, + {"x":16, "y":1}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + {"x":13.75, "y":1, "w":1.25, "h":2}, + {"x":15, "y":2}, + {"x":16, "y":2}, + + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + {"x":16, "y":3}, + + {"x":0, "y":4, "w":1.5}, + {"x":1.5, "y":4}, + {"x":2.5, "y":4, "w":1.5}, + {"x":4, "y":4, "w":6}, + {"x":10, "y":4, "w":1.5}, + {"x":11.5, "y":4}, + {"x":12.5, "y":4, "w":1.5}, + {"x":14, "y":4}, + {"x":15, "y":4}, + {"x":16, "y":4} + ] + } + } +} diff --git a/keyboards/evyd13/gud70/keymaps/default/keymap.c b/keyboards/evyd13/gud70/keymaps/default/keymap.c new file mode 100644 index 000000000000..c1ec59573f1f --- /dev/null +++ b/keyboards/evyd13/gud70/keymaps/default/keymap.c @@ -0,0 +1,37 @@ +/* Copyright 2020 Evelien 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 . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + 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_BSLS, KC_BSPC, KC_INS, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, TO(2), KC_PGUP, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT), + [1] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + [2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, _______, KC_PMNS, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, KC_PPLS, KC_PAST, _______, _______, TO(0), _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_P0, _______, KC_PDOT, KC_PSLS, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), +}; diff --git a/keyboards/evyd13/gud70/keymaps/evyd13/keymap.c b/keyboards/evyd13/gud70/keymaps/evyd13/keymap.c new file mode 100644 index 000000000000..45c332a5d792 --- /dev/null +++ b/keyboards/evyd13/gud70/keymaps/evyd13/keymap.c @@ -0,0 +1,31 @@ +/* Copyright 2020 Evelien 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 . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + 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_BSLS, KC_BSPC, KC_INS, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, KC_MPLY, KC_PGUP, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(1), KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_APP), + [1] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), +}; diff --git a/keyboards/evyd13/gud70/keymaps/via/keymap.c b/keyboards/evyd13/gud70/keymaps/via/keymap.c new file mode 100644 index 000000000000..5fea39ebe01c --- /dev/null +++ b/keyboards/evyd13/gud70/keymaps/via/keymap.c @@ -0,0 +1,43 @@ +/* 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 . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + 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_BSLS, KC_BSPC, KC_INS, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, TO(2), KC_PGUP, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT), + [1] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + [2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, _______, KC_PMNS, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, KC_PPLS, KC_PAST, _______, _______, TO(0), _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_P0, _______, KC_PDOT, KC_PSLS, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + [3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), +}; \ No newline at end of file diff --git a/keyboards/evyd13/gud70/keymaps/via/rules.mk b/keyboards/evyd13/gud70/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/evyd13/gud70/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/evyd13/gud70/readme.md b/keyboards/evyd13/gud70/readme.md new file mode 100644 index 000000000000..706cbb296ccc --- /dev/null +++ b/keyboards/evyd13/gud70/readme.md @@ -0,0 +1,20 @@ +# Gud70 + +A replacement PCB for the Uniqey C70. + +* Keyboard Maintainer: [Evyd13](https://github.com/evyd13) +* Hardware Supported: Gud70 PCB +* Hardware Availability: [Open source on GitHub](https://github.com/evyd13/gud70-pcb) + + +To flash a new layout, press the reset button located under the space bar. + +Make example for this keyboard (after setting up your build environment): + + make evyd13/gud70:default + +Flashing example for this keyboard: + + make evyd13/gud70:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/evyd13/gud70/rules.mk b/keyboards/evyd13/gud70/rules.mk new file mode 100644 index 000000000000..edea111518b7 --- /dev/null +++ b/keyboards/evyd13/gud70/rules.mk @@ -0,0 +1,19 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = qmk-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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/evyd13/minitomic/config.h b/keyboards/evyd13/minitomic/config.h index f26b4d1d956c..ad31fd0aec02 100644 --- a/keyboards/evyd13/minitomic/config.h +++ b/keyboards/evyd13/minitomic/config.h @@ -123,59 +123,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -194,26 +141,6 @@ //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/evyd13/minitomic/info.json b/keyboards/evyd13/minitomic/info.json index 4af72b36e110..388569fac82d 100644 --- a/keyboards/evyd13/minitomic/info.json +++ b/keyboards/evyd13/minitomic/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Minitomic", "url": "", "maintainer": "qmk", - "width": 13, - "height": 4, "layouts": { "LAYOUT_split_space": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":0, "y":1, "w":1.25}, {"x":1.25, "y":1}, {"x":2.25, "y":1}, {"x":3.25, "y":1}, {"x":4.25, "y":1}, {"x":5.25, "y":1}, {"x":6.25, "y":1}, {"x":7.25, "y":1}, {"x":8.25, "y":1}, {"x":9.25, "y":1}, {"x":10.25, "y":1}, {"x":11.25, "y":1, "w":1.75}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2, "w":1.25}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3, "w":1.25}, {"x":2.5, "y":3}, {"x":3.5, "y":3}, {"x":4.5, "y":3, "w":1.75}, {"x":6.25, "y":3, "w":2}, {"x":8.25, "y":3}, {"x":9.25, "y":3, "w":1.25}, {"x":10.5, "y":3, "w":1.25}, {"x":11.75, "y":3, "w":1.25}] diff --git a/keyboards/evyd13/minitomic/rules.mk b/keyboards/evyd13/minitomic/rules.mk index ace928971257..d4ca9ee9fe59 100644 --- a/keyboards/evyd13/minitomic/rules.mk +++ b/keyboards/evyd13/minitomic/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = qmk-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/evyd13/mx5160/config.h b/keyboards/evyd13/mx5160/config.h index c65f81b87941..5cce240a87c5 100644 --- a/keyboards/evyd13/mx5160/config.h +++ b/keyboards/evyd13/mx5160/config.h @@ -129,59 +129,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -200,26 +147,6 @@ //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/evyd13/mx5160/info.json b/keyboards/evyd13/mx5160/info.json index af35cd70d63d..7c1a0bb396a5 100644 --- a/keyboards/evyd13/mx5160/info.json +++ b/keyboards/evyd13/mx5160/info.json @@ -2,11 +2,9 @@ "keyboard_name": "mx5160", "url": "https://github.com/evyd13/mx-5160", "maintainer": "qmk", - "width": 22, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2.5, "y":0}, {"x":3.5, "y":0}, {"x":4.5, "y":0}, {"x":5.5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":10.5, "y":0}, {"x":11.5, "y":0}, {"x":12.5, "y":0}, {"x":13.5, "y":0}, {"x":14.5, "y":0}, {"x":15.5, "y":0}, {"x":16.5, "y":0}, {"x":18, "y":0}, {"x":19, "y":0}, {"x":20, "y":0}, {"x":21, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2.5, "y":1, "w":1.5}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, {"x":15, "y":1}, {"x":16, "y":1, "w":1.5}, {"x":18, "y":1}, {"x":19, "y":1}, {"x":20, "y":1}, {"x":21, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2.5, "y":2, "w":1.75}, {"x":4.25, "y":2}, {"x":5.25, "y":2}, {"x":6.25, "y":2}, {"x":7.25, "y":2}, {"x":8.25, "y":2}, {"x":9.25, "y":2}, {"x":10.25, "y":2}, {"x":11.25, "y":2}, {"x":12.25, "y":2}, {"x":13.25, "y":2}, {"x":14.25, "y":2}, {"x":15.25, "y":2}, {"x":16.25, "y":2, "w":1.25}, {"x":18, "y":2}, {"x":19, "y":2}, {"x":20, "y":2}, {"x":21, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2.5, "y":3, "w":1.25}, {"x":3.75, "y":3}, {"x":4.75, "y":3}, {"x":5.75, "y":3}, {"x":6.75, "y":3}, {"x":7.75, "y":3}, {"x":8.75, "y":3}, {"x":9.75, "y":3}, {"x":10.75, "y":3}, {"x":11.75, "y":3}, {"x":12.75, "y":3}, {"x":13.75, "y":3}, {"x":14.75, "y":3, "w":1.75}, {"x":16.5, "y":3}, {"x":18, "y":3}, {"x":19, "y":3}, {"x":20, "y":3}, {"x":0, "y":4}, {"x":1, "y":4}, {"x":2.5, "y":4, "w":1.5}, {"x":5, "y":4, "w":1.5}, {"x":6.5, "y":4, "w":7}, {"x":13.5, "y":4, "w":1.5}, {"x":16, "y":4, "w":1.5}, {"x":18, "y":4}, {"x":19, "y":4}, {"x":20, "y":4}, {"x":21, "y":3, "h":2}] } } -} \ No newline at end of file +} diff --git a/keyboards/evyd13/mx5160/rules.mk b/keyboards/evyd13/mx5160/rules.mk index 4945986f5a94..e8188fff886f 100644 --- a/keyboards/evyd13/mx5160/rules.mk +++ b/keyboards/evyd13/mx5160/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = qmk-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/evyd13/nt660/config.h b/keyboards/evyd13/nt660/config.h index 863884714259..225f2ccf2d4f 100644 --- a/keyboards/evyd13/nt660/config.h +++ b/keyboards/evyd13/nt660/config.h @@ -124,59 +124,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -197,26 +144,6 @@ along with this program. If not, see . #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/evyd13/nt660/info.json b/keyboards/evyd13/nt660/info.json index 371fd9a05e52..8f087c68c320 100644 --- a/keyboards/evyd13/nt660/info.json +++ b/keyboards/evyd13/nt660/info.json @@ -2,8 +2,6 @@ "keyboard_name": "nt660", "url": "", "maintainer": "evyd13", - "width": 16.5, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/evyd13/nt660/rules.mk b/keyboards/evyd13/nt660/rules.mk index fb5654deacb0..8b7603813d88 100644 --- a/keyboards/evyd13/nt660/rules.mk +++ b/keyboards/evyd13/nt660/rules.mk @@ -2,32 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = qmk-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = 66_ansi 66_iso diff --git a/keyboards/evyd13/nt750/info.json b/keyboards/evyd13/nt750/info.json index 9ac63a9b4b08..5342807d65a6 100644 --- a/keyboards/evyd13/nt750/info.json +++ b/keyboards/evyd13/nt750/info.json @@ -2,8 +2,6 @@ "keyboard_name": "nt750", "url": "https://github.com/evyd13/nt-series/tree/main/nt-750", "maintainer": "evyd13", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT_all": { "layout": [ @@ -297,4 +295,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/evyd13/nt750/rules.mk b/keyboards/evyd13/nt750/rules.mk index e981c14b0fad..ef128a96dfb7 100644 --- a/keyboards/evyd13/nt750/rules.mk +++ b/keyboards/evyd13/nt750/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 \ No newline at end of file diff --git a/keyboards/evyd13/nt980/info.json b/keyboards/evyd13/nt980/info.json index 408e1287d39c..8b1b32449edf 100644 --- a/keyboards/evyd13/nt980/info.json +++ b/keyboards/evyd13/nt980/info.json @@ -2,8 +2,6 @@ "keyboard_name": "nt980", "url": "", "maintainer": "maartenwut", - "width": 19.5, - "height": 6.75, "layouts": { "LAYOUT_all": { "layout": [ @@ -330,4 +328,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/evyd13/nt980/rules.mk b/keyboards/evyd13/nt980/rules.mk index 5c0d8f307c54..d2109f62500b 100644 --- a/keyboards/evyd13/nt980/rules.mk +++ b/keyboards/evyd13/nt980/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/evyd13/omrontkl/config.h b/keyboards/evyd13/omrontkl/config.h index 704ccd5d892c..d61b338e9752 100644 --- a/keyboards/evyd13/omrontkl/config.h +++ b/keyboards/evyd13/omrontkl/config.h @@ -120,59 +120,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -191,26 +138,6 @@ //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/evyd13/omrontkl/info.json b/keyboards/evyd13/omrontkl/info.json index faf9569644b2..3f0dfb9bc3f3 100644 --- a/keyboards/evyd13/omrontkl/info.json +++ b/keyboards/evyd13/omrontkl/info.json @@ -2,8 +2,6 @@ "keyboard_name": "OmronTKL", "url": "", "maintainer": "qmk", - "width": 18.25, - "height": 6.25, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/evyd13/omrontkl/rules.mk b/keyboards/evyd13/omrontkl/rules.mk index 10033a9bfd39..3d06abd28eb6 100644 --- a/keyboards/evyd13/omrontkl/rules.mk +++ b/keyboards/evyd13/omrontkl/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = qmk-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # 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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/evyd13/plain60/info.json b/keyboards/evyd13/plain60/info.json index 48aad441fbb9..64eb30546423 100644 --- a/keyboards/evyd13/plain60/info.json +++ b/keyboards/evyd13/plain60/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Plain60", "url": "", "maintainer": "evyd13", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/evyd13/plain60/keymaps/kwerdenker/keymap.c b/keyboards/evyd13/plain60/keymaps/kwerdenker/keymap.c index 25370823dfa7..2d736212f40f 100644 --- a/keyboards/evyd13/plain60/keymaps/kwerdenker/keymap.c +++ b/keyboards/evyd13/plain60/keymaps/kwerdenker/keymap.c @@ -36,9 +36,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_DL] = LAYOUT( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, DE_SS, DE_ACUT, ______, KC_BSPC, \ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, DE_Z, KC_U, KC_I, KC_O, KC_P, DE_UE, DE_PLUS, ______, \ - SPECIAL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, DE_OE, DE_AE, DE_HASH, KC_ENT, \ - KC_LSFT, DE_LESS, DE_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, DE_MINS, KC_RSFT, MONKEY, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, DE_Z, KC_U, KC_I, KC_O, KC_P, DE_UDIA, DE_PLUS, ______, \ + SPECIAL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, DE_ODIA,DE_ADIA, DE_HASH, KC_ENT, \ + KC_LSFT, DE_LABK, DE_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, DE_MINS, KC_RSFT, MONKEY, \ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , ______, KC_ALGR, TG(_LED), KC_RCTL ), [_FUN] = LAYOUT( diff --git a/keyboards/evyd13/plain60/keymaps/kwerdenker/rules.mk b/keyboards/evyd13/plain60/keymaps/kwerdenker/rules.mk index facc9dc7e65c..62eb851505f8 100644 --- a/keyboards/evyd13/plain60/keymaps/kwerdenker/rules.mk +++ b/keyboards/evyd13/plain60/keymaps/kwerdenker/rules.mk @@ -16,7 +16,7 @@ # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality (+4870) diff --git a/keyboards/evyd13/plain60/rules.mk b/keyboards/evyd13/plain60/rules.mk index 398b59227dc9..b7f94e84e6cb 100644 --- a/keyboards/evyd13/plain60/rules.mk +++ b/keyboards/evyd13/plain60/rules.mk @@ -2,19 +2,12 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = qmk-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 @@ -22,9 +15,6 @@ COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work RGBLIGHT_ENABLE = no # Enable keyboard underlight functionality BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls AUDIO_ENABLE = no -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID LAYOUTS = 60_ansi 60_ansi_split_bs_rshift 60_hhkb 60_iso 60_tsangan_hhkb diff --git a/keyboards/evyd13/pockettype/config.h b/keyboards/evyd13/pockettype/config.h index daae3c173402..fa45630c1aec 100644 --- a/keyboards/evyd13/pockettype/config.h +++ b/keyboards/evyd13/pockettype/config.h @@ -120,59 +120,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -191,26 +138,6 @@ //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/evyd13/pockettype/info.json b/keyboards/evyd13/pockettype/info.json index d1999273f673..f81dbec5391c 100644 --- a/keyboards/evyd13/pockettype/info.json +++ b/keyboards/evyd13/pockettype/info.json @@ -2,8 +2,6 @@ "keyboard_name": "PocketType", "url": "https://mechboards.co.uk/shop/kits/pockettype/", "maintainer": "evyd13", - "width": 12, - "height": 4, "layouts": { "LAYOUT_ortho_4x12": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}] diff --git a/keyboards/evyd13/pockettype/pockettype.c b/keyboards/evyd13/pockettype/pockettype.c index fe25a7048c18..06175edf5a07 100644 --- a/keyboards/evyd13/pockettype/pockettype.c +++ b/keyboards/evyd13/pockettype/pockettype.c @@ -15,12 +15,6 @@ */ #include "pockettype.h" -void matrix_init_kb(void) { - led_init_ports(); - - matrix_init_user(); -}; - void led_init_ports(void) { // * Enable LED anodes (Vbus pin is replaced by B0 on some boards) setPinOutput(B0); diff --git a/keyboards/evyd13/pockettype/rules.mk b/keyboards/evyd13/pockettype/rules.mk index 2b3dc6fc2221..69e25f7adaca 100644 --- a/keyboards/evyd13/pockettype/rules.mk +++ b/keyboards/evyd13/pockettype/rules.mk @@ -2,30 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 LAYOUTS = ortho_4x12 diff --git a/keyboards/evyd13/quackfire/info.json b/keyboards/evyd13/quackfire/info.json index de7c9384cf75..68a0767c948a 100644 --- a/keyboards/evyd13/quackfire/info.json +++ b/keyboards/evyd13/quackfire/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Quackfire", "url": "https://github.com/evyd13/quackfire-controller", "maintainer": "evyd13", - "width": 18.5, - "height": 6.5, "layouts": { "LAYOUT_tkl_ansi": { "layout": [ diff --git a/keyboards/evyd13/quackfire/rules.mk b/keyboards/evyd13/quackfire/rules.mk index f29136f7442b..7183ce64c54b 100644 --- a/keyboards/evyd13/quackfire/rules.mk +++ b/keyboards/evyd13/quackfire/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = qmk-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LAYOUTS = tkl_ansi tkl_iso diff --git a/keyboards/evyd13/solheim68/info.json b/keyboards/evyd13/solheim68/info.json index dbafbc0d4dcb..b0776223b64a 100644 --- a/keyboards/evyd13/solheim68/info.json +++ b/keyboards/evyd13/solheim68/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Solheim68", "url": "https://github.com/evyd13/solheim68", "maintainer": "evyd13", - "width": 17.25, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ @@ -394,4 +392,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/evyd13/solheim68/rules.mk b/keyboards/evyd13/solheim68/rules.mk index a90eef1fc65a..74047d4dec7d 100644 --- a/keyboards/evyd13/solheim68/rules.mk +++ b/keyboards/evyd13/solheim68/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/evyd13/ta65/info.json b/keyboards/evyd13/ta65/info.json index e509521d4da2..5d390c9f6eb3 100644 --- a/keyboards/evyd13/ta65/info.json +++ b/keyboards/evyd13/ta65/info.json @@ -2,8 +2,6 @@ "keyboard_name": "ta65", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/evyd13/ta65/rules.mk b/keyboards/evyd13/ta65/rules.mk index b45c0bc03057..14227ce5d54b 100644 --- a/keyboards/evyd13/ta65/rules.mk +++ b/keyboards/evyd13/ta65/rules.mk @@ -2,32 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = qmk-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes LAYOUTS = 65_ansi 65_iso diff --git a/keyboards/evyd13/ta65/ta65.c b/keyboards/evyd13/ta65/ta65.c index 4f67a0203da7..ca9aafb1b73b 100644 --- a/keyboards/evyd13/ta65/ta65.c +++ b/keyboards/evyd13/ta65/ta65.c @@ -1,13 +1 @@ #include "ta65.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - matrix_init_user(); -}; - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - matrix_scan_user(); -}; diff --git a/keyboards/evyd13/wasdat/config.h b/keyboards/evyd13/wasdat/config.h index 75b75a0d2ab8..36bbd30821fa 100644 --- a/keyboards/evyd13/wasdat/config.h +++ b/keyboards/evyd13/wasdat/config.h @@ -133,59 +133,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -204,26 +151,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ #define BOOTMAGIC_LITE_ROW 0 #define BOOTMAGIC_LITE_COLUMN 5 diff --git a/keyboards/evyd13/wasdat/info.json b/keyboards/evyd13/wasdat/info.json index 83c413eda296..23e59c6b33e5 100644 --- a/keyboards/evyd13/wasdat/info.json +++ b/keyboards/evyd13/wasdat/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Wasdat", "url": "https://maartenwut.com/product/wasdat/", "maintainer": "evyd13", - "width": 22.5, - "height": 6.5, "layouts": { "LAYOUT_fullsize_ansi": { "layout": [ diff --git a/keyboards/evyd13/wasdat/keymaps/konstantin/config.h b/keyboards/evyd13/wasdat/keymaps/konstantin/config.h index 1d12c7db3761..3c2583e2d46f 100644 --- a/keyboards/evyd13/wasdat/keymaps/konstantin/config.h +++ b/keyboards/evyd13/wasdat/keymaps/konstantin/config.h @@ -1,6 +1,4 @@ #pragma once -#define DYNAMIC_KEYMAP_LAYER_COUNT 3 - #define LAYER_FN #define LAYER_NUMPAD diff --git a/keyboards/evyd13/wasdat/keymaps/konstantin/rules.mk b/keyboards/evyd13/wasdat/keymaps/konstantin/rules.mk index f70005d3f63e..e5fc55e912a2 100644 --- a/keyboards/evyd13/wasdat/keymaps/konstantin/rules.mk +++ b/keyboards/evyd13/wasdat/keymaps/konstantin/rules.mk @@ -1,5 +1,5 @@ # Generic features -BOOTMAGIC_ENABLE = lite +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite COMMAND_ENABLE = yes CONSOLE_ENABLE = yes EXTRAKEY_ENABLE = yes diff --git a/keyboards/evyd13/wasdat/rules.mk b/keyboards/evyd13/wasdat/rules.mk index 0a9f00403c68..82676d2405f4 100644 --- a/keyboards/evyd13/wasdat/rules.mk +++ b/keyboards/evyd13/wasdat/rules.mk @@ -2,32 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = qmk-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output CUSTOM_MATRIX = lite SRC += matrix.c diff --git a/keyboards/evyd13/wasdat_code/config.h b/keyboards/evyd13/wasdat_code/config.h index 4ac77f217dfb..6c39403e527f 100644 --- a/keyboards/evyd13/wasdat_code/config.h +++ b/keyboards/evyd13/wasdat_code/config.h @@ -133,59 +133,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -204,26 +151,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ #define BOOTMAGIC_LITE_ROW 2 #define BOOTMAGIC_LITE_COLUMN 3 diff --git a/keyboards/evyd13/wasdat_code/info.json b/keyboards/evyd13/wasdat_code/info.json index 4e6ed630ca31..1c0f14ed3d05 100644 --- a/keyboards/evyd13/wasdat_code/info.json +++ b/keyboards/evyd13/wasdat_code/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Wasdat Code", "url": "https://maartenwut.com/product/wasdat-code/", "maintainer": "evyd13", - "width": 22.5, - "height": 6.5, "layouts": { "LAYOUT_fullsize_ansi": { "layout": [ diff --git a/keyboards/evyd13/wasdat_code/rules.mk b/keyboards/evyd13/wasdat_code/rules.mk index 48430ee3cd23..757ba8f08e96 100644 --- a/keyboards/evyd13/wasdat_code/rules.mk +++ b/keyboards/evyd13/wasdat_code/rules.mk @@ -2,32 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = qmk-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output CUSTOM_MATRIX = lite SRC += matrix.c diff --git a/keyboards/evyd13/wonderland/info.json b/keyboards/evyd13/wonderland/info.json index a98ee650cf16..fd91f32dc1ef 100644 --- a/keyboards/evyd13/wonderland/info.json +++ b/keyboards/evyd13/wonderland/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Wonderland", "url": "", "maintainer": "evyd13", - "width": 18.25, - "height": 5, "layouts": { "LAYOUT_alice_split_bs": { - "key_count": 66, "layout": [ {"label":"k10", "x":0, "y":0}, {"label":"k00", "x":1.25, "y":0}, diff --git a/keyboards/evyd13/wonderland/rules.mk b/keyboards/evyd13/wonderland/rules.mk index 1f671c37c3b9..efea8c1740f9 100644 --- a/keyboards/evyd13/wonderland/rules.mk +++ b/keyboards/evyd13/wonderland/rules.mk @@ -2,19 +2,12 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = qmk-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug @@ -22,10 +15,7 @@ COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls AUDIO_ENABLE = no -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID AUTO_SHIFT_ENABLE = no VELOCIKEY_ENABLE = yes diff --git a/keyboards/exclusive/e65/info.json b/keyboards/exclusive/e65/info.json index 19b8139d304e..409f110a094f 100644 --- a/keyboards/exclusive/e65/info.json +++ b/keyboards/exclusive/e65/info.json @@ -2,8 +2,6 @@ "keyboard_name": "E6.5", "url": "", "maintainer": "masterzen", - "width": 16, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"label":"esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"|", "x":13, "y":0}, {"label":"~", "x":14, "y":0}, {"label":"Ins", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Page up", "x":15, "y":1}, {"label":"Ctrl", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Page down", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":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}, {"label":"↑", "x":14, "y":3}, {"label":"Del", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4}, {"label":"Fn", "x":11, "y":4}, {"x":12, "y":4}, {"label":"←", "x":13, "y":4}, {"label":"↓", "x":14, "y":4}, {"label":"→", "x":15, "y":4}] diff --git a/keyboards/exclusive/e65/keymaps/masterzen/keymap.c b/keyboards/exclusive/e65/keymaps/masterzen/keymap.c index 32ed88d668b7..156832de4ea7 100644 --- a/keyboards/exclusive/e65/keymaps/masterzen/keymap.c +++ b/keyboards/exclusive/e65/keymaps/masterzen/keymap.c @@ -94,7 +94,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return true; } -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { if (state == BASE && edit == true) { temp_config.hue = rgblight_get_hue(); temp_config.sat = rgblight_get_sat(); diff --git a/keyboards/exclusive/e65/rules.mk b/keyboards/exclusive/e65/rules.mk index 0f27d19ac7da..f6bf243b12d2 100644 --- a/keyboards/exclusive/e65/rules.mk +++ b/keyboards/exclusive/e65/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 -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 = yes # Enable keyboard backlight functionality AUDIO_ENABLE = no diff --git a/keyboards/exclusive/e6_rgb/config.h b/keyboards/exclusive/e6_rgb/config.h index b1b8b1bed71d..fd221f1765d2 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/e6_rgb/e6_rgb.c b/keyboards/exclusive/e6_rgb/e6_rgb.c index 0e248a202352..11d313e9a3bd 100644 --- a/keyboards/exclusive/e6_rgb/e6_rgb.c +++ b/keyboards/exclusive/e6_rgb/e6_rgb.c @@ -11,7 +11,7 @@ void matrix_init_kb(void) { matrix_init_user(); } -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { /* Refer to IS31 manual for these locations * driver * | R location diff --git a/keyboards/exclusive/e6_rgb/e6_rgb.h b/keyboards/exclusive/e6_rgb/e6_rgb.h index df105863b7d6..a49d75d09a49 100644 --- a/keyboards/exclusive/e6_rgb/e6_rgb.h +++ b/keyboards/exclusive/e6_rgb/e6_rgb.h @@ -6,79 +6,67 @@ #include "quantum.h" +#define ___ 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_60_ansi( \ - 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, k1e, \ - k20, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2e, \ - k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \ - k40, k42, k43, k47, k48, k49, k4a, k4b \ -) \ -{ \ - {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, KC_NO}, \ - {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1e}, \ - {k20, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2e, k0e}, \ - {k30, k32, k33, k34, k35, k36, k37, k38, KC_NO, k39, k3a, k3b, k3c, KC_NO}, \ - {k40, k42, k43, KC_NO, KC_NO, KC_NO, k47, KC_NO, KC_NO, KC_NO, k48, k49, k4a, k4b} \ -} - -#define LAYOUT_60_wkl( \ - 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, k1e, \ - k20, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2e, \ - k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \ - k40, k42, k43, k47, k49, k4a, k4b \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K2D, \ + 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, 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, KC_NO}, \ - {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1e}, \ - {k20, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2e, k0e}, \ - {k30, k32, k33, k34, k35, k36, k37, k38, KC_NO, k39, k3a, k3b, k3c, k3d}, \ - {k40, k42, k43, KC_NO, KC_NO, KC_NO, k47, KC_NO, KC_NO, KC_NO, KC_NO, k49, k4a, k4b} \ + { 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, K1D }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, ___, K39, K3A, K3B, K3C, ___ }, \ + { K40, K41, K42, ___, ___, ___, K46, ___, ___, ___, K4A, K4B, K4C, K4D } \ } #define LAYOUT_60_hhkb( \ - 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, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2e, \ - k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \ - k42, k43, k47, k49, k4a \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \ + 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, K39, K3A, K3B, K3C, K3D, \ + K41, K42, K46, K4B, K4C \ ) \ { \ - { 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, k1e}, \ - { k20, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2e, k0e}, \ - { k30, k32, k33, k34, k35, k36, k37, k38, KC_NO, k39, k3a, k3b, k3c, k3d}, \ - {KC_NO, k42, k43, KC_NO, KC_NO, KC_NO, k47, KC_NO, KC_NO, KC_NO, KC_NO, k49, k4a, 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, K2C, K2D }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, ___, K39, K3A, K3B, K3C, K3D }, \ + { ___, K41, K42, ___, ___, ___, K46, ___, ___, ___, ___, K4B, K4C, ___ } \ } -#define LAYOUT_60_wkl_split_bs( \ - 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, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2e, \ - k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \ - k40, k42, k43, k47, k49, k4a, k4b \ +#define LAYOUT_60_tsangan_hhkb( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \ + 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, K39, K3A, K3B, K3C, K3D, \ + K40, K41, K42, K46, 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, k1e}, \ - {k20, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2e, k0e}, \ - {k30, k32, k33, k34, k35, k36, k37, k38, KC_NO, k39, k3a, k3b, k3c, k3d}, \ - {k40, k42, k43, KC_NO, KC_NO, KC_NO, k47, KC_NO, KC_NO, KC_NO, KC_NO, k49, k4a, k4b} \ + { 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, ___, K39, K3A, K3B, K3C, K3D }, \ + { K40, K41, K42, ___, ___, ___, K46, ___, ___, ___, ___, K4B, K4C, K4D } \ } -#define LAYOUT_60_ansi_split_bs_shift( \ - 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, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2e, \ - k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \ - k40, k42, k43, k47, k48, k49, k4a, k4b \ + +#define LAYOUT_60_ansi_split_bs_rshift( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \ + 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, 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}, \ - {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1e}, \ - {k20, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2e, k0e}, \ - {k30, k32, k33, k34, k35, k36, k37, k38, KC_NO, k39, k3a, k3b, k3c, k3d}, \ - {k40, k42, k43, KC_NO, KC_NO, KC_NO, k47, KC_NO, KC_NO, KC_NO, k48, k49, k4a, k4b} \ + { 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, ___, K39, K3A, K3B, K3C, K3D }, \ + { K40, K41, K42, ___, ___, ___, K46, ___, ___, ___, K4A, K4B, K4C, K4D } \ } diff --git a/keyboards/exclusive/e6_rgb/info.json b/keyboards/exclusive/e6_rgb/info.json index f4e5f7fe98b5..c08cd12ae6dc 100644 --- a/keyboards/exclusive/e6_rgb/info.json +++ b/keyboards/exclusive/e6_rgb/info.json @@ -1,1291 +1,286 @@ { "keyboard_name": "e6_rgb", "url": "", - "maintainer": "qmk", - "width": 15, - "height": 5, + "maintainer": "yulei", + "layout_aliases": { + "LAYOUT_60_wkl_split_bs": "LAYOUT_60_tsangan_hhkb" + }, "layouts": { - "LAYOUT_60_wkl": { - "key_count": 61, + "LAYOUT_60_ansi": { "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 - }, - { - "label": "Backspace", - "x": 13, - "y": 0, - "w": 2 - }, - { - "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": 2.25 - }, - { - "label": "Z", - "x": 2.25, - "y": 3 - }, - { - "label": "X", - "x": 3.25, - "y": 3 - }, - { - "label": "C", - "x": 4.25, - "y": 3 - }, - { - "label": "V", - "x": 5.25, - "y": 3 - }, - { - "label": "B", - "x": 6.25, - "y": 3 - }, - { - "label": "N", - "x": 7.25, - "y": 3 - }, - { - "label": "M", - "x": 8.25, - "y": 3 - }, - { - "label": "<", - "x": 9.25, - "y": 3 - }, - { - "label": ">", - "x": 10.25, - "y": 3 - }, - { - "label": "?", - "x": 11.25, - "y": 3 - }, - { - "label": "Shift", - "x": 12.25, - "y": 3, - "w": 1.75 - }, - { - "label": "Fn", - "x": 14, - "y": 3 - }, - { - "label": "Ctrl", - "x": 0, - "y": 4, - "w": 1.5 - }, - { - "label": "Win", - "x": 1.5, - "y": 4 - }, - { - "label": "Alt", - "x": 2.5, - "y": 4, - "w": 1.5 - }, - { - "x": 4, - "y": 4, - "w": 7 - }, - { - "label": "Alt", - "x": 11, - "y": 4, - "w": 1.5 - }, - { - "label": "Win", - "x": 12.5, - "y": 4 - }, - { - "label": "Ctrl", - "x": 13.5, - "y": 4, - "w": 1.5 - } + {"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}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + + {"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":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":2.75}, + + {"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} ] }, - "LAYOUT_60_ansi": { - "key_count": 61, + "LAYOUT_60_hhkb": { "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 - }, - { - "label": "Backspace", - "x": 13, - "y": 0, - "w": 2 - }, - { - "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": 2.25 - }, - { - "label": "Z", - "x": 2.25, - "y": 3 - }, - { - "label": "X", - "x": 3.25, - "y": 3 - }, - { - "label": "C", - "x": 4.25, - "y": 3 - }, - { - "label": "V", - "x": 5.25, - "y": 3 - }, - { - "label": "B", - "x": 6.25, - "y": 3 - }, - { - "label": "N", - "x": 7.25, - "y": 3 - }, - { - "label": "M", - "x": 8.25, - "y": 3 - }, - { - "label": "<", - "x": 9.25, - "y": 3 - }, - { - "label": ">", - "x": 10.25, - "y": 3 - }, - { - "label": "?", - "x": 11.25, - "y": 3 - }, - { - "label": "Shift", - "x": 12.25, - "y": 3, - "w": 2.75 - }, - { - "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 - } + {"label":"Esc", "x":0, "y":0}, + {"label":"!", "x":1, "y":0}, + {"label":"@", "x":2, "y":0}, + {"label":"#", "x":3, "y":0}, + {"label":"$", "x":4, "y":0}, + {"label":"%", "x":5, "y":0}, + {"label":"^", "x":6, "y":0}, + {"label":"&", "x":7, "y":0}, + {"label":"*", "x":8, "y":0}, + {"label":"(", "x":9, "y":0}, + {"label":")", "x":10, "y":0}, + {"label":"_", "x":11, "y":0}, + {"label":"+", "x":12, "y":0}, + {"label":"|", "x":13, "y":0}, + {"label":"~", "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":"Backspace", "x":13.5, "y":1, "w":1.5}, + + {"label":"Control", "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":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"Fn", "x":14, "y":3}, + {"label":"Win", "x":1.5, "y":4}, + {"label":"Alt", "x":2.5, "y":4, "w":1.5}, + {"x":4, "y":4, "w":7}, + {"label":"Alt", "x":11, "y":4, "w":1.5}, + {"label":"Win", "x":12.5, "y":4} ] }, - "LAYOUT_60_hhkb": { - "key_count": 60, + "LAYOUT_60_tsangan_hhkb": { "layout": [ - { - "label": "Esc", - "x": 0, - "y": 0 - }, - { - "label": "!", - "x": 1, - "y": 0 - }, - { - "label": "@", - "x": 2, - "y": 0 - }, - { - "label": "#", - "x": 3, - "y": 0 - }, - { - "label": "$", - "x": 4, - "y": 0 - }, - { - "label": "%", - "x": 5, - "y": 0 - }, - { - "label": "^", - "x": 6, - "y": 0 - }, - { - "label": "&", - "x": 7, - "y": 0 - }, - { - "label": "*", - "x": 8, - "y": 0 - }, - { - "label": "(", - "x": 9, - "y": 0 - }, - { - "label": ")", - "x": 10, - "y": 0 - }, - { - "label": "_", - "x": 11, - "y": 0 - }, - { - "label": "+", - "x": 12, - "y": 0 - }, - { - "label": "|", - "x": 13, - "y": 0 - }, - { - "label": "~", - "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": "Backspace", - "x": 13.5, - "y": 1, - "w": 1.5 - }, - { - "label": "Control", - "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": 2.25 - }, - { - "label": "Z", - "x": 2.25, - "y": 3 - }, - { - "label": "X", - "x": 3.25, - "y": 3 - }, - { - "label": "C", - "x": 4.25, - "y": 3 - }, - { - "label": "V", - "x": 5.25, - "y": 3 - }, - { - "label": "B", - "x": 6.25, - "y": 3 - }, - { - "label": "N", - "x": 7.25, - "y": 3 - }, - { - "label": "M", - "x": 8.25, - "y": 3 - }, - { - "label": "<", - "x": 9.25, - "y": 3 - }, - { - "label": ">", - "x": 10.25, - "y": 3 - }, - { - "label": "?", - "x": 11.25, - "y": 3 - }, - { - "label": "Shift", - "x": 12.25, - "y": 3, - "w": 1.75 - }, - { - "label": "Fn", - "x": 14, - "y": 3 - }, - { - "label": "Win", - "x": 1.5, - "y": 4 - }, - { - "label": "Alt", - "x": 2.5, - "y": 4, - "w": 1.5 - }, - { - "x": 4, - "y": 4, - "w": 7 - }, - { - "label": "Alt", - "x": 11, - "y": 4, - "w": 1.5 - }, - { - "label": "Win", - "x": 12.5, - "y": 4 - } + {"label":"Esc", "x":0, "y":0}, + {"label":"!", "x":1, "y":0}, + {"label":"@", "x":2, "y":0}, + {"label":"#", "x":3, "y":0}, + {"label":"$", "x":4, "y":0}, + {"label":"%", "x":5, "y":0}, + {"label":"^", "x":6, "y":0}, + {"label":"&", "x":7, "y":0}, + {"label":"*", "x":8, "y":0}, + {"label":"(", "x":9, "y":0}, + {"label":")", "x":10, "y":0}, + {"label":"_", "x":11, "y":0}, + {"label":"+", "x":12, "y":0}, + {"label":"|", "x":13, "y":0}, + {"label":"~", "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":"Backspace", "x":13.5, "y":1, "w":1.5}, + + {"label":"Control", "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":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"Fn", "x":14, "y":3}, + + {"label":"Caps Lock", "x":0, "y":4, "w":1.5}, + {"label":"Win", "x":1.5, "y":4}, + {"label":"Alt", "x":2.5, "y":4, "w":1.5}, + {"x":4, "y":4, "w":7}, + {"label":"Alt", "x":11, "y":4, "w":1.5}, + {"label":"Win", "x":12.5, "y":4}, + {"label":"Fn", "x":13.5, "y":4, "w":1.5} ] }, - "LAYOUT_allleds": { - "key_count": 62, + "LAYOUT_60_ansi_split_bs_rshift": { "layout": [ - { - "label": "Esc", - "x": 0, - "y": 0 - }, - { - "label": "!", - "x": 1, - "y": 0 - }, - { - "label": "@", - "x": 2, - "y": 0 - }, - { - "label": "#", - "x": 3, - "y": 0 - }, - { - "label": "$", - "x": 4, - "y": 0 - }, - { - "label": "%", - "x": 5, - "y": 0 - }, - { - "label": "^", - "x": 6, - "y": 0 - }, - { - "label": "&", - "x": 7, - "y": 0 - }, - { - "label": "*", - "x": 8, - "y": 0 - }, - { - "label": "(", - "x": 9, - "y": 0 - }, - { - "label": ")", - "x": 10, - "y": 0 - }, - { - "label": "_", - "x": 11, - "y": 0 - }, - { - "label": "+", - "x": 12, - "y": 0 - }, - { - "label": "|", - "x": 13, - "y": 0 - }, - { - "label": "~", - "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": "Backspace", - "x": 13.5, - "y": 1, - "w": 1.5 - }, - { - "label": "Control", - "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": 2.25 - }, - { - "label": "Z", - "x": 2.25, - "y": 3 - }, - { - "label": "X", - "x": 3.25, - "y": 3 - }, - { - "label": "C", - "x": 4.25, - "y": 3 - }, - { - "label": "V", - "x": 5.25, - "y": 3 - }, - { - "label": "B", - "x": 6.25, - "y": 3 - }, - { - "label": "N", - "x": 7.25, - "y": 3 - }, - { - "label": "M", - "x": 8.25, - "y": 3 - }, - { - "label": "<", - "x": 9.25, - "y": 3 - }, - { - "label": ">", - "x": 10.25, - "y": 3 - }, - { - "label": "?", - "x": 11.25, - "y": 3 - }, - { - "label": "Shift", - "x": 12.25, - "y": 3, - "w": 1.75 - }, - { - "label": "Fn", - "x": 14, - "y": 3 - }, - { - "label": "Caps Lock", - "x": 0, - "y": 4, - "w": 1.5 - }, - { - "label": "Win", - "x": 1.5, - "y": 4 - }, - { - "label": "Alt", - "x": 2.5, - "y": 4, - "w": 1.5 - }, - { - "x": 4, - "y": 4, - "w": 7 - }, - { - "label": "Alt", - "x": 11, - "y": 4, - "w": 1.5 - }, - { - "label": "Win", - "x": 12.5, - "y": 4 - }, - { - "label": "Fn", - "x": 13.5, - "y": 4, - "w": 1.5 - } + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":12.5, "y":4, "w":1.25}, + {"x":13.75, "y":4, "w":1.25} ] } } diff --git a/keyboards/exclusive/e6_rgb/keymaps/60_ansi/keymap.c b/keyboards/exclusive/e6_rgb/keymaps/60_ansi/keymap.c deleted file mode 100644 index 0f7f09f55169..000000000000 --- a/keyboards/exclusive/e6_rgb/keymaps/60_ansi/keymap.c +++ /dev/null @@ -1,29 +0,0 @@ -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Layer 0: Default Layer - * ,-----------------------------------------------------------. - * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| BSp | - * |-----------------------------------------------------------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| - * |-----------------------------------------------------------| - * |Contro| A| S| D| F| G| H| J| K| L| ;| '|Enter | - * |-----------------------------------------------------------| - * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |Fn0| - * |-----------------------------------------------------------' - * |Ctrl |Gui|Alt | Space |Alt |Gui|Fn |Ctrl | - * `-----------------------------------------------------------' - */ - [0] = LAYOUT_60_ansi( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC,\ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS,\ - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT,\ - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT,\ - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL), - [1] = LAYOUT_60_ansi( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,_______,\ - RESET, RGB_TOG,RGB_MOD,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,\ - _______, _______,_______,_______,_______,_______,KC_LEFT,KC_DOWN,KC_UP,KC_RIGHT,_______,_______,_______,\ - _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,\ - _______,_______,_______, _______, _______,_______,_______,_______), -}; diff --git a/keyboards/exclusive/e6_rgb/keymaps/60_ansi_split_bs_rshift/keymap.c b/keyboards/exclusive/e6_rgb/keymaps/60_ansi_split_bs_rshift/keymap.c new file mode 100644 index 000000000000..0678b7d1452f --- /dev/null +++ b/keyboards/exclusive/e6_rgb/keymaps/60_ansi_split_bs_rshift/keymap.c @@ -0,0 +1,18 @@ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_60_ansi_split_bs_rshift( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_END, + KC_CAPS, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL + ), + [1] = LAYOUT_60_ansi_split_bs_rshift( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_PSCR, + RESET, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, _______, + _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/exclusive/e6_rgb/keymaps/60_ansi_split_bs_shift/keymap.c b/keyboards/exclusive/e6_rgb/keymaps/60_ansi_split_bs_shift/keymap.c deleted file mode 100644 index 1ecde0089ce2..000000000000 --- a/keyboards/exclusive/e6_rgb/keymaps/60_ansi_split_bs_shift/keymap.c +++ /dev/null @@ -1,16 +0,0 @@ -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_60_ansi_split_bs_shift( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSLS, KC_GRV,\ - 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_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT,\ - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_END,\ - KC_CAPS, KC_LGUI, KC_LALT, LT(1,KC_SPC), KC_RALT, KC_RGUI, TG(1), KC_RCTL), - [1] = LAYOUT_60_ansi_split_bs_shift( - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,_______,KC_PSCR,\ - RESET, RGB_TOG,RGB_MOD,_______,_______,_______,_______,_______,_______,_______,_______,KC_PGUP,KC_PGDN,_______,\ - _______, _______,_______,_______,_______,_______,KC_LEFT,KC_DOWN,KC_UP,KC_RIGHT,_______,_______,_______,\ - _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,\ - _______,_______,_______, _______, _______,_______,TG(0),_______), -}; diff --git a/keyboards/exclusive/e6_rgb/keymaps/60_hhkb/keymap.c b/keyboards/exclusive/e6_rgb/keymaps/60_hhkb/keymap.c index e1d2cca37287..a1d8e5c78473 100644 --- a/keyboards/exclusive/e6_rgb/keymaps/60_hhkb/keymap.c +++ b/keyboards/exclusive/e6_rgb/keymaps/60_hhkb/keymap.c @@ -1,16 +1,18 @@ #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_60_hhkb( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSLS, KC_GRV,\ - 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_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT,\ - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_BSLS,\ - KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1)), + [0] = LAYOUT_60_hhkb( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_BSLS, + KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1) + ), [1] = LAYOUT_60_hhkb( - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,_______,_______,\ - RESET, RGB_TOG,RGB_MOD,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,\ - _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,\ - _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,\ - _______,_______, _______, _______,_______), + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, + RESET, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______ + ) }; diff --git a/keyboards/exclusive/e6_rgb/keymaps/60_tsangan_hhkb/keymap.c b/keyboards/exclusive/e6_rgb/keymaps/60_tsangan_hhkb/keymap.c new file mode 100644 index 000000000000..5483ebb8357c --- /dev/null +++ b/keyboards/exclusive/e6_rgb/keymaps/60_tsangan_hhkb/keymap.c @@ -0,0 +1,18 @@ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_60_tsangan_hhkb( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_END, + KC_CAPS, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL + ), + [1] = LAYOUT_60_tsangan_hhkb( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_PSCR, + RESET, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, _______, + _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/exclusive/e6_rgb/keymaps/60_wkl/keymap.c b/keyboards/exclusive/e6_rgb/keymaps/60_wkl/keymap.c deleted file mode 100644 index e149c7f06ba6..000000000000 --- a/keyboards/exclusive/e6_rgb/keymaps/60_wkl/keymap.c +++ /dev/null @@ -1,16 +0,0 @@ -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_60_wkl( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS,\ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,KC_BSPC,\ - KC_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT,\ - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_RSFT, KC_DEL,\ - KC_CAPS, KC_LGUI, KC_LALT, LT(1,KC_SPC), KC_RALT, TG(1), KC_RCTL), - [1] = LAYOUT_60_wkl( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,KC_DEL,\ - RESET, RGB_TOG, RGB_MOD,_______,_______,_______,_______,_______,_______,_______,_______,KC_PGUP,KC_PGDN,_______,\ - _______, _______,_______,_______,_______,_______,KC_LEFT,KC_DOWN,KC_UP,KC_RIGHT,_______,_______,_______,\ - _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,\ - _______,_______,_______, _______, _______,TG(0),_______), -}; diff --git a/keyboards/exclusive/e6_rgb/keymaps/60_wkl_split_bs/keymap.c b/keyboards/exclusive/e6_rgb/keymaps/60_wkl_split_bs/keymap.c deleted file mode 100644 index d9a7885eb8d5..000000000000 --- a/keyboards/exclusive/e6_rgb/keymaps/60_wkl_split_bs/keymap.c +++ /dev/null @@ -1,16 +0,0 @@ -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_60_wkl_split_bs( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSLS, KC_GRV,\ - 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_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT,\ - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_END,\ - KC_CAPS, KC_LGUI, KC_LALT, LT(1,KC_SPC), KC_RALT, TG(1), KC_RCTL), - [1] = LAYOUT_60_wkl_split_bs( - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,_______,KC_PSCR,\ - RESET, RGB_TOG,RGB_MOD,_______,_______,_______,_______,_______,_______,_______,_______,KC_PGUP,KC_PGDN,_______,\ - _______, _______,_______,_______,_______,_______,KC_LEFT,KC_DOWN,KC_UP,KC_RIGHT,_______,_______,_______,\ - _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,\ - _______,_______,_______, _______, _______,TG(0),_______), -}; diff --git a/keyboards/exclusive/e6_rgb/keymaps/allleds/keymap.c b/keyboards/exclusive/e6_rgb/keymaps/allleds/keymap.c index d9a7885eb8d5..b0b06766bfac 100644 --- a/keyboards/exclusive/e6_rgb/keymaps/allleds/keymap.c +++ b/keyboards/exclusive/e6_rgb/keymaps/allleds/keymap.c @@ -1,16 +1,18 @@ #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_60_wkl_split_bs( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSLS, KC_GRV,\ - 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_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT,\ - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_END,\ - KC_CAPS, KC_LGUI, KC_LALT, LT(1,KC_SPC), KC_RALT, TG(1), KC_RCTL), - [1] = LAYOUT_60_wkl_split_bs( - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,_______,KC_PSCR,\ - RESET, RGB_TOG,RGB_MOD,_______,_______,_______,_______,_______,_______,_______,_______,KC_PGUP,KC_PGDN,_______,\ - _______, _______,_______,_______,_______,_______,KC_LEFT,KC_DOWN,KC_UP,KC_RIGHT,_______,_______,_______,\ - _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,\ - _______,_______,_______, _______, _______,TG(0),_______), + [0] = LAYOUT_60_tsangan_hhkb( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_END, + KC_CAPS, KC_LGUI, KC_LALT, LT(1,KC_SPC), KC_RALT, TG(1), KC_RCTL + ), + [1] = LAYOUT_60_tsangan_hhkb( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_PSCR, + RESET, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, _______, + _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, TG(0), _______ + ), }; diff --git a/keyboards/exclusive/e6_rgb/keymaps/default/keymap.c b/keyboards/exclusive/e6_rgb/keymaps/default/keymap.c index 0f7f09f55169..f19c72c8af8a 100644 --- a/keyboards/exclusive/e6_rgb/keymaps/default/keymap.c +++ b/keyboards/exclusive/e6_rgb/keymaps/default/keymap.c @@ -15,15 +15,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------' */ [0] = LAYOUT_60_ansi( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC,\ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS,\ - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT,\ - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT,\ - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL), + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL + ), [1] = LAYOUT_60_ansi( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,_______,\ - RESET, RGB_TOG,RGB_MOD,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,\ - _______, _______,_______,_______,_______,_______,KC_LEFT,KC_DOWN,KC_UP,KC_RIGHT,_______,_______,_______,\ - _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,\ - _______,_______,_______, _______, _______,_______,_______,_______), + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, + RESET, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), }; diff --git a/keyboards/exclusive/e6_rgb/keymaps/via/keymap.c b/keyboards/exclusive/e6_rgb/keymaps/via/keymap.c index 39d7a74c4c70..a441c445576f 100644 --- a/keyboards/exclusive/e6_rgb/keymaps/via/keymap.c +++ b/keyboards/exclusive/e6_rgb/keymaps/via/keymap.c @@ -1,28 +1,32 @@ #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_60_wkl_split_bs( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSLS, KC_GRV,\ - 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_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT,\ - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_END,\ - KC_CAPS, KC_LGUI, KC_LALT, LT(1,KC_SPC), KC_RALT, TG(1), KC_RCTL), - [1] = LAYOUT_60_wkl_split_bs( - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,_______,KC_PSCR,\ - RESET, RGB_TOG,RGB_MOD,_______,_______,_______,_______,_______,_______,_______,_______,KC_PGUP,KC_PGDN,_______,\ - _______, _______,_______,_______,_______,_______,KC_LEFT,KC_DOWN, KC_UP,KC_RIGHT,_______,_______,_______,\ - _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,\ - _______,_______,_______, _______, _______, TG(0),_______), - [2] = LAYOUT_60_wkl_split_bs( - _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,\ - _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,\ - _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,\ - _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,\ - _______,_______,_______, _______, _______,_______,_______), - [3] = LAYOUT_60_wkl_split_bs( - _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,\ - _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,\ - _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,\ - _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,\ - _______,_______,_______, _______, _______,_______,_______), + [0] = LAYOUT_60_ansi_split_bs_rshift( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_END, + KC_CAPS, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL + ), + [1] = LAYOUT_60_ansi_split_bs_rshift( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_PSCR, + RESET, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, _______, + _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_60_ansi_split_bs_rshift( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_60_ansi_split_bs_rshift( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ) }; diff --git a/keyboards/exclusive/e6_rgb/readme.md b/keyboards/exclusive/e6_rgb/readme.md index b252ab53b4fd..d6e2b44e7e88 100644 --- a/keyboards/exclusive/e6_rgb/readme.md +++ b/keyboards/exclusive/e6_rgb/readme.md @@ -7,6 +7,10 @@ Hardware Supported: E6V1, E6V2 Make example for this keyboard (after setting up your build environment): - make exclusive/e6_rgb:60_ansi + make exclusive/e6_rgb:default + +Flashing example for this keyboard: + + make exclusive/e6_rgb:default:flash See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/exclusive/e6_rgb/rules.mk b/keyboards/exclusive/e6_rgb/rules.mk index 7fbd7e81f0c9..3561489a1aff 100644 --- a/keyboards/exclusive/e6_rgb/rules.mk +++ b/keyboards/exclusive/e6_rgb/rules.mk @@ -2,33 +2,22 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 -RGBLIGHT_ENABLE = yes # Use RGB underglow light +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 RGB_MATRIX_ENABLE = no # Use RGB matrix RGB_MATRIX_DRIVER = IS31FL3733 -LAYOUTS = 60_ansi 60_hhkb + +LAYOUTS = 60_ansi 60_hhkb 60_tsangan_hhkb 60_ansi_split_bs_rshift diff --git a/keyboards/exclusive/e6v2/le/config.h b/keyboards/exclusive/e6v2/le/config.h index 8fc91e504cb5..f9295145ec9d 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -57,5 +56,3 @@ along with this program. If not, see . #define DIODE_DIRECTION COL2ROW #define DEBOUNCE 5 - -#endif diff --git a/keyboards/exclusive/e6v2/le/info.json b/keyboards/exclusive/e6v2/le/info.json index 5a44eab18c67..095fe66a024b 100644 --- a/keyboards/exclusive/e6v2/le/info.json +++ b/keyboards/exclusive/e6v2/le/info.json @@ -2,8 +2,6 @@ "keyboard_name": "E6-V2 LE", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { "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}, {"x":0, "y":3}, {"x":1, "y":3}, {"label":"Z", "x":2, "y":3}, {"label":"X", "x":3, "y":3}, {"label":"C", "x":4, "y":3}, {"label":"V", "x":5, "y":3}, {"label":"B", "x":6, "y":3}, {"label":"N", "x":7, "y":3}, {"label":"M", "x":8, "y":3}, {"label":"<", "x":9, "y":3}, {"label":">", "x":10, "y":3}, {"label":"?", "x":11, "y":3}, {"x":12, "y":3}, {"x":13, "y":3}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.75}, {"label":"Ctrl", "x":1.75, "y":4, "w":1.25}, {"label":"Win", "x":3, "y":4, "w":1.25}, {"label":"Alt", "x":4.25, "y":4, "w":1.25}, {"x":5.5, "y":4, "w":2.75}, {"x":8.25, "y":4, "w":1.75}, {"x":10, "y":4}, {"label":"Alt", "x":11, "y":4}, {"label":"Win", "x":12, "y":4}, {"label":"Menu", "x":13, "y":4}, {"label":"Ctrl", "x":14, "y":4}] @@ -12,7 +10,6 @@ "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}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"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}] }, "LAYOUT_60_hhkb": { - "key_count": 60, "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"1", "x":1, "y":0}, {"label":"2", "x":2, "y":0}, {"label":"3", "x":3, "y":0}, {"label":"4", "x":4, "y":0}, {"label":"5", "x":5, "y":0}, {"label":"6", "x":6, "y":0}, {"label":"7", "x":7, "y":0}, {"label":"8", "x":8, "y":0}, {"label":"9", "x":9, "y":0}, {"label":"0", "x":10, "y":0}, {"label":"-", "x":11, "y":0}, {"label":"=", "x":12, "y":0}, {"label":"\\", "x":13, "y":0}, {"label":"`", "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":"Backspace", "x":13.5, "y":1, "w":1.5}, {"label":"Control", "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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":",", "x":9.25, "y":3}, {"label":".", "x":10.25, "y":3}, {"label":"/", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Fn", "x":14, "y":3}, {"label":"Os", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"Os", "x":12.5, "y":4}] } } diff --git a/keyboards/exclusive/e6v2/le/le.h b/keyboards/exclusive/e6v2/le/le.h index d52560dfbe8d..41992a185e85 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/le/rules.mk b/keyboards/exclusive/e6v2/le/rules.mk index 0b5585663526..c074753e444b 100644 --- a/keyboards/exclusive/e6v2/le/rules.mk +++ b/keyboards/exclusive/e6v2/le/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# 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 = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = 60_ansi diff --git a/keyboards/exclusive/e6v2/le_bmc/info.json b/keyboards/exclusive/e6v2/le_bmc/info.json index 4604f5756536..e6a8a0ccbfc2 100644 --- a/keyboards/exclusive/e6v2/le_bmc/info.json +++ b/keyboards/exclusive/e6v2/le_bmc/info.json @@ -1,7 +1,5 @@ { "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"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}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10.0, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}] diff --git a/keyboards/exclusive/e6v2/le_bmc/rules.mk b/keyboards/exclusive/e6v2/le_bmc/rules.mk index f61cdd43818a..f0af7e490443 100644 --- a/keyboards/exclusive/e6v2/le_bmc/rules.mk +++ b/keyboards/exclusive/e6v2/le_bmc/rules.mk @@ -2,31 +2,19 @@ MCU = atmega32a # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality WS2812_DRIVER = i2c RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/exclusive/e6v2/oe/config.h b/keyboards/exclusive/e6v2/oe/config.h index 13be6ccad625..d9362cfc0308 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -54,5 +53,3 @@ along with this program. If not, see . #define DIODE_DIRECTION COL2ROW #define DEBOUNCE 5 - -#endif diff --git a/keyboards/exclusive/e6v2/oe/info.json b/keyboards/exclusive/e6v2/oe/info.json index 7c14017274bf..16cf613d30cc 100644 --- a/keyboards/exclusive/e6v2/oe/info.json +++ b/keyboards/exclusive/e6v2/oe/info.json @@ -2,8 +2,6 @@ "keyboard_name": "E6-V2 OE", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { "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}, {"x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.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/exclusive/e6v2/oe/oe.c b/keyboards/exclusive/e6v2/oe/oe.c index 10cd59f0c21d..3c6627894fdf 100644 --- a/keyboards/exclusive/e6v2/oe/oe.c +++ b/keyboards/exclusive/e6v2/oe/oe.c @@ -1,26 +1,5 @@ #include "oe.h" -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - void led_set_kb(uint8_t usb_led) { // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here DDRB |= (1<<6); diff --git a/keyboards/exclusive/e6v2/oe/oe.h b/keyboards/exclusive/e6v2/oe/oe.h index 0746039fe724..21daaa2aa9bc 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/exclusive/e6v2/oe/rules.mk b/keyboards/exclusive/e6v2/oe/rules.mk index 0b5585663526..c074753e444b 100644 --- a/keyboards/exclusive/e6v2/oe/rules.mk +++ b/keyboards/exclusive/e6v2/oe/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# 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 = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = 60_ansi diff --git a/keyboards/exclusive/e6v2/oe_bmc/info.json b/keyboards/exclusive/e6v2/oe_bmc/info.json index 4604f5756536..e6a8a0ccbfc2 100644 --- a/keyboards/exclusive/e6v2/oe_bmc/info.json +++ b/keyboards/exclusive/e6v2/oe_bmc/info.json @@ -1,7 +1,5 @@ { "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"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}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10.0, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}] diff --git a/keyboards/exclusive/e6v2/oe_bmc/rules.mk b/keyboards/exclusive/e6v2/oe_bmc/rules.mk index f61cdd43818a..f0af7e490443 100644 --- a/keyboards/exclusive/e6v2/oe_bmc/rules.mk +++ b/keyboards/exclusive/e6v2/oe_bmc/rules.mk @@ -2,31 +2,19 @@ MCU = atmega32a # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality WS2812_DRIVER = i2c RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/exclusive/e7v1/info.json b/keyboards/exclusive/e7v1/info.json index e675e661fa46..0d341e7af490 100644 --- a/keyboards/exclusive/e7v1/info.json +++ b/keyboards/exclusive/e7v1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "E7-V1", "url": "", "maintainer": "masterzen", - "width": 16.25, - "height": 6.5, "layouts": { "LAYOUT_all": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.25, "y":0}, {"label":"F2", "x":2.25, "y":0}, {"label":"F3", "x":3.25, "y":0}, {"label":"F4", "x":4.25, "y":0}, {"label":"F5", "x":5.5, "y":0}, {"label":"F6", "x":6.5, "y":0}, {"label":"F7", "x":7.5, "y":0}, {"label":"F8", "x":8.5, "y":0}, {"label":"F9", "x":9.75, "y":0}, {"label":"F10", "x":10.75, "y":0}, {"label":"F11", "x":11.75, "y":0}, {"label":"F12", "x":12.75, "y":0}, {"label":"Home", "x":14, "y":0}, {"label":"End", "x":15.25, "y":0}, {"label":"~", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"@", "x":2, "y":1.5}, {"label":"#", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"x":13, "y":1.5}, {"label":"Backspace", "x":14, "y":1.5}, {"label":"Page Up", "x":15.25, "y":1.5}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":6.5, "y":2.5}, {"label":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"\\", "x":13.5, "y":2.5, "w":1.5}, {"label":"Page down", "x":15.25, "y":2.5}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, {"label":"Shift", "x":0, "y":4.5, "w":1.25}, {"label":"Z", "x":1.25, "y":4.5}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"N", "x":7.25, "y":4.5}, {"label":"M", "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":"Shift", "x":12.25, "y":4.5, "w":1.75}, {"label":"\u2191", "x":14.25, "y":4.75}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, {"label":"Win", "x":1.25, "y":5.5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"label":"Alt", "x":10, "y":5.5}, {"label":"Win", "x":11, "y":5.5}, {"x":12, "y":5.5}, {"label":"\u2190", "x":13.25, "y":5.75}, {"label":"\u2193", "x":14.25, "y":5.75}, {"label":"\u2192", "x":15.25, "y":5.75}] diff --git a/keyboards/exclusive/e7v1/keymaps/masterzen/keymap.c b/keyboards/exclusive/e7v1/keymaps/masterzen/keymap.c index 61a41f629cae..6987e84021bc 100644 --- a/keyboards/exclusive/e7v1/keymaps/masterzen/keymap.c +++ b/keyboards/exclusive/e7v1/keymaps/masterzen/keymap.c @@ -111,7 +111,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) return true; } -uint32_t layer_state_set_user(uint32_t state) +layer_state_t layer_state_set_user(layer_state_t state) { if (state == BASE && edit == true) { diff --git a/keyboards/exclusive/e7v1/rules.mk b/keyboards/exclusive/e7v1/rules.mk index 7bd87e2d668b..b73f9404a20f 100644 --- a/keyboards/exclusive/e7v1/rules.mk +++ b/keyboards/exclusive/e7v1/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 -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 = yes # Enable keyboard backlight functionality AUDIO_ENABLE = no diff --git a/keyboards/exclusive/e7v1se/config.h b/keyboards/exclusive/e7v1se/config.h index 676a0ac8e7ba..1bb0eb3acf14 100644 --- a/keyboards/exclusive/e7v1se/config.h +++ b/keyboards/exclusive/e7v1se/config.h @@ -121,59 +121,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -194,26 +141,6 @@ along with this program. If not, see . #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/exclusive/e7v1se/e7v1se.c b/keyboards/exclusive/e7v1se/e7v1se.c index 36cfccc2f58b..69248f01d467 100644 --- a/keyboards/exclusive/e7v1se/e7v1se.c +++ b/keyboards/exclusive/e7v1se/e7v1se.c @@ -15,36 +15,3 @@ */ #include "e7v1se.h" - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -/* -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -bool led_update_kb(led_t led_state) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - return led_update_user(led_state); -} -*/ diff --git a/keyboards/exclusive/e7v1se/info.json b/keyboards/exclusive/e7v1se/info.json index fd9fe0a680bc..f72eaebb68dd 100644 --- a/keyboards/exclusive/e7v1se/info.json +++ b/keyboards/exclusive/e7v1se/info.json @@ -2,8 +2,6 @@ "keyboard_name": "e7v1se", "url": "https://geekhack.org/index.php?topic=101363", "maintainer": "Bart Riemens", - "width": 16.25, - "height": 6.25, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/exclusive/e7v1se/rules.mk b/keyboards/exclusive/e7v1se/rules.mk index 4e6cf8c855d6..f69544424314 100644 --- a/keyboards/exclusive/e7v1se/rules.mk +++ b/keyboards/exclusive/e7v1se/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/exclusive/e85/config.h b/keyboards/exclusive/e85/config.h index 1791351ebd94..cc4fcd97d0d2 100644 --- a/keyboards/exclusive/e85/config.h +++ b/keyboards/exclusive/e85/config.h @@ -105,59 +105,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -178,26 +125,6 @@ along with this program. If not, see . #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/exclusive/e85/hotswap/info.json b/keyboards/exclusive/e85/hotswap/info.json index e939d4c8b4e4..e8c65f32d235 100644 --- a/keyboards/exclusive/e85/hotswap/info.json +++ b/keyboards/exclusive/e85/hotswap/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Exclusive E8.5 TKL", "url": "", "maintainer": "qmk", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT_ansi_standard": { "layout": [ diff --git a/keyboards/exclusive/e85/rules.mk b/keyboards/exclusive/e85/rules.mk index ebbb95723563..03dae35cda58 100644 --- a/keyboards/exclusive/e85/rules.mk +++ b/keyboards/exclusive/e85/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LTO_ENABLE = yes diff --git a/keyboards/exclusive/e85/soldered/info.json b/keyboards/exclusive/e85/soldered/info.json index cc888a1576b1..fa4be1564714 100644 --- a/keyboards/exclusive/e85/soldered/info.json +++ b/keyboards/exclusive/e85/soldered/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Exclusive E8.5 TKL", "url": "", "maintainer": "qmk", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT_all": { - "key_count": 91, "layout": [ {"label":"K00 (E6,D0)", "x":0, "y":0}, {"label":"K01 (E6,D1)", "x":1.25, "y":0}, @@ -103,7 +100,6 @@ }, "LAYOUT_ansi_standard": { - "key_count": 88, "layout": [ {"label":"K00 (E6,D0)", "x":0, "y":0}, {"label":"K01 (E6,D1)", "x":1.25, "y":0}, @@ -197,7 +193,6 @@ }, "LAYOUT_ansi_tsangan": { - "key_count": 87, "layout": [ {"label":"K00 (E6,D0)", "x":0, "y":0}, {"label":"K01 (E6,D1)", "x":1.25, "y":0}, @@ -289,5 +284,4 @@ ] } } - ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/" } diff --git a/keyboards/exent/info.json b/keyboards/exent/info.json index 07f7c4932097..c783086ff875 100644 --- a/keyboards/exent/info.json +++ b/keyboards/exent/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Exent", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/exent/rules.mk b/keyboards/exent/rules.mk index 12aec0f594ee..c25a10a0259f 100644 --- a/keyboards/exent/rules.mk +++ b/keyboards/exent/rules.mk @@ -2,21 +2,18 @@ MCU = atmega32a # Bootloader selection -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output WS2812_DRIVER = i2c diff --git a/keyboards/eyeohdesigns/babyv/info.json b/keyboards/eyeohdesigns/babyv/info.json index 1ff70463a411..79ae8b23f559 100644 --- a/keyboards/eyeohdesigns/babyv/info.json +++ b/keyboards/eyeohdesigns/babyv/info.json @@ -2,8 +2,6 @@ "keyboard_name": "babyv", "url": "", "maintainer": "eye oh designs", - "width": 14.25, - "height": 6.14, "layouts": { "LAYOUT_2u": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":7, "y":0}, {"label":"U", "x":8, "y":0}, {"label":"I", "x":9, "y":0}, {"label":"O", "x":10, "y":0}, {"label":"P", "x":11, "y":0}, {"label":"Back Space", "x":12, "y":0}, {"label":"Tab", "x":0, "y":1}, {"label":"A", "x":1, "y":1}, {"label":"S", "x":2, "y":1}, {"label":"D", "x":3, "y":1}, {"label":"F", "x":4, "y":1}, {"label":"G", "x":5, "y":1}, {"label":"H", "x":7, "y":1}, {"label":"J", "x":8, "y":1}, {"label":"K", "x":9, "y":1}, {"label":"L", "x":10, "y":1}, {"label":";", "x":11, "y":1}, {"label":"Return", "x":12, "y":1}, {"label":"Shift", "x":0, "y":2}, {"label":"Z", "x":1, "y":2}, {"label":"X", "x":2, "y":2}, {"label":"C", "x":3, "y":2}, {"label":"V", "x":4, "y":2}, {"label":"B", "x":5, "y":2}, {"label":"N", "x":7, "y":2}, {"label":"M", "x":8, "y":2}, {"label":",", "x":9, "y":2}, {"label":".", "x":10, "y":2}, {"label":"/", "x":11, "y":2}, {"label":"Shift", "x":12, "y":2}, {"label":"Ctl", "x":0, "y":3}, {"label":"Alt", "x":3, "y":3}, {"x":4, "y":3, "w":2}, {"x":7, "y":3, "w":2}, {"label":"Fn", "x":9, "y":3}, {"label":"OS", "x":12, "y":3}] diff --git a/keyboards/eyeohdesigns/babyv/keymaps/1u/keymap.c b/keyboards/eyeohdesigns/babyv/keymaps/1u/keymap.c index ef2c32108b52..056c36d32a92 100644 --- a/keyboards/eyeohdesigns/babyv/keymaps/1u/keymap.c +++ b/keyboards/eyeohdesigns/babyv/keymaps/1u/keymap.c @@ -18,25 +18,25 @@ // Defines names for use in layer keycodes and the keymap enum layer_names { - QWERTY, - FUNCTN, - NUMBRS, + _QWERTY, + _FUNCTN, + _NUMBRS, }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [QWERTY] = LAYOUT_1u( + [_QWERTY] = LAYOUT_1u( KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, - KC_LCTL, MO(FUNCTN), MO(NUMBRS), KC_SPC, KC_SPC, MO(NUMBRS), MO(FUNCTN), KC_RALT + KC_LCTL, MO(_FUNCTN), MO(_NUMBRS), KC_SPC, KC_SPC, MO(_NUMBRS), MO(_FUNCTN), KC_RALT ), - [FUNCTN] = LAYOUT_1u( + [_FUNCTN] = LAYOUT_1u( KC_VOLU, KC_Q, KC_PGUP, RGB_TOG, BL_STEP, KC_T, KC_Y, KC_U, KC_UP, RGB_MOD, RGB_RMOD, KC_DEL, KC_VOLD, KC_HOME, KC_PGDN, KC_D, KC_U, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_QUOT, RESET, KC_LSFT, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, KC_LBRC, KC_RBRC, RGB_VAI, RGB_VAD, KC_DOT, KC_BSLS, KC_RSFT, KC_LCTL, KC_TRNS, KC_TRNS, KC_SPC, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS ), - [NUMBRS] = LAYOUT_1u( + [_NUMBRS] = LAYOUT_1u( 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_MUTE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ENT, KC_CAPS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_RSFT, diff --git a/keyboards/eyeohdesigns/babyv/keymaps/1u2u/keymap.c b/keyboards/eyeohdesigns/babyv/keymaps/1u2u/keymap.c index 86f4efffe4be..c161c714b360 100644 --- a/keyboards/eyeohdesigns/babyv/keymaps/1u2u/keymap.c +++ b/keyboards/eyeohdesigns/babyv/keymaps/1u2u/keymap.c @@ -17,25 +17,25 @@ // Defines names for use in layer keycodes and the keymap enum layer_names { - QWERTY, - FUNCTN, - NUMBRS, + _QWERTY, + _FUNCTN, + _NUMBRS, }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [QWERTY] = LAYOUT_1u_2u( + [_QWERTY] = LAYOUT_1u_2u( KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, - KC_LCTL, KC_LALT, MO(FUNCTN), MO(NUMBRS), KC_SPC, MO(FUNCTN), KC_RCTL + KC_LCTL, KC_LALT, MO(_FUNCTN), MO(_NUMBRS), KC_SPC, MO(_FUNCTN), KC_RCTL ), - [FUNCTN] = LAYOUT_1u_2u( + [_FUNCTN] = LAYOUT_1u_2u( KC_VOLU, KC_Q, KC_PGUP, RGB_TOG, BL_STEP, KC_T, KC_Y, KC_U, KC_UP, RGB_MOD, RGB_RMOD, KC_DEL, KC_VOLD, KC_HOME, KC_PGDN, KC_D, KC_U, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_QUOT, RESET, KC_LSFT, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, KC_LBRC, KC_RBRC, RGB_VAI, RGB_VAD, KC_DOT, KC_BSLS, KC_RSFT, KC_LGUI, KC_LALT, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, RESET ), - [NUMBRS] = LAYOUT_1u_2u( + [_NUMBRS] = LAYOUT_1u_2u( 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_MUTE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ENT, KC_CAPS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_RSFT, diff --git a/keyboards/eyeohdesigns/babyv/keymaps/2u1u/keymap.c b/keyboards/eyeohdesigns/babyv/keymaps/2u1u/keymap.c index 7963db77eb5a..3c5de89d65c3 100644 --- a/keyboards/eyeohdesigns/babyv/keymaps/2u1u/keymap.c +++ b/keyboards/eyeohdesigns/babyv/keymaps/2u1u/keymap.c @@ -18,25 +18,25 @@ // Defines names for use in layer keycodes and the keymap enum layer_names { - QWERTY, - FUNCTN, - NUMBRS, + _QWERTY, + _FUNCTN, + _NUMBRS, }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [QWERTY] = LAYOUT_2u_1u( + [_QWERTY] = LAYOUT_2u_1u( KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, - KC_LCTL, MO(FUNCTN), KC_SPC, MO(NUMBRS), MO(FUNCTN), KC_LGUI, KC_RALT + KC_LCTL, MO(_FUNCTN), KC_SPC, MO(_NUMBRS), MO(_FUNCTN), KC_LGUI, KC_RALT ), - [FUNCTN] = LAYOUT_2u_1u( + [_FUNCTN] = LAYOUT_2u_1u( KC_VOLU, KC_Q, KC_PGUP, RGB_TOG, BL_STEP, KC_T, KC_Y, KC_U, KC_UP, RGB_MOD, RGB_RMOD, KC_DEL, KC_VOLD, KC_HOME, KC_PGDN, KC_D, KC_U, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_QUOT, RESET, KC_LSFT, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, KC_LBRC, KC_RBRC, RGB_VAI, RGB_VAD, KC_DOT, KC_BSLS, KC_RSFT, KC_LCTL, KC_TRNS, KC_SPC, KC_TRNS, KC_TRNS, KC_LGUI, KC_TRNS ), - [NUMBRS] = LAYOUT_2u_1u( + [_NUMBRS] = LAYOUT_2u_1u( 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_MUTE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ENT, KC_CAPS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_RSFT, diff --git a/keyboards/eyeohdesigns/babyv/keymaps/default/keymap.c b/keyboards/eyeohdesigns/babyv/keymaps/default/keymap.c index 2b071bd8547a..004a47678df9 100644 --- a/keyboards/eyeohdesigns/babyv/keymaps/default/keymap.c +++ b/keyboards/eyeohdesigns/babyv/keymaps/default/keymap.c @@ -17,25 +17,25 @@ // Defines names for use in layer keycodes and the keymap enum layer_names { - QWERTY, - FUNCT, - NUMBRS, + _QWERTY, + _FUNCTN, + _NUMBRS, }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [QWERTY] = LAYOUT_2u( + [_QWERTY] = LAYOUT_2u( KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, - KC_LCTL, KC_LALT, MO(NUMBRS), KC_SPC, MO(FUNCT), KC_LGUI + KC_LCTL, KC_LALT, MO(_NUMBRS), KC_SPC, MO(_FUNCTN), KC_LGUI ), - [FUNCT] = LAYOUT_2u( + [_FUNCTN] = LAYOUT_2u( KC_VOLU, KC_Q, KC_PGUP, RGB_TOG, BL_STEP, KC_T, KC_Y, KC_U, KC_UP, RGB_MOD, RGB_RMOD, KC_DEL, KC_VOLD, KC_HOME, KC_PGDN, KC_D, KC_U, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_QUOT, RESET, KC_LSFT, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, KC_LBRC, KC_RBRC, RGB_VAI, RGB_VAD, KC_DOT, KC_BSLS, KC_RSFT, KC_LCTL, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, RESET ), - [NUMBRS] = LAYOUT_2u( + [_NUMBRS] = LAYOUT_2u( 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_MUTE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ENT, KC_CAPS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_RSFT, diff --git a/keyboards/babyv/keymaps/melonbred/keymap.c b/keyboards/eyeohdesigns/babyv/keymaps/melonbred/keymap.c similarity index 100% rename from keyboards/babyv/keymaps/melonbred/keymap.c rename to keyboards/eyeohdesigns/babyv/keymaps/melonbred/keymap.c diff --git a/keyboards/eyeohdesigns/babyv/readme.md b/keyboards/eyeohdesigns/babyv/readme.md index b3cd4f703593..6a367f376d0d 100644 --- a/keyboards/eyeohdesigns/babyv/readme.md +++ b/keyboards/eyeohdesigns/babyv/readme.md @@ -15,5 +15,7 @@ Make example for this keyboard (after setting up your build environment): Flashing example for this keyboard: make eyeohdesigns/babyv:default:flash + +To enter the bootloader, either depress the reset button on the back of the PCB, or use the 'RESET' keycode found on the function layer. 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/eyeohdesigns/babyv/rules.mk b/keyboards/eyeohdesigns/babyv/rules.mk index b26342b20209..50ad99787cfa 100644 --- a/keyboards/eyeohdesigns/babyv/rules.mk +++ b/keyboards/eyeohdesigns/babyv/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/eyeohdesigns/sprh/config.h b/keyboards/eyeohdesigns/sprh/config.h new file mode 100644 index 000000000000..45a315853687 --- /dev/null +++ b/keyboards/eyeohdesigns/sprh/config.h @@ -0,0 +1,44 @@ +/* +Copyright 2021 Eye Oh Designs + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x0000 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Eye Oh Designs +#define PRODUCT sprh + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 +#define ENCODERS_PAD_A {D0} +#define ENCODERS_PAD_B {D1} +#define ENCODER_RESOLUTION 2 + + +#define MATRIX_ROW_PINS { B3, B7, D2, D5, D3 } +#define MATRIX_COL_PINS { E6, F0, F1, F4, F5, F6, C6, B6, B5, B4, D7, D6, F7, D4 } + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* 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/eyeohdesigns/sprh/info.json b/keyboards/eyeohdesigns/sprh/info.json new file mode 100644 index 000000000000..7c99615965f8 --- /dev/null +++ b/keyboards/eyeohdesigns/sprh/info.json @@ -0,0 +1,148 @@ +{ + "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", "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", "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/eyeohdesigns/sprh/keymaps/default/keymap.c b/keyboards/eyeohdesigns/sprh/keymaps/default/keymap.c new file mode 100644 index 000000000000..c66fb90c29d6 --- /dev/null +++ b/keyboards/eyeohdesigns/sprh/keymaps/default/keymap.c @@ -0,0 +1,49 @@ +/* Copyright 2019 IOD + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +enum custom_layers { + _QWERTY, + _FUNCTN, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QWERTY] = LAYOUT_default(/* Base */ + KC_MUTE, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, MO(_FUNCTN), KC_RALT, KC_LEFT, KC_DOWN, KC_RIGHT + ), + + [_FUNCTN] = LAYOUT_default(/* Base */ + RESET, KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TAB, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_ENT, + KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_FUNCTN), KC_RALT, KC_HOME, KC_PGDN, KC_END + ) +}; + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + if (clockwise) { + tap_code(KC_VOLU); + } else{ + tap_code(KC_VOLD); + } + } + return true; +} diff --git a/keyboards/eyeohdesigns/sprh/keymaps/split/keymap.c b/keyboards/eyeohdesigns/sprh/keymaps/split/keymap.c new file mode 100644 index 000000000000..3ed21b6e4d12 --- /dev/null +++ b/keyboards/eyeohdesigns/sprh/keymaps/split/keymap.c @@ -0,0 +1,49 @@ +/* Copyright 2019 IOD + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +enum custom_layers { + _QWERTY, + _FUNCTN, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QWERTY] = LAYOUT_split(/* Base */ + KC_MUTE, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_DEL, KC_MINS, KC_EQL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_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_CAPS, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FUNCTN), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_ESC, MO(_FUNCTN), KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT + ), + + [_FUNCTN] = LAYOUT_split(/* Base */ + RESET, KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, + KC_TAB, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_ENT, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, + _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END + ) +}; + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + if (clockwise) { + tap_code(KC_VOLU); + } else{ + tap_code(KC_VOLD); + } + } + return true; +} diff --git a/keyboards/eyeohdesigns/sprh/readme.md b/keyboards/eyeohdesigns/sprh/readme.md new file mode 100644 index 000000000000..59c5bce2c7e7 --- /dev/null +++ b/keyboards/eyeohdesigns/sprh/readme.md @@ -0,0 +1,21 @@ +# SPRH + +![SPRH](https://i.imgur.com/fkI5ryph.jpg) + +SPRH (Square Peg-Round Hole) is a 65% ortholinear board compatibile with standard keycap sets. + +* Keyboard Maintainer: [Eye Oh Designs](https://github.com/joedinkle) +* Hardware Supported: SPRH ver 1.00 +* Hardware Availability: Groupbuy ran in April 2021 + +Make example for this keyboard (after setting up your build environment): + + make eyeohdesigns/sprh:default + +Flashing example for this keyboard: + + make eyeohdesigns/sprh:default:flash + +To enter the bootloader, either depress the reset button on the back of the PCB, or use the 'RESET' keycode found on the function layer. + +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/eyeohdesigns/sprh/rules.mk b/keyboards/eyeohdesigns/sprh/rules.mk new file mode 100644 index 000000000000..b881bf6f4912 --- /dev/null +++ b/keyboards/eyeohdesigns/sprh/rules.mk @@ -0,0 +1,20 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes \ No newline at end of file diff --git a/keyboards/eyeohdesigns/sprh/sprh.c b/keyboards/eyeohdesigns/sprh/sprh.c new file mode 100644 index 000000000000..bc7ad7b9ba55 --- /dev/null +++ b/keyboards/eyeohdesigns/sprh/sprh.c @@ -0,0 +1,16 @@ +/* Copyright 2021 Eye Oh Designs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "sprh.h" \ No newline at end of file diff --git a/keyboards/eyeohdesigns/sprh/sprh.h b/keyboards/eyeohdesigns/sprh/sprh.h new file mode 100644 index 000000000000..772a40a97710 --- /dev/null +++ b/keyboards/eyeohdesigns/sprh/sprh.h @@ -0,0 +1,55 @@ +/* Copyright 2021 Eye Oh Designs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +/* This a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT_default( \ + k43, 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,\ + k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d,\ + k40, k41, k42, k46, k48, k49, 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, KC_NO},\ + {KC_NO, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d},\ + {k40, k41, k42, k43, KC_NO, KC_NO, k46, KC_NO, k48, k49, KC_NO, k4b, k4c, k4d},\ +} +#define LAYOUT_split( \ + k43, k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k2d,\ + 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, k3c, k49, k3d,\ + k40, k41, k42, k44, k45, k46, k47, k48, 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, KC_NO, k4b, k4c, k4d},\ +} diff --git a/keyboards/ez_maker/directpins/promicro/config.h b/keyboards/ez_maker/directpins/promicro/config.h new file mode 100644 index 000000000000..436e169c19c3 --- /dev/null +++ b/keyboards/ez_maker/directpins/promicro/config.h @@ -0,0 +1,20 @@ +/* +Copyright 2021 Zach White + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" diff --git a/keyboards/ez_maker/directpins/promicro/info.json b/keyboards/ez_maker/directpins/promicro/info.json new file mode 100644 index 000000000000..419450385ce9 --- /dev/null +++ b/keyboards/ez_maker/directpins/promicro/info.json @@ -0,0 +1,49 @@ +{ + "manufacturer": "Zach White", + "keyboard_name": "DirectPins ProMicro", + "maintainer": "skullydazed", + "bootloader": "atmel-dfu", + "debounce": 5, + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true + }, + "matrix_pins": { + "direct": [ + ["D3", null], + ["D2", null], + ["D1", "F4"], + ["D0", "F5"], + ["D4", "F6"], + ["C6", "F7"], + ["D7", "B1"], + ["E6", "B3"], + ["B4", "B2"], + ["B5", "B6"] + ] + }, + "processor": "atmega32u4", + "usb": { + "device_ver": "0x0001", + "pid": "0x2320", + "vid": "0xFEED" + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"D3", "matrix": [0, 0], "x":0, "y":0}, + {"label":"D2", "matrix": [1, 0], "x":0, "y":1}, + {"label":"D1", "matrix": [2, 0], "x":0, "y":4}, {"label":"F4", "matrix": [2, 1], "x":2, "y":4}, + {"label":"D0", "matrix": [3, 0], "x":0, "y":5}, {"label":"F5", "matrix": [3, 1], "x":2, "y":5}, + {"label":"D4", "matrix": [4, 0], "x":0, "y":6}, {"label":"F6", "matrix": [4, 1], "x":2, "y":6}, + {"label":"C6", "matrix": [5, 0], "x":0, "y":7}, {"label":"F7", "matrix": [5, 1], "x":2, "y":7}, + {"label":"D7", "matrix": [6, 0], "x":0, "y":8}, {"label":"B1", "matrix": [6, 1], "x":2, "y":8}, + {"label":"E6", "matrix": [7, 0], "x":0, "y":9}, {"label":"B3", "matrix": [7, 1], "x":2, "y":9}, + {"label":"B4", "matrix": [8, 0], "x":0, "y":10}, {"label":"B2", "matrix": [8, 1], "x":2, "y":10}, + {"label":"B5", "matrix": [9, 0], "x":0, "y":11}, {"label":"B6", "matrix": [9, 1], "x":2, "y":11} + ] + } + } +} diff --git a/keyboards/ez_maker/directpins/promicro/keymaps/default/keymap.json b/keyboards/ez_maker/directpins/promicro/keymaps/default/keymap.json new file mode 100644 index 000000000000..f39a5802b9e5 --- /dev/null +++ b/keyboards/ez_maker/directpins/promicro/keymaps/default/keymap.json @@ -0,0 +1,19 @@ +{ + "keyboard": "ez_maker/directpins/promicro", + "keymap": "default", + "layout": "LAYOUT_all", + "layers": [ + [ + "KC_0", + "KC_1", + "KC_2", "KC_3", + "KC_4", "KC_5", + "KC_6", "KC_7", + "KC_8", "KC_9", + "KC_A", "KC_B", + "KC_C", "KC_D", + "KC_E", "KC_F", + "KC_G", "KC_H" + ] + ] +} diff --git a/keyboards/ez_maker/directpins/promicro/promicro.c b/keyboards/ez_maker/directpins/promicro/promicro.c new file mode 100644 index 000000000000..1f89eb39efd4 --- /dev/null +++ b/keyboards/ez_maker/directpins/promicro/promicro.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Zach White + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "promicro.h" diff --git a/keyboards/ez_maker/directpins/promicro/promicro.h b/keyboards/ez_maker/directpins/promicro/promicro.h new file mode 100644 index 000000000000..386e50fb5b64 --- /dev/null +++ b/keyboards/ez_maker/directpins/promicro/promicro.h @@ -0,0 +1,19 @@ +/* Copyright 2021 Zach White + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" diff --git a/keyboards/ez_maker/directpins/promicro/readme.md b/keyboards/ez_maker/directpins/promicro/readme.md new file mode 100644 index 000000000000..b987ce0aad8b --- /dev/null +++ b/keyboards/ez_maker/directpins/promicro/readme.md @@ -0,0 +1,19 @@ +# DirectPins + +![Promicro Pinout Guide](https://i.imgur.com/LZ194Hf.jpg) + +Easily assign keys to pins for your custom project using QMK Configurator. + +* Keyboard Maintainer: [Zach White](https://github.com/skullydazed) +* Hardware Supported: Promicro +* Hardware Availability: Sparkfun, chinese clones + +Make example for this keyboard (after setting up your build environment): + + qmk compile -kb ez_maker/directpins/promicro -km default + +Flashing example for this keyboard: + + qmk flash -kb ez_maker/directpins/promicro -km default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/mechlovin/hannah65/mechlovin9/rules.mk b/keyboards/ez_maker/directpins/promicro/rules.mk similarity index 100% rename from keyboards/mechlovin/hannah65/mechlovin9/rules.mk rename to keyboards/ez_maker/directpins/promicro/rules.mk diff --git a/keyboards/ez_maker/directpins/proton_c/info.json b/keyboards/ez_maker/directpins/proton_c/info.json new file mode 100644 index 000000000000..a284e5c41f60 --- /dev/null +++ b/keyboards/ez_maker/directpins/proton_c/info.json @@ -0,0 +1,60 @@ +{ + "manufacturer": "Zach White", + "keyboard_name": "DirectPins Proton C", + "maintainer": "skullydazed", + "debounce": 5, + "processor": "STM32F303", + "board": "QMK_PROTON_C", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true + }, + "matrix_pins": { + "direct": [ + ["A9", null], + ["A10", null], + ["B7", "A2"], + ["B6", "A1"], + ["B5", "A0"], + ["B4", "B8"], + ["B3", "B13"], + ["B2", "B14"], + ["B1", "B15"], + ["B0", "B9"], + ["A4", "B10"], + ["A5", "B11"], + ["A6", "B12"], + ["A7", "A14"], + ["A8", "A13"], + ["A15", null] + ] + }, + "usb": { + "device_ver": "0x0001", + "pid": "0x2321", + "vid": "0xFEED" + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + { "label": "A9", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "A10", "matrix": [1, 0], "x": 0, "y": 1 }, + { "label": "B7", "matrix": [2, 0], "x": 0, "y": 4 }, { "label": "A2", "matrix": [2, 1], "x": 2, "y": 4 }, + { "label": "B6", "matrix": [3, 0], "x": 0, "y": 5 }, { "label": "A1", "matrix": [3, 1], "x": 2, "y": 5 }, + { "label": "B5", "matrix": [4, 0], "x": 0, "y": 6 }, { "label": "A0", "matrix": [4, 1], "x": 2, "y": 6 }, + { "label": "B4", "matrix": [5, 0], "x": 0, "y": 7 }, { "label": "B8", "matrix": [5, 1], "x": 2, "y": 7 }, + { "label": "B3", "matrix": [6, 0], "x": 0, "y": 8 }, { "label": "B13", "matrix": [6, 1], "x": 2, "y": 8 }, + { "label": "B2", "matrix": [7, 0], "x": 0, "y": 9 }, { "label": "B14", "matrix": [7, 1], "x": 2, "y": 9 }, + { "label": "B1", "matrix": [8, 0], "x": 0, "y": 10 }, { "label": "B15", "matrix": [8, 1], "x": 2, "y": 10 }, + { "label": "B0", "matrix": [9, 0], "x": 0, "y": 11 }, { "label": "B9", "matrix": [9, 1], "x": 2, "y": 11 }, + { "label": "A4", "matrix": [10, 0], "x": 0, "y": 13 }, { "label": "B10", "matrix": [10, 1], "x": 2, "y": 13 }, + { "label": "A5", "matrix": [11, 0], "x": 0, "y": 14 }, { "label": "B11", "matrix": [11, 1], "x": 2, "y": 14 }, + { "label": "A6", "matrix": [12, 0], "x": 0, "y": 15 }, { "label": "B12", "matrix": [12, 1], "x": 2, "y": 15 }, + { "label": "A7", "matrix": [13, 0], "x": 0, "y": 16 }, { "label": "A14", "matrix": [13, 1], "x": 2, "y": 16 }, + { "label": "A8", "matrix": [14, 0], "x": 0, "y": 17 }, { "label": "A13", "matrix": [14, 1], "x": 2, "y": 17 }, + { "label": "A15", "matrix": [15, 0], "x": 0, "y": 18 } + ] + } + } +} diff --git a/keyboards/ez_maker/directpins/proton_c/keymaps/default/keymap.json b/keyboards/ez_maker/directpins/proton_c/keymaps/default/keymap.json new file mode 100644 index 000000000000..7af6d4476253 --- /dev/null +++ b/keyboards/ez_maker/directpins/proton_c/keymaps/default/keymap.json @@ -0,0 +1,25 @@ +{ + "keyboard": "ez_maker/directpins/proton_c", + "keymap": "default", + "layout": "LAYOUT_all", + "layers": [ + [ + "KC_0", + "KC_1", + "KC_2", "KC_3", + "KC_4", "KC_5", + "KC_6", "KC_7", + "KC_8", "KC_9", + "KC_A", "KC_B", + "KC_C", "KC_D", + "KC_E", "KC_F", + "KC_G", "KC_H", + "KC_I", "KC_J", + "KC_K", "KC_L", + "KC_M", "KC_N", + "KC_O", "KC_P", + "KC_Q", "KC_R", + "KC_S" + ] + ] +} diff --git a/keyboards/ez_maker/directpins/proton_c/keymaps/default/readme.md b/keyboards/ez_maker/directpins/proton_c/keymaps/default/readme.md new file mode 100644 index 000000000000..69c6d2663b13 --- /dev/null +++ b/keyboards/ez_maker/directpins/proton_c/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for directpins diff --git a/keyboards/ez_maker/directpins/proton_c/proton_c.c b/keyboards/ez_maker/directpins/proton_c/proton_c.c new file mode 100644 index 000000000000..75534b609f89 --- /dev/null +++ b/keyboards/ez_maker/directpins/proton_c/proton_c.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Zach White + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "proton_c.h" diff --git a/keyboards/ez_maker/directpins/proton_c/proton_c.h b/keyboards/ez_maker/directpins/proton_c/proton_c.h new file mode 100644 index 000000000000..386e50fb5b64 --- /dev/null +++ b/keyboards/ez_maker/directpins/proton_c/proton_c.h @@ -0,0 +1,19 @@ +/* Copyright 2021 Zach White + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" diff --git a/keyboards/ez_maker/directpins/proton_c/readme.md b/keyboards/ez_maker/directpins/proton_c/readme.md new file mode 100644 index 000000000000..caf6c7c99508 --- /dev/null +++ b/keyboards/ez_maker/directpins/proton_c/readme.md @@ -0,0 +1,19 @@ +# DirectPins + +![Proton-C Pinout Guide](https://i.imgur.com/NqsqmdF.png) + +Easily assign keys to pins for your custom project using QMK Configurator. + +* Keyboard Maintainer: [Zach White](https://github.com/skullydazed) +* Hardware Supported: Proton C +* Hardware Availability: https://qmk.fm/proton-c + +Make example for this keyboard (after setting up your build environment): + + qmk compile -kb ez_maker/directpins/proton_c -km default + +Flashing example for this keyboard: + + qmk flash -kb ez_maker/directpins/proton_c -km default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/xd75/keymaps/boy_314/rules.mk b/keyboards/ez_maker/directpins/proton_c/rules.mk similarity index 100% rename from keyboards/xd75/keymaps/boy_314/rules.mk rename to keyboards/ez_maker/directpins/proton_c/rules.mk diff --git a/keyboards/ez_maker/directpins/readme.md b/keyboards/ez_maker/directpins/readme.md new file mode 100644 index 000000000000..bd415f78a16f --- /dev/null +++ b/keyboards/ez_maker/directpins/readme.md @@ -0,0 +1,5 @@ +# DirectPins + +Easily assign keys to pins for your custom project using QMK Configurator. + +This directory exists so that people creating one-offs can easily hook up their pins to switches and flash QMK to it. diff --git a/keyboards/ez_maker/directpins/teensy_2/config.h b/keyboards/ez_maker/directpins/teensy_2/config.h new file mode 100644 index 000000000000..436e169c19c3 --- /dev/null +++ b/keyboards/ez_maker/directpins/teensy_2/config.h @@ -0,0 +1,20 @@ +/* +Copyright 2021 Zach White + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" diff --git a/keyboards/ez_maker/directpins/teensy_2/info.json b/keyboards/ez_maker/directpins/teensy_2/info.json new file mode 100644 index 000000000000..0c8fa672a9fa --- /dev/null +++ b/keyboards/ez_maker/directpins/teensy_2/info.json @@ -0,0 +1,52 @@ +{ + "manufacturer": "Zach White", + "keyboard_name": "DirectPins Teensy 2.0", + "maintainer": "skullydazed", + "processor": "atmega32u4", + "bootloader": "halfkay", + "debounce": 5, + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true + }, + "matrix_pins": { + "direct": [ + ["B0", "F0"], + ["B1", "F1"], + ["B2", "F4"], + ["B3", "F5"], + ["B7", "F6"], + ["D0", "F7"], + ["D1", "B6"], + ["D2", "B5"], + ["D3", "B4"], + ["C6", "D7"], + ["C7", "D6"], + ["D5", "D4"] + ] + }, + "usb": { + "device_ver": "0x0001", + "pid": "0x2322", + "vid": "0xFEED" + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"B0", "matrix": [0, 0], "x":0, "y":1}, {"label":"F0", "matrix": [0, 1], "x":4, "y":1}, + {"label":"B1", "matrix": [1, 0], "x":0, "y":2}, {"label":"F1", "matrix": [1, 1], "x":4, "y":2}, + {"label":"B2", "matrix": [2, 0], "x":0, "y":3}, {"label":"F4", "matrix": [2, 1], "x":4, "y":3}, + {"label":"B3", "matrix": [3, 0], "x":0, "y":4}, {"label":"F5", "matrix": [3, 1], "x":4, "y":4}, + {"label":"B7", "matrix": [4, 0], "x":0, "y":5}, {"label":"F6", "matrix": [4, 1], "x":4, "y":5}, + {"label":"D0", "matrix": [5, 0], "x":0, "y":6}, {"label":"F7", "matrix": [5, 1], "x":4, "y":6}, + {"label":"D1", "matrix": [6, 0], "x":0, "y":7}, {"label":"B6", "matrix": [6, 1], "x":4, "y":7}, + {"label":"D2", "matrix": [7, 0], "x":0, "y":8}, {"label":"B5", "matrix": [7, 1], "x":4, "y":8}, + {"label":"D3", "matrix": [8, 0], "x":0, "y":9}, {"label":"B4", "matrix": [8, 1], "x":4, "y":9}, + {"label":"C6", "matrix": [9, 0], "x":0, "y":10}, {"label":"D7", "matrix": [9, 1], "x":4, "y":10}, + {"label":"C7", "matrix": [10, 0], "x":0, "y":11}, {"label":"D5", "matrix": [11, 0], "x":1, "y":11}, {"label":"D4", "matrix": [11, 1], "x":3, "y":11}, {"label":"D6", "matrix": [10, 1], "x":4, "y":11} + ] + } + } +} diff --git a/keyboards/ez_maker/directpins/teensy_2/keymaps/default/keymap.json b/keyboards/ez_maker/directpins/teensy_2/keymaps/default/keymap.json new file mode 100644 index 000000000000..f52247ec2793 --- /dev/null +++ b/keyboards/ez_maker/directpins/teensy_2/keymaps/default/keymap.json @@ -0,0 +1,20 @@ +{ + "keyboard": "ez_maker/directpins/teensy2", + "keymap": "default", + "layout": "LAYOUT_all", + "layers": [ + [ + "KC_0", "KC_1", + "KC_2", "KC_3", + "KC_4", "KC_5", + "KC_6", "KC_7", + "KC_8", "KC_9", + "KC_A", "KC_B", + "KC_C", "KC_D", + "KC_E", "KC_F", + "KC_G", "KC_H", + "KC_I", "KC_J", + "KC_K", "KC_L", "KC_M", "KC_N" + ] + ] +} diff --git a/keyboards/ez_maker/directpins/teensy_2/readme.md b/keyboards/ez_maker/directpins/teensy_2/readme.md new file mode 100644 index 000000000000..997680b594e4 --- /dev/null +++ b/keyboards/ez_maker/directpins/teensy_2/readme.md @@ -0,0 +1,19 @@ +# DirectPins + +![Teensy 2.0 Pinout Guide](https://www.pjrc.com/teensy/pinout2a.png) + +Easily assign keys to pins for your custom project using QMK Configurator. + +* Keyboard Maintainer: [Zach White](https://github.com/skullydazed) +* Hardware Supported: Teensy 2.0 +* Hardware Availability: https://www.pjrc.com/ + +Make example for this keyboard (after setting up your build environment): + + qmk compile -kb ez_maker/directpins/teensy2 -km default + +Flashing example for this keyboard: + + qmk flash -kb ez_maker/directpins/teensy2 -km default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v1/.noci b/keyboards/ez_maker/directpins/teensy_2/rules.mk similarity index 100% rename from keyboards/kbdfans/kbd67/mkiirgb/v1/.noci rename to keyboards/ez_maker/directpins/teensy_2/rules.mk diff --git a/keyboards/ez_maker/directpins/teensy_2/teensy2.c b/keyboards/ez_maker/directpins/teensy_2/teensy2.c new file mode 100644 index 000000000000..1ef3337a1a22 --- /dev/null +++ b/keyboards/ez_maker/directpins/teensy_2/teensy2.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Zach White + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "teensy2.h" diff --git a/keyboards/ez_maker/directpins/teensy_2/teensy2.h b/keyboards/ez_maker/directpins/teensy_2/teensy2.h new file mode 100644 index 000000000000..386e50fb5b64 --- /dev/null +++ b/keyboards/ez_maker/directpins/teensy_2/teensy2.h @@ -0,0 +1,19 @@ +/* Copyright 2021 Zach White + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" diff --git a/keyboards/ez_maker/directpins/teensy_2pp/config.h b/keyboards/ez_maker/directpins/teensy_2pp/config.h new file mode 100644 index 000000000000..436e169c19c3 --- /dev/null +++ b/keyboards/ez_maker/directpins/teensy_2pp/config.h @@ -0,0 +1,20 @@ +/* +Copyright 2021 Zach White + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" diff --git a/keyboards/ez_maker/directpins/teensy_2pp/info.json b/keyboards/ez_maker/directpins/teensy_2pp/info.json new file mode 100644 index 000000000000..e12544a5ef9c --- /dev/null +++ b/keyboards/ez_maker/directpins/teensy_2pp/info.json @@ -0,0 +1,67 @@ +{ + "manufacturer": "Zach White", + "keyboard_name": "DirectPins Teensy 2.0++", + "maintainer": "skullydazed", + "processor": "at90usb1286", + "bootloader": "halfkay", + "debounce": 5, + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true + }, + "matrix_pins": { + "direct": [ + ["B7", null, null, "B6"], + ["D0", null, null, "B5"], + ["D1", null, null, "B4"], + ["D2", null, null, "B3"], + ["D3", null, null, "B2"], + ["D4", "E5", "E4", "B1"], + ["D5", null, null, "B0"], + ["D6", null, null, "E7"], + ["D7", null, null, "E6"], + ["E0", null, null, null], + ["E1", null, null, null], + ["C0", null, null, "F0"], + ["C1", "A4", "A0", "F1"], + ["C2", "A5", "A1", "F2"], + ["C3", "A6", "A2", "F3"], + ["C4", "A7", "A3", "F4"], + ["C5", null, null, "F5"], + ["C6", null, null, "F6"], + ["C7", null, null, "F7"], + ] + }, + "usb": { + "device_ver": "0x0001", + "pid": "0x2323", + "vid": "0xFEED" + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"B7", "matrix": [0, 0], "x":0, "y":1}, {"label":"B6", "matrix": [0, 3], "x":5, "y":1}, + {"label":"D0", "matrix": [1, 0], "x":0, "y":2}, {"label":"B5", "matrix": [1, 3], "x":5, "y":2}, + {"label":"D1", "matrix": [2, 0], "x":0, "y":3}, {"label":"B4", "matrix": [2, 3], "x":5, "y":3}, + {"label":"D2", "matrix": [3, 0], "x":0, "y":4}, {"label":"B3", "matrix": [3, 3], "x":5, "y":4}, + {"label":"D3", "matrix": [4, 0], "x":0, "y":5}, {"label":"B2", "matrix": [4, 3], "x":5, "y":5}, + {"label":"D4", "matrix": [5, 0], "x":0, "y":6}, {"label":"E5", "matrix": [5, 1], "x":2, "y":6}, {"label":"E4", "matrix": [5, 2], "x":3, "y":6}, {"label":"B1", "matrix": [5, 3], "x":5, "y":6}, + {"label":"D5", "matrix": [6, 0], "x":0, "y":7}, {"label":"B0", "matrix": [6, 3], "x":5, "y":7}, + {"label":"D6", "matrix": [7, 0], "x":0, "y":8}, {"label":"E7", "matrix": [7, 3], "x":5, "y":8}, + {"label":"D7", "matrix": [8, 0], "x":0, "y":9}, {"label":"E6", "matrix": [8, 3], "x":5, "y":9}, + {"label":"E0", "matrix": [9, 0], "x":0, "y":10}, + {"label":"E1", "matrix": [10, 0], "x":0, "y":11}, + {"label":"C0", "matrix": [11, 0], "x":0, "y":12}, {"label":"F0", "matrix": [11, 3], "x":5, "y":12}, + {"label":"C1", "matrix": [12, 0], "x":0, "y":13}, {"label":"A4", "matrix": [12, 1], "x":2, "y":13}, {"label":"A0", "matrix": [12, 2], "x":3, "y":13}, {"label":"F1", "matrix": [12, 3], "x":5, "y":13}, + {"label":"C2", "matrix": [13, 0], "x":0, "y":14}, {"label":"A5", "matrix": [13, 1], "x":2, "y":14}, {"label":"A1", "matrix": [13, 2], "x":3, "y":14}, {"label":"F2", "matrix": [13, 3], "x":5, "y":14}, + {"label":"C3", "matrix": [14, 0], "x":0, "y":15}, {"label":"A6", "matrix": [14, 1], "x":2, "y":15}, {"label":"A2", "matrix": [14, 2], "x":3, "y":15}, {"label":"F3", "matrix": [14, 3], "x":5, "y":15}, + {"label":"C4", "matrix": [15, 0], "x":0, "y":16}, {"label":"A7", "matrix": [15, 1], "x":2, "y":16}, {"label":"A3", "matrix": [15, 2], "x":3, "y":16}, {"label":"F4", "matrix": [15, 3], "x":5, "y":16}, + {"label":"C5", "matrix": [16, 0], "x":0, "y":17}, {"label":"F5", "matrix": [16, 3], "x":5, "y":17}, + {"label":"C6", "matrix": [17, 0], "x":0, "y":18}, {"label":"F6", "matrix": [17, 3], "x":5, "y":18}, + {"label":"C7", "matrix": [18, 0], "x":0, "y":19}, {"label":"F7", "matrix": [18, 3], "x":5, "y":19} + ] + } + } +} diff --git a/keyboards/ez_maker/directpins/teensy_2pp/keymaps/default/keymap.json b/keyboards/ez_maker/directpins/teensy_2pp/keymaps/default/keymap.json new file mode 100644 index 000000000000..444f8cacb33f --- /dev/null +++ b/keyboards/ez_maker/directpins/teensy_2pp/keymaps/default/keymap.json @@ -0,0 +1,28 @@ +{ + "keyboard": "ez_maker/directpins/promicro", + "keymap": "default", + "layout": "LAYOUT_all", + "layers": [ + [ + "KC_0", "KC_1", + "KC_2", "KC_3", + "KC_4", "KC_5", + "KC_6", "KC_7", + "KC_8", "KC_9", + "KC_A", "KC_B", "KC_C", "KC_D", + "KC_E", "KC_F", + "KC_G", "KC_H", + "KC_I", "KC_J", + "KC_J", + "KC_L", + "KC_M", "KC_N", + "KC_O", "KC_P", "KC_Q", "KC_R", + "KC_S", "KC_T", "KC_U", "KC_V", + "KC_W", "KC_X", "KC_Y", "KC_Z", + "KC_P1", "KC_P2", "KC_P3", "KC_P4", + "KC_P5", "KC_P6", + "KC_P7", "KC_P8", + "KC_P9", "KC_P0" + ] + ] +} diff --git a/keyboards/ez_maker/directpins/teensy_2pp/readme.md b/keyboards/ez_maker/directpins/teensy_2pp/readme.md new file mode 100644 index 000000000000..6b64dc8ac9b6 --- /dev/null +++ b/keyboards/ez_maker/directpins/teensy_2pp/readme.md @@ -0,0 +1,19 @@ +# DirectPins + +![Teensy 2.0++ Pinout Guide](https://www.pjrc.com/teensy/pinout4a.png) + +Easily assign keys to pins for your custom project using QMK Configurator. + +* Keyboard Maintainer: [Zach White](https://github.com/skullydazed) +* Hardware Supported: Teensy 2.0++ +* Hardware Availability: https://www.pjrc.com/ + +Make example for this keyboard (after setting up your build environment): + + qmk compile -kb ez_maker/directpins/teensy2pp -km default + +Flashing example for this keyboard: + + qmk flash -kb ez_maker/directpins/teensy2pp -km default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/kyria/.noci b/keyboards/ez_maker/directpins/teensy_2pp/rules.mk similarity index 100% rename from keyboards/kyria/.noci rename to keyboards/ez_maker/directpins/teensy_2pp/rules.mk diff --git a/keyboards/ez_maker/directpins/teensy_2pp/teensy2.c b/keyboards/ez_maker/directpins/teensy_2pp/teensy2.c new file mode 100644 index 000000000000..1ef3337a1a22 --- /dev/null +++ b/keyboards/ez_maker/directpins/teensy_2pp/teensy2.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Zach White + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "teensy2.h" diff --git a/keyboards/ez_maker/directpins/teensy_2pp/teensy2.h b/keyboards/ez_maker/directpins/teensy_2pp/teensy2.h new file mode 100644 index 000000000000..386e50fb5b64 --- /dev/null +++ b/keyboards/ez_maker/directpins/teensy_2pp/teensy2.h @@ -0,0 +1,19 @@ +/* Copyright 2021 Zach White + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" diff --git a/keyboards/ez_maker/directpins/teensy_32/chconf.h b/keyboards/ez_maker/directpins/teensy_32/chconf.h new file mode 100644 index 000000000000..04c223e727cc --- /dev/null +++ b/keyboards/ez_maker/directpins/teensy_32/chconf.h @@ -0,0 +1,53 @@ +/* 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/ez_maker/onekey/teensy_32/chconf.h -r platforms/chibios/common/configs/chconf.h` + */ + +#pragma once + +#define CH_CFG_ST_FREQUENCY 1000 + +#define CH_CFG_ST_TIMEDELTA 0 + +#define CH_CFG_TIME_QUANTUM 20 + +#define CH_CFG_FACTORY_OBJECTS_REGISTRY TRUE + +#define CH_CFG_FACTORY_GENERIC_BUFFERS TRUE + +#define CH_CFG_FACTORY_SEMAPHORES TRUE + +#define CH_CFG_FACTORY_MAILBOXES TRUE + +#define CH_CFG_FACTORY_OBJ_FIFOS TRUE + +#define CH_CFG_FACTORY_PIPES TRUE + +#define CH_DBG_SYSTEM_STATE_CHECK TRUE + +#define CH_DBG_ENABLE_CHECKS TRUE + +#define CH_DBG_ENABLE_ASSERTS TRUE + +#define CH_DBG_ENABLE_STACK_CHECK TRUE + +#define CH_DBG_FILL_THREADS TRUE + +#include_next + diff --git a/keyboards/ez_maker/directpins/teensy_32/config.h b/keyboards/ez_maker/directpins/teensy_32/config.h new file mode 100644 index 000000000000..c487a84ab161 --- /dev/null +++ b/keyboards/ez_maker/directpins/teensy_32/config.h @@ -0,0 +1,23 @@ +/* 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 . + */ + +#pragma once + +// i2c_master defines +#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_32/halconf.h b/keyboards/ez_maker/directpins/teensy_32/halconf.h new file mode 100644 index 000000000000..9ba6e8fc3125 --- /dev/null +++ b/keyboards/ez_maker/directpins/teensy_32/halconf.h @@ -0,0 +1,27 @@ +/* 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/ez_maker/onekey/teensy_32/halconf.h -r platforms/chibios/common/configs/halconf.h` + */ + +#pragma once + +#define HAL_USE_I2C TRUE + +#include_next + diff --git a/keyboards/ez_maker/directpins/teensy_32/info.json b/keyboards/ez_maker/directpins/teensy_32/info.json new file mode 100644 index 000000000000..e0c024ec9421 --- /dev/null +++ b/keyboards/ez_maker/directpins/teensy_32/info.json @@ -0,0 +1,53 @@ +{ + "manufacturer": "QMK", + "keyboard_name": "DirectPins Teensy 3.2", + "maintainer": "skullydazed", + "debounce": 5, + "processor": "MK20DX256", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true + }, + "matrix_pins": { + "direct": [ + ["LINE_PIN0", null, null], + ["LINE_PIN1", null, null], + ["LINE_PIN2", null, "LINE_PIN23"], + ["LINE_PIN3", "LINE_PIN24", "LINE_PIN22"], + ["LINE_PIN4", "LINE_PIN25", "LINE_PIN21"], + ["LINE_PIN5", null, "LINE_PIN20"], + ["LINE_PIN6", null, "LINE_PIN19"], + ["LINE_PIN7", null, "LINE_PIN18"], + ["LINE_PIN8", null, "LINE_PIN17"], + ["LINE_PIN9", null, "LINE_PIN16"], + ["LINE_PIN10", null, "LINE_PIN15"], + ["LINE_PIN11", null, "LINE_PIN14"], + ["LINE_PIN12", "E30", "LINE_PIN13"], + ] + }, + "usb": { + "device_ver": "0x0001", + "pid": "0x2324", + "vid": "0xFEED" + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + { "label": "0", "matrix": [0, 0], "x": 0, "y": 1 }, + { "label": "1", "matrix": [1, 0], "x": 0, "y": 2 }, + { "label": "2", "matrix": [2, 0], "x": 0, "y": 3 }, { "label": "23", "matrix": [2, 2], "x": 3, "y": 3 }, + { "label": "3", "matrix": [3, 0], "x": 0, "y": 4 }, { "label": "24", "matrix": [3, 1], "x": 2, "y": 4 }, { "label": "22", "matrix": [3, 2], "x": 3, "y": 4 }, + { "label": "4", "matrix": [4, 0], "x": 0, "y": 5 }, { "label": "25", "matrix": [4, 1], "x": 2, "y": 5 }, { "label": "21", "matrix": [4, 2], "x": 3, "y": 5 }, + { "label": "5", "matrix": [5, 0], "x": 0, "y": 6 }, { "label": "20", "matrix": [5, 2], "x": 3, "y": 6 }, + { "label": "6", "matrix": [6, 0], "x": 0, "y": 7 }, { "label": "19", "matrix": [6, 2], "x": 3, "y": 7 }, + { "label": "7", "matrix": [7, 0], "x": 0, "y": 8 }, { "label": "18", "matrix": [7, 2], "x": 3, "y": 8 }, + { "label": "8", "matrix": [8, 0], "x": 0, "y": 9 }, { "label": "17", "matrix": [8, 2], "x": 3, "y": 9 }, + { "label": "9", "matrix": [9, 0], "x": 0, "y": 10 }, { "label": "16", "matrix": [9, 2], "x": 3, "y": 10 }, + { "label": "10", "matrix": [10, 0], "x": 0, "y": 11 }, { "label": "15", "matrix": [10, 2], "x": 3, "y": 11 }, + { "label": "11", "matrix": [11, 0], "x": 0, "y": 12 }, { "label": "14", "matrix": [11, 2], "x": 3, "y": 12 }, + { "label": "12", "matrix": [12, 0], "x": 0, "y": 13 }, { "label": "26", "matrix": [12, 1], "x": 2, "y": 13 }, { "label": "13", "matrix": [12, 2], "x": 3, "y": 13 } + ] + } + } +} diff --git a/keyboards/ez_maker/directpins/teensy_32/keymaps/default/keymap.json b/keyboards/ez_maker/directpins/teensy_32/keymaps/default/keymap.json new file mode 100644 index 000000000000..4b289997c3cc --- /dev/null +++ b/keyboards/ez_maker/directpins/teensy_32/keymaps/default/keymap.json @@ -0,0 +1,22 @@ +{ + "keyboard": "ez_maker/directpins/teensy_32", + "keymap": "default", + "layout": "LAYOUT_all", + "layers": [ + [ + "KC_0", + "KC_1", + "KC_2", "KC_3", + "KC_4", "KC_5", "KC_6", + "KC_7", "KC_8", "KC_9", + "KC_A", "KC_B", + "KC_C", "KC_D", + "KC_E", "KC_F", + "KC_G", "KC_H", + "KC_I", "KC_J", + "KC_K", "KC_L", + "KC_M", "KC_N", + "KC_O", "KC_P", "KC_Q" + ] + ] +} diff --git a/keyboards/ez_maker/directpins/teensy_32/mcuconf.h b/keyboards/ez_maker/directpins/teensy_32/mcuconf.h new file mode 100644 index 000000000000..327f5c9aa3b5 --- /dev/null +++ b/keyboards/ez_maker/directpins/teensy_32/mcuconf.h @@ -0,0 +1,51 @@ +/* + ChibiOS - Copyright (C) 2006..2015 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_ + +#define K20x_MCUCONF + +/* + * HAL driver system settings. + */ +/* PEE mode - 48MHz system clock driven by (16 MHz) external crystal. */ +#define KINETIS_MCG_MODE KINETIS_MCG_MODE_PEE +#define KINETIS_PLLCLK_FREQUENCY 96000000UL +#define KINETIS_SYSCLK_FREQUENCY 48000000UL + +/* + * SERIAL driver system settings. + */ +#define KINETIS_SERIAL_USE_UART0 TRUE + +/* + * USB driver settings + */ +#define KINETIS_USB_USE_USB0 TRUE + +/* Need to redefine this, since the default (configured for K20x) might not apply + * 2 for Teensy LC + * 5 for Teensy 3.x */ +#define KINETIS_USB_USB0_IRQ_PRIORITY 5 + +/* + * I2C driver settings + */ +#define KINETIS_I2C_USE_I2C0 TRUE +#define KINETIS_I2C_I2C0_PRIORITY 4 + +#endif /* _MCUCONF_H_ */ diff --git a/keyboards/ez_maker/directpins/teensy_32/readme.md b/keyboards/ez_maker/directpins/teensy_32/readme.md new file mode 100644 index 000000000000..76b4573193e6 --- /dev/null +++ b/keyboards/ez_maker/directpins/teensy_32/readme.md @@ -0,0 +1,19 @@ +# DirectPins + +![Teensy 3.2 Pinout Guide](https://www.pjrc.com/teensy/card7a_rev1.png) + +Easily assign keys to pins for your custom project using QMK Configurator. + +* Keyboard Maintainer: [Zach White](https://github.com/skullydazed) +* Hardware Supported: Teensy 3.2 +* Hardware Availability: https://pjrc.com/ + +Make example for this keyboard (after setting up your build environment): + + qmk compile -kb ez_maker/directpins/teensy_32 -km default + +Flashing example for this keyboard: + + qmk flash -kb ez_maker/directpins/teensy_32 -km default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/ez_maker/directpins/teensy_32/rules.mk b/keyboards/ez_maker/directpins/teensy_32/rules.mk new file mode 100644 index 000000000000..a92b0993283e --- /dev/null +++ b/keyboards/ez_maker/directpins/teensy_32/rules.mk @@ -0,0 +1,2 @@ +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/ez_maker/directpins/teensy_lc/chconf.h b/keyboards/ez_maker/directpins/teensy_lc/chconf.h new file mode 100644 index 000000000000..659dca63add4 --- /dev/null +++ b/keyboards/ez_maker/directpins/teensy_lc/chconf.h @@ -0,0 +1,53 @@ +/* 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/ez_maker/onekey/teensy_lc/chconf.h -r platforms/chibios/common/configs/chconf.h` + */ + +#pragma once + +#define CH_CFG_ST_FREQUENCY 1000 + +#define CH_CFG_ST_TIMEDELTA 0 + +#define CH_CFG_TIME_QUANTUM 20 + +#define CH_CFG_FACTORY_OBJECTS_REGISTRY TRUE + +#define CH_CFG_FACTORY_GENERIC_BUFFERS TRUE + +#define CH_CFG_FACTORY_SEMAPHORES TRUE + +#define CH_CFG_FACTORY_MAILBOXES TRUE + +#define CH_CFG_FACTORY_OBJ_FIFOS TRUE + +#define CH_CFG_FACTORY_PIPES TRUE + +#define CH_DBG_SYSTEM_STATE_CHECK TRUE + +#define CH_DBG_ENABLE_CHECKS TRUE + +#define CH_DBG_ENABLE_ASSERTS TRUE + +#define CH_DBG_ENABLE_STACK_CHECK TRUE + +#define CH_DBG_FILL_THREADS TRUE + +#include_next + diff --git a/keyboards/ez_maker/directpins/teensy_lc/config.h b/keyboards/ez_maker/directpins/teensy_lc/config.h new file mode 100644 index 000000000000..c487a84ab161 --- /dev/null +++ b/keyboards/ez_maker/directpins/teensy_lc/config.h @@ -0,0 +1,23 @@ +/* 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 . + */ + +#pragma once + +// i2c_master defines +#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/halconf.h b/keyboards/ez_maker/directpins/teensy_lc/halconf.h new file mode 100644 index 000000000000..bd9fe497f297 --- /dev/null +++ b/keyboards/ez_maker/directpins/teensy_lc/halconf.h @@ -0,0 +1,27 @@ +/* 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/ez_maker/onekey/teensy_lc/halconf.h -r platforms/chibios/common/configs/halconf.h` + */ + +#pragma once + +#define HAL_USE_I2C TRUE + +#include_next + diff --git a/keyboards/ez_maker/directpins/teensy_lc/info.json b/keyboards/ez_maker/directpins/teensy_lc/info.json new file mode 100644 index 000000000000..bf93c41fab6c --- /dev/null +++ b/keyboards/ez_maker/directpins/teensy_lc/info.json @@ -0,0 +1,53 @@ +{ + "manufacturer": "Zach White", + "keyboard_name": "DirectPins Teensy LC", + "maintainer": "skullydazed", + "debounce": 5, + "processor": "MKL26Z64", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true + }, + "matrix_pins": { + "direct": [ + ["LINE_PIN0", null, null], + ["LINE_PIN1", null, null], + ["LINE_PIN2", null, "LINE_PIN23"], + ["LINE_PIN3", "LINE_PIN24", "LINE_PIN22"], + ["LINE_PIN4", "LINE_PIN25", "LINE_PIN21"], + ["LINE_PIN5", null, "LINE_PIN20"], + ["LINE_PIN6", null, "LINE_PIN19"], + ["LINE_PIN7", null, "LINE_PIN18"], + ["LINE_PIN8", null, "LINE_PIN17"], + ["LINE_PIN9", null, "LINE_PIN16"], + ["LINE_PIN10", null, "LINE_PIN15"], + ["LINE_PIN11", null, "LINE_PIN14"], + ["LINE_PIN12", "E30", "LINE_PIN13"], + ] + }, + "usb": { + "device_ver": "0x0001", + "pid": "0x2325", + "vid": "0xFEED" + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + { "label": "0", "matrix": [0, 0], "x": 0, "y": 1 }, + { "label": "1", "matrix": [1, 0], "x": 0, "y": 2 }, + { "label": "2", "matrix": [2, 0], "x": 0, "y": 3 }, { "label": "23", "matrix": [2, 2], "x": 3, "y": 3 }, + { "label": "3", "matrix": [3, 0], "x": 0, "y": 4 }, { "label": "24", "matrix": [3, 1], "x": 2, "y": 4 }, { "label": "22", "matrix": [3, 2], "x": 3, "y": 4 }, + { "label": "4", "matrix": [4, 0], "x": 0, "y": 5 }, { "label": "25", "matrix": [4, 1], "x": 2, "y": 5 }, { "label": "21", "matrix": [4, 2], "x": 3, "y": 5 }, + { "label": "5", "matrix": [5, 0], "x": 0, "y": 6 }, { "label": "20", "matrix": [5, 2], "x": 3, "y": 6 }, + { "label": "6", "matrix": [6, 0], "x": 0, "y": 7 }, { "label": "19", "matrix": [6, 2], "x": 3, "y": 7 }, + { "label": "7", "matrix": [7, 0], "x": 0, "y": 8 }, { "label": "18", "matrix": [7, 2], "x": 3, "y": 8 }, + { "label": "8", "matrix": [8, 0], "x": 0, "y": 9 }, { "label": "17", "matrix": [8, 2], "x": 3, "y": 9 }, + { "label": "9", "matrix": [9, 0], "x": 0, "y": 10 }, { "label": "16", "matrix": [9, 2], "x": 3, "y": 10 }, + { "label": "10", "matrix": [10, 0], "x": 0, "y": 11 }, { "label": "15", "matrix": [10, 2], "x": 3, "y": 11 }, + { "label": "11", "matrix": [11, 0], "x": 0, "y": 12 }, { "label": "14", "matrix": [11, 2], "x": 3, "y": 12 }, + { "label": "12", "matrix": [12, 0], "x": 0, "y": 13 }, { "label": "26", "matrix": [12, 1], "x": 2, "y": 13 }, { "label": "13", "matrix": [12, 2], "x": 3, "y": 13 } + ] + } + } +} diff --git a/keyboards/ez_maker/directpins/teensy_lc/keymaps/default/keymap.json b/keyboards/ez_maker/directpins/teensy_lc/keymaps/default/keymap.json new file mode 100644 index 000000000000..e2f557adf55d --- /dev/null +++ b/keyboards/ez_maker/directpins/teensy_lc/keymaps/default/keymap.json @@ -0,0 +1,22 @@ +{ + "keyboard": "ez_maker/directpins/teensy_lc", + "keymap": "default", + "layout": "LAYOUT_all", + "layers": [ + [ + "KC_0", + "KC_1", + "KC_2", "KC_3", + "KC_4", "KC_5", "KC_6", + "KC_7", "KC_8", "KC_9", + "KC_A", "KC_B", + "KC_C", "KC_D", + "KC_E", "KC_F", + "KC_G", "KC_H", + "KC_I", "KC_J", + "KC_K", "KC_L", + "KC_M", "KC_N", + "KC_O", "KC_P", "KC_Q" + ] + ] +} diff --git a/keyboards/ez_maker/directpins/teensy_lc/mcuconf.h b/keyboards/ez_maker/directpins/teensy_lc/mcuconf.h new file mode 100644 index 000000000000..f73bec3dc3a8 --- /dev/null +++ b/keyboards/ez_maker/directpins/teensy_lc/mcuconf.h @@ -0,0 +1,51 @@ +/* + ChibiOS - Copyright (C) 2006..2015 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_ + +#define KL2x_MCUCONF + +/* + * HAL driver system settings. + */ +/* PEE mode - 48MHz system clock driven by (16 MHz) external crystal. */ +#define KINETIS_MCG_MODE KINETIS_MCG_MODE_PEE +#define KINETIS_PLLCLK_FREQUENCY 96000000UL +#define KINETIS_SYSCLK_FREQUENCY 48000000UL + +/* + * SERIAL driver system settings. + */ +#define KINETIS_SERIAL_USE_UART0 TRUE + +/* + * USB driver settings + */ +#define KINETIS_USB_USE_USB0 TRUE + +/* Need to redefine this, since the default (configured for K20x) might not apply + * 2 for Teensy LC + * 5 for Teensy 3.x */ +#define KINETIS_USB_USB0_IRQ_PRIORITY 2 + +/* + * I2C driver settings + */ +#define KINETIS_I2C_USE_I2C0 TRUE +#define KINETIS_I2C_I2C0_PRIORITY 4 + +#endif /* _MCUCONF_H_ */ diff --git a/keyboards/ez_maker/directpins/teensy_lc/readme.md b/keyboards/ez_maker/directpins/teensy_lc/readme.md new file mode 100644 index 000000000000..25172ab01cb2 --- /dev/null +++ b/keyboards/ez_maker/directpins/teensy_lc/readme.md @@ -0,0 +1,19 @@ +# DirectPins + +![Teensy LC Pinout Guide](https://www.pjrc.com/teensy/card6a_rev2.png) + +Easily assign keys to pins for your custom project using QMK Configurator. + +* Keyboard Maintainer: [Zach White](https://github.com/skullydazed) +* Hardware Supported: Teensy LC +* Hardware Availability: https://pjcr.com/ + +Make example for this keyboard (after setting up your build environment): + + qmk compile -kb ez_maker/directpins/teensy_lc -km default + +Flashing example for this keyboard: + + qmk flash -kb ez_maker/directpins/teensy_lc -km default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/ez_maker/directpins/teensy_lc/rules.mk b/keyboards/ez_maker/directpins/teensy_lc/rules.mk new file mode 100644 index 000000000000..e04e8432848f --- /dev/null +++ b/keyboards/ez_maker/directpins/teensy_lc/rules.mk @@ -0,0 +1,5 @@ +# MCU name +USE_CHIBIOS_CONTRIB = yes + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/facew/info.json b/keyboards/facew/info.json index b7b6acca7856..b8b817970de5 100644 --- a/keyboards/facew/info.json +++ b/keyboards/facew/info.json @@ -2,8 +2,6 @@ "keyboard_name": "FaceW", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "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}, {"x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.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/facew/rules.mk b/keyboards/facew/rules.mk index 72ccebf874c7..96f4fd3d71b6 100644 --- a/keyboards/facew/rules.mk +++ b/keyboards/facew/rules.mk @@ -2,17 +2,10 @@ MCU = atmega32a # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid # build options -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes EXTRAKEY_ENABLE = yes CONSOLE_ENABLE = no diff --git a/keyboards/fallacy/indicators.c b/keyboards/fallacy/indicators.c index 6c80f316787c..c577bc9a8a5c 100755 --- a/keyboards/fallacy/indicators.c +++ b/keyboards/fallacy/indicators.c @@ -15,7 +15,7 @@ */ #include "indicators.h" -#include "drivers/issi/is31fl3731-simple.h" +#include "drivers/led/issi/is31fl3731-simple.h" #include "i2c_master.h" /* Set up IS31FL3731 for use in powering indicator LEDs. Absolutely overkill for this job but it was already in the design. @@ -54,7 +54,7 @@ void set_fallacy_led(int index, bool state) { /* define LED matrix */ -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { {0, C1_1}, {0, C2_1}, {0, C3_1}, diff --git a/keyboards/fallacy/info.json b/keyboards/fallacy/info.json index a8cf6b0a595e..c1ec9328c060 100644 --- a/keyboards/fallacy/info.json +++ b/keyboards/fallacy/info.json @@ -1,8 +1,6 @@ { "keyboard_name": "Fallacy", "maintainer": "Toraifu", - "width": 18.75, - "height": 5, "layouts": { "LAYOUT_alice_split_bs": { "layout": [ diff --git a/keyboards/fallacy/rules.mk b/keyboards/fallacy/rules.mk index dfc96a31b83d..55635ce5a3d1 100755 --- a/keyboards/fallacy/rules.mk +++ b/keyboards/fallacy/rules.mk @@ -7,24 +7,20 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE = no # Audio output # project specific files SRC += indicators.c \ - drivers/issi/is31fl3731-simple.c + drivers/led/issi/is31fl3731-simple.c QUANTUM_LIB_SRC += i2c_master.c LAYOUTS = alice alice_split_bs diff --git a/keyboards/fc660c/actuation_point.h b/keyboards/fc660c/actuation_point.h index f7066d92c1fd..e02832186c09 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 . */ -#ifndef ACTUATION_POINT_H -#define ACTUATION_POINT_H +#pragma once #include @@ -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 e979daf331fa..460881cb174c 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -80,5 +79,3 @@ along with this program. If not, see . // 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 e3621570dd1a..fca02dc0e986 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 . */ -#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 c15b6bc5065e..8910e70f10aa 100644 --- a/keyboards/fc660c/i2c.h +++ b/keyboards/fc660c/i2c.h @@ -1,5 +1,4 @@ -#ifndef I2C_H -#define I2C_H +#pragma once #include @@ -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/fc660c/info.json b/keyboards/fc660c/info.json index 9ed48aad153a..2259156d0f1a 100644 --- a/keyboards/fc660c/info.json +++ b/keyboards/fc660c/info.json @@ -2,11 +2,9 @@ "keyboard_name": "fc660c", "url": "", "maintainer": "qmk", - "width": 16.5, - "height": 5, "layouts": { "LAYOUT": { "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}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"x":15.5, "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}, {"x":15.5, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.25}, {"x":14.5, "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}, {"label":"Alt", "x":9.75, "y":4, "w":1.25}, {"label":"Win", "x":11, "y":4, "w":1.25}, {"label":"Menu", "x":12.25, "y":4, "w":1.25}, {"x":13.5, "y":4}, {"x":14.5, "y":4}, {"x":15.5, "y":4}] } } -} \ No newline at end of file +} diff --git a/keyboards/fc660c/matrix.c b/keyboards/fc660c/matrix.c index e6e49481046a..40d606f57221 100644 --- a/keyboards/fc660c/matrix.c +++ b/keyboards/fc660c/matrix.c @@ -28,6 +28,7 @@ along with this program. If not, see . #include "timer.h" #include "matrix.h" #include "led.h" +#include "avr/timer_avr.h" // Timer resolution check #if (1000000/TIMER_RAW_FREQ > 20) diff --git a/keyboards/fc660c/rules.mk b/keyboards/fc660c/rules.mk index b4ed65362c51..1b6187acb3a3 100644 --- a/keyboards/fc660c/rules.mk +++ b/keyboards/fc660c/rules.mk @@ -2,19 +2,12 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -# BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug diff --git a/keyboards/fc980c/actuation_point.h b/keyboards/fc980c/actuation_point.h index f7066d92c1fd..e02832186c09 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 . */ -#ifndef ACTUATION_POINT_H -#define ACTUATION_POINT_H +#pragma once #include @@ -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 b74ca64a5c3c..b0bffef7607c 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -87,5 +86,3 @@ along with this program. If not, see . // 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 c15b6bc5065e..8910e70f10aa 100644 --- a/keyboards/fc980c/i2c.h +++ b/keyboards/fc980c/i2c.h @@ -1,5 +1,4 @@ -#ifndef I2C_H -#define I2C_H +#pragma once #include @@ -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/info.json b/keyboards/fc980c/info.json index a15ff216ca9d..681b2c150305 100644 --- a/keyboards/fc980c/info.json +++ b/keyboards/fc980c/info.json @@ -2,11 +2,8 @@ "keyboard_name": "fc980c", "url": "", "maintainer": "qmk", - "width": 19.5, - "height": 6.75, "layouts": { "LAYOUT": { - "key_count": 98, "layout": [ {"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, diff --git a/keyboards/fc980c/matrix.c b/keyboards/fc980c/matrix.c index 1126f3047ae7..6cdd9cf42e9a 100644 --- a/keyboards/fc980c/matrix.c +++ b/keyboards/fc980c/matrix.c @@ -28,6 +28,7 @@ along with this program. If not, see . #include "timer.h" #include "matrix.h" #include "led.h" +#include "avr/timer_avr.h" // #include QMK_KEYBOARD_H diff --git a/keyboards/fc980c/rules.mk b/keyboards/fc980c/rules.mk index b4ed65362c51..1b6187acb3a3 100644 --- a/keyboards/fc980c/rules.mk +++ b/keyboards/fc980c/rules.mk @@ -2,19 +2,12 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -# BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug diff --git a/keyboards/feels/feels65/feels65.h b/keyboards/feels/feels65/feels65.h index be11e22ccd96..21f5ab71889e 100644 --- a/keyboards/feels/feels65/feels65.h +++ b/keyboards/feels/feels65/feels65.h @@ -19,32 +19,77 @@ #define XXX KC_NO +#define LAYOUT_all( \ + 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, k2E, k2F, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, k3E, k3F, \ + k40, k42, k43, k46, k4A, k4B, 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, k2E, k2F }, \ + {k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, XXX, k3D, k3E, k3F }, \ + {k40, XXX, k42, k43, XXX, XXX, k46, XXX, XXX, XXX, k4A, k4B, XXX, k4D, k4E, k4F } \ +} + #define LAYOUT_65_iso_blocker( \ - 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, k1F, \ - k20, 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, k3D, k3E, k3F, \ - k40, k42, k43, k46, k4A, k4B, k4D, k4E, k4F \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0F, \ + k10, 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, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, k3E, k3F, \ + k40, k42, k43, k46, k4A, k4B, k4D, k4E, k4F \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, XXX, k0F }, \ + { k10, XXX, 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, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, XXX, k3D, k3E, k3F }, \ + { k40, XXX, k42, k43, XXX, XXX, k46, XXX, XXX, XXX, k4A, k4B, XXX, k4D, k4E, k4F } \ +} + +#define LAYOUT_65_iso_blocker_split_bs( \ + 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, k1F, \ + k20, 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, k3D, k3E, k3F, \ + k40, k42, k43, k46, k4A, k4B, 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, XXX, k1F }, \ - { k20, XXX, 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, XXX, k3D, k3E, k3F }, \ - { k40, XXX, k42, k43, XXX, XXX, k46, XXX, XXX, XXX, k4A, k4B, XXX, 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, XXX, k1F }, \ + { k20, XXX, 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, XXX, k3D, k3E, k3F }, \ + { k40, XXX, k42, k43, XXX, XXX, k46, XXX, XXX, XXX, k4A, k4B, XXX, k4D, k4E, k4F } \ } #define LAYOUT_65_ansi_blocker( \ - 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, k2E, k2F, \ - k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, k3E, k3F, \ - k40, k42, k43, k46, k4A, k4B, k4D, k4E, k4F \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, 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, k2E, k2F, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, k3E, k3F, \ + k40, k42, k43, k46, k4A, k4B, k4D, k4E, k4F \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, XXX, 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, XXX, k2E, k2F }, \ + { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, XXX, k3D, k3E, k3F }, \ + { k40, XXX, k42, k43, XXX, XXX, k46, XXX, XXX, XXX, k4A, k4B, XXX, k4D, k4E, k4F } \ +} + +#define LAYOUT_65_ansi_blocker_split_bs( \ + 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, k2E, k2F, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, k3E, k3F, \ + k40, k42, k43, k46, k4A, k4B, 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, XXX, k2E, k2F }, \ - { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, XXX, k3D, k3E, k3F }, \ - { k40, XXX, k42, k43, XXX, XXX, k46, XXX, XXX, XXX, k4A, k4B, XXX, 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, XXX, k2E, k2F }, \ + { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, XXX, k3D, k3E, k3F }, \ + { k40, XXX, k42, k43, XXX, XXX, k46, XXX, XXX, XXX, k4A, k4B, XXX, k4D, k4E, k4F } \ } diff --git a/keyboards/feels/feels65/info.json b/keyboards/feels/feels65/info.json index 29692c4c0799..2d00880d815e 100644 --- a/keyboards/feels/feels65/info.json +++ b/keyboards/feels/feels65/info.json @@ -1,26 +1,389 @@ { - "keyboard_name": "Feels65", - "url": "https://github.com/swiftrax", - "maintainer": "Swiftrax", - "width": 16, - "height": 6, - "layouts": { - "LAYOUT_65_iso_blocker": { - "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}, {"x":15, "y":0}, - {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"x":13.75, "y":1, "w":1.25, "h":2}, {"x":15, "y":1}, - {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"x":12.75, "y":2}, {"x":15, "y":2}, - {"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}, {"label":"\u2191", "x":14, "y":3}, {"x":15, "y":3}, - {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Ctrl", "x":11.25, "y":4, "w":1.25}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4} - ] - }, - "LAYOUT_65_ansi_blocker": { - "layout": [ - {"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}, {"x":15, "y":1}, - {"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}, {"x":15, "y":0}, - {"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}, {"x":12.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"x":15, "y":3}, - {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Ctrl", "x":11.25, "y":4, "w":1.25}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4} - ] + "keyboard_name": "Feels65", + "url": "https://github.com/swiftrax", + "maintainer": "Swiftrax", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + {"x":15, "y":1}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + {"x":13.75, "y":2, "w":1.25}, + {"x":15, "y":2}, + + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + }, + "LAYOUT_65_ansi_blocker": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":15, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + {"x":15, "y":1}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":15, "y":2}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + }, + "LAYOUT_65_ansi_blocker_split_bs": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + {"x":15, "y":1}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":15, "y":2}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + }, + "LAYOUT_65_iso_blocker": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":15, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":15, "y":1}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + {"x":13.75, "y":1, "w":1.25, "h":2}, + {"x":15, "y":2}, + + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + }, + "LAYOUT_65_iso_blocker_split_bs": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":15, "y":1}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + {"x":13.75, "y":1, "w":1.25, "h":2}, + {"x":15, "y":2}, + + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + } } - } } diff --git a/keyboards/feels/feels65/keymaps/default/keymap.c b/keyboards/feels/feels65/keymaps/default/keymap.c index 480173ee1738..d767872ffff7 100644 --- a/keyboards/feels/feels65/keymaps/default/keymap.c +++ b/keyboards/feels/feels65/keymaps/default/keymap.c @@ -17,18 +17,18 @@ #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_65_ansi_blocker( + [0] = 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_BSPC, KC_BSPC, KC_HOME, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT ), - [1] = LAYOUT_65_ansi_blocker( + [1] = 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_DEL, KC_DEL, KC_INS, - KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, - RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END + _______, _______, KC_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______, + RESET, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END ), -}; \ No newline at end of file +}; diff --git a/keyboards/feels/feels65/keymaps/via/keymap.c b/keyboards/feels/feels65/keymaps/via/keymap.c index 144cf061a64c..a325a8410432 100644 --- a/keyboards/feels/feels65/keymaps/via/keymap.c +++ b/keyboards/feels/feels65/keymaps/via/keymap.c @@ -16,33 +16,34 @@ #include QMK_KEYBOARD_H +// clang-format off const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_65_ansi_blocker( + [0] = 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_BSPC, KC_BSPC, KC_HOME, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT ), - [1] = LAYOUT_65_ansi_blocker( - KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_BSPC, KC_INS, - KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, - RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END + [1] = 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_DEL, KC_DEL, KC_INS, + _______, _______, KC_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______, + RESET, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END ), - [2] = LAYOUT_65_ansi_blocker( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + [2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ ), - [3] = LAYOUT_65_ansi_blocker( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + [3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ ), -}; \ No newline at end of file +}; diff --git a/keyboards/feels/feels65/rules.mk b/keyboards/feels/feels65/rules.mk index cb34a6b40565..ae99c5dfb610 100644 --- a/keyboards/feels/feels65/rules.mk +++ b/keyboards/feels/feels65/rules.mk @@ -7,16 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = 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 + +LAYOUTS = 65_ansi_blocker 65_ansi_blocker_split_bs 65_iso_blocker 65_iso_blocker_split_bs diff --git a/keyboards/felix/config.h b/keyboards/felix/config.h index 884294e4efec..73f9d1fa8603 100644 --- a/keyboards/felix/config.h +++ b/keyboards/felix/config.h @@ -104,59 +104,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -175,26 +122,6 @@ //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/felix/info.json b/keyboards/felix/info.json index 3b1cfda2f314..f81d56f34048 100644 --- a/keyboards/felix/info.json +++ b/keyboards/felix/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Felix", "url": "", "maintainer": "qmk", - "width": 4, - "height": 5, "layouts": { "LAYOUT_ortho_5x4": { "layout": [ diff --git a/keyboards/felix/rules.mk b/keyboards/felix/rules.mk index 1fcdf216c5ec..572952b63572 100644 --- a/keyboards/felix/rules.mk +++ b/keyboards/felix/rules.mk @@ -2,31 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = ortho_5x4 diff --git a/keyboards/ferris/0_1/rules.mk b/keyboards/ferris/0_1/rules.mk index 8645dbba0dc7..27692dd043d4 100644 --- a/keyboards/ferris/0_1/rules.mk +++ b/keyboards/ferris/0_1/rules.mk @@ -6,18 +6,15 @@ BOOTLOADER = atmel-dfu # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output UNICODE_ENABLE = yes CUSTOM_MATRIX = lite diff --git a/keyboards/ferris/0_2/bling/bling.c b/keyboards/ferris/0_2/bling/bling.c new file mode 100644 index 000000000000..e275abdad049 --- /dev/null +++ b/keyboards/ferris/0_2/bling/bling.c @@ -0,0 +1,77 @@ +/* +Copyright 2021 Pierre Chevalier + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "quantum.h" + +#include "drivers/led/issi/is31fl3731.h" + +/* +| Left || Right | +| | 3 | | 0 || 0 | | 3 | | +| 5 | | | || | | | 6 | +| | | | || | | | | +| | | | 1 || 1 | | | | +| | 4 | | || | | 4 | | +| 6 | | | 2 || 2 | | | 5 | +*/ +const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { + /* Refer to IS31 manual for these locations + * driver + * | R location + * | | G location + * | | | B location + * | | | | */ + {0, C9_10, C8_10, C7_10}, // Left RGB 5 + {0, C9_12, C8_12, C7_12}, // Left RGB 3 + {0, C9_15, C8_15, C6_14}, // Left RGB 0 + {1, C1_2, C2_2, C4_3}, // Right RGB 0 + {1, C1_5, C2_5, C3_5}, // Right RGB 3 + {1, C1_8, C2_8, C3_8}, // Right RGB 6 + {1, C1_7, C2_7, C3_7}, // Right RGB 5 + {1, C1_6, C2_6, C3_6}, // Right RGB 4 + {1, C1_3, C2_3, C3_3}, // Right RGB 1 + {1, C1_4, C2_4, C3_4}, // Right RGB 2 + {0, C9_13, C8_13, C7_13}, // Left RGB 2 + {0, C9_14, C8_14, C7_14}, // Left RGB 1 + {0, C9_11, C8_11, C7_11}, // Left RGB 4 + {0, C9_9, C8_9, C7_9}, // Left RGB 6 +}; +// clang-format off +led_config_t g_led_config = { + // Key Matrix to LED Index + { + {}, + }, { + // LED Index to Physical Position. The unit is roughly milimiters in the real world + // | Left || Right | + // x->| 10 | 32 | 64 || 160 | 192 | 214 | + // y |_____|_____|____||_____|_____|_____| + // 0 | | 1 | 2 || 3 | 4 | | + // 16 | 0 | | || | | 5 | + // 35 | | | 11 || 8 | | | + // 45 | | 12 | || | 7 | | + // 50 | 13 | | 10 || 9 | | 6 | + // 0 1 2 3 4 5 + {10, 16}, {32, 0}, {64, 0}, {160, 0}, {192, 0}, {214, 16}, + // 6 7 8 9 + {214, 50}, {192, 45}, {160, 35}, {160, 50}, + // 10 11 12 13 + {64, 50}, {64, 35}, {32, 45}, {10, 50}, + }, { + // LED Index to Flag + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 + } +}; diff --git a/keyboards/ferris/0_2/bling/config.h b/keyboards/ferris/0_2/bling/config.h new file mode 100644 index 000000000000..4b2efd378d76 --- /dev/null +++ b/keyboards/ferris/0_2/bling/config.h @@ -0,0 +1,82 @@ +/* +Copyright 2021 Pierre Chevalier + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#undef PRODUCT_ID +#define PRODUCT_ID 0x0002 +#undef PRODUCT +#define PRODUCT Ferris 0.2 - Bling + + + +/* LED Drivers */ +#define DRIVER_ADDR_1 0b1110100 +#define DRIVER_ADDR_2 0b1110101 +#define DRIVER_COUNT 2 +#define DRIVER_1_LED_TOTAL 7 +#define DRIVER_2_LED_TOTAL 7 +#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) + +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH diff --git a/keyboards/ferris/0_2/bling/readme.md b/keyboards/ferris/0_2/bling/readme.md new file mode 100644 index 000000000000..c20be1edd140 --- /dev/null +++ b/keyboards/ferris/0_2/bling/readme.md @@ -0,0 +1,16 @@ +# Ferris 0.2 - Bling + +![Ferris 0.2 - Bling](https://i.imgur.com/8dmm5Mrh.jpg) + +Ferris 0.2 with RGB underglow. + +* Keyboard Maintainer: [Pierre Chevalier](https://github.com/pierrechevalier83) +* Hardware Supported: + * Ferris 0.2 - Bling: (STM32F072 MCU on the left, MCP23017 on the right, IS31FL3731 led driver chip on each side) +* Hardware Availability: [Cuddly Keyboards](https://cuddlykeyboards.com) + +Make examples for this keyboard (after setting up your build environment): + + make ferris/0_2/bling: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/ferris/0_2/bling/rules.mk b/keyboards/ferris/0_2/bling/rules.mk new file mode 100644 index 000000000000..e04c8e467099 --- /dev/null +++ b/keyboards/ferris/0_2/bling/rules.mk @@ -0,0 +1,2 @@ +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = IS31FL3731 diff --git a/keyboards/ferris/0_2/compact/config.h b/keyboards/ferris/0_2/compact/config.h new file mode 100644 index 000000000000..ee465b9acd6a --- /dev/null +++ b/keyboards/ferris/0_2/compact/config.h @@ -0,0 +1,23 @@ +/* +Copyright 2021 Pierre Chevalier + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#undef PRODUCT_ID +#define PRODUCT_ID 0x0003 +#undef PRODUCT +#define PRODUCT Ferris 0.2 - Compact diff --git a/keyboards/ferris/0_2/compact/readme.md b/keyboards/ferris/0_2/compact/readme.md new file mode 100644 index 000000000000..b17b59bfae29 --- /dev/null +++ b/keyboards/ferris/0_2/compact/readme.md @@ -0,0 +1,17 @@ +# Ferris 0.2 - Compact + +![Ferris 0.2 - Compact, top view](https://i.imgur.com/V2ZLKjih.jpg) +![Ferris 0.2 - Compact, bottom view](https://i.imgur.com/3icP8pzh.jpg) + +Ferris 0.2 - Compact with Kailh Choc support and Choc spacing. + +* Keyboard Maintainer: [Pierre Chevalier](https://github.com/pierrechevalier83) +* Hardware Supported: + * Ferris 0.2 - Compact: (STM32F072 MCU on the left, MCP23017 on the right) +* Hardware Availability: [Cuddly Keyboards](https://cuddlykeyboards.com) + +Make examples for this keyboard (after setting up your build environment): + + make ferris/0_2/compact: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/.noci b/keyboards/ferris/0_2/compact/rules.mk similarity index 100% rename from keyboards/mechlovin/adelais/standard_led/.noci rename to keyboards/ferris/0_2/compact/rules.mk diff --git a/keyboards/ferris/0_2/config.h b/keyboards/ferris/0_2/config.h index 958cf4356ddf..f51e5dd8f150 100644 --- a/keyboards/ferris/0_2/config.h +++ b/keyboards/ferris/0_2/config.h @@ -21,8 +21,8 @@ along with this program. If not, see . #define VENDOR_ID 0xC2AB #define PRODUCT_ID 0x0001 #define DEVICE_VER 0x0002 -#define MANUFACTURER Pierre -#define PRODUCT Ferris the keeb +#define MANUFACTURER Cuddly Keyboards Ltd. +#define PRODUCT Ferris 0.2 /* key matrix size */ #define MATRIX_ROWS 8 @@ -67,10 +67,8 @@ along with this program. If not, see . /* 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/high/config.h b/keyboards/ferris/0_2/high/config.h new file mode 100644 index 000000000000..67786241b42e --- /dev/null +++ b/keyboards/ferris/0_2/high/config.h @@ -0,0 +1,23 @@ +/* +Copyright 2021 Pierre Chevalier + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#undef PRODUCT_ID +#define PRODUCT_ID 0x0005 +#undef PRODUCT +#define PRODUCT Ferris 0.2 - High diff --git a/keyboards/ferris/0_2/high/readme.md b/keyboards/ferris/0_2/high/readme.md new file mode 100644 index 000000000000..2f01b2b26029 --- /dev/null +++ b/keyboards/ferris/0_2/high/readme.md @@ -0,0 +1,17 @@ +# Ferris 0.2 - High + +![Ferris 0.2 - High, top view](https://i.imgur.com/aOqVmvph.jpg) +![Ferris 0.2 - High, bottom view](https://i.imgur.com/Nuqy5uJh.jpg) + +Ferris 0.2 - High with Cherry MX support. + +* Keyboard Maintainer: [Pierre Chevalier](https://github.com/pierrechevalier83) +* Hardware Supported: + * Ferris 0.2 - High: (STM32F072 MCU on the left, MCP23017 on the right) +* Hardware Availability: [Cuddly Keyboards](https://cuddlykeyboards.com) + +Make examples for this keyboard (after setting up your build environment): + + make ferris/0_2/high: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/rev2/.noci b/keyboards/ferris/0_2/high/rules.mk similarity index 100% rename from keyboards/mechlovin/adelais/standard_led/rev2/.noci rename to keyboards/ferris/0_2/high/rules.mk diff --git a/keyboards/ferris/0_2/matrix.c b/keyboards/ferris/0_2/matrix.c index afa8a344cd21..ff0e66d65cd9 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/ferris/0_2/mini/config.h b/keyboards/ferris/0_2/mini/config.h new file mode 100644 index 000000000000..e357cabe0bd0 --- /dev/null +++ b/keyboards/ferris/0_2/mini/config.h @@ -0,0 +1,23 @@ +/* +Copyright 2021 Pierre Chevalier + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#undef PRODUCT_ID +#define PRODUCT_ID 0x0004 +#undef PRODUCT +#define PRODUCT Ferris 0.2 - Mini diff --git a/keyboards/ferris/0_2/mini/readme.md b/keyboards/ferris/0_2/mini/readme.md new file mode 100644 index 000000000000..dd5cf5a718f0 --- /dev/null +++ b/keyboards/ferris/0_2/mini/readme.md @@ -0,0 +1,18 @@ +# Ferris 0.2 - Mini + +![Ferris 0.2 - Mini, top view](https://i.imgur.com/s3luptVh.jpg) +![Ferris 0.2 - Mini, bottom view](https://i.imgur.com/D4GxLQvh.jpg) + + +Ferris 0.2 - Mini with Kailh Choc Mini support and Choc spacing. + +* Keyboard Maintainer: [Pierre Chevalier](https://github.com/pierrechevalier83) +* Hardware Supported: + * Ferris 0.2 - Mini: (STM32F072 MCU on the left, MCP23017 on the right) +* Hardware Availability: [Cuddly Keyboards](https://cuddlykeyboards.com) + +Make examples for this keyboard (after setting up your build environment): + + make ferris/0_2/mini: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/naked60/.noci b/keyboards/ferris/0_2/mini/rules.mk similarity index 100% rename from keyboards/naked60/.noci rename to keyboards/ferris/0_2/mini/rules.mk diff --git a/keyboards/ferris/0_2/readme.md b/keyboards/ferris/0_2/readme.md index bd98ce8ad1ed..3d1ad0c1f264 100644 --- a/keyboards/ferris/0_2/readme.md +++ b/keyboards/ferris/0_2/readme.md @@ -1,14 +1,13 @@ # Ferris 0.2 -![Ferris 0.2 - bling, top view](https://i.imgur.com/LwKlmnzh.jpg) -![Ferris 0.2 - bling, bottom view](https://i.imgur.com/qGnYGVOh.jpg) +![Ferris 0.2 family](https://i.imgur.com/SDVOlyZ.jpg) -An stm32f072 based split 34 keys column staggered keyboard named and decorated after the rustlang mascott. All PCB files and some thoughts on the design are available on the [project's github page](https://github.com/pierrechevalier83/ferris) +An STM32F072-based split 34-key column-staggered keyboard named and decorated after the Rust mascot. All PCB files and some thoughts on the design are available on the [project's github page](https://github.com/pierrechevalier83/ferris). * Keyboard Maintainer: [Pierre Chevalier](https://github.com/pierrechevalier83) * Hardware Supported: * Ferris 0.2: stm32f072 chip. Comes in 4 variants: bling, mini, high and compact -* Hardware Availability: Pierre Chevalier has been selling keyboard kits (see the #ferris channel in the 40% discord chat). Wider availability is on the horizon. +* Hardware Availability: [Cuddly Keyboards](https://cuddlykeyboards.com) Make examples for this keyboard (after setting up your build environment): diff --git a/keyboards/ferris/0_2/rules.mk b/keyboards/ferris/0_2/rules.mk index f1a66061ced2..b63b01143f27 100644 --- a/keyboards/ferris/0_2/rules.mk +++ b/keyboards/ferris/0_2/rules.mk @@ -6,18 +6,15 @@ BOOTLOADER = stm32-dfu # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 UNICODE_ENABLE = yes CUSTOM_MATRIX = lite diff --git a/keyboards/ferris/info.json b/keyboards/ferris/info.json index ffffb58ecf11..d167bc3f37b0 100644 --- a/keyboards/ferris/info.json +++ b/keyboards/ferris/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Ferris", "url": "https://github.com/pierrechevalier83/ferris/", "maintainer": "@pierrec83", - "width": 12, - "height": 4.75, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/ferris/keymaps/default/config.h b/keyboards/ferris/keymaps/default/config.h index cf0fb7478ef0..5d13cc596b09 100644 --- a/keyboards/ferris/keymaps/default/config.h +++ b/keyboards/ferris/keymaps/default/config.h @@ -37,3 +37,11 @@ along with this program. If not, see . #define PERMISSIVE_HOLD #define IGNORE_MOD_TAP_INTERRUPT #define TAPPING_FORCE_HOLD + +// Underglow configuration +#ifdef RGBLIGHT_ENABLE + #define RGBLIGHT_ANIMATIONS + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 +#endif diff --git a/keyboards/ferris/keymaps/default/keymap.json b/keyboards/ferris/keymaps/default/keymap.json index 5fe1b9e00a48..f651b2d8c829 100644 --- a/keyboards/ferris/keymaps/default/keymap.json +++ b/keyboards/ferris/keymaps/default/keymap.json @@ -50,8 +50,8 @@ "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS", "KC_TRNS" , "KC_MINS" , "KC_BSLS" , "KC_GRV" , "KC_TRNS", - "KC_TRNS" , "KC_TRNS", - "KC_TRNS" , "KC_TRNS" + "RGB_RMOD" , "KC_TRNS", + "KC_TRNS" , "RGB_MOD" ], ["KC_TRNS" , "KC_COLN" , "KC_LT" , "KC_GT" , "KC_SCLN", "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS", diff --git a/keyboards/ferris/keymaps/madhatter/rules.mk b/keyboards/ferris/keymaps/madhatter/rules.mk index 2631761ce3df..25e61e4d5bbe 100644 --- a/keyboards/ferris/keymaps/madhatter/rules.mk +++ b/keyboards/ferris/keymaps/madhatter/rules.mk @@ -1,2 +1,2 @@ -BOOTMAGIC_ENABLE = lite +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite TAP_DANCE_ENABLE = yes \ No newline at end of file diff --git a/keyboards/ferris/keymaps/pierrec83/config.h b/keyboards/ferris/keymaps/pierrec83/config.h index cf0fb7478ef0..5d13cc596b09 100644 --- a/keyboards/ferris/keymaps/pierrec83/config.h +++ b/keyboards/ferris/keymaps/pierrec83/config.h @@ -37,3 +37,11 @@ along with this program. If not, see . #define PERMISSIVE_HOLD #define IGNORE_MOD_TAP_INTERRUPT #define TAPPING_FORCE_HOLD + +// Underglow configuration +#ifdef RGBLIGHT_ENABLE + #define RGBLIGHT_ANIMATIONS + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 +#endif diff --git a/keyboards/ferris/keymaps/pierrec83/keymap.json b/keyboards/ferris/keymaps/pierrec83/keymap.json index 1f2c166b9cf7..f42259be90ba 100644 --- a/keyboards/ferris/keymaps/pierrec83/keymap.json +++ b/keyboards/ferris/keymaps/pierrec83/keymap.json @@ -50,8 +50,8 @@ "KC_TRNS" , "KC_HOME" , "KC_PGDN" , "KC_END" , "KC_TRNS", "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS", - "LGUI(KC_LEFT)" , "KC_TRNS", - "KC_TRNS" , "LGUI(KC_RGHT)" + "RGB_RMOD" , "KC_TRNS", + "KC_TRNS" , "RGB_MOD" ], ["KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS", "KC_TRNS" , "KC_UNDS" , "KC_PIPE" , "KC_QUOT" , "KC_TRNS", diff --git a/keyboards/ferris/keymaps/test/config.h b/keyboards/ferris/keymaps/test/config.h index f784af4d11a3..821bf7c03f2f 100644 --- a/keyboards/ferris/keymaps/test/config.h +++ b/keyboards/ferris/keymaps/test/config.h @@ -18,3 +18,11 @@ along with this program. If not, see . #pragma once #define DEBUG_MATRIX_SCAN_RATE + +// Underglow configuration +#ifdef RGBLIGHT_ENABLE + #define RGBLIGHT_ANIMATIONS + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 +#endif diff --git a/keyboards/ferris/readme.md b/keyboards/ferris/readme.md index 84ac85b57f44..0d1fe284fda7 100644 --- a/keyboards/ferris/readme.md +++ b/keyboards/ferris/readme.md @@ -9,12 +9,16 @@ A split 34 keys column staggered keyboard named and decorated after the rustlang * Ferris 0.1 (With atmega32u4 chip. Comes in 4 variants: base, low, high and compact) * Ferris 0.2 (With stm32f072 chip. Comes in 4 variants: bling, mini, high and compact) * Ferris sweep (With pro-micro. Comes in a couple of PCB edge cuts shapes, but with identical pinout) -* Hardware Availability: Pierre Chevalier has been selling keyboard kits (see the #ferris channel in the 40% discord chat). Wider availability is on the horizon. +* Hardware Availability: [Cuddly Keyboards](https://cuddlykeyboards.com) Make examples for this keyboard (after setting up your build environment): make ferris/0_1:default make ferris/0_2:default + make ferris/0_2/bling:default + make ferris/0_2/compact:default + make ferris/0_2/mini:default + make ferris/0_2/high:default make ferris/sweep:default:avrdude-split-right 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/ferris/sweep/config.h b/keyboards/ferris/sweep/config.h index ad960610d1dc..702f31a89564 100644 --- a/keyboards/ferris/sweep/config.h +++ b/keyboards/ferris/sweep/config.h @@ -47,10 +47,10 @@ along with this program. If not, see . { B4, B5, NO_PIN, NO_PIN, NO_PIN } \ } -#define DIRECT_PINS_RIGHT { \ +#define DIRECT_PINS_RIGHT { \ { F4, F5, F6, F7, E6 }, \ - { D3,B6,B2,B3,B1 }, \ - { D7,C6,D4,D0,D1}, \ + { D3, B6, B2, B3, B1 }, \ + { D7, C6, D4, D0, D1 }, \ { B5, B4, NO_PIN, NO_PIN, NO_PIN } \ } @@ -72,3 +72,10 @@ along with this program. If not, see . #define SOFT_SERIAL_PIN D2 #define EE_HANDS + +/* Top left key on left half */ +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 +/* Top right key on right half */ +#define BOOTMAGIC_LITE_ROW_RIGHT 4 +#define BOOTMAGIC_LITE_COLUMN_RIGHT 4 diff --git a/keyboards/ferris/sweep/readme.md b/keyboards/ferris/sweep/readme.md index d7102aa1a07b..0379c4c81310 100644 --- a/keyboards/ferris/sweep/readme.md +++ b/keyboards/ferris/sweep/readme.md @@ -5,14 +5,51 @@ A version of the Ferris keyboard that uses a daughterboard, designed by the fantastic @davidphilipbarr with some input from @pierrechevalier83 for the copper pad. All PCB files are available on the [project's github page](https://github.com/davidphilipbarr/Sweep) +## Keyboard Info + * Keyboard Maintainer: [Pierre Chevalier](https://github.com/pierrechevalier83) -* Hardware Supported: - * Ferris sweep (With pro-micro. Comes in a couple of PCB edge cuts shapes, but with identical pinout) -* Hardware Availability: @iamnotyourbroom in the 40% discord chat server may have some spares for you. +* Hardware Supported: [Sweep](https://github.com/davidphilipbarr/Sweep) (all versions) +* Hardware Availability: Print the PCB with gerber files from the repository + +Make example for this keyboard (after setting up your build environment): + + make ferris/sweep: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). + +## Setting Handedness -Make examples for this keyboard (after setting up your build environment): +Firmware uses [handedness by EEPROM](https://docs.qmk.fm/#/feature_split_keyboard?id=handedness-by-eeprom) as default and it must be *configured once* on each side. The make commands are: make ferris/sweep:default:avrdude-split-left make ferris/sweep:default:avrdude-split-right -See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). +[QMK Toolbox](http://qmk.fm/toolbox) can also be used to set EEPROM handedness. Place the controller in bootloader mode and select menu option Tools -> EEPROM -> Set Left/Right Hand + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the top left key on the left half (or the top right right key on the right half) and plug in the controller on that side. +* **Physical reset button**: Briefly press the reset button soldered on the PCB. +* **Keycode in layout**: Press the key mapped to `RESET` if it is configured. + +## Swapped Pins + +If you printed one of the PCB variant with swapped letters `Q` and `B` / `P` and `N`, add the following code to your keymap's `config.h` to swap pins `E6` and `D7` in the firmware: +```c +#undef DIRECT_PINS +#define DIRECT_PINS { \ + { D7, F7, F6, F5, F4 }, \ + { B1, B3, B2, B6, D3 }, \ + { D1, D0, D4, C6, E6 }, \ + { B4, B5, NO_PIN, NO_PIN, NO_PIN } \ +} +#undef DIRECT_PINS_RIGHT +#define DIRECT_PINS_RIGHT { \ + { F4, F5, F6, F7, D7 }, \ + { D3, B6, B2, B3, B1 }, \ + { E6, C6, D4, D0, D1 }, \ + { B5, B4, NO_PIN, NO_PIN, NO_PIN } \ +} +``` diff --git a/keyboards/ferris/sweep/rules.mk b/keyboards/ferris/sweep/rules.mk index ce4d52156d31..a5446d0f7d77 100644 --- a/keyboards/ferris/sweep/rules.mk +++ b/keyboards/ferris/sweep/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # 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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow UNICODE_ENABLE = yes # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = yes # Use shared split_common code diff --git a/keyboards/ferris/sweep/sweep.c b/keyboards/ferris/sweep/sweep.c index 5b41bad848d5..98467f18ae4a 100644 --- a/keyboards/ferris/sweep/sweep.c +++ b/keyboards/ferris/sweep/sweep.c @@ -14,3 +14,20 @@ * along with this program. If not, see . */ #include "sweep.h" + +#ifdef SWAP_HANDS_ENABLE +__attribute__ ((weak)) +const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { + // Left + {{4, 4}, {3, 4}, {2, 4}, {1, 4}, {0, 4}}, + {{4, 5}, {3, 5}, {2, 5}, {1, 5}, {0, 5}}, + {{4, 6}, {3, 6}, {2, 6}, {1, 6}, {0, 6}}, + {{1, 7}, {0, 7}, {2, 7}, {3, 7}, {4, 7}}, + // Right + {{4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0}}, + {{4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1}}, + {{4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2}}, + {{1, 3}, {0, 3}, {2, 3}, {3, 3}, {4, 3}} +}; +#endif + diff --git a/keyboards/ffkeebs/puca/config.h b/keyboards/ffkeebs/puca/config.h new file mode 100644 index 000000000000..29bb9a782b91 --- /dev/null +++ b/keyboards/ffkeebs/puca/config.h @@ -0,0 +1,69 @@ +/* +Copyright 2021 Sleepdealer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4646 // FF +#define PRODUCT_ID 0x0002 +#define DEVICE_VER 0x0001 +#define MANUFACTURER FootFingers +#define PRODUCT Puca + +#define MATRIX_ROWS 6 +#define MATRIX_COLS 5 + // 0 , 1 , 2 , 3 , 4 , 5 +#define MATRIX_ROW_PINS { B4, E6, D7, B5, C6, F6} +#define MATRIX_COL_PINS { F7, B1, B3, B2, B6} + +#define DIODE_DIRECTION COL2ROW + +#ifdef RGBLIGHT_ENABLE + #define RGB_DI_PIN D4 + + #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_DEFAULT_MODE RGBLIGHT_MODE_STATIC_LIGHT + #define RGBLED_NUM 8 +#endif + + +#define ENCODERS_PAD_A { F4 } +#define ENCODERS_PAD_B { F5 } + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + diff --git a/keyboards/ffkeebs/puca/info.json b/keyboards/ffkeebs/puca/info.json new file mode 100644 index 000000000000..204f0ca497c5 --- /dev/null +++ b/keyboards/ffkeebs/puca/info.json @@ -0,0 +1,107 @@ +{ + "keyboard_name": "Puca", + "url": "https://ffkeebs.com/collections/puca/", + "maintainer": "Sleepdealr", + "layout_aliases": { + "LAYOUT": "LAYOUT_all" + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + { "label": "Rotary", "x": 0.5, "y": 0 }, + { "label": "Pg Up", "x": 2, "y": 0 }, + { "label": "Pg Dn", "x": 3, "y": 0 }, + + { "label": "Layer Toggle", "x": 0, "y": 1.25 }, + { "label": "/", "x": 1, "y": 1.25 }, + { "label": "*", "x": 2, "y": 1.25 }, + { "label": "-", "x": 3, "y": 1.25 }, + + { "label": "7", "x": 0, "y": 2.25 }, + { "label": "8", "x": 1, "y": 2.25 }, + { "label": "9", "x": 2, "y": 2.25 }, + { "label": "+", "x": 3, "y": 2.25 }, + { "label": "+", "x": 4, "y": 2.25, "h": 2 }, + + { "label": "4", "x": 0, "y": 3.25 }, + { "label": "5", "x": 1, "y": 3.25 }, + { "label": "6", "x": 2, "y": 3.25 }, + { "label": "|", "x": 3, "y": 3.25 }, + + { "label": "1", "x": 0, "y": 4.25 }, + { "label": "2", "x": 1, "y": 4.25 }, + { "label": "3", "x": 2, "y": 4.25 }, + { "label": "Enter", "x": 3, "y": 4.25 }, + { "label": "Enter", "x": 4, "y": 4.25, "h": 2 }, + + { "label": "0", "x": 0, "y": 5.25 }, + { "label": "00", "x": 1, "y": 5.25 }, + { "label": ".", "x": 2, "y": 5.25 }, + { "label": ".", "x": 3, "y": 5.25 }, + + { "label": "0", "x": 0, "y": 6.25, "w": 2 } + ] + }, + "LAYOUT_numpad": { + "layout": [ + { "label": "Rotary", "x": 0.5, "y": 0 }, + { "label": "Pg Up", "x": 2, "y": 0 }, + { "label": "Pg Dn", "x": 3, "y": 0 }, + + { "label": "Layer Toggle", "x": 0, "y": 1.25 }, + { "label": "/", "x": 1, "y": 1.25 }, + { "label": "*", "x": 2, "y": 1.25 }, + { "label": "-", "x": 3, "y": 1.25 }, + + { "label": "7", "x": 0, "y": 2.25 }, + { "label": "8", "x": 1, "y": 2.25 }, + { "label": "9", "x": 2, "y": 2.25 }, + + { "label": "4", "x": 0, "y": 3.25 }, + { "label": "5", "x": 1, "y": 3.25 }, + { "label": "6", "x": 2, "y": 3.25 }, + { "label": "+", "x": 3, "y": 2.25, "h": 2 }, + + { "label": "1", "x": 0, "y": 4.25 }, + { "label": "2", "x": 1, "y": 4.25 }, + { "label": "3", "x": 2, "y": 4.25 }, + + { "label": "0", "x": 0, "y": 5.25, "w": 2 }, + { "label": ".", "x": 2, "y": 5.25 }, + { "label": "Enter", "x": 3, "y": 4.25, "h": 2 } + ] + }, + "LAYOUT_ortho": { + "layout": [ + { "label": "Rotary", "x": 0.5, "y": 0 }, + { "label": "Pg Up", "x": 2, "y": 0 }, + { "label": "Pg Dn", "x": 3, "y": 0 }, + + { "label": "Layer Toggle", "x": 0, "y": 1.25 }, + { "label": "/", "x": 1, "y": 1.25 }, + { "label": "*", "x": 2, "y": 1.25 }, + { "label": "-", "x": 3, "y": 1.25 }, + + { "label": "7", "x": 0, "y": 2.25 }, + { "label": "8", "x": 1, "y": 2.25 }, + { "label": "9", "x": 2, "y": 2.25 }, + { "label": "+", "x": 3, "y": 2.25 }, + + { "label": "4", "x": 0, "y": 3.25 }, + { "label": "5", "x": 1, "y": 3.25 }, + { "label": "6", "x": 2, "y": 3.25 }, + { "label": "|", "x": 3, "y": 3.25 }, + + { "label": "1", "x": 0, "y": 4.25 }, + { "label": "2", "x": 1, "y": 4.25 }, + { "label": "3", "x": 2, "y": 4.25 }, + { "label": "Enter", "x": 3, "y": 4.25 }, + + { "label": "0", "x": 0, "y": 5.25 }, + { "label": "00", "x": 1, "y": 5.25 }, + { "label": ".", "x": 2, "y": 5.25 }, + { "label": "Enter", "x": 3, "y": 5.25 } + ] + } + } +} diff --git a/keyboards/ffkeebs/puca/keymaps/default/keymap.c b/keyboards/ffkeebs/puca/keymaps/default/keymap.c new file mode 100644 index 000000000000..12c20c0149ee --- /dev/null +++ b/keyboards/ffkeebs/puca/keymaps/default/keymap.c @@ -0,0 +1,40 @@ +/* Copyright 2021 Sleepdealer, James Young for QMK (@noroadsleft) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_all( + KC_MUTE, KC_PGUP, KC_PGDN, + TG(1), KC_PSLS, KC_PAST, KC_PMNS, + KC_P7, KC_P8, KC_P9, KC_PPLS, KC_PPLS, + KC_P4, KC_P5, KC_P6, KC_PIPE, + KC_P1, KC_P2, KC_P3, KC_ENTER, KC_ENTER, + KC_P0, MC_00, KC_PDOT, KC_PDOT, + KC_P0 + ), + + [1] = LAYOUT_all( + KC_TRNS, RGB_HUI, RGB_VAI, + TG(1), RGB_TOG, RGB_HUD, RGB_VAD, + KC_PGUP, KC_UP, KC_PGDN, RGB_MOD, RGB_MOD, + KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, + KC_INS, KC_HOME, KC_END, RGB_RMOD, RGB_RMOD, + KC_ESC, KC_TRNS, KC_DEL, KC_TRNS, + KC_ESC + ), + +}; diff --git a/keyboards/ffkeebs/puca/keymaps/default_numpad/keymap.c b/keyboards/ffkeebs/puca/keymaps/default_numpad/keymap.c new file mode 100644 index 000000000000..fe6767861202 --- /dev/null +++ b/keyboards/ffkeebs/puca/keymaps/default_numpad/keymap.c @@ -0,0 +1,38 @@ +/* Copyright 2021 Sleepdealer, James Young for QMK (@noroadsleft) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_numpad( + KC_MUTE, KC_PGUP, KC_PGDN, + TG(1), KC_PSLS, KC_PAST, 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_ENTER + ), + + [1] = LAYOUT_numpad( + _______, RGB_HUI, RGB_VAI, + TG(1), RGB_TOG, RGB_HUD, RGB_VAD, + KC_PGUP, KC_UP, KC_PGDN, + KC_LEFT, KC_DOWN, KC_RGHT, RGB_MOD, + KC_INS, KC_HOME, KC_END, + KC_ESC, KC_DEL, RGB_RMOD + ), + +}; diff --git a/keyboards/ffkeebs/puca/keymaps/default_ortho/keymap.c b/keyboards/ffkeebs/puca/keymaps/default_ortho/keymap.c new file mode 100644 index 000000000000..e734e69745cf --- /dev/null +++ b/keyboards/ffkeebs/puca/keymaps/default_ortho/keymap.c @@ -0,0 +1,38 @@ +/* Copyright 2021 Sleepdealer, James Young for QMK (@noroadsleft) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_ortho( + KC_MUTE, KC_PGUP, KC_PGDN, + TG(1), KC_PSLS, KC_PAST, KC_PMNS, + KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_P4, KC_P5, KC_P6, KC_PIPE, + KC_P1, KC_P2, KC_P3, KC_ENTER, + KC_P0, MC_00, KC_PDOT, KC_ENTER + ), + + [1] = LAYOUT_ortho( + _______, RGB_HUI, RGB_VAI, + TG(1), RGB_TOG, RGB_HUD, RGB_VAD, + KC_PGUP, KC_UP, KC_PGDN, RGB_MOD, + KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, + KC_INS, KC_HOME, KC_END, RGB_RMOD, + KC_ESC, XXXXXXX, KC_DEL, XXXXXXX + ) + +}; diff --git a/keyboards/ffkeebs/puca/puca.c b/keyboards/ffkeebs/puca/puca.c new file mode 100644 index 000000000000..21944a9e5d50 --- /dev/null +++ b/keyboards/ffkeebs/puca/puca.c @@ -0,0 +1,149 @@ +/* Copyright 2021 Sleepdealer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "puca.h" + +bool process_record_kb(uint16_t keycode, keyrecord_t* record) { + if (!process_record_user(keycode, record)) { + return false; + } + switch (keycode) { + case MC_00: + if (record->event.pressed) { + SEND_STRING("00"); + } + break; + } + return true; +} + +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + if (clockwise) { + tap_code_delay(KC_VOLU, 10); // Right + } else { + tap_code_delay(KC_VOLD, 10); // Left + } + return false; +} + + +// OLED +#ifdef OLED_ENABLE +__attribute__((weak)) oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; } +bool oled_task_kb(void) { + if (!oled_task_user()) { return false; } +// WPM-responsive animation stuff here +# define IDLE_FRAMES 2 +# define ANIM_FRAME_DURATION 400 // how long each frame lasts in ms +// #define SLEEP_TIMER 60000 // should sleep after this period of 0 wpm, needs fixing +# define ANIM_SIZE 636 // number of bytes in array, minimize for adequate firmware size, max is 1024 + static uint32_t anim_timer = 0; + static uint8_t current_idle_frame = 0; + // Credit to u/Pop-X- for the initial code. You can find his commit here https://github.com/qmk/qmk_firmware/pull/9264/files#diff-303f6e3a7a5ee54be0a9a13630842956R196-R333. + static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = {{ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x60, 0x60, 0x18, 0x18, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x18, 0x18, 0x60, 0x60, 0x80, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x0c, 0x0c, 0x0c, 0x0c, + 0x0c, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x06, 0x06, 0x18, 0x18, 0x60, 0x60, 0x18, 0x18, 0x60, 0x60, + 0x80, 0x80, 0x60, 0x60, 0x80, 0x80, 0x60, 0x60, 0x18, 0x18, 0x06, 0x07, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 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, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x03, 0x03, 0x00, 0x00, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0xfc, 0xfc, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x30, 0x30, 0xc0, 0xc0, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x30, 0x3f, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x03, 0x03, + 0x0c, 0x0c, 0x03, 0x03, 0x0c, 0x0c, 0x03, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }}; + + void animation_phase(void) { + current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES; + oled_write_raw_P(idle[abs((IDLE_FRAMES - 1) - current_idle_frame)], ANIM_SIZE); + } + if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { + anim_timer = timer_read32(); + animation_phase(); + } + + oled_set_cursor(0, 6); + oled_write_P(PSTR("PUCA\nPAD\n"), false); + oled_write_P(PSTR("-----\n"), false); + // Host Keyboard Layer Status + oled_write_P(PSTR("MODE\n"), false); + oled_write_P(PSTR("\n"), false); + switch (get_highest_layer(layer_state)) { + case 0: + oled_write_P(PSTR("BASE\n"), false); + break; + case 1: + oled_write_P(PSTR("FUNC\n"), false); + break; + } + return true; +} +#endif diff --git a/keyboards/ffkeebs/puca/puca.h b/keyboards/ffkeebs/puca/puca.h new file mode 100644 index 000000000000..ab4dc379169f --- /dev/null +++ b/keyboards/ffkeebs/puca/puca.h @@ -0,0 +1,101 @@ +/* Copyright 2021 Sleepdealer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* Keycodes defined here can be used by any keymap. If you wish to + * define additional keycodes for your personal keymap only, assign + * your first custom keycode to `= NEW_SAFE_RANGE`. + * + * See `process_record_kb()` in `puca.c`. + */ +enum keyboard_keycodes { + MC_00 = SAFE_RANGE, + NEW_SAFE_RANGE, +}; + +#define XXX KC_NO + +/* + * ┌───┐ ┌───┬───┐ + * │00 │ │02 │03 │ + * └───┘ └───┴───┘ + * ┌───┬───┬───┬───┐ + * │10 │11 │12 │13 │ + * ├───┼───┼───┼───┤ ┌───┐ + * │20 │21 │22 │23 │ │ │ + * ├───┼───┼───┼───┤ │24 │ 2u Plus + * │30 │31 │32 │33 │ │ │ + * ├───┼───┼───┼───┤ ├───┤ + * │40 │41 │42 │43 │ │ │ + * ├───┼───┼───┼───┤ │44 │ 2u Enter + * │50 │51 │52 │53 │ │ │ + * └───┴───┴───┴───┘ └───┘ + * ┌───────┐ + * │54 │ 2u 0 + * └───────┘ + */ + +#define LAYOUT_all( \ + K00, K02, K03, \ + K10, K11, K12, K13, \ + K20, K21, K22, K23, K24,\ + K30, K31, K32, K33, \ + K40, K41, K42, K43, K44,\ + K50, K51, K52, K53, \ + K54 \ +) { \ + { K00, XXX, K02, K03, XXX }, \ + { K10, K11, K12, K13, XXX }, \ + { K20, K21, K22, K23, K24 }, \ + { K30, K31, K32, K33, XXX }, \ + { K40, K41, K42, K43, K44 }, \ + { K50, K51, K52, K53, K54 }, \ +} + +#define LAYOUT_numpad( \ + K00, K02, K03, \ + K10, K11, K12, K13, \ + K20, K21, K22, \ + K30, K31, K32, K24, \ + K40, K41, K42, \ + K54, K52, K44 \ +) { \ + { K00, XXX, K02, K03, XXX }, \ + { K10, K11, K12, K13, XXX }, \ + { K20, K21, K22, XXX, K24 }, \ + { K30, K31, K32, XXX, XXX }, \ + { K40, K41, K42, XXX, K44 }, \ + { XXX, XXX, K52, XXX, K54 }, \ +} + +#define LAYOUT_ortho( \ + K00, K02, K03, \ + K10, K11, K12, K13, \ + K20, K21, K22, K23, \ + K30, K31, K32, K33, \ + K40, K41, K42, K43, \ + K50, K51, K52, K53 \ +) { \ + { K00, XXX, K02, K03, XXX }, \ + { K10, K11, K12, K13, XXX }, \ + { K20, K21, K22, K23, XXX }, \ + { K30, K31, K32, K33, XXX }, \ + { K40, K41, K42, K43, XXX }, \ + { K50, K51, K52, K53, XXX }, \ +} diff --git a/keyboards/ffkeebs/puca/readme.md b/keyboards/ffkeebs/puca/readme.md new file mode 100644 index 000000000000..ca4e0f93f939 --- /dev/null +++ b/keyboards/ffkeebs/puca/readme.md @@ -0,0 +1,23 @@ +# Puca Pad + +* Keyboard Maintainer: [Sleepdealer](https://github.com/Sleepdealr) +* Hardware Supported: Puca Pad +* Hardware Availability: [Puca GB](https://ffkeebs.com/collections/puca) + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (the encoder) +* **Physical reset button**: Briefly press the button on the front of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `RESET` if it is available + +Make example for this keyboard (after setting up your build environment): + + make ffkeebs/puca:default + +Flashing example for this keyboard: + + make ffkeebs/puca:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/ffkeebs/puca/rules.mk b/keyboards/ffkeebs/puca/rules.mk new file mode 100644 index 000000000000..0c86efaede56 --- /dev/null +++ b/keyboards/ffkeebs/puca/rules.mk @@ -0,0 +1,23 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# 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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow + +ENCODER_ENABLE = yes # Enable rotary encoder support +OLED_ENABLE = yes # Enable OLED support + +LTO_ENABLE = yes # Enable Link Time Optimization to reduce firmware size diff --git a/keyboards/ffkeebs/siris/info.json b/keyboards/ffkeebs/siris/info.json index cc03e69e2ff9..fe5161779f34 100644 --- a/keyboards/ffkeebs/siris/info.json +++ b/keyboards/ffkeebs/siris/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Siris", "url": "https: //github.com/swiftrax", "maintainer": "Swiftrax", - "width": 16, - "height": 5.5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/ffkeebs/siris/rules.mk b/keyboards/ffkeebs/siris/rules.mk index 912413f26cdc..6511ebf58abd 100644 --- a/keyboards/ffkeebs/siris/rules.mk +++ b/keyboards/ffkeebs/siris/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = yes # Rotary Encoder \ No newline at end of file diff --git a/keyboards/fjlabs/7vhotswap/7vhotswap.c b/keyboards/fjlabs/7vhotswap/7vhotswap.c new file mode 100644 index 000000000000..60a9dffc439b --- /dev/null +++ b/keyboards/fjlabs/7vhotswap/7vhotswap.c @@ -0,0 +1,14 @@ +/* +Copyright 2021 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "7vhotswap.h" diff --git a/keyboards/fjlabs/7vhotswap/7vhotswap.h b/keyboards/fjlabs/7vhotswap/7vhotswap.h new file mode 100644 index 000000000000..f0f710dac5e8 --- /dev/null +++ b/keyboards/fjlabs/7vhotswap/7vhotswap.h @@ -0,0 +1,34 @@ +/* +Copyright 2021 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +/* === All used matrix spots populated === */ +#define LAYOUT_75_all( \ + 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, 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, K4D, \ + K50, K51, K52, K55, K59, K5A, K5C, K5D, K5E \ +) { \ + { 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, 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, KC_NO, K4D, KC_NO }, \ + { K50, K51, K52, KC_NO, KC_NO, K55, KC_NO, KC_NO, KC_NO, K59, K5A, KC_NO, K5C, K5D, K5E } \ +} diff --git a/keyboards/fjlabs/7vhotswap/config.h b/keyboards/fjlabs/7vhotswap/config.h new file mode 100644 index 000000000000..a34bf8f5fa5f --- /dev/null +++ b/keyboards/fjlabs/7vhotswap/config.h @@ -0,0 +1,118 @@ +/* +Copyright 2021 + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7074 // FJLaboratories +#define PRODUCT_ID 0x0014 // 7V Hotswap +#define DEVICE_VER 0x0001 // Version 1 +#define MANUFACTURER FJLaboratories +#define PRODUCT 7V Hotswap + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 15 + +/* + * 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) + *å +*/ + +// Checked with Eagle Schematic +#define MATRIX_ROW_PINS { B0, F4, F1, F7, F6, F5 } +#define MATRIX_COL_PINS { F0, B1, B2, B3, B7, D0, D1, D2, D3, D5, D7, B4, B5, B6, C6 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* 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 RGB */ +#define RGB_DI_PIN C7 +#define RGBLED_NUM 4 +#define RGBLIGHT_EFFECT_BREATHING +#define RGBLIGHT_EFFECT_RAINBOW_MOOD +#define RGBLIGHT_EFFECT_RAINBOW_SWIRL +#define RGBLIGHT_EFFECT_SNAKE +#define RGBLIGHT_EFFECT_KNIGHT +#define RGBLIGHT_EFFECT_CHRISTMAS +#define RGBLIGHT_EFFECT_STATIC_GRADIENT +#define RGBLIGHT_EFFECT_RGB_TEST +#define RGBLIGHT_EFFECT_ALTERNATING +#define RGBLIGHT_EFFECT_TWINKLE +#define RGBLIGHT_LIMIT_VAL 255 +#define RGB_VAL_STEP 12 + +/* Define less important options */ + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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/fjlabs/7vhotswap/info.json b/keyboards/fjlabs/7vhotswap/info.json new file mode 100644 index 000000000000..87e492bc4ca3 --- /dev/null +++ b/keyboards/fjlabs/7vhotswap/info.json @@ -0,0 +1,97 @@ +{ + "keyboard_name": "7V Hotswap PCBs", + "url": "http://www.fjlaboratories.com/", + "maintainer": "FJLabs", + "layouts": { + "LAYOUT_75_all": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":1.25, "y":0}, + {"label":"F2", "x":2.25, "y":0}, + {"label":"F3", "x":3.25, "y":0}, + {"label":"F4", "x":4.25, "y":0}, + {"label":"F5", "x":5.5, "y":0}, + {"label":"F6", "x":6.5, "y":0}, + {"label":"F7", "x":7.5, "y":0}, + {"label":"F8", "x":8.5, "y":0}, + {"label":"F9", "x":9.75, "y":0}, + {"label":"F10", "x":10.75, "y":0}, + {"label":"F11", "x":11.75, "y":0}, + {"label":"F12", "x":12.75, "y":0}, + {"label":"Print Screen", "x":14, "y":0} + + {"label":"~", "x":0, "y":1.25}, + {"label":"!", "x":1, "y":1.25}, + {"label":"@", "x":2, "y":1.25}, + {"label":"#", "x":3, "y":1.25}, + {"label":"$", "x":4, "y":1.25}, + {"label":"%", "x":5, "y":1.25}, + {"label":"^", "x":6, "y":1.25}, + {"label":"&", "x":7, "y":1.25}, + {"label":"*", "x":8, "y":1.25}, + {"label":"(", "x":9, "y":1.25}, + {"label":")", "x":10, "y":1.25}, + {"label":"_", "x":11, "y":1.25}, + {"label":"+", "x":12, "y":1.25}, + {"label":"Back Space", "x":13, "y":1.25}, + {"label":"Back Space", "x":14, "y":1.25}, + {"label":"Delete", "x":15.25, "y":1.25}, + + {"label":"Tab", "x":0, "y":2.25, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.25}, + {"label":"W", "x":2.5, "y":2.25}, + {"label":"E", "x":3.5, "y":2.25}, + {"label":"R", "x":4.5, "y":2.25}, + {"label":"T", "x":5.5, "y":2.25}, + {"label":"Y", "x":6.5, "y":2.25}, + {"label":"U", "x":7.5, "y":2.25}, + {"label":"I", "x":8.5, "y":2.25}, + {"label":"O", "x":9.5, "y":2.25}, + {"label":"P", "x":10.5, "y":2.25}, + {"label":"{", "x":11.5, "y":2.25}, + {"label":"}", "x":12.5, "y":2.25}, + {"label":"|", "x":13.5, "y":2.25, "w":1.5}, + {"label":"Page Up", "x":15.25, "y":2.25}, + + {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, + {"label":"A", "x":1.75, "y":3.25}, + {"label":"S", "x":2.75, "y":3.25}, + {"label":"D", "x":3.75, "y":3.25}, + {"label":"F", "x":4.75, "y":3.25}, + {"label":"G", "x":5.75, "y":3.25}, + {"label":"H", "x":6.75, "y":3.25}, + {"label":"J", "x":7.75, "y":3.25}, + {"label":"K", "x":8.75, "y":3.25}, + {"label":"L", "x":9.75, "y":3.25}, + {"label":":", "x":10.75, "y":3.25}, + {"label":"SQ", "x":11.75, "y":3.25}, + {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, + {"label":"Page Down", "x":15.25, "y":3.25}, + + {"label":"Shift", "x":0, "y":4.25, "w":2.25}, + {"label":"Z", "x":2.25, "y":4.25}, + {"label":"X", "x":3.25, "y":4.25}, + {"label":"C", "x":4.25, "y":4.25}, + {"label":"V", "x":5.25, "y":4.25}, + {"label":"B", "x":6.25, "y":4.25}, + {"label":"N", "x":7.25, "y":4.25}, + {"label":"M", "x":8.25, "y":4.25}, + {"label":"<", "x":9.25, "y":4.25}, + {"label":">", "x":10.25, "y":4.25}, + {"label":"?", "x":11.25, "y":4.25}, + {"label":"Shift", "x":12.25, "y":4.25, "w":1.75}, + {"label":"\u2191", "x":14.25, "y":4.5}, + + {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, + {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, + {"x":3.75, "y":5.25, "w":6.25}, + {"label":"Alt", "x":10, "y":5.25, "w":1.25}, + {"label":"MO(1)", "x":11.25, "y":5.25, "w":1.25}, + {"label":"\u2190", "x":12.75, "y":5.5}, + {"label":"\u2193", "x":13.75, "y":5.5}, + {"label":"\u2192", "x":14.75, "y":5.5} + ] + } + } +} diff --git a/keyboards/fjlabs/7vhotswap/keymaps/default/keymap.c b/keyboards/fjlabs/7vhotswap/keymaps/default/keymap.c new file mode 100644 index 000000000000..5484ab9f8c69 --- /dev/null +++ b/keyboards/fjlabs/7vhotswap/keymaps/default/keymap.c @@ -0,0 +1,41 @@ +/* +Copyright 2021 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _LAYER0, + _LAYER1, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_LAYER0] = LAYOUT_75_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_BSPC, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_LAYER1] = LAYOUT_75_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/fjlabs/7vhotswap/keymaps/via/keymap.c b/keyboards/fjlabs/7vhotswap/keymaps/via/keymap.c new file mode 100644 index 000000000000..e6c2397a1690 --- /dev/null +++ b/keyboards/fjlabs/7vhotswap/keymaps/via/keymap.c @@ -0,0 +1,61 @@ +/* +Copyright 2021 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _LAYER0, + _LAYER1, + _LAYER2, + _LAYER3, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_LAYER0] = LAYOUT_75_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_BSPC, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_LAYER1] = LAYOUT_75_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_LAYER2] = LAYOUT_75_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_LAYER3] = LAYOUT_75_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/fjlabs/7vhotswap/keymaps/via/rules.mk b/keyboards/fjlabs/7vhotswap/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/fjlabs/7vhotswap/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/fjlabs/7vhotswap/readme.md b/keyboards/fjlabs/7vhotswap/readme.md new file mode 100644 index 000000000000..41f00141058c --- /dev/null +++ b/keyboards/fjlabs/7vhotswap/readme.md @@ -0,0 +1,15 @@ +# 7V Hotswap PCB by FJLaboratories + +The following is the QMK Firmware for the 7V Hotswap PCB by [FJLaboratories](https://www.fjlaboratories.com/). +* Keyboard Maintainer: FJLaboratories +* Hardware Supported: 7V Hotswap + +Make example for this keyboard (after setting up your build environment): + + make fjlabs/7vhotswap:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +You can enter the bootloader by shorting the RST pads on the back of the PCB while the PCB is plugged into the computer. diff --git a/keyboards/fjlabs/7vhotswap/rules.mk b/keyboards/fjlabs/7vhotswap/rules.mk new file mode 100644 index 000000000000..fef169d060e4 --- /dev/null +++ b/keyboards/fjlabs/7vhotswap/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Processor frequency +F_CPU = 8000000 + +# 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 = no # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# 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 diff --git a/keyboards/fjlabs/ad65/ad65.c b/keyboards/fjlabs/ad65/ad65.c new file mode 100644 index 000000000000..5714fa8b3cfc --- /dev/null +++ b/keyboards/fjlabs/ad65/ad65.c @@ -0,0 +1,14 @@ +/* +Copyright 2021 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "ad65.h" diff --git a/keyboards/fjlabs/ad65/ad65.h b/keyboards/fjlabs/ad65/ad65.h new file mode 100644 index 000000000000..f43c6e10f8c0 --- /dev/null +++ b/keyboards/fjlabs/ad65/ad65.h @@ -0,0 +1,32 @@ +/* +Copyright 2021 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +/* Phantom Keymap Definitions */ +#define LAYOUT_all( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, 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, 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, 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, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, K49, K4A, KC_NO, K4C, K4D, K4E } \ +} diff --git a/keyboards/fjlabs/ad65/config.h b/keyboards/fjlabs/ad65/config.h new file mode 100644 index 000000000000..8f9d672d839f --- /dev/null +++ b/keyboards/fjlabs/ad65/config.h @@ -0,0 +1,105 @@ +/* +Copyright 2021 + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7074 // FJLaboratories +#define PRODUCT_ID 0x0010 // AD65 +#define DEVICE_VER 0x0001 // Version 1 +#define MANUFACTURER Absolute Designs +#define PRODUCT AD65 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * 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) + *å +*/ + +// Checked with Eagle Schematic +#define MATRIX_ROW_PINS { F4, F1, F7, F6, F5 } +#define MATRIX_COL_PINS { F0, B1, B2, B3, B7, D0, D1, D2, D3, D5, D7, B4, B5, B6, C6 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* 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 Indicator LED's */ +#define LED_CAPS_LOCK_PIN C7 + +/* Define less important options */ + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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/fjlabs/ad65/info.json b/keyboards/fjlabs/ad65/info.json new file mode 100644 index 000000000000..36ed900b6c2f --- /dev/null +++ b/keyboards/fjlabs/ad65/info.json @@ -0,0 +1,84 @@ +{ + "keyboard_name": "Absolute Designs 65", + "url": "https://arnoldh93.wixsite.com/website", + "maintainer": "FJLaboratories", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + {"x": 15, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + {"x": 13.5, "y": 1, "w": 1.5}, + {"x": 15, "y": 1}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + {"x": 15, "y": 2}, + + {"x": 0, "y": 3, "w": 1.25}, + {"x": 1.25, "y": 3}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3}, + {"x": 12.25, "y": 3, "w": 1.75}, + {"x": 14, "y": 3}, + {"x": 15, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6.25}, + {"x": 10, "y": 4, "w": 1.25}, + {"x": 11.25, "y": 4, "w": 1.25}, + {"x": 13, "y": 4}, + {"x": 14, "y": 4}, + {"x": 15, "y": 4} + ] + } + } +} diff --git a/keyboards/fjlabs/ad65/keymaps/default/keymap.c b/keyboards/fjlabs/ad65/keymaps/default/keymap.c new file mode 100644 index 000000000000..e7e22b147636 --- /dev/null +++ b/keyboards/fjlabs/ad65/keymaps/default/keymap.c @@ -0,0 +1,39 @@ +/* +Copyright 2021 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _LAYER0, + _LAYER1, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_LAYER0] = LAYOUT_all( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_LAYER1] = LAYOUT_all( + KC_GESC, 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_BSPC, KC_DEL, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MUTE, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT + ) +}; diff --git a/keyboards/fjlabs/ad65/keymaps/via/keymap.c b/keyboards/fjlabs/ad65/keymaps/via/keymap.c new file mode 100644 index 000000000000..1e91ac327e7f --- /dev/null +++ b/keyboards/fjlabs/ad65/keymaps/via/keymap.c @@ -0,0 +1,57 @@ +/* +Copyright 2021 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _LAYER0, + _LAYER1, + _LAYER2, + _LAYER3, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_LAYER0] = LAYOUT_all( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_LAYER1] = LAYOUT_all( + KC_GESC, 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_BSPC, KC_DEL, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MUTE, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT + ), + + [_LAYER2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_LAYER3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/fjlabs/ad65/keymaps/via/rules.mk b/keyboards/fjlabs/ad65/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/fjlabs/ad65/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/fjlabs/ad65/readme.md b/keyboards/fjlabs/ad65/readme.md new file mode 100644 index 000000000000..cdfb13086a79 --- /dev/null +++ b/keyboards/fjlabs/ad65/readme.md @@ -0,0 +1,11 @@ +# Absolute Designs 65 by FJLaboratories + +The following is the QMK Firmware for the Absolute Designs 65 PCB for [Absolute Designs](https://arnoldh93.wixsite.com/website). +* Keyboard Maintainer: FJLaboratories +* Hardware Supported: Absolute Designs 65 (AD65) + +Make example for this keyboard (after setting up your build environment): + + make fjlabs/ad65: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). To enter bootloader, press the reset button at the back of the PCB near the microcontroller. diff --git a/keyboards/fjlabs/ad65/rules.mk b/keyboards/fjlabs/ad65/rules.mk new file mode 100644 index 000000000000..47ee4cc4a7c3 --- /dev/null +++ b/keyboards/fjlabs/ad65/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Processor frequency +F_CPU = 8000000 + +# 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 = no # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# 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 diff --git a/keyboards/fjlabs/bks65/config.h b/keyboards/fjlabs/bks65/config.h index 05bcaa56f20e..37cb2b687b97 100644 --- a/keyboards/fjlabs/bks65/config.h +++ b/keyboards/fjlabs/bks65/config.h @@ -63,7 +63,16 @@ along with this program. If not, see . /* Define RGB Underglow */ #define RGB_DI_PIN B0 #define RGBLED_NUM 24 -#define RGBLIGHT_ANIMATIONS +#define RGBLIGHT_EFFECT_BREATHING +#define RGBLIGHT_EFFECT_RAINBOW_MOOD +#define RGBLIGHT_EFFECT_RAINBOW_SWIRL +#define RGBLIGHT_EFFECT_SNAKE +#define RGBLIGHT_EFFECT_KNIGHT +#define RGBLIGHT_EFFECT_CHRISTMAS +#define RGBLIGHT_EFFECT_STATIC_GRADIENT +#define RGBLIGHT_EFFECT_RGB_TEST +#define RGBLIGHT_EFFECT_ALTERNATING +#define RGBLIGHT_EFFECT_TWINKLE /* #define RGBLIGHT_LAYER_BLINK*/ /* Define Indicator LED's */ diff --git a/keyboards/fjlabs/bks65/info.json b/keyboards/fjlabs/bks65/info.json index 2c117705fc5f..8ffc39896fda 100644 --- a/keyboards/fjlabs/bks65/info.json +++ b/keyboards/fjlabs/bks65/info.json @@ -2,8 +2,6 @@ "keyboard_name": "BKS65", "url": "https://www.bolsakeyboardsupply.com", "maintainer": "FJLabs", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_ansi": { "layout": [ diff --git a/keyboards/fjlabs/bks65/rules.mk b/keyboards/fjlabs/bks65/rules.mk index 5f75863ba648..1a244f76b84d 100644 --- a/keyboards/fjlabs/bks65/rules.mk +++ b/keyboards/fjlabs/bks65/rules.mk @@ -10,19 +10,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # 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 -KEYBOARD_LOCK_ENABLE = yes LAYOUTS = 65_ansi diff --git a/keyboards/fjlabs/bks65solder/bks65solder.h b/keyboards/fjlabs/bks65solder/bks65solder.h index 1a238c50da14..36b4ea73e1de 100644 --- a/keyboards/fjlabs/bks65solder/bks65solder.h +++ b/keyboards/fjlabs/bks65solder/bks65solder.h @@ -17,12 +17,12 @@ along with this program. If not, see . #include "quantum.h" /* BKS65 Solder Solder Keymap Definitions */ -#define LAYOUT_65_ansi( \ - 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, K45, K46, K48, K49, K4A, K4B, K4C, K4D, K4E \ +#define LAYOUT_all( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, 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, K2E, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K40, K41, K42, K45, K46, 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 }, \ @@ -30,3 +30,17 @@ along with this program. If not, see . { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \ { K40, K41, K42, KC_NO, KC_NO, K45, K46, KC_NO, K48, K49, K4A, K4B, K4C, K4D, K4E } \ } + +#define LAYOUT_65_ansi( \ + 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, 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, 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, KC_NO, 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, K49, K4A, K4B, K4C, K4D, K4E } \ +} diff --git a/keyboards/fjlabs/bks65solder/config.h b/keyboards/fjlabs/bks65solder/config.h index 94bb5157e684..6b3839c8c89c 100644 --- a/keyboards/fjlabs/bks65solder/config.h +++ b/keyboards/fjlabs/bks65solder/config.h @@ -63,7 +63,16 @@ along with this program. If not, see . /* Define RGB Underglow */ #define RGB_DI_PIN B0 #define RGBLED_NUM 24 -#define RGBLIGHT_ANIMATIONS +#define RGBLIGHT_EFFECT_BREATHING +#define RGBLIGHT_EFFECT_RAINBOW_MOOD +#define RGBLIGHT_EFFECT_RAINBOW_SWIRL +#define RGBLIGHT_EFFECT_SNAKE +#define RGBLIGHT_EFFECT_KNIGHT +#define RGBLIGHT_EFFECT_CHRISTMAS +#define RGBLIGHT_EFFECT_STATIC_GRADIENT +#define RGBLIGHT_EFFECT_RGB_TEST +#define RGBLIGHT_EFFECT_ALTERNATING +#define RGBLIGHT_EFFECT_TWINKLE /* #define RGBLIGHT_LAYER_BLINK*/ /* Define less important options */ diff --git a/keyboards/fjlabs/bks65solder/info.json b/keyboards/fjlabs/bks65solder/info.json index 3dc952347c69..327c50da2055 100644 --- a/keyboards/fjlabs/bks65solder/info.json +++ b/keyboards/fjlabs/bks65solder/info.json @@ -2,10 +2,8 @@ "keyboard_name": "BKS65 Solder", "url": "https://www.bolsakeyboardsupply.com", "maintainer": "FJLabs", - "width": 16, - "height": 5, "layouts": { - "LAYOUT_65_ansi": { + "LAYOUT_all": { "layout": [ {"x": 0, "y": 0}, {"x": 1, "y": 0}, @@ -84,6 +82,82 @@ {"x": 14, "y": 4}, {"x": 15, "y": 4} ] + }, + "LAYOUT_65_ansi": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":15, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + {"x":15, "y":1}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":15, "y":2}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4}, + {"x":11, "y":4}, + {"x":12, "y":4}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] } } } diff --git a/keyboards/fjlabs/bks65solder/keymaps/default/keymap.c b/keyboards/fjlabs/bks65solder/keymaps/default/keymap.c index 15133a2eed21..2e636cb3d940 100644 --- a/keyboards/fjlabs/bks65solder/keymaps/default/keymap.c +++ b/keyboards/fjlabs/bks65solder/keymaps/default/keymap.c @@ -21,19 +21,19 @@ enum layers { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_LAYER0] = LAYOUT_65_ansi( - KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_DEL, KC_PGDN, - KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + [_LAYER0] = LAYOUT_all( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), - [_LAYER1] = LAYOUT_65_ansi( - KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME, - KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUSE, RESET, KC_PGUP, - KC_TRNS, RGB_SPI, RGB_SPD, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + [_LAYER1] = LAYOUT_all( + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, KC_HOME, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, KC_PGUP, + KC_TRNS, RGB_SPI, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ) }; diff --git a/keyboards/fjlabs/bks65solder/keymaps/via/keymap.c b/keyboards/fjlabs/bks65solder/keymaps/via/keymap.c index 032e879b0acb..218c0265a5fb 100644 --- a/keyboards/fjlabs/bks65solder/keymaps/via/keymap.c +++ b/keyboards/fjlabs/bks65solder/keymaps/via/keymap.c @@ -23,36 +23,32 @@ enum layers { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_LAYER0] = LAYOUT_65_ansi( - KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_DEL, KC_PGDN, - KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + [_LAYER0] = LAYOUT_all( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), - - [_LAYER1] = LAYOUT_65_ansi( - KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME, - KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUSE, RESET, KC_PGUP, - KC_TRNS, RGB_SPI, RGB_SPD, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + [_LAYER1] = LAYOUT_all( + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, KC_HOME, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, KC_PGUP, + KC_TRNS, RGB_SPI, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), - - [_LAYER2] = LAYOUT_65_ansi( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + [_LAYER2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), - - [_LAYER3] = LAYOUT_65_ansi( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + [_LAYER3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), - }; diff --git a/keyboards/fjlabs/bks65solder/rules.mk b/keyboards/fjlabs/bks65solder/rules.mk index 5f75863ba648..1a244f76b84d 100644 --- a/keyboards/fjlabs/bks65solder/rules.mk +++ b/keyboards/fjlabs/bks65solder/rules.mk @@ -10,19 +10,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # 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 -KEYBOARD_LOCK_ENABLE = yes LAYOUTS = 65_ansi diff --git a/keyboards/fjlabs/bolsa65/config.h b/keyboards/fjlabs/bolsa65/config.h index c38da97076a2..c53d2ab65627 100644 --- a/keyboards/fjlabs/bolsa65/config.h +++ b/keyboards/fjlabs/bolsa65/config.h @@ -63,7 +63,16 @@ along with this program. If not, see . /* Define RGB Underglow #define RGB_DI_PIN B0 #define RGBLED_NUM 24 -#define RGBLIGHT_ANIMATIONS */ +#define RGBLIGHT_EFFECT_BREATHING +#define RGBLIGHT_EFFECT_RAINBOW_MOOD +#define RGBLIGHT_EFFECT_RAINBOW_SWIRL +#define RGBLIGHT_EFFECT_SNAKE +#define RGBLIGHT_EFFECT_KNIGHT +#define RGBLIGHT_EFFECT_CHRISTMAS +#define RGBLIGHT_EFFECT_STATIC_GRADIENT +#define RGBLIGHT_EFFECT_RGB_TEST +#define RGBLIGHT_EFFECT_ALTERNATING +#define RGBLIGHT_EFFECT_TWINKLE */ /* #define RGBLIGHT_LAYER_BLINK*/ /* Define less important options */ diff --git a/keyboards/fjlabs/bolsa65/info.json b/keyboards/fjlabs/bolsa65/info.json index 2485c29f5c81..a1baffc056cd 100644 --- a/keyboards/fjlabs/bolsa65/info.json +++ b/keyboards/fjlabs/bolsa65/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Bolsa65", "url": "https://www.bolsakeyboardsupply.com", "maintainer": "FJLabs", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_ansi_blocker": { "layout": [ diff --git a/keyboards/fjlabs/bolsa65/rules.mk b/keyboards/fjlabs/bolsa65/rules.mk index 945e7be2eeb0..94deb5c06a01 100644 --- a/keyboards/fjlabs/bolsa65/rules.mk +++ b/keyboards/fjlabs/bolsa65/rules.mk @@ -10,19 +10,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = 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 -KEYBOARD_LOCK_ENABLE = yes LAYOUTS = 65_ansi_blocker diff --git a/keyboards/fjlabs/kf87/config.h b/keyboards/fjlabs/kf87/config.h new file mode 100644 index 000000000000..38bd7566bb6b --- /dev/null +++ b/keyboards/fjlabs/kf87/config.h @@ -0,0 +1,122 @@ +/* +Copyright 2020 + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7074 // FJLaboratories +#define PRODUCT_ID 0x0006 // KF87 +#define DEVICE_VER 0x0001 // Version 1 +#define MANUFACTURER FJLaboratories +#define PRODUCT KF87 + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 17 + +/* + * 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) + *å +*/ + +// Checked with Eagle Schematic +#define MATRIX_ROW_PINS { B4, B5, B6, C0, E1, E0 } +#define MATRIX_COL_PINS { F2, F3, F4, F5, F6, F7, A0, A1, A2, A3, A4, A5, A6, A7, D5, D6, D7 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* 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 Indicator LED's */ +#define LED_CAPS_LOCK_PIN C4 +#define LED_SCROLL_LOCK_PIN C6 + +/* Define RGB */ +#define RGB_DI_PIN C2 +#define RGBLED_NUM 87 +#define RGBLIGHT_EFFECT_BREATHING +#define RGBLIGHT_EFFECT_RAINBOW_MOOD +#define RGBLIGHT_EFFECT_RAINBOW_SWIRL +#define RGBLIGHT_EFFECT_SNAKE +#define RGBLIGHT_EFFECT_KNIGHT +#define RGBLIGHT_EFFECT_CHRISTMAS +#define RGBLIGHT_EFFECT_STATIC_GRADIENT +#define RGBLIGHT_EFFECT_RGB_TEST +#define RGBLIGHT_EFFECT_ALTERNATING +#define RGBLIGHT_EFFECT_TWINKLE +#define RGBLIGHT_LIMIT_VAL 86 +#define RGB_VAL_STEP 12 + +/* Define less important options */ + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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/fjlabs/kf87/info.json b/keyboards/fjlabs/kf87/info.json new file mode 100644 index 000000000000..41542d166be8 --- /dev/null +++ b/keyboards/fjlabs/kf87/info.json @@ -0,0 +1,103 @@ +{ + "keyboard_name": "KF87 Replacement PCB's", + "url": "http://www.fjlaboratories.com/", + "maintainer": "FJLabs", + "layouts": { + "LAYOUT_tkl_all": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":2, "y":0}, + {"label":"F2", "x":3, "y":0}, + {"label":"F3", "x":4, "y":0}, + {"label":"F4", "x":5, "y":0}, + {"label":"F5", "x":6.5, "y":0}, + {"label":"F6", "x":7.5, "y":0}, + {"label":"F7", "x":8.5, "y":0}, + {"label":"F8", "x":9.5, "y":0}, + {"label":"F9", "x":11, "y":0}, + {"label":"F10", "x":12, "y":0}, + {"label":"F11", "x":13, "y":0}, + {"label":"F12", "x":14, "y":0}, + {"label":"PrtSc", "x":15.25, "y":0}, + {"label":"Scroll Lock", "x":16.25, "y":0}, + {"label":"Pause", "x":17.25, "y":0}, + + {"label":"~", "x":0, "y":1.25}, + {"label":"!", "x":1, "y":1.25}, + {"label":"@", "x":2, "y":1.25}, + {"label":"#", "x":3, "y":1.25}, + {"label":"$", "x":4, "y":1.25}, + {"label":"%", "x":5, "y":1.25}, + {"label":"^", "x":6, "y":1.25}, + {"label":"&", "x":7, "y":1.25}, + {"label":"*", "x":8, "y":1.25}, + {"label":"(", "x":9, "y":1.25}, + {"label":")", "x":10, "y":1.25}, + {"label":"_", "x":11, "y":1.25}, + {"label":"+", "x":12, "y":1.25}, + {"label":"Back Space", "x":13, "y":1.25, "w": 2}, + {"label":"Insert", "x":15.25, "y":1.25}, + {"label":"Home", "x":16.25, "y":1.25}, + {"label":"PgUp", "x":17.25, "y":1.25}, + + {"label":"Tab", "x":0, "y":2.25, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.25}, + {"label":"W", "x":2.5, "y":2.25}, + {"label":"E", "x":3.5, "y":2.25}, + {"label":"R", "x":4.5, "y":2.25}, + {"label":"T", "x":5.5, "y":2.25}, + {"label":"Y", "x":6.5, "y":2.25}, + {"label":"U", "x":7.5, "y":2.25}, + {"label":"I", "x":8.5, "y":2.25}, + {"label":"O", "x":9.5, "y":2.25}, + {"label":"P", "x":10.5, "y":2.25}, + {"label":"{", "x":11.5, "y":2.25}, + {"label":"}", "x":12.5, "y":2.25}, + {"label":"|", "x":13.5, "y":2.25, "w":1.5}, + {"label":"Delete", "x":15.25, "y":2.25}, + {"label":"End", "x":16.25, "y":2.25}, + {"label":"PgDn", "x":17.25, "y":2.25}, + + {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, + {"label":"A", "x":1.75, "y":3.25}, + {"label":"S", "x":2.75, "y":3.25}, + {"label":"D", "x":3.75, "y":3.25}, + {"label":"F", "x":4.75, "y":3.25}, + {"label":"G", "x":5.75, "y":3.25}, + {"label":"H", "x":6.75, "y":3.25}, + {"label":"J", "x":7.75, "y":3.25}, + {"label":"K", "x":8.75, "y":3.25}, + {"label":"L", "x":9.75, "y":3.25}, + {"label":":", "x":10.75, "y":3.25}, + {"label":"SQ", "x":11.75, "y":3.25}, + {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, + + {"label":"Shift", "x":0, "y":4.25, "w":2.25}, + {"label":"Z", "x":2.25, "y":4.25}, + {"label":"X", "x":3.25, "y":4.25}, + {"label":"C", "x":4.25, "y":4.25}, + {"label":"V", "x":5.25, "y":4.25}, + {"label":"B", "x":6.25, "y":4.25}, + {"label":"N", "x":7.25, "y":4.25}, + {"label":"M", "x":8.25, "y":4.25}, + {"label":"<", "x":9.25, "y":4.25}, + {"label":">", "x":10.25, "y":4.25}, + {"label":"?", "x":11.25, "y":4.25}, + {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, + {"label":"\u2191", "x":16.25, "y":4.25}, + + {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, + {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, + {"x":3.75, "y":5.25, "w":6.25}, + {"label":"Alt", "x":10, "y":5.25, "w":1.25}, + {"label":"Win", "x":11.25, "y":5.25, "w":1.25}, + {"label":"Menu", "x":12.5, "y":5.25, "w":1.25}, + {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, + {"label":"\u2190", "x":15.25, "y":5.25}, + {"label":"\u2193", "x":16.25, "y":5.25}, + {"label":"\u2192", "x":17.25, "y":5.25} + ] + } + } +} diff --git a/keyboards/fjlabs/kf87/keymaps/default/keymap.c b/keyboards/fjlabs/kf87/keymaps/default/keymap.c new file mode 100644 index 000000000000..096b2452ed25 --- /dev/null +++ b/keyboards/fjlabs/kf87/keymaps/default/keymap.c @@ -0,0 +1,41 @@ +/* +Copyright 2020 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _LAYER0, + _LAYER1, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_LAYER0] = LAYOUT_tkl_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_LAYER1] = LAYOUT_tkl_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/fjlabs/kf87/keymaps/via/keymap.c b/keyboards/fjlabs/kf87/keymaps/via/keymap.c new file mode 100644 index 000000000000..70acb644a2d7 --- /dev/null +++ b/keyboards/fjlabs/kf87/keymaps/via/keymap.c @@ -0,0 +1,61 @@ +/* +Copyright 2020 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _LAYER0, + _LAYER1, + _LAYER2, + _LAYER3, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_LAYER0] = LAYOUT_tkl_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_LAYER1] = LAYOUT_tkl_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_LAYER2] = LAYOUT_tkl_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_LAYER3] = LAYOUT_tkl_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/fjlabs/kf87/keymaps/via/rules.mk b/keyboards/fjlabs/kf87/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/fjlabs/kf87/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/fjlabs/kf87/kf87.c b/keyboards/fjlabs/kf87/kf87.c new file mode 100644 index 000000000000..77ddbfe7d50d --- /dev/null +++ b/keyboards/fjlabs/kf87/kf87.c @@ -0,0 +1,14 @@ +/* +Copyright 2020 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "kf87.h" diff --git a/keyboards/fjlabs/kf87/kf87.h b/keyboards/fjlabs/kf87/kf87.h new file mode 100644 index 000000000000..5c17e2025b70 --- /dev/null +++ b/keyboards/fjlabs/kf87/kf87.h @@ -0,0 +1,34 @@ +/* +Copyright 2020 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +/* === All used matrix spots populated === */ +#define LAYOUT_tkl_all( \ + 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, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4C, K4F, \ + K50, K51, K52, K55, K59, K5A, K5B, 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, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, KC_NO, K4C, KC_NO, KC_NO, K4F, KC_NO }, \ + { K50, K51, K52, KC_NO, KC_NO, K55, KC_NO, KC_NO, KC_NO, K59, K5A, K5B, KC_NO, K5D, K5E, K5F, K5G } \ +} diff --git a/keyboards/fjlabs/kf87/readme.md b/keyboards/fjlabs/kf87/readme.md new file mode 100644 index 000000000000..be15e4f2eb25 --- /dev/null +++ b/keyboards/fjlabs/kf87/readme.md @@ -0,0 +1,15 @@ +# KF87 Monstargears Replacement PCB by FJLaboratories for KawaiiVoldemort + +The following is the QMK Firmware for the KF87 by [FJLaboratories](https://www.fjlaboratories.com/). +* Keyboard Maintainer: FJLaboratories +* Hardware Supported: KF87 + +Make example for this keyboard (after setting up your build environment): + + make fjlabs/kf87:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +You can enter the bootloader by shorting the RST pads on the back of the PCB while the PCB is plugged into the computer. diff --git a/keyboards/fjlabs/kf87/rules.mk b/keyboards/fjlabs/kf87/rules.mk new file mode 100644 index 000000000000..663c1848b4e9 --- /dev/null +++ b/keyboards/fjlabs/kf87/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = at90usb646 + +# Processor frequency +F_CPU = 8000000 + +# 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 = no # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# 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 diff --git a/keyboards/fjlabs/ldk65/info.json b/keyboards/fjlabs/ldk65/info.json index 5a58a2b0c622..ae5a0a5924bd 100644 --- a/keyboards/fjlabs/ldk65/info.json +++ b/keyboards/fjlabs/ldk65/info.json @@ -2,8 +2,6 @@ "keyboard_name": "LDK65", "url": "https://www.bolsakeyboardsupply.com", "maintainer": "FJLabs", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_ansi": { "layout": [ diff --git a/keyboards/fjlabs/ldk65/rules.mk b/keyboards/fjlabs/ldk65/rules.mk index 6d4300e482ad..9933bf736042 100644 --- a/keyboards/fjlabs/ldk65/rules.mk +++ b/keyboards/fjlabs/ldk65/rules.mk @@ -10,19 +10,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = 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 -KEYBOARD_LOCK_ENABLE = yes LAYOUTS = 65_ansi diff --git a/keyboards/fjlabs/midway60/info.json b/keyboards/fjlabs/midway60/info.json index c398eab1ec79..251c57dc8e6f 100644 --- a/keyboards/fjlabs/midway60/info.json +++ b/keyboards/fjlabs/midway60/info.json @@ -2,80 +2,77 @@ "keyboard_name": "Midway60", "url": "https://www.bolsakeyboardsupply.com", "maintainer": "FJLabs", - "width": 15, - "height": 5, "layouts": { - "LAYOUT_60": { + "LAYOUT_all": { "layout": [ - {"x": 0, "y": 0}, - {"x": 1, "y": 0}, - {"x": 2, "y": 0}, - {"x": 3, "y": 0}, - {"x": 4, "y": 0}, - {"x": 5, "y": 0}, - {"x": 6, "y": 0}, - {"x": 7, "y": 0}, - {"x": 8, "y": 0}, - {"x": 9, "y": 0}, - {"x": 10, "y": 0}, - {"x": 11, "y": 0}, - {"x": 12, "y": 0}, - {"x": 13, "y": 0}, - {"x": 14, "y": 0}, + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, - {"x": 0, "y": 1, "w": 1.5}, - {"x": 1.5, "y": 1}, - {"x": 2.5, "y": 1}, - {"x": 3.5, "y": 1}, - {"x": 4.5, "y": 1}, - {"x": 5.5, "y": 1}, - {"x": 6.5, "y": 1}, - {"x": 7.5, "y": 1}, - {"x": 8.5, "y": 1}, - {"x": 9.5, "y": 1}, - {"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":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, - {"x": 2.75, "y": 2}, - {"x": 3.75, "y": 2}, - {"x": 4.75, "y": 2}, - {"x": 5.75, "y": 2}, - {"x": 6.75, "y": 2}, - {"x": 7.75, "y": 2}, - {"x": 8.75, "y": 2}, - {"x": 9.75, "y": 2}, - {"x": 10.75, "y": 2}, - {"x": 11.75, "y": 2}, - {"x": 12.75, "y": 2, "w": 2.25}, + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, - {"x": 0, "y": 3, "w": 1.25}, - {"x": 1.25, "y": 3}, - {"x": 2.25, "y": 3}, - {"x": 3.25, "y": 3}, - {"x": 4.25, "y": 3}, - {"x": 5.25, "y": 3}, - {"x": 6.25, "y": 3}, - {"x": 7.25, "y": 3}, - {"x": 8.25, "y": 3}, - {"x": 9.25, "y": 3}, - {"x": 10.25, "y": 3}, - {"x": 11.25, "y": 3}, - {"x": 12.25, "y": 3, "w": 1.75}, - {"x": 14, "y": 3}, + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, - {"x": 0, "y": 4, "w": 1.25}, - {"x": 1.25, "y": 4, "w": 1.25}, - {"x": 2.5, "y": 4, "w": 1.25}, - {"x": 3.75, "y": 4, "w": 6.25}, - {"x": 10, "y": 4}, - {"x": 11, "y": 4}, - {"x": 12, "y": 4}, - {"x": 13, "y": 4}, - {"x": 14, "y": 4} + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":12.5, "y":4, "w":1.25}, + {"x":13.75, "y":4, "w":1.25} ] } } diff --git a/keyboards/fjlabs/midway60/keymaps/default/keymap.c b/keyboards/fjlabs/midway60/keymaps/default/keymap.c index 3ef29c17bc7a..47545e925a9c 100644 --- a/keyboards/fjlabs/midway60/keymaps/default/keymap.c +++ b/keyboards/fjlabs/midway60/keymaps/default/keymap.c @@ -22,18 +22,18 @@ enum layers { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_LAYER0] = LAYOUT_all( - KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_DEL, - KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RWIN, KC_RCTL + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RWIN, KC_RCTL ), [_LAYER1] = LAYOUT_all( - KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, - KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUSE, RESET, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ) }; diff --git a/keyboards/fjlabs/midway60/keymaps/via/keymap.c b/keyboards/fjlabs/midway60/keymaps/via/keymap.c index 38eef49274c1..cd83e23a584d 100644 --- a/keyboards/fjlabs/midway60/keymaps/via/keymap.c +++ b/keyboards/fjlabs/midway60/keymaps/via/keymap.c @@ -24,35 +24,35 @@ enum layers { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_LAYER0] = LAYOUT_all( - KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_DEL, - KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RWIN, KC_RCTL + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RWIN, KC_RCTL ), [_LAYER1] = LAYOUT_all( - KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, - KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUSE, RESET, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), [_LAYER2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), [_LAYER3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) }; diff --git a/keyboards/fjlabs/midway60/midway60.h b/keyboards/fjlabs/midway60/midway60.h index 2311f983e765..cbe9bf39683b 100644 --- a/keyboards/fjlabs/midway60/midway60.h +++ b/keyboards/fjlabs/midway60/midway60.h @@ -18,11 +18,11 @@ along with this program. If not, see . /* Midway60 Keymap Definitions */ #define LAYOUT_all( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \ 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, \ + 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, K3D, \ - K40, K41, K42, K46, K49, K4A, K4C, K4D \ + K40, K41, K42, K46, K49, K4A, 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 }, \ diff --git a/keyboards/fjlabs/midway60/rules.mk b/keyboards/fjlabs/midway60/rules.mk index 622c26a3a15c..47ee4cc4a7c3 100644 --- a/keyboards/fjlabs/midway60/rules.mk +++ b/keyboards/fjlabs/midway60/rules.mk @@ -10,16 +10,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = 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 diff --git a/keyboards/fjlabs/mk61rgbansi/config.h b/keyboards/fjlabs/mk61rgbansi/config.h new file mode 100644 index 000000000000..4d459b6f8896 --- /dev/null +++ b/keyboards/fjlabs/mk61rgbansi/config.h @@ -0,0 +1,121 @@ +/* +Copyright 2021 + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7074 // FJLabs +#define PRODUCT_ID 0x1011 // mk61-rgb-ansi +#define DEVICE_VER 0x0001 // Version 1 +#define MANUFACTURER Mechanical Keyboards LLC +#define PRODUCT MK61-RGB-ANSI + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/* + * 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) + * +*/ + +// Checked with Eagle Schematic +#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6 } +#define MATRIX_COL_PINS { C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, B3, B2, B1 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* 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 RGB Underglow */ +#define RGB_DI_PIN F7 +#define RGBLED_NUM 64 +#define RGBLIGHT_EFFECT_BREATHING +#define RGBLIGHT_EFFECT_RAINBOW_MOOD +#define RGBLIGHT_EFFECT_RAINBOW_SWIRL +#define RGBLIGHT_EFFECT_SNAKE +#define RGBLIGHT_EFFECT_KNIGHT +#define RGBLIGHT_EFFECT_CHRISTMAS +#define RGBLIGHT_EFFECT_STATIC_GRADIENT +#define RGBLIGHT_EFFECT_RGB_TEST +#define RGBLIGHT_EFFECT_ALTERNATING +#define RGBLIGHT_EFFECT_TWINKLE +#define RGBLIGHT_LIMIT_VAL 108 +#define RGB_VAL_STEP 12 +#define RGBLIGHT_DEFAULT_SPD 144 +#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_SWIRL +/* #define RGBLIGHT_LAYER_BLINK*/ + +/* Define less important options */ + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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/fjlabs/mk61rgbansi/info.json b/keyboards/fjlabs/mk61rgbansi/info.json new file mode 100644 index 000000000000..84cc8a46aed6 --- /dev/null +++ b/keyboards/fjlabs/mk61rgbansi/info.json @@ -0,0 +1,76 @@ +{ + "keyboard_name": "MK61-RGB-ANSI", + "url": "https://www.fjlaboratories.com/", + "maintainer": "Mechanical Keyboards, LLC", + "layouts": { + "LAYOUT_60_ansi": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0, "w": 2}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"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}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3}, + {"x": 12.25, "y": 3, "w": 2.75}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6.25}, + {"x": 10, "y": 4, "w": 1.25}, + {"x": 11.25, "y": 4, "w": 1.25}, + {"x": 12.5, "y": 4, "w": 1.25}, + {"x": 13.75, "y": 4, "w": 1.25} + ] + } + } +} diff --git a/keyboards/fjlabs/mk61rgbansi/keymaps/default/keymap.c b/keyboards/fjlabs/mk61rgbansi/keymaps/default/keymap.c new file mode 100644 index 000000000000..7873f0e5e5b5 --- /dev/null +++ b/keyboards/fjlabs/mk61rgbansi/keymaps/default/keymap.c @@ -0,0 +1,40 @@ +/* +Copyright 2021 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _LAYER0, + _LAYER1, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_LAYER0] = LAYOUT_60_ansi( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTRL + ), + + [_LAYER1] = LAYOUT_60_ansi( + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUSE, RESET, + KC_TRNS, RGB_SPI, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) + +}; \ No newline at end of file diff --git a/keyboards/fjlabs/mk61rgbansi/keymaps/via/keymap.c b/keyboards/fjlabs/mk61rgbansi/keymaps/via/keymap.c new file mode 100644 index 000000000000..2e4dac7fc2de --- /dev/null +++ b/keyboards/fjlabs/mk61rgbansi/keymaps/via/keymap.c @@ -0,0 +1,58 @@ +/* +Copyright 2021 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _LAYER0, + _LAYER1, + _LAYER2, + _LAYER3, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_LAYER0] = LAYOUT_60_ansi( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTRL + ), + + [_LAYER1] = LAYOUT_60_ansi( + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUSE, RESET, + KC_TRNS, RGB_SPI, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_LAYER2] = LAYOUT_60_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_LAYER3] = LAYOUT_60_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + +}; diff --git a/keyboards/fjlabs/mk61rgbansi/keymaps/via/rules.mk b/keyboards/fjlabs/mk61rgbansi/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/fjlabs/mk61rgbansi/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/fjlabs/mk61rgbansi/mk61rgbansi.c b/keyboards/fjlabs/mk61rgbansi/mk61rgbansi.c new file mode 100644 index 000000000000..5bf82ad44370 --- /dev/null +++ b/keyboards/fjlabs/mk61rgbansi/mk61rgbansi.c @@ -0,0 +1,13 @@ +/* Copyright 2021 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "mk61rgbansi.h" diff --git a/keyboards/fjlabs/mk61rgbansi/mk61rgbansi.h b/keyboards/fjlabs/mk61rgbansi/mk61rgbansi.h new file mode 100644 index 000000000000..8ab4873e084e --- /dev/null +++ b/keyboards/fjlabs/mk61rgbansi/mk61rgbansi.h @@ -0,0 +1,32 @@ +/* +Copyright 2021 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +/* MK61-RGB-ANSI Keymap Definitions */ +#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, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3C, \ + K40, K41, K42, K45, K49, K4A, 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, K3C, KC_NO }, \ + { K40, K41, K42, KC_NO, KC_NO, K45, KC_NO, KC_NO, KC_NO, K49, K4A, KC_NO, K4C, K4D } \ +} diff --git a/keyboards/fjlabs/mk61rgbansi/readme.md b/keyboards/fjlabs/mk61rgbansi/readme.md new file mode 100644 index 000000000000..6425f0940655 --- /dev/null +++ b/keyboards/fjlabs/mk61rgbansi/readme.md @@ -0,0 +1,14 @@ +# Mechanical Keyboards, LLC MK61-RGB-ANSI + +The following is the QMK Firmware for the Mechanical Keyboards, LLC MK61-RGB-ANSI PCB. + +--- + +* Keyboard Maintainer: Mechanical Keyboards, LLC +* Hardware Supported: MK61-RGB-ANSI + +Make example for this keyboard (after setting up your build environment): + + make fjlabs/mk61-rgb-ansi: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). You can enter the bootloader by pressing the reset button on the back of the PCB. diff --git a/keyboards/fjlabs/mk61rgbansi/rules.mk b/keyboards/fjlabs/mk61rgbansi/rules.mk new file mode 100644 index 000000000000..978e0a6a98c9 --- /dev/null +++ b/keyboards/fjlabs/mk61rgbansi/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = atmega32u4 + +# Processor frequency +F_CPU = 8000000 + +# 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 = no # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# 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/fjlabs/polaris/info.json b/keyboards/fjlabs/polaris/info.json index a9e9f4bb4b8e..f2b1213e8533 100644 --- a/keyboards/fjlabs/polaris/info.json +++ b/keyboards/fjlabs/polaris/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Polaris Hotswap and Solder", "url": "http://www.fjlaboratories.com/projects/", "maintainer": "FJLabs", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/fjlabs/polaris/rules.mk b/keyboards/fjlabs/polaris/rules.mk index 622c26a3a15c..47ee4cc4a7c3 100644 --- a/keyboards/fjlabs/polaris/rules.mk +++ b/keyboards/fjlabs/polaris/rules.mk @@ -10,16 +10,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = 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 diff --git a/keyboards/fjlabs/ready100/config.h b/keyboards/fjlabs/ready100/config.h new file mode 100644 index 000000000000..a32f9d94acc1 --- /dev/null +++ b/keyboards/fjlabs/ready100/config.h @@ -0,0 +1,119 @@ +/* +Copyright 2021 + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7074 // FJLabs +#define PRODUCT_ID 0x1003 // Ready100 +#define DEVICE_VER 0x0001 // Version 1 +#define MANUFACTURER FJLabs +#define PRODUCT Ready100 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/* + * 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) + * +*/ + +// Checked with Eagle Schematic +#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6 } +#define MATRIX_COL_PINS { C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, B3, B2, B1 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* 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 RGB Underglow */ +#define RGB_DI_PIN F7 +#define RGBLED_NUM 64 +#define RGBLIGHT_EFFECT_BREATHING +#define RGBLIGHT_EFFECT_RAINBOW_MOOD +#define RGBLIGHT_EFFECT_RAINBOW_SWIRL +#define RGBLIGHT_EFFECT_SNAKE +#define RGBLIGHT_EFFECT_KNIGHT +#define RGBLIGHT_EFFECT_CHRISTMAS +#define RGBLIGHT_EFFECT_STATIC_GRADIENT +#define RGBLIGHT_EFFECT_RGB_TEST +#define RGBLIGHT_EFFECT_ALTERNATING +#define RGBLIGHT_EFFECT_TWINKLE +#define RGBLIGHT_LIMIT_VAL 108 +#define RGB_VAL_STEP 12 +/* #define RGBLIGHT_LAYER_BLINK*/ + +/* Define less important options */ + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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/fjlabs/ready100/info.json b/keyboards/fjlabs/ready100/info.json new file mode 100644 index 000000000000..2bc20ad2ffa7 --- /dev/null +++ b/keyboards/fjlabs/ready100/info.json @@ -0,0 +1,82 @@ +{ + "keyboard_name": "Ready100", + "url": "https://www.ready100.com", + "maintainer": "FJLabs", + "layout_aliases": { + "LAYOUT_64key": "LAYOUT_64_ansi" + }, + "layouts": { + "LAYOUT_64_ansi": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0, "w": 2}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"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}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 0, "y": 3, "w": 2}, + {"x": 2, "y": 3}, + {"x": 3, "y": 3}, + {"x": 4, "y": 3}, + {"x": 5, "y": 3}, + {"x": 6, "y": 3}, + {"x": 7, "y": 3}, + {"x": 8, "y": 3}, + {"x": 9, "y": 3}, + {"x": 10, "y": 3}, + {"x": 11, "y": 3}, + {"x": 12, "y": 3}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6.25}, + {"x": 10, "y": 4}, + {"x": 11, "y": 4}, + {"x": 12, "y": 4}, + {"x": 13, "y": 4}, + {"x": 14, "y": 4} + ] + } + } +} diff --git a/keyboards/fjlabs/ready100/keymaps/default/keymap.c b/keyboards/fjlabs/ready100/keymaps/default/keymap.c new file mode 100644 index 000000000000..bd2ad55d39d5 --- /dev/null +++ b/keyboards/fjlabs/ready100/keymaps/default/keymap.c @@ -0,0 +1,40 @@ +/* +Copyright 2021 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _LAYER0, + _LAYER1, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_LAYER0] = LAYOUT_64_ansi( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_LAYER1] = LAYOUT_64_ansi( + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, + KC_TRNS, RGB_SPI, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) + +}; diff --git a/keyboards/fjlabs/ready100/keymaps/via/keymap.c b/keyboards/fjlabs/ready100/keymaps/via/keymap.c new file mode 100644 index 000000000000..4ea0c5476609 --- /dev/null +++ b/keyboards/fjlabs/ready100/keymaps/via/keymap.c @@ -0,0 +1,58 @@ +/* +Copyright 2021 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _LAYER0, + _LAYER1, + _LAYER2, + _LAYER3, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_LAYER0] = LAYOUT_64_ansi( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_LAYER1] = LAYOUT_64_ansi( + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, + KC_TRNS, RGB_SPI, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_LAYER2] = LAYOUT_64_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_LAYER3] = LAYOUT_64_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + +}; diff --git a/keyboards/fjlabs/ready100/keymaps/via/rules.mk b/keyboards/fjlabs/ready100/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/fjlabs/ready100/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/fjlabs/ready100/readme.md b/keyboards/fjlabs/ready100/readme.md new file mode 100644 index 000000000000..c38a21b50009 --- /dev/null +++ b/keyboards/fjlabs/ready100/readme.md @@ -0,0 +1,19 @@ +# Ready100 + +The following is the QMK Firmware for the [Ready100](https://www.ready100.com) 64-key PCB, a universal tray mount 60% hotswap PCB with per key RGB LED's. + +The PCB will feature: +* Kailh Hotswap sockets +* QMK & VIA compatibility +* Per-Key RGB LED's + +--- + +* Keyboard Maintainer: FJLabs +* Hardware Supported: Ready100 + +Make example for this keyboard (after setting up your build environment): + + make fjlabs/ready100: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). You can enter the bootloader by pressing the reset button on the back of the PCB. diff --git a/keyboards/fjlabs/ready100/ready100.c b/keyboards/fjlabs/ready100/ready100.c new file mode 100644 index 000000000000..6791a75697e5 --- /dev/null +++ b/keyboards/fjlabs/ready100/ready100.c @@ -0,0 +1,14 @@ +/* +Copyright 2021 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "ready100.h" diff --git a/keyboards/fjlabs/ready100/ready100.h b/keyboards/fjlabs/ready100/ready100.h new file mode 100644 index 000000000000..0639289183dd --- /dev/null +++ b/keyboards/fjlabs/ready100/ready100.h @@ -0,0 +1,32 @@ +/* +Copyright 2021 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +/* Ready100 Keymap Definitions */ +#define LAYOUT_64_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, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \ + K40, K41, K42, K45, 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, KC_NO, 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, KC_NO, KC_NO, K49, K4A, K4B, K4C, K4D } \ +} diff --git a/keyboards/fjlabs/ready100/rules.mk b/keyboards/fjlabs/ready100/rules.mk new file mode 100644 index 000000000000..7273910fb42f --- /dev/null +++ b/keyboards/fjlabs/ready100/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = atmega32u4 + +# Processor frequency +F_CPU = 8000000 + +# 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 = no # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# 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 = 64_ansi diff --git a/keyboards/fjlabs/tf60ansi/config.h b/keyboards/fjlabs/tf60ansi/config.h new file mode 100644 index 000000000000..eede9b7544d1 --- /dev/null +++ b/keyboards/fjlabs/tf60ansi/config.h @@ -0,0 +1,121 @@ +/* +Copyright 2021 + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7074 // FJLabs +#define PRODUCT_ID 0x1004 // tf60ansi +#define DEVICE_VER 0x0001 // Version 1 +#define MANUFACTURER FJLabs +#define PRODUCT TF60ANSI + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/* + * 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) + * +*/ + +// Checked with Eagle Schematic +#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6 } +#define MATRIX_COL_PINS { C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, B3, B2, B1 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* 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 RGB Underglow */ +#define RGB_DI_PIN F7 +#define RGBLED_NUM 64 +#define RGBLIGHT_EFFECT_BREATHING +#define RGBLIGHT_EFFECT_RAINBOW_MOOD +#define RGBLIGHT_EFFECT_RAINBOW_SWIRL +#define RGBLIGHT_EFFECT_SNAKE +#define RGBLIGHT_EFFECT_KNIGHT +#define RGBLIGHT_EFFECT_CHRISTMAS +#define RGBLIGHT_EFFECT_STATIC_GRADIENT +#define RGBLIGHT_EFFECT_RGB_TEST +#define RGBLIGHT_EFFECT_ALTERNATING +#define RGBLIGHT_EFFECT_TWINKLE +#define RGBLIGHT_LIMIT_VAL 108 +#define RGB_VAL_STEP 12 +#define RGBLIGHT_DEFAULT_SPD 144 +#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_SWIRL +/* #define RGBLIGHT_LAYER_BLINK*/ + +/* Define less important options */ + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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/fjlabs/tf60ansi/info.json b/keyboards/fjlabs/tf60ansi/info.json new file mode 100644 index 000000000000..4ed7aa91dcf1 --- /dev/null +++ b/keyboards/fjlabs/tf60ansi/info.json @@ -0,0 +1,76 @@ +{ + "keyboard_name": "TF60 ANSI", + "url": "https://www.fjlaboratories.com/", + "maintainer": "FJLabs", + "layouts": { + "LAYOUT_60_ansi": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0, "w": 2}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"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}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3}, + {"x": 12.25, "y": 3, "w": 2.75}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6.25}, + {"x": 10, "y": 4, "w": 1.25}, + {"x": 11.25, "y": 4, "w": 1.25}, + {"x": 12.5, "y": 4, "w": 1.25}, + {"x": 13.75, "y": 4, "w": 1.25} + ] + } + } +} diff --git a/keyboards/fjlabs/tf60ansi/keymaps/default/keymap.c b/keyboards/fjlabs/tf60ansi/keymaps/default/keymap.c new file mode 100644 index 000000000000..7873f0e5e5b5 --- /dev/null +++ b/keyboards/fjlabs/tf60ansi/keymaps/default/keymap.c @@ -0,0 +1,40 @@ +/* +Copyright 2021 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _LAYER0, + _LAYER1, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_LAYER0] = LAYOUT_60_ansi( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTRL + ), + + [_LAYER1] = LAYOUT_60_ansi( + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUSE, RESET, + KC_TRNS, RGB_SPI, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) + +}; \ No newline at end of file diff --git a/keyboards/fjlabs/tf60ansi/keymaps/via/keymap.c b/keyboards/fjlabs/tf60ansi/keymaps/via/keymap.c new file mode 100644 index 000000000000..2e4dac7fc2de --- /dev/null +++ b/keyboards/fjlabs/tf60ansi/keymaps/via/keymap.c @@ -0,0 +1,58 @@ +/* +Copyright 2021 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _LAYER0, + _LAYER1, + _LAYER2, + _LAYER3, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_LAYER0] = LAYOUT_60_ansi( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTRL + ), + + [_LAYER1] = LAYOUT_60_ansi( + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUSE, RESET, + KC_TRNS, RGB_SPI, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_LAYER2] = LAYOUT_60_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_LAYER3] = LAYOUT_60_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + +}; diff --git a/keyboards/fjlabs/tf60ansi/keymaps/via/rules.mk b/keyboards/fjlabs/tf60ansi/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/fjlabs/tf60ansi/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/fjlabs/tf60ansi/readme.md b/keyboards/fjlabs/tf60ansi/readme.md new file mode 100644 index 000000000000..29cbad3fca64 --- /dev/null +++ b/keyboards/fjlabs/tf60ansi/readme.md @@ -0,0 +1,27 @@ +# FJLabs TF60 ANSI + +The following is the QMK Firmware for the FJLabs TF60 ANSI PCB, a universal tray mount 60% hotswap PCB with per key RGB LED's. + +The PCB will feature: +* Kailh Hotswap sockets +* QMK & VIA compatibility +* Per-Key RGB LED's + +--- + +* Keyboard Maintainer: FJLabs +* Hardware Supported: TF60 ANSI + +Make example for this keyboard (after setting up your build environment): + + make fjlabs/tf60ansi:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `RESET` if it is available \ No newline at end of file diff --git a/keyboards/fjlabs/tf60ansi/rules.mk b/keyboards/fjlabs/tf60ansi/rules.mk new file mode 100644 index 000000000000..978e0a6a98c9 --- /dev/null +++ b/keyboards/fjlabs/tf60ansi/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = atmega32u4 + +# Processor frequency +F_CPU = 8000000 + +# 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 = no # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# 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/fjlabs/tf60ansi/tf60ansi.c b/keyboards/fjlabs/tf60ansi/tf60ansi.c new file mode 100644 index 000000000000..da31f8eaff74 --- /dev/null +++ b/keyboards/fjlabs/tf60ansi/tf60ansi.c @@ -0,0 +1,14 @@ +/* +Copyright 2021 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "tf60ansi.h" diff --git a/keyboards/fjlabs/tf60ansi/tf60ansi.h b/keyboards/fjlabs/tf60ansi/tf60ansi.h new file mode 100644 index 000000000000..bafc28891d18 --- /dev/null +++ b/keyboards/fjlabs/tf60ansi/tf60ansi.h @@ -0,0 +1,32 @@ +/* +Copyright 2021 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +/* TF60 ANSI Keymap Definitions */ +#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, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3C, \ + K40, K41, K42, K45, K49, K4A, 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, K3C, KC_NO }, \ + { K40, K41, K42, KC_NO, KC_NO, K45, KC_NO, KC_NO, KC_NO, K49, K4A, KC_NO, K4C, K4D } \ +} diff --git a/keyboards/fjlabs/tf60v2/config.h b/keyboards/fjlabs/tf60v2/config.h new file mode 100644 index 000000000000..11cb92a33fbc --- /dev/null +++ b/keyboards/fjlabs/tf60v2/config.h @@ -0,0 +1,121 @@ +/* +Copyright 2021 + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7074 // FJLabs +#define PRODUCT_ID 0x1005 // tf60v2 +#define DEVICE_VER 0x0001 // Version 1 +#define MANUFACTURER FJLabs +#define PRODUCT TF60v2 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/* + * 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) + * +*/ + +// Checked with Eagle Schematic +#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6 } +#define MATRIX_COL_PINS { C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, B3, B2, B1 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* 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 RGB Underglow */ +#define RGB_DI_PIN F7 +#define RGBLED_NUM 64 +#define RGBLIGHT_EFFECT_BREATHING +#define RGBLIGHT_EFFECT_RAINBOW_MOOD +#define RGBLIGHT_EFFECT_RAINBOW_SWIRL +#define RGBLIGHT_EFFECT_SNAKE +#define RGBLIGHT_EFFECT_KNIGHT +#define RGBLIGHT_EFFECT_CHRISTMAS +#define RGBLIGHT_EFFECT_STATIC_GRADIENT +#define RGBLIGHT_EFFECT_RGB_TEST +#define RGBLIGHT_EFFECT_ALTERNATING +#define RGBLIGHT_EFFECT_TWINKLE +#define RGBLIGHT_LIMIT_VAL 108 +#define RGB_VAL_STEP 12 +#define RGBLIGHT_DEFAULT_SPD 144 +#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_SWIRL +/* #define RGBLIGHT_LAYER_BLINK*/ + +/* Define less important options */ + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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/fjlabs/tf60v2/info.json b/keyboards/fjlabs/tf60v2/info.json new file mode 100644 index 000000000000..c2d6c0287257 --- /dev/null +++ b/keyboards/fjlabs/tf60v2/info.json @@ -0,0 +1,78 @@ +{ + "keyboard_name": "TF60 RGB V2", + "url": "https://www.fjlaboratories.com/", + "maintainer": "FJLabs", + "layouts": { + "LAYOUT_60_ansi_arrow": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0, "w": 2}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"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}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3, "w": 1.75}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6.25}, + {"x": 10, "y": 4}, + {"x": 11, "y": 4}, + {"x": 12, "y": 4}, + {"x": 13, "y": 4}, + {"x": 14, "y": 4} + ] + } + } +} diff --git a/keyboards/fjlabs/tf60v2/keymaps/default/keymap.c b/keyboards/fjlabs/tf60v2/keymaps/default/keymap.c new file mode 100644 index 000000000000..a725021a1c46 --- /dev/null +++ b/keyboards/fjlabs/tf60v2/keymaps/default/keymap.c @@ -0,0 +1,40 @@ +/* +Copyright 2021 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _LAYER0, + _LAYER1, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_LAYER0] = LAYOUT_60_ansi_arrow( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT + ), + + [_LAYER1] = LAYOUT_60_ansi_arrow( + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUSE, RESET, + KC_TRNS, RGB_SPI, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) + +}; \ No newline at end of file diff --git a/keyboards/fjlabs/tf60v2/keymaps/via/keymap.c b/keyboards/fjlabs/tf60v2/keymaps/via/keymap.c new file mode 100644 index 000000000000..5937f59e2652 --- /dev/null +++ b/keyboards/fjlabs/tf60v2/keymaps/via/keymap.c @@ -0,0 +1,58 @@ +/* +Copyright 2021 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _LAYER0, + _LAYER1, + _LAYER2, + _LAYER3, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_LAYER0] = LAYOUT_60_ansi_arrow( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT + ), + + [_LAYER1] = LAYOUT_60_ansi_arrow( + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUSE, RESET, + KC_TRNS, RGB_SPI, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_LAYER2] = LAYOUT_60_ansi_arrow( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_LAYER3] = LAYOUT_60_ansi_arrow( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + +}; diff --git a/keyboards/fjlabs/tf60v2/keymaps/via/rules.mk b/keyboards/fjlabs/tf60v2/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/fjlabs/tf60v2/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/fjlabs/tf60v2/readme.md b/keyboards/fjlabs/tf60v2/readme.md new file mode 100644 index 000000000000..22e624e68fc3 --- /dev/null +++ b/keyboards/fjlabs/tf60v2/readme.md @@ -0,0 +1,27 @@ +# FJLabs TF60 RGB V2 + +The following is the QMK Firmware for the FJLabs TF60 RGB V2 PCB, a universal tray mount 60% hotswap PCB with per key RGB LED's. + +The PCB will feature: +* Kailh Hotswap sockets +* QMK & VIA compatibility +* Per-Key RGB LED's + +--- + +* Keyboard Maintainer: FJLabs +* Hardware Supported: TF60 RGB V2 + +Make example for this keyboard (after setting up your build environment): + + make fjlabs/tf60v2: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). Y + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `RESET` if it is available \ No newline at end of file diff --git a/keyboards/fjlabs/tf60v2/rules.mk b/keyboards/fjlabs/tf60v2/rules.mk new file mode 100644 index 000000000000..1f6e2938b4f1 --- /dev/null +++ b/keyboards/fjlabs/tf60v2/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = atmega32u4 + +# Processor frequency +F_CPU = 8000000 + +# 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 = no # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# 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_arrow diff --git a/keyboards/fjlabs/tf60v2/tf60v2.c b/keyboards/fjlabs/tf60v2/tf60v2.c new file mode 100644 index 000000000000..7a73d6390181 --- /dev/null +++ b/keyboards/fjlabs/tf60v2/tf60v2.c @@ -0,0 +1,14 @@ +/* +Copyright 2021 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "tf60v2.h" diff --git a/keyboards/fjlabs/tf60v2/tf60v2.h b/keyboards/fjlabs/tf60v2/tf60v2.h new file mode 100644 index 000000000000..52ddffdffd37 --- /dev/null +++ b/keyboards/fjlabs/tf60v2/tf60v2.h @@ -0,0 +1,32 @@ +/* +Copyright 2021 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +/* TF60 ANSI Keymap Definitions */ +#define LAYOUT_60_ansi_arrow( \ + 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, K3C, K3D, \ + K40, K41, K42, K45, 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, KC_NO, K2D }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, KC_NO, K3C, K3D }, \ + { K40, K41, K42, KC_NO, KC_NO, K45, KC_NO, KC_NO, KC_NO, K49, K4A, K4B, K4C, K4D } \ +} diff --git a/keyboards/fjlabs/tf65rgbv2/config.h b/keyboards/fjlabs/tf65rgbv2/config.h new file mode 100644 index 000000000000..65e1932f436c --- /dev/null +++ b/keyboards/fjlabs/tf65rgbv2/config.h @@ -0,0 +1,121 @@ +/* +Copyright 2021 + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7074 // FJLabs +#define PRODUCT_ID 0x1007 // tf60v2 +#define DEVICE_VER 0x0001 // Version 1 +#define MANUFACTURER FJLabs +#define PRODUCT TF65RGBv2 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * 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) + * +*/ + +// Checked with Eagle Schematic +#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6 } +#define MATRIX_COL_PINS { C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, B3, B2, B1, D1 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* 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 RGB Underglow */ +#define RGB_DI_PIN F7 +#define RGBLED_NUM 68 +#define RGBLIGHT_EFFECT_BREATHING +#define RGBLIGHT_EFFECT_RAINBOW_MOOD +#define RGBLIGHT_EFFECT_RAINBOW_SWIRL +#define RGBLIGHT_EFFECT_SNAKE +#define RGBLIGHT_EFFECT_KNIGHT +#define RGBLIGHT_EFFECT_CHRISTMAS +#define RGBLIGHT_EFFECT_STATIC_GRADIENT +#define RGBLIGHT_EFFECT_RGB_TEST +#define RGBLIGHT_EFFECT_ALTERNATING +#define RGBLIGHT_EFFECT_TWINKLE +#define RGBLIGHT_LIMIT_VAL 96 +#define RGB_VAL_STEP 12 +#define RGBLIGHT_DEFAULT_SPD 144 +#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_SWIRL +/* #define RGBLIGHT_LAYER_BLINK*/ + +/* Define less important options */ + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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/fjlabs/tf65rgbv2/info.json b/keyboards/fjlabs/tf65rgbv2/info.json new file mode 100644 index 000000000000..fe91dcaec54a --- /dev/null +++ b/keyboards/fjlabs/tf65rgbv2/info.json @@ -0,0 +1,83 @@ +{ + "keyboard_name": "TF65 RGB V2", + "url": "https://www.fjlaboratories.com/", + "maintainer": "FJLabs", + "layouts": { + "LAYOUT_65_ansi": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0, "w": 2}, + {"x": 15, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + {"x": 13.5, "y": 1, "w": 1.5}, + {"x": 15, "y": 1}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + {"x": 15, "y": 2}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3}, + {"x": 12.25, "y": 3, "w": 1.75}, + {"x": 14, "y": 3}, + {"x": 15, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6.25}, + {"x": 10, "y": 4}, + {"x": 11, "y": 4}, + {"x": 12, "y": 4}, + {"x": 13, "y": 4}, + {"x": 14, "y": 4}, + {"x": 15, "y": 4} + ] + } + } +} diff --git a/keyboards/fjlabs/tf65rgbv2/keymaps/default/keymap.c b/keyboards/fjlabs/tf65rgbv2/keymaps/default/keymap.c new file mode 100644 index 000000000000..96c2351e89ed --- /dev/null +++ b/keyboards/fjlabs/tf65rgbv2/keymaps/default/keymap.c @@ -0,0 +1,40 @@ +/* +Copyright 2021 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _LAYER0, + _LAYER1, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_LAYER0] = LAYOUT_65_ansi( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT + ), + + [_LAYER1] = LAYOUT_65_ansi( + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUSE, RESET, KC_TRNS, + KC_TRNS, RGB_SPI, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) + +}; \ No newline at end of file diff --git a/keyboards/fjlabs/tf65rgbv2/keymaps/via/keymap.c b/keyboards/fjlabs/tf65rgbv2/keymaps/via/keymap.c new file mode 100644 index 000000000000..3e071bd079f8 --- /dev/null +++ b/keyboards/fjlabs/tf65rgbv2/keymaps/via/keymap.c @@ -0,0 +1,58 @@ +/* +Copyright 2021 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _LAYER0, + _LAYER1, + _LAYER2, + _LAYER3, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_LAYER0] = LAYOUT_65_ansi( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT + ), + + [_LAYER1] = LAYOUT_65_ansi( + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUSE, RESET, KC_TRNS, + KC_TRNS, RGB_SPI, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_LAYER2] = LAYOUT_65_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_LAYER3] = LAYOUT_65_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + +}; diff --git a/keyboards/fjlabs/tf65rgbv2/keymaps/via/rules.mk b/keyboards/fjlabs/tf65rgbv2/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/fjlabs/tf65rgbv2/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/fjlabs/tf65rgbv2/readme.md b/keyboards/fjlabs/tf65rgbv2/readme.md new file mode 100644 index 000000000000..0aea9ef8fd6e --- /dev/null +++ b/keyboards/fjlabs/tf65rgbv2/readme.md @@ -0,0 +1,27 @@ +# FJLabs TF65 RGB V2 + +The following is the QMK Firmware for the FJLabs TF65 RGB V2 PCB, a universal tray mount 65% hotswap PCB with per key RGB LED's. + +The PCB will feature: +* Kailh Hotswap sockets +* QMK & VIA compatibility +* Per-Key RGB LED's + +--- + +* Keyboard Maintainer: FJLabs +* Hardware Supported: TF65 RGB V2 + +Make example for this keyboard (after setting up your build environment): + + make fjlabs/tf65rgbv2:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `RESET` if it is available \ No newline at end of file diff --git a/keyboards/fjlabs/tf65rgbv2/rules.mk b/keyboards/fjlabs/tf65rgbv2/rules.mk new file mode 100644 index 000000000000..df37fa4b9932 --- /dev/null +++ b/keyboards/fjlabs/tf65rgbv2/rules.mk @@ -0,0 +1,25 @@ +# MCU name +MCU = atmega32u4 + +# Processor frequency +F_CPU = 8000000 + +# 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 = no # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# 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 = 65_ansi diff --git a/keyboards/fjlabs/tf65rgbv2/tf65rgbv2.c b/keyboards/fjlabs/tf65rgbv2/tf65rgbv2.c new file mode 100644 index 000000000000..637b6d05e816 --- /dev/null +++ b/keyboards/fjlabs/tf65rgbv2/tf65rgbv2.c @@ -0,0 +1,14 @@ +/* +Copyright 2021 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "tf65rgbv2.h" diff --git a/keyboards/fjlabs/tf65rgbv2/tf65rgbv2.h b/keyboards/fjlabs/tf65rgbv2/tf65rgbv2.h new file mode 100644 index 000000000000..434d15668819 --- /dev/null +++ b/keyboards/fjlabs/tf65rgbv2/tf65rgbv2.h @@ -0,0 +1,32 @@ +/* +Copyright 2021 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +/* TF60 ANSI Keymap Definitions */ +#define LAYOUT_65_ansi( \ + 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, K2D, K2E, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3C, K3D, K3E, \ + 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, K2E }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, K1E }, \ + { 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 } \ +} diff --git a/keyboards/flehrad/bigswitch/bigswitch.h b/keyboards/flehrad/bigswitch/bigswitch.h index ea3d51a1f3b7..c6c2f026d5cd 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 . */ -#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 b6fb15d3b711..c0f73366a748 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 . */ -#ifndef CONFIG_H -#define CONFIG_H + +#pragma once #include "config_common.h" @@ -52,5 +52,3 @@ along with this program. If not, see . #define RGBLIGHT_ANIMATIONS #define RGBLED_NUM 8 #endif - -#endif diff --git a/keyboards/flehrad/bigswitch/info.json b/keyboards/flehrad/bigswitch/info.json index 37095ade3c74..8b1411775a75 100644 --- a/keyboards/flehrad/bigswitch/info.json +++ b/keyboards/flehrad/bigswitch/info.json @@ -1,8 +1,6 @@ { "keyboard_name": "Bigswitch PCB", "maintainer": "qmk", - "width": 4, - "height": 4, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0, "w":4, "h":4}] diff --git a/keyboards/flehrad/bigswitch/rules.mk b/keyboards/flehrad/bigswitch/rules.mk index 88844733f063..7d597ee76a80 100644 --- a/keyboards/flehrad/bigswitch/rules.mk +++ b/keyboards/flehrad/bigswitch/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # Audio control and System control 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 = no # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work 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 diff --git a/keyboards/flehrad/downbubble/config.h b/keyboards/flehrad/downbubble/config.h index 26a30bee5505..b8d69244ebf6 100644 --- a/keyboards/flehrad/downbubble/config.h +++ b/keyboards/flehrad/downbubble/config.h @@ -117,54 +117,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -183,26 +135,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/flehrad/downbubble/info.json b/keyboards/flehrad/downbubble/info.json index a7e68e7f61b9..6314e4f9666d 100644 --- a/keyboards/flehrad/downbubble/info.json +++ b/keyboards/flehrad/downbubble/info.json @@ -1,8 +1,6 @@ { "keyboard_name": "downbubble", "maintainer": "flehrad", - "width": 22.75, - "height": 6, "layouts": { "LAYOUT_standard": { "layout": [ diff --git a/keyboards/flehrad/downbubble/keymaps/default/keymap.c b/keyboards/flehrad/downbubble/keymaps/default/keymap.c index 48303900fb81..6abe3d532f58 100644 --- a/keyboards/flehrad/downbubble/keymaps/default/keymap.c +++ b/keyboards/flehrad/downbubble/keymaps/default/keymap.c @@ -89,15 +89,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/flehrad/downbubble/rules.mk b/keyboards/flehrad/downbubble/rules.mk index 0d85f98c4118..58803509b9c6 100644 --- a/keyboards/flehrad/downbubble/rules.mk +++ b/keyboards/flehrad/downbubble/rules.mk @@ -2,30 +2,18 @@ MCU = at90usb1286 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config) -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/flehrad/numbrero/info.json b/keyboards/flehrad/numbrero/info.json index d2f7ebd031d0..f0bce2bda243 100644 --- a/keyboards/flehrad/numbrero/info.json +++ b/keyboards/flehrad/numbrero/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Numbrero", "url": "", "maintainer": "Flehrad", - "width": 5, - "height": 5, "layouts": { "LAYOUT_numbrero_numpad": { "layout": [ diff --git a/keyboards/flehrad/numbrero/keymaps/default/keymap.c b/keyboards/flehrad/numbrero/keymaps/default/keymap.c index 903ed8d88c55..35bc8cdc3709 100644 --- a/keyboards/flehrad/numbrero/keymaps/default/keymap.c +++ b/keyboards/flehrad/numbrero/keymaps/default/keymap.c @@ -18,13 +18,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; - -void matrix_init_user(void) { -} - -void matrix_scan_user(void) { -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} diff --git a/keyboards/flehrad/numbrero/rules.mk b/keyboards/flehrad/numbrero/rules.mk index d8340713977a..56a47b32125c 100644 --- a/keyboards/flehrad/numbrero/rules.mk +++ b/keyboards/flehrad/numbrero/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) +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 -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 diff --git a/keyboards/flehrad/snagpad/info.json b/keyboards/flehrad/snagpad/info.json index 6e3ab601a0ae..785eaa6a93c9 100644 --- a/keyboards/flehrad/snagpad/info.json +++ b/keyboards/flehrad/snagpad/info.json @@ -2,9 +2,6 @@ "keyboard_name": "Snagpad", "url": "", "maintainer": "Flehrad", - - "width": 4, - "height": 5, "layouts": { "LAYOUT_ortho_5x4": { diff --git a/keyboards/flehrad/snagpad/keymaps/default/keymap.c b/keyboards/flehrad/snagpad/keymaps/default/keymap.c index 7645b435c14d..28c980a44034 100644 --- a/keyboards/flehrad/snagpad/keymaps/default/keymap.c +++ b/keyboards/flehrad/snagpad/keymaps/default/keymap.c @@ -16,48 +16,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_P1, KC_P2, KC_P3, KC_P0, KC_PDOT, KC_PENT), }; - - -void matrix_init_user(void) { -} - -void matrix_scan_user(void) { -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - - if (usb_led & (1 << USB_LED_NUM_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_CAPS_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_SCROLL_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_COMPOSE)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_KANA)) { - - } else { - - } - -} diff --git a/keyboards/flehrad/snagpad/keymaps/via/keymap.c b/keyboards/flehrad/snagpad/keymaps/via/keymap.c index 7fa226de7773..c657f49be8be 100644 --- a/keyboards/flehrad/snagpad/keymaps/via/keymap.c +++ b/keyboards/flehrad/snagpad/keymaps/via/keymap.c @@ -29,48 +29,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) }; - - -void matrix_init_user(void) { -} - -void matrix_scan_user(void) { -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - - if (usb_led & (1 << USB_LED_NUM_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_CAPS_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_SCROLL_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_COMPOSE)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_KANA)) { - - } else { - - } - -} diff --git a/keyboards/flehrad/snagpad/rules.mk b/keyboards/flehrad/snagpad/rules.mk index fbc918ba4dd0..132a321e2b51 100644 --- a/keyboards/flehrad/snagpad/rules.mk +++ b/keyboards/flehrad/snagpad/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 -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 diff --git a/keyboards/flehrad/tradestation/config.h b/keyboards/flehrad/tradestation/config.h index 03c4fb122903..6b8f021ebc5f 100644 --- a/keyboards/flehrad/tradestation/config.h +++ b/keyboards/flehrad/tradestation/config.h @@ -1,3 +1,18 @@ +/* Copyright 2019 flehrad + * + * 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 "config_common.h" diff --git a/keyboards/flehrad/tradestation/info.json b/keyboards/flehrad/tradestation/info.json index 233eb6282ecf..cf0344c01bc4 100644 --- a/keyboards/flehrad/tradestation/info.json +++ b/keyboards/flehrad/tradestation/info.json @@ -2,14 +2,48 @@ "keyboard_name": "Tradestation", "url": "", "maintainer": "Flehrad", - "width": 4.375, - "height": 4.5, "layouts": { "LAYOUT_tradestation": { - "layout": [{"x":0, "y":0},{"x":1.125, "y":0},{"x":2.25, "y":0},{"x":3.375, "y":0},{"x":0, "y":1.1},{"x":1.125, "y":1.1},{"x":2.25, "y":1.1},{"x":3.375, "y":1.1},{"x":0, "y":2.25, "w":2},{"x":2.25, "y":2.25, "w":2},{"x":0, "y":3.5, "w":2},{"x":2.25, "y":3.5, "w":2}] + "layout": [ + {"x":0, "y":0}, + {"x":1.125, "y":0}, + {"x":2.25, "y":0}, + {"x":3.375, "y":0}, + + {"x":0, "y":1.1}, + {"x":1.125, "y":1.1}, + {"x":2.25, "y":1.1}, + {"x":3.375, "y":1.1}, + + {"x":0, "y":2.25, "w":2}, + {"x":2.25, "y":2.25, "w":2}, + + {"x":0, "y":3.5, "w":2}, + {"x":2.25, "y":3.5, "w":2} + ] }, "LAYOUT_ortho_4x4": { - "layout": [{"x":0, "y":0},{"x":1.125, "y":0},{"x":2.25, "y":0},{"x":3.375, "y":0},{"x":0, "y":1.1},{"x":1.125, "y":1.1},{"x":2.25, "y":1.1},{"x":3.375, "y":1.1},{"x":0, "y":2.25},{"x":1.125, "y":2.25},{"x":2.25, "y":2.25},{"x":3.375, "y":2.25},{"x":0, "y":3.5},{"x":1.125, "y":3.5},{"x":2.25, "y":3.5},{"x":3.375, "y":3.5}] + "layout": [ + {"x":0, "y":0}, + {"x":1.125, "y":0}, + {"x":2.25, "y":0}, + {"x":3.375, "y":0}, + + {"x":0, "y":1.1}, + {"x":1.125, "y":1.1}, + {"x":2.25, "y":1.1}, + {"x":3.375, "y":1.1}, + + {"x":0, "y":2.25}, + {"x":1.125, "y":2.25}, + {"x":2.25, "y":2.25}, + {"x":3.375, "y":2.25}, + + {"x":0, "y":3.5}, + {"x":1.125, "y":3.5}, + {"x":2.25, "y":3.5}, + {"x":3.375, "y":3.5} + ] } } } diff --git a/keyboards/flehrad/tradestation/keymaps/default/keymap.c b/keyboards/flehrad/tradestation/keymaps/default/keymap.c index 3497dcb94110..e0893d9bde2d 100644 --- a/keyboards/flehrad/tradestation/keymaps/default/keymap.c +++ b/keyboards/flehrad/tradestation/keymaps/default/keymap.c @@ -1,61 +1,27 @@ +/* Copyright 2019 flehrad + * + * 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. + */ + #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - LAYOUT_ortho_4x4( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [0] = LAYOUT_ortho_4x4( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), - LAYOUT_tradestation( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS), }; - - -void matrix_init_user(void) { -} - -void matrix_scan_user(void) { -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - - if (usb_led & (1 << USB_LED_NUM_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_CAPS_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_SCROLL_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_COMPOSE)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_KANA)) { - - } else { - - } - -} diff --git a/keyboards/flehrad/tradestation/keymaps/tradestation/keymap.c b/keyboards/flehrad/tradestation/keymaps/tradestation/keymap.c new file mode 100644 index 000000000000..344b446f19d0 --- /dev/null +++ b/keyboards/flehrad/tradestation/keymaps/tradestation/keymap.c @@ -0,0 +1,27 @@ +/* Copyright 2019 flehrad + * + * 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. + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_tradestation( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS + ), + +}; diff --git a/keyboards/flehrad/tradestation/rules.mk b/keyboards/flehrad/tradestation/rules.mk index cf6c47d74bd2..ef7ff08bbeba 100644 --- a/keyboards/flehrad/tradestation/rules.mk +++ b/keyboards/flehrad/tradestation/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options -# comment out to disable the options. +# change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) +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 -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 diff --git a/keyboards/flehrad/tradestation/tradestation.c b/keyboards/flehrad/tradestation/tradestation.c index a3285a2cc870..bd572db83fe7 100644 --- a/keyboards/flehrad/tradestation/tradestation.c +++ b/keyboards/flehrad/tradestation/tradestation.c @@ -1 +1,16 @@ +/* Copyright 2019 flehrad + * + * 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. + */ + #include "tradestation.h" diff --git a/keyboards/flehrad/tradestation/tradestation.h b/keyboards/flehrad/tradestation/tradestation.h index 60b53b7ddf15..8061432596ad 100644 --- a/keyboards/flehrad/tradestation/tradestation.h +++ b/keyboards/flehrad/tradestation/tradestation.h @@ -1,3 +1,18 @@ +/* Copyright 2019 flehrad + * + * 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 "quantum.h" diff --git a/keyboards/fleuron/config.h b/keyboards/fleuron/config.h index 70772b883f99..fae7d941aea3 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -91,54 +90,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -157,28 +108,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - #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.c b/keyboards/fleuron/fleuron.c index 12f950f367bc..babdb23c5d34 100644 --- a/keyboards/fleuron/fleuron.c +++ b/keyboards/fleuron/fleuron.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "fleuron.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/fleuron/fleuron.h b/keyboards/fleuron/fleuron.h index abdccf2371af..38f6bb38bfd5 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 . */ -#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/fleuron/info.json b/keyboards/fleuron/info.json index 78fe64e3a1bc..2bb31b852b4b 100644 --- a/keyboards/fleuron/info.json +++ b/keyboards/fleuron/info.json @@ -1,8 +1,6 @@ { "keyboard_name": "Fleuron v1.0", "maintainer": "qmk", - "width": 16, - "height": 6, "layouts": { "LAYOUT_ortho_6x16": { "layout": [ diff --git a/keyboards/fleuron/keymaps/default/keymap.c b/keyboards/fleuron/keymaps/default/keymap.c index 367ee4895077..6240312b3755 100644 --- a/keyboards/fleuron/keymaps/default/keymap.c +++ b/keyboards/fleuron/keymaps/default/keymap.c @@ -151,15 +151,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/fleuron/rules.mk b/keyboards/fleuron/rules.mk index b18c5723aef8..752692eca293 100644 --- a/keyboards/fleuron/rules.mk +++ b/keyboards/fleuron/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes diff --git a/keyboards/fluorite/config.h b/keyboards/fluorite/config.h index 4d05975aefcb..9be300868410 100644 --- a/keyboards/fluorite/config.h +++ b/keyboards/fluorite/config.h @@ -117,58 +117,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -187,26 +135,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/fluorite/info.json b/keyboards/fluorite/info.json index 46f726ed80d7..d816a6b2513e 100644 --- a/keyboards/fluorite/info.json +++ b/keyboards/fluorite/info.json @@ -2,8 +2,6 @@ "keyboard_name": "fluorite", "url": "", "maintainer": "ihotsuno, qmk", - "width": 24, - "height": 9, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/fluorite/rules.mk b/keyboards/fluorite/rules.mk index 12370035132f..8d24fece74e1 100644 --- a/keyboards/fluorite/rules.mk +++ b/keyboards/fluorite/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = yes diff --git a/keyboards/flx/lodestone/info.json b/keyboards/flx/lodestone/info.json index 4d32bf37ca8a..8053aa36d465 100644 --- a/keyboards/flx/lodestone/info.json +++ b/keyboards/flx/lodestone/info.json @@ -2,8 +2,6 @@ "keyboard_name": "lodestone", "url": "https://prototypist.net/", "maintainer": "Flexerm", - "width": 16, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/flx/lodestone/rules.mk b/keyboards/flx/lodestone/rules.mk index 70c9bc8bdec0..b08842d2d64d 100644 --- a/keyboards/flx/lodestone/rules.mk +++ b/keyboards/flx/lodestone/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LTO_ENABLE = yes LAYOUTS = 65_ansi_blocker 65_ansi_blocker_split_bs 65_iso_blocker 65_iso_blocker_split_bs diff --git a/keyboards/flx/virgo/config.h b/keyboards/flx/virgo/config.h index cd1a8d7b0bb8..8ceb1e4ed15b 100644 --- a/keyboards/flx/virgo/config.h +++ b/keyboards/flx/virgo/config.h @@ -70,6 +70,3 @@ along with this program. If not, see . #define RGBLIGHT_EFFECT_RGB_TEST #define RGBLIGHT_EFFECT_ALTERNATING #endif - -// generated by KBFirmware JSON to QMK Parser -// https://noroadsleft.github.io/kbf_qmk_converter/ diff --git a/keyboards/flx/virgo/info.json b/keyboards/flx/virgo/info.json index 0bd70af63963..5184e4fb15fd 100644 --- a/keyboards/flx/virgo/info.json +++ b/keyboards/flx/virgo/info.json @@ -1,9 +1,7 @@ { "keyboard_name": "FLX Virgo", "url": "", - "maintainer": "qmk", - "width": 20.25, - "height": 6.25, + "maintainer": "mechmerlin", "layouts": { "LAYOUT": { "layout": [ @@ -101,5 +99,4 @@ ] } } - ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/" -} \ No newline at end of file +} diff --git a/keyboards/flx/virgo/rules.mk b/keyboards/flx/virgo/rules.mk index 381040642c1c..26c913e342ce 100644 --- a/keyboards/flx/virgo/rules.mk +++ b/keyboards/flx/virgo/rules.mk @@ -2,31 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LTO_ENABLE = yes diff --git a/keyboards/flx/virgo/virgo.c b/keyboards/flx/virgo/virgo.c index 142ddf3ebc05..679f90fb6651 100644 --- a/keyboards/flx/virgo/virgo.c +++ b/keyboards/flx/virgo/virgo.c @@ -25,20 +25,6 @@ void matrix_init_kb(void) { matrix_init_user(); } -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - bool led_update_kb(led_t led_state) { if(led_update_user(led_state)) { writePin(E6, !led_state.caps_lock); diff --git a/keyboards/flxlb/zplit/info.json b/keyboards/flxlb/zplit/info.json index 7cf3f0078a39..e21f740f35d5 100644 --- a/keyboards/flxlb/zplit/info.json +++ b/keyboards/flxlb/zplit/info.json @@ -1,12 +1,62 @@ { - "keyboard_name": "zplit", - "url": "https://github.com/cccywj/qmk_firmware", - "maintainer": "flxlb", - "width": 13, - "height": 4, - "layouts": { - "LAYOUT": { - "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":12, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}, {"x":12, "y":3}] + "keyboard_name": "zplit", + "url": "https://github.com/cccywj/qmk_firmware", + "maintainer": "flxlb", + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":7, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + {"x":12, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + {"x":7, "y":2}, + {"x":8, "y":2}, + {"x":9, "y":2}, + {"x":10, "y":2}, + {"x":11, "y":2}, + {"x":12, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3}, + {"x":7, "y":3}, + {"x":8, "y":3}, + {"x":9, "y":3}, + {"x":10, "y":3}, + {"x":11, "y":3}, + {"x":12, "y":3} + ] + } } - } } diff --git a/keyboards/flxlb/zplit/keymaps/default/config.h b/keyboards/flxlb/zplit/keymaps/default/config.h new file mode 100644 index 000000000000..a157047f7a16 --- /dev/null +++ b/keyboards/flxlb/zplit/keymaps/default/config.h @@ -0,0 +1,28 @@ +/* +This is the c configuration file for the keymap + +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +//#define USE_I2C + +/* Select hand configuration */ +#define MASTER_LEFT +// #define MASTER_RIGHT +// #define EE_HANDS diff --git a/keyboards/flxlb/zplit/keymaps/default/keymap.c b/keyboards/flxlb/zplit/keymaps/default/keymap.c new file mode 100644 index 000000000000..097b1eeed621 --- /dev/null +++ b/keyboards/flxlb/zplit/keymaps/default/keymap.c @@ -0,0 +1,80 @@ +/* Copyright 2021 FluxLab + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +enum custom_layers { + _QWERTY, + _LOWER, + _RAISE, + _ADJUST, +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) +#define ADJUST MO(_ADJUST) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Qwerty */ +[_QWERTY] = LAYOUT( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MUTE, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_DEL, LOWER, KC_SPC, KC_BSPC, RAISE, KC_LBRC, KC_RBRC, KC_QUOT, KC_MINS +), + +/* Lower */ +[_LOWER] = LAYOUT( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, + _______, _______, _______, KC_UP, _______, _______, _______, KC_4, KC_5, KC_6, _______, _______, + _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_1, KC_2, KC_3, KC_BSLS, _______, + _______, _______, _______, _______, LOWER, _______, _______, KC_0, KC_0, KC_DOT, KC_BSLS, KC_EQL +), + +/* Raise */ +[_RAISE] = LAYOUT( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, _______, RGB_TOG, _______, _______, _______, _______, _______, _______, + RGB_HUD, RGB_SAD, RGB_VAD, RGB_RMOD,_______, RGB_TOG, _______, _______, _______, _______, KC_UP, _______, + _______, _______, _______, _______, _______, _______, _______, RAISE, _______, KC_LEFT, KC_DOWN, KC_RGHT +), + +/* Adjust (Lower + Raise) */ +[_ADJUST] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +) + +}; + +layer_state_t layer_state_set_user(layer_state_t state) { + return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); +} + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (clockwise) { + tap_code(KC_VOLD); + } else { + tap_code(KC_VOLU); + } + return true; +} diff --git a/keyboards/flxlb/zplit/keymaps/via/keymap.c b/keyboards/flxlb/zplit/keymaps/via/keymap.c index 6c5651be4db2..7d6e948fe9db 100644 --- a/keyboards/flxlb/zplit/keymaps/via/keymap.c +++ b/keyboards/flxlb/zplit/keymaps/via/keymap.c @@ -34,34 +34,34 @@ enum custom_layers { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Qwerty */ [_QWERTY] = LAYOUT( - KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MUTE, - KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT , - KC_LCTL, KC_LGUI, KC_LALT, KC_DEL, LOWER, KC_SPC, KC_BSPC, RAISE, KC_LBRC, KC_RBRC, KC_QUOT, KC_MINS + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MUTE, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_DEL, LOWER, KC_SPC, KC_BSPC, RAISE, KC_LBRC, KC_RBRC, KC_QUOT, KC_MINS ), /* Lower */ [_LOWER] = LAYOUT( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, - _______, _______, _______, KC_UP, _______, _______, _______, KC_4, KC_5, KC_6, _______, _______, - _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______,KC_1,KC_2,KC_3, KC_BSLS, _______, - _______, _______, _______, _______, LOWER, _______, _______, KC_0,KC_0, KC_DOT, KC_BSLS,KC_EQL + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, + _______, _______, _______, KC_UP, _______, _______, _______, KC_4, KC_5, KC_6, _______, _______, + _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_1, KC_2, KC_3, KC_BSLS, _______, + _______, _______, _______, _______, LOWER, _______, _______, KC_0, KC_0, KC_DOT, KC_BSLS, KC_EQL ), /* Raise */ [_RAISE] = LAYOUT( - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, - RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, _______, RGB_TOG, _______, _______, _______, _______, _______, _______, - RGB_HUD, RGB_SAD, RGB_VAD, RGB_RMOD, _______, RGB_TOG, _______, _______, _______, _______, KC_UP, _______, - _______, _______, _______, _______, _______, _______, _______, RAISE, _______, KC_LEFT, KC_DOWN, KC_RGHT + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, _______, RGB_TOG, _______, _______, _______, _______, _______, _______, + RGB_HUD, RGB_SAD, RGB_VAD, RGB_RMOD,_______, RGB_TOG, _______, _______, _______, _______, KC_UP, _______, + _______, _______, _______, _______, _______, _______, _______, RAISE, _______, KC_LEFT, KC_DOWN, KC_RGHT ), /* Adjust (Lower + Raise) */ -[_ADJUST] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +[_ADJUST] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) diff --git a/keyboards/flxlb/zplit/keymaps/via/rules.mk b/keyboards/flxlb/zplit/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/flxlb/zplit/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/flxlb/zplit/rules.mk b/keyboards/flxlb/zplit/rules.mk index 121bba1dfcc0..cb72ee2f366b 100644 --- a/keyboards/flxlb/zplit/rules.mk +++ b/keyboards/flxlb/zplit/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes SPLIT_KEYBOARD = yes diff --git a/keyboards/flygone60/rev3/config.h b/keyboards/flygone60/rev3/config.h new file mode 100644 index 000000000000..e398b1dc608f --- /dev/null +++ b/keyboards/flygone60/rev3/config.h @@ -0,0 +1,60 @@ +/* +Copyright 2021 ShandonCodes + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7877 +#define PRODUCT_ID 0x0001 +#define DEVICE_VER 0x0003 +#define MANUFACTURER ShandonCodes +#define PRODUCT Flygone60 Rev3 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/* + * 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 { D2, D3, D5, B7, F1} +#define MATRIX_COL_PINS { F0, E6, B1, B2, B3, B0, D4, D6, D7, B4, B5, B6, C6, C7} +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/flygone60/rev3/info.json b/keyboards/flygone60/rev3/info.json new file mode 100644 index 000000000000..fdae44c6b448 --- /dev/null +++ b/keyboards/flygone60/rev3/info.json @@ -0,0 +1,78 @@ +{ + "keyboard_name": "Flygone60 Rev3", + "url": "https://qmk.fm/keyboards/", + "maintainer": "ShandonCodes", + "layouts": { + "LAYOUT_60_ansi_arrow": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0, "w": 2}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"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}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3, "w": 1.75}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6.25}, + {"x": 10, "y": 4}, + {"x": 11, "y": 4}, + {"x": 12, "y": 4}, + {"x": 13, "y": 4}, + {"x": 14, "y": 4} + ] + } + } +} diff --git a/keyboards/flygone60/rev3/keymaps/default/keymap.c b/keyboards/flygone60/rev3/keymaps/default/keymap.c new file mode 100644 index 000000000000..ab6b2a9f01fe --- /dev/null +++ b/keyboards/flygone60/rev3/keymaps/default/keymap.c @@ -0,0 +1,70 @@ +/* Copyright 2021 ShandonCodes + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN +}; + +// Defines the keycodes used by our macros in process_record_user +enum custom_keycodes { + SHILL = SAFE_RANGE, + NUT, + FRACNO +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT_60_ansi_arrow( + KC_ESCAPE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, KC_BSPACE, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRACKET, KC_RBRACKET, KC_BSLASH, + KC_CAPSLOCK, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCOLON, KC_QUOTE, KC_ENTER, + KC_LSHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_RSHIFT, KC_UP, KC_SLASH, + KC_LCTRL, KC_LGUI, KC_LALT, KC_SPACE, KC_RALT, MO(_FN), KC_LEFT, KC_DOWN, KC_RIGHT + ), + [_FN] = LAYOUT_60_ansi_arrow( + KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DELETE, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, SHILL, XXXXXXX, FRACNO, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, NUT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + ) +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case SHILL: + if (record->event.pressed) { + SEND_STRING("Subscribe to ShandonCodes Kappa\n"); + } + return false; + + case NUT: + if (record->event.pressed) { + SEND_STRING("Hey Nutina HeyGuys\n"); + } + return false; + + case FRACNO: + if (record->event.pressed) { + SEND_STRING("Oh my GODDD!!!\n"); + } + return false; + } + return true; +} diff --git a/keyboards/flygone60/rev3/keymaps/default/readme.md b/keyboards/flygone60/rev3/keymaps/default/readme.md new file mode 100644 index 000000000000..91ea23c734e2 --- /dev/null +++ b/keyboards/flygone60/rev3/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for flygone60 diff --git a/keyboards/flygone60/rev3/keymaps/via/keymap.c b/keyboards/flygone60/rev3/keymaps/via/keymap.c new file mode 100644 index 000000000000..309c8733564c --- /dev/null +++ b/keyboards/flygone60/rev3/keymaps/via/keymap.c @@ -0,0 +1,86 @@ +/* Copyright 2021 ShandonCodes + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _0, + _1, + _2, + _3 +}; + +// Defines the keycodes used by our macros in process_record_user +enum custom_keycodes { + SHILL = USER00, + NUT, + FRACNO +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_0] = LAYOUT_60_ansi_arrow( + KC_ESCAPE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, KC_BSPACE, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRACKET, KC_RBRACKET, KC_BSLASH, + KC_CAPSLOCK, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCOLON, KC_QUOTE, KC_ENTER, + KC_LSHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_RSHIFT, KC_UP, KC_SLASH, + KC_LCTRL, KC_LGUI, KC_LALT, KC_SPACE, KC_RALT, MO(_1), KC_LEFT, KC_DOWN, KC_RIGHT + ), + [_1] = LAYOUT_60_ansi_arrow( + KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DELETE, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, SHILL, XXXXXXX, FRACNO, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, NUT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + ), + [_2] = LAYOUT_60_ansi_arrow( + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + ), + [_3] = LAYOUT_60_ansi_arrow( + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + ) +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case SHILL: + if (record->event.pressed) { + SEND_STRING("Subscribe to ShandonCodes Kappa\n"); + } + return false; + + case NUT: + if (record->event.pressed) { + SEND_STRING("Hey Nutina HeyGuys\n"); + } + return false; + + case FRACNO: + if (record->event.pressed) { + SEND_STRING("OH MY GODDD!!!\n"); + } + return false; + } + return true; +} diff --git a/keyboards/ergodone/keymaps/via/rules.mk b/keyboards/flygone60/rev3/keymaps/via/rules.mk similarity index 100% rename from keyboards/ergodone/keymaps/via/rules.mk rename to keyboards/flygone60/rev3/keymaps/via/rules.mk diff --git a/keyboards/flygone60/rev3/readme.md b/keyboards/flygone60/rev3/readme.md new file mode 100644 index 000000000000..d5e8cbcc2515 --- /dev/null +++ b/keyboards/flygone60/rev3/readme.md @@ -0,0 +1,19 @@ +# flygone60 + +![Flygone60](https://i.imgur.com/x63gMG2h.jpeg) + +A 60% that takes arrow keys seriously! + +* Keyboard Maintainer: [ShandonCodes](https://github.com/ShandonCodes) +* Hardware Supported: Flygone60 +* Hardware Availability: [Kit](https://www.etsy.com/listing/1025415290/flygone60-keyboard-kit?ga_order=most_relevant&ga_search_type=all&ga_view_type=gallery&ga_search_query=flygone60&ref=sr_gallery-1-13&organic_search_click=1&frs=1) + +Make example for this keyboard (after setting up your build environment): + + make flygone60/rev3:default + +Flashing example for this keyboard: + + make flygone60/rev3:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/flygone60/rev3/rev3.c b/keyboards/flygone60/rev3/rev3.c new file mode 100644 index 000000000000..0de52610ae3c --- /dev/null +++ b/keyboards/flygone60/rev3/rev3.c @@ -0,0 +1,17 @@ +/* Copyright 2021 ShandonCodes + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "rev3.h" diff --git a/keyboards/flygone60/rev3/rev3.h b/keyboards/flygone60/rev3/rev3.h new file mode 100644 index 000000000000..66d738dc4736 --- /dev/null +++ b/keyboards/flygone60/rev3/rev3.h @@ -0,0 +1,41 @@ +/* Copyright 2021 ShandonCodes + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT_60_ansi_arrow( \ + 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, k3c, \ + k40, k41, k42, k45, k48, k49, k4a, k4b, k4c \ +) { \ + { 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, KC_NO}, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, KC_NO}, \ + { k40, k41, k42, KC_NO, KC_NO, k45, KC_NO, KC_NO, k48, k49, k4a, k4b, k4c, KC_NO} \ +} diff --git a/keyboards/flygone60/rev3/rules.mk b/keyboards/flygone60/rev3/rules.mk new file mode 100644 index 000000000000..ac882f750ace --- /dev/null +++ b/keyboards/flygone60/rev3/rules.mk @@ -0,0 +1,21 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +LAYOUTS = 60_ansi_arrow diff --git a/keyboards/foostan/cornelius/info.json b/keyboards/foostan/cornelius/info.json index 3df1269e944c..adb20ded531b 100644 --- a/keyboards/foostan/cornelius/info.json +++ b/keyboards/foostan/cornelius/info.json @@ -2,8 +2,6 @@ "keyboard_name":"cornelius", "url":"", "maintainer":"foostan", - "width":14, - "height":8.5, "layouts":{ "LAYOUT":{ "layout":[ diff --git a/keyboards/foostan/cornelius/keymaps/gipsy-king/keymap.c b/keyboards/foostan/cornelius/keymaps/gipsy-king/keymap.c new file mode 100644 index 000000000000..8f6adffa2e97 --- /dev/null +++ b/keyboards/foostan/cornelius/keymaps/gipsy-king/keymap.c @@ -0,0 +1,102 @@ +/* Copyright 2021 gipsy-king + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Raise layer or enter on tap +#define RAISE LT(1, KC_ENT) +// Xmonad layer with LGUI always on +#define MOD4 LM(2, MOD_LGUI) +// Oneshot +#define ONESHOT OSL(3) +// Mic-mute-tap or Fn layer (F20 is mic-mute on thinkpads) +#define FNLAY LT(3, KC_F20) + +enum custom_keycodes { + EMAIL = SAFE_RANGE, + EMAIL_W, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Qwerty + * .-----------------------------------------------------------------------------------. + * | Tab | Q | W | E | R | T | Y | U | I | O | P |Backsp| + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | ' | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | - | Z | X | C | V | B | N | M | , | . | / | = | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | LCTR | LGUI | LALT | MOD4 | ^( | Space|Ent/Ra| ^) | RALT | MUTE | RGUI | RCTR | + * '-----------------------------------------------------------------------------------' + */ +[0] = LAYOUT( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, + KC_MINS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_EQL, + KC_LCTL,KC_LALT,KC_LGUI,MOD4, KC_LSPO,KC_SPC, RAISE, KC_RSPC,KC_RALT,KC_RGUI,FNLAY, KC_RCTL +), +/* Raise + * .-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | ~ | { | PgUp | PgDn | End | Home | <- | \/ | /\ | -> | } | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | [ | ! | @ | # | $ | % | ^ | & | * | ( | ) | ] | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + * '-----------------------------------------------------------------------------------' + */ +[1] = LAYOUT( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, + KC_TILD,KC_LCBR,KC_PGUP,KC_PGDN,KC_END, KC_HOME,KC_LEFT,KC_DOWN,KC_UP, KC_RGHT,KC_RCBR,KC_PIPE, + KC_LBRC,KC_EXLM,KC_AT, KC_HASH,KC_DLR, KC_PERC,KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_RBRC, + _______,_______,_______,_______,_______,_______,_______,_______,_______,ONESHOT,_______,_______ +), +/* XMONAD + * Top row: Quit, Workspace shortcuts, Run + * Middle row: Float, HJKL + * Bottom row: Shift, Close, Border, Keyboard reset + * Thumbs: Estra shifts, Space, Enter, Shifts + */ +[2] = LAYOUT( + KC_Q, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_P, KC_MUTE, + KC_LSFT,_______,_______,_______,_______,KC_T, KC_H, KC_J, KC_K, KC_L, _______,_______, + KC_LSFT,_______,_______,KC_C, _______,KC_B, _______,_______,_______,_______,_______,_______, + _______,_______,_______,KC_LSFT,KC_LSFT,KC_SPC, KC_ENT, KC_LSFT,_______,_______,KC_VOLD,KC_VOLU +), +/* Fn + * Some macros, Keyboard-reset, mouse and audio. + */ +[3] = LAYOUT( + _______,_______,EMAIL_W,EMAIL, _______,_______,_______,_______,_______,_______,_______,RESET, + _______,_______,_______,_______,_______,_______,KC_MS_L,KC_MS_D,KC_MS_U,KC_MS_R,_______,_______, + _______,_______,_______,_______,_______,_______,KC_BTN1,KC_MUTE,KC_VOLD,KC_VOLU,KC_BRID,KC_BRIU, + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ +) +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (record->event.pressed) { + switch (keycode) { + case EMAIL: + SEND_STRING("ste3ls@gmail.com"); + break; + case EMAIL_W: + SEND_STRING("benjamin@midokura.com"); + break; + } + } + return true; +}; diff --git a/keyboards/foostan/cornelius/keymaps/gipsy-king/readme.md b/keyboards/foostan/cornelius/keymaps/gipsy-king/readme.md new file mode 100644 index 000000000000..f0bce9fc95f0 --- /dev/null +++ b/keyboards/foostan/cornelius/keymaps/gipsy-king/readme.md @@ -0,0 +1,39 @@ +# Gipsy-King's Cornelius layout + +Common typing only needs a base and a symbols layer. Layer changes are on the +thumbs *including* shift and non-english variants. + +The importance of having shift on your thumbs is that you don't need to press +some letters with pinky OR ring, depending on shift. + +## Base QWERTY layer + +* Tab, Backspace, Space, Ctrl/Alt/Mod are similar to a generic keyboard. +* Esc is like when you remap CapsLock to Esc on a generic keyboard (vim). +* Enter is on right thumb and raises Symbol layer on hold, because you rarely + hold. +* Shifts are on both thumbs! +* Leftmost thumb changes to Xmonad window management layer. +* Rightmost thumb is Right-Alt which is for `us-intl-altgr` layout (althoug I + use kmonad to universally map international characters on all keyboards). +* `-` and `=` are on the lower pinkies. +* `F20` is mic-mute on my thinkpad laptop. + +## Symbol layer (Raise) + +* Top row is numbers, bottom row are their symbols. Most people do it the other + way 'round. +* Middle row has curly brackets, and some navigation and arrows. +* Square brackets are on the lower pinkies. +* ```~\|`` are places aroung top/outer corners. + +## Xmonad layer (Window management) + +I use Xmonad to completely manage windows with just my keyboard. This layer +accommodates most shortcuts. + +## Fn layer + +Lastly, some macros, mousekeys (not used, really), some media keys, and the +function-keys (I use them maybe once in a decade). + diff --git a/keyboards/foostan/cornelius/keymaps/hvp/config.h b/keyboards/foostan/cornelius/keymaps/hvp/config.h new file mode 100644 index 000000000000..ea23adfab5f2 --- /dev/null +++ b/keyboards/foostan/cornelius/keymaps/hvp/config.h @@ -0,0 +1,20 @@ +/* Copyright 2018 Carlos Filoteo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once +#define TAPPING_TERM 200 +#define TAPPING_TERM_PER_KEY +#define IGNORE_MOD_TAP_INTERRUPT \ No newline at end of file diff --git a/keyboards/foostan/cornelius/keymaps/hvp/keymap.c b/keyboards/foostan/cornelius/keymaps/hvp/keymap.c new file mode 100644 index 000000000000..bac74edbce3e --- /dev/null +++ b/keyboards/foostan/cornelius/keymaps/hvp/keymap.c @@ -0,0 +1,66 @@ +/* Copyright 2020 foostan + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +#include "hvp.c" + +#define LT3_ESC LT(3, KC_ESC) +#define LT4_TAB LT(5, KC_TAB) +#define LT2 LT(2, KC_LEFT_CURLY_BRACE) +#define LT1 LT(1, KC_RIGHT_CURLY_BRACE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT( + LT4_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + LT3_ESC, MT(MOD_LGUI, KC_A), MT(MOD_LALT, KC_S), MT(MOD_LSFT, KC_D), MT(MOD_LCTL, KC_F), LT(4,KC_G), MT(MOD_RCTL, KC_H), MT(MOD_RSFT, KC_J), MT(MOD_RALT,KC_K), MT(MOD_RGUI,KC_L), TD(TD1), TD(TD2), + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, TD(TD3), KC_SFTENT, + KC_LCPO, KC_LCTL, KC_LGUI, KC_LALT, LT2, KC_SPC, KC_ENT, LT1, KC_RALT, KC_RGUI, KC_RCTL, KC_RSPC + ), + +[1] = LAYOUT( /* Right */ + KC_TILDE, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_DEL, KC_LGUI, KC_LALT, KC_LSFT, KC_LCTL, XXXXXXX, KC_MINS, KC_EQL, KC_LCBR, KC_RCBR, KC_PIPE, KC_GRV, + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDS, KC_PLUS, KC_LBRC, KC_RBRC, KC_BSLS, KC_TILD, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +[2] = LAYOUT( /* Left */ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_DEL, KC_LGUI, KC_LALT, KC_LSFT, KC_LCTL, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, XXXXXXX, XXXXXXX, + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_PGDN, KC_PGUP, KC_END, XXXXXXX, XXXXXXX, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +[3] = LAYOUT( /* Esc */ + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + KC_DELETE, KC_LGUI, KC_LALT, KC_LSFT, KC_LCTL, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, XXXXXXX, XXXXXXX, + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______, + _______, _______, _______, _______, _______, KC_MUTE, KC_MPLY, KC_MSTP, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT + ), + +[4] = LAYOUT( + _______, LGUI(KC_1), LGUI(KC_2), LGUI(KC_3), LGUI(KC_4), LGUI(KC_5), LGUI(KC_6), LGUI(KC_7), KC_7, KC_8, KC_9, KC_BSPC, + _______, _______, _______, _______, _______, _______, _______, XXXXXXX, KC_4, KC_5, KC_6, KC_0, + _______, _______, _______, _______, _______, _______, XXXXXXX, KC_0, KC_1, KC_2, KC_3, _______, + RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +[5] = LAYOUT( + _______, G(S(KC_1)), G(S(KC_2)), G(S(KC_3)), G(S(KC_4)), G(S(KC_5)), G(S(KC_6)), G(S(KC_7)), G(S(KC_8)), G(S(KC_9)), G(S(KC_0)), _______, + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + KC_PSCR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_CAPS, + RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_NLCK + ), +}; diff --git a/keyboards/foostan/cornelius/keymaps/hvp/readme.md b/keyboards/foostan/cornelius/keymaps/hvp/readme.md new file mode 100644 index 000000000000..cb35bd8a29d9 --- /dev/null +++ b/keyboards/foostan/cornelius/keymaps/hvp/readme.md @@ -0,0 +1 @@ +# The default keymap for cornelius diff --git a/keyboards/foostan/cornelius/keymaps/hvp/rules.mk b/keyboards/foostan/cornelius/keymaps/hvp/rules.mk new file mode 100644 index 000000000000..1ba2fa8fbefa --- /dev/null +++ b/keyboards/foostan/cornelius/keymaps/hvp/rules.mk @@ -0,0 +1 @@ +TAP_DANCE_ENABLE = yes \ No newline at end of file diff --git a/keyboards/foostan/cornelius/rules.mk b/keyboards/foostan/cornelius/rules.mk index 5c0d8f307c54..d2109f62500b 100644 --- a/keyboards/foostan/cornelius/rules.mk +++ b/keyboards/foostan/cornelius/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/for_science/config.h b/keyboards/for_science/config.h index 8c9c49d16493..7428e5a564fa 100644 --- a/keyboards/for_science/config.h +++ b/keyboards/for_science/config.h @@ -55,10 +55,6 @@ along with this program. If not, see . //#define MASTER_RIGHT -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - /* * Feature disable options * These options are also useful to firmware size reduction. diff --git a/keyboards/for_science/info.json b/keyboards/for_science/info.json index de92f0eca222..1dd1f6cd8f92 100644 --- a/keyboards/for_science/info.json +++ b/keyboards/for_science/info.json @@ -2,8 +2,6 @@ "keyboard_name": "For Science", "url": "https://github.com/peej/for-science-keyboard", "maintainer": "qmk", - "width": 11.25, - "height": 5, "layouts": { "LAYOUT_split_4x5_3": { "layout": [ diff --git a/keyboards/for_science/keymaps/manna-harbour_miryoku/config.h b/keyboards/for_science/keymaps/manna-harbour_miryoku/config.h new file mode 100644 index 000000000000..1794ba4fd6a6 --- /dev/null +++ b/keyboards/for_science/keymaps/manna-harbour_miryoku/config.h @@ -0,0 +1,23 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . + +#pragma once + +#define XXX KC_NO + +#define LAYOUT_miryoku(\ +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,\ +N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +LAYOUT(\ +XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,\ +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,\ + K32, K33, K34, K35, K36, K37\ +) diff --git a/keyboards/for_science/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/for_science/keymaps/manna-harbour_miryoku/keymap.c new file mode 100644 index 000000000000..7c5717a0fee0 --- /dev/null +++ b/keyboards/for_science/keymaps/manna-harbour_miryoku/keymap.c @@ -0,0 +1,5 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/keyboards/for_science/rules.mk b/keyboards/for_science/rules.mk index b8e091ef66b9..d5317f923306 100644 --- a/keyboards/for_science/rules.mk +++ b/keyboards/for_science/rules.mk @@ -6,16 +6,13 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/forever65/info.json b/keyboards/forever65/info.json index 3615a39310d7..6cb2442a08be 100644 --- a/keyboards/forever65/info.json +++ b/keyboards/forever65/info.json @@ -14,15 +14,13 @@ "device_ver": "0x0001" }, "features": { - "bootmagic_lite": true, + "bootmagic": true, "command": false, "console": false, "extrakey": true, "mousekey": true, "nkro": true }, - "width": 16, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/fortitude60/info.json b/keyboards/fortitude60/info.json index ceb2cf4f0466..db8959706f01 100644 --- a/keyboards/fortitude60/info.json +++ b/keyboards/fortitude60/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Fortitude60", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { "layout": [{"label":"L00", "x":0, "y":0}, {"label":"L01", "x":1, "y":0}, {"label":"L02", "x":2, "y":0}, {"label":"L03", "x":3, "y":0}, {"label":"L04", "x":4, "y":0}, {"label":"L05", "x":5, "y":0}, {"label":"R00", "x":9, "y":0}, {"label":"R01", "x":10, "y":0}, {"label":"R02", "x":11, "y":0}, {"label":"R03", "x":12, "y":0}, {"label":"R04", "x":13, "y":0}, {"label":"R05", "x":14, "y":0}, {"label":"L10", "x":0, "y":1}, {"label":"L11", "x":1, "y":1}, {"label":"L12", "x":2, "y":1}, {"label":"L13", "x":3, "y":1}, {"label":"L14", "x":4, "y":1}, {"label":"L15", "x":5, "y":1}, {"label":"R10", "x":9, "y":1}, {"label":"R11", "x":10, "y":1}, {"label":"R12", "x":11, "y":1}, {"label":"R13", "x":12, "y":1}, {"label":"R14", "x":13, "y":1}, {"label":"R15", "x":14, "y":1}, {"label":"L20", "x":0, "y":2}, {"label":"L21", "x":1, "y":2}, {"label":"L22", "x":2, "y":2}, {"label":"L23", "x":3, "y":2}, {"label":"L24", "x":4, "y":2}, {"label":"L25", "x":5, "y":2}, {"label":"R20", "x":9, "y":2}, {"label":"R21", "x":10, "y":2}, {"label":"R22", "x":11, "y":2}, {"label":"R23", "x":12, "y":2}, {"label":"R24", "x":13, "y":2}, {"label":"R25", "x":14, "y":2}, {"label":"L30", "x":0, "y":3}, {"label":"L31", "x":1, "y":3}, {"label":"L32", "x":2, "y":3}, {"label":"L33", "x":3, "y":3}, {"label":"L34", "x":4, "y":3}, {"label":"L35", "x":5, "y":3}, {"label":"LT5", "x":6, "y":3}, {"label":"RT5", "x":8, "y":3}, {"label":"R30", "x":9, "y":3}, {"label":"R31", "x":10, "y":3}, {"label":"R32", "x":11, "y":3}, {"label":"R33", "x":12, "y":3}, {"label":"R34", "x":13, "y":3}, {"label":"R35", "x":14, "y":3}, {"label":"LT0", "x":2, "y":4}, {"label":"LT1", "x":3, "y":4}, {"label":"LT2", "x":4, "y":4}, {"label":"LT3", "x":5, "y":4}, {"label":"LT4", "x":6, "y":4}, {"label":"RT4", "x":8, "y":4}, {"label":"RT3", "x":9, "y":4}, {"label":"RT2", "x":10, "y":4}, {"label":"RT1", "x":11, "y":4}, {"label":"RT0", "x":12, "y":4}] diff --git a/keyboards/fortitude60/rules.mk b/keyboards/fortitude60/rules.mk index d866b0bc02b3..719121f23693 100644 --- a/keyboards/fortitude60/rules.mk +++ b/keyboards/fortitude60/rules.mk @@ -2,32 +2,22 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output +SLEEP_LED_ENABLE = yes SPLIT_KEYBOARD = yes diff --git a/keyboards/four_banger/config.h b/keyboards/four_banger/config.h index 30e2bd21ac85..7ad7a5c36953 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 a6da8dd0b7fa..1d735a1f0f75 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/four_banger/info.json b/keyboards/four_banger/info.json index f5ec65cf65ba..48fc16cebe66 100644 --- a/keyboards/four_banger/info.json +++ b/keyboards/four_banger/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Four Banger", "url": "", "maintainer": "qmk", - "width": 2, - "height": 2, "layouts": { "LAYOUT_ortho_2x2": { "layout": [ diff --git a/keyboards/four_banger/rules.mk b/keyboards/four_banger/rules.mk index b989b893b487..c4c04f02606c 100644 --- a/keyboards/four_banger/rules.mk +++ b/keyboards/four_banger/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 -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 diff --git a/keyboards/foxlab/key65/hotswap/config.h b/keyboards/foxlab/key65/hotswap/config.h index 43f883fce9a6..621c6407203d 100644 --- a/keyboards/foxlab/key65/hotswap/config.h +++ b/keyboards/foxlab/key65/hotswap/config.h @@ -100,59 +100,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. diff --git a/keyboards/foxlab/key65/hotswap/info.json b/keyboards/foxlab/key65/hotswap/info.json index 99e5615dfe99..4c43f13c80aa 100644 --- a/keyboards/foxlab/key65/hotswap/info.json +++ b/keyboards/foxlab/key65/hotswap/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Key 65 Hotswap", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { - "key_count": 66, "layout": [ {"label":"K00 (D2,F5)", "x":0, "y":0}, {"label":"K01 (D2,F4)", "x":1, "y":0}, diff --git a/keyboards/foxlab/key65/hotswap/rules.mk b/keyboards/foxlab/key65/hotswap/rules.mk index bbcb451e1eaf..61a24c358db4 100644 --- a/keyboards/foxlab/key65/hotswap/rules.mk +++ b/keyboards/foxlab/key65/hotswap/rules.mk @@ -2,25 +2,15 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support AUDIO_ENABLE = no # Audio output diff --git a/keyboards/foxlab/key65/universal/config.h b/keyboards/foxlab/key65/universal/config.h index 315af667629a..241d2ce2cb6d 100644 --- a/keyboards/foxlab/key65/universal/config.h +++ b/keyboards/foxlab/key65/universal/config.h @@ -100,59 +100,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. diff --git a/keyboards/foxlab/key65/universal/info.json b/keyboards/foxlab/key65/universal/info.json index ce95ecd8cc6d..d1303b6a47f2 100644 --- a/keyboards/foxlab/key65/universal/info.json +++ b/keyboards/foxlab/key65/universal/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Key 65 Universal", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_ansi_blocker_split_bs": { - "key_count": 68, "layout": [ {"label":"K00 (D0,B1)", "x":0, "y":0}, {"label":"K01 (D0,F5)", "x":1, "y":0}, @@ -79,7 +76,6 @@ ] }, "LAYOUT_65_ansi_blocker_tsangan_split_bs": { - "key_count": 67, "layout": [ {"label":"K00 (D0,B1)", "x":0, "y":0}, {"label":"K01 (D0,F5)", "x":1, "y":0}, @@ -151,7 +147,6 @@ ] }, "LAYOUT_iso_all": { - "key_count": 71, "layout": [ {"label":"K00 (D0,B1)", "x":0, "y":0}, {"label":"K01 (D0,F5)", "x":1, "y":0}, @@ -227,7 +222,6 @@ ] }, "LAYOUT_all": { - "key_count": 71, "layout": [ {"label":"K00 (D0,B1)", "x":0, "y":0}, {"label":"K01 (D0,F5)", "x":1, "y":0}, diff --git a/keyboards/foxlab/key65/universal/rules.mk b/keyboards/foxlab/key65/universal/rules.mk index 4552456ef588..3d95209cf258 100644 --- a/keyboards/foxlab/key65/universal/rules.mk +++ b/keyboards/foxlab/key65/universal/rules.mk @@ -2,27 +2,17 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support AUDIO_ENABLE = no # Audio output LAYOUTS = 65_ansi_blocker_split_bs # Support community layouts diff --git a/keyboards/foxlab/leaf60/hotswap/config.h b/keyboards/foxlab/leaf60/hotswap/config.h index 50a8527eb8ac..6092a24f01b1 100644 --- a/keyboards/foxlab/leaf60/hotswap/config.h +++ b/keyboards/foxlab/leaf60/hotswap/config.h @@ -104,59 +104,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -175,26 +122,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/foxlab/leaf60/hotswap/info.json b/keyboards/foxlab/leaf60/hotswap/info.json index 1e8daa704d79..1dd5e47b2f6a 100644 --- a/keyboards/foxlab/leaf60/hotswap/info.json +++ b/keyboards/foxlab/leaf60/hotswap/info.json @@ -2,11 +2,9 @@ "keyboard_name": "Fox Lab Hotswap Leaf60", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_tsangan_hhkb": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"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}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.5}, {"x":1.5, "y":4}, {"x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"x":11, "y":4, "w":1.5}, {"x":12.5, "y":4}, {"x":13.5, "y":4, "w":1.5}] } } -} \ No newline at end of file +} diff --git a/keyboards/foxlab/leaf60/hotswap/keymaps/default/keymap.c b/keyboards/foxlab/leaf60/hotswap/keymaps/default/keymap.c index 3f9ea1b49c58..f2f5f0c97347 100644 --- a/keyboards/foxlab/leaf60/hotswap/keymaps/default/keymap.c +++ b/keyboards/foxlab/leaf60/hotswap/keymaps/default/keymap.c @@ -32,15 +32,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) }; - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/foxlab/leaf60/hotswap/rules.mk b/keyboards/foxlab/leaf60/hotswap/rules.mk index b8332901cc7b..9fba0682c5b5 100644 --- a/keyboards/foxlab/leaf60/hotswap/rules.mk +++ b/keyboards/foxlab/leaf60/hotswap/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = no # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/foxlab/leaf60/universal/config.h b/keyboards/foxlab/leaf60/universal/config.h index 237276ed89b6..b4214882bc92 100644 --- a/keyboards/foxlab/leaf60/universal/config.h +++ b/keyboards/foxlab/leaf60/universal/config.h @@ -104,59 +104,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -175,26 +122,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/foxlab/leaf60/universal/info.json b/keyboards/foxlab/leaf60/universal/info.json index f08503377feb..25687994a926 100644 --- a/keyboards/foxlab/leaf60/universal/info.json +++ b/keyboards/foxlab/leaf60/universal/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Fox Lab Leaf60", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"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}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":2.25}, {"x":6, "y":4, "w":1.25}, {"x":7.25, "y":4, "w":2.75}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}] @@ -17,4 +15,4 @@ "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"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}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":1.5, "y":4}, {"x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"x":11, "y":4, "w":1.5}, {"x":12.5, "y":4}] } } -} \ No newline at end of file +} diff --git a/keyboards/foxlab/leaf60/universal/keymaps/default/keymap.c b/keyboards/foxlab/leaf60/universal/keymaps/default/keymap.c index ff84fa39995a..3f823ba04eae 100644 --- a/keyboards/foxlab/leaf60/universal/keymaps/default/keymap.c +++ b/keyboards/foxlab/leaf60/universal/keymaps/default/keymap.c @@ -32,15 +32,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) }; - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/foxlab/leaf60/universal/rules.mk b/keyboards/foxlab/leaf60/universal/rules.mk index c1876cd2b494..9f5ffeec5507 100644 --- a/keyboards/foxlab/leaf60/universal/rules.mk +++ b/keyboards/foxlab/leaf60/universal/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = 60_ansi 60_hhkb diff --git a/keyboards/foxlab/time80/info.json b/keyboards/foxlab/time80/info.json index 0919bae5af5b..b17866391e93 100644 --- a/keyboards/foxlab/time80/info.json +++ b/keyboards/foxlab/time80/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Fox Lab Time 80", "url": "", "maintainer": "lukelex", - "width": 18.25, - "height": 6.25, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/foxlab/time80/rules.mk b/keyboards/foxlab/time80/rules.mk index 1b61e9534da1..1bbfa8fa0ec2 100644 --- a/keyboards/foxlab/time80/rules.mk +++ b/keyboards/foxlab/time80/rules.mk @@ -2,18 +2,16 @@ MCU = atmega32a # Bootloader selection -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow WS2812_DRIVER = i2c diff --git a/keyboards/foxlab/time_re/hotswap/info.json b/keyboards/foxlab/time_re/hotswap/info.json index 64678e03c122..bf4a81873d25 100644 --- a/keyboards/foxlab/time_re/hotswap/info.json +++ b/keyboards/foxlab/time_re/hotswap/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Time RE Hotswap", "url": "", "maintainer": "qmk", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/foxlab/time_re/hotswap/rules.mk b/keyboards/foxlab/time_re/hotswap/rules.mk index 77b7c43fff15..3cf88cf3cde5 100644 --- a/keyboards/foxlab/time_re/hotswap/rules.mk +++ b/keyboards/foxlab/time_re/hotswap/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/foxlab/time_re/universal/info.json b/keyboards/foxlab/time_re/universal/info.json index 77bb4a7694b0..9161a345aa00 100644 --- a/keyboards/foxlab/time_re/universal/info.json +++ b/keyboards/foxlab/time_re/universal/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Time RE Universal", "url": "", "maintainer": "qmk", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/foxlab/time_re/universal/rules.mk b/keyboards/foxlab/time_re/universal/rules.mk index 8d3f342f575f..23b942b37e2f 100644 --- a/keyboards/foxlab/time_re/universal/rules.mk +++ b/keyboards/foxlab/time_re/universal/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/fr4/southpaw75/info.json b/keyboards/fr4/southpaw75/info.json index 940165c45eac..c5c612322187 100644 --- a/keyboards/fr4/southpaw75/info.json +++ b/keyboards/fr4/southpaw75/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Southpaw75", "url": "https://github.com/kelvinhall05/southpaw75", "maintainer": "kelvinhall05", - "width": 19, - "height": 5, "layouts": { "LAYOUT": { "layout": [{"label":"Num Lock", "x":0, "y":0}, {"label":"/", "x":1, "y":0}, {"label":"*", "x":2, "y":0}, {"label":"-", "x":3, "y":0}, {"label":"~", "x":4, "y":0}, {"label":"!", "x":5, "y":0}, {"label":"@", "x":6, "y":0}, {"label":"#", "x":7, "y":0}, {"label":"$", "x":8, "y":0}, {"label":"%", "x":9, "y":0}, {"label":"^", "x":10, "y":0}, {"label":"&", "x":11, "y":0}, {"label":"*", "x":12, "y":0}, {"label":"(", "x":13, "y":0}, {"label":")", "x":14, "y":0}, {"label":"_", "x":15, "y":0}, {"label":"+", "x":16, "y":0}, {"label":"Backspace", "x":17, "y":0, "w":2}, {"label":"7", "x":0, "y":1}, {"label":"8", "x":1, "y":1}, {"label":"9", "x":2, "y":1}, {"label":"+", "x":3, "y":1, "h":2}, {"label":"Tab", "x":4, "y":1, "w":1.5}, {"label":"Q", "x":5.5, "y":1}, {"label":"W", "x":6.5, "y":1}, {"label":"E", "x":7.5, "y":1}, {"label":"R", "x":8.5, "y":1}, {"label":"T", "x":9.5, "y":1}, {"label":"Y", "x":10.5, "y":1}, {"label":"U", "x":11.5, "y":1}, {"label":"I", "x":12.5, "y":1}, {"label":"O", "x":13.5, "y":1}, {"label":"P", "x":14.5, "y":1}, {"label":"{", "x":15.5, "y":1}, {"label":"}", "x":16.5, "y":1}, {"label":"|", "x":17.5, "y":1, "w":1.5}, {"label":"4", "x":0, "y":2}, {"label":"5", "x":1, "y":2}, {"label":"6", "x":2, "y":2}, {"label":"Caps Lock", "x":4, "y":2, "w":1.75}, {"label":"A", "x":5.75, "y":2}, {"label":"S", "x":6.75, "y":2}, {"label":"D", "x":7.75, "y":2}, {"label":"F", "x":8.75, "y":2}, {"label":"G", "x":9.75, "y":2}, {"label":"H", "x":10.75, "y":2}, {"label":"J", "x":11.75, "y":2}, {"label":"K", "x":12.75, "y":2}, {"label":"L", "x":13.75, "y":2}, {"label":":", "x":14.75, "y":2}, {"label":"\"", "x":15.75, "y":2}, {"label":"Enter", "x":16.75, "y":2, "w":2.25}, {"label":"1", "x":0, "y":3}, {"label":"2", "x":1, "y":3}, {"label":"3", "x":2, "y":3}, {"label":"Enter", "x":3, "y":3, "h":2}, {"label":"Shift", "x":4, "y":3, "w":2.25}, {"label":"Z", "x":6.25, "y":3}, {"label":"X", "x":7.25, "y":3}, {"label":"C", "x":8.25, "y":3}, {"label":"V", "x":9.25, "y":3}, {"label":"B", "x":10.25, "y":3}, {"label":"N", "x":11.25, "y":3}, {"label":"M", "x":12.25, "y":3}, {"label":"<", "x":13.25, "y":3}, {"label":">", "x":14.25, "y":3}, {"label":"?", "x":15.25, "y":3}, {"label":"Shift", "x":16.25, "y":3, "w":2.75}, {"label":"0", "x":0, "y":4, "w":2}, {"label":".", "x":2, "y":4}, {"label":"Ctrl", "x":4, "y":4, "w":1.25}, {"label":"Win", "x":5.25, "y":4, "w":1.25}, {"label":"Alt", "x":6.5, "y":4, "w":1.25}, {"x":7.75, "y":4, "w":6.25}, {"label":"Alt", "x":14, "y":4, "w":1.25}, {"label":"Win", "x":15.25, "y":4, "w":1.25}, {"label":"Menu", "x":16.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":17.75, "y":4, "w":1.25}] diff --git a/keyboards/fr4/southpaw75/rules.mk b/keyboards/fr4/southpaw75/rules.mk index bde08efba509..b97001801122 100644 --- a/keyboards/fr4/southpaw75/rules.mk +++ b/keyboards/fr4/southpaw75/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/fr4/unix60/info.json b/keyboards/fr4/unix60/info.json index 04b2cf62d568..6debabc7aa4a 100644 --- a/keyboards/fr4/unix60/info.json +++ b/keyboards/fr4/unix60/info.json @@ -2,8 +2,6 @@ "keyboard_name": "unix60", "url": "https://github.com/mkdl/Unix60", "maintainer": "mkdl", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":0.6}, {"x":13.6, "y":0, "w":0.8}, {"x":14.4, "y":0, "w":0.6}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"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}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2}, {"x":13.75, "y":2, "w":1.25}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":1.5, "y":4}, {"x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"x":11, "y":4, "w":1.5}, {"x":12.5, "y":4}] diff --git a/keyboards/fr4/unix60/rules.mk b/keyboards/fr4/unix60/rules.mk index 8a411ac604a4..b97001801122 100644 --- a/keyboards/fr4/unix60/rules.mk +++ b/keyboards/fr4/unix60/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/fractal/config.h b/keyboards/fractal/config.h index 5d4e0d49e3f5..b9aeac38557b 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/fractal/info.json b/keyboards/fractal/info.json index 25bc70e7d813..7d7a2ba5a475 100644 --- a/keyboards/fractal/info.json +++ b/keyboards/fractal/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Fractal", "url": "https://keypcb.bigcartel.com/product/fractal-keyboard-group-buy", "maintainer": "qmk", - "width": 12, - "height": 5, "layouts": { "LAYOUT_ortho_5x12": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}, {"x":0, "y":4}, {"x":1, "y":4}, {"x":2, "y":4}, {"x":3, "y":4}, {"x":4, "y":4}, {"x":5, "y":4}, {"x":6, "y":4}, {"x":7, "y":4}, {"x":8, "y":4}, {"x":9, "y":4}, {"x":10, "y":4}, {"x":11, "y":4}] diff --git a/keyboards/fractal/keymaps/default/keymap.c b/keyboards/fractal/keymaps/default/keymap.c index 8bb1f98318f3..553dad034c48 100644 --- a/keyboards/fractal/keymaps/default/keymap.c +++ b/keyboards/fractal/keymaps/default/keymap.c @@ -213,10 +213,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { #ifdef BACKLIGHT_ENABLE backlight_step(); #endif - PORTE &= ~(1<<6); } else { unregister_code(KC_RSFT); - PORTE |= (1<<6); } return false; break; diff --git a/keyboards/fractal/rules.mk b/keyboards/fractal/rules.mk index 0952b247a79d..c77f6878980e 100755 --- a/keyboards/fractal/rules.mk +++ b/keyboards/fractal/rules.mk @@ -2,30 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output LAYOUTS = ortho_5x12 # preonic_mit LAYOUTS_HAS_RGB = no diff --git a/keyboards/free_willy/config.h b/keyboards/free_willy/config.h new file mode 100644 index 000000000000..cecd2a82119a --- /dev/null +++ b/keyboards/free_willy/config.h @@ -0,0 +1,39 @@ +/* Copyright 2021 Caleb Lightfoot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x5351 // SQ +#define PRODUCT_ID 0x4657 // FW +#define DEVICE_VER 0x0001 +#define MANUFACTURER squashkb +#define PRODUCT free willy + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 10 + +#define MATRIX_ROW_PINS { F4, F5, F6, F7 } +#define MATRIX_COL_PINS { D3, D2, D1, D0, D4, C6, D7, E6, B4, B5 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 diff --git a/keyboards/free_willy/free_willy.c b/keyboards/free_willy/free_willy.c new file mode 100644 index 000000000000..71a912fdc577 --- /dev/null +++ b/keyboards/free_willy/free_willy.c @@ -0,0 +1,16 @@ +/* Copyright 2021 Caleb Lightfoot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "free_willy.h" diff --git a/keyboards/free_willy/free_willy.h b/keyboards/free_willy/free_willy.h new file mode 100644 index 000000000000..88597a053d46 --- /dev/null +++ b/keyboards/free_willy/free_willy.h @@ -0,0 +1,33 @@ +/* Copyright 2021 Caleb Lightfoot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#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, \ + K32, K33, K34, K35, K36, K37 \ +) \ +{ \ + { 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, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX } \ +} diff --git a/keyboards/free_willy/info.json b/keyboards/free_willy/info.json new file mode 100644 index 000000000000..c2bb3b95d9b5 --- /dev/null +++ b/keyboards/free_willy/info.json @@ -0,0 +1,47 @@ +{ + "keyboard_name": "free willy", + "url": "https://www.squashkb.com/product/free-willy", + "maintainer": "tsquash", + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":6, "y":1}, + {"x":7, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1}, + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + {"x":6, "y":2}, + {"x":7, "y":2}, + {"x":8, "y":2}, + {"x":9, "y":2}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3}, + {"x":6, "y":3}, + {"x":7, "y":3} + ] + } + } +} diff --git a/keyboards/free_willy/keymaps/colemak/config.h b/keyboards/free_willy/keymaps/colemak/config.h new file mode 100644 index 000000000000..a9f255d42b74 --- /dev/null +++ b/keyboards/free_willy/keymaps/colemak/config.h @@ -0,0 +1,20 @@ +/* Copyright 2021 Caleb Lightfoot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +/* Combos */ +#define COMBO_COUNT 5 +#define COMBO_TERM 50 diff --git a/keyboards/free_willy/keymaps/colemak/keymap.c b/keyboards/free_willy/keymaps/colemak/keymap.c new file mode 100644 index 000000000000..9d666e1bf01b --- /dev/null +++ b/keyboards/free_willy/keymaps/colemak/keymap.c @@ -0,0 +1,75 @@ +/* Copyright 2021 Caleb Lightfoot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layers{ + _BASE, + _SYM, + _NAV +}; + +#define KC_SYM_SPC LT(_SYM, KC_SPC) + +enum combo_events { + COMBO_NUMBAK, + COMBO_TAB, + COMBO_ESC, + COMBO_DEL, + COMBO_RET, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( + KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_BSPC, + KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, + KC_X, KC_C, KC_D, KC_V, KC_Z, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, + KC_LCTL, KC_LSFT, KC_LALT, KC_LGUI , KC_SYM_SPC, MO(_NAV) + ), + + [_SYM] = LAYOUT( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_EQUAL, KC_MINS, + KC_BSLS, KC_SCLN, KC_LCBR, KC_LBRC, KC_LPRN, KC_RPRN, KC_RBRC, KC_RCBR, KC_QUOT, KC_GRV, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_NAV] = LAYOUT( + RESET, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; + + +#ifdef COMBO_ENABLE +//const uint16_t PROGMEM combo_bspc[] = {KC_O, KC_P, COMBO_END}; +const uint16_t PROGMEM combo_numbak[] = {KC_0, KC_9, COMBO_END}; +const uint16_t PROGMEM combo_tab[] = {KC_F, KC_W, COMBO_END}; +const uint16_t PROGMEM combo_esc[] = {KC_N, KC_T, COMBO_END}; +const uint16_t PROGMEM combo_del[] = {KC_MINS, KC_EQL, COMBO_END}; +const uint16_t PROGMEM combo_ret[] = {KC_LGUI, KC_LALT, COMBO_END}; + +combo_t key_combos[COMBO_COUNT] = { + //[COMBO_BSPC] = COMBO(combo_bspc,KC_BSPC), + [COMBO_NUMBAK] = COMBO(combo_numbak,KC_BSPC), + [COMBO_TAB] = COMBO(combo_tab,KC_TAB), + [COMBO_ESC] = COMBO(combo_esc,KC_ESC), + [COMBO_DEL] = COMBO(combo_del,KC_DEL), + [COMBO_RET] = COMBO(combo_ret,KC_ENTER), + +}; +#endif diff --git a/keyboards/anavi/macropad2/keymaps/binary/rules.mk b/keyboards/free_willy/keymaps/colemak/rules.mk similarity index 100% rename from keyboards/anavi/macropad2/keymaps/binary/rules.mk rename to keyboards/free_willy/keymaps/colemak/rules.mk diff --git a/keyboards/free_willy/keymaps/default/config.h b/keyboards/free_willy/keymaps/default/config.h new file mode 100644 index 000000000000..a9f255d42b74 --- /dev/null +++ b/keyboards/free_willy/keymaps/default/config.h @@ -0,0 +1,20 @@ +/* Copyright 2021 Caleb Lightfoot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +/* Combos */ +#define COMBO_COUNT 5 +#define COMBO_TERM 50 diff --git a/keyboards/free_willy/keymaps/default/keymap.c b/keyboards/free_willy/keymaps/default/keymap.c new file mode 100644 index 000000000000..d2b62a3a1cc4 --- /dev/null +++ b/keyboards/free_willy/keymaps/default/keymap.c @@ -0,0 +1,74 @@ +/* Copyright 2021 Caleb Lightfoot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layers{ + _BASE, + _SYM, + _NAV +}; + +#define KC_SYM_SPC LT(_SYM, KC_SPC) +#define KC_SFT_BCK LSFT_T(KC_BSPC) + + +enum combo_events { + COMBO_NUMBAK, + COMBO_TAB, + COMBO_ESC, + COMBO_DEL, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, + KC_LCTL, KC_SFT_BCK, KC_LALT, KC_LGUI , KC_SYM_SPC, MO(_NAV) + ), + + [_SYM] = LAYOUT( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_EQUAL, KC_MINS, + KC_BSLS, KC_SCLN, KC_LCBR, KC_LBRC, KC_LPRN, KC_RPRN, KC_RBRC, KC_RCBR, KC_QUOT, KC_GRV, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_NAV] = LAYOUT( + RESET, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; + + +#ifdef COMBO_ENABLE +//const uint16_t PROGMEM combo_bspc[] = {KC_O, KC_P, COMBO_END}; +const uint16_t PROGMEM combo_numbak[] = {KC_0, KC_9, COMBO_END}; +const uint16_t PROGMEM combo_tab[] = {KC_Q, KC_W, COMBO_END}; +const uint16_t PROGMEM combo_esc[] = {KC_J, KC_F, COMBO_END}; +const uint16_t PROGMEM combo_del[] = {KC_MINS, KC_EQL, COMBO_END}; + +combo_t key_combos[COMBO_COUNT] = { + //[COMBO_BSPC] = COMBO(combo_bspc,KC_BSPC), + [COMBO_NUMBAK] = COMBO(combo_numbak,KC_BSPC), + [COMBO_TAB] = COMBO(combo_tab,KC_TAB), + [COMBO_ESC] = COMBO(combo_esc,KC_ESC), + [COMBO_DEL] = COMBO(combo_del,KC_DEL), + +}; +#endif diff --git a/keyboards/anavi/macropad2/keymaps/copypaste/rules.mk b/keyboards/free_willy/keymaps/default/rules.mk similarity index 100% rename from keyboards/anavi/macropad2/keymaps/copypaste/rules.mk rename to keyboards/free_willy/keymaps/default/rules.mk diff --git a/keyboards/free_willy/readme.md b/keyboards/free_willy/readme.md new file mode 100644 index 000000000000..0b34cc712c58 --- /dev/null +++ b/keyboards/free_willy/readme.md @@ -0,0 +1,21 @@ +# Free Willy + +![Free Willy](https://i.imgur.com/JBNV3Hk.png) + +Free willy is an ortholinear, 36 key keyboard featuring HHKB like corner blockers. + +* Keyboard Maintainer: [Caleb Lightfoot](https://github.com/Tsquash) +* Hardware Supported: Free Willy PCB v1.0 +* Hardware Availability: [squashkb](https://www.squashkb.com/product/free-willy) + +Make example for this keyboard (after setting up your build environment): + + make free_willy:default + +To reset the keyboard, jump the reset and ground pins located on the pro micro. + +Flashing example for this keyboard: + + make free_willy:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/free_willy/rules.mk b/keyboards/free_willy/rules.mk new file mode 100644 index 000000000000..898828068356 --- /dev/null +++ b/keyboards/free_willy/rules.mk @@ -0,0 +1,19 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/freyr/info.json b/keyboards/freyr/info.json index 9f1b54d49443..e2b1c6c2c04f 100644 --- a/keyboards/freyr/info.json +++ b/keyboards/freyr/info.json @@ -2,8 +2,6 @@ "keyboard_name": "freyr", "url": "", "maintainer": "vuhopkep", - "width": 18.25, - "height": 6.25, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/freyr/rules.mk b/keyboards/freyr/rules.mk index bfd0c526260e..1173bc86e9b4 100644 --- a/keyboards/freyr/rules.mk +++ b/keyboards/freyr/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LAYOUTS = tkl_ansi tkl_iso diff --git a/keyboards/friedrich/info.json b/keyboards/friedrich/info.json index 94b9f1a20519..17492e6fafa5 100644 --- a/keyboards/friedrich/info.json +++ b/keyboards/friedrich/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Friedrich", "url": "https://github.com/MarvFPV/Friedrich", "maintainer": "kb-elmo", - "width": 13, - "height": 5, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0}, @@ -61,4 +59,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/friedrich/rules.mk b/keyboards/friedrich/rules.mk index a90eef1fc65a..74047d4dec7d 100644 --- a/keyboards/friedrich/rules.mk +++ b/keyboards/friedrich/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/frooastboard/config.h b/keyboards/frooastboard/config.h new file mode 100644 index 000000000000..ebfc6a75d71c --- /dev/null +++ b/keyboards/frooastboard/config.h @@ -0,0 +1,52 @@ +/* Copyright 2021 frooastside + * + * This program is free software: you can 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 . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define MANUFACTURER frooastside +#define PRODUCT Frooastboard + +/* key matrix size */ +#define MATRIX_ROWS 2 +#define MATRIX_COLS 2 + +#define BOOTMAGIC_LITE_ROW 1 +#define BOOTMAGIC_LITE_COLUMN 1 + +#define RGB_DI_PIN B4 +#define RGBLED_NUM 8 + +#define RGBLIGHT_SLEEP + +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 + +#define RGBLIGHT_DEFAULT_HUE 234 + +#define RGBLIGHT_LIMIT_VAL 255 +#define RGBLIGHT_DEFAULT_VAL 190 + +#define RGBLIGHT_EFFECT_RAINBOW_MOOD +#define RGBLIGHT_EFFECT_RAINBOW_SWIRL +#define RGBLIGHT_EFFECT_TWINKLE +#define RGBLIGHT_EFFECT_BREATHING +#define RGBLIGHT_EFFECT_SNAKE + +#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_MOOD + 2 diff --git a/keyboards/frooastboard/frooastboard.c b/keyboards/frooastboard/frooastboard.c new file mode 100644 index 000000000000..8e7f3c8998c9 --- /dev/null +++ b/keyboards/frooastboard/frooastboard.c @@ -0,0 +1,17 @@ +/* Copyright 2021 frooastside + * + * This program is free software: you can 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 . + */ + +#include "frooastboard.h" diff --git a/keyboards/frooastboard/frooastboard.h b/keyboards/frooastboard/frooastboard.h new file mode 100644 index 000000000000..da598cf4aabd --- /dev/null +++ b/keyboards/frooastboard/frooastboard.h @@ -0,0 +1,27 @@ +/* Copyright 2021 frooastside + * + * This program is free software: you can 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 . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + K00, K01, \ + K10, K11 \ +) { \ + { K00, K01 }, \ + { K10, K11 } \ +} diff --git a/keyboards/frooastboard/info.json b/keyboards/frooastboard/info.json new file mode 100644 index 000000000000..ca99cf594a70 --- /dev/null +++ b/keyboards/frooastboard/info.json @@ -0,0 +1,42 @@ +{ + "keyboard_name": "Frooastboard", + "url": "https://github.com/frooastside/qmk_firmware/tree/master/keyboards/frooastboard", + "maintainer": "frooastside", + "debounce": 5, + "diode_direction": "COL2ROW", + "layouts": { + "LAYOUT": { + "layout": [ + { + "label": "Z", + "x": 0, + "y": 0 + }, + { + "label": "X", + "x": 1, + "y": 0 + }, + { + "label": "Esc", + "x": 0, + "y": 1 + }, + { + "label": "~", + "x": 1, + "y": 1 + } + ] + }, + }, + "matrix_pins": { + "rows": ["B0", "B1"], + "cols": ["B2", "B3"] + }, + "usb": { + "vid": "0x4642", + "pid": "0x6F21", + "device_ver": "0x0001" + } +} diff --git a/keyboards/frooastboard/keymaps/default/keymap.c b/keyboards/frooastboard/keymaps/default/keymap.c new file mode 100644 index 000000000000..569937d8e211 --- /dev/null +++ b/keyboards/frooastboard/keymaps/default/keymap.c @@ -0,0 +1,47 @@ +/* Copyright 2021 frooastside + * + * This program is free software: you can 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 . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_Z, KC_X, + LT(1, KC_ESC), KC_TILD), + + [1] = LAYOUT( + KC_F23, KC_F24, + KC_TRNS, TO(2)), + + [2] = LAYOUT( + RGB_TOG, RGB_MOD, + TO(3), TO(0)), + + [3] = LAYOUT( + RGB_HUD, RGB_HUI, + TO(4), TO(2)), + + [4] = LAYOUT( + RGB_SAD, RGB_SAI, + TO(5), TO(3)), + + [5] = LAYOUT( + RGB_VAD, RGB_VAI, + TO(6), TO(4)), + + [6] = LAYOUT( + KC_TRNS, KC_TRNS, + RESET, TO(5)) +}; diff --git a/keyboards/frooastboard/keymaps/safe_mode/keymap.c b/keyboards/frooastboard/keymaps/safe_mode/keymap.c new file mode 100644 index 000000000000..dc040070edd1 --- /dev/null +++ b/keyboards/frooastboard/keymaps/safe_mode/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2021 frooastside + * + * This program is free software: you can 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 . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_Z, KC_X, + TO(1), KC_TILD), + + [1] = LAYOUT( + RGB_TOG, RGB_MOD, + TO(2), TO(0)), + + [2] = LAYOUT( + RGB_HUD, RGB_HUI, + TO(3), TO(1)), + + [3] = LAYOUT( + RGB_SAD, RGB_SAI, + TO(4), TO(2)), + + [4] = LAYOUT( + RGB_VAD, RGB_VAI, + TO(5), TO(3)), + + [5] = LAYOUT( + KC_TRNS, KC_TRNS, + RESET, TO(4)) +}; diff --git a/keyboards/frooastboard/keymaps/via/config.h b/keyboards/frooastboard/keymaps/via/config.h new file mode 100644 index 000000000000..6bd3c6ea37ca --- /dev/null +++ b/keyboards/frooastboard/keymaps/via/config.h @@ -0,0 +1,30 @@ +/* Copyright 2021 frooastside + * + * This program is free software: you can 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 . + */ + +#pragma once + +#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 DYNAMIC_KEYMAP_LAYER_COUNT 2 diff --git a/keyboards/frooastboard/keymaps/via/keymap.c b/keyboards/frooastboard/keymaps/via/keymap.c new file mode 100644 index 000000000000..028462cded40 --- /dev/null +++ b/keyboards/frooastboard/keymaps/via/keymap.c @@ -0,0 +1,27 @@ +/* Copyright 2021 frooastside + * + * This program is free software: you can 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 . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_Z, KC_X, + LT(1, KC_ESC), KC_TILD), + + [1] = LAYOUT( + KC_F23, KC_F24, + KC_TRNS, RGB_TOG) +}; diff --git a/keyboards/frooastboard/keymaps/via/rules.mk b/keyboards/frooastboard/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/frooastboard/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/frooastboard/readme.md b/keyboards/frooastboard/readme.md new file mode 100644 index 000000000000..d465c3f4b727 --- /dev/null +++ b/keyboards/frooastboard/readme.md @@ -0,0 +1,19 @@ +# Frooastboard + +![Frooastboard](https://i.imgur.com/f26O8JLh.jpg) + +* Keyboard Maintainer: [Frooastside](https://github.com/frooastside) +* Hardware Supported: Frooastboard +* Hardware Availability: https://github.com/Frooastside/Frooastboard + +**Reset Key:** Hold down the key located at `K00`, commonly programmed as ESCAPE while plugging in the keyboard. (If via is used it is the key located at `K10`.) + +Make example for this keyboard (after setting up your build environment): + + make frooastboard:default + +Flashing example for this keyboard: + + make frooastboard:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/frooastboard/rules.mk b/keyboards/frooastboard/rules.mk new file mode 100644 index 000000000000..62d3b55f7e86 --- /dev/null +++ b/keyboards/frooastboard/rules.mk @@ -0,0 +1,19 @@ +# MCU name +MCU = atmega32u2 + +# 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 = no # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 diff --git a/keyboards/ft/mars80/config.h b/keyboards/ft/mars80/config.h index e56d4439b36c..167004431537 100644 --- a/keyboards/ft/mars80/config.h +++ b/keyboards/ft/mars80/config.h @@ -44,7 +44,3 @@ along with this program. If not, see . #define BACKLIGHT_LEVELS 3 #define RGBLIGHT_ANIMATIONS - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) diff --git a/keyboards/ft/mars80/info.json b/keyboards/ft/mars80/info.json index 7d71cd040a8f..060e7eee650a 100644 --- a/keyboards/ft/mars80/info.json +++ b/keyboards/ft/mars80/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Mars 8.0", "url": "", "maintainer": "qmk", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT_tkl_ansi": { "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5, "w":2.25}, {"x":0, "y":4.5, "w":2.25}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":0, "y":5.5, "w":1.25}, {"x":1.25, "y":5.5, "w":1.25}, {"x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"x":10, "y":5.5, "w":1.25}, {"x":11.25, "y":5.5, "w":1.25}, {"x":12.5, "y":5.5, "w":1.25}, {"x":13.75, "y":5.5, "w":1.25}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}] diff --git a/keyboards/ft/mars80/rules.mk b/keyboards/ft/mars80/rules.mk index 2cd628153760..3faff68b1673 100644 --- a/keyboards/ft/mars80/rules.mk +++ b/keyboards/ft/mars80/rules.mk @@ -2,17 +2,10 @@ MCU = atmega32a # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid # build options -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no EXTRAKEY_ENABLE = yes CONSOLE_ENABLE = no diff --git a/keyboards/function96/v1/info.json b/keyboards/function96/v1/info.json index cf2226a1bea4..45f987a355ed 100644 --- a/keyboards/function96/v1/info.json +++ b/keyboards/function96/v1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "function96v1", "url": "jtmkeebdesign@gmail.com", "maintainer": "qmk", - "width": 19, - "height": 6, "layouts": { "LAYOUT": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, {"label":"F2", "x":2, "y":0}, {"label":"F3", "x":3, "y":0}, {"label":"F4", "x":4, "y":0}, {"label":"F5", "x":5, "y":0}, {"label":"F6", "x":6, "y":0}, {"label":"F7", "x":7, "y":0}, {"label":"F8", "x":8, "y":0}, {"label":"F9", "x":9, "y":0}, {"label":"F10", "x":10, "y":0}, {"label":"F11", "x":11, "y":0}, {"label":"F12", "x":12, "y":0}, {"label":"Print", "x":13, "y":0}, {"label":"Del", "x":14, "y":0}, {"x":15, "y":0}, {"x":16, "y":0}, {"x":17, "y":0}, {"x":18, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"@", "x":2, "y":1}, {"label":"#", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"label":"Backspace", "x":13, "y":1, "w":2}, {"x":15, "y":1}, {"label":"/", "x":16, "y":1}, {"label":"*", "x":17, "y":1}, {"label":"-", "x":18, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"7", "x":15, "y":2}, {"label":"8", "x":16, "y":2}, {"label":"9", "x":17, "y":2}, {"label":"+", "x":18, "y":2, "h":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"\"", "x":11.75, "y":3}, {"label":"Enter", "x":12.75, "y":3, "w":2.25}, {"label":"4", "x":15, "y":3}, {"label":"5", "x":16, "y":3}, {"label":"6", "x":17, "y":3}, {"label":"Shift", "x":0, "y":4, "w":2.25}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"label":"\u2191", "x":14, "y":4}, {"label":"1", "x":15, "y":4}, {"label":"2", "x":16, "y":4}, {"label":"3", "x":17, "y":4}, {"x":18, "y":4, "h":2}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":2.25}, {"x":6, "y":5, "w":1.25}, {"x":7.25, "y":5, "w":2.75}, {"x":10, "y":5, "w":1.25}, {"x":11.25, "y":5, "w":1.25}, {"label":"\u2190", "x":13, "y":5}, {"label":"\u2193", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}, {"label":"0", "x":16, "y":5}, {"x":17, "y":5}] diff --git a/keyboards/function96/v1/rules.mk b/keyboards/function96/v1/rules.mk index adbe34e7d151..b425156cac63 100644 --- a/keyboards/function96/v1/rules.mk +++ b/keyboards/function96/v1/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/function96/v2/info.json b/keyboards/function96/v2/info.json index 50f2e836caf8..d494f617ea13 100644 --- a/keyboards/function96/v2/info.json +++ b/keyboards/function96/v2/info.json @@ -2,20 +2,551 @@ "keyboard_name": "function96v2", "url": "jtmkeebdesign@gmail.com", "maintainer": "qmk", - "width": 19, - "height": 6, "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":1.25, "y":0}, + {"label":"F2", "x":2.25, "y":0}, + {"label":"F3", "x":3.25, "y":0}, + {"label":"F4", "x":4.25, "y":0}, + {"label":"F5", "x":5.5, "y":0}, + {"label":"F6", "x":6.5, "y":0}, + {"label":"F7", "x":7.5, "y":0}, + {"label":"F8", "x":8.5, "y":0}, + {"label":"F9", "x":9.75, "y":0}, + {"label":"F10", "x":10.75, "y":0}, + {"label":"F11", "x":11.75, "y":0}, + {"label":"F12", "x":12.75, "y":0}, + {"label":"Del", "x":14, "y":0}, + {"label":"Prev", "x":15, "y":0}, + {"label":"Next", "x":16, "y":0}, + {"label":"Vol -", "x":17, "y":0}, + {"label":"Vol +", "x":18, "y":0}, + + {"label":"\u00ac", "x":0, "y":1}, + {"label":"!", "x":1, "y":1}, + {"label":"\"", "x":2, "y":1}, + {"label":"\u00a3", "x":3, "y":1}, + {"label":"$", "x":4, "y":1}, + {"label":"%", "x":5, "y":1}, + {"label":"^", "x":6, "y":1}, + {"label":"&", "x":7, "y":1}, + {"label":"*", "x":8, "y":1}, + {"label":"(", "x":9, "y":1}, + {"label":")", "x":10, "y":1}, + {"label":"_", "x":11, "y":1}, + {"label":"+", "x":12, "y":1}, + {"label":"Backspace", "x":13, "y":1, "w":2}, + {"label":"Play", "x":15, "y":1}, + {"label":"/", "x":16, "y":1}, + {"label":"*", "x":17, "y":1}, + {"label":"-", "x":18, "y":1}, + + {"label":"Tab", "x":0, "y":2, "w":1.5}, + {"label":"Q", "x":1.5, "y":2}, + {"label":"W", "x":2.5, "y":2}, + {"label":"E", "x":3.5, "y":2}, + {"label":"R", "x":4.5, "y":2}, + {"label":"T", "x":5.5, "y":2}, + {"label":"Y", "x":6.5, "y":2}, + {"label":"U", "x":7.5, "y":2}, + {"label":"I", "x":8.5, "y":2}, + {"label":"O", "x":9.5, "y":2}, + {"label":"P", "x":10.5, "y":2}, + {"label":"{", "x":11.5, "y":2}, + {"label":"}", "x":12.5, "y":2}, + {"label":"|", "x":13.5, "y":2, "w":1.5}, + {"label":"7", "x":15, "y":2}, + {"label":"8", "x":16, "y":2}, + {"label":"9", "x":17, "y":2}, + + {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, + {"label":"A", "x":1.75, "y":3}, + {"label":"S", "x":2.75, "y":3}, + {"label":"D", "x":3.75, "y":3}, + {"label":"F", "x":4.75, "y":3}, + {"label":"G", "x":5.75, "y":3}, + {"label":"H", "x":6.75, "y":3}, + {"label":"J", "x":7.75, "y":3}, + {"label":"K", "x":8.75, "y":3}, + {"label":"L", "x":9.75, "y":3}, + {"label":":", "x":10.75, "y":3}, + {"label":"@", "x":11.75, "y":3}, + {"label":"~", "x":12.75, "y":3}, + {"label":"Enter", "x":13.75, "y":3, "w":1.25}, + {"label":"4", "x":15, "y":3}, + {"label":"5", "x":16, "y":3}, + {"label":"6", "x":17, "y":3}, + {"label":"+", "x":18, "y":2, "h":2}, + + {"label":"Shift", "x":0, "y":4, "w":1.25}, + {"label":"|", "x":1.25, "y":4}, + {"label":"Z", "x":2.25, "y":4}, + {"label":"X", "x":3.25, "y":4}, + {"label":"C", "x":4.25, "y":4}, + {"label":"V", "x":5.25, "y":4}, + {"label":"B", "x":6.25, "y":4}, + {"label":"N", "x":7.25, "y":4}, + {"label":"M", "x":8.25, "y":4}, + {"label":"<", "x":9.25, "y":4}, + {"label":">", "x":10.25, "y":4}, + {"label":"?", "x":11.25, "y":4}, + {"label":"Shift", "x":12.25, "y":4, "w":1.75}, + {"label":"\u2191", "x":14, "y":4}, + {"label":"1", "x":15, "y":4}, + {"label":"2", "x":16, "y":4}, + {"label":"3", "x":17, "y":4}, + + {"label":"Ctrl", "x":0, "y":5, "w":1.25}, + {"label":"Win", "x":1.25, "y":5, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5, "w":1.25}, + {"label":"Space", "x":3.75, "y":5, "w":2.25}, + {"label":"Layer", "x":6, "y":5, "w":1.25}, + {"label":"Space", "x":7.25, "y":5, "w":2.75}, + {"label":"Alt", "x":10, "y":5, "w":1.25}, + {"label":"Win", "x":11.25, "y":5, "w":1.25}, + {"label":"\u2190", "x":13, "y":5}, + {"label":"\u2193", "x":14, "y":5}, + {"label":"\u2192", "x":15, "y":5}, + {"label":"0", "x":16, "y":5}, + {"label":".", "x":17, "y":5}, + {"label":"Enter", "x":18, "y":4, "h":2} + ] + }, "LAYOUT_default": { - "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.25, "y":0}, {"label":"F2", "x":2.25, "y":0}, {"label":"F3", "x":3.25, "y":0}, {"label":"F4", "x":4.25, "y":0}, {"label":"F5", "x":5.5, "y":0}, {"label":"F6", "x":6.5, "y":0}, {"label":"F7", "x":7.5, "y":0}, {"label":"F8", "x":8.5, "y":0}, {"label":"F9", "x":9.75, "y":0}, {"label":"F10", "x":10.75, "y":0}, {"label":"F11", "x":11.75, "y":0}, {"label":"F12", "x":12.75, "y":0}, {"label":"Del", "x":14, "y":0}, {"label":"Prev", "x":15, "y":0}, {"label":"Next", "x":16, "y":0}, {"label":"Vol -", "x":17, "y":0}, {"label":"Vol +", "x":18, "y":0}, {"label":"\u00ac", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"\"", "x":2, "y":1}, {"label":"\u00a3", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"label":"Backspace", "x":13, "y":1, "w":2}, {"label":"Play", "x":15, "y":1}, {"label":"/", "x":16, "y":1}, {"label":"*", "x":17, "y":1}, {"label":"-", "x":18, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"7", "x":15, "y":2}, {"label":"8", "x":16, "y":2}, {"label":"9", "x":17, "y":2}, {"label":"+", "x":18, "y":2, "h":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"@", "x":11.75, "y":3}, {"label":"Enter", "x":12.75, "y":3, "w":2.25}, {"label":"4", "x":15, "y":3}, {"label":"5", "x":16, "y":3}, {"label":"6", "x":17, "y":3}, {"label":"Shift", "x":0, "y":4, "w":2.25}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"label":"\u2191", "x":14, "y":4}, {"label":"1", "x":15, "y":4}, {"label":"2", "x":16, "y":4}, {"label":"3", "x":17, "y":4}, {"label":"Enter", "x":18, "y":4, "h":2}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"label":"6.25Space", "x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5, "w":1.25}, {"label":"Win", "x":11.25, "y":5, "w":1.25}, {"label":"\u2190", "x":13, "y":5}, {"label":"\u2193", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}, {"label":"0", "x":16, "y":5}, {"label":".", "x":17, "y":5}] + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":1.25, "y":0}, + {"label":"F2", "x":2.25, "y":0}, + {"label":"F3", "x":3.25, "y":0}, + {"label":"F4", "x":4.25, "y":0}, + {"label":"F5", "x":5.5, "y":0}, + {"label":"F6", "x":6.5, "y":0}, + {"label":"F7", "x":7.5, "y":0}, + {"label":"F8", "x":8.5, "y":0}, + {"label":"F9", "x":9.75, "y":0}, + {"label":"F10", "x":10.75, "y":0}, + {"label":"F11", "x":11.75, "y":0}, + {"label":"F12", "x":12.75, "y":0}, + {"label":"Del", "x":14, "y":0}, + {"label":"Prev", "x":15, "y":0}, + {"label":"Next", "x":16, "y":0}, + {"label":"Vol -", "x":17, "y":0}, + {"label":"Vol +", "x":18, "y":0}, + + {"label":"\u00ac", "x":0, "y":1}, + {"label":"!", "x":1, "y":1}, + {"label":"\"", "x":2, "y":1}, + {"label":"\u00a3", "x":3, "y":1}, + {"label":"$", "x":4, "y":1}, + {"label":"%", "x":5, "y":1}, + {"label":"^", "x":6, "y":1}, + {"label":"&", "x":7, "y":1}, + {"label":"*", "x":8, "y":1}, + {"label":"(", "x":9, "y":1}, + {"label":")", "x":10, "y":1}, + {"label":"_", "x":11, "y":1}, + {"label":"+", "x":12, "y":1}, + {"label":"Backspace", "x":13, "y":1, "w":2}, + {"label":"Play", "x":15, "y":1}, + {"label":"/", "x":16, "y":1}, + {"label":"*", "x":17, "y":1}, + {"label":"-", "x":18, "y":1}, + + {"label":"Tab", "x":0, "y":2, "w":1.5}, + {"label":"Q", "x":1.5, "y":2}, + {"label":"W", "x":2.5, "y":2}, + {"label":"E", "x":3.5, "y":2}, + {"label":"R", "x":4.5, "y":2}, + {"label":"T", "x":5.5, "y":2}, + {"label":"Y", "x":6.5, "y":2}, + {"label":"U", "x":7.5, "y":2}, + {"label":"I", "x":8.5, "y":2}, + {"label":"O", "x":9.5, "y":2}, + {"label":"P", "x":10.5, "y":2}, + {"label":"{", "x":11.5, "y":2}, + {"label":"}", "x":12.5, "y":2}, + {"label":"|", "x":13.5, "y":2, "w":1.5}, + {"label":"7", "x":15, "y":2}, + {"label":"8", "x":16, "y":2}, + {"label":"9", "x":17, "y":2}, + + {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, + {"label":"A", "x":1.75, "y":3}, + {"label":"S", "x":2.75, "y":3}, + {"label":"D", "x":3.75, "y":3}, + {"label":"F", "x":4.75, "y":3}, + {"label":"G", "x":5.75, "y":3}, + {"label":"H", "x":6.75, "y":3}, + {"label":"J", "x":7.75, "y":3}, + {"label":"K", "x":8.75, "y":3}, + {"label":"L", "x":9.75, "y":3}, + {"label":":", "x":10.75, "y":3}, + {"label":"@", "x":11.75, "y":3}, + {"label":"Enter", "x":12.75, "y":3, "w":2.25}, + {"label":"4", "x":15, "y":3}, + {"label":"5", "x":16, "y":3}, + {"label":"6", "x":17, "y":3}, + {"label":"+", "x":18, "y":2, "h":2}, + + {"label":"Shift", "x":0, "y":4, "w":2.25}, + {"label":"Z", "x":2.25, "y":4}, + {"label":"X", "x":3.25, "y":4}, + {"label":"C", "x":4.25, "y":4}, + {"label":"V", "x":5.25, "y":4}, + {"label":"B", "x":6.25, "y":4}, + {"label":"N", "x":7.25, "y":4}, + {"label":"M", "x":8.25, "y":4}, + {"label":"<", "x":9.25, "y":4}, + {"label":">", "x":10.25, "y":4}, + {"label":"?", "x":11.25, "y":4}, + {"label":"Shift", "x":12.25, "y":4, "w":1.75}, + {"label":"\u2191", "x":14, "y":4}, + {"label":"1", "x":15, "y":4}, + {"label":"2", "x":16, "y":4}, + {"label":"3", "x":17, "y":4}, + + {"label":"Ctrl", "x":0, "y":5, "w":1.25}, + {"label":"Win", "x":1.25, "y":5, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5, "w":1.25}, + {"label":"6.25Space", "x":3.75, "y":5, "w":6.25}, + {"label":"Alt", "x":10, "y":5, "w":1.25}, + {"label":"Win", "x":11.25, "y":5, "w":1.25}, + {"label":"\u2190", "x":13, "y":5}, + {"label":"\u2193", "x":14, "y":5}, + {"label":"\u2192", "x":15, "y":5}, + {"label":"0", "x":16, "y":5}, + {"label":".", "x":17, "y":5}, + {"label":"Enter", "x":18, "y":4, "h":2} + ] }, "LAYOUT_ansi_splitspace": { - "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.25, "y":0}, {"label":"F2", "x":2.25, "y":0}, {"label":"F3", "x":3.25, "y":0}, {"label":"F4", "x":4.25, "y":0}, {"label":"F5", "x":5.5, "y":0}, {"label":"F6", "x":6.5, "y":0}, {"label":"F7", "x":7.5, "y":0}, {"label":"F8", "x":8.5, "y":0}, {"label":"F9", "x":9.75, "y":0}, {"label":"F10", "x":10.75, "y":0}, {"label":"F11", "x":11.75, "y":0}, {"label":"F12", "x":12.75, "y":0}, {"label":"Del", "x":14, "y":0}, {"label":"Prev", "x":15, "y":0}, {"label":"Next", "x":16, "y":0}, {"label":"Vol -", "x":17, "y":0}, {"label":"Vol +", "x":18, "y":0}, {"label":"\u00ac", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"\"", "x":2, "y":1}, {"label":"\u00a3", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"label":"Backspace", "x":13, "y":1, "w":2}, {"label":"Play", "x":15, "y":1}, {"label":"/", "x":16, "y":1}, {"label":"*", "x":17, "y":1}, {"label":"-", "x":18, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"7", "x":15, "y":2}, {"label":"8", "x":16, "y":2}, {"label":"9", "x":17, "y":2}, {"label":"+", "x":18, "y":2, "h":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"@", "x":11.75, "y":3}, {"label":"Enter", "x":12.75, "y":3, "w":2.25}, {"label":"4", "x":15, "y":3}, {"label":"5", "x":16, "y":3}, {"label":"6", "x":17, "y":3}, {"label":"Shift", "x":0, "y":4, "w":2.25}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"label":"\u2191", "x":14, "y":4}, {"label":"1", "x":15, "y":4}, {"label":"2", "x":16, "y":4}, {"label":"3", "x":17, "y":4}, {"label":"Enter", "x":18, "y":4, "h":2}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"label":"Space", "x":3.75, "y":5, "w":2.25}, {"label":"Layer", "x":6, "y":5, "w":1.25}, {"label":"Space", "x":7.25, "y":5, "w":2.75}, {"label":"Alt", "x":10, "y":5, "w":1.25}, {"label":"Win", "x":11.25, "y":5, "w":1.25}, {"label":"\u2190", "x":13, "y":5}, {"label":"\u2193", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}, {"label":"0", "x":16, "y":5}, {"label":".", "x":17, "y":5}] + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":1.25, "y":0}, + {"label":"F2", "x":2.25, "y":0}, + {"label":"F3", "x":3.25, "y":0}, + {"label":"F4", "x":4.25, "y":0}, + {"label":"F5", "x":5.5, "y":0}, + {"label":"F6", "x":6.5, "y":0}, + {"label":"F7", "x":7.5, "y":0}, + {"label":"F8", "x":8.5, "y":0}, + {"label":"F9", "x":9.75, "y":0}, + {"label":"F10", "x":10.75, "y":0}, + {"label":"F11", "x":11.75, "y":0}, + {"label":"F12", "x":12.75, "y":0}, + {"label":"Del", "x":14, "y":0}, + {"label":"Prev", "x":15, "y":0}, + {"label":"Next", "x":16, "y":0}, + {"label":"Vol -", "x":17, "y":0}, + {"label":"Vol +", "x":18, "y":0}, + + {"label":"\u00ac", "x":0, "y":1}, + {"label":"!", "x":1, "y":1}, + {"label":"\"", "x":2, "y":1}, + {"label":"\u00a3", "x":3, "y":1}, + {"label":"$", "x":4, "y":1}, + {"label":"%", "x":5, "y":1}, + {"label":"^", "x":6, "y":1}, + {"label":"&", "x":7, "y":1}, + {"label":"*", "x":8, "y":1}, + {"label":"(", "x":9, "y":1}, + {"label":")", "x":10, "y":1}, + {"label":"_", "x":11, "y":1}, + {"label":"+", "x":12, "y":1}, + {"label":"Backspace", "x":13, "y":1, "w":2}, + {"label":"Play", "x":15, "y":1}, + {"label":"/", "x":16, "y":1}, + {"label":"*", "x":17, "y":1}, + {"label":"-", "x":18, "y":1}, + + {"label":"Tab", "x":0, "y":2, "w":1.5}, + {"label":"Q", "x":1.5, "y":2}, + {"label":"W", "x":2.5, "y":2}, + {"label":"E", "x":3.5, "y":2}, + {"label":"R", "x":4.5, "y":2}, + {"label":"T", "x":5.5, "y":2}, + {"label":"Y", "x":6.5, "y":2}, + {"label":"U", "x":7.5, "y":2}, + {"label":"I", "x":8.5, "y":2}, + {"label":"O", "x":9.5, "y":2}, + {"label":"P", "x":10.5, "y":2}, + {"label":"{", "x":11.5, "y":2}, + {"label":"}", "x":12.5, "y":2}, + {"label":"|", "x":13.5, "y":2, "w":1.5}, + {"label":"7", "x":15, "y":2}, + {"label":"8", "x":16, "y":2}, + {"label":"9", "x":17, "y":2}, + + {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, + {"label":"A", "x":1.75, "y":3}, + {"label":"S", "x":2.75, "y":3}, + {"label":"D", "x":3.75, "y":3}, + {"label":"F", "x":4.75, "y":3}, + {"label":"G", "x":5.75, "y":3}, + {"label":"H", "x":6.75, "y":3}, + {"label":"J", "x":7.75, "y":3}, + {"label":"K", "x":8.75, "y":3}, + {"label":"L", "x":9.75, "y":3}, + {"label":":", "x":10.75, "y":3}, + {"label":"@", "x":11.75, "y":3}, + {"label":"Enter", "x":12.75, "y":3, "w":2.25}, + {"label":"4", "x":15, "y":3}, + {"label":"5", "x":16, "y":3}, + {"label":"6", "x":17, "y":3}, + {"label":"+", "x":18, "y":2, "h":2}, + + {"label":"Shift", "x":0, "y":4, "w":2.25}, + {"label":"Z", "x":2.25, "y":4}, + {"label":"X", "x":3.25, "y":4}, + {"label":"C", "x":4.25, "y":4}, + {"label":"V", "x":5.25, "y":4}, + {"label":"B", "x":6.25, "y":4}, + {"label":"N", "x":7.25, "y":4}, + {"label":"M", "x":8.25, "y":4}, + {"label":"<", "x":9.25, "y":4}, + {"label":">", "x":10.25, "y":4}, + {"label":"?", "x":11.25, "y":4}, + {"label":"Shift", "x":12.25, "y":4, "w":1.75}, + {"label":"\u2191", "x":14, "y":4}, + {"label":"1", "x":15, "y":4}, + {"label":"2", "x":16, "y":4}, + {"label":"3", "x":17, "y":4}, + + {"label":"Ctrl", "x":0, "y":5, "w":1.25}, + {"label":"Win", "x":1.25, "y":5, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5, "w":1.25}, + {"label":"Space", "x":3.75, "y":5, "w":2.25}, + {"label":"Layer", "x":6, "y":5, "w":1.25}, + {"label":"Space", "x":7.25, "y":5, "w":2.75}, + {"label":"Alt", "x":10, "y":5, "w":1.25}, + {"label":"Win", "x":11.25, "y":5, "w":1.25}, + {"label":"\u2190", "x":13, "y":5}, + {"label":"\u2193", "x":14, "y":5}, + {"label":"\u2192", "x":15, "y":5}, + {"label":"0", "x":16, "y":5}, + {"label":".", "x":17, "y":5}, + {"label":"Enter", "x":18, "y":4, "h":2} + ] }, "LAYOUT_iso": { - "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.25, "y":0}, {"label":"F2", "x":2.25, "y":0}, {"label":"F3", "x":3.25, "y":0}, {"label":"F4", "x":4.25, "y":0}, {"label":"F5", "x":5.5, "y":0}, {"label":"F6", "x":6.5, "y":0}, {"label":"F7", "x":7.5, "y":0}, {"label":"F8", "x":8.5, "y":0}, {"label":"F9", "x":9.75, "y":0}, {"label":"F10", "x":10.75, "y":0}, {"label":"F11", "x":11.75, "y":0}, {"label":"F12", "x":12.75, "y":0}, {"label":"Del", "x":14, "y":0}, {"label":"Prev", "x":15, "y":0}, {"label":"Next", "x":16, "y":0}, {"label":"Vol -", "x":17, "y":0}, {"label":"Vol +", "x":18, "y":0}, {"label":"\u00ac", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"\"", "x":2, "y":1}, {"label":"\u00a3", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"label":"Backspace", "x":13, "y":1, "w":2}, {"label":"Play", "x":15, "y":1}, {"label":"/", "x":16, "y":1}, {"label":"*", "x":17, "y":1}, {"label":"-", "x":18, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.25, "h":2}, {"label":"7", "x":15, "y":2}, {"label":"8", "x":16, "y":2}, {"label":"9", "x":17, "y":2}, {"label":"+", "x":18, "y":2, "h":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"@", "x":11.75, "y":3}, {"label":"~", "x":12.75, "y":3}, {"label":"4", "x":15, "y":3}, {"label":"5", "x":16, "y":3}, {"label":"6", "x":17, "y":3}, {"label":"Shift", "x":0, "y":4, "w":1.25}, {"label":"|", "x":1.25, "y":4}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"label":"\u2191", "x":14, "y":4}, {"label":"1", "x":15, "y":4}, {"label":"2", "x":16, "y":4}, {"label":"3", "x":17, "y":4}, {"label":"Enter", "x":18, "y":4, "h":2}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"label":"6.25Space", "x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5, "w":1.25}, {"label":"Win", "x":11.25, "y":5, "w":1.25}, {"label":"\u2190", "x":13, "y":5}, {"label":"\u2193", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}, {"label":"0", "x":16, "y":5}, {"label":".", "x":17, "y":5}] + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":1.25, "y":0}, + {"label":"F2", "x":2.25, "y":0}, + {"label":"F3", "x":3.25, "y":0}, + {"label":"F4", "x":4.25, "y":0}, + {"label":"F5", "x":5.5, "y":0}, + {"label":"F6", "x":6.5, "y":0}, + {"label":"F7", "x":7.5, "y":0}, + {"label":"F8", "x":8.5, "y":0}, + {"label":"F9", "x":9.75, "y":0}, + {"label":"F10", "x":10.75, "y":0}, + {"label":"F11", "x":11.75, "y":0}, + {"label":"F12", "x":12.75, "y":0}, + {"label":"Del", "x":14, "y":0}, + {"label":"Prev", "x":15, "y":0}, + {"label":"Next", "x":16, "y":0}, + {"label":"Vol -", "x":17, "y":0}, + {"label":"Vol +", "x":18, "y":0}, + + {"label":"\u00ac", "x":0, "y":1}, + {"label":"!", "x":1, "y":1}, + {"label":"\"", "x":2, "y":1}, + {"label":"\u00a3", "x":3, "y":1}, + {"label":"$", "x":4, "y":1}, + {"label":"%", "x":5, "y":1}, + {"label":"^", "x":6, "y":1}, + {"label":"&", "x":7, "y":1}, + {"label":"*", "x":8, "y":1}, + {"label":"(", "x":9, "y":1}, + {"label":")", "x":10, "y":1}, + {"label":"_", "x":11, "y":1}, + {"label":"+", "x":12, "y":1}, + {"label":"Backspace", "x":13, "y":1, "w":2}, + {"label":"Play", "x":15, "y":1}, + {"label":"/", "x":16, "y":1}, + {"label":"*", "x":17, "y":1}, + {"label":"-", "x":18, "y":1}, + + {"label":"Tab", "x":0, "y":2, "w":1.5}, + {"label":"Q", "x":1.5, "y":2}, + {"label":"W", "x":2.5, "y":2}, + {"label":"E", "x":3.5, "y":2}, + {"label":"R", "x":4.5, "y":2}, + {"label":"T", "x":5.5, "y":2}, + {"label":"Y", "x":6.5, "y":2}, + {"label":"U", "x":7.5, "y":2}, + {"label":"I", "x":8.5, "y":2}, + {"label":"O", "x":9.5, "y":2}, + {"label":"P", "x":10.5, "y":2}, + {"label":"{", "x":11.5, "y":2}, + {"label":"}", "x":12.5, "y":2}, + {"label":"7", "x":15, "y":2}, + {"label":"8", "x":16, "y":2}, + {"label":"9", "x":17, "y":2}, + + {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, + {"label":"A", "x":1.75, "y":3}, + {"label":"S", "x":2.75, "y":3}, + {"label":"D", "x":3.75, "y":3}, + {"label":"F", "x":4.75, "y":3}, + {"label":"G", "x":5.75, "y":3}, + {"label":"H", "x":6.75, "y":3}, + {"label":"J", "x":7.75, "y":3}, + {"label":"K", "x":8.75, "y":3}, + {"label":"L", "x":9.75, "y":3}, + {"label":":", "x":10.75, "y":3}, + {"label":"@", "x":11.75, "y":3}, + {"label":"~", "x":12.75, "y":3}, + {"label":"Enter", "x":13.75, "y":2, "w":1.25, "h":2}, + {"label":"4", "x":15, "y":3}, + {"label":"5", "x":16, "y":3}, + {"label":"6", "x":17, "y":3}, + {"label":"+", "x":18, "y":2, "h":2}, + + {"label":"Shift", "x":0, "y":4, "w":1.25}, + {"label":"|", "x":1.25, "y":4}, + {"label":"Z", "x":2.25, "y":4}, + {"label":"X", "x":3.25, "y":4}, + {"label":"C", "x":4.25, "y":4}, + {"label":"V", "x":5.25, "y":4}, + {"label":"B", "x":6.25, "y":4}, + {"label":"N", "x":7.25, "y":4}, + {"label":"M", "x":8.25, "y":4}, + {"label":"<", "x":9.25, "y":4}, + {"label":">", "x":10.25, "y":4}, + {"label":"?", "x":11.25, "y":4}, + {"label":"Shift", "x":12.25, "y":4, "w":1.75}, + {"label":"\u2191", "x":14, "y":4}, + {"label":"1", "x":15, "y":4}, + {"label":"2", "x":16, "y":4}, + {"label":"3", "x":17, "y":4}, + + {"label":"Ctrl", "x":0, "y":5, "w":1.25}, + {"label":"Win", "x":1.25, "y":5, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5, "w":1.25}, + {"label":"6.25Space", "x":3.75, "y":5, "w":6.25}, + {"label":"Alt", "x":10, "y":5, "w":1.25}, + {"label":"Win", "x":11.25, "y":5, "w":1.25}, + {"label":"\u2190", "x":13, "y":5}, + {"label":"\u2193", "x":14, "y":5}, + {"label":"\u2192", "x":15, "y":5}, + {"label":"0", "x":16, "y":5}, + {"label":".", "x":17, "y":5}, + {"label":"Enter", "x":18, "y":4, "h":2} + ] }, "LAYOUT_iso_splitspace": { - "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.25, "y":0}, {"label":"F2", "x":2.25, "y":0}, {"label":"F3", "x":3.25, "y":0}, {"label":"F4", "x":4.25, "y":0}, {"label":"F5", "x":5.5, "y":0}, {"label":"F6", "x":6.5, "y":0}, {"label":"F7", "x":7.5, "y":0}, {"label":"F8", "x":8.5, "y":0}, {"label":"F9", "x":9.75, "y":0}, {"label":"F10", "x":10.75, "y":0}, {"label":"F11", "x":11.75, "y":0}, {"label":"F12", "x":12.75, "y":0}, {"label":"Del", "x":14, "y":0}, {"label":"Prev", "x":15, "y":0}, {"label":"Next", "x":16, "y":0}, {"label":"Vol -", "x":17, "y":0}, {"label":"Vol +", "x":18, "y":0}, {"label":"\u00ac", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"\"", "x":2, "y":1}, {"label":"\u00a3", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"label":"Backspace", "x":13, "y":1, "w":2}, {"label":"Play", "x":15, "y":1}, {"label":"/", "x":16, "y":1}, {"label":"*", "x":17, "y":1}, {"label":"-", "x":18, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.25, "h":2}, {"label":"7", "x":15, "y":2}, {"label":"8", "x":16, "y":2}, {"label":"9", "x":17, "y":2}, {"label":"+", "x":18, "y":2, "h":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"@", "x":11.75, "y":3}, {"label":"~", "x":12.75, "y":3}, {"label":"4", "x":15, "y":3}, {"label":"5", "x":16, "y":3}, {"label":"6", "x":17, "y":3}, {"label":"Shift", "x":0, "y":4, "w":1.25}, {"label":"|", "x":1.25, "y":4}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"label":"\u2191", "x":14, "y":4}, {"label":"1", "x":15, "y":4}, {"label":"2", "x":16, "y":4}, {"label":"3", "x":17, "y":4}, {"label":"Enter", "x":18, "y":4, "h":2}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"label":"Space", "x":3.75, "y":5, "w":2.25}, {"label":"Layer", "x":6, "y":5, "w":1.25}, {"label":"Space", "x":7.25, "y":5, "w":2.75}, {"label":"Alt", "x":10, "y":5, "w":1.25}, {"label":"Win", "x":11.25, "y":5, "w":1.25}, {"label":"\u2190", "x":13, "y":5}, {"label":"\u2193", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}, {"label":"0", "x":16, "y":5}, {"label":".", "x":17, "y":5}] + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":1.25, "y":0}, + {"label":"F2", "x":2.25, "y":0}, + {"label":"F3", "x":3.25, "y":0}, + {"label":"F4", "x":4.25, "y":0}, + {"label":"F5", "x":5.5, "y":0}, + {"label":"F6", "x":6.5, "y":0}, + {"label":"F7", "x":7.5, "y":0}, + {"label":"F8", "x":8.5, "y":0}, + {"label":"F9", "x":9.75, "y":0}, + {"label":"F10", "x":10.75, "y":0}, + {"label":"F11", "x":11.75, "y":0}, + {"label":"F12", "x":12.75, "y":0}, + {"label":"Del", "x":14, "y":0}, + {"label":"Prev", "x":15, "y":0}, + {"label":"Next", "x":16, "y":0}, + {"label":"Vol -", "x":17, "y":0}, + {"label":"Vol +", "x":18, "y":0}, + + {"label":"\u00ac", "x":0, "y":1}, + {"label":"!", "x":1, "y":1}, + {"label":"\"", "x":2, "y":1}, + {"label":"\u00a3", "x":3, "y":1}, + {"label":"$", "x":4, "y":1}, + {"label":"%", "x":5, "y":1}, + {"label":"^", "x":6, "y":1}, + {"label":"&", "x":7, "y":1}, + {"label":"*", "x":8, "y":1}, + {"label":"(", "x":9, "y":1}, + {"label":")", "x":10, "y":1}, + {"label":"_", "x":11, "y":1}, + {"label":"+", "x":12, "y":1}, + {"label":"Backspace", "x":13, "y":1, "w":2}, + {"label":"Play", "x":15, "y":1}, + {"label":"/", "x":16, "y":1}, + {"label":"*", "x":17, "y":1}, + {"label":"-", "x":18, "y":1}, + + {"label":"Tab", "x":0, "y":2, "w":1.5}, + {"label":"Q", "x":1.5, "y":2}, + {"label":"W", "x":2.5, "y":2}, + {"label":"E", "x":3.5, "y":2}, + {"label":"R", "x":4.5, "y":2}, + {"label":"T", "x":5.5, "y":2}, + {"label":"Y", "x":6.5, "y":2}, + {"label":"U", "x":7.5, "y":2}, + {"label":"I", "x":8.5, "y":2}, + {"label":"O", "x":9.5, "y":2}, + {"label":"P", "x":10.5, "y":2}, + {"label":"{", "x":11.5, "y":2}, + {"label":"}", "x":12.5, "y":2}, + {"label":"7", "x":15, "y":2}, + {"label":"8", "x":16, "y":2}, + {"label":"9", "x":17, "y":2}, + + {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, + {"label":"A", "x":1.75, "y":3}, + {"label":"S", "x":2.75, "y":3}, + {"label":"D", "x":3.75, "y":3}, + {"label":"F", "x":4.75, "y":3}, + {"label":"G", "x":5.75, "y":3}, + {"label":"H", "x":6.75, "y":3}, + {"label":"J", "x":7.75, "y":3}, + {"label":"K", "x":8.75, "y":3}, + {"label":"L", "x":9.75, "y":3}, + {"label":":", "x":10.75, "y":3}, + {"label":"@", "x":11.75, "y":3}, + {"label":"~", "x":12.75, "y":3}, + {"label":"Enter", "x":13.75, "y":2, "w":1.25, "h":2}, + {"label":"4", "x":15, "y":3}, + {"label":"5", "x":16, "y":3}, + {"label":"6", "x":17, "y":3}, + {"label":"+", "x":18, "y":2, "h":2}, + + {"label":"Shift", "x":0, "y":4, "w":1.25}, + {"label":"|", "x":1.25, "y":4}, + {"label":"Z", "x":2.25, "y":4}, + {"label":"X", "x":3.25, "y":4}, + {"label":"C", "x":4.25, "y":4}, + {"label":"V", "x":5.25, "y":4}, + {"label":"B", "x":6.25, "y":4}, + {"label":"N", "x":7.25, "y":4}, + {"label":"M", "x":8.25, "y":4}, + {"label":"<", "x":9.25, "y":4}, + {"label":">", "x":10.25, "y":4}, + {"label":"?", "x":11.25, "y":4}, + {"label":"Shift", "x":12.25, "y":4, "w":1.75}, + {"label":"\u2191", "x":14, "y":4}, + {"label":"1", "x":15, "y":4}, + {"label":"2", "x":16, "y":4}, + {"label":"3", "x":17, "y":4}, + + {"label":"Ctrl", "x":0, "y":5, "w":1.25}, + {"label":"Win", "x":1.25, "y":5, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5, "w":1.25}, + {"label":"Space", "x":3.75, "y":5, "w":2.25}, + {"label":"Layer", "x":6, "y":5, "w":1.25}, + {"label":"Space", "x":7.25, "y":5, "w":2.75}, + {"label":"Alt", "x":10, "y":5, "w":1.25}, + {"label":"Win", "x":11.25, "y":5, "w":1.25}, + {"label":"\u2190", "x":13, "y":5}, + {"label":"\u2193", "x":14, "y":5}, + {"label":"\u2192", "x":15, "y":5}, + {"label":"0", "x":16, "y":5}, + {"label":".", "x":17, "y":5}, + {"label":"Enter", "x":18, "y":4, "h":2} + ] } } } diff --git a/keyboards/function96/v2/rules.mk b/keyboards/function96/v2/rules.mk index adbe34e7d151..b425156cac63 100644 --- a/keyboards/function96/v2/rules.mk +++ b/keyboards/function96/v2/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/funky40/info.json b/keyboards/funky40/info.json index 13ecd97bbe4c..ce385b76ddb2 100644 --- a/keyboards/funky40/info.json +++ b/keyboards/funky40/info.json @@ -2,11 +2,9 @@ "keyboard_name": "funky40", "url": "", "maintainer": "TheFourthCow", - "width": 12, - "height": 4, "layouts": { "LAYOUT": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"Back
Space", "x":11, "y":0}, {"label":"Tab", "x":0, "y":1}, {"label":"A", "x":1, "y":1}, {"label":"S", "x":2, "y":1}, {"label":"D", "x":3, "y":1}, {"label":"F", "x":4, "y":1}, {"label":"G", "x":5, "y":1}, {"label":"H", "x":6, "y":1}, {"label":"J", "x":7, "y":1}, {"label":"K", "x":8, "y":1}, {"label":"L", "x":9, "y":1}, {"label":":", "x":10, "y":1}, {"label":"\"", "x":11, "y":1}, {"label":"Shift", "x":0, "y":2}, {"label":"Z", "x":1, "y":2}, {"label":"X", "x":2, "y":2}, {"label":"C", "x":3, "y":2}, {"label":"V", "x":4, "y":2}, {"label":"B", "x":5, "y":2}, {"label":"N", "x":6, "y":2}, {"label":"M", "x":7, "y":2}, {"label":"<", "x":8, "y":2}, {"label":">", "x":9, "y":2}, {"label":"?", "x":10, "y":2}, {"label":"Shift", "x":11, "y":2}, {"label":"Ctrl", "x":0, "y":3}, {"label":"Super", "x":1, "y":3}, {"label":"Alt", "x":2, "y":3}, {"x":3, "y":3, "w":2}, {"label":"Del", "x":5, "y":3}, {"x":6, "y":3, "w":2}, {"label":"Left", "x":8, "y":3}, {"label":"Up", "x":9, "y":3}, {"label":"Down", "x":10, "y":3}, {"label":"Right", "x":11, "y":3}] } } -} \ No newline at end of file +} diff --git a/keyboards/funky40/rules.mk b/keyboards/funky40/rules.mk index c50d7999b7e7..4f37f6648134 100644 --- a/keyboards/funky40/rules.mk +++ b/keyboards/funky40/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 - this may disable space cadet right shift/enter -# 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 -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/gami_studio/lex60/info.json b/keyboards/gami_studio/lex60/info.json index 2a2afd40c74b..b8535c7fd950 100644 --- a/keyboards/gami_studio/lex60/info.json +++ b/keyboards/gami_studio/lex60/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Gami Studio Lex60", "url": "", "maintainer": "GamiStudio", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/gami_studio/lex60/rules.mk b/keyboards/gami_studio/lex60/rules.mk index ee841fc37dcc..9d25c3eb7de6 100644 --- a/keyboards/gami_studio/lex60/rules.mk +++ b/keyboards/gami_studio/lex60/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = qmk-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/gboards/combos/colemakdhm-vim-helpers.def b/keyboards/gboards/combos/colemakdhm-vim-helpers.def new file mode 100644 index 000000000000..f4950be05b80 --- /dev/null +++ b/keyboards/gboards/combos/colemakdhm-vim-helpers.def @@ -0,0 +1,9 @@ +// Vim-Mode combos + +COMB(wfEsc, KC_ESC, KC_W, KC_F) +COMB(rsBspc, KC_BSPC, KC_R, KC_S) +COMB(stTab, KC_TAB, KC_S, KC_T) +COMB(cdEnt, KC_ENT, KC_C, KC_D) +COMB(luEsc, KC_ESC, KC_L, KC_U) +COMB(neCol, KC_COLN, KC_N, KC_E) +COMB(mkEnt, KC_ENT, KC_M, KC_K) diff --git a/keyboards/gboards/g/keymap_combo.h b/keyboards/gboards/g/keymap_combo.h index 58e99863eaeb..b92b6a4bc491 100644 --- a/keyboards/gboards/g/keymap_combo.h +++ b/keyboards/gboards/g/keymap_combo.h @@ -28,7 +28,10 @@ #define TOGG A_ENUM enum combos { #include "combos.def" + COMBO_LENGTH }; +// Export length to combo module +uint16_t COMBO_LEN = COMBO_LENGTH; // Bake combos into mem #undef COMB @@ -53,9 +56,6 @@ combo_t key_combos[] = { #undef SUBS #undef TOGG -// Export length to combo module -int COMBO_LEN = sizeof(key_combos) / sizeof(key_combos[0]); - // Fill QMK hook #define COMB BLANK #define SUBS A_ACTI diff --git a/keyboards/gboards/gergoplex/config.h b/keyboards/gboards/gergoplex/config.h new file mode 100644 index 000000000000..a6d8d6b1bed9 --- /dev/null +++ b/keyboards/gboards/gergoplex/config.h @@ -0,0 +1,52 @@ +/* +Copyright 2012 Jun Wako +Copyright 2013 Oleg Kostyuk + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +// Copy and worked on with love from the EZ team + +#pragma once +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x6B0A +#define PRODUCT_ID 0x0002 +#define DEVICE_VER 0x0001 +#define MANUFACTURER g Heavy Industries +#define PRODUCT GergoPlex + +/* key matrix size */ +#define MATRIX_ROWS 10 +#define MATRIX_ROWS_PER_SIDE (MATRIX_ROWS / 2) +#define MATRIX_COLS 4 + +/* + * 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 + */ +#define MATRIX_ROW_PINS { F6, F5, F4, F1 } +#define MATRIX_COL_PINS { B1, B2, B3, D2, D3 } +#define UNUSED_PINS +#define IGNORE_MOD_TAP_INTERRUPT +#define COMBO_ALLOW_ACTION_KEYS +#define COMBO_VARIABLE_LEN + +#define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LCTL) | MOD_BIT(KC_RCTL)) || get_mods() == (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT))) + +#define DEBOUNCE 5 diff --git a/keyboards/gboards/gergoplex/gergoplex.c b/keyboards/gboards/gergoplex/gergoplex.c new file mode 100644 index 000000000000..1e44583895a5 --- /dev/null +++ b/keyboards/gboards/gergoplex/gergoplex.c @@ -0,0 +1,68 @@ +/* Copyright 2021 Jane Bernhardt + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "gergoplex.h" + +bool i2c_initialized = 0; +i2c_status_t mcp23018_status = 0x20; + +void matrix_init_kb(void) { + matrix_init_user(); +} + +uint8_t init_mcp23018(void) { + print("starting init"); + mcp23018_status = 0x20; + + // I2C subsystem + + if (i2c_initialized == 0) { + i2c_init(); // on pins D(1,0) + i2c_initialized = true; + _delay_ms(1000); + } + + // set pin direction + // - unused : input : 1 + // - input : input : 1 + // - driving : output : 0 + mcp23018_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); + if (mcp23018_status) goto out; + mcp23018_status = i2c_write(IODIRA, I2C_TIMEOUT); + if (mcp23018_status) goto out; + mcp23018_status = i2c_write(0b11000001, I2C_TIMEOUT); + if (mcp23018_status) goto out; + mcp23018_status = i2c_write(0b11111111, I2C_TIMEOUT); + if (mcp23018_status) goto out; + i2c_stop(); + + // set pull-up + // - unused : on : 1 + // - input : on : 1 + // - driving : off : 0 + mcp23018_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); + if (mcp23018_status) goto out; + mcp23018_status = i2c_write(GPPUA, I2C_TIMEOUT); + if (mcp23018_status) goto out; + mcp23018_status = i2c_write(0b11000001, I2C_TIMEOUT); + if (mcp23018_status) goto out; + mcp23018_status = i2c_write(0b11111111, I2C_TIMEOUT); + if (mcp23018_status) goto out; + +out: + i2c_stop(); + return mcp23018_status; +} diff --git a/keyboards/gboards/gergoplex/gergoplex.h b/keyboards/gboards/gergoplex/gergoplex.h new file mode 100644 index 000000000000..507072a3761d --- /dev/null +++ b/keyboards/gboards/gergoplex/gergoplex.h @@ -0,0 +1,56 @@ +/* Copyright 2021 Jane Bernhardt + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" +#include "i2c_master.h" + +extern i2c_status_t mcp23018_status; +#define I2C_TIMEOUT 1000 +#define CPU_PRESCALE(n) (CLKPR = 0x80, CLKPR = (n)) +#define CPU_16MHz 0x00 + +// I2C aliases and register addresses (see "mcp23018.md") +#define I2C_ADDR 0x20 // 0b0100000 +#define I2C_ADDR_WRITE ((I2C_ADDR << 1) | I2C_WRITE) +#define I2C_ADDR_READ ((I2C_ADDR << 1) | I2C_READ) +#define IODIRA 0x00 // i/o direction register +#define IODIRB 0x01 +#define GPPUA 0x0C // GPIO pull-up resistor register +#define GPIOA 0x12 // general purpose i/o port register (write modifies OLAT) +#define OLATA 0x14 // output latch register + +uint8_t init_mcp23018(void); + +#define LAYOUT_split_3x5_3( \ + L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \ + L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \ + L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \ + L30, L31, L32, R30, R31, R32 \ + ) \ + { \ + {L04, L14, L24, KC_NO}, \ + {L03, L13, L23, L32}, \ + {L02, L12, L22, L31}, \ + {L01, L11, L21, L30}, \ + {L00, L10, L20, KC_NO}, \ + {R00, R10, R20, KC_NO}, \ + {R01, R11, R21, R30}, \ + {R02, R12, R22, R31}, \ + {R03, R13, R23, R32}, \ + {R04, R14, R24, KC_NO}, \ + } diff --git a/keyboards/gboards/gergoplex/keymaps/colemak-dhm/combos.def b/keyboards/gboards/gergoplex/keymaps/colemak-dhm/combos.def new file mode 100644 index 000000000000..2aac5cb4ff79 --- /dev/null +++ b/keyboards/gboards/gergoplex/keymaps/colemak-dhm/combos.def @@ -0,0 +1,10 @@ +// List any combo dictionaries you want loaded to your device below! + +// User includes +#include "gergoplex.def" + +// QMK wide includes +#include "combos/colemakdhm-vim-helpers.def" + +// Word completion +// #include "combos/eng-combos.def" diff --git a/keyboards/gboards/gergoplex/keymaps/colemak-dhm/gergoplex.def b/keyboards/gboards/gergoplex/keymaps/colemak-dhm/gergoplex.def new file mode 100644 index 000000000000..7ed0122c4b44 --- /dev/null +++ b/keyboards/gboards/gergoplex/keymaps/colemak-dhm/gergoplex.def @@ -0,0 +1,11 @@ +// Gergoplex colemak-dhm specfic combos +COMB(osBacksl, KC_BSLS, KC_Y, KC_SCLN) +COMB(mnLess, KC_LT, KC_M, KC_N) +COMB(eiGreat, KC_GT, KC_E, KC_I) +COMB(xcDash, KC_MINS, KC_X, KC_C) +COMB(hcUnds, KC_UNDS, KC_H, KC_COMM) +COMB(khQuot, KC_QUOT, KC_K, KC_H) +COMB(gvClic, KC_BTN1, KC_G, KC_V) +COMB(tdClic, KC_BTN2, KC_T, KC_D) + +SUBS(pasta, "I would just like to interject for a moment.", KC_H, KC_J, KC_K, KC_L) diff --git a/keyboards/gboards/gergoplex/keymaps/colemak-dhm/keymap.c b/keyboards/gboards/gergoplex/keymaps/colemak-dhm/keymap.c new file mode 100644 index 000000000000..ec2c17f8bcaa --- /dev/null +++ b/keyboards/gboards/gergoplex/keymaps/colemak-dhm/keymap.c @@ -0,0 +1,99 @@ +/* Good on you for modifying your layout! if you don't have + * time to read the QMK docs, a list of keycodes can be found at + * https://github.com/qmk/qmk_firmware/blob/master/docs/keycodes.md + */ + +#include "gergoplex.h" +#include "g/keymap_combo.h" + +enum { + _ALPHA, // default (Colemak DHm) + _SPECIAL, // special characters + _NUMBERS // numbers/function/motion +}; + +// alpha hold modifiers +#define KC_CTL_A MT(MOD_LCTL, KC_A) // Tap for A, hold for Control +#define KC_CTL_O MT(MOD_RCTL, KC_O) // Tap for colon, hold for Control +#define KC_SFT_Z MT(MOD_LSFT, KC_Z) // Tap for Z, hold for Shift +#define KC_SFT_SL MT(MOD_RSFT, KC_SLSH) // Tap for slash, hold for Shift + +// thumb modifiers/toggles +#define KC_GUI_ESC MT(MOD_LGUI, KC_ESC) // Tap for Esc, hold for GUI (Meta, Command, Win) +#define KC_ALT_ENT MT(MOD_LALT, KC_ENT) // Tap for Enter, hold for Alt (Option) +#define KC_SPE_SPC LT(_SPECIAL, KC_SPC) // Tap for Space, hold for Special layer +#define KC_NUM_SPC LT(_NUMBERS, KC_SPC) // Tap for Space, hold for Numbers layer +#define KC_SFT_TAB MT(MOD_RSFT, KC_TAB) // Tap for Tab, hold for Right Shift + + /* Combomap + * + * ,-------------------------------. ,-------------------------------. + * | | ESC | | | | | ESC | \ | + * |-------+-----+-----+-----+-----| |-----+-----+-----+-----+-------| + * | | BSPC TAB | | | < : > | | + * |-------+-----+-----+-RMB-+-LMB-| |ENTER+-----+-----+-----+-------| + * | | - ENTER | | | ' _ | | | + * `-------------------------------' `-------------------------------' + * .-----------------. .-----------------. + * | | | | | | | | + * '-----------------' '-----------------' + */ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap 0: Alpha layer / Colemak DHm + * + * ,-------------------------------. ,-------------------------------. + * | Q | W | F | P | B | | J | L | U | Y | ; | + * |-------+-----+-----+-----+-----| |-----+-----+-----+-----+-------| + * | CTRL A| R | S | T | G | | M | N | E | I | O | + * |-------+-----+-----+-----+-----| |-----+-----+-----+-----+-------| + * | SHFT Z| X | C | D | V | | K | H | < | > |SHFT / | + * `-------------------------------' `-------------------------------' + * .------------------------------. .----------------------. + * | ESC META | ENT ALT | SPC SPE | | SPC NUM | SHFT | TAB | + * '------------------------------' '----------------------' + */ + [_ALPHA] = LAYOUT_split_3x5_3( + KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, + KC_CTL_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_CTL_O, + KC_SFT_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMMA, KC_DOT, KC_SFT_SL, + KC_GUI_ESC, KC_ALT_ENT, KC_SPE_SPC, KC_NUM_SPC, KC_LSFT, KC_SFT_TAB), + + /* Keymap 1: Special characters layer + * + * ,-------------------------------. ,-------------------------------. + * | ! | @ | { | } | | | | ` | ~ | | | \ | + * |-------+-----+-----+-----+-----| |-----+-----+-----+-----+-------| + * | # | $ | ( | ) | RMB | | + | - | / | * | ' | + * |-------+-----+-----+-----+-----| |-----+-----+-----+-----+-------| + * | % | ^ | [ | ] | LMB | | & | = | , | . | - | + * `-------------------------------' `-------------------------------' + * .-------------------------. .-----------------. + * | ComboToggle | ; | = | | = | ; | DEL | + * '-------------------------' '-----------------' + */ + [_SPECIAL] = LAYOUT_split_3x5_3( + KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_GRV, KC_TILD, KC_TRNS, KC_TRNS, KC_BSLS, + KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_BTN2, KC_PLUS, KC_MINS, KC_SLSH, KC_ASTR, KC_QUOT, + KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_BTN1, KC_AMPR, KC_EQL, KC_COMM, KC_DOT, KC_MINS, + CMB_TOG, KC_SCLN, KC_EQL, KC_EQL, KC_SCLN, KC_DEL), + + /* Keymap 2: Numbers/Function/Motion layer + * + * ,-------------------------------. ,-------------------------------. + * | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | + * |-------+-----+-----+-----+-----| |-----+-----+-----+-----+-------| + * | F1 | F2 | F3 | F4 | F5 | | LFT | DWN | UP | RGT | VOLUP | + * |-------+-----+-----+-----+-----| |-----+-----+-----+-----+-------| + * | F6 | F7 | F8 | F9 | F10 | | MLFT| MDWN| MUP | MRGT| VOLDN | + * `-------------------------------' `-------------------------------' + * .-----------------. .-----------------. + * | F11 | F12 | | | | PLY | SKP | + * '-----------------' '-----------------' + */ + [_NUMBERS] = LAYOUT_split_3x5_3( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_VOLU, + KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_VOLD, + KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT) +}; diff --git a/keyboards/gboards/gergoplex/keymaps/colemak-dhm/rules.mk b/keyboards/gboards/gergoplex/keymaps/colemak-dhm/rules.mk new file mode 100644 index 000000000000..e882b8008db2 --- /dev/null +++ b/keyboards/gboards/gergoplex/keymaps/colemak-dhm/rules.mk @@ -0,0 +1,17 @@ +#---------------------------------------------------------------------------- +# make gboards/gergoplex:default:flash +# Make sure you have dfu-programmer installed! +#---------------------------------------------------------------------------- + +#Debug options +VERBOSE = no +DEBUG_MATRIX_SCAN_RATE = no +DEBUG_MATRIX = no +CONSOLE_ENABLE = no + +#Combos! +VPATH += keyboards/gboards/ + +ifeq ($(strip $(DEBUG_MATRIX)), yes) + OPT_DEFS += -DDEBUG_MATRIX +endif diff --git a/keyboards/gboards/gergoplex/keymaps/default/combos.def b/keyboards/gboards/gergoplex/keymaps/default/combos.def new file mode 100644 index 000000000000..97ea961e6e16 --- /dev/null +++ b/keyboards/gboards/gergoplex/keymaps/default/combos.def @@ -0,0 +1,11 @@ +// List any combo dictionaries you want loaded to your device below! + +// QMK wide includes +#include "combos/germ-vim-helpers.def" +#include "combos/germ-mouse-keys.def" + +// User includes +#include "gergoplex.def" + +// Word completion +// #include "combos/eng-combos.def" diff --git a/keyboards/gboards/gergoplex/keymaps/default/gergoplex.def b/keyboards/gboards/gergoplex/keymaps/default/gergoplex.def new file mode 100644 index 000000000000..6e50571b5b46 --- /dev/null +++ b/keyboards/gboards/gergoplex/keymaps/default/gergoplex.def @@ -0,0 +1,10 @@ +// Gergoplex specfic combos + +COMB(opBacksl, KC_BSLS, KC_O, KC_P) +COMB(hjLess, KC_LT, KC_H, KC_J) +COMB(klGreat, KC_GT, KC_K, KC_L) +COMB(xcDash, KC_MINS, KC_X, KC_C) +COMB(mcUnds, KC_UNDS, KC_M, KC_COMM) +COMB(nmQuot, KC_QUOT, KC_N, KC_M) + +SUBS(pasta, "I'd just like to interject for a moment.", KC_H, KC_J, KC_K, KC_L) diff --git a/keyboards/gboards/gergoplex/keymaps/default/keymap.c b/keyboards/gboards/gergoplex/keymaps/default/keymap.c new file mode 100644 index 000000000000..c63275120466 --- /dev/null +++ b/keyboards/gboards/gergoplex/keymaps/default/keymap.c @@ -0,0 +1,113 @@ +/* Copyright 2021 Jane Bernhardt + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* Good on you for modifying your layout! if you don't have + * time to read the QMK docs, a list of keycodes can be found at + * https://github.com/qmk/qmk_firmware/blob/master/docs/keycodes.md + */ + +#include QMK_KEYBOARD_H +#include "g/keymap_combo.h" + +enum { + _ALPHA, // default + _SPECIAL, // special characters + _NUMBERS // numbers/function/motion +}; + +#define KC_CTL_A MT(MOD_LCTL, KC_A) // Tap for A, hold for Control +#define KC_CTL_CL MT(MOD_LCTL, KC_SCLN) // Tap for colon, hold for Control +#define KC_SFT_Z MT(MOD_RSFT, KC_Z) // Tap for Z, hold for Shift +#define KC_SFT_SL MT(MOD_RSFT, KC_SLSH) // Tap for slash, hold for Shift + +#define KC_GUI_ESC MT(MOD_LGUI, KC_ESC) // Tap for Esc, hold for GUI (Meta, Command, Win) +#define KC_ALT_ENT MT(MOD_LALT, KC_ENT) // Tap for Enter, hold for Alt (Option) +#define KC_SPE_SPC LT(_SPECIAL, KC_SPC) // Tap for Space, hold for Special layer +#define KC_NUM_SPC LT(_NUMBERS, KC_SPC) // Tap for Space, hold for Numbers layer +#define KC_SFT_TAB MT(MOD_RSFT, KC_TAB) // Tap for Tab, hold for Right Shift + + /* Combomap + * + * ,-------------------------------. ,-------------------------------. + * | | ESC | | | | | ESC | \ | + * |-------+-----+-----+-----+-----| |-----+-----+-----+-----+-------| + * | | BSPC TAB | | | < : > | | + * |-------+-----+-----+-RMB-+-LMB-| |ENTER+-----+-----+-----+-------| + * | | - ENTER | | | ' _ | | | + * `-------------------------------' `-------------------------------' + * .-----------------. .-----------------. + * | | | | | | | | + * '-----------------' '-----------------' + */ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap 0: Alpha layer + * + * ,-------------------------------. ,-------------------------------. + * | Q | W | E | R | T | | Y | U | I | O | P | + * |-------+-----+-----+-----+-----| |-----+-----+-----+-----+-------| + * | CTRL A| S | D | F | G | | H | J | K | L |CTRL ; | + * |-------+-----+-----+-----+-----| |-----+-----+-----+-----+-------| + * | SHFT Z| X | C | V | B | | N | M | < | > |SHFT / | + * `-------------------------------' `-------------------------------' + * .------------------------------. .----------------------. + * | ESC META | ENT ALT | SPC SPE | | SPC NUM | SHFT | TAB | + * '------------------------------' '----------------------' + */ + [_ALPHA] = LAYOUT_split_3x5_3( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_CTL_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_CTL_CL, + KC_SFT_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SFT_SL, + KC_GUI_ESC, KC_ALT_ENT, KC_SPE_SPC, KC_NUM_SPC, KC_LSFT, KC_SFT_TAB), + + /* Keymap 1: Special characters layer + * + * ,-------------------------------. ,-------------------------------. + * | ! | @ | { | } | | | | ` | ~ | | | \ | + * |-------+-----+-----+-----+-----| |-----+-----+-----+-----+-------| + * | # | $ | ( | ) | RMB | | + | - | / | * | ' | + * |-------+-----+-----+-----+-----| |-----+-----+-----+-----+-------| + * | % | ^ | [ | ] | LMB | | & | = | , | . | - | + * `-------------------------------' `-------------------------------' + * .-------------------------. .-----------------. + * | ComboToggle | ; | = | | = | ; | DEL | + * '-------------------------' '-----------------' + */ + [_SPECIAL] = LAYOUT_split_3x5_3( + KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_GRV, KC_TILD, KC_TRNS, KC_TRNS, KC_BSLS, + KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_BTN2, KC_PLUS, KC_MINS, KC_SLSH, KC_ASTR, KC_QUOT, + KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_BTN1, KC_AMPR, KC_EQL, KC_COMM, KC_DOT, KC_MINS, + CMB_TOG, KC_SCLN, KC_EQL, KC_EQL, KC_SCLN, KC_DEL), + + /* Keymap 2: Numbers/Function/Motion layer + * + * ,-------------------------------. ,-------------------------------. + * | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | + * |-------+-----+-----+-----+-----| |-----+-----+-----+-----+-------| + * | F1 | F2 | F3 | F4 | F5 | | LFT | DWN | UP | RGT | VOLUP | + * |-------+-----+-----+-----+-----| |-----+-----+-----+-----+-------| + * | F6 | F7 | F8 | F9 | F10 | | MLFT| MDWN| MUP | MRGT| VOLDN | + * `-------------------------------' `-------------------------------' + * .-----------------. .-----------------. + * | F11 | F12 | | | | PLY | SKP | + * '-----------------' '-----------------' + */ + [_NUMBERS] = LAYOUT_split_3x5_3( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_VOLU, + KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_VOLD, + KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT) +}; diff --git a/keyboards/gboards/gergoplex/keymaps/default/rules.mk b/keyboards/gboards/gergoplex/keymaps/default/rules.mk new file mode 100644 index 000000000000..e882b8008db2 --- /dev/null +++ b/keyboards/gboards/gergoplex/keymaps/default/rules.mk @@ -0,0 +1,17 @@ +#---------------------------------------------------------------------------- +# make gboards/gergoplex:default:flash +# Make sure you have dfu-programmer installed! +#---------------------------------------------------------------------------- + +#Debug options +VERBOSE = no +DEBUG_MATRIX_SCAN_RATE = no +DEBUG_MATRIX = no +CONSOLE_ENABLE = no + +#Combos! +VPATH += keyboards/gboards/ + +ifeq ($(strip $(DEBUG_MATRIX)), yes) + OPT_DEFS += -DDEBUG_MATRIX +endif diff --git a/keyboards/gboards/gergoplex/keymaps/georgepetri/combos.def b/keyboards/gboards/gergoplex/keymaps/georgepetri/combos.def new file mode 100644 index 000000000000..a9205c028a09 --- /dev/null +++ b/keyboards/gboards/gergoplex/keymaps/georgepetri/combos.def @@ -0,0 +1,11 @@ +// List any combo dictionaries you want loaded to your device below! + +// QMK wide includes +//#include "combos/germ-vim-helpers.def" +#include "combos/germ-mouse-keys.def" + +// User includes +#include "gergoplex.def" + +// Word completion +// #include "combos/eng-combos.def" diff --git a/keyboards/gboards/gergoplex/keymaps/georgepetri/config.h b/keyboards/gboards/gergoplex/keymaps/georgepetri/config.h new file mode 100644 index 000000000000..d3fe5b8145d0 --- /dev/null +++ b/keyboards/gboards/gergoplex/keymaps/georgepetri/config.h @@ -0,0 +1,27 @@ +/* +Copyright 2012 Jun Wako +Copyright 2013 Oleg Kostyuk + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +// Copy and worked on with love from the EZ team + +#pragma once + +#define HOLD_ON_OTHER_KEY_PRESS_PER_KEY + +#undef DEBOUNCE +#define DEBOUNCE 25 + diff --git a/keyboards/gboards/gergoplex/keymaps/georgepetri/gergoplex.def b/keyboards/gboards/gergoplex/keymaps/georgepetri/gergoplex.def new file mode 100644 index 000000000000..d50d431c8b7a --- /dev/null +++ b/keyboards/gboards/gergoplex/keymaps/georgepetri/gergoplex.def @@ -0,0 +1,7 @@ +// Gergoplex specfic combos + +COMB(hjEnt, KC_ENT, KC_H, KC_J) +COMB(loDel, KC_DEL, KC_L, KC_O) +COMB(pscBspace, KC_BSPC, KC_P, KC_SCLN) +COMB(sdEsc, KC_ESC, KC_D, KC_F) +COMB(fgEsc, KC_ESC, KC_F, KC_G) diff --git a/keyboards/gboards/gergoplex/keymaps/georgepetri/keymap.c b/keyboards/gboards/gergoplex/keymaps/georgepetri/keymap.c new file mode 100644 index 000000000000..e3b894481496 --- /dev/null +++ b/keyboards/gboards/gergoplex/keymaps/georgepetri/keymap.c @@ -0,0 +1,203 @@ +/* Copyright 2021 Jane Bernhardt + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* Good on you for modifying your layout! if you don't have + * time to read the QMK docs, a list of keycodes can be found at + * https://github.com/qmk/qmk_firmware/blob/master/docs/keycodes.md + */ + +#include QMK_KEYBOARD_H +#include "g/keymap_combo.h" + +enum { + _ALPHA, // default + _GAME, // gaming + _SPECIAL, // special characters + _NUMBERS // numbers/function/motion +}; + +typedef enum { + TD_NONE, + TD_UNKNOWN, + TD_SINGLE_TAP, + TD_DOUBLE_TAP, + TD_TRIPLE_TAP +} td_state_t; + +typedef struct { + bool is_press_action; + td_state_t state; +} td_tap_t; + +enum { + GAME +}; + +td_state_t cur_dance(qk_tap_dance_state_t *state); + +void ql_finished(qk_tap_dance_state_t *state, void *user_data); +void ql_reset(qk_tap_dance_state_t *state, void *user_data); + +#define KC_CTL_A MT(MOD_LCTL, KC_A) // Tap for A, hold for Control +#define KC_SFT_Z MT(MOD_RSFT, KC_Z) // Tap for Z, hold for Shift +#define KC_SFT_SL MT(MOD_RSFT, KC_SLSH) // Tap for slash, hold for Shift +#define KC_SPE_SPC LT(_SPECIAL, KC_SPC) // Tap for Space, hold for Special layer +#define KC_NUM_SPC LT(_NUMBERS, KC_SPC) // Tap for Space, hold for Numbers layer + + /* Combomap + * + * ,-------------------------------. ,-------------------------------. + * | | | | | | | | | | | | + * |-------+-----+-----+-----+-----| |-----+-----+-----+-DEL-+-BSPC--| + * | | | ESC ESC | | ENT | | | | + * |-------+-----+-----+-RMB-+-LMB-| |-----+-----+-----+-----+-------| + * | | | | | | | | | | | | + * `-------------------------------' `-------------------------------' + * .-----------------. .-----------------. + * | | | | | | | | + * '-----------------' '-----------------' + */ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Alpha layer + * + * ,-------------------------------. ,-------------------------------. + * | Q | W | E | R | T | | Y | U | I | O | P | + * |-------+-----+-----+-----+-----| |-----+-----+-----+-----+-------| + * | CTRL A| S | D | F | G | | H | J | K | L | ; | + * |-------+-----+-----+-----+-----| |-----+-----+-----+-----+-------| + * | SHFT Z| X | C | V | B | | N | M | , | . |SHFT / | + * `-------------------------------' `-------------------------------' + * .----------------------. .----------------------. + * | META | ALT | SPC SPE | | SPC NUM | TAB | SHFT | + * '----------------------' '----------------------' + */ + [_ALPHA] = LAYOUT_split_3x5_3( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_CTL_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, + KC_SFT_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, TD(GAME), KC_DOT, KC_SFT_SL, + KC_LGUI, KC_LALT, KC_SPE_SPC, KC_NUM_SPC, KC_TAB, KC_RSFT), + + /* Gaming layer + * + * ,-------------------------------. ,-------------------------------. + * | ~ | Q | W | E | R | | Y | U | I | O | P | + * |-------+-----+-----+-----+-----| |-----+-----+-----+-----+-------| + * | CTRL | A | S | D | F | | H | J | K | L | ; | + * |-------+-----+-----+-----+-----| |-----+-----+-----+-----+-------| + * | SHFT | Z | X | C | V | | N | M | , | . |SHFT / | + * `-------------------------------' `-------------------------------' + * .------------------. .----------------------. + * | META | ALT | SPC | | SPC NUM | TAB | SHFT | + * '------------------' '----------------------' + */ + [_GAME] = LAYOUT_split_3x5_3( + KC_TILD, KC_Q, KC_W, KC_E, KC_R, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_LCTL , KC_A, KC_S, KC_D, KC_F, KC_H, KC_J, KC_K, KC_L, KC_SCLN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_N, KC_M, TD(GAME), KC_DOT, KC_SFT_SL, + KC_LGUI, KC_LALT, KC_SPC, KC_NUM_SPC, KC_TAB, KC_RSFT), + + /* Special characters layer + * + * ,-------------------------------. ,-------------------------------. + * | ! | @ | { | } | | | | ` | - | = | / | \ | + * |-------+-----+-----+-----+-----| |-----+-----+-----+-----+-------| + * | # | $ | ( | ) | | | LFT | DWN | UP | RGT | ' | + * |-------+-----+-----+-----+-----| |-----+-----+-----+-----+-------| + * | % | ^ | [ | ] | | | & | ~ | + | * | | + * `-------------------------------' `-------------------------------' + * .-------------------. .-----------------. + * | | | | | | " | _ | + * '-------------------' '-----------------' + */ + [_SPECIAL] = LAYOUT_split_3x5_3( + KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_GRV, KC_MINS, KC_EQL , KC_SLSH, KC_BSLS, + KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, KC_QUOT, + KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TRNS, KC_AMPR, KC_TILD, KC_PLUS, KC_ASTR, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, LSFT(KC_QUOTE), LSFT(KC_MINS)), + + /* Numbers/Function/Motion layer + * + * ,-------------------------------. ,-------------------------------. + * | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | + * |-------+-----+-----+-----+-----| |-----+-----+-----+-----+-------| + * | F1 | F2 | F3 | F4 | F5 | | | | | | | + * |-------+-----+-----+-----+-----| |-----+-----+-----+-----+-------| + * | F6 | F7 | F8 | F9 | F10 | | MLFT| MDWN| MUP | MRGT| | + * `-------------------------------' `-------------------------------' + * .-----------------. .-----------------. + * | F11 | F12 | | | | | | + * '-----------------' '-----------------' + */ + [_NUMBERS] = LAYOUT_split_3x5_3( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_TRNS, + KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + +bool get_hold_on_other_key_press(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_CTL_A: + return false; + default: + return true; + } +} + +td_state_t cur_dance(qk_tap_dance_state_t *state) { + if (state->count == 1) + return TD_SINGLE_TAP; + if (state->count == 2) + return TD_DOUBLE_TAP; + else if (state->count == 3) + return TD_TRIPLE_TAP; + return TD_UNKNOWN; +} + +static td_tap_t ql_tap_state = { + .is_press_action = true, + .state = TD_NONE +}; + +void ql_finished(qk_tap_dance_state_t *state, void *user_data) { + ql_tap_state.state = cur_dance(state); + switch (ql_tap_state.state) { + case TD_SINGLE_TAP: + tap_code(KC_COMMA); + break; + case TD_DOUBLE_TAP: + tap_code(KC_COMMA); + tap_code(KC_COMMA); + break; + case TD_TRIPLE_TAP: + if (layer_state_is(_GAME)) + layer_off(_GAME); + else + layer_on(_GAME); + break; + default: + break; + } +} + +void ql_reset(qk_tap_dance_state_t *state, void *user_data) { + ql_tap_state.state = TD_NONE; +} + +qk_tap_dance_action_t tap_dance_actions[] = { + [GAME] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, ql_finished, ql_reset, 275) +}; diff --git a/keyboards/gboards/gergoplex/keymaps/georgepetri/readme.md b/keyboards/gboards/gergoplex/keymaps/georgepetri/readme.md new file mode 100644 index 000000000000..7c8a6f202348 --- /dev/null +++ b/keyboards/gboards/gergoplex/keymaps/georgepetri/readme.md @@ -0,0 +1,6 @@ +# George Petri's Gergoplex layout +Vim and programming focused layout. +``` +qmk compile -kb gboards/gergoplex -km georgepetri +qmk flash -kb gboards/gergoplex -km georgepetri +``` diff --git a/keyboards/gboards/gergoplex/keymaps/georgepetri/rules.mk b/keyboards/gboards/gergoplex/keymaps/georgepetri/rules.mk new file mode 100644 index 000000000000..e4064d493254 --- /dev/null +++ b/keyboards/gboards/gergoplex/keymaps/georgepetri/rules.mk @@ -0,0 +1,19 @@ +#---------------------------------------------------------------------------- +# make gboards/gergoplex:default:flash +# Make sure you have dfu-programmer installed! +#---------------------------------------------------------------------------- + +#Debug options +VERBOSE = no +DEBUG_MATRIX_SCAN_RATE = no +DEBUG_MATRIX = no +CONSOLE_ENABLE = no + +#Combos! +VPATH += keyboards/gboards/ + +ifeq ($(strip $(DEBUG_MATRIX)), yes) + OPT_DEFS += -DDEBUG_MATRIX +endif + +TAP_DANCE_ENABLE = yes diff --git a/keyboards/gboards/gergoplex/matrix.c b/keyboards/gboards/gergoplex/matrix.c new file mode 100644 index 000000000000..716390241a1d --- /dev/null +++ b/keyboards/gboards/gergoplex/matrix.c @@ -0,0 +1,241 @@ +/* + +Copyright 2013 Oleg Kostyuk + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "matrix.h" +#include +#include +#include +#include "wait.h" +#include "action_layer.h" +#include "print.h" +#include "debug.h" +#include "util.h" +#include "debounce.h" +#include "gergoplex.h" + +#ifdef BALLER +# include +# include "pointing_device.h" +#endif + +#ifndef DEBOUNCE +# define DEBOUNCE 5 +#endif + +// ATmega pin defs +#define ROW1 (1 << 6) +#define ROW2 (1 << 5) +#define ROW3 (1 << 4) +#define ROW4 (1 << 1) + +/* matrix state(1:on, 0:off) */ +static matrix_row_t matrix[MATRIX_ROWS]; +/* + * matrix state(1:on, 0:off) + * contains the raw values without debounce filtering of the last read cycle. + */ +static matrix_row_t raw_matrix[MATRIX_ROWS]; + +static const pin_t row_pins[MATRIX_COLS] = MATRIX_ROW_PINS; +// Right-hand side only pins, the left side is controlled my MCP +static const pin_t col_pins[MATRIX_ROWS_PER_SIDE] = MATRIX_COL_PINS; + +// Debouncing: store for each key the number of scans until it's eligible to +// change. When scanning the matrix, ignore any changes in keys that have +// already changed in the last DEBOUNCE scans. + +static matrix_row_t read_cols(uint8_t row); +static void init_cols(void); +static void unselect_rows(void); +static void select_row(uint8_t row); + +static uint8_t mcp23018_reset_loop; + +__attribute__((weak)) void matrix_init_user(void) {} +__attribute__((weak)) void matrix_scan_user(void) {} +__attribute__((weak)) void matrix_scan_kb(void) { matrix_scan_user(); } + +void matrix_init(void) { + // initialize row and col + mcp23018_status = init_mcp23018(); + unselect_rows(); + init_cols(); + + // initialize matrix state: all keys off + for (uint8_t i = 0; i < MATRIX_ROWS; i++) { + matrix[i] = 0; + raw_matrix[i] = 0; + } + + debounce_init(MATRIX_ROWS); + matrix_init_quantum(); +} +void matrix_power_up(void) { + mcp23018_status = init_mcp23018(); + + unselect_rows(); + init_cols(); + + // initialize matrix state: all keys off + for (uint8_t i = 0; i < MATRIX_ROWS; i++) { + matrix[i] = 0; + } +} + +// Reads and stores a row, returning +// whether a change occurred. +static inline bool store_raw_matrix_row(uint8_t index) { + matrix_row_t temp = read_cols(index); + if (raw_matrix[index] != temp) { + raw_matrix[index] = temp; + return true; + } + return false; +} +uint8_t matrix_scan(void) { + if (mcp23018_status) { // if there was an error + if (++mcp23018_reset_loop == 0) { + // if (++mcp23018_reset_loop >= 1300) { + // since mcp23018_reset_loop is 8 bit - we'll try to reset once in 255 matrix scans + // this will be approx bit more frequent than once per second + print("trying to reset mcp23018\n"); + mcp23018_status = init_mcp23018(); + if (mcp23018_status) { + print("left side not responding\n"); + } else { + print("left side attached\n"); + } + } + } + + bool changed = false; + for (uint8_t i = 0; i < MATRIX_ROWS_PER_SIDE; i++) { + // select rows from left and right hands + uint8_t left_index = i; + uint8_t right_index = i + MATRIX_ROWS_PER_SIDE; + select_row(left_index); + select_row(right_index); + + // we don't need a 30us delay anymore, because selecting a + // left-hand row requires more than 30us for i2c. + + changed |= store_raw_matrix_row(left_index); + changed |= store_raw_matrix_row(right_index); + + unselect_rows(); + } + + debounce(raw_matrix, matrix, MATRIX_ROWS, changed); + matrix_scan_quantum(); + +#ifdef DEBUG_MATRIX + for (uint8_t c = 0; c < MATRIX_COLS; c++) + for (uint8_t r = 0; r < MATRIX_ROWS; r++) + if (matrix_is_on(r, c)) xprintf("r:%d c:%d \n", r, c); +#endif + + return 1; +} + +bool matrix_is_modified(void) // deprecated and evidently not called. +{ + return true; +} + +inline bool matrix_is_on(uint8_t row, uint8_t col) { return (matrix[row] & ((matrix_row_t)1 << col)); } +inline matrix_row_t matrix_get_row(uint8_t row) { return matrix[row]; } + +void matrix_print(void) { + print("\nr/c 0123456789ABCDEF\n"); + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + print_hex8(row); + print(": "); + print_bin_reverse16(matrix_get_row(row)); + print("\n"); + } +} +uint8_t matrix_key_count(void) { + uint8_t count = 0; + for (uint8_t i = 0; i < MATRIX_ROWS; i++) { + count += bitpop16(matrix[i]); + } + return count; +} + +// Remember this means ROWS +static void init_cols(void) { + for (uint8_t row = 0; row < MATRIX_COLS; row++) { + setPinInputHigh(row_pins[row]); + } +} + +static matrix_row_t read_cols(uint8_t row) { + if (row < 5) { + if (mcp23018_status) { // if there was an error + return 0; + } else { + uint8_t data = 0; + mcp23018_status = i2c_start(I2C_ADDR_READ, I2C_TIMEOUT); + if (mcp23018_status) goto out; + mcp23018_status = i2c_read_nack(I2C_TIMEOUT); + if (mcp23018_status < 0) goto out; + data = ~((uint8_t)mcp23018_status); + mcp23018_status = I2C_STATUS_SUCCESS; + out: + i2c_stop(); + +#ifdef DEBUG_MATRIX + if (data != 0x00) xprintf("I2C: %d\n", data); +#endif + return data; + } + } else { + return ~((((PINF & ROW4) >> 1) | ((PINF & (ROW1 | ROW2 | ROW3)) >> 3)) & 0xF); + } +} + +// Row pin configuration +static void unselect_rows(void) { + // no need to unselect on mcp23018, because the select step sets all + // the other row bits high, and it's not changing to a different direction + + for (uint8_t col = 0; col < MATRIX_ROWS_PER_SIDE; col++) { + setPinInput(col_pins[col]); + writePinLow(col_pins[col]); + } +} + +static void select_row(uint8_t row) { + if (row < 5) { + // select on mcp23018 + if (mcp23018_status) { // do nothing on error + } else { // set active row low : 0 // set other rows hi-Z : 1 + mcp23018_status = i2c_start(I2C_ADDR_WRITE, I2C_TIMEOUT); + if (mcp23018_status) goto out; + mcp23018_status = i2c_write(GPIOA, I2C_TIMEOUT); + if (mcp23018_status) goto out; + mcp23018_status = i2c_write(0xFF & ~(1 << (row + 1)), I2C_TIMEOUT); + if (mcp23018_status) goto out; + out: + i2c_stop(); + } + } else { + setPinOutput(col_pins[row - MATRIX_ROWS_PER_SIDE]); + writePinLow(col_pins[row - MATRIX_ROWS_PER_SIDE]); + } +} diff --git a/keyboards/gboards/gergoplex/readme.md b/keyboards/gboards/gergoplex/readme.md new file mode 100644 index 000000000000..7728d90d41fa --- /dev/null +++ b/keyboards/gboards/gergoplex/readme.md @@ -0,0 +1,43 @@ +# GergoPlex + +![GergoPlex](https://assets.bigcartel.com/product_images/248890490/IMG_20191114_1406385-01-01.jpeg) + +A compact 30% (5x3+3) Split Keyboard from g Heavy Industries + +* Keyboard Maintainer: [Jane Bernhardt](https://github.com/germ) +* Hardware Supported: GergoPlex (Kit, Partial, Ready) +* Hardware Availability: [gboards.ca](http://gboards.ca) + +## Firmware building + +Build using the following command (after setting up your build environment): + +``` +make gboards/gergoplex: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). + +Switch `default` with `colemak-dhm` if you prefer to use [Colemak Mod-DH layout](https://colemakmods.github.io/mod-dh/). + +## Flashing + +Press the small SMD button on the right side board, and run: + +``` +make gboards/gergoplex:default:flash +``` + +### Troubleshooting + +See [this issue](https://github.com/qmk/qmk_toolbox/issues/58) for solutions if you're seeing: +``` +dfu-programmer: no device present. +ERROR: Bootloader not found. Trying again in 5s. +``` + +## Have an idea for a gadget or a keymap? + +[Reach out to me!](mailto:jane@gboards.ca) or submit a PR! diff --git a/keyboards/gboards/gergoplex/rules.mk b/keyboards/gboards/gergoplex/rules.mk new file mode 100644 index 000000000000..422c84114611 --- /dev/null +++ b/keyboards/gboards/gergoplex/rules.mk @@ -0,0 +1,18 @@ +MCU = atmega32u4 + +BOOTLOADER = atmel-dfu + +CUSTOM_MATRIX = yes +MOUSEKEY_ENABLE = yes # Mouse keys +COMBO_ENABLE = yes +EXTRAKEY_ENABLE = yes +CONSOLE_ENABLE = no +NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +COMMAND_ENABLE = yes +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite + +LAYOUTS = split_3x5_3 + +DEBOUNCE_TYPE = sym_eager_pr +SRC += matrix.c +QUANTUM_LIB_SRC += i2c_master.c diff --git a/keyboards/geekboards/macropad_v2/config.h b/keyboards/geekboards/macropad_v2/config.h index 5f11cdddb012..cdb3a7dbe82a 100644 --- a/keyboards/geekboards/macropad_v2/config.h +++ b/keyboards/geekboards/macropad_v2/config.h @@ -41,34 +41,66 @@ #define WS2812_DMA_CHANNEL 3 #ifdef RGB_MATRIX_ENABLE -#define RGB_MATRIX_KEYPRESSES +#define RGB_MATRIX_KEYPRESSES #define RGB_MATRIX_FRAMEBUFFER_EFFECTS -#define DISABLE_RGB_MATRIX_ALPHAS_MODS -#define DISABLE_RGB_MATRIX_BAND_SAT -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL -#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN -#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON -#define DISABLE_RGB_MATRIX_CYCLE_SPIRAL -#define DISABLE_RGB_MATRIX_RAINBOW_BEACON -#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS -#define DISABLE_RGB_MATRIX_RAINDROPS -#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS -#define DISABLE_RGB_MATRIX_DIGITAL_RAIN -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +// # define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +// # define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +// # define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +// # define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +// # define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +// # define ENABLE_RGB_MATRIX_RAINBOW_BEACON +// # define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +// # define ENABLE_RGB_MATRIX_RAINDROPS +// # define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +// # define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH -#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_UP_DOWN -#define RGB_MATRIX_STARTUP_SAT 255 -#define RGB_MATRIX_STARTUP_VAL 192 -#define RGB_MATRIX_STARTUP_SPD 30 +# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_UP_DOWN +# define RGB_MATRIX_STARTUP_SAT 255 +# define RGB_MATRIX_STARTUP_VAL 192 +# define RGB_MATRIX_STARTUP_SPD 30 #endif //RGB_MATRIX_ENABLE -#define RGB_DISABLE_WHEN_USB_SUSPENDED true +#define RGB_DISABLE_WHEN_USB_SUSPENDED #define WAIT_FOR_USB +#define USB_POLLING_INTERVAL_MS 1 /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ #define DEBOUNCE 3 @@ -76,3 +108,5 @@ /* Bootmagic Lite key configuration */ #define BOOTMAGIC_LITE_ROW 0 #define BOOTMAGIC_LITE_COLUMN 0 + +#define TAP_CODE_DELAY 10 diff --git a/keyboards/geekboards/macropad_v2/info.json b/keyboards/geekboards/macropad_v2/info.json index 144fbde1e6a1..770ebbb0f4cb 100644 --- a/keyboards/geekboards/macropad_v2/info.json +++ b/keyboards/geekboards/macropad_v2/info.json @@ -2,8 +2,6 @@ "keyboard_name": "macropad_v2", "url": "https://geekboards.ru/", "maintainer": "ruddy17", - "width": 4, - "height": 2, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/geekboards/macropad_v2/rules.mk b/keyboards/geekboards/macropad_v2/rules.mk index 47db87709ddf..c7ed1bd49f41 100644 --- a/keyboards/geekboards/macropad_v2/rules.mk +++ b/keyboards/geekboards/macropad_v2/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output RGB_MATRIX_ENABLE = yes RGB_MATRIX_DRIVER = WS2812 diff --git a/keyboards/geekboards/tester/config.h b/keyboards/geekboards/tester/config.h index 4f072c0ee6bd..ac3b95c7e76a 100644 --- a/keyboards/geekboards/tester/config.h +++ b/keyboards/geekboards/tester/config.h @@ -24,16 +24,61 @@ #define DEBOUNCE 3 #ifdef RGB_MATRIX_ENABLE #define RGB_DISABLE_AFTER_TIMEOUT 0 -#define RGB_DISABLE_WHEN_USB_SUSPENDED true +#define RGB_DISABLE_WHEN_USB_SUSPENDED #define RGB_MATRIX_KEYPRESSES -#define DISABLE_RGB_MATRIX_SPLASH -#define DISABLE_RGB_MATRIX_MULTISPLASH -#define DISABLE_RGB_MATRIX_SOLID_SPLASH -#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH -#define DRIVER_ADDR_1 0b1110100 -#define DRIVER_ADDR_2 0b1110101 -#define DRIVER_COUNT 2 -#define DRIVER_1_LED_TOTAL 8 -#define DRIVER_2_LED_TOTAL 0 -#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) -#endif \ No newline at end of file +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// # define ENABLE_RGB_MATRIX_SPLASH +// # define ENABLE_RGB_MATRIX_MULTISPLASH +// # define ENABLE_RGB_MATRIX_SOLID_SPLASH +// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + +# define DRIVER_ADDR_1 0b1110100 +# define DRIVER_ADDR_2 0b1110101 +# define DRIVER_COUNT 2 +# define DRIVER_1_LED_TOTAL 8 +# define DRIVER_2_LED_TOTAL 0 +# define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) +#endif diff --git a/keyboards/geekboards/tester/info.json b/keyboards/geekboards/tester/info.json index 874ce7d887d6..9882aa6850ce 100644 --- a/keyboards/geekboards/tester/info.json +++ b/keyboards/geekboards/tester/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Geekboards 8-keys macropad", "url": "", "maintainer": "moyi4681", - "width": 4, - "height": 2, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/geekboards/tester/keymaps/default/keymap.c b/keyboards/geekboards/tester/keymaps/default/keymap.c index e68f15f63dd1..acf63cb36af9 100644 --- a/keyboards/geekboards/tester/keymaps/default/keymap.c +++ b/keyboards/geekboards/tester/keymaps/default/keymap.c @@ -9,15 +9,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_F4, KC_F5, KC_F6, KC_F7 ), }; - -void matrix_init_user(void) { - //user initialization -} - -void matrix_scan_user(void) { - //user matrix -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} diff --git a/keyboards/geekboards/tester/rules.mk b/keyboards/geekboards/tester/rules.mk index 518fb35212de..f56d9c082605 100644 --- a/keyboards/geekboards/tester/rules.mk +++ b/keyboards/geekboards/tester/rules.mk @@ -2,31 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = qmk-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output RGB_MATRIX_ENABLE = yes # Use RGB matrix RGB_MATRIX_DRIVER = IS31FL3731 diff --git a/keyboards/geekboards/tester/tester.c b/keyboards/geekboards/tester/tester.c index 4fab1a7012f5..70865c461f4e 100644 --- a/keyboards/geekboards/tester/tester.c +++ b/keyboards/geekboards/tester/tester.c @@ -1,5 +1,5 @@ #include "tester.h" -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { /* Refer to IS31 manual for these locations * driver * | R location @@ -29,28 +29,12 @@ led_config_t g_led_config = { } }; - - -void matrix_init_kb(void) { - matrix_init_user(); -} - -void matrix_scan_kb(void) { - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - return process_record_user(keycode, record); -} - -void suspend_power_down_kb(void) -{ +void suspend_power_down_kb(void) { rgb_matrix_set_suspend_state(true); - suspend_power_down_user(); + suspend_power_down_user(); } -void suspend_wakeup_init_kb(void) -{ +void suspend_wakeup_init_kb(void) { rgb_matrix_set_suspend_state(false); suspend_wakeup_init_user(); } diff --git a/keyboards/geminate60/info.json b/keyboards/geminate60/info.json index 1c9fc8c38ae4..ba34264f62c5 100644 --- a/keyboards/geminate60/info.json +++ b/keyboards/geminate60/info.json @@ -2,8 +2,6 @@ "keyboard_name": "geminate60", "url": "", "maintainer": "Weirdo-F", - "width": 15, - "height": 5, "layout_aliases": { "LAYOUT": "LAYOUT_all" }, diff --git a/keyboards/geminate60/readme.md b/keyboards/geminate60/readme.md index 457c06ce5c70..7fab7d7df6a8 100644 --- a/keyboards/geminate60/readme.md +++ b/keyboards/geminate60/readme.md @@ -12,4 +12,5 @@ Make example for this keyboard (after setting up your build environment): make geminate60:default +The RST pin and GND pin on the board can be quickly shortened twice to enter DFU mode, and then the program can be written. 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/geminate60/rules.mk b/keyboards/geminate60/rules.mk index 8fc40411df58..9a42fa1e5123 100644 --- a/keyboards/geminate60/rules.mk +++ b/keyboards/geminate60/rules.mk @@ -8,18 +8,15 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output #LAYOUTS = ortho_5x15 diff --git a/keyboards/generic_panda/panda65_01/info.json b/keyboards/generic_panda/panda65_01/info.json index b63ed0ca200f..a2ad37761589 100644 --- a/keyboards/generic_panda/panda65_01/info.json +++ b/keyboards/generic_panda/panda65_01/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Panda65_01", "url": "https://github.com/JesseLeung97/qmk_firmware/tree/master/keyboards/generic_panda/panda65_01", "maintainer": "generic_panda", - "width": 16, - "height": 5, "layouts": { "LAYOUT_split_bs": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"|", "x":13, "y":0}, {"label":"Del", "x":14, "y":0}, {"label":"Home", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"Backspace", "x":13.5, "y":1, "w":1.5}, {"label":"PGup", "x":15, "y":1}, {"label":"Caps", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"PgDn", "x":15, "y":2}, {"label":"LShift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"RShift", "x":12.25, "y":3, "w":1.75}, {"label":"Up", "x":14, "y":3}, {"label":"FN", "x":15, "y":3}, {"label":"LControl", "x":0, "y":4, "w":1.5}, {"label":"LAlt", "x":2.25, "y":4, "w":1.5}, {"label":"Space", "x":3.75, "y":4, "w":7}, {"label":"RWin", "x":10.75, "y":4, "w":1.5}, {"label":"Left", "x":13, "y":4}, {"label":"Down", "x":14, "y":4}, {"label":"Right", "x":15, "y":4}] diff --git a/keyboards/generic_panda/panda65_01/rules.mk b/keyboards/generic_panda/panda65_01/rules.mk index b05f306d3cab..4df320615d9a 100644 --- a/keyboards/generic_panda/panda65_01/rules.mk +++ b/keyboards/generic_panda/panda65_01/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/genone/eclipse_65/info.json b/keyboards/genone/eclipse_65/info.json index cbbd9f226ffc..df0607946fde 100644 --- a/keyboards/genone/eclipse_65/info.json +++ b/keyboards/genone/eclipse_65/info.json @@ -2,8 +2,6 @@ "keyboard_name": "eclipse_65", "url": "https://genonemerch.com", "maintainer": "rojasa1990", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_ansi": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] diff --git a/keyboards/genone/eclipse_65/rules.mk b/keyboards/genone/eclipse_65/rules.mk index a8020aa5392f..89744086b67e 100644 --- a/keyboards/genone/eclipse_65/rules.mk +++ b/keyboards/genone/eclipse_65/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 keybaord RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LAYOUTS = 65_ansi diff --git a/keyboards/genone/g1_65/info.json b/keyboards/genone/g1_65/info.json index 966c2d352ada..c73d2d64d0a5 100644 --- a/keyboards/genone/g1_65/info.json +++ b/keyboards/genone/g1_65/info.json @@ -2,8 +2,6 @@ "keyboard_name": "G1_65", "url": "https://genonemerch.com", "maintainer": "rojasa1990", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_ansi": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] diff --git a/keyboards/genone/g1_65/rules.mk b/keyboards/genone/g1_65/rules.mk index a8020aa5392f..89744086b67e 100644 --- a/keyboards/genone/g1_65/rules.mk +++ b/keyboards/genone/g1_65/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 keybaord RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LAYOUTS = 65_ansi diff --git a/keyboards/gentleman65/config.h b/keyboards/gentleman65/config.h new file mode 100644 index 000000000000..34cd4d4899b6 --- /dev/null +++ b/keyboards/gentleman65/config.h @@ -0,0 +1,59 @@ +/* +Copyright 2021 Omar Afzal + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x00FA +#define PRODUCT_ID 0x2020 +#define DEVICE_VER 0x0001 +#define MANUFACTURER JJ48_24 & Omar Afzal +#define PRODUCT Gentleman 65 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 16 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { D3, D2, D1, F7, F1 } +#define MATRIX_COL_PINS { D4, D6, D7, B4, B5, B6, C6, D5, C7, F0, B2, B1, B3, B0, B7, D0 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +#define RGB_DI_PIN F4 +#define RGBLED_NUM 14 +#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 { F6 } +#define ENCODERS_PAD_B { F5 } +#define ENCODER_RESOLUTION 3 + +#define DRIVER_LED_TOTAL 14 \ No newline at end of file diff --git a/keyboards/gentleman65/gentleman65.c b/keyboards/gentleman65/gentleman65.c new file mode 100644 index 000000000000..9e9baa011e66 --- /dev/null +++ b/keyboards/gentleman65/gentleman65.c @@ -0,0 +1,30 @@ + +/* Copyright 2021 Omar Afzal + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "gentleman65.h" + +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + if (index == 0) { /* First encoder */ + if (clockwise) { + tap_code_delay(KC_AUDIO_VOL_UP, 10); + } else { + tap_code_delay(KC_AUDIO_VOL_DOWN, 10); + } + } + return true; +} \ No newline at end of file diff --git a/keyboards/gentleman65/gentleman65.h b/keyboards/gentleman65/gentleman65.h new file mode 100644 index 000000000000..c313e4110212 --- /dev/null +++ b/keyboards/gentleman65/gentleman65.h @@ -0,0 +1,33 @@ +/* Copyright 2021 Omar Afzal + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_all( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, \ + K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \ + K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K215, \ + K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, K315, \ + K400, K401, K403, K406, K410, K412, K413, K414, K415 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \ + { K100, KC_NO, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \ + { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, KC_NO, K215 }, \ + { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, K314, K315 }, \ + { K400, K401, KC_NO, K403, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, K410, KC_NO, K412, K413, K414, K415 } \ +} diff --git a/keyboards/gentleman65/info.json b/keyboards/gentleman65/info.json new file mode 100644 index 000000000000..d42b3ff6db2d --- /dev/null +++ b/keyboards/gentleman65/info.json @@ -0,0 +1,10 @@ +{ + "name": "The Gentleman 65", + "url": "https://jkeys.design/products/gentleman-65", + "maintainer": "0marA", + "layouts": { + "LAYOUT_all": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.5}, {"x":11.5, "y":4, "w":1.5}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] + } + } +} \ No newline at end of file diff --git a/keyboards/gentleman65/keymaps/default/keymap.c b/keyboards/gentleman65/keymaps/default/keymap.c new file mode 100644 index 000000000000..6a4f8a3b7be6 --- /dev/null +++ b/keyboards/gentleman65/keymaps/default/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2021 Omar Afzal + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = 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_BSPC, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_all( + KC_TILD, 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, RGB_TOG, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_MOD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAI, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, RGB_VAD, + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SAD, RGB_HUD, RGB_SAI + ), + +}; diff --git a/keyboards/gentleman65/keymaps/via/keymap.c b/keyboards/gentleman65/keymaps/via/keymap.c new file mode 100644 index 000000000000..0c76935c3f3b --- /dev/null +++ b/keyboards/gentleman65/keymaps/via/keymap.c @@ -0,0 +1,53 @@ +/* Copyright 2021 Omar Afzal + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = 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_BSPC, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_all( + KC_TILD, 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, RGB_TOG, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_MOD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAI, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, RGB_VAD, + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SAD, RGB_HUD, RGB_SAI + ), + + [2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; + diff --git a/keyboards/xd84pro/keymaps/via/rules.mk b/keyboards/gentleman65/keymaps/via/rules.mk similarity index 100% rename from keyboards/xd84pro/keymaps/via/rules.mk rename to keyboards/gentleman65/keymaps/via/rules.mk diff --git a/keyboards/gentleman65/readme.md b/keyboards/gentleman65/readme.md new file mode 100644 index 000000000000..b2b4e017cefb --- /dev/null +++ b/keyboards/gentleman65/readme.md @@ -0,0 +1,24 @@ +# Gentleman65 + +![Render](https://i.imgur.com/uNdJqBuh.jpg) + +The Gentleman 65 combines the sleek look of natural wood, with the fun of frosted acrylic to produce a truly unique look that differs from existing boards on the market. The board consists of 2 3mm frosted acrylic layers, topped by 2 layers of 6mm of wood, a frosted acrylic wedge, and 2 feet that give the board an angle of 7°. The board is unique in its inclusion of a top mounting system, something rarely seen on the laser cut board. + + +* Keyboard Maintainer: [Omar Afzal](https://github.com/0marA) +* Hardware Supported: Gentleman 65 PCB for Gentleman65 +* Hardware Availability: [Jkeys.Design](https://jkeys.design/) + +Getting the board into bootloader mode: + +To flash firmware onto this board, you'll need to bring the PCB into bootloader mode. To enter bootloader mode, press the reset button on the back of the PCB twice. The reset button is located in the bottom center near the spacebar switch footprint. + +Make example for this keyboard (after setting up your build environment): + + make gentleman65:default + +Flashing example for this keyboard: + + make gentleman65: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). \ No newline at end of file diff --git a/keyboards/gentleman65/rules.mk b/keyboards/gentleman65/rules.mk new file mode 100644 index 000000000000..8d9b2a50dded --- /dev/null +++ b/keyboards/gentleman65/rules.mk @@ -0,0 +1,22 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +RGB_MATRIX_ENABLE = no +RGB_MATRIX_DRIVER = WS2812 +ENCODER_ENABLE = yes \ No newline at end of file diff --git a/keyboards/georgi/georgi.h b/keyboards/georgi/georgi.h index df6bb6ea9a40..e5a52c585deb 100644 --- a/keyboards/georgi/georgi.h +++ b/keyboards/georgi/georgi.h @@ -9,8 +9,6 @@ extern i2c_status_t mcp23018_status; #define ERGODOX_EZ_I2C_TIMEOUT 1000 -#define CPU_PRESCALE(n) (CLKPR = 0x80, CLKPR = (n)) -#define CPU_16MHz 0x00 // I2C aliases and register addresses (see "mcp23018.md") //#define I2C_ADDR 0b0100000 diff --git a/keyboards/georgi/info.json b/keyboards/georgi/info.json index d0752e2cd3eb..89d2cd883fe8 100644 --- a/keyboards/georgi/info.json +++ b/keyboards/georgi/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Georgi", "url": "http://gboards.ca", "maintainer": "germ", - "width": 13.2, - "height": 3.68, "layouts": { "LAYOUT_georgi": { "layout": [ diff --git a/keyboards/georgi/rules.mk b/keyboards/georgi/rules.mk index 412a318f0cc1..f86716908db7 100644 --- a/keyboards/georgi/rules.mk +++ b/keyboards/georgi/rules.mk @@ -2,13 +2,6 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu CUSTOM_MATRIX = yes @@ -19,5 +12,5 @@ CONSOLE_ENABLE = yes COMMAND_ENABLE = no NKRO_ENABLE = yes -EXTRAFLAGS += -flto +LTO_ENABLE = yes SRC += matrix.c i2c_master.c sten.c diff --git a/keyboards/gergo/gergo.h b/keyboards/gergo/gergo.h index 1370325f28a1..5174542661b8 100644 --- a/keyboards/gergo/gergo.h +++ b/keyboards/gergo/gergo.h @@ -9,8 +9,6 @@ extern i2c_status_t mcp23018_status; #define I2C_TIMEOUT 1000 -#define CPU_PRESCALE(n) (CLKPR = 0x80, CLKPR = (n)) -#define CPU_16MHz 0x00 // I2C aliases and register addresses (see "mcp23018.md") //#define I2C_ADDR 0b0100000 diff --git a/keyboards/gergo/info.json b/keyboards/gergo/info.json index 586b9c908124..be52e4904629 100644 --- a/keyboards/gergo/info.json +++ b/keyboards/gergo/info.json @@ -1,7 +1,5 @@ { "maintainer": "germ", - "height": 5.75, - "width": 19.5, "keyboard_name": "Gergo", "url": "http://gboards.ca", "layouts": { diff --git a/keyboards/gergo/keymaps/drashna/keymap.c b/keyboards/gergo/keymaps/drashna/keymap.c index 81ff6852d1b4..01d52ed16239 100644 --- a/keyboards/gergo/keymaps/drashna/keymap.c +++ b/keyboards/gergo/keymaps/drashna/keymap.c @@ -37,56 +37,32 @@ KC_GRV, KC_SPC, BK_LWER, OS_LALT, OS_RGUI, DL_RAIS, KC_ENT, _______ \ ) -#define LAYOUT_gergo_base_wrapper(...) LAYOUT_gergo_base(__VA_ARGS__) +#define LAYOUT_base_wrapper(...) LAYOUT_gergo_base(__VA_ARGS__) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT_gergo_base_wrapper( + [_DEFAULT_LAYER_1] = LAYOUT_base_wrapper( _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, _________________QWERTY_L3_________________, _________________QWERTY_R3_________________ - ), - [_COLEMAK] = LAYOUT_gergo_base_wrapper( + ), + + [_DEFAULT_LAYER_2] = LAYOUT_base_wrapper( + ______________COLEMAK_MOD_DH_L1____________, ______________COLEMAK_MOD_DH_R1____________, + ______________COLEMAK_MOD_DH_L2____________, ______________COLEMAK_MOD_DH_R2____________, + ______________COLEMAK_MOD_DH_L3____________, ______________COLEMAK_MOD_DH_R3____________ + ), + [_DEFAULT_LAYER_3] = LAYOUT_base_wrapper( _________________COLEMAK_L1________________, _________________COLEMAK_R1________________, _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, _________________COLEMAK_L3________________, _________________COLEMAK_R3________________ ), - [_DVORAK] = LAYOUT_gergo_base_wrapper( + [_DEFAULT_LAYER_4] = LAYOUT_base_wrapper( _________________DVORAK_L1_________________, _________________DVORAK_R1_________________, _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, _________________DVORAK_L3_________________, _________________DVORAK_R3_________________ ), - [_WORKMAN] = LAYOUT_gergo_base_wrapper( - _________________WORKMAN_L1________________, _________________WORKMAN_R1________________, - _________________WORKMAN_L2________________, _________________WORKMAN_R2________________, - _________________WORKMAN_L3________________, _________________WORKMAN_R3________________ - ), - - [_NORMAN] = LAYOUT_gergo_base_wrapper( - _________________NORMAN_L1_________________, _________________NORMAN_L1_________________, - _________________NORMAN_L2_________________, _________________NORMAN_R2_________________, - _________________NORMAN_L3_________________, _________________NORMAN_R3_________________ - ), - - [_MALTRON] = LAYOUT_gergo_base_wrapper( - _________________MALTRON_L1________________, _________________MALTRON_R1________________, - _________________MALTRON_L2________________, _________________MALTRON_R2________________, - _________________MALTRON_L3________________, _________________MALTRON_R3________________ - ), - - [_EUCALYN] = LAYOUT_gergo_base_wrapper( - _________________EUCALYN_L1________________, _________________EUCALYN_R1________________, - _________________EUCALYN_L2________________, _________________EUCALYN_R2________________, - _________________EUCALYN_L3________________, _________________EUCALYN_R3________________ - ), - - [_CARPLAX] = LAYOUT_gergo_base_wrapper( - _____________CARPLAX_QFMLWY_L1_____________, _____________CARPLAX_QFMLWY_R1_____________, - _____________CARPLAX_QFMLWY_L2_____________, _____________CARPLAX_QFMLWY_R2_____________, - _____________CARPLAX_QFMLWY_L3_____________, _____________CARPLAX_QFMLWY_R3_____________ - ), - [_LOWER] = LAYOUT_gergo_wrapper( KC_F12, _________________LOWER_L1__________________, _________________LOWER_R1__________________, KC_F11, _______, _________________LOWER_L2__________________, _______, _______, _________________LOWER_R2__________________, KC_PIPE, diff --git a/keyboards/gergo/keymaps/manna-harbour_miryoku/config.h b/keyboards/gergo/keymaps/manna-harbour_miryoku/config.h new file mode 100644 index 000000000000..2bfb5befb371 --- /dev/null +++ b/keyboards/gergo/keymaps/manna-harbour_miryoku/config.h @@ -0,0 +1,22 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . + +#pragma once + +#define XXX KC_NO + +#define LAYOUT_miryoku(\ + 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,\ + N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +LAYOUT_gergo(\ +XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX,\ +XXX, K10, K11, K12, K13, K14, XXX, XXX, K15, K16, K17, K18, K19, XXX,\ +XXX, K20, K21, K22, K23, K24, XXX, XXX, XXX, XXX, K25, K26, K27, K28, K29, XXX,\ + K32, K33, K34, XXX, XXX, K35, K36, K37\ +) diff --git a/keyboards/gergo/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/gergo/keymaps/manna-harbour_miryoku/keymap.c new file mode 100644 index 000000000000..7c5717a0fee0 --- /dev/null +++ b/keyboards/gergo/keymaps/manna-harbour_miryoku/keymap.c @@ -0,0 +1,5 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/keyboards/gergo/keymaps/oled/keymap.c b/keyboards/gergo/keymaps/oled/keymap.c index c348a2b96d56..ab374b93322f 100644 --- a/keyboards/gergo/keymaps/oled/keymap.c +++ b/keyboards/gergo/keymaps/oled/keymap.c @@ -125,18 +125,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) */ -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; } -void oled_task_user(void) { +bool oled_task_user(void) { static const char PROGMEM font_logo[] = { 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0}; oled_write_P(font_logo, false); + return false; } //for (int i = 0; i < fontLen; i++) { //oled_write_char(pgm_read_byte(lain+i), false); diff --git a/keyboards/gergo/keymaps/oled/rules.mk b/keyboards/gergo/keymaps/oled/rules.mk index 1661d43d1fda..63180889885e 100644 --- a/keyboards/gergo/keymaps/oled/rules.mk +++ b/keyboards/gergo/keymaps/oled/rules.mk @@ -7,7 +7,8 @@ BALLER = no # Enable to ball out BALLSTEP = 20 # Multiple in px to move, multiplied by layer number SCROLLSTEP = 1 # Lines to scroll with ball MOUSEKEY_ENABLE = yes # Mouse keys, needed for baller -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 LOCAL_GLCDFONT = yes #Debug options diff --git a/keyboards/gergo/rules.mk b/keyboards/gergo/rules.mk index 41f201a45839..b5752ad934d7 100644 --- a/keyboards/gergo/rules.mk +++ b/keyboards/gergo/rules.mk @@ -2,21 +2,14 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu CUSTOM_MATRIX = yes EXTRAKEY_ENABLE = yes CONSOLE_ENABLE = yes COMMAND_ENABLE = yes -BOOTMAGIC_ENABLE = lite +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite -DEBOUNCE_TYPE = eager_pr +DEBOUNCE_TYPE = sym_eager_pr SRC += matrix.c QUANTUM_LIB_SRC += i2c_master.c diff --git a/keyboards/getta25/info.json b/keyboards/getta25/info.json index d3a02f29854e..980b5142db00 100644 --- a/keyboards/getta25/info.json +++ b/keyboards/getta25/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Getta25", "url": "https://salicylic-acid3.hatenablog.com/", "maintainer": "Salicylic_acid3", - "width": 5.25, - "height": 6.25, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/getta25/keymaps/oled/keymap.c b/keyboards/getta25/keymaps/oled/keymap.c index 44833857d31a..7d8151b86d3b 100644 --- a/keyboards/getta25/keymaps/oled/keymap.c +++ b/keyboards/getta25/keymaps/oled/keymap.c @@ -1,7 +1,7 @@ #include QMK_KEYBOARD_H #include "keymap_jp.h" -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE static uint32_t oled_timer = 0; #endif @@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //|--------+--------+--------+--------+--------| KC_P1, KC_P2, KC_P3, KC_DEL, //|--------+--------+--------+--------+--------| -LT(_ARROW, KC_P0),LT(_MACRO, KC_PDOT),KC_PENT,KC_BSPC +LT(_ARROW, KC_P0),LT(_MACRO, KC_PDOT),KC_PENT,KC_BSPC //`--------------------------------------------' ), @@ -54,7 +54,7 @@ LT(_ARROW, KC_P0),LT(_MACRO, KC_PDOT),KC_PENT,KC_BSPC //|--------+--------+--------+--------+--------| XXXXXXX, KC_DOWN, XXXXXXX, _______, //|--------+--------+--------+--------+--------| - MO(_ARROW), MO(_MACRO), _______, _______ + MO(_ARROW), MO(_MACRO), _______, _______ //`--------------------------------------------' ), @@ -70,7 +70,7 @@ LT(_ARROW, KC_P0),LT(_MACRO, KC_PDOT),KC_PENT,KC_BSPC //|--------+--------+--------+--------+--------| KC_F11, KC_F12, KC_F3, _______, //|--------+--------+--------+--------+--------| - _______, _______, JP_RPRN, _______ + _______, _______, JP_RPRN, _______ //`--------------------------------------------' ), @@ -86,7 +86,7 @@ LT(_ARROW, KC_P0),LT(_MACRO, KC_PDOT),KC_PENT,KC_BSPC //|--------+--------+--------+--------+--------| RGB_VAD, RGB_VAI, XXXXXXX, _______, //|--------+--------+--------+--------+--------| - _______, _______, RGB_MOD, _______ + _______, _______, RGB_MOD, _______ //`--------------------------------------------' ) }; @@ -118,7 +118,7 @@ int RGB_current_mode; bool process_record_user(uint16_t keycode, keyrecord_t *record) { bool result = false; if (record->event.pressed) { - #ifdef OLED_DRIVER_ENABLE + #ifdef OLED_ENABLE oled_timer = timer_read32(); #endif } @@ -156,7 +156,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return result; } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; } void render_layer_state(void) { @@ -182,7 +182,7 @@ void render_status(void) { render_keylock_status(host_keyboard_led_state()); } -void oled_task_user(void) { +bool oled_task_user(void) { static const char PROGMEM font_logo[] = { 0x80,0x81,0x82,0x83,0x84, 0xa0,0xa1,0xa2,0xa3,0xa4, @@ -199,6 +199,7 @@ void oled_task_user(void) { oled_write_P(font_logo, false); render_status(); // Renders the current keyboard state (layer, lock) + return false; } #endif diff --git a/keyboards/getta25/keymaps/oled/rules.mk b/keyboards/getta25/keymaps/oled/rules.mk index c582662134c4..d34d066ded93 100644 --- a/keyboards/getta25/keymaps/oled/rules.mk +++ b/keyboards/getta25/keymaps/oled/rules.mk @@ -1 +1,2 @@ -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/getta25/rules.mk b/keyboards/getta25/rules.mk index fdb399da288e..3148e0a35eff 100644 --- a/keyboards/getta25/rules.mk +++ b/keyboards/getta25/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -OLED_DRIVER_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 +AUDIO_ENABLE = no # Audio output +RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. +OLED_ENABLE = no DEFAULT_FOLDER = getta25/rev1 diff --git a/keyboards/ggkeyboards/genesis/hotswap/config.h b/keyboards/ggkeyboards/genesis/hotswap/config.h index d435612f1758..52f6fc85240b 100644 --- a/keyboards/ggkeyboards/genesis/hotswap/config.h +++ b/keyboards/ggkeyboards/genesis/hotswap/config.h @@ -19,15 +19,15 @@ #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0xBB00 -#define PRODUCT_ID 0xD4D3 -#define DEVICE_VER 0x0001 -#define MANUFACTURER GG Keyboards -#define PRODUCT Genesis +#define VENDOR_ID 0xBB00 +#define PRODUCT_ID 0xD4D3 +#define DEVICE_VER 0x0001 +#define MANUFACTURER GG Keyboards +#define PRODUCT Genesis Hotswap /* key matrix size */ -#define MATRIX_ROWS 7 -#define MATRIX_COLS 18 +#define MATRIX_ROWS 6 +#define MATRIX_COLS 18 /* * Keyboard Matrix Assignments @@ -39,11 +39,9 @@ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) * */ -#define MATRIX_ROW_PINS { C5, C4, C3, C2, C1, C0 } -#define MATRIX_COL_PINS { F0, F1, F2, F3, F4, F5, F6, F7, A0, A1, A2, A3, A4, A5, A6, A7, C6, C7 } +#define MATRIX_ROW_PINS \ + { C5, C4, C3, C2, C1, C0 } +#define MATRIX_COL_PINS \ + { F0, F1, F2, F3, F4, F5, F6, F7, A0, A1, A2, A3, A4, A5, A6, A7, C6, C7 } #define DIODE_DIRECTION COL2ROW - - -// generated by KBFirmware JSON to QMK Parser -// https://noroadsleft.github.io/kbf_qmk_converter/ \ No newline at end of file diff --git a/keyboards/ggkeyboards/genesis/hotswap/hotswap.c b/keyboards/ggkeyboards/genesis/hotswap/hotswap.c index b3b7c6508c36..e27d117d9a39 100644 --- a/keyboards/ggkeyboards/genesis/hotswap/hotswap.c +++ b/keyboards/ggkeyboards/genesis/hotswap/hotswap.c @@ -1,4 +1,3 @@ - /* Copyright 2021 Steven Phillips (Spooknik) * * This program is free software: you can redistribute it and/or modify @@ -16,7 +15,3 @@ */ #include "hotswap.h" - -// generated by KBFirmware JSON to QMK Parser -// https://noroadsleft.github.io/kbf_qmk_converter/ - diff --git a/keyboards/ggkeyboards/genesis/hotswap/hotswap.h b/keyboards/ggkeyboards/genesis/hotswap/hotswap.h index a5ff78cca720..51dc2e91a17d 100644 --- a/keyboards/ggkeyboards/genesis/hotswap/hotswap.h +++ b/keyboards/ggkeyboards/genesis/hotswap/hotswap.h @@ -18,7 +18,8 @@ #include "quantum.h" -#define LAYOUT( \ +// clang-format off +#define LAYOUT_tkl_ansi( \ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0F, K0G, K0H, \ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2F, K2G, K2H, \ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3F, K3G, K3H, \ @@ -27,13 +28,9 @@ K60, K61, K63, K66, K6A, K6B, K6C, K6D, K6F, K6G, K6H \ ) { \ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, KC_NO, K0F, K0G, K0H }, \ - { 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 }, \ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO, K2F, K2G, K2H }, \ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO, K3F, K3G, K3H }, \ { K40, KC_NO, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, KC_NO, KC_NO, KC_NO, KC_NO }, \ { KC_NO, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B, K5C, KC_NO, KC_NO, KC_NO, K5G, KC_NO }, \ - { K60, K61, KC_NO, K63, KC_NO, KC_NO, K66, KC_NO, KC_NO, KC_NO, K6A, K6B, K6C, K6D, KC_NO, K6F, K6G, K6H }, \ + { K60, K61, KC_NO, K63, KC_NO, KC_NO, K66, KC_NO, KC_NO, KC_NO, K6A, K6B, K6C, K6D, KC_NO, K6F, K6G, K6H } \ } - -// generated by KBFirmware JSON to QMK Parser -// https://noroadsleft.github.io/kbf_qmk_converter/ \ No newline at end of file diff --git a/keyboards/ggkeyboards/genesis/hotswap/info.json b/keyboards/ggkeyboards/genesis/hotswap/info.json index dfb68ce0b508..8843b6a4bcf4 100644 --- a/keyboards/ggkeyboards/genesis/hotswap/info.json +++ b/keyboards/ggkeyboards/genesis/hotswap/info.json @@ -1,11 +1,12 @@ { - "keyboard_name": "Genesis", + "keyboard_name": "Genesis Hotswap", "url": "", "maintainer": "Spooknik", - "width": 18.25, - "height": 6.5, + "layout_aliases": { + "LAYOUT": "LAYOUT_tkl_ansi" + }, "layouts": { - "LAYOUT": { + "LAYOUT_tkl_ansi": { "layout": [ {"label":"K00 (C5,F0)", "x":0, "y":0}, {"label":"K01 (C5,F1)", "x":2, "y":0}, @@ -23,6 +24,7 @@ {"label":"K0F (C5,A7)", "x":15.25, "y":0}, {"label":"K0G (C5,C6)", "x":16.25, "y":0}, {"label":"K0H (C5,C7)", "x":17.25, "y":0}, + {"label":"K20 (C4,F0)", "x":0, "y":1.5}, {"label":"K21 (C4,F1)", "x":1, "y":1.5}, {"label":"K22 (C4,F2)", "x":2, "y":1.5}, @@ -40,6 +42,7 @@ {"label":"K2F (C4,A7)", "x":15.25, "y":1.5}, {"label":"K2G (C4,C6)", "x":16.25, "y":1.5}, {"label":"K2H (C4,C7)", "x":17.25, "y":1.5}, + {"label":"K30 (C3,F0)", "x":0, "y":2.5, "w":1.5}, {"label":"K31 (C3,F1)", "x":1.5, "y":2.5}, {"label":"K32 (C3,F2)", "x":2.5, "y":2.5}, @@ -57,6 +60,7 @@ {"label":"K3F (C3,A7)", "x":15.25, "y":2.5}, {"label":"K3G (C3,C6)", "x":16.25, "y":2.5}, {"label":"K3H (C3,C7)", "x":17.25, "y":2.5}, + {"label":"K40 (C2,F0)", "x":0, "y":3.5, "w":1.75}, {"label":"K42 (C2,F2)", "x":1.75, "y":3.5}, {"label":"K43 (C2,F3)", "x":2.75, "y":3.5}, @@ -70,6 +74,7 @@ {"label":"K4B (C2,A3)", "x":10.75, "y":3.5}, {"label":"K4C (C2,A4)", "x":11.75, "y":3.5}, {"label":"K4D (C2,A5)", "x":12.75, "y":3.5, "w":2.25}, + {"label":"K51 (C1,F1)", "x":0, "y":4.5, "w":2.25}, {"label":"K52 (C1,F2)", "x":2.25, "y":4.5}, {"label":"K53 (C1,F3)", "x":3.25, "y":4.5}, @@ -83,6 +88,7 @@ {"label":"K5B (C1,A3)", "x":11.25, "y":4.5}, {"label":"K5C (C1,A4)", "x":12.25, "y":4.5, "w":2.75}, {"label":"K5G (C1,C6)", "x":16.25, "y":4.5}, + {"label":"K60 (C0,F0)", "x":0, "y":5.5, "w":1.25}, {"label":"K61 (C0,F1)", "x":1.25, "y":5.5, "w":1.25}, {"label":"K63 (C0,F3)", "x":2.5, "y":5.5, "w":1.25}, @@ -97,5 +103,4 @@ ] } } - ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/" } diff --git a/keyboards/ggkeyboards/genesis/hotswap/keymaps/default/keymap.c b/keyboards/ggkeyboards/genesis/hotswap/keymaps/default/keymap.c index ab009ae58af7..afe94141ec83 100644 --- a/keyboards/ggkeyboards/genesis/hotswap/keymaps/default/keymap.c +++ b/keyboards/ggkeyboards/genesis/hotswap/keymaps/default/keymap.c @@ -13,11 +13,11 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ - + #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( + [0] = LAYOUT_tkl_ansi( KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, @@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI, MO(1), KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT ), - [1] = LAYOUT( + [1] = LAYOUT_tkl_ansi( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -33,21 +33,4 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), - [2] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - [3] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - }; diff --git a/keyboards/ggkeyboards/genesis/hotswap/keymaps/via/keymap.c b/keyboards/ggkeyboards/genesis/hotswap/keymaps/via/keymap.c index dd680a839174..5647447a8075 100644 --- a/keyboards/ggkeyboards/genesis/hotswap/keymaps/via/keymap.c +++ b/keyboards/ggkeyboards/genesis/hotswap/keymaps/via/keymap.c @@ -14,11 +14,10 @@ * along with this program. If not, see . */ - #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( + [0] = LAYOUT_tkl_ansi( KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, @@ -26,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI, MO(1), KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT ), - [1] = LAYOUT( + [1] = LAYOUT_tkl_ansi( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -34,20 +33,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), - [2] = LAYOUT( + [2] = LAYOUT_tkl_ansi( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), - [3] = LAYOUT( + [3] = LAYOUT_tkl_ansi( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), -}; \ No newline at end of file +}; diff --git a/keyboards/ggkeyboards/genesis/hotswap/rules.mk b/keyboards/ggkeyboards/genesis/hotswap/rules.mk index 0de06a3443af..b401159dd026 100644 --- a/keyboards/ggkeyboards/genesis/hotswap/rules.mk +++ b/keyboards/ggkeyboards/genesis/hotswap/rules.mk @@ -7,19 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output -# generated by KBFirmware JSON to QMK Parser -# https://noroadsleft.github.io/kbf_qmk_converter/ +LAYOUTS = tkl_ansi diff --git a/keyboards/ggkeyboards/genesis/solder/config.h b/keyboards/ggkeyboards/genesis/solder/config.h index 76586262abb2..6bfeaf9a549d 100644 --- a/keyboards/ggkeyboards/genesis/solder/config.h +++ b/keyboards/ggkeyboards/genesis/solder/config.h @@ -23,10 +23,10 @@ #define PRODUCT_ID 0xD4D2 #define DEVICE_VER 0x0001 #define MANUFACTURER GG Keyboards -#define PRODUCT Genesis +#define PRODUCT Genesis Solder /* key matrix size */ -#define MATRIX_ROWS 7 +#define MATRIX_ROWS 6 #define MATRIX_COLS 18 /* @@ -43,7 +43,3 @@ #define MATRIX_COL_PINS { F0, F1, F2, F3, F4, F5, F6, F7, A0, A1, A2, A3, A4, A5, A6, A7, C6, C7 } #define DIODE_DIRECTION COL2ROW - - -// generated by KBFirmware JSON to QMK Parser -// https://noroadsleft.github.io/kbf_qmk_converter/ \ No newline at end of file diff --git a/keyboards/ggkeyboards/genesis/solder/info.json b/keyboards/ggkeyboards/genesis/solder/info.json index 918f4c2e1b66..a316ad019d37 100644 --- a/keyboards/ggkeyboards/genesis/solder/info.json +++ b/keyboards/ggkeyboards/genesis/solder/info.json @@ -1,11 +1,12 @@ { - "keyboard_name": "Genesis", + "keyboard_name": "Genesis Solder", "url": "", "maintainer": "Spooknik", - "width": 17, - "height": 6, + "layout_aliases": { + "LAYOUT": "LAYOUT_all" + }, "layouts": { - "LAYOUT": { + "LAYOUT_all": { "layout": [ {"label":"K00 (C5,F0)", "x":0, "y":0}, {"label":"K01 (C5,F1)", "x":2, "y":0}, @@ -20,84 +21,184 @@ {"label":"K0A (C5,A2)", "x":12, "y":0}, {"label":"K0B (C5,A3)", "x":13, "y":0}, {"label":"K0C (C5,A4)", "x":14, "y":0}, - {"label":"K0E (C5,A6)", "x":15, "y":0}, - {"label":"K0F (C5,A7)", "x":16, "y":0}, - {"label":"K0G (C5,C6)", "x":17, "y":0}, - {"label":"K10 (C4,F0)", "x":0, "y":1}, - {"label":"K11 (C4,F1)", "x":1, "y":1}, - {"label":"K12 (C4,F2)", "x":2, "y":1}, - {"label":"K13 (C4,F3)", "x":3, "y":1}, - {"label":"K14 (C4,F4)", "x":4, "y":1}, - {"label":"K15 (C4,F5)", "x":5, "y":1}, - {"label":"K16 (C4,F6)", "x":6, "y":1}, - {"label":"K17 (C4,F7)", "x":7, "y":1}, - {"label":"K18 (C4,A0)", "x":8, "y":1}, - {"label":"K19 (C4,A1)", "x":9, "y":1}, - {"label":"K1A (C4,A2)", "x":10, "y":1}, - {"label":"K1B (C4,A3)", "x":11, "y":1}, - {"label":"K1C (C4,A4)", "x":12, "y":1}, - {"label":"K1D (C4,A5)", "x":13, "y":1}, - {"label":"K0D (C5,A5)", "x":14, "y":1}, - {"label":"K1E (C4,A6)", "x":15, "y":1}, - {"label":"K1F (C4,A7)", "x":16, "y":1}, - {"label":"K1G (C4,C6)", "x":17, "y":1}, - {"label":"K20 (C3,F0)", "x":0, "y":2, "w":1.5}, - {"label":"K21 (C3,F1)", "x":1.5, "y":2}, - {"label":"K22 (C3,F2)", "x":2.5, "y":2}, - {"label":"K23 (C3,F3)", "x":3.5, "y":2}, - {"label":"K24 (C3,F4)", "x":4.5, "y":2}, - {"label":"K25 (C3,F5)", "x":5.5, "y":2}, - {"label":"K26 (C3,F6)", "x":6.5, "y":2}, - {"label":"K27 (C3,F7)", "x":7.5, "y":2}, - {"label":"K28 (C3,A0)", "x":8.5, "y":2}, - {"label":"K29 (C3,A1)", "x":9.5, "y":2}, - {"label":"K2A (C3,A2)", "x":10.5, "y":2}, - {"label":"K2B (C3,A3)", "x":11.5, "y":2}, - {"label":"K2C (C3,A4)", "x":12.5, "y":2}, - {"label":"K2D (C3,A5)", "x":13.5, "y":2, "w":1.5}, - {"label":"K2E (C3,A6)", "x":15, "y":2}, - {"label":"K2F (C3,A7)", "x":16, "y":2}, - {"label":"K2G (C3,C6)", "x":17, "y":2}, - {"label":"K30 (C2,F0)", "x":0, "y":3, "w":1.75}, - {"label":"K31 (C2,F1)", "x":1.75, "y":3}, - {"label":"K32 (C2,F2)", "x":2.75, "y":3}, - {"label":"K33 (C2,F3)", "x":3.75, "y":3}, - {"label":"K34 (C2,F4)", "x":4.75, "y":3}, - {"label":"K35 (C2,F5)", "x":5.75, "y":3}, - {"label":"K36 (C2,F6)", "x":6.75, "y":3}, - {"label":"K37 (C2,F7)", "x":7.75, "y":3}, - {"label":"K38 (C2,A0)", "x":8.75, "y":3}, - {"label":"K39 (C2,A1)", "x":9.75, "y":3}, - {"label":"K3A (C2,A2)", "x":10.75, "y":3}, - {"label":"K3B (C2,A3)", "x":11.75, "y":3}, - {"label":"K3D (C2,A5)", "x":12.75, "y":3, "w":2.25}, - {"label":"K40 (C1,F0)", "x":0, "y":4, "w":1.25}, - {"label":"K41 (C1,F1)", "x":1.25, "y":4}, - {"label":"K42 (C1,F2)", "x":2.25, "y":4}, - {"label":"K43 (C1,F3)", "x":3.25, "y":4}, - {"label":"K44 (C1,F4)", "x":4.25, "y":4}, - {"label":"K45 (C1,F5)", "x":5.25, "y":4}, - {"label":"K46 (C1,F6)", "x":6.25, "y":4}, - {"label":"K47 (C1,F7)", "x":7.25, "y":4}, - {"label":"K48 (C1,A0)", "x":8.25, "y":4}, - {"label":"K49 (C1,A1)", "x":9.25, "y":4}, - {"label":"K4A (C1,A2)", "x":10.25, "y":4}, - {"label":"K4B (C1,A3)", "x":11.25, "y":4}, - {"label":"K4C (C1,A4)", "x":12.25, "y":4, "w":2.75}, - {"label":"K4F (C1,A7)", "x":16, "y":4}, - {"label":"K50 (C0,F0)", "x":0, "y":5, "w":1.25}, - {"label":"K51 (C0,F1)", "x":1.25, "y":5, "w":1.25}, - {"label":"K52 (C0,F2)", "x":2.5, "y":5, "w":1.25}, - {"label":"K56 (C0,F6)", "x":3.75, "y":5, "w":6.25}, - {"label":"K5A (C0,A2)", "x":10, "y":5, "w":1.25}, - {"label":"K5B (C0,A3)", "x":11.25, "y":5, "w":1.25}, - {"label":"K5C (C0,A4)", "x":12.5, "y":5, "w":1.25}, - {"label":"K5D (C0,A5)", "x":13.75, "y":5, "w":1.25}, - {"label":"K5E (C0,A6)", "x":15, "y":5}, - {"label":"K5F (C0,A7)", "x":16, "y":5}, - {"label":"K5G (C0,C6)", "x":17, "y":5} + {"label":"K0E (C5,A6)", "x":15.25, "y":0}, + {"label":"K0F (C5,A7)", "x":16.25, "y":0}, + {"label":"K0G (C5,C6)", "x":17.25, "y":0}, + + {"label":"K10 (C4,F0)", "x":0, "y":1.5}, + {"label":"K11 (C4,F1)", "x":1, "y":1.5}, + {"label":"K12 (C4,F2)", "x":2, "y":1.5}, + {"label":"K13 (C4,F3)", "x":3, "y":1.5}, + {"label":"K14 (C4,F4)", "x":4, "y":1.5}, + {"label":"K15 (C4,F5)", "x":5, "y":1.5}, + {"label":"K16 (C4,F6)", "x":6, "y":1.5}, + {"label":"K17 (C4,F7)", "x":7, "y":1.5}, + {"label":"K18 (C4,A0)", "x":8, "y":1.5}, + {"label":"K19 (C4,A1)", "x":9, "y":1.5}, + {"label":"K1A (C4,A2)", "x":10, "y":1.5}, + {"label":"K1B (C4,A3)", "x":11, "y":1.5}, + {"label":"K1C (C4,A4)", "x":12, "y":1.5}, + {"label":"K1D (C4,A5)", "x":13, "y":1.5}, + {"label":"K0D (C5,A5)", "x":14, "y":1.5}, + {"label":"K1E (C4,A6)", "x":15.25, "y":1.5}, + {"label":"K1F (C4,A7)", "x":16.25, "y":1.5}, + {"label":"K1G (C4,C6)", "x":17.25, "y":1.5}, + + {"label":"K20 (C3,F0)", "x":0, "y":2.5, "w":1.5}, + {"label":"K21 (C3,F1)", "x":1.5, "y":2.5}, + {"label":"K22 (C3,F2)", "x":2.5, "y":2.5}, + {"label":"K23 (C3,F3)", "x":3.5, "y":2.5}, + {"label":"K24 (C3,F4)", "x":4.5, "y":2.5}, + {"label":"K25 (C3,F5)", "x":5.5, "y":2.5}, + {"label":"K26 (C3,F6)", "x":6.5, "y":2.5}, + {"label":"K27 (C3,F7)", "x":7.5, "y":2.5}, + {"label":"K28 (C3,A0)", "x":8.5, "y":2.5}, + {"label":"K29 (C3,A1)", "x":9.5, "y":2.5}, + {"label":"K2A (C3,A2)", "x":10.5, "y":2.5}, + {"label":"K2B (C3,A3)", "x":11.5, "y":2.5}, + {"label":"K2C (C3,A4)", "x":12.5, "y":2.5}, + {"label":"K2D (C3,A5)", "x":13.5, "y":2.5, "w":1.5}, + {"label":"K2E (C3,A6)", "x":15.25, "y":2.5}, + {"label":"K2F (C3,A7)", "x":16.25, "y":2.5}, + {"label":"K2G (C3,C6)", "x":17.25, "y":2.5}, + + {"label":"K30 (C2,F0)", "x":0, "y":3.5, "w":1.75}, + {"label":"K31 (C2,F1)", "x":1.75, "y":3.5}, + {"label":"K32 (C2,F2)", "x":2.75, "y":3.5}, + {"label":"K33 (C2,F3)", "x":3.75, "y":3.5}, + {"label":"K34 (C2,F4)", "x":4.75, "y":3.5}, + {"label":"K35 (C2,F5)", "x":5.75, "y":3.5}, + {"label":"K36 (C2,F6)", "x":6.75, "y":3.5}, + {"label":"K37 (C2,F7)", "x":7.75, "y":3.5}, + {"label":"K38 (C2,A0)", "x":8.75, "y":3.5}, + {"label":"K39 (C2,A1)", "x":9.75, "y":3.5}, + {"label":"K3A (C2,A2)", "x":10.75, "y":3.5}, + {"label":"K3B (C2,A3)", "x":11.75, "y":3.5}, + {"label":"K3D (C2,A5)", "x":12.75, "y":3.5, "w":2.25}, + + {"label":"K40 (C1,F0)", "x":0, "y":4.5, "w":1.25}, + {"label":"K41 (C1,F1)", "x":1.25, "y":4.5}, + {"label":"K42 (C1,F2)", "x":2.25, "y":4.5}, + {"label":"K43 (C1,F3)", "x":3.25, "y":4.5}, + {"label":"K44 (C1,F4)", "x":4.25, "y":4.5}, + {"label":"K45 (C1,F5)", "x":5.25, "y":4.5}, + {"label":"K46 (C1,F6)", "x":6.25, "y":4.5}, + {"label":"K47 (C1,F7)", "x":7.25, "y":4.5}, + {"label":"K48 (C1,A0)", "x":8.25, "y":4.5}, + {"label":"K49 (C1,A1)", "x":9.25, "y":4.5}, + {"label":"K4A (C1,A2)", "x":10.25, "y":4.5}, + {"label":"K4B (C1,A3)", "x":11.25, "y":4.5}, + {"label":"K4C (C1,A4)", "x":12.25, "y":4.5, "w":2.75}, + {"label":"K4F (C1,A7)", "x":16.25, "y":4.5}, + + {"label":"K50 (C0,F0)", "x":0, "y":5.5, "w":1.25}, + {"label":"K51 (C0,F1)", "x":1.25, "y":5.5, "w":1.25}, + {"label":"K52 (C0,F2)", "x":2.5, "y":5.5, "w":1.25}, + {"label":"K56 (C0,F6)", "x":3.75, "y":5.5, "w":6.25}, + {"label":"K5A (C0,A2)", "x":10, "y":5.5, "w":1.25}, + {"label":"K5B (C0,A3)", "x":11.25, "y":5.5, "w":1.25}, + {"label":"K5C (C0,A4)", "x":12.5, "y":5.5, "w":1.25}, + {"label":"K5D (C0,A5)", "x":13.75, "y":5.5, "w":1.25}, + {"label":"K5E (C0,A6)", "x":15.25, "y":5.5}, + {"label":"K5F (C0,A7)", "x":16.25, "y":5.5}, + {"label":"K5G (C0,C6)", "x":17.25, "y":5.5} + ] + }, + "LAYOUT_tkl_ansi": { + "layout": [ + {"label":"K00 (C5,F0)", "x":0, "y":0}, + {"label":"K01 (C5,F1)", "x":2, "y":0}, + {"label":"K02 (C5,F2)", "x":3, "y":0}, + {"label":"K03 (C5,F3)", "x":4, "y":0}, + {"label":"K04 (C5,F4)", "x":5, "y":0}, + {"label":"K05 (C5,F5)", "x":6.5, "y":0}, + {"label":"K06 (C5,F6)", "x":7.5, "y":0}, + {"label":"K07 (C5,F7)", "x":8.5, "y":0}, + {"label":"K08 (C5,A0)", "x":9.5, "y":0}, + {"label":"K09 (C5,A1)", "x":11, "y":0}, + {"label":"K0A (C5,A2)", "x":12, "y":0}, + {"label":"K0B (C5,A3)", "x":13, "y":0}, + {"label":"K0C (C5,A4)", "x":14, "y":0}, + {"label":"K0E (C5,A6)", "x":15.25, "y":0}, + {"label":"K0F (C5,A7)", "x":16.25, "y":0}, + {"label":"K0G (C5,C6)", "x":17.25, "y":0}, + + {"label":"K10 (C4,F0)", "x":0, "y":1.5}, + {"label":"K11 (C4,F1)", "x":1, "y":1.5}, + {"label":"K12 (C4,F2)", "x":2, "y":1.5}, + {"label":"K13 (C4,F3)", "x":3, "y":1.5}, + {"label":"K14 (C4,F4)", "x":4, "y":1.5}, + {"label":"K15 (C4,F5)", "x":5, "y":1.5}, + {"label":"K16 (C4,F6)", "x":6, "y":1.5}, + {"label":"K17 (C4,F7)", "x":7, "y":1.5}, + {"label":"K18 (C4,A0)", "x":8, "y":1.5}, + {"label":"K19 (C4,A1)", "x":9, "y":1.5}, + {"label":"K1A (C4,A2)", "x":10, "y":1.5}, + {"label":"K1B (C4,A3)", "x":11, "y":1.5}, + {"label":"K1C (C4,A4)", "x":12, "y":1.5}, + {"label":"K1D (C4,A5)", "x":13, "y":1.5, "w":2}, + {"label":"K1E (C4,A6)", "x":15.25, "y":1.5}, + {"label":"K1F (C4,A7)", "x":16.25, "y":1.5}, + {"label":"K1G (C4,C6)", "x":17.25, "y":1.5}, + + {"label":"K20 (C3,F0)", "x":0, "y":2.5, "w":1.5}, + {"label":"K21 (C3,F1)", "x":1.5, "y":2.5}, + {"label":"K22 (C3,F2)", "x":2.5, "y":2.5}, + {"label":"K23 (C3,F3)", "x":3.5, "y":2.5}, + {"label":"K24 (C3,F4)", "x":4.5, "y":2.5}, + {"label":"K25 (C3,F5)", "x":5.5, "y":2.5}, + {"label":"K26 (C3,F6)", "x":6.5, "y":2.5}, + {"label":"K27 (C3,F7)", "x":7.5, "y":2.5}, + {"label":"K28 (C3,A0)", "x":8.5, "y":2.5}, + {"label":"K29 (C3,A1)", "x":9.5, "y":2.5}, + {"label":"K2A (C3,A2)", "x":10.5, "y":2.5}, + {"label":"K2B (C3,A3)", "x":11.5, "y":2.5}, + {"label":"K2C (C3,A4)", "x":12.5, "y":2.5}, + {"label":"K2D (C3,A5)", "x":13.5, "y":2.5, "w":1.5}, + {"label":"K2E (C3,A6)", "x":15.25, "y":2.5}, + {"label":"K2F (C3,A7)", "x":16.25, "y":2.5}, + {"label":"K2G (C3,C6)", "x":17.25, "y":2.5}, + + {"label":"K30 (C2,F0)", "x":0, "y":3.5, "w":1.75}, + {"label":"K31 (C2,F1)", "x":1.75, "y":3.5}, + {"label":"K32 (C2,F2)", "x":2.75, "y":3.5}, + {"label":"K33 (C2,F3)", "x":3.75, "y":3.5}, + {"label":"K34 (C2,F4)", "x":4.75, "y":3.5}, + {"label":"K35 (C2,F5)", "x":5.75, "y":3.5}, + {"label":"K36 (C2,F6)", "x":6.75, "y":3.5}, + {"label":"K37 (C2,F7)", "x":7.75, "y":3.5}, + {"label":"K38 (C2,A0)", "x":8.75, "y":3.5}, + {"label":"K39 (C2,A1)", "x":9.75, "y":3.5}, + {"label":"K3A (C2,A2)", "x":10.75, "y":3.5}, + {"label":"K3B (C2,A3)", "x":11.75, "y":3.5}, + {"label":"K3D (C2,A5)", "x":12.75, "y":3.5, "w":2.25}, + + {"label":"K40 (C1,F0)", "x":0, "y":4.5, "w":2.25}, + {"label":"K42 (C1,F2)", "x":2.25, "y":4.5}, + {"label":"K43 (C1,F3)", "x":3.25, "y":4.5}, + {"label":"K44 (C1,F4)", "x":4.25, "y":4.5}, + {"label":"K45 (C1,F5)", "x":5.25, "y":4.5}, + {"label":"K46 (C1,F6)", "x":6.25, "y":4.5}, + {"label":"K47 (C1,F7)", "x":7.25, "y":4.5}, + {"label":"K48 (C1,A0)", "x":8.25, "y":4.5}, + {"label":"K49 (C1,A1)", "x":9.25, "y":4.5}, + {"label":"K4A (C1,A2)", "x":10.25, "y":4.5}, + {"label":"K4B (C1,A3)", "x":11.25, "y":4.5}, + {"label":"K4C (C1,A4)", "x":12.25, "y":4.5, "w":2.75}, + {"label":"K4F (C1,A7)", "x":16.25, "y":4.5}, + + {"label":"K50 (C0,F0)", "x":0, "y":5.5, "w":1.25}, + {"label":"K51 (C0,F1)", "x":1.25, "y":5.5, "w":1.25}, + {"label":"K52 (C0,F2)", "x":2.5, "y":5.5, "w":1.25}, + {"label":"K56 (C0,F6)", "x":3.75, "y":5.5, "w":6.25}, + {"label":"K5A (C0,A2)", "x":10, "y":5.5, "w":1.25}, + {"label":"K5B (C0,A3)", "x":11.25, "y":5.5, "w":1.25}, + {"label":"K5C (C0,A4)", "x":12.5, "y":5.5, "w":1.25}, + {"label":"K5D (C0,A5)", "x":13.75, "y":5.5, "w":1.25}, + {"label":"K5E (C0,A6)", "x":15.25, "y":5.5}, + {"label":"K5F (C0,A7)", "x":16.25, "y":5.5}, + {"label":"K5G (C0,C6)", "x":17.25, "y":5.5} ] } } - ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/" -} \ No newline at end of file +} diff --git a/keyboards/ggkeyboards/genesis/solder/keymaps/default/keymap.c b/keyboards/ggkeyboards/genesis/solder/keymaps/default/keymap.c index 98d778f1d1c0..4e7a2fd1fc5f 100644 --- a/keyboards/ggkeyboards/genesis/solder/keymaps/default/keymap.c +++ b/keyboards/ggkeyboards/genesis/solder/keymaps/default/keymap.c @@ -17,7 +17,7 @@ #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( + [0] = LAYOUT_all( KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_SPC, KC_INS, KC_HOME, KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, @@ -25,7 +25,7 @@ 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, KC_UP, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI, MO(1), KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT ), - [1] = LAYOUT( + [1] = LAYOUT_all( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -33,21 +33,5 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), - [2] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - [3] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), -}; \ No newline at end of file +}; diff --git a/keyboards/ggkeyboards/genesis/solder/keymaps/via/keymap.c b/keyboards/ggkeyboards/genesis/solder/keymaps/via/keymap.c index 1084a6e2202c..1d22fbe318f8 100644 --- a/keyboards/ggkeyboards/genesis/solder/keymaps/via/keymap.c +++ b/keyboards/ggkeyboards/genesis/solder/keymaps/via/keymap.c @@ -17,7 +17,7 @@ #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( + [0] = LAYOUT_all( KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_SPC, KC_INS, KC_HOME, KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, @@ -25,29 +25,29 @@ 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, KC_UP, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI, MO(1), KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT ), - [1] = LAYOUT( + [1] = LAYOUT_all( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), - [2] = LAYOUT( + [2] = LAYOUT_all( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), - [3] = LAYOUT( + [3] = LAYOUT_all( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), -}; \ No newline at end of file +}; diff --git a/keyboards/ggkeyboards/genesis/solder/rules.mk b/keyboards/ggkeyboards/genesis/solder/rules.mk index 0de06a3443af..b401159dd026 100644 --- a/keyboards/ggkeyboards/genesis/solder/rules.mk +++ b/keyboards/ggkeyboards/genesis/solder/rules.mk @@ -7,19 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output -# generated by KBFirmware JSON to QMK Parser -# https://noroadsleft.github.io/kbf_qmk_converter/ +LAYOUTS = tkl_ansi diff --git a/keyboards/ggkeyboards/genesis/solder/solder.c b/keyboards/ggkeyboards/genesis/solder/solder.c index 9e1bdeb0ffce..647455051511 100644 --- a/keyboards/ggkeyboards/genesis/solder/solder.c +++ b/keyboards/ggkeyboards/genesis/solder/solder.c @@ -1,4 +1,3 @@ - /* Copyright 2021 Steven Phillips (Spooknik) * * This program is free software: you can redistribute it and/or modify @@ -16,7 +15,3 @@ */ #include "solder.h" - -// generated by KBFirmware JSON to QMK Parser -// https://noroadsleft.github.io/kbf_qmk_converter/ - diff --git a/keyboards/ggkeyboards/genesis/solder/solder.h b/keyboards/ggkeyboards/genesis/solder/solder.h index a5a96adf83c6..b95da8a592ab 100644 --- a/keyboards/ggkeyboards/genesis/solder/solder.h +++ b/keyboards/ggkeyboards/genesis/solder/solder.h @@ -18,7 +18,7 @@ #include "quantum.h" -#define LAYOUT( \ +#define LAYOUT_all( \ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, K0F, K0G, \ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K0D, K1E, K1F, K1G, \ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, \ @@ -34,5 +34,18 @@ { K50, K51, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F, K5G, KC_NO }, \ } -// generated by KBFirmware JSON to QMK Parser -// https://noroadsleft.github.io/kbf_qmk_converter/ \ No newline at end of file +#define LAYOUT_tkl_ansi( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, 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, K56, K5A, K5B, K5C, K5D, K5E, K5F, K5G \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, K0E, K0F, K0G, KC_NO }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, KC_NO }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, KC_NO }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, KC_NO, 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, KC_NO }, \ + { K50, K51, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F, K5G, KC_NO }, \ +} diff --git a/keyboards/gh60/revc/config.h b/keyboards/gh60/revc/config.h index 6628d78f622d..4483473a62e5 100644 --- a/keyboards/gh60/revc/config.h +++ b/keyboards/gh60/revc/config.h @@ -88,54 +88,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. diff --git a/keyboards/gh60/revc/info.json b/keyboards/gh60/revc/info.json index 9d25629dae96..116cf233c6d0 100644 --- a/keyboards/gh60/revc/info.json +++ b/keyboards/gh60/revc/info.json @@ -2,8 +2,6 @@ "keyboard_name": "GH60 Rev C", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/gh60/revc/keymaps/danbee/rules.mk b/keyboards/gh60/revc/keymaps/danbee/rules.mk index b1434f75c84b..0a5b666e8557 100644 --- a/keyboards/gh60/revc/keymaps/danbee/rules.mk +++ b/keyboards/gh60/revc/keymaps/danbee/rules.mk @@ -1,2 +1 @@ MOUSEKEY_ENABLE = no -KEYBOARD_LOCK_ENABLE = yes diff --git a/keyboards/gh60/revc/keymaps/dbroqua/keymap.c b/keyboards/gh60/revc/keymaps/dbroqua/keymap.c index 9666199f3cf6..964f40f1c0bf 100644 --- a/keyboards/gh60/revc/keymaps/dbroqua/keymap.c +++ b/keyboards/gh60/revc/keymaps/dbroqua/keymap.c @@ -94,79 +94,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_SFX] = LAYOUT_60_ansi_split_bs_rshift( ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \ ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \ - ______, F(0), F(1), ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \ - ______, F(2), F(3), F(4), F(5), F(6), F(7), ______, ______, ______, ______, ______, ______, \ + ______, RGB_TOG,RGB_MOD,______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \ + ______, RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD,______, ______, ______, ______, ______, ______, \ ______, ______, ______, ______, ______, ______, ______, ______ \ ) }; -enum function_id { - RGBLED_TOGGLE, - RGBLED_STEP_MODE, - RGBLED_INCREASE_HUE, - RGBLED_DECREASE_HUE, - RGBLED_INCREASE_SAT, - RGBLED_DECREASE_SAT, - RGBLED_INCREASE_VAL, - RGBLED_DECREASE_VAL -}; - -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_FUNCTION(RGBLED_TOGGLE), - [1] = ACTION_FUNCTION(RGBLED_STEP_MODE), - [2] = ACTION_FUNCTION(RGBLED_INCREASE_HUE), - [3] = ACTION_FUNCTION(RGBLED_DECREASE_HUE), - [4] = ACTION_FUNCTION(RGBLED_INCREASE_SAT), - [5] = ACTION_FUNCTION(RGBLED_DECREASE_SAT), - [6] = ACTION_FUNCTION(RGBLED_INCREASE_VAL), - [7] = ACTION_FUNCTION(RGBLED_DECREASE_VAL) -}; - -void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { - switch (id) { - case RGBLED_TOGGLE: - if (record->event.pressed) { - rgblight_toggle(); - } - break; - case RGBLED_INCREASE_HUE: - if (record->event.pressed) { - rgblight_increase_hue(); - } - break; - case RGBLED_DECREASE_HUE: - if (record->event.pressed) { - rgblight_decrease_hue(); - } - break; - case RGBLED_INCREASE_SAT: - if (record->event.pressed) { - rgblight_increase_sat(); - } - break; - case RGBLED_DECREASE_SAT: - if (record->event.pressed) { - rgblight_decrease_sat(); - } - break; - case RGBLED_INCREASE_VAL: - if (record->event.pressed) { - rgblight_increase_val(); - } - break; - case RGBLED_DECREASE_VAL: - if (record->event.pressed) { - rgblight_decrease_val(); - } - break; - case RGBLED_STEP_MODE: - if (record->event.pressed) { - rgblight_step(); - } - break; - } -} - void matrix_scan_user(void) { uint32_t layer = layer_state; diff --git a/keyboards/gh60/revc/keymaps/dbroqua_7U/keymap.c b/keyboards/gh60/revc/keymaps/dbroqua_7U/keymap.c index 5b58d7686a14..a79b89e9c282 100644 --- a/keyboards/gh60/revc/keymaps/dbroqua_7U/keymap.c +++ b/keyboards/gh60/revc/keymaps/dbroqua_7U/keymap.c @@ -3,6 +3,10 @@ #define _DEFAULT 0 #define _FN 1 +enum custom_keycodes { + LED_TOGGLE = SAFE_RANGE +}; + int esc_led = 0; // Fillers to make layering more clear @@ -44,7 +48,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------' */ [_FN] = LAYOUT_60_ansi_split_bs_rshift( /* Layer 1 */ - F(0), 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, \ + LED_TOGGLE,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_PSCR, KC_SLCK, KC_PAUS, KC_UP, ______, ______, \ ______, KC_VOLD, KC_VOLU, KC_MUTE, ______, ______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT,______, \ ______, KC_MPRV, KC_MPLY, KC_MNXT, ______, ______, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, ______, ______, \ @@ -52,14 +56,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -enum function_id { - LED_TOGGLE -}; - -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_FUNCTION(LED_TOGGLE) -}; - void esc_led_toggle(void) { if (esc_led == 0){ esc_led = 1; @@ -70,12 +66,13 @@ void esc_led_toggle(void) { } } -void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { - switch (id) { - case LED_TOGGLE: - if (record->event.pressed) { - esc_led_toggle(); - } - break; - } -} \ No newline at end of file +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case LED_TOGGLE: + if (record->event.pressed) { + esc_led_toggle(); + } + return false; + } + return true; +} diff --git a/keyboards/gh60/revc/keymaps/default_abnt2/keymap.c b/keyboards/gh60/revc/keymaps/default_abnt2/keymap.c index 633b053e6901..493bee1cd405 100644 --- a/keyboards/gh60/revc/keymaps/default_abnt2/keymap.c +++ b/keyboards/gh60/revc/keymaps/default_abnt2/keymap.c @@ -41,7 +41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_BL] = LAYOUT_60_abnt2( KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, BR_ACUT, BR_LBRC, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, BR_CCDL, BR_TILD, BR_RBRC, KC_ENT, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, BR_CCED, BR_TILD, BR_RBRC, KC_ENT, KC_LSFT, BR_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, BR_SCLN, BR_SLSH, KC_RSFT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(_FL), KC_RCTL), diff --git a/keyboards/gh60/revc/keymaps/robotmaxtron/keymap.c b/keyboards/gh60/revc/keymaps/robotmaxtron/keymap.c index 770fe723b565..b84e7564fc8d 100644 --- a/keyboards/gh60/revc/keymaps/robotmaxtron/keymap.c +++ b/keyboards/gh60/revc/keymaps/robotmaxtron/keymap.c @@ -21,7 +21,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------' */ [_BL] = LAYOUT( - F(12),KC_1,KC_2,KC_3,KC_4,KC_5,KC_6,KC_7,KC_8,KC_9,KC_0,KC_MINS,KC_EQL,KC_BSPC, \ + KC_GESC,KC_1,KC_2,KC_3,KC_4,KC_5,KC_6,KC_7,KC_8,KC_9,KC_0,KC_MINS,KC_EQL,KC_BSPC, \ KC_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, \ LT(2, KC_CAPS),KC_A,KC_S,KC_D,KC_F,KC_G,KC_H,KC_J,KC_K,KC_L,KC_SCLN,KC_QUOT,KC_NO,KC_ENT, \ KC_LSFT,KC_NO,KC_Z,KC_X,KC_C,KC_V,KC_B,KC_N,KC_M,KC_COMM,KC_DOT,KC_SLSH,KC_NO,KC_RSFT, \ @@ -88,35 +88,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_UL] = LAYOUT( KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \ KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \ - KC_TRNS,F(4),F(5),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \ - KC_TRNS,KC_TRNS,KC_TRNS,F(6),F(7),F(8),F(9),F(10),F(11),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \ + KC_TRNS,RGB_TOG,RGB_MOD,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \ + KC_TRNS,KC_TRNS,KC_TRNS,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \ KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS), }; -enum function_id { - RGBLED_TOGGLE, - RGBLED_STEP_MODE, - RGBLED_INCREASE_HUE, - RGBLED_DECREASE_HUE, - RGBLED_INCREASE_SAT, - RGBLED_DECREASE_SAT, - RGBLED_INCREASE_VAL, - RGBLED_DECREASE_VAL, - SHIFT_ESC, -}; - -const uint16_t PROGMEM fn_actions[] = { - [4] = ACTION_FUNCTION(RGBLED_TOGGLE), //Turn on/off underglow - [5] = ACTION_FUNCTION(RGBLED_STEP_MODE), // Change underglow mode - [6] = ACTION_FUNCTION(RGBLED_INCREASE_HUE), - [7] = ACTION_FUNCTION(RGBLED_DECREASE_HUE), - [8] = ACTION_FUNCTION(RGBLED_INCREASE_SAT), - [9] = ACTION_FUNCTION(RGBLED_DECREASE_SAT), - [10] = ACTION_FUNCTION(RGBLED_INCREASE_VAL), - [11] = ACTION_FUNCTION(RGBLED_DECREASE_VAL), - [12] = ACTION_FUNCTION(SHIFT_ESC), -}; - void matrix_scan_user(void) { // Layer LED indicators @@ -134,73 +110,3 @@ void matrix_scan_user(void) { gh60_esc_led_off(); } }; - -#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) - -void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { - switch (id) { - case RGBLED_TOGGLE: - //led operations - if (record->event.pressed) { - rgblight_toggle(); - } - break; - case RGBLED_INCREASE_HUE: - if (record->event.pressed) { - rgblight_increase_hue(); - } - break; - case RGBLED_DECREASE_HUE: - if (record->event.pressed) { - rgblight_decrease_hue(); - } - break; - case RGBLED_INCREASE_SAT: - if (record->event.pressed) { - rgblight_increase_sat(); - } - break; - case RGBLED_DECREASE_SAT: - if (record->event.pressed) { - rgblight_decrease_sat(); - } - break; - case RGBLED_INCREASE_VAL: - if (record->event.pressed) { - rgblight_increase_val(); - } - break; - case RGBLED_DECREASE_VAL: - if (record->event.pressed) { - rgblight_decrease_val(); - } - break; - case RGBLED_STEP_MODE: - if (record->event.pressed) { - rgblight_step(); - } - break; - static uint8_t shift_esc_shift_mask; - // Shift + ESC = ~ - case SHIFT_ESC: - shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK; - if (record->event.pressed) { - if (shift_esc_shift_mask) { - add_key(KC_GRV); - send_keyboard_report(); - } else { - add_key(KC_ESC); - send_keyboard_report(); - } - } else { - if (shift_esc_shift_mask) { - del_key(KC_GRV); - send_keyboard_report(); - } else { - del_key(KC_ESC); - send_keyboard_report(); - } - } - break; - } -}; diff --git a/keyboards/gh60/revc/keymaps/sethbc/keymap.c b/keyboards/gh60/revc/keymaps/sethbc/keymap.c index 09a8d49eeb9c..1557d109b465 100644 --- a/keyboards/gh60/revc/keymaps/sethbc/keymap.c +++ b/keyboards/gh60/revc/keymaps/sethbc/keymap.c @@ -1,12 +1,9 @@ #include QMK_KEYBOARD_H -#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) - - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* 0: qwerty */ LAYOUT_60_ansi_split_bs_rshift( - F(0),KC_1,KC_2,KC_3,KC_4,KC_5,KC_6,KC_7,KC_8,KC_9,KC_0,KC_MINS,KC_EQL,KC_BSLS,KC_GRV,\ + KC_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_BSLS,KC_GRV,\ KC_TAB,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_Y,KC_U,KC_I,KC_O,KC_P,KC_LBRC,KC_RBRC,KC_BSPC,\ KC_LCTL,KC_A,KC_S,KC_D,KC_F,KC_G,KC_H,KC_J,KC_K,KC_L,KC_SCLN,KC_QUOT,KC_ENT,\ KC_LSFT,KC_Z,KC_X,KC_C,KC_V,KC_B,KC_N,KC_M,KC_COMM,KC_DOT,KC_SLSH,KC_RSFT,MO(1),\ @@ -19,37 +16,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PPLS,KC_PMNS,KC_END,KC_PGDN,KC_DOWN,KC_TRNS,KC_TRNS,\ KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS), }; - -enum function_id { - SHIFT_ESC, -}; - -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_FUNCTION(SHIFT_ESC), -}; - -void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { - static uint8_t shift_esc_shift_mask; - switch (id) { - case SHIFT_ESC: - shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK; - if (record->event.pressed) { - if (shift_esc_shift_mask) { - add_key(KC_GRV); - send_keyboard_report(); - } else { - add_key(KC_ESC); - send_keyboard_report(); - } - } else { - if (shift_esc_shift_mask) { - del_key(KC_GRV); - send_keyboard_report(); - } else { - del_key(KC_ESC); - send_keyboard_report(); - } - } - break; - } -} diff --git a/keyboards/gh60/revc/rules.mk b/keyboards/gh60/revc/rules.mk index 831de85d0046..690c7e9076ee 100644 --- a/keyboards/gh60/revc/rules.mk +++ b/keyboards/gh60/revc/rules.mk @@ -2,30 +2,17 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -KEYBOARD_LOCK_ENABLE = yes # Allow locking of keyboard via magic key -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -# SLEEP_LED_ENABLE = yes # 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 = yes # Enable keyboard backlight functionality -# MIDI_ENABLE = YES # MIDI controls -# UNICODE_ENABLE = YES # Unicode -# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID LAYOUTS = 60_ansi 60_iso 60_ansi_split_bs_rshift 60_tsangan_hhkb diff --git a/keyboards/gh60/satan/info.json b/keyboards/gh60/satan/info.json index a805c6cf9108..167025799b5b 100644 --- a/keyboards/gh60/satan/info.json +++ b/keyboards/gh60/satan/info.json @@ -2,8 +2,6 @@ "keyboard_name": "GH60 Satan", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, {"label":"k02", "x":2, "y":0}, {"label":"k03", "x":3, "y":0}, {"label":"k04", "x":4, "y":0}, {"label":"k05", "x":5, "y":0}, {"label":"k06", "x":6, "y":0}, {"label":"k07", "x":7, "y":0}, {"label":"k08", "x":8, "y":0}, {"label":"k09", "x":9, "y":0}, {"label":"k0a", "x":10, "y":0}, {"label":"k0b", "x":11, "y":0}, {"label":"k0c", "x":12, "y":0}, {"label":"k0d", "x":13, "y":0}, {"label":"k49", "x":14, "y":0}, {"label":"k10", "x":0, "y":1, "w":1.5}, {"label":"k11", "x":1.5, "y":1}, {"label":"k12", "x":2.5, "y":1}, {"label":"k13", "x":3.5, "y":1}, {"label":"k14", "x":4.5, "y":1}, {"label":"k15", "x":5.5, "y":1}, {"label":"k16", "x":6.5, "y":1}, {"label":"k17", "x":7.5, "y":1}, {"label":"k18", "x":8.5, "y":1}, {"label":"k19", "x":9.5, "y":1}, {"label":"k1a", "x":10.5, "y":1}, {"label":"k1b", "x":11.5, "y":1}, {"label":"k1c", "x":12.5, "y":1}, {"label":"k1d", "x":13.5, "y":1, "w":1.5}, {"label":"k20", "x":0, "y":2, "w":1.75}, {"label":"k21", "x":1.75, "y":2}, {"label":"k22", "x":2.75, "y":2}, {"label":"k23", "x":3.75, "y":2}, {"label":"k24", "x":4.75, "y":2}, {"label":"k25", "x":5.75, "y":2}, {"label":"k26", "x":6.75, "y":2}, {"label":"k27", "x":7.75, "y":2}, {"label":"k28", "x":8.75, "y":2}, {"label":"k29", "x":9.75, "y":2}, {"label":"k2a", "x":10.75, "y":2}, {"label":"k2b", "x":11.75, "y":2}, {"label":"k2c", "x":12.75, "y":2}, {"label":"k2d", "x":13.75, "y":2, "w":1.25}, {"label":"k30", "x":0, "y":3, "w":1.25}, {"label":"k31", "x":1.25, "y":3}, {"label":"k32", "x":2.25, "y":3}, {"label":"k33", "x":3.25, "y":3}, {"label":"k34", "x":4.25, "y":3}, {"label":"k35", "x":5.25, "y":3}, {"label":"k36", "x":6.25, "y":3}, {"label":"k37", "x":7.25, "y":3}, {"label":"k38", "x":8.25, "y":3}, {"label":"k39", "x":9.25, "y":3}, {"label":"k3a", "x":10.25, "y":3}, {"label":"k3b", "x":11.25, "y":3}, {"label":"k3d", "x":12.25, "y":3, "w":1.75}, {"label":"k3c", "x":14, "y":3}, {"label":"k40", "x":0, "y":4, "w":1.25}, {"label":"k41", "x":1.25, "y":4, "w":1.25}, {"label":"k42", "x":2.5, "y":4, "w":1.25}, {"label":"k45", "x":3.75, "y":4, "w":6.25}, {"label":"k4a", "x":10, "y":4, "w":1.25}, {"label":"k4b", "x":11.25, "y":4, "w":1.25}, {"label":"k4c", "x":12.5, "y":4, "w":1.25}, {"label":"k4d", "x":13.75, "y":4, "w":1.25}] diff --git a/keyboards/gh60/satan/keymaps/abhixec/rules.mk b/keyboards/gh60/satan/keymaps/abhixec/rules.mk index fdbd25ea80fe..4cd8e19f370f 100644 --- a/keyboards/gh60/satan/keymaps/abhixec/rules.mk +++ b/keyboards/gh60/satan/keymaps/abhixec/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/gh60/satan/keymaps/addcninblue/rules.mk b/keyboards/gh60/satan/keymaps/addcninblue/rules.mk index fd7f34300bf8..b8c05a5984ca 100644 --- a/keyboards/gh60/satan/keymaps/addcninblue/rules.mk +++ b/keyboards/gh60/satan/keymaps/addcninblue/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) @@ -18,4 +18,3 @@ UCIS_ENABLE = no # Keep in mind that not all will work (See WinCompose BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -API_SYSEX_ENABLE = no # This enables using the Quantum SYSEX API to send strings diff --git a/keyboards/gh60/satan/keymaps/admiralStrokers/rules.mk b/keyboards/gh60/satan/keymaps/admiralStrokers/rules.mk index 7c3f5bd90bc4..ad6c0131ae89 100644 --- a/keyboards/gh60/satan/keymaps/admiralStrokers/rules.mk +++ b/keyboards/gh60/satan/keymaps/admiralStrokers/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) @@ -18,5 +18,3 @@ UCIS_ENABLE = no # Keep in mind that not all will work (See WinCompose for detai BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. SLEEP_LED_ENABLE = no# Breathing sleep LED during USB suspend -API_SYSEX_ENABLE = no # This enables using the Quantum SYSEX API to send strings - diff --git a/keyboards/gh60/satan/keymaps/ben_iso/rules.mk b/keyboards/gh60/satan/keymaps/ben_iso/rules.mk index 53644093d6c4..14367f2f8a3f 100644 --- a/keyboards/gh60/satan/keymaps/ben_iso/rules.mk +++ b/keyboards/gh60/satan/keymaps/ben_iso/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/gh60/satan/keymaps/bri/keymap.c b/keyboards/gh60/satan/keymaps/bri/keymap.c index 1f9430a9f136..2f742411d6df 100644 --- a/keyboards/gh60/satan/keymaps/bri/keymap.c +++ b/keyboards/gh60/satan/keymaps/bri/keymap.c @@ -5,8 +5,8 @@ #define _FL 1 #define _NAV 2 -#define A_LEFT LALT(KC_LEFT) -#define A_RGHT LALT(KC_RGHT) +#define ALEFT LALT(KC_LEFT) +#define ARGHT LALT(KC_RGHT) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap _BL: (Base Layer) Default Layer @@ -59,7 +59,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_NAV] = LAYOUT_60_ansi( _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \ - _______,_______,_______,_______,_______,_______,_______,A_LEFT , KC_UP ,A_RGHT ,_______,_______,_______,_______, \ + _______,_______,_______,_______,_______,_______,_______,ALEFT , KC_UP ,ARGHT ,_______,_______,_______,_______, \ _______,_______,_______,_______,_______,_______,_______,KC_LEFT,KC_DOWN,KC_RGHT,_______,_______, _______, \ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \ _______,_______,_______, _______, _______,_______,_______,_______), diff --git a/keyboards/gh60/satan/keymaps/chaser/keymap.c b/keyboards/gh60/satan/keymaps/chaser/keymap.c index edba9a3091f7..4427f793e8f4 100644 --- a/keyboards/gh60/satan/keymaps/chaser/keymap.c +++ b/keyboards/gh60/satan/keymaps/chaser/keymap.c @@ -1,10 +1,5 @@ #include QMK_KEYBOARD_H - - -// Used for SHIFT_ESC -#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) - // Each layer gets a name for readability, which is then used in the keymap matrix below. // The underscores don't mean anything - you can have a layer called STUFF or any other name. // Layer names don't all need to be of the same length, obviously, and you can also skip them @@ -27,7 +22,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------' */ [_BL] = LAYOUT_all( - F(0) ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS,KC_EQL ,KC_BSPC , _______, \ + KC_GESC ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS,KC_EQL ,KC_BSPC , _______, \ KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_LBRC,KC_RBRC,KC_BSLS , \ KC_CAPS ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN,KC_QUOT,_______,KC_ENT , \ KC_LSHIFT ,_______,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_UP ,MO(_FL) , \ @@ -52,37 +47,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______ ,_______ ,_______ ,_______ ,_______ ,_______,_______,_______,_______,_______,_______,_______,KC_PGUP ,_______ , \ KC_LCTL ,_______ ,KC_LALT , _______, KC_RCTL,KC_HOME,KC_PGDOWN ,KC_END ), }; - -enum function_id { - SHIFT_ESC, -}; - -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_FUNCTION(SHIFT_ESC), -}; - -void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { - static uint8_t shift_esc_shift_mask; - switch (id) { - case SHIFT_ESC: - shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK; - if (record->event.pressed) { - if (shift_esc_shift_mask) { - add_key(KC_GRV); - send_keyboard_report(); - } else { - add_key(KC_ESC); - send_keyboard_report(); - } - } else { - if (shift_esc_shift_mask) { - del_key(KC_GRV); - send_keyboard_report(); - } else { - del_key(KC_ESC); - send_keyboard_report(); - } - } - break; - } -} diff --git a/keyboards/gh60/satan/keymaps/chaser/rules.mk b/keyboards/gh60/satan/keymaps/chaser/rules.mk index 53644093d6c4..14367f2f8a3f 100644 --- a/keyboards/gh60/satan/keymaps/chaser/rules.mk +++ b/keyboards/gh60/satan/keymaps/chaser/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/gh60/satan/keymaps/colemak/rules.mk b/keyboards/gh60/satan/keymaps/colemak/rules.mk index 5cbbc3453683..00ecf0184fe1 100644 --- a/keyboards/gh60/satan/keymaps/colemak/rules.mk +++ b/keyboards/gh60/satan/keymaps/colemak/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 diff --git a/keyboards/gh60/satan/keymaps/dbroqua/keymap.c b/keyboards/gh60/satan/keymaps/dbroqua/keymap.c index a9a54bf7640f..79fa86d18d2f 100644 --- a/keyboards/gh60/satan/keymaps/dbroqua/keymap.c +++ b/keyboards/gh60/satan/keymaps/dbroqua/keymap.c @@ -71,75 +71,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_SFX] = LAYOUT_60_ansi_split_bs_rshift( ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, RESET, \ ______, BL_DEC, BL_INC, BL_TOGG,______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \ - ______, F(0), F(1), ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \ - ______, F(2), F(3), F(4), F(5), F(6), F(7), ______, ______, ______, ______, ______, ______, \ + ______, RGB_TOG,RGB_MOD,______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \ + ______, RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD,______, ______, ______, ______, ______, ______, \ ______, ______, ______, ______, ______, ______, ______, ______ \ ) }; - -enum function_id { - RGBLED_TOGGLE, - RGBLED_STEP_MODE, - RGBLED_INCREASE_HUE, - RGBLED_DECREASE_HUE, - RGBLED_INCREASE_SAT, - RGBLED_DECREASE_SAT, - RGBLED_INCREASE_VAL, - RGBLED_DECREASE_VAL -}; - -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_FUNCTION(RGBLED_TOGGLE), - [1] = ACTION_FUNCTION(RGBLED_STEP_MODE), - [2] = ACTION_FUNCTION(RGBLED_INCREASE_HUE), - [3] = ACTION_FUNCTION(RGBLED_DECREASE_HUE), - [4] = ACTION_FUNCTION(RGBLED_INCREASE_SAT), - [5] = ACTION_FUNCTION(RGBLED_DECREASE_SAT), - [6] = ACTION_FUNCTION(RGBLED_INCREASE_VAL), - [7] = ACTION_FUNCTION(RGBLED_DECREASE_VAL) -}; - -void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { - switch (id) { - case RGBLED_TOGGLE: - if (record->event.pressed) { - rgblight_toggle(); - } - break; - case RGBLED_INCREASE_HUE: - if (record->event.pressed) { - rgblight_increase_hue(); - } - break; - case RGBLED_DECREASE_HUE: - if (record->event.pressed) { - rgblight_decrease_hue(); - } - break; - case RGBLED_INCREASE_SAT: - if (record->event.pressed) { - rgblight_increase_sat(); - } - break; - case RGBLED_DECREASE_SAT: - if (record->event.pressed) { - rgblight_decrease_sat(); - } - break; - case RGBLED_INCREASE_VAL: - if (record->event.pressed) { - rgblight_increase_val(); - } - break; - case RGBLED_DECREASE_VAL: - if (record->event.pressed) { - rgblight_decrease_val(); - } - break; - case RGBLED_STEP_MODE: - if (record->event.pressed) { - rgblight_step(); - } - break; - } -} diff --git a/keyboards/gh60/satan/keymaps/default/rules.mk b/keyboards/gh60/satan/keymaps/default/rules.mk index 5cbbc3453683..b419e042491a 100644 --- a/keyboards/gh60/satan/keymaps/default/rules.mk +++ b/keyboards/gh60/satan/keymaps/default/rules.mk @@ -2,17 +2,12 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - diff --git a/keyboards/gh60/satan/keymaps/dende_iso/keymap.c b/keyboards/gh60/satan/keymaps/dende_iso/keymap.c index e6187c161523..48cd66d41510 100644 --- a/keyboards/gh60/satan/keymaps/dende_iso/keymap.c +++ b/keyboards/gh60/satan/keymaps/dende_iso/keymap.c @@ -29,9 +29,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_DEF] = LAYOUT_60_iso_split_bs_rshift( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, DE_SS, DE_ACUT, KC_BSPC, MO(_FNK), \ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, DE_Z, KC_U, KC_I, KC_O, KC_P, DE_UE, DE_PLUS, \ - FN_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, DE_OE, DE_AE, DE_HASH, KC_ENT, \ - KC_LSFT, DE_LESS, DE_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, DE_MINS, KC_RSFT, KC_DELETE, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, DE_Z, KC_U, KC_I, KC_O, KC_P, DE_UDIA, DE_PLUS, \ + FN_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, DE_ODIA, DE_ADIA, DE_HASH, KC_ENT, \ + KC_LSFT, DE_LABK, DE_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, DE_MINS, KC_RSFT, KC_DELETE, \ KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, KC_ALGR, KC_RGUI, KC_APP, KC_RCTL), diff --git a/keyboards/gh60/satan/keymaps/dende_iso/rules.mk b/keyboards/gh60/satan/keymaps/dende_iso/rules.mk index 53644093d6c4..14367f2f8a3f 100644 --- a/keyboards/gh60/satan/keymaps/dende_iso/rules.mk +++ b/keyboards/gh60/satan/keymaps/dende_iso/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/gh60/satan/keymaps/denolfe/keymap.c b/keyboards/gh60/satan/keymaps/denolfe/keymap.c index a70c409fe86f..612c5075e69c 100644 --- a/keyboards/gh60/satan/keymaps/denolfe/keymap.c +++ b/keyboards/gh60/satan/keymaps/denolfe/keymap.c @@ -5,9 +5,6 @@ #include "rgblight.h" #endif -// Used for SHIFT_ESC -#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) - // Each layer gets a name for readability, which is then used in the keymap matrix below. // The underscores don't mean anything - you can have a layer called STUFF or any other name. // Layer names don't all need to be of the same length, obviously, and you can also skip them @@ -31,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------' */ [_BL] = LAYOUT_60_ansi( - F(0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \ + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \ KC_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, \ MO(_FL), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \ @@ -55,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, \ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_INC, BL_TOGG, \ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ - KC_TRNS, F(1), F(2), F(3), F(4), F(5), F(6), F(7), F(8), KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, \ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), #else KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \ @@ -72,100 +69,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, LSFT(KC_HOME), LCTL(LSFT(KC_LEFT)), LCTL(LSFT(KC_END)), LCTL(LSFT(KC_RIGHT)), KC_TRNS, RESET, \ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), }; - -enum function_id { - SHIFT_ESC, - #ifdef RGBLIGHT_ENABLE - RGBLED_TOGGLE, - RGBLED_STEP_MODE, - RGBLED_INCREASE_HUE, - RGBLED_DECREASE_HUE, - RGBLED_INCREASE_SAT, - RGBLED_DECREASE_SAT, - RGBLED_INCREASE_VAL, - RGBLED_DECREASE_VAL - #endif -}; - -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_FUNCTION(SHIFT_ESC), - #ifdef RGBLIGHT_ENABLE - [1] = ACTION_FUNCTION(RGBLED_TOGGLE), - [2] = ACTION_FUNCTION(RGBLED_STEP_MODE), - [3] = ACTION_FUNCTION(RGBLED_INCREASE_HUE), - [4] = ACTION_FUNCTION(RGBLED_DECREASE_HUE), - [5] = ACTION_FUNCTION(RGBLED_INCREASE_SAT), - [6] = ACTION_FUNCTION(RGBLED_DECREASE_SAT), - [7] = ACTION_FUNCTION(RGBLED_INCREASE_VAL), - [8] = ACTION_FUNCTION(RGBLED_DECREASE_VAL), - #endif -}; - -void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { - static uint8_t shift_esc_shift_mask; - switch (id) { - case SHIFT_ESC: - shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK; - if (record->event.pressed) { - if (shift_esc_shift_mask) { - add_key(KC_GRV); - send_keyboard_report(); - } else { - add_key(KC_ESC); - send_keyboard_report(); - } - } else { - if (shift_esc_shift_mask) { - del_key(KC_GRV); - send_keyboard_report(); - } else { - del_key(KC_ESC); - send_keyboard_report(); - } - } - break; - //led operations - #ifdef RGBLIGHT_ENABLE - case RGBLED_TOGGLE: - if (record->event.pressed) { - rgblight_toggle(); - } - break; - case RGBLED_INCREASE_HUE: - if (record->event.pressed) { - rgblight_increase_hue(); - } - break; - case RGBLED_DECREASE_HUE: - if (record->event.pressed) { - rgblight_decrease_hue(); - } - break; - case RGBLED_INCREASE_SAT: - if (record->event.pressed) { - rgblight_increase_sat(); - } - break; - case RGBLED_DECREASE_SAT: - if (record->event.pressed) { - rgblight_decrease_sat(); - } - break; - case RGBLED_INCREASE_VAL: - if (record->event.pressed) { - rgblight_increase_val(); - } - break; - case RGBLED_DECREASE_VAL: - if (record->event.pressed) { - rgblight_decrease_val(); - } - break; - case RGBLED_STEP_MODE: - if (record->event.pressed) { - rgblight_step(); - } - break; - #endif - } -} diff --git a/keyboards/gh60/satan/keymaps/denolfe/rules.mk b/keyboards/gh60/satan/keymaps/denolfe/rules.mk index 4e002fc0fb8b..07feaa8a407c 100644 --- a/keyboards/gh60/satan/keymaps/denolfe/rules.mk +++ b/keyboards/gh60/satan/keymaps/denolfe/rules.mk @@ -2,7 +2,7 @@ # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = yes # Console for debug(+400) diff --git a/keyboards/gh60/satan/keymaps/dkrieger/rules.mk b/keyboards/gh60/satan/keymaps/dkrieger/rules.mk index d91b0edbf34d..a0c892505c75 100644 --- a/keyboards/gh60/satan/keymaps/dkrieger/rules.mk +++ b/keyboards/gh60/satan/keymaps/dkrieger/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = yes # Console for debug(+400) diff --git a/keyboards/gh60/satan/keymaps/fakb/rules.mk b/keyboards/gh60/satan/keymaps/fakb/rules.mk index a0d2447994d5..c29a61a77f93 100644 --- a/keyboards/gh60/satan/keymaps/fakb/rules.mk +++ b/keyboards/gh60/satan/keymaps/fakb/rules.mk @@ -1,4 +1,4 @@ -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/gh60/satan/keymaps/gipsy-king/rules.mk b/keyboards/gh60/satan/keymaps/gipsy-king/rules.mk index 12ab55fae1ec..935d3544ace4 100644 --- a/keyboards/gh60/satan/keymaps/gipsy-king/rules.mk +++ b/keyboards/gh60/satan/keymaps/gipsy-king/rules.mk @@ -1,4 +1,4 @@ -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite EXTRAKEY_ENABLE = no CONSOLE_ENABLE = no COMMAND_ENABLE = no diff --git a/keyboards/gh60/satan/keymaps/isoHHKB/keymap.c b/keyboards/gh60/satan/keymaps/isoHHKB/keymap.c index 46d66e5db647..d6647cbb30af 100644 --- a/keyboards/gh60/satan/keymaps/isoHHKB/keymap.c +++ b/keyboards/gh60/satan/keymaps/isoHHKB/keymap.c @@ -1,8 +1,5 @@ #include QMK_KEYBOARD_H -// Used for SHIFT_ESC -#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) - // Each layer gets a name for readability, which is then used in the keymap matrix below. // The underscores don't mean anything - you can have a layer called STUFF or any other name. // Layer names don't all need to be of the same length, obviously, and you can also skip them @@ -31,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * */ [_BL] = LAYOUT_60_iso_split_rshift( \ - F(0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_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_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENYE, KC_SCLN, KC_QUOT, KC_ENT, OSM(MOD_LSFT), _______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, OSM(MOD_RSFT), MO(_FL), @@ -61,40 +58,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -enum function_id { - SHIFT_ESC, -}; - -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_FUNCTION(SHIFT_ESC), -}; - -void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { - static uint8_t shift_esc_shift_mask; - switch (id) { - case SHIFT_ESC: - shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK; - if (record->event.pressed) { - if (shift_esc_shift_mask) { - add_key(KC_GRV); - send_keyboard_report(); - } else { - add_key(KC_ESC); - send_keyboard_report(); - } - } else { - if (shift_esc_shift_mask) { - del_key(KC_GRV); - send_keyboard_report(); - } else { - del_key(KC_ESC); - send_keyboard_report(); - } - } - break; - } -}; - bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (record->event.pressed) { switch(keycode) { diff --git a/keyboards/gh60/satan/keymaps/isoHHKB/rules.mk b/keyboards/gh60/satan/keymaps/isoHHKB/rules.mk index 71b35a819f4e..265c9507656c 100644 --- a/keyboards/gh60/satan/keymaps/isoHHKB/rules.mk +++ b/keyboards/gh60/satan/keymaps/isoHHKB/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 diff --git a/keyboards/gh60/satan/keymaps/iso_split_rshift/rules.mk b/keyboards/gh60/satan/keymaps/iso_split_rshift/rules.mk index 071edf30e953..bb2d79b90b3e 100644 --- a/keyboards/gh60/satan/keymaps/iso_split_rshift/rules.mk +++ b/keyboards/gh60/satan/keymaps/iso_split_rshift/rules.mk @@ -1,4 +1,4 @@ -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug diff --git a/keyboards/gh60/satan/keymaps/lepa/rules.mk b/keyboards/gh60/satan/keymaps/lepa/rules.mk index 74a42b647cab..0eceeb297e93 100644 --- a/keyboards/gh60/satan/keymaps/lepa/rules.mk +++ b/keyboards/gh60/satan/keymaps/lepa/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = no # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/gh60/satan/keymaps/midi/rules.mk b/keyboards/gh60/satan/keymaps/midi/rules.mk index 5977347a12db..2df79c4ed62f 100644 --- a/keyboards/gh60/satan/keymaps/midi/rules.mk +++ b/keyboards/gh60/satan/keymaps/midi/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 diff --git a/keyboards/gh60/satan/keymaps/olligranlund_iso/rules.mk b/keyboards/gh60/satan/keymaps/olligranlund_iso/rules.mk index 4175ab1373f4..7041837aabbb 100644 --- a/keyboards/gh60/satan/keymaps/olligranlund_iso/rules.mk +++ b/keyboards/gh60/satan/keymaps/olligranlund_iso/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/gh60/satan/keymaps/sethbc/keymap.c b/keyboards/gh60/satan/keymaps/sethbc/keymap.c index 2a25b2b6b461..63d65ca23cbf 100644 --- a/keyboards/gh60/satan/keymaps/sethbc/keymap.c +++ b/keyboards/gh60/satan/keymaps/sethbc/keymap.c @@ -1,9 +1,5 @@ #include QMK_KEYBOARD_H - -// Used for SHIFT_ESC -#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) - // Each layer gets a name for readability, which is then used in the keymap matrix below. // The underscores don't mean anything - you can have a layer called STUFF or any other name. // Layer names don't all need to be of the same length, obviously, and you can also skip them @@ -26,7 +22,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------' */ [_BL] = LAYOUT_60_ansi_split_bs_rshift( - F(0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, \ + KC_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_BSLS, KC_GRV, \ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FL), \ @@ -49,37 +45,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #endif ), }; - -enum function_id { - SHIFT_ESC, -}; - -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_FUNCTION(SHIFT_ESC), -}; - -void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { - static uint8_t shift_esc_shift_mask; - switch (id) { - case SHIFT_ESC: - shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK; - if (record->event.pressed) { - if (shift_esc_shift_mask) { - add_key(KC_GRV); - send_keyboard_report(); - } else { - add_key(KC_ESC); - send_keyboard_report(); - } - } else { - if (shift_esc_shift_mask) { - del_key(KC_GRV); - send_keyboard_report(); - } else { - del_key(KC_ESC); - send_keyboard_report(); - } - } - break; - } -} diff --git a/keyboards/gh60/satan/keymaps/sethbc/rules.mk b/keyboards/gh60/satan/keymaps/sethbc/rules.mk index 53644093d6c4..14367f2f8a3f 100644 --- a/keyboards/gh60/satan/keymaps/sethbc/rules.mk +++ b/keyboards/gh60/satan/keymaps/sethbc/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/gh60/satan/keymaps/smt/rules.mk b/keyboards/gh60/satan/keymaps/smt/rules.mk index 3fe140adcc76..edf8c5187313 100644 --- a/keyboards/gh60/satan/keymaps/smt/rules.mk +++ b/keyboards/gh60/satan/keymaps/smt/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/gh60/satan/keymaps/stanleylai/keymap.c b/keyboards/gh60/satan/keymaps/stanleylai/keymap.c index 633719a88b1d..e3cbae285d0e 100644 --- a/keyboards/gh60/satan/keymaps/stanleylai/keymap.c +++ b/keyboards/gh60/satan/keymaps/stanleylai/keymap.c @@ -1,9 +1,5 @@ #include QMK_KEYBOARD_H - -// Used for SHIFT_ESC -#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) - // Each layer gets a name for readability, which is then used in the keymap matrix below. // The underscores don't mean anything - you can have a layer called STUFF or any other name. // Layer names don't all need to be of the same length, obviously, and you can also skip them @@ -19,7 +15,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Base Default Layer // Mac Modifier Layout. Use BootMagic to toggle GUI and ALT positions. [_BL] = LAYOUT_60_ansi_split_bs_rshift( - F(0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, XXXXXXX, \ + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, XXXXXXX, \ 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, \ LT(_FL, KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, MO(_FL), \ @@ -52,37 +48,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #endif ), }; - -enum function_id { - SHIFT_ESC, -}; - -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_FUNCTION(SHIFT_ESC), -}; - -void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { - static uint8_t shift_esc_shift_mask; - switch (id) { - case SHIFT_ESC: - shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK; - if (record->event.pressed) { - if (shift_esc_shift_mask) { - add_key(KC_GRV); - send_keyboard_report(); - } else { - add_key(KC_ESC); - send_keyboard_report(); - } - } else { - if (shift_esc_shift_mask) { - del_key(KC_GRV); - send_keyboard_report(); - } else { - del_key(KC_ESC); - send_keyboard_report(); - } - } - break; - } -} diff --git a/keyboards/gh60/satan/keymaps/unxmaal/keymap.c b/keyboards/gh60/satan/keymaps/unxmaal/keymap.c index f311ebeebb59..8d9b1dc45db4 100644 --- a/keyboards/gh60/satan/keymaps/unxmaal/keymap.c +++ b/keyboards/gh60/satan/keymaps/unxmaal/keymap.c @@ -1,10 +1,5 @@ #include QMK_KEYBOARD_H - - -// Used for SHIFT_ESC -#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) - // Each layer gets a name for readability, which is then used in the keymap matrix below. // The underscores don't mean anything - you can have a layer called STUFF or any other name. // Layer names don't all need to be of the same length, obviously, and you can also skip them @@ -87,37 +82,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #endif ), }; - -enum function_id { - SHIFT_ESC, -}; - -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_FUNCTION(SHIFT_ESC), -}; - -void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { - static uint8_t shift_esc_shift_mask; - switch (id) { - case SHIFT_ESC: - shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK; - if (record->event.pressed) { - if (shift_esc_shift_mask) { - add_key(KC_GRV); - send_keyboard_report(); - } else { - add_key(KC_ESC); - send_keyboard_report(); - } - } else { - if (shift_esc_shift_mask) { - del_key(KC_GRV); - send_keyboard_report(); - } else { - del_key(KC_ESC); - send_keyboard_report(); - } - } - break; - } -} diff --git a/keyboards/gh60/satan/keymaps/unxmaal/rules.mk b/keyboards/gh60/satan/keymaps/unxmaal/rules.mk index e72478251372..91ba6cd9e9af 100644 --- a/keyboards/gh60/satan/keymaps/unxmaal/rules.mk +++ b/keyboards/gh60/satan/keymaps/unxmaal/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/gh60/satan/rules.mk b/keyboards/gh60/satan/rules.mk index 204509ebc179..11fca23b724f 100644 --- a/keyboards/gh60/satan/rules.mk +++ b/keyboards/gh60/satan/rules.mk @@ -2,19 +2,12 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug @@ -22,9 +15,6 @@ COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls AUDIO_ENABLE = no -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID LAYOUTS = 60_ansi 60_iso 60_ansi_split_bs_rshift diff --git a/keyboards/gh60/v1p3/info.json b/keyboards/gh60/v1p3/info.json index 11d43524105e..8e09949e0faf 100644 --- a/keyboards/gh60/v1p3/info.json +++ b/keyboards/gh60/v1p3/info.json @@ -2,8 +2,6 @@ "keyboard_name": "GH60 v1.3", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/gh60/v1p3/rules.mk b/keyboards/gh60/v1p3/rules.mk index c2d48dc370bd..87f774dfdfcd 100644 --- a/keyboards/gh60/v1p3/rules.mk +++ b/keyboards/gh60/v1p3/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LAYOUTS = 60_ansi 60_ansi_arrow 60_ansi_tsangan 60_hhkb 64_ansi diff --git a/keyboards/gh80_3000/config.h b/keyboards/gh80_3000/config.h index 68a405c8d984..71adb3e24995 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 803d30ece51b..9c58d6fe5857 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/gh80_3000/info.json b/keyboards/gh80_3000/info.json index 43385a6fd857..abd041df67f0 100644 --- a/keyboards/gh80_3000/info.json +++ b/keyboards/gh80_3000/info.json @@ -2,36 +2,28 @@ "keyboard_name": "GH80-3000", "url": "", "maintainer": "qmk", - "width": 22.5, - "height": 6.5, "layouts": { "LAYOUT": { - "key_count": 117, "layout": [{"label":"K000", "x":0, "y":0}, {"label":"K001", "x":2, "y":0}, {"label":"K002", "x":3, "y":0}, {"label":"K003", "x":4, "y":0}, {"label":"K300", "x":5, "y":0}, {"label":"K301", "x":6.5, "y":0}, {"label":"K302", "x":7.5, "y":0}, {"label":"K303", "x":8.5, "y":0}, {"label":"K306", "x":9.5, "y":0}, {"label":"K307", "x":11, "y":0}, {"label":"K308", "x":12, "y":0}, {"label":"K309", "x":13, "y":0}, {"label":"K310", "x":14, "y":0}, {"label":"K004", "x":15.25, "y":0}, {"label":"K005", "x":16.25, "y":0}, {"label":"K006", "x":17.25, "y":0}, {"label":"K007", "x":18.5, "y":0}, {"label":"K008", "x":19.5, "y":0}, {"label":"K009", "x":20.5, "y":0}, {"label":"K010", "x":21.5, "y":0}, {"label":"K100", "x":0, "y":1.5}, {"label":"K101", "x":1, "y":1.5}, {"label":"K102", "x":2, "y":1.5}, {"label":"K103", "x":3, "y":1.5}, {"label":"K400", "x":4, "y":1.5}, {"label":"K401", "x":5, "y":1.5}, {"label":"K402", "x":6, "y":1.5}, {"label":"K403", "x":7, "y":1.5}, {"label":"K404", "x":8, "y":1.5}, {"label":"K405", "x":9, "y":1.5}, {"label":"K406", "x":10, "y":1.5}, {"label":"K407", "x":11, "y":1.5}, {"label":"K408", "x":12, "y":1.5}, {"label":"K409", "x":13, "y":1.5}, {"label":"K410", "x":14, "y":1.5}, {"label":"K104", "x":15.25, "y":1.5}, {"label":"K105", "x":16.25, "y":1.5}, {"label":"K106", "x":17.25, "y":1.5}, {"label":"K107", "x":18.5, "y":1.5}, {"label":"K108", "x":19.5, "y":1.5}, {"label":"K109", "x":20.5, "y":1.5}, {"label":"K110", "x":21.5, "y":1.5}, {"label":"K200", "x":0, "y":2.5, "w":1.5}, {"label":"K201", "x":1.5, "y":2.5}, {"label":"K202", "x":2.5, "y":2.5}, {"label":"K203", "x":3.5, "y":2.5}, {"label":"K500", "x":4.5, "y":2.5}, {"label":"K501", "x":5.5, "y":2.5}, {"label":"K502", "x":6.5, "y":2.5}, {"label":"K503", "x":7.5, "y":2.5}, {"label":"K505", "x":8.5, "y":2.5}, {"label":"K506", "x":9.5, "y":2.5}, {"label":"K507", "x":10.5, "y":2.5}, {"label":"K508", "x":11.5, "y":2.5}, {"label":"K509", "x":12.5, "y":2.5}, {"label":"K510", "x":13.5, "y":2.5, "w":1.5}, {"label":"K204", "x":15.25, "y":2.5}, {"label":"K205", "x":16.25, "y":2.5}, {"label":"K206", "x":17.25, "y":2.5}, {"label":"K207", "x":18.5, "y":2.5}, {"label":"K208", "x":19.5, "y":2.5}, {"label":"K209", "x":20.5, "y":2.5}, {"label":"K210", "x":21.5, "y":2.5}, {"label":"K800", "x":0, "y":3.5, "w":1.75}, {"label":"K801", "x":1.75, "y":3.5}, {"label":"K802", "x":2.75, "y":3.5}, {"label":"K803", "x":3.75, "y":3.5}, {"label":"K600", "x":4.75, "y":3.5}, {"label":"K601", "x":5.75, "y":3.5}, {"label":"K602", "x":6.75, "y":3.5}, {"label":"K603", "x":7.75, "y":3.5}, {"label":"K606", "x":8.75, "y":3.5}, {"label":"K607", "x":9.75, "y":3.5}, {"label":"K608", "x":10.75, "y":3.5}, {"label":"K609", "x":11.75, "y":3.5}, {"label":"K610", "x":12.75, "y":3.5, "w":2.25}, {"label":"K807", "x":18.5, "y":3.5}, {"label":"K808", "x":19.5, "y":3.5}, {"label":"K809", "x":20.5, "y":3.5}, {"label":"K810", "x":21.5, "y":3.5}, {"label":"K900", "x":0, "y":4.5, "w":1.25}, {"label":"K901", "x":1.25, "y":4.5}, {"label":"K902", "x":2.25, "y":4.5}, {"label":"K903", "x":3.25, "y":4.5}, {"label":"K700", "x":4.25, "y":4.5}, {"label":"K701", "x":5.25, "y":4.5}, {"label":"K702", "x":6.25, "y":4.5}, {"label":"K703", "x":7.25, "y":4.5}, {"label":"K705", "x":8.25, "y":4.5}, {"label":"K706", "x":9.25, "y":4.5}, {"label":"K707", "x":10.25, "y":4.5}, {"label":"K708", "x":11.25, "y":4.5}, {"label":"K709", "x":12.25, "y":4.5, "w":1.75}, {"label":"K710", "x":14, "y":4.5}, {"label":"K906", "x":16.25, "y":4.5}, {"label":"K907", "x":18.5, "y":4.5}, {"label":"K908", "x":19.5, "y":4.5}, {"label":"K909", "x":20.5, "y":4.5}, {"label":"K910", "x":21.5, "y":4.5}, {"label":"KA00", "x":0, "y":5.5, "w":1.5}, {"label":"KA01", "x":1.5, "y":5.5}, {"label":"KA02", "x":2.5, "y":5.5, "w":1.5}, {"label":"KA03", "x":4, "y":5.5}, {"label":"K804", "x":5, "y":5.5, "w":2}, {"label":"K805", "x":7, "y":5.5}, {"label":"K806", "x":8, "y":5.5, "w":2}, {"label":"K604", "x":10, "y":5.5}, {"label":"K605", "x":11, "y":5.5, "w":1.5}, {"label":"K904", "x":12.5, "y":5.5}, {"label":"K905", "x":13.5, "y":5.5, "w":1.5}, {"label":"KA04", "x":15.25, "y":5.5}, {"label":"KA05", "x":16.25, "y":5.5}, {"label":"KA06", "x":17.25, "y":5.5}, {"label":"KA07", "x":18.5, "y":5.5}, {"label":"KA08", "x":19.5, "y":5.5}, {"label":"KA09", "x":20.5, "y":5.5}, {"label":"KA10", "x":21.5, "y":5.5}] }, "LAYOUT_iso": { - "key_count": 117, "layout": [{"label":"K000", "x":0, "y":0}, {"label":"K001", "x":2, "y":0}, {"label":"K002", "x":3, "y":0}, {"label":"K003", "x":4, "y":0}, {"label":"K300", "x":5, "y":0}, {"label":"K301", "x":6.5, "y":0}, {"label":"K302", "x":7.5, "y":0}, {"label":"K303", "x":8.5, "y":0}, {"label":"K306", "x":9.5, "y":0}, {"label":"K307", "x":11, "y":0}, {"label":"K308", "x":12, "y":0}, {"label":"K309", "x":13, "y":0}, {"label":"K310", "x":14, "y":0}, {"label":"K004", "x":15.25, "y":0}, {"label":"K005", "x":16.25, "y":0}, {"label":"K006", "x":17.25, "y":0}, {"label":"K007", "x":18.5, "y":0}, {"label":"K008", "x":19.5, "y":0}, {"label":"K009", "x":20.5, "y":0}, {"label":"K010", "x":21.5, "y":0}, {"label":"K100", "x":0, "y":1.5}, {"label":"K101", "x":1, "y":1.5}, {"label":"K102", "x":2, "y":1.5}, {"label":"K103", "x":3, "y":1.5}, {"label":"K400", "x":4, "y":1.5}, {"label":"K401", "x":5, "y":1.5}, {"label":"K402", "x":6, "y":1.5}, {"label":"K403", "x":7, "y":1.5}, {"label":"K404", "x":8, "y":1.5}, {"label":"K405", "x":9, "y":1.5}, {"label":"K406", "x":10, "y":1.5}, {"label":"K407", "x":11, "y":1.5}, {"label":"K408", "x":12, "y":1.5}, {"label":"K409", "x":13, "y":1.5}, {"label":"K410", "x":14, "y":1.5}, {"label":"K104", "x":15.25, "y":1.5}, {"label":"K105", "x":16.25, "y":1.5}, {"label":"K106", "x":17.25, "y":1.5}, {"label":"K107", "x":18.5, "y":1.5}, {"label":"K108", "x":19.5, "y":1.5}, {"label":"K109", "x":20.5, "y":1.5}, {"label":"K110", "x":21.5, "y":1.5}, {"label":"K200", "x":0, "y":2.5, "w":1.5}, {"label":"K201", "x":1.5, "y":2.5}, {"label":"K202", "x":2.5, "y":2.5}, {"label":"K203", "x":3.5, "y":2.5}, {"label":"K500", "x":4.5, "y":2.5}, {"label":"K501", "x":5.5, "y":2.5}, {"label":"K502", "x":6.5, "y":2.5}, {"label":"K503", "x":7.5, "y":2.5}, {"label":"K505", "x":8.5, "y":2.5}, {"label":"K506", "x":9.5, "y":2.5}, {"label":"K507", "x":10.5, "y":2.5}, {"label":"K508", "x":11.5, "y":2.5}, {"label":"K509", "x":12.5, "y":2.5}, {"label":"K204", "x":15.25, "y":2.5}, {"label":"K205", "x":16.25, "y":2.5}, {"label":"K206", "x":17.25, "y":2.5}, {"label":"K207", "x":18.5, "y":2.5}, {"label":"K208", "x":19.5, "y":2.5}, {"label":"K209", "x":20.5, "y":2.5}, {"label":"K210", "x":21.5, "y":2.5}, {"label":"K800", "x":0, "y":3.5, "w":1.75}, {"label":"K801", "x":1.75, "y":3.5}, {"label":"K802", "x":2.75, "y":3.5}, {"label":"K803", "x":3.75, "y":3.5}, {"label":"K600", "x":4.75, "y":3.5}, {"label":"K601", "x":5.75, "y":3.5}, {"label":"K602", "x":6.75, "y":3.5}, {"label":"K603", "x":7.75, "y":3.5}, {"label":"K606", "x":8.75, "y":3.5}, {"label":"K607", "x":9.75, "y":3.5}, {"label":"K608", "x":10.75, "y":3.5}, {"label":"K609", "x":11.75, "y":3.5}, {"label":"K510", "x":12.75, "y":3.5}, {"label":"K610", "x":13.75, "y":2.5, "w":1.25, "h":2}, {"label":"K807", "x":18.5, "y":3.5}, {"label":"K808", "x":19.5, "y":3.5}, {"label":"K809", "x":20.5, "y":3.5}, {"label":"K810", "x":21.5, "y":3.5}, {"label":"K900", "x":0, "y":4.5, "w":1.25}, {"label":"K901", "x":1.25, "y":4.5}, {"label":"K902", "x":2.25, "y":4.5}, {"label":"K903", "x":3.25, "y":4.5}, {"label":"K700", "x":4.25, "y":4.5}, {"label":"K701", "x":5.25, "y":4.5}, {"label":"K702", "x":6.25, "y":4.5}, {"label":"K703", "x":7.25, "y":4.5}, {"label":"K705", "x":8.25, "y":4.5}, {"label":"K706", "x":9.25, "y":4.5}, {"label":"K707", "x":10.25, "y":4.5}, {"label":"K708", "x":11.25, "y":4.5}, {"label":"K709", "x":12.25, "y":4.5, "w":1.75}, {"label":"K710", "x":14, "y":4.5}, {"label":"K906", "x":16.25, "y":4.5}, {"label":"K907", "x":18.5, "y":4.5}, {"label":"K908", "x":19.5, "y":4.5}, {"label":"K909", "x":20.5, "y":4.5}, {"label":"K910", "x":21.5, "y":4.5}, {"label":"KA00", "x":0, "y":5.5, "w":1.5}, {"label":"KA01", "x":1.5, "y":5.5}, {"label":"KA02", "x":2.5, "y":5.5, "w":1.5}, {"label":"KA03", "x":4, "y":5.5}, {"label":"K804", "x":5, "y":5.5, "w":2}, {"label":"K805", "x":7, "y":5.5}, {"label":"K806", "x":8, "y":5.5, "w":2}, {"label":"K604", "x":10, "y":5.5}, {"label":"K605", "x":11, "y":5.5, "w":1.5}, {"label":"K904", "x":12.5, "y":5.5}, {"label":"K905", "x":13.5, "y":5.5, "w":1.5}, {"label":"KA04", "x":15.25, "y":5.5}, {"label":"KA05", "x":16.25, "y":5.5}, {"label":"KA06", "x":17.25, "y":5.5}, {"label":"KA07", "x":18.5, "y":5.5}, {"label":"KA08", "x":19.5, "y":5.5}, {"label":"KA09", "x":20.5, "y":5.5}, {"label":"KA10", "x":21.5, "y":5.5}] }, "LAYOUT_fullsize_ansi": { - "key_count": 104, "layout": [{"label":"K000", "x":0, "y":0}, {"label":"K001", "x":2, "y":0}, {"label":"K002", "x":3, "y":0}, {"label":"K003", "x":4, "y":0}, {"label":"K300", "x":5, "y":0}, {"label":"K301", "x":6.5, "y":0}, {"label":"K302", "x":7.5, "y":0}, {"label":"K303", "x":8.5, "y":0}, {"label":"K306", "x":9.5, "y":0}, {"label":"K307", "x":11, "y":0}, {"label":"K308", "x":12, "y":0}, {"label":"K309", "x":13, "y":0}, {"label":"K310", "x":14, "y":0}, {"label":"K004", "x":15.25, "y":0}, {"label":"K005", "x":16.25, "y":0}, {"label":"K006", "x":17.25, "y":0}, {"label":"K100", "x":0, "y":1.5}, {"label":"K101", "x":1, "y":1.5}, {"label":"K102", "x":2, "y":1.5}, {"label":"K103", "x":3, "y":1.5}, {"label":"K400", "x":4, "y":1.5}, {"label":"K401", "x":5, "y":1.5}, {"label":"K402", "x":6, "y":1.5}, {"label":"K403", "x":7, "y":1.5}, {"label":"K404", "x":8, "y":1.5}, {"label":"K405", "x":9, "y":1.5}, {"label":"K406", "x":10, "y":1.5}, {"label":"K407", "x":11, "y":1.5}, {"label":"K408", "x":12, "y":1.5}, {"label":"K410", "x":13, "y":1.5, "w":2}, {"label":"K104", "x":15.25, "y":1.5}, {"label":"K105", "x":16.25, "y":1.5}, {"label":"K106", "x":17.25, "y":1.5}, {"label":"K107", "x":18.5, "y":1.5}, {"label":"K108", "x":19.5, "y":1.5}, {"label":"K109", "x":20.5, "y":1.5}, {"label":"K110", "x":21.5, "y":1.5}, {"label":"K200", "x":0, "y":2.5, "w":1.5}, {"label":"K201", "x":1.5, "y":2.5}, {"label":"K202", "x":2.5, "y":2.5}, {"label":"K203", "x":3.5, "y":2.5}, {"label":"K500", "x":4.5, "y":2.5}, {"label":"K501", "x":5.5, "y":2.5}, {"label":"K502", "x":6.5, "y":2.5}, {"label":"K503", "x":7.5, "y":2.5}, {"label":"K505", "x":8.5, "y":2.5}, {"label":"K506", "x":9.5, "y":2.5}, {"label":"K507", "x":10.5, "y":2.5}, {"label":"K508", "x":11.5, "y":2.5}, {"label":"K509", "x":12.5, "y":2.5}, {"label":"K510", "x":13.5, "y":2.5, "w":1.5}, {"label":"K204", "x":15.25, "y":2.5}, {"label":"K205", "x":16.25, "y":2.5}, {"label":"K206", "x":17.25, "y":2.5}, {"label":"K207", "x":18.5, "y":2.5}, {"label":"K208", "x":19.5, "y":2.5}, {"label":"K209", "x":20.5, "y":2.5}, {"label":"K810", "x":21.5, "y":2.5, "h":2}, {"label":"K800", "x":0, "y":3.5, "w":1.75}, {"label":"K801", "x":1.75, "y":3.5}, {"label":"K802", "x":2.75, "y":3.5}, {"label":"K803", "x":3.75, "y":3.5}, {"label":"K600", "x":4.75, "y":3.5}, {"label":"K601", "x":5.75, "y":3.5}, {"label":"K602", "x":6.75, "y":3.5}, {"label":"K603", "x":7.75, "y":3.5}, {"label":"K606", "x":8.75, "y":3.5}, {"label":"K607", "x":9.75, "y":3.5}, {"label":"K608", "x":10.75, "y":3.5}, {"label":"K609", "x":11.75, "y":3.5}, {"label":"K610", "x":12.75, "y":3.5, "w":2.25}, {"label":"K807", "x":18.5, "y":3.5}, {"label":"K808", "x":19.5, "y":3.5}, {"label":"K809", "x":20.5, "y":3.5}, {"label":"K900", "x":0, "y":4.5, "w":2.25}, {"label":"K902", "x":2.25, "y":4.5}, {"label":"K903", "x":3.25, "y":4.5}, {"label":"K700", "x":4.25, "y":4.5}, {"label":"K701", "x":5.25, "y":4.5}, {"label":"K702", "x":6.25, "y":4.5}, {"label":"K703", "x":7.25, "y":4.5}, {"label":"K705", "x":8.25, "y":4.5}, {"label":"K706", "x":9.25, "y":4.5}, {"label":"K707", "x":10.25, "y":4.5}, {"label":"K708", "x":11.25, "y":4.5}, {"label":"K709", "x":12.25, "y":4.5, "w":2.75}, {"label":"K906", "x":16.25, "y":4.5}, {"label":"K907", "x":18.5, "y":4.5}, {"label":"K908", "x":19.5, "y":4.5}, {"label":"K909", "x":20.5, "y":4.5}, {"label":"KA10", "x":21.5, "y":4.5, "h":2}, {"label":"KA00", "x":0, "y":5.5, "w":1.25}, {"label":"KA01", "x":1.25, "y":5.5, "w":1.25}, {"label":"KA02", "x":2.5, "y":5.5, "w":1.25}, {"label":"K805", "x":3.75, "y":5.5, "w":6.25}, {"label":"K604", "x":10, "y":5.5, "w":1.25}, {"label":"K605", "x":11.25, "y":5.5, "w":1.25}, {"label":"K904", "x":12.5, "y":5.5, "w":1.25}, {"label":"K905", "x":13.75, "y":5.5, "w":1.25}, {"label":"KA04", "x":15.25, "y":5.5}, {"label":"KA05", "x":16.25, "y":5.5}, {"label":"KA06", "x":17.25, "y":5.5}, {"label":"KA07", "x":18.5, "y":5.5, "w":2}, {"label":"KA09", "x":20.5, "y":5.5}] }, "LAYOUT_fullsize_iso": { - "key_count": 105, "layout": [{"label":"K000", "x":0, "y":0}, {"label":"K001", "x":2, "y":0}, {"label":"K002", "x":3, "y":0}, {"label":"K003", "x":4, "y":0}, {"label":"K300", "x":5, "y":0}, {"label":"K301", "x":6.5, "y":0}, {"label":"K302", "x":7.5, "y":0}, {"label":"K303", "x":8.5, "y":0}, {"label":"K306", "x":9.5, "y":0}, {"label":"K307", "x":11, "y":0}, {"label":"K308", "x":12, "y":0}, {"label":"K309", "x":13, "y":0}, {"label":"K310", "x":14, "y":0}, {"label":"K004", "x":15.25, "y":0}, {"label":"K005", "x":16.25, "y":0}, {"label":"K006", "x":17.25, "y":0}, {"label":"K100", "x":0, "y":1.5}, {"label":"K101", "x":1, "y":1.5}, {"label":"K102", "x":2, "y":1.5}, {"label":"K103", "x":3, "y":1.5}, {"label":"K400", "x":4, "y":1.5}, {"label":"K401", "x":5, "y":1.5}, {"label":"K402", "x":6, "y":1.5}, {"label":"K403", "x":7, "y":1.5}, {"label":"K404", "x":8, "y":1.5}, {"label":"K405", "x":9, "y":1.5}, {"label":"K406", "x":10, "y":1.5}, {"label":"K407", "x":11, "y":1.5}, {"label":"K408", "x":12, "y":1.5}, {"label":"K410", "x":13, "y":1.5, "w":2}, {"label":"K104", "x":15.25, "y":1.5}, {"label":"K105", "x":16.25, "y":1.5}, {"label":"K106", "x":17.25, "y":1.5}, {"label":"K107", "x":18.5, "y":1.5}, {"label":"K108", "x":19.5, "y":1.5}, {"label":"K109", "x":20.5, "y":1.5}, {"label":"K110", "x":21.5, "y":1.5}, {"label":"K200", "x":0, "y":2.5, "w":1.5}, {"label":"K201", "x":1.5, "y":2.5}, {"label":"K202", "x":2.5, "y":2.5}, {"label":"K203", "x":3.5, "y":2.5}, {"label":"K500", "x":4.5, "y":2.5}, {"label":"K501", "x":5.5, "y":2.5}, {"label":"K502", "x":6.5, "y":2.5}, {"label":"K503", "x":7.5, "y":2.5}, {"label":"K505", "x":8.5, "y":2.5}, {"label":"K506", "x":9.5, "y":2.5}, {"label":"K507", "x":10.5, "y":2.5}, {"label":"K508", "x":11.5, "y":2.5}, {"label":"K509", "x":12.5, "y":2.5}, {"label":"K204", "x":15.25, "y":2.5}, {"label":"K205", "x":16.25, "y":2.5}, {"label":"K206", "x":17.25, "y":2.5}, {"label":"K207", "x":18.5, "y":2.5}, {"label":"K208", "x":19.5, "y":2.5}, {"label":"K209", "x":20.5, "y":2.5}, {"label":"K810", "x":21.5, "y":2.5, "h":2}, {"label":"K800", "x":0, "y":3.5, "w":1.75}, {"label":"K801", "x":1.75, "y":3.5}, {"label":"K802", "x":2.75, "y":3.5}, {"label":"K803", "x":3.75, "y":3.5}, {"label":"K600", "x":4.75, "y":3.5}, {"label":"K601", "x":5.75, "y":3.5}, {"label":"K602", "x":6.75, "y":3.5}, {"label":"K603", "x":7.75, "y":3.5}, {"label":"K606", "x":8.75, "y":3.5}, {"label":"K607", "x":9.75, "y":3.5}, {"label":"K608", "x":10.75, "y":3.5}, {"label":"K609", "x":11.75, "y":3.5}, {"label":"K510", "x":12.75, "y":3.5}, {"label":"K610", "x":13.75, "y":2.5, "w":1.25, "h":2}, {"label":"K807", "x":18.5, "y":3.5}, {"label":"K808", "x":19.5, "y":3.5}, {"label":"K809", "x":20.5, "y":3.5}, {"label":"K900", "x":0, "y":4.5, "w":1.25}, {"label":"K901", "x":1.25, "y":4.5}, {"label":"K902", "x":2.25, "y":4.5}, {"label":"K903", "x":3.25, "y":4.5}, {"label":"K700", "x":4.25, "y":4.5}, {"label":"K701", "x":5.25, "y":4.5}, {"label":"K702", "x":6.25, "y":4.5}, {"label":"K703", "x":7.25, "y":4.5}, {"label":"K705", "x":8.25, "y":4.5}, {"label":"K706", "x":9.25, "y":4.5}, {"label":"K707", "x":10.25, "y":4.5}, {"label":"K708", "x":11.25, "y":4.5}, {"label":"K709", "x":12.25, "y":4.5, "w":2.75}, {"label":"K906", "x":16.25, "y":4.5}, {"label":"K907", "x":18.5, "y":4.5}, {"label":"K908", "x":19.5, "y":4.5}, {"label":"K909", "x":20.5, "y":4.5}, {"label":"KA10", "x":21.5, "y":4.5, "h":2}, {"label":"KA00", "x":0, "y":5.5, "w":1.25}, {"label":"KA01", "x":1.25, "y":5.5, "w":1.25}, {"label":"KA02", "x":2.5, "y":5.5, "w":1.25}, {"label":"K805", "x":3.75, "y":5.5, "w":6.25}, {"label":"K604", "x":10, "y":5.5, "w":1.25}, {"label":"K605", "x":11.25, "y":5.5, "w":1.25}, {"label":"K904", "x":12.5, "y":5.5, "w":1.25}, {"label":"K905", "x":13.75, "y":5.5, "w":1.25}, {"label":"KA04", "x":15.25, "y":5.5}, {"label":"KA05", "x":16.25, "y":5.5}, {"label":"KA06", "x":17.25, "y":5.5}, {"label":"KA07", "x":18.5, "y":5.5, "w":2}, {"label":"KA09", "x":20.5, "y":5.5}] }, "LAYOUT_fullsize_ansi_wkl": { - "key_count": 101, "layout": [{"label":"K000", "x":0, "y":0}, {"label":"K001", "x":2, "y":0}, {"label":"K002", "x":3, "y":0}, {"label":"K003", "x":4, "y":0}, {"label":"K300", "x":5, "y":0}, {"label":"K301", "x":6.5, "y":0}, {"label":"K302", "x":7.5, "y":0}, {"label":"K303", "x":8.5, "y":0}, {"label":"K306", "x":9.5, "y":0}, {"label":"K307", "x":11, "y":0}, {"label":"K308", "x":12, "y":0}, {"label":"K309", "x":13, "y":0}, {"label":"K310", "x":14, "y":0}, {"label":"K004", "x":15.25, "y":0}, {"label":"K005", "x":16.25, "y":0}, {"label":"K006", "x":17.25, "y":0}, {"label":"K100", "x":0, "y":1.5}, {"label":"K101", "x":1, "y":1.5}, {"label":"K102", "x":2, "y":1.5}, {"label":"K103", "x":3, "y":1.5}, {"label":"K400", "x":4, "y":1.5}, {"label":"K401", "x":5, "y":1.5}, {"label":"K402", "x":6, "y":1.5}, {"label":"K403", "x":7, "y":1.5}, {"label":"K404", "x":8, "y":1.5}, {"label":"K405", "x":9, "y":1.5}, {"label":"K406", "x":10, "y":1.5}, {"label":"K407", "x":11, "y":1.5}, {"label":"K408", "x":12, "y":1.5}, {"label":"K410", "x":13, "y":1.5, "w":2}, {"label":"K104", "x":15.25, "y":1.5}, {"label":"K105", "x":16.25, "y":1.5}, {"label":"K106", "x":17.25, "y":1.5}, {"label":"K107", "x":18.5, "y":1.5}, {"label":"K108", "x":19.5, "y":1.5}, {"label":"K109", "x":20.5, "y":1.5}, {"label":"K110", "x":21.5, "y":1.5}, {"label":"K200", "x":0, "y":2.5, "w":1.5}, {"label":"K201", "x":1.5, "y":2.5}, {"label":"K202", "x":2.5, "y":2.5}, {"label":"K203", "x":3.5, "y":2.5}, {"label":"K500", "x":4.5, "y":2.5}, {"label":"K501", "x":5.5, "y":2.5}, {"label":"K502", "x":6.5, "y":2.5}, {"label":"K503", "x":7.5, "y":2.5}, {"label":"K505", "x":8.5, "y":2.5}, {"label":"K506", "x":9.5, "y":2.5}, {"label":"K507", "x":10.5, "y":2.5}, {"label":"K508", "x":11.5, "y":2.5}, {"label":"K509", "x":12.5, "y":2.5}, {"label":"K510", "x":13.5, "y":2.5, "w":1.5}, {"label":"K204", "x":15.25, "y":2.5}, {"label":"K205", "x":16.25, "y":2.5}, {"label":"K206", "x":17.25, "y":2.5}, {"label":"K207", "x":18.5, "y":2.5}, {"label":"K208", "x":19.5, "y":2.5}, {"label":"K209", "x":20.5, "y":2.5}, {"label":"K810", "x":21.5, "y":2.5, "h":2}, {"label":"K800", "x":0, "y":3.5, "w":1.75}, {"label":"K801", "x":1.75, "y":3.5}, {"label":"K802", "x":2.75, "y":3.5}, {"label":"K803", "x":3.75, "y":3.5}, {"label":"K600", "x":4.75, "y":3.5}, {"label":"K601", "x":5.75, "y":3.5}, {"label":"K602", "x":6.75, "y":3.5}, {"label":"K603", "x":7.75, "y":3.5}, {"label":"K606", "x":8.75, "y":3.5}, {"label":"K607", "x":9.75, "y":3.5}, {"label":"K608", "x":10.75, "y":3.5}, {"label":"K609", "x":11.75, "y":3.5}, {"label":"K610", "x":12.75, "y":3.5, "w":2.25}, {"label":"K807", "x":18.5, "y":3.5}, {"label":"K808", "x":19.5, "y":3.5}, {"label":"K809", "x":20.5, "y":3.5}, {"label":"K900", "x":0, "y":4.5, "w":2.25}, {"label":"K902", "x":2.25, "y":4.5}, {"label":"K903", "x":3.25, "y":4.5}, {"label":"K700", "x":4.25, "y":4.5}, {"label":"K701", "x":5.25, "y":4.5}, {"label":"K702", "x":6.25, "y":4.5}, {"label":"K703", "x":7.25, "y":4.5}, {"label":"K705", "x":8.25, "y":4.5}, {"label":"K706", "x":9.25, "y":4.5}, {"label":"K707", "x":10.25, "y":4.5}, {"label":"K708", "x":11.25, "y":4.5}, {"label":"K709", "x":12.25, "y":4.5, "w":2.75}, {"label":"K906", "x":16.25, "y":4.5}, {"label":"K907", "x":18.5, "y":4.5}, {"label":"K908", "x":19.5, "y":4.5}, {"label":"K909", "x":20.5, "y":4.5}, {"label":"KA10", "x":21.5, "y":4.5, "h":2}, {"label":"KA00", "x":0, "y":5.5, "w":1.5}, {"label":"KA02", "x":2.5, "y":5.5, "w":1.5}, {"label":"K805", "x":4, "y":5.5, "w":7}, {"label":"K605", "x":11, "y":5.5, "w":1.5}, {"label":"K905", "x":13.5, "y":5.5, "w":1.5}, {"label":"KA04", "x":15.25, "y":5.5}, {"label":"KA05", "x":16.25, "y":5.5}, {"label":"KA06", "x":17.25, "y":5.5}, {"label":"KA07", "x":18.5, "y":5.5, "w":2}, {"label":"KA09", "x":20.5, "y":5.5}] }, "LAYOUT_fullsize_iso_wkl": { - "key_count": 102, "layout": [{"label":"K000", "x":0, "y":0}, {"label":"K001", "x":2, "y":0}, {"label":"K002", "x":3, "y":0}, {"label":"K003", "x":4, "y":0}, {"label":"K300", "x":5, "y":0}, {"label":"K301", "x":6.5, "y":0}, {"label":"K302", "x":7.5, "y":0}, {"label":"K303", "x":8.5, "y":0}, {"label":"K306", "x":9.5, "y":0}, {"label":"K307", "x":11, "y":0}, {"label":"K308", "x":12, "y":0}, {"label":"K309", "x":13, "y":0}, {"label":"K310", "x":14, "y":0}, {"label":"K004", "x":15.25, "y":0}, {"label":"K005", "x":16.25, "y":0}, {"label":"K006", "x":17.25, "y":0}, {"label":"K100", "x":0, "y":1.5}, {"label":"K101", "x":1, "y":1.5}, {"label":"K102", "x":2, "y":1.5}, {"label":"K103", "x":3, "y":1.5}, {"label":"K400", "x":4, "y":1.5}, {"label":"K401", "x":5, "y":1.5}, {"label":"K402", "x":6, "y":1.5}, {"label":"K403", "x":7, "y":1.5}, {"label":"K404", "x":8, "y":1.5}, {"label":"K405", "x":9, "y":1.5}, {"label":"K406", "x":10, "y":1.5}, {"label":"K407", "x":11, "y":1.5}, {"label":"K408", "x":12, "y":1.5}, {"label":"K410", "x":13, "y":1.5, "w":2}, {"label":"K104", "x":15.25, "y":1.5}, {"label":"K105", "x":16.25, "y":1.5}, {"label":"K106", "x":17.25, "y":1.5}, {"label":"K107", "x":18.5, "y":1.5}, {"label":"K108", "x":19.5, "y":1.5}, {"label":"K109", "x":20.5, "y":1.5}, {"label":"K110", "x":21.5, "y":1.5}, {"label":"K200", "x":0, "y":2.5, "w":1.5}, {"label":"K201", "x":1.5, "y":2.5}, {"label":"K202", "x":2.5, "y":2.5}, {"label":"K203", "x":3.5, "y":2.5}, {"label":"K500", "x":4.5, "y":2.5}, {"label":"K501", "x":5.5, "y":2.5}, {"label":"K502", "x":6.5, "y":2.5}, {"label":"K503", "x":7.5, "y":2.5}, {"label":"K505", "x":8.5, "y":2.5}, {"label":"K506", "x":9.5, "y":2.5}, {"label":"K507", "x":10.5, "y":2.5}, {"label":"K508", "x":11.5, "y":2.5}, {"label":"K509", "x":12.5, "y":2.5}, {"label":"K204", "x":15.25, "y":2.5}, {"label":"K205", "x":16.25, "y":2.5}, {"label":"K206", "x":17.25, "y":2.5}, {"label":"K207", "x":18.5, "y":2.5}, {"label":"K208", "x":19.5, "y":2.5}, {"label":"K209", "x":20.5, "y":2.5}, {"label":"K810", "x":21.5, "y":2.5, "h":2}, {"label":"K800", "x":0, "y":3.5, "w":1.75}, {"label":"K801", "x":1.75, "y":3.5}, {"label":"K802", "x":2.75, "y":3.5}, {"label":"K803", "x":3.75, "y":3.5}, {"label":"K600", "x":4.75, "y":3.5}, {"label":"K601", "x":5.75, "y":3.5}, {"label":"K602", "x":6.75, "y":3.5}, {"label":"K603", "x":7.75, "y":3.5}, {"label":"K606", "x":8.75, "y":3.5}, {"label":"K607", "x":9.75, "y":3.5}, {"label":"K608", "x":10.75, "y":3.5}, {"label":"K609", "x":11.75, "y":3.5}, {"label":"K510", "x":12.75, "y":3.5}, {"label":"K610", "x":13.75, "y":2.5, "w":1.25, "h":2}, {"label":"K807", "x":18.5, "y":3.5}, {"label":"K808", "x":19.5, "y":3.5}, {"label":"K809", "x":20.5, "y":3.5}, {"label":"K900", "x":0, "y":4.5, "w":1.25}, {"label":"K901", "x":1.25, "y":4.5}, {"label":"K902", "x":2.25, "y":4.5}, {"label":"K903", "x":3.25, "y":4.5}, {"label":"K700", "x":4.25, "y":4.5}, {"label":"K701", "x":5.25, "y":4.5}, {"label":"K702", "x":6.25, "y":4.5}, {"label":"K703", "x":7.25, "y":4.5}, {"label":"K705", "x":8.25, "y":4.5}, {"label":"K706", "x":9.25, "y":4.5}, {"label":"K707", "x":10.25, "y":4.5}, {"label":"K708", "x":11.25, "y":4.5}, {"label":"K709", "x":12.25, "y":4.5, "w":2.75}, {"label":"K906", "x":16.25, "y":4.5}, {"label":"K907", "x":18.5, "y":4.5}, {"label":"K908", "x":19.5, "y":4.5}, {"label":"K909", "x":20.5, "y":4.5}, {"label":"KA10", "x":21.5, "y":4.5, "h":2}, {"label":"KA00", "x":0, "y":5.5, "w":1.5}, {"label":"KA02", "x":2.5, "y":5.5, "w":1.5}, {"label":"K805", "x":4, "y":5.5, "w":7}, {"label":"K605", "x":11, "y":5.5, "w":1.5}, {"label":"K905", "x":13.5, "y":5.5, "w":1.5}, {"label":"KA04", "x":15.25, "y":5.5}, {"label":"KA05", "x":16.25, "y":5.5}, {"label":"KA06", "x":17.25, "y":5.5}, {"label":"KA07", "x":18.5, "y":5.5, "w":2}, {"label":"KA09", "x":20.5, "y":5.5}] } } diff --git a/keyboards/gh80_3000/rules.mk b/keyboards/gh80_3000/rules.mk index d6cb5fcfa5fe..096a1a61995e 100644 --- a/keyboards/gh80_3000/rules.mk +++ b/keyboards/gh80_3000/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -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 diff --git a/keyboards/ghs/rar/config.h b/keyboards/ghs/rar/config.h index 422b8a2e16e6..10755f99c246 100644 --- a/keyboards/ghs/rar/config.h +++ b/keyboards/ghs/rar/config.h @@ -94,59 +94,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -167,26 +114,6 @@ along with this program. If not, see . #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/ghs/rar/info.json b/keyboards/ghs/rar/info.json index 3d2ffe1a43c3..ed362b40f6df 100644 --- a/keyboards/ghs/rar/info.json +++ b/keyboards/ghs/rar/info.json @@ -2,8 +2,6 @@ "keyboard_name": "GHS.RAR", "url": "https://gonehacking.studio/", "maintainer": "Gone Hacking Studio", - "width": 16.5, - "height": 6.75, "layouts": { "LAYOUT_ansi": { "layout": [ diff --git a/keyboards/ghs/rar/rules.mk b/keyboards/ghs/rar/rules.mk index 89509df45fe1..fa31f07f2f88 100644 --- a/keyboards/ghs/rar/rules.mk +++ b/keyboards/ghs/rar/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE = no # Audio output diff --git a/keyboards/gingham/config.h b/keyboards/gingham/config.h index 73f5ecfd9f5e..62f25b06c9f2 100644 --- a/keyboards/gingham/config.h +++ b/keyboards/gingham/config.h @@ -118,59 +118,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -189,23 +136,3 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - diff --git a/keyboards/gingham/info.json b/keyboards/gingham/info.json index ed58ef6a6cc0..0f9e81decc6b 100644 --- a/keyboards/gingham/info.json +++ b/keyboards/gingham/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Gingham", "url": "https://yiancar-designs.com/product/gingham/", "maintainer": "Yiancar", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_ansi_split_bs_rshift": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Back", "x":13, "y":0}, {"label":"Delete", "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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Shift", "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":"Fn", "x":11.25, "y":4, "w":1.25}, {"label":"App", "x":12.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}] diff --git a/keyboards/gingham/rules.mk b/keyboards/gingham/rules.mk index 3cebbe83afda..44701f1d9f70 100644 --- a/keyboards/gingham/rules.mk +++ b/keyboards/gingham/rules.mk @@ -5,32 +5,20 @@ SRC = matrix.c \ MCU = atmega328p # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = USBasp +BOOTLOADER = usbasploader # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output CUSTOM_MATRIX = lite diff --git a/keyboards/gkeyboard/gkb_m16/info.json b/keyboards/gkeyboard/gkb_m16/info.json index a9263a3cd749..1a3817b88b24 100644 --- a/keyboards/gkeyboard/gkb_m16/info.json +++ b/keyboards/gkeyboard/gkb_m16/info.json @@ -2,8 +2,6 @@ "keyboard_name": "gkb_m16", "url": "", "maintainer": "gkeyboard", - "width": 4, - "height": 4, "layouts": { "LAYOUT_ortho_4x4": { "layout": [ diff --git a/keyboards/gkeyboard/gkb_m16/rules.mk b/keyboards/gkeyboard/gkb_m16/rules.mk index f49426d5137f..6f114436f0b8 100644 --- a/keyboards/gkeyboard/gkb_m16/rules.mk +++ b/keyboards/gkeyboard/gkb_m16/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/gmmk/pro/ansi/ansi.c b/keyboards/gmmk/pro/ansi/ansi.c new file mode 100644 index 000000000000..1df3319fd256 --- /dev/null +++ b/keyboards/gmmk/pro/ansi/ansi.c @@ -0,0 +1,241 @@ +/* Copyright 2021 Gigahawk + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "ansi.h" + +#ifdef RGB_MATRIX_ENABLE +// clang-format off +led_config_t g_led_config = {{ + { 4, NO_LED, NO_LED, 95, 65, 79, 5, 28 }, + { 8, 2, 9, 0, 10, 75, 1, 7 }, + { 14, 3, 15, NO_LED, 16, 86, 6, 13 }, + { 20, 18, 21, 23, 22, 94, 12, 19 }, + { 25, 30, 26, 31, 27, 32, 29, 24 }, + { 41, 36, 42, 37, 43, 38, 35, 40 }, + { 46, 89, 47, 34, 48, 72, 78, 45 }, + { 52, 39, 53, 97, 54, 82, 44, 51 }, + { 58, 63, 59, 64, NO_LED, 60, 62, 57 }, + { 11, 90, 55, 17, 33, 49, NO_LED, 69 }, + { NO_LED, 85, 93, 61, 96, 66, 50, 56 } +}, { + {0, 0}, // 0, ESC, k13 + {0, 15}, // 1, ~, k16 + {4, 26}, // 2, Tab, k11 + {5, 38}, // 3, Caps, k21 + {9, 49}, // 4, Sh_L, k00 + {2, 61}, // 5, Ct_L, k06 + {18, 0}, // 6, F1, k26 + {14, 15}, // 7, 1, k17 + {22, 26}, // 8, Q, k10 + {25, 38}, // 9, A, k12 + {33, 49}, // 10, Z, k14 + {20, 61}, // 11, Win_L, k90 + {33, 0}, // 12, F2, k36 + {29, 15}, // 13, 2, k27 + {36, 26}, // 14, W, k20 + {40, 38}, // 15, S, k22 + {47, 49}, // 16, X, k24 + {38, 61}, // 17, Alt_L, k93 + {47, 0}, // 18, F3, k31 + {43, 15}, // 19, 3, k37 + {51, 26}, // 20, E, k30 + {54, 38}, // 21, D, k32 + {61, 49}, // 22, C, k34 + {61, 0}, // 23, F4, k33 + {58, 15}, // 24, 4, k47 + {65, 26}, // 25, R, k40 + {69, 38}, // 26, F, k42 + {76, 49}, // 27, V, k44 + {79, 0}, // 28, F5, k07 + {72, 15}, // 29, 5, k46 + {79, 26}, // 30, T, k41 + {83, 38}, // 31, G, k43 + {90, 49}, // 32, B, k45 + {92, 61}, // 33, SPACE, k94 + {94, 0}, // 34, F6, k63 + {87, 15}, // 35, 6, k56 + {94, 26}, // 36, Y, k51 + {98, 38}, // 37, H, k53 + {105, 49}, // 38, N, k55 + {108, 0}, // 39, F7, k71 + {101, 15}, // 40, 7, k57 + {108, 26}, // 41, U, k50 + {112, 38}, // 42, J, k52 + {119, 49}, // 43, M, k54 + {123, 0}, // 44, F8, k76 + {116, 15}, // 45, 8, k67 + {123, 26}, // 46, I, k60 + {126, 38}, // 47, K, k62 + {134, 49}, // 48, ,, k64 + {145, 61}, // 49, Alt_R, k95 + {141, 0}, // 50, F9, ka6 + {130, 15}, // 51, 9, k77 + {137, 26}, // 52, O, k70 + {141, 38}, // 53, L, k72 + {148, 49}, // 54, ., k74 + {159, 61}, // 55, FN, k92 + {155, 0}, // 56, F10, ka7 + {145, 15}, // 57, 0, k87 + {152, 26}, // 58, P, k80 + {155, 38}, // 59, ;, k82 + {163, 49}, // 60, ?, k85 + {170, 0}, // 61, F11, ka3 + {159, 15}, // 62, -, k86 + {166, 26}, // 63, [, k81 + {170, 38}, // 64, ", k83 + {173, 61}, // 65, Ct_R, k04 + {184, 0}, // 66, F12, ka5 + {0, 8}, // 67, LED, l01 + {224, 8}, // 68, LED, l11 + {202, 0}, // 69, Prt, k97 + {0, 15}, // 70, LED, l02 + {224, 15}, // 71, LED, l12 + {224, 15}, // 72, Del, k65 + {0, 21}, // 73, LED, l03 + {224, 21}, // 74, LED, l13 + {224, 26}, // 75, PgUp, k15 + {0, 28}, // 76, LED, l04 + {224, 28}, // 77, LED, l14 + {173, 15}, // 78, =, k66 + {220, 64}, // 79, Right, k05 + {0, 35}, // 80, LED, l05 + {224, 35}, // 81, LED, l15 + {224, 49}, // 82, End, k75 + {0, 42}, // 83, LED, l06 + {224, 42}, // 84, LED, l16 + {195, 15}, // 85, BSpc, ka1 + {224, 38}, // 86, PgDn, k25 + {0, 48}, // 87, LED, l07 + {224, 48}, // 88, LED, l17 + {181, 26}, // 89, ], k61 + {182, 49}, // 90, Sh_R, k91 + {0, 55}, // 91, LED, l08 + {224, 55}, // 92, LED, l18 + {199, 26}, // 93, \, ka2 + {206, 52}, // 94, Up, k35 + {191, 64}, // 95, Left, k03 + {193, 38}, // 96, Enter, ka4 + {206, 64} // 97, Down, k73 +}, { + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 4, 2, 2, 4, 2, 2, + 4, 2, 2, 4, 4, 2, 2, 4, 2, 2, 4, 4, 2, 2, 4, 4, 2, 2, 4, 4, 4, 4, 4 +}}; + +const aw_led g_aw_leds[DRIVER_LED_TOTAL] = { + {0, CS1_SW1, CS2_SW1, CS3_SW1}, // 0, ESC, k13 + {0, CS4_SW1, CS5_SW1, CS6_SW1}, // 1, ~, k16 + {0, CS7_SW1, CS8_SW1, CS9_SW1}, // 2, Tab, k11 + {0, CS10_SW1, CS11_SW1, CS12_SW1}, // 3, Caps, k21 + {0, CS13_SW1, CS14_SW1, CS15_SW1}, // 4, Sh_L, k00 + {0, CS16_SW1, CS17_SW1, CS18_SW1}, // 5, Ct_L, k06 + {0, CS1_SW2, CS2_SW2, CS3_SW2}, // 6, F1, k26 + {0, CS4_SW2, CS5_SW2, CS6_SW2}, // 7, 1, k17 + {0, CS7_SW2, CS8_SW2, CS9_SW2}, // 8, Q, k10 + {0, CS10_SW2, CS11_SW2, CS12_SW2}, // 9, A, k12 + {0, CS13_SW2, CS14_SW2, CS15_SW2}, // 10, Z, k14 + {0, CS16_SW2, CS17_SW2, CS18_SW2}, // 11, Win_L, k90 + {0, CS1_SW3, CS2_SW3, CS3_SW3}, // 12, F2, k36 + {0, CS4_SW3, CS5_SW3, CS6_SW3}, // 13, 2, k27 + {0, CS7_SW3, CS8_SW3, CS9_SW3}, // 14, W, k20 + {0, CS10_SW3, CS11_SW3, CS12_SW3}, // 15, S, k22 + {0, CS13_SW3, CS14_SW3, CS15_SW3}, // 16, X, k24 + {0, CS16_SW3, CS17_SW3, CS18_SW3}, // 17, Alt_L, k93 + {0, CS1_SW4, CS2_SW4, CS3_SW4}, // 18, F3, k31 + {0, CS4_SW4, CS5_SW4, CS6_SW4}, // 19, 3, k37 + {0, CS7_SW4, CS8_SW4, CS9_SW4}, // 20, E, k30 + {0, CS10_SW4, CS11_SW4, CS12_SW4}, // 21, D, k32 + {0, CS13_SW4, CS14_SW4, CS15_SW4}, // 22, C, k34 + {0, CS1_SW5, CS2_SW5, CS3_SW5}, // 23, F4, k33 + {0, CS4_SW5, CS5_SW5, CS6_SW5}, // 24, 4, k47 + {0, CS7_SW5, CS8_SW5, CS9_SW5}, // 25, R, k40 + {0, CS10_SW5, CS11_SW5, CS12_SW5}, // 26, F, k42 + {0, CS13_SW5, CS14_SW5, CS15_SW5}, // 27, V, k44 + {0, CS1_SW6, CS2_SW6, CS3_SW6}, // 28, F5, k07 + {0, CS4_SW6, CS5_SW6, CS6_SW6}, // 29, 5, k46 + {0, CS7_SW6, CS8_SW6, CS9_SW6}, // 30, T, k41 + {0, CS10_SW6, CS11_SW6, CS12_SW6}, // 31, G, k43 + {0, CS13_SW6, CS14_SW6, CS15_SW6}, // 32, B, k45 + {0, CS16_SW6, CS17_SW6, CS18_SW6}, // 33, SPACE, k94 + {0, CS1_SW7, CS2_SW7, CS3_SW7}, // 34, F6, k63 + {0, CS4_SW7, CS5_SW7, CS6_SW7}, // 35, 6, k56 + {0, CS7_SW7, CS8_SW7, CS9_SW7}, // 36, Y, k51 + {0, CS10_SW7, CS11_SW7, CS12_SW7}, // 37, H, k53 + {0, CS13_SW7, CS14_SW7, CS15_SW7}, // 38, N, k55 + {0, CS1_SW8, CS2_SW8, CS3_SW8}, // 39, F7, k71 + {0, CS4_SW8, CS5_SW8, CS6_SW8}, // 40, 7, k57 + {0, CS7_SW8, CS8_SW8, CS9_SW8}, // 41, U, k50 + {0, CS10_SW8, CS11_SW8, CS12_SW8}, // 42, J, k52 + {0, CS13_SW8, CS14_SW8, CS15_SW8}, // 43, M, k54 + {0, CS1_SW9, CS2_SW9, CS3_SW9}, // 44, F8, k76 + {0, CS4_SW9, CS5_SW9, CS6_SW9}, // 45, 8, k67 + {0, CS7_SW9, CS8_SW9, CS9_SW9}, // 46, I, k60 + {0, CS10_SW9, CS11_SW9, CS12_SW9}, // 47, K, k62 + {0, CS13_SW9, CS14_SW9, CS15_SW9}, // 48, ,, k64 + {0, CS16_SW9, CS17_SW9, CS18_SW9}, // 49, Alt_R, k95 + {0, CS1_SW10, CS2_SW10, CS3_SW10}, // 50, F9, ka6 + {0, CS4_SW10, CS5_SW10, CS6_SW10}, // 51, 9, k77 + {0, CS7_SW10, CS8_SW10, CS9_SW10}, // 52, O, k70 + {0, CS10_SW10, CS11_SW10, CS12_SW10}, // 53, L, k72 + {0, CS13_SW10, CS14_SW10, CS15_SW10}, // 54, ., k74 + {0, CS16_SW10, CS17_SW10, CS18_SW10}, // 55, FN, k92 + {0, CS1_SW11, CS2_SW11, CS3_SW11}, // 56, F10, ka7 + {0, CS4_SW11, CS5_SW11, CS6_SW11}, // 57, 0, k87 + {0, CS7_SW11, CS8_SW11, CS9_SW11}, // 58, P, k80 + {0, CS10_SW11, CS11_SW11, CS12_SW11}, // 59, ;, k82 + {0, CS13_SW11, CS14_SW11, CS15_SW11}, // 60, ?, k85 + {0, CS1_SW12, CS2_SW12, CS3_SW12}, // 61, F11, ka3 + {0, CS4_SW12, CS5_SW12, CS6_SW12}, // 62, -, k86 + {0, CS7_SW12, CS8_SW12, CS9_SW12}, // 63, [, k81 + {0, CS10_SW12, CS11_SW12, CS12_SW12}, // 64, ", k83 + {0, CS16_SW12, CS17_SW12, CS18_SW12}, // 65, Ct_R, k04 + + {1, CS1_SW1, CS2_SW1, CS3_SW1}, // 66, F12, ka5 + {1, CS13_SW1, CS14_SW1, CS15_SW1}, // 67, LED, l01 + {1, CS16_SW1, CS17_SW1, CS18_SW1}, // 68, LED, l11 + {1, CS4_SW2, CS5_SW2, CS6_SW2}, // 69, Prt, k97 + {1, CS13_SW2, CS14_SW2, CS15_SW2}, // 70, LED, l02 + {1, CS16_SW2, CS17_SW2, CS18_SW2}, // 71, LED, l12 + {1, CS4_SW3, CS5_SW3, CS6_SW3}, // 72, Del, k65 + {1, CS13_SW3, CS14_SW3, CS15_SW3}, // 73, LED, l03 + {1, CS16_SW3, CS17_SW3, CS18_SW3}, // 74, LED, l13 + {1, CS4_SW4, CS5_SW4, CS6_SW4}, // 75, PgUp, k15 + {1, CS13_SW4, CS14_SW4, CS15_SW4}, // 76, LED, l04 + {1, CS16_SW4, CS17_SW4, CS18_SW4}, // 77, LED, l14 + {1, CS1_SW5, CS2_SW5, CS3_SW5}, // 78, =, k66 + {1, CS10_SW5, CS11_SW5, CS12_SW5}, // 79, Right, k05 + {1, CS13_SW5, CS14_SW5, CS15_SW5}, // 80, LED, l05 + {1, CS16_SW5, CS17_SW5, CS18_SW5}, // 81, LED, l15 + {1, CS4_SW6, CS5_SW6, CS6_SW6}, // 82, End, k75 + {1, CS13_SW6, CS14_SW6, CS15_SW6}, // 83, LED, l06 + {1, CS16_SW6, CS17_SW6, CS18_SW6}, // 84, LED, l16 + {1, CS1_SW7, CS2_SW7, CS3_SW7}, // 85, BSpc, ka1 + {1, CS4_SW7, CS5_SW7, CS6_SW7}, // 86, PgDn, k25 + {1, CS13_SW7, CS14_SW7, CS15_SW7}, // 87, LED, l07 + {1, CS16_SW7, CS17_SW7, CS18_SW7}, // 88, LED, l17 + {1, CS1_SW8, CS2_SW8, CS3_SW8}, // 89, ], k61 + {1, CS4_SW8, CS5_SW8, CS6_SW8}, // 90, Sh_R, k91 + {1, CS13_SW8, CS14_SW8, CS15_SW8}, // 91, LED, l08 + {1, CS16_SW8, CS17_SW8, CS18_SW8}, // 92, LED, l18 + {1, CS1_SW9, CS2_SW9, CS3_SW9}, // 93, \, ka2 + {1, CS4_SW9, CS5_SW9, CS6_SW9}, // 94, Up, k35 + {1, CS4_SW10, CS5_SW10, CS6_SW10}, // 95, Left, k03 + {1, CS1_SW11, CS2_SW11, CS3_SW11}, // 96, Enter, ka4 + {1, CS4_SW11, CS5_SW11, CS6_SW11}, // 97, Down, k73 +}; +// clang-format on +#endif diff --git a/keyboards/gmmk/pro/ansi/ansi.h b/keyboards/gmmk/pro/ansi/ansi.h new file mode 100644 index 000000000000..ab08d665928e --- /dev/null +++ b/keyboards/gmmk/pro/ansi/ansi.h @@ -0,0 +1,52 @@ +/* Copyright 2021 Gigahawk + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "pro.h" + +#define ___ KC_NO + +// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute) +// ` 1 2 3 4 5 6 7 8 9 0 - = BSpc Del +// Tab Q W E R T Y U I O P [ ] \ PgUp +// Caps A S D F G H J K L ; ' Enter PgDn +// Sh_L Z X C V B N M , . / Sh_R Up End +// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right + +// clang-format off +#define LAYOUT( \ + k13, k26, k36, k31, k33, k07, k63, k71, k76, ka6, ka7, ka3, ka5, k97, k01, \ + k16, k17, k27, k37, k47, k46, k56, k57, k67, k77, k87, k86, k66, ka1, k65, \ + k11, k10, k20, k30, k40, k41, k51, k50, k60, k70, k80, k81, k61, ka2, k15, \ + k21, k12, k22, k32, k42, k43, k53, k52, k62, k72, k82, k83, ka4, k25, \ + k00, k14, k24, k34, k44, k45, k55, k54, k64, k74, k85, k91, k35, k75, \ + k06, k90, k93, k94, k95, k92, k04, k03, k73, k05 \ +) \ +{ \ + { k00, k01, ___, k03, k04, k05, k06, k07}, \ + { k10, k11, k12, k13, k14, k15, k16, k17}, \ + { k20, k21, k22, ___, 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, ___, k85, k86, k87}, \ + { k90, k91, k92, k93, k94, k95, ___, k97}, \ + { ___, ka1, ka2, ka3, ka4, ka5, ka6, ka7} \ +} +// clang-format on diff --git a/keyboards/gmmk/pro/ansi/config.h b/keyboards/gmmk/pro/ansi/config.h new file mode 100644 index 000000000000..7c68375b2f3f --- /dev/null +++ b/keyboards/gmmk/pro/ansi/config.h @@ -0,0 +1,23 @@ +/* Copyright 2021 Gigahawk + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +#define DRIVER_1_LED_TOTAL 66 +#define DRIVER_2_LED_TOTAL 32 +#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) diff --git a/keyboards/gmmk/pro/ansi/info.json b/keyboards/gmmk/pro/ansi/info.json new file mode 100644 index 000000000000..c3e76391d1ea --- /dev/null +++ b/keyboards/gmmk/pro/ansi/info.json @@ -0,0 +1,109 @@ +{ + "keyboard_name": "GMMK Pro (ANSI)", + "url": "https://www.pcgamingrace.com/products/glorious-gmmk-pro-75-barebone-black-reservation", + "maintainer": "GloriousThrall", + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + + {"x":1.25, "y":0}, + {"x":2.25, "y":0}, + {"x":3.25, "y":0}, + {"x":4.25, "y":0}, + + {"x":5.5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + + {"x":9.75, "y":0}, + {"x":10.75, "y":0}, + {"x":11.75, "y":0}, + {"x":12.75, "y":0}, + + {"x":14, "y":0}, + {"x":15.5, "y":0}, + + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2, "y":1.25}, + {"x":3, "y":1.25}, + {"x":4, "y":1.25}, + {"x":5, "y":1.25}, + {"x":6, "y":1.25}, + {"x":7, "y":1.25}, + {"x":8, "y":1.25}, + {"x":9, "y":1.25}, + {"x":10, "y":1.25}, + {"x":11, "y":1.25}, + {"x":12, "y":1.25}, + {"x":13, "y":1.25, "w":2}, + + {"x":15.5, "y":1.25}, + + {"x":0, "y":2.25, "w":1.5}, + {"x":1.5, "y":2.25}, + {"x":2.5, "y":2.25}, + {"x":3.5, "y":2.25}, + {"x":4.5, "y":2.25}, + {"x":5.5, "y":2.25}, + {"x":6.5, "y":2.25}, + {"x":7.5, "y":2.25}, + {"x":8.5, "y":2.25}, + {"x":9.5, "y":2.25}, + {"x":10.5, "y":2.25}, + {"x":11.5, "y":2.25}, + {"x":12.5, "y":2.25}, + {"x":13.5, "y":2.25, "w":1.5}, + + {"x":15.5, "y":2.25}, + + {"x":0, "y":3.25, "w":1.75}, + {"x":1.75, "y":3.25}, + {"x":2.75, "y":3.25}, + {"x":3.75, "y":3.25}, + {"x":4.75, "y":3.25}, + {"x":5.75, "y":3.25}, + {"x":6.75, "y":3.25}, + {"x":7.75, "y":3.25}, + {"x":8.75, "y":3.25}, + {"x":9.75, "y":3.25}, + {"x":10.75, "y":3.25}, + {"x":11.75, "y":3.25}, + {"x":12.75, "y":3.25, "w":2.25}, + + {"x":15.5, "y":3.25}, + + {"x":0, "y":4.25, "w":2.25}, + {"x":2.25, "y":4.25}, + {"x":3.25, "y":4.25}, + {"x":4.25, "y":4.25}, + {"x":5.25, "y":4.25}, + {"x":6.25, "y":4.25}, + {"x":7.25, "y":4.25}, + {"x":8.25, "y":4.25}, + {"x":9.25, "y":4.25}, + {"x":10.25, "y":4.25}, + {"x":11.25, "y":4.25}, + {"x":12.25, "y":4.25, "w":1.75}, + + {"x":14.25, "y":4.5}, + + {"x":15.5, "y":4.25}, + + {"x":0, "y":5.25, "w":1.25}, + {"x":1.25, "y":5.25, "w":1.25}, + {"x":2.5, "y":5.25, "w":1.25}, + {"x":3.75, "y":5.25, "w":6.25}, + {"x":10, "y":5.25}, + {"x":11, "y":5.25}, + {"x":12, "y":5.25}, + + {"x":13.25, "y":5.5}, + {"x":14.25, "y":5.5}, + {"x":15.25, "y":5.5} + ] + } + } +} diff --git a/keyboards/gmmk/pro/ansi/keymaps/alexmarmon/keymap.c b/keyboards/gmmk/pro/ansi/keymaps/alexmarmon/keymap.c new file mode 100644 index 000000000000..99504de9565c --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/alexmarmon/keymap.c @@ -0,0 +1,66 @@ +/* Copyright 2021 Glorious, LLC + Copyright 2021 alexmarmon + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute) +// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del +// Tab Q W E R T Y U I O P [ ] \ PgUp +// Caps A S D F G H J K L ; " Enter PgDn +// Sh_L Z X C V B N M , . ? Sh_R Up End +// Ct_L Alt_L Win_L SPACE Ct_R Alt_R FN Left Down Right + + + // The FN key by default maps to a momentary toggle to layer 1 to provide access to the RESET key (to put the board into bootloader mode). Without + // this mapping, you have to open the case to hit the button on the bottom of the PCB (near the USB cable attachment) while plugging in the USB + // cable to get the board into bootloader mode - definitely not fun when you're working on your QMK builds. Remove this and put it back to KC_RGUI + // if that's your preference. + // + // To put the keyboard in bootloader mode, use FN+backslash. If you accidentally put it into bootloader, you can just unplug the USB cable and + // it'll be back to normal when you plug it back in. + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_MUTE, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RCTL, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, RGB_MODE_FORWARD, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MODE_REVERSE, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, + _______, _______, _______, _______, _______, _______, _______, KC_MEDIA_PREV_TRACK, _______, KC_MEDIA_NEXT_TRACK + ), + + +}; + + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + return true; +} diff --git a/keyboards/gmmk/pro/ansi/keymaps/alexmarmon/readme.md b/keyboards/gmmk/pro/ansi/keymaps/alexmarmon/readme.md new file mode 100644 index 000000000000..36ad42b1af37 --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/alexmarmon/readme.md @@ -0,0 +1,7 @@ +![Layout Image](https://i.imgur.com/MizMvsI.jpg) + +# Simple MacOS like keymap with RGB + +* Working basic RGB thanks to https://github.com/qmk/qmk_firmware/pull/13430 +* Restore working rotary knob volume control +* Add media_previous and media_next to FN+left and FN+right \ No newline at end of file diff --git a/keyboards/gmmk/pro/ansi/keymaps/andrebrait/config.h b/keyboards/gmmk/pro/ansi/keymaps/andrebrait/config.h new file mode 100644 index 000000000000..1438d317fbd2 --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/andrebrait/config.h @@ -0,0 +1,22 @@ +/* Copyright 2021 Andre Brait + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#ifdef RGB_MATRIX_ENABLE + #define RGB_DISABLE_TIMEOUT 1200000 // 20 minutes (20 * 60 * 1000ms) + #define RGB_DISABLE_WHEN_USB_SUSPENDED +#endif diff --git a/keyboards/gmmk/pro/ansi/keymaps/andrebrait/keymap.c b/keyboards/gmmk/pro/ansi/keymaps/andrebrait/keymap.c new file mode 100644 index 000000000000..b80164043680 --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/andrebrait/keymap.c @@ -0,0 +1,287 @@ +/* Copyright 2021 Glorious, LLC + Copyright 2021 Andre Brait + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +#ifdef RGB_MATRIX_ENABLE + #ifndef RGB_CONFIRMATION_BLINKING_TIME + #define RGB_CONFIRMATION_BLINKING_TIME 2000 // 2 seconds + #endif +#endif // RGB_MATRIX_ENABLE + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Del Rotary(Play/Pause) +// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Home +// Tab Q W E R T Y U I O P [ ] \ PgUp +// Caps A S D F G H J K L ; " Enter PgDn +// Sh_L Z X C V B N M , . ? Sh_R Up End +// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right + + + // The FN key by default maps to a momentary toggle to layer 1 to provide access to the RESET key (to put the board into bootloader mode). Without + // this mapping, you have to open the case to hit the button on the bottom of the PCB (near the USB cable attachment) while plugging in the USB + // cable to get the board into bootloader mode - definitely not fun when you're working on your QMK builds. Remove this and put it back to KC_RGUI + // if that's your preference. + // + // To put the keyboard in bootloader mode, use FN+backslash. If you accidentally put it into bootloader, you can just unplug the USB cable and + // it'll be back to normal when you plug it back in. + // + // This keyboard defaults to 6KRO instead of NKRO for compatibility reasons (some KVMs and BIOSes are incompatible with NKRO). + // Since this is, among other things, a "gaming" keyboard, a key combination to enable NKRO on the fly is provided for convenience. + // Press Fn+N to toggle between 6KRO and NKRO. This setting is persisted to the EEPROM and thus persists between restarts. + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_MUTE, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT( + _______, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, _______, KC_INS, _______, + _______, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, + _______, _______, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, + _______, _______, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, RGB_HUI, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, RGB_MOD, _______, + _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI + ), + + +}; +// clang-format on + +#ifdef ENCODER_ENABLE +bool encoder_update_user(uint8_t index, bool clockwise) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + return true; +} +#endif // ENCODER_ENABLE + +#ifdef RGB_MATRIX_ENABLE + +/* Renaming those to make the purpose on this keymap clearer */ +#define LED_FLAG_CAPS LED_FLAG_NONE +#define LED_FLAG_EFFECTS LED_FLAG_INDICATOR + +static void set_rgb_caps_leds(void); + +#if RGB_CONFIRMATION_BLINKING_TIME > 0 +static uint16_t effect_started_time = 0; +static uint8_t r_effect = 0x0, g_effect = 0x0, b_effect = 0x0; +static void start_effects(void); + +/* The higher this is, the slower the blinking will be */ +#ifndef TIME_SELECTED_BIT + #define TIME_SELECTED_BIT 8 +#endif +#if TIME_SELECTED_BIT < 0 || TIME_SELECTED_BIT >= 16 + #error "TIME_SELECTED_BIT must be a positive integer smaller than 16" +#endif +#define effect_red() r_effect = 0xFF, g_effect = 0x0, b_effect = 0x0 +#define effect_green() r_effect = 0x0, g_effect = 0xFF, b_effect = 0x0 +#endif // RGB_CONFIRMATION_BLINKING_TIME > 0 + +bool led_update_user(led_t led_state) { + if (led_state.caps_lock) { + if (!rgb_matrix_is_enabled()) { + /* Turn ON the RGB Matrix for CAPS LOCK */ + rgb_matrix_set_flags(LED_FLAG_CAPS); + rgb_matrix_enable(); + } + } else if (rgb_matrix_get_flags() == LED_FLAG_CAPS) { + /* RGB Matrix was only ON because of CAPS LOCK. Turn it OFF. */ + rgb_matrix_set_flags(LED_FLAG_ALL); + rgb_matrix_disable(); + } + return true; +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + #ifdef NKRO_ENABLE + #if RGB_CONFIRMATION_BLINKING_TIME > 0 + case NK_TOGG: + if (record->event.pressed) { + if (keymap_config.nkro) { + /* Turning NKRO OFF */ + effect_red(); + } else { + /* Turning NKRO ON */ + effect_green(); + } + start_effects(); + } + break; + case NK_ON: + if (record->event.pressed) { + if (!keymap_config.nkro) { + /* Turning NKRO ON */ + effect_green(); + start_effects(); + } + } + break; + case NK_OFF: + if (record->event.pressed) { + if (keymap_config.nkro) { + /* Turning NKRO OFF */ + effect_red(); + start_effects(); + } + } + break; + #endif // RGB_CONFIRMATION_BLINKING_TIME > 0 + #endif // NKRO_ENABLE + case RGB_MOD: + case RGB_RMOD: + case RGB_HUI: + case RGB_HUD: + case RGB_SAI: + case RGB_SAD: + case RGB_VAI: + case RGB_VAD: + case RGB_SPI: + case RGB_SPD: + if (record->event.pressed) { + if (rgb_matrix_get_flags() != LED_FLAG_ALL) { + /* Ignore changes to RGB settings while only it's supposed to be OFF */ + return false; + } + } + break; + case RGB_TOG: + if (record->event.pressed) { + if (rgb_matrix_is_enabled()) { + switch (rgb_matrix_get_flags()) { + #if RGB_CONFIRMATION_BLINKING_TIME > 0 + case LED_FLAG_EFFECTS: + #endif + case LED_FLAG_CAPS: + /* Turned ON because of EFFECTS or CAPS, is actually OFF */ + /* Change to LED_FLAG_ALL to signal it's really ON */ + rgb_matrix_set_flags(LED_FLAG_ALL); + /* Will be re-enabled by the processing of the toggle */ + rgb_matrix_disable_noeeprom(); + break; + case LED_FLAG_ALL: + /* Is actually ON */ + #if RGB_CONFIRMATION_BLINKING_TIME > 0 + if (effect_started_time > 0) { + /* Signal EFFECTS */ + rgb_matrix_set_flags(LED_FLAG_EFFECTS); + /* Will be re-enabled by the processing of the toggle */ + rgb_matrix_disable_noeeprom(); + } else + #endif + if (host_keyboard_led_state().caps_lock) { + /* Signal CAPS */ + rgb_matrix_set_flags(LED_FLAG_CAPS); + /* Will be re-enabled by the processing of the toggle */ + rgb_matrix_disable_noeeprom(); + } + break; + } + } + } + break; + } + return true; +} + + +void rgb_matrix_indicators_user() { + #if RGB_CONFIRMATION_BLINKING_TIME > 0 + if (effect_started_time > 0) { + /* Render blinking EFFECTS */ + uint16_t deltaTime = sync_timer_elapsed(effect_started_time); + if (deltaTime <= RGB_CONFIRMATION_BLINKING_TIME) { + uint8_t led_state = ((~deltaTime) >> TIME_SELECTED_BIT) & 0x01; + uint8_t val_r = led_state * r_effect; + uint8_t val_g = led_state * g_effect; + uint8_t val_b = led_state * b_effect; + rgb_matrix_set_color_all(val_r, val_g, val_b); + if (host_keyboard_led_state().caps_lock) { + set_rgb_caps_leds(); + } + return; + } else { + /* EFFECTS duration is finished */ + effect_started_time = 0; + if (rgb_matrix_get_flags() == LED_FLAG_EFFECTS) { + /* It was turned ON because of EFFECTS */ + if (host_keyboard_led_state().caps_lock) { + /* CAPS is still ON. Demote to CAPS */ + rgb_matrix_set_flags(LED_FLAG_CAPS); + } else { + /* There is nothing else keeping RGB enabled. Reset flags and turn if off. */ + rgb_matrix_set_flags(LED_FLAG_ALL); + rgb_matrix_disable_noeeprom(); + } + } + } + } + #endif // RGB_CONFIRMATION_BLINKING_TIME > 0 + if (rgb_matrix_get_flags() == LED_FLAG_CAPS) { + rgb_matrix_set_color_all(0x0, 0x0, 0x0); + } + if (host_keyboard_led_state().caps_lock) { + set_rgb_caps_leds(); + } +} + +#if RGB_CONFIRMATION_BLINKING_TIME > 0 +static void start_effects() { + effect_started_time = sync_timer_read(); + if (!rgb_matrix_is_enabled()) { + /* Turn it ON, signal the cause (EFFECTS) */ + rgb_matrix_set_flags(LED_FLAG_EFFECTS); + rgb_matrix_enable_noeeprom(); + } else if (rgb_matrix_get_flags() == LED_FLAG_CAPS) { + /* It's already ON, promote the cause from CAPS to EFFECTS */ + rgb_matrix_set_flags(LED_FLAG_EFFECTS); + } +} +#endif // RGB_CONFIRMATION_BLINKING_TIME > 0 + +static void set_rgb_caps_leds() { + rgb_matrix_set_color(67, 0xFF, 0x0, 0x0); // Left side LED 1 + rgb_matrix_set_color(68, 0xFF, 0x0, 0x0); // Right side LED 1 + rgb_matrix_set_color(70, 0xFF, 0x0, 0x0); // Left side LED 2 + rgb_matrix_set_color(71, 0xFF, 0x0, 0x0); // Right side LED 2 + rgb_matrix_set_color(73, 0xFF, 0x0, 0x0); // Left side LED 3 + rgb_matrix_set_color(74, 0xFF, 0x0, 0x0); // Right side LED 3 + rgb_matrix_set_color(76, 0xFF, 0x0, 0x0); // Left side LED 4 + rgb_matrix_set_color(77, 0xFF, 0x0, 0x0); // Right side LED 4 + rgb_matrix_set_color(80, 0xFF, 0x0, 0x0); // Left side LED 5 + rgb_matrix_set_color(81, 0xFF, 0x0, 0x0); // Right side LED 5 + rgb_matrix_set_color(83, 0xFF, 0x0, 0x0); // Left side LED 6 + rgb_matrix_set_color(84, 0xFF, 0x0, 0x0); // Right side LED 6 + rgb_matrix_set_color(87, 0xFF, 0x0, 0x0); // Left side LED 7 + rgb_matrix_set_color(88, 0xFF, 0x0, 0x0); // Right side LED 7 + rgb_matrix_set_color(91, 0xFF, 0x0, 0x0); // Left side LED 8 + rgb_matrix_set_color(92, 0xFF, 0x0, 0x0); // Right side LED 8 + rgb_matrix_set_color(3, 0xFF, 0x0, 0x0); // CAPS LED +} + +#endif // RGB_MATRIX_ENABLE diff --git a/keyboards/gmmk/pro/ansi/keymaps/andrebrait/readme.md b/keyboards/gmmk/pro/ansi/keymaps/andrebrait/readme.md new file mode 100644 index 000000000000..e7f9978cee70 --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/andrebrait/readme.md @@ -0,0 +1,23 @@ +# andrebrait's GMMK Pro layout + +This is pretty much the stock layout with a few things moved around. +It basically reflects my needs for both Delete and Insert being readily available for coding, as well as a full Home/PgUp/PgDwn/End column. + +The differences are as follows: + +- Short DEBOUNCE time (5 ms) +- Per-key debounce algorithm (sym_defer_pk) +- RGB turns off after 20 minutes of inactivity +- RGB turns off when USB is suspended +- Layer 0: + - Print Screen (default) -> Delete + - Delete (default) -> Home +- Layer 1 (accessed by pressing Fn): + - Fn + Delete -> Insert + - Fn + Home -> Print Screen + +This keymap also includes CAPS LOCK ON indicator.\ +All left and right side LEDs, and the Caps key LED will turn solid red while CAPS LOCK is ON. + +No other changes have been made. \ +The other keys on each layer have been kept intact. diff --git a/keyboards/gmmk/pro/ansi/keymaps/andrebrait/rules.mk b/keyboards/gmmk/pro/ansi/keymaps/andrebrait/rules.mk new file mode 100644 index 000000000000..650c79fbdcc5 --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/andrebrait/rules.mk @@ -0,0 +1,3 @@ +# Enable additional features. + +DEBOUNCE_TYPE = sym_defer_pk diff --git a/keyboards/gmmk/pro/ansi/keymaps/benschaeff/keymap.c b/keyboards/gmmk/pro/ansi/keymaps/benschaeff/keymap.c new file mode 100644 index 000000000000..5f3e3f5fd8f5 --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/benschaeff/keymap.c @@ -0,0 +1,127 @@ +/* Copyright 2021 Glorious, LLC +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum userspace_layers { + QWERTY, + FNLAYER, + POPTAB, +}; + +//custom keycodes +#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 +#define MINI LGUI(KC_DOWN) // Shrink window +#define MAXI LGUI(KC_UP) // Maximize window +#define CLOSEAPPLICATION LALT(KC_F4) // Kill application +#define CLOSETAB LCTL(KC_W) // Kill current tab +#define POPOUT LCTL(LSFT(KC_K)) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute) +// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del +// Tab Q W E R T Y U I O P [ ] \ PgUp +// Caps A S D F G H J K L ; " Enter PgDn +// Sh_L Z X C V B N M , . ? Sh_R Up End +// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right + + + // The FN key by default maps to a momentary toggle to layer 1 to provide access to the RESET key (to put the board into bootloader mode). Without + // this mapping, you have to open the case to hit the button on the bottom of the PCB (near the USB cable attachment) while plugging in the USB + // cable to get the board into bootloader mode - definitely not fun when you're working on your QMK builds. Remove this and put it back to KC_RGUI + // if that's your preference. + // + // To put the keyboard in bootloader mode, use FN+backslash. If you accidentally put it into bootloader, you can just unplug the USB cable and + // it'll be back to normal when you plug it back in. + + [QWERTY] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_MUTE, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(FNLAYER), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [FNLAYER] = LAYOUT( + CLOSEAPPLICATION, CLOSETAB,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MEDIA_PLAY_PAUSE, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, SWAP_L , MAXI , SWAP_R , _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET , _______, + _______, _______, MINI , _______, POPOUT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, KC_TRNS, _______, _______, _______ + ), + + +}; + + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (get_mods() & MODS_ALT_MASK) { + if (clockwise) { + tap_code(KC_TAB); + } else { + tap_code16(S(KC_TAB)); + } + } else if (get_mods() & MODS_CTRL_MASK) { + if (clockwise) { + tap_code(KC_TAB); + } else { + tap_code16(S(KC_TAB)); + } + } else if(IS_LAYER_ON(FNLAYER)) { + if (clockwise) { + tap_code(KC_MEDIA_NEXT_TRACK); + } else { + tap_code(KC_MEDIA_PREV_TRACK); + } + } else { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } + return false; +} + +void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { + switch(get_highest_layer(layer_state)) { + // special handling per layer + case 0: //layer one + if (host_keyboard_led_state().caps_lock) + rgb_matrix_set_color_all(255,0,0); + else + rgb_matrix_set_color_all(0,255,56); + break; + case 1: + for (uint8_t i = led_min; i < led_max; i++) { + RGB_MATRIX_INDICATOR_SET_COLOR(i,0,0,0); + } + RGB_MATRIX_INDICATOR_SET_COLOR(0, 0, 0, 255) //esc + RGB_MATRIX_INDICATOR_SET_COLOR(6, 0, 0, 255) //f1 + RGB_MATRIX_INDICATOR_SET_COLOR(8, 0, 0, 255) //q + RGB_MATRIX_INDICATOR_SET_COLOR(14, 0, 0, 255) //w + RGB_MATRIX_INDICATOR_SET_COLOR(20, 0, 0, 255) //e + RGB_MATRIX_INDICATOR_SET_COLOR(15, 0, 0, 255) //s + RGB_MATRIX_INDICATOR_SET_COLOR(26, 0, 0, 255) //f + RGB_MATRIX_INDICATOR_SET_COLOR(49, 0, 0, 255) //R_Alt + break; + default: + break; + } +} diff --git a/keyboards/gmmk/pro/ansi/keymaps/benschaeff/readme.md b/keyboards/gmmk/pro/ansi/keymaps/benschaeff/readme.md new file mode 100644 index 000000000000..8162002892a9 --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/benschaeff/readme.md @@ -0,0 +1,19 @@ +# Description +Pretty simple keymap with a few handy tools on a 2nd layer and rotary encoder. + +# Encoder +Holding tab and scrolling encoder will allow scrolling through applications, as if using alt + tab +Holding ctrl and scrolling encoder will allow scrolling through chrome tabs +FN + Encoder scroll is media next/prev +FN + Encoder press is media pause +default encoder behavior is volume up/down + +# Function Layer +FN + \ is used to put keyboard into bootloader mode +FN + ESC is the same as alt F4, for closing applications +FN + F1 is to close current browser tab +FN + Q moves current application one monitor to the left +FN + W maximizes current application +FN + E moves current application one monitor to the right +FN + S minimizes current application +FN + F is used in junction with the "Popout tab" extension to chrome (https://chrome.google.com/webstore/detail/popout-tab/pcfcieidiaaobigemjnkclebhnmgfbco) to pop out current tab to its own window diff --git a/keyboards/gmmk/pro/ansi/keymaps/coryginsberg/config.h b/keyboards/gmmk/pro/ansi/keymaps/coryginsberg/config.h new file mode 100644 index 000000000000..6b06448f71fc --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/coryginsberg/config.h @@ -0,0 +1,24 @@ +/* Copyright 2021 Glorious, LLC + Copyright 2021 Cory Ginsberg (@coryginsberg) + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +// #define TAPPING_TOGGLE 2 +// TT set to two taps + +#define TAPPING_TERM 250 +#define RGBLIGHT_DEFAULT_MODE SOLID_WHITE diff --git a/keyboards/gmmk/pro/ansi/keymaps/coryginsberg/keymap.c b/keyboards/gmmk/pro/ansi/keymaps/coryginsberg/keymap.c new file mode 100644 index 000000000000..41278868dbd6 --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/coryginsberg/keymap.c @@ -0,0 +1,111 @@ +/* Copyright 2021 Glorious, LLC + Copyright 2021 Cory Ginsberg (@coryginsberg) + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +void dance_media(qk_tap_dance_state_t *state, void *user_data) { + if (state->count == 1) { + tap_code(KC_MPLY); + } else if (state->count == 2) { + tap_code(KC_MNXT); + } else if (state->count == 3) { + tap_code(KC_MPRV); + } else { + reset_tap_dance(state); + } +} + +qk_tap_dance_action_t tap_dance_actions[] = { + // Tap once for shift, twice for Caps Lock + [0] = ACTION_TAP_DANCE_DOUBLE(KC_LSFT, KC_CAPS), + [1] = ACTION_TAP_DANCE_FN(dance_media)}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute) +// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del +// Tab Q W E R T Y U I O P [ ] \ PgUp +// Caps A S D F G H J K L ; " Enter PgDn +// Sh_L Z X C V B N M , . ? Sh_R Up End +// Ct_L Alt_L Win_L SPACE Ct_R Alt_R FN Left Down Right + + // The FN key by default maps to a momentary toggle to layer 1 to provide access to the RESET key (to put the board into bootloader mode). Without + // this mapping, you have to open the case to hit the button on the bottom of the PCB (near the USB cable attachment) while plugging in the USB + // cable to get the board into bootloader mode - definitely not fun when you're working on your QMK builds. Remove this and put it back to KC_RGUI + // if that's your preference. + // + // To put the keyboard in bootloader mode, use FN+backslash. If you accidentally put it into bootloader, you can just unplug the USB cable and + // it'll be back to normal when you plug it back in. + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, TO(1), + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(4), TO(2), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, TD(1), TO(0), + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RALT, MO(4), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [2] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, TD(1), TO(0), + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RALT, MO(4), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [3] = LAYOUT( + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PSLS, KC_PAST, KC_PMNS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_7, KC_8, KC_9, KC_PPLS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_4, KC_5, KC_6, KC_PPLS, XXXXXXX, KC_PENT, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_1, KC_2, KC_3, KC_EQL, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, KC_0, KC_DOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + ), + [4] = LAYOUT( + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TD(1), _______, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_M_P, XXXXXXX, XXXXXXX, RESET, RGB_MODE_FORWARD, + XXXXXXX, XXXXXXX, RGB_SAI, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MODE_REVERSE, + _______, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, RGB_TOG, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, KC_MEDIA_PREV_TRACK, KC_MEDIA_PLAY_PAUSE, KC_MEDIA_NEXT_TRACK + ), + [5] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (clockwise) { + tap_code(KC_VOLU); + } + else { + tap_code(KC_VOLD); + } + return true; +} diff --git a/keyboards/gmmk/pro/ansi/keymaps/coryginsberg/readme.md b/keyboards/gmmk/pro/ansi/keymaps/coryginsberg/readme.md new file mode 100644 index 000000000000..e4485215725e --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/coryginsberg/readme.md @@ -0,0 +1,15 @@ +# Description +Mac and Windows profiles with special touches for the Mac profile. + +## Windows Profile +Should be nearly identical to the default profile for GMMK Pro. Only major difference is the button next to F12 is now PrintScreen and clicking the rotary dial switches profiles instead of muting. + +## Mac Profile +Besides the usual swapping of the alt and windows/cmd placement also changes the following: +* Double press shift to activate caps lock +* Capslock is escape +* Button next to F12: + * 1 press: play/pause + * 2 presses: skip + * 3 presses: previous +* Clicking Rotary Dial switches profiles diff --git a/keyboards/gmmk/pro/ansi/keymaps/coryginsberg/rules.mk b/keyboards/gmmk/pro/ansi/keymaps/coryginsberg/rules.mk new file mode 100644 index 000000000000..1dd6809223de --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/coryginsberg/rules.mk @@ -0,0 +1,5 @@ +VIA_ENABLE = yes +MOUSEKEY_ENABLE = no +TAP_DANCE_ENABLE = yes +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +UNICODE_ENABLE = yes diff --git a/keyboards/gmmk/pro/ansi/keymaps/default/keymap.c b/keyboards/gmmk/pro/ansi/keymaps/default/keymap.c new file mode 100644 index 000000000000..65ccaf88f293 --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/default/keymap.c @@ -0,0 +1,72 @@ +/* Copyright 2021 Glorious, LLC + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute) +// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del +// Tab Q W E R T Y U I O P [ ] \ PgUp +// Caps A S D F G H J K L ; " Enter PgDn +// Sh_L Z X C V B N M , . ? Sh_R Up End +// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right + + + // The FN key by default maps to a momentary toggle to layer 1 to provide access to the RESET key (to put the board into bootloader mode). Without + // this mapping, you have to open the case to hit the button on the bottom of the PCB (near the USB cable attachment) while plugging in the USB + // cable to get the board into bootloader mode - definitely not fun when you're working on your QMK builds. Remove this and put it back to KC_RGUI + // if that's your preference. + // + // To put the keyboard in bootloader mode, use FN+backslash. If you accidentally put it into bootloader, you can just unplug the USB cable and + // it'll be back to normal when you plug it back in. + // + // This keyboard defaults to 6KRO instead of NKRO for compatibility reasons (some KVMs and BIOSes are incompatible with NKRO). + // Since this is, among other things, a "gaming" keyboard, a key combination to enable NKRO on the fly is provided for convenience. + // Press Fn+N to toggle between 6KRO and NKRO. This setting is persisted to the EEPROM and thus persists between restarts. + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_MUTE, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT( + _______, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, + _______, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, + _______, _______, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, RGB_HUI, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, RGB_MOD, _______, + _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI + ), + + +}; +// clang-format on + +#ifdef ENCODER_ENABLE +bool encoder_update_user(uint8_t index, bool clockwise) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + return true; +} +#endif // ENCODER_ENABLE diff --git a/keyboards/gmmk/pro/ansi/keymaps/jackkenney/keymap.c b/keyboards/gmmk/pro/ansi/keymaps/jackkenney/keymap.c new file mode 100644 index 000000000000..cfca7960ca41 --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/jackkenney/keymap.c @@ -0,0 +1,66 @@ +/* Copyright 2021 Glorious, LLC + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + // ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute) + // ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del + // Tab Q W E R T Y U I O P [ ] \ PgUp + // Caps A S D F G H J K L ; " Enter PgDn + // Sh_L Z X C V B N M , . ? Sh_R Up End + // Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right + + + // The FN key by default maps to a momentary toggle to layer 1 to provide access to the RESET key (to put the board into bootloader mode). Without + // this mapping, you have to open the case to hit the button on the bottom of the PCB (near the USB cable attachment) while plugging in the USB + // cable to get the board into bootloader mode - definitely not fun when you're working on your QMK builds. Remove this and put it back to KC_RGUI + // if that's your preference. + // + // To put the keyboard in bootloader mode, use FN+backslash. If you accidentally put it into bootloader, you can just unplug the USB cable and + // it'll be back to normal when you plug it back in. + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_MUTE, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, KC_PSCR, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, + KC_INS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, RESET, KC_RGUI, _______, _______, _______, _______, _______ + ), + + +}; + + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (clockwise) { + tap_code(KC_VOLU); + } + else { + tap_code(KC_VOLD); + } + return true; +} diff --git a/keyboards/gmmk/pro/ansi/keymaps/jonavin/config.h b/keyboards/gmmk/pro/ansi/keymaps/jonavin/config.h new file mode 100644 index 000000000000..ed78f99eca3f --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/jonavin/config.h @@ -0,0 +1,39 @@ +/* Copyright 2021 Jonavin Eng + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define TAPPING_TOGGLE 2 +// TT set to two taps + +/* Handle GRAVESC combo keys */ +#define GRAVE_ESC_ALT_OVERRIDE + //Always send Escape if Alt is pressed +#define GRAVE_ESC_CTRL_OVERRIDE + //Always send Escape if Control is pressed + +#define TAPPING_TERM 180 + +#ifdef RGB_MATRIX_ENABLE + #define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR + #define RGB_DISABLE_WHEN_USB_SUSPENDED +#endif + +// add fifth layer for colemak -- set "COLEMAK_LAYER_ENABLE = yes" in rules.mk to enable +#if defined COLEMAK_LAYER_ENABLE + #define DYNAMIC_KEYMAP_LAYER_COUNT 5 + #define _COLEMAK 4 +#endif // COLEMAK_LAYER_ENABLE diff --git a/keyboards/gmmk/pro/ansi/keymaps/jonavin/keymap.c b/keyboards/gmmk/pro/ansi/keymaps/jonavin/keymap.c new file mode 100644 index 000000000000..0d318885f482 --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/jonavin/keymap.c @@ -0,0 +1,209 @@ +/* Copyright 2021 Glorious, LLC + Copyright 2021 Jonavin + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H +#include "rgb_matrix_map.h" +#include "jonavin.h" + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Ins Rotary(Mute) +// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del +// Tab Q W E R T Y U I O P [ ] \ PgUp +// Caps A S D F G H J K L ; " Enter PgDn +// Sh_L Z X C V B N M , . ? Sh_R Up End +// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right + + + [_BASE] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_MUTE, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + TT(_LOWER), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFTCAPSWIN, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN1),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_FN1] = LAYOUT( + _______, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, _______, KC_CALC, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, + _______, _______, RGB_VAI, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, _______, RESET, KC_HOME, + KC_CAPS, _______, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, + _______, RGB_NITE,RGB_HUI, _______, _______, _______, KC_NLCK, _______, RGB_TOD, RGB_TOI, _______, _______, RGB_MOD, _______, + _______, KC_WINLCK, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI + ), + + [_LOWER] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_P0, KC_PMNS, KC_PPLS, _______, _______, + _______, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, KC_TAB, KC_P4, KC_P5, KC_P6, KC_PDOT, _______, _______, _______, KC_HOME, + _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, _______, KC_P1, KC_P2, KC_P3, KC_NO, KC_PAST, KC_PENT, KC_END, + _______, KC_NO, KC_DEL, KC_INS, KC_NO, KC_NO, KC_NO, KC_P0, KC_00, KC_PDOT, KC_PSLS, _______, RCTL(KC_PGUP), _______, + _______, _______, _______, KC_BSPC, _______, _______, _______, RCTL(KC_LEFT), RCTL(KC_PGDN), RCTL(KC_RIGHT) + ), + + [_RAISE] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +#ifdef COLEMAK_LAYER_ENABLE + [_COLEMAK] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_MUTE, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + TT(_LOWER), 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_PGDN, + KC_LSFTCAPSWIN, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN1),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), +#endif // COLEMAK_LAYER_ENABLE +}; + +#if defined(ENCODER_ENABLE) && !defined(ENCODER_DEFAULTACTIONS_ENABLE) // Encoder Functionality when not using userspace defaults + void encoder_action_rgbhue(bool clockwise) { + if (clockwise) + rgblight_increase_hue_noeeprom(); + else + rgblight_decrease_hue_noeeprom(); + } + + bool encoder_update_user(uint8_t index, bool clockwise) { + uint8_t mods_state = get_mods(); + if (mods_state & MOD_BIT(KC_LSFT) ) { // If you are holding L shift, encoder changes layers + encoder_action_layerchange(clockwise); + } else if (mods_state & MOD_BIT(KC_RSFT) ) { // If you are holding R shift, Page up/dn + unregister_mods(MOD_BIT(KC_RSFT)); + encoder_action_navpage(clockwise); + register_mods(MOD_BIT(KC_RSFT)); + } else if (mods_state & MOD_BIT(KC_LCTL)) { // if holding Left Ctrl, navigate next/prev word + encoder_action_navword(clockwise); + } else if (mods_state & MOD_BIT(KC_RCTL)) { // if holding Right Ctrl, change rgb hue/colour + encoder_action_rgbhue(clockwise); + } else if (mods_state & MOD_BIT(KC_LALT)) { // if holding Left Alt, change media next/prev track + encoder_action_mediatrack(clockwise); + } else { + switch(get_highest_layer(layer_state)) { + case _FN1: + #ifdef IDLE_TIMEOUT_ENABLE + timeout_update_threshold(clockwise); + #endif + break; + default: + encoder_action_volume(clockwise); // Otherwise it just changes volume + break; + } + } + return true; + } +#endif // ENCODER_ENABLE && !ENCODER_DEFAULTACTIONS_ENABLE + +#ifdef RGB_MATRIX_ENABLE + // Capslock, Scroll lock and Numlock indicator on Left side lights. + void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { + if (get_rgb_nightmode()) rgb_matrix_set_color_all(RGB_OFF); + if (IS_HOST_LED_ON(USB_LED_SCROLL_LOCK)) { + rgb_matrix_set_color(LED_L1, RGB_GREEN); + rgb_matrix_set_color(LED_L2, RGB_GREEN); + } + + #ifdef INVERT_NUMLOCK_INDICATOR + if (!IS_HOST_LED_ON(USB_LED_NUM_LOCK)) { // on if NUM lock is OFF + rgb_matrix_set_color(LED_L3, RGB_MAGENTA); + rgb_matrix_set_color(LED_L4, RGB_MAGENTA); + } + #else + if (IS_HOST_LED_ON(USB_LED_NUM_LOCK)) { // Normal, on if NUM lock is ON + rgb_matrix_set_color(LED_L3, RGB_MAGENTA); + rgb_matrix_set_color(LED_L4, RGB_MAGENTA); + } + #endif // INVERT_NUMLOCK_INDICATOR + + if (IS_HOST_LED_ON(USB_LED_CAPS_LOCK)) { + rgb_matrix_set_color(LED_L5, RGB_RED); + rgb_matrix_set_color(LED_L6, RGB_RED); + rgb_matrix_set_color(LED_L7, RGB_RED); + } + if (keymap_config.no_gui) { + rgb_matrix_set_color(LED_LWIN, RGB_RED); //light up Win key when disabled + } + switch(get_highest_layer(layer_state)){ // special handling per layer + case _FN1: // on Fn layer select what the encoder does when pressed + rgb_matrix_set_color(LED_R2, RGB_RED); + rgb_matrix_set_color(LED_R3, RGB_RED); + rgb_matrix_set_color(LED_R4, RGB_RED); + rgb_matrix_set_color(LED_FN, RGB_RED); //FN key + + // Add RGB Timeout Indicator -- shows 0 to 139 using F row and num row; larger numbers using 16bit code + uint16_t timeout_threshold = get_timeout_threshold(); + if (timeout_threshold <= 10) rgb_matrix_set_color(LED_LIST_FUNCROW[timeout_threshold], RGB_RED); + else if (timeout_threshold < 140) { + rgb_matrix_set_color(LED_LIST_FUNCROW[(timeout_threshold / 10)], RGB_RED); + rgb_matrix_set_color(LED_LIST_NUMROW[(timeout_threshold % 10)], RGB_RED); + } else { // >= 140 minutes, just show these 3 lights + rgb_matrix_set_color(LED_LIST_NUMROW[10], RGB_RED); + rgb_matrix_set_color(LED_LIST_NUMROW[11], RGB_RED); + rgb_matrix_set_color(LED_LIST_NUMROW[12], RGB_RED); + } + break; + case _LOWER: + for (uint8_t i=0; i or encoder + - setting to zero disables timeout + - indicators in FN layer using RGB in FN and number rows to show the timeout in minutes + - LED address location map as enum definition in rgb_matrix_map.h + - LED group lists for arrows, numpad, F row, num row, left and right side LEDs + - default startup in single mode with default colour + - Capslock, Scroll Lock, and Num Lock (not set) indicator on left side LED + - Layer indicator on right side LED + - Fn key light up red when Fn layer activate + - Win Key light up red when Win Lock mode enabled + - Layer 2 activation lights up Numpad area + - Fn + Z to turn off all RGB lights except rgb indicators; press again to toggle + +rules.mk OPTIONS - Active features from userspace +STARTUP_NUMLOCK_ON = yes + - turns on NUMLOCK by default + +ENCODER_DEFAULTACTIONS_ENABLE = yes + - Enabled default encoder funtions + +TD_LSFT_CAPSLOCK_ENABLE = yes + - This will enable double tap on Left Shift to toggle CAPSLOCK when using KC_LSFTCAPS + +IDLE_TIMEOUT_ENABLE = yes + - Enables Timer functionality; for RGB idle timeouts that can be changed dynamically + +INVERT_NUMLOCK_INDICATOR + - inverts the Num lock indicator, LED is on when num lokc is off + +COLEMAK_LAYER_ENABLE = yes + - Enabled optional 5th layer for COLEMAK layout + - Use Shift and encoder to enter 5th layer, right led indicator lights up BLUE + +## All layers diagram +Default layer +![image](https://user-images.githubusercontent.com/71780717/124177658-82324880-da7e-11eb-9421-b69100131062.png) + +Fn Layer +![image](https://user-images.githubusercontent.com/71780717/131255937-06c9691b-835f-4c94-93e6-6d1dc3de272b.png) + +Layer 2 (Caps Lock Mod) +![image](https://user-images.githubusercontent.com/71780717/124177683-8b231a00-da7e-11eb-9434-e2475f679a54.png) + +Optional COLEMAK layer +![image](https://user-images.githubusercontent.com/71780717/131235050-980d2f54-2d23-4ae8-a83f-9fcdbe60d6cb.png) diff --git a/keyboards/gmmk/pro/ansi/keymaps/jonavin/rgb_matrix_map.h b/keyboards/gmmk/pro/ansi/keymaps/jonavin/rgb_matrix_map.h new file mode 100644 index 000000000000..1ee53889054e --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/jonavin/rgb_matrix_map.h @@ -0,0 +1,144 @@ +/* Copyright 2021 Jonavin Eng + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifdef RGB_MATRIX_ENABLE + + // Custom RGB Colours + #define RGB_GODSPEED 0x00, 0xE4, 0xFF // colour for matching keycaps + #define RGB_NAUTILUS 0x00, 0xA4, 0xA9 // Naurilus Font colours + + // RGB LED locations + enum led_location_map { + LED_ESC, // 0, ESC, k13 + LED_GRV, // 1, ~, k16 + LEB_TAB, // 2, Tab, k11 + LED_CAPS, // 3, Caps, k21 + LED_LSFT, // 4, Sh_L, k00 + LED_LCTL, // 5, Ct_L, k06 + LED_F1, // 6, F1, k26 + LED_1, // 7, 1, k17 + LED_Q, // 8, Q, k10 + LED_A, // 9, A, k12 + LED_Z, // 10, Z, k14 + LED_LWIN, // 11, Win_L, k90 + LED_F2, // 12, F2, k36 + LED_2, // 13, 2, k27 + LED_W, // 14, W, k20 + LED_S, // 15, S, k22 + LED_X, // 16, X, k24 + LED_LALT, // 17, Alt_L, k93 + LED_F3, // 18, F3, k31 + LED_3, // 19, 3, k37 + LED_E, // 20, E, k30 + LED_D, // 21, D, k32 + LED_C, // 22, C, k34 + LED_F4, // 23, F4, k33 + LED_4, // 24, 4, k47 + LED_R, // 25, R, k40 + LED_F, // 26, F, k42 + LED_V, // 27, V, k44 + LED_F5, // 28, F5, k07 + LED_5, // 29, 5, k46 + LED_T, // 30, T, k41 + LED_G, // 31, G, k43 + LED_B, // 32, B, k45 + LED_SPC, // 33, SPACE, k94 + LED_F6, // 34, F6, k63 + LED_6, // 35, 6, k56 + LED_Y, // 36, Y, k51 + LED_H, // 37, H, k53 + LED_N, // 38, N, k55 + LED_F7, // 39, F7, k71 + LED_7, // 40, 7, k57 + LED_U, // 41, U, k50 + LED_J, // 42, J, k52 + LED_M, // 43, M, k54 + LED_F8, // 44, F8, k76 + LED_8, // 45, 8, k67 + LED_I, // 46, I, k60 + LED_K, // 47, K, k62 + LED_COMM, // 48, ,, k64 + LED_RALT, // 49, Alt_R, k95 + LED_F9, // 50, F9, ka6 + LED_9, // 51, 9, k77 + LED_O, // 52, O, k70 + LED_L, // 53, L, k72 + LED_DOT, // 54, ., k74 + LED_FN, // 55, FN, k92 + LED_F10, // 56, F10, ka7 + LED_0, // 57, 0, k87 + LED_P, // 58, P, k80 + LED_SCLN, // 59, ;, k82 + LED_SLSH, // 60, ?, k85 + LED_F11, // 61, F11, ka3 + LED_MINS, // 62, -, k86 + LED_LBRC, // 63, [, k81 + LED_QUOT, // 64, ", k83 + LED_RCTL, // 65, Ct_R, k04 + LED_F12, // 66, F12, ka5 + LED_L1, // 67, LED, l01 + LED_R1, // 68, LED, l11 + LED_INS, // 69, Prt, k97 -- remapped to INS + LED_L2, // 70, LED, l02 + LED_R2, // 71, LED, l12 + LED_DEL, // 72, Del, k65 + LED_L3, // 73, LED, l03 + LED_R3, // 74, LED, l13 + LED_PGUP, // 75, PgUp, k15 + LED_L4, // 76, LED, l04 + LED_R4, // 77, LED, l14 + LED_EQL, // 78, =, k66 + LED_RIGHT, // 79, Right, k05 + LED_L5, // 80, LED, l05 + LED_R5, // 81, LED, l15 + LED_END, // 82, End, k75 + LED_L6, // 83, LED, l06 + LED_R6, // 84, LED, l16 + LED_BSPC, // 85, BSpc, ka1 + LED_PGDN, // 86, PgDn, k25 + LED_L7, // 87, LED, l07 + LED_R7, // 88, LED, l17 + LED_RBRC, // 89, ], k61 + LED_RSFT, // 90, Sh_R, k91 + LED_L8, // 91, LED, l08 + LED_R8, // 92, LED, l18 + LED_BSLS, // 93, \, ka2 + LED_UP, // 94, Up, k35 + LED_LEFT, // 95, Left, k03 + LED_ENT, // 96, Enter, ka4 + LED_DOWN // 97, Down, k73 + }; + + const uint8_t LED_LIST_WASD[] = { LED_W, LED_A, LED_S, LED_D }; + + const uint8_t LED_LIST_ARROWS[] = { LED_LEFT, LED_RIGHT, LED_UP, LED_DOWN }; + + const uint8_t LED_LIST_FUNCROW[] = { LED_ESC, LED_F1, LED_F2, LED_F3, LED_F4, LED_F5, LED_F6, LED_F7, LED_F8, LED_F9, LED_F10, LED_F11, LED_F12, LED_INS}; + + const uint8_t LED_LIST_NUMROW[] = { LED_GRV, LED_1, LED_2, LED_3, LED_4, LED_5, LED_6, LED_7, LED_8, LED_9, LED_0, LED_MINS, LED_EQL, LED_BSPC, LED_DEL}; + + const uint8_t LED_LIST_NUMPAD[] = { + LED_7, LED_8, LED_9, + LED_U, LED_I, LED_O, + LED_J, LED_K, LED_L, + LED_M, LED_COMM, LED_DOT + }; + + const uint8_t LED_SIDE_LEFT[] = { LED_L1, LED_L2, LED_L3, LED_L4, LED_L5, LED_L6, LED_L7, LED_L8}; + + const uint8_t LED_SIDE_RIGHT[] = { LED_R1, LED_R2, LED_R3, LED_R4, LED_R5, LED_R6, LED_R7, LED_R8}; + +#endif diff --git a/keyboards/gmmk/pro/ansi/keymaps/jonavin/rules.mk b/keyboards/gmmk/pro/ansi/keymaps/jonavin/rules.mk new file mode 100644 index 000000000000..1ffc2058a262 --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/jonavin/rules.mk @@ -0,0 +1,12 @@ +VIA_ENABLE = yes +MOUSEKEY_ENABLE = no +TAP_DANCE_ENABLE = yes +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite + +TD_LSFT_CAPSLOCK_ENABLE = yes +IDLE_TIMEOUT_ENABLE = yes +STARTUP_NUMLOCK_ON = yes +ENCODER_DEFAULTACTIONS_ENABLE = no + +COLEMAK_LAYER_ENABLE = yes #Enable Colemak layer / set to no to disable +INVERT_NUMLOCK_INDICATOR = yes diff --git a/keyboards/gmmk/pro/ansi/keymaps/mattgauf/ansi.c b/keyboards/gmmk/pro/ansi/keymaps/mattgauf/ansi.c new file mode 100644 index 000000000000..52c9dfdf9913 --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/mattgauf/ansi.c @@ -0,0 +1,241 @@ +/* Copyright 2021 Gigahawk + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +// clang-format off +#include "ansi.h" + +#ifdef RGB_MATRIX_ENABLE +led_config_t PROGMEM g_led_config = {{ + { 4, NO_LED, NO_LED, 95, 65, 79, 5, 28 }, + { 8, 2, 9, 0, 10, 75, 1, 7 }, + { 14, 3, 15, NO_LED, 16, 86, 6, 13 }, + { 20, 18, 21, 23, 22, 94, 12, 19 }, + { 25, 30, 26, 31, 27, 32, 29, 24 }, + { 41, 36, 42, 37, 43, 38, 35, 40 }, + { 46, 89, 47, 34, 48, 72, 78, 45 }, + { 52, 39, 53, 97, 54, 82, 44, 51 }, + { 58, 63, 59, 64, NO_LED, 60, 62, 57 }, + { 11, 90, 55, 17, 33, 49, NO_LED, 69 }, + { NO_LED, 85, 93, 61, 96, 66, 50, 56 } +}, { + {0, 0}, // 0, ESC, k13 + {0, 15}, // 1, ~, k16 + {4, 26}, // 2, Tab, k11 + {5, 38}, // 3, Caps, k21 + {9, 49}, // 4, Sh_L, k00 + {2, 61}, // 5, Ct_L, k06 + {18, 0}, // 6, F1, k26 + {14, 15}, // 7, 1, k17 + {22, 26}, // 8, Q, k10 + {25, 38}, // 9, A, k12 + {33, 49}, // 10, Z, k14 + {20, 61}, // 11, Win_L, k90 + {33, 0}, // 12, F2, k36 + {29, 15}, // 13, 2, k27 + {36, 26}, // 14, W, k20 + {40, 38}, // 15, S, k22 + {47, 49}, // 16, X, k24 + {38, 61}, // 17, Alt_L, k93 + {47, 0}, // 18, F3, k31 + {43, 15}, // 19, 3, k37 + {51, 26}, // 20, E, k30 + {54, 38}, // 21, D, k32 + {61, 49}, // 22, C, k34 + {61, 0}, // 23, F4, k33 + {58, 15}, // 24, 4, k47 + {65, 26}, // 25, R, k40 + {69, 38}, // 26, F, k42 + {76, 49}, // 27, V, k44 + {79, 0}, // 28, F5, k07 + {72, 15}, // 29, 5, k46 + {79, 26}, // 30, T, k41 + {83, 38}, // 31, G, k43 + {90, 49}, // 32, B, k45 + {92, 61}, // 33, SPACE, k94 + {94, 0}, // 34, F6, k63 + {87, 15}, // 35, 6, k56 + {94, 26}, // 36, Y, k51 + {98, 38}, // 37, H, k53 + {105, 49}, // 38, N, k55 + {108, 0}, // 39, F7, k71 + {101, 15}, // 40, 7, k57 + {108, 26}, // 41, U, k50 + {112, 38}, // 42, J, k52 + {119, 49}, // 43, M, k54 + {123, 0}, // 44, F8, k76 + {116, 15}, // 45, 8, k67 + {123, 26}, // 46, I, k60 + {126, 38}, // 47, K, k62 + {134, 49}, // 48, ,, k64 + {145, 61}, // 49, Alt_R, k95 + {141, 0}, // 50, F9, ka6 + {130, 15}, // 51, 9, k77 + {137, 26}, // 52, O, k70 + {141, 38}, // 53, L, k72 + {148, 49}, // 54, ., k74 + {159, 61}, // 55, FN, k92 + {155, 0}, // 56, F10, ka7 + {145, 15}, // 57, 0, k87 + {152, 26}, // 58, P, k80 + {155, 38}, // 59, ;, k82 + {163, 49}, // 60, ?, k85 + {170, 0}, // 61, F11, ka3 + {159, 15}, // 62, -, k86 + {166, 26}, // 63, [, k81 + {170, 38}, // 64, ", k83 + {173, 61}, // 65, Ct_R, k04 + {184, 0}, // 66, F12, ka5 + {0, 8}, // 67, LED, l01 + {224, 8}, // 68, LED, l11 + {202, 0}, // 69, Prt, k97 + {0, 15}, // 70, LED, l02 + {224, 15}, // 71, LED, l12 + {224, 15}, // 72, Del, k65 + {0, 21}, // 73, LED, l03 + {224, 21}, // 74, LED, l13 + {224, 26}, // 75, PgUp, k15 + {0, 28}, // 76, LED, l04 + {224, 28}, // 77, LED, l14 + {173, 15}, // 78, =, k66 + {220, 64}, // 79, Right, k05 + {0, 35}, // 80, LED, l05 + {224, 35}, // 81, LED, l15 + {224, 49}, // 82, End, k75 + {0, 42}, // 83, LED, l06 + {224, 42}, // 84, LED, l16 + {195, 15}, // 85, BSpc, ka1 + {224, 38}, // 86, PgDn, k25 + {0, 48}, // 87, LED, l07 + {224, 48}, // 88, LED, l17 + {181, 26}, // 89, ], k61 + {182, 49}, // 90, Sh_R, k91 + {0, 55}, // 91, LED, l08 + {224, 55}, // 92, LED, l18 + {199, 26}, // 93, \, ka2 + {206, 52}, // 94, Up, k35 + {191, 64}, // 95, Left, k03 + {193, 38}, // 96, Enter, ka4 + {206, 64} // 97, Down, k73 +}, { + 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 4, 2, 2, 4, 2, 2, + 4, 2, 2, 4, 4, 2, 2, 4, 2, 2, 4, 4, 2, 2, 4, 4, 2, 2, 4, 4, 4, 4, 4 +}}; + +const aw_led g_aw_leds[DRIVER_LED_TOTAL] = { + {0, CS1_SW1, CS2_SW1, CS3_SW1}, // 0, ESC, k13 + {0, CS4_SW1, CS5_SW1, CS6_SW1}, // 1, ~, k16 + {0, CS7_SW1, CS8_SW1, CS9_SW1}, // 2, Tab, k11 + {0, CS10_SW1, CS11_SW1, CS12_SW1}, // 3, Caps, k21 + {0, CS13_SW1, CS14_SW1, CS15_SW1}, // 4, Sh_L, k00 + {0, CS16_SW1, CS17_SW1, CS18_SW1}, // 5, Ct_L, k06 + {0, CS1_SW2, CS2_SW2, CS3_SW2}, // 6, F1, k26 + {0, CS4_SW2, CS5_SW2, CS6_SW2}, // 7, 1, k17 + {0, CS7_SW2, CS8_SW2, CS9_SW2}, // 8, Q, k10 + {0, CS10_SW2, CS11_SW2, CS12_SW2}, // 9, A, k12 + {0, CS13_SW2, CS14_SW2, CS15_SW2}, // 10, Z, k14 + {0, CS16_SW2, CS17_SW2, CS18_SW2}, // 11, Win_L, k90 + {0, CS1_SW3, CS2_SW3, CS3_SW3}, // 12, F2, k36 + {0, CS4_SW3, CS5_SW3, CS6_SW3}, // 13, 2, k27 + {0, CS7_SW3, CS8_SW3, CS9_SW3}, // 14, W, k20 + {0, CS10_SW3, CS11_SW3, CS12_SW3}, // 15, S, k22 + {0, CS13_SW3, CS14_SW3, CS15_SW3}, // 16, X, k24 + {0, CS16_SW3, CS17_SW3, CS18_SW3}, // 17, Alt_L, k93 + {0, CS1_SW4, CS2_SW4, CS3_SW4}, // 18, F3, k31 + {0, CS4_SW4, CS5_SW4, CS6_SW4}, // 19, 3, k37 + {0, CS7_SW4, CS8_SW4, CS9_SW4}, // 20, E, k30 + {0, CS10_SW4, CS11_SW4, CS12_SW4}, // 21, D, k32 + {0, CS13_SW4, CS14_SW4, CS15_SW4}, // 22, C, k34 + {0, CS1_SW5, CS2_SW5, CS3_SW5}, // 23, F4, k33 + {0, CS4_SW5, CS5_SW5, CS6_SW5}, // 24, 4, k47 + {0, CS7_SW5, CS8_SW5, CS9_SW5}, // 25, R, k40 + {0, CS10_SW5, CS11_SW5, CS12_SW5}, // 26, F, k42 + {0, CS13_SW5, CS14_SW5, CS15_SW5}, // 27, V, k44 + {0, CS1_SW6, CS2_SW6, CS3_SW6}, // 28, F5, k07 + {0, CS4_SW6, CS5_SW6, CS6_SW6}, // 29, 5, k46 + {0, CS7_SW6, CS8_SW6, CS9_SW6}, // 30, T, k41 + {0, CS10_SW6, CS11_SW6, CS12_SW6}, // 31, G, k43 + {0, CS13_SW6, CS14_SW6, CS15_SW6}, // 32, B, k45 + {0, CS16_SW6, CS17_SW6, CS18_SW6}, // 33, SPACE, k94 + {0, CS1_SW7, CS2_SW7, CS3_SW7}, // 34, F6, k63 + {0, CS4_SW7, CS5_SW7, CS6_SW7}, // 35, 6, k56 + {0, CS7_SW7, CS8_SW7, CS9_SW7}, // 36, Y, k51 + {0, CS10_SW7, CS11_SW7, CS12_SW7}, // 37, H, k53 + {0, CS13_SW7, CS14_SW7, CS15_SW7}, // 38, N, k55 + {0, CS1_SW8, CS2_SW8, CS3_SW8}, // 39, F7, k71 + {0, CS4_SW8, CS5_SW8, CS6_SW8}, // 40, 7, k57 + {0, CS7_SW8, CS8_SW8, CS9_SW8}, // 41, U, k50 + {0, CS10_SW8, CS11_SW8, CS12_SW8}, // 42, J, k52 + {0, CS13_SW8, CS14_SW8, CS15_SW8}, // 43, M, k54 + {0, CS1_SW9, CS2_SW9, CS3_SW9}, // 44, F8, k76 + {0, CS4_SW9, CS5_SW9, CS6_SW9}, // 45, 8, k67 + {0, CS7_SW9, CS8_SW9, CS9_SW9}, // 46, I, k60 + {0, CS10_SW9, CS11_SW9, CS12_SW9}, // 47, K, k62 + {0, CS13_SW9, CS14_SW9, CS15_SW9}, // 48, ,, k64 + {0, CS16_SW9, CS17_SW9, CS18_SW9}, // 49, Alt_R, k95 + {0, CS1_SW10, CS2_SW10, CS3_SW10}, // 50, F9, ka6 + {0, CS4_SW10, CS5_SW10, CS6_SW10}, // 51, 9, k77 + {0, CS7_SW10, CS8_SW10, CS9_SW10}, // 52, O, k70 + {0, CS10_SW10, CS11_SW10, CS12_SW10}, // 53, L, k72 + {0, CS13_SW10, CS14_SW10, CS15_SW10}, // 54, ., k74 + {0, CS16_SW10, CS17_SW10, CS18_SW10}, // 55, FN, k92 + {0, CS1_SW11, CS2_SW11, CS3_SW11}, // 56, F10, ka7 + {0, CS4_SW11, CS5_SW11, CS6_SW11}, // 57, 0, k87 + {0, CS7_SW11, CS8_SW11, CS9_SW11}, // 58, P, k80 + {0, CS10_SW11, CS11_SW11, CS12_SW11}, // 59, ;, k82 + {0, CS13_SW11, CS14_SW11, CS15_SW11}, // 60, ?, k85 + {0, CS1_SW12, CS2_SW12, CS3_SW12}, // 61, F11, ka3 + {0, CS4_SW12, CS5_SW12, CS6_SW12}, // 62, -, k86 + {0, CS7_SW12, CS8_SW12, CS9_SW12}, // 63, [, k81 + {0, CS10_SW12, CS11_SW12, CS12_SW12}, // 64, ", k83 + {0, CS16_SW12, CS17_SW12, CS18_SW12}, // 65, Ct_R, k04 + + {1, CS1_SW1, CS2_SW1, CS3_SW1}, // 66, F12, ka5 + {1, CS13_SW1, CS14_SW1, CS15_SW1}, // 67, LED, l01 + {1, CS16_SW1, CS17_SW1, CS18_SW1}, // 68, LED, l11 + {1, CS4_SW2, CS5_SW2, CS6_SW2}, // 69, Prt, k97 + {1, CS13_SW2, CS14_SW2, CS15_SW2}, // 70, LED, l02 + {1, CS16_SW2, CS17_SW2, CS18_SW2}, // 71, LED, l12 + {1, CS4_SW3, CS5_SW3, CS6_SW3}, // 72, Del, k65 + {1, CS13_SW3, CS14_SW3, CS15_SW3}, // 73, LED, l03 + {1, CS16_SW3, CS17_SW3, CS18_SW3}, // 74, LED, l13 + {1, CS4_SW4, CS5_SW4, CS6_SW4}, // 75, PgUp, k15 + {1, CS13_SW4, CS14_SW4, CS15_SW4}, // 76, LED, l04 + {1, CS16_SW4, CS17_SW4, CS18_SW4}, // 77, LED, l14 + {1, CS1_SW5, CS2_SW5, CS3_SW5}, // 78, =, k66 + {1, CS10_SW5, CS11_SW5, CS12_SW5}, // 79, Right, k05 + {1, CS13_SW5, CS14_SW5, CS15_SW5}, // 80, LED, l05 + {1, CS16_SW5, CS17_SW5, CS18_SW5}, // 81, LED, l15 + {1, CS4_SW6, CS5_SW6, CS6_SW6}, // 82, End, k75 + {1, CS13_SW6, CS14_SW6, CS15_SW6}, // 83, LED, l06 + {1, CS16_SW6, CS17_SW6, CS18_SW6}, // 84, LED, l16 + {1, CS1_SW7, CS2_SW7, CS3_SW7}, // 85, BSpc, ka1 + {1, CS4_SW7, CS5_SW7, CS6_SW7}, // 86, PgDn, k25 + {1, CS13_SW7, CS14_SW7, CS15_SW7}, // 87, LED, l07 + {1, CS16_SW7, CS17_SW7, CS18_SW7}, // 88, LED, l17 + {1, CS1_SW8, CS2_SW8, CS3_SW8}, // 89, ], k61 + {1, CS4_SW8, CS5_SW8, CS6_SW8}, // 90, Sh_R, k91 + {1, CS13_SW8, CS14_SW8, CS15_SW8}, // 91, LED, l08 + {1, CS16_SW8, CS17_SW8, CS18_SW8}, // 92, LED, l18 + {1, CS1_SW9, CS2_SW9, CS3_SW9}, // 93, \, ka2 + {1, CS4_SW9, CS5_SW9, CS6_SW9}, // 94, Up, k35 + {1, CS4_SW10, CS5_SW10, CS6_SW10}, // 95, Left, k03 + {1, CS1_SW11, CS2_SW11, CS3_SW11}, // 96, Enter, ka4 + {1, CS4_SW11, CS5_SW11, CS6_SW11}, // 97, Down, k73 +}; +// clang-format on +#endif diff --git a/keyboards/gmmk/pro/ansi/keymaps/mattgauf/config.h b/keyboards/gmmk/pro/ansi/keymaps/mattgauf/config.h new file mode 100644 index 000000000000..26417b8234a0 --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/mattgauf/config.h @@ -0,0 +1,63 @@ +/* Copyright 2021 Matt Gauf + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +// clang-format off +#pragma once + +/* Defaults */ +#define RAW_USAGE_PAGE 0x200 +#define RAW_USAGE_ID 0x40 + +/* Board Features */ +#define DYNAMIC_MACRO_SIZE 512 + +/* RGB Matrix Features */ +#define RGB_MATRIX_KEYPRESSES +#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR +#define RGB_DISABLE_WHEN_USB_SUSPENDED true + +/* RGB Matrix Framebuffer Config */ +// #define RGB_MATRIX_FRAMEBUFFER_EFFECTS +// #define RGB_MATRIX_TYPING_HEATMAP_DECREASE_DELAY_MS 25 + +/* RGB Matrix Disabled Effects */ +#define DISABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue +#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation +#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness +#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in +#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard +#define DISABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard +#define DISABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard +#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard +#define DISABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue +#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation +#define DISABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight ammount in a wave to the right, then back to the left +#define DISABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight ammount and then back down in a wave to the right + +#if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS) + #define DISABLE_RGB_MATRIX_DIGITAL_RAIN // That famous computer simulation +#endif + +#if defined(RGB_MATRIX_KEYPRESSES) || defined(RGB_MATRIX_KEYRELEASES) + #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out + #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out + #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out + #define DISABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out + #define DISABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out +#endif + +#define DISABLE_RGB_MATRIX_EFFECT_MAX +// clang-format on diff --git a/keyboards/gmmk/pro/ansi/keymaps/mattgauf/helpers.c b/keyboards/gmmk/pro/ansi/keymaps/mattgauf/helpers.c new file mode 100644 index 000000000000..f3f443cedb46 --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/mattgauf/helpers.c @@ -0,0 +1,25 @@ +/* Copyright 2021 Matt Gauf + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "rgb_matrix.h" + +void rgb_matrix_set_color_flags(uint8_t red, uint8_t green, uint8_t blue, uint8_t flags) { + for (uint8_t ii = 0; ii < DRIVER_LED_TOTAL; ii++) { + if (g_led_config.flags[ii] & flags) { + rgb_matrix_set_color(ii, red, green, blue); + } + } +} diff --git a/keyboards/gmmk/pro/ansi/keymaps/mattgauf/keymap.c b/keyboards/gmmk/pro/ansi/keymaps/mattgauf/keymap.c new file mode 100644 index 000000000000..f96be6ffe94b --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/mattgauf/keymap.c @@ -0,0 +1,220 @@ +/* Copyright 2021 Matt Gauf + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +// clang-format off +#include QMK_KEYBOARD_H +#include "keymap_helpers.h" + + +enum custom_codes { + SET_MP = RGB_M_P, + SET_MB = RGB_M_B, + SET_MR = RGB_M_R, + + MG_F17 = SAFE_RANGE, + MG_F18, + MG_F19 +}; + + +enum layer_names { + _DEFAULT = 0, + _EFFECTS, + _UTILITY, + _DFUMODE +}; + + +// static uint8_t rgb_pin_fn_column[] = {PIN_DEL,PIN_PGUP,PIN_PGDN,PIN_END}; +// static uint8_t rgb_pin_left_underglow[] = {PIN_LED_L01,PIN_LED_L02,PIN_LED_L03,PIN_LED_L04,PIN_LED_L05,PIN_LED_L06,PIN_LED_L07,PIN_LED_L08}; +// static uint8_t rgb_pin_right_underglow[] = {PIN_LED_L11,PIN_LED_L12,PIN_LED_L13,PIN_LED_L14,PIN_LED_L15,PIN_LED_L16,PIN_LED_L17,PIN_LED_L18}; + + +#define MODS_SHIFT ((get_mods() | get_oneshot_mods()) & MOD_MASK_SHIFT) +#define MODS_CTRL ((get_mods() | get_oneshot_mods()) & MOD_MASK_CTRL) +#define MODS_ALT ((get_mods() | get_oneshot_mods()) & MOD_MASK_ALT) +#define MODS_GUI ((get_mods() | get_oneshot_mods()) & MOD_MASK_GUI) + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_DEFAULT] = LAYOUT(KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, MG_F17, KC_MUTE, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, MO(_EFFECTS), KC_LEFT, KC_DOWN, KC_RGHT), + + [_EFFECTS] = LAYOUT(_______, KC_F13, KC_F14, KC_F15, KC_F16, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, MG_F18, _______, + _______, SET_MP, SET_MB, SET_MR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPI, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, RGB_SAI, RGB_SPD, + _______, _______, _______, _______, TG(_UTILITY), MO(_DFUMODE), _______, RGB_HUD, RGB_SAD, RGB_HUI), + + [_UTILITY] = LAYOUT(_______, _______, _______, _______, _______, _______, _______, _______, _______, DM_PLY1, DM_PLY2, DM_REC1, DM_REC2, DM_RSTP, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [_DFUMODE] = LAYOUT(RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MG_F19, DEBUG, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), +}; +// Runs constantly in the background, in a loop. +void rgb_matrix_indicators_user(void) { + if (rgb_matrix_get_flags() & (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER)) { + + if (IS_LAYER_ON(_UTILITY)) { + rgb_matrix_set_color(PIN_F9, LEDGREE); + rgb_matrix_set_color(PIN_F10, LEDGREE); + rgb_matrix_set_color(PIN_F11, LED_RED); + rgb_matrix_set_color(PIN_F12, LED_RED); + rgb_matrix_set_color(PIN_PRINT, LEDTEAL); + } + + switch (get_highest_layer(layer_state)) { + case _DFUMODE: + rgb_matrix_set_color_all(LED_OFF); + rgb_matrix_set_color(PIN_ESC, LED_RED); + rgb_matrix_set_color(PIN_PRINT, LEDORAN); + return; + case _EFFECTS: + rgb_matrix_set_color(PIN_PRINT, LEDGREE); + break; + default: + break; + } + + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color(PIN_CAPS, RGB_WHITE); + } + + } +} + + +// Called on start +void dynamic_macro_record_start_user(void) { + dprint("-- Recording Started\n"); + layer_on(_UTILITY); +} + + +// Called on end +void dynamic_macro_record_end_user(int8_t direction) { + dprint("-- Recording Ended\n"); +} + + +// Called on playback +void dynamic_macro_play_user(int8_t direction) { + dprint("-- Recording Playing\n"); +} + + +// Runs on encoder event +bool encoder_update_user(uint8_t index, bool clockwise) { + uint8_t curr_mod = get_mods(); + + if (IS_LAYER_ON(_EFFECTS)) { + if (clockwise) { + rgb_matrix_increase_val(); + } else { + rgb_matrix_decrease_val(); + } + } else { + if (MODS_GUI) { + if (MODS_GUI && MODS_SHIFT) { + clear_mods(); + if (clockwise) { + tap_code16(LSG(KC_Z)); + } else { + tap_code16(LGUI(KC_Z)); + } + set_mods(curr_mod); + } else if (MODS_GUI && MODS_ALT) { + clear_mods(); + if (clockwise) { + tap_code(KC_RIGHT); + } else { + tap_code(KC_LEFT); + } + set_mods(curr_mod); + } else { + if (clockwise) { + tap_code16(LGUI(KC_TAB)); + } else { + tap_code16(LSG(KC_TAB)); + } + } + } else { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } + } + return true; +} + + +// Runs on key event +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case MG_F17: + if (record->event.pressed) { + tap_code16(HYPR(KC_F17)); + } + return false; + case MG_F18: + if (record->event.pressed) { + tap_code16(HYPR(KC_F18)); + } + return false; + case MG_F19: + if (record->event.pressed) { + tap_code16(HYPR(KC_F19)); + } + return false; + case RGB_TOG: + if (record->event.pressed) { + switch (rgb_matrix_get_flags()) { + case LED_FLAG_ALL: + rgb_matrix_set_flags(LED_FLAG_NONE); + break; + case LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER: + rgb_matrix_set_flags(LED_FLAG_ALL); + break; + case LED_FLAG_UNDERGLOW: + rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER); + break; + default: + rgb_matrix_set_flags(LED_FLAG_UNDERGLOW); + break; + } + } + return false; + default: + return true; // Process all other keycodes normally + } +} +// clang-format on diff --git a/keyboards/gmmk/pro/ansi/keymaps/mattgauf/keymap_helpers.h b/keyboards/gmmk/pro/ansi/keymaps/mattgauf/keymap_helpers.h new file mode 100644 index 000000000000..2a6e8dae7b75 --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/mattgauf/keymap_helpers.h @@ -0,0 +1,165 @@ +/* Copyright 2021 Matt Gauf + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +// clang-format off +#include +#include "rgb_matrix_types.h" + +/* Color Codes */ +#define LEDWHIT 0xff, 0xff, 0xff +#define LED_RED 0xff, 0x00, 0x00 +#define LEDORAN 0xff, 0x29, 0x00 +#define LEDGOLD 0xff, 0x80, 0x00 +#define LEDYELL 0xff, 0xff, 0x00 +#define LEDCHAR 0x80, 0xff, 0x00 +#define LEDGREE 0x00, 0xff, 0x00 +#define LEDFOAM 0x00, 0xff, 0x40 +#define LEDTEAL 0x00, 0x80, 0xff +#define LEDBLUE 0x00, 0x00, 0xff +#define LEDPURP 0x80, 0x00, 0xff +#define LEDMAGE 0xff, 0x00, 0xff +#define LEDPINK 0xff, 0x00, 0x80 +#define LEDBLAC 0x00, 0x00, 0x00 +#define LED_OFF 0x00, 0x00, 0x00 + +/* Color Functions */ +void rgb_matrix_set_color_flags(uint8_t red, uint8_t green, uint8_t blue, uint8_t flags); + +/* Function Row */ +#define PIN_ESC 0 +#define PIN_F1 6 +#define PIN_F2 12 +#define PIN_F3 18 +#define PIN_F4 23 +#define PIN_F5 28 +#define PIN_F6 34 +#define PIN_F7 39 +#define PIN_F8 44 +#define PIN_F9 50 +#define PIN_F10 56 +#define PIN_F11 61 +#define PIN_F12 66 +#define PIN_PRINT 69 + +/* Number Row */ +#define PIN_0 57 +#define PIN_1 7 +#define PIN_2 13 +#define PIN_3 19 +#define PIN_4 24 +#define PIN_5 29 +#define PIN_6 35 +#define PIN_7 40 +#define PIN_8 45 +#define PIN_9 51 + +/* QWERTY */ +#define PIN_A 9 +#define PIN_B 32 +#define PIN_C 22 +#define PIN_D 21 +#define PIN_E 20 +#define PIN_F 26 +#define PIN_G 31 +#define PIN_H 37 +#define PIN_I 46 +#define PIN_J 42 +#define PIN_K 47 +#define PIN_L 53 +#define PIN_M 43 +#define PIN_N 38 +#define PIN_O 52 +#define PIN_P 58 +#define PIN_Q 8 +#define PIN_R 25 +#define PIN_S 15 +#define PIN_T 30 +#define PIN_U 41 +#define PIN_V 27 +#define PIN_W 14 +#define PIN_X 16 +#define PIN_Y 36 +#define PIN_Z 10 + +/* Symbols */ +#define PIN_MINUS 62 +#define PIN_EQUAL 78 +#define PIN_RBRACKET 89 +#define PIN_LBRACKET 63 +#define PIN_BSLASH 93 +#define PIN_SLASH 60 +#define PIN_SCOLON 59 +#define PIN_QUOTE 64 +#define PIN_COMMA 48 +#define PIN_DOT 54 +#define PIN_GRAVE 1 + +/* Indentation */ +#define PIN_TAB 2 +#define PIN_SPACE 33 + +/* Line Control */ +#define PIN_BSPACE 85 +#define PIN_ENTER 96 + +/* Indicator */ +#define PIN_CAPS 3 + +/* Left Modifiers */ +#define PIN_LSHIFT 4 +#define PIN_LCTRL 5 +#define PIN_LALT 17 +#define PIN_LGUI 11 + +/* Right Modifiers */ +#define PIN_RSHIFT 90 +#define PIN_RCTRL 65 +#define PIN_RALT 49 +#define PIN_FN 55 + +/* Arrow Keys */ +#define PIN_UP 94 +#define PIN_DOWN 97 +#define PIN_LEFT 95 +#define PIN_RIGHT 79 + +/* Fn Column */ +#define PIN_DEL 72 // ┳ TOP +#define PIN_PGUP 75 // ┃ +#define PIN_PGDN 86 // ┃ +#define PIN_END 82 // ┻ BOTTOM + +/* Left Side Underglow */ +#define PIN_LED_L01 67 // ┳ TOP +#define PIN_LED_L02 70 // ┃ +#define PIN_LED_L03 73 // ┃ +#define PIN_LED_L04 76 // ┃ +#define PIN_LED_L05 80 // ┃ +#define PIN_LED_L06 83 // ┃ +#define PIN_LED_L07 87 // ┃ +#define PIN_LED_L08 91 // ┻ BOTTOM + +/* Right Side Underglow */ +#define PIN_LED_L11 68 // ┳ TOP +#define PIN_LED_L12 71 // ┃ +#define PIN_LED_L13 74 // ┃ +#define PIN_LED_L14 77 // ┃ +#define PIN_LED_L15 81 // ┃ +#define PIN_LED_L16 84 // ┃ +#define PIN_LED_L17 88 // ┃ +#define PIN_LED_L18 92 // ┻ BOTTOM + +// clang-format on diff --git a/keyboards/gmmk/pro/ansi/keymaps/mattgauf/readme.md b/keyboards/gmmk/pro/ansi/keymaps/mattgauf/readme.md new file mode 100644 index 000000000000..f388a3fbf1d7 --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/mattgauf/readme.md @@ -0,0 +1,52 @@ +# @mattgauf's GMMK Pro layout + +### `_DEFAULT` +> *Based on the default ansi layout, this keymap contains the following changes to the default layer.* + - Screensaver: `HYPER(F17)` + - `KC_PSCR` → `MG_F17` + - `KC_DEL` → `KC_HOME` + +> *Additionally the encoder will follow new rules when holding a key.* + - `KC_GUI` will cycle through applications (macOS variant) + - `KC_GUI + KC_ALT` will tap the left and right arrows. + - `KC_GUI + KC_SHIFT` will tap Undo and Redo (macOS variant) + +### `_EFFECTS` +> *The function layer is now used for additional layer access, effect keys, and media keys (following the Macbook Pro fn key layout).* + +> *Additionally while effects is active, the encoder will only adjust the brightness of the RGB matrix.* + - The RGB matrix effect and speed keys are located on the right hand vertical nav column. + - `KC_HOME` → `RGB_MOD` + - `KC_PGUP` → `RGB_RMOD` + - `KC_PGDN` → `RGB_SPI` + - `KC_END` → `RGB_SPD` + - The RGB matrix Hue, Saturation keys are mapped to the arrow keys. + - `KC_UP` → `RGB_SAI` + - `KC_DN` → `RGB_SAD` + - `KC_LEFT` → `RGB_HUD` + - `KC_RIGHT` → `RGB_HUI` + - The RGB matrix toggle is intercepted in process_record_user() cycling through the `LED_FLAG` modifiers. (`NONE`, `UNDERGLOW`, `KEYLIGHT`, `ALL`) + - `KC_SLSH` → `RGB_TOG` + - Hibernate: `HYPER(F18)` + - `MG_F17` → `MG_F18` + + +### `_UTILITY` +*The utility layer is currently used for remapping* `KF_F9` *to* `KC_F12` *&* `MG_F17` *to the dynamic macro keys.* + - Playback + - `KC_F9` → `DM_PLY1` + - `KC_F10` → `DM_PLY2` + - Record + - `KC_F11` → `DM_REC1` + - `KC_F12` → `DM_REC2` + - Stop Recording + - `MG_F17` → `DM_RSTP` + +### `_DFUMODE` +> *The final layer is used for resetting the board or triggering an immediate shutdown.* + - DFU Mode + - `KC_ESC` → `RESET` + - Shutdown: `HYPER(F19)` + - `MG_F17` → `MG_F19` + - Encoder press, triggers debug output. + - `KC_MUTE` → `DEBUG` diff --git a/keyboards/gmmk/pro/ansi/keymaps/mattgauf/rules.mk b/keyboards/gmmk/pro/ansi/keymaps/mattgauf/rules.mk new file mode 100644 index 000000000000..76e1674d5848 --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/mattgauf/rules.mk @@ -0,0 +1,6 @@ +# Build rules +LIB_SRC += ansi.c +LIB_SRC += helpers.c + +# Overrides +MOUSEKEY_ENABLE = no # Mouse keys diff --git a/keyboards/gmmk/pro/ansi/keymaps/mike1808/.gitignore b/keyboards/gmmk/pro/ansi/keymaps/mike1808/.gitignore new file mode 100644 index 000000000000..03b2b466681f --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/mike1808/.gitignore @@ -0,0 +1 @@ +secrets.h diff --git a/keyboards/gmmk/pro/ansi/keymaps/mike1808/README.md b/keyboards/gmmk/pro/ansi/keymaps/mike1808/README.md new file mode 100644 index 000000000000..cb17239882b6 --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/mike1808/README.md @@ -0,0 +1,19 @@ +QMK layout for gmmk/pro +======================= + +## Secrets +The format is the same as [drashna's](../../../../users/drashna/readme_secrets.md) secrets implementation. Create a `secret.h` and define your secrets like this: + +```c +static const char* secrets[] = {"secret1", "secret2", "secret3", "secret4", "secret5"}; +``` + +## Rotary encoder knob +You can hookup your encoder functions by defining new encoder states in [encoder.h](./encoder.h), then in [encoder.c](./encoder.c) assign static variable `state` your new state depending on your desired condition and add callbacks to `encoder_mapping` array. + +## RGB Matrix Ledmaps +RGB Matrix ledmaps is the future allowing you assign colors to individual keys on every keymap layer. + +You can see some examples of my usage in the bottom of [keymap.c](./keymap.c). + +Color defines are just HSV colors wrapped in curly braces, like `#define RED { HSV_RED }`. diff --git a/keyboards/gmmk/pro/ansi/keymaps/mike1808/config.h b/keyboards/gmmk/pro/ansi/keymaps/mike1808/config.h new file mode 100644 index 000000000000..46719e3a781b --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/mike1808/config.h @@ -0,0 +1,31 @@ +/* Copyright 2021 Mikael Manukyan + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#define COMBO_COUNT 1 +#define COMBO_TERM 100 + +#define RGB_MATRIX_KEYPRESSES +#define RGB_DISABLE_WHEN_USB_SUSPENDED +#define RGB_DISABLE_TIMEOUT 90000 + +#define MACRO_TIMER 5 + +#define TAPPING_TOGGLE 3 + +#define WPM_SMOOTHING 0.1 + +// this is for macOS so keyboard can work after sleep +#define NO_USB_STARTUP_CHECK diff --git a/keyboards/gmmk/pro/ansi/keymaps/mike1808/encoder.c b/keyboards/gmmk/pro/ansi/keymaps/mike1808/encoder.c new file mode 100644 index 000000000000..049f4df7e4a7 --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/mike1808/encoder.c @@ -0,0 +1,111 @@ +/* Copyright 2021 Mikael Manukyan + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "encoder.h" +#include "mike1808.h" +#include "print.h" +#include "utils.h" +#include "process_record.h" +#include "rgb_matrix_ledmaps.h" + +static uint8_t state = ENCODER_DEFAULT; + +// clang-format off +const encoder_callback encoder_mapping[][2] = { + [ENCODER_VOLUME] = {&volume_up, &volume_down}, +#ifdef RGB_MATRIX_ENABLE + [ENCODER_RGB_HUE] = {&rgb_matrix_increase_hue_noeeprom, &rgb_matrix_decrease_hue_noeeprom}, + [ENCODER_RGB_SAT] = {&rgb_matrix_increase_sat_noeeprom, &rgb_matrix_decrease_sat_noeeprom}, + [ENCODER_RGB_VAL] = {&rgb_matrix_increase_val_noeeprom, &rgb_matrix_decrease_val_noeeprom}, + [ENCODER_RGB_EFFECT] = {&rgb_matrix_step_noeeprom, &rgb_matrix_step_reverse_noeeprom}, + [ENCODER_RGB_EFFECT_SPEED] = {&rgb_matrix_increase_speed_noeeprom, &rgb_matrix_decrease_speed_noeeprom}, +#endif // RGB_MATRIX_ENABLE +}; + +// clang-format on + +void volume_up() { tap_code(KC_VOLU); } + +void volume_down() { tap_code(KC_VOLD); } + +bool encoder_update_user(uint8_t index, bool clockwise) { + dprintf("current encoder state is: %d\n", state); + + if (clockwise) { + (*encoder_mapping[state][0])(); + } else { + (*encoder_mapping[state][1])(); + } + + return true; +} + +void handle_rgb_key(bool pressed) { + dprintf("handle_rgb_key %d\f", pressed); + + if (pressed) { + rgb_matrix_layers_disable(); + } else { + rgb_matrix_layers_enable(); + } +} + +static KeyPressState *rgb_state; + +void keyboard_post_init_encoder() { + rgb_state = NewKeyPressState(handle_rgb_key); +} + +bool process_record_encoder(uint16_t keycode, keyrecord_t *record) { +#ifdef RGB_MATRIX_ENABLE + switch (keycode) { + case KC_RGB_ENC_HUE ... KC_RGB_ENC_EFFECT: + if (record->event.pressed) { +# ifdef RGB_MATRIX_LEDMAPS_ENABLED + // disable layers so we can adjust RGB effects + rgb_state->press(rgb_state); +# endif // RGB_MATRIX_LEDMAPS_ENABLED + + switch (keycode) { + case KC_RGB_ENC_HUE: + state = ENCODER_RGB_HUE; + break; + case KC_RGB_ENC_SAT: + state = ENCODER_RGB_SAT; + break; + case KC_RGB_ENC_VAL: + state = ENCODER_RGB_VAL; + break; + case KC_RGB_ENC_EFFECT_SPEED: + state = ENCODER_RGB_EFFECT_SPEED; + break; + case KC_RGB_ENC_EFFECT: + state = ENCODER_RGB_EFFECT; + break; + } + } else { +# ifdef RGB_MATRIX_LEDMAPS_ENABLED + rgb_state->release(rgb_state); +# endif // RGB_MATRIX_LEDMAPS_ENABLED + state = ENCODER_DEFAULT; + store_rgb_state_to_eeprom(); + } + + return false; + } +#endif // RGB_MATRIX_ENABLE + + return true; +} diff --git a/keyboards/gmmk/pro/ansi/keymaps/mike1808/encoder.h b/keyboards/gmmk/pro/ansi/keymaps/mike1808/encoder.h new file mode 100644 index 000000000000..204922730ec8 --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/mike1808/encoder.h @@ -0,0 +1,35 @@ +/* Copyright 2021 Mikael Manukyan + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +// To add a new functionality define a new state here and then assign +// the handler to the `encoder_callback` +#include "quantum.h" + +enum encoder_state { + ENCODER_VOLUME = 0, + ENCODER_RGB_HUE, + ENCODER_RGB_SAT, + ENCODER_RGB_VAL, + ENCODER_RGB_EFFECT_SPEED, + ENCODER_RGB_EFFECT, +}; + +typedef void (*encoder_callback)(void); + +#define ENCODER_DEFAULT ENCODER_VOLUME + +void volume_up(void); +void volume_down(void); diff --git a/keyboards/gmmk/pro/ansi/keymaps/mike1808/fun.c b/keyboards/gmmk/pro/ansi/keymaps/mike1808/fun.c new file mode 100644 index 000000000000..f553874eb0c8 --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/mike1808/fun.c @@ -0,0 +1,49 @@ +/* Copyright 2021 Mikael Manukyan + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "mike1808.h" +#include "print.h" + +static bool wpm_rgb_enabled = false; +static uint8_t rgb_mode; + +void rgb_matrix_indicators_keymap(void) { + if (wpm_rgb_enabled && rgb_matrix_is_enabled()) { + uint8_t wpm = get_current_wpm(); + dprintf("WPM = %d\n", wpm); + HSV hsv = rgb_matrix_get_hsv(); + hsv.h = wpm; + RGB rgb = hsv_to_rgb(hsv); + rgb_matrix_set_color_all(rgb.r, rgb.g, rgb.b); + } +} + +bool process_record_fun(uint16_t keycode, keyrecord_t *record) { + if (record->event.pressed && keycode == KC_WPM_RGB) { + if (wpm_rgb_enabled) { + wpm_rgb_enabled = false; + rgb_matrix_mode(rgb_mode); + } else { + wpm_rgb_enabled = true; + rgb_mode = rgb_matrix_get_mode(); + rgb_matrix_enable(); + rgb_matrix_mode(RGB_MATRIX_SOLID_COLOR); + } + + return false; + } + + return true; +} diff --git a/keyboards/gmmk/pro/ansi/keymaps/mike1808/keymap.c b/keyboards/gmmk/pro/ansi/keymaps/mike1808/keymap.c new file mode 100644 index 000000000000..30c59e941dd2 --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/mike1808/keymap.c @@ -0,0 +1,127 @@ +/* Copyright 2021 Glorious, LLC , Mikael Manukyan + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "mike1808.h" + +const uint16_t PROGMEM jk_combo[] = {KC_J, KC_K, COMBO_END}; + +combo_t key_combos[COMBO_COUNT] = { + [JK_ESC] = COMBO(jk_combo, KC_ESC), +}; + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute) +// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del +// Tab Q W E R T Y U I O P [ ] \ PgUp +// Caps A S D F G H J K L ; " Enter PgDn +// Sh_L Z X C V B N M , . ? Sh_R Up End +// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right + [LINUX] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_MUTE, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, TT_FN, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [WINDOWS] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [MACOS] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LALT, KC_LGUI, _______, _______, _______, _______, _______, _______, _______ + ), + + [FUNCTIONS] = LAYOUT( + _______, KC_SEC1, KC_SEC2, KC_SEC3, KC_SEC4, KC_SEC5, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_PSCR, _______, + _______, KC_LINX, KC_MAC, KC_WIN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_RST, _______, + KC_CAPS, _______, _______, _______, _______, OS_GIT, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_RGBH, KC_RGBS, KC_RGBV, KC_RGBE, KC_RGBP, KC_WRGB, _______, _______, _______, _______, _______, KC_PGUP, _______, + _______, _______, _______, RGB_TOG, _______, _______, _______, KC_HOME, KC_PGDN, KC_END + ), + + [GIT] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, G_DIFF, _______, _______, _______, _______, _______, _______, G_PULL, G_PUSH, _______, _______, _______, + _______, G_ADD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, G_CHECK, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; + +#ifdef RGB_MATRIX_LEDMAPS_ENABLED + +#define ______ {0, 0, 0} + +const ledmap PROGMEM ledmaps[] = { + // LU = Left Underglow, RU = Right Underglow + // LU_1 ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute) RU_1 + // LU_2 ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del RU_2 + // LU_3 Tab Q W E R T Y U I O P [ ] \ PgUp RU_3 + // LU_4 Caps A S D F G H J K L ; " Enter PgDn RU_4 + // LU_5 Sh_L Z X C V B N M , . ? Sh_R Up End RU_5 + // LU_6 Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right RU_6 + [LINUX] = RGB_MATRIX_LAYOUT_LEDMAP( + PURPLE, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, PURPLE, + PURPLE, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, PURPLE, + PURPLE, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, PURPLE, + PURPLE, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, PURPLE, + PURPLE, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, PURPLE, + PURPLE, ______, RED, ______, ______, ______, ______, ______, ______, ______, ______, PURPLE + ), + [WINDOWS] = RGB_MATRIX_LAYOUT_LEDMAP( + GREEN, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, PURPLE, + GREEN, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, PURPLE, + GREEN, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, PURPLE, + GREEN, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, PURPLE, + GREEN, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, PURPLE, + GREEN, ______, RED, ______, ______, ______, ______, ______, ______, ______, ______, PURPLE + ), + [MACOS] = RGB_MATRIX_LAYOUT_LEDMAP( + YELLOW, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, PURPLE, + YELLOW, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, PURPLE, + YELLOW, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, PURPLE, + YELLOW, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, PURPLE, + YELLOW, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, PURPLE, + YELLOW, ______, ______, RED, ______, ______, ______, ______, ______, ______, ______, PURPLE + ), + + [FUNCTIONS] = RGB_MATRIX_LAYOUT_LEDMAP( + CYAN, GREEN, GREEN, GREEN, GREEN, GREEN, GREEN, ______, ______, ______, ______, GREEN, GREEN, GREEN, GREEN, ______, PURPLE, + CYAN, ______, GOLD, GOLD, GOLD, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, GOLD, PURPLE, + CYAN, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, TEAL, ______, PURPLE, + CYAN, TURQ, ______, ______, ______, ______, TURQ, ______, ______, ______, ______, ______, ______, ______, ______, PURPLE, + CYAN, ______, RED, RED, RED, RED, RED, RED, ______, ______, ______, ______, ______, RED, ______, PURPLE, + CYAN, ______, ______, BLUE, ______, ______, ______, ______, ______, ______, ______, PURPLE + ), +}; + +#endif // RGB_MATRIX_LEDMAPS_ENABLED +// clang-format on diff --git a/keyboards/gmmk/pro/ansi/keymaps/mike1808/mike1808.c b/keyboards/gmmk/pro/ansi/keymaps/mike1808/mike1808.c new file mode 100644 index 000000000000..dda68fda2f8d --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/mike1808/mike1808.c @@ -0,0 +1,68 @@ +/* Copyright 2021 Mikael Manukyan + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "mike1808.h" + +#if (__has_include("secrets.h") && !defined(NO_SECRETS)) +# include "secrets.h" +#else +// `PROGMEM const char secret[][x]` may work better, but it takes up more space in the firmware +// And I'm not familiar enough to know which is better or why... +static const char *const secrets[] = {"test1", "test2", "test3", "test4", "test5"}; +#endif + +// userspace_config_t userspace_config; + +bool process_record_secrets(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_SECRET_1 ... KC_SECRET_5: // Secrets! Externally defined strings, not stored in repo + if (!record->event.pressed) { + clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); + send_string_with_delay(secrets[keycode - KC_SECRET_1], MACRO_TIMER); + } + return false; + break; + } + return true; +} + +void suspend_power_down_user(void) { +#ifdef RGB_MATRIX_ENABLE + rgb_matrix_set_suspend_state(true); +#endif // RGB_MATRIX_ENABLE +} + +void suspend_wakeup_init_user(void) { +#ifdef RGB_MATRIX_ENABLE + rgb_matrix_set_suspend_state(false); +#endif // RGB_MATRIX_ENABLE +} + +#ifdef RGB_MATRIX_ENABLE +void rgb_matrix_indicators_advanced_keymap(uint8_t led_min, uint8_t led_max) { + // Turn on sideglow when CAPS LOCK is activated + if (host_keyboard_led_state().caps_lock) { + HSV hsv = {CAPS_LOCK_COLOR}; + hsv.v = rgb_matrix_get_val(); + RGB rgb = hsv_to_rgb(hsv); + + for (uint8_t i = led_min; i < led_max; i++) { + if (HAS_FLAGS(g_led_config.flags[i], LED_FLAG_UNDERGLOW)) { + RGB_MATRIX_INDICATOR_SET_COLOR(i, rgb.r, rgb.g, rgb.b); + } + } + } +} +#endif // RGB_MATRIX_ENABLE diff --git a/keyboards/gmmk/pro/ansi/keymaps/mike1808/mike1808.h b/keyboards/gmmk/pro/ansi/keymaps/mike1808/mike1808.h new file mode 100644 index 000000000000..bc010108fb28 --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/mike1808/mike1808.h @@ -0,0 +1,111 @@ +/* Copyright 2021 Mikael Manukyan + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once +#include QMK_KEYBOARD_H +#include "rgb_matrix_ledmaps.h" + +enum layout_names { + LINUX = 0, // Base Layout: The main keyboard layout that has all the characters + WINDOWS, // Base ayout for Windows + MACOS, // Base Layout for MacOS + FUNCTIONS, // Function Layout: The function key activated layout with default functions and + // some added ones + GIT, // GIT Layout: GIT shortcuts and macros + SECRETS, // Layer with secrets +}; + +enum custom_keycodes { + KC_CCCV = SAFE_RANGE, // Hold to copy, tap to paste + KC_LINUX, + KC_MAC, + KC_WIN, + + KC_SECRET_1, + KC_SECRET_2, + KC_SECRET_3, + KC_SECRET_4, + KC_SECRET_5, + + KC_RGB_ENC_HUE, + KC_RGB_ENC_SAT, + KC_RGB_ENC_VAL, + KC_RGB_ENC_EFFECT_SPEED, + KC_RGB_ENC_EFFECT, + + KC_WPM_RGB, +}; + +enum git_macros { + // The start of this enum should always be equal to end of ctrl_keycodes + 1 + G_INIT = KC_WPM_RGB + 1, // git init + G_CLONE, // git clone + G_CONF, // git config --global + G_ADD, // git add + G_DIFF, // git diff + G_RESET, // git reset + G_REBAS, // git rebase + G_BRANH, // git branch + G_CHECK, // git checkout + G_MERGE, // git merge + G_REMTE, // git remote add + G_FETCH, // git fetch + G_PULL, // git pull + G_PUSH, // git push + G_COMM, // git commit + G_STAT, // git status + G_LOG, // git log + NEW_SAFE_RANGE, +}; + +enum combos { + JK_ESC, // jk to ESC for Vim +}; + +#define KC_SEC1 KC_SECRET_1 +#define KC_SEC2 KC_SECRET_2 +#define KC_SEC3 KC_SECRET_3 +#define KC_SEC4 KC_SECRET_4 +#define KC_SEC5 KC_SECRET_5 + +#define KC_RGBH KC_RGB_ENC_HUE +#define KC_RGBS KC_RGB_ENC_SAT +#define KC_RGBV KC_RGB_ENC_VAL +#define KC_RGBE KC_RGB_ENC_EFFECT +#define KC_RGBP KC_RGB_ENC_EFFECT_SPEED + +#define KC_WRGB KC_WPM_RGB + +#define KC_LINX KC_LINUX + +#define KC_RESET RESET +#define KC_RST KC_RESET + +#define OS_GIT OSL(GIT) +#define TT_FN TT(FUNCTIONS) + +#define OS_LGUI OSM(MOD_LGUI) +#define OS_RGUI OSM(MOD_RGUI) +#define OS_LSFT OSM(MOD_LSFT) +#define OS_RSFT OSM(MOD_RSFT) +#define OS_LCTL OSM(MOD_LCTL) +#define OS_RCTL OSM(MOD_RCTL) +#define OS_LALT OSM(MOD_LALT) +#define OS_RALT OSM(MOD_RALT) +#define OS_MEH OSM(MOD_MEH) +#define OS_HYPR OSM(MOD_HYPR) + +#define CAPS_LOCK_COLOR HSV_RED + diff --git a/keyboards/gmmk/pro/ansi/keymaps/mike1808/process_record.c b/keyboards/gmmk/pro/ansi/keymaps/mike1808/process_record.c new file mode 100644 index 000000000000..ac0164e73f9b --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/mike1808/process_record.c @@ -0,0 +1,119 @@ +/* Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) , + Mikael Manukyan + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "mike1808.h" +#include "print.h" +#include "process_record.h" + +uint16_t copy_paste_timer; + +__attribute__((weak)) bool process_record_secrets(uint16_t keycode, keyrecord_t *record) { + return true; +} +__attribute__((weak)) bool process_record_encoder(uint16_t keycode, keyrecord_t *record) { + return true; +} +__attribute__((weak)) bool process_record_fun(uint16_t keycode, keyrecord_t *record) { + return true; +} + +__attribute__((weak)) void keyboard_post_init_encoder(void) { return; } + +static const char *git_commands[] = { + "git init ", "git clone ", "git config --global ", "git add ", + "git diff ", "git reset ", "git rebase ", "git branch -b \"", + "git checkout ", "git merge ", "git remote add ", "git fetch ", + "git pull ", "git push ", "git commit ", "git status ", + "git log ", +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + // If console is enabled, it will print the matrix position and status of each key pressed +#ifdef KEYLOGGER_ENABLE + uprintf("KL: kc: 0x%04X, col: %2u, row: %2u, pressed: %b, time: %5u, int: %b, count: %u\n", + keycode, record->event.key.col, record->event.key.row, record->event.pressed, + record->event.time, record->tap.interrupted, record->tap.count); +#endif // KEYLOGGER_ENABLE + switch (keycode) { + case KC_LINUX ... KC_WIN: + if (record->event.pressed) { + dprintf("set_single_persistent_default_layer %d\n", keycode - KC_LINUX + LINUX); + set_single_persistent_default_layer(keycode - KC_LINUX + LINUX); + return false; + } + + break; + + case KC_CCCV: // One key copy/paste + if (record->event.pressed) { + copy_paste_timer = timer_read(); + } else { + if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) { // Hold, copy + if (layer_state_is(MACOS)) { + tap_code16(LGUI(KC_C)); + } else { + tap_code16(LCTL(KC_C)); + } + } else { // Tap, paste + if (layer_state_is(MACOS)) { + tap_code16(LGUI(KC_V)); + } else { + tap_code16(LCTL(KC_V)); + } + } + } + break; + + case G_INIT ... G_LOG: + if (record->event.pressed) { + clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); + send_string_with_delay(git_commands[keycode - G_INIT], MACRO_TIMER); + return false; + } + break; +#ifdef RGB_MATRIX_ENABLE + case RGB_TOG: + if (record->event.pressed) { + switch (rgb_matrix_get_flags()) { + case LED_FLAG_ALL: { + rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER); + rgb_matrix_set_color_all(0, 0, 0); + } break; + case LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER: { + rgb_matrix_set_flags(LED_FLAG_UNDERGLOW); + rgb_matrix_set_color_all(0, 0, 0); + } break; + case LED_FLAG_UNDERGLOW: { + // This line is for LED idle timer. It disables the toggle so you can turn + // off LED completely if you like + rgb_matrix_set_flags(LED_FLAG_NONE); + rgb_matrix_disable(); + } break; + default: { + rgb_matrix_set_flags(LED_FLAG_ALL); + rgb_matrix_enable(); + } break; + } + } + return false; +#endif // RGB_MATRIX_ENABLE + } + + return process_record_encoder(keycode, record) && process_record_secrets(keycode, record) && + process_record_fun(keycode, record); +} + +void keyboard_post_init_user() { keyboard_post_init_encoder(); } diff --git a/keyboards/gmmk/pro/ansi/keymaps/mike1808/process_record.h b/keyboards/gmmk/pro/ansi/keymaps/mike1808/process_record.h new file mode 100644 index 000000000000..10217516551b --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/mike1808/process_record.h @@ -0,0 +1,26 @@ +/* Copyright 2021 Mikael Manukyan + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once +#include "mike1808.h" + + +bool process_record_secrets(uint16_t keycode, keyrecord_t *record); + +bool process_record_encoder(uint16_t keycode, keyrecord_t *record); + +bool process_record_fun(uint16_t keycode, keyrecord_t *record); + +void keyboard_post_init_encoder(void); diff --git a/keyboards/gmmk/pro/ansi/keymaps/mike1808/rgb_matrix_ledmaps.c b/keyboards/gmmk/pro/ansi/keymaps/mike1808/rgb_matrix_ledmaps.c new file mode 100644 index 000000000000..6f4d333ede3a --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/mike1808/rgb_matrix_ledmaps.c @@ -0,0 +1,71 @@ +/* Copyright 2021 Mikael Manukyan + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "rgb_matrix_ledmaps.h" + +__attribute__((weak)) void rgb_matrix_indicators_keymap(void) { return; } +__attribute__((weak)) void rgb_matrix_indicators_advanced_keymap(uint8_t led_min, uint8_t led_max) { + return; +} + +#ifdef RGB_MATRIX_LEDMAPS_ENABLED + +static bool enabled = true; + +#endif // RGB_MATRIX_LEDMAPS_ENABLED + +void rgb_matrix_indicators_user(void) { rgb_matrix_indicators_keymap(); } +void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { +#ifdef RGB_MATRIX_LEDMAPS_ENABLED + if (rgb_matrix_is_enabled() && enabled) { + set_layer_rgb(led_min, led_max, get_highest_layer(layer_state | default_layer_state)); + } + +#endif // RGB_MATRIX_LEDMAPS_ENABLED + rgb_matrix_indicators_advanced_keymap(led_min, led_max); +} + +#ifdef RGB_MATRIX_LEDMAPS_ENABLED + +void set_layer_rgb(uint8_t led_min, uint8_t led_max, int layer) { + const ledmap *l = &(ledmaps[layer]); + + uint8_t val = rgb_matrix_get_val(); + + for (int i = 0; i < DRIVER_LED_TOTAL; i++) { + HSV hsv = { + .h = (*l)[i][0], + .s = (*l)[i][1], + .v = val, + }; + + if (hsv.h || hsv.s) { + RGB rgb = hsv_to_rgb(hsv); + RGB_MATRIX_INDICATOR_SET_COLOR(i, rgb.r, rgb.g, rgb.b); + } + } +} + +void rgb_matrix_layers_enable() { + dprintf("ledmaps are enabled\n"); + enabled = true; +} + +void rgb_matrix_layers_disable() { + dprintf("ledmaps are disabled\n"); + enabled = false; +} + +#endif // RGB_MATRIX_LEDMAPS_ENABLED diff --git a/keyboards/gmmk/pro/ansi/keymaps/mike1808/rgb_matrix_ledmaps.h b/keyboards/gmmk/pro/ansi/keymaps/mike1808/rgb_matrix_ledmaps.h new file mode 100644 index 000000000000..eace217d1876 --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/mike1808/rgb_matrix_ledmaps.h @@ -0,0 +1,100 @@ +/* Copyright 2021 Mikael Manukyan + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#ifdef RGB_MATRIX_LEDMAPS_ENABLED + +// no association keycode +# define XXX \ + { 0, 0, 0 } + +// clang-format off +# define RGB_MATRIX_LAYOUT_LEDMAP( \ + ul1, k13, k26, k36, k31, k33, k07, k63, k71, k76, ka6, ka7, ka3, ka5, k97, k01, ur1, \ + ul2, k16, k17, k27, k37, k47, k46, k56, k57, k67, k77, k87, k86, k66, ka1, k65, ur2, \ + ul3, k11, k10, k20, k30, k40, k41, k51, k50, k60, k70, k80, k81, k61, ka2, k15, ur3, \ + ul4, k21, k12, k22, k32, k42, k43, k53, k52, k62, k72, k82, k83, ka4, k25, ur4, \ + ul5, k00, k14, k24, k34, k44, k45, k55, k54, k64, k74, k85, k91, k35, k75, ur5, \ + ul6, k06, k90, k93, k94, k95, k92, k04, k03, k73, k05, ur6 \ + ) \ + { \ + k13, k16, k11, k21, k00, k06, k26, k17, \ + k10, k12, k14, k90, k36, k27, k20, k22, \ + k24, k93, k31, k37, k30, k32, k34, k33, \ + k47, k40, k42, k44, k07, k46, k41, k43, \ + k45, k94, k63, k56, k51, k53, k55, k71, \ + k57, k50, k52, k54, k76, k67, k60, k62, \ + k64, k95, ka6, k77, k70, k72, k74, k92, \ + ka7, k87, k80, k82, k85, ka3, k86, k81, \ + k83, k04, ka5, ul1, ur1, k97, ul2, ur2, \ + k65, ul2, ur2, k15, ul3, ur3, k66, k05, \ + ul3, ur3, k75, ul4, ur4, ka1, k25, ul5, \ + ur5, k61, k91, ul6, ur6, ka2, k35, k03, \ + ka4, k73 \ + } +// clang-format on +typedef uint8_t ledmap[DRIVER_LED_TOTAL][3]; +extern const ledmap ledmaps[]; + +void set_layer_rgb(uint8_t led_min, uint8_t led_max, int layer); + +void rgb_matrix_layers_enable(void); +void rgb_matrix_layers_disable(void); + +// Just a handy defines to make our ledmaps look better +# define RED \ + { HSV_RED } +# define CORAL \ + { HSV_CORAL } +# define ORANGE \ + { HSV_ORANGE } +# define GOLDEN \ + { HSV_GOLDENROD } +# define GOLD \ + { HSV_GOLD } +# define YELLOW \ + { HSV_YELLOW } +# define CHART \ + { HSV_CHARTREUSE } +# define GREEN \ + { HSV_GREEN } +# define SPRING \ + { HSV_SPRINGGREEN } +# define TURQ \ + { HSV_TURQUOISE } +# define TEAL \ + { HSV_TEAL } +# define CYAN \ + { HSV_CYAN } +# define AZURE \ + { HSV_AZURE } +# define BLUE \ + { HSV_BLUE } +# define PURPLE \ + { HSV_PURPLE } +# define MAGENT \ + { HSV_MAGENTA } +# define PINK \ + { HSV_PINK } +# define BLACK \ + { HSV_BLACK } + +#endif // RGB_MATRIX_LEDMAPS_ENABLED + +void rgb_matrix_indicators_keymap(void); +void rgb_matrix_indicators_advanced_keymap(uint8_t led_min, uint8_t led_max); diff --git a/keyboards/gmmk/pro/ansi/keymaps/mike1808/rules.mk b/keyboards/gmmk/pro/ansi/keymaps/mike1808/rules.mk new file mode 100644 index 000000000000..a6d4e6259c52 --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/mike1808/rules.mk @@ -0,0 +1,25 @@ +VIA_ENABLE = no + +COMBO_ENABLE = yes +COMMAND_ENABLE = yes +RGB_MATRIX_ENABLE = yes +RAW_ENABLE = no +CONSOLE_ENABLE = yes + +WPM_ENABLE = no + +RGB_MATRIX_LEDMAPS = yes + +SRC += utils.c +SRC += mike1808.c +SRC += process_record.c +SRC += encoder.c + +ifeq ($(strip $(WPM_ENABLE)), yes) + SRC += fun.c +endif + +ifeq ($(strip $(RGB_MATRIX_LEDMAPS)), yes) + SRC += rgb_matrix_ledmaps.c + OPT_DEFS += -DRGB_MATRIX_LEDMAPS_ENABLED +endif diff --git a/keyboards/gmmk/pro/ansi/keymaps/mike1808/utils.c b/keyboards/gmmk/pro/ansi/keymaps/mike1808/utils.c new file mode 100644 index 000000000000..35ae20b126c5 --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/mike1808/utils.c @@ -0,0 +1,64 @@ +/* Copyright 2021 Mikael Manukyan + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "utils.h" + +void store_rgb_state_to_eeprom() { + uint8_t mode = rgb_matrix_get_mode(); + uint8_t speed = rgb_matrix_get_speed(); + HSV color = rgb_matrix_get_hsv(); + + rgb_matrix_mode(mode); + rgb_matrix_set_speed(speed); + rgb_matrix_sethsv(color.h, color.s, color.v); +} + +void press(KeyPressState *self) { + self->_count++; + + dprintf("KPS: press: %d\n", self->_count); + + // pressed the first time + if (self->_count == 1) { + self->hander(true); + } +} + +void release(KeyPressState *self) { + self->_count--; + + dprintf("KPS: release: %d\n", self->_count); + + // all keys are relased + if (self->_count == 0) { + self->hander(false); + } +} + +void reset(KeyPressState *self) { + self->_count = 0; +} + +KeyPressState *NewKeyPressState(key_press_handler handler) { + KeyPressState *kps = (KeyPressState *)(malloc(sizeof(KeyPressState))); + + kps->_count = 0; + kps->press = press; + kps->release = release; + kps->reset = reset; + kps->hander = handler; + + return kps; +} diff --git a/keyboards/gmmk/pro/ansi/keymaps/mike1808/utils.h b/keyboards/gmmk/pro/ansi/keymaps/mike1808/utils.h new file mode 100644 index 000000000000..49d0745cf87b --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/mike1808/utils.h @@ -0,0 +1,32 @@ +/* Copyright 2021 Mikael Manukyan + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once +#include "quantum.h" + +void store_rgb_state_to_eeprom(void); + +typedef void (*key_press_handler)(bool); + +typedef struct KeyPressState KeyPressState; +struct KeyPressState { + int _count; + void (*press)(KeyPressState *self); + void (*release)(KeyPressState *self); + void (*reset)(KeyPressState *self); + key_press_handler hander; +}; + +KeyPressState *NewKeyPressState(key_press_handler); diff --git a/keyboards/gmmk/pro/ansi/keymaps/paddlegame/config.h b/keyboards/gmmk/pro/ansi/keymaps/paddlegame/config.h new file mode 100644 index 000000000000..4f83c6af1f35 --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/paddlegame/config.h @@ -0,0 +1,24 @@ +/* Copyright 2021 Tomas Guinan + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#ifdef RGB_MATRIX_ENABLE + #define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR +# define RGB_DISABLE_WHEN_USB_SUSPENDED +#endif + +#define FORCE_NKRO diff --git a/keyboards/gmmk/pro/ansi/keymaps/paddlegame/keymap.c b/keyboards/gmmk/pro/ansi/keymaps/paddlegame/keymap.c new file mode 100644 index 000000000000..5c702b168678 --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/paddlegame/keymap.c @@ -0,0 +1,471 @@ +/* Copyright 2021 Glorious, LLC + Copyright 2021 Tomas Guinan + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H +#include "rgb_matrix_map.h" +#include "paddlegame.h" +#include + +enum custom_layers { + _BASE, + _FN1, + _MO2, + _MO3, +}; + +enum custom_keycodes { + KC_00 = SAFE_RANGE, + KC_WINLK, //Toggles Win key on and off +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_00: + if (record->event.pressed) { + // when keycode KC_00 is pressed + SEND_STRING("00"); + } else { + // when keycode KC_00 is released + } + break; + + case KC_WINLK: + if (record->event.pressed) { + if(!keymap_config.no_gui) { + process_magic(GUI_OFF, record); + } else { + process_magic(GUI_ON, record); + } + } else unregister_code16(keycode); + break; + } + return true; +}; + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Del Rotary(Mute) +// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Home +// Tab Q W E R T Y U I O P [ ] \ PgUp +// Caps A S D F G H J K L ; " Enter PgDn +// Sh_L Z X C V B N M , . ? Sh_R Up End +// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right + + + [_BASE] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_MUTE, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_FN1] = LAYOUT( + KC_SLEP, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_INS, _______, + RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_HUI, _______, RGB_M_P, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TO(_MO2), RGB_SAD, RGB_SAI, RESET, RGB_M_B, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD, RGB_MOD, _______, RGB_M_R, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, RGB_M_SW, + _______, KC_WINLK, _______, _______, _______, _______, _______, RGB_SPD, RGB_VAD, RGB_SPI + ), + + [_MO2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, TG(_MO2), _______, _______, _______, _______ + ), + + [_MO3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; + +#ifdef ENCODER_ENABLE // Encoder Functionality + + bool encoder_update_user(uint8_t index, bool clockwise) { + + switch(get_highest_layer(layer_state)) { + case _FN1: + if ( clockwise ) { + tap_code16(KC_PGDN); + } else { + tap_code16(KC_PGUP); + } + break; + + case _MO2: + // Game: Paddle movement + if (damage_count == 0) { + if ( clockwise ) { + if (paddle_pos_full < 15) ++paddle_pos_full; + } else { + if (paddle_pos_full > 0) --paddle_pos_full; + } + } + break; + + case _BASE: + default: + if ( clockwise ) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + break; + } + return true; + } +#endif + +#ifdef RGB_MATRIX_ENABLE + void init_ball(uint8_t i) { + i &= 1; + ball[i].on = true; + ball[i].up = false; + ball[i].y = 0; + ball[i].x = rand() % 16; + + // Set initial ball state + if (ball[i].x < 8) { + ball[i].left = false; + } else { + ball[i].x -= 4; + ball[i].left = true; + } + + // 1/4 chance of being an enemy ball after level 6 + if (level_number > 3) { + ball[i].enemy = ((rand() % 4) == 0); + } else { + ball[i].enemy = false; + } + } + + void hurt_paddle(void) { + if (paddle_lives > 0) { + --paddle_lives; + } + damage_timer = timer_read(); + damage_count = 10; + + // Reset board + init_ball(0); + ball[1].on = false; + } + + // Capslock, Scroll lock and Numlock indicator on Left side lights. + void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { + switch(get_highest_layer(layer_state)) { + case _FN1: + // Light up FN layer keys + if (!fn_active) { + fn_active = true; + rgb_value.r = 0xff; + rgb_value.g = 0x00; + rgb_value.b = 0x00; + } + + if (rgb_value.r == 0xff && rgb_value.g < 0xff) { + if (rgb_value.b > 0) { --rgb_value.b; } + else { ++rgb_value.g; } + } else if (rgb_value.g == 0xff && rgb_value.b < 0xff) { + if (rgb_value.r > 0) { --rgb_value.r; } + else { ++rgb_value.b; } + } else if (rgb_value.b == 0xff && rgb_value.r < 0xff) { + if (rgb_value.g > 0) { --rgb_value.g; } + else { ++rgb_value.r; } + } + + for (uint8_t i=0; i> 1; + + if (damage_count > 0) { + // Flash paddle when receiving damage + if (timer_elapsed(damage_timer) > 500) { + --damage_count; + damage_timer = timer_read(); + } + if ((damage_count & 1) == 0) { + for (uint8_t i=0; i < 3 ; i++) { + rgb_matrix_set_color(GAME_PADDLE[paddle_pos + i], RGB_RED); + } + } + if (damage_count == 0) { + ball_timer = timer_read(); + } + + + } else if (paddle_lives == 0) { + // Game over + for (uint8_t i=0; i= 12) { + // You win + if (rgb_value.r == 0xff && rgb_value.g < 0xff) { + if (rgb_value.b > 0) { --rgb_value.b; } + else { ++rgb_value.g; } + } else if (rgb_value.g == 0xff && rgb_value.b < 0xff) { + if (rgb_value.r > 0) { --rgb_value.r; } + else { ++rgb_value.b; } + } else if (rgb_value.b == 0xff && rgb_value.r < 0xff) { + if (rgb_value.g > 0) { --rgb_value.g; } + else { ++rgb_value.r; } + } + + for (uint8_t i=0; i < 3 ; i++) { + rgb_matrix_set_color(GAME_PADDLE[paddle_pos + i], rgb_value.r, rgb_value.g, rgb_value.b); + } + rgb_matrix_set_color(GAME_SMILE1[paddle_pos], rgb_value.r, rgb_value.g, rgb_value.b); + rgb_matrix_set_color(GAME_SMILE1[paddle_pos + 3], rgb_value.r, rgb_value.g, rgb_value.b); + rgb_matrix_set_color(GAME_SMILE2[paddle_pos], rgb_value.r, rgb_value.g, rgb_value.b); + rgb_matrix_set_color(GAME_SMILE2[paddle_pos + 3], rgb_value.r, rgb_value.g, rgb_value.b); + + } else { + // normal game loop + + // Set paddle position + for (uint8_t i=0; i < 3 ; i++) { + rgb_matrix_set_color(GAME_PADDLE[paddle_pos + i], RGB_GREEN); + } + + // Ball movement logic happens at intervals + if (timer_elapsed(ball_timer) > GAME_TIMER[level_number]) { + for (int i=0; i<2; ++i) { + if (ball[i].on) { + // Ball movement + if (ball[i].up) { + if (ball[i].y > 0) { + --ball[i].y; + if (!ball[i].left) ++ball[i].x; + } else { + // Count reflections. If > 10, increase level + ++bounce_count; + if (bounce_count >= 10) { + bounce_count = 0; + ++level_number; + } + ball[i].on = false; + } + } else { + ++ball[i].y; + if (ball[i].left) --ball[i].x; + if (ball[i].y > 4) { + // Remove a life if ball isn't returned and isn't enemy + if (!ball[i].enemy) { + hurt_paddle(); + i = 2; + } else { + ball[i].on = false; + } + } + } + } + } + if (ball[0].y == 4 && !ball[1].on) { + init_ball(1); + } + if (ball[1].y == 4 && !ball[0].on) { + init_ball(0); + } + if (!ball[0].on && !ball[1].on) { + init_ball(0); + } + ball_timer = timer_read(); + } + + // Other ball stuff + for (int i=0; i<2; ++i) { + if (ball[i].on) { + // Ball deflection logic + if (!ball[i].up && ball[i].y == 4 && (ball[i].x == paddle_pos || ball[i].x == paddle_pos - 1 || ball[i].x == paddle_pos + 1)) { + if (!ball[i].enemy) { + --ball[i].y; + if (!ball[i].left) { ++ball[i].x; } + ball[i].up = true; + } else { + hurt_paddle(); + i = 2; + } + } + + // Ball display + switch (ball[i].y) { + case 0: + if (ball[i].enemy) { + rgb_matrix_set_color(GAME_R0[ball[i].x], RGB_RED); + } else { + rgb_matrix_set_color(GAME_R0[ball[i].x], RGB_WHITE); + } + break; + + case 1: + if (ball[i].enemy) { + rgb_matrix_set_color(GAME_R1[ball[i].x], RGB_RED); + } else { + rgb_matrix_set_color(GAME_R1[ball[i].x], RGB_WHITE); + } + break; + + case 2: + if (ball[i].enemy) { + rgb_matrix_set_color(GAME_R2[ball[i].x], RGB_RED); + } else { + rgb_matrix_set_color(GAME_R2[ball[i].x], RGB_WHITE); + } + break; + + case 3: + if (ball[i].enemy) { + rgb_matrix_set_color(GAME_R3[ball[i].x], RGB_RED); + } else { + rgb_matrix_set_color(GAME_R3[ball[i].x], RGB_WHITE); + } + break; + + case 4: + if (ball[i].enemy) { + rgb_matrix_set_color(GAME_R4[ball[i].x], RGB_RED); + } else { + rgb_matrix_set_color(GAME_R4[ball[i].x], RGB_WHITE); + } + break; + } + } + } + } + + + break; + + default: + fn_active = false; + if (game_start) { + // Reset lighting settings + game_start = false; + rgb_matrix_sethsv_noeeprom(last_hsv.h, last_hsv.s, last_hsv.v); + } + break; + } + + if (IS_HOST_LED_ON(USB_LED_CAPS_LOCK)) { + if (!caps_active) { + caps_active = true; + caps_flash_on = true; + caps_flasher = timer_read(); + } + if (timer_elapsed(caps_flasher) > 500) { + caps_flasher = timer_read(); + caps_flash_on = !caps_flash_on; + } + + rgb_matrix_set_color(LED_CAPS, RGB_WHITE); + if (caps_flash_on) { + for (uint8_t i=0; i + Copyright 2021 Tomas Guinan + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + + +const uint16_t GAME_TIMER[] = { + 400, 350, 300, 250, 400, 350, 300, 250, 225, 200, 175, 150 +}; + +bool game_start = false; +HSV last_hsv; +static uint8_t paddle_pos_full; +static uint8_t paddle_lives; +static uint8_t level_number; +static uint8_t bounce_count; +static uint8_t damage_count; +static uint16_t damage_timer; +static uint16_t ball_timer; + +struct BallStruct +{ + uint8_t x; + uint8_t y; + bool on; + bool up; + bool left; + bool enemy; +}; + +struct BallStruct ball[2]; + +void init_ball(uint8_t i); +void hurt_paddle(void); \ No newline at end of file diff --git a/keyboards/gmmk/pro/ansi/keymaps/paddlegame/readme.md b/keyboards/gmmk/pro/ansi/keymaps/paddlegame/readme.md new file mode 100644 index 000000000000..c6da7f5f47f6 --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/paddlegame/readme.md @@ -0,0 +1,18 @@ +![GMMK Pro Paddle Game zLayout Image](https://i.imgur.com/RYcKyOj.png) + +# Paddle Game GMMK Pro layout by Tomas Guinan + +- Add Print Screen, Scroll Lock, Pause/Break, Insert to Fn layer +- Toggle backlight using Fn+` + - If you don't like using a backlight but wnat to play the paddle game or + use other RGB features, turn RGB on and set brightness to 0 +- Usable Fn layer keys are backlit +- Implement Win key lock using Fn+Win like in Glorious Core firmware +- Caps Lock and Scroll Lock keys light up white when active +- Caps Lock has red flashing side lights like in Glorious Core firmware +- Layer 2 includes Paddle Game, playable by pressing Fn+P + - Use rotary encoder to control paddle + - Contains 12 levels, indicated by blue LED on F row + - Player has 4 lives, indicated by nav cluster + - Deflect white balls while avoiding red ones + - Press Fn to quit game diff --git a/keyboards/gmmk/pro/ansi/keymaps/paddlegame/rgb_matrix_map.h b/keyboards/gmmk/pro/ansi/keymaps/paddlegame/rgb_matrix_map.h new file mode 100644 index 000000000000..06d34ba6cb17 --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/paddlegame/rgb_matrix_map.h @@ -0,0 +1,181 @@ +/* Copyright 2021 Tomas Guinan + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + +#ifdef RGB_MATRIX_ENABLE + + bool fn_active = false; + bool caps_active = false; + bool caps_flash_on = false; + + static uint16_t caps_flasher = 0; + RGB rgb_value; + + // RGB LED locations + enum led_location_map { + LED_ESC, // 0, ESC, k13 + LED_GRV, // 1, ~, k16 + LEB_TAB, // 2, Tab, k11 + LED_CAPS, // 3, Caps, k21 + LED_LSFT, // 4, Sh_L, k00 + LED_LCTL, // 5, Ct_L, k06 + LED_F1, // 6, F1, k26 + LED_1, // 7, 1, k17 + LED_Q, // 8, Q, k10 + LED_A, // 9, A, k12 + LED_Z, // 10, Z, k14 + LED_LWIN, // 11, Win_L, k90 + LED_F2, // 12, F2, k36 + LED_2, // 13, 2, k27 + LED_W, // 14, W, k20 + LED_S, // 15, S, k22 + LED_X, // 16, X, k24 + LED_LALT, // 17, Alt_L, k93 + LED_F3, // 18, F3, k31 + LED_3, // 19, 3, k37 + LED_E, // 20, E, k30 + LED_D, // 21, D, k32 + LED_C, // 22, C, k34 + LED_F4, // 23, F4, k33 + LED_4, // 24, 4, k47 + LED_R, // 25, R, k40 + LED_F, // 26, F, k42 + LED_V, // 27, V, k44 + LED_F5, // 28, F5, k07 + LED_5, // 29, 5, k46 + LED_T, // 30, T, k41 + LED_G, // 31, G, k43 + LED_B, // 32, B, k45 + LED_SPC, // 33, SPACE, k94 + LED_F6, // 34, F6, k63 + LED_6, // 35, 6, k56 + LED_Y, // 36, Y, k51 + LED_H, // 37, H, k53 + LED_N, // 38, N, k55 + LED_F7, // 39, F7, k71 + LED_7, // 40, 7, k57 + LED_U, // 41, U, k50 + LED_J, // 42, J, k52 + LED_M, // 43, M, k54 + LED_F8, // 44, F8, k76 + LED_8, // 45, 8, k67 + LED_I, // 46, I, k60 + LED_K, // 47, K, k62 + LED_COMM, // 48, ,, k64 + LED_RALT, // 49, Alt_R, k95 + LED_F9, // 50, F9, ka6 + LED_9, // 51, 9, k77 + LED_O, // 52, O, k70 + LED_L, // 53, L, k72 + LED_DOT, // 54, ., k74 + LED_FN, // 55, FN, k92 + LED_F10, // 56, F10, ka7 + LED_0, // 57, 0, k87 + LED_P, // 58, P, k80 + LED_SCLN, // 59, ;, k82 + LED_SLSH, // 60, ?, k85 + LED_F11, // 61, F11, ka3 + LED_MINS, // 62, -, k86 + LED_LBRC, // 63, [, k81 + LED_QUOT, // 64, ", k83 + LED_RCTL, // 65, Ct_R, k04 + LED_F12, // 66, F12, ka5 + LED_L1, // 67, LED, l01 + LED_R1, // 68, LED, l11 + LED_DEL, // 69, Del, k97 + LED_L2, // 70, LED, l02 + LED_R2, // 71, LED, l12 + LED_HOME, // 72, Home, k65 + LED_L3, // 73, LED, l03 + LED_R3, // 74, LED, l13 + LED_PGUP, // 75, PgUp, k15 + LED_L4, // 76, LED, l04 + LED_R4, // 77, LED, l14 + LED_EQL, // 78, =, k66 + LED_RIGHT, // 79, Right, k05 + LED_L5, // 80, LED, l05 + LED_R5, // 81, LED, l15 + LED_END, // 82, End, k75 + LED_L6, // 83, LED, l06 + LED_R6, // 84, LED, l16 + LED_BSPC, // 85, BSpc, ka1 + LED_PGDN, // 86, PgDn, k25 + LED_L7, // 87, LED, l07 + LED_R7, // 88, LED, l17 + LED_RBRC, // 89, ], k61 + LED_RSFT, // 90, Sh_R, k91 + LED_L8, // 91, LED, l08 + LED_R8, // 92, LED, l18 + LED_BSLS, // 93, \, ka2 + LED_UP, // 94, Up, k35 + LED_LEFT, // 95, Left, k03 + LED_ENT, // 96, Enter, ka4 + LED_DOWN // 97, Down, k73 + }; + + const uint8_t LED_RGB[] = { + LED_MINS, LED_EQL, + LED_LBRC, LED_RBRC, + LED_SCLN, LED_QUOT, + LED_HOME, LED_PGUP, LED_PGDN, LED_END, + LED_UP, LED_DOWN, LED_LEFT, LED_RIGHT + }; + + const uint8_t LED_GREEN[] = { + LED_F1, LED_F2, LED_F3, LED_F4, + LED_F5, LED_F6, LED_F7, LED_F8 + }; + + const uint8_t LED_WHITE[] = { + LED_F9, LED_F10, LED_F11, LED_DEL + }; + + const uint8_t LED_SIDE_LEFT[] = { LED_L1, LED_L2, LED_L3, LED_L4, LED_L5, LED_L6, LED_L7, LED_L8}; + + const uint8_t LED_SIDE_RIGHT[] = { LED_R1, LED_R2, LED_R3, LED_R4, LED_R5, LED_R6, LED_R7, LED_R8}; + + // Breakout LED rules + + const uint8_t GAME_LIVES[] = { LED_HOME, LED_PGUP, LED_PGDN, LED_END }; + const uint8_t GAME_PADDLE[] = { + LED_Z, LED_X, LED_C, LED_V, LED_B, LED_N, LED_M, LED_COMM, LED_DOT, LED_SLSH + }; + const uint8_t GAME_SMILE1[] = { + LED_A, LED_S, LED_D, LED_F, LED_G, LED_H, LED_J, LED_K, LED_L, LED_SCLN, LED_QUOT + }; + const uint8_t GAME_SMILE2[] = { + LED_2, LED_3, LED_4, LED_5, LED_6, LED_7, LED_8, LED_9, LED_0, LED_MINS, LED_EQL + }; + const uint8_t GAME_R4[] = { + LED_X, LED_C, LED_V, LED_B, LED_N, LED_M, LED_COMM, LED_DOT + }; + const uint8_t GAME_R3[] = { + LED_S, LED_D, LED_F, LED_G, LED_H, LED_J, LED_K, LED_L, LED_SCLN + }; + const uint8_t GAME_R2[] = { + LED_W, LED_E, LED_R, LED_T, LED_Y, LED_U, LED_I, LED_O, LED_P, LED_LBRC + }; + const uint8_t GAME_R1[] = { + LED_2, LED_3, LED_4, LED_5, LED_6, LED_7, LED_8, LED_9, LED_0, LED_MINS, LED_EQL + }; + const uint8_t GAME_R0[] = { + LED_F1, LED_F2, LED_F3, LED_F4, LED_F5, LED_F6, LED_F7, LED_F8, LED_F9, LED_F10, LED_F11, LED_F12 + }; + + const uint8_t LED_GAME_OVER[] = { LED_5, LED_8, LED_F, LED_G, LED_H, LED_J, LED_C, LED_M }; + + +#endif \ No newline at end of file diff --git a/keyboards/gmmk/pro/ansi/keymaps/paddlegame/rules.mk b/keyboards/gmmk/pro/ansi/keymaps/paddlegame/rules.mk new file mode 100644 index 000000000000..a3f5bfd35c0e --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/paddlegame/rules.mk @@ -0,0 +1,4 @@ +MOUSEKEY_ENABLE = no +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +RGB_MATRIX_ENABLE = yes +ENCODER_ENABLE = yes diff --git a/keyboards/gmmk/pro/ansi/keymaps/stickandgum/config.h b/keyboards/gmmk/pro/ansi/keymaps/stickandgum/config.h new file mode 100644 index 000000000000..78ff96f8b70e --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/stickandgum/config.h @@ -0,0 +1,75 @@ +/* Copyright 2021 stickandgum + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +// I like NKRO.. but let's not force it. @drashna pointed out some older hardware has issues - Toggle it via keycode if you like. +// #define FORCE_NKRO + +// At the time of this, there are 41 effects! That may be a bit too many to cycle through - keeping what I believe is the best. +#ifdef RGB_MATRIX_ENABLE + +// #define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR + +// Below added per: https://beta.docs.qmk.fm/using-qmk/hardware-features/lighting/feature_rgb_matrix#suspended-state-id-suspended-state + #define RGB_DISABLE_WHEN_USB_SUSPENDED + + #define RGB_MATRIX_FRAMEBUFFER_EFFECTS // Heatmap, Rain + #define RGB_MATRIX_KEYPRESSES // REACTIVE, SPLASH modes + +// Soon we need to ENABLE modes by DEFAULT soon as per: https://github.com/qmk/qmk_firmware/pull/13758 Thanks @noroadsleft +// #undef ENABLE_RGB_MATRIX_SOLID_COLOR // BUILT IN (MAPPED!) Static single color. +// #undef ENABLE_RGB_MATRIX_ALPHAS_MODS // Accenting various keys on the keyboard. +// #undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Top down rainbow! +# undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Left Right Rainbow (the top-down is better imho). + // #undef ENABLE_RGB_MATRIX_BREATHING // Built in (MAPPED!) + // #undef ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right (with white) + // #undef ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right (with black) +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades sat (RGB_MATRIX_CYCLE_PINWHEEL) +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // See above +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT // See above + // #undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness (with black) +# undef ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard cycling through rainbow + // #undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // BUILT IN (MAPPED!) Full Rainbow Left to Right +# undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom +# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Rainbow circles coming to center. +# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Two Rainbow circles coming to 1/3 and 2/3 points. +# undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradent Chevron shapped scrolling left to right + // #undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // BUILT IN (MAPPED!) - Consider disabling this - my poor eyes. +# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard +# undef ENABLE_RGB_MATRIX_DUAL_BEACON // Two rainbows spinning around keyboards +# undef ENABLE_RGB_MATRIX_RAINBOW_BEACON // Similar to above. +# undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Enough of the spinning rainbows - we get it! :-) +# undef ENABLE_RGB_MATRIX_RAINDROPS // Jellybeans are better. + // #undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation - better than above. +# undef ENABLE_RGB_MATRIX_HUE_BREATHING // Hue shifts up a slight ammount at the same time, then shifts back +# undef ENABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight ammount in a wave to the right, then back to the left +# undef ENABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight ammount and then back down in a wave to the right + // #undef ENABLE_RGB_MATRIX_TYPING_HEATMAP // Hot keys! + // #undef ENABLE_RGB_MATRIX_DIGITAL_RAIN // The Matrix! +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Key hits shown in current hue - all other keys black: wide slightly better imo +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE // Key hits shown in current hue - all other keys shifted hue + // #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse around a single key hit then fades value out (black otherwise) +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // same as above but a bit too intense imo. +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Column and Row single color fade. +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Column and Row single color fade. (Multi-keys) +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of key hit then fades +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multi-key hit then fades +# undef ENABLE_RGB_MATRIX_SPLASH // Full rainbow pulses from key hit. All else black. +# undef ENABLE_RGB_MATRIX_MULTISPLASH // Full rainbow pulses from multi-keys. All else black. +# undef ENABLE_RGB_MATRIX_SOLID_SPLASH // Single color pulses from key hit. All else black. (Using solid_reactive_wide instead). +# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Single color pulses from muli-keys. All else black. (Using solid_reactive_wide instead). +#endif diff --git a/keyboards/gmmk/pro/ansi/keymaps/stickandgum/keymap.c b/keyboards/gmmk/pro/ansi/keymaps/stickandgum/keymap.c new file mode 100644 index 000000000000..762fe00df23f --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/stickandgum/keymap.c @@ -0,0 +1,300 @@ +/* Copyright 2021 stickandgum GMMK Pro ANSI Enhanced Keymap File + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum my_keycodes { + LED_TILDE = SAFE_RANGE, + LED_1, + LED_2, + LED_3, + LED_4, + LED_5, + LED_6, + LED_7, + LED_8, + LED_9, + LED_0, + LED_MINS, + LED_EQL, + QMKBEST +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute) +// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del +// Tab Q W E R T Y U I O P [ ] \ PgUp +// Caps A S D F G H J K L ; " Enter PgDn +// Sh_L Z X C V B N M , . ? Sh_R Up End +// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right + + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_MUTE, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_DEL, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT( + _______, KC_CALC, KC_MYCM, KC_MSEL, KC_MAIL, KC_WHOM, _______, _______, _______, _______, _______, KC_WAKE, KC_SLEP, KC_PAUS, _______, + LED_TILDE, LED_1, LED_2, LED_3, LED_4, LED_5, LED_6, LED_7, LED_8, LED_9, LED_0, LED_MINS, LED_EQL, KC_INS, KC_SLCK, + _______, RGB_SAI, RGB_VAI, RGB_HUI, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, RESET, KC_BRIU, + _______, RGB_RMOD, RGB_VAD, RGB_MOD, RGB_SPI, _______, _______, _______, _______, QMKBEST, _______, _______, _______, KC_BRID, + _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, KC_MPLY, KC_PWR, + _______, _______, _______, _______, KC_RALT, _______, KC_APP, KC_MPRV, KC_MSTP, KC_MNXT + ), + +}; + +#ifdef ENCODER_ENABLE +bool encoder_update_user(uint8_t index, bool clockwise) { + // https://beta.docs.qmk.fm/using-qmk/simple-keycodes/feature_advanced_keycodes#alt-escape-for-alt-tab-id-alt-escape-for-alt-tab + if (get_mods() & MOD_MASK_CTRL) { // If CTRL is held + uint8_t mod_state = get_mods(); // Store all modifiers that are held + unregister_mods(MOD_MASK_CTRL); // Immediately unregister the CRTL key (don't send CTRL-PgDn) - del_mods doesn't work here (not immediate) + if (clockwise) { + tap_code(KC_PGDN); + } else { + tap_code(KC_PGUP); + } + set_mods(mod_state); // Add back in the CTRL key - so ctrl-key will work if ctrl was never released after paging. + } else if (get_mods() & MOD_MASK_SHIFT) { + uint8_t mod_state = get_mods(); + unregister_mods(MOD_MASK_SHIFT); + if (clockwise) { + #ifdef MOUSEKEY_ENABLE // If using the mouse scroll - make sure MOUSEKEY is enabled + tap_code(KC_MS_WH_DOWN); + #else + tap_code(KC_VOLU); + #endif + } else { + #ifdef MOUSEKEY_ENABLE + tap_code(KC_MS_WH_UP); + #else + tap_code(KC_VOLD); + #endif + } + set_mods(mod_state); + } else if (clockwise) { // All else volume. + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + return true; +} +#endif //ENCODER_ENABLE + +#ifdef RGB_MATRIX_ENABLE +static void set_rgb_caps_leds_on(void); +static void set_rgb_scroll_leds_on(void); +static void set_rgb_caps_leds_off(void); +static void set_rgb_scroll_leds_off(void); + +// Called on powerup and is the last _init that is run. +void keyboard_post_init_user(void) { + + int mods[35] = {0,2,3,4,5,11,17,33,49,55,65,95,97,79,94,85,93,96,90,69,92,67,76,80,91,75,86,68,77,81,92,28,34,39,44}; + int j; + + /* output each array element's value */ + for (j = 0; j < 35; j++ ) { + g_led_config.flags[mods[j]] = LED_FLAG_MODIFIER; + } + + if (!rgb_matrix_is_enabled()) { + rgb_matrix_enable(); +#ifdef CONSOLE_ENABLE + uprintf("ERROR! RGB Matrix Enabled and wrote to EEPROM! -How was the RGB Matrix Disabled?"); +#endif + } +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { +#ifdef CONSOLE_ENABLE + switch(rgb_matrix_get_flags()) { + case 0x08: + uprintf("FLAG: LED_FLAG_INDICATOR "); + break; + case 0x04: + uprintf("FLAG: LED_FLAG_KEYLIGHT "); + break; + case 0x02: + uprintf("FLAG: LED_FLAG_UNDERGLOW "); + break; + case 0x01: + uprintf("FLAG: LED_FLAG_MODIFIER "); + break; + case 0xFF: + uprintf("FLAG: LED_FLAG_ALL "); + break; + case 0x00: + uprintf("FLAG: LED_FLAG_NONE "); + break; + default: + uprintf("FLAG Other: %u ", rgb_matrix_get_flags()); + } + uprintf("Caps? %d Scroll? %d - MATRIX: %d\n", host_keyboard_led_state().caps_lock, host_keyboard_led_state().scroll_lock, rgb_matrix_is_enabled()); +#endif //CONSOLE_ENABLE + + switch (keycode) { + case RGB_TOG: + if (record->event.pressed) { + if (rgb_matrix_get_flags() == LED_FLAG_ALL) { + rgb_matrix_set_flags(LED_FLAG_NONE); + rgb_matrix_set_color_all(0, 0, 0); + } else { + rgb_matrix_set_flags(LED_FLAG_ALL); + } + } + return false; + case LED_TILDE: + rgb_matrix_mode(RGB_MATRIX_SOLID_COLOR); // Can use RGB_M_P built-in keycode instead. + break; + case LED_1: + rgb_matrix_mode(RGB_MATRIX_ALPHAS_MODS); + break; + case LED_2: + rgb_matrix_mode(RGB_MATRIX_GRADIENT_UP_DOWN); + break; + case LED_3: + rgb_matrix_mode(RGB_MATRIX_JELLYBEAN_RAINDROPS); + break; + case LED_4: + rgb_matrix_mode(RGB_MATRIX_BAND_SAT); + break; + case LED_5: + rgb_matrix_mode(RGB_MATRIX_BAND_VAL); + break; + case LED_6: + rgb_matrix_mode(RGB_MATRIX_BAND_SPIRAL_VAL); + break; + case LED_7: + rgb_matrix_mode(RGB_MATRIX_CYCLE_LEFT_RIGHT); // Can use RGB_M_R built-in keycode instead. + break; + case LED_8: + rgb_matrix_mode(RGB_MATRIX_CYCLE_PINWHEEL); // Can use RGB_M_SW built-in keycode instead. + break; + case LED_9: + rgb_matrix_mode(RGB_MATRIX_BREATHING); // Can use RGB_M_B built-in keycode instead. + break; + #ifdef RGB_MATRIX_KEYPRESSES // Reactive effects require RGB_MATRIX_KEYPRESSES in config.h + case LED_0: + rgb_matrix_mode(RGB_MATRIX_SOLID_REACTIVE_WIDE); + break; + #endif //RGB_MATRIX_KEYPRESSES + #ifdef RGB_MATRIX_FRAMEBUFFER_EFFECTS // Heatmap and Rain require #define RGB_MATRIX_FRAMEBUFFER_EFFECTS in config.h + case LED_MINS: + rgb_matrix_mode(RGB_MATRIX_DIGITAL_RAIN); + break; + case LED_EQL: + rgb_matrix_mode(RGB_MATRIX_TYPING_HEATMAP); + break; + #endif //RGB_MATRIX_FRAMEBUFFER_EFFECTS + case QMKBEST: + if (record->event.pressed) { // when keycode QMKBEST is pressed + SEND_STRING("QMK rocks"); + } else { // when keycode QMKBEST key is released + SEND_STRING("!!"); + } + break; + } + return true; +} + +void rgb_matrix_indicators_user(void) { + if (host_keyboard_led_state().caps_lock) { + set_rgb_caps_leds_on(); + } else { + if (rgb_matrix_get_flags() == LED_FLAG_NONE){ + set_rgb_caps_leds_off(); + } + } + if (host_keyboard_led_state().scroll_lock) { + set_rgb_scroll_leds_on(); + } else { + if (rgb_matrix_get_flags() == LED_FLAG_NONE){ + set_rgb_scroll_leds_off(); + } + } +} + +// RGB led number layout, function of the key + +// 67, led 01 0, ESC 6, F1 12, F2 18, F3 23, F4 28, F5 34, F6 39, F7 44, F8 50, F9 56, F10 61, F11 66, F12 69, Prt Rotary(Mute) 68, led 12 +// 70, led 02 1, ~ 7, 1 13, 2 19, 3 24, 4 29, 5 35, 6 40, 7 45, 8 51, 9 57, 0 62, -_ 78, (=+) 85, BackSpc 72, Home 71, led 13 +// 73, led 03 2, Tab 8, Q 14, W 20. E 25, R 30, T 36, Y 41, U 46, I 52, O 58, P 63, [{ 89, ]} 93, \| 75, PgUp 74, led 14 +// 76, led 04 3, Caps 9, A 15, S 21, D 26, F 31, G 37, H 42, J 47, K 53, L 59, ;: 64, '" 96, Enter 86, PgDn 77, led 15 +// 80, led 05 4, Sh_L 10, Z 16, X 22, C 27, V 32, B 38, N 43, M 48, ,< 54, .< 60, /? 90, Sh_R 94, Up 82, End 81, led 16 +// 83, led 06 5, Ct_L 11,Win_L 17, Alt_L 33, SPACE 49, Alt_R 55, FN 65, Ct_R 95, Left 97, Down 79, Right 84, led 17 +// 87, led 07 88, led 18 +// 91, led 08 92, led 19 + +static void set_rgb_caps_leds_on() { + rgb_matrix_set_color(0, 255, 0, 0); //Escape Key + rgb_matrix_set_color(3, 255, 0, 0); //capslock key + rgb_matrix_set_color(5, 255, 0, 0); //Left CTRL key + rgb_matrix_set_color(67, 255, 0, 0); //Left LED 01 + rgb_matrix_set_color(68, 255, 0, 0); //Right LED 12 + rgb_matrix_set_color(70, 255, 127, 0); //Left LED 02 + rgb_matrix_set_color(71, 255, 127, 0); //Right LED 13 + rgb_matrix_set_color(73, 255, 255, 0); //Left LED 03 + rgb_matrix_set_color(74, 255, 255, 0); //Right LED 14 + rgb_matrix_set_color(76, 0, 255, 0); //Left LED 04 + rgb_matrix_set_color(77, 0, 255, 0); //Right LED 15 + rgb_matrix_set_color(80, 0, 0, 255); //Left LED 05 + rgb_matrix_set_color(81, 0, 0, 255); //Right LED 16 + rgb_matrix_set_color(83, 46, 43, 95); //Left LED 06 + rgb_matrix_set_color(84, 46, 43, 95); //Right LED 17 + rgb_matrix_set_color(87, 139, 0, 255); //Left LED 07 + rgb_matrix_set_color(88, 139, 0, 255); //Right LED 18 + rgb_matrix_set_color(91, 255, 255, 255); //Left LED 08 + rgb_matrix_set_color(92, 255, 255, 255); //Right LED 19 +} + +static void set_rgb_caps_leds_off() { + rgb_matrix_set_color(0, 0, 0, 0); //Escape Key + rgb_matrix_set_color(3, 0, 0, 0); //capslock key + rgb_matrix_set_color(5, 0, 0, 0); //Left CTRL key + rgb_matrix_set_color(67, 0, 0, 0); //Left LED 01 + rgb_matrix_set_color(68, 0, 0, 0); //Right LED 12 + rgb_matrix_set_color(70, 0, 0, 0); //Left LED 02 + rgb_matrix_set_color(71, 0, 0, 0); //Right LED 13 + rgb_matrix_set_color(73, 0, 0, 0); //Left LED 03 + rgb_matrix_set_color(74, 0, 0, 0); //Right LED 14 + rgb_matrix_set_color(76, 0, 0, 0); //Left LED 04 + rgb_matrix_set_color(77, 0, 0, 0); //Right LED 15 + rgb_matrix_set_color(80, 0, 0, 0); //Left LED 05 + rgb_matrix_set_color(81, 0, 0, 0); //Right LED 16 + rgb_matrix_set_color(83, 0, 0, 0); //Left LED 06 + rgb_matrix_set_color(84, 0, 0, 0); //Right LED 17 + rgb_matrix_set_color(87, 0, 0, 0); //Left LED 07 + rgb_matrix_set_color(88, 0, 0, 0); //Right LED 18 + rgb_matrix_set_color(91, 0, 0, 0); //Left LED 08 + rgb_matrix_set_color(92, 0, 0, 0); //Right LED 19 +} + +static void set_rgb_scroll_leds_on() { + rgb_matrix_set_color(72, 255, 255, 255); // Under Rotary (HOME) +} + +static void set_rgb_scroll_leds_off() { + rgb_matrix_set_color(72, 0, 0, 0); // Under Rotary (HOME) +} + +#endif // RGB_MATRIX_ENABLE diff --git a/keyboards/gmmk/pro/ansi/keymaps/stickandgum/readme.md b/keyboards/gmmk/pro/ansi/keymaps/stickandgum/readme.md new file mode 100644 index 000000000000..c4e2225433ec --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/stickandgum/readme.md @@ -0,0 +1,63 @@ +# Glorious GMMK Pro / ANSI - Enhanced Keyboard + +Tried to incorporate full featured GMMK Pro keyboard functionality without adding unnecessary features. Included Scroll Lock and Caps LEDs. NKRO can be toggled (Fn + N). +SHIFT and Ctrl keys for scrolling with the rotary, Fn-keys also used for screen brightness, media, PowerOff, Suspend, App Shortcuts, and RGB Toggle/Modifications. Trimmed down the amazing (currently 41) built-in RGB effects down to about 13 or so reasonable effects that feel are just enough for your entertainment without being too excessive. + +BIG thank you to [AndreBrait](https://github.com/andrebrait), And of course, @drashna and @filterpaper, @noroadsleft and the entire discord community. + +* Keymap Creator: [StickAndGum](https://github.com/StickAndGum) +* Keyboard: [More info on GMMK Pro](https://www.pcgamingrace.com/products/glorious-gmmk-pro-75-barebone-black) +* Controller [STM32F303CCT6](https://www.st.com/en/microcontrollers-microprocessors/stm32f303.html) + +* Layout: + ![keyboard-layout](https://user-images.githubusercontent.com/22257588/130371838-875ba65b-88ea-4f81-a44a-bb24194c4989.png) + +Features are as follows: + +Rotary: + - Default: Volume Up/Down + - Shift: Mouse Wheel Down/Up + - Ctrl: Page Down/Up + +Top/Default Layer: + - Print Screen -> Print Screen (Left of rotary) + - Delete -> Home (Under Rotary) + - Right Alt -> Delete (Right of Spacebar) + - All other keys defaults. + +Fn Layer: + - Fn + \ -> Bootloader Mode (Can also hold ESC while powering up) - If hit by mistake, just unplug and replug in. + - Fn + Backspace -> Insert + - Fn + Print -> Pause/Break + - Fn + Home -> Scroll Lock (Lights up white!) + - Fn + Del (right of space) -> Right-Alt key. + - Fn + RCtrl (right of Fn) -> Menu/App key. + - Fn + N -> Toggle NKRO + - Fn + End -> Power Off Computer + - Fn + F12 -> Suspend Computer + - Fn + F11 -> Wake Computer (Necessary on MAC OS?) + - Fn + Page Up / Down -> Laptop Screen Brightness Up/Down + - Fn + F1 - F5 -> Launch Calc, My Comp (Explorer), Media Player, Mail Client, Web Browser. + - Fn + Up, Down, Left, Right Arrows -> Media Play, Stop, Previous, Next respectively. + +- RGB Information: + - Toggle for RGB via Fn-r (CAPS & ScrlLock still Light/Indicate) + - CAPS: Side Light Rainbow Indicators and Left-side RED Indicators + - Scroll-Lock: Fn-Home (Under Rotary) white indicator. + - Modifiers identified around most of the edge of keyboard / Side lights also accented (Fn-1 looks GREAT IMHO) + +- RGB Modifing (all via Function key) all via wasdqerf (common gaming keys) - easy to remember. + - Fn + r -> Toggle RGB + - Fn + w,s -> Brightness Up, Down + - Fn + a,d -> Cycle Forward/Backward through rgb effects + - Fn + q -> Increase or Decrease Saturation (use SHIFT key to lower) + - Fn + e -> Increase or Decrease Hue/Color (use SHIFT key to lower) + - Fn + f -> Increase or Decrease Speed (Using "F" for Fast!) (Use SHIFT for slower) + - Fn + ~, 0-9, - = keys (2nd row keys) -> 13 RGB different effects arranged to my liking. Fn-1 is my favorite. + - Fn + L -> My easter egg... "QMK rocks!" + +- Known issues: + - The Heatmap and Matrix FrameBuffer effects (Fn - and =) are a bit buggy - F-keys light up when they shouldn't and the Caps/Scroll lights don't turn off properly when using. Just change the effect to something else to fix this. + - If you find a fix for this, please let me know. + +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/gmmk/pro/ansi/keymaps/stickandgum/rules.mk b/keyboards/gmmk/pro/ansi/keymaps/stickandgum/rules.mk new file mode 100644 index 000000000000..6440dc6d4123 --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/stickandgum/rules.mk @@ -0,0 +1,2 @@ +CONSOLE_ENABLE = no +MOUSEKEY_ENABLE = yes diff --git a/keyboards/gmmk/pro/ansi/keymaps/via/keymap.c b/keyboards/gmmk/pro/ansi/keymaps/via/keymap.c new file mode 100644 index 000000000000..9b13f75a85f9 --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/via/keymap.c @@ -0,0 +1,89 @@ +/* Copyright 2021 Glorious, LLC + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute) +// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del +// Tab Q W E R T Y U I O P [ ] \ PgUp +// Caps A S D F G H J K L ; " Enter PgDn +// Sh_L Z X C V B N M , . ? Sh_R Up End +// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right + + + // The FN key by default maps to a momentary toggle to layer 1 to provide access to the RESET key (to put the board into bootloader mode). Without + // this mapping, you have to open the case to hit the button on the bottom of the PCB (near the USB cable attachment) while plugging in the USB + // cable to get the board into bootloader mode - definitely not fun when you're working on your QMK builds. Remove this and put it back to KC_RGUI + // if that's your preference. + // + // To put the keyboard in bootloader mode, use FN+backslash. If you accidentally put it into bootloader, you can just unplug the USB cable and + // it'll be back to normal when you plug it back in. + // + // This keyboard defaults to 6KRO instead of NKRO for compatibility reasons (some KVMs and BIOSes are incompatible with NKRO). + // Since this is, among other things, a "gaming" keyboard, a key combination to enable NKRO on the fly is provided for convenience. + // Press Fn+N to toggle between 6KRO and NKRO. This setting is persisted to the EEPROM and thus persists between restarts. + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_MUTE, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT( + _______, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, + _______, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, + _______, _______, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, RGB_HUI, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, RGB_MOD, _______, + _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI + ), + + [2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; +// clang-format on + +#ifdef ENCODER_ENABLE +bool encoder_update_user(uint8_t index, bool clockwise) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + return true; +} +#endif // ENCODER_ENABLE diff --git a/keyboards/gmmk/pro/ansi/keymaps/via/rules.mk b/keyboards/gmmk/pro/ansi/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/gmmk/pro/keymaps/wholesomeducky/keymap.c b/keyboards/gmmk/pro/ansi/keymaps/wholesomeducky/keymap.c similarity index 100% rename from keyboards/gmmk/pro/keymaps/wholesomeducky/keymap.c rename to keyboards/gmmk/pro/ansi/keymaps/wholesomeducky/keymap.c diff --git a/keyboards/gmmk/pro/ansi/keymaps/willwm/keymap.c b/keyboards/gmmk/pro/ansi/keymaps/willwm/keymap.c new file mode 100644 index 000000000000..a32fef1041ee --- /dev/null +++ b/keyboards/gmmk/pro/ansi/keymaps/willwm/keymap.c @@ -0,0 +1,73 @@ +/* Copyright 2021 Glorious, LLC + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + // ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Del Rotary(Mute) + // ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Home + // Tab Q W E R T Y U I O P [ ] \ PgUp + // Caps A S D F G H J K L ; " Enter PgDn + // Sh_L Z X C V B N M , . ? Sh_R Up End + // Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_MUTE, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______, + _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END + ), + + [2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; +// clang-format on + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + return true; +} diff --git a/keyboards/gmmk/pro/keymaps/willwm/keymap.json b/keyboards/gmmk/pro/ansi/keymaps/willwm/keymap.json similarity index 100% rename from keyboards/gmmk/pro/keymaps/willwm/keymap.json rename to keyboards/gmmk/pro/ansi/keymaps/willwm/keymap.json diff --git a/keyboards/gmmk/pro/keymaps/willwm/readme.md b/keyboards/gmmk/pro/ansi/keymaps/willwm/readme.md similarity index 100% rename from keyboards/gmmk/pro/keymaps/willwm/readme.md rename to keyboards/gmmk/pro/ansi/keymaps/willwm/readme.md diff --git a/keyboards/gmmk/pro/keymaps/willwm/rules.mk b/keyboards/gmmk/pro/ansi/keymaps/willwm/rules.mk similarity index 100% rename from keyboards/gmmk/pro/keymaps/willwm/rules.mk rename to keyboards/gmmk/pro/ansi/keymaps/willwm/rules.mk diff --git a/keyboards/gmmk/pro/ansi/readme.md b/keyboards/gmmk/pro/ansi/readme.md new file mode 100644 index 000000000000..9800aef88ea1 --- /dev/null +++ b/keyboards/gmmk/pro/ansi/readme.md @@ -0,0 +1,37 @@ +# GMMK PRO (ANSI) + +A tenkeyless 75% keyboard made and sold by Glorious LLC. Equipped with the STM32 ARM Cortex-M4 microcontroller, with support for rotary encoders and three additional layouts. [More info at Glorious](https://www.pcgamingrace.com/products/glorious-gmmk-pro-75-barebone-black-reservation) + +* Keyboard Maintainer: [GloriousThrall](https://github.com/GloriousThrall) +* Hardware Supported: GMMK Pro +* Hardware Availability: [GloriousPCGaming.com](https://www.pcgamingrace.com/products/glorious-gmmk-pro-75-barebone-black-reservation) + +Make example for this keyboard (after setting up your build environment): + + make gmmk/pro/ansi:default + +Flashing example for this keyboard: + + make gmmk/pro/ansi:default:flash + +To reset the board into bootloader mode, do one of the following: + +* Hold the Reset switch mounted on the bottom side of the PCB while connecting the USB cable +* Hold the Escape key while connecting the USB cable (also erases persistent settings) +* Fn+Backslash will reset the board to bootloader mode if you have flashed the default QMK keymap + +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). + +## Case Screw Replacements + +Many users report stripped case screws when disassembling the board. + +The stock case screws are: +* Thread: M2 +* Thread length: ~5 mm +* Head diameter: ~3.8 mm +* Head counterbore diameter: ~4.0 mm +* Head counterbore depth: ~1.9 mm + +Most M2x5mm screws should fit fine, although it's best to ensure that the screw head will fit inside the counterbore. +For reference, [this hex socket head screw](https://www.mcmaster.com/91292A005/) from McMaster-Carr should fit nearly flush (head will protrude above the counterbore by ~0.1 mm). diff --git a/keyboards/gmmk/pro/ansi/rules.mk b/keyboards/gmmk/pro/ansi/rules.mk new file mode 100644 index 000000000000..dc7fa29b6bac --- /dev/null +++ b/keyboards/gmmk/pro/ansi/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = STM32F303 + +# Bootloader selection +BOOTLOADER = stm32-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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = AW20216 diff --git a/keyboards/gmmk/pro/config.h b/keyboards/gmmk/pro/config.h index ab3c7a7a2119..bb2cca192167 100644 --- a/keyboards/gmmk/pro/config.h +++ b/keyboards/gmmk/pro/config.h @@ -19,30 +19,109 @@ #include "config_common.h" /* USB Device descriptor parameter */ -#define DEVICE_VER 0x0001 -#define VENDOR_ID 0x320F -#define PRODUCT_ID 0x5044 -#define MANUFACTURER Glorious -#define PRODUCT GMMK Pro +#define DEVICE_VER 0x0001 +#define VENDOR_ID 0x320F +#define PRODUCT_ID 0x5044 +#define MANUFACTURER Glorious +#define PRODUCT GMMK Pro /* key matrix size */ #define MATRIX_ROWS 11 #define MATRIX_COLS 8 -#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10 } -#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A8, A9, A10 } +#define MATRIX_ROW_PINS \ + { B0, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10 } +#define MATRIX_COL_PINS \ + { A0, A1, A2, A3, A4, A8, A9, A10 } /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW +/* Hold ESC on start up to clear EEPROM and boot into bootloader mode */ #define BOOTMAGIC_LITE_ROW 1 #define BOOTMAGIC_LITE_COLUMN 3 #define TAP_CODE_DELAY 10 -#define ENCODERS_PAD_A { C15 } -#define ENCODERS_PAD_B { C14 } +#define ENCODERS_PAD_A \ + { C15 } +#define ENCODERS_PAD_B \ + { C14 } /* 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 + +/* SPI Config for LED Driver */ +#define SPI_DRIVER SPID1 +#define SPI_SCK_PIN A5 +#define SPI_MOSI_PIN A6 +#define SPI_MISO_PIN A7 + +#define DRIVER_1_CS B13 +#define DRIVER_2_CS B14 +#define DRIVER_1_EN C13 +#define DRIVER_2_EN C13 + +#define DRIVER_COUNT 2 + +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + +/* 1000Hz USB polling - it's the default on stock firmware */ +#define USB_POLLING_INTERVAL_MS 1 + +/* Send up to 4 key press events per scan */ +#define QMK_KEYS_PER_SCAN 4 + +/* Set debounce time to 5ms */ +#define DEBOUNCE 5 + +/* Force NKRO on boot up regardless of the setting saved in the EEPROM (uncomment to enable it) */ +// #define FORCE_NKRO diff --git a/keyboards/gmmk/pro/halconf.h b/keyboards/gmmk/pro/halconf.h new file mode 100644 index 000000000000..23ecb202a1d1 --- /dev/null +++ b/keyboards/gmmk/pro/halconf.h @@ -0,0 +1,7 @@ +#pragma once + +#define HAL_USE_SPI TRUE +#define SPI_USE_WAIT TRUE +#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD + +#include_next diff --git a/keyboards/gmmk/pro/info.json b/keyboards/gmmk/pro/info.json deleted file mode 100644 index 37ab5b43eea6..000000000000 --- a/keyboards/gmmk/pro/info.json +++ /dev/null @@ -1,111 +0,0 @@ -{ - "keyboard_name": "GMMK Pro", - "url": "https://www.pcgamingrace.com/products/glorious-gmmk-pro-75-barebone-black-reservation", - "maintainer": "GloriousThrall", - "width": 16.5, - "height": 6.5, - "layouts": { - "LAYOUT": { - "layout": [ - {"x":0, "y":0}, - - {"x":1.25, "y":0}, - {"x":2.25, "y":0}, - {"x":3.25, "y":0}, - {"x":4.25, "y":0}, - - {"x":5.5, "y":0}, - {"x":6.5, "y":0}, - {"x":7.5, "y":0}, - {"x":8.5, "y":0}, - - {"x":9.75, "y":0}, - {"x":10.75, "y":0}, - {"x":11.75, "y":0}, - {"x":12.75, "y":0}, - - {"x":14, "y":0}, - {"x":15.5, "y":0}, - - {"x":0, "y":1.25}, - {"x":1, "y":1.25}, - {"x":2, "y":1.25}, - {"x":3, "y":1.25}, - {"x":4, "y":1.25}, - {"x":5, "y":1.25}, - {"x":6, "y":1.25}, - {"x":7, "y":1.25}, - {"x":8, "y":1.25}, - {"x":9, "y":1.25}, - {"x":10, "y":1.25}, - {"x":11, "y":1.25}, - {"x":12, "y":1.25}, - {"x":13, "y":1.25, "w":2}, - - {"x":15.5, "y":1.25}, - - {"x":0, "y":2.25, "w":1.5}, - {"x":1.5, "y":2.25}, - {"x":2.5, "y":2.25}, - {"x":3.5, "y":2.25}, - {"x":4.5, "y":2.25}, - {"x":5.5, "y":2.25}, - {"x":6.5, "y":2.25}, - {"x":7.5, "y":2.25}, - {"x":8.5, "y":2.25}, - {"x":9.5, "y":2.25}, - {"x":10.5, "y":2.25}, - {"x":11.5, "y":2.25}, - {"x":12.5, "y":2.25}, - {"x":13.5, "y":2.25, "w":1.5}, - - {"x":15.5, "y":2.25}, - - {"x":0, "y":3.25, "w":1.75}, - {"x":1.75, "y":3.25}, - {"x":2.75, "y":3.25}, - {"x":3.75, "y":3.25}, - {"x":4.75, "y":3.25}, - {"x":5.75, "y":3.25}, - {"x":6.75, "y":3.25}, - {"x":7.75, "y":3.25}, - {"x":8.75, "y":3.25}, - {"x":9.75, "y":3.25}, - {"x":10.75, "y":3.25}, - {"x":11.75, "y":3.25}, - {"x":12.75, "y":3.25, "w":2.25}, - - {"x":15.5, "y":3.25}, - - {"x":0, "y":4.25, "w":2.25}, - {"x":2.25, "y":4.25}, - {"x":3.25, "y":4.25}, - {"x":4.25, "y":4.25}, - {"x":5.25, "y":4.25}, - {"x":6.25, "y":4.25}, - {"x":7.25, "y":4.25}, - {"x":8.25, "y":4.25}, - {"x":9.25, "y":4.25}, - {"x":10.25, "y":4.25}, - {"x":11.25, "y":4.25}, - {"x":12.25, "y":4.25, "w":1.75}, - - {"x":14.25, "y":4.5}, - - {"x":15.5, "y":4.25}, - - {"x":0, "y":5.25, "w":1.25}, - {"x":1.25, "y":5.25, "w":1.25}, - {"x":2.5, "y":5.25, "w":1.25}, - {"x":3.75, "y":5.25, "w":6.25}, - {"x":10, "y":5.25}, - {"x":11, "y":5.25}, - {"x":12, "y":5.25}, - - {"x":13.25, "y":5.5}, - {"x":14.25, "y":5.5}, - {"x":15.25, "y":5.5} - ] - } - } -} diff --git a/keyboards/gmmk/pro/iso/config.h b/keyboards/gmmk/pro/iso/config.h new file mode 100644 index 000000000000..26626ccfc180 --- /dev/null +++ b/keyboards/gmmk/pro/iso/config.h @@ -0,0 +1,23 @@ +/* Copyright 2021 Jasper Chan + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +#define DRIVER_1_LED_TOTAL 66 +#define DRIVER_2_LED_TOTAL 33 +#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) diff --git a/keyboards/gmmk/pro/iso/info.json b/keyboards/gmmk/pro/iso/info.json new file mode 100644 index 000000000000..32fac8933610 --- /dev/null +++ b/keyboards/gmmk/pro/iso/info.json @@ -0,0 +1,110 @@ +{ + "keyboard_name": "GMMK Pro (ISO)", + "url": "https://www.pcgamingrace.com/products/glorious-gmmk-pro-75-barebone-black-reservation", + "maintainer": "GloriousThrall", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + + {"label":"F1", "x":1.25, "y":0}, + {"label":"F2", "x":2.25, "y":0}, + {"label":"F3", "x":3.25, "y":0}, + {"label":"F4", "x":4.25, "y":0}, + + {"label":"F5", "x":5.5, "y":0}, + {"label":"F6", "x":6.5, "y":0}, + {"label":"F7", "x":7.5, "y":0}, + {"label":"F8", "x":8.5, "y":0}, + + {"label":"F9", "x":9.75, "y":0}, + {"label":"F10", "x":10.75, "y":0}, + {"label":"F11", "x":11.75, "y":0}, + {"label":"F12", "x":12.75, "y":0}, + + {"label":"Printscreen", "x":14, "y":0}, + {"label":"Rotary", "x":15.5, "y":0}, + + {"label":"`", "x":0, "y":1.25}, + {"label":"1", "x":1, "y":1.25}, + {"label":"2", "x":2, "y":1.25}, + {"label":"3", "x":3, "y":1.25}, + {"label":"4", "x":4, "y":1.25}, + {"label":"5", "x":5, "y":1.25}, + {"label":"6", "x":6, "y":1.25}, + {"label":"7", "x":7, "y":1.25}, + {"label":"8", "x":8, "y":1.25}, + {"label":"9", "x":9, "y":1.25}, + {"label":"0", "x":10, "y":1.25}, + {"label":"-", "x":11, "y":1.25}, + {"label":"=", "x":12, "y":1.25}, + {"label":"Backspace", "x":13, "y":1.25, "w":2}, + + {"label":"Delete", "x":15.5, "y":1.25}, + + {"label":"Tab", "x":0, "y":2.25, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.25}, + {"label":"W", "x":2.5, "y":2.25}, + {"label":"E", "x":3.5, "y":2.25}, + {"label":"R", "x":4.5, "y":2.25}, + {"label":"T", "x":5.5, "y":2.25}, + {"label":"Y", "x":6.5, "y":2.25}, + {"label":"U", "x":7.5, "y":2.25}, + {"label":"I", "x":8.5, "y":2.25}, + {"label":"O", "x":9.5, "y":2.25}, + {"label":"P", "x":10.5, "y":2.25}, + {"label":"[", "x":11.5, "y":2.25}, + {"label":"]", "x":12.5, "y":2.25}, + + {"label":"Page Up", "x":15.5, "y":2.25}, + + {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, + {"label":"A", "x":1.75, "y":3.25}, + {"label":"S", "x":2.75, "y":3.25}, + {"label":"D", "x":3.75, "y":3.25}, + {"label":"F", "x":4.75, "y":3.25}, + {"label":"G", "x":5.75, "y":3.25}, + {"label":"H", "x":6.75, "y":3.25}, + {"label":"J", "x":7.75, "y":3.25}, + {"label":"K", "x":8.75, "y":3.25}, + {"label":"L", "x":9.75, "y":3.25}, + {"label":";", "x":10.75, "y":3.25}, + {"label":"'", "x":11.75, "y":3.25}, + {"label":"Iso #", "x":12.75, "y":3.25}, + {"label":"Enter", "x":13.75, "y":2.25, "w":1.25, "h":2}, + + {"label":"Page Down", "x":15.5, "y":3.25}, + + {"label":"Shift", "x":0, "y":4.25, "w":1.25}, + {"label":"Iso \\", "x":1.25, "y":4.25}, + {"label":"Z", "x":2.25, "y":4.25}, + {"label":"X", "x":3.25, "y":4.25}, + {"label":"C", "x":4.25, "y":4.25}, + {"label":"V", "x":5.25, "y":4.25}, + {"label":"B", "x":6.25, "y":4.25}, + {"label":"N", "x":7.25, "y":4.25}, + {"label":"M", "x":8.25, "y":4.25}, + {"label":",", "x":9.25, "y":4.25}, + {"label":".", "x":10.25, "y":4.25}, + {"label":"/", "x":11.25, "y":4.25}, + {"label":"Shift", "x":12.25, "y":4.25, "w":1.75}, + + {"label":"Up", "x":14.25, "y":4.5}, + + {"label":"End", "x":15.5, "y":4.25}, + + {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, + {"label":"GUI", "x":1.25, "y":5.25, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, + {"label":"Space", "x":3.75, "y":5.25, "w":6.25}, + {"label":"Alt", "x":10, "y":5.25}, + {"label":"Fn", "x":11, "y":5.25}, + {"label":"Ctrl", "x":12, "y":5.25}, + + {"label":"Left", "x":13.25, "y":5.5}, + {"label":"Down", "x":14.25, "y":5.5}, + {"label":"Right", "x":15.25, "y":5.5} + ] + } + } +} diff --git a/keyboards/gmmk/pro/iso/iso.c b/keyboards/gmmk/pro/iso/iso.c new file mode 100644 index 000000000000..fa57f1ca9244 --- /dev/null +++ b/keyboards/gmmk/pro/iso/iso.c @@ -0,0 +1,243 @@ +/* Copyright 2021 Gigahawk + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "iso.h" + +#ifdef RGB_MATRIX_ENABLE +// clang-format off +led_config_t g_led_config = {{ + { 4, NO_LED, NO_LED, 96, 65, 80, 5, 28 }, + { 8, 2, 9, 0, 10, 76, 1, 7 }, + { 14, 3, 15, 67, 16, 87, 6, 13 }, + { 20, 18, 21, 23, 22, 94, 12, 19 }, + { 25, 30, 26, 31, 27, 32, 29, 24 }, + { 41, 36, 42, 37, 43, 38, 35, 40 }, + { 46, 90, 47, 34, 48, 73, 79, 45 }, + { 52, 39, 53, 98, 54, 83, 44, 51 }, + { 58, 63, 59, 64, 95, 60, 62, 57 }, + { 11, 91, 55, 17, 33, 49, NO_LED, 70 }, + { NO_LED, 86, NO_LED, 61, 97, 66, 50, 56 } +}, { + {0, 0}, // 0, ESC, k13 + {0, 15}, // 1, `, k16 + {4, 26}, // 2, Tab, k11 + {5, 38}, // 3, Caps, k21 + {2, 49}, // 4, Sh_L, k00 + {2, 61}, // 5, Ct_L, k06 + {18, 0}, // 6, F1, k26 + {14, 15}, // 7, 1, k17 + {22, 26}, // 8, Q, k10 + {25, 38}, // 9, A, k12 + {33, 49}, // 10, Z, k14 + {20, 61}, // 11, Win_L, k90 + {33, 0}, // 12, F2, k36 + {29, 15}, // 13, 2, k27 + {36, 26}, // 14, W, k20 + {40, 38}, // 15, S, k22 + {47, 49}, // 16, X, k24 + {38, 61}, // 17, Alt_L, k93 + {47, 0}, // 18, F3, k31 + {43, 15}, // 19, 3, k37 + {51, 26}, // 20, E, k30 + {54, 38}, // 21, D, k32 + {61, 49}, // 22, C, k34 + {61, 0}, // 23, F4, k33 + {58, 15}, // 24, 4, k47 + {65, 26}, // 25, R, k40 + {69, 38}, // 26, F, k42 + {76, 49}, // 27, V, k44 + {79, 0}, // 28, F5, k07 + {72, 15}, // 29, 5, k46 + {79, 26}, // 30, T, k41 + {83, 38}, // 31, G, k43 + {90, 49}, // 32, B, k45 + {92, 61}, // 33, SPACE, k94 + {94, 0}, // 34, F6, k63 + {87, 15}, // 35, 6, k56 + {94, 26}, // 36, Y, k51 + {98, 38}, // 37, H, k53 + {105, 49}, // 38, N, k55 + {108, 0}, // 39, F7, k71 + {101, 15}, // 40, 7, k57 + {108, 26}, // 41, U, k50 + {112, 38}, // 42, J, k52 + {119, 49}, // 43, M, k54 + {123, 0}, // 44, F8, k76 + {116, 15}, // 45, 8, k67 + {123, 26}, // 46, I, k60 + {126, 38}, // 47, K, k62 + {134, 49}, // 48, ,, k64 + {145, 61}, // 49, Alt_R, k95 + {141, 0}, // 50, F9, ka6 + {130, 15}, // 51, 9, k77 + {137, 26}, // 52, O, k70 + {141, 38}, // 53, L, k72 + {148, 49}, // 54, ., k74 + {159, 61}, // 55, FN, k92 + {155, 0}, // 56, F10, ka7 + {145, 15}, // 57, 0, k87 + {152, 26}, // 58, P, k80 + {155, 38}, // 59, ;, k82 + {163, 49}, // 60, /, k85 + {170, 0}, // 61, F11, ka3 + {159, 15}, // 62, -, k86 + {166, 26}, // 63, [, k81 + {170, 38}, // 64, ", k83 + {173, 61}, // 65, Ct_R, k04 + {184, 0}, // 66, F12, ka5 + {18, 49}, // 67, \, k23 + {0, 8}, // 68, LED, l01 + {224, 8}, // 69, LED, l11 + {202, 0}, // 70, Prt, k97 + {0, 15}, // 71, LED, l02 + {224, 15}, // 72, LED, l12 + {224, 15}, // 73, Del, k65 + {0, 21}, // 74, LED, l03 + {224, 21}, // 75, LED, l13 + {224, 26}, // 76, PgUp, k15 + {0, 28}, // 77, LED, l04 + {224, 28}, // 78, LED, l14 + {173, 15}, // 79, =, k66 + {220, 64}, // 80, Right, k05 + {0, 35}, // 81, LED, l05 + {224, 35}, // 82, LED, l15 + {224, 49}, // 83, End, k75 + {0, 42}, // 84, LED, l06 + {224, 42}, // 85, LED, l16 + {195, 15}, // 86, BSpc, ka1 + {224, 38}, // 87, PgDn, k25 + {0, 48}, // 88, LED, l07 + {224, 48}, // 89, LED, l17 + {181, 26}, // 90, ], k61 + {182, 49}, // 91, Sh_R, k91 + {0, 55}, // 92, LED, l08 + {224, 55}, // 93, LED, l18 + {206, 52}, // 94, Up, k35 + {184, 38}, // 95, #, k84 + {191, 64}, // 96, Left, k03 + {201, 26}, // 97, Enter, ka4 + {206, 64}, // 98, Down, k73 +}, { + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 4, 2, 2, 4, 2, + 2, 4, 2, 2, 4, 4, 2, 2, 4, 2, 2, 4, 4, 2, 2, 4, 4, 2, 2, 4, 4, 4, 4, 4 +}}; + +const aw_led g_aw_leds[DRIVER_LED_TOTAL] = { + {0, CS1_SW1, CS2_SW1, CS3_SW1}, // 0, ESC, k13 + {0, CS4_SW1, CS5_SW1, CS6_SW1}, // 1, ~, k16 + {0, CS7_SW1, CS8_SW1, CS9_SW1}, // 2, Tab, k11 + {0, CS10_SW1, CS11_SW1, CS12_SW1}, // 3, Caps, k21 + {0, CS13_SW1, CS14_SW1, CS15_SW1}, // 4, Sh_L, k00 + {0, CS16_SW1, CS17_SW1, CS18_SW1}, // 5, Ct_L, k06 + {0, CS1_SW2, CS2_SW2, CS3_SW2}, // 6, F1, k26 + {0, CS4_SW2, CS5_SW2, CS6_SW2}, // 7, 1, k17 + {0, CS7_SW2, CS8_SW2, CS9_SW2}, // 8, Q, k10 + {0, CS10_SW2, CS11_SW2, CS12_SW2}, // 9, A, k12 + {0, CS13_SW2, CS14_SW2, CS15_SW2}, // 10, Z, k14 + {0, CS16_SW2, CS17_SW2, CS18_SW2}, // 11, Win_L, k90 + {0, CS1_SW3, CS2_SW3, CS3_SW3}, // 12, F2, k36 + {0, CS4_SW3, CS5_SW3, CS6_SW3}, // 13, 2, k27 + {0, CS7_SW3, CS8_SW3, CS9_SW3}, // 14, W, k20 + {0, CS10_SW3, CS11_SW3, CS12_SW3}, // 15, S, k22 + {0, CS13_SW3, CS14_SW3, CS15_SW3}, // 16, X, k24 + {0, CS16_SW3, CS17_SW3, CS18_SW3}, // 17, Alt_L, k93 + {0, CS1_SW4, CS2_SW4, CS3_SW4}, // 18, F3, k31 + {0, CS4_SW4, CS5_SW4, CS6_SW4}, // 19, 3, k37 + {0, CS7_SW4, CS8_SW4, CS9_SW4}, // 20, E, k30 + {0, CS10_SW4, CS11_SW4, CS12_SW4}, // 21, D, k32 + {0, CS13_SW4, CS14_SW4, CS15_SW4}, // 22, C, k34 + {0, CS1_SW5, CS2_SW5, CS3_SW5}, // 23, F4, k33 + {0, CS4_SW5, CS5_SW5, CS6_SW5}, // 24, 4, k47 + {0, CS7_SW5, CS8_SW5, CS9_SW5}, // 25, R, k40 + {0, CS10_SW5, CS11_SW5, CS12_SW5}, // 26, F, k42 + {0, CS13_SW5, CS14_SW5, CS15_SW5}, // 27, V, k44 + {0, CS1_SW6, CS2_SW6, CS3_SW6}, // 28, F5, k07 + {0, CS4_SW6, CS5_SW6, CS6_SW6}, // 29, 5, k46 + {0, CS7_SW6, CS8_SW6, CS9_SW6}, // 30, T, k41 + {0, CS10_SW6, CS11_SW6, CS12_SW6}, // 31, G, k43 + {0, CS13_SW6, CS14_SW6, CS15_SW6}, // 32, B, k45 + {0, CS16_SW6, CS17_SW6, CS18_SW6}, // 33, SPACE, k94 + {0, CS1_SW7, CS2_SW7, CS3_SW7}, // 34, F6, k63 + {0, CS4_SW7, CS5_SW7, CS6_SW7}, // 35, 6, k56 + {0, CS7_SW7, CS8_SW7, CS9_SW7}, // 36, Y, k51 + {0, CS10_SW7, CS11_SW7, CS12_SW7}, // 37, H, k53 + {0, CS13_SW7, CS14_SW7, CS15_SW7}, // 38, N, k55 + {0, CS1_SW8, CS2_SW8, CS3_SW8}, // 39, F7, k71 + {0, CS4_SW8, CS5_SW8, CS6_SW8}, // 40, 7, k57 + {0, CS7_SW8, CS8_SW8, CS9_SW8}, // 41, U, k50 + {0, CS10_SW8, CS11_SW8, CS12_SW8}, // 42, J, k52 + {0, CS13_SW8, CS14_SW8, CS15_SW8}, // 43, M, k54 + {0, CS1_SW9, CS2_SW9, CS3_SW9}, // 44, F8, k76 + {0, CS4_SW9, CS5_SW9, CS6_SW9}, // 45, 8, k67 + {0, CS7_SW9, CS8_SW9, CS9_SW9}, // 46, I, k60 + {0, CS10_SW9, CS11_SW9, CS12_SW9}, // 47, K, k62 + {0, CS13_SW9, CS14_SW9, CS15_SW9}, // 48, ,, k64 + {0, CS16_SW9, CS17_SW9, CS18_SW9}, // 49, Alt_R, k95 + {0, CS1_SW10, CS2_SW10, CS3_SW10}, // 50, F9, ka6 + {0, CS4_SW10, CS5_SW10, CS6_SW10}, // 51, 9, k77 + {0, CS7_SW10, CS8_SW10, CS9_SW10}, // 52, O, k70 + {0, CS10_SW10, CS11_SW10, CS12_SW10}, // 53, L, k72 + {0, CS13_SW10, CS14_SW10, CS15_SW10}, // 54, ., k74 + {0, CS16_SW10, CS17_SW10, CS18_SW10}, // 55, FN, k92 + {0, CS1_SW11, CS2_SW11, CS3_SW11}, // 56, F10, ka7 + {0, CS4_SW11, CS5_SW11, CS6_SW11}, // 57, 0, k87 + {0, CS7_SW11, CS8_SW11, CS9_SW11}, // 58, P, k80 + {0, CS10_SW11, CS11_SW11, CS12_SW11}, // 59, ;, k82 + {0, CS13_SW11, CS14_SW11, CS15_SW11}, // 60, ?, k85 + {0, CS1_SW12, CS2_SW12, CS3_SW12}, // 61, F11, ka3 + {0, CS4_SW12, CS5_SW12, CS6_SW12}, // 62, -, k86 + {0, CS7_SW12, CS8_SW12, CS9_SW12}, // 63, [, k81 + {0, CS10_SW12, CS11_SW12, CS12_SW12}, // 64, ", k83 + {0, CS16_SW12, CS17_SW12, CS18_SW12}, // 65, Ct_R, k04 + + {1, CS1_SW1, CS2_SW1, CS3_SW1}, // 66, F12, ka5 + {1, CS4_SW1, CS5_SW1, CS6_SW1}, // 67, \, k23 + {1, CS13_SW1, CS14_SW1, CS15_SW1}, // 68, LED, l01 + {1, CS16_SW1, CS17_SW1, CS18_SW1}, // 69, LED, l11 + {1, CS4_SW2, CS5_SW2, CS6_SW2}, // 70, Prt, k97 + {1, CS13_SW2, CS14_SW2, CS15_SW2}, // 71, LED, l02 + {1, CS16_SW2, CS17_SW2, CS18_SW2}, // 72, LED, l12 + {1, CS4_SW3, CS5_SW3, CS6_SW3}, // 73, Del, k65 + {1, CS13_SW3, CS14_SW3, CS15_SW3}, // 74, LED, l03 + {1, CS16_SW3, CS17_SW3, CS18_SW3}, // 75, LED, l13 + {1, CS4_SW4, CS5_SW4, CS6_SW4}, // 76, PgUp, k15 + {1, CS13_SW4, CS14_SW4, CS15_SW4}, // 77, LED, l04 + {1, CS16_SW4, CS17_SW4, CS18_SW4}, // 78, LED, l14 + {1, CS1_SW5, CS2_SW5, CS3_SW5}, // 79, =, k66 + {1, CS10_SW5, CS11_SW5, CS12_SW5}, // 80, Right, k05 + {1, CS13_SW5, CS14_SW5, CS15_SW5}, // 81, LED, l05 + {1, CS16_SW5, CS17_SW5, CS18_SW5}, // 82, LED, l15 + {1, CS4_SW6, CS5_SW6, CS6_SW6}, // 83, End, k75 + {1, CS13_SW6, CS14_SW6, CS15_SW6}, // 84, LED, l06 + {1, CS16_SW6, CS17_SW6, CS18_SW6}, // 85, LED, l16 + {1, CS1_SW7, CS2_SW7, CS3_SW7}, // 86, BSpc, ka1 + {1, CS4_SW7, CS5_SW7, CS6_SW7}, // 87, PgDn, k25 + {1, CS13_SW7, CS14_SW7, CS15_SW7}, // 88, LED, l07 + {1, CS16_SW7, CS17_SW7, CS18_SW7}, // 89, LED, l17 + {1, CS1_SW8, CS2_SW8, CS3_SW8}, // 90, ], k61 + {1, CS4_SW8, CS5_SW8, CS6_SW8}, // 91, Sh_R, k91 + {1, CS13_SW8, CS14_SW8, CS15_SW8}, // 92, LED, l08 + {1, CS16_SW8, CS17_SW8, CS18_SW8}, // 93, LED, l18 + {1, CS4_SW9, CS5_SW9, CS6_SW9}, // 94, Up, k35 + {1, CS1_SW10, CS2_SW10, CS3_SW10}, // 95, #, k84 + {1, CS4_SW10, CS5_SW10, CS6_SW10}, // 96, Left, k03 + {1, CS1_SW11, CS2_SW11, CS3_SW11}, // 97, Enter, ka4 + {1, CS4_SW11, CS5_SW11, CS6_SW11}, // 98, Down, k73 +}; +// clang-format on +#endif diff --git a/keyboards/gmmk/pro/iso/iso.h b/keyboards/gmmk/pro/iso/iso.h new file mode 100644 index 000000000000..353bcbe87558 --- /dev/null +++ b/keyboards/gmmk/pro/iso/iso.h @@ -0,0 +1,52 @@ +/* Copyright 2021 Gigahawk + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "pro.h" + +#define ___ KC_NO + +// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute) +// ` 1 2 3 4 5 6 7 8 9 0 - = BSpc Del +// Tab Q W E R T Y U I O P [ ] PgUp +// Caps A S D F G H J K L ; ' # Enter PgDn +// Sh_L \ Z X C V B N M , . / Sh_R Up End +// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right + +// clang-format off +#define LAYOUT( \ + k13, k26, k36, k31, k33, k07, k63, k71, k76, ka6, ka7, ka3, ka5, k97, k01, \ + k16, k17, k27, k37, k47, k46, k56, k57, k67, k77, k87, k86, k66, ka1, k65, \ + k11, k10, k20, k30, k40, k41, k51, k50, k60, k70, k80, k81, k61, k15, \ + k21, k12, k22, k32, k42, k43, k53, k52, k62, k72, k82, k83, k84, ka4, k25, \ + k00, k23, k14, k24, k34, k44, k45, k55, k54, k64, k74, k85, k91, k35, k75, \ + k06, k90, k93, k94, k95, k92, k04, k03, k73, k05 \ +) \ +{ \ + { k00, k01, ___, 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, ___, k97}, \ + { ___, ka1, ___, ka3, ka4, ka5, ka6, ka7} \ +} +// clang-format on diff --git a/keyboards/gmmk/pro/iso/keymaps/default/keymap.c b/keyboards/gmmk/pro/iso/keymaps/default/keymap.c new file mode 100644 index 000000000000..67b95c755f75 --- /dev/null +++ b/keyboards/gmmk/pro/iso/keymaps/default/keymap.c @@ -0,0 +1,72 @@ +/* Copyright 2021 Glorious, LLC + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute) +// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del +// Tab Q W E R T Y U I O P [ ] PgUp +// Caps A S D F G H J K L ; " # Enter PgDn +// Sh_L / Z X C V B N M , . ? Sh_R Up End +// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right + + + // The FN key by default maps to a momentary toggle to layer 1 to provide access to the RESET key (to put the board into bootloader mode). Without + // this mapping, you have to open the case to hit the button on the bottom of the PCB (near the USB cable attachment) while plugging in the USB + // cable to get the board into bootloader mode - definitely not fun when you're working on your QMK builds. Remove this and put it back to KC_RGUI + // if that's your preference. + // + // To put the keyboard in bootloader mode, use FN+backspace. If you accidentally put it into bootloader, you can just unplug the USB cable and + // it'll be back to normal when you plug it back in. + // + // This keyboard defaults to 6KRO instead of NKRO for compatibility reasons (some KVMs and BIOSes are incompatible with NKRO). + // Since this is, among other things, a "gaming" keyboard, a key combination to enable NKRO on the fly is provided for convenience. + // Press Fn+N to toggle between 6KRO and NKRO. This setting is persisted to the EEPROM and thus persists between restarts. + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_MUTE, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT( + _______, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, + _______, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, + _______, _______, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, RGB_HUI, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, RGB_MOD, _______, + _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI + ), + + +}; +// clang-format on + +#ifdef ENCODER_ENABLE +bool encoder_update_user(uint8_t index, bool clockwise) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + return true; +} +#endif diff --git a/keyboards/gmmk/pro/iso/keymaps/via/keymap.c b/keyboards/gmmk/pro/iso/keymaps/via/keymap.c new file mode 100644 index 000000000000..c83af17fe103 --- /dev/null +++ b/keyboards/gmmk/pro/iso/keymaps/via/keymap.c @@ -0,0 +1,91 @@ +/* Copyright 2021 Glorious, LLC + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute) +// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del +// Tab Q W E R T Y U I O P [ ] PgUp +// Caps A S D F G H J K L ; " # Enter PgDn +// Sh_L / Z X C V B N M , . ? Sh_R Up End +// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right + + + // The FN key by default maps to a momentary toggle to layer 1 to provide access to the RESET key (to put the board into bootloader mode). Without + // this mapping, you have to open the case to hit the button on the bottom of the PCB (near the USB cable attachment) while plugging in the USB + // cable to get the board into bootloader mode - definitely not fun when you're working on your QMK builds. Remove this and put it back to KC_RGUI + // if that's your preference. + // + // To put the keyboard in bootloader mode, use FN+backspace. If you accidentally put it into bootloader, you can just unplug the USB cable and + // it'll be back to normal when you plug it back in. + // + // This keyboard defaults to 6KRO instead of NKRO for compatibility reasons (some KVMs and BIOSes are incompatible with NKRO). + // Since this is, among other things, a "gaming" keyboard, a key combination to enable NKRO on the fly is provided for convenience. + // Press Fn+N to toggle between 6KRO and NKRO. This setting is persisted to the EEPROM and thus persists between restarts. + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_MUTE, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT( + _______, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, + _______, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, + _______, _______, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, RGB_HUI, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, RGB_MOD, _______, + _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI + ), + + + [2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + +}; +// clang-format on + +#ifdef ENCODER_ENABLE +bool encoder_update_user(uint8_t index, bool clockwise) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + return true; +} +#endif // ENCODER_ENABLE diff --git a/keyboards/gmmk/pro/iso/keymaps/via/rules.mk b/keyboards/gmmk/pro/iso/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/gmmk/pro/iso/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/gmmk/pro/iso/readme.md b/keyboards/gmmk/pro/iso/readme.md new file mode 100644 index 000000000000..62dbee5d0f66 --- /dev/null +++ b/keyboards/gmmk/pro/iso/readme.md @@ -0,0 +1,37 @@ +# GMMK PRO (ISO) + +A tenkeyless 75% keyboard made and sold by Glorious LLC. Equipped with the STM32 ARM Cortex-M4 microcontroller, with support for rotary encoders and three additional layouts. [More info at Glorious](https://www.pcgamingrace.com/products/glorious-gmmk-pro-75-barebone-black-reservation) + +* Keyboard Maintainer: [GloriousThrall](https://github.com/GloriousThrall) +* Hardware Supported: GMMK Pro +* Hardware Availability: [GloriousPCGaming.com](https://www.pcgamingrace.com/products/glorious-gmmk-pro-75-barebone-black-reservation) + +Make example for this keyboard (after setting up your build environment): + + make gmmk/pro/iso:default + +Flashing example for this keyboard: + + make gmmk/pro/iso:default:flash + +To reset the board into bootloader mode, do one of the following: + +* Hold the Reset switch mounted on the bottom side of the PCB while connecting the USB cable +* Hold the Escape key while connecting the USB cable (also erases persistent settings) +* Fn+Backspace will reset the board to bootloader mode if you have flashed the default QMK keymap + +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). + +## Case Screw Replacements + +Many users report stripped case screws when disassembling the board. + +The stock case screws are: +* Thread: M2 +* Thread length: ~5 mm +* Head diameter: ~3.8 mm +* Head counterbore diameter: ~4.0 mm +* Head counterbore depth: ~1.9 mm + +Most M2x5mm screws should fit fine, although it's best to ensure that the screw head will fit inside the counterbore. +For reference, [this hex socket head screw](https://www.mcmaster.com/91292A005/) from McMaster-Carr should fit nearly flush (head will protrude above the counterbore by ~0.1 mm). diff --git a/keyboards/gmmk/pro/iso/rules.mk b/keyboards/gmmk/pro/iso/rules.mk new file mode 100644 index 000000000000..dc7fa29b6bac --- /dev/null +++ b/keyboards/gmmk/pro/iso/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = STM32F303 + +# Bootloader selection +BOOTLOADER = stm32-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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = AW20216 diff --git a/keyboards/gmmk/pro/keymaps/default/keymap.c b/keyboards/gmmk/pro/keymaps/default/keymap.c deleted file mode 100644 index b08400cd8dc3..000000000000 --- a/keyboards/gmmk/pro/keymaps/default/keymap.c +++ /dev/null @@ -1,65 +0,0 @@ -/* Copyright 2021 Glorious, LLC - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute) -// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del -// Tab Q W E R T Y U I O P [ ] \ PgUp -// Caps A S D F G H J K L ; " Enter PgDn -// Sh_L Z X C V B N M , . ? Sh_R Up End -// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right - - - // The FN key by default maps to a momentary toggle to layer 1 to provide access to the RESET key (to put the board into bootloader mode). Without - // this mapping, you have to open the case to hit the button on the bottom of the PCB (near the USB cable attachment) while plugging in the USB - // cable to get the board into bootloader mode - definitely not fun when you're working on your QMK builds. Remove this and put it back to KC_RGUI - // if that's your preference. - // - // To put the keyboard in bootloader mode, use FN+backslash. If you accidentally put it into bootloader, you can just unplug the USB cable and - // it'll be back to normal when you plug it back in. - [0] = LAYOUT( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_MUTE, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), - - [1] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - - -}; - - -bool encoder_update_user(uint8_t index, bool clockwise) { - if (clockwise) { - tap_code(KC_VOLU); - } else { - tap_code(KC_VOLD); - } - return true; -} diff --git a/keyboards/gmmk/pro/keymaps/moults31/keymap.c b/keyboards/gmmk/pro/keymaps/moults31/keymap.c new file mode 100644 index 000000000000..90ac428c742c --- /dev/null +++ b/keyboards/gmmk/pro/keymaps/moults31/keymap.c @@ -0,0 +1,92 @@ +/* Copyright 2021 Glorious, LLC + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +#include "moults31.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute) +// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del +// Tab Q W E R T Y U I O P [ ] \ PgUp +// Caps A S D F G H J K L ; " Enter PgDn +// Sh_L Z X C V B N M , . ? Sh_R Up End +// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right + + + // The FN key by default maps to a momentary toggle to layer 1 to provide access to the RESET key (to put the board into bootloader mode). Without + // this mapping, you have to open the case to hit the button on the bottom of the PCB (near the USB cable attachment) while plugging in the USB + // cable to get the board into bootloader mode - definitely not fun when you're working on your QMK builds. Remove this and put it back to KC_RGUI + // if that's your preference. + // + // To put the keyboard in bootloader mode, use FN+backslash. If you accidentally put it into bootloader, you can just unplug the USB cable and + // it'll be back to normal when you plug it back in. + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_MPLY, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_DEL, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(2), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, KC_CALC, _______, KC_INS, _______, KC_PSCR, _______, _______, RESET, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [2] = LAYOUT( + M_GDB_STOP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, M_VSC_DBGCNSLFOCUS, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, M_VSC_VIEWSIZEINC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, M_VSC_EDGRPPRV, M_VSC_VIEWSIZEDEC, M_VSC_EDGRPNXT, _______, _______, _______, _______, _______, _______, _______, _______, M_GDB_PLAY, M_GDB_PAUSE, + _______, M_VSC_FILEPRV, M_VSC_FILENXT, _______, _______, _______, _______, _______, _______, _______, _______, _______, M_GDB_STEPOUT, _______, + _______, _______, _______, _______, _______, _______, _______, M_GDB_RESTART, M_GDB_STEPIN, M_GDB_STEPOVER + ), + +}; + + +bool encoder_update_user(uint8_t index, bool clockwise) { + const layer_state_t curr_layer = get_highest_layer(layer_state); + if(curr_layer == 2) { + if (clockwise) { + moults31_tap_custom_code(M_VSC_FILENXT); + } else { + moults31_tap_custom_code(M_VSC_FILEPRV); + } + } + else if(curr_layer == 1) { + if (clockwise) { + moults31_tap_custom_code(M_VSC_VIEWSIZEINC); + } else { + moults31_tap_custom_code(M_VSC_VIEWSIZEDEC); + } + } + else { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } + return false; +} diff --git a/keyboards/gmmk/pro/keymaps/via/keymap.c b/keyboards/gmmk/pro/keymaps/via/keymap.c deleted file mode 100644 index 940cc1c1f34f..000000000000 --- a/keyboards/gmmk/pro/keymaps/via/keymap.c +++ /dev/null @@ -1,75 +0,0 @@ -/* Copyright 2021 Glorious, LLC - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute) -// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del -// Tab Q W E R T Y U I O P [ ] \ PgUp -// Caps A S D F G H J K L ; " Enter PgDn -// Sh_L Z X C V B N M , . ? Sh_R Up End -// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right - - - [0] = LAYOUT( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_MUTE, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), - - [1] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - - [2] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - - [3] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - -}; - - -bool encoder_update_user(uint8_t index, bool clockwise) { - if (clockwise) { - tap_code(KC_VOLU); - } else { - tap_code(KC_VOLD); - } - return true; -} diff --git a/keyboards/gmmk/pro/keymaps/willwm/keymap.c b/keyboards/gmmk/pro/keymaps/willwm/keymap.c deleted file mode 100644 index a17f79331905..000000000000 --- a/keyboards/gmmk/pro/keymaps/willwm/keymap.c +++ /dev/null @@ -1,74 +0,0 @@ -/* Copyright 2021 Glorious, LLC - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Del Rotary(Mute) -// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Home -// Tab Q W E R T Y U I O P [ ] \ PgUp -// Caps A S D F G H J K L ; " Enter PgDn -// Sh_L Z X C V B N M , . ? Sh_R Up End -// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right - - - [0] = LAYOUT( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_MUTE, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, - MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), - - [1] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, - KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______, - _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END - ), - - [2] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - - [3] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - -}; - - -void encoder_update_user(uint8_t index, bool clockwise) { - if (clockwise) { - tap_code(KC_VOLU); - } else { - tap_code(KC_VOLD); - } -} diff --git a/keyboards/gmmk/pro/mcuconf.h b/keyboards/gmmk/pro/mcuconf.h new file mode 100644 index 000000000000..bb1c0acde23d --- /dev/null +++ b/keyboards/gmmk/pro/mcuconf.h @@ -0,0 +1,6 @@ +#pragma once + +#include_next + +#undef STM32_SPI_USE_SPI1 +#define STM32_SPI_USE_SPI1 TRUE diff --git a/keyboards/gmmk/pro/pro.h b/keyboards/gmmk/pro/pro.h index ddce60241bae..38dd4d78b9f8 100644 --- a/keyboards/gmmk/pro/pro.h +++ b/keyboards/gmmk/pro/pro.h @@ -18,33 +18,8 @@ along with this program. If not, see . #include "quantum.h" -#define ___ KC_NO - -// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute) -// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BSpc Del -// Tab Q W E R T Y U I O P [ ] \ PgUp -// Caps A S D F G H J K L ; " Enter PgDn -// Sh_L Z X C V B N M , . ? Sh_R Up End -// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right - -#define LAYOUT( \ - k13, k26, k36, k31, k33, k07, k63, k71, k76, ka6, ka7, ka3, ka5, k97, k01, \ - k16, k17, k27, k37, k47, k46, k56, k57, k67, k77, k87, k86, k66, ka1, k65, \ - k11, k10, k20, k30, k40, k41, k51, k50, k60, k70, k80, k81, k61, ka2, k15, \ - k21, k12, k22, k32, k42, k43, k53, k52, k62, k72, k82, k83, ka4, k25, \ - k00, k14, k24, k34, k44, k45, k55, k54, k64, k74, k85, k91, k35, k75, \ - k06, k90, k93, k94, k95, k92, k04, k03, k73, k05 \ -) \ -{ \ - { k00, k01, ___, k03, k04, k05, k06, k07}, \ - { k10, k11, k12, k13, k14, k15, k16, k17}, \ - { k20, k21, k22, ___, 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, ___, k85, k86, k87}, \ - { k90, k91, k92, k93, k94, k95, ___, k97}, \ - { ___, ka1, ka2, ka3, ka4, ka5, ka6, ka7} \ -} +#if defined(KEYBOARD_gmmk_pro_ansi) +# include "ansi.h" +#elif defined(KEYBOARD_gmmk_pro_iso) +# include "iso.h" +#endif // GMMK Pro revisions diff --git a/keyboards/gmmk/pro/readme.md b/keyboards/gmmk/pro/readme.md deleted file mode 100644 index 2307a525ca0e..000000000000 --- a/keyboards/gmmk/pro/readme.md +++ /dev/null @@ -1,23 +0,0 @@ -# GMMK PRO - -A tenkeyless 75% keyboard made and sold by Glorious LLC. Equipped with the STM32 ARM Cortex-M4 microcontroller, with support for rotary encoders and three additional layouts. [More info at Glorious](https://www.pcgamingrace.com/products/glorious-gmmk-pro-75-barebone-black-reservation) - -* Keyboard Maintainer: [GloriousThrall](https://github.com/GloriousThrall) -* Hardware Supported: GMMK Pro -* Hardware Availability: [GloriousPCGaming.com](https://www.pcgamingrace.com/products/glorious-gmmk-pro-75-barebone-black-reservation) - -Make example for this keyboard (after setting up your build environment): - - make gmmk/pro:default - -Flashing example for this keyboard: - - make gmmk/pro:default:flash - -To reset the board into bootloader mode, do one of the following: - -* Hold the Reset switch mounted on the bottom side of the PCB while connecting the USB cable -* Hold the Escape key while connecting the USB cable (also erases persistent settings) -* Fn+Backslash will reset the board to bootloader mode if you have flashed the default QMK keymap - -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/gmmk/pro/rules.mk b/keyboards/gmmk/pro/rules.mk deleted file mode 100644 index b12d055a3d90..000000000000 --- a/keyboards/gmmk/pro/rules.mk +++ /dev/null @@ -1,23 +0,0 @@ -# MCU name -MCU = STM32F303 - -# Bootloader selection -BOOTLOADER = stm32-dfu - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -# 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth -AUDIO_ENABLE = no # Audio output -ENCODER_ENABLE = yes diff --git a/keyboards/gon/nerd60/config.h b/keyboards/gon/nerd60/config.h index 7483142df7a3..5e2fe57327d4 100644 --- a/keyboards/gon/nerd60/config.h +++ b/keyboards/gon/nerd60/config.h @@ -3,8 +3,8 @@ #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x6FD7 +#define VENDOR_ID 0x4E45 // NE +#define PRODUCT_ID 0x3630 // 60 #define DEVICE_VER 0x0001 #define MANUFACTURER GON #define PRODUCT NerD 60 @@ -32,3 +32,7 @@ #define LOCKING_SUPPORT_ENABLE /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE + +/* ROW and COL for ESC key */ +#define BOOTMAGIC_LITE_ROW 8 +#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/gon/nerd60/info.json b/keyboards/gon/nerd60/info.json index 98634f33ed96..66db3f118503 100644 --- a/keyboards/gon/nerd60/info.json +++ b/keyboards/gon/nerd60/info.json @@ -2,8 +2,6 @@ "keyboard_name": "GON NerD 60", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/gon/nerd60/keymaps/mauin/rules.mk b/keyboards/gon/nerd60/keymaps/mauin/rules.mk index 949aff1cd7ca..4bf836c22a2a 100644 --- a/keyboards/gon/nerd60/keymaps/mauin/rules.mk +++ b/keyboards/gon/nerd60/keymaps/mauin/rules.mk @@ -1,7 +1,7 @@ # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 diff --git a/keyboards/gon/nerd60/keymaps/via/keymap.c b/keyboards/gon/nerd60/keymaps/via/keymap.c new file mode 100644 index 000000000000..96b563db34ec --- /dev/null +++ b/keyboards/gon/nerd60/keymaps/via/keymap.c @@ -0,0 +1,52 @@ +/* Copyright 2021 Ramsin Isreal + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Keymap layers +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( /* Base */ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_NUHS, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL + ), + + [1] = LAYOUT_all( /* System layer to have access to RESET button */ + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, + _______, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_UP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, _______, + _______, _______, _______, _______, _______, _______, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_DEL, _______, + _______, _______, KC_APP, _______, _______, _______, _______, KC_END, _______, _______, _______, _______, _______, _______, + RESET, _______, _______, _______, _______, _______, _______, _______ + ), + + [2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; diff --git a/keyboards/gon/nerd60/keymaps/via/rules.mk b/keyboards/gon/nerd60/keymaps/via/rules.mk new file mode 100644 index 000000000000..b972da789c6c --- /dev/null +++ b/keyboards/gon/nerd60/keymaps/via/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes +BACKLIGHT_ENABLE = yes \ No newline at end of file diff --git a/keyboards/gon/nerd60/rules.mk b/keyboards/gon/nerd60/rules.mk index b202fac6a241..648499f4a8b1 100644 --- a/keyboards/gon/nerd60/rules.mk +++ b/keyboards/gon/nerd60/rules.mk @@ -10,18 +10,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LAYOUTS = 60_ansi 60_ansi_split_bs_rshift 60_iso 60_iso_split_bs_rshift diff --git a/keyboards/gon/nerdtkl/info.json b/keyboards/gon/nerdtkl/info.json index 475632ebf3ff..45155fd7374d 100644 --- a/keyboards/gon/nerdtkl/info.json +++ b/keyboards/gon/nerdtkl/info.json @@ -2,11 +2,8 @@ "keyboard_name": "GON NerD TKL", "url": "", "maintainer": "qmk", - "width": 18.25, - "height": 6.25, "layouts": { "LAYOUT_tkl": { - "key_count": 90, "layout": [ {"label":"K80", "x":0, "y":0}, {"label":"K90", "x":2, "y":0}, diff --git a/keyboards/gon/nerdtkl/keymaps/gam3cat/keymap.c b/keyboards/gon/nerdtkl/keymaps/gam3cat/keymap.c index 3142209d6fb3..c4294c812e43 100644 --- a/keyboards/gon/nerdtkl/keymaps/gam3cat/keymap.c +++ b/keyboards/gon/nerdtkl/keymaps/gam3cat/keymap.c @@ -240,7 +240,7 @@ void matrix_scan_user(void) { } -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { switch (biton32(state)) { case _BL: custom_backlight_level(0); diff --git a/keyboards/gon/nerdtkl/keymaps/gam3cat/rules.mk b/keyboards/gon/nerdtkl/keymaps/gam3cat/rules.mk index 6151bcf23171..c82cafd606bf 100644 --- a/keyboards/gon/nerdtkl/keymaps/gam3cat/rules.mk +++ b/keyboards/gon/nerdtkl/keymaps/gam3cat/rules.mk @@ -1,7 +1,7 @@ # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 @@ -18,7 +18,6 @@ UNICODEMAP_ENABLE = no # Enable extended unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE = no # Audio output on port C6 #VARIABLE_TRACE = no # Use this to debug changes to variable values -API_SYSEX_ENABLE = no # This enables using the Quantum SYSEX API to send strings KEY_LOCK_ENABLE = no # This enables key lock SPLIT_KEYBOARD = no # This enables split keyboard support and includes all necessary files located at quantum/split_common TAP_DANCE_ENABLE = no # Enable TapDance functionality diff --git a/keyboards/gon/nerdtkl/rules.mk b/keyboards/gon/nerdtkl/rules.mk index 2401cbea8592..4c0916dc33c8 100644 --- a/keyboards/gon/nerdtkl/rules.mk +++ b/keyboards/gon/nerdtkl/rules.mk @@ -5,30 +5,18 @@ MCU = atmega32u4 F_CPU = 8000000 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# 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 -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/gorthage_truck/config.h b/keyboards/gorthage_truck/config.h new file mode 100644 index 000000000000..46a928b9d639 --- /dev/null +++ b/keyboards/gorthage_truck/config.h @@ -0,0 +1,60 @@ +/* +Copyright 2021 s8erdude + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xB33F +#define PRODUCT_ID 0x58E4 +#define DEVICE_VER 0x0001 +#define MANUFACTURER s8erdude +#define PRODUCT gorthage_truck + +/* key matrix size */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 9 + +/* + * 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 { C6, B6, B5, B4, C7, B3, B7, D7} +#define MATRIX_COL_PINS { F0, F1, F4, F7, D6, E6, B0, B1, B2} +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +// LEFT -> RIGHT +// D5, D3, D2 +#define LED_NUM_LOCK_PIN D5 +#define LED_CAPS_LOCK_PIN D3 +#define LED_SCROLL_LOCK_PIN D2 + +#define ENCODERS_PAD_A { F5 } +#define ENCODERS_PAD_B { F6 } diff --git a/keyboards/gorthage_truck/gorthage_truck.c b/keyboards/gorthage_truck/gorthage_truck.c new file mode 100644 index 000000000000..27456669168d --- /dev/null +++ b/keyboards/gorthage_truck/gorthage_truck.c @@ -0,0 +1,29 @@ +/* Copyright 2021 s8erdude + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "gorthage_truck.h" + +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + if (index == 0) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } + return true; +} diff --git a/keyboards/gorthage_truck/gorthage_truck.h b/keyboards/gorthage_truck/gorthage_truck.h new file mode 100644 index 000000000000..ed0ff9d22881 --- /dev/null +++ b/keyboards/gorthage_truck/gorthage_truck.h @@ -0,0 +1,77 @@ +/* Copyright 2021 s8erdude + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT_3u( \ + k00, k01, k02, k03, k04, k05, k06, k07, k40, k41, k42, k43, k44, k45, k46, k47, k48, \ + k10, k11, k12, k13, k14, k15, k16, k17, k50, k51, k52, k53, k54, k56, k57, k58, \ + k20, k21, k22, k23, k24, k25, k26, k27, k60, k61, k62, k63, k64, k65, k66, k67, k68, \ + k30, k31, k32, k34, k70, k71, k73, k74, k75, k76, k77, k78 \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, XXX }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, XXX }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, XXX }, \ + { k30, k31, k32, XXX, k34, XXX, XXX, XXX, XXX }, \ + { k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \ + { k50, k51, k52, k53, k54, XXX, k56, k57, k58 }, \ + { k60, k61, k62, k63, k64, k65, k66, k67, k68 }, \ + { k70, k71, XXX, k73, k74, k75, k76, k77, k78 } \ +} + +#define LAYOUT_7u( \ + k00, k01, k02, k03, k04, k05, k06, k07, k40, k41, k42, k43, k44, k45, k46, k47, k48, \ + k10, k11, k12, k13, k14, k15, k16, k17, k50, k51, k52, k53, k54, k56, k57, k58, \ + k20, k21, k22, k23, k24, k25, k26, k27, k60, k61, k62, k63, k64, k65, k66, k67, k68, \ + k30, k31, k32, k37, k73, k74, k75, k76, k77, k78 \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, XXX }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, XXX }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, XXX }, \ + { k30, k31, k32, XXX, XXX, XXX, XXX, k37, XXX }, \ + { k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \ + { k50, k51, k52, k53, k54, XXX, k56, k57, k58 }, \ + { k60, k61, k62, k63, k64, k65, k66, k67, k68 }, \ + { XXX, XXX, XXX, k73, k74, k75, k76, k77, k78 } \ +} + +#define LAYOUT_10u( \ + k00, k01, k02, k03, k04, k05, k06, k07, k40, k41, k42, k43, k44, k45, k46, k47, k48, \ + k10, k11, k12, k13, k14, k15, k16, k17, k50, k51, k52, k53, k54, k56, k57, k58, \ + k20, k21, k22, k23, k24, k25, k26, k27, k60, k61, k62, k63, k64, k65, k66, k67, k68, \ + k30, k36, k73, k74, k75, k76, k77, k78 \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, XXX }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, XXX }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, XXX }, \ + { k30, XXX, XXX, XXX, XXX, XXX, k36, XXX, XXX }, \ + { k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \ + { k50, k51, k52, k53, k54, XXX, k56, k57, k58 }, \ + { k60, k61, k62, k63, k64, k65, k66, k67, k68 }, \ + { XXX, XXX, XXX, k73, k74, k75, k76, k77, k78 } \ +} diff --git a/keyboards/gorthage_truck/info.json b/keyboards/gorthage_truck/info.json new file mode 100644 index 000000000000..8f344ee86054 --- /dev/null +++ b/keyboards/gorthage_truck/info.json @@ -0,0 +1,208 @@ +{ + "keyboard_name": "gorthage_truck", + "url": "https://github.com/jpuerto96", + "maintainer": "jpuerto96 (s8erdude)", + "layouts": { + "LAYOUT_3u": { + "layout": [ + {"label":"Tab", "x":0, "y":0}, + {"label":"Q", "x":1, "y":0}, + {"label":"W", "x":2, "y":0}, + {"label":"E", "x":3, "y":0}, + {"label":"R", "x":4, "y":0}, + {"label":"T", "x":5, "y":0}, + {"label":"Y", "x":6, "y":0}, + {"label":"U", "x":7, "y":0}, + {"label":"I", "x":8, "y":0}, + {"label":"O", "x":9, "y":0}, + {"label":"P", "x":10, "y":0}, + {"label":"[{", "x":11, "y":0}, + {"label":"]}", "x":12, "y":0}, + {"label":"Play", "x":13.5, "y":0.5}, + {"label":"7", "x":15, "y":0}, + {"label":"8", "x":16, "y":0}, + {"label":"9", "x":17, "y":0}, + + {"label":"Caps Lock", "x":0, "y":1}, + {"label":"A", "x":1, "y":1}, + {"label":"S", "x":2, "y":1}, + {"label":"D", "x":3, "y":1}, + {"label":"F", "x":4, "y":1}, + {"label":"G", "x":5, "y":1}, + {"label":"H", "x":6, "y":1}, + {"label":"J", "x":7, "y":1}, + {"label":"K", "x":8, "y":1}, + {"label":"L", "x":9, "y":1}, + {"label":";:", "x":10, "y":1}, + {"label":"'\"", "x":11, "y":1}, + {"label":"\\|", "x":12, "y":1}, + {"label":"4", "x":15, "y":1}, + {"label":"5", "x":16, "y":1}, + {"label":"6", "x":17, "y":1}, + + {"label":"-_", "x":0, "y":2}, + {"label":"Z", "x":1, "y":2}, + {"label":"X", "x":2, "y":2}, + {"label":"C", "x":3, "y":2}, + {"label":"V", "x":4, "y":2}, + {"label":"B", "x":5, "y":2}, + {"label":"N", "x":6, "y":2}, + {"label":"M", "x":7, "y":2}, + {"label":",<", "x":8, "y":2}, + {"label":".>", "x":9, "y":2}, + {"label":"/?", "x":10, "y":2}, + {"label":"Shift", "x":11, "y":2}, + {"label":"Backspace", "x":12, "y":2}, + {"label":"\u2191", "x":13.5, "y":2.5}, + {"label":"1", "x":15, "y":2}, + {"label":"2", "x":16, "y":2}, + {"label":"3", "x":17, "y":2}, + + {"label":"Ctrl", "x":0, "y":3, "w":1.25}, + {"label":"Alt", "x":1.25, "y":3, "w":1.25}, + {"label":"GUI", "x":2.5, "y":3}, + {"label":"Space", "x":3.5, "y":3, "w":3}, + {"label":"Enter", "x":6.5, "y":3, "w":3}, + {"label":"GUI", "x":9.5, "y":3, "w":1.25}, + {"label":"Alt", "x":10.75, "y":3, "w":1.25}, + {"label":"\u2190", "x":12.5, "y":3.5}, + {"label":"\u2193", "x":13.5, "y":3.5}, + {"label":"\u2192", "x":14.5, "y":3.5}, + {"label":"0", "x":16, "y":3}, + {"label":".", "x":17, "y":3} + ] + }, + "LAYOUT_7u": { + "layout": [ + {"label":"Tab", "x":0, "y":0}, + {"label":"Q", "x":1, "y":0}, + {"label":"W", "x":2, "y":0}, + {"label":"E", "x":3, "y":0}, + {"label":"R", "x":4, "y":0}, + {"label":"T", "x":5, "y":0}, + {"label":"Y", "x":6, "y":0}, + {"label":"U", "x":7, "y":0}, + {"label":"I", "x":8, "y":0}, + {"label":"O", "x":9, "y":0}, + {"label":"P", "x":10, "y":0}, + {"label":"[{", "x":11, "y":0}, + {"label":"]}", "x":12, "y":0}, + {"label":"Play", "x":13.5, "y":0.5}, + {"label":"7", "x":15, "y":0}, + {"label":"8", "x":16, "y":0}, + {"label":"9", "x":17, "y":0}, + + {"label":"Caps Lock", "x":0, "y":1}, + {"label":"A", "x":1, "y":1}, + {"label":"S", "x":2, "y":1}, + {"label":"D", "x":3, "y":1}, + {"label":"F", "x":4, "y":1}, + {"label":"G", "x":5, "y":1}, + {"label":"H", "x":6, "y":1}, + {"label":"J", "x":7, "y":1}, + {"label":"K", "x":8, "y":1}, + {"label":"L", "x":9, "y":1}, + {"label":";:", "x":10, "y":1}, + {"label":"'\"", "x":11, "y":1}, + {"label":"\\|", "x":12, "y":1}, + {"label":"4", "x":15, "y":1}, + {"label":"5", "x":16, "y":1}, + {"label":"6", "x":17, "y":1}, + + {"label":"-_", "x":0, "y":2}, + {"label":"Z", "x":1, "y":2}, + {"label":"X", "x":2, "y":2}, + {"label":"C", "x":3, "y":2}, + {"label":"V", "x":4, "y":2}, + {"label":"B", "x":5, "y":2}, + {"label":"N", "x":6, "y":2}, + {"label":"M", "x":7, "y":2}, + {"label":",<", "x":8, "y":2}, + {"label":".>", "x":9, "y":2}, + {"label":"/?", "x":10, "y":2}, + {"label":"Shift", "x":11, "y":2}, + {"label":"Backspace", "x":12, "y":2}, + {"label":"\u2191", "x":13.5, "y":2.5}, + {"label":"1", "x":15, "y":2}, + {"label":"2", "x":16, "y":2}, + {"label":"3", "x":17, "y":2}, + + {"label":"Ctrl", "x":0, "y":3, "w":1.25}, + {"label":"Alt", "x":1.25, "y":3, "w":1.25}, + {"label":"GUI", "x":2.5, "y":3, "w":1.25}, + {"label":"Space", "x":3.75, "y":3, "w":7}, + {"label":"GUI", "x":10.75, "y":3, "w":1.25}, + {"label":"\u2190", "x":12.5, "y":3.5}, + {"label":"\u2193", "x":13.5, "y":3.5}, + {"label":"\u2192", "x":14.5, "y":3.5}, + {"label":"0", "x":16, "y":3}, + {"label":".", "x":17, "y":3} + ] + }, + "LAYOUT_10u": { + "layout": [ + {"label":"Tab", "x":0, "y":0}, + {"label":"Q", "x":1, "y":0}, + {"label":"W", "x":2, "y":0}, + {"label":"E", "x":3, "y":0}, + {"label":"R", "x":4, "y":0}, + {"label":"T", "x":5, "y":0}, + {"label":"Y", "x":6, "y":0}, + {"label":"U", "x":7, "y":0}, + {"label":"I", "x":8, "y":0}, + {"label":"O", "x":9, "y":0}, + {"label":"P", "x":10, "y":0}, + {"label":"[{", "x":11, "y":0}, + {"label":"]}", "x":12, "y":0}, + {"label":"Play", "x":13.5, "y":0.5}, + {"label":"7", "x":15, "y":0}, + {"label":"8", "x":16, "y":0}, + {"label":"9", "x":17, "y":0}, + + {"label":"Caps Lock", "x":0, "y":1}, + {"label":"A", "x":1, "y":1}, + {"label":"S", "x":2, "y":1}, + {"label":"D", "x":3, "y":1}, + {"label":"F", "x":4, "y":1}, + {"label":"G", "x":5, "y":1}, + {"label":"H", "x":6, "y":1}, + {"label":"J", "x":7, "y":1}, + {"label":"K", "x":8, "y":1}, + {"label":"L", "x":9, "y":1}, + {"label":";:", "x":10, "y":1}, + {"label":"'\"", "x":11, "y":1}, + {"label":"\\|", "x":12, "y":1}, + {"label":"4", "x":15, "y":1}, + {"label":"5", "x":16, "y":1}, + {"label":"6", "x":17, "y":1}, + + {"label":"-_", "x":0, "y":2}, + {"label":"Z", "x":1, "y":2}, + {"label":"X", "x":2, "y":2}, + {"label":"C", "x":3, "y":2}, + {"label":"V", "x":4, "y":2}, + {"label":"B", "x":5, "y":2}, + {"label":"N", "x":6, "y":2}, + {"label":"M", "x":7, "y":2}, + {"label":",<", "x":8, "y":2}, + {"label":".>", "x":9, "y":2}, + {"label":"/?", "x":10, "y":2}, + {"label":"Shift", "x":11, "y":2}, + {"label":"Backspace", "x":12, "y":2}, + {"label":"\u2191", "x":13.5, "y":2.5}, + {"label":"1", "x":15, "y":2}, + {"label":"2", "x":16, "y":2}, + {"label":"3", "x":17, "y":2}, + + {"label":"Ctrl", "x":0, "y":3}, + {"label":"Space", "x":1, "y":3, "w":10}, + {"label":"GUI", "x":11, "y":3}, + {"label":"\u2190", "x":12.5, "y":3.5}, + {"label":"\u2193", "x":13.5, "y":3.5}, + {"label":"\u2192", "x":14.5, "y":3.5}, + {"label":"0", "x":16, "y":3}, + {"label":".", "x":17, "y":3} + ] + } + } +} diff --git a/keyboards/gorthage_truck/keymaps/10u/keymap.c b/keyboards/gorthage_truck/keymaps/10u/keymap.c new file mode 100644 index 000000000000..f289c3c8c859 --- /dev/null +++ b/keyboards/gorthage_truck/keymaps/10u/keymap.c @@ -0,0 +1,42 @@ +/* Copyright 2021 s8erdude + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT_10u( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_MINS, KC_MPLY, KC_1, KC_2, KC_3, + 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_EQL, KC_4, KC_5, KC_6, + KC_LCAP, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_ENT, KC_SLSH, KC_GRV, KC_UP, KC_7, KC_8, KC_9, + KC_LGUI, KC_RSFT, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT, KC_DOT, KC_0 + ) +}; + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { /* First encoder */ + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } + return true; +} diff --git a/keyboards/gorthage_truck/keymaps/10u/readme.md b/keyboards/gorthage_truck/keymaps/10u/readme.md new file mode 100644 index 000000000000..ba57cd8dc7c9 --- /dev/null +++ b/keyboards/gorthage_truck/keymaps/10u/readme.md @@ -0,0 +1 @@ +# The default keymap for gorthage_truck diff --git a/keyboards/gorthage_truck/keymaps/7u/keymap.c b/keyboards/gorthage_truck/keymaps/7u/keymap.c new file mode 100644 index 000000000000..679e6eeb64f2 --- /dev/null +++ b/keyboards/gorthage_truck/keymaps/7u/keymap.c @@ -0,0 +1,42 @@ +/* Copyright 2021 s8erdude + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT_7u( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_MINS, KC_MPLY, KC_1, KC_2, KC_3, + 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_EQL, KC_4, KC_5, KC_6, + KC_LCAP, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_ENT, KC_SLSH, KC_GRV, KC_UP, KC_7, KC_8, KC_9, + KC_LGUI, KC_LCTL, KC_LSFT, KC_RCTL, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT, KC_DOT, KC_0 + ) +}; + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { /* First encoder */ + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } + return true; +} diff --git a/keyboards/gorthage_truck/keymaps/7u/readme.md b/keyboards/gorthage_truck/keymaps/7u/readme.md new file mode 100644 index 000000000000..ba57cd8dc7c9 --- /dev/null +++ b/keyboards/gorthage_truck/keymaps/7u/readme.md @@ -0,0 +1 @@ +# The default keymap for gorthage_truck diff --git a/keyboards/gorthage_truck/keymaps/default/keymap.c b/keyboards/gorthage_truck/keymaps/default/keymap.c new file mode 100644 index 000000000000..e875883250fa --- /dev/null +++ b/keyboards/gorthage_truck/keymaps/default/keymap.c @@ -0,0 +1,42 @@ +/* Copyright 2021 s8erdude + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT_3u( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_MINS, KC_MPLY, KC_1, KC_2, KC_3, + KC_SLCK, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_EQL, KC_4, KC_5, KC_6, + KC_NLCK, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_ENT, KC_SLSH, KC_GRV, KC_UP, KC_7, KC_8, KC_9, + KC_CLCK, KC_LCTL, KC_LSFT, KC_SPC, KC_RSFT, KC_RCTL, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT, KC_DOT, KC_0 + ) +}; + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { /* First encoder */ + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } + return true; +} diff --git a/keyboards/gorthage_truck/keymaps/default/readme.md b/keyboards/gorthage_truck/keymaps/default/readme.md new file mode 100644 index 000000000000..ba57cd8dc7c9 --- /dev/null +++ b/keyboards/gorthage_truck/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for gorthage_truck diff --git a/keyboards/gorthage_truck/readme.md b/keyboards/gorthage_truck/readme.md new file mode 100644 index 000000000000..047aa0434aea --- /dev/null +++ b/keyboards/gorthage_truck/readme.md @@ -0,0 +1,19 @@ +# gorthage_truck + +This PCB is a drop-in ortholinear replacement for the Garbage Truck keyboard case. It supports 2x3u split bars, 7u, or 10u. + +* Keyboard Maintainer: [s8erdude](https://github.com/jpuerto96) +* Hardware Supported: Gorthage Truck PCB +* Hardware Availability: [Open Source PCB](https://github.com/jpuerto96/gorthage_truck) + +Make example for this keyboard (after setting up your build environment): + + make gorthage_truck:default + +Flashing example for this keyboard: + + make gorthage_truck: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). + +To reset the board, you will want to short the pad labeled RESET1 on the back (near the MCU). diff --git a/keyboards/gorthage_truck/rules.mk b/keyboards/gorthage_truck/rules.mk new file mode 100644 index 000000000000..184b0053568e --- /dev/null +++ b/keyboards/gorthage_truck/rules.mk @@ -0,0 +1,21 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +ENCODER_ENABLE = yes diff --git a/keyboards/gowla/info.json b/keyboards/gowla/info.json index 4d1a5e1673c3..c4926000bb61 100644 --- a/keyboards/gowla/info.json +++ b/keyboards/gowla/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Gowla Macro Pad", "url": "https://github.com/SamGowland/Gowla-Macro-Board", "maintainer": "Gowla", - "width": 3, - "height": 3, "layouts": { "LAYOUT_ortho_3x3": { "layout": [ diff --git a/keyboards/gowla/rules.mk b/keyboards/gowla/rules.mk index bc65eff6dfcc..8986f2f35523 100644 --- a/keyboards/gowla/rules.mk +++ b/keyboards/gowla/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# 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 -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/gray_studio/cod67/cod67.c b/keyboards/gray_studio/cod67/cod67.c index b6c04a3e5762..494e06da7402 100644 --- a/keyboards/gray_studio/cod67/cod67.c +++ b/keyboards/gray_studio/cod67/cod67.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "cod67.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/gray_studio/cod67/cod67.h b/keyboards/gray_studio/cod67/cod67.h index ed4a7299718c..85ebbab61bc4 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 . */ -#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/gray_studio/cod67/info.json b/keyboards/gray_studio/cod67/info.json index 44854af8c4be..b95f5eb8e447 100644 --- a/keyboards/gray_studio/cod67/info.json +++ b/keyboards/gray_studio/cod67/info.json @@ -2,8 +2,6 @@ "keyboard_name": "COD67", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { "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}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"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}, {"x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.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":"Shift", "x":11.25, "y":3, "w":1.75}, {"x":13, "y":3}, {"x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4}, {"label":"Win", "x":1, "y":4}, {"label":"Alt", "x":2, "y":4}, {"x":3, "y":4}, {"x":4, "y":4}, {"x":5, "y":4}, {"x":6, "y":4, "w":2}, {"x":8, "y":4}, {"x":9, "y":4}, {"x":10, "y":4}, {"label":"Alt", "x":11, "y":4}, {"label":"Win", "x":12, "y":4}, {"label":"Menu", "x":13, "y":4}, {"label":"Ctrl", "x":14, "y":4}] diff --git a/keyboards/gray_studio/cod67/keymaps/default/keymap.c b/keyboards/gray_studio/cod67/keymaps/default/keymap.c index 5403bf406f73..b84e073f7213 100644 --- a/keyboards/gray_studio/cod67/keymaps/default/keymap.c +++ b/keyboards/gray_studio/cod67/keymaps/default/keymap.c @@ -25,19 +25,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LGUI, KC_LALT, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT) }; - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/gray_studio/cod67/rules.mk b/keyboards/gray_studio/cod67/rules.mk index 2e066d99150e..96c9bdad9bfc 100644 --- a/keyboards/gray_studio/cod67/rules.mk +++ b/keyboards/gray_studio/cod67/rules.mk @@ -2,13 +2,6 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = lufa-ms # This board uses the older unsafe 6k version of lufa-ms @@ -17,18 +10,13 @@ BOOTLOADER_SIZE = 6144 # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/gray_studio/hb85/info.json b/keyboards/gray_studio/hb85/info.json index 3c7ac9c43cc1..a60047df9a50 100644 --- a/keyboards/gray_studio/hb85/info.json +++ b/keyboards/gray_studio/hb85/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Gray Studio HB85", "url": "", "maintainer": "qmk", - "width": 18, - "height": 6.25, "layouts": { "LAYOUT_all": { "layout": [{"x":1.5, "y":0}, {"x":2.75, "y":0}, {"x":3.75, "y":0}, {"x":4.75, "y":0}, {"x":5.75, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.25, "y":0}, {"x":15.5, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":4, "y":1.25}, {"x":5, "y":1.25}, {"x":6, "y":1.25}, {"x":7, "y":1.25}, {"x":8, "y":1.25}, {"x":9, "y":1.25}, {"x":10, "y":1.25}, {"x":11, "y":1.25}, {"x":12, "y":1.25}, {"x":13, "y":1.25}, {"x":14, "y":1.25}, {"x":15, "y":1.25}, {"x":16, "y":1.25}, {"x":17, "y":1.25}, {"x":0, "y":2.25, "w":1.5}, {"x":1.5, "y":2.25}, {"x":2.5, "y":2.25}, {"x":3.5, "y":2.25}, {"x":4.5, "y":2.25}, {"x":5.5, "y":2.25}, {"x":6.5, "y":2.25}, {"x":7.5, "y":2.25}, {"x":8.5, "y":2.25}, {"x":9.5, "y":2.25}, {"x":10.5, "y":2.25}, {"x":11.5, "y":2.25}, {"x":12.5, "y":2.25}, {"x":13.5, "y":2.25, "w":1.5}, {"x":15, "y":2.25}, {"x":16, "y":2.25}, {"x":17, "y":2.25}, {"x":0, "y":3.25, "w":1.75}, {"x":1.75, "y":3.25}, {"x":2.75, "y":3.25}, {"x":3.75, "y":3.25}, {"x":4.75, "y":3.25}, {"x":5.75, "y":3.25}, {"x":6.75, "y":3.25}, {"x":7.75, "y":3.25}, {"x":8.75, "y":3.25}, {"x":9.75, "y":3.25}, {"x":10.75, "y":3.25}, {"x":11.75, "y":3.25}, {"x":12.75, "y":3.25, "w":2.25}, {"x":15, "y":3.25}, {"x":16, "y":3.25}, {"x":17, "y":3.25}, {"x":0, "y":4.25, "w":1.25}, {"x":1.25, "y":4.25}, {"x":2.25, "y":4.25}, {"x":3.25, "y":4.25}, {"x":4.25, "y":4.25}, {"x":5.25, "y":4.25}, {"x":6.25, "y":4.25}, {"x":7.25, "y":4.25}, {"x":8.25, "y":4.25}, {"x":9.25, "y":4.25}, {"x":10.25, "y":4.25}, {"x":11.25, "y":4.25}, {"x":12.25, "y":4.25, "w":1.75}, {"x":14, "y":4.25}, {"x":15, "y":4.25}, {"x":16, "y":4.25}, {"x":17, "y":4.25}, {"x":1.25, "y":5.25, "w":1.25}, {"x":2.5, "y":5.25, "w":1.25}, {"x":3.75, "y":5.25, "w":6.25}, {"x":10, "y":5.25}, {"x":11, "y":5.25}, {"x":12, "y":5.25}, {"x":13, "y":5.25}, {"x":14, "y":5.25}, {"x":15, "y":5.25}, {"x":16, "y":5.25}] @@ -21,4 +19,4 @@ "layout": [{"x":1.5, "y":0}, {"x":2.75, "y":0}, {"x":3.75, "y":0}, {"x":4.75, "y":0}, {"x":5.75, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.25, "y":0}, {"x":15.5, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":4, "y":1.25}, {"x":5, "y":1.25}, {"x":6, "y":1.25}, {"x":7, "y":1.25}, {"x":8, "y":1.25}, {"x":9, "y":1.25}, {"x":10, "y":1.25}, {"x":11, "y":1.25}, {"x":12, "y":1.25}, {"x":13, "y":1.25, "w":2}, {"x":15, "y":1.25}, {"x":16, "y":1.25}, {"x":17, "y":1.25}, {"x":0, "y":2.25, "w":1.5}, {"x":1.5, "y":2.25}, {"x":2.5, "y":2.25}, {"x":3.5, "y":2.25}, {"x":4.5, "y":2.25}, {"x":5.5, "y":2.25}, {"x":6.5, "y":2.25}, {"x":7.5, "y":2.25}, {"x":8.5, "y":2.25}, {"x":9.5, "y":2.25}, {"x":10.5, "y":2.25}, {"x":11.5, "y":2.25}, {"x":12.5, "y":2.25}, {"x":13.5, "y":2.25, "w":1.5}, {"x":15, "y":2.25}, {"x":16, "y":2.25}, {"x":17, "y":2.25}, {"x":0, "y":3.25, "w":1.75}, {"x":1.75, "y":3.25}, {"x":2.75, "y":3.25}, {"x":3.75, "y":3.25}, {"x":4.75, "y":3.25}, {"x":5.75, "y":3.25}, {"x":6.75, "y":3.25}, {"x":7.75, "y":3.25}, {"x":8.75, "y":3.25}, {"x":9.75, "y":3.25}, {"x":10.75, "y":3.25}, {"x":11.75, "y":3.25}, {"x":12.75, "y":3.25, "w":2.25}, {"x":15, "y":3.25}, {"x":16, "y":3.25}, {"x":17, "y":3.25}, {"x":0, "y":4.25, "w":2.25}, {"x":2.25, "y":4.25}, {"x":3.25, "y":4.25}, {"x":4.25, "y":4.25}, {"x":5.25, "y":4.25}, {"x":6.25, "y":4.25}, {"x":7.25, "y":4.25}, {"x":8.25, "y":4.25}, {"x":9.25, "y":4.25}, {"x":10.25, "y":4.25}, {"x":11.25, "y":4.25}, {"x":12.25, "y":4.25, "w":1.75}, {"x":14, "y":4.25}, {"x":15, "y":4.25}, {"x":16, "y":4.25}, {"x":17, "y":4.25}, {"x":1.25, "y":5.25, "w":1.25}, {"x":2.5, "y":5.25, "w":1.25}, {"x":3.75, "y":5.25, "w":6.25}, {"x":10, "y":5.25}, {"x":11, "y":5.25}, {"x":12, "y":5.25}, {"x":13, "y":5.25}, {"x":14, "y":5.25}, {"x":15, "y":5.25}, {"x":16, "y":5.25}] } } -} \ No newline at end of file +} diff --git a/keyboards/gray_studio/hb85/rules.mk b/keyboards/gray_studio/hb85/rules.mk index 981f6b514f96..2dba9c3eb9ec 100644 --- a/keyboards/gray_studio/hb85/rules.mk +++ b/keyboards/gray_studio/hb85/rules.mk @@ -2,17 +2,10 @@ MCU = atmega32a # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid # build options -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no EXTRAKEY_ENABLE = yes CONSOLE_ENABLE = no diff --git a/keyboards/gray_studio/space65/config.h b/keyboards/gray_studio/space65/config.h index 2375d95b368f..6091515b521a 100644 --- a/keyboards/gray_studio/space65/config.h +++ b/keyboards/gray_studio/space65/config.h @@ -115,58 +115,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -185,26 +133,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/gray_studio/space65/info.json b/keyboards/gray_studio/space65/info.json index 5bd848ddcc6a..a14df5ca8f4a 100644 --- a/keyboards/gray_studio/space65/info.json +++ b/keyboards/gray_studio/space65/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Gray Studio Space65", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/gray_studio/space65/keymaps/default/keymap.c b/keyboards/gray_studio/space65/keymaps/default/keymap.c index 17f44b3b6556..7979bba1c051 100644 --- a/keyboards/gray_studio/space65/keymaps/default/keymap.c +++ b/keyboards/gray_studio/space65/keymaps/default/keymap.c @@ -59,15 +59,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/gray_studio/space65/rules.mk b/keyboards/gray_studio/space65/rules.mk index 4c8bf40bab4b..a104ed3231a7 100644 --- a/keyboards/gray_studio/space65/rules.mk +++ b/keyboards/gray_studio/space65/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = 65_ansi_blocker 65_iso_blocker diff --git a/keyboards/gray_studio/think65/hotswap/info.json b/keyboards/gray_studio/think65/hotswap/info.json index 6047c4f4a2e3..4cbd8744b70e 100644 --- a/keyboards/gray_studio/think65/hotswap/info.json +++ b/keyboards/gray_studio/think65/hotswap/info.json @@ -2,11 +2,8 @@ "keyboard_name": "THINK6.5", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_ansi_blocker": { - "key_count": 67, "layout": [ {"label":"K00 (B0,D1)", "x":0, "y":0}, {"label":"K01 (B0,D0)", "x":1, "y":0}, @@ -79,4 +76,4 @@ } } ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/" -} \ No newline at end of file +} diff --git a/keyboards/gray_studio/think65/hotswap/rules.mk b/keyboards/gray_studio/think65/hotswap/rules.mk index b0d113e640a4..cebec002aace 100644 --- a/keyboards/gray_studio/think65/hotswap/rules.mk +++ b/keyboards/gray_studio/think65/hotswap/rules.mk @@ -2,33 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LTO_ENABLE = yes diff --git a/keyboards/gray_studio/think65/solder/info.json b/keyboards/gray_studio/think65/solder/info.json index cc87af41bba1..5a7b7bea00f1 100644 --- a/keyboards/gray_studio/think65/solder/info.json +++ b/keyboards/gray_studio/think65/solder/info.json @@ -2,11 +2,8 @@ "keyboard_name": "THINK6.5", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_ansi_blocker": { - "key_count": 67, "layout": [ {"label":"K00 (B0,D1)", "x":0, "y":0}, {"label":"K01 (B0,D0)", "x":1, "y":0}, @@ -78,7 +75,6 @@ ] }, "LAYOUT_65_iso_badge": { - "key_count": 66, "layout": [ {"label":"K00", "x":0, "y":0}, {"label":"K01", "x":1, "y":0}, @@ -149,7 +145,6 @@ ] }, "LAYOUT_all": { - "key_count": 69, "layout": [ {"label":"K00 (B0,D1)", "x":0, "y":0}, {"label":"K01 (B0,D0)", "x":1, "y":0}, diff --git a/keyboards/gray_studio/think65/solder/keymaps/dangjoeltang/keymap.c b/keyboards/gray_studio/think65/solder/keymaps/dangjoeltang/keymap.c new file mode 100644 index 000000000000..4994fb3fa016 --- /dev/null +++ b/keyboards/gray_studio/think65/solder/keymaps/dangjoeltang/keymap.c @@ -0,0 +1,232 @@ +/* Copyright 2021 Qiaowei Tang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + + + /* + * LED ranges for Think6.5v2 2U + * These values were derived from manual testing. Derived from keymaps/rys. + * ┌───────┬───────┬─────────────┬───────────────────────────────────────────┐ + * │ 00 01 │ 02 03 │ 04 05 06 07 │ 08 09 10 11 12 13 14 15 16 17 18 19 20 21 │ + * │ badge │ badge │    (?)     │              underglow (?)                │ + * │  bar │ icon │         │                               │ + * └───────┴───────┴─────────────┴───────────────────────────────────────────┘ + */ + +// Define the LED ranges start, end +#define THINK65_LED_RANGE_OFF 0, 0 +#define THINK65_LED_RANGE_CAPS 0, 2 +#define THINK65_LED_RANGE_BADGE 0, 4 +#define THINK65_LED_RANGE_UNDERGLOW 4, 22 +#define THINK65_LED_RANGE_ALL 0, 22 + +// Turn the LEDs off by setting HSV to 0, 0, 0 +#define THINK65_LEDS_OFF 0, 0, 0 + +// Caps Lock indicator LED +#define THINK65_LEDS_CAPS 0, 0, 255 + +#define THINK65_LED_STATE_OFF 0x0 // 0b00000000 +#define THINK65_LED_STATE_CAPS 0x1 // 0b00000001 +#define THINK65_LED_STATE_BADGE 0x2 // 0b00000010 +#define THINK65_LED_STATE_CAPS_AND_BADGE 0x3 // 0b00000011 + +// Define each LED range as a bit flag +#define THINK65_LED_CAPS_RANGE_BIT 0 +#define THINK65_LED_BADGE_RANGE_BIT 1 + +// Setup some keycodes to control cycling and range toggling +enum { + KVM_SW1 = SAFE_RANGE, + KVM_SW2, + CYC_LED, + TOG_BDG +}; + +// setup the user EEPROM space we need +typedef union { + uint8_t raw; + struct { + uint8_t current_led_state:8; + }; +} user_config_t; + +user_config_t user_config; + +// toggle one of the range flag bits +void toggle_led_state(unsigned int led_range) { + if (led_range >= THINK65_LED_CAPS_RANGE_BIT && led_range <= THINK65_LED_BADGE_RANGE_BIT) { + user_config.current_led_state ^= 1 << led_range; + } +} + +// set one of the range flag bits +void set_led_state(unsigned int led_range) { + if (led_range >= THINK65_LED_CAPS_RANGE_BIT && led_range <= THINK65_LED_BADGE_RANGE_BIT) { + user_config.current_led_state |= 1 << led_range; + } +} + +// clear one of the range flag bits +void clear_led_state(unsigned int led_range) { + if (led_range >= THINK65_LED_CAPS_RANGE_BIT && led_range <= THINK65_LED_BADGE_RANGE_BIT) { + user_config.current_led_state &= ~(1 << led_range); + } +} + +// cycle LED states: Off -> Esc -> Badge -> Underglow -> Esc+Badge -> Esc+Underglow -> Badge+Underglow -> All +void cycle_led_state(void) { + switch(user_config.current_led_state) { + case THINK65_LED_STATE_OFF: + user_config.current_led_state = THINK65_LED_STATE_CAPS; + break; + case THINK65_LED_STATE_CAPS: + user_config.current_led_state = THINK65_LED_STATE_BADGE; + break; + case THINK65_LED_STATE_BADGE: + user_config.current_led_state = THINK65_LED_STATE_CAPS_AND_BADGE; + break; + case THINK65_LED_STATE_CAPS_AND_BADGE: + user_config.current_led_state = THINK65_LED_STATE_OFF; + break; + default: + break; + } +} + +void apply_led_state(void) { + uint8_t h = rgblight_get_hue(); + uint8_t s = rgblight_get_sat(); + uint8_t v = rgblight_get_val(); + + // Set the RGB ranges based on the current state + switch(user_config.current_led_state) { + case THINK65_LED_STATE_OFF: + rgblight_sethsv_range(THINK65_LEDS_OFF, THINK65_LED_RANGE_ALL); + break; + case THINK65_LED_STATE_CAPS: + rgblight_sethsv_range(THINK65_LEDS_OFF, THINK65_LED_RANGE_BADGE); + rgblight_sethsv_range(THINK65_LEDS_CAPS, THINK65_LED_RANGE_CAPS); + break; + case THINK65_LED_STATE_BADGE: + rgblight_sethsv_range(THINK65_LEDS_OFF, THINK65_LED_RANGE_CAPS); + rgblight_sethsv_range(h, s, v, THINK65_LED_RANGE_BADGE); + break; + case THINK65_LED_STATE_CAPS_AND_BADGE: + rgblight_sethsv_range(h, s, v, THINK65_LED_RANGE_BADGE); + rgblight_sethsv_range(THINK65_LEDS_CAPS, THINK65_LED_RANGE_CAPS); + break; + default: + break; + } +} + +void keyboard_post_init_user(void) { + user_config.raw = eeconfig_read_user(); + + if (user_config.current_led_state >= THINK65_LED_STATE_OFF && user_config.current_led_state <= THINK65_LED_STATE_CAPS_AND_BADGE) { + // If the current state read from user EEPROM is valid, apply it + apply_led_state(); + } else { + // Setup a new default state of off + user_config.current_led_state = THINK65_LED_STATE_OFF; + apply_led_state(); + eeconfig_update_user(user_config.raw); + } +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KVM_SW1: + if (record->event.pressed) { + SEND_STRING(SS_TAP(X_RCTL) SS_TAP(X_RCTL) "1"); + } else {} + break; + case KVM_SW2: + if(record->event.pressed) { + SEND_STRING(SS_TAP(X_RCTL) SS_TAP(X_RCTL) "2"); + } else {} + break; + case CYC_LED: + if (record->event.pressed) { + cycle_led_state(); + apply_led_state(); + eeconfig_update_user(user_config.raw); + } + break; + case TOG_BDG: + if (record->event.pressed) { + toggle_led_state(THINK65_LED_BADGE_RANGE_BIT); + apply_led_state(); + eeconfig_update_user(user_config.raw); + } + break; + case KC_CAPS: + if (!record->event.pressed) { + // connect capslock LED control to the badge LEDs + host_keyboard_led_state().caps_lock ? set_led_state(THINK65_LED_CAPS_RANGE_BIT) : clear_led_state(THINK65_LED_CAPS_RANGE_BIT); + apply_led_state(); + eeconfig_update_user(user_config.raw); + } + break; + } + return true; +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base Layer + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ + * │Esc│! 1│@ 2│# 3│$ 4│% 5│^ 6│& 7│* 8│( 9│) 0│_ -│+ =│ Bckspc│` ~│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ + * │Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │{ [│} ]│| \│Del│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + * │HyCaps│ A │ S │ D │ F │ G │ H │ J │ K │ L │: ;│" '│ Enter│ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ │ + * │Shift │ Z │ X │ C │ V │ B │ N │ M │< ,│> .│? /│ Shift│ Up│ │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │Ctrl│ Opt│ Cmd│ Space │Cmd │FnPy│ │Lef│Dow│Rig│ + * └────┴────┴────┴────────────────────────┴────┴────┴─┴───┴───┴───┘ + */ + [0] = LAYOUT_65_ansi_blocker( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, XXXXXXX, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, XXXXXXX, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬────────┬───┐ + * │RST│ F1│ F2│ F3│ F4│ F5│ F6│ F7│ F8│ F9│F10│F11│F12│        │SW1│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬──────┼───┤ + * │ TOG │PLN│MOD│HU+│HU-│SA+│SA-│VA+│VA-│ │ │Hom│End│ │SW2│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴──────┼───┤ + * │ │CYC│BDG│UGL│CAP│ │ │ │ │ │ │ │ │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬────┤ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │Vol+│ │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼────┼───┤ + * │ │ │ │ │ │ │ │ │Vol-│ │ + * └────┴────┴────┴────────────────────────┴────┴────┴─┴───┴────┴───┘ + */ + [1] = LAYOUT_65_ansi_blocker( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KVM_SW1, + TOG_BDG, RGB_M_P, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, KC_HOME, KC_END, _______, KVM_SW2, + _______, CYC_LED, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, _______, + _______, _______, _______, _______, _______, _______, _______, KC_VOLD, _______ + ), + +}; + diff --git a/keyboards/gray_studio/think65/solder/keymaps/dangjoeltang/readme.md b/keyboards/gray_studio/think65/solder/keymaps/dangjoeltang/readme.md new file mode 100644 index 000000000000..520e7e0752e3 --- /dev/null +++ b/keyboards/gray_studio/think65/solder/keymaps/dangjoeltang/readme.md @@ -0,0 +1,9 @@ +# dangjoeltang's Think6.5v2 keymap + +My personal keymap for the Think6.5v2. Using the `LAYOUT_65_ansi_blocker` LAYOUT for a 2U blocker version. I added functionality to enable the Caps-lock indicator LED above the badge. This functionality shipped with the original board; however, for those who reflash their boards using the default `gray_studio/think65/solder` keymaps that functionality disappeared. + +## [Base Layer](http://www.keyboard-layout-editor.com/#/gists/9c6a905a643b77249958f28662348f53) +![Base Layer](https://imgur.com/Gyim08a) + +## [Function Layer](http://www.keyboard-layout-editor.com/#/gists/1c061d3664ea5caf5cb64c759339278d) +![Function Layer](https://imgur.com/H2Yqnv3) diff --git a/keyboards/gray_studio/think65/solder/rules.mk b/keyboards/gray_studio/think65/solder/rules.mk index b0d113e640a4..cebec002aace 100644 --- a/keyboards/gray_studio/think65/solder/rules.mk +++ b/keyboards/gray_studio/think65/solder/rules.mk @@ -2,33 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LTO_ENABLE = yes diff --git a/keyboards/gray_studio/think65/solder/solder.c b/keyboards/gray_studio/think65/solder/solder.c index 48ed25b19b67..619aa2db8d54 100644 --- a/keyboards/gray_studio/think65/solder/solder.c +++ b/keyboards/gray_studio/think65/solder/solder.c @@ -28,13 +28,6 @@ void matrix_init_kb(void) { matrix_init_user(); } -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - bool led_update_kb(led_t led_state) { if(led_update_user(led_state)) { writePin(C7, !led_state.caps_lock); diff --git a/keyboards/grid600/press/info.json b/keyboards/grid600/press/info.json index 131b094af551..7ee2a93d0a41 100644 --- a/keyboards/grid600/press/info.json +++ b/keyboards/grid600/press/info.json @@ -2,11 +2,9 @@ "keyboard_name": "Grid 600 Type 05 PRESS Cover Module", "url": "", "maintainer": "qmk", - "width": 4, - "height": 1, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}] } } -} \ No newline at end of file +} diff --git a/keyboards/grid600/press/keymaps/default/keymap.c b/keyboards/grid600/press/keymaps/default/keymap.c index f253c692150d..ab42853e5fac 100644 --- a/keyboards/grid600/press/keymaps/default/keymap.c +++ b/keyboards/grid600/press/keymaps/default/keymap.c @@ -20,15 +20,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_G, KC_R, KC_I, KC_D ), }; - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/grid600/press/rules.mk b/keyboards/grid600/press/rules.mk index b57bf344233b..ada7b37c641b 100644 --- a/keyboards/grid600/press/rules.mk +++ b/keyboards/grid600/press/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # 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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/gskt00/config.h b/keyboards/gskt00/config.h deleted file mode 100755 index 8ab0583cc8e5..000000000000 --- 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 89a0040ff371..000000000000 --- 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 90e9a1ad5acb..000000000000 --- 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/info.json b/keyboards/gskt00/info.json deleted file mode 100644 index bfbb1fd7cd1e..000000000000 --- a/keyboards/gskt00/info.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "keyboard_name": "gskt00", - "url": "", - "maintainer": "nachie", - "width": 15, - "height": 5, - "layouts": { - "LAYOUT_60_ansi_tsangan": { - "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}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"Win", "x":12.5, "y":4}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}] - }, - - "LAYOUT_60_iso_tsangan": { - "layout": [{"label":"\u00ac", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"\"", "x":2, "y":0}, {"label":"\u00a3", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"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":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"@", "x":11.75, "y":2}, {"label":"~", "x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"label":"|", "x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"AltGr", "x":11, "y":4, "w":1.5}, {"label":"Menu", "x":12.5, "y":4}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}] - }, - - "LAYOUT_all": { - "layout": [ - {"label":"Esc", "x":0, "y":0}, - {"label":"1", "x":1, "y":0}, - {"label":"2", "x":2, "y":0}, - {"label":"3", "x":3, "y":0}, - {"label":"4", "x":4, "y":0}, - {"label":"5", "x":5, "y":0}, - {"label":"6", "x":6, "y":0}, - {"label":"7", "x":7, "y":0}, - {"label":"8", "x":8, "y":0}, - {"label":"9", "x":9, "y":0}, - {"label":"0", "x":10, "y":0}, - {"label":"-", "x":11, "y":0}, - {"label":"=", "x":12, "y":0}, - {"label":"\\", "x":13, "y":0}, - {"label":"`", "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":"Backspace", "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}, - {"label":"ISO \\", "x":1.25, "y":3}, - {"label":"Z", "x":2.25, "y":3}, - {"label":"X", "x":3.25, "y":3}, - {"label":"C", "x":4.25, "y":3}, - {"label":"V", "x":5.25, "y":3}, - {"label":"B", "x":6.25, "y":3}, - {"label":"N", "x":7.25, "y":3}, - {"label":"M", "x":8.25, "y":3}, - {"label":",", "x":9.25, "y":3}, - {"label":".", "x":10.25, "y":3}, - {"label":"/", "x":11.25, "y":3}, - {"label":"Shift", "x":12.25, "y":3, "w":1.75}, - {"label":"Fn", "x":14, "y":3}, - {"label":"Ctrl", "x":0, "y":4, "w":1.5}, - {"label":"GUI", "x":1.5, "y":4}, - {"label":"Alt", "x":2.5, "y":4, "w":1.5}, - {"label":"Space", "x":4, "y":4, "w":7}, - {"label":"Alt", "x":11, "y":4, "w":1.5}, - {"label":"GUI", "x":12.5, "y":4}, - {"label":"Ctrl", "x":13.5, "y":4, "w":1.5} - ] - } - } -} diff --git a/keyboards/gskt00/keymaps/default/keymap.c b/keyboards/gskt00/keymaps/default/keymap.c deleted file mode 100755 index 792ba2f412d5..000000000000 --- a/keyboards/gskt00/keymaps/default/keymap.c +++ /dev/null @@ -1,82 +0,0 @@ -#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_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)), - - /* 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, - 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, RGB_MOD, KC_TRNS, RGB_TOG) - -}; - -void matrix_init_user(void) { -} - -void matrix_scan_user(void) { -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - - if (usb_led & (1 << USB_LED_NUM_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_CAPS_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_SCROLL_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_COMPOSE)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_KANA)) { - - } else { - - } - -} - diff --git a/keyboards/gskt00/readme.md b/keyboards/gskt00/readme.md deleted file mode 100644 index ad03ac819f21..000000000000 --- 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/gskt00/rules.mk b/keyboards/gskt00/rules.mk deleted file mode 100755 index 0011ec6ce7f0..000000000000 --- a/keyboards/gskt00/rules.mk +++ /dev/null @@ -1,28 +0,0 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = atmel-dfu - -# Build Options -# comment out to disable the options. -# -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration -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 = no - -LAYOUTS = 60_ansi_tsangan 60_iso_tsangan diff --git a/keyboards/gvalchca/ga150/ga150.h b/keyboards/gvalchca/ga150/ga150.h index 9d803b5c9f89..a569be829d18 100644 --- a/keyboards/gvalchca/ga150/ga150.h +++ b/keyboards/gvalchca/ga150/ga150.h @@ -34,4 +34,4 @@ {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} \ -} \ No newline at end of file +} diff --git a/keyboards/gvalchca/ga150/info.json b/keyboards/gvalchca/ga150/info.json index 494b84af3989..b81082d32f03 100644 --- a/keyboards/gvalchca/ga150/info.json +++ b/keyboards/gvalchca/ga150/info.json @@ -2,8 +2,6 @@ "keyboard_name": "GA15.0", "url": "", "maintainer": "Gvalchca", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/gvalchca/ga150/rules.mk b/keyboards/gvalchca/ga150/rules.mk index 3b26fac66896..e5b6e7cce777 100644 --- a/keyboards/gvalchca/ga150/rules.mk +++ b/keyboards/gvalchca/ga150/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = qmk-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output UNICODE_ENABLE = yes # Unicode LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/gvalchca/spaccboard/info.json b/keyboards/gvalchca/spaccboard/info.json index 051b5e0a2058..654c3eb4ad4c 100644 --- a/keyboards/gvalchca/spaccboard/info.json +++ b/keyboards/gvalchca/spaccboard/info.json @@ -2,8 +2,6 @@ "keyboard_name": "SpaccBoard", "url": "https://keebmeup.com", "maintainer": "Gvalchca", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { "layout": [ @@ -211,4 +209,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/gvalchca/spaccboard/rules.mk b/keyboards/gvalchca/spaccboard/rules.mk index acd5fbc293cf..d989c3879f43 100644 --- a/keyboards/gvalchca/spaccboard/rules.mk +++ b/keyboards/gvalchca/spaccboard/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = qmk-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output UNICODE_ENABLE = yes # Unicode LTO_ENABLE = yes diff --git a/keyboards/h0oni/hotduck/config.h b/keyboards/h0oni/hotduck/config.h new file mode 100644 index 000000000000..9865f5d30375 --- /dev/null +++ b/keyboards/h0oni/hotduck/config.h @@ -0,0 +1,74 @@ +/* Copyright 2021 Md Mashur Shalehin, aka h0oni + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4D53 +#define PRODUCT_ID 0x6844 //hD +#define DEVICE_VER 0x0001 +#define MANUFACTURER h0oni +#define PRODUCT hotDuck + +/* key matrix size */ +#define MATRIX_ROWS 7 +#define MATRIX_COLS 10 + +/* + * 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 { B6, B2, B3, B1, F7, F6, F5 } +#define MATRIX_COL_PINS { B5, B4, E6, D7, C6, D4, D0, D1, D2, D3} +#define UNUSED_PINS + +// #define LED_CAPS_LOCK_PIN B2 +// #define LED_PIN_ON_STATE 0 + +// /* Backlight Setup */ +// #define BACKLIGHT_PIN B5 +// #define BACKLIGHT_LEVELS 6 +// //#define BACKLIGHT_BREATHING + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* RGB Underglow + * F4 PIN for pre-soldered WS2812 LEDs + */ +#define RGB_DI_PIN F4 +#define RGBLIGHT_ANIMATIONS +#define RGBLED_NUM 20 +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 15 +#define RGBLIGHT_VAL_STEP 15 + +/* 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/h0oni/hotduck/hotduck.c b/keyboards/h0oni/hotduck/hotduck.c new file mode 100644 index 000000000000..a251fb8987fa --- /dev/null +++ b/keyboards/h0oni/hotduck/hotduck.c @@ -0,0 +1,18 @@ +/* Copyright 2021 Md Mashur Shalehin, aka h0oni + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "hotduck.h" + diff --git a/keyboards/h0oni/hotduck/hotduck.h b/keyboards/h0oni/hotduck/hotduck.h new file mode 100644 index 000000000000..2cc36a0aa809 --- /dev/null +++ b/keyboards/h0oni/hotduck/hotduck.h @@ -0,0 +1,37 @@ +/* Copyright 2021 Md Mashur Shalehin, aka h0oni + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_all( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K19, K59, K58, K57, K69, K68, K67,\ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K29, K39, K49, K56, K55, K66, K65, K64,\ + K20, K21, K22, K23, K24, K25, K35, K26, K27, K28, K38, K54, K53,\ + K30, K31, K32, K33, K34, K44, K45, K46, K36, K37, K48, K52, K63,\ + K40, K41, K42, K43, K47, K50, K51, K60, K61, K62\ +) { \ + { 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 } \ +} + + diff --git a/keyboards/h0oni/hotduck/info.json b/keyboards/h0oni/hotduck/info.json new file mode 100644 index 000000000000..32e4ae7c2f1c --- /dev/null +++ b/keyboards/h0oni/hotduck/info.json @@ -0,0 +1,83 @@ +{ + "keyboard_name": "hotDuck", + "url": "", + "maintainer": "h0oni", + "layouts": { + "LAYOUT_all": { + "layout": [{"label":"Esc", "x":0, "y":0}, + {"label":"!", "x":1, "y":0}, + {"label":"@", "x":2, "y":0}, + {"label":"#", "x":3, "y":0}, + {"label":"$", "x":4, "y":0}, + {"label":"%", "x":5, "y":0}, + {"label":"^", "x":6, "y":0}, + {"label":"&", "x":7, "y":0}, + {"label":"*", "x":8, "y":0}, + {"label":"(", "x":9, "y":0}, + {"label":")", "x":10, "y":0}, + {"label":"_", "x":11, "y":0}, + {"label":"+", "x":12, "y":0}, + {"label":"Bksp", "x":13, "y":0, "w":2}, + {"label":"Menu", "x":15.25, "y":0}, + {"label":"Home", "x":16.25, "y":0}, + {"label":"PgUp", "x":17.25, "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":"Del", "x":15.25, "y":1}, + {"label":"End", "x":16.25, "y":1}, + {"label":"PgDn", "x":17.25, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":":", "x":10.75, "y":2}, + {"label":"\"", "x":11.75, "y":2}, + {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + + {"label":"Shift", "x":0, "y":3, "w":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3,"w":2.75}, + {"label":"\u2191", "x":16.25, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"Alt", "x":1.25, "y":4, "w":1.25}, + {"label":"Win", "x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"label":"Win", "x":10, "y":4, "w":1.25}, + {"label":"Alt", "x":11.25, "y":4, "w":1.25}, + {"label":"Ctrl", "x":12.5, "y":4, "w":1.25}, + {"label":"\u2190", "x":15.25, "y":4}, + {"label":"\u2193", "x":16.25, "y":4}, + {"label":"\u2192", "x":17.25, "y":4}] + } + } +} diff --git a/keyboards/h0oni/hotduck/keymaps/default/keymap.c b/keyboards/h0oni/hotduck/keymaps/default/keymap.c new file mode 100644 index 000000000000..e06bac51ba69 --- /dev/null +++ b/keyboards/h0oni/hotduck/keymaps/default/keymap.c @@ -0,0 +1,52 @@ +/* Copyright 2021 Md Mashur Shalehin, aka h0oni + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_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_BSPC, MO(1), KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_SLSH, KC_DEL, KC_END, KC_PGDOWN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_BSLS, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT + ), + + [1] = 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, MO(1), TG(2), KC_TRNS, + KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS + ), + + [2] = LAYOUT_all( + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,TG(2), MO(4), + KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS + ), + + [3] = LAYOUT_all( + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,MO(4), + KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS + ), +}; diff --git a/keyboards/h0oni/hotduck/keymaps/via/keymap.c b/keyboards/h0oni/hotduck/keymaps/via/keymap.c new file mode 100644 index 000000000000..e06bac51ba69 --- /dev/null +++ b/keyboards/h0oni/hotduck/keymaps/via/keymap.c @@ -0,0 +1,52 @@ +/* Copyright 2021 Md Mashur Shalehin, aka h0oni + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_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_BSPC, MO(1), KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_SLSH, KC_DEL, KC_END, KC_PGDOWN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_BSLS, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT + ), + + [1] = 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, MO(1), TG(2), KC_TRNS, + KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS + ), + + [2] = LAYOUT_all( + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,TG(2), MO(4), + KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS + ), + + [3] = LAYOUT_all( + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,MO(4), + KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS + ), +}; diff --git a/keyboards/h0oni/hotduck/keymaps/via/rules.mk b/keyboards/h0oni/hotduck/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/h0oni/hotduck/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/h0oni/hotduck/readme.md b/keyboards/h0oni/hotduck/readme.md new file mode 100644 index 000000000000..e4c06c46daa0 --- /dev/null +++ b/keyboards/h0oni/hotduck/readme.md @@ -0,0 +1,12 @@ +# hotDuck TKL + +Built-in WS2182 RGB LED for underglow lighting. + +* Keyboard Maintainer: h0oni +* Hardware Supported: hotDuck_tkl + +Make example for this keyboard (after setting up your build environment): + + make h0oni/hotduck:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). \ No newline at end of file diff --git a/keyboards/h0oni/hotduck/rules.mk b/keyboards/h0oni/hotduck/rules.mk new file mode 100644 index 000000000000..c474d8a7b63f --- /dev/null +++ b/keyboards/h0oni/hotduck/rules.mk @@ -0,0 +1,19 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 \ No newline at end of file diff --git a/keyboards/hadron/hadron.h b/keyboards/hadron/hadron.h index c11774729f16..349311270ee0 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 cd2b835d501d..000000000000 --- a/keyboards/hadron/i2c.c +++ /dev/null @@ -1,166 +0,0 @@ -#include -#include -#include -#include -#include -#include -#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<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< slave ACK -// 1 => slave NACK -uint8_t i2c_master_write(uint8_t data) { - TWDR = data; - TWCR = (1<= 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< - -#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/info.json b/keyboards/hadron/info.json index 19522852e8e7..7fb7d41cf248 100644 --- a/keyboards/hadron/info.json +++ b/keyboards/hadron/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Hadron", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { - "key_count": 72, "layout": [{"label":"K00", "x":0, "y":0}, {"label":"K01", "x":1, "y":0}, {"label":"K02", "x":2, "y":0}, {"label":"K03", "x":3, "y":0}, {"label":"K04", "x":4, "y":0}, {"label":"K05", "x":5, "y":0}, {"label":"K06", "x":6, "y":0}, {"label":"K07", "x":7, "y":0}, {"label":"K08", "x":8, "y":0}, {"label":"K09", "x":9, "y":0}, {"label":"K0A", "x":10, "y":0}, {"label":"K0B", "x":11, "y":0}, {"label":"K10", "x":0, "y":1}, {"label":"K11", "x":1, "y":1}, {"label":"K12", "x":2, "y":1}, {"label":"K13", "x":3, "y":1}, {"label":"K14", "x":4, "y":1}, {"label":"K15", "x":5, "y":1}, {"label":"K16", "x":6, "y":1}, {"label":"K17", "x":7, "y":1}, {"label":"K18", "x":8, "y":1}, {"label":"K19", "x":9, "y":1}, {"label":"K1A", "x":10, "y":1}, {"label":"K1B", "x":11, "y":1}, {"label":"K1C", "x":12, "y":1}, {"label":"K1D", "x":13, "y":1}, {"label":"K1E", "x":14, "y":1}, {"label":"K20", "x":0, "y":2}, {"label":"K21", "x":1, "y":2}, {"label":"K22", "x":2, "y":2}, {"label":"K23", "x":3, "y":2}, {"label":"K24", "x":4, "y":2}, {"label":"K25", "x":5, "y":2}, {"label":"K26", "x":6, "y":2}, {"label":"K27", "x":7, "y":2}, {"label":"K28", "x":8, "y":2}, {"label":"K29", "x":9, "y":2}, {"label":"K2A", "x":10, "y":2}, {"label":"K2B", "x":11, "y":2}, {"label":"K2C", "x":12, "y":2}, {"label":"K2D", "x":13, "y":2}, {"label":"K2E", "x":14, "y":2}, {"label":"K30", "x":0, "y":3}, {"label":"K31", "x":1, "y":3}, {"label":"K32", "x":2, "y":3}, {"label":"K33", "x":3, "y":3}, {"label":"K34", "x":4, "y":3}, {"label":"K35", "x":5, "y":3}, {"label":"K36", "x":6, "y":3}, {"label":"K37", "x":7, "y":3}, {"label":"K38", "x":8, "y":3}, {"label":"K39", "x":9, "y":3}, {"label":"K3A", "x":10, "y":3}, {"label":"K3B", "x":11, "y":3}, {"label":"K3C", "x":12, "y":3}, {"label":"K3D", "x":13, "y":3}, {"label":"K3E", "x":14, "y":3}, {"label":"K40", "x":0, "y":4}, {"label":"K41", "x":1, "y":4}, {"label":"K42", "x":2, "y":4}, {"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}, {"label":"K4D", "x":13, "y":4}, {"label":"K4E", "x":14, "y":4}] } } diff --git a/keyboards/hadron/ver2/config.h b/keyboards/hadron/ver2/config.h index e051db209cb7..c992f7fe3390 100644 --- a/keyboards/hadron/ver2/config.h +++ b/keyboards/hadron/ver2/config.h @@ -28,10 +28,8 @@ along with this program. If not, see . #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 8e3d50d3d7d9..f24239aa22a2 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 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<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 c63ae9385591..74f95b4b75a6 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 -#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< 0; + oled_write_pixel(MATRIX_DISPLAY_X + y + 2, MATRIX_DISPLAY_Y + x + 2, on); + } + } -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here + // 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); + } - led_set_user(usb_led); -} \ No newline at end of file + // 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); + } + return false; +} +#endif diff --git a/keyboards/hadron/ver2/ver2.h b/keyboards/hadron/ver2/ver2.h index 54e141ffacb7..8127b497f7c5 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 8c04575eeab2..54fab6662d57 100644 --- a/keyboards/hadron/ver3/config.h +++ b/keyboards/hadron/ver3/config.h @@ -15,8 +15,7 @@ * along with this program. If not, see . */ -#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 @@ -127,26 +118,6 @@ //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ - -#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 2 /* Haptic Driver initialization settings * Feedback Control Settings */ @@ -206,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 6f70f09beec2..000000000000 --- 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 e8082eb71f8f..b897ffcab1b9 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, @@ -260,10 +260,3 @@ bool music_mask_user(uint16_t keycode) { return true; } } - -void matrix_init_user(void) { -} - - -void matrix_scan_user(void) { -} diff --git a/keyboards/hadron/ver3/keymaps/ishtob/keymap.c b/keyboards/hadron/ver3/keymaps/ishtob/keymap.c index 0998ad93b7d1..c1bfe1f1c155 100644 --- a/keyboards/hadron/ver3/keymaps/ishtob/keymap.c +++ b/keyboards/hadron/ver3/keymaps/ishtob/keymap.c @@ -176,7 +176,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } diff --git a/keyboards/hadron/ver3/keymaps/readme.md b/keyboards/hadron/ver3/keymaps/readme.md deleted file mode 100644 index 66bf06b7111e..000000000000 --- 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 ef839977eafc..69d33cb0aeb7 100644 --- a/keyboards/hadron/ver3/rules.mk +++ b/keyboards/hadron/ver3/rules.mk @@ -9,19 +9,18 @@ BOOTLOADER = stm32-dfu # comment out to disable the options. # BACKLIGHT_ENABLE = no -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # 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 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 0664bf4b0ec2..4c5a2e0c9abe 100644 --- a/keyboards/hadron/ver3/ver3.c +++ b/keyboards/hadron/ver3/ver3.c @@ -14,9 +14,6 @@ * along with this program. If not, see . */ #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; +#ifdef OLED_ENABLE +oled_rotation_t oled_init_kb(oled_rotation_t rotation) { return OLED_ROTATION_180; } -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; - -__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); - -/* Matrix display is 19 x 9 pixels */ +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } + 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); - -*/ + // 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; -/* Mod display is 41 x 16 pixels */ -#define MOD_DISPLAY_X 30 -#define MOD_DISPLAY_Y 18 + // force on for oled location + if((x == 0) && (y >= (MATRIX_COLS - 3))) on = 1; - 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 - - 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 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); + } + return false; } - -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/halberd/config.h b/keyboards/halberd/config.h index d21e9bb5244d..66777a25093a 100644 --- a/keyboards/halberd/config.h +++ b/keyboards/halberd/config.h @@ -98,54 +98,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -164,26 +116,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/halberd/halberd.c b/keyboards/halberd/halberd.c index 8b59310a7fc5..8ce55ca3e57d 100644 --- a/keyboards/halberd/halberd.c +++ b/keyboards/halberd/halberd.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "halberd.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/halberd/info.json b/keyboards/halberd/info.json index 5e2a57f216d4..cd8ae3b27af7 100644 --- a/keyboards/halberd/info.json +++ b/keyboards/halberd/info.json @@ -2,12 +2,9 @@ "keyboard_name": "Halberd", "url": "", "maintainer": "ka2hiro", - "width": 11, - "height": 4, "layouts": { "LAYOUT": { "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":"Tab", "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":"Tab", "x":0, "y":1}, {"label":"_", "x":1, "y":1}, {"label":"+", "x":2, "y":1}, {"label":"|", "x":3, "y":1}, {"label":"~", "x":4, "y":1}, {"label":"BkSp", "x":5, "y":1}, {"label":":", "x":6, "y":1}, {"label":"\"", "x":7, "y":1}, {"label":">", "x":8, "y":1}, {"label":"{", "x":9, "y":1}, {"label":"}", "x":10, "y":1}, {"label":"Caps", "x":0, "y":2}, {"label":"-", "x":1, "y":2}, {"label":"=", "x":2, "y":2}, {"label":"\\", "x":3, "y":2}, {"label":"`", "x":4, "y":2}, {"label":"Enter", "x":5, "y":2}, {"label":";", "x":6, "y":2}, {"label":"'", "x":7, "y":2}, {"label":"<", "x":8, "y":2}, {"label":"[", "x":9, "y":2}, {"label":"]", "x":10, "y":2}, {"label":"GUI", "x":2, "y":3}, {"label":"Lower", "x":3, "y":3}, {"label":"Esc", "x":4, "y":3}, {"x":5, "y":3}, {"label":"Shift", "x":6, "y":3}, {"label":"Raise", "x":7, "y":3}, {"label":"Alt", "x":8, "y":3}] } } } - diff --git a/keyboards/halberd/keymaps/default/keymap.c b/keyboards/halberd/keymaps/default/keymap.c index c79a81deff60..d9a872c1b9dc 100644 --- a/keyboards/halberd/keymaps/default/keymap.c +++ b/keyboards/halberd/keymaps/default/keymap.c @@ -146,15 +146,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/halberd/rules.mk b/keyboards/halberd/rules.mk index a0eb4c804fb7..e54cbf8ec06a 100644 --- a/keyboards/halberd/rules.mk +++ b/keyboards/halberd/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/halfcliff/config.h b/keyboards/halfcliff/config.h new file mode 100644 index 000000000000..287fd2f4ac7b --- /dev/null +++ b/keyboards/halfcliff/config.h @@ -0,0 +1,69 @@ +/* +Copyright 2021 n2 + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x0335 +#define PRODUCT_ID 0x0021 +#define DEVICE_VER 0x0001 +#define MANUFACTURER n2 +#define PRODUCT halfcliff + +/* key matrix size */ +#define MATRIX_ROWS 20 +#define MATRIX_COLS 5 + +#define MATRIX_ROW_PINS { F5, F6, F7, D7, B5, F5, F6, F7, D7, B5 } +#define MATRIX_COL_PINS { B4, E6, C6, B6, B2 } +#define UNUSED_PINS + +//#define NUMBER_OF_ENCODERS 1 +#define ENCODERS_PAD_A { D4 } +#define ENCODERS_PAD_B { F4 } +#define ENCODER_RESOLUTION 2 + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +#define SOFT_SERIAL_PIN D2 // or D1, D2, D3, E6 + + #define RGB_DI_PIN D3 + #ifdef RGB_DI_PIN + #define RGBLED_NUM 10 + #define RGBLIGHT_SPLIT + #define RGBLED_SPLIT { 5, 5 } + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ + #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ + #endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/halfcliff/halfcliff.c b/keyboards/halfcliff/halfcliff.c new file mode 100644 index 000000000000..9e3f64d284b6 --- /dev/null +++ b/keyboards/halfcliff/halfcliff.c @@ -0,0 +1,97 @@ +/* Copyright 2021 n2 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "halfcliff.h" + +#ifdef OLED_ENABLE + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _DEFAULT = 0, + _RAISE, + _LOWER, + _ADJUST +/* _FN */ +}; + +oled_rotation_t oled_init_kb(oled_rotation_t rotation) { + if (!is_keyboard_master()) { + return OLED_ROTATION_180; // flips the display 180 degrees if offhand + } + return rotation; +} +oled_rotation_t oled_init_kb(oled_rotation_t rotation) { return OLED_ROTATION_180; } + +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } + if (!is_keyboard_master()) { + static const char PROGMEM qmk_logo[] = { + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00 + }; + oled_write_P(qmk_logo, false); + } else { + // Host Keyboard Layer Status + oled_write_P(PSTR("Layer: "), false); + switch (get_highest_layer(layer_state)) { + case _DEFAULT: + oled_write_P(PSTR("DEFAULT\n"), false); + break; + case _RAISE: + oled_write_P(PSTR("RAISE\n"), false); + break; + case _LOWER: + oled_write_P(PSTR("LOWER\n"), false); + break; + case _ADJUST: + oled_write_P(PSTR("ADJUST\n"), false); + break; + default: + // Or use the write_ln shortcut over adding '\n' to the end of your string + oled_write_ln_P(PSTR("Undefined"), false); + }; + // Host Keyboard LED Status + led_t led_state = host_keyboard_led_state(); + oled_write_P(led_state.num_lock ? PSTR("NUMLCK ") : PSTR(" "), false); + oled_write_P(led_state.caps_lock ? PSTR("CAPLCK ") : PSTR(" "), false); + oled_write_P(led_state.scroll_lock ? PSTR("SCRLCK\n") : PSTR(" \n"), false); + } + return false; +} +#endif + +#ifdef ENCODER_ENABLE +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + if (index == 0) { /* Left side encoder */ + if (clockwise) { + tap_code(KC_WH_U); + } else { + tap_code(KC_WH_D); + } + } else if (index == 1) { /* Right side encoder */ + if (clockwise) { + tap_code(KC_WH_U); + } else { + tap_code(KC_WH_D); + } + } + return true; +} +#endif diff --git a/keyboards/halfcliff/halfcliff.h b/keyboards/halfcliff/halfcliff.h new file mode 100644 index 000000000000..6e4c808641e5 --- /dev/null +++ b/keyboards/halfcliff/halfcliff.h @@ -0,0 +1,58 @@ +/* Copyright 2021 n2 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + +#define LAYOUT( \ + l51,l50,l00,l01,l02,l03,l04,r04,r03,r02,r01,r00,r50,r51,r52,\ + l61,l60,l10,l11,l12,l13,l14,r14,r13,r12,r11,r10,r60,r61,r62,\ + l71,l70,l20,l21,l22,l23,l24,r24,r23,r22,r21,r20,r70,r71,r72,\ + l81,l80,l30,l31,l32,l33,l34,r34,r33,r32,r31,r30,r80,r81,r82,\ + l91,l90,l40,l41,l42,l43,l44,r44,r43,r42,r41,r40,r90,r91,r92\ +) \ +{ \ + {l00, l01, l02, l03, l04 }, \ + {l10, l11, l12, l13, l14 }, \ + {l20, l21, l22, l23, l24 }, \ + {l30, l31, l32, l33, l34 }, \ + {l40, l41, l42, l43, l44 }, \ + {l50, l51, KC_NO,KC_NO,KC_NO}, \ + {l60, l61, KC_NO,KC_NO,KC_NO}, \ + {l70, l71, KC_NO,KC_NO,KC_NO}, \ + {l80, l81, KC_NO,KC_NO,KC_NO}, \ + {l90, l91, KC_NO,KC_NO,KC_NO}, \ + {r00, r01, r02, r03, r04 }, \ + {r10, r11, r12, r13, r14 }, \ + {r20, r21, r22, r23, r24 }, \ + {r30, r31, r32, r33, r34 }, \ + {r40, r41, r42, r43, r44 }, \ + {r50, r51, r52, KC_NO,KC_NO}, \ + {r60, r61, r62, KC_NO,KC_NO}, \ + {r70, r71, r72, KC_NO,KC_NO}, \ + {r80, r81, r82, KC_NO,KC_NO}, \ + {r90, r91, r92, KC_NO,KC_NO}, \ +} diff --git a/keyboards/halfcliff/info.json b/keyboards/halfcliff/info.json new file mode 100644 index 000000000000..d5b5d4e53fb1 --- /dev/null +++ b/keyboards/halfcliff/info.json @@ -0,0 +1,86 @@ +{ + "keyboard_name": "halfcliff", + "url": "https://github.com/N2-Sumikko", + "maintainer": "n2", + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0.75,"y":0}, + {"x":1.75,"y":0}, + {"x":2.75,"y":0}, + {"x":3.75,"y":0}, + {"x":4.75,"y":0}, + {"x":5.75,"y":0}, + {"x":6.75,"y":0}, + {"x":8.25,"y":0}, + {"x":9.25,"y":0}, + {"x":10.25,"y":0}, + {"x":11.25,"y":0}, + {"x":12.25,"y":0}, + {"x":13.25,"y":0}, + {"x":14.25,"y":0}, + {"x":15.25,"y":0}, + {"x":0.25,"y":1,"w":1.5}, + {"x":1.75,"y":1}, + {"x":2.75,"y":1}, + {"x":3.75,"y":1}, + {"x":4.75,"y":1}, + {"x":5.75,"y":1}, + {"x":6.75,"y":1}, + {"x":8.25,"y":1}, + {"x":9.25,"y":1}, + {"x":10.25,"y":1}, + {"x":11.25,"y":1}, + {"x":12.25,"y":1}, + {"x":13.25,"y":1}, + {"x":14.25,"y":1}, + {"x":16.25,"y":0}, + {"x":0,"y":2,"w":1.75}, + {"x":1.75,"y":2}, + {"x":2.75,"y":2}, + {"x":3.75,"y":2}, + {"x":4.75,"y":2}, + {"x":5.75,"y":2}, + {"x":6.75,"y":2}, + {"x":8.25,"y":2}, + {"x":9.25,"y":2}, + {"x":10.25,"y":2}, + {"x":11.25,"y":2}, + {"x":12.25,"y":2}, + {"x":13.25,"y":2}, + {"x":14.25,"y":2}, + {"x":15.5,"y":1,"w":1.25,"h":2}, + {"x":0,"y":3,"w":1.75}, + {"x":1.75,"y":3}, + {"x":2.75,"y":3}, + {"x":3.75,"y":3}, + {"x":4.75,"y":3}, + {"x":5.75,"y":3}, + {"x":6.75,"y":3}, + {"x":8.25,"y":3}, + {"x":9.25,"y":3}, + {"x":10.25,"y":3}, + {"x":11.25,"y":3}, + {"x":12.25,"y":3}, + {"x":13.25,"y":3}, + {"x":14.25,"y":3}, + {"x":15.25,"y":3,"w":2}, + {"x":0.5,"y":4,"w":1.25}, + {"x":1.75,"y":4}, + {"x":2.75,"y":4}, + {"x":3.75,"y":4}, + {"x":4.75,"y":4}, + {"x":5.75,"y":4}, + {"x":6.75,"y":4}, + {"x":8.25,"y":4}, + {"x":9.25,"y":4}, + {"x":10.25,"y":4}, + {"x":11.25,"y":4}, + {"x":12.25,"y":4}, + {"x":13.25,"y":4}, + {"x":14.25,"y":4}, + {"x":15.25,"y":4} + ] + } + } +} diff --git a/keyboards/halfcliff/keymaps/default/keymap.c b/keyboards/halfcliff/keymaps/default/keymap.c new file mode 100644 index 000000000000..02743f5d4949 --- /dev/null +++ b/keyboards/halfcliff/keymaps/default/keymap.c @@ -0,0 +1,109 @@ +/* Copyright 2021 n2 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +#include "keymap_jp.h" + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _DEFAULT = 0, + _RAISE, + _LOWER, + _ADJUST +/* _FN */ +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* DEFAULT + * ,--------------------------------------------------------------------------------------------------------------------------------------. + * |ZEN/HAN | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | - | ^ | \ | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | TAB | q | w | e | r | t | | y | u | i | o | p | @ | [ | BSPC | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | CAPS | a | s | d | f | g | | h | j | k | l | ; | : | ] | ENT | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | LSHIFT | z | x | c | v | b | | n | m | , | . | / | \ | UP | RSHIFT | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | CTRL | LGUI | ALT | MUHEN | SPACE | SPACE | LOWER | RAISE | SPACE | HENKAN | KANA | APP | LEFT | DOWN | RIGHT | + * `--------------------------------------------------------------------------------------------------------------------------------------' + */ + [_DEFAULT] = LAYOUT( + KC_ZKHK, KC_1, KC_2, KC_3, KC_4, KC_5, _______, KC_6, KC_7, KC_8, KC_9, KC_0, JP_MINS, JP_CIRC, JP_YEN, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, _______, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_AT , JP_LBRC, KC_BSPC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, _______, KC_H, KC_J, KC_K, KC_L, KC_SCLN, JP_COLN, JP_RBRC, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, _______, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, JP_BSLS, KC_UP, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN, KC_SPC, KC_SPC, MO(_LOWER), MO(_RAISE), KC_SPC, KC_HENK, KC_KANA, KC_APP, KC_LEFT, KC_DOWN, KC_RGHT + ), + /* RAISE + * ,--------------------------------------------------------------------------------------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | | | | | | | | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | | | | | | | | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | | | | | | | | | | | + * `--------------------------------------------------------------------------------------------------------------------------------------' + */ + [_RAISE] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_1, KC_2, KC_3, KC_4, KC_5, _______, KC_6, KC_7, KC_8, KC_9, KC_0, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + /* LOWER + * ,--------------------------------------------------------------------------------------------------------------------------------------. + * | | | | | | |RGB_TOG | | | | | | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | |RGB_VAI | | | | | | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | |RGB_HUI | | | | | | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | |RGB_SAI | | | | | | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | | | | | | | | | | | + * `--------------------------------------------------------------------------------------------------------------------------------------' + */ + [_LOWER] = LAYOUT( + _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, RGB_SAI, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + /* ADJUST + * ,--------------------------------------------------------------------------------------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | | | | | | | | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | | | | | | | | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | | | | | | | | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | | | | | | | | | | | + * `--------------------------------------------------------------------------------------------------------------------------------------' + */ + [_ADJUST] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/halfcliff/keymaps/default/readme.md b/keyboards/halfcliff/keymaps/default/readme.md new file mode 100644 index 000000000000..2924c68c24aa --- /dev/null +++ b/keyboards/halfcliff/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for halfcliff diff --git a/keyboards/halfcliff/keymaps/via/keymap.c b/keyboards/halfcliff/keymaps/via/keymap.c new file mode 100644 index 000000000000..e0a825e7c307 --- /dev/null +++ b/keyboards/halfcliff/keymaps/via/keymap.c @@ -0,0 +1,112 @@ +/* Copyright 2021 n2 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +#include "keymap_jp.h" + +#define RAISE FN_MO13 +#define LOWER FN_MO23 + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _DEFAULT = 0, + _RAISE, + _LOWER, + _ADJUST +/* _FN */ +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* DEFAULT + * ,--------------------------------------------------------------------------------------------------------------------------------------. + * |ZEN/HAN | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | - | ^ | \ | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | TAB | q | w | e | r | t | | y | u | i | o | p | @ | [ | BSPC | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | CAPS | a | s | d | f | g | | h | j | k | l | ; | : | ] | ENT | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | LSHIFT | z | x | c | v | b | | n | m | , | . | / | \ | UP | RSHIFT | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | CTRL | LGUI | ALT | MUHEN | SPACE | SPACE | LOWER | RAISE | SPACE | HENKAN | KANA | APP | LEFT | DOWN | RIGHT | + * `--------------------------------------------------------------------------------------------------------------------------------------' + */ + [_DEFAULT] = LAYOUT( + KC_ZKHK, KC_1, KC_2, KC_3, KC_4, KC_5, _______, KC_6, KC_7, KC_8, KC_9, KC_0, JP_MINS, JP_CIRC, JP_YEN, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, _______, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_AT , JP_LBRC, KC_BSPC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, _______, KC_H, KC_J, KC_K, KC_L, KC_SCLN, JP_COLN, JP_RBRC, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, _______, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, JP_BSLS, KC_UP, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN, KC_SPC, KC_SPC, FN_MO23, FN_MO13, KC_SPC, KC_HENK, KC_KANA, KC_APP, KC_LEFT, KC_DOWN, KC_RGHT + ), + /* RAISE + * ,--------------------------------------------------------------------------------------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | | | | | | | | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | | | | | | | | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | | | | | | | | | | | + * `--------------------------------------------------------------------------------------------------------------------------------------' + */ + [_RAISE] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_1, KC_2, KC_3, KC_4, KC_5, _______, KC_6, KC_7, KC_8, KC_9, KC_0, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + /* LOWER + * ,--------------------------------------------------------------------------------------------------------------------------------------. + * | | | | | | |RGB_TOG | | | | | | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | |RGB_VAI | | | | | | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | |RGB_HUI | | | | | | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | |RGB_SAI | | | | | | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | | | | | | | | | | | + * `--------------------------------------------------------------------------------------------------------------------------------------' + */ + [_LOWER] = LAYOUT( + _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, RGB_SAI, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + /* ADJUST + * ,--------------------------------------------------------------------------------------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | | | | | | | | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | | | | | | | | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | | | | | | | | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | | | | | | | | | | | + * `--------------------------------------------------------------------------------------------------------------------------------------' + */ + [_ADJUST] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/halfcliff/keymaps/via/readme.md b/keyboards/halfcliff/keymaps/via/readme.md new file mode 100644 index 000000000000..2924c68c24aa --- /dev/null +++ b/keyboards/halfcliff/keymaps/via/readme.md @@ -0,0 +1 @@ +# The default keymap for halfcliff diff --git a/keyboards/halfcliff/keymaps/via/rules.mk b/keyboards/halfcliff/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/halfcliff/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/halfcliff/matrix.c b/keyboards/halfcliff/matrix.c new file mode 100644 index 000000000000..556b75ca5901 --- /dev/null +++ b/keyboards/halfcliff/matrix.c @@ -0,0 +1,277 @@ +/* +Copyright 2012 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include +#include +#include "util.h" +#include "matrix.h" +#include "debounce.h" +#include "quantum.h" +#include "split_util.h" +#include "config.h" +#include "transport.h" + +#define ERROR_DISCONNECT_COUNT 5 + +#define ROWS_PER_HAND (MATRIX_ROWS / 2) + +static pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; +static pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; + +/* matrix state(1:on, 0:off) */ +static matrix_row_t raw_matrix[MATRIX_ROWS]; // raw values +static matrix_row_t matrix[MATRIX_ROWS]; // debounced values + +// row offsets for each hand +uint8_t thisHand, thatHand; + +// user-defined overridable functions +__attribute__((weak)) void matrix_init_kb(void) { matrix_init_user(); } + +__attribute__((weak)) void matrix_scan_kb(void) { matrix_scan_user(); } + +__attribute__((weak)) void matrix_init_user(void) {} + +__attribute__((weak)) void matrix_scan_user(void) {} + +__attribute__((weak)) void matrix_slave_scan_user(void) {} + +matrix_row_t matrix_get_row(uint8_t row) { return matrix[row]; } + +void matrix_print(void) {} + +static inline void setPinOutput_writeLow(pin_t pin) { + ATOMIC_BLOCK_FORCEON { + setPinOutput(pin); + writePinLow(pin); + } +} + +static inline void setPinInputHigh_atomic(pin_t pin) { + ATOMIC_BLOCK_FORCEON { setPinInputHigh(pin); } +} + +// matrix code +static void select_row(uint8_t row) { setPinOutput_writeLow(row_pins[row]); } + +static void unselect_row(uint8_t row) { setPinInputHigh_atomic(row_pins[row]); } + +static void unselect_rows(void) { + for (uint8_t x = 0; x < ROWS_PER_HAND; x++) { + setPinInputHigh_atomic(row_pins[x]); + } +} + +static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) { + // Start with a clear matrix row + matrix_row_t current_row_value = 0; + + // Select row + select_row(current_row); + wait_us(30); + + // For each col... + for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) { + // Select the col pin to read (active low) + uint8_t pin_state = readPin(col_pins[col_index]); + + // Populate the matrix row with the state of the col pin + current_row_value |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index); + } + + // Unselect row + unselect_row(current_row); + if (current_row + 1 < MATRIX_ROWS) { + wait_us(30); // wait for row signal to go HIGH + } + + // If the row has changed, store the row and return the changed flag. + if (current_matrix[current_row] != current_row_value) { + current_matrix[current_row] = current_row_value; + return true; + } + return false; +} + +static void select_col(uint8_t col) { setPinOutput_writeLow(col_pins[col]); } + +static void unselect_col(uint8_t col) { setPinInputHigh_atomic(col_pins[col]); } + +static void unselect_cols(void) { + for (uint8_t x = 0; x < MATRIX_COLS; x++) { + setPinInputHigh_atomic(col_pins[x]); + } +} + +static void init_pins(void) { + unselect_rows(); + for (uint8_t x = 0; x < MATRIX_COLS; x++) { + setPinInputHigh_atomic(col_pins[x]); + } + unselect_cols(); + for (uint8_t x = 0; x < ROWS_PER_HAND; x++) { + setPinInputHigh_atomic(row_pins[x]); + } +} + +static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col) { + bool matrix_changed = false; + + // Select col + select_col(current_col); + wait_us(30); + + // For each row... + for (uint8_t row_index = 0; row_index < ROWS_PER_HAND; row_index++) { + // Store last value of row prior to reading + matrix_row_t last_row_value = current_matrix[row_index]; + matrix_row_t current_row_value = last_row_value; + + // Check row pin state + if (readPin(row_pins[row_index]) == 0) { + // Pin LO, set col bit + current_row_value |= (MATRIX_ROW_SHIFTER << current_col); + } else { + // Pin HI, clear col bit + current_row_value &= ~(MATRIX_ROW_SHIFTER << current_col); + } + + // Determine if the matrix changed state + if ((last_row_value != current_row_value)) { + matrix_changed |= true; + current_matrix[row_index] = current_row_value; + } + } + + // Unselect col + unselect_col(current_col); + if (current_col + 1 < MATRIX_COLS) { + wait_us(30); // wait for col signal to go HIGH + } + + return matrix_changed; +} + +void matrix_init(void) { + split_pre_init(); + + // Set pinout for right half if pinout for that half is defined + if (!isLeftHand) { +#ifdef DIRECT_PINS_RIGHT + const pin_t direct_pins_right[MATRIX_ROWS][MATRIX_COLS] = DIRECT_PINS_RIGHT; + for (uint8_t i = 0; i < MATRIX_ROWS; i++) { + for (uint8_t j = 0; j < MATRIX_COLS; j++) { + direct_pins[i][j] = direct_pins_right[i][j]; + } + } +#endif +#ifdef MATRIX_ROW_PINS_RIGHT + const pin_t row_pins_right[MATRIX_ROWS] = MATRIX_ROW_PINS_RIGHT; + for (uint8_t i = 0; i < MATRIX_ROWS; i++) { + row_pins[i] = row_pins_right[i]; + } +#endif +#ifdef MATRIX_COL_PINS_RIGHT + const pin_t col_pins_right[MATRIX_COLS] = MATRIX_COL_PINS_RIGHT; + for (uint8_t i = 0; i < MATRIX_COLS; i++) { + col_pins[i] = col_pins_right[i]; + } +#endif + } + + thisHand = isLeftHand ? 0 : (ROWS_PER_HAND); + thatHand = ROWS_PER_HAND - thisHand; + + // initialize key pins + init_pins(); + + // initialize matrix state: all keys off + for (uint8_t i = 0; i < MATRIX_ROWS; i++) { + raw_matrix[i] = 0; + matrix[i] = 0; + } + + debounce_init(ROWS_PER_HAND); + + matrix_init_quantum(); + + split_post_init(); +} + +bool matrix_post_scan(void) { + bool changed = false; + if (is_keyboard_master()) { + static uint8_t error_count; + + matrix_row_t slave_matrix[ROWS_PER_HAND] = {0}; + if (!transport_master(matrix + thisHand, slave_matrix)) { + error_count++; + + if (error_count > ERROR_DISCONNECT_COUNT) { + // reset other half if disconnected + for (int i = 0; i < ROWS_PER_HAND; ++i) { + matrix[thatHand + i] = 0; + slave_matrix[i] = 0; + } + + changed = true; + } + } else { + error_count = 0; + + for (int i = 0; i < ROWS_PER_HAND; ++i) { + if (matrix[thatHand + i] != slave_matrix[i]) { + matrix[thatHand + i] = slave_matrix[i]; + changed = true; + } + } + } + + matrix_scan_quantum(); + } else { + transport_slave(matrix + thatHand, matrix + thisHand); + + matrix_slave_scan_user(); + } + + return changed; +} + +uint8_t matrix_scan(void) { + bool local_changed = false; + static matrix_row_t temp_raw_matrix[MATRIX_ROWS]; // temp raw values + + // Set row, read cols + for (uint8_t current_row = 0; current_row < ROWS_PER_HAND/2; current_row++) { + local_changed |= read_cols_on_row(raw_matrix, current_row); + } + + // Set col, read rows + for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) { + local_changed |= read_rows_on_col(temp_raw_matrix, current_col); + //Updated key matrix on lines 6-10 (or lines 16-20) + if(local_changed) { + for (uint8_t i = ROWS_PER_HAND/2; i < ROWS_PER_HAND; i++) { + raw_matrix[i] = temp_raw_matrix[i]; + } + } + } + + debounce(raw_matrix, matrix + thisHand, ROWS_PER_HAND, local_changed); + + bool remote_changed = matrix_post_scan(); + return (uint8_t)(local_changed || remote_changed); +} diff --git a/keyboards/halfcliff/readme.md b/keyboards/halfcliff/readme.md new file mode 100644 index 000000000000..37e8d85c20fc --- /dev/null +++ b/keyboards/halfcliff/readme.md @@ -0,0 +1,19 @@ +# halfcliff + +![halfcliff](https://user-images.githubusercontent.com/54104281/125184713-0b096b00-e25b-11eb-8237-5f4d2a286bc4.jpg) + +Halfcliff keyboard is a split keyboard using a single-sided board. + +* Keyboard Maintainer: [n2](https://github.com/N2-Sumikko) +* Hardware Supported: halfcliff PCB, Pro Micro +* Hardware Availability: [PCB & Plate Data](https://github.com/N2-Sumikko/HalfCliff.git) + +Make example for this keyboard (after setting up your build environment): + + make halfcliff:default + +Flashing example for this keyboard: + + make halfcliff:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/halfcliff/rules.mk b/keyboards/halfcliff/rules.mk new file mode 100644 index 000000000000..d08ced52f2d9 --- /dev/null +++ b/keyboards/halfcliff/rules.mk @@ -0,0 +1,26 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = no # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +SPLIT_KEYBOARD = yes +ENCODER_ENABLE = no +POINTING_DEVICE_ENABLE = no +CUSTOM_MATRIX = yes +OLED_ENABLE = no + +SRC += matrix.c diff --git a/keyboards/han60/config.h b/keyboards/han60/config.h new file mode 100644 index 000000000000..a695cd92a3f6 --- /dev/null +++ b/keyboards/han60/config.h @@ -0,0 +1,152 @@ +/* +Copyright 2021 farhandsome + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4842 +#define PRODUCT_ID 0xFB60 +#define DEVICE_VER 0x0001 +#define MANUFACTURER HanBoards +#define PRODUCT han60 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS { D5, D3, D2, D1, D0} +#define MATRIX_COL_PINS { D4, D6, D7, B4, B5, B6, C6, C7, F7, F6, F5, F4, F1, F0} +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +//#define LED_NUM_LOCK_PIN B0 +//#define LED_CAPS_LOCK_PIN B1 +//#define LED_SCROLL_LOCK_PIN B2 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +//#define RGB_DI_PIN E2 +//#ifdef RGB_DI_PIN +//# define RGBLED_NUM 16 +//# define RGBLIGHT_HUE_STEP 8 +//# define RGBLIGHT_SAT_STEP 8 +//# define RGBLIGHT_VAL_STEP 8 +//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +//# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +//#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/han60/han60.c b/keyboards/han60/han60.c new file mode 100644 index 000000000000..4ba3a50e7231 --- /dev/null +++ b/keyboards/han60/han60.c @@ -0,0 +1,17 @@ +/* Copyright 2021 farhandsome + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "han60.h" diff --git a/keyboards/han60/han60.h b/keyboards/han60/han60.h new file mode 100644 index 000000000000..f6e25c23b218 --- /dev/null +++ b/keyboards/han60/han60.h @@ -0,0 +1,103 @@ +/* Copyright 2021 farhandsome + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + +#define XXX KC_NO + + +#define LAYOUT_all( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \ + 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, K40, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K4D, \ + K41, K42, K43, K44, K47, K48, K49, K4A, K4B, K4C \ +) { \ + { 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, XXX, K3D }, \ + { K40, K41, K42, K43, K44, XXX, XXX, K47, K48, K49, K4A, K4B, K4C, K4D } \ +} + +#define LAYOUT_tsangan( \ + 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, \ + K41, K42, K43, K44, K47, K49, K4B \ +) { \ + { 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, XXX, XXX }, \ + { XXX, K41, K42, K43, K44, XXX, XXX, K47, XXX, K49, XXX, K4B, XXX, XXX } \ +} + +#define LAYOUT_tsangan_arrowkeys( \ + 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, K3B, K3D, K4D, \ + K41, K42, K43, K44, K47, K48, K4A, K4C \ +) { \ + { 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, XXX, K3B, XXX, K3D }, \ + { XXX, K41, K42, K43, K44, XXX, XXX, K47, K48, XXX, K4A, XXX, K4C, K4D } \ +} + +#define LAYOUT_tsangan_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, K2C, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K1D, \ + K30, K40, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, \ + K41, K42, K43, K44, K47, K49, K4B \ +) { \ + { 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, XXX, XXX }, \ + { K40, K41, K42, K43, K44, XXX, XXX, K47, XXX, K49, XXX, K4B, XXX, XXX } \ +} + +#define LAYOUT_tsangan_iso_arrowkeys( \ + 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, K1D, \ + K30, K40, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3B, K3D, K4D, \ + K41, K42, K43, K44, K47, K48, K4A, K4C \ +) { \ + { 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, XXX, K3B, XXX, K3D }, \ + { K40, K41, K42, K43, K44, XXX, XXX, K47, K48, XXX, K4A, XXX, K4C, K4D } \ +} + + diff --git a/keyboards/han60/info.json b/keyboards/han60/info.json new file mode 100644 index 000000000000..474b20de0446 --- /dev/null +++ b/keyboards/han60/info.json @@ -0,0 +1,341 @@ +{ + "keyboard_name": "han60", + "maintainer": "qmk", + "url": "hanboards.com", + "layouts": { + "LAYOUT_all": { + "layout": [ + { "x": 0, "y": 0 }, + { "x": 1, "y": 0 }, + { "x": 2, "y": 0 }, + { "x": 3, "y": 0 }, + { "x": 4, "y": 0 }, + { "x": 5, "y": 0 }, + { "x": 6, "y": 0 }, + { "x": 7, "y": 0 }, + { "x": 8, "y": 0 }, + { "x": 9, "y": 0 }, + { "x": 10, "y": 0 }, + { "x": 11, "y": 0 }, + { "x": 12, "y": 0 }, + { "x": 13, "y": 0 }, + { "x": 14, "y": 0 }, + { "w": 1.5, "x": 0, "y": 1 }, + { "x": 1.5, "y": 1 }, + { "x": 2.5, "y": 1 }, + { "x": 3.5, "y": 1 }, + { "x": 4.5, "y": 1 }, + { "x": 5.5, "y": 1 }, + { "x": 6.5, "y": 1 }, + { "x": 7.5, "y": 1 }, + { "x": 8.5, "y": 1 }, + { "x": 9.5, "y": 1 }, + { "x": 10.5, "y": 1 }, + { "x": 11.5, "y": 1 }, + { "x": 12.5, "y": 1 }, + { "w": 1.5, "x": 13.5, "y": 1 }, + { "w": 1.75, "x": 0, "y": 2 }, + { "x": 1.75, "y": 2 }, + { "x": 2.75, "y": 2 }, + { "x": 3.75, "y": 2 }, + { "x": 4.75, "y": 2 }, + { "x": 5.75, "y": 2 }, + { "x": 6.75, "y": 2 }, + { "x": 7.75, "y": 2 }, + { "x": 8.75, "y": 2 }, + { "x": 9.75, "y": 2 }, + { "x": 10.75, "y": 2 }, + { "x": 11.75, "y": 2 }, + { "w": 2.25, "x": 12.75, "y": 2 }, + { "w": 1.25, "x": 0, "y": 3 }, + { "x": 1.25, "y": 3 }, + { "x": 2.25, "y": 3 }, + { "x": 3.25, "y": 3 }, + { "x": 4.25, "y": 3 }, + { "x": 5.25, "y": 3 }, + { "x": 6.25, "y": 3 }, + { "x": 7.25, "y": 3 }, + { "x": 8.25, "y": 3 }, + { "x": 9.25, "y": 3 }, + { "x": 10.25, "y": 3 }, + { "x": 11.25, "y": 3 }, + { "w": 1.75, "x": 11.25, "y": 3 }, + { "x": 13, "y": 3 }, + { "x": 14, "y": 3 }, + { "w": 1.5, "x": 0, "y": 4 }, + { "x": 1.5, "y": 4 }, + { "w": 1.5, "x": 2.5, "y": 4 }, + { "w": 7, "x": 4, "y": 4 }, + { "x": 11, "y": 4 }, + { "x": 12, "y": 4 }, + { "x": 12.5, "y": 4 }, + { "x": 13, "y": 4 }, + { "w": 1.5, "x": 13.5, "y": 4 }, + { "x": 14, "y": 4 } + ] + }, + "LAYOUT_tsangan": { + "layout": [ + { "x": 0, "y": 0 }, + { "x": 1, "y": 0 }, + { "x": 2, "y": 0 }, + { "x": 3, "y": 0 }, + { "x": 4, "y": 0 }, + { "x": 5, "y": 0 }, + { "x": 6, "y": 0 }, + { "x": 7, "y": 0 }, + { "x": 8, "y": 0 }, + { "x": 9, "y": 0 }, + { "x": 10, "y": 0 }, + { "x": 11, "y": 0 }, + { "x": 12, "y": 0 }, + { "w": 2, "x": 13, "y": 0 }, + { "w": 1.5, "x": 0, "y": 1 }, + { "x": 1.5, "y": 1 }, + { "x": 2.5, "y": 1 }, + { "x": 3.5, "y": 1 }, + { "x": 4.5, "y": 1 }, + { "x": 5.5, "y": 1 }, + { "x": 6.5, "y": 1 }, + { "x": 7.5, "y": 1 }, + { "x": 8.5, "y": 1 }, + { "x": 9.5, "y": 1 }, + { "x": 10.5, "y": 1 }, + { "x": 11.5, "y": 1 }, + { "x": 12.5, "y": 1 }, + { "w": 1.5, "x": 13.5, "y": 1 }, + { "w": 1.75, "x": 0, "y": 2 }, + { "x": 1.75, "y": 2 }, + { "x": 2.75, "y": 2 }, + { "x": 3.75, "y": 2 }, + { "x": 4.75, "y": 2 }, + { "x": 5.75, "y": 2 }, + { "x": 6.75, "y": 2 }, + { "x": 7.75, "y": 2 }, + { "x": 8.75, "y": 2 }, + { "x": 9.75, "y": 2 }, + { "x": 10.75, "y": 2 }, + { "x": 11.75, "y": 2 }, + { "w": 2.25, "x": 12.75, "y": 2 }, + { "w": 2.25, "x": 0, "y": 3 }, + { "x": 2.25, "y": 3 }, + { "x": 3.25, "y": 3 }, + { "x": 4.25, "y": 3 }, + { "x": 5.25, "y": 3 }, + { "x": 6.25, "y": 3 }, + { "x": 7.25, "y": 3 }, + { "x": 8.25, "y": 3 }, + { "x": 9.25, "y": 3 }, + { "x": 10.25, "y": 3 }, + { "x": 11.25, "y": 3 }, + { "w": 2.75, "x": 12.25, "y": 3 }, + { "w": 1.5, "x": 0, "y": 4 }, + { "x": 1.5, "y": 4 }, + { "w": 1.5, "x": 2.5, "y": 4 }, + { "w": 7, "x": 4, "y": 4 }, + { "w": 1.5, "x": 11, "y": 4 }, + { "x": 12.5, "y": 4 }, + { "w": 1.5, "x": 13.5, "y": 4 } + ] + }, + "LAYOUT_tsangan_arrowkeys": { + "layout": [ + { "x": 0, "y": 0 }, + { "x": 1, "y": 0 }, + { "x": 2, "y": 0 }, + { "x": 3, "y": 0 }, + { "x": 4, "y": 0 }, + { "x": 5, "y": 0 }, + { "x": 6, "y": 0 }, + { "x": 7, "y": 0 }, + { "x": 8, "y": 0 }, + { "x": 9, "y": 0 }, + { "x": 10, "y": 0 }, + { "x": 11, "y": 0 }, + { "x": 12, "y": 0 }, + { "w": 2, "x": 13, "y": 0 }, + { "w": 1.5, "x": 0, "y": 1 }, + { "x": 1.5, "y": 1 }, + { "x": 2.5, "y": 1 }, + { "x": 3.5, "y": 1 }, + { "x": 4.5, "y": 1 }, + { "x": 5.5, "y": 1 }, + { "x": 6.5, "y": 1 }, + { "x": 7.5, "y": 1 }, + { "x": 8.5, "y": 1 }, + { "x": 9.5, "y": 1 }, + { "x": 10.5, "y": 1 }, + { "x": 11.5, "y": 1 }, + { "x": 12.5, "y": 1 }, + { "w": 1.5, "x": 13.5, "y": 1 }, + { "w": 1.75, "x": 0, "y": 2 }, + { "x": 1.75, "y": 2 }, + { "x": 2.75, "y": 2 }, + { "x": 3.75, "y": 2 }, + { "x": 4.75, "y": 2 }, + { "x": 5.75, "y": 2 }, + { "x": 6.75, "y": 2 }, + { "x": 7.75, "y": 2 }, + { "x": 8.75, "y": 2 }, + { "x": 9.75, "y": 2 }, + { "x": 10.75, "y": 2 }, + { "x": 11.75, "y": 2 }, + { "w": 2.25, "x": 12.75, "y": 2 }, + { "w": 2.25, "x": 0, "y": 3 }, + { "x": 2.25, "y": 3 }, + { "x": 3.25, "y": 3 }, + { "x": 4.25, "y": 3 }, + { "x": 5.25, "y": 3 }, + { "x": 6.25, "y": 3 }, + { "x": 7.25, "y": 3 }, + { "x": 8.25, "y": 3 }, + { "x": 9.25, "y": 3 }, + { "x": 10.25, "y": 3 }, + { "w": 1.75, "x": 11.25, "y": 3 }, + { "x": 13, "y": 3 }, + { "x": 14, "y": 3 }, + { "w": 1.5, "x": 0, "y": 4 }, + { "x": 1.5, "y": 4 }, + { "w": 1.5, "x": 2.5, "y": 4 }, + { "w": 7, "x": 4, "y": 4 }, + { "x": 11, "y": 4 }, + { "x": 12, "y": 4 }, + { "x": 13, "y": 4 }, + { "x": 14, "y": 4 } + ] + }, + "LAYOUT_tsangan_iso": { + "layout": [ + { "x": 0, "y": 0 }, + { "x": 1, "y": 0 }, + { "x": 2, "y": 0 }, + { "x": 3, "y": 0 }, + { "x": 4, "y": 0 }, + { "x": 5, "y": 0 }, + { "x": 6, "y": 0 }, + { "x": 7, "y": 0 }, + { "x": 8, "y": 0 }, + { "x": 9, "y": 0 }, + { "x": 10, "y": 0 }, + { "x": 11, "y": 0 }, + { "x": 12, "y": 0 }, + { "w": 2, "x": 13, "y": 0 }, + { "w": 1.5, "x": 0, "y": 1 }, + { "x": 1.5, "y": 1 }, + { "x": 2.5, "y": 1 }, + { "x": 3.5, "y": 1 }, + { "x": 4.5, "y": 1 }, + { "x": 5.5, "y": 1 }, + { "x": 6.5, "y": 1 }, + { "x": 7.5, "y": 1 }, + { "x": 8.5, "y": 1 }, + { "x": 9.5, "y": 1 }, + { "x": 10.5, "y": 1 }, + { "x": 11.5, "y": 1 }, + { "x": 12.5, "y": 1 }, + { "h": 2, "w": 1.25, "x": 13.75, "y": 1 }, + { "w": 1.75, "x": 0, "y": 2 }, + { "x": 1.75, "y": 2 }, + { "x": 2.75, "y": 2 }, + { "x": 3.75, "y": 2 }, + { "x": 4.75, "y": 2 }, + { "x": 5.75, "y": 2 }, + { "x": 6.75, "y": 2 }, + { "x": 7.75, "y": 2 }, + { "x": 8.75, "y": 2 }, + { "x": 9.75, "y": 2 }, + { "x": 10.75, "y": 2 }, + { "x": 11.75, "y": 2 }, + { "x": 12.75, "y": 2 }, + { "w": 1.25, "x": 0, "y": 3 }, + { "x": 1.25, "y": 3 }, + { "x": 2.25, "y": 3 }, + { "x": 3.25, "y": 3 }, + { "x": 4.25, "y": 3 }, + { "x": 5.25, "y": 3 }, + { "x": 6.25, "y": 3 }, + { "x": 7.25, "y": 3 }, + { "x": 8.25, "y": 3 }, + { "x": 9.25, "y": 3 }, + { "x": 10.25, "y": 3 }, + { "x": 11.25, "y": 3 }, + { "w": 2.75, "x": 12.25, "y": 3 }, + { "w": 1.5, "x": 0, "y": 4 }, + { "x": 1.5, "y": 4 }, + { "w": 1.5, "x": 2.5, "y": 4 }, + { "w": 7, "x": 4, "y": 4 }, + { "w": 1.5, "x": 11, "y": 4 }, + { "x": 12.5, "y": 4 }, + { "w": 1.5, "x": 13.5, "y": 4 } + ] + }, + "LAYOUT_tsangan_iso_arrowkeys": { + "layout": [ + { "x": 0, "y": 0 }, + { "x": 1, "y": 0 }, + { "x": 2, "y": 0 }, + { "x": 3, "y": 0 }, + { "x": 4, "y": 0 }, + { "x": 5, "y": 0 }, + { "x": 6, "y": 0 }, + { "x": 7, "y": 0 }, + { "x": 8, "y": 0 }, + { "x": 9, "y": 0 }, + { "x": 10, "y": 0 }, + { "x": 11, "y": 0 }, + { "x": 12, "y": 0 }, + { "w": 2, "x": 13, "y": 0 }, + { "w": 1.5, "x": 0, "y": 1 }, + { "x": 1.5, "y": 1 }, + { "x": 2.5, "y": 1 }, + { "x": 3.5, "y": 1 }, + { "x": 4.5, "y": 1 }, + { "x": 5.5, "y": 1 }, + { "x": 6.5, "y": 1 }, + { "x": 7.5, "y": 1 }, + { "x": 8.5, "y": 1 }, + { "x": 9.5, "y": 1 }, + { "x": 10.5, "y": 1 }, + { "x": 11.5, "y": 1 }, + { "x": 12.5, "y": 1 }, + { "h": 2, "w": 1.25, "x": 13.75, "y": 1 }, + { "w": 1.75, "x": 0, "y": 2 }, + { "x": 1.75, "y": 2 }, + { "x": 2.75, "y": 2 }, + { "x": 3.75, "y": 2 }, + { "x": 4.75, "y": 2 }, + { "x": 5.75, "y": 2 }, + { "x": 6.75, "y": 2 }, + { "x": 7.75, "y": 2 }, + { "x": 8.75, "y": 2 }, + { "x": 9.75, "y": 2 }, + { "x": 10.75, "y": 2 }, + { "x": 11.75, "y": 2 }, + { "x": 12.75, "y": 2 }, + { "w": 1.25, "x": 0, "y": 3 }, + { "x": 1.25, "y": 3 }, + { "x": 2.25, "y": 3 }, + { "x": 3.25, "y": 3 }, + { "x": 4.25, "y": 3 }, + { "x": 5.25, "y": 3 }, + { "x": 6.25, "y": 3 }, + { "x": 7.25, "y": 3 }, + { "x": 8.25, "y": 3 }, + { "x": 9.25, "y": 3 }, + { "x": 10.25, "y": 3 }, + { "w": 1.75, "x": 11.25, "y": 3 }, + { "x": 13, "y": 3 }, + { "x": 14, "y": 3 }, + { "w": 1.5, "x": 0, "y": 4 }, + { "x": 1.5, "y": 4 }, + { "w": 1.5, "x": 2.5, "y": 4 }, + { "w": 7, "x": 4, "y": 4 }, + { "x": 11, "y": 4 }, + { "x": 12, "y": 4 }, + { "x": 13, "y": 4 }, + { "x": 14, "y": 4 } + ] + } + } +} + diff --git a/keyboards/han60/keymaps/default/keymap.c b/keyboards/han60/keymaps/default/keymap.c new file mode 100644 index 000000000000..ef75bc8c8835 --- /dev/null +++ b/keyboards/han60/keymaps/default/keymap.c @@ -0,0 +1,38 @@ +/* Copyright 2021 farhandsome + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* BASE */ + [0] = LAYOUT_all( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_GRAVE, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_SLSH, + KC_LCTL, KC_LCMD, KC_LALT, KC_SPACE, KC_RALT, KC_LEFT, MO(1), KC_DOWN, KC_RCTL, KC_RGHT + ), + /* FN */ + [1] = LAYOUT_all( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(1), KC_TRNS, KC_TRNS, KC_TRNS + ) +}; + + + diff --git a/keyboards/han60/keymaps/default/readme.md b/keyboards/han60/keymaps/default/readme.md new file mode 100644 index 000000000000..02e9fab479ad --- /dev/null +++ b/keyboards/han60/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for han60 diff --git a/keyboards/han60/keymaps/via/keymap.c b/keyboards/han60/keymaps/via/keymap.c new file mode 100644 index 000000000000..1e3aee8fd095 --- /dev/null +++ b/keyboards/han60/keymaps/via/keymap.c @@ -0,0 +1,54 @@ +/* Copyright 2021 farhandsome + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* LAYER 1 */ + [0] = LAYOUT_all( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_GRAVE, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_SLSH, + KC_LCTL, KC_LCMD, KC_LALT, KC_SPACE, KC_RALT, KC_LEFT, MO(1), KC_DOWN, KC_RCTL, KC_RGHT + ), + /* LAYER 2 */ + [1] = LAYOUT_all( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(1), KC_TRNS, KC_TRNS, KC_TRNS + ), + /* LAYER 3 */ + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + /* LAYER 4 */ + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; + + + diff --git a/keyboards/han60/keymaps/via/rules.mk b/keyboards/han60/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/han60/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/han60/readme.md b/keyboards/han60/readme.md new file mode 100644 index 000000000000..d2f0fb981178 --- /dev/null +++ b/keyboards/han60/readme.md @@ -0,0 +1,27 @@ +# han60 + +![han60](https://i.imgur.com/nfiSGNOh.jpg) + +The Han60 - a 60% gasket mounted keyboard with multiple layout capabilities. + +* Keyboard Maintainer: [farhandsome](https://github.com/farhandsome) +* Hardware Supported: Han60 PCB (ATmega32U4) +* Hardware Availability: [Han Boards](hanboards.com) + +Make example for this keyboard (after setting up your build environment): + + make han60:default + +Flashing example for this keyboard: + + make han60:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `RESET` if it is available diff --git a/keyboards/han60/rules.mk b/keyboards/han60/rules.mk new file mode 100644 index 000000000000..5c6747fe33a2 --- /dev/null +++ b/keyboards/han60/rules.mk @@ -0,0 +1,18 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/hand88/info.json b/keyboards/hand88/info.json index ca20b87e5895..1afb77570c49 100755 --- a/keyboards/hand88/info.json +++ b/keyboards/hand88/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Hand 88", "url": "https://yiancar-designs.com", "maintainer": "Yiancar-Designs", - "width": 18.25, - "height": 6.25, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":1.25, "y":0}, {"x":2.25, "y":0}, {"x":3.25, "y":0}, {"x":4.25, "y":0}, {"x":5.5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.75, "y":0}, {"x":10.75, "y":0}, {"x":11.75, "y":0}, {"x":12.75, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":4, "y":1.25}, {"x":5, "y":1.25}, {"x":6, "y":1.25}, {"x":7, "y":1.25}, {"x":8, "y":1.25}, {"x":9, "y":1.25}, {"x":10, "y":1.25}, {"x":11, "y":1.25}, {"x":12, "y":1.25}, {"x":13, "y":1.25}, {"x":14, "y":1.25}, {"x":15.25, "y":1.25}, {"x":16.25, "y":1.25}, {"x":17.25, "y":1.25}, {"x":0, "y":2.25, "w":1.5}, {"x":1.5, "y":2.25}, {"x":2.5, "y":2.25}, {"x":3.5, "y":2.25}, {"x":4.5, "y":2.25}, {"x":5.5, "y":2.25}, {"x":6.5, "y":2.25}, {"x":7.5, "y":2.25}, {"x":8.5, "y":2.25}, {"x":9.5, "y":2.25}, {"x":10.5, "y":2.25}, {"x":11.5, "y":2.25}, {"x":12.5, "y":2.25}, {"x":13.5, "y":2.25, "w":1.5}, {"x":15.25, "y":2.25}, {"x":16.25, "y":2.25}, {"x":17.25, "y":2.25}, {"x":0, "y":3.25, "w":1.75}, {"x":1.75, "y":3.25}, {"x":2.75, "y":3.25}, {"x":3.75, "y":3.25}, {"x":4.75, "y":3.25}, {"x":5.75, "y":3.25}, {"x":6.75, "y":3.25}, {"x":7.75, "y":3.25}, {"x":8.75, "y":3.25}, {"x":9.75, "y":3.25}, {"x":10.75, "y":3.25}, {"x":11.75, "y":3.25}, {"x":12.75, "y":3.25, "w":2.25}, {"x":0, "y":4.25, "w":1.25}, {"x":1.25, "y":4.25}, {"x":2.25, "y":4.25}, {"x":3.25, "y":4.25}, {"x":4.25, "y":4.25}, {"x":5.25, "y":4.25}, {"x":6.25, "y":4.25}, {"x":7.25, "y":4.25}, {"x":8.25, "y":4.25}, {"x":9.25, "y":4.25}, {"x":10.25, "y":4.25}, {"x":11.25, "y":4.25}, {"x":12.25, "y":4.25, "w":1.75}, {"x":14, "y":4.25}, {"x":16.25, "y":4.25}, {"x":0, "y":5.25, "w":1.5}, {"x":1.5, "y":5.25}, {"x":2.5, "y":5.25, "w":1.5}, {"x":4, "y":5.25, "w":7}, {"x":11, "y":5.25, "w":1.5}, {"x":12.5, "y":5.25}, {"x":13.5, "y":5.25, "w":1.5}, {"x":15.25, "y":5.25}, {"x":16.25, "y":5.25}, {"x":17.25, "y":5.25}] diff --git a/keyboards/hand88/rules.mk b/keyboards/hand88/rules.mk index 36088f03f725..e0135820bf69 100755 --- a/keyboards/hand88/rules.mk +++ b/keyboards/hand88/rules.mk @@ -12,17 +12,14 @@ OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in diff --git a/keyboards/handwired/108key_trackpoint/config.h b/keyboards/handwired/108key_trackpoint/config.h index b1ac790d7639..b5bf98271afb 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/108key_trackpoint/info.json b/keyboards/handwired/108key_trackpoint/info.json index bd221892b3b7..d3cf5ad26ac7 100644 --- a/keyboards/handwired/108key_trackpoint/info.json +++ b/keyboards/handwired/108key_trackpoint/info.json @@ -2,11 +2,8 @@ "keyboard_name": "108 Key with TrackPoint", "url": "", "maintainer": "mkem114", - "width": 22.5, - "height": 7.5, "layouts": { "LAYOUT": { - "key_count": 111, "layout": [ {"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, diff --git a/keyboards/handwired/108key_trackpoint/rules.mk b/keyboards/handwired/108key_trackpoint/rules.mk index 6cb226c22df4..d14e3fc434f4 100644 --- a/keyboards/handwired/108key_trackpoint/rules.mk +++ b/keyboards/handwired/108key_trackpoint/rules.mk @@ -2,32 +2,20 @@ MCU = at90usb1286 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = halfkay # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# 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 on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config) -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output PS2_MOUSE_ENABLE = yes PS2_USE_USART = yes diff --git a/keyboards/handwired/2x5keypad/config.h b/keyboards/handwired/2x5keypad/config.h index f7259607c78d..174fb736a2a3 100644 --- a/keyboards/handwired/2x5keypad/config.h +++ b/keyboards/handwired/2x5keypad/config.h @@ -39,13 +39,6 @@ /* Tap dancing params */ #define TAPPING_TERM 250 -/* key combination for command */ -/* DISABLED -#define IS_COMMAND() ( \ - get_mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ -) -*/ - #ifdef RGB_DI_PIN #define RGBLIGHT_ANIMATIONS #define RGBLED_NUM 0 diff --git a/keyboards/handwired/2x5keypad/info.json b/keyboards/handwired/2x5keypad/info.json index 2cc66f366bf7..77ce9a8b50a8 100644 --- a/keyboards/handwired/2x5keypad/info.json +++ b/keyboards/handwired/2x5keypad/info.json @@ -2,8 +2,6 @@ "keyboard_name": "2x5keypad", "url": "", "maintainer": "jmcameron", - "width": 5, - "height": 2, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/2x5keypad/rules.mk b/keyboards/handwired/2x5keypad/rules.mk index 52f64eb3f3e6..dbfa2c51dab2 100644 --- a/keyboards/handwired/2x5keypad/rules.mk +++ b/keyboards/handwired/2x5keypad/rules.mk @@ -2,19 +2,12 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina AUDIO_ENABLE = no BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite COMMAND_ENABLE = no # Commands for debug and configuration CONSOLE_ENABLE= no # Console for debug EXTRAKEY_ENABLE = yes # Audio control and System control @@ -22,4 +15,3 @@ MOUSEKEY_ENABLE = yes # Mouse keys NKRO_ENABLE = yes # USB Nkey Rollover - RGBLIGHT_ENABLE = no -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend diff --git a/keyboards/handwired/3dp660/config.h b/keyboards/handwired/3dp660/config.h index e719cf2c255d..60ab13deaacd 100644 --- a/keyboards/handwired/3dp660/config.h +++ b/keyboards/handwired/3dp660/config.h @@ -19,11 +19,11 @@ along with this program. If not, see . #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x6075 +#define VENDOR_ID 0x676F // "go" - gooberpsycho +#define PRODUCT_ID 0x3660 // "3" "660" #define DEVICE_VER 0x0001 -#define MANUFACTURER Handwired -#define PRODUCT 3dp660 +#define MANUFACTURER gooberpsycho +#define PRODUCT 3dp660 Handwired #define TAPPING_TERM 400 diff --git a/keyboards/handwired/3dp660/info.json b/keyboards/handwired/3dp660/info.json index 5b7825088519..db3d47b068a5 100644 --- a/keyboards/handwired/3dp660/info.json +++ b/keyboards/handwired/3dp660/info.json @@ -2,8 +2,6 @@ "keyboard_name": "3dp660", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_66_ansi": { diff --git a/keyboards/handwired/3dp660/rules.mk b/keyboards/handwired/3dp660/rules.mk index d97f13a39d8e..9559bd5735c3 100644 --- a/keyboards/handwired/3dp660/rules.mk +++ b/keyboards/handwired/3dp660/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = halfkay # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LTO_ENABLE = yes diff --git a/keyboards/handwired/412_64/412_64.c b/keyboards/handwired/412_64/412_64.c index eaec54ade88e..4a8cc006943b 100644 --- a/keyboards/handwired/412_64/412_64.c +++ b/keyboards/handwired/412_64/412_64.c @@ -1,29 +1 @@ - #include "412_64.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/handwired/412_64/412_64.h b/keyboards/handwired/412_64/412_64.h index 27a32f15aaa5..9601f1257cfa 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/412_64/config.h b/keyboards/handwired/412_64/config.h index 542a77e755f8..6cc094d6d5f8 100644 --- a/keyboards/handwired/412_64/config.h +++ b/keyboards/handwired/412_64/config.h @@ -75,54 +75,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -141,23 +93,3 @@ //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - diff --git a/keyboards/handwired/412_64/info.json b/keyboards/handwired/412_64/info.json index 8d0d14ef90b6..dad67a3f2a91 100644 --- a/keyboards/handwired/412_64/info.json +++ b/keyboards/handwired/412_64/info.json @@ -2,8 +2,6 @@ "keyboard_name": "412-64", "url": "", "maintainer": "fateeverywhere", - "width": 16, - "height": 4, "layouts": { "LAYOUT_ortho_4x16": { "layout": [ diff --git a/keyboards/handwired/412_64/keymaps/default/keymap.c b/keyboards/handwired/412_64/keymaps/default/keymap.c index 27966eb9a513..ac8f47bd0693 100644 --- a/keyboards/handwired/412_64/keymaps/default/keymap.c +++ b/keyboards/handwired/412_64/keymaps/default/keymap.c @@ -70,19 +70,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/handwired/412_64/rules.mk b/keyboards/handwired/412_64/rules.mk index 044a6d01e9ea..d6cc65ccdf6d 100644 --- a/keyboards/handwired/412_64/rules.mk +++ b/keyboards/handwired/412_64/rules.mk @@ -2,31 +2,17 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config) -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 - -LAYOUTS = ortho_4x16 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/42/info.json b/keyboards/handwired/42/info.json index 0d5b56561a78..33d8e8ff917d 100644 --- a/keyboards/handwired/42/info.json +++ b/keyboards/handwired/42/info.json @@ -2,8 +2,6 @@ "keyboard_name": "42", "url": "", "maintainer": "nglgzz", - "width": 14.5, - "height": 5.417, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/42/rules.mk b/keyboards/handwired/42/rules.mk index 1ea057e44410..08ffe1a1f15a 100644 --- a/keyboards/handwired/42/rules.mk +++ b/keyboards/handwired/42/rules.mk @@ -5,33 +5,21 @@ MCU = atmega32u4 F_CPU = 8000000 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328p USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# 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 -MIDI_ENABLE = no # MIDI support -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output -UNICODE_ENABLE = no # Unicode -UNICODEMAP_ENABLE = no # ^^ -UCIS_ENABLE = no # ^^ -BLUETOOTH = AdafruitBLE +BLUETOOTH_ENABLE = yes +BLUETOOTH_DRIVER = AdafruitBLE diff --git a/keyboards/handwired/6key/info.json b/keyboards/handwired/6key/info.json index f60b9ec868a2..8d165a59ae89 100644 --- a/keyboards/handwired/6key/info.json +++ b/keyboards/handwired/6key/info.json @@ -2,12 +2,9 @@ "keyboard_name": "6key", "url": "https://github.com/Bratzworth/6key", "maintainer": "bratzworth", - "width": 3, - "height": 2, "layouts": { "LAYOUT": { "layout": [{"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, {"label":"k02", "x":2, "y":0}, {"label":"k10", "x":0, "y":1}, {"label":"k11", "x":1, "y":1}, {"label":"k12", "x":2, "y":1}] } } } - \ No newline at end of file diff --git a/keyboards/handwired/6key/keymaps/default/keymap.c b/keyboards/handwired/6key/keymaps/default/keymap.c index 509d999e5406..ad73597bab79 100644 --- a/keyboards/handwired/6key/keymaps/default/keymap.c +++ b/keyboards/handwired/6key/keymaps/default/keymap.c @@ -1,17 +1,17 @@ - /* Copyright 2020 Bratzworth - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . + /* Copyright 2020 Bratzworth + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . */ #include QMK_KEYBOARD_H @@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -void dip_switch_update_user(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: { if (active) { @@ -43,4 +43,5 @@ void dip_switch_update_user(uint8_t index, bool active) { } } } -} \ No newline at end of file + return true; +} diff --git a/keyboards/handwired/6key/rules.mk b/keyboards/handwired/6key/rules.mk index c31208d512f5..d7b3c6211da0 100644 --- a/keyboards/handwired/6key/rules.mk +++ b/keyboards/handwired/6key/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output DIP_SWITCH_ENABLE = yes diff --git a/keyboards/handwired/6macro/info.json b/keyboards/handwired/6macro/info.json index 52bd03a1dd81..eac751e3a884 100644 --- a/keyboards/handwired/6macro/info.json +++ b/keyboards/handwired/6macro/info.json @@ -2,12 +2,9 @@ "keyboard_name": "6macro", "url": "", "maintainer": "joaofbmaia", - "width": 3, - "height": 2, "layouts": { "LAYOUT": { "layout": [{"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, {"label":"k02", "x":2, "y":0}, {"label":"k10", "x":0, "y":1}, {"label":"k11", "x":1, "y":1}, {"label":"k12", "x":2, "y":1}] } } } - \ No newline at end of file diff --git a/keyboards/handwired/6macro/rules.mk b/keyboards/handwired/6macro/rules.mk index 253720ad69cf..ff41c16fc75f 100644 --- a/keyboards/handwired/6macro/rules.mk +++ b/keyboards/handwired/6macro/rules.mk @@ -7,13 +7,11 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# 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 RGB_MATRIX_ENABLE = no # Enable per-key coordinate based RGB effects. Do not enable with RGBlight @@ -21,5 +19,4 @@ RGB_MATRIX_DRIVER = WS2812 BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow UNICODE_ENABLE = yes # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/aek64/config.h b/keyboards/handwired/aek64/config.h index 76281561e758..cc90dba00fef 100644 --- a/keyboards/handwired/aek64/config.h +++ b/keyboards/handwired/aek64/config.h @@ -49,8 +49,6 @@ along with this program. If not, see . /* Enable double tab */ #define TAPPING_TERM 175 -#define COMBO_COUNT 1 - #define BACKLIGHT_PIN B7 #define BACKLIGHT_BREATHING #define BACKLIGHT_LEVELS 5 diff --git a/keyboards/handwired/aek64/info.json b/keyboards/handwired/aek64/info.json index 4665b463876c..75cb254024ba 100644 --- a/keyboards/handwired/aek64/info.json +++ b/keyboards/handwired/aek64/info.json @@ -2,8 +2,6 @@ "keyboard_name": "aek64", "url": "", "maintainer": "qmk", - "width": 14.75, - "height": 5, "layouts": { "LAYOUT": { "layout": [{"label":"Esc", "x":0, "y":0, "w":1.25}, {"label":"1", "x":1.25, "y":0}, {"label":"2", "x":2.25, "y":0}, {"label":"3", "x":3.25, "y":0}, {"label":"4", "x":4.25, "y":0}, {"label":"5", "x":5.25, "y":0}, {"label":"6", "x":6.25, "y":0}, {"label":"7", "x":7.25, "y":0}, {"label":"8", "x":8.25, "y":0}, {"label":"9", "x":9.25, "y":0}, {"label":"0", "x":10.25, "y":0}, {"label":"\u00b0", "x":11.25, "y":0}, {"label":"+", "x":12.25, "y":0}, {"label":"Backspace", "x":13.25, "y":0, "w":1.75}, {"label":"Tab", "x":0, "y":1, "w":1.75}, {"label":"A", "x":1.75, "y":1}, {"label":"Z", "x":2.75, "y":1}, {"label":"E", "x":3.75, "y":1}, {"label":"R", "x":4.75, "y":1}, {"label":"T", "x":5.75, "y":1}, {"label":"Y", "x":6.75, "y":1}, {"label":"U", "x":7.75, "y":1}, {"label":"I", "x":8.75, "y":1}, {"label":"O", "x":9.75, "y":1}, {"label":"P", "x":10.75, "y":1}, {"label":"{", "x":11.75, "y":1}, {"label":"}", "x":12.75, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":2}, {"label":"Q", "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":7, "y":2}, {"label":"J", "x":8, "y":2}, {"label":"K", "x":9, "y":2}, {"label":"L", "x":10, "y":2}, {"label":"M", "x":11, "y":2}, {"label":"%", "x":12, "y":2}, {"label":"µ", "x":13, "y":2}, {"label":"Enter", "x":14, "y":1, "h":2}, {"label":"Shift", "x":0, "y":3, "w":1.5}, {"label":">", "x":1.5, "y":3}, {"label":"W", "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":"?", "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.5}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Opt", "x":1.5, "y":4, "w":1.25}, {"label":"Cmd", "x":2.75, "y":4, "w":1.5}, {"label":"Space", "x":4.25, "y":4, "w":6.5}, {"label":"Cmd", "x":10.75, "y":4, "w":1.5}, {"label":"Opt", "x":12.25, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}] diff --git a/keyboards/handwired/aek64/keymaps/4sstylz/config.h b/keyboards/handwired/aek64/keymaps/4sstylz/config.h new file mode 100644 index 000000000000..914861332f5b --- /dev/null +++ b/keyboards/handwired/aek64/keymaps/4sstylz/config.h @@ -0,0 +1,3 @@ +#pragma once + +#define COMBO_COUNT 1 diff --git a/keyboards/anavi/macropad2/keymaps/default/rules.mk b/keyboards/handwired/aek64/keymaps/4sstylz/rules.mk similarity index 100% rename from keyboards/anavi/macropad2/keymaps/default/rules.mk rename to keyboards/handwired/aek64/keymaps/4sstylz/rules.mk diff --git a/keyboards/handwired/aek64/rules.mk b/keyboards/handwired/aek64/rules.mk index e5a1d648a0fb..3bef89e972f5 100644 --- a/keyboards/handwired/aek64/rules.mk +++ b/keyboards/handwired/aek64/rules.mk @@ -2,27 +2,17 @@ MCU = at90usb1286 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = halfkay # Build Options # change to no to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) +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 = yes # Commands for debug and configuration -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = no # USB Nkey Rollover - not yet supported in LUFA UNICODE_ENABLE = yes # Enable support for arrow keys icon on the second layer. -COMBO_ENABLE = yes # Enable combo for special function when using multiple keys at once. -TAP_DANCE_ENABLE = no # Enable use multiple tap NKRO_ENABLE = yes BACKLIGHT_ENABLE = yes diff --git a/keyboards/handwired/aim65/info.json b/keyboards/handwired/aim65/info.json index 64d57377a696..1559c19f8864 100644 --- a/keyboards/handwired/aim65/info.json +++ b/keyboards/handwired/aim65/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Hi-Tek AIM-65", "url": "https://github.com/Bonnee/aim-65_keyboard", "maintainer": "bonnee", - "width": 15.25, - "height": 5, "layouts": { "LAYOUT": { "layout": [ @@ -65,4 +63,3 @@ } } } - diff --git a/keyboards/handwired/aim65/rules.mk b/keyboards/handwired/aim65/rules.mk index fd76a52478f7..bc3a9f5e3582 100644 --- a/keyboards/handwired/aim65/rules.mk +++ b/keyboards/handwired/aim65/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/handwired/amigopunk/info.json b/keyboards/handwired/amigopunk/info.json index ac9aec8f5604..f3cf31a84331 100644 --- a/keyboards/handwired/amigopunk/info.json +++ b/keyboards/handwired/amigopunk/info.json @@ -2,8 +2,6 @@ "keyboard_name": "amigopunk", "url": "www.haesbaert.org", "maintainer": "haesbaert", - "width": 17, - "height": 6, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/amigopunk/keymaps/default/keymap.c b/keyboards/handwired/amigopunk/keymaps/default/keymap.c index cdfe97402433..3a64958fad85 100644 --- a/keyboards/handwired/amigopunk/keymaps/default/keymap.c +++ b/keyboards/handwired/amigopunk/keymaps/default/keymap.c @@ -46,7 +46,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { } #endif -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE static void render_amigopunk_logo(void) { static const char PROGMEM amigopunk_logo[] = { @@ -85,8 +85,9 @@ static void render_amigopunk_logo(void) { }; oled_write_raw_P(amigopunk_logo, sizeof(amigopunk_logo)); } -void oled_task_user(void) { +bool oled_task_user(void) { render_amigopunk_logo(); /* oled_write_P(PSTR("Amigo Punk\n"), false); */ + return false; } #endif diff --git a/keyboards/handwired/amigopunk/rules.mk b/keyboards/handwired/amigopunk/rules.mk index d62975bc9fa0..35e243bcf55b 100644 --- a/keyboards/handwired/amigopunk/rules.mk +++ b/keyboards/handwired/amigopunk/rules.mk @@ -7,18 +7,16 @@ BOOTLOADER = halfkay # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/handwired/angel/info.json b/keyboards/handwired/angel/info.json index e2c722589ecd..12ac29ffa747 100644 --- a/keyboards/handwired/angel/info.json +++ b/keyboards/handwired/angel/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Angel", "url": "https://github.com/jamessa/Angel", "maintainer": "jamessa", - "width": 13, - "height": 4, "layouts": { "LAYOUT": { "layout": [{"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":0.5, "y":1}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":0.5, "y":3}, {"x":1.5, "y":3}, {"x":2.5, "y":3}, {"x":3.5, "y":3}, {"x":4.5, "y":3, "w":1.25}, {"x":5.75, "y":3, "w":1.5}, {"x":7.25, "y":3, "w":1.25}, {"x":8.5, "y":3}, {"x":9.5, "y":3}, {"x":10.5, "y":3}, {"x":11.5, "y":3}] diff --git a/keyboards/handwired/angel/rules.mk b/keyboards/handwired/angel/rules.mk index 8a411ac604a4..b97001801122 100644 --- a/keyboards/handwired/angel/rules.mk +++ b/keyboards/handwired/angel/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/aplx2/info.json b/keyboards/handwired/aplx2/info.json index 6ca10a44f8c2..e514ed07d872 100644 --- a/keyboards/handwired/aplx2/info.json +++ b/keyboards/handwired/aplx2/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Aplx2", "url": "", "maintainer": "Aplyard", - "width": 2, - "height": 1, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/aplx2/rules.mk b/keyboards/handwired/aplx2/rules.mk index 6765381b9399..fcdbfcab4fe3 100644 --- a/keyboards/handwired/aplx2/rules.mk +++ b/keyboards/handwired/aplx2/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# 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 -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/aranck/aranck.c b/keyboards/handwired/aranck/aranck.c index 2e67ec1dae7c..62e36bdb46bb 100644 --- a/keyboards/handwired/aranck/aranck.c +++ b/keyboards/handwired/aranck/aranck.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "aranck.h" - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - - - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} \ No newline at end of file diff --git a/keyboards/handwired/aranck/config.h b/keyboards/handwired/aranck/config.h index 7d0ab25fe423..75f5232f90c4 100644 --- a/keyboards/handwired/aranck/config.h +++ b/keyboards/handwired/aranck/config.h @@ -134,59 +134,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -205,26 +152,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/handwired/aranck/info.json b/keyboards/handwired/aranck/info.json index a8afd21e16d9..f3b48378fa7c 100644 --- a/keyboards/handwired/aranck/info.json +++ b/keyboards/handwired/aranck/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Aranck", "url": "https://github.com/Ardakilic", "maintainer": "Arda Kilicdagi", - "width": 12, - "height": 4, "layouts": { "LAYOUT_planck_mit": { - "key_count": 47, "layout": [ { "x": 0, "y": 0 }, { "x": 1, "y": 0 }, diff --git a/keyboards/handwired/aranck/rules.mk b/keyboards/handwired/aranck/rules.mk index 237d6c0c42f3..8895a6db10c8 100644 --- a/keyboards/handwired/aranck/rules.mk +++ b/keyboards/handwired/aranck/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = yes # Audio output on port C6 +AUDIO_ENABLE = yes # Audio output LAYOUTS = planck_mit diff --git a/keyboards/handwired/arrow_pad/arrow_pad.h b/keyboards/handwired/arrow_pad/arrow_pad.h index b93fd113f273..2d677beb5cd2 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 #include +#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 22d0f405d4bb..dcbdef2fcc96 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -85,54 +84,6 @@ along with this program. If not, see . */ #define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -150,5 +101,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -#endif diff --git a/keyboards/handwired/arrow_pad/info.json b/keyboards/handwired/arrow_pad/info.json index ad15e8e740e1..fc24898f064c 100644 --- a/keyboards/handwired/arrow_pad/info.json +++ b/keyboards/handwired/arrow_pad/info.json @@ -2,8 +2,6 @@ "keyboard_name": "arrow_pad", "url": "", "maintainer": "qmk", - "width": 4, - "height": 6, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/arrow_pad/keymaps/pad_21/rules.mk b/keyboards/handwired/arrow_pad/keymaps/pad_21/rules.mk index 702538af38b6..4db14ad2ab9c 100644 --- a/keyboards/handwired/arrow_pad/keymaps/pad_21/rules.mk +++ b/keyboards/handwired/arrow_pad/keymaps/pad_21/rules.mk @@ -1,4 +1,4 @@ -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = no # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) @@ -11,7 +11,4 @@ UNICODE_ENABLE = no # Unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - CONFIG_H = keymaps/$(KEYMAP)/config.h \ No newline at end of file diff --git a/keyboards/handwired/arrow_pad/keymaps/pad_24/rules.mk b/keyboards/handwired/arrow_pad/keymaps/pad_24/rules.mk index 12c8208393a8..b7ec5c1bf4f7 100644 --- a/keyboards/handwired/arrow_pad/keymaps/pad_24/rules.mk +++ b/keyboards/handwired/arrow_pad/keymaps/pad_24/rules.mk @@ -1,4 +1,4 @@ -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = no # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) @@ -11,7 +11,4 @@ UNICODE_ENABLE = no # Unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - CONFIG_H = keymaps/$(KEYMAP)/config.h \ No newline at end of file diff --git a/keyboards/handwired/arrow_pad/rules.mk b/keyboards/handwired/arrow_pad/rules.mk index e1eb35c51715..6175cb16d7fe 100644 --- a/keyboards/handwired/arrow_pad/rules.mk +++ b/keyboards/handwired/arrow_pad/rules.mk @@ -2,30 +2,17 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = halfkay # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) +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 = yes # Commands for debug and configuration -KEYBOARD_LOCK_ENABLE = yes # Allow locking of keyboard via magic key -# 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 = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/atreus50/atreus50.h b/keyboards/handwired/atreus50/atreus50.h index a53c267424e6..710292a1872c 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 978088b03d88..4a385c35cf79 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -85,54 +84,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -150,5 +101,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -#endif diff --git a/keyboards/handwired/atreus50/info.json b/keyboards/handwired/atreus50/info.json index 4e3b4ac49735..5007c3135e9e 100644 --- a/keyboards/handwired/atreus50/info.json +++ b/keyboards/handwired/atreus50/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Atreus50", "url": "", "maintainer": "qmk", - "width": 15, - "height": 4.5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/atreus50/keymaps/ajp10304/config.h b/keyboards/handwired/atreus50/keymaps/ajp10304/config.h index f5e6bbabe6c8..4f15c5626969 100644 --- a/keyboards/handwired/atreus50/keymaps/ajp10304/config.h +++ b/keyboards/handwired/atreus50/keymaps/ajp10304/config.h @@ -1,3 +1,19 @@ +/* Copyright 2021 Alan Pocklington + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #ifndef CONFIG_USER_H #define CONFIG_USER_H diff --git a/keyboards/handwired/atreus50/keymaps/ajp10304/keymap.c b/keyboards/handwired/atreus50/keymaps/ajp10304/keymap.c index 46a5995d0d03..012245516774 100644 --- a/keyboards/handwired/atreus50/keymaps/ajp10304/keymap.c +++ b/keyboards/handwired/atreus50/keymaps/ajp10304/keymap.c @@ -1,3 +1,19 @@ +/* Copyright 2021 Alan Pocklington + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #include QMK_KEYBOARD_H #include "keymap_uk.h" #include "ajp10304.h" @@ -96,7 +112,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Mouse * ,------------------------------------------ |-----------------------------------------. - * | ESC | | | | | | | | | BTN3 | | | | + * | ESC | | | | | | | WH_L | WH_UP| BTN3 | WH_D | WH_R | | * |------+------+------+------+------+------- |------+------+------+------+------+------| * | ACC0 | ACC1 | ACC2 | | | | | | BTN1 | UP | BTN2 | | | * |------+------+------+------+------+------| |------+------+------+------+------+------| @@ -106,10 +122,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-------------------------------------------------------------------------------------------------' */ [_MOUSE] = LAYOUT( - KC_ESC , _______, _______, _______, _______, _______, _______, _______, KC_MS_BTN3, _______, _______, _______ , - KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, _______, _______, _______, _______, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, _______, _______ , - KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, _______, _______, _______, _______, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, _______, _______ , - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + KC_ESC , _______, _______, _______, _______, _______, KC_MS_WH_LEFT, KC_MS_WH_UP, KC_MS_BTN3, KC_MS_WH_DOWN, KC_MS_WH_RIGHT, _______ , + KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, _______, _______, _______, _______, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, _______, _______ , + KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, _______, _______, _______, _______, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, _______, _______ , + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), diff --git a/keyboards/handwired/atreus50/keymaps/ajp10304/readme.md b/keyboards/handwired/atreus50/keymaps/ajp10304/readme.md index 5c6a703a8ea0..640bcc46f6c4 100644 --- a/keyboards/handwired/atreus50/keymaps/ajp10304/readme.md +++ b/keyboards/handwired/atreus50/keymaps/ajp10304/readme.md @@ -1,5 +1,5 @@ # AJP10304 Custom Atreus50 Layout -# Also available for the Planck, Shark and JJ40 +# Also available for the Planck, Shark, Quark and JJ40 **Note:** In the tables below where there are two characters on a key, the second is the output when shift is applied. @@ -7,8 +7,7 @@ the second is the output when shift is applied. **Note:** The below tables assume a UK layout. #### Flashing - -`make handwired/atreus50:ajp10304:flash` +Refer to the README.md of the keyboard you want to flash. ##### Main Qwerty Layer @@ -102,7 +101,7 @@ Activated when `fn` and `raise` held together. | | | | | | | | | | | | | | | | :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| -| ESC | | | | | | | | | | BTN3 | | | | +| ESC | | | | | | | | W_L | W_UP | BTN3 | W_DWN| W_R | | | ACC0 | ACC1 | ACC2 | | | | | | | BTN1 | UP | BTN2 | | | | ACC0 | ACC1 | ACC2 | | | | | | | LEFT | DOWN | RIGHT| | | | | | | | | | Ctrl | Alt | | | | | | | diff --git a/keyboards/handwired/atreus50/rules.mk b/keyboards/handwired/atreus50/rules.mk index e8b551fbb736..9a7a0a3c6dd2 100644 --- a/keyboards/handwired/atreus50/rules.mk +++ b/keyboards/handwired/atreus50/rules.mk @@ -2,31 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend diff --git a/keyboards/handwired/axon/info.json b/keyboards/handwired/axon/info.json index 70048a864053..5eabffadb404 100644 --- a/keyboards/handwired/axon/info.json +++ b/keyboards/handwired/axon/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Axon", "url": "https://github.com/thatfellarobin/axon", "maintainer": "Robin L.", - "width": 12, - "height": 4, "layouts": { "LAYOUT_default": { "layout": [ diff --git a/keyboards/handwired/axon/rules.mk b/keyboards/handwired/axon/rules.mk index e9a5cac276ad..f3f83c1f60ab 100644 --- a/keyboards/handwired/axon/rules.mk +++ b/keyboards/handwired/axon/rules.mk @@ -2,21 +2,18 @@ MCU = atmega328p # Bootloader selection -BOOTLOADER = USBasp +BOOTLOADER = usbasploader # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/handwired/battleship_gamepad/battleship_gamepad.c b/keyboards/handwired/battleship_gamepad/battleship_gamepad.c new file mode 100644 index 000000000000..918a3852d0a7 --- /dev/null +++ b/keyboards/handwired/battleship_gamepad/battleship_gamepad.c @@ -0,0 +1,30 @@ +/* Copyright 2021 Andrew Braini + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "battleship_gamepad.h" +#include "joystick.h" +#include "analog.h" + +/* joystick config */ +joystick_config_t joystick_axes[JOYSTICK_AXES_COUNT] = { + [0] = JOYSTICK_AXIS_IN(F5, 1023, 512, 0), + [1] = JOYSTICK_AXIS_IN(F4, 0, 512, 1023) +}; + +/* joystick button code (thumbstick pressed) */ +void keyboard_pre_init_kb(void) { + setPinInputHigh(F6); +} diff --git a/keyboards/handwired/battleship_gamepad/battleship_gamepad.h b/keyboards/handwired/battleship_gamepad/battleship_gamepad.h new file mode 100644 index 000000000000..67cf1122013a --- /dev/null +++ b/keyboards/handwired/battleship_gamepad/battleship_gamepad.h @@ -0,0 +1,31 @@ +/* Copyright 2021 Andrew Braini + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "quantum.h" + +#define LAYOUT( \ + 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 \ +) { \ + { 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 } \ +} diff --git a/keyboards/handwired/battleship_gamepad/config.h b/keyboards/handwired/battleship_gamepad/config.h new file mode 100644 index 000000000000..1cbfbf87e953 --- /dev/null +++ b/keyboards/handwired/battleship_gamepad/config.h @@ -0,0 +1,52 @@ +/* Copyright 2021 Andrew Braini + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4142 +#define PRODUCT_ID 0x0000 +#define DEVICE_VER 0x0001 +#define MANUFACTURER arbraini +#define PRODUCT Battleship Gamepad + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 8 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { B6, B2, B3, B1, F7 } +#define MATRIX_COL_PINS { D1, D0, D4, C6, D7, E6, B4, B5 } +#define UNUSED_PINS + +/* joystick configuration */ +#define JOYSTICK_BUTTON_COUNT 25 +#define JOYSTICK_AXES_COUNT 2 +#define JOYSTICK_AXES_RESOLUTION 10 + +/* 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/handwired/battleship_gamepad/info.json b/keyboards/handwired/battleship_gamepad/info.json new file mode 100644 index 000000000000..581f290aa229 --- /dev/null +++ b/keyboards/handwired/battleship_gamepad/info.json @@ -0,0 +1,215 @@ +{ + "keyboard_name": "Battleship Gamepad", + "url": "https://github.com/abraini-Nascent/battleship_gamepad", + "maintainer": "arbraini", + "layouts": { + "LAYOUT": { + "layout": [ + { + "label": "F1", + "x": 0, + "y": 0 + }, + { + "label": "F2", + "x": 1, + "y": 0 + }, + { + "label": "Esc", + "x": 2.25, + "y": 0, + "w": 1.25 + }, + { + "label": "!", + "x": 3.5, + "y": 0 + }, + { + "label": "@", + "x": 4.5, + "y": 0 + }, + { + "label": "#", + "x": 5.5, + "y": 0 + }, + { + "label": "$", + "x": 6.5, + "y": 0 + }, + { + "label": "%", + "x": 7.5, + "y": 0 + }, + { + "label": "F3", + "x": 0, + "y": 1 + }, + { + "label": "F4", + "x": 1, + "y": 1 + }, + { + "label": "Tab", + "x": 2.25, + "y": 1, + "w": 1.25 + }, + { + "label": "Q", + "x": 3.5, + "y": 1 + }, + { + "label": "W", + "x": 4.5, + "y": 1 + }, + { + "label": "E", + "x": 5.5, + "y": 1 + }, + { + "label": "R", + "x": 6.5, + "y": 1 + }, + { + "label": "T", + "x": 7.5, + "y": 1 + }, + { + "label": "F5", + "x": 0, + "y": 2 + }, + { + "label": "F6", + "x": 1, + "y": 2 + }, + { + "label": "Caps
Lock", + "x": 2.25, + "y": 2, + "w": 1.25 + }, + { + "label": "A", + "x": 3.5, + "y": 2 + }, + { + "label": "S", + "x": 4.5, + "y": 2 + }, + { + "label": "D", + "x": 5.5, + "y": 2 + }, + { + "label": "F", + "x": 6.5, + "y": 2 + }, + { + "label": "G", + "x": 7.5, + "y": 2 + }, + { + "label": "F7", + "x": 0, + "y": 3 + }, + { + "label": "F8", + "x": 1, + "y": 3 + }, + { + "label": "Shift", + "x": 2.25, + "y": 3, + "w": 1.25 + }, + { + "label": "Z", + "x": 3.5, + "y": 3 + }, + { + "label": "X", + "x": 4.5, + "y": 3 + }, + { + "label": "C", + "x": 5.5, + "y": 3 + }, + { + "label": "V", + "x": 6.5, + "y": 3 + }, + { + "label": "B", + "x": 7.5, + "y": 3 + }, + { + "label": "F9", + "x": 0, + "y": 4 + }, + { + "label": "F10", + "x": 1, + "y": 4 + }, + { + "label": "", + "x": 2.25, + "y": 4, + "w": 1.25 + }, + { + "label": "Ctrl", + "x": 3.5, + "y": 4 + }, + { + "label": "Alt", + "x": 4.5, + "y": 4 + }, + { + "label": "\u21e9", + "x": 5.5, + "y": 4 + }, + { + "label": "\u21e7", + "x": 6.5, + "y": 4 + }, + { + "x": 7.5, + "y": 4 + } + ] + } + } +} diff --git a/keyboards/handwired/battleship_gamepad/keymaps/default/keymap.c b/keyboards/handwired/battleship_gamepad/keymaps/default/keymap.c new file mode 100644 index 000000000000..fa71419ff118 --- /dev/null +++ b/keyboards/handwired/battleship_gamepad/keymaps/default/keymap.c @@ -0,0 +1,41 @@ +/* Copyright 2021 Andrew Braini + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + KC_F1, KC_F2, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, + KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, + KC_F5, KC_F6, KC_NO, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, + KC_F9, KC_F10, LT(1, KC_NO), KC_LCTL, KC_LALT, KC_NO, LT(1, KC_NO), KC_SPC), + + [1] = LAYOUT( + RESET, DEBUG, KC_TILD, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, TG(2), KC_TRNS, KC_TRNS), + + [2] = LAYOUT( + KC_TRNS, KC_TRNS, TG(2), JS_BUTTON0, JS_BUTTON1, JS_BUTTON2, JS_BUTTON3, JS_BUTTON4, + KC_TRNS, KC_TRNS, KC_TRNS, JS_BUTTON5, JS_BUTTON6, JS_BUTTON7, JS_BUTTON8, JS_BUTTON9, + KC_TRNS, KC_TRNS, KC_TRNS, JS_BUTTON10, JS_BUTTON11, JS_BUTTON12, JS_BUTTON13, JS_BUTTON14, + KC_TRNS, KC_TRNS, KC_TRNS, JS_BUTTON15, JS_BUTTON16, JS_BUTTON17, JS_BUTTON18, JS_BUTTON19, + KC_TRNS, KC_TRNS, KC_TRNS, JS_BUTTON20, JS_BUTTON21, JS_BUTTON22, JS_BUTTON23, JS_BUTTON24) +}; diff --git a/keyboards/handwired/battleship_gamepad/keymaps/default/readme.md b/keyboards/handwired/battleship_gamepad/keymaps/default/readme.md new file mode 100644 index 000000000000..1de5d7dd6875 --- /dev/null +++ b/keyboards/handwired/battleship_gamepad/keymaps/default/readme.md @@ -0,0 +1,2 @@ +# Battleship Gamepad - Default layout +Default layout with 2 axies thumbstick and press to click diff --git a/keyboards/handwired/battleship_gamepad/keymaps/via/keymap.c b/keyboards/handwired/battleship_gamepad/keymaps/via/keymap.c new file mode 100644 index 000000000000..9a70d36b7722 --- /dev/null +++ b/keyboards/handwired/battleship_gamepad/keymaps/via/keymap.c @@ -0,0 +1,48 @@ +/* Copyright 2021 Andrew Braini + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + KC_F1, KC_F2, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, + KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, + KC_F5, KC_F6, KC_NO, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, + KC_F9, KC_F10, LT(1, KC_NO), KC_LCTL, KC_LALT, LT(2, KC_NO), LT(1, KC_NO), KC_SPC), + + [1] = LAYOUT( + RESET, DEBUG, KC_TILD, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + [2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + [3] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; diff --git a/keyboards/handwired/battleship_gamepad/keymaps/via/rules.mk b/keyboards/handwired/battleship_gamepad/keymaps/via/rules.mk new file mode 100644 index 000000000000..35a31dea8edc --- /dev/null +++ b/keyboards/handwired/battleship_gamepad/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +CONSOLE_ENABLE = no diff --git a/keyboards/handwired/battleship_gamepad/readme.md b/keyboards/handwired/battleship_gamepad/readme.md new file mode 100644 index 000000000000..c566753161e8 --- /dev/null +++ b/keyboards/handwired/battleship_gamepad/readme.md @@ -0,0 +1,29 @@ +# Battleship Gamepad + +![Battleship Gamepad](https://imgur.com/FCpQfzQ.jpg) + +A hand-wired 3d-printed mechanical keyboard intended for one hand with an analog thumbstick for movement. The layout matches the left side of large "battleship" keyboards with their extra bank of 2x5 1u F keys. + +Build instructions and 3d printer files can be found in the [project github repo](https://github.com/abraini-Nascent/battleship_gamepad) + +* Keyboard Maintainer: [arbraini](https://github.com/abraini-Nascent) +* Hardware Supported: Arduino Pro Micro +* Features: 40 keys in an ortho layout and an analog thumbstick. + +Make example for this keyboard (after setting up your build environment): + + make handwired/battleship_gamepad:default + +Flashing example for this keyboard: + + make handwired/battleship_gamepad:flash + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (the top left key in the 2x5 bank) and plug in the keyboard. +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead. +* **Keycode in layout**: Press the key mapped to `RESET`. In the default layout this is the key at (0,0) on layer 1. + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/handwired/battleship_gamepad/rules.mk b/keyboards/handwired/battleship_gamepad/rules.mk new file mode 100644 index 000000000000..c7d8d889234a --- /dev/null +++ b/keyboards/handwired/battleship_gamepad/rules.mk @@ -0,0 +1,23 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +SRC += analog.c + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 +JOYSTICK_ENABLE = yes +JOYSTICK_DRIVER = analog diff --git a/keyboards/handwired/bdn9_ble/info.json b/keyboards/handwired/bdn9_ble/info.json index 49bf627197fa..6b2faf14d2fa 100644 --- a/keyboards/handwired/bdn9_ble/info.json +++ b/keyboards/handwired/bdn9_ble/info.json @@ -2,8 +2,6 @@ "keyboard_name": "KeyPCB/Keeb.io BDN9-BLE", "url": "", "maintainer": "merlin04", - "width": 3, - "height": 3, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/bdn9_ble/rules.mk b/keyboards/handwired/bdn9_ble/rules.mk index 92ab17adecf5..c9e1058c648f 100644 --- a/keyboards/handwired/bdn9_ble/rules.mk +++ b/keyboards/handwired/bdn9_ble/rules.mk @@ -5,31 +5,21 @@ MCU = atmega32u4 F_CPU = 8000000 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH = AdafruitBLE # Enable Bluetooth -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = no +BLUETOOTH_ENABLE = yes +BLUETOOTH_DRIVER = AdafruitBLE diff --git a/keyboards/handwired/bento/info.json b/keyboards/handwired/bento/info.json index 8339c6da35b0..cae2773de287 100644 --- a/keyboards/handwired/bento/info.json +++ b/keyboards/handwired/bento/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Bento Macropad", "url": "https://www.thingiverse.com/thing:4416966", "maintainer": "Ghostseven", - "width": 3, - "height": 2, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/bento/rev1/rules.mk b/keyboards/handwired/bento/rev1/rules.mk index f7e3ef1e9799..73af7a7b0504 100644 --- a/keyboards/handwired/bento/rev1/rules.mk +++ b/keyboards/handwired/bento/rev1/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes diff --git a/keyboards/handwired/bigmac/bigmac.c b/keyboards/handwired/bigmac/bigmac.c index b8815a1c4e9b..ef2867377d7f 100644 --- a/keyboards/handwired/bigmac/bigmac.c +++ b/keyboards/handwired/bigmac/bigmac.c @@ -15,6 +15,3 @@ */ #include "bigmac.h" - -// generated by KBFirmware JSON to QMK Parser -// https://noroadsleft.github.io/kbf_qmk_converter/ diff --git a/keyboards/handwired/bigmac/bigmac.h b/keyboards/handwired/bigmac/bigmac.h index 7e782e433de2..43ba78d311fc 100644 --- a/keyboards/handwired/bigmac/bigmac.h +++ b/keyboards/handwired/bigmac/bigmac.h @@ -31,6 +31,3 @@ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3G }, \ { K40, K41, KC_NO, K43, KC_NO, K45, K46, K47, K48, K49, KC_NO, K4B, KC_NO, K4D, K4E, K4F, K4G }, \ } - -// generated by KBFirmware JSON to QMK Parser -// https://noroadsleft.github.io/kbf_qmk_converter/ diff --git a/keyboards/handwired/bigmac/config.h b/keyboards/handwired/bigmac/config.h index db2ec2a5b729..b036accaa2a6 100644 --- a/keyboards/handwired/bigmac/config.h +++ b/keyboards/handwired/bigmac/config.h @@ -43,7 +43,3 @@ #define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, F5, F4, D3, D2, D1, D0, D4, C6, D7, E6, B4 } #define DIODE_DIRECTION COL2ROW - - -// generated by KBFirmware JSON to QMK Parser -// https://noroadsleft.github.io/kbf_qmk_converter/ diff --git a/keyboards/handwired/bigmac/info.json b/keyboards/handwired/bigmac/info.json index 65501db119f9..377453091260 100644 --- a/keyboards/handwired/bigmac/info.json +++ b/keyboards/handwired/bigmac/info.json @@ -2,8 +2,6 @@ "keyboard_name": "BigMac", "url": "", "maintainer": "Taylore101", - "width": 19, - "height": 5, "layouts": { "LAYOUT": { "layout": [ @@ -91,5 +89,4 @@ ] } } - ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/" } diff --git a/keyboards/handwired/bigmac/rules.mk b/keyboards/handwired/bigmac/rules.mk index 14b22efbdb00..00a8fa07a459 100644 --- a/keyboards/handwired/bigmac/rules.mk +++ b/keyboards/handwired/bigmac/rules.mk @@ -7,19 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output - -# generated by KBFirmware JSON to QMK Parser -# https://noroadsleft.github.io/kbf_qmk_converter/ diff --git a/keyboards/handwired/bolek/info.json b/keyboards/handwired/bolek/info.json index c4cf17909626..2fc0b5614d95 100644 --- a/keyboards/handwired/bolek/info.json +++ b/keyboards/handwired/bolek/info.json @@ -2,8 +2,6 @@ "keyboard_name": "bolek", "url": "https://github.com/klausweiss/bolek", "maintainer": "klausweiss", - "height": 5.25, - "width": 12.75, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/bolek/rules.mk b/keyboards/handwired/bolek/rules.mk index fd76a52478f7..bc3a9f5e3582 100644 --- a/keyboards/handwired/bolek/rules.mk +++ b/keyboards/handwired/bolek/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/handwired/boss566y/redragon_vara/config.h b/keyboards/handwired/boss566y/redragon_vara/config.h index 15083215451d..8d731763b98a 100644 --- a/keyboards/handwired/boss566y/redragon_vara/config.h +++ b/keyboards/handwired/boss566y/redragon_vara/config.h @@ -24,7 +24,7 @@ along with this program. If not, see . #define PRODUCT_ID 0x0001 #define DEVICE_VER 0x0001 #define MANUFACTURER PH -#define PRODUCT Redragon Vara +#define PRODUCT Redragon Vara /* key matrix size */ #define MATRIX_ROWS 12 @@ -44,7 +44,3 @@ along with this program. If not, see . #define MATRIX_COL_PINS { D1, D2, D3, C6, D5, C7, D4, D7, B4, B5, B6 } #define DIODE_DIRECTION COL2ROW - - -// generated by KBFirmware JSON to QMK Parser -// https://noroadsleft.github.io/kbf_qmk_converter/ \ No newline at end of file diff --git a/keyboards/handwired/boss566y/redragon_vara/info.json b/keyboards/handwired/boss566y/redragon_vara/info.json index d511c4ef468b..235999bc32e9 100644 --- a/keyboards/handwired/boss566y/redragon_vara/info.json +++ b/keyboards/handwired/boss566y/redragon_vara/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Handwired Redragon Vara", "url": "", "maintainer": "qmk", - "width": 22.5, - "height": 6.5, "layouts": { "LAYOUT_fullsize_ansi": { "layout": [ @@ -114,5 +112,4 @@ ] } } - ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/" } diff --git a/keyboards/handwired/boss566y/redragon_vara/redragon_vara.h b/keyboards/handwired/boss566y/redragon_vara/redragon_vara.h index d24231114654..3809fa8ce429 100644 --- a/keyboards/handwired/boss566y/redragon_vara/redragon_vara.h +++ b/keyboards/handwired/boss566y/redragon_vara/redragon_vara.h @@ -38,6 +38,3 @@ { KC_NO, KA1, KA2, KA3, KC_NO, KA5, KC_NO, KC_NO, KA8, KC_NO, KAA }, \ { KB0, KB1, KC_NO, KB3, KB4, KB5, KB6, KB7, KC_NO, KB9, KBA }, \ } - -// generated by KBFirmware JSON to QMK Parser -// https://noroadsleft.github.io/kbf_qmk_converter/ diff --git a/keyboards/handwired/boss566y/redragon_vara/rules.mk b/keyboards/handwired/boss566y/redragon_vara/rules.mk index ddcd971b98bb..8cd273a5d644 100644 --- a/keyboards/handwired/boss566y/redragon_vara/rules.mk +++ b/keyboards/handwired/boss566y/redragon_vara/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = halfkay # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LAYOUTS = fullsize_ansi diff --git a/keyboards/handwired/brain/info.json b/keyboards/handwired/brain/info.json index 37454b5bc0da..c10a33db999c 100644 --- a/keyboards/handwired/brain/info.json +++ b/keyboards/handwired/brain/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Brain", "url": "", "maintainer": "Klackygears", - "width": 15, - "height": 6.25, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/brain/rules.mk b/keyboards/handwired/brain/rules.mk index 2c24d019b447..7d41832e8299 100644 --- a/keyboards/handwired/brain/rules.mk +++ b/keyboards/handwired/brain/rules.mk @@ -7,18 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI controls -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = yes diff --git a/keyboards/handwired/cans12er/info.json b/keyboards/handwired/cans12er/info.json index 640e6a447570..15c01dd6de67 100644 --- a/keyboards/handwired/cans12er/info.json +++ b/keyboards/handwired/cans12er/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Cans12er", "url": "", "maintainer": "canbaytok", - "width": 4, - "height": 3, "layouts": { "LAYOUT_ortho_3x4": { "layout": [ diff --git a/keyboards/handwired/cans12er/rules.mk b/keyboards/handwired/cans12er/rules.mk index e3c398bbf87b..c79db362ef64 100644 --- a/keyboards/handwired/cans12er/rules.mk +++ b/keyboards/handwired/cans12er/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/chiron/info.json b/keyboards/handwired/chiron/info.json index 85aba1b43f8b..46cf5a1d47bd 100644 --- a/keyboards/handwired/chiron/info.json +++ b/keyboards/handwired/chiron/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Chiron Keyboard", "url": "", "maintainer": "musl", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/chiron/rules.mk b/keyboards/handwired/chiron/rules.mk index 800b196324b6..e1b53f1e924f 100644 --- a/keyboards/handwired/chiron/rules.mk +++ b/keyboards/handwired/chiron/rules.mk @@ -2,13 +2,6 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options @@ -17,20 +10,14 @@ BOOTLOADER = atmel-dfu AUDIO_ENABLE = no AUTOLOG_ENABLE = no BACKLIGHT_ENABLE = no -BLUETOOTH_ENABLE = no -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite COMMAND_ENABLE = no CONSOLE_ENABLE = no DEBUG_ENABLE = no EXTRAKEY_ENABLE = no LEADER_ENABLE = no -MIDI_ENABLE = no MOUSEKEY_ENABLE = yes NKRO_ENABLE = no RGBLIGHT_ENABLE = yes SLEEP_LED_ENABLE = yes -TAP_DANCE_ENABLE = no -UCIS_ENABLE = no -UNICODEMAP_ENABLE = no -UNICODE_ENABLE = no SPLIT_KEYBOARD = yes diff --git a/keyboards/handwired/ck4x4/info.json b/keyboards/handwired/ck4x4/info.json index e1f31582df44..11f5c3105481 100644 --- a/keyboards/handwired/ck4x4/info.json +++ b/keyboards/handwired/ck4x4/info.json @@ -2,8 +2,6 @@ "keyboard_name": "CK4x4", "url": "", "maintainer": "awkannan", - "width": 4, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/ck4x4/rules.mk b/keyboards/handwired/ck4x4/rules.mk index 4bad1b8a5d32..da2f4ec36249 100644 --- a/keyboards/handwired/ck4x4/rules.mk +++ b/keyboards/handwired/ck4x4/rules.mk @@ -8,14 +8,12 @@ BOOTLOADER = stm32-dfu # comment out to disable the options. # -#BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover -CUSTOM_MATRIX = no # Custom matrix file DEFAULT_FOLDER = handwired/ck4x4 diff --git a/keyboards/handwired/cmd60/cmd60.c b/keyboards/handwired/cmd60/cmd60.c index 91bbbd453b5e..20c359e5e966 100644 --- a/keyboards/handwired/cmd60/cmd60.c +++ b/keyboards/handwired/cmd60/cmd60.c @@ -1,8 +1 @@ #include "cmd60.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} diff --git a/keyboards/handwired/cmd60/cmd60.h b/keyboards/handwired/cmd60/cmd60.h index 2e0baa9997b2..5c196e899f10 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 8cc26c34ddce..ba54cab24768 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -86,54 +85,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -151,5 +102,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -#endif diff --git a/keyboards/handwired/cmd60/info.json b/keyboards/handwired/cmd60/info.json index 8d555dc078bd..41d73348c415 100644 --- a/keyboards/handwired/cmd60/info.json +++ b/keyboards/handwired/cmd60/info.json @@ -2,8 +2,6 @@ "keyboard_name": "CMD60", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/cmd60/rules.mk b/keyboards/handwired/cmd60/rules.mk index b5e96d74bf53..df9239f247cd 100644 --- a/keyboards/handwired/cmd60/rules.mk +++ b/keyboards/handwired/cmd60/rules.mk @@ -2,29 +2,17 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = halfkay # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/co60/info.json b/keyboards/handwired/co60/info.json index 46f369f92cca..95fb15583669 100644 --- a/keyboards/handwired/co60/info.json +++ b/keyboards/handwired/co60/info.json @@ -2,37 +2,27 @@ "keyboard_name": "CO60", "url": "https://github.com/jmdaly/CO60", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { - "key_count": 68, "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"~", "x":13, "y":0}, {"label":"Del", "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}, {"x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.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}, {"label":"Fn", "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}, {"label":"LSpace", "x":3.75, "y":4, "w":2.25}, {"label":"Fn", "x":6, "y":4, "w":1.25}, {"label":"RSpace", "x":7.25, "y":4, "w":2.75}, {"label":"Alt", "x":10, "y":4, "w":1}, {"label":"Win", "x":11, "y":4, "w":1}, {"label":"Menu", "x":12, "y":4, "w":1}, {"label":"Ctrl", "x":13, "y":4, "w":1}, {"label":"Fn", "x":14, "y":4, "w":1}] }, "LAYOUT_60_ansi": { - "key_count": 61, "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}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"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":"CapsLock", "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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"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}] }, "LAYOUT_60_ansi_split_bs_rshift": { - "key_count": 63, "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"~", "x":13, "y":0, "w":1}, {"label":"Del", "x":14, "y":0, "w":1}, {"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":"CapsLock", "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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Fn", "x":14, "y":3, "w":1}, {"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}] }, "LAYOUT_60_iso": { - "key_count": 62, "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"\"", "x":2, "y":0}, {"label":"£", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"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":"CapsLock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"@", "x":11.75, "y":2}, {"label":"~", "x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"label":"|", "x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"AltGr", "x":10, "y":4, "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}] }, "LAYOUT_60_hhkb": { - "key_count": 60, "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"~", "x":13, "y":0}, {"label":"Del", "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":"Backspace", "x":13.5, "y":1, "w":1.5}, {"label":"CapsLock", "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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75},{"label":"Fn", "x":14, "y":3}, {"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":"Alt", "x":11, "y":4, "w":1.5}, {"label":"Win", "x":12.5, "y":4}] }, "LAYOUT_60_hhkb_split_space": { - "key_count": 62, "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"~", "x":13, "y":0}, {"label":"Del", "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":"Backspace", "x":13.5, "y":1, "w":1.5}, {"label":"CapsLock", "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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75},{"label":"Fn", "x":14, "y":3}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"label":"LSpace", "x":4, "y":4, "w":2.75}, {"label":"Fn", "x":6.75, "y":4, "w":1.5}, {"label":"RSpace", "x":8.25, "y":4, "w":2.75}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"Win", "x":12.5, "y":4}] }, "LAYOUT_60_hhkb_split_625u_space": { - "key_count": 63, "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"~", "x":13, "y":0}, {"label":"Del", "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":"Backspace", "x":13.5, "y":1, "w":1.5}, {"label":"CapsLock", "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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75},{"label":"Fn", "x":14, "y":3}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"label":"LSpace", "x":3.75, "y":4, "w":2.25}, {"label":"Fn", "x":6, "y":4, "w":1.25}, {"label":"RSpace", "x":7.25, "y":4, "w":2.75}, {"label":"Menu", "x":10, "y":4, "w":1.25}, {"label":"Alt", "x":11.25, "y":4, "w":1.25}, {"label":"Win", "x":12.5, "y":4}] } } } - diff --git a/keyboards/handwired/co60/keymaps/all_keys/keymap.c b/keyboards/handwired/co60/keymaps/all_keys/keymap.c index 797b7ece3ad9..b6124800ea10 100644 --- a/keyboards/handwired/co60/keymaps/all_keys/keymap.c +++ b/keyboards/handwired/co60/keymaps/all_keys/keymap.c @@ -30,19 +30,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LGUI, KC_LALT, KC_ENT, KC_HOME, KC_END, KC_INS, KC_RALT, KC_RGUI, KC_RIGHT, KC_RCTL ) }; - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/handwired/co60/keymaps/default/keymap.c b/keyboards/handwired/co60/keymaps/default/keymap.c index 35151c421269..5736e9313d99 100644 --- a/keyboards/handwired/co60/keymaps/default/keymap.c +++ b/keyboards/handwired/co60/keymaps/default/keymap.c @@ -36,19 +36,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______ ) }; - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/handwired/co60/rev1/config.h b/keyboards/handwired/co60/rev1/config.h index 281a10570f2c..42524994ae10 100644 --- a/keyboards/handwired/co60/rev1/config.h +++ b/keyboards/handwired/co60/rev1/config.h @@ -93,54 +93,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. diff --git a/keyboards/handwired/co60/rev1/rev1.c b/keyboards/handwired/co60/rev1/rev1.c index abdfa884d603..6c68c515f452 100644 --- a/keyboards/handwired/co60/rev1/rev1.c +++ b/keyboards/handwired/co60/rev1/rev1.c @@ -14,33 +14,3 @@ * along with this program. If not, see . */ #include "rev1.h" - -__attribute__ ((weak)) -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -__attribute__ ((weak)) -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -__attribute__ ((weak)) -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/handwired/co60/rev1/rules.mk b/keyboards/handwired/co60/rev1/rules.mk index 0986bed208d5..db17d0b1ffb7 100644 --- a/keyboards/handwired/co60/rev1/rules.mk +++ b/keyboards/handwired/co60/rev1/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) +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 = yes # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config) -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output LEADER_ENABLE = yes # Turn on leader support # Layouts supported by this PCB: diff --git a/keyboards/handwired/co60/rev6/rules.mk b/keyboards/handwired/co60/rev6/rules.mk index 5c26d9a30d59..ff752f1bc67f 100644 --- a/keyboards/handwired/co60/rev6/rules.mk +++ b/keyboards/handwired/co60/rev6/rules.mk @@ -9,17 +9,14 @@ BOOTLOADER = stm32-dfu # comment out to disable the options. # BACKLIGHT_ENABLE = yes -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work AUDIO_ENABLE = no RGBLIGHT_ENABLE = no # Enable keyboard underlight functionality -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID LEADER_ENABLE = yes LAYOUTS += 60_ansi 60_ansi_split_bs_rshift 60_iso 60_hhkb diff --git a/keyboards/handwired/co60/rev7/rules.mk b/keyboards/handwired/co60/rev7/rules.mk index 25e7a2bf1bc1..f58c4189a9b4 100644 --- a/keyboards/handwired/co60/rev7/rules.mk +++ b/keyboards/handwired/co60/rev7/rules.mk @@ -12,17 +12,14 @@ WS2812_DRIVER = spi # comment out to disable the options. # BACKLIGHT_ENABLE = yes -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work AUDIO_ENABLE = no RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID LEADER_ENABLE = yes LAYOUTS = 60_ansi 60_ansi_split_bs_rshift 60_iso 60_hhkb diff --git a/keyboards/handwired/colorlice/config.h b/keyboards/handwired/colorlice/config.h index 206a4004ea6e..6fdd87ccf5a1 100644 --- a/keyboards/handwired/colorlice/config.h +++ b/keyboards/handwired/colorlice/config.h @@ -49,9 +49,58 @@ along with this program. If not, see . /* RGB LEDs */ #define RGB_DI_PIN B1 #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended #define RGB_MATRIX_KEYPRESSES #define RGB_MATRIX_FRAMEBUFFER_EFFECTS #define RGB_MATRIX_LED_PROCESS_LIMIT 4 #define RGB_MATRIX_LED_FLUSH_LIMIT 26 #define DRIVER_LED_TOTAL 70 + +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH diff --git a/keyboards/handwired/colorlice/info.json b/keyboards/handwired/colorlice/info.json index 85deaed42b26..582013c5069c 100644 --- a/keyboards/handwired/colorlice/info.json +++ b/keyboards/handwired/colorlice/info.json @@ -2,8 +2,6 @@ "keyboard_name": "ColorLice", "url": "", "maintainer": "marhalloweenvt", - "width": 17.75, - "height": 5, "layouts": { "LAYOUT_alice_split_bs": { "layout": [ diff --git a/keyboards/handwired/colorlice/rules.mk b/keyboards/handwired/colorlice/rules.mk index 077b197ef728..4903d6a04b08 100644 --- a/keyboards/handwired/colorlice/rules.mk +++ b/keyboards/handwired/colorlice/rules.mk @@ -2,33 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 -LTO_ENABLE = no # Use link time optimization +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output +LTO_ENABLE = yes # Use link time optimization RGB_MATRIX_ENABLE = yes RGB_MATRIX_DRIVER = WS2812 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow diff --git a/keyboards/handwired/concertina/64key/info.json b/keyboards/handwired/concertina/64key/info.json index 68125f8c64c6..3b0a01346dcc 100644 --- a/keyboards/handwired/concertina/64key/info.json +++ b/keyboards/handwired/concertina/64key/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Concertina", "url": "https://viktor.eikman.se/article/the-concertina/", "maintainer": "veikman", - "width": 12, - "height": 8, "layouts": { "LAYOUT_64key": { - "key_count": 64, "layout": [ {"x":2.5, "y":0.4}, {"x":3.5, "y":0}, {"x":4.5, "y":0.3}, {"x":8.5, "y":0.3}, {"x":9.5, "y":0}, {"x":10.5, "y":0.4}, diff --git a/keyboards/anavi/macropad2/keymaps/tap_dance/rules.mk b/keyboards/handwired/concertina/64key/keymaps/default/rules.mk similarity index 100% rename from keyboards/anavi/macropad2/keymaps/tap_dance/rules.mk rename to keyboards/handwired/concertina/64key/keymaps/default/rules.mk diff --git a/keyboards/handwired/concertina/64key/rules.mk b/keyboards/handwired/concertina/64key/rules.mk index fe1ea791e962..645489314c96 100644 --- a/keyboards/handwired/concertina/64key/rules.mk +++ b/keyboards/handwired/concertina/64key/rules.mk @@ -8,18 +8,13 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 - -TAP_DANCE_ENABLE = yes diff --git a/keyboards/handwired/consolekeyboard/18key/info.json b/keyboards/handwired/consolekeyboard/18key/info.json index 0995fe1c4ff3..a635818f645e 100644 --- a/keyboards/handwired/consolekeyboard/18key/info.json +++ b/keyboards/handwired/consolekeyboard/18key/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Console Keyboard", "url": "https://www.thingiverse.com/thing:3167050", "maintainer": "Gareth Edwards", - "width": 11, - "height": 2, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/consolekeyboard/18key/rules.mk b/keyboards/handwired/consolekeyboard/18key/rules.mk index 1b8f014d8609..03e237fe79f9 100644 --- a/keyboards/handwired/consolekeyboard/18key/rules.mk +++ b/keyboards/handwired/consolekeyboard/18key/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # 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 LTO_ENABLE = yes # Link time optimize diff --git a/keyboards/handwired/consolekeyboard/20key/info.json b/keyboards/handwired/consolekeyboard/20key/info.json index 0126ec8c6e15..32c9521e6871 100644 --- a/keyboards/handwired/consolekeyboard/20key/info.json +++ b/keyboards/handwired/consolekeyboard/20key/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Console Keyboard", "url": "https://www.thingiverse.com/thing:3167050", "maintainer": "Gareth Edwards", - "width": 12, - "height": 2, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/consolekeyboard/20key/rules.mk b/keyboards/handwired/consolekeyboard/20key/rules.mk index 1b8f014d8609..03e237fe79f9 100644 --- a/keyboards/handwired/consolekeyboard/20key/rules.mk +++ b/keyboards/handwired/consolekeyboard/20key/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # 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 LTO_ENABLE = yes # Link time optimize diff --git a/keyboards/handwired/consolekeyboard/27key/info.json b/keyboards/handwired/consolekeyboard/27key/info.json index 1b753a9bd0e1..4d6145c5d5f8 100644 --- a/keyboards/handwired/consolekeyboard/27key/info.json +++ b/keyboards/handwired/consolekeyboard/27key/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Console Keyboard", "url": "https://www.thingiverse.com/thing:3167050", "maintainer": "Gareth Edwards", - "width": 11, - "height": 3, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/consolekeyboard/27key/rules.mk b/keyboards/handwired/consolekeyboard/27key/rules.mk index 1b8f014d8609..03e237fe79f9 100644 --- a/keyboards/handwired/consolekeyboard/27key/rules.mk +++ b/keyboards/handwired/consolekeyboard/27key/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # 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 LTO_ENABLE = yes # Link time optimize diff --git a/keyboards/handwired/consolekeyboard/30key/info.json b/keyboards/handwired/consolekeyboard/30key/info.json index 2b01cbb2c79f..aa3c67d1d5e6 100644 --- a/keyboards/handwired/consolekeyboard/30key/info.json +++ b/keyboards/handwired/consolekeyboard/30key/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Console Keyboard", "url": "https://www.thingiverse.com/thing:3167050", "maintainer": "Gareth Edwards", - "width": 12, - "height": 3, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/consolekeyboard/30key/rules.mk b/keyboards/handwired/consolekeyboard/30key/rules.mk index 1b8f014d8609..03e237fe79f9 100644 --- a/keyboards/handwired/consolekeyboard/30key/rules.mk +++ b/keyboards/handwired/consolekeyboard/30key/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # 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 LTO_ENABLE = yes # Link time optimize diff --git a/keyboards/handwired/curiosity/info.json b/keyboards/handwired/curiosity/info.json index 333868e1a7b9..5218abc46dd9 100644 --- a/keyboards/handwired/curiosity/info.json +++ b/keyboards/handwired/curiosity/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Curiosity", "url": "", "maintainer": "Spaceman", - "width": 13.5, - "height": 4, "layouts": { "LAYOUT_small_mods": { "layout": [ diff --git a/keyboards/handwired/curiosity/rules.mk b/keyboards/handwired/curiosity/rules.mk index d410771e853f..2dad04d83f7c 100644 --- a/keyboards/handwired/curiosity/rules.mk +++ b/keyboards/handwired/curiosity/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LTO_ENABLE = no # Use link time optimization diff --git a/keyboards/handwired/d48/info.json b/keyboards/handwired/d48/info.json index 540a9e322852..03cbd0edb4cd 100644 --- a/keyboards/handwired/d48/info.json +++ b/keyboards/handwired/d48/info.json @@ -2,8 +2,6 @@ "keyboard_name": "D48", "url": "", "maintainer": "and3rson", - "width": 12, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/d48/keymaps/anderson/keymap.c b/keyboards/handwired/d48/keymaps/anderson/keymap.c index f63bf54ea60b..11bc62e5376f 100644 --- a/keyboards/handwired/d48/keymaps/anderson/keymap.c +++ b/keyboards/handwired/d48/keymaps/anderson/keymap.c @@ -246,12 +246,12 @@ bool encoder_update_user(uint8_t index, bool clockwise) { return true; } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_0; } -void oled_task_user(void) { +bool oled_task_user(void) { /* Host Keyboard Layer Status */ uint8_t current_layer = get_highest_layer(layer_state); @@ -337,5 +337,6 @@ void oled_task_user(void) { } } + return false; } #endif diff --git a/keyboards/handwired/d48/keymaps/default/keymap.c b/keyboards/handwired/d48/keymaps/default/keymap.c index 08bb90603262..4c3925c7ed5d 100644 --- a/keyboards/handwired/d48/keymaps/default/keymap.c +++ b/keyboards/handwired/d48/keymaps/default/keymap.c @@ -191,12 +191,12 @@ bool encoder_update_user(uint8_t index, bool clockwise) { return true; } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_0; } -void oled_task_user(void) { +bool oled_task_user(void) { /* Host Keyboard Layer Status */ uint8_t current_layer = get_highest_layer(layer_state); @@ -282,5 +282,6 @@ void oled_task_user(void) { } } + return false; } #endif diff --git a/keyboards/handwired/d48/rules.mk b/keyboards/handwired/d48/rules.mk index 60a9f089d1d1..23de2be07487 100644 --- a/keyboards/handwired/d48/rules.mk +++ b/keyboards/handwired/d48/rules.mk @@ -8,19 +8,19 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # 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 = yes USE_I2C = no RGBLIGHT_ENABLE = yes ENCODER_ENABLE = yes -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 UNICODE_ENABLE = yes SRC += ds1307.c taphold.c diff --git a/keyboards/handwired/dactyl/config.h b/keyboards/handwired/dactyl/config.h index 10c43d130712..29a008f0c6a0 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 . */ -#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 . #define DEBOUNCE 15 #define USB_MAX_POWER_CONSUMPTION 500 - -#endif diff --git a/keyboards/handwired/dactyl/dactyl.c b/keyboards/handwired/dactyl/dactyl.c index ff9b4e08afda..be815777bd41 100644 --- a/keyboards/handwired/dactyl/dactyl.c +++ b/keyboards/handwired/dactyl/dactyl.c @@ -1,5 +1,4 @@ #include "dactyl.h" -#include "i2cmaster.h" #ifdef SWAP_HANDS_ENABLE __attribute__ ((weak)) diff --git a/keyboards/handwired/dactyl/dactyl.h b/keyboards/handwired/dactyl/dactyl.h index d4c38dcfb6b5..b901b67673ea 100644 --- a/keyboards/handwired/dactyl/dactyl.h +++ b/keyboards/handwired/dactyl/dactyl.h @@ -1,18 +1,13 @@ -#ifndef DACTYL_H -#define DACTYL_H +#pragma once #include "quantum.h" #include #include -#include "i2cmaster.h" +#include "i2c_master.h" #include -#define CPU_PRESCALE(n) (CLKPR = 0x80, CLKPR = (n)) -#define CPU_16MHz 0x00 - -#define I2C_ADDR 0b0100000 -#define I2C_ADDR_WRITE ( (I2C_ADDR<<1) | I2C_WRITE ) -#define I2C_ADDR_READ ( (I2C_ADDR<<1) | I2C_READ ) +#define I2C_ADDR (0b0100000 << 1) +#define I2C_TIMEOUT 100 #define IODIRA 0x00 // i/o direction register #define IODIRB 0x01 #define GPPUA 0x0C // GPIO pull-up resistor register @@ -29,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 }, \ - } - - -#endif +#define XXX KC_NO + +#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/i2cmaster.h b/keyboards/handwired/dactyl/i2cmaster.h deleted file mode 100644 index 3917b9e6c006..000000000000 --- a/keyboards/handwired/dactyl/i2cmaster.h +++ /dev/null @@ -1,178 +0,0 @@ -#ifndef _I2CMASTER_H -#define _I2CMASTER_H 1 -/************************************************************************* -* Title: C include file for the I2C master interface -* (i2cmaster.S or twimaster.c) -* Author: Peter Fleury http://jump.to/fleury -* File: $Id: i2cmaster.h,v 1.10 2005/03/06 22:39:57 Peter Exp $ -* Software: AVR-GCC 3.4.3 / avr-libc 1.2.3 -* Target: any AVR device -* Usage: see Doxygen manual -**************************************************************************/ - -#ifdef DOXYGEN -/** - @defgroup pfleury_ic2master I2C Master library - @code #include @endcode - - @brief I2C (TWI) Master Software Library - - Basic routines for communicating with I2C slave devices. This single master - implementation is limited to one bus master on the I2C bus. - - This I2c library is implemented as a compact assembler software implementation of the I2C protocol - which runs on any AVR (i2cmaster.S) and as a TWI hardware interface for all AVR with built-in TWI hardware (twimaster.c). - Since the API for these two implementations is exactly the same, an application can be linked either against the - software I2C implementation or the hardware I2C implementation. - - Use 4.7k pull-up resistor on the SDA and SCL pin. - - Adapt the SCL and SDA port and pin definitions and eventually the delay routine in the module - i2cmaster.S to your target when using the software I2C implementation ! - - Adjust the CPU clock frequence F_CPU in twimaster.c or in the Makfile when using the TWI hardware implementaion. - - @note - The module i2cmaster.S is based on the Atmel Application Note AVR300, corrected and adapted - to GNU assembler and AVR-GCC C call interface. - Replaced the incorrect quarter period delays found in AVR300 with - half period delays. - - @author Peter Fleury pfleury@gmx.ch http://jump.to/fleury - - @par API Usage Example - The following code shows typical usage of this library, see example test_i2cmaster.c - - @code - - #include - - - #define Dev24C02 0xA2 // device address of EEPROM 24C02, see datasheet - - int main(void) - { - unsigned char ret; - - i2c_init(); // initialize I2C library - - // write 0x75 to EEPROM address 5 (Byte Write) - i2c_start_wait(Dev24C02+I2C_WRITE); // set device address and write mode - i2c_write(0x05); // write address = 5 - i2c_write(0x75); // write value 0x75 to EEPROM - i2c_stop(); // set stop conditon = release bus - - - // read previously written value back from EEPROM address 5 - i2c_start_wait(Dev24C02+I2C_WRITE); // set device address and write mode - - i2c_write(0x05); // write address = 5 - i2c_rep_start(Dev24C02+I2C_READ); // set device address and read mode - - ret = i2c_readNak(); // read one byte from EEPROM - i2c_stop(); - - for(;;); - } - @endcode - -*/ -#endif /* DOXYGEN */ - -/**@{*/ - -#if (__GNUC__ * 100 + __GNUC_MINOR__) < 304 -#error "This library requires AVR-GCC 3.4 or later, update to newer AVR-GCC compiler !" -#endif - -#include - -/** defines the data direction (reading from I2C device) in i2c_start(),i2c_rep_start() */ -#define I2C_READ 1 - -/** defines the data direction (writing to I2C device) in i2c_start(),i2c_rep_start() */ -#define I2C_WRITE 0 - - -/** - @brief initialize the I2C master interace. Need to be called only once - @param void - @return none - */ -extern void i2c_init(void); - - -/** - @brief Terminates the data transfer and releases the I2C bus - @param void - @return none - */ -extern void i2c_stop(void); - - -/** - @brief Issues a start condition and sends address and transfer direction - - @param addr address and transfer direction of I2C device - @retval 0 device accessible - @retval 1 failed to access device - */ -extern unsigned char i2c_start(unsigned char addr); - - -/** - @brief Issues a repeated start condition and sends address and transfer direction - - @param addr address and transfer direction of I2C device - @retval 0 device accessible - @retval 1 failed to access device - */ -extern unsigned char i2c_rep_start(unsigned char addr); - - -/** - @brief Issues a start condition and sends address and transfer direction - - If device is busy, use ack polling to wait until device ready - @param addr address and transfer direction of I2C device - @return none - */ -extern void i2c_start_wait(unsigned char addr); - - -/** - @brief Send one byte to I2C device - @param data byte to be transfered - @retval 0 write successful - @retval 1 write failed - */ -extern unsigned char i2c_write(unsigned char data); - - -/** - @brief read one byte from the I2C device, request more data from device - @return byte read from I2C device - */ -extern unsigned char i2c_readAck(void); - -/** - @brief read one byte from the I2C device, read is followed by a stop condition - @return byte read from I2C device - */ -extern unsigned char i2c_readNak(void); - -/** - @brief read one byte from the I2C device - - Implemented as a macro, which calls either i2c_readAck or i2c_readNak - - @param ack 1 send ack, request more data from device
- 0 send nak, read is followed by a stop condition - @return byte read from I2C device - */ -extern unsigned char i2c_read(unsigned char ack); -#define i2c_read(ack) (ack) ? i2c_readAck() : i2c_readNak(); - - -/**@}*/ -#endif diff --git a/keyboards/handwired/dactyl/info.json b/keyboards/handwired/dactyl/info.json index 37d2e025e290..d48ceeb9ad44 100644 --- a/keyboards/handwired/dactyl/info.json +++ b/keyboards/handwired/dactyl/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Dactyl", "url": "", "maintainer": "qmk", - "width": 17, - "height": 8, "layouts": { "LAYOUT_dactyl": { - "key_count": 70, "layout": [{"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, {"label":"k02", "x":2, "y":0}, {"label":"k03", "x":3, "y":0}, {"label":"k04", "x":4, "y":0}, {"label":"k05", "x":5, "y":0}, {"label":"k10", "x":0, "y":1}, {"label":"k11", "x":1, "y":1}, {"label":"k12", "x":2, "y":1}, {"label":"k13", "x":3, "y":1}, {"label":"k14", "x":4, "y":1}, {"label":"k15", "x":5, "y":1}, {"label":"k20", "x":0, "y":2}, {"label":"k21", "x":1, "y":2}, {"label":"k22", "x":2, "y":2}, {"label":"k23", "x":3, "y":2}, {"label":"k24", "x":4, "y":2}, {"label":"k25", "x":5, "y":2}, {"label":"k30", "x":0, "y":3}, {"label":"k31", "x":1, "y":3}, {"label":"k32", "x":2, "y":3}, {"label":"k33", "x":3, "y":3}, {"label":"k34", "x":4, "y":3}, {"label":"k35", "x":5, "y":3}, {"label":"k40", "x":0, "y":4}, {"label":"k41", "x":1, "y":4}, {"label":"k42", "x":2, "y":4}, {"label":"k43", "x":3, "y":4}, {"label":"k44", "x":4, "y":4}, {"label":"k55", "x":6, "y":5}, {"label":"k50", "x":7, "y":5}, {"label":"k54", "x":7, "y":6}, {"label":"k53", "x":5, "y":6, "h":2}, {"label":"k52", "x":6, "y":6, "h":2}, {"label":"k51", "x":7, "y":7}, {"label":"k06", "x":11, "y":0}, {"label":"k07", "x":12, "y":0}, {"label":"k08", "x":13, "y":0}, {"label":"k09", "x":14, "y":0}, {"label":"k0A", "x":15, "y":0}, {"label":"k0B", "x":16, "y":0}, {"label":"k16", "x":11, "y":1}, {"label":"k17", "x":12, "y":1}, {"label":"k18", "x":13, "y":1}, {"label":"k19", "x":14, "y":1}, {"label":"k1A", "x":15, "y":1}, {"label":"k1B", "x":16, "y":1}, {"label":"k26", "x":11, "y":2}, {"label":"k27", "x":12, "y":2}, {"label":"k28", "x":13, "y":2}, {"label":"k29", "x":14, "y":2}, {"label":"k2A", "x":15, "y":2}, {"label":"k2B", "x":16, "y":2}, {"label":"k36", "x":11, "y":3}, {"label":"k37", "x":12, "y":3}, {"label":"k38", "x":13, "y":3}, {"label":"k39", "x":14, "y":3}, {"label":"k3A", "x":15, "y":3}, {"label":"k3B", "x":16, "y":3}, {"label":"k47", "x":12, "y":4}, {"label":"k48", "x":13, "y":4}, {"label":"k49", "x":14, "y":4}, {"label":"k4A", "x":15, "y":4}, {"label":"k4B", "x":16, "y":4}, {"label":"k5B", "x":9, "y":5}, {"label":"k56", "x":10, "y":5}, {"label":"k57", "x":9, "y":6}, {"label":"k5A", "x":9, "y":7}, {"label":"k59", "x":10, "y":6, "h":2}, {"label":"k58", "x":11, "y":6, "h":2}] } } diff --git a/keyboards/handwired/dactyl/keymaps/default/keymap.c b/keyboards/handwired/dactyl/keymaps/default/keymap.c index 47f5ba96ba2b..3e013b19a98f 100644 --- a/keyboards/handwired/dactyl/keymaps/default/keymap.c +++ b/keyboards/handwired/dactyl/keymaps/default/keymap.c @@ -148,12 +148,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -// Runs just one time when the keyboard initializes. -void matrix_init_user(void) { - -}; - - -// Runs constantly in the background, in a loop. -void matrix_scan_user(void) {}; diff --git a/keyboards/handwired/dactyl/matrix.c b/keyboards/handwired/dactyl/matrix.c index 0f4f98ad8dc0..a21cd08e1453 100644 --- a/keyboards/handwired/dactyl/matrix.c +++ b/keyboards/handwired/dactyl/matrix.c @@ -25,7 +25,7 @@ along with this program. If not, see . #include "util.h" #include "matrix.h" #include "dactyl.h" -#include "i2cmaster.h" +#include "i2c_master.h" #include "timer.h" @@ -130,7 +130,7 @@ void matrix_init(void) void init_expander(void) { if (! i2c_initialized) { i2c_init(); - wait_us(1000000); + wait_ms(1000); } if (! expander_input_pin_mask) { @@ -147,9 +147,6 @@ void init_expander(void) { #endif } - expander_status = i2c_start(I2C_ADDR_WRITE); if (expander_status) goto out; - expander_status = i2c_write(IODIRA); if (expander_status) goto out; - /* Pin direction and pull-up depends on both the diode direction and on whether the column register is GPIOA or GPIOB @@ -164,50 +161,65 @@ void init_expander(void) { #if (EXPANDER_COL_REGISTER == GPIOA) # if (DIODE_DIRECTION == COL2ROW) - expander_status = i2c_write(expander_input_pin_mask); if (expander_status) goto out; - expander_status = i2c_write(0); if (expander_status) goto out; + uint8_t direction[2] = { + expander_input_pin_mask, + 0, + }; # elif (DIODE_DIRECTION == ROW2COL) - expander_status = i2c_write(0); if (expander_status) goto out; - expander_status = i2c_write(expander_input_pin_mask); if (expander_status) goto out; + uint8_t direction[2] = { + 0, + expander_input_pin_mask, + }; # endif #elif (EXPANDER_COL_REGISTER == GPIOB) # if (DIODE_DIRECTION == COL2ROW) - expander_status = i2c_write(0); if (expander_status) goto out; - expander_status = i2c_write(expander_input_pin_mask); if (expander_status) goto out; + uint8_t direction[2] = { + 0, + expander_input_pin_mask, + }; # elif (DIODE_DIRECTION == ROW2COL) - expander_status = i2c_write(expander_input_pin_mask); if (expander_status) goto out; - expander_status = i2c_write(0); if (expander_status) goto out; + uint8_t direction[2] = { + expander_input_pin_mask, + 0, + }; # endif #endif - i2c_stop(); - // set pull-up // - unused : off : 0 // - input : on : 1 // - driving : off : 0 - expander_status = i2c_start(I2C_ADDR_WRITE); if (expander_status) goto out; - expander_status = i2c_write(GPPUA); if (expander_status) goto out; #if (EXPANDER_COL_REGISTER == GPIOA) # if (DIODE_DIRECTION == COL2ROW) - expander_status = i2c_write(expander_input_pin_mask); if (expander_status) goto out; - expander_status = i2c_write(0); if (expander_status) goto out; + uint8_t pullup[2] = { + expander_input_pin_mask, + 0, + }; # elif (DIODE_DIRECTION == ROW2COL) - expander_status = i2c_write(0); if (expander_status) goto out; - expander_status = i2c_write(expander_input_pin_mask); if (expander_status) goto out; + uint8_t pullup[2] = { + 0, + expander_input_pin_mask, + }; # endif #elif (EXPANDER_COL_REGISTER == GPIOB) # if (DIODE_DIRECTION == COL2ROW) - expander_status = i2c_write(0); if (expander_status) goto out; - expander_status = i2c_write(expander_input_pin_mask); if (expander_status) goto out; + uint8_t pullup[2] = { + 0, + expander_input_pin_mask, + }; # elif (DIODE_DIRECTION == ROW2COL) - expander_status = i2c_write(expander_input_pin_mask); if (expander_status) goto out; - expander_status = i2c_write(0); if (expander_status) goto out; + uint8_t pullup[2] = { + expander_input_pin_mask, + 0, + }; # endif #endif -out: - i2c_stop(); + + expander_status = i2c_writeReg(I2C_ADDR, IODIRA, direction, 2, I2C_TIMEOUT); + if (expander_status) return; + + expander_status = i2c_writeReg(I2C_ADDR, GPPUA, pullup, 2, I2C_TIMEOUT); } uint8_t matrix_scan(void) @@ -337,14 +349,11 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) // Read columns from expander, unless it's in an error state if (! expander_status) { - expander_status = i2c_start(I2C_ADDR_WRITE); if (expander_status) goto out; - expander_status = i2c_write(EXPANDER_COL_REGISTER); if (expander_status) goto out; - expander_status = i2c_start(I2C_ADDR_READ); if (expander_status) goto out; - - current_matrix[current_row] |= (~i2c_readNak()) & expander_input_pin_mask; - - out: - i2c_stop(); + uint8_t state = 0; + expander_status = i2c_readReg(I2C_ADDR, EXPANDER_COL_REGISTER, &state, 1, I2C_TIMEOUT); + if (! expander_status) { + current_matrix[current_row] |= (~state) & expander_input_pin_mask; + } } // Read columns from onboard pins @@ -366,11 +375,8 @@ static void select_row(uint8_t row) { if (! expander_status) { // set active row low : 0 // set other rows hi-Z : 1 - expander_status = i2c_start(I2C_ADDR_WRITE); if (expander_status) goto out; - expander_status = i2c_write(EXPANDER_ROW_REGISTER); if (expander_status) goto out; - expander_status = i2c_write(0xFF & ~(1< http://jump.to/fleury -* File: $Id: twimaster.c,v 1.3 2005/07/02 11:14:21 Peter Exp $ -* Software: AVR-GCC 3.4.3 / avr-libc 1.2.3 -* Target: any AVR device with hardware TWI -* Usage: API compatible with I2C Software Library i2cmaster.h -**************************************************************************/ -#include -#include - -#include "i2cmaster.h" - -/* define CPU frequency in Hz here if not defined in Makefile */ -#ifndef F_CPU -#define F_CPU 16000000UL -#endif - -/* I2C clock in Hz */ -#define SCL_CLOCK 400000L - - -/************************************************************************* - Initialization of the I2C bus interface. Need to be called only once -*************************************************************************/ -void i2c_init(void) -{ - /* initialize TWI clock - * minimal values in Bit Rate Register (TWBR) and minimal Prescaler - * bits in the TWI Status Register should give us maximal possible - * I2C bus speed - about 444 kHz - * - * for more details, see 20.5.2 in ATmega16/32 secification - */ - - TWSR = 0; /* no prescaler */ - TWBR = 10; /* must be >= 10 for stable operation */ - -}/* i2c_init */ - - -/************************************************************************* - Issues a start condition and sends address and transfer direction. - return 0 = device accessible, 1= failed to access device -*************************************************************************/ -unsigned char i2c_start(unsigned char address) -{ - uint8_t twst; - - // send START condition - TWCR = (1<. */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -194,26 +141,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/handwired/dactyl_left/dactyl_left.c b/keyboards/handwired/dactyl_left/dactyl_left.c index e6fe3402dac6..51a31afbdb45 100644 --- a/keyboards/handwired/dactyl_left/dactyl_left.c +++ b/keyboards/handwired/dactyl_left/dactyl_left.c @@ -14,38 +14,3 @@ * along with this program. If not, see . */ #include "dactyl_left.h" - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -/* - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - -*/ diff --git a/keyboards/handwired/dactyl_left/info.json b/keyboards/handwired/dactyl_left/info.json index 4c9cd0845b25..980601758fc4 100644 --- a/keyboards/handwired/dactyl_left/info.json +++ b/keyboards/handwired/dactyl_left/info.json @@ -2,8 +2,6 @@ "keyboard_name": "dactyl_left", "url": "", "maintainer": "RedForty", - "width": 8, - "height": 7.75, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0.375, "w":1.5}, {"x":1.5, "y":0.375}, {"x":2.5, "y":0.125}, {"x":3.5, "y":0}, {"x":4.5, "y":0.125}, {"x":5.5, "y":0.25}, {"x":0, "y":1.375, "w":1.5}, {"x":1.5, "y":1.375}, {"x":2.5, "y":1.125}, {"x":3.5, "y":1}, {"x":4.5, "y":1.125}, {"x":5.5, "y":1.25}, {"x":0, "y":2.375, "w":1.5}, {"x":1.5, "y":2.375}, {"x":2.5, "y":2.125}, {"x":3.5, "y":2}, {"x":4.5, "y":2.125}, {"x":5.5, "y":2.25}, {"x":0, "y":3.375, "w":1.5}, {"x":1.5, "y":3.375}, {"x":2.5, "y":3.125}, {"x":3.5, "y":3}, {"x":4.5, "y":3.125}, {"x":5.5, "y":3.25}, {"x":0.5, "y":4.375}, {"x":1.5, "y":4.375}, {"x":2.5, "y":4.125}, {"x":3.5, "y":4}, {"x":4.5, "y":4.125}, {"x":6, "y":4.75}, {"x":7, "y":4.75}, {"x":5, "y":5.75, "h":2}, {"x":6, "y":5.75, "h":2}, {"x":7, "y":5.75}, {"x":7, "y":6.75}] diff --git a/keyboards/handwired/dactyl_left/keymaps/default/keymap.c b/keyboards/handwired/dactyl_left/keymaps/default/keymap.c index 708a380890f5..631a979efd4c 100644 --- a/keyboards/handwired/dactyl_left/keymaps/default/keymap.c +++ b/keyboards/handwired/dactyl_left/keymaps/default/keymap.c @@ -49,9 +49,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -void matrix_init_user(void) {} - -void matrix_scan_user(void) {} - -void led_set_user(uint8_t usb_led) {} diff --git a/keyboards/handwired/dactyl_left/rules.mk b/keyboards/handwired/dactyl_left/rules.mk index ab0c05e1106d..d289b920b1f8 100644 --- a/keyboards/handwired/dactyl_left/rules.mk +++ b/keyboards/handwired/dactyl_left/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = halfkay # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config) -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/dactyl_manuform/4x5/4x5.c b/keyboards/handwired/dactyl_manuform/4x5/4x5.c index 78c0fee819c2..3170eb939983 100644 --- a/keyboards/handwired/dactyl_manuform/4x5/4x5.c +++ b/keyboards/handwired/dactyl_manuform/4x5/4x5.c @@ -1,23 +1 @@ #include "4x5.h" - - -#ifdef SSD1306OLED -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - led_set_user(usb_led); -} -#endif - -void matrix_init_kb(void) { - - // // green led on - // DDRD |= (1<<5); - // PORTD &= ~(1<<5); - - // // orange led on - // DDRB |= (1<<0); - // PORTB &= ~(1<<0); - - matrix_init_user(); -}; - diff --git a/keyboards/handwired/dactyl_manuform/4x5/4x5.h b/keyboards/handwired/dactyl_manuform/4x5/4x5.h index 3d2d986bbc18..73f6be64c254 100644 --- a/keyboards/handwired/dactyl_manuform/4x5/4x5.h +++ b/keyboards/handwired/dactyl_manuform/4x5/4x5.h @@ -2,65 +2,50 @@ #include "dactyl_manuform.h" -#include "quantum.h" - -#ifdef USE_I2C -#include -#ifdef __AVR__ - #include - #include -#endif -#endif +#define XXX KC_NO #ifndef FLIP_HALF #define LAYOUT( \ - L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \ - L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \ - L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \ - L31, L32, R32, R33, \ - L33, L34, R30, R31, \ - L44, L43, R41, R40, \ - L42, L41, R43, R42 \ - ) \ - { \ - { L00, L01, L02, L03, L04 }, \ - { L10, L11, L12, L13, L14 }, \ - { L20, L21, L22, L23, L24 }, \ - { KC_NO, L31, L32, L33, L34 }, \ - { KC_NO, L41, L42, L43, L44 }, \ + L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \ + L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \ + L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \ + L31, L32, R32, R33, \ + L33, L34, R30, R31, \ + L44, L43, R41, R40, \ + L42, L41, R43, R42 \ +) { \ + { L00, L01, L02, L03, L04 }, \ + { L10, L11, L12, L13, L14 }, \ + { L20, L21, L22, L23, L24 }, \ + { XXX, L31, L32, L33, L34 }, \ + { XXX, L41, L42, L43, L44 }, \ \ - { R04, R03, R02, R01, R00 }, \ - { R14, R13, R12, R11, R10 }, \ - { R24, R23, R22, R21, R20 }, \ - { KC_NO, R33, R32, R31, R30 }, \ - { KC_NO, R43, R42, R41, R40 } \ - } + { R04, R03, R02, R01, R00 }, \ + { R14, R13, R12, R11, R10 }, \ + { R24, R23, R22, R21, R20 }, \ + { XXX, R33, R32, R31, R30 }, \ + { XXX, R43, R42, R41, R40 } \ +} #else - - - #define LAYOUT( \ - L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \ - L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \ - L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \ - L31, L32, R32, R33, \ - L33, L34, R30, R31, \ - L43, L44, R40, R41, \ - L41, L42, R42, R43 \ - ) \ - { \ - { R04, R03, R02, R01, R00 }, \ - { R14, R13, R12, R11, R10 }, \ - { R24, R23, R22, R21, R20 }, \ - { KC_NO, R33, R32, R31, R30 }, \ - { KC_NO, R43, R42, R41, R40 }, \ + L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \ + L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \ + L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \ + L31, L32, R32, R33, \ + L33, L34, R30, R31, \ + L43, L44, R40, R41, \ + L41, L42, R42, R43 \ +) { \ + { R04, R03, R02, R01, R00 }, \ + { R14, R13, R12, R11, R10 }, \ + { R24, R23, R22, R21, R20 }, \ + { XXX, R33, R32, R31, R30 }, \ + { XXX, R43, R42, R41, R40 }, \ \ - { L00, L01, L02, L03, L04 }, \ - { L10, L11, L12, L13, L14 }, \ - { L20, L21, L22, L23, L24 }, \ - { KC_NO, L31, L32, L33, L34 }, \ - { KC_NO, L41, L42, L43, L44 } \ -\ - } + { L00, L01, L02, L03, L04 }, \ + { L10, L11, L12, L13, L14 }, \ + { L20, L21, L22, L23, L24 }, \ + { XXX, L31, L32, L33, L34 }, \ + { XXX, L41, L42, L43, L44 } \ +} #endif - diff --git a/keyboards/handwired/dactyl_manuform/4x5/config.h b/keyboards/handwired/dactyl_manuform/4x5/config.h index 22f800d0ebe0..8a06aeab8e93 100644 --- a/keyboards/handwired/dactyl_manuform/4x5/config.h +++ b/keyboards/handwired/dactyl_manuform/4x5/config.h @@ -21,10 +21,9 @@ along with this program. If not, see . #include "config_common.h" /* USB Device descriptor parameter */ -#define PRODUCT_ID 0x3435 -#define DEVICE_VER 0x0001 - -#define MANUFACTURER tshort +#define PRODUCT_ID 0x3435 +#define DEVICE_VER 0x0001 +#define MANUFACTURER tshort /* key matrix size */ // Rows are doubled-up diff --git a/keyboards/handwired/dactyl_manuform/4x5/info.json b/keyboards/handwired/dactyl_manuform/4x5/info.json index 4ee52e164460..beeafd06e04b 100644 --- a/keyboards/handwired/dactyl_manuform/4x5/info.json +++ b/keyboards/handwired/dactyl_manuform/4x5/info.json @@ -2,57 +2,68 @@ "keyboard_name": "Dactyl Manuform 4x5", "url": "", "maintainer": "qmk", - "width": 15, - "height": 7, "layouts": { "LAYOUT": { "layout": [ - {"label":"L00", "x":0, "y":0}, - {"label":"L01", "x":1, "y":0}, - {"label":"L02", "x":2, "y":0}, - {"label":"L03", "x":3, "y":0}, - {"label":"L04", "x":4, "y":0}, - {"label":"R00", "x":10, "y":0}, - {"label":"R01", "x":11, "y":0}, - {"label":"R02", "x":12, "y":0}, - {"label":"R03", "x":13, "y":0}, - {"label":"R04", "x":14, "y":0}, - {"label":"L10", "x":0, "y":1}, - {"label":"L11", "x":1, "y":1}, - {"label":"L12", "x":2, "y":1}, - {"label":"L13", "x":3, "y":1}, - {"label":"L14", "x":4, "y":1}, - {"label":"R10", "x":10, "y":1}, - {"label":"R11", "x":11, "y":1}, - {"label":"R12", "x":12, "y":1}, - {"label":"R13", "x":13, "y":1}, - {"label":"R14", "x":14, "y":1}, - {"label":"L20", "x":0, "y":2}, - {"label":"L21", "x":1, "y":2}, - {"label":"L22", "x":2, "y":2}, - {"label":"L23", "x":3, "y":2}, - {"label":"L24", "x":4, "y":2}, - {"label":"R20", "x":10, "y":2}, - {"label":"R21", "x":11, "y":2}, - {"label":"R22", "x":12, "y":2}, - {"label":"R23", "x":13, "y":2}, - {"label":"R24", "x":14, "y":2}, - {"label":"L31", "x":1, "y":3}, - {"label":"L32", "x":2, "y":3}, - {"label":"R32", "x":12, "y":3}, - {"label":"R33", "x":13, "y":3}, - {"label":"L33", "x":3, "y":4}, - {"label":"L34", "x":4, "y":4}, - {"label":"R30", "x":10, "y":4}, - {"label":"R31", "x":11, "y":4}, - {"label":"L44", "x":5, "y":5}, - {"label":"L43", "x":6, "y":5}, - {"label":"R41", "x":8, "y":5}, - {"label":"R40", "x":9, "y":5}, - {"label":"L42", "x":5, "y":6}, - {"label":"L41", "x":6, "y":6}, - {"label":"R43", "x":8, "y":6}, - {"label":"R42", "x":9, "y":6} + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y":0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1}, + {"x": 1, "y": 1}, + {"x": 2, "y": 1}, + {"x": 3, "y": 1}, + {"x": 4, "y": 1}, + + {"x": 10, "y": 1}, + {"x": 11, "y": 1}, + {"x": 12, "y": 1}, + {"x": 13, "y": 1}, + {"x": 14, "y": 1}, + + {"x": 0, "y": 2}, + {"x": 1, "y": 2}, + {"x": 2, "y": 2}, + {"x": 3, "y": 2}, + {"x": 4, "y": 2}, + + {"x": 10, "y": 2}, + {"x": 11, "y": 2}, + {"x": 12, "y": 2}, + {"x": 13, "y": 2}, + {"x": 14, "y": 2}, + + {"x": 1, "y": 3}, + {"x": 2, "y": 3}, + + {"x": 12, "y": 3}, + {"x": 13, "y": 3}, + + {"x": 3, "y": 4}, + {"x": 4, "y": 4}, + + {"x": 10, "y": 4}, + {"x": 11, "y": 4}, + + {"x": 5, "y": 5}, + {"x": 6, "y": 5}, + + {"x": 8, "y": 5}, + {"x": 9, "y": 5}, + + {"x": 5, "y": 6}, + {"x": 6, "y": 6}, + + {"x": 8, "y": 6}, + {"x": 9, "y": 6} ] } } diff --git a/keyboards/handwired/dactyl_manuform/4x5/keymaps/default/config.h b/keyboards/handwired/dactyl_manuform/4x5/keymaps/default/config.h index 6b0ddbfe8e39..18320c0952aa 100644 --- a/keyboards/handwired/dactyl_manuform/4x5/keymaps/default/config.h +++ b/keyboards/handwired/dactyl_manuform/4x5/keymaps/default/config.h @@ -21,12 +21,11 @@ along with this program. If not, see . #pragma once /* Use I2C or Serial, not both */ - #define USE_SERIAL -// #define USE_I2C +//#define USE_I2C /* Select hand configuration */ +//#define MASTER_LEFT +//#define MASTER_RIGHT -// #define MASTER_LEFT -// #define MASTER_RIGHT #define EE_HANDS diff --git a/keyboards/handwired/dactyl_manuform/4x5/keymaps/default/keymap.c b/keyboards/handwired/dactyl_manuform/4x5/keymaps/default/keymap.c index 1a328f9d0a86..7f71f3db89e0 100644 --- a/keyboards/handwired/dactyl_manuform/4x5/keymaps/default/keymap.c +++ b/keyboards/handwired/dactyl_manuform/4x5/keymaps/default/keymap.c @@ -1,14 +1,9 @@ #include QMK_KEYBOARD_H - #define _BASE 0 #define _RAISE 1 #define _LOWER 2 -// Fillers to make layering more clear - -#define ____ KC_TRNS - #define SFT_ESC SFT_T(KC_ESC) #define CTL_BSPC CTL_T(KC_BSPC) #define ALT_SPC ALT_T(KC_SPC) @@ -25,101 +20,98 @@ #define LOWER MO(_LOWER) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base (qwerty) + * ,----------------------------------, ,----------------------------------, + * | q | w | e | r | t | | y | u | i | o | p | + * |------+------+------+------+------| |-------------+------+------+------| + * | a | s | d | f | g | | h | j | k | l | ; | + * |------+------+------+------+------| |------|------+------+------+------| + * | z | x | c | v | b | | n | m | , | . | ' | + * |------+------+------+-------------, ,-------------+------+------+------, + * | [ | ] | | - | = | + * '------+------'-------------' '-------------'------+------' + * | ESC | BS | | SPACE|ENTER | + * | + | + | | + | + | + * | SHIFT| CTRL | | ALT |SHIFT | + * '------+------' '------+------' + * '------+------' '------+------' + * | TAB | HOME | | END | DEL | + * '------+------' '------+------' + * | Raise| ~ | | GUI | Lower| + * '------+------' '------+------' + */ + [_BASE] = LAYOUT( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_QUOT, + KC_LBRC, KC_RBRC, KC_MINS, KC_EQL, + SFT_ESC, CTL_BSPC, ALT_SPC, SFT_ENT, + KC_TAB, KC_HOME, KC_END, KC_DEL, + RAISE, KC_GRV, KC_LGUI, LOWER + ), -/* Base (qwerty) - * ,----------------------------------, ,----------------------------------, - * | q | w | e | r | t | | y | u | i | o | p | - * |------+------+------+------+------| |-------------+------+------+------| - * | a | s | d | f | g | | h | j | k | l | ; | - * |------+------+------+------+------| |------|------+------+------+------| - * | z | x | c | v | b | | n | m | , | . | ' | - * |------+------+------+-------------, ,-------------+------+------+------, - * | [ | ] | | - | = | - * '------+------'-------------' '-------------'------+------' - * | ESC | BS | | SPACE|ENTER | - * | + | + | | + | + | - * | SHIFT| CTRL | | ALT |SHIFT | - * '------+------' '------+------' - * '------+------' '------+------' - * | TAB | HOME | | END | DEL | - * '------+------' '------+------' - * | Raise| ~ | | GUI | Lower| - * '------+------' '------+------' - */ - -[_BASE] = LAYOUT( \ - KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, \ - KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, \ - KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_QUOT, \ - KC_LBRC, KC_RBRC, KC_MINS, KC_EQL, \ - SFT_ESC, CTL_BSPC, ALT_SPC, SFT_ENT, \ - KC_TAB, KC_HOME, KC_END, KC_DEL, \ - RAISE, KC_GRV, KC_LGUI, LOWER -), - -/* Raise - * ,----------------------------------, ,----------------------------------, - * | | | mup | | | | VOL+ | | up | | PgUp | - * |------+------+------+------+------| |-------------+------+------+------| - * | | mleft| mdown|mright| | | MUTE | left | down |right | PgDn | - * |------+------+------+------+------| |------|------+------+------+------| - * | | | | | | | VOL- | / | \ | ? | | | - * |------+------+------+-------------, ,-------------+------+------+------, - * | | | | mbtn |mbtn2 | - * '------+------'-------------' '-------------'------+------' - * | | | | | | - * | | | | | | - * | | | | | | - * '------+------' '------+------' - * '------+------' '------+------' - * | | | | | | - * '------+------' '------+------' - * | | | | | | - * '------+------' '------+------' - */ - -[_RAISE] = LAYOUT( \ - ____, ____, KC_MU, ____, ____, KC_VOLU, ____, KC_UP, ____, KC_PGUP, \ - ____, KC_ML, KC_MD, KC_MR, ____, KC_MUTE, KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDOWN, \ - ____, ____, ____, ____, ____, KC_VOLD, KC_SLSH, KC_BSLS, KC_QUES, KC_PIPE, \ - ____, ____, KC_MB1, KC_MB2, \ - ____, ____, ____, ____, \ - ____, ____, ____, ____, \ - ____, ____, ____, ____ \ -), -/* Lower - * ,----------------------------------, ,----------------------------------, - * | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | - * |------+------+------+------+------| |-------------+------+------+------| - * | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | - * |------+------+------+------+------| |------|------+------+------+------| - * | ! | @ | # | $ | % | | ^ | & | * | ( | ) | - * |------+------+------+-------------, ,-------------+------+------+------, - * | F11 | F12 | | - | = | - * '------+------'-------------' '-------------'------+------' - * | | | | | | - * | | | | | | - * | | | | | | - * '------+------' '------+------' - * '------+------' '------+------' - * | | | | | | - * '------+------' '------+------' - * | | | | | | - * '------+------' '------+------' - */ + /* Raise + * ,----------------------------------, ,----------------------------------, + * | | | mup | | | | VOL+ | | up | | PgUp | + * |------+------+------+------+------| |-------------+------+------+------| + * | | mleft| mdown|mright| | | MUTE | left | down |right | PgDn | + * |------+------+------+------+------| |------|------+------+------+------| + * | | | | | | | VOL- | / | \ | ? | | | + * |------+------+------+-------------, ,-------------+------+------+------, + * | | | | mbtn |mbtn2 | + * '------+------'-------------' '-------------'------+------' + * | | | | | | + * | | | | | | + * | | | | | | + * '------+------' '------+------' + * '------+------' '------+------' + * | | | | | | + * '------+------' '------+------' + * | | | | | | + * '------+------' '------+------' + */ + [_RAISE] = LAYOUT( + _______, _______, KC_MU, _______, _______, KC_VOLU, _______, KC_UP, _______, KC_PGUP, + _______, KC_ML, KC_MD, KC_MR, _______, KC_MUTE, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, + _______, _______, _______, _______, _______, KC_VOLD, KC_SLSH, KC_BSLS, KC_QUES, KC_PIPE, + _______, _______, KC_MB1, KC_MB2, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______ + ), -[_LOWER] = LAYOUT( \ - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, \ - KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, \ - KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, \ - KC_F11, KC_F12, ____, ____, \ - ____, ____, ____, ____, \ - ____, ____, ____, ____, \ - ____, ____, ____, ____ \ -) + /* Lower + * ,----------------------------------, ,----------------------------------, + * | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | + * |------+------+------+------+------| |-------------+------+------+------| + * | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | + * |------+------+------+------+------| |------|------+------+------+------| + * | ! | @ | # | $ | % | | ^ | & | * | ( | ) | + * |------+------+------+-------------, ,-------------+------+------+------, + * | F11 | F12 | | - | = | + * '------+------'-------------' '-------------'------+------' + * | | | | | | + * | | | | | | + * | | | | | | + * '------+------' '------+------' + * '------+------' '------+------' + * | | | | | | + * '------+------' '------+------' + * | | | | | | + * '------+------' '------+------' + */ + [_LOWER] = LAYOUT( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, + KC_F11, KC_F12, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______ + ) }; void persistent_default_layer_set(uint16_t default_layer) { - eeconfig_update_default_layer(default_layer); - default_layer_set(default_layer); + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); } diff --git a/keyboards/handwired/dactyl_manuform/4x5/keymaps/ibnuda/keymap.c b/keyboards/handwired/dactyl_manuform/4x5/keymaps/ibnuda/keymap.c index 58a8c63aaf26..bf2c08e80589 100644 --- a/keyboards/handwired/dactyl_manuform/4x5/keymaps/ibnuda/keymap.c +++ b/keyboards/handwired/dactyl_manuform/4x5/keymaps/ibnuda/keymap.c @@ -16,46 +16,45 @@ K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \ K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, \ - KTA, KTB, KTC, KTD \ + KTA, KTB, KTC, KTD, KTE, KTF \ ) \ LAYOUT_wrapper( \ K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \ K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, \ - TAB, GUI, MIN, SLS, \ - KTA, KTB, KTC, KTD, \ + TAB, KTA, KTF, SLS, \ + KTB, KTC, KTD, KTE, \ CTL, DEL, QUE, CTL, \ - ___, ___, ___, ___ \ + ___, ___, ___, ___ \ ) #define LAYOUT_dm_base_wrapper(...) LAYOUT_dm_base(__VA_ARGS__) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_BASE] = LAYOUT_dm_base_wrapper( - ________________DVORAK_L1_______________, ________________DVORAK_R1_______________, - ________________DVORAK_L2_______________, ________________DVORAK_R2_______________, - ________________DVORAK_L3_______________, ________________DVORAK_R3_______________, - LW_BSPC,SFT_ESC, ALT_ENT,RS_SPC + LUP, LUR, LUM, LUI, LUII, RUII, RUI, RUM, RUR, RUP, + SHLP, CTLR, ALLM, LMI, GULII, GURII, RMI, ALRM, CTRR, SHRP, + LLP, LLR, LLM, LLI, LLII, RLII, RLI, RLM, RLR, RLP, + CT_ESC, LW_E, SF_BSPC, AL_ENT, RS_SPC, TRAISE ), [_RAISE] = LAYOUT_dm_base_wrapper( - ________________RAISE_L1________________, ________________RAISE_R1________________, - ________________RAISE_L2________________, ________________RAISE_R2________________, - ________________RAISE_L3________________, ________________RAISE_R3________________, - ADDDD, _______, _______,_______ + KC_EXLM,KC_AT, KC_UP, KC_LCBR,KC_RCBR, KC_BSLS,KC_7, KC_8, KC_9, KC_ASTR , + KC_HASH,CT_LEFT,AL_DOWN,KC_RGHT,KC_DLR, GU_EQL, KC_4, AL_FIVE,CT_SIX, SH_ZERO , + KC_LBRC,KC_RBRC,KC_LPRN,KC_RPRN,KC_AMPR, KC_GRV, KC_1, KC_2, KC_3, KC_PLUS , + _______,ADDDD ,_______, _______,RS_SPC, _______ ), [_LOWER] = LAYOUT_dm_base_wrapper( - ________________LOWER_L1________________, ________________LOWER_R1________________, - ________________LOWER_L2________________, ________________LOWER_R2________________, - ________________LOWER_L3________________, ________________LOWER_R3________________, - _______,_______, _______,ADDDD + KC_ESC, KC_QUES,KC_UNDS,KC_F1, KC_F2, KC_F3, KC_F4, KC_MINS,KC_SLSH,KC_BSPC , + KC_LSFT,KC_PSCR,KC_PGUP,KC_F5, KC_F6, KC_F7, KC_F8, KC_HOME,KC_LALT,KC_ENT , + KC_CLCK,KC_SLCK,KC_PGDN,KC_F9, KC_F10, KC_F11, KC_F12, KC_END, KC_INS, KC_SLSH , + _______,_______,_______, _______,ADDDD, _______ ), [_ADJUST] = LAYOUT_dm_base_wrapper( - ________________ADJUST_L1_______________, ________________ADJUST_R1_______________, - ________________ADJUST_L2_______________, ________________ADJUST_R2_______________, - ________________ADJUST_L3_______________, ________________ADJUST_R3_______________, - _______,_______, _______,_______ -), -}; + _______,EXPLR, KC_UP, PRVTAB, PRVWIN, NXTWIN, NXTTAB, _______,_______,LCKGUI, + TSKMGR, KC_LEFT,KC_DOWN,KC_RGHT,UPTAB, DNTAB, KC_ENT, KC_LGUI,_______,CALDL, + _______,CLSGUI, _______,CONPST, RESET, _______,_______,_______,_______,_______, + _______,_______,_______, _______,_______,_______ +),}; // clang-format on diff --git a/keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/config.h b/keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/config.h new file mode 100644 index 000000000000..27526140c922 --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/config.h @@ -0,0 +1,25 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . + +#pragma once + +#define XXX KC_NO + +#define LAYOUT_miryoku(\ +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,\ +N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +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,\ + XXX, XXX, XXX, XXX, \ + K32, K33, K36, K37, \ + K34, XXX, XXX, K35, \ + XXX, XXX, XXX, XXX \ +) diff --git a/keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/keymap.c new file mode 100644 index 000000000000..7c5717a0fee0 --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/keymap.c @@ -0,0 +1,5 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/keyboards/handwired/dactyl_manuform/4x5/rules.mk b/keyboards/handwired/dactyl_manuform/4x5/rules.mk index 7508070515e2..6d1c7c1f67f7 100644 --- a/keyboards/handwired/dactyl_manuform/4x5/rules.mk +++ b/keyboards/handwired/dactyl_manuform/4x5/rules.mk @@ -1,20 +1,20 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina # 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 +# change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +SPLIT_KEYBOARD = yes diff --git a/keyboards/handwired/dactyl_manuform/4x6/4x6.c b/keyboards/handwired/dactyl_manuform/4x6/4x6.c index 1d305c85414c..5e68c1a9fa2f 100644 --- a/keyboards/handwired/dactyl_manuform/4x6/4x6.c +++ b/keyboards/handwired/dactyl_manuform/4x6/4x6.c @@ -1,14 +1 @@ #include "4x6.h" - - -#ifdef SSD1306OLED -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - led_set_user(usb_led); -} -#endif - -void matrix_init_kb(void) { - matrix_init_user(); -}; - diff --git a/keyboards/handwired/dactyl_manuform/4x6/4x6.h b/keyboards/handwired/dactyl_manuform/4x6/4x6.h index 25741be57b5f..dcdb1a39ec41 100644 --- a/keyboards/handwired/dactyl_manuform/4x6/4x6.h +++ b/keyboards/handwired/dactyl_manuform/4x6/4x6.h @@ -1,36 +1,27 @@ #pragma once #include "dactyl_manuform.h" -#include "quantum.h" -#ifdef USE_I2C -#include -#ifdef __AVR__ - #include - #include -#endif -#endif +#define XXX KC_NO -#define LAYOUT(\ +#define LAYOUT( \ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ - L32, L33, R32, R33, \ - L34, L35, R30, R31, \ - L44, L45, R40, R41, \ - L42, L43, R42, R43 \ - ) \ - { \ - { L00, L01, L02, L03, L04, L05 }, \ - { L10, L11, L12, L13, L14, L15 }, \ - { L20, L21, L22, L23, L24, L25 }, \ - { KC_NO, KC_NO, L32, L33, L34, L35 }, \ - { KC_NO, KC_NO, L42, L43, L44, L45 }, \ + L32, L33, R32, R33, \ + L34, L35, R30, R31, \ + L44, L45, R40, R41, \ + L42, L43, R42, R43 \ +) { \ + { L00, L01, L02, L03, L04, L05 }, \ + { L10, L11, L12, L13, L14, L15 }, \ + { L20, L21, L22, L23, L24, L25 }, \ + { XXX, XXX, L32, L33, L34, L35 }, \ + { XXX, XXX, L42, L43, L44, L45 }, \ \ - { R00, R01, R02, R03, R04, R05 }, \ - { R10, R11, R12, R13, R14, R15 }, \ - { R20, R21, R22, R23, R24, R25 }, \ - { R30, R31, R32, R33, KC_NO, KC_NO }, \ - { R40, R41, R42, R43, KC_NO, KC_NO } \ -\ - } + { R00, R01, R02, R03, R04, R05 }, \ + { R10, R11, R12, R13, R14, R15 }, \ + { R20, R21, R22, R23, R24, R25 }, \ + { R30, R31, R32, R33, XXX, XXX }, \ + { R40, R41, R42, R43, XXX, XXX } \ +} diff --git a/keyboards/handwired/dactyl_manuform/4x6/config.h b/keyboards/handwired/dactyl_manuform/4x6/config.h index 6de9b3616718..2e79517b2552 100644 --- a/keyboards/handwired/dactyl_manuform/4x6/config.h +++ b/keyboards/handwired/dactyl_manuform/4x6/config.h @@ -21,8 +21,8 @@ along with this program. If not, see . #include "config_common.h" /* USB Device descriptor parameter */ -#define PRODUCT_ID 0x3436 -#define DEVICE_VER 0x0001 +#define PRODUCT_ID 0x3436 +#define DEVICE_VER 0x0001 /* key matrix size */ // Rows are doubled-up diff --git a/keyboards/handwired/dactyl_manuform/4x6/info.json b/keyboards/handwired/dactyl_manuform/4x6/info.json index ba358a703f4f..4a5c8d5eebdf 100644 --- a/keyboards/handwired/dactyl_manuform/4x6/info.json +++ b/keyboards/handwired/dactyl_manuform/4x6/info.json @@ -2,64 +2,75 @@ "keyboard_name": "Dactyl Manuform 4x6", "url": "", "maintainer": "qmk", - "width": 17, - "height": 7, "layouts": { "LAYOUT": { "layout": [ - {"label":"L00", "x":0, "y":0}, - {"label":"L01", "x":1, "y":0}, - {"label":"L02", "x":2, "y":0}, - {"label":"L03", "x":3, "y":0}, - {"label":"L04", "x":4, "y":0}, - {"label":"L05", "x":5, "y":0}, - {"label":"R00", "x":11, "y":0}, - {"label":"R01", "x":12, "y":0}, - {"label":"R02", "x":13, "y":0}, - {"label":"R03", "x":14, "y":0}, - {"label":"R04", "x":15, "y":0}, - {"label":"R05", "x":16, "y":0}, - {"label":"L10", "x":0, "y":1}, - {"label":"L11", "x":1, "y":1}, - {"label":"L12", "x":2, "y":1}, - {"label":"L13", "x":3, "y":1}, - {"label":"L14", "x":4, "y":1}, - {"label":"L15", "x":5, "y":1}, - {"label":"R10", "x":11, "y":1}, - {"label":"R11", "x":12, "y":1}, - {"label":"R12", "x":13, "y":1}, - {"label":"R13", "x":14, "y":1}, - {"label":"R14", "x":15, "y":1}, - {"label":"R15", "x":16, "y":1}, - {"label":"L20", "x":0, "y":2}, - {"label":"L21", "x":1, "y":2}, - {"label":"L22", "x":2, "y":2}, - {"label":"L23", "x":3, "y":2}, - {"label":"L24", "x":4, "y":2}, - {"label":"L25", "x":5, "y":2}, - {"label":"R20", "x":11, "y":2}, - {"label":"R21", "x":12, "y":2}, - {"label":"R22", "x":13, "y":2}, - {"label":"R23", "x":14, "y":2}, - {"label":"R24", "x":15, "y":2}, - {"label":"R25", "x":16, "y":2}, - {"label":"L32", "x":2, "y":3}, - {"label":"L33", "x":3, "y":3}, - {"label":"R32", "x":13, "y":3}, - {"label":"R33", "x":14, "y":3}, - {"label":"L34", "x":4, "y":4}, - {"label":"L35", "x":5, "y":4}, - {"label":"R30", "x":11, "y":4}, - {"label":"R31", "x":12, "y":4}, - {"label":"L44", "x":6, "y":5}, - {"label":"L45", "x":7, "y":5}, - {"label":"R40", "x":9, "y":5}, - {"label":"R41", "x":10, "y":5}, - {"label":"L42", "x":6, "y":6}, - {"label":"L43", "x":7, "y":6}, - {"label":"R42", "x":9, "y":6}, - {"label":"R43", "x":10, "y":6} - ] + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + {"x": 15, "y": 0}, + {"x": 16, "y": 0}, + + {"x": 0, "y": 1}, + {"x": 1, "y": 1}, + {"x": 2, "y": 1}, + {"x": 3, "y": 1}, + {"x": 4, "y": 1}, + {"x": 5, "y": 1}, + + {"x": 11, "y": 1}, + {"x": 12, "y": 1}, + {"x": 13, "y": 1}, + {"x": 14, "y": 1}, + {"x": 15, "y": 1}, + {"x": 16, "y": 1}, + + {"x": 0, "y": 2}, + {"x": 1, "y": 2}, + {"x": 2, "y": 2}, + {"x": 3, "y": 2}, + {"x": 4, "y": 2}, + {"x": 5, "y": 2}, + + {"x": 11, "y": 2}, + {"x": 12, "y": 2}, + {"x": 13, "y": 2}, + {"x": 14, "y": 2}, + {"x": 15, "y": 2}, + {"x": 16, "y": 2}, + + {"x": 2, "y": 3}, + {"x": 3, "y": 3}, + + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 4, "y": 4}, + {"x": 5, "y": 4}, + + {"x": 11, "y": 4}, + {"x": 12, "y": 4}, + + {"x": 6, "y": 5}, + {"x": 7, "y": 5}, + + {"x": 9, "y": 5}, + {"x": 10, "y": 5}, + + {"x": 6, "y": 6}, + {"x": 7, "y": 6}, + + {"x": 9, "y": 6}, + {"x": 10, "y": 6} + ] } } } diff --git a/keyboards/handwired/dactyl_manuform/4x6/keymaps/default/config.h b/keyboards/handwired/dactyl_manuform/4x6/keymaps/default/config.h index 1fc2c617f606..18320c0952aa 100644 --- a/keyboards/handwired/dactyl_manuform/4x6/keymaps/default/config.h +++ b/keyboards/handwired/dactyl_manuform/4x6/keymaps/default/config.h @@ -22,10 +22,10 @@ along with this program. If not, see . /* Use I2C or Serial, not both */ #define USE_SERIAL -// #define USE_I2C +//#define USE_I2C /* Select hand configuration */ +//#define MASTER_LEFT +//#define MASTER_RIGHT -// #define MASTER_LEFT -// #define MASTER_RIGHT #define EE_HANDS diff --git a/keyboards/handwired/dactyl_manuform/4x6/keymaps/default/keymap.c b/keyboards/handwired/dactyl_manuform/4x6/keymaps/default/keymap.c index 52ddfad03850..999cc30118e8 100644 --- a/keyboards/handwired/dactyl_manuform/4x6/keymaps/default/keymap.c +++ b/keyboards/handwired/dactyl_manuform/4x6/keymaps/default/keymap.c @@ -1,14 +1,9 @@ #include QMK_KEYBOARD_H - #define _BASE 0 #define _RAISE 1 #define _LOWER 2 -// Fillers to make layering more clear - -#define ____ KC_TRNS - #define SFT_ESC SFT_T(KC_ESC) #define CTL_BSPC CTL_T(KC_BSPC) #define ALT_SPC ALT_T(KC_SPC) @@ -25,61 +20,58 @@ #define LOWER MO(_LOWER) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base (qwerty) + * +-----------------------------------------+ +-----------------------------------------+ + * | ESC | q | w | e | r | t | | y | u | i | o | p | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | TAB | a | s | d | f | g | | h | j | k | l | ; | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | SHFT | z | x | c | v | b | | n | m | , | . | / | | + * +------+------+------+------+-------------+ +-------------+------+------+------+------+ + * | [ | ] | | | | + * +-------------+-------------+ +-------------+-------------+ + * | | | | | | + * |------+------| |------+------| + * | | | | | | + * +-------------+ +-------------+ + * +-------------+ +-------------+ + * | | | | | | + * |------+------| |------+------| + * | | | | | | + * +-------------+ +-------------+ + */ + [_BASE] = LAYOUT( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS, + KC_LBRC, KC_RBRC, KC_PLUS, KC_EQL, + RAISE, KC_SPC, KC_ENT, LOWER, + KC_TAB, KC_HOME, KC_END, KC_DEL, + KC_BSPC, KC_GRV, KC_LGUI, KC_LALT + ), -/* Base (qwerty) - * +-----------------------------------------+ +-----------------------------------------+ - * | ESC | q | w | e | r | t | | y | u | i | o | p | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | TAB | a | s | d | f | g | | h | j | k | l | ; | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | SHFT | z | x | c | v | b | | n | m | , | . | / | | - * +------+------+------+------+-------------+ +-------------+------+------+------+------+ - * | [ | ] | | | | - * +-------------+-------------+ +-------------+-------------+ - * | | | | | | - * |------+------| |------+------| - * | | | | | | - * +-------------+ +-------------+ - * +-------------+ +-------------+ - * | | | | | | - * |------+------| |------+------| - * | | | | | | - * +-------------+ +-------------+ - */ + [_LOWER] = LAYOUT( + _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, KC_P7, KC_P8, KC_P9, RESET, KC_PLUS, + _______, KC_HOME, KC_PGUP, KC_PGDN, KC_END , KC_LPRN, KC_RPRN, KC_P4, KC_P5, KC_P6, KC_MINS, KC_PIPE, + _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, KC_EQL, KC_UNDS, + _______, KC_PSCR, _______, KC_P0, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______ + ), -[_BASE] = LAYOUT( \ - KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, \ - KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, \ - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_BSLASH, \ - KC_LBRC,KC_RBRC, KC_PLUS,KC_EQL, \ - RAISE, KC_SPC, KC_ENT, LOWER, \ - KC_TAB, KC_HOME, KC_END, KC_DEL, \ - KC_BSPC,KC_GRV, KC_LGUI,KC_LALT \ -), - -[_LOWER] = LAYOUT( - _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7, KC_P8, KC_P9, RESET, KC_PLUS, \ - _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4, KC_P5, KC_P6, KC_MINS,KC_PIPE, \ - _______,_______,_______,_______,_______,_______, _______, KC_P1, KC_P2, KC_P3, KC_EQL, KC_UNDS, \ - _______,KC_PSCR, _______, KC_P0, \ - _______,_______, _______,_______, \ - _______,_______, _______,_______, \ - _______,_______, _______,_______ \ -), - -[_RAISE] = LAYOUT( - _______,RESET, _______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NLCK,KC_INS, KC_SLCK,KC_MUTE, \ - _______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU, \ - _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD, \ - _______,_______, KC_EQL, _______, \ - _______,_______, _______,_______, \ - _______,_______, _______,_______, \ - _______,_______, _______,_______ \ -) + [_RAISE] = LAYOUT( + _______, RESET, _______, _______, _______, KC_LBRC, KC_RBRC, _______, KC_NLCK, KC_INS, KC_SLCK, KC_MUTE, + _______, KC_LEFT, KC_UP , KC_DOWN, KC_RGHT, KC_LPRN, KC_RPRN, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_VOLU, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, + _______, _______, KC_EQL, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______ + ) }; - void persistent_default_layer_set(uint16_t default_layer) { - eeconfig_update_default_layer(default_layer); - default_layer_set(default_layer); + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); } diff --git a/keyboards/handwired/dactyl_manuform/4x6/rules.mk b/keyboards/handwired/dactyl_manuform/4x6/rules.mk index 7508070515e2..6d1c7c1f67f7 100644 --- a/keyboards/handwired/dactyl_manuform/4x6/rules.mk +++ b/keyboards/handwired/dactyl_manuform/4x6/rules.mk @@ -1,20 +1,20 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina # 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 +# change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +SPLIT_KEYBOARD = yes diff --git a/keyboards/handwired/dactyl_manuform/5x6/5x6.c b/keyboards/handwired/dactyl_manuform/5x6/5x6.c index 68fceffd923e..0e9d5481c475 100644 --- a/keyboards/handwired/dactyl_manuform/5x6/5x6.c +++ b/keyboards/handwired/dactyl_manuform/5x6/5x6.c @@ -1,23 +1 @@ #include "5x6.h" - - -#ifdef SSD1306OLED -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - led_set_user(usb_led); -} -#endif - -void matrix_init_kb(void) { - - // // green led on - // DDRD |= (1<<5); - // PORTD &= ~(1<<5); - - // // orange led on - // DDRB |= (1<<0); - // PORTB &= ~(1<<0); - - matrix_init_user(); -}; - diff --git a/keyboards/handwired/dactyl_manuform/5x6/5x6.h b/keyboards/handwired/dactyl_manuform/5x6/5x6.h index 5292ca0972ee..606a2134929c 100644 --- a/keyboards/handwired/dactyl_manuform/5x6/5x6.h +++ b/keyboards/handwired/dactyl_manuform/5x6/5x6.h @@ -1,38 +1,30 @@ #pragma once #include "dactyl_manuform.h" -#include "quantum.h" -#ifdef USE_I2C -#include -#ifdef __AVR__ - #include - #include -#endif -#endif +#define XXX KC_NO -#define LAYOUT_5x6(\ - L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ - L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ - L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ - L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \ - L42, L43, R42, R43, \ - L44, L45, R40, R41, \ - L54, L55, R50, R51, \ - L52, L53, R52, R53 \ - ) \ - { \ - { L00, L01, L02, L03, L04, L05 }, \ - { L10, L11, L12, L13, L14, L15 }, \ - { L20, L21, L22, L23, L24, L25 }, \ - { L30, L31, L32, L33, L34, L35 }, \ - { KC_NO, KC_NO, L42, L43, L44, L45 }, \ - { KC_NO, KC_NO, L52, L53, L54, L55 }, \ - \ - { R00, R01, R02, R03, R04, R05 }, \ - { R10, R11, R12, R13, R14, R15 }, \ - { R20, R21, R22, R23, R24, R25 }, \ - { R30, R31, R32, R33, R34, R35 }, \ - { R40, R41, R42, R43, KC_NO, KC_NO }, \ - { R50, R51, R52, R53, KC_NO, KC_NO } \ +#define LAYOUT_5x6( \ + L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ + L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ + L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \ + L42, L43, R42, R43, \ + L44, L45, R40, R41, \ + L54, L55, R50, R51, \ + L52, L53, R52, R53 \ +) { \ + { L00, L01, L02, L03, L04, L05 }, \ + { L10, L11, L12, L13, L14, L15 }, \ + { L20, L21, L22, L23, L24, L25 }, \ + { L30, L31, L32, L33, L34, L35 }, \ + { XXX, XXX, L42, L43, L44, L45 }, \ + { XXX, XXX, L52, L53, L54, L55 }, \ +\ + { R00, R01, R02, R03, R04, R05 }, \ + { R10, R11, R12, R13, R14, R15 }, \ + { R20, R21, R22, R23, R24, R25 }, \ + { R30, R31, R32, R33, R34, R35 }, \ + { R40, R41, R42, R43, XXX, XXX }, \ + { R50, R51, R52, R53, XXX, XXX } \ } diff --git a/keyboards/handwired/dactyl_manuform/5x6/config.h b/keyboards/handwired/dactyl_manuform/5x6/config.h index dc395d868a1b..6b93da95880d 100644 --- a/keyboards/handwired/dactyl_manuform/5x6/config.h +++ b/keyboards/handwired/dactyl_manuform/5x6/config.h @@ -20,9 +20,9 @@ along with this program. If not, see . #include "config_common.h" -#define PRODUCT_ID 0x3536 -#define DEVICE_VER 0x0001 -#define PRODUCT Dactyl-Manuform (5x6) +#define PRODUCT_ID 0x3536 +#define DEVICE_VER 0x0001 +#define PRODUCT Dactyl-Manuform (5x6) /* key matrix size */ // Rows are doubled-up diff --git a/keyboards/handwired/dactyl_manuform/5x6/info.json b/keyboards/handwired/dactyl_manuform/5x6/info.json index 14afc704cd2e..d5778f04552b 100644 --- a/keyboards/handwired/dactyl_manuform/5x6/info.json +++ b/keyboards/handwired/dactyl_manuform/5x6/info.json @@ -2,75 +2,88 @@ "keyboard_name": "Dactyl Manuform 5x6", "url": "", "maintainer": "qmk", - "width": 17, - "height": 8, "layouts": { "LAYOUT_5x6": { "layout": [ - {"label":"L00", "x":0, "y":0}, - {"label":"L01", "x":1, "y":0}, - {"label":"L02", "x":2, "y":0}, - {"label":"L03", "x":3, "y":0}, - {"label":"L04", "x":4, "y":0}, - {"label":"L05", "x":5, "y":0}, - {"label":"R00", "x":11, "y":0}, - {"label":"R01", "x":12, "y":0}, - {"label":"R02", "x":13, "y":0}, - {"label":"R03", "x":14, "y":0}, - {"label":"R04", "x":15, "y":0}, - {"label":"R05", "x":16, "y":0}, - {"label":"L10", "x":0, "y":1}, - {"label":"L11", "x":1, "y":1}, - {"label":"L12", "x":2, "y":1}, - {"label":"L13", "x":3, "y":1}, - {"label":"L14", "x":4, "y":1}, - {"label":"L15", "x":5, "y":1}, - {"label":"R10", "x":11, "y":1}, - {"label":"R11", "x":12, "y":1}, - {"label":"R12", "x":13, "y":1}, - {"label":"R13", "x":14, "y":1}, - {"label":"R14", "x":15, "y":1}, - {"label":"R15", "x":16, "y":1}, - {"label":"L20", "x":0, "y":2}, - {"label":"L21", "x":1, "y":2}, - {"label":"L22", "x":2, "y":2}, - {"label":"L23", "x":3, "y":2}, - {"label":"L24", "x":4, "y":2}, - {"label":"L25", "x":5, "y":2}, - {"label":"R20", "x":11, "y":2}, - {"label":"R21", "x":12, "y":2}, - {"label":"R22", "x":13, "y":2}, - {"label":"R23", "x":14, "y":2}, - {"label":"R24", "x":15, "y":2}, - {"label":"R25", "x":16, "y":2}, - {"label":"L30", "x":0, "y":3}, - {"label":"L31", "x":1, "y":3}, - {"label":"L32", "x":2, "y":3}, - {"label":"L33", "x":3, "y":3}, - {"label":"L34", "x":4, "y":3}, - {"label":"L35", "x":5, "y":3}, - {"label":"R30", "x":11, "y":3}, - {"label":"R31", "x":12, "y":3}, - {"label":"R32", "x":13, "y":3}, - {"label":"R33", "x":14, "y":3}, - {"label":"R34", "x":15, "y":3}, - {"label":"R35", "x":16, "y":3}, - {"label":"L42", "x":2, "y":4}, - {"label":"L43", "x":3, "y":4}, - {"label":"R42", "x":13, "y":4}, - {"label":"R43", "x":14, "y":4}, - {"label":"L44", "x":4, "y":5}, - {"label":"L45", "x":5, "y":5}, - {"label":"R40", "x":11, "y":5}, - {"label":"R41", "x":12, "y":5}, - {"label":"L54", "x":6, "y":6}, - {"label":"L55", "x":7, "y":6}, - {"label":"R50", "x":9, "y":6}, - {"label":"R51", "x":10, "y":6}, - {"label":"L52", "x":6, "y":7}, - {"label":"L53", "x":7, "y":7}, - {"label":"R52", "x":9, "y":7}, - {"label":"R53", "x":10, "y":7} + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + {"x": 15, "y": 0}, + {"x": 16, "y": 0}, + + {"x": 0, "y": 1}, + {"x": 1, "y": 1}, + {"x": 2, "y": 1}, + {"x": 3, "y": 1}, + {"x": 4, "y": 1}, + {"x": 5, "y": 1}, + + {"x": 11, "y": 1}, + {"x": 12, "y": 1}, + {"x": 13, "y": 1}, + {"x": 14, "y": 1}, + {"x": 15, "y": 1}, + {"x": 16, "y": 1}, + + {"x": 0, "y": 2}, + {"x": 1, "y": 2}, + {"x": 2, "y": 2}, + {"x": 3, "y": 2}, + {"x": 4, "y": 2}, + {"x": 5, "y": 2}, + + {"x": 11, "y": 2}, + {"x": 12, "y": 2}, + {"x": 13, "y": 2}, + {"x": 14, "y": 2}, + {"x": 15, "y": 2}, + {"x": 16, "y": 2}, + + {"x": 0, "y": 3}, + {"x": 1, "y": 3}, + {"x": 2, "y": 3}, + {"x": 3, "y": 3}, + {"x": 4, "y": 3}, + {"x": 5, "y": 3}, + + {"x": 11, "y": 3}, + {"x": 12, "y": 3}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + {"x": 15, "y": 3}, + {"x": 16, "y": 3}, + + {"x": 2, "y": 4}, + {"x": 3, "y": 4}, + + {"x": 13, "y": 4}, + {"x": 14, "y": 4}, + + {"x": 4, "y": 5}, + {"x": 5, "y": 5}, + + {"x": 11, "y": 5}, + {"x": 12, "y": 5}, + + {"x": 6, "y": 6}, + {"x": 7, "y": 6}, + + {"x": 9, "y": 6}, + {"x": 10, "y": 6}, + + {"x": 6, "y": 7}, + {"x": 7, "y": 7}, + + {"x": 9, "y": 7}, + {"x": 10, "y": 7} ] } } diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/default/config.h b/keyboards/handwired/dactyl_manuform/5x6/keymaps/default/config.h index 29ab59ad66b4..5a20f9473fec 100644 --- a/keyboards/handwired/dactyl_manuform/5x6/keymaps/default/config.h +++ b/keyboards/handwired/dactyl_manuform/5x6/keymaps/default/config.h @@ -15,13 +15,11 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ - #pragma once - #define USE_SERIAL #define MASTER_LEFT -// #define MASTER_RIGHT +//#define MASTER_RIGHT + //#define EE_HANDS -// Rows are doubled-up diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/default/keymap.c b/keyboards/handwired/dactyl_manuform/5x6/keymaps/default/keymap.c index 0910faf899a1..5bb5836fbc3c 100644 --- a/keyboards/handwired/dactyl_manuform/5x6/keymaps/default/keymap.c +++ b/keyboards/handwired/dactyl_manuform/5x6/keymaps/default/keymap.c @@ -1,8 +1,5 @@ -/* A standard layout for the Dactyl Manuform 5x6 Keyboard */ - #include QMK_KEYBOARD_H - #define _QWERTY 0 #define _LOWER 1 #define _RAISE 2 @@ -11,39 +8,37 @@ #define LOWER MO(_LOWER) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_QWERTY] = LAYOUT_5x6( - KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 ,KC_BSPC, - KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_MINS, - KC_LSFT, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L ,KC_SCLN,KC_QUOT, - KC_LCTL, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_BSLASH, - KC_LBRC,KC_RBRC, KC_PLUS, KC_EQL, - RAISE,KC_SPC, KC_ENT, LOWER, - KC_TAB,KC_HOME, KC_END, KC_DEL, - KC_BSPC, KC_GRV, KC_LGUI, KC_LALT - ), - - [_LOWER] = LAYOUT_5x6( - - KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL, - _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS, - _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE, - _______,_______,_______,_______,_______,_______, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS, - _______,KC_PSCR, _______, KC_P0, - _______,_______, _______,_______, - _______,_______, _______,_______, - _______,_______, _______,_______ - - ), - - [_RAISE] = LAYOUT_5x6( - KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 , - _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NLCK,KC_INS ,KC_SLCK,KC_MUTE, - _______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU, - _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD, - _______,_______, KC_EQL ,_______, - _______,_______, _______,_______, - _______,_______, _______,_______, - _______,_______, _______,_______ - ), + [_QWERTY] = LAYOUT_5x6( + KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 ,KC_BSPC, + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_MINS, + KC_LSFT, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L ,KC_SCLN,KC_QUOT, + KC_LCTL, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_BSLASH, + KC_LBRC,KC_RBRC, KC_PLUS, KC_EQL, + RAISE,KC_SPC, KC_ENT, LOWER, + KC_TAB,KC_HOME, KC_END, KC_DEL, + KC_BSPC, KC_GRV, KC_LGUI, KC_LALT + ), + + [_LOWER] = LAYOUT_5x6( + KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL, + _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS, + _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE, + _______,_______,_______,_______,_______,_______, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS, + _______,KC_PSCR, _______, KC_P0, + _______,_______, _______,_______, + _______,_______, _______,_______, + _______,_______, _______,_______ + + ), + + [_RAISE] = LAYOUT_5x6( + KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 , + _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NLCK,KC_INS ,KC_SLCK,KC_MUTE, + _______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU, + _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD, + _______,_______, KC_EQL ,_______, + _______,_______, _______,_______, + _______,_______, _______,_______, + _______,_______, _______,_______ + ) }; diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/config.h b/keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/config.h new file mode 100644 index 000000000000..5a848d26e53b --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/config.h @@ -0,0 +1,26 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . + +#pragma once + +#define XXX KC_NO + +#define LAYOUT_miryoku(\ + 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, \ + N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ +) \ +LAYOUT_5x6( \ +XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, \ +XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX, \ +XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX, \ +XXX, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, XXX, \ + XXX, XXX, XXX, XXX, \ + K32, K33, K36, K37, \ + K34, XXX, XXX, K35, \ + XXX, XXX, XXX, XXX \ +) diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/keymap.c new file mode 100644 index 000000000000..7c5717a0fee0 --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/keymap.c @@ -0,0 +1,5 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/swedish/keymap.c b/keyboards/handwired/dactyl_manuform/5x6/keymaps/swedish/keymap.c index f8dfb2718c90..de931feabde6 100644 --- a/keyboards/handwired/dactyl_manuform/5x6/keymaps/swedish/keymap.c +++ b/keyboards/handwired/dactyl_manuform/5x6/keymaps/swedish/keymap.c @@ -16,16 +16,13 @@ enum dactyl_layers { #define KILL LGUI(LSFT(KC_C)) #define OPEN LGUI(KC_P) #define KC_QSM LSFT(SE_PLUS) -#define KC_AA SE_AA -#define KC_AE SE_AE -#define KC_OE SE_OSLH const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_QWERTY] = LAYOUT_5x6( - KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , SE_APOS, - KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_AA , - KC_LSFT, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_OE , KC_AE , + KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , SE_QUOT, + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , SE_ARNG, + KC_LSFT, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , SE_ODIA, SE_ADIA, KC_LCTL, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , SE_SLSH, SE_MINS, KC_EXLM, KC_QSM , SE_PLUS, SE_EQL , RAISE , KC_SPC , KC_ENT , LOWER , @@ -37,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { SE_TILD, KC_EXLM, SE_AT , KC_HASH, SE_DLR , KC_PERC, SE_CIRC, SE_AMPR, SE_ASTR, SE_SLSH, SE_LPRN, SE_RPRN, SE_ACUT, _______, _______, _______, _______, _______, _______, _______, _______, _______, SE_LCBR, SE_RCBR, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, SE_LBRC, SE_RBRC, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, SE_LESS, SE_GRTR, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, SE_LABK, SE_RABK, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/handwired/dactyl_manuform/5x6/rules.mk b/keyboards/handwired/dactyl_manuform/5x6/rules.mk index 7508070515e2..6d1c7c1f67f7 100644 --- a/keyboards/handwired/dactyl_manuform/5x6/rules.mk +++ b/keyboards/handwired/dactyl_manuform/5x6/rules.mk @@ -1,20 +1,20 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina # 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 +# change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +SPLIT_KEYBOARD = yes diff --git a/keyboards/handwired/dactyl_manuform/5x6_2_5/5x6_2_5.h b/keyboards/handwired/dactyl_manuform/5x6_2_5/5x6_2_5.h index c41037ce6be9..790fdb069557 100644 --- a/keyboards/handwired/dactyl_manuform/5x6_2_5/5x6_2_5.h +++ b/keyboards/handwired/dactyl_manuform/5x6_2_5/5x6_2_5.h @@ -18,26 +18,27 @@ #include "dactyl_manuform.h" -#define LAYOUT_5x6_2_5(\ - L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ - L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ - L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ - L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \ - L40, L41, L42, L43, L44, L55, L53, R52, R50, R41, R42, R43, R44, R45, \ - L54, L52, R53, R51 \ - ) \ - { \ - { L00, L01, L02, L03, L04, L05 }, \ - { L10, L11, L12, L13, L14, L15 }, \ - { L20, L21, L22, L23, L24, L25 }, \ - { L30, L31, L32, L33, L34, L35 }, \ - { L40, L41, L42, L43, L44, KC_NO }, \ - { KC_NO, KC_NO, L52, L53, L54, L55 }, \ - \ - { R00, R01, R02, R03, R04, R05 }, \ - { R10, R11, R12, R13, R14, R15 }, \ - { R20, R21, R22, R23, R24, R25 }, \ - { R30, R31, R32, R33, R34, R35 }, \ - { KC_NO, R41, R42, R43, R44, R45 }, \ - { R50, R51, R52, R53, KC_NO, KC_NO } \ +#define XXX KC_NO + +#define LAYOUT_5x6_2_5( \ + L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ + L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ + L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \ + L40, L41, L42, L43, L44, L55, L53, R52, R50, R41, R42, R43, R44, R45, \ + L54, L52, R53, R51 \ +) { \ + { L00, L01, L02, L03, L04, L05 }, \ + { L10, L11, L12, L13, L14, L15 }, \ + { L20, L21, L22, L23, L24, L25 }, \ + { L30, L31, L32, L33, L34, L35 }, \ + { L40, L41, L42, L43, L44, XXX }, \ + { XXX, XXX, L52, L53, L54, L55 }, \ +\ + { R00, R01, R02, R03, R04, R05 }, \ + { R10, R11, R12, R13, R14, R15 }, \ + { R20, R21, R22, R23, R24, R25 }, \ + { R30, R31, R32, R33, R34, R35 }, \ + { XXX, R41, R42, R43, R44, R45 }, \ + { R50, R51, R52, R53, XXX, XXX } \ } diff --git a/keyboards/handwired/dactyl_manuform/5x6_2_5/config.h b/keyboards/handwired/dactyl_manuform/5x6_2_5/config.h index 029f1723b583..cb147654ba03 100644 --- a/keyboards/handwired/dactyl_manuform/5x6_2_5/config.h +++ b/keyboards/handwired/dactyl_manuform/5x6_2_5/config.h @@ -19,18 +19,14 @@ along with this program. If not, see . #include "config_common.h" -#define PRODUCT_ID 0x3536 -#define DEVICE_VER 0x0003 -#define PRODUCT Dactyl-Manuform (5x6+2) -// #define PRODUCT Dactyl-Manuform (5x6+2) BLE +#define PRODUCT_ID 0x3536 +#define DEVICE_VER 0x0003 +#define PRODUCT Dactyl-Manuform (5x6+2) /* key matrix size */ #define MATRIX_ROWS 12 #define MATRIX_COLS 6 -// wiring of each half -// ../../../../docs/proton_c_conversion.md - // left half pro-mirco #define MATRIX_COL_PINS { D4, C6, D7, E6, B4, B5 } #define MATRIX_ROW_PINS { F6, F7, B1, B3, B2, B6 } @@ -38,9 +34,6 @@ along with this program. If not, see . // // 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/dactyl_manuform/5x6_2_5/info.json b/keyboards/handwired/dactyl_manuform/5x6_2_5/info.json index ad227d5f5dba..6c4f6b2fcadb 100644 --- a/keyboards/handwired/dactyl_manuform/5x6_2_5/info.json +++ b/keyboards/handwired/dactyl_manuform/5x6_2_5/info.json @@ -2,84 +2,88 @@ "keyboard_name": "Dactyl Manuform 5x6 2 extra keys and 5 thumb keys", "url": "", "maintainer": "jceb", - "width": 17, - "height": 6, "layouts": { "LAYOUT_5x6_2_5": { "layout": [ - {"label":"L00", "x":0, "y":0}, - {"label":"L01", "x":1, "y":0}, - {"label":"L02", "x":2, "y":0}, - {"label":"L03", "x":3, "y":0}, - {"label":"L04", "x":4, "y":0}, - {"label":"L05", "x":5, "y":0}, - {"label":"R00", "x":11, "y":0}, - {"label":"R01", "x":12, "y":0}, - {"label":"R02", "x":13, "y":0}, - {"label":"R03", "x":14, "y":0}, - {"label":"R04", "x":15, "y":0}, - {"label":"R05", "x":16, "y":0}, + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, - {"label":"L10", "x":0, "y":1}, - {"label":"L11", "x":1, "y":1}, - {"label":"L12", "x":2, "y":1}, - {"label":"L13", "x":3, "y":1}, - {"label":"L14", "x":4, "y":1}, - {"label":"L15", "x":5, "y":1}, - {"label":"R10", "x":11, "y":1}, - {"label":"R11", "x":12, "y":1}, - {"label":"R12", "x":13, "y":1}, - {"label":"R13", "x":14, "y":1}, - {"label":"R14", "x":15, "y":1}, - {"label":"R15", "x":16, "y":1}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + {"x": 15, "y": 0}, + {"x": 16, "y": 0}, - {"label":"L20", "x":0, "y":2}, - {"label":"L21", "x":1, "y":2}, - {"label":"L22", "x":2, "y":2}, - {"label":"L23", "x":3, "y":2}, - {"label":"L24", "x":4, "y":2}, - {"label":"L25", "x":5, "y":2}, - {"label":"R20", "x":11, "y":2}, - {"label":"R21", "x":12, "y":2}, - {"label":"R22", "x":13, "y":2}, - {"label":"R23", "x":14, "y":2}, - {"label":"R24", "x":15, "y":2}, - {"label":"R25", "x":16, "y":2}, + {"x": 0, "y": 1}, + {"x": 1, "y": 1}, + {"x": 2, "y": 1}, + {"x": 3, "y": 1}, + {"x": 4, "y": 1}, + {"x": 5, "y": 1}, - {"label":"L30", "x":0, "y":3}, - {"label":"L31", "x":1, "y":3}, - {"label":"L32", "x":2, "y":3}, - {"label":"L33", "x":3, "y":3}, - {"label":"L34", "x":4, "y":3}, - {"label":"L35", "x":5, "y":3}, - {"label":"R30", "x":11, "y":3}, - {"label":"R31", "x":12, "y":3}, - {"label":"R32", "x":13, "y":3}, - {"label":"R33", "x":14, "y":3}, - {"label":"R34", "x":15, "y":3}, - {"label":"R35", "x":16, "y":3}, + {"x": 11, "y": 1}, + {"x": 12, "y": 1}, + {"x": 13, "y": 1}, + {"x": 14, "y": 1}, + {"x": 15, "y": 1}, + {"x": 16, "y": 1}, - {"label":"L40", "x":0, "y":4}, - {"label":"L41", "x":1, "y":4}, - {"label":"L42", "x":2, "y":4}, - {"label":"L43", "x":3, "y":4}, - {"label":"L44", "x":5, "y":4}, - {"label":"L45", "x":6, "y":4}, - {"label":"L53", "x":7, "y":4}, + {"x": 0, "y": 2}, + {"x": 1, "y": 2}, + {"x": 2, "y": 2}, + {"x": 3, "y": 2}, + {"x": 4, "y": 2}, + {"x": 5, "y": 2}, - {"label":"R52", "x":9, "y":4}, - {"label":"R40", "x":10, "y":4}, - {"label":"R41", "x":11, "y":4}, - {"label":"R42", "x":13, "y":4}, - {"label":"R43", "x":14, "y":4}, - {"label":"R44", "x":15, "y":4}, - {"label":"R45", "x":16, "y":4}, + {"x": 11, "y": 2}, + {"x": 12, "y": 2}, + {"x": 13, "y": 2}, + {"x": 14, "y": 2}, + {"x": 15, "y": 2}, + {"x": 16, "y": 2}, - {"label":"L54", "x":6, "y":5}, - {"label":"L52", "x":7, "y":5}, + {"x": 0, "y": 3}, + {"x": 1, "y": 3}, + {"x": 2, "y": 3}, + {"x": 3, "y": 3}, + {"x": 4, "y": 3}, + {"x": 5, "y": 3}, - {"label":"R53", "x":9, "y":5}, - {"label":"R51", "x":10, "y":5} + {"x": 11, "y": 3}, + {"x": 12, "y": 3}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + {"x": 15, "y": 3}, + {"x": 16, "y": 3}, + + {"x": 0, "y": 4}, + {"x": 1, "y": 4}, + {"x": 2, "y": 4}, + {"x": 3, "y": 4}, + + {"x": 5, "y": 4}, + {"x": 6, "y": 4}, + {"x": 7, "y": 4}, + + {"x": 9, "y": 4}, + {"x": 10, "y": 4}, + {"x": 11, "y": 4}, + + {"x": 13, "y":4}, + {"x": 14, "y":4}, + {"x": 15, "y":4}, + {"x": 16, "y":4}, + + {"x": 6, "y": 5}, + {"x": 7, "y": 5}, + + {"x": 9, "y": 5}, + {"x": 10, "y": 5} ] } } diff --git a/keyboards/handwired/dactyl_manuform/5x6_2_5/rules.mk b/keyboards/handwired/dactyl_manuform/5x6_2_5/rules.mk index d5ba60f2ad5d..10c03c7bc757 100644 --- a/keyboards/handwired/dactyl_manuform/5x6_2_5/rules.mk +++ b/keyboards/handwired/dactyl_manuform/5x6_2_5/rules.mk @@ -1,14 +1,20 @@ -BOOTMAGIC_ENABLE = lite -COMMAND_ENABLE = no +# MCU name +MCU = atmega32u4 -# # Pro-Micro -# NKRO_ENABLE = yes +# Bootloader selection +BOOTLOADER = caterina -# # # Adafruit Feather -# # NKRO_ENABLE = no -# # # Processor frequency -# F_CPU = 8000000 -# F_USB = $(F_CPU) -# # # BLUETOOTH_ENABLE = no -# # BLUETOOTH = AdafruitBLE -# # CONSOLE_DEBUG = yes +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +SPLIT_KEYBOARD = yes diff --git a/keyboards/handwired/dactyl_manuform/5x6_5/5x6_5.c b/keyboards/handwired/dactyl_manuform/5x6_5/5x6_5.c index bacda3640e0b..e4ad432ccc76 100644 --- a/keyboards/handwired/dactyl_manuform/5x6_5/5x6_5.c +++ b/keyboards/handwired/dactyl_manuform/5x6_5/5x6_5.c @@ -1,2 +1 @@ #include "5x6_5.h" - diff --git a/keyboards/handwired/dactyl_manuform/5x6_5/5x6_5.h b/keyboards/handwired/dactyl_manuform/5x6_5/5x6_5.h index deb288a1f96d..794b0be9fe93 100644 --- a/keyboards/handwired/dactyl_manuform/5x6_5/5x6_5.h +++ b/keyboards/handwired/dactyl_manuform/5x6_5/5x6_5.h @@ -2,26 +2,27 @@ #include "dactyl_manuform.h" -#define LAYOUT_5x6_5(\ - L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ - L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ - L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ - L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \ - L42, L43, L44, L55, L53, R52, R50, R41, R42, R43, \ - L54, L52, R53, R51 \ - ) \ - { \ - { L00, L01, L02, L03, L04, L05 }, \ - { L10, L11, L12, L13, L14, L15 }, \ - { L20, L21, L22, L23, L24, L25 }, \ - { L30, L31, L32, L33, L34, L35 }, \ - { KC_NO, KC_NO, L42, L43, L44, KC_NO }, \ - { KC_NO, KC_NO, L52, L53, L54, L55 }, \ - \ - { R00, R01, R02, R03, R04, R05 }, \ - { R10, R11, R12, R13, R14, R15 }, \ - { R20, R21, R22, R23, R24, R25 }, \ - { R30, R31, R32, R33, R34, R35 }, \ - { KC_NO, R41, R42, R43, KC_NO, KC_NO }, \ - { R50, R51, R52, R53, KC_NO, KC_NO } \ +#define XXX KC_NO + +#define LAYOUT_5x6_5( \ + L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ + L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ + L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \ + L42, L43, L44, L55, L53, R52, R50, R41, R42, R43, \ + L54, L52, R53, R51 \ +) { \ + { L00, L01, L02, L03, L04, L05 }, \ + { L10, L11, L12, L13, L14, L15 }, \ + { L20, L21, L22, L23, L24, L25 }, \ + { L30, L31, L32, L33, L34, L35 }, \ + { XXX, XXX, L42, L43, L44, XXX }, \ + { XXX, XXX, L52, L53, L54, L55 }, \ +\ + { R00, R01, R02, R03, R04, R05 }, \ + { R10, R11, R12, R13, R14, R15 }, \ + { R20, R21, R22, R23, R24, R25 }, \ + { R30, R31, R32, R33, R34, R35 }, \ + { XXX, R41, R42, R43, XXX, XXX }, \ + { R50, R51, R52, R53, XXX, XXX } \ } diff --git a/keyboards/handwired/dactyl_manuform/5x6_5/config.h b/keyboards/handwired/dactyl_manuform/5x6_5/config.h index 1e68b6df0163..031ccf88d74b 100644 --- a/keyboards/handwired/dactyl_manuform/5x6_5/config.h +++ b/keyboards/handwired/dactyl_manuform/5x6_5/config.h @@ -20,9 +20,9 @@ along with this program. If not, see . #include "config_common.h" -#define PRODUCT_ID 0x3536 -#define DEVICE_VER 0x0002 -#define PRODUCT Dactyl-Manuform (5x6) +#define PRODUCT_ID 0x3536 +#define DEVICE_VER 0x0002 +#define PRODUCT Dactyl-Manuform (5x6) /* key matrix size */ // Rows are doubled-up @@ -30,7 +30,6 @@ along with this program. If not, see . #define MATRIX_COLS 6 // wiring of each half -// ../../../../docs/proton_c_conversion.md #define MATRIX_COL_PINS { D4, C6, D7, E6, B4, B5 } #define MATRIX_ROW_PINS { F6, F7, B1, B3, B2, B6 } diff --git a/keyboards/handwired/dactyl_manuform/5x6_5/info.json b/keyboards/handwired/dactyl_manuform/5x6_5/info.json index 3e9b66a6a97e..7bcbf6581242 100644 --- a/keyboards/handwired/dactyl_manuform/5x6_5/info.json +++ b/keyboards/handwired/dactyl_manuform/5x6_5/info.json @@ -2,80 +2,84 @@ "keyboard_name": "Dactyl Manuform 5x6 5 thumb keys", "url": "", "maintainer": "jceb", - "width": 17, - "height": 6, "layouts": { "LAYOUT_5x6_5": { "layout": [ - {"label":"L00", "x":0, "y":0}, - {"label":"L01", "x":1, "y":0}, - {"label":"L02", "x":2, "y":0}, - {"label":"L03", "x":3, "y":0}, - {"label":"L04", "x":4, "y":0}, - {"label":"L05", "x":5, "y":0}, - {"label":"R00", "x":11, "y":0}, - {"label":"R01", "x":12, "y":0}, - {"label":"R02", "x":13, "y":0}, - {"label":"R03", "x":14, "y":0}, - {"label":"R04", "x":15, "y":0}, - {"label":"R05", "x":16, "y":0}, + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, - {"label":"L10", "x":0, "y":1}, - {"label":"L11", "x":1, "y":1}, - {"label":"L12", "x":2, "y":1}, - {"label":"L13", "x":3, "y":1}, - {"label":"L14", "x":4, "y":1}, - {"label":"L15", "x":5, "y":1}, - {"label":"R10", "x":11, "y":1}, - {"label":"R11", "x":12, "y":1}, - {"label":"R12", "x":13, "y":1}, - {"label":"R13", "x":14, "y":1}, - {"label":"R14", "x":15, "y":1}, - {"label":"R15", "x":16, "y":1}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + {"x": 15, "y": 0}, + {"x": 16, "y": 0}, - {"label":"L20", "x":0, "y":2}, - {"label":"L21", "x":1, "y":2}, - {"label":"L22", "x":2, "y":2}, - {"label":"L23", "x":3, "y":2}, - {"label":"L24", "x":4, "y":2}, - {"label":"L25", "x":5, "y":2}, - {"label":"R20", "x":11, "y":2}, - {"label":"R21", "x":12, "y":2}, - {"label":"R22", "x":13, "y":2}, - {"label":"R23", "x":14, "y":2}, - {"label":"R24", "x":15, "y":2}, - {"label":"R25", "x":16, "y":2}, + {"x": 0, "y": 1}, + {"x": 1, "y": 1}, + {"x": 2, "y": 1}, + {"x": 3, "y": 1}, + {"x": 4, "y": 1}, + {"x": 5, "y": 1}, - {"label":"L30", "x":0, "y":3}, - {"label":"L31", "x":1, "y":3}, - {"label":"L32", "x":2, "y":3}, - {"label":"L33", "x":3, "y":3}, - {"label":"L34", "x":4, "y":3}, - {"label":"L35", "x":5, "y":3}, - {"label":"R30", "x":11, "y":3}, - {"label":"R31", "x":12, "y":3}, - {"label":"R32", "x":13, "y":3}, - {"label":"R33", "x":14, "y":3}, - {"label":"R34", "x":15, "y":3}, - {"label":"R35", "x":16, "y":3}, + {"x": 11, "y": 1}, + {"x": 12, "y": 1}, + {"x": 13, "y": 1}, + {"x": 14, "y": 1}, + {"x": 15, "y": 1}, + {"x": 16, "y": 1}, - {"label":"L42", "x":2, "y":4}, - {"label":"L43", "x":3, "y":4}, - {"label":"L44", "x":5, "y":4}, - {"label":"L45", "x":6, "y":4}, - {"label":"L53", "x":7, "y":4}, + {"x": 0, "y": 2}, + {"x": 1, "y": 2}, + {"x": 2, "y": 2}, + {"x": 3, "y": 2}, + {"x": 4, "y": 2}, + {"x": 5, "y": 2}, - {"label":"R52", "x":9, "y":4}, - {"label":"R40", "x":10, "y":4}, - {"label":"R41", "x":11, "y":4}, - {"label":"R42", "x":13, "y":4}, - {"label":"R43", "x":14, "y":4}, + {"x": 11, "y": 2}, + {"x": 12, "y": 2}, + {"x": 13, "y": 2}, + {"x": 14, "y": 2}, + {"x": 15, "y": 2}, + {"x": 16, "y": 2}, - {"label":"L54", "x":6, "y":5}, - {"label":"L52", "x":7, "y":5}, + {"x": 0, "y": 3}, + {"x": 1, "y": 3}, + {"x": 2, "y": 3}, + {"x": 3, "y": 3}, + {"x": 4, "y": 3}, + {"x": 5, "y": 3}, - {"label":"R53", "x":9, "y":5}, - {"label":"R51", "x":10, "y":5} + {"x": 11, "y": 3}, + {"x": 12, "y": 3}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + {"x": 15, "y": 3}, + {"x": 16, "y": 3}, + + {"x": 2, "y": 4}, + {"x": 3, "y": 4}, + + {"x": 5, "y": 4}, + {"x": 6, "y": 4}, + {"x": 7, "y": 4}, + + {"x": 9, "y": 4}, + {"x": 10, "y": 4}, + {"x": 11, "y": 4}, + + {"x": 13, "y": 4}, + {"x": 14, "y": 4}, + + {"x": 6, "y": 5}, + {"x": 7, "y": 5}, + + {"x": 9, "y": 5}, + {"x": 10, "y": 5} ] } } diff --git a/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/333fred/keymap.c b/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/333fred/keymap.c index fd8c16420e87..1e164081f26d 100644 --- a/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/333fred/keymap.c +++ b/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/333fred/keymap.c @@ -115,7 +115,7 @@ void write_quote(const char* data, const uint8_t num_lines) { } } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { render_logo(); oled_advance_page(/* clearPageRemainder */ true); @@ -559,6 +559,7 @@ void oled_task_user(void) { break; } } + return false; } bool encoder_update_user(uint8_t index, bool clockwise) { diff --git a/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/333fred/rules.mk b/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/333fred/rules.mk index 2bd6620c25bf..6e58ff5d15ed 100644 --- a/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/333fred/rules.mk +++ b/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/333fred/rules.mk @@ -1,4 +1,5 @@ KEY_LOCK_ENABLE = yes CONSOLE_ENABLE = no -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 ENCODER_ENABLE = yes diff --git a/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/rules.mk b/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/rules.mk index 5a8c85453a7d..0b9998141006 100644 --- a/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/rules.mk +++ b/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/rules.mk @@ -1,4 +1,4 @@ -BOOTMAGIC_ENABLE = lite +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite EXTRAKEY_ENABLE = yes COMMAND_ENABLE = yes MOUSEKEY_ENABLE = no diff --git a/keyboards/handwired/dactyl_manuform/5x6_5/rules.mk b/keyboards/handwired/dactyl_manuform/5x6_5/rules.mk index a20a3e7bd7ba..93cd4a6d9483 100644 --- a/keyboards/handwired/dactyl_manuform/5x6_5/rules.mk +++ b/keyboards/handwired/dactyl_manuform/5x6_5/rules.mk @@ -1,3 +1,20 @@ -BOOTMAGIC_ENABLE = lite -COMMAND_ENABLE = no -NKRO_ENABLE = yes +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 +SPLIT_KEYBOARD = yes diff --git a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/5x6_right_trackball.c b/keyboards/handwired/dactyl_manuform/5x6_right_trackball/5x6_right_trackball.c deleted file mode 100644 index 4048fb233c70..000000000000 --- a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/5x6_right_trackball.c +++ /dev/null @@ -1,228 +0,0 @@ -/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "5x6_right_trackball.h" - -#ifndef TRACKBALL_DPI_OPTIONS -# define TRACKBALL_DPI_OPTIONS { 1200, 1600, 2400 } -# ifndef TRACKBALL_DPI_DEFAULT -# define TRACKBALL_DPI_DEFAULT 1 -# endif -#endif -#ifndef TRACKBALL_DPI_DEFAULT -# define TRACKBALL_DPI_DEFAULT 0 -#endif - -keyboard_config_t keyboard_config; -uint16_t dpi_array[] = TRACKBALL_DPI_OPTIONS; -#define DPI_OPTION_SIZE (sizeof(dpi_array) / sizeof(uint16_t)) - -bool BurstState = false; // init burst state for Trackball module -uint16_t MotionStart = 0; // Timer for accel, 0 is resting state - -__attribute__((weak)) void process_mouse_user(report_mouse_t* mouse_report, int16_t x, int16_t y) { - mouse_report->x = x; - mouse_report->y = y; -} - -__attribute__((weak)) void process_mouse(report_mouse_t* mouse_report) { - report_pmw_t data = pmw_read_burst(); - if (data.isOnSurface && data.isMotion) { - // Reset timer if stopped moving - if (!data.isMotion) { - if (MotionStart != 0) MotionStart = 0; - return; - } - - // Set timer if new motion - if ((MotionStart == 0) && data.isMotion) { - if (debug_mouse) dprintf("Starting motion.\n"); - MotionStart = timer_read(); - } - - if (debug_mouse) { - dprintf("Delt] d: %d t: %u\n", abs(data.dx) + abs(data.dy), MotionStart); - } - if (debug_mouse) { - dprintf("Pre ] X: %d, Y: %d\n", data.dx, data.dy); - } -#if defined(PROFILE_LINEAR) - float scale = float(timer_elaspsed(MotionStart)) / 1000.0; - data.dx *= scale; - data.dy *= scale; -#elif defined(PROFILE_INVERSE) - // TODO -#else - // no post processing -#endif - - // Wrap to HID size - data.dx = constrain(data.dx, -127, 127); - data.dy = constrain(data.dy, -127, 127); - if (debug_mouse) dprintf("Cons] X: %d, Y: %d\n", data.dx, data.dy); - // dprintf("Elapsed:%u, X: %f Y: %\n", i, pgm_read_byte(firmware_data+i)); - - mouse_report->x = -data.dx; - mouse_report->y = data.dy; - } -} - -bool process_record_kb(uint16_t keycode, keyrecord_t* record) { - if (!process_record_user(keycode, record)) { return false; } - -#ifdef POINTING_DEVICE_ENABLE - if (keycode == DPI_CONFIG && record->event.pressed) { - if ((get_mods()|get_oneshot_mods()) & MOD_MASK_SHIFT) { - keyboard_config.dpi_config = (keyboard_config.dpi_config - 1) % DPI_OPTION_SIZE; - } else { - keyboard_config.dpi_config = (keyboard_config.dpi_config + 1) % DPI_OPTION_SIZE; - } - eeconfig_update_kb(keyboard_config.raw); - trackball_set_cpi(dpi_array[keyboard_config.dpi_config]); - } -#endif - -/* If Mousekeys is disabled, then use handle the mouse button - * keycodes. This makes things simpler, and allows usage of - * the keycodes in a consistent manner. But only do this if - * Mousekeys is not enable, so it's not handled twice. - */ -#ifndef MOUSEKEY_ENABLE - if (IS_MOUSEKEY_BUTTON(keycode)) { - report_mouse_t currentReport = pointing_device_get_report(); - if (record->event.pressed) { - currentReport.buttons |= 1 << (keycode - KC_MS_BTN1); - } else { - currentReport.buttons &= ~(1 << (keycode - KC_MS_BTN1)); - } - pointing_device_set_report(currentReport); - pointing_device_send(); - } -#endif - - return true; -} - -// Hardware Setup -void keyboard_pre_init_kb(void) { - // debug_enable = true; - // debug_matrix = true; - // debug_mouse = true; - // debug_encoder = true; - - /* Ground all output pins connected to ground. This provides additional - * pathways to ground. If you're messing with this, know this: driving ANY - * of these pins high will cause a short. On the MCU. Ka-blooey. - */ - - // This is the debug LED. -#if defined(DEBUG_LED_PIN) - setPinOutput(DEBUG_LED_PIN); - writePin(DEBUG_LED_PIN, debug_enable); -#endif - - keyboard_pre_init_user(); -} - -#ifdef POINTING_DEVICE_ENABLE -void pointing_device_init(void) { - if (!is_keyboard_left()) { - // initialize ball sensor - pmw_spi_init(); - } - trackball_set_cpi(dpi_array[keyboard_config.dpi_config]); -} - -static bool has_report_changed(report_mouse_t new, report_mouse_t old) { - return (new.buttons != old.buttons) || - (new.x && new.x != old.x) || - (new.y && new.y != old.y) || - (new.h && new.h != old.h) || - (new.v && new.v != old.v); -} - -void pointing_device_task(void) { - report_mouse_t mouse_report = pointing_device_get_report(); - if (!is_keyboard_left()) { - process_mouse(&mouse_report); - } - - pointing_device_set_report(mouse_report); - pointing_device_send(); -} -#endif - -void eeconfig_init_kb(void) { - keyboard_config.dpi_config = TRACKBALL_DPI_DEFAULT; -#ifdef POINTING_DEVICE_ENABLE - trackball_set_cpi(dpi_array[keyboard_config.dpi_config]); -#endif - eeconfig_update_kb(keyboard_config.raw); - eeconfig_init_user(); -} - -void matrix_init_kb(void) { - // is safe to just read DPI setting since matrix init - // comes before pointing device init. - keyboard_config.raw = eeconfig_read_kb(); - if (keyboard_config.dpi_config > DPI_OPTION_SIZE) { - eeconfig_init_kb(); - } - matrix_init_user(); -} - -#ifdef POINTING_DEVICE_ENABLE -void pointing_device_send(void) { - static report_mouse_t old_report = {}; - report_mouse_t mouseReport = pointing_device_get_report(); - if (is_keyboard_master()) { - int8_t x = mouseReport.x, y = mouseReport.y; - mouseReport.x = 0; - mouseReport.y = 0; - process_mouse_user(&mouseReport, x, y); - if (has_report_changed(mouseReport, old_report)) { - host_mouse_send(&mouseReport); - } - } else { - master_mouse_send(mouseReport.x, mouseReport.y); - } - mouseReport.x = 0; - mouseReport.y = 0; - mouseReport.v = 0; - mouseReport.h = 0; - old_report = mouseReport; - pointing_device_set_report(mouseReport); -} -#endif - -#ifdef SWAP_HANDS_ENABLE -const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { - /* Left hand, matrix positions */ - {{5, 6}, {4, 6}, {3, 6}, {2, 6}, {1, 6}, {0, 6}}, - {{5, 7}, {4, 7}, {3, 7}, {2, 7}, {1, 7}, {0, 7}}, - {{5, 8}, {4, 8}, {3, 8}, {2, 8}, {1, 8}, {0, 8}}, - {{5, 9}, {4, 9}, {3, 9}, {2, 9}, {1, 9}, {0, 9}}, - {{5, 10}, {4, 10}, {3, 10}, {2, 10}, {1, 10}, {0, 10}}, - {{5, 11}, {4, 11}, {3, 11}, {2, 11}, {1, 11}, {0, 11}}, - /* Right hand, matrix positions */ - {{5, 0}, {4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0}}, - {{5, 1}, {4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1}}, - {{5, 2}, {4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2}}, - {{5, 3}, {4, 3}, {3, 3}, {2, 3}, {1, 3}, {0, 3}}, - {{5, 4}, {4, 4}, {3, 4}, {2, 4}, {1, 4}, {0, 4}}, - {{5, 5}, {4, 5}, {3, 5}, {2, 5}, {1, 5}, {0, 5}} -}; -#endif diff --git a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/5x6_right_trackball.h b/keyboards/handwired/dactyl_manuform/5x6_right_trackball/5x6_right_trackball.h deleted file mode 100644 index c8650f73d3a3..000000000000 --- a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/5x6_right_trackball.h +++ /dev/null @@ -1,73 +0,0 @@ -/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include "dactyl_manuform.h" -#include "quantum.h" -#include "spi_master.h" -#include "pmw3360.h" -#include "pointing_device.h" - - -#define ___ KC_NO - -#define LAYOUT_5x6_right_trackball(\ - L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ - L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ - L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ - L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \ - L42, L43, R42, R43, \ - L44, L45, R41, \ - L54, L55, R51, \ - L52, L53, R52, R53 \ - ) \ - { \ - { L00, L01, L02, L03, L04, L05 }, \ - { L10, L11, L12, L13, L14, L15 }, \ - { L20, L21, L22, L23, L24, L25 }, \ - { L30, L31, L32, L33, L34, L35 }, \ - { ___, ___, L42, L43, L44, L45 }, \ - { ___, ___, L52, L53, L54, L55 }, \ - \ - { R00, R01, R02, R03, R04, R05 }, \ - { R10, R11, R12, R13, R14, R15 }, \ - { R20, R21, R22, R23, R24, R25 }, \ - { R30, R31, R32, R33, R34, R35 }, \ - { ___, R41, R42, R43, ___, ___ }, \ - { ___, R51, R52, R53, ___, ___ } \ -} - - -void process_wheel(report_mouse_t* mouse_report); -void process_wheel_user(report_mouse_t* mouse_report, int16_t h, int16_t v); - -typedef union { - uint32_t raw; - struct { - uint8_t dpi_config; - }; -} keyboard_config_t; - -extern keyboard_config_t keyboard_config; - -enum ploopy_keycodes { - DPI_CONFIG = SAFE_RANGE, - KEYMAP_SAFE_RANGE, -}; - -void master_mouse_send(int8_t x, int8_t y); -void trackball_set_cpi(uint16_t cpi); diff --git a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/config.h b/keyboards/handwired/dactyl_manuform/5x6_right_trackball/config.h deleted file mode 100644 index bc6d66bb9d4e..000000000000 --- a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/config.h +++ /dev/null @@ -1,72 +0,0 @@ -/* -Copyright 2012 Jun Wako -Copyright 2015 Jack Humbert - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -#include "config_common.h" - -#define PRODUCT_ID 0x3536 -#define DEVICE_VER 0x0001 -#define PRODUCT Tractyl-Manuform (5x6 with right side Trackball) - -/* key matrix size */ -// Rows are doubled-up -#define MATRIX_ROWS 12 -#define MATRIX_COLS 6 - -// wiring of each half -#define MATRIX_COL_PINS { C0, C1, C2, C3, C4, C5 } -#define MATRIX_ROW_PINS { F7, F6, F5, F4, F3, F2 } - -#define DIODE_DIRECTION COL2ROW - -// WS2812 RGB LED strip input and number of LEDs -#define RGB_DI_PIN E7 -#define RGBLED_NUM 58 -#define RGBLIGHT_SPLIT -#define RGBLED_SPLIT { 30 , 28 } -#define RGBLIGHT_SLEEP -// #define RGBW -#define RGBLIGHT_LIMIT_VAL 100 -/* define if matrix has ghost */ -//#define MATRIX_HAS_GHOST - -/* number of backlight levels */ -// #define BACKLIGHT_LEVELS 3 - -#define DEBUG_LED_PIN D6 - -#define USB_POLLING_INTERVAL_MS 1 - -#define ROTATIONAL_TRANSFORM_ANGLE -25 - -/* Bootmagic Lite key configuration */ -#define BOOTMAGIC_LITE_ROW 0 -#define BOOTMAGIC_LITE_COLUMN 0 -#define BOOTMAGIC_LITE_ROW_RIGHT 6 -#define BOOTMAGIC_LITE_COLUMN_RIGHT 5 - -#define AUDIO_PIN C6 -#define AUDIO_PIN_ALT B7 - -#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 4095 -#define DYNAMIC_KEYMAP_LAYER_COUNT 16 - -/* serial.c configuration for split keyboard */ -#undef SOFT_SERIAL_PIN -#define SOFT_SERIAL_PIN D2 diff --git a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/info.json b/keyboards/handwired/dactyl_manuform/5x6_right_trackball/info.json deleted file mode 100644 index 8a413ec44f8c..000000000000 --- a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/info.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "keyboard_name": "Dactyl Manuform 5x6", - "url": "", - "maintainer": "qmk", - "width": 17, - "height": 8, - "layouts": { - "LAYOUT_5x6_right_trackball": { - "layout": [ - {"label":"L00", "x":0, "y":0}, - {"label":"L01", "x":1, "y":0}, - {"label":"L02", "x":2, "y":0}, - {"label":"L03", "x":3, "y":0}, - {"label":"L04", "x":4, "y":0}, - {"label":"L05", "x":5, "y":0}, - {"label":"R00", "x":11, "y":0}, - {"label":"R01", "x":12, "y":0}, - {"label":"R02", "x":13, "y":0}, - {"label":"R03", "x":14, "y":0}, - {"label":"R04", "x":15, "y":0}, - {"label":"R05", "x":16, "y":0}, - {"label":"L10", "x":0, "y":1}, - {"label":"L11", "x":1, "y":1}, - {"label":"L12", "x":2, "y":1}, - {"label":"L13", "x":3, "y":1}, - {"label":"L14", "x":4, "y":1}, - {"label":"L15", "x":5, "y":1}, - {"label":"R10", "x":11, "y":1}, - {"label":"R11", "x":12, "y":1}, - {"label":"R12", "x":13, "y":1}, - {"label":"R13", "x":14, "y":1}, - {"label":"R14", "x":15, "y":1}, - {"label":"R15", "x":16, "y":1}, - {"label":"L20", "x":0, "y":2}, - {"label":"L21", "x":1, "y":2}, - {"label":"L22", "x":2, "y":2}, - {"label":"L23", "x":3, "y":2}, - {"label":"L24", "x":4, "y":2}, - {"label":"L25", "x":5, "y":2}, - {"label":"R20", "x":11, "y":2}, - {"label":"R21", "x":12, "y":2}, - {"label":"R22", "x":13, "y":2}, - {"label":"R23", "x":14, "y":2}, - {"label":"R24", "x":15, "y":2}, - {"label":"R25", "x":16, "y":2}, - {"label":"L30", "x":0, "y":3}, - {"label":"L31", "x":1, "y":3}, - {"label":"L32", "x":2, "y":3}, - {"label":"L33", "x":3, "y":3}, - {"label":"L34", "x":4, "y":3}, - {"label":"L35", "x":5, "y":3}, - {"label":"R30", "x":11, "y":3}, - {"label":"R31", "x":12, "y":3}, - {"label":"R32", "x":13, "y":3}, - {"label":"R33", "x":14, "y":3}, - {"label":"R34", "x":15, "y":3}, - {"label":"R35", "x":16, "y":3}, - {"label":"L42", "x":2, "y":4}, - {"label":"L43", "x":3, "y":4}, - {"label":"R42", "x":13, "y":4}, - {"label":"R43", "x":14, "y":4}, - {"label":"L44", "x":4, "y":5}, - {"label":"L45", "x":5, "y":5}, - {"label":"R41", "x":12, "y":5}, - {"label":"L54", "x":6, "y":6}, - {"label":"L55", "x":7, "y":6}, - {"label":"R51", "x":10, "y":6}, - {"label":"L52", "x":6, "y":7}, - {"label":"L53", "x":7, "y":7}, - {"label":"R52", "x":9, "y":7}, - {"label":"R53", "x":10, "y":7} - ] - } - } -} diff --git a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/default/config.h b/keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/default/config.h deleted file mode 100644 index 5bad6bcab36c..000000000000 --- a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/default/config.h +++ /dev/null @@ -1,22 +0,0 @@ -/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - - - -#pragma once - - -#include "../drashna/config.h" diff --git a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/default/keymap.c b/keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/default/keymap.c deleted file mode 100644 index 037f59af8557..000000000000 --- a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/default/keymap.c +++ /dev/null @@ -1,17 +0,0 @@ -/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -// placeholder diff --git a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/default/rules.mk b/keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/default/rules.mk deleted file mode 100644 index 457cda5b0aee..000000000000 --- a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/default/rules.mk +++ /dev/null @@ -1,4 +0,0 @@ -USER_NAME := drashna -SRC += ../drashna/keymap.c - -include $(KEYBOARD_PATH_1)/keymaps/drashna/rules.mk diff --git a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/drashna/config.h b/keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/drashna/config.h deleted file mode 100644 index dedd1f5fe24d..000000000000 --- a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/drashna/config.h +++ /dev/null @@ -1,39 +0,0 @@ -/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -// #define USE_I2C -#define SELECT_SOFT_SERIAL_SPEED 0 -// #define SERIAL_USE_MULTI_TRANSACTION -#define SPLIT_MODS_ENABLE -#define EE_HANDS - -#define TRACKBALL_DPI_OPTIONS \ - { 1200, 1800, 2600, 3400 } - -#define RGBLIGHT_MAX_BRIGHTNESS 60 - -#undef DEBOUNCE -#define DEBOUNCE 10 - -#define SOLENOID_PIN F1 -#define SOLENOID_DEFAULT_DWELL 8 - -#define OLED_DISPLAY_128X64 -#define OLED_BRIGHTNESS 50 - -#define MK_KINETIC_SPEED diff --git a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/drashna/keymap.c b/keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/drashna/keymap.c deleted file mode 100644 index b3300daa9c9d..000000000000 --- a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/drashna/keymap.c +++ /dev/null @@ -1,250 +0,0 @@ -/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "drashna.h" - -// clang-format off -#define LAYOUT_5x6_right_trackball_wrapper(...) LAYOUT_5x6_right_trackball(__VA_ARGS__) -#define LAYOUT_5x6_right_trackball_base( \ - K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ - K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \ - K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \ - ) \ - LAYOUT_5x6_right_trackball_wrapper( \ - KC_ESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_MINS, \ - SH_TT, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, SH_TT, \ - LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(K1B), \ - OS_LSFT, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \ - OS_LALT, OS_LGUI, TG_GAME, TG_DBLO, \ - OS_LGUI, KC_GRV, OS_RGUI, \ - KC_SPC, OS_LGUI, KC_ENT, \ - BK_LWER, TT(_MOUSE), TT(_MOUSE), DL_RAIS \ - ) -#define LAYOUT_5x6_right_trackball_base_wrapper(...) LAYOUT_5x6_right_trackball_base(__VA_ARGS__) - - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT_5x6_right_trackball_base_wrapper( - _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, - _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, - _________________QWERTY_L3_________________, _________________QWERTY_R3_________________ - ), - - [_COLEMAK] = LAYOUT_5x6_right_trackball_base_wrapper( - _________________COLEMAK_L1________________, _________________COLEMAK_R1________________, - _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, - _________________COLEMAK_L3________________, _________________COLEMAK_R3________________ - ), - - [_DVORAK] = LAYOUT_5x6_right_trackball_base_wrapper( - _________________DVORAK_L1_________________, _________________DVORAK_R1_________________, - _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, - _________________DVORAK_L3_________________, _________________DVORAK_R3_________________ - ), - - [_WORKMAN] = LAYOUT_5x6_right_trackball_base_wrapper( - _________________WORKMAN_L1________________, _________________WORKMAN_R1________________, - _________________WORKMAN_L2________________, _________________WORKMAN_R2________________, - _________________WORKMAN_L3________________, _________________WORKMAN_R3________________ - ), - - [_NORMAN] = LAYOUT_5x6_right_trackball_base_wrapper( - _________________NORMAN_L1_________________, _________________NORMAN_L1_________________, - _________________NORMAN_L2_________________, _________________NORMAN_R2_________________, - _________________NORMAN_L3_________________, _________________NORMAN_R3_________________ - ), - - [_MALTRON] = LAYOUT_5x6_right_trackball_base_wrapper( - _________________MALTRON_L1________________, _________________MALTRON_R1________________, - _________________MALTRON_L2________________, _________________MALTRON_R2________________, - _________________MALTRON_L3________________, _________________MALTRON_R3________________ - ), - - [_EUCALYN] = LAYOUT_5x6_right_trackball_base_wrapper( - _________________EUCALYN_L1________________, _________________EUCALYN_R1________________, - _________________EUCALYN_L2________________, _________________EUCALYN_R2________________, - _________________EUCALYN_L3________________, _________________EUCALYN_R3________________ - ), - - [_CARPLAX] = LAYOUT_5x6_right_trackball_base_wrapper( - _____________CARPLAX_QFMLWY_L1_____________, _____________CARPLAX_QFMLWY_R1_____________, - _____________CARPLAX_QFMLWY_L2_____________, _____________CARPLAX_QFMLWY_R2_____________, - _____________CARPLAX_QFMLWY_L3_____________, _____________CARPLAX_QFMLWY_R3_____________ - ), - - [_MOUSE] = LAYOUT_5x6_right_trackball( - _______, _______, _______, _______, _______, _______, DPI_CONFIG, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, KC_WH_U, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, KC_WH_D, KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN6, _______, - _______, _______, _______, _______, _______, _______, KC_BTN7, KC_BTN4, KC_BTN5, KC_BTN8, _______, _______, - _______, _______, _______, _______, - _______, _______, _______, - _______, _______, _______, - _______, _______, _______, _______ - ), - [_GAMEPAD] = LAYOUT_5x6_right_trackball( - KC_ESC, KC_NO, KC_1, KC_2, KC_3, KC_4, DPI_CONFIG, _______, _______, _______, _______, _______, - KC_F1, KC_K, KC_Q, KC_W, KC_E, KC_R, _______, _______, _______, _______, _______, _______, - KC_TAB, KC_G, KC_A, KC_S, KC_D, KC_F, _______, _______, _______, _______, _______, _______, - KC_LCTL, KC_LSFT, KC_Z, KC_X, KC_C, KC_H, _______, _______, _______, _______, _______, _______, - KC_I, KC_T, TG_GAME, KC_NO, - KC_V, KC_O, _______, - KC_SPC, KC_P, _______, - KC_H, KC_LGUI, _______, _______ - ), - [_DIABLO] = LAYOUT_5x6_right_trackball( - KC_ESC, KC_V, KC_D, KC_LALT, KC_NO, KC_NO, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, - KC_TAB, KC_S, KC_I, KC_F, KC_M, KC_T, _______, _______, _______, _______, _______, _______, - KC_Q, KC_1, KC_2, KC_3, KC_4, KC_G, _______, _______, _______, _______, _______, _______, - KC_LCTL, KC_D3_1, KC_D3_2, KC_D3_3, KC_D3_4, KC_Z, _______, _______, _______, _______, _______, _______, - KC_F, KC_L, KC_NO, TG_DBLO, - KC_DIABLO_CLEAR, KC_F, _______, - SFT_T(KC_SPC), KC_J, _______, - ALT_T(KC_Q), KC_LGUI, _______, _______ - ), - [_LOWER] = LAYOUT_5x6_right_trackball_wrapper( - KC_F12, _________________FUNC_LEFT_________________, _________________FUNC_RIGHT________________, KC_F11, - _______, _________________LOWER_L1__________________, _________________LOWER_R1__________________, _______, - _______, _________________LOWER_L2__________________, _________________LOWER_R2__________________, KC_PIPE, - _______, _________________LOWER_L3__________________, _________________LOWER_R3__________________, _______, - _______, _______, _______, _______, - _______, _______, _______, - _______, _______, _______, - _______, _______, _______, _______ - ), - [_RAISE] = LAYOUT_5x6_right_trackball_wrapper( - KC_F12, _________________FUNC_LEFT_________________, _________________FUNC_RIGHT________________, KC_F11, - KC_GRV, _________________RAISE_L1__________________, _________________RAISE_R1__________________, _______, - _______, _________________RAISE_L2__________________, _________________RAISE_R2__________________, KC_BSLS, - _______, _________________RAISE_L3__________________, _________________RAISE_R3__________________, _______, - _______, _______, _______, _______, - _______, _______, _______, - _______, _______, _______, - _______, _______, _______, _______ - ), - [_ADJUST] = LAYOUT_5x6_right_trackball_wrapper( - KC_MAKE, ___________________BLANK___________________, _________________ADJUST_R1_________________, KC_RST, - VRSN, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, EEP_RST, - _______, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, TG_MODS, - _______, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, KC_MPLY, - HPT_DWLI, HPT_DWLD, _______, _______, - HPT_TOG, HPT_BUZ, KC_NUKE, - _______, _______, _______, - _______, _______, KC_NUKE, _______ - ), -}; -// clang-format on - -#ifdef POINTING_DEVICE_ENABLE -static uint16_t mouse_timer = 0; -static uint16_t mouse_debounce_timer = 0; -static uint8_t mouse_keycode_tracker = 0; -bool tap_toggling = false; - -void process_mouse_user(report_mouse_t* mouse_report, int16_t x, int16_t y) { - if ((x || y) && timer_elapsed(mouse_timer) > 125) { - mouse_timer = timer_read(); - if (!layer_state_is(_MOUSE) && !(layer_state_is(_GAMEPAD) || layer_state_is(_DIABLO)) && timer_elapsed(mouse_debounce_timer) > 125) { - layer_on(_MOUSE); - } - } - -# ifdef TAPPING_TERM_PER_KEY - if (timer_elapsed(mouse_debounce_timer) > get_tapping_term(KC_BTN1, NULL) -# else - if (timer_elapsed(mouse_debounce_timer) > TAPPING_TERM -# endif - || (layer_state_is(_GAMEPAD) || layer_state_is(_DIABLO))) { - mouse_report->x = x; - mouse_report->y = y; - } -# ifdef OLED_DRIVER_ENABLE - if (x || y) oled_timer = timer_read32(); -# endif -} - -void matrix_scan_keymap(void) { - if (timer_elapsed(mouse_timer) > 650 && layer_state_is(_MOUSE) && !mouse_keycode_tracker && !tap_toggling) { - layer_off(_MOUSE); - } - if (tap_toggling) { - if (!layer_state_is(_MOUSE)) { - layer_on(_MOUSE); - } - } -} - -bool process_record_keymap(uint16_t keycode, keyrecord_t* record) { - switch (keycode) { - case TT(_MOUSE): { - if (record->event.pressed) { - mouse_keycode_tracker++; - } else { -# if TAPPING_TOGGLE != 0 - if (record->tap.count == TAPPING_TOGGLE) { - tap_toggling ^= 1; -# if TAPPING_TOGGLE == 1 - if (!tap_toggling) mouse_keycode_tracker -= record->tap.count + 1; -# else - if (!tap_toggling) mouse_keycode_tracker -= record->tap.count; -# endif - } else { - mouse_keycode_tracker--; - } -# endif - } - mouse_timer = timer_read(); - break; - } - case MO(_MOUSE): - case DPI_CONFIG: - case KC_MS_UP ... KC_MS_WH_RIGHT: - record->event.pressed ? mouse_keycode_tracker++ : mouse_keycode_tracker--; - mouse_timer = timer_read(); - break; - default: - if (layer_state_is(_MOUSE) && !mouse_keycode_tracker) { - layer_off(_MOUSE); - } - mouse_keycode_tracker = 0; - mouse_debounce_timer = timer_read(); - break; - } - return true; -} - -layer_state_t layer_state_set_keymap(layer_state_t state) { - if (layer_state_cmp(state, _GAMEPAD) || layer_state_cmp(state, _DIABLO)) { - state |= (1UL << _MOUSE); - } - return state; -} -#endif - -void matrix_init_keymap(void) { -#ifdef AUDIO_ENABLE - extern audio_config_t audio_config; - - if (!is_keyboard_master()) { - audio_stop_all(); - audio_config.enable = false; - } -#endif -} - -void keyboard_post_init_keymap(void) { - matrix_init_keymap(); -} diff --git a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/drashna/rules.mk b/keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/drashna/rules.mk deleted file mode 100644 index 754f0e45def4..000000000000 --- a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/drashna/rules.mk +++ /dev/null @@ -1,8 +0,0 @@ -RGBLIGHT_STARTUP_ANIMATION = yes -COMMAND_ENABLE = no -AUDIO_ENABLE = yes -TAP_DANCE_ENABLE = yes -UNICODE_ENABLE = yes -OLED_DRIVER_ENABLE = yes -WPM_ENABLE = yes -# DEBOUNCE_TYPE = sym_eager_pk diff --git a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/pmw3360.c b/keyboards/handwired/dactyl_manuform/5x6_right_trackball/pmw3360.c deleted file mode 100644 index 59e34951270e..000000000000 --- a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/pmw3360.c +++ /dev/null @@ -1,221 +0,0 @@ -/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) - * Copyright 2019 Sunjun Kim - * Copyright 2020 Ploopy Corporation - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#ifdef POINTING_DEVICE_ENABLE - -#include "wait.h" -#include "debug.h" -#include "print.h" -#include "pmw3360.h" -#include "pmw3360_firmware.h" - -bool _inBurst = false; - -#ifndef PMW_CPI -# define PMW_CPI 1600 -#endif -#ifndef SPI_DIVISOR -# define SPI_DIVISOR 2 -#endif -#ifndef ROTATIONAL_TRANSFORM_ANGLE -# define ROTATIONAL_TRANSFORM_ANGLE 0x00 -#endif - -void print_byte(uint8_t byte) { dprintf("%c%c%c%c%c%c%c%c|", (byte & 0x80 ? '1' : '0'), (byte & 0x40 ? '1' : '0'), (byte & 0x20 ? '1' : '0'), (byte & 0x10 ? '1' : '0'), (byte & 0x08 ? '1' : '0'), (byte & 0x04 ? '1' : '0'), (byte & 0x02 ? '1' : '0'), (byte & 0x01 ? '1' : '0')); } - -bool spi_start_adv(void) { - bool status = spi_start(SPI_SS_PIN, false, 3, SPI_DIVISOR); - wait_us(1); - return status; -} - -void spi_stop_adv(void) { - wait_us(1); - spi_stop(); -} - -spi_status_t spi_write_adv(uint8_t reg_addr, uint8_t data) { - if (reg_addr != REG_Motion_Burst) { - _inBurst = false; - } - - spi_start_adv(); - // send address of the register, with MSBit = 1 to indicate it's a write - spi_status_t status = spi_write(reg_addr | 0x80); - status = spi_write(data); - - // tSCLK-NCS for write operation - wait_us(20); - - // tSWW/tSWR (=120us) minus tSCLK-NCS. Could be shortened, but is looks like a safe lower bound - wait_us(100); - spi_stop(); - return status; -} - -uint8_t spi_read_adv(uint8_t reg_addr) { - spi_start_adv(); - // send adress of the register, with MSBit = 0 to indicate it's a read - spi_write(reg_addr & 0x7f); - - uint8_t data = spi_read(); - - // tSCLK-NCS for read operation is 120ns - wait_us(1); - - // tSRW/tSRR (=20us) minus tSCLK-NCS - wait_us(19); - - spi_stop(); - return data; -} - -void pmw_set_cpi(uint16_t cpi) { - int cpival = constrain((cpi / 100) - 1, 0, 0x77); // limits to 0--119 - - spi_start_adv(); - spi_write_adv(REG_Config1, cpival); - spi_stop(); -} - -bool pmw_spi_init(void) { - spi_init(); - _inBurst = false; - - spi_stop(); - spi_start_adv(); - spi_stop(); - - spi_write_adv(REG_Shutdown, 0xb6); // Shutdown first - wait_ms(300); - - spi_start_adv(); - wait_us(40); - spi_stop_adv(); - wait_us(40); - - spi_write_adv(REG_Power_Up_Reset, 0x5a); - wait_ms(50); - - spi_read_adv(REG_Motion); - spi_read_adv(REG_Delta_X_L); - spi_read_adv(REG_Delta_X_H); - spi_read_adv(REG_Delta_Y_L); - spi_read_adv(REG_Delta_Y_H); - - pmw_upload_firmware(); - - spi_stop_adv(); - - wait_ms(10); - pmw_set_cpi(PMW_CPI); - - wait_ms(1); - - return pmw_check_signature(); -} - -void pmw_upload_firmware(void) { - spi_write_adv(REG_Config2, 0x00); - - spi_write_adv(REG_Angle_Tune, constrain(ROTATIONAL_TRANSFORM_ANGLE, -30, 30)); - - spi_write_adv(REG_SROM_Enable, 0x1d); - - wait_ms(10); - - spi_write_adv(REG_SROM_Enable, 0x18); - - spi_start_adv(); - spi_write(REG_SROM_Load_Burst | 0x80); - wait_us(15); - - unsigned char c; - for (int i = 0; i < firmware_length; i++) { - c = (unsigned char)pgm_read_byte(firmware_data + i); - spi_write(c); - wait_us(15); - } - wait_us(200); - - spi_read_adv(REG_SROM_ID); - - spi_write_adv(REG_Config2, 0x00); - - spi_stop(); - wait_ms(10); -} - -bool pmw_check_signature(void) { - uint8_t pid = spi_read_adv(REG_Product_ID); - uint8_t iv_pid = spi_read_adv(REG_Inverse_Product_ID); - uint8_t SROM_ver = spi_read_adv(REG_SROM_ID); - return (pid == 0x42 && iv_pid == 0xBD && SROM_ver == 0x04); // signature for SROM 0x04 -} - -report_pmw_t pmw_read_burst(void) { - if (!_inBurst) { - dprintf("burst on"); - spi_write_adv(REG_Motion_Burst, 0x00); - _inBurst = true; - } - - spi_start_adv(); - spi_write(REG_Motion_Burst); - wait_us(35); // waits for tSRAD - - report_pmw_t data; - data.motion = 0; - data.dx = 0; - data.mdx = 0; - data.dy = 0; - data.mdx = 0; - - data.motion = spi_read(); - spi_write(0x00); // skip Observation - data.dx = spi_read(); - data.mdx = spi_read(); - data.dy = spi_read(); - data.mdy = spi_read(); - - spi_stop(); - - print_byte(data.motion); - print_byte(data.dx); - print_byte(data.mdx); - print_byte(data.dy); - print_byte(data.mdy); - dprintf("\n"); - - data.isMotion = (data.motion & 0x80) != 0; - data.isOnSurface = (data.motion & 0x08) == 0; - data.dx |= (data.mdx << 8); - data.dx = data.dx * -1; - data.dy |= (data.mdy << 8); - data.dy = data.dy * -1; - - spi_stop(); - - if (data.motion & 0b111) { // panic recovery, sometimes burst mode works weird. - _inBurst = false; - } - - return data; -} - -#endif diff --git a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/pmw3360.h b/keyboards/handwired/dactyl_manuform/5x6_right_trackball/pmw3360.h deleted file mode 100644 index c1d5e3badbea..000000000000 --- a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/pmw3360.h +++ /dev/null @@ -1,103 +0,0 @@ -/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) - * Copyright 2019 Sunjun Kim - * Copyright 2020 Ploopy Corporation - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include "spi_master.h" - -// Registers -#define REG_Product_ID 0x00 -#define REG_Revision_ID 0x01 -#define REG_Motion 0x02 -#define REG_Delta_X_L 0x03 -#define REG_Delta_X_H 0x04 -#define REG_Delta_Y_L 0x05 -#define REG_Delta_Y_H 0x06 -#define REG_SQUAL 0x07 -#define REG_Raw_Data_Sum 0x08 -#define REG_Maximum_Raw_data 0x09 -#define REG_Minimum_Raw_data 0x0A -#define REG_Shutter_Lower 0x0B -#define REG_Shutter_Upper 0x0C -#define REG_Control 0x0D -#define REG_Config1 0x0F -#define REG_Config2 0x10 -#define REG_Angle_Tune 0x11 -#define REG_Frame_Capture 0x12 -#define REG_SROM_Enable 0x13 -#define REG_Run_Downshift 0x14 -#define REG_Rest1_Rate_Lower 0x15 -#define REG_Rest1_Rate_Upper 0x16 -#define REG_Rest1_Downshift 0x17 -#define REG_Rest2_Rate_Lower 0x18 -#define REG_Rest2_Rate_Upper 0x19 -#define REG_Rest2_Downshift 0x1A -#define REG_Rest3_Rate_Lower 0x1B -#define REG_Rest3_Rate_Upper 0x1C -#define REG_Observation 0x24 -#define REG_Data_Out_Lower 0x25 -#define REG_Data_Out_Upper 0x26 -#define REG_Raw_Data_Dump 0x29 -#define REG_SROM_ID 0x2A -#define REG_Min_SQ_Run 0x2B -#define REG_Raw_Data_Threshold 0x2C -#define REG_Config5 0x2F -#define REG_Power_Up_Reset 0x3A -#define REG_Shutdown 0x3B -#define REG_Inverse_Product_ID 0x3F -#define REG_LiftCutoff_Tune3 0x41 -#define REG_Angle_Snap 0x42 -#define REG_LiftCutoff_Tune1 0x4A -#define REG_Motion_Burst 0x50 -#define REG_LiftCutoff_Tune_Timeout 0x58 -#define REG_LiftCutoff_Tune_Min_Length 0x5A -#define REG_SROM_Load_Burst 0x62 -#define REG_Lift_Config 0x63 -#define REG_Raw_Data_Burst 0x64 -#define REG_LiftCutoff_Tune2 0x65 - -#ifdef CONSOLE_ENABLE -void print_byte(uint8_t byte); -#endif - -typedef struct { - int8_t motion; - bool isMotion; // True if a motion is detected. - bool isOnSurface; // True when a chip is on a surface - int16_t dx; // displacement on x directions. Unit: Count. (CPI * Count = Inch value) - int8_t mdx; - int16_t dy; // displacement on y directions. - int8_t mdy; -} report_pmw_t; - - - -bool spi_start_adv(void); -void spi_stop_adv(void); -spi_status_t spi_write_adv(uint8_t reg_addr, uint8_t data); -uint8_t spi_read_adv(uint8_t reg_addr); -bool pmw_spi_init(void); -void pmw_set_cpi(uint16_t cpi); -void pmw_upload_firmware(void); -bool pmw_check_signature(void); -report_pmw_t pmw_read_burst(void); - - -#define degToRad(angleInDegrees) ((angleInDegrees)*M_PI / 180.0) -#define radToDeg(angleInRadians) ((angleInRadians)*180.0 / M_PI) -#define constrain(amt, low, high) ((amt) < (low) ? (low) : ((amt) > (high) ? (high) : (amt))) diff --git a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/pmw3360_firmware.h b/keyboards/handwired/dactyl_manuform/5x6_right_trackball/pmw3360_firmware.h deleted file mode 100644 index cca5a6a4d877..000000000000 --- a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/pmw3360_firmware.h +++ /dev/null @@ -1,300 +0,0 @@ -/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) - * Copyright 2019 Sunjun Kim - * Copyright 2020 Ploopy Corporation - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -// clang-format off -// Firmware Blob foor PMW3360 -const uint16_t firmware_length = 4094; -// clang-format off -const uint8_t firmware_data[] PROGMEM = { // SROM 0x04 -0x01, 0x04, 0x8e, 0x96, 0x6e, 0x77, 0x3e, 0xfe, 0x7e, 0x5f, 0x1d, 0xb8, 0xf2, 0x66, 0x4e, -0xff, 0x5d, 0x19, 0xb0, 0xc2, 0x04, 0x69, 0x54, 0x2a, 0xd6, 0x2e, 0xbf, 0xdd, 0x19, 0xb0, -0xc3, 0xe5, 0x29, 0xb1, 0xe0, 0x23, 0xa5, 0xa9, 0xb1, 0xc1, 0x00, 0x82, 0x67, 0x4c, 0x1a, -0x97, 0x8d, 0x79, 0x51, 0x20, 0xc7, 0x06, 0x8e, 0x7c, 0x7c, 0x7a, 0x76, 0x4f, 0xfd, 0x59, -0x30, 0xe2, 0x46, 0x0e, 0x9e, 0xbe, 0xdf, 0x1d, 0x99, 0x91, 0xa0, 0xa5, 0xa1, 0xa9, 0xd0, -0x22, 0xc6, 0xef, 0x5c, 0x1b, 0x95, 0x89, 0x90, 0xa2, 0xa7, 0xcc, 0xfb, 0x55, 0x28, 0xb3, -0xe4, 0x4a, 0xf7, 0x6c, 0x3b, 0xf4, 0x6a, 0x56, 0x2e, 0xde, 0x1f, 0x9d, 0xb8, 0xd3, 0x05, -0x88, 0x92, 0xa6, 0xce, 0x1e, 0xbe, 0xdf, 0x1d, 0x99, 0xb0, 0xe2, 0x46, 0xef, 0x5c, 0x07, -0x11, 0x5d, 0x98, 0x0b, 0x9d, 0x94, 0x97, 0xee, 0x4e, 0x45, 0x33, 0x6b, 0x44, 0xc7, 0x29, -0x56, 0x27, 0x30, 0xc6, 0xa7, 0xd5, 0xf2, 0x56, 0xdf, 0xb4, 0x38, 0x62, 0xcb, 0xa0, 0xb6, -0xe3, 0x0f, 0x84, 0x06, 0x24, 0x05, 0x65, 0x6f, 0x76, 0x89, 0xb5, 0x77, 0x41, 0x27, 0x82, -0x66, 0x65, 0x82, 0xcc, 0xd5, 0xe6, 0x20, 0xd5, 0x27, 0x17, 0xc5, 0xf8, 0x03, 0x23, 0x7c, -0x5f, 0x64, 0xa5, 0x1d, 0xc1, 0xd6, 0x36, 0xcb, 0x4c, 0xd4, 0xdb, 0x66, 0xd7, 0x8b, 0xb1, -0x99, 0x7e, 0x6f, 0x4c, 0x36, 0x40, 0x06, 0xd6, 0xeb, 0xd7, 0xa2, 0xe4, 0xf4, 0x95, 0x51, -0x5a, 0x54, 0x96, 0xd5, 0x53, 0x44, 0xd7, 0x8c, 0xe0, 0xb9, 0x40, 0x68, 0xd2, 0x18, 0xe9, -0xdd, 0x9a, 0x23, 0x92, 0x48, 0xee, 0x7f, 0x43, 0xaf, 0xea, 0x77, 0x38, 0x84, 0x8c, 0x0a, -0x72, 0xaf, 0x69, 0xf8, 0xdd, 0xf1, 0x24, 0x83, 0xa3, 0xf8, 0x4a, 0xbf, 0xf5, 0x94, 0x13, -0xdb, 0xbb, 0xd8, 0xb4, 0xb3, 0xa0, 0xfb, 0x45, 0x50, 0x60, 0x30, 0x59, 0x12, 0x31, 0x71, -0xa2, 0xd3, 0x13, 0xe7, 0xfa, 0xe7, 0xce, 0x0f, 0x63, 0x15, 0x0b, 0x6b, 0x94, 0xbb, 0x37, -0x83, 0x26, 0x05, 0x9d, 0xfb, 0x46, 0x92, 0xfc, 0x0a, 0x15, 0xd1, 0x0d, 0x73, 0x92, 0xd6, -0x8c, 0x1b, 0x8c, 0xb8, 0x55, 0x8a, 0xce, 0xbd, 0xfe, 0x8e, 0xfc, 0xed, 0x09, 0x12, 0x83, -0x91, 0x82, 0x51, 0x31, 0x23, 0xfb, 0xb4, 0x0c, 0x76, 0xad, 0x7c, 0xd9, 0xb4, 0x4b, 0xb2, -0x67, 0x14, 0x09, 0x9c, 0x7f, 0x0c, 0x18, 0xba, 0x3b, 0xd6, 0x8e, 0x14, 0x2a, 0xe4, 0x1b, -0x52, 0x9f, 0x2b, 0x7d, 0xe1, 0xfb, 0x6a, 0x33, 0x02, 0xfa, 0xac, 0x5a, 0xf2, 0x3e, 0x88, -0x7e, 0xae, 0xd1, 0xf3, 0x78, 0xe8, 0x05, 0xd1, 0xe3, 0xdc, 0x21, 0xf6, 0xe1, 0x9a, 0xbd, -0x17, 0x0e, 0xd9, 0x46, 0x9b, 0x88, 0x03, 0xea, 0xf6, 0x66, 0xbe, 0x0e, 0x1b, 0x50, 0x49, -0x96, 0x40, 0x97, 0xf1, 0xf1, 0xe4, 0x80, 0xa6, 0x6e, 0xe8, 0x77, 0x34, 0xbf, 0x29, 0x40, -0x44, 0xc2, 0xff, 0x4e, 0x98, 0xd3, 0x9c, 0xa3, 0x32, 0x2b, 0x76, 0x51, 0x04, 0x09, 0xe7, -0xa9, 0xd1, 0xa6, 0x32, 0xb1, 0x23, 0x53, 0xe2, 0x47, 0xab, 0xd6, 0xf5, 0x69, 0x5c, 0x3e, -0x5f, 0xfa, 0xae, 0x45, 0x20, 0xe5, 0xd2, 0x44, 0xff, 0x39, 0x32, 0x6d, 0xfd, 0x27, 0x57, -0x5c, 0xfd, 0xf0, 0xde, 0xc1, 0xb5, 0x99, 0xe5, 0xf5, 0x1c, 0x77, 0x01, 0x75, 0xc5, 0x6d, -0x58, 0x92, 0xf2, 0xb2, 0x47, 0x00, 0x01, 0x26, 0x96, 0x7a, 0x30, 0xff, 0xb7, 0xf0, 0xef, -0x77, 0xc1, 0x8a, 0x5d, 0xdc, 0xc0, 0xd1, 0x29, 0x30, 0x1e, 0x77, 0x38, 0x7a, 0x94, 0xf1, -0xb8, 0x7a, 0x7e, 0xef, 0xa4, 0xd1, 0xac, 0x31, 0x4a, 0xf2, 0x5d, 0x64, 0x3d, 0xb2, 0xe2, -0xf0, 0x08, 0x99, 0xfc, 0x70, 0xee, 0x24, 0xa7, 0x7e, 0xee, 0x1e, 0x20, 0x69, 0x7d, 0x44, -0xbf, 0x87, 0x42, 0xdf, 0x88, 0x3b, 0x0c, 0xda, 0x42, 0xc9, 0x04, 0xf9, 0x45, 0x50, 0xfc, -0x83, 0x8f, 0x11, 0x6a, 0x72, 0xbc, 0x99, 0x95, 0xf0, 0xac, 0x3d, 0xa7, 0x3b, 0xcd, 0x1c, -0xe2, 0x88, 0x79, 0x37, 0x11, 0x5f, 0x39, 0x89, 0x95, 0x0a, 0x16, 0x84, 0x7a, 0xf6, 0x8a, -0xa4, 0x28, 0xe4, 0xed, 0x83, 0x80, 0x3b, 0xb1, 0x23, 0xa5, 0x03, 0x10, 0xf4, 0x66, 0xea, -0xbb, 0x0c, 0x0f, 0xc5, 0xec, 0x6c, 0x69, 0xc5, 0xd3, 0x24, 0xab, 0xd4, 0x2a, 0xb7, 0x99, -0x88, 0x76, 0x08, 0xa0, 0xa8, 0x95, 0x7c, 0xd8, 0x38, 0x6d, 0xcd, 0x59, 0x02, 0x51, 0x4b, -0xf1, 0xb5, 0x2b, 0x50, 0xe3, 0xb6, 0xbd, 0xd0, 0x72, 0xcf, 0x9e, 0xfd, 0x6e, 0xbb, 0x44, -0xc8, 0x24, 0x8a, 0x77, 0x18, 0x8a, 0x13, 0x06, 0xef, 0x97, 0x7d, 0xfa, 0x81, 0xf0, 0x31, -0xe6, 0xfa, 0x77, 0xed, 0x31, 0x06, 0x31, 0x5b, 0x54, 0x8a, 0x9f, 0x30, 0x68, 0xdb, 0xe2, -0x40, 0xf8, 0x4e, 0x73, 0xfa, 0xab, 0x74, 0x8b, 0x10, 0x58, 0x13, 0xdc, 0xd2, 0xe6, 0x78, -0xd1, 0x32, 0x2e, 0x8a, 0x9f, 0x2c, 0x58, 0x06, 0x48, 0x27, 0xc5, 0xa9, 0x5e, 0x81, 0x47, -0x89, 0x46, 0x21, 0x91, 0x03, 0x70, 0xa4, 0x3e, 0x88, 0x9c, 0xda, 0x33, 0x0a, 0xce, 0xbc, -0x8b, 0x8e, 0xcf, 0x9f, 0xd3, 0x71, 0x80, 0x43, 0xcf, 0x6b, 0xa9, 0x51, 0x83, 0x76, 0x30, -0x82, 0xc5, 0x6a, 0x85, 0x39, 0x11, 0x50, 0x1a, 0x82, 0xdc, 0x1e, 0x1c, 0xd5, 0x7d, 0xa9, -0x71, 0x99, 0x33, 0x47, 0x19, 0x97, 0xb3, 0x5a, 0xb1, 0xdf, 0xed, 0xa4, 0xf2, 0xe6, 0x26, -0x84, 0xa2, 0x28, 0x9a, 0x9e, 0xdf, 0xa6, 0x6a, 0xf4, 0xd6, 0xfc, 0x2e, 0x5b, 0x9d, 0x1a, -0x2a, 0x27, 0x68, 0xfb, 0xc1, 0x83, 0x21, 0x4b, 0x90, 0xe0, 0x36, 0xdd, 0x5b, 0x31, 0x42, -0x55, 0xa0, 0x13, 0xf7, 0xd0, 0x89, 0x53, 0x71, 0x99, 0x57, 0x09, 0x29, 0xc5, 0xf3, 0x21, -0xf8, 0x37, 0x2f, 0x40, 0xf3, 0xd4, 0xaf, 0x16, 0x08, 0x36, 0x02, 0xfc, 0x77, 0xc5, 0x8b, -0x04, 0x90, 0x56, 0xb9, 0xc9, 0x67, 0x9a, 0x99, 0xe8, 0x00, 0xd3, 0x86, 0xff, 0x97, 0x2d, -0x08, 0xe9, 0xb7, 0xb3, 0x91, 0xbc, 0xdf, 0x45, 0xc6, 0xed, 0x0f, 0x8c, 0x4c, 0x1e, 0xe6, -0x5b, 0x6e, 0x38, 0x30, 0xe4, 0xaa, 0xe3, 0x95, 0xde, 0xb9, 0xe4, 0x9a, 0xf5, 0xb2, 0x55, -0x9a, 0x87, 0x9b, 0xf6, 0x6a, 0xb2, 0xf2, 0x77, 0x9a, 0x31, 0xf4, 0x7a, 0x31, 0xd1, 0x1d, -0x04, 0xc0, 0x7c, 0x32, 0xa2, 0x9e, 0x9a, 0xf5, 0x62, 0xf8, 0x27, 0x8d, 0xbf, 0x51, 0xff, -0xd3, 0xdf, 0x64, 0x37, 0x3f, 0x2a, 0x6f, 0x76, 0x3a, 0x7d, 0x77, 0x06, 0x9e, 0x77, 0x7f, -0x5e, 0xeb, 0x32, 0x51, 0xf9, 0x16, 0x66, 0x9a, 0x09, 0xf3, 0xb0, 0x08, 0xa4, 0x70, 0x96, -0x46, 0x30, 0xff, 0xda, 0x4f, 0xe9, 0x1b, 0xed, 0x8d, 0xf8, 0x74, 0x1f, 0x31, 0x92, 0xb3, -0x73, 0x17, 0x36, 0xdb, 0x91, 0x30, 0xd6, 0x88, 0x55, 0x6b, 0x34, 0x77, 0x87, 0x7a, 0xe7, -0xee, 0x06, 0xc6, 0x1c, 0x8c, 0x19, 0x0c, 0x48, 0x46, 0x23, 0x5e, 0x9c, 0x07, 0x5c, 0xbf, -0xb4, 0x7e, 0xd6, 0x4f, 0x74, 0x9c, 0xe2, 0xc5, 0x50, 0x8b, 0xc5, 0x8b, 0x15, 0x90, 0x60, -0x62, 0x57, 0x29, 0xd0, 0x13, 0x43, 0xa1, 0x80, 0x88, 0x91, 0x00, 0x44, 0xc7, 0x4d, 0x19, -0x86, 0xcc, 0x2f, 0x2a, 0x75, 0x5a, 0xfc, 0xeb, 0x97, 0x2a, 0x70, 0xe3, 0x78, 0xd8, 0x91, -0xb0, 0x4f, 0x99, 0x07, 0xa3, 0x95, 0xea, 0x24, 0x21, 0xd5, 0xde, 0x51, 0x20, 0x93, 0x27, -0x0a, 0x30, 0x73, 0xa8, 0xff, 0x8a, 0x97, 0xe9, 0xa7, 0x6a, 0x8e, 0x0d, 0xe8, 0xf0, 0xdf, -0xec, 0xea, 0xb4, 0x6c, 0x1d, 0x39, 0x2a, 0x62, 0x2d, 0x3d, 0x5a, 0x8b, 0x65, 0xf8, 0x90, -0x05, 0x2e, 0x7e, 0x91, 0x2c, 0x78, 0xef, 0x8e, 0x7a, 0xc1, 0x2f, 0xac, 0x78, 0xee, 0xaf, -0x28, 0x45, 0x06, 0x4c, 0x26, 0xaf, 0x3b, 0xa2, 0xdb, 0xa3, 0x93, 0x06, 0xb5, 0x3c, 0xa5, -0xd8, 0xee, 0x8f, 0xaf, 0x25, 0xcc, 0x3f, 0x85, 0x68, 0x48, 0xa9, 0x62, 0xcc, 0x97, 0x8f, -0x7f, 0x2a, 0xea, 0xe0, 0x15, 0x0a, 0xad, 0x62, 0x07, 0xbd, 0x45, 0xf8, 0x41, 0xd8, 0x36, -0xcb, 0x4c, 0xdb, 0x6e, 0xe6, 0x3a, 0xe7, 0xda, 0x15, 0xe9, 0x29, 0x1e, 0x12, 0x10, 0xa0, -0x14, 0x2c, 0x0e, 0x3d, 0xf4, 0xbf, 0x39, 0x41, 0x92, 0x75, 0x0b, 0x25, 0x7b, 0xa3, 0xce, -0x39, 0x9c, 0x15, 0x64, 0xc8, 0xfa, 0x3d, 0xef, 0x73, 0x27, 0xfe, 0x26, 0x2e, 0xce, 0xda, -0x6e, 0xfd, 0x71, 0x8e, 0xdd, 0xfe, 0x76, 0xee, 0xdc, 0x12, 0x5c, 0x02, 0xc5, 0x3a, 0x4e, -0x4e, 0x4f, 0xbf, 0xca, 0x40, 0x15, 0xc7, 0x6e, 0x8d, 0x41, 0xf1, 0x10, 0xe0, 0x4f, 0x7e, -0x97, 0x7f, 0x1c, 0xae, 0x47, 0x8e, 0x6b, 0xb1, 0x25, 0x31, 0xb0, 0x73, 0xc7, 0x1b, 0x97, -0x79, 0xf9, 0x80, 0xd3, 0x66, 0x22, 0x30, 0x07, 0x74, 0x1e, 0xe4, 0xd0, 0x80, 0x21, 0xd6, -0xee, 0x6b, 0x6c, 0x4f, 0xbf, 0xf5, 0xb7, 0xd9, 0x09, 0x87, 0x2f, 0xa9, 0x14, 0xbe, 0x27, -0xd9, 0x72, 0x50, 0x01, 0xd4, 0x13, 0x73, 0xa6, 0xa7, 0x51, 0x02, 0x75, 0x25, 0xe1, 0xb3, -0x45, 0x34, 0x7d, 0xa8, 0x8e, 0xeb, 0xf3, 0x16, 0x49, 0xcb, 0x4f, 0x8c, 0xa1, 0xb9, 0x36, -0x85, 0x39, 0x75, 0x5d, 0x08, 0x00, 0xae, 0xeb, 0xf6, 0xea, 0xd7, 0x13, 0x3a, 0x21, 0x5a, -0x5f, 0x30, 0x84, 0x52, 0x26, 0x95, 0xc9, 0x14, 0xf2, 0x57, 0x55, 0x6b, 0xb1, 0x10, 0xc2, -0xe1, 0xbd, 0x3b, 0x51, 0xc0, 0xb7, 0x55, 0x4c, 0x71, 0x12, 0x26, 0xc7, 0x0d, 0xf9, 0x51, -0xa4, 0x38, 0x02, 0x05, 0x7f, 0xb8, 0xf1, 0x72, 0x4b, 0xbf, 0x71, 0x89, 0x14, 0xf3, 0x77, -0x38, 0xd9, 0x71, 0x24, 0xf3, 0x00, 0x11, 0xa1, 0xd8, 0xd4, 0x69, 0x27, 0x08, 0x37, 0x35, -0xc9, 0x11, 0x9d, 0x90, 0x1c, 0x0e, 0xe7, 0x1c, 0xff, 0x2d, 0x1e, 0xe8, 0x92, 0xe1, 0x18, -0x10, 0x95, 0x7c, 0xe0, 0x80, 0xf4, 0x96, 0x43, 0x21, 0xf9, 0x75, 0x21, 0x64, 0x38, 0xdd, -0x9f, 0x1e, 0x95, 0x16, 0xda, 0x56, 0x1d, 0x4f, 0x9a, 0x53, 0xb2, 0xe2, 0xe4, 0x18, 0xcb, -0x6b, 0x1a, 0x65, 0xeb, 0x56, 0xc6, 0x3b, 0xe5, 0xfe, 0xd8, 0x26, 0x3f, 0x3a, 0x84, 0x59, -0x72, 0x66, 0xa2, 0xf3, 0x75, 0xff, 0xfb, 0x60, 0xb3, 0x22, 0xad, 0x3f, 0x2d, 0x6b, 0xf9, -0xeb, 0xea, 0x05, 0x7c, 0xd8, 0x8f, 0x6d, 0x2c, 0x98, 0x9e, 0x2b, 0x93, 0xf1, 0x5e, 0x46, -0xf0, 0x87, 0x49, 0x29, 0x73, 0x68, 0xd7, 0x7f, 0xf9, 0xf0, 0xe5, 0x7d, 0xdb, 0x1d, 0x75, -0x19, 0xf3, 0xc4, 0x58, 0x9b, 0x17, 0x88, 0xa8, 0x92, 0xe0, 0xbe, 0xbd, 0x8b, 0x1d, 0x8d, -0x9f, 0x56, 0x76, 0xad, 0xaf, 0x29, 0xe2, 0xd9, 0xd5, 0x52, 0xf6, 0xb5, 0x56, 0x35, 0x57, -0x3a, 0xc8, 0xe1, 0x56, 0x43, 0x19, 0x94, 0xd3, 0x04, 0x9b, 0x6d, 0x35, 0xd8, 0x0b, 0x5f, -0x4d, 0x19, 0x8e, 0xec, 0xfa, 0x64, 0x91, 0x0a, 0x72, 0x20, 0x2b, 0xbc, 0x1a, 0x4a, 0xfe, -0x8b, 0xfd, 0xbb, 0xed, 0x1b, 0x23, 0xea, 0xad, 0x72, 0x82, 0xa1, 0x29, 0x99, 0x71, 0xbd, -0xf0, 0x95, 0xc1, 0x03, 0xdd, 0x7b, 0xc2, 0xb2, 0x3c, 0x28, 0x54, 0xd3, 0x68, 0xa4, 0x72, -0xc8, 0x66, 0x96, 0xe0, 0xd1, 0xd8, 0x7f, 0xf8, 0xd1, 0x26, 0x2b, 0xf7, 0xad, 0xba, 0x55, -0xca, 0x15, 0xb9, 0x32, 0xc3, 0xe5, 0x88, 0x97, 0x8e, 0x5c, 0xfb, 0x92, 0x25, 0x8b, 0xbf, -0xa2, 0x45, 0x55, 0x7a, 0xa7, 0x6f, 0x8b, 0x57, 0x5b, 0xcf, 0x0e, 0xcb, 0x1d, 0xfb, 0x20, -0x82, 0x77, 0xa8, 0x8c, 0xcc, 0x16, 0xce, 0x1d, 0xfa, 0xde, 0xcc, 0x0b, 0x62, 0xfe, 0xcc, -0xe1, 0xb7, 0xf0, 0xc3, 0x81, 0x64, 0x73, 0x40, 0xa0, 0xc2, 0x4d, 0x89, 0x11, 0x75, 0x33, -0x55, 0x33, 0x8d, 0xe8, 0x4a, 0xfd, 0xea, 0x6e, 0x30, 0x0b, 0xd7, 0x31, 0x2c, 0xde, 0x47, -0xe3, 0xbf, 0xf8, 0x55, 0x42, 0xe2, 0x7f, 0x59, 0xe5, 0x17, 0xef, 0x99, 0x34, 0x69, 0x91, -0xb1, 0x23, 0x8e, 0x20, 0x87, 0x2d, 0xa8, 0xfe, 0xd5, 0x8a, 0xf3, 0x84, 0x3a, 0xf0, 0x37, -0xe4, 0x09, 0x00, 0x54, 0xee, 0x67, 0x49, 0x93, 0xe4, 0x81, 0x70, 0xe3, 0x90, 0x4d, 0xef, -0xfe, 0x41, 0xb7, 0x99, 0x7b, 0xc1, 0x83, 0xba, 0x62, 0x12, 0x6f, 0x7d, 0xde, 0x6b, 0xaf, -0xda, 0x16, 0xf9, 0x55, 0x51, 0xee, 0xa6, 0x0c, 0x2b, 0x02, 0xa3, 0xfd, 0x8d, 0xfb, 0x30, -0x17, 0xe4, 0x6f, 0xdf, 0x36, 0x71, 0xc4, 0xca, 0x87, 0x25, 0x48, 0xb0, 0x47, 0xec, 0xea, -0xb4, 0xbf, 0xa5, 0x4d, 0x9b, 0x9f, 0x02, 0x93, 0xc4, 0xe3, 0xe4, 0xe8, 0x42, 0x2d, 0x68, -0x81, 0x15, 0x0a, 0xeb, 0x84, 0x5b, 0xd6, 0xa8, 0x74, 0xfb, 0x7d, 0x1d, 0xcb, 0x2c, 0xda, -0x46, 0x2a, 0x76, 0x62, 0xce, 0xbc, 0x5c, 0x9e, 0x8b, 0xe7, 0xcf, 0xbe, 0x78, 0xf5, 0x7c, -0xeb, 0xb3, 0x3a, 0x9c, 0xaa, 0x6f, 0xcc, 0x72, 0xd1, 0x59, 0xf2, 0x11, 0x23, 0xd6, 0x3f, -0x48, 0xd1, 0xb7, 0xce, 0xb0, 0xbf, 0xcb, 0xea, 0x80, 0xde, 0x57, 0xd4, 0x5e, 0x97, 0x2f, -0x75, 0xd1, 0x50, 0x8e, 0x80, 0x2c, 0x66, 0x79, 0xbf, 0x72, 0x4b, 0xbd, 0x8a, 0x81, 0x6c, -0xd3, 0xe1, 0x01, 0xdc, 0xd2, 0x15, 0x26, 0xc5, 0x36, 0xda, 0x2c, 0x1a, 0xc0, 0x27, 0x94, -0xed, 0xb7, 0x9b, 0x85, 0x0b, 0x5e, 0x80, 0x97, 0xc5, 0xec, 0x4f, 0xec, 0x88, 0x5d, 0x50, -0x07, 0x35, 0x47, 0xdc, 0x0b, 0x3b, 0x3d, 0xdd, 0x60, 0xaf, 0xa8, 0x5d, 0x81, 0x38, 0x24, -0x25, 0x5d, 0x5c, 0x15, 0xd1, 0xde, 0xb3, 0xab, 0xec, 0x05, 0x69, 0xef, 0x83, 0xed, 0x57, -0x54, 0xb8, 0x64, 0x64, 0x11, 0x16, 0x32, 0x69, 0xda, 0x9f, 0x2d, 0x7f, 0x36, 0xbb, 0x44, -0x5a, 0x34, 0xe8, 0x7f, 0xbf, 0x03, 0xeb, 0x00, 0x7f, 0x59, 0x68, 0x22, 0x79, 0xcf, 0x73, -0x6c, 0x2c, 0x29, 0xa7, 0xa1, 0x5f, 0x38, 0xa1, 0x1d, 0xf0, 0x20, 0x53, 0xe0, 0x1a, 0x63, -0x14, 0x58, 0x71, 0x10, 0xaa, 0x08, 0x0c, 0x3e, 0x16, 0x1a, 0x60, 0x22, 0x82, 0x7f, 0xba, -0xa4, 0x43, 0xa0, 0xd0, 0xac, 0x1b, 0xd5, 0x6b, 0x64, 0xb5, 0x14, 0x93, 0x31, 0x9e, 0x53, -0x50, 0xd0, 0x57, 0x66, 0xee, 0x5a, 0x4f, 0xfb, 0x03, 0x2a, 0x69, 0x58, 0x76, 0xf1, 0x83, -0xf7, 0x4e, 0xba, 0x8c, 0x42, 0x06, 0x60, 0x5d, 0x6d, 0xce, 0x60, 0x88, 0xae, 0xa4, 0xc3, -0xf1, 0x03, 0xa5, 0x4b, 0x98, 0xa1, 0xff, 0x67, 0xe1, 0xac, 0xa2, 0xb8, 0x62, 0xd7, 0x6f, -0xa0, 0x31, 0xb4, 0xd2, 0x77, 0xaf, 0x21, 0x10, 0x06, 0xc6, 0x9a, 0xff, 0x1d, 0x09, 0x17, -0x0e, 0x5f, 0xf1, 0xaa, 0x54, 0x34, 0x4b, 0x45, 0x8a, 0x87, 0x63, 0xa6, 0xdc, 0xf9, 0x24, -0x30, 0x67, 0xc6, 0xb2, 0xd6, 0x61, 0x33, 0x69, 0xee, 0x50, 0x61, 0x57, 0x28, 0xe7, 0x7e, -0xee, 0xec, 0x3a, 0x5a, 0x73, 0x4e, 0xa8, 0x8d, 0xe4, 0x18, 0xea, 0xec, 0x41, 0x64, 0xc8, -0xe2, 0xe8, 0x66, 0xb6, 0x2d, 0xb6, 0xfb, 0x6a, 0x6c, 0x16, 0xb3, 0xdd, 0x46, 0x43, 0xb9, -0x73, 0x00, 0x6a, 0x71, 0xed, 0x4e, 0x9d, 0x25, 0x1a, 0xc3, 0x3c, 0x4a, 0x95, 0x15, 0x99, -0x35, 0x81, 0x14, 0x02, 0xd6, 0x98, 0x9b, 0xec, 0xd8, 0x23, 0x3b, 0x84, 0x29, 0xaf, 0x0c, -0x99, 0x83, 0xa6, 0x9a, 0x34, 0x4f, 0xfa, 0xe8, 0xd0, 0x3c, 0x4b, 0xd0, 0xfb, 0xb6, 0x68, -0xb8, 0x9e, 0x8f, 0xcd, 0xf7, 0x60, 0x2d, 0x7a, 0x22, 0xe5, 0x7d, 0xab, 0x65, 0x1b, 0x95, -0xa7, 0xa8, 0x7f, 0xb6, 0x77, 0x47, 0x7b, 0x5f, 0x8b, 0x12, 0x72, 0xd0, 0xd4, 0x91, 0xef, -0xde, 0x19, 0x50, 0x3c, 0xa7, 0x8b, 0xc4, 0xa9, 0xb3, 0x23, 0xcb, 0x76, 0xe6, 0x81, 0xf0, -0xc1, 0x04, 0x8f, 0xa3, 0xb8, 0x54, 0x5b, 0x97, 0xac, 0x19, 0xff, 0x3f, 0x55, 0x27, 0x2f, -0xe0, 0x1d, 0x42, 0x9b, 0x57, 0xfc, 0x4b, 0x4e, 0x0f, 0xce, 0x98, 0xa9, 0x43, 0x57, 0x03, -0xbd, 0xe7, 0xc8, 0x94, 0xdf, 0x6e, 0x36, 0x73, 0x32, 0xb4, 0xef, 0x2e, 0x85, 0x7a, 0x6e, -0xfc, 0x6c, 0x18, 0x82, 0x75, 0x35, 0x90, 0x07, 0xf3, 0xe4, 0x9f, 0x3e, 0xdc, 0x68, 0xf3, -0xb5, 0xf3, 0x19, 0x80, 0x92, 0x06, 0x99, 0xa2, 0xe8, 0x6f, 0xff, 0x2e, 0x7f, 0xae, 0x42, -0xa4, 0x5f, 0xfb, 0xd4, 0x0e, 0x81, 0x2b, 0xc3, 0x04, 0xff, 0x2b, 0xb3, 0x74, 0x4e, 0x36, -0x5b, 0x9c, 0x15, 0x00, 0xc6, 0x47, 0x2b, 0xe8, 0x8b, 0x3d, 0xf1, 0x9c, 0x03, 0x9a, 0x58, -0x7f, 0x9b, 0x9c, 0xbf, 0x85, 0x49, 0x79, 0x35, 0x2e, 0x56, 0x7b, 0x41, 0x14, 0x39, 0x47, -0x83, 0x26, 0xaa, 0x07, 0x89, 0x98, 0x11, 0x1b, 0x86, 0xe7, 0x73, 0x7a, 0xd8, 0x7d, 0x78, -0x61, 0x53, 0xe9, 0x79, 0xf5, 0x36, 0x8d, 0x44, 0x92, 0x84, 0xf9, 0x13, 0x50, 0x58, 0x3b, -0xa4, 0x6a, 0x36, 0x65, 0x49, 0x8e, 0x3c, 0x0e, 0xf1, 0x6f, 0xd2, 0x84, 0xc4, 0x7e, 0x8e, -0x3f, 0x39, 0xae, 0x7c, 0x84, 0xf1, 0x63, 0x37, 0x8e, 0x3c, 0xcc, 0x3e, 0x44, 0x81, 0x45, -0xf1, 0x4b, 0xb9, 0xed, 0x6b, 0x36, 0x5d, 0xbb, 0x20, 0x60, 0x1a, 0x0f, 0xa3, 0xaa, 0x55, -0x77, 0x3a, 0xa9, 0xae, 0x37, 0x4d, 0xba, 0xb8, 0x86, 0x6b, 0xbc, 0x08, 0x50, 0xf6, 0xcc, -0xa4, 0xbd, 0x1d, 0x40, 0x72, 0xa5, 0x86, 0xfa, 0xe2, 0x10, 0xae, 0x3d, 0x58, 0x4b, 0x97, -0xf3, 0x43, 0x74, 0xa9, 0x9e, 0xeb, 0x21, 0xb7, 0x01, 0xa4, 0x86, 0x93, 0x97, 0xee, 0x2f, -0x4f, 0x3b, 0x86, 0xa1, 0x41, 0x6f, 0x41, 0x26, 0x90, 0x78, 0x5c, 0x7f, 0x30, 0x38, 0x4b, -0x3f, 0xaa, 0xec, 0xed, 0x5c, 0x6f, 0x0e, 0xad, 0x43, 0x87, 0xfd, 0x93, 0x35, 0xe6, 0x01, -0xef, 0x41, 0x26, 0x90, 0x99, 0x9e, 0xfb, 0x19, 0x5b, 0xad, 0xd2, 0x91, 0x8a, 0xe0, 0x46, -0xaf, 0x65, 0xfa, 0x4f, 0x84, 0xc1, 0xa1, 0x2d, 0xcf, 0x45, 0x8b, 0xd3, 0x85, 0x50, 0x55, -0x7c, 0xf9, 0x67, 0x88, 0xd4, 0x4e, 0xe9, 0xd7, 0x6b, 0x61, 0x54, 0xa1, 0xa4, 0xa6, 0xa2, -0xc2, 0xbf, 0x30, 0x9c, 0x40, 0x9f, 0x5f, 0xd7, 0x69, 0x2b, 0x24, 0x82, 0x5e, 0xd9, 0xd6, -0xa7, 0x12, 0x54, 0x1a, 0xf7, 0x55, 0x9f, 0x76, 0x50, 0xa9, 0x95, 0x84, 0xe6, 0x6b, 0x6d, -0xb5, 0x96, 0x54, 0xd6, 0xcd, 0xb3, 0xa1, 0x9b, 0x46, 0xa7, 0x94, 0x4d, 0xc4, 0x94, 0xb4, -0x98, 0xe3, 0xe1, 0xe2, 0x34, 0xd5, 0x33, 0x16, 0x07, 0x54, 0xcd, 0xb7, 0x77, 0x53, 0xdb, -0x4f, 0x4d, 0x46, 0x9d, 0xe9, 0xd4, 0x9c, 0x8a, 0x36, 0xb6, 0xb8, 0x38, 0x26, 0x6c, 0x0e, -0xff, 0x9c, 0x1b, 0x43, 0x8b, 0x80, 0xcc, 0xb9, 0x3d, 0xda, 0xc7, 0xf1, 0x8a, 0xf2, 0x6d, -0xb8, 0xd7, 0x74, 0x2f, 0x7e, 0x1e, 0xb7, 0xd3, 0x4a, 0xb4, 0xac, 0xfc, 0x79, 0x48, 0x6c, -0xbc, 0x96, 0xb6, 0x94, 0x46, 0x57, 0x2d, 0xb0, 0xa3, 0xfc, 0x1e, 0xb9, 0x52, 0x60, 0x85, -0x2d, 0x41, 0xd0, 0x43, 0x01, 0x1e, 0x1c, 0xd5, 0x7d, 0xfc, 0xf3, 0x96, 0x0d, 0xc7, 0xcb, -0x2a, 0x29, 0x9a, 0x93, 0xdd, 0x88, 0x2d, 0x37, 0x5d, 0xaa, 0xfb, 0x49, 0x68, 0xa0, 0x9c, -0x50, 0x86, 0x7f, 0x68, 0x56, 0x57, 0xf9, 0x79, 0x18, 0x39, 0xd4, 0xe0, 0x01, 0x84, 0x33, -0x61, 0xca, 0xa5, 0xd2, 0xd6, 0xe4, 0xc9, 0x8a, 0x4a, 0x23, 0x44, 0x4e, 0xbc, 0xf0, 0xdc, -0x24, 0xa1, 0xa0, 0xc4, 0xe2, 0x07, 0x3c, 0x10, 0xc4, 0xb5, 0x25, 0x4b, 0x65, 0x63, 0xf4, -0x80, 0xe7, 0xcf, 0x61, 0xb1, 0x71, 0x82, 0x21, 0x87, 0x2c, 0xf5, 0x91, 0x00, 0x32, 0x0c, -0xec, 0xa9, 0xb5, 0x9a, 0x74, 0x85, 0xe3, 0x36, 0x8f, 0x76, 0x4f, 0x9c, 0x6d, 0xce, 0xbc, -0xad, 0x0a, 0x4b, 0xed, 0x76, 0x04, 0xcb, 0xc3, 0xb9, 0x33, 0x9e, 0x01, 0x93, 0x96, 0x69, -0x7d, 0xc5, 0xa2, 0x45, 0x79, 0x9b, 0x04, 0x5c, 0x84, 0x09, 0xed, 0x88, 0x43, 0xc7, 0xab, -0x93, 0x14, 0x26, 0xa1, 0x40, 0xb5, 0xce, 0x4e, 0xbf, 0x2a, 0x42, 0x85, 0x3e, 0x2c, 0x3b, -0x54, 0xe8, 0x12, 0x1f, 0x0e, 0x97, 0x59, 0xb2, 0x27, 0x89, 0xfa, 0xf2, 0xdf, 0x8e, 0x68, -0x59, 0xdc, 0x06, 0xbc, 0xb6, 0x85, 0x0d, 0x06, 0x22, 0xec, 0xb1, 0xcb, 0xe5, 0x04, 0xe6, -0x3d, 0xb3, 0xb0, 0x41, 0x73, 0x08, 0x3f, 0x3c, 0x58, 0x86, 0x63, 0xeb, 0x50, 0xee, 0x1d, -0x2c, 0x37, 0x74, 0xa9, 0xd3, 0x18, 0xa3, 0x47, 0x6e, 0x93, 0x54, 0xad, 0x0a, 0x5d, 0xb8, -0x2a, 0x55, 0x5d, 0x78, 0xf6, 0xee, 0xbe, 0x8e, 0x3c, 0x76, 0x69, 0xb9, 0x40, 0xc2, 0x34, -0xec, 0x2a, 0xb9, 0xed, 0x7e, 0x20, 0xe4, 0x8d, 0x00, 0x38, 0xc7, 0xe6, 0x8f, 0x44, 0xa8, -0x86, 0xce, 0xeb, 0x2a, 0xe9, 0x90, 0xf1, 0x4c, 0xdf, 0x32, 0xfb, 0x73, 0x1b, 0x6d, 0x92, -0x1e, 0x95, 0xfe, 0xb4, 0xdb, 0x65, 0xdf, 0x4d, 0x23, 0x54, 0x89, 0x48, 0xbf, 0x4a, 0x2e, -0x70, 0xd6, 0xd7, 0x62, 0xb4, 0x33, 0x29, 0xb1, 0x3a, 0x33, 0x4c, 0x23, 0x6d, 0xa6, 0x76, -0xa5, 0x21, 0x63, 0x48, 0xe6, 0x90, 0x5d, 0xed, 0x90, 0x95, 0x0b, 0x7a, 0x84, 0xbe, 0xb8, -0x0d, 0x5e, 0x63, 0x0c, 0x62, 0x26, 0x4c, 0x14, 0x5a, 0xb3, 0xac, 0x23, 0xa4, 0x74, 0xa7, -0x6f, 0x33, 0x30, 0x05, 0x60, 0x01, 0x42, 0xa0, 0x28, 0xb7, 0xee, 0x19, 0x38, 0xf1, 0x64, -0x80, 0x82, 0x43, 0xe1, 0x41, 0x27, 0x1f, 0x1f, 0x90, 0x54, 0x7a, 0xd5, 0x23, 0x2e, 0xd1, -0x3d, 0xcb, 0x28, 0xba, 0x58, 0x7f, 0xdc, 0x7c, 0x91, 0x24, 0xe9, 0x28, 0x51, 0x83, 0x6e, -0xc5, 0x56, 0x21, 0x42, 0xed, 0xa0, 0x56, 0x22, 0xa1, 0x40, 0x80, 0x6b, 0xa8, 0xf7, 0x94, -0xca, 0x13, 0x6b, 0x0c, 0x39, 0xd9, 0xfd, 0xe9, 0xf3, 0x6f, 0xa6, 0x9e, 0xfc, 0x70, 0x8a, -0xb3, 0xbc, 0x59, 0x3c, 0x1e, 0x1d, 0x6c, 0xf9, 0x7c, 0xaf, 0xf9, 0x88, 0x71, 0x95, 0xeb, -0x57, 0x00, 0xbd, 0x9f, 0x8c, 0x4f, 0xe1, 0x24, 0x83, 0xc5, 0x22, 0xea, 0xfd, 0xd3, 0x0c, -0xe2, 0x17, 0x18, 0x7c, 0x6a, 0x4c, 0xde, 0x77, 0xb4, 0x53, 0x9b, 0x4c, 0x81, 0xcd, 0x23, -0x60, 0xaa, 0x0e, 0x25, 0x73, 0x9c, 0x02, 0x79, 0x32, 0x30, 0xdf, 0x74, 0xdf, 0x75, 0x19, -0xf4, 0xa5, 0x14, 0x5c, 0xf7, 0x7a, 0xa8, 0xa5, 0x91, 0x84, 0x7c, 0x60, 0x03, 0x06, 0x3b, -0xcd, 0x50, 0xb6, 0x27, 0x9c, 0xfe, 0xb1, 0xdd, 0xcc, 0xd3, 0xb0, 0x59, 0x24, 0xb2, 0xca, -0xe2, 0x1c, 0x81, 0x22, 0x9d, 0x07, 0x8f, 0x8e, 0xb9, 0xbe, 0x4e, 0xfa, 0xfc, 0x39, 0x65, -0xba, 0xbf, 0x9d, 0x12, 0x37, 0x5e, 0x97, 0x7e, 0xf3, 0x89, 0xf5, 0x5d, 0xf5, 0xe3, 0x09, -0x8c, 0x62, 0xb5, 0x20, 0x9d, 0x0c, 0x53, 0x8a, 0x68, 0x1b, 0xd2, 0x8f, 0x75, 0x17, 0x5d, -0xd4, 0xe5, 0xda, 0x75, 0x62, 0x19, 0x14, 0x6a, 0x26, 0x2d, 0xeb, 0xf8, 0xaf, 0x37, 0xf0, -0x6c, 0xa4, 0x55, 0xb1, 0xbc, 0xe2, 0x33, 0xc0, 0x9a, 0xca, 0xb0, 0x11, 0x49, 0x4f, 0x68, -0x9b, 0x3b, 0x6b, 0x3c, 0xcc, 0x13, 0xf6, 0xc7, 0x85, 0x61, 0x68, 0x42, 0xae, 0xbb, 0xdd, -0xcd, 0x45, 0x16, 0x29, 0x1d, 0xea, 0xdb, 0xc8, 0x03, 0x94, 0x3c, 0xee, 0x4f, 0x82, 0x11, -0xc3, 0xec, 0x28, 0xbd, 0x97, 0x05, 0x99, 0xde, 0xd7, 0xbb, 0x5e, 0x22, 0x1f, 0xd4, 0xeb, -0x64, 0xd9, 0x92, 0xd9, 0x85, 0xb7, 0x6a, 0x05, 0x6a, 0xe4, 0x24, 0x41, 0xf1, 0xcd, 0xf0, -0xd8, 0x3f, 0xf8, 0x9e, 0x0e, 0xcd, 0x0b, 0x7a, 0x70, 0x6b, 0x5a, 0x75, 0x0a, 0x6a, 0x33, -0x88, 0xec, 0x17, 0x75, 0x08, 0x70, 0x10, 0x2f, 0x24, 0xcf, 0xc4, 0xe9, 0x42, 0x00, 0x61, -0x94, 0xca, 0x1f, 0x3a, 0x76, 0x06, 0xfa, 0xd2, 0x48, 0x81, 0xf0, 0x77, 0x60, 0x03, 0x45, -0xd9, 0x61, 0xf4, 0xa4, 0x6f, 0x3d, 0xd9, 0x30, 0xc3, 0x04, 0x6b, 0x54, 0x2a, 0xb7, 0xec, -0x3b, 0xf4, 0x4b, 0xf5, 0x68, 0x52, 0x26, 0xce, 0xff, 0x5d, 0x19, 0x91, 0xa0, 0xa3, 0xa5, -0xa9, 0xb1, 0xe0, 0x23, 0xc4, 0x0a, 0x77, 0x4d, 0xf9, 0x51, 0x20, 0xa3, 0xa5, 0xa9, 0xb1, -0xc1, 0x00, 0x82, 0x86, 0x8e, 0x7f, 0x5d, 0x19, 0x91, 0xa0, 0xa3, 0xc4, 0xeb, 0x54, 0x0b, -0x75, 0x68, 0x52, 0x07, 0x8c, 0x9a, 0x97, 0x8d, 0x79, 0x70, 0x62, 0x46, 0xef, 0x5c, 0x1b, -0x95, 0x89, 0x71, 0x41, 0xe1, 0x21, 0xa1, 0xa1, 0xa1, 0xc0, 0x02, 0x67, 0x4c, 0x1a, 0xb6, -0xcf, 0xfd, 0x78, 0x53, 0x24, 0xab, 0xb5, 0xc9, 0xf1, 0x60, 0x23, 0xa5, 0xc8, 0x12, 0x87, -0x6d, 0x58, 0x13, 0x85, 0x88, 0x92, 0x87, 0x6d, 0x58, 0x32, 0xc7, 0x0c, 0x9a, 0x97, 0xac, -0xda, 0x36, 0xee, 0x5e, 0x3e, 0xdf, 0x1d, 0xb8, 0xf2, 0x66, 0x2f, 0xbd, 0xf8, 0x72, 0x47, -0xed, 0x58, 0x13, 0x85, 0x88, 0x92, 0x87, 0x8c, 0x7b, 0x55, 0x09, 0x90, 0xa2, 0xc6, 0xef, -0x3d, 0xf8, 0x53, 0x24, 0xab, 0xd4, 0x2a, 0xb7, 0xec, 0x5a, 0x36, 0xee, 0x5e, 0x3e, 0xdf, -0x3c, 0xfa, 0x76, 0x4f, 0xfd, 0x59, 0x30, 0xe2, 0x46, 0xef, 0x3d, 0xf8, 0x53, 0x05, 0x69, -0x31, 0xc1, 0x00, 0x82, 0x86, 0x8e, 0x7f, 0x5d, 0x19, 0xb0, 0xe2, 0x27, 0xcc, 0xfb, 0x74, -0x4b, 0x14, 0x8b, 0x94, 0x8b, 0x75, 0x68, 0x33, 0xc5, 0x08, 0x92, 0x87, 0x8c, 0x9a, 0xb6, -0xcf, 0x1c, 0xba, 0xd7, 0x0d, 0x98, 0xb2, 0xe6, 0x2f, 0xdc, 0x1b, 0x95, 0x89, 0x71, 0x60, -0x23, 0xc4, 0x0a, 0x96, 0x8f, 0x9c, 0xba, 0xf6, 0x6e, 0x3f, 0xfc, 0x5b, 0x15, 0xa8, 0xd2, -0x26, 0xaf, 0xbd, 0xf8, 0x72, 0x66, 0x2f, 0xdc, 0x1b, 0xb4, 0xcb, 0x14, 0x8b, 0x94, 0xaa, -0xb7, 0xcd, 0xf9, 0x51, 0x01, 0x80, 0x82, 0x86, 0x6f, 0x3d, 0xd9, 0x30, 0xe2, 0x27, 0xcc, -0xfb, 0x74, 0x4b, 0x14, 0xaa, 0xb7, 0xcd, 0xf9, 0x70, 0x43, 0x04, 0x6b, 0x35, 0xc9, 0xf1, -0x60, 0x23, 0xa5, 0xc8, 0xf3, 0x45, 0x08, 0x92, 0x87, 0x6d, 0x58, 0x32, 0xe6, 0x2f, 0xbd, -0xf8, 0x72, 0x66, 0x4e, 0x1e, 0xbe, 0xfe, 0x7e, 0x7e, 0x7e, 0x5f, 0x1d, 0x99, 0x91, 0xa0, -0xa3, 0xc4, 0x0a, 0x77, 0x4d, 0x18, 0x93, 0xa4, 0xab, 0xd4, 0x0b, 0x75, 0x49, 0x10, 0xa2, -0xc6, 0xef, 0x3d, 0xf8, 0x53, 0x24, 0xab, 0xb5, 0xe8, 0x33, 0xe4, 0x4a, 0x16, 0xae, 0xde, -0x1f, 0xbc, 0xdb, 0x15, 0xa8, 0xb3, 0xc5, 0x08, 0x73, 0x45, 0xe9, 0x31, 0xc1, 0xe1, 0x21, -0xa1, 0xa1, 0xa1, 0xc0, 0x02, 0x86, 0x6f, 0x5c, 0x3a, 0xd7, 0x0d, 0x98, 0x93, 0xa4, 0xca, -0x16, 0xae, 0xde, 0x1f, 0x9d, 0x99, 0xb0, 0xe2, 0x46, 0xef, 0x3d, 0xf8, 0x72, 0x47, 0x0c, -0x9a, 0xb6, 0xcf, 0xfd, 0x59, 0x11, 0xa0, 0xa3, 0xa5, 0xc8, 0xf3, 0x45, 0x08, 0x92, 0x87, -0x6d, 0x39, 0xf0, 0x43, 0x04, 0x8a, 0x96, 0xae, 0xde, 0x3e, 0xdf, 0x1d, 0x99, 0x91, 0xa0, -0xc2, 0x06, 0x6f, 0x3d, 0xf8, 0x72, 0x47, 0x0c, 0x9a, 0x97, 0x8d, 0x98, 0x93, 0x85, 0x88, -0x73, 0x45, 0xe9, 0x31, 0xe0, 0x23, 0xa5, 0xa9, 0xd0, 0x03, 0x84, 0x8a, 0x96, 0xae, 0xde, -0x1f, 0xbc, 0xdb, 0x15, 0xa8, 0xd2, 0x26, 0xce, 0xff, 0x5d, 0x19, 0x91, 0x81, 0x80, 0x82, -0x67, 0x2d, 0xd8, 0x13, 0xa4, 0xab, 0xd4, 0x0b, 0x94, 0xaa, 0xb7, 0xcd, 0xf9, 0x51, 0x20, -0xa3, 0xa5, 0xc8, 0xf3, 0x45, 0xe9, 0x50, 0x22, 0xc6, 0xef, 0x5c, 0x3a, 0xd7, 0x0d, 0x98, -0x93, 0x85, 0x88, 0x73, 0x64, 0x4a, 0xf7, 0x4d, 0xf9, 0x51, 0x20, 0xa3, 0xc4, 0x0a, 0x96, -0xae, 0xde, 0x3e, 0xfe, 0x7e, 0x7e, 0x7e, 0x5f, 0x3c, 0xfa, 0x76, 0x4f, 0xfd, 0x78, 0x72, -0x66, 0x2f, 0xbd, 0xd9, 0x30, 0xc3, 0xe5, 0x48, 0x12, 0x87, 0x8c, 0x7b, 0x55, 0x28, 0xd2, -0x07, 0x8c, 0x9a, 0x97, 0xac, 0xda, 0x17, 0x8d, 0x79, 0x51, 0x20, 0xa3, 0xc4, 0xeb, 0x54, -0x0b, 0x94, 0x8b, 0x94, 0xaa, 0xd6, 0x2e, 0xbf, 0xfc, 0x5b, 0x15, 0xa8, 0xd2, 0x26, 0xaf, -0xdc, 0x1b, 0xb4, 0xea, 0x37, 0xec, 0x3b, 0xf4, 0x6a, 0x37, 0xcd, 0x18, 0x93, 0x85, 0x69, -0x31, 0xc1, 0xe1, 0x40, 0xe3, 0x25, 0xc8, 0x12, 0x87, 0x8c, 0x9a, 0xb6, 0xcf, 0xfd, 0x59, -0x11, 0xa0, 0xc2, 0x06, 0x8e, 0x7f, 0x5d, 0x38, 0xf2, 0x47, 0x0c, 0x7b, 0x74, 0x6a, 0x37, -0xec, 0x5a, 0x36, 0xee, 0x3f, 0xfc, 0x7a, 0x76, 0x4f, 0x1c, 0x9b, 0x95, 0x89, 0x71, 0x41, -0x00, 0x63, 0x44, 0xeb, 0x54, 0x2a, 0xd6, 0x0f, 0x9c, 0xba, 0xd7, 0x0d, 0x98, 0x93, 0x85, -0x69, 0x31, 0xc1, 0x00, 0x82, 0x86, 0x8e, 0x9e, 0xbe, 0xdf, 0x3c, 0xfa, 0x57, 0x2c, 0xda, -0x36, 0xee, 0x3f, 0xfc, 0x5b, 0x15, 0x89, 0x71, 0x41, 0x00, 0x82, 0x86, 0x8e, 0x7f, 0x5d, -0x38, 0xf2, 0x47, 0xed, 0x58, 0x13, 0xa4, 0xca, 0xf7, 0x4d, 0xf9, 0x51, 0x01, 0x80, 0x63, -0x44, 0xeb, 0x54, 0x2a, 0xd6, 0x2e, 0xbf, 0xdd, 0x19, 0x91, 0xa0, 0xa3, 0xa5, 0xa9, 0xb1, -0xe0, 0x42, 0x06, 0x8e, 0x7f, 0x5d, 0x19, 0x91, 0xa0, 0xa3, 0xc4, 0x0a, 0x96, 0x8f, 0x7d, -0x78, 0x72, 0x47, 0x0c, 0x7b, 0x74, 0x6a, 0x56, 0x2e, 0xde, 0x1f, 0xbc, 0xfa, 0x57, 0x0d, -0x79, 0x51, 0x01, 0x61, 0x21, 0xa1, 0xc0, 0xe3, 0x25, 0xa9, 0xb1, 0xc1, 0xe1, 0x40, 0x02, -0x67, 0x4c, 0x1a, 0x97, 0x8d, 0x98, 0x93, 0xa4, 0xab, 0xd4, 0x2a, 0xd6, 0x0f, 0x9c, 0x9b, -0xb4, 0xcb, 0x14, 0xaa, 0xb7, 0xcd, 0xf9, 0x51, 0x20, 0xa3, 0xc4, 0xeb, 0x35, 0xc9, 0xf1, -0x60, 0x42, 0x06, 0x8e, 0x7f, 0x7c, 0x7a, 0x76, 0x6e, 0x3f, 0xfc, 0x7a, 0x76, 0x6e, 0x5e, -0x3e, 0xfe, 0x7e, 0x5f, 0x3c, 0xdb, 0x15, 0x89, 0x71, 0x41, 0xe1, 0x21, 0xc0, 0xe3, 0x44, -0xeb, 0x54, 0x2a, 0xb7, 0xcd, 0xf9, 0x70, 0x62, 0x27, 0xad, 0xd8, 0x32, 0xc7, 0x0c, 0x7b, -0x74, 0x4b, 0x14, 0xaa, 0xb7, 0xec, 0x3b, 0xd5, 0x28, 0xd2, 0x07, 0x6d, 0x39, 0xd1, 0x20, -0xc2, 0xe7, 0x4c, 0x1a, 0x97, 0x8d, 0x98, 0xb2, 0xc7, 0x0c, 0x59, 0x28, 0xf3, 0x9b }; - -// clang-format off diff --git a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/pointer_transport.c b/keyboards/handwired/dactyl_manuform/5x6_right_trackball/pointer_transport.c deleted file mode 100644 index 1a9aeb2e32ad..000000000000 --- a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/pointer_transport.c +++ /dev/null @@ -1,616 +0,0 @@ -/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include -#include - -#include "matrix.h" -#include QMK_KEYBOARD_H - -#define ROWS_PER_HAND (MATRIX_ROWS / 2) -#define SYNC_TIMER_OFFSET 2 - -#ifdef RGBLIGHT_ENABLE -# include "rgblight.h" -#endif - -#ifdef BACKLIGHT_ENABLE -# include "backlight.h" -#endif - -#ifdef ENCODER_ENABLE -# include "encoder.h" -static pin_t encoders_pad[] = ENCODERS_PAD_A; -# define NUMBER_OF_ENCODERS (sizeof(encoders_pad) / sizeof(pin_t)) -#endif - -#if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT) -# include "led_matrix.h" -#endif -#if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) -# include "rgb_matrix.h" -#endif - -#ifdef POINTING_DEVICE_ENABLE -static uint16_t device_cpi = 0; -static int8_t split_mouse_x = 0, split_mouse_y = 0; -#endif - -#ifdef OLED_DRIVER_ENABLE -# include "oled_driver.h" -#endif - -#if defined(USE_I2C) - -# include "i2c_master.h" -# include "i2c_slave.h" - -typedef struct _I2C_slave_buffer_t { -# ifndef DISABLE_SYNC_TIMER - uint32_t sync_timer; -# endif -# ifdef SPLIT_TRANSPORT_MIRROR - matrix_row_t mmatrix[ROWS_PER_HAND]; -# endif - matrix_row_t smatrix[ROWS_PER_HAND]; -# ifdef SPLIT_MODS_ENABLE - uint8_t real_mods; - uint8_t weak_mods; -# ifndef NO_ACTION_ONESHOT - uint8_t oneshot_mods; -# endif -# endif -# ifdef BACKLIGHT_ENABLE - uint8_t backlight_level; -# endif -# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) - rgblight_syncinfo_t rgblight_sync; -# endif -# ifdef ENCODER_ENABLE - uint8_t encoder_state[NUMBER_OF_ENCODERS]; -# endif -# ifdef WPM_ENABLE - uint8_t current_wpm; -# endif - int8_t mouse_x; - int8_t mouse_y; - uint16_t device_cpi; - bool oled_on; - layer_state_t t_layer_state; - layer_state_t t_default_layer_state; -# if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT) - led_eeconfig_t led_matrix; - bool led_suspend_state; -# endif -# if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) - rgb_config_t rgb_matrix; - bool rgb_suspend_state; -# endif -} __attribute__((packed)) I2C_slave_buffer_t; - -static I2C_slave_buffer_t *const i2c_buffer = (I2C_slave_buffer_t *)i2c_slave_reg; - -# define I2C_BACKLIGHT_START offsetof(I2C_slave_buffer_t, backlight_level) -# define I2C_RGB_START offsetof(I2C_slave_buffer_t, rgblight_sync) -# define I2C_KEYMAP_MASTER_START offsetof(I2C_slave_buffer_t, mmatrix) -# define I2C_KEYMAP_SLAVE_START offsetof(I2C_slave_buffer_t, smatrix) -# define I2C_SYNC_TIME_START offsetof(I2C_slave_buffer_t, sync_timer) -# define I2C_REAL_MODS_START offsetof(I2C_slave_buffer_t, real_mods) -# define I2C_WEAK_MODS_START offsetof(I2C_slave_buffer_t, weak_mods) -# define I2C_ONESHOT_MODS_START offsetof(I2C_slave_buffer_t, oneshot_mods) -# define I2C_ENCODER_START offsetof(I2C_slave_buffer_t, encoder_state) -# define I2C_WPM_START offsetof(I2C_slave_buffer_t, current_wpm) -# define I2C_MOUSE_X_START offsetof(I2C_slave_buffer_t, mouse_x) -# define I2C_MOUSE_Y_START offsetof(I2C_slave_buffer_t, mouse_y) -# define I2C_MOUSE_DPI_START offsetof(I2C_slave_buffer_t, device_cpi) -# define I2C_OLED_ON_START offsetof(I2C_slave_buffer_t, oled_on) -# define I2C_LAYER_STATE_START offsetof(I2C_slave_buffer_t, t_layer_state) -# define I2C_DEFAULT_LAYER_STATE_START offsetof(I2C_slave_buffer_t, t_default_layer_state) -# define I2C_LED_MATRIX_START offsetof(I2C_slave_buffer_t, led_matrix) -# define I2C_LED_SUSPEND_START offsetof(I2C_slave_buffer_t, led_suspend_state) -# define I2C_RGB_MATRIX_START offsetof(I2C_slave_buffer_t, rgb_matrix) -# define I2C_RGB_SUSPEND_START offsetof(I2C_slave_buffer_t, rgb_suspend_state) - -# define TIMEOUT 100 - -# ifndef SLAVE_I2C_ADDRESS -# define SLAVE_I2C_ADDRESS 0x32 -# endif - -// Get rows from other half over i2c -bool transport_master(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { - i2c_readReg(SLAVE_I2C_ADDRESS, I2C_KEYMAP_SLAVE_START, (void *)slave_matrix, sizeof(i2c_buffer->smatrix), TIMEOUT); -# ifdef SPLIT_TRANSPORT_MIRROR - i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_KEYMAP_MASTER_START, (void *)master_matrix, sizeof(i2c_buffer->mmatrix), TIMEOUT); -# endif - // write backlight info -# ifdef BACKLIGHT_ENABLE - uint8_t level = is_backlight_enabled() ? get_backlight_level() : 0; - if (level != i2c_buffer->backlight_level) { - if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_BACKLIGHT_START, (void *)&level, sizeof(level), TIMEOUT) >= 0) { - i2c_buffer->backlight_level = level; - } - } -# endif - -# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) - if (rgblight_get_change_flags()) { - rgblight_syncinfo_t rgblight_sync; - rgblight_get_syncinfo(&rgblight_sync); - if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_RGB_START, (void *)&rgblight_sync, sizeof(rgblight_sync), TIMEOUT) >= 0) { - rgblight_clear_change_flags(); - } - } -# endif - -# ifdef ENCODER_ENABLE - i2c_readReg(SLAVE_I2C_ADDRESS, I2C_ENCODER_START, (void *)i2c_buffer->encoder_state, sizeof(i2c_buffer->encoder_state), TIMEOUT); - encoder_update_raw(i2c_buffer->encoder_state); -# endif - -# ifdef WPM_ENABLE - uint8_t current_wpm = get_current_wpm(); - if (current_wpm != i2c_buffer->current_wpm) { - if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_WPM_START, (void *)¤t_wpm, sizeof(current_wpm), TIMEOUT) >= 0) { - i2c_buffer->current_wpm = current_wpm; - } - } -# endif - -# ifdef POINTING_DEVICE_ENABLE - if (is_keyboard_left()) { - report_mouse_t temp_report = pointing_device_get_report(); - i2c_readReg(SLAVE_I2C_ADDRESS, I2C_MOUSE_X_START, (void *)&i2c_buffer->mouse_x, sizeof(i2c_buffer->mouse_x), TIMEOUT); - temp_report.x = i2c_buffer->mouse_x; - i2c_readReg(SLAVE_I2C_ADDRESS, I2C_MOUSE_Y_START, (void *)&i2c_buffer->mouse_y, sizeof(i2c_buffer->mouse_y), TIMEOUT); - temp_report.y = i2c_buffer->mouse_y; - pointing_device_set_report(temp_report); - - if (device_cpi != i2c_buffer->device_cpi) { - if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_MOUSE_DPI_START, (void *)&device_cpi, sizeof(device_cpi), TIMEOUT) >= 0) { - i2c_buffer->device_cpi = device_cpi - } - } - } -# endif - -# ifdef SPLIT_MODS_ENABLE - uint8_t real_mods = get_mods(); - if (real_mods != i2c_buffer->real_mods) { - if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_REAL_MODS_START, (void *)&real_mods, sizeof(real_mods), TIMEOUT) >= 0) { - i2c_buffer->real_mods = real_mods; - } - } - - uint8_t weak_mods = get_weak_mods(); - if (weak_mods != i2c_buffer->weak_mods) { - if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_WEAK_MODS_START, (void *)&weak_mods, sizeof(weak_mods), TIMEOUT) >= 0) { - i2c_buffer->weak_mods = weak_mods; - } - } - -# ifndef NO_ACTION_ONESHOT - uint8_t oneshot_mods = get_oneshot_mods(); - if (oneshot_mods != i2c_buffer->oneshot_mods) { - if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_ONESHOT_MODS_START, (void *)&oneshot_mods, sizeof(oneshot_mods), TIMEOUT) >= 0) { - i2c_buffer->oneshot_mods = oneshot_mods; - } - } -# endif -# endif - - if (layer_state != i2c_buffer->t_layer_state) { - if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_LAYER_STATE_START, (void *)&layer_state, sizeof(layer_state), TIMEOUT) >= 0) { - i2c_buffer->t_layer_state = layer_state; - } - } - - if (default_layer_state != i2c_buffer->t_default_layer_state) { - if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_DEFAULT_LAYER_STATE_START, (void *)&default_layer_state, sizeof(default_layer_state), TIMEOUT) >= 0) { - i2c_buffer->t_default_layer_state = default_layer_state; - } - } - -# ifdef OLED_DRIVER_ENABLE - bool is_oled_on = is_oled_on(); - if (is_oled_on != i2c_buffer->oled_on) { - if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_LAYER_STATE_START, (void *)&is_oled_on, sizeof(is_oled_on), TIMEOUT) >= 0) { - i2c_buffer->oled_on = is_oled_on; - } - } -# endif - -# if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT) - i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_LED_MATRIX_START, (void *)led_matrix_eeconfig, sizeof(i2c_buffer->led_matrix), TIMEOUT); - bool suspend_state = led_matrix_get_suspend_state(); - i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_LED_SUSPEND_START, (void *)suspend_state, sizeof(i2c_buffer->led_suspend_state), TIMEOUT); -# endif -# if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) - i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_RGB_MATRIX_START, (void *)rgb_matrix_config, sizeof(i2c_buffer->rgb_matrix), TIMEOUT); - bool suspend_state = rgb_matrix_get_suspend_state(); - i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_RGB_SUSPEND_START, (void *)suspend_state, sizeof(i2c_buffer->rgb_suspend_state), TIMEOUT); -# endif - -# ifndef DISABLE_SYNC_TIMER - i2c_buffer->sync_timer = sync_timer_read32() + SYNC_TIMER_OFFSET; - i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_SYNC_TIME_START, (void *)&i2c_buffer->sync_timer, sizeof(i2c_buffer->sync_timer), TIMEOUT); -# endif - - return true; -} - -void transport_slave(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { -# ifndef DISABLE_SYNC_TIMER - sync_timer_update(i2c_buffer->sync_timer); -# endif - // Copy matrix to I2C buffer - memcpy((void *)i2c_buffer->smatrix, (void *)slave_matrix, sizeof(i2c_buffer->smatrix)); -# ifdef SPLIT_TRANSPORT_MIRROR - memcpy((void *)master_matrix, (void *)i2c_buffer->mmatrix, sizeof(i2c_buffer->mmatrix)); -# endif - -// Read Backlight Info -# ifdef BACKLIGHT_ENABLE - backlight_set(i2c_buffer->backlight_level); -# endif - -# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) - // Update the RGB with the new data - if (i2c_buffer->rgblight_sync.status.change_flags != 0) { - rgblight_update_sync(&i2c_buffer->rgblight_sync, false); - i2c_buffer->rgblight_sync.status.change_flags = 0; - } -# endif - -# ifdef ENCODER_ENABLE - encoder_state_raw(i2c_buffer->encoder_state); -# endif - -# ifdef WPM_ENABLE - set_current_wpm(i2c_buffer->current_wpm); -# endif - -# ifdef POINTING_DEVICE_ENABLE - if (!is_keyboard_left()) { - static uint16_t cpi; - if (cpi != i2c_buffer->device_cpi) { - cpi = i2c_buffer->device_cpi; - pmw_set_cpi(cpi); - } - i2c_buffer->mouse_x = split_mouse_x; - i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_MOUSE_X_START, (void *)&i2c_buffer->mouse_x, sizeof(i2c_buffer->mouse_x), TIMEOUT); - i2c_buffer->mouse_y = split_mouse_y; - i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_MOUSE_Y_START, (void *)&i2c_buffer->mouse_y, sizeof(i2c_buffer->mouse_y), TIMEOUT); - } - -# endif - -# ifdef SPLIT_MODS_ENABLE - set_mods(i2c_buffer->real_mods); - set_weak_mods(i2c_buffer->weak_mods); -# ifndef NO_ACTION_ONESHOT - set_oneshot_mods(i2c_buffer->oneshot_mods); -# endif -# endif - - if (layer_state != i2c_buffer->t_layer_state) { - layer_state = i2c_buffer->t_layer_state; - } - if (default_layer_state != i2c_buffer->t_default_layer_state) { - default_layer_state = i2c_buffer->t_default_layer_state; - } - -# ifdef OLED_DRIVER_ENABLE - if (i2c_buffer->oled_on) { - oled_on(); - } else { - oled_off(); - } -# endif - -# if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT) - memcpy((void *)i2c_buffer->led_matrix, (void *)led_matrix_eeconfig, sizeof(i2c_buffer->led_matrix)); - led_matrix_set_suspend_state(i2c_buffer->led_suspend_state); -# endif -# if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) - memcpy((void *)i2c_buffer->rgb_matrix, (void *)rgb_matrix_config, sizeof(i2c_buffer->rgb_matrix)); - rgb_matrix_set_suspend_state(i2c_buffer->rgb_suspend_state); -# endif -} - -void transport_master_init(void) { i2c_init(); } - -void transport_slave_init(void) { i2c_slave_init(SLAVE_I2C_ADDRESS); } - -#else // USE_SERIAL - -# include "serial.h" - -typedef struct _Serial_s2m_buffer_t { - // TODO: if MATRIX_COLS > 8 change to uint8_t packed_matrix[] for pack/unpack - matrix_row_t smatrix[ROWS_PER_HAND]; -# ifdef ENCODER_ENABLE - uint8_t encoder_state[NUMBER_OF_ENCODERS]; -# endif - int8_t mouse_x; - int8_t mouse_y; -} __attribute__((packed)) Serial_s2m_buffer_t; - -typedef struct _Serial_m2s_buffer_t { -# ifdef SPLIT_MODS_ENABLE - uint8_t real_mods; - uint8_t weak_mods; -# ifndef NO_ACTION_ONESHOT - uint8_t oneshot_mods; -# endif -# endif -# ifndef DISABLE_SYNC_TIMER - uint32_t sync_timer; -# endif -# ifdef SPLIT_TRANSPORT_MIRROR - matrix_row_t mmatrix[ROWS_PER_HAND]; -# endif -# ifdef BACKLIGHT_ENABLE - uint8_t backlight_level; -# endif -# ifdef WPM_ENABLE - uint8_t current_wpm; -# endif - uint16_t device_cpi; - bool oled_on; - layer_state_t t_layer_state; - layer_state_t t_default_layer_state; -# if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT) - led_eeconfig_t led_matrix; - bool led_suspend_state; -# endif -# if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) - rgb_config_t rgb_matrix; - bool rgb_suspend_state; -# endif -} __attribute__((packed)) Serial_m2s_buffer_t; - -# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) -// When MCUs on both sides drive their respective RGB LED chains, -// it is necessary to synchronize, so it is necessary to communicate RGB -// information. In that case, define RGBLIGHT_SPLIT with info on the number -// of LEDs on each half. -// -// Otherwise, if the master side MCU drives both sides RGB LED chains, -// there is no need to communicate. - -typedef struct _Serial_rgblight_t { - rgblight_syncinfo_t rgblight_sync; -} Serial_rgblight_t; - -volatile Serial_rgblight_t serial_rgblight = {}; -uint8_t volatile status_rgblight = 0; -# endif - -volatile Serial_s2m_buffer_t serial_s2m_buffer = {}; -volatile Serial_m2s_buffer_t serial_m2s_buffer = {}; -uint8_t volatile status0 = 0; - -enum serial_transaction_id { - GET_SLAVE_MATRIX = 0, -# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) - PUT_RGBLIGHT, -# endif -}; - -SSTD_t transactions[] = { - [GET_SLAVE_MATRIX] = - { - (uint8_t *)&status0, - sizeof(serial_m2s_buffer), - (uint8_t *)&serial_m2s_buffer, - sizeof(serial_s2m_buffer), - (uint8_t *)&serial_s2m_buffer, - }, -# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) - [PUT_RGBLIGHT] = - { - (uint8_t *)&status_rgblight, sizeof(serial_rgblight), (uint8_t *)&serial_rgblight, 0, NULL // no slave to master transfer - }, -# endif -}; - -void transport_master_init(void) { soft_serial_initiator_init(transactions, TID_LIMIT(transactions)); } - -void transport_slave_init(void) { soft_serial_target_init(transactions, TID_LIMIT(transactions)); } - -# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) - -// rgblight synchronization information communication. - -void transport_rgblight_master(void) { - if (rgblight_get_change_flags()) { - rgblight_get_syncinfo((rgblight_syncinfo_t *)&serial_rgblight.rgblight_sync); - if (soft_serial_transaction(PUT_RGBLIGHT) == TRANSACTION_END) { - rgblight_clear_change_flags(); - } - } -} - -void transport_rgblight_slave(void) { - if (status_rgblight == TRANSACTION_ACCEPTED) { - rgblight_update_sync((rgblight_syncinfo_t *)&serial_rgblight.rgblight_sync, false); - status_rgblight = TRANSACTION_END; - } -} - -# else -# define transport_rgblight_master() -# define transport_rgblight_slave() -# endif - -bool transport_master(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { -# ifndef SERIAL_USE_MULTI_TRANSACTION - if (soft_serial_transaction() != TRANSACTION_END) { - return false; - } -# else - transport_rgblight_master(); - if (soft_serial_transaction(GET_SLAVE_MATRIX) != TRANSACTION_END) { - return false; - } -# endif - - // TODO: if MATRIX_COLS > 8 change to unpack() - for (int i = 0; i < ROWS_PER_HAND; ++i) { - slave_matrix[i] = serial_s2m_buffer.smatrix[i]; -# ifdef SPLIT_TRANSPORT_MIRROR - serial_m2s_buffer.mmatrix[i] = master_matrix[i]; -# endif - } - -# ifdef BACKLIGHT_ENABLE - // Write backlight level for slave to read - serial_m2s_buffer.backlight_level = is_backlight_enabled() ? get_backlight_level() : 0; -# endif - -# ifdef ENCODER_ENABLE - encoder_update_raw((uint8_t *)serial_s2m_buffer.encoder_state); -# endif - -# ifdef WPM_ENABLE - // Write wpm to slave - serial_m2s_buffer.current_wpm = get_current_wpm(); -# endif - -# ifdef SPLIT_MODS_ENABLE - serial_m2s_buffer.real_mods = get_mods(); - serial_m2s_buffer.weak_mods = get_weak_mods(); -# ifndef NO_ACTION_ONESHOT - serial_m2s_buffer.oneshot_mods = get_oneshot_mods(); -# endif -# endif - -# ifdef POINTING_DEVICE_ENABLE - if (is_keyboard_left()) { - report_mouse_t temp_report = pointing_device_get_report(); - temp_report.x = serial_s2m_buffer.mouse_x; - temp_report.y = serial_s2m_buffer.mouse_y; - pointing_device_set_report(temp_report); - serial_m2s_buffer.device_cpi = device_cpi; - } -# endif - - serial_m2s_buffer.t_layer_state = layer_state; - serial_m2s_buffer.t_default_layer_state = default_layer_state; -# ifdef OLED_DRIVER_ENABLE - serial_m2s_buffer.oled_on = is_oled_on(); -# endif - -# if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT) - serial_m2s_buffer.led_matrix = led_matrix_eeconfig; - serial_m2s_buffer.led_suspend_state = led_matrix_get_suspend_state(); -# endif -# if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) - serial_m2s_buffer.rgb_matrix = rgb_matrix_config; - serial_m2s_buffer.rgb_suspend_state = rgb_matrix_get_suspend_state(); -# endif -# ifndef DISABLE_SYNC_TIMER - serial_m2s_buffer.sync_timer = sync_timer_read32() + SYNC_TIMER_OFFSET; -# endif - return true; -} - -void transport_slave(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { - transport_rgblight_slave(); -# ifndef DISABLE_SYNC_TIMER - sync_timer_update(serial_m2s_buffer.sync_timer); -# endif - - // TODO: if MATRIX_COLS > 8 change to pack() - for (int i = 0; i < ROWS_PER_HAND; ++i) { - serial_s2m_buffer.smatrix[i] = slave_matrix[i]; -# ifdef SPLIT_TRANSPORT_MIRROR - master_matrix[i] = serial_m2s_buffer.mmatrix[i]; -# endif - } - -# ifdef BACKLIGHT_ENABLE - backlight_set(serial_m2s_buffer.backlight_level); -# endif - -# ifdef ENCODER_ENABLE - encoder_state_raw((uint8_t *)serial_s2m_buffer.encoder_state); -# endif - -# ifdef WPM_ENABLE - set_current_wpm(serial_m2s_buffer.current_wpm); -# endif - -# ifdef SPLIT_MODS_ENABLE - set_mods(serial_m2s_buffer.real_mods); - set_weak_mods(serial_m2s_buffer.weak_mods); -# ifndef NO_ACTION_ONESHOT - set_oneshot_mods(serial_m2s_buffer.oneshot_mods); -# endif -# endif - -# ifdef POINTING_DEVICE_ENABLE - if (!is_keyboard_left()) { - static uint16_t cpi; - if (cpi != serial_m2s_buffer.device_cpi) { - cpi = serial_m2s_buffer.device_cpi; - pmw_set_cpi(cpi); - } - serial_s2m_buffer.mouse_x = split_mouse_x; - serial_s2m_buffer.mouse_y = split_mouse_y; - } -# endif - - if (layer_state != serial_m2s_buffer.t_layer_state) { - layer_state = serial_m2s_buffer.t_layer_state; - } - if (default_layer_state != serial_m2s_buffer.t_default_layer_state) { - default_layer_state = serial_m2s_buffer.t_default_layer_state; - } -# ifdef OLED_DRIVER_ENABLE - if (serial_m2s_buffer.oled_on) { - oled_on(); - } else { - oled_off(); - } -# endif - -# if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT) - led_matrix_eeconfig = serial_m2s_buffer.led_matrix; - led_matrix_set_suspend_state(serial_m2s_buffer.led_suspend_state); -# endif -# if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) - rgb_matrix_config = serial_m2s_buffer.rgb_matrix; - rgb_matrix_set_suspend_state(serial_m2s_buffer.rgb_suspend_state); -# endif -} - -#endif - -#ifdef POINTING_DEVICE_ENABLE -void master_mouse_send(int8_t x, int8_t y) { - split_mouse_x = x; - split_mouse_y = y; -} -void trackball_set_cpi(uint16_t cpi) { - if (!is_keyboard_left()) { - pmw_set_cpi(cpi); - } else { - device_cpi = cpi; - } -} -#endif diff --git a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/post_config.h b/keyboards/handwired/dactyl_manuform/5x6_right_trackball/post_config.h deleted file mode 100644 index 40f1029b5d3d..000000000000 --- a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/post_config.h +++ /dev/null @@ -1,33 +0,0 @@ -/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#ifndef MOUSEKEY_WHEEL_DELTA -# define MOUSEKEY_WHEEL_DELTA 1 -#endif -#ifndef MOUSEKEY_WHEEL_DELAY -# define MOUSEKEY_WHEEL_DELAY 200 -#endif -#ifndef MOUSEKEY_WHEEL_INTERVAL -# define MOUSEKEY_WHEEL_INTERVAL 50 -#endif -#ifndef MOUSEKEY_WHEEL_MAX_SPEED -# define MOUSEKEY_WHEEL_MAX_SPEED 8 -#endif -#ifndef MOUSEKEY_WHEEL_TIME_TO_MAX -# define MOUSEKEY_WHEEL_TIME_TO_MAX 80 -#endif diff --git a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/rules.mk b/keyboards/handwired/dactyl_manuform/5x6_right_trackball/rules.mk deleted file mode 100644 index 3fb9ab2a84c3..000000000000 --- a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/rules.mk +++ /dev/null @@ -1,31 +0,0 @@ -# MCU name -MCU = at90usb1286 - -# Bootloader selection -BOOTLOADER = halfkay - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -# 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth -AUDIO_ENABLE = no # Audio output -SWAP_HANDS_ENABLE = yes -POINTING_DEVICE_ENABLE = yes -MOUSE_SHARED_EP = no - -SPLIT_KEYBOARD = yes -SPLIT_TRANSPORT = custom - -SRC += pmw3360.c -QUANTUM_LIB_SRC += pointer_transport.c serial.c i2c_master.c i2c_slave.c spi_master.c diff --git a/keyboards/handwired/dactyl_manuform/5x7/5x7.c b/keyboards/handwired/dactyl_manuform/5x7/5x7.c index 135014d6554d..aae28e450c9d 100644 --- a/keyboards/handwired/dactyl_manuform/5x7/5x7.c +++ b/keyboards/handwired/dactyl_manuform/5x7/5x7.c @@ -1,23 +1 @@ #include "5x7.h" - - -#ifdef SSD1306OLED -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - led_set_user(usb_led); -} -#endif - -void matrix_init_kb(void) { - - // // green led on - // DDRD |= (1<<5); - // PORTD &= ~(1<<5); - - // // orange led on - // DDRB |= (1<<0); - // PORTB &= ~(1<<0); - - matrix_init_user(); -}; - diff --git a/keyboards/handwired/dactyl_manuform/5x7/5x7.h b/keyboards/handwired/dactyl_manuform/5x7/5x7.h index c01fce957c88..0c0c781be7c4 100644 --- a/keyboards/handwired/dactyl_manuform/5x7/5x7.h +++ b/keyboards/handwired/dactyl_manuform/5x7/5x7.h @@ -1,23 +1,16 @@ #pragma once #include "dactyl_manuform.h" -#include "quantum.h" -#ifdef USE_I2C -#include -#ifdef __AVR__ - #include - #include -#endif -#endif +#define XXX KC_NO #define LAYOUT_5x7( \ - L11, L12, L13, L14, L15, L16, L17, \ - L21, L22, L23, L24, L25, L26, L27, \ - L31, L32, L33, L34, L35, L36, L37, \ - L41, L42, L43, L44, L45, L46, \ - L51, L52, L53, L54, \ - L55, L56, \ + L11, L12, L13, L14, L15, L16, L17, \ + L21, L22, L23, L24, L25, L26, L27, \ + L31, L32, L33, L34, L35, L36, L37, \ + L41, L42, L43, L44, L45, L46, \ + L51, L52, L53, L54, \ + L55, L56, \ L65, L66, \ L63, L64, \ R11, R12, R13, R14, R15, R16, R17, \ @@ -25,21 +18,20 @@ R31, R32, R33, R34, R35, R36, R37, \ R42, R43, R44, R45, R46, R47, \ R54, R55, R56, R57, \ - R52, R53, \ - R62, R63, \ - R64, R65 \ - ) \ - { \ - { L11, L12, L13, L14, L15, L16, L17 }, \ - { L21, L22, L23, L24, L25, L26, L27 }, \ - { L31, L32, L33, L34, L35, L36, L37 }, \ - { L41, L42, L43, L44, L45, L46, KC_NO }, \ - { L51, L52, L53, L54, L55, L56, KC_NO }, \ - { KC_NO, KC_NO, L63, L64, L65, L66, KC_NO }, \ - { R11, R12, R13, R14, R15, R16, R17 }, \ - { R21, R22, R23, R24, R25, R26, R27 }, \ - { R31, R32, R33, R34, R35, R36, R37 }, \ - { KC_NO, R42, R43, R44, R45, R46, R47 }, \ - { KC_NO, R52, R53, R54, R55, R56, R57 }, \ - { KC_NO, R62, R63, R64, R65, KC_NO, KC_NO } \ + R52, R53, \ + R62, R63, \ + R64, R65 \ +) { \ + { L11, L12, L13, L14, L15, L16, L17 }, \ + { L21, L22, L23, L24, L25, L26, L27 }, \ + { L31, L32, L33, L34, L35, L36, L37 }, \ + { L41, L42, L43, L44, L45, L46, XXX }, \ + { L51, L52, L53, L54, L55, L56, XXX }, \ + { XXX, XXX, L63, L64, L65, L66, XXX }, \ + { R11, R12, R13, R14, R15, R16, R17 }, \ + { R21, R22, R23, R24, R25, R26, R27 }, \ + { R31, R32, R33, R34, R35, R36, R37 }, \ + { XXX, R42, R43, R44, R45, R46, R47 }, \ + { XXX, R52, R53, R54, R55, R56, R57 }, \ + { XXX, R62, R63, R64, R65, XXX, XXX } \ } diff --git a/keyboards/handwired/dactyl_manuform/5x7/config.h b/keyboards/handwired/dactyl_manuform/5x7/config.h index 32c351a47289..6b915d611871 100644 --- a/keyboards/handwired/dactyl_manuform/5x7/config.h +++ b/keyboards/handwired/dactyl_manuform/5x7/config.h @@ -20,9 +20,9 @@ along with this program. If not, see . #include "config_common.h" -#define PRODUCT_ID 0x3537 -#define DEVICE_VER 0x0001 -#define PRODUCT Dactyl-Manuform (5x7) +#define PRODUCT_ID 0x3537 +#define DEVICE_VER 0x0001 +#define PRODUCT Dactyl-Manuform (5x7) /* key matrix size */ // Rows are doubled-up diff --git a/keyboards/handwired/dactyl_manuform/5x7/info.json b/keyboards/handwired/dactyl_manuform/5x7/info.json index 33ba1b0e796b..7280e90ca0cf 100644 --- a/keyboards/handwired/dactyl_manuform/5x7/info.json +++ b/keyboards/handwired/dactyl_manuform/5x7/info.json @@ -2,85 +2,98 @@ "keyboard_name": "Dactyl Manuform 5x7", "url": "", "maintainer": "qmk", - "width": 17, - "height": 8, "layouts": { "LAYOUT_5x7": { "layout": [ - {"label":"L11", "x":0, "y":0}, - {"label":"L12", "x":1, "y":0}, - {"label":"L13", "x":2, "y":0}, - {"label":"L14", "x":3, "y":0}, - {"label":"L15", "x":4, "y":0}, - {"label":"L16", "x":5, "y":0}, - {"label":"L17", "x":6, "y":0}, - {"label":"L21", "x":0, "y":1}, - {"label":"L22", "x":1, "y":1}, - {"label":"L23", "x":2, "y":1}, - {"label":"L24", "x":3, "y":1}, - {"label":"L25", "x":4, "y":1}, - {"label":"L26", "x":5, "y":1}, - {"label":"L27", "x":6, "y":1}, - {"label":"L31", "x":0, "y":2}, - {"label":"L32", "x":1, "y":2}, - {"label":"L33", "x":2, "y":2}, - {"label":"L34", "x":3, "y":2}, - {"label":"L35", "x":4, "y":2}, - {"label":"L36", "x":5, "y":2}, - {"label":"L37", "x":6, "y":2}, - {"label":"L41", "x":0, "y":3}, - {"label":"L42", "x":1, "y":3}, - {"label":"L43", "x":2, "y":3}, - {"label":"L44", "x":3, "y":3}, - {"label":"L45", "x":4, "y":3}, - {"label":"L46", "x":5, "y":3}, - {"label":"L51", "x":0, "y":4}, - {"label":"L52", "x":1, "y":4}, - {"label":"L53", "x":2, "y":4}, - {"label":"L54", "x":3, "y":4}, - {"label":"L55", "x":4, "y":5}, - {"label":"L56", "x":5, "y":5}, - {"label":"L65", "x":6, "y":6}, - {"label":"L66", "x":7, "y":6}, - {"label":"L63", "x":6, "y":7}, - {"label":"L64", "x":7, "y":7}, - {"label":"R11", "x":10, "y":0}, - {"label":"R12", "x":11, "y":0}, - {"label":"R13", "x":12, "y":0}, - {"label":"R14", "x":13, "y":0}, - {"label":"R15", "x":14, "y":0}, - {"label":"R16", "x":15, "y":0}, - {"label":"R17", "x":16, "y":0}, - {"label":"R21", "x":10, "y":1}, - {"label":"R22", "x":11, "y":1}, - {"label":"R23", "x":12, "y":1}, - {"label":"R24", "x":13, "y":1}, - {"label":"R25", "x":14, "y":1}, - {"label":"R26", "x":15, "y":1}, - {"label":"R27", "x":16, "y":1}, - {"label":"R31", "x":10, "y":2}, - {"label":"R32", "x":11, "y":2}, - {"label":"R33", "x":12, "y":2}, - {"label":"R34", "x":13, "y":2}, - {"label":"R35", "x":14, "y":2}, - {"label":"R36", "x":15, "y":2}, - {"label":"R37", "x":16, "y":2}, - {"label":"R42", "x":11, "y":3}, - {"label":"R43", "x":12, "y":3}, - {"label":"R44", "x":13, "y":3}, - {"label":"R45", "x":14, "y":3}, - {"label":"R46", "x":15, "y":3}, - {"label":"R47", "x":16, "y":3}, - {"label":"R54", "x":13, "y":4}, - {"label":"R55", "x":14, "y":4}, - {"label":"R56", "x":15, "y":4}, - {"label":"R57", "x":16, "y":4}, - {"label":"R52", "x":11, "y":5}, - {"label":"R53", "x":12, "y":5}, - {"label":"R62", "x":9, "y":6}, - {"label":"R63", "x":10, "y":6}, - {"label":"R64", "x":9, "y":7}, - {"label":"R65", "x":10, "y":7} + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + + {"x": 0, "y": 1}, + {"x": 1, "y": 1}, + {"x": 2, "y": 1}, + {"x": 3, "y": 1}, + {"x": 4, "y": 1}, + {"x": 5, "y": 1}, + {"x": 6, "y": 1}, + + {"x": 0, "y": 2}, + {"x": 1, "y": 2}, + {"x": 2, "y": 2}, + {"x": 3, "y": 2}, + {"x": 4, "y": 2}, + {"x": 5, "y": 2}, + {"x": 6, "y": 2}, + + {"x": 0, "y": 3}, + {"x": 1, "y": 3}, + {"x": 2, "y": 3}, + {"x": 3, "y": 3}, + {"x": 4, "y": 3}, + {"x": 5, "y": 3}, + + {"x": 0, "y": 4}, + {"x": 1, "y": 4}, + {"x": 2, "y": 4}, + {"x": 3, "y": 4}, + + {"x": 4, "y": 5}, + {"x": 5, "y": 5}, + + {"x": 6, "y": 6}, + {"x": 7, "y": 6}, + + {"x": 6, "y": 7}, + {"x": 7, "y": 7}, + + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + {"x": 15, "y": 0}, + {"x": 16, "y": 0}, + + {"x": 10, "y": 1}, + {"x": 11, "y": 1}, + {"x": 12, "y": 1}, + {"x": 13, "y": 1}, + {"x": 14, "y": 1}, + {"x": 15, "y": 1}, + {"x": 16, "y": 1}, + + {"x": 10, "y": 2}, + {"x": 11, "y": 2}, + {"x": 12, "y": 2}, + {"x": 13, "y": 2}, + {"x": 14, "y": 2}, + {"x": 15, "y": 2}, + {"x": 16, "y": 2}, + + {"x": 11, "y": 3}, + {"x": 12, "y": 3}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + {"x": 15, "y": 3}, + {"x": 16, "y": 3}, + + {"x": 13, "y": 4}, + {"x": 14, "y": 4}, + {"x": 15, "y": 4}, + {"x": 16, "y": 4}, + + {"x": 11, "y": 5}, + {"x": 12, "y": 5}, + + {"x": 9, "y": 6}, + {"x": 10, "y": 6}, + + {"x":9, "y":7}, + {"x":10, "y":7} ] } } diff --git a/keyboards/handwired/dactyl_manuform/5x7/keymaps/default/config.h b/keyboards/handwired/dactyl_manuform/5x7/keymaps/default/config.h index 29ab59ad66b4..5a20f9473fec 100644 --- a/keyboards/handwired/dactyl_manuform/5x7/keymaps/default/config.h +++ b/keyboards/handwired/dactyl_manuform/5x7/keymaps/default/config.h @@ -15,13 +15,11 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ - #pragma once - #define USE_SERIAL #define MASTER_LEFT -// #define MASTER_RIGHT +//#define MASTER_RIGHT + //#define EE_HANDS -// Rows are doubled-up diff --git a/keyboards/handwired/dactyl_manuform/5x7/keymaps/default/keymap.c b/keyboards/handwired/dactyl_manuform/5x7/keymaps/default/keymap.c index eb4deb6285f3..3aaeb9989bd1 100644 --- a/keyboards/handwired/dactyl_manuform/5x7/keymaps/default/keymap.c +++ b/keyboards/handwired/dactyl_manuform/5x7/keymaps/default/keymap.c @@ -1,6 +1,5 @@ #include QMK_KEYBOARD_H - // Each layer gets a name for readability, which is then used in the keymap matrix below. // The underscores don't mean anything - you can have a layer called STUFF or any other name. // Layer names don't all need to be of the same length, obviously, and you can also skip them @@ -10,71 +9,72 @@ #define _NUMPAD 2 // Some basic macros -#define TASK LCTL(LSFT(KC_ESC)) -#define TAB_R LCTL(KC_TAB) -#define TAB_L LCTL(LSFT(KC_TAB)) -#define TAB_RO LCTL(LSFT(KC_T)) +#define TASK LCTL(LSFT(KC_ESC)) +#define TAB_R LCTL(KC_TAB) +#define TAB_L LCTL(LSFT(KC_TAB)) +#define TAB_RO LCTL(LSFT(KC_T)) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -[_QWERTY] = LAYOUT_5x7( - // left hand - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, - KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, TAB_RO, - OSM(MOD_LSFT), KC_Z, KC_X, KC_C, KC_V, KC_B, - KC_CAPS, KC_LGUI, TAB_L, TAB_R, - TT(_FN), KC_SPC, - KC_END, KC_HOME, - KC_PSCR, TASK, + [_QWERTY] = LAYOUT_5x7( + // left hand + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, TAB_RO, + OSM(MOD_LSFT), KC_Z, KC_X, KC_C, KC_V, KC_B, + KC_CAPS, KC_LGUI, TAB_L, TAB_R, + TT(_FN), KC_SPC, + KC_END, KC_HOME, + KC_PSCR, TASK, // right hand - KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, - KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, - TG(_NUMPAD), KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, OSM(MOD_RSFT), - KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, - KC_BSPC, KC_ENT, - KC_PGUP, KC_PGDN, - KC_LCTL, KC_LALT), + KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, + KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + TG(_NUMPAD), KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, OSM(MOD_RSFT), + KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, + KC_BSPC, KC_ENT, + KC_PGUP, KC_PGDN, + KC_LCTL, KC_LALT + ), -[_FN] = LAYOUT_5x7( - // left hand - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, - _______, _______, _______, KC_UP, _______, _______, _______, - _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, RESET, - _______, _______, _______, _______, _______, _______, - KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, - _______, _______, - _______, _______, - _______, _______, + [_FN] = LAYOUT_5x7( + // left hand + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, + _______, _______, _______, KC_UP, _______, _______, _______, + _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, RESET, + _______, _______, _______, _______, _______, _______, + KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, + _______, _______, + _______, _______, + _______, _______, // right hand - KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, - KC_DEL, _______, - _______, _______, - _______, _______), + KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, + KC_DEL, _______, + _______, _______, + _______, _______ + ), -[_NUMPAD] = LAYOUT_5x7( - // left hand - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, - _______, _______, - _______, _______, - _______, _______, + [_NUMPAD] = LAYOUT_5x7( + // left hand + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, + _______, _______, + _______, _______, // right hand - _______, _______, KC_NLCK, _______, KC_PMNS, KC_PPLS, _______, - _______, _______, KC_P7, KC_P8, KC_P9, _______, _______, - _______, _______, KC_P4, KC_P5, KC_P6, KC_PAST, _______, - _______, KC_P1, KC_P2, KC_P3, KC_PSLS, _______, - KC_P0, KC_PDOT, _______, _______, - _______, KC_PENT, - _______, _______, - _______, _______), - + _______, _______, KC_NLCK, _______, KC_PMNS, KC_PPLS, _______, + _______, _______, KC_P7, KC_P8, KC_P9, _______, _______, + _______, _______, KC_P4, KC_P5, KC_P6, KC_PAST, _______, + _______, KC_P1, KC_P2, KC_P3, KC_PSLS, _______, + KC_P0, KC_PDOT, _______, _______, + _______, KC_PENT, + _______, _______, + _______, _______ + ), }; diff --git a/keyboards/handwired/dactyl_manuform/5x7/keymaps/via/config.h b/keyboards/handwired/dactyl_manuform/5x7/keymaps/via/config.h index 29ab59ad66b4..5a20f9473fec 100644 --- a/keyboards/handwired/dactyl_manuform/5x7/keymaps/via/config.h +++ b/keyboards/handwired/dactyl_manuform/5x7/keymaps/via/config.h @@ -15,13 +15,11 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ - #pragma once - #define USE_SERIAL #define MASTER_LEFT -// #define MASTER_RIGHT +//#define MASTER_RIGHT + //#define EE_HANDS -// Rows are doubled-up diff --git a/keyboards/handwired/dactyl_manuform/5x7/keymaps/via/keymap.c b/keyboards/handwired/dactyl_manuform/5x7/keymaps/via/keymap.c index 07c5ec9ba386..5f5ef54df16e 100644 --- a/keyboards/handwired/dactyl_manuform/5x7/keymaps/via/keymap.c +++ b/keyboards/handwired/dactyl_manuform/5x7/keymaps/via/keymap.c @@ -1,6 +1,5 @@ #include QMK_KEYBOARD_H - // Each layer gets a name for readability, which is then used in the keymap matrix below. // The underscores don't mean anything - you can have a layer called STUFF or any other name. // Layer names don't all need to be of the same length, obviously, and you can also skip them @@ -11,113 +10,114 @@ #define _BLANK 3 // Some basic macros -#define TASK LCTL(LSFT(KC_ESC)) -#define TAB_R LCTL(KC_TAB) -#define TAB_L LCTL(LSFT(KC_TAB)) -#define TAB_RO LCTL(LSFT(KC_T)) +#define TASK LCTL(LSFT(KC_ESC)) +#define TAB_R LCTL(KC_TAB) +#define TAB_L LCTL(LSFT(KC_TAB)) +#define TAB_RO LCTL(LSFT(KC_T)) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -[_QWERTY] = LAYOUT_5x7( - // left hand - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, - KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, TAB_RO, - OSM(MOD_LSFT), KC_Z, KC_X, KC_C, KC_V, KC_B, - KC_CAPS, KC_LGUI, TAB_L, TAB_R, - TT(_FN), KC_SPC, - KC_END, KC_HOME, - KC_PSCR, TASK, + [_QWERTY] = LAYOUT_5x7( + // left hand + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, TAB_RO, + OSM(MOD_LSFT), KC_Z, KC_X, KC_C, KC_V, KC_B, + KC_CAPS, KC_LGUI, TAB_L, TAB_R, + TT(_FN), KC_SPC, + KC_END, KC_HOME, + KC_PSCR, TASK, // right hand - KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, - KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, - TG(_NUMPAD), KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, OSM(MOD_RSFT), - KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, - KC_BSPC, KC_ENT, - KC_PGUP, KC_PGDN, - KC_LCTL, KC_LALT), + KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, + KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + TG(_NUMPAD), KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, OSM(MOD_RSFT), + KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, + KC_BSPC, KC_ENT, + KC_PGUP, KC_PGDN, + KC_LCTL, KC_LALT + ), -[_FN] = LAYOUT_5x7( - // left hand - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, - _______, _______, _______, KC_UP, _______, _______, _______, - _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, RESET, - _______, _______, _______, _______, _______, _______, - KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, - _______, _______, - _______, _______, - _______, _______, + [_FN] = LAYOUT_5x7( + // left hand + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, + _______, _______, _______, KC_UP, _______, _______, _______, + _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, RESET, + _______, _______, _______, _______, _______, _______, + KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, + _______, _______, + _______, _______, + _______, _______, // right hand - KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, - KC_DEL, _______, - _______, _______, - _______, _______), + KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, + KC_DEL, _______, + _______, _______, + _______, _______ + ), -[_NUMPAD] = LAYOUT_5x7( - // left hand - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, - _______, _______, - _______, _______, - _______, _______, + [_NUMPAD] = LAYOUT_5x7( + // left hand + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, + _______, _______, + _______, _______, // right hand - _______, _______, KC_NLCK, _______, KC_PMNS, KC_PPLS, _______, - _______, _______, KC_P7, KC_P8, KC_P9, _______, _______, - _______, _______, KC_P4, KC_P5, KC_P6, KC_PAST, _______, - _______, KC_P1, KC_P2, KC_P3, KC_PSLS, _______, - KC_P0, KC_PDOT, _______, _______, - _______, KC_PENT, - _______, _______, - _______, _______), - + _______, _______, KC_NLCK, _______, KC_PMNS, KC_PPLS, _______, + _______, _______, KC_P7, KC_P8, KC_P9, _______, _______, + _______, _______, KC_P4, KC_P5, KC_P6, KC_PAST, _______, + _______, KC_P1, KC_P2, KC_P3, KC_PSLS, _______, + KC_P0, KC_PDOT, _______, _______, + _______, KC_PENT, + _______, _______, + _______, _______ + ), -[_NUMPAD] = LAYOUT_5x7( - // left hand - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, - _______, _______, - _______, _______, - _______, _______, + [_NUMPAD] = LAYOUT_5x7( + // left hand + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, + _______, _______, + _______, _______, // right hand - _______, _______, KC_NLCK, _______, KC_PMNS, KC_PPLS, _______, - _______, _______, KC_P7, KC_P8, KC_P9, _______, _______, - _______, _______, KC_P4, KC_P5, KC_P6, KC_PAST, _______, - _______, KC_P1, KC_P2, KC_P3, KC_PSLS, _______, - KC_P0, KC_PDOT, _______, _______, - _______, KC_PENT, - _______, _______, - _______, _______), + _______, _______, KC_NLCK, _______, KC_PMNS, KC_PPLS, _______, + _______, _______, KC_P7, KC_P8, KC_P9, _______, _______, + _______, _______, KC_P4, KC_P5, KC_P6, KC_PAST, _______, + _______, KC_P1, KC_P2, KC_P3, KC_PSLS, _______, + KC_P0, KC_PDOT, _______, _______, + _______, KC_PENT, + _______, _______, + _______, _______ + ), -[_BLANK] = LAYOUT_5x7( - // left hand - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, - _______, _______, - _______, _______, - _______, _______, + [_BLANK] = LAYOUT_5x7( + // left hand + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, + _______, _______, + _______, _______, // right hand - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, - _______, _______, - _______, _______, - _______, _______), - - + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, + _______, _______, + _______, _______ + ) }; diff --git a/keyboards/handwired/dactyl_manuform/5x7/rules.mk b/keyboards/handwired/dactyl_manuform/5x7/rules.mk index 7508070515e2..6d1c7c1f67f7 100644 --- a/keyboards/handwired/dactyl_manuform/5x7/rules.mk +++ b/keyboards/handwired/dactyl_manuform/5x7/rules.mk @@ -1,20 +1,20 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina # 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 +# change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +SPLIT_KEYBOARD = yes diff --git a/keyboards/handwired/dactyl_manuform/6x6/6x6.c b/keyboards/handwired/dactyl_manuform/6x6/6x6.c index 9eb27531a8b7..7d3524a5718e 100644 --- a/keyboards/handwired/dactyl_manuform/6x6/6x6.c +++ b/keyboards/handwired/dactyl_manuform/6x6/6x6.c @@ -1,23 +1 @@ #include "6x6.h" - - -#ifdef SSD1306OLED -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - led_set_user(usb_led); -} -#endif - -void matrix_init_kb(void) { - - // // green led on - // DDRD |= (1<<5); - // PORTD &= ~(1<<5); - - // // orange led on - // DDRB |= (1<<0); - // PORTB &= ~(1<<0); - - matrix_init_user(); -}; - diff --git a/keyboards/handwired/dactyl_manuform/6x6/6x6.h b/keyboards/handwired/dactyl_manuform/6x6/6x6.h index 039e6b40dfb0..821abe03083c 100644 --- a/keyboards/handwired/dactyl_manuform/6x6/6x6.h +++ b/keyboards/handwired/dactyl_manuform/6x6/6x6.h @@ -1,42 +1,33 @@ #pragma once #include "dactyl_manuform.h" -#include "quantum.h" +#define XXX KC_NO -#ifdef USE_I2C -#include -#ifdef __AVR__ - #include - #include -#endif -#endif - -#define LAYOUT_6x6(\ - L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ - L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ - L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ - L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \ - L40, L41, L42, L43, L44, L45, R40, R41, R42, R43, R44, R45, \ - L52, L53, R52, R53, \ - L54, L55, R50, R51, \ - L64, L65, R60, R61, \ - L62, L63, R62, R63 \ - ) \ - { \ - { L00, L01, L02, L03, L04, L05 }, \ - { L10, L11, L12, L13, L14, L15 }, \ - { L20, L21, L22, L23, L24, L25 }, \ - { L30, L31, L32, L33, L34, L35 }, \ - { L40, L41, L42, L43, L44, L45 }, \ - { KC_NO, KC_NO, L52, L53, L54, L55 }, \ - { KC_NO, KC_NO, L62, L63, L64, L65 }, \ - \ - { R00, R01, R02, R03, R04, R05 }, \ - { R10, R11, R12, R13, R14, R15 }, \ - { R20, R21, R22, R23, R24, R25 }, \ - { R30, R31, R32, R33, R34, R35 }, \ - { R40, R41, R42, R43, R44, R45 }, \ - { R50, R51, R52, R53, KC_NO, KC_NO }, \ - { R60, R61, R62, R63, KC_NO, KC_NO } \ +#define LAYOUT_6x6( \ + L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ + L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ + L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \ + L40, L41, L42, L43, L44, L45, R40, R41, R42, R43, R44, R45, \ + L52, L53, R52, R53, \ + L54, L55, R50, R51, \ + L64, L65, R60, R61, \ + L62, L63, R62, R63 \ +) { \ + { L00, L01, L02, L03, L04, L05 }, \ + { L10, L11, L12, L13, L14, L15 }, \ + { L20, L21, L22, L23, L24, L25 }, \ + { L30, L31, L32, L33, L34, L35 }, \ + { L40, L41, L42, L43, L44, L45 }, \ + { XXX, XXX, L52, L53, L54, L55 }, \ + { XXX, XXX, L62, L63, L64, L65 }, \ +\ + { R00, R01, R02, R03, R04, R05 }, \ + { R10, R11, R12, R13, R14, R15 }, \ + { R20, R21, R22, R23, R24, R25 }, \ + { R30, R31, R32, R33, R34, R35 }, \ + { R40, R41, R42, R43, R44, R45 }, \ + { R50, R51, R52, R53, XXX, XXX }, \ + { R60, R61, R62, R63, XXX, XXX } \ } diff --git a/keyboards/handwired/dactyl_manuform/6x6/config.h b/keyboards/handwired/dactyl_manuform/6x6/config.h index dd47f44c915c..9323e3302984 100644 --- a/keyboards/handwired/dactyl_manuform/6x6/config.h +++ b/keyboards/handwired/dactyl_manuform/6x6/config.h @@ -20,9 +20,9 @@ along with this program. If not, see . #include "config_common.h" -#define PRODUCT_ID 0x3636 -#define DEVICE_VER 0x0001 -#define PRODUCT Dactyl-Manuform (6x6) +#define PRODUCT_ID 0x3636 +#define DEVICE_VER 0x0001 +#define PRODUCT Dactyl-Manuform (6x6) /* key matrix size */ // Rows are doubled-up diff --git a/keyboards/handwired/dactyl_manuform/6x6/info.json b/keyboards/handwired/dactyl_manuform/6x6/info.json index e617b39a82db..596126879e4a 100644 --- a/keyboards/handwired/dactyl_manuform/6x6/info.json +++ b/keyboards/handwired/dactyl_manuform/6x6/info.json @@ -2,87 +2,102 @@ "keyboard_name": "Dactyl Manuform 6x6", "url": "", "maintainer": "qmk", - "width": 17, - "height": 9, "layouts": { "LAYOUT_6x6": { "layout": [ - {"label":"L00", "x":0, "y":0}, - {"label":"L01", "x":1, "y":0}, - {"label":"L02", "x":2, "y":0}, - {"label":"L03", "x":3, "y":0}, - {"label":"L04", "x":4, "y":0}, - {"label":"L05", "x":5, "y":0}, - {"label":"R00", "x":11, "y":0}, - {"label":"R01", "x":12, "y":0}, - {"label":"R02", "x":13, "y":0}, - {"label":"R03", "x":14, "y":0}, - {"label":"R04", "x":15, "y":0}, - {"label":"R05", "x":16, "y":0}, - {"label":"L10", "x":0, "y":1}, - {"label":"L11", "x":1, "y":1}, - {"label":"L12", "x":2, "y":1}, - {"label":"L13", "x":3, "y":1}, - {"label":"L14", "x":4, "y":1}, - {"label":"L15", "x":5, "y":1}, - {"label":"R10", "x":11, "y":1}, - {"label":"R11", "x":12, "y":1}, - {"label":"R12", "x":13, "y":1}, - {"label":"R13", "x":14, "y":1}, - {"label":"R14", "x":15, "y":1}, - {"label":"R15", "x":16, "y":1}, - {"label":"L20", "x":0, "y":2}, - {"label":"L21", "x":1, "y":2}, - {"label":"L22", "x":2, "y":2}, - {"label":"L23", "x":3, "y":2}, - {"label":"L24", "x":4, "y":2}, - {"label":"L25", "x":5, "y":2}, - {"label":"R20", "x":11, "y":2}, - {"label":"R21", "x":12, "y":2}, - {"label":"R22", "x":13, "y":2}, - {"label":"R23", "x":14, "y":2}, - {"label":"R24", "x":15, "y":2}, - {"label":"R25", "x":16, "y":2}, - {"label":"L30", "x":0, "y":3}, - {"label":"L31", "x":1, "y":3}, - {"label":"L32", "x":2, "y":3}, - {"label":"L33", "x":3, "y":3}, - {"label":"L34", "x":4, "y":3}, - {"label":"L35", "x":5, "y":3}, - {"label":"R30", "x":11, "y":3}, - {"label":"R31", "x":12, "y":3}, - {"label":"R32", "x":13, "y":3}, - {"label":"R33", "x":14, "y":3}, - {"label":"R34", "x":15, "y":3}, - {"label":"R35", "x":16, "y":3}, - {"label":"L40", "x":0, "y":4}, - {"label":"L41", "x":1, "y":4}, - {"label":"L42", "x":2, "y":4}, - {"label":"L43", "x":3, "y":4}, - {"label":"L44", "x":4, "y":4}, - {"label":"L45", "x":5, "y":4}, - {"label":"R40", "x":11, "y":4}, - {"label":"R41", "x":12, "y":4}, - {"label":"R42", "x":13, "y":4}, - {"label":"R43", "x":14, "y":4}, - {"label":"R44", "x":15, "y":4}, - {"label":"R45", "x":16, "y":4}, - {"label":"L52", "x":2, "y":5}, - {"label":"L53", "x":3, "y":5}, - {"label":"R52", "x":13, "y":5}, - {"label":"R53", "x":14, "y":5}, - {"label":"L54", "x":4, "y":6}, - {"label":"L55", "x":5, "y":6}, - {"label":"R50", "x":11, "y":6}, - {"label":"R51", "x":12, "y":6}, - {"label":"L64", "x":6, "y":7}, - {"label":"L65", "x":7, "y":7}, - {"label":"R60", "x":9, "y":7}, - {"label":"R61", "x":10, "y":7}, - {"label":"L62", "x":6, "y":8}, - {"label":"L63", "x":7, "y":8}, - {"label":"R62", "x":9, "y":8}, - {"label":"R63", "x":10, "y":8} + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + {"x": 15, "y": 0}, + {"x": 16, "y": 0}, + + {"x": 0, "y": 1}, + {"x": 1, "y": 1}, + {"x": 2, "y": 1}, + {"x": 3, "y": 1}, + {"x": 4, "y": 1}, + {"x": 5, "y": 1}, + + {"x": 11, "y": 1}, + {"x": 12, "y": 1}, + {"x": 13, "y": 1}, + {"x": 14, "y": 1}, + {"x": 15, "y": 1}, + {"x": 16, "y": 1}, + + {"x": 0, "y": 2}, + {"x": 1, "y": 2}, + {"x": 2, "y": 2}, + {"x": 3, "y": 2}, + {"x": 4, "y": 2}, + {"x": 5, "y": 2}, + + {"x": 11, "y": 2}, + {"x": 12, "y": 2}, + {"x": 13, "y": 2}, + {"x": 14, "y": 2}, + {"x": 15, "y": 2}, + {"x": 16, "y": 2}, + + {"x": 0, "y": 3}, + {"x": 1, "y": 3}, + {"x": 2, "y": 3}, + {"x": 3, "y": 3}, + {"x": 4, "y": 3}, + {"x": 5, "y": 3}, + + {"x": 11, "y": 3}, + {"x": 12, "y": 3}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + {"x": 15, "y": 3}, + {"x": 16, "y": 3}, + + {"x": 0, "y": 4}, + {"x": 1, "y": 4}, + {"x": 2, "y": 4}, + {"x": 3, "y": 4}, + {"x": 4, "y": 4}, + {"x": 5, "y": 4}, + + {"x": 11, "y": 4}, + {"x": 12, "y": 4}, + {"x": 13, "y": 4}, + {"x": 14, "y": 4}, + {"x": 15, "y": 4}, + {"x": 16, "y": 4}, + + {"x": 2, "y": 5}, + {"x": 3, "y": 5}, + + {"x": 13, "y": 5}, + {"x": 14, "y": 5}, + + {"x": 4, "y": 6}, + {"x": 5, "y": 6}, + + {"x": 11, "y": 6}, + {"x": 12, "y": 6}, + + {"x": 6, "y": 7}, + {"x": 7, "y": 7}, + + {"x": 9, "y": 7}, + {"x": 10, "y": 7}, + + {"x": 6, "y": 8}, + {"x": 7, "y": 8}, + + {"x": 9, "y": 8}, + {"x": 10, "y": 8} ] } } diff --git a/keyboards/handwired/dactyl_manuform/6x6/keymaps/default/config.h b/keyboards/handwired/dactyl_manuform/6x6/keymaps/default/config.h index 29ab59ad66b4..5a20f9473fec 100644 --- a/keyboards/handwired/dactyl_manuform/6x6/keymaps/default/config.h +++ b/keyboards/handwired/dactyl_manuform/6x6/keymaps/default/config.h @@ -15,13 +15,11 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ - #pragma once - #define USE_SERIAL #define MASTER_LEFT -// #define MASTER_RIGHT +//#define MASTER_RIGHT + //#define EE_HANDS -// Rows are doubled-up diff --git a/keyboards/handwired/dactyl_manuform/6x6/keymaps/default/keymap.c b/keyboards/handwired/dactyl_manuform/6x6/keymaps/default/keymap.c index fd2e5f413df3..41e96b53d724 100644 --- a/keyboards/handwired/dactyl_manuform/6x6/keymaps/default/keymap.c +++ b/keyboards/handwired/dactyl_manuform/6x6/keymaps/default/keymap.c @@ -1,6 +1,5 @@ #include QMK_KEYBOARD_H - #define _QWERTY 0 #define _LOWER 1 #define _RAISE 2 @@ -9,45 +8,39 @@ #define LOWER MO(_LOWER) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_QWERTY] = LAYOUT_6x6( - - 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_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 ,KC_BSPC, - KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_MINS, - KC_LSFT, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L ,KC_SCLN,KC_QUOT, - KC_LCTL, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_BSLASH, - KC_LBRC,KC_RBRC, KC_PLUS, KC_EQL, - RAISE,KC_SPC, KC_ENT, LOWER, - KC_TAB,KC_HOME, KC_END, KC_DEL, - KC_BSPC, KC_GRV, KC_LGUI, KC_LALT - ), - - [_LOWER] = LAYOUT_6x6( - - 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_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL, - _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS, - _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE, - _______,_______,_______,_______,_______,_______, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS, - _______,KC_PSCR, _______, KC_P0, - _______,_______, _______,_______, - _______,_______, _______,_______, - _______,_______, _______,_______ - ), - - [_RAISE] = LAYOUT_6x6( - - KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 , - _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NLCK,KC_INS ,KC_SLCK,KC_MUTE, - _______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU, - _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD, - _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______, - - _______,_______, KC_EQL ,_______, - _______,_______, _______,_______, + [_QWERTY] = LAYOUT_6x6( + 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_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 ,KC_BSPC, + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_MINS, + KC_LSFT, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L ,KC_SCLN,KC_QUOT, + KC_LCTL, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_BSLASH, + KC_LBRC,KC_RBRC, KC_PLUS, KC_EQL, + RAISE,KC_SPC, KC_ENT, LOWER, + KC_TAB,KC_HOME, KC_END, KC_DEL, + KC_BSPC, KC_GRV, KC_LGUI, KC_LALT + ), + + [_LOWER] = LAYOUT_6x6( + 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_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL, + _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS, + _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE, + _______,_______,_______,_______,_______,_______, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS, + _______,KC_PSCR, _______, KC_P0, + _______,_______, _______,_______, + _______,_______, _______,_______, + _______,_______, _______,_______ + ), + + [_RAISE] = LAYOUT_6x6( + KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 , + _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NLCK,KC_INS ,KC_SLCK,KC_MUTE, + _______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU, + _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD, + _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______, + _______,_______, KC_EQL ,_______, + _______,_______, _______,_______, _______,_______, _______,_______, _______,_______, _______,_______ - ), - + ) }; diff --git a/keyboards/handwired/dactyl_manuform/6x6/rules.mk b/keyboards/handwired/dactyl_manuform/6x6/rules.mk index 7508070515e2..6d1c7c1f67f7 100644 --- a/keyboards/handwired/dactyl_manuform/6x6/rules.mk +++ b/keyboards/handwired/dactyl_manuform/6x6/rules.mk @@ -1,20 +1,20 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina # 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 +# change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +SPLIT_KEYBOARD = yes diff --git a/keyboards/handwired/dactyl_manuform/config.h b/keyboards/handwired/dactyl_manuform/config.h index 6c4ec0f19376..18942f9e5fab 100644 --- a/keyboards/handwired/dactyl_manuform/config.h +++ b/keyboards/handwired/dactyl_manuform/config.h @@ -21,14 +21,14 @@ along with this program. If not, see . #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0x444D -#define MANUFACTURER tshort +#define VENDOR_ID 0x444D +#define MANUFACTURER tshort /* mouse config */ -#define MOUSEKEY_INTERVAL 20 -#define MOUSEKEY_DELAY 0 -#define MOUSEKEY_TIME_TO_MAX 60 -#define MOUSEKEY_MAX_SPEED 7 +#define MOUSEKEY_INTERVAL 20 +#define MOUSEKEY_DELAY 0 +#define MOUSEKEY_TIME_TO_MAX 60 +#define MOUSEKEY_MAX_SPEED 7 #define MOUSEKEY_WHEEL_DELAY 0 /* Set 0 if debouncing isn't needed */ @@ -44,21 +44,3 @@ along with this program. If not, see . /* Enables This makes it easier for fast typists to use dual-function keys */ #define PERMISSIVE_HOLD - -/* - * 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/handwired/dactyl_manuform/dactyl_manuform.h b/keyboards/handwired/dactyl_manuform/dactyl_manuform.h index 1b6b105ece80..11c999777188 100644 --- a/keyboards/handwired/dactyl_manuform/dactyl_manuform.h +++ b/keyboards/handwired/dactyl_manuform/dactyl_manuform.h @@ -1,32 +1,21 @@ #pragma once -#ifdef KEYBOARD_handwired_dactyl_manuform_4x5 - #include "4x5.h" -#elif KEYBOARD_handwired_dactyl_manuform_4x6 - #include "4x6.h" -#elif KEYBOARD_handwired_dactyl_manuform_5x6 - #include "5x6.h" -#elif KEYBOARD_handwired_dactyl_manuform_5x6_5 - #include "5x6_5.h" -#elif KEYBOARD_handwired_dactyl_manuform_5x6_2_5 - #include "5x6_2_5.h" -#elif KEYBOARD_handwired_dactyl_manuform_5x7 - #include "5x7.h" -#elif KEYBOARD_handwired_dactyl_manuform_6x6 - #include "6x6.h" -#elif KEYBOARD_handwired_dactyl_manuform_dmote_62key - #include "62key.h" -#elif KEYBOARD_handwired_dactyl_manuform_5x6_right_trackball -# include "5x6_right_trackball.h" +#if defined(KEYBOARD_handwired_dactyl_manuform_4x5) +# include "4x5.h" +#elif defined(KEYBOARD_handwired_dactyl_manuform_4x6) +# include "4x6.h" +#elif defined(KEYBOARD_handwired_dactyl_manuform_5x6) +# include "5x6.h" +#elif defined(KEYBOARD_handwired_dactyl_manuform_5x6_5) +# include "5x6_5.h" +#elif defined(KEYBOARD_handwired_dactyl_manuform_5x6_2_5) +# include "5x6_2_5.h" +#elif defined(KEYBOARD_handwired_dactyl_manuform_5x7) +# include "5x7.h" +#elif defined(KEYBOARD_handwired_dactyl_manuform_6x6) +# include "6x6.h" +#elif defined(KEYBOARD_handwired_dactyl_manuform_dmote_62key) +# include "62key.h" #endif #include "quantum.h" - - -#ifdef USE_I2C -#include -#ifdef __AVR__ - #include - #include -#endif -#endif diff --git a/keyboards/handwired/dactyl_manuform/dmote/62key/62key.c b/keyboards/handwired/dactyl_manuform/dmote/62key/62key.c index e5d444277d2d..8d0d95e166de 100644 --- a/keyboards/handwired/dactyl_manuform/dmote/62key/62key.c +++ b/keyboards/handwired/dactyl_manuform/dmote/62key/62key.c @@ -1,5 +1 @@ #include "62key.h" - -void matrix_init_kb(void) { - matrix_init_user(); -}; diff --git a/keyboards/handwired/dactyl_manuform/dmote/62key/62key.h b/keyboards/handwired/dactyl_manuform/dmote/62key/62key.h index 27341016542f..2d52e7e5fb6e 100644 --- a/keyboards/handwired/dactyl_manuform/dmote/62key/62key.h +++ b/keyboards/handwired/dactyl_manuform/dmote/62key/62key.h @@ -1,15 +1,6 @@ #pragma once #include "dactyl_manuform.h" -#include "quantum.h" - -#ifdef USE_I2C -#include -#ifdef __AVR__ - #include - #include -#endif -#endif // This uses the same coordinate system as the program that defines // the case model, but not the same coordinates. @@ -21,34 +12,33 @@ // cluster so that everything can be contained in a 6x6 pattern. #define LAYOUT_62key( \ - LA_20, LA_10, LF_35, LF_25, LF_15, LF_05, \ - LF_55, LF_45, LF_34, LF_24, LF_14, LF_04, \ - LF_54, LF_44, LF_33, LF_23, LF_13, LF_03, \ - LF_53, LF_43, LF_32, LF_22, LF_12, \ - LF_21, LT_21, LT_22, \ + LA_20, LA_10, LF_35, LF_25, LF_15, LF_05, \ + LF_55, LF_45, LF_34, LF_24, LF_14, LF_04, \ + LF_54, LF_44, LF_33, LF_23, LF_13, LF_03, \ + LF_53, LF_43, LF_32, LF_22, LF_12, \ + LF_21, LT_21, LT_22, \ LT_10, LT_11, LT_12, \ - LT_01, LT_02, \ - \ - RF_05, RF_15, RF_25, RF_35, RA_10, RA_20, \ - RF_04, RF_14, RF_24, RF_34, RF_45, RF_55, \ - RF_03, RF_13, RF_23, RF_33, RF_44, RF_54, \ - RF_12, RF_22, RF_32, RF_43, RF_53, \ - RT_22, RT_21, RF_21, \ - RT_12, RT_11, RT_10, \ - RT_02, RT_01 \ - ) \ - { \ + LT_01, LT_02, \ +\ + RF_05, RF_15, RF_25, RF_35, RA_10, RA_20, \ + RF_04, RF_14, RF_24, RF_34, RF_45, RF_55, \ + RF_03, RF_13, RF_23, RF_33, RF_44, RF_54, \ + RF_12, RF_22, RF_32, RF_43, RF_53, \ + RT_22, RT_21, RF_21, \ + RT_12, RT_11, RT_10, \ + RT_02, RT_01 \ +) { \ { LA_20, LA_10, LF_35, LF_25, LF_15, LF_05 }, \ { LF_55, LF_45, LF_34, LF_24, LF_14, LF_04 }, \ { LF_54, LF_44, LF_33, LF_23, LF_13, LF_03 }, \ { LF_53, LF_43, LF_32, LF_22, LF_12, LT_22 }, \ { KC_NO, KC_NO, LT_21, LF_21, LT_11, LT_12 }, \ { KC_NO, KC_NO, LT_10, KC_NO, LT_01, LT_02 }, \ - \ +\ { RA_20, RA_10, RF_35, RF_25, RF_15, RF_05 }, \ { RF_55, RF_45, RF_34, RF_24, RF_14, RF_04 }, \ { RF_54, RF_44, RF_33, RF_23, RF_13, RF_03 }, \ { RF_53, RF_43, RF_32, RF_22, RF_12, RT_22 }, \ { KC_NO, KC_NO, RT_21, RF_21, RT_11, RT_12 }, \ - { KC_NO, KC_NO, RT_10, KC_NO, RT_01, RT_02 }, \ - } + { KC_NO, KC_NO, RT_10, KC_NO, RT_01, RT_02 } \ +} diff --git a/keyboards/handwired/dactyl_manuform/dmote/62key/config.h b/keyboards/handwired/dactyl_manuform/dmote/62key/config.h index cb213270703b..cb65d8c19c38 100644 --- a/keyboards/handwired/dactyl_manuform/dmote/62key/config.h +++ b/keyboards/handwired/dactyl_manuform/dmote/62key/config.h @@ -1,9 +1,10 @@ #pragma once #include "config_common.h" -#define PRODUCT_ID 0x3632 -#define DEVICE_VER 0x0001 -#define PRODUCT DMOTE (62-key) + +#define PRODUCT_ID 0x3632 +#define DEVICE_VER 0x0001 +#define PRODUCT DMOTE (62-key) #define MATRIX_ROWS 12 #define MATRIX_COLS 6 @@ -48,5 +49,3 @@ #define RGB_DI_PIN D1 #define RGBLED_NUM 6 // Used when chaining strips #define RGBLED_SPLIT { 3, 3 } // Used when not chaining strips -#define ws2812_PORTREG PORTD -#define ws2812_DDRREG DDRD diff --git a/keyboards/handwired/dactyl_manuform/dmote/62key/info.json b/keyboards/handwired/dactyl_manuform/dmote/62key/info.json index 8e54b8db4d24..82b9738cd509 100644 --- a/keyboards/handwired/dactyl_manuform/dmote/62key/info.json +++ b/keyboards/handwired/dactyl_manuform/dmote/62key/info.json @@ -2,89 +2,85 @@ "keyboard_name": "DMOTE 62-key", "url": "", "maintainer": "veikman", - "width": 15, - "height": 7.5, "layouts": { "LAYOUT_62key": { "layout": [ - {"x":0, "y":0}, - {"x":1, "y":0}, - {"x":2, "y":0}, - {"x":3, "y":0}, - {"x":4, "y":0}, - {"x":5, "y":0}, + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, - {"x":0, "y":1}, - {"x":1, "y":1}, - {"x":2, "y":1}, - {"x":3, "y":1}, - {"x":4, "y":1}, - {"x":5, "y":1}, + {"x": 0, "y": 1}, + {"x": 1, "y": 1}, + {"x": 2, "y": 1}, + {"x": 3, "y": 1}, + {"x": 4, "y": 1}, + {"x": 5, "y": 1}, - {"x":0, "y":2}, - {"x":1, "y":2}, - {"x":2, "y":2}, - {"x":3, "y":2}, - {"x":4, "y":2}, - {"x":5, "y":2}, + {"x": 0, "y": 2}, + {"x": 1, "y": 2}, + {"x": 2, "y": 2}, + {"x": 3, "y": 2}, + {"x": 4, "y": 2}, + {"x": 5, "y": 2}, - {"x":0, "y":3}, - {"x":1, "y":3}, - {"x":2, "y":3}, - {"x":3, "y":3}, - {"x":4, "y":3}, + {"x": 0, "y": 3}, + {"x": 1, "y": 3}, + {"x": 2, "y": 3}, + {"x": 3, "y": 3}, + {"x": 4, "y": 3}, - {"x":3, "y":4}, - {"x":4.5, "y":4.5}, - {"x":5.5, "y":4.5}, + {"x": 3, "y": 4}, + {"x": 4.5, "y": 4.5}, + {"x": 5.5, "y": 4.5}, - {"x":4, "y":5.5}, - {"x":5, "y":5.5}, - {"x":6, "y":5.5}, + {"x": 4, "y": 5.5}, + {"x": 5, "y": 5.5}, + {"x": 6, "y": 5.5}, - {"x":4.5, "y":6.5}, - {"x":5.5, "y":6.5}, + {"x": 4.5, "y": 6.5}, + {"x": 5.5, "y": 6.5}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, - {"x":9, "y":0}, - {"x":10, "y":0}, - {"x":11, "y":0}, - {"x":12, "y":0}, - {"x":13, "y":0}, - {"x":14, "y":0}, + {"x": 9, "y": 1}, + {"x": 10, "y": 1}, + {"x": 11, "y": 1}, + {"x": 12, "y": 1}, + {"x": 13, "y": 1}, + {"x": 14, "y": 1}, - {"x":9, "y":1}, - {"x":10, "y":1}, - {"x":11, "y":1}, - {"x":12, "y":1}, - {"x":13, "y":1}, - {"x":14, "y":1}, + {"x": 9, "y": 2}, + {"x": 10, "y": 2}, + {"x": 11, "y": 2}, + {"x": 12, "y": 2}, + {"x": 13, "y": 2}, + {"x": 14, "y": 2}, - {"x":9, "y":2}, - {"x":10, "y":2}, - {"x":11, "y":2}, - {"x":12, "y":2}, - {"x":13, "y":2}, - {"x":14, "y":2}, + {"x": 10, "y": 3}, + {"x": 11, "y": 3}, + {"x": 12, "y": 3}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, - {"x":10, "y":3}, - {"x":11, "y":3}, - {"x":12, "y":3}, - {"x":13, "y":3}, - {"x":14, "y":3}, + {"x": 8.5, "y": 4.5}, + {"x": 9.5, "y": 4.5}, + {"x": 11, "y": 4}, - {"x":8.5, "y":4.5}, - {"x":9.5, "y":4.5}, - {"x":11, "y":4}, + {"x": 8, "y": 5.5}, + {"x": 9, "y": 5.5}, + {"x": 10, "y": 5.5}, - {"x":8, "y":5.5}, - {"x":9, "y":5.5}, - {"x":10, "y":5.5}, - - {"x":8.5, "y":6.5}, - {"x":9.5, "y":6.5} + {"x": 8.5, "y": 6.5}, + {"x": 9.5, "y": 6.5} ] } } } - diff --git a/keyboards/handwired/dactyl_manuform/dmote/62key/keymaps/default/keymap.c b/keyboards/handwired/dactyl_manuform/dmote/62key/keymaps/default/keymap.c index 25bd7da39235..d11f0754816f 100644 --- a/keyboards/handwired/dactyl_manuform/dmote/62key/keymaps/default/keymap.c +++ b/keyboards/handwired/dactyl_manuform/dmote/62key/keymaps/default/keymap.c @@ -1,9 +1,8 @@ -#include "62key.h" -#include "rgblight.h" +#include QMK_KEYBOARD_H + #include "keymap_colemak.h" #include "sendstring_colemak.h" - // Automatic Layer ID: enum layer_names { _QWERTY, // OS-side Colemak. Default. @@ -14,71 +13,71 @@ enum layer_names { // Shorthand: #define LAYER_N MO(_NUMERIC) #define LAYER_C TG(_COLEMAK) -#define PASTE LSFT(KC_INS) // Terminal-compatible paste. -#define SLQ RALT(KC_9) // Single left-side quotation mark (in Colemak). -#define SRQ RALT(KC_0) -#define EMDASH RALT(LSFT(KC_MINUS)) // Em dash character (in Colemak). +#define PASTE LSFT(KC_INS) // Terminal-compatible paste. +#define SLQ RALT(KC_9) // Single left-side quotation mark (in Colemak). +#define SRQ RALT(KC_0) +#define EMDASH RALT(LSFT(KC_MINUS)) // Em dash character (in Colemak). #define BK_LCTL CTL_T(KC_LBRACKET) #define BK_RCTL RCTL_T(KC_RBRACKET) // TODO: Mod-tap ALT with a curvilinear brace. // https://github.com/qmk/qmk_firmware/pull/2055 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -[_QWERTY] = LAYOUT_62key( - KC_VOLD, KC_VOLU, CM_W, CM_F, CM_P, CM_G, - KC_TAB, CM_Q, CM_R, CM_S, CM_T, CM_D, - KC_BSPC, CM_A, CM_X, CM_C, CM_V, CM_B, - SLQ, CM_Z, KC_HOME, KC_PGUP, KC_END, - KC_PGDN, KC_ENT, KC_SPC, - KC_LSPO, KC_LGUI, KC_MINS, - BK_LCTL, KC_LALT, - - CM_J, CM_L, CM_U, CM_Y, KC_MPLY, KC_MUTE, - CM_H, CM_N, CM_E, CM_I, CM_SCLN, KC_BSLS, - CM_K, CM_M, KC_COMM, KC_DOT, CM_O, KC_QUOT, - KC_LEFT, KC_UP, KC_RGHT, KC_SLSH, SRQ, - KC_DEL, KC_ESC, KC_DOWN, - KC_EQL, LAYER_N, KC_RSPC, - KC_RALT, BK_RCTL -), - -[_COLEMAK] = LAYOUT_62key( - _______, _______, KC_W, KC_F, KC_P, KC_G, - _______, KC_Q, KC_R, KC_S, KC_T, KC_D, - _______, KC_A, KC_X, KC_C, KC_V, KC_B, - _______, KC_Z, _______, _______, _______, - _______, _______, _______, - _______, _______, _______, - _______, _______, - - KC_J, KC_L, KC_U, KC_Y, _______, _______, - KC_H, KC_N, KC_E, KC_I, KC_SCLN, _______, - KC_K, KC_M, _______, _______, KC_O, _______, - _______, _______, _______, _______, _______, - _______, _______, _______, - _______, _______, _______, - _______, _______ -), - -[_NUMERIC] = LAYOUT_62key( - LAYER_C, KC_INS, KC_F2, KC_F3, KC_F4, KC_F5, - KC_F12, KC_F1, KC_2, KC_3, KC_4, KC_5, - _______, KC_1, KC_AT, KC_HASH, KC_DLR, KC_PERC, - KC_GRV, KC_EXLM, KC_BTN1, KC_WH_U, KC_BTN2, - KC_WH_D, RGB_MOD, _______, - _______, _______, EMDASH, - _______, _______, - - KC_F6, KC_F7, KC_F8, KC_F9, RESET, KC_WAKE, // * - KC_6, KC_7, KC_8, KC_9, KC_F10, KC_F11, - KC_CIRC, KC_AMPR, KC_ASTR, KC_APP, KC_0, PASTE, - KC_MS_L, KC_MS_U, KC_MS_R, KC_PSCR, RGB_TOG, - KC_ACL1, KC_ACL2, KC_MS_D, - KC_ACL0, _______, _______, - _______, _______ -) + [_QWERTY] = LAYOUT_62key( + KC_VOLD, KC_VOLU, CM_W, CM_F, CM_P, CM_G, + KC_TAB, CM_Q, CM_R, CM_S, CM_T, CM_D, + KC_BSPC, CM_A, CM_X, CM_C, CM_V, CM_B, + SLQ, CM_Z, KC_HOME, KC_PGUP, KC_END, + KC_PGDN, KC_ENT, KC_SPC, + KC_LSPO, KC_LGUI, KC_MINS, + BK_LCTL, KC_LALT, + + CM_J, CM_L, CM_U, CM_Y, KC_MPLY, KC_MUTE, + CM_H, CM_N, CM_E, CM_I, CM_SCLN, KC_BSLS, + CM_K, CM_M, KC_COMM, KC_DOT, CM_O, KC_QUOT, + KC_LEFT, KC_UP, KC_RGHT, KC_SLSH, SRQ, + KC_DEL, KC_ESC, KC_DOWN, + KC_EQL, LAYER_N, KC_RSPC, + KC_RALT, BK_RCTL + ), + + [_COLEMAK] = LAYOUT_62key( + _______, _______, KC_W, KC_F, KC_P, KC_G, + _______, KC_Q, KC_R, KC_S, KC_T, KC_D, + _______, KC_A, KC_X, KC_C, KC_V, KC_B, + _______, KC_Z, _______, _______, _______, + _______, _______, _______, + _______, _______, _______, + _______, _______, + + KC_J, KC_L, KC_U, KC_Y, _______, _______, + KC_H, KC_N, KC_E, KC_I, KC_SCLN, _______, + KC_K, KC_M, _______, _______, KC_O, _______, + _______, _______, _______, _______, _______, + _______, _______, _______, + _______, _______, _______, + _______, _______ + ), + + [_NUMERIC] = LAYOUT_62key( + LAYER_C, KC_INS, KC_F2, KC_F3, KC_F4, KC_F5, + KC_F12, KC_F1, KC_2, KC_3, KC_4, KC_5, + _______, KC_1, KC_AT, KC_HASH, KC_DLR, KC_PERC, + KC_GRV, KC_EXLM, KC_BTN1, KC_WH_U, KC_BTN2, + KC_WH_D, RGB_MOD, _______, + _______, _______, EMDASH, + _______, _______, + + KC_F6, KC_F7, KC_F8, KC_F9, RESET, KC_WAKE, // * + KC_6, KC_7, KC_8, KC_9, KC_F10, KC_F11, + KC_CIRC, KC_AMPR, KC_ASTR, KC_APP, KC_0, PASTE, + KC_MS_L, KC_MS_U, KC_MS_R, KC_PSCR, RGB_TOG, + KC_ACL1, KC_ACL2, KC_MS_D, + KC_ACL0, _______, _______, + _______, _______ + ) }; + // *KC_WAKE: Used in place of KC_SLEP because X11 with i3 on prerelease // Debian 10 was seeing duplicate keypress and release events for sleep // (regardless of i3 binding), which ruined the function. @@ -111,22 +110,19 @@ void modal_leds(void) { uint16_t hue = 355; // Rough match to printed case. uint8_t saturation = 255; uint8_t value = 0; - if (layer_state_is(_COLEMAK)) { hue -= 50; saturation -= 20; value += 20; }; - if (layer_state_is(_NUMERIC)) { value += 30; }; - if (mods & MOD_MASK_SHIFT) { saturation -= 20; value += 30; }; - if (mods & MOD_MASK_ALT) { hue -= 100; saturation -= 20; value += 30; }; - if (mods & MOD_MASK_CTRL) { hue -= 200; saturation -= 20; value += 30; }; + if (layer_state_is(_COLEMAK)) { hue -= 50; saturation -= 20; value += 20; } + if (layer_state_is(_NUMERIC)) { value += 30; } + if (mods & MOD_MASK_SHIFT) { saturation -= 20; value += 30; } + if (mods & MOD_MASK_ALT) { hue -= 100; saturation -= 20; value += 30; } + if (mods & MOD_MASK_CTRL) { hue -= 200; saturation -= 20; value += 30; } // rgblight_sethsv_eeprom_helper is not a great API function but it does // affect both halves of a split keyboard. rgblight_sethsv_eeprom_helper(hue, saturation, value, false); _leds_dirty = false; } -void matrix_init_user(void) { -} - void matrix_scan_user(void) { - if (_leds_dirty) { modal_leds(); }; + if (_leds_dirty) { modal_leds(); } } bool process_record_user(uint16_t keycode, keyrecord_t *record) { @@ -134,12 +130,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { // Static lighting is amenable to customization. rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT); _initialized = true; - }; + } if (keycode == KC_WAKE) { // Turn the lights off before going to sleep. rgblight_sethsv_eeprom_helper(0, 0, 0, false); } else { _leds_dirty = true; - }; + } return true; } diff --git a/keyboards/handwired/dactyl_manuform/dmote/62key/rules.mk b/keyboards/handwired/dactyl_manuform/dmote/62key/rules.mk index 28d0bfb5c5bd..a6a97a5c8e36 100644 --- a/keyboards/handwired/dactyl_manuform/dmote/62key/rules.mk +++ b/keyboards/handwired/dactyl_manuform/dmote/62key/rules.mk @@ -1,5 +1,5 @@ # Build-process overrides for the DMOTE. -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control RGBLIGHT_ENABLE = yes # Needed for the C linker with lighting control. COMMAND_ENABLE = no # Not a good combo with Space Cadet shift. diff --git a/keyboards/handwired/dactyl_manuform/rules.mk b/keyboards/handwired/dactyl_manuform/rules.mk deleted file mode 100644 index 1ba5f5a09343..000000000000 --- a/keyboards/handwired/dactyl_manuform/rules.mk +++ /dev/null @@ -1,34 +0,0 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = caterina - -# Build Options -# change to "no" to disable the options, or define them in the Makefile in -# the appropriate keymap folder that will get included automatically -# -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) -COMMAND_ENABLE = yes # Commands for debug and configuration -NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - -SPLIT_KEYBOARD = yes diff --git a/keyboards/handwired/dactyl_promicro/dactyl_promicro.c b/keyboards/handwired/dactyl_promicro/dactyl_promicro.c index 5d708cf4805a..23f4b13f441b 100644 --- a/keyboards/handwired/dactyl_promicro/dactyl_promicro.c +++ b/keyboards/handwired/dactyl_promicro/dactyl_promicro.c @@ -1,12 +1 @@ #include "dactyl_promicro.h" - -#ifdef SSD1306OLED -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - led_set_user(usb_led); -} -#endif - -void matrix_init_kb(void) { - matrix_init_user(); -}; \ No newline at end of file diff --git a/keyboards/handwired/dactyl_promicro/info.json b/keyboards/handwired/dactyl_promicro/info.json index 7d70e9a60f2f..0f0ac0b357ed 100644 --- a/keyboards/handwired/dactyl_promicro/info.json +++ b/keyboards/handwired/dactyl_promicro/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Dactyl ProMicro", "url": "", "maintainer": "qmk", - "width": 17, - "height": 8, "layouts": { "LAYOUT_6x6": { "layout": [ diff --git a/keyboards/handwired/dactyl_promicro/rules.mk b/keyboards/handwired/dactyl_promicro/rules.mk index 1ba5f5a09343..46452d6c2f00 100644 --- a/keyboards/handwired/dactyl_promicro/rules.mk +++ b/keyboards/handwired/dactyl_promicro/rules.mk @@ -2,33 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - SPLIT_KEYBOARD = yes diff --git a/keyboards/handwired/dactyl_rah/info.json b/keyboards/handwired/dactyl_rah/info.json index 7841988d0cf8..55e0c6c521e3 100644 --- a/keyboards/handwired/dactyl_rah/info.json +++ b/keyboards/handwired/dactyl_rah/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Dactyl RAH", "url": "https://qmk.fm/keyboards/", "maintainer": "ralphie02", - "width": 17, - "height": 8, "layouts": { "LAYOUT_6x6": { "layout": [ diff --git a/keyboards/handwired/dactyl_rah/rules.mk b/keyboards/handwired/dactyl_rah/rules.mk index 9a9bf7d69fbb..6d1c7c1f67f7 100644 --- a/keyboards/handwired/dactyl_rah/rules.mk +++ b/keyboards/handwired/dactyl_rah/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = yes diff --git a/keyboards/handwired/daishi/daishi.c b/keyboards/handwired/daishi/daishi.c index dcd2cd0d153b..0442fc0dc578 100644 --- a/keyboards/handwired/daishi/daishi.c +++ b/keyboards/handwired/daishi/daishi.c @@ -1,22 +1 @@ #include "daishi.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} \ No newline at end of file diff --git a/keyboards/handwired/daishi/daishi.h b/keyboards/handwired/daishi/daishi.h index 49e377589728..0d0c57ab202f 100644 --- a/keyboards/handwired/daishi/daishi.h +++ b/keyboards/handwired/daishi/daishi.h @@ -2,8 +2,6 @@ #include "quantum.h" -#define encoder_update(clockwise) encoder_update_user(uint8_t index, clockwise) - // The first section contains all of the arguments // The second converts the arguments into a two-dimensional array #define LAYOUT( \ diff --git a/keyboards/handwired/daishi/info.json b/keyboards/handwired/daishi/info.json index 52a67b3de989..f0b18bebbcbc 100644 --- a/keyboards/handwired/daishi/info.json +++ b/keyboards/handwired/daishi/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Daishi", "url": "", "maintainer": "Croktopus", - "width": 19.5, - "height": 7.75, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/daishi/keymaps/default/keymap.c b/keyboards/handwired/daishi/keymaps/default/keymap.c index 5214e8b6f407..a1ef825ff29a 100644 --- a/keyboards/handwired/daishi/keymaps/default/keymap.c +++ b/keyboards/handwired/daishi/keymaps/default/keymap.c @@ -82,8 +82,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return true; }; -bool encoder_update(bool clockwise) { - if (clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { + if (clockwise) { tap_code(KC_VOLU); } else { tap_code(KC_VOLD); diff --git a/keyboards/handwired/daishi/rules.mk b/keyboards/handwired/daishi/rules.mk index 5e8cc85e6520..8da09f5788ce 100644 --- a/keyboards/handwired/daishi/rules.mk +++ b/keyboards/handwired/daishi/rules.mk @@ -2,31 +2,20 @@ MCU = at90usb1286 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # QMK Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = no # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # 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 -MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config) -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend ENCODER_ENABLE = yes # Add rotary encoder support DYNAMIC_MACRO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/handwired/datahand/info.json b/keyboards/handwired/datahand/info.json index 9160be240964..21ec229a98b8 100644 --- a/keyboards/handwired/datahand/info.json +++ b/keyboards/handwired/datahand/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Handwired DataHand", "url": "", "maintainer": "qmk", - "width": 23, - "height": 7.75, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/datahand/keymaps/default/keymap.c b/keyboards/handwired/datahand/keymaps/default/keymap.c index 8f44535594e5..fda9cc50a4aa 100644 --- a/keyboards/handwired/datahand/keymaps/default/keymap.c +++ b/keyboards/handwired/datahand/keymaps/default/keymap.c @@ -302,10 +302,6 @@ void matrix_init_user(void) { #endif } -void matrix_scan_user(void) { - -} - void led_set_user(uint8_t usb_led) { lock_led_set(usb_led & (1<. + */ + +#include "001.h" diff --git a/keyboards/handwired/dc/mc/001/001.h b/keyboards/handwired/dc/mc/001/001.h new file mode 100644 index 000000000000..317655162e66 --- /dev/null +++ b/keyboards/handwired/dc/mc/001/001.h @@ -0,0 +1,33 @@ +/* Copyright 2021 Daniel Cormier + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + k00, k01, k02, k03, k04 \ +) { \ + { k00, k01, k02, k03, k04 } \ +} diff --git a/keyboards/handwired/dc/mc/001/config.h b/keyboards/handwired/dc/mc/001/config.h new file mode 100644 index 000000000000..4c687ae7fa73 --- /dev/null +++ b/keyboards/handwired/dc/mc/001/config.h @@ -0,0 +1,83 @@ +/* +Copyright 2021 Daniel Cormier + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4443 // 'D' 'C' +#define PRODUCT_ID 0x4D43 // 'M' 'C' +#define DEVICE_VER 0x0001 +#define MANUFACTURER Daniel Cormier +#define PRODUCT DC MC 001 + +/* + BUTTON_MUTE = _BV(4), + BUTTON_STOP = _BV(0), + BUTTON_TRACK_PREVIOUS = _BV(1), + BUTTON_TRACK_NEXT = _BV(2), + BUTTON_PLAY_PAUSE = _BV(3), +*/ +#define DIRECT_PINS \ + { \ + { B4, B0, B1, B2, B3 } \ + } +#define UNUSED_PINS + +/* + RE_CHANNEL_A = _BV(6), + RE_CHANNEL_B = _BV(5), +*/ +#define ENCODERS_PAD_A \ + { B6 } +#define ENCODERS_PAD_B \ + { B5 } +#define ENCODER_RESOLUTION 4 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +// All the keys just need 5ms of debounce, but the mute button on the rotary +// encoderneeds much more (50ms). +#define DEBOUNCE 50 + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +// The (default) Stop key +// Doesn't work, though. Maybe becuase of the bootloader that's in use? +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 1 + +#define USB_MAX_POWER_CONSUMPTION 100 diff --git a/keyboards/handwired/dc/mc/001/info.json b/keyboards/handwired/dc/mc/001/info.json new file mode 100644 index 000000000000..d9562f660e74 --- /dev/null +++ b/keyboards/handwired/dc/mc/001/info.json @@ -0,0 +1,16 @@ +{ + "keyboard_name": "Daniel Cormier's Media Controller (v1)", + "url": "https://imgur.com/a/PM9lQ", + "maintainer": "Daniel Cormier (Twitter: @danielcormier)", + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "Mute", "x": 0, "y": 0}, + {"label": "Stop", "x": 1, "y": 0}, + {"label": "Previous", "x": 2, "y": 0}, + {"label": "Next", "x": 3, "y": 0}, + {"label": "Play/Pause", "x": 4, "y": 0} + ] + } + } +} diff --git a/keyboards/handwired/dc/mc/001/keymaps/default/keymap.c b/keyboards/handwired/dc/mc/001/keymaps/default/keymap.c new file mode 100644 index 000000000000..6f6ca52d74df --- /dev/null +++ b/keyboards/handwired/dc/mc/001/keymaps/default/keymap.c @@ -0,0 +1,31 @@ +/* Copyright 2021 Daniel Cormier + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + LAYOUT(KC_AUDIO_MUTE, KC_MEDIA_STOP, KC_MEDIA_PREV_TRACK, KC_MEDIA_NEXT_TRACK, KC_MEDIA_PLAY_PAUSE), +}; + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } + return true; +} diff --git a/keyboards/handwired/dc/mc/001/keymaps/default/readme.md b/keyboards/handwired/dc/mc/001/keymaps/default/readme.md new file mode 100644 index 000000000000..e207a7b80d29 --- /dev/null +++ b/keyboards/handwired/dc/mc/001/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for DC MC 001 diff --git a/keyboards/handwired/dc/mc/001/readme.md b/keyboards/handwired/dc/mc/001/readme.md new file mode 100644 index 000000000000..9a20ac339b80 --- /dev/null +++ b/keyboards/handwired/dc/mc/001/readme.md @@ -0,0 +1,24 @@ +# handwired/dc/mc/001 + +[![handwired/dc/mc/001](https://i.imgur.com/bv2g32U.jpg) +*A freestanding media controller*](https://imgur.com/a/PM9lQ) + +* Keyboard Maintainer: [Daniel Cormier](https://github.com/dcormier) +* Hardware Supported: Adafruit Atmega32u4 Breakout Board +* Hardware Availability: https://www.adafruit.com/product/296 + +Make example for this keyboard (after setting up your build environment): + + make handwired/dc/mc/001:default + +Flashing example for this keyboard: + + make handwired/dc/mc/001:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader: + +* **Physical reset button**: Briefly press the button on the top of the PCB diff --git a/keyboards/handwired/dc/mc/001/rules.mk b/keyboards/handwired/dc/mc/001/rules.mk new file mode 100644 index 000000000000..33b8d392d962 --- /dev/null +++ b/keyboards/handwired/dc/mc/001/rules.mk @@ -0,0 +1,20 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +EXTRAKEY_ENABLE = yes # Audio control and System control +ENCODER_ENABLE = yes # Using a rotary encoder for volume control +MOUSEKEY_ENABLE = no # Mouse keys +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/ddg_56/info.json b/keyboards/handwired/ddg_56/info.json index 1b0509b0ec3b..300de84132f5 100644 --- a/keyboards/handwired/ddg_56/info.json +++ b/keyboards/handwired/ddg_56/info.json @@ -2,8 +2,6 @@ "keyboard_name": "ddg_56", "url": "", "maintainer": "spaceman", - "width": 16.5, - "height": 5.25, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/ddg_56/rules.mk b/keyboards/handwired/ddg_56/rules.mk index 56c900712846..ac0b9118260c 100644 --- a/keyboards/handwired/ddg_56/rules.mk +++ b/keyboards/handwired/ddg_56/rules.mk @@ -9,13 +9,11 @@ BOOTLOADER = stm32-dfu # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = yes # Audio output on port C6 -UNICODE_ENABLE = no # Unicode +AUDIO_ENABLE = yes # Audio output diff --git a/keyboards/handwired/eagleii/info.json b/keyboards/handwired/eagleii/info.json index 4c2edde6e78e..366a3ad35f56 100644 --- a/keyboards/handwired/eagleii/info.json +++ b/keyboards/handwired/eagleii/info.json @@ -2,11 +2,8 @@ "keyboard_name": "EagleII", "url": "", "maintainer": "Spaceman", - "width": 21.5, - "height": 5, "layouts": { "LAYOUT": { - "key_count": 74, "layout": [ {"label":"K47 (F7,C7)", "x":0, "y":0, "w":1.5}, {"label":"K27 (F1,C7)", "x":1.5, "y":0}, diff --git a/keyboards/handwired/eagleii/rules.mk b/keyboards/handwired/eagleii/rules.mk index aeee86d3af2c..8f50a61fb268 100644 --- a/keyboards/handwired/eagleii/rules.mk +++ b/keyboards/handwired/eagleii/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes EXTRAKEY_ENABLE = yes CONSOLE_ENABLE = no COMMAND_ENABLE = no -SLEEP_LED_ENABLE = no NKRO_ENABLE = no BACKLIGHT_ENABLE = no AUDIO_ENABLE = no diff --git a/keyboards/handwired/elrgo_s/config.h b/keyboards/handwired/elrgo_s/config.h new file mode 100644 index 000000000000..b2ef4681e546 --- /dev/null +++ b/keyboards/handwired/elrgo_s/config.h @@ -0,0 +1,58 @@ +/* +Copyright 2021 Yaroslav Smirnov + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +// Rows are doubled-up for splits +#define MATRIX_ROWS 8 +#define MATRIX_COLS 6 + +// Wiring of each half +#define MATRIX_ROW_PINS { B1, B3, B2, B6 } +#define MATRIX_COL_PINS { D4, C6, D7, E6, B4, B5 } +// Reversed sort + +#define DIODE_DIRECTION COL2ROW + +/* USB Device descriptor parameter */ +#define PRODUCT Elrgo S +#define MANUFACTURER Eloren +#define VENDOR_ID 0x454C +#define PRODUCT_ID 0x3436 +#define DEVICE_VER 0x0001 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* serial.c configuration for split keyboard */ +#define SOFT_SERIAL_PIN D0 + + +/* 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/handwired/elrgo_s/elrgo_s.c b/keyboards/handwired/elrgo_s/elrgo_s.c new file mode 100644 index 000000000000..32640da061b4 --- /dev/null +++ b/keyboards/handwired/elrgo_s/elrgo_s.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Yaroslav Smirnov + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "elrgo_s.h" diff --git a/keyboards/handwired/elrgo_s/elrgo_s.h b/keyboards/handwired/elrgo_s/elrgo_s.h new file mode 100644 index 000000000000..0fb2b58e5187 --- /dev/null +++ b/keyboards/handwired/elrgo_s/elrgo_s.h @@ -0,0 +1,38 @@ +/* Copyright 2021 Yaroslav Smirnov + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + + +#define LAYOUT_split_3x6_5(\ + L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ + L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ + L31, L32, L33, L34, L35, R30, R31, R32, R33, R34 \ + ) \ + { \ + { L00, L01, L02, L03, L04, L05 }, \ + { L10, L11, L12, L13, L14, L15 }, \ + { L20, L21, L22, L23, L24, L25 }, \ + {KC_NO, L31, L32, L33, L34, L35}, \ + \ + { R00, R01, R02, R03, R04, R05 }, \ + { R10, R11, R12, R13, R14, R15 }, \ + { R20, R21, R22, R23, R24, R25 }, \ + { R30, R31, R32, R33, R34, KC_NO} \ +} diff --git a/keyboards/handwired/elrgo_s/info.json b/keyboards/handwired/elrgo_s/info.json new file mode 100644 index 000000000000..7c2039605d9b --- /dev/null +++ b/keyboards/handwired/elrgo_s/info.json @@ -0,0 +1,57 @@ +{ + "keyboard_name": "Elrgo S", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_split_3x6_5": { + "layout": [ + {"label":"L00", "x":0, "y":0}, + {"label":"L01", "x":1, "y":0}, + {"label":"L02", "x":2, "y":0}, + {"label":"L03", "x":3, "y":0}, + {"label":"L04", "x":4, "y":0}, + {"label":"L05", "x":5, "y":0}, + {"label":"R00", "x":9, "y":0}, + {"label":"R01", "x":10, "y":0}, + {"label":"R02", "x":11, "y":0}, + {"label":"R03", "x":12, "y":0}, + {"label":"R04", "x":13, "y":0}, + {"label":"R05", "x":14, "y":0}, + {"label":"L10", "x":0, "y":1}, + {"label":"L11", "x":1, "y":1}, + {"label":"L12", "x":2, "y":1}, + {"label":"L13", "x":3, "y":1}, + {"label":"L14", "x":4, "y":1}, + {"label":"L15", "x":5, "y":1}, + {"label":"R10", "x":9, "y":1}, + {"label":"R11", "x":10, "y":1}, + {"label":"R12", "x":11, "y":1}, + {"label":"R13", "x":12, "y":1}, + {"label":"R14", "x":13, "y":1}, + {"label":"R15", "x":14, "y":1}, + {"label":"L20", "x":0, "y":2}, + {"label":"L21", "x":1, "y":2}, + {"label":"L22", "x":2, "y":2}, + {"label":"L23", "x":3, "y":2}, + {"label":"L24", "x":4, "y":2}, + {"label":"L25", "x":5, "y":2}, + {"label":"R20", "x":9, "y":2}, + {"label":"R21", "x":10, "y":2}, + {"label":"R22", "x":11, "y":2}, + {"label":"R23", "x":12, "y":2}, + {"label":"R24", "x":13, "y":2}, + {"label":"R25", "x":14, "y":2}, + {"label":"L31", "x":3, "y":3}, + {"label":"L32", "x":4, "y":3}, + {"label":"L33", "x":5, "y":3}, + {"label":"L34", "x":6, "y":3}, + {"label":"L35", "x":6, "y":2}, + {"label":"R30", "x":8, "y":2}, + {"label":"R31", "x":8, "y":3}, + {"label":"R32", "x":9, "y":3}, + {"label":"R33", "x":10, "y":3}, + {"label":"R34", "x":11, "y":3} + ] + } + } +} diff --git a/keyboards/handwired/elrgo_s/keymaps/default/config.h b/keyboards/handwired/elrgo_s/keymaps/default/config.h new file mode 100644 index 000000000000..f3ef42b9b423 --- /dev/null +++ b/keyboards/handwired/elrgo_s/keymaps/default/config.h @@ -0,0 +1,22 @@ +/* Copyright 2021 Yaroslav Smirnov + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define USE_SERIAL + +#define MASTER_LEFT +// #define MASTER_RIGHT diff --git a/keyboards/handwired/elrgo_s/keymaps/default/keymap.c b/keyboards/handwired/elrgo_s/keymaps/default/keymap.c new file mode 100644 index 000000000000..572edbf0b859 --- /dev/null +++ b/keyboards/handwired/elrgo_s/keymaps/default/keymap.c @@ -0,0 +1,58 @@ +/* Copyright 2021 Yaroslav Smirnov + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layers { _QWERTY, _LOWER, _RAISE, _ADJUST }; + +#define LOWER TT(_LOWER) +#define RAISE MO(_RAISE) + +#define M_SHLL LCTL(KC_LSFT) +#define M_SHLA LCTL(KC_LALT) +#define M_BBSLS LSFT(KC_BSLS) +#define M_FLEFT LCTL(KC_LEFT) +#define M_FRIGHT LCTL(KC_RIGHT) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QWERTY] = LAYOUT_split_3x6_5( + KC_ESC , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_BSPC , + KC_LBRC , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN , KC_QUOT , + KC_RBRC , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM , KC_DOT , KC_SLSH , KC_GRAVE, + KC_LGUI , KC_LCTL , KC_LSFT , LOWER , M_SHLL , M_SHLA , RAISE , KC_SPC , KC_LALT , KC_ENT + ), + + [_LOWER] = LAYOUT_split_3x6_5( + KC_ESC , KC_PDOT , KC_PMNS , KC_PPLS , KC_MINS , KC_EQL , KC_MUTE , KC_MSTP , KC_MPLY , KC_MPRV , KC_MNXT , KC_BSPC , + KC_PAST , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , + KC_PSLS , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , + KC_LGUI , KC_LCTL , KC_LSFT , KC_TRNS , M_SHLL , M_SHLA , KC_TRNS , KC_SPC , KC_LALT , KC_ENT + ), + + [_RAISE] = LAYOUT_split_3x6_5( + KC_ESC , KC_PDOT , M_BBSLS , KC_BSLS , LSFT(KC_MINS), LSFT(KC_EQL), KC_HOME , KC_WH_L , KC_UP , KC_WH_R , KC_PGUP , KC_BSPC , + KC_TAB , LSFT(KC_1), LSFT(KC_2), LSFT(KC_3), LSFT(KC_4) , LSFT(KC_5) , M_FLEFT , KC_LEFT , KC_DOWN , KC_RIGHT, M_FRIGHT, KC_DEL , + LSFT(KC_TAB), LSFT(KC_6), LSFT(KC_7), LSFT(KC_8), LSFT(KC_9) , LSFT(KC_0) , KC_END , KC_F22 , KC_F23 , KC_CAPS , KC_PGDN , MO(_ADJUST), + KC_LGUI , KC_LCTL , KC_LSFT , KC_LALT , M_SHLL , M_SHLA , KC_TRNS , KC_SPC , KC_RALT , KC_ENT + ), + + [_ADJUST] = LAYOUT_split_3x6_5( + KC_NO , KC_SLEP , KC_VOLU , KC_BRIU , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NLCK , + KC_NO , KC_WAKE , KC_VOLD , KC_BRID , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , + KC_NO , KC_NO , KC_NO , KC_F13 , KC_F14 , KC_F15 , KC_F16 , KC_F17 , KC_F18 , KC_NO , KC_NO , MO(_ADJUST), + RESET , KC_NO , KC_NO , KC_TRNS , KC_NO , KC_NO , KC_TRNS , KC_TRNS , KC_NO , KC_NO + ) +}; diff --git a/keyboards/handwired/elrgo_s/readme.md b/keyboards/handwired/elrgo_s/readme.md new file mode 100644 index 000000000000..5fb5ab6acb0f --- /dev/null +++ b/keyboards/handwired/elrgo_s/readme.md @@ -0,0 +1,28 @@ +# Elrgo S Split Keyboard + +This is a fork of the VOID Ergo S with QMK Configurator support. + +Elrgo S uses 2x Arduino Pro Micro (ATmega32U4) with 3D printed case. + +[Building guide, models for 3D printing](https://github.com/Eloren1/Elrgo_S) + +* Keyboard Maintainer: [Eloren](https://github.com/Eloren1) +* Hardware Supported: Arduino Pro Micro +* Hardware Availability: [Open Source](https://github.com/Eloren1/Elrgo_S) + +Make example for this keyboard (after setting up your build environment): + + make handwired/elrgo_s:default + +Flashing example for this keyboard: + + make handwired/elrgo_s:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 2 ways: + +* **Physical reset button**: Briefly press the button through the hole on the left side of the case. +* **Keycode in layout**: Press the key mapped to `RESET` if it is available diff --git a/keyboards/handwired/elrgo_s/rules.mk b/keyboards/handwired/elrgo_s/rules.mk new file mode 100644 index 000000000000..10c03c7bc757 --- /dev/null +++ b/keyboards/handwired/elrgo_s/rules.mk @@ -0,0 +1,20 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +SPLIT_KEYBOARD = yes diff --git a/keyboards/handwired/ergocheap/ergocheap.h b/keyboards/handwired/ergocheap/ergocheap.h index 72f37756182e..106fa45328ef 100644 --- a/keyboards/handwired/ergocheap/ergocheap.h +++ b/keyboards/handwired/ergocheap/ergocheap.h @@ -27,16 +27,15 @@ along with this program. If not, see . #define LAYOUT( \ - K00, K01, K02, K0B, K0D, K0E, K0F, \ - K10, K11, K03, K04, K05, K06, K07, K08, K09, K0A, K1B, K1D, K1E, K1F, \ - K20, K21,K12, K13, K14, K15, K16, K17, K18, K19, K1A, K2B, K2D, K2E, K2F, \ - K30, K31,K22, K23, K24, K25, K26, K27, K28, K29, K3B, K3D, K3E, K3F, \ - K40, K32, K33, K34, K35, K36, K37, K38, K39, K4B, K4D, K4E, K4F, \ - K42, K44, K45, K46, K47, K48 \ + 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, K2B, K2D, K2E, K2F, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3B, K3D, K3E, K3F, \ + K40, K42, K44, K45, K46, K47, K48, K4B, K4D, K4E, K4F \ ) { \ - { 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, KC_NO, K2B, K2D, K2E, K2F, }, \ - { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, KC_NO, K3B, K3D, K3E, K3F, }, \ - { K40, KC_NO, K42, KC_NO, K44, K45, K46, K47, K48, KC_NO, KC_NO, K4B, K4D, K4E, K4F } \ + { 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, KC_NO, K2B, K2D, K2E, K2F }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, KC_NO, K3B, K3D, K3E, K3F }, \ + { K40, KC_NO, K42, KC_NO, K44, K45, K46, K47, K48, KC_NO, KC_NO, K4B, K4D, K4E, K4F } \ } diff --git a/keyboards/handwired/ergocheap/info.json b/keyboards/handwired/ergocheap/info.json index 2bf09653aa03..8896b932f203 100644 --- a/keyboards/handwired/ergocheap/info.json +++ b/keyboards/handwired/ergocheap/info.json @@ -1,12 +1,80 @@ { - "keyboard_name": "Ergocheap", - "url": "", - "maintainer": "xSteins", - "width": 17.8, - "height": 11.85, + "keyboard_name": "Ergocheap", + "url": "", + "maintainer": "xSteins", "layouts": { "LAYOUT": { - "layout": [{"label":"0,12", "x":13.47, "y":0}, {"label":"0,13", "x":14.5, "y":0, "w":2}, {"label":"0,14", "x":16.5, "y":0}, {"label":"0,0", "x":0.75, "y":0.25}, {"label":"0,1", "x":1.75, "y":0.25}, {"label":"1,11", "x":13.1, "y":1}, {"label":"1,12", "x":14.1, "y":1}, {"label":"1,13", "x":15.1, "y":1, "w":1.5}, {"label":"1,14", "x":16.6, "y":1}, {"label":"1,0", "x":0.5, "y":1.25, "w":1.5}, {"label":"1,1", "x":2, "y":1.25}, {"label":"2,11", "x":13.55, "y":2}, {"label":"2,12", "x":14.55, "y":2, "w":2.25}, {"label":"2,13", "x":16.8, "y":2}, {"label":"2,0", "x":0.25, "y":2.25, "w":1.75}, {"label":"2,1", "x":2, "y":2.25}, {"label":"3,11", "x":13.05, "y":3}, {"label":"3,12", "x":14.05, "y":3, "w":1.75}, {"label":"3,13", "x":15.75, "y":3}, {"label":"3,14", "x":16.75, "y":3}, {"label":"3,0", "x":0.1, "y":3.25, "w":2.25}, {"label":"3,1", "x":2.35, "y":3.25}, {"label":"4,8", "x":13.5, "y":4, "w":1.25}, {"label":"4,12", "x":14.75, "y":4}, {"label":"4,13", "x":15.75, "y":4}, {"label":"4,14", "x":16.75, "y":4}, {"label":"4,0", "x":0.1, "y":4.25, "w":1.25}, {"label":"0,11", "x":2.45, "y":5.25}, {"label":"0,2", "x":-7.25, "y":5.35}, {"label":"0,3", "x":-5.1, "y":4.1}, {"label":"0,4", "x":-4.1, "y":4.1}, {"label":"0,5", "x":-3.0999999999999996, "y":4.1}, {"label":"0,6", "x":-2.0999999999999996, "y":4.1}, {"label":"1,2", "x":-5.7, "y":5.1}, {"label":"1,3", "x":-4.7, "y":5.1}, {"label":"1,4", "x":-3.7, "y":5.1}, {"label":"1,5", "x":-2.7, "y":5.1}, {"label":"2,2", "x":-5.45, "y":6.1}, {"label":"2,3", "x":-4.45, "y":6.1}, {"label":"2,4", "x":-3.45, "y":6.1}, {"label":"2,5", "x":-2.45, "y":6.1}, {"label":"3,2", "x":-4.85, "y":7.1}, {"label":"3,3", "x":-3.8499999999999996, "y":7.1}, {"label":"3,4", "x":-2.8499999999999996, "y":7.1}, {"label":"3,5", "x":-1.8499999999999996, "y":7.1}, {"label":"4,2", "x":-4.9, "y":8.1, "w":1.25}, {"label":"4,4", "x":-3.6500000000000004, "y":8.1, "w":2}, {"label":"4,5", "x":-1.6500000000000004, "y":8.1, "w":1.25}, {"label":"0,7", "x":0.3, "y":6.85}, {"label":"0,8", "x":1.3, "y":6.85}, {"label":"0,9", "x":2.3, "y":6.85}, {"label":"0,10", "x":3.3, "y":6.85}, {"label":"1,6", "x":-0.2, "y":7.85}, {"label":"1,7", "x":0.7999999999999999, "y":7.85}, {"label":"1,8", "x":1.8, "y":7.85}, {"label":"1,9", "x":2.8, "y":7.85}, {"label":"1,10", "x":3.8, "y":7.85}, {"label":"2,6", "x":0.05, "y":8.85}, {"label":"2,7", "x":1.05, "y":8.85}, {"label":"2,8", "x":2.05, "y":8.85}, {"label":"2,9", "x":3.05, "y":8.85}, {"label":"2,10", "x":4, "y":8.85}, {"label":"3,6", "x":0.3, "y":9.85}, {"label":"3,7", "x":1.3, "y":9.85}, {"label":"3,8", "x":2.3, "y":9.85}, {"label":"3,9", "x":3.3, "y":9.85}, {"label":"4,6", "x":-0.2, "y":10.85, "w":2.75}, {"label":"4,7", "x":2.5, "y":10.85, "w":1.25}] + "layout": [ + {"label":"ESC", "x":0.75, "y":0}, + {"label":"1", "x":1.75, "y":0}, + {"label":"2", "x":2.75, "y":0}, + {"label":"3", "x":4.25, "y":0}, + {"label":"4", "x":5.25, "y":0}, + {"label":"5", "x":6.25, "y":0}, + {"label":"6", "x":7.25, "y":0}, + {"label":"7", "x":10.5, "y":0}, + {"label":"8", "x":11.5, "y":0}, + {"label":"9", "x":12.5, "y":0}, + {"label":"0", "x":13.5, "y":0}, + {"label":"MINS", "x":14.5, "y":0}, + {"label":"EQL", "x":16, "y":0}, + {"label":"BSPC", "x":17, "y":0, "w":2}, + {"label":"GRV", "x":19, "y":0}, + {"label":"TAB", "x":0.5, "y":1, "w":1.5}, + {"label":"Q", "x":2, "y":1}, + {"label":"W", "x":3.75, "y":1}, + {"label":"E", "x":4.75, "y":1}, + {"label":"R", "x":5.75, "y":1}, + {"label":"T", "x":6.75, "y":1}, + {"label":"Y", "x":10, "y":1}, + {"label":"U", "x":11, "y":1}, + {"label":"I", "x":12, "y":1}, + {"label":"O", "x":13, "y":1}, + {"label":"P", "x":14, "y":1}, + {"label":"LBRC", "x":16, "y":1}, + {"label":"RBRC", "x":17, "y":1}, + {"label":"BSLS", "x":18, "y":1, "w":1.5}, + {"label":"DEL", "x":19.5, "y":1}, + {"label":"CAPS", "x":0.25, "y":2, "w":1.75}, + {"label":"A", "x":2, "y":2}, + {"label":"S", "x":4, "y":2}, + {"label":"D", "x":5, "y":2}, + {"label":"F", "x":6, "y":2}, + {"label":"G", "x":7, "y":2}, + {"label":"H", "x":10.25, "y":2}, + {"label":"J", "x":11.25, "y":2}, + {"label":"K", "x":12.25, "y":2}, + {"label":"L", "x":13.25, "y":2}, + {"label":"SCLN", "x":15.5, "y":2}, + {"label":"QUOT", "x":16.5, "y":2}, + {"label":"ENT", "x":17.5, "y":2, "w":2.25}, + {"label":"HOME", "x":19.75, "y":2}, + {"label":"LSFT", "x":0, "y":3, "w":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":4.5, "y":3}, + {"label":"C", "x":5.5, "y":3}, + {"label":"V", "x":6.5, "y":3}, + {"label":"B", "x":7.5, "y":3}, + {"label":"N", "x":10.5, "y":3}, + {"label":"M", "x":11.5, "y":3}, + {"label":"COMM", "x":12.5, "y":3}, + {"label":"DOT", "x":13.5, "y":3}, + {"label":"SLSH", "x":15.75, "y":3}, + {"label":"TO(_FN1)", "x":16.75, "y":3, "w":1.25}, + {"label":"UP", "x":18, "y":3}, + {"label":"END", "x":19.5, "y":3}, + {"label":"LCTL", "x":0, "y":4, "w":1.25}, + {"label":"LALT", "x":4.5, "y":4, "w":1.25}, + {"label":"SPC", "x":5.75, "y":4, "w":2}, + {"label":"MO(_FN1)", "x":7.75, "y":4, "w":1.25}, + {"label":"SPC", "x":10, "y":4, "w":1.75}, + {"label":"SPC", "x":11.75, "y":4}, + {"label":"MO(_FN1)", "x":12.75, "y":4, "w":1.25}, + {"label":"LGUI", "x":15.5, "y":4, "w":1.25}, + {"label":"LEFT", "x":17, "y":4}, + {"label":"DOWN", "x":18, "y":4}, + {"label":"RGHT", "x":19, "y":4} + ] } } -} \ No newline at end of file +} diff --git a/keyboards/handwired/ergocheap/keymaps/default/keymap.c b/keyboards/handwired/ergocheap/keymaps/default/keymap.c index dc70f4f27837..15753dabd7d1 100644 --- a/keyboards/handwired/ergocheap/keymaps/default/keymap.c +++ b/keyboards/handwired/ergocheap/keymaps/default/keymap.c @@ -24,19 +24,17 @@ enum layer_names { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_BASE] = LAYOUT( - KC_ESC, KC_1, KC_2, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, - KC_TAB, KC_Q, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, - KC_CAPS, KC_A, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME, - KC_LSFT, KC_Z, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SLSH, TO(_FN1), KC_UP, KC_END, - KC_LCTL, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_LGUI, KC_LEFT, KC_DOWN, KC_RGHT, - KC_LALT, KC_SPC, MO(_FN1),KC_SPC, KC_SPC, MO(_FN1) + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, TO(_FN1), KC_UP, KC_END, + KC_LCTL, KC_LALT, KC_SPC, MO(_FN1), KC_SPC, KC_SPC, MO(_FN1), KC_LGUI, KC_LEFT, KC_DOWN, KC_RGHT ), [_FN1] = LAYOUT( - KC_GRV, KC_F1, KC_F2, KC_F11, KC_F12, _______, _______, - _______, _______, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_UP, _______, _______, _______, - KC_LCTL, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_LEFT, KC_RIGHT, _______, _______, - KC_LSFT, KC_LEFT, KC_S, _______, _______, _______, _______, KC_VOLD, KC_MUTE, KC_VOLU, KC_DOWN, TO(_BASE), KC_MS_WH_UP, _______, - _______, KC_UP, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, KC_MS_WH_LEFT, KC_MS_WH_DOWN, KC_MS_WH_RIGHT, - KC_LGUI, _______, _______, _______, _______, _______ + 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_MPRV, KC_MPLY, KC_MNXT, _______, KC_UP, _______, _______, _______, + KC_LCTL, _______, KC_S, _______, _______, _______, _______, KC_VOLD, KC_MUTE, KC_VOLU, KC_LEFT, KC_RGHT, _______, _______, + KC_LSFT, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, KC_DOWN, TO(_BASE), KC_WH_U, _______, + _______, KC_LGUI, _______, _______, _______, _______, _______, _______, KC_WH_L, KC_WH_D, KC_WH_R ) }; diff --git a/keyboards/handwired/ergocheap/keymaps/via/keymap.c b/keyboards/handwired/ergocheap/keymaps/via/keymap.c index 6f56f52f65f1..35d5826a1490 100644 --- a/keyboards/handwired/ergocheap/keymaps/via/keymap.c +++ b/keyboards/handwired/ergocheap/keymaps/via/keymap.c @@ -26,35 +26,31 @@ enum layer_names { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_BASE] = LAYOUT( - KC_ESC, KC_1, KC_2, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, - KC_TAB, KC_Q, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, - KC_CAPS, KC_A, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME, - KC_LSFT, KC_Z, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SLSH, TO(_FN1), KC_UP, KC_END, - KC_LCTL, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_LGUI, KC_LEFT, KC_DOWN, KC_RGHT, - KC_LALT, KC_SPC, MO(_FN1),KC_SPC, KC_SPC, MO(_FN1) + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, TO(_FN1), KC_UP, KC_END, + KC_LCTL, KC_LALT, KC_SPC, MO(_FN1), KC_SPC, KC_SPC, MO(_FN1), KC_LGUI, KC_LEFT, KC_DOWN, KC_RGHT ), [_FN1] = LAYOUT( - KC_GRV, KC_F1, KC_F2, KC_F11, KC_F12, _______, _______, - _______, _______, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_UP, _______, _______, _______, - KC_LCTL, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_LEFT, KC_RIGHT, _______, _______, - KC_LSFT, KC_LEFT, KC_S, _______, _______, _______, _______, KC_VOLD, KC_MUTE, KC_VOLU, KC_DOWN, TO(_BASE), KC_MS_WH_UP, _______, - _______, KC_UP, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, KC_MS_WH_LEFT, KC_MS_WH_DOWN, KC_MS_WH_RIGHT, - KC_LGUI, _______, _______, _______, _______, _______ + 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_MPRV, KC_MPLY, KC_MNXT, _______, KC_UP, _______, _______, _______, + KC_LCTL, _______, KC_S, _______, _______, _______, _______, KC_VOLD, KC_MUTE, KC_VOLU, KC_LEFT, KC_RGHT, _______, _______, + KC_LSFT, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, KC_DOWN, TO(_BASE), KC_WH_U, _______, + _______, KC_LGUI, _______, _______, _______, _______, _______, _______, KC_WH_L, KC_WH_D, KC_WH_R ), [_FN2] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), [_FN3] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) }; diff --git a/keyboards/handwired/ergocheap/rules.mk b/keyboards/handwired/ergocheap/rules.mk index b126207bc671..100b014dee9b 100644 --- a/keyboards/handwired/ergocheap/rules.mk +++ b/keyboards/handwired/ergocheap/rules.mk @@ -10,16 +10,14 @@ OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = yes # 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output +SLEEP_LED_ENABLE = yes diff --git a/keyboards/handwired/evk/v1_3/info.json b/keyboards/handwired/evk/v1_3/info.json index 65000a97b2e5..fb225566fde0 100644 --- a/keyboards/handwired/evk/v1_3/info.json +++ b/keyboards/handwired/evk/v1_3/info.json @@ -2,101 +2,104 @@ "keyboard_name": "Ergonomic Vertical Keyboard (EVK) version 1.3 with Teensy 2.0", "url": "https://github.com/YangPiCui/ErgonomicVerticalKeyboard", "maintainer": "YangPiCui", - "width": 22.75, - "height": 8, "layouts": { "LAYOUT": { "layout": [ - {"label":"k0A", "x":0, "y":0.5, "w":1.25, "h":1.25}, - {"label":"k0B", "x":1.25, "y":0.25, "w":1.25, "h":1.25}, - {"label":"k0C", "x":2.5, "y":0, "w":1.25, "h":1.25}, - {"label":"k0D", "x":3.75, "y":0.25, "w":1.25, "h":1.25}, - {"label":"k0E", "x":5, "y":0.25, "w":1.25, "h":1.25}, - {"label":"k0F", "x":6.25, "y":0.25, "w":1.25, "h":1.25}, - {"label":"k0G", "x":8.75, "y":0.25, "w":1.25, "h":1.25}, - {"label":"k0H", "x":10, "y":0.25, "w":1.25, "h":1.25}, - {"label":"k0I", "x":11.25, "y":0.25, "w":1.25, "h":1.25}, - {"label":"k0J", "x":12.5, "y":0.25, "w":1.25, "h":1.25}, - {"label":"k0K", "x":15.25, "y":0.25, "w":1.25, "h":1.25}, - {"label":"k0L", "x":16.5, "y":0.25, "w":1.25, "h":1.25}, - {"label":"k0M", "x":17.75, "y":0.25, "w":1.25, "h":1.25}, - {"label":"k0N", "x":19, "y":0, "w":1.25, "h":1.25}, - {"label":"k0O", "x":20.25, "y":0.25, "w":1.25, "h":1.25}, - {"label":"k0P", "x":21.5, "y":0.5, "w":1.25, "h":1.25}, - {"label":"k1A", "x":0, "y":1.75, "w":1.25, "h":1.25}, - {"label":"k1B", "x":1.25, "y":1.5, "w":1.25, "h":1.25}, - {"label":"k1C", "x":2.5, "y":1.25, "w":1.25, "h":1.25}, - {"label":"k1D", "x":3.75, "y":1.5, "w":1.25, "h":1.25}, - {"label":"k1E", "x":5, "y":1.5, "w":1.25, "h":1.25}, - {"label":"k1F", "x":6.25, "y":1.5, "w":1.25, "h":1.25}, - {"label":"k1G", "x":8.75, "y":1.5, "w":1.25, "h":1.25}, - {"label":"k1H", "x":10, "y":1.5, "w":1.25, "h":1.25}, - {"label":"k1I", "x":11.25, "y":1.5, "w":1.25, "h":1.25}, - {"label":"k1J", "x":12.5, "y":1.5, "w":1.25, "h":1.25}, - {"label":"k1K", "x":15.25, "y":1.5, "w":1.25, "h":1.25}, - {"label":"k1L", "x":16.5, "y":1.5, "w":1.25, "h":1.25}, - {"label":"k1M", "x":17.75, "y":1.5, "w":1.25, "h":1.25}, - {"label":"k1N", "x":19, "y":1.25, "w":1.25, "h":1.25}, - {"label":"k1O", "x":20.25, "y":1.5, "w":1.25, "h":1.25}, - {"label":"k1P", "x":21.5, "y":1.75, "w":1.25, "h":1.25}, - {"label":"k2A", "x":0, "y":3, "w":1.25, "h":1.25}, - {"label":"k2B", "x":1.25, "y":2.75, "w":1.25, "h":1.25}, - {"label":"k2C", "x":2.5, "y":2.5, "w":1.25, "h":1.25}, - {"label":"k2D", "x":3.75, "y":2.75, "w":1.25, "h":1.25}, - {"label":"k2E", "x":5, "y":2.75, "w":1.25, "h":1.25}, - {"label":"k2F", "x":6.25, "y":2.75, "w":1.25, "h":1.25}, - {"label":"k2G", "x":8.75, "y":2.75, "w":1.25, "h":1.25}, - {"label":"k2H", "x":10, "y":2.75, "w":1.25, "h":1.25}, - {"label":"k2I", "x":11.25, "y":2.75, "w":1.25, "h":1.25}, - {"label":"k2J", "x":12.5, "y":2.75, "w":1.25, "h":1.25}, - {"label":"k2K", "x":15.25, "y":2.75, "w":1.25, "h":1.25}, - {"label":"k2L", "x":16.5, "y":2.75, "w":1.25, "h":1.25}, - {"label":"k2M", "x":17.75, "y":2.75, "w":1.25, "h":1.25}, - {"label":"k2N", "x":19, "y":2.5, "w":1.25, "h":1.25}, - {"label":"k2O", "x":20.25, "y":2.75, "w":1.25, "h":1.25}, - {"label":"k2P", "x":21.5, "y":3, "w":1.25, "h":1.25}, - {"label":"k3A", "x":0, "y":4.25, "w":1.25, "h":1.25}, - {"label":"k3B", "x":1.25, "y":4, "w":1.25, "h":1.25}, - {"label":"k3C", "x":2.5, "y":3.75, "w":1.25, "h":1.25}, - {"label":"k3D", "x":3.75, "y":4, "w":1.25, "h":1.25}, - {"label":"k3E", "x":5, "y":4, "w":1.25, "h":1.25}, - {"label":"k3G", "x":8.75, "y":4, "w":1.25, "h":1.25}, - {"label":"k3H", "x":10, "y":4, "w":1.25, "h":1.25}, - {"label":"k3I", "x":11.25, "y":4, "w":1.25, "h":1.25}, - {"label":"k3J", "x":12.5, "y":4, "w":1.25, "h":1.25}, - {"label":"k3L", "x":16.5, "y":4, "w":1.25, "h":1.25}, - {"label":"k3M", "x":17.75, "y":4, "w":1.25, "h":1.25}, - {"label":"k3N", "x":19, "y":3.75, "w":1.25, "h":1.25}, - {"label":"k3O", "x":20.25, "y":4, "w":1.25, "h":1.25}, - {"label":"k3P", "x":21.5, "y":4.25, "w":1.25, "h":1.25}, - {"label":"k4A", "x":0, "y":5.5, "w":1.25, "h":1.25}, - {"label":"k4B", "x":1.25, "y":5.25, "w":1.25, "h":1.25}, - {"label":"k4C", "x":2.5, "y":5, "w":1.25, "h":1.25}, - {"label":"k4D", "x":3.75, "y":5.25, "w":1.25, "h":1.25}, - {"label":"k4E", "x":5, "y":5.25, "w":1.25, "h":1.25}, - {"label":"k4F", "x":6.5, "y":5.5, "w":1.25, "h":1.25}, - {"label":"k4G", "x":8.75, "y":5.25, "w":1.25, "h":1.25}, - {"label":"k4H", "x":10, "y":5.25, "w":1.25, "h":1.25}, - {"label":"k4I", "x":11.25, "y":5.25, "w":1.25, "h":1.25}, - {"label":"k4J", "x":12.5, "y":5.25, "w":1.25, "h":1.25}, - {"label":"k4K", "x":15, "y":5.5, "w":1.25, "h":1.25}, - {"label":"k4L", "x":16.5, "y":5.25, "w":1.25, "h":1.25}, - {"label":"k4M", "x":17.75, "y":5.25, "w":1.25, "h":1.25}, - {"label":"k4N", "x":19, "y":5, "w":1.25, "h":1.25}, - {"label":"k4O", "x":20.25, "y":5.25, "w":1.25, "h":1.25}, - {"label":"k4P", "x":21.5, "y":5.5, "w":1.25, "h":1.25}, - {"label":"k5B", "x":1.25, "y":6.5, "w":1.25, "h":1.25}, - {"label":"k5C", "x":2.5, "y":6.25, "w":1.25, "h":1.25}, - {"label":"k5E", "x":5.25, "y":6.75, "w":1.25, "h":1.25}, - {"label":"k5F", "x":6.55, "y":6.75, "w":1.25, "h":1.25}, - {"label":"k5G", "x":8.75, "y":6.5, "w":1.25, "h":1.25}, - {"label":"k5H", "x":10, "y":6.5, "w":1.25, "h":1.25}, - {"label":"k5I", "x":11.25, "y":6.5, "w":1.25, "h":1.25}, - {"label":"k5J", "x":12.5, "y":6.5, "w":1.25, "h":1.25}, - {"label":"k5K", "x":15, "y":6.75, "w":1.25, "h":1.25}, - {"label":"k5L", "x":16.25, "y":6.75, "w":1.25, "h":1.25}, - {"label":"k5N", "x":19, "y":6.25, "w":1.25, "h":1.25}, - {"label":"k5O", "x":20.25, "y":6.5, "w":1.25, "h":1.25} + {"label":"k0A", "x":0, "y":0.4}, + {"label":"k0B", "x":1, "y":0.2}, + {"label":"k0C", "x":2, "y":0}, + {"label":"k0D", "x":3, "y":0.2}, + {"label":"k0E", "x":4, "y":0.2}, + {"label":"k0F", "x":5, "y":0.2}, + {"label":"k0G", "x":7, "y":0.2}, + {"label":"k0H", "x":8, "y":0.2}, + {"label":"k0I", "x":9, "y":0.2}, + {"label":"k0J", "x":10, "y":0.2}, + {"label":"k0K", "x":12.2, "y":0.2}, + {"label":"k0L", "x":13.2, "y":0.2}, + {"label":"k0M", "x":14.2, "y":0.2}, + {"label":"k0N", "x":15.2, "y":0}, + {"label":"k0O", "x":16.2, "y":0.2}, + {"label":"k0P", "x":17.2, "y":0.4}, + + {"label":"k1A", "x":0, "y":1.4}, + {"label":"k1B", "x":1, "y":1.2}, + {"label":"k1C", "x":2, "y":1}, + {"label":"k1D", "x":3, "y":1.2}, + {"label":"k1E", "x":4, "y":1.2}, + {"label":"k1F", "x":5, "y":1.2}, + {"label":"k1G", "x":7, "y":1.2}, + {"label":"k1H", "x":8, "y":1.2}, + {"label":"k1I", "x":9, "y":1.2}, + {"label":"k1J", "x":10, "y":1.2}, + {"label":"k1K", "x":12.2, "y":1.2}, + {"label":"k1L", "x":13.2, "y":1.2}, + {"label":"k1M", "x":14.2, "y":1.2}, + {"label":"k1N", "x":15.2, "y":1}, + {"label":"k1O", "x":16.2, "y":1.2}, + {"label":"k1P", "x":17.2, "y":1.4}, + + {"label":"k2A", "x":0, "y":2.4}, + {"label":"k2B", "x":1, "y":2.2}, + {"label":"k2C", "x":2, "y":2}, + {"label":"k2D", "x":3, "y":2.2}, + {"label":"k2E", "x":4, "y":2.2}, + {"label":"k2F", "x":5, "y":2.2}, + {"label":"k2G", "x":7, "y":2.2}, + {"label":"k2H", "x":8, "y":2.2}, + {"label":"k2I", "x":9, "y":2.2}, + {"label":"k2J", "x":10, "y":2.2}, + {"label":"k2K", "x":12.2, "y":2.2}, + {"label":"k2L", "x":13.2, "y":2.2}, + {"label":"k2M", "x":14.2, "y":2.2}, + {"label":"k2N", "x":15.2, "y":2}, + {"label":"k2O", "x":16.2, "y":2.2}, + {"label":"k2P", "x":17.2, "y":2.4}, + + {"label":"k3A", "x":0, "y":3.4}, + {"label":"k3B", "x":1, "y":3.2}, + {"label":"k3C", "x":2, "y":3}, + {"label":"k3D", "x":3, "y":3.2}, + {"label":"k3E", "x":4, "y":3.2}, + {"label":"k3G", "x":7, "y":3.2}, + {"label":"k3H", "x":8, "y":3.2}, + {"label":"k3I", "x":9, "y":3.2}, + {"label":"k3J", "x":10, "y":3.2}, + {"label":"k3L", "x":13.2, "y":3.2}, + {"label":"k3M", "x":14.2, "y":3.2}, + {"label":"k3N", "x":15.2, "y":3}, + {"label":"k3O", "x":16.2, "y":3.2}, + {"label":"k3P", "x":17.2, "y":3.4}, + + {"label":"k4A", "x":0, "y":4.4}, + {"label":"k4B", "x":1, "y":4.2}, + {"label":"k4C", "x":2, "y":4}, + {"label":"k4D", "x":3, "y":4.2}, + {"label":"k4E", "x":4, "y":4.2}, + {"label":"k4F", "x":5.2, "y":4.4}, + {"label":"k4G", "x":7, "y":4.2}, + {"label":"k4H", "x":8, "y":4.2}, + {"label":"k4I", "x":9, "y":4.2}, + {"label":"k4J", "x":10, "y":4.2}, + {"label":"k4K", "x":12, "y":4.4}, + {"label":"k4L", "x":13.2, "y":4.2}, + {"label":"k4M", "x":14.2, "y":4.2}, + {"label":"k4N", "x":15.2, "y":4}, + {"label":"k4O", "x":16.2, "y":4.2}, + {"label":"k4P", "x":17.2, "y":4.4}, + + {"label":"k5B", "x":1, "y":5.2}, + {"label":"k5C", "x":2, "y":5}, + {"label":"k5E", "x":4.2, "y":5.4}, + {"label":"k5F", "x":5.24, "y":5.4}, + {"label":"k5G", "x":7, "y":5.2}, + {"label":"k5H", "x":8, "y":5.2}, + {"label":"k5I", "x":9, "y":5.2}, + {"label":"k5J", "x":10, "y":5.2}, + {"label":"k5K", "x":12, "y":5.4}, + {"label":"k5L", "x":13, "y":5.4}, + {"label":"k5N", "x":15.2, "y":5}, + {"label":"k5O", "x":16.2, "y":5.2} ] } } diff --git a/keyboards/handwired/evk/v1_3/rules.mk b/keyboards/handwired/evk/v1_3/rules.mk index 02a74ee91206..d289b920b1f8 100644 --- a/keyboards/handwired/evk/v1_3/rules.mk +++ b/keyboards/handwired/evk/v1_3/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = halfkay # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/evk/v1_3/v1_3.c b/keyboards/handwired/evk/v1_3/v1_3.c index 62800bc88c8d..718a3361229d 100644 --- a/keyboards/handwired/evk/v1_3/v1_3.c +++ b/keyboards/handwired/evk/v1_3/v1_3.c @@ -28,20 +28,6 @@ void matrix_init_kb(void) { matrix_init_user(); } -// looping keyboard codes -// runs every cycle (a lot) -/*void matrix_scan_kb(void) { - - matrix_scan_user(); -}*/ - -// per-action keyboard codes -// runs for every key-press action, just before processing by the firmware -/*bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - - return process_record_user(keycode, record); -}*/ - // Set LED based on layer __attribute__((weak)) layer_state_t layer_state_set_user(layer_state_t state) { writePin(D5, layer_state_cmp(state, 1)); diff --git a/keyboards/handwired/fc200rt_qmk/config.h b/keyboards/handwired/fc200rt_qmk/config.h index 098daf97adbd..4f10da75ebcc 100644 --- a/keyboards/handwired/fc200rt_qmk/config.h +++ b/keyboards/handwired/fc200rt_qmk/config.h @@ -74,59 +74,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* disable these deprecated features by default */ #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION diff --git a/keyboards/handwired/fc200rt_qmk/info.json b/keyboards/handwired/fc200rt_qmk/info.json index 2a8bf3dd9f79..e6c295831cd6 100644 --- a/keyboards/handwired/fc200rt_qmk/info.json +++ b/keyboards/handwired/fc200rt_qmk/info.json @@ -2,11 +2,9 @@ "keyboard_name": "fc200rt_qmk", "url": "", "maintainer": "qmk", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"@", "x":2, "y":1.5}, {"label":"#", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"Backspace", "x":13, "y":1.5, "w":2}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.25, "y":1.5}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":6.5, "y":2.5}, {"label":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"|", "x":13.5, "y":2.5, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, {"label":"Shift", "x":0, "y":4.5, "w":2.25}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"N", "x":7.25, "y":4.5}, {"label":"M", "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":"Shift", "x":12.25, "y":4.5, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, {"label":"Win", "x":1.25, "y":5.5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"label":"Alt", "x":10, "y":5.5, "w":1.25}, {"label":"Win", "x":11.25, "y":5.5, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.5, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}] } } -} \ No newline at end of file +} diff --git a/keyboards/handwired/fc200rt_qmk/rules.mk b/keyboards/handwired/fc200rt_qmk/rules.mk index 55a08877174e..27248aeec9f2 100644 --- a/keyboards/handwired/fc200rt_qmk/rules.mk +++ b/keyboards/handwired/fc200rt_qmk/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = halfkay # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/fivethirteen/config.h b/keyboards/handwired/fivethirteen/config.h index 86ce250e7218..45b459a0ad4f 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -86,54 +85,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -151,5 +102,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -#endif diff --git a/keyboards/handwired/fivethirteen/fivethirteen.c b/keyboards/handwired/fivethirteen/fivethirteen.c index 4c16e72eb63e..2d71560bf6ea 100644 --- a/keyboards/handwired/fivethirteen/fivethirteen.c +++ b/keyboards/handwired/fivethirteen/fivethirteen.c @@ -1,8 +1 @@ #include "fivethirteen.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} diff --git a/keyboards/handwired/fivethirteen/fivethirteen.h b/keyboards/handwired/fivethirteen/fivethirteen.h index 6d14b7f1c03f..ffa0bd59d5ad 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/fivethirteen/info.json b/keyboards/handwired/fivethirteen/info.json index f95cbbe01187..e1f429e5488e 100644 --- a/keyboards/handwired/fivethirteen/info.json +++ b/keyboards/handwired/fivethirteen/info.json @@ -2,8 +2,6 @@ "keyboard_name": "fivethirteen", "url": "", "maintainer": "qmk", - "width": 13, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/fivethirteen/rules.mk b/keyboards/handwired/fivethirteen/rules.mk index 64d566cb17bc..df9239f247cd 100644 --- a/keyboards/handwired/fivethirteen/rules.mk +++ b/keyboards/handwired/fivethirteen/rules.mk @@ -2,30 +2,17 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = halfkay # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 - +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/floorboard/config.h b/keyboards/handwired/floorboard/config.h index 2ff291234df4..7bac3cd2dce4 100644 --- a/keyboards/handwired/floorboard/config.h +++ b/keyboards/handwired/floorboard/config.h @@ -121,59 +121,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -194,26 +141,6 @@ along with this program. If not, see . #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/handwired/floorboard/info.json b/keyboards/handwired/floorboard/info.json index 6445b76112c4..6ccff9e60d70 100644 --- a/keyboards/handwired/floorboard/info.json +++ b/keyboards/handwired/floorboard/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Floorboard", "url": "https://imgur.com/gJLgwQI", "maintainer": "Kevin Lockwood", - "width": 12, - "height": 4, "layouts": { "LAYOUT_ortho_4x12": { "layout": [ diff --git a/keyboards/handwired/floorboard/rules.mk b/keyboards/handwired/floorboard/rules.mk index be14c2e65d61..e1c9dc0b4f9c 100644 --- a/keyboards/handwired/floorboard/rules.mk +++ b/keyboards/handwired/floorboard/rules.mk @@ -8,19 +8,15 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = ortho_4x12 diff --git a/keyboards/handwired/frankie_macropad/info.json b/keyboards/handwired/frankie_macropad/info.json index ac8b65e28e70..55d8fcf16ff2 100644 --- a/keyboards/handwired/frankie_macropad/info.json +++ b/keyboards/handwired/frankie_macropad/info.json @@ -2,8 +2,6 @@ "keyboard_name": "frankie_macropad", "url": "https://github.com/eric-wood/macro-pad", "maintainer": "eric-wood", - "width": 3, - "height": 2, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/frankie_macropad/keymaps/default/config.h b/keyboards/handwired/frankie_macropad/keymaps/default/config.h new file mode 100644 index 000000000000..dd687cad58f3 --- /dev/null +++ b/keyboards/handwired/frankie_macropad/keymaps/default/config.h @@ -0,0 +1,19 @@ +/* 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 . + */ + +#pragma once + +#define LAYER_STATE_8BIT diff --git a/keyboards/handwired/frankie_macropad/rules.mk b/keyboards/handwired/frankie_macropad/rules.mk index b5b6e3977919..cb244c55ba3c 100644 --- a/keyboards/handwired/frankie_macropad/rules.mk +++ b/keyboards/handwired/frankie_macropad/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = yes LTO_ENABLE = yes diff --git a/keyboards/handwired/frenchdev/frenchdev.h b/keyboards/handwired/frenchdev/frenchdev.h index 1df399088791..d608fe9f0924 100644 --- a/keyboards/handwired/frenchdev/frenchdev.h +++ b/keyboards/handwired/frenchdev/frenchdev.h @@ -6,9 +6,6 @@ #include "i2c_master.h" #include -#define CPU_PRESCALE(n) (CLKPR = 0x80, CLKPR = (n)) -#define CPU_16MHz 0x00 - // I2C aliases and register addresses (see "mcp23018.md" on tmk repository) #define I2C_ADDR 0b0100000 #define I2C_ADDR_WRITE ( (I2C_ADDR<<1) | I2C_WRITE ) diff --git a/keyboards/handwired/frenchdev/info.json b/keyboards/handwired/frenchdev/info.json index 2477302becf2..ca29c96e5159 100644 --- a/keyboards/handwired/frenchdev/info.json +++ b/keyboards/handwired/frenchdev/info.json @@ -1,7 +1,5 @@ { "maintainer": "qmk", - "width": 20, - "height": 9.5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/frenchdev/keymaps/default/keymap.c b/keyboards/handwired/frenchdev/keymaps/default/keymap.c index b0713b730cb7..1ead4e50e187 100644 --- a/keyboards/handwired/frenchdev/keymaps/default/keymap.c +++ b/keyboards/handwired/frenchdev/keymaps/default/keymap.c @@ -65,9 +65,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_BASE] = LAYOUT( KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \ - KC_ESC, BP_DQOT, BP_LGIL, BP_RGIL, BP_LPRN, BP_RPRN, BP_DTRM, BP_DCRC, BP_AT, BP_PLUS, BP_MINS, BP_SLSH, BP_ASTR, KC_BSPC, \ - KC_TAB, BP_B, BP_ECUT, BP_O, BP_P, BP_EGRV, BP_UNDS, BP_EQL, BP_K, BP_V, BP_D, BP_L, BP_J, KC_ENT, \ - BP_GRV, BP_A, BP_U, BP_E, BP_I, BP_F, BP_SCLN, BP_EXLM, BP_C, BP_T, BP_S, BP_R, BP_N, BP_APOS, \ + KC_ESC, BP_DQUO, BP_LDAQ, BP_RDAQ, BP_LPRN, BP_RPRN, BP_DIAE, BP_DCIR, BP_AT, BP_PLUS, BP_MINS, BP_SLSH, BP_ASTR, KC_BSPC, \ + KC_TAB, BP_B, BP_EACU, BP_O, BP_P, BP_EGRV, BP_UNDS, BP_EQL, BP_K, BP_V, BP_D, BP_L, BP_J, KC_ENT, \ + BP_GRV, BP_A, BP_U, BP_E, BP_I, BP_F, BP_SCLN, BP_EXLM, BP_C, BP_T, BP_S, BP_R, BP_N, BP_QUOT, \ M_SF, BP_Z, BP_AGRV, BP_Y, BP_X, KC_RBRC, M_SFS, BP_CBSP, L2INS, L2LOC, BP_CDEL, M_SFS, BP_M, BP_G, KC_UP, BP_H, BP_Q, M_SF, \ KC_LCTL, KC_LGUI, KC_PSLS, BP_DOT, BP_COMM, KC_SPACE,M_L1E, KC_LALT, KC_CAPS, M_L1E, KC_SPACE, KC_LEFT, KC_DOWN, KC_RIGHT,BP_COLN, KC_RCTL, \ //left pedals @@ -97,9 +97,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_SYMBOLS] = LAYOUT( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ - KC_TRNS, BP_DCUR, BP_PARG, BP_SECT, BP_DGRK, KC_TRNS, BP_TILD, BP_DCAR, BP_LEQL, BP_GEQL, BP_PSMS, BP_OBEL, BP_TIMS, KC_TRNS, \ - KC_TRNS, BP_BSLS, BP_ASTR, BP_LCBR, BP_RCBR, BP_GRV, KC_TRNS, BP_DIFF, BP_HASH, BP_LBRC, BP_RBRC, BP_PERC, BP_PMIL, KC_TRNS, \ - KC_TRNS, BP_EQL, BP_UGRV, BP_LPRN, BP_RPRN, BP_PLUS, BP_COLN, BP_QEST, BP_CCED, BP_LESS, BP_GRTR, BP_AMPR, BP_UNDS, KC_TRNS, \ + KC_TRNS, BP_CURR, BP_PARA, BP_SECT, BP_DGRK, KC_TRNS, BP_TILD, BP_CARN, BP_LEQL, BP_GEQL, BP_PLMN, BP_DIV, BP_MUL, KC_TRNS, \ + KC_TRNS, BP_BSLS, BP_ASTR, BP_LCBR, BP_RCBR, BP_GRV, KC_TRNS, BP_NEQL, BP_HASH, BP_LBRC, BP_RBRC, BP_PERC, BP_PERM, KC_TRNS, \ + KC_TRNS, BP_EQL, BP_UGRV, BP_LPRN, BP_RPRN, BP_PLUS, BP_COLN, BP_QUES, BP_CCED, BP_LABK, BP_RABK, BP_AMPR, BP_UNDS, KC_TRNS, \ KC_TRNS, M_UN, M_CUT, M_CP, M_PS, M_SE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BP_DLR, BP_EQL, KC_PGUP, BP_PIPE, BP_SLSH, KC_TRNS, \ KC_TRNS, KC_TRNS, BP_BSLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END, KC_TRNS, KC_TRNS, \ //left pedals @@ -205,9 +205,6 @@ void press_underscore(void) { if(shift_count > 0) register_code (KC_LSHIFT); } -void matrix_init_user(void) { -} - // Bleah globals need to be initialized. uint8_t old_layer=_BASE; diff --git a/keyboards/handwired/frenchdev/rules.mk b/keyboards/handwired/frenchdev/rules.mk index abf4e62c4b30..017d9d40a2d3 100644 --- a/keyboards/handwired/frenchdev/rules.mk +++ b/keyboards/handwired/frenchdev/rules.mk @@ -2,34 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = halfkay # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration CUSTOM_MATRIX = yes # Custom matrix file (taken and adapted from the ErgoDox EZ to handle custom number of columns) -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 -UNICODE_ENABLE = yes # Unicode -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no -API_SYSEX_ENABLE = no # project specific files SRC = i2c_master.c \ diff --git a/keyboards/handwired/freoduo/info.json b/keyboards/handwired/freoduo/info.json index f977f3e602dc..2fe8a4a48565 100644 --- a/keyboards/handwired/freoduo/info.json +++ b/keyboards/handwired/freoduo/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Freoduo", "url": "https://github.com/FilipParyz", "maintainer": "https://github.com/FilipParyz", -"width": 12, -"height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/freoduo/rules.mk b/keyboards/handwired/freoduo/rules.mk index e3da3753e497..88e650d290e5 100644 --- a/keyboards/handwired/freoduo/rules.mk +++ b/keyboards/handwired/freoduo/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +COMMAND_ENABLE = no # Commands for debug and configuration # 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output VELOCIKEY_ENABLE = yes -SPLIT_KEYBOARD = yes \ No newline at end of file +SPLIT_KEYBOARD = yes diff --git a/keyboards/handwired/fruity60/fruity60.c b/keyboards/handwired/fruity60/fruity60.c index d68b17955ea9..06403826766d 100644 --- a/keyboards/handwired/fruity60/fruity60.c +++ b/keyboards/handwired/fruity60/fruity60.c @@ -14,38 +14,3 @@ * along with this program. If not, see . */ #include "fruity60.h" - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -/* - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - -*/ diff --git a/keyboards/handwired/fruity60/info.json b/keyboards/handwired/fruity60/info.json index 7cf5e61d18c4..d9b583faaf44 100644 --- a/keyboards/handwired/fruity60/info.json +++ b/keyboards/handwired/fruity60/info.json @@ -2,8 +2,6 @@ "keyboard_name": "fruity60", "url": "https://github.com/yanfali/fruity60", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { "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}, {"label":"Backspace", "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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"Win", "x":12.5, "y":4}, {"label":"Menu", "x":13.5, "y":4, "w":1.5}] diff --git a/keyboards/handwired/fruity60/rules.mk b/keyboards/handwired/fruity60/rules.mk index 8c7a0a73b372..c6bb4e6f45d4 100644 --- a/keyboards/handwired/fruity60/rules.mk +++ b/keyboards/handwired/fruity60/rules.mk @@ -5,33 +5,22 @@ MCU = atmega32u4 F_CPU = 8000000 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config) -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 -BLUETOOTH = AdafruitBLE +AUDIO_ENABLE = no # Audio output +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 4a62732a78fc..1be44a115613 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -86,54 +85,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -151,5 +102,3 @@ along with this program. If not, see . //#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 3a1429ff8cbf..48883b118521 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/gamenum/info.json b/keyboards/handwired/gamenum/info.json index dc80f027e815..d7d87ad20298 100644 --- a/keyboards/handwired/gamenum/info.json +++ b/keyboards/handwired/gamenum/info.json @@ -2,8 +2,6 @@ "keyboard_name": "gamenum", "url": "", "maintainer": "qmk", - "width": 4, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/gamenum/rules.mk b/keyboards/handwired/gamenum/rules.mk index 3989329835e6..cd0b5fb4a638 100644 --- a/keyboards/handwired/gamenum/rules.mk +++ b/keyboards/handwired/gamenum/rules.mk @@ -2,29 +2,17 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/hacked_motospeed/config.h b/keyboards/handwired/hacked_motospeed/config.h index 29a0a6dcfa4e..589b62c01f52 100644 --- a/keyboards/handwired/hacked_motospeed/config.h +++ b/keyboards/handwired/hacked_motospeed/config.h @@ -120,59 +120,6 @@ along with this program. If not, see . * */ -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -191,26 +138,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/handwired/hacked_motospeed/hacked_motospeed.c b/keyboards/handwired/hacked_motospeed/hacked_motospeed.c index 21643895d75b..f6a394b73184 100644 --- a/keyboards/handwired/hacked_motospeed/hacked_motospeed.c +++ b/keyboards/handwired/hacked_motospeed/hacked_motospeed.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "hacked_motospeed.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} \ No newline at end of file diff --git a/keyboards/handwired/hacked_motospeed/info.json b/keyboards/handwired/hacked_motospeed/info.json index 7ca92785ebd8..d5da5e4578cc 100644 --- a/keyboards/handwired/hacked_motospeed/info.json +++ b/keyboards/handwired/hacked_motospeed/info.json @@ -2,11 +2,9 @@ "keyboard_name": "Hacked Motospeed", "url": "", "maintainer": "Deckweiss", - "width": 13, - "height": 4, "layouts": { "LAYOUT": { "layout": [{"label":"ESC", "x":0, "y":0, "h":2}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Z", "x":7, "y":0}, {"label":"U", "x":8, "y":0}, {"label":"I", "x":9, "y":0}, {"label":"O", "x":10, "y":0}, {"label":"P", "x":11, "y":0, "w":2}, {"label":"A", "x":1, "y":1}, {"label":"S", "x":2, "y":1}, {"label":"D", "x":3, "y":1}, {"label":"F", "x":4, "y":1}, {"label":"G", "x":5, "y":1}, {"label":"H", "x":7, "y":1}, {"label":"J", "x":8, "y":1}, {"label":"K", "x":9, "y":1}, {"label":"L", "x":10, "y":1}, {"label":"(", "x":11, "y":1}, {"label":")", "x":12, "y":1}, {"label":"=", "x":0, "y":2}, {"label":"Y", "x":1, "y":2}, {"label":"X", "x":2, "y":2}, {"label":"C", "x":3, "y":2}, {"label":"V", "x":4, "y":2}, {"label":"B", "x":5, "y":2}, {"label":"N", "x":7, "y":2}, {"label":"M", "x":8, "y":2}, {"label":",", "x":9, "y":2}, {"label":".", "x":10, "y":2}, {"label":"?", "x":11, "y":2}, {"label":"Fn", "x":0, "y":3, "w":2}, {"label":"Num", "x":2, "y":3}, {"label":"Bksp", "x":3, "y":3}, {"label":"Enter", "x":4, "y":3}, {"label":"Spc", "x":5, "y":3}, {"label":"LShift", "x":7, "y":3}, {"label":"LCtrl", "x":8, "y":3}, {"label":"LAlt", "x":9, "y":3}, {"label":"RAlt", "x":10, "y":3}, {"label":"Meta", "x":11, "y":3}, {"label":"Fn", "x":12, "y":2, "h":2}] } } -} \ No newline at end of file +} diff --git a/keyboards/handwired/hacked_motospeed/keymaps/default/keymap.c b/keyboards/handwired/hacked_motospeed/keymaps/default/keymap.c index bdec8f246154..be3d5fdbd2a2 100644 --- a/keyboards/handwired/hacked_motospeed/keymaps/default/keymap.c +++ b/keyboards/handwired/hacked_motospeed/keymaps/default/keymap.c @@ -51,15 +51,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} \ No newline at end of file diff --git a/keyboards/handwired/hacked_motospeed/rules.mk b/keyboards/handwired/hacked_motospeed/rules.mk index 46ef60a8be5e..dffa2c02c9fe 100644 --- a/keyboards/handwired/hacked_motospeed/rules.mk +++ b/keyboards/handwired/hacked_motospeed/rules.mk @@ -2,32 +2,21 @@ MCU = at90usb1286 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = halfkay # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = no # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config) -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +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/heisenberg/config.h b/keyboards/handwired/heisenberg/config.h index ba35f24aca2f..9bf73440c84d 100644 --- a/keyboards/handwired/heisenberg/config.h +++ b/keyboards/handwired/heisenberg/config.h @@ -134,59 +134,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -205,26 +152,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/handwired/heisenberg/info.json b/keyboards/handwired/heisenberg/info.json index 1fe087586f06..4f08514d2f96 100644 --- a/keyboards/handwired/heisenberg/info.json +++ b/keyboards/handwired/heisenberg/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Heisenberg", "url": "https://github.com/Ardakilic", "maintainer": "Arda Kilicdagi", - "width": 12, - "height": 4, "layouts": { "LAYOUT_planck_mit": { - "key_count": 47, "layout": [ { "x": 0, "y": 0 }, { "x": 1, "y": 0 }, diff --git a/keyboards/handwired/heisenberg/rules.mk b/keyboards/handwired/heisenberg/rules.mk index 8d79915fd28c..57f0c2706e6c 100644 --- a/keyboards/handwired/heisenberg/rules.mk +++ b/keyboards/handwired/heisenberg/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = yes # Audio output on port C6 +AUDIO_ENABLE = yes # Audio output LAYOUTS = planck_mit diff --git a/keyboards/handwired/hexon38/info.json b/keyboards/handwired/hexon38/info.json index 5c141ac656ca..09127debb7a6 100644 --- a/keyboards/handwired/hexon38/info.json +++ b/keyboards/handwired/hexon38/info.json @@ -2,8 +2,6 @@ "keyboard_name": "hexon38", "url": "", "maintainer": "cellularmitosis", - "width": 18, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/hexon38/keymaps/default/keymap.c b/keyboards/handwired/hexon38/keymaps/default/keymap.c index 65dfb4ca04ff..38ae903ec81b 100644 --- a/keyboards/handwired/hexon38/keymaps/default/keymap.c +++ b/keyboards/handwired/hexon38/keymaps/default/keymap.c @@ -187,8 +187,6 @@ void matrix_init_user(void) { g_pending.head = NULL; } -void matrix_scan_user(void) {} - /* a_ a-: emit a a_ b_ b- a-: emit SHIFT+b diff --git a/keyboards/handwired/hexon38/rules.mk b/keyboards/handwired/hexon38/rules.mk index 93b7a1176457..bf94f7670fbc 100644 --- a/keyboards/handwired/hexon38/rules.mk +++ b/keyboards/handwired/hexon38/rules.mk @@ -2,25 +2,17 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = halfkay # Enabled build options: -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) +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 = yes # Commands for debug and configuration NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work # Disabled build options: -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality AUDIO_ENABLE = no RGBLIGHT_ENABLE = no diff --git a/keyboards/handwired/hnah108/config.h b/keyboards/handwired/hnah108/config.h index b21ba1093483..b08f24ed8683 100644 --- a/keyboards/handwired/hnah108/config.h +++ b/keyboards/handwired/hnah108/config.h @@ -56,6 +56,54 @@ along with this program. If not, see . #define RGB_DI_PIN E2 #define DRIVER_LED_TOTAL 31 +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ #define DEBOUNCE 5 diff --git a/keyboards/handwired/hnah108/info.json b/keyboards/handwired/hnah108/info.json index 795819501694..71fee54ed92b 100644 --- a/keyboards/handwired/hnah108/info.json +++ b/keyboards/handwired/hnah108/info.json @@ -2,8 +2,6 @@ "keyboard_name": "hnah108", "url": "", "maintainer": "HnahKB", - "width": 22.5, - "height": 6.25, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/handwired/hnah108/rules.mk b/keyboards/handwired/hnah108/rules.mk index f0a39faebe0d..6134bbcfa6df 100644 --- a/keyboards/handwired/hnah108/rules.mk +++ b/keyboards/handwired/hnah108/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes RGB_MATRIX_ENABLE = yes diff --git a/keyboards/handwired/hnah40/config.h b/keyboards/handwired/hnah40/config.h index 6bc98a10cd77..6e4493d47fa4 100644 --- a/keyboards/handwired/hnah40/config.h +++ b/keyboards/handwired/hnah40/config.h @@ -100,56 +100,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - - - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -167,24 +117,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - diff --git a/keyboards/handwired/hnah40/hnah40.c b/keyboards/handwired/hnah40/hnah40.c index 0f08136c2106..88c81b7d4975 100644 --- a/keyboards/handwired/hnah40/hnah40.c +++ b/keyboards/handwired/hnah40/hnah40.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "hnah40.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/handwired/hnah40/info.json b/keyboards/handwired/hnah40/info.json index f9664d22c933..df95f0bf945d 100644 --- a/keyboards/handwired/hnah40/info.json +++ b/keyboards/handwired/hnah40/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Hnah40", "url": "https://github.com/vuhopkep/PCB/tree/master/Hnah40-Atmega328p/PCB_V1/PCB", "maintainer": "HnahKB", - "width": 12, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/hnah40/rules.mk b/keyboards/handwired/hnah40/rules.mk index 3005ce89daf5..8ece87bc7b84 100644 --- a/keyboards/handwired/hnah40/rules.mk +++ b/keyboards/handwired/hnah40/rules.mk @@ -2,30 +2,18 @@ MCU = atmega328p # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = USBasp +BOOTLOADER = usbasploader # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config) -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/hnah40rgb/config.h b/keyboards/handwired/hnah40rgb/config.h index e6271738c005..8204550d0009 100644 --- a/keyboards/handwired/hnah40rgb/config.h +++ b/keyboards/handwired/hnah40rgb/config.h @@ -60,8 +60,56 @@ along with this program. If not, see . #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 false // 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 200 // 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 +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH #endif diff --git a/keyboards/handwired/hnah40rgb/info.json b/keyboards/handwired/hnah40rgb/info.json index dd1b42325955..79a5ddefb28a 100644 --- a/keyboards/handwired/hnah40rgb/info.json +++ b/keyboards/handwired/hnah40rgb/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Hnah40", "url": "", "maintainer": "HnahKB", - "width": 12, - "height": 4, "layouts": { "LAYOUT_all": { - "key_count": 42, "layout": [ {"label":"Esc", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, @@ -53,7 +50,6 @@ ] }, "LAYOUT_ansi": { - "key_count": 39, "layout": [ {"label":"Esc", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, diff --git a/keyboards/handwired/hnah40rgb/rules.mk b/keyboards/handwired/hnah40rgb/rules.mk index 016367866fa0..6fbf7a9c091c 100644 --- a/keyboards/handwired/hnah40rgb/rules.mk +++ b/keyboards/handwired/hnah40rgb/rules.mk @@ -2,31 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# atmega32A bootloadHID BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output RGB_MATRIX_ENABLE = yes RGB_MATRIX_DRIVER = WS2812 diff --git a/keyboards/handwired/ibm122m/config.h b/keyboards/handwired/ibm122m/config.h index bd1fdc97dc25..c58b8897edde 100644 --- a/keyboards/handwired/ibm122m/config.h +++ b/keyboards/handwired/ibm122m/config.h @@ -90,57 +90,9 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - #define AUDIO_PIN_ALT B6 #define AUDIO_PIN C6 -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -158,23 +110,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 diff --git a/keyboards/handwired/ibm122m/ibm122m.c b/keyboards/handwired/ibm122m/ibm122m.c index 1c52b94ec657..7ee099d25002 100644 --- a/keyboards/handwired/ibm122m/ibm122m.c +++ b/keyboards/handwired/ibm122m/ibm122m.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "ibm122m.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/handwired/ibm122m/info.json b/keyboards/handwired/ibm122m/info.json index 46db3c0d7565..71f216d32f0b 100644 --- a/keyboards/handwired/ibm122m/info.json +++ b/keyboards/handwired/ibm122m/info.json @@ -1,8 +1,6 @@ { "keyboard_name": "IBM Model M 122-key", "maintainer": "qmk", - "width": 24.75, - "height": 8, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/ibm122m/keymaps/default/keymap.c b/keyboards/handwired/ibm122m/keymaps/default/keymap.c index fc383498a145..53cdcc1c19c0 100644 --- a/keyboards/handwired/ibm122m/keymaps/default/keymap.c +++ b/keyboards/handwired/ibm122m/keymaps/default/keymap.c @@ -27,20 +27,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_NO, KC_NO, KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_DOWN, KC_P0, KC_PDOT ), }; - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - - return true; -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/handwired/ibm122m/rules.mk b/keyboards/handwired/ibm122m/rules.mk index c26bc7a9913b..428e2763cdbd 100644 --- a/keyboards/handwired/ibm122m/rules.mk +++ b/keyboards/handwired/ibm122m/rules.mk @@ -2,29 +2,17 @@ MCU = at90usb1286 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = halfkay # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# 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 on B7 by default -MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config) -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = yes # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = yes # Audio output diff --git a/keyboards/handwired/ibm_wheelwriter/info.json b/keyboards/handwired/ibm_wheelwriter/info.json index 0bd7841738ea..58babe0a9428 100644 --- a/keyboards/handwired/ibm_wheelwriter/info.json +++ b/keyboards/handwired/ibm_wheelwriter/info.json @@ -2,8 +2,6 @@ "keyboard_name": "ibm_wheelwriter", "url": "https://github.com/andresteare/qmk_firmware", "maintainer": "andresteare", - "width": 18.5, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/ibm_wheelwriter/rules.mk b/keyboards/handwired/ibm_wheelwriter/rules.mk index 7b69908b1ba9..00a8fa07a459 100644 --- a/keyboards/handwired/ibm_wheelwriter/rules.mk +++ b/keyboards/handwired/ibm_wheelwriter/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/jn68m/info.json b/keyboards/handwired/jn68m/info.json index ce95563e9691..625b3bb96e76 100644 --- a/keyboards/handwired/jn68m/info.json +++ b/keyboards/handwired/jn68m/info.json @@ -3,8 +3,6 @@ "url": "", "maintainer": "qmk", "bootloader": "atmel-dfu", - "width": 17.25, - "height": 5, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15.25, "y":1}, {"x":16.25, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":2.75}, {"x":15.25, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":14.25, "y":4}, {"x":15.25, "y":4}, {"x":16.25, "y":4}] diff --git a/keyboards/handwired/jn68m/jn68m.c b/keyboards/handwired/jn68m/jn68m.c index b61b17aa9b36..415645f1b4ce 100644 --- a/keyboards/handwired/jn68m/jn68m.c +++ b/keyboards/handwired/jn68m/jn68m.c @@ -14,24 +14,3 @@ * along with this program. If not, see . */ #include "jn68m.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} diff --git a/keyboards/handwired/jn68m/jn68m.h b/keyboards/handwired/jn68m/jn68m.h index d47f9f6c9c5a..a5500824bb1e 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 . */ -#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/jn68m/keymaps/default/keymap.c b/keyboards/handwired/jn68m/keymaps/default/keymap.c index 98eede94cb69..3860901dd356 100644 --- a/keyboards/handwired/jn68m/keymaps/default/keymap.c +++ b/keyboards/handwired/jn68m/keymaps/default/keymap.c @@ -61,15 +61,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/handwired/jn68m/rules.mk b/keyboards/handwired/jn68m/rules.mk index 679f9c6bd0df..87edc7740a78 100644 --- a/keyboards/handwired/jn68m/rules.mk +++ b/keyboards/handwired/jn68m/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config) -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/jopr/config.h b/keyboards/handwired/jopr/config.h index 99d98c9be4c7..7e1da5bbc3f1 100644 --- a/keyboards/handwired/jopr/config.h +++ b/keyboards/handwired/jopr/config.h @@ -34,7 +34,7 @@ /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -/* #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) */ + #define NO_ACTION_ONESHOT #define TAPPING_TOGGLE 3 diff --git a/keyboards/handwired/jopr/info.json b/keyboards/handwired/jopr/info.json index c4cadb8c3e11..7062f9e318c8 100644 --- a/keyboards/handwired/jopr/info.json +++ b/keyboards/handwired/jopr/info.json @@ -2,11 +2,8 @@ "keyboard_name": "jopr-106", "url": "https://github.com/joelproko/keyboard_layout_jopr", "maintainer": "joelproko", - "width": 22.5, - "height": 6.25, "layouts": { "LAYOUT": { - "key_count": 106, "layout": [ { "label": "MX_A0", diff --git a/keyboards/handwired/jopr/jopr.c b/keyboards/handwired/jopr/jopr.c index 3dccb719c2e1..a337867dd1a1 100644 --- a/keyboards/handwired/jopr/jopr.c +++ b/keyboards/handwired/jopr/jopr.c @@ -1,8 +1,4 @@ #include "jopr.h" -void matrix_init_kb(void) { - matrix_init_user(); - led_init_ports(); -}; void led_init_ports(void) { setPinOutput(F0); diff --git a/keyboards/handwired/jopr/rules.mk b/keyboards/handwired/jopr/rules.mk index ae10be0d26cb..44e8cc594ae6 100644 --- a/keyboards/handwired/jopr/rules.mk +++ b/keyboards/handwired/jopr/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = no # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -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 diff --git a/keyboards/handwired/jot50/info.json b/keyboards/handwired/jot50/info.json index c144d684cb7b..817dd1287896 100644 --- a/keyboards/handwired/jot50/info.json +++ b/keyboards/handwired/jot50/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Jot50", "url": "", "maintainer": "jotix", - "width": 12, - "height": 5, "layouts": { "LAYOUT_ortho_5x12": { "layout": [ diff --git a/keyboards/handwired/jot50/jot50.c b/keyboards/handwired/jot50/jot50.c index a1d2258a5814..da04e862e182 100644 --- a/keyboards/handwired/jot50/jot50.c +++ b/keyboards/handwired/jot50/jot50.c @@ -1,6 +1 @@ #include "jot50.h" - -void matrix_init_kb(void) { - - matrix_init_user(); -} diff --git a/keyboards/handwired/jot50/keymaps/default/keymap.c b/keyboards/handwired/jot50/keymaps/default/keymap.c index 7b674af52890..2693fbff3cde 100644 --- a/keyboards/handwired/jot50/keymaps/default/keymap.c +++ b/keyboards/handwired/jot50/keymaps/default/keymap.c @@ -77,6 +77,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } - -void matrix_init_user(void) { -} diff --git a/keyboards/handwired/jot50/rules.mk b/keyboards/handwired/jot50/rules.mk index d01dfefa5e76..c842a275a859 100644 --- a/keyboards/handwired/jot50/rules.mk +++ b/keyboards/handwired/jot50/rules.mk @@ -2,13 +2,6 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options @@ -16,20 +9,14 @@ BOOTLOADER = caterina # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -API_SYSEX_ENABLE = no -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend LAYOUTS = ortho_5x12 diff --git a/keyboards/handwired/jotanck/info.json b/keyboards/handwired/jotanck/info.json index a5d13876ea1c..914c254849e9 100644 --- a/keyboards/handwired/jotanck/info.json +++ b/keyboards/handwired/jotanck/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Jotanck", "url": "", "maintainer": "jotix", - "width": 12, - "height": 4, "layouts": { "LAYOUT_ortho_4x12": { "layout": [ diff --git a/keyboards/handwired/jotanck/jotanck.c b/keyboards/handwired/jotanck/jotanck.c index caf0ad01413c..af650b129e7c 100644 --- a/keyboards/handwired/jotanck/jotanck.c +++ b/keyboards/handwired/jotanck/jotanck.c @@ -1,9 +1,5 @@ #include "jotanck.h" -void matrix_init_kb(void) { - matrix_init_user(); -} - void keyboard_pre_init_kb() { setPinOutput(JOTANCK_LED1); setPinOutput(JOTANCK_LED2); diff --git a/keyboards/handwired/jotanck/rules.mk b/keyboards/handwired/jotanck/rules.mk index 2a233cccd02a..3e49c04d0434 100644 --- a/keyboards/handwired/jotanck/rules.mk +++ b/keyboards/handwired/jotanck/rules.mk @@ -2,13 +2,6 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options @@ -16,20 +9,14 @@ BOOTLOADER = caterina # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = 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 -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -API_SYSEX_ENABLE = no -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend LAYOUTS = ortho_4x12 diff --git a/keyboards/handwired/jotpad16/info.json b/keyboards/handwired/jotpad16/info.json index feea7575cf71..39a043e9e11e 100644 --- a/keyboards/handwired/jotpad16/info.json +++ b/keyboards/handwired/jotpad16/info.json @@ -2,8 +2,6 @@ "keyboard_name": "JotPad16", "url": "", "maintainer": "jotix", - "width": 4, - "height": 4, "layouts": { "LAYOUT_ortho_4x4": { "layout": [ diff --git a/keyboards/handwired/jotpad16/jotpad16.c b/keyboards/handwired/jotpad16/jotpad16.c index 2f112a6101d9..dfff7e16793e 100644 --- a/keyboards/handwired/jotpad16/jotpad16.c +++ b/keyboards/handwired/jotpad16/jotpad16.c @@ -1,10 +1,5 @@ #include "jotpad16.h" -void matrix_init_kb(void) { - - matrix_init_user(); -} - void keyboard_pre_init_kb() { setPinOutput(JOTPAD16_LED1); setPinOutput(JOTPAD16_LED2); diff --git a/keyboards/handwired/jotpad16/rules.mk b/keyboards/handwired/jotpad16/rules.mk index 79c32c5c3527..1012581e4f7c 100644 --- a/keyboards/handwired/jotpad16/rules.mk +++ b/keyboards/handwired/jotpad16/rules.mk @@ -2,13 +2,6 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options @@ -16,20 +9,14 @@ BOOTLOADER = caterina # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = no # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # 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 -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -API_SYSEX_ENABLE = no -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend LAYOUTS = ortho_4x4 diff --git a/keyboards/handwired/jtallbean/split_65/config.h b/keyboards/handwired/jtallbean/split_65/config.h index 105e76438d72..1620dde024bf 100644 --- a/keyboards/handwired/jtallbean/split_65/config.h +++ b/keyboards/handwired/jtallbean/split_65/config.h @@ -124,59 +124,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -197,26 +144,6 @@ along with this program. If not, see . #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/handwired/jtallbean/split_65/info.json b/keyboards/handwired/jtallbean/split_65/info.json index 5b19daa96e50..a4082533a167 100644 --- a/keyboards/handwired/jtallbean/split_65/info.json +++ b/keyboards/handwired/jtallbean/split_65/info.json @@ -2,8 +2,6 @@ "keyboard_name": "split_65", "url": "", "maintainer": "jtallbean", - "width": 18.25, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/handwired/jtallbean/split_65/rules.mk b/keyboards/handwired/jtallbean/split_65/rules.mk index 5fa9d561ba13..1243b7696a86 100644 --- a/keyboards/handwired/jtallbean/split_65/rules.mk +++ b/keyboards/handwired/jtallbean/split_65/rules.mk @@ -2,30 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = yes # Enable split keyboard support diff --git a/keyboards/handwired/juliet/config.h b/keyboards/handwired/juliet/config.h index 988c578ba3cb..bab4fe3333e8 100644 --- a/keyboards/handwired/juliet/config.h +++ b/keyboards/handwired/juliet/config.h @@ -118,59 +118,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -189,26 +136,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration #define BOOTMAGIC_LITE_ROW 0 diff --git a/keyboards/handwired/juliet/info.json b/keyboards/handwired/juliet/info.json index 1cf2a192e15a..9d80b112d6a1 100644 --- a/keyboards/handwired/juliet/info.json +++ b/keyboards/handwired/juliet/info.json @@ -2,8 +2,6 @@ "keyboard_name": "juliet", "url": "https://github.com/Na-Cly/juliet", "maintainer": "Na-Cly", - "width": 13, - "height": 4, "layouts": { "LAYOUT_all": { "layout": [{"label":"1.5u", "x":0, "y":0, "w":1.5}, {"x":1.5, "y":0}, {"x":2.5, "y":0}, {"x":3.5, "y":0}, {"x":4.5, "y":0}, {"x":5.5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":10.5, "y":0}, {"label":"1.5u", "x":11.5, "y":0, "w":1.5}, {"label":"1.75u", "x":0, "y":1, "w":1.75}, {"x":1.75, "y":1}, {"x":2.75, "y":1}, {"x":3.75, "y":1}, {"x":4.75, "y":1}, {"x":5.75, "y":1}, {"x":6.75, "y":1}, {"x":7.75, "y":1}, {"x":8.75, "y":1}, {"x":9.75, "y":1}, {"label":"2.25u", "x":10.75, "y":1, "w":2.25}, {"label":"1.25u", "x":0, "y":2, "w":1.25}, {"x":1.25, "y":2}, {"x":2.25, "y":2}, {"x":3.25, "y":2}, {"x":4.25, "y":2}, {"x":5.25, "y":2}, {"x":6.25, "y":2}, {"x":7.25, "y":2}, {"x":8.25, "y":2}, {"x":9.25, "y":2}, {"x":10.25, "y":2}, {"label":"1.75u", "x":11.25, "y":2, "w":1.75}, {"label":"1.25u", "x":0, "y":3, "w":1.25}, {"label":"1u", "x":1.25, "y":3}, {"label":"1.25u", "x":2.25, "y":3, "w":1.25}, {"label":"2.25u", "x":3.5, "y":3, "w":2.25}, {"label":"1u", "x":5.75, "y":3}, {"label":"2.75u", "x":6.75, "y":3, "w":2.75}, {"label":"1.25u", "x":9.5, "y":3, "w":1.25}, {"label":"1u", "x":10.75, "y":3}, {"label":"1.25u", "x":11.75, "y":3, "w":1.25}] @@ -18,4 +16,4 @@ "layout": [{"label":"1.5u", "x":0, "y":0, "w":1.5}, {"x":1.5, "y":0}, {"x":2.5, "y":0}, {"x":3.5, "y":0}, {"x":4.5, "y":0}, {"x":5.5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":10.5, "y":0}, {"label":"1.5u", "x":11.5, "y":0, "w":1.5}, {"label":"1.75u", "x":0, "y":1, "w":1.75}, {"x":1.75, "y":1}, {"x":2.75, "y":1}, {"x":3.75, "y":1}, {"x":4.75, "y":1}, {"x":5.75, "y":1}, {"x":6.75, "y":1}, {"x":7.75, "y":1}, {"x":8.75, "y":1}, {"x":9.75, "y":1}, {"label":"2.25u", "x":10.75, "y":1, "w":2.25}, {"label":"2.25u", "x":0, "y":2, "w":2.25}, {"x":2.25, "y":2}, {"x":3.25, "y":2}, {"x":4.25, "y":2}, {"x":5.25, "y":2}, {"x":6.25, "y":2}, {"x":7.25, "y":2}, {"x":8.25, "y":2}, {"x":9.25, "y":2}, {"x":10.25, "y":2}, {"label":"1.75u", "x":11.25, "y":2, "w":1.75}, {"label":"1.25u", "x":0, "y":3, "w":1.25}, {"label":"1u", "x":1.25, "y":3}, {"label":"1u", "x":2.25, "y":3}, {"label":"6.25u", "x":3.25, "y":3, "w":6.25}, {"label":"1.25u", "x":9.5, "y":3, "w":1.25}, {"label":"1u", "x":10.75, "y":3}, {"label":"1.25u", "x":11.75, "y":3, "w":1.25}] } } -} \ No newline at end of file +} diff --git a/keyboards/handwired/juliet/rules.mk b/keyboards/handwired/juliet/rules.mk index 264ff6dcb977..76bb047a3e85 100644 --- a/keyboards/handwired/juliet/rules.mk +++ b/keyboards/handwired/juliet/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/k8split/info.json b/keyboards/handwired/k8split/info.json index 026edfe7102d..b7a39c56c700 100644 --- a/keyboards/handwired/k8split/info.json +++ b/keyboards/handwired/k8split/info.json @@ -2,8 +2,6 @@ "keyboard_name": "k8split", "url": "", "maintainer": "Ckath", - "width": 10, - "height": 6, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/k8split/rules.mk b/keyboards/handwired/k8split/rules.mk index cedc7b4debbd..6a0268d0e31a 100644 --- a/keyboards/handwired/k8split/rules.mk +++ b/keyboards/handwired/k8split/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# 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 -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/k_numpad17/info.json b/keyboards/handwired/k_numpad17/info.json index 65bc57d7866c..a382df0081f0 100644 --- a/keyboards/handwired/k_numpad17/info.json +++ b/keyboards/handwired/k_numpad17/info.json @@ -2,8 +2,6 @@ "keyboard_name": "K-Numpad17", "url": "", "maintainer": "qmk", - "width": 4, - "height": 5, "layouts": { "LAYOUT_numpad_5x4": { "layout": [ diff --git a/keyboards/handwired/k_numpad17/rules.mk b/keyboards/handwired/k_numpad17/rules.mk index e1f2d2a148bd..90645230e078 100644 --- a/keyboards/handwired/k_numpad17/rules.mk +++ b/keyboards/handwired/k_numpad17/rules.mk @@ -2,19 +2,12 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = lite # Key at 0,0 makes the keyboard go into bootloader +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug @@ -22,10 +15,6 @@ COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work RGBLIGHT_ENABLE = no # Enable keyboard underlight functionality BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls AUDIO_ENABLE = no -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -TAP_DANCE_ENABLE = no LAYOUTS = numpad_5x4 diff --git a/keyboards/handwired/kbod/config.h b/keyboards/handwired/kbod/config.h index c1a2a0a7c82b..b8b40728cda4 100644 --- a/keyboards/handwired/kbod/config.h +++ b/keyboards/handwired/kbod/config.h @@ -85,54 +85,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. diff --git a/keyboards/handwired/kbod/info.json b/keyboards/handwired/kbod/info.json index 02586164b237..2026bde37795 100644 --- a/keyboards/handwired/kbod/info.json +++ b/keyboards/handwired/kbod/info.json @@ -2,8 +2,6 @@ "keyboard_name": "kbod", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/kbod/kbod.c b/keyboards/handwired/kbod/kbod.c index 9a12cae0d208..c229d267b173 100644 --- a/keyboards/handwired/kbod/kbod.c +++ b/keyboards/handwired/kbod/kbod.c @@ -1,28 +1 @@ #include "kbod.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/handwired/kbod/kbod.h b/keyboards/handwired/kbod/kbod.h index 5d9dbd05b323..86ff0e8eadba 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/kbod/keymaps/default/rules.mk b/keyboards/handwired/kbod/keymaps/default/rules.mk index 5b9ff0bfdca1..b54debc5f298 100644 --- a/keyboards/handwired/kbod/keymaps/default/rules.mk +++ b/keyboards/handwired/kbod/keymaps/default/rules.mk @@ -2,16 +2,12 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) COMMAND_ENABLE = no # Commands for debug and configuration 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 -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend diff --git a/keyboards/handwired/kbod/rules.mk b/keyboards/handwired/kbod/rules.mk index ddff1d3548e6..0969bb882dc9 100644 --- a/keyboards/handwired/kbod/rules.mk +++ b/keyboards/handwired/kbod/rules.mk @@ -2,29 +2,17 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/ks63/info.json b/keyboards/handwired/ks63/info.json index 349cfaa677a6..fe3ee22bf7ad 100644 --- a/keyboards/handwired/ks63/info.json +++ b/keyboards/handwired/ks63/info.json @@ -2,8 +2,6 @@ "keyboard_name": "ks60", "url": "", "maintainer": "Klesh Wong", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/ks63/rules.mk b/keyboards/handwired/ks63/rules.mk index a97b8ea70884..0debb7d07e40 100644 --- a/keyboards/handwired/ks63/rules.mk +++ b/keyboards/handwired/ks63/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = yes diff --git a/keyboards/handwired/lagrange/info.json b/keyboards/handwired/lagrange/info.json index 1c94d320191f..48714c75c3b4 100644 --- a/keyboards/handwired/lagrange/info.json +++ b/keyboards/handwired/lagrange/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Lagrange", "url": "https://github.com/dpapavas/lagrange-keyboard", "maintainer": "dpapavas", - "width": 19, - "height": 8.5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/lagrange/rules.mk b/keyboards/handwired/lagrange/rules.mk index ea7413b97b1f..1cbeff6d1a30 100644 --- a/keyboards/handwired/lagrange/rules.mk +++ b/keyboards/handwired/lagrange/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # 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 = 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 UNICODE_ENABLE = yes SPLIT_KEYBOARD = yes diff --git a/keyboards/handwired/leftynumpad/info.json b/keyboards/handwired/leftynumpad/info.json index 9dab76430487..bd9f1919cfe7 100644 --- a/keyboards/handwired/leftynumpad/info.json +++ b/keyboards/handwired/leftynumpad/info.json @@ -2,8 +2,6 @@ "keyboard_name": "LeftyNumpad", "url": "https://github.com/tomswartz07", "maintainer": "Tom Swartz", - "width": 5, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/leftynumpad/rules.mk b/keyboards/handwired/leftynumpad/rules.mk index 5c0d8f307c54..d2109f62500b 100644 --- a/keyboards/handwired/leftynumpad/rules.mk +++ b/keyboards/handwired/leftynumpad/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/handwired/lovelive9/info.json b/keyboards/handwired/lovelive9/info.json index fffeb342d389..c7ef2cf83ce8 100644 --- a/keyboards/handwired/lovelive9/info.json +++ b/keyboards/handwired/lovelive9/info.json @@ -2,8 +2,6 @@ "keyboard_name": "lovelive9", "url": "https://github.com/ginjake", "maintainer": "ginjake", - "width": 9, - "height": 4.5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/lovelive9/lovelive9.c b/keyboards/handwired/lovelive9/lovelive9.c index 1ec8ae0527ca..c0198a8eaf26 100644 --- a/keyboards/handwired/lovelive9/lovelive9.c +++ b/keyboards/handwired/lovelive9/lovelive9.c @@ -1,7 +1 @@ #include "lovelive9.h" - - - -void matrix_init_kb(void) { - matrix_init_user(); -} diff --git a/keyboards/handwired/lovelive9/rules.mk b/keyboards/handwired/lovelive9/rules.mk index 4799b5ec9258..db4ba6cca6e4 100644 --- a/keyboards/handwired/lovelive9/rules.mk +++ b/keyboards/handwired/lovelive9/rules.mk @@ -2,31 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. - - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend diff --git a/keyboards/handwired/magicforce61/config.h b/keyboards/handwired/magicforce61/config.h index 92d4fbecb818..193d85d2f30a 100644 --- a/keyboards/handwired/magicforce61/config.h +++ b/keyboards/handwired/magicforce61/config.h @@ -85,54 +85,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. diff --git a/keyboards/handwired/magicforce61/info.json b/keyboards/handwired/magicforce61/info.json index 22ffccd3cedd..e4bab8a0d21a 100644 --- a/keyboards/handwired/magicforce61/info.json +++ b/keyboards/handwired/magicforce61/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Magicforce \"61\"", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/magicforce61/magicforce61.c b/keyboards/handwired/magicforce61/magicforce61.c index 379395366d6e..420bbb80f5e1 100644 --- a/keyboards/handwired/magicforce61/magicforce61.c +++ b/keyboards/handwired/magicforce61/magicforce61.c @@ -1,8 +1 @@ #include "magicforce61.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} diff --git a/keyboards/handwired/magicforce61/rules.mk b/keyboards/handwired/magicforce61/rules.mk index b72fff09602b..96b41fe03f98 100644 --- a/keyboards/handwired/magicforce61/rules.mk +++ b/keyboards/handwired/magicforce61/rules.mk @@ -2,29 +2,17 @@ MCU = at90usb1286 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = halfkay # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/magicforce68/config.h b/keyboards/handwired/magicforce68/config.h index 430e294ba84c..8ad3269d569a 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -86,54 +85,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -151,5 +102,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -#endif diff --git a/keyboards/handwired/magicforce68/info.json b/keyboards/handwired/magicforce68/info.json index a3905336ab88..f3ad1287eadb 100644 --- a/keyboards/handwired/magicforce68/info.json +++ b/keyboards/handwired/magicforce68/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Magicforce 68 Handwired", "url": "", "maintainer": "qmk", - "width": 17.25, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/magicforce68/magicforce68.c b/keyboards/handwired/magicforce68/magicforce68.c index 84b1007e2c5a..8d74f1438b95 100644 --- a/keyboards/handwired/magicforce68/magicforce68.c +++ b/keyboards/handwired/magicforce68/magicforce68.c @@ -1,8 +1 @@ #include "magicforce68.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} diff --git a/keyboards/handwired/magicforce68/magicforce68.h b/keyboards/handwired/magicforce68/magicforce68.h index 949507fef791..829e5932b58b 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/magicforce68/rules.mk b/keyboards/handwired/magicforce68/rules.mk index 3989329835e6..cd0b5fb4a638 100644 --- a/keyboards/handwired/magicforce68/rules.mk +++ b/keyboards/handwired/magicforce68/rules.mk @@ -2,29 +2,17 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/marauder/config.h b/keyboards/handwired/marauder/config.h index d96028793786..df30a6c226bb 100644 --- a/keyboards/handwired/marauder/config.h +++ b/keyboards/handwired/marauder/config.h @@ -39,21 +39,22 @@ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) * */ -#define MATRIX_ROW_PINS { D0, D4, C6, D7, E6, B4, B5, B7, D5, C7, F1, F0 } +#define MATRIX_ROW_PINS { D2, D4, C6, D7, E6, B4, B5, B7, D5, C7, F1, F0 } #define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, F5, F4, B0 } - #define DIODE_DIRECTION COL2ROW - -#define RGB_DI_PIN D1 +#define LAYER_STATE_8BIT +#define USB_POLLING_INTERVAL_MS 1 //1000Hz polling rate +#define QMK_KEYS_PER_SCAN 12 // moar gaming code +#define RGB_DI_PIN D3 #ifdef RGB_DI_PIN - #define RGBLED_NUM 20 + #define RGBLED_NUM 7 #define RGBLIGHT_HUE_STEP 8 #define RGBLIGHT_SAT_STEP 8 #define RGBLIGHT_VAL_STEP 8 #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ /*== all animations enable ==*/ - #define RGBLIGHT_ANIMATIONS +// #define RGBLIGHT_ANIMATIONS // /*== or choose animations ==*/ // #define RGBLIGHT_EFFECT_BREATHING // #define RGBLIGHT_EFFECT_RAINBOW_MOOD @@ -65,6 +66,3 @@ // #define RGBLIGHT_EFFECT_RGB_TEST // #define RGBLIGHT_EFFECT_ALTERNATING #endif - -// generated by KBFirmware JSON to QMK Parser -// https://noroadsleft.github.io/kbf_qmk_converter/ diff --git a/keyboards/handwired/marauder/info.json b/keyboards/handwired/marauder/info.json index f8a0429b2fae..d2e1be4ff87a 100644 --- a/keyboards/handwired/marauder/info.json +++ b/keyboards/handwired/marauder/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Minshara Marauder", "url": "https://imgur.com/a/TvsXpq5", "maintainer": "BB-66", - "width": 19.25, - "height": 6.5, "layouts": { "LAYOUT": { "layout": [ @@ -104,5 +102,4 @@ ] } } - ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/" } diff --git a/keyboards/handwired/marauder/keymaps/orvia/keymap.c b/keyboards/handwired/marauder/keymaps/orvia/keymap.c new file mode 100644 index 000000000000..987e7481283f --- /dev/null +++ b/keyboards/handwired/marauder/keymaps/orvia/keymap.c @@ -0,0 +1,199 @@ +/* Copyright 2021 BB-66 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +bool is_alt_tab_active = false; +uint16_t alt_tab_timer = 0; + +char wpm_str[4]; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PAUS, KC_PSCR, KC_SLCK, KC_ESC, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_KP_SLASH, KC_KP_ASTERISK, KC_KP_MINUS, + 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_KP_7, KC_KP_8, KC_KP_9, KC_KP_PLUS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_KP_4, KC_KP_5, KC_KP_6, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_ENTER, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_KP_0, KC_KP_DOT + ), + [1] = LAYOUT( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_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 + ), + [2] = LAYOUT( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_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 + ), + [3] = LAYOUT( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_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 + ), + +}; + + +#ifdef OLED_ENABLE +// WPM-responsive animation stuff here +# define IDLE_FRAMES 5 +# define IDLE_SPEED 20 // below this wpm value your animation will idle + +// #define PREP_FRAMES 1 // uncomment if >1 + +# define TAP_FRAMES 2 +# define TAP_SPEED 40 // above this wpm value typing animation to trigger + +# define ANIM_FRAME_DURATION 200 // how long each frame lasts in ms +// #define SLEEP_TIMER 60000 // should sleep after this period of 0 wpm, needs fixing +# define ANIM_SIZE 610 // number of bytes in array, minimize for adequate firmware size, max is 1024 + +uint32_t anim_timer = 0; +uint32_t anim_sleep = 0; +uint8_t current_idle_frame = 0; +// uint8_t current_prep_frame = 0; // uncomment if PREP_FRAMES >1 +uint8_t current_tap_frame = 0; + +// Code containing pixel art, contains: +// 5 idle frames, 1 prep frame, and 2 tap frames + +// To make your own pixel art: +// save a png/jpeg of an 128x32 image (resource: https://www.pixilart.com/draw ) +// follow this guide up to and including "CONVERT YOUR IMAGE" https://docs.splitkb.com/hc/en-us/articles/360013811280-How-do-I-convert-an-image-for-use-on-an-OLED-display- +// replace numbers in brackets with your own +// if you start getting errors when compiling make sure you didn't accedentally delete a bracket +static void render_anim(void) { + static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 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, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 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, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 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, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xc0, 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 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, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 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, 0x00, 0x00, 0x00, 0x7e, 0x82, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x60, 0x60, 0x00, 0x01, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xc0, 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 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, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 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, 0x00, 0x00, 0x1c, 0x34, 0xc4, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 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, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 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, 0x06, 0x0d, 0x31, 0xc1, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 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, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}; + static const char PROGMEM prep[][ANIM_SIZE] = {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 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, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, 0x82, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x64, 0x18, 0x04, 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x02, 0x18, 0x19, 0x00, 0x05, 0xfe, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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}}; + static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE] = { + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 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, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x64, 0x18, 0x04, 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x98, 0xc0, 0x88, 0x88, 0x8c, 0x9c, 0x1c, 0x1e, 0x0e, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 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, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, 0x82, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x02, 0x18, 0x19, 0x00, 0x05, 0xfe, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 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, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x07, 0x03, 0x03, 0x61, 0xf0, 0xf8, 0xfc, 0x60, 0x01, 0x01, 0x01, 0x3c, 0x78, 0xf8, 0xf0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + }; + + // assumes 1 frame prep stage + void animation_phase(void) { + if (get_current_wpm() <= IDLE_SPEED) { + current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES; + oled_write_raw_P(idle[abs((IDLE_FRAMES - 1) - current_idle_frame)], ANIM_SIZE); + } + if (get_current_wpm() > IDLE_SPEED && get_current_wpm() < TAP_SPEED) { + // oled_write_raw_P(prep[abs((PREP_FRAMES-1)-current_prep_frame)], ANIM_SIZE); // uncomment if IDLE_FRAMES >1 + oled_write_raw_P(prep[0], ANIM_SIZE); // remove if IDLE_FRAMES >1 + } + if (get_current_wpm() >= TAP_SPEED) { + current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES; + oled_write_raw_P(tap[abs((TAP_FRAMES - 1) - current_tap_frame)], ANIM_SIZE); + } + } + if (get_current_wpm() != 000) { + oled_on(); // not essential but turns on animation OLED with any alpha keypress + if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { + anim_timer = timer_read32(); + animation_phase(); + } + anim_sleep = timer_read32(); + } else { + if (timer_elapsed32(anim_sleep) > OLED_TIMEOUT) { + oled_off(); + } else { + if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { + anim_timer = timer_read32(); + animation_phase(); + } + } + } +} + +// Used to draw on to the oled screen +bool oled_task_user(void) { + render_anim(); // renders pixelart + + oled_set_cursor(0, 0); // sets cursor to (row, column) using charactar spacing (4 rows, 21 full columns on a 128x32 screen, anything more will overflow back to the top) + uint8_t n = get_current_wpm(); + wpm_str[3] = '\0'; + wpm_str[2] = '0' + n % 10; + wpm_str[1] = (n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' '; + wpm_str[0] = n / 10 ? '0' + n / 10 : ' '; + oled_write_P(PSTR("WPM:"), false); + oled_write(wpm_str, false); + + led_t led_state = host_keyboard_led_state(); // caps lock stuff, prints CAPS on new line if caps led is on + oled_set_cursor(0, 1); + oled_write_P(led_state.caps_lock ? PSTR("CAPS") : PSTR(" "), false); + oled_set_cursor(0, 2); + oled_write_P(led_state.num_lock ? PSTR("NUM") : PSTR(" "), false); + oled_set_cursor(4, 2); + oled_write_P(led_state.scroll_lock ? PSTR("SCLK") : PSTR(" "), false); + oled_set_cursor(0, 3); + switch (get_highest_layer(layer_state)) { + case 0: + oled_write_P(PSTR("Base Layer\n"), false); + break; + case 1: + oled_write_P(PSTR("Base Enhanced\n"), false); + break; + case 2: + oled_write_P(PSTR("Gaming\n"), false); + break; + case 3: + oled_write_P(PSTR("Gaming Enh\n"), false); + break; + default: + oled_write_ln_P(PSTR("Undefined"), false); + } + oled_set_cursor(17, 3); + oled_write_P(PSTR("NKRO"), keymap_config.nkro); + return false; +} +#endif diff --git a/keyboards/handwired/marauder/keymaps/orvia/rules.mk b/keyboards/handwired/marauder/keymaps/orvia/rules.mk new file mode 100644 index 000000000000..9b5ee6b6fa52 --- /dev/null +++ b/keyboards/handwired/marauder/keymaps/orvia/rules.mk @@ -0,0 +1,4 @@ +VIA_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # OLED Driver Enable +WPM_ENABLE = yes # WPM counting Enable diff --git a/keyboards/handwired/marauder/keymaps/via/keymap.c b/keyboards/handwired/marauder/keymaps/via/keymap.c new file mode 100644 index 000000000000..c0adf6bd4628 --- /dev/null +++ b/keyboards/handwired/marauder/keymaps/via/keymap.c @@ -0,0 +1,52 @@ +/* Copyright 2021 BB-66 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PAUS, KC_PSCR, KC_SLCK, KC_ESC, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_P0, KC_PDOT + ), + [1] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PAUS, KC_PSCR, KC_SLCK, KC_ESC, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_P0, KC_PDOT + ), + [2] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PAUS, KC_PSCR, KC_SLCK, KC_ESC, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_P0, KC_PDOT + ), + [3] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PAUS, KC_PSCR, KC_SLCK, KC_ESC, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_P0, KC_PDOT + ), +}; diff --git a/keyboards/handwired/marauder/keymaps/via/rules.mk b/keyboards/handwired/marauder/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/handwired/marauder/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/handwired/marauder/marauder.c b/keyboards/handwired/marauder/marauder.c index 2b2039f1055f..c8f878121177 100644 --- a/keyboards/handwired/marauder/marauder.c +++ b/keyboards/handwired/marauder/marauder.c @@ -15,6 +15,3 @@ */ #include "marauder.h" - -// generated by KBFirmware JSON to QMK Parser -// https://noroadsleft.github.io/kbf_qmk_converter/ diff --git a/keyboards/handwired/marauder/marauder.h b/keyboards/handwired/marauder/marauder.h index fc97b1d64213..a8201a8db8f2 100644 --- a/keyboards/handwired/marauder/marauder.h +++ b/keyboards/handwired/marauder/marauder.h @@ -39,6 +39,3 @@ { KA0, KA1, KA2, KA3, KC_NO, KC_NO, KA6, KA7, KA8 }, \ { KC_NO, KB1, KC_NO, KB3, KB4, KC_NO, KB6, KB7, KC_NO }, \ } - -// generated by KBFirmware JSON to QMK Parser -// https://noroadsleft.github.io/kbf_qmk_converter/ diff --git a/keyboards/handwired/marauder/readme.md b/keyboards/handwired/marauder/readme.md index 1a0150159fd5..914aaab078d8 100644 --- a/keyboards/handwired/marauder/readme.md +++ b/keyboards/handwired/marauder/readme.md @@ -1,10 +1,10 @@ # Marauder -90% hand-wired mechanical keyboard in an old Razer case; built around an Elite-C v3.1 controller. +90% hand-wired mechanical keyboard in an old Razer case; built around an Elite-C v3.1 controller. Features a 128x32 OLED screen and RGB. [Build Log](https://imgur.com/a/TvsXpq5) -* Keyboard Maintainer: [%YOUR_NAME%](https://github.com/BB-66) +* Keyboard Maintainer: [BB-66](https://github.com/BB-66) * Hardware Supported: Elite-C, Razer Marauder Make example for this keyboard (after setting up your build environment): diff --git a/keyboards/handwired/marauder/rules.mk b/keyboards/handwired/marauder/rules.mk index 1619f9537478..e8b5d7254097 100644 --- a/keyboards/handwired/marauder/rules.mk +++ b/keyboards/handwired/marauder/rules.mk @@ -7,20 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = yes # Console for debug -COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration # 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LTO_ENABLE = yes # Link Time Optimization, shrinks the output slightly - -# generated by KBFirmware JSON to QMK Parser -# https://noroadsleft.github.io/kbf_qmk_converter/ diff --git a/keyboards/handwired/mechboards_micropad/config.h b/keyboards/handwired/mechboards_micropad/config.h index 7006f50c0dff..3eec736aea22 100644 --- a/keyboards/handwired/mechboards_micropad/config.h +++ b/keyboards/handwired/mechboards_micropad/config.h @@ -117,59 +117,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -188,26 +135,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/handwired/mechboards_micropad/info.json b/keyboards/handwired/mechboards_micropad/info.json index f8908d9fcf05..abbf6e649d4a 100644 --- a/keyboards/handwired/mechboards_micropad/info.json +++ b/keyboards/handwired/mechboards_micropad/info.json @@ -2,11 +2,9 @@ "keyboard_name": "Mechboards Micropad", "url": "", "maintainer": "yiancar", - "width": 4, - "height": 1, "layouts": { "LAYOUT": { "layout": [{"label":"1", "x":0, "y":0}, {"label":"2", "x":1, "y":0}, {"label":"3", "x":2, "y":0}, {"label":"4", "x":3, "y":0}] } } -} \ No newline at end of file +} diff --git a/keyboards/handwired/mechboards_micropad/keymaps/default/keymap.c b/keyboards/handwired/mechboards_micropad/keymaps/default/keymap.c index 41784c5204c4..7d8371841934 100644 --- a/keyboards/handwired/mechboards_micropad/keymaps/default/keymap.c +++ b/keyboards/handwired/mechboards_micropad/keymaps/default/keymap.c @@ -74,11 +74,3 @@ void matrix_init_user(void) { setPinOutput(F6); writePinLow(F6); } - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/handwired/mechboards_micropad/mechboards_micropad.c b/keyboards/handwired/mechboards_micropad/mechboards_micropad.c index d4c8fa9b9286..662af8815e5c 100644 --- a/keyboards/handwired/mechboards_micropad/mechboards_micropad.c +++ b/keyboards/handwired/mechboards_micropad/mechboards_micropad.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "mechboards_micropad.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/handwired/mechboards_micropad/rules.mk b/keyboards/handwired/mechboards_micropad/rules.mk index 6c03d99a45f6..c0de38f0d672 100644 --- a/keyboards/handwired/mechboards_micropad/rules.mk +++ b/keyboards/handwired/mechboards_micropad/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config) -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/minorca/info.json b/keyboards/handwired/minorca/info.json index d1ae1171fe1d..9882d0cf7e26 100644 --- a/keyboards/handwired/minorca/info.json +++ b/keyboards/handwired/minorca/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Minorca Handwired", "url": "", "maintainer": "qmk", - "width": 12, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/minorca/keymaps/ridingqwerty/rules.mk b/keyboards/handwired/minorca/keymaps/ridingqwerty/rules.mk index c3cea9618ebf..10f2309f014b 100644 --- a/keyboards/handwired/minorca/keymaps/ridingqwerty/rules.mk +++ b/keyboards/handwired/minorca/keymaps/ridingqwerty/rules.mk @@ -2,5 +2,5 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite UNICODEMAP_ENABLE = yes # Unicode Map diff --git a/keyboards/handwired/minorca/rules.mk b/keyboards/handwired/minorca/rules.mk index f3f1502de5bd..85fcc1f1e65d 100644 --- a/keyboards/handwired/minorca/rules.mk +++ b/keyboards/handwired/minorca/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = halfkay # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/ms_sculpt_mobile/config.h b/keyboards/handwired/ms_sculpt_mobile/config.h index 1b61d8712a98..c3c2a0962ea0 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -85,5 +84,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -#endif diff --git a/keyboards/handwired/ms_sculpt_mobile/info.json b/keyboards/handwired/ms_sculpt_mobile/info.json index 86d5fde2e3ac..98137e84f89d 100644 --- a/keyboards/handwired/ms_sculpt_mobile/info.json +++ b/keyboards/handwired/ms_sculpt_mobile/info.json @@ -2,8 +2,6 @@ "keyboard_name": "MS Sculpt Mobile", "url": "", "maintainer": "qmk", - "width": 16, - "height": 6, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/ms_sculpt_mobile/keymaps/default/keymap.c b/keyboards/handwired/ms_sculpt_mobile/keymaps/default/keymap.c index d4d0f33e9c87..860f6d31119f 100644 --- a/keyboards/handwired/ms_sculpt_mobile/keymaps/default/keymap.c +++ b/keyboards/handwired/ms_sculpt_mobile/keymaps/default/keymap.c @@ -26,19 +26,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, RSFT(KC_1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \ ) }; - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/handwired/ms_sculpt_mobile/keymaps/default/rules.mk b/keyboards/handwired/ms_sculpt_mobile/keymaps/default/rules.mk index 3955a3ff4276..37f7e2bf93e9 100644 --- a/keyboards/handwired/ms_sculpt_mobile/keymaps/default/rules.mk +++ b/keyboards/handwired/ms_sculpt_mobile/keymaps/default/rules.mk @@ -2,16 +2,12 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) COMMAND_ENABLE = yes # 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 -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend diff --git a/keyboards/handwired/ms_sculpt_mobile/keymaps/milestogo/rules.mk b/keyboards/handwired/ms_sculpt_mobile/keymaps/milestogo/rules.mk index ddfea8255672..6d1eae2bf92a 100644 --- a/keyboards/handwired/ms_sculpt_mobile/keymaps/milestogo/rules.mk +++ b/keyboards/handwired/ms_sculpt_mobile/keymaps/milestogo/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/handwired/ms_sculpt_mobile/ms_sculpt_mobile.h b/keyboards/handwired/ms_sculpt_mobile/ms_sculpt_mobile.h index cfa07c92efa0..64d4f7bbc4fe 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/ms_sculpt_mobile/rules.mk b/keyboards/handwired/ms_sculpt_mobile/rules.mk index d38138bbb854..8fe302dd528a 100644 --- a/keyboards/handwired/ms_sculpt_mobile/rules.mk +++ b/keyboards/handwired/ms_sculpt_mobile/rules.mk @@ -1,41 +1,26 @@ ifdef ASTAR MCU = atmega32u4 CFLAGS = -D ASTAR - USB = /dev/cu.usbmodem14141 - SCULPT_UPLOAD_COMMAND = while [ ! -r $(USB) ]; do sleep 1; done ; avrdude -p $(MCU) -c avr109 -U flash:w:$(TARGET).hex -P $(USB) else MCU = at90usb1286 - SCULPT_UPLOAD_COMMAND = teensy_loader_cli -w -mmcu=$(MCU) $(TARGET).hex endif # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp ifdef ASTAR BOOTLOADER = caterina else BOOTLOADER = atmel-dfu endif -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = no # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output # Project specific files SRC = babblePaste.c diff --git a/keyboards/handwired/myskeeb/info.json b/keyboards/handwired/myskeeb/info.json index 617fbc441b21..27f1d2ae525e 100644 --- a/keyboards/handwired/myskeeb/info.json +++ b/keyboards/handwired/myskeeb/info.json @@ -2,87 +2,89 @@ "keyboard_name": "myskeeb", "url": "", "maintainer": "su8044", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { "layout": [ - {"x":0, "y":0}, - {"x":1, "y":0}, - {"x":2, "y":0}, - {"x":3, "y":0}, - {"x":4, "y":0}, - {"x":5, "y":0}, - {"x":6, "y":0}, - {"x":8, "y":0}, - {"x":9, "y":0}, - {"x":10, "y":0}, - {"x":11, "y":0}, - {"x":12, "y":0}, - {"x":13, "y":0}, - {"x":14, "y":0}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":0.75}, + {"x":2.5, "y":0.25}, + {"x":3.5, "y":0}, + {"x":4.5, "y":0.25}, + {"x":5.5, "y":0.75}, + {"x":6.5, "y":1}, - {"x":0, "y":1}, - {"x":1, "y":1}, - {"x":2, "y":1}, - {"x":3, "y":1}, - {"x":4, "y":1}, - {"x":5, "y":1}, - {"x":6, "y":1}, - {"x":8, "y":1}, - {"x":9, "y":1}, - {"x":10, "y":1}, - {"x":11, "y":1}, - {"x":12, "y":1}, - {"x":13, "y":1}, - {"x":14, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":0.75}, + {"x":11.5, "y":0.25}, + {"x":12.5, "y":0}, + {"x":13.5, "y":0.25}, + {"x":14.5, "y":0.75}, + {"x":15.5, "y":1, "w":1.5}, - {"x":0, "y":2}, - {"x":1, "y":2}, - {"x":2, "y":2}, - {"x":3, "y":2}, - {"x":4, "y":2}, - {"x":5, "y":2}, - {"x":6, "y":2}, - {"x":8, "y":2}, - {"x":9, "y":2}, - {"x":10, "y":2}, - {"x":11, "y":2}, - {"x":12, "y":2}, - {"x":13, "y":2}, - {"x":14, "y":2}, + {"x":0, "y":2, "w":1.5}, + {"x":1.5, "y":1.75}, + {"x":2.5, "y":1.25}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1.25}, + {"x":5.5, "y":1.75}, + {"x":6.5, "y":2, "h":1.5}, - {"x":0, "y":3}, - {"x":1, "y":3}, - {"x":2, "y":3}, - {"x":3, "y":3}, - {"x":4, "y":3}, - {"x":5, "y":3}, - {"x":6, "y":3}, - {"x":8, "y":3}, - {"x":9, "y":3}, - {"x":10, "y":3}, - {"x":11, "y":3}, - {"x":12, "y":3}, - {"x":13, "y":3}, - {"x":14, "y":3}, + {"x":9.5, "y":2, "h":1.5}, + {"x":10.5, "y":1.75}, + {"x":11.5, "y":1.25}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1.25}, + {"x":14.5, "y":1.75}, + {"x":15.5, "y":2, "w":1.5}, - {"x":0, "y":4}, - {"x":1, "y":4}, - {"x":2, "y":4}, - {"x":3, "y":4}, - {"x":4, "y":4}, - {"x":5, "y":4}, - {"x":6, "y":4}, - {"x":8, "y":4}, - {"x":9, "y":4}, - {"x":10, "y":4}, - {"x":11, "y":4}, - {"x":12, "y":4}, - {"x":13, "y":4}, - {"x":14, "y":4} + {"x":0, "y":3, "w":1.5}, + {"x":1.5, "y":2.75}, + {"x":2.5, "y":2.25}, + {"x":3.5, "y":2}, + {"x":4.5, "y":2.25}, + {"x":5.5, "y":2.75}, + + {"x":10.5, "y":2.75}, + {"x":11.5, "y":2.25}, + {"x":12.5, "y":2}, + {"x":13.5, "y":2.25}, + {"x":14.5, "y":2.75}, + {"x":15.5, "y":3, "w":1.5}, + + {"x":0, "y":4, "w":1.5}, + {"x":1.5, "y":3.75}, + {"x":2.5, "y":3.25}, + {"x":3.5, "y":3}, + {"x":4.5, "y":3.25}, + {"x":5.5, "y":3.75}, + {"x":6.5, "y":3.5, "h":1.5}, + + {"x":9.5, "y":3.5, "h":1.5}, + {"x":10.5, "y":3.75}, + {"x":11.5, "y":3.25}, + {"x":12.5, "y":3}, + {"x":13.5, "y":3.25}, + {"x":14.5, "y":3.75}, + {"x":15.5, "y":4, "w":1.5}, + + {"x":0.25, "y":5}, + {"x":1.5, "y":4.75}, + {"x":2.5, "y":4.25}, + {"x":3.5, "y":4}, + + {"x":5, "y":6}, + {"x":6, "y":5.5, "h":2}, + {"x":7, "y":5.5, "h":2}, + + {"x":9, "y":5.5, "h":2}, + {"x":10, "y":5.5, "h":2}, + {"x":11, "y":6}, + + {"x":12.5, "y":4}, + {"x":13.5, "y":4.25}, + {"x":14.5, "y":4.75}, + {"x":15.75, "y":5} ] } } } - diff --git a/keyboards/handwired/myskeeb/keymaps/default/keymap.c b/keyboards/handwired/myskeeb/keymaps/default/keymap.c index 05abf5d54356..61cf607865b1 100644 --- a/keyboards/handwired/myskeeb/keymaps/default/keymap.c +++ b/keyboards/handwired/myskeeb/keymaps/default/keymap.c @@ -68,32 +68,29 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_EQL, KC_MINS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TD(OP_QT), TD(CL_QT), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_NO, KC_NO, KC_H, KC_J, KC_K, KC_L, KC_SCLN, TD(TD_DQ), + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, TD(TD_DQ), KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_CALC, KC_PSCR, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_LCTL, KC_LGUI, KC_LALT, KC_DEL, LT(1,KC_BSPC), KC_SPC, KC_ENT, KC_ENT, KC_SPC, TD(TL), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT ), [1] = LAYOUT( KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC, KC_CAPS, KC_PDOT, KC_PPLS, KC_PMNS, KC_PAST, KC_PSLS, KC_MSEL, KC_MSTP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PWR, RESET, - KC_TAB, KC_P6, KC_P7, KC_P8, KC_P9, KC_P0, KC_NO, KC_NO, KC_SLCK, NK_ON, EEP_RST, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TAB, KC_P6, KC_P7, KC_P8, KC_P9, KC_P0, KC_SLCK, NK_ON, EEP_RST, KC_TRNS, KC_TRNS, KC_TRNS, KC_LSFT, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_MUTE, KC_MPLY, KC_NLCK, NK_OFF, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LCTL, KC_LGUI, KC_LALT, KC_BSPC, KC_TRNS, KC_VOLD, KC_VOLU, KC_MPRV, KC_MNXT, TO(2), KC_HOME, KC_PGDN, KC_PGUP, KC_END ), [2] = LAYOUT( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_7, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_SPC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_SPC, KC_SPC, KC_SPC, KC_NO, KC_NO, TO(3), KC_NO, KC_NO, KC_LALT, KC_TAB ), [3] = LAYOUT( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TAB, KC_A, KC_W, KC_E, KC_R, KC_T, KC_H, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_LSFT, KC_Z, KC_S, KC_D, KC_F, KC_G, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_LSFT, KC_Z, KC_S, KC_D, KC_F, KC_G, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_LCTL, KC_NO, KC_X, KC_C, KC_V, KC_B, KC_M, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_SPC, KC_SPC, KC_Q, KC_NO, KC_NO, TO(0), KC_NO, KC_NO, KC_LALT, KC_TAB ) }; - - - \ No newline at end of file diff --git a/keyboards/xd002/keymaps/tap_dance/rules.mk b/keyboards/handwired/myskeeb/keymaps/default/rules.mk similarity index 100% rename from keyboards/xd002/keymaps/tap_dance/rules.mk rename to keyboards/handwired/myskeeb/keymaps/default/rules.mk diff --git a/keyboards/handwired/myskeeb/myskeeb.h b/keyboards/handwired/myskeeb/myskeeb.h index 60762a35cd6d..208258b77bc6 100644 --- a/keyboards/handwired/myskeeb/myskeeb.h +++ b/keyboards/handwired/myskeeb/myskeeb.h @@ -1,21 +1,23 @@ #include "quantum.h" +#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, \ - L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46 \ + 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, 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 }, \ + { L20, L21, L22, L23, L24, L25, XXX }, \ { 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 }, \ + { XXX, R21, R22, R23, R24, R25, R26 }, \ { R30, R31, R32, R33, R34, R35, R36 }, \ { R40, R41, R42, R43, R44, R45, R46 } \ } diff --git a/keyboards/handwired/myskeeb/oled.c b/keyboards/handwired/myskeeb/oled.c index ee6aa865562f..081ca8395a28 100644 --- a/keyboards/handwired/myskeeb/oled.c +++ b/keyboards/handwired/myskeeb/oled.c @@ -1,108 +1,108 @@ // [OLED Configuration] ---------------------------------------------// // Draw - static const char PROGMEM skeeb_logo[] = { + static const char PROGMEM skeeb_logo[] = { 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4, 0x95,0x96,0x97,0x98,0x99,0x9a,0x9b,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xbb,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xdb,0}; - static const char PROGMEM oled_header[] = { + static const char PROGMEM oled_header[] = { 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, 0xc0,0}; - - static const char PROGMEM oled_layer_keylog_separator[] = { + + static const char PROGMEM oled_layer_keylog_separator[] = { 0xc8,0xff,0}; - - static const char PROGMEM oled_layer_line_end[] = { + + static const char PROGMEM oled_layer_line_end[] = { 0xd4,0}; - - static const char PROGMEM oled_layer_keylog_bottom[] = { + + static const char PROGMEM oled_layer_keylog_bottom[] = { 0xc1,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc3,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc2,0}; - - static const char PROGMEM oled_line_start[] = { + + static const char PROGMEM oled_line_start[] = { 0xc0,0}; - - static const char PROGMEM oled_mods_bottom[] = { + + static const char PROGMEM oled_mods_bottom[] = { 0xc1,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc2,0}; - - static const char PROGMEM oled_footer[] = { + + static const char PROGMEM oled_footer[] = { 0xc4,0xc5,0xc5,0xc9,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xcb,0xc5,0xc5,0xc6,0}; void render_skeeb_logo(void) { static const char PROGMEM skeeb_logo[] = { -0x00, 0xc0, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, -0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0x81, 0x81, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x19, 0x19, 0xff, 0xff, 0x01, -0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x19, 0x19, 0x99, 0x99, 0x99, -0x99, 0x99, 0x99, 0x01, 0x01, 0xff, 0xff, 0x81, 0x81, 0x7f, 0x7f, 0xff, 0xff, 0x7f, 0x7f, 0x81, -0x81, 0xff, 0xff, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xf9, 0xf9, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x3f, 0x1f, 0x0f, 0x07, -0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0xc0, 0x00, -0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x0f, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x08, 0x08, 0x0f, 0x0f, 0x08, -0x08, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0f, 0x0f, 0x08, 0x08, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x0f, 0x08, 0x08, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x0e, 0x09, 0x09, 0x0e, 0x0e, 0x0f, -0x0f, 0x0f, 0x0f, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, -0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x10, 0x10, -0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 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, 0xff, 0x00, -0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x01, 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x00, 0x00, 0x00, -0x00, 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x00, 0x01, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, -0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0xe0, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3f, 0x00, 0x00, 0xf9, 0x01, 0x01, 0xf9, 0x00, 0x00, 0xf8, -0x00, 0x00, 0xf9, 0x01, 0x01, 0xf9, 0x00, 0x00, 0x3f, 0x20, 0x20, 0x20, 0x20, 0x20, 0xe0, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, -0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xff, 0x01, 0x01, 0xf1, 0x10, 0x10, 0x1f, 0x00, 0x00, 0x3f, -0x00, 0x00, 0x1f, 0x10, 0x10, 0xf3, 0x02, 0x02, 0xf2, 0x12, 0x12, 0x1e, 0x00, 0x00, 0xff, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, -0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0f, -0x00, 0x00, 0x0f, 0x01, 0x01, 0x09, 0x08, 0x08, 0x09, 0x09, 0x09, 0x0f, 0x00, 0x00, 0x0f, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, -0x00, 0x03, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xe0, -0xf0, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, -0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, -0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, -0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, -0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, -0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf0, +0x00, 0xc0, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, +0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0x81, 0x81, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x19, 0x19, 0xff, 0xff, 0x01, +0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x19, 0x19, 0x99, 0x99, 0x99, +0x99, 0x99, 0x99, 0x01, 0x01, 0xff, 0xff, 0x81, 0x81, 0x7f, 0x7f, 0xff, 0xff, 0x7f, 0x7f, 0x81, +0x81, 0xff, 0xff, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xf9, 0xf9, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x3f, 0x1f, 0x0f, 0x07, +0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0xc0, 0x00, +0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, +0x0f, 0x0f, 0x0f, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x08, 0x08, 0x0f, 0x0f, 0x08, +0x08, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0f, 0x0f, 0x08, 0x08, 0x0f, 0x0f, 0x0f, +0x0f, 0x0f, 0x0f, 0x08, 0x08, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x0e, 0x09, 0x09, 0x0e, 0x0e, 0x0f, +0x0f, 0x0f, 0x0f, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0f, 0x0f, 0x0f, +0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, +0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x10, 0x10, +0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 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, 0xff, 0x00, +0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x01, 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x00, 0x00, 0x00, +0x00, 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x00, 0x01, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, +0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xe0, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3f, 0x00, 0x00, 0xf9, 0x01, 0x01, 0xf9, 0x00, 0x00, 0xf8, +0x00, 0x00, 0xf9, 0x01, 0x01, 0xf9, 0x00, 0x00, 0x3f, 0x20, 0x20, 0x20, 0x20, 0x20, 0xe0, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, +0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xff, 0x01, 0x01, 0xf1, 0x10, 0x10, 0x1f, 0x00, 0x00, 0x3f, +0x00, 0x00, 0x1f, 0x10, 0x10, 0xf3, 0x02, 0x02, 0xf2, 0x12, 0x12, 0x1e, 0x00, 0x00, 0xff, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, +0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0f, +0x00, 0x00, 0x0f, 0x01, 0x01, 0x09, 0x08, 0x08, 0x09, 0x09, 0x09, 0x0f, 0x00, 0x00, 0x0f, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, +0x00, 0x03, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xe0, +0xf0, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, +0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, +0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, +0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, +0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, +0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf0, 0xe0, 0xc0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x03, 0x00,0 }; oled_write_raw_P(skeeb_logo, sizeof(skeeb_logo)); } - + // Mods Status void render_mod_status(uint8_t modifiers) { - oled_write_P(PSTR(" "), false); + oled_write_P(PSTR(" "), false); oled_write_P(PSTR("-"), false); oled_write_P(PSTR("SHF"), (modifiers & MOD_MASK_SHIFT)); oled_write_P(PSTR("-"), false); @@ -112,7 +112,7 @@ void render_mod_status(uint8_t modifiers) { oled_write_P(PSTR("-"), false); oled_write_P(PSTR("ALT"), (modifiers & MOD_MASK_ALT)); oled_write_P(PSTR("-"), false); - oled_write_P(PSTR(" "), false); + oled_write_P(PSTR(" "), false); } // Layer State @@ -122,19 +122,19 @@ void render_layer_state(void){ case 1: oled_write_P(PSTR(" MEDIA "), false); break; case 2: oled_write_P(PSTR(" MOBA "), false); break; case 3: oled_write_P(PSTR(" FPS "), false); break; - default: oled_write_P(PSTR("Undefined"), false); + default: oled_write_P(PSTR("Undefined"), false); } } -// Keylock State +// Keylock State void render_keylock_status(uint8_t led_usb_state) { oled_write_P(PSTR(" "), false); oled_write_P(led_usb_state & (1<. */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -65,5 +64,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -#endif diff --git a/keyboards/handwired/nicekey/info.json b/keyboards/handwired/nicekey/info.json index 1f099534b281..fd6b0f1689b6 100644 --- a/keyboards/handwired/nicekey/info.json +++ b/keyboards/handwired/nicekey/info.json @@ -2,8 +2,6 @@ "keyboard_name": "nicekey handwired", "url": "", "maintainer": "spydon", - "width": 1, - "height": 1, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/nicekey/keymaps/default/keymap.c b/keyboards/handwired/nicekey/keymaps/default/keymap.c index 139ea6a3beb5..d7539a5c175e 100644 --- a/keyboards/handwired/nicekey/keymaps/default/keymap.c +++ b/keyboards/handwired/nicekey/keymaps/default/keymap.c @@ -1,75 +1,132 @@ #include QMK_KEYBOARD_H +#define RANDOM_STRING_DELAY 100 + enum custom_keycodes { - RANDOM_STRING_MACRO = SAFE_RANGE + RANDOM_STRING_MACRO = SAFE_RANGE }; -const int delay = 100; -const char *sentences[] = { - "I hope you have a great day!\n", - "You are an awesome person.\n", - "I wish I knew you better, you seem nice!\n", - "Your views restore my faith in humanity\n", - "You are as cool as a norm-critical disney princess\n", - "You have impeccable manners.\n", - "You are making me smile\n", - "You are making a difference\n", - "You bring out the best in other people\n", - "You are all that and a super-size bag of chips.\n", - "You are not someone I pretend to not see in public.\n", - "Are you a beaver, because damn.\n", - "I bet you make babies smile.\n", - "You are awkward, in a cute way. Like an elevator ride, but with puppies.\n", - "Looking like a complete idiot with you is really fun.\n", - "If you cooked something really bad, I would tell you instead of eating it.\n", - "I love how passionate you are about your hobby.\n", - "Our conversations always make me feel better.\n", - "It is amazing how far out of your way you go to help people.\n", - "I am so glad that you wrote something here.\n", - "Hey you! How nice to see a friendly person in my feed!\n", - "I hope we know each other for a long time.\n", - "I bet if Britney Spears knew you, 2008 would have gone a lot differently.\n", - "I would trust you with my passwords.\n", - "You are a great problem solver\n", - "I would love to hear you laugh!\n", - "Please, have a monologue about your week, I just want to listen to you!\n", - "You are very far from being Trump.\n", - "I think my dog might like you more than me\n", - "I feel like you would be a great person to do a group project with\n", - "I bet animals love you\n", - "I bet even Kanye would like you more than himself\n", - "You are just doing a great job at life\n", - "I like how you are challenging me.\n", - "You would do be a great mother!\n", - "I... Baked bread for you.\n", - "Wow. You.\n", - "You would not have let that balrog pass!\n", - "Thank you.\n", - "You would be standing out in a crowd\n", - "Your sense of style is amazing.\n", - "You have a beautiful mind.\n", - "I like that big juicy brain of yours\n", - "I would share my cinnamon bun with you\n", - "I like you more than i like my moms apple pie\n", - "You give me the same feeling as a summers night\n", - "I enjoy you more than the click of my mechanical switch\n", - "I would let you pop my bubble wrap\n", - "Being near you is like being inside of a poem\n" +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + LAYOUT( + RANDOM_STRING_MACRO + ) +}; + +const char sentence_01[] PROGMEM = "I hope you have a great day!"; +const char sentence_02[] PROGMEM = "You are an awesome person."; +const char sentence_03[] PROGMEM = "I wish I knew you better, you seem nice!"; +const char sentence_04[] PROGMEM = "Your views restore my faith in humanity"; +const char sentence_05[] PROGMEM = "You are as cool as a norm-critical disney princess"; +const char sentence_06[] PROGMEM = "You have impeccable manners."; +const char sentence_07[] PROGMEM = "You are making me smile"; +const char sentence_08[] PROGMEM = "You are making a difference"; +const char sentence_09[] PROGMEM = "You bring out the best in other people"; +const char sentence_10[] PROGMEM = "You are all that and a super-size bag of chips."; +const char sentence_11[] PROGMEM = "You are not someone I pretend to not see in public."; +const char sentence_12[] PROGMEM = "Are you a beaver, because damn."; +const char sentence_13[] PROGMEM = "I bet you make babies smile."; +const char sentence_14[] PROGMEM = "You are awkward, in a cute way. Like an elevator ride, but with puppies."; +const char sentence_15[] PROGMEM = "Looking like a complete idiot with you is really fun."; +const char sentence_16[] PROGMEM = "If you cooked something really bad, I would tell you instead of eating it."; +const char sentence_17[] PROGMEM = "I love how passionate you are about your hobby."; +const char sentence_18[] PROGMEM = "Our conversations always make me feel better."; +const char sentence_19[] PROGMEM = "It is amazing how far out of your way you go to help people."; +const char sentence_20[] PROGMEM = "I am so glad that you wrote something here."; +const char sentence_21[] PROGMEM = "Hey you! How nice to see a friendly person in my feed!"; +const char sentence_22[] PROGMEM = "I hope we know each other for a long time."; +const char sentence_23[] PROGMEM = "I bet if Britney Spears knew you, 2008 would have gone a lot differently."; +const char sentence_24[] PROGMEM = "I would trust you with my passwords."; +const char sentence_25[] PROGMEM = "You are a great problem solver"; +const char sentence_26[] PROGMEM = "I would love to hear you laugh!"; +const char sentence_27[] PROGMEM = "Please, have a monologue about your week, I just want to listen to you!"; +const char sentence_28[] PROGMEM = "You are very far from being Trump."; +const char sentence_29[] PROGMEM = "I think my dog might like you more than me"; +const char sentence_30[] PROGMEM = "I feel like you would be a great person to do a group project with"; +const char sentence_31[] PROGMEM = "I bet animals love you"; +const char sentence_32[] PROGMEM = "I bet even Kanye would like you more than himself"; +const char sentence_33[] PROGMEM = "You are just doing a great job at life"; +const char sentence_34[] PROGMEM = "I like how you are challenging me."; +const char sentence_35[] PROGMEM = "You would do be a great mother!"; +const char sentence_36[] PROGMEM = "I... Baked bread for you."; +const char sentence_37[] PROGMEM = "Wow. You."; +const char sentence_38[] PROGMEM = "You would not have let that balrog pass!"; +const char sentence_39[] PROGMEM = "Thank you."; +const char sentence_40[] PROGMEM = "You would be standing out in a crowd"; +const char sentence_41[] PROGMEM = "Your sense of style is amazing."; +const char sentence_42[] PROGMEM = "You have a beautiful mind."; +const char sentence_43[] PROGMEM = "I like that big juicy brain of yours"; +const char sentence_44[] PROGMEM = "I would share my cinnamon bun with you"; +const char sentence_45[] PROGMEM = "I like you more than i like my moms apple pie"; +const char sentence_46[] PROGMEM = "You give me the same feeling as a summers night"; +const char sentence_47[] PROGMEM = "I enjoy you more than the click of my mechanical switch"; +const char sentence_48[] PROGMEM = "I would let you pop my bubble wrap"; +const char sentence_49[] PROGMEM = "Being near you is like being inside of a poem"; + +PGM_P const sentences[] PROGMEM = { + sentence_01, + sentence_02, + sentence_03, + sentence_04, + sentence_05, + sentence_06, + sentence_07, + sentence_08, + sentence_09, + sentence_10, + sentence_11, + sentence_12, + sentence_13, + sentence_14, + sentence_15, + sentence_16, + sentence_17, + sentence_18, + sentence_19, + sentence_20, + sentence_21, + sentence_22, + sentence_23, + sentence_24, + sentence_25, + sentence_26, + sentence_27, + sentence_28, + sentence_29, + sentence_30, + sentence_31, + sentence_32, + sentence_33, + sentence_34, + sentence_35, + sentence_36, + sentence_37, + sentence_38, + sentence_39, + sentence_40, + sentence_41, + sentence_42, + sentence_43, + sentence_44, + sentence_45, + sentence_46, + sentence_47, + sentence_48, + sentence_49 }; bool process_record_user(uint16_t keycode, keyrecord_t *record) { - if (record->event.pressed) { - int sentences_size = sizeof(sentences) / sizeof(sentences[0]); - int i = rand() % sentences_size; - switch(keycode) { - case RANDOM_STRING_MACRO: - send_string_with_delay(sentences[i], delay); - return false; + if (record->event.pressed) { + int sentences_size = sizeof(sentences) / sizeof(sentences[0]); + int i = rand() % sentences_size; + + switch (keycode) { + case RANDOM_STRING_MACRO: + send_string_with_delay_P((PGM_P)pgm_read_word(&(sentences[i])), RANDOM_STRING_DELAY); + tap_code(KC_ENT); + + return false; + } } - } - return true; -}; -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - LAYOUT( RANDOM_STRING_MACRO ) -}; + return true; +} diff --git a/keyboards/handwired/nicekey/nicekey.h b/keyboards/handwired/nicekey/nicekey.h index ee5bcfd6be60..f008be168e50 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/nicekey/readme.md b/keyboards/handwired/nicekey/readme.md index e108b38dd1fd..8215fc270572 100644 --- a/keyboards/handwired/nicekey/readme.md +++ b/keyboards/handwired/nicekey/readme.md @@ -2,14 +2,13 @@ ![The first NiceKey](https://s3.eu-central-1.amazonaws.com/mindlevel/nicekey.jpg) - Custom handwired nicekey, a one key keyboard that writes random compliments. -Keyboard Maintainer: [spydon](https://github.com/spydon) -Hardware Supported: Custom handwired one key -Hardware Availability: +* Keyboard Maintainer: [spydon](https://github.com/spydon) +* Hardware Supported: Custom handwired one key +* Hardware Availability: n/a -Switch must be connected to pins C6 and B6. +Switch must be connected to pins C6 and B6. Make example for this keyboard (after setting up your build environment): diff --git a/keyboards/handwired/nicekey/rules.mk b/keyboards/handwired/nicekey/rules.mk index 61c1fa79aa5c..2a378365678c 100644 --- a/keyboards/handwired/nicekey/rules.mk +++ b/keyboards/handwired/nicekey/rules.mk @@ -2,22 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options -# comment out to disable the options. +# change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) -COMMAND_ENABLE = yes # Commands for debug and configuration -#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend -#NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA +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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/not_so_minidox/config.h b/keyboards/handwired/not_so_minidox/config.h index 9d2174b532c0..de9286eda541 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -72,5 +71,3 @@ along with this program. If not, see . //#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 c15b6bc5065e..8910e70f10aa 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 @@ -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/info.json b/keyboards/handwired/not_so_minidox/info.json index 9c286eb1f9ba..7a458add9cf6 100644 --- a/keyboards/handwired/not_so_minidox/info.json +++ b/keyboards/handwired/not_so_minidox/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Not So MiniDox", "url": "", "maintainer": "qmk", - "width": 14, - "height": 5.75, "layouts": { "LAYOUT": { - "key_count": 42, "layout": [ {"x":0, "y":0.375}, {"x":1, "y":0.25}, diff --git a/keyboards/handwired/not_so_minidox/not_so_minidox.h b/keyboards/handwired/not_so_minidox/not_so_minidox.h index c24a515e43e1..7c80dc9b3b27 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/rules.mk b/keyboards/handwired/not_so_minidox/rules.mk index 6e87d7545cba..dd5bf693b56c 100644 --- a/keyboards/handwired/not_so_minidox/rules.mk +++ b/keyboards/handwired/not_so_minidox/rules.mk @@ -2,34 +2,22 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = no # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = no # Audio control and System control +CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. USE_I2C = 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 CUSTOM_MATRIX = yes SRC += matrix.c \ diff --git a/keyboards/handwired/not_so_minidox/serial.h b/keyboards/handwired/not_so_minidox/serial.h index 15fe4db7b4c6..28fcc56ce75f 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 @@ -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 595a0659e1dd..807412cd38a9 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 #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/novem/info.json b/keyboards/handwired/novem/info.json index 6a18a5af2112..5c7d24bca0fe 100644 --- a/keyboards/handwired/novem/info.json +++ b/keyboards/handwired/novem/info.json @@ -2,8 +2,6 @@ "keyboard_name": "novem", "url": "", "maintainer": "Jose I. Martinez", - "width": 3, - "height": 2, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/novem/rules.mk b/keyboards/handwired/novem/rules.mk index 21e28e680f51..4c52aac37775 100644 --- a/keyboards/handwired/novem/rules.mk +++ b/keyboards/handwired/novem/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/nozbe_macro/config.h b/keyboards/handwired/nozbe_macro/config.h new file mode 100644 index 000000000000..996ed08ab6ee --- /dev/null +++ b/keyboards/handwired/nozbe_macro/config.h @@ -0,0 +1,57 @@ +/* Copyright 2021 Marcin Leon Omelan (@rozPierog) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6060 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Leon Omelan +#define PRODUCT Nozbe Reunion Pad + +/* key matrix size */ +#define MATRIX_ROWS 1 +#define MATRIX_COLS 4 + +/* key matrix pins */ +#define MATRIX_ROW_PINS \ + { B0 } +#define MATRIX_COL_PINS \ + { D1, D0, D4, C6 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* number of backlight levels */ +#define BACKLIGHT_PIN B5 +#ifdef BACKLIGHT_PIN +# define BACKLIGHT_LEVELS 3 +#endif + +/* 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/handwired/nozbe_macro/info.json b/keyboards/handwired/nozbe_macro/info.json new file mode 100644 index 000000000000..056ccf9fc1d1 --- /dev/null +++ b/keyboards/handwired/nozbe_macro/info.json @@ -0,0 +1,15 @@ +{ + "keyboard_name": "nozbe_macro", + "url": "", + "maintainer": "Leon Omelan", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"k00", "x":0, "y":0}, + {"label":"k01", "x":1, "y":0}, + {"label":"k02", "x":2, "y":0}, + {"label":"k03", "x":3, "y":0} + ] + } + } +} diff --git a/keyboards/handwired/nozbe_macro/keymaps/default/keymap.c b/keyboards/handwired/nozbe_macro/keymaps/default/keymap.c new file mode 100644 index 000000000000..7012e50d4057 --- /dev/null +++ b/keyboards/handwired/nozbe_macro/keymaps/default/keymap.c @@ -0,0 +1,31 @@ +/* Copyright 2021 Marcin Leon Omelan (@rozPierog) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _FN, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( + LT(_FN, KC_N), LALT(KC_UP), LALT(KC_DOWN), LALT(KC_D) + ), + [_FN] = LAYOUT( + KC_TRNS, KC_1, KC_2, BL_STEP + ), +}; diff --git a/keyboards/handwired/nozbe_macro/keymaps/default/readme.md b/keyboards/handwired/nozbe_macro/keymaps/default/readme.md new file mode 100644 index 000000000000..99051c3a2547 --- /dev/null +++ b/keyboards/handwired/nozbe_macro/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for nozbe_macro diff --git a/keyboards/handwired/nozbe_macro/nozbe_macro.c b/keyboards/handwired/nozbe_macro/nozbe_macro.c new file mode 100644 index 000000000000..b6d38fec8321 --- /dev/null +++ b/keyboards/handwired/nozbe_macro/nozbe_macro.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Marcin Leon Omelan (@rozPierog) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "nozbe_macro.h" diff --git a/keyboards/handwired/nozbe_macro/nozbe_macro.h b/keyboards/handwired/nozbe_macro/nozbe_macro.h new file mode 100644 index 000000000000..2c2c95091bbc --- /dev/null +++ b/keyboards/handwired/nozbe_macro/nozbe_macro.h @@ -0,0 +1,25 @@ +/* Copyright 2021 Marcin Leon Omelan (@rozPierog) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + k00, k01, k02, k03 \ +) { \ + { k00, k01, k02, k03 } \ +} diff --git a/keyboards/handwired/nozbe_macro/readme.md b/keyboards/handwired/nozbe_macro/readme.md new file mode 100644 index 000000000000..1e51dabff375 --- /dev/null +++ b/keyboards/handwired/nozbe_macro/readme.md @@ -0,0 +1,26 @@ +# Nozbe Macropad handwired + +![Nozbe Macropad](https://i.imgur.com/fUMtWmah.png) + +4 key macropad with optional rotary encoder. + +* Keyboard Maintainer: [rozPierog](https://github.com/rozPierog) +* Hardware Supported: Custom handwired 4 key (or 3 key + rotary encoder) pad +* Hardware Availability: *n/a* +* Github Repository: [NozbePad](https://github.com/rozPierog/NozbePad) + +Make example for this keyboard (after setting up your build environment): + + make handwired/nozbe_macro:default + +Flashing example for this keyboard: + + make handwired/nozbe_macro:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 1 way: + +* **Short pins**: short RST and GND pins at the back diff --git a/keyboards/handwired/nozbe_macro/rules.mk b/keyboards/handwired/nozbe_macro/rules.mk new file mode 100644 index 000000000000..7f1a6c824391 --- /dev/null +++ b/keyboards/handwired/nozbe_macro/rules.mk @@ -0,0 +1,19 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/numpad20/config.h b/keyboards/handwired/numpad20/config.h index 7e7ddbeb2abc..dba74f43bd88 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -86,54 +85,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -151,5 +102,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -#endif diff --git a/keyboards/handwired/numpad20/info.json b/keyboards/handwired/numpad20/info.json index 691acb315046..f031160e7525 100644 --- a/keyboards/handwired/numpad20/info.json +++ b/keyboards/handwired/numpad20/info.json @@ -2,8 +2,6 @@ "keyboard_name": "numpad20 handwired", "url": "", "maintainer": "qmk", - "width": 4, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/numpad20/numpad20.c b/keyboards/handwired/numpad20/numpad20.c index 101cf2cb4b10..50766b78571b 100644 --- a/keyboards/handwired/numpad20/numpad20.c +++ b/keyboards/handwired/numpad20/numpad20.c @@ -1,8 +1 @@ #include "numpad20.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} diff --git a/keyboards/handwired/numpad20/numpad20.h b/keyboards/handwired/numpad20/numpad20.h index c15aa9ac7001..03fdd6d923ce 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/numpad20/rules.mk b/keyboards/handwired/numpad20/rules.mk index b5e96d74bf53..df9239f247cd 100644 --- a/keyboards/handwired/numpad20/rules.mk +++ b/keyboards/handwired/numpad20/rules.mk @@ -2,29 +2,17 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = halfkay # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/obuwunkunubi/spaget/info.json b/keyboards/handwired/obuwunkunubi/spaget/info.json index 4228c9c648d0..fcf98ad293f4 100644 --- a/keyboards/handwired/obuwunkunubi/spaget/info.json +++ b/keyboards/handwired/obuwunkunubi/spaget/info.json @@ -2,8 +2,6 @@ "keyboard_name": "spaget", "url": "", "maintainer": "obuwunkunubi", - "width": 4, - "height": 7.5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/obuwunkunubi/spaget/keymaps/default/keymap.c b/keyboards/handwired/obuwunkunubi/spaget/keymaps/default/keymap.c index 5a30f5c57891..c87852da53ed 100644 --- a/keyboards/handwired/obuwunkunubi/spaget/keymaps/default/keymap.c +++ b/keyboards/handwired/obuwunkunubi/spaget/keymaps/default/keymap.c @@ -341,8 +341,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { void matrix_init_user(void) { set_unicode_input_mode(UC_WINC); }; -#ifdef OLED_DRIVER_ENABLE -void oled_task_user(void) { +#ifdef OLED_ENABLE +bool oled_task_user(void) { oled_write_P(PSTR(" spaget v1\n\n"), false); // Host Keyboard Layer Status @@ -368,6 +368,7 @@ void oled_task_user(void) { oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); oled_write_P(led_state.caps_lock ? PSTR("CAPS ") : PSTR(" "), false); oled_write_P(led_state.scroll_lock ? PSTR("SCROLL ") : PSTR(" "), false); + return false; } #endif diff --git a/keyboards/handwired/obuwunkunubi/spaget/rules.mk b/keyboards/handwired/obuwunkunubi/spaget/rules.mk index 8be738f3ec0b..2ccb92e91d46 100644 --- a/keyboards/handwired/obuwunkunubi/spaget/rules.mk +++ b/keyboards/handwired/obuwunkunubi/spaget/rules.mk @@ -2,19 +2,12 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 @@ -22,13 +15,11 @@ COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work RGBLIGHT_ENABLE = no # Enable keyboard underlight functionality BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls AUDIO_ENABLE = no UNICODE_ENABLE = yes # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output -OLED_DRIVER_ENABLE = yes # Enable OLED display support +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enable OLED display support ENCODER_ENABLE = yes # Enable encoder support diff --git a/keyboards/handwired/oem_ansi_fullsize/config.h b/keyboards/handwired/oem_ansi_fullsize/config.h new file mode 100644 index 000000000000..7219bd3403a0 --- /dev/null +++ b/keyboards/handwired/oem_ansi_fullsize/config.h @@ -0,0 +1,159 @@ +/* +Copyright 2021 Cian Johnston + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x0000 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Cian Johnston +#define PRODUCT oem_ansi_fullsize + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 22 + +/* + * 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 \ + { F5, F4, F3, F2, F1, F0 } +// R0 R1 R2 R3 R4 R5 + +#define MATRIX_COL_PINS \ + { C3, C2, C1, C0, E1, E0, D7, E6, D5, D4, D3, D2, D1, D0, B7, B0, B1, B2, B3, B4, B5, F6 } +// C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF CG CH CI CJ CK CL + +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +//#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +//#define LED_NUM_LOCK_PIN B0 +//#define LED_CAPS_LOCK_PIN B1 +//#define LED_SCROLL_LOCK_PIN B2 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +//#define RGB_DI_PIN E2 +//#ifdef RGB_DI_PIN +//# define RGBLED_NUM 16 +//# define RGBLIGHT_HUE_STEP 8 +//# define RGBLIGHT_SAT_STEP 8 +//# define RGBLIGHT_VAL_STEP 8 +//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +//# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +//#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/handwired/oem_ansi_fullsize/info.json b/keyboards/handwired/oem_ansi_fullsize/info.json new file mode 100644 index 000000000000..1ab1559fc08a --- /dev/null +++ b/keyboards/handwired/oem_ansi_fullsize/info.json @@ -0,0 +1,120 @@ +{ + "keyboard_name": "oem_ansi_fullsize", + "url": "https://github.com/johnstcn/qmk", + "maintainer": "johnstcn", + "layouts": { + "LAYOUT_fullsize_ansi": { + "layout": [ + {"matrix": [0, 0], "label": "ESC", "x":0, "y":0}, + {"matrix": [0, 2], "label": "F1", "x":2, "y":0}, + {"matrix": [0, 3], "label": "F2", "x":3, "y":0}, + {"matrix": [0, 4], "label": "F3", "x":4, "y":0}, + {"matrix": [0, 5], "label": "F4", "x":5, "y":0}, + {"matrix": [0, 7], "label": "F5", "x":6.5, "y":0}, + {"matrix": [0, 8], "label": "F6", "x":7.5, "y":0}, + {"matrix": [0, 9], "label": "F7", "x":8.5, "y":0}, + {"matrix": [0, 10], "label": "F8", "x":9.5, "y":0}, + {"matrix": [0, 11], "label": "F9", "x":11, "y":0}, + {"matrix": [0, 12], "label": "F10", "x":12, "y":0}, + {"matrix": [0, 13], "label": "F11", "x":13, "y":0}, + {"matrix": [0, 14], "label": "F12", "x":14, "y":0}, + {"matrix": [0, 15], "label": "PSCR", "x":15.25, "y":0}, + {"matrix": [0, 16], "label": "SLCK", "x":16.25, "y":0}, + {"matrix": [0, 17], "label": "PAUS", "x":17.25, "y":0}, + + {"matrix": [1, 0], "label": "GRV", "x":0, "y":1.25}, + {"matrix": [1, 1], "label": "1", "x":1, "y":1.25}, + {"matrix": [1, 2], "label": "2", "x":2, "y":1.25}, + {"matrix": [1, 3], "label": "3", "x":3, "y":1.25}, + {"matrix": [1, 4], "label": "4", "x":4, "y":1.25}, + {"matrix": [1, 5], "label": "5", "x":5, "y":1.25}, + {"matrix": [1, 6], "label": "6", "x":6, "y":1.25}, + {"matrix": [1, 7], "label": "7", "x":7, "y":1.25}, + {"matrix": [1, 8], "label": "8", "x":8, "y":1.25}, + {"matrix": [1, 9], "label": "9", "x":9, "y":1.25}, + {"matrix": [1, 10], "label": "0", "x":10, "y":1.25}, + {"matrix": [1, 11], "label": "MINS", "x":11, "y":1.25}, + {"matrix": [1, 12], "label": "EQL", "x":12, "y":1.25}, + {"matrix": [1, 14], "label": "BSPC", "x":13, "y":1.25, "w":2}, + {"matrix": [1, 15], "label": "INS", "x":15.25, "y":1.25}, + {"matrix": [1, 16], "label": "HOME", "x":16.25, "y":1.25}, + {"matrix": [1, 17], "label": "PGUP", "x":17.25, "y":1.25}, + {"matrix": [1, 18], "label": "NLCK", "x":18.5, "y":1.25}, + {"matrix": [1, 19], "label": "PSLS", "x":19.5, "y":1.25}, + {"matrix": [1, 20], "label": "PAST", "x":20.5, "y":1.25}, + {"matrix": [1, 21], "label": "PMNS", "x":21.5, "y":1.25}, + + {"matrix": [2, 0], "label": "TAB", "x":0, "y":2.25, "w":1.5}, + {"matrix": [2, 2], "label": "Q", "x":1.5, "y":2.25}, + {"matrix": [2, 3], "label": "W", "x":2.5, "y":2.25}, + {"matrix": [2, 4], "label": "E", "x":3.5, "y":2.25}, + {"matrix": [2, 5], "label": "R", "x":4.5, "y":2.25}, + {"matrix": [2, 6], "label": "T", "x":5.5, "y":2.25}, + {"matrix": [2, 7], "label": "Y", "x":6.5, "y":2.25}, + {"matrix": [2, 8], "label": "U", "x":7.5, "y":2.25}, + {"matrix": [2, 9], "label": "I", "x":8.5, "y":2.25}, + {"matrix": [2, 10], "label": "O", "x":9.5, "y":2.25}, + {"matrix": [2, 11], "label": "P", "x":10.5, "y":2.25}, + {"matrix": [2, 12], "label": "LBRC", "x":11.5, "y":2.25}, + {"matrix": [2, 13], "label": "RBRC", "x":12.5, "y":2.25}, + {"matrix": [2, 14], "label": "BSLS", "x":13.5, "y":2.25, "w":1.5}, + {"matrix": [2, 15], "label": "DEL", "x":15.25, "y":2.25}, + {"matrix": [2, 16], "label": "END", "x":16.25, "y":2.25}, + {"matrix": [2, 17], "label": "PGDN", "x":17.25, "y":2.25}, + {"matrix": [2, 18], "label": "P7", "x":18.5, "y":2.25}, + {"matrix": [2, 19], "label": "P8", "x":19.5, "y":2.25}, + {"matrix": [2, 20], "label": "P9", "x":20.5, "y":2.25}, + {"matrix": [2, 21], "label": "PPLS", "x":21.5, "y":2.25, "h": 2}, + + {"matrix": [3, 0], "label": "CAPS", "x":0, "y":3.25, "w":1.75}, + {"matrix": [3, 2], "label": "A", "x":1.75, "y":3.25}, + {"matrix": [3, 3], "label": "S", "x":2.75, "y":3.25}, + {"matrix": [3, 4], "label": "D", "x":3.75, "y":3.25}, + {"matrix": [3, 5], "label": "F", "x":4.75, "y":3.25}, + {"matrix": [3, 6], "label": "G", "x":5.75, "y":3.25}, + {"matrix": [3, 7], "label": "H", "x":6.75, "y":3.25}, + {"matrix": [3, 8], "label": "J", "x":7.75, "y":3.25}, + {"matrix": [3, 9], "label": "K", "x":8.75, "y":3.25}, + {"matrix": [3, 10], "label": "L", "x":9.75, "y":3.25}, + {"matrix": [3, 11], "label": "SCLN", "x":10.75, "y":3.25}, + {"matrix": [3, 12], "label": "QUOT", "x":11.75, "y":3.25}, + {"matrix": [3, 13], "label": "ENT", "x":12.75, "y":3.25, "w":2.25}, + {"matrix": [3, 18], "label": "P4", "x":18.5, "y":3.25}, + {"matrix": [3, 19], "label": "P5", "x":19.5, "y":3.25}, + {"matrix": [3, 20], "label": "P6", "x":20.5, "y":3.25}, + + {"matrix": [4, 1], "label": "LSFT", "x":0, "y":4.25, "w":2.25}, + {"matrix": [4, 2], "label": "Z", "x":2.25, "y":4.25}, + {"matrix": [4, 3], "label": "X", "x":3.25, "y":4.25}, + {"matrix": [4, 4], "label": "C", "x":4.25, "y":4.25}, + {"matrix": [4, 5], "label": "V", "x":5.25, "y":4.25}, + {"matrix": [4, 6], "label": "B", "x":6.25, "y":4.25}, + {"matrix": [4, 7], "label": "N", "x":7.25, "y":4.25}, + {"matrix": [4, 8], "label": "M", "x":8.25, "y":4.25}, + {"matrix": [4, 9], "label": "COMM", "x":9.25, "y":4.25}, + {"matrix": [4, 10], "label": "DOT", "x":10.25, "y":4.25}, + {"matrix": [4, 11], "label": "SLSH", "x":11.25, "y":4.25}, + {"matrix": [4, 13], "label": "RSFT", "x":12.25, "y":4.25, "w":2.75}, + {"matrix": [4, 16], "label": "UP", "x":16.25, "y":4.25}, + {"matrix": [4, 18], "label": "P1", "x":18.5, "y":4.25}, + {"matrix": [4, 19], "label": "P2", "x":19.5, "y":4.25}, + {"matrix": [4, 20], "label": "P3", "x":20.5, "y":4.25}, + {"matrix": [4, 21], "label": "PENT", "x":21.5, "y":4.25, "h":2}, + + {"matrix": [5, 0], "label": "LCTL", "x":0, "y":5.25, "w":1.25}, + {"matrix": [5, 1], "label": "LGUI", "x":1.25, "y":5.25, "w":1.25}, + {"matrix": [5, 3], "label": "LALT", "x":2.5, "y":5.25, "w":1.25}, + {"matrix": [5, 6], "label": "SPC", "x":3.75, "y":5.25, "w":6.25}, + {"matrix": [5, 10], "label": "RALT", "x":10, "y":5.25, "w":1.25}, + {"matrix": [5, 11], "label": "RGUI", "x":11.25, "y":5.25, "w":1.25}, + {"matrix": [5, 13], "label": "MO(1)", "x":12.5, "y":5.25, "w":1.25}, + {"matrix": [5, 14], "label": "RCTL", "x":13.75, "y":5.25, "w":1.25}, + {"matrix": [5, 15], "label": "LEFT", "x":15.25, "y":5.25}, + {"matrix": [5, 16], "label": "DOWN", "x":16.25, "y":5.25}, + {"matrix": [5, 17], "label": "RGHT", "x":17.25, "y":5.25}, + {"matrix": [5, 18], "label": "P0", "x":18.5, "y":5.25, "w":2}, + {"matrix": [5, 20], "label": "PDOT", "x":20.5, "y":5.25} + ] + } + } +} diff --git a/keyboards/handwired/oem_ansi_fullsize/keymaps/default/keymap.c b/keyboards/handwired/oem_ansi_fullsize/keymaps/default/keymap.c new file mode 100644 index 000000000000..48290896fc81 --- /dev/null +++ b/keyboards/handwired/oem_ansi_fullsize/keymaps/default/keymap.c @@ -0,0 +1,30 @@ +/* Copyright 2021 Cian Johnston + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_fullsize_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT + ), +}; +// clang-format on + diff --git a/keyboards/handwired/oem_ansi_fullsize/keymaps/default/readme.md b/keyboards/handwired/oem_ansi_fullsize/keymaps/default/readme.md new file mode 100644 index 000000000000..882181d208d4 --- /dev/null +++ b/keyboards/handwired/oem_ansi_fullsize/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for oem_ansi_fullsize diff --git a/keyboards/handwired/oem_ansi_fullsize/oem_ansi_fullsize.c b/keyboards/handwired/oem_ansi_fullsize/oem_ansi_fullsize.c new file mode 100644 index 000000000000..14004599aac0 --- /dev/null +++ b/keyboards/handwired/oem_ansi_fullsize/oem_ansi_fullsize.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Cian Johnston + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "oem_ansi_fullsize.h" diff --git a/keyboards/handwired/oem_ansi_fullsize/oem_ansi_fullsize.h b/keyboards/handwired/oem_ansi_fullsize/oem_ansi_fullsize.h new file mode 100644 index 000000000000..ceb873393cc8 --- /dev/null +++ b/keyboards/handwired/oem_ansi_fullsize/oem_ansi_fullsize.h @@ -0,0 +1,72 @@ +/* Copyright 2021 Cian Johnston + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + +/* Matrix col/row mapping + * + * 10 11 12 13 14 15 16 17 18 19 20 21 + * C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF CG CH CI CJ CK CL + * ┌───┐ ┌───┐┌───┐┌───┐┌───┐ ┌───┐┌───┐┌───┐┌───┐ ┌───┐┌───┐┌───┐┌───┐ ┌───┐┌───┐┌───┐ + * R0 │K00│ │K02││K03││K04││K05│ │K07││K08││K09││K0A│ │K0B││K0C││K0D││K0E│ │K0F││K0G││K0H│ + * └───┘ └───┘└───┘└───┘└───┘ └───┘└───┘└───┘└───┘ └───┘└───┘└───┘└───┘ └───┘└───┘└───┘ + * + * ┌───┐┌───┐┌───┐┌───┐┌───┐┌───┐┌───┐┌───┐┌───┐┌───┐┌───┐┌───┐┌───┐┌───────┐ ┌───┐┌───┐┌───┐ ┌───┐┌───┐┌───┐┌───┐ + * R1 │K10││K11││K12││K13││K14││K15││K16││K17││K18││K19││K1A││K1B││K1C││ K1E │ │K1F││K1G││K1H│ │K1I││K1J││K1K││K1L│ + * └───┘└───┘└───┘└───┘└───┘└───┘└───┘└───┘└───┘└───┘└───┘└───┘└───┘└───────┘ └───┘└───┘└───┘ └───┘└───┘└───┘└───┘ + * ┌─────┐┌───┐┌───┐┌───┐┌───┐┌───┐┌───┐┌───┐┌───┐┌───┐┌───┐┌───┐┌───┐┌─────┐ ┌───┐┌───┐┌───┐ ┌───┐┌───┐┌───┐┌───┐ + * R2 │ K20 ││K22││K23││K24││K25││K26││K27││K28││K29││K2A││K2B││K2C││K2D││ K2E │ │K2F││K2G││K2H│ │K2I││K2J││K2K││ │ + * └─────┘└───┘└───┘└───┘└───┘└───┘└───┘└───┘└───┘└───┘└───┘└───┘└───┘└─────┘ └───┘└───┘└───┘ └───┘└───┘└───┘│K2L│ + * ┌───────┐┌───┐┌───┐┌───┐┌───┐┌───┐┌───┐┌───┐┌───┐┌───┐┌───┐┌───┐┌────────┐ ┌───┐┌───┐┌───┐│ │ + * R3 │ K30 ││K32││K33││K34││K35││K36││K37││K38││K39││K3A││K3B││K3C││ K3D │ │K3I││K3J││K3K││ │ + * └───────┘└───┘└───┘└───┘└───┘└───┘└───┘└───┘└───┘└───┘└───┘└───┘└────────┘ └───┘└───┘└───┘└───┘ + * ┌─────────┐┌───┐┌───┐┌───┐┌───┐┌───┐┌───┐┌───┐┌───┐┌───┐┌───┐┌───────────┐ ┌───┐ ┌───┐┌───┐┌───┐┌───┐ + * R4 │ K41 ││K42││K43││K44││K45││K46││K47││K48││K49││K4A││K4B││ K4D │ │K4G│ │K4I││K4J││K4K││ │ + * └─────────┘└───┘└───┘└───┘└───┘└───┘└───┘└───┘└───┘└───┘└───┘└───────────┘ └───┘ └───┘└───┘└───┘│K4L│ + * ┌────┐┌────┐┌────┐┌──────────────────────────────┐┌────┐┌────┐┌────┐┌────┐ ┌───┐┌───┐┌───┐ ┌────────┐┌───┐│ │ + * R5 │K50 ││K51 ││K53 ││ K56 ││K5A ││K5B ││K5D ││K5E │ │K5F││K5G││K5H│ │ K5I ││K5K││ │ + * └────┘└────┘└────┘└──────────────────────────────┘└────┘└────┘└────┘└────┘ └───┘└───┘└───┘ └────────┘└───┘└───┘ + * + */ + +// clang-format off +#define LAYOUT_fullsize_ansi( \ + K00, K02, K03, K04, K05, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, K1F, K1G, K1H, K1I, K1J, K1K, K1L, \ + K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H, K2I, K2J, K2K, K2L, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3I, K3J, K3K, \ + K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4D, K4G, K4I, K4J, K4K, K4L, \ + K50, K51, K53, K56, K5A, K5B, K5D, K5E, K5F, K5G, K5H, K5I, K5K \ +) { \ + { K00, KC_NO, K02, K03, K04, K05, KC_NO, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H, KC_NO, KC_NO, KC_NO, KC_NO }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KC_NO, K1E, K1F, K1G, K1H, K1I, K1J, K1K, K1L }, \ + { K20, KC_NO, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H, K2I, K2J, K2K, K2L }, \ + { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO, KC_NO, KC_NO, KC_NO, K3I, K3J, K3K, KC_NO }, \ + { KC_NO, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, KC_NO, K4D, KC_NO, KC_NO, K4G, KC_NO, K4I, K4J, K4K, K4L }, \ + { K50, K51, KC_NO, K53, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, K5A, K5B, KC_NO, K5D, K5E, K5F, K5G, K5H, K5I, KC_NO, K5K, KC_NO }, \ +} +// clang-format on diff --git a/keyboards/handwired/oem_ansi_fullsize/readme.md b/keyboards/handwired/oem_ansi_fullsize/readme.md new file mode 100644 index 000000000000..a94413cdfb61 --- /dev/null +++ b/keyboards/handwired/oem_ansi_fullsize/readme.md @@ -0,0 +1,49 @@ +# oem_ansi_fullsize + +![oem_ansi_fullsize](https://imgur.com/a/Tw7dwK4) +This is a basic layout for a full-sized ANSI board. It should be compatible with any 100% full-sized layout, for example [RobotDoctor's MECH-104](https://www.thingiverse.com/thing:4205065). + +* Keyboard Maintainer: [Cian Johnston](https://github.com/johnstcn) +* Hardware Supported: Teensy®++ 2.0 as it has enough pins for the matrix. +* Hardware Availability: [pjrc.com](https://www.pjrc.com/store/teensypp.html) + +The pin layout I used is shown below. Change it as you wish, but be sure to avoid pin D6! + +``` + ┌──────┐ + ┌────┴──────┴────┐ + +5V │o o│ GND + CL <== B6 │o o│ B7 ==> CE + CK <== B5 │o o│ D0 ==> CD + CJ <== B4 │o o│ D1 ==> CC + CI <== B3 │o o│ D2 ==> CB + CH <== B2 │o o│ D3 ==> CA + CG <== B1 │o o│ D4 ==> C9 + CF <== B0 │o o│ D5 ==> C8 + E7 │o o│ D6 ==> NOPE + C7 <== E6 │o o│ D7 ==> C6 + GND │o o│ E0 ==> C5 + RST │o o│ E1 ==> C4 + R5 <== F0 │o o│ C0 ==> C3 + R4 <== F1 │o A0 o o A4 o│ C1 ==> C2 + R3 <== F2 │o A1 o o A5 o│ C2 ==> C1 + R2 <== F3 │o A2 o o A6 o│ C3 ==> C0 + R1 <== F4 │o A3 o o A7 o│ C4 + R0 <== F5 │o o│ C5 + F6 │o o│ C6 + F7 │o o o o o│ C7 + └────────────────┘ + R G + + S N 5 + T D V +``` + +Make example for this keyboard (after setting up your build environment): + + make handwired/oem_ansi_fullsize:default + +Flashing example for this keyboard: + + make handwired/oem_ansi_fullsize:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/handwired/oem_ansi_fullsize/rules.mk b/keyboards/handwired/oem_ansi_fullsize/rules.mk new file mode 100644 index 000000000000..329a0cfc87d4 --- /dev/null +++ b/keyboards/handwired/oem_ansi_fullsize/rules.mk @@ -0,0 +1,21 @@ +# MCU name +MCU = at90usb1286 + +# Bootloader selection +BOOTLOADER = halfkay + +# 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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +LAYOUTS = fullsize_ansi \ No newline at end of file diff --git a/keyboards/handwired/oem_iso_fullsize/info.json b/keyboards/handwired/oem_iso_fullsize/info.json index fbe3c2796c92..6df2a57ca76a 100644 --- a/keyboards/handwired/oem_iso_fullsize/info.json +++ b/keyboards/handwired/oem_iso_fullsize/info.json @@ -2,8 +2,6 @@ "keyboard_name": "oem_iso_fullsize", "url": "https://github.com/andresteare/qmk_firmware", "maintainer": "andresteare", - "width": 22.5, - "height": 6.5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/oem_iso_fullsize/rules.mk b/keyboards/handwired/oem_iso_fullsize/rules.mk index 04d0c78e8e6a..fa042c12b6c9 100644 --- a/keyboards/handwired/oem_iso_fullsize/rules.mk +++ b/keyboards/handwired/oem_iso_fullsize/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = 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 diff --git a/keyboards/handwired/onekey/blackpill_f401/blackpill_f401.c b/keyboards/handwired/onekey/blackpill_f401/blackpill_f401.c index 956932329c30..1287614a8b9e 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/blackpill_f401/chconf.h b/keyboards/handwired/onekey/blackpill_f401/chconf.h index de4ab83ec369..04ff4362aea6 100644 --- a/keyboards/handwired/onekey/blackpill_f401/chconf.h +++ b/keyboards/handwired/onekey/blackpill_f401/chconf.h @@ -36,4 +36,3 @@ #define CH_CFG_FACTORY_PIPES TRUE #include_next - diff --git a/keyboards/handwired/onekey/blackpill_f401/config.h b/keyboards/handwired/onekey/blackpill_f401/config.h index 829e84677f5f..3825d3f7ec48 100644 --- a/keyboards/handwired/onekey/blackpill_f401/config.h +++ b/keyboards/handwired/onekey/blackpill_f401/config.h @@ -18,13 +18,15 @@ #include "config_common.h" +#define PRODUCT Onekey Blackpill STM32F401 + #define MATRIX_COL_PINS { B0 } #define MATRIX_ROW_PINS { A7 } #define UNUSED_PINS -#define BACKLIGHT_PIN A0 -#define BACKLIGHT_PWM_DRIVER PWMD5 -#define BACKLIGHT_PWM_CHANNEL 1 +#define BACKLIGHT_PIN A0 +#define BACKLIGHT_PWM_DRIVER PWMD5 +#define BACKLIGHT_PWM_CHANNEL 1 #define RGB_DI_PIN A1 diff --git a/keyboards/handwired/onekey/blackpill_f401/halconf.h b/keyboards/handwired/onekey/blackpill_f401/halconf.h index 878879db1e28..020a7722f0d5 100644 --- a/keyboards/handwired/onekey/blackpill_f401/halconf.h +++ b/keyboards/handwired/onekey/blackpill_f401/halconf.h @@ -26,4 +26,3 @@ #define HAL_USE_PWM TRUE #include_next - diff --git a/keyboards/handwired/onekey/blackpill_f401/mcuconf.h b/keyboards/handwired/onekey/blackpill_f401/mcuconf.h index 034a022db4dc..e614a9dfa93f 100644 --- a/keyboards/handwired/onekey/blackpill_f401/mcuconf.h +++ b/keyboards/handwired/onekey/blackpill_f401/mcuconf.h @@ -13,6 +13,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ + #pragma once #include_next "mcuconf.h" diff --git a/keyboards/handwired/onekey/blackpill_f401/readme.md b/keyboards/handwired/onekey/blackpill_f401/readme.md index 18ed6a43e972..3971cdfa2d43 100644 --- a/keyboards/handwired/onekey/blackpill_f401/readme.md +++ b/keyboards/handwired/onekey/blackpill_f401/readme.md @@ -1,5 +1,5 @@ -# f401 blackpill onekey +# F401 Blackpill onekey -Supported Hardware: *STM32F401CCU6 WeAct v1.3*. +* Supported Hardware: STM32F401CCU6 WeAct v1.3 To trigger keypress, short together pins *B0* and *A7*. diff --git a/keyboards/handwired/onekey/blackpill_f401/rules.mk b/keyboards/handwired/onekey/blackpill_f401/rules.mk index 9b0a72afb9dd..264e71d0b5af 100644 --- a/keyboards/handwired/onekey/blackpill_f401/rules.mk +++ b/keyboards/handwired/onekey/blackpill_f401/rules.mk @@ -4,7 +4,4 @@ MCU = STM32F401 # Bootloader selection BOOTLOADER = stm32-dfu -# Build Options -# change yes to no to disable -# -KEYBOARD_SHARED_EP = yes +KEYBOARD_SHARED_EP = yes diff --git a/keyboards/handwired/onekey/blackpill_f411/chconf.h b/keyboards/handwired/onekey/blackpill_f411/chconf.h index 4ecd0f52a277..8b55eaeef089 100644 --- a/keyboards/handwired/onekey/blackpill_f411/chconf.h +++ b/keyboards/handwired/onekey/blackpill_f411/chconf.h @@ -36,4 +36,3 @@ #define CH_CFG_FACTORY_PIPES TRUE #include_next - diff --git a/keyboards/handwired/onekey/blackpill_f411/config.h b/keyboards/handwired/onekey/blackpill_f411/config.h index 829e84677f5f..16e8f27924bd 100644 --- a/keyboards/handwired/onekey/blackpill_f411/config.h +++ b/keyboards/handwired/onekey/blackpill_f411/config.h @@ -18,13 +18,15 @@ #include "config_common.h" +#define PRODUCT Onekey Blackpill STM32F411 + #define MATRIX_COL_PINS { B0 } #define MATRIX_ROW_PINS { A7 } #define UNUSED_PINS -#define BACKLIGHT_PIN A0 -#define BACKLIGHT_PWM_DRIVER PWMD5 -#define BACKLIGHT_PWM_CHANNEL 1 +#define BACKLIGHT_PIN A0 +#define BACKLIGHT_PWM_DRIVER PWMD5 +#define BACKLIGHT_PWM_CHANNEL 1 #define RGB_DI_PIN A1 diff --git a/keyboards/handwired/onekey/blackpill_f411/halconf.h b/keyboards/handwired/onekey/blackpill_f411/halconf.h index d54f2a26acf6..4a0da20890c7 100644 --- a/keyboards/handwired/onekey/blackpill_f411/halconf.h +++ b/keyboards/handwired/onekey/blackpill_f411/halconf.h @@ -26,4 +26,3 @@ #define HAL_USE_PWM TRUE #include_next - diff --git a/keyboards/handwired/onekey/blackpill_f411/mcuconf.h b/keyboards/handwired/onekey/blackpill_f411/mcuconf.h index 034a022db4dc..e614a9dfa93f 100644 --- a/keyboards/handwired/onekey/blackpill_f411/mcuconf.h +++ b/keyboards/handwired/onekey/blackpill_f411/mcuconf.h @@ -13,6 +13,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ + #pragma once #include_next "mcuconf.h" diff --git a/keyboards/handwired/onekey/blackpill_f411/readme.md b/keyboards/handwired/onekey/blackpill_f411/readme.md index a1e1e3723312..e7eb6f285b60 100644 --- a/keyboards/handwired/onekey/blackpill_f411/readme.md +++ b/keyboards/handwired/onekey/blackpill_f411/readme.md @@ -1,5 +1,5 @@ -# f411 blackpill onekey +# F411 Blackpill onekey -Supported Hardware: *STM32F411CEU6 WeAct v1.3*. +* Supported Hardware: STM32F411CEU6 WeAct v1.3 To trigger keypress, short together pins *B0* and *A7*. diff --git a/keyboards/handwired/onekey/blackpill_f411/rules.mk b/keyboards/handwired/onekey/blackpill_f411/rules.mk index 3ded2a2587e9..75bc794ef0a9 100644 --- a/keyboards/handwired/onekey/blackpill_f411/rules.mk +++ b/keyboards/handwired/onekey/blackpill_f411/rules.mk @@ -4,7 +4,4 @@ MCU = STM32F411 # Bootloader selection BOOTLOADER = stm32-dfu -# Build Options -# change yes to no to disable -# -KEYBOARD_SHARED_EP = yes +KEYBOARD_SHARED_EP = yes diff --git a/keyboards/handwired/onekey/blackpill_f411_tinyuf2/config.h b/keyboards/handwired/onekey/blackpill_f411_tinyuf2/config.h index 95e99aacc159..44ec0bfc6e87 100755 --- a/keyboards/handwired/onekey/blackpill_f411_tinyuf2/config.h +++ b/keyboards/handwired/onekey/blackpill_f411_tinyuf2/config.h @@ -18,13 +18,15 @@ #include "config_common.h" +#define PRODUCT Onekey Blackpill STM32F411 TinyUF2 + #define MATRIX_COL_PINS { B0 } #define MATRIX_ROW_PINS { A7 } #define UNUSED_PINS -#define BACKLIGHT_PIN A0 -#define BACKLIGHT_PWM_DRIVER PWMD5 -#define BACKLIGHT_PWM_CHANNEL 1 +#define BACKLIGHT_PIN A0 +#define BACKLIGHT_PWM_DRIVER PWMD5 +#define BACKLIGHT_PWM_CHANNEL 1 #define RGB_DI_PIN A1 diff --git a/keyboards/handwired/onekey/blackpill_f411_tinyuf2/mcuconf.h b/keyboards/handwired/onekey/blackpill_f411_tinyuf2/mcuconf.h index ad8aecdb1096..d003af03e568 100755 --- a/keyboards/handwired/onekey/blackpill_f411_tinyuf2/mcuconf.h +++ b/keyboards/handwired/onekey/blackpill_f411_tinyuf2/mcuconf.h @@ -13,6 +13,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ + #pragma once #include_next "mcuconf.h" diff --git a/keyboards/handwired/onekey/blackpill_f411_tinyuf2/readme.md b/keyboards/handwired/onekey/blackpill_f411_tinyuf2/readme.md index ff43658f4cfa..c5ed1260b56b 100755 --- a/keyboards/handwired/onekey/blackpill_f411_tinyuf2/readme.md +++ b/keyboards/handwired/onekey/blackpill_f411_tinyuf2/readme.md @@ -1,9 +1,9 @@ -# f411 blackpill onekey +# F411 Blackpill onekey -Supported Hardware: *STM32F411CEU6 WeAct v1.3*. +* Supported Hardware: STM32F411CEU6 WeAct v1.3 To trigger keypress, short together pins *B0* and *A7*. This variant requires the TinyUF2 bootloader to be installed. This can be downloaded from the [tinyuf2 releases page](https://github.com/adafruit/tinyuf2/releases). The F401 blackpill binary works for both F401- and F411-based blackpill devices. -Double-tap reset to enter bootloader mode. Copy the built uf2 file to the device by dragging the file to the new USB disk. \ No newline at end of file +Double-tap reset to enter bootloader mode. Copy the built uf2 file to the device by dragging the file to the new USB disk. diff --git a/keyboards/handwired/onekey/blackpill_f411_tinyuf2/rules.mk b/keyboards/handwired/onekey/blackpill_f411_tinyuf2/rules.mk index 4d0b1591e2e2..70180ee790b5 100755 --- a/keyboards/handwired/onekey/blackpill_f411_tinyuf2/rules.mk +++ b/keyboards/handwired/onekey/blackpill_f411_tinyuf2/rules.mk @@ -4,7 +4,4 @@ MCU = STM32F411 # Bootloader selection BOOTLOADER = tinyuf2 -# Build Options -# change yes to no to disable -# -KEYBOARD_SHARED_EP = yes +KEYBOARD_SHARED_EP = yes diff --git a/keyboards/handwired/onekey/bluepill/chconf.h b/keyboards/handwired/onekey/bluepill/chconf.h index c7a982aedd00..63236f2c2c8c 100644 --- a/keyboards/handwired/onekey/bluepill/chconf.h +++ b/keyboards/handwired/onekey/bluepill/chconf.h @@ -26,4 +26,3 @@ #define CH_CFG_USE_CONDVARS_TIMEOUT FALSE #include_next - diff --git a/keyboards/handwired/onekey/bluepill/config.h b/keyboards/handwired/onekey/bluepill/config.h index c6166380cf26..3eb7699a8b7a 100644 --- a/keyboards/handwired/onekey/bluepill/config.h +++ b/keyboards/handwired/onekey/bluepill/config.h @@ -18,13 +18,15 @@ #include "config_common.h" +#define PRODUCT Onekey Bluepill STM32F103 + #define MATRIX_COL_PINS { B0 } #define MATRIX_ROW_PINS { A7 } #define UNUSED_PINS -#define BACKLIGHT_PIN A0 -#define BACKLIGHT_PWM_DRIVER PWMD2 -#define BACKLIGHT_PWM_CHANNEL 1 +#define BACKLIGHT_PIN A0 +#define BACKLIGHT_PWM_DRIVER PWMD2 +#define BACKLIGHT_PWM_CHANNEL 1 #define RGB_DI_PIN A1 diff --git a/keyboards/handwired/onekey/bluepill/halconf.h b/keyboards/handwired/onekey/bluepill/halconf.h index 956d50f26f9d..923b4e52d24d 100644 --- a/keyboards/handwired/onekey/bluepill/halconf.h +++ b/keyboards/handwired/onekey/bluepill/halconf.h @@ -24,4 +24,3 @@ #define HAL_USE_PWM TRUE #include_next - diff --git a/keyboards/handwired/onekey/bluepill/mcuconf.h b/keyboards/handwired/onekey/bluepill/mcuconf.h index 99525360b3b6..5e94a97e21e6 100644 --- a/keyboards/handwired/onekey/bluepill/mcuconf.h +++ b/keyboards/handwired/onekey/bluepill/mcuconf.h @@ -28,4 +28,3 @@ #undef STM32_SPI_USE_SPI2 #define STM32_SPI_USE_SPI2 FALSE - diff --git a/keyboards/handwired/onekey/bluepill/readme.md b/keyboards/handwired/onekey/bluepill/readme.md index 0bf1f5701c8f..8688e09b4a7c 100644 --- a/keyboards/handwired/onekey/bluepill/readme.md +++ b/keyboards/handwired/onekey/bluepill/readme.md @@ -1,3 +1,3 @@ -# bluepill onekey +# Bluepill onekey To trigger keypress, short together pins *B0* and *A7*. diff --git a/keyboards/handwired/onekey/config.h b/keyboards/handwired/onekey/config.h index 4643da7cf832..950146a5d371 100644 --- a/keyboards/handwired/onekey/config.h +++ b/keyboards/handwired/onekey/config.h @@ -18,31 +18,31 @@ along with this program. If not, see . #pragma once /* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x6465 -#define DEVICE_VER 0x0001 -#define MANUFACTURER none -#define PRODUCT onekey +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6465 +#define DEVICE_VER 0x0001 +#define MANUFACTURER QMK /* key matrix size */ #define MATRIX_ROWS 1 #define MATRIX_COLS 1 +/* COL2ROW, ROW2COL */ #define DIODE_DIRECTION COL2ROW -/* define if matrix has ghost */ -//#define MATRIX_HAS_GHOST - -/* Set 0 if debouncing isn't needed */ -#define DEBOUNCE 5 +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 -#define TAPPING_TERM 500 +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST /* 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 TAPPING_TERM 500 + /* * Feature disable options * These options are also useful to firmware size reduction. @@ -58,5 +58,11 @@ along with this program. If not, see . //#define NO_ACTION_LAYER //#define NO_ACTION_TAPPING //#define NO_ACTION_ONESHOT -//#define NO_ACTION_MACRO -//#define NO_ACTION_FUNCTION + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/handwired/onekey/elite_c/config.h b/keyboards/handwired/onekey/elite_c/config.h index 02c81ce7439b..f495a1c38b21 100644 --- a/keyboards/handwired/onekey/elite_c/config.h +++ b/keyboards/handwired/onekey/elite_c/config.h @@ -18,6 +18,8 @@ #include "config_common.h" +#define PRODUCT Onekey Elite-C + #define MATRIX_COL_PINS { F4 } #define MATRIX_ROW_PINS { F5 } #define UNUSED_PINS diff --git a/keyboards/handwired/onekey/elite_c/readme.md b/keyboards/handwired/onekey/elite_c/readme.md index 28a0885bb3ef..5320d7b61987 100644 --- a/keyboards/handwired/onekey/elite_c/readme.md +++ b/keyboards/handwired/onekey/elite_c/readme.md @@ -1,3 +1,3 @@ # Elite-C onekey -To trigger keypress, short together pins *F4* and *F5* (marked on the PCB as *A3* and *A2*). +To trigger keypress, short together pins *F4* and *F5*. diff --git a/keyboards/handwired/onekey/elite_c/rules.mk b/keyboards/handwired/onekey/elite_c/rules.mk index 2f20507d4ddd..e8326bcf0998 100644 --- a/keyboards/handwired/onekey/elite_c/rules.mk +++ b/keyboards/handwired/onekey/elite_c/rules.mk @@ -2,11 +2,4 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu diff --git a/keyboards/handwired/onekey/info.json b/keyboards/handwired/onekey/info.json index ac339ba197d9..7455e9f3624a 100644 --- a/keyboards/handwired/onekey/info.json +++ b/keyboards/handwired/onekey/info.json @@ -2,12 +2,10 @@ "keyboard_name": "onekey handwired", "url": "", "maintainer": "qmk", - "width": 1, - "height": 1, "layouts": { "LAYOUT_ortho_1x1": { "layout": [ - {"x":0, "y":0} + {"x": 0, "y": 0} ] } } diff --git a/keyboards/handwired/onekey/keymaps/console/keymap.c b/keyboards/handwired/onekey/keymaps/console/keymap.c new file mode 100644 index 000000000000..b47fb59d17e1 --- /dev/null +++ b/keyboards/handwired/onekey/keymaps/console/keymap.c @@ -0,0 +1,20 @@ +#include QMK_KEYBOARD_H + +enum custom_keycodes { + KC_HELLO = SAFE_RANGE, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + LAYOUT_ortho_1x1(KC_HELLO) +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_HELLO: + if (record->event.pressed) { + println("Hello world!"); + } + return false; + } + return true; +} diff --git a/keyboards/handwired/onekey/keymaps/digitizer/keymap.c b/keyboards/handwired/onekey/keymaps/digitizer/keymap.c new file mode 100644 index 000000000000..6b304e86fe99 --- /dev/null +++ b/keyboards/handwired/onekey/keymaps/digitizer/keymap.c @@ -0,0 +1,38 @@ + /* 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 . + */ +#include QMK_KEYBOARD_H + +#include "digitizer.h" + +#include "math.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {LAYOUT_ortho_1x1(KC_A)}; + +uint32_t timer = 0; + +void matrix_scan_user() { + if (timer_elapsed32(timer) < 200) { + return; + } + + timer = timer_read32(); + digitizer_t digitizer; + digitizer.x = 0.5 - 0.2 * cos(timer_read() / 250. / 6.28); + digitizer.y = 0.5 - 0.2 * sin(timer_read() / 250. / 6.28); + digitizer.tipswitch = 0; + digitizer.inrange = 1; + digitizer_set_report(digitizer); +} diff --git a/keyboards/handwired/onekey/keymaps/digitizer/rules.mk b/keyboards/handwired/onekey/keymaps/digitizer/rules.mk new file mode 100644 index 000000000000..ea9f9bd9ac62 --- /dev/null +++ b/keyboards/handwired/onekey/keymaps/digitizer/rules.mk @@ -0,0 +1 @@ +DIGITIZER_ENABLE = yes \ No newline at end of file diff --git a/keyboards/handwired/onekey/keymaps/joystick/rules.mk b/keyboards/handwired/onekey/keymaps/joystick/rules.mk index b910bdbe6c89..9e44c470f213 100644 --- a/keyboards/handwired/onekey/keymaps/joystick/rules.mk +++ b/keyboards/handwired/onekey/keymaps/joystick/rules.mk @@ -1 +1 @@ -JOYSTICK_ENABLE = analog +JOYSTICK_ENABLE = yes diff --git a/keyboards/handwired/onekey/keymaps/oled/keymap.c b/keyboards/handwired/onekey/keymaps/oled/keymap.c index c19b6918c0b7..e020d5e4b621 100644 --- a/keyboards/handwired/onekey/keymaps/oled/keymap.c +++ b/keyboards/handwired/onekey/keymaps/oled/keymap.c @@ -361,7 +361,7 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) { return rotation; } -void oled_task_user(void) { +bool oled_task_user(void) { if (update_speed_test) { // Speed test mode - wait for screen update completion. if (!oled_dirty) { @@ -450,6 +450,7 @@ void oled_task_user(void) { oled_write_P(PSTR("Draw Once"), false); break; } + return false; } void keyboard_post_init_user(void) { diff --git a/keyboards/handwired/onekey/keymaps/oled/rules.mk b/keyboards/handwired/onekey/keymaps/oled/rules.mk index 2ef0a8d04fff..6b69e50dbbfb 100644 --- a/keyboards/handwired/onekey/keymaps/oled/rules.mk +++ b/keyboards/handwired/onekey/keymaps/oled/rules.mk @@ -1,2 +1,3 @@ -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 TAP_DANCE_ENABLE = yes diff --git a/keyboards/handwired/onekey/keymaps/quine/rules.mk b/keyboards/handwired/onekey/keymaps/quine/rules.mk deleted file mode 100644 index 7da32a7bc8a1..000000000000 --- a/keyboards/handwired/onekey/keymaps/quine/rules.mk +++ /dev/null @@ -1 +0,0 @@ -BOOTLOADER=atmel-dfu diff --git a/keyboards/handwired/onekey/onekey.c b/keyboards/handwired/onekey/onekey.c index c79e0120ebe2..cbd67012ce6d 100644 --- a/keyboards/handwired/onekey/onekey.c +++ b/keyboards/handwired/onekey/onekey.c @@ -1 +1 @@ -#include "onekey.h" \ No newline at end of file +#include "onekey.h" diff --git a/keyboards/handwired/onekey/promicro/config.h b/keyboards/handwired/onekey/promicro/config.h index 02c81ce7439b..9c8961d5cade 100644 --- a/keyboards/handwired/onekey/promicro/config.h +++ b/keyboards/handwired/onekey/promicro/config.h @@ -18,6 +18,8 @@ #include "config_common.h" +#define PRODUCT Onekey Pro Micro + #define MATRIX_COL_PINS { F4 } #define MATRIX_ROW_PINS { F5 } #define UNUSED_PINS diff --git a/keyboards/handwired/onekey/promicro/rules.mk b/keyboards/handwired/onekey/promicro/rules.mk index e6fef517279c..cf663a7ed6aa 100644 --- a/keyboards/handwired/onekey/promicro/rules.mk +++ b/keyboards/handwired/onekey/promicro/rules.mk @@ -2,11 +2,4 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina diff --git a/keyboards/handwired/onekey/proton_c/config.h b/keyboards/handwired/onekey/proton_c/config.h index a364bbee341f..5600ae33ae57 100644 --- a/keyboards/handwired/onekey/proton_c/config.h +++ b/keyboards/handwired/onekey/proton_c/config.h @@ -18,14 +18,16 @@ #include "config_common.h" +#define PRODUCT Onekey Proton-C + #define MATRIX_COL_PINS { A2 } #define MATRIX_ROW_PINS { A1 } #define UNUSED_PINS -#define BACKLIGHT_PIN B8 -#define BACKLIGHT_PWM_DRIVER PWMD4 -#define BACKLIGHT_PWM_CHANNEL 3 -#define BACKLIGHT_PAL_MODE 2 +#define BACKLIGHT_PIN B8 +#define BACKLIGHT_PWM_DRIVER PWMD4 +#define BACKLIGHT_PWM_CHANNEL 3 +#define BACKLIGHT_PAL_MODE 2 #define RGB_DI_PIN A0 #define RGB_CI_PIN B13 diff --git a/keyboards/handwired/onekey/proton_c/readme.md b/keyboards/handwired/onekey/proton_c/readme.md index be5a2871ca20..c8c21838ec93 100644 --- a/keyboards/handwired/onekey/proton_c/readme.md +++ b/keyboards/handwired/onekey/proton_c/readme.md @@ -1,3 +1,3 @@ -# Proton C onekey +# Proton-C onekey To trigger keypress, short together pins *A1* and *A2*. diff --git a/keyboards/handwired/onekey/readme.md b/keyboards/handwired/onekey/readme.md index 0e9d6a538aaf..2973b7d873a0 100644 --- a/keyboards/handwired/onekey/readme.md +++ b/keyboards/handwired/onekey/readme.md @@ -1,15 +1,17 @@ -# onekey handwired +# onekey -Custom handwired one key keyboard. +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 Availability: - -**See each individual board for pin infomation** +* Keyboard Maintainer: QMK Community +* 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): make handwired/onekey:default +Flashing example for this keyboard: + + make handwired/onekey:default:flash + See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/handwired/onekey/rules.mk b/keyboards/handwired/onekey/rules.mk index df2ec1ecf449..ab7e6ee8dd7e 100644 --- a/keyboards/handwired/onekey/rules.mk +++ b/keyboards/handwired/onekey/rules.mk @@ -1,21 +1,17 @@ # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = 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 on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config) -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output DEFAULT_FOLDER = handwired/onekey/promicro + LAYOUTS = ortho_1x1 diff --git a/keyboards/handwired/onekey/sipeed_longan_nano/chconf.h b/keyboards/handwired/onekey/sipeed_longan_nano/chconf.h new file mode 100644 index 000000000000..b1eb18de7813 --- /dev/null +++ b/keyboards/handwired/onekey/sipeed_longan_nano/chconf.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 . + */ + +#pragma once + +#define CH_CFG_ST_RESOLUTION 16 + +#define CH_CFG_ST_FREQUENCY 10000 + +#include_next diff --git a/keyboards/handwired/onekey/sipeed_longan_nano/config.h b/keyboards/handwired/onekey/sipeed_longan_nano/config.h new file mode 100644 index 000000000000..1825b936d8ec --- /dev/null +++ b/keyboards/handwired/onekey/sipeed_longan_nano/config.h @@ -0,0 +1,37 @@ +/* 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 . + */ + +#pragma once + +#include "config_common.h" + +#define MATRIX_COL_PINS \ + { B0 } +#define MATRIX_ROW_PINS \ + { A7 } +#define UNUSED_PINS + +#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 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 000000000000..2579c58747b2 --- /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 . + */ + +#pragma once + +#define HAL_USE_PWM TRUE +#define HAL_USE_ADC TRUE +#define HAL_USE_I2C TRUE + +#include_next 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 000000000000..eba0dd9eebf5 --- /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 + +#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 000000000000..0a3a29157603 --- /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 000000000000..aef4fee6b220 --- /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/stm32f0_disco/chconf.h b/keyboards/handwired/onekey/stm32f0_disco/chconf.h index 33ceb1431ef6..1e497767d53e 100644 --- a/keyboards/handwired/onekey/stm32f0_disco/chconf.h +++ b/keyboards/handwired/onekey/stm32f0_disco/chconf.h @@ -28,4 +28,3 @@ #define CH_CFG_USE_CONDVARS_TIMEOUT FALSE #include_next - diff --git a/keyboards/handwired/onekey/stm32f0_disco/config.h b/keyboards/handwired/onekey/stm32f0_disco/config.h index 0d6dd18fa22c..e0f6d00050d2 100644 --- a/keyboards/handwired/onekey/stm32f0_disco/config.h +++ b/keyboards/handwired/onekey/stm32f0_disco/config.h @@ -18,14 +18,16 @@ #include "config_common.h" +#define PRODUCT Onekey STM32F072 Discovery + #define MATRIX_COL_PINS { B4 } #define MATRIX_ROW_PINS { B5 } #define UNUSED_PINS -#define BACKLIGHT_PIN C8 -#define BACKLIGHT_PWM_DRIVER PWMD3 -#define BACKLIGHT_PWM_CHANNEL 3 -#define BACKLIGHT_PAL_MODE 0 +#define BACKLIGHT_PIN C8 +#define BACKLIGHT_PWM_DRIVER PWMD3 +#define BACKLIGHT_PWM_CHANNEL 3 +#define BACKLIGHT_PAL_MODE 0 #define RGB_DI_PIN B15 diff --git a/keyboards/handwired/onekey/stm32f0_disco/halconf.h b/keyboards/handwired/onekey/stm32f0_disco/halconf.h index cb7de673869f..78ed6586c844 100644 --- a/keyboards/handwired/onekey/stm32f0_disco/halconf.h +++ b/keyboards/handwired/onekey/stm32f0_disco/halconf.h @@ -24,4 +24,3 @@ #define HAL_USE_PWM TRUE #include_next - diff --git a/keyboards/handwired/onekey/stm32f0_disco/mcuconf.h b/keyboards/handwired/onekey/stm32f0_disco/mcuconf.h index 52d39e4dd4a3..ea4f9373a0f7 100644 --- a/keyboards/handwired/onekey/stm32f0_disco/mcuconf.h +++ b/keyboards/handwired/onekey/stm32f0_disco/mcuconf.h @@ -25,4 +25,3 @@ #undef STM32_PWM_USE_TIM3 #define STM32_PWM_USE_TIM3 TRUE - diff --git a/keyboards/handwired/onekey/stm32f0_disco/readme.md b/keyboards/handwired/onekey/stm32f0_disco/readme.md index 48d999d69c08..0f5c01984dbb 100644 --- a/keyboards/handwired/onekey/stm32f0_disco/readme.md +++ b/keyboards/handwired/onekey/stm32f0_disco/readme.md @@ -1,5 +1,5 @@ # STM32F072 Discovery kit onekey -Supported Hardware: +* Supported Hardware: [STM32F072 Discovery](https://www.st.com/en/evaluation-tools/32f072bdiscovery.html) To trigger keypress, short together pins *B4* and *B5*. diff --git a/keyboards/handwired/onekey/stm32f405_feather/config.h b/keyboards/handwired/onekey/stm32f405_feather/config.h new file mode 100644 index 000000000000..32d780797598 --- /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 . + */ + +#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 000000000000..49a05725d52b --- /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 000000000000..bff7a7e2973a --- /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_2/config.h b/keyboards/handwired/onekey/teensy_2/config.h index 167373cd39b6..b83262ef0527 100644 --- a/keyboards/handwired/onekey/teensy_2/config.h +++ b/keyboards/handwired/onekey/teensy_2/config.h @@ -18,6 +18,8 @@ #include "config_common.h" +#define PRODUCT Onekey Teensy 2.0 + #define MATRIX_COL_PINS { F4 } #define MATRIX_ROW_PINS { F5 } #define UNUSED_PINS diff --git a/keyboards/handwired/onekey/teensy_2/readme.md b/keyboards/handwired/onekey/teensy_2/readme.md index 86a3114e56aa..bf4cf6d2fe7c 100644 --- a/keyboards/handwired/onekey/teensy_2/readme.md +++ b/keyboards/handwired/onekey/teensy_2/readme.md @@ -1,3 +1,3 @@ # Teensy 2.0 onekey -To trigger keypress, short together pins *F4* and *F5* +To trigger keypress, short together pins *F4* and *F5*. diff --git a/keyboards/handwired/onekey/teensy_2/rules.mk b/keyboards/handwired/onekey/teensy_2/rules.mk index ae398e2588c7..320633f80f33 100644 --- a/keyboards/handwired/onekey/teensy_2/rules.mk +++ b/keyboards/handwired/onekey/teensy_2/rules.mk @@ -2,11 +2,4 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = halfkay diff --git a/keyboards/handwired/onekey/teensy_2pp/config.h b/keyboards/handwired/onekey/teensy_2pp/config.h index 167373cd39b6..886ad70cbf90 100644 --- a/keyboards/handwired/onekey/teensy_2pp/config.h +++ b/keyboards/handwired/onekey/teensy_2pp/config.h @@ -18,6 +18,8 @@ #include "config_common.h" +#define PRODUCT Onekey Teensy 2++ + #define MATRIX_COL_PINS { F4 } #define MATRIX_ROW_PINS { F5 } #define UNUSED_PINS diff --git a/keyboards/handwired/onekey/teensy_2pp/readme.md b/keyboards/handwired/onekey/teensy_2pp/readme.md index 243b08df174e..c2c96d12cd78 100644 --- a/keyboards/handwired/onekey/teensy_2pp/readme.md +++ b/keyboards/handwired/onekey/teensy_2pp/readme.md @@ -1,3 +1,3 @@ # Teensy++ 2.0 onekey -To trigger keypress, short together pins *F4* and *F5* +To trigger keypress, short together pins *F4* and *F5*. diff --git a/keyboards/handwired/onekey/teensy_2pp/rules.mk b/keyboards/handwired/onekey/teensy_2pp/rules.mk index c421eb862e9c..149471682dfb 100644 --- a/keyboards/handwired/onekey/teensy_2pp/rules.mk +++ b/keyboards/handwired/onekey/teensy_2pp/rules.mk @@ -2,11 +2,4 @@ MCU = at90usb1286 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = halfkay diff --git a/keyboards/handwired/onekey/teensy_32/chconf.h b/keyboards/handwired/onekey/teensy_32/chconf.h index 199e8d05bd9d..b7b23f268cee 100644 --- a/keyboards/handwired/onekey/teensy_32/chconf.h +++ b/keyboards/handwired/onekey/teensy_32/chconf.h @@ -50,4 +50,3 @@ #define CH_DBG_FILL_THREADS TRUE #include_next - diff --git a/keyboards/handwired/onekey/teensy_32/config.h b/keyboards/handwired/onekey/teensy_32/config.h index a4839135a03c..e388b01af8f8 100644 --- a/keyboards/handwired/onekey/teensy_32/config.h +++ b/keyboards/handwired/onekey/teensy_32/config.h @@ -19,12 +19,14 @@ // TODO: including this causes "error: expected identifier before '(' token" errors //#include "config_common.h" +#define PRODUCT Onekey Teensy 3.2 + #define MATRIX_COL_PINS { D5 } #define MATRIX_ROW_PINS { B2 } #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_32/halconf.h b/keyboards/handwired/onekey/teensy_32/halconf.h index e5019779c7ce..5c99dcbd9db3 100644 --- a/keyboards/handwired/onekey/teensy_32/halconf.h +++ b/keyboards/handwired/onekey/teensy_32/halconf.h @@ -24,4 +24,3 @@ #define HAL_USE_I2C TRUE #include_next - diff --git a/keyboards/handwired/onekey/teensy_lc/chconf.h b/keyboards/handwired/onekey/teensy_lc/chconf.h index cfcced3cf74f..03dc5f0c95fe 100644 --- a/keyboards/handwired/onekey/teensy_lc/chconf.h +++ b/keyboards/handwired/onekey/teensy_lc/chconf.h @@ -50,4 +50,3 @@ #define CH_DBG_FILL_THREADS TRUE #include_next - diff --git a/keyboards/handwired/onekey/teensy_lc/config.h b/keyboards/handwired/onekey/teensy_lc/config.h index a4839135a03c..4e594e7d7eac 100644 --- a/keyboards/handwired/onekey/teensy_lc/config.h +++ b/keyboards/handwired/onekey/teensy_lc/config.h @@ -19,12 +19,14 @@ // TODO: including this causes "error: expected identifier before '(' token" errors //#include "config_common.h" +#define PRODUCT Onekey Teensy LC + #define MATRIX_COL_PINS { D5 } #define MATRIX_ROW_PINS { B2 } #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/halconf.h b/keyboards/handwired/onekey/teensy_lc/halconf.h index bdf1ba4310e0..89e2bcbbee87 100644 --- a/keyboards/handwired/onekey/teensy_lc/halconf.h +++ b/keyboards/handwired/onekey/teensy_lc/halconf.h @@ -24,4 +24,3 @@ #define HAL_USE_I2C TRUE #include_next - diff --git a/keyboards/handwired/ortho5x13/config.h b/keyboards/handwired/ortho5x13/config.h index 65510c2a23d8..d831940b8d46 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -86,54 +85,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -151,5 +102,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -#endif diff --git a/keyboards/handwired/ortho5x13/info.json b/keyboards/handwired/ortho5x13/info.json index 886bfe02893a..1ec13f93a755 100644 --- a/keyboards/handwired/ortho5x13/info.json +++ b/keyboards/handwired/ortho5x13/info.json @@ -2,8 +2,6 @@ "keyboard_name": "ortho5x13", "url": "", "maintainer": "qmk", - "width": 13, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/ortho5x13/ortho5x13.c b/keyboards/handwired/ortho5x13/ortho5x13.c index cf8352cc4364..525e1ba112be 100644 --- a/keyboards/handwired/ortho5x13/ortho5x13.c +++ b/keyboards/handwired/ortho5x13/ortho5x13.c @@ -1,8 +1 @@ #include "ortho5x13.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} diff --git a/keyboards/handwired/ortho5x13/rules.mk b/keyboards/handwired/ortho5x13/rules.mk index b5e96d74bf53..df9239f247cd 100644 --- a/keyboards/handwired/ortho5x13/rules.mk +++ b/keyboards/handwired/ortho5x13/rules.mk @@ -2,29 +2,17 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = halfkay # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/ortho5x14/info.json b/keyboards/handwired/ortho5x14/info.json index 3ba4f3e7e870..7ccd121a22aa 100644 --- a/keyboards/handwired/ortho5x14/info.json +++ b/keyboards/handwired/ortho5x14/info.json @@ -2,8 +2,6 @@ "keyboard_name": "ortho5x14", "url": "", "maintainer": "qmk", - "width": 14, - "height": 5, "layouts": { "LAYOUT": { "layout": [ @@ -80,7 +78,7 @@ {"label":"Alt", "x":10, "y":4}, {"label":"Prop", "x":11, "y":4}, {"label":"Ctrl", "x":12, "y":4}, - {"label":"Esc", "x":13, "y":0} + {"label":"Esc", "x":13, "y":4} ] } } diff --git a/keyboards/handwired/ortho5x14/readme.md b/keyboards/handwired/ortho5x14/readme.md index b8d1daa8b086..160bbb9dd2fb 100644 --- a/keyboards/handwired/ortho5x14/readme.md +++ b/keyboards/handwired/ortho5x14/readme.md @@ -1,4 +1,4 @@ -# ortho5x13 handwired +# ortho5x14 handwired Custom handwired ortho5x14 keyboard. diff --git a/keyboards/handwired/ortho5x14/rules.mk b/keyboards/handwired/ortho5x14/rules.mk index c0fc51be654a..8425ed232603 100644 --- a/keyboards/handwired/ortho5x14/rules.mk +++ b/keyboards/handwired/ortho5x14/rules.mk @@ -7,15 +7,12 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/owlet60/config.h b/keyboards/handwired/owlet60/config.h index 27317233e061..d20e1fa97534 100644 --- a/keyboards/handwired/owlet60/config.h +++ b/keyboards/handwired/owlet60/config.h @@ -122,59 +122,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -193,26 +140,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/handwired/owlet60/info.json b/keyboards/handwired/owlet60/info.json index 7163bd455cce..18e57fe8152d 100644 --- a/keyboards/handwired/owlet60/info.json +++ b/keyboards/handwired/owlet60/info.json @@ -2,23 +2,17 @@ "keyboard_name": "Owlet60", "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/handwired/owlet60/", "maintainer": "worthlessowl", - "width": 19, - "height": 5, "layouts": { "LAYOUT_owlet60_full_bsp": { - "key_count": 71, "layout": [{"label":"F1", "x":0.5, "y":0}, {"label":"~", "x":1.75, "y":0}, {"label":"!", "x":2.75, "y":0}, {"label":"@", "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":7.75, "y":0}, {"label":"&", "x":9.25, "y":0}, {"label":"*", "x":10.25, "y":0}, {"label":"(", "x":11.25, "y":0}, {"label":")", "x":12.25, "y":0}, {"label":"_", "x":13.25, "y":0}, {"label":"+", "x":14.25, "y":0}, {"label":"Backspace", "x":15.25, "y":0, "w":2}, {"label":"PgUp", "x":17.25, "y":0}, {"label":"F2", "x":0.25, "y":1}, {"label":"Tab", "x":1.5, "y":1, "w":1.5}, {"label":"Q", "x":3, "y":1}, {"label":"W", "x":4, "y":1}, {"label":"E", "x":5, "y":1}, {"label":"R", "x":6, "y":1}, {"label":"T", "x":7, "y":1}, {"label":"Y", "x":9, "y":1}, {"label":"U", "x":10, "y":1}, {"label":"I", "x":11, "y":1}, {"label":"O", "x":12, "y":1}, {"label":"P", "x":13, "y":1}, {"label":"{", "x":14, "y":1}, {"label":"}", "x":15, "y":1}, {"label":"|", "x":16, "y":1, "w":1.5}, {"label":"PgDn", "x":17.5, "y":1}, {"label":"F3", "x":0, "y":2}, {"label":"Caps Lock", "x":1.25, "y":2, "w":1.75}, {"label":"A", "x":3, "y":2}, {"label":"S", "x":4, "y":2}, {"label":"D", "x":5, "y":2}, {"label":"F", "x":6, "y":2}, {"label":"G", "x":7, "y":2}, {"label":"H", "x":9.5, "y":2}, {"label":"J", "x":10.5, "y":2}, {"label":"K", "x":11.5, "y":2}, {"label":"L", "x":12.5, "y":2}, {"label":":", "x":13.5, "y":2}, {"label":"\"", "x":14.5, "y":2}, {"label":"Enter", "x":15.5, "y":2, "w":2.25}, {"label":"Home", "x":17.75, "y":2}, {"label":"Shift", "x":1, "y":3, "w":2.25}, {"label":"Z", "x":3.25, "y":3}, {"label":"X", "x":4.25, "y":3}, {"label":"C", "x":5.25, "y":3}, {"label":"V", "x":6.25, "y":3}, {"label":"B", "x":7.25, "y":3}, {"label":"B", "x":9.25, "y":3}, {"label":"N", "x":10.25, "y":3}, {"label":"M", "x":11.25, "y":3}, {"label":"<", "x":12.25, "y":3}, {"label":">", "x":13.25, "y":3}, {"label":"?", "x":14.25, "y":3}, {"label":"Shift", "x":15.25, "y":3, "w":1.75}, {"label":"Up", "x":17, "y":3}, {"label":"End", "x":18, "y":3}, {"label":"Ctrl", "x":1, "y":4, "w":1.5}, {"label":"Alt", "x":3.5, "y":4, "w":1.5}, {"x":5, "y":4, "w":2.25}, {"label":"Super", "x":7.25, "y":4, "w":1.25}, {"x":9.25, "y":4, "w":2}, {"label":"Alt", "x":11.25, "y":4, "w":1.5}, {"label":"Left", "x":16, "y":4}, {"label":"Down", "x":17, "y":4}, {"label":"Right", "x":18, "y":4}] }, "LAYOUT_owlet60_split_bsp": { - "key_count": 72, "layout": [{"label":"F1", "x":0.5, "y":0}, {"label":"~", "x":1.75, "y":0}, {"label":"!", "x":2.75, "y":0}, {"label":"@", "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":7.75, "y":0}, {"label":"&", "x":9.25, "y":0}, {"label":"*", "x":10.25, "y":0}, {"label":"(", "x":11.25, "y":0}, {"label":")", "x":12.25, "y":0}, {"label":"_", "x":13.25, "y":0}, {"label":"+", "x":14.25, "y":0}, {"label":"Bsp", "x":15.25, "y":0}, {"label":"Del", "x":16.25, "y":0}, {"label":"PgUp", "x":17.25, "y":0}, {"label":"F2", "x":0.25, "y":1}, {"label":"Tab", "x":1.5, "y":1, "w":1.5}, {"label":"Q", "x":3, "y":1}, {"label":"W", "x":4, "y":1}, {"label":"E", "x":5, "y":1}, {"label":"R", "x":6, "y":1}, {"label":"T", "x":7, "y":1}, {"label":"Y", "x":9, "y":1}, {"label":"U", "x":10, "y":1}, {"label":"I", "x":11, "y":1}, {"label":"O", "x":12, "y":1}, {"label":"P", "x":13, "y":1}, {"label":"{", "x":14, "y":1}, {"label":"}", "x":15, "y":1}, {"label":"|", "x":16, "y":1, "w":1.5}, {"label":"PgDn", "x":17.5, "y":1}, {"label":"F3", "x":0, "y":2}, {"label":"Caps Lock", "x":1.25, "y":2, "w":1.75}, {"label":"A", "x":3, "y":2}, {"label":"S", "x":4, "y":2}, {"label":"D", "x":5, "y":2}, {"label":"F", "x":6, "y":2}, {"label":"G", "x":7, "y":2}, {"label":"H", "x":9.5, "y":2}, {"label":"J", "x":10.5, "y":2}, {"label":"K", "x":11.5, "y":2}, {"label":"L", "x":12.5, "y":2}, {"label":":", "x":13.5, "y":2}, {"label":"\"", "x":14.5, "y":2}, {"label":"Enter", "x":15.5, "y":2, "w":2.25}, {"label":"Home", "x":17.75, "y":2}, {"label":"Shift", "x":1, "y":3, "w":2.25}, {"label":"Z", "x":3.25, "y":3}, {"label":"X", "x":4.25, "y":3}, {"label":"C", "x":5.25, "y":3}, {"label":"V", "x":6.25, "y":3}, {"label":"B", "x":7.25, "y":3}, {"label":"B", "x":9.25, "y":3}, {"label":"N", "x":10.25, "y":3}, {"label":"M", "x":11.25, "y":3}, {"label":"<", "x":12.25, "y":3}, {"label":">", "x":13.25, "y":3}, {"label":"?", "x":14.25, "y":3}, {"label":"Shift", "x":15.25, "y":3, "w":1.75}, {"label":"Up", "x":17, "y":3}, {"label":"End", "x":18, "y":3}, {"label":"Ctrl", "x":1, "y":4, "w":1.5}, {"label":"Alt", "x":3.5, "y":4, "w":1.5}, {"x":5, "y":4, "w":2.25}, {"label":"Super", "x":7.25, "y":4, "w":1.25}, {"x":9.25, "y":4, "w":2}, {"label":"Alt", "x":11.25, "y":4, "w":1.5}, {"label":"Left", "x":16, "y":4}, {"label":"Down", "x":17, "y":4}, {"label":"Right", "x":18, "y":4}] }, "LAYOUT_alice_split_bs": { - "key_count": 66, "layout": [{"label":"F1", "x":0.5, "y":0}, {"label":"~", "x":1.75, "y":0}, {"label":"!", "x":2.75, "y":0}, {"label":"@", "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":7.75, "y":0}, {"label":"&", "x":9.25, "y":0}, {"label":"*", "x":10.25, "y":0}, {"label":"(", "x":11.25, "y":0}, {"label":")", "x":12.25, "y":0}, {"label":"_", "x":13.25, "y":0}, {"label":"+", "x":14.25, "y":0}, {"label":"Bsp", "x":15.25, "y":0}, {"label":"Del", "x":16.25, "y":0}, {"label":"F2", "x":0.25, "y":1}, {"label":"Tab", "x":1.5, "y":1, "w":1.5}, {"label":"Q", "x":3, "y":1}, {"label":"W", "x":4, "y":1}, {"label":"E", "x":5, "y":1}, {"label":"R", "x":6, "y":1}, {"label":"T", "x":7, "y":1}, {"label":"Y", "x":9, "y":1}, {"label":"U", "x":10, "y":1}, {"label":"I", "x":11, "y":1}, {"label":"O", "x":12, "y":1}, {"label":"P", "x":13, "y":1}, {"label":"{", "x":14, "y":1}, {"label":"}", "x":15, "y":1}, {"label":"|", "x":16, "y":1, "w":1.5}, {"label":"F3", "x":0, "y":2}, {"label":"Caps Lock", "x":1.25, "y":2, "w":1.75}, {"label":"A", "x":3, "y":2}, {"label":"S", "x":4, "y":2}, {"label":"D", "x":5, "y":2}, {"label":"F", "x":6, "y":2}, {"label":"G", "x":7, "y":2}, {"label":"H", "x":9.5, "y":2}, {"label":"J", "x":10.5, "y":2}, {"label":"K", "x":11.5, "y":2}, {"label":"L", "x":12.5, "y":2}, {"label":":", "x":13.5, "y":2}, {"label":"\"", "x":14.5, "y":2}, {"label":"Enter", "x":15.5, "y":2, "w":2.25}, {"label":"Shift", "x":1, "y":3, "w":2.25}, {"label":"Z", "x":3.25, "y":3}, {"label":"X", "x":4.25, "y":3}, {"label":"C", "x":5.25, "y":3}, {"label":"V", "x":6.25, "y":3}, {"label":"B", "x":7.25, "y":3}, {"label":"B", "x":9.25, "y":3}, {"label":"N", "x":10.25, "y":3}, {"label":"M", "x":11.25, "y":3}, {"label":"<", "x":12.25, "y":3}, {"label":">", "x":13.25, "y":3}, {"label":"?", "x":14.25, "y":3}, {"label":"Shift", "x":15.25, "y":3, "w":1.75}, {"label":"Up", "x":17, "y":3}, {"label":"Ctrl", "x":1, "y":4, "w":1.5}, {"label":"Alt", "x":3.5, "y":4, "w":1.5}, {"x":5, "y":4, "w":2.25}, {"label":"Super", "x":7.25, "y":4, "w":1.25}, {"x":9.25, "y":4, "w":2}, {"label":"Alt", "x":11.25, "y":4, "w":1.5}, {"label":"Ctrl", "x":16.25, "y":4, "w":1.5}] }, "LAYOUT_alice": { - "key_count": 65, "layout": [{"label":"F1", "x":0.5, "y":0}, {"label":"~", "x":1.75, "y":0}, {"label":"!", "x":2.75, "y":0}, {"label":"@", "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":7.75, "y":0}, {"label":"&", "x":9.25, "y":0}, {"label":"*", "x":10.25, "y":0}, {"label":"(", "x":11.25, "y":0}, {"label":")", "x":12.25, "y":0}, {"label":"_", "x":13.25, "y":0}, {"label":"+", "x":14.25, "y":0}, {"label":"Bsp", "x":15.25, "y":0, "w":2}, {"label":"F2", "x":0.25, "y":1}, {"label":"Tab", "x":1.5, "y":1, "w":1.5}, {"label":"Q", "x":3, "y":1}, {"label":"W", "x":4, "y":1}, {"label":"E", "x":5, "y":1}, {"label":"R", "x":6, "y":1}, {"label":"T", "x":7, "y":1}, {"label":"Y", "x":9, "y":1}, {"label":"U", "x":10, "y":1}, {"label":"I", "x":11, "y":1}, {"label":"O", "x":12, "y":1}, {"label":"P", "x":13, "y":1}, {"label":"{", "x":14, "y":1}, {"label":"}", "x":15, "y":1}, {"label":"|", "x":16, "y":1, "w":1.5}, {"label":"F3", "x":0, "y":2}, {"label":"Caps Lock", "x":1.25, "y":2, "w":1.75}, {"label":"A", "x":3, "y":2}, {"label":"S", "x":4, "y":2}, {"label":"D", "x":5, "y":2}, {"label":"F", "x":6, "y":2}, {"label":"G", "x":7, "y":2}, {"label":"H", "x":9.5, "y":2}, {"label":"J", "x":10.5, "y":2}, {"label":"K", "x":11.5, "y":2}, {"label":"L", "x":12.5, "y":2}, {"label":":", "x":13.5, "y":2}, {"label":"\"", "x":14.5, "y":2}, {"label":"Enter", "x":15.5, "y":2, "w":2.25}, {"label":"Shift", "x":1, "y":3, "w":2.25}, {"label":"Z", "x":3.25, "y":3}, {"label":"X", "x":4.25, "y":3}, {"label":"C", "x":5.25, "y":3}, {"label":"V", "x":6.25, "y":3}, {"label":"B", "x":7.25, "y":3}, {"label":"B", "x":9.25, "y":3}, {"label":"N", "x":10.25, "y":3}, {"label":"M", "x":11.25, "y":3}, {"label":"<", "x":12.25, "y":3}, {"label":">", "x":13.25, "y":3}, {"label":"?", "x":14.25, "y":3}, {"label":"Shift", "x":15.25, "y":3, "w":1.75}, {"label":"Up", "x":17, "y":3}, {"label":"Ctrl", "x":1, "y":4, "w":1.5}, {"label":"Alt", "x":3.5, "y":4, "w":1.5}, {"x":5, "y":4, "w":2.25}, {"label":"Super", "x":7.25, "y":4, "w":1.25}, {"x":9.25, "y":4, "w":2}, {"label":"Alt", "x":11.25, "y":4, "w":1.5}, {"label":"Ctrl", "x":16.25, "y":4, "w":1.5}] } } diff --git a/keyboards/handwired/owlet60/keymaps/default/keymap.c b/keyboards/handwired/owlet60/keymaps/default/keymap.c index b4d0360db310..7dfc7bcaf33d 100644 --- a/keyboards/handwired/owlet60/keymaps/default/keymap.c +++ b/keyboards/handwired/owlet60/keymaps/default/keymap.c @@ -60,15 +60,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/handwired/owlet60/keymaps/oled_testing/keymap.c b/keyboards/handwired/owlet60/keymaps/oled_testing/keymap.c index f63ec18933f9..8636ac7536a3 100644 --- a/keyboards/handwired/owlet60/keymaps/oled_testing/keymap.c +++ b/keyboards/handwired/owlet60/keymaps/oled_testing/keymap.c @@ -61,24 +61,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return true; } -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} - -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { //return OLED_ROTATION_180; return OLED_ROTATION_180; } -void oled_task_user(void) { +bool oled_task_user(void) { // Host Keyboard Layer Status /*oled_write_P(PSTR("Lyr: "), false); switch (get_highest_layer(layer_state)) { @@ -104,5 +92,6 @@ void oled_task_user(void) { }; oled_write_P(qmk_logo, false); + return false; } #endif diff --git a/keyboards/handwired/owlet60/keymaps/oled_testing/rules.mk b/keyboards/handwired/owlet60/keymaps/oled_testing/rules.mk index 48a51b225024..d34d066ded93 100644 --- a/keyboards/handwired/owlet60/keymaps/oled_testing/rules.mk +++ b/keyboards/handwired/owlet60/keymaps/oled_testing/rules.mk @@ -1 +1,2 @@ -OLED_DRIVER_ENABLE = yes \ No newline at end of file +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/handwired/owlet60/owlet60.c b/keyboards/handwired/owlet60/owlet60.c index 42d24a291ae4..079beb8e4080 100644 --- a/keyboards/handwired/owlet60/owlet60.c +++ b/keyboards/handwired/owlet60/owlet60.c @@ -14,40 +14,3 @@ * along with this program. If not, see . */ #include "owlet60.h" - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - - -/* -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); - -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); - oled_task_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - -*/ diff --git a/keyboards/handwired/owlet60/rules.mk b/keyboards/handwired/owlet60/rules.mk index 65fb1259fbb6..182c47cf4086 100644 --- a/keyboards/handwired/owlet60/rules.mk +++ b/keyboards/handwired/owlet60/rules.mk @@ -2,35 +2,23 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = no # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# 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 -MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config) -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output CUSTOM_MATRIX = yes -OLED_DRIVER_ENABLE = no +OLED_ENABLE = no SRC += matrix.c diff --git a/keyboards/handwired/p1800fl/config.h b/keyboards/handwired/p1800fl/config.h deleted file mode 100644 index 793d8f19c37d..000000000000 --- a/keyboards/handwired/p1800fl/config.h +++ /dev/null @@ -1,71 +0,0 @@ -/* -Copyright 2020 marhalloweenvt - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -#include "config_common.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x3EAE -#define DEVICE_VER 0x0001 -#define MANUFACTURER marhalloweenvt -#define PRODUCT p1800fl - -/* key matrix size */ -#define MATRIX_ROWS 6 -#define MATRIX_COLS 15 - -/* - * 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 { B6, B5, B4, D7, D6, D4 } -#define MATRIX_COL_PINS { C7, F7, F6, F5, F4, F1, F0, E6, B0, B1, B2, B3, D0, D1, D2} -#define UNUSED_PINS - -/* COL2ROW, ROW2COL*/ -#define DIODE_DIRECTION COL2ROW - -#define BACKLIGHT_PIN B7 -#define BACKLIGHT_BREATHING -#define BACKLIGHT_LEVELS 5 - -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 5 - -/* define if matrix has ghost (lacks anti-ghosting diodes) */ -//#define MATRIX_HAS_GHOST - -/* 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 - -/* disable these deprecated features by default */ -#define NO_ACTION_MACRO -#define NO_ACTION_FUNCTION - -/* QMK DFU key configuration */ -#define QMK_ESC_OUTPUT C7 // usually COL -#define QMK_ESC_INPUT B6 // usually ROW \ No newline at end of file diff --git a/keyboards/handwired/p1800fl/info.json b/keyboards/handwired/p1800fl/info.json deleted file mode 100644 index 93f4e8aaebc7..000000000000 --- a/keyboards/handwired/p1800fl/info.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "keyboard_name": "p1800fl", - "url": "", - "maintainer": "marhalloweenvt", - "width": 19.5, - "height": 5.25, - "layouts": { - "LAYOUT": { - "layout": [ - {"label":"Esc", "x":0, "y":0}, - {"label":"!", "x":1, "y":0}, - {"label":"@", "x":2, "y":0}, - {"label":"#", "x":3, "y":0}, - {"label":"$", "x":4, "y":0}, - {"label":"%", "x":5, "y":0}, - {"label":"^", "x":6, "y":0}, - {"label":"&", "x":7, "y":0}, - {"label":"*", "x":8, "y":0}, - {"label":"(", "x":9, "y":0}, - {"label":")", "x":10, "y":0}, - {"label":"_", "x":11, "y":0}, - {"label":"+", "x":12, "y":0}, - {"label":"Backspace", "x":13, "y":0}, - {"label":"Backspace", "x":14, "y":0}, - {"label":"Num Lock", "x":15.5, "y":0}, - {"label":"/", "x":16.5, "y":0}, - {"label":"*", "x":17.5, "y":0}, - {"label":"-", "x":18.5, "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":"7", "x":15.5, "y":1}, - {"label":"8", "x":16.5, "y":1}, - {"label":"9", "x":17.5, "y":1}, - {"label":"+", "x":18.5, "y":1}, - {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, - {"label":"A", "x":1.75, "y":2}, - {"label":"S", "x":2.75, "y":2}, - {"label":"D", "x":3.75, "y":2}, - {"label":"F", "x":4.75, "y":2}, - {"label":"G", "x":5.75, "y":2}, - {"label":"H", "x":6.75, "y":2}, - {"label":"J", "x":7.75, "y":2}, - {"label":"K", "x":8.75, "y":2}, - {"label":"L", "x":9.75, "y":2}, - {"label":":", "x":10.75, "y":2}, - {"label":"\"", "x":11.75, "y":2}, - {"label":"Enter", "x":12.75, "y":2}, - {"label":"Enter", "x":13.75, "y":2, "w":1.25}, - {"label":"4", "x":15.5, "y":2}, - {"label":"5", "x":16.5, "y":2}, - {"label":"6", "x":17.5, "y":2}, - {"label":"+", "x":18.5, "y":2}, - {"label":"Shift", "x":0, "y":3, "w":1.25}, - {"label":"Shift", "x":1.25, "y":3}, - {"label":"Z", "x":2.25, "y":3}, - {"label":"X", "x":3.25, "y":3}, - {"label":"C", "x":4.25, "y":3}, - {"label":"V", "x":5.25, "y":3}, - {"label":"B", "x":6.25, "y":3}, - {"label":"N", "x":7.25, "y":3}, - {"label":"M", "x":8.25, "y":3}, - {"label":"<", "x":9.25, "y":3}, - {"label":">", "x":10.25, "y":3}, - {"label":"?", "x":11.25, "y":3}, - {"label":"Shift", "x":12.25, "y":3, "w":1.75}, - {"label":"Up", "x":14.25, "y":3.25}, - {"label":"1", "x":15.5, "y":3}, - {"label":"2", "x":16.5, "y":3}, - {"label":"3", "x":17.5, "y":3}, - {"label":"Enter", "x":18.5, "y":3}, - {"label":"Ctrl", "x":0, "y":4, "w":1.25}, - {"label":"Win", "x":1.25, "y":4, "w":1.25}, - {"label":"Alt", "x":2.5, "y":4, "w":1.25}, - {"label":"6.25x", "x":3.75, "y":4, "w":6.25}, - {"label":"Ctrl", "x":10, "y":4}, - {"label":"Win", "x":11, "y":4}, - {"label":"Alt", "x":12, "y":4}, - {"label":"Left", "x":13.25, "y":4.25}, - {"label":"Down", "x":14.25, "y":4.25}, - {"label":"Right", "x":15.25, "y":4.25}, - {"label":"0", "x":16.5, "y":4}, - {"label":".", "x":17.5, "y":4}, - {"label":"Enter", "x":18.5, "y":4} - ] - } - } -} diff --git a/keyboards/handwired/p1800fl/keymaps/default/keymap.c b/keyboards/handwired/p1800fl/keymaps/default/keymap.c deleted file mode 100644 index 03b6a1efd0c4..000000000000 --- a/keyboards/handwired/p1800fl/keymaps/default/keymap.c +++ /dev/null @@ -1,41 +0,0 @@ -/* Copyright 2020 marhalloweenvt - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include QMK_KEYBOARD_H - -// Defines names for use in layer keycodes and the keymap -enum layer_names { - _BASE, - _FN -}; - - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Base */ - [_BASE] = LAYOUT( - KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PEQL, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, - KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT - ), - [_FN] = LAYOUT( - KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, BL_TOGG, BL_INC, KC_PAST, RESET, - _______, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, BL_BRTG, BL_DEC, _______, EEP_RST, - _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLU, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, _______, _______, _______, _______ - ) -}; diff --git a/keyboards/handwired/p1800fl/readme.md b/keyboards/handwired/p1800fl/readme.md deleted file mode 100644 index 545bd691a421..000000000000 --- a/keyboards/handwired/p1800fl/readme.md +++ /dev/null @@ -1,15 +0,0 @@ -# p1800fl - -![p1800fl](https://i.imgur.com/GQd28rN.jpg) - -A 1800 Frow-less keyboard project from our local makers. - -* Keyboard Maintainer: [marhalloweenvt](https://github.com/marhalloweenvt) -* Hardware Supported: p1800fl -* Hardware Availability: p1800fl - -Make example for this keyboard (after setting up your build environment): - - make handwired/p1800fl:default - -See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/handwired/p1800fl/rules.mk b/keyboards/handwired/p1800fl/rules.mk deleted file mode 100644 index cde197a0db4d..000000000000 --- a/keyboards/handwired/p1800fl/rules.mk +++ /dev/null @@ -1,30 +0,0 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = qmk-dfu - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = yes # Console for debug -COMMAND_ENABLE = yes # Commands for debug and configuration -# 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 = yes # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 diff --git a/keyboards/handwired/p65rgb/config.h b/keyboards/handwired/p65rgb/config.h index c50fc2826af9..2ff3da811901 100644 --- a/keyboards/handwired/p65rgb/config.h +++ b/keyboards/handwired/p65rgb/config.h @@ -40,13 +40,61 @@ along with this program. If not, see . #define RGB_DI_PIN B4 #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended #define RGB_MATRIX_KEYPRESSES #define RGB_MATRIX_FRAMEBUFFER_EFFECTS #define RGB_MATRIX_LED_PROCESS_LIMIT 4 #define RGB_MATRIX_LED_FLUSH_LIMIT 26 #define DRIVER_LED_TOTAL 83 #define RGBLIGHT_LIMIT_VAL 180 +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ #define DEBOUNCE 5 diff --git a/keyboards/handwired/p65rgb/info.json b/keyboards/handwired/p65rgb/info.json index b3901525d324..5b688404e330 100644 --- a/keyboards/handwired/p65rgb/info.json +++ b/keyboards/handwired/p65rgb/info.json @@ -2,8 +2,6 @@ "keyboard_name": "p65rgb", "url": "", "maintainer": "marhalloweenvt", - "width": 16, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/p65rgb/rules.mk b/keyboards/handwired/p65rgb/rules.mk index 00d15f090f3d..aad4b0667b6c 100644 --- a/keyboards/handwired/p65rgb/rules.mk +++ b/keyboards/handwired/p65rgb/rules.mk @@ -2,31 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = qmk-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow RGB_MATRIX_ENABLE = yes RGB_MATRIX_DRIVER = WS2812 -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output +LTO_ENABLE = yes diff --git a/keyboards/handwired/pilcrow/config.h b/keyboards/handwired/pilcrow/config.h index a2eaaaefafd3..15f487082bc1 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -86,54 +85,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -151,5 +102,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -#endif diff --git a/keyboards/handwired/pilcrow/info.json b/keyboards/handwired/pilcrow/info.json index 824e2abbc5d8..6aac0760e2a8 100644 --- a/keyboards/handwired/pilcrow/info.json +++ b/keyboards/handwired/pilcrow/info.json @@ -2,8 +2,6 @@ "keyboard_name": "pilcrow", "url": "", "maintainer": "qmk", - "width": 10, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/pilcrow/keymaps/default/keymap.c b/keyboards/handwired/pilcrow/keymaps/default/keymap.c index 617ff4f6cda6..33a5c2ac1f0d 100644 --- a/keyboards/handwired/pilcrow/keymaps/default/keymap.c +++ b/keyboards/handwired/pilcrow/keymaps/default/keymap.c @@ -52,19 +52,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, KC_BTN1, KC_BTN2, _______, _______, _______, _______ \ ) }; - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} \ No newline at end of file diff --git a/keyboards/handwired/pilcrow/keymaps/default/rules.mk b/keyboards/handwired/pilcrow/keymaps/default/rules.mk index 3955a3ff4276..37f7e2bf93e9 100644 --- a/keyboards/handwired/pilcrow/keymaps/default/rules.mk +++ b/keyboards/handwired/pilcrow/keymaps/default/rules.mk @@ -2,16 +2,12 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) COMMAND_ENABLE = yes # 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 -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend diff --git a/keyboards/handwired/pilcrow/pilcrow.c b/keyboards/handwired/pilcrow/pilcrow.c index c8243df7bff4..03db58bb2cd5 100644 --- a/keyboards/handwired/pilcrow/pilcrow.c +++ b/keyboards/handwired/pilcrow/pilcrow.c @@ -1,28 +1 @@ #include "pilcrow.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/handwired/pilcrow/pilcrow.h b/keyboards/handwired/pilcrow/pilcrow.h index 37d2914f24f4..30576e85c030 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/pilcrow/rules.mk b/keyboards/handwired/pilcrow/rules.mk index b5e96d74bf53..df9239f247cd 100644 --- a/keyboards/handwired/pilcrow/rules.mk +++ b/keyboards/handwired/pilcrow/rules.mk @@ -2,29 +2,17 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = halfkay # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/pill60/info.json b/keyboards/handwired/pill60/info.json index c67e9f6c8db5..ce8c9dcc53df 100644 --- a/keyboards/handwired/pill60/info.json +++ b/keyboards/handwired/pill60/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Pill60", "url": "https://github.com/IktaS/Pill60", "maintainer": "IktaS ", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/pill60/keymaps/default/keymap.c b/keyboards/handwired/pill60/keymaps/default/keymap.c index 55996c018993..38c5556fe204 100644 --- a/keyboards/handwired/pill60/keymaps/default/keymap.c +++ b/keyboards/handwired/pill60/keymaps/default/keymap.c @@ -41,7 +41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE static void render_oled(void) { oled_write_P(PSTR("Pill60"), false); @@ -66,8 +66,9 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) { return rotation; } -void oled_task_user(void) { +bool oled_task_user(void) { render_oled(); + return false; } #endif diff --git a/keyboards/handwired/pill60/rules.mk b/keyboards/handwired/pill60/rules.mk index 7658a814d6e8..dddf42e3d286 100644 --- a/keyboards/handwired/pill60/rules.mk +++ b/keyboards/handwired/pill60/rules.mk @@ -1,21 +1,20 @@ # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = yes # 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 = yes # Enable keyboard backlight functionality BACKLIGHT_DRIVER = software RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output -OLED_DRIVER_ENABLE = yes +SLEEP_LED_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 ENCODER_ENABLE = yes DEFAULT_FOLDER = handwired/pill60/bluepill diff --git a/keyboards/handwired/postageboard/info.json b/keyboards/handwired/postageboard/info.json index 6389470867c1..c4489c3c8046 100644 --- a/keyboards/handwired/postageboard/info.json +++ b/keyboards/handwired/postageboard/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Postage Board", "url": "", "maintainer": "LifeIsOnTheWire", - "width": 1, - "height": 1, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/postageboard/mini/rules.mk b/keyboards/handwired/postageboard/mini/rules.mk index 824b47d6f80d..f248de9f3fce 100644 --- a/keyboards/handwired/postageboard/mini/rules.mk +++ b/keyboards/handwired/postageboard/mini/rules.mk @@ -2,26 +2,15 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/postageboard/r1/rules.mk b/keyboards/handwired/postageboard/r1/rules.mk index 824b47d6f80d..f248de9f3fce 100644 --- a/keyboards/handwired/postageboard/r1/rules.mk +++ b/keyboards/handwired/postageboard/r1/rules.mk @@ -2,26 +2,15 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/prime_exl/info.json b/keyboards/handwired/prime_exl/info.json index 6d0da451a02b..bc43b5e3f741 100644 --- a/keyboards/handwired/prime_exl/info.json +++ b/keyboards/handwired/prime_exl/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Prime_EXL", "url": "https://www.primekb.com", "maintainer": "holtenc", - "width": 20.75, - "height": 6, "layouts": { "LAYOUT": { "layout": [{"x":0,"y":0,"w":1,"h":1}, {"x":1,"y":0,"w":1,"h":1}, {"x":2,"y":0,"w":1,"h":1}, {"x":3,"y":0,"w":1,"h":1}, {"x":4,"y":0,"w":1,"h":1}, {"x":5,"y":0,"w":1,"h":1}, {"x":6.5,"y":0,"w":1,"h":1}, {"x":7.5,"y":0,"w":1,"h":1}, {"x":8.5,"y":0,"w":1,"h":1}, {"x":9.5,"y":0,"w":1,"h":1}, {"x":10.5,"y":0,"w":1,"h":1}, {"x":11.5,"y":0,"w":1,"h":1}, {"x":13.75,"y":0,"w":1,"h":1}, {"x":14.75,"y":0,"w":1,"h":1}, {"x":15.75,"y":0,"w":1,"h":1}, {"x":16.75,"y":0,"w":1,"h":1}, {"x":17.75,"y":0,"w":1,"h":1}, {"x":18.75,"y":0,"w":2,"h":1}, {"x":0,"y":1,"w":1,"h":1}, {"x":1,"y":1,"w":1,"h":1}, {"x":2,"y":1,"w":1,"h":1}, {"x":3,"y":1,"w":1,"h":1}, {"x":4,"y":1,"w":1,"h":1}, {"x":5,"y":1,"w":1,"h":1}, {"x":6.5,"y":1,"w":1.25,"h":1}, {"x":7.75,"y":1,"w":1,"h":1}, {"x":8.75,"y":1,"w":1,"h":1}, {"x":9.75,"y":1,"w":1,"h":1}, {"x":10.75,"y":1,"w":1,"h":1}, {"x":11.75,"y":1,"w":1,"h":1}, {"x":14,"y":1,"w":1,"h":1}, {"x":15,"y":1,"w":1,"h":1}, {"x":16,"y":1,"w":1,"h":1}, {"x":17,"y":1,"w":1,"h":1}, {"x":18,"y":1,"w":1,"h":1}, {"x":19,"y":1,"w":1.75,"h":1}, {"x":0,"y":2,"w":1,"h":1}, {"x":1,"y":2,"w":1,"h":1}, {"x":2,"y":2,"w":1,"h":1}, {"x":3,"y":2,"w":1,"h":1}, {"x":4,"y":2,"w":1,"h":1}, {"x":5,"y":2,"w":1,"h":1}, {"x":6.5,"y":2,"w":1.75,"h":1}, {"x":8.25,"y":2,"w":1,"h":1}, {"x":9.25,"y":2,"w":1,"h":1}, {"x":10.25,"y":2,"w":1,"h":1}, {"x":11.25,"y":2,"w":1,"h":1}, {"x":12.25,"y":2,"w":1,"h":1}, {"x":13.5,"y":2,"w":1,"h":1}, {"x":14.5,"y":2,"w":1,"h":1}, {"x":15.5,"y":2,"w":1,"h":1}, {"x":16.5,"y":2,"w":1,"h":1}, {"x":17.5,"y":2,"w":1,"h":1}, {"x":18.5,"y":2,"w":1,"h":1}, {"x":19.5,"y":2,"w":1.25,"h":1}, {"x":0,"y":3,"w":1,"h":1}, {"x":1,"y":3,"w":1,"h":1}, {"x":2,"y":3,"w":1,"h":1}, {"x":3,"y":3,"w":1,"h":1}, {"x":4,"y":3,"w":1,"h":1}, {"x":5,"y":3,"w":1,"h":1}, {"x":6.5,"y":3,"w":1.25,"h":1}, {"x":7.75,"y":3,"w":1.25,"h":1}, {"x":9,"y":3,"w":1,"h":1}, {"x":10,"y":3,"w":1,"h":1}, {"x":11,"y":3,"w":2,"h":1}, {"x":13.5,"y":3,"w":2,"h":1}, {"x":15.5,"y":3,"w":1,"h":1}, {"x":16.5,"y":3,"w":1,"h":1}, {"x":17.5,"y":3,"w":1.5,"h":1}, {"x":19,"y":3,"w":1.5,"h":1}, {"x":0,"y":4,"w":1,"h":1}, {"x":1,"y":4,"w":1,"h":1}, {"x":2,"y":4,"w":1,"h":1}, {"x":3,"y":4,"w":1,"h":1}, {"x":4,"y":4,"w":1,"h":1}, {"x":5,"y":4,"w":1,"h":1}] diff --git a/keyboards/handwired/prime_exl/keymaps/default/keymap.c b/keyboards/handwired/prime_exl/keymaps/default/keymap.c index 7cf91970816c..324d600149a2 100644 --- a/keyboards/handwired/prime_exl/keymaps/default/keymap.c +++ b/keyboards/handwired/prime_exl/keymaps/default/keymap.c @@ -106,11 +106,6 @@ void matrix_init_user(void) { writePinHigh(B5); } -void matrix_scan_user(void) { - -} - - void led_set_user(uint8_t usb_led) { if (IS_LED_ON(usb_led, USB_LED_NUM_LOCK)) { writePinHigh(B6); diff --git a/keyboards/handwired/prime_exl/keymaps/via/keymap.c b/keyboards/handwired/prime_exl/keymaps/via/keymap.c index 1b62d25ba48d..0e6802996df1 100644 --- a/keyboards/handwired/prime_exl/keymaps/via/keymap.c +++ b/keyboards/handwired/prime_exl/keymaps/via/keymap.c @@ -64,11 +64,6 @@ void matrix_init_user(void) { writePinHigh(B5); } -void matrix_scan_user(void) { - -} - - void led_set_user(uint8_t usb_led) { if (IS_LED_ON(usb_led, USB_LED_NUM_LOCK)) { writePinHigh(B6); @@ -90,7 +85,7 @@ void led_set_user(uint8_t usb_led) { } //function for layer indicator LED -uint32_t layer_state_set_user(uint32_t state) +layer_state_t layer_state_set_user(layer_state_t state) { if (biton32(state) == 1) { writePinHigh(C6); diff --git a/keyboards/handwired/prime_exl/prime_exl.c b/keyboards/handwired/prime_exl/prime_exl.c index bae606ffbf5e..e85991c537be 100644 --- a/keyboards/handwired/prime_exl/prime_exl.c +++ b/keyboards/handwired/prime_exl/prime_exl.c @@ -14,31 +14,3 @@ * along with this program. If not, see . */ #include "prime_exl.h" -/* -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} -*/ \ No newline at end of file diff --git a/keyboards/handwired/prime_exl/prime_exl.h b/keyboards/handwired/prime_exl/prime_exl.h index 03524da3c2a6..1c9a8060fc69 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 . */ -//#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/prime_exl/rules.mk b/keyboards/handwired/prime_exl/rules.mk index c3e319a13849..cb4135646a54 100644 --- a/keyboards/handwired/prime_exl/rules.mk +++ b/keyboards/handwired/prime_exl/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) +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 -# 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 = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config) -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/prime_exl_plus/info.json b/keyboards/handwired/prime_exl_plus/info.json index 3fca8c829cdc..f54de6f84086 100644 --- a/keyboards/handwired/prime_exl_plus/info.json +++ b/keyboards/handwired/prime_exl_plus/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Prime_EXL Plus", "url": "https://www.primekb.com", "maintainer": "holtenc", - "width": 21, - "height": 5, "layouts": { "LAYOUT": { "layout": [{"label":"K040", "x":0, "y":0}, {"label":"K050", "x":1, "y":0}, {"label":"K041", "x":2, "y":0}, {"label":"K051", "x":3, "y":0}, {"label":"K042", "x":4, "y":0}, {"label":"K052", "x":5, "y":0}, {"label":"K043", "x":6.5, "y":0}, {"label":"K053", "x":7.5, "y":0}, {"label":"K044", "x":8.5, "y":0}, {"label":"K054", "x":9.5, "y":0}, {"label":"K045", "x":10.5, "y":0}, {"label":"K055", "x":11.5, "y":0}, {"label":"K046", "x":14, "y":0}, {"label":"K056", "x":15, "y":0}, {"label":"K047", "x":16, "y":0}, {"label":"K057", "x":17, "y":0}, {"label":"K048", "x":18, "y":0}, {"label":"K058", "x":19, "y":0, "w":2}, {"label":"K030", "x":0, "y":1}, {"label":"K060", "x":1, "y":1}, {"label":"K031", "x":2, "y":1}, {"label":"K061", "x":3, "y":1}, {"label":"K032", "x":4, "y":1}, {"label":"K062", "x":5, "y":1}, {"label":"K033", "x":6.5, "y":1}, {"label":"K063", "x":7.5, "y":1}, {"label":"K034", "x":8.5, "y":1}, {"label":"K064", "x":9.5, "y":1}, {"label":"K035", "x":10.5, "y":1}, {"label":"K065", "x":11.5, "y":1}, {"label":"K036", "x":14, "y":1}, {"label":"K066", "x":15, "y":1}, {"label":"K037", "x":16, "y":1}, {"label":"K067", "x":17, "y":1}, {"label":"K038", "x":18, "y":1}, {"label":"K068", "x":19, "y":1}, {"label":"K039", "x":20, "y":1}, {"label":"K020", "x":0, "y":2}, {"label":"K070", "x":1, "y":2}, {"label":"K021", "x":2, "y":2}, {"label":"K071", "x":3, "y":2}, {"label":"K022", "x":4, "y":2}, {"label":"K072", "x":5, "y":2}, {"label":"K023", "x":6.5, "y":2, "w":1.25}, {"label":"K073", "x":7.75, "y":2}, {"label":"K024", "x":8.75, "y":2}, {"label":"K074", "x":9.75, "y":2}, {"label":"K025", "x":10.75, "y":2}, {"label":"K075", "x":11.75, "y":2}, {"label":"K026", "x":14.25, "y":2}, {"label":"K076", "x":15.25, "y":2}, {"label":"K027", "x":16.25, "y":2}, {"label":"K077", "x":17.25, "y":2}, {"label":"K028", "x":18.25, "y":2}, {"label":"K029", "x":19.25, "y":2, "w":1.75}, {"label":"K010", "x":0, "y":3}, {"label":"K080", "x":1, "y":3}, {"label":"K011", "x":2, "y":3}, {"label":"K081", "x":3, "y":3}, {"label":"K012", "x":4, "y":3}, {"label":"K082", "x":5, "y":3}, {"label":"K013", "x":6.5, "y":3, "w":1.75}, {"label":"K083", "x":8.25, "y":3}, {"label":"K014", "x":9.25, "y":3}, {"label":"K084", "x":10.25, "y":3}, {"label":"K015", "x":11.25, "y":3}, {"label":"K085", "x":12.25, "y":3}, {"label":"K016", "x":13.75, "y":3}, {"label":"K086", "x":14.75, "y":3}, {"label":"K017", "x":15.75, "y":3}, {"label":"K087", "x":16.75, "y":3}, {"label":"K018", "x":17.75, "y":3}, {"label":"K088", "x":18.75, "y":3}, {"label":"K019", "x":19.75, "y":3, "w":1.25}, {"label":"K000", "x":0, "y":4}, {"label":"K090", "x":1, "y":4}, {"label":"K001", "x":2, "y":4}, {"label":"K091", "x":3, "y":4}, {"label":"K002", "x":4, "y":4}, {"label":"K092", "x":5, "y":4}, {"label":"K003", "x":6.5, "y":4, "w":1.25}, {"label":"K093", "x":7.75, "y":4, "w":1.25}, {"label":"K004", "x":10.25, "y":4, "w":1.25}, {"label":"K095", "x":11.5, "y":4, "w":1.75}, {"label":"K006", "x":13.75, "y":4, "w":1.75}, {"label":"K097", "x":15.5, "y":4, "w":1.25}, {"label":"K098", "x":18.5, "y":4, "w":1.25}, {"label":"K009", "x":19.75, "y":4, "w":1.25}] diff --git a/keyboards/handwired/prime_exl_plus/rules.mk b/keyboards/handwired/prime_exl_plus/rules.mk index 0a36543099c5..0d5a61e25551 100644 --- a/keyboards/handwired/prime_exl_plus/rules.mk +++ b/keyboards/handwired/prime_exl_plus/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# 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 -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/prkl30/feather/config.h b/keyboards/handwired/prkl30/feather/config.h index 6a9bce38cd01..875b3d740113 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 366e53cf7e4a..9f1b07d81906 100644 --- a/keyboards/handwired/prkl30/feather/rules.mk +++ b/keyboards/handwired/prkl30/feather/rules.mk @@ -5,27 +5,21 @@ MCU = atmega32u4 F_CPU = 8000000 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BLUETOOTH = AdafruitBLE -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite ENCODER_ENABLE = yes MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # Audio control and System control 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 - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work 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/prkl30/info.json b/keyboards/handwired/prkl30/info.json index d343f17e2d5f..c558d2179475 100644 --- a/keyboards/handwired/prkl30/info.json +++ b/keyboards/handwired/prkl30/info.json @@ -2,8 +2,6 @@ "keyboard_name": "prkl30", "url": "https://github.com/ErkHal/prkl30", "maintainer": "ErkHal", - "width": 13.5, - "height": 3, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0, "w":1.5}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":12.25, "y":1, "w":1.25, "h":2}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2, "w":1.25}] diff --git a/keyboards/handwired/prkl30/promicro/rules.mk b/keyboards/handwired/prkl30/promicro/rules.mk index aa303a4bf987..e0637a935236 100644 --- a/keyboards/handwired/prkl30/promicro/rules.mk +++ b/keyboards/handwired/prkl30/promicro/rules.mk @@ -2,25 +2,17 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite ENCODER_ENABLE = yes MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control 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 - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no AUDIO_ENABLE = no # This can be enabled if a speaker is connected to the expansion port. Not compatible with RGBLIGHT below diff --git a/keyboards/handwired/promethium/config.h b/keyboards/handwired/promethium/config.h index ba2c25ea1d03..612675c63a07 100644 --- a/keyboards/handwired/promethium/config.h +++ b/keyboards/handwired/promethium/config.h @@ -20,23 +20,26 @@ along with this program. If not, see . #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0x17EF // Lenovo +#define VENDOR_ID 0x17EF // Lenovo //#define PRODUCT_ID 0x6009 // ThinkPad Keyboard with TrackPoint //#define PRODUCT_ID 0x6047 // ThinkPad Compact USB Keyboard with TrackPoint -#define PRODUCT_ID 0x6048 // ThinkPad Compact Bluetooth Keyboard with TrackPoint +#define PRODUCT_ID 0x6048 // ThinkPad Compact Bluetooth Keyboard with TrackPoint //#define PRODUCT_ID 0x6067 // ThinkPad Pro Docking Station -#define DEVICE_VER 0x0001 -#define MANUFACTURER Priyadi -#define PRODUCT Promethium Keyboard +#define DEVICE_VER 0x0001 +#define MANUFACTURER Priyadi +#define PRODUCT Promethium Keyboard /* key matrix size */ -#define MATRIX_COLS 6 -#define MATRIX_ROWS 9 +#define MATRIX_COLS 6 +#define MATRIX_ROWS 9 /* default pin-out */ -#define MATRIX_COL_PINS { F4, F1, F0, D6, D0, D1 } -#define MATRIX_ROW_PINS { F5, F6, F7 } -#define TRACKPOINT_PINS { B7, B6, D7 } +#define MATRIX_COL_PINS \ + { F4, F1, F0, D6, D0, D1 } +#define MATRIX_ROW_PINS \ + { F5, F6, F7, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN } +#define TRACKPOINT_PINS \ + { B7, B6, D7 } #define UNUSED_PINS /* @@ -48,15 +51,15 @@ along with this program. If not, see . * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) * -*/ -#define DIODE_DIRECTION COL2ROW + */ +#define DIODE_DIRECTION COL2ROW // #define BACKLIGHT_PIN B7 // #define BACKLIGHT_BREATHING // #define BACKLIGHT_LEVELS 3 /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 5 +#define DEBOUNCE 5 /* define if matrix has ghost (lacks anti-ghosting diodes) */ //#define MATRIX_HAS_GHOST @@ -89,46 +92,21 @@ along with this program. If not, see . */ //#define FORCE_NKRO +/* + * Magic Key Options + * + * Magic keys are hotkey commands that allow control over firmware functions of + * the keyboard. They are best used in combination with the HID Listen program, + * found here: https://www.pjrc.com/teensy/hid_listen.html + * + * The options below allow the magic key functionality to be changed. This is + * useful if your keyboard/keypad is missing keys and you want magic key support. + * + */ + /* key combination for command */ -#define IS_COMMAND() ( \ - get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT) | MOD_BIT(KC_LCTRL) | MOD_BIT(KC_RCTRL)) \ -) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z +#define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT) | MOD_BIT(KC_LCTRL) | MOD_BIT(KC_RCTRL))) + /* * Feature disable options @@ -149,178 +127,160 @@ along with this program. If not, see . //#define NO_ACTION_FUNCTION #define PS2_MOUSE_INIT_DELAY 2000 -#define BATTERY_POLL 30000 -#define MAX_VOLTAGE 4.2 -#define MIN_VOLTAGE 3.2 +#define BATTERY_POLL 30000 +#define MAX_VOLTAGE 4.2 +#define MIN_VOLTAGE 3.2 -#ifndef __ASSEMBLER__ // assembler doesn't like enum in .h file +#ifndef __ASSEMBLER__ // assembler doesn't like enum in .h file enum led_sequence { - LED_IND_LINUX, - LED_IND_APPLE, - LED_IND_WINDOWS, - LED_IND_QWERTY, - LED_IND_ALT, - LED_IND_AUDIO, - LED_IND_BLUETOOTH, - LED_IND_USB, - - LED_IND_BATTERY, - LED_IND_CAPSLOCK, - LED_IND_GUI, - LED_IND_FUN, - LED_IND_NUM, - LED_IND_PUNC, - LED_IND_EMOJI, - LED_IND_GREEK, - - LED_BKSP, - LED_ENT, - LED_RSFT, - LED_RCTL, - - LED_RALT, - LED_SLSH, - LED_SCLN, - LED_P, - - LED_O, - LED_L, - LED_DOT, - LED_RGUI, - - LED_GREEK, - LED_COMM, - LED_K, - LED_I, - - LED_U, - LED_J, - LED_M, - LED_FUN, - - LED_RSPC, - LED_N, - LED_HH, - LED_Y, - - LED_TRACKPOINT3, - LED_TRACKPOINT2, - LED_TRACKPOINT1, - - LED_T, - LED_G, - LED_B, - LED_LSPC, - - LED_NUM, - LED_V, - LED_F, - LED_R, - - LED_E, - LED_D, - LED_C, - LED_EMPTY, - - LED_LGUI, - LED_X, - LED_S, - LED_W, - - LED_Q, - LED_A, - LED_Z, - LED_LALT, - - LED_LCTL, - LED_LSFT, - LED_ESC, - LED_TAB, - - LED_TOTAL + LED_IND_LINUX, + LED_IND_APPLE, + LED_IND_WINDOWS, + LED_IND_QWERTY, + LED_IND_ALT, + LED_IND_AUDIO, + LED_IND_BLUETOOTH, + LED_IND_USB, + + LED_IND_BATTERY, + LED_IND_CAPSLOCK, + LED_IND_GUI, + LED_IND_FUN, + LED_IND_NUM, + LED_IND_PUNC, + LED_IND_EMOJI, + LED_IND_GREEK, + + LED_BKSP, + LED_ENT, + LED_RSFT, + LED_RCTL, + + LED_RALT, + LED_SLSH, + LED_SCLN, + LED_P, + + LED_O, + LED_L, + LED_DOT, + LED_RGUI, + + LED_GREEK, + LED_COMM, + LED_K, + LED_I, + + LED_U, + LED_J, + LED_M, + LED_FUN, + + LED_RSPC, + LED_N, + LED_HH, + LED_Y, + + LED_TRACKPOINT3, + LED_TRACKPOINT2, + LED_TRACKPOINT1, + + LED_T, + LED_G, + LED_B, + LED_LSPC, + + LED_NUM, + LED_V, + LED_F, + LED_R, + + LED_E, + LED_D, + LED_C, + LED_EMPTY, + + LED_LGUI, + LED_X, + LED_S, + LED_W, + + LED_Q, + LED_A, + LED_Z, + LED_LALT, + + LED_LCTL, + LED_LSFT, + LED_ESC, + LED_TAB, + + LED_TOTAL }; -#define RGB_DI_PIN B5 -#define RGBSPS_NUM LED_TOTAL +# define RGB_DI_PIN B5 +# define RGBSPS_NUM LED_TOTAL #endif /* 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_INT_INIT() do { \ - EICRA |= ((1< @@ -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 4b96e2f691c9..29b8e104f5b0 100644 --- a/keyboards/handwired/promethium/rules.mk +++ b/keyboards/handwired/promethium/rules.mk @@ -5,40 +5,26 @@ MCU = atmega32u4 F_CPU = 8000000 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = no # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -UNICODEMAP_ENABLE = yes -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. PS2_MOUSE_ENABLE = yes PS2_USE_INT = yes -API_SYSEX_ENABLE = no CUSTOM_MATRIX = 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 +BLUETOOTH_ENABLE = yes +BLUETOOTH_DRIVER = AdafruitBLE SRC += ws2812.c SRC += rgbsps.c diff --git a/keyboards/handwired/pterodactyl/config.h b/keyboards/handwired/pterodactyl/config.h index 9f5f1412b8c5..044fa12f780f 100644 --- a/keyboards/handwired/pterodactyl/config.h +++ b/keyboards/handwired/pterodactyl/config.h @@ -60,7 +60,3 @@ along with this program. If not, see . /* 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/info.json b/keyboards/handwired/pterodactyl/info.json index 5de1d369c82e..6d396dc0b490 100644 --- a/keyboards/handwired/pterodactyl/info.json +++ b/keyboards/handwired/pterodactyl/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Pterodactyl", "url": "https://marcyoung.us/post/pterodactyl/", "maintainer": "Marcus Young", - "width": 17, - "height": 8, "layouts": { "LAYOUT_pterodactyl": { - "key_count": 70, "layout": [ {"x":0, "y":0}, {"x":1, "y":0}, diff --git a/keyboards/handwired/pterodactyl/matrix.c b/keyboards/handwired/pterodactyl/matrix.c index 507f640bd0f3..21e6a128dfd4 100644 --- a/keyboards/handwired/pterodactyl/matrix.c +++ b/keyboards/handwired/pterodactyl/matrix.c @@ -143,7 +143,7 @@ void matrix_init(void) void init_expander(void) { if (! i2c_initialized) { i2c_init(); - wait_us(1000000); + wait_ms(1000); } if (! expander_input_pin_mask) { diff --git a/keyboards/handwired/pterodactyl/rules.mk b/keyboards/handwired/pterodactyl/rules.mk index 271b89606cb4..43c71d805c1c 100644 --- a/keyboards/handwired/pterodactyl/rules.mk +++ b/keyboards/handwired/pterodactyl/rules.mk @@ -10,22 +10,20 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # 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 = 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/pteron/info.json b/keyboards/handwired/pteron/info.json index 7b3b1b696f84..346d7c39bd14 100644 --- a/keyboards/handwired/pteron/info.json +++ b/keyboards/handwired/pteron/info.json @@ -2,8 +2,6 @@ "keyboard_name": "pteron", "url": "", "maintainer": "FSund", - "width": 17, - "height": 5.95, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/pteron/keymaps/FSund/keymap.c b/keyboards/handwired/pteron/keymaps/FSund/keymap.c index a52e84297777..98acdcf33912 100644 --- a/keyboards/handwired/pteron/keymaps/FSund/keymap.c +++ b/keyboards/handwired/pteron/keymaps/FSund/keymap.c @@ -65,9 +65,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_QWERTY] = LAYOUT( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_AA, - KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_OE, KC_AE, + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_AA, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_OE, KC_AE, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSHIFT, LOWER, KC_SPC, KC_LALT, KC_LGUI, KC_RGUI, KC_RALT, KC_ENT, RAISE ), @@ -87,23 +87,23 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_LOWER] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, F_BSLH, F_FSLH, F_SBRL, F_SBRR, F_EQL, KC_DEL, - KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, F_ABRL, F_ABRR, F_RBRL, F_RBRR, F_TIMES, F_TILD, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, F_BSLH, F_FSLH, F_SBRL, F_SBRR, F_EQL, KC_DEL, + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, F_ABRL, F_ABRR, F_RBRL, F_RBRR, F_TIMES, F_TILD, _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, F_CBRL, F_CBRR, F_PLUS, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), [_RAISE] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_AA, - F_SECT, S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), F_QUEST, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, F_APOS, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_AA, + F_SECT, S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), F_QUEST, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, F_APOS, _______, S(KC_6), G(KC_2), G(KC_3), G(KC_4), G(KC_5), F_HAT, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), [_ADJUST] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, F_UML, F_GRAVE, F_ACUTE, _______, RESET, _______, _______, _______, _______, KC_PSCR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, _______, @@ -111,6 +111,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } diff --git a/keyboards/handwired/pteron/rules.mk b/keyboards/handwired/pteron/rules.mk index 648387460ba2..4932f8037706 100644 --- a/keyboards/handwired/pteron/rules.mk +++ b/keyboards/handwired/pteron/rules.mk @@ -2,26 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) +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 = 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 RGBLIGHT_ENABLE = no -UNICODE_ENABLE = no -UNICODEMAP_ENABLE = no diff --git a/keyboards/handwired/pteron38/info.json b/keyboards/handwired/pteron38/info.json index 58b46da7e891..e474d988b4e8 100644 --- a/keyboards/handwired/pteron38/info.json +++ b/keyboards/handwired/pteron38/info.json @@ -2,8 +2,6 @@ "keyboard_name": "pteron38", "url": "", "maintainer": "fidelcoria", - "width": 17, - "height": 5.95, "layouts": { "LAYOUT_split_3x5_4": { "layout": [ diff --git a/keyboards/handwired/pteron38/rules.mk b/keyboards/handwired/pteron38/rules.mk index 12c8a600591c..6a0268d0e31a 100644 --- a/keyboards/handwired/pteron38/rules.mk +++ b/keyboards/handwired/pteron38/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/pteron44/info.json b/keyboards/handwired/pteron44/info.json index ed8791b067cb..a640adc9c607 100644 --- a/keyboards/handwired/pteron44/info.json +++ b/keyboards/handwired/pteron44/info.json @@ -2,8 +2,6 @@ "keyboard_name": "pteron44", "url": "", "maintainer": "fidelcoria", - "width": 17, - "height": 5.95, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/pteron44/rules.mk b/keyboards/handwired/pteron44/rules.mk index 12c8a600591c..6a0268d0e31a 100644 --- a/keyboards/handwired/pteron44/rules.mk +++ b/keyboards/handwired/pteron44/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/pytest/basic/info.json b/keyboards/handwired/pytest/basic/info.json index ed052a14a3ee..af57447d30da 100644 --- a/keyboards/handwired/pytest/basic/info.json +++ b/keyboards/handwired/pytest/basic/info.json @@ -1,10 +1,9 @@ { - "maintainer": "qmk", - "layouts": { - "LAYOUT_custom": { - "layout": [ - { "label": "KC_Q", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 } - ] + "layouts": { + "LAYOUT_custom": { + "layout": [ + { "label": "KC_Q", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 } + ] + } } - } } diff --git a/keyboards/handwired/pytest/config.h b/keyboards/handwired/pytest/config.h index 64cf35312640..f03597a7d4e4 100644 --- a/keyboards/handwired/pytest/config.h +++ b/keyboards/handwired/pytest/config.h @@ -2,13 +2,6 @@ #include "config_common.h" -/* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x6465 -#define DEVICE_VER 0x0001 -#define MANUFACTURER none -#define PRODUCT pytest - /* key matrix size */ #define MATRIX_ROWS 1 #define MATRIX_COLS 1 diff --git a/keyboards/handwired/pytest/info.json b/keyboards/handwired/pytest/info.json new file mode 100644 index 000000000000..5c941af9bf55 --- /dev/null +++ b/keyboards/handwired/pytest/info.json @@ -0,0 +1,10 @@ +{ + "keyboard_name": "pytest", + "manufacturer": "none", + "maintainer": "qmk", + "usb": { + "vid": "0xFEED", + "pid": "0x6465", + "device_ver": "0x0001" + } +} diff --git a/keyboards/xd002/.noci b/keyboards/handwired/pytest/macro/.noci similarity index 100% rename from keyboards/xd002/.noci rename to keyboards/handwired/pytest/macro/.noci diff --git a/keyboards/handwired/pytest/macro/info.json b/keyboards/handwired/pytest/macro/info.json new file mode 100644 index 000000000000..ed052a14a3ee --- /dev/null +++ b/keyboards/handwired/pytest/macro/info.json @@ -0,0 +1,10 @@ +{ + "maintainer": "qmk", + "layouts": { + "LAYOUT_custom": { + "layout": [ + { "label": "KC_Q", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 } + ] + } + } +} diff --git a/keyboards/handwired/pytest/macro/keymaps/default/keymap.json b/keyboards/handwired/pytest/macro/keymaps/default/keymap.json new file mode 100644 index 000000000000..f319d862d833 --- /dev/null +++ b/keyboards/handwired/pytest/macro/keymaps/default/keymap.json @@ -0,0 +1,15 @@ +{ + "keyboard": "handwired/pytest/basic", + "keymap": "default_json", + "layout": "LAYOUT_ortho_1x1", + "layers": [["MACRO_0"]], + "macros": [ + [ + "Hello, World!", + {"action":"tap", "keycodes":["ENTER"]} + ] + ], + "author": "qmk", + "notes": "This file is a keymap.json file for handwired/pytest/basic", + "version": 1 +} diff --git a/keyboards/xd60/rev2/.noci b/keyboards/handwired/pytest/macro/readme.md similarity index 100% rename from keyboards/xd60/rev2/.noci rename to keyboards/handwired/pytest/macro/readme.md diff --git a/keyboards/handwired/pytest/macro/rules.mk b/keyboards/handwired/pytest/macro/rules.mk new file mode 100644 index 000000000000..6b42774dbffb --- /dev/null +++ b/keyboards/handwired/pytest/macro/rules.mk @@ -0,0 +1 @@ +MCU = atmega32u4 diff --git a/keyboards/handwired/qc60/info.json b/keyboards/handwired/qc60/info.json index c047d5030719..f2e12ebccbaf 100644 --- a/keyboards/handwired/qc60/info.json +++ b/keyboards/handwired/qc60/info.json @@ -2,11 +2,8 @@ "keyboard_name": "QC60", "url": "", "maintainer": "coarse", - "width": 16, - "height": 5, "layouts": { "LAYOUT": { - "key_count": 67, "layout": [ {"label":"L00", "x":0, "y":0}, {"label":"L01", "x":1, "y":0}, @@ -88,7 +85,6 @@ }, "LAYOUT_ansi_default": { - "key_count": 64, "layout": [ {"label":"Esc", "x":0, "y":0}, {"label":"1", "x":1, "y":0}, @@ -167,7 +163,6 @@ }, "LAYOUT_ansi_alt": { - "key_count": 63, "layout": [ {"label":"L00", "x":0, "y":0}, {"label":"L01", "x":1, "y":0}, @@ -245,7 +240,6 @@ }, "LAYOUT_iso_default": { - "key_count": 65, "layout": [ {"label":"L00", "x":0, "y":0}, {"label":"L01", "x":1, "y":0}, @@ -325,7 +319,6 @@ }, "LAYOUT_iso_alt": { - "key_count": 64, "layout": [ {"label":"L00", "x":0, "y":0}, {"label":"L01", "x":1, "y":0}, @@ -404,7 +397,6 @@ }, "LAYOUT_hhkb_default": { - "key_count": 63, "layout": [ {"label":"L00", "x":0, "y":0}, {"label":"L01", "x":1, "y":0}, @@ -482,7 +474,6 @@ }, "LAYOUT_hhkb_split_lshift": { - "key_count": 64, "layout": [ {"label":"L00", "x":0, "y":0}, {"label":"L01", "x":1, "y":0}, @@ -561,7 +552,6 @@ }, "LAYOUT_wkl_default": { - "key_count": 61, "layout": [ {"label":"L00", "x":0, "y":0}, {"label":"L01", "x":1, "y":0}, diff --git a/keyboards/handwired/qc60/proto/proto.c b/keyboards/handwired/qc60/proto/proto.c index a6031d772d1c..fe08df85999b 100644 --- a/keyboards/handwired/qc60/proto/proto.c +++ b/keyboards/handwired/qc60/proto/proto.c @@ -15,7 +15,3 @@ */ #include "qc60.h" - -void matrix_init_kb(void) { - matrix_init_user(); -}; diff --git a/keyboards/handwired/qc60/qc60.h b/keyboards/handwired/qc60/qc60.h index 944ec10f5e19..e26811ae7286 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/qc60/rules.mk b/keyboards/handwired/qc60/rules.mk index 8859f5012d33..3d2c0f19d2a9 100644 --- a/keyboards/handwired/qc60/rules.mk +++ b/keyboards/handwired/qc60/rules.mk @@ -2,35 +2,22 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = no # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. SPLIT_KEYBOARD = yes -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - DEFAULT_FOLDER = handwired/qc60/proto diff --git a/keyboards/handwired/reddot/config.h b/keyboards/handwired/reddot/config.h index 912cc6fc5f58..196f08f6f5f6 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -84,54 +83,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -149,5 +100,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -#endif diff --git a/keyboards/handwired/reddot/info.json b/keyboards/handwired/reddot/info.json index 1fcc8677e86a..7551041e7128 100644 --- a/keyboards/handwired/reddot/info.json +++ b/keyboards/handwired/reddot/info.json @@ -2,8 +2,6 @@ "keyboard_name": "handwired/reddot", "url": "", "maintainer": "qmk", - "width": 20.5, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/reddot/keymaps/default/keymap.c b/keyboards/handwired/reddot/keymaps/default/keymap.c index 246a03b4d79b..9ac394f7f7f0 100644 --- a/keyboards/handwired/reddot/keymaps/default/keymap.c +++ b/keyboards/handwired/reddot/keymaps/default/keymap.c @@ -5,18 +5,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT( KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TAB, KC_CAPS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, TG(1), KC_PSLS, KC_PAST, KC_PMNS, \ - KC_LALT, FR_AMP, FR_EACU, FR_QUOT, FR_APOS, FR_LPRN, KC_BSPC, KC_DEL, FR_MINS, FR_EGRV, FR_UNDS, FR_CCED, FR_AGRV, FR_RPRN, FR_EQL, KC_INS, KC_HOME, KC_PGUP, \ + KC_LALT, FR_AMPR, FR_EACU, FR_DQUO, FR_QUOT, FR_LPRN, KC_BSPC, KC_DEL, FR_MINS, FR_EGRV, FR_UNDS, FR_CCED, FR_AGRV, FR_RPRN, FR_EQL, KC_INS, KC_HOME, KC_PGUP, \ KC_LGUI, FR_A, FR_Z, KC_E, KC_R, KC_T, KC_LSFT, KC_ENT, KC_ENT, KC_Y, KC_U, KC_I, KC_O, KC_P, FR_CIRC, FR_DLR, KC_DEL, KC_END, KC_PGDN, KC_PPLS, \ KC_LCTL, FR_Q, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, FR_M, FR_UGRV, FR_ASTR, KC_P1, KC_UP, KC_P3, \ - FR_LESS, FR_W, KC_X, KC_C, KC_V, KC_B, KC_SPC, KC_SPC, KC_N, FR_COMM, FR_SCLN, FR_COLN, FR_EXLM, KC_ALGR, KC_LEFT, KC_DOWN, KC_RGHT, KC_PENT \ + FR_LABK, FR_W, KC_X, KC_C, KC_V, KC_B, KC_SPC, KC_SPC, KC_N, FR_COMM, FR_SCLN, FR_COLN, FR_EXLM, KC_ALGR, KC_LEFT, KC_DOWN, KC_RGHT, KC_PENT \ ), [1] = LAYOUT( KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TAB, KC_CAPS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_PSLS, KC_PAST, KC_PMNS, \ - KC_LALT, FR_AMP, FR_EACU, FR_QUOT, FR_APOS, FR_LPRN, KC_BSPC, KC_DEL, FR_MINS, FR_EGRV, FR_UNDS, FR_CCED, FR_AGRV, FR_RPRN, FR_EQL, KC_7, KC_8, KC_9, \ + KC_LALT, FR_AMPR, FR_EACU, FR_DQUO, FR_QUOT, FR_LPRN, KC_BSPC, KC_DEL, FR_MINS, FR_EGRV, FR_UNDS, FR_CCED, FR_AGRV, FR_RPRN, FR_EQL, KC_7, KC_8, KC_9, \ KC_LGUI, FR_A, FR_Z, KC_E, KC_R, KC_T, KC_LSFT, KC_ENT, KC_ENT, KC_Y, KC_U, KC_I, KC_O, KC_P, FR_CIRC, FR_DLR, KC_4, KC_5, KC_6, KC_PPLS, \ KC_LCTL, FR_Q, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, FR_M, FR_UGRV, FR_ASTR, KC_1, KC_2, KC_3, \ - FR_LESS, FR_W, KC_X, KC_C, KC_V, KC_B, KC_SPC, KC_SPC, KC_N, FR_COMM, FR_SCLN, FR_COLN, FR_EXLM, KC_ALGR, KC_LEFT, KC_DOWN, KC_RGHT, KC_PENT \ + FR_LABK, FR_W, KC_X, KC_C, KC_V, KC_B, KC_SPC, KC_SPC, KC_N, FR_COMM, FR_SCLN, FR_COLN, FR_EXLM, KC_ALGR, KC_LEFT, KC_DOWN, KC_RGHT, KC_PENT \ ), }; diff --git a/keyboards/handwired/reddot/reddot.c b/keyboards/handwired/reddot/reddot.c index 4e1efc06cea3..1c4720b5cf7b 100755 --- a/keyboards/handwired/reddot/reddot.c +++ b/keyboards/handwired/reddot/reddot.c @@ -1,7 +1 @@ #include "reddot.h" - -void matrix_init_kb(void) { - - matrix_init_user(); -} - diff --git a/keyboards/handwired/reddot/rules.mk b/keyboards/handwired/reddot/rules.mk index 4400decaac12..0969bb882dc9 100755 --- a/keyboards/handwired/reddot/rules.mk +++ b/keyboards/handwired/reddot/rules.mk @@ -2,44 +2,17 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -ifdef TEENSY2 - BOOTLOADER = halfkay - OPT_DEFS += -DATREUS_TEENSY2 - ATREUS_UPLOAD_COMMAND = teensy_loader_cli -w -mmcu=$(MCU) $(TARGET).hex -else - BOOTLOADER = caterina - OPT_DEFS += -DATREUS_ASTAR - ATREUS_UPLOAD_COMMAND = while [ ! -r $(USB) ]; do sleep 1; done; \ - avrdude -p $(MCU) -c avr109 -U flash:w:$(TARGET).hex -P $(USB) -endif +BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 - -# upload: build -# $(ATREUS_UPLOAD_COMMAND) - -# for avr upload -USB = /dev/cu.usbmodem1421 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/retro_refit/config.h b/keyboards/handwired/retro_refit/config.h index 9c36a19d5c8f..74cebfb8257b 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -57,43 +56,19 @@ along with this program. If not, see . #define FORCE_NKRO /* - * Magic key options - * These options allow the magic key functionality to be changed. This is useful - * if your keyboard/keypad is missing keys and you want magic key support. + * Magic Key Options + * + * Magic keys are hotkey commands that allow control over firmware functions of + * the keyboard. They are best used in combination with the HID Listen program, + * found here: https://www.pjrc.com/teensy/hid_listen.html + * + * The options below allow the magic key functionality to be changed. This is + * useful if your keyboard/keypad is missing keys and you want magic key support. + * */ -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - /* remap magic keys */ -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE #define MAGIC_KEY_LOCK BSLS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z /* * Feature disable options @@ -112,5 +87,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -#endif diff --git a/keyboards/handwired/retro_refit/info.json b/keyboards/handwired/retro_refit/info.json index 44ae97cd125c..47970247b074 100644 --- a/keyboards/handwired/retro_refit/info.json +++ b/keyboards/handwired/retro_refit/info.json @@ -2,11 +2,8 @@ "keyboard_name": "handwired/retro_refit", "url": "", "maintainer": "qmk", - "width": 15.5, - "height": 6.5, "layouts": { "LAYOUT": { - "key_count": 81, "layout": [ {"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, diff --git a/keyboards/handwired/retro_refit/rules.mk b/keyboards/handwired/retro_refit/rules.mk index 1506838a429b..704229464fed 100644 --- a/keyboards/handwired/retro_refit/rules.mk +++ b/keyboards/handwired/retro_refit/rules.mk @@ -2,28 +2,15 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = halfkay # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) +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 = yes # Commands for debug and configuration -KEYBOARD_LOCK_ENABLE = yes # Allow locking of keyboard via magic key -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -# SLEEP_LED_ENABLE = yes # 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 = yes # Enable keyboard backlight functionality -# MIDI_ENABLE = YES # MIDI controls -# UNICODE_ENABLE = YES # Unicode -# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID diff --git a/keyboards/handwired/riblee_f401/info.json b/keyboards/handwired/riblee_f401/info.json index ddf13abc939c..cebc3ba86ba8 100644 --- a/keyboards/handwired/riblee_f401/info.json +++ b/keyboards/handwired/riblee_f401/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Handwired Preonic (Blackpill F401)", "url": "", "maintainer": "riblee", - "width": 12, - "height": 5, "layouts": { "LAYOUT_ortho_5x12": { "layout": [ diff --git a/keyboards/handwired/riblee_f401/rules.mk b/keyboards/handwired/riblee_f401/rules.mk index 0291ca04f366..4e99a396f9e9 100644 --- a/keyboards/handwired/riblee_f401/rules.mk +++ b/keyboards/handwired/riblee_f401/rules.mk @@ -7,20 +7,17 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control KEYBOARD_SHARED_EP = yes 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 = yes # Enable keyboard backlight functionality BACKLIGHT_DRIVER = software RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LAYOUTS = ortho_5x12 \ No newline at end of file diff --git a/keyboards/handwired/riblee_f411/info.json b/keyboards/handwired/riblee_f411/info.json index e318e8bd6a7e..9e44d4de2229 100644 --- a/keyboards/handwired/riblee_f411/info.json +++ b/keyboards/handwired/riblee_f411/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Handwired Preonic (Blackpill F411)", "url": "", "maintainer": "riblee", - "width": 12, - "height": 5, "layouts": { "LAYOUT_ortho_5x12": { "layout": [ diff --git a/keyboards/handwired/riblee_f411/rules.mk b/keyboards/handwired/riblee_f411/rules.mk index 8b029be69d5d..84c99de3874a 100644 --- a/keyboards/handwired/riblee_f411/rules.mk +++ b/keyboards/handwired/riblee_f411/rules.mk @@ -7,23 +7,21 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control KEYBOARD_SHARED_EP = yes 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 = yes # Enable keyboard backlight functionality BACKLIGHT_DRIVER = software RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LAYOUTS = ortho_5x12 -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 RAW_ENABLE = yes diff --git a/keyboards/handwired/rs60/info.json b/keyboards/handwired/rs60/info.json index a3b32aec1891..d3db01eb796a 100644 --- a/keyboards/handwired/rs60/info.json +++ b/keyboards/handwired/rs60/info.json @@ -2,8 +2,6 @@ "keyboard_name": "rs60", "url": "", "maintainer": "rs", - "width": 12, - "height": 5, "layouts": { "LAYOUT_ortho_5x12": { "layout": [ diff --git a/keyboards/handwired/rs60/rules.mk b/keyboards/handwired/rs60/rules.mk index ee10944c67bf..9d87b417f040 100644 --- a/keyboards/handwired/rs60/rules.mk +++ b/keyboards/handwired/rs60/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = qmk-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = no # Mouse keys(+4700) -EXTRAKEY_ENABLE = no # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = no # 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 = no # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work 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 diff --git a/keyboards/handwired/selene/info.json b/keyboards/handwired/selene/info.json index 8df57f936c91..c7f69b42bd18 100644 --- a/keyboards/handwired/selene/info.json +++ b/keyboards/handwired/selene/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Selene", "url": "https://github.com/Bpendragon/Selene-Keyboard", "maintainer": "Bpendragon", - "width": 22.5, - "height": 6.5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/selene/rules.mk b/keyboards/handwired/selene/rules.mk index 842675b7583d..772b60d55e0f 100644 --- a/keyboards/handwired/selene/rules.mk +++ b/keyboards/handwired/selene/rules.mk @@ -8,17 +8,14 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow WS2812_DRIVER = bitbang -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/sick68/config.h b/keyboards/handwired/sick68/config.h index cbce7bfa72e2..65583af18de8 100644 --- a/keyboards/handwired/sick68/config.h +++ b/keyboards/handwired/sick68/config.h @@ -123,59 +123,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -196,26 +143,6 @@ along with this program. If not, see . #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/handwired/sick68/info.json b/keyboards/handwired/sick68/info.json index 29faff29fab5..e607e100e69a 100644 --- a/keyboards/handwired/sick68/info.json +++ b/keyboards/handwired/sick68/info.json @@ -2,11 +2,8 @@ "keyboard_name": "sick68", "url": "", "maintainer": "umbynos", - "width": 15, - "height": 5, "layouts": { "LAYOUT_65_ansi": { - "key_count": 68, "layout": [ {"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, diff --git a/keyboards/handwired/sick68/keymaps/default/keymap.c b/keyboards/handwired/sick68/keymaps/default/keymap.c index f25be1907606..6d6030582cf0 100644 --- a/keyboards/handwired/sick68/keymaps/default/keymap.c +++ b/keyboards/handwired/sick68/keymaps/default/keymap.c @@ -64,18 +64,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R ), }; - - -/* -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool led_update_user(led_t led_state) { - return true; -} -*/ diff --git a/keyboards/handwired/sick68/rules.mk b/keyboards/handwired/sick68/rules.mk index c74742abd56a..0c89d75f32a4 100644 --- a/keyboards/handwired/sick68/rules.mk +++ b/keyboards/handwired/sick68/rules.mk @@ -2,31 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = 65_ansi diff --git a/keyboards/handwired/sick_pad/info.json b/keyboards/handwired/sick_pad/info.json index 68ff6b40e824..d751035d1282 100644 --- a/keyboards/handwired/sick_pad/info.json +++ b/keyboards/handwired/sick_pad/info.json @@ -2,8 +2,6 @@ "keyboard_name": "sick_pad", "url": "https://www.thingiverse.com/thing:3682168", "maintainer": "jmschneider", - "width": 4, - "height": 5, "layouts": { "LAYOUT_numpad_5x4": { "layout": [ diff --git a/keyboards/handwired/sick_pad/rules.mk b/keyboards/handwired/sick_pad/rules.mk index 4fe7d9aff74b..7e41fc34b982 100644 --- a/keyboards/handwired/sick_pad/rules.mk +++ b/keyboards/handwired/sick_pad/rules.mk @@ -8,17 +8,14 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 = 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 LAYOUTS = numpad_5x4 diff --git a/keyboards/handwired/slash/info.json b/keyboards/handwired/slash/info.json index 713a77aaae9b..ce1578816083 100644 --- a/keyboards/handwired/slash/info.json +++ b/keyboards/handwired/slash/info.json @@ -2,8 +2,6 @@ "keyboard_name": "slash", "url": "", "maintainer": "qmk", - "width": 16.75, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/slash/rules.mk b/keyboards/handwired/slash/rules.mk index 9726e71443fb..e129b4a65de6 100644 --- a/keyboards/handwired/slash/rules.mk +++ b/keyboards/handwired/slash/rules.mk @@ -5,31 +5,20 @@ MCU = atmega32u4 F_CPU = 8000000 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -#BLUETOOTH_ENABLE = Yes # Enable Bluetooth with the Adafruit EZ-Key HID -BLUETOOTH = AdafruitBLE -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output +BLUETOOTH_ENABLE = yes +BLUETOOTH_DRIVER = AdafruitBLE diff --git a/keyboards/handwired/sono1/info.json b/keyboards/handwired/sono1/info.json index e3faa0081313..4d35c67b196c 100644 --- a/keyboards/handwired/sono1/info.json +++ b/keyboards/handwired/sono1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "sono1", "url": "", "maintainer": "DmNosachev", - "width": 22.5, - "height": 7.5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/sono1/rules.mk b/keyboards/handwired/sono1/rules.mk index 558598d74ff5..97907d71d473 100644 --- a/keyboards/handwired/sono1/rules.mk +++ b/keyboards/handwired/sono1/rules.mk @@ -10,16 +10,13 @@ OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/handwired/space_oddity/info.json b/keyboards/handwired/space_oddity/info.json index 37e24b33c48b..b1f2a801d956 100644 --- a/keyboards/handwired/space_oddity/info.json +++ b/keyboards/handwired/space_oddity/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Space Oddity", "url": "", "maintainer": "qmk", - "width": 14, - "height": 6, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/space_oddity/keymaps/default/keymap.c b/keyboards/handwired/space_oddity/keymaps/default/keymap.c index 8adb15cfdb50..8a6f24587583 100644 --- a/keyboards/handwired/space_oddity/keymaps/default/keymap.c +++ b/keyboards/handwired/space_oddity/keymaps/default/keymap.c @@ -143,12 +143,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -void matrix_init_user(void) { -} - -void matrix_scan_user(void) { -} - // Simple macro ideas follow. Each of them is designed to give you a quick way to create pairs of // delimiters and then position the cursor between them, much like Emacs' ParEdit does. This way, // you can have some convenient coding "helpers" even when not using Emacs. It is also nice for @@ -186,37 +180,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return true; } - -void led_set_user(uint8_t usb_led) { - - if (usb_led & (1 << USB_LED_NUM_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_CAPS_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_SCROLL_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_COMPOSE)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_KANA)) { - - } else { - - } - -} diff --git a/keyboards/handwired/space_oddity/keymaps/default/rules.mk b/keyboards/handwired/space_oddity/keymaps/default/rules.mk new file mode 100644 index 000000000000..e5ddcae8d927 --- /dev/null +++ b/keyboards/handwired/space_oddity/keymaps/default/rules.mk @@ -0,0 +1 @@ +TAP_DANCE_ENABLE = yes diff --git a/keyboards/handwired/space_oddity/rules.mk b/keyboards/handwired/space_oddity/rules.mk index 97f9cfd80a65..9325ba0aa6d7 100644 --- a/keyboards/handwired/space_oddity/rules.mk +++ b/keyboards/handwired/space_oddity/rules.mk @@ -2,27 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) +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 -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality AUDIO_ENABLE = no RGBLIGHT_ENABLE = no -TAP_DANCE_ENABLE = yes -DYNAMIC_MACRO_ENABLE = yes \ No newline at end of file +DYNAMIC_MACRO_ENABLE = yes diff --git a/keyboards/handwired/split65/info.json b/keyboards/handwired/split65/info.json new file mode 100644 index 000000000000..34d9a2120510 --- /dev/null +++ b/keyboards/handwired/split65/info.json @@ -0,0 +1,85 @@ +{ + "keyboard_name": "split65", + "url": "https://github.com/PercyJW-2/Split65", + "maintainer": "PercyJW-2", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"`\u00ac", "x":0, "y":0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2\"", "x":2, "y":0}, + {"label":"3\u00a3", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":8, "y":0}, + {"label":"8*", "x":9, "y":0}, + {"label":"9(", "x":10, "y":0}, + {"label":"0)", "x":11, "y":0}, + {"label":"-_", "x":12, "y":0}, + {"label":"=+", "x":13, "y":0}, + {"label":"Backspace", "x":14, "y":0, "w":2}, + {"label":"Insert", "x":16, "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":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":"Delete", "x":16, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":7.75, "y":2}, + {"label":"J", "x":8.75, "y":2}, + {"label":"K", "x":9.75, "y":2}, + {"label":"L", "x":10.75, "y":2}, + {"label":";:", "x":11.75, "y":2}, + {"label":"'@", "x":12.75, "y":2}, + {"label":"#~", "x":13.75, "y":2}, + {"label":"Enter", "x":14.75, "y":1, "w":1.25, "h":2}, + {"label":"Page Up", "x":16, "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.25, "y":3}, + {"label":"M", "x":9.25, "y":3}, + {"label":",<", "x":10.25, "y":3}, + {"label":".>", "x":11.25, "y":3}, + {"label":"/?", "x":12.25, "y":3}, + {"label":"Shift", "x":13.25, "y":3, "w":1.75}, + {"label":"Up", "x":15, "y":3}, + {"label":"Page Down", "x":16, "y":3}, + + {"label":"Ctrl", "x":0.25, "y":4, "w":1.25}, + {"label":"Win", "x":1.5, "y":4, "w":1.25}, + {"label":"Alt", "x":2.75, "y":4, "w":1.25}, + {"label":"Space", "x":4, "y":4, "w":2.75}, + {"label":"Enter", "x":8, "y":4, "w":2.25}, + {"label":"AltGr", "x":10.25, "y":4}, + {"label":"Lower", "x":11.25, "y":4}, + {"label":"Raise", "x":12.25, "y":4}, + {"label":"Left", "x":14, "y":4}, + {"label":"Down", "x":15, "y":4}, + {"label":"Right", "x":16, "y":4} + ] + } + } +} diff --git a/keyboards/handwired/split65/keymaps/default/keymap.c b/keyboards/handwired/split65/keymaps/default/keymap.c new file mode 100644 index 000000000000..acb9b679eb93 --- /dev/null +++ b/keyboards/handwired/split65/keymaps/default/keymap.c @@ -0,0 +1,65 @@ +/* Copyright 2020-2021 PercyJW-2 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layer_names { + _QWERTY, + _LOWER, + _RAISE, + _ADJUST, +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_QWERTY] = LAYOUT( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_ENT, KC_RALT, LOWER, RAISE, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_LOWER] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, + _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_RAISE] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_ADJUST] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + +layer_state_t layer_state_set_user(layer_state_t state) { + return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); +} diff --git a/keyboards/handwired/split65/keymaps/via/keymap.c b/keyboards/handwired/split65/keymaps/via/keymap.c new file mode 100644 index 000000000000..acb9b679eb93 --- /dev/null +++ b/keyboards/handwired/split65/keymaps/via/keymap.c @@ -0,0 +1,65 @@ +/* Copyright 2020-2021 PercyJW-2 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layer_names { + _QWERTY, + _LOWER, + _RAISE, + _ADJUST, +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_QWERTY] = LAYOUT( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_ENT, KC_RALT, LOWER, RAISE, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_LOWER] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, + _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_RAISE] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_ADJUST] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + +layer_state_t layer_state_set_user(layer_state_t state) { + return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); +} diff --git a/keyboards/handwired/split65/keymaps/via/rules.mk b/keyboards/handwired/split65/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/handwired/split65/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/handwired/split65/promicro/config.h b/keyboards/handwired/split65/promicro/config.h new file mode 100644 index 000000000000..824dc76402a8 --- /dev/null +++ b/keyboards/handwired/split65/promicro/config.h @@ -0,0 +1,53 @@ +/* Copyright 2020-2021 PercyJW-2 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + + +#include "config_common.h" + +// USB Device descriptor parameter +#define VENDOR_ID 0x4A57 // JW +#define PRODUCT_ID 0x0000 // first keeb +#define DEVICE_VER 0x0000 // first revision +#define MANUFACTURER percyjw +#define PRODUCT split65 + +// Matrix Assignments +#define MATRIX_ROWS 10 //Rows are doubled-up +#define MATRIX_COLS 8 + +#define MATRIX_COL_PINS {F4, F5, F6, F7, B1, B3, B2, B6} +#define MATRIX_ROW_PINS {D4, C6, D7, E6, B4} + +// COL2ROW, ROW2COL +#define DIODE_DIRECTION COL2ROW + +#define MATRIX_IO_DELAY 5 + +// Split Keyboard specifics +#define SOFT_SERIAL_PIN D3 +#define SELECT_SOFT_SERIAL_SPEED 1 + +// Debounce to reduce unintended double-presses use 0 if not needed +#define DEBOUNCE 5 + +// Feature diable options +//#define NO_DEBUG +//#define NO_PRINT +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +#define OLED_DISPLAY_128X64 diff --git a/keyboards/handwired/split65/promicro/promicro.c b/keyboards/handwired/split65/promicro/promicro.c new file mode 100644 index 000000000000..2f7e1ebab4df --- /dev/null +++ b/keyboards/handwired/split65/promicro/promicro.c @@ -0,0 +1,16 @@ +/* Copyright 2020-2021 PercyJW-2 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "promicro.h" diff --git a/keyboards/handwired/split65/promicro/promicro.h b/keyboards/handwired/split65/promicro/promicro.h new file mode 100644 index 000000000000..204f0b88defc --- /dev/null +++ b/keyboards/handwired/split65/promicro/promicro.h @@ -0,0 +1,38 @@ +/* Copyright 2020-2021 PercyJW-2 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "split65.h" + +#define LAYOUT( \ + L00, L01, L02, L03, L04, L05, L06, R07, 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, R47, R27, R26, R25, R24, R23, R22, R21, R20, \ + L30, L31, L32, L33, L34, L35, L36, R37, R36, R35, R34, R33, R32, R31, R30, \ + L40, L41, L42, L43, R46, R45, R44, R43, R42, R41, R40 \ + ) \ + { \ + {L00, L01, L02, L03, L04, L05, L06, KC_NO}, \ + {L10, L11, L12, L13, L14, L15, KC_NO, KC_NO}, \ + {L20, L21, L22, L23, L24, L25, KC_NO, KC_NO}, \ + {L30, L31, L32, L33, L34, L35, L36, KC_NO}, \ + {L40, L41, L42, KC_NO, L43, KC_NO, KC_NO, KC_NO}, \ + {R00, R01, R02, R03, R04, R05, R06, R07}, \ + {R10, R11, R12, R13, R14, R15, R16, R17}, \ + {R20, R21, R22, R23, R24, R25, R26, R27}, \ + {R30, R31, R32, R33, R34, R35, R36, R37}, \ + {R40, R41, R42, R43, R44, R45, R46, R47} \ + } diff --git a/keyboards/handwired/split65/promicro/rules.mk b/keyboards/handwired/split65/promicro/rules.mk new file mode 100644 index 000000000000..51ad0aeb43b3 --- /dev/null +++ b/keyboards/handwired/split65/promicro/rules.mk @@ -0,0 +1,21 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = no # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +OLED_ENABLE = yes +SPLIT_KEYBOARD = yes diff --git a/keyboards/handwired/split65/readme.md b/keyboards/handwired/split65/readme.md new file mode 100644 index 000000000000..39dda3c3a54b --- /dev/null +++ b/keyboards/handwired/split65/readme.md @@ -0,0 +1,25 @@ +# Split65 + +An split 65% keyboard with two OLEDs + +* Keyboard Maintainer: [Percy-JW2](https://github.com/PercyJW-2) +* Hardware Supported: ProMicro and compatibles, Proton C +* Hardware Availability: [Repository](https://github.com/PercyJW-2/Split65) + +Make example for this keyboard with an ProMicro: + + make handwired/split65/promicro:default + +Make example for this keyboard with an Proton C: + + make handwired/split65/stm32:default + +Example for flashing this keyboard with an ProMicro + + make handwired/split65/promicro:default:flash + +Example for flashing this keyboard with an Proton C + + make handwired/split65/stm32:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/handwired/split65/split65.c b/keyboards/handwired/split65/split65.c new file mode 100644 index 000000000000..9d0831c02593 --- /dev/null +++ b/keyboards/handwired/split65/split65.c @@ -0,0 +1,134 @@ +/* Copyright 2020-2021 PercyJW-2 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "split65.h" + +// OLED Code inspired by https://github.com/qmk/qmk_firmware/blob/master/keyboards/splitkb/kyria/rev1/rev1.c + +#ifdef OLED_ENABLE +oled_rotation_t oled_init_kb(oled_rotation_t rotation) { + return OLED_ROTATION_180; +} + +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } + if (is_keyboard_master()) { + static const char PROGMEM qmk_logo[] = { + 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, + 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, + 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0}; + + oled_write_P(qmk_logo, false); + + oled_write_P(PSTR("Split65\n\n"), false); + + // Host Keyboard Layer Status + oled_write_P(PSTR("Layer: "), false); + switch (get_highest_layer(layer_state)) { + case 0: + oled_write_P(PSTR("Default\n"), false); + break; + case 1: + oled_write_P(PSTR("Lower\n"), false); + break; + case 2: + oled_write_P(PSTR("Raise\n"), false); + break; + case 3: + oled_write_P(PSTR("Adjust\n"), false); + break; + default: + oled_write_P(PSTR("Undefined\n"), false); + } + + // Host Keyboard LED Status + led_t led_state = host_keyboard_led_state(); + oled_write_P(led_state.num_lock ? PSTR("NUMLCK ") : PSTR(" "), false); + oled_write_P(led_state.caps_lock ? PSTR("CAPLCK ") : PSTR(" "), false); + oled_write_P(led_state.scroll_lock ? PSTR("SCRLCK ") : PSTR(" "), false); + } else { + static const char PROGMEM split65_logo[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 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, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 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, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xfe, 0xff, 0xff, 0xef, 0xc7, 0xc7, 0x87, + 0x87, 0x87, 0x87, 0x07, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, + 0x07, 0x07, 0x07, 0x07, 0xdf, 0xff, 0xfe, 0xfe, 0xfc, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0xf0, 0xfc, 0xfe, 0xfe, 0x9f, 0xcf, 0xc7, 0xc7, 0xc3, 0xc3, + 0xc7, 0x87, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xef, 0xc7, 0xc7, 0xc7, 0xc7, + 0xc7, 0xc7, 0x87, 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, 0xc1, 0x81, 0x81, + 0x81, 0x01, 0x05, 0x0d, 0x0d, 0x0c, 0x9c, 0xfc, 0xfc, 0xfc, 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, + 0xf9, 0xf9, 0xf9, 0xf9, 0x19, 0x19, 0x19, 0x19, 0x1d, 0x0c, 0x0c, 0x0c, 0x01, 0x01, 0x01, 0x01, + 0x01, 0xf8, 0xfc, 0xfc, 0xfc, 0xfc, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x01, 0x01, + 0x01, 0xf8, 0xfc, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0xf8, 0xfc, + 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x7d, 0xfd, 0xfd, 0xf9, 0xfd, + 0x01, 0x01, 0x01, 0x00, 0x88, 0xfc, 0xfc, 0xfc, 0xf9, 0x01, 0x01, 0x01, 0x81, 0x81, 0x81, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x80, 0xfc, 0xfc, 0xfc, 0xfc, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, + 0x00, 0x03, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 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, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + oled_write_raw_P(split65_logo, sizeof(split65_logo)); + } + return false; +} +#endif diff --git a/keyboards/handwired/split65/split65.h b/keyboards/handwired/split65/split65.h new file mode 100644 index 000000000000..7f60ab0bde0e --- /dev/null +++ b/keyboards/handwired/split65/split65.h @@ -0,0 +1,24 @@ +/* Copyright 2020-2021 PercyJW-2 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#if defined(KEYBOARD_handwired_split65_stm32) + #include "stm32.h" +#elif defined(KEYBOARD_handwired_split65_promicro) + #include "promicro.h" +#endif diff --git a/keyboards/handwired/split65/stm32/config.h b/keyboards/handwired/split65/stm32/config.h new file mode 100644 index 000000000000..28df96442302 --- /dev/null +++ b/keyboards/handwired/split65/stm32/config.h @@ -0,0 +1,60 @@ +/* Copyright 2020-2021 PercyJW-2 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "config_common.h" + +// USB Device descriptor parameter +#define VENDOR_ID 0x4A57 // JW +#define PRODUCT_ID 0x0000 // first keeb +#define DEVICE_VER 0x0000 // first revision +#define MANUFACTURER percyjw +#define PRODUCT split65 + +// Audio +#define AUDIO_PIN A5 +#define AUDIO_PIN_ALT A4 +#define AUDIO_PIN_ALT_AS_NEGATIVE + +// Matrix Assignments +#define MATRIX_ROWS 10 //Rows are doubled-up +#define MATRIX_COLS 8 + +#define MATRIX_COL_PINS {A2, A1, A0, B8, B13, B14, B15, B9} +#define MATRIX_ROW_PINS {B5, B4, B3, B2, B1} + +// COL2ROW, ROW2COL +#define DIODE_DIRECTION COL2ROW + +#define MATRIX_IO_DELAY 5 + +// Split Keyboard specifics +#define SOFT_SERIAL_PIN A9 +#define SELECT_SOFT_SERIAL_SPEED 1 +#define SERIAL_USART_DRIVER SD1 +#define SERIAL_USART_TX_PAL_MODE 7 +#define SERIAL_USART_TIMEOUT 100 + +// Debounce to reduce unintended double-presses use 0 if not needed +#define DEBOUNCE 5 + +// Feature diable options +//#define NO_DEBUG +//#define NO_PRINT +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +#define OLED_DISPLAY_128X64 diff --git a/keyboards/handwired/split65/stm32/halconf.h b/keyboards/handwired/split65/stm32/halconf.h new file mode 100644 index 000000000000..f3bfd154d174 --- /dev/null +++ b/keyboards/handwired/split65/stm32/halconf.h @@ -0,0 +1,21 @@ +/* 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 . + */ + +#pragma once + +#define HAL_USE_SERIAL TRUE + +#include_next diff --git a/keyboards/handwired/split65/stm32/rules.mk b/keyboards/handwired/split65/stm32/rules.mk new file mode 100644 index 000000000000..c076f4ab259e --- /dev/null +++ b/keyboards/handwired/split65/stm32/rules.mk @@ -0,0 +1,23 @@ +# MCU name +MCU = STM32F303 +BOARD = QMK_PROTON_C + +# Bootloader selection +BOOTLOADER = stm32-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = no # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = yes # Audio output +OLED_ENABLE = yes +SPLIT_KEYBOARD = yes +SERIAL_DRIVER = usart diff --git a/keyboards/handwired/split65/stm32/stm32.c b/keyboards/handwired/split65/stm32/stm32.c new file mode 100644 index 000000000000..2fa511206e43 --- /dev/null +++ b/keyboards/handwired/split65/stm32/stm32.c @@ -0,0 +1,16 @@ +/* Copyright 2020-2021 PercyJW-2 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "stm32.h" diff --git a/keyboards/handwired/split65/stm32/stm32.h b/keyboards/handwired/split65/stm32/stm32.h new file mode 100644 index 000000000000..27f03b3e2683 --- /dev/null +++ b/keyboards/handwired/split65/stm32/stm32.h @@ -0,0 +1,38 @@ +/* Copyright 2020-2021 PercyJW-2 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "split65.h" + +#define LAYOUT( \ + L00, L01, L02, L03, L04, L05, L06, R07, 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, R47, R27, R26, R25, R24, R23, R22, R21, R20, \ + L30, L31, L32, L33, L34, L35, L36, R37, R36, R35, R34, R33, R32, R31, R30, \ + L40, L41, L42, L43, R46, R45, R44, R43, R42, R41, R40 \ + ) \ + { \ + {L00, L01, L02, L03, L04, L05, L06, KC_NO}, \ + {L10, L11, L12, L13, L14, L15, KC_NO, KC_NO}, \ + {L20, L21, L22, L23, L24, L25, KC_NO, KC_NO}, \ + {L30, L31, L32, L33, L34, L35, L36, KC_NO}, \ + {L40, L41, L42, KC_NO, L43, KC_NO, KC_NO, KC_NO}, \ + {R00, R01, R02, R03, R04, R05, R06, R07}, \ + {R10, R11, R12, R13, R14, R15, R16, R17}, \ + {R20, R21, R22, R23, R24, R25, R26, R27}, \ + {R30, R31, R32, R33, R34, R35, R36, R37}, \ + {R40, R41, R42, R43, R44, R45, R46, R47} \ + } diff --git a/keyboards/handwired/split89/info.json b/keyboards/handwired/split89/info.json index bbdf48966ed2..7147420f3219 100644 --- a/keyboards/handwired/split89/info.json +++ b/keyboards/handwired/split89/info.json @@ -2,11 +2,9 @@ "keyboard_name": "split89", "maintainer": "jurassic73", "url": "https://github.com/jurassic73/split89", - "width": 21, - "height": 6.5, "layouts": { "LAYOUT": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6, "y":0}, {"label":"F6", "x":10.25, "y":0}, {"label":"F7", "x":11.25, "y":0}, {"label":"F8", "x":12.25, "y":0}, {"label":"F9", "x":13.75, "y":0}, {"label":"F10", "x":14.75, "y":0}, {"label":"F11", "x":15.75, "y":0}, {"label":"F12", "x":16.75, "y":0}, {"label":"PrtSc", "x":18, "y":0}, {"label":"Scroll Lock", "x":19, "y":0}, {"label":"Pause", "x":20, "y":0}, {"label":"~", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"@", "x":2, "y":1.5}, {"label":"#", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":9.75, "y":1.5}, {"label":"*", "x":10.75, "y":1.5}, {"label":"(", "x":11.75, "y":1.5}, {"label":")", "x":12.75, "y":1.5}, {"label":"_", "x":13.75, "y":1.5}, {"label":"+", "x":14.75, "y":1.5}, {"label":"Backspace", "x":15.75, "y":1.5, "w":2}, {"label":"Insert", "x":18, "y":1.5}, {"label":"Home", "x":19, "y":1.5}, {"label":"PgUp", "x":20, "y":1.5}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":9.25, "y":2.5}, {"label":"U", "x":10.25, "y":2.5}, {"label":"I", "x":11.25, "y":2.5}, {"label":"O", "x":12.25, "y":2.5}, {"label":"P", "x":13.25, "y":2.5}, {"label":"{", "x":14.25, "y":2.5}, {"label":"}", "x":15.25, "y":2.5}, {"label":"|", "x":16.25, "y":2.5, "w":1.5}, {"label":"Delete", "x":18, "y":2.5}, {"label":"End", "x":19, "y":2.5}, {"label":"PgDn", "x":20, "y":2.5}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":9.5, "y":3.5}, {"label":"J", "x":10.5, "y":3.5}, {"label":"K", "x":11.5, "y":3.5}, {"label":"L", "x":12.5, "y":3.5}, {"label":":", "x":13.5, "y":3.5}, {"label":"\"", "x":14.5, "y":3.5}, {"label":"Enter", "x":15.5, "y":3.5, "w":2.25}, {"label":"Shift", "x":0, "y":4.5, "w":2.25}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"N", "x":10, "y":4.5}, {"label":"M", "x":11, "y":4.5}, {"label":"<", "x":12, "y":4.5}, {"label":">", "x":13, "y":4.5}, {"label":"?", "x":14, "y":4.5}, {"label":"Shift", "x":15, "y":4.5, "w":2.75}, {"label":"\u2191", "x":19, "y":4.5}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, {"label":"Fn", "x":1.25, "y":5.5, "w":1.25}, {"label":"Win", "x":2.5, "y":5.5, "w":1.25}, {"label":"Alt", "x":3.75, "y":5.5, "w":1.25}, {"x":5, "y":5.5, "w":2.25}, {"x":10, "y":5.5, "w":2.75}, {"label":"Alt", "x":12.75, "y":5.5, "w":1.25}, {"label":"Win", "x":14, "y":5.5, "w":1.25}, {"label":"Menu", "x":15.25, "y":5.5, "w":1.25}, {"label":"Ctrl", "x":16.5, "y":5.5, "w":1.25}, {"label":"\u2190", "x":18, "y":5.5}, {"label":"\u2193", "x":19, "y":5.5}, {"label":"\u2192", "x":20, "y":5.5}] } } -} \ No newline at end of file +} diff --git a/keyboards/handwired/split89/keymaps/default/keymap.c b/keyboards/handwired/split89/keymaps/default/keymap.c index 3b60ef4f6867..5b2ed1740d85 100644 --- a/keyboards/handwired/split89/keymaps/default/keymap.c +++ b/keyboards/handwired/split89/keymaps/default/keymap.c @@ -24,19 +24,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Base */ [0] = LAYOUT( KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, - KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, - KC_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, - KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_Y, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, - KC_CAPS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_H, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSHIFT, KC_UP, - KC_LSFT, KC_LCTL,MO(1),KC_LGUI,KC_LALT,KC_SPACE, KC_N, KC_SPACE, KC_RALT,KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + KC_GRV,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB,KC_Q, KC_W, KC_E, KC_R, KC_T, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_Y, 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_H, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSHIFT, KC_UP, + KC_LCTL,MO(1),KC_LGUI,KC_LALT,KC_SPACE, KC_N, KC_SPACE, KC_RALT,KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), /* Volume */ [1] = LAYOUT( KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, - KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_VOLU, - KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_MEDIA_PLAY_PAUSE, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT + KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_MEDIA_PLAY_PAUSE, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT ), }; diff --git a/keyboards/handwired/split89/rules.mk b/keyboards/handwired/split89/rules.mk index 9b916f556e50..53ea6d22bbeb 100644 --- a/keyboards/handwired/split89/rules.mk +++ b/keyboards/handwired/split89/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 SPLIT_KEYBOARD = yes diff --git a/keyboards/handwired/split89/split89.h b/keyboards/handwired/split89/split89.h index d04f0296d79a..7e94027078bb 100644 --- a/keyboards/handwired/split89/split89.h +++ b/keyboards/handwired/split89/split89.h @@ -27,12 +27,12 @@ * represents the switch matrix which includes blanks in the wired out matrix. */ #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, k72, k73, \ - k74, k75, k76, k77, k78, k79, k80, k81, k82, k83, k84, k85, k86, k87, k88 \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13, k14, k15, \ + k32, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, \ + k48, k33, k34, k35, k36, k37, k54, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47, \ + k61, k49, k50, k51, k52, k53, k67, k55, k56, k57, k58, k59, k60, \ + k74, k62, k63, k64, k65, k66, k80, k68, k69, k70, k71, k72, k73, \ + k75, k76, k77, k78, k79, k81, k82, k83, k84, k85, k86, k87, k88 \ ) \ { \ { KC_NO, KC_NO, KC_NO, KC_NO, k00, k01, k02, k03, k04, k05 }, \ diff --git a/keyboards/handwired/splittest/info.json b/keyboards/handwired/splittest/info.json index fb7dce7b1c4b..9c7412ad82d8 100644 --- a/keyboards/handwired/splittest/info.json +++ b/keyboards/handwired/splittest/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Split Tester", "url": "", "maintainer": "nooges", - "width": 2, - "height": 1, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/splittest/promicro/rules.mk b/keyboards/handwired/splittest/promicro/rules.mk index e6fef517279c..cf663a7ed6aa 100644 --- a/keyboards/handwired/splittest/promicro/rules.mk +++ b/keyboards/handwired/splittest/promicro/rules.mk @@ -2,11 +2,4 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina diff --git a/keyboards/handwired/splittest/rules.mk b/keyboards/handwired/splittest/rules.mk index 2aa484db0bb7..a65265e85b17 100644 --- a/keyboards/handwired/splittest/rules.mk +++ b/keyboards/handwired/splittest/rules.mk @@ -2,22 +2,16 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = no # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - SPLIT_KEYBOARD = yes DEFAULT_FOLDER = handwired/splittest/promicro diff --git a/keyboards/handwired/splittest/teensy_2/rules.mk b/keyboards/handwired/splittest/teensy_2/rules.mk index ae398e2588c7..320633f80f33 100644 --- a/keyboards/handwired/splittest/teensy_2/rules.mk +++ b/keyboards/handwired/splittest/teensy_2/rules.mk @@ -2,11 +2,4 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = halfkay diff --git a/keyboards/handwired/steamvan/info.json b/keyboards/handwired/steamvan/info.json index 1a057e5ca296..165fa0a38f6b 100644 --- a/keyboards/handwired/steamvan/info.json +++ b/keyboards/handwired/steamvan/info.json @@ -2,8 +2,6 @@ "keyboard_name": "steamvan", "url": "", "maintainer": "qmk", - "width": 12.75, - "height": 4, "layouts": { "LAYOUT_standard": { "layout": [{"label":"Tab", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"|", "x":11, "y":0, "w":1.75}, {"label":"Caps Lock", "x":0, "y":1, "w":1.25}, {"label":"A", "x":1.25, "y":1}, {"label":"S", "x":2.25, "y":1}, {"label":"D", "x":3.25, "y":1}, {"label":"F", "x":4.25, "y":1}, {"label":"G", "x":5.25, "y":1}, {"label":"H", "x":6.25, "y":1}, {"label":"J", "x":7.25, "y":1}, {"label":"K", "x":8.25, "y":1}, {"label":"L", "x":9.25, "y":1}, {"label":":", "x":10.25, "y":1}, {"label":"\"", "x":11.25, "y":1, "w":1.5}, {"label":"Shift", "x":0, "y":2, "w":1.75}, {"label":"Z", "x":1.75, "y":2}, {"label":"X", "x":2.75, "y":2}, {"label":"C", "x":3.75, "y":2}, {"label":"V", "x":4.75, "y":2}, {"label":"B", "x":5.75, "y":2}, {"label":"N", "x":6.75, "y":2}, {"label":"M", "x":7.75, "y":2}, {"label":"<", "x":8.75, "y":2}, {"label":">", "x":9.75, "y":2}, {"label":"?", "x":10.75, "y":2}, {"x":11.75, "y":2}, {"label":"Ctrl", "x":0, "y":3, "w":1.25}, {"label":"Win", "x":1.25, "y":3, "w":1.5}, {"label":"Alt", "x":2.75, "y":3, "w":1.25}, {"x":4, "y":3, "w":2.25}, {"x":6.25, "y":3, "w":2}, {"label":"Alt", "x":8.25, "y":3, "w":1.25}, {"label":"Win", "x":9.5, "y":3, "w":1.5}, {"label":"Menu", "x":11, "y":3, "w":1.75}] diff --git a/keyboards/handwired/steamvan/keymaps/default/keymap.c b/keyboards/handwired/steamvan/keymaps/default/keymap.c index e796f0940923..4f11844a4e9b 100644 --- a/keyboards/handwired/steamvan/keymaps/default/keymap.c +++ b/keyboards/handwired/steamvan/keymaps/default/keymap.c @@ -75,19 +75,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, KC_LSFT, KC_B, KC_SPC, KC_C, _______, _______, _______ ) }; - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/handwired/steamvan/rev1/rules.mk b/keyboards/handwired/steamvan/rev1/rules.mk index 99edf7c17f8f..8557e3b045fc 100644 --- a/keyboards/handwired/steamvan/rev1/rules.mk +++ b/keyboards/handwired/steamvan/rev1/rules.mk @@ -12,16 +12,13 @@ WS2812_DRIVER = spi # comment out to disable the options. # BACKLIGHT_ENABLE = yes -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work AUDIO_ENABLE = no RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID LEADER_ENABLE = yes diff --git a/keyboards/handwired/sticc14/config.h b/keyboards/handwired/sticc14/config.h index effec0467768..6c296d78936a 100644 --- a/keyboards/handwired/sticc14/config.h +++ b/keyboards/handwired/sticc14/config.h @@ -121,59 +121,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -192,26 +139,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/handwired/sticc14/info.json b/keyboards/handwired/sticc14/info.json index fac5ab313eb5..e7bbd5e73ce1 100644 --- a/keyboards/handwired/sticc14/info.json +++ b/keyboards/handwired/sticc14/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Sticc14", "url": "", "maintainer": "erkhal", - "width": 3, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/sticc14/rules.mk b/keyboards/handwired/sticc14/rules.mk index 60ef8b9e590a..1b3f48990ee1 100644 --- a/keyboards/handwired/sticc14/rules.mk +++ b/keyboards/handwired/sticc14/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/sticc14/sticc14.c b/keyboards/handwired/sticc14/sticc14.c index 8edd2bda6b92..50c3a4a4b715 100644 --- a/keyboards/handwired/sticc14/sticc14.c +++ b/keyboards/handwired/sticc14/sticc14.c @@ -14,38 +14,3 @@ * along with this program. If not, see . */ #include "sticc14.h" - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -/* - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - -*/ diff --git a/keyboards/handwired/stream_cheap/2x3/config.h b/keyboards/handwired/stream_cheap/2x3/config.h index a142ec4a4e1e..5e571e356ae1 100644 --- a/keyboards/handwired/stream_cheap/2x3/config.h +++ b/keyboards/handwired/stream_cheap/2x3/config.h @@ -3,11 +3,11 @@ #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x1213 -#define DEVICE_VER 0x0001 -#define MANUFACTURER Kyle Hart -#define PRODUCT Stream Cheap 2x3 +#define VENDOR_ID 0x7363 // Stream Cheap +#define PRODUCT_ID 0x1213 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Stream Cheap +#define PRODUCT 2x3 /* key matrix size */ #define MATRIX_ROWS 2 diff --git a/keyboards/handwired/stream_cheap/2x3/info.json b/keyboards/handwired/stream_cheap/2x3/info.json index cdf5e1392fba..3522dda596f4 100644 --- a/keyboards/handwired/stream_cheap/2x3/info.json +++ b/keyboards/handwired/stream_cheap/2x3/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Stream Cheap 2x3", "url": "https://www.thingiverse.com/thing:4497991", "maintainer": "qmk", - "width": 3, - "height": 2, "layouts": { "LAYOUT_ortho_2x3": { "layout": [ diff --git a/keyboards/handwired/stream_cheap/2x3/readme.md b/keyboards/handwired/stream_cheap/2x3/readme.md new file mode 100644 index 000000000000..69ce022f6d8a --- /dev/null +++ b/keyboards/handwired/stream_cheap/2x3/readme.md @@ -0,0 +1,3 @@ +# Stream Cheap + +An ortholinear macropad, 2x3 configuration. diff --git a/keyboards/handwired/stream_cheap/2x3/rules.mk b/keyboards/handwired/stream_cheap/2x3/rules.mk index e4ffb10d0494..9bc853b68cd5 100644 --- a/keyboards/handwired/stream_cheap/2x3/rules.mk +++ b/keyboards/handwired/stream_cheap/2x3/rules.mk @@ -7,16 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output + +LAYOUTS = ortho_2x3 diff --git a/keyboards/handwired/stream_cheap/2x4/2x4.h b/keyboards/handwired/stream_cheap/2x4/2x4.h index 07856044f24b..37d37af728d8 100644 --- a/keyboards/handwired/stream_cheap/2x4/2x4.h +++ b/keyboards/handwired/stream_cheap/2x4/2x4.h @@ -3,8 +3,8 @@ #include "quantum.h" #define LAYOUT_ortho_2x4(\ - K00, K01, K02,K03, \ - K04, K05, K06,K07 \ + K00, K01, K02, K03, \ + K04, K05, K06, K07 \ ) \ { \ { K00,K01,K02,K03}, \ diff --git a/keyboards/handwired/stream_cheap/2x4/config.h b/keyboards/handwired/stream_cheap/2x4/config.h index 14b4d9e36845..432f23c7d90e 100644 --- a/keyboards/handwired/stream_cheap/2x4/config.h +++ b/keyboards/handwired/stream_cheap/2x4/config.h @@ -3,19 +3,21 @@ #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x1214 -#define DEVICE_VER 0x0001 -#define MANUFACTURER Kyle Hart -#define PRODUCT Stream Cheap 2x4 +#define VENDOR_ID 0x7363 // Stream Cheap +#define PRODUCT_ID 0x1214 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Stream Cheap +#define PRODUCT 2x4 /* key matrix size */ #define MATRIX_ROWS 2 #define MATRIX_COLS 4 /* define direct pins used */ -#define DIRECT_PINS { { B5,D7,C6,D1}, { B4,E6,D4,D0} } - +#define DIRECT_PINS \ + { \ + {D1, D0, D4, C6}, { D7, E6, B4, B5 } \ + } /* Set 0 if debouncing isn't needed */ #define DEBOUNCE 5 diff --git a/keyboards/handwired/stream_cheap/2x4/info.json b/keyboards/handwired/stream_cheap/2x4/info.json index ef495dbf6feb..d472eecd1e4d 100644 --- a/keyboards/handwired/stream_cheap/2x4/info.json +++ b/keyboards/handwired/stream_cheap/2x4/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Stream Cheap 2x4", "url": "https://www.thingiverse.com/thing:4497991", "maintainer": "qmk", - "width": 4, - "height": 2, "layouts": { "LAYOUT_ortho_2x4": { "layout": [ diff --git a/keyboards/handwired/stream_cheap/2x4/keymaps/via/keymap.c b/keyboards/handwired/stream_cheap/2x4/keymaps/via/keymap.c new file mode 100644 index 000000000000..4d392ae982f1 --- /dev/null +++ b/keyboards/handwired/stream_cheap/2x4/keymaps/via/keymap.c @@ -0,0 +1,38 @@ +/* Copyright 2021 Matthias Liffers + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layers { NORMAL_LAYER, SECOND_LAYER, THIRD_LAYER, FOURTH_LAYER }; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [NORMAL_LAYER] = LAYOUT_ortho_2x4( + KC_F13, KC_F14, KC_F15, KC_F16, + KC_F17, KC_F18, KC_F19, KC_F20 + ), + [SECOND_LAYER] = LAYOUT_ortho_2x4( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [THIRD_LAYER] = LAYOUT_ortho_2x4( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [FOURTH_LAYER] = LAYOUT_ortho_2x4( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/handwired/stream_cheap/2x4/keymaps/via/rules.mk b/keyboards/handwired/stream_cheap/2x4/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/handwired/stream_cheap/2x4/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/handwired/stream_cheap/2x4/readme.md b/keyboards/handwired/stream_cheap/2x4/readme.md new file mode 100644 index 000000000000..d15fcaeaf28b --- /dev/null +++ b/keyboards/handwired/stream_cheap/2x4/readme.md @@ -0,0 +1,3 @@ +# Stream Cheap + +An ortholinear macropad, 2x4 configuration. diff --git a/keyboards/handwired/stream_cheap/2x4/rules.mk b/keyboards/handwired/stream_cheap/2x4/rules.mk index e4ffb10d0494..9cb2f4587cc7 100644 --- a/keyboards/handwired/stream_cheap/2x4/rules.mk +++ b/keyboards/handwired/stream_cheap/2x4/rules.mk @@ -7,16 +7,14 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output +LTO_ENABLE = yes # Enable optimizations diff --git a/keyboards/handwired/stream_cheap/2x5/config.h b/keyboards/handwired/stream_cheap/2x5/config.h index cd69c632f1fb..e7a73107b97a 100644 --- a/keyboards/handwired/stream_cheap/2x5/config.h +++ b/keyboards/handwired/stream_cheap/2x5/config.h @@ -3,11 +3,11 @@ #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x1215 -#define DEVICE_VER 0x0001 -#define MANUFACTURER Kyle Hart -#define PRODUCT Stream Cheap 2x5 +#define VENDOR_ID 0x7363 // Stream Cheap +#define PRODUCT_ID 0x1215 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Stream Cheap +#define PRODUCT 2x5 /* key matrix size */ #define MATRIX_ROWS 2 @@ -15,7 +15,7 @@ /* define direct pins used */ #define DIRECT_PINS { { D1,C6,B4,B5,B2}, { D0,D4,D7,E6,B6} } -//#define DIRECT_PINS { { D1, C6, B4, B6, D0}, { D7, D4, B2, B5, E6} } + /* Set 0 if debouncing isn't needed */ #define DEBOUNCE 5 diff --git a/keyboards/handwired/stream_cheap/2x5/info.json b/keyboards/handwired/stream_cheap/2x5/info.json index 9fd4b054fdb0..694e0758d4c2 100644 --- a/keyboards/handwired/stream_cheap/2x5/info.json +++ b/keyboards/handwired/stream_cheap/2x5/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Stream Cheap 2x5", "url": "https://www.thingiverse.com/thing:4497991", "maintainer": "qmk", - "width": 5, - "height": 2, "layouts": { "LAYOUT_ortho_2x5": { "layout": [ diff --git a/keyboards/handwired/stream_cheap/2x5/readme.md b/keyboards/handwired/stream_cheap/2x5/readme.md new file mode 100644 index 000000000000..99aab61e4be1 --- /dev/null +++ b/keyboards/handwired/stream_cheap/2x5/readme.md @@ -0,0 +1,3 @@ +# Stream Cheap + +An ortholinear macropad, 2x5 configuration. diff --git a/keyboards/handwired/stream_cheap/2x5/rules.mk b/keyboards/handwired/stream_cheap/2x5/rules.mk index e4ffb10d0494..b97001801122 100644 --- a/keyboards/handwired/stream_cheap/2x5/rules.mk +++ b/keyboards/handwired/stream_cheap/2x5/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/stream_cheap/readme.md b/keyboards/handwired/stream_cheap/readme.md index 1b4d77ea9f4a..4343e2312d5a 100644 --- a/keyboards/handwired/stream_cheap/readme.md +++ b/keyboards/handwired/stream_cheap/readme.md @@ -18,6 +18,7 @@ Make example for this keyboard (after setting up your build environment): make handwired/stream_cheap/2x3:default make handwired/stream_cheap/2x4:default + make handwired/stream_cheap/2x4:via make handwired/stream_cheap/2x5:default See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/handwired/swiftrax/astro65/config.h b/keyboards/handwired/swiftrax/astro65/config.h index 84cc9b53c5c6..6f77ba200691 100644 --- a/keyboards/handwired/swiftrax/astro65/config.h +++ b/keyboards/handwired/swiftrax/astro65/config.h @@ -26,13 +26,15 @@ along with this program. If not, see . #define MANUFACTURER Swiftrax #define PRODUCT Astro65 /* key matrix size */ -#define MATRIX_ROWS 5 -#define MATRIX_COLS 16 +#define MATRIX_ROWS 5 +#define MATRIX_COLS 16 // ROWS: Top to bottom, COLS: Left to right -#define MATRIX_ROW_PINS { B0, B3, F7, B1, B2 } -#define MATRIX_COL_PINS { E6, D5, C7, C6, B6, B5, B4, D7, D6, D4, F0, F1, F4, F5, F6 } +#define MATRIX_ROW_PINS \ + { B0, B3, F7, B1, B2 } +#define MATRIX_COL_PINS \ + { E6, D5, D3, D4, D6, D7, B4, B5, B6, C6, C7, F6, F5, F4, F1, F0 } /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW diff --git a/keyboards/handwired/swiftrax/astro65/info.json b/keyboards/handwired/swiftrax/astro65/info.json index 767ec70a227b..20de968e6ec3 100644 --- a/keyboards/handwired/swiftrax/astro65/info.json +++ b/keyboards/handwired/swiftrax/astro65/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Astro65", "url": "https://github.com/swiftrax", "maintainer": "Swiftrax", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_ansi_blocker_split_bs": { "layout": [{"label":"0,0", "x":0, "y":0}, {"label":"0,1", "x":1, "y":0}, {"label":"0,2", "x":2, "y":0}, {"label":"0,3", "x":3, "y":0}, {"label":"0,4", "x":4, "y":0}, {"label":"0,5", "x":5, "y":0}, {"label":"0,6", "x":6, "y":0}, {"label":"0,7", "x":7, "y":0}, {"label":"0,8", "x":8, "y":0}, {"label":"0,9", "x":9, "y":0}, {"label":"0,10", "x":10, "y":0}, {"label":"0,11", "x":11, "y":0}, {"label":"0,12", "x":12, "y":0}, {"label":"0,13", "x":13, "y":0}, {"label":"0,14", "x":14, "y":0}, {"label":"0,15", "x":15, "y":0}, {"label":"1,0", "x":0, "y":1, "w":1.5}, {"label":"1,1", "x":1.5, "y":1}, {"label":"1,2", "x":2.5, "y":1}, {"label":"1,3", "x":3.5, "y":1}, {"label":"1,4", "x":4.5, "y":1}, {"label":"1,5", "x":5.5, "y":1}, {"label":"1,6", "x":6.5, "y":1}, {"label":"1,7", "x":7.5, "y":1}, {"label":"1,8", "x":8.5, "y":1}, {"label":"1,9", "x":9.5, "y":1}, {"label":"1,10", "x":10.5, "y":1}, {"label":"1,11", "x":11.5, "y":1}, {"label":"1,12", "x":12.5, "y":1}, {"label":"1,13", "x":13.5, "y":1, "w":1.5}, {"label":"1,15", "x":15, "y":1}, {"label":"2,0", "x":0, "y":2, "w":1.75}, {"label":"2,1", "x":1.75, "y":2}, {"label":"2,2", "x":2.75, "y":2}, {"label":"2,3", "x":3.75, "y":2}, {"label":"2,4", "x":4.75, "y":2}, {"label":"2,5", "x":5.75, "y":2}, {"label":"2,6", "x":6.75, "y":2}, {"label":"2,7", "x":7.75, "y":2}, {"label":"2,8", "x":8.75, "y":2}, {"label":"2,9", "x":9.75, "y":2}, {"label":"2,10", "x":10.75, "y":2}, {"label":"2,11", "x":11.75, "y":2}, {"label":"2,12", "x":12.75, "y":2, "w":2.25}, {"label":"2,15", "x":15, "y":2}, {"label":"3,0", "x":0, "y":3, "w":2.25}, {"label":"3,2", "x":2.25, "y":3}, {"label":"3,3", "x":3.25, "y":3}, {"label":"3,4", "x":4.25, "y":3}, {"label":"3,5", "x":5.25, "y":3}, {"label":"3,6", "x":6.25, "y":3}, {"label":"3,7", "x":7.25, "y":3}, {"label":"3,8", "x":8.25, "y":3}, {"label":"3,9", "x":9.25, "y":3}, {"label":"3,10", "x":10.25, "y":3}, {"label":"3,11", "x":11.25, "y":3}, {"label":"3,12", "x":12.25, "y":3, "w":1.75}, {"label":"3,14", "x":14, "y":3}, {"label":"3,15", "x":15, "y":3}, {"label":"4,0", "x":0, "y":4, "w":1.25}, {"label":"4,1", "x":1.25, "y":4, "w":1.25}, {"label":"4,2", "x":2.5, "y":4, "w":1.25}, {"label":"4,6", "x":3.75, "y":4, "w":6.25}, {"label":"4,10", "x":10, "y":4, "w":1.25}, {"label":"4,11", "x":11.25, "y":4, "w":1.25}, {"label":"4,12", "x":13, "y":4}, {"label":"4,14", "x":14, "y":4}, {"label":"4,15", "x":15, "y":4}] diff --git a/keyboards/handwired/swiftrax/astro65/rules.mk b/keyboards/handwired/swiftrax/astro65/rules.mk index 1a5f11e31aed..e7c0ba296484 100644 --- a/keyboards/handwired/swiftrax/astro65/rules.mk +++ b/keyboards/handwired/swiftrax/astro65/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 LAYOUTS = 65_ansi_blocker_split_bs diff --git a/keyboards/handwired/swiftrax/bebol/info.json b/keyboards/handwired/swiftrax/bebol/info.json index 48e6d8d5d9c6..57c793865343 100644 --- a/keyboards/handwired/swiftrax/bebol/info.json +++ b/keyboards/handwired/swiftrax/bebol/info.json @@ -2,11 +2,9 @@ "keyboard_name": "Bebol", "url": "https://github.com/swiftrax", "maintainer": "Swiftrax", - "width": 16, - "height": 5, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] } } -} \ No newline at end of file +} diff --git a/keyboards/handwired/swiftrax/bebol/rules.mk b/keyboards/handwired/swiftrax/bebol/rules.mk index 5c0d8f307c54..d2109f62500b 100644 --- a/keyboards/handwired/swiftrax/bebol/rules.mk +++ b/keyboards/handwired/swiftrax/bebol/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/handwired/swiftrax/beegboy/info.json b/keyboards/handwired/swiftrax/beegboy/info.json index 37894147fb69..78fb7ff64c73 100644 --- a/keyboards/handwired/swiftrax/beegboy/info.json +++ b/keyboards/handwired/swiftrax/beegboy/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Beegboy", "url": "https://github.com/swiftrax", "maintainer": "swiftrax", - "width": 19.5, - "height": 6.5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/swiftrax/beegboy/rules.mk b/keyboards/handwired/swiftrax/beegboy/rules.mk index eefa7d85ef52..4858002641fd 100644 --- a/keyboards/handwired/swiftrax/beegboy/rules.mk +++ b/keyboards/handwired/swiftrax/beegboy/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = no # Rotary Encoder diff --git a/keyboards/handwired/swiftrax/cowfish/info.json b/keyboards/handwired/swiftrax/cowfish/info.json index e7f1523601ee..eb990e44a099 100644 --- a/keyboards/handwired/swiftrax/cowfish/info.json +++ b/keyboards/handwired/swiftrax/cowfish/info.json @@ -2,8 +2,6 @@ "keyboard_name": "CowFish", "url": "", "maintainer": "swiftrax", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0}, {"x":1.25, "y":0}, {"x":2.25, "y":0}, {"x":3.25, "y":0}, {"x":4.25, "y":0}, {"x":5.5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.75, "y":0}, {"x":10.75, "y":0}, {"x":11.75, "y":0}, {"x":12.75, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":4, "y":1.25}, {"x":5, "y":1.25}, {"x":6, "y":1.25}, {"x":7, "y":1.25}, {"x":8, "y":1.25}, {"x":9, "y":1.25}, {"x":10, "y":1.25}, {"x":11, "y":1.25}, {"x":12, "y":1.25}, {"x":13, "y":1.25}, {"x":14, "y":1.25}, {"x":15.25, "y":1.25}, {"x":16.25, "y":1.25}, {"x":17.25, "y":1.25}, {"x":0, "y":2.25, "w":1.5}, {"x":1.5, "y":2.25}, {"x":2.5, "y":2.25}, {"x":3.5, "y":2.25}, {"x":4.5, "y":2.25}, {"x":5.5, "y":2.25}, {"x":6.5, "y":2.25}, {"x":7.5, "y":2.25}, {"x":8.5, "y":2.25}, {"x":9.5, "y":2.25}, {"x":10.5, "y":2.25}, {"x":11.5, "y":2.25}, {"x":12.5, "y":2.25}, {"x":13.5, "y":2.25, "w":1.5}, {"x":15.25, "y":2.25}, {"x":16.25, "y":2.25}, {"x":17.25, "y":2.25}, {"x":0, "y":3.25, "w":1.75}, {"x":1.75, "y":3.25}, {"x":2.75, "y":3.25}, {"x":3.75, "y":3.25}, {"x":4.75, "y":3.25}, {"x":5.75, "y":3.25}, {"x":6.75, "y":3.25}, {"x":7.75, "y":3.25}, {"x":8.75, "y":3.25}, {"x":9.75, "y":3.25}, {"x":10.75, "y":3.25}, {"x":11.75, "y":3.25}, {"x":12.75, "y":3.25, "w":2.25}, {"x":0, "y":4.25, "w":2.25}, {"x":2.25, "y":4.25}, {"x":3.25, "y":4.25}, {"x":4.25, "y":4.25}, {"x":5.25, "y":4.25}, {"x":6.25, "y":4.25}, {"x":7.25, "y":4.25}, {"x":8.25, "y":4.25}, {"x":9.25, "y":4.25}, {"x":10.25, "y":4.25}, {"x":11.25, "y":4.25}, {"x":12.25, "y":4.25, "w":2.75}, {"x":16.25, "y":4.25}, {"x":0, "y":5.25, "w":1.25}, {"x":1.25, "y":5.25, "w":1.25}, {"x":2.5, "y":5.25, "w":1.25}, {"x":3.75, "y":5.25, "w":6.25}, {"x":10, "y":5.25, "w":1.25}, {"x":11.25, "y":5.25, "w":1.25}, {"x":12.5, "y":5.25, "w":1.25}, {"x":13.75, "y":5.25, "w":1.25}, {"x":15.25, "y":5.25}, {"x":16.25, "y":5.25}, {"x":17.25, "y":5.25}] @@ -18,4 +16,4 @@ "layout": [{"x":0, "y":0}, {"x":1.25, "y":0}, {"x":2.25, "y":0}, {"x":3.25, "y":0}, {"x":4.25, "y":0}, {"x":5.5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.75, "y":0}, {"x":10.75, "y":0}, {"x":11.75, "y":0}, {"x":12.75, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":4, "y":1.25}, {"x":5, "y":1.25}, {"x":6, "y":1.25}, {"x":7, "y":1.25}, {"x":8, "y":1.25}, {"x":9, "y":1.25}, {"x":10, "y":1.25}, {"x":11, "y":1.25}, {"x":12, "y":1.25}, {"x":13, "y":1.25}, {"x":14, "y":1.25}, {"x":15.25, "y":1.25}, {"x":16.25, "y":1.25}, {"x":17.25, "y":1.25}, {"x":0, "y":2.25, "w":1.5}, {"x":1.5, "y":2.25}, {"x":2.5, "y":2.25}, {"x":3.5, "y":2.25}, {"x":4.5, "y":2.25}, {"x":5.5, "y":2.25}, {"x":6.5, "y":2.25}, {"x":7.5, "y":2.25}, {"x":8.5, "y":2.25}, {"x":9.5, "y":2.25}, {"x":10.5, "y":2.25}, {"x":11.5, "y":2.25}, {"x":12.5, "y":2.25}, {"x":13.5, "y":2.25, "w":1.5}, {"x":15.25, "y":2.25}, {"x":16.25, "y":2.25}, {"x":17.25, "y":2.25}, {"x":0, "y":3.25, "w":1.75}, {"x":1.75, "y":3.25}, {"x":2.75, "y":3.25}, {"x":3.75, "y":3.25}, {"x":4.75, "y":3.25}, {"x":5.75, "y":3.25}, {"x":6.75, "y":3.25}, {"x":7.75, "y":3.25}, {"x":8.75, "y":3.25}, {"x":9.75, "y":3.25}, {"x":10.75, "y":3.25}, {"x":11.75, "y":3.25}, {"x":12.75, "y":3.25, "w":2.25}, {"x":0, "y":4.25, "w":2.25}, {"x":2.25, "y":4.25}, {"x":3.25, "y":4.25}, {"x":4.25, "y":4.25}, {"x":5.25, "y":4.25}, {"x":6.25, "y":4.25}, {"x":7.25, "y":4.25}, {"x":8.25, "y":4.25}, {"x":9.25, "y":4.25}, {"x":10.25, "y":4.25}, {"x":11.25, "y":4.25}, {"x":12.25, "y":4.25, "w":2.75}, {"x":16.25, "y":4.25}, {"x":0, "y":5.25, "w":1.5}, {"x":1.5, "y":5.25}, {"x":2.5, "y":5.25, "w":1.5}, {"x":4, "y":5.25, "w":7}, {"x":11, "y":5.25, "w":1.5}, {"x":12.5, "y":5.25}, {"x":13.5, "y":5.25, "w":1.5}, {"x":15.25, "y":5.25}, {"x":16.25, "y":5.25}, {"x":17.25, "y":5.25}] } } -} \ No newline at end of file +} diff --git a/keyboards/handwired/swiftrax/cowfish/rules.mk b/keyboards/handwired/swiftrax/cowfish/rules.mk index aed5553f669b..74047d4dec7d 100644 --- a/keyboards/handwired/swiftrax/cowfish/rules.mk +++ b/keyboards/handwired/swiftrax/cowfish/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/swiftrax/equator/info.json b/keyboards/handwired/swiftrax/equator/info.json index e7d67de80c9d..fdcfc44afaa4 100644 --- a/keyboards/handwired/swiftrax/equator/info.json +++ b/keyboards/handwired/swiftrax/equator/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Equator", "url": "https://github.com/swiftrax", "maintainer": "swiftrax", - "width": 16.5, - "height": 5, "layouts": { "LAYOUT_unified_bs_rshift": { "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":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":"Backspace", "x":14.5, "y":0, "w":2}, {"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":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":"|", "x":15, "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":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":"Enter", "x":14.25, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"B", "x":7.75, "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":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":3.75, "y":4, "w":1.25}, {"x":5, "y":4, "w":2.25}, {"x":7.75, "y":4, "w":2.75}, {"label":"Alt", "x":10.5, "y":4, "w":1.25}, {"label":"Win", "x":12.75, "y":4, "w":1.25}, {"label":"Menu", "x":14, "y":4, "w":1.25}, {"label":"Ctrl", "x":15.25, "y":4, "w":1.25}] @@ -12,4 +10,4 @@ "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":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":"Del", "x":14.5, "y":0}, {"label":"Backspace", "x":15.5, "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":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":"|", "x":15, "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":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":"Enter", "x":14.25, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"B", "x":7.75, "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":"Fn", "x":15.5, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":3.75, "y":4, "w":1.25}, {"x":5, "y":4, "w":2.25}, {"x":7.75, "y":4, "w":2.75}, {"label":"Alt", "x":10.5, "y":4, "w":1.25}, {"label":"Win", "x":12.75, "y":4, "w":1.25}, {"label":"Menu", "x":14, "y":4, "w":1.25}, {"label":"Ctrl", "x":15.25, "y":4, "w":1.25}] } } -} \ No newline at end of file +} diff --git a/keyboards/handwired/swiftrax/equator/rules.mk b/keyboards/handwired/swiftrax/equator/rules.mk index 5c0d8f307c54..d2109f62500b 100644 --- a/keyboards/handwired/swiftrax/equator/rules.mk +++ b/keyboards/handwired/swiftrax/equator/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/handwired/swiftrax/joypad/info.json b/keyboards/handwired/swiftrax/joypad/info.json index a2bdd864d109..c3a4d98c5daa 100644 --- a/keyboards/handwired/swiftrax/joypad/info.json +++ b/keyboards/handwired/swiftrax/joypad/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Joypad", "url": "https://github.com/swiftrax", "maintainer": "swiftrax", - "width": 4, - "height": 6.25, "layouts": { "LAYOUT_ortho_6x4": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":0, "y":2.25}, {"x":1, "y":2.25}, {"x":2, "y":2.25}, {"x":3, "y":2.25}, {"x":0, "y":3.25}, {"x":1, "y":3.25}, {"x":2, "y":3.25}, {"x":3, "y":3.25}, {"x":0, "y":4.25}, {"x":1, "y":4.25}, {"x":2, "y":4.25}, {"x":3, "y":4.25}, {"x":0, "y":5.25}, {"x":1, "y":5.25}, {"x":2, "y":5.25}, {"x":3, "y":5.25}] diff --git a/keyboards/handwired/swiftrax/joypad/rules.mk b/keyboards/handwired/swiftrax/joypad/rules.mk index c86285502262..0e11e563f000 100644 --- a/keyboards/handwired/swiftrax/joypad/rules.mk +++ b/keyboards/handwired/swiftrax/joypad/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = yes diff --git a/keyboards/handwired/swiftrax/koalafications/info.json b/keyboards/handwired/swiftrax/koalafications/info.json index 6418271df57e..99bd6828e663 100644 --- a/keyboards/handwired/swiftrax/koalafications/info.json +++ b/keyboards/handwired/swiftrax/koalafications/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Koalafications", "url": "https://github.com/swiftrax", "maintainer": "swiftrax", - "width": 16, - "height": 6.25, "layouts": { "LAYOUT_all": { "layout": [{"label":"0,0", "x":0, "y":0}, {"label":"0,1", "x":1.25, "y":0}, {"label":"0,2", "x":2.25, "y":0}, {"label":"0,3", "x":3.25, "y":0}, {"label":"0,4", "x":4.25, "y":0}, {"label":"0,5", "x":5.5, "y":0}, {"label":"0,6", "x":6.5, "y":0}, {"label":"0,7", "x":7.5, "y":0}, {"label":"0,8", "x":8.5, "y":0}, {"label":"0,9", "x":9.75, "y":0}, {"label":"0,A", "x":10.75, "y":0}, {"label":"0,B", "x":11.75, "y":0}, {"label":"0,C", "x":12.75, "y":0}, {"label":"1,0", "x":0, "y":1.25}, {"label":"1,1", "x":1, "y":1.25}, {"label":"1,2", "x":2, "y":1.25}, {"label":"1,3", "x":3, "y":1.25}, {"label":"1,4", "x":4, "y":1.25}, {"label":"1,5", "x":5, "y":1.25}, {"label":"1,6", "x":6, "y":1.25}, {"label":"1,7", "x":7, "y":1.25}, {"label":"1,8", "x":8, "y":1.25}, {"label":"1,9", "x":9, "y":1.25}, {"label":"1,A", "x":10, "y":1.25}, {"label":"1,B", "x":11, "y":1.25}, {"label":"1,C", "x":12, "y":1.25}, {"label":"1,D", "x":13, "y":1.25}, {"label":"3,D", "x":14, "y":1.25}, {"label":"1,E", "x":15, "y":1.25}, {"label":"2,0", "x":0, "y":2.25, "w":1.5}, {"label":"2,1", "x":1.5, "y":2.25}, {"label":"2,2", "x":2.5, "y":2.25}, {"label":"2,3", "x":3.5, "y":2.25}, {"label":"2,4", "x":4.5, "y":2.25}, {"label":"2,5", "x":5.5, "y":2.25}, {"label":"2,6", "x":6.5, "y":2.25}, {"label":"2,7", "x":7.5, "y":2.25}, {"label":"2,8", "x":8.5, "y":2.25}, {"label":"2,9", "x":9.5, "y":2.25}, {"label":"2,A", "x":10.5, "y":2.25}, {"label":"2,B", "x":11.5, "y":2.25}, {"label":"2,C", "x":12.5, "y":2.25}, {"label":"2,D", "x":13.5, "y":2.25, "w":1.5}, {"label":"2,E", "x":15, "y":2.25}, {"label":"3,0", "x":0, "y":3.25, "w":1.75}, {"label":"3,1", "x":1.75, "y":3.25}, {"label":"3,2", "x":2.75, "y":3.25}, {"label":"3,3", "x":3.75, "y":3.25}, {"label":"3,4", "x":4.75, "y":3.25}, {"label":"3,5", "x":5.75, "y":3.25}, {"label":"3,6", "x":6.75, "y":3.25}, {"label":"3,7", "x":7.75, "y":3.25}, {"label":"3,8", "x":8.75, "y":3.25}, {"label":"3,9", "x":9.75, "y":3.25}, {"label":"3,A", "x":10.75, "y":3.25}, {"label":"3,B", "x":11.75, "y":3.25}, {"label":"3,C", "x":12.75, "y":3.25, "w":2.25}, {"label":"3,E", "x":15, "y":3.25}, {"label":"4,0", "x":0, "y":4.25, "w":2.25}, {"label":"4,1", "x":2.25, "y":4.25}, {"label":"4,2", "x":3.25, "y":4.25}, {"label":"4,3", "x":4.25, "y":4.25}, {"label":"4,4", "x":5.25, "y":4.25}, {"label":"4,5", "x":6.25, "y":4.25}, {"label":"4,6", "x":7.25, "y":4.25}, {"label":"4,7", "x":8.25, "y":4.25}, {"label":"4,8", "x":9.25, "y":4.25}, {"label":"4,9", "x":10.25, "y":4.25}, {"label":"4,A", "x":11.25, "y":4.25}, {"label":"4,B", "x":12.25, "y":4.25, "w":1.75}, {"label":"4,C", "x":14, "y":4.25}, {"label":"4,E", "x":15, "y":4.25}, {"label":"5,0", "x":0, "y":5.25, "w":1.25}, {"label":"5,1", "x":1.25, "y":5.25, "w":1.25}, {"label":"5,2", "x":2.5, "y":5.25, "w":1.25}, {"label":"5,6", "x":3.75, "y":5.25, "w":6.25}, {"label":"5,8", "x":10, "y":5.25}, {"label":"5,9", "x":11, "y":5.25}, {"label":"5,A", "x":12, "y":5.25}, {"label":"5,B", "x":13, "y":5.25}, {"label":"5,C", "x":14, "y":5.25}, {"label":"5,E", "x":15, "y":5.25}] diff --git a/keyboards/handwired/swiftrax/koalafications/keymaps/default/keymap.c b/keyboards/handwired/swiftrax/koalafications/keymaps/default/keymap.c index 31437a0419aa..c4ac4c47be98 100644 --- a/keyboards/handwired/swiftrax/koalafications/keymaps/default/keymap.c +++ b/keyboards/handwired/swiftrax/koalafications/keymaps/default/keymap.c @@ -25,14 +25,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B ,KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_END , KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), [1] = LAYOUT_all( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), [2] = LAYOUT_all( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -40,7 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) }; -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_0; @@ -60,36 +60,36 @@ static void render_anim(void){ static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192, 32, 16, 16, 8, 4, 3, 0, 0, 1, 2, 4, 4, 8, 8, 8, 8, 8, 8, 8, 16, 16, 16, 16, 16, 8, 8, 4, 2, 2,126,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0, 0, 0,252, 6, 1, 1, 1, 2, 4, 15, 0, 0, 0, 0, 12, 30, 30, 12, 0, 0, 16, 48, 48, 16, 0, 0, 24, 60, 60, 24, 0, 0,248, 4, 4, 12, 16, 96, 0, 0, 0, 15, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192, 32, 16, 16, 8, 4, 3, 0, 0, 1, 2, 4, 4, 8, 8, 8, 8, 8, 8, 8, 16, 16, 16, 16, 16, 8, 8, 4, 2, 2,126,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0, 0, 0,252, 6, 1, 1, 1, 2, 4, 15, 0, 0, 0, 0, 12, 30, 30, 12, 0, 0, 16, 48, 48, 16, 0, 0, 24, 60, 60, 24, 0, 0,248, 4, 4, 12, 16, 96, 0, 0, 0, 15, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 7, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 7, 4, 4, 12, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 24, 16, 16, 16, 16, 16, 16, 16, 16, 16, 48, 32, 32, 32, 32, 32, 32, 96, 64, 64, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192, 32, 16, 16, 8, 4, 3, 0, 0, 1, 2, 4, 4, 8, 8, 8, 8, 8, 8, 8, 16, 16, 16, 16, 16, 8, 8, 4, 2, 2,126,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0, 0, 0,252, 6, 1, 1, 1, 2, 4, 15, 0, 0, 0, 0, 12, 30, 30, 12, 0, 0, 16, 56, 56, 16, 0, 0, 24, 60, 60, 24, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 15, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192, 32, 16, 16, 8, 4, 3, 0, 0, 1, 2, 4, 4, 8, 8, 8, 8, 8, 8, 8, 16, 16, 16, 16, 16, 8, 8, 4, 2, 2,126,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0, 0, 0,252, 6, 1, 1, 1, 2, 4, 15, 0, 0, 0, 0, 12, 30, 30, 12, 0, 0, 16, 56, 56, 16, 0, 0, 24, 60, 60, 24, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 15, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 18, 18, 18, 18,130, 71, 24, 32, 32, 32, 32, 16, 12, 4, 36, 36, 68, 68, 7, 4, 4, 12, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 24, 16, 16, 16, 16, 16, 16, 16, 16, 16, 48, 32, 32, 32, 32, 32, 32, 96, 64, 64, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192, 32, 16, 16, 8, 4, 3, 0, 0, 1, 2, 4, 4, 8, 8, 8, 8, 8, 8, 8, 16, 16, 16, 16, 16, 8, 8, 4, 2, 2,126,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 96, 16, 31, 0, 0, 0, 0, 8, 8, 8, 8, 0, 0, 16, 16, 16, 16, 0, 0, 8, 8, 8, 8, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 15, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192, 32, 16, 16, 8, 4, 3, 0, 0, 1, 2, 4, 4, 8, 8, 8, 8, 8, 8, 8, 16, 16, 16, 16, 16, 8, 8, 4, 2, 2,126,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 96, 16, 31, 0, 0, 0, 0, 8, 8, 8, 8, 0, 0, 16, 16, 16, 16, 0, 0, 8, 8, 8, 8, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 15, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 17, 17, 9, 9, 9,193, 39, 8, 16, 16, 16, 16, 8, 36, 66,130, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 18, 18, 18, 18,146, 71, 24, 32, 32, 32, 32, 16, 12, 4, 36, 36, 68, 68, 7, 4, 4, 12, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 24, 16, 16, 16, 16, 16, 16, 16, 16, 16, 48, 32, 32, 32, 32, 32, 32, 96, 64, 64, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192, 32, 16, 16, 8, 4, 3, 0, 0, 1, 2, 4, 4, 8, 8, 8, 8, 8, 8, 8, 16, 16, 16, 16, 16, 8, 8, 4, 2, 2,126,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 96, 16, 31, 0, 0, 0, 0, 12, 30, 30, 12, 0, 0, 16, 32, 32, 16, 0, 0, 24, 60, 60, 24, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 15, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192, 32, 16, 16, 8, 4, 3, 0, 0, 1, 2, 4, 4, 8, 8, 8, 8, 8, 8, 8, 16, 16, 16, 16, 16, 8, 8, 4, 2, 2,126,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 96, 16, 31, 0, 0, 0, 0, 12, 30, 30, 12, 0, 0, 16, 32, 32, 16, 0, 0, 24, 60, 60, 24, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 15, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 8, 16, 16, 16, 16, 8, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, 24, 32, 32, 32, 32, 16, 12, 4, 4, 4, 4, 4, 7, 4, 4, 12, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 24, 16, 16, 16, 16, 16, 16, 16, 16, 16, 48, 32, 32, 32, 32, 32, 32, 96, 64, 64, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192, 32, 16, 16, 8, 4, 3, 0, 0, 1, 2, 4, 4, 8, 8, 8, 8, 8, 8, 8, 16, 16, 16, 16, 16, 8, 8, 4, 2, 2,126,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 96, 16, 31, 0, 0, 0, 0, 12, 30, 30, 12, 0, 0, 8, 24, 24, 8, 0, 0, 24, 60, 60, 24, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 15, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192, 32, 16, 16, 8, 4, 3, 0, 0, 1, 2, 4, 4, 8, 8, 8, 8, 8, 8, 8, 16, 16, 16, 16, 16, 8, 8, 4, 2, 2,126,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 96, 16, 31, 0, 0, 0, 0, 12, 30, 30, 12, 0, 0, 8, 24, 24, 8, 0, 0, 24, 60, 60, 24, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 15, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 8, 16, 16, 16, 16, 8, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, 24, 32, 32, 32, 32, 16, 12, 4, 4, 4, 4, 4, 7, 4, 4, 12, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 24, 16, 16, 16, 16, 16, 16, 16, 16, 16, 48, 32, 32, 32, 32, 32, 32, 96, 64, 64, } @@ -106,7 +106,7 @@ static void render_anim(void){ animation_phase(); } anim_sleep = timer_read32(); - } + } else { if(timer_elapsed32(anim_sleep) > OLED_TIMEOUT) oled_off(); @@ -119,7 +119,8 @@ static void render_anim(void){ } } -void oled_task_user(void) { +bool oled_task_user(void) { render_anim(); + return false; } -#endif \ No newline at end of file +#endif diff --git a/keyboards/handwired/swiftrax/koalafications/keymaps/via/keymap.c b/keyboards/handwired/swiftrax/koalafications/keymaps/via/keymap.c index bf64c6d03f2d..b9ce8a8b4138 100644 --- a/keyboards/handwired/swiftrax/koalafications/keymaps/via/keymap.c +++ b/keyboards/handwired/swiftrax/koalafications/keymaps/via/keymap.c @@ -25,14 +25,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B ,KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_END , KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), [1] = LAYOUT_all( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), [2] = LAYOUT_all( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -40,7 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) }; -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_0; @@ -60,36 +60,36 @@ static void render_anim(void){ static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192, 32, 16, 16, 8, 4, 3, 0, 0, 1, 2, 4, 4, 8, 8, 8, 8, 8, 8, 8, 16, 16, 16, 16, 16, 8, 8, 4, 2, 2,126,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 96, 16, 31, 0, 0, 0, 0, 12, 30, 30, 12, 0, 0, 8, 24, 24, 8, 0, 0, 24, 60, 60, 24, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 15, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192, 32, 16, 16, 8, 4, 3, 0, 0, 1, 2, 4, 4, 8, 8, 8, 8, 8, 8, 8, 16, 16, 16, 16, 16, 8, 8, 4, 2, 2,126,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 96, 16, 31, 0, 0, 0, 0, 12, 30, 30, 12, 0, 0, 8, 24, 24, 8, 0, 0, 24, 60, 60, 24, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 15, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 8, 16, 16, 16, 16, 8, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, 24, 32, 32, 32, 32, 16, 12, 4, 4, 4, 4, 4, 7, 4, 4, 12, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 24, 16, 16, 16, 16, 16, 16, 16, 16, 16, 48, 32, 32, 32, 32, 32, 32, 96, 64, 64, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192, 32, 16, 16, 8, 4, 3, 0, 0, 1, 2, 4, 4, 8, 8, 8, 8, 8, 8, 8, 16, 16, 16, 16, 16, 8, 8, 4, 2, 2,126,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 96, 16, 31, 0, 0, 0, 0, 12, 30, 30, 12, 0, 0, 16, 32, 32, 16, 0, 0, 24, 60, 60, 24, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 15, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192, 32, 16, 16, 8, 4, 3, 0, 0, 1, 2, 4, 4, 8, 8, 8, 8, 8, 8, 8, 16, 16, 16, 16, 16, 8, 8, 4, 2, 2,126,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 96, 16, 31, 0, 0, 0, 0, 12, 30, 30, 12, 0, 0, 16, 32, 32, 16, 0, 0, 24, 60, 60, 24, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 15, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 8, 16, 16, 16, 16, 8, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, 24, 32, 32, 32, 32, 16, 12, 4, 4, 4, 4, 4, 7, 4, 4, 12, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 24, 16, 16, 16, 16, 16, 16, 16, 16, 16, 48, 32, 32, 32, 32, 32, 32, 96, 64, 64, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192, 32, 16, 16, 8, 4, 3, 0, 0, 1, 2, 4, 4, 8, 8, 8, 8, 8, 8, 8, 16, 16, 16, 16, 16, 8, 8, 4, 2, 2,126,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 96, 16, 31, 0, 0, 0, 0, 8, 8, 8, 8, 0, 0, 16, 16, 16, 16, 0, 0, 8, 8, 8, 8, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 15, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192, 32, 16, 16, 8, 4, 3, 0, 0, 1, 2, 4, 4, 8, 8, 8, 8, 8, 8, 8, 16, 16, 16, 16, 16, 8, 8, 4, 2, 2,126,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 96, 16, 31, 0, 0, 0, 0, 8, 8, 8, 8, 0, 0, 16, 16, 16, 16, 0, 0, 8, 8, 8, 8, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 15, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 17, 17, 9, 9, 9,193, 39, 8, 16, 16, 16, 16, 8, 36, 66,130, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 18, 18, 18, 18,146, 71, 24, 32, 32, 32, 32, 16, 12, 4, 36, 36, 68, 68, 7, 4, 4, 12, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 24, 16, 16, 16, 16, 16, 16, 16, 16, 16, 48, 32, 32, 32, 32, 32, 32, 96, 64, 64, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192, 32, 16, 16, 8, 4, 3, 0, 0, 1, 2, 4, 4, 8, 8, 8, 8, 8, 8, 8, 16, 16, 16, 16, 16, 8, 8, 4, 2, 2,126,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0, 0, 0,252, 6, 1, 1, 1, 2, 4, 15, 0, 0, 0, 0, 12, 30, 30, 12, 0, 0, 16, 56, 56, 16, 0, 0, 24, 60, 60, 24, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 15, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192, 32, 16, 16, 8, 4, 3, 0, 0, 1, 2, 4, 4, 8, 8, 8, 8, 8, 8, 8, 16, 16, 16, 16, 16, 8, 8, 4, 2, 2,126,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0, 0, 0,252, 6, 1, 1, 1, 2, 4, 15, 0, 0, 0, 0, 12, 30, 30, 12, 0, 0, 16, 56, 56, 16, 0, 0, 24, 60, 60, 24, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 15, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 18, 18, 18, 18,130, 71, 24, 32, 32, 32, 32, 16, 12, 4, 36, 36, 68, 68, 7, 4, 4, 12, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 24, 16, 16, 16, 16, 16, 16, 16, 16, 16, 48, 32, 32, 32, 32, 32, 32, 96, 64, 64, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192, 32, 16, 16, 8, 4, 3, 0, 0, 1, 2, 4, 4, 8, 8, 8, 8, 8, 8, 8, 16, 16, 16, 16, 16, 8, 8, 4, 2, 2,126,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0, 0, 0,252, 6, 1, 1, 1, 2, 4, 15, 0, 0, 0, 0, 12, 30, 30, 12, 0, 0, 16, 48, 48, 16, 0, 0, 24, 60, 60, 24, 0, 0,248, 4, 4, 12, 16, 96, 0, 0, 0, 15, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192, 32, 16, 16, 8, 4, 3, 0, 0, 1, 2, 4, 4, 8, 8, 8, 8, 8, 8, 8, 16, 16, 16, 16, 16, 8, 8, 4, 2, 2,126,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0, 0, 0,252, 6, 1, 1, 1, 2, 4, 15, 0, 0, 0, 0, 12, 30, 30, 12, 0, 0, 16, 48, 48, 16, 0, 0, 24, 60, 60, 24, 0, 0,248, 4, 4, 12, 16, 96, 0, 0, 0, 15, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 7, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 7, 4, 4, 12, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 24, 16, 16, 16, 16, 16, 16, 16, 16, 16, 48, 32, 32, 32, 32, 32, 32, 96, 64, 64, } @@ -106,7 +106,7 @@ static void render_anim(void){ animation_phase(); } anim_sleep = timer_read32(); - } + } else { if(timer_elapsed32(anim_sleep) > OLED_TIMEOUT) oled_off(); @@ -119,7 +119,8 @@ static void render_anim(void){ } } -void oled_task_user(void) { +bool oled_task_user(void) { render_anim(); + return false; } -#endif \ No newline at end of file +#endif diff --git a/keyboards/handwired/swiftrax/koalafications/rules.mk b/keyboards/handwired/swiftrax/koalafications/rules.mk index ff3041267f5d..e3c73a059301 100644 --- a/keyboards/handwired/swiftrax/koalafications/rules.mk +++ b/keyboards/handwired/swiftrax/koalafications/rules.mk @@ -7,18 +7,16 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 WPM_ENABLE = yes diff --git a/keyboards/handwired/swiftrax/nodu/info.json b/keyboards/handwired/swiftrax/nodu/info.json index 3cc75836b3e9..8fc83c196d3f 100644 --- a/keyboards/handwired/swiftrax/nodu/info.json +++ b/keyboards/handwired/swiftrax/nodu/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Nodu", "url": "github.com/swiftrax", "maintainer": "Swiftrax", - "width": 15, - "height": 5, "layout_aliases": { "LAYOUT": "LAYOUT_60_ansi_split_bs_rshift" }, diff --git a/keyboards/handwired/swiftrax/nodu/keymaps/default/keymap.c b/keyboards/handwired/swiftrax/nodu/keymaps/default/keymap.c index 617c1434aab8..79d5da8ea66b 100644 --- a/keyboards/handwired/swiftrax/nodu/keymaps/default/keymap.c +++ b/keyboards/handwired/swiftrax/nodu/keymaps/default/keymap.c @@ -18,17 +18,17 @@ along with this program. If not, see . const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_60_ansi_split_bs_rshift( - KC_GESC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, - KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, - KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_DEL, - KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, MO(1) , - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_RGUI, MO(1) , KC_RCTL + KC_GESC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_DEL, + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , + KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, MO(1) , + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_RGUI, MO(1) , KC_RCTL ), [1] = LAYOUT_60_ansi_split_bs_rshift( - _______, 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_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , _______, _______, _______, _______, KC_UP , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______ + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ ) }; diff --git a/keyboards/handwired/swiftrax/nodu/keymaps/via/keymap.c b/keyboards/handwired/swiftrax/nodu/keymaps/via/keymap.c index 6672ad7cc885..4b84c1016ee6 100644 --- a/keyboards/handwired/swiftrax/nodu/keymaps/via/keymap.c +++ b/keyboards/handwired/swiftrax/nodu/keymaps/via/keymap.c @@ -18,24 +18,24 @@ along with this program. If not, see . const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_60_ansi_split_bs_rshift( - KC_GESC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, - KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, - KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_DEL, - KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, MO(1) , - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_RGUI, MO(1) , KC_RCTL + KC_GESC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_DEL, + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , + KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, MO(1) , + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_RGUI, MO(1) , KC_RCTL ), [1] = LAYOUT_60_ansi_split_bs_rshift( - _______, 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_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , _______, _______, _______, _______, KC_UP , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______ + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ ), [2] = LAYOUT_60_ansi_split_bs_rshift( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ ) -}; \ No newline at end of file +}; diff --git a/keyboards/handwired/swiftrax/nodu/nodu.h b/keyboards/handwired/swiftrax/nodu/nodu.h index d9024237af65..c141ac1072d7 100644 --- a/keyboards/handwired/swiftrax/nodu/nodu.h +++ b/keyboards/handwired/swiftrax/nodu/nodu.h @@ -21,11 +21,11 @@ along with this program. If not, see . #include "quantum.h" #define LAYOUT_60_ansi_split_bs_rshift( \ - 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, \ - K40, K41, K42, K46, K48, K49, K4A, K4B \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \ + 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, K3C, \ + K40, K41, K42, K46, K48, K49, K4A, K4B \ ) { \ { 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 }, \ diff --git a/keyboards/handwired/swiftrax/nodu/rules.mk b/keyboards/handwired/swiftrax/nodu/rules.mk index f4b86c5997ad..b6b2d0357f2b 100644 --- a/keyboards/handwired/swiftrax/nodu/rules.mk +++ b/keyboards/handwired/swiftrax/nodu/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 LAYOUTS = 60_ansi_split_bs_rshift diff --git a/keyboards/handwired/swiftrax/pandamic/info.json b/keyboards/handwired/swiftrax/pandamic/info.json index 4446a041dd9b..230786008b86 100644 --- a/keyboards/handwired/swiftrax/pandamic/info.json +++ b/keyboards/handwired/swiftrax/pandamic/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Pandamic", "url": "https://github.com/swiftrax", "maintainer": "swiftrax", - "width": 20.75, - "height": 5.25, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4.25, "y":0}, {"x":5.25, "y":0}, {"x":6.25, "y":0}, {"x":7.25, "y":0}, {"x":8.25, "y":0}, {"x":9.25, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.25, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":18.25, "y":0}, {"x":19.75, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1, "h":2}, {"x":4.25, "y":1, "w":1.5}, {"x":5.75, "y":1}, {"x":6.75, "y":1}, {"x":7.75, "y":1}, {"x":8.75, "y":1}, {"x":9.75, "y":1}, {"x":10.75, "y":1}, {"x":11.75, "y":1}, {"x":12.75, "y":1}, {"x":13.75, "y":1}, {"x":14.75, "y":1}, {"x":15.75, "y":1}, {"x":16.75, "y":1}, {"x":17.75, "y":1, "w":1.5}, {"x":19.75, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":4.25, "y":2, "w":1.75}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":13, "y":2}, {"x":14, "y":2}, {"x":15, "y":2}, {"x":16, "y":2}, {"x":17, "y":2, "w":2.25}, {"x":19.75, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3, "h":2}, {"x":4.25, "y":3, "w":1.25}, {"x":5.5, "y":3}, {"x":6.5, "y":3}, {"x":7.5, "y":3}, {"x":8.5, "y":3}, {"x":9.5, "y":3}, {"x":10.5, "y":3}, {"x":11.5, "y":3}, {"x":12.5, "y":3}, {"x":13.5, "y":3}, {"x":14.5, "y":3}, {"x":15.5, "y":3}, {"x":16.5, "y":3, "w":1.75}, {"x":18.5, "y":3.25}, {"x":19.75, "y":3}, {"x":0, "y":4, "w":2}, {"x":2, "y":4}, {"x":4.25, "y":4, "w":1.25}, {"x":5.5, "y":4, "w":1.25}, {"x":6.75, "y":4, "w":1.25}, {"x":8, "y":4, "w":6.25}, {"x":14.25, "y":4}, {"x":15.25, "y":4}, {"x":16.25, "y":4}, {"x":17.5, "y":4.25}, {"x":18.5, "y":4.25}, {"x":19.5, "y":4.25}] diff --git a/keyboards/handwired/swiftrax/pandamic/rules.mk b/keyboards/handwired/swiftrax/pandamic/rules.mk index f83e0a1fd13e..cfe14be93631 100644 --- a/keyboards/handwired/swiftrax/pandamic/rules.mk +++ b/keyboards/handwired/swiftrax/pandamic/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = yes # Rotary Encoder diff --git a/keyboards/handwired/swiftrax/the_galleon/info.json b/keyboards/handwired/swiftrax/the_galleon/info.json index ba6a72f10a3c..7f93b9c98c62 100644 --- a/keyboards/handwired/swiftrax/the_galleon/info.json +++ b/keyboards/handwired/swiftrax/the_galleon/info.json @@ -2,8 +2,6 @@ "keyboard_name": "The Galleon", "url": "github.com/swiftrax", "maintainer": "swiftrax", - "width": 19.5, - "height": 7.5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/handwired/swiftrax/the_galleon/keymaps/default/keymap.c b/keyboards/handwired/swiftrax/the_galleon/keymaps/default/keymap.c index 8c9f696830b6..46bd189da158 100644 --- a/keyboards/handwired/swiftrax/the_galleon/keymaps/default/keymap.c +++ b/keyboards/handwired/swiftrax/the_galleon/keymaps/default/keymap.c @@ -18,32 +18,32 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_all( - KC_MUTE, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_MPRV, KC_VOLU, KC_VOLD, KC_MNXT, - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_HOME, KC_PGUP, KC_PGDN, KC_END, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT), + KC_MUTE, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_MPRV, KC_VOLU, KC_VOLD, KC_MNXT, + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_HOME, KC_PGUP, KC_PGDN, KC_END, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT), [1] = LAYOUT_all( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), [2] = LAYOUT_all( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), }; -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_0; @@ -63,14 +63,14 @@ static void render_anim(void){ static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 12, 56,224,128, 0,128,128,192,192,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,128, 0, 8, 48, 64, 0, 24,224, 0, 0, 0,192, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64,255,255,255,255,255,255,255,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,130,132, 72, 72, 8,192,225,242,248,252,252,252,252,248,240,225,192, 4, 2, 34, 18, 9, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 24, 14, 3, 28,112,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0,255,255,254,252,252,252,124, 62, 30, 15, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 16, 16, 8,136, 64, 35, 7, 15,159, 63, 63, 63,191, 31, 15, 7, 3, 96,128, 2, 18, 33, 33, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64,255,255,255,255,255,255,255,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,130,132, 72, 72, 8,192,225,242,248,252,252,252,252,248,240,225,192, 4, 2, 34, 18, 9, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 24, 14, 3, 28,112,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0,255,255,254,252,252,252,124, 62, 30, 15, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 16, 16, 8,136, 64, 35, 7, 15,159, 63, 63, 63,191, 31, 15, 7, 3, 96,128, 2, 18, 33, 33, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 96, 56, 8, 7, 3, 7, 7, 15, 15, 31,112, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2, 1, 0, 0, 0, 1, 6, 8, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 4, 4, 8, 48,224,128, 0,128,128,192,192,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,128, 8, 48, 64, 0, 24,224, 0, 0, 0,192, 32, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 34, 34, 34, 68, 68, 4,192,225,242,248,252,252,252,252,248,241,224,192, 2, 1, 17, 9,132,132,132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32, 16, 8, 20,114,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0,127,255,254,252,124, 60, 28, 30, 14, 7, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 4,132, 64, 35, 7,143, 31, 63, 63, 63, 63, 31, 15, 7, 3, 96,128, 1, 17, 32, 32, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 34, 34, 34, 68, 68, 4,192,225,242,248,252,252,252,252,248,241,224,192, 2, 1, 17, 9,132,132,132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32, 16, 8, 20,114,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0,127,255,254,252,124, 60, 28, 30, 14, 7, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 4,132, 64, 35, 7,143, 31, 63, 63, 63, 63, 31, 15, 7, 3, 96,128, 1, 17, 32, 32, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127,131, 7, 7, 15, 15, 31,112, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 12, 2, 1, 0, 0, 0, 0, 7, 8, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }; @@ -86,7 +86,7 @@ static void render_anim(void){ animation_phase(); } anim_sleep = timer_read32(); - } + } else { if(timer_elapsed32(anim_sleep) > OLED_TIMEOUT) oled_off(); @@ -99,7 +99,8 @@ static void render_anim(void){ } } -void oled_task_user(void) { +bool oled_task_user(void) { render_anim(); + return false; } #endif diff --git a/keyboards/handwired/swiftrax/the_galleon/keymaps/via/keymap.c b/keyboards/handwired/swiftrax/the_galleon/keymaps/via/keymap.c index 8c9f696830b6..46bd189da158 100644 --- a/keyboards/handwired/swiftrax/the_galleon/keymaps/via/keymap.c +++ b/keyboards/handwired/swiftrax/the_galleon/keymaps/via/keymap.c @@ -18,32 +18,32 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_all( - KC_MUTE, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_MPRV, KC_VOLU, KC_VOLD, KC_MNXT, - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_HOME, KC_PGUP, KC_PGDN, KC_END, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT), + KC_MUTE, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_MPRV, KC_VOLU, KC_VOLD, KC_MNXT, + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_HOME, KC_PGUP, KC_PGDN, KC_END, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT), [1] = LAYOUT_all( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), [2] = LAYOUT_all( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), }; -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_0; @@ -63,14 +63,14 @@ static void render_anim(void){ static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 12, 56,224,128, 0,128,128,192,192,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,128, 0, 8, 48, 64, 0, 24,224, 0, 0, 0,192, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64,255,255,255,255,255,255,255,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,130,132, 72, 72, 8,192,225,242,248,252,252,252,252,248,240,225,192, 4, 2, 34, 18, 9, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 24, 14, 3, 28,112,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0,255,255,254,252,252,252,124, 62, 30, 15, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 16, 16, 8,136, 64, 35, 7, 15,159, 63, 63, 63,191, 31, 15, 7, 3, 96,128, 2, 18, 33, 33, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64,255,255,255,255,255,255,255,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,130,132, 72, 72, 8,192,225,242,248,252,252,252,252,248,240,225,192, 4, 2, 34, 18, 9, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 24, 14, 3, 28,112,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0,255,255,254,252,252,252,124, 62, 30, 15, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 16, 16, 8,136, 64, 35, 7, 15,159, 63, 63, 63,191, 31, 15, 7, 3, 96,128, 2, 18, 33, 33, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 96, 56, 8, 7, 3, 7, 7, 15, 15, 31,112, 0, 0, 0, 0, 0, 0, 0, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 2, 1, 0, 0, 0, 1, 6, 8, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 4, 4, 8, 48,224,128, 0,128,128,192,192,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,128, 8, 48, 64, 0, 24,224, 0, 0, 0,192, 32, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 34, 34, 34, 68, 68, 4,192,225,242,248,252,252,252,252,248,241,224,192, 2, 1, 17, 9,132,132,132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32, 16, 8, 20,114,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0,127,255,254,252,124, 60, 28, 30, 14, 7, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 4,132, 64, 35, 7,143, 31, 63, 63, 63, 63, 31, 15, 7, 3, 96,128, 1, 17, 32, 32, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 34, 34, 34, 68, 68, 4,192,225,242,248,252,252,252,252,248,241,224,192, 2, 1, 17, 9,132,132,132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32, 16, 8, 20,114,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0,127,255,254,252,124, 60, 28, 30, 14, 7, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 4,132, 64, 35, 7,143, 31, 63, 63, 63, 63, 31, 15, 7, 3, 96,128, 1, 17, 32, 32, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127,131, 7, 7, 15, 15, 31,112, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 12, 2, 1, 0, 0, 0, 0, 7, 8, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }; @@ -86,7 +86,7 @@ static void render_anim(void){ animation_phase(); } anim_sleep = timer_read32(); - } + } else { if(timer_elapsed32(anim_sleep) > OLED_TIMEOUT) oled_off(); @@ -99,7 +99,8 @@ static void render_anim(void){ } } -void oled_task_user(void) { +bool oled_task_user(void) { render_anim(); + return false; } #endif diff --git a/keyboards/handwired/swiftrax/the_galleon/rules.mk b/keyboards/handwired/swiftrax/the_galleon/rules.mk index 58b70131e647..318195047569 100644 --- a/keyboards/handwired/swiftrax/the_galleon/rules.mk +++ b/keyboards/handwired/swiftrax/the_galleon/rules.mk @@ -7,18 +7,16 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = no # Rotary Encoder -OLED_DRIVER_ENABLE = yes # I2C OLED +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # I2C OLED diff --git a/keyboards/handwired/swiftrax/unsplit/info.json b/keyboards/handwired/swiftrax/unsplit/info.json index 4dd3b58e892c..a0aee4515786 100644 --- a/keyboards/handwired/swiftrax/unsplit/info.json +++ b/keyboards/handwired/swiftrax/unsplit/info.json @@ -2,11 +2,9 @@ "keyboard_name": "UnSplit", "url": "github.com/swiftrax", "maintainer": "swiftrax", - "width": 17, - "height": 5, "layouts": { "LAYOUT": { "layout": [{"x":3, "y":0.25}, {"x":13, "y":0.25}, {"x":2, "y":0.5}, {"x":4, "y":0.5}, {"x":12, "y":0.5}, {"x":14, "y":0.5}, {"x":5, "y":0.625}, {"x":11, "y":0.625}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":15, "y":1}, {"x":16, "y":1}, {"x":3, "y":1.25}, {"x":13, "y":1.25}, {"x":2, "y":1.5}, {"x":4, "y":1.5}, {"x":12, "y":1.5}, {"x":14, "y":1.5}, {"x":5, "y":1.625}, {"x":11, "y":1.625}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":15, "y":2}, {"x":16, "y":2}, {"x":3, "y":2.25}, {"x":13, "y":2.25}, {"x":2, "y":2.5}, {"x":4, "y":2.5}, {"x":12, "y":2.5}, {"x":14, "y":2.5}, {"x":5, "y":2.625}, {"x":11, "y":2.625}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":15, "y":3}, {"x":16, "y":3}, {"x":2.5, "y":3.5}, {"x":13.5, "y":3.5}, {"x":3.5, "y":3.5}, {"x":12.5, "y":3.5}, {"x":4.5, "y":3.75}, {"x":11.5, "y":3.75}, {"x":5.5, "y":4}, {"x":10.5, "y":4}] } } -} \ No newline at end of file +} diff --git a/keyboards/handwired/swiftrax/unsplit/rules.mk b/keyboards/handwired/swiftrax/unsplit/rules.mk index dc796be5ee46..d42b900380f5 100644 --- a/keyboards/handwired/swiftrax/unsplit/rules.mk +++ b/keyboards/handwired/swiftrax/unsplit/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = no # Rotary Encoder \ No newline at end of file diff --git a/keyboards/handwired/swiftrax/walter/info.json b/keyboards/handwired/swiftrax/walter/info.json index b13fbcc86795..e811bc51be6c 100644 --- a/keyboards/handwired/swiftrax/walter/info.json +++ b/keyboards/handwired/swiftrax/walter/info.json @@ -2,8 +2,6 @@ "keyboard_name": "walter", "url": "https://github.com/swiftrax", "maintainer": "swiftrax", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_ansi": { "layout": [ @@ -314,4 +312,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/handwired/swiftrax/walter/rules.mk b/keyboards/handwired/swiftrax/walter/rules.mk index 89bd1be0aecc..64982a5a0821 100644 --- a/keyboards/handwired/swiftrax/walter/rules.mk +++ b/keyboards/handwired/swiftrax/walter/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = yes # Rotary Encder diff --git a/keyboards/handwired/symmetric70_proto/config.h b/keyboards/handwired/symmetric70_proto/config.h deleted file mode 100644 index 2cdce5802c82..000000000000 --- a/keyboards/handwired/symmetric70_proto/config.h +++ /dev/null @@ -1,150 +0,0 @@ -/* -Copyright 2020 mtei - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -#include "config_common.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x2BE5 -#define DEVICE_VER 0x0001 -#define MANUFACTURER mtei -#define PRODUCT Symmetric70 prototype - -/* key matrix size */ -#define MATRIX_ROWS 5 -#define MATRIX_COLS 16 - -/* - * Keyboard Matrix Assignments - * - * Change this to how you wired your keyboard - * COLS: AVR pins used for columns, left to right - * ROWS: AVR pins used for rows, top to bottom - * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) - * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) - * - */ -#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4 } -#define MATRIX_COL_PINS { F4,F4,F5,F5, F6,F6,F7,F7, B6,B6,B2,B2, B3,B3,B1,B1 } -#define UNUSED_PINS - -#define MATRIX_MUL_SEL { 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0 } -/* use 74HC157: quadruple 2-line to 1-line data selectors / multiplexers */ -#define MATRIX_MUL_SELECT B5 /* 74HC157 pin1:~A/B */ - -/* COL2ROW, ROW2COL */ -#define DIODE_DIRECTION COL2ROW - -/* - * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. - */ -#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 - -//#define BACKLIGHT_PIN B7 -//#define BACKLIGHT_LEVELS 3 -//#define BACKLIGHT_BREATHING - -//#define RGB_DI_PIN E2 -//#ifdef RGB_DI_PIN -//# define RGBLED_NUM 16 -//# define RGBLIGHT_HUE_STEP 8 -//# define RGBLIGHT_SAT_STEP 8 -//# define RGBLIGHT_VAL_STEP 8 -//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ -//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ -/*== all animations enable ==*/ -//# define RGBLIGHT_ANIMATIONS -/*== or choose animations ==*/ -//# define RGBLIGHT_EFFECT_BREATHING -//# define RGBLIGHT_EFFECT_RAINBOW_MOOD -//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL -//# define RGBLIGHT_EFFECT_SNAKE -//# define RGBLIGHT_EFFECT_KNIGHT -//# define RGBLIGHT_EFFECT_CHRISTMAS -//# define RGBLIGHT_EFFECT_STATIC_GRADIENT -//# define RGBLIGHT_EFFECT_RGB_TEST -//# define RGBLIGHT_EFFECT_ALTERNATING -/*== customize breathing effect ==*/ -/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ -//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 -/*==== use exp() and sin() ====*/ -//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 -//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 -//#endif - -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 5 - -/* define if matrix has ghost (lacks anti-ghosting diodes) */ -//#define MATRIX_HAS_GHOST - -/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ -#define LOCKING_SUPPORT_ENABLE -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE - -/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. - * This is useful for the Windows task manager shortcut (ctrl+shift+esc). - */ -//#define GRAVE_ESC_CTRL_OVERRIDE - -/* - * Force NKRO - * - * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved - * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the - * makefile for this to work.) - * - * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) - * until the next keyboard reset. - * - * NKRO may prevent your keystrokes from being detected in the BIOS, but it is - * fully operational during normal computer usage. - * - * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) - * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by - * bootmagic, NKRO mode will always be enabled until it is toggled again during a - * power-up. - * - */ -//#define FORCE_NKRO - -/* - * 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 - -/* disable these deprecated features by default */ -#define NO_ACTION_MACRO -#define NO_ACTION_FUNCTION - -/* Bootmagic Lite key configuration */ -//#define BOOTMAGIC_LITE_ROW 0 -//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/handwired/symmetric70_proto/debug_config.h b/keyboards/handwired/symmetric70_proto/debug_config.h new file mode 100644 index 000000000000..cba99e402fa9 --- /dev/null +++ b/keyboards/handwired/symmetric70_proto/debug_config.h @@ -0,0 +1,33 @@ +/* + * matrix.c testing macros + * MATRIX_DEBUG_SCAN: Measuring execution time of `matrix_scan()` + * MATRIX_DEBUG_DELAY: Observation of delay after `unselect_row()` + */ +#pragma once +#ifndef __ASSEMBLER__ +#include + +static inline void setDebugPinOutput_Low(void) { + setPinOutput(MATRIX_DEBUG_PIN); + writePinLow(MATRIX_DEBUG_PIN); +} + +#define MATRIX_DEBUG_PIN_INIT() setDebugPinOutput_Low() + +#ifdef MATRIX_DEBUG_SCAN +# define MATRIX_DEBUG_SCAN_START() writePinHigh(MATRIX_DEBUG_PIN) +# define MATRIX_DEBUG_SCAN_END() writePinLow(MATRIX_DEBUG_PIN) +#else +# define MATRIX_DEBUG_SCAN_START() +# define MATRIX_DEBUG_SCAN_END() +#endif + +#ifdef MATRIX_DEBUG_DELAY +# define MATRIX_DEBUG_DELAY_START() writePinHigh(MATRIX_DEBUG_PIN) +# define MATRIX_DEBUG_DELAY_END() writePinLow(MATRIX_DEBUG_PIN) +#else +# define MATRIX_DEBUG_DELAY_START() +# define MATRIX_DEBUG_DELAY_END() +#endif + +#endif // __ASSEMBLER__ diff --git a/keyboards/handwired/symmetric70_proto/info.json b/keyboards/handwired/symmetric70_proto/info.json index abb0976a3ff1..6c70b9d963c5 100644 --- a/keyboards/handwired/symmetric70_proto/info.json +++ b/keyboards/handwired/symmetric70_proto/info.json @@ -2,8 +2,6 @@ "keyboard_name": "symmetric70_proto", "url": "", "maintainer": "mtei", - "width": 16, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/symmetric70_proto/local_features.mk b/keyboards/handwired/symmetric70_proto/local_features.mk new file mode 100644 index 000000000000..e5cd31a615c3 --- /dev/null +++ b/keyboards/handwired/symmetric70_proto/local_features.mk @@ -0,0 +1,108 @@ +# matrix.c testing options +# set MATRIX_IO_DELAY macro +# make MTEST=mdelay0 symmetric70_proto/{promicro|proton_c}/{fast|normal}:default:flash +# make MTEST=mdelay=1 symmetric70_proto/{promicro|proton_c}/{fast|normal}:default:flash +# make MTEST=mdelay=10 symmetric70_proto/{promicro|proton_c}/{fast|normal}:default:flash +# set DEBUG_MATRIX_SCAN_RATE_ENABLE yes +# make MTEST=scan symmetric70_proto/{promicro|proton_c}/{fast|normal}:default:flash +# set MATRIX_DEBUG_DELAY and MATRIX_IO_DELAY macro +# make MTEST=matrix_debug_delay,mdelay0 symmetric70_proto/{promicro|proton_c}/{fast|normal}:default:flash +# set MATRIX_DEBUG_SCAN +# make MTEST=matrix_debug_scan symmetric70_proto/{promicro|proton_c}/{fast|normal}:default:flash + +ifneq ($(strip $(MTEST)),) + define KEYBOARD_OPTION_PARSE + # parse 'consle', 'scan', 'no-scan', 'mdelay=?', 'mdelay0', + # 'adaptive_delay', 'always_delay', 'matrix_debug_delay', 'matrix_debug_scan' + $(if $(SHOW_PARSE),$(info parse .$1.)) #for debug 'make SHOW_PARSE=y ...' + ifeq ($(strip $1),console) + CONSOLE_ENABLE = yes + endif + ifeq ($(strip $1),scan) + DEBUG_MATRIX_SCAN_RATE_ENABLE = yes + endif + ifeq ($(strip $1),no-scan) + DEBUG_MATRIX_SCAN_RATE_ENABLE = no + endif + ifneq ($(filter mdelay=%,$1),) + MDELAY = $(patsubst mdelay=%,%,$1) + endif + ifeq ($(strip $1),mdelay0) + MDELAY = 0 + endif + ifeq ($(strip $1),common_delay) + MATRIX_COMMON_DELAY = yes + endif + ifeq ($(strip $1),adaptive_delay) + ADAPTIVE_DELAY = yes + endif + ifeq ($(strip $1),adaptive_delay2) + ADAPTIVE_DELAY2 = yes + endif + ifeq ($(strip $1),adaptive_delay_fast) + ADAPTIVE_DELAY_FAST = yes + endif + ifeq ($(strip $1),always_delay) + ALWAYS_DELAY = yes + endif + ifeq ($(strip $1),matrix_debug_delay) + MATRIX_DEBUG_DELAY = yes + MATRIX_DEBUG_SCAN = no + endif + ifeq ($(strip $1),matrix_debug_scan) + MATRIX_DEBUG_DELAY = no + MATRIX_DEBUG_SCAN = yes + endif + endef # end of KEYMAP_OPTION_PARSE + + COMMA=, + $(eval $(foreach A_OPTION_NAME,$(subst $(COMMA), ,$(MTEST)), \ + $(call KEYBOARD_OPTION_PARSE,$(A_OPTION_NAME)))) +endif + +ifneq ($(strip $(MDELAY)),) + OPT_DEFS += -DMATRIX_IO_DELAY=$(strip $(MDELAY)) +endif + +ifeq ($(strip $(ADAPTIVE_DELAY)),yes) + OPT_DEFS += -DMATRIX_IO_DELAY_ADAPTIVE +endif + +ifeq ($(strip $(ADAPTIVE_DELAY2)),yes) + OPT_DEFS += -DMATRIX_IO_DELAY_ADAPTIVE2 +endif + +ifeq ($(strip $(ADAPTIVE_DELAY_FAST)),yes) + OPT_DEFS += -DMATRIX_IO_DELAY_ADAPTIVE_FAST +endif + +ifeq ($(strip $(ALWAYS_DELAY)),yes) + OPT_DEFS += -DMATRIX_IO_DELAY_ALWAYS +endif + +ifeq ($(strip $(MATRIX_DEBUG_DELAY)),yes) + OPT_DEFS += -DMATRIX_DEBUG_DELAY + DEBUG_CONFIG = yes +endif + +ifeq ($(strip $(MATRIX_DEBUG_SCAN)),yes) + OPT_DEFS += -DMATRIX_DEBUG_SCAN + DEBUG_CONFIG = yes +endif + +ifeq ($(strip $(DEBUG_CONFIG)),yes) + # include "debug_config.h" from {promicro|proton_c}/config.h + OPT_DEFS += -DDEBUG_CONFIG +endif + +ifeq ($(strip $(MATRIX_COMMON_DELAY)),yes) + # use matrix_output_unselect_delay() in matrix_common.c + OPT_DEFS += -DMATRIX_IO_DELAY_DEFAULT +endif + +$(info -) +$(info - DEBUG_MATRIX_SCAN_RATE_ENABLE = $(DEBUG_MATRIX_SCAN_RATE_ENABLE)) +$(info - CONSOLE_ENABLE = $(CONSOLE_ENABLE)) +$(info - MDELAY = $(MDELAY)) +$(info - MATRIX_COMMON_DELAY = $(MATRIX_COMMON_DELAY)) +$(info - OPT_DEFS = $(OPT_DEFS)) diff --git a/keyboards/handwired/symmetric70_proto/matrix.c b/keyboards/handwired/symmetric70_proto/matrix.c deleted file mode 100644 index c0161207373c..000000000000 --- a/keyboards/handwired/symmetric70_proto/matrix.c +++ /dev/null @@ -1,226 +0,0 @@ -/* -Copyright 2012-2018 Jun Wako, Jack Humbert, Yiancar - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ -#include -#include -#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; -# ifdef MATRIX_MUL_SELECT -static const pin_t col_sel[MATRIX_COLS] = MATRIX_MUL_SEL; -# ifndef MATRIX_MUL_SELECT_DELAY -# define MATRIX_MUL_SELECT_DELAY 1 -# endif -# endif -#endif - -/* matrix state(1:on, 0:off) */ -extern matrix_row_t raw_matrix[MATRIX_ROWS]; // raw values -extern matrix_row_t matrix[MATRIX_ROWS]; // debounced values - -// 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) { - // Start with a clear matrix row - matrix_row_t current_row_value = 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_row_value |= readPin(pin) ? 0 : (MATRIX_ROW_SHIFTER << col_index); - } - } - - // If the row has changed, store the row and return the changed flag. - if (current_matrix[current_row] != current_row_value) { - current_matrix[current_row] = current_row_value; - return true; - } - return false; -} - -#elif defined(DIODE_DIRECTION) -# if (DIODE_DIRECTION == COL2ROW) - -static void select_row(uint8_t row) { - setPinOutput(row_pins[row]); - writePinLow(row_pins[row]); -} - -static void unselect_row(uint8_t row) { setPinInputHigh(row_pins[row]); } - -static void unselect_rows(void) { - for (uint8_t x = 0; x < MATRIX_ROWS; x++) { - setPinInputHigh(row_pins[x]); - } -} - -static void init_pins(void) { -#ifdef MATRIX_MUL_SELECT - setPinOutput(MATRIX_MUL_SELECT); - writePinLow(MATRIX_MUL_SELECT); -#endif - unselect_rows(); - for (uint8_t x = 0; x < MATRIX_COLS; x++) { - setPinInputHigh(col_pins[x]); - } -} - -static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) { - // Start with a clear matrix row - matrix_row_t current_row_value = 0; - - // Select row and wait for row selecton to stabilize - select_row(current_row); - matrix_io_delay(); - - // For each col... - for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) { - // Select the col pin to read (active low) -#ifdef MATRIX_MUL_SELECT - writePin(MATRIX_MUL_SELECT,col_sel[col_index]); - __builtin_avr_delay_cycles(MATRIX_MUL_SELECT_DELAY); -#endif - uint8_t pin_state = readPin(col_pins[col_index]); - - // Populate the matrix row with the state of the col pin - current_row_value |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index); - } - - // Unselect row - unselect_row(current_row); - - // If the row has changed, store the row and return the changed flag. - if (current_matrix[current_row] != current_row_value) { - current_matrix[current_row] = current_row_value; - return true; - } - return false; -} - -# elif (DIODE_DIRECTION == ROW2COL) - -static void select_col(uint8_t col) { - setPinOutput(col_pins[col]); - writePinLow(col_pins[col]); -} - -static void unselect_col(uint8_t col) { setPinInputHigh(col_pins[col]); } - -static void unselect_cols(void) { - for (uint8_t x = 0; x < MATRIX_COLS; x++) { - setPinInputHigh(col_pins[x]); - } -} - -static void init_pins(void) { - unselect_cols(); - for (uint8_t x = 0; x < MATRIX_ROWS; x++) { - setPinInputHigh(row_pins[x]); - } -} - -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); - matrix_io_delay(); - - // 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]; - matrix_row_t current_row_value = last_row_value; - - // Check row pin state - if (readPin(row_pins[row_index]) == 0) { - // Pin LO, set col bit - current_row_value |= (MATRIX_ROW_SHIFTER << current_col); - } else { - // Pin HI, clear col bit - current_row_value &= ~(MATRIX_ROW_SHIFTER << current_col); - } - - // Determine if the matrix changed state - if ((last_row_value != current_row_value)) { - matrix_changed |= true; - current_matrix[row_index] = current_row_value; - } - } - - // Unselect col - unselect_col(current_col); - - return matrix_changed; -} - -# else -# error DIODE_DIRECTION must be one of COL2ROW or ROW2COL! -# endif -#else -# error DIODE_DIRECTION is not defined! -#endif - -void matrix_init_custom(void) { - // initialize key pins - init_pins(); - - // initialize matrix state: all keys off - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - raw_matrix[i] = 0; - matrix[i] = 0; - } - -} - -bool matrix_scan_custom(matrix_row_t current_matrix[]) { - bool changed = false; - -#if defined(DIRECT_PINS) || (DIODE_DIRECTION == COL2ROW) - // Set row, read cols - for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) { - changed |= read_cols_on_row(current_matrix, current_row); - } -#elif (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/handwired/symmetric70_proto/matrix_debug/gpio_extr.h b/keyboards/handwired/symmetric70_proto/matrix_debug/gpio_extr.h new file mode 100644 index 000000000000..c7d08309d030 --- /dev/null +++ b/keyboards/handwired/symmetric70_proto/matrix_debug/gpio_extr.h @@ -0,0 +1,10 @@ +#pragma once +// clang-format off + +#if defined(__AVR__) +# define readPort(port) PINx_ADDRESS(port) +typedef uint8_t port_data_t; +#else +# define readPort(qmk_pin) palReadPort(PAL_PORT(qmk_pin)) +typedef uint16_t port_data_t; +#endif diff --git a/keyboards/handwired/symmetric70_proto/matrix_debug/matrix.c b/keyboards/handwired/symmetric70_proto/matrix_debug/matrix.c new file mode 100644 index 000000000000..ba0018a70f81 --- /dev/null +++ b/keyboards/handwired/symmetric70_proto/matrix_debug/matrix.c @@ -0,0 +1,329 @@ +/* +Copyright 2012-2018 Jun Wako, Jack Humbert, Yiancar + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include +#include +#include "util.h" +#include "matrix.h" +#include "debounce.h" +#include "quantum.h" +#ifndef readPort +# include "gpio_extr.h" +#endif + +#ifndef MATRIX_DEBUG_PIN +# define MATRIX_DEBUG_PIN_INIT() +# define MATRIX_DEBUG_SCAN_START() +# define MATRIX_DEBUG_SCAN_END() +# define MATRIX_DEBUG_DELAY_START() +# define MATRIX_DEBUG_DELAY_END() +# define MATRIX_DEBUG_GAP() +#else +# define MATRIX_DEBUG_GAP() asm volatile("nop \n nop" ::: "memory") +#endif + +#ifndef MATRIX_IO_DELAY_ALWAYS +# define MATRIX_IO_DELAY_ALWAYS 0 +#endif + +#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; +# ifdef MATRIX_MUL_SELECT +static const pin_t col_sel[MATRIX_COLS] = MATRIX_MUL_SEL; +# endif +#endif + +#ifdef MATRIX_IO_DELAY_PORTS +static const pin_t delay_ports[] = {MATRIX_IO_DELAY_PORTS}; +static const port_data_t delay_masks[] = {MATRIX_IO_DELAY_MASKS}; +# ifdef MATRIX_IO_DELAY_MULSEL +static const uint8_t delay_sel[] = {MATRIX_IO_DELAY_MULSEL}; +# endif +#endif + +/* matrix state(1:on, 0:off) */ +extern matrix_row_t raw_matrix[MATRIX_ROWS]; // raw values +extern matrix_row_t matrix[MATRIX_ROWS]; // debounced values + +static inline void setPinOutput_writeLow(pin_t pin) { + ATOMIC_BLOCK_FORCEON { + setPinOutput(pin); + writePinLow(pin); + } +} + +static inline void setPinInputHigh_atomic(pin_t pin) { + ATOMIC_BLOCK_FORCEON { setPinInputHigh(pin); } +} + +// 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) { + // Start with a clear matrix row + matrix_row_t current_row_value = 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_row_value |= readPin(pin) ? 0 : (MATRIX_ROW_SHIFTER << col_index); + } + } + + // If the row has changed, store the row and return the changed flag. + if (current_matrix[current_row] != current_row_value) { + current_matrix[current_row] = current_row_value; + return true; + } + return false; +} + +#elif defined(DIODE_DIRECTION) +# if (DIODE_DIRECTION == COL2ROW) + +static void select_row(uint8_t row) { setPinOutput_writeLow(row_pins[row]); } + +static void unselect_row(uint8_t row) { setPinInputHigh_atomic(row_pins[row]); } + +static void unselect_rows(void) { + for (uint8_t x = 0; x < MATRIX_ROWS; x++) { + setPinInputHigh_atomic(row_pins[x]); + } +} + +static void init_pins(void) { +# ifdef MATRIX_MUL_SELECT + setPinOutput(MATRIX_MUL_SELECT); + writePinLow(MATRIX_MUL_SELECT); +# endif + unselect_rows(); + for (uint8_t x = 0; x < MATRIX_COLS; x++) { + setPinInputHigh_atomic(col_pins[x]); + } +} + +static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) { + // Start with a clear matrix row + matrix_row_t current_row_value = 0; + + // Select row + select_row(current_row); + matrix_output_select_delay(); + + // For each col... + for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) { + // Select the col pin to read (active low) +# ifdef MATRIX_MUL_SELECT + writePin(MATRIX_MUL_SELECT, col_sel[col_index]); + waitInputPinDelay(); +# endif + uint8_t pin_state = readPin(col_pins[col_index]); + + // Populate the matrix row with the state of the col pin + current_row_value |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index); + } + + // Unselect row + unselect_row(current_row); +# ifdef MATRIX_IO_DELAY_PORTS + if (current_row_value) { // wait for col signal to go HIGH + bool is_pressed; + do { + MATRIX_DEBUG_DELAY_START(); + is_pressed = false; + for (uint8_t i = 0; i < sizeof(delay_ports) / sizeof(pin_t); i++) { +# ifdef MATRIX_IO_DELAY_MULSEL + writePin(MATRIX_MUL_SELECT, delay_sel[i]); + waitInputPinDelay(); +# endif + is_pressed |= ((readPort(delay_ports[i]) & delay_masks[i]) != delay_masks[i]); + } + MATRIX_DEBUG_DELAY_END(); + } while (is_pressed); + } +# endif +# ifdef MATRIX_IO_DELAY_ADAPTIVE + if (current_row_value) { // wait for col signal to go HIGH + for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) { + MATRIX_DEBUG_DELAY_START(); +# ifdef MATRIX_MUL_SELECT + writePin(MATRIX_MUL_SELECT, col_sel[col_index]); + waitInputPinDelay(); +# endif + while (readPin(col_pins[col_index]) == 0) { + } + MATRIX_DEBUG_DELAY_END(); + } + } +# endif +# ifdef MATRIX_IO_DELAY_ADAPTIVE2 + if (current_row_value) { // wait for col signal to go HIGH + pin_t state; + do { + MATRIX_DEBUG_DELAY_START(); + state = 0; + for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) { + MATRIX_DEBUG_DELAY_END(); + MATRIX_DEBUG_DELAY_START(); +# ifdef MATRIX_MUL_SELECT + writePin(MATRIX_MUL_SELECT, col_sel[col_index]); + waitInputPinDelay(); +# endif + state |= (readPin(col_pins[col_index]) == 0); + } + MATRIX_DEBUG_DELAY_END(); + } while (state); + } +# endif + if (MATRIX_IO_DELAY_ALWAYS || current_row + 1 < MATRIX_ROWS) { + MATRIX_DEBUG_DELAY_START(); + matrix_output_unselect_delay(current_row, current_row_value != 0); // wait for col signal to go HIGH + MATRIX_DEBUG_DELAY_END(); + } + + // If the row has changed, store the row and return the changed flag. + if (current_matrix[current_row] != current_row_value) { + current_matrix[current_row] = current_row_value; + return true; + } + return false; +} + +# elif (DIODE_DIRECTION == ROW2COL) + +static void select_col(uint8_t col) { setPinOutput_writeLow(col_pins[col]); } + +static void unselect_col(uint8_t col) { setPinInputHigh_atomic(col_pins[col]); } + +static void unselect_cols(void) { + for (uint8_t x = 0; x < MATRIX_COLS; x++) { + setPinInputHigh_atomic(col_pins[x]); + } +} + +static void init_pins(void) { + unselect_cols(); + for (uint8_t x = 0; x < MATRIX_ROWS; x++) { + setPinInputHigh_atomic(row_pins[x]); + } +} + +static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col) { + bool matrix_changed = false; + bool key_pressed = false; + + // Select col + select_col(current_col); + matrix_output_select_delay(); + + // 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]; + matrix_row_t current_row_value = last_row_value; + + // Check row pin state + if (readPin(row_pins[row_index]) == 0) { + // Pin LO, set col bit + current_row_value |= (MATRIX_ROW_SHIFTER << current_col); + key_pressed = true; + } else { + // Pin HI, clear col bit + current_row_value &= ~(MATRIX_ROW_SHIFTER << current_col); + } + + // Determine if the matrix changed state + if ((last_row_value != current_row_value)) { + matrix_changed |= true; + current_matrix[row_index] = current_row_value; + } + } + + // Unselect col + unselect_col(current_col); + if (MATRIX_IO_DELAY_ALWAYS || current_col + 1 < MATRIX_COLS) { + matrix_output_unselect_delay(current_col, key_pressed); // wait for col signal to go HIGH + } + + return matrix_changed; +} + +# else +# error DIODE_DIRECTION must be one of COL2ROW or ROW2COL! +# endif +#else +# error DIODE_DIRECTION is not defined! +#endif + +void matrix_init(void) { + // initialize key pins + init_pins(); + + // initialize matrix state: all keys off + for (uint8_t i = 0; i < MATRIX_ROWS; i++) { + raw_matrix[i] = 0; + matrix[i] = 0; + } + + debounce_init(MATRIX_ROWS); + + matrix_init_quantum(); +} + +uint8_t matrix_scan(void) { + bool changed = false; + MATRIX_DEBUG_PIN_INIT(); + + MATRIX_DEBUG_SCAN_START(); +#if defined(DIRECT_PINS) || (DIODE_DIRECTION == COL2ROW) + // Set row, read cols + for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) { + changed |= read_cols_on_row(raw_matrix, current_row); + } +#elif (DIODE_DIRECTION == ROW2COL) + // Set col, read rows + for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) { + changed |= read_rows_on_col(raw_matrix, current_col); + } +#endif + MATRIX_DEBUG_SCAN_END(); + MATRIX_DEBUG_GAP(); + + MATRIX_DEBUG_SCAN_START(); + debounce(raw_matrix, matrix, MATRIX_ROWS, changed); + MATRIX_DEBUG_SCAN_END(); + MATRIX_DEBUG_GAP(); + + MATRIX_DEBUG_SCAN_START(); + matrix_scan_quantum(); + MATRIX_DEBUG_SCAN_END(); + return (uint8_t)changed; +} diff --git a/keyboards/handwired/symmetric70_proto/matrix_debug/readme.md b/keyboards/handwired/symmetric70_proto/matrix_debug/readme.md new file mode 100644 index 000000000000..3e45db87e9c9 --- /dev/null +++ b/keyboards/handwired/symmetric70_proto/matrix_debug/readme.md @@ -0,0 +1,200 @@ +# Debug version matrix.c + +This matrix.c is quantum/matrix.c with the following additions: + +* Added the MATRIX_DEBUG_SCAN_{START/END} macro to measure the execution time of matrix_scan(). +* Added the MATRIX_DEBUG_DELAY_{START/END} macro to measure delay time. +* Added the MATRIX_MUL_SELECT handling for symmetric70_proto. + +## Compile + +* Set MATRIX_IO_DELAY value + * `make MTEST=mdelay0 handwired/symmetric70_proto/promicro/normal:default:flash` + * `make MTEST=mdelay=1 handwired/symmetric70_proto/promicro/normal:default:flash` + * `make MTEST=mdelay=2 handwired/symmetric70_proto/promicro/normal:default:flash` + * `make MTEST=mdelay=3 handwired/symmetric70_proto/promicro/normal:default:flash` + * `make MTEST=mdelay=4 handwired/symmetric70_proto/promicro/normal:default:flash` + * `make MTEST=mdelay=5 handwired/symmetric70_proto/promicro/normal:default:flash` + * `make MTEST=mdelay=10 handwired/symmetric70_proto/promicro/normal:default:flash` + * `make MTEST=mdelay=20 handwired/symmetric70_proto/promicro/normal:default:flash` + * `make MTEST=mdelay=30 handwired/symmetric70_proto/promicro/normal:default:flash` +* Measure the execution time of matrix_scan() + * `make MTEST=matrix_debug_scan[,..] handwired/symmetric70_proto/promicro/normal:default:flash` +* Measure delay time. + * `make MTEST=matrix_debug_delay[,..] handwired/symmetric70_proto/promicro/normal:default:flash` +* Change the behavior of delay + * `make MTEST=matrix_debug_delay,always_delay handwired/symmetric70_proto/promicro/normal:default:flash` + * `make MTEST=matrix_debug_delay,adaptive_delay,mdelay0 handwired/symmetric70_proto/promicro/normal:default:flash` + * `make MTEST=matrix_debug_delay,adaptive_delay_fast,mdelay0 handwired/symmetric70_proto/promicro/normal:default:flash` + +## Measurement result +### Pro Micro (ATmega32u4 16Mhz) +#### Default setting (show `matrix_scan()` time) + - `make MTEST=matrix_debug_scan handwired/symmetric70_proto/promicro/normal:default:flash` + - CH1: Row 0 + - CH2: Row 1 + - CH3: Row 4 + - CH4: matrix_scan() + - Execution time of matrix_scan() 503us + - Frequency of matrix scan 1.81kHz (551.0us) + ![DS1Z_QuickPrint2](https://user-images.githubusercontent.com/2170248/115994477-0ba64400-a612-11eb-98ba-b8cc362f26ac.png) + +#### Always call `matrix_output_unselect_delay()` (show `matrix_scan()` time, default MATRIX_IO_DELAY) + - `make MTEST=matrix_debug_scan,always_delay handwired/symmetric70_proto/promicro/normal:default:flash` + - CH1: Row 0 + - CH2: Row 1 + - CH3: Row 4 + - CH4: matrix_scan() + - Execution time of matrix_scan() 521us + - Frequency of matrix scan 1.76kHz (568.5us) + ![DS1Z_QuickPrint1](https://user-images.githubusercontent.com/2170248/115994488-1660d900-a612-11eb-83b1-cd820607db03.png) + +#### Adaptive delay (show `matrix_scan()` time, MATRIX_IO_DELAY = 0) + - `make MTEST=matrix_debug_scan,mdelay0,adaptive_delay handwired/symmetric70_proto/promicro/normal:default:flash` + - CH1: Row 0 + - CH2: Row 1 + - CH3: Row 4 + - CH4: matrix_scan() + - Execution time of matrix_scan() 383us + - Frequency of matrix scan 2.32kHz (431us) + ![DS1Z_QuickPrint3](https://user-images.githubusercontent.com/2170248/115994939-034f0880-a614-11eb-861f-b83a31efa51a.png) + +#### Adaptive delay (show delay time, MATRIX_IO_DELAY = 0) + - `make MTEST=matrix_debug_delay,mdelay0,adaptive_delay handwired/symmetric70_proto/promicro/normal:default:flash` + +##### Press R0C1, R1C1 key + - CH1: Row 0 + - CH2: Row 1 + - CH3: Row 4 + - CH4: delay time + - Delay time 68us + - Frequency of matrix scan 1.77kHz (565us) + ![DS1Z_QuickPrint55](https://user-images.githubusercontent.com/2170248/119561268-ead33900-bddf-11eb-9cc4-7e04826486cf.png) + +#### Fast adaptive delay (show `matrix_scan()` time, MATRIX_IO_DELAY = 0) + - `make MTEST=matrix_debug_scan,mdelay0,adaptive_delay_fast handwired/symmetric70_proto/promicro/normal:default:flash` + - CH1: Row 0 + - CH2: Row 1 + - CH3: Row 4 + - CH4: matrix_scan() + - Execution time of matrix_scan() 382us + - Frequency of matrix scan 2.33kHz (428us) + ![DS1Z_QuickPrint56](https://user-images.githubusercontent.com/2170248/119561280-eeff5680-bddf-11eb-9576-e4cf64751955.png) + +#### Fast adaptive delay (show delay time, MATRIX_IO_DELAY = 0) + - `make MTEST=matrix_debug_delay,mdelay0,adaptive_delay_fast handwired/symmetric70_proto/promicro/normal:default:flash` + +##### Press R0C1, R1C1 key + - CH1: Row 0 + - CH2: Row 1 + - CH3: Row 4 + - CH4: delay time + - Delay time 11us + - Frequency of matrix scan 2.21kHz (452us) + ![DS1Z_QuickPrint57](https://user-images.githubusercontent.com/2170248/119561318-faeb1880-bddf-11eb-8592-694f9ecb2248.png) + +### Proton C (STM32F303 72MHz) +#### Default setting (show `matrix_scan()` time) + - `make MTEST=matrix_debug_scan handwired/symmetric70_proto/proton_c/normal:default:flash` + - CH1: Row 0 + - CH2: Row 1 + - CH3: Row 4 + - CH4: matrix_scan() + - Execution time of matrix_scan() 210us + - Frequency of matrix scan 4.35kHz (230.0us) + ![DS1Z_QuickPrint16](https://user-images.githubusercontent.com/2170248/116131295-2ad2cd80-a707-11eb-8d0a-6f7912456e03.png) + +#### Always call `matrix_output_unselect_delay()` (show `matrix_scan()` time, default MATRIX_IO_DELAY) + - `make MTEST=matrix_debug_scan,always_delay handwired/symmetric70_proto/proton_c/normal:default:flash` + - CH1: Row 0 + - CH2: Row 1 + - CH3: Row 4 + - CH4: matrix_scan() + - Execution time of matrix_scan() 242us + - Frequency of matrix scan 3.85kHz (260.0us) + ![DS1Z_QuickPrint17](https://user-images.githubusercontent.com/2170248/116131308-31f9db80-a707-11eb-8db7-d1960fa7b068.png) + +#### Adaptive delay (show `matrix_scan()` time, MATRIX_IO_DELAY = 0) + - `make MTEST=matrix_debug_scan,mdelay0,adaptive_delay handwired/symmetric70_proto/proton_c/normal:default:flash` + - CH1: Row 0 + - CH2: Row 1 + - CH3: Row 4 + - CH4: matrix_scan() + - Execution time of matrix_scan() 76.4us + - Frequency of matrix scan 10.6kHz (94.4us) + ![DS1Z_QuickPrint18](https://user-images.githubusercontent.com/2170248/116131369-44741500-a707-11eb-9c74-fa39d9e80947.png) + +#### Adaptive delay (show delay time, MATRIX_IO_DELAY = 0) + - `make MTEST=matrix_debug_delay,mdelay0,adaptive_delay handwired/symmetric70_proto/proton_c/normal:default:flash` + +##### Press R0C1, R1C1 key + - CH1: Row 0 + - CH2: Row 1 + - CH3: Row 4 + - CH4: delay time + - Delay time 7.6us + - Frequency of matrix scan 9.47kHz (105.6us) + ![DS1Z_QuickPrint58](https://user-images.githubusercontent.com/2170248/119666783-a3e15400-be70-11eb-9a58-220032117efd.png) + +##### Connect a 500pF capacitor between C2 line and GND, Press R0C2, R1C2, R2C2, R3C2, R4C2 keys + - CH1: Row 0 + - CH2: Row 1 + - CH3: Col 2 + - CH4: delay time + - Delay time 12us + alpha + - Frequency of matrix scan 5.45kHz (183us) + - Threshold Voltage 1.9V + ![DS1Z_QuickPrint59](https://user-images.githubusercontent.com/2170248/119666946-cc694e00-be70-11eb-9b97-4c500416d774.png) + +##### Connect a 1000pF capacitor between C2 line and GND, Press R0C2, R1C2, R2C2, R3C2, R4C2 keys + - CH1: Row 0 + - CH2: Row 1 + - CH3: Col 2 + - CH4: delay time + - Delay time 20us + alpha + - Frequency of matrix scan 4.48kHz (223us) + - Threshold Voltage 1.9V + ![DS1Z_QuickPrint60](https://user-images.githubusercontent.com/2170248/119667127-f3c01b00-be70-11eb-8e7f-6f0a81f95e97.png) + +#### Fast adaptive delay (show `matrix_scan()` time, MATRIX_IO_DELAY = 0) + - `make MTEST=matrix_debug_scan,mdelay0,adaptive_delay_fast handwired/symmetric70_proto/proton_c/normal:default:flash` + - CH1: Row 0 + - CH2: Row 1 + - CH3: Row 4 + - CH4: matrix_scan() + - Execution time of matrix_scan() 75.6us + - Frequency of matrix scan 10.8kHz (92.2us) + ![DS1Z_QuickPrint62](https://user-images.githubusercontent.com/2170248/119667218-0b979f00-be71-11eb-946c-16f0a0454056.png) + +#### Fast adaptive delay (show delay time, MATRIX_IO_DELAY = 0) + - `make MTEST=matrix_debug_delay,mdelay0,adaptive_delay_fast handwired/symmetric70_proto/proton_c/normal:default:flash` + +##### Press R0C1, R1C1 key + - CH1: Row 0 + - CH2: Row 1 + - CH3: Row 4 + - CH4: delay time + - Delay time 1.6us + - Frequency of matrix scan 10.6kHz (94.4us) + ![DS1Z_QuickPrint63](https://user-images.githubusercontent.com/2170248/119667378-33870280-be71-11eb-95aa-64213138ddac.png) + ![DS1Z_QuickPrint64](https://user-images.githubusercontent.com/2170248/119667504-52859480-be71-11eb-963e-eebc6e3da9dc.png) + +##### Connect a 500pF capacitor between C2 line and GND, Press R0C2, R1C2, R2C2, R3C2, R4C2 keys + - CH1: Row 0 + - CH2: Row 1 + - CH3: Col 2 + - CH4: delay time + - Delay time 13.2us + - Frequency of matrix scan 6.58kHz (152.6us) + - Threshold Voltage 1.9V + ![DS1Z_QuickPrint65](https://user-images.githubusercontent.com/2170248/119667644-72b55380-be71-11eb-8030-854de1900408.png) + +##### Connect a 1000pF capacitor between C2 line and GND, Press R0C2, R1C2, R2C2, R3C2, R4C2 keys + - CH1: Row 0 + - CH2: Row 1 + - CH3: Col 2 + - CH4: delay time + - Delay time 20us + - Frequency of matrix scan 5.30kHz (188.8us) + - Threshold Voltage 1.9V + ![DS1Z_QuickPrint66](https://user-images.githubusercontent.com/2170248/119667785-8f518b80-be71-11eb-8d40-fc3293aa072b.png) diff --git a/keyboards/handwired/symmetric70_proto/matrix_fast/cpp_map.h b/keyboards/handwired/symmetric70_proto/matrix_fast/cpp_map.h new file mode 100644 index 000000000000..d197be6d9f04 --- /dev/null +++ b/keyboards/handwired/symmetric70_proto/matrix_fast/cpp_map.h @@ -0,0 +1,53 @@ +/* Copyright 2021 mtei + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once +// clang-format off + +#define _MAP1(E, _1) E(_1) +#define _MAP2(E, _1,_2) E(_1) E(_2) +#define _MAP3(E, _1,_2,_3) E(_1) E(_2) E(_3) +#define _MAP4(E, _1,_2,_3,_4) E(_1) E(_2) E(_3) E(_4) +#define _MAP5(E, _1,_2,_3,_4,_5) E(_1) E(_2) E(_3) E(_4) E(_5) +#define _MAP6(E, _1,_2,_3,_4,_5,_6) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) +#define _MAP7(E, _1,_2,_3,_4,_5,_6,_7) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) +#define _MAP8(E, _1,_2,_3,_4,_5,_6,_7,_8) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) +#define _MAP9(E, _1,_2,_3,_4,_5,_6,_7,_8,_9) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) +#define _MAP10(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) +#define _MAP11(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) +#define _MAP12(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) +#define _MAP13(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) +#define _MAP14(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) +#define _MAP15(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) +#define _MAP16(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) +#define _MAP17(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) +#define _MAP18(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) +#define _MAP19(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) E(_19) +#define _MAP20(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) E(_19) E(_20) +#define _MAP21(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) E(_19) E(_20) E(_21) +#define _MAP22(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) E(_19) E(_20) E(_21) E(_22) +#define _MAP23(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) E(_19) E(_20) E(_21) E(_22) E(_23) +#define _MAP24(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) E(_19) E(_20) E(_21) E(_22) E(_23) E(_24) +#define _MAP25(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) E(_19) E(_20) E(_21) E(_22) E(_23) E(_24) E(_25) +#define _MAP26(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) E(_19) E(_20) E(_21) E(_22) E(_23) E(_24) E(_25) E(_26) +#define _MAP27(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,_27) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) E(_19) E(_20) E(_21) E(_22) E(_23) E(_24) E(_25) E(_26) E(_27) +#define _MAP28(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,_27,_28) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) E(_19) E(_20) E(_21) E(_22) E(_23) E(_24) E(_25) E(_26) E(_27) E(_28) +#define _MAP29(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,_27,_28,_29) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) E(_19) E(_20) E(_21) E(_22) E(_23) E(_24) E(_25) E(_26) E(_27) E(_28) E(_29) +#define _MAP30(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,_27,_28,_29,_30) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) E(_19) E(_20) E(_21) E(_22) E(_23) E(_24) E(_25) E(_26) E(_27) E(_28) E(_29) E(_30) +#define _MAP31(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,_27,_28,_29,_30,_31) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) E(_19) E(_20) E(_21) E(_22) E(_23) E(_24) E(_25) E(_26) E(_27) E(_28) E(_29) E(_30) E(_31) +#define _MAP32(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,_27,_28,_29,_30,_31,_32) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) E(_19) E(_20) E(_21) E(_22) E(_23) E(_24) E(_25) E(_26) E(_27) E(_28) E(_29) E(_30) E(_31) E(_32) + +#define SELECT_MAP(e,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,_27,_28,_29,_30,_31,_32,NAME,...) NAME +#define MAP(E,...) SELECT_MAP(E,__VA_ARGS__,_MAP32,_MAP31,_MAP30,_MAP29,_MAP28,_MAP27,_MAP26,_MAP25,_MAP24,_MAP23,_MAP22,_MAP21,_MAP20,_MAP19,_MAP18,_MAP17,_MAP16,_MAP15,_MAP14,_MAP13,_MAP12,_MAP11,_MAP10,_MAP9,_MAP8,_MAP7,_MAP6,_MAP5,_MAP4,_MAP3,_MAP2,_MAP1)(E,__VA_ARGS__) diff --git a/keyboards/handwired/symmetric70_proto/matrix_fast/gpio_extr.h b/keyboards/handwired/symmetric70_proto/matrix_fast/gpio_extr.h new file mode 100644 index 000000000000..e31cb5f3a5d9 --- /dev/null +++ b/keyboards/handwired/symmetric70_proto/matrix_fast/gpio_extr.h @@ -0,0 +1,28 @@ +#pragma once +// clang-format off + +#if defined(__AVR__) +typedef uint8_t port_data_t; + +#define readPort(port) PINx_ADDRESS(port) + +#define setPortBitInput(port, bit) (DDRx_ADDRESS(port) &= ~_BV((bit)&0xF), PORTx_ADDRESS(port) &= ~_BV((bit)&0xF)) +#define setPortBitInputHigh(port, bit) (DDRx_ADDRESS(port) &= ~_BV((bit)&0xF), PORTx_ADDRESS(port) |= _BV((bit)&0xF)) +#define setPortBitOutput(port, bit) (DDRx_ADDRESS(port) |= _BV((bit)&0xF)) + +#define writePortBitLow(port, bit) (PORTx_ADDRESS(port) &= ~_BV((bit)&0xF)) +#define writePortBitHigh(port, bit) (PORTx_ADDRESS(port) |= _BV((bit)&0xF)) + +#else +typedef uint16_t port_data_t; + +#define readPort(qmk_pin) palReadPort(PAL_PORT(qmk_pin)) + +#define setPortBitInput(qmk_pin, bit) palSetPadMode(PAL_PORT(qmk_pin), bit, PAL_MODE_INPUT) +#define setPortBitInputHigh(qmk_pin, bit) palSetPadMode(PAL_PORT(qmk_pin), bit, PAL_MODE_INPUT_PULLUP) +#define setPortBitInputLow(qmk_pin, bit) palSetPadMode(PAL_PORT(qmk_pin), bit, PAL_MODE_INPUT_PULLDOWN) +#define setPortBitOutput(qmk_pin, bit) palSetPadMode(PAL_PORT(qmk_pin), bit, PAL_MODE_OUTPUT_PUSHPULL) + +#define writePortBitLow(qmk_pin, bit) palClearLine(PAL_LINE(PAL_PORT(qmk_pin), bit)) +#define writePortBitHigh(qmk_pin, bit) palSetLine(PAL_LINE(PAL_PORT(qmk_pin), bit)) +#endif diff --git a/keyboards/handwired/symmetric70_proto/matrix_fast/matrix.c b/keyboards/handwired/symmetric70_proto/matrix_fast/matrix.c new file mode 100644 index 000000000000..cb21bfcf8dc3 --- /dev/null +++ b/keyboards/handwired/symmetric70_proto/matrix_fast/matrix.c @@ -0,0 +1,234 @@ +/* +Copyright 2021 mtei + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +// clang-format off +#include +#include +#include +#ifndef readPort +# include "gpio_extr.h" +#endif +#include "util.h" +#include "matrix.h" +#include "matrix_extr.h" +#include "debounce.h" +#include "quantum.h" + +#define ALWAYS_INLINE inline __attribute__((always_inline)) +#define NO_INLINE __attribute__((noinline)) +#define LOCAL_FUNC static +#define LOCAL_DATA static + +#ifndef _BV +# define _BV(bit) (1 << (bit)) +#endif + +#ifndef MATRIX_DEBUG_PIN +# define MATRIX_DEBUG_PIN_INIT() +# define MATRIX_DEBUG_SCAN_START() +# define MATRIX_DEBUG_SCAN_END() +# define MATRIX_DEBUG_DELAY_START() +# define MATRIX_DEBUG_DELAY_END() +# define MATRIX_DEBUG_GAP() +#else +# define MATRIX_DEBUG_GAP() asm volatile("nop \n nop":::"memory") +#endif + +typedef uint16_t port_width_t; +#if MATRIX_TYPE == DIRECT_SWITCH || MATRIX_TYPE == DIODE_COL2ROW +# define MATRIX_LINES MATRIX_ROWS +typedef matrix_row_t matrix_line_t; +#endif +#if MATRIX_TYPE == DIODE_ROW2COL +# define MATRIX_LINES MATRIX_COLS +typedef matrix_col_t matrix_line_t; +#endif +typedef struct _port_descriptor { + int device; + pin_t port; +} port_descriptor; + +/* matrix state(1:on, 0:off) */ +extern matrix_row_t raw_matrix[MATRIX_ROWS]; // raw values +extern matrix_row_t matrix[MATRIX_ROWS]; // debounced values + +#define setPortBitOutput_writeLow(port, bit) \ + do { setPortBitOutput(port, bit); writePortBitLow(port, bit); } while(0) +#define setPortBitOutput_writeLow_atomic(port, bit) \ + do { ATOMIC_BLOCK_FORCEON { setPortBitOutput_writeLow(port, bit); } } while(0) +#define setPortBitInputHigh_atomic(port, bit) \ + do { ATOMIC_BLOCK_FORCEON { setPortBitInputHigh(port, bit); } } while(0) + +#if defined(MATRIX_IN_PORTS) && defined(MATRIX_IN_PINS) +# include "matrix_config_expand.c" +#else +# error matrix.c need defined MATRIX_IN_PORTS and MATRIX_IN_PINS +#endif + +LOCAL_FUNC +void unselect_output(uint8_t out_index) { + unselect_output_inline(out_index); +} + +LOCAL_FUNC +void init_output_ports(void) { + for (int i = 0; i < END_outpin_index; i++) { + unselect_output(i); + } +} + +LOCAL_FUNC +void init_all_ports(void) { + init_input_ports(); + init_output_ports(); + init_inport_mask(); + init_extension(); +} + +LOCAL_FUNC ALWAYS_INLINE void select_line_and_read_input_ports(uint8_t current_line, port_width_t port_buffer[NUM_OF_INPUT_PORTS]); +LOCAL_FUNC void select_line_and_read_input_ports(uint8_t current_line, port_width_t port_buffer[NUM_OF_INPUT_PORTS]) { + // Select row (or col) + select_output(current_line); + matrix_output_select_delay(); + + // Read ports + read_all_input_ports(port_buffer, false); + + // Unselect row (or col) + unselect_output_inline(current_line); +} + +LOCAL_FUNC ALWAYS_INLINE void read_matrix_line(matrix_line_t phy_matrix[], uint8_t current_line); + +#if MATRIX_TYPE == DIODE_ROW2COL || MATRIX_TYPE == DIODE_COL2ROW +LOCAL_FUNC void read_matrix_line(matrix_line_t phy_matrix[], uint8_t current_line) { + // Start with a clear matrix row + matrix_line_t current_line_value = 0; + port_width_t port_buffer[NUM_OF_INPUT_PORTS]; + +#ifdef MATRIX_GPIO_NEED_SEPARATE_ATOMIC + select_line_and_read_input_ports(current_line, port_buffer); +#else + ATOMIC_BLOCK_FORCEON { + select_line_and_read_input_ports(current_line, port_buffer); + } +#endif + + // Build row (or col) + current_line_value = build_matrix_line(port_buffer); + + // Wait signal raise up + if (current_line_value) { + MATRIX_DEBUG_DELAY_START(); + wait_unselect_done(); + MATRIX_DEBUG_DELAY_END(); + } + phy_matrix[current_line] = current_line_value; +} +#endif // MATRIX_TYPE == DIODE_ROW2COL || MATRIX_TYPE == DIODE_COL2ROW + +#if MATRIX_TYPE == DIRECT_SWITCH +LOCAL_FUNC void read_matrix_line(matrix_line_t phy_matrix[], uint8_t current_line) { + port_width_t port_buffer[NUM_OF_INPUT_PORTS]; + + if (current_line != 0) { + return; + } + + for (uint8_t i = 0; i < MATRIX_LINES; i++) { + phy_matrix[i] = 0; + } + + read_all_input_ports(port_buffer, false); + + // Build matrix + build_matrix_direct(port_buffer, phy_matrix); +} +#endif // MATRIX_TYPE == DIRECT_SWITCH + +void matrix_init(void) { + // initialize key pins + init_all_ports(); + + // initialize matrix state: all keys off + for (uint8_t i = 0; i < MATRIX_ROWS; i++) { + raw_matrix[i] = 0; + matrix[i] = 0; + } + + debounce_init(MATRIX_ROWS); + + matrix_init_quantum(); +} + +uint8_t matrix_scan(void) { + matrix_line_t phy_matrix[MATRIX_LINES]; + + MATRIX_DEBUG_PIN_INIT(); + + MATRIX_DEBUG_SCAN_START(); + + // read I/O port to phy_matrix[] (physical matrix) + //select line, read inputs + for (uint8_t current_line = 0; current_line < MATRIX_LINES; current_line++) { + read_matrix_line(phy_matrix, current_line); + } + MATRIX_DEBUG_SCAN_END(); MATRIX_DEBUG_GAP(); MATRIX_DEBUG_SCAN_START(); + + bool changed = false; +#if MATRIX_TYPE == DIRECT_SWITCH || MATRIX_TYPE == DIODE_COL2ROW + // copy phy_matrix[] to raw_matrix[] + for (uint8_t current_line = 0; current_line < MATRIX_ROWS; current_line++) { + if (raw_matrix[current_line] != phy_matrix[current_line]) { + changed = true; + raw_matrix[current_line] = phy_matrix[current_line]; + } + } +#endif +#if MATRIX_TYPE == DIODE_ROW2COL + // transpose phy_matrix[] to raw_matrix[] + matrix_row_t trans_matrix[MATRIX_ROWS]; + for (uint8_t i = 0; i < MATRIX_ROWS; i++ ) { + trans_matrix[i] = 0; + } + for (uint8_t src_line = 0; src_line < MATRIX_LINES; src_line++) { + matrix_line_t src_line_data = phy_matrix[src_line]; + matrix_row_t dist_bit = MATRIX_ROW_SHIFTER << src_line; + for (uint8_t dist_rows = 0; dist_rows < MATRIX_ROWS; dist_rows++) { + if ((src_line_data & 1) == 1) { + trans_matrix[dist_rows] |= dist_bit; + } + src_line_data >>= 1; + } + } + for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) { + if (raw_matrix[current_row] != trans_matrix[current_row]) { + changed = true; + raw_matrix[current_row] = trans_matrix[current_row]; + } + } +#endif + MATRIX_DEBUG_SCAN_END(); MATRIX_DEBUG_GAP(); MATRIX_DEBUG_SCAN_START(); + + // debounce raw_matrix[] to matrix[] + debounce(raw_matrix, matrix, MATRIX_ROWS, changed); + MATRIX_DEBUG_SCAN_END(); MATRIX_DEBUG_GAP(); + + MATRIX_DEBUG_SCAN_START(); + matrix_scan_quantum(); + MATRIX_DEBUG_SCAN_END(); + return (uint8_t)changed; +} diff --git a/keyboards/handwired/symmetric70_proto/matrix_fast/matrix_config_expand.c b/keyboards/handwired/symmetric70_proto/matrix_fast/matrix_config_expand.c new file mode 100644 index 000000000000..0df605db47c5 --- /dev/null +++ b/keyboards/handwired/symmetric70_proto/matrix_fast/matrix_config_expand.c @@ -0,0 +1,234 @@ +/* +Copyright 2021 mtei + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +// clang-format off + +#include "matrix_extr.h" + +#ifdef DEBUG_MATRIX_CONFIG +// config expand debug +// avr-gcc -DDEBUG_MATRIX_CONFIG=\"test_config.h\" -E -C matrix_config_expand.c +# include DEBUG_MATRIX_CONFIG +#endif + +#undef NO_PIN /* cancel NO_PIN define in tmk_core/common/pin_defs.h */ +#define NO_PIN NO_PORT, 0 +#if MATRIX_TYPE == DIRECT_SWITCH +# undef MATRIX_OUT_PORTS +# define MATRIX_OUT_PINS (0, NO_PIN) +#endif + +#include "cpp_map.h" + +#if defined(MATRIX_EXTENSION_74HC157) || defined(MATRIX_EXTENSION_74HC153) +# define MATRIX_EXTENSION "matrix_extension_74hc15x.c" +#endif + +#ifdef MATRIX_EXTENSION +# include MATRIX_EXTENSION +#endif + +#ifdef MATRIX_GPIO_NEED_SEPARATE_ATOMIC +# ifndef setMatrixInputHigh +# define setMatrixInputHigh(dev, port, bit) do { if ((dev) == MCU_GPIO) { setPortBitInputHigh_atomic(port, bit); }} while(0) +# endif +# ifndef setMatrixOutput_writeHighZ +# define setMatrixOutput_writeHighZ(dev, port, bit) do { if ((dev) == MCU_GPIO) { setPortBitInputHigh_atomic(port, bit); }} while(0) +# endif +# ifndef setMatrixOutput_writeLow +# define setMatrixOutput_writeLow(dev, port, bit) do { if ((dev) == MCU_GPIO) { setPortBitOutput_writeLow_atomic(port, bit); }} while(0) +# endif +#else +# ifndef setMatrixInputHigh +# define setMatrixInputHigh(dev, port, bit) do { if ((dev) == MCU_GPIO) { setPortBitInputHigh(port, bit); }} while(0) +# endif +# ifndef setMatrixOutput_writeHighZ +# define setMatrixOutput_writeHighZ(dev, port, bit) do { if ((dev) == MCU_GPIO) { setPortBitInputHigh(port, bit); }} while(0) +# endif +# ifndef setMatrixOutput_writeLow +# define setMatrixOutput_writeLow(dev, port, bit) do { if ((dev) == MCU_GPIO) { setPortBitOutput_writeLow(port, bit); }} while(0) +# endif +#endif + +#ifndef readMatrixPort +# define readMatrixPort(dev, port) (((dev) == MCU_GPIO) ? readPort(port) : 0) +#endif +#ifndef getMatrixInputMaskBit +# define getMatrixInputMaskBit(dev, bit) (((dev) != NO_DEVICE) ? _BV((bit)&0xF) : 0) +#endif + +#ifndef init_extension +# define init_extension() +#endif + +enum DEVICE_NAME { + MCU_GPIO, + NO_DEVICE, +#ifdef MATRIX_DEVICES + MATRIX_DEVICES +#endif +}; + +#define _INPUT_PORTS_ENUM_ELEMENT(name, dev, port) inport_index_##name, +#define INPUT_PORTS_ENUM_ELEMENT(x) _INPUT_PORTS_ENUM_ELEMENT x +enum INPUT_PORTS { + INPUT_PORTS_ENUM_ELEMENT((NO_PORT, NO_DEVICE, 0)) + MAP(INPUT_PORTS_ENUM_ELEMENT, MATRIX_IN_PORTS) + NUM_OF_INPUT_PORTS +}; + +#define _INPUT_PINS_ENUM_ELEMENT(index, port, bit) inpin_index_##index, +#define INPUT_PINS_ENUM_ELEMENT(x) _INPUT_PINS_ENUM_ELEMENT x +enum INPUT_PINS { + MAP(INPUT_PINS_ENUM_ELEMENT, MATRIX_IN_PINS) + END_inpin_index +}; + +#define _OUTPUT_PORTS_ENUM_ELEMENT(name, dev, port) outport_index_##name, +#define OUTPUT_PORTS_ENUM_ELEMENT(x) _OUTPUT_PORTS_ENUM_ELEMENT x +enum OUTPUT_PORTS { + OUTPUT_PORTS_ENUM_ELEMENT((NO_PORT, NO_DEVICE, 0)) +#ifdef MATRIX_OUT_PORTS + MAP(OUTPUT_PORTS_ENUM_ELEMENT, MATRIX_OUT_PORTS) +#endif + NUM_OF_OUTPUT_PORTS +}; + +#define _OUTPUT_PINS_ENUM_ELEMENT(index, port, bit) outpin_index_##index, +#define OUTPUT_PINS_ENUM_ELEMENT(x) _OUTPUT_PINS_ENUM_ELEMENT x +enum OUTPUT_PINS { + MAP(OUTPUT_PINS_ENUM_ELEMENT, MATRIX_OUT_PINS) + END_outpin_index +}; + +port_width_t iport_mask[NUM_OF_INPUT_PORTS]; + +#define _INPUT_PORTS_LIST_ELEMENT(name, dev, port) \ + [inport_index_##name] = { dev, port }, +#define INPUT_PORTS_LIST_ELEMENT(x) _INPUT_PORTS_LIST_ELEMENT x +LOCAL_DATA +const port_descriptor inport_list[NUM_OF_INPUT_PORTS] = { + INPUT_PORTS_LIST_ELEMENT((NO_PORT, NO_DEVICE, 0)) + MAP(INPUT_PORTS_LIST_ELEMENT, MATRIX_IN_PORTS) +}; + +#define _OUTPUT_PORTS_LIST_ELEMENT(name, dev, port) \ + [outport_index_##name] = { dev, port }, +#define OUTPUT_PORTS_LIST_ELEMENT(x) _OUTPUT_PORTS_LIST_ELEMENT x +LOCAL_DATA +const port_descriptor outport_list[NUM_OF_OUTPUT_PORTS] = { + OUTPUT_PORTS_LIST_ELEMENT((NO_PORT, NO_DEVICE, 0)) +#ifdef MATRIX_OUT_PORTS + MAP(OUTPUT_PORTS_LIST_ELEMENT, MATRIX_OUT_PORTS) +#endif +}; + +#define _SELECT_OUTPUT_PIN(index, pname, bit) \ + case outpin_index_##index: \ + setMatrixOutput_writeLow(outport_list[outport_index_##pname].device, \ + outport_list[outport_index_##pname].port, bit); \ + break; +#define SELECT_OUTPUT_PIN(x) _SELECT_OUTPUT_PIN x +LOCAL_FUNC ALWAYS_INLINE void select_output(uint8_t out_index); +LOCAL_FUNC +void select_output(uint8_t out_index) { + switch (out_index) { + MAP(SELECT_OUTPUT_PIN, MATRIX_OUT_PINS) + } +} + +#define _UNSELECT_OUTPUT_PIN(index, pname, bit) \ + case outpin_index_##index: \ + setMatrixOutput_writeHighZ(outport_list[outport_index_##pname].device, \ + outport_list[outport_index_##pname].port, bit); \ + break; +#define UNSELECT_OUTPUT_PIN(x) _UNSELECT_OUTPUT_PIN x +LOCAL_FUNC ALWAYS_INLINE void unselect_output_inline(uint8_t out_index); +LOCAL_FUNC +void unselect_output_inline(uint8_t out_index) { + switch (out_index) { + MAP(UNSELECT_OUTPUT_PIN, MATRIX_OUT_PINS) + } +} + +#define _INIT_INPUT_PIN(index, pname, bit) \ + setMatrixInputHigh(inport_list[inport_index_##pname].device, \ + inport_list[inport_index_##pname].port, bit); +#define INIT_INPUT_PIN(x) _INIT_INPUT_PIN x +LOCAL_FUNC +void init_input_ports(void) { + MAP(INIT_INPUT_PIN, MATRIX_IN_PINS) +} + +#define _INIT_INPORT_MASK(index, pname, bit) \ + iport_mask[inport_index_##pname] |= getMatrixInputMaskBit(inport_list[inport_index_##pname].device, bit); +#define INIT_INPORT_MASK(x) _INIT_INPORT_MASK x +LOCAL_FUNC +void init_inport_mask(void) { + for (int i = 0; i < NUM_OF_INPUT_PORTS; i++ ) { + iport_mask[i] = 0; + } + MAP(INIT_INPORT_MASK, MATRIX_IN_PINS) +} + +#define _READ_INPUT_PORT(name, dev, port) \ + buffer[inport_index_##name] = readMatrixPort(dev, port); +#define READ_INPUT_PORT(x) _READ_INPUT_PORT x +LOCAL_FUNC +ALWAYS_INLINE void read_all_input_ports(port_width_t buffer[NUM_OF_INPUT_PORTS], bool wait_unselect); +LOCAL_FUNC +void read_all_input_ports(port_width_t buffer[NUM_OF_INPUT_PORTS], bool wait_unselect) { + READ_INPUT_PORT((NO_PORT, NO_DEVICE, 0)) + MAP(READ_INPUT_PORT, MATRIX_IN_PORTS) +} + +#define _MASK_INPUT(name, dev, port) \ + mask |= ((~buffer[inport_index_##name]) & iport_mask[inport_index_##name]); +#define MASK_INPUT(x) _MASK_INPUT x +LOCAL_FUNC ALWAYS_INLINE void wait_unselect_done(void); +LOCAL_FUNC +void wait_unselect_done(void) { + port_width_t mask; + port_width_t buffer[NUM_OF_INPUT_PORTS]; + do { + read_all_input_ports(buffer, true); + MATRIX_DEBUG_DELAY_END(); + mask = 0; + MAP(MASK_INPUT, MATRIX_IN_PORTS); + MATRIX_DEBUG_DELAY_START(); + } while (mask != 0); +} + +#define _BUILD_INPUT_PORT(index, pname, bit) \ + result |= (buffer[inport_index_##pname] & _BV(bit)) ? 0 : _BV(inpin_index_##index); +#define BUILD_INPUT_PORT(x) _BUILD_INPUT_PORT x +LOCAL_FUNC ALWAYS_INLINE matrix_line_t build_matrix_line(port_width_t buffer[NUM_OF_INPUT_PORTS]); +LOCAL_FUNC +matrix_line_t build_matrix_line(port_width_t buffer[NUM_OF_INPUT_PORTS]) { + matrix_line_t result = 0; + MAP(BUILD_INPUT_PORT, MATRIX_IN_PINS); + return result; +} + +#define _BUILD_INPUT_PORT_DIRECT(index, pname, bit) \ + matrix[(inpin_index_##index)/MATRIX_COLS] \ + |= (buffer[inport_index_##pname] & _BV(bit)) ? 0 : _BV((inpin_index_##index)%MATRIX_COLS); +#define BUILD_INPUT_PORT_DIRECT(x) _BUILD_INPUT_PORT_DIRECT x +LOCAL_FUNC ALWAYS_INLINE void build_matrix_direct(port_width_t buffer[NUM_OF_INPUT_PORTS], matrix_line_t matrix[]); +LOCAL_FUNC +void build_matrix_direct(port_width_t buffer[NUM_OF_INPUT_PORTS], matrix_line_t matrix[]) { + MAP(BUILD_INPUT_PORT_DIRECT, MATRIX_IN_PINS); +} diff --git a/keyboards/handwired/symmetric70_proto/matrix_fast/matrix_extension_74hc15x.c b/keyboards/handwired/symmetric70_proto/matrix_fast/matrix_extension_74hc15x.c new file mode 100644 index 000000000000..bca53da24c29 --- /dev/null +++ b/keyboards/handwired/symmetric70_proto/matrix_fast/matrix_extension_74hc15x.c @@ -0,0 +1,72 @@ +/* +Copyright 2021 mtei + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +// clang-format off + +#if defined(MATRIX_EXTENSION_74HC157) +# define MATRIX_DEVICES MCU_GPIOa, MCU_GPIOb +# define IS_74HC15x(dev) ((dev)==MCU_GPIOa || (dev)==MCU_GPIOb) +# define MATRIX_EXT_74HC15x MATRIX_EXTENSION_74HC157 +#elif defined(MATRIX_EXTENSION_74HC153) +# define MATRIX_DEVICES MCU_GPIOa, MCU_GPIOb, MCU_GPIOc, MCU_GPIOd +# define IS_74HC15x(dev) ((dev)==MCU_GPIOa || (dev)==MCU_GPIOb || (dev)==MCU_GPIOc || (dev)==MCU_GPIOd) +# define MATRIX_EXT_74HC15x MATRIX_EXTENSION_74HC153 +#endif + +static const pin_t sel_pins[] = { MATRIX_EXT_74HC15x }; + +#ifdef MATRIX_GPIO_NEED_SEPARATE_ATOMIC +# define setMatrixInputHigh(dev, port, bit) \ + do { \ + if ((dev) == MCU_GPIO || IS_74HC15x(dev)) { \ + setPortBitInputHigh_atomic(port, bit); \ + } + } while(0) +#else +# define setMatrixInputHigh(dev, port, bit) \ + do { \ + if ((dev) == MCU_GPIO || IS_74HC15x(dev)) { \ + setPortBitInputHigh(port, bit); \ + } \ + } while(0) +#endif + +LOCAL_FUNC ALWAYS_INLINE void select74HC15x(uint8_t devid); +LOCAL_FUNC +void select74HC15x(uint8_t devid) { + writePin(sel_pins[0], devid&1); +#if defined(MATRIX_EXTENSION_74HC153) + writePin(sel_pins[1], devid&2); +#endif +} + +LOCAL_FUNC ALWAYS_INLINE port_width_t readPortMultiplexer(uint8_t devid, pin_t port); +LOCAL_FUNC port_width_t readPortMultiplexer(uint8_t devid, pin_t port) { + select74HC15x(devid); + waitInputPinDelay(); + return readPort(port); +} + +#define readMatrixPort(dev, port) \ + ((dev) == MCU_GPIO)? readPort(port): (IS_74HC15x(dev))? readPortMultiplexer((dev)-MCU_GPIOa, port):0 + +#define INIT_74HC15X(x) setPinOutput(x); writePinLow(x); +LOCAL_FUNC +void init_74hc15x(void) { + MAP(INIT_74HC15X, MATRIX_EXT_74HC15x) +} +#define init_extension() init_74hc15x() + diff --git a/keyboards/handwired/symmetric70_proto/matrix_fast/matrix_extr.h b/keyboards/handwired/symmetric70_proto/matrix_fast/matrix_extr.h new file mode 100644 index 000000000000..e0cf528919b7 --- /dev/null +++ b/keyboards/handwired/symmetric70_proto/matrix_fast/matrix_extr.h @@ -0,0 +1,36 @@ +#pragma once +// clang-format off + +#define DIRECT_SWITCH 1 +#define DIODE_ROW2COL 2 +#define DIODE_COL2ROW 3 + +#ifndef ROW2COL +# define COL2ROW 0 +# define ROW2COL 1 +#endif + +#ifdef DIRECT_PINS +# define MATRIX_TYPE DIRECT_SWITCH +#else +# if DIODE_DIRECTION == ROW2COL +# define MATRIX_TYPE DIODE_ROW2COL +# endif +# if DIODE_DIRECTION == COL2ROW +# define MATRIX_TYPE DIODE_COL2ROW +# endif +#endif + +#ifndef MATRIX_TYPE +# error "MATRIX_TYPE could not be determined." +#endif + +#if (MATRIX_ROWS <= 8) +typedef uint8_t matrix_col_t; +#elif (MATRIX_ROWS <= 16) +typedef uint16_t matrix_col_t; +#elif (MATRIX_ROWS <= 32) +typedef uint32_t matrix_col_t; +#else +# error "MATRIX_ROWS: invalid value" +#endif diff --git a/keyboards/handwired/symmetric70_proto/matrix_fast/readme.md b/keyboards/handwired/symmetric70_proto/matrix_fast/readme.md new file mode 100644 index 000000000000..dc744a4c462c --- /dev/null +++ b/keyboards/handwired/symmetric70_proto/matrix_fast/readme.md @@ -0,0 +1,168 @@ +# Fast and extensible matrix.c + +This matrix.c is faster and more extensible than the standard quantum/matrix.c. + +* The execution speed of the `matrix_scan()` function is several times faster than quantum/matrix.c. +* In addition to handling MCU GPIOs, it can be extended to handle I/O extenders. + +## ToDo list +- [x] support Pro Micro +- [x] support Proton-C +- [x] support DIRECT_PINS +- [x] support DIODE_DIRECTION == ROW2COL +- [x] support 74HC157: quadruple 2-line to 1-line data selectors / multiplexers +- [x] support 74HC153: dual 4-line to 1-line data selectors / multiplexers +- [ ] support I/O expander (MCP23018) +- [ ] support MCU & I/O expander (MCP23018) mixture like ErgoDox + +## Configuration + +This matrix.c requires a different configuration than quantum/matrix.c. + +### Output pins configuration + +The output pins is the Row pins if `DIODE_DIRECTION == COL2ROW`, and the Col pins if `DIODE_DIRECTION == ROW2COL`. When DIRECT_PINS is defined, the output pins do not need to be set. + +Example: +```c +// list of OUTPUT(row) ports +#define MATRIX_OUT_PORTS \ + (Port_D, MCU_GPIO, D0), \ + (Port_C, MCU_GPIO, C0), \ + (Port_E, MCU_GPIO, E0), \ + (Port_B, MCU_GPIO, B0) +// list of OUTPUT pins +#define MATRIX_OUT_PINS \ + (0, Port_D, 4), \ + (1, Port_C, 6), \ + (2, Port_D, 7), \ + (3, Port_E, 6), \ + (4, Port_B, 4), \ + (5, Port_B, 5) +``` + +### Input pins configuration + +The input pins is the Col pins if `DIODE_DIRECTION == COL2ROW`, and the Row pins if `DIODE_DIRECTION == ROW2COL`. When DIRECT_PINS is defined, the input pin settings will enumerate the connection pins of all switches. + +Example: +```c +// list of INPUT ports +#define MATRIX_IN_PORTS (Port_F, MCU_GPIO, F0), (Port_B, MCU_GPIO, B0) +// list of INPUT pins +#define MATRIX_IN_PINS \ + (0, Port_F, 4), \ + (1, Port_F, 5), \ + (2, Port_F, 6), \ + (3, Port_F, 7), \ + (4, Port_B, 1), \ + (5, Port_B, 3) +``` + +### Multiplexer Extension + +By defining the `MATRIX_EXTENSION_74HC157` macro or `MATRIX_EXTENSION_74HC153` macro, you can connect a multiplexer to the GPIO to extend the input pins. + +Example: +```c +#define MATRIX_EXTENSION_74HC157 B2 /* or #define MATRIX_EXTENSION_74HC153 B2, B6 */ + +// list of OUTPUT ports +#define MATRIX_OUT_PORTS (Port_D, MCU_GPIO, D0), (Port_C, MCU_GPIO, C0), (Port_E, MCU_GPIO, E0), (Port_B, MCU_GPIO, B0) +// list of OUTPUT pins +#define MATRIX_OUT_PINS (0, Port_D, 4), (1, Port_C, 6), (2, Port_D, 7), (3, Port_E, 6), (4, Port_B, 4), (5, Port_B, 5) + +// list of INPUT ports +#define MATRIX_IN_PORTS \ + (Port_Fa, MCU_GPIOa, F0), \ + (Port_Ba, MCU_GPIOa, B0), \ + (Port_Fb, MCU_GPIOb, F0), \ + (Port_Bb, MCU_GPIOb, B0) +// list of INPUT pins +#define MATRIX_IN_PINS \ + (0, Port_Fa, 4), \ + (1, Port_Fb, 5), \ + (2, Port_Fb, 6), \ + (3, Port_Fa, 7), \ + (4, Port_Ba, 1), \ + (5, Port_Bb, 3) +``` + +### I/O expander Extension + +I plan to provide extensions to support I/O expanders such as MCP23018 and PCA9555. + +## Compile + +* Measure the execution time of matrix_scan() + * `make MTEST=matrix_debug_scan[,..] handwired/symmetric70_proto/promicro/fast:default:flash` +* Measure delay time. + * `make MTEST=matrix_debug_delay[,..] handwired/symmetric70_proto/promicro/fast:default:flash` + +## Measurement result +### Pro Micro (ATmega32u4 16Mhz) +#### Default setting (show `matrix_scan()` time) + - `make MTEST=matrix_debug_scan handwired/symmetric70_proto/promicro/fast:default:flash` + - CH1: Row 0 + - CH2: Row 1 + - CH3: Row 4 + - CH4: matrix_scan() + - Execution time of matrix_scan() 75.6us + - Frequency of matrix scan 8.09kHz (123.6us) + ![DS1Z_QuickPrint7](https://user-images.githubusercontent.com/2170248/116003927-538d9100-a63b-11eb-9b36-7db47d9b1541.png) + +#### Default setting (show delay time) + - `make MTEST=matrix_debug_delay handwired/symmetric70_proto/promicro/fast:default:flash` +##### Press R0C0 key + - CH1: Row 0 + - CH2: Row 1 + - CH3: Row 4 + - CH4: delay time + - Frequency of matrix scan 7.84kHz (127.6us) + +![DS1Z_QuickPrint9](https://user-images.githubusercontent.com/2170248/116003974-99e2f000-a63b-11eb-9c9e-3b3b1025db66.png) +![DS1Z_QuickPrint10](https://user-images.githubusercontent.com/2170248/116003978-a1a29480-a63b-11eb-97d8-5a6e11c0db2f.png) + +### Proton C +#### Default setting (show `matrix_scan()` time) + - `make MTEST=matrix_debug_scan handwired/symmetric70_proto/proton_c/fast:default:flash` + - CH1: Row 0 + - CH2: Row 1 + - CH3: Row 4 + - CH4: matrix_scan() + - Execution time of matrix_scan() 49.8us + - Frequency of matrix scan 15.1kHz (66.2.6us) + +![DS1Z_QuickPrint11](https://user-images.githubusercontent.com/2170248/116088141-8cca0d80-a6dc-11eb-8782-1d29c57690b8.png) + +#### Default setting (show delay time) + - `make MTEST=matrix_debug_delay handwired/symmetric70_proto/proton_c/fast:default:flash` +##### Press R0C0 key + - CH1: Row 0 + - CH2: Row 1 + - CH3: Row 4 + - CH4: delay time + - Frequency of matrix scan 13.9kHz (71.8us) + +![DS1Z_QuickPrint12](https://user-images.githubusercontent.com/2170248/116088247-a8cdaf00-a6dc-11eb-8a47-104694a40117.png) +![DS1Z_QuickPrint13](https://user-images.githubusercontent.com/2170248/116088262-ac613600-a6dc-11eb-804c-7dcbd71c83d5.png) + +##### Connect a 500pF capacitor between C0 line and GND, Press R0C0, R1C0, R2C0, R3C0, R4C0 keys + - CH1: Row 0 + - CH2: Row 1 + - CH3: Col 0 + - CH4: delay time + - Delay time 11.6us + - Threshold Voltage 1.9V + +![DS1Z_QuickPrint14](https://user-images.githubusercontent.com/2170248/116089205-90aa5f80-a6dd-11eb-89c4-72315c80ba0e.png) + +##### Connect a 1000pF capacitor between C0 line and GND, Press R0C0, R1C0, R2C0, R3C0, R4C0 keys + - CH1: Row 0 + - CH2: Row 1 + - CH3: Col 0 + - CH4: delay time + - Delay time 18.6us + - Threshold Voltage 1.9V + +![DS1Z_QuickPrint15](https://user-images.githubusercontent.com/2170248/116089229-96a04080-a6dd-11eb-8b63-f91b03a9db0c.png) diff --git a/keyboards/handwired/symmetric70_proto/matrix_fast/test_config.h b/keyboards/handwired/symmetric70_proto/matrix_fast/test_config.h new file mode 100644 index 000000000000..25b5d4e01846 --- /dev/null +++ b/keyboards/handwired/symmetric70_proto/matrix_fast/test_config.h @@ -0,0 +1,21 @@ +// list of OUTPUT(row) ports +#define MATRIX_OUT_PORTS (Port_D, MCU_GPIO, D0), (Port_C, MCU_GPIO, C0), (Port_E, MCU_GPIO, E0), (Port_B, MCU_GPIO, B0) +// list of OUTPUT(row) pins +#define MATRIX_OUT_PINS \ + (0, Port_D, 4), \ + (1, Port_C, 6), \ + (2, Port_D, 7), \ + (3, Port_E, 6), \ + (4, Port_B, 4), \ + (5, Port_B, 5) + +// list of INPUT(col) ports +#define MATRIX_IN_PORTS (Port_F, MCU_GPIO, F0), (Port_B, MCU_GPIO, B0) +// list of INPUT(col) pins +#define MATRIX_IN_PINS \ + (0, Port_F, 4), \ + (1, Port_F, 5), \ + (2, Port_F, 6), \ + (3, Port_F, 7), \ + (4, Port_B, 1), \ + (5, Port_B, 3) diff --git a/keyboards/handwired/symmetric70_proto/matrix_fast/test_config_74hc157.h b/keyboards/handwired/symmetric70_proto/matrix_fast/test_config_74hc157.h new file mode 100644 index 000000000000..6abc25b86280 --- /dev/null +++ b/keyboards/handwired/symmetric70_proto/matrix_fast/test_config_74hc157.h @@ -0,0 +1,28 @@ +#define MATRIX_EXTENSION_74HC157 B2 +// #define MATRIX_EXTENSION_74HC153 B2, B6 + +// list of OUTPUT(row) ports +#define MATRIX_OUT_PORTS (Port_D, MCU_GPIO, D0), (Port_C, MCU_GPIO, C0), (Port_E, MCU_GPIO, E0), (Port_B, MCU_GPIO, B0) +// list of OUTPUT(row) pins +#define MATRIX_OUT_PINS \ + (0, Port_D, 4), \ + (1, Port_C, 6), \ + (2, Port_D, 7), \ + (3, Port_E, 6), \ + (4, Port_B, 4), \ + (5, Port_B, 5) + +// list of INPUT(col) ports +#define MATRIX_IN_PORTS \ + (Port_Fa, MCU_GPIOa, F0), \ + (Port_Ba, MCU_GPIOa, B0), \ + (Port_Fb, MCU_GPIOb, F0), \ + (Port_Bb, MCU_GPIOb, B0) +// list of INPUT(col) pins +#define MATRIX_IN_PINS \ + (0, Port_Fa, 4), \ + (1, Port_Fb, 5), \ + (2, Port_Fb, 6), \ + (3, Port_Fa, 7), \ + (4, Port_Ba, 1), \ + (5, Port_Bb, 3) diff --git a/keyboards/handwired/symmetric70_proto/matrix_fast/test_config_direct.h b/keyboards/handwired/symmetric70_proto/matrix_fast/test_config_direct.h new file mode 100644 index 000000000000..aeea12950dbe --- /dev/null +++ b/keyboards/handwired/symmetric70_proto/matrix_fast/test_config_direct.h @@ -0,0 +1,34 @@ +#if defined(__AVR__) +/* -------------------- AVR (Pro Micro) ----------------------- */ + +// old style +#define DIRECT_PINS { { F4, NO_PIN, F5 }, { NO_PIN, F6, F7 }, { B1, B3, NO_PIN } } + +// new style +// #define DIRECT_PINS +#define MATRIX_IN_PORTS \ + (Port_F, MCU_GPIO, F0), \ + (Port_B, MCU_GPIO, B0) +#define MATRIX_IN_PINS \ + (0, Port_F, 4), (1, NO_PIN ), (2, Port_F, 5), \ + (3, NO_PIN ), (4, Port_F, 6), (5, Port_F, 7), \ + (6, Port_B, 1), (7, Port_B, 3), (8, NO_PIN ) + +#else +/* -------------------- ARM (PROTON-C) ----------------------- */ + +// old style +#define DIRECT_PINS { { A2, NO_PIN, A1 }, { NO_PIN, A0, B8 }, { B13, B14, NO_PIN } } + +// new style +// #define DIRECT_PINS +#define MATRIX_IN_PORTS \ + (Port_A, MCU_GPIO, A0), \ + (Port_B, MCU_GPIO, B0) +#define MATRIX_IN_PINS \ + (0, Port_A, 2), (1, NO_PIN ), (2, Port_A, 1), \ + (3, NO_PIN ), (4, Port_A, 0), (5, Port_B, 8), \ + (6, Port_B, 13), (7, Port_B, 14), (8, NO_PIN ) + +#endif + diff --git a/keyboards/handwired/symmetric70_proto/post_rules.mk b/keyboards/handwired/symmetric70_proto/post_rules.mk new file mode 100644 index 000000000000..e2d35d60abc1 --- /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/config.h b/keyboards/handwired/symmetric70_proto/promicro/config.h new file mode 100644 index 000000000000..2060c6260606 --- /dev/null +++ b/keyboards/handwired/symmetric70_proto/promicro/config.h @@ -0,0 +1,157 @@ +/* +Copyright 2020-2021 mtei + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x2BE5 +#define DEVICE_VER 0x0001 +#define MANUFACTURER mtei +#define PRODUCT Symmetric70 prototype promicro + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 16 + +/* Pro Micro ************************** + ==== + +-------====------+ + MDEBUG | D3/TXO RAW | + | D2/RXI GND | + | GND RST | + | GND Vcc | + | D1/SDA F4 | COL_0_1_L + | D0/SCL F5 | COL_2_3_L + ROW_0 | D4 F6 | COL_4_5_L + ROW_1 | C6 F7 | COL_6_7_L + ROW_2 | D7 SCK/B1 | COL_6_7_R + ROW_3 | E6 MISO/B3 | COL_4_5_R + ROW_4 | B4 MOSI/B2 | COL_2_3_R + SEL_AB | B5 B6 | COL_0_1_R + +-----------------+ +***************************************/ + +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +//#define RGB_DI_PIN E2 +//#ifdef RGB_DI_PIN +//# define RGBLED_NUM 16 +//# define RGBLIGHT_HUE_STEP 8 +//# define RGBLIGHT_SAT_STEP 8 +//# define RGBLIGHT_VAL_STEP 8 +//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +//# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +//#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 + +#ifdef DEBUG_CONFIG +# define MATRIX_DEBUG_PIN D3 +# include "../debug_config.h" +#endif diff --git a/keyboards/handwired/symmetric70_proto/promicro/fast/config.h b/keyboards/handwired/symmetric70_proto/promicro/fast/config.h new file mode 100644 index 000000000000..2553de1ab37a --- /dev/null +++ b/keyboards/handwired/symmetric70_proto/promicro/fast/config.h @@ -0,0 +1,52 @@ +/* +Copyright 2021 mtei + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#define MATRIX_OUT_PORTS \ + (Port_D, MCU_GPIO, D0), \ + (Port_C, MCU_GPIO, C0), \ + (Port_E, MCU_GPIO, E0), \ + (Port_B, MCU_GPIO, B0) +#define MATRIX_OUT_PINS \ + (0, Port_D, 4), \ + (1, Port_C, 6), \ + (2, Port_D, 7), \ + (3, Port_E, 6), \ + (4, Port_B, 4) +#define MATRIX_EXTENSION_74HC157 B5 +#define MATRIX_IN_PORTS \ + (Port_Fa, MCU_GPIOa, F0), \ + (Port_Fb, MCU_GPIOb, F0), \ + (Port_Ba, MCU_GPIOa, B0), \ + (Port_Bb, MCU_GPIOb, B0) +#define MATRIX_IN_PINS \ + (0, Port_Fa, 4), \ + (1, Port_Fb, 4), \ + (2, Port_Fa, 5), \ + (3, Port_Fb, 5), \ + (4, Port_Fa, 6), \ + (5, Port_Fb, 6), \ + (6, Port_Fa, 7), \ + (7, Port_Fb, 7), \ + (8, Port_Bb, 6), \ + (9, Port_Ba, 6), \ + (10, Port_Bb, 2), \ + (11, Port_Ba, 2), \ + (12, Port_Bb, 3), \ + (13, Port_Ba, 3), \ + (14, Port_Bb, 1), \ + (15, Port_Ba, 1) diff --git a/keyboards/handwired/symmetric70_proto/promicro/fast/readme.md b/keyboards/handwired/symmetric70_proto/promicro/fast/readme.md new file mode 100644 index 000000000000..9d1a8d8ebfb3 --- /dev/null +++ b/keyboards/handwired/symmetric70_proto/promicro/fast/readme.md @@ -0,0 +1 @@ +[Look here](../readme.md) diff --git a/keyboards/handwired/symmetric70_proto/promicro/fast/rules.mk b/keyboards/handwired/symmetric70_proto/promicro/fast/rules.mk new file mode 100644 index 000000000000..fbc1c3bb3887 --- /dev/null +++ b/keyboards/handwired/symmetric70_proto/promicro/fast/rules.mk @@ -0,0 +1,3 @@ +CUSTOM_MATRIX = yes +SRC += matrix_common.c +SRC += matrix_fast/matrix.c diff --git a/keyboards/handwired/symmetric70_proto/promicro/normal/config.h b/keyboards/handwired/symmetric70_proto/promicro/normal/config.h new file mode 100644 index 000000000000..e03f685847f4 --- /dev/null +++ b/keyboards/handwired/symmetric70_proto/promicro/normal/config.h @@ -0,0 +1,41 @@ +/* +Copyright 2021 mtei + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4 } +#define MATRIX_COL_PINS { F4,F4,F5,F5, F6,F6,F7,F7, B6,B6,B2,B2, B3,B3,B1,B1 } + +#define MATRIX_MUL_SEL { 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0 } +/* use 74HC157: quadruple 2-line to 1-line data selectors / multiplexers */ +#define MATRIX_MUL_SELECT B5 /* 74HC157 pin1:~A/B */ + +#ifdef MATRIX_IO_DELAY_ADAPTIVE_FAST +# define MATRIX_IO_DELAY_PORTS B0, B0, F0, F0 +# define MATRIX_IO_DELAY_MULSEL 0, 1, 0, 1 +// 76543210 76543210 76543210 76543210 +# define MATRIX_IO_DELAY_MASKS 0b01001110, 0b01001110, 0b11110000, 0b11110000 +#endif diff --git a/keyboards/handwired/symmetric70_proto/promicro/normal/readme.md b/keyboards/handwired/symmetric70_proto/promicro/normal/readme.md new file mode 100644 index 000000000000..9d1a8d8ebfb3 --- /dev/null +++ b/keyboards/handwired/symmetric70_proto/promicro/normal/readme.md @@ -0,0 +1 @@ +[Look here](../readme.md) diff --git a/keyboards/handwired/symmetric70_proto/promicro/normal/rules.mk b/keyboards/handwired/symmetric70_proto/promicro/normal/rules.mk new file mode 100644 index 000000000000..73192f4ff76e --- /dev/null +++ b/keyboards/handwired/symmetric70_proto/promicro/normal/rules.mk @@ -0,0 +1,3 @@ +CUSTOM_MATRIX = yes +SRC += matrix_common.c +SRC += matrix_debug/matrix.c diff --git a/keyboards/handwired/symmetric70_proto/promicro/readme.md b/keyboards/handwired/symmetric70_proto/promicro/readme.md new file mode 100644 index 000000000000..c74063b9983e --- /dev/null +++ b/keyboards/handwired/symmetric70_proto/promicro/readme.md @@ -0,0 +1,27 @@ +# Pro Micro version of symmetric70_proto + +![symmetric70_proto](https://i.imgur.com/Br4pH9ol.jpg) +matrix_74HC157d + +A compact 70keys keyboard (prototype) designed by mtei + +* Keyboard Maintainer: [mtei](https://github.com/mtei) +* Hardware Supported: Pro Micro (ATmega32U4) & 74HC157 +* Hardware Availability: This is just prototype + +Make example for this keyboard (after setting up your build environment): + + make handwired/symmetric70_proto/promicro/normal:default + make handwired/symmetric70_proto/promicro/fast:default + +Flashing example for this keyboard: + + make handwired/symmetric70_proto/promicro/normal:default:flash + make handwired/symmetric70_proto/promicro/fast:default:flash + +Testing options: (see more options: [local_features.mk](../local_features.mk), [matrix_debug](../matrix_debug/readme.md) and [matrix_fast](../matrix_fast/readme.md) ) + + make MTEST=mdelay0 handwired/symmetric70_proto/promicro/normal:default:flash + make MTEST=mdelay0 handwired/symmetric70_proto/promicro/fast:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/handwired/symmetric70_proto/promicro/rules.mk b/keyboards/handwired/symmetric70_proto/promicro/rules.mk new file mode 100644 index 000000000000..6c24132126a7 --- /dev/null +++ b/keyboards/handwired/symmetric70_proto/promicro/rules.mk @@ -0,0 +1,19 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = no # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/symmetric70_proto/proton_c/config.h b/keyboards/handwired/symmetric70_proto/proton_c/config.h new file mode 100644 index 000000000000..84586854f4f0 --- /dev/null +++ b/keyboards/handwired/symmetric70_proto/proton_c/config.h @@ -0,0 +1,165 @@ +/* +Copyright 2021 mtei + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x2BE5 +#define DEVICE_VER 0x0001 +#define MANUFACTURER mtei +#define PRODUCT Symmetric70 prototype proton-c + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 16 + +/* Proton-C ************************** + ==== + +-------====------+ + DEBUG | A9/TX/SCL2 5V | (VUSB) + | A10/RX/SDA2 GND | + | GND FLASH | + | GND 3.3V | (VCC) + C15 | B7/SDA1 A2 | C0 + C14 | B6/SCL1 A1 | C1 + C13 | B5 A0 | C2 + C12 | B4 SCL1/B8 | C3 + C11 | B3 SCLK/B13 | C4 + C10 | B2 MISO/B14 | C5 + C9 | B1 MOSI/B15 | C6 + C8 | B0 SDA1/B9 | C7 + +---+ +---+ + +---+ +---+ + R0 | A4 B10 | + R1 | A5 B11 | + R2 | A6 B12 | + R3 | A7 A14 | + R4 | A8 A13 | + | A15 RST | + +-----------------+ +***************************************/ + +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +//#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +//#define RGB_DI_PIN E2 +//#ifdef RGB_DI_PIN +//# define RGBLED_NUM 16 +//# define RGBLIGHT_HUE_STEP 8 +//# define RGBLIGHT_SAT_STEP 8 +//# define RGBLIGHT_VAL_STEP 8 +//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +//# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +//#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 + +#ifdef DEBUG_CONFIG +# define MATRIX_DEBUG_PIN A9 +# include "../debug_config.h" +#endif diff --git a/keyboards/handwired/symmetric70_proto/proton_c/fast/config.h b/keyboards/handwired/symmetric70_proto/proton_c/fast/config.h new file mode 100644 index 000000000000..48c3ec1c0969 --- /dev/null +++ b/keyboards/handwired/symmetric70_proto/proton_c/fast/config.h @@ -0,0 +1,44 @@ +/* +Copyright 2021 mtei + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#define MATRIX_OUT_PORTS (Port_A, MCU_GPIO, A0) +#define MATRIX_OUT_PINS \ + (0, Port_A, 4), \ + (1, Port_A, 5), \ + (2, Port_A, 6), \ + (3, Port_A, 7), \ + (4, Port_A, 8) +#define MATRIX_IN_PORTS \ + (Port_A, MCU_GPIO, A0), (Port_B, MCU_GPIO, B0) +#define MATRIX_IN_PINS \ + (0, Port_A, 2), \ + (1, Port_A, 1), \ + (2, Port_A, 0), \ + (3, Port_B, 8), \ + (4, Port_B, 13), \ + (5, Port_B, 14), \ + (6, Port_B, 15), \ + (7, Port_B, 9), \ + (8, Port_B, 0), \ + (9, Port_B, 1), \ + (10, Port_B, 2), \ + (11, Port_B, 3), \ + (12, Port_B, 4), \ + (13, Port_B, 5), \ + (14, Port_B, 6), \ + (15, Port_B, 7) diff --git a/keyboards/handwired/symmetric70_proto/proton_c/fast/readme.md b/keyboards/handwired/symmetric70_proto/proton_c/fast/readme.md new file mode 100644 index 000000000000..9d1a8d8ebfb3 --- /dev/null +++ b/keyboards/handwired/symmetric70_proto/proton_c/fast/readme.md @@ -0,0 +1 @@ +[Look here](../readme.md) diff --git a/keyboards/handwired/symmetric70_proto/proton_c/fast/rules.mk b/keyboards/handwired/symmetric70_proto/proton_c/fast/rules.mk new file mode 100644 index 000000000000..fbc1c3bb3887 --- /dev/null +++ b/keyboards/handwired/symmetric70_proto/proton_c/fast/rules.mk @@ -0,0 +1,3 @@ +CUSTOM_MATRIX = yes +SRC += matrix_common.c +SRC += matrix_fast/matrix.c diff --git a/keyboards/handwired/symmetric70_proto/proton_c/normal/config.h b/keyboards/handwired/symmetric70_proto/proton_c/normal/config.h new file mode 100644 index 000000000000..942e54c79936 --- /dev/null +++ b/keyboards/handwired/symmetric70_proto/proton_c/normal/config.h @@ -0,0 +1,36 @@ +/* +Copyright 2021 mtei + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +/* + * 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 { A4, A5, A6, A7, A8 } +#define MATRIX_COL_PINS { A2, A1, A0, B8, B13, B14, B15, B9, B0, B1, B2, B3, B4, B5, B6, B7 } + +#ifdef MATRIX_IO_DELAY_ADAPTIVE_FAST +# define MATRIX_IO_DELAY_PORTS A0, B0 +// fedcba9876543210 fedcba9876543210 +# define MATRIX_IO_DELAY_MASKS 0b0000000000000111, 0b1110001111111111 +#endif diff --git a/keyboards/handwired/symmetric70_proto/proton_c/normal/readme.md b/keyboards/handwired/symmetric70_proto/proton_c/normal/readme.md new file mode 100644 index 000000000000..9d1a8d8ebfb3 --- /dev/null +++ b/keyboards/handwired/symmetric70_proto/proton_c/normal/readme.md @@ -0,0 +1 @@ +[Look here](../readme.md) diff --git a/keyboards/handwired/symmetric70_proto/proton_c/normal/rules.mk b/keyboards/handwired/symmetric70_proto/proton_c/normal/rules.mk new file mode 100644 index 000000000000..73192f4ff76e --- /dev/null +++ b/keyboards/handwired/symmetric70_proto/proton_c/normal/rules.mk @@ -0,0 +1,3 @@ +CUSTOM_MATRIX = yes +SRC += matrix_common.c +SRC += matrix_debug/matrix.c diff --git a/keyboards/handwired/symmetric70_proto/proton_c/proton_c.c b/keyboards/handwired/symmetric70_proto/proton_c/proton_c.c new file mode 100644 index 000000000000..dfdc9d759723 --- /dev/null +++ b/keyboards/handwired/symmetric70_proto/proton_c/proton_c.c @@ -0,0 +1,12 @@ +#include "quantum.h" + +#ifndef MATRIX_IO_DELAY_DEFAULT +/* In tmk_core/common/wait.h, the implementation for PROTOCOL_CHIBIOS + * calls 'chThdSleepMicroseconds(1)' when 'wait_us(0)'. + * However, 'wait_us(0)' should do nothing. */ +void matrix_output_unselect_delay(uint8_t line, bool key_pressed) { +# if !defined(MATRIX_IO_DELAY) || MATRIX_IO_DELAY > 0 + matrix_io_delay(); +# endif +} +#endif diff --git a/keyboards/handwired/symmetric70_proto/proton_c/readme.md b/keyboards/handwired/symmetric70_proto/proton_c/readme.md new file mode 100644 index 000000000000..fc10a2e634dd --- /dev/null +++ b/keyboards/handwired/symmetric70_proto/proton_c/readme.md @@ -0,0 +1,26 @@ +# Proton C version of symmetric70_proto + +![symmetric70_proto](https://i.imgur.com/SCtlXOS.jpg) + +A compact 70keys keyboard (prototype) designed by mtei + +* Keyboard Maintainer: [mtei](https://github.com/mtei) +* Hardware Supported: Proton C (STM32F303CCT6) +* Hardware Availability: This is just prototype + +Make example for this keyboard (after setting up your build environment): + + make handwired/symmetric70_proto/proton_c/normal:default + make handwired/symmetric70_proto/proton_c/fast:default + +Flashing example for this keyboard: + + make handwired/symmetric70_proto/proton_c/normal:default:flash + make handwired/symmetric70_proto/proton_c/fast:default:flash + +Testing options: (see more options: [local_features.mk](../local_features.mk), [matrix_debug](../matrix_debug/readme.md) and [matrix_fast](../matrix_fast/readme.md) ) + + make MTEST=mdelay0 handwired/symmetric70_proto/proton_c/normal:default:flash + make MTEST=mdelay0 handwired/symmetric70_proto/proton_c/fast:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/handwired/symmetric70_proto/proton_c/rules.mk b/keyboards/handwired/symmetric70_proto/proton_c/rules.mk new file mode 100644 index 000000000000..868ecbf975f1 --- /dev/null +++ b/keyboards/handwired/symmetric70_proto/proton_c/rules.mk @@ -0,0 +1,20 @@ +# MCU name +MCU = STM32F303 +BOARD = QMK_PROTON_C + +# 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 = no # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/symmetric70_proto/readme.md b/keyboards/handwired/symmetric70_proto/readme.md index 01c2889c2705..1bb56cf4f2a4 100644 --- a/keyboards/handwired/symmetric70_proto/readme.md +++ b/keyboards/handwired/symmetric70_proto/readme.md @@ -1,20 +1,8 @@ # symmetric70_proto ![symmetric70_proto](https://i.imgur.com/Br4pH9ol.jpg) -![74HC157_schematic](https://i.imgur.com/8IU8Jgcl.jpg) A compact 70keys keyboard (prototype) designed by mtei -* Keyboard Maintainer: [mtei](https://github.com/mtei) -* Hardware Supported: Pro Micro (ATmega32U4) & 74HC157 -* Hardware Availability: This is just prototype - -Make example for this keyboard (after setting up your build environment): - - make symmetric70_proto:default - -Flashing example for this keyboard: - - make symmetric70_proto: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). +* [Pro Micro version of symmetric70_proto](promicro/readme.md) +* [Proton-C version of symmetric70_proto](proton_c/readme.md) diff --git a/keyboards/handwired/symmetric70_proto/rules.mk b/keyboards/handwired/symmetric70_proto/rules.mk deleted file mode 100644 index 494dc6fbaf55..000000000000 --- a/keyboards/handwired/symmetric70_proto/rules.mk +++ /dev/null @@ -1,27 +0,0 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -BOOTLOADER = caterina - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration -MOUSEKEY_ENABLE = no # Mouse keys -EXTRAKEY_ENABLE = no # 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 = 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 - -CUSTOM_MATRIX = lite -SRC += matrix.c - -## CONSOLE_ENABLE = yes # matrix dump diff --git a/keyboards/handwired/symmetry60/info.json b/keyboards/handwired/symmetry60/info.json index f33c28b0c5c9..5202c6143875 100644 --- a/keyboards/handwired/symmetry60/info.json +++ b/keyboards/handwired/symmetry60/info.json @@ -2,8 +2,6 @@ "Keyboard_name": "Symmetry60", "url": "", "maintainer": "marhalloweenvt", - "width": 14, - "height": 5, "layouts": { "LAYOUT_ortho_5x14": { "layout": [ diff --git a/keyboards/handwired/symmetry60/rules.mk b/keyboards/handwired/symmetry60/rules.mk index f41c45ffff57..4b3a36ec3933 100644 --- a/keyboards/handwired/symmetry60/rules.mk +++ b/keyboards/handwired/symmetry60/rules.mk @@ -2,33 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LTO_ENABLE = yes # Use link time optimization LAYOUTS = ortho_5x14 diff --git a/keyboards/handwired/t111/info.json b/keyboards/handwired/t111/info.json index b31fed51631d..e02373fff5eb 100644 --- a/keyboards/handwired/t111/info.json +++ b/keyboards/handwired/t111/info.json @@ -2,8 +2,6 @@ "keyboard_name": "t111", "url": "", "maintainer": "DmNosachev", - "width": 21.75, - "height": 6.5, "layouts": { "LAYOUT": { "layout": [{"label":"Break", "x":0, "y":0}, {"label":"PF1", "x":2, "y":0}, {"label":"PF2", "x":3, "y":0}, {"label":"PF3", "x":4, "y":0}, {"label":"PF4", "x":5, "y":0}, {"label":"PF5", "x":6, "y":0}, {"label":"PF6", "x":7, "y":0}, {"label":"PF7", "x":8, "y":0}, {"label":"PF8", "x":9, "y":0}, {"label":"PF9", "x":10, "y":0}, {"label":"PF10", "x":11, "y":0}, {"label":"PF11", "x":12, "y":0}, {"label":"PF12", "x":13, "y":0}, {"label":"PF13", "x":14, "y":0}, {"label":"PF14", "x":15, "y":0}, {"label":"PF15", "x":16, "y":0}, {"label":"PF16", "x":17, "y":0}, {"label":"Esc", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"@", "x":2, "y":1.5}, {"label":"#", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"~", "x":13, "y":1.5}, {"label":"bkspc", "x":14, "y":1.5, "w":1.25}, {"label":"Ins", "x":15.5, "y":1.5}, {"label":"Cls", "x":16.5, "y":1.5}, {"label":"*", "x":17.75, "y":1.5}, {"label":"/", "x":18.75, "y":1.5}, {"label":"+", "x":19.75, "y":1.5}, {"label":"-", "x":20.75, "y":1.5}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":6.5, "y":2.5}, {"label":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"El", "x":15.5, "y":2.5}, {"label":"Dup", "x":16.5, "y":2.5}, {"label":"7", "x":17.75, "y":2.5}, {"label":"8", "x":18.75, "y":2.5}, {"label":"9", "x":19.75, "y":2.5}, {"label":"=", "x":20.75, "y":2.5}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"|", "x":12.75, "y":3.5}, {"label":"Enter", "x":13.75, "y":2.5, "w":1.5, "h":2}, {"label":"Del", "x":15.5, "y":3.5}, {"label":"Home", "x":16.5, "y":3.5}, {"label":"4", "x":17.75, "y":3.5}, {"label":"5", "x":18.75, "y":3.5}, {"label":"6", "x":19.75, "y":3.5}, {"label":",", "x":20.75, "y":3.5}, {"label":"Shift", "x":0, "y":4.5, "w":2.25}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"N", "x":7.25, "y":4.5}, {"label":"M", "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}, {"x":12.25, "y":4.5}, {"label":"Shift", "x":13.25, "y":4.5, "w":2}, {"label":"\u0432\u2020\u2018", "x":15.5, "y":4.5}, {"label":"\u0432\u2020\u201c", "x":16.5, "y":4.5}, {"label":"1", "x":17.75, "y":4.5}, {"label":"2", "x":18.75, "y":4.5}, {"label":"3", "x":19.75, "y":4.5}, {"label":"Enter", "x":20.75, "y":4.5, "h":2}, {"label":"Caps", "x":1.75, "y":5.5}, {"label":"Graph", "x":2.75, "y":5.5, "w":1.5}, {"x":4.25, "y":5.5, "w":8}, {"label":"Alt", "x":12.25, "y":5.5, "w":1.5}, {"label":"\u0432\u2020\u0452", "x":15.5, "y":5.5}, {"label":"\u0432\u2020\u2019", "x":16.5, "y":5.5}, {"label":"0", "x":17.75, "y":5.5, "w":2}, {"label":".", "x":19.75, "y":5.5}] diff --git a/keyboards/handwired/t111/rules.mk b/keyboards/handwired/t111/rules.mk index 558598d74ff5..97907d71d473 100644 --- a/keyboards/handwired/t111/rules.mk +++ b/keyboards/handwired/t111/rules.mk @@ -10,16 +10,13 @@ OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/handwired/tennie/config.h b/keyboards/handwired/tennie/config.h index 90e9b720ef24..6955f08db7c6 100644 --- a/keyboards/handwired/tennie/config.h +++ b/keyboards/handwired/tennie/config.h @@ -42,7 +42,7 @@ along with this program. If not, see . */ #define MATRIX_ROW_PINS { C6, D4, D0} #define MATRIX_COL_PINS { D7, E6, B4, B5 } -#define UNUSED_PINS { B1, B2, B3, B6, F4, F5, F6, F7 D1} +#define UNUSED_PINS { B1, B2, B3, B6, F4, F5, F6, F7, D1} /* COL2ROW, ROW2COL */ #define DIODE_DIRECTION COL2ROW @@ -117,54 +117,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -183,26 +135,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ //#define BOOTMAGIC_LITE_ROW 0 //#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/handwired/tennie/info.json b/keyboards/handwired/tennie/info.json index c0369979291f..6db07eafeef0 100644 --- a/keyboards/handwired/tennie/info.json +++ b/keyboards/handwired/tennie/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Tennie", "url": "https://github.com/StoutIEEE/macropad-workshop", "maintainer": "UW Stout IEEE, Jack Hildebrandt (onemorebyte)", - "width": 4, - "height": 3, "layouts": { "LAYOUT": { "layout": [{"x":0.5, "y":0}, {"x":1.5, "y":0}, {"x":2.5, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":0.5, "y":2}, {"x":1.5, "y":2}, {"x":2.5, "y":2}] diff --git a/keyboards/handwired/tennie/rules.mk b/keyboards/handwired/tennie/rules.mk index 0331d64001f6..cce9c027bfbe 100644 --- a/keyboards/handwired/tennie/rules.mk +++ b/keyboards/handwired/tennie/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config) -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/tennie/tennie.c b/keyboards/handwired/tennie/tennie.c index e1ceaf153d77..508430ba065d 100644 --- a/keyboards/handwired/tennie/tennie.c +++ b/keyboards/handwired/tennie/tennie.c @@ -15,31 +15,7 @@ */ #include "tennie.h" -void matrix_init_kb(void) { - matrix_init_user(); -} - void matrix_post_init(void) { rgblight_enable_noeeprom(); keyboard_post_init_user(); } - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -//void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - -// led_set_user(usb_led); -//} diff --git a/keyboards/handwired/terminus_mini/config.h b/keyboards/handwired/terminus_mini/config.h index 25ea22f7a87e..e1d77d55e241 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -92,54 +91,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -157,25 +108,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - -#endif diff --git a/keyboards/handwired/terminus_mini/info.json b/keyboards/handwired/terminus_mini/info.json index 9271b413eb79..b3e4491b0fa8 100644 --- a/keyboards/handwired/terminus_mini/info.json +++ b/keyboards/handwired/terminus_mini/info.json @@ -2,8 +2,6 @@ "keyboard_name": "handwired/terminus_mini", "url": "", "maintainer": "qmk", - "width": 12, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/terminus_mini/keymaps/default/keymap.c b/keyboards/handwired/terminus_mini/keymaps/default/keymap.c index 78578a33eeda..352ab99db484 100644 --- a/keyboards/handwired/terminus_mini/keymaps/default/keymap.c +++ b/keyboards/handwired/terminus_mini/keymaps/default/keymap.c @@ -265,16 +265,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/handwired/terminus_mini/keymaps/default/rules.mk b/keyboards/handwired/terminus_mini/keymaps/default/rules.mk index a0c29684b1b0..c0b1d926cf5f 100644 --- a/keyboards/handwired/terminus_mini/keymaps/default/rules.mk +++ b/keyboards/handwired/terminus_mini/keymaps/default/rules.mk @@ -2,17 +2,13 @@ # change to "no" to disable the options, or define them in the rules.mk in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) COMMAND_ENABLE = yes # 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 -MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config) -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend TAP_DANCE_ENABLE = no # Enable Tap Dance diff --git a/keyboards/handwired/terminus_mini/rules.mk b/keyboards/handwired/terminus_mini/rules.mk index 684da4cbb9ee..75a8c20f90b1 100644 --- a/keyboards/handwired/terminus_mini/rules.mk +++ b/keyboards/handwired/terminus_mini/rules.mk @@ -2,31 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = halfkay # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work 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 -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -TAP_DANCE_ENABLE = no # Enable tap dance diff --git a/keyboards/handwired/terminus_mini/terminus_mini.c b/keyboards/handwired/terminus_mini/terminus_mini.c index 58edca76873e..295fa4c5a78c 100644 --- a/keyboards/handwired/terminus_mini/terminus_mini.c +++ b/keyboards/handwired/terminus_mini/terminus_mini.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "terminus_mini.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/handwired/terminus_mini/terminus_mini.h b/keyboards/handwired/terminus_mini/terminus_mini.h index 27fb45098150..f498313cbbe0 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 . */ -#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 1429136f403d..cf8b5605f43a 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/trackpoint/info.json b/keyboards/handwired/trackpoint/info.json index d1dcb39d6268..176a30e9a021 100644 --- a/keyboards/handwired/trackpoint/info.json +++ b/keyboards/handwired/trackpoint/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Trackpoint", "url": "", "maintainer": "qmk", - "width": 3, - "height": 1, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/trackpoint/rules.mk b/keyboards/handwired/trackpoint/rules.mk index 668b3bb1ffe9..895a82aeb13d 100644 --- a/keyboards/handwired/trackpoint/rules.mk +++ b/keyboards/handwired/trackpoint/rules.mk @@ -2,28 +2,17 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = halfkay -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output PS2_MOUSE_ENABLE = yes PS2_USE_USART = yes diff --git a/keyboards/handwired/trackpoint/trackpoint.c b/keyboards/handwired/trackpoint/trackpoint.c index 124995a6426a..e1b144241ca2 100644 --- a/keyboards/handwired/trackpoint/trackpoint.c +++ b/keyboards/handwired/trackpoint/trackpoint.c @@ -1,5 +1 @@ #include "trackpoint.h" - -void matrix_init_kb(void) { - -} diff --git a/keyboards/handwired/tractyl_manuform/4x6_right/4x6_right.c b/keyboards/handwired/tractyl_manuform/4x6_right/4x6_right.c new file mode 100644 index 000000000000..7ea4d97472ae --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/4x6_right/4x6_right.c @@ -0,0 +1,67 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "4x6_right.h" + +#ifdef RGB_MATRIX_ENABLE +led_config_t g_led_config = { { + { 24, 23, 18, 17, 10, 9 }, + { 25, 22, 19, 16, 11, 8 }, + { 26, 21, 20, 15, 12, 7 }, + { NO_LED, NO_LED, NO_LED, 14, 13, 6 }, + { NO_LED, NO_LED, NO_LED, 14, 13, 6 }, + { 51, 50, 45, 44, 37, 36 }, + { 52, 49, 46, 43, 38, 35 }, + { 53, 48, 47, 42, 39, 34 }, + { NO_LED, NO_LED, NO_LED, 41, 40, 33 }, + { NO_LED, NO_LED, NO_LED, 41, 40, 33 } +}, { + { 85, 16 }, { 50, 13 }, { 16, 20 }, { 16, 38 }, { 50, 48 }, { 85, 52 }, { 95, 63 }, + { 85, 39 }, { 85, 21 }, { 85, 4 }, { 68, 2 }, { 68, 19 }, { 68, 37 }, { 80, 58 }, + { 60, 55 }, { 50, 35 }, { 50, 13 }, { 50, 0 }, { 33, 3 }, { 33, 20 }, { 33, 37 }, + { 16, 42 }, { 16, 24 }, { 16, 7 }, { 0, 7 }, { 0, 24 }, { 0, 41 }, { 139, 16 }, + { 174, 13 }, { 208, 20 }, { 208, 38 }, { 174, 48 }, { 139, 52 }, { 129, 63 }, { 139, 39 }, + { 139, 21 }, { 139, 4 }, { 156, 2 }, { 156, 19 }, { 156, 37 }, { 144, 58 }, { 164, 55 }, + { 174, 35 }, { 174, 13 }, { 174, 0 }, { 191, 3 }, { 191, 20 }, { 191, 37 }, { 208, 42 }, + { 208, 24 }, { 208, 7 }, { 224, 7 }, { 224, 24 }, { 224, 41 } +}, { + 2, 2, 2, 2, 2, 2, 1, + 4, 4, 4, 4, 4, 4, 1, + 1, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 1, 1, 1, 2, + 2, 2, 2, 2, 2, 1, 4, + 4, 4, 4, 4, 4, 1, 1, + 4, 4, 4, 4, 4, 4, 4, + 4, 4, 1, 1, 1 +} }; +#endif + +#ifdef SWAP_HANDS_ENABLE +const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { + /* Left hand, matrix positions */ + {{5, 5}, {4, 5}, {3, 5}, {2, 5}, {1, 5}, {0, 5}}, + {{5, 6}, {4, 6}, {3, 6}, {2, 6}, {1, 6}, {0, 6}}, + {{5, 7}, {4, 7}, {3, 7}, {2, 7}, {1, 7}, {0, 7}}, + {{5, 8}, {4, 8}, {3, 8}, {2, 8}, {1, 8}, {0, 8}}, + {{5, 9}, {4, 9}, {3, 9}, {2, 9}, {1, 9}, {0, 9}}, + /* Right hand, matrix positions */ + {{5, 0}, {4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0}}, + {{5, 1}, {4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1}}, + {{5, 2}, {4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2}}, + {{5, 3}, {4, 3}, {3, 3}, {2, 3}, {1, 3}, {0, 3}}, + {{5, 4}, {4, 4}, {3, 4}, {2, 4}, {1, 4}, {0, 4}} +}; +#endif diff --git a/keyboards/handwired/tractyl_manuform/4x6_right/4x6_right.h b/keyboards/handwired/tractyl_manuform/4x6_right/4x6_right.h new file mode 100644 index 000000000000..66b588078579 --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/4x6_right/4x6_right.h @@ -0,0 +1,47 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "tractyl_manuform.h" +#include "quantum.h" + +#define ___ KC_NO + +// clang-format off +#define LAYOUT_4x6_right(\ + L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ + L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ + L32, L33, R32, R33, \ + L34, L35, R31, \ + L44, L45, R41, \ + L42, L43, R42, R43 \ + ) \ + { \ + { L00, L01, L02, L03, L04, L05 }, \ + { L10, L11, L12, L13, L14, L15 }, \ + { L20, L21, L22, L23, L24, L25 }, \ + { ___, ___, L32, L33, L34, L35 }, \ + { ___, ___, L42, L43, L44, L45 }, \ + \ + { R00, R01, R02, R03, R04, R05 }, \ + { R10, R11, R12, R13, R14, R15 }, \ + { R20, R21, R22, R23, R24, R25 }, \ + { ___, R31, R32, R33, ___, ___ }, \ + { ___, R41, R42, R43, ___, ___ } \ +} +// clang-format on diff --git a/keyboards/handwired/tractyl_manuform/4x6_right/config.h b/keyboards/handwired/tractyl_manuform/4x6_right/config.h new file mode 100644 index 000000000000..bba9db137b33 --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/4x6_right/config.h @@ -0,0 +1,93 @@ +/* +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +#define PRODUCT_ID 0x3537 +#define DEVICE_VER 0x0001 +#define PRODUCT Tractyl Manuform(4x6) + +/* key matrix size */ +// Rows are doubled-up +#define MATRIX_ROWS 10 +#define MATRIX_COLS 6 + +// wiring of each half +#define MATRIX_COL_PINS { C0, C1, C2, C3, C4, C5 } +#define MATRIX_ROW_PINS { A0, A1, A2, A3, A4 } + +#define DIODE_DIRECTION COL2ROW + +// WS2812 RGB LED strip input and number of LEDs +#define RGB_DI_PIN E7 +#define DRIVER_LED_TOTAL 62 +#define RGB_MATRIX_SPLIT { 32, 30 } +#define RGB_DISABLE_WHEN_USB_SUSPENDED +#define RGB_MATRIX_KEYPRESSES +// #define RGB_MATRIX_KEYRELEASES +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 80 + +#define SPLIT_TRANSPORT_MIRROR +#define SPLIT_HAND_PIN A6 + + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +// #define BACKLIGHT_LEVELS 3 + +// #define DEBUG_LED_PIN D6 + +#define ROTATIONAL_TRANSFORM_ANGLE -25 + +/* Bootmagic Lite key configuration */ +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 +#define BOOTMAGIC_LITE_ROW_RIGHT 4 +#define BOOTMAGIC_LITE_COLUMN_RIGHT 5 + +#define AUDIO_PIN C6 +#define AUDIO_PIN_ALT B7 + +#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 4095 +#define DYNAMIC_KEYMAP_LAYER_COUNT 16 +#define LAYER_STATE_16BIT + +/* serial.c configuration for split keyboard */ +#define SOFT_SERIAL_PIN D3 +#define EE_HANDS + + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* PMW3360 Settings */ +#define PMW3360_CS_PIN B0 + +#define POINTING_DEVICE_RIGHT diff --git a/keyboards/handwired/tractyl_manuform/4x6_right/info.json b/keyboards/handwired/tractyl_manuform/4x6_right/info.json new file mode 100644 index 000000000000..e3da8b444c60 --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/4x6_right/info.json @@ -0,0 +1,73 @@ +{ + "keyboard_name": "Tractyl Manuform 4x6", + "url": "", + "maintainer": "drashna", + "layouts": { + "LAYOUT_5x6_right": { + "layout": [ + {"label":"L00", "x":0, "y":0}, + {"label":"L01", "x":1, "y":0}, + {"label":"L02", "x":2, "y":0}, + {"label":"L03", "x":3, "y":0}, + {"label":"L04", "x":4, "y":0}, + {"label":"L05", "x":5, "y":0}, + {"label":"R00", "x":11, "y":0}, + {"label":"R01", "x":12, "y":0}, + {"label":"R02", "x":13, "y":0}, + {"label":"R03", "x":14, "y":0}, + {"label":"R04", "x":15, "y":0}, + {"label":"R05", "x":16, "y":0}, + {"label":"L10", "x":0, "y":1}, + {"label":"L11", "x":1, "y":1}, + {"label":"L12", "x":2, "y":1}, + {"label":"L13", "x":3, "y":1}, + {"label":"L14", "x":4, "y":1}, + {"label":"L15", "x":5, "y":1}, + {"label":"R10", "x":11, "y":1}, + {"label":"R11", "x":12, "y":1}, + {"label":"R12", "x":13, "y":1}, + {"label":"R13", "x":14, "y":1}, + {"label":"R14", "x":15, "y":1}, + {"label":"R15", "x":16, "y":1}, + {"label":"L20", "x":0, "y":2}, + {"label":"L21", "x":1, "y":2}, + {"label":"L22", "x":2, "y":2}, + {"label":"L23", "x":3, "y":2}, + {"label":"L24", "x":4, "y":2}, + {"label":"L25", "x":5, "y":2}, + {"label":"R20", "x":11, "y":2}, + {"label":"R21", "x":12, "y":2}, + {"label":"R22", "x":13, "y":2}, + {"label":"R23", "x":14, "y":2}, + {"label":"R24", "x":15, "y":2}, + {"label":"R25", "x":16, "y":2}, + {"label":"L30", "x":0, "y":3}, + {"label":"L31", "x":1, "y":3}, + {"label":"L32", "x":2, "y":3}, + {"label":"L33", "x":3, "y":3}, + {"label":"L34", "x":4, "y":3}, + {"label":"L35", "x":5, "y":3}, + {"label":"R30", "x":11, "y":3}, + {"label":"R31", "x":12, "y":3}, + {"label":"R32", "x":13, "y":3}, + {"label":"R33", "x":14, "y":3}, + {"label":"R34", "x":15, "y":3}, + {"label":"R35", "x":16, "y":3}, + {"label":"L42", "x":2, "y":4}, + {"label":"L43", "x":3, "y":4}, + {"label":"R42", "x":13, "y":4}, + {"label":"R43", "x":14, "y":4}, + {"label":"L44", "x":4, "y":5}, + {"label":"L45", "x":5, "y":5}, + {"label":"R41", "x":12, "y":5}, + {"label":"L54", "x":6, "y":6}, + {"label":"L55", "x":7, "y":6}, + {"label":"R51", "x":10, "y":6}, + {"label":"L52", "x":6, "y":7}, + {"label":"L53", "x":7, "y":7}, + {"label":"R52", "x":9, "y":7}, + {"label":"R53", "x":10, "y":7} + ] + } + } +} diff --git a/keyboards/handwired/tractyl_manuform/4x6_right/keymaps/default/keymap.c b/keyboards/handwired/tractyl_manuform/4x6_right/keymaps/default/keymap.c new file mode 100644 index 000000000000..d79f60b12c6f --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/4x6_right/keymaps/default/keymap.c @@ -0,0 +1,62 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum custom_layers { + _QWERTY, + _LOWER, + _RAISE, +}; + +#define RAISE MO(_RAISE) +#define LOWER MO(_LOWER) + +#define RAISE MO(_RAISE) +#define LOWER MO(_LOWER) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[_QWERTY] = LAYOUT_4x6_right( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_BSLASH, + KC_LBRC,KC_RBRC, KC_PLUS, KC_EQL, + RAISE, KC_SPC, LOWER, + KC_TAB, KC_HOME, KC_ENT, + KC_BSPC,KC_GRV, KC_LGUI,KC_DEL +), + +[_LOWER] = LAYOUT_4x6_right( + _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7, KC_P8, KC_P9, RESET, KC_PLUS, + _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4, KC_P5, KC_P6, KC_MINS,KC_PIPE, + _______,_______,_______,_______,_______,_______, _______, KC_P1, KC_P2, KC_P3, KC_EQL, KC_UNDS, + _______,KC_PSCR, _______, KC_P0, + _______,_______, _______, + _______,_______, _______, + _______,_______, _______,_______ +), + +[_RAISE] = LAYOUT_4x6_right( + _______,RESET, _______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NLCK,KC_INS, KC_SLCK,KC_MUTE, + _______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU, + _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD, + _______,_______, KC_EQL ,_______, + _______,_______, _______, + _______,_______, _______, + _______,_______, _______,_______ +), +}; diff --git a/keyboards/handwired/tractyl_manuform/4x6_right/keymaps/drashna/config.h b/keyboards/handwired/tractyl_manuform/4x6_right/keymaps/drashna/config.h new file mode 100644 index 000000000000..21bc8e616a99 --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/4x6_right/keymaps/drashna/config.h @@ -0,0 +1,36 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +// #define USE_I2C +// #define SELECT_SOFT_SERIAL_SPEED 1 +// #define SERIAL_USE_MULTI_TRANSACTION +#define SPLIT_MODS_ENABLE +#define EE_HANDS + +#define TRACKBALL_DPI_OPTIONS { 1200, 1800, 2600, 3400 } + +#define RGBLIGHT_MAX_BRIGHTNESS 60 + +#undef DEBOUNCE +#define DEBOUNCE 10 + +#define SOLENOID_PIN F1 +#define SOLENOID_DEFAULT_DWELL 8 + +#define OLED_DISPLAY_128X64 +#define OLED_BRIGHTNESS 50 diff --git a/keyboards/handwired/tractyl_manuform/4x6_right/keymaps/drashna/keymap.c b/keyboards/handwired/tractyl_manuform/4x6_right/keymaps/drashna/keymap.c new file mode 100644 index 000000000000..78a7db67a9d3 --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/4x6_right/keymaps/drashna/keymap.c @@ -0,0 +1,217 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "drashna.h" + +// clang-format off +#define LAYOUT_4x6_right_wrapper(...) LAYOUT_4x6_right(__VA_ARGS__) +#define LAYOUT_4x6_right_base( \ + K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ + K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \ + K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \ + ) \ + LAYOUT_4x6_right_wrapper( \ + SH_TT, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, SH_TT, \ + LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(K1B), \ + OS_LSFT, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \ + OS_LGUI, OS_LALT, OS_RGUI, OS_RALT, \ + KC_PSCR, KC_GRV, MEH_T(KC_BTN3), \ + KC_SPC, OS_LGUI, KC_ENT, \ + BK_LWER, TT(_MOUSE), TT(_MOUSE), DL_RAIS \ + ) +#define LAYOUT_base_wrapper(...) LAYOUT_4x6_right_base(__VA_ARGS__) + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_DEFAULT_LAYER_1] = LAYOUT_base_wrapper( + _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, + _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, + _________________QWERTY_L3_________________, _________________QWERTY_R3_________________ + ), + + [_DEFAULT_LAYER_2] = LAYOUT_base_wrapper( + ______________COLEMAK_MOD_DH_L1____________, ______________COLEMAK_MOD_DH_R1____________, + ______________COLEMAK_MOD_DH_L2____________, ______________COLEMAK_MOD_DH_R2____________, + ______________COLEMAK_MOD_DH_L3____________, ______________COLEMAK_MOD_DH_R3____________ + ), + [_DEFAULT_LAYER_3] = LAYOUT_base_wrapper( + _________________COLEMAK_L1________________, _________________COLEMAK_R1________________, + _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, + _________________COLEMAK_L3________________, _________________COLEMAK_R3________________ + ), + + [_DEFAULT_LAYER_4] = LAYOUT_base_wrapper( + _________________DVORAK_L1_________________, _________________DVORAK_R1_________________, + _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, + _________________DVORAK_L3_________________, _________________DVORAK_R3_________________ + ), + + [_MOUSE] = LAYOUT_4x6_right( + _______, _______, _______, _______, _______, _______, KC_WH_U, _______, _______, _______, DPI_CONFIG, _______, + _______, _______, _______, _______, _______, _______, KC_WH_D, KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN6, _______, + _______, _______, _______, _______, _______, _______, KC_BTN7, KC_BTN4, KC_BTN5, KC_BTN8, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, + _______, _______, _______, + _______, _______, _______, _______ + ), + [_GAMEPAD] = LAYOUT_4x6_right( + KC_F1, KC_K, KC_Q, KC_W, KC_E, KC_R, _______, _______, _______, _______, _______, _______, + KC_TAB, KC_G, KC_A, KC_S, KC_D, KC_F, _______, _______, _______, _______, _______, _______, + KC_LCTL, KC_LSFT, KC_Z, KC_X, KC_C, KC_H, _______, _______, _______, _______, _______, _______, + KC_I, KC_T, TG_GAME, KC_NO, + KC_V, KC_O, _______, + KC_SPC, KC_P, _______, + KC_H, KC_LGUI, _______, _______ + ), + [_DIABLO] = LAYOUT_4x6_right( + KC_TAB, KC_S, KC_I, KC_F, KC_M, KC_T, _______, _______, _______, _______, _______, _______, + KC_Q, KC_1, KC_2, KC_3, KC_4, KC_G, _______, _______, _______, _______, _______, _______, + KC_LCTL, KC_D3_1, KC_D3_2, KC_D3_3, KC_D3_4, KC_Z, _______, _______, _______, _______, _______, _______, + KC_F, KC_L, KC_NO, TG_DBLO, + KC_DIABLO_CLEAR, KC_F, _______, + SFT_T(KC_SPC), KC_J, _______, + ALT_T(KC_Q), KC_LGUI, _______, _______ + ), + [_LOWER] = LAYOUT_4x6_right_wrapper( + KC_F12, _________________LOWER_L1__________________, _________________LOWER_R1__________________, KC_F11, + _______, _________________LOWER_L2__________________, _________________LOWER_R2__________________, KC_PIPE, + _______, _________________LOWER_L3__________________, _________________LOWER_R3__________________, _______, + _______, _______, _______, _______, + _______, _______, _______, + _______, _______, _______, + _______, _______, _______, _______ + ), + [_RAISE] = LAYOUT_4x6_right_wrapper( + KC_F12, _________________RAISE_L1__________________, _________________RAISE_R1__________________, KC_F11, + _______, _________________RAISE_L2__________________, _________________RAISE_R2__________________, KC_BSLS, + _______, _________________RAISE_L3__________________, _________________RAISE_R3__________________, _______, + _______, _______, _______, _______, + _______, _______, _______, + _______, _______, _______, + _______, _______, _______, _______ + ), + [_ADJUST] = LAYOUT_4x6_right_wrapper( + KC_MAKE, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, KC_RST, + VRSN, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, EEP_RST, + UC_MOD, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, TG_MODS, + HPT_DWLI, HPT_DWLD, TG_GAME, TG_DBLO, + HPT_TOG, HPT_BUZ, KC_NUKE, + _______, _______, _______, + _______, _______, KC_NUKE, _______ + ), +}; +// clang-format on + +#ifdef POINTING_DEVICE_ENABLE +static uint16_t mouse_timer = 0; +static uint16_t mouse_debounce_timer = 0; +static uint8_t mouse_keycode_tracker = 0; +bool tap_toggling = false; + +void process_mouse_user(report_mouse_t* mouse_report, int8_t x, int8_t y) { + if ((x || y) && timer_elapsed(mouse_timer) > 125) { + mouse_timer = timer_read(); + if (!layer_state_is(_MOUSE) && !(layer_state_is(_GAMEPAD) || layer_state_is(_DIABLO)) && timer_elapsed(mouse_debounce_timer) > 125) { + layer_on(_MOUSE); + } + } + +# ifdef TAPPING_TERM_PER_KEY + if (timer_elapsed(mouse_debounce_timer) > get_tapping_term(KC_BTN1, NULL) +# else + if (timer_elapsed(mouse_debounce_timer) > TAPPING_TERM +# endif + || (layer_state_is(_GAMEPAD) || layer_state_is(_DIABLO))) { + mouse_report->x = x; + mouse_report->y = y; + } +# ifdef OLED_ENABLE + if (x || y) oled_timer = timer_read32(); +# endif +} + +void matrix_scan_keymap(void) { + if (timer_elapsed(mouse_timer) > 650 && layer_state_is(_MOUSE) && !mouse_keycode_tracker && !tap_toggling) { + layer_off(_MOUSE); + } + if (tap_toggling) { + if (!layer_state_is(_MOUSE)) { + layer_on(_MOUSE); + } + } +} + +bool process_record_keymap(uint16_t keycode, keyrecord_t* record) { + switch (keycode) { + case TT(_MOUSE): + { + if (record->event.pressed) { + mouse_keycode_tracker++; + } else { +# if TAPPING_TOGGLE != 0 + if (record->tap.count == TAPPING_TOGGLE) { + tap_toggling ^= 1; +# if TAPPING_TOGGLE == 1 + if (!tap_toggling) mouse_keycode_tracker -= record->tap.count + 1; +# else + if (!tap_toggling) mouse_keycode_tracker -= record->tap.count; +# endif + } else { + mouse_keycode_tracker--; + } +# endif + } + mouse_timer = timer_read(); + break; + } + case MO(_MOUSE): + case DPI_CONFIG: + case KC_MS_UP ... KC_MS_WH_RIGHT: + record->event.pressed ? mouse_keycode_tracker++ : mouse_keycode_tracker--; + mouse_timer = timer_read(); + break; + default: + if (layer_state_is(_MOUSE) && !mouse_keycode_tracker) { + layer_off(_MOUSE); + } + mouse_keycode_tracker = 0; + mouse_debounce_timer = timer_read(); + break; + } + return true; +} + +layer_state_t layer_state_set_keymap(layer_state_t state) { + if (layer_state_cmp(state, _GAMEPAD) || layer_state_cmp(state, _DIABLO)) { + state |= (1UL << _MOUSE); + } + return state; +} +#endif + +void matrix_init_keymap(void) { +#ifdef AUDIO_ENABLE + extern audio_config_t audio_config; + + if (!is_keyboard_master()) { + audio_stop_all(); + audio_config.enable = false; + } +#endif +} + +void keyboard_post_init_keymap(void) { matrix_init_keymap(); } diff --git a/keyboards/handwired/tractyl_manuform/4x6_right/keymaps/drashna/rules.mk b/keyboards/handwired/tractyl_manuform/4x6_right/keymaps/drashna/rules.mk new file mode 100644 index 000000000000..7fef013a388c --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/4x6_right/keymaps/drashna/rules.mk @@ -0,0 +1,9 @@ +RGBLIGHT_STARTUP_ANIMATION = yes +AUDIO_ENABLE = yes +HAPTIC_ENABLE = no +COMMAND_ENABLE = no +TAP_DANCE_ENABLE = yes +UNICODE_ENABLE = yes +OLED_ENABLE = yes +WPM_ENABLE = yes +# DEBOUNCE_TYPE = sym_eager_pk diff --git a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/readme.md b/keyboards/handwired/tractyl_manuform/4x6_right/readme.md similarity index 100% rename from keyboards/handwired/dactyl_manuform/5x6_right_trackball/readme.md rename to keyboards/handwired/tractyl_manuform/4x6_right/readme.md diff --git a/keyboards/handwired/tractyl_manuform/4x6_right/rules.mk b/keyboards/handwired/tractyl_manuform/4x6_right/rules.mk new file mode 100644 index 000000000000..36910e45a81f --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/4x6_right/rules.mk @@ -0,0 +1,30 @@ +# MCU name +MCU = at90usb1286 + +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 +RGB_MATRIX_ENABLE = no +RGB_MATRIX_DRIVER = WS2812 + + +POINTING_DEVICE_ENABLE = yes +MOUSE_SHARED_EP = no + +SPLIT_KEYBOARD = yes + +SRC += drivers/sensors/pmw3360.c +QUANTUM_LIB_SRC += spi_master.c tm_sync.c diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/5x6_right.c b/keyboards/handwired/tractyl_manuform/5x6_right/5x6_right.c new file mode 100644 index 000000000000..af9cbda49d6e --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/5x6_right.c @@ -0,0 +1,39 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "5x6_right.h" + +#ifdef SWAP_HANDS_ENABLE +const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { + /* Left hand, matrix positions */ + {{5, 6}, {4, 6}, {3, 6}, {2, 6}, {1, 6}, {0, 6}}, + {{5, 7}, {4, 7}, {3, 7}, {2, 7}, {1, 7}, {0, 7}}, + {{5, 8}, {4, 8}, {3, 8}, {2, 8}, {1, 8}, {0, 8}}, + {{5, 9}, {4, 9}, {3, 9}, {2, 9}, {1, 9}, {0, 9}}, + {{5, 10}, {4, 10}, {3, 10}, {2, 10}, {1, 10}, {0, 10}}, + {{5, 11}, {4, 11}, {3, 11}, {2, 11}, {1, 11}, {0, 11}}, + /* Right hand, matrix positions */ + {{5, 0}, {4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0}}, + {{5, 1}, {4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1}}, + {{5, 2}, {4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2}}, + {{5, 3}, {4, 3}, {3, 3}, {2, 3}, {1, 3}, {0, 3}}, + {{5, 4}, {4, 4}, {3, 4}, {2, 4}, {1, 4}, {0, 4}}, + {{5, 5}, {4, 5}, {3, 5}, {2, 5}, {1, 5}, {0, 5}}}; + +# ifdef ENCODER_MAP_ENABLE +const uint8_t PROGMEM encoder_hand_swap_config[NUM_ENCODERS] = {1, 0}; +# endif +#endif diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/5x6_right.h b/keyboards/handwired/tractyl_manuform/5x6_right/5x6_right.h new file mode 100644 index 000000000000..f171d4118147 --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/5x6_right.h @@ -0,0 +1,61 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "tractyl_manuform.h" + +#if defined(KEYBOARD_handwired_tractyl_manuform_5x6_right_f411) +# include "f411.h" +#elif defined(KEYBOARD_handwired_tractyl_manuform_5x6_right_f303) +# include "f303.h" +#elif defined(KEYBOARD_handwired_tractyl_manuform_5x6_right_teensy2pp) +# include "teensy2pp.h" +#elif defined(KEYBOARD_handwired_tractyl_manuform_5x6_right_elite_c) +# include "elite_c.h" +#endif + +#include "quantum.h" + +#define ___ KC_NO + +// clang-format off +#define LAYOUT_5x6_right(\ + L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ + L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ + L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \ + L42, L43, R42, R43, \ + L44, L45, R41, \ + L54, L55, R51, \ + L52, L53, R52, R53 \ + ) \ + { \ + { L00, L01, L02, L03, L04, L05 }, \ + { L10, L11, L12, L13, L14, L15 }, \ + { L20, L21, L22, L23, L24, L25 }, \ + { L30, L31, L32, L33, L34, L35 }, \ + { ___, ___, L42, L43, L44, L45 }, \ + { ___, ___, L52, L53, L54, L55 }, \ + \ + { R00, R01, R02, R03, R04, R05 }, \ + { R10, R11, R12, R13, R14, R15 }, \ + { R20, R21, R22, R23, R24, R25 }, \ + { R30, R31, R32, R33, R34, R35 }, \ + { ___, R41, R42, R43, ___, ___ }, \ + { ___, R51, R52, R53, ___, ___ } \ +} +// clang-format on diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/config.h b/keyboards/handwired/tractyl_manuform/5x6_right/config.h new file mode 100644 index 000000000000..d7618912f78f --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/config.h @@ -0,0 +1,56 @@ +/* +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +#define PRODUCT_ID 0x3536 +#define DEVICE_VER 0x0001 + +/* key matrix size */ +// Rows are doubled-up +#define MATRIX_ROWS 12 +#define MATRIX_COLS 6 + +#define DIODE_DIRECTION COL2ROW + +#define ROTATIONAL_TRANSFORM_ANGLE -25 +#define POINTING_DEVICE_INVERT_X + +/* Bootmagic Lite key configuration */ +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 +#define BOOTMAGIC_LITE_ROW_RIGHT 6 +#define BOOTMAGIC_LITE_COLUMN_RIGHT 5 + +#define DYNAMIC_KEYMAP_LAYER_COUNT 16 +#define LAYER_STATE_16BIT + + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +#define OLED_DISPLAY_128X64 + +#define POINTING_DEVICE_TASK_THROTTLE +#define POINTING_DEVICE_RIGHT diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/elite_c/config.h b/keyboards/handwired/tractyl_manuform/5x6_right/elite_c/config.h new file mode 100644 index 000000000000..9daec0cd8f31 --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/elite_c/config.h @@ -0,0 +1,52 @@ +/* +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#define PRODUCT Tractyl Manuform(5x6) Elite C + +// wiring of each half +#define MATRIX_COL_PINS \ + { D4, D7, E6, B4, B5, B7 } +#define MATRIX_ROW_PINS \ + { F7, F6, F5, F4, F1, F0 } + +#define DIODE_DIRECTION COL2ROW + +// WS2812 RGB LED strip input and number of LEDs +#define RGB_DI_PIN D3 +#define RGBLED_NUM 20 +#define RGBLIGHT_SPLIT +#define RGBLED_SPLIT \ + { 10, 10 } +#define RGBLIGHT_LIMIT_VAL 80 +#define OLED_BRIGHTNESS 50 + +#define AUDIO_PIN C6 + +/* serial.c configuration for split keyboard */ +#define SOFT_SERIAL_PIN D2 +#define EE_HANDS + +#define ENCODERS_PAD_A \ + { D5 } +#define ENCODERS_PAD_B \ + { C7 } + +/* PMW3360 Settings */ +#define PMW3360_CS_PIN B6 diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/elite_c/elite_c.h b/keyboards/handwired/tractyl_manuform/5x6_right/elite_c/elite_c.h new file mode 100644 index 000000000000..525b0378b46f --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/elite_c/elite_c.h @@ -0,0 +1,19 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "5x6_right.h" diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/elite_c/rules.mk b/keyboards/handwired/tractyl_manuform/5x6_right/elite_c/rules.mk new file mode 100644 index 000000000000..e594097f8bab --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/elite_c/rules.mk @@ -0,0 +1,11 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +LTO_ENABLE := yes +RGBLIGHT_ENABLE = no +OLED_ENABLE = no +AUDIO_ENABLE = no +ENCODER_ENABLE = no diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f303/config.h b/keyboards/handwired/tractyl_manuform/5x6_right/f303/config.h new file mode 100644 index 000000000000..f9a44587b09d --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/f303/config.h @@ -0,0 +1,104 @@ +/* +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#define PRODUCT Tractyl Manuform(5x6) Proton C + +// wiring of each half +#define MATRIX_COL_PINS \ + { B0, B1, B2, B3, B4, B5 } +#define MATRIX_ROW_PINS \ + { B10, B11, B12, A14, A13, A15 } + +#define UNUSED_PINS \ + { A0, A2, A7, A8 } +// B2 used for BOOT1, has internal pull down? +// A9 has internal pull-down +// A11 and A12 are used for USB sense. DO NOT USE. + +#define DIODE_DIRECTION COL2ROW + +// #define USB_VBUS_PIN B10 +#define SPLIT_HAND_PIN C14 // high = left, low = right + +// WS2812 RGB LED strip input and number of LEDs +#define RGB_DI_PIN A6 +#define WS2812_PWM_DRIVER PWMD3 // default: PWMD2 +#define WS2812_PWM_CHANNEL 1 // default: 2 +#define WS2812_PWM_PAL_MODE 2 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 2 +//#define WS2812_PWM_COMPLEMENTARY_OUTPUT // Define for a complementary timer output (TIMx_CHyN); omit for a normal timer output (TIMx_CHy). +// #define WS2812_DMA_STREAM STM32_DMA1_STREAM3 // DMA Stream for TIMx_UP, see the respective reference manual for the appropriate values for your MCU. +#define WS2812_DMA_CHANNEL 3 // DMA Channel for TIMx_UP, see the respective reference manual for the appropriate values for your MCU. + +#define RGBLED_NUM 20 +#define RGBLIGHT_SPLIT +#define RGBLED_SPLIT \ + { 10, 10 } + +#define DEBUG_LED_PIN C13 + +/* Audio config */ +#define AUDIO_PIN A5 +#define AUDIO_PIN_ALT A4 +#define AUDIO_PIN_ALT_AS_NEGATIVE + +/* serial.c configuration for split keyboard */ +#define SERIAL_USART_FULL_DUPLEX // Enable full duplex operation mode. +#define SERIAL_USART_TX_PIN A9 +#define SERIAL_USART_RX_PIN A10 +#define SERIAL_USART_DRIVER 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_RX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7 +#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100 + +/* i2c config for oleds */ +#define I2C_DRIVER I2CD1 +#define I2C1_SCL_PIN B6 +#define I2C1_SDA_PIN B7 +#define I2C1_SCL_PAL_MODE 4 +#define I2C1_SDA_PAL_MODE 4 +#define I2C1_CLOCK_SPEED 400000 + +/* encoder config */ +#define ENCODERS_PAD_A \ + { A7 } +#define ENCODERS_PAD_B \ + { A8 } + +/* spi config for eeprom and pmw3360 sensor */ +#define SPI_DRIVER SPID2 +#define SPI_SCK_PIN B13 +#define SPI_SCK_PAL_MODE 5 +#define SPI_MOSI_PIN B15 +#define SPI_MOSI_PAL_MODE 5 +#define SPI_MISO_PIN B14 +#define SPI_MISO_PAL_MODE 5 + +/* eeprom config */ +#define EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN B8 +#define EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR 8 +// #define EXTERNAL_EEPROM_BYTE_COUNT 8196 +// #define EXTERNAL_EEPROM_PAGE_SIZE 32 +// #define EXTERNAL_EEPROM_ADDRESS_SIZE 2 +// #define DEBUG_EEPROM_OUTPUT + +/* pmw3360 config */ +#define PMW3360_CS_PIN B9 +#define PMW3360_SPI_MODE 3 +#define PMW3360_SPI_DIVISOR 8 diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f303/f303.c b/keyboards/handwired/tractyl_manuform/5x6_right/f303/f303.c new file mode 100644 index 000000000000..d0948019382b --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/f303/f303.c @@ -0,0 +1,17 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "f303.h" diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f303/f303.h b/keyboards/handwired/tractyl_manuform/5x6_right/f303/f303.h new file mode 100644 index 000000000000..525b0378b46f --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/f303/f303.h @@ -0,0 +1,19 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "5x6_right.h" diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f303/halconf.h b/keyboards/handwired/tractyl_manuform/5x6_right/f303/halconf.h new file mode 100644 index 000000000000..62f56e4d2bf4 --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/f303/halconf.h @@ -0,0 +1,27 @@ +/* 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 . + */ +#pragma once + +#define HAL_USE_PWM TRUE +#define HAL_USE_SERIAL TRUE +#define HAL_USE_I2C TRUE +#define HAL_USE_SPI TRUE +#define HAL_USE_GPT TRUE +#define HAL_USE_DAC TRUE +#define SPI_USE_WAIT TRUE +#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD + +#include_next diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f303/mcuconf.h b/keyboards/handwired/tractyl_manuform/5x6_right/f303/mcuconf.h new file mode 100644 index 000000000000..5525a077d27c --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/f303/mcuconf.h @@ -0,0 +1,40 @@ +/* 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 . + */ + +#pragma once + +#include_next "mcuconf.h" + +#undef STM32_I2C_USE_I2C1 +#define STM32_I2C_USE_I2C1 TRUE + +#undef STM32_SPI_USE_SPI2 +#define STM32_SPI_USE_SPI2 TRUE + +#undef STM32_SERIAL_USE_USART1 +#define STM32_SERIAL_USE_USART1 TRUE + +#undef STM32_DAC_USE_DAC1_CH1 +#define STM32_DAC_USE_DAC1_CH1 TRUE + +#undef STM32_DAC_USE_DAC1_CH2 +#define STM32_DAC_USE_DAC1_CH2 TRUE + +#undef STM32_GPT_USE_TIM6 +#define STM32_GPT_USE_TIM6 TRUE + +#undef STM32_PWM_USE_TIM3 +#define STM32_PWM_USE_TIM3 TRUE diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f303/readme.md b/keyboards/handwired/tractyl_manuform/5x6_right/f303/readme.md new file mode 100644 index 000000000000..79a4a8ca0e47 --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/f303/readme.md @@ -0,0 +1,24 @@ +# Drashna's Blackpill Tractyl Manuform (5x6) with a right side trackball + + +* Split Hand Pin, using PC14 +* Full Duplex Serial/USART using PA9 and PA10 on USART1 +* DAC Audio using PA4 and PA5 +* PWM RGB using PA6 TIM3 +* pmw3360 sensor using PA5-PA7 on SPI2, with B as CS pin +* 8KB SPI EEPROM chip sharing PB13-PB15 on SPI1 with PB9 as CS pin +* Encoder using PA7 and PA8 +* SSD1306 OLED display (128x64) using PB6 and PB7 on I2C1 + +* Keyboard Maintainer: [Drashna Jael're](https://github.com/drashna) +* Hardware Supported: [Design files](https://gitlab.com/keyboards1/dm_r_track/-/tree/master/boolean), [WeAct BlackPill (F411)](https://github.com/WeActTC/MiniSTM32F4x1), [PMW3360 Optical Sensor](https://www.tindie.com/products/jkicklighter/pmw3360-motion-sensor/) + +Make example for this keyboard (after setting up your build environment): + + make handwired/tractyl_manuform/5x6_right/f411:default + +Flashing example for this keyboard: + + make handwired/tractyl_manuform/5x6_right/f411:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f303/rules.mk b/keyboards/handwired/tractyl_manuform/5x6_right/f303/rules.mk new file mode 100644 index 000000000000..622d22704d2d --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/f303/rules.mk @@ -0,0 +1,13 @@ +# MCU name +MCU = STM32F303 + +# Bootloader selection +BOOTLOADER = stm32-dfu + +# KEYBOARD_SHARED_EP = yes +CONSOLE_ENABLE = yes + +EEPROM_DRIVER = spi +WS2812_DRIVER = pwm +SERIAL_DRIVER = usart +AUDIO_DRIVER = dac_additive diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f411/chconf.h b/keyboards/handwired/tractyl_manuform/5x6_right/f411/chconf.h new file mode 100644 index 000000000000..8b55eaeef089 --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/f411/chconf.h @@ -0,0 +1,38 @@ +/* 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/handwired/onekey/blackpill_f411/chconf.h -r platforms/chibios/common/configs/chconf.h` + */ + +#pragma once + +#define CH_CFG_ST_FREQUENCY 10000 + +#define CH_CFG_FACTORY_OBJECTS_REGISTRY TRUE + +#define CH_CFG_FACTORY_GENERIC_BUFFERS TRUE + +#define CH_CFG_FACTORY_SEMAPHORES TRUE + +#define CH_CFG_FACTORY_MAILBOXES TRUE + +#define CH_CFG_FACTORY_OBJ_FIFOS TRUE + +#define CH_CFG_FACTORY_PIPES TRUE + +#include_next diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f411/config.h b/keyboards/handwired/tractyl_manuform/5x6_right/f411/config.h new file mode 100644 index 000000000000..986ccae69b9e --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/f411/config.h @@ -0,0 +1,112 @@ +/* +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#define PRODUCT Tractyl Manuform(5x6) BlackPill + +// wiring of each half +#define MATRIX_COL_PINS \ + { A15, B3, B4, B5, B6, B7 } +#define MATRIX_ROW_PINS \ + { B12, B13, B14, B15, A8, A10 } + +#define UNUSED_PINS \ + { C15 } + +#define DIODE_DIRECTION COL2ROW + +// #define USB_VBUS_PIN B10 // doesn't seem to work for me on one of my controllers... */ +#define SPLIT_HAND_PIN C14 // high = left, low = right + +// WS2812 RGB LED strip input and number of LEDs +#define RGB_DI_PIN A1 +#define WS2812_PWM_DRIVER PWMD2 // default: PWMD2 +#define WS2812_PWM_CHANNEL 2 // 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_EXTERNAL_PULLUP +//#define WS2812_PWM_COMPLEMENTARY_OUTPUT // Define for a complementary timer output (TIMx_CHyN); omit for a normal timer output (TIMx_CHy). +#define WS2812_DMA_STREAM STM32_DMA1_STREAM7 // DMA Stream for TIMx_UP, see the respective reference manual for the appropriate values for your MCU. +#define WS2812_DMA_CHANNEL 3 // DMA Channel for TIMx_UP, see the respective reference manual for the appropriate values for your MCU. + +#define RGBLED_NUM 52 +#define RGBLIGHT_SPLIT +#define RGBLED_SPLIT \ + { 26, 26 } +#define RGBLIGHT_LIMIT_VAL 150 + +#define DEBUG_LED_PIN C13 + +/* Audio config */ +#define AUDIO_PIN B1 +#define AUDIO_PWM_DRIVER PWMD3 +#define AUDIO_PWM_CHANNEL 4 +#define AUDIO_PWM_PAL_MODE 2 +#define AUDIO_STATE_TIMER GPTD4 + +/* serial.c configuration for split keyboard */ +#define SERIAL_USART_FULL_DUPLEX // Enable full duplex operation mode. +#define SERIAL_USART_TX_PIN A2 +#define SERIAL_USART_RX_PIN A3 +#define SERIAL_USART_DRIVER SD2 +#define SERIAL_USART_TX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7 +#define SERIAL_USART_RX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7 +#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100 + +/* i2c config for oleds */ +#define I2C_DRIVER I2CD1 +#define I2C1_SCL_PIN B8 +#define I2C1_SDA_PIN B9 +#define I2C1_SCL_PAL_MODE 4 +#define I2C1_SDA_PAL_MODE 4 +// #define I2C1_CLOCK_SPEED 400000 +/* For Legacy Compatibility: */ +#define I2C1_SCL 8 +#define I2C1_SDA 9 + +/* encoder config */ +#define ENCODERS_PAD_A \ + { A13 } +#define ENCODERS_PAD_B \ + { A14 } + +/* spi config for eeprom and pmw3360 sensor */ +#define SPI_DRIVER SPID1 +#define SPI_SCK_PIN A5 +#define SPI_SCK_PAL_MODE 5 +#define SPI_MOSI_PIN A7 +#define SPI_MOSI_PAL_MODE 5 +#define SPI_MISO_PIN A6 +#define SPI_MISO_PAL_MODE 5 + +/* eeprom config */ +#define EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN A4 +#define EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR 64 +// #define EXTERNAL_EEPROM_BYTE_COUNT 8196 +// #define EXTERNAL_EEPROM_PAGE_SIZE 32 +// #define EXTERNAL_EEPROM_ADDRESS_SIZE 2 +// #define DEBUG_EEPROM_OUTPUT + +#ifdef EEPROM_SPI +# define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 8195 +#endif + +/* pmw3360 config */ +#define PMW3360_CS_PIN B0 +#define PMW3360_SPI_MODE 3 +#define PMW3360_SPI_DIVISOR 64 diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f411/f411.c b/keyboards/handwired/tractyl_manuform/5x6_right/f411/f411.c new file mode 100644 index 000000000000..700b0685f200 --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/f411/f411.c @@ -0,0 +1,33 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "f411.h" + +void matrix_init_sub_kb(void) { setPinInputHigh(A0); } + +void matrix_scan_sub_kb(void) { + if (!readPin(A0)) { + reset_keyboard(); + } +} + +#ifdef USB_VBUS_PIN +bool usb_vbus_state(void) { + setPinInputLow(USB_VBUS_PIN); + wait_us(5); + return readPin(USB_VBUS_PIN); +} +#endif diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f411/f411.h b/keyboards/handwired/tractyl_manuform/5x6_right/f411/f411.h new file mode 100644 index 000000000000..525b0378b46f --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/f411/f411.h @@ -0,0 +1,19 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "5x6_right.h" diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f411/halconf.h b/keyboards/handwired/tractyl_manuform/5x6_right/f411/halconf.h new file mode 100644 index 000000000000..39644726c3c3 --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/f411/halconf.h @@ -0,0 +1,26 @@ +/* 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 . + */ +#pragma once + +#define HAL_USE_PWM TRUE +#define HAL_USE_SERIAL TRUE +#define HAL_USE_I2C TRUE +#define HAL_USE_SPI TRUE +#define SPI_USE_WAIT TRUE +#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD +#define HAL_USE_GPT TRUE + +#include_next diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f411/mcuconf.h b/keyboards/handwired/tractyl_manuform/5x6_right/f411/mcuconf.h new file mode 100644 index 000000000000..d868eae48e01 --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/f411/mcuconf.h @@ -0,0 +1,55 @@ +/* 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 . + */ + +#pragma once + +#include_next "mcuconf.h" + +#undef STM32_I2C_USE_I2C1 +#define STM32_I2C_USE_I2C1 TRUE + +#undef STM32_I2C_I2C1_RX_DMA_STREAM +#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0) +#undef STM32_I2C_I2C1_TX_DMA_STREAM +#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 1) + +#undef STM32_PWM_USE_TIM2 +#define STM32_PWM_USE_TIM2 TRUE + +#undef STM32_PWM_USE_TIM3 +#define STM32_PWM_USE_TIM3 TRUE + +#undef STM32_SPI_USE_SPI1 +#define STM32_SPI_USE_SPI1 TRUE + +#undef STM32_SPI_SPI1_RX_DMA_STREAM +#define STM32_SPI_SPI1_RX_DMA_STREAM STM32_DMA_STREAM_ID(2, 0) +#undef STM32_SPI_SPI1_TX_DMA_STREAM +#define STM32_SPI_SPI1_TX_DMA_STREAM STM32_DMA_STREAM_ID(2, 3) + +#undef STM32_SERIAL_USE_USART2 +#define STM32_SERIAL_USE_USART2 TRUE + +#undef STM32_UART_USART2_RX_DMA_STREAM +#define STM32_UART_USART2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 5) +#undef STM32_UART_USART2_TX_DMA_STREAM +#define STM32_UART_USART2_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6) + +#undef STM32_GPT_USE_TIM4 +#define STM32_GPT_USE_TIM4 TRUE + +#undef STM32_ST_USE_TIMER +#define STM32_ST_USE_TIMER 5 diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f411/readme.md b/keyboards/handwired/tractyl_manuform/5x6_right/f411/readme.md new file mode 100644 index 000000000000..b387435122a4 --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/f411/readme.md @@ -0,0 +1,37 @@ +# Drashna's Blackpill Tractyl Manuform (5x6) with a right side trackball + +* System Timer on TIM5 +* ~~VBUS mod, using PB10~~ (*doesn't seem to work for me*) +* Split Hand Pin, using PC14 +* Full Duplex Serial/USART using PA2 and PA3 on USART2 +* PWM Audio using PB1 and TIM3 and GPT on TIM4 +* PWM WS2812 RGB using PA1 TIM2 +* 8KB SPI EEPROM chip sharing PA5-PA7 on SPI1 with PA4 as CS pin +* pmw3360 sensor sharing PA5-PA7 on SPI1, with B0 as CS pin +* Encoder using PA13 and PA14 +* SSD1306 OLED display (128x64) using PB8-PB9 on I2C1 +* Pull-up resistor (22k) on PA10 to fix reset issue. +* Pull-up resistor (5.1k) on PA1 for WS2812 LED support, and wire it's VCC to the 5V pin. +* Pins PA9, PA11, A12 are not useable because they're used for USB connection, and can't be shared. +* Pin PB2 is used by BOOT1, and is unusable + +## Keyboard Info + +* Keyboard Maintainer: [Drashna Jael're](https://github.com/drashna) +* Hardware Supported: [Design files](https://gitlab.com/keyboards1/dm_r_track/-/tree/master/boolean), [WeAct BlackPill (F411)](https://github.com/WeActTC/MiniSTM32F4x1), [PMW3360 Optical Sensor](https://www.tindie.com/products/jkicklighter/pmw3360-motion-sensor/) + +Make example for this keyboard (after setting up your build environment): + + make handwired/tractyl_manuform/5x6_right/f411:default + +Flashing example for this keyboard: + + make handwired/tractyl_manuform/5x6_right/f411: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 the top right key on the right side, or the top left key on the left side while plugging in. +* **Physical reset button**: Briefly press the "USER" button on the BlackPill +* **Keycode in layout**: Press the key mapped to `RESET`. diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f411/rules.mk b/keyboards/handwired/tractyl_manuform/5x6_right/f411/rules.mk new file mode 100644 index 000000000000..0a4fbee0e551 --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/f411/rules.mk @@ -0,0 +1,16 @@ +# MCU name +MCU = STM32F411 + +# Bootloader selection +BOOTLOADER = stm32-dfu + +KEYBOARD_SHARED_EP = yes +CONSOLE_ENABLE = yes +MOUSE_SHARED_EP = yes + +EEPROM_DRIVER = spi +WS2812_DRIVER = pwm +SERIAL_DRIVER = usart +AUDIO_DRIVER = pwm_hardware + +DEBOUNCE_TYPE = asym_eager_defer_pk diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/info.json b/keyboards/handwired/tractyl_manuform/5x6_right/info.json new file mode 100644 index 000000000000..51eb009aa5d7 --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/info.json @@ -0,0 +1,73 @@ +{ + "keyboard_name": "Tractyl Manuform 5x6", + "url": "", + "maintainer": "drashna", + "layouts": { + "LAYOUT_5x6_right": { + "layout": [ + {"label":"L00", "x":0, "y":0}, + {"label":"L01", "x":1, "y":0}, + {"label":"L02", "x":2, "y":0}, + {"label":"L03", "x":3, "y":0}, + {"label":"L04", "x":4, "y":0}, + {"label":"L05", "x":5, "y":0}, + {"label":"R00", "x":11, "y":0}, + {"label":"R01", "x":12, "y":0}, + {"label":"R02", "x":13, "y":0}, + {"label":"R03", "x":14, "y":0}, + {"label":"R04", "x":15, "y":0}, + {"label":"R05", "x":16, "y":0}, + {"label":"L10", "x":0, "y":1}, + {"label":"L11", "x":1, "y":1}, + {"label":"L12", "x":2, "y":1}, + {"label":"L13", "x":3, "y":1}, + {"label":"L14", "x":4, "y":1}, + {"label":"L15", "x":5, "y":1}, + {"label":"R10", "x":11, "y":1}, + {"label":"R11", "x":12, "y":1}, + {"label":"R12", "x":13, "y":1}, + {"label":"R13", "x":14, "y":1}, + {"label":"R14", "x":15, "y":1}, + {"label":"R15", "x":16, "y":1}, + {"label":"L20", "x":0, "y":2}, + {"label":"L21", "x":1, "y":2}, + {"label":"L22", "x":2, "y":2}, + {"label":"L23", "x":3, "y":2}, + {"label":"L24", "x":4, "y":2}, + {"label":"L25", "x":5, "y":2}, + {"label":"R20", "x":11, "y":2}, + {"label":"R21", "x":12, "y":2}, + {"label":"R22", "x":13, "y":2}, + {"label":"R23", "x":14, "y":2}, + {"label":"R24", "x":15, "y":2}, + {"label":"R25", "x":16, "y":2}, + {"label":"L30", "x":0, "y":3}, + {"label":"L31", "x":1, "y":3}, + {"label":"L32", "x":2, "y":3}, + {"label":"L33", "x":3, "y":3}, + {"label":"L34", "x":4, "y":3}, + {"label":"L35", "x":5, "y":3}, + {"label":"R30", "x":11, "y":3}, + {"label":"R31", "x":12, "y":3}, + {"label":"R32", "x":13, "y":3}, + {"label":"R33", "x":14, "y":3}, + {"label":"R34", "x":15, "y":3}, + {"label":"R35", "x":16, "y":3}, + {"label":"L42", "x":2, "y":4}, + {"label":"L43", "x":3, "y":4}, + {"label":"R42", "x":13, "y":4}, + {"label":"R43", "x":14, "y":4}, + {"label":"L44", "x":4, "y":5}, + {"label":"L45", "x":5, "y":5}, + {"label":"R41", "x":12, "y":5}, + {"label":"L54", "x":6, "y":6}, + {"label":"L55", "x":7, "y":6}, + {"label":"R51", "x":10, "y":6}, + {"label":"L52", "x":6, "y":7}, + {"label":"L53", "x":7, "y":7}, + {"label":"R52", "x":9, "y":7}, + {"label":"R53", "x":10, "y":7} + ] + } + } +} diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/default/keymap.c b/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/default/keymap.c new file mode 100644 index 000000000000..30dafdf516b0 --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/default/keymap.c @@ -0,0 +1,63 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum custom_layers { + _QWERTY, + _LOWER, + _RAISE, +}; + + +#define RAISE MO(_RAISE) +#define LOWER MO(_LOWER) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QWERTY] = LAYOUT_5x6_right( + KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 ,KC_BSPC, + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_MINS, + KC_LSFT, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L ,KC_SCLN,KC_QUOT, + KC_LCTL, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_BSLASH, + KC_LBRC,KC_RBRC, KC_PLUS, KC_EQL, + RAISE,KC_SPC, LOWER, + KC_TAB,KC_HOME, KC_DEL, + KC_BSPC, KC_GRV, KC_LGUI, KC_ENT + ), + + [_LOWER] = LAYOUT_5x6_right( + KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL, + _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS, + _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE, + _______,_______,_______,_______,_______,_______, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS, + _______,KC_PSCR, _______, KC_P0, + _______,_______, _______, + _______,_______, _______, + _______,_______, _______,_______ + + ), + + [_RAISE] = LAYOUT_5x6_right( + KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 , + _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NLCK,KC_INS ,KC_SLCK,KC_MUTE, + _______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU, + _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD, + _______,_______, KC_EQL ,_______, + _______,_______, _______, + _______,_______, _______, + _______,_______, _______,_______ + ), +}; diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/config.h b/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/config.h new file mode 100644 index 000000000000..85ddef103a13 --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/config.h @@ -0,0 +1,22 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define TRACKBALL_DPI_OPTIONS { 1200, 1800, 2600, 3400 } + +#define DEBOUNCE 45 +#define ENCODER_DEFAULT_POS 0x3 diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/keymap.c b/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/keymap.c new file mode 100644 index 000000000000..f893a8cc41a2 --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/keymap.c @@ -0,0 +1,423 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "drashna.h" + +enum tractyl_keycodes { + KC_ACCEL = NEW_SAFE_RANGE, +}; + +bool enable_acceleration = false; +// clang-format off +#define LAYOUT_5x6_right_wrapper(...) LAYOUT_5x6_right(__VA_ARGS__) +#define LAYOUT_5x6_right_base( \ + K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ + K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \ + K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \ + ) \ + LAYOUT_5x6_right_wrapper( \ + KC_ESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, UC_CLUE, \ + SH_TT, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, SH_TT, \ + LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(K1B), \ + OS_LSFT, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \ + OS_LALT, OS_LGUI, OS_RGUI, OS_RALT, \ + KC_MUTE, KC_GRV, KC_BTN3, \ + KC_SPC, UC_IRNY, KC_ENT, \ + BK_LWER, TT(_MOUSE), TT(_MOUSE), DL_RAIS \ + ) +#define LAYOUT_base_wrapper(...) LAYOUT_5x6_right_base(__VA_ARGS__) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_DEFAULT_LAYER_1] = LAYOUT_base_wrapper( + _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, + _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, + _________________QWERTY_L3_________________, _________________QWERTY_R3_________________ + ), + + [_DEFAULT_LAYER_2] = LAYOUT_base_wrapper( + ______________COLEMAK_MOD_DH_L1____________, ______________COLEMAK_MOD_DH_R1____________, + ______________COLEMAK_MOD_DH_L2____________, ______________COLEMAK_MOD_DH_R2____________, + ______________COLEMAK_MOD_DH_L3____________, ______________COLEMAK_MOD_DH_R3____________ + ), + [_DEFAULT_LAYER_3] = LAYOUT_base_wrapper( + _________________COLEMAK_L1________________, _________________COLEMAK_R1________________, + _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, + _________________COLEMAK_L3________________, _________________COLEMAK_R3________________ + ), + + [_DEFAULT_LAYER_4] = LAYOUT_base_wrapper( + _________________DVORAK_L1_________________, _________________DVORAK_R1_________________, + _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, + _________________DVORAK_L3_________________, _________________DVORAK_R3_________________ + ), + + [_MOUSE] = LAYOUT_5x6_right( + _______, _______, _______, _______, _______, _______, DPI_CONFIG, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, KC_WH_U, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, KC_WH_D, KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN6, _______, + _______, _______, _______, _______, _______, _______, KC_BTN7, KC_BTN4, KC_BTN5, KC_BTN8, _______, _______, + _______, _______, _______, _______, + _______, _______, KC_BTN3, + _______, KC_ACCEL, _______, + _______, _______, _______, _______ + ), + [_GAMEPAD] = LAYOUT_5x6_right( + KC_ESC, KC_NO, KC_1, KC_2, KC_3, KC_4, DPI_CONFIG, _______, _______, _______, _______, _______, + KC_F1, KC_K, KC_Q, KC_W, KC_E, KC_R, _______, _______, _______, _______, _______, _______, + KC_TAB, KC_G, KC_A, KC_S, KC_D, KC_F, _______, _______, _______, _______, _______, _______, + KC_LCTL, KC_LSFT, KC_Z, KC_X, KC_C, KC_H, _______, _______, _______, _______, _______, _______, + KC_I, KC_T, TG_GAME, KC_NO, + KC_V, KC_O, _______, + KC_SPC, KC_P, _______, + KC_H, KC_LGUI, _______, _______ + ), + [_DIABLO] = LAYOUT_5x6_right( + KC_ESC, KC_V, KC_D, KC_LALT, KC_NO, KC_NO, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, + KC_TAB, KC_S, KC_I, KC_F, KC_M, KC_T, _______, _______, _______, _______, _______, _______, + KC_Q, KC_1, KC_2, KC_3, KC_4, KC_G, _______, _______, _______, _______, _______, _______, + KC_LCTL, KC_D3_1, KC_D3_2, KC_D3_3, KC_D3_4, KC_Z, _______, _______, _______, _______, _______, _______, + KC_F, KC_L, KC_NO, TG_DBLO, + KC_DIABLO_CLEAR, KC_F, _______, + SFT_T(KC_SPC), KC_J, _______, + ALT_T(KC_Q), KC_LGUI, _______, _______ + ), + [_DIABLOII] = LAYOUT_5x6_right( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_GRV, _______, _______, _______, _______, _______, _______, + KC_TAB, KC_A, KC_T, KC_Q, KC_I, KC_M, _______, _______, _______, _______, _______, _______, + KC_S, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, _______, _______, _______, _______, + KC_LCTL, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______, _______, _______, _______, _______, + KC_F, KC_L, KC_NO, TG(_DIABLOII), + _______, KC_G, _______, + KC_LSFT, _______, _______, + KC_LCTL, KC_V, _______, _______ + ), + [_LOWER] = LAYOUT_5x6_right_wrapper( + KC_F12, _________________FUNC_LEFT_________________, _________________FUNC_RIGHT________________, KC_F11, + _______, _________________LOWER_L1__________________, _________________LOWER_R1__________________, _______, + _______, _________________LOWER_L2__________________, _________________LOWER_R2__________________, KC_PIPE, + _______, _________________LOWER_L3__________________, _________________LOWER_R3__________________, _______, + _______, _______, _______, _______, + _______, _______, _______, + _______, _______, _______, + _______, _______, _______, _______ + ), + [_RAISE] = LAYOUT_5x6_right_wrapper( + KC_F12, _________________FUNC_LEFT_________________, _________________FUNC_RIGHT________________, KC_F11, + KC_GRV, _________________RAISE_L1__________________, _________________RAISE_R1__________________, _______, + _______, _________________RAISE_L2__________________, _________________RAISE_R2__________________, KC_BSLS, + _______, _________________RAISE_L3__________________, _________________RAISE_R3__________________, _______, + _______, _______, _______, _______, + _______, _______, _______, + _______, _______, _______, + _______, _______, _______, _______ + ), + [_ADJUST] = LAYOUT_5x6_right_wrapper( + KC_MAKE, KC_WIDE,KC_AUSSIE,KC_SCRIPT,KC_ZALGO,KC_NOMODE, KC_NOMODE,KC_BLOCKS,KC_REGIONAL,_______,_______, KC_RST, + VRSN, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, EEP_RST, + KEYLOCK, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, TG_MODS, + UC_MOD, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, KC_MPLY, + HPT_DWLI, HPT_DWLD, TG_GAME, TG_DBLO, + HPT_TOG, HPT_BUZ, KC_NUKE, + _______, _______, _______, + _______, TG(_DIABLOII),KC_NUKE, _______ + ), +}; + +#define BASE_ENCODERS { { KC_VOLD, KC_VOLU }, { KC_WH_D, KC_WH_U } } + +#ifdef ENCODER_MAP_ENABLE +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [_DEFAULT_LAYER_1] = BASE_ENCODERS, + [_DEFAULT_LAYER_2] = BASE_ENCODERS, + [_DEFAULT_LAYER_3] = BASE_ENCODERS, + [_DEFAULT_LAYER_4] = BASE_ENCODERS, + [_GAMEPAD] = { { _______, _______ }, { _______, _______ } }, + [_DIABLO] = { { _______, _______ }, { _______, _______ } }, + [_MOUSE] = { { _______, _______ }, { KC_WH_D, KC_WH_U } }, + [_MEDIA] = { { _______, _______ }, { _______, _______ } }, + [_RAISE] = { { _______, _______ }, { KC_PGDN, KC_PGUP } }, + [_LOWER] = { { RGB_MOD, RGB_RMOD}, { RGB_HUD, RGB_HUI } }, + [_ADJUST] = { { CK_DOWN, CK_UP }, { _______, _______ } }, +}; +// clang-format on +#else +bool encoder_update_user(uint8_t index, bool clockwise) { +# ifdef SWAP_HANDS_ENABLE + if (swap_hands) { + index ^= 1; + } +# endif + if (index == 0) { + tap_code_delay(clockwise ? KC_VOLD : KC_VOLU, 5); + } else if (index == 1) { + tap_code_delay(clockwise ? KC_WH_D : KC_WH_U, 5); + } + return false; +} +#endif + +#ifdef POINTING_DEVICE_ENABLE +static uint16_t mouse_timer = 0; +static uint16_t mouse_debounce_timer = 0; +static uint8_t mouse_keycode_tracker = 0; +bool tap_toggling = false; + +# ifdef TAPPING_TERM_PER_KEY +# define TAP_CHECK get_tapping_term(KC_BTN1, NULL) +# else +# ifndef TAPPING_TERM +# define TAPPING_TERM 200 +# endif +# define TAP_CHECK TAPPING_TERM +# endif + +report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) { + int8_t x = mouse_report.x, y = mouse_report.y; + mouse_report.x = 0; + mouse_report.y = 0; + + if (x != 0 && y != 0) { + mouse_timer = timer_read(); +# ifdef OLED_ENABLE + oled_timer = timer_read32(); +# endif + if (timer_elapsed(mouse_debounce_timer) > TAP_CHECK) { + if (enable_acceleration) { + x = (x > 0 ? x * x / 16 + x : -x * x / 16 + x); + y = (y > 0 ? y * y / 16 + y : -y * y / 16 + y); + } + mouse_report.x = x; + mouse_report.y = y; + if (!layer_state_is(_MOUSE)) { + layer_on(_MOUSE); + } + } + } + return mouse_report; +} + +void matrix_scan_keymap(void) { + if (timer_elapsed(mouse_timer) > 650 && layer_state_is(_MOUSE) && !mouse_keycode_tracker && !tap_toggling) { + layer_off(_MOUSE); + } + if (tap_toggling) { + if (!layer_state_is(_MOUSE)) { + layer_on(_MOUSE); + } + } +} + +bool process_record_keymap(uint16_t keycode, keyrecord_t* record) { + switch (keycode) { + case TT(_MOUSE): + if (record->event.pressed) { + mouse_keycode_tracker++; + } else { +# if TAPPING_TOGGLE != 0 + if (record->tap.count == TAPPING_TOGGLE) { + tap_toggling ^= 1; +# if TAPPING_TOGGLE == 1 + if (!tap_toggling) mouse_keycode_tracker -= record->tap.count + 1; +# else + if (!tap_toggling) mouse_keycode_tracker -= record->tap.count; +# endif + } else { + mouse_keycode_tracker--; + } +# endif + } + mouse_timer = timer_read(); + break; + case TG(_MOUSE): + if (record->event.pressed) { + tap_toggling ^= 1; + } + break; + case MO(_MOUSE): + case DPI_CONFIG: + case KC_MS_UP ... KC_MS_WH_RIGHT: + record->event.pressed ? mouse_keycode_tracker++ : mouse_keycode_tracker--; + mouse_timer = timer_read(); + case KC_ACCEL: + enable_acceleration = record->event.pressed; + break; + default: + if (IS_NOEVENT(record->event)) break; + if ((keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX) && (((keycode >> 0x8) & 0xF) == _MOUSE)) { + record->event.pressed ? mouse_keycode_tracker++ : mouse_keycode_tracker--; + mouse_timer = timer_read(); + break; + } + if (layer_state_is(_MOUSE) && !mouse_keycode_tracker) { + layer_off(_MOUSE); + } + mouse_keycode_tracker = 0; + mouse_debounce_timer = timer_read(); + break; + } + return true; +} + +layer_state_t layer_state_set_keymap(layer_state_t state) { + if (layer_state_cmp(state, _GAMEPAD) || layer_state_cmp(state, _DIABLO)) { + state |= ((layer_state_t)1 << _MOUSE); + } + return state; +} +#endif + +#ifdef OLED_ENABLE +// WPM-responsive animation stuff here +# define SLEEP_FRAMES 2 +# define SLEEP_SPEED 10 // below this wpm value your animation will idle + +# define WAKE_FRAMES 2 // uncomment if >1 + +# define KAKI_FRAMES 3 +# define KAKI_SPEED 40 // above this wpm value typing animation to triggere + +# define RTOGI_FRAMES 2 +//#define LTOGI_FRAMES 2 + +//#define ANIM_FRAME_DURATION 500 // how long each frame lasts in ms +// #define SLEEP_TIMER 60000 // should sleep after this period of 0 wpm, needs fixing +# define ANIM_SIZE 512 // number of bytes in array, minimize for adequate firmware size, max is 1024 + +uint32_t anim_timer = 0; +uint32_t anim_frame_duration = 500; +uint8_t current_sleep_frame = 0; +uint8_t current_wake_frame = 0; // uncomment if WAKE_FRAMES >1 +uint8_t current_kaki_frame = 0; +uint8_t current_rtogi_frame = 0; +// uint8_t current_ltogi_frame = 0; + +void render_kitty(void) { + // Images credit j-inc(/James Incandenza) and pixelbenny. Credit to obosob for initial animation approach. + static const char PROGMEM sleep[SLEEP_FRAMES][ANIM_SIZE] = {{ + // 'sleep1', 128x32px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0xa8, 0x48, 0xa8, 0x18, 0x08, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x80, 0x44, 0x84, 0x06, 0x05, 0x04, 0x80, 0x40, 0x20, 0x10, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x20, 0x18, 0x04, 0x04, 0x02, 0x7a, 0x86, 0x01, 0x80, 0x80, 0x01, 0x03, 0x05, 0x07, 0x01, 0x00, 0x00, 0x80, 0x83, 0x45, 0xfa, 0x3c, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x33, 0x24, 0x28, 0x28, 0x29, 0x29, 0x29, 0x3a, 0x18, 0x1c, 0x39, 0x24, 0x24, 0x3a, 0x2d, 0x26, 0x31, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + {// 'sleep2', 128x32px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x22, 0x3a, 0x2a, 0x26, 0x22, 0x80, 0xc0, 0x80, 0x00, 0x24, 0x34, 0x2c, 0xe4, 0x60, 0x10, 0x70, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x38, 0x04, 0x02, 0x02, 0x01, 0x79, 0x87, 0x01, 0x80, 0x81, 0x83, 0x05, 0x05, 0x03, 0x01, 0x00, 0x00, 0x80, 0x43, 0x05, 0xfa, 0x3c, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x33, 0x24, 0x28, 0x28, 0x28, 0x29, 0x29, 0x3a, 0x18, 0x1c, 0x39, 0x24, 0x24, 0x3a, 0x2d, 0x26, 0x31, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}; + static const char PROGMEM wake[WAKE_FRAMES][ANIM_SIZE] = {{ + // 'mati2', 128x32px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x08, 0x10, 0x60, 0x80, 0x00, 0x80, 0x60, 0x10, 0x08, 0x30, 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, 0x7f, 0x80, 0x40, 0x40, 0x5c, 0x00, 0x01, 0x41, 0x01, 0x00, 0x5c, 0x40, 0x40, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x80, 0xe1, 0x12, 0x0a, 0x06, 0x00, 0x80, 0x00, 0x06, 0x0a, 0x12, 0xe1, 0x80, 0x40, 0x40, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1f, 0x14, 0x14, 0x10, 0x10, 0x11, 0x1f, 0x10, 0x10, 0x18, 0x0f, 0x18, 0x10, 0x10, 0x1f, 0x11, 0x10, 0x10, 0x14, 0x14, 0x1f, 0x1c, 0x14, 0x14, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + {// 'mati3', 128x32px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x08, 0x10, 0x60, 0x80, 0x00, 0x80, 0x60, 0x10, 0x08, 0x30, 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, 0x7f, 0x90, 0x12, 0x0a, 0x02, 0xf4, 0x09, 0x0d, 0xf1, 0x04, 0x02, 0x0a, 0x12, 0x90, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x80, 0xe1, 0x12, 0x0a, 0x06, 0x01, 0x81, 0x00, 0x06, 0x0a, 0x12, 0xe1, 0x80, 0x40, 0x40, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1f, 0x14, 0x14, 0x10, 0x10, 0x11, 0x1f, 0x10, 0x10, 0x18, 0x0f, 0x18, 0x10, 0x10, 0x1f, 0x11, 0x10, 0x10, 0x14, 0x14, 0x1f, 0x1c, 0x14, 0x14, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}; + static const char PROGMEM kaki[KAKI_FRAMES][ANIM_SIZE] = {{ + // 'jare2', 128x32px + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x40, 0x80, 0x80, 0x80, 0x00, 0xfc, 0x84, 0x08, 0x08, 0x10, 0x20, 0x40, 0x40, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, 0x60, 0x80, 0x00, 0x00, 0x91, 0xa1, 0x80, 0x00, 0x00, 0x22, 0x84, 0x40, 0x50, 0x48, 0xc1, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x41, 0x82, 0xe2, 0x12, 0x0a, 0x06, 0x00, 0x80, 0x88, 0x4f, 0x02, 0x22, 0xe2, 0x9f, 0x40, 0x40, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1f, 0x14, 0x14, 0x10, 0x10, 0x11, 0x1f, 0x10, 0x10, 0x18, 0x0f, 0x18, 0x14, 0x10, 0x10, 0x10, 0x10, 0x10, 0x14, 0x14, 0x1f, 0x1a, 0x0a, 0x0a, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + { + // 'kaki1', 128x32px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x10, 0x20, 0x20, 0x40, 0x40, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x1a, 0x22, 0xc2, 0x04, 0x04, 0x04, 0x07, 0x00, 0xc0, 0x20, 0x10, 0x80, 0x80, 0x01, 0x01, 0x02, 0xfc, 0xfe, 0x02, 0x3c, 0x20, 0x40, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0d, 0x8d, 0x55, 0x50, 0x94, 0xf0, 0x10, 0x09, 0x08, 0x00, 0x80, 0x00, 0x06, 0x09, 0x1b, 0xee, 0x00, 0x00, 0x00, 0x00, 0x81, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1f, 0x14, 0x14, 0x10, 0x10, 0x11, 0x1f, 0x10, 0x10, 0x18, 0x0f, 0x18, 0x10, 0x10, 0x1f, 0x19, 0x18, 0x1c, 0x14, 0x16, 0x15, 0x14, 0x14, 0x14, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + {// 'kaki2', 128x32px + 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x20, 0x40, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x01, 0x02, 0x04, 0x04, 0x03, 0x80, 0x40, 0x40, 0x20, 0x00, 0x01, 0x02, 0x8c, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0d, 0x8d, 0x55, 0x50, 0x94, 0xf0, 0x10, 0x0a, 0x0e, 0x1d, 0x95, 0x24, 0x24, 0x27, 0x13, 0xe1, 0x01, 0x01, 0x01, 0x01, 0x02, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1f, 0x14, 0x14, 0x10, 0x10, 0x11, 0x1f, 0x10, 0x10, 0x18, 0x0f, 0x18, 0x10, 0x10, 0x1f, 0x19, 0x18, 0x1c, 0x14, 0x14, 0x17, 0x14, 0x14, 0x14, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}; + static const char PROGMEM rtogi[KAKI_FRAMES][ANIM_SIZE] = {{ + // 'rtogi1', 128x32px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0x10, 0x10, 0x08, 0x04, 0x02, 0x01, 0x0f, 0x90, 0x10, 0x20, 0xf0, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x48, 0x47, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x88, 0xc7, 0xc4, 0x62, 0x23, 0x11, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x40, 0x20, 0x10, 0x88, 0xcc, 0x43, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xc0, 0x80, 0x80, 0xc0, 0xe1, 0xfe, 0xb8, 0x88, 0x0c, 0x04, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x06, 0x04, 0x04, 0x04, 0x04, 0x05, 0x04, 0x04, 0x04, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + {// 'rtogi2', 128x32px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0x10, 0x10, 0x08, 0x04, 0x02, 0x01, 0x1f, 0xa0, 0x20, 0x40, 0x80, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x48, 0x47, 0x88, 0x00, 0x00, 0x00, 0x00, 0x24, 0x24, 0x28, 0x6b, 0x40, 0xa0, 0x99, 0x86, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x11, 0x22, 0x44, 0x48, 0x4c, 0x43, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xc0, 0x80, 0x80, 0xc0, 0xe1, 0xfe, 0xb8, 0x88, 0x0c, 0x04, 0x06, 0x06, 0x06, 0x0e, 0x0e, 0x06, 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, 0x01, 0x01, 0x01, 0x06, 0x04, 0x04, 0x04, 0x04, 0x05, 0x04, 0x04, 0x04, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}; + + // assumes 1 frame prep stage + void animation_phase(void) { + if (tap_toggling) { + anim_frame_duration = 300; + current_rtogi_frame = (current_rtogi_frame + 1) % RTOGI_FRAMES; + oled_write_raw_P(rtogi[abs((RTOGI_FRAMES - 1) - current_rtogi_frame)], ANIM_SIZE); + } else { + if (get_current_wpm() <= SLEEP_SPEED) { + anim_frame_duration = 500; + current_sleep_frame = (current_sleep_frame + 1) % SLEEP_FRAMES; + oled_write_raw_P(sleep[abs((SLEEP_FRAMES - 1) - current_sleep_frame)], ANIM_SIZE); + } + // if(get_current_wpm() >IDLE_SPEED && get_current_wpm() SLEEP_SPEED) { + anim_frame_duration = 800; + current_wake_frame = (current_wake_frame + 1) % WAKE_FRAMES; + oled_write_raw_P(wake[abs((WAKE_FRAMES - 1) - current_wake_frame)], ANIM_SIZE); + // oled_write_raw_P(wake[0], ANIM_SIZE); // remove if IDLE_FRAMES >1 + } + if (get_current_wpm() >= KAKI_SPEED) { + anim_frame_duration = 500; + current_kaki_frame = (current_kaki_frame + 1) % KAKI_FRAMES; + oled_write_raw_P(kaki[abs((KAKI_FRAMES - 1) - current_kaki_frame)], ANIM_SIZE); + } + } + } + if (get_current_wpm() != 000) { + // if(timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { + if (timer_elapsed32(anim_timer) > anim_frame_duration) { + anim_timer = timer_read32(); + animation_phase(); + } + } else { + // if(timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { + if (timer_elapsed32(anim_timer) > anim_frame_duration) { + anim_timer = timer_read32(); + animation_phase(); + } + } +} + +void oled_driver_render_logo_left(void) { + render_kitty(); + + oled_set_cursor(6, 0); + oled_write_P(PSTR(" Tractyl "), false); + oled_set_cursor(6, 1); + oled_write_P(PSTR(" Manuform "), false); + oled_set_cursor(6, 2); +# if defined(WPM_ENABLE) + render_wpm(1); +# endif + oled_set_cursor(6, 3); +# if defined(KEYBOARD_handwired_tractyl_manuform_5x6_right) + render_pointing_dpi_status(0); +# endif + oled_set_cursor(0, 4); +} +#endif diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/rgblight_breathe_table.h b/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/rgblight_breathe_table.h new file mode 100644 index 000000000000..fb921079bfb9 --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/rgblight_breathe_table.h @@ -0,0 +1,117 @@ +#pragma once + +#define RGBLIGHT_EFFECT_BREATHE_TABLE + +// clang-format off + +// Breathing center: 1.85 +// Breathing max: 100 + +const uint8_t PROGMEM rgblight_effect_breathe_table[] = { +#if RGBLIGHT_BREATHE_TABLE_SIZE == 256 + 0x0D, 0x0E, 0x0E, 0x0F, 0x0F, 0x10, 0x10, 0x11, + 0x11, 0x12, 0x13, 0x13, 0x14, 0x14, 0x15, 0x16, + 0x16, 0x17, 0x18, 0x18, 0x19, 0x19, 0x1A, 0x1B, + 0x1B, 0x1C, 0x1D, 0x1E, 0x1E, 0x1F, 0x20, 0x20, + 0x21, 0x22, 0x22, 0x23, 0x24, 0x25, 0x25, 0x26, + 0x27, 0x28, 0x28, 0x29, 0x2A, 0x2B, 0x2B, 0x2C, + 0x2D, 0x2E, 0x2E, 0x2F, 0x30, 0x31, 0x31, 0x32, + 0x33, 0x34, 0x34, 0x35, 0x36, 0x37, 0x38, 0x38, + 0x39, 0x3A, 0x3B, 0x3B, 0x3C, 0x3D, 0x3D, 0x3E, + 0x3F, 0x40, 0x40, 0x41, 0x42, 0x42, 0x43, 0x44, + 0x44, 0x45, 0x46, 0x46, 0x47, 0x48, 0x48, 0x49, + 0x4A, 0x4A, 0x4B, 0x4B, 0x4C, 0x4C, 0x4D, 0x4D, + 0x4E, 0x4E, 0x4F, 0x4F, 0x50, 0x50, 0x51, 0x51, + 0x51, 0x52, 0x52, 0x53, 0x53, 0x53, 0x54, 0x54, + 0x54, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x56, + 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, + 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, + 0x56, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x54, + 0x54, 0x54, 0x53, 0x53, 0x53, 0x52, 0x52, 0x51, + 0x51, 0x51, 0x50, 0x50, 0x4F, 0x4F, 0x4E, 0x4E, + 0x4D, 0x4D, 0x4C, 0x4C, 0x4B, 0x4B, 0x4A, 0x4A, + 0x49, 0x48, 0x48, 0x47, 0x46, 0x46, 0x45, 0x44, + 0x44, 0x43, 0x42, 0x42, 0x41, 0x40, 0x40, 0x3F, + 0x3E, 0x3D, 0x3D, 0x3C, 0x3B, 0x3B, 0x3A, 0x39, + 0x38, 0x38, 0x37, 0x36, 0x35, 0x34, 0x34, 0x33, + 0x32, 0x31, 0x31, 0x30, 0x2F, 0x2E, 0x2E, 0x2D, + 0x2C, 0x2B, 0x2B, 0x2A, 0x29, 0x28, 0x28, 0x27, + 0x26, 0x25, 0x25, 0x24, 0x23, 0x22, 0x22, 0x21, + 0x20, 0x20, 0x1F, 0x1E, 0x1E, 0x1D, 0x1C, 0x1B, + 0x1B, 0x1A, 0x19, 0x19, 0x18, 0x18, 0x17, 0x16, + 0x16, 0x15, 0x14, 0x14, 0x13, 0x13, 0x12, 0x11, + 0x11, 0x10, 0x10, 0x0F, 0x0F, 0x0E, 0x0E, 0x0D +#endif + +#if RGBLIGHT_BREATHE_TABLE_SIZE == 128 + 0x0D, 0x0E, 0x0F, 0x10, + 0x11, 0x13, 0x14, 0x15, + 0x16, 0x18, 0x19, 0x1A, + 0x1B, 0x1D, 0x1E, 0x20, + 0x21, 0x22, 0x24, 0x25, + 0x27, 0x28, 0x2A, 0x2B, + 0x2D, 0x2E, 0x30, 0x31, + 0x33, 0x34, 0x36, 0x38, + 0x39, 0x3B, 0x3C, 0x3D, + 0x3F, 0x40, 0x42, 0x43, + 0x44, 0x46, 0x47, 0x48, + 0x4A, 0x4B, 0x4C, 0x4D, + 0x4E, 0x4F, 0x50, 0x51, + 0x51, 0x52, 0x53, 0x54, + 0x54, 0x55, 0x55, 0x55, + 0x56, 0x56, 0x56, 0x56, + 0x56, 0x56, 0x56, 0x56, + 0x56, 0x55, 0x55, 0x54, + 0x54, 0x53, 0x53, 0x52, + 0x51, 0x50, 0x4F, 0x4E, + 0x4D, 0x4C, 0x4B, 0x4A, + 0x49, 0x48, 0x46, 0x45, + 0x44, 0x42, 0x41, 0x40, + 0x3E, 0x3D, 0x3B, 0x3A, + 0x38, 0x37, 0x35, 0x34, + 0x32, 0x31, 0x2F, 0x2E, + 0x2C, 0x2B, 0x29, 0x28, + 0x26, 0x25, 0x23, 0x22, + 0x20, 0x1F, 0x1E, 0x1C, + 0x1B, 0x19, 0x18, 0x17, + 0x16, 0x14, 0x13, 0x12, + 0x11, 0x10, 0x0F, 0x0E +#endif + +#if RGBLIGHT_BREATHE_TABLE_SIZE == 64 + 0x0D, 0x0F, + 0x11, 0x14, + 0x16, 0x19, + 0x1B, 0x1E, + 0x21, 0x24, + 0x27, 0x2A, + 0x2D, 0x30, + 0x33, 0x36, + 0x39, 0x3C, + 0x3F, 0x42, + 0x44, 0x47, + 0x4A, 0x4C, + 0x4E, 0x50, + 0x51, 0x53, + 0x54, 0x55, + 0x56, 0x56, + 0x56, 0x56, + 0x56, 0x55, + 0x54, 0x53, + 0x51, 0x4F, + 0x4D, 0x4B, + 0x49, 0x46, + 0x44, 0x41, + 0x3E, 0x3B, + 0x38, 0x35, + 0x32, 0x2F, + 0x2C, 0x29, + 0x26, 0x23, + 0x20, 0x1E, + 0x1B, 0x18, + 0x16, 0x13, + 0x11, 0x0F +#endif +}; + +static const int table_scale = 256 / sizeof(rgblight_effect_breathe_table); diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/rules.mk b/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/rules.mk new file mode 100644 index 000000000000..9b9032837ed1 --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/rules.mk @@ -0,0 +1,14 @@ +RGBLIGHT_ENABLE = yes +RGBLIGHT_STARTUP_ANIMATION = yes +AUDIO_ENABLE = yes +HAPTIC_ENABLE = no +COMMAND_ENABLE = no +TAP_DANCE_ENABLE = yes +UNICODE_ENABLE = yes +OLED_ENABLE = yes +WPM_ENABLE = yes +ENCODER_ENABLE = yes +ENCODER_MAP_ENABLE = yes +# DEBOUNCE_TYPE = sym_eager_pk + +LTO_SUPPORTED = no diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/readme.md b/keyboards/handwired/tractyl_manuform/5x6_right/readme.md new file mode 100644 index 000000000000..bfb142347cfd --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/readme.md @@ -0,0 +1,21 @@ +# Drashna's Tractyl Manuform (5x6) with a right side trackball + +![](https://preview.redd.it/zwt91036m3y51.jpg?width=960&crop=smart&auto=webp&s=e030deb7d8285c95a1a30c69a7e7a71f750e87bb) + +It's a Tractyl Manuform with an integrated thumb based trackball, using the pmw3360 optical sensor. + +It's powered by 2x Teensy++ 2.0's, using Drashna's [Teensy VBUS Hack](https://docs.qmk.fm/#/feature_split_keyboard?id=hardware-considerations-and-mods) for better detection. + + +* Keyboard Maintainer: [Drashna Jael're](https://github.com/drashna) +* Hardware Supported: [Design files](https://gitlab.com/keyboards1/dm_r_track/-/tree/master/boolean), [Teensy++ 2.0 (2x)](https://www.pjrc.com/store/teensypp.html), [PMW3360 Optical Sensor](https://www.tindie.com/products/jkicklighter/pmw3360-motion-sensor/) + +Make example for this keyboard (after setting up your build environment): + + make handwired/tractyl_manuform/5x6_right:default + +Flashing example for this keyboard: + + make handwired/tractyl_manuform/5x6_right:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/rules.mk b/keyboards/handwired/tractyl_manuform/5x6_right/rules.mk new file mode 100644 index 000000000000..727ce64f9fe5 --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/rules.mk @@ -0,0 +1,24 @@ +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 +SWAP_HANDS_ENABLE = yes + +POINTING_DEVICE_ENABLE = yes +POINTING_DEVICE_DRIVER = pmw3360 +MOUSE_SHARED_EP = yes + +SPLIT_KEYBOARD = yes + +QUANTUM_LIB_SRC += tm_sync.c + +DEFAULT_FOLDER = handwired/tractyl_manuform/5x6_right/teensy2pp diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/teensy2pp/config.h b/keyboards/handwired/tractyl_manuform/5x6_right/teensy2pp/config.h new file mode 100644 index 000000000000..442d474920ec --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/teensy2pp/config.h @@ -0,0 +1,55 @@ +/* +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#define PRODUCT Tractyl Manuform(5x6) Teensy 2.0 ++ + +// wiring of each half +#define MATRIX_COL_PINS \ + { C0, C1, C2, C3, C4, C5 } +#define MATRIX_ROW_PINS \ + { F7, F6, F5, F4, F3, F2 } + +#define DIODE_DIRECTION COL2ROW + +// WS2812 RGB LED strip input and number of LEDs +#define RGB_DI_PIN E7 +#define RGBLED_NUM 20 +#define RGBLIGHT_SPLIT +#define RGBLED_SPLIT \ + { 10, 10 } +#define RGBLIGHT_LIMIT_VAL 80 +#define OLED_BRIGHTNESS 50 + +#define DEBUG_LED_PIN D6 + +#define AUDIO_PIN C6 +#define AUDIO_PIN_ALT B7 + +/* serial.c configuration for split keyboard */ +#define SOFT_SERIAL_PIN D2 +#define EE_HANDS + +#define ENCODERS_PAD_A \ + { D5 } +#define ENCODERS_PAD_B \ + { D4 } + +/* PMW3360 Settings */ +#define PMW3360_CS_PIN B0 diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/teensy2pp/rules.mk b/keyboards/handwired/tractyl_manuform/5x6_right/teensy2pp/rules.mk new file mode 100644 index 000000000000..149471682dfb --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/teensy2pp/rules.mk @@ -0,0 +1,5 @@ +# MCU name +MCU = at90usb1286 + +# Bootloader selection +BOOTLOADER = halfkay diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/teensy2pp/teensy2pp.h b/keyboards/handwired/tractyl_manuform/5x6_right/teensy2pp/teensy2pp.h new file mode 100644 index 000000000000..525b0378b46f --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/5x6_right/teensy2pp/teensy2pp.h @@ -0,0 +1,19 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "5x6_right.h" diff --git a/keyboards/handwired/tractyl_manuform/config.h b/keyboards/handwired/tractyl_manuform/config.h new file mode 100644 index 000000000000..cc8a7546f4fa --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/config.h @@ -0,0 +1,42 @@ +/* +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x44DD +#define MANUFACTURER Drashna + +#define USB_POLLING_INTERVAL_MS 1 + +/* 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 + +#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC, RPC_ID_POINTER_STATE_SYNC diff --git a/keyboards/handwired/tractyl_manuform/post_config.h b/keyboards/handwired/tractyl_manuform/post_config.h new file mode 100644 index 000000000000..c48518ddd300 --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/post_config.h @@ -0,0 +1,96 @@ +/* +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +// mouse config +#ifdef MOUSEKEY_ENABLE +# ifndef MOUSEKEY_MOVE_DELTA +# ifndef MK_KINETIC_SPEED +# define MOUSEKEY_MOVE_DELTA 5 +# else +# define MOUSEKEY_MOVE_DELTA 25 +# endif +# endif +# ifndef MOUSEKEY_DELAY +# ifndef MK_KINETIC_SPEED +# define MOUSEKEY_DELAY 300 +# else +# define MOUSEKEY_DELAY 8 +# endif +# endif +# ifndef MOUSEKEY_INTERVAL +# ifndef MK_KINETIC_SPEED +# define MOUSEKEY_INTERVAL 50 +# else +# define MOUSEKEY_INTERVAL 20 +# endif +# endif +# ifndef MOUSEKEY_MAX_SPEED +# define MOUSEKEY_MAX_SPEED 7 +# endif +# ifndef MOUSEKEY_TIME_TO_MAX +# define MOUSEKEY_TIME_TO_MAX 60 +# endif +# ifndef MOUSEKEY_INITIAL_SPEED +# define MOUSEKEY_INITIAL_SPEED 100 +# endif +# ifndef MOUSEKEY_BASE_SPEED +# define MOUSEKEY_BASE_SPEED 1000 +# endif +# ifndef MOUSEKEY_DECELERATED_SPEED +# define MOUSEKEY_DECELERATED_SPEED 400 +# endif +# ifndef MOUSEKEY_ACCELERATED_SPEED +# define MOUSEKEY_ACCELERATED_SPEED 3000 +# endif + +// mouse scroll config +# ifndef MOUSEKEY_WHEEL_DELAY +# define MOUSEKEY_WHEEL_DELAY 15 +# endif +# ifndef MOUSEKEY_WHEEL_DELTA +# define MOUSEKEY_WHEEL_DELTA 1 +# endif +# ifndef MOUSEKEY_WHEEL_INTERVAL +# define MOUSEKEY_WHEEL_INTERVAL 50 +# endif +# ifndef MOUSEKEY_WHEEL_MAX_SPEED +# define MOUSEKEY_WHEEL_MAX_SPEED 8 +# endif +# ifndef MOUSEKEY_WHEEL_TIME_TO_MAX +# define MOUSEKEY_WHEEL_TIME_TO_MAX 80 +# endif + +# ifndef MOUSEKEY_WHEEL_INITIAL_MOVEMENTS +# define MOUSEKEY_WHEEL_INITIAL_MOVEMENTS 8 +# endif +# ifndef MOUSEKEY_WHEEL_BASE_MOVEMENTS +# define MOUSEKEY_WHEEL_BASE_MOVEMENTS 48 +# endif +# ifndef MOUSEKEY_WHEEL_ACCELERATED_MOVEMENTS +# define MOUSEKEY_WHEEL_ACCELERATED_MOVEMENTS 48 +# endif +# ifndef MOUSEKEY_WHEEL_DECELERATED_MOVEMENTS +# define MOUSEKEY_WHEEL_DECELERATED_MOVEMENTS 8 +# endif +#endif + +#ifndef DEBOUNCE +# define DEBOUNCE 5 +#endif diff --git a/keyboards/handwired/tractyl_manuform/readme.md b/keyboards/handwired/tractyl_manuform/readme.md new file mode 100644 index 000000000000..e78fd2ee06ae --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/readme.md @@ -0,0 +1,25 @@ +# Tractyl Manuform (4x6, 5x6) + +the [Dactyl-Manuform](https://github.com/tshort/dactyl-keyboard) is a split curved keyboard based on the design of [adereth dactyl](https://github.com/adereth/dactyl-keyboard) and thumb cluster design of the [manuform](https://geekhack.org/index.php?topic=46015.0) keyboard, the hardware is similar to the let's split keyboard. all information needed for making one is in the first link. +![Imgur](https://i.imgur.com/kDNVTI4l.jpeg) + +* Keyboard Maintainer: [drashna](https://github.com/drashna) +* Hardware Supported: Teensy 2.0++, WeAct BlackPill F411 + +Make example for this keyboard (after setting up your build environment): + + make handwired/tractyl_manuform/5x6_right/f411/drashna:default + +Flashing example for this keyboard: + + make handwired/tractyl_manuform/5x6_right/f411/drashna:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `RESET` if it is available diff --git a/keyboards/handwired/tractyl_manuform/tm_sync.c b/keyboards/handwired/tractyl_manuform/tm_sync.c new file mode 100644 index 000000000000..733f09a22e0f --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/tm_sync.c @@ -0,0 +1,179 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +#include "pointing_device.h" +#include "transactions.h" +#include +#ifdef MOUSEKEY_ENABLE +# include "mousekey.h" +#endif + +// typedef struct { +// uint16_t device_cpi; +// } kb_config_data_t; + +kb_config_data_t kb_config; +static report_mouse_t shared_mouse_report; +extern const pointing_device_driver_t pointing_device_driver; + +void kb_pointer_sync_handler(uint8_t initiator2target_buffer_size, const void* initiator2target_buffer, uint8_t target2initiator_buffer_size, void* target2initiator_buffer) { + shared_mouse_report = pointing_device_driver.get_report(shared_mouse_report); + memcpy(target2initiator_buffer, &shared_mouse_report, sizeof(report_mouse_t)); + shared_mouse_report.x = 0; + shared_mouse_report.y = 0; + shared_mouse_report.h = 0; + shared_mouse_report.v = 0; +} + +void kb_config_sync_handler(uint8_t initiator2target_buffer_size, const void* initiator2target_buffer, uint8_t target2initiator_buffer_size, void* target2initiator_buffer) { + if (initiator2target_buffer_size == sizeof(kb_config)) { + memcpy(&kb_config, initiator2target_buffer, sizeof(kb_config)); + } + + static uint16_t cpi = 0; + // Check if the state values are different + if (cpi != kb_config.device_cpi) { + cpi = kb_config.device_cpi; + if (!is_keyboard_left()) { + pointing_device_set_cpi(cpi); + } + } +} + +void keyboard_pre_init_sync(void) { + memset(&kb_config, 0, sizeof(kb_config)); + memset(&shared_mouse_report, 0, sizeof(shared_mouse_report)); +} + +void keyboard_post_init_sync(void) { + // Register keyboard state sync split transaction + transaction_register_rpc(RPC_ID_KB_CONFIG_SYNC, kb_config_sync_handler); + transaction_register_rpc(RPC_ID_POINTER_STATE_SYNC, kb_pointer_sync_handler); +} + +void housekeeping_task_sync(void) { + if (is_keyboard_master()) { + // Keep track of the last state, so that we can tell if we need to propagate to slave + static kb_config_data_t last_kb_config; + static uint32_t last_sync = 0; + bool needs_sync = false; + + // Check if the state values are different + if (memcmp(&kb_config, &last_kb_config, sizeof(kb_config))) { + needs_sync = true; + memcpy(&last_kb_config, &kb_config, sizeof(kb_config)); + } + // Send to slave every 500ms regardless of state change + if (timer_elapsed32(last_sync) > 500) { + needs_sync = true; + } + + // Perform the sync if requested + if (needs_sync) { + if (transaction_rpc_send(RPC_ID_KB_CONFIG_SYNC, sizeof(kb_config), &kb_config)) { + last_sync = timer_read32(); + } + } + } +} + +void trackball_set_cpi(uint16_t cpi) { + kb_config.device_cpi = cpi; + if (!is_keyboard_left()) { + pointing_device_set_cpi(cpi); + } +} + +void pointing_device_task(void) { + if (!is_keyboard_master()) { + return; + } + +#if defined(POINTING_DEVICE_TASK_THROTTLE) + static uint32_t last_exec = 0; + if (timer_elapsed32(last_exec) < 1) { + return; + } + last_exec = timer_read32(); +#endif + + report_mouse_t local_report = pointing_device_get_report(); + + // Gather report info +#ifdef POINTING_DEVICE_MOTION_PIN + if (!readPin(POINTING_DEVICE_MOTION_PIN)) +#endif +#if defined(POINTING_DEVICE_COMBINED) + local_report = pointing_device_driver.get_report(local_report); + transaction_rpc_recv(RPC_ID_POINTER_STATE_SYNC, sizeof(report_mouse_t), &shared_mouse_report); + local_report.x = local_report.x | shared_mouse_report.x; + local_report.y = local_report.y | shared_mouse_report.y; + local_report.h = local_report.h | shared_mouse_report.h; + local_report.v = local_report.v | shared_mouse_report.v; +#elif defined(POINTING_DEVICE_LEFT) + if (is_keyboard_left()) { + local_report = pointing_device_driver.get_report(local_report); + } else { + transaction_rpc_recv(RPC_ID_POINTER_STATE_SYNC, sizeof(report_mouse_t), &local_report); + } +#elif defined(POINTING_DEVICE_RIGHT) + if (!is_keyboard_left()) { + local_report = pointing_device_driver.get_report(local_report); + } else { + transaction_rpc_recv(RPC_ID_POINTER_STATE_SYNC, sizeof(report_mouse_t), &local_report); + } +#else +# error "You need to define the side(s) the pointing device is on. POINTING_DEVICE_COMBINED / POINTING_DEVICE_LEFT / POINTING_DEVICE_RIGHT" +#endif + + // Support rotation of the sensor data +#if defined(POINTING_DEVICE_ROTATION_90) || defined(POINTING_DEVICE_ROTATION_180) || defined(POINTING_DEVICE_ROTATION_270) + int8_t x = local_report.x, y = local_report.y; +# if defined(POINTING_DEVICE_ROTATION_90) + local_report.x = y; + local_report.y = -x; +# elif defined(POINTING_DEVICE_ROTATION_180) + local_report.x = -x; + local_report.y = -y; +# elif defined(POINTING_DEVICE_ROTATION_270) + local_report.x = -y; + local_report.y = x; +# else +# error "How the heck did you get here?!" +# endif +#endif + // Support Inverting the X and Y Axises +#if defined(POINTING_DEVICE_INVERT_X) + local_report.x = -local_report.x; +#endif +#if defined(POINTING_DEVICE_INVERT_Y) + local_report.y = -local_report.y; +#endif + + // allow kb to intercept and modify report + local_report = pointing_device_task_kb(local_report); + // combine with mouse report to ensure that the combined is sent correctly +#ifdef MOUSEKEY_ENABLE + report_mouse_t mousekey_report = mousekey_get_report(); + local_report.buttons = local_report.buttons | mousekey_report.buttons; +#endif +#if defined(POINTING_DEVICE_COMBINED) + local_report.buttons = local_report.buttons | shared_mouse_report.buttons; +#endif + pointing_device_set_report(local_report); + pointing_device_send(); +} diff --git a/keyboards/handwired/tractyl_manuform/tractyl_manuform.c b/keyboards/handwired/tractyl_manuform/tractyl_manuform.c new file mode 100644 index 000000000000..4b36fab54f0a --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/tractyl_manuform.c @@ -0,0 +1,144 @@ +/* Copyright 2020 Christopher Courtney (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "tractyl_manuform.h" +#include "transactions.h" +#include +#include "drivers/sensors/pmw3360.h" + +#ifndef TRACKBALL_DPI_OPTIONS +# define TRACKBALL_DPI_OPTIONS \ + { 1200, 1600, 2400 } +# ifndef TRACKBALL_DPI_DEFAULT +# define TRACKBALL_DPI_DEFAULT 1 +# endif +#endif +#ifndef TRACKBALL_DPI_DEFAULT +# define TRACKBALL_DPI_DEFAULT 0 +#endif + +keyboard_config_t keyboard_config; +uint16_t dpi_array[] = TRACKBALL_DPI_OPTIONS; +#define DPI_OPTION_SIZE (sizeof(dpi_array) / sizeof(uint16_t)) + + + +bool process_record_kb(uint16_t keycode, keyrecord_t* record) { + if (!process_record_user(keycode, record)) { + return false; + } + +#ifdef POINTING_DEVICE_ENABLE + if (keycode == DPI_CONFIG && record->event.pressed) { + if ((get_mods() | get_oneshot_mods()) & MOD_MASK_SHIFT) { + keyboard_config.dpi_config = (keyboard_config.dpi_config - 1) % DPI_OPTION_SIZE; + } else { + keyboard_config.dpi_config = (keyboard_config.dpi_config + 1) % DPI_OPTION_SIZE; + } + eeconfig_update_kb(keyboard_config.raw); + trackball_set_cpi(dpi_array[keyboard_config.dpi_config]); + } +#endif + +/* If Mousekeys is disabled, then use handle the mouse button + * keycodes. This makes things simpler, and allows usage of + * the keycodes in a consistent manner. But only do this if + * Mousekeys is not enable, so it's not handled twice. + */ +#ifndef MOUSEKEY_ENABLE + if (IS_MOUSEKEY_BUTTON(keycode)) { + report_mouse_t currentReport = pointing_device_get_report(); + currentReport.buttons = pointing_device_handle_buttons(currentReport.buttons, record->event.pressed, keycode - KC_MS_BTN1); + pointing_device_set_report(currentReport); + pointing_device_send(); + } +#endif + + return true; +} +__attribute__((weak)) void keyboard_pre_init_sync(void) {} +void keyboard_pre_init_kb(void) { + // debug_enable = true; + // debug_matrix = true; + // debug_mouse = true; + // debug_encoder = true; + + // This is the debug LED. +#if defined(DEBUG_LED_PIN) + setPinOutput(DEBUG_LED_PIN); + writePin(DEBUG_LED_PIN, !debug_enable); +#endif + + keyboard_pre_init_sync(); + keyboard_pre_init_user(); +} + +__attribute__((weak)) void keyboard_post_init_sync(void) {} +void keyboard_post_init_kb(void) { + keyboard_post_init_sync(); + keyboard_post_init_user(); +} + +#ifdef POINTING_DEVICE_ENABLE +void pointing_device_init_kb(void) { + trackball_set_cpi(dpi_array[keyboard_config.dpi_config]); + pointing_device_init_user(); +} + +report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report) { + if (is_keyboard_master()) { + mouse_report = pointing_device_task_user(mouse_report); + } + return mouse_report; +} +#endif + +void eeconfig_init_kb(void) { + keyboard_config.dpi_config = TRACKBALL_DPI_DEFAULT; +#ifdef POINTING_DEVICE_ENABLE + trackball_set_cpi(dpi_array[keyboard_config.dpi_config]); +#endif + eeconfig_update_kb(keyboard_config.raw); + eeconfig_init_user(); +} + +__attribute__((weak)) void matrix_init_sub_kb(void) {} +void matrix_init_kb(void) { + // is safe to just read DPI setting since matrix init + // comes before pointing device init. + keyboard_config.raw = eeconfig_read_kb(); + if (keyboard_config.dpi_config > DPI_OPTION_SIZE) { + eeconfig_init_kb(); + } + matrix_init_sub_kb(); + matrix_init_user(); +} + +__attribute__((weak)) void matrix_scan_sub_kb(void) {} +void matrix_scan_kb(void) { + matrix_scan_sub_kb(); + matrix_scan_user(); +} + +__attribute__((weak)) void housekeeping_task_sync(void) {} +void housekeeping_task_kb(void) { + housekeeping_task_sync(); + // no need for user function, is called already +} + +#ifdef POINTING_DEVICE_ENABLE +void matrix_power_up(void) { pointing_device_task(); } +#endif diff --git a/keyboards/handwired/tractyl_manuform/tractyl_manuform.h b/keyboards/handwired/tractyl_manuform/tractyl_manuform.h new file mode 100644 index 000000000000..6aa40fc18b09 --- /dev/null +++ b/keyboards/handwired/tractyl_manuform/tractyl_manuform.h @@ -0,0 +1,52 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" +#include "pointing_device.h" + +#if defined(KEYBOARD_handwired_tractyl_manuform_5x6_right) +# include "5x6_right.h" +#elif defined(KEYBOARD_handwired_tractyl_manuform_4x6_right) +# include "4x6_right.h" +#endif + +typedef union { + uint32_t raw; + struct { + uint8_t dpi_config; + }; +} keyboard_config_t; + +extern keyboard_config_t keyboard_config; + +enum ploopy_keycodes { + DPI_CONFIG = SAFE_RANGE, + KEYMAP_SAFE_RANGE, +}; + +typedef struct { + uint16_t device_cpi; +} kb_config_data_t; + +void trackball_set_cpi(uint16_t cpi); +void matrix_init_sub_kb(void); +void matrix_scan_sub_kb(void); + +void keyboard_pre_init_sync(void); +void keyboard_post_init_sync(void); +void housekeeping_task_sync(void); diff --git a/keyboards/handwired/traveller/config.h b/keyboards/handwired/traveller/config.h index fbc05b59ccbf..2e3767e0cdcc 100644 --- a/keyboards/handwired/traveller/config.h +++ b/keyboards/handwired/traveller/config.h @@ -15,21 +15,20 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x6060 -#define DEVICE_VER 0x0001 -#define MANUFACTURER You -#define PRODUCT traveller +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6060 +#define DEVICE_VER 0x0001 +#define MANUFACTURER You +#define PRODUCT traveller /* key matrix size */ -#define MATRIX_ROWS 4 -#define MATRIX_COLS 13 +#define MATRIX_ROWS 4 +#define MATRIX_COLS 13 /* * Keyboard Matrix Assignments @@ -40,26 +39,45 @@ along with this program. If not, see . * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) * -*/ + */ #define MATRIX_ROW_PINS { D0, D1, D3, D2 } - // no I can't say why this order seemed like a good idea #define MATRIX_COL_PINS { B5, D6, B7, B6, F6, B1, B3, F7, B4, E6, D7, C6, D4 } #define UNUSED_PINS -// LED stuff -#define RGB_DI_PIN B2 -//#define RBLIGHT_TIMER -#define RGBLED_NUM 1 // Number of LEDs -#define RGBLIGHT_HUE_STEP 10 -#define RGBLIGHT_SAT_STEP 17 -#define RGBLIGHT_VAL_STEP 17 - /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW - -// #define BACKLIGHT_PIN B7 -// #define BACKLIGHT_BREATHING -// #define BACKLIGHT_LEVELS 3 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_BREATHING +//#define BACKLIGHT_LEVELS 3 + +#define RGB_DI_PIN B2 +#ifdef RGB_DI_PIN +# define RGBLED_NUM 1 +# define RGBLIGHT_HUE_STEP 10 +# define RGBLIGHT_SAT_STEP 17 +# define RGBLIGHT_VAL_STEP 17 +//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +//# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +#endif /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ #define DEBOUNCE 5 @@ -67,14 +85,16 @@ along with this program. If not, see . /* define if matrix has ghost (lacks anti-ghosting diodes) */ //#define MATRIX_HAS_GHOST -/* number of backlight levels */ -#define BACKLIGHT_LEVELS 3 - /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ //#define LOCKING_SUPPORT_ENABLE /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + /* * Force NKRO * @@ -96,54 +116,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -159,7 +131,11 @@ along with this program. If not, see . //#define NO_ACTION_LAYER //#define NO_ACTION_TAPPING //#define NO_ACTION_ONESHOT -//#define NO_ACTION_MACRO -//#define NO_ACTION_FUNCTION -#endif +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/handwired/traveller/info.json b/keyboards/handwired/traveller/info.json index 0a13fab77a7d..2a59527b8993 100644 --- a/keyboards/handwired/traveller/info.json +++ b/keyboards/handwired/traveller/info.json @@ -1,65 +1,67 @@ { - "keyboard_name": "traveller", + "keyboard_name": "Traveller", "url": "", "maintainer": "qmk", - "width": 1, - "height": 1, "layouts": { - "KEYMAP": { + "LAYOUT": { "layout": [ - {"x":0, "y":0}, - {"x":1, "y":0}, - {"x":2, "y":0}, - {"x":3, "y":0}, - {"x":4, "y":0}, - {"x":5, "y":0}, - {"x":7, "y":0}, - {"x":8, "y":0}, - {"x":9, "y":0}, - {"x":10, "y":0}, - {"x":11, "y":0}, - {"x":12, "y":0}, + {"x": 0, "y": 1.2}, + {"x": 1, "y": 0.8}, + {"x": 2, "y": 0.4}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0.4}, + {"x": 5, "y": 0.8}, - {"x":0, "y":1}, - {"x":1, "y":1}, - {"x":2, "y":1}, - {"x":3, "y":1}, - {"x":4, "y":1}, - {"x":5, "y":1}, - {"x":7, "y":1}, - {"x":8, "y":1}, - {"x":9, "y":1}, - {"x":10, "y":1}, - {"x":11, "y":1}, - {"x":12, "y":1}, + {"x": 9, "y": 0.8}, + {"x": 10, "y": 0.4}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0.4}, + {"x": 13, "y": 0.8}, + {"x": 14, "y": 1.2}, - {"x":0, "y":2}, - {"x":1, "y":2}, - {"x":2, "y":2}, - {"x":3, "y":2}, - {"x":4, "y":2}, - {"x":5, "y":2}, - {"x":6, "y":2}, - {"x":7, "y":2}, - {"x":8, "y":2}, - {"x":9, "y":2}, - {"x":10, "y":2}, - {"x":11, "y":2}, - {"x":12, "y":2}, + {"x": 0, "y": 2.2}, + {"x": 1, "y": 1.8}, + {"x": 2, "y": 1.4}, + {"x": 3, "y": 1}, + {"x": 4, "y": 1.4}, + {"x": 5, "y": 1.8}, - {"x":0, "y":3}, - {"x":1, "y":3}, - {"x":2, "y":3}, - {"x":3, "y":3}, - {"x":4, "y":3}, - {"x":5, "y":3}, - {"x":6, "y":3}, - {"x":7, "y":3}, - {"x":8, "y":3}, - {"x":9, "y":3}, - {"x":10, "y":3}, - {"x":11, "y":3}, - {"x":12, "y":3} + {"x": 9, "y": 1.8}, + {"x": 10, "y": 1.4}, + {"x": 11, "y": 1}, + {"x": 12, "y": 1.4}, + {"x": 13, "y": 1.8}, + {"x": 14, "y": 2.2}, + + {"x": 0, "y": 3.2}, + {"x": 1, "y": 2.8}, + {"x": 2, "y": 2.4}, + {"x": 3, "y": 2}, + {"x": 4, "y": 2.4}, + {"x": 5, "y": 2.8}, + + {"x": 9, "y": 2.8}, + {"x": 10, "y": 2.4}, + {"x": 11, "y": 2}, + {"x": 12, "y": 2.4}, + {"x": 13, "y": 2.8}, + {"x": 14, "y": 3.2}, + + {"x": 0, "y": 4.2}, + {"x": 1, "y": 3.8}, + {"x": 2, "y": 3.4}, + {"x": 3, "y": 3}, + {"x": 4, "y": 3.4}, + {"x": 5, "y": 3.8}, + {"x": 6, "y": 3.05, "h": 1.5}, + + {"x": 8, "y": 3.05, "h": 1.5}, + {"x": 9, "y": 3.8}, + {"x": 10, "y": 3.4}, + {"x": 11, "y": 3}, + {"x": 12, "y": 3.4}, + {"x": 13, "y": 3.8}, + {"x": 14, "y": 4.2} ] } } diff --git a/keyboards/handwired/traveller/keymaps/default/keymap.c b/keyboards/handwired/traveller/keymaps/default/keymap.c index 4802b0534514..288acbe1082b 100644 --- a/keyboards/handwired/traveller/keymaps/default/keymap.c +++ b/keyboards/handwired/traveller/keymaps/default/keymap.c @@ -1,254 +1,228 @@ #include QMK_KEYBOARD_H #include "mousekey.h" -// Each layer gets a name for readability, which is then used in the keymap matrix below. -// The underscores don't mean anything - you can have a layer called STUFF or any other name. -#define _QW 0 -#define _LW 1 -#define _HI 2 -#define _NAV 4 -#define _CUR 5 -#define _FKEYS 6 -#define _TRNS 8 - -// We do the same trick for functions -#define RGBLED_TOGGLE 10 -#define _HIOUT 15 -#define _LWOUT 16 +enum layer_names { + _QW, + _LW, + _HI, + _NAV, + _CUR, + _FKEYS, + _TRNS +}; enum custom_keycodes { - M_MUL = SAFE_RANGE, - M_MDL, - M_MDR, - M_MUR + M_MUL = SAFE_RANGE, + M_MDL, + M_MDR, + M_MUR }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* Qwerty - * ,-----------------------------------------. .-----------------------------------------. - * | NAV | ` ~ | W | E | R | T | | Y | U | I | O | - | = | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Tab | Q | S | D | F | G | | H | J | K | L | P | \ | - * |------+------+------+------+------+------|------+------+------+------+------+------+------| - *|ctrl/esc| A | X | C | V | B |Ctrl /| N | M | , | . | ; | ' | - * |------+------+------+------+------+------+ // +------+------+------+------+------+------| - * | Shift| Z | Del | GUI | Low | Bspc |/Enter| Spc | Hi | GUI | Alt | / |Shift | - * `------------------------------------------------------------------------------------------' - * - */ -[_QW] = KEYMAP( - TG(_NAV), KC_GRV, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_MINS, KC_EQL, - KC_TAB, KC_Q, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_P, KC_BSLS, - CTL_T(KC_ESC), KC_A, KC_X, KC_C, KC_V, KC_B, KC_RCTL, KC_N, KC_M, KC_COMM, KC_DOT, KC_SCLN, KC_QUOT, - KC_LSFT, KC_Z, KC_DEL, KC_LGUI, MO(_LW), KC_BSPC, KC_ENTER, KC_SPC, MO(_HI), KC_RGUI, KC_RALT, KC_SLSH, KC_RSFT - ), - -/* LOW - numbers, missing or awkward programming keys - Doubled 1 key allows lazy reach with ring finger. - * ,-----------------------------------------. .-----------------------------------------. - * | FKeys| 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 |Ctrl-alt-del| - * |------+------+------+------+------+------| +------+------+------+------+------+------| - * | Tab | 1 | ] | ( | ) | | | * | ( | ) | [ | | | - * |------+------+------+------+------+------|------+------+------+------+------+------+------| - * | Caps | [ | | { | } | ` | /| # | { | } | | ] | | - * |------+------+------+------+------+------+ // +------+------+------+------+------+------| - * | Shift| | | | Low | |/ | | Hi | | | |Shift | - * `------------------------------------------------------------------------------------------' - * - */ - -[_LW] = KEYMAP( - TG(_FKEYS), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, LCTL(LALT(KC_DEL)) , - KC_TRNS, KC_1, KC_RBRC, KC_LPRN, KC_RPRN, KC_NO, KC_ASTR, KC_LPRN, KC_RPRN, KC_LBRC, KC_NO, KC_NO, - KC_CAPS, KC_LBRC, KC_NO, KC_LCBR, KC_RCBR, KC_TILD, KC_TRNS, KC_HASH, KC_LCBR, KC_RCBR, KC_NO, KC_RBRC, KC_NO, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS -), - -/* HI - Punctuation, shell and -url ://@.com row on bottom, && is opposite || ^$ are in regex order: ^.*$ -Right hand nav keys work pretty well chorded with the Right hand Hi Key - * ,-----------------------------------------. .-----------------------------------------. - * |FKEYS | ! | @ | # | $ | % | | ^ | & | * | ( | ) | + | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | ! | & | "|" | $ | % | | Vol+| Mute| | | | | - * |------+------+------+------+------+------|------+------+------+------+------+------+------| - * | CAPS | ^ | : | . | * | - | /| Vol-| Play | PgUp | Home | Up | End | - * |------+------+------+------+------+------+ // +------+------+------+------+------+------| - * | | / | | | Low | |/ | | Hi | PgDn | Left| Down | Right | - * `------------------------------------------------------------------------------------------' - * - */ - -[_HI] = KEYMAP( - TG(_FKEYS),KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PLUS, - KC_TRNS, KC_EXLM, KC_AMPR, KC_PIPE, KC_DLR, KC_PERC, KC_VOLU, KC_MUTE, KC_NO, KC_NO, KC_NO, KC_NO, - KC_CAPS, KC_CIRC, KC_COLN, KC_DOT, KC_ASTR, KC_MINS, KC_TRNS, KC_VOLD, KC_PPLS, KC_PGUP, KC_HOME, KC_UP, KC_END, - KC_TRNS, KC_SLSH, KC_TRNS, KC_TRNS, TT(_LW), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, KC_LEFT, KC_DOWN, KC_RIGHT -), - -/* NAV - mouse & navigation -//gui left and right are line home/end, or fore & back in browser -// Mouse buttons are reversed for comfort - bigger stretch is to the right button. - - * ,-----------------------------------------. .-----------------------------------------. -* | NAV | | | Up | |Gui-> | | MwU | MS_UL| MS_U |MS_UR | |Ms Norm| -* |------+------+------+------+------+------| |------+------+------+------+------+--------| -* | |Gui<- | Left | Down |Right | C^E | | BTN3 | MS_L |MS Up | MS_R | |Ms Fast | -* |------+------+------+------+------+------|------|------+------+------+------+------+--------| -* | | C^A | GUI X| GUI C| GUI_V| |Enter/| MWD | M_DL |MS Dwn|MS_DR | Up |Ms Slow | -* |------+------+------+------+------+------+ // +------+------+------+------+------+------| -* | | GuiZ | | | Low | |/ButnR|ButnL | Hi | | Left | Down | Right | -* `------------------------------------------------------------------------------------------' -*/ - -[_NAV] = KEYMAP( - TG(_NAV), KC_NO, KC_NO, KC_UP, KC_NO, RGUI(KC_RIGHT), KC_WH_U, M_MUL, KC_MS_U, M_MUR, KC_NO, KC_ACL2, - KC_TRNS, RGUI(KC_LEFT), KC_LEFT, KC_DOWN, KC_RIGHT, LCTL(KC_E), KC_BTN3, KC_MS_L, KC_MS_U, KC_MS_R, KC_NO, KC_ACL1, - KC_TRNS, LCTL(KC_A), LGUI(KC_X),RGUI(KC_C), RGUI(KC_V),KC_NO, KC_ENTER, KC_WH_D, M_MDL, KC_MS_D, M_MDR, KC_UP, KC_ACL0, - KC_TRNS, RGUI(KC_Z), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN2, KC_BTN1, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT -), - -/* FKEYS - Funtion keys & mac stuff - * ,-----------------------------------------. .-----------------------------------------. - * | FKEYS| F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | Ctrl | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | | | | | | | F11 | F12 | F13 | F14 | F15 | Alt | - * |------+------+------+------+------+------|------+------+------+------+------+------+------| - * |Qwerty| | | | | | /| | | | | | Del | - * |------+------+------+------+------+------+ // +------+------+------+------+------+------| - * | . |RGBTog| . | | LO | Bspc |/ | | HI | | | | | - * `------------------------------------------------------------------------------------------' - * - */ - -[_FKEYS] = KEYMAP( - TG(_FKEYS),KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_RCTL, - KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_LALT , - TO(_QW), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_DEL, - KC_TRNS, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS -), - - -/* TRNS - skeleton for laters - * ,-----------------------------------------. .-----------------------------------------. - * | . | . | . | . | . | . | | ^ | & | * | ( | ) | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | . | . | . | . | . | . | | 6 | 7 | 8 | 9 | 0 | | - * |------+------+------+------+------+------|------+------+------+------+------+------+------| - * | . | . | . | . | . | . | /| | | | . | ; | " | - * |------+------+------+------+------+------+ // +------+------+------+------+------+------| - * | . | . | . | GUI | LO | . |/ | Spc | HI | GUI | M0 | / |LSFT | - * `------------------------------------------------------------------------------------------' - * - */ - -[_TRNS] = { - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS} - } - - + /* Qwerty + * ,-----------------------------------------. .-----------------------------------------. + * | NAV | ` ~ | W | E | R | T | | Y | U | I | O | - | = | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Tab | Q | S | D | F | G | | H | J | K | L | P | \ | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * |ctrl/esc| A | X | C | V | B | | N | M | , | . | ; | ' | + * |------+------+------+------+------+------+-------------+------+------+------+------+------+------| + * | Shift| Z | Del | GUI | Low | Bspc | Ctrl | Enter| Spc | Hi | GUI | Alt | / |Shift | + * `-------------------------------------------------------------------------------------------------' + */ + [_QW] = LAYOUT( + TG(_NAV), KC_GRV, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_MINS, KC_EQL, + KC_TAB, KC_Q, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_P, KC_BSLS, + CTL_T(KC_ESC), KC_A, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_DEL, KC_LGUI, MO(_LW), KC_BSPC, KC_RCTL, KC_ENT, KC_SPC, MO(_HI), KC_RGUI, KC_RALT, KC_SLSH, KC_RSFT + ), + + /* LOW - numbers, missing or awkward programming keys + Doubled 1 key allows lazy reach with ring finger. + * ,-----------------------------------------. .-----------------------------------------. + * | FKeys| 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 |Ctrl-alt-del| + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Tab | 1 | ] | ( | ) | | | * | ( | ) | [ | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Caps | [ | | { | } | ` | | # | { | } | | ] | | + * |------+------+------+------+------+------+-------------+------+------+------+------+------+------| + * | Shift| | | | Low | | | | | Hi | | | |Shift | + * `-------------------------------------------------------------------------------------------------' + */ + [_LW] = LAYOUT( + TG(_FKEYS), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, LCTL(LALT(KC_DEL)), + _______, KC_1, KC_RBRC, KC_LPRN, KC_RPRN, XXXXXXX, KC_ASTR, KC_LPRN, KC_RPRN, KC_LBRC, XXXXXXX, XXXXXXX, + KC_CAPS, KC_LBRC, XXXXXXX, KC_LCBR, KC_RCBR, KC_TILD, KC_HASH, KC_LCBR, KC_RCBR, XXXXXXX, KC_RBRC, XXXXXXX, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + /* HI - Punctuation, shell and + * url ://@.com row on bottom, && is opposite || ^$ are in regex order: ^.*$ + * Right hand nav keys work pretty well chorded with the Right hand Hi Key + * ,-----------------------------------------. .-----------------------------------------. + * |FKEYS | ! | @ | # | $ | % | | ^ | & | * | ( | ) | + | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | ! | & | "|" | $ | % | | Vol+| Mute| | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | CAPS | ^ | : | . | * | - | | Vol-| Play | PgUp | Home | Up | End | + * |------+------+------+------+------+------+-------------+------+------+------+------+------+------| + * | | / | | | Low | | | | | Hi | PgDn | Left | Down |Right | + * `-------------------------------------------------------------------------------------------------' + */ + [_HI] = LAYOUT( + TG(_FKEYS), KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PLUS, + _______, KC_EXLM, KC_AMPR, KC_PIPE, KC_DLR, KC_PERC, KC_VOLU, KC_MUTE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + KC_CAPS, KC_CIRC, KC_COLN, KC_DOT, KC_ASTR, KC_MINS, KC_VOLD, KC_PPLS, KC_PGUP, KC_HOME, KC_UP, KC_END, + _______, KC_SLSH, _______, _______, TT(_LW), _______, _______, _______, _______, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* NAV - mouse & navigation + * gui left and right are line home/end, or fore & back in browser + * Mouse buttons are reversed for comfort - bigger stretch is to the right button. + * + * ,-----------------------------------------. .-----------------------------------------. + * | NAV | | | Up | |Gui-> | | MwU | MS_UL| MS_U |MS_UR | |MsNorm| + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | |Gui<- | Left | Down |Right | C^E | | BTN3 | MS_L |MS Up | MS_R | |MsFast| + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | C^A | GUI X| GUI C| GUI_V| | | MWD | M_DL |MS Dwn|MS_DR | Up |MsSlow| + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | | GuiZ | | | Low | |Enter | ButnR|ButnL | Hi | | Left | Down | Right| + * `-------------------------------------------------------------------------------------------------' + */ + [_NAV] = LAYOUT( + TG(_NAV), XXXXXXX, XXXXXXX, KC_UP, XXXXXXX, RGUI(KC_RGHT), KC_WH_U, M_MUL, KC_MS_U, M_MUR, XXXXXXX, KC_ACL2, + _______, RGUI(KC_LEFT), KC_LEFT, KC_DOWN, KC_RGHT, LCTL(KC_E), KC_BTN3, KC_MS_L, KC_MS_U, KC_MS_R, XXXXXXX, KC_ACL1, + _______, LCTL(KC_A), LGUI(KC_X), RGUI(KC_C), RGUI(KC_V), XXXXXXX, KC_WH_D, M_MDL, KC_MS_D, M_MDR, KC_UP, KC_ACL0, + _______, RGUI(KC_Z), _______, _______, _______, _______, KC_ENT, KC_BTN2, KC_BTN1, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* FKEYS - Funtion keys & mac stuff + * ,-----------------------------------------. .-----------------------------------------. + * | FKEYS| F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | Ctrl | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | | | F11 | F12 | F13 | F14 | F15 | Alt | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * |Qwerty| | | | | | | | | | | | Del | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | . |RGBTog| . | | LO | Bspc | | | | HI | | | | | + * `-------------------------------------------------------------------------------------------------' + */ + [_FKEYS] = LAYOUT( + TG(_FKEYS), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_RCTL, + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_LALT, + TO(_QW), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_DEL, + _______, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + /* TRNS - skeleton for laters + * ,-----------------------------------------. .-----------------------------------------. + * | . | . | . | . | . | . | | ^ | & | * | ( | ) | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | . | . | . | . | . | . | | 6 | 7 | 8 | 9 | 0 | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | . | . | . | . | . | . | | | | | . | ; | " | + * |------+------+------+------+------+------+-------------+------+------+------+------+------+------| + * | . | . | . | GUI | LO | . | | | Spc | HI | GUI | M0 | / | LSFT | + * `-------------------------------------------------------------------------------------------------' + */ + [_TRNS] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) }; bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - // from algernon's ErgoDox EZ layout, - case M_MUL: - if (record->event.pressed) { - mousekey_on(KC_MS_UP); - mousekey_on(KC_MS_LEFT); - } else { - mousekey_off(KC_MS_UP); - mousekey_off(KC_MS_LEFT); - } - mousekey_send(); - return false; - - case M_MUR: - if (record->event.pressed) { - mousekey_on(KC_MS_UP); - mousekey_on(KC_MS_RIGHT); - } else { - mousekey_off(KC_MS_UP); - mousekey_off(KC_MS_RIGHT); - } - mousekey_send(); - return false; - - case M_MDL: - if (record->event.pressed) { - mousekey_on(KC_MS_DOWN); - mousekey_on(KC_MS_LEFT); - } else { - mousekey_off(KC_MS_DOWN); - mousekey_off(KC_MS_LEFT); - } - mousekey_send(); - return false; + switch (keycode) { + // from algernon's ErgoDox EZ layout, + case M_MUL: + if (record->event.pressed) { + mousekey_on(KC_MS_UP); + mousekey_on(KC_MS_LEFT); + } else { + mousekey_off(KC_MS_UP); + mousekey_off(KC_MS_LEFT); + } + mousekey_send(); + return false; + case M_MUR: + if (record->event.pressed) { + mousekey_on(KC_MS_UP); + mousekey_on(KC_MS_RIGHT); + } else { + mousekey_off(KC_MS_UP); + mousekey_off(KC_MS_RIGHT); + } + mousekey_send(); + return false; + case M_MDL: + if (record->event.pressed) { + mousekey_on(KC_MS_DOWN); + mousekey_on(KC_MS_LEFT); + } else { + mousekey_off(KC_MS_DOWN); + mousekey_off(KC_MS_LEFT); + } + mousekey_send(); + return false; + case M_MDR: + if (record->event.pressed) { + mousekey_on(KC_MS_DOWN); + mousekey_on(KC_MS_RIGHT); + } else { + mousekey_off(KC_MS_DOWN); + mousekey_off(KC_MS_RIGHT); + } + mousekey_send(); + return false; + default: + return true; + } - case M_MDR: - if (record->event.pressed) { - mousekey_on(KC_MS_DOWN); - mousekey_on(KC_MS_RIGHT); - } else { - mousekey_off(KC_MS_DOWN); - mousekey_off(KC_MS_RIGHT); - } - mousekey_send(); - return false; - default: - return true; - } return true; }; void LayerLEDSet(uint8_t layr) { - switch (layr) { case _QW: - rgblight_setrgb(0,20, 0); // dim green - break; + // dim green + rgblight_setrgb(0, 20, 0); + break; case _LW: // deep purple - rgblight_setrgb(20,0,35); + rgblight_setrgb(20, 0, 35); break; case _HI: // light blue - rgblight_setrgb(0,20,20); + rgblight_setrgb(0, 20, 20); break; case _NAV: - // Yellowy orange - rgblight_setrgb(25,20,0); // brighter + // yellowy orange + rgblight_setrgb(25, 20, 0); break; case _FKEYS: - // RED - rgblight_setrgb(20,0,0); // brighter + // red + rgblight_setrgb(20, 0, 0); break; default: - rgblight_setrgb(20,2,20);//error + // error + rgblight_setrgb(20,2,20); break; } - return; - -} - -void matrix_init_user(void) { + return; } // Bleah globals need to be initialized. -uint8_t old_layer=_QW; +uint8_t old_layer = _QW; void matrix_scan_user(void) { - uint8_t layer = biton32(layer_state); - if (old_layer != layer) { - LayerLEDSet(layer); - old_layer=layer; - } -} - -void led_set_user(uint8_t usb_led) { + uint8_t layer = biton32(layer_state); + if (old_layer != layer) { + LayerLEDSet(layer); + old_layer = layer; + } } diff --git a/keyboards/handwired/traveller/keymaps/default/readme.md b/keyboards/handwired/traveller/keymaps/default/readme.md deleted file mode 100644 index 7ddc40b3c320..000000000000 --- a/keyboards/handwired/traveller/keymaps/default/readme.md +++ /dev/null @@ -1,2 +0,0 @@ -# The default keymap for handwired/traveller -this is a kitchen sink build diff --git a/keyboards/handwired/traveller/readme.md b/keyboards/handwired/traveller/readme.md index 0be53a9628c5..135a0d2cadf3 100644 --- a/keyboards/handwired/traveller/readme.md +++ b/keyboards/handwired/traveller/readme.md @@ -1,35 +1,21 @@ -traveler keyboard firmware -====================== +# Traveller -## Traveller Specific Info ## -The traveller is a varient on the atreus keyboard. -Like the Atreus, it is designed to be a good compromise between size and ergonomics. +The Traveller is a variant on the atreus keyboard. +Like the Atreus, it is designed to be a good compromise between size and ergonomics. -key differences are -- an additional column for each pinky -- an RGB LED in the center to show the current layer -- more finger stagger, splay angle and contoured keycaps (F2 profile for space key). +Key differences are: +- An additional column for each pinky +- An RGB LED in the center to show the current layer +- More finger stagger, splay angle and contoured keycaps (F2 profile for space key). -You can make your own traveller keyboard by using the openscad tools from the atreus repository, and adding a hole for the LED to shine through. +You can make your own Traveller keyboard by using the openscad tools from the atreus repository, and adding a hole for the LED to shine through. -## Quantum MK Firmware +Make example for this keyboard (after setting up your build environment): -For the full Quantum feature list, see [the parent README.md](/readme.md). + make handwired/traveller:default -## Building +Flashing example for this keyboard: -Download or clone the whole firmware and navigate to the keyboard/traveler folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file. + make handwired/traveller:default:flash -Depending on which keymap you would like to use, you will have to compile slightly differently. - -### Default -To build with the default keymap, simply run `make`. - -### Other Keymaps -Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `.c` and see keymap document (you can find in top README.md) and existent keymap files. - -To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like: -``` -$ make KEYMAP=[default|jack|] -``` -Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/handwired/traveller/rules.mk b/keyboards/handwired/traveller/rules.mk index 0758e5934096..4d5f68b1d3fe 100644 --- a/keyboards/handwired/traveller/rules.mk +++ b/keyboards/handwired/traveller/rules.mk @@ -2,42 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -ifdef TEENSY2 - BOOTLOADER = halfkay - OPT_DEFS += -DATREUS_TEENSY2 - ATREUS_UPLOAD_COMMAND = teensy_loader_cli -w -mmcu=$(MCU) $(TARGET).hex -else - BOOTLOADER = caterina - OPT_DEFS += -DATREUS_ASTAR - ATREUS_UPLOAD_COMMAND = while [ ! -r $(USB) ]; do sleep 1; done; \ - avrdude -p $(MCU) -c avr109 -U flash:w:$(TARGET).hex -P $(USB) -endif +BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) -COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +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 # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 -RGBLIGHT_ENABLE = yes - -# for avr upload -USB = /dev/cu.usbmodem1421 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/traveller/traveller.c b/keyboards/handwired/traveller/traveller.c index 9d25341300d0..409abe7d14cf 100644 --- a/keyboards/handwired/traveller/traveller.c +++ b/keyboards/handwired/traveller/traveller.c @@ -1,61 +1,18 @@ #include "traveller.h" -__attribute__ ((weak)) -void matrix_init_user(void) { - // leave this function blank - it can be defined in a keymap file -}; - -__attribute__ ((weak)) -void matrix_scan_user(void) { - // leave this function blank - it can be defined in a keymap file -} - -__attribute__ ((weak)) -void process_action_user(keyrecord_t *record) { - // leave this function blank - it can be defined in a keymap file -} - -__attribute__ ((weak)) -void led_set_user(uint8_t usb_led) { - // leave this function blank - it can be defined in a keymap file -} - void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up + // put your keyboard start-up code here + // runs once when the firmware starts up #ifdef RGBLIGHT_ENABLE - rgblight_init(); - rgblight_mode(1); // solid, no timer - rgblight_setrgb(0,20,0);// dim green, happens to be same as _QW + rgblight_init(); + rgblight_mode(1); // solid, no timer + rgblight_setrgb(0,20,0);// dim green, happens to be same as _QW #endif -// Turn status LED on - DDRC |= (1<<7); - PORTC |= (1<<7); + // Turn status LED on + setPinOutput(C7); + writePinHigh(C7); - matrix_init_user(); + matrix_init_user(); } - - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - - diff --git a/keyboards/handwired/traveller/traveller.h b/keyboards/handwired/traveller/traveller.h index acf2ee702874..f78abe46aad2 100644 --- a/keyboards/handwired/traveller/traveller.h +++ b/keyboards/handwired/traveller/traveller.h @@ -1,32 +1,17 @@ -#ifndef TRAVELLER_H -#define TRAVELLER_H +#pragma once #include "quantum.h" -#include "led.h" -#ifdef RGBLIGHT_ENABLE - #include "rgblight.h" -#endif -#ifdef BACKLIGHT_ENABLE - #include "backlight.h" -#endif +#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, k07, k08, k09, k0a, k0b, k0c, \ - k10, k11, k12, k13, k14, k15, 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 \ -) \ -{ \ - { k00, k01, k02, k03, k04, k05, KC_NO, k07, k08, k09, k0a, k0b, k0c }, \ - { k10, k11, k12, k13, k14, k15, KC_NO, 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 } \ + k00, k01, k02, k03, k04, k05, k07, k08, k09, k0A, k0B, k0C, \ + k10, k11, k12, k13, k14, k15, k17, k18, k19, k1A, k1B, k1C, \ + k20, k21, k22, k23, k24, k25, k27, k28, k29, k2A, k2B, k2C, \ + k30, k31, k32, k33, k34, k35, k26, k36, k37, k38, k39, k3A, k3B, k3C \ +) { \ + { k00, k01, k02, k03, k04, k05, XXX, k07, k08, k09, k0A, k0B, k0C }, \ + { k10, k11, k12, k13, k14, k15, XXX, 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 } \ } - -#endif diff --git a/keyboards/handwired/tritium_numpad/info.json b/keyboards/handwired/tritium_numpad/info.json index bc10efc82159..d7190c197e33 100644 --- a/keyboards/handwired/tritium_numpad/info.json +++ b/keyboards/handwired/tritium_numpad/info.json @@ -2,19 +2,14 @@ "keyboard_name": "Tritium_numpad", "url": "https://www.thingiverse.com/thing:2855938", "maintainer": "qmk", - "width": 4, - "height": 6, "layouts": { "LAYOUT_numpad_6x4": { - "key_count": 21, "layout": [{"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, {"label":"k02", "x":2, "y":0}, {"label":"k03", "x":3, "y":0}, {"label":"k10", "x":0, "y":1}, {"label":"k11", "x":1, "y":1}, {"label":"k12", "x":2, "y":1}, {"label":"k13", "x":3, "y":1}, {"label":"k20", "x":0, "y":2}, {"label":"k21", "x":1, "y":2}, {"label":"k22", "x":2, "y":2}, {"label":"k30", "x":0, "y":3}, {"label":"k31", "x":1, "y":3}, {"label":"k32", "x":2, "y":3}, {"label":"k23", "x":3, "y":2, "h":2}, {"label":"k40", "x":0, "y":4}, {"label":"k41", "x":1, "y":4}, {"label":"k42", "x":2, "y":4}, {"label":"k50", "x":0, "y":5, "w":2}, {"label":"k52", "x":2, "y":5}, {"label":"k43", "x":3, "y":4, "h":2}] }, "LAYOUT_nontra_6x4": { - "key_count": 22, "layout": [{"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, {"label":"k02", "x":2, "y":0}, {"label":"k03", "x":3, "y":0}, {"label":"k10", "x":0, "y":1}, {"label":"k11", "x":1, "y":1}, {"label":"k12", "x":2, "y":1}, {"label":"k13", "x":3, "y":1}, {"label":"k20", "x":0, "y":2}, {"label":"k21", "x":1, "y":2}, {"label":"k22", "x":2, "y":2}, {"label":"k23", "x":3, "y":2, "h":2}, {"label":"k30", "x":0, "y":3}, {"label":"k31", "x":1, "y":3}, {"label":"k32", "x":2, "y":3}, {"label":"k40", "x":0, "y":4}, {"label":"k41", "x":1, "y":4}, {"label":"k42", "x":2, "y":4}, {"label":"k43", "x":3, "y":4, "h":2}, {"label":"k50", "x":0, "y":5}, {"label":"k51", "x":1, "y":5}, {"label":"k52", "x":2, "y":5}] }, "LAYOUT_ortho_6x4": { - "key_count": 24, "layout": [{"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, {"label":"k02", "x":2, "y":0}, {"label":"k03", "x":3, "y":0}, {"label":"k10", "x":0, "y":1}, {"label":"k11", "x":1, "y":1}, {"label":"k12", "x":2, "y":1}, {"label":"k13", "x":3, "y":1}, {"label":"k20", "x":0, "y":2}, {"label":"k21", "x":1, "y":2}, {"label":"k22", "x":2, "y":2}, {"label":"k23", "x":3, "y":2}, {"label":"k30", "x":0, "y":3}, {"label":"k31", "x":1, "y":3}, {"label":"k32", "x":2, "y":3}, {"label":"k33", "x":3, "y":3}, {"label":"k40", "x":0, "y":4}, {"label":"k41", "x":1, "y":4}, {"label":"k42", "x":2, "y":4}, {"label":"k43", "x":3, "y":4}, {"label":"k50", "x":0, "y":5}, {"label":"k51", "x":1, "y":5}, {"label":"k52", "x":2, "y":5}, {"label":"k53", "x":3, "y":5}] } } diff --git a/keyboards/handwired/tritium_numpad/keymaps/blu/keymap.c b/keyboards/handwired/tritium_numpad/keymaps/blu/keymap.c index 958c17e4283c..b618675295bc 100644 --- a/keyboards/handwired/tritium_numpad/keymaps/blu/keymap.c +++ b/keyboards/handwired/tritium_numpad/keymaps/blu/keymap.c @@ -6,7 +6,7 @@ void keyboard_pre_init_user(void) setPinOutput(B0); } -uint32_t layer_state_set_user(uint32_t state) +layer_state_t layer_state_set_user(layer_state_t state) { // Switch layer LED accordingly switch (biton32(state)) { @@ -22,19 +22,19 @@ uint32_t layer_state_set_user(uint32_t state) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_ortho_6x4( - KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, - KC_P7, KC_P8, KC_P9, KC_PPLS, - KC_P4, KC_P5, KC_P6, KC_BSPC, - KC_P1, KC_P2, KC_P3, KC_PENT, - KC_P0, KC_UP, KC_PDOT, TT(1), + KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_P4, KC_P5, KC_P6, KC_BSPC, + KC_P1, KC_P2, KC_P3, KC_PENT, + KC_P0, KC_UP, KC_PDOT, TT(1), KC_LEFT, KC_DOWN, KC_RGHT, BL_STEP ), [1] = LAYOUT_ortho_6x4( - KC_NO, KC_NO, KC_NO, KC_NO, - KC_NO, KC_K, KC_NO, KC_NO, - KC_H, KC_NO, KC_L, KC_NO, - KC_NO, KC_J, KC_NO, KC_NO, - KC_LSFT, KC_Z, KC_X, KC_TRNS, + KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_K, KC_NO, KC_NO, + KC_H, KC_NO, KC_L, KC_NO, + KC_NO, KC_J, KC_NO, KC_NO, + KC_LSFT, KC_Z, KC_X, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO ) }; diff --git a/keyboards/handwired/tritium_numpad/rules.mk b/keyboards/handwired/tritium_numpad/rules.mk index 42dfc5cbece4..51d9e849de06 100644 --- a/keyboards/handwired/tritium_numpad/rules.mk +++ b/keyboards/handwired/tritium_numpad/rules.mk @@ -2,29 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = lite # Key at 0,0 makes the keyboard go into bootloader(+1000) -MOUSEKEY_ENABLE = no # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -RGBLIGHT_ENABLE = no # Enable keyboard underlight functionality (+4870) -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality (+1150) -MIDI_ENABLE = no # MIDI controls +RGBLIGHT_ENABLE = no # Enable keyboard underlight functionality +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality AUDIO_ENABLE = no -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -LAYOUTS = numpad_6x4 ortho_6x4 nontra_6x4 +LAYOUTS = numpad_6x4 ortho_6x4 diff --git a/keyboards/handwired/twadlee/tp69/config.h b/keyboards/handwired/twadlee/tp69/config.h index 0387c7d7e8c0..aac4c874b2a3 100644 --- a/keyboards/handwired/twadlee/tp69/config.h +++ b/keyboards/handwired/twadlee/tp69/config.h @@ -124,59 +124,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -196,25 +143,6 @@ along with this program. If not, see . /* disable these deprecated features by default */ #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 diff --git a/keyboards/handwired/twadlee/tp69/info.json b/keyboards/handwired/twadlee/tp69/info.json index 89eecb7d1644..f51059014a47 100644 --- a/keyboards/handwired/twadlee/tp69/info.json +++ b/keyboards/handwired/twadlee/tp69/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Twadlee TP69", "url": "https://github.com/twadleigh/qmk_firmware", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1}, {"x":14.5, "y":1, "w":1.5}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2}, {"x":13.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3}, {"x":13.25, "y":3, "w":2.75}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":2}, {"x":5.75, "y":4}, {"x":6.75, "y":4}, {"x":7.75, "y":4}, {"x":8.75, "y":4, "w":2.25}, {"x":11, "y":4, "w":1.25}, {"x":12.25, "y":4, "w":1.25}, {"x":13.5, "y":4, "w":1.25}, {"x":14.75, "y":4, "w":1.25}] diff --git a/keyboards/handwired/twadlee/tp69/rules.mk b/keyboards/handwired/twadlee/tp69/rules.mk index b6d70c1964f6..f07cb2fc2994 100644 --- a/keyboards/handwired/twadlee/tp69/rules.mk +++ b/keyboards/handwired/twadlee/tp69/rules.mk @@ -4,20 +4,16 @@ MCU = MKL26Z64 # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output PS2_MOUSE_ENABLE = no USE_CHIBIOS_CONTRIB = yes diff --git a/keyboards/handwired/unicomp_mini_m/info.json b/keyboards/handwired/unicomp_mini_m/info.json index 4b5390779ac8..d1a0558aa2fd 100644 --- a/keyboards/handwired/unicomp_mini_m/info.json +++ b/keyboards/handwired/unicomp_mini_m/info.json @@ -1,461 +1,106 @@ { "keyboard_name": "Unicomp Mini M", - "url": "", "maintainer": "stevendlander", - "width": 15.5, - "height": 7.5, + "url": "", "layouts": { "LAYOUT": { "layout": [ - { "label": "Esc", - "x": 0, - "y": 0 - }, - { - "label": "F1", - "x": 2, - "y": 0 - }, - { - "label": "F2", - "x": 3, - "y": 0 - }, - { - "label": "F3", - "x": 4, - "y": 0 - }, - { - "label": "F4", - "x": 5, - "y": 0 - }, - { - "label": "F5", - "x": 6.5, - "y": 0 - }, - { - "label": "F6", - "x": 7.5, - "y": 0 - }, - { - "label": "F7", - "x": 8.5, - "y": 0 - }, - { - "label": "F8", - "x": 9.5, - "y": 0 - }, - { - "label": "F9", - "x": 11, - "y": 0 - }, - { - "label": "F10", - "x": 12, - "y": 0 - }, - { - "label": "F11", - "x": 13, - "y": 0 - }, - { - "label": "F12", - "x": 14, - "y": 0 - }, - { - "label": "PrtSc", - "x": 15.25, - "y": 0 - }, - { - "label": "Scroll Lock", - "x": 16.25, - "y": 0 - }, - { - "label": "Pause", - "x": 17.25, - "y": 0 - }, - { - "label": "~", - "x": 0, - "y": 1.5 - }, - { - "label": "!", - "x": 1, - "y": 1.5 - }, - { - "label": "@", - "x": 2, - "y": 1.5 - }, - { - "label": "#", - "x": 3, - "y": 1.5 - }, - { - "label": "$", - "x": 4, - "y": 1.5 - }, - { - "label": "%", - "x": 5, - "y": 1.5 - }, - { - "label": "^", - "x": 6, - "y": 1.5 - }, - { - "label": "&", - "x": 7, - "y": 1.5 - }, - { - "label": "*", - "x": 8, - "y": 1.5 - }, - { - "label": "(", - "x": 9, - "y": 1.5 - }, - { - "label": ")", - "x": 10, - "y": 1.5 - }, - { - "label": "_", - "x": 11, - "y": 1.5 - }, - { - "label": "+", - "x": 12, - "y": 1.5 - }, - { - "label": "Backspace", - "x": 13, - "y": 1.5, - "w": 2 - }, - { - "label": "Insert", - "x": 15.25, - "y": 1.5 - }, - { - "label": "Home", - "x": 16.25, - "y": 1.5 - }, - { - "label": "PgUp", - "x": 17.25, - "y": 1.5 - }, - { - "label": "Tab", - "x": 0, - "y": 2.5, - "w": 1.5 - }, - { - "label": "Q", - "x": 1.5, - "y": 2.5 - }, - { - "label": "W", - "x": 2.5, - "y": 2.5 - }, - { - "label": "E", - "x": 3.5, - "y": 2.5 - }, - { - "label": "R", - "x": 4.5, - "y": 2.5 - }, - { - "label": "T", - "x": 5.5, - "y": 2.5 - }, - { - "label": "Y", - "x": 6.5, - "y": 2.5 - }, - { - "label": "U", - "x": 7.5, - "y": 2.5 - }, - { - "label": "I", - "x": 8.5, - "y": 2.5 - }, - { - "label": "O", - "x": 9.5, - "y": 2.5 - }, - { - "label": "P", - "x": 10.5, - "y": 2.5 - }, - { - "label": "{", - "x": 11.5, - "y": 2.5 - }, - { - "label": "}", - "x": 12.5, - "y": 2.5 - }, - { - "label": "|", - "x": 13.5, - "y": 2.5, - "w": 1.5 - }, - { - "label": "Delete", - "x": 15.25, - "y": 2.5 - }, - { - "label": "End", - "x": 16.25, - "y": 2.5 - }, - { - "label": "PgDn", - "x": 17.25, - "y": 2.5 - }, - { - "label": "Caps Lock", - "x": 0, - "y": 3.5, - "w": 1.75 - }, - { - "label": "A", - "x": 1.75, - "y": 3.5 - }, - { - "label": "S", - "x": 2.75, - "y": 3.5 - }, - { - "label": "D", - "x": 3.75, - "y": 3.5 - }, - { - "label": "F", - "x": 4.75, - "y": 3.5 - }, - { - "label": "G", - "x": 5.75, - "y": 3.5 - }, - { - "label": "H", - "x": 6.75, - "y": 3.5 - }, - { - "label": "J", - "x": 7.75, - "y": 3.5 - }, - { - "label": "K", - "x": 8.75, - "y": 3.5 - }, - { - "label": "L", - "x": 9.75, - "y": 3.5 - }, - { - "label": ":", - "x": 10.75, - "y": 3.5 - }, - { - "label": "\"", - "x": 11.75, - "y": 3.5 - }, - { - "label": "Enter", - "x": 12.75, - "y": 3.5, - "w": 2.25 - }, - { - "label": "Shift", - "x": 0, - "y": 4.5, - "w": 2.25 - }, - { - "label": "Z", - "x": 2.25, - "y": 4.5 - }, - { - "label": "X", - "x": 3.25, - "y": 4.5 - }, - { - "label": "C", - "x": 4.25, - "y": 4.5 - }, - { - "label": "V", - "x": 5.25, - "y": 4.5 - }, - { - "label": "B", - "x": 6.25, - "y": 4.5 - }, - { - "label": "N", - "x": 7.25, - "y": 4.5 - }, - { - "label": "M", - "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": "Shift", - "x": 12.25, - "y": 4.5, - "w": 2.75 - }, - { - "label": "\u2191", - "x": 16.25, - "y": 4.5 - }, - { - "label": "Ctrl", - "x": 0, - "y": 5.5, - "w": 1.5 - }, - { - "label": "Meta", - "x": 1.5, - "y": 5.5, - "w": 1 - }, - { - "label": "Alt", - "x": 2.5, - "y": 5.5, - "w": 1.5 - }, - { - "label": "Space", - "x": 4, - "y": 5.5, - "w": 5.75 - }, - { - "label": "Alt", - "x": 9.75, - "y": 5.5, - "w": 1.25 - }, - { - "label": "Meta", - "x": 11, - "y": 5.5, - "w": 1.5 - }, - { - "label": "Menu", - "x": 12.5, - "y": 5.5, - "w": 1 - }, - { - "label": "Ctrl", - "x": 13.5, - "y": 5.5, - "w": 1.5 - }, - { - "label": "\u2190", - "x": 15.25, - "y": 5.5 - }, - { - "label": "\u2193", - "x": 16.25, - "y": 5.5 - }, - { - "label": "\u2192", - "x": 17.25, - "y": 5.5 - } + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":2, "y":0}, + {"label":"F2", "x":3, "y":0}, + {"label":"F3", "x":4, "y":0}, + {"label":"F4", "x":5, "y":0}, + {"label":"F5", "x":6.5, "y":0}, + {"label":"F6", "x":7.5, "y":0}, + {"label":"F7", "x":8.5, "y":0}, + {"label":"F8", "x":9.5, "y":0}, + {"label":"F9", "x":11, "y":0}, + {"label":"F10", "x":12, "y":0}, + {"label":"F11", "x":13, "y":0}, + {"label":"F12", "x":14, "y":0}, + {"label":"Pause / SysReq", "x":15.5, "y":0}, + {"label":"Scroll Lock / Num Lock", "x":16.5, "y":0}, + {"label":"Pause / Reset", "x":17.5, "y":0}, + + {"label":"`", "x":0, "y":2}, + {"label":"1", "x":1, "y":2}, + {"label":"2", "x":2, "y":2}, + {"label":"3", "x":3, "y":2}, + {"label":"4", "x":4, "y":2}, + {"label":"5", "x":5, "y":2}, + {"label":"6", "x":6, "y":2}, + {"label":"7", "x":7, "y":2}, + {"label":"8", "x":8, "y":2}, + {"label":"9", "x":9, "y":2}, + {"label":"0", "x":10, "y":2}, + {"label":"-", "x":11, "y":2}, + {"label":"=", "x":12, "y":2}, + {"label":"No", "x":13, "y":2}, + {"label":"Backspace", "x":14, "y":2}, + {"label":"Insert", "x":15.5, "y":2}, + {"label":"Home", "x":16.5, "y":2}, + {"label":"Page Up", "x":17.5, "y":2}, + + {"label":"Tab", "x":0, "y":3, "w":1.5}, + {"label":"Q", "x":1.5, "y":3}, + {"label":"W", "x":2.5, "y":3}, + {"label":"E", "x":3.5, "y":3}, + {"label":"R", "x":4.5, "y":3}, + {"label":"T", "x":5.5, "y":3}, + {"label":"Y", "x":6.5, "y":3}, + {"label":"U", "x":7.5, "y":3}, + {"label":"I", "x":8.5, "y":3}, + {"label":"O", "x":9.5, "y":3}, + {"label":"P", "x":10.5, "y":3}, + {"label":"[", "x":11.5, "y":3}, + {"label":"]", "x":12.5, "y":3}, + {"label":"\\", "x":13.5, "y":3, "w":1.5}, + {"label":"Delete", "x":15.5, "y":3}, + {"label":"End", "x":16.5, "y":3}, + {"label":"Page Down", "x":17.5, "y":3}, + + {"label":"Caps Lock", "x":0, "y":4, "w":1.75}, + {"label":"A", "x":1.75, "y":4}, + {"label":"S", "x":2.75, "y":4}, + {"label":"D", "x":3.75, "y":4}, + {"label":"F", "x":4.75, "y":4}, + {"label":"G", "x":5.75, "y":4}, + {"label":"H", "x":6.75, "y":4}, + {"label":"J", "x":7.75, "y":4}, + {"label":"K", "x":8.75, "y":4}, + {"label":"L", "x":9.75, "y":4}, + {"label":";", "x":10.75, "y":4}, + {"label":"'", "x":11.75, "y":4}, + {"label":"No", "x":12.75, "y":4}, + {"label":"Enter", "x":13.75, "y":4, "w":1.25}, + + {"label":"Shift", "x":0, "y":5, "w":1.25}, + {"label":"No", "x":1.25, "y":5}, + {"label":"Z", "x":2.25, "y":5}, + {"label":"X", "x":3.25, "y":5}, + {"label":"C", "x":4.25, "y":5}, + {"label":"V", "x":5.25, "y":5}, + {"label":"B", "x":6.25, "y":5}, + {"label":"N", "x":7.25, "y":5}, + {"label":"M", "x":8.25, "y":5}, + {"label":",", "x":9.25, "y":5}, + {"label":".", "x":10.25, "y":5}, + {"label":"/", "x":11.25, "y":5}, + {"label":"No", "x":12.25, "y":5}, + {"label":"Shift", "x":13.25, "y":5, "w":1.75}, + {"label":"Up", "x":16.5, "y":5}, + + {"label":"Ctrl", "x":0, "y":6, "w":1.5}, + {"label":"GUI", "x":1.5, "y":6}, + {"label":"Alt", "x":2.5, "y":6, "w":1.5}, + {"label":"Space", "x":4, "y":6, "w":6}, + {"label":"Alt", "x":10, "y":6}, + {"label":"GUI", "x":11, "y":6, "w":1.5}, + {"label":"App", "x":12.5, "y":6}, + {"label":"Ctrl", "x":13.5, "y":6, "w":1.5}, + {"label":"Left", "x":15.5, "y":6}, + {"label":"Down", "x":16.5, "y":6}, + {"label":"Right", "x":17.5, "y":6} ] } } diff --git a/keyboards/handwired/unicomp_mini_m/rules.mk b/keyboards/handwired/unicomp_mini_m/rules.mk index 92cbe9b134cd..512f218ec4cf 100644 --- a/keyboards/handwired/unicomp_mini_m/rules.mk +++ b/keyboards/handwired/unicomp_mini_m/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = halfkay # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 = 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 diff --git a/keyboards/handwired/unk/info.json b/keyboards/handwired/unk/info.json index 4e2f7e13ff63..f3445a3859f0 100644 --- a/keyboards/handwired/unk/info.json +++ b/keyboards/handwired/unk/info.json @@ -2,8 +2,6 @@ "keyboard_name": "UNK", "url": "https://github.com/herpiko/unk", "maintainer": "herpiko", - "width": 17, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/unk/rules.mk b/keyboards/handwired/unk/rules.mk index e4972eb1d1f1..563b5d763c69 100644 --- a/keyboards/handwired/unk/rules.mk +++ b/keyboards/handwired/unk/rules.mk @@ -2,31 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = yes diff --git a/keyboards/handwired/videowriter/info.json b/keyboards/handwired/videowriter/info.json index 194b558bef55..bf7603e3dba3 100644 --- a/keyboards/handwired/videowriter/info.json +++ b/keyboards/handwired/videowriter/info.json @@ -2,8 +2,6 @@ "keyboard_name": "videowriter", "url": "https://deskthority.net/viewtopic.php?f=7&t=20210", "maintainer": "DmNosachev", - "width": 16, - "height": 7.5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/videowriter/rules.mk b/keyboards/handwired/videowriter/rules.mk index 38356d996cb5..167135d2d6b7 100644 --- a/keyboards/handwired/videowriter/rules.mk +++ b/keyboards/handwired/videowriter/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/wabi/info.json b/keyboards/handwired/wabi/info.json index d339f9dbc999..7d58bd3634c5 100644 --- a/keyboards/handwired/wabi/info.json +++ b/keyboards/handwired/wabi/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Wabi", "url": "www.montsinger.net", "maintainer": "Montsinger", - "width": 18.5, - "height": 5, "layouts": { "LAYOUT": { "layout": [{"label":"Esc", "x":1.25, "y":0}, {"label":"1", "x":2.25, "y":0}, {"label":"2", "x":3.25, "y":0}, {"label":"3", "x":4.25, "y":0}, {"label":"4", "x":5.25, "y":0}, {"label":"5", "x":6.25, "y":0}, {"label":"6", "x":8.75, "y":0}, {"label":"7", "x":9.75, "y":0}, {"label":"8", "x":10.75, "y":0}, {"label":"9", "x":11.75, "y":0}, {"label":"0", "x":12.75, "y":0}, {"label":"-", "x":13.75, "y":0}, {"label":"=", "x":14.75, "y":0}, {"label":"Backspace", "x":15.75, "y":0, "w":2}, {"label":"Tab", "x":0.75, "y":1, "w":1.5}, {"label":"Q", "x":2.25, "y":1}, {"label":"W", "x":3.25, "y":1}, {"label":"E", "x":4.25, "y":1}, {"label":"R", "x":5.25, "y":1}, {"label":"T", "x":6.25, "y":1}, {"label":"Y", "x":8.75, "y":1}, {"label":"U", "x":9.75, "y":1}, {"label":"I", "x":10.75, "y":1}, {"label":"O", "x":11.75, "y":1}, {"label":"P", "x":12.75, "y":1}, {"label":"[", "x":13.75, "y":1}, {"label":"]", "x":14.75, "y":1}, {"label":"\\", "x":15.75, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0.5, "y":2, "w":1.75}, {"label":"A", "x":2.25, "y":2}, {"label":"S", "x":3.25, "y":2}, {"label":"D", "x":4.25, "y":2}, {"label":"F", "x":5.25, "y":2}, {"label":"G", "x":6.25, "y":2}, {"label":"H", "x":8.75, "y":2}, {"label":"J", "x":9.75, "y":2}, {"label":"K", "x":10.75, "y":2}, {"label":"L", "x":11.75, "y":2}, {"label":";", "x":12.75, "y":2}, {"label":"'", "x":13.75, "y":2}, {"label":"Enter", "x":14.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":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":2.75}, {"label":"Up", "x":16.5, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":4, "y":4, "w":1.25}, {"label":"Space", "x":5.25, "y":4}, {"label":"Page Down", "x":6.25, "y":4, "w":1.25}, {"label":"Enter", "x":8.5, "y":4, "w":1.25}, {"label":"Space", "x":9.75, "y":4}, {"label":"Backspace", "x":10.75, "y":4, "w":1.25}, {"label":"Left", "x":15.5, "y":4}, {"label":"Down", "x":16.5, "y":4}, {"label":"Right", "x":17.5, "y":4}] } } } - diff --git a/keyboards/handwired/wabi/rules.mk b/keyboards/handwired/wabi/rules.mk index f0423ca898fb..3aae868c14d4 100644 --- a/keyboards/handwired/wabi/rules.mk +++ b/keyboards/handwired/wabi/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here:https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/handwired/woodpad/info.json b/keyboards/handwired/woodpad/info.json index 96c28fa5edf2..fe5e5a943a73 100644 --- a/keyboards/handwired/woodpad/info.json +++ b/keyboards/handwired/woodpad/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Woodpad", "url": "", "maintainer": "qmk", - "width": 4, - "height": 5, "layouts": { "LAYOUT_ortho_5x4": { "layout": [ diff --git a/keyboards/handwired/woodpad/rules.mk b/keyboards/handwired/woodpad/rules.mk index 8c2c2fbdc442..f44f30ff1979 100644 --- a/keyboards/handwired/woodpad/rules.mk +++ b/keyboards/handwired/woodpad/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LAYOUTS = ortho_5x4 diff --git a/keyboards/handwired/wulkan/info.json b/keyboards/handwired/wulkan/info.json index db292af3d1e7..afb9611e2bdd 100644 --- a/keyboards/handwired/wulkan/info.json +++ b/keyboards/handwired/wulkan/info.json @@ -2,11 +2,8 @@ "keyboard_name": "wulkan", "url": "", "maintainer": "Napoleon Wulkan", - "width": 12, - "height": 4, "layouts": { "LAYOUT_ortho_4x12": { - "key_count": 48, "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}] } } diff --git a/keyboards/handwired/wulkan/keymaps/default/keymap.c b/keyboards/handwired/wulkan/keymaps/default/keymap.c index fec8442ee3c2..ad503114fc8d 100644 --- a/keyboards/handwired/wulkan/keymaps/default/keymap.c +++ b/keyboards/handwired/wulkan/keymaps/default/keymap.c @@ -8,21 +8,21 @@ enum layers { }; enum unicode_names { - SE_AA_HIGH, - SE_AE_HIGH, - SE_OE_HIGH, - SE_AA_LOW, - SE_AE_LOW, - SE_OE_LOW, + SE_ARNG_HIGH, + SE_ADIA_HIGH, + SE_ODIA_HIGH, + SE_ARNG_LOW, + SE_ADIA_LOW, + SE_ODIA_LOW, }; const uint32_t PROGMEM unicode_map[] = { - [SE_AA_HIGH] = 0x00C5, - [SE_AE_HIGH] = 0x00C4, - [SE_OE_HIGH] = 0x00D6, - [SE_AA_LOW] = 0x00E5, - [SE_AE_LOW] = 0x00E4, - [SE_OE_LOW] = 0x00F6, + [SE_ARNG_HIGH] = 0x00C5, + [SE_ADIA_HIGH] = 0x00C4, + [SE_ODIA_HIGH] = 0x00D6, + [SE_ARNG_LOW] = 0x00E5, + [SE_ADIA_LOW] = 0x00E4, + [SE_ODIA_LOW] = 0x00F6, }; #define LOWER MO(_LOWER) @@ -95,8 +95,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_ADJUST] = LAYOUT_ortho_4x12( - _______, RESET, _______, _______, KC_WH_U, _______, _______, KC_MS_U, _______, _______, XP(SE_AA_LOW, SE_AA_HIGH), KC_DEL, - _______, _______, _______, _______, KC_WH_D, _______, KC_MS_L, KC_MS_D, KC_MS_R, XP(SE_OE_LOW, SE_OE_HIGH), XP(SE_AE_LOW, SE_AE_HIGH), _______, + _______, RESET, _______, _______, KC_WH_U, _______, _______, KC_MS_U, _______, _______, XP(SE_ARNG_LOW, SE_ARNG_HIGH), KC_DEL, + _______, _______, _______, _______, KC_WH_D, _______, KC_MS_L, KC_MS_D, KC_MS_R, XP(SE_ODIA_LOW, SE_ODIA_HIGH), XP(SE_ADIA_LOW, SE_ADIA_HIGH), _______, _______, KC_ACL0, KC_ACL1, KC_ACL2, _______, _______, KC_BTN1, _______, KC_BTN2, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) diff --git a/keyboards/handwired/wulkan/rules.mk b/keyboards/handwired/wulkan/rules.mk index 83f0d7f48f2f..8aa1554fd4cb 100644 --- a/keyboards/handwired/wulkan/rules.mk +++ b/keyboards/handwired/wulkan/rules.mk @@ -9,7 +9,7 @@ BOOTLOADER = stm32-dfu # comment out to disable the options. # BACKLIGHT_ENABLE = no -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 @@ -18,8 +18,4 @@ NKRO_ENABLE = yes # USB Nkey Rollover AUDIO_ENABLE = no RGBLIGHT_ENABLE = no LAYOUTS = ortho_4x12 -MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config) -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID NO_SUSPEND_POWER_DOWN = yes -UNICODEMAP_ENABLE = no diff --git a/keyboards/handwired/wulkan/wulkan.c b/keyboards/handwired/wulkan/wulkan.c index 5409fa5b55c6..72024175d2ff 100644 --- a/keyboards/handwired/wulkan/wulkan.c +++ b/keyboards/handwired/wulkan/wulkan.c @@ -1,6 +1 @@ #include "wulkan.h" - -void matrix_init_kb(void) { - matrix_init_user(); -} - diff --git a/keyboards/handwired/xealous/info.json b/keyboards/handwired/xealous/info.json index 6d7e30f4490b..7113c311f2a7 100644 --- a/keyboards/handwired/xealous/info.json +++ b/keyboards/handwired/xealous/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Xealous", "url": "", "maintainer": "alex-ong", - "width": 15, - "height": 5, "layouts": { "LAYOUT_ANSI_DEFAULT": { - "key_count": 64, "layout": [ {"label":"Esc", "x":0, "y":0}, {"label":"1", "x":1, "y":0}, diff --git a/keyboards/handwired/xealous/rev1/config.h b/keyboards/handwired/xealous/rev1/config.h index 946b0cb489ac..8bd5b464a4f3 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 . */ -#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 . #define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION #define IGNORE_MOD_TAP_INTERRUPT -#endif diff --git a/keyboards/handwired/xealous/rev1/rev1.c b/keyboards/handwired/xealous/rev1/rev1.c index 3e51421d8578..ad9f298c19cb 100644 --- a/keyboards/handwired/xealous/rev1/rev1.c +++ b/keyboards/handwired/xealous/rev1/rev1.c @@ -1,6 +1,2 @@ #include "quantum.h" #include "rev1.h" - -void matrix_init_kb(void) { - matrix_init_user(); -} diff --git a/keyboards/handwired/xealous/rev1/rev1.h b/keyboards/handwired/xealous/rev1/rev1.h index 0d8913b2ead8..88e5ef376ee3 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/handwired/xealous/rules.mk b/keyboards/handwired/xealous/rules.mk index 2d816ab7cee7..1aaae37f5381 100644 --- a/keyboards/handwired/xealous/rules.mk +++ b/keyboards/handwired/xealous/rules.mk @@ -2,40 +2,25 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = no # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = yes # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = yes # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. SPLIT_KEYBOARD = yes # Use shared split_common code SUBPROJECT_rev1 = yes -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - SRC += matrix.c -DEBOUNCE_TYPE = eager_pk - -LAYOUTS = split60 +DEBOUNCE_TYPE = sym_eager_pk DEFAULT_FOLDER = handwired/xealous/rev1 diff --git a/keyboards/handwired/xealousbrown/config.h b/keyboards/handwired/xealousbrown/config.h index bf9ad3e05257..70775ffaebb3 100644 --- a/keyboards/handwired/xealousbrown/config.h +++ b/keyboards/handwired/xealousbrown/config.h @@ -32,6 +32,13 @@ along with this program. If not, see . #define USB_POLLING_INTERVAL_MS 1 /* layer optimization */ #define LAYER_STATE_8BIT +#define MAX_LAYER 2 + +//debug scanrate +//#define DEBUG_MATRIX_SCAN_RATE +//debug scans taking longer than one ms +//#define BENCHMARK_MATRIX +#define MATRIX_IO_DELAY 15 /* * Keyboard Matrix Assignments * diff --git a/keyboards/handwired/xealousbrown/info.json b/keyboards/handwired/xealousbrown/info.json index 1a97fb621700..cecd7e9e2e17 100644 --- a/keyboards/handwired/xealousbrown/info.json +++ b/keyboards/handwired/xealousbrown/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Xealous-Brown", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_ansi": { "layout": [ diff --git a/keyboards/handwired/xealousbrown/matrix.c b/keyboards/handwired/xealousbrown/matrix.c index cce0d06ebb8f..f27a13df7b1b 100644 --- a/keyboards/handwired/xealousbrown/matrix.c +++ b/keyboards/handwired/xealousbrown/matrix.c @@ -28,7 +28,7 @@ extern matrix_row_t matrix[MATRIX_ROWS]; // debounced values // matrix code // super fast read_cols code. -static matrix_row_t read_cols(void) { +static inline matrix_row_t read_cols(void) { return (PINC & (1 << 6) ? 0 : (1UL << 0)) | (PIND & (1 << 7) ? 0 : (1UL << 1)) | (PINE & (1 << 6) ? 0 : (1UL << 2)) | @@ -100,12 +100,15 @@ uint8_t matrix_scan_custom(matrix_row_t current_matrix[]) { // Set row, read cols for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) { select_row(current_row); - asm volatile("nop"); - asm volatile("nop"); + matrix_output_unselect_delay(current_row, changed); + matrix_row_t cols = read_cols(); changed |= (current_matrix[current_row] != cols); current_matrix[current_row] = cols; + unselect_rows(); + //this internally calls matrix_io_delay() + matrix_output_unselect_delay(current_row, changed); } return changed; diff --git a/keyboards/handwired/xealousbrown/readme.md b/keyboards/handwired/xealousbrown/readme.md index bbc2233d1c4e..fa5537e47101 100644 --- a/keyboards/handwired/xealousbrown/readme.md +++ b/keyboards/handwired/xealousbrown/readme.md @@ -19,4 +19,7 @@ The brief list of speedhacks to make this keyboard blazing fast: 3) Eager-per-key Debouncing algorithm (no 5ms delay before message is sent) 4) 1000hz polling -See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the +[make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. + +Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/handwired/xealousbrown/rules.mk b/keyboards/handwired/xealousbrown/rules.mk index df90cd030e37..3496097779ad 100644 --- a/keyboards/handwired/xealousbrown/rules.mk +++ b/keyboards/handwired/xealousbrown/rules.mk @@ -7,25 +7,22 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = 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 SPACE_CADET_ENABLE = no # Unneeded feature. LAYOUTS = 60_ansi # special sauce for this keyboard -DEBOUNCE_TYPE = eager_pk # Debounce using eager_pk. +DEBOUNCE_TYPE = sym_eager_pk # Debounce using eager_pk. CUSTOM_MATRIX = lite # Custom matrix that polls at 7000hz instead of a measly 2000hz. LTO_ENABLE = yes # smaller binary SRC += matrix.c diff --git a/keyboards/handwired/xealousbrown/xealousbrown.c b/keyboards/handwired/xealousbrown/xealousbrown.c index 03512b1acb91..dbfa853422de 100644 --- a/keyboards/handwired/xealousbrown/xealousbrown.c +++ b/keyboards/handwired/xealousbrown/xealousbrown.c @@ -15,15 +15,6 @@ */ #include "xealousbrown.h" -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - - - #ifdef BENCHMARK_MATRIX # include "timer.h" # include @@ -50,13 +41,9 @@ void matrix_scan_user(void) { last_timer = timer; if ((timer % 1000 == 0) && (timer != last_print_out)) { - print("Benchmark:"); - print("\n"); - print_dec(timer); - print("\n"); + print("Scans: "); print_dec(scans); print("\n"); - print("-------"); scans = 0; last_print_out = timer; } diff --git a/keyboards/handwired/z150/info.json b/keyboards/handwired/z150/info.json index d61908022252..17b94b521de5 100644 --- a/keyboards/handwired/z150/info.json +++ b/keyboards/handwired/z150/info.json @@ -2,11 +2,9 @@ "keyboard_name": "z150", "url": "", "maintainer": "DmNosachev", - "width": 21.25, - "height": 5, "layouts": { "LAYOUT": { "layout": [{"label":"F1", "x":0, "y":0}, {"label":"F2", "x":1, "y":0}, {"label":"Esc", "x":2.5, "y":0}, {"label":"!", "x":3.5, "y":0}, {"label":"@", "x":4.5, "y":0}, {"label":"#", "x":5.5, "y":0}, {"label":"$", "x":6.5, "y":0}, {"label":"%", "x":7.5, "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":"Backspace", "x":15.5, "y":0, "w":1.75}, {"label":"", "x":17.25, "y":0}, {"label":"", "x":18.25, "y":0, "w":1.5}, {"label":"", "x":19.75, "y":0, "w":1.5}, {"label":"F3", "x":0, "y":1}, {"label":"F4", "x":1, "y":1}, {"label":"Tab", "x":2.5, "y":1, "w":1.5}, {"label":"Q", "x":4, "y":1}, {"label":"W", "x":5, "y":1}, {"label":"E", "x":6, "y":1}, {"label":"R", "x":7, "y":1}, {"label":"T", "x":8, "y":1}, {"label":"Y", "x":9, "y":1}, {"label":"U", "x":10, "y":1}, {"label":"I", "x":11, "y":1}, {"label":"O", "x":12, "y":1}, {"label":"P", "x":13, "y":1}, {"label":"{", "x":14, "y":1}, {"label":"}", "x":15, "y":1, "w":1.25}, {"label":"7", "x":17.25, "y":1}, {"label":"8", "x":18.25, "y":1}, {"label":"9", "x":19.25, "y":1}, {"label":"PrtSc", "x":20.25, "y":1}, {"label":"F5", "x":0, "y":2}, {"label":"F6", "x":1, "y":2}, {"label":"Ctrl", "x":2.5, "y":2, "w":1.75}, {"label":"A", "x":4.25, "y":2}, {"label":"S", "x":5.25, "y":2}, {"label":"D", "x":6.25, "y":2}, {"label":"F", "x":7.25, "y":2}, {"label":"G", "x":8.25, "y":2}, {"label":"H", "x":9.25, "y":2}, {"label":"J", "x":10.25, "y":2}, {"label":"K", "x":11.25, "y":2}, {"label":"L", "x":12.25, "y":2}, {"label":":", "x":13.25, "y":2}, {"label":"\"", "x":14.25, "y":2}, {"label":"Enter", "x":15.25, "y":2, "w":2}, {"label":"4", "x":17.25, "y":2}, {"label":"5", "x":18.25, "y":2}, {"label":"6", "x":19.25, "y":2}, {"label":"\u0432\u0402\u201c", "x":20.25, "y":2}, {"label":"F7", "x":0, "y":3}, {"label":"F8", "x":1, "y":3}, {"label":"Shift", "x":2.5, "y":3, "w":2.25}, {"label":"Z", "x":4.75, "y":3}, {"label":"X", "x":5.75, "y":3}, {"label":"C", "x":6.75, "y":3}, {"label":"V", "x":7.75, "y":3}, {"label":"B", "x":8.75, "y":3}, {"label":"N", "x":9.75, "y":3}, {"label":"M", "x":10.75, "y":3}, {"label":"<", "x":11.75, "y":3}, {"label":">", "x":12.75, "y":3}, {"label":"?", "x":13.75, "y":3}, {"label":"Shift", "x":14.75, "y":3, "w":1.5}, {"label":"|", "x":16.25, "y":3}, {"label":"1", "x":17.25, "y":3}, {"label":"2", "x":18.25, "y":3}, {"label":"6", "x":19.25, "y":3}, {"label":"+", "x":20.25, "y":3, "h":2}, {"label":"F9", "x":0, "y":4}, {"label":"F10", "x":1, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.75}, {"label":"~", "x":4.25, "y":4}, {"x":5.25, "y":4, "w":9}, {"label":"CapsLock", "x":14.25, "y":4, "w":2}, {"label":"0", "x":16.25, "y":4, "w":2}, {"label":".", "x":18.25, "y":4, "w":2}] } } -} \ No newline at end of file +} diff --git a/keyboards/handwired/z150/rules.mk b/keyboards/handwired/z150/rules.mk index b9b242568fe8..30fd014334e8 100644 --- a/keyboards/handwired/z150/rules.mk +++ b/keyboards/handwired/z150/rules.mk @@ -10,16 +10,13 @@ OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/handwired/zergo/info.json b/keyboards/handwired/zergo/info.json index f5b1ff38c892..2b59b48de6a1 100644 --- a/keyboards/handwired/zergo/info.json +++ b/keyboards/handwired/zergo/info.json @@ -2,8 +2,6 @@ "keyboard_name": "zergo", "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/handwired/zergo", "maintainer": "greenjack", - "width": 15, - "height": 6.25, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/handwired/zergo/rules.mk b/keyboards/handwired/zergo/rules.mk index ea5530ffacef..0465156e59c0 100644 --- a/keyboards/handwired/zergo/rules.mk +++ b/keyboards/handwired/zergo/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = halfkay # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = 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 diff --git a/keyboards/hardlineworks/otd_plus/config.h b/keyboards/hardlineworks/otd_plus/config.h index 5474dbfee92f..15e6df7588ee 100644 --- a/keyboards/hardlineworks/otd_plus/config.h +++ b/keyboards/hardlineworks/otd_plus/config.h @@ -20,8 +20,8 @@ /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW -#define CAPS_LOCK_LED_PIN F4 -#define SCROLL_LOCK_LED_PIN D5 +#define LED_CAPS_LOCK_PIN F4 +#define LED_SCROLL_LOCK_PIN D5 /* Set 0 if debouncing isn't needed */ #define DEBOUNCE 5 diff --git a/keyboards/hardlineworks/otd_plus/info.json b/keyboards/hardlineworks/otd_plus/info.json index c6ba4f256a60..59668dc24332 100644 --- a/keyboards/hardlineworks/otd_plus/info.json +++ b/keyboards/hardlineworks/otd_plus/info.json @@ -2,8 +2,6 @@ "keyboard_name": "OTD-PLUS", "url": "", "maintainer": "Hardlineworks", - "width": 18.25, - "height": 6.25, "layouts": { "LAYOUT_tkl_ansi_wkl": { "layout": [ diff --git a/keyboards/hardlineworks/otd_plus/otd_plus.c b/keyboards/hardlineworks/otd_plus/otd_plus.c index f7f96800d049..29d395d287aa 100644 --- a/keyboards/hardlineworks/otd_plus/otd_plus.c +++ b/keyboards/hardlineworks/otd_plus/otd_plus.c @@ -1,12 +1 @@ #include "otd_plus.h" - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} -void led_init_ports(void) { - setPinOutput(CAPS_LOCK_LED_PIN); - setPinOutput(SCROLL_LOCK_LED_PIN); -} - - diff --git a/keyboards/hardlineworks/otd_plus/rules.mk b/keyboards/hardlineworks/otd_plus/rules.mk index e07b7a000b20..b5bf5829abed 100644 --- a/keyboards/hardlineworks/otd_plus/rules.mk +++ b/keyboards/hardlineworks/otd_plus/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/hecomi/alpha/config.h b/keyboards/hecomi/alpha/config.h index cdb06f66ff53..55c5ac50eb80 100644 --- a/keyboards/hecomi/alpha/config.h +++ b/keyboards/hecomi/alpha/config.h @@ -116,55 +116,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -183,26 +134,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/hecomi/alpha/info.json b/keyboards/hecomi/alpha/info.json index 49c8d4c467bf..a7493203f0af 100644 --- a/keyboards/hecomi/alpha/info.json +++ b/keyboards/hecomi/alpha/info.json @@ -2,9 +2,6 @@ "keyboard_name": "hecomi/alpha", "url": "https://skyhigh-works.hatenablog.com/entry/2019/02/25/221959", "maintainer": "takashiski", - "width": 16.25, - "height": 5, - "key_count": 69, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/hecomi/alpha/rules.mk b/keyboards/hecomi/alpha/rules.mk index 002be917f168..1f28a23fa321 100644 --- a/keyboards/hecomi/alpha/rules.mk +++ b/keyboards/hecomi/alpha/rules.mk @@ -2,31 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = yes diff --git a/keyboards/hecomi/hecomi.c b/keyboards/hecomi/hecomi.c index 9d0d93fa173e..d5275471193f 100644 --- a/keyboards/hecomi/hecomi.c +++ b/keyboards/hecomi/hecomi.c @@ -15,30 +15,3 @@ */ #include "hecomi.h" #include "split_util.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/hecomi/keymaps/default/keymap.c b/keyboards/hecomi/keymaps/default/keymap.c index 312799f73737..465b4ae5c178 100644 --- a/keyboards/hecomi/keymaps/default/keymap.c +++ b/keyboards/hecomi/keymaps/default/keymap.c @@ -91,15 +91,3 @@ layer_state_t layer_state_set_user(layer_state_t state) } return state; } - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/hecomi/rules.mk b/keyboards/hecomi/rules.mk index f91432caddd5..b1af72ca3f9f 100644 --- a/keyboards/hecomi/rules.mk +++ b/keyboards/hecomi/rules.mk @@ -2,33 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = yes DEFAULT_FOLDER = hecomi/alpha diff --git a/keyboards/heliar/wm1_hotswap/info.json b/keyboards/heliar/wm1_hotswap/info.json index 512d278cf5ea..165dad94bc47 100644 --- a/keyboards/heliar/wm1_hotswap/info.json +++ b/keyboards/heliar/wm1_hotswap/info.json @@ -2,8 +2,6 @@ "keyboard_name": "wm1", "url": "", "maintainer": "heliar", - "width": 18.25, - "height": 5.25, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/heliar/wm1_hotswap/rules.mk b/keyboards/heliar/wm1_hotswap/rules.mk index 74214d81ac49..6d6af0b37d1a 100644 --- a/keyboards/heliar/wm1_hotswap/rules.mk +++ b/keyboards/heliar/wm1_hotswap/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu ## Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/helix/local_drivers/i2c.h b/keyboards/helix/local_drivers/i2c.h index 47cf6bd1b2c9..710662c7abd6 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 @@ -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 2e53928df2d3..b4dcdafe57f0 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 @@ -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 bcb30f88595d..a7527f4ebc6a 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 #include @@ -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/info.json b/keyboards/helix/pico/info.json index a82a8f2ec779..b9b573a37de0 100644 --- a/keyboards/helix/pico/info.json +++ b/keyboards/helix/pico/info.json @@ -2,8 +2,6 @@ "keyboard_name": "HelixPico", "url": "https://github.com/MakotoKurauchi/helix", "maintainer": "MakotoKurauchi", - "width": 15, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/helix/pico/keymaps/biacco/rules.mk b/keyboards/helix/pico/keymaps/biacco/rules.mk index 37e49977c50d..993ade267390 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/config.h b/keyboards/helix/pico/keymaps/default/config.h index 7653185198bc..0bd76a18b451 100644 --- a/keyboards/helix/pico/keymaps/default/config.h +++ b/keyboards/helix/pico/keymaps/default/config.h @@ -36,7 +36,6 @@ along with this program. If not, see . #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 diff --git a/keyboards/helix/pico/keymaps/default/rules.mk b/keyboards/helix/pico/keymaps/default/rules.mk index 8f198e380375..8a4a0df28e48 100644 --- a/keyboards/helix/pico/keymaps/default/rules.mk +++ b/keyboards/helix/pico/keymaps/default/rules.mk @@ -6,7 +6,7 @@ # See TOP/docs/config_options.md for more information. # EXTRAKEY_ENABLE = yes # Audio control and System control -AUDIO_ENABLE = yes # Audio output on port B5 +AUDIO_ENABLE = yes # Audio output LTO_ENABLE = no # if firmware size over limit, try this option # Helix Spacific Build Options @@ -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 165233f5fef5..05a60f67d5e5 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/local_features.mk deleted file mode 100644 index 25dcb8b6d32d..000000000000 --- a/keyboards/helix/pico/local_features.mk +++ /dev/null @@ -1,148 +0,0 @@ -# -# local_features.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)) - $(info - LED_BACK_ENABLE = $(LED_BACK_ENABLE)) - $(info - LED_UNDERGLOW_ENABLE = $(LED_UNDERGLOW_ENABLE)) - $(info - LED_ANIMATIONS = $(LED_ANIMATIONS)) - $(info - IOS_DEVICE_ENABLE = $(IOS_DEVICE_ENABLE)) - $(info ) -endef - -define HELIX_HELP_MSG - $(info Helix keyboard convenient command line option) - $(info - make HELIX= helix/pico:) - $(info - option= oled | back | under | na | no-ani) - $(info - ios | sc | split-common | scan | verbose) - $(info - ex.) - $(info - make HELIX=oled helix/pico:) - $(info - make HELIX=back helix/pico:) - $(info - make HELIX=under helix/pico:) - $(info - make HELIX=back,na helix/pico:) - $(info - make HELIX=back,ios helix/pico:) - $(info ) -endef - - ifneq ($(strip $(HELIX)),) - COMMA=, - helix_option := $(subst $(COMMA), , $(HELIX)) - ifneq ($(filter help,$(helix_option)),) - $(eval $(call HELIX_HELP_MSG)) - $(error ) - endif - ifneq ($(filter oled,$(helix_option)),) - OLED_ENABLE = yes - endif - ifneq ($(filter back,$(helix_option)),) - LED_BACK_ENABLE = yes - else ifneq ($(filter under,$(helix_option)),) - LED_UNDERGLOW_ENABLE = yes - endif - ifneq ($(filter na,$(helix_option)),) - LED_ANIMATIONS = no - endif - ifneq ($(filter no_ani,$(helix_option)),) - LED_ANIMATIONS = no - endif - ifneq ($(filter no-ani,$(helix_option)),) - LED_ANIMATIONS = no - endif - ifneq ($(filter ios,$(helix_option)),) - IOS_DEVICE_ENABLE = yes - endif - ifneq ($(filter sc,$(helix_option)),) - SPLIT_KEYBOARD = yes - endif - ifneq ($(filter split-common,$(helix_option)),) - SPLIT_KEYBOARD = yes - endif - ifneq ($(filter scan,$(helix_option)),) - # use DEBUG_MATRIX_SCAN_RATE - # see docs/newbs_testing_debugging.md - OPT_DEFS += -DDEBUG_MATRIX_SCAN_RATE - CONSOLE_ENABLE = yes - SHOW_VERBOSE_INFO = yes - endif - ifneq ($(filter verbose,$(helix_option)),) - SHOW_VERBOSE_INFO = yes - endif - SHOW_HELIX_OPTIONS = yes - endif - -ifneq ($(strip $(SPLIT_KEYBOARD)), yes) - SRC += local_drivers/serial.c - KEYBOARD_PATHS += $(HELIX_TOP_DIR)/local_drivers - - # A workaround until #7089 is merged. - # serial.c must not be compiled with the -lto option. - # The current LIB_SRC has a side effect with the -fno-lto option, so use it. - LIB_SRC += local_drivers/serial.c - - CUSTOM_MATRIX = yes - - SRC += pico/matrix.c - SRC += pico/split_util.c -endif - -######## -# convert Helix-specific options (that represent combinations of standard options) -# into QMK standard options. - -ifeq ($(strip $(LED_BACK_ENABLE)), yes) - RGBLIGHT_ENABLE = yes - OPT_DEFS += -DRGBLED_BACK - ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes) - $(eval $(call HELIX_CUSTOMISE_MSG)) - $(error LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE both 'yes') - endif -else ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes) - RGBLIGHT_ENABLE = yes -endif - -ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes) - OPT_DEFS += -DIOS_DEVICE_ENABLE -endif - -ifeq ($(strip $(LED_ANIMATIONS)), yes) - OPT_DEFS += -DLED_ANIMATIONS -endif - -ifeq ($(strip $(OLED_ENABLE)), yes) - SRC += local_drivers/i2c.c - SRC += local_drivers/ssd1306.c - KEYBOARD_PATHS += $(HELIX_TOP_DIR)/local_drivers - OPT_DEFS += -DOLED_ENABLE - ifeq ($(strip $(LOCAL_GLCDFONT)), yes) - OPT_DEFS += -DLOCAL_GLCDFONT - endif -endif - -ifeq ($(strip $(AUDIO_ENABLE)),yes) - ifeq ($(strip $(RGBLIGHT_ENABLE)),yes) - LTO_ENABLE = yes - endif - ifeq ($(strip $(OLED_ENABLE)),yes) - LTO_ENABLE = yes - endif -endif - -ifneq ($(strip $(SHOW_HELIX_OPTIONS)),) - $(eval $(call HELIX_CUSTOMISE_MSG)) - ifneq ($(strip $(SHOW_VERBOSE_INFO)),) - $(info -- RGBLIGHT_ENABLE = $(RGBLIGHT_ENABLE)) - $(info -- OLED_DRIVER_ENABLE = $(OLED_DRIVER_ENABLE)) - $(info -- CONSOLE_ENABLE = $(CONSOLE_ENABLE)) - $(info -- OPT_DEFS = $(OPT_DEFS)) - $(info -- SPLIT_KEYBOARD = $(SPLIT_KEYBOARD)) - $(info -- LTO_ENABLE = $(LTO_ENABLE)) - $(info ) - endif -endif diff --git a/keyboards/helix/pico/pico.c b/keyboards/helix/pico/pico.c index 12b8ae9efa99..315b35a7aee3 100644 --- a/keyboards/helix/pico/pico.c +++ b/keyboards/helix/pico/pico.c @@ -11,11 +11,6 @@ uint8_t is_master = false; bool process_record_kb(uint16_t keycode, keyrecord_t *record) { return process_record_gfx(keycode,record) && process_record_user(keycode, record); } - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - //led_set_user(usb_led); -} #endif void matrix_init_kb(void) { diff --git a/keyboards/helix/pico/post_rules.mk b/keyboards/helix/pico/post_rules.mk new file mode 100644 index 000000000000..38573d75a525 --- /dev/null +++ b/keyboards/helix/pico/post_rules.mk @@ -0,0 +1,147 @@ +# +# 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. +# + +define HELIX_CUSTOMISE_MSG + $(info Helix Spacific Build Options) + $(info - OLED_ENABLE = $(OLED_ENABLE)) + $(info - LED_BACK_ENABLE = $(LED_BACK_ENABLE)) + $(info - LED_UNDERGLOW_ENABLE = $(LED_UNDERGLOW_ENABLE)) + $(info - LED_ANIMATIONS = $(LED_ANIMATIONS)) + $(info - IOS_DEVICE_ENABLE = $(IOS_DEVICE_ENABLE)) + $(info ) +endef + +define HELIX_HELP_MSG + $(info Helix keyboard convenient command line option) + $(info - make HELIX= helix/pico:) + $(info - option= oled | back | under | na | no-ani) + $(info - ios | sc | split-common | scan | verbose) + $(info - ex.) + $(info - make HELIX=oled helix/pico:) + $(info - make HELIX=back helix/pico:) + $(info - make HELIX=under helix/pico:) + $(info - make HELIX=back,na helix/pico:) + $(info - make HELIX=back,ios helix/pico:) + $(info ) +endef + + ifneq ($(strip $(HELIX)),) + COMMA=, + helix_option := $(subst $(COMMA), , $(HELIX)) + ifneq ($(filter help,$(helix_option)),) + $(eval $(call HELIX_HELP_MSG)) + $(error ) + endif + ifneq ($(filter oled,$(helix_option)),) + OLED_ENABLE = yes + endif + ifneq ($(filter back,$(helix_option)),) + LED_BACK_ENABLE = yes + else ifneq ($(filter under,$(helix_option)),) + LED_UNDERGLOW_ENABLE = yes + endif + ifneq ($(filter na,$(helix_option)),) + LED_ANIMATIONS = no + endif + ifneq ($(filter no_ani,$(helix_option)),) + LED_ANIMATIONS = no + endif + ifneq ($(filter no-ani,$(helix_option)),) + LED_ANIMATIONS = no + endif + ifneq ($(filter ios,$(helix_option)),) + IOS_DEVICE_ENABLE = yes + endif + ifneq ($(filter sc,$(helix_option)),) + SPLIT_KEYBOARD = yes + endif + ifneq ($(filter split-common,$(helix_option)),) + SPLIT_KEYBOARD = yes + endif + ifneq ($(filter scan,$(helix_option)),) + # use DEBUG_MATRIX_SCAN_RATE + # see docs/newbs_testing_debugging.md + OPT_DEFS += -DDEBUG_MATRIX_SCAN_RATE + CONSOLE_ENABLE = yes + SHOW_VERBOSE_INFO = yes + endif + ifneq ($(filter verbose,$(helix_option)),) + SHOW_VERBOSE_INFO = yes + endif + SHOW_HELIX_OPTIONS = yes + endif + +ifneq ($(strip $(SPLIT_KEYBOARD)), yes) + SRC += local_drivers/serial.c + KEYBOARD_PATHS += $(HELIX_TOP_DIR)/local_drivers + + # A workaround until #7089 is merged. + # serial.c must not be compiled with the -lto option. + # The current LIB_SRC has a side effect with the -fno-lto option, so use it. + LIB_SRC += local_drivers/serial.c + + CUSTOM_MATRIX = yes + + SRC += pico/matrix.c + SRC += pico/split_util.c +endif + +######## +# convert Helix-specific options (that represent combinations of standard options) +# into QMK standard options. + +ifeq ($(strip $(LED_BACK_ENABLE)), yes) + RGBLIGHT_ENABLE = yes + OPT_DEFS += -DRGBLED_BACK + ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes) + $(eval $(call HELIX_CUSTOMISE_MSG)) + $(error LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE both 'yes') + endif +else ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes) + RGBLIGHT_ENABLE = yes +endif + +ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes) + OPT_DEFS += -DIOS_DEVICE_ENABLE +endif + +ifeq ($(strip $(LED_ANIMATIONS)), yes) + OPT_DEFS += -DLED_ANIMATIONS +endif + +ifeq ($(strip $(OLED_ENABLE)), yes) + SRC += local_drivers/i2c.c + SRC += local_drivers/ssd1306.c + KEYBOARD_PATHS += $(HELIX_TOP_DIR)/local_drivers + OPT_DEFS += -DOLED_ENABLE + ifeq ($(strip $(LOCAL_GLCDFONT)), yes) + OPT_DEFS += -DLOCAL_GLCDFONT + endif +endif + +ifeq ($(strip $(AUDIO_ENABLE)),yes) + ifeq ($(strip $(RGBLIGHT_ENABLE)),yes) + LTO_ENABLE = yes + endif + ifeq ($(strip $(OLED_ENABLE)),yes) + LTO_ENABLE = yes + endif +endif + +ifneq ($(strip $(SHOW_HELIX_OPTIONS)),) + $(eval $(call HELIX_CUSTOMISE_MSG)) + ifneq ($(strip $(SHOW_VERBOSE_INFO)),) + $(info -- RGBLIGHT_ENABLE = $(RGBLIGHT_ENABLE)) + $(info -- CONSOLE_ENABLE = $(CONSOLE_ENABLE)) + $(info -- OPT_DEFS = $(OPT_DEFS)) + $(info -- SPLIT_KEYBOARD = $(SPLIT_KEYBOARD)) + $(info -- LTO_ENABLE = $(LTO_ENABLE)) + $(info ) + endif +endif + +OLED_ENABLE = no # disable OLED in TOP/common_features.mk diff --git a/keyboards/helix/pico/qmk_conf/rules.mk b/keyboards/helix/pico/qmk_conf/rules.mk index 966e64d618dd..e2993b3f80de 100644 --- a/keyboards/helix/pico/qmk_conf/rules.mk +++ b/keyboards/helix/pico/qmk_conf/rules.mk @@ -1,4 +1,4 @@ EXTRAKEY_ENABLE = yes # Audio control and System control -AUDIO_ENABLE = yes # Audio output on port B5 +AUDIO_ENABLE = yes # Audio output include $(strip $(KEYBOARD_LOCAL_FEATURES_MK)) diff --git a/keyboards/helix/pico/rules.mk b/keyboards/helix/pico/rules.mk index cb9a70e00e30..12caec37ef58 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 c0ecdb097412..b839ce6e3ee7 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 #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/info.json b/keyboards/helix/rev1/info.json index 6811e764d139..c52da0897475 100644 --- a/keyboards/helix/rev1/info.json +++ b/keyboards/helix/rev1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Helix rev. 1", "url": "https://github.com/MakotoKurauchi/helix", "maintainer": "MakotoKurauchi", - "width": 13, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/helix/rev1/rev1.c b/keyboards/helix/rev1/rev1.c index 309cca010f1a..d053f0de17cb 100644 --- a/keyboards/helix/rev1/rev1.c +++ b/keyboards/helix/rev1/rev1.c @@ -7,22 +7,4 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) { return process_record_gfx(keycode,record) && process_record_user(keycode, record); } - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - led_set_user(usb_led); -} #endif - -void matrix_init_kb(void) { - - // // green led on - // DDRD |= (1<<5); - // PORTD &= ~(1<<5); - - // // orange led on - // DDRB |= (1<<0); - // PORTB &= ~(1<<0); - - matrix_init_user(); -}; diff --git a/keyboards/helix/rev1/split_util.h b/keyboards/helix/rev1/split_util.h index 595a0659e1dd..807412cd38a9 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 #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/config.h b/keyboards/helix/rev2/config.h index 73f0c61993ee..041acee2158a 100644 --- a/keyboards/helix/rev2/config.h +++ b/keyboards/helix/rev2/config.h @@ -42,8 +42,8 @@ along with this program. If not, see . // #define EE_HANDS // Helix keyboard OLED support -// see ./rules.mk: OLED_ENABLE=yes or no -#ifdef OLED_ENABLE +// see ./local_features.mk: OLED_SELECT=local +#ifdef OLED_LOCAL_ENABLE #define SSD1306OLED #endif diff --git a/keyboards/helix/rev2/info.json b/keyboards/helix/rev2/info.json index 7d9341c58b50..f46508de5a35 100644 --- a/keyboards/helix/rev2/info.json +++ b/keyboards/helix/rev2/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Helix rev. 2", "url": "https://github.com/MakotoKurauchi/helix", "maintainer": "MakotoKurauchi", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/helix/rev2/keymaps/default/oled_display.c b/keyboards/helix/rev2/keymaps/default/oled_display.c index 04d6408c6cd0..4ee3f002d607 100644 --- a/keyboards/helix/rev2/keymaps/default/oled_display.c +++ b/keyboards/helix/rev2/keymaps/default/oled_display.c @@ -36,9 +36,9 @@ enum layer_number { }; //SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h -#if defined(SSD1306OLED) || defined(OLED_DRIVER_ENABLE) +#if defined(SSD1306OLED) || defined(OLED_ENABLE) -# if defined(OLED_DRIVER_ENABLE) +# if defined(OLED_ENABLE) oled_rotation_t oled_init_user(oled_rotation_t rotation) { if (is_keyboard_master()) { return OLED_ROTATION_0; @@ -208,7 +208,7 @@ void iota_gfx_task_user(void) { matrix_update(&display, &matrix); } # else -void oled_task_user(void) { +bool oled_task_user(void) { # if DEBUG_TO_SCREEN if (debug_enable) { @@ -223,6 +223,7 @@ void oled_task_user(void) { render_rgbled_status(false); render_layer_status(); } + return false; } # endif #endif diff --git a/keyboards/helix/rev2/keymaps/default/rules.mk b/keyboards/helix/rev2/keymaps/default/rules.mk index 206e836ec011..58b43a6bdacd 100644 --- a/keyboards/helix/rev2/keymaps/default/rules.mk +++ b/keyboards/helix/rev2/keymaps/default/rules.mk @@ -5,7 +5,7 @@ # See TOP/keyboards/helix/rules.mk for a list of options that can be set. # See TOP/docs/config_options.md for more information. # -LTO_ENABLE = no # if firmware size over limit, try this option +LTO_ENABLE = yes # if firmware size over limit, try this option # Helix Spacific Build Options # you can uncomment and edit follows 7 Variables @@ -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/edvorakjp/oled.c b/keyboards/helix/rev2/keymaps/edvorakjp/oled.c index 4bbab1dc4b37..207aebc4233c 100644 --- a/keyboards/helix/rev2/keymaps/edvorakjp/oled.c +++ b/keyboards/helix/rev2/keymaps/edvorakjp/oled.c @@ -2,7 +2,7 @@ #include #include "oled.h" -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE void render_host_led_state(void) { char led_state_str[24]; uint8_t leds = host_keyboard_leds(); @@ -56,7 +56,7 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) { return is_keyboard_left() ? rotation : rotation ^ OLED_ROTATION_180; } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_left()) { render_mode_icon(!get_enable_kc_lang()); render_layer_state(); @@ -64,5 +64,6 @@ void oled_task_user(void) { } else { render_logo(); } + return false; } -#endif // OLED_DRIVER_ENABLE +#endif // OLED_ENABLE diff --git a/keyboards/helix/rev2/keymaps/five_rows/config.h b/keyboards/helix/rev2/keymaps/five_rows/config.h index b9961f5c48fe..e1c124f419c8 100644 --- a/keyboards/helix/rev2/keymaps/five_rows/config.h +++ b/keyboards/helix/rev2/keymaps/five_rows/config.h @@ -29,7 +29,11 @@ along with this program. If not, see . see tmk_core/common/action_tapping.c */ #undef OLED_UPDATE_INTERVAL -#define OLED_UPDATE_INTERVAL 50 +#ifdef DEBUG_MATRIX_SCAN_RATE +# define OLED_UPDATE_INTERVAL 500 +#else +# define OLED_UPDATE_INTERVAL 50 +#endif // place overrides here diff --git a/keyboards/helix/rev2/keymaps/five_rows/matrix_output_unselect_delay.c b/keyboards/helix/rev2/keymaps/five_rows/matrix_output_unselect_delay.c new file mode 100644 index 000000000000..a093afe0a4a4 --- /dev/null +++ b/keyboards/helix/rev2/keymaps/five_rows/matrix_output_unselect_delay.c @@ -0,0 +1,31 @@ +/* Copyright 2021 mtei + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +void matrix_output_unselect_delay(uint8_t line, bool key_pressed) { + /* If none of the keys are pressed, + * there is no need to wait for time for the next line. */ + if (key_pressed) { +# ifdef MATRIX_IO_DELAY +# if MATRIX_IO_DELAY > 0 + wait_us(MATRIX_IO_DELAY); +# endif +# else + wait_us(30); +# endif + } +} diff --git a/keyboards/helix/rev2/keymaps/five_rows/oled_display.c b/keyboards/helix/rev2/keymaps/five_rows/oled_display.c index 689efe4c88fc..dc6de02b1764 100644 --- a/keyboards/helix/rev2/keymaps/five_rows/oled_display.c +++ b/keyboards/helix/rev2/keymaps/five_rows/oled_display.c @@ -35,9 +35,9 @@ void init_helix_oled(void) { } //SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h -#if defined(SSD1306OLED) || defined(OLED_DRIVER_ENABLE) +#if defined(SSD1306OLED) || defined(OLED_ENABLE) -# if defined(OLED_DRIVER_ENABLE) +# if defined(OLED_ENABLE) oled_rotation_t oled_init_user(oled_rotation_t rotation) { if (is_keyboard_master()) { return OLED_ROTATION_0; @@ -64,6 +64,55 @@ void matrix_update(struct CharacterMatrix *dest, } # endif +static char *sprint_decimal(char *buf, int data) { + if (data > 9) { + buf = sprint_decimal(buf, data/10); + } + *buf++ = "0123456789"[data%10]; + *buf = '\0'; + return buf; +} + +static char *sprint_hex(char *buf, uint32_t data) { + if (data > 0xf) { + buf = sprint_hex(buf, data/0x10); + } + *buf++ = "0123456789abcdef"[data & 0xf]; + *buf = '\0'; + return buf; +} + +char *sprints(char *buf, char *src) { + while (*src) { + *buf++ = *src++; + } + *buf = '\0'; + return buf; +} + +char *sprintx(char *buf, char *leadstr, uint32_t data) { + buf = sprints(buf, leadstr); + buf = sprint_hex(buf, data); + return buf; +} + +char *sprintd(char *buf, char *leadstr, int data) { + buf = sprints(buf, leadstr); + buf = sprint_decimal(buf, data); + return buf; +} + +char *sprint2d(char *buf, char *leadstr, int data) { + buf = sprints(buf, leadstr); + if (data > 99) { + return sprint_decimal(buf, data); + } + if (data < 10) { + *buf++ = ' '; + } + return sprint_decimal(buf, data); +} + # ifdef SSD1306OLED static void render_logo(struct CharacterMatrix *matrix) { # else @@ -76,20 +125,35 @@ static void render_logo(void) { 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4, 0}; oled_write_P(helix_logo, false); -# ifdef RGBLIGHT_ENABLE char buf[30]; + char *bufp; +# ifdef RGBLIGHT_ENABLE if (RGBLIGHT_MODES > 1 && rgblight_is_enabled()) { - snprintf(buf, sizeof(buf), " LED %2d: %d,%d,%d ", - rgblight_get_mode(), - rgblight_get_hue()/RGBLIGHT_HUE_STEP, - rgblight_get_sat()/RGBLIGHT_SAT_STEP, - rgblight_get_val()/RGBLIGHT_VAL_STEP); + bufp = sprint2d(buf, " LED ", rgblight_get_mode()); +# ifdef DEBUG_MATRIX_SCAN_RATE + bufp = sprintd(bufp, " scan:", get_matrix_scan_rate()); +# else + bufp = sprintd(bufp, ": ", rgblight_get_hue()/RGBLIGHT_HUE_STEP); + bufp = sprintd(bufp, ",", rgblight_get_sat()/RGBLIGHT_SAT_STEP); + bufp = sprintd(bufp, ",", rgblight_get_val()/RGBLIGHT_VAL_STEP); + bufp = sprints(bufp, " "); +# endif oled_write(buf, false); # ifndef SSD1306OLED } else { +# ifdef DEBUG_MATRIX_SCAN_RATE + bufp = sprintd(buf, " scan:", get_matrix_scan_rate()); + oled_write(buf, false); +# endif oled_write_P( PSTR("\n"), false); # endif } +# else +# ifdef DEBUG_MATRIX_SCAN_RATE + bufp = sprintd(buf, " scan:", get_matrix_scan_rate()); + bufp = sprints(bufp, " "); + oled_write(buf, false); +# endif # endif } @@ -142,6 +206,11 @@ void render_status(void) { int name_num; uint32_t lstate; oled_write_P(layer_names[current_default_layer], false); +# ifdef DEBUG_MATRIX_SCAN_RATE + char buf[16]; + sprintd(buf, " scan:", get_matrix_scan_rate()); + oled_write(buf, false); +# endif oled_write_P(PSTR("\n"), false); for (lstate = layer_state, name_num = 0; lstate && name_num < sizeof(layer_names)/sizeof(char *); @@ -152,14 +221,13 @@ void render_status(void) { } } } + oled_write_P(PSTR("\n"), false); // Host Keyboard LED Status - char led[40]; - snprintf(led, sizeof(led), "\n%s %s %s", - (host_keyboard_leds() & (1<. // If you need more program area, try select and reduce rgblight modes to use. -#define RGBLIGHT_ANIMATIONS +#ifndef LED_ANIMATIONS +# define LED_ANIMATIONS +#endif // Selection of RGBLIGHT MODE to use. #if defined(LED_ANIMATIONS) @@ -38,6 +40,7 @@ along with this program. If not, see . #define RGBLIGHT_EFFECT_STATIC_GRADIENT #define RGBLIGHT_EFFECT_RGB_TEST #define RGBLIGHT_EFFECT_ALTERNATING + #define RGBLIGHT_EFFECT_TWINKLE #endif #undef RGBLIGHT_HUE_STEP diff --git a/keyboards/helix/rev2/keymaps/fraanrosi/rules.mk b/keyboards/helix/rev2/keymaps/fraanrosi/rules.mk index d657133e6181..98585b0d60a2 100644 --- a/keyboards/helix/rev2/keymaps/fraanrosi/rules.mk +++ b/keyboards/helix/rev2/keymaps/fraanrosi/rules.mk @@ -20,6 +20,5 @@ EXTRAKEY_ENABLE = yes # Audio control and System control 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)) +LED_BACK_ENABLE = no +LED_UNDERGLOW_ENABLE = yes diff --git a/keyboards/helix/rev2/keymaps/froggy/rules.mk b/keyboards/helix/rev2/keymaps/froggy/rules.mk index 5a0fd9a2b189..2d01c43fe7d3 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/keymap.c b/keyboards/helix/rev2/keymaps/froggy_106/keymap.c index d32c4fa0ca51..3a433e56fda0 100644 --- a/keyboards/helix/rev2/keymaps/froggy_106/keymap.c +++ b/keyboards/helix/rev2/keymaps/froggy_106/keymap.c @@ -103,7 +103,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { OSM(MOD_LCTL), OSM(MOD_LALT), OSM(MOD_LGUI), L_SYM, L_NUM, OPT_TAP_SP, KC_ENT, _______, _______, _______, _______, _______, _______, _______ \ ), [_BASE_106] = LAYOUT( \ - LCTL(KC_Z), JP_SCLN, JP_LBRC, JP_LPRN, JP_LT, JP_LCBR, _______, _______, _______, _______, _______, _______, \ + LCTL(KC_Z), JP_SCLN, JP_LBRC, JP_LPRN, JP_LABK, JP_LCBR, _______, _______, _______, _______, _______, _______, \ KANA, KC_P, KC_K, KC_R, KC_A, KC_F, _______, _______, _______, _______, _______, _______, \ KC_BSPC, KC_D, KC_T, KC_H, KC_E, KC_O, _______, _______, _______, _______, _______, _______, \ OSM(MOD_LSFT), KC_Y, KC_S, KC_N, KC_I, KC_U, KC_SPC, _______, _______, _______, _______, _______, _______, _______, \ @@ -131,7 +131,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______,_______, KC_COMM,DESKTOP, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ ), [_OPT_106] = LAYOUT( \ - KC_ESC, JP_COLN,JP_RBRC, JP_RPRN,JP_GT, JP_RCBR, _______, _______, _______, _______, _______, _______, \ + KC_ESC, JP_COLN,JP_RBRC, JP_RPRN,JP_RABK, JP_RCBR, _______, _______, _______, _______, _______, _______, \ EISU, KC_J, KC_M, KC_B, JP_QUOT, KC_TAB, _______, _______, _______, _______, _______, _______, \ KC_DOT, KC_V, KC_C, KC_L, KC_Z, KC_Q, _______, _______, _______, _______, _______, _______, \ _______, KC_X, KC_G, KC_W, JP_MINS, KC_DEL, KC_ESC, _______, _______, _______, _______, _______, _______, _______, \ @@ -363,7 +363,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { //case JP_SCLN: // == KC_SCLN case JP_LBRC: case JP_LPRN: - //case JP_LT: // == KC_LT + //case JP_LABK: // == KC_LT case JP_LCBR: if (IS_MODE_106()) { if (keycode == KC_LBRC || keycode == KC_LPRN || keycode == KC_LCBR) diff --git a/keyboards/helix/rev2/keymaps/froggy_106/rules.mk b/keyboards/helix/rev2/keymaps/froggy_106/rules.mk index 5a0fd9a2b189..2d01c43fe7d3 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 8b590eee864c..3ab27acfc2c7 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/xulkal/rules.mk b/keyboards/helix/rev2/keymaps/xulkal/rules.mk index 7fac4df7e102..bdf0479a40a0 100644 --- a/keyboards/helix/rev2/keymaps/xulkal/rules.mk +++ b/keyboards/helix/rev2/keymaps/xulkal/rules.mk @@ -4,7 +4,8 @@ OPT_DEFS += -DRGBLIGHT_ANIMATIONS # Helix specific define for correct RGBLED_NUM OPT_DEFS += -DRGBLED_BACK -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Helix specific font file OPT_DEFS += -DOLED_FONT_H=\"common/glcdfont.c\" # Xulkal specific oled define diff --git a/keyboards/helix/rev2/keymaps/yshrsmz/rules.mk b/keyboards/helix/rev2/keymaps/yshrsmz/rules.mk index 83dcc9b3b835..cd436cd9a343 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/local_features.mk b/keyboards/helix/rev2/local_features.mk index ce3853a02c1b..8c3ac9c3c1d1 100644 --- a/keyboards/helix/rev2/local_features.mk +++ b/keyboards/helix/rev2/local_features.mk @@ -156,19 +156,33 @@ endif ifeq ($(strip $(OLED_ENABLE)), yes) ifeq ($(strip $(OLED_SELECT)),core) - OLED_DRIVER_ENABLE = yes + OLED_ENABLE = yes + OLED_DRIVER = SSD1306 ifeq ($(strip $(LOCAL_GLCDFONT)), yes) OPT_DEFS += -DOLED_FONT_H=\ else OPT_DEFS += -DOLED_FONT_H=\"common/glcdfont.c\" endif else - SRC += local_drivers/i2c.c - SRC += local_drivers/ssd1306.c - KEYBOARD_PATHS += $(HELIX_TOP_DIR)/local_drivers - OPT_DEFS += -DOLED_ENABLE - ifeq ($(strip $(LOCAL_GLCDFONT)), yes) - OPT_DEFS += -DLOCAL_GLCDFONT + ifeq ($(strip $(SPLIT_KEYBOARD)), yes) + $(info Helix/rev2: The following combinations are not supported.) + $(info - SPLIT_KEYBOARD = $(SPLIT_KEYBOARD)) # yes + $(info - OLED_ENABLE = $(OLED_ENABLE)) # yes + $(info - OLED_SELECT = $(OLED_SELECT)) # local + $(info Force : OLED_ENABLE = no) + $(info .) + OLED_ENABLE = no + endif + ifeq ($(strip $(OLED_ENABLE)), yes) + OLED_ENABLE = no # disable OLED in TOP/common_features.mk + OLED_LOCAL_ENABLE = yes + SRC += local_drivers/i2c.c + SRC += local_drivers/ssd1306.c + KEYBOARD_PATHS += $(HELIX_TOP_DIR)/local_drivers + OPT_DEFS += -DOLED_LOCAL_ENABLE + ifeq ($(strip $(LOCAL_GLCDFONT)), yes) + OPT_DEFS += -DLOCAL_GLCDFONT + endif endif endif endif @@ -177,7 +191,8 @@ ifneq ($(strip $(SHOW_HELIX_OPTIONS)),) $(eval $(call HELIX_CUSTOMISE_MSG)) ifneq ($(strip $(SHOW_VERBOSE_INFO)),) $(info -- RGBLIGHT_ENABLE = $(RGBLIGHT_ENABLE)) - $(info -- OLED_DRIVER_ENABLE = $(OLED_DRIVER_ENABLE)) + $(info -- OLED_DRIVER = $(OLED_DRIVER)) + $(info -- OLED_LOCAL_ENABLE = $(OLED_LOCAL_ENABLE)) $(info -- CONSOLE_ENABLE = $(CONSOLE_ENABLE)) $(info -- OPT_DEFS = $(OPT_DEFS)) $(info -- SPLIT_KEYBOARD = $(SPLIT_KEYBOARD)) diff --git a/keyboards/helix/rev2/post_rules.mk b/keyboards/helix/rev2/post_rules.mk new file mode 100644 index 000000000000..4c671d4515b6 --- /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/rev2.c b/keyboards/helix/rev2/rev2.c index d2b3143d895b..b92580f9f946 100644 --- a/keyboards/helix/rev2/rev2.c +++ b/keyboards/helix/rev2/rev2.c @@ -11,11 +11,6 @@ uint8_t is_master = false; bool process_record_kb(uint16_t keycode, keyrecord_t *record) { return process_record_gfx(keycode,record) && process_record_user(keycode, record); } - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - //led_set_user(usb_led); -} #endif bool is_mac_mode(void) { diff --git a/keyboards/helix/rev2/serial_config_simpleapi.h b/keyboards/helix/rev2/serial_config_simpleapi.h index e2d22a41e7bc..0e1dd9e4acb2 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 873d8939d81f..16887eb74f7b 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 c0ecdb097412..b839ce6e3ee7 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 #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/rev3_4rows/config.h b/keyboards/helix/rev3_4rows/config.h index 9102104bfc5e..218ef5e5cc7f 100644 --- a/keyboards/helix/rev3_4rows/config.h +++ b/keyboards/helix/rev3_4rows/config.h @@ -68,7 +68,7 @@ along with this program. If not, see . # define RGB_MATRIX_KEYPRESSES // reacts to keypresses // # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses) // # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended # define RGB_MATRIX_FRAMEBUFFER_EFFECTS // # define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness) // # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness) @@ -145,59 +145,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -218,26 +165,6 @@ along with this program. If not, see . #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/helix/rev3_4rows/info.json b/keyboards/helix/rev3_4rows/info.json index 0ad2a7c3cacf..7e825ff90ccd 100644 --- a/keyboards/helix/rev3_4rows/info.json +++ b/keyboards/helix/rev3_4rows/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Helix rev3 4rows", "url": "", "maintainer": "yushakobo", - "width": 15, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/helix/rev3_4rows/keymaps/default/keymap.c b/keyboards/helix/rev3_4rows/keymaps/default/keymap.c index 1544a4fffe78..408e7125c631 100644 --- a/keyboards/helix/rev3_4rows/keymaps/default/keymap.c +++ b/keyboards/helix/rev3_4rows/keymaps/default/keymap.c @@ -178,17 +178,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -/* -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool led_update_user(led_t led_state) { - return true; -} -*/ diff --git a/keyboards/helix/rev3_4rows/keymaps/default/oled_display.c b/keyboards/helix/rev3_4rows/keymaps/default/oled_display.c new file mode 100644 index 000000000000..e951f627c838 --- /dev/null +++ b/keyboards/helix/rev3_4rows/keymaps/default/oled_display.c @@ -0,0 +1,113 @@ +/* Copyright 2020 yushakobo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _QWERTY = 0, + _LOWER, + _RAISE, + _ADJUST +}; + +#ifdef OLED_ENABLE + +void render_status(void) { + + // Render to mode icon + static const char os_logo[][2][3] PROGMEM ={{{0x95,0x96,0},{0xb5,0xb6,0}},{{0x97,0x98,0},{0xb7,0xb8,0}}}; + if (is_mac_mode()) { + oled_write_P(os_logo[0][0], false); + oled_write_P(PSTR("\n"), false); + oled_write_P(os_logo[0][1], false); + }else{ + oled_write_P(os_logo[1][0], false); + oled_write_P(PSTR("\n"), false); + oled_write_P(os_logo[1][1], false); + } + + oled_write_P(PSTR(" "), false); + + // Host Keyboard Layer Status + oled_write_P(PSTR("Layer: "), false); + + switch (get_highest_layer(layer_state)) { + case _QWERTY: + oled_write_P(PSTR("Default\n"), false); + break; + case _RAISE: + oled_write_P(PSTR("Raise\n"), false); + break; + case _LOWER: + oled_write_P(PSTR("Lower\n"), false); + break; + case _ADJUST: + oled_write_P(PSTR("Adjust\n"), false); + break; + default: + // Or use the write_ln shortcut over adding '\n' to the end of your string + oled_write_ln_P(PSTR("Undefined"), false); + } + + oled_write_P(PSTR("\n"), false); + + // Host Keyboard LED Status + led_t led_state = host_keyboard_led_state(); + oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); + oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); + oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); +} + + +static void render_logo(void) { + static const char PROGMEM qmk_logo[] = { + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00 + }; + + oled_write_P(qmk_logo, false); +} + +static void render_rgbled_status(bool full) { +#ifdef RGBLIGHT_ENABLE + char buf[30]; + if (RGBLIGHT_MODES > 1 && rgblight_is_enabled()) { + if (full) { + snprintf(buf, sizeof(buf), " LED %2d: %d,%d,%d ", + rgblight_get_mode(), + rgblight_get_hue()/RGBLIGHT_HUE_STEP, + rgblight_get_sat()/RGBLIGHT_SAT_STEP, + rgblight_get_val()/RGBLIGHT_VAL_STEP); + } else { + snprintf(buf, sizeof(buf), "[%2d] ", rgblight_get_mode()); + } + oled_write(buf, false); + } +#endif +} + +bool oled_task_user(void) { + if(is_keyboard_master()){ + render_status(); + }else{ + render_logo(); + render_rgbled_status(true); + } + return false; +} +#endif diff --git a/keyboards/helix/rev3_4rows/keymaps/via/keymap.c b/keyboards/helix/rev3_4rows/keymaps/via/keymap.c index 2cfb1152c0a6..6cc9aedb03c2 100644 --- a/keyboards/helix/rev3_4rows/keymaps/via/keymap.c +++ b/keyboards/helix/rev3_4rows/keymaps/via/keymap.c @@ -165,17 +165,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -/* -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool led_update_user(led_t led_state) { - return true; -} -*/ diff --git a/keyboards/helix/rev3_4rows/keymaps/via/oled_display.c b/keyboards/helix/rev3_4rows/keymaps/via/oled_display.c new file mode 100644 index 000000000000..e951f627c838 --- /dev/null +++ b/keyboards/helix/rev3_4rows/keymaps/via/oled_display.c @@ -0,0 +1,113 @@ +/* Copyright 2020 yushakobo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _QWERTY = 0, + _LOWER, + _RAISE, + _ADJUST +}; + +#ifdef OLED_ENABLE + +void render_status(void) { + + // Render to mode icon + static const char os_logo[][2][3] PROGMEM ={{{0x95,0x96,0},{0xb5,0xb6,0}},{{0x97,0x98,0},{0xb7,0xb8,0}}}; + if (is_mac_mode()) { + oled_write_P(os_logo[0][0], false); + oled_write_P(PSTR("\n"), false); + oled_write_P(os_logo[0][1], false); + }else{ + oled_write_P(os_logo[1][0], false); + oled_write_P(PSTR("\n"), false); + oled_write_P(os_logo[1][1], false); + } + + oled_write_P(PSTR(" "), false); + + // Host Keyboard Layer Status + oled_write_P(PSTR("Layer: "), false); + + switch (get_highest_layer(layer_state)) { + case _QWERTY: + oled_write_P(PSTR("Default\n"), false); + break; + case _RAISE: + oled_write_P(PSTR("Raise\n"), false); + break; + case _LOWER: + oled_write_P(PSTR("Lower\n"), false); + break; + case _ADJUST: + oled_write_P(PSTR("Adjust\n"), false); + break; + default: + // Or use the write_ln shortcut over adding '\n' to the end of your string + oled_write_ln_P(PSTR("Undefined"), false); + } + + oled_write_P(PSTR("\n"), false); + + // Host Keyboard LED Status + led_t led_state = host_keyboard_led_state(); + oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); + oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); + oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); +} + + +static void render_logo(void) { + static const char PROGMEM qmk_logo[] = { + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00 + }; + + oled_write_P(qmk_logo, false); +} + +static void render_rgbled_status(bool full) { +#ifdef RGBLIGHT_ENABLE + char buf[30]; + if (RGBLIGHT_MODES > 1 && rgblight_is_enabled()) { + if (full) { + snprintf(buf, sizeof(buf), " LED %2d: %d,%d,%d ", + rgblight_get_mode(), + rgblight_get_hue()/RGBLIGHT_HUE_STEP, + rgblight_get_sat()/RGBLIGHT_SAT_STEP, + rgblight_get_val()/RGBLIGHT_VAL_STEP); + } else { + snprintf(buf, sizeof(buf), "[%2d] ", rgblight_get_mode()); + } + oled_write(buf, false); + } +#endif +} + +bool oled_task_user(void) { + if(is_keyboard_master()){ + render_status(); + }else{ + render_logo(); + render_rgbled_status(true); + } + return false; +} +#endif diff --git a/keyboards/helix/rev3_4rows/oled_display.c b/keyboards/helix/rev3_4rows/oled_display.c index 7716a172c93a..36bf63cb6063 100644 --- a/keyboards/helix/rev3_4rows/oled_display.c +++ b/keyboards/helix/rev3_4rows/oled_display.c @@ -1,123 +1,9 @@ -/* Copyright 2020 yushakobo - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - /* - How to Customize - - $ make helix/rev3_4rows:YOUR_KEYMAP:clean - $ cp keyboards/helix/rev3_4rows/oled_display.c keyboards/helix/rev3_4rows/keymaps/YOUR_KEYMAP - - $ edit keyboards/helix/rev3_4rows/keymaps/YOUR_KEYMAP/oled_display.c - $ make helix/rev3_4rows:YOUR_KEYMAP - $ make helix/rev3_4rows:YOUR_KEYMAP:flash - */ - -#include QMK_KEYBOARD_H - -// Defines names for use in layer keycodes and the keymap -enum layer_names { - _QWERTY = 0, - _LOWER, - _RAISE, - _ADJUST -}; - -#ifdef OLED_DRIVER_ENABLE - -void render_status(void) { - - // Render to mode icon - static const char os_logo[][2][3] PROGMEM ={{{0x95,0x96,0},{0xb5,0xb6,0}},{{0x97,0x98,0},{0xb7,0xb8,0}}}; - if (is_mac_mode()) { - oled_write_P(os_logo[0][0], false); - oled_write_P(PSTR("\n"), false); - oled_write_P(os_logo[0][1], false); - }else{ - oled_write_P(os_logo[1][0], false); - oled_write_P(PSTR("\n"), false); - oled_write_P(os_logo[1][1], false); - } - - oled_write_P(PSTR(" "), false); - - // Host Keyboard Layer Status - oled_write_P(PSTR("Layer: "), false); - - switch (get_highest_layer(layer_state)) { - case _QWERTY: - oled_write_P(PSTR("Default\n"), false); - break; - case _RAISE: - oled_write_P(PSTR("Raise\n"), false); - break; - case _LOWER: - oled_write_P(PSTR("Lower\n"), false); - break; - case _ADJUST: - oled_write_P(PSTR("Adjust\n"), false); - break; - default: - // Or use the write_ln shortcut over adding '\n' to the end of your string - oled_write_ln_P(PSTR("Undefined"), false); - } - - oled_write_P(PSTR("\n"), false); - - // Host Keyboard LED Status - led_t led_state = host_keyboard_led_state(); - oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); - oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); - oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); -} - - -static void render_logo(void) { - static const char PROGMEM qmk_logo[] = { - 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, - 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, - 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00 - }; - oled_write_P(qmk_logo, false); -} + There are several ways to create your own keymap oled code: -static void render_rgbled_status(bool full) { -#ifdef RGBLIGHT_ENABLE - char buf[30]; - if (RGBLIGHT_MODES > 1 && rgblight_is_enabled()) { - if (full) { - snprintf(buf, sizeof(buf), " LED %2d: %d,%d,%d ", - rgblight_get_mode(), - rgblight_get_hue()/RGBLIGHT_HUE_STEP, - rgblight_get_sat()/RGBLIGHT_SAT_STEP, - rgblight_get_val()/RGBLIGHT_VAL_STEP); - } else { - snprintf(buf, sizeof(buf), "[%2d] ", rgblight_get_mode()); - } - oled_write(buf, false); - } -#endif -} + * Add the oled code to your keymaps//keymap.c. + * Create a new file in your keymaps// directory, add the oled code, and add `SRC + = ` to keymaps//rules.mk. + * Copy keymaps/default/oled_display.c to your keymaps// directory and modify it. -void oled_task_user(void) { - if(is_keyboard_master()){ - render_status(); - }else{ - render_logo(); - render_rgbled_status(true); - } -} -#endif +*/ diff --git a/keyboards/helix/rev3_4rows/rev3_4rows.c b/keyboards/helix/rev3_4rows/rev3_4rows.c index c034c833819e..704f91551096 100644 --- a/keyboards/helix/rev3_4rows/rev3_4rows.c +++ b/keyboards/helix/rev3_4rows/rev3_4rows.c @@ -30,7 +30,8 @@ void set_mac_mode(bool macmode) { eeconfig_update_keymap(keymap_config.raw); } -void dip_switch_update_kb(uint8_t index, bool active) { +#ifdef DIP_SWITCH_ENABLE +bool dip_switch_update_kb(uint8_t index, bool active) { switch (index) { case 0: if(active) { // Left no.1 Helix rev3 common @@ -43,4 +44,71 @@ void dip_switch_update_kb(uint8_t index, bool active) { dip_switch_update_user(index, active); break; } + return true; } +#endif + +#ifdef OLED_ENABLE +static char *sprint_decimal(char *buf, int data) { + if (data > 9) { + buf = sprint_decimal(buf, data/10); + } + *buf++ = "0123456789"[data%10]; + *buf = '\0'; + return buf; +} + +char *sprints(char *buf, char *src) { + while (*src) { + *buf++ = *src++; + } + *buf = '\0'; + return buf; +} + +char *sprintd(char *buf, char *leadstr, int data) { + buf = sprints(buf, leadstr); + buf = sprint_decimal(buf, data); + return buf; +} + +char *sprint2d(char *buf, char *leadstr, int data) { + buf = sprints(buf, leadstr); + if (data > 99) { + return sprint_decimal(buf, data); + } + if (data < 10) { + *buf++ = ' '; + } + return sprint_decimal(buf, data); +} + +bool oled_task_kb(void) { + if (!oled_task_user()) { return false; } + static const char PROGMEM helix_logo[] = { + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, + 0x0 + }; + static const char os_logo[][2][3] PROGMEM ={{{0x95,0x96,0},{0xb5,0xb6,0}},{{0x97,0x98,0},{0xb7,0xb8,0}}}; + + if (is_keyboard_master()) { + if (is_mac_mode()) { + oled_write_P(os_logo[0][0], false); + oled_write_P(PSTR("\n"), false); + oled_write_P(os_logo[0][1], false); + }else{ + oled_write_P(os_logo[1][0], false); + oled_write_P(PSTR("\n"), false); + oled_write_P(os_logo[1][1], false); + } + char buf[20]; + sprint2d(buf, " Layer: ", get_highest_layer(layer_state)); + oled_write(buf, false); + } else { + oled_write_P(helix_logo, false); + } + return false; +} +#endif diff --git a/keyboards/helix/rev3_4rows/rules.mk b/keyboards/helix/rev3_4rows/rules.mk index a5916c114d85..f29deaf586b7 100644 --- a/keyboards/helix/rev3_4rows/rules.mk +++ b/keyboards/helix/rev3_4rows/rules.mk @@ -3,9 +3,10 @@ RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow SPLIT_KEYBOARD = yes RGB_MATRIX_ENABLE = no RGB_MATRIX_DRIVER = WS2812 -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 ENCODER_ENABLE = yes -DIP_SWITCH_ENABLE = yes +DIP_SWITCH_ENABLE = no LTO_ENABLE = yes SRC += oled_display.c diff --git a/keyboards/helix/rev3_5rows/config.h b/keyboards/helix/rev3_5rows/config.h index 4dda76206be2..79c7961ed9fc 100644 --- a/keyboards/helix/rev3_5rows/config.h +++ b/keyboards/helix/rev3_5rows/config.h @@ -68,7 +68,7 @@ along with this program. If not, see . # define RGB_MATRIX_KEYPRESSES // reacts to keypresses // # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses) // # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended # define RGB_MATRIX_FRAMEBUFFER_EFFECTS // # define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness) // # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness) @@ -145,59 +145,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -218,26 +165,6 @@ along with this program. If not, see . #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/helix/rev3_5rows/info.json b/keyboards/helix/rev3_5rows/info.json index 14a619944275..5a1e35d8b291 100644 --- a/keyboards/helix/rev3_5rows/info.json +++ b/keyboards/helix/rev3_5rows/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Helix rev3 5rows", "url": "", "maintainer": "yushakobo", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/helix/rev3_5rows/keymaps/default/keymap.c b/keyboards/helix/rev3_5rows/keymaps/default/keymap.c index 6dde7fed5237..09132f75e1d5 100644 --- a/keyboards/helix/rev3_5rows/keymaps/default/keymap.c +++ b/keyboards/helix/rev3_5rows/keymaps/default/keymap.c @@ -188,17 +188,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -/* -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool led_update_user(led_t led_state) { - return true; -} -*/ diff --git a/keyboards/helix/rev3_5rows/keymaps/default/oled_display.c b/keyboards/helix/rev3_5rows/keymaps/default/oled_display.c new file mode 100644 index 000000000000..e951f627c838 --- /dev/null +++ b/keyboards/helix/rev3_5rows/keymaps/default/oled_display.c @@ -0,0 +1,113 @@ +/* Copyright 2020 yushakobo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _QWERTY = 0, + _LOWER, + _RAISE, + _ADJUST +}; + +#ifdef OLED_ENABLE + +void render_status(void) { + + // Render to mode icon + static const char os_logo[][2][3] PROGMEM ={{{0x95,0x96,0},{0xb5,0xb6,0}},{{0x97,0x98,0},{0xb7,0xb8,0}}}; + if (is_mac_mode()) { + oled_write_P(os_logo[0][0], false); + oled_write_P(PSTR("\n"), false); + oled_write_P(os_logo[0][1], false); + }else{ + oled_write_P(os_logo[1][0], false); + oled_write_P(PSTR("\n"), false); + oled_write_P(os_logo[1][1], false); + } + + oled_write_P(PSTR(" "), false); + + // Host Keyboard Layer Status + oled_write_P(PSTR("Layer: "), false); + + switch (get_highest_layer(layer_state)) { + case _QWERTY: + oled_write_P(PSTR("Default\n"), false); + break; + case _RAISE: + oled_write_P(PSTR("Raise\n"), false); + break; + case _LOWER: + oled_write_P(PSTR("Lower\n"), false); + break; + case _ADJUST: + oled_write_P(PSTR("Adjust\n"), false); + break; + default: + // Or use the write_ln shortcut over adding '\n' to the end of your string + oled_write_ln_P(PSTR("Undefined"), false); + } + + oled_write_P(PSTR("\n"), false); + + // Host Keyboard LED Status + led_t led_state = host_keyboard_led_state(); + oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); + oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); + oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); +} + + +static void render_logo(void) { + static const char PROGMEM qmk_logo[] = { + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00 + }; + + oled_write_P(qmk_logo, false); +} + +static void render_rgbled_status(bool full) { +#ifdef RGBLIGHT_ENABLE + char buf[30]; + if (RGBLIGHT_MODES > 1 && rgblight_is_enabled()) { + if (full) { + snprintf(buf, sizeof(buf), " LED %2d: %d,%d,%d ", + rgblight_get_mode(), + rgblight_get_hue()/RGBLIGHT_HUE_STEP, + rgblight_get_sat()/RGBLIGHT_SAT_STEP, + rgblight_get_val()/RGBLIGHT_VAL_STEP); + } else { + snprintf(buf, sizeof(buf), "[%2d] ", rgblight_get_mode()); + } + oled_write(buf, false); + } +#endif +} + +bool oled_task_user(void) { + if(is_keyboard_master()){ + render_status(); + }else{ + render_logo(); + render_rgbled_status(true); + } + return false; +} +#endif diff --git a/keyboards/helix/rev3_5rows/keymaps/five_rows/config.h b/keyboards/helix/rev3_5rows/keymaps/five_rows/config.h index b9961f5c48fe..e1c124f419c8 100644 --- a/keyboards/helix/rev3_5rows/keymaps/five_rows/config.h +++ b/keyboards/helix/rev3_5rows/keymaps/five_rows/config.h @@ -29,7 +29,11 @@ along with this program. If not, see . see tmk_core/common/action_tapping.c */ #undef OLED_UPDATE_INTERVAL -#define OLED_UPDATE_INTERVAL 50 +#ifdef DEBUG_MATRIX_SCAN_RATE +# define OLED_UPDATE_INTERVAL 500 +#else +# define OLED_UPDATE_INTERVAL 50 +#endif // place overrides here diff --git a/keyboards/helix/rev3_5rows/keymaps/five_rows/matrix_output_unselect_delay.c b/keyboards/helix/rev3_5rows/keymaps/five_rows/matrix_output_unselect_delay.c new file mode 100644 index 000000000000..a093afe0a4a4 --- /dev/null +++ b/keyboards/helix/rev3_5rows/keymaps/five_rows/matrix_output_unselect_delay.c @@ -0,0 +1,31 @@ +/* Copyright 2021 mtei + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +void matrix_output_unselect_delay(uint8_t line, bool key_pressed) { + /* If none of the keys are pressed, + * there is no need to wait for time for the next line. */ + if (key_pressed) { +# ifdef MATRIX_IO_DELAY +# if MATRIX_IO_DELAY > 0 + wait_us(MATRIX_IO_DELAY); +# endif +# else + wait_us(30); +# endif + } +} diff --git a/keyboards/helix/rev3_5rows/keymaps/five_rows/oled_display.c b/keyboards/helix/rev3_5rows/keymaps/five_rows/oled_display.c index 689efe4c88fc..cee415ad30b8 100644 --- a/keyboards/helix/rev3_5rows/keymaps/five_rows/oled_display.c +++ b/keyboards/helix/rev3_5rows/keymaps/five_rows/oled_display.c @@ -25,6 +25,10 @@ #include #include "layer_number.h" +char *sprints(char *buf, char *src); +char *sprintd(char *buf, char *leadstr, int data); +char *sprint2d(char *buf, char *leadstr, int data); + extern int current_default_layer; void init_helix_oled(void) { @@ -35,9 +39,9 @@ void init_helix_oled(void) { } //SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h -#if defined(SSD1306OLED) || defined(OLED_DRIVER_ENABLE) +#if defined(SSD1306OLED) || defined(OLED_ENABLE) -# if defined(OLED_DRIVER_ENABLE) +# if defined(OLED_ENABLE) oled_rotation_t oled_init_user(oled_rotation_t rotation) { if (is_keyboard_master()) { return OLED_ROTATION_0; @@ -76,20 +80,35 @@ static void render_logo(void) { 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4, 0}; oled_write_P(helix_logo, false); -# ifdef RGBLIGHT_ENABLE char buf[30]; + char *bufp; +# ifdef RGBLIGHT_ENABLE if (RGBLIGHT_MODES > 1 && rgblight_is_enabled()) { - snprintf(buf, sizeof(buf), " LED %2d: %d,%d,%d ", - rgblight_get_mode(), - rgblight_get_hue()/RGBLIGHT_HUE_STEP, - rgblight_get_sat()/RGBLIGHT_SAT_STEP, - rgblight_get_val()/RGBLIGHT_VAL_STEP); + bufp = sprint2d(buf, " LED ", rgblight_get_mode()); +# ifdef DEBUG_MATRIX_SCAN_RATE + bufp = sprintd(bufp, " scan:", get_matrix_scan_rate()); +# else + bufp = sprintd(bufp, ": ", rgblight_get_hue()/RGBLIGHT_HUE_STEP); + bufp = sprintd(bufp, ",", rgblight_get_sat()/RGBLIGHT_SAT_STEP); + bufp = sprintd(bufp, ",", rgblight_get_val()/RGBLIGHT_VAL_STEP); + bufp = sprints(bufp, " "); +# endif oled_write(buf, false); # ifndef SSD1306OLED } else { +# ifdef DEBUG_MATRIX_SCAN_RATE + bufp = sprintd(buf, " scan:", get_matrix_scan_rate()); + oled_write(buf, false); +# endif oled_write_P( PSTR("\n"), false); # endif } +# else +# ifdef DEBUG_MATRIX_SCAN_RATE + bufp = sprintd(buf, " scan:", get_matrix_scan_rate()); + bufp = sprints(bufp, " "); + oled_write(buf, false); +# endif # endif } @@ -142,6 +161,11 @@ void render_status(void) { int name_num; uint32_t lstate; oled_write_P(layer_names[current_default_layer], false); +# ifdef DEBUG_MATRIX_SCAN_RATE + char buf[16]; + sprintd(buf, " scan:", get_matrix_scan_rate()); + oled_write(buf, false); +# endif oled_write_P(PSTR("\n"), false); for (lstate = layer_state, name_num = 0; lstate && name_num < sizeof(layer_names)/sizeof(char *); @@ -152,14 +176,13 @@ void render_status(void) { } } } + oled_write_P(PSTR("\n"), false); // Host Keyboard LED Status - char led[40]; - snprintf(led, sizeof(led), "\n%s %s %s", - (host_keyboard_leds() & (1<. + */ + +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _QWERTY = 0, + _LOWER, + _RAISE, + _ADJUST +}; + +#ifdef OLED_ENABLE + +void render_status(void) { + + // Render to mode icon + static const char os_logo[][2][3] PROGMEM ={{{0x95,0x96,0},{0xb5,0xb6,0}},{{0x97,0x98,0},{0xb7,0xb8,0}}}; + if (is_mac_mode()) { + oled_write_P(os_logo[0][0], false); + oled_write_P(PSTR("\n"), false); + oled_write_P(os_logo[0][1], false); + }else{ + oled_write_P(os_logo[1][0], false); + oled_write_P(PSTR("\n"), false); + oled_write_P(os_logo[1][1], false); + } + + oled_write_P(PSTR(" "), false); + + // Host Keyboard Layer Status + oled_write_P(PSTR("Layer: "), false); + + switch (get_highest_layer(layer_state)) { + case _QWERTY: + oled_write_P(PSTR("Default\n"), false); + break; + case _RAISE: + oled_write_P(PSTR("Raise\n"), false); + break; + case _LOWER: + oled_write_P(PSTR("Lower\n"), false); + break; + case _ADJUST: + oled_write_P(PSTR("Adjust\n"), false); + break; + default: + // Or use the write_ln shortcut over adding '\n' to the end of your string + oled_write_ln_P(PSTR("Undefined"), false); + } + + oled_write_P(PSTR("\n"), false); + + // Host Keyboard LED Status + led_t led_state = host_keyboard_led_state(); + oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); + oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); + oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); +} + + +static void render_logo(void) { + static const char PROGMEM qmk_logo[] = { + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00 + }; + + oled_write_P(qmk_logo, false); +} + +static void render_rgbled_status(bool full) { +#ifdef RGBLIGHT_ENABLE + char buf[30]; + if (RGBLIGHT_MODES > 1 && rgblight_is_enabled()) { + if (full) { + snprintf(buf, sizeof(buf), " LED %2d: %d,%d,%d ", + rgblight_get_mode(), + rgblight_get_hue()/RGBLIGHT_HUE_STEP, + rgblight_get_sat()/RGBLIGHT_SAT_STEP, + rgblight_get_val()/RGBLIGHT_VAL_STEP); + } else { + snprintf(buf, sizeof(buf), "[%2d] ", rgblight_get_mode()); + } + oled_write(buf, false); + } +#endif +} + +bool oled_task_user(void) { + if(is_keyboard_master()){ + render_status(); + }else{ + render_logo(); + render_rgbled_status(true); + } + return false; +} +#endif diff --git a/keyboards/helix/rev3_5rows/oled_display.c b/keyboards/helix/rev3_5rows/oled_display.c index ffe8b594b3b2..36bf63cb6063 100644 --- a/keyboards/helix/rev3_5rows/oled_display.c +++ b/keyboards/helix/rev3_5rows/oled_display.c @@ -1,123 +1,9 @@ -/* Copyright 2020 yushakobo - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ +/* - /* - How to Customize + There are several ways to create your own keymap oled code: - $ make helix/rev3_5rows:YOUR_KEYMAP:clean - $ cp keyboards/helix/rev3_5rows/oled_display.c keyboards/helix/rev3_5rows/keymaps/YOUR_KEYMAP + * Add the oled code to your keymaps//keymap.c. + * Create a new file in your keymaps// directory, add the oled code, and add `SRC + = ` to keymaps//rules.mk. + * Copy keymaps/default/oled_display.c to your keymaps// directory and modify it. - $ edit keyboards/helix/rev3_5rows/keymaps/YOUR_KEYMAP/oled_display.c - $ make helix/rev3_5rows:YOUR_KEYMAP - $ make helix/rev3_5rows:YOUR_KEYMAP:flash - */ - -#include QMK_KEYBOARD_H - -// Defines names for use in layer keycodes and the keymap -enum layer_names { - _QWERTY = 0, - _LOWER, - _RAISE, - _ADJUST -}; - -#ifdef OLED_DRIVER_ENABLE - -void render_status(void) { - - // Render to mode icon - static const char os_logo[][2][3] PROGMEM ={{{0x95,0x96,0},{0xb5,0xb6,0}},{{0x97,0x98,0},{0xb7,0xb8,0}}}; - if (is_mac_mode()) { - oled_write_P(os_logo[0][0], false); - oled_write_P(PSTR("\n"), false); - oled_write_P(os_logo[0][1], false); - }else{ - oled_write_P(os_logo[1][0], false); - oled_write_P(PSTR("\n"), false); - oled_write_P(os_logo[1][1], false); - } - - oled_write_P(PSTR(" "), false); - - // Host Keyboard Layer Status - oled_write_P(PSTR("Layer: "), false); - - switch (get_highest_layer(layer_state)) { - case _QWERTY: - oled_write_P(PSTR("Default\n"), false); - break; - case _RAISE: - oled_write_P(PSTR("Raise\n"), false); - break; - case _LOWER: - oled_write_P(PSTR("Lower\n"), false); - break; - case _ADJUST: - oled_write_P(PSTR("Adjust\n"), false); - break; - default: - // Or use the write_ln shortcut over adding '\n' to the end of your string - oled_write_ln_P(PSTR("Undefined"), false); - } - - oled_write_P(PSTR("\n"), false); - - // Host Keyboard LED Status - led_t led_state = host_keyboard_led_state(); - oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); - oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); - oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); -} - - -static void render_logo(void) { - static const char PROGMEM qmk_logo[] = { - 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, - 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, - 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00 - }; - - oled_write_P(qmk_logo, false); -} - -static void render_rgbled_status(bool full) { -#ifdef RGBLIGHT_ENABLE - char buf[30]; - if (RGBLIGHT_MODES > 1 && rgblight_is_enabled()) { - if (full) { - snprintf(buf, sizeof(buf), " LED %2d: %d,%d,%d ", - rgblight_get_mode(), - rgblight_get_hue()/RGBLIGHT_HUE_STEP, - rgblight_get_sat()/RGBLIGHT_SAT_STEP, - rgblight_get_val()/RGBLIGHT_VAL_STEP); - } else { - snprintf(buf, sizeof(buf), "[%2d] ", rgblight_get_mode()); - } - oled_write(buf, false); - } -#endif -} - -void oled_task_user(void) { - if(is_keyboard_master()){ - render_status(); - }else{ - render_logo(); - render_rgbled_status(true); - } -} -#endif +*/ diff --git a/keyboards/helix/rev3_5rows/rev3_5rows.c b/keyboards/helix/rev3_5rows/rev3_5rows.c index c034c833819e..704f91551096 100644 --- a/keyboards/helix/rev3_5rows/rev3_5rows.c +++ b/keyboards/helix/rev3_5rows/rev3_5rows.c @@ -30,7 +30,8 @@ void set_mac_mode(bool macmode) { eeconfig_update_keymap(keymap_config.raw); } -void dip_switch_update_kb(uint8_t index, bool active) { +#ifdef DIP_SWITCH_ENABLE +bool dip_switch_update_kb(uint8_t index, bool active) { switch (index) { case 0: if(active) { // Left no.1 Helix rev3 common @@ -43,4 +44,71 @@ void dip_switch_update_kb(uint8_t index, bool active) { dip_switch_update_user(index, active); break; } + return true; } +#endif + +#ifdef OLED_ENABLE +static char *sprint_decimal(char *buf, int data) { + if (data > 9) { + buf = sprint_decimal(buf, data/10); + } + *buf++ = "0123456789"[data%10]; + *buf = '\0'; + return buf; +} + +char *sprints(char *buf, char *src) { + while (*src) { + *buf++ = *src++; + } + *buf = '\0'; + return buf; +} + +char *sprintd(char *buf, char *leadstr, int data) { + buf = sprints(buf, leadstr); + buf = sprint_decimal(buf, data); + return buf; +} + +char *sprint2d(char *buf, char *leadstr, int data) { + buf = sprints(buf, leadstr); + if (data > 99) { + return sprint_decimal(buf, data); + } + if (data < 10) { + *buf++ = ' '; + } + return sprint_decimal(buf, data); +} + +bool oled_task_kb(void) { + if (!oled_task_user()) { return false; } + static const char PROGMEM helix_logo[] = { + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, + 0x0 + }; + static const char os_logo[][2][3] PROGMEM ={{{0x95,0x96,0},{0xb5,0xb6,0}},{{0x97,0x98,0},{0xb7,0xb8,0}}}; + + if (is_keyboard_master()) { + if (is_mac_mode()) { + oled_write_P(os_logo[0][0], false); + oled_write_P(PSTR("\n"), false); + oled_write_P(os_logo[0][1], false); + }else{ + oled_write_P(os_logo[1][0], false); + oled_write_P(PSTR("\n"), false); + oled_write_P(os_logo[1][1], false); + } + char buf[20]; + sprint2d(buf, " Layer: ", get_highest_layer(layer_state)); + oled_write(buf, false); + } else { + oled_write_P(helix_logo, false); + } + return false; +} +#endif diff --git a/keyboards/helix/rev3_5rows/rules.mk b/keyboards/helix/rev3_5rows/rules.mk index a5916c114d85..f29deaf586b7 100644 --- a/keyboards/helix/rev3_5rows/rules.mk +++ b/keyboards/helix/rev3_5rows/rules.mk @@ -3,9 +3,10 @@ RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow SPLIT_KEYBOARD = yes RGB_MATRIX_ENABLE = no RGB_MATRIX_DRIVER = WS2812 -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 ENCODER_ENABLE = yes -DIP_SWITCH_ENABLE = yes +DIP_SWITCH_ENABLE = no LTO_ENABLE = yes SRC += oled_display.c diff --git a/keyboards/helix/rules.mk b/keyboards/helix/rules.mk index 54a4d774fd51..1ba570e55232 100644 --- a/keyboards/helix/rules.mk +++ b/keyboards/helix/rules.mk @@ -2,13 +2,6 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # QMK Standard Build Options @@ -17,20 +10,15 @@ BOOTLOADER = caterina # # See TOP/docs/config_options.md for more information. # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend DEFAULT_FOLDER = helix/rev2 diff --git a/keyboards/hhkb/ansi/info.json b/keyboards/hhkb/ansi/info.json index a36f1d44c82f..d2a6e42318b3 100644 --- a/keyboards/hhkb/ansi/info.json +++ b/keyboards/hhkb/ansi/info.json @@ -2,8 +2,6 @@ "keyboard_name": "HHKB", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/hhkb/ansi/keymaps/cinaeco/rules.mk b/keyboards/hhkb/ansi/keymaps/cinaeco/rules.mk index a85669aa2f29..4e4deffa1223 100644 --- a/keyboards/hhkb/ansi/keymaps/cinaeco/rules.mk +++ b/keyboards/hhkb/ansi/keymaps/cinaeco/rules.mk @@ -4,7 +4,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/hhkb/ansi/keymaps/shela/keymap_jis2us.h b/keyboards/hhkb/ansi/keymaps/shela/keymap_jis2us.h index 916a403eb60e..0b811fd03ae2 100644 --- a/keyboards/hhkb/ansi/keymaps/shela/keymap_jis2us.h +++ b/keyboards/hhkb/ansi/keymaps/shela/keymap_jis2us.h @@ -40,10 +40,10 @@ const uint16_t PROGMEM keymap_jis2us[][2] = { [KC_BSLS] = { JP_YEN, JP_PIPE }, /* ] and } -> \ and | */ [KC_NUHS] = { JP_YEN, JP_PIPE }, /* ] and } -> \ and | */ [KC_SCLN] = { JP_SCLN, JP_COLN }, /* ; and + -> ; and : */ - [KC_QUOT] = { JP_QUOT, JP_DQT }, /* : and * -> ' and " */ + [KC_QUOT] = { JP_QUOT, JP_DQUO }, /* : and * -> ' and " */ [KC_GRV] = { JP_GRV, JP_TILD }, /* Han/Zen -> ` and ~ */ - [KC_COMM] = { JP_COMM, JP_LT }, /* , and < -> , and < */ - [KC_DOT] = { JP_DOT, JP_GT }, /* . and > -> . and > */ + [KC_COMM] = { JP_COMM, JP_LABK }, /* , and < -> , and < */ + [KC_DOT] = { JP_DOT, JP_RABK }, /* . and > -> . and > */ [KC_SLSH] = { JP_SLSH, JP_QUES }, /* / and ? -> / and ? */ }; // clang-format on diff --git a/keyboards/hhkb/ansi/matrix.c b/keyboards/hhkb/ansi/matrix.c index 879eb337cfaa..529ba8b8fc9f 100644 --- a/keyboards/hhkb/ansi/matrix.c +++ b/keyboards/hhkb/ansi/matrix.c @@ -26,6 +26,7 @@ along with this program. If not, see . #include "util.h" #include "timer.h" #include "matrix.h" +#include "avr/timer_avr.h" #include "hhkb_avr.h" #include #include "suspend.h" diff --git a/keyboards/hhkb/ansi/post_rules.mk b/keyboards/hhkb/ansi/post_rules.mk new file mode 100644 index 000000000000..bc6ad5cd4cb9 --- /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 3ff7170e0d2e..a7b43baad929 100644 --- a/keyboards/hhkb/ansi/rules.mk +++ b/keyboards/hhkb/ansi/rules.mk @@ -2,32 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration CUSTOM_MATRIX = yes # Custom matrix file for the HHKB -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -# SLEEP_LED_ENABLE = yes # 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 = yes # Enable keyboard backlight functionality -# MIDI_ENABLE = yes # MIDI controls -# UNICODE_ENABLE = yes # Unicode -# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID - # HHKB_RN42_ENABLE = yes # Enable support for hasu's BT alt controller -- code borrowed from tmk source tree. @@ -41,26 +28,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/info.json b/keyboards/hhkb/jp/info.json index 7594987d96c3..b9064880dde8 100644 --- a/keyboards/hhkb/jp/info.json +++ b/keyboards/hhkb/jp/info.json @@ -2,8 +2,6 @@ "keyboard_name": "HHKB JP", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_JP": { "layout": [ diff --git a/keyboards/hhkb/jp/matrix.c b/keyboards/hhkb/jp/matrix.c index fed2b3c3a92e..c0dca6a990b4 100644 --- a/keyboards/hhkb/jp/matrix.c +++ b/keyboards/hhkb/jp/matrix.c @@ -26,6 +26,7 @@ along with this program. If not, see . #include "util.h" #include "timer.h" #include "matrix.h" +#include "avr/timer_avr.h" #include "hhkb_avr.h" #include #include "suspend.h" diff --git a/keyboards/hhkb/jp/post_rules.mk b/keyboards/hhkb/jp/post_rules.mk new file mode 100644 index 000000000000..bc6ad5cd4cb9 --- /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 f1294ed611b4..f7df5ba65bcf 100644 --- a/keyboards/hhkb/jp/rules.mk +++ b/keyboards/hhkb/jp/rules.mk @@ -2,32 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration CUSTOM_MATRIX = yes # Custom matrix file for the HHKB -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -# SLEEP_LED_ENABLE = yes # 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 = yes # Enable keyboard backlight functionality -# MIDI_ENABLE = yes # MIDI controls -# UNICODE_ENABLE = yes # Unicode -# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID - # HHKB_RN42_ENABLE = yes # Enable support for hasu's BT alt controller -- code borrowed from tmk source tree. @@ -41,26 +28,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 180d4dcfaaaa..c7f96d09a3f0 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 #include @@ -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 dee214cc8422..76bcef99bb35 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 #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 ee00669ee590..05e80e9be2ba 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 #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/hhkb_lite_2/info.json b/keyboards/hhkb_lite_2/info.json index c1c50583c5d8..0793adafd1d8 100644 --- a/keyboards/hhkb_lite_2/info.json +++ b/keyboards/hhkb_lite_2/info.json @@ -2,8 +2,6 @@ "keyboard_name": "HHKB Lite 2", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5.75, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/hhkb_lite_2/rules.mk b/keyboards/hhkb_lite_2/rules.mk index aa224ffe40c6..f91d3851025d 100644 --- a/keyboards/hhkb_lite_2/rules.mk +++ b/keyboards/hhkb_lite_2/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = halfkay # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output UNICODE_ENABLE = yes diff --git a/keyboards/hid_liber/config.h b/keyboards/hid_liber/config.h index e0f92dee8427..1664b9e31469 100755 --- a/keyboards/hid_liber/config.h +++ b/keyboards/hid_liber/config.h @@ -15,8 +15,7 @@ * along with this program. If not, see . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -74,54 +73,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -139,25 +90,3 @@ //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - -#endif diff --git a/keyboards/hid_liber/info.json b/keyboards/hid_liber/info.json index 581ac55a2c81..9399b276c5b9 100644 --- a/keyboards/hid_liber/info.json +++ b/keyboards/hid_liber/info.json @@ -2,8 +2,6 @@ "keyboard_name": "bpiphany HIDLiberation", "url": "", "maintainer": "qmk", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/hid_liber/keymaps/bakageta/rules.mk b/keyboards/hid_liber/keymaps/bakageta/rules.mk index 1697e07c565a..b1530f614f14 100755 --- a/keyboards/hid_liber/keymaps/bakageta/rules.mk +++ b/keyboards/hid_liber/keymaps/bakageta/rules.mk @@ -18,7 +18,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = yes # Console for debug(+400) diff --git a/keyboards/hid_liber/rules.mk b/keyboards/hid_liber/rules.mk index ea64be00da07..6097918876da 100755 --- a/keyboards/hid_liber/rules.mk +++ b/keyboards/hid_liber/rules.mk @@ -2,34 +2,22 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration CUSTOM_MATRIX = yes # Custom matrix file -# 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 WS2812 RGB underlight. Do not enable this with audio at the same time. -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output # Project specific files SRC = matrix.c diff --git a/keyboards/hidtech/bastyl/info.json b/keyboards/hidtech/bastyl/info.json index e8115794e1c1..5730cf5af2d4 100644 --- a/keyboards/hidtech/bastyl/info.json +++ b/keyboards/hidtech/bastyl/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Bastyl", "url": "https://www.hidtech.ca/?product=bastyl-black", "maintainer": "HID-Technologies", - "width": 17, - "height": 8, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/hidtech/bastyl/keymaps/nstickney/keymap.c b/keyboards/hidtech/bastyl/keymaps/nstickney/keymap.c new file mode 100644 index 000000000000..507dd0b151d9 --- /dev/null +++ b/keyboards/hidtech/bastyl/keymaps/nstickney/keymap.c @@ -0,0 +1,70 @@ +/* + * Copyright 2020 Quentin LEBASTARD + * Copyright 2020 Anthony MARIN + * Copyright 2021 Stick + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "nstickney.h" +#include "unicodemap.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [BASE] = LAYOUT(KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + //-------------------------------// + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, + //-------------------------------// + CC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, CC_QUOT, + //-------------------------------// + KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, + //-------------------------------// + AC_SLSH, FC_BSLS, KC_SPC, KC_ENT, FC_MINS, AC_EQL, + //-------------------------------// + KC_LBRC, TD(LOCKS), TD(LAYERS), KC_RBRC), + + [SYMB] = LAYOUT(_______, XP(IEX, SS1), X(SS2), X(SS3), XP(CUR, GBP), X(EUR), X(V14), X(V12), X(V34), XP(LSQ, LDQ), XP(RSQ, RDQ), _______, + //-------------------------------// + _______, XP(A_D, AXD), XP(A_R, ACR), XP(E_A, ECA), XP(REG, CPL), X(THR), XP(U_D, UCD), XP(U_A, UCA), XP(I_A, ICA), XP(O_A, OCA), XP(O_D, OCD), _______, + //-------------------------------// + _______, XP(A_A, ACA), XP(S_S, SEC), XP(ETH, ETC), X(EMD), _______, _______, _______, _______, XP(O_S, OCS), XP(PLC, DEG), XP(ACT, DIS), + //-------------------------------// + _______, XP(AEL, AEC), _______, XP(CPR, CNT), _______, _______, _______, _______, XP(N_T, NCT), X(MCR), XP(C_C, CCC), _______, + //-------------------------------// + X(IQM), XP(NOT, BKB), _______, _______, X(YEN), XP(MLT, DIV), + //-------------------------------// + _______, _______, _______, _______), + + [NUMP] = LAYOUT(_______, _______, KC_P7, KC_P8, KC_P9, KC_PSLS, _______, KC_P7, KC_P8, KC_P9, KC_PSLS, _______, + //-------------------------------// + _______, _______, KC_P4, KC_P5, KC_P6, KC_PAST, _______, KC_P4, KC_P5, KC_P6, KC_PAST, _______, + //-------------------------------// + _______, _______, KC_P1, KC_P2, KC_P3, KC_PMNS, _______, KC_P1, KC_P2, KC_P3, KC_PMNS, _______, + //-------------------------------// + _______, _______, KC_P0, KC_PCMM, KC_PDOT, KC_PPLS, _______, KC_P0, KC_PCMM, KC_PDOT, KC_PPLS, _______, + //-------------------------------// + _______, _______, _______, KC_PENT, _______, _______, + //-------------------------------// + _______, _______, _______, _______), + + [FCTN] = LAYOUT(KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_SYSREQ, + //-------------------------------// + KC_PSCR, RGB_TOG, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_LOCK, KC_LBRC, KC_RBRC, S(KC_LBRC), S(KC_RBRC), KC_INS, + //-------------------------------// + KC_PAUS, RGB_VAI, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_BRIU, KC_CLR, + //-------------------------------// + _______, KC_MPRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_MNXT, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, KC_BRID, _______, + //-------------------------------// + RESET, _______, _______, _______, _______, RESET, + //-------------------------------// + _______, KC_F11, KC_F12, _______)}; diff --git a/keyboards/hidtech/bastyl/rules.mk b/keyboards/hidtech/bastyl/rules.mk index cc88208e33c1..69b200da2101 100644 --- a/keyboards/hidtech/bastyl/rules.mk +++ b/keyboards/hidtech/bastyl/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 SPLIT_KEYBOARD = yes diff --git a/keyboards/hifumi/info.json b/keyboards/hifumi/info.json index 2466838a0485..27310fc8efd4 100644 --- a/keyboards/hifumi/info.json +++ b/keyboards/hifumi/info.json @@ -2,8 +2,6 @@ "keyboard_name": "hifumi", "url": "https://github.com/zk-phi/1x2x3-keyboard", "maintainer": "riconken", - "width": 3, - "height": 2, "layouts": { "LAYOUT": { "layout": [{"label":"F5", "x":0, "y":0}, {"label":"Up", "x":1, "y":0}, {"label":"PrSc", "x":2, "y":0}, {"label":"Left", "x":0, "y":1}, {"label":"Down", "x":1, "y":1}, {"label":"Right", "x":2, "y":1}] diff --git a/keyboards/hifumi/rules.mk b/keyboards/hifumi/rules.mk index 539fb7790009..09e9bba8c0b3 100644 --- a/keyboards/hifumi/rules.mk +++ b/keyboards/hifumi/rules.mk @@ -2,29 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. SWAP_HANDS_ENABLE = no # Enable one-hand typing diff --git a/keyboards/hineybush/h10/info.json b/keyboards/hineybush/h10/info.json index a8d160db53af..ecc8bd4c3981 100644 --- a/keyboards/hineybush/h10/info.json +++ b/keyboards/hineybush/h10/info.json @@ -2,8 +2,6 @@ "keyboard_name": "h10", "url": "", "maintainer": "hineybush", - "width": 5.25, - "height": 7.5, "layouts": { "LAYOUT_ortho_6x4": { "layout": [ diff --git a/keyboards/hineybush/h10/rules.mk b/keyboards/hineybush/h10/rules.mk index 730ceccf7a69..c445791df79d 100644 --- a/keyboards/hineybush/h10/rules.mk +++ b/keyboards/hineybush/h10/rules.mk @@ -7,19 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE = no # Audio output LAYOUTS = ortho_6x4 numpad_6x4 diff --git a/keyboards/hineybush/h60/info.json b/keyboards/hineybush/h60/info.json index 803541a3e9f8..81b4757a7754 100644 --- a/keyboards/hineybush/h60/info.json +++ b/keyboards/hineybush/h60/info.json @@ -2,8 +2,6 @@ "keyboard_name": "h60", "url": "", "maintainer": "hineybush", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_ansi": { "layout": [ diff --git a/keyboards/hineybush/h60/rules.mk b/keyboards/hineybush/h60/rules.mk index 3046ecffdbf5..26635686583b 100644 --- a/keyboards/hineybush/h60/rules.mk +++ b/keyboards/hineybush/h60/rules.mk @@ -7,19 +7,16 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE = no # Audio output +SLEEP_LED_ENABLE = yes LAYOUTS = 60_ansi 60_ansi_split_bs_rshift 60_hhkb 60_tsangan_hhkb diff --git a/keyboards/hineybush/h660s/info.json b/keyboards/hineybush/h660s/info.json index 552aed2c7bc8..6671a8d77783 100644 --- a/keyboards/hineybush/h660s/info.json +++ b/keyboards/hineybush/h660s/info.json @@ -2,8 +2,6 @@ "keyboard_name": "h660-s", "url": "", "maintainer": "Josh Hinnebusch", - "width": 17.25, - "height": 5.25, "layouts": { "LAYOUT_66_ansi": { "layout": [ diff --git a/keyboards/hineybush/h660s/rules.mk b/keyboards/hineybush/h660s/rules.mk index bfa9a933fd6d..a97eeea81747 100644 --- a/keyboards/hineybush/h660s/rules.mk +++ b/keyboards/hineybush/h660s/rules.mk @@ -7,16 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output +SLEEP_LED_ENABLE = yes diff --git a/keyboards/hineybush/h75_singa/config.h b/keyboards/hineybush/h75_singa/config.h index c2b3f65a8887..e1389c8f96e6 100644 --- a/keyboards/hineybush/h75_singa/config.h +++ b/keyboards/hineybush/h75_singa/config.h @@ -117,59 +117,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -188,26 +135,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/hineybush/h75_singa/info.json b/keyboards/hineybush/h75_singa/info.json index 8b886289c3b1..89a3c3466756 100644 --- a/keyboards/hineybush/h75_singa/info.json +++ b/keyboards/hineybush/h75_singa/info.json @@ -2,8 +2,6 @@ "keyboard_name": "h75_singa", "url": "", "maintainer": "hineybush", - "width": 16, - "height": 6, "layouts": { "LAYOUT_all": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, {"label":"F2", "x":2, "y":0}, {"label":"F3", "x":3, "y":0}, {"label":"F4", "x":4, "y":0}, {"label":"F5", "x":5, "y":0}, {"label":"F6", "x":6, "y":0}, {"label":"F7", "x":7, "y":0}, {"label":"F8", "x":8, "y":0}, {"label":"F9", "x":9, "y":0}, {"label":"F10", "x":10, "y":0}, {"label":"F11", "x":11, "y":0}, {"label":"F12", "x":12, "y":0}, {"label":"PrtSc", "x":13, "y":0}, {"label":"Pause", "x":14, "y":0}, {"label":"Delete", "x":15, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"@", "x":2, "y":1}, {"label":"#", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"label":"Backspace", "x":13, "y":1}, {"x":14, "y":1}, {"label":"Home", "x":15, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"Page Up", "x":15, "y":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"\"", "x":11.75, "y":3}, {"x":12.75, "y":3}, {"label":"Enter", "x":13.75, "y":3, "w":1.25}, {"label":"Page Down", "x":15, "y":3}, {"label":"Shift", "x":0, "y":4, "w":1.25}, {"x":1.25, "y":4}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"label":"\u2191", "x":14, "y":4}, {"label":"End", "x":15, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":2.75}, {"x":6.5, "y":5, "w":1.25}, {"x":7.75, "y":5, "w":2.25}, {"label":"Alt", "x":10, "y":5, "w":1.5}, {"label":"Ctrl", "x":11.5, "y":5, "w":1.5}, {"label":"\u2190", "x":13, "y":5}, {"label":"\u2193", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}] diff --git a/keyboards/hineybush/h75_singa/rules.mk b/keyboards/hineybush/h75_singa/rules.mk index b4c66cbc2ea7..722a997fbd69 100644 --- a/keyboards/hineybush/h75_singa/rules.mk +++ b/keyboards/hineybush/h75_singa/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/hineybush/h87a/h87a.c b/keyboards/hineybush/h87a/h87a.c index a3f511ffcc46..37c172569341 100644 --- a/keyboards/hineybush/h87a/h87a.c +++ b/keyboards/hineybush/h87a/h87a.c @@ -23,26 +23,6 @@ void matrix_init_kb(void) { matrix_init_user(); } -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - bool led_update_kb(led_t led_state) { if(led_update_user(led_state)) { writePin(D5, !led_state.caps_lock); diff --git a/keyboards/hineybush/h87a/info.json b/keyboards/hineybush/h87a/info.json index 57f68db0b7ae..40f844335af2 100644 --- a/keyboards/hineybush/h87a/info.json +++ b/keyboards/hineybush/h87a/info.json @@ -2,8 +2,6 @@ "keyboard_name": "h87a", "url": "", "maintainer": "hineybush", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT_all": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"@", "x":2, "y":1.5}, {"label":"#", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"x":13, "y":1.5}, {"label":"Bksp", "x":14, "y":1.5}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.25, "y":1.5}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":6.5, "y":2.5}, {"label":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"|", "x":13.5, "y":2.5, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"label":"Enter", "x":13.75, "y":3.5, "w":1.25}, {"label":"Shift", "x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"N", "x":7.25, "y":4.5}, {"label":"M", "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":"Shift", "x":12.25, "y":4.5, "w":1.75}, {"x":14, "y":4.5}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, {"label":"Win", "x":1.25, "y":5.5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"label":"Alt", "x":10, "y":5.5, "w":1.25}, {"label":"Win", "x":11.25, "y":5.5, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.5, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}] @@ -17,4 +15,3 @@ } } } - diff --git a/keyboards/hineybush/h87a/keymaps/default/keymap.c b/keyboards/hineybush/h87a/keymaps/default/keymap.c index abca0b199c26..c26a54527bfd 100644 --- a/keyboards/hineybush/h87a/keymaps/default/keymap.c +++ b/keyboards/hineybush/h87a/keymaps/default/keymap.c @@ -34,15 +34,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), }; - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} diff --git a/keyboards/hineybush/h87a/keymaps/gam3cat/keymap.c b/keyboards/hineybush/h87a/keymaps/gam3cat/keymap.c index fde2637154d2..d59438f6b35e 100644 --- a/keyboards/hineybush/h87a/keymaps/gam3cat/keymap.c +++ b/keyboards/hineybush/h87a/keymaps/gam3cat/keymap.c @@ -244,7 +244,7 @@ void matrix_scan_user(void) { } -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { switch (biton32(state)) { case _BL: custom_backlight_level(0); diff --git a/keyboards/hineybush/h87a/keymaps/gam3cat/rules.mk b/keyboards/hineybush/h87a/keymaps/gam3cat/rules.mk index 8ac43eadbca8..7b35b90178b6 100644 --- a/keyboards/hineybush/h87a/keymaps/gam3cat/rules.mk +++ b/keyboards/hineybush/h87a/keymaps/gam3cat/rules.mk @@ -4,7 +4,7 @@ # TAP_DANCE_ENABLE = no # Enable TapDance functionality RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+1500) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) @@ -18,6 +18,5 @@ UNICODEMAP_ENABLE = no # Enable extended unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE = no # Audio output on port C6 #VARIABLE_TRACE = no # Use this to debug changes to variable values -API_SYSEX_ENABLE = no # This enables using the Quantum SYSEX API to send strings(+5390) KEY_LOCK_ENABLE = no # This enables key lock(+260) SPLIT_KEYBOARD = no # This enables split keyboard support and includes all necessary files located at quantum/split_common diff --git a/keyboards/hineybush/h87a/keymaps/peott-fr/keymap.c b/keyboards/hineybush/h87a/keymaps/peott-fr/keymap.c new file mode 100644 index 000000000000..985baca2a73e --- /dev/null +++ b/keyboards/hineybush/h87a/keymaps/peott-fr/keymap.c @@ -0,0 +1,27 @@ +/* Copyright 2021 Pierre-Emmanuel Ott + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +/* This is a very basic TKL keymap. Note that I use Split Backspace AND Split right shift, to use fewer stabilizers and due to muscle-memory from 60% boards. + * That's about it really... there's really nothing fancy here besides media key on base layer through Mod Tap. +*/ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all(KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, KC_INS, KC_HOME, KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_DEL, KC_END, 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_ENT, KC_LSPO, KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, LT(2,KC_HOME), KC_UP, LCTL_T(KC_MPRV), LGUI_T(KC_MPLY), LALT_T(KC_MNXT), LT(1,KC_SPC), KC_RALT, KC_RGUI, KC_APP, RCTL_T(KC_END), KC_LEFT, KC_DOWN, KC_RGHT), + [1] = LAYOUT_all(KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, BL_TOGG, BL_DEC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PCMM, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_MYCM, KC_TRNS, KC_ENT, KC_BSPC, KC_TRNS, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PEQL, KC_TRNS, KC_TRNS, KC_VOLD, KC_TRNS, KC_VOLU, KC_TRNS, KC_P0, KC_PDOT, KC_PENT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [2] = LAYOUT_all(KC_TRNS, 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, RESET, 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, RGB_TOG, RGB_MOD, RGB_HUI, 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, RGB_SAI, RGB_VAI, RGB_SPI, KC_CAPS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO) +}; \ No newline at end of file diff --git a/keyboards/hineybush/h87a/rules.mk b/keyboards/hineybush/h87a/rules.mk index c4a2d842a32e..8f0c1ea107e0 100644 --- a/keyboards/hineybush/h87a/rules.mk +++ b/keyboards/hineybush/h87a/rules.mk @@ -2,31 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 -EXTRAFLAGS += -flto +AUDIO_ENABLE = no # Audio output +LTO_ENABLE = yes diff --git a/keyboards/hineybush/h88/h88.c b/keyboards/hineybush/h88/h88.c index adfb64bef192..b88722db621c 100644 --- a/keyboards/hineybush/h88/h88.c +++ b/keyboards/hineybush/h88/h88.c @@ -23,26 +23,6 @@ void matrix_init_kb(void) { matrix_init_user(); } -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - bool led_update_kb(led_t led_state) { if(led_update_user(led_state)) { writePin(D5, !led_state.caps_lock); diff --git a/keyboards/hineybush/h88/info.json b/keyboards/hineybush/h88/info.json index f36ac09f7fa3..07aa168f48f1 100644 --- a/keyboards/hineybush/h88/info.json +++ b/keyboards/hineybush/h88/info.json @@ -2,8 +2,6 @@ "keyboard_name": "h88a", "url": "", "maintainer": "hineybush", - "width": 18.25, - "height": 6.25, "layouts": { "LAYOUT_all": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.25, "y":0}, {"label":"F2", "x":2.25, "y":0}, {"label":"F3", "x":3.25, "y":0}, {"label":"F4", "x":4.25, "y":0}, {"label":"F5", "x":5.5, "y":0}, {"label":"F6", "x":6.5, "y":0}, {"label":"F7", "x":7.5, "y":0}, {"label":"F8", "x":8.5, "y":0}, {"label":"F9", "x":9.75, "y":0}, {"label":"F10", "x":10.75, "y":0}, {"label":"F11", "x":11.75, "y":0}, {"label":"F12", "x":12.75, "y":0}, {"label":"F13", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"x":13, "y":1.25}, {"label":"Bksp", "x":14, "y":1.25}, {"label":"Insert", "x":15.25, "y":1.25}, {"label":"Home", "x":16.25, "y":1.25}, {"label":"PgUp", "x":17.25, "y":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Y", "x":6.5, "y":2.25}, {"label":"U", "x":7.5, "y":2.25}, {"label":"I", "x":8.5, "y":2.25}, {"label":"O", "x":9.5, "y":2.25}, {"label":"P", "x":10.5, "y":2.25}, {"label":"{", "x":11.5, "y":2.25}, {"label":"}", "x":12.5, "y":2.25}, {"label":"|", "x":13.5, "y":2.25, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.25}, {"label":"End", "x":16.25, "y":2.25}, {"label":"PgDn", "x":17.25, "y":2.25}, {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"H", "x":6.75, "y":3.25}, {"label":"J", "x":7.75, "y":3.25}, {"label":"K", "x":8.75, "y":3.25}, {"label":"L", "x":9.75, "y":3.25}, {"label":":", "x":10.75, "y":3.25}, {"label":"\"", "x":11.75, "y":3.25}, {"x":12.75, "y":3.25}, {"label":"Enter", "x":13.75, "y":3.25, "w":1.25}, {"label":"Shift", "x":0, "y":4.25, "w":1.25}, {"x":1.25, "y":4.25}, {"label":"Z", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"N", "x":7.25, "y":4.25}, {"label":"M", "x":8.25, "y":4.25}, {"label":"<", "x":9.25, "y":4.25}, {"label":">", "x":10.25, "y":4.25}, {"label":"?", "x":11.25, "y":4.25}, {"label":"Shift", "x":12.25, "y":4.25, "w":1.75}, {"x":14, "y":4.25}, {"label":"\u2191", "x":16.25, "y":4.25}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, {"x":3.75, "y":5.25, "w":6.25}, {"label":"Alt", "x":10, "y":5.25, "w":1.25}, {"label":"Win", "x":11.25, "y":5.25, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.25, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.25}, {"label":"\u2193", "x":16.25, "y":5.25}, {"label":"\u2192", "x":17.25, "y":5.25}] @@ -17,4 +15,3 @@ } } } - diff --git a/keyboards/hineybush/h88/keymaps/default/keymap.c b/keyboards/hineybush/h88/keymaps/default/keymap.c index 2e0251ee2eb2..c4f1cf4e94d0 100644 --- a/keyboards/hineybush/h88/keymaps/default/keymap.c +++ b/keyboards/hineybush/h88/keymaps/default/keymap.c @@ -34,17 +34,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), }; - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - - diff --git a/keyboards/hineybush/h88/rules.mk b/keyboards/hineybush/h88/rules.mk index 5e0d1726fba5..8f0c1ea107e0 100644 --- a/keyboards/hineybush/h88/rules.mk +++ b/keyboards/hineybush/h88/rules.mk @@ -2,31 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LTO_ENABLE = yes diff --git a/keyboards/hineybush/hbcp/hbcp.c b/keyboards/hineybush/hbcp/hbcp.c index e2513023e099..562dbb3e907d 100644 --- a/keyboards/hineybush/hbcp/hbcp.c +++ b/keyboards/hineybush/hbcp/hbcp.c @@ -34,39 +34,6 @@ // #define HSV_custom_color H, S, V - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - void eeconfig_init_kb(void) { // EEPROM is getting reset! rgblight_enable(); // Enable RGB by default rgblight_sethsv(0, 255, 128); // Set default HSV - red hue, full saturation, medium brightness diff --git a/keyboards/hineybush/hbcp/info.json b/keyboards/hineybush/hbcp/info.json index 8a8fd217f42a..d6f7c84bbc8c 100644 --- a/keyboards/hineybush/hbcp/info.json +++ b/keyboards/hineybush/hbcp/info.json @@ -2,11 +2,8 @@ "keyboard_name": "hbcp", "url": "", "maintainer": "hineybush", - "width": 19.5, - "height": 6.25, "layouts": { "LAYOUT_all": { - "key_count": 103, "layout": [ {"label":"Esc (K000)", "x":0, "y":0}, {"label":"F1 (K001)", "x":1.25, "y":0}, @@ -114,7 +111,6 @@ ] }, "LAYOUT_wkl": { - "key_count": 97, "layout": [ {"label":"Esc (K000)", "x":0, "y":0}, {"label":"F1 (K001)", "x":1.25, "y":0}, diff --git a/keyboards/hineybush/hbcp/keymaps/default/keymap.c b/keyboards/hineybush/hbcp/keymaps/default/keymap.c index b8ab480ba31e..9bc9ec8e819d 100644 --- a/keyboards/hineybush/hbcp/keymaps/default/keymap.c +++ b/keyboards/hineybush/hbcp/keymaps/default/keymap.c @@ -74,11 +74,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} diff --git a/keyboards/hineybush/hbcp/rules.mk b/keyboards/hineybush/hbcp/rules.mk index c6441d0e84e8..d4bb64fabe06 100644 --- a/keyboards/hineybush/hbcp/rules.mk +++ b/keyboards/hineybush/hbcp/rules.mk @@ -2,32 +2,20 @@ MCU = at90usb1286 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output CUSTOM_MATRIX = lite SRC += matrix.c diff --git a/keyboards/hineybush/hineyg80/info.json b/keyboards/hineybush/hineyg80/info.json index 07498b9bbdd1..68462b827e2f 100644 --- a/keyboards/hineybush/hineyg80/info.json +++ b/keyboards/hineybush/hineyg80/info.json @@ -2,8 +2,6 @@ "keyboard_name": "hineyg80", "url": "", "maintainer": "hineybush", - "width": 19.5, - "height": 7.25, "layouts": { "LAYOUT_all": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.25, "y":0}, {"label":"F2", "x":2.25, "y":0}, {"label":"F3", "x":3.25, "y":0}, {"label":"F4", "x":4.25, "y":0}, {"label":"F5", "x":5.5, "y":0}, {"label":"F6", "x":6.5, "y":0}, {"label":"F7", "x":7.5, "y":0}, {"label":"F8", "x":8.5, "y":0}, {"label":"F9", "x":9.75, "y":0}, {"label":"F10", "x":10.75, "y":0}, {"label":"F11", "x":11.75, "y":0}, {"label":"F12", "x":12.75, "y":0}, {"label":"Pause", "x":15.5, "y":0}, {"label":"Insert", "x":16.5, "y":0}, {"label":"Home", "x":17.5, "y":0}, {"label":"PgUp", "x":18.5, "y":0}, {"label":"Scroll Lock", "x":15.5, "y":1}, {"label":"Delete", "x":16.5, "y":1}, {"label":"End", "x":17.5, "y":1}, {"label":"PgDn", "x":18.5, "y":1}, {"label":"~", "x":0, "y":2}, {"label":"!", "x":1, "y":2}, {"label":"@", "x":2, "y":2}, {"label":"#", "x":3, "y":2}, {"label":"$", "x":4, "y":2}, {"label":"%", "x":5, "y":2}, {"label":"^", "x":6, "y":2}, {"label":"&", "x":7, "y":2}, {"label":"*", "x":8, "y":2}, {"label":"(", "x":9, "y":2}, {"label":")", "x":10, "y":2}, {"label":"_", "x":11, "y":2}, {"label":"+", "x":12, "y":2}, {"label":"Bksp", "x":13, "y":2}, {"x":14, "y":2}, {"label":"Num Lock", "x":15.5, "y":2}, {"label":"/", "x":16.5, "y":2}, {"label":"*", "x":17.5, "y":2}, {"label":"-", "x":18.5, "y":2}, {"label":"Tab", "x":0, "y":3, "w":1.5}, {"label":"Q", "x":1.5, "y":3}, {"label":"W", "x":2.5, "y":3}, {"label":"E", "x":3.5, "y":3}, {"label":"R", "x":4.5, "y":3}, {"label":"T", "x":5.5, "y":3}, {"label":"Y", "x":6.5, "y":3}, {"label":"U", "x":7.5, "y":3}, {"label":"I", "x":8.5, "y":3}, {"label":"O", "x":9.5, "y":3}, {"label":"P", "x":10.5, "y":3}, {"label":"{", "x":11.5, "y":3}, {"label":"}", "x":12.5, "y":3}, {"label":"|", "x":13.5, "y":3, "w":1.5}, {"label":"7", "x":15.5, "y":3}, {"label":"8", "x":16.5, "y":3}, {"label":"9", "x":17.5, "y":3}, {"label":"+", "x":18.5, "y":3}, {"label":"Caps Lock", "x":0, "y":4, "w":1.75}, {"label":"A", "x":1.75, "y":4}, {"label":"S", "x":2.75, "y":4}, {"label":"D", "x":3.75, "y":4}, {"label":"F", "x":4.75, "y":4}, {"label":"G", "x":5.75, "y":4}, {"label":"H", "x":6.75, "y":4}, {"label":"J", "x":7.75, "y":4}, {"label":"K", "x":8.75, "y":4}, {"label":"L", "x":9.75, "y":4}, {"label":":", "x":10.75, "y":4}, {"label":"\"", "x":11.75, "y":4}, {"x":12.75, "y":4}, {"label":"Enter", "x":13.75, "y":4, "w":1.25}, {"label":"4", "x":15.5, "y":4}, {"label":"5", "x":16.5, "y":4}, {"label":"6", "x":17.5, "y":4}, {"x":18.5, "y":4}, {"label":"Shift", "x":0, "y":5, "w":1.25}, {"x":1.25, "y":5}, {"label":"Z", "x":2.25, "y":5}, {"label":"X", "x":3.25, "y":5}, {"label":"C", "x":4.25, "y":5}, {"label":"V", "x":5.25, "y":5}, {"label":"B", "x":6.25, "y":5}, {"label":"N", "x":7.25, "y":5}, {"label":"M", "x":8.25, "y":5}, {"label":"<", "x":9.25, "y":5}, {"label":">", "x":10.25, "y":5}, {"label":"?", "x":11.25, "y":5}, {"label":"Shift", "x":12.25, "y":5, "w":1.75}, {"label":"\u2191", "x":14.25, "y":5.25}, {"label":"1", "x":15.5, "y":5}, {"label":"2", "x":16.5, "y":5}, {"label":"3", "x":17.5, "y":5}, {"label":"Enter", "x":18.5, "y":5, "h":2}, {"label":"Ctrl", "x":0, "y":6}, {"label":"Win", "x":1, "y":6}, {"label":"Alt", "x":2, "y":6}, {"x":3, "y":6, "w":6}, {"label":"Alt", "x":9, "y":6}, {"label":"Win", "x":10, "y":6}, {"label":"Menu", "x":11, "y":6}, {"label":"Ctrl", "x":12, "y":6}, {"label":"\u2190", "x":13.25, "y":6.25}, {"label":"\u2193", "x":14.25, "y":6.25}, {"label":"\u2192", "x":15.25, "y":6.25}, {"label":"0", "x":16.5, "y":6}, {"label":".", "x":17.5, "y":6}] @@ -16,4 +14,3 @@ } } } - diff --git a/keyboards/hineybush/hineyg80/keymaps/default/keymap.c b/keyboards/hineybush/hineyg80/keymaps/default/keymap.c index 13d0c8955788..c87dd24bd1a5 100644 --- a/keyboards/hineybush/hineyg80/keymaps/default/keymap.c +++ b/keyboards/hineybush/hineyg80/keymaps/default/keymap.c @@ -40,19 +40,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), }; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/hineybush/hineyg80/keymaps/wkl/keymap.c b/keyboards/hineybush/hineyg80/keymaps/wkl/keymap.c index a1255e9cc737..d5664a97eab9 100644 --- a/keyboards/hineybush/hineyg80/keymaps/wkl/keymap.c +++ b/keyboards/hineybush/hineyg80/keymaps/wkl/keymap.c @@ -42,19 +42,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ______, ______, ______, ______, ______, ______, ______, ______, ______, ______ ), }; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} \ No newline at end of file diff --git a/keyboards/hineybush/hineyg80/rules.mk b/keyboards/hineybush/hineyg80/rules.mk index f1d011ad6a08..182df619f905 100644 --- a/keyboards/hineybush/hineyg80/rules.mk +++ b/keyboards/hineybush/hineyg80/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/hineybush/physix/config.h b/keyboards/hineybush/physix/config.h index 57544e19711a..c4a0274b93af 100644 --- a/keyboards/hineybush/physix/config.h +++ b/keyboards/hineybush/physix/config.h @@ -121,59 +121,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -194,26 +141,6 @@ along with this program. If not, see . #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/hineybush/physix/info.json b/keyboards/hineybush/physix/info.json index 80319d476b1c..4d5133945fad 100644 --- a/keyboards/hineybush/physix/info.json +++ b/keyboards/hineybush/physix/info.json @@ -2,8 +2,6 @@ "keyboard_name": "physix", "url": "", "maintainer": "hineybush", - "width": 20.25, - "height": 5.25, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/hineybush/physix/rules.mk b/keyboards/hineybush/physix/rules.mk index ca67560c24ec..9fba0682c5b5 100644 --- a/keyboards/hineybush/physix/rules.mk +++ b/keyboards/hineybush/physix/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/hineybush/sm68/config.h b/keyboards/hineybush/sm68/config.h index b9cca329c20a..fd2403b8b5b5 100644 --- a/keyboards/hineybush/sm68/config.h +++ b/keyboards/hineybush/sm68/config.h @@ -113,59 +113,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -184,26 +131,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/hineybush/sm68/info.json b/keyboards/hineybush/sm68/info.json index 1db400d6637f..ec4227af8666 100644 --- a/keyboards/hineybush/sm68/info.json +++ b/keyboards/hineybush/sm68/info.json @@ -2,8 +2,6 @@ "keyboard_name": "sm68", "url": "", "maintainer": "hineybush", - "width": 17.5, - "height": 5, "layouts": { "LAYOUT_68_ansi_split_bs_rshift": { "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":"Insert", "x":15.5, "y":0}, {"x":16.5, "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":"Delete", "x":15.5, "y":1}, {"x":16.5, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"label":"\u2191", "x":15.5, "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":"Ctrl", "x":11.25, "y":4, "w":1.25}, {"label":"Menu", "x":12.5, "y":4, "w":1.25}, {"label":"\u2190", "x":14.5, "y":4}, {"label":"\u2193", "x":15.5, "y":4}, {"label":"\u2192", "x":16.5, "y":4}] diff --git a/keyboards/hineybush/sm68/rules.mk b/keyboards/hineybush/sm68/rules.mk index 7ce1eab6dc1a..b0c7b9781aaa 100644 --- a/keyboards/hineybush/sm68/rules.mk +++ b/keyboards/hineybush/sm68/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/hineybush/sm68/sm68.c b/keyboards/hineybush/sm68/sm68.c index 5aa3c85bbc7d..54fd8ab0a339 100644 --- a/keyboards/hineybush/sm68/sm68.c +++ b/keyboards/hineybush/sm68/sm68.c @@ -15,36 +15,3 @@ */ #include "sm68.h" - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -/* -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} -*/ diff --git a/keyboards/holyswitch/southpaw75/info.json b/keyboards/holyswitch/southpaw75/info.json index 3386f3be6009..ff993260bae2 100644 --- a/keyboards/holyswitch/southpaw75/info.json +++ b/keyboards/holyswitch/southpaw75/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Southpaw75", "url": "", "maintainer": "qmk", - "width": 19, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/holyswitch/southpaw75/rules.mk b/keyboards/holyswitch/southpaw75/rules.mk index 5c0d8f307c54..d2109f62500b 100644 --- a/keyboards/holyswitch/southpaw75/rules.mk +++ b/keyboards/holyswitch/southpaw75/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/honeycomb/info.json b/keyboards/honeycomb/info.json index 1124a8b13365..b11ece332b05 100644 --- a/keyboards/honeycomb/info.json +++ b/keyboards/honeycomb/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Honeycomb", "url": "", "maintainer": "filoxo", - "width": 4, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/honeycomb/rules.mk b/keyboards/honeycomb/rules.mk index a9a01d867307..b95c9d5f33f7 100755 --- a/keyboards/honeycomb/rules.mk +++ b/keyboards/honeycomb/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # comment out to disable the options. # -#BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite #MOUSEKEY_ENABLE = yes # Mouse keys POINTING_DEVICE_ENABLE = yes # Generic Pointer, not as big as mouse keys hopefully. EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration CUSTOM_MATRIX = yes # Remote matrix from the wireless bridge -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA # BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -# MIDI_ENABLE = YES # MIDI controls -UNICODE_ENABLE = YES # Unicode -# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID # # project specific files SRC += matrix.c serial_uart.c diff --git a/keyboards/horizon/config.h b/keyboards/horizon/config.h new file mode 100644 index 000000000000..8abc3b131b3b --- /dev/null +++ b/keyboards/horizon/config.h @@ -0,0 +1,46 @@ +/* +Copyright 2021 Steven Karrmann + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x0000 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Steven Karrmann +#define PRODUCT Horizon + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 14 + +#define MATRIX_ROW_PINS { D3, D2, D1, F4 } +#define MATRIX_COL_PINS { F5, F6, F7, B1, B3, B2, B6, B5, B4, E6, D7, C6, D4, D0 } +#define UNUSED_PINS { } + +#define DIODE_DIRECTION COL2ROW + +/* 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/horizon/horizon.c b/keyboards/horizon/horizon.c new file mode 100644 index 000000000000..08360325ec04 --- /dev/null +++ b/keyboards/horizon/horizon.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Steven Karrmann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "horizon.h" diff --git a/keyboards/horizon/horizon.h b/keyboards/horizon/horizon.h new file mode 100644 index 000000000000..99577ebf9105 --- /dev/null +++ b/keyboards/horizon/horizon.h @@ -0,0 +1,41 @@ +/* Copyright 2021 Steven Karrmann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + +#define LAYOUT( \ + 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, k2c, k2d, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05, KC_NO, KC_NO, k06, k07, k08, k09, k0a, k0b }, \ + { k10, k11, k12, k13, k14, k15, KC_NO, KC_NO, k16, k17, k18, k19, k1a, k1b }, \ + { 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/horizon/info.json b/keyboards/horizon/info.json new file mode 100644 index 000000000000..ea5f9cb034ec --- /dev/null +++ b/keyboards/horizon/info.json @@ -0,0 +1,63 @@ +{ + "keyboard_name": "Horizon", + "url": "https://github.com/skarrmann/horizon", + "maintainer": "Steven Karrmann", + "layouts": { + "LAYOUT": { + "layout": [ + { "x": 0, "y": 0 }, + { "x": 1, "y": 0 }, + { "x": 2, "y": 0 }, + { "x": 3, "y": 0 }, + { "x": 4, "y": 0 }, + { "x": 5, "y": 0 }, + { "x": 8, "y": 0 }, + { "x": 9, "y": 0 }, + { "x": 10, "y": 0 }, + { "x": 11, "y": 0 }, + { "x": 12, "y": 0 }, + { "x": 13, "y": 0 }, + { "x": 0, "y": 1 }, + { "x": 1, "y": 1 }, + { "x": 2, "y": 1 }, + { "x": 3, "y": 1 }, + { "x": 4, "y": 1 }, + { "x": 5, "y": 1 }, + { "x": 8, "y": 1 }, + { "x": 9, "y": 1 }, + { "x": 10, "y": 1 }, + { "x": 11, "y": 1 }, + { "x": 12, "y": 1 }, + { "x": 13, "y": 1 }, + { "x": 0, "y": 2 }, + { "x": 1, "y": 2 }, + { "x": 2, "y": 2 }, + { "x": 3, "y": 2 }, + { "x": 4, "y": 2 }, + { "x": 5, "y": 2 }, + { "x": 6, "y": 2 }, + { "x": 7, "y": 2 }, + { "x": 8, "y": 2 }, + { "x": 9, "y": 2 }, + { "x": 10, "y": 2 }, + { "x": 11, "y": 2 }, + { "x": 12, "y": 2 }, + { "x": 13, "y": 2 }, + { "x": 0, "y": 3 }, + { "x": 1, "y": 3 }, + { "x": 2, "y": 3 }, + { "x": 3, "y": 3 }, + { "x": 4, "y": 3 }, + { "x": 5, "y": 3 }, + { "x": 6, "y": 3 }, + { "x": 7, "y": 3 }, + { "x": 8, "y": 3 }, + { "x": 9, "y": 3 }, + { "x": 10, "y": 3 }, + { "x": 11, "y": 3 }, + { "x": 12, "y": 3 }, + { "x": 13, "y": 3 } + ] + } + } +} diff --git a/keyboards/horizon/keymaps/default/keymap.c b/keyboards/horizon/keymaps/default/keymap.c new file mode 100644 index 000000000000..29a9bec0d813 --- /dev/null +++ b/keyboards/horizon/keymaps/default/keymap.c @@ -0,0 +1,47 @@ +/* Copyright 2021 Steven Karrmann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _SYMBOL, + _FUNCTION +}; + +#define MO_SYMB MO(_SYMBOL) +#define MO_FUNC MO(_FUNCTION) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( + KC_GRV , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_MINS, + KC_EQL , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_ESC , KC_ENT , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, + KC_LCTL, KC_LALT, KC_LGUI, KC_APP , KC_DEL , KC_TAB , MO_SYMB, MO_FUNC, KC_SPC , KC_BSPC, KC_APP , KC_RGUI, KC_RALT, KC_RCTL + ), + [_SYMBOL] = LAYOUT( + KC_TILD, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_UNDS, + KC_PLUS, KC_EXLM, KC_LPRN, KC_RPRN, KC_DLR , KC_AMPR, KC_PIPE, KC_HASH, KC_LCBR, KC_RCBR, KC_COLN, KC_DQUO, + _______, KC_AT , KC_LBRC, KC_RBRC, KC_BSLS, KC_PERC, _______, _______, KC_CIRC, KC_ASTR, KC_LABK, KC_RABK, KC_QUES, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [_FUNCTION] = LAYOUT( + _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_PSCR, KC_SLCK, KC_HOME, KC_PGDN, KC_PGUP, KC_END , _______, + _______, KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_INS , KC_CLCK, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, _______, + _______, KC_F9 , KC_F10 , KC_F11 , KC_F12 , _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_PAUS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; \ No newline at end of file diff --git a/keyboards/horizon/readme.md b/keyboards/horizon/readme.md new file mode 100644 index 000000000000..7999503fb521 --- /dev/null +++ b/keyboards/horizon/readme.md @@ -0,0 +1,27 @@ +# Horizon + +![Horizon](https://i.imgur.com/zR0wnA6.jpg) + +A simple 52-key (4x14) ortholinear keyboard, powered by an Arduino Pro Micro. + +* Keyboard Maintainer: [Steven Karrmann](https://github.com/skarrmann) +* Hardware Supported: Horizon PCBs, Arduino Pro Micro +* Hardware Availability: [Horizon GitHub repository](https://github.com/skarrmann/horizon) + +Make example for this keyboard (after setting up your build environment): + + make horizon:default + +Flashing example for this keyboard: + + make horizon:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the top left key and plug in the keyboard. +* **Physical reset button**: Briefly press the button on the top center of the PCB. +* **Keycode in layout**: Press the key mapped to `RESET` if it is available. diff --git a/keyboards/horizon/rules.mk b/keyboards/horizon/rules.mk new file mode 100644 index 000000000000..305b333a1136 --- /dev/null +++ b/keyboards/horizon/rules.mk @@ -0,0 +1,19 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# 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 +COMMAND_ENABLE = no # Commands for debug and configuration +CONSOLE_ENABLE = yes # Console for debug +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/hotdox/hotdox.h b/keyboards/hotdox/hotdox.h index 0eef4ea7905c..348ec6b29184 100644 --- a/keyboards/hotdox/hotdox.h +++ b/keyboards/hotdox/hotdox.h @@ -4,9 +4,6 @@ #include #include -#define CPU_PRESCALE(n) (CLKPR = 0x80, CLKPR = (n)) -#define CPU_16MHz 0x00 - void init_ergodox(void); inline void ergodox_board_led_on(void) { DDRB |= (1<. + */ +#include QMK_KEYBOARD_H +#include "imchipwood.h" + +// Layer names +enum custom_layers { + _QWERTY, + _NUM, + _MED +}; + +// Layer definitions +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QWERTY] = LAYOUT_ergodox_pretty( +/* Keymap 0: Basic layer + * ,--------------------------------------------------. ,--------------------------------------------------. + * | = | 1 | 2 | 3 | 4 | 5 | ESC | |BkTick| 6 | 7 | 8 | 9 | 0 | - | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | Tab | Q | W | E | R | T | MEH | | | Y | U | I | O | P | [ | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | BkSlsh | A | S | D | F | G |------| |------| H | J | K | L | ; | ' | + * |--------+------+------+------+------+------|MO(2) | |MO(2) |------+------+------+------+------+--------| + * | LSHIFT | Z | X | C | V | B | | | | N | M | , | . | / |SHFT/CAP| + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |RCTRL | LALT | GUI |L/HOME|R/END | | Up | Down | LEFT |RIGHT |PRSCR | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | DEL | INS | | Ctrl | Alt | + * ,------|------|------| |------+--------+------. + * | | | Home | | PgUp | | | + * |Enter |MO(1) |------| |------| Bksp |Space | + * | | | End | | PgDn | | | + * `--------------------' `----------------------' + */ +// Left hand Right hand +// ,------------------------------------------------------------------------------------------. ,------------------------------------------------------------------------------------------. + KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC, KC_GRV, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, +// |------------+------------+------------+------------+------------+------------+------------| |------------+------------+------------+------------+------------+------------+------------| + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_MEH, KC_TRNS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, +// |------------+------------+------------+------------+------------+------------+ | | +------------+------------+------------+------------+------------+------------| + KC_BSLS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, +// |------------+------------+------------+------------+------------+------------+------------| |------------+------------+------------+------------+------------+------------+------------| + KC_LSHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, MO(_MED), MO(_MED), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, TD(TD_RSFT_CAPS), +// |------------+------------+------------+------------+------------+------------+------------| |------------+------------+------------+------------+------------+------------+------------| + KC_LCTRL, KC_LALT, KC_LGUI, TD(TD_LOME), TD(TD_REND), KC_UP, KC_DOWN, KC_LEFT, KC_RGHT, KC_PSCR, +// `---------------------------------------------------------------' `----------------------------------------------------------------' +// ,-------------------------. ,-------------------------. + KC_DEL, KC_INS, KC_TRNS, KC_TRNS, +// ,------------+------------+------------| |------------+------------+------------. + KC_TRNS, KC_TRNS, +// | | +------------| |------------+ | | + KC_ENT, MO(_NUM), KC_TRNS, KC_TRNS, KC_BSPC, KC_SPC +// `--------------------------------------' `--------------------------------------' + ), + [_NUM] = LAYOUT_ergodox_pretty( +/* Keymap 1: Numpad, function keys, and some convenience keys + * ,---------------------------------------------------. ,--------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | | F12 | F6 | F7 | F8 | F9 | F10 | F11 | + * |---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------| + * | | | up | | | | | | | 7 | 8 | 9 | * | / | ] | + * |---------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | left | down |right | | |------| |------| 4 | 5 | 6 | + | - | | + * |---------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | 1 | 2 | 3 | = | up | enter | + * `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | PgUp | PgDn | | 0 | . | left | down |right | + * `-----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| Del | Esc | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// Left hand Right hand +// ,------------------------------------------------------------------------------------------. ,------------------------------------------------------------------------------------------. + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, TD(CTL_F5), KC_TRNS, KC_F12, KC_F6, TD(ALT_F7), KC_F8, KC_F9, KC_F10, KC_F11, +// |------------+------------+------------+------------+------------+------------+------------| |------------+------------+------------+------------+------------+------------+------------| + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_7, KC_8, KC_9, KC_PAST, KC_PSLS, KC_RBRC, +// |------------+------------+------------+------------+------------+------------+ | | +------------+------------+------------+------------+------------+------------| + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_4, KC_5, KC_6, KC_PPLS, KC_PMNS, KC_TRNS, +// |------------+------------+------------+------------+------------+------------+------------| |------------+------------+------------+------------+------------+------------+------------| + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_1, KC_2, KC_3, KC_PEQL, KC_UP, KC_PENT, +// |------------+------------+------------+------------+------------+------------+------------| |------------+------------+------------+------------+------------+------------+------------| + KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_PGDN, KC_0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, +// `---------------------------------------------------------------' `----------------------------------------------------------------' +// ,-------------------------. ,-------------------------. + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, +// ,------------+------------+------------| |------------+------------+------------. + KC_TRNS, KC_TRNS, +// | | +------------| |------------+ | | + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_ESC +// `--------------------------------------' `--------------------------------------' + ), + [_MED] = LAYOUT_ergodox_pretty( +/* Keymap 2: Media and mouse keys + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | | | | | Mute | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | MsUp | | | | | | | MP7 | MP8 | MP9 | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | |MsLeft|MsDown|MsRght| | |------| |------| MP4 | MP5 | MP6 | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | MP1 | MP2 | MP3 | |VolUp | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | Lclk | Rclk | | | | Prev |VolDn | Next | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * |RESET | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * |MPENT | |------| |------| |Play | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// Left hand Right hand +// ,------------------------------------------------------------------------------------------. ,------------------------------------------------------------------------------------------. + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, +// |------------+------------+------------+------------+------------+------------+------------| |------------+------------+------------+------------+------------+------------+------------| + KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MEH(KC_P7), MEH(KC_P8), MEH(KC_P9), KC_TRNS, KC_TRNS, KC_TRNS, +// |------------+------------+------------+------------+------------+------------+ | | +------------+------------+------------+------------+------------+------------| + KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS, MEH(KC_P4), MEH(KC_P5), MEH(KC_P6), KC_TRNS, KC_TRNS, KC_TRNS, +// |------------+------------+------------+------------+------------+------------+------------| |------------+------------+------------+------------+------------+------------+------------| + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MEH(KC_P1), MEH(KC_P2), MEH(KC_P3), KC_TRNS, KC_VOLU, KC_TRNS, +// |------------+------------+------------+------------+------------+------------+------------| |------------+------------+------------+------------+------------+------------+------------| + KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT, +// `---------------------------------------------------------------' `----------------------------------------------------------------' +// ,-------------------------. ,-------------------------. + RESET, KC_TRNS, KC_TRNS, KC_TRNS, +// ,------------+------------+------------| |------------+------------+------------. + KC_TRNS, KC_TRNS, +// | | +------------| |------------+ | | + MEH(KC_PENT), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY +// `--------------------------------------' `--------------------------------------' + ) +}; diff --git a/keyboards/hotdox/keymaps/via/keymap.c b/keyboards/hotdox/keymaps/via/keymap.c index 0a3d41cf788e..df951542a6b3 100644 --- a/keyboards/hotdox/keymaps/via/keymap.c +++ b/keyboards/hotdox/keymaps/via/keymap.c @@ -50,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),GUI_T(KC_QUOT), MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT, - KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1, + KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_NO, KC_LALT, CTL_T(KC_ESC), KC_PGUP, KC_PGDN,KC_TAB,KC_ENT @@ -162,12 +162,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return true; } -// Runs just one time when the keyboard initializes. -void matrix_init_user(void) { - -}; - - // Runs constantly in the background, in a loop. void matrix_scan_user(void) { diff --git a/keyboards/hotdox/rules.mk b/keyboards/hotdox/rules.mk index dd175e9f6934..3dc9cc4f21f8 100644 --- a/keyboards/hotdox/rules.mk +++ b/keyboards/hotdox/rules.mk @@ -2,13 +2,6 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options @@ -16,18 +9,15 @@ BOOTLOADER = atmel-dfu # CUSTOM_MATRIX = yes # Custom matrix file for the ErgoDone UNICODE_ENABLE = yes # Unicode -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA -USB_6KRO_ENABLE = no # USB 6key Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality SWAP_HANDS_ENABLE = no # Disable Onehand RGBLIGHT_ENABLE = no -MIDI_ENABLE = no # project specific files SRC = matrix.c \ diff --git a/keyboards/hp69/config.h b/keyboards/hp69/config.h index 06dd57145ca8..ba6e55f86d43 100644 --- a/keyboards/hp69/config.h +++ b/keyboards/hp69/config.h @@ -47,7 +47,11 @@ along with this program. If not, see . #define RGB_DI_PIN A3 #define RGBLED_NUM 20 #define RGBLIGHT_ANIMATIONS +#define RGBLIGHT_SLEEP #define AUDIO_PIN A5 #define AUDIO_PIN_ALT A4 #define AUDIO_PIN_ALT_AS_NEGATIVE + +#define LED_CAPS_LOCK_PIN A6 +#define LED_SCROLL_LOCK_PIN A7 \ No newline at end of file diff --git a/keyboards/hp69/info.json b/keyboards/hp69/info.json index 06689d82a501..dac0887fbfde 100644 --- a/keyboards/hp69/info.json +++ b/keyboards/hp69/info.json @@ -2,8 +2,6 @@ "keyboard_name": "hp69", "url": "", "maintainer": "Ananya Kirti", - "width": 17.25, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/hp69/keymaps/via/keymap.c b/keyboards/hp69/keymaps/via/keymap.c index d47308c8ba22..a4743af6237b 100644 --- a/keyboards/hp69/keymaps/via/keymap.c +++ b/keyboards/hp69/keymaps/via/keymap.c @@ -46,4 +46,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), -}; \ No newline at end of file +}; + + +void matrix_scan_user(void) { + writePin(A7, layer_state_is(1)); +} + +bool led_update_user(led_t led_state) { + writePin(LED_CAPS_LOCK_PIN, led_state.caps_lock); + return false; +}; diff --git a/keyboards/hp69/rules.mk b/keyboards/hp69/rules.mk index 13e88cfe2db9..589d1c85944c 100644 --- a/keyboards/hp69/rules.mk +++ b/keyboards/hp69/rules.mk @@ -8,16 +8,13 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/hs60/v1/config.h b/keyboards/hs60/v1/config.h index 68c75b2af04d..b3444db38de0 100644 --- a/keyboards/hs60/v1/config.h +++ b/keyboards/hs60/v1/config.h @@ -118,7 +118,7 @@ along with this program. If not, see . //#define RGB_MATRIX_KEYPRESSES // reacts to keypresses (will slow down matrix scan by a lot) #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -#define RGB_DISABLE_WHEN_USB_SUSPENDED false // turn off effects when suspended +// #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 215 #define DRIVER_ADDR_1 0b1110100 @@ -134,3 +134,52 @@ along with this program. If not, see . #endif #define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) + +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH diff --git a/keyboards/hs60/v1/info.json b/keyboards/hs60/v1/info.json index 677054cc6e75..fe2d9983113c 100644 --- a/keyboards/hs60/v1/info.json +++ b/keyboards/hs60/v1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "HS60", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_iso": { "layout": [{"label":"\u00ac", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"\"", "x":2, "y":0}, {"label":"\u00a3", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"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":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"@", "x":11.75, "y":2}, {"label":"~", "x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"label":"|", "x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"AltGr", "x":10, "y":4, "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/hs60/v1/keymaps/ansi/keymap.c b/keyboards/hs60/v1/keymaps/ansi/keymap.c index 923af9e2ce0e..bf3d4aea283e 100644 --- a/keyboards/hs60/v1/keymaps/ansi/keymap.c +++ b/keyboards/hs60/v1/keymaps/ansi/keymap.c @@ -32,15 +32,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, KC_TRNS,\ KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), }; - -void matrix_init_user(void) { - //user initialization -} - -void matrix_scan_user(void) { - //user matrix -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} \ No newline at end of file diff --git a/keyboards/hs60/v1/keymaps/default/keymap.c b/keyboards/hs60/v1/keymaps/default/keymap.c index 953172c7391f..d30ce56aec6a 100644 --- a/keyboards/hs60/v1/keymaps/default/keymap.c +++ b/keyboards/hs60/v1/keymaps/default/keymap.c @@ -32,15 +32,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, KC_TRNS, KC_TRNS,\ KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), }; - -void matrix_init_user(void) { - //user initialization -} - -void matrix_scan_user(void) { - //user matrix -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} diff --git a/keyboards/hs60/v1/rules.mk b/keyboards/hs60/v1/rules.mk index 5a261bf6e459..3daf33bd6839 100644 --- a/keyboards/hs60/v1/rules.mk +++ b/keyboards/hs60/v1/rules.mk @@ -2,13 +2,6 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = qmk-dfu # Do not put the microcontroller into power saving mode @@ -19,20 +12,15 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# 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 on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output RGB_MATRIX_ENABLE = yes # Use RGB matrix RGB_MATRIX_DRIVER = IS31FL3731 RAW_ENABLE = yes diff --git a/keyboards/hs60/v1/v1.c b/keyboards/hs60/v1/v1.c index 70c1c2128eba..f96eb7c320e6 100644 --- a/keyboards/hs60/v1/v1.c +++ b/keyboards/hs60/v1/v1.c @@ -91,7 +91,7 @@ void raw_hid_receive( uint8_t *data, uint8_t length ) #ifdef HS60_ANSI -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { /* Refer to IS31 manual for these locations * driver * | R location @@ -199,7 +199,7 @@ led_config_t g_led_config = { { #else -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { /* Refer to IS31 manual for these locations * driver * | R location @@ -378,20 +378,6 @@ void matrix_init_kb(void) { matrix_init_user(); } -void matrix_scan_kb(void) { - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - //backlight_set_indicator_state(usb_led); -} - void suspend_power_down_kb(void) { rgb_matrix_set_suspend_state(true); diff --git a/keyboards/hs60/v1/v1.h b/keyboards/hs60/v1/v1.h index 4de781e5fae1..4c81e9061200 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 . */ -#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/hs60/v2/ansi/info.json b/keyboards/hs60/v2/ansi/info.json index a977f9be0c6f..2aae7c74725b 100644 --- a/keyboards/hs60/v2/ansi/info.json +++ b/keyboards/hs60/v2/ansi/info.json @@ -2,11 +2,8 @@ "keyboard_name": "HS60v2", "maintainer": "yiancar", "url": "", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_ansi": { - "key_count": 61, "layout": [ { "label": "~", diff --git a/keyboards/hs60/v2/ansi/keymaps/default/keymap.c b/keyboards/hs60/v2/ansi/keymaps/default/keymap.c index ba649470b41d..5ccc977959ae 100644 --- a/keyboards/hs60/v2/ansi/keymaps/default/keymap.c +++ b/keyboards/hs60/v2/ansi/keymaps/default/keymap.c @@ -46,15 +46,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), }; - -void matrix_init_user(void) { - //user initialization -} - -void matrix_scan_user(void) { - //user matrix -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} \ No newline at end of file diff --git a/keyboards/hs60/v2/ansi/keymaps/via/keymap.c b/keyboards/hs60/v2/ansi/keymaps/via/keymap.c index ba649470b41d..5ccc977959ae 100644 --- a/keyboards/hs60/v2/ansi/keymaps/via/keymap.c +++ b/keyboards/hs60/v2/ansi/keymaps/via/keymap.c @@ -46,15 +46,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), }; - -void matrix_init_user(void) { - //user initialization -} - -void matrix_scan_user(void) { - //user matrix -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} \ No newline at end of file diff --git a/keyboards/hs60/v2/ansi/rules.mk b/keyboards/hs60/v2/ansi/rules.mk index 1a0c1abbd83b..e3dbaf35ea88 100644 --- a/keyboards/hs60/v2/ansi/rules.mk +++ b/keyboards/hs60/v2/ansi/rules.mk @@ -14,14 +14,13 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN # comment out to disable the options. # BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in CIE1931_CURVE = yes @@ -31,6 +30,6 @@ LAYOUTS = 60_ansi # project specific files SRC = keyboards/wilba_tech/wt_main.c \ keyboards/wilba_tech/wt_rgb_backlight.c \ - drivers/issi/is31fl3733.c \ + drivers/led/issi/is31fl3733.c \ quantum/color.c \ - drivers/chibios/i2c_master.c + i2c_master.c diff --git a/keyboards/hs60/v2/hhkb/info.json b/keyboards/hs60/v2/hhkb/info.json index cf95351d308d..1a7f50975818 100644 --- a/keyboards/hs60/v2/hhkb/info.json +++ b/keyboards/hs60/v2/hhkb/info.json @@ -2,8 +2,6 @@ "keyboard_name": "HS60v2", "maintainer": "yiancar", "url": "", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_hhkb": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"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}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.5}, {"x":1.5, "y":4}, {"x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"x":11, "y":4, "w":1.5}, {"x":12.5, "y":4}, {"x":13.5, "y":4, "w":1.5}] diff --git a/keyboards/hs60/v2/hhkb/keymaps/default/keymap.c b/keyboards/hs60/v2/hhkb/keymaps/default/keymap.c index 9641eedb4929..7c48d0bc233f 100644 --- a/keyboards/hs60/v2/hhkb/keymaps/default/keymap.c +++ b/keyboards/hs60/v2/hhkb/keymaps/default/keymap.c @@ -46,15 +46,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), }; - -void matrix_init_user(void) { - //user initialization -} - -void matrix_scan_user(void) { - //user matrix -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} \ No newline at end of file diff --git a/keyboards/hs60/v2/hhkb/keymaps/via/keymap.c b/keyboards/hs60/v2/hhkb/keymaps/via/keymap.c index 9641eedb4929..7c48d0bc233f 100644 --- a/keyboards/hs60/v2/hhkb/keymaps/via/keymap.c +++ b/keyboards/hs60/v2/hhkb/keymaps/via/keymap.c @@ -46,15 +46,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), }; - -void matrix_init_user(void) { - //user initialization -} - -void matrix_scan_user(void) { - //user matrix -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} \ No newline at end of file diff --git a/keyboards/hs60/v2/hhkb/rules.mk b/keyboards/hs60/v2/hhkb/rules.mk index 87d86ccd4c76..0f10efe6a67e 100644 --- a/keyboards/hs60/v2/hhkb/rules.mk +++ b/keyboards/hs60/v2/hhkb/rules.mk @@ -14,14 +14,13 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN # comment out to disable the options. # BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in CIE1931_CURVE = yes @@ -29,6 +28,6 @@ CIE1931_CURVE = yes # project specific files SRC = keyboards/wilba_tech/wt_main.c \ keyboards/wilba_tech/wt_rgb_backlight.c \ - drivers/issi/is31fl3733.c \ + drivers/led/issi/is31fl3733.c \ quantum/color.c \ - drivers/chibios/i2c_master.c + i2c_master.c diff --git a/keyboards/hs60/v2/iso/info.json b/keyboards/hs60/v2/iso/info.json index 11f6f52a2eec..89b9912c7981 100644 --- a/keyboards/hs60/v2/iso/info.json +++ b/keyboards/hs60/v2/iso/info.json @@ -2,11 +2,8 @@ "keyboard_name": "HS60v2", "maintainer": "yiancar", "url": "", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_iso": { - "key_count": 62, "layout": [ {"label":"\\u00ac", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, diff --git a/keyboards/hs60/v2/iso/keymaps/default/keymap.c b/keyboards/hs60/v2/iso/keymaps/default/keymap.c index c1e575769fea..1b1e5ea4e22d 100644 --- a/keyboards/hs60/v2/iso/keymaps/default/keymap.c +++ b/keyboards/hs60/v2/iso/keymaps/default/keymap.c @@ -46,15 +46,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), }; - -void matrix_init_user(void) { - //user initialization -} - -void matrix_scan_user(void) { - //user matrix -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} \ No newline at end of file diff --git a/keyboards/hs60/v2/iso/keymaps/via/keymap.c b/keyboards/hs60/v2/iso/keymaps/via/keymap.c index c1e575769fea..1b1e5ea4e22d 100644 --- a/keyboards/hs60/v2/iso/keymaps/via/keymap.c +++ b/keyboards/hs60/v2/iso/keymaps/via/keymap.c @@ -46,15 +46,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), }; - -void matrix_init_user(void) { - //user initialization -} - -void matrix_scan_user(void) { - //user matrix -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} \ No newline at end of file diff --git a/keyboards/hs60/v2/iso/rules.mk b/keyboards/hs60/v2/iso/rules.mk index 53b801289d1c..949699b29b11 100644 --- a/keyboards/hs60/v2/iso/rules.mk +++ b/keyboards/hs60/v2/iso/rules.mk @@ -14,14 +14,13 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN # comment out to disable the options. # BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in CIE1931_CURVE = yes @@ -31,6 +30,6 @@ LAYOUTS = 60_iso # project specific files SRC = keyboards/wilba_tech/wt_main.c \ keyboards/wilba_tech/wt_rgb_backlight.c \ - drivers/issi/is31fl3733.c \ + drivers/led/issi/is31fl3733.c \ quantum/color.c \ - drivers/chibios/i2c_master.c + i2c_master.c diff --git a/keyboards/hub16/info.json b/keyboards/hub16/info.json index ea6c5ece5caf..e6546f6cbdc1 100644 --- a/keyboards/hub16/info.json +++ b/keyboards/hub16/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Hub16", "url": "https://joshajohnson.com/hub16-keyboard/", "maintainer": "Josh Johnson", - "width": 4, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/hub16/keymaps/peepeetee/rules.mk b/keyboards/hub16/keymaps/peepeetee/rules.mk index 384d149ae2ae..f6737b8e4abf 100644 --- a/keyboards/hub16/keymaps/peepeetee/rules.mk +++ b/keyboards/hub16/keymaps/peepeetee/rules.mk @@ -1 +1 @@ -BOOTMAGIC_ENABLE = lite \ No newline at end of file +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite \ No newline at end of file diff --git a/keyboards/hub16/rules.mk b/keyboards/hub16/rules.mk index 07d286c17f43..24694f0ca679 100755 --- a/keyboards/hub16/rules.mk +++ b/keyboards/hub16/rules.mk @@ -1,22 +1,20 @@ +# MCU name MCU = atmega32u4 +# Bootloader selection BOOTLOADER = caterina # Build Options CUSTOM_MATRIX = lite # Custom scanning of matrix -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes # Rotary Encoder support diff --git a/keyboards/hub20/config.h b/keyboards/hub20/config.h index f8e5d6be8d1d..de2526522c1e 100644 --- a/keyboards/hub20/config.h +++ b/keyboards/hub20/config.h @@ -1,5 +1,5 @@ /* -Copyright 2020 joshajohnson +Copyright 2020 joshajohnson Copyright 2021 peepeetee This program is free software: you can redistribute it and/or modify @@ -51,47 +51,54 @@ along with this program. If not, see . #define RGB_MATRIX_FRAMEBUFFER_EFFECTS #define RGB_MATRIX_KEYPRESSES -// This list in in the correct mode order. Next mode is the following line, previous mode is previous line. Loops around. -// #define DISABLE_RGB_MATRIX_SOLID_COLOR // Static single hue, no speed support -#define DISABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue -//#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes -//#define DISABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Static gradient top to bottom, speed controls how much gradient changes -//#define DISABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation -#define DISABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right -#define DISABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades saturation -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness -#define DISABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient -//#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right -//#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom -#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradent Chevron shapped scrolling left to right -#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in -#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in -#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard -#define DISABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard -#define DISABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard -#define DISABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard -#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard -//#define DISABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue -//#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation -// =================================================== Requires RGB_MATRIX_FRAMEBUFFER_EFFECTS ============================================================= -// #define DISABLE_RGB_MATRIX_TYPING_HEATMAP // How hot is your WPM! -//#define DISABLE_RGB_MATRIX_DIGITAL_RAIN // That famous computer simulation -// =================================================== RGB_MATRIX_KEYPRESSES OR RGB_MATRIX_KEYRELEASES ===================================================== -//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out -//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out -#define DISABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out -#define DISABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out -#define DISABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out -#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +// #define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +// #define ENABLE_RGB_MATRIX_BAND_SAT +// #define ENABLE_RGB_MATRIX_BAND_VAL +// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +// #define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +// #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +// #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +// #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +// #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +// #define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +// #define ENABLE_RGB_MATRIX_DUAL_BEACON +// #define ENABLE_RGB_MATRIX_RAINBOW_BEACON +// #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// #define ENABLE_RGB_MATRIX_SPLASH +// #define ENABLE_RGB_MATRIX_MULTISPLASH +// #define ENABLE_RGB_MATRIX_SOLID_SPLASH +// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ #define DEBOUNCE 5 @@ -108,7 +115,5 @@ along with this program. If not, see . #define LOCKING_RESYNC_ENABLE /* disable these deprecated features by default */ -#ifndef LINK_TIME_OPTIMIZATION_ENABLE - #define NO_ACTION_MACRO - #define NO_ACTION_FUNCTION -#endif +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/hub20/info.json b/keyboards/hub20/info.json index d58294ffbf84..2b44836728f6 100644 --- a/keyboards/hub20/info.json +++ b/keyboards/hub20/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Hub20", "url": "https://github.com/joshajohnson/hub20", "maintainer": "joshajohnson", - "width": 4, - "height": 6, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/hub20/keymaps/left_hand_numpad/keymap.c b/keyboards/hub20/keymaps/left_hand_numpad/keymap.c index 395ebc15b4a1..b5817ab3c5e6 100644 --- a/keyboards/hub20/keymaps/left_hand_numpad/keymap.c +++ b/keyboards/hub20/keymaps/left_hand_numpad/keymap.c @@ -15,15 +15,13 @@ */ #include QMK_KEYBOARD_H - - // #define LED_MERGE_NUMPAD_LEFT_HANDED_PLUS TRUE // #define LED_MERGE_NUMPAD_LEFT_HANDED_ENTER TRUE // #define LED_MERGE_NUMPAD_LEFT_HANDED_ZERO TRUE +#define MO_NLCK LT(1, KC_NLCK) // Numlock on tap, layer change on hold -#define MO_NLCK LT(1, KC_NLCK) // Numlock on tap, layer change on hold - +// clang-format off const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_left_handed( KC_MUTE, KC_MPLY, @@ -42,8 +40,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______ ) }; +// clang-format of -void encoder_update_user(uint8_t index, bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (index == 0) { /* Left Encoder */ if (clockwise) { tap_code(KC_VOLU); @@ -57,5 +56,5 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code(KC_MPRV); } } + return true; } - diff --git a/keyboards/hub20/keymaps/right_hand_numpad/keymap.c b/keyboards/hub20/keymaps/right_hand_numpad/keymap.c index 89466d31ba1b..ad3e5f49a345 100644 --- a/keyboards/hub20/keymaps/right_hand_numpad/keymap.c +++ b/keyboards/hub20/keymaps/right_hand_numpad/keymap.c @@ -15,15 +15,13 @@ */ #include QMK_KEYBOARD_H - - // #define LED_MERGE_NUMPAD_RIGHT_HANDED_PLUS TRUE // #define LED_MERGE_NUMPAD_RIGHT_HANDED_ENTER TRUE // #define LED_MERGE_NUMPAD_RIGHT_HANDED_ZERO TRUE +#define MO_NLCK LT(1, KC_NLCK) // Numlock on tap, layer change on hold -#define MO_NLCK LT(1, KC_NLCK) // Numlock on tap, layer change on hold - +// clang-format off const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //NOT TESTED, WAITING ENDORSEMENT FROM MANUFACTURER @@ -44,11 +42,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______ ) }; +// clang-format on - - - -void encoder_update_user(uint8_t index, bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (index == 0) { /* Left Encoder */ if (clockwise) { tap_code(KC_VOLU); @@ -62,5 +58,5 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code(KC_MPRV); } } + return true; } - diff --git a/keyboards/hub20/rules.mk b/keyboards/hub20/rules.mk index 59a4b8aa15fa..10a83d8d216b 100644 --- a/keyboards/hub20/rules.mk +++ b/keyboards/hub20/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output RGB_MATRIX_ENABLE = yes RGB_MATRIX_DRIVER = WS2812 diff --git a/keyboards/ianklug/grooveboard/config.h b/keyboards/ianklug/grooveboard/config.h new file mode 100644 index 000000000000..e42c5f14e83d --- /dev/null +++ b/keyboards/ianklug/grooveboard/config.h @@ -0,0 +1,158 @@ +/* +Copyright 2021 ianklug + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4B4C // "KL" = klug +#define PRODUCT_ID 0x4742 // "GB" = grooveboard +#define DEVICE_VER 0x0001 +#define MANUFACTURER ianklug +#define PRODUCT grooveboard + +/* key matrix size */ +#define MATRIX_ROWS 1 +#define MATRIX_COLS 4 + +/* + * 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 { D0, D5 } +//#define MATRIX_COL_PINS { F1, F0, B0 } +#define DIRECT_PINS { \ + { F7, F6, D1, D2 } \ +} +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +//#define DIODE_DIRECTION COL2ROW + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +//#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +//#define LED_NUM_LOCK_PIN B0 +//#define LED_CAPS_LOCK_PIN B1 +//#define LED_SCROLL_LOCK_PIN B2 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +//#define RGB_DI_PIN E2 +//#ifdef RGB_DI_PIN +//# define RGBLED_NUM 16 +//# define RGBLIGHT_HUE_STEP 8 +//# define RGBLIGHT_SAT_STEP 8 +//# define RGBLIGHT_VAL_STEP 8 +//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +//# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +//#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 + +#define USB_POLLING_INTERVAL_MS 1 +#define QMK_KEYS_PER_SCAN 4 diff --git a/keyboards/ianklug/grooveboard/grooveboard.c b/keyboards/ianklug/grooveboard/grooveboard.c new file mode 100644 index 000000000000..711e9f301dca --- /dev/null +++ b/keyboards/ianklug/grooveboard/grooveboard.c @@ -0,0 +1,17 @@ +/* Copyright 2021 ianklug + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "grooveboard.h" diff --git a/keyboards/ianklug/grooveboard/grooveboard.h b/keyboards/ianklug/grooveboard/grooveboard.h new file mode 100644 index 000000000000..51f519e8a0d9 --- /dev/null +++ b/keyboards/ianklug/grooveboard/grooveboard.h @@ -0,0 +1,33 @@ +/* Copyright 2021 ianklug + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + k00, k01, k02, k03 \ +) { \ + { k00, k01, k02, k03 } \ +} diff --git a/keyboards/ianklug/grooveboard/info.json b/keyboards/ianklug/grooveboard/info.json new file mode 100644 index 000000000000..e08cf6257445 --- /dev/null +++ b/keyboards/ianklug/grooveboard/info.json @@ -0,0 +1,15 @@ +{ + "keyboard_name": "grooveboard", + "url": "https://github.com/ianklug/grooveboard", + "maintainer": "ianklug", + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "k00", "x": 0, "y": 0, "w": 1, "h": 1}, + {"label": "k01", "x": 1, "y": 0, "w": 1, "h": 1}, + {"label": "k02", "x": 4, "y": 0, "w": 1, "h": 1}, + {"label": "k03", "x": 5, "y": 0, "w": 1, "h": 1} + ] + } + } +} diff --git a/keyboards/ianklug/grooveboard/keymaps/default/keymap.c b/keyboards/ianklug/grooveboard/keymaps/default/keymap.c new file mode 100644 index 000000000000..643d9f1d1b9f --- /dev/null +++ b/keyboards/ianklug/grooveboard/keymaps/default/keymap.c @@ -0,0 +1,28 @@ +/* Copyright 2021 ianklug + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT( + KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ) +}; \ No newline at end of file diff --git a/keyboards/ianklug/grooveboard/keymaps/default/readme.md b/keyboards/ianklug/grooveboard/keymaps/default/readme.md new file mode 100644 index 000000000000..95ec856a520d --- /dev/null +++ b/keyboards/ianklug/grooveboard/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for grooveboard diff --git a/keyboards/ianklug/grooveboard/keymaps/via/keymap.c b/keyboards/ianklug/grooveboard/keymaps/via/keymap.c new file mode 100644 index 000000000000..40546c13115e --- /dev/null +++ b/keyboards/ianklug/grooveboard/keymaps/via/keymap.c @@ -0,0 +1,37 @@ +/* Copyright 2021 ianklug + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT( + KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + [1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/ianklug/grooveboard/keymaps/via/readme.md b/keyboards/ianklug/grooveboard/keymaps/via/readme.md new file mode 100644 index 000000000000..0963f48e6215 --- /dev/null +++ b/keyboards/ianklug/grooveboard/keymaps/via/readme.md @@ -0,0 +1 @@ +# The via keymap for grooveboard diff --git a/keyboards/ianklug/grooveboard/keymaps/via/rules.mk b/keyboards/ianklug/grooveboard/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/ianklug/grooveboard/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/ianklug/grooveboard/readme.md b/keyboards/ianklug/grooveboard/readme.md new file mode 100644 index 000000000000..7ea6456e382c --- /dev/null +++ b/keyboards/ianklug/grooveboard/readme.md @@ -0,0 +1,21 @@ +# Grooveboard + +A four-key mechanical keyboard for rhythm games. + +![Grooveboard Choc PCB](https://i.imgur.com/wbMkbHX.jpg) + +* Keyboard Maintainer: [ianklug](https://github.com/ianklug) +* Hardware Supported: grooveboard, grooveboard mx, grooveboard choc +* Hardware Availability: https://github.com/ianklug/grooveboard + +Press the button on the back of the keyboard to enter bootloader mode. + +Make example for this keyboard (after setting up your build environment): + + make ianklug/grooveboard:default + +Flashing example for this keyboard: + + make ianklug/grooveboard:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/ianklug/grooveboard/rules.mk b/keyboards/ianklug/grooveboard/rules.mk new file mode 100644 index 000000000000..d2109f62500b --- /dev/null +++ b/keyboards/ianklug/grooveboard/rules.mk @@ -0,0 +1,19 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/ibm/model_m_4th_gen/info.json b/keyboards/ibm/model_m_4th_gen/info.json new file mode 100644 index 000000000000..932bfb8d73e0 --- /dev/null +++ b/keyboards/ibm/model_m_4th_gen/info.json @@ -0,0 +1,16 @@ +{ + "keyboard_name": "ibm/model_m_4th_gen", + "url": "https://github.com/purdeaandrei/overnumpad_controller_1xb", + "maintainer": "purdeaandrei", + "layouts": { + "LAYOUT_all": { + "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5}, {"x":14, "y":1.5}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":13.75, "y":3.5, "w":1.25}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":21.5, "y":3.5}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5}, {"x":13.25, "y":4.5, "w":1.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5}, {"x":0, "y":5.5, "w":1.5}, {"x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5}, {"x":5, "y":5.5, "w":6}, {"x":11, "y":5.5, "w":1.5}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5}, {"x":19.5, "y":5.5}, {"x":20.5, "y":5.5}, {"x":21.5, "y":5.5}] + }, + "LAYOUT_ansi": { + "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5, "h":2}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5, "w":2.25}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":0, "y":4.5, "w":2.25}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5, "h":2}, {"x":0, "y":5.5, "w":1.5}, {"x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":7}, {"x":11, "y":5.5, "w":1.5}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5, "w":2}, {"x":20.5, "y":5.5}] + }, + "LAYOUT_iso": { + "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.75, "y":2.5, "w":1.25, "h":2}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5, "h":2}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5, "h":2}, {"x":0, "y":5.5, "w":1.5}, {"x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":7}, {"x":11, "y":5.5, "w":1.5}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5, "w":2}, {"x":20.5, "y":5.5}] + } + } +} diff --git a/keyboards/ibm/model_m_4th_gen/keymaps/default/keymap.c b/keyboards/ibm/model_m_4th_gen/keymaps/default/keymap.c new file mode 100644 index 000000000000..b39634386177 --- /dev/null +++ b/keyboards/ibm/model_m_4th_gen/keymaps/default/keymap.c @@ -0,0 +1,33 @@ +/* Copyright 2020 Purdea Andrei + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL,KC_BSPC,KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT,KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTRL, KC_LALT, KC_NO, KC_SPC, KC_RALT, KC_RCTRL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_P0, KC_PDOT, KC_PENT + ) +}; diff --git a/keyboards/ibm/model_m_4th_gen/keymaps/default/readme.md b/keyboards/ibm/model_m_4th_gen/keymaps/default/readme.md new file mode 100644 index 000000000000..06a8d26116e9 --- /dev/null +++ b/keyboards/ibm/model_m_4th_gen/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for ibm/model_m_4th_gen/$(CONTROLLER) diff --git a/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/config.h b/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/config.h new file mode 100644 index 000000000000..df30e84aca0f --- /dev/null +++ b/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/config.h @@ -0,0 +1,76 @@ +/* Copyright 2020 Purdea Andrei + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x16C0 +#define PRODUCT_ID 0x27DB +#define DEVICE_VER 0x0001 +#define MANUFACTURER IBM/Purdea Andrei +#define PRODUCT IBM Model M (4th generation) +#define SERIAL_NUMBER "purdea.ro:overnumpad_controller" + +/* key matrix size */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 16 + +/* + * 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) + * + */ + +// All pins in order from left-to-right, as seen on the keyboard: +// C3, C2, C1, C0, A3, A4, A5, A6, A7, C4, C5, B0, B1, B10, B12, B13, B14, B15, C6, C7, C8, C9, A8, A9, A10, +// On this chip A10, B10 have stronger pull-ups, so it's better to avoid them if possible. + +// On this keyboard the right-most pin is not used, A10 can be ignored. +// On this keyboard the pins are ordered in the following way: (top/bottom meaning where the trace is routed on the membranes) +// top, top, top, top, top, top, top, top, bottom, top, bottom, top, bottom, top, bottom, top, bottom, bottom, top, top, top, top, bottom, bottom + +#define MATRIX_COL_PINS { C3, C2, C1, C0, A3, A4, A5, A6, C4, B0, B10, B13, C6, C7, C8, C9 } +#define MATRIX_ROW_PINS { A7, C5, B1, B12, B14, B15, A8, A9 } +//#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION ROW2COL + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +#define MATRIX_HAS_GHOST + +#define STM32_HSECLK 16000000 + +#define SOLENOID_PIN B5 +#define HAPTIC_ENABLE_PIN C13 +#define SOLENOID_DEFAULT_DWELL 4 +#define SOLENOID_MIN_DWELL 4 +#define HAPTIC_OFF_IN_LOW_POWER 1 +#define NO_HAPTIC_MOD + +#define LED_NUM_LOCK_PIN C12 +#define LED_CAPS_LOCK_PIN C11 +#define LED_SCROLL_LOCK_PIN C10 +#define LED_ON_STATE 1 diff --git a/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/overnumpad_1xb.c b/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/overnumpad_1xb.c new file mode 100644 index 000000000000..cb5ec3dc124e --- /dev/null +++ b/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/overnumpad_1xb.c @@ -0,0 +1,24 @@ +/* Copyright 2020 Purdea Andrei + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "overnumpad_1xb.h" + +void keyboard_post_init_kb(void) +{ + //debug_enable=true; + //debug_matrix=true; +} + diff --git a/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/overnumpad_1xb.h b/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/overnumpad_1xb.h new file mode 100644 index 000000000000..4e210c53ac7c --- /dev/null +++ b/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/overnumpad_1xb.h @@ -0,0 +1,91 @@ +/* Copyright 2020 Purdea Andrei + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + + +#define LAYOUT_all( \ + k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ + k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_bsp_hidden, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ + k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_backsl, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ + k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_nuhs,k_return, kp_4, kp_5, kp_6, kp_plus_hidden, \ + k_lshift,k_nubs,k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift_hidden, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ + k_lctrl, k_lalt, k_code, k_space, k_ralt, k_rctrl, k_left, k_down, k_right, kp_0_hidden, kp_0, kp_dot, kp_enter_hidden \ +) \ +{ \ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ + /* 0 */ { k_esc, k_g, k_h, k_f6, KC_NO, k_singlequote, k_f5, KC_NO, kp_0_hidden, kp_0, kp_dot, k_up, k_lalt, KC_NO, k_f4, k_nubs }, \ + /* 1 */ { k_tab, k_t, k_y, k_squarebrcl, k_f7, k_squarebrop, k_backspace, k_lshift, kp_4, kp_5, kp_6, kp_plus_hidden, KC_NO, KC_NO, k_f3, k_caps }, \ + /* 2 */ { k_tild, k_5, k_6, k_equals, k_f8, k_minus, k_f9, KC_NO, k_del, k_ins, k_pgup, k_home, KC_NO, k_lctrl, k_f2, k_f1 }, \ + /* 3 */ { k_1, k_4, k_7, k_8, k_9, k_0, k_f10, KC_NO, k_f11, k_f12, k_pgdn, k_end, k_prscr, KC_NO, k_3, k_2 }, \ + /* 4 */ { k_q, k_r, k_u, k_i, k_o, k_p, k_bsp_hidden, KC_NO, kp_7, kp_8, kp_9, kp_plus, k_scrl, KC_NO, k_e, k_w }, \ + /* 5 */ { k_a, k_f, k_j, k_k, k_l, k_semicolon, k_backsl, KC_NO, kp_1, kp_2, kp_3, kp_enter, kp_enter_hidden, KC_NO, k_d, k_s }, \ + /* 6 */ { k_z, k_v, k_m, k_cm, k_period, k_nuhs, k_return, k_rshift, kp_nl, kp_div, kp_mult, k_pause, KC_NO, k_rctrl, k_c, k_x }, \ + /* 7 */ { KC_NO, k_b, k_n, k_rshift_hidden, KC_NO, k_fwslash, k_space, KC_NO, k_down, k_right, kp_minus, k_left, k_ralt, KC_NO, KC_NO, k_code } \ +} + +// the following three key mappings are informed guesses, based on similarity of the gen4 membrane to previous-gen membranes: kp_plus, k_ins, kp_0_hidden + +#define LAYOUT_ansi( \ + k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ + k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ + k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_backsl, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ + k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_return, kp_4, kp_5, kp_6, \ + k_lshift, k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ + k_lctrl, k_lalt, k_space, k_ralt, k_rctrl, k_left, k_down, k_right, kp_0, kp_dot \ +) \ +{ \ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ + /* 0 */ { k_esc, k_g, k_h, k_f6, KC_NO, k_singlequote, k_f5, KC_NO, KC_NO, kp_0, kp_dot, k_up, k_lalt, KC_NO, k_f4, KC_NO }, \ + /* 1 */ { k_tab, k_t, k_y, k_squarebrcl, k_f7, k_squarebrop, k_backspace, k_lshift, kp_4, kp_5, kp_6, KC_NO, KC_NO, KC_NO, k_f3, k_caps }, \ + /* 2 */ { k_tild, k_5, k_6, k_equals, k_f8, k_minus, k_f9, KC_NO, k_del, k_ins, k_pgup, k_home, KC_NO, k_lctrl, k_f2, k_f1 }, \ + /* 3 */ { k_1, k_4, k_7, k_8, k_9, k_0, k_f10, KC_NO, k_f11, k_f12, k_pgdn, k_end, k_prscr, KC_NO, k_3, k_2 }, \ + /* 4 */ { k_q, k_r, k_u, k_i, k_o, k_p, KC_NO, KC_NO, kp_7, kp_8, kp_9, kp_plus, k_scrl, KC_NO, k_e, k_w }, \ + /* 5 */ { k_a, k_f, k_j, k_k, k_l, k_semicolon, k_backsl, KC_NO, kp_1, kp_2, kp_3, kp_enter, KC_NO, KC_NO, k_d, k_s }, \ + /* 6 */ { k_z, k_v, k_m, k_cm, k_period, KC_NO, k_return, k_rshift, kp_nl, kp_div, kp_mult, k_pause, KC_NO, k_rctrl, k_c, k_x }, \ + /* 7 */ { KC_NO, k_b, k_n, KC_NO, KC_NO, k_fwslash, k_space, KC_NO, k_down, k_right, kp_minus, k_left, k_ralt, KC_NO, KC_NO, KC_NO } \ +} + +#define LAYOUT_iso( \ + k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ + k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ + k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_return, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ + k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_nuhs, kp_4, kp_5, kp_6, \ + k_lshift,k_nubs,k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ + k_lctrl, k_lalt, k_space, k_ralt, k_rctrl, k_left, k_down, k_right, kp_0, kp_dot \ +) \ +{ \ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ + /* 0 */ { k_esc, k_g, k_h, k_f6, KC_NO, k_singlequote, k_f5, KC_NO, KC_NO, kp_0, kp_dot, k_up, k_lalt, KC_NO, k_f4, k_nubs }, \ + /* 1 */ { k_tab, k_t, k_y, k_squarebrcl, k_f7, k_squarebrop, k_backspace, k_lshift, kp_4, kp_5, kp_6, KC_NO, KC_NO, KC_NO, k_f3, k_caps }, \ + /* 2 */ { k_tild, k_5, k_6, k_equals, k_f8, k_minus, k_f9, KC_NO, k_del, k_ins, k_pgup, k_home, KC_NO, k_lctrl, k_f2, k_f1 }, \ + /* 3 */ { k_1, k_4, k_7, k_8, k_9, k_0, k_f10, KC_NO, k_f11, k_f12, k_pgdn, k_end, k_prscr, KC_NO, k_3, k_2 }, \ + /* 4 */ { k_q, k_r, k_u, k_i, k_o, k_p, KC_NO, KC_NO, kp_7, kp_8, kp_9, kp_plus, k_scrl, KC_NO, k_e, k_w }, \ + /* 5 */ { k_a, k_f, k_j, k_k, k_l, k_semicolon, KC_NO, KC_NO, kp_1, kp_2, kp_3, kp_enter, KC_NO, KC_NO, k_d, k_s }, \ + /* 6 */ { k_z, k_v, k_m, k_cm, k_period, k_nuhs, k_return, k_rshift, kp_nl, kp_div, kp_mult, k_pause, KC_NO, k_rctrl, k_c, k_x }, \ + /* 7 */ { KC_NO, k_b, k_n, KC_NO, KC_NO, k_fwslash, k_space, KC_NO, k_down, k_right, kp_minus, k_left, k_ralt, KC_NO, KC_NO, KC_NO } \ +} diff --git a/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/readme.md b/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/readme.md new file mode 100644 index 000000000000..dd1bd68ef8d8 --- /dev/null +++ b/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/readme.md @@ -0,0 +1,26 @@ +# ibm/model_m_4th_gen/overnumpad_1xb + +![ibm/model_m_4th_gen/overnumpad_1xb](https://deskthority.net/wiki/images/thumb/1/11/IBM_Model_M_1391406_--_top.jpg/499px-IBM_Model_M_1391406_--_top.jpg) + +This firmware is intended to support 4th generation IBM Model M keyboards (the ones that have their controllers under the locklights header). +* Confirmed to be working with: + * PN: 1391412 Date: 20-03-97 Made in United Kingdom by IBM United Kingdom Limited, Greenock, Scotland, UK + +* Keyboard Maintainer: [Purdea Andrei](https://github.com/purdeaandrei) +* Hardware Supported: OverNumpad controller v1.Xb +* Hardware Availability: + * [controller](https://github.com/purdeaandrei/overnumpad_controller_1xb) + +To place the keyboard into bootloader mode in order to flash it, hold the ESC key while plugging the board in. +It's possible to make this feature not work, by flashing the wrong firmware onto the keyboard. +If that happens, open up the keyboard, and press the RST&PROG button to enter bootloader mode. + +Make example for this keyboard (after setting up your build environment): + + make ibm/model_m_4th_gen/overnumpad_1xb:default + +Flashing example for this keyboard: + + make ibm/model_m_4th_gen/overnumpad_1xb:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/rules.mk b/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/rules.mk new file mode 100644 index 000000000000..ed6597e5b253 --- /dev/null +++ b/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = STM32F446 # STM32F446RET6 + +# Bootloader selection +BOOTLOADER = stm32-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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +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 = yes +HAPTIC_DRIVER = SOLENOID diff --git a/keyboards/id67/config.h b/keyboards/id67/config.h new file mode 100644 index 000000000000..fbf99cf673b4 --- /dev/null +++ b/keyboards/id67/config.h @@ -0,0 +1,67 @@ +/* Copyright 2021 Tybera + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x6964 /* "id" */ +#define PRODUCT_ID 0x0067 +#define DEVICE_VER 0x0001 +#define MANUFACTURER IDOBAO +#define PRODUCT ID67 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * 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, F7 } +#define MATRIX_COL_PINS { C7, F6, F5, F4, F1, B7, D5, D1, D2, D3, D4, D0, D6, D7, B4 } + +#define DIODE_DIRECTION COL2ROW + +#define RGB_DI_PIN F0 +#ifdef RGB_DI_PIN + #define RGBLED_NUM 77 + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 150 /* The maximum brightness level */ + #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ + #define RGBLIGHT_ANIMATIONS +// /*== or choose animations ==*/ +// #define RGBLIGHT_EFFECT_BREATHING +// #define RGBLIGHT_EFFECT_RAINBOW_MOOD +// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL +// #define RGBLIGHT_EFFECT_SNAKE +// #define RGBLIGHT_EFFECT_KNIGHT +// #define RGBLIGHT_EFFECT_CHRISTMAS +// #define RGBLIGHT_EFFECT_STATIC_GRADIENT +// #define RGBLIGHT_EFFECT_RGB_TEST +// #define RGBLIGHT_EFFECT_ALTERNATING +#endif diff --git a/keyboards/id67/id67.c b/keyboards/id67/id67.c new file mode 100644 index 000000000000..d0377a4345b1 --- /dev/null +++ b/keyboards/id67/id67.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Tybera + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "id67.h" \ No newline at end of file diff --git a/keyboards/id67/id67.h b/keyboards/id67/id67.h new file mode 100644 index 000000000000..7c0a6d5aa8df --- /dev/null +++ b/keyboards/id67/id67.h @@ -0,0 +1,33 @@ +/* Copyright 2021 Tybera + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_65_ansi_blocker( \ + 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, K2D, K2E, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K40, K41, K43, K46, 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, KC_NO, K2D, K2E }, \ + { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \ + { K40, K41, KC_NO, K43, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E }, \ +} diff --git a/keyboards/id67/info.json b/keyboards/id67/info.json new file mode 100644 index 000000000000..f3114121c18a --- /dev/null +++ b/keyboards/id67/info.json @@ -0,0 +1,85 @@ +{ + "keyboard_name": "ID67", + "url": "", + "maintainer": "qmk", + "layout_aliases": { + "LAYOUT": "LAYOUT_65_ansi_blocker" + }, + "layouts": { + "LAYOUT_65_ansi_blocker": { + "layout": [ + {"label":"K00 (B0,C7)", "x":0, "y":0}, + {"label":"K01 (B0,F6)", "x":1, "y":0}, + {"label":"K02 (B0,F5)", "x":2, "y":0}, + {"label":"K03 (B0,F4)", "x":3, "y":0}, + {"label":"K04 (B0,F1)", "x":4, "y":0}, + {"label":"K05 (B0,B7)", "x":5, "y":0}, + {"label":"K06 (B0,D5)", "x":6, "y":0}, + {"label":"K07 (B0,D1)", "x":7, "y":0}, + {"label":"K08 (B0,D2)", "x":8, "y":0}, + {"label":"K09 (B0,D3)", "x":9, "y":0}, + {"label":"K0A (B0,D4)", "x":10, "y":0}, + {"label":"K0B (B0,D0)", "x":11, "y":0}, + {"label":"K0C (B0,D6)", "x":12, "y":0}, + {"label":"K0D (B0,D7)", "x":13, "y":0, "w":2}, + {"label":"K0E (B0,B4)", "x":15, "y":0}, + + {"label":"K10 (B1,C7)", "x":0, "y":1, "w":1.5}, + {"label":"K11 (B1,F6)", "x":1.5, "y":1}, + {"label":"K12 (B1,F5)", "x":2.5, "y":1}, + {"label":"K13 (B1,F4)", "x":3.5, "y":1}, + {"label":"K14 (B1,F1)", "x":4.5, "y":1}, + {"label":"K15 (B1,B7)", "x":5.5, "y":1}, + {"label":"K16 (B1,D5)", "x":6.5, "y":1}, + {"label":"K17 (B1,D1)", "x":7.5, "y":1}, + {"label":"K18 (B1,D2)", "x":8.5, "y":1}, + {"label":"K19 (B1,D3)", "x":9.5, "y":1}, + {"label":"K1A (B1,D4)", "x":10.5, "y":1}, + {"label":"K1B (B1,D0)", "x":11.5, "y":1}, + {"label":"K1C (B1,D6)", "x":12.5, "y":1}, + {"label":"K1D (B1,D7)", "x":13.5, "y":1, "w":1.5}, + {"label":"K1E (B1,B4)", "x":15, "y":1}, + + {"label":"K20 (B2,C7)", "x":0, "y":2, "w":1.75}, + {"label":"K21 (B2,F6)", "x":1.75, "y":2}, + {"label":"K22 (B2,F5)", "x":2.75, "y":2}, + {"label":"K23 (B2,F4)", "x":3.75, "y":2}, + {"label":"K24 (B2,F1)", "x":4.75, "y":2}, + {"label":"K25 (B2,B7)", "x":5.75, "y":2}, + {"label":"K26 (B2,D5)", "x":6.75, "y":2}, + {"label":"K27 (B2,D1)", "x":7.75, "y":2}, + {"label":"K28 (B2,D2)", "x":8.75, "y":2}, + {"label":"K29 (B2,D3)", "x":9.75, "y":2}, + {"label":"K2A (B2,D4)", "x":10.75, "y":2}, + {"label":"K2B (B2,D0)", "x":11.75, "y":2}, + {"label":"K2D (B2,D7)", "x":12.75, "y":2, "w":2.25}, + {"label":"K2E (B2,B4)", "x":15, "y":2}, + + {"label":"K30 (B3,C7)", "x":0, "y":3, "w":2.25}, + {"label":"K32 (B3,F5)", "x":2.25, "y":3}, + {"label":"K33 (B3,F4)", "x":3.25, "y":3}, + {"label":"K34 (B3,F1)", "x":4.25, "y":3}, + {"label":"K35 (B3,B7)", "x":5.25, "y":3}, + {"label":"K36 (B3,D5)", "x":6.25, "y":3}, + {"label":"K37 (B3,D1)", "x":7.25, "y":3}, + {"label":"K38 (B3,D2)", "x":8.25, "y":3}, + {"label":"K39 (B3,D3)", "x":9.25, "y":3}, + {"label":"K3A (B3,D4)", "x":10.25, "y":3}, + {"label":"K3B (B3,D0)", "x":11.25, "y":3}, + {"label":"K3C (B3,D6)", "x":12.25, "y":3, "w":1.75}, + {"label":"K3D (B3,D7)", "x":14, "y":3}, + {"label":"K3E (B3,B4)", "x":15, "y":3}, + + {"label":"K40 (F7,C7)", "x":0, "y":4, "w":1.25}, + {"label":"K41 (F7,F6)", "x":1.25, "y":4, "w":1.25}, + {"label":"K43 (F7,F4)", "x":2.5, "y":4, "w":1.25}, + {"label":"K46 (F7,D5)", "x":3.75, "y":4, "w":6.25}, + {"label":"K4A (F7,D4)", "x":10, "y":4, "w":1.25}, + {"label":"K4B (F7,D0)", "x":11.25, "y":4, "w":1.25}, + {"label":"K4C (F7,D6)", "x":13, "y":4}, + {"label":"K4D (F7,D7)", "x":14, "y":4}, + {"label":"K4E (F7,B4)", "x":15, "y":4} + ] + } + } +} diff --git a/keyboards/id67/keymaps/default/keymap.c b/keyboards/id67/keymaps/default/keymap.c new file mode 100644 index 000000000000..3bb880891f5e --- /dev/null +++ b/keyboards/id67/keymaps/default/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2021 Tybera + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi_blocker( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_TILD, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_ansi_blocker( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, + _______, RGB_TOG, KC_UP, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, KC_INS, KC_HOME, KC_PGUP, _______, _______, + _______, RESET, BL_DEC, BL_TOGG, BL_INC, KC_VOLD, KC_MUTE, KC_VOLU, _______, KC_DEL, KC_END, KC_PGDN, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; diff --git a/keyboards/id67/keymaps/via/keymap.c b/keyboards/id67/keymaps/via/keymap.c new file mode 100644 index 000000000000..8155067b9f7b --- /dev/null +++ b/keyboards/id67/keymaps/via/keymap.c @@ -0,0 +1,48 @@ +/* Copyright 2021 Tybera + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi_blocker( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_TILD, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_ansi_blocker( + 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, _______, _______, + _______, RGB_TOG, KC_UP, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, KC_INS, KC_HOME, KC_PGUP, _______, _______, + _______, RESET, BL_DEC, BL_TOGG, BL_INC, KC_VOLD, KC_MUTE, KC_VOLU, _______, KC_DEL, KC_END, KC_PGDN, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_65_ansi_blocker( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_65_ansi_blocker( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/id67/keymaps/via/rules.mk b/keyboards/id67/keymaps/via/rules.mk new file mode 100644 index 000000000000..ca9fed0e6b53 --- /dev/null +++ b/keyboards/id67/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +LTO_ENABLE = yes +VIA_ENABLE = yes diff --git a/keyboards/id67/readme.md b/keyboards/id67/readme.md new file mode 100644 index 000000000000..eca398184a71 --- /dev/null +++ b/keyboards/id67/readme.md @@ -0,0 +1,19 @@ +# IDOBAO ID67 + +A 65% hotswap keyboard from IDOBAO. + +## ANSI support: + +* Keyboard Maintainer: Tybera +* Hardware Supported: IDOBAO ID67 +* Hardware Availability: [IDOBAO]https://www.idobao.net/products/idobao-id67-65-hot-swappable-mechanical-keyboard-kit-1 + +Make example for this keyboard (after setting up your build environment): + + make id67:default + +Flashing example for this keyboard: + + make id67:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/id67/rules.mk b/keyboards/id67/rules.mk new file mode 100644 index 000000000000..d6bcaed026d2 --- /dev/null +++ b/keyboards/id67/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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +KEY_LOCK_ENABLE = yes # Enable KC_LOCK support + +LAYOUTS = 65_ansi_blocker diff --git a/keyboards/id80/config.h b/keyboards/id80/config.h index fb11ab2cbe26..c6cf66738225 100644 --- a/keyboards/id80/config.h +++ b/keyboards/id80/config.h @@ -57,7 +57,8 @@ along with this program. If not, see . #define BACKLIGHT_BREATHING #define BACKLIGHT_LEVELS 3 -#define CAPS_LOCK_LED_PIN C7 +#define LED_CAPS_LOCK_PIN C7 +#define LED_PIN_ON_STATE 0 #define RGB_DI_PIN E2 #ifdef RGB_DI_PIN diff --git a/keyboards/id80/id80.c b/keyboards/id80/id80.c index 5e5dbc31249b..4a06660de91f 100644 --- a/keyboards/id80/id80.c +++ b/keyboards/id80/id80.c @@ -14,23 +14,3 @@ * along with this program. If not, see . */ #include "id80.h" - -void matrix_init_kb(void) { - led_init_ports(); - matrix_init_user(); -} - -void led_init_ports(void) { - setPinOutput(CAPS_LOCK_LED_PIN); -} - -bool led_update_kb(led_t led_state) { - bool res = led_update_user(led_state); - if (res) { - writePin(CAPS_LOCK_LED_PIN, !led_state.caps_lock); - } - return res; -} - -// partially generated by KBFirmware JSON to QMK Parser -// https://noroadsleft.github.io/kbf_qmk_converter/ diff --git a/keyboards/id80/info.json b/keyboards/id80/info.json index 251ae157c99b..072b4ca4db5c 100644 --- a/keyboards/id80/info.json +++ b/keyboards/id80/info.json @@ -2,8 +2,6 @@ "keyboard_name": "ID80", "url": "", "maintainer": "qmk", - "width": 16.25, - "height": 6.5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/id80/rules.mk b/keyboards/id80/rules.mk index 18bd81e57511..4990aa6d9343 100644 --- a/keyboards/id80/rules.mk +++ b/keyboards/id80/rules.mk @@ -5,33 +5,21 @@ DEFAULT_FOLDER = id80/ansi MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output # partially generated by KBFirmware JSON to QMK Parser # https://noroadsleft.github.io/kbf_qmk_converter/ diff --git a/keyboards/id87/config.h b/keyboards/id87/config.h index e0a81eb755f3..a268091d40cc 100644 --- a/keyboards/id87/config.h +++ b/keyboards/id87/config.h @@ -51,7 +51,7 @@ along with this program. If not, see . #define BACKLIGHT_LEVELS 3 #endif -#define CAPS_LOCK_LED_PIN C7 +#define LED_CAPS_LOCK_PIN C7 /* Set 0 if debouncing isn't needed */ #define DEBOUNCE 5 diff --git a/keyboards/id87/id87.c b/keyboards/id87/id87.c index 0ec1c76bc916..145edc163998 100644 --- a/keyboards/id87/id87.c +++ b/keyboards/id87/id87.c @@ -13,20 +13,3 @@ along with this program. If not, see . */ #include "id87.h" - -void matrix_init_kb(void) { - led_init_ports(); - matrix_init_user(); -} - -void led_init_ports(void) { - setPinOutput(CAPS_LOCK_LED_PIN); -} - -bool led_update_kb(led_t led_state) { - bool res = led_update_user(led_state); - if (res) { - writePin(CAPS_LOCK_LED_PIN, led_state.caps_lock); - } - return res; -} \ No newline at end of file diff --git a/keyboards/id87/info.json b/keyboards/id87/info.json index f07ac746d561..f154bbd940de 100644 --- a/keyboards/id87/info.json +++ b/keyboards/id87/info.json @@ -2,8 +2,6 @@ "keyboard_name": "ID87", "url": "https://www.idobao.net/products/idobao-id87-80-hot-swappable-mechanical-keyboard-kit", "maintainer": "qmk", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT_tkl_ansi": { "layout": [ diff --git a/keyboards/id87/rules.mk b/keyboards/id87/rules.mk index 35ecb29013da..fb1251b229e7 100644 --- a/keyboards/id87/rules.mk +++ b/keyboards/id87/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LAYOUTS = tkl_ansi diff --git a/keyboards/idb/idb_60/config.h b/keyboards/idb/idb_60/config.h index 6b33038c637a..8a0852ccbd10 100644 --- a/keyboards/idb/idb_60/config.h +++ b/keyboards/idb/idb_60/config.h @@ -82,54 +82,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. diff --git a/keyboards/idb/idb_60/idb_60.h b/keyboards/idb/idb_60/idb_60.h index 069f4bcf56b3..5ee07bff36b6 100644 --- a/keyboards/idb/idb_60/idb_60.h +++ b/keyboards/idb/idb_60/idb_60.h @@ -10,42 +10,161 @@ void _idb_60_fn_led_off(void); #define _idb_60_esc_led_on() _idb_60_fn_led_on() #define _idb_60_esc_led_off() _idb_60_fn_led_off() -#define LAYOUT( \ +#define XXX KC_NO + +/* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───────┐ + * │00 │10 │01 │11 │02 │12 │03 │13 │04 │14 │05 │15 │06 │16 │07 │ │16 │ 2u Backspace + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ └─┬─────┤ + * │20 │30 │21 │31 │22 │32 │23 │33 │24 │34 │25 │35 │26 │36 │ │ │ + * 2.25u ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ┌──┴┐56 │ ISO Enter + * LShift │40 │50 │41 │51 │42 │52 │43 │53 │44 │54 │45 │55 │56 │ │36 │ │ + * ┌────────┐ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌─┴───┴────┤ + * │60 │ │60 │70 │61 │71 │62 │72 │63 │73 │64 │74 │65 │75 │66 │76 │ │66 │ 2.75u RShift + * └────────┘ ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ └──────────┘ + * │80 │90 │81 │93 │95 │86 │96 │ + * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ + * ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐ + * │80 │ │81 │93 │95 │ │96 │ WKL + * └─────┘ └─────┴───────────────────────────┴─────┘ └─────┘ + * ┌───┬─────┬───────────────────────────┬─────┬───┐ + * │90 │81 │93 │95 │86 │ MX HHKB + * └───┴─────┴───────────────────────────┴─────┴───┘ + * ┌───┬─────┬───────────────────────┬─────┬───┐ + * │90 │81 │93 │95 │86 │ True HHKB + * └───┴─────┴───────────────────────┴─────┴───┘ + */ + + +#define LAYOUT_all( \ K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, K07, \ K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, \ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K56, \ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K66, K76, \ K80, K90, K81, K93, K95, K86, K96 \ ) { \ - { K00, K01, K02, K03, K04, K05, K06, K07 }, \ - { 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, K44, K45, KC_NO }, \ - { K50, K51, K52, K53, K54, K55, K56 }, \ - { K60, K61, K62, K63, K64, K65, K66 }, \ - { K70, K71, K72, K73, K74, K75, K76 }, \ - { K80, K81, KC_NO, KC_NO, KC_NO, KC_NO, K86 }, \ - { K90, KC_NO, KC_NO, K93, KC_NO, K95, K96 } \ + { K00, K01, K02, K03, K04, K05, K06, K07 }, \ + { K10, K11, K12, K13, K14, K15, K16, XXX }, \ + { K20, K21, K22, K23, K24, K25, K26, XXX }, \ + { K30, K31, K32, K33, K34, K35, K36, XXX }, \ + { K40, K41, K42, K43, K44, K45, XXX, XXX }, \ + { K50, K51, K52, K53, K54, K55, K56, XXX }, \ + { K60, K61, K62, K63, K64, K65, K66, XXX }, \ + { K70, K71, K72, K73, K74, K75, K76, XXX }, \ + { K80, K81, XXX, XXX, XXX, XXX, K86, XXX }, \ + { K90, XXX, XXX, K93, XXX, K95, K96, XXX } \ } -#define LAYOUT_all LAYOUT +#define LAYOUT_60_ansi_tsangan( \ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, \ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K56, \ + K60, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K66, \ + K80, K90, K81, K93, K95, K86, K96 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, XXX }, \ + { K10, K11, K12, K13, K14, K15, K16, XXX }, \ + { K20, K21, K22, K23, K24, K25, K26, XXX }, \ + { K30, K31, K32, K33, K34, K35, K36, XXX }, \ + { K40, K41, K42, K43, K44, K45, XXX, XXX }, \ + { K50, K51, K52, K53, K54, K55, K56, XXX }, \ + { K60, K61, K62, K63, K64, K65, K66, XXX }, \ + { XXX, K71, K72, K73, K74, K75, XXX, XXX }, \ + { K80, K81, XXX, XXX, XXX, XXX, K86, XXX }, \ + { K90, XXX, XXX, K93, XXX, K95, K96, XXX } \ +} + +#define LAYOUT_60_tsangan_hhkb( \ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, K07, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, \ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K56, \ + K60, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K66, K76, \ + K80, K90, K81, K93, K95, K86, K96 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07 }, \ + { K10, K11, K12, K13, K14, K15, K16, XXX }, \ + { K20, K21, K22, K23, K24, K25, K26, XXX }, \ + { K30, K31, K32, K33, K34, K35, K36, XXX }, \ + { K40, K41, K42, K43, K44, K45, XXX, XXX }, \ + { K50, K51, K52, K53, K54, K55, K56, XXX }, \ + { K60, K61, K62, K63, K64, K65, K66, XXX }, \ + { XXX, K71, K72, K73, K74, K75, K76, XXX }, \ + { K80, K81, XXX, XXX, XXX, XXX, K86, XXX }, \ + { K90, XXX, XXX, K93, XXX, K95, K96, XXX } \ +} -#define LAYOUT_default( \ +#define LAYOUT_60_ansi_wkl_split_rshift( \ K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, \ K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, \ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K56, \ K60, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K66, K76, \ K80, K81, K93, K95, K96 \ ) { \ - { K00, K01, K02, K03, K04, K05, K06, KC_NO }, \ - { 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, K44, K45, KC_NO }, \ - { K50, K51, K52, K53, K54, K55, K56 }, \ - { K60, K61, K62, K63, K64, K65, K66 }, \ - { KC_NO, K71, K72, K73, K74, K75, K76 }, \ - { K80, K81, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ - { KC_NO, KC_NO, KC_NO, K93, KC_NO, K95, K96 } \ + { K00, K01, K02, K03, K04, K05, K06, XXX }, \ + { K10, K11, K12, K13, K14, K15, K16, XXX }, \ + { K20, K21, K22, K23, K24, K25, K26, XXX }, \ + { K30, K31, K32, K33, K34, K35, K36, XXX }, \ + { K40, K41, K42, K43, K44, K45, XXX, XXX }, \ + { K50, K51, K52, K53, K54, K55, K56, XXX }, \ + { K60, K61, K62, K63, K64, K65, K66, XXX }, \ + { XXX, K71, K72, K73, K74, K75, K76, XXX }, \ + { K80, K81, XXX, XXX, XXX, XXX, XXX, XXX }, \ + { XXX, XXX, XXX, K93, XXX, K95, K96, XXX } \ +} + +#define LAYOUT_60_iso_tsangan( \ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, \ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K36, K56, \ + K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K66, \ + K80, K90, K81, K93, K95, K86, K96 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, XXX }, \ + { K10, K11, K12, K13, K14, K15, K16, XXX }, \ + { K20, K21, K22, K23, K24, K25, K26, XXX }, \ + { K30, K31, K32, K33, K34, K35, K36, XXX }, \ + { K40, K41, K42, K43, K44, K45, XXX, XXX }, \ + { K50, K51, K52, K53, K54, K55, K56, XXX }, \ + { K60, K61, K62, K63, K64, K65, K66, XXX }, \ + { K70, K71, K72, K73, K74, K75, XXX, XXX }, \ + { K80, K81, XXX, XXX, XXX, XXX, K86, XXX }, \ + { K90, XXX, XXX, K93, XXX, K95, K96, XXX } \ +} + +#define LAYOUT_60_iso_tsangan_hhkb( \ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, K07, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, \ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K36, K56, \ + K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K66, K76, \ + K80, K90, K81, K93, K95, K86, K96 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07 }, \ + { K10, K11, K12, K13, K14, K15, K16, XXX }, \ + { K20, K21, K22, K23, K24, K25, K26, XXX }, \ + { K30, K31, K32, K33, K34, K35, K36, XXX }, \ + { K40, K41, K42, K43, K44, K45, XXX, XXX }, \ + { K50, K51, K52, K53, K54, K55, K56, XXX }, \ + { K60, K61, K62, K63, K64, K65, K66, XXX }, \ + { K70, K71, K72, K73, K74, K75, K76, XXX }, \ + { K80, K81, XXX, XXX, XXX, XXX, K86, XXX }, \ + { K90, XXX, XXX, K93, XXX, K95, K96, XXX } \ +} + +#define LAYOUT_60_iso_wkl_split_rshift( \ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, \ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K36, K56, \ + K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K66, K76, \ + K80, K81, K93, K95, K96 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, XXX }, \ + { K10, K11, K12, K13, K14, K15, K16, XXX }, \ + { K20, K21, K22, K23, K24, K25, K26, XXX }, \ + { K30, K31, K32, K33, K34, K35, K36, XXX }, \ + { K40, K41, K42, K43, K44, K45, XXX, XXX }, \ + { K50, K51, K52, K53, K54, K55, K56, XXX }, \ + { K60, K61, K62, K63, K64, K65, K66, XXX }, \ + { K70, K71, K72, K73, K74, K75, K76, XXX }, \ + { K80, K81, XXX, XXX, XXX, XXX, XXX, XXX }, \ + { XXX, XXX, XXX, K93, XXX, K95, K96, XXX } \ } diff --git a/keyboards/idb/idb_60/info.json b/keyboards/idb/idb_60/info.json index 82338caa8880..d78c848c6d74 100644 --- a/keyboards/idb/idb_60/info.json +++ b/keyboards/idb/idb_60/info.json @@ -1,27 +1,30 @@ { "keyboard_name": "idb 60", "url": "https://idb-keyboards.xyz/60", - "maintainer": "pngu", - "width": 15, - "height": 5, + "maintainer": "itspngu", + "layout_aliases": { + "LAYOUT": "LAYOUT_all", + "LAYOUT_default": "LAYOUT_60_ansi_wkl_split_rshift" + }, "layouts": { - "LAYOUT_default": { - "key_count": 59, + "LAYOUT_all": { "layout": [ {"label":"Esc", "x":0, "y":0}, - {"label":"!\n1", "x":1, "y":0}, - {"label":"@\n2", "x":2, "y":0}, - {"label":"#\n3", "x":3, "y":0}, - {"label":"$\n4", "x":4, "y":0}, - {"label":"%\n5", "x":5, "y":0}, - {"label":"^\n6", "x":6, "y":0}, - {"label":"&\n7", "x":7, "y":0}, - {"label":"*\n8", "x":8, "y":0}, - {"label":"(\n9", "x":9, "y":0}, - {"label":")\n0", "x":10, "y":0}, - {"label":"_\n-", "x":11, "y":0}, - {"label":"+\n=", "x":12, "y":0}, - {"label":"BS", "x":13, "y":0, "w":2.0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2@", "x":2, "y":0}, + {"label":"3#", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":7, "y":0}, + {"label":"8*", "x":8, "y":0}, + {"label":"9(", "x":9, "y":0}, + {"label":"0)", "x":10, "y":0}, + {"label":"-_", "x":11, "y":0}, + {"label":"=+", "x":12, "y":0}, + {"label":"BS", "x":13, "y":0}, + {"label":"`~", "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}, @@ -33,9 +36,10 @@ {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, - {"label":"{\n[", "x":11.5, "y":1}, - {"label":"}\n]", "x":12.5, "y":1}, - {"label":"|\n\\", "x":13.5, "y":1, "w":1.5}, + {"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}, @@ -46,10 +50,12 @@ {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, - {"label":":\n;", "x":10.75, "y":2}, - {"label":"\"\n'", "x":11.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":2.25}, + + {"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}, @@ -57,36 +63,107 @@ {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, - {"label":"<\n,", "x":9.25, "y":3}, - {"label":">\n.", "x":10.25, "y":3}, - {"label":"?\n/", "x":11.25, "y":3}, + {"label":",<", "x":9.25, "y":3}, + {"label":".>", "x":10.25, "y":3}, + {"label":"/?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Fn", "x":14, "y":3}, + {"label":"Ctrl", "x":0, "y":4, "w":1.5}, + {"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":"Alt", "x":11, "y":4, "w":1.5}, + {"label":"Win", "x":12.5, "y":4}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5} ] }, - "LAYOUT": { - "key_count": 63, + "LAYOUT_60_ansi_tsangan": { "layout": [ {"label":"Esc", "x":0, "y":0}, - {"label":"!\n1", "x":1, "y":0}, - {"label":"@\n2", "x":2, "y":0}, - {"label":"#\n3", "x":3, "y":0}, - {"label":"$\n4", "x":4, "y":0}, - {"label":"%\n5", "x":5, "y":0}, - {"label":"^\n6", "x":6, "y":0}, - {"label":"&\n7", "x":7, "y":0}, - {"label":"*\n8", "x":8, "y":0}, - {"label":"(\n9", "x":9, "y":0}, - {"label":")\n0", "x":10, "y":0}, - {"label":"_\n-", "x":11, "y":0}, - {"label":"+\n=", "x":12, "y":0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2@", "x":2, "y":0}, + {"label":"3#", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":7, "y":0}, + {"label":"8*", "x":8, "y":0}, + {"label":"9(", "x":9, "y":0}, + {"label":"0)", "x":10, "y":0}, + {"label":"-_", "x":11, "y":0}, + {"label":"=+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + + {"label":"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":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",<", "x":9.25, "y":3}, + {"label":".>", "x":10.25, "y":3}, + {"label":"/?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":2.75}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.5}, + {"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":"Alt", "x":11, "y":4, "w":1.5}, + {"label":"Win", "x":12.5, "y":4}, + {"label":"Ctrl", "x":13.5, "y":4, "w":1.5} + ] + }, + "LAYOUT_60_tsangan_hhkb": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2@", "x":2, "y":0}, + {"label":"3#", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":7, "y":0}, + {"label":"8*", "x":8, "y":0}, + {"label":"9(", "x":9, "y":0}, + {"label":"0)", "x":10, "y":0}, + {"label":"-_", "x":11, "y":0}, + {"label":"=+", "x":12, "y":0}, {"label":"BS", "x":13, "y":0}, - {"label":"~\n`", "x":14, "y":0}, + {"label":"`~", "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}, @@ -98,9 +175,10 @@ {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, - {"label":"{\n[", "x":11.5, "y":1}, - {"label":"}\n]", "x":12.5, "y":1}, - {"label":"|\n\\", "x":13.5, "y":1, "w":1.5}, + {"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}, @@ -111,11 +189,148 @@ {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, - {"label":":\n;", "x":10.75, "y":2}, - {"label":"\"\n'", "x":11.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":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",<", "x":9.25, "y":3}, + {"label":".>", "x":10.25, "y":3}, + {"label":"/?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"Fn", "x":14, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.5}, + {"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":"Alt", "x":11, "y":4, "w":1.5}, + {"label":"Win", "x":12.5, "y":4}, + {"label":"Ctrl", "x":13.5, "y":4, "w":1.5} + ] + }, + "LAYOUT_60_ansi_wkl_split_rshift": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2@", "x":2, "y":0}, + {"label":"3#", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":7, "y":0}, + {"label":"8*", "x":8, "y":0}, + {"label":"9(", "x":9, "y":0}, + {"label":"0)", "x":10, "y":0}, + {"label":"-_", "x":11, "y":0}, + {"label":"=+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2.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":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",<", "x":9.25, "y":3}, + {"label":".>", "x":10.25, "y":3}, + {"label":"/?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"Fn", "x":14, "y":3}, + + {"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":"Alt", "x":11, "y":4, "w":1.5}, + {"label":"Ctrl", "x":13.5, "y":4, "w":1.5} + ] + }, + "LAYOUT_60_iso_tsangan": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2\"", "x":2, "y":0}, + {"label":"3\u00a3", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":7, "y":0}, + {"label":"8*", "x":8, "y":0}, + {"label":"9(", "x":9, "y":0}, + {"label":"0)", "x":10, "y":0}, + {"label":"-_", "x":11, "y":0}, + {"label":"=+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2.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":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";:", "x":10.75, "y":2}, + {"label":"'@", "x":11.75, "y":2}, + {"label":"#~", "x":12.75, "y":2}, + {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, + {"label":"Shift", "x":0, "y":3, "w":1.25}, - {"label":">\n<\n\n|", "x":1.25, "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}, @@ -123,11 +338,82 @@ {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, - {"label":"<\n,", "x":9.25, "y":3}, - {"label":">\n.", "x":10.25, "y":3}, - {"label":"?\n/", "x":11.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":2.75}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.5}, + {"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":"Alt", "x":11, "y":4, "w":1.5}, + {"label":"Win", "x":12.5, "y":4}, + {"label":"Ctrl", "x":13.5, "y":4, "w":1.5} + ] + }, + "LAYOUT_60_iso_tsangan_hhkb": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2\"", "x":2, "y":0}, + {"label":"3\u00a3", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":7, "y":0}, + {"label":"8*", "x":8, "y":0}, + {"label":"9(", "x":9, "y":0}, + {"label":"0)", "x":10, "y":0}, + {"label":"-_", "x":11, "y":0}, + {"label":"=+", "x":12, "y":0}, + {"label":"BS", "x":13, "y":0}, + {"label":"`~", "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":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";:", "x":10.75, "y":2}, + {"label":"'@", "x":11.75, "y":2}, + {"label":"#~", "x":12.75, "y":2}, + {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, + + {"label":"Shift", "x":0, "y":3, "w":1.25}, + {"label":"\\|", "x":1.25, "y":3}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",<", "x":9.25, "y":3}, + {"label":".>", "x":10.25, "y":3}, + {"label":"/?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Fn", "x":14, "y":3}, + {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, @@ -136,6 +422,74 @@ {"label":"Win", "x":12.5, "y":4}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5} ] + }, + "LAYOUT_60_iso_wkl_split_rshift": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2\"", "x":2, "y":0}, + {"label":"3\u00a3", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":7, "y":0}, + {"label":"8*", "x":8, "y":0}, + {"label":"9(", "x":9, "y":0}, + {"label":"0)", "x":10, "y":0}, + {"label":"-_", "x":11, "y":0}, + {"label":"=+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2.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":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";:", "x":10.75, "y":2}, + {"label":"'@", "x":11.75, "y":2}, + {"label":"#~", "x":12.75, "y":2}, + {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, + + {"label":"Shift", "x":0, "y":3, "w":1.25}, + {"label":"\\|", "x":1.25, "y":3}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",<", "x":9.25, "y":3}, + {"label":".>", "x":10.25, "y":3}, + {"label":"/?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"Fn", "x":14, "y":3}, + + {"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":"Alt", "x":11, "y":4, "w":1.5}, + {"label":"Ctrl", "x":13.5, "y":4, "w":1.5} + ] } } } diff --git a/keyboards/idb/idb_60/keymaps/default/keymap.c b/keyboards/idb/idb_60/keymaps/default/keymap.c index 373ff8ceed32..60cac7559f7c 100644 --- a/keyboards/idb/idb_60/keymaps/default/keymap.c +++ b/keyboards/idb/idb_60/keymaps/default/keymap.c @@ -2,28 +2,28 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_default( + [0] = LAYOUT_60_ansi_wkl_split_rshift( KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL ), - [1] = LAYOUT_default( + [1] = LAYOUT_60_ansi_wkl_split_rshift( RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), - [2] = LAYOUT_default( + [2] = LAYOUT_60_ansi_wkl_split_rshift( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), - [3] = LAYOUT_default( + [3] = LAYOUT_60_ansi_wkl_split_rshift( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/idb/idb_60/keymaps/via/keymap.c b/keyboards/idb/idb_60/keymaps/via/keymap.c index 373ff8ceed32..60cac7559f7c 100644 --- a/keyboards/idb/idb_60/keymaps/via/keymap.c +++ b/keyboards/idb/idb_60/keymaps/via/keymap.c @@ -2,28 +2,28 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_default( + [0] = LAYOUT_60_ansi_wkl_split_rshift( KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL ), - [1] = LAYOUT_default( + [1] = LAYOUT_60_ansi_wkl_split_rshift( RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), - [2] = LAYOUT_default( + [2] = LAYOUT_60_ansi_wkl_split_rshift( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), - [3] = LAYOUT_default( + [3] = LAYOUT_60_ansi_wkl_split_rshift( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/idb/idb_60/rules.mk b/keyboards/idb/idb_60/rules.mk index 607993b930fe..45618047097c 100644 --- a/keyboards/idb/idb_60/rules.mk +++ b/keyboards/idb/idb_60/rules.mk @@ -2,24 +2,14 @@ MCU = atmega32u2 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # Comment out to disable the options. -BOOTMAGIC_ENABLE = lite +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 -KEYBOARD_LOCK_ENABLE = no # Allow locking of keyboard via magic key -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 -BLUETOOTH_ENABLE = no # Enable Bluetooth diff --git a/keyboards/idobao/id96/config.h b/keyboards/idobao/id96/config.h new file mode 100644 index 000000000000..6bf1f14c430e --- /dev/null +++ b/keyboards/idobao/id96/config.h @@ -0,0 +1,82 @@ +/* + * This file is part of the QMK Firmware distribution (https://github.com/qmk/qmk_firmware). + * Copyright 2018-2021 "kaylanm" [Melody96] + * Vino Rodrigues [ID96] + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x6964 // "id" +#define PRODUCT_ID 0x0096 +#define DEVICE_VER 0x0001 +#define MANUFACTURER IDOBAO +#define PRODUCT ID96 + +/* key matrix size */ +#define MATRIX_ROWS 12 +#define MATRIX_COLS 9 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { B7, B3, B2, B1, B0, E6, F0, F1, F4, F5, F6, F7 } +#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION ROW2COL + +#define LED_NUM_LOCK_PIN C6 +#define LED_CAPS_LOCK_PIN C7 +#define LED_PIN_ON_STATE 0 + +/* number of backlight levels */ +#define BACKLIGHT_PIN B6 +#ifdef BACKLIGHT_PIN + #define BACKLIGHT_LEVELS 7 + #define BACKLIGHT_BREATHING +#endif + +/* Set location for BootMagic key = [ESC] */ +#define BOOTMAGIC_LITE_ROW 5 +#define BOOTMAGIC_LITE_COLUMN 0 + +/* 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 RGB_DI_PIN E2 +#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 18 + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 +#endif diff --git a/keyboards/idobao/id96/id96.c b/keyboards/idobao/id96/id96.c new file mode 100644 index 000000000000..1bb863f1ff52 --- /dev/null +++ b/keyboards/idobao/id96/id96.c @@ -0,0 +1,19 @@ +/* + * This file is part of the QMK Firmware distribution (https://github.com/qmk/qmk_firmware). + * Copyright 2018-2021 "kaylanm" [Melody96] + * Vino Rodrigues [ID96] + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "id96.h" diff --git a/keyboards/idobao/id96/id96.h b/keyboards/idobao/id96/id96.h new file mode 100644 index 000000000000..adb8f4768913 --- /dev/null +++ b/keyboards/idobao/id96/id96.h @@ -0,0 +1,63 @@ +/* + * This file is part of the QMK Firmware distribution (https://github.com/qmk/qmk_firmware). + * Copyright 2018-2021 "kaylanm" [Melody96] + * Vino Rodrigues [ID96] + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* + * The layout macro for the ID96 keyboard, with illustrative grid of a typical + * assignment. + * ,--------------------------------------------------------------------------- + * |ESC|F1|F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|PSC|HOM|END|PGU|PGD|DEL| + * ,--------------------------------------------------------------------------| + * | ` |1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | + | \ |BKS|NLK| / | * | - | + * |--------------------------------------------------------------------------| + * | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | 7 | 8 | 9 | + | + * |--------------------------------------------------------------------------| + * | CTRL | A | S | D | F | G | H | J | K | L | ; | ' | RET | 4 | 5 | 6 | + | + * |--------------------------------------------------------------------------| + * | LSHIFT | Z | X | C | V | B | N | M | , | . | / |RSHFT| ↑ | 1 | 2 | 3 |ENT| + * |--------------------------------------------------------------------------| + * |LCTL|LWIN|LALT| SPACE |CTL|ALT|FN | ← | ↓ | → | 0 | . |ENT| + * `--------------------------------------------------------------------------- + */ + +#define ____ KC_NO + +#define LAYOUT( \ + K050, K051, K052, K053, K054, K055, K056, K057, K058, K118, K117, K115, K114, K113, K116, K112, K111, K110, K063, \ + K040, K041, K042, K043, K044, K045, K046, K047, K048, K108, K107, K105, K104, K103, K106, K102, K101, K100, K064, \ + K030, K031, K032, K033, K034, K035, K036, K037, K038, K098, K097, K095, K094, K084, K096, K092, K091, K090, \ + K020, K021, K022, K023, K024, K025, K026, K027, K028, K088, K087, K085, K093, K086, K082, K081, K080, \ + K010, K011, K012, K013, K014, K015, K016, K017, K018, K078, K077, K075, K074, K073, K076, K072, K071, K070, \ + K000, K001, K002, K006, K008, K007, K005, K004, K003, K066, K062, K061, K060 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008 }, \ + { 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, ____, K066, ____, ____ }, \ + { K070, K071, K072, K073, K074, K075, K076, K077, K078 }, \ + { K080, K081, K082, ____, K084, K085, K086, K087, K088 }, \ + { K090, K091, K092, K093, K094, K095, K096, K097, K098 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108 }, \ + { K110, K111, K112, K113, K114, K115, K116, K117, K118 } \ +} diff --git a/keyboards/idobao/id96/info.json b/keyboards/idobao/id96/info.json new file mode 100644 index 000000000000..f972af64a2bd --- /dev/null +++ b/keyboards/idobao/id96/info.json @@ -0,0 +1,119 @@ +{ + "keyboard_name": "id96", + "url": "https://www.idobao.net/collections/90/products/idobao-id96-aluminum-keyboard-kit", + "maintainer": "vinorodrigues", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":1, "y":0}, + {"label":"F2", "x":2, "y":0}, + {"label":"F3", "x":3, "y":0}, + {"label":"F4", "x":4, "y":0}, + {"label":"F5", "x":5, "y":0}, + {"label":"F6", "x":6, "y":0}, + {"label":"F7", "x":7, "y":0}, + {"label":"F8", "x":8, "y":0}, + {"label":"F9", "x":9, "y":0}, + {"label":"F10", "x":10, "y":0}, + {"label":"F11", "x":11, "y":0}, + {"label":"F12", "x":12, "y":0}, + {"label":"PrtSc", "x":13, "y":0}, + {"label":"Scroll Lock", "x":14, "y":0}, + {"label":"Pause", "x":15, "y":0}, + {"label":"Insert", "x":16, "y":0}, + {"label":"Home", "x":17, "y":0}, + {"label":"PgUp", "x":18, "y":0}, + + {"label":"~", "x":0, "y":1}, + {"label":"!", "x":1, "y":1}, + {"label":"@", "x":2, "y":1}, + {"label":"#", "x":3, "y":1}, + {"label":"$", "x":4, "y":1}, + {"label":"%", "x":5, "y":1}, + {"label":"^", "x":6, "y":1}, + {"label":"&", "x":7, "y":1}, + {"label":"*", "x":8, "y":1}, + {"label":"(", "x":9, "y":1}, + {"label":")", "x":10, "y":1}, + {"label":"_", "x":11, "y":1}, + {"label":"+", "x":12, "y":1}, + {"x":13, "y":1}, + {"x":14, "y":1}, + {"label":"Num Lock", "x":15, "y":1}, + {"label":"/", "x":16, "y":1}, + {"label":"*", "x":17, "y":1}, + {"label":"-", "x":18, "y":1}, + + {"label":"Tab", "x":0, "y":2, "w":1.5}, + {"label":"Q", "x":1.5, "y":2}, + {"label":"W", "x":2.5, "y":2}, + {"label":"E", "x":3.5, "y":2}, + {"label":"R", "x":4.5, "y":2}, + {"label":"T", "x":5.5, "y":2}, + {"label":"Y", "x":6.5, "y":2}, + {"label":"U", "x":7.5, "y":2}, + {"label":"I", "x":8.5, "y":2}, + {"label":"O", "x":9.5, "y":2}, + {"label":"P", "x":10.5, "y":2}, + {"label":"{", "x":11.5, "y":2}, + {"label":"}", "x":12.5, "y":2}, + {"label":"|", "x":13.5, "y":2, "w":1.5}, + {"label":"7", "x":15, "y":2}, + {"label":"8", "x":16, "y":2}, + {"label":"9", "x":17, "y":2}, + {"label":"+", "x":18, "y":2}, + + {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, + {"label":"A", "x":1.75, "y":3}, + {"label":"S", "x":2.75, "y":3}, + {"label":"D", "x":3.75, "y":3}, + {"label":"F", "x":4.75, "y":3}, + {"label":"G", "x":5.75, "y":3}, + {"label":"H", "x":6.75, "y":3}, + {"label":"J", "x":7.75, "y":3}, + {"label":"K", "x":8.75, "y":3}, + {"label":"L", "x":9.75, "y":3}, + {"label":":", "x":10.75, "y":3}, + {"label":"\"", "x":11.75, "y":3}, + {"label":"Enter", "x":12.75, "y":3, "w":2.25}, + {"label":"4", "x":15, "y":3}, + {"label":"5", "x":16, "y":3}, + {"label":"6", "x":17, "y":3}, + {"x":18, "y":3}, + + {"label":"Shift", "x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4}, + {"label":"Z", "x":2.25, "y":4}, + {"label":"X", "x":3.25, "y":4}, + {"label":"C", "x":4.25, "y":4}, + {"label":"V", "x":5.25, "y":4}, + {"label":"B", "x":6.25, "y":4}, + {"label":"N", "x":7.25, "y":4}, + {"label":"M", "x":8.25, "y":4}, + {"label":"<", "x":9.25, "y":4}, + {"label":">", "x":10.25, "y":4}, + {"label":"?", "x":11.25, "y":4}, + {"label":"Shift", "x":12.25, "y":4, "w":1.75}, + {"label":"\u2191", "x":14, "y":4}, + {"label":"1", "x":15, "y":4}, + {"label":"2", "x":16, "y":4}, + {"label":"3", "x":17, "y":4}, + {"label":"Enter", "x":18, "y":4}, + + {"label":"Ctrl", "x":0, "y":5, "w":1.25}, + {"label":"Win", "x":1.25, "y":5, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5, "w":1.25}, + {"x":3.75, "y":5, "w":6.25}, + {"label":"Alt", "x":10, "y":5}, + {"label":"Win", "x":11, "y":5}, + {"x":12, "y":5}, + {"label":"\u2190", "x":13, "y":5}, + {"label":"\u2193", "x":14, "y":5}, + {"label":"\u2192", "x":15, "y":5}, + {"label":"0", "x":16, "y":5}, + {"label":".", "x":17, "y":5}, + {"x":18, "y":5}] + } + } +} diff --git a/keyboards/idobao/id96/keymaps/default/keymap.c b/keyboards/idobao/id96/keymaps/default/keymap.c new file mode 100644 index 000000000000..587620bad412 --- /dev/null +++ b/keyboards/idobao/id96/keymaps/default/keymap.c @@ -0,0 +1,90 @@ +/* + * This file is part of the QMK Firmware distribution (https://github.com/qmk/qmk_firmware). + * Copyright 2018-2021 "kaylanm" [Melody96] + * Vino Rodrigues [ID96] + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum { + LAYER_0 = 0, + LAYER_1 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* Layer 0, default layer + ____________________________________________________________________________________________________________________________________________________________________________ + | | | | | | | | | | | | | | | | | | | | + | ESC* | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | P SCN | HOME | END | P UP | P DOWN | DEL | + |________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________| + | | | | | | | | | | | | | | | BACK | NUM | | | | + | ~` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | _ - | = + | \ | SPACE | LOCK | / | * | - | + |________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________| + | | | | | | | | | | | | [ | ] | | | | | | + | TAB | Q | W | E | R | T | Y | U | I | O | P | { | } | | \ | 7 | 8 | 9 | - | + |____________|________|________|________|________|________|________|________|________|________|________|________|________|_____________|________|________|________|________| + | | | | | | | | | | | ; | ' | | | | | | + | CAPS LOCK | A | S | D | F | G | H | J | K | L | : | " | ENTER | 4 | 5 | 6 | + | + |______________|________|________|________|________|________|________|________|________|________|________|________|____________________|________|________|________|________| + | | | | | | | | | | , | . | / | | | | | | | + | SHIFT | NUBS | Z | X | C | V | B | N | M | < | > | ? | SHIFT | UP | 1 | 2 | 3 | ENTER | + |_________|________|________|________|________|________|________|________|________|________|________|________|________________|________|________|________|________|________| + | | | | | | MO | MO | | | | | | | + | CTRL | LGUI | L ALT | SPACE | R ALT | _FN | _FN | LEFT | DOWN | RIGHT | 0 | . | ENTER | + |__________|__________|__________|________________________________________________________|________|________|________|________|________|________|________|________|________| + */ + + [LAYER_0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_DEL, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT), + + + /* Layer 1, function layer + ____________________________________________________________________________________________________________________________________________________________________________ + | | | | | | | | | | | | | | | VOL | VOL | | | | + | RESET | | | | | | | | | | | | | MUTE | DOWN | UP | | | | + |________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________| + | | | | | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | | | | | | + |________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________| + | | RGB | | RGB | HUE | HUE | SATUR. | SATUR. | VALUE | VALUE | | | | | | | | | + | | TOGGLE | | MODE |INCREASE| DCRSE |INCREASE| DCRSE |INCREASE| DCRSE | | | | | | | | | + |____________|________|________|________|________|________|________|________|________|________|________|________|________|_____________|________|________|________|________| + | BACKLIGHT | | | | | | | | | | | | | | | | | + | TOGGLE | | | | | | | | | | | | | | | | | + |______________|________|________|________|________|________|________|________|________|________|________|________|____________________|________|________|________|________| + | | | | |BACKLHT |BACKLHT |BACKLHT | | | | | | | | | | | | + | | | | | DCRSE |TOGGLE |INCREASE| | | | | | | | | | | | + |_________|________|________|________|________|________|________|________|________|________|________|________|________________|________|________|________|________|________| + | | | | | | | | | | | | | | + | | | | | | | | | | | | | | + |__________|__________|__________|________________________________________________________|________|________|________|________|________|________|________|________|________| + BL_TOGG, BL_DEC, BL_INC changes the in-switch LEDs + */ + + + [LAYER_1] = LAYOUT( + RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_TOG, _______, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, + BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), +}; diff --git a/keyboards/idobao/id96/keymaps/via/keymap.c b/keyboards/idobao/id96/keymaps/via/keymap.c new file mode 100644 index 000000000000..1c927da82406 --- /dev/null +++ b/keyboards/idobao/id96/keymaps/via/keymap.c @@ -0,0 +1,62 @@ +/* + * This file is part of the QMK Firmware distribution (https://github.com/qmk/qmk_firmware). + * Copyright 2018-2021 "kaylanm" [Melody96] + * Vino Rodrigues [ID96] + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum { + LAYER_0 = 0, + LAYER_1, + LAYER_2, + LAYER_3 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [LAYER_0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_DEL, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT), + + [LAYER_1] = LAYOUT( + RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_TOG, _______, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, + BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [LAYER_2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + [LAYER_3] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +}; diff --git a/keyboards/idobao/id96/keymaps/via/rules.mk b/keyboards/idobao/id96/keymaps/via/rules.mk new file mode 100644 index 000000000000..62bd1be5ecb7 --- /dev/null +++ b/keyboards/idobao/id96/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes # reduce firmware size diff --git a/keyboards/idobao/id96/readme.md b/keyboards/idobao/id96/readme.md new file mode 100644 index 000000000000..01c42b4e73ab --- /dev/null +++ b/keyboards/idobao/id96/readme.md @@ -0,0 +1,27 @@ +# Idobao ID96 + +![Idobao ID96](https://cdn.shopify.com/s/files/1/0382/1348/4675/products/96.png?v=1620272768) + +96-key Keyboard from Idobao. The PCB for this board is also commonly used in the Drop NYM96 and YMDK Melody96 + +* Keyboard Maintainer: [Vino Rodrigues](https://github.com/vinorodrigues) +* Hardware Supported: Idobao ID96 +* Hardware Availability: [Idobao ID96](https://www.idobao.net/collections/90/products/idobao-id96-aluminum-keyboard-kit) + +Make example for this keyboard (after setting up your build environment): + + make idobao/id96:default + +Flashing example for this keyboard: + + make idobao/id96:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `RESET` if it is available diff --git a/keyboards/idobao/id96/rules.mk b/keyboards/idobao/id96/rules.mk new file mode 100644 index 000000000000..1f44da3ea6c9 --- /dev/null +++ b/keyboards/idobao/id96/rules.mk @@ -0,0 +1,19 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/idobo/config.h b/keyboards/idobo/config.h index 00b28f309216..ffe0bb70114b 100644 --- a/keyboards/idobo/config.h +++ b/keyboards/idobo/config.h @@ -99,54 +99,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -165,26 +117,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/idobo/idobo.c b/keyboards/idobo/idobo.c index 3f870835ed89..ccf654f87138 100644 --- a/keyboards/idobo/idobo.c +++ b/keyboards/idobo/idobo.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "idobo.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/idobo/idobo.h b/keyboards/idobo/idobo.h index 386fcee1a94c..9643a1efd34c 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 . */ -#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/idobo/info.json b/keyboards/idobo/info.json index 69c5e4e063d5..bacdc42235ea 100644 --- a/keyboards/idobo/info.json +++ b/keyboards/idobo/info.json @@ -2,8 +2,6 @@ "keyboard_name": "IDOBO", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_ortho_5x15": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":13, "y":2}, {"x":14, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}, {"x":12, "y":3}, {"x":13, "y":3}, {"x":14, "y":3}, {"x":0, "y":4}, {"x":1, "y":4}, {"x":2, "y":4}, {"x":3, "y":4}, {"x":4, "y":4}, {"x":5, "y":4}, {"x":6, "y":4}, {"x":7, "y":4}, {"x":8, "y":4}, {"x":9, "y":4}, {"x":10, "y":4}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}] diff --git a/keyboards/idobo/keymaps/default/keymap.c b/keyboards/idobo/keymaps/default/keymap.c index f54e3359bb20..1aadfb45290b 100644 --- a/keyboards/idobo/keymaps/default/keymap.c +++ b/keyboards/idobo/keymaps/default/keymap.c @@ -52,15 +52,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/idobo/keymaps/gkbd_orthon/config.h b/keyboards/idobo/keymaps/gkbd_orthon/config.h new file mode 100644 index 000000000000..e8fc39faadd9 --- /dev/null +++ b/keyboards/idobo/keymaps/gkbd_orthon/config.h @@ -0,0 +1,20 @@ +/* Copyright 2021 Giorgi Chavchanidze + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define TAPPING_TERM 200 +#define IGNORE_MOD_TAP_INTERRUPT diff --git a/keyboards/idobo/keymaps/gkbd_orthon/keymap.c b/keyboards/idobo/keymaps/gkbd_orthon/keymap.c new file mode 100644 index 000000000000..a603eae65797 --- /dev/null +++ b/keyboards/idobo/keymaps/gkbd_orthon/keymap.c @@ -0,0 +1,78 @@ +/* Copyright 2021 Giorgi Chavchanidze + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +#define MIN_PROXIMITY 8000 + +uint16_t predecessor_key = KC_NO; +uint16_t adaptive_key = KC_NO; + +static uint16_t vowel_proximity; + +enum custom_keycodes { + ON = SAFE_RANGE, +}; + +bool promote_consonants(void) { + return predecessor_key == KC_O && timer_elapsed(vowel_proximity) < MIN_PROXIMITY && !(get_mods() & ~MOD_MASK_SHIFT & MOD_MASK_CAG); +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + + if (keycode == ON) { + + if (record->event.pressed) { + + keycode = promote_consonants()?KC_N:KC_O; + register_code(keycode); + adaptive_key = keycode; + + } + else { + unregister_code(adaptive_key); + } + } + + if (!IS_MOD(keycode) && record->event.pressed) { + if(keycode == KC_E || keycode == KC_A || keycode == KC_O || keycode == KC_I || keycode == KC_U) { + predecessor_key = KC_O; + vowel_proximity = timer_read(); + } + else { + predecessor_key = keycode; + } + } + + return true; +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ortho_5x15(/* Base */ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LBRC, KC_APP, KC_RBRC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, + KC_QUOT, KC_Z, KC_Y, KC_U, KC_F, KC_W, KC_LCBR, KC_PSCR, KC_RCBR, KC_G, KC_M, KC_P, KC_N, KC_J, KC_MINS, + KC_ESC, KC_H, KC_I, KC_E, KC_A, KC_C, KC_LPRN, MO(1), KC_RPRN, KC_L, KC_R, KC_T, KC_S, KC_D, KC_ENT, + KC_TAB, KC_SCLN, KC_X, KC_O, KC_COMM, KC_DOT, KC_SLSH, KC_LGUI, KC_BSLS, KC_K, KC_V, KC_B, RSFT_T(KC_Q), KC_UP, KC_INS, + KC_CAPS, KC_HOME, KC_END, KC_DEL, KC_BSPC, ON, KC_LSFT, KC_RCTL, KC_RALT, KC_SPC, KC_PGDN, KC_PGUP, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_ortho_5x15(/* Function keys */ + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_SLCK, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_NO, KC_TRNS, KC_NO, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_PAUS, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + RESET, KC_NO, KC_NO, KC_NO, KC_NO, KC_F11, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12, KC_NO, KC_NO, KC_NO, KC_NO, RGB_TOG + ) +}; diff --git a/keyboards/idobo/keymaps/gkbd_orthon/readme.md b/keyboards/idobo/keymaps/gkbd_orthon/readme.md new file mode 100644 index 000000000000..36479ff9ba14 --- /dev/null +++ b/keyboards/idobo/keymaps/gkbd_orthon/readme.md @@ -0,0 +1,11 @@ +![Orthon layout](https://lykt.xyz/rtsd/orthon.svg) + +# Orthon layout + +Ortholinear carpalx optimized layout with adaptive thumb key. + +Adaptive key is + * **n** after **eaoiu** vowels + * **o** otherwise + +Some documentation and resources (carpalx report, json configuration) are available at [https://lykt.xyz/rtsd/#orthon](https://lykt.xyz/rtsd/#orthon) diff --git a/keyboards/idobo/keymaps/pathnirvana/config.h b/keyboards/idobo/keymaps/pathnirvana/config.h new file mode 100644 index 000000000000..dd95794254a4 --- /dev/null +++ b/keyboards/idobo/keymaps/pathnirvana/config.h @@ -0,0 +1,24 @@ +/* Copyright 2021 PathNirvana + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#undef DEBOUNCE +#define DEBOUNCE 40 + +#undef BACKLIGHT_LEVELS +#define BACKLIGHT_LEVELS 6 diff --git a/keyboards/idobo/keymaps/pathnirvana/keymap.c b/keyboards/idobo/keymaps/pathnirvana/keymap.c new file mode 100644 index 000000000000..ea6831d6daef --- /dev/null +++ b/keyboards/idobo/keymaps/pathnirvana/keymap.c @@ -0,0 +1,44 @@ +/* Copyright 2021 pathnirvana (pathnirvana@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 . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ortho_5x15( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_GRV, KC_MINS, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_F5, + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_LBRC, KC_BSLS, KC_RBRC, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_QUOT, + KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_G, KC_PGUP, KC_DEL, KC_PGDN, KC_M, KC_N, KC_E, KC_I, KC_O, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_D, KC_V, KC_HOME, KC_UP, KC_END, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_NO, + KC_LCTL, KC_MS_BTN3, KC_LALT, LT(2,KC_F2), KC_SPC, LSFT_T(KC_SPC), KC_LEFT, KC_DOWN, KC_RGHT, LT(3,KC_DEL), RSFT_T(KC_BSPC), LALT(KC_LSFT), KC_NO, DF(1), KC_ENT), + [1] = LAYOUT_ortho_5x15( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_GRV, KC_MINS, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_F5, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_BSLS, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_QUOT, + KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_PGUP, KC_DEL, KC_PGDN, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_HOME, KC_UP, KC_END, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, + KC_LCTL, KC_LGUI, KC_LALT, LT(2,KC_F2), KC_SPC, LSFT_T(KC_SPC), KC_LEFT, KC_DOWN, KC_RGHT, LT(3,KC_DEL), RSFT_T(KC_BSPC), LALT(KC_LSFT), KC_NO, DF(0), KC_ENT), + [2] = LAYOUT_ortho_5x15( + KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_MUTE, KC_VOLD, KC_VOLU, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_MSEL, BL_BRTG, RGB_HUD, RGB_HUI, KC_NO, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, LSFT(KC_LEFT), LSFT(KC_DOWN), LSFT(KC_UP), LSFT(KC_RGHT), KC_NO, KC_NO, + KC_SLEP, BL_STEP, RGB_SAD, RGB_SAI, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, KC_NO, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO, RESET, + KC_NO, BL_TOGG, RGB_VAD, RGB_VAI, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_NO, LCTL(KC_LEFT), LCTL(KC_DOWN), LCTL(KC_UP), LCTL(KC_RGHT), KC_NO, KC_NO, + KC_NO, RGB_TOG, RGB_RMOD, RGB_MOD, KC_NO, KC_NO, KC_WBAK, KC_NO, KC_WFWD, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO), + [3] = LAYOUT_ortho_5x15( + 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_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_TILD, KC_UNDS, KC_PLUS, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_NO, + KC_NO, KC_QUOT, KC_BSLS, KC_LCBR, KC_LBRC, KC_LT, KC_NO, KC_NO, KC_NO, KC_GT, KC_RBRC, KC_RCBR, KC_PIPE, KC_DQUO, KC_NO, + KC_NO, KC_1, KC_2, KC_3, KC_4, KC_5, KC_GRV, KC_MINS, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, 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), +}; diff --git a/keyboards/idobo/keymaps/pathnirvana/rules.mk b/keyboards/idobo/keymaps/pathnirvana/rules.mk new file mode 100644 index 000000000000..6bfd2bac6af7 --- /dev/null +++ b/keyboards/idobo/keymaps/pathnirvana/rules.mk @@ -0,0 +1,3 @@ +BACKLIGHT_ENABLE = yes +DEBOUNCE_TYPE = sym_eager_pk +MOUSEKEY_ENABLE = yes diff --git a/keyboards/idobo/rules.mk b/keyboards/idobo/rules.mk index 563fa6df7f6c..2c83baeeea9c 100644 --- a/keyboards/idobo/rules.mk +++ b/keyboards/idobo/rules.mk @@ -2,33 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 -EXTRAFLAGS += -flto # Use link time optimization +AUDIO_ENABLE = no # Audio output +LTO_ENABLE = yes # Use link time optimization LAYOUTS = ortho_5x15 diff --git a/keyboards/illuminati/is0/config.h b/keyboards/illuminati/is0/config.h index eea6dbb1ed48..948ea8282cac 100644 --- a/keyboards/illuminati/is0/config.h +++ b/keyboards/illuminati/is0/config.h @@ -123,59 +123,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -194,26 +141,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/illuminati/is0/info.json b/keyboards/illuminati/is0/info.json index 0f3bb64eca30..f47cd753a90b 100644 --- a/keyboards/illuminati/is0/info.json +++ b/keyboards/illuminati/is0/info.json @@ -2,8 +2,6 @@ "keyboard_name": "iS0", "url": "", "maintainer": "ai03", - "width": 1.5, - "height": 2, "layouts": { "LAYOUT": { "layout": [{"x":0.25, "y":0, "w":1.25, "h":2}] diff --git a/keyboards/illuminati/is0/is0.c b/keyboards/illuminati/is0/is0.c index 920277e6c9ce..770a47f0edd9 100644 --- a/keyboards/illuminati/is0/is0.c +++ b/keyboards/illuminati/is0/is0.c @@ -14,38 +14,3 @@ * along with this program. If not, see . */ #include "is0.h" - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -/* - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - -*/ diff --git a/keyboards/illuminati/is0/keymaps/ctrlaltdel/keymap.c b/keyboards/illuminati/is0/keymaps/ctrlaltdel/keymap.c index e38df1e22791..4ba60a99590a 100644 --- a/keyboards/illuminati/is0/keymaps/ctrlaltdel/keymap.c +++ b/keyboards/illuminati/is0/keymaps/ctrlaltdel/keymap.c @@ -20,19 +20,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LCTL(LALT(KC_DEL)) ), }; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/illuminati/is0/keymaps/default/keymap.c b/keyboards/illuminati/is0/keymaps/default/keymap.c index e82a965d9d71..99971f3a60f4 100644 --- a/keyboards/illuminati/is0/keymaps/default/keymap.c +++ b/keyboards/illuminati/is0/keymaps/default/keymap.c @@ -38,15 +38,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/illuminati/is0/rules.mk b/keyboards/illuminati/is0/rules.mk index c88ed284044a..ff7a56de142e 100644 --- a/keyboards/illuminati/is0/rules.mk +++ b/keyboards/illuminati/is0/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u2 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/illusion/rosa/info.json b/keyboards/illusion/rosa/info.json index 72841fb53b6b..60e285d66fb8 100644 --- a/keyboards/illusion/rosa/info.json +++ b/keyboards/illusion/rosa/info.json @@ -2,10 +2,8 @@ "keyboard_name": "Rosa", "url": "", "maintainer": "illusion", - "width": 15, - "height": 5, "layouts": { - "LAYOUT_60_ansi": { + "LAYOUT_60_ansi_tsangan": { "layout": [ {"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, @@ -73,7 +71,7 @@ {"label":"Ctrl", "x":13.5, "y":4, "w":1.5} ] }, - "LAYOUT_60_ansi_split_rshift": { + "LAYOUT_60_ansi_tsangan_split_rshift": { "layout": [ {"label":"Esc", "x":0, "y":0}, {"label":"1", "x":1, "y":0}, @@ -141,7 +139,7 @@ {"label":"Win", "x":12.5, "y":4}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}] }, - "LAYOUT_60_ansi_split_bs_rshift": { + "LAYOUT_60_ansi_tsangan_split_bs_rshift": { "layout": [ {"label":"Esc", "x":0, "y":0}, {"label":"1", "x":1, "y":0}, @@ -211,4 +209,4 @@ {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}] } } -} \ No newline at end of file +} diff --git a/keyboards/illusion/rosa/keymaps/default/keymap.c b/keyboards/illusion/rosa/keymaps/default/keymap.c index 9bd0109f4118..7b6e13fb69e9 100644 --- a/keyboards/illusion/rosa/keymaps/default/keymap.c +++ b/keyboards/illusion/rosa/keymaps/default/keymap.c @@ -23,7 +23,7 @@ enum layer_names { }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_BASE] = LAYOUT_60_ansi( + [_BASE] = LAYOUT_60_ansi_tsangan( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, diff --git a/keyboards/illusion/rosa/keymaps/oggi/keymap.c b/keyboards/illusion/rosa/keymaps/oggi/keymap.c index 5cebe21d8a08..9fdb762f047c 100644 --- a/keyboards/illusion/rosa/keymaps/oggi/keymap.c +++ b/keyboards/illusion/rosa/keymaps/oggi/keymap.c @@ -23,14 +23,14 @@ enum layer_names { }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_BASE] = LAYOUT_60_ansi_split_rshift( + [_BASE] = LAYOUT_60_ansi_tsangan_split_rshift( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_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_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_LGUI, KC_TRNS, KC_LALT, KC_SPC, KC_RALT, KC_TRNS, KC_RCTL ), - [_FN] = LAYOUT_60_ansi_split_rshift( + [_FN] = LAYOUT_60_ansi_tsangan_split_rshift( KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_RIGHT, KC_TRNS, diff --git a/keyboards/illusion/rosa/keymaps/split_bs_rshift/keymap.c b/keyboards/illusion/rosa/keymaps/split_bs_rshift/keymap.c index caa5e44a66cf..6cd4378c746d 100644 --- a/keyboards/illusion/rosa/keymaps/split_bs_rshift/keymap.c +++ b/keyboards/illusion/rosa/keymaps/split_bs_rshift/keymap.c @@ -23,14 +23,14 @@ enum layer_names { }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_BASE] = LAYOUT_60_ansi_split_bs_rshift( + [_BASE] = LAYOUT_60_ansi_tsangan_split_bs_rshift( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL ), - [_FN] = LAYOUT_60_ansi_split_bs_rshift( + [_FN] = LAYOUT_60_ansi_tsangan_split_bs_rshift( KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, diff --git a/keyboards/illusion/rosa/keymaps/split_rshift/keymap.c b/keyboards/illusion/rosa/keymaps/split_rshift/keymap.c index 25eabb4d3def..15bbfef04a04 100644 --- a/keyboards/illusion/rosa/keymaps/split_rshift/keymap.c +++ b/keyboards/illusion/rosa/keymaps/split_rshift/keymap.c @@ -23,14 +23,14 @@ enum layer_names { }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_BASE] = LAYOUT_60_ansi_split_rshift( + [_BASE] = LAYOUT_60_ansi_tsangan_split_rshift( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL ), - [_FN] = LAYOUT_60_ansi_split_rshift( + [_FN] = LAYOUT_60_ansi_tsangan_split_rshift( KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, diff --git a/keyboards/illusion/rosa/keymaps/via/keymap.c b/keyboards/illusion/rosa/keymaps/via/keymap.c index 872abde67345..8ff4f461a4cc 100644 --- a/keyboards/illusion/rosa/keymaps/via/keymap.c +++ b/keyboards/illusion/rosa/keymaps/via/keymap.c @@ -25,28 +25,28 @@ enum layer_names { }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_BASE] = LAYOUT_60_ansi( + [_BASE] = LAYOUT_60_ansi_tsangan( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL ), - [_FN1] = LAYOUT_60_ansi( + [_FN1] = LAYOUT_60_ansi_tsangan( KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), - [_FN2] = LAYOUT_60_ansi( + [_FN2] = LAYOUT_60_ansi_tsangan( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), - [_FN3] = LAYOUT_60_ansi( + [_FN3] = LAYOUT_60_ansi_tsangan( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, diff --git a/keyboards/illusion/rosa/rosa.h b/keyboards/illusion/rosa/rosa.h index 1e62a3599ccd..d1ad11f81762 100644 --- a/keyboards/illusion/rosa/rosa.h +++ b/keyboards/illusion/rosa/rosa.h @@ -33,7 +33,7 @@ along with this program. If not, see . { K400, K401, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, K410, K411, KC_NO, K413} \ } -#define LAYOUT_60_ansi(\ +#define LAYOUT_60_ansi_tsangan(\ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, \ 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, K212, \ @@ -47,7 +47,7 @@ along with this program. If not, see . { K400, K401, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, K410, K411, KC_NO, K413 } \ } -#define LAYOUT_60_ansi_split_rshift(\ +#define LAYOUT_60_ansi_tsangan_split_rshift(\ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, \ 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, K212, \ @@ -61,7 +61,7 @@ along with this program. If not, see . { K400, K401, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, K410, K411, KC_NO, K413 } \ } -#define LAYOUT_60_ansi_split_bs_rshift(\ +#define LAYOUT_60_ansi_tsangan_split_bs_rshift(\ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K213, \ 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, K212, \ diff --git a/keyboards/illusion/rosa/rules.mk b/keyboards/illusion/rosa/rules.mk index 58a18ebe5604..0b31d4648297 100644 --- a/keyboards/illusion/rosa/rules.mk +++ b/keyboards/illusion/rosa/rules.mk @@ -7,16 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output + +LAYOUTS = 60_ansi_tsangan diff --git a/keyboards/ilumkb/primus75/info.json b/keyboards/ilumkb/primus75/info.json index d8502d80cef6..56f2be0c8183 100644 --- a/keyboards/ilumkb/primus75/info.json +++ b/keyboards/ilumkb/primus75/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Primus75", "url": "", "maintainer": "moyi4681", - "width": 16, - "height": 6.25, "layouts": { "LAYOUT_all": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.5, "y":0}, {"label":"F2", "x":2.5, "y":0}, {"label":"F3", "x":3.5, "y":0}, {"label":"F4", "x":4.5, "y":0}, {"label":"F5", "x":6, "y":0}, {"label":"F6", "x":7, "y":0}, {"label":"F7", "x":8, "y":0}, {"label":"F8", "x":9, "y":0}, {"label":"F9", "x":10.5, "y":0}, {"label":"F10", "x":11.5, "y":0}, {"label":"F11", "x":12.5, "y":0}, {"label":"F12", "x":13.5, "y":0}, {"label":"PrtSc", "x":15, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"x":13, "y":1.25}, {"label":"Backspace", "x":14, "y":1.25}, {"label":"Home", "x":15, "y":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Y", "x":6.5, "y":2.25}, {"label":"U", "x":7.5, "y":2.25}, {"label":"I", "x":8.5, "y":2.25}, {"label":"O", "x":9.5, "y":2.25}, {"label":"P", "x":10.5, "y":2.25}, {"label":"{", "x":11.5, "y":2.25}, {"label":"}", "x":12.5, "y":2.25}, {"label":"|", "x":13.5, "y":2.25, "w":1.5}, {"label":"Page Up", "x":15, "y":2.25}, {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"H", "x":6.75, "y":3.25}, {"label":"J", "x":7.75, "y":3.25}, {"label":"K", "x":8.75, "y":3.25}, {"label":"L", "x":9.75, "y":3.25}, {"label":":", "x":10.75, "y":3.25}, {"label":"\"", "x":11.75, "y":3.25}, {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, {"label":"Page Down", "x":15, "y":3.25}, {"label":"Shift", "x":0, "y":4.25, "w":1.25}, {"x":1.25, "y":4.25}, {"label":"Z", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"N", "x":7.25, "y":4.25}, {"label":"M", "x":8.25, "y":4.25}, {"label":"<", "x":9.25, "y":4.25}, {"label":">", "x":10.25, "y":4.25}, {"label":"?", "x":11.25, "y":4.25}, {"label":"Shift", "x":12.25, "y":4.25, "w":1.75}, {"label":"Up", "x":14, "y":4.25}, {"label":"End", "x":15, "y":4.25}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, {"x":3.75, "y":5.25, "w":6.25}, {"label":"Alt", "x":10, "y":5.25}, {"label":"Fn", "x":11, "y":5.25}, {"label":"Ctrl", "x":12, "y":5.25}, {"label":"Left", "x":13, "y":5.25}, {"label":"Down", "x":14, "y":5.25}, {"label":"Right", "x":15, "y":5.25}] diff --git a/keyboards/ilumkb/primus75/rules.mk b/keyboards/ilumkb/primus75/rules.mk index b0ed9e41e578..7f1a6c824391 100644 --- a/keyboards/ilumkb/primus75/rules.mk +++ b/keyboards/ilumkb/primus75/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/dztech/volcano660/config.h b/keyboards/ilumkb/volcano660/config.h similarity index 100% rename from keyboards/dztech/volcano660/config.h rename to keyboards/ilumkb/volcano660/config.h diff --git a/keyboards/ilumkb/volcano660/info.json b/keyboards/ilumkb/volcano660/info.json new file mode 100644 index 000000000000..db26ee3859c6 --- /dev/null +++ b/keyboards/ilumkb/volcano660/info.json @@ -0,0 +1,10 @@ +{ + "keyboard_name": "volcano660", + "url": "", + "maintainer": "dztech", + "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}, {"label":"Backspace", "x":13, "y":0}, {"x":14, "y":0}, {"x":15.5, "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}, {"x":15.5, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":1.25}, {"label":"Shift", "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":2.25}, {"x":14.5, "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}, {"label":"Menu", "x":12.25, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.5, "y":4}, {"x":14.5, "y":4}, {"x":15.5, "y":4}] + } + } +} diff --git a/keyboards/dztech/volcano660/keymaps/default/keymap.c b/keyboards/ilumkb/volcano660/keymaps/default/keymap.c old mode 100755 new mode 100644 similarity index 100% rename from keyboards/dztech/volcano660/keymaps/default/keymap.c rename to keyboards/ilumkb/volcano660/keymaps/default/keymap.c diff --git a/keyboards/dztech/volcano660/keymaps/via/keymap.c b/keyboards/ilumkb/volcano660/keymaps/via/keymap.c old mode 100755 new mode 100644 similarity index 100% rename from keyboards/dztech/volcano660/keymaps/via/keymap.c rename to keyboards/ilumkb/volcano660/keymaps/via/keymap.c diff --git a/keyboards/ilumkb/volcano660/keymaps/via/rules.mk b/keyboards/ilumkb/volcano660/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/ilumkb/volcano660/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/ilumkb/volcano660/readme.md b/keyboards/ilumkb/volcano660/readme.md new file mode 100644 index 000000000000..490bf6cf5975 --- /dev/null +++ b/keyboards/ilumkb/volcano660/readme.md @@ -0,0 +1,12 @@ +# Volcano660 + +* Keyboard Maintainer: moyi4681 +* Hardware Supported: volcano660 PCB +* Hardware Availability: iLumkb + +Make example for this keyboard (after setting up your build environment): + + make ilumkb/volcano660:default + make ilumkb/volcano660:via + +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/ilumkb/volcano660/rules.mk b/keyboards/ilumkb/volcano660/rules.mk new file mode 100644 index 000000000000..7f1a6c824391 --- /dev/null +++ b/keyboards/ilumkb/volcano660/rules.mk @@ -0,0 +1,19 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/dztech/volcano660/volcano660.c b/keyboards/ilumkb/volcano660/volcano660.c similarity index 100% rename from keyboards/dztech/volcano660/volcano660.c rename to keyboards/ilumkb/volcano660/volcano660.c diff --git a/keyboards/dztech/volcano660/volcano660.h b/keyboards/ilumkb/volcano660/volcano660.h similarity index 100% rename from keyboards/dztech/volcano660/volcano660.h rename to keyboards/ilumkb/volcano660/volcano660.h diff --git a/keyboards/inett_studio/sqx/hotswap/config.h b/keyboards/inett_studio/sqx/hotswap/config.h index 174b948c1daf..f516473cfacf 100644 --- a/keyboards/inett_studio/sqx/hotswap/config.h +++ b/keyboards/inett_studio/sqx/hotswap/config.h @@ -72,6 +72,51 @@ #endif #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 170 -#define DISABLE_RGB_MATRIX_BAND_VAL -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +// #define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH diff --git a/keyboards/inett_studio/sqx/hotswap/hotswap.c b/keyboards/inett_studio/sqx/hotswap/hotswap.c index be8985c87ea9..c8e7d87846e7 100644 --- a/keyboards/inett_studio/sqx/hotswap/hotswap.c +++ b/keyboards/inett_studio/sqx/hotswap/hotswap.c @@ -20,7 +20,7 @@ #include "hotswap.h" #ifdef RGB_MATRIX_ENABLE -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { /* Refer to IS31 manual for these locations * driver * | R location diff --git a/keyboards/inett_studio/sqx/hotswap/info.json b/keyboards/inett_studio/sqx/hotswap/info.json index 7180422c3de4..f2d36a5035e4 100644 --- a/keyboards/inett_studio/sqx/hotswap/info.json +++ b/keyboards/inett_studio/sqx/hotswap/info.json @@ -2,8 +2,6 @@ "keyboard_name": "sqx", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_tsangan_hhkb": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"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}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.5}, {"x":1.5, "y":4}, {"x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"x":11, "y":4, "w":1.5}, {"x":12.5, "y":4}, {"x":13.5, "y":4, "w":1.5}] diff --git a/keyboards/inett_studio/sqx/hotswap/rules.mk b/keyboards/inett_studio/sqx/hotswap/rules.mk index 47793919c77f..dd8792511747 100644 --- a/keyboards/inett_studio/sqx/hotswap/rules.mk +++ b/keyboards/inett_studio/sqx/hotswap/rules.mk @@ -7,20 +7,17 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGB_MATRIX_ENABLE = yes # Use RGB matrix RGB_MATRIX_DRIVER = IS31FL3731 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LTO_ENABLE = yes # Reducing firmware size diff --git a/keyboards/inett_studio/sqx/universal/config.h b/keyboards/inett_studio/sqx/universal/config.h index 7fa41fae24a4..d1fbf8f7a191 100644 --- a/keyboards/inett_studio/sqx/universal/config.h +++ b/keyboards/inett_studio/sqx/universal/config.h @@ -72,6 +72,51 @@ #endif #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 170 -#define DISABLE_RGB_MATRIX_BAND_VAL -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +// #define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH diff --git a/keyboards/inett_studio/sqx/universal/info.json b/keyboards/inett_studio/sqx/universal/info.json index d0956b68028b..4588b27d581b 100644 --- a/keyboards/inett_studio/sqx/universal/info.json +++ b/keyboards/inett_studio/sqx/universal/info.json @@ -2,8 +2,6 @@ "keyboard_name": "sqx", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_ansi_tsangan_split_rshift": { "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}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Fn", "x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"Win", "x":12.5, "y":4}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}] diff --git a/keyboards/inett_studio/sqx/universal/rules.mk b/keyboards/inett_studio/sqx/universal/rules.mk index c9965b068456..643718cd4e94 100644 --- a/keyboards/inett_studio/sqx/universal/rules.mk +++ b/keyboards/inett_studio/sqx/universal/rules.mk @@ -7,13 +7,11 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 diff --git a/keyboards/inett_studio/sqx/universal/universal.c b/keyboards/inett_studio/sqx/universal/universal.c index 42d99330d5a5..06cfbd365425 100644 --- a/keyboards/inett_studio/sqx/universal/universal.c +++ b/keyboards/inett_studio/sqx/universal/universal.c @@ -20,7 +20,7 @@ #include "universal.h" #ifdef RGB_MATRIX_ENABLE -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { /* Refer to IS31 manual for these locations * driver * | R location diff --git a/keyboards/infinity60/info.json b/keyboards/infinity60/info.json index 85ac5e6851f8..3fbd8b1b25a2 100644 --- a/keyboards/infinity60/info.json +++ b/keyboards/infinity60/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Infinity 60%", "url": "https://input.club/devices/infinity-keyboard/", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_ansi_split_bs_rshift": { "layout": [ diff --git a/keyboards/infinity60/keymaps/jpetermans/keymap.c b/keyboards/infinity60/keymaps/jpetermans/keymap.c index c34d56ec85d2..3c2e0d4da8ca 100644 --- a/keyboards/infinity60/keymaps/jpetermans/keymap.c +++ b/keyboards/infinity60/keymaps/jpetermans/keymap.c @@ -11,20 +11,25 @@ //IS31 chip has 8 available led pages, using 0 for all leds and 7 for single toggles #define max_pages 6 -enum ic60_keycodes { - NUMPAD, - FNAV, - MEDIA, - BACKLIGHT, - BRIGHT, - DIM, - ALL, - GAME, +enum led_modes { + MODE_ALL, + MODE_GAME, MODE_SINGLE, MODE_PAGE, MODE_FLASH }; +enum macro_id { + LED_ALL = SAFE_RANGE, + LED_GAME, + LED_BACKLIGHT, + LED_BRIGHT, + LED_DIM, + LED_SINGLE, + LED_PAGE, + LED_FLASH +}; + uint8_t current_layer_global = 0; uint8_t led_mode_global = MODE_SINGLE; uint8_t backlight_status_global = 1; //init on/off state of backlight @@ -77,10 +82,10 @@ const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* media */ [_MEDIA] = LAYOUT_60_ansi_split_bs_rshift( \ - _______,F(MODE_SINGLE),F(MODE_PAGE),F(MODE_FLASH),_______,_______,_______, _______, _______, _______,KC_MUTE, KC_VOLD, KC_VOLU,_______,KC_NO,\ + _______,LED_SINGLE,LED_PAGE,LED_FLASH,_______,_______,_______, _______, _______, _______,KC_MUTE, KC_VOLD, KC_VOLU,_______,KC_NO,\ _______,_______,_______,_______,_______,_______,_______, _______, _______, _______,_______, _______,_______,_______,\ - _______,_______,_______,_______,_______,F(GAME),_______, _______, _______, _______,_______, _______,_______, \ - _______,_______,F(ALL) ,F(BRIGHT),F(DIM),F(BACKLIGHT),_______, _______, KC_MPRV, KC_MNXT,KC_MSTP, _______,KC_NO, \ + _______,_______,_______,_______,_______,LED_GAME,_______, _______, _______, _______,_______, _______,_______, \ + _______,_______,LED_ALL ,LED_BRIGHT,LED_DIM,LED_BACKLIGHT,_______, _______, KC_MPRV, KC_MNXT,KC_MSTP, _______,KC_NO, \ _______,_______,_______, KC_MPLY, _______,_______, _______,_______ \ ), /* ~ */ @@ -101,22 +106,6 @@ const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -//id for user defined functions and macros -enum function_id { - NONE, -}; - -enum macro_id { - ACTION_LEDS_ALL, - ACTION_LEDS_GAME, - ACTION_LEDS_BACKLIGHT, - ACTION_LEDS_BRIGHT, - ACTION_LEDS_DIM, - ACTION_LEDS_SINGLE, - ACTION_LEDS_PAGE, - ACTION_LEDS_FLASH -}; - /* ================================== * LED MAPPING * ==================================*/ @@ -158,74 +147,62 @@ uint8_t led_game[5] = { 47,48,51 }; -//======== qmk functions ========= -const uint16_t fn_actions[] = { - [ALL] = ACTION_FUNCTION(ACTION_LEDS_ALL), - [GAME] = ACTION_FUNCTION(ACTION_LEDS_GAME), - [BACKLIGHT] = ACTION_FUNCTION(ACTION_LEDS_BACKLIGHT), - [BRIGHT] = ACTION_FUNCTION(ACTION_LEDS_BRIGHT), - [DIM] = ACTION_FUNCTION(ACTION_LEDS_DIM), - [MODE_SINGLE] = ACTION_FUNCTION(ACTION_LEDS_SINGLE), - [MODE_PAGE] = ACTION_FUNCTION(ACTION_LEDS_PAGE), - [MODE_FLASH] = ACTION_FUNCTION(ACTION_LEDS_FLASH), -}; - -/* custom action function */ -void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { +bool process_record_user(uint16_t keycode, keyrecord_t *record) { msg_t msg; - switch(id) { - case ACTION_LEDS_ALL: + switch(keycode) { + case LED_ALL: if(record->event.pressed) { - led_mode_global = led_mode_global == ALL ? MODE_SINGLE : ALL; + led_mode_global = led_mode_global == MODE_ALL ? MODE_SINGLE : MODE_ALL; msg=TOGGLE_ALL; chMBPost(&led_mailbox, msg, TIME_IMMEDIATE); } - break; + return false; - case ACTION_LEDS_BACKLIGHT: + case LED_BACKLIGHT: if(record->event.pressed) { backlight_status_global ^= 1; msg=(backlight_status_global << 8) | TOGGLE_BACKLIGHT; chMBPost(&led_mailbox, msg, TIME_IMMEDIATE); } - break; + return false; - case ACTION_LEDS_GAME: + case LED_GAME: if(record->event.pressed) { - led_mode_global = led_mode_global == GAME ? MODE_SINGLE : GAME; + led_mode_global = led_mode_global == MODE_GAME ? MODE_SINGLE : MODE_GAME; msg=(4 << 8) | DISPLAY_PAGE; chMBPost(&led_mailbox, msg, TIME_IMMEDIATE); } - break; + return false; - case ACTION_LEDS_BRIGHT: + case LED_BRIGHT: if(record->event.pressed) { msg=(1 << 8) | STEP_BRIGHTNESS; chMBPost(&led_mailbox, msg, TIME_IMMEDIATE); } - break; + return false; - case ACTION_LEDS_DIM: + case LED_DIM: if(record->event.pressed) { msg=(0 << 8) | STEP_BRIGHTNESS; chMBPost(&led_mailbox, msg, TIME_IMMEDIATE); } - break; + return false; //set led_mode for matrix_scan to toggle leds - case ACTION_LEDS_SINGLE: + case LED_SINGLE: led_mode_global = MODE_SINGLE; - break; - case ACTION_LEDS_PAGE: + return false; + case LED_PAGE: led_mode_global = MODE_PAGE; - break; - case ACTION_LEDS_FLASH: + return false; + case LED_FLASH: led_mode_global = MODE_FLASH; - break; + return false; } + return true; } // Runs just one time when the keyboard initializes. @@ -257,7 +234,7 @@ void matrix_scan_user(void) { return; } - if (led_layer_state != layer_state && led_mode_global != GAME && led_mode_global != ALL) { + if (led_layer_state != layer_state && led_mode_global != MODE_GAME && led_mode_global != MODE_ALL) { //check mode //Turn on layer indicator or page depending on mode switch(led_mode_global) { diff --git a/keyboards/infinity60/rules.mk b/keyboards/infinity60/rules.mk index f4100174dafb..28c493066dd6 100644 --- a/keyboards/infinity60/rules.mk +++ b/keyboards/infinity60/rules.mk @@ -16,18 +16,15 @@ BOARD = MCHCK_K20 # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output DEFAULT_FOLDER = infinity60/led diff --git a/keyboards/irene/config.h b/keyboards/irene/config.h new file mode 100644 index 000000000000..15750f5406db --- /dev/null +++ b/keyboards/irene/config.h @@ -0,0 +1,150 @@ +/* +Copyright 2021 Ramon Imbao + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x1434 +#define PRODUCT_ID 0x3000 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Andrei Collado +#define PRODUCT Irene + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * 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, F0, C7, B4, B7 } +#define MATRIX_COL_PINS { F4, F5, F6, F7, C6, B6, B5, D7, D6, D4, D5, D3, D2, D1, D0 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +//#define LED_NUM_LOCK_PIN B0 +//#define LED_CAPS_LOCK_PIN B1 +//#define LED_SCROLL_LOCK_PIN B2 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +#define RGB_DI_PIN F1 +#ifdef RGB_DI_PIN +# define RGBLED_NUM 23 +//# define RGBLIGHT_HUE_STEP 8 +//# define RGBLIGHT_SAT_STEP 8 +//# define RGBLIGHT_VAL_STEP 8 +//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +#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 +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/irene/info.json b/keyboards/irene/info.json new file mode 100644 index 000000000000..1219010915d4 --- /dev/null +++ b/keyboards/irene/info.json @@ -0,0 +1,75 @@ +{ + "keyboard_name": "Irene", + "url": "", + "maintainer": "Andrei Collado", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"x":0.5, "y":0}, + {"x":1.75, "y":0}, + {"x":2.75, "y":0}, + {"x":3.75, "y":0}, + {"x":4.75, "y":0}, + {"x":5.75, "y":0}, + {"x":6.75, "y":0}, + {"x":7.75, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15, "y":0}, + {"x":16, "y":0}, + {"x":17, "y":0}, + + {"x":0.25, "y":1}, + {"x":1.5, "y":1, "w":1.5}, + {"x":3, "y":1}, {"x":4, "y":1}, + {"x":5, "y":1}, {"x":6, "y":1}, + {"x":7, "y":1}, {"x":9.5, "y":1}, + {"x":10.5, "y":1}, {"x":11.5, "y":1}, + {"x":12.5, "y":1}, {"x":13.5, "y":1}, + {"x":14.5, "y":1}, {"x":15.5, "y":1}, + {"x":16.5, "y":1, "w":1.5}, + + {"x":0, "y":2}, + {"x":1.5, "y":2, "w":1.75}, + {"x":3.25, "y":2}, + {"x":4.25, "y":2}, + {"x":5.25, "y":2}, + {"x":6.25, "y":2}, + {"x":7.25, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + {"x":13.75, "y":2}, + {"x":14.75, "y":2}, + {"x":15.75, "y":2, "w":2.25}, + + {"x":1.5, "y":3, "w":2.25}, + {"x":3.75, "y":3}, + {"x":4.75, "y":3}, + {"x":5.75, "y":3}, + {"x":6.75, "y":3}, + {"x":7.75, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3}, + {"x":13.25, "y":3}, + {"x":14.25, "y":3}, + {"x":15.25, "y":3, "w":1.75}, + {"x":17, "y":3}, + + {"x":1.5, "y":4, "w":1.5}, + {"x":4, "y":4, "w":1.5}, + {"x":5.5, "y":4, "w":2}, + {"x":7.5, "y":4, "w":1.25}, + {"x":9.25, "y":4, "w":2.75}, + {"x":12, "y":4, "w":1.5}, + {"x":16.5, "y":4, "w":1.5} + ] + } + } +} diff --git a/keyboards/irene/irene.c b/keyboards/irene/irene.c new file mode 100644 index 000000000000..f0f4751c52b3 --- /dev/null +++ b/keyboards/irene/irene.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Ramon Imbao + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "irene.h" diff --git a/keyboards/irene/irene.h b/keyboards/irene/irene.h new file mode 100644 index 000000000000..435e84957dbc --- /dev/null +++ b/keyboards/irene/irene.h @@ -0,0 +1,43 @@ +/* Copyright 2021 Ramon Imbao + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define ___ KC_NO + +#define LAYOUT_all( \ + k00, k01, k02, k03, k04, k05, k06, k57, 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, k2e, \ + k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \ + k41, k43, 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, k2c, ___, k2e }, \ + { ___, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e }, \ + { ___, k41, ___, k43, k44, ___, k46, ___, k48, ___, k4a, ___, ___, ___, k4e }, \ +} diff --git a/keyboards/irene/keymaps/default/keymap.c b/keyboards/irene/keymaps/default/keymap.c new file mode 100644 index 000000000000..8f102b441da0 --- /dev/null +++ b/keyboards/irene/keymaps/default/keymap.c @@ -0,0 +1,33 @@ +/* Copyright 2021 Ramon Imbao + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_DEL, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, + KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RCTL + ), + [1] = LAYOUT_all( + RESET, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, + KC_HOME, _______, _______, KC_UP, _______, _______, _______, RGB_HUD, RGB_HUI, RGB_SAD, RGB_VAD, RGB_VAI, _______, _______, _______, + KC_END, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/irene/keymaps/via/keymap.c b/keyboards/irene/keymaps/via/keymap.c new file mode 100644 index 000000000000..8f102b441da0 --- /dev/null +++ b/keyboards/irene/keymaps/via/keymap.c @@ -0,0 +1,33 @@ +/* Copyright 2021 Ramon Imbao + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_DEL, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, + KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RCTL + ), + [1] = LAYOUT_all( + RESET, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, + KC_HOME, _______, _______, KC_UP, _______, _______, _______, RGB_HUD, RGB_HUI, RGB_SAD, RGB_VAD, RGB_VAI, _______, _______, _______, + KC_END, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/irene/keymaps/via/rules.mk b/keyboards/irene/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/irene/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/irene/readme.md b/keyboards/irene/readme.md new file mode 100644 index 000000000000..56dfd4bfbde2 --- /dev/null +++ b/keyboards/irene/readme.md @@ -0,0 +1,20 @@ +# Irene + +![Irene](https://i.imgur.com/p4bWtKDl.jpeg) + +The Irene is a polycarbonate top-mount keyboard featuring the Alice layout inspired by TGR's Police and Jaxxstatic's Rukia. The name came from a Kpop idol Irene from Red Velvet. + +* Keyboard Maintainer: [Andrei Collado](https://github.com/colladoandrei) +* Hardware Supported: ATmega32u4 + +Make example for this keyboard (after setting up your build environment): + + make irene:default + +To get to the bootloader, simply press the reset button located on the back of the PCB. You can then flash new firmware onto it. + +Flashing example for this keyboard: + + make irene:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/irene/rules.mk b/keyboards/irene/rules.mk new file mode 100644 index 000000000000..68dbdff654a3 --- /dev/null +++ b/keyboards/irene/rules.mk @@ -0,0 +1,19 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/iriskeyboards/info.json b/keyboards/iriskeyboards/info.json index 2d64cb071f65..480fb0428e8f 100644 --- a/keyboards/iriskeyboards/info.json +++ b/keyboards/iriskeyboards/info.json @@ -2,8 +2,6 @@ "keyboard_name": "iriskeyboards", "url": "", "maintainer": "SonOfAres", - "width": 14, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/iriskeyboards/rules.mk b/keyboards/iriskeyboards/rules.mk index 5c0d8f307c54..d2109f62500b 100644 --- a/keyboards/iriskeyboards/rules.mk +++ b/keyboards/iriskeyboards/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/iron180/info.json b/keyboards/iron180/info.json index ebef058d2f52..64ee4b4ee39c 100644 --- a/keyboards/iron180/info.json +++ b/keyboards/iron180/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Iron180", "url": "", "maintainer": "Gondolindrim", - "width": 18.25, - "height": 6.25, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/iron180/rules.mk b/keyboards/iron180/rules.mk index f444528f1e88..bb9e5edc372d 100644 --- a/keyboards/iron180/rules.mk +++ b/keyboards/iron180/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = 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 ENCODER_ENABLE = no diff --git a/keyboards/ivy/keymaps/default/keymap.c b/keyboards/ivy/keymaps/default/keymap.c index c250fbdf8a1f..0215a3e6c538 100644 --- a/keyboards/ivy/keymaps/default/keymap.c +++ b/keyboards/ivy/keymaps/default/keymap.c @@ -39,7 +39,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; - -void matrix_init_user(void) { - -} diff --git a/keyboards/ivy/rev1/info.json b/keyboards/ivy/rev1/info.json index 4e9db790312d..c5045bd80f4f 100644 --- a/keyboards/ivy/rev1/info.json +++ b/keyboards/ivy/rev1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "IVY", "url": "", "maintainer": "That-Canadian", - "width": 3, - "height": 1, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/ivy/rev1/rev1.c b/keyboards/ivy/rev1/rev1.c index c099e32c4975..007ef6725320 100644 --- a/keyboards/ivy/rev1/rev1.c +++ b/keyboards/ivy/rev1/rev1.c @@ -1,5 +1 @@ #include "ivy.h" - -void matrix_init_kb(void) { - matrix_init_user(); -}; diff --git a/keyboards/ivy/rules.mk b/keyboards/ivy/rules.mk index 97c9aa1364ab..536f548c862c 100644 --- a/keyboards/ivy/rules.mk +++ b/keyboards/ivy/rules.mk @@ -2,34 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -API_SYSEX_ENABLE = no - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend DEFAULT_FOLDER = ivy/rev1 diff --git a/keyboards/j80/config.h b/keyboards/j80/config.h index fb17a7fd1e8a..10b4116181a1 100644 --- a/keyboards/j80/config.h +++ b/keyboards/j80/config.h @@ -46,10 +46,6 @@ along with this program. If not, see . #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - /* Bootmagic Lite key configuration */ #define BOOTMAGIC_LITE_ROW 0 #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/j80/info.json b/keyboards/j80/info.json index b31b443ede5a..6c14139bd701 100644 --- a/keyboards/j80/info.json +++ b/keyboards/j80/info.json @@ -2,8 +2,6 @@ "keyboard_name": "J80", "url": "", "maintainer": "oeywil", - "width": 18.25, - "height": 6.25, "layouts": { "LAYOUT_tkl_ansi": { "layout": [ diff --git a/keyboards/j80/rules.mk b/keyboards/j80/rules.mk index 4b21de4e8e96..370a9913df85 100644 --- a/keyboards/j80/rules.mk +++ b/keyboards/j80/rules.mk @@ -2,19 +2,12 @@ MCU = atmega32a # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 diff --git a/keyboards/jacky_studio/bear_65/info.json b/keyboards/jacky_studio/bear_65/info.json index 67fc090af832..5f7f05969663 100644 --- a/keyboards/jacky_studio/bear_65/info.json +++ b/keyboards/jacky_studio/bear_65/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Bear 65", "url": "https://qmk.fm/keyboards", "maintainer": "qmk", - "width": 20.75, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"label":"Esc", "x":0.5, "y":0}, {"label":"~", "x":1.75, "y":0}, {"label":"!", "x":2.75, "y":0}, {"label":"@", "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":7.75, "y":0}, {"label":"&", "x":11.25, "y":0}, {"label":"*", "x":12.25, "y":0}, {"label":"(", "x":13.25, "y":0}, {"label":")", "x":14.25, "y":0}, {"label":"_", "x":15.25, "y":0}, {"label":"+", "x":16.25, "y":0}, {"label":"|", "x":17.25, "y":0}, {"label":"~", "x":18.25, "y":0}, {"label":"Del", "x":19.75, "y":0}, {"label":"PgUp", "x":0.25, "y":1}, {"label":"Tab", "x":1.75, "y":1, "w":1.5}, {"label":"Q", "x":3.25, "y":1}, {"label":"W", "x":4.25, "y":1}, {"label":"E", "x":5.25, "y":1}, {"label":"R", "x":6.25, "y":1}, {"label":"T", "x":7.25, "y":1}, {"label":"Y", "x":10.75, "y":1}, {"label":"U", "x":11.75, "y":1}, {"label":"I", "x":12.75, "y":1}, {"label":"O", "x":13.75, "y":1}, {"label":"P", "x":14.75, "y":1}, {"label":"{", "x":15.75, "y":1}, {"label":"}", "x":16.75, "y":1}, {"label":"Backspace", "x":17.75, "y":1, "w":1.5}, {"label":"PgDn", "x":0, "y":2}, {"label":"Caps Lock", "x":1.75, "y":2, "w":1.75}, {"label":"A", "x":3.5, "y":2}, {"label":"S", "x":4.5, "y":2}, {"label":"D", "x":5.5, "y":2}, {"label":"F", "x":6.5, "y":2}, {"label":"G", "x":7.5, "y":2}, {"label":"H", "x":11, "y":2}, {"label":"J", "x":12, "y":2}, {"label":"K", "x":13, "y":2}, {"label":"L", "x":14, "y":2}, {"label":":", "x":15, "y":2}, {"label":"\"", "x":16, "y":2}, {"label":"Enter", "x":17, "y":2, "w":2.25}, {"label":"Shift", "x":1.75, "y":3, "w":2.25}, {"label":"Z", "x":4, "y":3}, {"label":"X", "x":5, "y":3}, {"label":"C", "x":6, "y":3}, {"label":"V", "x":7, "y":3}, {"label":"B", "x":8, "y":3}, {"label":"B", "x":10.5, "y":3}, {"label":"N", "x":11.5, "y":3}, {"label":"M", "x":12.5, "y":3}, {"label":"<", "x":13.5, "y":3}, {"label":">", "x":14.5, "y":3}, {"label":"?", "x":15.5, "y":3}, {"label":"Shift", "x":16.5, "y":3, "w":1.75}, {"label":"Up", "x":18.25, "y":3}, {"label":"Ctrl", "x":1.75, "y":4, "w":1.5}, {"label":"Alt", "x":4.75, "y":4, "w":1.25}, {"x":6, "y":4, "w":2.25}, {"label":"Win", "x":8.25, "y":4}, {"x":10.5, "y":4, "w":2.75}, {"label":"Alt", "x":13.25, "y":4, "w":1.5}, {"label":"Left", "x":17.25, "y":4}, {"label":"Down", "x":18.25, "y":4}, {"label":"Right", "x":19.25, "y":4}] diff --git a/keyboards/jacky_studio/bear_65/keymaps/stanrc85/keymap.c b/keyboards/jacky_studio/bear_65/keymaps/stanrc85/keymap.c index 477280634038..7ee14dda8b73 100644 --- a/keyboards/jacky_studio/bear_65/keymaps/stanrc85/keymap.c +++ b/keyboards/jacky_studio/bear_65/keymaps/stanrc85/keymap.c @@ -47,22 +47,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TG(_DEFAULT), _______, _______, _______, _______, _______, RGB_HUD, RGB_VAD, RGB_HUI ) }; - -layer_state_t layer_state_set_user(layer_state_t state) { - switch (get_highest_layer(state)) { - case _FN1_60: - break; - case _FN2_60: - rgb_matrix_mode_noeeprom(RGB_MATRIX_RAINBOW_MOVING_CHEVRON); - break; - case _DEFAULT: - rgb_matrix_mode_noeeprom(RGB_MATRIX_MULTISPLASH); - break; - case _QWERTY: - rgb_matrix_mode_noeeprom(RGB_MATRIX_TYPING_HEATMAP); - break; - default: // for any other layers, or the default layer - break; - } - return state; -} diff --git a/keyboards/jacky_studio/bear_65/rules.mk b/keyboards/jacky_studio/bear_65/rules.mk index 6f70cbbd6f51..0790293bde57 100644 --- a/keyboards/jacky_studio/bear_65/rules.mk +++ b/keyboards/jacky_studio/bear_65/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LTO_ENABLE = yes # Use LTO flags to reduce firmware size diff --git a/keyboards/jacky_studio/s7_elephant/rev1/info.json b/keyboards/jacky_studio/s7_elephant/rev1/info.json index ea2ca030c532..b47f32645645 100644 --- a/keyboards/jacky_studio/s7_elephant/rev1/info.json +++ b/keyboards/jacky_studio/s7_elephant/rev1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "S7 Elephant", "url": "https://geekhack.org/index.php?topic=96434.0", "maintainer": "qmk", - "width": 18, - "height": 5, "layouts": { "LAYOUT_ansi": { "layout": [ diff --git a/keyboards/jacky_studio/s7_elephant/rev1/rules.mk b/keyboards/jacky_studio/s7_elephant/rev1/rules.mk index 6a8c1054e7a3..a150000fe124 100644 --- a/keyboards/jacky_studio/s7_elephant/rev1/rules.mk +++ b/keyboards/jacky_studio/s7_elephant/rev1/rules.mk @@ -7,12 +7,11 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 = 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 RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality diff --git a/keyboards/jacky_studio/s7_elephant/rev2/info.json b/keyboards/jacky_studio/s7_elephant/rev2/info.json index 4db57aac829a..e3be4afe3813 100644 --- a/keyboards/jacky_studio/s7_elephant/rev2/info.json +++ b/keyboards/jacky_studio/s7_elephant/rev2/info.json @@ -2,8 +2,6 @@ "keyboard_name": "S7 Elephant Rev2", "url": "https://geekhack.org/index.php?topic=103148.0", "maintainer": "qmk", - "width": 17.25, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/jacky_studio/s7_elephant/rev2/rules.mk b/keyboards/jacky_studio/s7_elephant/rev2/rules.mk index 321f7fc6800a..26c913e342ce 100644 --- a/keyboards/jacky_studio/s7_elephant/rev2/rules.mk +++ b/keyboards/jacky_studio/s7_elephant/rev2/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LTO_ENABLE = yes diff --git a/keyboards/jadookb/jkb2/config.h b/keyboards/jadookb/jkb2/config.h new file mode 100644 index 000000000000..ac5808f236bc --- /dev/null +++ b/keyboards/jadookb/jkb2/config.h @@ -0,0 +1,32 @@ + /* Copyright 2021 Wizard-GG + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once +#include "config_common.h" + +#define VENDOR_ID 0x4A4B // "JK" +#define PRODUCT_ID 0x3225 // "2%" +#define DEVICE_VER 0x0001 +#define MANUFACTURER JadooKB +#define PRODUCT JKB2 + +#define MATRIX_ROWS 1 +#define MATRIX_COLS 2 + +#define MATRIX_ROW_PINS { B1 } +#define MATRIX_COL_PINS { B3 ,B2} +#define UNUSED_PINS + +#define DIODE_DIRECTION COL2ROW diff --git a/keyboards/jadookb/jkb2/info.json b/keyboards/jadookb/jkb2/info.json new file mode 100644 index 000000000000..ed818d641271 --- /dev/null +++ b/keyboards/jadookb/jkb2/info.json @@ -0,0 +1,10 @@ +{ + "keyboard_name": "jkb2", + "url": "https://jadookb.com/", + "maintainer": "Wizard-GG", + "layouts": { + "LAYOUT": { + "layout": [ {"label":"z","x": 0, "y": 0 }, {"label":"x","x": 1, "y": 0 }] + } + } +} diff --git a/keyboards/jadookb/jkb2/jkb2.c b/keyboards/jadookb/jkb2/jkb2.c new file mode 100644 index 000000000000..3ac90e97ebb6 --- /dev/null +++ b/keyboards/jadookb/jkb2/jkb2.c @@ -0,0 +1,16 @@ + /* Copyright 2021 Wizard-GG + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "jkb2.h" diff --git a/keyboards/jadookb/jkb2/jkb2.h b/keyboards/jadookb/jkb2/jkb2.h new file mode 100644 index 000000000000..1bddef45de5b --- /dev/null +++ b/keyboards/jadookb/jkb2/jkb2.h @@ -0,0 +1,25 @@ + /* Copyright 2021 Wizard-GG + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + K01, K02 \ +) \ +{ \ + { K01, K02 }, \ +} diff --git a/keyboards/jadookb/jkb2/keymaps/default/keymap.c b/keyboards/jadookb/jkb2/keymaps/default/keymap.c new file mode 100644 index 000000000000..f2470c083393 --- /dev/null +++ b/keyboards/jadookb/jkb2/keymaps/default/keymap.c @@ -0,0 +1,23 @@ + /* Copyright 2021 Wizard-GG + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_Z, KC_X + ) +}; diff --git a/keyboards/jadookb/jkb2/keymaps/via/config.h b/keyboards/jadookb/jkb2/keymaps/via/config.h new file mode 100644 index 000000000000..ecd00aced4a0 --- /dev/null +++ b/keyboards/jadookb/jkb2/keymaps/via/config.h @@ -0,0 +1,20 @@ + + /* Copyright 2021 Wizard-GG + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#define USB_POLLING_INTERVAL_MS 1 +#define QMK_KEYS_PER_SCAN 4 diff --git a/keyboards/jadookb/jkb2/keymaps/via/keymap.c b/keyboards/jadookb/jkb2/keymaps/via/keymap.c new file mode 100644 index 000000000000..fc10bc32bbc5 --- /dev/null +++ b/keyboards/jadookb/jkb2/keymaps/via/keymap.c @@ -0,0 +1,34 @@ + + /* Copyright 2021 Wizard-GG + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + KC_Z, KC_X + ), + [1] = LAYOUT( + _______, _______ + ), + [2] = LAYOUT( + _______, _______ + ), + [3] = LAYOUT( + _______, _______ + ) +}; diff --git a/keyboards/jadookb/jkb2/keymaps/via/rules.mk b/keyboards/jadookb/jkb2/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/jadookb/jkb2/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/jadookb/jkb2/readme.md b/keyboards/jadookb/jkb2/readme.md new file mode 100644 index 000000000000..09f01a6cdebd --- /dev/null +++ b/keyboards/jadookb/jkb2/readme.md @@ -0,0 +1,23 @@ +# JKB2 osu! Macropad + +![JKB2](https://i.imgur.com/9f0HETUh.jpg) + +A 2% hotswap osu! Macropad from JadooKB. + +* Keyboard Maintainer: [Wizard-GG](https://github.com/wizard-gg) +* Hardware Supported: JKB2 OSU +* Hardware Availability: [Jadoo Keyboard](https://jadookb.com/jkb2) + +Make example for this keyboard (after setting up your build environment): + + make jadookb/jkb2:default + +Flashing example for this keyboard: + + make jadookb/jkb2:default:flash + +To reset the board into bootloader mode, do the following step: + +* Hold the **left** key while connecting the USB cable + +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/jadookb/jkb2/rules.mk b/keyboards/jadookb/jkb2/rules.mk new file mode 100644 index 000000000000..60eb027a116f --- /dev/null +++ b/keyboards/jadookb/jkb2/rules.mk @@ -0,0 +1,19 @@ +# 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 = yes # Commands for debug and configuration +# 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 diff --git a/keyboards/jadookb/jkb65/config.h b/keyboards/jadookb/jkb65/config.h new file mode 100644 index 000000000000..a7710a0e035b --- /dev/null +++ b/keyboards/jadookb/jkb65/config.h @@ -0,0 +1,52 @@ + /* Copyright 2021 Wizad-GG + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +#define VENDOR_ID 0x4A4B +#define PRODUCT_ID 0xEF6A +#define DEVICE_VER 0x0001 +#define MANUFACTURER JadooKB +#define PRODUCT JKB65 RGB + +#define MATRIX_ROWS 5 +#define MATRIX_COLS 16 + +#define MATRIX_ROW_PINS { E6, B7, F7, F4, F5 } +#define MATRIX_COL_PINS { F6,B1,F1,C7,C6,B6,B5,B4,D7,B3,D4,D5,D3,D2,D1,D0 } + +#define UNUSED_PINS + +#define DIODE_DIRECTION COL2ROW + +#define RGB_DI_PIN F0 + +#define DRIVER_LED_TOTAL 67 + +#define RGB_DISABLE_WHEN_USB_SUSPENDED +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define RGB_MATRIX_KEYPRESSES +#define RGB_DISABLE_TIMEOUT 90000 + + +#define DEBOUNCE 5 +#define LOCKING_SUPPORT_ENABLE +#define LOCKING_RESYNC_ENABLE + +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/jadookb/jkb65/info.json b/keyboards/jadookb/jkb65/info.json new file mode 100644 index 000000000000..8bb0ab7524af --- /dev/null +++ b/keyboards/jadookb/jkb65/info.json @@ -0,0 +1,10 @@ +{ + "keyboard_name": "jkb65", + "url": "https://jadookb.com/", + "maintainer": "Wizard-GG", + "layouts": { + "LAYOUT_67_ansi": { + "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"~", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Delete", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"PgUp", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"label":"PgDn", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Fn", "x":10, "y":4, "w":1.25}, {"label":"Menu", "x":11.25, "y":4, "w":1.25}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}] + } + } +} diff --git a/keyboards/jadookb/jkb65/jkb65.c b/keyboards/jadookb/jkb65/jkb65.c new file mode 100644 index 000000000000..aabdce7d2088 --- /dev/null +++ b/keyboards/jadookb/jkb65/jkb65.c @@ -0,0 +1,53 @@ + /* Copyright 2021 Wizard-GG + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "jkb65.h" + +#ifdef RGB_MATRIX_ENABLE + +led_config_t g_led_config = { { + // Key Matrix to LED Index + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }, + { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 }, + { 30, NO_LED, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43 }, + { NO_LED, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57 }, + { 58, 59, 60, NO_LED, NO_LED, NO_LED, 61, NO_LED, NO_LED, 62, 63, 64, 65, 66 } +}, { + // LED Index to Physical Position + { 0, 0}, { 15, 0}, { 30, 0}, { 45, 0}, { 60, 0}, { 75, 0}, { 90, 0}, {105, 0}, {120, 0}, {135, 0}, {150, 0}, {165, 0}, {180, 0}, {202, 0}, {225, 0}, // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace, Delete + { 4, 16}, { 22, 16}, { 37, 16}, { 52, 16}, { 67, 16}, { 82, 16}, { 97, 16}, {112, 16}, {127, 16}, {142, 16}, {157, 16}, {172, 16}, {187, 16}, {206, 16}, {225, 16}, // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], backslash , Home + { 6, 32}, { 26, 32}, { 41, 32}, { 56, 32}, { 71, 32}, { 86, 32}, {101, 32}, {116, 32}, {131, 32}, {146, 32}, {161, 32}, {176, 32}, {201, 32}, {225, 32}, // Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter, Page up + { 9, 48}, { 34, 48}, { 49, 48}, { 64, 48}, { 79, 48}, { 94, 48}, {109, 48}, {124, 48}, {139, 48}, {154, 48}, {169, 48}, {189, 48}, {208, 48}, {225, 48}, // LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up, Page Down + { 2, 64}, { 21, 64}, { 39, 64}, { 94, 64}, {148, 64}, {163, 64}, {193, 64}, {208, 64}, {225, 64}, // Ctrl, GUI, Alt, Space, RAlt, FN, Ctrl, Left, Down, Right + +}, { + // LED Index to Flag + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace, Delete + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], backslash , Home + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, // Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter, Page up + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, // LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up, Page Down + 1, 1, 1, 4, 1, 1, 1, 1, 1, // Ctrl, GUI, Alt, Space, Alt, FN, Left, Down, Right + +} }; + + +__attribute__ ((weak)) +void rgb_matrix_indicators_user(void) { + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color(30, 0xFF, 0xFF, 0xFF); + } +} +#endif diff --git a/keyboards/jadookb/jkb65/jkb65.h b/keyboards/jadookb/jkb65/jkb65.h new file mode 100644 index 000000000000..fa88e64bf75f --- /dev/null +++ b/keyboards/jadookb/jkb65/jkb65.h @@ -0,0 +1,34 @@ +/* Copyright 2021 Wizard-GG + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_67_ansi( \ + 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, K1D, K1F, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2F, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3F, \ + K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4F \ +) { \ + { 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, K1D, KC_NO, K1F }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO, K2F }, \ + { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO, K3F }, \ + { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, KC_NO, K4F }, \ +} + diff --git a/keyboards/jadookb/jkb65/keymaps/default/keymap.c b/keyboards/jadookb/jkb65/keymaps/default/keymap.c new file mode 100644 index 000000000000..b7b81a1500a1 --- /dev/null +++ b/keyboards/jadookb/jkb65/keymaps/default/keymap.c @@ -0,0 +1,51 @@ + /* Copyright 2021 Wizard-GG + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_67_ansi( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_TILD, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_67_ansi( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_PSCR, + _______, RGB_RMOD, RGB_HUI, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, _______, + MAGIC_UNNO_GUI,MAGIC_NO_GUI, _______, RGB_TOG, _______, MO(2), RGB_SPD, RGB_VAD, RGB_SPI + ), + [2] = LAYOUT_67_ansi( + RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_67_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/jadookb/jkb65/keymaps/via/config.h b/keyboards/jadookb/jkb65/keymaps/via/config.h new file mode 100644 index 000000000000..31f75074643f --- /dev/null +++ b/keyboards/jadookb/jkb65/keymaps/via/config.h @@ -0,0 +1,20 @@ + /* Copyright 2021 Wizard-GG + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define USB_POLLING_INTERVAL_MS 1 +#define QMK_KEYS_PER_SCAN 12 diff --git a/keyboards/jadookb/jkb65/keymaps/via/keymap.c b/keyboards/jadookb/jkb65/keymaps/via/keymap.c new file mode 100644 index 000000000000..b7b81a1500a1 --- /dev/null +++ b/keyboards/jadookb/jkb65/keymaps/via/keymap.c @@ -0,0 +1,51 @@ + /* Copyright 2021 Wizard-GG + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_67_ansi( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_TILD, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_67_ansi( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_PSCR, + _______, RGB_RMOD, RGB_HUI, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, _______, + MAGIC_UNNO_GUI,MAGIC_NO_GUI, _______, RGB_TOG, _______, MO(2), RGB_SPD, RGB_VAD, RGB_SPI + ), + [2] = LAYOUT_67_ansi( + RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_67_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/jadookb/jkb65/keymaps/via/rules.mk b/keyboards/jadookb/jkb65/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/jadookb/jkb65/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/jadookb/jkb65/readme.md b/keyboards/jadookb/jkb65/readme.md new file mode 100644 index 000000000000..9f8800d77c49 --- /dev/null +++ b/keyboards/jadookb/jkb65/readme.md @@ -0,0 +1,23 @@ +# JKB65 RGB + +![JKB65RGB](https://i.imgur.com/CKtVyyIh.jpg) + +A 65% hotswap in switch RGB keyboard from JadooKB. + +* Keyboard Maintainer: [Wizard-GG](https://github.com/wizard-gg) +* Hardware Supported: JKB65 RGB +* Hardware Availability: [Jadoo Keyboard](https://jadookb.com/jkb65) + +Make example for this keyboard (after setting up your build environment): + + make jadookb/jkb65:default + +Flashing example for this keyboard: + + make jadookb/jkb65:default:flash + +To reset the board into bootloader mode, do the following step: + +* Hold the **Esc** key while connecting the USB cable + +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/jadookb/jkb65/rules.mk b/keyboards/jadookb/jkb65/rules.mk new file mode 100644 index 000000000000..3a144d18db58 --- /dev/null +++ b/keyboards/jadookb/jkb65/rules.mk @@ -0,0 +1,22 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = WS2812 +LTO_ENABLE = yes diff --git a/keyboards/jae/j01/config.h b/keyboards/jae/j01/config.h index db40ee5c200f..68e8b0ff08c9 100644 --- a/keyboards/jae/j01/config.h +++ b/keyboards/jae/j01/config.h @@ -94,59 +94,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -167,26 +114,6 @@ along with this program. If not, see . #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ #define BOOTMAGIC_LITE_ROW 0 #define BOOTMAGIC_LITE_COLUMN 2 diff --git a/keyboards/jae/j01/info.json b/keyboards/jae/j01/info.json index 20b558b3de22..03c18c46d153 100644 --- a/keyboards/jae/j01/info.json +++ b/keyboards/jae/j01/info.json @@ -2,8 +2,6 @@ "keyboard_name": "J01", "url": "", "maintainer": "MechMerlin", - "width": 19, - "height": 5.25, "layouts": { "LAYOUT_ansi": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2.5, "y":0}, {"x":3.5, "y":0}, {"x":4.5, "y":0}, {"x":5.5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":10.5, "y":0}, {"x":11.5, "y":0}, {"x":12.5, "y":0}, {"x":13.5, "y":0}, {"x":14.5, "y":0}, {"x":15.5, "y":0}, {"x":16.5, "y":0}, {"x":18, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2.5, "y":1, "w":1.5}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, {"x":15, "y":1}, {"x":16, "y":1, "w":1.5}, {"x":18, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2.5, "y":2, "w":1.75}, {"x":4.25, "y":2}, {"x":5.25, "y":2}, {"x":6.25, "y":2}, {"x":7.25, "y":2}, {"x":8.25, "y":2}, {"x":9.25, "y":2}, {"x":10.25, "y":2}, {"x":11.25, "y":2}, {"x":12.25, "y":2}, {"x":13.25, "y":2}, {"x":14.25, "y":2}, {"x":15.25, "y":2, "w":2.25}, {"x":18, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2.5, "y":3, "w":2.25}, {"x":4.75, "y":3}, {"x":5.75, "y":3}, {"x":6.75, "y":3}, {"x":7.75, "y":3}, {"x":8.75, "y":3}, {"x":9.75, "y":3}, {"x":10.75, "y":3}, {"x":11.75, "y":3}, {"x":12.75, "y":3}, {"x":13.75, "y":3}, {"x":14.75, "y":3, "w":1.75}, {"x":16.75, "y":3.25}, {"x":18, "y":3}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":1.25}, {"x":5, "y":4, "w":1.25}, {"x":6.25, "y":4, "w":6.25}, {"x":12.5, "y":4, "w":1.5}, {"x":14, "y":4, "w":1.5}, {"x":15.75, "y":4.25}, {"x":16.75, "y":4.25}, {"x":17.75, "y":4.25}] diff --git a/keyboards/jae/j01/j01.c b/keyboards/jae/j01/j01.c index 351ddc4955cf..8763f8f0d442 100644 --- a/keyboards/jae/j01/j01.c +++ b/keyboards/jae/j01/j01.c @@ -29,20 +29,6 @@ void matrix_init_kb(void) { setPinOutput(E6); } -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - bool led_update_kb(led_t led_state) { if(led_update_user(led_state)) { writePin(E6, !led_state.caps_lock); diff --git a/keyboards/jae/j01/rules.mk b/keyboards/jae/j01/rules.mk index 4219cb80c0a0..b104ef80142b 100644 --- a/keyboards/jae/j01/rules.mk +++ b/keyboards/jae/j01/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/jagdpietr/drakon/drakon.c b/keyboards/jagdpietr/drakon/drakon.c index e1e6e641d0fa..65d950305526 100644 --- a/keyboards/jagdpietr/drakon/drakon.c +++ b/keyboards/jagdpietr/drakon/drakon.c @@ -28,7 +28,7 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { return true; } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE // Defines names for use in layer keycodes and the keymap enum Layer_names { @@ -37,10 +37,8 @@ _FN, _Lyr2 }; -__attribute__((weak)) -oled_rotation_t oled_init_user(oled_rotation_t rotation) { - return OLED_ROTATION_90; // flips the display 90 degrees if offhand - +oled_rotation_t oled_init_kb(oled_rotation_t rotation) { + return OLED_ROTATION_90; } static void render_status(void) { @@ -210,8 +208,11 @@ static void render_anim(void) { } } } -__attribute__((weak)) -void oled_task_user(void) { + +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } render_anim(); oled_set_cursor(0,6); @@ -221,6 +222,7 @@ void oled_task_user(void) { render_status(); + return false; } #endif diff --git a/keyboards/jagdpietr/drakon/info.json b/keyboards/jagdpietr/drakon/info.json index 328bdba9ee18..8208fa22bb60 100644 --- a/keyboards/jagdpietr/drakon/info.json +++ b/keyboards/jagdpietr/drakon/info.json @@ -2,8 +2,6 @@ "keyboard_name": "drakon", "url": "", "maintainer": "jagdpietr", - "width": 18.25, - "height": 5.25, "layouts": { "LAYOUT_ansi": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":16.25, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15.25, "y":1}, {"x":16.25, "y":1}, {"x":17.25, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":16.25, "y":2}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.25}, {"x":13.75, "y":3.25}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.75, "y":4.25}, {"x":13.75, "y":4.25}, {"x":14.75, "y":4.25}] diff --git a/keyboards/jagdpietr/drakon/rules.mk b/keyboards/jagdpietr/drakon/rules.mk index a74fce2898a2..0ede185c48ac 100644 --- a/keyboards/jagdpietr/drakon/rules.mk +++ b/keyboards/jagdpietr/drakon/rules.mk @@ -7,21 +7,19 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = 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 LTO_ENABLE = yes WPM_ENABLE = yes -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 ENCODER_ENABLE = yes diff --git a/keyboards/jc65/v32a/info.json b/keyboards/jc65/v32a/info.json index a6cc823771fb..9c22289d8fad 100644 --- a/keyboards/jc65/v32a/info.json +++ b/keyboards/jc65/v32a/info.json @@ -2,8 +2,6 @@ "keyboard_name": "jc65", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT": { "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}, {"x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.25}, {"x":15, "y":2}, {"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}, {"x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":2.75}, {"x":6.5, "y":4, "w":1.25}, {"x":7.75, "y":4, "w":2.25}, {"label":"Alt", "x":10, "y":4}, {"label":"Win", "x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] diff --git a/keyboards/jc65/v32a/rules.mk b/keyboards/jc65/v32a/rules.mk index 20f0222c11fb..694ad609a250 100644 --- a/keyboards/jc65/v32a/rules.mk +++ b/keyboards/jc65/v32a/rules.mk @@ -2,17 +2,10 @@ MCU = atmega32a # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid # build options -BOOTMAGIC_ENABLE = full +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no EXTRAKEY_ENABLE = yes CONSOLE_ENABLE = no diff --git a/keyboards/jc65/v32a/v32a.h b/keyboards/jc65/v32a/v32a.h index 4e24420913ad..91e6164ae2df 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 . */ -#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 314bfbf259ad..108e4126be37 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -55,5 +54,3 @@ along with this program. If not, see . #define DIODE_DIRECTION COL2ROW #define DEBOUNCE 5 - -#endif diff --git a/keyboards/jc65/v32u4/info.json b/keyboards/jc65/v32u4/info.json index 234a5cbfa759..84d832eede8e 100644 --- a/keyboards/jc65/v32u4/info.json +++ b/keyboards/jc65/v32u4/info.json @@ -2,8 +2,6 @@ "keyboard_name": "jc65", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT": { "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}, {"x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, {"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}, {"x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":2.75}, {"x":6.5, "y":4, "w":1.25}, {"x":7.75, "y":4, "w":2.25}, {"label":"Alt", "x":10, "y":4}, {"label":"Win", "x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] diff --git a/keyboards/jc65/v32u4/keymaps/gam3cat/keymap.c b/keyboards/jc65/v32u4/keymaps/gam3cat/keymap.c index 2b13f63edfba..7572b9e07365 100644 --- a/keyboards/jc65/v32u4/keymaps/gam3cat/keymap.c +++ b/keyboards/jc65/v32u4/keymaps/gam3cat/keymap.c @@ -223,7 +223,7 @@ void matrix_scan_user(void) { } -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { switch (biton32(state)) { case _BL: custom_backlight_level(0); diff --git a/keyboards/jc65/v32u4/keymaps/gam3cat/rules.mk b/keyboards/jc65/v32u4/keymaps/gam3cat/rules.mk index aaffae573bff..5ff16d471032 100644 --- a/keyboards/jc65/v32u4/keymaps/gam3cat/rules.mk +++ b/keyboards/jc65/v32u4/keymaps/gam3cat/rules.mk @@ -4,7 +4,7 @@ # TAP_DANCE_ENABLE = no # Enable TapDance functionality RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+1500) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) @@ -17,6 +17,5 @@ UNICODE_ENABLE = no # Unicode UNICODEMAP_ENABLE = no # Enable extended unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE = no # Audio output on port C6#VARIABLE_TRACE = no # Use this to debug changes to variable values -API_SYSEX_ENABLE = no # This enables using the Quantum SYSEX API to send strings(+5390) KEY_LOCK_ENABLE = no # This enables key lock(+260) SPLIT_KEYBOARD = no # This enables split keyboard support and includes all necessary files located at quantum/split_common diff --git a/keyboards/jc65/v32u4/rules.mk b/keyboards/jc65/v32u4/rules.mk index 34206244a84b..b52714cff77a 100644 --- a/keyboards/jc65/v32u4/rules.mk +++ b/keyboards/jc65/v32u4/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# 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 = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/jc65/v32u4/v32u4.h b/keyboards/jc65/v32u4/v32u4.h index 866e6cc6894d..8bab085b1159 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 027aacfd58cb..dd6984f10885 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -68,5 +67,3 @@ along with this program. If not, see . #define RGBLIGHT_HUE_STEP 8 #define RGBLIGHT_SAT_STEP 8 #define RGBLIGHT_VAL_STEP 8 - -#endif diff --git a/keyboards/jd40/info.json b/keyboards/jd40/info.json index 4d321ee35629..6cfdcdc3ee48 100644 --- a/keyboards/jd40/info.json +++ b/keyboards/jd40/info.json @@ -2,8 +2,6 @@ "keyboard_name": "jd40", "url": "", "maintainer": "qmk", - "width": 12, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/jd40/jd40.h b/keyboards/jd40/jd40.h index 4426fd762913..41ec860e8f22 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/jd40/rules.mk b/keyboards/jd40/rules.mk index 18780b47b1fe..33db0a0e15a0 100644 --- a/keyboards/jd40/rules.mk +++ b/keyboards/jd40/rules.mk @@ -2,29 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -KEYBOARD_LOCK_ENABLE = yes # Allow locking of keyboard via magic key -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -# SLEEP_LED_ENABLE = yes # 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 = yes # Enable keyboard backlight functionality -# MIDI_ENABLE = YES # MIDI controls -# UNICODE_ENABLE = YES # Unicode -# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = yes # Enable RGB Underglow diff --git a/keyboards/jd45/config.h b/keyboards/jd45/config.h index 4cc46c646cd3..be2f0963ace8 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -72,5 +71,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -#endif diff --git a/keyboards/jd45/info.json b/keyboards/jd45/info.json index 77ad23a4bee1..99059b096090 100644 --- a/keyboards/jd45/info.json +++ b/keyboards/jd45/info.json @@ -2,8 +2,6 @@ "keyboard_name": "jd45", "url": "", "maintainer": "qmk", - "width": 13, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/jd45/jd45.h b/keyboards/jd45/jd45.h index a0603d4e4342..ab560e742c48 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/jd45/keymaps/mjt6u/rules.mk b/keyboards/jd45/keymaps/mjt6u/rules.mk index 2cf0221ed774..1d2e0f09e18d 100644 --- a/keyboards/jd45/keymaps/mjt6u/rules.mk +++ b/keyboards/jd45/keymaps/mjt6u/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = yes # Console for debug(+400) diff --git a/keyboards/jd45/rules.mk b/keyboards/jd45/rules.mk index 82e70975df4c..63a241b57a86 100644 --- a/keyboards/jd45/rules.mk +++ b/keyboards/jd45/rules.mk @@ -2,27 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend # NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = YES # MIDI controls -# UNICODE_ENABLE = YES # Unicode -BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID +MIDI_ENABLE = yes # MIDI support diff --git a/keyboards/jels/jels88/config.h b/keyboards/jels/jels88/config.h new file mode 100644 index 000000000000..3018e15c8662 --- /dev/null +++ b/keyboards/jels/jels88/config.h @@ -0,0 +1,70 @@ +/* Copyright 2021 Joah Nelson (Jels) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor paramater */ +#define VENDOR_ID 0x006a // Jels (J) +#define PRODUCT_ID 0x0088 // Jels 88 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Jels +#define PRODUCT Jels88 + +/* Define Matrix size */ +#define MATRIX_ROWS 12 +#define MATRIX_COLS 9 + +/*Define Matrix Pins */ +#define MATRIX_ROW_PINS \ + { B3, B2, D1, D0, E6, B0, F0, F1, B5, B4, D7, D6 } +#define MATRIX_COL_PINS \ + { C7, C6, F7, F6, F5, F4, B1, D2, D3 } + +/* ws2812b RGB LEDs */ +#define RGB_DI_PIN B6 + +#ifdef RGBLIGHT_ENABLE +#define RGBLED_NUM 20 // Number of LEDs +#define RGBLIGHT_SLEEP +#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_DEFAULT_VAL 0 // start off +#define RGBLIGHT_LIMIT_VAL 225 // keep PCB under 500mA +#endif + +/* 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 + +#define BOOTMAGIC_LITE_ROW 1 +#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/jels/jels88/info.json b/keyboards/jels/jels88/info.json new file mode 100644 index 000000000000..96a740a9fdc2 --- /dev/null +++ b/keyboards/jels/jels88/info.json @@ -0,0 +1,102 @@ +{ + "keyboard_name": "Jels88", + "url": "", + "maintainer": "Jels", + "layouts": { + "LAYOUT_all": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "F1", "x": 1.25, "y": 0 }, + { "label": "F2", "x": 2.25, "y": 0 }, + { "label": "F3", "x": 3.25, "y": 0 }, + { "label": "F4", "x": 4.25, "y": 0 }, + { "label": "F5", "x": 5.5, "y": 0 }, + { "label": "F6", "x": 6.5, "y": 0 }, + { "label": "F7", "x": 7.5, "y": 0 }, + { "label": "F8", "x": 8.5, "y": 0 }, + { "label": "F9", "x": 9.75, "y": 0 }, + { "label": "F10", "x": 10.75, "y": 0 }, + { "label": "F11", "x": 11.75, "y": 0 }, + { "label": "F12", "x": 12.75, "y": 0 }, + { "label": "F13", "x": 14, "y": 0 }, + { "label": "PrtSc", "x": 15.25, "y": 0 }, + { "label": "Scroll Lock", "x": 16.25, "y": 0 }, + { "label": "Pause", "x": 17.25, "y": 0 }, + { "label": "~", "x": 0, "y": 1.25 }, + { "label": "!", "x": 1, "y": 1.25 }, + { "label": "@", "x": 2, "y": 1.25 }, + { "label": "#", "x": 3, "y": 1.25 }, + { "label": "$", "x": 4, "y": 1.25 }, + { "label": "%", "x": 5, "y": 1.25 }, + { "label": "^", "x": 6, "y": 1.25 }, + { "label": "&", "x": 7, "y": 1.25 }, + { "label": "*", "x": 8, "y": 1.25 }, + { "label": "(", "x": 9, "y": 1.25 }, + { "label": ")", "x": 10, "y": 1.25 }, + { "label": "_", "x": 11, "y": 1.25 }, + { "label": "+", "x": 12, "y": 1.25 }, + { "label": "Bksp", "x": 13, "y": 1.25 }, + { "label": "~", "x": 14, "y": 1.25 }, + { "label": "Insert", "x": 15.25, "y": 1.25 }, + { "label": "Home", "x": 16.25, "y": 1.25 }, + { "label": "PgUp", "x": 17.25, "y": 1.25 }, + { "label": "Tab", "x": 0, "y": 2.25, "w": 1.5 }, + { "label": "Q", "x": 1.5, "y": 2.25 }, + { "label": "W", "x": 2.5, "y": 2.25 }, + { "label": "E", "x": 3.5, "y": 2.25 }, + { "label": "R", "x": 4.5, "y": 2.25 }, + { "label": "T", "x": 5.5, "y": 2.25 }, + { "label": "Y", "x": 6.5, "y": 2.25 }, + { "label": "U", "x": 7.5, "y": 2.25 }, + { "label": "I", "x": 8.5, "y": 2.25 }, + { "label": "O", "x": 9.5, "y": 2.25 }, + { "label": "P", "x": 10.5, "y": 2.25 }, + { "label": "{", "x": 11.5, "y": 2.25 }, + { "label": "}", "x": 12.5, "y": 2.25 }, + { "label": "|", "x": 13.5, "y": 2.25, "w": 1.5 }, + { "label": "Delete", "x": 15.25, "y": 2.25 }, + { "label": "End", "x": 16.25, "y": 2.25 }, + { "label": "PgDn", "x": 17.25, "y": 2.25 }, + { "label": "Caps Lock", "x": 0, "y": 3.25, "w": 1.75 }, + { "label": "A", "x": 1.75, "y": 3.25 }, + { "label": "S", "x": 2.75, "y": 3.25 }, + { "label": "D", "x": 3.75, "y": 3.25 }, + { "label": "F", "x": 4.75, "y": 3.25 }, + { "label": "G", "x": 5.75, "y": 3.25 }, + { "label": "H", "x": 6.75, "y": 3.25 }, + { "label": "J", "x": 7.75, "y": 3.25 }, + { "label": "K", "x": 8.75, "y": 3.25 }, + { "label": "L", "x": 9.75, "y": 3.25 }, + { "label": ":", "x": 10.75, "y": 3.25 }, + { "label": "\"", "x": 11.75, "y": 3.25 }, + { "label": "Enter", "x": 12.75, "y": 3.25, "w": 2.25 }, + { "label": "Shift", "x": 0, "y": 4.25, "w": 1.25 }, + { "label": "|", "x": 1.25, "y": 4.25 }, + { "label": "Z", "x": 2.25, "y": 4.25 }, + { "label": "X", "x": 3.25, "y": 4.25 }, + { "label": "C", "x": 4.25, "y": 4.25 }, + { "label": "V", "x": 5.25, "y": 4.25 }, + { "label": "B", "x": 6.25, "y": 4.25 }, + { "label": "N", "x": 7.25, "y": 4.25 }, + { "label": "M", "x": 8.25, "y": 4.25 }, + { "label": "<", "x": 9.25, "y": 4.25 }, + { "label": ">", "x": 10.25, "y": 4.25 }, + { "label": "?", "x": 11.25, "y": 4.25 }, + { "label": "Shift", "x": 12.25, "y": 4.25, "w": 1.75 }, + { "x": 14, "y": 4.25 }, + { "label": "\u2191", "x": 16.25, "y": 4.25 }, + { "label": "Ctrl", "x": 0, "y": 5.25, "w": 1.25 }, + { "label": "Win", "x": 1.25, "y": 5.25, "w": 1.25 }, + { "label": "Alt", "x": 2.5, "y": 5.25, "w": 1.25 }, + { "x": 3.75, "y": 5.25, "w": 6.25 }, + { "label": "Alt", "x": 10, "y": 5.25, "w": 1.25 }, + { "label": "Win", "x": 11.25, "y": 5.25, "w": 1.25 }, + { "label": "Menu", "x": 12.5, "y": 5.25, "w": 1.25 }, + { "label": "Ctrl", "x": 13.75, "y": 5.25, "w": 1.25 }, + { "label": "\u2190", "x": 15.25, "y": 5.25 }, + { "label": "\u2193", "x": 16.25, "y": 5.25 }, + { "label": "\u2192", "x": 17.25, "y": 5.25 } + ] + } + } +} diff --git a/keyboards/jels/jels88/jels88.c b/keyboards/jels/jels88/jels88.c new file mode 100644 index 000000000000..bd8e30e4ee62 --- /dev/null +++ b/keyboards/jels/jels88/jels88.c @@ -0,0 +1,38 @@ +/* Copyright 2021 Joah Nelson (Jels) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +// not much here ... just indicator LEDs + +#include "jels88.h" + +// LED indicator pins +#define CAPS_LED D5 +#define SCROLL_LED D4 + +void keyboard_pre_init_kb() { + setPinOutput(CAPS_LED); + setPinOutput(SCROLL_LED); + keyboard_pre_init_user(); +} + +bool led_update_kb(led_t led_state) { + bool res = led_update_user(led_state); + if (res) { + writePin(CAPS_LED, led_state.caps_lock); + writePin(SCROLL_LED, led_state.scroll_lock); + } + return res; +} diff --git a/keyboards/jels/jels88/jels88.h b/keyboards/jels/jels88/jels88.h new file mode 100644 index 000000000000..8314d0d2e064 --- /dev/null +++ b/keyboards/jels/jels88/jels88.h @@ -0,0 +1,89 @@ +/* copyright 2021 Joah Nelson (Jels) +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERAHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +#define ____ KC_NO + + +#define LAYOUT_all( \ + K0B0, K0B1, K0A1, K0A2, K0B2, K0B3, K0A3, K0A4, K0B4, K0B5, K0A5, K0A6, K0B6, K0B7, K0A7, K0A8, K0B8, \ + K1A0, K1A1, K1B1, K1B2, K1A2, K1A3, K1B3, K1B4, K1A4, K1A5, K1B5, K1B6, K1A6, K1A7, K2B7, K2A7, K2A8, K1A8, \ + K2B0, K2B1, K2A1, K2A2, K2B2, K2B3, K2A3, K2A4, K2B4, K2B5, K2A5, K2A6, K2B6, K3A7, K1B7, K1B8, K2B8, \ + K3A0, K3A1, K3B1, K3B2, K3A2, K3A3, K3B3, K3B4, K3A4, K3A5, K3B5, K3B6, K3A6, \ + K4B0, K4B1, K4A1, K4A2, K4B2, K4B3, K4A3, K4A4, K4B4, K4B5, K4A5, K4A6, K4B6, K4B7, K4A7, \ + K5A0, K5A1, K5B1, K5B3, K5A5, K5A6, K5B6, K5B7, K5A7, K5A8, K4A8 \ +){ \ + {____, K0A1, K0A2, K0A3, K0A4, K0A5, K0A6, K0A7, K0A8}, \ + {K0B0, K0B1, K0B2, K0B3, K0B4, K0B5, K0B6, K0B7, K0B8}, \ + {K1A0, K1A1, K1A2, K1A3, K1A4, K1A5, K1A6, K1A7, K1A8}, \ + {____, K1B1, K1B2, K1B3, K1B4, K1B5, K1B6, K1B7, K1B8}, \ + {____, K2A1, K2A2, K2A3, K2A4, K2A5, K2A6, K2A7, K2A8}, \ + {K2B0, K2B1, K2B2, K2B3, K2B4, K2B5, K2B6, K2B7, K2B8}, \ + {K3A0, K3A1, K3A2, K3A3, K3A4, K3A5, K3A6, K3A7, ____}, \ + {____, K3B1, K3B2, K3B3, K3B4, K3B5, K3B6, ____, ____}, \ + {____, K4A1, K4A2, K4A3, K4A4, K4A5, K4A6, K4A7, K4A8}, \ + {K4B0, K4B1, K4B2, K4B3, K4B4, K4B5, K4B6, K4B7, ____}, \ + {K5A0, K5A1, ____, ____, ____, K5A5, K5A6, K5A7, K5A8}, \ + {____, K5B1, ____, K5B3, ____, ____, K5B6, K5B7, ____} \ +} + +#define LAYOUT_ansi( \ + K0B0, K0B1, K0A1, K0A2, K0B2, K0B3, K0A3, K0A4, K0B4, K0B5, K0A5, K0A6, K0B6, K0B7, K0A7, K0A8, K0B8, \ + K1A0, K1A1, K1B1, K1B2, K1A2, K1A3, K1B3, K1B4, K1A4, K1A5, K1B5, K1B6, K1A6, K1A7, K2B7, K2A7, K2A8, K1A8, \ + K2B0, K2B1, K2A1, K2A2, K2B2, K2B3, K2A3, K2A4, K2B4, K2B5, K2A5, K2A6, K2B6, K3A7, K1B7, K1B8, K2B8, \ + K3A0, K3A1, K3B1, K3B2, K3A2, K3A3, K3B3, K3B4, K3A4, K3A5, K3B5, K3B6, K3A6, \ + K4B0, K4A1, K4A2, K4B2, K4B3, K4A3, K4A4, K4B4, K4B5, K4A5, K4A6, K4B6, K4B7, K4A7, \ + K5A0, K5A1, K5B1, K5B3, K5A5, K5A6, K5B6, K5B7, K5A7, K5A8, K4A8 \ +){ \ + {____, K0A1, K0A2, K0A3, K0A4, K0A5, K0A6, K0A7, K0A8}, \ + {K0B0, K0B1, K0B2, K0B3, K0B4, K0B5, K0B6, K0B7, K0B8}, \ + {K1A0, K1A1, K1A2, K1A3, K1A4, K1A5, K1A6, K1A7, K1A8}, \ + {____, K1B1, K1B2, K1B3, K1B4, K1B5, K1B6, K1B7, K1B8}, \ + {____, K2A1, K2A2, K2A3, K2A4, K2A5, K2A6, K2A7, K2A8}, \ + {K2B0, K2B1, K2B2, K2B3, K2B4, K2B5, K2B6, K2B7, K2B8}, \ + {K3A0, K3A1, K3A2, K3A3, K3A4, K3A5, K3A6, K3A7, ____}, \ + {____, K3B1, K3B2, K3B3, K3B4, K3B5, K3B6, ____, ____}, \ + {____, K4A1, K4A2, K4A3, K4A4, K4A5, K4A6, K4A7, K4A8}, \ + {K4B0, K4B1, K4B2, K4B3, K4B4, K4B5, K4B6, K4B7, ____}, \ + {K5A0, K5A1, ____, ____, ____, K5A5, K5A6, K5A7, K5A8}, \ + {____, K5B1, ____, K5B3, ____, ____, K5B6, K5B7, ____} \ +} + + +#define LAYOUT_iso( \ + K0B0, K0B1, K0A1, K0A2, K0B2, K0B3, K0A3, K0A4, K0B4, K0B5, K0A5, K0A6, K0B6, K0B7, K0A7, K0A8, K0B8, \ + K1A0, K1A1, K1B1, K1B2, K1A2, K1A3, K1B3, K1B4, K1A4, K1A5, K1B5, K1B6, K1A6, K1A7, K3A7, K2A7, K2A8, K1A8, \ + K2B0, K2B1, K2A1, K2A2, K2B2, K2B3, K2A3, K2A4, K2B4, K2B5, K2A5, K2A6, K2B6, K2B7, K1B7, K1B8, K2B8, \ + K3A0, K3A1, K3B1, K3B2, K3A2, K3A3, K3B3, K3B4, K3A4, K3A5, K3B5, K3B6, K3A6, \ + K4B0, K4A1, K4A2, K4B2, K4B3, K4A3, K4A4, K4B4, K4B5, K4A5, K4A6, K4B6, K4B7, K4A7, \ + K5A0, K5A1, K5B1, K5B3, K5A5, K5A6, K5B6, K5B7, K5A7, K5A8, K4A8 \ +){ \ + {____, K0A1, K0A2, K0A3, K0A4, K0A5, K0A6, K0A7, K0A8}, \ + {K0B0, K0B1, K0B2, K0B3, K0B4, K0B5, K0B6, K0B7, K0B8}, \ + {K1A0, K1A1, K1A2, K1A3, K1A4, K1A5, K1A6, K1A7, K1A8}, \ + {____, K1B1, K1B2, K1B3, K1B4, K1B5, K1B6, K1B7, K1B8}, \ + {____, K2A1, K2A2, K2A3, K2A4, K2A5, K2A6, K2A7, K2A8}, \ + {K2B0, K2B1, K2B2, K2B3, K2B4, K2B5, K2B6, K2B7, K2B8}, \ + {K3A0, K3A1, K3A2, K3A3, K3A4, K3A5, K3A6, K3A7, ____}, \ + {____, K3B1, K3B2, K3B3, K3B4, K3B5, K3B6, ____, ____}, \ + {____, K4A1, K4A2, K4A3, K4A4, K4A5, K4A6, K4A7, K4A8}, \ + {K4B0, ____, K4B2, K4B3, K4B4, K4B5, K4B6, K4B7, ____}, \ + {K5A0, K5A1, ____, ____, ____, K5A5, K5A6, K5A7, K5A8}, \ + {____, K5B1, ____, K5B3, ____, ____, K5B6, K5B7, ____} \ +} diff --git a/keyboards/jels/jels88/keymaps/default/keymap.c b/keyboards/jels/jels88/keymaps/default/keymap.c new file mode 100644 index 000000000000..f8ee7175376f --- /dev/null +++ b/keyboards/jels/jels88/keymaps/default/keymap.c @@ -0,0 +1,54 @@ +/* Copyright 2021 Joah Nelson (Jels) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +//base layer +[0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT +), +[1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +[2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS +), +[3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/jels/jels88/keymaps/via/keymap.c b/keyboards/jels/jels88/keymaps/via/keymap.c new file mode 100644 index 000000000000..f8ee7175376f --- /dev/null +++ b/keyboards/jels/jels88/keymaps/via/keymap.c @@ -0,0 +1,54 @@ +/* Copyright 2021 Joah Nelson (Jels) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +//base layer +[0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT +), +[1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +[2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS +), +[3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/jels/jels88/keymaps/via/rules.mk b/keyboards/jels/jels88/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/jels/jels88/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/jels/jels88/readme.md b/keyboards/jels/jels88/readme.md new file mode 100644 index 000000000000..0ea1f4c64cd5 --- /dev/null +++ b/keyboards/jels/jels88/readme.md @@ -0,0 +1,25 @@ +# jels88 + +![jels88](https://i.imgur.com/7kuYR4G.png) + +* Keyboard Maintainer: [jels](https://github.com/Jels-kb) +* Hardware Supported: jels88b/jels88c PCB +* Hardware Availabililty: Group buys, Various dates. + +Make example for this keyboard (after setting up your build environment): + + make jels/jels88:default + +Flashing example for this keyboard: + + make jels/jels88:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the top right key (ESC) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB +* **Keycode in layout**: Press the key mapped to `RESET` if it is available diff --git a/keyboards/jels/jels88/rules.mk b/keyboards/jels/jels88/rules.mk new file mode 100644 index 000000000000..2c102fa72377 --- /dev/null +++ b/keyboards/jels/jels88/rules.mk @@ -0,0 +1,20 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 + diff --git a/keyboards/jian/handwired/rules.mk b/keyboards/jian/handwired/rules.mk index 61f40dfcbe1a..b12d594ea185 100644 --- a/keyboards/jian/handwired/rules.mk +++ b/keyboards/jian/handwired/rules.mk @@ -2,13 +2,6 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options diff --git a/keyboards/jian/info.json b/keyboards/jian/info.json index 4503fb3b477c..e9c875e7921b 100644 --- a/keyboards/jian/info.json +++ b/keyboards/jian/info.json @@ -2,8 +2,6 @@ "keyboard_name": "jian", "url": "t.me/s/kgofhedgehogs", "maintainer": "KGOH", - "width": 17, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/jian/keymaps/advanced/keymap.c b/keyboards/jian/keymaps/advanced/keymap.c index 25108aa13dac..4aad7b65ad25 100644 --- a/keyboards/jian/keymaps/advanced/keymap.c +++ b/keyboards/jian/keymaps/advanced/keymap.c @@ -278,7 +278,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #endif // ALT_LAYOUTS_ENABLE }; -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } diff --git a/keyboards/jian/nsrev2/rules.mk b/keyboards/jian/nsrev2/rules.mk index 3942e629a157..7f93cad71285 100644 --- a/keyboards/jian/nsrev2/rules.mk +++ b/keyboards/jian/nsrev2/rules.mk @@ -2,13 +2,6 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = qmk-dfu # Build Options diff --git a/keyboards/jian/rev1/rules.mk b/keyboards/jian/rev1/rules.mk index 915b6475484c..cce01f50c30e 100644 --- a/keyboards/jian/rev1/rules.mk +++ b/keyboards/jian/rev1/rules.mk @@ -2,13 +2,6 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options diff --git a/keyboards/jian/rev2/rules.mk b/keyboards/jian/rev2/rules.mk index bbfde67f944e..fa43614a0649 100644 --- a/keyboards/jian/rev2/rules.mk +++ b/keyboards/jian/rev2/rules.mk @@ -2,13 +2,6 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = qmk-dfu # Build Options diff --git a/keyboards/jiran/info.json b/keyboards/jiran/info.json index 774e70f7f6fb..8dd6a43fe808 100644 --- a/keyboards/jiran/info.json +++ b/keyboards/jiran/info.json @@ -2,8 +2,6 @@ "keyboard_name": "jiran", "url": "t.me/s/ladniys", "maintainer": "Ladniy", - "width": 18.75, - "height": 5.63, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/jiran/rules.mk b/keyboards/jiran/rules.mk index 9156f166f737..269ace179e4c 100644 --- a/keyboards/jiran/rules.mk +++ b/keyboards/jiran/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 = 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 SPLIT_KEYBOARD = yes diff --git a/keyboards/jisplit89/info.json b/keyboards/jisplit89/info.json index 9e4f176aacf2..4f138a526247 100644 --- a/keyboards/jisplit89/info.json +++ b/keyboards/jisplit89/info.json @@ -2,8 +2,6 @@ "keyboard_name": "jisplit89", "url": "https://salicylic-acid3.hatenablog.com/", "maintainer": "Salicylic_acid3", - "width": 17, - "height": 6.25, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/jisplit89/keymaps/salicylic/keymap.c b/keyboards/jisplit89/keymaps/salicylic/keymap.c index a4c7c99f1d8e..ffd3b853b5bd 100644 --- a/keyboards/jisplit89/keymaps/salicylic/keymap.c +++ b/keyboards/jisplit89/keymaps/salicylic/keymap.c @@ -84,7 +84,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------| JP_QUOT, JP_EXLM, JP_QUES, JP_LBRC, JP_RBRC, JP_TILD, KC_P6, KC_P7, KC_P8, KC_P9, JP_ASTR, JP_SLSH, _______, _______, KC_HOME, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------| -LCTL_T(JP_QUOT),JP_HASH, JP_DQT, JP_LPRN, JP_RPRN, JP_AT, XXXXXXX, KC_P4, KC_P5, KC_P6, JP_MINS, JP_EQL, _______, KC_END, +LCTL_T(JP_QUOT),JP_HASH,JP_DQUO, JP_LPRN, JP_RPRN, JP_AT, XXXXXXX, KC_P4, KC_P5, KC_P6, JP_MINS, JP_EQL, _______, KC_END, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------| SFT_T(JP_CIRC),JP_PERC, JP_AMPR, JP_SCLN, JP_COLN, JP_PIPE, KC_P0, KC_P1, KC_P2, KC_P3, JP_PLUS, _______, KC_PGDN, KC_UP, KC_PGUP, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------| diff --git a/keyboards/jisplit89/rules.mk b/keyboards/jisplit89/rules.mk index 4c02d3ad5efd..76557094fb6c 100644 --- a/keyboards/jisplit89/rules.mk +++ b/keyboards/jisplit89/rules.mk @@ -7,21 +7,16 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode +AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = yes diff --git a/keyboards/jj40/config.h b/keyboards/jj40/config.h deleted file mode 100644 index 0d168f2c01fd..000000000000 --- a/keyboards/jj40/config.h +++ /dev/null @@ -1,54 +0,0 @@ -/* -Copyright 2017 Luiz Ribeiro -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -#include "config_common.h" - -#define VENDOR_ID 0x4B50 // "KP" -#define PRODUCT_ID 0x0040 -#define DEVICE_VER 0x0200 -#define MANUFACTURER KPrepublic -#define PRODUCT JJ40 - -/* matrix size */ -#define MATRIX_ROWS 4 -#define MATRIX_COLS 12 -#define MATRIX_ROW_PINS { B0, B1, B3, B4 } -#define MATRIX_COL_PINS { C4, C5, C6, C7, A4, A5, A6, A7, A3, A2, A1, A0 } - -/* COL2ROW or ROW2COL */ -#define DIODE_DIRECTION COL2ROW - -#define BACKLIGHT_PIN D4 -#define BACKLIGHT_LEVELS 12 -#define BACKLIGHT_BREATHING - -/* RGB underglow */ -// NOTE: for PS2AVRGB boards, underglow commands are sent via I2C to 0xB0. -#define RGBLED_NUM 5 -#define RGBLIGHT_ANIMATIONS - -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 5 - -#define USB_MAX_POWER_CONSUMPTION 100 - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* Bootmagic Lite key configuration */ -// #define BOOTMAGIC_LITE_ROW 0 -// #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/jj40/info.json b/keyboards/jj40/info.json deleted file mode 100644 index c6416ce16814..000000000000 --- a/keyboards/jj40/info.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "keyboard_name": "jj40", - "url": "", - "maintainer": "qmk", - "width": 12, - "height": 4, - "layouts": { - "LAYOUT_planck_mit": { - "key_count": 47, - "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3, "w":2}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}] - }, - - "LAYOUT_ortho_4x12": { - "key_count": 48, - "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}] - }, - - "LAYOUT_planck_1x2uR": { - "key_count": 47, - "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3, "w":2}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}] - } - } -} diff --git a/keyboards/jj40/keymaps/ajp10304/readme.md b/keyboards/jj40/keymaps/ajp10304/readme.md deleted file mode 100644 index 345fbccf60f1..000000000000 --- a/keyboards/jj40/keymaps/ajp10304/readme.md +++ /dev/null @@ -1,119 +0,0 @@ -# AJP10304 Custom JJ40 Layout -# Also available for the Planck, Shark and Atreus50 - -**Note:** In the tables below where there are two characters on a key, -the second is the output when shift is applied. - -**Note:** The below tables assume a UK layout. - -#### Flashing -Use sleep to get a chance to get into boot mode. - -`make jj40:ajp10304:flash` - -##### Main Qwerty Layer - -* Tab: when held, operates as shift. -* Enter: when held, operates as shift. -* MENU: perform right-click - -| | | | | | | | | | | | | -| ---- |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| ----:| -| Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp | -| Tab | A | S | D | F | G | H | J | K | L | ;: | Enter| -| Shft | Z | X | C | V | B | N | M | ,< | .> | /? | Shft | -| Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Raise | Shift| MENU | Ctrl | Fn2 | - -##### Function Layer -Activated when `fn` held in the above `qwerty` layer. - -| | | | | | | | | | | | | -| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| -| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | -| 1! | 2" | 3£ | 4$ | 5% | 6^ | 7& | 8* | 9( | 0) | ~ |INSERT| -| Shift | \| | `¬ | #~ | * | -_ | =+ | \| | [{ | ]} | '@ |Shift | -| Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Mouse | MENU | Alt | Ctrl | Fn2 | - -##### Lower Layer -Activated when `Lower` is held in the above `qwerty` layer. - -* Numbers are along the top row, their shifted counterparts are on row 2. -* WrdBks: `backspace` with `ctrl` applied. I.e. delete a word. -* WrdDel: `delete` with `ctrl` applied. I.e. forward delete a word. - -| | | | | | | | | | | | | -| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| -| 1! | 2" | 3£ | 4$ | 5% | 6^ | 7& | 8* | 9( | 0) | DEL | Bksp | -| ! | " | £ | $ | % | ^ | & | * | ( | ) |WrdDel|WrdBks| -| Shift | \| | `¬ | #~ | '@ | -_ | =+ | #~ | [{ | ]} | '@ |Shift | -| | | | |Lower | Del |Space | | Next | Vol- | Vol+ | Play | - -##### Raise Layer -Activated when `Raise` is held in the above `qwerty` layer. - -* Preferred layer for typing brackets. -* Allows for cursor navigation to be used solely with the right hand. -* WRDSEL: Select the word where the cursor is. -* |< and >|: Apply `ctrl` to `left` and `right` respectively for word jumping. - -| | | | | | | | | | | | | -| :---: |:----:| :---:| :---:| :---:| :---:| :---: | :---:| :---:| :---:| :---: | :---:| -| ` | |WRDSEL| [ | ] | | | PGUP | HOME |PGDOWN| |PRNTSC| -| ` | | | ( | ) | | | HOME | UP | END | |ZOOM +| -| | | | { | } | ||<| LEFT | DOWN |RIGHT |>||ZOOM -| -| Mouse | | | | | Alt | Enter |Raise | | | | | - -##### Lower + Raise -Activated when `Lower` and `Raise` are held together in the above `qwerty` layer. - -* Audio controls in the same position as cursor keys from the `Raise` layer. -* ????: Runs a macro for outputting a text string. Do not use this store passwords. -* Reset: Enter bootloader for flashing firmware to the keyboard. -* CAPS: Toggle caps lock. -* Macro functions: Allows recording of macros. To start recording the macro, press either REC1 or REC2. -To finish the recording, press STOP. To replay the macro, press either PLAY1 or PLAY2. -* MAC: Toggle MAC OS extensions to layers. This allows MLWR to be enabled with LOWER, -MRSE with RAISE, MFNC with FUNC and MFNC2 with FUNC2 respectively. - -| | | | | | | | | | | | | -| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| -| ???? | Reset|Qwerty| | | REC1 | REC2 | | | | | Del | -| CAPS | | | | | PLAY1|PLAY2 | Mute | Vol+ | Play | | | -| MAC | | | | | STOP1|STOP2 | Prev | Vol- | Next | | | -| | | | | | | | | DYN | | | | - -##### Function 2 Layer -Activated when `fn` held in the above `qwerty` layer. -* WRDSEL: Select the word where the cursor is. -* LNDEL: Delete the line where the cursor is. -* LNSEL: Select the line where the cursor is. -* DUP: Duplicate the selected text. -* LNJOIN: Join the line where the cursor is with the following line. -* MODE: Print either `PC` or `OSX` depending on what layer mode is active. - -| | | | | | | | | | | | | -| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| -| | |WRDSEL| | | | LNDEL| | | | | | -| | | LNSEL| DUP | | | | |LNJOIN| | | | -| | UNDO | CUT | COPY | PASTE| | | | | | | MODE | -| | | | | | | | | | | | | - -##### Mouse Layer -Activated when `fn` and `raise` held together. - -| | | | | | | | | | | | | -| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| -| ESC | | | | | | | | BTN3 | | | | -| ACC0 | ACC1 | ACC2 | | | | | BTN1 | UP | BTN2 | | | -| ACC0 | ACC1 | ACC2 | | | | | LEFT | DOWN | RIGHT| | | -| | | | | | | | | | | | | - -##### Number Pad Layout -Activated when holding `Esc` key. - -| | | | | | | | | | | | | -| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| -| | | | | | |NMLOCK| 7 | 8 | 9 | / | | -| | | | | | | | 4 | 5 | 6 | * | | -| | | | | | | | 1 | 2 | 3 | + | | -| | | | | | | | 0 | . | , | - | | diff --git a/keyboards/jj40/keymaps/cockpit/readme.md b/keyboards/jj40/keymaps/cockpit/readme.md deleted file mode 100644 index 766a3c93b245..000000000000 --- a/keyboards/jj40/keymaps/cockpit/readme.md +++ /dev/null @@ -1,55 +0,0 @@ -# Cockpit custom layout - -> This configuration is built around Lithuanian keyboard layout, but you can easily modify it to fit your needs - -## Layers - -### Default QWERTY - -| | | | | | | | | | | | | -| :-------: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :-------: | -|
Esc | Q
q | W
w | E
e | R
r | T
t | Y
y | U
u | I
i | O
o | P
p |
Bksp | -|
Tab | A
a | S
s | D
d | F
f | G
g | H
h | J
j | K
k | L
l | :
; | "
' | -|
Shift | Z
z | X
x | C
c | V
v | B
b | N
n | M
m | <
, | >
. | ?
/ |
Enter | -| Ctrl | Fn | GUI | Alt | Lower | Sp | ace | Raise | Left | Down | Up | Right | - -### Lower - -| | | | | | | | | | | | | -| :-------: | :----: | :----: | :----: | :-------: | :----: | :----: | :----: | :----: | :----: | :-----: | :------: | -| ~
\` | Ą
ą | Č
č | Ę
ę | Ė
ė | Į
į | Š
š | Ų
ų | Ū
ū | Ž
ž | \_
- |
Bksp | -|
Tab |
! |
@ |
# |
\$ |
% |
^ |
& |
\* |
( |
) |
Del | -|
Shift |
= |
+ |
- |
\| | {
[ | }
] |
< |
> |
{ |
} |
Ins | -| Ctrl | | | Alt | **Lower** | Sp | ace | | Home | PgDn | PgUp | End | - -### Raise - -| | | | | | | | | | | | | -| :-------: | :-----: | :-----: | :----: | :-----: | :----: | :----: | :-------: | :-----: | :----: | :----: | :-------: | -| ~
\` | !
1 | @
2 | #
3 | \$
4 | %
5 | ^
6 | &
7 | \*
8 | (
9 | )
0 |
Bksp | -|
Tab | \$
4 | %
5 | ^
6 | | | | | | | | \|
\ | -|
Shift | &
7 | \*
8 | (
9 | )
0 | | | | <
, | >
. | ?
/ |
Enter | -| Ctrl | | | Alt | | Sp | ace | **Raise** | Left | Down | Up | Right | - -### Function - -- Backlight breathing does not work. -- **Term** button is bound to `Calculator`. I have set this button as a shortcut to open a terminal. -- **Lock** is a shortcut for `Alt + L` - -| | | | | | | | | | | | | -| :-------: | :---------: | :---------: | :---------: | :---------: | :--------: | :----------: | :--------: | :----: | :---------: | :-----: | :------: | -|
F1 |
F2 |
F3 |
F4 |
F5 |
F6 |
F7 |
F8 |
F9 |
F10 |
F11 |
F12 | -|
Caps | RGB
Togl | RGB
Hue+ | RGB
Sat+ | RGB
Brt+ | BL
Togl | BL
Breath | BL
Brt+ | | Scr
Brt+ | |
Vol+ | -|
Shift |
Term | RGB
Hue- | RGB
Sat- | RGB
Brt- | WWW
< | WWW
> | BL
Brt- | | Scr
Brt- | PrScr |
Vol- | -| Ctrl | **Fn** | RGB
Mode | Alt | | Sp | ace | MPrev | MStop | MNext | MPlay | Lock | - -## Usage - -```bash -cd qmk_firmware -make jj40:cockpit -bootloadHID .build/jj40_cockpit.hex -``` - -_if you're getting permission errors use sudo_ diff --git a/keyboards/jj40/keymaps/fun40/rules.mk b/keyboards/jj40/keymaps/fun40/rules.mk deleted file mode 100644 index 3ec0a751564a..000000000000 --- a/keyboards/jj40/keymaps/fun40/rules.mk +++ /dev/null @@ -1,21 +0,0 @@ - - -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = no # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) -COMMAND_ENABLE = yes # Commands for debug and configuration -NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = yes # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID - -RGBLIGHT_ENABLE = yes -RGBLIGHT_CUSTOM_DRIVER = yes -DISABLE_WS2812 = yes - - -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - diff --git a/keyboards/jj40/keymaps/oscillope/rules.mk b/keyboards/jj40/keymaps/oscillope/rules.mk deleted file mode 100644 index a121bbc770ea..000000000000 --- a/keyboards/jj40/keymaps/oscillope/rules.mk +++ /dev/null @@ -1,14 +0,0 @@ -# build options -BOOTMAGIC_ENABLE = no -MOUSEKEY_ENABLE = no -EXTRAKEY_ENABLE = yes -CONSOLE_ENABLE = no -COMMAND_ENABLE = yes - -BACKLIGHT_ENABLE = no -BACKLIGHT_CUSTOM_DRIVER = no - -RGBLIGHT_ENABLE = no -RGBLIGHT_CUSTOM_DRIVER = no - -KEY_LOCK_ENABLE = yes diff --git a/keyboards/jj40/keymaps/skewwhiffy/keymap.c b/keyboards/jj40/keymaps/skewwhiffy/keymap.c deleted file mode 100644 index 6b193a15cb98..000000000000 --- a/keyboards/jj40/keymaps/skewwhiffy/keymap.c +++ /dev/null @@ -1,219 +0,0 @@ -/* Copyright 2017 Kenny Hung - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include QMK_KEYBOARD_H -#include "keymap_uk.h" - -// Layer shorthand -enum Layers { - cm, // colemak - dv, // dvorak - qw, // qwerty - nbl, // numbers left - nbr, // numbers right - syl, // symbols left - syr, // symbols right - nal, // navigation left - nar // navigation right -}; - -// Layer buttons -#define _Z_SFT SFT_T(UK_Z) -#define _SCLSH SFT_T(UK_SCLN) -#define _SLSH SFT_T(UK_SLSH) - -#define _X_NB LT(nbl, UK_X) -#define _Q_NB LT(nbl, UK_Q) -#define _DOT_NB LT(nbr, UK_DOT) -#define _V_NB LT(nbr, UK_V) -#define __NBL LT(nbl, _______) -#define __NBR LT(nbr, _______) - -#define _C_SY LT(syl, UK_C) -#define _J_SY LT(syl, UK_J) -#define _W_SY LT(syr, UK_W) -#define _COM_SY LT(syr, UK_COMM) -#define __SYL LT(syl, _______) -#define __SYR LT(syr, _______) - -#define _V_NAL LT(nal, UK_V) -#define _K_NAL LT(nal, UK_K) -#define _M_NAR LT(nar, UK_M) -#define __NAL LT(nal, _______) -#define __NAR LT(nar, _______) - -// Custom hotkeys -#define _TERM LCTL(UK_QUOT) // Hotkey for terminal -#define _S_TAB S(UK_TAB) -#define _C_LEFT LCTL(UK_LEFT) -#define _C_RGHT LCTL(UK_RGHT) -#define _A_LEFT LALT(UK_LEFT) -#define _A_RGHT LALT(UK_RGHT) - -// Custom hotkeys -#define _TERM LCTL(UK_QUOT) // Hotkey for terminal -#define _S_TAB S(UK_TAB) -#define _C_LEFT LCTL(UK_LEFT) -#define _C_RGHT LCTL(UK_RGHT) -#define _A_LEFT LALT(UK_LEFT) -#define _A_RGHT LALT(UK_RGHT) - -enum custom_keycodes { - IJ_OMN = SAFE_RANGE // IntelliJ Omnibox -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -/* Colemak - * .-----------------------------------------------------------------------------------------------------------. - * | Q | W | F | P | G | | | J | L | U | Y | ; | - * |-----------------------------------------------------------------------------------------------------------| - * | A | R | S | T | D | | | H | N | E | I | O | - * |-----------------------------------------------------------------------------------------------------------| - * | Z | X | C | V | B | | | K | M | , | . | / | - * | SHIFT | NUMBER | SYMBOL | NAV | | | | | NAV | SYMBOL | FUNC | SHIFT | - * |-----------------------------------------------------------------------------------------------------------| - * | LSHIFT | LCTRL | LALT | LGUI | SPACE | ENT | DEL | BKSPC | RGUI | RALT | RCTRL | RSHIFT | - * .-----------------------------------------------------------------------------------------------------------. - */ - [cm] = LAYOUT_ortho_4x12( \ - UK_Q, UK_W, UK_F, UK_P, UK_G, _______, _______, UK_J, UK_L, UK_U, UK_Y, UK_SCLN, \ - UK_A, UK_R, UK_S, UK_T, UK_D, _______, _______, UK_H, UK_N, UK_E, UK_I, UK_O, \ - _Z_SFT, _X_NB, _C_SY, _V_NAL, UK_B, _______, _______, UK_K, _M_NAR, _COM_SY, _DOT_NB, _SLSH, \ - UK_LSFT, UK_LCTL, UK_LALT, UK_LGUI, UK_SPC, UK_ENT, UK_DEL, UK_BSPC, UK_RGUI, UK_RALT, UK_RCTL, UK_RSFT \ - ), - -/* Dvorak - * .-----------------------------------------------------------------------------------------------------------. - * | ' | , | . | P | Y | | | F | G | C | R | L | - * |-----------------------------------------------------------------------------------------------------------| - * | A | O | E | U | I | | | D | H | T | N | S | - * |-----------------------------------------------------------------------------------------------------------| - * | ; | Q | J | K | X | | | B | M | W | V | Z | - * | SHIFT | NUMBER | SYMBOL | NAV | | | | | NAV | SYMBOL | FUNC | SHIFT | - * |-----------------------------------------------------------------------------------------------------------| - * | | | | | | | | | | | | | - * |-----------------------------------------------------------------------------------------------------------| - */ - [dv] = LAYOUT_ortho_4x12( \ - UK_QUOT, UK_COMM, UK_DOT, UK_P, UK_Y, _______, _______, UK_F, UK_G, UK_C, UK_R, UK_L, \ - UK_A, UK_O, UK_E, UK_U, UK_I, _______, _______, UK_D, UK_H, UK_T, UK_N, UK_S, \ - _SCLSH, _Q_NB, _J_SY, _K_NAL, UK_X, _______, _______, UK_B, _M_NAR, _W_SY, _V_NB, _Z_SFT, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ - ), - -/* QWERTY - * .-----------------------------------------------------------------------------------------------------------. - * | Q | W | E | R | T | | | Y | U | I | O | P | - * |-----------------------------------------------------------------------------------------------------------| - * | A | S | D | F | G | | | H | J | K | L | ; | - * |-----------------------------------------------------------------------------------------------------------| - * | Z | X | C | V | B | | | N | M | , | . | / | - * | SHIFT | NUMBER | SYMBOL | NAV | | | | | NAV | SYMBOL | FUNC | SHIFT | - * |-----------------------------------------------------------------------------------------------------------| - * | | | | | | | | | | | | | - * .-----------------------------------------------------------------------------------------------------------. - */ - [qw] = LAYOUT_ortho_4x12( \ - UK_Q, UK_W, UK_E, UK_R, UK_T, _______, _______, UK_Y, UK_U, UK_I, UK_O, UK_P, \ - UK_A, UK_S, UK_D, UK_F, UK_G, _______, _______, UK_H, UK_J, UK_K, UK_L, UK_SCLN, \ - _Z_SFT, _X_NB, _C_SY, _V_NAL, UK_B, _______, _______, UK_N, _M_NAR, _COM_SY, _DOT_NB, _SLSH, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ - ), - -/* Numbers _NB - * .-----------------------------------------------------------------------------------------------------------. - * | | F7 | F8 | F9 | F10 | | | | 7 | 8 | 9 | | - * |-----------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | F4 | F5 | F6 | F11 | | | | 4 | 5 | 6 | | - * |-----------------+--------+--------+--------+--------+--------+--------+--------------------------+--------| - * | | F1 | F2 | F3 | F12 | | | 0 | 1 | 2 | 3 | . | - * |-----------------+--------+--------+--------+--------+--------+--------+-----------------+--------+--------| - * | | | | | | | | | | | | | - * '-----------------------------------------------------------------------------------------------------------' - */ - [nbl] = LAYOUT_ortho_4x12( \ - _______, UK_F7, UK_F8, UK_F9, UK_F10, _______, _______, _______, UK_7, UK_8, UK_9, _______, \ - _______, UK_F4, UK_F5, UK_F6, UK_F11, _______, _______, _______, UK_4, UK_5, UK_6, _______, \ - _______, __NBL, UK_F2, UK_F3, UK_F12, _______, _______, UK_0, UK_1, UK_2, UK_3, UK_DOT, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ - ), - [nbr] = LAYOUT_ortho_4x12( \ - _______, UK_F7, UK_F8, UK_F9, UK_F10, _______, _______, _______, UK_7, UK_8, UK_9, _______, \ - _______, UK_F4, UK_F5, UK_F6, UK_F11, _______, _______, _______, UK_4, UK_5, UK_6, _______, \ - _______, UK_F1, UK_F2, UK_F3, UK_F12, _______, _______, UK_0, UK_1, UK_2, __NBR, UK_DOT, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ - ), - -/* Symbols _SY - * .-----------------------------------------------------------------------------------------------------------. - * | ! | £ | _ | - | ~ | | | \ | { | } | / | # | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | $ | % | + | = | | | | " | ( | ) | ' | @ | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | ^ | & | * | | | | | | < | [ | ] | > | ` | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | | | | | | | | | | | | - * '-----------------------------------------------------------------------------------------------------------' - */ - [syl] = LAYOUT_ortho_4x12( \ - UK_EXLM, UK_PND, UK_UNDS, UK_MINS, UK_TILD, _______, _______, UK_BSLS, UK_LCBR, UK_RCBR, UK_SLSH, UK_HASH, \ - UK_DLR, UK_PERC, UK_PLUS, UK_EQL, _______, _______, _______, UK_DQUO, UK_LPRN, UK_RPRN, UK_QUOT, UK_AT, \ - UK_CIRC, UK_AMPR, __SYL, UK_PIPE, _______, _______, _______, UK_LABK, UK_LBRC, UK_RBRC, UK_RABK, UK_GRV, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ - ), - [syr] = LAYOUT_ortho_4x12( \ - UK_EXLM, UK_PND, UK_UNDS, UK_MINS, UK_TILD, _______, _______, UK_BSLS, UK_LCBR, UK_RCBR, UK_SLSH, UK_HASH, \ - UK_DLR, UK_PERC, UK_PLUS, UK_EQL, _______, _______, _______, UK_DQUO, UK_LPRN, UK_RPRN, UK_QUOT, UK_AT, \ - UK_CIRC, UK_AMPR, UK_ASTR, UK_PIPE, _______, _______, _______, UK_LABK, UK_LBRC, __SYR, UK_RABK, UK_GRV, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ - ), - -/* - * Navigation - * .-----------------------------------------------------------------------------------------------------------. - * | Esc | Ctrl L | Up | Ctrl R | RGB RMD| RGB HD | RGB HI | RGB_TG | PtSn | ScLk | Pause | DVORAK | - * +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | Tab | Left | Down | Right | RGB MD | RGB SD | RGB SI | COLEMAK| Insert | Home | PgUp | Term | - * +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | ShTab | Alt L | IJ Omni| Alt R | | RGB VD | RGB VI | | ScLk | End | PgDn | QWERTY | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | | | | | | | | | | | | - * '-----------------------------------------------------------------------------------------------------------' - */ - [nal] = LAYOUT_ortho_4x12( \ - UK_ESC, _C_LEFT, UK_UP, _C_RGHT, RGB_RMOD,RGB_HUD, RGB_HUI, RGB_TOG, UK_PSCR, UK_SLCK, UK_PAUS, DF(dv), \ - UK_TAB, UK_LEFT, UK_DOWN, UK_RGHT, RGB_MOD, RGB_SAD, RGB_SAI, DF(cm), UK_INS, UK_HOME, UK_PGUP, _TERM, \ - _S_TAB, _A_LEFT, IJ_OMN, __NAL, _______, RGB_VAD, RGB_VAI, _______, UK_SLCK, UK_END, UK_PGDN, DF(qw), \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ - ), - [nar] = LAYOUT_ortho_4x12( \ - UK_ESC, _C_LEFT, UK_UP, _C_RGHT, RGB_RMOD,RGB_HUD, RGB_HUI, RGB_TOG, UK_PSCR, UK_SLCK, UK_PAUS, DF(dv), \ - UK_TAB, UK_LEFT, UK_DOWN, UK_RGHT, RGB_MOD, RGB_SAD, RGB_SAI, DF(cm), UK_INS, UK_HOME, UK_PGUP, _TERM, \ - _S_TAB, _A_LEFT, IJ_OMN, _A_RGHT, _______, RGB_VAD, RGB_VAI, _______, __NAR, UK_END, UK_PGDN, DF(qw), \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ - ), -}; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - if (record->event.pressed) { - switch(keycode) { - case IJ_OMN: - SEND_STRING(SS_TAP(X_LSHIFT)SS_TAP(X_LSHIFT)); - return false; - } - } - return true; -} diff --git a/keyboards/jj40/keymaps/stevexyz/rules.mk b/keyboards/jj40/keymaps/stevexyz/rules.mk deleted file mode 100644 index 41036eed4fed..000000000000 --- a/keyboards/jj40/keymaps/stevexyz/rules.mk +++ /dev/null @@ -1,19 +0,0 @@ -# Build Options (yes/no) -# -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) -COMMAND_ENABLE = no # Commands for debug and configuration -NKRO_ENABLE = no # USB Nkey Rollover (see: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work) -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config) -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 - -TAP_DANCE_ENABLE = yes - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend diff --git a/keyboards/jj40/keymaps/waples/readme.md b/keyboards/jj40/keymaps/waples/readme.md deleted file mode 100644 index 91b1094e5730..000000000000 --- a/keyboards/jj40/keymaps/waples/readme.md +++ /dev/null @@ -1,49 +0,0 @@ -# Waples jj40 keymap -> based heavily on my lets split -[Waples](https://www.github.com/Waples) - -### Layers -I currently have the following layers in my keymap: -* Qwerty (as default) -* Dvorak (still learning this type of layout, so not really used much) -* Lefty (lower) -* Righty (raise) -* Dual (adjust) - -### Note to self: -YOU NEED TO USE [bootloadHID -r jj40_waples.hex](https://github.com/qmk/qmk_firmware/tree/master/keyboards/jj40) - -## the stuff below is out of date and I think about removing them from this readme - -#### QWERTY - | Tab | Q | W | E | R | T | Y | U | I | O | P | Bsp | - |C_Esc| A | S | D | F | G | H | J | K | L | ; |S_Ent| - | Sft | Z | X | C | V | B | N | M | , | . | / | " | - |P_SCR| GUI | Alt | Cps | ^L^ | Bsp | Spc | ^R^ | Lft | Dwn | Up! | Rgt | - - -#### DVORAK - | Tab | " | , | . | P | Y | F | G | C | R | L | Bsp | - |C_Esc| A | O | E | U | I | D | H | T | N | S |S_Ent| - | Sft | ; | Q | J | K | X | B | M | W | V | Z | / | - |P_SCR| GUI | Alt | Cps | ^L^ | Bsp | Spc | ^R^ | Lft | Dwn | Up! | Rgt | - -#### LEFTY (lower) - | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bsp | - | Del | | | | | | | ( | ) | [ | ] | | - | | | | | | | | | | | | | - | | | | | | | Ins | | Hme | PgD | PgU | End | - - -#### RIGHTY (raise) - | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bsp | - | Del | F1 | F2 | F3 | F4 | | = | - | \ | / | | | - | | F5 | F6 | F7 | F8 | | | | | | | | - | | F9 | F10 | F11 | | | | | | | | | - - -#### DUAL - |Reset| | | | |QWERT| GAME| | | | |Reset| - | | Prv | Stp | Tog | Nxt | Nrm | Swp | | | | | | - | | | Mte | Vol-| Vol+| | NKRO| | | | | | - | | | | | | |DVORK| | | | | | diff --git a/keyboards/jj40/keymaps/waples/rules.mk b/keyboards/jj40/keymaps/waples/rules.mk deleted file mode 100644 index 4395f7f8f6f1..000000000000 --- a/keyboards/jj40/keymaps/waples/rules.mk +++ /dev/null @@ -1,10 +0,0 @@ -# build options -BOOTMAGIC_ENABLE = full -MOUSEKEY_ENABLE = no -EXTRAKEY_ENABLE = yes -CONSOLE_ENABLE = no -COMMAND_ENABLE = yes -BACKLIGHT_ENABLE = yes -RGBLIGHT_ENABLE = yes -RGBLIGHT_CUSTOM_DRIVER = yes -KEY_LOCK_ENABLE = yes diff --git a/keyboards/jj40/readme.md b/keyboards/jj40/readme.md deleted file mode 100644 index 5f4d2c8a99d1..000000000000 --- a/keyboards/jj40/readme.md +++ /dev/null @@ -1,21 +0,0 @@ -# jj40 - -![jj40](https://ae01.alicdn.com/kf/HTB18bq6bOERMeJjSspiq6zZLFXar.jpg?size=359506&height=562&width=750&hash=663a22d0109e2416ec8f54a7658686da) - -A compact 40% (12x4) ortholinear keyboard kit made and KPRepublic on AliExpress. - -* Keyboard Maintainer: [QMK Community](https://github.com/qmk) -* Hardware Supported: Atmega32A -* Hardware Availability: [AliExpress](https://www.aliexpress.com/store/product/jj40-Custom-Mechanical-Keyboard-40-PCB-programmed-40-planck-layouts-bface-firmware-gh40/3034003_32828781103.html) - -Make example for this keyboard (after setting up your build environment): - - make jj40:default - -Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid)) - - make jj40:default:flash - -**Reset Key**: Hold down the *Top Right Key* key, commonly programmed as *Backspace* while plugging in the keyboard. - -See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/jj40/rules.mk b/keyboards/jj40/rules.mk deleted file mode 100644 index c3776d1f3f2a..000000000000 --- a/keyboards/jj40/rules.mk +++ /dev/null @@ -1,37 +0,0 @@ -# MCU name -MCU = atmega32a - -# Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = bootloadHID - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration -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 = no # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -WS2812_DRIVER = i2c -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 - -LAYOUTS = ortho_4x12 planck_mit - -# Disable unsupported hardware -AUDIO_SUPPORTED = no diff --git a/keyboards/jj4x4/config.h b/keyboards/jj4x4/config.h deleted file mode 100644 index 45c8671cc5ce..000000000000 --- a/keyboards/jj4x4/config.h +++ /dev/null @@ -1,57 +0,0 @@ -/* -Copyright 2017 Luiz Ribeiro - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -#include "config_common.h" - -#define VENDOR_ID 0x4B50 // "KP" -#define PRODUCT_ID 0x0044 // 4x4 -#define DEVICE_VER 0x0200 -#define MANUFACTURER KPrepublic -#define PRODUCT JJ4x4 - -/* matrix size */ -#define MATRIX_ROWS 4 -#define MATRIX_COLS 4 -#define MATRIX_ROW_PINS { B5, B0, B3, B4 } -#define MATRIX_COL_PINS { A1, A0, A2, A3 } - -/* COL2ROW or ROW2COL */ -#define DIODE_DIRECTION COL2ROW - -#define BACKLIGHT_PIN D4 -#define BACKLIGHT_LEVELS 12 -#define BACKLIGHT_BREATHING - -/* RGB underglow */ -// NOTE: for PS2AVRGB boards, underglow commands are sent via I2C to 0xB0. -#define RGBLED_NUM 4 -#define RGBLIGHT_ANIMATIONS - -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 5 - -#define USB_MAX_POWER_CONSUMPTION 100 - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* Bootmagic Lite key configuration */ -// #define BOOTMAGIC_LITE_ROW 0 -// #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/jj4x4/info.json b/keyboards/jj4x4/info.json deleted file mode 100644 index 0fff9b9c8830..000000000000 --- a/keyboards/jj4x4/info.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "keyboard_name": "JJ4x4", - "url": "", - "maintainer": "qmk", - "width": 4, - "height": 4, - "layouts": { - "LAYOUT_ortho_4x4": { - "key_count": 16, - "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} - ] - } - } -} diff --git a/keyboards/jj4x4/readme.md b/keyboards/jj4x4/readme.md deleted file mode 100644 index 714e8e88f7f6..000000000000 --- a/keyboards/jj4x4/readme.md +++ /dev/null @@ -1,39 +0,0 @@ -# JJ4x4 - -![jj4x4](https://cdn.shopify.com/s/files/1/2711/4238/products/JJ4x4case-1_1024x1024.jpg?v=1532325339) - -A 4x4 keypad kit made and KPRepublic on AliExpress. This is a chopped off version of the JJ40 with rearranged keys. - -* Keyboard Maintainer: [QMK Community](https://github.com/qmk) -* Hardware Supported: Atmega32A -* Hardware Availability: [AliExpress](https://www.aliexpress.com/item/jj4x4-jj4X4-16-keys-Custom-Mechanical-Keyboard-PCB-programmed-numpad-layouts-bface-firmware-with-rgb-bottom/32901955446.html) - -Make example for this keyboard (after setting up your build environment): - - make jj4x4:default - -Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid)) - - make jj4x4:default:flash - -**Reset Key**: - -Hold down the key located at *K11*, commonly programmed as *8* while plugging in the keyboard USB cable. - -Key *K11* is in the above picture: - -Row 2 from the top, Column 2 from the left, see the schematic below: - -``` -,-----------------------. -| | | | | -|-----`-----`-----`-----| -| | K11 | | | -|-----`-----`-----`-----| -| | | | | -|-----`-----`-----`-----| -| | | | | -`-----`-----`-----`-----' -``` - -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/jj4x4/rules.mk b/keyboards/jj4x4/rules.mk deleted file mode 100644 index bf2062542f55..000000000000 --- a/keyboards/jj4x4/rules.mk +++ /dev/null @@ -1,34 +0,0 @@ -# MCU name -MCU = atmega32a - -# Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = bootloadHID - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration -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 = no # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -WS2812_DRIVER = i2c -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 - -LAYOUTS = ortho_4x4 diff --git a/keyboards/jj50/info.json b/keyboards/jj50/info.json deleted file mode 100644 index 97a4bffa0adb..000000000000 --- a/keyboards/jj50/info.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "keyboard_name": "JJ50", - "url": "", - "maintainer": "qmk", - "width": 12, - "height": 5, - "layouts": { - "LAYOUT_ortho_5x12": { - "key_count": 60, - "layout": [{"label":"K011", "x":0, "y":0}, {"label":"K010", "x":1, "y":0}, {"label":"K009", "x":2, "y":0}, {"label":"K008", "x":3, "y":0}, {"label":"K004", "x":4, "y":0}, {"label":"K005", "x":5, "y":0}, {"label":"K006", "x":6, "y":0}, {"label":"K007", "x":7, "y":0}, {"label":"K003", "x":8, "y":0}, {"label":"K002", "x":9, "y":0}, {"label":"K201", "x":10, "y":0}, {"label":"K000", "x":11, "y":0}, {"label":"K111", "x":0, "y":1}, {"label":"K110", "x":1, "y":1}, {"label":"K109", "x":2, "y":1}, {"label":"K108", "x":3, "y":1}, {"label":"K104", "x":4, "y":1}, {"label":"K105", "x":5, "y":1}, {"label":"K106", "x":6, "y":1}, {"label":"K107", "x":7, "y":1}, {"label":"K103", "x":8, "y":1}, {"label":"K102", "x":9, "y":1}, {"label":"K001", "x":10, "y":1}, {"label":"K100", "x":11, "y":1}, {"label":"K211", "x":0, "y":2}, {"label":"K210", "x":1, "y":2}, {"label":"K209", "x":2, "y":2}, {"label":"K208", "x":3, "y":2}, {"label":"K204", "x":4, "y":2}, {"label":"K205", "x":5, "y":2}, {"label":"K206", "x":6, "y":2}, {"label":"K207", "x":7, "y":2}, {"label":"K203", "x":8, "y":2}, {"label":"K202", "x":9, "y":2}, {"label":"K101", "x":10, "y":2}, {"label":"K200", "x":11, "y":2}, {"label":"K311", "x":0, "y":3}, {"label":"K310", "x":1, "y":3}, {"label":"K309", "x":2, "y":3}, {"label":"K308", "x":3, "y":3}, {"label":"K304", "x":4, "y":3}, {"label":"K305", "x":5, "y":3}, {"label":"K306", "x":6, "y":3}, {"label":"K307", "x":7, "y":3}, {"label":"K303", "x":8, "y":3}, {"label":"K302", "x":9, "y":3}, {"label":"K301", "x":10, "y":3}, {"label":"K300", "x":11, "y":3}, {"label":"K411", "x":0, "y":4}, {"label":"K410", "x":1, "y":4}, {"label":"K409", "x":2, "y":4}, {"label":"K408", "x":3, "y":4}, {"label":"K404", "x":4, "y":4}, {"label":"K405", "x":5, "y":4}, {"label":"K406", "x":6, "y":4}, {"label":"K407", "x":7, "y":4}, {"label":"K403", "x":8, "y":4}, {"label":"K402", "x":9, "y":4}, {"label":"K401", "x":10, "y":4}, {"label":"K400", "x":11, "y":4}] - } - } -} diff --git a/keyboards/jj50/keymaps/abstractkb/keymap.c b/keyboards/jj50/keymaps/abstractkb/keymap.c deleted file mode 100644 index 2de5ce6b99b5..000000000000 --- a/keyboards/jj50/keymaps/abstractkb/keymap.c +++ /dev/null @@ -1,135 +0,0 @@ -/* -Base Copyright 2017 Luiz Ribeiro -Modified 2017 Andrew Novak -Modified 2018 Wayne Jones (WarmCatUK) -Modified 2019 AbstractKB - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public LicensezZZ -along with this program. If not, see . -*/ - -#include QMK_KEYBOARD_H - -enum layers { - _DEFLT, - _RAISE, - _LOWER, - _FN -}; - -enum custom_keycodes { - MYRGB_TG = SAFE_RANGE -}; - -bool rgbinit = true; -bool rgbon = true; - -const uint8_t RGBLED_RAINBOW_SWIRL_INTERVALS[] PROGMEM = {1,5,5}; //only using the first one - -void keyboard_post_init_user(void) { - rgblight_enable_noeeprom(); - led_set_user(host_keyboard_leds()); -} - -uint32_t layer_state_set_user(uint32_t state) { - switch (biton32(state)) { - case _RAISE: - rgblight_sethsv_noeeprom(170,255,255); - rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); - break; - case _LOWER: - rgblight_sethsv_noeeprom(0,255,255); - rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); - break; - case _FN: - rgblight_sethsv_noeeprom(0,255,255); - rgblight_mode_noeeprom(RGBLIGHT_MODE_RAINBOW_SWIRL); - break; - default: //_DEFLT - rgblight_sethsv_noeeprom(0,0,255); - rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); - break; - } - - return state; -} - -void led_set_user(uint8_t usb_led) { - if (usb_led & (1<event.pressed) { - myrgb_toggle(); - } - return false; - default: - return true; - } -} - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_DEFLT] = LAYOUT( \ - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_ENT, \ - KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \ - MO(_FN), KC_LCTL, KC_LGUI, KC_LALT, MO(_LOWER),KC_SPC,KC_SPC,MO(_RAISE),KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ - ), - - - [_RAISE] = LAYOUT( \ - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, LCTL(LGUI(KC_LEFT)), LGUI(KC_L), LCTL(LGUI(KC_RGHT)), _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_CAPS, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY \ - ), - - - [_LOWER] = LAYOUT( \ - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \ - _______, KC_GRV, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_BSLS, _______, \ - _______, _______, _______, KC_LBRC, KC_RBRC, S(KC_9),S(KC_0),S(KC_LBRC),S(KC_RBRC),_______,_______,_______, \ - _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ - ), - - - [_FN] = LAYOUT( \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MYRGB_TG \ - ) -}; diff --git a/keyboards/jj50/keymaps/abstractkb_gergomatch/keymap.c b/keyboards/jj50/keymaps/abstractkb_gergomatch/keymap.c deleted file mode 100644 index 9c129ba9ab49..000000000000 --- a/keyboards/jj50/keymaps/abstractkb_gergomatch/keymap.c +++ /dev/null @@ -1,135 +0,0 @@ -/* -Base Copyright 2017 Luiz Ribeiro -Modified 2017 Andrew Novak -Modified 2018 Wayne Jones (WarmCatUK) -Modified 2019 AbstractKB - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public LicensezZZ -along with this program. If not, see . -*/ - -#include QMK_KEYBOARD_H - -enum layers { - _DEFLT, - _FUNC, - _SYM, - _META -}; - -enum custom_keycodes { - MYRGB_TG = SAFE_RANGE -}; - -bool rgbinit = true; -bool rgbon = true; - -const uint8_t RGBLED_RAINBOW_SWIRL_INTERVALS[] PROGMEM = {1,5,5}; //only using the first one - -void keyboard_post_init_user(void) { - rgblight_enable_noeeprom(); - led_set_user(host_keyboard_leds()); -} - -uint32_t layer_state_set_user(uint32_t state) { - switch (biton32(state)) { - case _FUNC: - rgblight_sethsv_noeeprom(170,255,255); - rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); - break; - case _SYM: - rgblight_sethsv_noeeprom(0,255,255); - rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); - break; - case _META: - rgblight_sethsv_noeeprom(0,255,255); - rgblight_mode_noeeprom(RGBLIGHT_MODE_RAINBOW_SWIRL); - break; - default: //_DEFLT - rgblight_sethsv_noeeprom(0,0,255); - rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); - break; - } - - return state; -} - -void led_set_user(uint8_t usb_led) { - if (usb_led & (1<event.pressed) { - myrgb_toggle(); - } - return false; - default: - return true; - } -} - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_DEFLT] = LAYOUT( \ - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_ENT, \ - KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \ - KC_LCTL, MO(_META), KC_LGUI, KC_LALT, MO(_SYM),KC_SPC,KC_SPC,MO(_FUNC),KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ - ), - - - [_FUNC] = LAYOUT( \ - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, LCTL(LGUI(KC_LEFT)), LGUI(KC_L), LCTL(LGUI(KC_RGHT)), _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_CAPS, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY \ - ), - - - [_SYM] = LAYOUT( \ - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \ - _______,S(KC_1),S(KC_2),S(KC_LBRC),S(KC_RBRC),S(KC_BSLS),_______, S(KC_MINS), _______, _______, _______, _______, \ - _______, S(KC_3), S(KC_4), S(KC_9), S(KC_0), KC_GRV, S(KC_EQL), KC_MINS, KC_BSLS, S(KC_8), _______, _______, \ - _______, S(KC_5), S(KC_6), KC_LBRC,KC_RBRC,S(KC_GRV), S(KC_7),KC_EQL, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ - ), - - - [_META] = LAYOUT( \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MYRGB_TG \ - ) -}; diff --git a/keyboards/jj50/readme.md b/keyboards/jj50/readme.md deleted file mode 100644 index 9719f01ecac1..000000000000 --- a/keyboards/jj50/readme.md +++ /dev/null @@ -1,21 +0,0 @@ -# JJ50 - -![JJ50 + SA Vilebloom (w/ Sakurios) by u/rendleshift](https://i.imgur.com/SwYZ4wol.jpg) - -A compact 50% (5x12) ortholinear keyboard made and sold by KPrepublic. - -* Keyboard Maintainer: [QMK Community](https://github.com/qmk) -* Hardware Supported: Atmega32A -* Hardware Availability: [AliExpress](https://www.aliexpress.com/item/jj50-v1-0-Custom-Mechanical-Keyboard-50-PCB-programmed-50-preonic-layouts-bface-firmware-with-rgb/32848915277.html); [KPrepublic](https://kprepublic.com/collections/jj50-50/products/jj50-50-custom-keyboard-pcb-similar-with-preonic) - -Make example for this keyboard (after setting up your build environment): - - make jj50:default - -Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid)) - - make jj50:default:flash - -**Reset Key**: Hold down the key `Backspace` (`Key below the top right key`) while plugging in the keyboard. - -See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/jj50/rules.mk b/keyboards/jj50/rules.mk deleted file mode 100644 index 8f78a7674691..000000000000 --- a/keyboards/jj50/rules.mk +++ /dev/null @@ -1,27 +0,0 @@ -# MCU name -MCU = atmega32a - -# Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = bootloadHID - -# build options -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration -MOUSEKEY_ENABLE = no # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality -WS2812_DRIVER = i2c # This driver powers the RGB Lighting and RGB Matrix features -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -LTO_ENABLE = yes # Enable link time optimization - -LAYOUTS = ortho_5x12 diff --git a/keyboards/jkdlab/binary_monkey/info.json b/keyboards/jkdlab/binary_monkey/info.json index e15b43e70c64..9d563c0b124c 100644 --- a/keyboards/jkdlab/binary_monkey/info.json +++ b/keyboards/jkdlab/binary_monkey/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Binary_Monkey", "url": "https://gumroad.com/jkdlab", "maintainer": "JKDLAB.", - "width": 3, - "height": 1, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/jkdlab/binary_monkey/rules.mk b/keyboards/jkdlab/binary_monkey/rules.mk index a90eef1fc65a..74047d4dec7d 100644 --- a/keyboards/jkdlab/binary_monkey/rules.mk +++ b/keyboards/jkdlab/binary_monkey/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/jm60/info.json b/keyboards/jm60/info.json index 2cc2ce4e37c1..cdb0da4671ca 100644 --- a/keyboards/jm60/info.json +++ b/keyboards/jm60/info.json @@ -2,8 +2,6 @@ "keyboard_name": "JM60", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_ansi": { "layout": [ diff --git a/keyboards/jm60/rules.mk b/keyboards/jm60/rules.mk index 6aa824baee5c..04affa1e3294 100644 --- a/keyboards/jm60/rules.mk +++ b/keyboards/jm60/rules.mk @@ -7,18 +7,15 @@ BOARD = ST_NUCLEO64_F103RB # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output # Enter lower-power sleep mode when on the ChibiOS idle thread diff --git a/keyboards/jnao/info.json b/keyboards/jnao/info.json index 177ae41571ca..4d8f332391b6 100644 --- a/keyboards/jnao/info.json +++ b/keyboards/jnao/info.json @@ -2,8 +2,6 @@ "keyboard_name": "JNAO", "url": "", "maintainer": "That-Canadian", - "width": 12, - "height": 5, "layouts": { "LAYOUT_ortho_5x12": { "layout": [ diff --git a/keyboards/jnao/rules.mk b/keyboards/jnao/rules.mk index a64e40057c6d..f141ae5957b9 100644 --- a/keyboards/jnao/rules.mk +++ b/keyboards/jnao/rules.mk @@ -2,33 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = ortho_5x12 ortho_4x12 LAYOUTS_HAS_RGB = no diff --git a/keyboards/jones/v03/config.h b/keyboards/jones/v03/config.h index 0ff82e8d37db..7a37fc1f3dfd 100644 --- a/keyboards/jones/v03/config.h +++ b/keyboards/jones/v03/config.h @@ -20,7 +20,7 @@ along with this program. If not, see . #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED +#define VENDOR_ID 0xB9DD #define PRODUCT_ID 0x175A #define DEVICE_VER 0x0030 #define MANUFACTURER jpskenn diff --git a/keyboards/jones/v03/info.json b/keyboards/jones/v03/info.json index eaee5a6916b1..c3d0477afce1 100644 --- a/keyboards/jones/v03/info.json +++ b/keyboards/jones/v03/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Jones", "url": "https://github.com/jpskenn/Jones", "maintainer": "jpskenn", - "width": 15, - "height": 5, "layouts": { "LAYOUT_ansi": { "layout": [ diff --git a/keyboards/jones/v03/rules.mk b/keyboards/jones/v03/rules.mk index 2a33056c22c4..fbbeca9931f6 100644 --- a/keyboards/jones/v03/rules.mk +++ b/keyboards/jones/v03/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes # Rotary Encoder diff --git a/keyboards/jones/v03_1/config.h b/keyboards/jones/v03_1/config.h index c1d6a577fc49..1b67b6b58fef 100644 --- a/keyboards/jones/v03_1/config.h +++ b/keyboards/jones/v03_1/config.h @@ -20,7 +20,7 @@ along with this program. If not, see . #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED +#define VENDOR_ID 0xB9DD #define PRODUCT_ID 0x175A #define DEVICE_VER 0x0031 #define MANUFACTURER jpskenn diff --git a/keyboards/jones/v03_1/info.json b/keyboards/jones/v03_1/info.json index eaee5a6916b1..c3d0477afce1 100644 --- a/keyboards/jones/v03_1/info.json +++ b/keyboards/jones/v03_1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Jones", "url": "https://github.com/jpskenn/Jones", "maintainer": "jpskenn", - "width": 15, - "height": 5, "layouts": { "LAYOUT_ansi": { "layout": [ diff --git a/keyboards/jones/v03_1/rules.mk b/keyboards/jones/v03_1/rules.mk index 07203872f0b3..7015add61dbd 100644 --- a/keyboards/jones/v03_1/rules.mk +++ b/keyboards/jones/v03_1/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = yes # Audio output ENCODER_ENABLE = yes # Rotary Encoder diff --git a/keyboards/just60/info.json b/keyboards/just60/info.json index 6b42a2d58f98..5f4203384557 100644 --- a/keyboards/just60/info.json +++ b/keyboards/just60/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Just60", "url": "", "maintainer": "thinxer", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/just60/rules.mk b/keyboards/just60/rules.mk index f38f6a27ec8e..95a81b5396c8 100644 --- a/keyboards/just60/rules.mk +++ b/keyboards/just60/rules.mk @@ -5,29 +5,18 @@ MCU = atmega32u4 F_CPU = 8000000 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = lufa-ms # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/k_type/info.json b/keyboards/k_type/info.json index fd4c95274864..cf0c9253bdd1 100644 --- a/keyboards/k_type/info.json +++ b/keyboards/k_type/info.json @@ -2,8 +2,6 @@ "keyboard_name": "K-Type", "url": "", "maintainer": "qmk", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT_tkl_ansi": { "layout": [ diff --git a/keyboards/k_type/is31fl3733-dual.h b/keyboards/k_type/is31fl3733-dual.h index 272bcdc417db..ea45a7086758 100644 --- a/keyboards/k_type/is31fl3733-dual.h +++ b/keyboards/k_type/is31fl3733-dual.h @@ -28,7 +28,7 @@ typedef struct is31_led { uint8_t b; } __attribute__((packed)) is31_led; -extern const is31_led g_is31_leds[DRIVER_LED_TOTAL]; +extern const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL]; void IS31FL3733_init(uint8_t bus, uint8_t addr, uint8_t sync); bool IS31FL3733_write_register(uint8_t index, uint8_t addr, uint8_t reg, uint8_t data); diff --git a/keyboards/k_type/k_type.c b/keyboards/k_type/k_type.c index 61c588145425..29e7fa57b219 100644 --- a/keyboards/k_type/k_type.c +++ b/keyboards/k_type/k_type.c @@ -23,7 +23,7 @@ along with this program. If not, see . #include "is31fl3733-dual.h" -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { { 0, B_1, A_1, C_1 }, { 0, B_2, A_2, C_2 }, { 0, B_3, A_3, C_3 }, diff --git a/keyboards/k_type/rules.mk b/keyboards/k_type/rules.mk index 369cab4f09e3..102c787bc63c 100644 --- a/keyboards/k_type/rules.mk +++ b/keyboards/k_type/rules.mk @@ -7,24 +7,22 @@ BOOTLOADER = kiibohd # Board: it should exist either in /os/hal/boards/ # or /boards # This board was copied from PJRC_TEENSY_3_1. The only difference should be a -# hack to ensure the watchdog has started before trying to disable it. +# hack to ensure the watchdog has started before trying to disable it, and an +# override to disable restart of USB driver after returning from suspend. BOARD = IC_TEENSY_3_1 # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output RGB_MATRIX_ENABLE = no RGB_MATRIX_DRIVER = custom diff --git a/keyboards/kabedon/kabedon78s/info.json b/keyboards/kabedon/kabedon78s/info.json index f4873eeff4fb..beaf71bd147d 100644 --- a/keyboards/kabedon/kabedon78s/info.json +++ b/keyboards/kabedon/kabedon78s/info.json @@ -2,8 +2,6 @@ "keyboard_name": "KabeDon78s", "url": "", "maintainer": "370490639", - "width": 22.25, - "height": 6.25, "layouts": { "LAYOUT": { "layout": [ @@ -115,5 +113,3 @@ } } } - - diff --git a/keyboards/kabedon/kabedon78s/rules.mk b/keyboards/kabedon/kabedon78s/rules.mk index 0a28dcbff851..bb9aaa6d2919 100644 --- a/keyboards/kabedon/kabedon78s/rules.mk +++ b/keyboards/kabedon/kabedon78s/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable. # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 UNICODE_ENABLE = yes # Unicode diff --git a/keyboards/kabedon/kabedon980/info.json b/keyboards/kabedon/kabedon980/info.json index eb41324d8d73..5be1ee11dde6 100644 --- a/keyboards/kabedon/kabedon980/info.json +++ b/keyboards/kabedon/kabedon980/info.json @@ -2,8 +2,6 @@ "keyboard_name": "KabeDon980", "url": "https://kabedon.taobao.com", "maintainer": "370490639", - "width": 19.3, - "height": 6.3, "layouts": { "LAYOUT": { "layout": [ @@ -109,4 +107,3 @@ } } } - diff --git a/keyboards/kabedon/kabedon980/rules.mk b/keyboards/kabedon/kabedon980/rules.mk index 0a28dcbff851..bb9aaa6d2919 100644 --- a/keyboards/kabedon/kabedon980/rules.mk +++ b/keyboards/kabedon/kabedon980/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable. # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 UNICODE_ENABLE = yes # Unicode diff --git a/keyboards/kabedon/kabedon98e/chconf.h b/keyboards/kabedon/kabedon98e/chconf.h new file mode 100644 index 000000000000..f07706dfdacb --- /dev/null +++ b/keyboards/kabedon/kabedon98e/chconf.h @@ -0,0 +1,28 @@ +/* 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/keyboards/kabedon/kabedon98e/chconf.h -r platforms/chibios/common/configs/chconf.h` + */ + +#pragma once + +#define CH_CFG_ST_TIMEDELTA 0 + +#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE + +#include_next diff --git a/keyboards/kabedon/kabedon98e/config.h b/keyboards/kabedon/kabedon98e/config.h new file mode 100644 index 000000000000..a34e99bccd3d --- /dev/null +++ b/keyboards/kabedon/kabedon98e/config.h @@ -0,0 +1,64 @@ +/* Copyright 2021 KDon<370490639@qq.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 . + */ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4B44 +#define PRODUCT_ID 0x3935 +#define DEVICE_VER 0x0002 +#define MANUFACTURER Kabe_Don +#define PRODUCT 98e + +/* key matrix size */ +#define MATRIX_ROWS 12 +#define MATRIX_COLS 11 + +#define MATRIX_ROW_PINS {A4,B10,B2,B1,B0,B15,B13,B14,B12,A10,A9,A8} +#define MATRIX_COL_PINS {A0,B7,B8,B6,A3,A2,A1,B9,A7,A5,A6} +#define DIODE_DIRECTION ROW2COL + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +#define FORCE_NKRO + +#define RGB_DI_PIN B4 +#define RGBLED_NUM 24 +#define RGBLIGHT_ANIMATIONS + +#define WS2812_PWM_DRIVER PWMD3 +#define WS2812_PWM_CHANNEL 1 +#define WS2812_DMA_STREAM STM32_DMA1_STREAM3 +#define WS2812_DMA_CHANNEL 3 + +/* 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 2 +#define ENCODERS_PAD_A { B3,A14 } +#define ENCODERS_PAD_B { B5,A15 } + +#define ENCODERS_CW_KEY { { 0, 0 },{ 2, 0 } } +#define ENCODERS_CCW_KEY { { 6, 0 },{ 8, 0 } } + +#define DYNAMIC_KEYMAP_LAYER_COUNT 3 +/* Bootmagic Lite key configuration */ +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 1 diff --git a/keyboards/kabedon/kabedon98e/halconf.h b/keyboards/kabedon/kabedon98e/halconf.h new file mode 100644 index 000000000000..d141a65a0111 --- /dev/null +++ b/keyboards/kabedon/kabedon98e/halconf.h @@ -0,0 +1,26 @@ +/* Copyright 2020 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/keyboards/kabedon/kabedon98e/halconf.h -r platforms/chibios/common/configs/halconf.h` + */ + +#pragma once + +#define HAL_USE_PWM TRUE + +#include_next diff --git a/keyboards/kabedon/kabedon98e/info.json b/keyboards/kabedon/kabedon98e/info.json new file mode 100644 index 000000000000..de8f975b2dd8 --- /dev/null +++ b/keyboards/kabedon/kabedon98e/info.json @@ -0,0 +1,117 @@ +{ + "keyboard_name": "KabeDon98E", + "url": "", + "maintainer": "370490639", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"Esc", "x":0, "y":0.5}, + {"label":"F1", "x":1.667, "y":0.5}, + {"label":"F2", "x":2.667, "y":0.5}, + {"label":"F3", "x":3.667, "y":0.5}, + {"label":"F4", "x":4.667, "y":0.5}, + {"label":"F5", "x":6.333, "y":0.5}, + {"label":"F6", "x":7.333, "y":0.5}, + {"label":"F7", "x":8.333, "y":0.5}, + {"label":"F8", "x":9.333, "y":0.5}, + {"label":"F9", "x":11.0, "y":0.5}, + {"label":"F10", "x":12.0, "y":0.5}, + {"label":"F11", "x":13.0, "y":0.5}, + {"label":"F12", "x":14.0, "y":0.5}, + {"label":"Delete", "x":15.5, "y":0.5}, + {"label":"Home", "x":16.9, "y":0, "w":0.6, "h":0.5}, + {"label":"Insert", "x":17.0, "y":0.5}, + {"label":"End", "x":17.5, "y":0, "w":0.6, "h":0.5}, + {"label":"PgUp", "x":18.4, "y":0, "w":0.6, "h":0.5}, + {"label":"Mute", "x":18.5, "y":0.5}, + {"label":"PgDn", "x":19, "y":0, "w":0.6, "h":0.5}, + + {"label":"~", "x":0, "y":1.75}, + {"label":"!", "x":1, "y":1.75}, + {"label":"@", "x":2, "y":1.75}, + {"label":"#", "x":3, "y":1.75}, + {"label":"$", "x":4, "y":1.75}, + {"label":"%", "x":5, "y":1.75}, + {"label":"^", "x":6, "y":1.75}, + {"label":"&", "x":7, "y":1.75}, + {"label":"*", "x":8, "y":1.75}, + {"label":"(", "x":9, "y":1.75}, + {"label":")", "x":10, "y":1.75}, + {"label":"_", "x":11, "y":1.75}, + {"label":"+", "x":12, "y":1.75}, + {"label":"Backspace", "x":13, "y":1.75, "w":2}, + {"label":"Num Lock", "x":15.5, "y":1.75}, + {"label":"/", "x":16.5, "y":1.75}, + {"label":"*", "x":17.5, "y":1.75}, + {"label":"-", "x":18.5, "y":1.75}, + + {"label":"Tab", "x":0, "y":2.75, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.75}, + {"label":"W", "x":2.5, "y":2.75}, + {"label":"E", "x":3.5, "y":2.75}, + {"label":"R", "x":4.5, "y":2.75}, + {"label":"T", "x":5.5, "y":2.75}, + {"label":"Y", "x":6.5, "y":2.75}, + {"label":"U", "x":7.5, "y":2.75}, + {"label":"I", "x":8.5, "y":2.75}, + {"label":"O", "x":9.5, "y":2.75}, + {"label":"P", "x":10.5, "y":2.75}, + {"label":"{", "x":11.5, "y":2.75}, + {"label":"}", "x":12.5, "y":2.75}, + {"label":"|", "x":13.5, "y":2.75, "w":1.5}, + {"label":"7", "x":15.5, "y":2.75}, + {"label":"8", "x":16.5, "y":2.75}, + {"label":"9", "x":17.5, "y":2.75}, + + {"label":"Caps Lock", "x":0, "y":3.75, "w":1.75}, + {"label":"A", "x":1.75, "y":3.75}, + {"label":"S", "x":2.75, "y":3.75}, + {"label":"D", "x":3.75, "y":3.75}, + {"label":"F", "x":4.75, "y":3.75}, + {"label":"G", "x":5.75, "y":3.75}, + {"label":"H", "x":6.75, "y":3.75}, + {"label":"J", "x":7.75, "y":3.75}, + {"label":"K", "x":8.75, "y":3.75}, + {"label":"L", "x":9.75, "y":3.75}, + {"label":":", "x":10.75, "y":3.75}, + {"label":"\"", "x":11.75, "y":3.75}, + {"label":"Enter", "x":12.75, "y":3.75, "w":2.25}, + {"label":"4", "x":15.5, "y":3.75}, + {"label":"5", "x":16.5, "y":3.75}, + {"label":"6", "x":17.5, "y":3.75}, + {"label":"+", "x":18.5, "y":2.75, "h":2}, + + {"label":"Shift", "x":0, "y":4.75, "w":2.25}, + {"label":"Z", "x":2.25, "y":4.75}, + {"label":"X", "x":3.25, "y":4.75}, + {"label":"C", "x":4.25, "y":4.75}, + {"label":"V", "x":5.25, "y":4.75}, + {"label":"B", "x":6.25, "y":4.75}, + {"label":"N", "x":7.25, "y":4.75}, + {"label":"M", "x":8.25, "y":4.75}, + {"label":"<", "x":9.25, "y":4.75}, + {"label":">", "x":10.25, "y":4.75}, + {"label":"?", "x":11.25, "y":4.75}, + {"label":"Shift", "x":12.25, "y":4.75, "w":1.75}, + {"label":"\u2191", "x":14.25, "y":5}, + {"label":"1", "x":15.5, "y":4.75}, + {"label":"2", "x":16.5, "y":4.75}, + {"label":"3", "x":17.5, "y":4.75}, + + {"label":"Ctrl", "x":0, "y":5.75, "w":1.25}, + {"label":"Win", "x":1.25, "y":5.75}, + {"label":"Alt", "x":2.25, "y":5.75}, + {"label":"MO(1)", "x":3.25, "y":5.75}, + {"label":"Space", "x":4.25, "y":5.75, "w":6.25}, + {"label":"Alt", "x":10.5, "y":5.75, "w":1.25}, + {"label":"Ctrl", "x":11.75, "y":5.75, "w":1.25}, + {"label":"\u2190", "x":13.25, "y":6}, + {"label":"\u2193", "x":14.25, "y":6}, + {"label":"\u2192", "x":15.25, "y":6}, + {"label":"0", "x":16.5, "y":5.75}, + {"label":".", "x":17.5, "y":5.75}, + {"label":"Enter", "x":18.5, "y":4.75, "h":2} + ] + } + } +} diff --git a/keyboards/kabedon/kabedon98e/kabedon98e.c b/keyboards/kabedon/kabedon98e/kabedon98e.c new file mode 100644 index 000000000000..09af36de42e0 --- /dev/null +++ b/keyboards/kabedon/kabedon98e/kabedon98e.c @@ -0,0 +1,55 @@ +/* Copyright 2021 KDon<370490639@qq.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 . + */ +#include "kabedon98e.h" + +static uint8_t encoder_state[ENCODERS] = {0}; +static keypos_t encoder_cw[ENCODERS] = ENCODERS_CW_KEY; +static keypos_t encoder_ccw[ENCODERS] = ENCODERS_CCW_KEY; + +void encoder_action_unregister(void) { + for (int index = 0; index < ENCODERS; ++index) { + if (encoder_state[index]) { + keyevent_t encoder_event = (keyevent_t) { + .key = encoder_state[index] >> 1 ? encoder_cw[index] : encoder_ccw[index], + .pressed = false, + .time = (timer_read() | 1) + }; + encoder_state[index] = 0; + action_exec(encoder_event); + } + } +} + +void encoder_action_register(uint8_t index, bool clockwise) { + keyevent_t encoder_event = (keyevent_t) { + .key = clockwise ? encoder_cw[index] : encoder_ccw[index], + .pressed = true, + .time = (timer_read() | 1) + }; + encoder_state[index] = (clockwise ^ 1) | (clockwise << 1); + action_exec(encoder_event); +} + +void matrix_scan_kb(void) { + encoder_action_unregister(); + matrix_scan_user(); +} + +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + encoder_action_register(index, clockwise); + return true; +}; diff --git a/keyboards/kabedon/kabedon98e/kabedon98e.h b/keyboards/kabedon/kabedon98e/kabedon98e.h new file mode 100644 index 000000000000..ce4b3fa0b2bf --- /dev/null +++ b/keyboards/kabedon/kabedon98e/kabedon98e.h @@ -0,0 +1,63 @@ +/* Copyright 2021 KDon<370490639@qq.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 . + */ +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +/* ┌──┬──┐ ┌──┬──┐ + * │00│20│ │60│80│ + * └──┴──┘ └──┴──┘ + * \─en1┘ └en2─/ + * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ ┌───┐ + * │10 │ │01 │11 │02 │12 │ │03 │13 │04 │14 │ │05 │15 │16 │17 │ │57 │ │48 │ │40 │ + * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┘ └───┘ └───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┬───┐ + * │30 │21 │31 │22 │32 │23 │33 │24 │34 │25 │35 │26 │36 │37 │ │39 │49 │4A │5A │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┼───┤ + * │50 │41 │51 │42 │52 │43 │53 │44 │54 │45 │55 │46 │56 │47 │ │59 │69 │6A │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ├───┼───┼───┤ │ + * │70 │61 │71 │62 │72 │63 │73 │64 │74 │65 │75 │66 │77 │ │79 │89 │8A │7A │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┘ ├───┼───┼───┼───┤ + * │90 │91 │82 │92 │83 │93 │84 │94 │85 │95 │86 │97 │┌───┐│99 │A9 │9A │ │ + * ├────┬───┼───┼───┼───┴───┴───┴───┴───┴───┴┬──┴─┬─┴──┬───┘│88 │└───┼───┼───┤ │ + * │B0 │A1 │B1 │B3 │B2 │B5 │A7 │┌───┼───┼───┐│B9 │AA │BA │ + * └────┴───┴───┴───┴────────────────────────┴────┴────┘│B7 │A8 │B8 │└───┴───┴───┘ + * └───┴───┴───┘ + */ + +#define LAYOUT( \ + K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K16, K17, K57, K00,K48,K20, K60,K40,K80, \ + K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K37, K39, K49, K4A, K5A, \ + K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K46, K56, K47, K59, K69, K6A, \ + K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K66, K77, K79, K89, K8A, K7A, \ + K90, K91, K82, K92, K83, K93, K84, K94, K85, K95, K86, K97, K88, K99, KA9, K9A, \ + KB0, KA1, KB1, KB3, KB2, KB5, KA7, KB7, KA8, KB8, KB9, KAA, KBA \ +) { \ + { K00, K01, K02, K03, K04, K05, XXX, XXX, XXX, XXX, XXX }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, XXX, XXX, XXX }, \ + { K20, K21, K22, K23, K24, K25, K26, XXX, XXX, XXX, XXX }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, XXX, K39, XXX }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A }, \ + { K50, K51, K52, K53, K54, K55, K56, K57, XXX, K59, K5A }, \ + { K60, K61, K62, K63, K64, K65, K66, XXX, XXX, K69, K6A }, \ + { K70, K71, K72, K73, K74, K75, XXX, K77, XXX, K79, K7A }, \ + { K80, XXX, K82, K83, K84, K85, K86, XXX, K88, K89, K8A }, \ + { K90, K91, K92, K93, K94, K95, XXX, K97, XXX, K99, K9A }, \ + { XXX, KA1, XXX, XXX, XXX, XXX, XXX, KA7, KA8, KA9, KAA }, \ + { KB0, KB1, KB2, KB3, XXX, KB5, XXX, KB7, KB8, KB9, KBA } \ +} diff --git a/keyboards/kabedon/kabedon98e/keymaps/default/keymap.c b/keyboards/kabedon/kabedon98e/keymaps/default/keymap.c new file mode 100644 index 000000000000..608110417e09 --- /dev/null +++ b/keyboards/kabedon/kabedon98e/keymaps/default/keymap.c @@ -0,0 +1,71 @@ +/* Copyright 2021 KDon<370490639@qq.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 . + */ + +#include QMK_KEYBOARD_H +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN, + _FN1 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* +┌──┐ ┌──┐┌──┐┌──┐┌──┐ ┌──┐┌──┐┌──┐┌──┐ ┌──┐┌──┐┌──┐┌──┐ ┌──┐ ┌──┐ ┌──┐ +│1A│ │0B││1B││0C││1C│ │0D││1D││0E││1E│ │0F││1F││1G││1H│ │5H│ │4I│ │4A│ +└──┘ └──┘└──┘└──┘└──┘ └──┘└──┘└──┘└──┘ └──┘└──┘└──┘└──┘ └──┘ └──┘ └──┘ +┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──────┐ ┌──┐┌──┐┌──┐┌──┐ ┌──┐ +│3A││2B││3B││2C││3C││2D││3D││2E││3E││2F││3F││2G││3G││3H │ │3J││4J││4K││5K│ │0A│ +└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──────┘ └──┘└──┘└──┘└──┘ └──┘ +┌────┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌────┐ ┌──┐┌──┐┌──┐┌──┐ ┌──┐ +│5A ││4B││5B││4C││5C││4D││5D││4E││5E││4F││5F││4G││5G││4H │ │5J││6J││6K││2A│ │7A│ +└────┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└────┘ └──┘└──┘└──┘│ │ └──┘ +┌─────┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌───────┐ ┌──┐┌──┐┌──┐│ │ +│6B ││7B││6C││7C││6D││7D││6E││7E││6F││7F││6G││7H││7J │ │8J││8K││7K││ │ +└─────┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└───────┘ └──┘└──┘└──┘└──┘ +┌───────┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌─────┐ ┌──┐┌──┐┌──┐┌──┐ ┌──┐ +│9A ││9B││8C││9C││8D││9D││8E││9E││8F││9F││8G││9H │ ┌──┐ │9J││AJ││9K││6A│ │BA│ +└───────┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└─────┘ │8I│ └──┘└──┘└──┘│ │ └──┘ +┌───┐┌──┐┌──┐┌──┐┌───────────────────────┐┌───┐┌───┐ └──┘ ┌──┐┌──┐│ │ ┌──┐ +│AB ││BB││BD││BC││BF ││AH ││BH │ ┌──┐┌──┐┌──┐ │AK││BK││ │ │8A│ +└───┘└──┘└──┘└──┘└───────────────────────┘└───┘└───┘ │AI││BI││BJ│ └──┘└──┘└──┘ └──┘ + └──┘└──┘└──┘ + */ +[_BASE] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME, KC_INS, KC_END, KC_PGUP, KC_MUTE, KC_PGDN, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, + KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT), + +[_FN] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_VAD, RGB_HUD, KC_TRNS, KC_TRNS, KC_TRNS), + +[_FN1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) + +}; diff --git a/keyboards/kabedon/kabedon98e/keymaps/via/keymap.c b/keyboards/kabedon/kabedon98e/keymaps/via/keymap.c new file mode 100644 index 000000000000..608110417e09 --- /dev/null +++ b/keyboards/kabedon/kabedon98e/keymaps/via/keymap.c @@ -0,0 +1,71 @@ +/* Copyright 2021 KDon<370490639@qq.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 . + */ + +#include QMK_KEYBOARD_H +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN, + _FN1 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* +┌──┐ ┌──┐┌──┐┌──┐┌──┐ ┌──┐┌──┐┌──┐┌──┐ ┌──┐┌──┐┌──┐┌──┐ ┌──┐ ┌──┐ ┌──┐ +│1A│ │0B││1B││0C││1C│ │0D││1D││0E││1E│ │0F││1F││1G││1H│ │5H│ │4I│ │4A│ +└──┘ └──┘└──┘└──┘└──┘ └──┘└──┘└──┘└──┘ └──┘└──┘└──┘└──┘ └──┘ └──┘ └──┘ +┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──────┐ ┌──┐┌──┐┌──┐┌──┐ ┌──┐ +│3A││2B││3B││2C││3C││2D││3D││2E││3E││2F││3F││2G││3G││3H │ │3J││4J││4K││5K│ │0A│ +└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──────┘ └──┘└──┘└──┘└──┘ └──┘ +┌────┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌────┐ ┌──┐┌──┐┌──┐┌──┐ ┌──┐ +│5A ││4B││5B││4C││5C││4D││5D││4E││5E││4F││5F││4G││5G││4H │ │5J││6J││6K││2A│ │7A│ +└────┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└────┘ └──┘└──┘└──┘│ │ └──┘ +┌─────┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌───────┐ ┌──┐┌──┐┌──┐│ │ +│6B ││7B││6C││7C││6D││7D││6E││7E││6F││7F││6G││7H││7J │ │8J││8K││7K││ │ +└─────┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└───────┘ └──┘└──┘└──┘└──┘ +┌───────┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌─────┐ ┌──┐┌──┐┌──┐┌──┐ ┌──┐ +│9A ││9B││8C││9C││8D││9D││8E││9E││8F││9F││8G││9H │ ┌──┐ │9J││AJ││9K││6A│ │BA│ +└───────┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└─────┘ │8I│ └──┘└──┘└──┘│ │ └──┘ +┌───┐┌──┐┌──┐┌──┐┌───────────────────────┐┌───┐┌───┐ └──┘ ┌──┐┌──┐│ │ ┌──┐ +│AB ││BB││BD││BC││BF ││AH ││BH │ ┌──┐┌──┐┌──┐ │AK││BK││ │ │8A│ +└───┘└──┘└──┘└──┘└───────────────────────┘└───┘└───┘ │AI││BI││BJ│ └──┘└──┘└──┘ └──┘ + └──┘└──┘└──┘ + */ +[_BASE] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME, KC_INS, KC_END, KC_PGUP, KC_MUTE, KC_PGDN, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, + KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT), + +[_FN] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_VAD, RGB_HUD, KC_TRNS, KC_TRNS, KC_TRNS), + +[_FN1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) + +}; diff --git a/keyboards/kabedon/kabedon98e/keymaps/via/rules.mk b/keyboards/kabedon/kabedon98e/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/kabedon/kabedon98e/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/kabedon/kabedon98e/mcuconf.h b/keyboards/kabedon/kabedon98e/mcuconf.h new file mode 100644 index 000000000000..c1cdc757784c --- /dev/null +++ b/keyboards/kabedon/kabedon98e/mcuconf.h @@ -0,0 +1,27 @@ +/* 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/keyboards/kabedon/kabedon98e/mcuconf.h -r platforms/chibios/STM32_F103_STM32DUINO/configs/mcuconf.h` + */ + +#pragma once + +#include_next + +#undef STM32_PWM_USE_TIM3 +#define STM32_PWM_USE_TIM3 TRUE diff --git a/keyboards/kabedon/kabedon98e/readme.md b/keyboards/kabedon/kabedon98e/readme.md new file mode 100644 index 000000000000..f240663b1d89 --- /dev/null +++ b/keyboards/kabedon/kabedon98e/readme.md @@ -0,0 +1,17 @@ +# KabeDon 98e + +![KabeDon98e](https://gitee.com/kabedon/picture/raw/master/pictures/980e.jpg) + +A mechanical keyboard PCB similar to 980 layout, it has two encoders. +This PCB uses kailh hot swap socket. +Kabedon980 includes RGB underflow. + +* Keyboard Maintainer: [370490639](https://github.com/370490639) +* Hardware Supported: f103 KabeDon98e +* Hardware Availability: [KabeDon98e]https://kabedon.taobao.com + +Make example for this keyboard (after setting up your build environment): + + make kabedon/kabedon98e: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/kabedon/kabedon98e/rules.mk b/keyboards/kabedon/kabedon98e/rules.mk new file mode 100644 index 000000000000..83903fe34eb3 --- /dev/null +++ b/keyboards/kabedon/kabedon98e/rules.mk @@ -0,0 +1,21 @@ +# MCU name +MCU = STM32F103 + +# Bootloader selection +BOOTLOADER = stm32duino + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 +WS2812_DRIVER = pwm +ENCODER_ENABLE = yes diff --git a/keyboards/kagamidget/config.h b/keyboards/kagamidget/config.h index f073a18e317d..2bf5b8d7f8f7 100644 --- a/keyboards/kagamidget/config.h +++ b/keyboards/kagamidget/config.h @@ -94,54 +94,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -160,26 +112,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/kagamidget/info.json b/keyboards/kagamidget/info.json index a9e0dd1b8fea..8899b220546b 100644 --- a/keyboards/kagamidget/info.json +++ b/keyboards/kagamidget/info.json @@ -2,11 +2,8 @@ "keyboard_name": "KagaMidget", "url": "http://yynmt.com", "maintainer": "yynmt", - "width": 12, - "height": 4, "layouts": { "LAYOUT": { - "key_count": 48, "layout": [ {"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, diff --git a/keyboards/kagamidget/kagamidget.c b/keyboards/kagamidget/kagamidget.c index 1f790c9e7779..e68235701821 100644 --- a/keyboards/kagamidget/kagamidget.c +++ b/keyboards/kagamidget/kagamidget.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "kagamidget.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/kagamidget/keymaps/default/keymap.c b/keyboards/kagamidget/keymaps/default/keymap.c index 3d9a95470087..cb1ee4c63bb0 100644 --- a/keyboards/kagamidget/keymaps/default/keymap.c +++ b/keyboards/kagamidget/keymaps/default/keymap.c @@ -100,19 +100,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) }; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/kagamidget/rules.mk b/keyboards/kagamidget/rules.mk index fb92bfecd7d1..89eb7548344f 100644 --- a/keyboards/kagamidget/rules.mk +++ b/keyboards/kagamidget/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes diff --git a/keyboards/kapcave/arya/arya.c b/keyboards/kapcave/arya/arya.c new file mode 100644 index 000000000000..af5d19be4fff --- /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 . +*/ +#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 000000000000..ea1d1916c348 --- /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 . +*/ +#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 000000000000..d5c78af075ec --- /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 . +*/ + +#pragma once + +#define CH_CFG_ST_RESOLUTION 16 + +#define CH_CFG_INTERVALS_SIZE 16 + +#include_next + diff --git a/keyboards/kapcave/arya/config.h b/keyboards/kapcave/arya/config.h new file mode 100644 index 000000000000..62df795ff5ac --- /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 . +*/ + +#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 000000000000..dffa322d1924 --- /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 . +*/ + +#pragma once + +#define HAL_USE_PWM TRUE + +#include_next + diff --git a/keyboards/kapcave/arya/info.json b/keyboards/kapcave/arya/info.json new file mode 100644 index 000000000000..fb220aa0709c --- /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 000000000000..b8300b1f4a1e --- /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 . +*/ +#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 000000000000..9d9894862a0b --- /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 000000000000..4b98707da7d7 --- /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 . +*/ +#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 000000000000..dcf12fbffdec --- /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 000000000000..1e5b99807cb7 --- /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 000000000000..5c161dbe3c27 --- /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 . +*/ + +#pragma once +#include_next + +/* 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 000000000000..12fe9684a525 --- /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 000000000000..29bcd8b3c819 --- /dev/null +++ b/keyboards/kapcave/arya/rules.mk @@ -0,0 +1,23 @@ +# 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 +# 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 000000000000..91c34182e786 --- /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 . +*/ +#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 000000000000..c2c2d823f908 --- /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 . +*/ +#include "gskt00.h" + diff --git a/keyboards/kapcave/gskt00/gskt00.h b/keyboards/kapcave/gskt00/gskt00.h new file mode 100755 index 000000000000..d0ac51acd741 --- /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 . +*/ + +#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/kapcave/gskt00/info.json b/keyboards/kapcave/gskt00/info.json new file mode 100644 index 000000000000..ba1455fae9c6 --- /dev/null +++ b/keyboards/kapcave/gskt00/info.json @@ -0,0 +1,82 @@ +{ + "keyboard_name": "GSKT-00", + "url": "https://kapcave.com/products/gskt-00-pcb-usb-c", + "maintainer": "nachie", + "layouts": { + "LAYOUT_60_ansi_tsangan": { + "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}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"Win", "x":12.5, "y":4}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}] + }, + + "LAYOUT_60_iso_tsangan": { + "layout": [{"label":"\u00ac", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"\"", "x":2, "y":0}, {"label":"\u00a3", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"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":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"@", "x":11.75, "y":2}, {"label":"~", "x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"label":"|", "x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"AltGr", "x":11, "y":4, "w":1.5}, {"label":"Menu", "x":12.5, "y":4}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}] + }, + + "LAYOUT_all": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1", "x":1, "y":0}, + {"label":"2", "x":2, "y":0}, + {"label":"3", "x":3, "y":0}, + {"label":"4", "x":4, "y":0}, + {"label":"5", "x":5, "y":0}, + {"label":"6", "x":6, "y":0}, + {"label":"7", "x":7, "y":0}, + {"label":"8", "x":8, "y":0}, + {"label":"9", "x":9, "y":0}, + {"label":"0", "x":10, "y":0}, + {"label":"-", "x":11, "y":0}, + {"label":"=", "x":12, "y":0}, + {"label":"\\", "x":13, "y":0}, + {"label":"`", "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":"Backspace", "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}, + {"label":"ISO \\", "x":1.25, "y":3}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",", "x":9.25, "y":3}, + {"label":".", "x":10.25, "y":3}, + {"label":"/", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"Fn", "x":14, "y":3}, + {"label":"Ctrl", "x":0, "y":4, "w":1.5}, + {"label":"GUI", "x":1.5, "y":4}, + {"label":"Alt", "x":2.5, "y":4, "w":1.5}, + {"label":"Space", "x":4, "y":4, "w":7}, + {"label":"Alt", "x":11, "y":4, "w":1.5}, + {"label":"GUI", "x":12.5, "y":4}, + {"label":"Ctrl", "x":13.5, "y":4, "w":1.5} + ] + } + } +} 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 000000000000..2db5749cb56c --- /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 . +*/ +#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 000000000000..8c7e9720db9b --- /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 . +*/ +#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 000000000000..1f6d7bcd3827 --- /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 000000000000..53c9db2bd2c9 --- /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/kapcave/gskt00/keymaps/default/keymap.c b/keyboards/kapcave/gskt00/keymaps/default/keymap.c new file mode 100755 index 000000000000..0d8d6dad6b29 --- /dev/null +++ b/keyboards/kapcave/gskt00/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 . +*/ +#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_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 */ + 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, 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 000000000000..042b07d14897 --- /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 similarity index 100% rename from keyboards/gskt00/keymaps/nachie/keymap.c rename to 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 000000000000..95bc13142265 --- /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 . +*/ +#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 000000000000..c5c3db7e3b07 --- /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/mechlovin/hannah65/mechlovin9/keymaps/via/rules.mk b/keyboards/kapcave/gskt00/keymaps/via/rules.mk similarity index 100% rename from keyboards/mechlovin/hannah65/mechlovin9/keymaps/via/rules.mk rename to keyboards/kapcave/gskt00/keymaps/via/rules.mk diff --git a/keyboards/kapcave/gskt00/readme.md b/keyboards/kapcave/gskt00/readme.md new file mode 100644 index 000000000000..d1a90ca58341 --- /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/kapcave/gskt00/rules.mk b/keyboards/kapcave/gskt00/rules.mk new file mode 100755 index 000000000000..5fe8ed4b34eb --- /dev/null +++ b/keyboards/kapcave/gskt00/rules.mk @@ -0,0 +1,20 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# comment out to disable the options. +# +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 +NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no +RGBLIGHT_ENABLE = no + +LAYOUTS = 60_ansi_tsangan 60_iso_tsangan diff --git a/keyboards/kapcave/paladin64/config.h b/keyboards/kapcave/paladin64/config.h new file mode 100755 index 000000000000..7c3d1a0fa111 --- /dev/null +++ b/keyboards/kapcave/paladin64/config.h @@ -0,0 +1,121 @@ +/* +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 . +*/ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4B43 +#define PRODUCT_ID 0x5036 +#define DEVICE_VER 0x0001 +#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_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 */ + #define PS2_USART_INIT() do { \ + PS2_CLOCK_DDR &= ~(1<", "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}] + }, + + "LAYOUT_60_ansi": { + "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}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"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}] + }, + + "LAYOUT_infinity": { + "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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":6}, {"label":"Alt", "x":10, "y":4, "w":1.5}, {"label":"Win", "x":11.5, "y":4}, {"label":"Menu", "x":12.5, "y":4}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}] + }, + + "LAYOUT_aek_103": { + "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}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4, "w":1.25}, {"label":"Alt", "x":2.75, "y":4, "w":1.5}, {"x":4.25, "y":4, "w":6.5}, {"label":"Alt", "x":10.75, "y":4, "w":1.5}, {"label":"Menu", "x":12.25, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}] + }, + + "LAYOUT_iso": { + "layout": [{"label":"\u00ac", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"\"", "x":2, "y":0}, {"label":"\u00a3", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"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":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"@", "x":11.75, "y":2}, {"label":"~", "x":12.75, "y":2}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"label":"|", "x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"AltGr", "x":11, "y":4, "w":1.5}, {"label":"Menu", "x":12.5, "y":4}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}] + } + } + } diff --git a/keyboards/kapcave/paladin64/keymaps/default/keymap.c b/keyboards/kapcave/paladin64/keymaps/default/keymap.c new file mode 100755 index 000000000000..ed906909fe7c --- /dev/null +++ b/keyboards/kapcave/paladin64/keymaps/default/keymap.c @@ -0,0 +1,61 @@ +/* +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 . +*/ +#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_APP, 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_APP, 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_APP, 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, KC_TRNS, RGB_MOD, KC_TRNS, RGB_TOG), + + /* AutoMouse */ + LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) + +}; diff --git a/keyboards/kapcave/paladin64/keymaps/default/readme.md b/keyboards/kapcave/paladin64/keymaps/default/readme.md new file mode 100644 index 000000000000..11248150d904 --- /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 000000000000..7ce94a5ef4f0 --- /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 . +*/ +#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 000000000000..2cf66cd4cb00 --- /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 000000000000..036bd6d1c3ec --- /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 000000000000..88dd1fdff24b --- /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 . +*/ +#include "paladin64.h" + diff --git a/keyboards/kapcave/paladin64/paladin64.h b/keyboards/kapcave/paladin64/paladin64.h new file mode 100755 index 000000000000..b578c1854093 --- /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 . +*/ +#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 000000000000..cc4a9b67e3d4 --- /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 000000000000..354df6888980 --- /dev/null +++ b/keyboards/kapcave/paladin64/rules.mk @@ -0,0 +1,21 @@ +# 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 +# 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 000000000000..9b3c9a4ca0ab --- /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 . +*/ +#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 000000000000..7d1afccf6026 --- /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 000000000000..79c3baae444d --- /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 . +*/ +#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 000000000000..44b106fa6bcd --- /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 000000000000..30dd1b9c00f4 --- /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 . +*/ +#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 000000000000..2ade4edf3888 --- /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 000000000000..a65b53b34181 --- /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 . +*/ +#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 000000000000..4dc98d30f491 --- /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 000000000000..2315da4ace7b --- /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 . +*/ +#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 000000000000..600f7d16a712 --- /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 000000000000..063e49c872ab --- /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 . +*/ +#include "paladinpad.h" diff --git a/keyboards/kapcave/paladinpad/paladinpad.h b/keyboards/kapcave/paladinpad/paladinpad.h new file mode 100644 index 000000000000..54b320c42466 --- /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 . +*/ +#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 000000000000..f21c43d783d1 --- /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 000000000000..84af56ec25bc --- /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 . +*/ +#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/kapcave/paladinpad/rev1/rules.mk b/keyboards/kapcave/paladinpad/rev1/rules.mk new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/keyboards/kapcave/paladinpad/rev2/config.h b/keyboards/kapcave/paladinpad/rev2/config.h new file mode 100644 index 000000000000..a27ac03ab15c --- /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 . +*/ +#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/kapcave/paladinpad/rev2/rules.mk b/keyboards/kapcave/paladinpad/rev2/rules.mk new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/keyboards/kapcave/paladinpad/rules.mk b/keyboards/kapcave/paladinpad/rules.mk new file mode 100644 index 000000000000..ab0ba2f21524 --- /dev/null +++ b/keyboards/kapcave/paladinpad/rules.mk @@ -0,0 +1,22 @@ +# 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 +# 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/kb_elmo/67mk_e/67mk_e.c b/keyboards/kb_elmo/67mk_e/67mk_e.c new file mode 100644 index 000000000000..31254fe962e2 --- /dev/null +++ b/keyboards/kb_elmo/67mk_e/67mk_e.c @@ -0,0 +1,17 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "67mk_e.h" diff --git a/keyboards/kb_elmo/67mk_e/67mk_e.h b/keyboards/kb_elmo/67mk_e/67mk_e.h new file mode 100644 index 000000000000..5cf13408a922 --- /dev/null +++ b/keyboards/kb_elmo/67mk_e/67mk_e.h @@ -0,0 +1,105 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ____ KC_NO + +#define LAYOUT_all( \ + 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, k115, \ + k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k213, k215, \ + k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k114, \ + k400, k401, k402, k406, k411, k412, k413, k414, k415 \ +) { \ + { 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, ____, k213, ____, k215 }, \ + { k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, ____, ____ }, \ + { k400, k401, k402, ____, ____, ____, k406, ____, ____, ____, ____, k411, k412, k413, k414, k415 } \ +} + +#define LAYOUT_65_ansi_blocker( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k015, \ + k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k115, \ + k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k213, k215, \ + k300, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k114, \ + k400, k401, k402, k406, k411, k412, k413, k414, k415 \ +) { \ + { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, ____, 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, ____, k213, ____, k215 }, \ + { k300, ____, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, ____, ____ }, \ + { k400, k401, k402, ____, ____, ____, k406, ____, ____, ____, ____, k411, k412, k413, k414, k415 } \ +} + +#define LAYOUT_65_ansi_blocker_split_bs( \ + 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, k115, \ + k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k213, k215, \ + k300, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k114, \ + k400, k401, k402, k406, k411, k412, k413, k414, k415 \ +) { \ + { 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, ____, k213, ____, k215 }, \ + { k300, ____, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, ____, ____ }, \ + { k400, k401, k402, ____, ____, ____, k406, ____, ____, ____, ____, k411, k412, k413, k414, k415 } \ +} + +#define LAYOUT_65_ansi_blocker_tsangan( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k015, \ + k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k115, \ + k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k213, k215, \ + k300, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k114, \ + k400, k401, k402, k406, k412, k413, k414, k415 \ +) { \ + { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, ____, 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, ____, k213, ____, k215 }, \ + { k300, ____, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, ____, ____ }, \ + { k400, k401, k402, ____, ____, ____, k406, ____, ____, ____, ____, ____, k412, k413, k414, k415 } \ +} + +#define LAYOUT_65_iso_blocker( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k015, \ + k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k115, \ + k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k113, k213, k215, \ + k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k114, \ + k400, k401, k402, k406, k411, k412, k413, k414, k415 \ +) { \ + { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, ____, 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, ____, k213, ____, k215 }, \ + { k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, ____, ____ }, \ + { k400, k401, k402, ____, ____, ____, k406, ____, ____, ____, ____, k411, k412, k413, k414, k415 } \ +} + +#define LAYOUT_65_iso_blocker_split_bs( \ + 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, k115, \ + k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k113, k213, k215, \ + k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k114, \ + k400, k401, k402, k406, k411, k412, k413, k414, k415 \ +) { \ + { 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, ____, k213, ____, k215 }, \ + { k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, ____, ____ }, \ + { k400, k401, k402, ____, ____, ____, k406, ____, ____, ____, ____, k411, k412, k413, k414, k415 } \ +} diff --git a/keyboards/kb_elmo/67mk_e/config.h b/keyboards/kb_elmo/67mk_e/config.h new file mode 100644 index 000000000000..60c90ed522e6 --- /dev/null +++ b/keyboards/kb_elmo/67mk_e/config.h @@ -0,0 +1,44 @@ +/* +Copyright 2021 kb-elmo + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xA68C +#define PRODUCT_ID 0xD03E +#define DEVICE_VER 0x0001 +#define MANUFACTURER kb_elmo +#define PRODUCT 67mk_E + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 16 + +/* Keyboard Matrix Assignments */ +#define MATRIX_ROW_PINS { D7, B4, D6, D5, B0 } +#define MATRIX_COL_PINS { B3, B2, B1, D4, D2, D3, C7, C6, B5, B6, F7, F6, F5, F0, F1, F4 } + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* Indicator LEDs */ +#define LED_CAPS_LOCK_PIN B7 diff --git a/keyboards/kb_elmo/67mk_e/info.json b/keyboards/kb_elmo/67mk_e/info.json new file mode 100644 index 000000000000..fd417097b8b4 --- /dev/null +++ b/keyboards/kb_elmo/67mk_e/info.json @@ -0,0 +1,438 @@ +{ + "keyboard_name": "67mk_e", + "url": "", + "maintainer": "kb-elmo", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15, "y":0}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + {"x":15, "y":1}, + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":15, "y":2}, + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + }, + "LAYOUT_65_ansi_blocker": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":15, "y":0}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + {"x":15, "y":1}, + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":15, "y":2}, + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + }, + "LAYOUT_65_ansi_blocker_split_bs": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15, "y":0}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + {"x":15, "y":1}, + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":15, "y":2}, + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + }, + "LAYOUT_65_ansi_blocker_tsangan": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":15, "y":0}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + {"x":15, "y":1}, + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":15, "y":2}, + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + {"x":0, "y":4, "w":1.5}, + {"x":1.5, "y":4}, + {"x":2.5, "y":4, "w":1.5}, + {"x":4, "y":4, "w":7}, + {"x":11, "y":4, "w":1.5}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + }, + "LAYOUT_65_iso_blocker": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":15, "y":0}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":15, "y":1}, + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + {"x":13.75, "y":1, "w":1.25, "h":2}, + {"x":15, "y":2}, + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + }, + "LAYOUT_65_iso_blocker_split_bs": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15, "y":0}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":15, "y":1}, + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + {"x":13.75, "y":1, "w":1.25, "h":2}, + {"x":15, "y":2}, + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + } + } +} diff --git a/keyboards/kb_elmo/67mk_e/keymaps/default/keymap.c b/keyboards/kb_elmo/67mk_e/keymaps/default/keymap.c new file mode 100644 index 000000000000..0da6b59a0065 --- /dev/null +++ b/keyboards/kb_elmo/67mk_e/keymaps/default/keymap.c @@ -0,0 +1,33 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi_blocker( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_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_HOME, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_ansi_blocker( + 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/kb_elmo/67mk_e/keymaps/via/keymap.c b/keyboards/kb_elmo/67mk_e/keymaps/via/keymap.c new file mode 100644 index 000000000000..4b9cb0fcc2c2 --- /dev/null +++ b/keyboards/kb_elmo/67mk_e/keymaps/via/keymap.c @@ -0,0 +1,47 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_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_BSPC, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_MPRV, KC_MNXT, KC_MPLY, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/kb_elmo/67mk_e/keymaps/via/rules.mk b/keyboards/kb_elmo/67mk_e/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/kb_elmo/67mk_e/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/kb_elmo/67mk_e/readme.md b/keyboards/kb_elmo/67mk_e/readme.md new file mode 100644 index 000000000000..ddf931655160 --- /dev/null +++ b/keyboards/kb_elmo/67mk_e/readme.md @@ -0,0 +1,21 @@ +# 67mk_E + +![67mk_e](https://i.imgur.com/EnMy6IYl.jpg) + +A simple "no frills" drop-in replacement PCB for the KBDfans 67mkII / 67lite + +* Keyboard Maintainer: [kb-elmo](https://github.com/kb-elmo) +* Hardware Supported: 67mk_E rev.1 PCB +* Hardware Availability: [Open source project](https://github.com/kb-elmo/67mk_e) + +Make example for this keyboard (after setting up your build environment): + + make kb_elmo/67mk_e:default + +Flashing example for this keyboard: + + make kb_elmo/67mk_e:default:flash + +**Bootloader:** Press the physical reset button on the bottom side of the PCB (labeled Reset) or hold down the top left key while plugging in the board. + +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/kb_elmo/67mk_e/rules.mk b/keyboards/kb_elmo/67mk_e/rules.mk new file mode 100644 index 000000000000..b87feae08c83 --- /dev/null +++ b/keyboards/kb_elmo/67mk_e/rules.mk @@ -0,0 +1,21 @@ +# 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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +LAYOUTS = 65_ansi_blocker 65_ansi_blocker_split_bs 65_ansi_blocker_tsangan 65_iso_blocker 65_iso_blocker_split_bs diff --git a/keyboards/kb_elmo/aek2_usb/config.h b/keyboards/kb_elmo/aek2_usb/config.h index cf8c9d66f9ad..9cad5d5c72f9 100644 --- a/keyboards/kb_elmo/aek2_usb/config.h +++ b/keyboards/kb_elmo/aek2_usb/config.h @@ -52,5 +52,6 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -/* reduce VIA layer count because of EEPROM size */ -#define DYNAMIC_KEYMAP_LAYER_COUNT 2 +/* reduce EEPROM usage */ +#define DYNAMIC_KEYMAP_LAYER_COUNT 3 +#define LAYER_STATE_8BIT diff --git a/keyboards/kb_elmo/aek2_usb/info.json b/keyboards/kb_elmo/aek2_usb/info.json index 7a15742f08b4..82050e6faee1 100644 --- a/keyboards/kb_elmo/aek2_usb/info.json +++ b/keyboards/kb_elmo/aek2_usb/info.json @@ -2,8 +2,6 @@ "keyboard_name": "aek 2 usb", "url": "https://github.com/kb-elmo/aek2_usb", "maintainer": "kb-elmo", - "width": 23, - "height": 7, "layouts": { "LAYOUT": { "layout": [ @@ -115,4 +113,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/kb_elmo/aek2_usb/keymaps/via/keymap.c b/keyboards/kb_elmo/aek2_usb/keymaps/via/keymap.c index c5ff48e23ed6..86b69ceebdba 100644 --- a/keyboards/kb_elmo/aek2_usb/keymaps/via/keymap.c +++ b/keyboards/kb_elmo/aek2_usb/keymaps/via/keymap.c @@ -32,5 +32,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_MPRV, KC_MNXT, KC_MPLY, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ) }; diff --git a/keyboards/kb_elmo/aek2_usb/keymaps/via/rules.mk b/keyboards/kb_elmo/aek2_usb/keymaps/via/rules.mk index 1e5b99807cb7..36b7ba9cbc98 100644 --- a/keyboards/kb_elmo/aek2_usb/keymaps/via/rules.mk +++ b/keyboards/kb_elmo/aek2_usb/keymaps/via/rules.mk @@ -1 +1,2 @@ VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/kb_elmo/aek2_usb/rules.mk b/keyboards/kb_elmo/aek2_usb/rules.mk index e5b427e5a521..3eaa2d82c1fe 100644 --- a/keyboards/kb_elmo/aek2_usb/rules.mk +++ b/keyboards/kb_elmo/aek2_usb/rules.mk @@ -5,21 +5,18 @@ MCU = atmega32a F_CPU = 16000000 # Bootloader selection -BOOTLOADER = USBasp +BOOTLOADER = usbasploader # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/kb_elmo/elmopad/info.json b/keyboards/kb_elmo/elmopad/info.json index adc2eae247cb..6193342c6ba6 100644 --- a/keyboards/kb_elmo/elmopad/info.json +++ b/keyboards/kb_elmo/elmopad/info.json @@ -2,10 +2,8 @@ "keyboard_name": "elmopad", "url": "https://github.com/kb-elmo/numpad", "maintainer": "kb-elmo", - "width": 3, - "height": 2, "layouts": { - "LAYOUT": { + "LAYOUT_numpad_6x4": { "layout": [ {"x":0, "y":0}, {"x":1, "y":0}, diff --git a/keyboards/kb_elmo/elmopad/rules.mk b/keyboards/kb_elmo/elmopad/rules.mk index 6e20108338ea..c35bae56a3f5 100644 --- a/keyboards/kb_elmo/elmopad/rules.mk +++ b/keyboards/kb_elmo/elmopad/rules.mk @@ -5,23 +5,20 @@ MCU = atmega328p F_CPU = 16000000 # Bootloader selection -BOOTLOADER = USBasp +BOOTLOADER = usbasploader # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 LAYOUTS = numpad_6x4 diff --git a/keyboards/kb_elmo/isolation/config.h b/keyboards/kb_elmo/isolation/config.h new file mode 100644 index 000000000000..3d32efbcb45d --- /dev/null +++ b/keyboards/kb_elmo/isolation/config.h @@ -0,0 +1,62 @@ +/* +Copyright 2021 kb-elmo + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xA68C +#define PRODUCT_ID 0x4EE6 +#define DEVICE_VER 0x0001 +#define MANUFACTURER kb-elmo +#define PRODUCT ISOlation + +/* key matrix size */ +#define MATRIX_ROWS 1 +#define MATRIX_COLS 1 + +/* direct key pin */ +#define DIRECT_PINS {{ B0 }} +#define UNUSED_PINS + +/* RGB backlight */ +#define RGB_DI_PIN B2 +#ifdef RGB_DI_PIN +# define RGBLED_NUM 3 +# define RGBLIGHT_HUE_STEP 8 +# define RGBLIGHT_SAT_STEP 8 +# define RGBLIGHT_VAL_STEP 8 +# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +# define RGBLIGHT_EFFECT_BREATHING +# define RGBLIGHT_EFFECT_RAINBOW_MOOD +# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +# 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 +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/kb_elmo/isolation/info.json b/keyboards/kb_elmo/isolation/info.json new file mode 100644 index 000000000000..1cca4610d7f8 --- /dev/null +++ b/keyboards/kb_elmo/isolation/info.json @@ -0,0 +1,12 @@ +{ + "keyboard_name": "isolation", + "url": "", + "maintainer": "kb-elmo", + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0.25, "y":0, "w":1.25, "h":2} + ] + } + } +} diff --git a/keyboards/kb_elmo/isolation/isolation.c b/keyboards/kb_elmo/isolation/isolation.c new file mode 100644 index 000000000000..09b8c95541b7 --- /dev/null +++ b/keyboards/kb_elmo/isolation/isolation.c @@ -0,0 +1,17 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "isolation.h" diff --git a/keyboards/kb_elmo/isolation/isolation.h b/keyboards/kb_elmo/isolation/isolation.h new file mode 100644 index 000000000000..580189ea25f5 --- /dev/null +++ b/keyboards/kb_elmo/isolation/isolation.h @@ -0,0 +1,25 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + k00 \ +) { \ + { k00 } \ +} diff --git a/keyboards/kb_elmo/isolation/keymaps/default/keymap.c b/keyboards/kb_elmo/isolation/keymaps/default/keymap.c new file mode 100644 index 000000000000..9cfa21e9a4d5 --- /dev/null +++ b/keyboards/kb_elmo/isolation/keymaps/default/keymap.c @@ -0,0 +1,22 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ENT + ) +}; diff --git a/keyboards/kb_elmo/isolation/readme.md b/keyboards/kb_elmo/isolation/readme.md new file mode 100644 index 000000000000..610c26a59063 --- /dev/null +++ b/keyboards/kb_elmo/isolation/readme.md @@ -0,0 +1,24 @@ +# ISOlation + +![isolation](https://i.imgur.com/Pe1tWzJl.jpg) + +A seamless ISO single-key "macropad" + +* Keyboard Maintainer: [kb-elmo](https://github.com/kb-elmo) +* Hardware Supported: ISOlation RGB PCB +* Hardware Availability: [Open source project](https://github.com/kb-elmo/ISOlation) + +Make example for this keyboard (after setting up your build environment): + + make kb_elmo/isolation:default + +Flashing example for this keyboard: + + make kb_elmo/isolation: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 the enter key and plug in the keyboard +* **Bootloader pins**: Short the two pins labeled "BOOT" while plugging the board \ No newline at end of file diff --git a/keyboards/kb_elmo/isolation/rules.mk b/keyboards/kb_elmo/isolation/rules.mk new file mode 100644 index 000000000000..5c346aa10adc --- /dev/null +++ b/keyboards/kb_elmo/isolation/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega328p + +# Processor frequency +F_CPU = 16000000 + +# Bootloader selection +BOOTLOADER = usbasploader + +# 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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/kb_elmo/m0110a_usb/info.json b/keyboards/kb_elmo/m0110a_usb/info.json index 9d8fb2871a93..1970c4960c1b 100644 --- a/keyboards/kb_elmo/m0110a_usb/info.json +++ b/keyboards/kb_elmo/m0110a_usb/info.json @@ -2,89 +2,91 @@ "keyboard_name": "m0110a usb", "url": "https://github.com/kb-elmo/m0110a_usb", "maintainer": "kb-elmo", - "width": 19.25, - "height": 5, "layouts": { "LAYOUT": { "layout": [ - {"x":0, "y":0}, - {"x":1, "y":0}, - {"x":2, "y":0}, - {"x":3, "y":0}, - {"x":4, "y":0}, - {"x":5, "y":0}, - {"x":6, "y":0}, - {"x":7, "y":0}, - {"x":8, "y":0}, - {"x":9, "y":0}, - {"x":10, "y":0}, - {"x":11, "y":0}, - {"x":12, "y":0}, - {"x":13, "y":0, "w":1.5}, - {"x":15.25, "y":0}, - {"x":16.25, "y":0}, - {"x":17.25, "y":0}, - {"x":18.25, "y":0}, - {"x":0, "y":1, "w":1.5}, - {"x":1.5, "y":1}, - {"x":2.5, "y":1}, - {"x":3.5, "y":1}, - {"x":4.5, "y":1}, - {"x":5.5, "y":1}, - {"x":6.5, "y":1}, - {"x":7.5, "y":1}, - {"x":8.5, "y":1}, - {"x":9.5, "y":1}, - {"x":10.5, "y":1}, - {"x":11.5, "y":1}, - {"x":12.5, "y":1}, - {"x":15.25, "y":1}, - {"x":16.25, "y":1}, - {"x":17.25, "y":1}, - {"x":18.25, "y":1}, - {"x":0, "y":2, "w":1.75}, - {"x":1.75, "y":2}, - {"x":2.75, "y":2}, - {"x":3.75, "y":2}, - {"x":4.75, "y":2}, - {"x":5.75, "y":2}, - {"x":6.75, "y":2}, - {"x":7.75, "y":2}, - {"x":8.75, "y":2}, - {"x":9.75, "y":2}, - {"x":10.75, "y":2}, - {"x":11.75, "y":2}, - {"x":13.5, "y":1, "h":2}, - {"x":15.25, "y":2}, - {"x":16.25, "y":2}, - {"x":17.25, "y":2}, - {"x":18.25, "y":2}, - {"x":0, "y":3, "w":2.25}, - {"x":2.25, "y":3}, - {"x":3.25, "y":3}, - {"x":4.25, "y":3}, - {"x":5.25, "y":3}, - {"x":6.25, "y":3}, - {"x":7.25, "y":3}, - {"x":8.25, "y":3}, - {"x":9.25, "y":3}, - {"x":10.25, "y":3}, - {"x":11.25, "y":3}, - {"x":12.25, "y":3, "w":1.25}, - {"x":13.5, "y":3}, - {"x":15.25, "y":3}, - {"x":16.25, "y":3}, - {"x":17.25, "y":3}, - {"x":18.25, "y":3, "h":2}, - {"x":0, "y":4, "w":1.5}, - {"x":1.5, "y":4, "w":2}, - {"x":3.5, "y":4, "w":7}, - {"x":10.5, "y":4}, - {"x":11.5, "y":4}, - {"x":12.5, "y":4}, - {"x":13.5, "y":4}, - {"x":15.25, "y":4, "w":2}, - {"x":17.25, "y":4} + {"label":"Esc", "x":0, "y":0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2@", "x":2, "y":0}, + {"label":"3#", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":7, "y":0}, + {"label":"8*", "x":8, "y":0}, + {"label":"9(", "x":9, "y":0}, + {"label":"0)", "x":10, "y":0}, + {"label":"-_", "x":11, "y":0}, + {"label":"=+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":1.5}, + {"label":"Delete", "x":15.25, "y":0}, + {"label":"=+", "x":16.25, "y":0}, + {"label":"/", "x":17.25, "y":0}, + {"label":"*", "x":18.25, "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":"7", "x":15.25, "y":1}, + {"label":"8", "x":16.25, "y":1}, + {"label":"9", "x":17.25, "y":1}, + {"label":"-", "x":18.25, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";:", "x":10.75, "y":2}, + {"label":"'\"", "x":11.75, "y":2}, + {"label":"Enter", "x":13.5, "y":1, "h":2}, + {"label":"4", "x":15.25, "y":2}, + {"label":"5", "x":16.25, "y":2}, + {"label":"6", "x":17.25, "y":2}, + {"label":"+", "x":18.25, "y":2}, + + {"label":"Shift", "x":0, "y":3, "w":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",<", "x":9.25, "y":3}, + {"label":".>", "x":10.25, "y":3}, + {"label":"/?", "x":11.25, "y":3}, + {"label":"MO(1)", "x":12.25, "y":3, "w":1.25}, + {"label":"Up", "x":13.5, "y":3}, + {"label":"1", "x":15.25, "y":3}, + {"label":"2", "x":16.25, "y":3}, + {"label":"3", "x":17.25, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.5}, + {"label":"GUI", "x":1.5, "y":4, "w":2}, + {"label":"Space", "x":3.5, "y":4, "w":7}, + {"label":"\\|", "x":10.5, "y":4}, + {"label":"Left", "x":11.5, "y":4}, + {"label":"Right", "x":12.5, "y":4}, + {"label":"Down", "x":13.5, "y":4}, + {"label":"0", "x":15.25, "y":4, "w":2}, + {"label":".", "x":17.25, "y":4}, + {"label":"Enter", "x":18.25, "y":3, "h":2} ] } } diff --git a/keyboards/kb_elmo/m0110a_usb/rules.mk b/keyboards/kb_elmo/m0110a_usb/rules.mk index e5b427e5a521..3eaa2d82c1fe 100644 --- a/keyboards/kb_elmo/m0110a_usb/rules.mk +++ b/keyboards/kb_elmo/m0110a_usb/rules.mk @@ -5,21 +5,18 @@ MCU = atmega32a F_CPU = 16000000 # Bootloader selection -BOOTLOADER = USBasp +BOOTLOADER = usbasploader # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/kb_elmo/m0116_usb/info.json b/keyboards/kb_elmo/m0116_usb/info.json index 1a55664d18c8..9a5386b838f9 100644 --- a/keyboards/kb_elmo/m0116_usb/info.json +++ b/keyboards/kb_elmo/m0116_usb/info.json @@ -2,92 +2,95 @@ "keyboard_name": "m0116 usb", "url": "https://github.com/kb-elmo/m0116_usb", "maintainer": "kb-elmo", - "width": 19.25, - "height": 6.15, "layouts": { "LAYOUT": { "layout": [ - {"x":5, "y":0, "w":2}, - {"x":0, "y":1.15}, - {"x":1, "y":1.15}, - {"x":2, "y":1.15}, - {"x":3, "y":1.15}, - {"x":4, "y":1.15}, - {"x":5, "y":1.15}, - {"x":6, "y":1.15}, - {"x":7, "y":1.15}, - {"x":8, "y":1.15}, - {"x":9, "y":1.15}, - {"x":10, "y":1.15}, - {"x":11, "y":1.15}, - {"x":12, "y":1.15}, - {"x":13, "y":1.15, "w":1.5}, - {"x":15.25, "y":1.15}, - {"x":16.25, "y":1.15}, - {"x":17.25, "y":1.15}, - {"x":18.25, "y":1.15}, - {"x":0, "y":2.15, "w":1.5}, - {"x":1.5, "y":2.15}, - {"x":2.5, "y":2.15}, - {"x":3.5, "y":2.15}, - {"x":4.5, "y":2.15}, - {"x":5.5, "y":2.15}, - {"x":6.5, "y":2.15}, - {"x":7.5, "y":2.15}, - {"x":8.5, "y":2.15}, - {"x":9.5, "y":2.15}, - {"x":10.5, "y":2.15}, - {"x":11.5, "y":2.15}, - {"x":12.5, "y":2.15}, - {"x":15.25, "y":2.15}, - {"x":16.25, "y":2.15}, - {"x":17.25, "y":2.15}, - {"x":18.25, "y":2.15}, - {"x":0, "y":3.15, "w":1.75}, - {"x":1.75, "y":3.15}, - {"x":2.75, "y":3.15}, - {"x":3.75, "y":3.15}, - {"x":4.75, "y":3.15}, - {"x":5.75, "y":3.15}, - {"x":6.75, "y":3.15}, - {"x":7.75, "y":3.15}, - {"x":8.75, "y":3.15}, - {"x":9.75, "y":3.15}, - {"x":10.75, "y":3.15}, - {"x":11.75, "y":3.15}, - {"x":13.5, "y":2.15, "h":2}, - {"x":15.25, "y":3.15}, - {"x":16.25, "y":3.15}, - {"x":17.25, "y":3.15}, - {"x":18.25, "y":3.15}, - {"x":0, "y":4.15, "w":2.25}, - {"x":2.25, "y":4.15}, - {"x":3.25, "y":4.15}, - {"x":4.25, "y":4.15}, - {"x":5.25, "y":4.15}, - {"x":6.25, "y":4.15}, - {"x":7.25, "y":4.15}, - {"x":8.25, "y":4.15}, - {"x":9.25, "y":4.15}, - {"x":10.25, "y":4.15}, - {"x":11.25, "y":4.15}, - {"x":12.25, "y":4.15, "w":2.25}, - {"x":15.25, "y":4.15}, - {"x":16.25, "y":4.15}, - {"x":17.25, "y":4.15}, - {"x":18.25, "y":4.15, "h":2}, - {"x":0, "y":5.15}, - {"x":1, "y":5.15}, - {"x":2, "y":5.15, "w":1.75}, - {"x":3.75, "y":5.15}, - {"x":4.75, "y":5.15, "w":4.75}, - {"x":9.5, "y":5.15}, - {"x":10.5, "y":5.15}, - {"x":11.5, "y":5.15}, - {"x":12.5, "y":5.15}, - {"x":13.5, "y":5.15}, - {"x":15.25, "y":5.15, "w":2}, - {"x":17.25, "y":5.15} + {"label":"Print Screen", "x":5, "y":0, "w":2}, + + {"label":"Esc", "x":0, "y":1.15}, + {"label":"1!", "x":1, "y":1.15}, + {"label":"2@", "x":2, "y":1.15}, + {"label":"3#", "x":3, "y":1.15}, + {"label":"4$", "x":4, "y":1.15}, + {"label":"5%", "x":5, "y":1.15}, + {"label":"6^", "x":6, "y":1.15}, + {"label":"7&", "x":7, "y":1.15}, + {"label":"8*", "x":8, "y":1.15}, + {"label":"9(", "x":9, "y":1.15}, + {"label":"0)", "x":10, "y":1.15}, + {"label":"-_", "x":11, "y":1.15}, + {"label":"=+", "x":12, "y":1.15}, + {"label":"Backspace", "x":13, "y":1.15, "w":1.5}, + {"label":"Delete", "x":15.25, "y":1.15}, + {"label":"=+", "x":16.25, "y":1.15}, + {"label":"/", "x":17.25, "y":1.15}, + {"label":"*", "x":18.25, "y":1.15}, + + {"label":"Tab", "x":0, "y":2.15, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.15}, + {"label":"W", "x":2.5, "y":2.15}, + {"label":"E", "x":3.5, "y":2.15}, + {"label":"R", "x":4.5, "y":2.15}, + {"label":"T", "x":5.5, "y":2.15}, + {"label":"Y", "x":6.5, "y":2.15}, + {"label":"U", "x":7.5, "y":2.15}, + {"label":"I", "x":8.5, "y":2.15}, + {"label":"O", "x":9.5, "y":2.15}, + {"label":"P", "x":10.5, "y":2.15}, + {"label":"[{", "x":11.5, "y":2.15}, + {"label":"]}", "x":12.5, "y":2.15}, + {"label":"7", "x":15.25, "y":2.15}, + {"label":"8", "x":16.25, "y":2.15}, + {"label":"9", "x":17.25, "y":2.15}, + {"label":"+", "x":18.25, "y":2.15}, + + {"label":"Ctrl", "x":0, "y":3.15, "w":1.75}, + {"label":"A", "x":1.75, "y":3.15}, + {"label":"S", "x":2.75, "y":3.15}, + {"label":"D", "x":3.75, "y":3.15}, + {"label":"F", "x":4.75, "y":3.15}, + {"label":"G", "x":5.75, "y":3.15}, + {"label":"H", "x":6.75, "y":3.15}, + {"label":"J", "x":7.75, "y":3.15}, + {"label":"K", "x":8.75, "y":3.15}, + {"label":"L", "x":9.75, "y":3.15}, + {"label":";:", "x":10.75, "y":3.15}, + {"label":"'\"", "x":11.75, "y":3.15}, + {"label":"Enter", "x":13.5, "y":2.15, "h":2}, + {"label":"4", "x":15.25, "y":3.15}, + {"label":"5", "x":16.25, "y":3.15}, + {"label":"6", "x":17.25, "y":3.15}, + {"label":"-", "x":18.25, "y":3.15}, + + {"label":"Shift", "x":0, "y":4.15, "w":2.25}, + {"label":"Z", "x":2.25, "y":4.15}, + {"label":"X", "x":3.25, "y":4.15}, + {"label":"C", "x":4.25, "y":4.15}, + {"label":"V", "x":5.25, "y":4.15}, + {"label":"B", "x":6.25, "y":4.15}, + {"label":"N", "x":7.25, "y":4.15}, + {"label":"M", "x":8.25, "y":4.15}, + {"label":",<", "x":9.25, "y":4.15}, + {"label":".>", "x":10.25, "y":4.15}, + {"label":"/?", "x":11.25, "y":4.15}, + {"label":"MO(1)", "x":12.25, "y":4.15, "w":2.25}, + {"label":"1", "x":15.25, "y":4.15}, + {"label":"2", "x":16.25, "y":4.15}, + {"label":"3", "x":17.25, "y":4.15}, + + {"label":"Caps Lock", "x":0, "y":5.15}, + {"label":"GUI", "x":1, "y":5.15}, + {"label":"Alt", "x":2, "y":5.15, "w":1.75}, + {"label":"`~", "x":3.75, "y":5.15}, + {"label":"Space", "x":4.75, "y":5.15, "w":4.75}, + {"label":"\\|", "x":9.5, "y":5.15}, + {"label":"Left", "x":10.5, "y":5.15}, + {"label":"Right", "x":11.5, "y":5.15}, + {"label":"Down", "x":12.5, "y":5.15}, + {"label":"Up", "x":13.5, "y":5.15}, + {"label":"0", "x":15.25, "y":5.15, "w":2}, + {"label":".", "x":17.25, "y":5.15}, + {"label":"Enter", "x":18.25, "y":4.15, "h":2} ] } } diff --git a/keyboards/kb_elmo/m0116_usb/rules.mk b/keyboards/kb_elmo/m0116_usb/rules.mk index e5b427e5a521..3eaa2d82c1fe 100644 --- a/keyboards/kb_elmo/m0116_usb/rules.mk +++ b/keyboards/kb_elmo/m0116_usb/rules.mk @@ -5,21 +5,18 @@ MCU = atmega32a F_CPU = 16000000 # Bootloader selection -BOOTLOADER = USBasp +BOOTLOADER = usbasploader # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/kb_elmo/noah_avr/info.json b/keyboards/kb_elmo/noah_avr/info.json index 8560d4b867b0..6bc9b32b07a0 100644 --- a/keyboards/kb_elmo/noah_avr/info.json +++ b/keyboards/kb_elmo/noah_avr/info.json @@ -2,8 +2,11 @@ "keyboard_name": "Noah AVR", "url": "https://github.com/kb-elmo/noah_avr", "maintainer": "kb-elmo", - "width": 16, - "height": 5, + "layout_aliases": { + "LAYOUT_ansi": "LAYOUT_65_ansi_blocker", + "LAYOUT_ansi_splitbs": "LAYOUT_65_ansi_blocker_split_bs", + "LAYOUT_iso": "LAYOUT_65_iso_blocker" + }, "layouts": { "LAYOUT_all": { "layout": [ @@ -23,6 +26,7 @@ {"x":13, "y":0}, {"x":14, "y":0}, {"x":15, "y":0}, + {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, @@ -38,6 +42,7 @@ {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, + {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, @@ -52,6 +57,7 @@ {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, + {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, @@ -67,6 +73,7 @@ {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, + {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, @@ -78,7 +85,7 @@ {"x":15, "y":4} ] }, - "LAYOUT_ansi": { + "LAYOUT_65_ansi_blocker": { "layout": [ {"x":0, "y":0}, {"x":1, "y":0}, @@ -95,6 +102,7 @@ {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":15, "y":0}, + {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, @@ -110,6 +118,7 @@ {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, + {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, @@ -124,6 +133,7 @@ {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, + {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, @@ -138,6 +148,7 @@ {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, + {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, @@ -149,7 +160,7 @@ {"x":15, "y":4} ] }, - "LAYOUT_ansi_splitbs": { + "LAYOUT_65_ansi_blocker_split_bs": { "layout": [ {"x":0, "y":0}, {"x":1, "y":0}, @@ -167,6 +178,7 @@ {"x":13, "y":0}, {"x":14, "y":0}, {"x":15, "y":0}, + {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, @@ -182,6 +194,7 @@ {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, + {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, @@ -196,6 +209,7 @@ {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, + {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, @@ -210,6 +224,7 @@ {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, + {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, @@ -221,7 +236,83 @@ {"x":15, "y":4} ] }, - "LAYOUT_iso": { + "LAYOUT_65_iso_blocker": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":15, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":15, "y":1}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + {"x":13.75, "y":1, "w":1.25, "h":2}, + {"x":15, "y":2}, + + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + }, + "LAYOUT_65_iso_blocker_split_bs": { "layout": [ {"x":0, "y":0}, {"x":1, "y":0}, @@ -239,6 +330,7 @@ {"x":13, "y":0}, {"x":14, "y":0}, {"x":15, "y":0}, + {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, @@ -252,8 +344,8 @@ {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, - {"x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, + {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, @@ -266,9 +358,12 @@ {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, - {"x":12.75, "y":2, "w":2.25}, + {"x":12.75, "y":2}, + {"x":13.75, "y":1, "w":1.25, "h":2}, {"x":15, "y":2}, - {"x":0, "y":3, "w":2.25}, + + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, @@ -282,6 +377,7 @@ {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, + {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, diff --git a/keyboards/kb_elmo/noah_avr/keymaps/default/keymap.c b/keyboards/kb_elmo/noah_avr/keymaps/default/keymap.c index 6dae99e2b0d1..1c4dde03bb39 100644 --- a/keyboards/kb_elmo/noah_avr/keymaps/default/keymap.c +++ b/keyboards/kb_elmo/noah_avr/keymaps/default/keymap.c @@ -16,14 +16,14 @@ #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_ansi( + [0] = LAYOUT_65_ansi_blocker( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_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_HOME, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT ), - [1] = LAYOUT_ansi( + [1] = LAYOUT_65_ansi_blocker( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, diff --git a/keyboards/kb_elmo/noah_avr/noah_avr.h b/keyboards/kb_elmo/noah_avr/noah_avr.h index a816a30d0f3b..66a85afa61af 100644 --- a/keyboards/kb_elmo/noah_avr/noah_avr.h +++ b/keyboards/kb_elmo/noah_avr/noah_avr.h @@ -18,68 +18,91 @@ #include "quantum.h" -#define ____ KC_NO +#define ___ KC_NO -/* This is a shortcut to help you visually see your layout. - * - * The first section contains all of the arguments representing the physical - * layout of the board and position of the keys. - * - * The second converts the arguments into a two-dimensional array which - * represents the switch matrix. +/* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───────┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │0E │0F │ │0D │ 2u Backspace + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ └─┬─────┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │1F │ │ │ + * 2.25u ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ ┌──┴┐2D │ ISO Enter + * LShift │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2D │2F │ │1D │ │ + * ┌────────┐ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ └───┴────┘ + * │30 │ │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │3F │ + * └────────┘ ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │40 │41 │42 │46 │4B │4C │ │4D │4E │4F │ + * └────┴────┴────┴────────────────────────┴────┴────┴─┴───┴───┴───┘ + * ┌─────┬───┬─────┬───────────────────────────┬─────┐ + * │40 │41 │42 │46 │4C │ Tsangan + * └─────┴───┴─────┴───────────────────────────┴─────┘ */ + #define LAYOUT_all( \ - 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, k115, \ - k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k213, k215, \ - k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k315, \ - k400, k401, k402, k406, 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, k1F, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, k2F, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3F, \ + k40, k41, k42, k46, 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, ___, k2F }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, ___, k3F }, \ + { k40, k41, k42, ___, ___, ___, k46, ___, ___, ___, ___, k4B, k4C, 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, k1D, k1F, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, k2F, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3F, \ + k40, k41, k42, k46, 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, ____, k115 }, \ - { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, ____, k213, ____, k215 }, \ - { k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, ____, k315 }, \ - { k400, k401, k402, ____, ____, ____, k406, ____, ____, ____, ____, k411, k412, k413, k414, k415 } \ + { 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, k1D, ___, k1F }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, ___, k2D, ___, k2F }, \ + { k30, ___, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, ___, k3F }, \ + { k40, k41, k42, ___, ___, ___, k46, ___, ___, ___, ___, k4B, k4C, k4D, k4E, k4F } \ } -#define LAYOUT_ansi( \ - k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k015, \ - k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k115, \ - k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k213, k215, \ - k300, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k315, \ - k400, k401, k402, k406, k411, k412, k413, k414, k415 \ +#define LAYOUT_65_ansi_blocker_split_bs( \ + 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, k2F, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3F, \ + k40, k41, k42, k46, k4B, k4C, k4D, k4E, k4F \ ) { \ - { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, ____, k015 }, \ - { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, ____, k115 }, \ - { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, ____, k213, ____, k215 }, \ - { k300, ____, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, ____, k315 }, \ - { k400, k401, k402, ____, ____, ____, k406, ____, ____, ____, ____, 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, ___, k1F }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, ___, k2D, ___, k2F }, \ + { k30, ___, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, ___, k3F }, \ + { k40, k41, k42, ___, ___, ___, k46, ___, ___, ___, ___, k4B, k4C, k4D, k4E, k4F } \ } -#define LAYOUT_ansi_splitbs( \ - 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, k115, \ - k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k213, k215, \ - k300, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k315, \ - k400, k401, k402, k406, k411, k412, k413, k414, k415 \ +#define LAYOUT_65_iso_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, k1F, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k1D, k2D, k2F, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3F, \ + k40, k41, k42, k46, 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, ____, k115 }, \ - { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, ____, k213, ____, k215 }, \ - { k300, ____, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, ____, k315 }, \ - { k400, k401, k402, ____, ____, ____, k406, ____, ____, ____, ____, k411, k412, k413, k414, k415 } \ + { 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, k1D, ___, k1F }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, ___, k2D, ___, k2F }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, ___, k3F }, \ + { k40, k41, k42, ___, ___, ___, k46, ___, ___, ___, ___, k4B, k4C, k4D, k4E, k4F } \ } -#define LAYOUT_iso( \ - k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k015, \ - k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k115, \ - k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k113, k213, k215, \ - k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k315, \ - k400, k401, k402, k406, k411, k412, k413, k414, k415 \ +#define LAYOUT_65_iso_blocker_split_bs( \ + 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, k2F, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3F, \ + k40, k41, k42, k46, k4B, k4C, k4D, k4E, k4F \ ) { \ - { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, ____, k015 }, \ - { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, ____, k115 }, \ - { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, ____, k213, ____, k215 }, \ - { k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, ____, k315 }, \ - { k400, k401, k402, ____, ____, ____, k406, ____, ____, ____, ____, 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, ___, k1F }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, ___, k2D, ___, k2F }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, ___, k3F }, \ + { k40, k41, k42, ___, ___, ___, k46, ___, ___, ___, ___, k4B, k4C, k4D, k4E, k4F } \ } diff --git a/keyboards/kb_elmo/noah_avr/rules.mk b/keyboards/kb_elmo/noah_avr/rules.mk index 38ce53e3096f..26189572955e 100644 --- a/keyboards/kb_elmo/noah_avr/rules.mk +++ b/keyboards/kb_elmo/noah_avr/rules.mk @@ -7,16 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 + +LAYOUTS = 65_ansi_blocker 65_ansi_blocker_split_bs 65_iso_blocker 65_iso_blocker_split_bs diff --git a/keyboards/kb_elmo/qez/config.h b/keyboards/kb_elmo/qez/config.h new file mode 100644 index 000000000000..055ebe2a4b66 --- /dev/null +++ b/keyboards/kb_elmo/qez/config.h @@ -0,0 +1,44 @@ +/* +Copyright 2021 kb-elmo + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xA68C +#define PRODUCT_ID 0x675F +#define DEVICE_VER 0x0001 +#define MANUFACTURER kb_elmo +#define PRODUCT QEZ + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 10 + +/* Keyboard Matrix Assignments */ +#define MATRIX_ROW_PINS { C6, C4, B1, B0 } +#define MATRIX_COL_PINS { C7, B7, B6, B5, B4, B3, D6, D5, D4, D3 } + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter */ +#define DEBOUNCE 5 + +/* Indicator LEDs */ +#define LED_CAPS_LOCK_PIN C5 diff --git a/keyboards/kb_elmo/qez/info.json b/keyboards/kb_elmo/qez/info.json new file mode 100644 index 000000000000..a7cdd219d477 --- /dev/null +++ b/keyboards/kb_elmo/qez/info.json @@ -0,0 +1,126 @@ +{ + "keyboard_name": "qez", + "url": "", + "maintainer": "kb-elmo", + "layouts": { + "LAYOUT_split_space": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0, "w":1.25}, + {"x":0, "y":1, "w":1.25}, + {"x":1.25, "y":1}, + {"x":2.25, "y":1}, + {"x":3.25, "y":1}, + {"x":4.25, "y":1}, + {"x":5.25, "y":1}, + {"x":6.25, "y":1}, + {"x":7.25, "y":1}, + {"x":8.25, "y":1}, + {"x":9.25, "y":1}, + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2, "w":1.5}, + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3, "w":2.25}, + {"x":5.25, "y":3, "w":2}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3} + ] + }, + "LAYOUT_triple_space": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0, "w":1.25}, + {"x":0, "y":1, "w":1.25}, + {"x":1.25, "y":1}, + {"x":2.25, "y":1}, + {"x":3.25, "y":1}, + {"x":4.25, "y":1}, + {"x":5.25, "y":1}, + {"x":6.25, "y":1}, + {"x":7.25, "y":1}, + {"x":8.25, "y":1}, + {"x":9.25, "y":1}, + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2, "w":1.5}, + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3, "w":2.5}, + {"x":4.5, "y":3, "w":1.5}, + {"x":6, "y":3, "w":2.25}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3} + ] + }, + "LAYOUT_full_space": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0, "w":1.25}, + {"x":0, "y":1, "w":1.25}, + {"x":1.25, "y":1}, + {"x":2.25, "y":1}, + {"x":3.25, "y":1}, + {"x":4.25, "y":1}, + {"x":5.25, "y":1}, + {"x":6.25, "y":1}, + {"x":7.25, "y":1}, + {"x":8.25, "y":1}, + {"x":9.25, "y":1}, + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2, "w":1.5}, + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3, "w":6.25}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3} + ] + } + } +} diff --git a/keyboards/kb_elmo/qez/keymaps/default/keymap.c b/keyboards/kb_elmo/qez/keymaps/default/keymap.c new file mode 100644 index 000000000000..d3198af01b5e --- /dev/null +++ b/keyboards/kb_elmo/qez/keymaps/default/keymap.c @@ -0,0 +1,37 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_split_space( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, + LT(1,KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LT(2,KC_DOT), + KC_LCTL, KC_LGUI, KC_LALT, LSFT_T(KC_SPC), KC_BSPC, KC_RALT, MO(1), MO(2) + ), + [1] = LAYOUT_split_space( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_TAB, KC_ESC, KC_MINS, KC_EQL, KC_TRNS, KC_SCLN, KC_QUOT, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SLSH, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_split_space( + KC_HOME, KC_UP, KC_END, KC_PGUP, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, + KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/kb_elmo/qez/keymaps/via/keymap.c b/keyboards/kb_elmo/qez/keymaps/via/keymap.c new file mode 100644 index 000000000000..0866c9950800 --- /dev/null +++ b/keyboards/kb_elmo/qez/keymaps/via/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_split_space( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, + LT(1,KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LT(2,KC_DOT), + KC_LCTL, KC_LGUI, KC_LALT, LSFT_T(KC_SPC), KC_BSPC, KC_RALT, MO(1), MO(2) + ), + [1] = LAYOUT_split_space( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_TAB, KC_ESC, KC_MINS, KC_EQL, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SLSH, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_split_space( + KC_HOME, KC_UP, KC_END, KC_PGUP, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, + KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_split_space( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/kb_elmo/qez/keymaps/via/rules.mk b/keyboards/kb_elmo/qez/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/kb_elmo/qez/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/kb_elmo/qez/qez.c b/keyboards/kb_elmo/qez/qez.c new file mode 100644 index 000000000000..68808fad8ecb --- /dev/null +++ b/keyboards/kb_elmo/qez/qez.c @@ -0,0 +1,17 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "qez.h" diff --git a/keyboards/kb_elmo/qez/qez.h b/keyboards/kb_elmo/qez/qez.h new file mode 100644 index 000000000000..0a3e2c0a7ec6 --- /dev/null +++ b/keyboards/kb_elmo/qez/qez.h @@ -0,0 +1,57 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ___ KC_NO + +#define LAYOUT_split_space( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, \ + k20, k22, k23, k24, k25, k26, k27, k28, k29, \ + k21, k31, k32, k33, 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 }, \ + { ___, k31, k32, k33, ___, ___, k36, k37, k38, k39 } \ +} + +#define LAYOUT_triple_space( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, \ + k20, k22, k23, k24, k25, k26, k27, k28, k29, \ + k21, k31, k33, k35, k36, 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 }, \ + { ___, k31, ___, k33, ___, k35, k36, ___, k38, k39 } \ +} + +#define LAYOUT_full_space( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, \ + k20, k22, k23, k24, k25, k26, k27, k28, k29, \ + k21, k31, k35, 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 }, \ + { ___, k31, ___, ___, ___, k35, ___, ___, k38, k39 } \ +} diff --git a/keyboards/kb_elmo/qez/readme.md b/keyboards/kb_elmo/qez/readme.md new file mode 100644 index 000000000000..5deb4044a1a5 --- /dev/null +++ b/keyboards/kb_elmo/qez/readme.md @@ -0,0 +1,24 @@ +# QEZ + +![qez](https://i.imgur.com/x00N9f3l.jpg) + +A seamless gasketmounted QAZ-like 40% keyboard + +* Keyboard Maintainer: [kb-elmo](https://github.com/kb-elmo) +* Hardware Supported: QEZ rev.1 PCB +* Hardware Availability: [Open source project](https://github.com/kb-elmo/QEZ) + +Make example for this keyboard (after setting up your build environment): + + make kb_elmo/qez:default + +Flashing example for this keyboard: + + make kb_elmo/qez: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 the top left key and plug in the keyboard +* **Physical reset button**: Briefly press the button labeled "RESET" on the back of the PCB \ No newline at end of file diff --git a/keyboards/kb_elmo/qez/rules.mk b/keyboards/kb_elmo/qez/rules.mk new file mode 100644 index 000000000000..6ce22f2cfd85 --- /dev/null +++ b/keyboards/kb_elmo/qez/rules.mk @@ -0,0 +1,19 @@ +# MCU name +MCU = atmega32u2 + +# 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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/kb_elmo/sesame/info.json b/keyboards/kb_elmo/sesame/info.json index b738a376f272..639c8b4d7c44 100644 --- a/keyboards/kb_elmo/sesame/info.json +++ b/keyboards/kb_elmo/sesame/info.json @@ -2,8 +2,6 @@ "keyboard_name": "sesame", "url": "https://github.com/kb-elmo/sesame", "maintainer": "kb-elmo", - "width": 17.75, - "height": 5, "layouts": { "LAYOUT_alice": { "layout": [ diff --git a/keyboards/kb_elmo/sesame/readme.md b/keyboards/kb_elmo/sesame/readme.md index 9fa7f3541c7c..c0211cfde4cd 100644 --- a/keyboards/kb_elmo/sesame/readme.md +++ b/keyboards/kb_elmo/sesame/readme.md @@ -1,15 +1,24 @@ # Sesame -![sesame](https://i.imgur.com/IdudbWjl.jpg) +![sesame](https://i.imgur.com/DNQMl8hl.jpg) Alice layout THT keyboard * Keyboard Maintainer: [kb-elmo](https://github.com/kb-elmo) -* Hardware Supported: Sesame -* Hardware Availability: [Project is open source](https://github.com/kb-elmo/sesame) +* Hardware Supported: Sesame PCB rev.1 and rev.2 +* Hardware Availability: [Open source project](https://github.com/kb-elmo/sesame) Make example for this keyboard (after setting up your build environment): make kb_elmo/sesame:default +Flashing example for this keyboard: + + make kb_elmo/sesame: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 the top left key and plug in the keyboard +* **Physical reset button**: Hold down the button labeled "BOOT" and briefly press the button labeled "RESET" on the back of the PCB \ No newline at end of file diff --git a/keyboards/kb_elmo/sesame/rules.mk b/keyboards/kb_elmo/sesame/rules.mk index 0198f303885e..0698f6bafc2b 100644 --- a/keyboards/kb_elmo/sesame/rules.mk +++ b/keyboards/kb_elmo/sesame/rules.mk @@ -5,23 +5,20 @@ MCU = atmega32a F_CPU = 16000000 # Bootloader selection -BOOTLOADER = USBasp +BOOTLOADER = usbasploader # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 LAYOUTS = alice alice_split_bs diff --git a/keyboards/kb_elmo/twelvekey/info.json b/keyboards/kb_elmo/twelvekey/info.json index 814123147d63..c44d88ce45dd 100644 --- a/keyboards/kb_elmo/twelvekey/info.json +++ b/keyboards/kb_elmo/twelvekey/info.json @@ -2,8 +2,6 @@ "keyboard_name": "twelvekey", "url": "https://github.com/kb-elmo/twelvekey", "maintainer": "kb-elmo", - "width": 4, - "height": 3, "layouts": { "LAYOUT_ortho_3x4": { "layout": [{"x":0, "y":0}, diff --git a/keyboards/kb_elmo/twelvekey/readme.md b/keyboards/kb_elmo/twelvekey/readme.md index db240637837d..ab256d047035 100644 --- a/keyboards/kb_elmo/twelvekey/readme.md +++ b/keyboards/kb_elmo/twelvekey/readme.md @@ -1,6 +1,6 @@ # Twelvekey -![twelvekey](https://i.imgur.com/xBQIvpml.png) +![twelvekey](https://i.imgur.com/59sSO8kl.jpg) Simple 12-key macropad @@ -17,3 +17,8 @@ Flashing example for this keyboard: make kb_elmo/twelvekey: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 the top left key and plug in the keyboard +* **Physical reset button**: Hold down the button labeled "BOOT" and briefly press the button labeled "RESET" on the back of the PCB diff --git a/keyboards/kb_elmo/twelvekey/rules.mk b/keyboards/kb_elmo/twelvekey/rules.mk index d099a106845b..0ec192d1a3ea 100644 --- a/keyboards/kb_elmo/twelvekey/rules.mk +++ b/keyboards/kb_elmo/twelvekey/rules.mk @@ -5,21 +5,18 @@ MCU = atmega328p F_CPU = 16000000 # Bootloader selection -BOOTLOADER = USBasp +BOOTLOADER = usbasploader # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/kb_elmo/vertex/config.h b/keyboards/kb_elmo/vertex/config.h new file mode 100644 index 000000000000..7fca07280e84 --- /dev/null +++ b/keyboards/kb_elmo/vertex/config.h @@ -0,0 +1,46 @@ +/* +Copyright 2021 kb-elmo + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xA68C +#define PRODUCT_ID 0x6B47 +#define DEVICE_VER 0x0001 +#define MANUFACTURER kb_elmo +#define PRODUCT Vertex + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + +/* Keyboard Matrix Assignments */ +#define MATRIX_ROW_PINS { D2, D4, B7, C6 } +#define MATRIX_COL_PINS { C4, C7, D3, D5, B6, D6, B5, B0, B4, B1, B3, B2 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/kb_elmo/vertex/info.json b/keyboards/kb_elmo/vertex/info.json new file mode 100644 index 000000000000..a7bea4077243 --- /dev/null +++ b/keyboards/kb_elmo/vertex/info.json @@ -0,0 +1,205 @@ +{ + "keyboard_name": "vertex", + "url": "", + "maintainer": "kb-elmo", + "layouts": { + "LAYOUT_8keys": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":0, "y":1, "w":1.25}, + {"x":1.25, "y":1}, + {"x":2.25, "y":1}, + {"x":3.25, "y":1}, + {"x":4.25, "y":1}, + {"x":5.25, "y":1}, + {"x":6.25, "y":1}, + {"x":7.25, "y":1}, + {"x":8.25, "y":1}, + {"x":9.25, "y":1}, + {"x":10.25, "y":1}, + {"x":11.25, "y":1, "w":1.75}, + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2, "w":1.25}, + {"x":0, "y":3, "w":1.5}, + {"x":1.5, "y":3, "w":1.25}, + {"x":2.75, "y":3, "w":1.25}, + {"x":4, "y":3, "w":2.5}, + {"x":6.5, "y":3, "w":2.5}, + {"x":9, "y":3, "w":1.25}, + {"x":10.25, "y":3, "w":1.25}, + {"x":11.5, "y":3, "w":1.5} + ] + }, + "LAYOUT_8keys_full_bs": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0, "w":2}, + {"x":0, "y":1, "w":1.25}, + {"x":1.25, "y":1}, + {"x":2.25, "y":1}, + {"x":3.25, "y":1}, + {"x":4.25, "y":1}, + {"x":5.25, "y":1}, + {"x":6.25, "y":1}, + {"x":7.25, "y":1}, + {"x":8.25, "y":1}, + {"x":9.25, "y":1}, + {"x":10.25, "y":1}, + {"x":11.25, "y":1, "w":1.75}, + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2, "w":1.25}, + {"x":0, "y":3, "w":1.5}, + {"x":1.5, "y":3, "w":1.25}, + {"x":2.75, "y":3, "w":1.25}, + {"x":4, "y":3, "w":2.5}, + {"x":6.5, "y":3, "w":2.5}, + {"x":9, "y":3, "w":1.25}, + {"x":10.25, "y":3, "w":1.25}, + {"x":11.5, "y":3, "w":1.5} + ] + }, + "LAYOUT_10keys": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":0, "y":1, "w":1.25}, + {"x":1.25, "y":1}, + {"x":2.25, "y":1}, + {"x":3.25, "y":1}, + {"x":4.25, "y":1}, + {"x":5.25, "y":1}, + {"x":6.25, "y":1}, + {"x":7.25, "y":1}, + {"x":8.25, "y":1}, + {"x":9.25, "y":1}, + {"x":10.25, "y":1}, + {"x":11.25, "y":1, "w":1.75}, + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2, "w":1.25}, + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3, "w":2.5}, + {"x":6.5, "y":3, "w":2.5}, + {"x":9, "y":3}, + {"x":10, "y":3}, + {"x":11, "y":3}, + {"x":12, "y":3} + ] + }, + "LAYOUT_10keys_full_bs": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0, "w":2}, + {"x":0, "y":1, "w":1.25}, + {"x":1.25, "y":1}, + {"x":2.25, "y":1}, + {"x":3.25, "y":1}, + {"x":4.25, "y":1}, + {"x":5.25, "y":1}, + {"x":6.25, "y":1}, + {"x":7.25, "y":1}, + {"x":8.25, "y":1}, + {"x":9.25, "y":1}, + {"x":10.25, "y":1}, + {"x":11.25, "y":1, "w":1.75}, + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2, "w":1.25}, + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3, "w":2.5}, + {"x":6.5, "y":3, "w":2.5}, + {"x":9, "y":3}, + {"x":10, "y":3}, + {"x":11, "y":3}, + {"x":12, "y":3} + ] + } + } +} diff --git a/keyboards/kb_elmo/vertex/keymaps/default/keymap.c b/keyboards/kb_elmo/vertex/keymaps/default/keymap.c new file mode 100644 index 000000000000..7b714fd3acb8 --- /dev/null +++ b/keyboards/kb_elmo/vertex/keymaps/default/keymap.c @@ -0,0 +1,37 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_8keys( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(2), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RALT, KC_RGUI, KC_RCTL + ), + [1] = LAYOUT_8keys( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_QUOT, KC_BSLS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_MPRV, KC_MNXT, KC_MPLY, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_8keys( + KC_GRV, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_TRNS, KC_PSCR, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/kb_elmo/vertex/keymaps/via/keymap.c b/keyboards/kb_elmo/vertex/keymaps/via/keymap.c new file mode 100644 index 000000000000..7cdac2623944 --- /dev/null +++ b/keyboards/kb_elmo/vertex/keymaps/via/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_10keys( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(2), + KC_LCTL, KC_LGUI, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RALT, KC_RGUI, KC_RGUI, KC_RCTL + ), + [1] = LAYOUT_10keys( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_QUOT, KC_BSLS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_MPRV, KC_MNXT, KC_MPLY, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_10keys( + KC_GRV, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_TRNS, KC_PSCR, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_10keys( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/kb_elmo/vertex/keymaps/via/rules.mk b/keyboards/kb_elmo/vertex/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/kb_elmo/vertex/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/kb_elmo/vertex/readme.md b/keyboards/kb_elmo/vertex/readme.md new file mode 100644 index 000000000000..0710e480704c --- /dev/null +++ b/keyboards/kb_elmo/vertex/readme.md @@ -0,0 +1,25 @@ +# Vertex + +![vertex](https://i.imgur.com/drRZO54l.jpg) + +3D printed Vortex 40% inspired screwless exterior, top-mount keyboard + +* Keyboard Maintainer: [kb-elmo](https://github.com/kb-elmo) +* Hardware Supported: Vertex rev.1 +* Hardware Availability: [Open source project](https://github.com/kb-elmo/Vertex) + +Make example for this keyboard (after setting up your build environment): + + make kb_elmo/vertex:default + +Flashing example for this keyboard: + + make kb_elmo/vertex: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 the top left key and plug in the keyboard +* **Physical reset button**: Briefly press the button labeled "Reset" on the back of the PCB +* **Keycode in layout**: Press the key mapped to `RESET` if it is available diff --git a/keyboards/kb_elmo/vertex/rules.mk b/keyboards/kb_elmo/vertex/rules.mk new file mode 100644 index 000000000000..1c4440de9eb4 --- /dev/null +++ b/keyboards/kb_elmo/vertex/rules.mk @@ -0,0 +1,19 @@ +# MCU name +MCU = atmega32u2 + +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/kb_elmo/vertex/vertex.c b/keyboards/kb_elmo/vertex/vertex.c new file mode 100644 index 000000000000..26467196f133 --- /dev/null +++ b/keyboards/kb_elmo/vertex/vertex.c @@ -0,0 +1,17 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "vertex.h" diff --git a/keyboards/kb_elmo/vertex/vertex.h b/keyboards/kb_elmo/vertex/vertex.h new file mode 100644 index 000000000000..89728fa3bcc4 --- /dev/null +++ b/keyboards/kb_elmo/vertex/vertex.h @@ -0,0 +1,69 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ____ KC_NO + +#define LAYOUT_8keys( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k311, \ + 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, k302, k303, k304, k306, k307, k308, k310 \ +) { \ + { 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, ____, k302, k303, k304, ____, k306, k307, k308, ____, k310, k311 } \ +} + +#define LAYOUT_8keys_full_bs( \ + 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, k302, k303, k304, k306, k307, k308, k310 \ +) { \ + { 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, ____, k302, k303, k304, ____, k306, k307, k308, ____, k310, ____ } \ +} + +#define LAYOUT_10keys( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k311, \ + 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, k306, k307, k308, k309, k310 \ +) { \ + { 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, ____, k306, k307, k308, k309, k310, k311 } \ +} + +#define LAYOUT_10keys_full_bs( \ + 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, k306, k307, k308, k309, k310 \ +) { \ + { 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, ____, k306, k307, k308, k309, k310, ____ } \ +} diff --git a/keyboards/kbdclack/kaishi65/config.h b/keyboards/kbdclack/kaishi65/config.h index dc9d1d51f0ba..390ef6498187 100644 --- a/keyboards/kbdclack/kaishi65/config.h +++ b/keyboards/kbdclack/kaishi65/config.h @@ -121,59 +121,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -194,26 +141,6 @@ along with this program. If not, see . #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/kbdclack/kaishi65/info.json b/keyboards/kbdclack/kaishi65/info.json index 64ce89dd5a2f..f1e30b7e5eaa 100644 --- a/keyboards/kbdclack/kaishi65/info.json +++ b/keyboards/kbdclack/kaishi65/info.json @@ -2,8 +2,6 @@ "keyboard_name": "kaishi65", "url": "https://github.com/powerlemming/KBDClack", "maintainer": "KBDClack", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_ansi": { "layout": [{"label":"esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Home", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Del", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Pg up", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"up", "x":14, "y":3}, {"label":"Pg dn", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4}, {"label":"Fn", "x":11, "y":4}, {"label":"Ctrl", "x":12, "y":4}, {"label":"left", "x":13, "y":4}, {"label":"down", "x":14, "y":4}, {"label":"right", "x":15, "y":4}] diff --git a/keyboards/kbdclack/kaishi65/rules.mk b/keyboards/kbdclack/kaishi65/rules.mk index bcd350e89f90..e5e7017bb638 100644 --- a/keyboards/kbdclack/kaishi65/rules.mk +++ b/keyboards/kbdclack/kaishi65/rules.mk @@ -2,31 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = 65_ansi diff --git a/keyboards/kbdfans/bella/rgb/config.h b/keyboards/kbdfans/bella/rgb/config.h index f56049690bfc..c4124111335c 100644 --- a/keyboards/kbdfans/bella/rgb/config.h +++ b/keyboards/kbdfans/bella/rgb/config.h @@ -37,21 +37,64 @@ /* disable these deprecated features by default */ #ifdef RGB_MATRIX_ENABLE #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended #define RGB_MATRIX_KEYPRESSES #define RGB_MATRIX_FRAMEBUFFER_EFFECTS #define RGB_MATRIX_LED_PROCESS_LIMIT 4 #define RGB_MATRIX_LED_FLUSH_LIMIT 26 -#define DISABLE_RGB_MATRIX_SPLASH -#define DISABLE_RGB_MATRIX_MULTISPLASH -#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// # define ENABLE_RGB_MATRIX_SPLASH +// # define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH //#define RGB_MATRIX_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/info.json b/keyboards/kbdfans/bella/rgb/info.json index dc887739a914..2db8efb3f8c8 100644 --- a/keyboards/kbdfans/bella/rgb/info.json +++ b/keyboards/kbdfans/bella/rgb/info.json @@ -2,8 +2,6 @@ "keyboard_name": "BELLA RGB ANSI", "url": "", "maintainer": "moyi4681", - "width": 16.25, - "height": 6.25, "layouts": { "LAYOUT": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"@", "x":2, "y":1}, {"label":"#", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"label":"Backspace", "x":13, "y":1, "w":2}, {"label":"Home", "x":15.25, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"Page Up", "x":15.25, "y":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"\"", "x":11.75, "y":3}, {"label":"Enter", "x":12.75, "y":3, "w":2.25}, {"label":"Page Down", "x":15.25, "y":3}, {"label":"Shift", "x":0, "y":4, "w":2.25}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"label":"\u2191", "x":14.25, "y":4.25}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5, "w":1.5}, {"label":"Fn", "x":11.5, "y":5, "w":1.5}, {"label":"\u2190", "x":13.25, "y":5.25}, {"label":"\u2193", "x":14.25, "y":5.25}, {"label":"\u2192", "x":15.25, "y":5.25}] diff --git a/keyboards/kbdfans/bella/rgb/rgb.c b/keyboards/kbdfans/bella/rgb/rgb.c index e197d9b5381b..4353cae1bed4 100644 --- a/keyboards/kbdfans/bella/rgb/rgb.c +++ b/keyboards/kbdfans/bella/rgb/rgb.c @@ -15,7 +15,7 @@ */ #include "rgb.h" #ifdef RGB_MATRIX_ENABLE -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { {0, CS18_SW1, CS17_SW1, CS16_SW1}, /* RGB6 */ {0, CS18_SW3, CS17_SW3, CS16_SW3}, /* RGB32 */ {0, CS18_SW4, CS17_SW4, CS16_SW4}, /* RGB45 */ diff --git a/keyboards/kbdfans/bella/rgb/rules.mk b/keyboards/kbdfans/bella/rgb/rules.mk index bba2c1a6cdf8..75c6def650b8 100644 --- a/keyboards/kbdfans/bella/rgb/rules.mk +++ b/keyboards/kbdfans/bella/rgb/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output RGB_MATRIX_ENABLE = yes RGB_MATRIX_DRIVER = IS31FL3741 diff --git a/keyboards/kbdfans/bella/rgb_iso/config.h b/keyboards/kbdfans/bella/rgb_iso/config.h index fc7a9d7c0898..ca43d80708b2 100644 --- a/keyboards/kbdfans/bella/rgb_iso/config.h +++ b/keyboards/kbdfans/bella/rgb_iso/config.h @@ -37,21 +37,64 @@ /* disable these deprecated features by default */ #ifdef RGB_MATRIX_ENABLE #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended #define RGB_MATRIX_KEYPRESSES #define RGB_MATRIX_FRAMEBUFFER_EFFECTS #define RGB_MATRIX_LED_PROCESS_LIMIT 4 #define RGB_MATRIX_LED_FLUSH_LIMIT 26 -#define DISABLE_RGB_MATRIX_SPLASH -#define DISABLE_RGB_MATRIX_MULTISPLASH -#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// # define ENABLE_RGB_MATRIX_SPLASH +// # define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH //#define RGB_MATRIX_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/bella/rgb_iso/info.json b/keyboards/kbdfans/bella/rgb_iso/info.json index 3979cbd0041f..bca3e220ce41 100644 --- a/keyboards/kbdfans/bella/rgb_iso/info.json +++ b/keyboards/kbdfans/bella/rgb_iso/info.json @@ -2,8 +2,6 @@ "keyboard_name": "BELLA RGB ISO", "url": "", "maintainer": "moyi4681", - "width": 16.25, - "height": 6.25, "layouts": { "LAYOUT": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"Page Up", "x":15.25, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"@", "x":2, "y":1}, {"label":"#", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"label":"Backspace", "x":13, "y":1, "w":2}, {"label":"Insert", "x":15.25, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"Delete", "x":15.25, "y":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"\"", "x":11.75, "y":3}, {"label":"~", "x":12.75, "y":3}, {"label":"Enter", "x":13.75, "y":2, "w":1.25, "h":2}, {"label":"Page Down", "x":15.25, "y":3}, {"label":"Shift", "x":0, "y":4, "w":1.25}, {"label":"|", "x":1.25, "y":4}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"label":"\u2191", "x":14.25, "y":4.25}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5, "w":1.5}, {"label":"Fn", "x":11.5, "y":5, "w":1.5}, {"label":"\u2190", "x":13.25, "y":5.25}, {"label":"\u2193", "x":14.25, "y":5.25}, {"label":"\u2192", "x":15.25, "y":5.25}] diff --git a/keyboards/kbdfans/bella/rgb_iso/rgb_iso.c b/keyboards/kbdfans/bella/rgb_iso/rgb_iso.c index 1a853ac8afe8..072501045ac1 100644 --- a/keyboards/kbdfans/bella/rgb_iso/rgb_iso.c +++ b/keyboards/kbdfans/bella/rgb_iso/rgb_iso.c @@ -15,7 +15,7 @@ */ #include "rgb_iso.h" #ifdef RGB_MATRIX_ENABLE -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { {0, CS18_SW1, CS17_SW1, CS16_SW1}, /* RGB6 */ {0, CS18_SW3, CS17_SW3, CS16_SW3}, /* RGB32 */ {0, CS18_SW4, CS17_SW4, CS16_SW4}, /* RGB45 */ diff --git a/keyboards/kbdfans/bella/rgb_iso/rules.mk b/keyboards/kbdfans/bella/rgb_iso/rules.mk index bba2c1a6cdf8..75c6def650b8 100644 --- a/keyboards/kbdfans/bella/rgb_iso/rules.mk +++ b/keyboards/kbdfans/bella/rgb_iso/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output RGB_MATRIX_ENABLE = yes RGB_MATRIX_DRIVER = IS31FL3741 diff --git a/keyboards/kbdfans/bella/soldered/info.json b/keyboards/kbdfans/bella/soldered/info.json index 5ecd7470b9a3..4a967e26854e 100644 --- a/keyboards/kbdfans/bella/soldered/info.json +++ b/keyboards/kbdfans/bella/soldered/info.json @@ -2,8 +2,6 @@ "keyboard_name": "bella_soldered", "url": "", "maintainer": "kbdfans", - "width": 16.25, - "height": 6.5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/kbdfans/bella/soldered/rules.mk b/keyboards/kbdfans/bella/soldered/rules.mk index b0ed9e41e578..7f1a6c824391 100755 --- a/keyboards/kbdfans/bella/soldered/rules.mk +++ b/keyboards/kbdfans/bella/soldered/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/kbdfans/boop65/rgb/config.h b/keyboards/kbdfans/boop65/rgb/config.h new file mode 100644 index 000000000000..0d67db21101c --- /dev/null +++ b/keyboards/kbdfans/boop65/rgb/config.h @@ -0,0 +1,105 @@ +/* Copyright 2021 Dztech + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4B42 +#define PRODUCT_ID 0x1000 +#define DEVICE_VER 0x0001 +#define MANUFACTURER KBDFANS +#define PRODUCT BOOP65RGB + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 +#define MATRIX_ROW_PINS { F0, F1, F4, E6, C6 } +#define MATRIX_COL_PINS { F7, F6, F5, C7, B0, B1, B2, B3, B4, D7, D6, D4, D5, D3, D2} +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +#define USB_SUSPEND_WAKEUP_DELAY 5000 + +#ifdef RGB_MATRIX_ENABLE +# define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended +# define RGB_MATRIX_KEYPRESSES +# define RGB_MATRIX_LED_PROCESS_LIMIT 4 +# define RGB_MATRIX_LED_FLUSH_LIMIT 26 +# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255 +# define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS // Sets the default brightness value, if none has been set +# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL +# define DRIVER_ADDR_1 0b0110000 +# define DRIVER_COUNT 1 +# define DRIVER_LED_TOTAL 83 +# define DRIVER_INDICATOR_LED_TOTAL 0 +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_FRACTAL +#define ENABLE_RGB_MATRIX_PIXEL_RAIN + +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN + +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH +#endif + +#define VIA_EEPROM_LAYOUT_OPTIONS_SIZE 2 diff --git a/keyboards/kbdfans/boop65/rgb/info.json b/keyboards/kbdfans/boop65/rgb/info.json new file mode 100644 index 000000000000..8cec41109849 --- /dev/null +++ b/keyboards/kbdfans/boop65/rgb/info.json @@ -0,0 +1,10 @@ +{ + "keyboard_name": "boop65_rgb", + "url": "", + "maintainer": "moyi4681", + "layouts": { + "LAYOUT_65_ansi_blocker": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] + } + } +} \ No newline at end of file diff --git a/keyboards/kbdfans/boop65/rgb/keymaps/default/keymap.c b/keyboards/kbdfans/boop65/rgb/keymaps/default/keymap.c new file mode 100644 index 000000000000..fed67baf2e78 --- /dev/null +++ b/keyboards/kbdfans/boop65/rgb/keymaps/default/keymap.c @@ -0,0 +1,44 @@ +/* Copyright 2021 Dztech + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + #include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi_blocker( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLASH, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT), + [1] = LAYOUT_65_ansi_blocker( + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI,RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, KC_PGUP, + KC_TRNS, RGB_SPI, RGB_SPD, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EEP_RST, KC_PGDN, + KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MUTE, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT), + [2] = LAYOUT_65_ansi_blocker( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [3] = LAYOUT_65_ansi_blocker( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; diff --git a/keyboards/kbdfans/boop65/rgb/keymaps/via/keymap.c b/keyboards/kbdfans/boop65/rgb/keymaps/via/keymap.c new file mode 100644 index 000000000000..f2aee1a1ffa3 --- /dev/null +++ b/keyboards/kbdfans/boop65/rgb/keymaps/via/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2021 Dztech + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi_blocker( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLASH, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT), + [1] = LAYOUT_65_ansi_blocker( + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI,RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, KC_PGUP, + KC_TRNS, RGB_SPI, RGB_SPD, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EEP_RST, KC_PGDN, + KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MUTE, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT), + [2] = LAYOUT_65_ansi_blocker( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [3] = LAYOUT_65_ansi_blocker( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; diff --git a/keyboards/kbdfans/boop65/rgb/keymaps/via/rules.mk b/keyboards/kbdfans/boop65/rgb/keymaps/via/rules.mk new file mode 100644 index 000000000000..43061db1dd46 --- /dev/null +++ b/keyboards/kbdfans/boop65/rgb/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/kbdfans/boop65/rgb/readme.md b/keyboards/kbdfans/boop65/rgb/readme.md new file mode 100644 index 000000000000..9b24b62af46e --- /dev/null +++ b/keyboards/kbdfans/boop65/rgb/readme.md @@ -0,0 +1,21 @@ +# BOOP65 RGB + +A customizable 65% RGB keyboard. + +* Keyboard Maintainer: [moyi4681](https://github.com/moyi4681) +* Hardware Supported: KBDFANS +* Hardware Availability: [kbdfans](https://kbdfans.myshopify.com/) + +Make example for this keyboard (after setting up your build environment): + + make kbdfans/boop65/rgb:default + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `RESET` if it is available + +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/kbdfans/boop65/rgb/rgb.c b/keyboards/kbdfans/boop65/rgb/rgb.c new file mode 100644 index 000000000000..3e9c66f45723 --- /dev/null +++ b/keyboards/kbdfans/boop65/rgb/rgb.c @@ -0,0 +1,148 @@ +/* Copyright 2021 Dztech + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "rgb.h" + +#ifdef RGB_MATRIX_ENABLE + +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { + {0, CS21_SW1, CS20_SW1, CS19_SW1}, + {0, CS21_SW2, CS20_SW2, CS19_SW2}, + {0, CS21_SW3, CS20_SW3, CS19_SW3}, + {0, CS21_SW4, CS20_SW4, CS19_SW4}, + {0, CS21_SW5, CS20_SW5, CS19_SW5}, + {0, CS21_SW6, CS20_SW6, CS19_SW6}, + {0, CS21_SW7, CS20_SW7, CS19_SW7}, + {0, CS21_SW8, CS20_SW8, CS19_SW8}, + {0, CS24_SW1, CS23_SW1, CS22_SW1}, + {0, CS24_SW2, CS23_SW2, CS22_SW2}, + {0, CS24_SW3, CS23_SW3, CS22_SW3}, + {0, CS24_SW4, CS23_SW4, CS22_SW4}, + {0, CS24_SW5, CS23_SW5, CS22_SW5}, + {0, CS24_SW6, CS23_SW6, CS22_SW6}, + {0, CS24_SW7, CS23_SW7, CS22_SW7}, + + {0, CS15_SW1, CS14_SW1, CS13_SW1}, + {0, CS15_SW2, CS14_SW2, CS13_SW2}, + {0, CS15_SW3, CS14_SW3, CS13_SW3}, + {0, CS15_SW4, CS14_SW4, CS13_SW4}, + {0, CS15_SW5, CS14_SW5, CS13_SW5}, + {0, CS15_SW6, CS14_SW6, CS13_SW6}, + {0, CS15_SW7, CS14_SW7, CS13_SW7}, + {0, CS15_SW8, CS14_SW8, CS13_SW8}, + {0, CS30_SW1, CS29_SW1, CS28_SW1}, + {0, CS30_SW2, CS29_SW2, CS28_SW2}, + {0, CS30_SW3, CS29_SW3, CS28_SW3}, + {0, CS30_SW4, CS29_SW4, CS28_SW4}, + {0, CS30_SW5, CS29_SW5, CS28_SW5}, + {0, CS30_SW6, CS29_SW6, CS28_SW6}, + {0, CS30_SW7, CS29_SW7, CS28_SW7}, + + {0, CS12_SW1, CS11_SW1, CS10_SW1}, + {0, CS12_SW2, CS11_SW2, CS10_SW2}, + {0, CS12_SW3, CS11_SW3, CS10_SW3}, + {0, CS12_SW4, CS11_SW4, CS10_SW4}, + {0, CS12_SW5, CS11_SW5, CS10_SW5}, + {0, CS12_SW6, CS11_SW6, CS10_SW6}, + {0, CS12_SW7, CS11_SW7, CS10_SW7}, + {0, CS12_SW8, CS11_SW8, CS10_SW8}, + {0, CS33_SW1, CS32_SW1, CS31_SW1}, + {0, CS33_SW2, CS32_SW2, CS31_SW2}, + {0, CS33_SW3, CS32_SW3, CS31_SW3}, + {0, CS33_SW4, CS32_SW4, CS31_SW4}, + {0, CS33_SW5, CS32_SW5, CS31_SW5}, + {0, CS33_SW7, CS32_SW7, CS31_SW7}, + + {0, CS9_SW1, CS8_SW1, CS7_SW1}, + {0, CS9_SW2, CS8_SW2, CS7_SW2}, + {0, CS9_SW3, CS8_SW3, CS7_SW3}, + {0, CS9_SW4, CS8_SW4, CS7_SW4}, + {0, CS9_SW5, CS8_SW5, CS7_SW5}, + {0, CS9_SW6, CS8_SW6, CS7_SW6}, + {0, CS9_SW7, CS8_SW7, CS7_SW7}, + {0, CS9_SW8, CS8_SW8, CS7_SW8}, + {0, CS36_SW1, CS35_SW1, CS34_SW1}, + {0, CS36_SW2, CS35_SW2, CS34_SW2}, + {0, CS36_SW3, CS35_SW3, CS34_SW3}, + {0, CS36_SW4, CS35_SW4, CS34_SW4}, + {0, CS36_SW5, CS35_SW5, CS34_SW5}, + {0, CS36_SW7, CS35_SW7, CS34_SW7}, + + {0, CS3_SW1, CS2_SW1, CS1_SW1}, + {0, CS3_SW2, CS2_SW2, CS1_SW2}, + {0, CS3_SW3, CS2_SW3, CS1_SW3}, + {0, CS3_SW6, CS2_SW6, CS1_SW6}, + {0, CS39_SW2, CS38_SW2, CS37_SW2}, + {0, CS39_SW3, CS38_SW3, CS37_SW3}, + {0, CS39_SW4, CS38_SW4, CS37_SW4}, + {0, CS39_SW5, CS38_SW5, CS37_SW5}, + {0, CS39_SW7, CS38_SW7, CS37_SW7}, + +/* underglow */ + + {0, CS18_SW1, CS17_SW1, CS16_SW1}, + {0, CS18_SW3, CS17_SW3, CS16_SW3}, + {0, CS18_SW5, CS17_SW5, CS16_SW5}, + {0, CS18_SW7, CS17_SW7, CS16_SW7}, + {0, CS27_SW2, CS26_SW2, CS25_SW2}, + {0, CS27_SW4, CS26_SW4, CS25_SW4}, + {0, CS27_SW6, CS26_SW6, CS25_SW6}, + {0, CS27_SW7, CS26_SW7, CS25_SW7}, + + {0, CS6_SW1, CS5_SW1, CS4_SW1}, + {0, CS6_SW3, CS5_SW3, CS4_SW3}, + {0, CS6_SW4, CS5_SW4, CS4_SW4}, + {0, CS6_SW7, CS5_SW7, CS4_SW7}, + {0, CS39_SW1, CS38_SW1, CS37_SW1}, + {0, CS33_SW6, CS32_SW6, CS31_SW6}, + {0, CS36_SW6, CS35_SW6, CS34_SW6}, + {0, CS39_SW6, CS38_SW6, CS37_SW6} + +}; +led_config_t g_led_config = { { + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }, + { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 }, + { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, NO_LED,42, 43 }, + { 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, NO_LED,56, 57 }, + { 58, 59, 60, NO_LED, NO_LED, 61, NO_LED, NO_LED, 62, NO_LED, 63, 64, NO_LED, 65, 66 } +}, { + {0,0},{15,0},{30,0},{45,0},{60,0},{75,0},{90,0},{105,0},{120,0},{135,0},{150,0},{165,0},{180,0},{203,0},{224,0}, + {4,16},{23,16},{38,16},{53,16},{68,16},{83,16},{98,16},{113,16},{128,16},{143,16},{158,16},{173,16},{188,16},{206,16},{224,16}, + {6,32},{26,32},{41,32},{56,32},{71,32},{86,32},{101,32},{116,32},{131,32},{146,32},{161,32},{176,32},{201,32},{224,32}, + {9,48},{34,48},{49,48},{64,48},{79,48},{94,48},{109,48},{124,48},{139,48},{154,48},{169,48},{189,48},{210,48},{224,48}, + {2,64},{21,64},{39,64},{96,64},{152,64},{171,64},{195,64},{210,64},{224,64}, + {0,8},{32,8},{64,8},{96,8},{128,8},{160,8},{192,8},{224,8}, + {0,56},{32,56},{64,56},{96,56},{128,56},{160,56},{192,56},{224,56} +}, { + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 1, 1, 1, 4, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2 +} }; + +__attribute__ ((weak)) +void rgb_matrix_indicators_user(void) +{ + if (host_keyboard_led_state().caps_lock) + { + rgb_matrix_set_color(30, 0xFF, 0xFF, 0xFF); + } +} +#endif + diff --git a/keyboards/kbdfans/boop65/rgb/rgb.h b/keyboards/kbdfans/boop65/rgb/rgb.h new file mode 100644 index 000000000000..16fa7c1b87fe --- /dev/null +++ b/keyboards/kbdfans/boop65/rgb/rgb.h @@ -0,0 +1,32 @@ +/* Copyright 2021 Dztech + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once +#define XXX KC_NO +#include "quantum.h" +#define LAYOUT_65_ansi_blocker( \ + 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, K2D, K2E, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \ + K40, K41, K42, K45, K48, K4A, K4B, 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, XXX, K2D, K2E }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, K3D, K3E }, \ + { K40, K41, K42, XXX, XXX, K45, XXX, XXX, K48, XXX, K4A, K4B, XXX, K4D, K4E } \ +} diff --git a/keyboards/kbdfans/boop65/rgb/rules.mk b/keyboards/kbdfans/boop65/rgb/rules.mk new file mode 100644 index 000000000000..60f9eabb84eb --- /dev/null +++ b/keyboards/kbdfans/boop65/rgb/rules.mk @@ -0,0 +1,21 @@ +# 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 +# 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 +RGB_MATRIX_ENABLE = yes # Use RGB matrix +RGB_MATRIX_DRIVER = IS31FL3741 diff --git a/keyboards/kbdfans/kbd19x/config.h b/keyboards/kbdfans/kbd19x/config.h index 090beb590c5f..0fbf429c459f 100644 --- a/keyboards/kbdfans/kbd19x/config.h +++ b/keyboards/kbdfans/kbd19x/config.h @@ -105,54 +105,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -171,23 +123,3 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - diff --git a/keyboards/kbdfans/kbd19x/info.json b/keyboards/kbdfans/kbd19x/info.json index c24ed9caa5cf..b271d7e537b5 100644 --- a/keyboards/kbdfans/kbd19x/info.json +++ b/keyboards/kbdfans/kbd19x/info.json @@ -2,11 +2,8 @@ "keyboard_name": "KBD19x", "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/kbdfans/kbd19x", "maintainer": "qmk", - "width": 19.5, - "height": 6.75, "layouts": { "LAYOUT_ansi": { - "key_count": 99, "layout": [ {"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.25, "y":0}, @@ -110,7 +107,6 @@ ] }, "LAYOUT_all": { - "key_count": 103, "layout": [ {"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.25, "y":0}, diff --git a/keyboards/kbdfans/kbd19x/keymaps/default/keymap.c b/keyboards/kbdfans/kbd19x/keymaps/default/keymap.c index c806072114d4..e06948fccedb 100644 --- a/keyboards/kbdfans/kbd19x/keymaps/default/keymap.c +++ b/keyboards/kbdfans/kbd19x/keymaps/default/keymap.c @@ -34,19 +34,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ ), }; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/kbdfans/kbd19x/rules.mk b/keyboards/kbdfans/kbd19x/rules.mk index 914ef3c21ed5..c6f5dd9125a6 100644 --- a/keyboards/kbdfans/kbd19x/rules.mk +++ b/keyboards/kbdfans/kbd19x/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/kbdfans/kbd4x/config.h b/keyboards/kbdfans/kbd4x/config.h index 9efffa0b13ea..a75efa6eae94 100644 --- a/keyboards/kbdfans/kbd4x/config.h +++ b/keyboards/kbdfans/kbd4x/config.h @@ -100,54 +100,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -166,23 +118,3 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - diff --git a/keyboards/kbdfans/kbd4x/info.json b/keyboards/kbdfans/kbd4x/info.json index 28883b265a0d..939420c9718a 100644 --- a/keyboards/kbdfans/kbd4x/info.json +++ b/keyboards/kbdfans/kbd4x/info.json @@ -2,8 +2,6 @@ "keyboard_name": "kbd4x", "url": "", "maintainer": "qmk", - "width": 12, - "height": 4, "layouts": { "LAYOUT_planck_mit": { "layout": [ diff --git a/keyboards/kbdfans/kbd4x/kbd4x.c b/keyboards/kbdfans/kbd4x/kbd4x.c index 84ada250d7cd..c7e579793227 100644 --- a/keyboards/kbdfans/kbd4x/kbd4x.c +++ b/keyboards/kbdfans/kbd4x/kbd4x.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "kbd4x.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/kbdfans/kbd4x/keymaps/default/keymap.c b/keyboards/kbdfans/kbd4x/keymaps/default/keymap.c index ad49b379989a..1a79d739109e 100644 --- a/keyboards/kbdfans/kbd4x/keymaps/default/keymap.c +++ b/keyboards/kbdfans/kbd4x/keymaps/default/keymap.c @@ -37,16 +37,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ ), }; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void matrix_init_user(void) { -} - -void matrix_scan_user(void) { -} - -void led_set_user(uint8_t usb_led) { -} diff --git a/keyboards/kbdfans/kbd4x/readme.md b/keyboards/kbdfans/kbd4x/readme.md index 2e2a29290fa5..6220fe82496f 100644 --- a/keyboards/kbdfans/kbd4x/readme.md +++ b/keyboards/kbdfans/kbd4x/readme.md @@ -4,9 +4,9 @@ A compact 40% (12x4) ortholinear keyboard kit sold by KBDFans. -Keyboard Maintainer: ![sevenseacat](https://github.com/sevenseacat) -Hardware Supported: KBD4x PCB -Hardware Availability: https://kbdfans.cn/collections/diy-kit/products/kbd4x-custom-mechanical-keyboard-hot-swap-diy-kit +* Keyboard Maintainer: ![sevenseacat](https://github.com/sevenseacat) +* Hardware Supported: KBD4x PCB +* Hardware Availability: https://kbdfans.cn/collections/diy-kit/products/kbd4x-custom-mechanical-keyboard-hot-swap-diy-kit Make example for this keyboard (after setting up your build environment): diff --git a/keyboards/kbdfans/kbd4x/rules.mk b/keyboards/kbdfans/kbd4x/rules.mk index 38cca183ca3a..7756ec266444 100644 --- a/keyboards/kbdfans/kbd4x/rules.mk +++ b/keyboards/kbdfans/kbd4x/rules.mk @@ -2,33 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = ortho_4x12 planck_mit diff --git a/keyboards/kbdfans/kbd66/config.h b/keyboards/kbdfans/kbd66/config.h index 8b5be9f0ab0e..2098ebf60ff5 100644 --- a/keyboards/kbdfans/kbd66/config.h +++ b/keyboards/kbdfans/kbd66/config.h @@ -91,54 +91,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -156,23 +108,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 diff --git a/keyboards/kbdfans/kbd66/info.json b/keyboards/kbdfans/kbd66/info.json index 0308bfab7a0b..5e4d9aacf3c0 100644 --- a/keyboards/kbdfans/kbd66/info.json +++ b/keyboards/kbdfans/kbd66/info.json @@ -2,11 +2,8 @@ "keyboard_name": "KBD66", "url": "", "maintainer": "qmk", - "width": 16.5, - "height": 5, "layouts": { "LAYOUT_all": { - "key_count": 70, "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}, {"x":15.5, "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}, {"x":15.5, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"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.25}, {"x":13.5, "y":3}, {"x":14.5, "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.5}, {"x":4, "y":4, "w":2.75}, {"x":6.75, "y":4, "w":2.75}, {"label":"Alt", "x":9.5, "y":4, "w":1.5}, {"label":"Win", "x":11, "y":4, "w":1.25}, {"label":"Menu", "x":12.25, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.5, "y":4}, {"x":14.5, "y":4}, {"x":15.5, "y":4}] } } diff --git a/keyboards/kbdfans/kbd66/kbd66.c b/keyboards/kbdfans/kbd66/kbd66.c index 7a84b63684f5..c4f56c17171d 100644 --- a/keyboards/kbdfans/kbd66/kbd66.c +++ b/keyboards/kbdfans/kbd66/kbd66.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "kbd66.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/kbdfans/kbd66/keymaps/ansi/keymap.c b/keyboards/kbdfans/kbd66/keymaps/ansi/keymap.c index 984d68971d28..7900a2ebe102 100644 --- a/keyboards/kbdfans/kbd66/keymaps/ansi/keymap.c +++ b/keyboards/kbdfans/kbd66/keymaps/ansi/keymap.c @@ -65,19 +65,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/kbdfans/kbd66/keymaps/default/keymap.c b/keyboards/kbdfans/kbd66/keymaps/default/keymap.c index 60ef36390a2c..d878ed151a60 100644 --- a/keyboards/kbdfans/kbd66/keymaps/default/keymap.c +++ b/keyboards/kbdfans/kbd66/keymaps/default/keymap.c @@ -65,19 +65,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/kbdfans/kbd66/keymaps/iso/keymap.c b/keyboards/kbdfans/kbd66/keymaps/iso/keymap.c index b330abaf9cb1..86f0bbbfdc04 100644 --- a/keyboards/kbdfans/kbd66/keymaps/iso/keymap.c +++ b/keyboards/kbdfans/kbd66/keymaps/iso/keymap.c @@ -65,19 +65,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/kbdfans/kbd66/readme.md b/keyboards/kbdfans/kbd66/readme.md index a2e5de0157f5..8979135c3fc8 100644 --- a/keyboards/kbdfans/kbd66/readme.md +++ b/keyboards/kbdfans/kbd66/readme.md @@ -2,11 +2,11 @@ ![KBD66](https://i.imgur.com/qtLuL2o.jpg) -A 65% keyboard from KBDFans. +A 66 key keyboard from KBDFans modeled after the FC660m. -Keyboard Maintainer: [Alex](https://github.com/allo-world) -Hardware Supported: KBD66, ATmega32U4 -Hardware Availability: [KBDFans](https://kbdfans.cn), [Massdrop](https://www.massdrop.com/buy/kbd66-mechanical-keyboard-kit?mode=guest_open) +* Keyboard Maintainer: [Alex](https://github.com/allo-world) +* Hardware Supported: KBD66, ATmega32U4 +* Hardware Availability: [KBDFans](https://kbdfans.cn), [Massdrop](https://www.massdrop.com/buy/kbd66-mechanical-keyboard-kit?mode=guest_open) Make example for this keyboard (after setting up your build environment): diff --git a/keyboards/kbdfans/kbd66/rules.mk b/keyboards/kbdfans/kbd66/rules.mk index 4f42fb7f8751..a2b779eeb718 100644 --- a/keyboards/kbdfans/kbd66/rules.mk +++ b/keyboards/kbdfans/kbd66/rules.mk @@ -2,29 +2,17 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/kbdfans/kbd67/hotswap/config.h b/keyboards/kbdfans/kbd67/hotswap/config.h index 400b7540cbef..2179acb5f801 100644 --- a/keyboards/kbdfans/kbd67/hotswap/config.h +++ b/keyboards/kbdfans/kbd67/hotswap/config.h @@ -119,54 +119,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -185,26 +137,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/kbdfans/kbd67/hotswap/hotswap.c b/keyboards/kbdfans/kbd67/hotswap/hotswap.c index e6999f6af2b8..60808979c981 100644 --- a/keyboards/kbdfans/kbd67/hotswap/hotswap.c +++ b/keyboards/kbdfans/kbd67/hotswap/hotswap.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "hotswap.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/kbdfans/kbd67/hotswap/info.json b/keyboards/kbdfans/kbd67/hotswap/info.json index 9f23a5f348be..cf27cfe23172 100644 --- a/keyboards/kbdfans/kbd67/hotswap/info.json +++ b/keyboards/kbdfans/kbd67/hotswap/info.json @@ -2,11 +2,9 @@ "keyboard_name": "kbd67 hotswap", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] } } -} \ No newline at end of file +} diff --git a/keyboards/kbdfans/kbd67/hotswap/keymaps/brandonschlack/rules.mk b/keyboards/kbdfans/kbd67/hotswap/keymaps/brandonschlack/rules.mk index f2424644980a..673e15f81fa9 100644 --- a/keyboards/kbdfans/kbd67/hotswap/keymaps/brandonschlack/rules.mk +++ b/keyboards/kbdfans/kbd67/hotswap/keymaps/brandonschlack/rules.mk @@ -1,2 +1,2 @@ # Build Options -BOOTMAGIC_ENABLE = full # Use full Bootmagic +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite diff --git a/keyboards/kbdfans/kbd67/hotswap/keymaps/default/keymap.c b/keyboards/kbdfans/kbd67/hotswap/keymaps/default/keymap.c index 53696301163b..4c645c7cd886 100644 --- a/keyboards/kbdfans/kbd67/hotswap/keymaps/default/keymap.c +++ b/keyboards/kbdfans/kbd67/hotswap/keymaps/default/keymap.c @@ -58,15 +58,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/kbdfans/kbd67/hotswap/keymaps/stevanmilic/rules.mk b/keyboards/kbdfans/kbd67/hotswap/keymaps/stevanmilic/rules.mk index 16eb6cb4489e..0bef91295ed0 100644 --- a/keyboards/kbdfans/kbd67/hotswap/keymaps/stevanmilic/rules.mk +++ b/keyboards/kbdfans/kbd67/hotswap/keymaps/stevanmilic/rules.mk @@ -1,4 +1,4 @@ -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite COMMAND_ENABLE = yes CONSOLE_ENABLE = yes EXTRAKEY_ENABLE = yes diff --git a/keyboards/kbdfans/kbd67/hotswap/readme.md b/keyboards/kbdfans/kbd67/hotswap/readme.md index bb64c03e3c17..49a74f109aa8 100644 --- a/keyboards/kbdfans/kbd67/hotswap/readme.md +++ b/keyboards/kbdfans/kbd67/hotswap/readme.md @@ -2,9 +2,11 @@ A 65% hot swap board with blocker and USB Type C port. -Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin) -Hardware Supported: KBD67 Hotswap -Hardware Availability: [KBDFans](https://kbdfans.cn/products/coming-soon-kbd67-mechanical-keyboard-diy-kit) +This PCB was replaced by the hotswap variants of the kbd67mkii + +* Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin) +* Hardware Supported: KBD67 Hotswap +* Hardware Availability: [KBDFans](https://kbdfans.cn/products/coming-soon-kbd67-mechanical-keyboard-diy-kit) Make example for this keyboard (after setting up your build environment): diff --git a/keyboards/kbdfans/kbd67/hotswap/rules.mk b/keyboards/kbdfans/kbd67/hotswap/rules.mk index 12610edccaf1..09ffdf24ca79 100644 --- a/keyboards/kbdfans/kbd67/hotswap/rules.mk +++ b/keyboards/kbdfans/kbd67/hotswap/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = 65_ansi_blocker_split_bs diff --git a/keyboards/kbdfans/kbd67/mkii_soldered/info.json b/keyboards/kbdfans/kbd67/mkii_soldered/info.json index cb012517aa39..c31fb4f3fba3 100644 --- a/keyboards/kbdfans/kbd67/mkii_soldered/info.json +++ b/keyboards/kbdfans/kbd67/mkii_soldered/info.json @@ -2,8 +2,6 @@ "keyboard_name": "KBD67 MKII Soldered Variant", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"label":"~", "x":0, "y":0}, diff --git a/keyboards/kbdfans/kbd67/mkii_soldered/mkii_soldered.c b/keyboards/kbdfans/kbd67/mkii_soldered/mkii_soldered.c index c36a84e75ffe..b685fa824ac5 100644 --- a/keyboards/kbdfans/kbd67/mkii_soldered/mkii_soldered.c +++ b/keyboards/kbdfans/kbd67/mkii_soldered/mkii_soldered.c @@ -14,35 +14,3 @@ * along with this program. If not, see . */ #include "mkii_soldered.h" - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -/* - -void matrix_init_kb(void) { - - matrix_init_user(); -} - -void led_set_kb(uint8_t usb_led) { - - led_set_user(usb_led); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -*/ diff --git a/keyboards/kbdfans/kbd67/mkii_soldered/readme.md b/keyboards/kbdfans/kbd67/mkii_soldered/readme.md index d864c9e99b5d..deea30f4fb62 100644 --- a/keyboards/kbdfans/kbd67/mkii_soldered/readme.md +++ b/keyboards/kbdfans/kbd67/mkii_soldered/readme.md @@ -2,8 +2,7 @@ ![Render](https://i.imgur.com/W8jBycQ.png) -A simple 65% keyboard -This is for the solderable PCB for the MKII. For hotswap PCB firmware, please check the other directories. +Solderable 65% PCB made originally for the KBD67mkii by ai03. For hotswap PCB firmware, please check the other directories. * Keyboard Maintainer: [ai03](https://github.com/ai03-2725) / [KBDfans](https://kbdfans.cn/) * Hardware Supported: KBD67 MKII Soldered PCB (Not hotswap) diff --git a/keyboards/kbdfans/kbd67/mkii_soldered/rules.mk b/keyboards/kbdfans/kbd67/mkii_soldered/rules.mk index 8a49490966b3..463a71bf50f6 100644 --- a/keyboards/kbdfans/kbd67/mkii_soldered/rules.mk +++ b/keyboards/kbdfans/kbd67/mkii_soldered/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = 65_ansi_blocker 65_ansi_blocker_split_bs 65_iso_blocker 65_iso_blocker_split_bs diff --git a/keyboards/kbdfans/kbd67/mkiirgb/info.json b/keyboards/kbdfans/kbd67/mkiirgb/info.json index eac115971283..7010ba59d902 100644 --- a/keyboards/kbdfans/kbd67/mkiirgb/info.json +++ b/keyboards/kbdfans/kbd67/mkiirgb/info.json @@ -2,12 +2,9 @@ "keyboard_name": "kbd67mkiirgb", "url": "", "maintainer": "moyi4681", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_ansi_blocker": { - "key_count": 67, "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] } } -} \ No newline at end of file +} diff --git a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/default/keymap.c b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/default/keymap.c index 99556b7ef043..0109e924a71c 100644 --- a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/default/keymap.c +++ b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/default/keymap.c @@ -15,17 +15,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MUTE,\ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT), }; -void matrix_init_user(void) -{ - //user initialization -} - -void matrix_scan_user(void) -{ - //user matrix -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) -{ - return true; -} diff --git a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/pascalpfeil/config.h b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/pascalpfeil/config.h new file mode 100644 index 000000000000..2cd513223a33 --- /dev/null +++ b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/pascalpfeil/config.h @@ -0,0 +1,32 @@ +/* Copyright 2021 Pascal Pfeil + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +/* 1000Hz USB polling */ +#define USB_POLLING_INTERVAL_MS 1 + +/* Send up to 4 key press events per scan */ +#define QMK_KEYS_PER_SCAN 4 + +/* Force NKRO on boot up */ +#define FORCE_NKRO + +#ifdef RGB_MATRIX_ENABLE +# define RGB_DISABLE_WHEN_USB_SUSPENDED +# undef RGB_DISABLE_TIMEOUT +# define RGB_DISABLE_TIMEOUT 900000 +#endif diff --git a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/pascalpfeil/keymap.c b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/pascalpfeil/keymap.c new file mode 100644 index 000000000000..21f991df3cca --- /dev/null +++ b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/pascalpfeil/keymap.c @@ -0,0 +1,48 @@ +/* Copyright 2021 Pascal Pfeil + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi_blocker( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PSCR, + 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_BSLASH, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, LT(1, KC_SPC), KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT + ), + [1] = LAYOUT_65_ansi_blocker( + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, BS_NORM, RGB_VAI, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BS_SWAP, RGB_HUI, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_SPI, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_MOD, + KC_TRNS, AG_NORM, AG_SWAP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_65_ansi_blocker( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_65_ansi_blocker( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; diff --git a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/pascalpfeil/rules.mk b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/pascalpfeil/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/pascalpfeil/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/kbdfans/kbd67/mkiirgb/mkiirgb.c b/keyboards/kbdfans/kbd67/mkiirgb/mkiirgb.c index 323cb2384818..7a105ae5499d 100644 --- a/keyboards/kbdfans/kbd67/mkiirgb/mkiirgb.c +++ b/keyboards/kbdfans/kbd67/mkiirgb/mkiirgb.c @@ -1,119 +1,17 @@ -#include "mkiirgb.h" -#ifdef RGB_MATRIX_ENABLE -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { - - {0, C8_8, C7_8, C6_8}, // LA17 - {0, C9_8, C7_7, C6_7}, // LA16 - {0, C9_7, C8_7, C6_6}, // LA15 - {0, C9_6, C8_6, C7_6}, // LA14 - {0, C9_5, C8_5, C7_5}, // LA13 - {0, C9_4, C8_4, C7_4}, // LA12 - {0, C9_3, C8_3, C7_3}, // LA11 - {0, C9_2, C8_2, C7_2}, // LA10 - {0, C9_1, C8_1, C7_1}, // LA9 - {0, C2_9, C3_9, C4_9}, // LB0 - {0, C1_9, C3_10, C4_10}, // LB1 - {0, C1_10, C2_10, C4_11}, // LB2 - {0, C1_11, C2_11, C3_11}, // LB3 - {0, C1_13, C2_13, C3_13}, // LB5 - {0, C1_14, C2_14, C3_14}, // LB6 - - {0, C1_7, C2_7, C3_7}, // LA7 - {0, C1_6, C2_6, C3_6}, // LA6 - {0, C1_5, C2_5, C3_5}, // LA5 - {0, C1_4, C2_4, C3_4}, // LA4 - {0, C1_3, C2_3, C3_3}, // LA3 - {0, C1_2, C2_2, C4_3}, // LA2 - {0, C1_1, C3_2, C4_2}, // LA1 - {0, C2_1, C3_1, C4_1}, // LA0 - {0, C9_9, C8_9, C7_9}, // LB9 - {0, C9_10, C8_10, C7_10}, // LB10 - {0, C9_11, C8_11, C7_11}, // LB11 - {0, C9_12, C8_12, C7_12}, // LB12 - {0, C9_13, C8_13, C7_13}, // LB13 - {0, C9_14, C8_14, C7_14}, // LB14 - {0, C1_15, C2_15, C3_15}, // LB7 - - {0, C1_8, C2_8, C3_8}, // LA8 - {1, C9_6, C8_6, C7_6}, // LC14 - {1, C9_5, C8_5, C7_5}, // LC13 - {1, C9_4, C8_4, C7_4}, // LC12 - {1, C9_3, C8_3, C7_3}, // LC11 - {1, C9_2, C8_2, C7_2}, // LC10 - {1, C9_1, C8_1, C7_1}, // LC9 - {1, C2_9, C3_9, C4_9}, // LD0 - {1, C1_9, C3_10, C4_10}, // LD1 - {1, C1_10, C2_10, C4_11}, // LD2 - {1, C1_11, C2_11, C3_11}, // LD3 - {1, C1_12, C2_12, C3_12}, // LD4 - {1, C1_13, C2_13, C3_13}, // LD5 - {0, C1_16, C2_16, C3_16}, // LB8 - - {1, C9_8, C7_7, C6_7}, // LC16 - {1, C1_5, C2_5, C3_5}, // LC5 - {1, C1_4, C2_4, C3_4}, // LC4 - {1, C1_3, C2_3, C3_3}, // LC3 - {1, C1_2, C2_2, C4_3}, // LC2 - {1, C1_1, C3_2, C4_2}, // LC1 - {1, C9_9, C8_9, C7_9}, // LD9 - {1, C9_10, C8_10, C7_10}, // LD10 - {1, C9_11, C8_11, C7_11}, // LD11 - {1, C9_12, C8_12, C7_12}, // LD12 - {1, C1_14, C2_14, C3_14}, // LD6 - {1, C1_15, C2_15, C3_15}, // LD7 - {1, C1_16, C2_16, C3_16}, // LD8 - {0, C9_15, C8_15, C6_14}, // LB15 - - {1, C8_8, C7_8, C6_8}, // LC17 - {1, C1_8, C2_8, C3_8}, // LC8 - {1, C1_7, C2_7, C3_7}, // LC7 - {1, C2_1, C3_1, C4_1}, // LC0 - {1, C9_14, C8_14, C7_14}, // LD14 - {1, C9_15, C8_15, C6_14}, // LD15 - {1, C8_16, C7_16, C6_16}, // LD17 - {0, C8_16, C7_16, C6_16}, // LB17 - {0, C9_16, C7_15, C6_15}, // LB16 - -}; +/* Copyright 2021 DZTECH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ -led_config_t g_led_config = { { - { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }, - { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 }, - { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, NO_LED,42, 43 }, - { 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, NO_LED,56, 57 }, - { 58, 59, 60, NO_LED, NO_LED, 61, NO_LED, NO_LED, 62, NO_LED, 63, 64, NO_LED, 65, 66 } -}, { - {0,0},{15,0},{30,0},{45,0},{60,0},{75,0},{90,0},{105,0},{120,0},{135,0},{150,0},{165,0},{180,0},{203,0},{224,0}, - {4,16},{23,16},{38,16},{53,16},{68,16},{83,16},{98,16},{113,16},{128,16},{143,16},{158,16},{173,16},{188,16},{206,16},{224,16}, - {6,32},{26,32},{41,32},{56,32},{71,32},{86,32},{101,32},{116,32},{131,32},{146,32},{161,32},{176,32},{201,32},{224,32}, - {9,48},{34,48},{49,48},{64,48},{79,48},{94,48},{109,48},{124,48},{139,48},{154,48},{169,48},{189,48},{210,48},{224,48}, - {2,64},{21,64},{39,64},{96,64},{152,64},{171,64},{195,64},{210,64},{224,64} -}, { - 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, - 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, - 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, - 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, - 1, 1, 1, 4, 1, 1, 1, 1, 1 -} }; - -void suspend_power_down_kb(void) -{ - rgb_matrix_set_suspend_state(true); - suspend_power_down_user(); -} - -void suspend_wakeup_init_kb(void) -{ - rgb_matrix_set_suspend_state(false); - suspend_wakeup_init_user(); -} - -__attribute__ ((weak)) -void rgb_matrix_indicators_user(void) -{ - if (IS_HOST_LED_ON(USB_LED_CAPS_LOCK)) - { - rgb_matrix_set_color(30, 0xFF, 0xFF, 0xFF); - } -} -#endif +#include "mkiirgb.h" diff --git a/keyboards/kbdfans/kbd67/mkiirgb/mkiirgb.h b/keyboards/kbdfans/kbd67/mkiirgb/mkiirgb.h index e61ff96839f4..c297a02e888d 100644 --- a/keyboards/kbdfans/kbd67/mkiirgb/mkiirgb.h +++ b/keyboards/kbdfans/kbd67/mkiirgb/mkiirgb.h @@ -1,16 +1,26 @@ +/* Copyright 2021 DZTECH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #pragma once -#define XXX KC_NO + +#if defined(KEYBOARD_kbdfans_kbd67_mkiirgb_v1) + #include "v1.h" +#elif defined(KEYBOARD_kbdfans_kbd67_mkiirgb_v2) + #include "v2.h" +#elif defined(KEYBOARD_kbdfans_kbd67_mkiirgb_v3) + #include "v3.h" +#endif #include "quantum.h" -#define LAYOUT_65_ansi_blocker( \ - 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, K2D, K2E, \ - K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \ - K40, K41, K42, K45, K48, K4A, K4B, 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, XXX, K2D, K2E }, \ - { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, K3D, K3E }, \ - { K40, K41, K42, XXX, XXX, K45, XXX, XXX, K48, XXX, K4A, K4B, XXX, K4D, K4E } \ -} diff --git a/keyboards/kbdfans/kbd67/mkiirgb/readme.md b/keyboards/kbdfans/kbd67/mkiirgb/readme.md index 3a5621d84449..58338df0f64f 100644 --- a/keyboards/kbdfans/kbd67/mkiirgb/readme.md +++ b/keyboards/kbdfans/kbd67/mkiirgb/readme.md @@ -3,17 +3,19 @@ A customizable 65% RGB keyboard. * Keyboard Maintainer: [moyi4681](https://github.com/moyi4681) -* Hardware Supported: KBD67 Mk.II RGB V1 and V2 +* Hardware Supported: KBD67 Mk.II RGB V1, V2, and V3 * Hardware Availability: [kbdfans](https://kbdfans.myshopify.com/) -There are two versions of the KBD67 MKII RGB. Please use the appropriate firmware for your board. +There are three versions of the KBD67 MKII RGB. Please use the appropriate firmware for your board. * V1: STM32F303 (Arm), takes `.bin` files * V2: ATmega32U4 (AVR), takes `.hex` files +* V3: Atmega32U4 (AVR), takes `.bin` files Make example for this keyboard (after setting up your build environment): make kbdfans/kbd67/mkiirgb/v1:default # Arm (STM32F303) make kbdfans/kbd67/mkiirgb/v2:default # AVR (ATmega32U4) + make kbdfans/kbd67/mkiirgb/v3:default # AVR (ATmega32U4) 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/kbdfans/kbd67/mkiirgb/v1/config.h b/keyboards/kbdfans/kbd67/mkiirgb/v1/config.h index a832110d3c4f..d88d384f9883 100644 --- a/keyboards/kbdfans/kbd67/mkiirgb/v1/config.h +++ b/keyboards/kbdfans/kbd67/mkiirgb/v1/config.h @@ -16,24 +16,57 @@ #define RGB_MATRIX_LED_FLUSH_LIMIT 26 #define DEBOUNCE 3 #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended #define RGB_MATRIX_KEYPRESSES -#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -#define DISABLE_RGB_MATRIX_BAND_SAT -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -#define DISABLE_RGB_MATRIX_SPLASH -#define DISABLE_RGB_MATRIX_MULTISPLASH -#define DISABLE_RGB_MATRIX_SOLID_SPLASH -#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH -#define DISABLE_RGB_MATRIX_DIGITAL_RAIN +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +// #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +// #define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +// #define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// #define ENABLE_RGB_MATRIX_SPLASH +// #define ENABLE_RGB_MATRIX_MULTISPLASH +// #define ENABLE_RGB_MATRIX_SOLID_SPLASH +// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 #define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL #define DRIVER_ADDR_1 0b1110100 diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v1/readme.md b/keyboards/kbdfans/kbd67/mkiirgb/v1/readme.md index 94550ef32000..a6d8578d7ff7 100644 --- a/keyboards/kbdfans/kbd67/mkiirgb/v1/readme.md +++ b/keyboards/kbdfans/kbd67/mkiirgb/v1/readme.md @@ -1,6 +1,8 @@ # KBD67 Mk.II RGB V1 (Hotswap) -A hotswap 65% keyboard with USB C and inswitch RGB. +An hotswap 65% keyboard with USB C and inswitch RGB. + +This was released along with the kbd67mkii keyboard that featured a top mount design, and brass weight. * Keyboard Maintainer: [moyi4681](https://github.com/moyi4681) * Hardware Supported: KBD67 Mk.II RGB V1 diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v1/rules.mk b/keyboards/kbdfans/kbd67/mkiirgb/v1/rules.mk index 85897df63f3c..85c3db9e2917 100644 --- a/keyboards/kbdfans/kbd67/mkiirgb/v1/rules.mk +++ b/keyboards/kbdfans/kbd67/mkiirgb/v1/rules.mk @@ -6,7 +6,7 @@ BOARD = QMK_PROTON_C BOOTLOADER = stm32-dfu BACKLIGHT_ENABLE = no -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v1/v1.c b/keyboards/kbdfans/kbd67/mkiirgb/v1/v1.c new file mode 100644 index 000000000000..f0036738711d --- /dev/null +++ b/keyboards/kbdfans/kbd67/mkiirgb/v1/v1.c @@ -0,0 +1,104 @@ +/* Copyright 2021 DZTECH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "v1.h" +#ifdef RGB_MATRIX_ENABLE +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { + + {0, C8_8, C7_8, C6_8}, // LA17 + {0, C9_8, C7_7, C6_7}, // LA16 + {0, C9_7, C8_7, C6_6}, // LA15 + {0, C9_6, C8_6, C7_6}, // LA14 + {0, C9_5, C8_5, C7_5}, // LA13 + {0, C9_4, C8_4, C7_4}, // LA12 + {0, C9_3, C8_3, C7_3}, // LA11 + {0, C9_2, C8_2, C7_2}, // LA10 + {0, C9_1, C8_1, C7_1}, // LA9 + {0, C2_9, C3_9, C4_9}, // LB0 + {0, C1_9, C3_10, C4_10}, // LB1 + {0, C1_10, C2_10, C4_11}, // LB2 + {0, C1_11, C2_11, C3_11}, // LB3 + {0, C1_13, C2_13, C3_13}, // LB5 + {0, C1_14, C2_14, C3_14}, // LB6 + + {0, C1_7, C2_7, C3_7}, // LA7 + {0, C1_6, C2_6, C3_6}, // LA6 + {0, C1_5, C2_5, C3_5}, // LA5 + {0, C1_4, C2_4, C3_4}, // LA4 + {0, C1_3, C2_3, C3_3}, // LA3 + {0, C1_2, C2_2, C4_3}, // LA2 + {0, C1_1, C3_2, C4_2}, // LA1 + {0, C2_1, C3_1, C4_1}, // LA0 + {0, C9_9, C8_9, C7_9}, // LB9 + {0, C9_10, C8_10, C7_10}, // LB10 + {0, C9_11, C8_11, C7_11}, // LB11 + {0, C9_12, C8_12, C7_12}, // LB12 + {0, C9_13, C8_13, C7_13}, // LB13 + {0, C9_14, C8_14, C7_14}, // LB14 + {0, C1_15, C2_15, C3_15}, // LB7 + + {0, C1_8, C2_8, C3_8}, // LA8 + {1, C9_6, C8_6, C7_6}, // LC14 + {1, C9_5, C8_5, C7_5}, // LC13 + {1, C9_4, C8_4, C7_4}, // LC12 + {1, C9_3, C8_3, C7_3}, // LC11 + {1, C9_2, C8_2, C7_2}, // LC10 + {1, C9_1, C8_1, C7_1}, // LC9 + {1, C2_9, C3_9, C4_9}, // LD0 + {1, C1_9, C3_10, C4_10}, // LD1 + {1, C1_10, C2_10, C4_11}, // LD2 + {1, C1_11, C2_11, C3_11}, // LD3 + {1, C1_12, C2_12, C3_12}, // LD4 + {1, C1_13, C2_13, C3_13}, // LD5 + {0, C1_16, C2_16, C3_16}, // LB8 + + {1, C9_8, C7_7, C6_7}, // LC16 + {1, C1_5, C2_5, C3_5}, // LC5 + {1, C1_4, C2_4, C3_4}, // LC4 + {1, C1_3, C2_3, C3_3}, // LC3 + {1, C1_2, C2_2, C4_3}, // LC2 + {1, C1_1, C3_2, C4_2}, // LC1 + {1, C9_9, C8_9, C7_9}, // LD9 + {1, C9_10, C8_10, C7_10}, // LD10 + {1, C9_11, C8_11, C7_11}, // LD11 + {1, C9_12, C8_12, C7_12}, // LD12 + {1, C1_14, C2_14, C3_14}, // LD6 + {1, C1_15, C2_15, C3_15}, // LD7 + {1, C1_16, C2_16, C3_16}, // LD8 + {0, C9_15, C8_15, C6_14}, // LB15 + + {1, C8_8, C7_8, C6_8}, // LC17 + {1, C1_8, C2_8, C3_8}, // LC8 + {1, C1_7, C2_7, C3_7}, // LC7 + {1, C2_1, C3_1, C4_1}, // LC0 + {1, C9_14, C8_14, C7_14}, // LD14 + {1, C9_15, C8_15, C6_14}, // LD15 + {1, C8_16, C7_16, C6_16}, // LD17 + {0, C8_16, C7_16, C6_16}, // LB17 + {0, C9_16, C7_15, C6_15}, // LB16 + +}; + +led_config_t g_led_config = {{{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}, {15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29}, {30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, NO_LED, 42, 43}, {44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, NO_LED, 56, 57}, {58, 59, 60, NO_LED, NO_LED, 61, NO_LED, NO_LED, 62, NO_LED, 63, 64, NO_LED, 65, 66}}, + {{0, 0}, {15, 0}, {30, 0}, {45, 0}, {60, 0}, {75, 0}, {90, 0}, {105, 0}, {120, 0}, {135, 0}, {150, 0}, {165, 0}, {180, 0}, {203, 0}, {224, 0}, {4, 16}, {23, 16}, {38, 16}, {53, 16}, {68, 16}, {83, 16}, {98, 16}, {113, 16}, {128, 16}, {143, 16}, {158, 16}, {173, 16}, {188, 16}, {206, 16}, {224, 16}, {6, 32}, {26, 32}, {41, 32}, {56, 32}, {71, 32}, {86, 32}, {101, 32}, {116, 32}, {131, 32}, {146, 32}, {161, 32}, {176, 32}, {201, 32}, {224, 32}, {9, 48}, {34, 48}, {49, 48}, {64, 48}, {79, 48}, {94, 48}, {109, 48}, {124, 48}, {139, 48}, {154, 48}, {169, 48}, {189, 48}, {210, 48}, {224, 48}, {2, 64}, {21, 64}, {39, 64}, {96, 64}, {152, 64}, {171, 64}, {195, 64}, {210, 64}, {224, 64}}, + {1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1}}; + +__attribute__((weak)) void rgb_matrix_indicators_user(void) { + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color(30, 0xFF, 0xFF, 0xFF); + } +} +#endif diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v1/v1.h b/keyboards/kbdfans/kbd67/mkiirgb/v1/v1.h new file mode 100644 index 000000000000..96b5fef5efcf --- /dev/null +++ b/keyboards/kbdfans/kbd67/mkiirgb/v1/v1.h @@ -0,0 +1,32 @@ +/* Copyright 2021 DZTECH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once +#define XXX KC_NO +#include "quantum.h" +#define LAYOUT_65_ansi_blocker( \ + 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, K2D, K2E, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \ + K40, K41, K42, K45, K48, K4A, K4B, 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, XXX, K2D, K2E }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, K3D, K3E }, \ + { K40, K41, K42, XXX, XXX, K45, XXX, XXX, K48, XXX, K4A, K4B, XXX, K4D, K4E } \ +} diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v2/config.h b/keyboards/kbdfans/kbd67/mkiirgb/v2/config.h index 1ac9c770dbc0..ffdace7a5ff7 100644 --- a/keyboards/kbdfans/kbd67/mkiirgb/v2/config.h +++ b/keyboards/kbdfans/kbd67/mkiirgb/v2/config.h @@ -16,32 +16,62 @@ #define RGB_MATRIX_LED_FLUSH_LIMIT 26 #define DEBOUNCE 3 #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended #define RGB_MATRIX_KEYPRESSES #define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL -#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -#define DISABLE_RGB_MATRIX_BAND_SAT -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -#define DISABLE_RGB_MATRIX_SPLASH -#define DISABLE_RGB_MATRIX_MULTISPLASH -#define DISABLE_RGB_MATRIX_SOLID_SPLASH -#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH -#define DISABLE_RGB_MATRIX_DIGITAL_RAIN -#define DISABLE_RGB_MATRIX_RAINDROPS -#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS -#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 255 -#define DRIVER_ADDR_1 0b1110100 -#define DRIVER_ADDR_2 0b1110111 -#define DRIVER_COUNT 2 -#define DRIVER_1_LED_TOTAL 35 -#define DRIVER_2_LED_TOTAL 32 -#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +// #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +// #define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +// #define ENABLE_RGB_MATRIX_RAINDROPS +// #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +// #define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// #define ENABLE_RGB_MATRIX_SPLASH +// #define ENABLE_RGB_MATRIX_MULTISPLASH +// #define ENABLE_RGB_MATRIX_SOLID_SPLASH +// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH +# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 255 +# define DRIVER_ADDR_1 0b1110100 +# define DRIVER_ADDR_2 0b1110111 +# define DRIVER_COUNT 2 +# define DRIVER_1_LED_TOTAL 35 +# define DRIVER_2_LED_TOTAL 32 +# define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) #endif diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v2/readme.md b/keyboards/kbdfans/kbd67/mkiirgb/v2/readme.md index 57683caab9d1..af25471fe5e8 100644 --- a/keyboards/kbdfans/kbd67/mkiirgb/v2/readme.md +++ b/keyboards/kbdfans/kbd67/mkiirgb/v2/readme.md @@ -2,6 +2,10 @@ A hotswap 65% keyboard with USB C, inswitch RGB, and ESD protection. +Originally sold as a replacement PCB for the kbd67mkii when the V1 PCB failed. + +It has since been sold along with the D64 and KBD67 Lite R1/R2. + * Keyboard Maintainer: [moyi4681](https://github.com/moyi4681) * Hardware Supported: KBD67 Mk.II RGB V2 * Hardware Availability: [kbdfans](https://kbdfans.myshopify.com/) diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v2/rules.mk b/keyboards/kbdfans/kbd67/mkiirgb/v2/rules.mk index 39ea074875b1..87f590226bc9 100644 --- a/keyboards/kbdfans/kbd67/mkiirgb/v2/rules.mk +++ b/keyboards/kbdfans/kbd67/mkiirgb/v2/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output RGB_MATRIX_ENABLE = yes # Use RGB matrix RGB_MATRIX_DRIVER = IS31FL3731 NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v2/v2.c b/keyboards/kbdfans/kbd67/mkiirgb/v2/v2.c new file mode 100644 index 000000000000..37972c2500be --- /dev/null +++ b/keyboards/kbdfans/kbd67/mkiirgb/v2/v2.c @@ -0,0 +1,122 @@ +/* Copyright 2021 DZTECH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "v2.h" +#ifdef RGB_MATRIX_ENABLE +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { + + {0, C8_8, C7_8, C6_8}, // LA17 + {0, C9_8, C7_7, C6_7}, // LA16 + {0, C9_7, C8_7, C6_6}, // LA15 + {0, C9_6, C8_6, C7_6}, // LA14 + {0, C9_5, C8_5, C7_5}, // LA13 + {0, C9_4, C8_4, C7_4}, // LA12 + {0, C9_3, C8_3, C7_3}, // LA11 + {0, C9_2, C8_2, C7_2}, // LA10 + {0, C9_1, C8_1, C7_1}, // LA9 + {0, C2_9, C3_9, C4_9}, // LB0 + {0, C1_9, C3_10, C4_10}, // LB1 + {0, C1_10, C2_10, C4_11}, // LB2 + {0, C1_11, C2_11, C3_11}, // LB3 + {0, C1_13, C2_13, C3_13}, // LB5 + {0, C1_14, C2_14, C3_14}, // LB6 + + {0, C1_7, C2_7, C3_7}, // LA7 + {0, C1_6, C2_6, C3_6}, // LA6 + {0, C1_5, C2_5, C3_5}, // LA5 + {0, C1_4, C2_4, C3_4}, // LA4 + {0, C1_3, C2_3, C3_3}, // LA3 + {0, C1_2, C2_2, C4_3}, // LA2 + {0, C1_1, C3_2, C4_2}, // LA1 + {0, C2_1, C3_1, C4_1}, // LA0 + {0, C9_9, C8_9, C7_9}, // LB9 + {0, C9_10, C8_10, C7_10}, // LB10 + {0, C9_11, C8_11, C7_11}, // LB11 + {0, C9_12, C8_12, C7_12}, // LB12 + {0, C9_13, C8_13, C7_13}, // LB13 + {0, C9_14, C8_14, C7_14}, // LB14 + {0, C1_15, C2_15, C3_15}, // LB7 + + {0, C1_8, C2_8, C3_8}, // LA8 + {1, C9_6, C8_6, C7_6}, // LC14 + {1, C9_5, C8_5, C7_5}, // LC13 + {1, C9_4, C8_4, C7_4}, // LC12 + {1, C9_3, C8_3, C7_3}, // LC11 + {1, C9_2, C8_2, C7_2}, // LC10 + {1, C9_1, C8_1, C7_1}, // LC9 + {1, C2_9, C3_9, C4_9}, // LD0 + {1, C1_9, C3_10, C4_10}, // LD1 + {1, C1_10, C2_10, C4_11}, // LD2 + {1, C1_11, C2_11, C3_11}, // LD3 + {1, C1_12, C2_12, C3_12}, // LD4 + {1, C1_13, C2_13, C3_13}, // LD5 + {0, C1_16, C2_16, C3_16}, // LB8 + + {1, C9_8, C7_7, C6_7}, // LC16 + {1, C1_5, C2_5, C3_5}, // LC5 + {1, C1_4, C2_4, C3_4}, // LC4 + {1, C1_3, C2_3, C3_3}, // LC3 + {1, C1_2, C2_2, C4_3}, // LC2 + {1, C1_1, C3_2, C4_2}, // LC1 + {1, C9_9, C8_9, C7_9}, // LD9 + {1, C9_10, C8_10, C7_10}, // LD10 + {1, C9_11, C8_11, C7_11}, // LD11 + {1, C9_12, C8_12, C7_12}, // LD12 + {1, C1_14, C2_14, C3_14}, // LD6 + {1, C1_15, C2_15, C3_15}, // LD7 + {1, C1_16, C2_16, C3_16}, // LD8 + {0, C9_15, C8_15, C6_14}, // LB15 + + {1, C8_8, C7_8, C6_8}, // LC17 + {1, C1_8, C2_8, C3_8}, // LC8 + {1, C1_7, C2_7, C3_7}, // LC7 + {1, C2_1, C3_1, C4_1}, // LC0 + {1, C9_14, C8_14, C7_14}, // LD14 + {1, C9_15, C8_15, C6_14}, // LD15 + {1, C8_16, C7_16, C6_16}, // LD17 + {0, C8_16, C7_16, C6_16}, // LB17 + {0, C9_16, C7_15, C6_15}, // LB16 + +}; + +led_config_t g_led_config = { { + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }, + { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 }, + { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, NO_LED,42, 43 }, + { 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, NO_LED,56, 57 }, + { 58, 59, 60, NO_LED, NO_LED, 61, NO_LED, NO_LED, 62, NO_LED, 63, 64, NO_LED, 65, 66 } +}, { + {0,0},{15,0},{30,0},{45,0},{60,0},{75,0},{90,0},{105,0},{120,0},{135,0},{150,0},{165,0},{180,0},{203,0},{224,0}, + {4,16},{23,16},{38,16},{53,16},{68,16},{83,16},{98,16},{113,16},{128,16},{143,16},{158,16},{173,16},{188,16},{206,16},{224,16}, + {6,32},{26,32},{41,32},{56,32},{71,32},{86,32},{101,32},{116,32},{131,32},{146,32},{161,32},{176,32},{201,32},{224,32}, + {9,48},{34,48},{49,48},{64,48},{79,48},{94,48},{109,48},{124,48},{139,48},{154,48},{169,48},{189,48},{210,48},{224,48}, + {2,64},{21,64},{39,64},{96,64},{152,64},{171,64},{195,64},{210,64},{224,64} +}, { + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 1, 1, 1, 4, 1, 1, 1, 1, 1 +} }; + + +__attribute__ ((weak)) +void rgb_matrix_indicators_user(void) { + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color(30, 0xFF, 0xFF, 0xFF); + } +} +#endif diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v2/v2.h b/keyboards/kbdfans/kbd67/mkiirgb/v2/v2.h new file mode 100644 index 000000000000..96b5fef5efcf --- /dev/null +++ b/keyboards/kbdfans/kbd67/mkiirgb/v2/v2.h @@ -0,0 +1,32 @@ +/* Copyright 2021 DZTECH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once +#define XXX KC_NO +#include "quantum.h" +#define LAYOUT_65_ansi_blocker( \ + 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, K2D, K2E, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \ + K40, K41, K42, K45, K48, K4A, K4B, 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, XXX, K2D, K2E }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, K3D, K3E }, \ + { K40, K41, K42, XXX, XXX, K45, XXX, XXX, K48, XXX, K4A, K4B, XXX, K4D, K4E } \ +} diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v3/config.h b/keyboards/kbdfans/kbd67/mkiirgb/v3/config.h new file mode 100755 index 000000000000..5b50c415aedf --- /dev/null +++ b/keyboards/kbdfans/kbd67/mkiirgb/v3/config.h @@ -0,0 +1,104 @@ +/* Copyright 2021 DZTECH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4B42 // KB +#define PRODUCT_ID 0x1226 +#define DEVICE_VER 0x0002 +#define MANUFACTURER KBDfans +#define PRODUCT kbd67mkiirgb v3 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 +#define MATRIX_ROW_PINS { F0, F1, F4, E6, C6 } +#define MATRIX_COL_PINS { F7, F6, F5, C7, B0, B1, B2, B3, B4, D7, D6, D4, D5, D3, D2} +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION +#ifdef RGB_MATRIX_ENABLE +#define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects +#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended +#define USB_SUSPEND_WAKEUP_DELAY 5000 +#define RGB_MATRIX_KEYPRESSES +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +// #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +// #define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +// #define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// #define ENABLE_RGB_MATRIX_SPLASH +// #define ENABLE_RGB_MATRIX_MULTISPLASH +// #define ENABLE_RGB_MATRIX_SOLID_SPLASH +// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + +#define RGB_MATRIX_LED_PROCESS_LIMIT 4 +#define RGB_MATRIX_LED_FLUSH_LIMIT 26 +#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL +#define DRIVER_ADDR_1 0b0110000 +#define DRIVER_COUNT 1 +#define DRIVER_LED_TOTAL 67 +#define DRIVER_INDICATOR_LED_TOTAL 0 +#endif diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v3/readme.md b/keyboards/kbdfans/kbd67/mkiirgb/v3/readme.md new file mode 100644 index 000000000000..7442df9c6e32 --- /dev/null +++ b/keyboards/kbdfans/kbd67/mkiirgb/v3/readme.md @@ -0,0 +1,19 @@ +# KBD67 Mk.II RGB V3 (Hotswap) + +A hotswap 65% keyboard with USB C, inswitch RGB, and ESD protection. + +Originally sold as a replacement to the V2 as it offered a much simpler firmware flashing experience for customers. This board expects `.bin` files. + +As of 10/2021 this board has no visible markings differentiating it from the previous V2. + +It has since been sold with the KBD67Lite R2, D64, and Blade 65. + +* Keyboard Maintainer: [moyi4681](https://github.com/moyi4681) +* Hardware Supported: KBD67 Mk.II RGB V3 +* Hardware Availability: [kbdfans](https://kbdfans.myshopify.com/) + +Make example for this keyboard (after setting up your build environment): + + make kbdfans/kbd67/mkiirgb/v3: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/kbdfans/kbd67/mkiirgb/v3/rules.mk b/keyboards/kbdfans/kbd67/mkiirgb/v3/rules.mk new file mode 100755 index 000000000000..20b2cf296c17 --- /dev/null +++ b/keyboards/kbdfans/kbd67/mkiirgb/v3/rules.mk @@ -0,0 +1,25 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = lufa-ms +BOOTLOADER_SIZE = 6144 + +# 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 +# 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 +RGB_MATRIX_ENABLE = yes # Use RGB matrix +RGB_MATRIX_DRIVER = IS31FL3741 +LTO_ENABLE = yes + +LAYOUTS = 65_ansi_blocker diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v3/v3.c b/keyboards/kbdfans/kbd67/mkiirgb/v3/v3.c new file mode 100755 index 000000000000..85806aff51ab --- /dev/null +++ b/keyboards/kbdfans/kbd67/mkiirgb/v3/v3.c @@ -0,0 +1,127 @@ +/* Copyright 2021 DZTECH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "v3.h" + +#ifdef RGB_MATRIX_ENABLE + +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { + {0, CS21_SW1, CS20_SW1, CS19_SW1}, + {0, CS21_SW2, CS20_SW2, CS19_SW2}, + {0, CS21_SW3, CS20_SW3, CS19_SW3}, + {0, CS21_SW4, CS20_SW4, CS19_SW4}, + {0, CS21_SW5, CS20_SW5, CS19_SW5}, + {0, CS21_SW6, CS20_SW6, CS19_SW6}, + {0, CS21_SW7, CS20_SW7, CS19_SW7}, + {0, CS21_SW8, CS20_SW8, CS19_SW8}, + {0, CS24_SW1, CS23_SW1, CS22_SW1}, + {0, CS24_SW2, CS23_SW2, CS22_SW2}, + {0, CS24_SW3, CS23_SW3, CS22_SW3}, + {0, CS24_SW4, CS23_SW4, CS22_SW4}, + {0, CS24_SW5, CS23_SW5, CS22_SW5}, + {0, CS24_SW6, CS23_SW6, CS22_SW6}, + {0, CS24_SW7, CS23_SW7, CS22_SW7}, + + {0, CS15_SW1, CS14_SW1, CS13_SW1}, + {0, CS15_SW2, CS14_SW2, CS13_SW2}, + {0, CS15_SW3, CS14_SW3, CS13_SW3}, + {0, CS15_SW4, CS14_SW4, CS13_SW4}, + {0, CS15_SW5, CS14_SW5, CS13_SW5}, + {0, CS15_SW6, CS14_SW6, CS13_SW6}, + {0, CS15_SW7, CS14_SW7, CS13_SW7}, + {0, CS15_SW8, CS14_SW8, CS13_SW8}, + {0, CS30_SW1, CS29_SW1, CS28_SW1}, + {0, CS30_SW2, CS29_SW2, CS28_SW2}, + {0, CS30_SW3, CS29_SW3, CS28_SW3}, + {0, CS30_SW4, CS29_SW4, CS28_SW4}, + {0, CS30_SW5, CS29_SW5, CS28_SW5}, + {0, CS30_SW6, CS29_SW6, CS28_SW6}, + {0, CS30_SW7, CS29_SW7, CS28_SW7}, + + {0, CS12_SW1, CS11_SW1, CS10_SW1}, + {0, CS12_SW2, CS11_SW2, CS10_SW2}, + {0, CS12_SW3, CS11_SW3, CS10_SW3}, + {0, CS12_SW4, CS11_SW4, CS10_SW4}, + {0, CS12_SW5, CS11_SW5, CS10_SW5}, + {0, CS12_SW6, CS11_SW6, CS10_SW6}, + {0, CS12_SW7, CS11_SW7, CS10_SW7}, + {0, CS12_SW8, CS11_SW8, CS10_SW8}, + {0, CS33_SW1, CS32_SW1, CS31_SW1}, + {0, CS33_SW2, CS32_SW2, CS31_SW2}, + {0, CS33_SW3, CS32_SW3, CS31_SW3}, + {0, CS33_SW4, CS32_SW4, CS31_SW4}, + {0, CS33_SW5, CS32_SW5, CS31_SW5}, + {0, CS33_SW7, CS32_SW7, CS31_SW7}, + + {0, CS9_SW1, CS8_SW1, CS7_SW1}, + {0, CS9_SW2, CS8_SW2, CS7_SW2}, + {0, CS9_SW3, CS8_SW3, CS7_SW3}, + {0, CS9_SW4, CS8_SW4, CS7_SW4}, + {0, CS9_SW5, CS8_SW5, CS7_SW5}, + {0, CS9_SW6, CS8_SW6, CS7_SW6}, + {0, CS9_SW7, CS8_SW7, CS7_SW7}, + {0, CS9_SW8, CS8_SW8, CS7_SW8}, + {0, CS36_SW1, CS35_SW1, CS34_SW1}, + {0, CS36_SW2, CS35_SW2, CS34_SW2}, + {0, CS36_SW3, CS35_SW3, CS34_SW3}, + {0, CS36_SW4, CS35_SW4, CS34_SW4}, + {0, CS36_SW5, CS35_SW5, CS34_SW5}, + {0, CS36_SW7, CS35_SW7, CS34_SW7}, + + {0, CS3_SW1, CS2_SW1, CS1_SW1}, + {0, CS3_SW2, CS2_SW2, CS1_SW2}, + {0, CS3_SW3, CS2_SW3, CS1_SW3}, + {0, CS3_SW6, CS2_SW6, CS1_SW6}, +// {0, CS39_SW1, CS38_SW1, CS37_SW1}, + {0, CS39_SW2, CS38_SW2, CS37_SW2}, + {0, CS39_SW3, CS38_SW3, CS37_SW3}, + {0, CS39_SW4, CS38_SW4, CS37_SW4}, + {0, CS39_SW5, CS38_SW5, CS37_SW5}, + {0, CS39_SW7, CS38_SW7, CS37_SW7} + +}; +led_config_t g_led_config = { { + // Key Matrix to LED Index + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }, + { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 }, + { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, NO_LED, 42, 43 }, + { 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, NO_LED, 56, 57 }, + { 58, 59, 60, NO_LED, NO_LED, 61, NO_LED, NO_LED, 62, NO_LED, 63, 64, NO_LED, 65, 66 } +}, { + // LED Index to Physical Position + {6,10},{20,10},{34,10},{48,10},{62,10},{76,10},{90,10},{104,10},{118,10},{132,10},{146,10},{160,10},{174,10}, {196,10},{217,10}, + {9,23}, {27,23},{41,23},{55,23},{69,23},{83,23},{97,23},{111,23},{125,23},{139,23},{153,23},{167,23},{181,23}, {199,23},{217,23}, + {11,36},{30,36},{44,36},{58,36},{72,36},{86,36},{101,36},{115,36},{129,36},{143,36},{157,36},{171,36}, {194,36},{217,36}, + {15,49}, {38,49},{52,49},{66,49},{80,49},{94,49},{108,49},{122,49},{136,49},{150,49},{164,49}, {184,49},{203,49},{217,49}, + {8,62},{25,62},{43,62}, {95,62}, {149,62},{166,62}, {189,62},{203,62},{217,62} + +}, { + // LED Index to Flag + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 1, 1, 1, 4, 1, 1, 1, 1, 1 +} }; + + +__attribute__ ((weak)) +void rgb_matrix_indicators_user(void) { + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color(30, 0xFF, 0xFF, 0xFF); + } +} +#endif diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v3/v3.h b/keyboards/kbdfans/kbd67/mkiirgb/v3/v3.h new file mode 100755 index 000000000000..7b3c387fe3dd --- /dev/null +++ b/keyboards/kbdfans/kbd67/mkiirgb/v3/v3.h @@ -0,0 +1,33 @@ +/* Copyright 2021 DZTECH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once +#define XXX KC_NO +#include "quantum.h" +#define LAYOUT_65_ansi_blocker( \ + 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, K2D, K2E, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \ + K40, K41, K42, K45, K48, K4A, K4B, 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, XXX, K2D, K2E }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, K3D, K3E }, \ + { K40, K41, K42, XXX, XXX, K45, XXX, XXX, K48, XXX, K4A, K4B, XXX, K4D, K4E } \ +} + diff --git a/keyboards/kbdfans/kbd67/readme.md b/keyboards/kbdfans/kbd67/readme.md index 2f5d10fa079c..f3aed999a1e6 100644 --- a/keyboards/kbdfans/kbd67/readme.md +++ b/keyboards/kbdfans/kbd67/readme.md @@ -1,19 +1,19 @@ # KBD67 -A 65% keyboard sold in several variants. +A 65% keyboard sold in several variants supporting KBDFan's different 65% lineups each with their own different revisions. -1. [Rev1](rev1/): Released in early 2018. Atmega32u4 soldered keyboard. Sold under the name "KBD65". -2. [HotSwap](hotswap/): Released in late 2018. Atmega32U4 hotswap single layout keyboard. +1. [Rev1](rev1/): Released in early 2018. Atmega32u4 soldered keyboard. Sold under the name "KBD65". +2. [HotSwap](hotswap/): Released in late 2018. Atmega32U4 hotswap single layout keyboard. 3. [Rev2](rev2/): Released in April/May 2019. Atmega32u4 soldered keyboard. 4. [MKII](mkii_soldered/): Released in September 2019, designed by ai03. Atmega32u4 soldered keyboard. ESD Protected -5. [MKII RGB V1](mkiirgb/v1/): Released in September 2019. Arm hotswap board. +5. [MKII RGB V1](mkiirgb/v1/): Released in September 2019. Arm hotswap board. 6. [MKII RGB V2](mkiirgb/v2/): Released in December 2019. Atmega32u4 hotswap board. ESD Protected. - +6. [MKII RGB V2*](mkiirgb/v3/): Released in March 2021. Atmega32u4 hotswap board. ESD Protected. Uses LUFA bootloader and different inswitch RGB implementation. No visible markings differentiating it from the previous V2. **Firmware files are SPECIFIC to each board. Firmware files from one, will not work on the other.** Please use the `.hex` or `.bin` appropriate for your board. * Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin), [moyi4681](https://github.com/moyi4681) -* Hardware Supported: KBD67 rev1, rev2, hotswap, mkii, mkiirgb v1, mkiirgb v2 +* Hardware Supported: KBD67 rev1, rev2, hotswap, mkii, mkiirgb v1, mkiirgb v2, etc. * Hardware Availability: KBDFans Make examples for this keyboard (after setting up your build environment): @@ -21,8 +21,9 @@ Make examples for this keyboard (after setting up your build environment): make kbdfans/kbd67/rev1:default make kbdfans/kbd67/rev2:default make kbdfans/kbd67/hotswap:default - make kbdfans/kbd67/mkii_soldered:default - make kbdfans/kbd67/mkiirgb/v1:default - make kbdfans/kbd67/mkiirgb/v2:default + make kbdfans/kbd67/mkii_soldered:default + make kbdfans/kbd67/mkiirgb/v1:default + make kbdfans/kbd67/mkiirgb/v2:default + make kbdfans/kbd67/mkiirgb/v3: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/kbdfans/kbd67/rev1/config.h b/keyboards/kbdfans/kbd67/rev1/config.h index b12b8368308f..04ea9c9f1b95 100644 --- a/keyboards/kbdfans/kbd67/rev1/config.h +++ b/keyboards/kbdfans/kbd67/rev1/config.h @@ -116,54 +116,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -182,26 +134,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/kbdfans/kbd67/rev1/info.json b/keyboards/kbdfans/kbd67/rev1/info.json index 70a926a7f198..6b7219f891e8 100644 --- a/keyboards/kbdfans/kbd67/rev1/info.json +++ b/keyboards/kbdfans/kbd67/rev1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "kbd67", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":2.75}, {"x":6.5, "y":4, "w":1.25}, {"x":7.75, "y":4, "w":2.25}, {"x":10, "y":4}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] diff --git a/keyboards/kbdfans/kbd67/rev1/keymaps/default/config.h b/keyboards/kbdfans/kbd67/rev1/keymaps/default/config.h index a3ed4f762a6e..90fb10ebbee6 100644 --- a/keyboards/kbdfans/kbd67/rev1/keymaps/default/config.h +++ b/keyboards/kbdfans/kbd67/rev1/keymaps/default/config.h @@ -16,4 +16,4 @@ #pragma once -// place overrides here +#define LAYER_STATE_8BIT diff --git a/keyboards/kbdfans/kbd67/rev1/keymaps/default/keymap.c b/keyboards/kbdfans/kbd67/rev1/keymaps/default/keymap.c index 9e0065ff2e9c..0f674c3ad855 100644 --- a/keyboards/kbdfans/kbd67/rev1/keymaps/default/keymap.c +++ b/keyboards/kbdfans/kbd67/rev1/keymaps/default/keymap.c @@ -85,15 +85,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/kbdfans/kbd67/rev1/readme.md b/keyboards/kbdfans/kbd67/rev1/readme.md index 1d92a41f7c4a..0e9c66b24459 100644 --- a/keyboards/kbdfans/kbd67/rev1/readme.md +++ b/keyboards/kbdfans/kbd67/rev1/readme.md @@ -1,10 +1,10 @@ # KBD67 rev1 -65% keyboard with blocker. +65% keyboard with RGB underglow originally sold for the Tofu 65 and Tada 68 keyboards. -Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin) -Hardware Supported: KBD67 PCB (Sometimes sold under the name "KBD65") -Hardware Availability: KBDFans [Keyboard Kit](https://kbdfans.cn/products/coming-soon-kbd67-mechanical-keyboard-diy-kit), [PCB](https://kbdfans.cn/collections/65/products/kbd65-65-custom-mechanical-keyboard-pcb) +* Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin) +* Hardware Supported: KBD67 PCB (Sometimes sold under the name "KBD65") +* Hardware Availability: KBDFans [Keyboard Kit](https://kbdfans.cn/products/coming-soon-kbd67-mechanical-keyboard-diy-kit), [PCB](https://kbdfans.cn/collections/65/products/kbd65-65-custom-mechanical-keyboard-pcb) Make example for this keyboard (after setting up your build environment): diff --git a/keyboards/kbdfans/kbd67/rev1/rules.mk b/keyboards/kbdfans/kbd67/rev1/rules.mk index 786722eb7d21..4bc37f76d49a 100644 --- a/keyboards/kbdfans/kbd67/rev1/rules.mk +++ b/keyboards/kbdfans/kbd67/rev1/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = 65_ansi diff --git a/keyboards/kbdfans/kbd67/rev2/config.h b/keyboards/kbdfans/kbd67/rev2/config.h index df5c9baba1f0..ce6c990d693f 100644 --- a/keyboards/kbdfans/kbd67/rev2/config.h +++ b/keyboards/kbdfans/kbd67/rev2/config.h @@ -37,25 +37,24 @@ along with this program. If not, see . /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW +/* Debouncing reduces chatter */ +#define DEBOUNCE 5 + +/* indicators */ +#define LED_CAPS_LOCK_PIN D4 +#define LED_PIN_ON_STATE 0 + /* number of backlight levels */ #define BACKLIGHT_PIN B5 #ifdef BACKLIGHT_PIN #define BACKLIGHT_LEVELS 3 #endif -/* 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 RGB_DI_PIN E2 #ifdef RGB_DI_PIN #define RGBLIGHT_ANIMATIONS -#define RGBLED_NUM 20 +#define RGBLED_NUM 16 #define RGBLIGHT_HUE_STEP 8 #define RGBLIGHT_SAT_STEP 8 #define RGBLIGHT_VAL_STEP 8 diff --git a/keyboards/kbdfans/kbd67/rev2/info.json b/keyboards/kbdfans/kbd67/rev2/info.json index b5cc7965440d..7e23e70c407a 100644 --- a/keyboards/kbdfans/kbd67/rev2/info.json +++ b/keyboards/kbdfans/kbd67/rev2/info.json @@ -2,8 +2,6 @@ "keyboard_name": "kbd67v2", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ @@ -235,7 +233,7 @@ {"x":14, "y":4}, {"x":15, "y":4}] }, - "LAYOUT_65_ansi_blocker_splitbs": { + "LAYOUT_65_ansi_blocker_split_bs": { "layout": [ {"x":0, "y":0}, {"x":1, "y":0}, diff --git a/keyboards/kbdfans/kbd67/rev2/keymaps/default/keymap.c b/keyboards/kbdfans/kbd67/rev2/keymaps/default/keymap.c index 9e0065ff2e9c..0f674c3ad855 100644 --- a/keyboards/kbdfans/kbd67/rev2/keymaps/default/keymap.c +++ b/keyboards/kbdfans/kbd67/rev2/keymaps/default/keymap.c @@ -85,15 +85,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/kbdfans/kbd67/rev2/keymaps/tucznak/rules.mk b/keyboards/kbdfans/kbd67/rev2/keymaps/tucznak/rules.mk index 108a7517fa7e..3635874b4ece 100644 --- a/keyboards/kbdfans/kbd67/rev2/keymaps/tucznak/rules.mk +++ b/keyboards/kbdfans/kbd67/rev2/keymaps/tucznak/rules.mk @@ -1,7 +1,7 @@ # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/kbdfans/kbd67/rev2/readme.md b/keyboards/kbdfans/kbd67/rev2/readme.md index 0909f781d06f..5181de3a9921 100644 --- a/keyboards/kbdfans/kbd67/rev2/readme.md +++ b/keyboards/kbdfans/kbd67/rev2/readme.md @@ -1,10 +1,10 @@ # KBD67 rev2 -65% pcb with blocker. Revision 2 (Manufactured after 05/01/19). +65% keyboard with RGB underglow originally sold for the Tofu 65 and Tada 68 keyboards. -Keyboard Maintainer: [Vorror](https://github.com/vorror) -Hardware Supported: KBD67v2 PCB (Sometimes sold under the name "KBD65") -Hardware Availability: KBDFans [Keyboard Kit](https://kbdfans.cn/products/coming-soon-kbd67-mechanical-keyboard-diy-kit), [PCB](https://kbdfans.cn/collections/65/products/kbd65-65-custom-mechanical-keyboard-pcb) +* Keyboard Maintainer: [Vorror](https://github.com/vorror) +* Hardware Supported: KBD67v2 PCB (Sometimes sold under the name "KBD65") +* Hardware Availability: KBDFans [Keyboard Kit](https://kbdfans.cn/products/coming-soon-kbd67-mechanical-keyboard-diy-kit), [PCB](https://kbdfans.cn/collections/65/products/kbd65-65-custom-mechanical-keyboard-pcb) Make example for this keyboard (after setting up your build environment): diff --git a/keyboards/kbdfans/kbd67/rev2/rev2.c b/keyboards/kbdfans/kbd67/rev2/rev2.c index 10f848d2f94c..803d923b9222 100644 --- a/keyboards/kbdfans/kbd67/rev2/rev2.c +++ b/keyboards/kbdfans/kbd67/rev2/rev2.c @@ -1,12 +1 @@ -#include "rev2.h" -void matrix_init_kb(void) { - setPinOutput(D4); - matrix_init_user(); -} -bool led_update_kb(led_t led_state) { - bool res = led_update_user(led_state); - if(res) { - writePin(D4, !led_state.caps_lock); - } - return res; -} +#include "rev2.h" \ No newline at end of file diff --git a/keyboards/kbdfans/kbd67/rev2/rules.mk b/keyboards/kbdfans/kbd67/rev2/rules.mk index a51b306da03f..42cb36270f28 100644 --- a/keyboards/kbdfans/kbd67/rev2/rules.mk +++ b/keyboards/kbdfans/kbd67/rev2/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 +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 = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = 65_ansi 65_iso 65_ansi_blocker 65_ansi_blocker_split_bs 65_ansi_split_bs diff --git a/keyboards/kbdfans/kbd6x/config.h b/keyboards/kbdfans/kbd6x/config.h index 390e5a66e532..332898383e63 100644 --- a/keyboards/kbdfans/kbd6x/config.h +++ b/keyboards/kbdfans/kbd6x/config.h @@ -103,54 +103,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -169,23 +121,3 @@ along with this program. If not, see . #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - diff --git a/keyboards/kbdfans/kbd6x/info.json b/keyboards/kbdfans/kbd6x/info.json index 201c6bd3cf72..2781eead1086 100644 --- a/keyboards/kbdfans/kbd6x/info.json +++ b/keyboards/kbdfans/kbd6x/info.json @@ -2,11 +2,9 @@ "keyboard_name": "kbd6x", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { "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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"Win", "x":12.5, "y":4}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}] } } -} \ No newline at end of file +} diff --git a/keyboards/kbdfans/kbd6x/keymaps/default/keymap.c b/keyboards/kbdfans/kbd6x/keymaps/default/keymap.c index e2e96fc63486..0aae1f906b8c 100644 --- a/keyboards/kbdfans/kbd6x/keymaps/default/keymap.c +++ b/keyboards/kbdfans/kbd6x/keymaps/default/keymap.c @@ -32,17 +32,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), }; - - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - diff --git a/keyboards/kbdfans/kbd6x/keymaps/konstantin/config.h b/keyboards/kbdfans/kbd6x/keymaps/konstantin/config.h index 37f4e42c71d9..4b511eb8484f 100644 --- a/keyboards/kbdfans/kbd6x/keymaps/konstantin/config.h +++ b/keyboards/kbdfans/kbd6x/keymaps/konstantin/config.h @@ -1,5 +1,3 @@ #pragma once -#define DYNAMIC_KEYMAP_LAYER_COUNT 3 - #define LAYER_FN diff --git a/keyboards/kbdfans/kbd6x/keymaps/konstantin/keymap.c b/keyboards/kbdfans/kbd6x/keymaps/konstantin/keymap.c index 304234a3f402..43bd06da9b91 100644 --- a/keyboards/kbdfans/kbd6x/keymaps/konstantin/keymap.c +++ b/keyboards/kbdfans/kbd6x/keymaps/konstantin/keymap.c @@ -1,70 +1,38 @@ #include QMK_KEYBOARD_H #include "konstantin.h" -enum keycodes_keymap { - RCTRL = RANGE_KEYMAP, -}; - enum layers_keymap { L_RCTRL = LAYERS_KEYMAP, }; -void eeconfig_init_keymap(void) { - rgblight_sethsv(MODERN_DOLCH_RED); - rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL); -} - -bool indicator_light = false; - -bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case RGB_TOG ... RGB_SPD: - // Disable RGB controls when Fn/Caps indicator lights are on - if (indicator_light) { - return false; - } - // Shift+Toggle = reset RGB - if (record->event.pressed && keycode == RGB_TOG && get_mods() & MOD_MASK_SHIFT) { - eeconfig_init_keymap(); - return false; - } - break; - - // Combined RCtrl and layer - case RCTRL: - if (record->event.pressed) { - register_code(KC_RCTRL); - layer_on(L_RCTRL); - } else { - unregister_code(KC_RCTRL); - layer_off(L_RCTRL); - } - break; - } +enum keycodes_keymap { + RCTRL = RANGE_KEYMAP, +}; - return true; +static inline void reset_light(void) { + rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL); + rgblight_sethsv(MODERN_DOLCH_RED); } static inline void fn_light(void) { rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); rgblight_sethsv_noeeprom(modern_dolch_red.h, modern_dolch_red.s, rgblight_get_val()); - indicator_light = true; } static inline void caps_light(void) { rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); rgblight_sethsv_noeeprom(modern_dolch_cyan.h, modern_dolch_cyan.s, rgblight_get_val()); - indicator_light = true; } static inline void restore_light(void) { rgblight_config_t saved = { .raw = eeconfig_read_rgblight() }; - rgblight_sethsv_noeeprom(saved.hue, saved.sat, saved.val); rgblight_mode_noeeprom(saved.mode); - indicator_light = false; + rgblight_sethsv_noeeprom(saved.hue, saved.sat, saved.val); } -static void check_light_layer(uint32_t state) { +static bool last_checked_layer; + +static void check_light_layer(layer_state_t state) { if (IS_LAYER_ON_STATE(state, L_FN)) { fn_light(); } else if (IS_HOST_LED_ON(USB_LED_CAPS_LOCK)) { @@ -72,22 +40,34 @@ static void check_light_layer(uint32_t state) { } else { restore_light(); } + last_checked_layer = true; } -static void check_light_led(uint8_t usb_led) { - if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) { +static void check_light_led(uint8_t leds) { + if (IS_LED_ON(leds, USB_LED_CAPS_LOCK)) { caps_light(); } else if (IS_LAYER_ON(L_FN)) { fn_light(); } else { restore_light(); } + last_checked_layer = false; +} + +static void inline check_light(void) { + last_checked_layer + ? check_light_layer(layer_state) + : check_light_led(host_keyboard_leds()); +} + +void eeconfig_init_keymap(void) { + reset_light(); } static bool skip_led = false; -uint32_t layer_state_set_keymap(uint32_t state) { - static uint32_t prev_state = L_BASE; +layer_state_t layer_state_set_keymap(layer_state_t state) { + static layer_state_t prev_state = L_BASE; if (IS_LAYER_ON_STATE(state, L_FN) != IS_LAYER_ON_STATE(prev_state, L_FN)) { check_light_layer(state); // Fn state changed since last time skip_led = IS_LAYER_ON_STATE(state, L_FN); @@ -104,6 +84,37 @@ void led_set_keymap(uint8_t usb_led) { check_light_led(usb_led); } +bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case RGB_TOG ... RGB_SPD: + if (record->event.pressed) { + // Shift+Toggle = reset RGB + if (keycode == RGB_TOG && get_mods() & MOD_MASK_SHIFT) { + reset_light(); + return false; + } + restore_light(); + } else { + check_light(); + } + break; + + // Combined RCtrl and layer + // Cannot use LM(L_RCTRL, MOD_RCTL) because it sends LCtrl instead of RCtrl + case RCTRL: + if (record->event.pressed) { + register_code(KC_RCTRL); + layer_on(L_RCTRL); + } else { + unregister_code(KC_RCTRL); + layer_off(L_RCTRL); + } + break; + } + + return true; +} + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Base layer * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ @@ -157,7 +168,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ * │ │RTg│RV-│RV+│RMd│ │ │ │ │ │ │ │ │ * └─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┘ - * │DPR│DstNA│ │ │ │ + * │DPR│DstNA│ │RGui │ │ * └───┴─────┴───────────────────────────┴─────┴───┘ */ [L_RCTRL] = LAYOUT( @@ -165,6 +176,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, TOP, MV_UP, BOTTOM, TAB_PRV, _______, _______, _______, _______, _______, _______, _______, _______, DEL_NXT, _______, MV_LEFT, MV_DOWN, MV_RGHT, TAB_NXT, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_VAD, RGB_VAI, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, - XXXXXXX, DST_P_R, DST_N_A, _______, _______, _______, XXXXXXX + XXXXXXX, DST_P_R, DST_N_A, _______, KC_RGUI, _______, XXXXXXX ), }; diff --git a/keyboards/kbdfans/kbd6x/keymaps/konstantin/rules.mk b/keyboards/kbdfans/kbd6x/keymaps/konstantin/rules.mk index e2f34468a62d..9ce299ed6860 100644 --- a/keyboards/kbdfans/kbd6x/keymaps/konstantin/rules.mk +++ b/keyboards/kbdfans/kbd6x/keymaps/konstantin/rules.mk @@ -1,7 +1,7 @@ # Generic features -BOOTMAGIC_ENABLE = lite +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite COMMAND_ENABLE = yes -CONSOLE_ENABLE = no +CONSOLE_ENABLE = yes EXTRAKEY_ENABLE = yes MOUSEKEY_ENABLE = yes NKRO_ENABLE = yes diff --git a/keyboards/kbdfans/kbd6x/keymaps/othi/keymap.c b/keyboards/kbdfans/kbd6x/keymaps/othi/keymap.c index 1e0fc8ad7ee1..6bbbdd87c1b6 100644 --- a/keyboards/kbdfans/kbd6x/keymaps/othi/keymap.c +++ b/keyboards/kbdfans/kbd6x/keymaps/othi/keymap.c @@ -29,15 +29,15 @@ void eeconfig_init_user(void) { set_unicode_input_mode(UC_LNX); } -#define DE_AE UC(0x00E4) -#define DE_SS UC(0x00DF) -#define DE_OE UC(0x00F6) -#define DE_UE UC(0x00FC) -#define DE_AE_CAP UC(0x00C4) -#define DE_OE_CAP UC(0x00D6) -#define DE_UE_CAP UC(0x00DC) - -uint32_t layer_state_set_user(uint32_t state) { +#define DE_ADIA UC(0x00E4) +#define DE_SS UC(0x00DF) +#define DE_ODIA UC(0x00F6) +#define DE_UDIA UC(0x00FC) +#define DE_ADIA_CAP UC(0x00C4) +#define DE_ODIA_CAP UC(0x00D6) +#define DE_UDIA_CAP UC(0x00DC) + +layer_state_t layer_state_set_user(layer_state_t state) { switch (biton32(state)) { case NM_MODE: rgblight_setrgb (0x00, 0x66, 0x00); @@ -174,15 +174,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [ACCENT] = LAYOUT( _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, - _______, RGB_TOG, RGB_MODE_PLAIN, _______, _______, _______, _______, _______, DE_UE, _______, _______, _______, _______, _______, - _______, DE_AE, UC_Z, DE_SS, _______, _______, _______, _______, _______, _______, DE_OE, _______, _______, + _______, RGB_TOG, RGB_MODE_PLAIN, _______, _______, _______, _______, _______, DE_UDIA, _______, _______, _______, _______, _______, + _______, DE_ADIA, UC_Z, DE_SS, _______, _______, _______, _______, _______, _______, DE_ODIA, _______, _______, OSL(ACCENT_CAP), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TO(CL), _______, _______, _______, _______, _______, _______, _______ ), [ACCENT_CAP] = LAYOUT( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, DE_UE_CAP, _______, _______, _______, _______, _______, - _______, DE_AE_CAP, _______, DE_SS, _______, _______, _______, _______, _______, _______, DE_OE_CAP, _______, TO(CL), + _______, _______, _______, _______, _______, _______, _______, _______, DE_UDIA_CAP, _______, _______, _______, _______, _______, + _______, DE_ADIA_CAP, _______, DE_SS, _______, _______, _______, _______, _______, _______, DE_ODIA_CAP, _______, TO(CL), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), diff --git a/keyboards/kbdfans/kbd6x/keymaps/othi/rules.mk b/keyboards/kbdfans/kbd6x/keymaps/othi/rules.mk index 00bd80ef0d31..9a4459c2891f 100644 --- a/keyboards/kbdfans/kbd6x/keymaps/othi/rules.mk +++ b/keyboards/kbdfans/kbd6x/keymaps/othi/rules.mk @@ -1,4 +1,4 @@ -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/kbdfans/kbd6x/keymaps/peott-fr/keymap.c b/keyboards/kbdfans/kbd6x/keymaps/peott-fr/keymap.c new file mode 100644 index 000000000000..c33982a51704 --- /dev/null +++ b/keyboards/kbdfans/kbd6x/keymaps/peott-fr/keymap.c @@ -0,0 +1,23 @@ +/* Copyright 2021 Pierre-Emmanuel Ott + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT(KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, LT(2,KC_HOME), LCTL_T(KC_MPRV), LGUI_T(KC_MPLY), LALT_T(KC_MNXT), LT(1,KC_SPC), RALT_T(KC_DEL), KC_APP, RCTL_T(KC_END)), + [1] = LAYOUT(KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_UP, KC_RBRC, KC_HOME, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_MYCM, KC_PSCR, KC_ENT, KC_BSPC, KC_TRNS, KC_WREF, KC_WBAK, KC_WFWD, KC_WHOM, KC_TRNS, KC_PGUP, KC_TRNS, KC_TRNS, KC_VOLD, KC_TRNS, KC_VOLU, KC_TRNS, KC_PGDN), + [2] = LAYOUT(RGB_TOG, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_TRNS, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_TRNS, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_UP, KC_TRNS, KC_TRNS, KC_CAPS, KC_P4, KC_P5, KC_P6, KC_PCMM, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_LEFT, KC_RGHT, KC_TRNS, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PEQL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DOWN, KC_TRNS, KC_TRNS, KC_TRNS, KC_P0, KC_PDOT, KC_PENT, KC_TRNS, KC_TRNS, KC_TRNS) +}; diff --git a/keyboards/kbdfans/kbd6x/keymaps/wanleg/rules.mk b/keyboards/kbdfans/kbd6x/keymaps/wanleg/rules.mk index 92cc41e21296..76c2575819e2 100644 --- a/keyboards/kbdfans/kbd6x/keymaps/wanleg/rules.mk +++ b/keyboards/kbdfans/kbd6x/keymaps/wanleg/rules.mk @@ -1,3 +1,3 @@ -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite EXTRAKEY_ENABLE = no # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) \ No newline at end of file diff --git a/keyboards/kbdfans/kbd6x/readme.md b/keyboards/kbdfans/kbd6x/readme.md index 1728c8c21bfc..1fd1d2848a7d 100644 --- a/keyboards/kbdfans/kbd6x/readme.md +++ b/keyboards/kbdfans/kbd6x/readme.md @@ -2,9 +2,9 @@ A WKL Hot Swap Double USB C 60% -Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin) -Hardware Supported: KBD6x PCB -Hardware Availability: [KBDFans](https://kbdfans.cn/products/kbd6x-wkl-hot-swap-60-double-type-c-pcb) +* Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin) +* Hardware Supported: KBD6x PCB +* Hardware Availability: [KBDFans](https://kbdfans.cn/products/kbd6x-wkl-hot-swap-60-double-type-c-pcb) Make example for this keyboard (after setting up your build environment): diff --git a/keyboards/kbdfans/kbd6x/rules.mk b/keyboards/kbdfans/kbd6x/rules.mk index 7d9f13e3119e..b9c27a95eeb3 100644 --- a/keyboards/kbdfans/kbd6x/rules.mk +++ b/keyboards/kbdfans/kbd6x/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # 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 = yes # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/kbdfans/kbd75/keymaps/adit/keymap.c b/keyboards/kbdfans/kbd75/keymaps/adit/keymap.c index 778515788069..af4243c49dd1 100644 --- a/keyboards/kbdfans/kbd75/keymaps/adit/keymap.c +++ b/keyboards/kbdfans/kbd75/keymaps/adit/keymap.c @@ -1,7 +1,5 @@ #include QMK_KEYBOARD_H -#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT( @@ -23,37 +21,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; - -enum function_id { - SHIFT_ESC, -}; - -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_FUNCTION(SHIFT_ESC), -}; - -void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { - static uint8_t shift_esc_shift_mask; - switch (id) { - case SHIFT_ESC: - shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK; - if (record->event.pressed) { - if (shift_esc_shift_mask) { - add_key(KC_GRV); - send_keyboard_report(); - } else { - add_key(KC_ESC); - send_keyboard_report(); - } - } else { - if (shift_esc_shift_mask) { - del_key(KC_GRV); - send_keyboard_report(); - } else { - del_key(KC_ESC); - send_keyboard_report(); - } - } - break; - } -} diff --git a/keyboards/kbdfans/kbd75/keymaps/edulpn/keymap.c b/keyboards/kbdfans/kbd75/keymaps/edulpn/keymap.c index 533d83fdbbd7..998f1a25d2f2 100644 --- a/keyboards/kbdfans/kbd75/keymaps/edulpn/keymap.c +++ b/keyboards/kbdfans/kbd75/keymaps/edulpn/keymap.c @@ -44,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { switch (biton32(state)) { case WINDOWS_LAYER: rgblight_setrgb_blue(); diff --git a/keyboards/kbdfans/kbd75/keymaps/noroadsleft/keymap.c b/keyboards/kbdfans/kbd75/keymaps/noroadsleft/keymap.c index 6a961f1716b7..bf0781a77993 100644 --- a/keyboards/kbdfans/kbd75/keymaps/noroadsleft/keymap.c +++ b/keyboards/kbdfans/kbd75/keymaps/noroadsleft/keymap.c @@ -82,10 +82,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_FN] = LAYOUT_75_ansi_wkl( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______, - _______, KC_CALC, KC_APP, G_PUSH, _______, _______, KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_PSCR, KC_SLCK, KC_PAUS, _______, - _______, M_SALL, _______, G_FTCH, _______, _______, KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, _______, _______, - _______, M_UNDO, M_CUT, M_COPY, M_PASTE, G_BRCH, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, DM_REC1, + _______, KC_CALC, KC_APP, G_PUSH, _______, _______, KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_PSCR, KC_SLCK, KC_PAUS, DM_REC2, + _______, M_SALL, _______, G_FTCH, _______, _______, KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, DM_RSTP, DM_PLY1, + _______, M_UNDO, M_CUT, M_COPY, M_PASTE, G_BRCH, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, DM_PLY2, _______, _______, _______, _______, _______, _______, _______, _______ ), [_SY] = LAYOUT_75_ansi_wkl( diff --git a/keyboards/kbdfans/kbd75/keymaps/noroadsleft/rules.mk b/keyboards/kbdfans/kbd75/keymaps/noroadsleft/rules.mk index 6867e0a603b2..20e13b74a28c 100644 --- a/keyboards/kbdfans/kbd75/keymaps/noroadsleft/rules.mk +++ b/keyboards/kbdfans/kbd75/keymaps/noroadsleft/rules.mk @@ -1,6 +1,8 @@ -BOOTMAGIC_ENABLE = lite -CONSOLE_ENABLE = yes +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no +CONSOLE_ENABLE = no TAP_DANCE_ENABLE = yes +DYNAMIC_MACRO_ENABLE = yes VIA_ENABLE = no LTO_ENABLE = yes diff --git a/keyboards/kbdfans/kbd75/keymaps/tucznak/rules.mk b/keyboards/kbdfans/kbd75/keymaps/tucznak/rules.mk index c854fdd2d92d..71b25fcb121e 100644 --- a/keyboards/kbdfans/kbd75/keymaps/tucznak/rules.mk +++ b/keyboards/kbdfans/kbd75/keymaps/tucznak/rules.mk @@ -1,7 +1,7 @@ # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/kbdfans/kbd75/readme.md b/keyboards/kbdfans/kbd75/readme.md index c2bbdbb8b71f..b7bf379c1098 100644 --- a/keyboards/kbdfans/kbd75/readme.md +++ b/keyboards/kbdfans/kbd75/readme.md @@ -1,11 +1,5 @@ # KBD75 -Keyboard Maintainer: QMK Community -Hardware Supported: KBD75 PCB rev 1 and 2 -Hardware Availability: -* https://kbdfans.com/collections/75-diy-kit/products/kbd75-keyboard-set -* https://kbdfans.com/collections/75-diy-kit/products/kbd75v2-custom-keyboard-diy-kit - The KBD75 was sold through various rounds, with various PCB changes between them. * **Round 1 (2017)**: Black PCB - Bootmapper Client, atmega32a MCU (Use [Winkeyless.kr B.mini](../../winkeyless/bmini/) firmware) @@ -14,6 +8,14 @@ The KBD75 was sold through various rounds, with various PCB changes between them * **Round 6 (2019)**: White PCB with USB C - QMK Firmware, atmega32u4 MCU (Use KBD75 rev1 or rev2(with numpad support)) * **V2 (2019-)**: Same as **Round 6** (above). +**Firmware files are SPECIFIC to each board. Firmware files from one, will not work on the other.** + +* Keyboard Maintainer: QMK Community +* Hardware Supported: KBD75 PCB rev 1 and 2 +* Hardware Availability: + * https://kbdfans.com/collections/75-diy-kit/products/kbd75-keyboard-set + * https://kbdfans.com/collections/75-diy-kit/products/kbd75v2-custom-keyboard-diy-kit + Make example for this keyboard (after setting up your build environment): make kbdfans/kbd75/rev1:default diff --git a/keyboards/kbdfans/kbd75/rev1/info.json b/keyboards/kbdfans/kbd75/rev1/info.json index 7f9e04fdfc0b..142e53e3531a 100644 --- a/keyboards/kbdfans/kbd75/rev1/info.json +++ b/keyboards/kbdfans/kbd75/rev1/info.json @@ -2,31 +2,24 @@ "keyboard_name": "KBD75", "url": "", "maintainer": "qmk", - "width": 16, - "height": 6, "layouts": { "LAYOUT": { - "key_count": 88, "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, {"label":"F2", "x":2, "y":0}, {"label":"F3", "x":3, "y":0}, {"label":"F4", "x":4, "y":0}, {"label":"F5", "x":5, "y":0}, {"label":"F6", "x":6, "y":0}, {"label":"F7", "x":7, "y":0}, {"label":"F8", "x":8, "y":0}, {"label":"F9", "x":9, "y":0}, {"label":"F10", "x":10, "y":0}, {"label":"F11", "x":11, "y":0}, {"label":"F12", "x":12, "y":0}, {"label":"PrtSc", "x":13, "y":0}, {"label":"Pause", "x":14, "y":0}, {"label":"Delete", "x":15, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"1", "x":1, "y":1}, {"label":"2", "x":2, "y":1}, {"label":"3", "x":3, "y":1}, {"label":"4", "x":4, "y":1}, {"label":"5", "x":5, "y":1}, {"label":"6", "x":6, "y":1}, {"label":"7", "x":7, "y":1}, {"label":"8", "x":8, "y":1}, {"label":"9", "x":9, "y":1}, {"label":"0", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, {"label":"Home", "x":15, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"Page Up", "x":15, "y":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"\"", "x":11.75, "y":3}, {"label":"Enter", "x":12.75, "y":3, "w":2.25}, {"label":"Page Down", "x":15, "y":3}, {"label":"Shift", "x":0, "y":4, "w":1.25}, {"x":1.25, "y":4}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"label":"\u2191", "x":14, "y":4}, {"label":"End", "x":15, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":2.25}, {"x":6, "y":5}, {"x":7, "y":5, "w":3}, {"label":"Alt", "x":10, "y":5}, {"label":"Fn", "x":11, "y":5}, {"label":"Ctrl", "x":12, "y":5}, {"label":"\u2190", "x":13, "y":5}, {"label":"\u2193", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}] }, "LAYOUT_ansi_1u": { - "key_count": 84, "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, {"label":"F2", "x":2, "y":0}, {"label":"F3", "x":3, "y":0}, {"label":"F4", "x":4, "y":0}, {"label":"F5", "x":5, "y":0}, {"label":"F6", "x":6, "y":0}, {"label":"F7", "x":7, "y":0}, {"label":"F8", "x":8, "y":0}, {"label":"F9", "x":9, "y":0}, {"label":"F10", "x":10, "y":0}, {"label":"F11", "x":11, "y":0}, {"label":"F12", "x":12, "y":0}, {"label":"PrtSc", "x":13, "y":0}, {"label":"Pause", "x":14, "y":0}, {"label":"Delete", "x":15, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"1", "x":1, "y":1}, {"label":"2", "x":2, "y":1}, {"label":"3", "x":3, "y":1}, {"label":"4", "x":4, "y":1}, {"label":"5", "x":5, "y":1}, {"label":"6", "x":6, "y":1}, {"label":"7", "x":7, "y":1}, {"label":"8", "x":8, "y":1}, {"label":"9", "x":9, "y":1}, {"label":"0", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"label":"delete", "x":13, "y":1, "w":2}, {"label":"Home", "x":15, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"Page Up", "x":15, "y":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"\"", "x":11.75, "y":3}, {"label":"Enter", "x":12.75, "y":3, "w":2.25}, {"label":"Page Down", "x":15, "y":3}, {"label":"Shift", "x":0, "y":4, "w":2.25}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"label":"\u2191", "x":14, "y":4}, {"label":"End", "x":15, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5}, {"label":"Fn", "x":11, "y":5}, {"label":"Ctrl", "x":12, "y":5}, {"label":"\u2190", "x":13, "y":5}, {"label":"\u2193", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}] }, "LAYOUT_iso_1u": { - "key_count": 85, "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, {"label":"F2", "x":2, "y":0}, {"label":"F3", "x":3, "y":0}, {"label":"F4", "x":4, "y":0}, {"label":"F5", "x":5, "y":0}, {"label":"F6", "x":6, "y":0}, {"label":"F7", "x":7, "y":0}, {"label":"F8", "x":8, "y":0}, {"label":"F9", "x":9, "y":0}, {"label":"F10", "x":10, "y":0}, {"label":"F11", "x":11, "y":0}, {"label":"F12", "x":12, "y":0}, {"label":"PrtSc", "x":13, "y":0}, {"label":"Pause", "x":14, "y":0}, {"label":"Delete", "x":15, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"1", "x":1, "y":1}, {"label":"2", "x":2, "y":1}, {"label":"3", "x":3, "y":1}, {"label":"4", "x":4, "y":1}, {"label":"5", "x":5, "y":1}, {"label":"6", "x":6, "y":1}, {"label":"7", "x":7, "y":1}, {"label":"8", "x":8, "y":1}, {"label":"9", "x":9, "y":1}, {"label":"0", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"label":"delete", "x":13, "y":1, "w":2}, {"label":"Home", "x":15, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.25, "h":2}, {"label":"Page Up", "x":15, "y":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"@", "x":11.75, "y":3}, {"label":"~", "x":12.75, "y":3}, {"label":"Page Down", "x":15, "y":3}, {"label":"Shift", "x":0, "y":4, "w":1.25}, {"x":1.25, "y":4}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"label":"\u2191", "x":14, "y":4}, {"label":"End", "x":15, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5}, {"label":"Fn", "x":11, "y":5}, {"label":"Ctrl", "x":12, "y":5}, {"label":"\u2190", "x":13, "y":5}, {"label":"\u2193", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}] }, "LAYOUT_ansi": { - "key_count": 83, "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, {"label":"F2", "x":2, "y":0}, {"label":"F3", "x":3, "y":0}, {"label":"F4", "x":4, "y":0}, {"label":"F5", "x":5, "y":0}, {"label":"F6", "x":6, "y":0}, {"label":"F7", "x":7, "y":0}, {"label":"F8", "x":8, "y":0}, {"label":"F9", "x":9, "y":0}, {"label":"F10", "x":10, "y":0}, {"label":"F11", "x":11, "y":0}, {"label":"F12", "x":12, "y":0}, {"label":"PrtSc", "x":13, "y":0}, {"label":"Pause", "x":14, "y":0}, {"label":"Delete", "x":15, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"1", "x":1, "y":1}, {"label":"2", "x":2, "y":1}, {"label":"3", "x":3, "y":1}, {"label":"4", "x":4, "y":1}, {"label":"5", "x":5, "y":1}, {"label":"6", "x":6, "y":1}, {"label":"7", "x":7, "y":1}, {"label":"8", "x":8, "y":1}, {"label":"9", "x":9, "y":1}, {"label":"0", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"label":"delete", "x":13, "y":1, "w":2}, {"label":"Home", "x":15, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"Page Up", "x":15, "y":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"\"", "x":11.75, "y":3}, {"label":"Enter", "x":12.75, "y":3, "w":2.25}, {"label":"Page Down", "x":15, "y":3}, {"label":"Shift", "x":0, "y":4, "w":2.25}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"label":"\u2191", "x":14, "y":4}, {"label":"End", "x":15, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5, "w":1.5}, {"label":"Ctrl", "x":11.5, "y":5, "w":1.5}, {"label":"\u2190", "x":13, "y":5}, {"label":"\u2193", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}] }, "LAYOUT_iso": { - "key_count": 84, "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, {"label":"F2", "x":2, "y":0}, {"label":"F3", "x":3, "y":0}, {"label":"F4", "x":4, "y":0}, {"label":"F5", "x":5, "y":0}, {"label":"F6", "x":6, "y":0}, {"label":"F7", "x":7, "y":0}, {"label":"F8", "x":8, "y":0}, {"label":"F9", "x":9, "y":0}, {"label":"F10", "x":10, "y":0}, {"label":"F11", "x":11, "y":0}, {"label":"F12", "x":12, "y":0}, {"label":"PrtSc", "x":13, "y":0}, {"label":"Pause", "x":14, "y":0}, {"label":"Delete", "x":15, "y":0}, {"label":"\u00ac", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"\"", "x":2, "y":1}, {"label":"\u00a3", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"label":"Backspace", "x":13, "y":1, "w":2}, {"label":"Home", "x":15, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.25, "h":2}, {"label":"Page Up", "x":15, "y":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"@", "x":11.75, "y":3}, {"label":"~", "x":12.75, "y":3}, {"label":"Page Down", "x":15, "y":3}, {"label":"Shift", "x":0, "y":4, "w":1.25}, {"label":"|", "x":1.25, "y":4}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"label":"\u2191", "x":14, "y":4}, {"label":"End", "x":15, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"AltGr", "x":10, "y":5, "w":1.5}, {"label":"Ctrl", "x":11.5, "y":5, "w":1.5}, {"label":"\u2190", "x":13, "y":5}, {"label":"\u2193", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}] }, diff --git a/keyboards/kbdfans/kbd75/rev1/rules.mk b/keyboards/kbdfans/kbd75/rev1/rules.mk index 054cb687ba44..b5dc788e1109 100644 --- a/keyboards/kbdfans/kbd75/rev1/rules.mk +++ b/keyboards/kbdfans/kbd75/rev1/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 -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 = yes # Enable keyboard backlight functionality AUDIO_ENABLE = no diff --git a/keyboards/kbdfans/kbd75/rev2/info.json b/keyboards/kbdfans/kbd75/rev2/info.json index c6ff35e9d860..63c71717903a 100644 --- a/keyboards/kbdfans/kbd75/rev2/info.json +++ b/keyboards/kbdfans/kbd75/rev2/info.json @@ -2,31 +2,24 @@ "keyboard_name": "KBD75", "url": "", "maintainer": "qmk", - "width": 16, - "height": 6, "layouts": { "LAYOUT": { - "key_count": 88, "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, {"label":"F2", "x":2, "y":0}, {"label":"F3", "x":3, "y":0}, {"label":"F4", "x":4, "y":0}, {"label":"F5", "x":5, "y":0}, {"label":"F6", "x":6, "y":0}, {"label":"F7", "x":7, "y":0}, {"label":"F8", "x":8, "y":0}, {"label":"F9", "x":9, "y":0}, {"label":"F10", "x":10, "y":0}, {"label":"F11", "x":11, "y":0}, {"label":"F12", "x":12, "y":0}, {"label":"PrtSc", "x":13, "y":0}, {"label":"Pause", "x":14, "y":0}, {"label":"Delete", "x":15, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"1", "x":1, "y":1}, {"label":"2", "x":2, "y":1}, {"label":"3", "x":3, "y":1}, {"label":"4", "x":4, "y":1}, {"label":"5", "x":5, "y":1}, {"label":"6", "x":6, "y":1}, {"label":"7", "x":7, "y":1}, {"label":"8", "x":8, "y":1}, {"label":"9", "x":9, "y":1}, {"label":"0", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, {"label":"Home", "x":15, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"Page Up", "x":15, "y":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"\"", "x":11.75, "y":3}, {"label":"Enter", "x":12.75, "y":3, "w":2.25}, {"label":"Page Down", "x":15, "y":3}, {"label":"Shift", "x":0, "y":4, "w":1.25}, {"x":1.25, "y":4}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"label":"\u2191", "x":14, "y":4}, {"label":"End", "x":15, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":2.25}, {"x":6, "y":5}, {"x":7, "y":5, "w":3}, {"label":"Alt", "x":10, "y":5}, {"label":"Fn", "x":11, "y":5}, {"label":"Ctrl", "x":12, "y":5}, {"label":"\u2190", "x":13, "y":5}, {"label":"\u2193", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}] }, "LAYOUT_ansi_1u": { - "key_count": 84, "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, {"label":"F2", "x":2, "y":0}, {"label":"F3", "x":3, "y":0}, {"label":"F4", "x":4, "y":0}, {"label":"F5", "x":5, "y":0}, {"label":"F6", "x":6, "y":0}, {"label":"F7", "x":7, "y":0}, {"label":"F8", "x":8, "y":0}, {"label":"F9", "x":9, "y":0}, {"label":"F10", "x":10, "y":0}, {"label":"F11", "x":11, "y":0}, {"label":"F12", "x":12, "y":0}, {"label":"PrtSc", "x":13, "y":0}, {"label":"Pause", "x":14, "y":0}, {"label":"Delete", "x":15, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"1", "x":1, "y":1}, {"label":"2", "x":2, "y":1}, {"label":"3", "x":3, "y":1}, {"label":"4", "x":4, "y":1}, {"label":"5", "x":5, "y":1}, {"label":"6", "x":6, "y":1}, {"label":"7", "x":7, "y":1}, {"label":"8", "x":8, "y":1}, {"label":"9", "x":9, "y":1}, {"label":"0", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"label":"delete", "x":13, "y":1, "w":2}, {"label":"Home", "x":15, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"Page Up", "x":15, "y":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"\"", "x":11.75, "y":3}, {"label":"Enter", "x":12.75, "y":3, "w":2.25}, {"label":"Page Down", "x":15, "y":3}, {"label":"Shift", "x":0, "y":4, "w":2.25}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"label":"\u2191", "x":14, "y":4}, {"label":"End", "x":15, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5}, {"label":"Fn", "x":11, "y":5}, {"label":"Ctrl", "x":12, "y":5}, {"label":"\u2190", "x":13, "y":5}, {"label":"\u2193", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}] }, "LAYOUT_iso_1u": { - "key_count": 85, "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, {"label":"F2", "x":2, "y":0}, {"label":"F3", "x":3, "y":0}, {"label":"F4", "x":4, "y":0}, {"label":"F5", "x":5, "y":0}, {"label":"F6", "x":6, "y":0}, {"label":"F7", "x":7, "y":0}, {"label":"F8", "x":8, "y":0}, {"label":"F9", "x":9, "y":0}, {"label":"F10", "x":10, "y":0}, {"label":"F11", "x":11, "y":0}, {"label":"F12", "x":12, "y":0}, {"label":"PrtSc", "x":13, "y":0}, {"label":"Pause", "x":14, "y":0}, {"label":"Delete", "x":15, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"1", "x":1, "y":1}, {"label":"2", "x":2, "y":1}, {"label":"3", "x":3, "y":1}, {"label":"4", "x":4, "y":1}, {"label":"5", "x":5, "y":1}, {"label":"6", "x":6, "y":1}, {"label":"7", "x":7, "y":1}, {"label":"8", "x":8, "y":1}, {"label":"9", "x":9, "y":1}, {"label":"0", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"label":"delete", "x":13, "y":1, "w":2}, {"label":"Home", "x":15, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.25, "h":2}, {"label":"Page Up", "x":15, "y":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"@", "x":11.75, "y":3}, {"label":"~", "x":12.75, "y":3}, {"label":"Page Down", "x":15, "y":3}, {"label":"Shift", "x":0, "y":4, "w":1.25}, {"x":1.25, "y":4}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"label":"\u2191", "x":14, "y":4}, {"label":"End", "x":15, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5}, {"label":"Fn", "x":11, "y":5}, {"label":"Ctrl", "x":12, "y":5}, {"label":"\u2190", "x":13, "y":5}, {"label":"\u2193", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}] }, "LAYOUT_ansi": { - "key_count": 83, "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, {"label":"F2", "x":2, "y":0}, {"label":"F3", "x":3, "y":0}, {"label":"F4", "x":4, "y":0}, {"label":"F5", "x":5, "y":0}, {"label":"F6", "x":6, "y":0}, {"label":"F7", "x":7, "y":0}, {"label":"F8", "x":8, "y":0}, {"label":"F9", "x":9, "y":0}, {"label":"F10", "x":10, "y":0}, {"label":"F11", "x":11, "y":0}, {"label":"F12", "x":12, "y":0}, {"label":"PrtSc", "x":13, "y":0}, {"label":"Pause", "x":14, "y":0}, {"label":"Delete", "x":15, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"1", "x":1, "y":1}, {"label":"2", "x":2, "y":1}, {"label":"3", "x":3, "y":1}, {"label":"4", "x":4, "y":1}, {"label":"5", "x":5, "y":1}, {"label":"6", "x":6, "y":1}, {"label":"7", "x":7, "y":1}, {"label":"8", "x":8, "y":1}, {"label":"9", "x":9, "y":1}, {"label":"0", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"label":"delete", "x":13, "y":1, "w":2}, {"label":"Home", "x":15, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"Page Up", "x":15, "y":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"\"", "x":11.75, "y":3}, {"label":"Enter", "x":12.75, "y":3, "w":2.25}, {"label":"Page Down", "x":15, "y":3}, {"label":"Shift", "x":0, "y":4, "w":2.25}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"label":"\u2191", "x":14, "y":4}, {"label":"End", "x":15, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5, "w":1.5}, {"label":"Ctrl", "x":11.5, "y":5, "w":1.5}, {"label":"\u2190", "x":13, "y":5}, {"label":"\u2193", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}] }, "LAYOUT_iso": { - "key_count": 84, "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, {"label":"F2", "x":2, "y":0}, {"label":"F3", "x":3, "y":0}, {"label":"F4", "x":4, "y":0}, {"label":"F5", "x":5, "y":0}, {"label":"F6", "x":6, "y":0}, {"label":"F7", "x":7, "y":0}, {"label":"F8", "x":8, "y":0}, {"label":"F9", "x":9, "y":0}, {"label":"F10", "x":10, "y":0}, {"label":"F11", "x":11, "y":0}, {"label":"F12", "x":12, "y":0}, {"label":"PrtSc", "x":13, "y":0}, {"label":"Pause", "x":14, "y":0}, {"label":"Delete", "x":15, "y":0}, {"label":"\u00ac", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"\"", "x":2, "y":1}, {"label":"\u00a3", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"label":"Backspace", "x":13, "y":1, "w":2}, {"label":"Home", "x":15, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.25, "h":2}, {"label":"Page Up", "x":15, "y":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"@", "x":11.75, "y":3}, {"label":"~", "x":12.75, "y":3}, {"label":"Page Down", "x":15, "y":3}, {"label":"Shift", "x":0, "y":4, "w":1.25}, {"label":"|", "x":1.25, "y":4}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"label":"\u2191", "x":14, "y":4}, {"label":"End", "x":15, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"AltGr", "x":10, "y":5, "w":1.5}, {"label":"Ctrl", "x":11.5, "y":5, "w":1.5}, {"label":"\u2190", "x":13, "y":5}, {"label":"\u2193", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}] }, diff --git a/keyboards/kbdfans/kbd75/rev2/rules.mk b/keyboards/kbdfans/kbd75/rev2/rules.mk index 054cb687ba44..b5dc788e1109 100644 --- a/keyboards/kbdfans/kbd75/rev2/rules.mk +++ b/keyboards/kbdfans/kbd75/rev2/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 -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 = yes # Enable keyboard backlight functionality AUDIO_ENABLE = no diff --git a/keyboards/kbdfans/kbd75hs/config.h b/keyboards/kbdfans/kbd75hs/config.h new file mode 100644 index 000000000000..e23e50636faa --- /dev/null +++ b/keyboards/kbdfans/kbd75hs/config.h @@ -0,0 +1,68 @@ +/* Copyright 2021 DZTECH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4B42 +#define PRODUCT_ID 0x6062 +#define DEVICE_VER 0x0003 +#define MANUFACTURER KBDFANS +#define PRODUCT KBD75_HOTSWAP + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 15 +#define MATRIX_ROW_PINS { E6, B0, B1, B2, B3, B6 } +#define MATRIX_COL_PINS { F7, F6, F5, F4, F1, D0, D1, D2, D3, D5, D4, D6, D7, B4, B5} +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 +#define FORCE_NKRO +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +#define LED_CAPS_LOCK_PIN C6 +#define LED_PIN_ON_STATE 1 + +#define RGB_DI_PIN F0 +#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 RGBLIGHT_DEFAULT_MODE (RGBLIGHT_EFFECT_RAINBOW_MOOD + 6) +#define RGBLIGHT_DEFAULT_SPD 15 +#define RGBLED_NUM 18 +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 10 +#define RGBLIGHT_VAL_STEP 10 +#define RGBLIGHT_SLEEP +#endif +#define VIA_EEPROM_LAYOUT_OPTIONS_SIZE 2 diff --git a/keyboards/kbdfans/kbd75hs/info.json b/keyboards/kbdfans/kbd75hs/info.json new file mode 100644 index 000000000000..f1d3368827e9 --- /dev/null +++ b/keyboards/kbdfans/kbd75hs/info.json @@ -0,0 +1,9 @@ +{ + "keyboard_name": "KBD75HS", + "maintainer": "DZTECH", + "layouts": { + "LAYOUT_75_ansi": { + "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, {"label":"F2", "x":2, "y":0}, {"label":"F3", "x":3, "y":0}, {"label":"F4", "x":4, "y":0}, {"label":"F5", "x":5, "y":0}, {"label":"F6", "x":6, "y":0}, {"label":"F7", "x":7, "y":0}, {"label":"F8", "x":8, "y":0}, {"label":"F9", "x":9, "y":0}, {"label":"F10", "x":10, "y":0}, {"label":"F11", "x":11, "y":0}, {"label":"F12", "x":12, "y":0}, {"label":"PrtSc", "x":13, "y":0}, {"label":"Pause", "x":14, "y":0}, {"label":"Delete", "x":15, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"@", "x":2, "y":1}, {"label":"#", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"label":"Backspace", "x":13, "y":1, "w":2}, {"label":"Home", "x":15, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"Page Up", "x":15, "y":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"\"", "x":11.75, "y":3}, {"label":"Enter", "x":12.75, "y":3, "w":2.25}, {"label":"Page Down", "x":15, "y":3}, {"label":"Shift", "x":0, "y":4, "w":2.25}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"label":"\u2191", "x":14, "y":4}, {"label":"End", "x":15, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5}, {"label":"Fn", "x":11, "y":5}, {"label":"Ctrl", "x":12, "y":5}, {"label":"\u2190", "x":13, "y":5}, {"label":"\u2193", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}] + } + } +} \ No newline at end of file diff --git a/keyboards/kbdfans/kbd75hs/kbd75hs.c b/keyboards/kbdfans/kbd75hs/kbd75hs.c new file mode 100644 index 000000000000..e22c26757549 --- /dev/null +++ b/keyboards/kbdfans/kbd75hs/kbd75hs.c @@ -0,0 +1,17 @@ +/* Copyright 2021 DZTECH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "kbd75hs.h" diff --git a/keyboards/kbdfans/kbd75hs/kbd75hs.h b/keyboards/kbdfans/kbd75hs/kbd75hs.h new file mode 100644 index 000000000000..60fa47299665 --- /dev/null +++ b/keyboards/kbdfans/kbd75hs/kbd75hs.h @@ -0,0 +1,35 @@ +/* Copyright 2021 DZTECH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once +#include "quantum.h" +#define XXX KC_NO + +#define LAYOUT_75_ansi( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K312, K014, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, \ + K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K413, K414, \ + K500, K501, K502, K505, K508, K509, K510, K511, K513, K514 \ +) { \ + { 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, K114 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314 }, \ + { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, K413, K414 }, \ + { K500, K501, K502, KC_NO, KC_NO, K505, KC_NO, KC_NO, K508, K509, K510, K511, KC_NO, K513, K514 } \ +} diff --git a/keyboards/kbdfans/kbd75hs/keymaps/default/keymap.c b/keyboards/kbdfans/kbd75hs/keymaps/default/keymap.c new file mode 100644 index 000000000000..0957a41d74ea --- /dev/null +++ b/keyboards/kbdfans/kbd75hs/keymaps/default/keymap.c @@ -0,0 +1,55 @@ +/* Copyright 2021 DZTECH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_75_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_INS, KC_HOME, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_END, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_75_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [2] = LAYOUT_75_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [3] = LAYOUT_75_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/kbdfans/kbd75hs/keymaps/via/keymap.c b/keyboards/kbdfans/kbd75hs/keymaps/via/keymap.c new file mode 100644 index 000000000000..0957a41d74ea --- /dev/null +++ b/keyboards/kbdfans/kbd75hs/keymaps/via/keymap.c @@ -0,0 +1,55 @@ +/* Copyright 2021 DZTECH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_75_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_INS, KC_HOME, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_END, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_75_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [2] = LAYOUT_75_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [3] = LAYOUT_75_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/kbdfans/kbd75hs/keymaps/via/rules.mk b/keyboards/kbdfans/kbd75hs/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/kbdfans/kbd75hs/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/kbdfans/kbd75hs/readme.md b/keyboards/kbdfans/kbd75hs/readme.md new file mode 100644 index 000000000000..4f7943d4fee4 --- /dev/null +++ b/keyboards/kbdfans/kbd75hs/readme.md @@ -0,0 +1,21 @@ +# KBD75 HOTSWAP + +A customizable 75% HOTSWAP keyboard. + +* Keyboard Maintainer: [moyi4681](https://github.com/moyi4681) +* Hardware Supported: KBDFANS +* Hardware Availability: [kbdfans](https://kbdfans.myshopify.com/) + +Make example for this keyboard (after setting up your build environment): + + make kbdfans/kbd75hs:default + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix +* **Physical reset button**: Briefly press the button on the back of the PCB +* **Keycode in layout**: Press the key mapped to `RESET` if it is available + +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/kbdfans/kbd75hs/rules.mk b/keyboards/kbdfans/kbd75hs/rules.mk new file mode 100644 index 000000000000..36b2d98788d6 --- /dev/null +++ b/keyboards/kbdfans/kbd75hs/rules.mk @@ -0,0 +1,21 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 = 75_ansi diff --git a/keyboards/kbdfans/kbd8x/info.json b/keyboards/kbdfans/kbd8x/info.json index fe94f1b3ac35..fb2e97a29632 100644 --- a/keyboards/kbdfans/kbd8x/info.json +++ b/keyboards/kbdfans/kbd8x/info.json @@ -2,8 +2,6 @@ "keyboard_name": "KBD 8X", "url": "", "maintainer": "qmk", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT_all": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"@", "x":2, "y":1.5}, {"label":"#", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"x":13, "y":1.5}, {"x":14, "y":1.5}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.25, "y":1.5}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":6.5, "y":2.5}, {"label":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"|", "x":13.5, "y":2.5, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, {"label":"Shift", "x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"N", "x":7.25, "y":4.5}, {"label":"M", "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":"Shift", "x":12.25, "y":4.5, "w":1.75}, {"x":14, "y":4.5}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, {"label":"Win", "x":1.25, "y":5.5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"label":"Alt", "x":10, "y":5.5, "w":1.25}, {"label":"Win", "x":11.25, "y":5.5, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.5, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}] diff --git a/keyboards/kbdfans/kbd8x/readme.md b/keyboards/kbdfans/kbd8x/readme.md index 9f8555560abc..d95d51533d3d 100644 --- a/keyboards/kbdfans/kbd8x/readme.md +++ b/keyboards/kbdfans/kbd8x/readme.md @@ -1,12 +1,10 @@ # KBD8X -![kbd8x](imgur.com image replace me!) - TKL Keyboard from KBDFans -Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin) -Hardware Supported: kbd8x -Hardware Availability: [KBDFans](https://kbdfans.cn/blogs/updates/kbd-8x-update-40) +* Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin) +* Hardware Supported: kbd8x +* Hardware Availability: [KBDFans](https://kbdfans.cn/blogs/updates/kbd-8x-update-40) Make example for this keyboard (after setting up your build environment): diff --git a/keyboards/kbdfans/kbd8x/rules.mk b/keyboards/kbdfans/kbd8x/rules.mk index b1ac3173992d..90a8c5434b4f 100644 --- a/keyboards/kbdfans/kbd8x/rules.mk +++ b/keyboards/kbdfans/kbd8x/rules.mk @@ -2,28 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/kbdfans/kbd8x_mk2/config.h b/keyboards/kbdfans/kbd8x_mk2/config.h index 008b6b517022..ea535b00fda2 100644 --- a/keyboards/kbdfans/kbd8x_mk2/config.h +++ b/keyboards/kbdfans/kbd8x_mk2/config.h @@ -123,59 +123,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -194,26 +141,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/kbdfans/kbd8x_mk2/info.json b/keyboards/kbdfans/kbd8x_mk2/info.json index e390fc4b0b82..82aacc550d69 100644 --- a/keyboards/kbdfans/kbd8x_mk2/info.json +++ b/keyboards/kbdfans/kbd8x_mk2/info.json @@ -2,8 +2,6 @@ "keyboard_name": "kbd8x_mk2", "url": "https://kb.ai03.me/projects/kbd8x-mkii.html", "maintainer": "ai03", - "width": 18.25, - "height": 6.25, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/kbdfans/kbd8x_mk2/keymaps/ansi_7/keymap.c b/keyboards/kbdfans/kbd8x_mk2/keymaps/ansi_7/keymap.c index 99496e21ffc9..3213dabc9cc8 100644 --- a/keyboards/kbdfans/kbd8x_mk2/keymaps/ansi_7/keymap.c +++ b/keyboards/kbdfans/kbd8x_mk2/keymaps/ansi_7/keymap.c @@ -26,19 +26,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_NO, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \ ), }; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/kbdfans/kbd8x_mk2/keymaps/default/keymap.c b/keyboards/kbdfans/kbd8x_mk2/keymaps/default/keymap.c index 1064c141dbac..3c7255a28629 100644 --- a/keyboards/kbdfans/kbd8x_mk2/keymaps/default/keymap.c +++ b/keyboards/kbdfans/kbd8x_mk2/keymaps/default/keymap.c @@ -26,19 +26,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \ ), }; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/kbdfans/kbd8x_mk2/keymaps/iso_625/keymap.c b/keyboards/kbdfans/kbd8x_mk2/keymaps/iso_625/keymap.c index 01c4a03af703..cd7a23428e3a 100644 --- a/keyboards/kbdfans/kbd8x_mk2/keymaps/iso_625/keymap.c +++ b/keyboards/kbdfans/kbd8x_mk2/keymaps/iso_625/keymap.c @@ -26,19 +26,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_ALGR, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \ ), }; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/kbdfans/kbd8x_mk2/keymaps/iso_7/keymap.c b/keyboards/kbdfans/kbd8x_mk2/keymaps/iso_7/keymap.c index 4087b59847df..45e0cf0fe66d 100644 --- a/keyboards/kbdfans/kbd8x_mk2/keymaps/iso_7/keymap.c +++ b/keyboards/kbdfans/kbd8x_mk2/keymaps/iso_7/keymap.c @@ -26,19 +26,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_NO, KC_ALGR, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \ ), }; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/kbdfans/kbd8x_mk2/keymaps/tester/keymap.c b/keyboards/kbdfans/kbd8x_mk2/keymaps/tester/keymap.c index dc742bcfaf87..3a7b80ca4e7e 100644 --- a/keyboards/kbdfans/kbd8x_mk2/keymaps/tester/keymap.c +++ b/keyboards/kbdfans/kbd8x_mk2/keymaps/tester/keymap.c @@ -26,19 +26,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \ ), }; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/kbdfans/kbd8x_mk2/readme.md b/keyboards/kbdfans/kbd8x_mk2/readme.md index fbd650460969..d20a17da4d1e 100644 --- a/keyboards/kbdfans/kbd8x_mk2/readme.md +++ b/keyboards/kbdfans/kbd8x_mk2/readme.md @@ -4,9 +4,9 @@ A fairly typical TKL -Keyboard Maintainer: [ai03](https://github.com/ai03-2725) / [KBDfans](https://kbdfans.cn/) -Hardware Supported: KBD8X MKII PCB/case -Hardware Availability: [KBDfans](https://kbdfans.com/collections/90-kbd19x/products/gb-kbd8x-mkii-pcb) +* Keyboard Maintainer: [ai03](https://github.com/ai03-2725) / [KBDfans](https://kbdfans.cn/) +* Hardware Supported: KBD8X MKII PCB/case +* Hardware Availability: [KBDfans](https://kbdfans.com/collections/90-kbd19x/products/gb-kbd8x-mkii-pcb) Make example for this keyboard (after setting up your build environment): diff --git a/keyboards/kbdfans/kbd8x_mk2/rules.mk b/keyboards/kbdfans/kbd8x_mk2/rules.mk index 3bb1ec74ed79..ea6ce4cf9555 100644 --- a/keyboards/kbdfans/kbd8x_mk2/rules.mk +++ b/keyboards/kbdfans/kbd8x_mk2/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = tkl_ansi tkl_iso diff --git a/keyboards/kbdfans/kbdmini/config.h b/keyboards/kbdfans/kbdmini/config.h index 5a36e983d1e6..f2137fcd1f68 100644 --- a/keyboards/kbdfans/kbdmini/config.h +++ b/keyboards/kbdfans/kbdmini/config.h @@ -35,29 +35,61 @@ #ifdef RGB_MATRIX_ENABLE #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended #define RGB_MATRIX_KEYPRESSES #define RGB_MATRIX_FRAMEBUFFER_EFFECTS -#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -#define DISABLE_RGB_MATRIX_BAND_SAT -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -#define DISABLE_RGB_MATRIX_SPLASH -#define DISABLE_RGB_MATRIX_MULTISPLASH -#define DISABLE_RGB_MATRIX_SOLID_SPLASH -#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH -#define DISABLE_RGB_MATRIX_DIGITAL_RAIN +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +// #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +// #define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +// #define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// #define ENABLE_RGB_MATRIX_SPLASH +// #define ENABLE_RGB_MATRIX_MULTISPLASH +// #define ENABLE_RGB_MATRIX_SOLID_SPLASH +// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + #define 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/kbdfans/kbdmini/info.json b/keyboards/kbdfans/kbdmini/info.json index fd4ac4a1eff9..c3d04c9d1693 100644 --- a/keyboards/kbdfans/kbdmini/info.json +++ b/keyboards/kbdfans/kbdmini/info.json @@ -2,8 +2,6 @@ "keyboard_name": "KBDMini", "url": "", "maintainer": "KBDFans", - "width": 13, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/kbdfans/kbdmini/kbdmini.c b/keyboards/kbdfans/kbdmini/kbdmini.c index 0e0df2f9afe5..03c0096c7085 100644 --- a/keyboards/kbdfans/kbdmini/kbdmini.c +++ b/keyboards/kbdfans/kbdmini/kbdmini.c @@ -1,6 +1,6 @@ #include "kbdmini.h" -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { { 0, B_9, A_9, C_9 }, //LA33 { 0, B_10, A_10, C_10 }, //LA37 { 0, B_11, A_11, C_11 }, //LA41 diff --git a/keyboards/kbdfans/kbdmini/readme.md b/keyboards/kbdfans/kbdmini/readme.md index 5d5ebe2a7a00..8b5e0478d388 100644 --- a/keyboards/kbdfans/kbdmini/readme.md +++ b/keyboards/kbdfans/kbdmini/readme.md @@ -1,7 +1,5 @@ # KBDMINI -![KBDMINI](imgur.com image replace me!) - * Keyboard Maintainer: [DZTECH](https://github.com/moyi4681) * Hardware Supported: KBDMINI * Hardware Availability: [KBDFans](https://kbdfans.cn/) diff --git a/keyboards/kbdfans/kbdmini/rules.mk b/keyboards/kbdfans/kbdmini/rules.mk index aaab18afc767..632c7f91e82f 100644 --- a/keyboards/kbdfans/kbdmini/rules.mk +++ b/keyboards/kbdfans/kbdmini/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output RGB_MATRIX_ENABLE = yes RGB_MATRIX_DRIVER = IS31FL3733 diff --git a/keyboards/kbdfans/kbdpad/mk1/info.json b/keyboards/kbdfans/kbdpad/mk1/info.json index 68e8f6851512..760d1d94ea54 100644 --- a/keyboards/kbdfans/kbdpad/mk1/info.json +++ b/keyboards/kbdfans/kbdpad/mk1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "KBDfans KBDPad MKI", "url": "https://kbdfans.com/products/kbdfans-pad-custom-mechanical-keyboard-diy-kit", "maintainer": "qmk", - "width": 4, - "height": 6.25, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/kbdfans/kbdpad/mk1/rules.mk b/keyboards/kbdfans/kbdpad/mk1/rules.mk index 679ac08fa8b7..9912abbe9f52 100644 --- a/keyboards/kbdfans/kbdpad/mk1/rules.mk +++ b/keyboards/kbdfans/kbdpad/mk1/rules.mk @@ -2,17 +2,10 @@ MCU = atmega32a # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid # build options -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes EXTRAKEY_ENABLE = yes CONSOLE_ENABLE = no diff --git a/keyboards/kbdfans/kbdpad_mk2/config.h b/keyboards/kbdfans/kbdpad_mk2/config.h index 2c32d1c8a268..e64aaa3379bf 100644 --- a/keyboards/kbdfans/kbdpad_mk2/config.h +++ b/keyboards/kbdfans/kbdpad_mk2/config.h @@ -122,59 +122,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -193,26 +140,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/kbdfans/kbdpad_mk2/info.json b/keyboards/kbdfans/kbdpad_mk2/info.json index 50cfc871d8f3..2f613185758f 100644 --- a/keyboards/kbdfans/kbdpad_mk2/info.json +++ b/keyboards/kbdfans/kbdpad_mk2/info.json @@ -2,8 +2,6 @@ "keyboard_name": "kbdpad_mk2", "url": "https://kb.ai03.me/projects/kbdpad-mkii.html", "maintainer": "ai03", - "width": 4, - "height": 6.25, "layouts": { "LAYOUT_ortho_6x4": { "layout": [ diff --git a/keyboards/kbdfans/kbdpad_mk2/keymaps/default/keymap.c b/keyboards/kbdfans/kbdpad_mk2/keymaps/default/keymap.c index 841db90caa04..767fceec370e 100644 --- a/keyboards/kbdfans/kbdpad_mk2/keymaps/default/keymap.c +++ b/keyboards/kbdfans/kbdpad_mk2/keymaps/default/keymap.c @@ -26,19 +26,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_P0, KC_P0, KC_PDOT, KC_PENT \ ), }; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/kbdfans/kbdpad_mk2/keymaps/tester/keymap.c b/keyboards/kbdfans/kbdpad_mk2/keymaps/tester/keymap.c index 04c301feea68..f4675ce5647c 100644 --- a/keyboards/kbdfans/kbdpad_mk2/keymaps/tester/keymap.c +++ b/keyboards/kbdfans/kbdpad_mk2/keymaps/tester/keymap.c @@ -26,19 +26,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_P0, KC_P0, KC_PDOT, KC_PENT \ ), }; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/kbdfans/kbdpad_mk2/rules.mk b/keyboards/kbdfans/kbdpad_mk2/rules.mk index 32e834ee0d4a..a64e2070eaaa 100644 --- a/keyboards/kbdfans/kbdpad_mk2/rules.mk +++ b/keyboards/kbdfans/kbdpad_mk2/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u2 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = ortho_6x4 diff --git a/keyboards/kbdfans/maja/config.h b/keyboards/kbdfans/maja/config.h index d8553766bb8e..19a5e1dfa4a4 100755 --- a/keyboards/kbdfans/maja/config.h +++ b/keyboards/kbdfans/maja/config.h @@ -18,24 +18,57 @@ #define RGB_MATRIX_LED_FLUSH_LIMIT 26 #define DEBOUNCE 3 #define RGB_DISABLE_AFTER_TIMEOUT 0 -#define RGB_DISABLE_WHEN_USB_SUSPENDED true +#define RGB_DISABLE_WHEN_USB_SUSPENDED #define RGB_MATRIX_KEYPRESSES -#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -#define DISABLE_RGB_MATRIX_BAND_SAT -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -#define DISABLE_RGB_MATRIX_SPLASH -#define DISABLE_RGB_MATRIX_MULTISPLASH -#define DISABLE_RGB_MATRIX_SOLID_SPLASH -#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH -#define DISABLE_RGB_MATRIX_DIGITAL_RAIN +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +// #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +// #define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +// #define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// #define ENABLE_RGB_MATRIX_SPLASH +// #define ENABLE_RGB_MATRIX_MULTISPLASH +// #define ENABLE_RGB_MATRIX_SOLID_SPLASH +// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + #define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL #define DRIVER_ADDR_1 0b1110100 #define DRIVER_ADDR_2 0b1110110 diff --git a/keyboards/kbdfans/maja/info.json b/keyboards/kbdfans/maja/info.json index 5427f63ffcf5..3245687689c1 100644 --- a/keyboards/kbdfans/maja/info.json +++ b/keyboards/kbdfans/maja/info.json @@ -2,8 +2,6 @@ "keyboard_name": "MAJA", "url": "", "maintainer": "DZTECH", - "width": 18.75, - "height": 5.5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/kbdfans/maja/maja.c b/keyboards/kbdfans/maja/maja.c index a0afcbda8a25..d257212750bc 100755 --- a/keyboards/kbdfans/maja/maja.c +++ b/keyboards/kbdfans/maja/maja.c @@ -1,6 +1,6 @@ #include "maja.h" -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { {0, C2_1, C3_1, C4_1}, // LA0 {0, C1_1, C3_2, C4_2}, // LA1 {0, C1_2, C2_2, C4_3}, // LA2 diff --git a/keyboards/kbdfans/maja/rules.mk b/keyboards/kbdfans/maja/rules.mk index c499a39aac2c..6e849de63ca2 100755 --- a/keyboards/kbdfans/maja/rules.mk +++ b/keyboards/kbdfans/maja/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output RGB_MATRIX_ENABLE = yes # Use RGB matrix RGB_MATRIX_DRIVER = IS31FL3731 NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in diff --git a/keyboards/kbdfans/maja_soldered/info.json b/keyboards/kbdfans/maja_soldered/info.json index b583282a9ac2..407a189f60ad 100644 --- a/keyboards/kbdfans/maja_soldered/info.json +++ b/keyboards/kbdfans/maja_soldered/info.json @@ -2,8 +2,6 @@ "keyboard_name": "MAJA_SOLDERED", "url": "", "maintainer": "DZTECH", - "width": 18.75, - "height": 5.5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/kbdfans/maja_soldered/rules.mk b/keyboards/kbdfans/maja_soldered/rules.mk index 6cd4d92603c5..f520fd3c8816 100755 --- a/keyboards/kbdfans/maja_soldered/rules.mk +++ b/keyboards/kbdfans/maja_soldered/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Enable keyboard backlight functionality -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in diff --git a/keyboards/kbdfans/odin/rgb/config.h b/keyboards/kbdfans/odin/rgb/config.h new file mode 100644 index 000000000000..be6c4e92da82 --- /dev/null +++ b/keyboards/kbdfans/odin/rgb/config.h @@ -0,0 +1,90 @@ +/* Copyright 2021 Dztech + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "config_common.h" + +#define VENDOR_ID 0x4B42 +#define PRODUCT_ID 0x0102 +#define DEVICE_VER 0x0001 +#define MANUFACTURER KBDFANS +#define PRODUCT ODIN_RGB + +#define MATRIX_ROWS 6 +#define MATRIX_COLS 20 + +#define MATRIX_ROW_PINS { A10, A9, A8, B14, B13, A2 } +#define MATRIX_COL_PINS { A3, A4, A5, A6, A7, B0, B1, B2, B12, A15, B3, B4, B5, B6, B7, B8, C13, C14, C15, A0} +#define UNUSED_PINS + +#define DIODE_DIRECTION COL2ROW + +#define DEBOUNCE 5 +#define RGBLED_NUM 110 +#define DRIVER_LED_TOTAL 110 +#define RGB_DI_PIN B15 + +#ifdef RGB_MATRIX_ENABLE +#define RGB_DISABLE_WHEN_USB_SUSPENDED +#define RGB_MATRIX_KEYPRESSES +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 +#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_FRACTAL +#define ENABLE_RGB_MATRIX_PIXEL_RAIN + +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN + +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + + +#endif diff --git a/keyboards/kbdfans/odin/rgb/info.json b/keyboards/kbdfans/odin/rgb/info.json new file mode 100644 index 000000000000..efec5ce07e77 --- /dev/null +++ b/keyboards/kbdfans/odin/rgb/info.json @@ -0,0 +1,10 @@ +{ + "keyboard_name": "ODIN_RGB", + "url": "", + "maintainer": "moyi4681", + "layouts": { + "LAYOUT_all": { + "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"x":16.5, "y":0}, {"x":17.5, "y":0}, {"x":18.5, "y":0}, {"x":19.5, "y":0}, {"label":"~", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"@", "x":2, "y":1.5}, {"label":"#", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"Backspace", "x":13, "y":1.5, "w":2}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Num Lock", "x":16.5, "y":1.5}, {"label":"/", "x":17.5, "y":1.5}, {"label":"*", "x":18.5, "y":1.5}, {"label":"-", "x":19.5, "y":1.5}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":6.5, "y":2.5}, {"label":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"|", "x":13.5, "y":2.5, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"7", "x":16.5, "y":2.5}, {"label":"8", "x":17.5, "y":2.5}, {"label":"9", "x":18.5, "y":2.5}, {"label":"+", "x":19.5, "y":2.5, "h":2}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, {"label":"4", "x":16.5, "y":3.5}, {"label":"5", "x":17.5, "y":3.5}, {"label":"6", "x":18.5, "y":3.5}, {"label":"Shift", "x":0, "y":4.5, "w":2.25}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"N", "x":7.25, "y":4.5}, {"label":"M", "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":"Shift", "x":12.25, "y":4.5, "w":2.75}, {"label":"1", "x":16.5, "y":4.5}, {"label":"2", "x":17.5, "y":4.5}, {"label":"3", "x":18.5, "y":4.5}, {"label":"Enter", "x":19.5, "y":4.5, "h":2}, {"label":"\u2191", "x":15.25, "y":4.75}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, {"label":"Win", "x":1.25, "y":5.5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":7}, {"label":"Alt", "x":10.75, "y":5.5, "w":1.5}, {"label":"Win", "x":12.25, "y":5.5, "w":1.5}, {"label":"0", "x":17.5, "y":5.5}, {"label":".", "x":18.5, "y":5.5}, {"label":"\u2190", "x":14.25, "y":5.75}, {"label":"\u2193", "x":15.25, "y":5.75}, {"label":"\u2192", "x":16.25, "y":5.75}] + } + } +} \ No newline at end of file diff --git a/keyboards/kbdfans/odin/rgb/keymaps/default/keymap.c b/keyboards/kbdfans/odin/rgb/keymaps/default/keymap.c new file mode 100644 index 000000000000..79541a8cf900 --- /dev/null +++ b/keyboards/kbdfans/odin/rgb/keymaps/default/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2021 DZTECH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] =LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_PGUP, KC_PGDN, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT + ), + [1] =LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_PGUP, KC_PGDN, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT), +}; diff --git a/keyboards/kbdfans/odin/rgb/keymaps/via/config.h b/keyboards/kbdfans/odin/rgb/keymaps/via/config.h new file mode 100644 index 000000000000..7a40c74d851a --- /dev/null +++ b/keyboards/kbdfans/odin/rgb/keymaps/via/config.h @@ -0,0 +1,17 @@ +/* Copyright 2021 Dztech + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once +#define DYNAMIC_KEYMAP_LAYER_COUNT 2 diff --git a/keyboards/kbdfans/odin/rgb/keymaps/via/keymap.c b/keyboards/kbdfans/odin/rgb/keymaps/via/keymap.c new file mode 100644 index 000000000000..79f14fee6b59 --- /dev/null +++ b/keyboards/kbdfans/odin/rgb/keymaps/via/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2021 DZTECH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] =LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_PGUP, KC_PGDN, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT + ), + [1] =LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_PGUP, KC_PGDN, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT), +}; diff --git a/keyboards/kbdfans/odin/rgb/keymaps/via/rules.mk b/keyboards/kbdfans/odin/rgb/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/kbdfans/odin/rgb/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/kbdfans/odin/rgb/readme.md b/keyboards/kbdfans/odin/rgb/readme.md new file mode 100644 index 000000000000..3530fcca408c --- /dev/null +++ b/keyboards/kbdfans/odin/rgb/readme.md @@ -0,0 +1,21 @@ +# ODIN RGB + +A customizable HOTSWAP RGB keyboard. + +* Keyboard Maintainer: [moyi4681](https://github.com/moyi4681) +* Hardware Supported: KBDFANS +* Hardware Availability: [kbdfans](https://kbdfans.myshopify.com/) + +Make example for this keyboard (after setting up your build environment): + + make kbdfans/odin/rgb:default + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix +* **Physical reset button**:press and hold the button on the back of the PCB, then plugin to PC +* **Keycode in layout**: Press the key mapped to `RESET` if it is available + +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/kbdfans/odin/rgb/rgb.c b/keyboards/kbdfans/odin/rgb/rgb.c new file mode 100644 index 000000000000..3cc255526978 --- /dev/null +++ b/keyboards/kbdfans/odin/rgb/rgb.c @@ -0,0 +1,59 @@ +/* Copyright 2021 Dztech + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "rgb.h" + +#ifdef RGB_MATRIX_ENABLE +led_config_t g_led_config = { +{ + { 0, NO_LED, 1, 2, 3, 4, NO_LED, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 }, + { 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, NO_LED, 22, 21, 20, 19, 18 }, + { 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, NO_LED, 51, 52, 53, 54, 55 }, + { 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, NO_LED, 63, NO_LED, NO_LED, 58, 57, 56, NO_LED }, + { 76, NO_LED, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, NO_LED, 87, NO_LED, 88, 89, 90, 91, 92 }, + { 105,104, 103, NO_LED, NO_LED, NO_LED, 102, NO_LED, NO_LED, NO_LED, NO_LED, 100, NO_LED, 98, 97, 96, 95, 94, 93, NO_LED } +}, +{ + { 12*0, 0 }, { 12*2, 0 }, { 12*3, 0 }, { 12*4, 0 }, { 12*5, 0 }, { 12*7, 0 }, { 12*8, 0 }, { 12*9, 0 }, { 12*10, 0 }, { 12*11, 0 }, { 12*12, 0 }, { 12*13, 0 }, { 12*14, 0 }, { 12*15, 0 }, { 12*16, 0 }, { 12*17, 0 }, { 12*18, 0 }, { 224, 0 }, + + { 224, 14 }, { 12*18, 14 }, { 12*17, 14 }, { 12*16, 14 },{ 12*15, 14 },{ 12*13, 14 }, { 12*12, 14 }, { 12*11, 14 }, { 12*10, 14 }, { 12*9, 14 },{ 12*8, 14},{ 12*7, 14}, { 12*6, 14 }, { 12*5, 14 }, { 12*4, 14 },{ 12*3, 14 },{ 12*2, 14 }, {12, 14}, { 12*0, 14 }, + + { 12*0, 26.8 }, {12, 26.8}, { 12*2, 26.8 }, { 12*3, 26.8 }, { 12*4, 26.8 }, { 12*5, 26.8 }, { 12*6, 26.8 }, { 12*7, 26.8}, { 12*8, 26.8}, { 12*9, 26.8 }, { 12*10, 26.8 }, { 12*11, 26.8 }, { 12*12, 26.8 }, { 12*13, 26.8 }, { 12*15, 26.8 }, { 12*16, 26.8 }, { 12*17, 26.8 }, { 12*18, 26.8 }, { 224, 33.2 }, + + { 12*18, 39.6 }, { 12*17, 39.6 },{ 12*16, 39.6 }, {224,0},{0,0},{0,64},{224,64 }, { 12*13, 39.6 }, { 12*11, 39.6 }, { 12*10, 39.6 }, { 12*9, 39.6 },{ 12*8, 39.6}, { 12*7, 39.6}, { 12*6, 39.6 }, { 12*5, 39.6 },{ 12*4, 39.6 },{ 12*3, 39.6 }, { 12*2, 39.6 }, {12, 39.6}, { 12*0, 39.6 }, + + { 12*0, 52 },{ 12*2, 52 }, { 12*3, 52 }, { 12*4, 52 }, { 12*5, 52 }, { 12*6, 52 }, { 12*7, 52}, { 12*8, 52}, { 12*9, 52 }, { 12*10, 52 }, { 12*11, 52 }, { 12*13, 52 }, { 12*15, 52 }, { 12*16, 52 }, { 12*17, 52 }, { 12*18, 52 }, { 224, 58 }, + + { 12*18, 64 }, { 12*17, 64 }, { 12*16, 64 }, { 12*15, 64 },{ 12*14, 64 }, { 12*13, 64 }, { 12*11, 64 }, { 12*6, 64 }, { 12*2, 64 }, {12, 64}, { 12*0, 64 } +}, +{ +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4 +}}; + +__attribute__ ((weak)) +void rgb_matrix_indicators_user(void) { + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color(75, 0xFF, 0xFF, 0xFF); + } + if (host_keyboard_led_state().num_lock) { + rgb_matrix_set_color(21, 0xFF, 0xFF, 0xFF); + } +} +#endif diff --git a/keyboards/kbdfans/odin/rgb/rgb.h b/keyboards/kbdfans/odin/rgb/rgb.h new file mode 100644 index 000000000000..b23a93c9b363 --- /dev/null +++ b/keyboards/kbdfans/odin/rgb/rgb.h @@ -0,0 +1,35 @@ +/* Copyright 2021 Dztech + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define LAYOUT_all( \ + k00, k02, k03, k04, k05, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, k0H, k0I, k0J, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1F, k1G, k1H, k1I, k1J, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2F, k2G, k2H, k2I, k2J, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, k3G, k3H, k3I, \ + k40, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4D, k4F, k4G, k4H, k4I, k4J, \ + k50, k51, k52, k56, k5B, k5D, k5E, k5F, k5G, k5H, k5I \ +) \ +{ \ + {k00, KC_NO, k02, k03, k04, k05, KC_NO, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, k0H, k0I, k0J }, \ + {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, KC_NO, k1F, k1G, k1H, k1I, k1J }, \ + {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, KC_NO, k2F, k2G, k2H, k2I, k2J }, \ + {k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, KC_NO, k3D, KC_NO, KC_NO, k3G, k3H, k3I, KC_NO}, \ + {k40, KC_NO, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, KC_NO, k4D, KC_NO, k4F, k4G, k4H, k4I, k4J }, \ + {k50, k51, k52, KC_NO, KC_NO, KC_NO, k56, KC_NO, KC_NO, KC_NO, KC_NO, k5B, KC_NO, k5D, k5E, k5F, k5G, k5H, k5I, KC_NO} \ +} diff --git a/keyboards/kbdfans/odin/rgb/rules.mk b/keyboards/kbdfans/odin/rgb/rules.mk new file mode 100644 index 000000000000..676aa1fcf5c8 --- /dev/null +++ b/keyboards/kbdfans/odin/rgb/rules.mk @@ -0,0 +1,24 @@ +# 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 = 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 +# 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 +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = WS2812 + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/kbdfans/odin/soldered/config.h b/keyboards/kbdfans/odin/soldered/config.h new file mode 100644 index 000000000000..74e87aee2ea7 --- /dev/null +++ b/keyboards/kbdfans/odin/soldered/config.h @@ -0,0 +1,57 @@ +/* Copyright 2021 Dztech + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "config_common.h" + +#define VENDOR_ID 0x4B42 +#define PRODUCT_ID 0x0101 +#define DEVICE_VER 0x0001 +#define MANUFACTURER KBDFANS +#define PRODUCT ODIN_SOLDERED + + +#define MATRIX_ROWS 6 +#define MATRIX_COLS 20 + +#define MATRIX_ROW_PINS { A10, A9, A8, B14, B13, A2 } +#define MATRIX_COL_PINS { A3, A4, A5, A6, A7, B0, B1, B2, B12, A15, B3, B4, B5, B6, B7, B8, C13, C14, C15, A0} +#define UNUSED_PINS + +#define LED_NUM_LOCK_PIN B9 +#define LED_CAPS_LOCK_PIN B10 +#define LED_PIN_ON_STATE 0 + +#define DIODE_DIRECTION COL2ROW +#define DEBOUNCE 15 +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION +#define RGB_DI_PIN B15 +#ifdef RGB_DI_PIN +#define RGBLED_NUM 4 +#define RGBLIGHT_ANIMATIONS +#define RGBLIGHT_EFFECT_RGB_TEST +#define RGBLIGHT_EFFECT_STATIC_GRADIENT +#define RGBLIGHT_EFFECT_RAINBOW_SWIRL +#define RGBLIGHT_EFFECT_RAINBOW_MOOD +#define RGBLIGHT_EFFECT_CHRISTMAS +#define RGBLIGHT_EFFECT_SNAKE +#define RGBLIGHT_DEFAULT_MODE (RGBLIGHT_EFFECT_RAINBOW_MOOD + 8) +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 +#define RGBLIGHT_LIMIT_VAL 180 +#define RGBLIGHT_SLEEP +#endif +#define VIA_EEPROM_LAYOUT_OPTIONS_SIZE 2 diff --git a/keyboards/kbdfans/odin/soldered/info.json b/keyboards/kbdfans/odin/soldered/info.json new file mode 100644 index 000000000000..1d33f9f71021 --- /dev/null +++ b/keyboards/kbdfans/odin/soldered/info.json @@ -0,0 +1,10 @@ +{ + "keyboard_name": "ODIN_SOLDERED", + "url": "", + "maintainer": "moyi4681", + "layouts": { + "LAYOUT_all": { + "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"x":16.5, "y":0}, {"x":17.5, "y":0}, {"x":18.5, "y":0}, {"x":19.5, "y":0}, {"label":"~", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"@", "x":2, "y":1.5}, {"label":"#", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"x":13, "y":1.5}, {"label":"Backspace", "x":14, "y":1.5}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Num Lock", "x":16.5, "y":1.5}, {"label":"/", "x":17.5, "y":1.5}, {"label":"*", "x":18.5, "y":1.5}, {"label":"-", "x":19.5, "y":1.5}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":6.5, "y":2.5}, {"label":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"|", "x":13.5, "y":2.5, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"7", "x":16.5, "y":2.5}, {"label":"8", "x":17.5, "y":2.5}, {"label":"9", "x":18.5, "y":2.5}, {"label":"+", "x":19.5, "y":2.5}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, {"label":"4", "x":16.5, "y":3.5}, {"label":"5", "x":17.5, "y":3.5}, {"label":"6", "x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"label":"Shift", "x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"N", "x":7.25, "y":4.5}, {"label":"M", "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":"Shift", "x":12.25, "y":4.5, "w":1.75}, {"x":14, "y":4.5}, {"label":"1", "x":16.5, "y":4.5}, {"label":"2", "x":17.5, "y":4.5}, {"label":"3", "x":18.5, "y":4.5}, {"label":"Enter", "x":19.5, "y":4.5}, {"label":"\u2191", "x":15.25, "y":4.75}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, {"label":"Win", "x":1.25, "y":5.5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"x":10, "y":5.5}, {"x":11, "y":5.5}, {"x":12, "y":5.5}, {"x":13, "y":5.5}, {"label":"0", "x":17.5, "y":5.5}, {"label":".", "x":18.5, "y":5.5}, {"x":19.5, "y":5.5}, {"label":"\u2190", "x":14.25, "y":5.75}, {"label":"\u2193", "x":15.25, "y":5.75}, {"label":"\u2192", "x":16.25, "y":5.75}] + } + } +} \ No newline at end of file diff --git a/keyboards/kbdfans/odin/soldered/keymaps/default/keymap.c b/keyboards/kbdfans/odin/soldered/keymaps/default/keymap.c new file mode 100644 index 000000000000..ec202aea25dd --- /dev/null +++ b/keyboards/kbdfans/odin/soldered/keymaps/default/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2021 DZTECH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] =LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_PGUP, KC_PGDN, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL,KC_BSPC, KC_INS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,KC_END, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT,KC_PENT + ), + [1] =LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PAUS, KC_PAUS, KC_SPC, KC_SPC, KC_SPC, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,KC_INS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,KC_INS, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI, KC_MENU, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT,KC_PENT), +}; \ No newline at end of file diff --git a/keyboards/kbdfans/odin/soldered/keymaps/via/config.h b/keyboards/kbdfans/odin/soldered/keymaps/via/config.h new file mode 100644 index 000000000000..fc9fbf68cdac --- /dev/null +++ b/keyboards/kbdfans/odin/soldered/keymaps/via/config.h @@ -0,0 +1,17 @@ +/* Copyright 2021 Dztech + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once +#define DYNAMIC_KEYMAP_LAYER_COUNT 2 \ No newline at end of file diff --git a/keyboards/kbdfans/odin/soldered/keymaps/via/keymap.c b/keyboards/kbdfans/odin/soldered/keymaps/via/keymap.c new file mode 100644 index 000000000000..ec202aea25dd --- /dev/null +++ b/keyboards/kbdfans/odin/soldered/keymaps/via/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2021 DZTECH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] =LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_PGUP, KC_PGDN, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL,KC_BSPC, KC_INS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,KC_END, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT,KC_PENT + ), + [1] =LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PAUS, KC_PAUS, KC_SPC, KC_SPC, KC_SPC, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,KC_INS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,KC_INS, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI, KC_MENU, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT,KC_PENT), +}; \ No newline at end of file diff --git a/keyboards/kbdfans/odin/soldered/keymaps/via/rules.mk b/keyboards/kbdfans/odin/soldered/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/kbdfans/odin/soldered/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/kbdfans/odin/soldered/readme.md b/keyboards/kbdfans/odin/soldered/readme.md new file mode 100644 index 000000000000..1ffc34597fba --- /dev/null +++ b/keyboards/kbdfans/odin/soldered/readme.md @@ -0,0 +1,21 @@ +# ODIN SOLDERED + +A customizable soldered keyboard. + +* Keyboard Maintainer: [moyi4681](https://github.com/moyi4681) +* Hardware Supported: KBDFANS +* Hardware Availability: [kbdfans](https://kbdfans.myshopify.com/) + +Make example for this keyboard (after setting up your build environment): + + make kbdfans/odin/soldered:default + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix +* **Physical reset button**:press and hold the button on the back of the PCB, then plugin to PC +* **Keycode in layout**: Press the key mapped to `RESET` if it is available + +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/kbdfans/odin/soldered/rules.mk b/keyboards/kbdfans/odin/soldered/rules.mk new file mode 100644 index 000000000000..989088218849 --- /dev/null +++ b/keyboards/kbdfans/odin/soldered/rules.mk @@ -0,0 +1,22 @@ +# 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 = 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 +# 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 + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/kbdfans/odin/soldered/soldered.c b/keyboards/kbdfans/odin/soldered/soldered.c new file mode 100644 index 000000000000..ddf024efd3a2 --- /dev/null +++ b/keyboards/kbdfans/odin/soldered/soldered.c @@ -0,0 +1,16 @@ +/* Copyright 2020 Geekboards ltd. (geekboards.ru / geekboards.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 . + */ +#include "soldered.h" \ No newline at end of file diff --git a/keyboards/kbdfans/odin/soldered/soldered.h b/keyboards/kbdfans/odin/soldered/soldered.h new file mode 100644 index 000000000000..3541eff77d83 --- /dev/null +++ b/keyboards/kbdfans/odin/soldered/soldered.h @@ -0,0 +1,35 @@ + /* Copyright 2021 DZTECH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define LAYOUT_all( \ + k00, k02, k03, k04, k05, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, k0H, k0I, k0J, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H, k1I, k1J, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2F, k2G, k2H, k2I, k2J, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, k3G, k3H, k3I, k3J, \ + k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4D, k4E, k4F, k4G, k4H, k4I, k4J, \ + k50, k51, k52, k56, k5A, k5B, k5C, k5D, k5E, k5F, k5G, k5H, k5I, k5J \ +) \ +{ \ + {k00, KC_NO, k02, k03, k04, k05, KC_NO, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, k0H, k0I, k0J }, \ + {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H, k1I, k1J }, \ + {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, KC_NO, k2F, k2G, k2H, k2I, k2J }, \ + {k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, KC_NO, k3D, KC_NO, KC_NO, k3G, k3H, k3I, k3J }, \ + {k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, KC_NO, k4D, k4E, k4F, k4G, k4H, k4I, k4J }, \ + {k50, k51, k52, KC_NO, KC_NO, KC_NO, k56, KC_NO, KC_NO, KC_NO, k5A, k5B, k5C, k5D, k5E, k5F, k5G, k5H, k5I, k5J } \ +} diff --git a/keyboards/kbnordic/nordic60/info.json b/keyboards/kbnordic/nordic60/info.json new file mode 100644 index 000000000000..aa5a82a002da --- /dev/null +++ b/keyboards/kbnordic/nordic60/info.json @@ -0,0 +1,361 @@ +{ + "keyboard_name": "Nordic60 Rev A", + "url": "kbnordic.se", + "maintainer": "4pplet", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"`~", "x":0, "y":0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2@", "x":2, "y":0}, + {"label":"3#", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":7, "y":0}, + {"label":"8*", "x":8, "y":0}, + {"label":"9(", "x":9, "y":0}, + {"label":"0)", "x":10, "y":0}, + {"label":"-_", "x":11, "y":0}, + {"label":"=+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0}, + {"label":"Backspace", "x":14, "y":0}, + + {"label":"Tab", "w":1.5, "x":0, "y":1}, + {"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":"\\|", "w":1.5, "x":13.5, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";:", "x":10.75, "y":2}, + {"label":"'\"", "x":11.75, "y":2}, + {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + + {"label":"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":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", "w":1.75, "x":12.25, "y":3}, + {"label":"Fn", "x":14, "y":3}, + + {"label":"Ctrl", "w":1.25, "x":0, "y":4}, + {"label":"Win", "w":1.25, "x":1.25, "y":4}, + {"label":"Alt", "w":1.25, "x":2.5, "y":4}, + {"label":"Space", "w":6.25, "x":3.75, "y":4}, + {"label":"Alt", "w":1.25, "x":10, "y":4}, + {"label":"Win", "w":1.25, "x":11.25, "y":4}, + {"label":"Menu", "w":1.25, "x":12.5, "y":4}, + {"label":"Ctrl", "w":1.25, "x":13.75, "y":4} + ] + }, + "LAYOUT_60_iso": { + "layout": [ + {"label":"`\u00ac", "x":0, "y":0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2\"", "x":2, "y":0}, + {"label":"3\u00a3", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":7, "y":0}, + {"label":"8*", "x":8, "y":0}, + {"label":"9(", "x":9, "y":0}, + {"label":"0)", "x":10, "y":0}, + {"label":"-_", "x":11, "y":0}, + {"label":"=+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + + {"label":"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":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";:", "x":10.75, "y":2}, + {"label":"'@", "x":11.75, "y":2}, + {"label":"#~", "x":12.75, "y":2}, + {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, + + {"label":"Shift", "x":0, "y":3, "w":1.25}, + {"label":"\\|", "x":1.25, "y":3}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",<", "x":9.25, "y":3}, + {"label":".>", "x":10.25, "y":3}, + {"label":"/?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":2.75}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"Win", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space", "x":3.75, "y":4, "w":6.25}, + {"label":"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} + ] + }, + "LAYOUT_60_iso_split_bs_rshift": { + "layout": [ + {"label":"`\u00ac", "x":0, "y":0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2\"", "x":2, "y":0}, + {"label":"3\u00a3", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":7, "y":0}, + {"label":"8*", "x":8, "y":0}, + {"label":"9(", "x":9, "y":0}, + {"label":"0)", "x":10, "y":0}, + {"label":"-_", "x":11, "y":0}, + {"label":"=+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0}, + {"label":"Backspace", "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":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";:", "x":10.75, "y":2}, + {"label":"'@", "x":11.75, "y":2}, + {"label":"#~", "x":12.75, "y":2}, + {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, + + {"label":"Shift", "x":0, "y":3, "w":1.25}, + {"label":"\\|", "x":1.25, "y":3}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",<", "x":9.25, "y":3}, + {"label":".>", "x":10.25, "y":3}, + {"label":"/?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"Fn", "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}, + {"label":"Space", "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} + ] + }, + "LAYOUT_60_ansi": { + "layout": [ + {"label":"`~", "x":0, "y":0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2@", "x":2, "y":0}, + {"label":"3#", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":7, "y":0}, + {"label":"8*", "x":8, "y":0}, + {"label":"9(", "x":9, "y":0}, + {"label":"0)", "x":10, "y":0}, + {"label":"-_", "x":11, "y":0}, + {"label":"=+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + + {"label":"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":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",<", "x":9.25, "y":3}, + {"label":".>", "x":10.25, "y":3}, + {"label":"/?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":2.75}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"Win", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space", "x":3.75, "y":4, "w":6.25}, + {"label":"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} + ] + }, + "LAYOUT_60_ansi_split_bs_rshift": { + "layout": [ + {"label":"`~", "x":0, "y":0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2@", "x":2, "y":0}, + {"label":"3#", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":7, "y":0}, + {"label":"8*", "x":8, "y":0}, + {"label":"9(", "x":9, "y":0}, + {"label":"0)", "x":10, "y":0}, + {"label":"-_", "x":11, "y":0}, + {"label":"=+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0}, + {"label":"Backspace", "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":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",<", "x":9.25, "y":3}, + {"label":".>", "x":10.25, "y":3}, + {"label":"/?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"Fn", "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}, + {"label":"Space", "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/kbnordic/nordic60/keymaps/all/keymap.c b/keyboards/kbnordic/nordic60/keymaps/all/keymap.c new file mode 100644 index 000000000000..57475e95edda --- /dev/null +++ b/keyboards/kbnordic/nordic60/keymaps/all/keymap.c @@ -0,0 +1,34 @@ +/* +Copyright 2021 Stefan Sundin "4pplet" <4pplet@protonmail.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 . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +// main layer +[0] = 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_NO, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_NUHS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL), +// basic function layer +[1] = LAYOUT_all( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; diff --git a/keyboards/kbnordic/nordic60/keymaps/default/keymap.c b/keyboards/kbnordic/nordic60/keymaps/default/keymap.c new file mode 100644 index 000000000000..0776088335fc --- /dev/null +++ b/keyboards/kbnordic/nordic60/keymaps/default/keymap.c @@ -0,0 +1,36 @@ +/* +Copyright 2021 Stefan Sundin "4pplet" <4pplet@protonmail.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 . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // main layer + [0] = LAYOUT_60_iso_split_bs_rshift( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL + ), + // basic function layer + [1] = LAYOUT_60_iso_split_bs_rshift( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/kbnordic/nordic60/keymaps/default_ansi/keymap.c b/keyboards/kbnordic/nordic60/keymaps/default_ansi/keymap.c new file mode 100644 index 000000000000..21b2249f7401 --- /dev/null +++ b/keyboards/kbnordic/nordic60/keymaps/default_ansi/keymap.c @@ -0,0 +1,36 @@ +/* +Copyright 2021 Stefan Sundin "4pplet" <4pplet@protonmail.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 . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // main layer + [0] = LAYOUT_60_ansi( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL + ), + // basic function layer + [1] = LAYOUT_60_ansi( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/kbnordic/nordic60/keymaps/via/keymap.c b/keyboards/kbnordic/nordic60/keymaps/via/keymap.c new file mode 100644 index 000000000000..f8fe78c268c2 --- /dev/null +++ b/keyboards/kbnordic/nordic60/keymaps/via/keymap.c @@ -0,0 +1,48 @@ +/* +Copyright 2021 Stefan Sundin "4pplet" <4pplet@protonmail.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 . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +// main layer +[0] = 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_NO, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_NUHS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL), +// basic function layer +[1] = LAYOUT_all( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +// extra layer for VIA +[2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +// extra layer for VIA +[3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; diff --git a/keyboards/kbnordic/nordic60/keymaps/via/rules.mk b/keyboards/kbnordic/nordic60/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/kbnordic/nordic60/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/kbnordic/nordic60/readme.md b/keyboards/kbnordic/nordic60/readme.md new file mode 100644 index 000000000000..7b4f29d22e20 --- /dev/null +++ b/keyboards/kbnordic/nordic60/readme.md @@ -0,0 +1,20 @@ +# nordic60 + +PCB designed for kbnordic.se + +* Keyboard Maintainer: [4pplet](https://github.com/4pplet) +* Hardware Supported: nordic60 + +Make example for this keyboard (after setting up your build environment): + + make kbnordic/nordic60/rev_a:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the ESC key +* **Physical reset button**: Briefly press the button on the back of the PCB (S301) or short the two pads in the "RST" header. +* **Keycode in layout**: Press the key mapped to `RESET` if it is available diff --git a/keyboards/kbnordic/nordic60/rev_a/config.h b/keyboards/kbnordic/nordic60/rev_a/config.h new file mode 100644 index 000000000000..be555417d7e0 --- /dev/null +++ b/keyboards/kbnordic/nordic60/rev_a/config.h @@ -0,0 +1,61 @@ +/* +Copyright 2021 Stefan Sundin "4pplet" <4pplet@protonmail.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 . +*/ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4445 +#define PRODUCT_ID 0x0001 +#define DEVICE_VER 0x0001 +#define MANUFACTURER KBNORDIC +#define PRODUCT Nordic60 Rev A + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 +// ROWS: Top to bottom, COLS: Left to right + +#define MATRIX_ROW_PINS {C2,D0,B0,D6,D5} +#define MATRIX_COL_PINS {C4,C5,D2,C6,C7,B7,B6,B5,B4,B3,B2,B1,D1,D4} + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +#define RGB_DI_PIN D3 +#define RGBLED_NUM 16 +#define BACKLIGHT_LEVELS 5 + +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 +#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 diff --git a/keyboards/kbnordic/nordic60/rev_a/readme.md b/keyboards/kbnordic/nordic60/rev_a/readme.md new file mode 100644 index 000000000000..230a84a616b0 --- /dev/null +++ b/keyboards/kbnordic/nordic60/rev_a/readme.md @@ -0,0 +1,12 @@ +# nordic60 + +PCB designed for kbnordic.se + +* Keyboard Maintainer: [4pplet](https://github.com/4pplet) +* Hardware Supported: nordic60 + +Make example for this keyboard (after setting up your build environment): + + make kbnordic/nordic60/rev_a: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/kbnordic/nordic60/rev_a/rev_a.c b/keyboards/kbnordic/nordic60/rev_a/rev_a.c new file mode 100644 index 000000000000..7c92220811fc --- /dev/null +++ b/keyboards/kbnordic/nordic60/rev_a/rev_a.c @@ -0,0 +1,17 @@ +/* +Copyright 2021 Stefan Sundin "4pplet" <4pplet@protonmail.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 . +*/ +#include "rev_a.h" diff --git a/keyboards/kbnordic/nordic60/rev_a/rev_a.h b/keyboards/kbnordic/nordic60/rev_a/rev_a.h new file mode 100644 index 000000000000..25599a33c5a6 --- /dev/null +++ b/keyboards/kbnordic/nordic60/rev_a/rev_a.h @@ -0,0 +1,112 @@ +/* +Copyright 2021 Stefan Sundin "4pplet" <4pplet@protonmail.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 . +*/ +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +/* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───────┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │1d │ │1d │ 2u Backspace + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ └─┬─────┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │2c │ │ │ + * 2.25u ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ┌──┴┐2d │ ISO Enter + * LShift │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2d │ │2c │ │ + * ┌────────┐ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌─┴───┴────┤ + * │30 │ │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │ │3c │ 2.75u RShift + * └────────┘ ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ └──────────┘ + * │40 │41 │42 │46 │4a │4b │4c │4d │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ + * ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐ + * │40 │41 │42 │46 │4b │4c │4d │ Tsangan/WKL + * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ + */ + +#define LAYOUT_all( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k1d, \ + 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, 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}, \ + {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, XXX, k46, XXX, XXX, XXX, k4a, k4b, k4c, k4d}, \ +} + +#define LAYOUT_60_iso( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k1d, \ + 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, k3c, \ + k40, k41, k42, k46, k4a, k4b, k4c, k4d \ +) \ +{ \ + {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, XXX}, \ + {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, XXX}, \ + {k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, k4a, k4b, k4c, k4d}, \ +} + +#define LAYOUT_60_iso_split_bs_rshift( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k1d, \ + 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, k3c, 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, 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, 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, k1d, \ + 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, k3c, \ + k40, k41, k42, k46, k4a, k4b, k4c, k4d \ +) \ +{ \ + {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, XXX}, \ + {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, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, XXX}, \ + {k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, k4a, k4b, k4c, k4d}, \ +} + +#define LAYOUT_60_ansi_split_bs_rshift( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k1d, \ + 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, k3c, 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, k1d}, \ + {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, k3c, k3d}, \ + {k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, k4a, k4b, k4c, k4d}, \ +} diff --git a/keyboards/kbnordic/nordic60/rev_a/rules.mk b/keyboards/kbnordic/nordic60/rev_a/rules.mk new file mode 100644 index 000000000000..6ce22f2cfd85 --- /dev/null +++ b/keyboards/kbnordic/nordic60/rev_a/rules.mk @@ -0,0 +1,19 @@ +# MCU name +MCU = atmega32u2 + +# 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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/kc60/info.json b/keyboards/kc60/info.json index b6bdfe870e02..a92a72f6a15c 100644 --- a/keyboards/kc60/info.json +++ b/keyboards/kc60/info.json @@ -2,8 +2,6 @@ "keyboard_name": "KC60", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/kc60/keymaps/noroadsleft/readme.md b/keyboards/kc60/keymaps/noroadsleft/readme.md index dbab96d022b5..cddc1fd9765a 100644 --- a/keyboards/kc60/keymaps/noroadsleft/readme.md +++ b/keyboards/kc60/keymaps/noroadsleft/readme.md @@ -1,6 +1,6 @@ # @noroadsleft's KC60 keymap -### Last updated: May 3, 2021 16:42 (-0700) +### Last updated: November 9, 2021, 9:47 (-0800) ![](https://i.imgur.com/tzhXQYIl.jpg) @@ -47,6 +47,7 @@ My base layers are pretty standard for a 60%, with the following changes: - The Right `GUI` key has been replaced with a `MO(_MA)` key, which moves to the Macro layer when held. - The `Caps Lock` key has been replaced with a dual function `LT()` key, which opens the Function layer when held, and is `Caps Lock` when tapped. - The Left `Control` key has been replaced with a `MT(MOD_CTRL, KC_GRV)` key, which is `Ctrl` when held and ` ~ when tapped. +- The Number Row `1` through `0` keys will send Numeric Keypad keycodes instead of Number Row keycodes if tapped while `Right Alt` is active. This functionality is documented in [my userspace readme](../../../../users/noroadsleft/readme.md#emulated-numeric-keypad). ### Layer 0: Dvorak - `_DV` @@ -96,6 +97,8 @@ I used to have some macro craziness here. I've now switched to leaving my main s Arrows, Navigation keys (Insert, Home, Page Up, etc.), and Function keys are here. Also has keys for Calculator, Menu, Volume Control, and shortcuts for Select All, Undo, Cut, Copy, and Paste. Numpad Enter for when I'm working in Adobe Photoshop, because it treats Numpad Enter differently from the regular Enter key. +Similarly to my Emulated Numeric Keypad functionality, the `F1` through `F12` keys will change to `F13` through `F24` while `Right Alt` is active. This functionality is documented in [my userspace readme](../../../../users/noroadsleft/readme.md#emulated-extended-function-keys). + ![Fn layer](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/kc60/keymaps/noroadsleft/function.png) diff --git a/keyboards/kc60/keymaps/stanleylai/keymap.c b/keyboards/kc60/keymaps/stanleylai/keymap.c index 887b5da728c6..54428f287599 100644 --- a/keyboards/kc60/keymaps/stanleylai/keymap.c +++ b/keyboards/kc60/keymaps/stanleylai/keymap.c @@ -16,7 +16,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Base Default Layer // Mac Modifier Layout. Use BootMagic to toggle GUI and ALT positions. [_BL] = LAYOUT( - F(0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \ + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \ KC_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, \ LT(_FL, KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_NO, KC_ENT, \ KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, MO(_FL), KC_UP, \ @@ -46,39 +46,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_NO, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS), #endif }; - - -enum function_id { - SHIFT_ESC, -}; - -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_FUNCTION(SHIFT_ESC), -}; - -#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) -void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { - static uint8_t shift_esc_shift_mask; - switch (id) { - case SHIFT_ESC: - shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK; - if (record->event.pressed) { - if (shift_esc_shift_mask) { - add_key(KC_GRV); - send_keyboard_report(); - } else { - add_key(KC_ESC); - send_keyboard_report(); - } - } else { - if (shift_esc_shift_mask) { - del_key(KC_GRV); - send_keyboard_report(); - } else { - del_key(KC_ESC); - send_keyboard_report(); - } - } - break; - } -} diff --git a/keyboards/kc60/keymaps/stanleylai/rules.mk b/keyboards/kc60/keymaps/stanleylai/rules.mk index b4471d606861..9816b082fd5c 100644 --- a/keyboards/kc60/keymaps/stanleylai/rules.mk +++ b/keyboards/kc60/keymaps/stanleylai/rules.mk @@ -3,12 +3,11 @@ # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) COMMAND_ENABLE = no # Commands for debug and configuration -KEYBOARD_LOCK_ENABLE = yes # Allow locking of keyboard via magic key BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable WS2812 underglow RGB strip MIDI_ENABLE = no # MIDI controls @@ -19,4 +18,3 @@ AUDIO_ENABLE = no # Audio output on port C6 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 - diff --git a/keyboards/kc60/keymaps/wigguno/rules.mk b/keyboards/kc60/keymaps/wigguno/rules.mk index d95742d42ec4..f9b4b86766be 100644 --- a/keyboards/kc60/keymaps/wigguno/rules.mk +++ b/keyboards/kc60/keymaps/wigguno/rules.mk @@ -3,12 +3,11 @@ # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) COMMAND_ENABLE = no # Commands for debug and configuration -KEYBOARD_LOCK_ENABLE = yes # Allow locking of keyboard via magic key # 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 @@ -18,4 +17,3 @@ MIDI_ENABLE = no # MIDI controls UNICODE_ENABLE = no # Unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE = no # Audio output on port C6 - diff --git a/keyboards/kc60/rules.mk b/keyboards/kc60/rules.mk index 8f3ab9eb5e9f..4583984059e6 100644 --- a/keyboards/kc60/rules.mk +++ b/keyboards/kc60/rules.mk @@ -7,19 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output -KEYBOARD_LOCK_ENABLE = yes # Allow locking of keyboard via magic key LAYOUTS = 60_ansi diff --git a/keyboards/kc60se/config.h b/keyboards/kc60se/config.h index 697e20d343f7..fc75f68ff05f 100644 --- a/keyboards/kc60se/config.h +++ b/keyboards/kc60se/config.h @@ -81,54 +81,6 @@ along with this program. If not, see . */ // #define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -146,23 +98,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 diff --git a/keyboards/kc60se/info.json b/keyboards/kc60se/info.json index de61cb717aaf..1c8cde098982 100644 --- a/keyboards/kc60se/info.json +++ b/keyboards/kc60se/info.json @@ -2,11 +2,8 @@ "keyboard_name": "kc60se", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { - "key_count": 65, "layout": [ {"label":"Esc", "x":0, "y":0},{"label":"!", "x":1, "y":0},{"label":"@", "x":2, "y":0},{"label":"#", "x":3, "y":0},{"label":"$", "x":4, "y":0},{"label":"%", "x":5, "y":0},{"label":"^", "x":6, "y":0},{"label":"&", "x":7, "y":0},{"label":"*", "x":8, "y":0},{"label":"(", "x":9, "y":0},{"label":")", "x":10, "y":0},{"label":"_", "x":11, "y":0},{"label":"+", "x":12, "y":0},{"label":"|", "x":13, "y":0},{"label":"~", "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":"Backspace", "x":13.5, "y":1, "w":1.5}, @@ -16,7 +13,6 @@ ] }, "LAYOUT_60_ansi": { - "key_count": 61, "layout": [ {"label":"Esc", "x":0, "y":0},{"label":"!", "x":1, "y":0},{"label":"@", "x":2, "y":0},{"label":"#", "x":3, "y":0},{"label":"$", "x":4, "y":0},{"label":"%", "x":5, "y":0},{"label":"^", "x":6, "y":0},{"label":"&", "x":7, "y":0},{"label":"*", "x":8, "y":0},{"label":"(", "x":9, "y":0},{"label":")", "x":10, "y":0},{"label":"_", "x":11, "y":0},{"label":"+", "x":12, "y":0},{"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"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}, @@ -25,7 +21,6 @@ {"label":"Ctrl", "x":0, "y":4, "w":1.25},{"label":"Gui", "x":1.25, "y":4, "w":1.25},{"label":"Alt", "x":2.5, "y":4, "w":1.25},{"label":" ", "x":3.75, "y":4, "w":6.25},{"label":"Alt", "x":10, "y":4, "w":1.25},{"label":"Gui", "x":11.25, "y":4, "w":1.25},{"label":"Win", "x":12.5, "y":4, "w":1.25},{"label":"Ctrl", "x":13.75, "y":4, "w":1.25}] }, "LAYOUT_60_iso": { - "key_count": 62, "layout": [ {"label":"Esc", "x":0, "y":0},{"label":"!", "x":1, "y":0},{"label":"@", "x":2, "y":0},{"label":"#", "x":3, "y":0},{"label":"$", "x":4, "y":0},{"label":"%", "x":5, "y":0},{"label":"^", "x":6, "y":0},{"label":"&", "x":7, "y":0},{"label":"*", "x":8, "y":0},{"label":"(", "x":9, "y":0},{"label":")", "x":10, "y":0},{"label":"_", "x":11, "y":0},{"label":"+", "x":12, "y":0},{"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"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}, @@ -35,7 +30,6 @@ ] }, "LAYOUT_60_ansi_split_bs_rshift": { - "key_count": 63, "layout": [ {"label":"Esc~", "x":0, "y":0},{"label":"!", "x":1, "y":0},{"label":"@", "x":2, "y":0},{"label":"#", "x":3, "y":0},{"label":"$", "x":4, "y":0},{"label":"%", "x":5, "y":0},{"label":"^", "x":6, "y":0},{"label":"&", "x":7, "y":0},{"label":"*", "x":8, "y":0},{"label":"(", "x":9, "y":0},{"label":")", "x":10, "y":0},{"label":"_", "x":11, "y":0},{"label":"+", "x":12, "y":0},{"label":"|", "x":13, "y":0},{"label":"~", "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":"Backspace", "x":13.5, "y":1, "w":1.5}, @@ -45,7 +39,6 @@ ] }, "LAYOUT_60_iso_split_bs_rshift": { - "key_count": 64, "layout": [ {"label":"Esc", "x":0, "y":0},{"label":"!", "x":1, "y":0},{"label":"@", "x":2, "y":0},{"label":"#", "x":3, "y":0},{"label":"$", "x":4, "y":0},{"label":"%", "x":5, "y":0},{"label":"^", "x":6, "y":0},{"label":"&", "x":7, "y":0},{"label":"*", "x":8, "y":0},{"label":"(", "x":9, "y":0},{"label":")", "x":10, "y":0},{"label":"_", "x":11, "y":0},{"label":"+", "x":12, "y":0},{"label":"`", "x":13, "y":0},{"label":"Backspace", "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}, diff --git a/keyboards/kc60se/readme.md b/keyboards/kc60se/readme.md index 55583d81db8a..ba2cab1c769f 100644 --- a/keyboards/kc60se/readme.md +++ b/keyboards/kc60se/readme.md @@ -10,13 +10,13 @@ ### Enter the Bootloader - * As delivered, BOOTMAGIC_ENABLE = yes: + * New firmware, with Bootmagic Lite: + * holding down Esc while plugging in USB. + * As delivered, with Full Bootmagic (deprecated): * unplug keyboard; * while holding down 'Space' 'B', plug in USB cable and continue to hold for 8 seconds; * 'lsusb' should report 'Atmel Corp. atmega32u4 DFU bootloader' instead of 'feed 6060'; * in bootloader LEDs are off & keyboard does not work. - * New firmware, BOOTMAGIC_ENABLE = lite: - * holding down esc while pluging in usb. * Hardware way: * momentary jump pads 5 & 6 to enter bootloader; diff --git a/keyboards/kc60se/rules.mk b/keyboards/kc60se/rules.mk index 0006d9bb852d..a85bcefe424a 100644 --- a/keyboards/kc60se/rules.mk +++ b/keyboards/kc60se/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable -BOOTMAGIC_ENABLE = lite # plugin usb while holding down Esc, will toggle on NKRO and change will persist +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # default keymap does not map mouse 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 = yes # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output LAYOUTS = 60_ansi 60_ansi_split_bs_rshift 60_iso 60_iso_split_bs_rshift diff --git a/keyboards/keebio/bdn9/info.json b/keyboards/keebio/bdn9/info.json index 1c8f5dec8383..e383395eea8b 100644 --- a/keyboards/keebio/bdn9/info.json +++ b/keyboards/keebio/bdn9/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Keebio BDN9", "url": "https://keeb.io", "maintainer": "Keebio", - "width": 3, - "height": 3, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/keebio/bdn9/keymaps/bcat/keymap.c b/keyboards/keebio/bdn9/keymaps/bcat/keymap.c index 06ba9a559560..c64f702b2029 100644 --- a/keyboards/keebio/bdn9/keymaps/bcat/keymap.c +++ b/keyboards/keebio/bdn9/keymaps/bcat/keymap.c @@ -1,3 +1,19 @@ +/* Copyright 2021 Jonathan Rascher + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #include QMK_KEYBOARD_H enum layer { @@ -8,17 +24,18 @@ enum layer { #define LY_SECND MO(LAYER_SECOND) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off [LAYER_FIRST] = LAYOUT( KC_MUTE, LY_SECND, BL_BRTG, KC_F4, KC_F5, KC_F6, KC_F1, KC_F2, KC_F3 ), - [LAYER_SECOND] = LAYOUT( EEP_RST, _______, RESET, KC_F10, KC_F11, KC_F12, KC_F7, KC_F8, KC_F9 ), + // clang-format on }; bool encoder_update_user(uint8_t index, bool clockwise) { @@ -26,20 +43,17 @@ bool encoder_update_user(uint8_t index, bool clockwise) { /* Top-left encoder (volume) */ case 0: tap_code(clockwise ? KC_VOLU : KC_VOLD); - break; - + return false; /* Top-right encoder (backlight brightness) */ case 1: +#if defined(BACKLIGHT_ENABLE) if (clockwise) { -#ifdef BACKLIGHT_ENABLE backlight_increase(); -#endif } else { -#ifdef BACKLIGHT_ENABLE backlight_decrease(); -#endif } - break; +#endif + return false; } return true; } diff --git a/keyboards/keebio/bdn9/keymaps/copface/config.h b/keyboards/keebio/bdn9/keymaps/copface/config.h new file mode 100644 index 000000000000..38881a210868 --- /dev/null +++ b/keyboards/keebio/bdn9/keymaps/copface/config.h @@ -0,0 +1,8 @@ +// Copyright 2021 Gustavs Gutmanis (@gustavs-gutmanis) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#ifdef RGB_MATRIX_ENABLE +# define RGB_MATRIX_KEYPRESSES +#endif diff --git a/keyboards/keebio/bdn9/keymaps/copface/keymap.c b/keyboards/keebio/bdn9/keymaps/copface/keymap.c new file mode 100644 index 000000000000..c086faa1aa50 --- /dev/null +++ b/keyboards/keebio/bdn9/keymaps/copface/keymap.c @@ -0,0 +1,93 @@ +// Copyright 2021 Gustavs Gutmanis (@gustavs-gutmanis) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +enum layer_names { + _SMITE = 0, +}; + +enum custom_keycodes { + S_7 = SAFE_RANGE, // [VEL] - laugh + S_8, // [VVN] - No + S_9, // [VVA] - OK + + S_4, // [VVB] - be right back + S_5, // [VVVE] - on my way + S_6, // [VVM] - out of mana + + S_1, // [VRR] - retreat + S_2, // [VDD] - defend + S_3, // [VAA] - attack +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case S_7: + if (record->event.pressed) { + // VEL + SEND_STRING("v" SS_DELAY(20) "e" SS_DELAY(20) "l"); + } + break; + case S_8: + if (record->event.pressed) { + // VVN + SEND_STRING("v" SS_DELAY(20) "v" SS_DELAY(20) "n"); + } + break; + case S_9: + if (record->event.pressed) { + // VVA + SEND_STRING("v" SS_DELAY(20) "v" SS_DELAY(20) "a"); + } + break; + + case S_4: + if (record->event.pressed) { + // VVB + SEND_STRING("v" SS_DELAY(20) "v" SS_DELAY(20) "b"); + } + break; + case S_5: + if (record->event.pressed) { + // VVVE + SEND_STRING("v" SS_DELAY(20) "v" SS_DELAY(20) "v" SS_DELAY(20) "e"); + } + break; + case S_6: + if (record->event.pressed) { + // VVM + SEND_STRING("v" SS_DELAY(20) "v" SS_DELAY(20) "m"); + } + break; + + case S_1: + if (record->event.pressed) { + // VRR + SEND_STRING("v" SS_DELAY(20) "r" SS_DELAY(20) "r"); + } + break; + case S_2: + if (record->event.pressed) { + // VDD + SEND_STRING("v" SS_DELAY(20) "d" SS_DELAY(20) "d"); + } + break; + case S_3: + if (record->event.pressed) { + // VAA + SEND_STRING("v" SS_DELAY(20) "a" SS_DELAY(20) "a"); + } + break; + } + + return true; +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_SMITE] = LAYOUT( + S_7, S_8, S_9, + S_4, S_5, S_6, + S_1, S_2, S_3 + ), +}; diff --git a/keyboards/keebio/bdn9/keymaps/vosechu-ksp/keymap.c b/keyboards/keebio/bdn9/keymaps/vosechu-ksp/keymap.c index d1792d2b2937..a449c3ec3d54 100644 --- a/keyboards/keebio/bdn9/keymaps/vosechu-ksp/keymap.c +++ b/keyboards/keebio/bdn9/keymaps/vosechu-ksp/keymap.c @@ -58,7 +58,7 @@ bool panic_mode = false; bool flight_mode = false; bool rcs_mode = false; -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { base_mode = false; panic_mode = false; flight_mode = false; diff --git a/keyboards/keebio/bdn9/rev1/rules.mk b/keyboards/keebio/bdn9/rev1/rules.mk index b3c34d2d49c7..529cf7e7208b 100644 --- a/keyboards/keebio/bdn9/rev1/rules.mk +++ b/keyboards/keebio/bdn9/rev1/rules.mk @@ -2,31 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes diff --git a/keyboards/keebio/bdn9/rev2/config.h b/keyboards/keebio/bdn9/rev2/config.h index d4a252a3016f..f9eb3babca70 100644 --- a/keyboards/keebio/bdn9/rev2/config.h +++ b/keyboards/keebio/bdn9/rev2/config.h @@ -55,6 +55,54 @@ along with this program. If not, see . // RGB Matrix # ifdef RGB_MATRIX_ENABLE # define DRIVER_LED_TOTAL RGBLED_NUM +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH # endif #endif diff --git a/keyboards/keebio/bdn9/rev2/rules.mk b/keyboards/keebio/bdn9/rev2/rules.mk index df6de14073db..f6ec730ae56a 100644 --- a/keyboards/keebio/bdn9/rev2/rules.mk +++ b/keyboards/keebio/bdn9/rev2/rules.mk @@ -7,20 +7,16 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes RGB_MATRIX_ENABLE = yes RGB_MATRIX_DRIVER = WS2812 diff --git a/keyboards/keebio/bfo9000/info.json b/keyboards/keebio/bfo9000/info.json index 1fda64e4cc1f..c492ccae1865 100644 --- a/keyboards/keebio/bfo9000/info.json +++ b/keyboards/keebio/bfo9000/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Keebio BFO-9000", "url": "https://keeb.io", "maintainer": "Keebio", - "width": 19, - "height": 6, "layouts": { "LAYOUT": { "layout": [ @@ -124,4 +122,3 @@ } } } - \ No newline at end of file diff --git a/keyboards/keebio/bfo9000/keymaps/abstractkb/keymap.c b/keyboards/keebio/bfo9000/keymaps/abstractkb/keymap.c index f97f0abf1a61..29531b99739d 100644 --- a/keyboards/keebio/bfo9000/keymaps/abstractkb/keymap.c +++ b/keyboards/keebio/bfo9000/keymaps/abstractkb/keymap.c @@ -21,11 +21,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_LIST] = LAYOUT( \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TO(_BASE), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) @@ -41,7 +41,7 @@ void matrix_post_init_user(void) { led_set_user(host_keyboard_leds()); } -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { switch (biton32(state)) { case _LIST: rgblight_sethsv_noeeprom(0,255,255); @@ -52,7 +52,7 @@ uint32_t layer_state_set_user(uint32_t state) { rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); break; } - + return state; } diff --git a/keyboards/keebio/bfo9000/keymaps/insertsnideremarks/keymap.c b/keyboards/keebio/bfo9000/keymaps/insertsnideremarks/keymap.c index d15569ee9648..ba272ca63cc9 100644 --- a/keyboards/keebio/bfo9000/keymaps/insertsnideremarks/keymap.c +++ b/keyboards/keebio/bfo9000/keymaps/insertsnideremarks/keymap.c @@ -61,7 +61,7 @@ void dance_LAYER_reset(qk_tap_dance_state_t *state, void *user_data) { } qk_tap_dance_action_t tap_dance_actions[] = { -[ADJ] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_LAYER_finished, dance_LAYER_reset), // Double-tap to activate Adjust layer via oneshot layer +[ADJ] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_LAYER_finished, dance_LAYER_reset), // Double-tap to activate Adjust layer via oneshot layer [LBCB] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, KC_LCBR), // Left bracket on a single-tap, left brace on a double-tap [RBCB] = ACTION_TAP_DANCE_DOUBLE(KC_RBRC, KC_RCBR), // Right bracket on a single-tap, right brace on a double-tap [EQPL] = ACTION_TAP_DANCE_DOUBLE(KC_EQL, KC_PLUS), // Plus sign on a single-tap, equal sign on a double-tap @@ -77,7 +77,7 @@ qk_tap_dance_action_t tap_dance_actions[] = { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Colemak (Default layer; keys separated by /: tap for first, hold for second; uses Space Cadet Shifts) - ,-----------------------------------------------------------------------. ,-----------------------------------------------------------------------. + ,-----------------------------------------------------------------------. ,-----------------------------------------------------------------------. | ESC | F1 | F2 | F3 | F4 | F5 | | | | | Adjust| | F12 | F6 | F7 | F8 | F9 | F10 | F11 | |-------+-------+-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------+-------+-------| | = | 1 | 2 | 3 | 4 | 5 | | | | | Numpad| | | 6 | 7 | 8 | 9 | 0 | - | @@ -93,16 +93,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_COLEMAK] = LAYOUT( \ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, _______, ADJUST, _______, KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, - KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, _______, NUMPAD, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, - KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, _______, _______, KC_HOME, KC_PAUS, _______, _______, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS, - CTLESC, KC_A, KC_R, KC_S, KC_T, KC_D, _______, _______, KC_PGUP, KC_SLCK, _______, _______, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, - KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, CTLESC, ALTAPP, KC_PGDN, KC_PSCR, KC_RALT, KC_RCTL, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, - KC_INS, KC_GRV, KC_LBRC, KC_RBRC, ALTAPP, SPCFN, ENTNS, KC_BSPC, KC_END, _______, KC_ENT, DELNS, BSPCFN, KC_RGUI, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, _______, NUMPAD, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, _______, _______, KC_HOME, KC_PAUS, _______, _______, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS, + CTLESC, KC_A, KC_R, KC_S, KC_T, KC_D, _______, _______, KC_PGUP, KC_SLCK, _______, _______, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, CTLESC, ALTAPP, KC_PGDN, KC_PSCR, KC_RALT, KC_RCTL, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, + KC_INS, KC_GRV, KC_LBRC, KC_RBRC, ALTAPP, SPCFN, ENTNS, KC_BSPC, KC_END, _______, KC_ENT, DELNS, BSPCFN, KC_RGUI, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT ), /* QWERTY (Keys separated by /: tap for first, hold for second; uses Space Cadet Shifts) - ,-----------------------------------------------------------------------. ,-----------------------------------------------------------------------. + ,-----------------------------------------------------------------------. ,-----------------------------------------------------------------------. | ESC | F1 | F2 | F3 | F4 | F5 | | | | | Adjust| | F12 | F6 | F7 | F8 | F9 | F10 | F11 | |-------+-------+-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------+-------+-------| | = | 1 | 2 | 3 | 4 | 5 | | | | | Numpad| | | 6 | 7 | 8 | 9 | 0 | - | @@ -118,16 +118,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_QWERTY] = LAYOUT( \ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, ADJUST, _______, KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, - KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, NUMPAD, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_HOME, KC_PAUS, _______, _______, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, - CTLESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_PGUP, KC_SLCK, _______, _______, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, CTLESC, ALTAPP, KC_PGDN, KC_PSCR, KC_RALT, KC_RCTL, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, - KC_INS, KC_GRV, KC_LBRC, KC_RBRC, ALTAPP, SPCFN, ENTNS, KC_BSPC, KC_END, _______, KC_ENT, DELNS, BSPCFN, KC_RGUI, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, NUMPAD, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_HOME, KC_PAUS, _______, _______, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + CTLESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_PGUP, KC_SLCK, _______, _______, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, CTLESC, ALTAPP, KC_PGDN, KC_PSCR, KC_RALT, KC_RCTL, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, + KC_INS, KC_GRV, KC_LBRC, KC_RBRC, ALTAPP, SPCFN, ENTNS, KC_BSPC, KC_END, _______, KC_ENT, DELNS, BSPCFN, KC_RGUI, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT ), /* Numbers/Symbols layer (Multiple characters: single-tap for first, double-tap for second) - ,-----------------------------------------------------------------------. ,-----------------------------------------------------------------------. + ,-----------------------------------------------------------------------. ,-----------------------------------------------------------------------. | | | | | | | | | | | | | | | | | | | | |-------+-------+-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------+-------+-------| | F12 | F1 | F2 | F3 | F4 | F5 | | | | | | | | F6 | F7 | F8 | F9 | F10 | F12 | @@ -160,7 +160,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), /* Function layer - ,-----------------------------------------------------------------------. ,-----------------------------------------------------------------------. + ,-----------------------------------------------------------------------. ,-----------------------------------------------------------------------. | | | | | | | | | | | | | | | | | | | | |-------+-------+-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------+-------+-------| | F12 | F1 | F2 | F3 | F4 | F5 | | | | | | | | F6 | F7 | F8 | F9 | F10 | F12 | @@ -194,7 +194,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Numpad layer (Left side duplicates layout from the Numbers layer, just with numpad output; right side layout close to PC numpad layout) - ,-----------------------------------------------------------------------. ,-----------------------------------------------------------------------. + ,-----------------------------------------------------------------------. ,-----------------------------------------------------------------------. | | | | | | | | | | | | | | | | | | | | |-------+-------+-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------+-------+-------| | | NumLk | | | | | | | | | | | Tab | NumLk | KP / | KP * | KP - | | | @@ -219,7 +219,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Colemak gaming/vanilla (Limited access to Function or Numbers layers; mainly used for gaming; Ent/NS + Del/NS2 on right side to access Adjust layer) - ,-----------------------------------------------------------------------. ,-----------------------------------------------------------------------. + ,-----------------------------------------------------------------------. ,-----------------------------------------------------------------------. | ESC | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | | Adjust| | F12 | F6 | F7 | F8 | F9 | F10 | F11 | |-------+-------+-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------+-------+-------| | = | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | | Numpad| | | 6 | 7 | 8 | 9 | 0 | - | @@ -235,16 +235,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_COLEMAKGM] = LAYOUT( \ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, ADJUST, _______, KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, - KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, NUMPAD, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, - KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_HOME, KC_PAUS, _______, _______, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS, - KC_LCTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_PGUP, KC_SLCK, _______, _______, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_ESC, KC_LALT, KC_PGDN, KC_PSCR, KC_RALT, KC_RCTL, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, - KC_INS, KC_GRV, KC_LBRC, KC_RBRC, KC_LALT, KC_SPC, KC_ENT, KC_BSPC, KC_END, _______, ENTNS, DELNS, BSPCFN, KC_RGUI, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, NUMPAD, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_HOME, KC_PAUS, _______, _______, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS, + KC_LCTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_PGUP, KC_SLCK, _______, _______, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_ESC, KC_LALT, KC_PGDN, KC_PSCR, KC_RALT, KC_RCTL, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_INS, KC_GRV, KC_LBRC, KC_RBRC, KC_LALT, KC_SPC, KC_ENT, KC_BSPC, KC_END, _______, ENTNS, DELNS, BSPCFN, KC_RGUI, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT ), /* QWERTY gaming/vanilla (Limited access to Function or Numbers layers; mainly used for gaming; Ent/NS + Del/NS2 on right side to access Adjust layer) - ,-----------------------------------------------------------------------. ,-----------------------------------------------------------------------. + ,-----------------------------------------------------------------------. ,-----------------------------------------------------------------------. | ESC | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | | Adjust| | F12 | F6 | F7 | F8 | F9 | F10 | F11 | |-------+-------+-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------+-------+-------| | = | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | | Numpad| | | 6 | 7 | 8 | 9 | 0 | - | @@ -260,16 +260,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_QWERTYGM] = LAYOUT( \ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, ADJUST, _______, KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, - KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, NUMPAD, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_HOME, KC_PAUS, _______, _______, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, - KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_PGUP, KC_SLCK, _______, _______, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_ESC, KC_LALT, KC_PGDN, KC_PSCR, KC_RALT, KC_RCTL, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, - KC_INS, KC_GRV, KC_LBRC, KC_RBRC, KC_LALT, KC_SPC, KC_ENT, KC_BSPC, KC_END, _______, ENTNS, DELNS, BSPCFN, KC_RGUI, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, NUMPAD, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_HOME, KC_PAUS, _______, _______, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_PGUP, KC_SLCK, _______, _______, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_ESC, KC_LALT, KC_PGDN, KC_PSCR, KC_RALT, KC_RCTL, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_INS, KC_GRV, KC_LBRC, KC_RBRC, KC_LALT, KC_SPC, KC_ENT, KC_BSPC, KC_END, _______, ENTNS, DELNS, BSPCFN, KC_RGUI, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT ), /* Adjust layer (Enter/Number + Delete/Number2 under non-gaming/vanilla layers or press & hold Adjust key on function row; Numpad is a toggle) - ,-----------------------------------------------------------------------. ,-----------------------------------------------------------------------. + ,-----------------------------------------------------------------------. ,-----------------------------------------------------------------------. | | | | | | | | | | | | | | | | | | | | |-------+-------+-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------+-------+-------| | |Colemak| Qwerty| |ColmkGM| QWGM | | | | | | | | Numpad| | | | | RESET | @@ -304,7 +304,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _NUMBERS, _NUMBERS2, _ADJUST); } diff --git a/keyboards/keebio/bfo9000/keymaps/insertsnideremarks/rules.mk b/keyboards/keebio/bfo9000/keymaps/insertsnideremarks/rules.mk index cf63c44f4f0d..390cb3fd60a4 100644 --- a/keyboards/keebio/bfo9000/keymaps/insertsnideremarks/rules.mk +++ b/keyboards/keebio/bfo9000/keymaps/insertsnideremarks/rules.mk @@ -3,7 +3,7 @@ # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = yes # Console for debug(+400) diff --git a/keyboards/keebio/bfo9000/keymaps/tuesdayjohn/keymap.c b/keyboards/keebio/bfo9000/keymaps/tuesdayjohn/keymap.c index e42f6797e705..fe951ac01938 100644 --- a/keyboards/keebio/bfo9000/keymaps/tuesdayjohn/keymap.c +++ b/keyboards/keebio/bfo9000/keymaps/tuesdayjohn/keymap.c @@ -50,7 +50,7 @@ void dance_LAYER_reset(qk_tap_dance_state_t *state, void *user_data) { } qk_tap_dance_action_t tap_dance_actions[] = { -[ADJ] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_LAYER_finished, dance_LAYER_reset), // Double-tap to activate Adjust layer via oneshot layer +[ADJ] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_LAYER_finished, dance_LAYER_reset), // Double-tap to activate Adjust layer via oneshot layer [LBCB] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, KC_LCBR), // Left bracket on a single-tap, left brace on a double-tap [RBCB] = ACTION_TAP_DANCE_DOUBLE(KC_RBRC, KC_RCBR), // Right bracket on a single-tap, right brace on a double-tap [EQPL] = ACTION_TAP_DANCE_DOUBLE(KC_EQL, KC_PLUS), // Plus sign on a single-tap, equal sign on a double-tap @@ -97,7 +97,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Colemak (Default layer; keys separated by /: tap for first, hold for second; uses Space Cadet Shifts) - ,--------------------------------------------------------------------------------. ,--------------------------------------------------------------------------------. + ,--------------------------------------------------------------------------------. ,--------------------------------------------------------------------------------. | ESC | F1 | F2 | F3 | F4 | F5 | | | | | Adjust | | F12 | F6 | F7 | F8 | F9 | F10 | F11 | |--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------| | = | 1 | 2 | 3 | 4 | 5 | | | | | Numpad | | | 6 | 7 | 8 | 9 | 0 | - | @@ -113,17 +113,17 @@ Colemak */ [_COLEMAK] = LAYOUT( \ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, _______, ADJUST, _______, KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, - KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, _______, NUMPAD, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, - KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, _______, _______, KC_HOME, KC_PAUS, _______, _______, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS, - CTLESC, KC_A, KC_R, KC_S, KC_T, KC_D, _______, _______, KC_PGUP, KC_SLCK, _______, _______, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, - KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, CTLESC, ALTAPP, KC_PGDN, KC_PSCR, KC_RALT, KC_RCTL, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, - KC_INS, KC_GRV, KC_LBRC, KC_RBRC, ALTAPP, SPCFN, ENTNS, KC_BSPC, KC_END, _______, KC_ENT, DELNS, BSPCFN, KC_RGUI, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, _______, NUMPAD, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, _______, _______, KC_HOME, KC_PAUS, _______, _______, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS, + CTLESC, KC_A, KC_R, KC_S, KC_T, KC_D, _______, _______, KC_PGUP, KC_SLCK, _______, _______, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, CTLESC, ALTAPP, KC_PGDN, KC_PSCR, KC_RALT, KC_RCTL, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, + KC_INS, KC_GRV, KC_LBRC, KC_RBRC, ALTAPP, SPCFN, ENTNS, KC_BSPC, KC_END, _______, KC_ENT, DELNS, BSPCFN, KC_RGUI, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT ), /* QWERTY (Keys separated by /: tap for first, hold for second; uses Space Cadet Shifts) - ,--------------------------------------------------------------------------------. ,--------------------------------------------------------------------------------. + ,--------------------------------------------------------------------------------. ,--------------------------------------------------------------------------------. | ESC | F1 | F2 | F3 | F4 | F5 | | | | | Adjust | | F12 | F6 | F7 | F8 | F9 | F10 | F11 | |--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------| | = | 1 | 2 | 3 | 4 | 5 | | | | | Numpad | | | 6 | 7 | 8 | 9 | 0 | - | @@ -139,17 +139,17 @@ QWERTY */ [_QWERTY] = LAYOUT( \ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, ADJUST, _______, KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, - KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, NUMPAD, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_HOME, KC_PAUS, _______, _______, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, - CTLESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_PGUP, KC_SLCK, _______, _______, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, CTLESC, ALTAPP, KC_PGDN, KC_PSCR, KC_RALT, KC_RCTL, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, - KC_INS, KC_GRV, KC_LBRC, KC_RBRC, ALTAPP, SPCFN, ENTNS, KC_BSPC, KC_END, _______, KC_ENT, DELNS, BSPCFN, KC_RGUI, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, NUMPAD, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_HOME, KC_PAUS, _______, _______, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + CTLESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_PGUP, KC_SLCK, _______, _______, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, CTLESC, ALTAPP, KC_PGDN, KC_PSCR, KC_RALT, KC_RCTL, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, + KC_INS, KC_GRV, KC_LBRC, KC_RBRC, ALTAPP, SPCFN, ENTNS, KC_BSPC, KC_END, _______, KC_ENT, DELNS, BSPCFN, KC_RGUI, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT ), /* Numbers/Symbols layer (Multiple characters: single-tap for first, double-tap for second) - ,--------------------------------------------------------------------------------. ,--------------------------------------------------------------------------------. + ,--------------------------------------------------------------------------------. ,--------------------------------------------------------------------------------. | | | | | | | | | | | | | | | | | | | | |--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------| | F12 | F1 | F2 | F3 | F4 | F5 | | | | | | | | F6 | F7 | F8 | F9 | F10 | F12 | @@ -183,7 +183,7 @@ Numbers/Symbols layer /* Function layer - ,--------------------------------------------------------------------------------. ,--------------------------------------------------------------------------------. + ,--------------------------------------------------------------------------------. ,--------------------------------------------------------------------------------. | | | | | | | | | | | | | | | | | | | | |--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------| | F12 | F1 | F2 | F3 | F4 | F5 | | | | | | | | F6 | F7 | F8 | F9 | F10 | F12 | @@ -218,7 +218,7 @@ Function layer /* Numpad layer (Left side duplicates layout from the Numbers layer, just with numpad output; right side layout close to PC numpad layout) - ,--------------------------------------------------------------------------------. ,--------------------------------------------------------------------------------. + ,--------------------------------------------------------------------------------. ,--------------------------------------------------------------------------------. | | | | | | | | | | | | | | | | | | | | |--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------| | | NumLk | | | | | | | | | | | Tab | NumLk | KP / | KP * | KP - | | | @@ -244,7 +244,7 @@ Numpad layer /* Gaming (Toggle gaming layer with limited dual-role keys and layer access; NKRO turned on by default; Ent/NS + Delete/Numbers2 to access Adjust layer) - ,--------------------------------------------------------------------------------. ,--------------------------------------------------------------------------------. + ,--------------------------------------------------------------------------------. ,--------------------------------------------------------------------------------. | | | | | | | F6 | F7 | F8 | | | | | | | | | | | |--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------| | | | | | | | 6 | 7 | 8 | | | | | | | | | | | @@ -260,17 +260,17 @@ Gaming */ [_GAMING] = LAYOUT( \ _______, _______, _______, _______, _______, _______, KC_F6, KC_F7, KC_F8, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, KC_6, KC_7, KC_8, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, KC_J, KC_L, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - KC_LCTL, _______, _______, _______, _______, _______, KC_H, KC_N, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - KC_LSFT, _______, _______, _______, _______, _______, KC_ESC, KC_LALT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_RSFT, - _______, _______, _______, _______, KC_LALT, KC_SPC, KC_ENT, KC_BSPC, _______, _______, ENTNS, _______, _______, _______, _______, _______, _______, _______ + _______, _______, _______, _______, _______, _______, KC_6, KC_7, KC_8, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, KC_J, KC_L, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_LCTL, _______, _______, _______, _______, _______, KC_H, KC_N, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_LSFT, _______, _______, _______, _______, _______, KC_ESC, KC_LALT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_RSFT, + _______, _______, _______, _______, KC_LALT, KC_SPC, KC_ENT, KC_BSPC, _______, _______, ENTNS, _______, _______, _______, _______, _______, _______, _______ ), /* Adjust layer (Press and hold Adjust key on the function row or Enter/Number + Delete/Number2 to access; Numpad and NKRO are on toggle) - ,--------------------------------------------------------------------------------. ,--------------------------------------------------------------------------------. + ,--------------------------------------------------------------------------------. ,--------------------------------------------------------------------------------. | | | | | | | | | | | | | | | | | | | | |--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------| | | Colemak| Qwerty | | Gaming | | | | | | | | | Numpad | | | | | RESET | @@ -304,7 +304,7 @@ Adjust layer }; -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _NUMBERS, _NUMBERS2, _ADJUST); } diff --git a/keyboards/keebio/bfo9000/keymaps/tuesdayjohn/rules.mk b/keyboards/keebio/bfo9000/keymaps/tuesdayjohn/rules.mk index cf63c44f4f0d..390cb3fd60a4 100644 --- a/keyboards/keebio/bfo9000/keymaps/tuesdayjohn/rules.mk +++ b/keyboards/keebio/bfo9000/keymaps/tuesdayjohn/rules.mk @@ -3,7 +3,7 @@ # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = yes # Console for debug(+400) diff --git a/keyboards/keebio/bfo9000/rules.mk b/keyboards/keebio/bfo9000/rules.mk index af9ca797b509..9465ed848384 100644 --- a/keyboards/keebio/bfo9000/rules.mk +++ b/keyboards/keebio/bfo9000/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend SPLIT_KEYBOARD = yes diff --git a/keyboards/keebio/choconum/config.h b/keyboards/keebio/choconum/config.h index 30befff05d25..45dca6458513 100644 --- a/keyboards/keebio/choconum/config.h +++ b/keyboards/keebio/choconum/config.h @@ -76,59 +76,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -149,26 +96,6 @@ along with this program. If not, see . #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/keebio/choconum/info.json b/keyboards/keebio/choconum/info.json index 8886235667bf..b036cf0b7945 100644 --- a/keyboards/keebio/choconum/info.json +++ b/keyboards/keebio/choconum/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Choconum", "url": "https://keeb.io", "maintainer": "Keebio", - "width": 5, - "height": 4, "layouts": { "LAYOUT_numpad_5x4": { - "key_count": 17, "layout": [ {"x":0, "y":0}, {"x":1, "y":0}, @@ -32,7 +29,6 @@ ] }, "LAYOUT_ortho_5x4": { - "key_count": 20, "layout": [ {"x":0, "y":0}, {"x":1, "y":0}, diff --git a/keyboards/keebio/choconum/rules.mk b/keyboards/keebio/choconum/rules.mk index f166909c582f..6f441e862c18 100644 --- a/keyboards/keebio/choconum/rules.mk +++ b/keyboards/keebio/choconum/rules.mk @@ -7,20 +7,16 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = ortho_5x4 numpad_5x4 diff --git a/keyboards/keebio/chocopad/config.h b/keyboards/keebio/chocopad/config.h index 08e62f034fd5..e07bd5da5b03 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/chocopad/info.json b/keyboards/keebio/chocopad/info.json index c5a7d42bbc84..6fbbbbd4fccb 100644 --- a/keyboards/keebio/chocopad/info.json +++ b/keyboards/keebio/chocopad/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Chocopad", "url": "", "maintainer": "qmk", - "width": 4, - "height": 4, "layouts": { "LAYOUT_ortho_4x4": { "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}] diff --git a/keyboards/keebio/chocopad/rules.mk b/keyboards/keebio/chocopad/rules.mk index a21d919d77f9..32a622b4f98f 100644 --- a/keyboards/keebio/chocopad/rules.mk +++ b/keyboards/keebio/chocopad/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 = 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 = yes # Enable keyboard backlight functionality AUDIO_ENABLE = no diff --git a/keyboards/keebio/dilly/config.h b/keyboards/keebio/dilly/config.h index 835498f25e61..9d7b08509de8 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 229c6cd9547a..e0f13bae5e5b 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/dilly/info.json b/keyboards/keebio/dilly/info.json index 6b67d45b938d..fd12fce337ff 100644 --- a/keyboards/keebio/dilly/info.json +++ b/keyboards/keebio/dilly/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Dilly", "url": "", "maintainer": "qmk", - "width": 10, - "height": 3, "layouts": { "LAYOUT_ortho_3x10": { - "key_count": 30, "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}] } } diff --git a/keyboards/keebio/dilly/rules.mk b/keyboards/keebio/dilly/rules.mk index dd730c950fb6..de3b3d20ad1c 100644 --- a/keyboards/keebio/dilly/rules.mk +++ b/keyboards/keebio/dilly/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 -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 = yes # Enable keyboard backlight functionality AUDIO_ENABLE = no diff --git a/keyboards/keebio/dsp40/info.json b/keyboards/keebio/dsp40/info.json index e00f4f21a608..e595a4d2a658 100644 --- a/keyboards/keebio/dsp40/info.json +++ b/keyboards/keebio/dsp40/info.json @@ -2,8 +2,6 @@ "keyboard_name": "DSP40", "url": "https://keeb.io", "maintainer": "nooges", - "width": 12, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/keebio/dsp40/rev1/rules.mk b/keyboards/keebio/dsp40/rev1/rules.mk index ab46842286ea..c02082c9b390 100644 --- a/keyboards/keebio/dsp40/rev1/rules.mk +++ b/keyboards/keebio/dsp40/rev1/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes diff --git a/keyboards/keebio/ergodicity/config.h b/keyboards/keebio/ergodicity/config.h index 612f90a5d86e..1e6327aec06d 100644 --- a/keyboards/keebio/ergodicity/config.h +++ b/keyboards/keebio/ergodicity/config.h @@ -105,59 +105,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -176,26 +123,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/keebio/ergodicity/info.json b/keyboards/keebio/ergodicity/info.json index b019da3aaec0..83b5049e2041 100644 --- a/keyboards/keebio/ergodicity/info.json +++ b/keyboards/keebio/ergodicity/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Ergodicity", "url": "https://keeb.io", "maintainer": "Keebio", - "width": 19.5, - "height": 5.25, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/keebio/ergodicity/keymaps/default/keymap.c b/keyboards/keebio/ergodicity/keymaps/default/keymap.c index b33031ca5ecd..b25562784b13 100644 --- a/keyboards/keebio/ergodicity/keymaps/default/keymap.c +++ b/keyboards/keebio/ergodicity/keymaps/default/keymap.c @@ -59,15 +59,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/keebio/ergodicity/rules.mk b/keyboards/keebio/ergodicity/rules.mk index 215430b274ab..7fcd791996b3 100644 --- a/keyboards/keebio/ergodicity/rules.mk +++ b/keyboards/keebio/ergodicity/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/keebio/foldkb/info.json b/keyboards/keebio/foldkb/info.json index cf248ae48a1d..e94389ef4e56 100644 --- a/keyboards/keebio/foldkb/info.json +++ b/keyboards/keebio/foldkb/info.json @@ -2,8 +2,6 @@ "keyboard_name": "FoldKB", "url": "https://keeb.io", "maintainer": "nooges", - "width": 17.5, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/keebio/foldkb/keymaps/via/rules.mk b/keyboards/keebio/foldkb/keymaps/via/rules.mk index 4b1bcabda81a..eec3596d0d37 100644 --- a/keyboards/keebio/foldkb/keymaps/via/rules.mk +++ b/keyboards/keebio/foldkb/keymaps/via/rules.mk @@ -1,3 +1,3 @@ VIA_ENABLE = yes -CONSOLE_ENABLE = yes +CONSOLE_ENABLE = no LTO_ENABLE = yes diff --git a/keyboards/keebio/foldkb/rules.mk b/keyboards/keebio/foldkb/rules.mk index 4f3a43261a6a..f7f59b6f7fad 100644 --- a/keyboards/keebio/foldkb/rules.mk +++ b/keyboards/keebio/foldkb/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = yes # Console for debug +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LTO_ENABLE = yes SPLIT_KEYBOARD = yes diff --git a/keyboards/keebio/fourier/info.json b/keyboards/keebio/fourier/info.json index b16476c4b9df..2449a399ddec 100644 --- a/keyboards/keebio/fourier/info.json +++ b/keyboards/keebio/fourier/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Fourier", "url": "https://keeb.io", "maintainer": "nooges", - "width": 14, - "height": 4, "layouts": { "LAYOUT": { "layout": [ @@ -64,4 +62,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/keebio/fourier/rules.mk b/keyboards/keebio/fourier/rules.mk index 6ad9ad9ce324..4eb89e278e16 100644 --- a/keyboards/keebio/fourier/rules.mk +++ b/keyboards/keebio/fourier/rules.mk @@ -2,33 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - SPLIT_KEYBOARD = yes diff --git a/keyboards/keebio/iris/config.h b/keyboards/keebio/iris/config.h index 863722d7d04d..6868dc13541e 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" - -#endif // CONFIG_H diff --git a/keyboards/keebio/iris/info.json b/keyboards/keebio/iris/info.json index 37806975f8ec..ec52ef04d1d3 100644 --- a/keyboards/keebio/iris/info.json +++ b/keyboards/keebio/iris/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Iris", "url": "https://keeb.io", "maintainer": "Keebio", - "width": 15, - "height": 5.75, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/keebio/iris/iris.h b/keyboards/keebio/iris/iris.h index a02158e36f7a..db0440a126ed 100644 --- a/keyboards/keebio/iris/iris.h +++ b/keyboards/keebio/iris/iris.h @@ -1,15 +1,19 @@ #pragma once -#ifdef KEYBOARD_keebio_iris_rev1 +#if defined(KEYBOARD_keebio_iris_rev1) #include "rev1.h" -#elif KEYBOARD_keebio_iris_rev1_led +#elif defined(KEYBOARD_keebio_iris_rev1_led) #include "rev1_led.h" -#elif KEYBOARD_keebio_iris_rev2 +#elif defined(KEYBOARD_keebio_iris_rev2) #include "rev2.h" -#elif KEYBOARD_keebio_iris_rev3 +#elif defined(KEYBOARD_keebio_iris_rev3) #include "rev3.h" -#elif KEYBOARD_keebio_iris_rev4 +#elif defined(KEYBOARD_keebio_iris_rev4) #include "rev4.h" +#elif defined(KEYBOARD_keebio_iris_rev5) + #include "rev5.h" +#elif defined(KEYBOARD_keebio_iris_rev6) + #include "rev6.h" #endif #include "quantum.h" diff --git a/keyboards/keebio/iris/keymaps/antonlindstrom/keymap.c b/keyboards/keebio/iris/keymaps/antonlindstrom/keymap.c index ce2fee792af9..3e06ffff2946 100644 --- a/keyboards/keebio/iris/keymaps/antonlindstrom/keymap.c +++ b/keyboards/keebio/iris/keymaps/antonlindstrom/keymap.c @@ -13,27 +13,23 @@ #define KC_RASE MO(_RAISE) #define KC_RST RESET -#define KC_AA SE_AA -#define KC_AE SE_AE -#define KC_OE SE_OSLH - #define KC_LBR SE_LBRC #define KC_RBR SE_RBRC const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_QWERTY] = LAYOUT( - //,----+----+----+----+----+----. ,----+----+----+----+----+----. - KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 ,KC_BSPC, - //|----+----+----+----+----+----| |----+----+----+----+----+----| - KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_AA , - //|----+----+----+----+----+----| |----+----+----+----+----+----| - KC_LSFT, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_OE , KC_AE , - //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----| - KC_LCTL, KC_Z , KC_X , KC_C , KC_V , KC_B ,KC_LBR ,KC_RBR , KC_N , KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_MINS, - //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----' - KC_LGUI,KC_LOWR,KC_SPC , KC_ENT ,KC_RASE,KC_LALT - // `----+----+----' `----+----+----' + //,-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------. + KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 ,KC_BSPC, + //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------| + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,SE_ARNG, + //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------| + KC_LSFT, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L ,SE_ODIA,SE_ADIA, + //|-------+-------+-------+-------+-------+-------+-------. ,-------|-------+-------+-------+-------+-------+-------| + KC_LCTL, KC_Z , KC_X , KC_C , KC_V , KC_B ,KC_LBR , KC_RBR , KC_N , KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_MINS, + //`-------+-------+-------+--+----+-------+-------+-------/ \-------+-------+-------+-------+-------+-------+-------' + KC_LGUI,KC_LOWR,KC_SPC , KC_ENT ,KC_RASE,KC_LALT + // `-------+-------+-------' `-------+-------+-------' ), [_LOWER] = LAYOUT( @@ -42,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------| SE_ACUT,RGB_TOG,RGB_MOD,RGB_M_B,RGB_M_K,_______, _______,_______,_______,_______,_______,SE_ASTR, //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------| - _______,_______,SE_LESS,SE_GRTR,SE_PIPE,SE_SLSH, SE_BSLS,SE_LCBR,SE_RCBR,SE_LBRC,SE_RBRC,SE_APOS, + _______,_______,SE_LABK,SE_RABK,SE_PIPE,SE_SLSH, SE_BSLS,SE_LCBR,SE_RCBR,SE_LBRC,SE_RBRC,SE_QUOT, //|-------+-------+-------+-------+-------+-------+-------. ,-------|-------+-------+-------+-------+-------+-------| _______,KC_NUBS,_______,_______,_______,_______,SE_LCBR, SE_RCBR,_______,_______,_______,_______,_______,_______, //`-------+-------+-------+--+----+-------+-------+-------/ \-------+-------+-------+-------+-------+-------+-------' diff --git a/keyboards/keebio/iris/keymaps/davidrambo/keymap.c b/keyboards/keebio/iris/keymaps/davidrambo/keymap.c index aa757508a4cf..b36abd4c560a 100644 --- a/keyboards/keebio/iris/keymaps/davidrambo/keymap.c +++ b/keyboards/keebio/iris/keymaps/davidrambo/keymap.c @@ -1,35 +1,30 @@ #include QMK_KEYBOARD_H -extern keymap_config_t keymap_config; - //keycode shorthands -#define KC____ KC_TRNS // three underscores "___" for transparent -#define KC_SYM MO(3) -#define KC_MAC TO(0) -#define KC_PC TO(1) -#define KC_GM TO(2) -#define KC_NAVMAC LT(4, KC_TAB) -#define KC_NAVPC LT(5, KC_TAB) +#define MACNAV LT(4, KC_TAB) +#define PCNAV LT(5, KC_TAB) //text editor shortcuts for NAV and NAVPC -#define KC_AL LALT(KC_LEFT) -#define KC_AR LALT(KC_RGHT) -#define KC_CL LCTL(KC_LEFT) -#define KC_CR LCTL(KC_RGHT) -#define KC_ABSPC LALT(KC_BSPC) -#define KC_CBSPC LCTL(KC_BSPC) +#define ALEFT LALT(KC_LEFT) +#define ARGHT LALT(KC_RGHT) +#define CLEFT LCTL(KC_LEFT) +#define CRGHT LCTL(KC_RGHT) +#define ABSPC LALT(KC_BSPC) +#define CBSPC LCTL(KC_BSPC) //internet browser tab shortcuts and window swapping for Mac and Windows -#define KC_GSL LGUI(S(KC_LEFT)) -#define KC_GSR LGUI(S(KC_RGHT)) -#define KC_CPGD LCTL(KC_PGDN) -#define KC_CPGU LCTL(KC_PGUP) +#define GSL LGUI(S(KC_LEFT)) +#define GSR LGUI(S(KC_RGHT)) +#define CTLPGDN LCTL(KC_PGDN) +#define CTLPGUP LCTL(KC_PGUP) + +#define CMBS GUI_T(KC_BSPC) +#define CTBS CTL_T(KC_BSPC) +#define C_TAB LCTL(KC_TAB) +#define G_TAB LGUI(KC_TAB) +#define A_TAB LALT(KC_TAB) -#define KC_CMBS GUI_T(KC_BSPC) -#define KC_CTBS CTL_T(KC_BSPC) -#define KC_C_TAB LCTL(KC_TAB) -#define KC_G_TAB LGUI(KC_TAB) -#define KC_A_TAB LALT(KC_TAB) +#define SFLK TD(SFT_LCK) // alias for tapdance //layer shorthands #define _COLEMAK 0 @@ -39,101 +34,98 @@ extern keymap_config_t keymap_config; #define _NAVMAC 4 #define _NAVPC 5 -enum { -// SFT_LCK //tapdance declarations +enum custom_keycodes { + SFT_LCK, //tapdance declarations COLEMAK = 0, PC, GAME, SYMBOL, NAV, //Navigation layer for Mac Colemak NAVPC, //Navigation layer for PC Colemak - SFT_LCK //tapdance declaration }; -#define KC_SFLK TD(SFT_LCK) // alias for tapdance - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_COLEMAK] = LAYOUT( - //,----+----+----+----+----+----. ,----+----+----+----+----+----. - KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 ,KC_MINS, - //|----+----+----+----+----+----| |----+----+----+----+----+----| - KC_GRV , KC_Q , KC_W , KC_F , KC_P , KC_G , KC_J , KC_L , KC_U , KC_Y ,KC_SCLN,KC_BSPC, - //|----+----+----+----+----+----| |----+----+----+----+----+----| - KC_NAVMAC, KC_A , KC_R , KC_S , KC_T , KC_D , KC_H , KC_N , KC_E , KC_I , KC_O ,KC_QUOT, - //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----| - KC_SFLK, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_PC , KC_ENT , KC_K , KC_M ,KC_COMM, KC_DOT,KC_SLSH,KC_RSFT, - //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----' - KC_LCTL,KC_LGUI,KC_CMBS, KC_SPC, KC_SYM, KC_LALT - // `----+----+----' `----+----+----' + //,------+------+------+------+------+------. ,------+------+------+------+------+------. + 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_GRV, KC_Q , KC_W , KC_F , KC_P, KC_G, KC_J , KC_L , KC_U , KC_Y , KC_SCLN,KC_BSPC, + //|------+------+------+------+------+------| |------+------+------+------+------+------| + MACNAV, KC_A , KC_R , KC_S , KC_T, KC_D, KC_H , KC_N , KC_E , KC_I , KC_O, KC_QUOT, + //|------+------+------+------+------+------+------. ,------|------+------+------+------+------+------| + KC_LSFT,KC_Z , KC_X , KC_C , KC_V, KC_B , TO(1), KC_ENT, KC_K, KC_M , KC_COMM,KC_DOT,KC_SLSH,KC_RSFT, + //`------+------+------+------+------+----+------/ \-----+------+------+------+------+------+------' + KC_LCTL, KC_LALT, CMBS, KC_SPC, MO(3), KC_RALT + // `------+------+------' `------+------+------' ), [_PC] = LAYOUT( - KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - KC_NAVPC,KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , + PCNAV , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC_GM, KC____, KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , + _______, _______, _______, _______, _______, _______, TO(2), _______, _______, _______, _______, _______, _______, _______, - KC_LGUI , KC_LCTL , KC_CTBS , KC____ , KC____ , KC____ + KC_LALT, KC_LGUI, CTBS, _______, _______, _______ ), [_GAME] = LAYOUT( - KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , - - KC_B , KC_T , KC_Q , KC_W , KC_E , KC_R , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + + KC_B , KC_T , KC_Q , KC_W , KC_E , KC_R , _______, _______, _______, _______, _______, _______, - KC_TAB , KC_LSFT, KC_A , KC_S , KC_D , KC_F , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , + KC_TAB , KC_LSFT, KC_A , KC_S , KC_D , KC_F , _______, _______, _______, _______, _______, _______, - KC_LALT, KC_LCTL, KC_Z , KC_X , KC_C , KC_V , KC_M, KC_P , KC____, KC____ , KC____ , KC____ , KC____ , KC____ , + KC_LALT, KC_LCTL, KC_Z , KC_X , KC_C , KC_V , KC_M, KC_P , _______, _______, _______, _______, _______, _______, - KC_G , KC_I , KC_SPC, KC_BSPC, KC_MAC, KC____ + KC_G, KC_I, KC_SPC, KC_BSPC, TO(0), _______ ), [_SYMBOL] = LAYOUT( - KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , + KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5, KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11, - KC_LBRC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_RBRC, + KC_LBRC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5, KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_RBRC, - KC_BSLS, KC_EXLM, KC_AT , KC_HASH, KC_DLR , KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_EQL , + KC_BSLS, KC_EXLM, KC_AT , KC_HASH, KC_DLR , KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_EQL, - KC____ , KC_HOME, KC_END , KC_VOLD, KC_VOLU, KC_MPLY,KC____, KC____,KC____, KC_MINS, KC____ , KC____ , KC____ , KC____ , + _______, KC_HOME, KC_END, KC_VOLD, KC_VOLU, KC_MPLY, _______, _______, _______, KC_MINS, _______, _______, _______, _______, - KC____ , KC____ , KC____, KC____, KC____ , KC____ + _______, _______, _______, _______, _______, _______ ), [_NAVMAC] = LAYOUT( - KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , + RESET , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC_C_TAB, KC_AL , KC_UP , KC_AR , KC_DEL , KC____ , + _______, _______, _______, _______, _______, _______, C_TAB, ALEFT , KC_UP , ARGHT , KC_DEL , _______, - KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC_GSL , KC_LEFT, KC_DOWN, KC_RGHT, KC_GSR , KC____ , + _______, _______, _______, _______, _______, _______, GSL , KC_LEFT, KC_DOWN, KC_RGHT, GSR , _______, - KC____ , KC____ , KC____ , KC____ , KC____ , KC____ ,KC____, KC____,KC_G_TAB,KC_ABSPC, KC____ , KC____ , KC____ , KC____ , + _______, _______, _______, _______, _______, _______, _______, _______, G_TAB, ABSPC , _______, _______, _______, _______, - KC____ , KC____ , KC____ , KC____ , KC____ , KC____ + _______, _______, _______, _______, _______, _______ ), [_NAVPC] = LAYOUT( - KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , + RESET , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC_C_TAB, KC_CL , KC_UP , KC_CR , KC_DEL , KC____ , + _______, _______, _______, _______, _______, _______, C_TAB , CLEFT , KC_UP , CRGHT , KC_DEL , _______, - KC____ , KC____ , KC____ , KC____ , KC____ , KC____ , KC_CPGU, KC_LEFT, KC_DOWN, KC_RGHT, KC_CPGD, KC____ , + _______, _______, _______, _______, _______, _______, CTLPGUP, KC_LEFT, KC_DOWN, KC_RGHT, CTLPGDN, _______, - KC____ , KC____ , KC____ , KC____ , KC____ , KC____ ,KC____, KC____,KC_A_TAB,KC_CBSPC, KC____ , KC____ , KC____ , KC____ , + _______, _______, _______, _______, _______, _______,_______, _______, A_TAB , CBSPC, _______, _______, _______, _______, - KC____ , KC____ , KC____ , KC____ , KC____ , KC____ + _______, _______, _______, _______, _______, _______ ), }; -// Shift vs. capslock function. From bbaserdem's Planck keymap. +// Shift vs. capslock function. From bbaserdem's Planck keymap (since deprecated). void caps_tap (qk_tap_dance_state_t *state, void *user_data) { if (state->count == 1) { register_code (KC_LSFT); diff --git a/keyboards/keebio/iris/keymaps/ddone/rules.mk b/keyboards/keebio/iris/keymaps/ddone/rules.mk index c81eaa9370c8..41c4983e490a 100644 --- a/keyboards/keebio/iris/keymaps/ddone/rules.mk +++ b/keyboards/keebio/iris/keymaps/ddone/rules.mk @@ -1,4 +1,4 @@ LTO_ENABLE = yes COMMAND_ENABLE = no MOUSEKEY_ENABLE = yes -BOOTMAGIC_ENABLE = lite +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite diff --git a/keyboards/keebio/iris/keymaps/default/keymap.c b/keyboards/keebio/iris/keymaps/default/keymap.c index 5fda9fb91742..e3cd5326945e 100644 --- a/keyboards/keebio/iris/keymaps/default/keymap.c +++ b/keyboards/keebio/iris/keymaps/default/keymap.c @@ -19,11 +19,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, 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_DEL, //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_GRV, KC_DEL, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_HOME, KC_END, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘ KC_LGUI, LOWER, KC_ENT, KC_SPC, RAISE, KC_RALT // └────────┴────────┴────────┘ └────────┴────────┴────────┘ @@ -31,13 +31,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_LOWER] = LAYOUT( //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ - KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PGUP, + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ - RESET, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_PGDN, + RESET, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ - KC_DEL, _______, KC_LEFT, KC_RGHT, KC_UP, KC_LBRC, KC_RBRC, KC_P4, KC_P5, KC_P6, KC_PLUS, KC_HOME, + KC_DEL, _______, KC_LEFT, KC_RGHT, KC_UP, KC_LBRC, KC_RBRC, KC_P4, KC_P5, KC_P6, KC_PLUS, KC_PIPE, //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ - BL_STEP, _______, _______, _______, KC_DOWN, KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_P1, KC_P2, KC_P3, KC_MINS, KC_END, + BL_STEP, _______, _______, _______, KC_DOWN, KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_P1, KC_P2, KC_P3, KC_MINS, _______, //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘ _______, _______, KC_DEL, KC_DEL, _______, KC_P0 // └────────┴────────┴────────┘ └────────┴────────┴────────┘ @@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ RGB_TOG, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ - RGB_MOD, KC_MPRV, KC_MNXT, KC_VOLU, KC_PGUP, KC_UNDS, KC_EQL, KC_HOME, RGB_HUI, RGB_SAI, RGB_VAI, _______, + RGB_MOD, KC_MPRV, KC_MNXT, KC_VOLU, KC_PGUP, KC_UNDS, KC_EQL, KC_HOME, RGB_HUI, RGB_SAI, RGB_VAI, KC_BSLS, //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ KC_MUTE, KC_MSTP, KC_MPLY, KC_VOLD, KC_PGDN, KC_MINS, KC_LPRN, _______, KC_PLUS, KC_END, RGB_HUD, RGB_SAD, RGB_VAD, _______, //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘ diff --git a/keyboards/keebio/iris/keymaps/drashna/keymap.c b/keyboards/keebio/iris/keymaps/drashna/keymap.c index fe5e67b52f5c..45b05e3502a2 100644 --- a/keyboards/keebio/iris/keymaps/drashna/keymap.c +++ b/keyboards/keebio/iris/keymaps/drashna/keymap.c @@ -38,58 +38,32 @@ OS_LSFT, CTL_T(K21), K22, K23, K24, K25, OS_LALT, OS_RGUI, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \ KC_GRV, KC_SPC, LT(_LOWER,KC_BSPC), LT(_RAISE,KC_DEL), KC_ENT, RAISE \ ) -#define LAYOUT_iris_base_wrapper(...) LAYOUT_iris_base(__VA_ARGS__) +#define LAYOUT_base_wrapper(...) LAYOUT_iris_base(__VA_ARGS__) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_QWERTY] = LAYOUT_iris_base_wrapper( - _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, - _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, - _________________QWERTY_L3_________________, _________________QWERTY_R3_________________ - ), - - [_COLEMAK] = LAYOUT_iris_base_wrapper( - _________________COLEMAK_L1________________, _________________COLEMAK_R1________________, - _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, - _________________COLEMAK_L3________________, _________________COLEMAK_R3________________ - ), - - [_DVORAK] = LAYOUT_iris_base_wrapper( - _________________DVORAK_L1_________________, _________________DVORAK_R1_________________, - _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, - _________________DVORAK_L3_________________, _________________DVORAK_R3_________________ - ), - - [_WORKMAN] = LAYOUT_iris_base_wrapper( - _________________WORKMAN_L1________________, _________________WORKMAN_R1________________, - _________________WORKMAN_L2________________, _________________WORKMAN_R2________________, - _________________WORKMAN_L3________________, _________________WORKMAN_R3________________ - ), - - [_NORMAN] = LAYOUT_iris_base_wrapper( - _________________NORMAN_L1_________________, _________________NORMAN_L1_________________, - _________________NORMAN_L2_________________, _________________NORMAN_R2_________________, - _________________NORMAN_L3_________________, _________________NORMAN_R3_________________ - ), - - [_MALTRON] = LAYOUT_iris_base_wrapper( - _________________MALTRON_L1________________, _________________MALTRON_R1________________, - _________________MALTRON_L2________________, _________________MALTRON_R2________________, - _________________MALTRON_L3________________, _________________MALTRON_R3________________ - ), - - [_EUCALYN] = LAYOUT_iris_base_wrapper( - _________________EUCALYN_L1________________, _________________EUCALYN_R1________________, - _________________EUCALYN_L2________________, _________________EUCALYN_R2________________, - _________________EUCALYN_L3________________, _________________EUCALYN_R3________________ - ), - - [_CARPLAX] = LAYOUT_iris_base_wrapper( - _____________CARPLAX_QFMLWY_L1_____________, _____________CARPLAX_QFMLWY_R1_____________, - _____________CARPLAX_QFMLWY_L2_____________, _____________CARPLAX_QFMLWY_R2_____________, - _____________CARPLAX_QFMLWY_L3_____________, _____________CARPLAX_QFMLWY_R3_____________ - ), + [_DEFAULT_LAYER_1] = LAYOUT_base_wrapper( + _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, + _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, + _________________QWERTY_L3_________________, _________________QWERTY_R3_________________ + ), + + [_DEFAULT_LAYER_2] = LAYOUT_base_wrapper( + ______________COLEMAK_MOD_DH_L1____________, ______________COLEMAK_MOD_DH_R1____________, + ______________COLEMAK_MOD_DH_L2____________, ______________COLEMAK_MOD_DH_R2____________, + ______________COLEMAK_MOD_DH_L3____________, ______________COLEMAK_MOD_DH_R3____________ + ), + [_DEFAULT_LAYER_3] = LAYOUT_base_wrapper( + _________________COLEMAK_L1________________, _________________COLEMAK_R1________________, + _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, + _________________COLEMAK_L3________________, _________________COLEMAK_R3________________ + ), + + [_DEFAULT_LAYER_4] = LAYOUT_base_wrapper( + _________________DVORAK_L1_________________, _________________DVORAK_R1_________________, + _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, + _________________DVORAK_L3_________________, _________________DVORAK_R3_________________ + ), [_GAMEPAD] = LAYOUT_wrapper( KC_ESC, KC_NO, KC_1, KC_2, KC_3, KC_4, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/keebio/iris/keymaps/drashna/rules.mk b/keyboards/keebio/iris/keymaps/drashna/rules.mk index cb398cd4eb15..41c67b573ddb 100644 --- a/keyboards/keebio/iris/keymaps/drashna/rules.mk +++ b/keyboards/keebio/iris/keymaps/drashna/rules.mk @@ -1,4 +1,4 @@ -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) @@ -12,7 +12,6 @@ SWAP_HANDS_ENABLE = no SPACE_CADET_ENABLE = no INDICATOR_LIGHTS = no -RGBLIGHT_TWINKLE = no RGBLIGHT_STARTUP_ANIMATION = no BOOTLOADER = qmk-dfu diff --git a/keyboards/keebio/iris/keymaps/drashna_lp/config.h b/keyboards/keebio/iris/keymaps/drashna_lp/config.h deleted file mode 100644 index 414acab8466b..000000000000 --- a/keyboards/keebio/iris/keymaps/drashna_lp/config.h +++ /dev/null @@ -1,50 +0,0 @@ -/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -/* Use I2C or Serial, not both */ -#include "../drashna/config.h" - -#ifdef RGBLIGHT_ENABLE -# undef RGBLED_NUM -# define RGBLED_NUM 16 // Number of LEDs -# undef RGBLED_SPLIT -# define RGBLED_SPLIT \ - { 8, 8 } -#endif - -#undef PRODUCT -#ifdef KEYBOARD_keebio_iris_rev2 -# define PRODUCT Drashna Hacked Iris LP Rev .2(Backlit) -#endif - -#undef SHFT_LED1 -#define SHFT_LED1 5 -#undef SHFT_LED2 -#define SHFT_LED2 10 - -#undef CTRL_LED1 -#define CTRL_LED1 6 -#undef CTRL_LED2 -#define CTRL_LED2 9 - -#undef ALT_LED1 -#define ALT_LED1 7 -#undef GUI_LED1 -#define GUI_LED1 8 - -#define DRASHNA_LP diff --git a/keyboards/keebio/iris/keymaps/drashna_lp/keymap.c b/keyboards/keebio/iris/keymaps/drashna_lp/keymap.c deleted file mode 100644 index ff7bd09c0cf3..000000000000 --- a/keyboards/keebio/iris/keymaps/drashna_lp/keymap.c +++ /dev/null @@ -1 +0,0 @@ -// placeholder diff --git a/keyboards/keebio/iris/keymaps/drashna_lp/rules.mk b/keyboards/keebio/iris/keymaps/drashna_lp/rules.mk deleted file mode 100644 index d3f6f5550f92..000000000000 --- a/keyboards/keebio/iris/keymaps/drashna_lp/rules.mk +++ /dev/null @@ -1,7 +0,0 @@ -USER_NAME := drashna -SRC += ../drashna/keymap.c - -include $(KEYBOARD_PATH_2)/keymaps/drashna/rules.mk - -AUDIO_ENABLE = no -BACKLIGHT_ENABLE = yes diff --git a/keyboards/keebio/iris/keymaps/drashna_old/config.h b/keyboards/keebio/iris/keymaps/drashna_old/config.h deleted file mode 100644 index f08b22dca074..000000000000 --- a/keyboards/keebio/iris/keymaps/drashna_old/config.h +++ /dev/null @@ -1,47 +0,0 @@ -/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -/* Use I2C or Serial, not both */ -#include "../drashna/config.h" - -#ifdef RGBLIGHT_ENABLE -# undef RGBLED_NUM -# define RGBLED_NUM 16 // Number of LEDs -# undef RGBLED_SPLIT -# define RGBLED_SPLIT { 8, 8 } -#endif - -#undef PRODUCT -#ifdef KEYBOARD_keebio_iris_rev2 -# define PRODUCT Drashna Hacked Iris Rev.2 (16 LED) -#endif - -#undef SHFT_LED1 -#define SHFT_LED1 5 -#undef SHFT_LED2 -#define SHFT_LED2 10 - -#undef CTRL_LED1 -#define CTRL_LED1 6 -#undef CTRL_LED2 -#define CTRL_LED2 9 - -#undef ALT_LED1 -#define ALT_LED1 7 -#undef GUI_LED1 -#define GUI_LED1 8 diff --git a/keyboards/keebio/iris/keymaps/drashna_old/keymap.c b/keyboards/keebio/iris/keymaps/drashna_old/keymap.c deleted file mode 100644 index ff7bd09c0cf3..000000000000 --- a/keyboards/keebio/iris/keymaps/drashna_old/keymap.c +++ /dev/null @@ -1 +0,0 @@ -// placeholder diff --git a/keyboards/keebio/iris/keymaps/drashna_old/rules.mk b/keyboards/keebio/iris/keymaps/drashna_old/rules.mk deleted file mode 100644 index 73f37c6c558b..000000000000 --- a/keyboards/keebio/iris/keymaps/drashna_old/rules.mk +++ /dev/null @@ -1,4 +0,0 @@ -USER_NAME := drashna -SRC += ../drashna/keymap.c - -include $(KEYBOARD_PATH_2)/keymaps/drashna/rules.mk diff --git a/keyboards/keebio/iris/keymaps/edvorakjp/rules.mk b/keyboards/keebio/iris/keymaps/edvorakjp/rules.mk index 4ee94a9832e5..685b3b2cfcec 100644 --- a/keyboards/keebio/iris/keymaps/edvorakjp/rules.mk +++ b/keyboards/keebio/iris/keymaps/edvorakjp/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = no # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/keebio/iris/keymaps/fluffactually/config.h b/keyboards/keebio/iris/keymaps/fluffactually/config.h index 83203b69bc75..fd3ebfd94b01 100644 --- a/keyboards/keebio/iris/keymaps/fluffactually/config.h +++ b/keyboards/keebio/iris/keymaps/fluffactually/config.h @@ -19,4 +19,6 @@ along with this program. If not, see . // #define USE_I2C #define EE_HANDS -#define TAPPING_TOGGLE 2 \ No newline at end of file +#define IGNORE_MOD_TAP_INTERRUPT +#define TAPPING_TERM 175 + diff --git a/keyboards/keebio/iris/keymaps/fluffactually/keymap.c b/keyboards/keebio/iris/keymaps/fluffactually/keymap.c index c2d07b70645f..8761dcbd6c79 100644 --- a/keyboards/keebio/iris/keymaps/fluffactually/keymap.c +++ b/keyboards/keebio/iris/keymaps/fluffactually/keymap.c @@ -9,37 +9,38 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ - KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + LCTL_T(KC_TAB), LGUI_T(KC_A), LALT_T(KC_S), LCTL_T(KC_D), LSFT_T(KC_F), KC_G, KC_H, RSFT_T(KC_J), RCTL_T(KC_K), LALT_T(KC_L), RGUI_T(KC_SCLN), KC_QUOT, //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B,LSFT_T(KC_EQL),RCTL_T(KC_MINS),KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_EQL, TG(1), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘ - KC_LGUI, TT(1), KC_ENT, KC_SPC, TT(2), KC_RALT + KC_LGUI, LT(2,KC_ESC),KC_ENT, KC_SPC, LT(3, KC_BSPC), KC_RALT // └────────┴────────┴────────┘ └────────┴────────┴────────┘ ), + [1] = LAYOUT( //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ - KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PSCR, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ - _______, _______, _______, KC_END, _______, _______, _______, _______, _______, _______, _______, KC_DEL, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ - _______, KC_HOME, _______, _______, KC_PGDN, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, + _______, KC_A, KC_S, KC_D, KC_F, _______, _______, KC_J, KC_K, KC_L, KC_SCLN, _______, //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ - _______, _______, _______, _______, _______, KC_PGUP, KC_LBRC, KC_RBRC, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘ - _______, _______, _______, _______, _______, _______ + KC_LALT, _______, _______, _______, _______, KC_LGUI // └────────┴────────┴────────┘ └────────┴────────┴────────┘ ), [2] = LAYOUT( //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ - KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, RESET, + KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ - KC_MUTE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, RGB_TOG, + _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ - KC_VOLU, KC_BRIU, KC_MNXT, KC_MPLY, _______, _______, _______, RGB_SPI, RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, + _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ - KC_VOLD, KC_BRID, KC_MPRV, KC_MSTP, _______, KC_LBRC, KC_LCBR, KC_RCBR, KC_RBRC, RGB_SPD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_RMOD, + _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_LBRC, KC_RBRC, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______, //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘ _______, _______, _______, _______, _______, _______ // └────────┴────────┴────────┘ └────────┴────────┴────────┘ @@ -47,13 +48,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [3] = LAYOUT( //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_GRV, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_MINUS,KC_UNDS, KC_LBRC, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_EQUAL,KC_PLUS, KC_RBRC, KC_LBRC, KC_RBRC, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______, + //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘ + _______, _______, _______, _______, _______, _______ + // └────────┴────────┴────────┘ └────────┴────────┴────────┘ + ), + + [4] = LAYOUT( + //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + KC_MUTE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, RGB_TOG, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + KC_VOLU, KC_BRIU, KC_MNXT, KC_MPLY, _______, _______, _______, RGB_SPI, RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, + //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ + KC_VOLD, KC_BRID, KC_MPRV, KC_MSTP, _______, _______, _______, _______, _______, RGB_SPD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_RMOD, //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘ _______, _______, _______, _______, _______, _______ // └────────┴────────┴────────┘ └────────┴────────┴────────┘ @@ -61,5 +76,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; layer_state_t layer_state_set_user(layer_state_t state) { - return update_tri_layer_state(state, 1, 2, 3); + return update_tri_layer_state(state, 2, 3, 4); } + +void keyboard_post_init_user(void) { + rgblight_disable_noeeprom(); +} + diff --git a/keyboards/keebio/iris/keymaps/fluffactually/readme.md b/keyboards/keebio/iris/keymaps/fluffactually/readme.md index 68092a11a213..4759296c575b 100644 --- a/keyboards/keebio/iris/keymaps/fluffactually/readme.md +++ b/keyboards/keebio/iris/keymaps/fluffactually/readme.md @@ -1,14 +1,17 @@ # Iris layout by fluffactually -![fluffactually](https://i.imgur.com/vmJSa9n.png) +![fluffactually](https://i.imgur.com/vNoNeZ9.png) [KLE link](http://www.keyboard-layout-editor.com/#/gists/a6e67ca7177e7f5e4e44fbc1f09cdfae) -A gentle departure from the default layout. Changes include: +Basically: + +* Home row mods: ASDF is Super, Alt, Ctrl, Shift, JKL; is Shift, Ctrl, ALt, + Super +* Turn off home row mods with a layer toggle (e.g. for gaming) +* Grave escape +* Tap Lower for escape +* Tap Raise for backspace +* Movement keys on both Raise and Lower layers +* Access Adjust layer by holding Raise and Lower -* Vim movement keys -* Mod-Tap upper thumb keys -* Layer Tap-Toggle layer keys (TAPPING_TOGGLE 2) -* Grave Escape -* Lower backspace -* Reshuffled Raise layer to make it harder to accidentally reset diff --git a/keyboards/keebio/iris/keymaps/manna-harbour_miryoku/config.h b/keyboards/keebio/iris/keymaps/manna-harbour_miryoku/config.h new file mode 100644 index 000000000000..2a737462ddf6 --- /dev/null +++ b/keyboards/keebio/iris/keymaps/manna-harbour_miryoku/config.h @@ -0,0 +1,23 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . + +#pragma once + +#define XXX KC_NO + +#define LAYOUT_miryoku(\ + 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,\ + N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +LAYOUT(\ +XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,\ +XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX,\ +XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX,\ +XXX, K20, K21, K22, K23, K24, XXX, XXX, K25, K26, K27, K28, K29, XXX,\ + K32, K33, K34, K35, K36, K37\ +) diff --git a/keyboards/keebio/iris/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/keebio/iris/keymaps/manna-harbour_miryoku/keymap.c new file mode 100644 index 000000000000..7c5717a0fee0 --- /dev/null +++ b/keyboards/keebio/iris/keymaps/manna-harbour_miryoku/keymap.c @@ -0,0 +1,5 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/keyboards/keebio/iris/keymaps/mnil/keymap.c b/keyboards/keebio/iris/keymaps/mnil/keymap.c index 7c7dc1a40d66..973122f0c4ca 100644 --- a/keyboards/keebio/iris/keymaps/mnil/keymap.c +++ b/keyboards/keebio/iris/keymaps/mnil/keymap.c @@ -62,7 +62,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ KC_TRNS, SE_LCBR, SE_RCBR, SE_LPRN, SE_RPRN, KC_NO, SE_PLUS, S(KC_1), S(KC_2), S(KC_3), SE_AMPR, KC_TRNS, //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ - KC_TRNS, M_TILD, M_CIRC, SE_LESS, SE_GRTR, KC_NO, KC_TRNS, KC_TRNS, SE_APOS, SE_SLSH, SE_BSLS, SE_ASTR, M_BTCK, KC_TRNS, + KC_TRNS, M_TILD, M_CIRC, SE_LABK, SE_RABK, KC_NO, KC_TRNS, KC_TRNS, SE_QUOT, SE_SLSH, SE_BSLS, SE_ASTR, M_BTCK, KC_TRNS, //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), // └────────┴────────┴────────┘ └────────┴────────┴────────┘ diff --git a/keyboards/keebio/iris/keymaps/nstickney/README.md b/keyboards/keebio/iris/keymaps/nstickney/README.md deleted file mode 100644 index 8124fe1cd69c..000000000000 --- a/keyboards/keebio/iris/keymaps/nstickney/README.md +++ /dev/null @@ -1,47 +0,0 @@ -# nstickney's Iris Layout - - > Familiar layout for users who regularly switch between Iris and more standard layouts. - -[![Keymap](https://i.imgur.com/hKs7fYr.jpg)](http://www.keyboard-layout-editor.com/#/gists/aa6093ea2eb9c750ab941b92adae7036) - -[![standard-readme compliant](https://img.shields.io/badge/readme%20style-standard-brightgreen.svg)](https://github.com/RichardLitt/standard-readme) - -## Install - -For instructions on building and installing this keymap, see the [docs](https://docs.qmk.fm/#/getting_started_make_guide). Below is the command for me; it may be different for you. - -```sh -$ make keebio/iris/rev2:nstickney:avrdude -``` - -## Usage - -0. QWERTY `BASE` layer. - * `/`, `\`, ` `, `[ENTER]`, `-`, and `=` on the thumb clusters. - * `CAPSLOCK` replaced by `ESC`; hold it down for `CTRL`. `'` can also be held for `CTRL`. - * [Space-Cadet Shift](https://docs.qmk.fm/#/feature_space_cadet_shift) is enabled, so the `SHIFT` keys send `(` and `)` when tapped. - * Hold down `/` or `=` for `ALT`. - * Hold down `\` or `-` to access the functions layer. - * Upper-center thumb keys are `GUI` and `MENU`. - * Tapping `GUI` 2, 3, or 4 times will toggle `NUMLOCK`, `CAPSLOCK`, or `SCROLLLOCK`, respectively. - * Tapping `MENU` 2, 3, or 4 times will toggle the `NUMP`, `SYMB`, and `SYSH` layers, respectively. -0. Unicode-input symbols on `SYMB` and `SYSH` layers. Based (loosely) on US-International layout. -0. `NUMP` layer has number pads on each hand. Number pad `7`-`8`-`9` align with QWERTY `7`-`8`-`9` on right hand. -0. Function, arrow, media, and miscellaneous keys on `FCTN` layer. - * `F1` through `F10` on `1`-`10`. `F11` is on `GUI` and `F12` is on `MENU`. - * Brackets (`[` and `]`) available on `U` and `I`; braces (`{` and `}`) on `O` and `P`. - * Arrow keys on `ESDF` and `HJKL`; familiar for both Vim users and FPS gamers. - * `W` is `HOME`; `R` is `END`. `T` is `PAGE UP` and `G` is `PAGE DOWN`. - * Music controls on lower row of left hand. - * Volume and screen brightness on lower row of right hand. - * `PRINT SCREEN`, `PAUSE`, `SYSREQ`, `INSERT`, and `CLEAR` also mapped, as intelligently as possible. - * `A` toggles the RGB underglow (which changes color to indicate active layer). - * `Q` toggles the Unicode input through Linux, WinCompose, and MacOS. - -## Contribute - -If you are using this layout and think you've found a better way to do something, I'd appreciate an [issue](https://github.com/nstickney/qmk_firmware/issues), or better yet a [pull request](https://github.com/nstickney/qmk_firmware/pulls). - -## License - -Copyright © 2016-2019 @nstickney. Released under [GPL-2.0](/LICENSE). diff --git a/keyboards/keebio/iris/keymaps/nstickney/config.h b/keyboards/keebio/iris/keymaps/nstickney/config.h index f4899781e50a..da682cb921bb 100644 --- a/keyboards/keebio/iris/keymaps/nstickney/config.h +++ b/keyboards/keebio/iris/keymaps/nstickney/config.h @@ -1,36 +1,20 @@ -/* -Copyright 2017 Danny Nguyen - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ +/* Copyright 2021 @nstickney + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ #pragma once -/* Use I2C or Serial, not both */ - -#define USE_SERIAL -// #define USE_I2C - -/* Select hand configuration */ - -#define MASTER_LEFT -// #define MASTER_RIGHT -// #define EE_HANDS - -// #undef RGBLED_NUM -// #define RGBLIGHT_ANIMATIONS -// #define RGBLED_NUM 12 -// #define RGBLIGHT_HUE_STEP 8 -// #define RGBLIGHT_SAT_STEP 8 -// #define RGBLIGHT_VAL_STEP 8 \ No newline at end of file +#define RGBLED_NUM 12 +#define RGBLIGHT_SPLIT diff --git a/keyboards/keebio/iris/keymaps/nstickney/keymap.c b/keyboards/keebio/iris/keymaps/nstickney/keymap.c index 16b2d0de3339..07c4fd28efa9 100644 --- a/keyboards/keebio/iris/keymaps/nstickney/keymap.c +++ b/keyboards/keebio/iris/keymaps/nstickney/keymap.c @@ -1,99 +1,53 @@ +/* Copyright 2021 @nstickney + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ #include "nstickney.h" +#include "unicodemap.h" const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [BASE] = LAYOUT( -// ┌──────────┬──────────┬──────────┬──────────┬──────────┬──────────┐ ┌──────────┬──────────┬──────────┬──────────┬──────────┬──────────┐ - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, -// ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, -// ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ - CC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, CC_QUOT, -// ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┼──────────┐ ┌──────────┼──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ - KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, TD(LOCKS), TD(LAYERS),KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, -// └──────────┴──────────┴──────────┴────┬─────┴────┬─────┴────┬─────┴────┬─────┘ └────┬─────┴────┬─────┴────┬─────┴────┬─────┴──────────┴──────────┴──────────┘ - AC_SLSH, FC_BSLS, KC_SPC, KC_ENT, FC_MINS, AC_EQL -// └──────────┴──────────┴──────────┘ └──────────┴──────────┴──────────┘ - ), + [BASE] = LAYOUT( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, + CC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, CC_QUOT, + KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, TD(LOCKS), TD(LAYERS), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, + AC_SLSH, FC_BSLS, KC_SPC, KC_ENT, FC_MINS, AC_EQL + ), + + [SYMB] = LAYOUT( + _______, XP(IEX, SS1), X(SS2), X(SS3), XP(CUR, GBP), X(EUR), X(V14), X(V12), X(V34), XP(LSQ, LDQ), XP(RSQ, RDQ), _______, + _______, XP(A_D, AXD), XP(A_R, ACR), XP(E_A, ECA), XP(REG, CPL), X(THR), XP(U_D, UCD), XP(U_A, UCA), XP(I_A, ICA), XP(O_A, OCA), XP(O_D, OCD), _______, + _______, XP(A_A, ACA), XP(S_S, SEC), XP(ETH, ETC), X(EMD), _______, _______, _______, _______, XP(O_S, OCS), XP(PLC, DEG), XP(ACT, DIS), + _______, XP(AEL, AEC), _______, XP(CPR, CNT), _______, _______, _______, _______, XP(N_T, NCT), X(MCR), XP(C_C, CCC), _______, _______, _______, + X(IQM), XP(NOT, BKB), _______, _______, X(YEN), XP(MLT, DIV) + ), + + [NUMP] = LAYOUT( + _______, _______, KC_P7, KC_P8, KC_P9, KC_PSLS, _______, KC_P7, KC_P8, KC_P9, KC_PSLS, _______, + _______, _______, KC_P4, KC_P5, KC_P6, KC_PAST, _______, KC_P4, KC_P5, KC_P6, KC_PAST, _______, + _______, _______, KC_P1, KC_P2, KC_P3, KC_PMNS, _______, KC_P1, KC_P2, KC_P3, KC_PMNS, _______, + _______, _______, KC_P0, KC_PCMM, KC_PDOT, KC_PPLS, _______, _______, _______, KC_P0, KC_PCMM, KC_PDOT, KC_PPLS, _______, + _______, _______, _______, KC_PENT, _______, _______ + ), + + [FCTN] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_SYSREQ, + KC_PSCR, RGB_TOG, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_LOCK, KC_LBRC, KC_RBRC, S(KC_LBRC), S(KC_RBRC), KC_INS, + KC_PAUS, RGB_VAI, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_BRIU, KC_CLR, + _______, KC_MPRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_MNXT, KC_F11, KC_F12, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, KC_BRID, _______, + _______, _______, _______, _______, _______, _______ + ) - [SYMB] = LAYOUT( -// ┌──────────┬──────────┬──────────┬──────────┬──────────┬──────────┐ ┌──────────┬──────────┬──────────┬──────────┬──────────┬──────────┐ - UC(0x00EF),UC(0x00A1),UC(0x00B2),UC(0x00B3),UC(0x00A4),UC(0x20AC), UC(0x00BC),UC(0x00BD),UC(0x00BE),UC(0x2018),UC(0x2019),_______, -// ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ - _______, UC(0x00E4),UC(0x00E5),UC(0x00E9),UC(0x00AE),UC(0x00FE), UC(0x00FC),UC(0x00FA),UC(0x00ED),UC(0x00F3),UC(0x00F6),_______, -// ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ - _______, UC(0x00E1),UC(0x00DF),UC(0x00F0),UC(0x00EC),UC(0x00ED), UC(0x00EE),UC(0x00E0),UC(0x00E2),UC(0x00F8),UC(0x00B6),UC(0x00B4), -// ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┼──────────┐ ┌──────────┼──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ - _______, UC(0x00E6),UC(0x00E8),UC(0x00A9),UC(0x00EA),UC(0x00EB),_______, _______, UC(0x00F1),UC(0x00FD),UC(0x00E7),UC(0x00F4),UC(0x00BF),_______, -// └──────────┴──────────┴──────────┴────┬─────┴────┬─────┴────┬─────┴────┬─────┘ └────┬─────┴────┬─────┴────┬─────┴────┬─────┴──────────┴──────────┴──────────┘ - UC(0x00BF),_______, UC(0x00AC), UC(0x00B1),_______, UC(0x00D7) -// └──────────┴──────────┴──────────┘ └──────────┴──────────┴──────────┘ - ), - - [SYSH] = LAYOUT( -// ┌──────────┬──────────┬──────────┬──────────┬──────────┬──────────┐ ┌──────────┬──────────┬──────────┬──────────┬──────────┬──────────┐ - UC(0x00CF),UC(0x00B9),UC(0x2200),UC(0x2201),UC(0x00A3),UC(0x00A5), UC(0x00B5),UC(0x00AB),UC(0x00BB),UC(0x201C),UC(0x201D),_______, -// ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ - _______, UC(0x00C4),UC(0x00C5),UC(0x00C9),UC(0x2122),UC(0x00DE), UC(0x00DC),UC(0x00DA),UC(0x00CD),UC(0x00D3),UC(0x00D6),_______, -// ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ - _______, UC(0x00C1),UC(0x00A7),UC(0x00D0),UC(0x00CC),UC(0x00CD), UC(0x00CE),UC(0x00C1),UC(0x00C2),UC(0x00D8),UC(0x00B0),UC(0x00A8), -// ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┼──────────┐ ┌──────────┼──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ - _______, UC(0x00C6),UC(0x00C8),UC(0x00A2),UC(0x00CA),UC(0x00CB),_______, _______, UC(0x00D1),UC(0x00DD),UC(0x00C7),UC(0x00D4),UC(0x203D),_______, -// └──────────┴──────────┴──────────┴────┬─────┴────┬─────┴────┬─────┴────┬─────┘ └────┬─────┴────┬─────┴────┬─────┴────┬─────┴──────────┴──────────┴──────────┘ - UC(0x203D),_______, UC(0x00A6), UC(0x00AA),_______, UC(0x00F7) -// └──────────┴──────────┴──────────┘ └──────────┴──────────┴──────────┘ - ), - - [NUMP] = LAYOUT( -// ┌──────────┬──────────┬──────────┬──────────┬──────────┬──────────┐ ┌──────────┬──────────┬──────────┬──────────┬──────────┬──────────┐ - _______, _______, KC_P7, KC_P8, KC_P9, KC_PSLS, _______, KC_P7, KC_P8, KC_P9, KC_PSLS, _______, -// ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ - _______, _______, KC_P4, KC_P5, KC_P6, KC_PAST, _______, KC_P4, KC_P5, KC_P6, KC_PAST, _______, -// ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ - _______, _______, KC_P1, KC_P2, KC_P3, KC_PMNS, _______, KC_P1, KC_P2, KC_P3, KC_PMNS, _______, -// ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┼──────────┐ ┌──────────┼──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ - _______, _______, KC_P0, KC_PCMM, KC_PDOT, KC_PPLS, _______, _______, _______, KC_P0, KC_PCMM, KC_PDOT, KC_PPLS, _______, -// └──────────┴──────────┴──────────┴────┬─────┴────┬─────┴────┬─────┴────┬─────┘ └────┬─────┴────┬─────┴────┬─────┴────┬─────┴──────────┴──────────┴──────────┘ - _______, _______, _______, KC_PENT, _______, _______ -// └──────────┴──────────┴──────────┘ └──────────┴──────────┴──────────┘ - ), - - [FCTN] = LAYOUT( -// ┌──────────┬──────────┬──────────┬──────────┬──────────┬──────────┐ ┌──────────┬──────────┬──────────┬──────────┬──────────┬──────────┐ - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_SYSREQ, -// ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ - KC_PSCR, UC_MOD, KC_HOME, KC_UP, KC_END, KC_PGUP, UC(0x2014),KC_LBRC, KC_RBRC, S(KC_LBRC),S(KC_RBRC),KC_INS, -// ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ - KC_PAUS, RGB_TOG, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_BRIU, KC_CLR, -// ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┼──────────┐ ┌──────────┼──────────┼──────────┼──────────┼──────────┼──────────┼──────────┤ - _______, KC_MPRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_MNXT, KC_F11, KC_F12, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, KC_BRID, _______, -// └──────────┴──────────┴──────────┴────┬─────┴────┬─────┴────┬─────┴────┬─────┘ └────┬─────┴────┬─────┴────┬─────┴────┬─────┴──────────┴──────────┴──────────┘ - _______, _______, _______, _______, _______, _______ -// └──────────┴──────────┴──────────┘ └──────────┴──────────┴──────────┘ - ) -}; - -// Initialize rgblight -void keyboard_post_init_user(void) { - rgblight_enable_noeeprom(); - rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); - layer_state_set_user(layer_state); - uint16_t user_hue = rgblight_get_hue(); - for (uint16_t i = 0; i < 256; ++i) { - rgblight_sethsv_noeeprom( (i + user_hue) % 256, 255, 255); - wait_ms(5); - } - layer_state_set_user(layer_state); -}; - -// Turn on RGB underglow according to active layer -uint32_t layer_state_set_user(uint32_t state) { - switch (biton32(state)) { - case FCTN: rgblight_sethsv_noeeprom(96, 255, 255); break; - case NUMP: rgblight_sethsv_noeeprom(162, 255, 255); break; - case SYMB: - case SYSH: rgblight_sethsv_noeeprom(227, 255, 255); break; - default: rgblight_sethsv_noeeprom(13, 255, 255); break; - } - return state; }; diff --git a/keyboards/keebio/iris/keymaps/nstickney/rules.mk b/keyboards/keebio/iris/keymaps/nstickney/rules.mk deleted file mode 100644 index 7ad666d1a383..000000000000 --- a/keyboards/keebio/iris/keymaps/nstickney/rules.mk +++ /dev/null @@ -1 +0,0 @@ -RGBLIGHT_ENABLE = yes \ No newline at end of file diff --git a/keyboards/keebio/iris/keymaps/olligranlund_nordic/config.h b/keyboards/keebio/iris/keymaps/olligranlund_nordic/config.h index 259f2a7424b7..16c430237363 100644 --- a/keyboards/keebio/iris/keymaps/olligranlund_nordic/config.h +++ b/keyboards/keebio/iris/keymaps/olligranlund_nordic/config.h @@ -19,18 +19,18 @@ along with this program. If not, see . /* Use I2C or Serial, not both */ -#define USE_SERIAL -//#define USE_I2C +//#define USE_SERIAL +#define USE_I2C /* Select hand configuration */ -// #define MASTER_LEFT +#define MASTER_LEFT // #define MASTER_RIGHT -#define EE_HANDS - -#undef RGBLED_NUM -#define RGBLIGHT_ANIMATIONS -#define RGBLED_NUM 18 -#define RGBLIGHT_HUE_STEP 8 -#define RGBLIGHT_SAT_STEP 8 -#define RGBLIGHT_VAL_STEP 8 +// #define EE_HANDS + +// #undef RGBLED_NUM +// #define RGBLIGHT_ANIMATIONS +// #define RGBLED_NUM 18 +// #define RGBLIGHT_HUE_STEP 8 +// #define RGBLIGHT_SAT_STEP 8 +// #define RGBLIGHT_VAL_STEP 8 diff --git a/keyboards/keebio/iris/keymaps/olligranlund_nordic/keymap.c b/keyboards/keebio/iris/keymaps/olligranlund_nordic/keymap.c index 115b70640e7c..dd7996a28d94 100644 --- a/keyboards/keebio/iris/keymaps/olligranlund_nordic/keymap.c +++ b/keyboards/keebio/iris/keymaps/olligranlund_nordic/keymap.c @@ -1,3 +1,19 @@ +/* Copyright 2020 Oliver Granlund + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #include QMK_KEYBOARD_H #include "keymap_swedish.h" @@ -22,19 +38,15 @@ enum custom_keycodes { #define KC_ADJ ADJUST #define KC_RST RESET -#define KC_AA SE_AA -#define KC_AE SE_AE -#define KC_OE SE_OSLH - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_QWERTY] = LAYOUT( //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ -LT(_LOWER, KC_TAB),KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_AA, +LT(_LOWER, KC_TAB),KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, SE_ARNG, //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ - KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_OE, KC_AE, + KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, SE_ODIA, SE_ADIA, //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, RAISE, KC_BSPC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_MINS, //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘ @@ -50,7 +62,7 @@ LT(_LOWER, KC_TAB),KC_Q, KC_W, KC_E, KC_R, KC_T, KC_ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ KC_TRNS, KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS, SE_BSLS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, SE_LBRC, SE_RBRC, //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, KC_GRAVE, KC_CIRC, KC_QUOTE, SE_LESS, SE_GRTR, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, KC_GRAVE, KC_CIRC, KC_QUOTE, SE_LABK, SE_RABK, //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS // └────────┴────────┴────────┘ └────────┴────────┴────────┘ diff --git a/keyboards/keebio/iris/keymaps/olligranlund_nordic/readme.md b/keyboards/keebio/iris/keymaps/olligranlund_nordic/readme.md index 72eccde10293..c929a15324aa 100644 --- a/keyboards/keebio/iris/keymaps/olligranlund_nordic/readme.md +++ b/keyboards/keebio/iris/keymaps/olligranlund_nordic/readme.md @@ -8,4 +8,4 @@ gaming aspect with this keyboard, therefore space on left side. At first I thought about having backspace in the upper right corner of the slave side, but that made it really clunky to fix your text. Thumbs should take -care of this job instead. +care of this job instead. \ No newline at end of file diff --git a/keyboards/keebio/iris/keymaps/olligranlund_nordic/rules.mk b/keyboards/keebio/iris/keymaps/olligranlund_nordic/rules.mk index d7463419b4fe..1964bd0a7c25 100644 --- a/keyboards/keebio/iris/keymaps/olligranlund_nordic/rules.mk +++ b/keyboards/keebio/iris/keymaps/olligranlund_nordic/rules.mk @@ -1,2 +1,2 @@ -RGBLIGHT_ENABLE = yes -BACKLIGHT_ENABLE = yes +RGBLIGHT_ENABLE = no +BACKLIGHT_ENABLE = no \ No newline at end of file diff --git a/keyboards/keebio/iris/keymaps/olligranlund_nordic_v2/config.h b/keyboards/keebio/iris/keymaps/olligranlund_nordic_v2/config.h new file mode 100644 index 000000000000..c1acce7c3807 --- /dev/null +++ b/keyboards/keebio/iris/keymaps/olligranlund_nordic_v2/config.h @@ -0,0 +1,31 @@ +/* +Copyright 2017 Danny Nguyen + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +/* Use I2C or Serial, not both */ + +//#define USE_SERIAL +#define USE_I2C + +/* Select hand configuration */ + +// #define MASTER_LEFT +// #define MASTER_RIGHT +#define EE_HANDS + +#undef RGBLED_NUM \ No newline at end of file diff --git a/keyboards/keebio/iris/keymaps/olligranlund_nordic_v2/keymap.c b/keyboards/keebio/iris/keymaps/olligranlund_nordic_v2/keymap.c new file mode 100644 index 000000000000..b8a124baf0ee --- /dev/null +++ b/keyboards/keebio/iris/keymaps/olligranlund_nordic_v2/keymap.c @@ -0,0 +1,127 @@ +/* Copyright 2020 Oliver Granlund + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layers { + _QWERTY, + _LOWER, + _RAISE, + _ADJUST, +}; + +enum custom_keycodes { + QWERTY = SAFE_RANGE, + LOWER, + RAISE, + ADJUST, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_QWERTY] = LAYOUT( + //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + MO(_LOWER), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LALT, KC_BSPC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘ + KC_LGUI, KC_LCTL, KC_SPC, KC_ENT,MO(_RAISE),KC_RALT + // └────────┴────────┴────────┘ └────────┴────────┴────────┘ + ), + + [_LOWER] = LAYOUT( + //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_EQL, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_UP, KC_PGDOWN, KC_TRNS, KC_RBRC, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + KC_TRNS, KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_BSLS, + //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, KC_GRAVE, KC_CIRC, KC_QUOTE, KC_TRNS, KC_TRNS, + //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + // └────────┴────────┴────────┘ └────────┴────────┴────────┘ + ), + + [_RAISE] = LAYOUT( + //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ + KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_7, KC_8, KC_9, KC_TRNS, KC_TRNS, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_4, KC_5, KC_6, KC_TRNS, KC_TRNS, + //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ + KC_LSFT, KC_NUBS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_1, KC_2, KC_3, KC_0, KC_TRNS, + //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + // └────────┴────────┴────────┘ └────────┴────────┴────────┘ + ), + + [_ADJUST] = LAYOUT( + //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ + BL_TOGG, BL_STEP, BL_BRTG, RGB_TOG, RGB_RMOD, RGB_MOD, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + BL_DEC, _______, BL_INC, RGB_VAD, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘ + _______, _______, _______, _______, _______, _______ + // └────────┴────────┴────────┘ └────────┴────────┴────────┘ + ) +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + set_single_persistent_default_layer(_QWERTY); + } + return false; + case LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + case RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + + case ADJUST: + if (record->event.pressed) { + layer_on(_ADJUST); + } else { + layer_off(_ADJUST); + } + return false; + } + return true; +} diff --git a/keyboards/keebio/iris/keymaps/olligranlund_nordic_v2/readme.md b/keyboards/keebio/iris/keymaps/olligranlund_nordic_v2/readme.md new file mode 100644 index 000000000000..82d460c756ac --- /dev/null +++ b/keyboards/keebio/iris/keymaps/olligranlund_nordic_v2/readme.md @@ -0,0 +1,8 @@ +# Iris Nordic Layout V2, now with VIA support +### by Oliver Granlund + +![Finished product](https://i.imgur.com/Y1V9Dvpl.jpg) + +After my rebuild I decided on making the layout better for swapping between 60% and Iris. + +Still kinda buggy but should work automaticly with VIA \ No newline at end of file diff --git a/keyboards/keebio/iris/keymaps/olligranlund_nordic_v2/rules.mk b/keyboards/keebio/iris/keymaps/olligranlund_nordic_v2/rules.mk new file mode 100644 index 000000000000..545998d122dd --- /dev/null +++ b/keyboards/keebio/iris/keymaps/olligranlund_nordic_v2/rules.mk @@ -0,0 +1,4 @@ +RGBLIGHT_ENABLE = no +BACKLIGHT_ENABLE = no +VIA_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/keebio/iris/keymaps/sq5rix/config.h b/keyboards/keebio/iris/keymaps/sq5rix/config.h new file mode 100644 index 000000000000..8c576917e81f --- /dev/null +++ b/keyboards/keebio/iris/keymaps/sq5rix/config.h @@ -0,0 +1,25 @@ +/* +Copyright 2017 Danny Nguyen + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once +#define EE_HANDS +#define TAPPING_TERM 164 +#define IGNORE_MOD_TAP_INTERRUPT +#define PERMISSIVE_HOLD +#define RGBLIGHT_LAYERS +#define ENCODER_RESOLUTION 4 +#define ENCODER_DEFAULT_POS 0x3 diff --git a/keyboards/keebio/iris/keymaps/sq5rix/keymap.c b/keyboards/keebio/iris/keymaps/sq5rix/keymap.c new file mode 100644 index 000000000000..19a939a55b70 --- /dev/null +++ b/keyboards/keebio/iris/keymaps/sq5rix/keymap.c @@ -0,0 +1,185 @@ +// Copyright 2021 Tomasz Wawer (@sq5rix) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +enum layers { + _BEAKL15, + _LOWER, + _RAISE, + _MOUSE +}; + +enum custom_keycodes { + LT_DAT = SAFE_RANGE, + LT_COM, + LT_QUOT +}; + +#define LOWER LT(_LOWER, KC_ENT) +#define LOWER2 LT(_LOWER, KC_T) +#define RAISE LT(_RAISE, KC_SPC) +#define RAISE2 LT(_RAISE, KC_BSPC) +#define MOUSE LT(_MOUSE, KC_A) + +#define SH_ESC MT(MOD_LSFT, KC_ESC) +#define SH_CWD MT(MOD_LALT, KC_BSPC) +#define SH_LTAB MT(MOD_LALT, KC_TAB) +#define SH_UND MT(MOD_LCTL, KC_UNDS) +#define SH_Z MT(MOD_LCTL, KC_Z) + +#define SH_LGS MT(MOD_LGUI, KC_B) +#define AL_I ALGR_T(KC_I) +#define AL_N ALGR_T(KC_N) + +// Tap Dance definitions +enum { + TD_S +}; +qk_tap_dance_action_t tap_dance_actions[] = { + [TD_S] = ACTION_TAP_DANCE_DOUBLE(KC_S, KC_Z), +}; + +bool sh_key(keyrecord_t *record, uint8_t sk, uint8_t nk); +bool sh_key8(keyrecord_t *record, uint8_t sk, uint8_t nk); + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_BEAKL15] = LAYOUT( + TG(_RAISE), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL, + SH_LTAB, KC_Q, KC_H, KC_O, KC_U, KC_X, KC_G, KC_C, KC_R, KC_F, KC_Z, KC_LGUI, + SH_UND, KC_Y, AL_I, KC_E, MOUSE, LT_DAT, KC_D, TD(TD_S),LOWER2, AL_N, KC_B, KC_SCLN, + KC_LSFT, KC_J, KC_SLSH, LT_COM, KC_K, LT_QUOT, RGB_TOG, BL_TOGG, KC_W, KC_M, KC_L, KC_P, KC_V, KC_RSFT, + SH_Z, LOWER, RAISE, SH_ESC, RAISE2, SH_LTAB + ), + + [_LOWER] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, KC_LT, KC_DLR, KC_GT, KC_EXLM, _______, KC_LBRC, KC_UNDS, KC_RBRC, KC_EXLM, _______, + _______, KC_BSLS, KC_LPRN, KC_DQUO, KC_RPRN, KC_HASH, KC_PERC, KC_LCBR, KC_EQL, KC_RCBR, KC_PIPE, _______, + _______, KC_SCLN, KC_SLSH, KC_ASTR, KC_PLUS, _______, _______, _______, _______, KC_AMPR, KC_CIRC, KC_TILD, KC_SCLN, _______, + _______, _______, _______, _______, _______, _______ + + ), + + [_RAISE] = LAYOUT( + _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_BRIGHTNESS_DOWN, KC_BRIGHTNESS_UP, KC_PSCREEN, _______, _______, _______, _______, RESET, + _______, KC_SLSH, KC_6, KC_5, KC_4, KC_EQL, KC_CIRC, KC_PGUP, KC_UP, KC_PGDN, _______, RGB_VAI, + _______, KC_3, KC_2, KC_1, KC_0, KC_DOT, KC_EQL, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, + _______, KC_ASTR, KC_9, KC_8, KC_7, KC_PLUS, _______, _______, KC_PLUS, KC_HOME, KC_COLN, KC_END, _______, RGB_MOD, + _______, _______, _______, _______, _______, _______ + ), + + [_MOUSE] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_MS_U, KC_BTN2, _______, _______, + _______, _______, _______, KC_BTN1, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BTN3, _______, _______, _______, + _______, _______, _______, _______, _______, _______ + ) +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case LT_DAT: + return sh_key8(record, KC_2, KC_DOT); + case LT_COM: + return sh_key8(record, KC_1, KC_COMM); + case LT_QUOT: + return sh_key(record, KC_GRV, KC_QUOT); + default: + return true; + } +} + +bool sh_key(keyrecord_t *record, uint8_t sk, uint8_t nk){ + if (record->event.pressed) { + if (get_mods() & MOD_BIT(KC_LSHIFT) || get_mods() & MOD_BIT(KC_RSHIFT)){ + unregister_code(KC_LSFT); + unregister_code(KC_RSFT); + register_code(sk); + } else { + register_code(nk); + } + } + else { + unregister_code16(sk); + unregister_code(nk); + } + return false; +} + +bool sh_key8(keyrecord_t *record, uint8_t sk, uint8_t nk){ + if (record->event.pressed) { + if (get_mods() & MOD_BIT(KC_LSHIFT) || get_mods() & MOD_BIT(KC_RSHIFT)){ + register_code(sk); + } else { + register_code(nk); + } + } + else { + unregister_code(sk); + unregister_code(nk); + } + return false; +} + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + if (clockwise) { + tap_code16(C(G(KC_LEFT))); + } else { + tap_code16(C(G(KC_RGHT))); + } + } + // tmux screen + else if (index == 1) { + switch(biton32(layer_state)){ + case 0: + if (clockwise) { + send_string(SS_LCTL("B")"p"); + } else { + send_string(SS_LCTL("B")"n"); + } + break; + case _RAISE: + if (clockwise) { + tap_code16(C(G(KC_PGUP))); + } else { + tap_code16(C(G(KC_PGDN))); + } + break; + } + } + return true; +} + +const rgblight_segment_t PROGMEM raise_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {1, 12, HSV_RED} +); +const rgblight_segment_t PROGMEM lower_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {1, 12, HSV_BLUE} +); +const rgblight_segment_t PROGMEM mouse_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {1, 12, HSV_GREEN} +); + +// Now define the array of layers. Later layers take precedence +const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( + lower_layer, + raise_layer, + mouse_layer +); + +void keyboard_post_init_user(void) { + // Enable the LED layers + rgblight_layers = my_rgb_layers; +} + +layer_state_t layer_state_set_user(layer_state_t state) { + rgblight_set_layer_state(0, layer_state_cmp(state, 2)); + rgblight_set_layer_state(1, layer_state_cmp(state, 3)); + rgblight_set_layer_state(2, layer_state_cmp(state, 4)); + return state; +} + diff --git a/keyboards/keebio/iris/keymaps/sq5rix/readme.md b/keyboards/keebio/iris/keymaps/sq5rix/readme.md new file mode 100644 index 000000000000..96370c74cd13 --- /dev/null +++ b/keyboards/keebio/iris/keymaps/sq5rix/readme.md @@ -0,0 +1,17 @@ +BEAKL-15 keymap for keebio iris +@sq5rix tom wawer +https://deskthority.net/wiki/BEAKL#BEAKL_15 + +Modern keyboard map easy to learn +very effective to type + +esc F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 Del + q h o u x g c r f z + - y i e a . d s t n b ; + j / , , k w m l p v + + z enter space esc bkspc tab + +lots of special functions +three layers with puncs, numbers and mouse + diff --git a/keyboards/keebio/iris/keymaps/sq5rix/rules.mk b/keyboards/keebio/iris/keymaps/sq5rix/rules.mk new file mode 100644 index 000000000000..3fc2bd9768c8 --- /dev/null +++ b/keyboards/keebio/iris/keymaps/sq5rix/rules.mk @@ -0,0 +1,4 @@ +RGBLIGHT_ENABLE = yes +TAP_DANCE_ENABLE = yes +LTO_ENABLE = yes +MOUSEKEY_ENABLE = yes diff --git a/keyboards/keebio/iris/keymaps/via/keymap.c b/keyboards/keebio/iris/keymaps/via/keymap.c index 2ada98d6da39..f6183f1f7dd8 100644 --- a/keyboards/keebio/iris/keymaps/via/keymap.c +++ b/keyboards/keebio/iris/keymaps/via/keymap.c @@ -19,7 +19,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_HOME, KC_END, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘ - KC_LGUI, FN_MO13, KC_ENT, KC_SPC, FN_MO23, KC_LALT + KC_LGUI, FN_MO13, KC_ENT, KC_SPC, FN_MO23, KC_RALT // └────────┴────────┴────────┘ └────────┴────────┴────────┘ ), diff --git a/keyboards/keebio/iris/keymaps/vyolle/rules.mk b/keyboards/keebio/iris/keymaps/vyolle/rules.mk index f93940de34f9..3b342b4cef8b 100644 --- a/keyboards/keebio/iris/keymaps/vyolle/rules.mk +++ b/keyboards/keebio/iris/keymaps/vyolle/rules.mk @@ -4,4 +4,4 @@ STENO_ENABLE = no # Additional protocols for Stenography(+1700), require AUDIO_ENABLE = no # Audio output on port C6 MIDI_ENABLE = no # MIDI controls NKRO_ENABLE = yes -BOOTMAGIC_ENABLE = full +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite diff --git a/keyboards/keebio/iris/rev1/rev1.c b/keyboards/keebio/iris/rev1/rev1.c index 6249d2f0ac78..369af1bae777 100644 --- a/keyboards/keebio/iris/rev1/rev1.c +++ b/keyboards/keebio/iris/rev1/rev1.c @@ -1,12 +1,5 @@ #include "rev1.h" -#ifdef SSD1306OLED -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - led_set_user(usb_led); -} -#endif - #ifdef SWAP_HANDS_ENABLE __attribute__ ((weak)) // swap-hands action needs a matrix to define the swap diff --git a/keyboards/keebio/iris/rev1/rules.mk b/keyboards/keebio/iris/rev1/rules.mk index 765fa7f07a3b..9ae12f328a03 100644 --- a/keyboards/keebio/iris/rev1/rules.mk +++ b/keyboards/keebio/iris/rev1/rules.mk @@ -2,13 +2,6 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options @@ -16,19 +9,14 @@ BOOTLOADER = caterina # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend SPLIT_KEYBOARD = yes diff --git a/keyboards/keebio/iris/rev1_led/rev1_led.c b/keyboards/keebio/iris/rev1_led/rev1_led.c index c330189c7cd5..0ba10f1db96c 100644 --- a/keyboards/keebio/iris/rev1_led/rev1_led.c +++ b/keyboards/keebio/iris/rev1_led/rev1_led.c @@ -1,12 +1,5 @@ #include "rev1_led.h" -#ifdef SSD1306OLED -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - led_set_user(usb_led); -} -#endif - #ifdef SWAP_HANDS_ENABLE __attribute__ ((weak)) // swap-hands action needs a matrix to define the swap diff --git a/keyboards/keebio/iris/rev1_led/rules.mk b/keyboards/keebio/iris/rev1_led/rules.mk index 765fa7f07a3b..9ae12f328a03 100644 --- a/keyboards/keebio/iris/rev1_led/rules.mk +++ b/keyboards/keebio/iris/rev1_led/rules.mk @@ -2,13 +2,6 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options @@ -16,19 +9,14 @@ BOOTLOADER = caterina # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend SPLIT_KEYBOARD = yes diff --git a/keyboards/keebio/iris/rev2/rules.mk b/keyboards/keebio/iris/rev2/rules.mk index 765fa7f07a3b..bd7cf0bdea51 100644 --- a/keyboards/keebio/iris/rev2/rules.mk +++ b/keyboards/keebio/iris/rev2/rules.mk @@ -2,13 +2,6 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options @@ -16,19 +9,16 @@ BOOTLOADER = caterina # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend SPLIT_KEYBOARD = yes + +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/keebio/iris/rev3/rules.mk b/keyboards/keebio/iris/rev3/rules.mk index ea92bc98f594..752cc8b53961 100644 --- a/keyboards/keebio/iris/rev3/rules.mk +++ b/keyboards/keebio/iris/rev3/rules.mk @@ -2,13 +2,6 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = qmk-dfu # Build Options @@ -16,20 +9,16 @@ BOOTLOADER = qmk-dfu # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = yes # Console for debug +CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend SPLIT_KEYBOARD = yes ENCODER_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/keebio/iris/rev4/rules.mk b/keyboards/keebio/iris/rev4/rules.mk index ea92bc98f594..b0343deeb864 100644 --- a/keyboards/keebio/iris/rev4/rules.mk +++ b/keyboards/keebio/iris/rev4/rules.mk @@ -2,13 +2,6 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = qmk-dfu # Build Options @@ -16,20 +9,17 @@ BOOTLOADER = qmk-dfu # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = yes # Console for debug +CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend SPLIT_KEYBOARD = yes ENCODER_ENABLE = yes + +LTO_ENABLE = yes diff --git a/keyboards/keebio/iris/rev5/config.h b/keyboards/keebio/iris/rev5/config.h new file mode 100644 index 000000000000..15eed8349f9c --- /dev/null +++ b/keyboards/keebio/iris/rev5/config.h @@ -0,0 +1,83 @@ +/* +Copyright 2019 Danny Nguyen + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xCB10 +#define PRODUCT_ID 0x5256 +#define DEVICE_VER 0x0500 +#define MANUFACTURER Keebio +#define PRODUCT Iris Rev. 5 + +/* key matrix size */ +// Rows are doubled-up +#define MATRIX_ROWS 10 +#define MATRIX_COLS 6 + +// wiring of each half +#define MATRIX_ROW_PINS { B1, F0, F5, F6, F7 } +#define MATRIX_COL_PINS { F1, F4, D3, D2, B7, D4 } +#define MATRIX_ROW_PINS_RIGHT { B1, B2, D2, F1, F4 } +#define MATRIX_COL_PINS_RIGHT { D4, D7, D3, B7, F0, B3 } +#define SPLIT_HAND_PIN D5 +#define QMK_ESC_OUTPUT F1 +#define QMK_ESC_INPUT B1 +#define QMK_LED B0 +#define QMK_SPEAKER C6 + +#define ENCODERS_PAD_A { B2 } +#define ENCODERS_PAD_B { B3 } +#define ENCODERS_PAD_A_RIGHT { F7 } +#define ENCODERS_PAD_B_RIGHT { F6 } + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +// #define BACKLIGHT_LEVELS 3 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* serial.c configuration for split keyboard */ +#define SOFT_SERIAL_PIN D0 + + +#define BACKLIGHT_PIN B5 +#define BACKLIGHT_LEVELS 5 +#define BACKLIGHT_DEFAULT_LEVEL 3 + +/* ws2812 RGB LED */ +#define RGB_DI_PIN D6 +#define RGBLED_NUM 12 // Number of LEDs +#define RGBLED_SPLIT { 6, 6 } +#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_DEFAULT_VAL 128 +#define RGBLIGHT_DEFAULT_MODE (RGBLIGHT_MODE_RAINBOW_SWIRL + 2) diff --git a/keyboards/keebio/iris/rev5/rev5.c b/keyboards/keebio/iris/rev5/rev5.c new file mode 100644 index 000000000000..a4191719c027 --- /dev/null +++ b/keyboards/keebio/iris/rev5/rev5.c @@ -0,0 +1,14 @@ +/* +Copyright 2021 Danny Nguyen +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "rev5.h" diff --git a/keyboards/keebio/iris/rev5/rev5.h b/keyboards/keebio/iris/rev5/rev5.h new file mode 100644 index 000000000000..d13e24410e3b --- /dev/null +++ b/keyboards/keebio/iris/rev5/rev5.h @@ -0,0 +1,42 @@ +/* +Copyright 2021 Danny Nguyen + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "iris.h" +#include "quantum.h" + + +#define LAYOUT( \ + LA1, LA2, LA3, LA4, LA5, LA6, RA6, RA5, RA4, RA3, RA2, RA1, \ + LB1, LB2, LB3, LB4, LB5, LB6, RB6, RB5, RB4, RB3, RB2, RB1, \ + LC1, LC2, LC3, LC4, LC5, LC6, RC6, RC5, RC4, RC3, RC2, RC1, \ + LD1, LD2, LD3, LD4, LD5, LD6, LE6, RE6, RD6, RD5, RD4, RD3, RD2, RD1, \ + LE3, LE4, LE5, RE5, RE4, RE3 \ + ) \ + { \ + { LA1, LA2, LA3, LA4, LA5, LA6 }, \ + { LB1, LB2, LB3, LB4, LB5, LB6 }, \ + { LC1, LC2, LC3, LC4, LC5, LC6 }, \ + { LD1, LD2, LD3, LD4, LD5, LD6 }, \ + { KC_NO, KC_NO, LE3, LE4, LE5, LE6 }, \ + { RA1, RA2, RA3, RA4, RA5, RA6 }, \ + { RB1, RB2, RB3, RB4, RB5, RB6 }, \ + { RC1, RC2, RC3, RC4, RC5, RC6 }, \ + { RD1, RD2, RD3, RD4, RD5, RD6 }, \ + { KC_NO, KC_NO, RE3, RE4, RE5, RE6 } \ + } diff --git a/keyboards/keebio/iris/rev5/rules.mk b/keyboards/keebio/iris/rev5/rules.mk new file mode 100644 index 000000000000..a3423373191f --- /dev/null +++ b/keyboards/keebio/iris/rev5/rules.mk @@ -0,0 +1,21 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = qmk-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +SPLIT_KEYBOARD = yes +ENCODER_ENABLE = yes diff --git a/keyboards/keebio/iris/rev6/config.h b/keyboards/keebio/iris/rev6/config.h new file mode 100644 index 000000000000..e821012a7d08 --- /dev/null +++ b/keyboards/keebio/iris/rev6/config.h @@ -0,0 +1,91 @@ +/* +Copyright 2021 Danny Nguyen + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xCB10 +#define PRODUCT_ID 0x6256 +#define DEVICE_VER 0x0600 +#define MANUFACTURER Keebio +#define PRODUCT Iris Rev. 6 + +/* key matrix size */ +// Rows are doubled-up +#define MATRIX_ROWS 10 +#define MATRIX_COLS 6 + +// wiring of each half +#define MATRIX_ROW_PINS { B1, F0, F5, B4, D7 } +#define MATRIX_COL_PINS { F1, F4, B5, C7, D4, D6 } +#define MATRIX_ROW_PINS_RIGHT { B1, F0, F5, B4, B5 } +#define MATRIX_COL_PINS_RIGHT { D4, D6, D7, C7, F1, F4 } +#define SPLIT_HAND_PIN D5 + +#define ENCODERS_PAD_A { B2 } +#define ENCODERS_PAD_B { B3 } +#define ENCODERS_PAD_A_RIGHT { B2 } +#define ENCODERS_PAD_B_RIGHT { B3 } + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +// #define BACKLIGHT_LEVELS 3 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* serial.c configuration for split keyboard */ +#define SOFT_SERIAL_PIN D0 + +/* ws2812 RGB LED */ +#define RGB_DI_PIN E6 +#ifdef RGB_DI_PIN +# define RGBLED_NUM 68 +# define RGBLED_SPLIT { 34, 34 } +# define RGBLIGHT_HUE_STEP 8 +# define RGBLIGHT_SAT_STEP 8 +# define RGBLIGHT_VAL_STEP 8 +# define RGBLIGHT_LIMIT_VAL 120 /* The maximum brightness level */ +# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== enabled animations ==*/ +# define RGBLIGHT_EFFECT_BREATHING +# define RGBLIGHT_EFFECT_RAINBOW_MOOD +# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +# define RGBLIGHT_EFFECT_SNAKE +# define RGBLIGHT_EFFECT_KNIGHT +# define RGBLIGHT_EFFECT_CHRISTMAS +# define RGBLIGHT_EFFECT_STATIC_GRADIENT +# define RGBLIGHT_EFFECT_RGB_TEST +# define RGBLIGHT_EFFECT_ALTERNATING +# define RGBLIGHT_EFFECT_TWINKLE +# define RGBLIGHT_DEFAULT_VAL 120 +# define RGBLIGHT_DEFAULT_MODE (RGBLIGHT_MODE_RAINBOW_SWIRL + 2) +// RGB Matrix +# ifdef RGB_MATRIX_ENABLE +# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 160 +# define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS +# define DRIVER_LED_TOTAL RGBLED_NUM +# define RGB_MATRIX_SPLIT { 34, 34 } +# define RGB_DISABLE_WHEN_USB_SUSPENDED +//# define RGB_MATRIX_KEYPRESSES +# endif +#endif diff --git a/keyboards/keebio/iris/rev6/rev6.c b/keyboards/keebio/iris/rev6/rev6.c new file mode 100644 index 000000000000..ff9f9d25a1a8 --- /dev/null +++ b/keyboards/keebio/iris/rev6/rev6.c @@ -0,0 +1,65 @@ +/* +Copyright 2021 Danny Nguyen +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "rev6.h" + +#ifdef RGB_MATRIX_ENABLE +led_config_t g_led_config = { { + // Key Matrix to LED Index + // Left Half + { 0, 1, 2, 3, 4, 5 }, + { 11, 10, 9, 8, 7, 6 }, + { 12, 13, 14, 15, 16, 17 }, + { 23, 22, 21, 20, 19, 18 }, + { NO_LED, NO_LED, 24, 25, 26, 27 }, + // Right Half + { 34, 35, 36, 37, 38, 39 }, + { 45, 44, 43, 42, 41, 40 }, + { 46, 47, 48, 49, 50, 51 }, + { 57, 56, 55, 54, 53, 52 }, + { NO_LED, NO_LED, 58, 59, 60, 61 } +}, { + // LED Index to Physical Position + // Left Half + { 0, 5 }, { 16, 5 }, { 32, 2 }, { 48, 0 }, { 64, 2 }, { 80, 3 }, + { 80, 17 }, { 64, 15 }, { 48, 13 }, { 32, 15 }, { 16, 18 }, { 0, 18 }, + { 0, 32 }, { 16, 32 }, { 32, 28 }, { 48, 27 }, { 64, 28 }, { 80, 30 }, + { 80, 43 }, { 64, 42 }, { 48, 40 }, { 32, 42 }, { 16, 45 }, { 0, 45 }, + { 56, 47 }, { 72, 58 }, { 90, 64 }, { 98, 52 }, + { 80, 58 }, { 40, 50 }, { 8, 43 }, { 8, 5 }, { 40, 1 }, { 72, 3 }, + // Right Half + { 224, 5 }, { 208, 5 }, { 192, 2 }, { 176, 0 }, { 160, 2 }, { 144, 3 }, + { 144, 18 }, { 160, 18 }, { 176, 15 }, { 192, 13 }, { 208, 15 }, { 244, 17 }, + { 224, 32 }, { 208, 32 }, { 192, 28 }, { 176, 27 }, { 160, 28 }, { 144, 30 }, + { 144, 45 }, { 160, 45 }, { 176, 42 }, { 192, 40 }, { 208, 42 }, { 244, 43 }, + { 168, 47 }, { 152, 58 }, { 134, 64 }, { 126, 52 }, + { 144, 58 }, { 184, 50 }, { 216, 43 }, { 216, 5 }, { 184, 1 }, { 152, 3 } +}, { + // LED Index to Flag + // Left Half + 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, + 2, 2, 2, 2, 2, 2, + // Right Half + 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, + 2, 2, 2, 2, 2, 2 + +} }; +#endif diff --git a/keyboards/keebio/iris/rev6/rev6.h b/keyboards/keebio/iris/rev6/rev6.h new file mode 100644 index 000000000000..d13e24410e3b --- /dev/null +++ b/keyboards/keebio/iris/rev6/rev6.h @@ -0,0 +1,42 @@ +/* +Copyright 2021 Danny Nguyen + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "iris.h" +#include "quantum.h" + + +#define LAYOUT( \ + LA1, LA2, LA3, LA4, LA5, LA6, RA6, RA5, RA4, RA3, RA2, RA1, \ + LB1, LB2, LB3, LB4, LB5, LB6, RB6, RB5, RB4, RB3, RB2, RB1, \ + LC1, LC2, LC3, LC4, LC5, LC6, RC6, RC5, RC4, RC3, RC2, RC1, \ + LD1, LD2, LD3, LD4, LD5, LD6, LE6, RE6, RD6, RD5, RD4, RD3, RD2, RD1, \ + LE3, LE4, LE5, RE5, RE4, RE3 \ + ) \ + { \ + { LA1, LA2, LA3, LA4, LA5, LA6 }, \ + { LB1, LB2, LB3, LB4, LB5, LB6 }, \ + { LC1, LC2, LC3, LC4, LC5, LC6 }, \ + { LD1, LD2, LD3, LD4, LD5, LD6 }, \ + { KC_NO, KC_NO, LE3, LE4, LE5, LE6 }, \ + { RA1, RA2, RA3, RA4, RA5, RA6 }, \ + { RB1, RB2, RB3, RB4, RB5, RB6 }, \ + { RC1, RC2, RC3, RC4, RC5, RC6 }, \ + { RD1, RD2, RD3, RD4, RD5, RD6 }, \ + { KC_NO, KC_NO, RE3, RE4, RE5, RE6 } \ + } diff --git a/keyboards/keebio/iris/rev6/rules.mk b/keyboards/keebio/iris/rev6/rules.mk new file mode 100644 index 000000000000..b469b4df6db8 --- /dev/null +++ b/keyboards/keebio/iris/rev6/rules.mk @@ -0,0 +1,25 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +SPLIT_KEYBOARD = yes +ENCODER_ENABLE = yes +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = WS2812 + +LTO_ENABLE = yes diff --git a/keyboards/keebio/kbo5000/info.json b/keyboards/keebio/kbo5000/info.json index 222587c26b3f..f4d37e012d59 100644 --- a/keyboards/keebio/kbo5000/info.json +++ b/keyboards/keebio/kbo5000/info.json @@ -2,8 +2,6 @@ "keyboard_name": "KBO-5000", "url": "https://keeb.io", "maintainer": "nooges", - "width": 20.5, - "height": 6.25, "layouts": { "LAYOUT_ansi": { "layout": [ diff --git a/keyboards/keebio/kbo5000/keymaps/via/rules.mk b/keyboards/keebio/kbo5000/keymaps/via/rules.mk index 4b1bcabda81a..36b7ba9cbc98 100644 --- a/keyboards/keebio/kbo5000/keymaps/via/rules.mk +++ b/keyboards/keebio/kbo5000/keymaps/via/rules.mk @@ -1,3 +1,2 @@ VIA_ENABLE = yes -CONSOLE_ENABLE = yes LTO_ENABLE = yes diff --git a/keyboards/keebio/kbo5000/rules.mk b/keyboards/keebio/kbo5000/rules.mk index 5292231d581c..52d393f8db7c 100644 --- a/keyboards/keebio/kbo5000/rules.mk +++ b/keyboards/keebio/kbo5000/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = yes # Console for debug +CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend LTO_ENABLE = yes SPLIT_KEYBOARD = yes diff --git a/keyboards/keebio/laplace/info.json b/keyboards/keebio/laplace/info.json index e783a1f496a0..c4df4c3a9d71 100644 --- a/keyboards/keebio/laplace/info.json +++ b/keyboards/keebio/laplace/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Laplace", "url": "https://keeb.io", "maintainer": "nooges", - "width": 13, - "height": 4, "layouts": { "LAYOUT": { "layout": [ @@ -60,4 +58,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/keebio/laplace/rules.mk b/keyboards/keebio/laplace/rules.mk index 8d273917c722..c418fcfe3099 100644 --- a/keyboards/keebio/laplace/rules.mk +++ b/keyboards/keebio/laplace/rules.mk @@ -2,28 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. diff --git a/keyboards/keebio/levinson/config.h b/keyboards/keebio/levinson/config.h index ca0c79e554c4..4a3def7cc85b 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" - -#endif diff --git a/keyboards/keebio/levinson/info.json b/keyboards/keebio/levinson/info.json index 2fb8fa9e3e33..1d98ca9f4ef5 100644 --- a/keyboards/keebio/levinson/info.json +++ b/keyboards/keebio/levinson/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Levinson", "url": "https://keeb.io", "maintainer": "Keebio", - "width": 13, - "height": 4, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":12, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}, {"x":12, "y":3}] diff --git a/keyboards/keebio/levinson/keymaps/issmirnov/keymap.c b/keyboards/keebio/levinson/keymaps/issmirnov/keymap.c index 0023b8424fd6..d9edfebaa07c 100644 --- a/keyboards/keebio/levinson/keymaps/issmirnov/keymap.c +++ b/keyboards/keebio/levinson/keymaps/issmirnov/keymap.c @@ -87,7 +87,7 @@ void matrix_scan_user(void) { // only runs when when the layer is changed, good for updating LED's and clearing sticky state // RGB modes: https://github.com/qmk/qmk_firmware/blob/master/quantum/rgblight.h -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { #ifdef RGBLIGHT_ENABLE layer_state_set_rgb(state); #endif diff --git a/keyboards/keebio/levinson/keymaps/jyh2/rules.mk b/keyboards/keebio/levinson/keymaps/jyh2/rules.mk index fbb3b49d6bfc..fb670123ed91 100644 --- a/keyboards/keebio/levinson/keymaps/jyh2/rules.mk +++ b/keyboards/keebio/levinson/keymaps/jyh2/rules.mk @@ -1,2 +1,2 @@ RGBLIGHT_ENABLE=yes -BOOTMAGIC_ENABLE=no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite diff --git a/keyboards/keebio/levinson/keymaps/ksamborski/rules.mk b/keyboards/keebio/levinson/keymaps/ksamborski/rules.mk index 1ce3f222fdd4..d9c186d4271f 100644 --- a/keyboards/keebio/levinson/keymaps/ksamborski/rules.mk +++ b/keyboards/keebio/levinson/keymaps/ksamborski/rules.mk @@ -1,3 +1,3 @@ RGBLIGHT_ENABLE=yes -BOOTMAGIC_ENABLE=no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite DYNAMIC_MACRO_ENABLE=yes diff --git a/keyboards/keebio/levinson/keymaps/losinggeneration/rules.mk b/keyboards/keebio/levinson/keymaps/losinggeneration/rules.mk index ee3ea67f7d8f..b10c462f7453 100644 --- a/keyboards/keebio/levinson/keymaps/losinggeneration/rules.mk +++ b/keyboards/keebio/levinson/keymaps/losinggeneration/rules.mk @@ -5,7 +5,7 @@ AUDIO_ENABLE = no # Audio output on port C6 BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite COMMAND_ENABLE = no # Commands for debug and configuration CONSOLE_ENABLE = no # Console for debug(+400) MIDI_ENABLE = no # MIDI controls diff --git a/keyboards/keebio/levinson/keymaps/steno/rules.mk b/keyboards/keebio/levinson/keymaps/steno/rules.mk index 7693b24b5d10..18c51540bf52 100644 --- a/keyboards/keebio/levinson/keymaps/steno/rules.mk +++ b/keyboards/keebio/levinson/keymaps/steno/rules.mk @@ -4,4 +4,4 @@ STENO_ENABLE = yes # Additional protocols for Stenography, requires VIR AUDIO_ENABLE = no # Audio output on port C6 MIDI_ENABLE = no # MIDI controls NKRO_ENABLE = yes -BOOTMAGIC_ENABLE = full +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite diff --git a/keyboards/keebio/levinson/keymaps/xtonhasvim/keymap.c b/keyboards/keebio/levinson/keymaps/xtonhasvim/keymap.c index b9341ff35a3b..16aa965d7d23 100644 --- a/keyboards/keebio/levinson/keymaps/xtonhasvim/keymap.c +++ b/keyboards/keebio/levinson/keymaps/xtonhasvim/keymap.c @@ -232,6 +232,6 @@ void set_state_leds(void) { } } -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST); } diff --git a/keyboards/keebio/levinson/rev1/rev1.c b/keyboards/keebio/levinson/rev1/rev1.c index 573fa787baa0..72df88710ac2 100644 --- a/keyboards/keebio/levinson/rev1/rev1.c +++ b/keyboards/keebio/levinson/rev1/rev1.c @@ -1,22 +1 @@ #include "levinson.h" - -#ifdef SSD1306OLED -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - led_set_user(usb_led); -} -#endif - -void matrix_init_kb(void) { - - // // green led on - // DDRD |= (1<<5); - // PORTD &= ~(1<<5); - - // // orange led on - // DDRB |= (1<<0); - // PORTB &= ~(1<<0); - - matrix_init_user(); -}; - diff --git a/keyboards/keebio/levinson/rules.mk b/keyboards/keebio/levinson/rules.mk index d2046720c884..e6b333af995b 100644 --- a/keyboards/keebio/levinson/rules.mk +++ b/keyboards/keebio/levinson/rules.mk @@ -2,35 +2,22 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - SPLIT_KEYBOARD = yes LAYOUTS = ortho_4x12 diff --git a/keyboards/keebio/nyquist/info.json b/keyboards/keebio/nyquist/info.json index 263b45767b7b..43561a553f20 100644 --- a/keyboards/keebio/nyquist/info.json +++ b/keyboards/keebio/nyquist/info.json @@ -1,8 +1,6 @@ { "keyboard_name": "Nyquist", "maintainer": "qmk", - "width": 13, - "height": 5, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":12, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}, {"x":12, "y":3}, {"x":0, "y":4}, {"x":1, "y":4}, {"x":2, "y":4}, {"x":3, "y":4}, {"x":4, "y":4}, {"x":5, "y":4}, {"x":7, "y":4}, {"x":8, "y":4}, {"x":9, "y":4}, {"x":10, "y":4}, {"x":11, "y":4}, {"x":12, "y":4}] diff --git a/keyboards/keebio/nyquist/keymaps/DivergeJM/rules.mk b/keyboards/keebio/nyquist/keymaps/DivergeJM/rules.mk index 2c26b47ea1f6..bbed7e858188 100644 --- a/keyboards/keebio/nyquist/keymaps/DivergeJM/rules.mk +++ b/keyboards/keebio/nyquist/keymaps/DivergeJM/rules.mk @@ -18,7 +18,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/keebio/nyquist/keymaps/danielhklein/rules.mk b/keyboards/keebio/nyquist/keymaps/danielhklein/rules.mk index 93cf3c8ea086..ef7ab0420503 100644 --- a/keyboards/keebio/nyquist/keymaps/danielhklein/rules.mk +++ b/keyboards/keebio/nyquist/keymaps/danielhklein/rules.mk @@ -18,7 +18,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/keebio/nyquist/keymaps/georgepetri/rules.mk b/keyboards/keebio/nyquist/keymaps/georgepetri/rules.mk index 4010d90f03ce..072f9b2edccc 100644 --- a/keyboards/keebio/nyquist/keymaps/georgepetri/rules.mk +++ b/keyboards/keebio/nyquist/keymaps/georgepetri/rules.mk @@ -2,4 +2,4 @@ MOUSEKEY_ENABLE = no COMMAND_ENABLE = no RGBLIGHT_ENABLE = yes LTO_ENABLE = yes -DEBOUNCE_TYPE = eager_pk +DEBOUNCE_TYPE = sym_eager_pk diff --git a/keyboards/keebio/nyquist/keymaps/georgepetri3/rules.mk b/keyboards/keebio/nyquist/keymaps/georgepetri3/rules.mk index 4010d90f03ce..072f9b2edccc 100644 --- a/keyboards/keebio/nyquist/keymaps/georgepetri3/rules.mk +++ b/keyboards/keebio/nyquist/keymaps/georgepetri3/rules.mk @@ -2,4 +2,4 @@ MOUSEKEY_ENABLE = no COMMAND_ENABLE = no RGBLIGHT_ENABLE = yes LTO_ENABLE = yes -DEBOUNCE_TYPE = eager_pk +DEBOUNCE_TYPE = sym_eager_pk diff --git a/keyboards/keebio/nyquist/keymaps/losinggeneration/rules.mk b/keyboards/keebio/nyquist/keymaps/losinggeneration/rules.mk index 17ef684830f4..34b0ba318fba 100644 --- a/keyboards/keebio/nyquist/keymaps/losinggeneration/rules.mk +++ b/keyboards/keebio/nyquist/keymaps/losinggeneration/rules.mk @@ -5,7 +5,7 @@ AUDIO_ENABLE = no # Audio output on port C6 BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite COMMAND_ENABLE = no # Commands for debug and configuration CONSOLE_ENABLE = no # Console for debug(+400) MIDI_ENABLE = no # MIDI controls diff --git a/keyboards/keebio/nyquist/keymaps/peott-fr/keymap.c b/keyboards/keebio/nyquist/keymaps/peott-fr/keymap.c new file mode 100644 index 000000000000..cff2e400c1e4 --- /dev/null +++ b/keyboards/keebio/nyquist/keymaps/peott-fr/keymap.c @@ -0,0 +1,104 @@ +/* Copyright 2021 Pierre-Emmanuel Ott + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +/* This keymap is based on a) intuitive layout and b) least amount of layers required for the bare minimum amount of keys. + * The first layer has most symbols and the usual QWERTY layout, along with all mods. This is similar to what one may make on a Preonic. + * Second layer is my left-hand layer: if the right hand is on the mouse, this layer has arrows and other keys on the left-hand. This also has a numpad. + * Last layer is for Functions keys and keyboard functions. + * + * Note that 'Reset' appears twice: on Nyquist both halves need to be flashed, so we need the full Reset shortcut to be available from any given single half. + */ + +enum custom_layers { + _QWERTY, + _LEFTHAND, + _FUNC +}; + +#define SPC_LFT LT(_LEFTHAND, KC_SPC) +#define BSP_FUNC LT(_FUNC, KC_BSPC) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Base/Qwerty layer + * .-----------------------------------------. .-----------------------------------------. + * | ~ | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | - | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | | Y | U | I | O | P | [ | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Esc | A | S | D | F | G | | H | J | K | L | ; | " | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Lsft(| Z | X | C | V | B | | N | M | , | . | / | Rsft)| + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | LCtrl| LGui | LAlt | Del | Spc/LftHnd | | Bckpc/Func | Left | Down | Up | Right| + * '-----------------------------------------' '-----------------------------------------' + */ + + [_QWERTY] = LAYOUT( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, + LCTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, + LCTL_T(KC_MPRV), LGUI_T(KC_MPLY), LALT_T(KC_MNXT), KC_DEL, SPC_LFT, SPC_LFT, BSP_FUNC, BSP_FUNC, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + +/* Left hand layer + * .-----------------------------------------. .-----------------------------------------. + * | + | | | | | Rst | | NumLk| / | * | - | | \ | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | [ | Up | ] | | | 7 | 8 | 9 | + | | ] | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | Left | Down | Right| | | 4 | 5 | 6 | , | |Enter | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | Calc | MyPC |PrtScr| Enter|BckSpc| | 1 | 2 | 3 | = | PgUp | Home | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | Mute | | | | | | 0 | . | Enter| PgDn | End | + * '-----------------------------------------' '-----------------------------------------' + */ + + [_LEFTHAND] = LAYOUT( + KC_EQL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_TRNS, KC_BSLS, + KC_TRNS, KC_TRNS, KC_LBRC, KC_UP, KC_RBRC, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_TRNS, KC_RBRC, + KC_LCTL, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PCMM, KC_TRNS, KC_ENT, + KC_LSFT, KC_CALC, KC_MYCM, KC_PSCR, KC_ENT, KC_BSPC, KC_P1, KC_P2, KC_P3, KC_PEQL, KC_PGUP, KC_HOME, + KC_LCTL, KC_MUTE, KC_LALT, KC_TRNS, KC_TRNS, KC_TRNS, KC_P0, KC_P0, KC_PDOT, KC_PENT, KC_PGDN, KC_END + ), + +/* Func/Numpad layer + * .-----------------------------------------. .-----------------------------------------. + * | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | RGBtg| | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | | | | | | | | Rst | + * '-----------------------------------------' '-----------------------------------------' +*/ + + + [_FUNC] = LAYOUT( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET + ), +}; \ No newline at end of file diff --git a/keyboards/keebio/nyquist/keymaps/pitty/keymap.c b/keyboards/keebio/nyquist/keymaps/pitty/keymap.c index 4dec42b85370..31912bb63eb6 100644 --- a/keyboards/keebio/nyquist/keymaps/pitty/keymap.c +++ b/keyboards/keebio/nyquist/keymaps/pitty/keymap.c @@ -139,7 +139,7 @@ bool rgb_layer_change = true; #define rgblight_set_white rgblight_sethsv (0x00, 0x00, 0xFF); #define rgblight_set_black rgblight_sethsv (0x00, 0x00, 0x00); -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { #ifdef RGBLIGHT_ENABLE uint8_t default_layer = eeconfig_read_default_layer(); if (rgb_layer_change) { diff --git a/keyboards/keebio/nyquist/keymaps/pjanx/config.h b/keyboards/keebio/nyquist/keymaps/pjanx/config.h new file mode 100644 index 000000000000..ef1c4a51ab9b --- /dev/null +++ b/keyboards/keebio/nyquist/keymaps/pjanx/config.h @@ -0,0 +1,31 @@ +/* +Copyright 2017 Danny Nguyen + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +// #define USE_I2C + +/* Select hand configuration */ +// #define MASTER_RIGHT +// #define EE_HANDS + +#undef RGBLED_NUM +#define RGBLIGHT_ANIMATIONS +#define RGBLED_NUM 12 +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 diff --git a/keyboards/keebio/nyquist/keymaps/pjanx/keymap.c b/keyboards/keebio/nyquist/keymaps/pjanx/keymap.c new file mode 100644 index 000000000000..44a30063b86b --- /dev/null +++ b/keyboards/keebio/nyquist/keymaps/pjanx/keymap.c @@ -0,0 +1,113 @@ +/* Copyright 2015-2017 Jack Humbert + * Copyright 2021 Přemysl Eric Janouch + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum planck_layers { + _QWERTY, + _LOWER, + _RAISE, + _ADJUST +}; + +enum planck_keycodes { + UNUSED = SAFE_RANGE +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |LCtrl | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |LShift| Z | X | C | V | B | N | M | , | . | / |RShift| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Esc | Caps | LGUI | LAlt |Lower | Space |Raise | RAlt | Down | Up |Enter | + * `-----------------------------------------------------------------------------------' + */ +[_QWERTY] = LAYOUT_ortho_4x12( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_ESC, KC_CAPS, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_RALT, KC_DOWN, KC_UP, KC_ENT +), + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Ins | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |RCtrl | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | RGUI | | | | | | Left | Vol- | Vol+ | Right| + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = LAYOUT_ortho_4x12( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_INS, + KC_RCTL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME, KC_END, _______, + _______, KC_RGUI, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_VOLD, KC_VOLU, KC_RGHT +), + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |RCtrl | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | PgDn | PgUp | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | App | | | | | | Left | Vol- | Vol+ | Right| + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = LAYOUT_ortho_4x12( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + KC_RCTL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGDN, KC_PGUP, _______, + _______, KC_APP, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_VOLD, KC_VOLU, KC_RGHT +), + +/* Adjust (Lower + Raise) + * v------------------------RGB CONTROL--------------------v + * ,-----------------------------------------------------------------------------------. + * | | Reset|Debug | RGB |RGBMOD| HUE+ | HUE- | SAT+ | SAT- |BRGTH+|BRGTH-| Del | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | |MUSmod|Aud on|Audoff|AGnorm|AGswap| | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof|TermOn|TermOf| | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | M1 | M2 | M3 | | | | | <- | vv | ^^ | -> | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = LAYOUT_ortho_4x12( + _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL , + _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______, + _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, _______, _______, _______, + KC_MS_BTN1, KC_MS_BTN2, KC_MS_BTN3, _______, _______, _______, _______, _______, KC_MS_LEFT, KC_MS_DOWN, KC_MS_UP, KC_MS_RIGHT +) + +}; + +layer_state_t layer_state_set_user(layer_state_t state) { + return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); +} diff --git a/keyboards/keebio/nyquist/keymaps/pjanx/rules.mk b/keyboards/keebio/nyquist/keymaps/pjanx/rules.mk new file mode 100644 index 000000000000..31710b1014b7 --- /dev/null +++ b/keyboards/keebio/nyquist/keymaps/pjanx/rules.mk @@ -0,0 +1,2 @@ +RGBLIGHT_ENABLE = yes +MOUSEKEY_ENABLE = yes diff --git a/keyboards/keebio/nyquist/keymaps/skug/keymap.c b/keyboards/keebio/nyquist/keymaps/skug/keymap.c index be77cb24b680..f9f66892a38c 100644 --- a/keyboards/keebio/nyquist/keymaps/skug/keymap.c +++ b/keyboards/keebio/nyquist/keymaps/skug/keymap.c @@ -19,12 +19,10 @@ extern keymap_config_t keymap_config; -#define CT_APOS CTL_T(SE_APOS) +#define CT_APOS CTL_T(SE_QUOT) #define CT_TILD CTL_T(SE_TILD) -#define MD_OSLH LT(MDIA, SE_OSLH) -#define SM_AE LT(SYMB, SE_AE) -#define SE_LT SE_LESS -#define SE_GT LSFT(SE_LESS) +#define MD_ODIA LT(MDIA, SE_ODIA) +#define SM_ADIA LT(SYMB, SE_ADIA) enum layer_names { BASE, @@ -61,8 +59,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = LAYOUT( \ // LEFT HAND RIGHT HAND KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, SE_PLUS, \ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, SE_AA, \ - MO(ARRW), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, MD_OSLH, SM_AE, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, SE_ARNG, \ + MO(ARRW), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, MD_ODIA, SM_ADIA, \ KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, SE_MINS, KC_RSPC, \ CT_APOS, SE_ACUT, KC_LALT, KC_BSPC, KC_SPC, KC_LGUI, KC_ENT, KC_SPC, KC_BSPC, KC_ALGR, SE_ASTR, CT_TILD \ ), @@ -83,8 +81,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [GAME] = LAYOUT( \ // LEFT HAND RIGHT HAND KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, SE_PLUS, \ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, SE_AA, \ - MO(ARRW), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, MD_OSLH, SM_AE, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, SE_ARNG, \ + MO(ARRW), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, MD_ODIA, SM_ADIA, \ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, SE_MINS, KC_RSFT, \ KC_LCTL, SE_ACUT, KC_LALT, KC_BSPC, KC_SPC, KC_LGUI, KC_ENT, KC_SPC, KC_BSPC, KC_ALGR, SE_ASTR, KC_RCTL \ ), @@ -107,7 +105,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, KC_EXLM, SE_AT, SE_LCBR, SE_RCBR, SE_PIPE, KC_UP, KC_7, KC_8, KC_9, SE_ASTR, KC_F12, \ _______, KC_HASH, SE_DLR, SE_LPRN, SE_RPRN, SE_GRV, KC_DOWN, KC_4, KC_5, KC_6, SE_PLUS, _______, \ _______, KC_PERC, SE_CIRC, SE_LBRC, SE_RBRC, SE_TILD, SE_AMPR, KC_1, KC_2, KC_3, SE_MINS, _______, \ - _______, _______, _______, SE_LT, SE_GT, _______, _______, _______, KC_DOT, KC_0, SE_EQL, _______ \ + _______, _______, _______, SE_LABK, SE_RABK, _______, _______, _______, KC_DOT, KC_0, SE_EQL, _______ \ ), /* Media layer diff --git a/keyboards/keebio/nyquist/nyquist.h b/keyboards/keebio/nyquist/nyquist.h index 25da44172bb8..63d7680f0695 100644 --- a/keyboards/keebio/nyquist/nyquist.h +++ b/keyboards/keebio/nyquist/nyquist.h @@ -11,17 +11,3 @@ #endif #include "quantum.h" - -#define LAYOUT_ortho_4x12( \ - L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ - L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ - L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ - L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35 \ - ) \ - LAYOUT_ortho_5x12( \ - L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ - L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ - L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ - L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \ - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO \ - ) diff --git a/keyboards/keebio/nyquist/rev1/rev1.c b/keyboards/keebio/nyquist/rev1/rev1.c index 5f4cd32f695e..520a869e57ba 100644 --- a/keyboards/keebio/nyquist/rev1/rev1.c +++ b/keyboards/keebio/nyquist/rev1/rev1.c @@ -1,22 +1 @@ #include "rev1.h" - -#ifdef SSD1306OLED -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - led_set_user(usb_led); -} -#endif - -void matrix_init_kb(void) { - - // // green led on - // DDRD |= (1<<5); - // PORTD &= ~(1<<5); - - // // orange led on - // DDRB |= (1<<0); - // PORTB &= ~(1<<0); - - matrix_init_user(); -}; - diff --git a/keyboards/keebio/nyquist/rev1/rev1.h b/keyboards/keebio/nyquist/rev1/rev1.h index 20f53b3b4479..5896a826cc46 100644 --- a/keyboards/keebio/nyquist/rev1/rev1.h +++ b/keyboards/keebio/nyquist/rev1/rev1.h @@ -34,6 +34,22 @@ { R35, R34, R33, R32, R31, R30 }, \ { R45, R44, R43, R42, R41, R40 } \ } +#define LAYOUT_ortho_4x12( \ + L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ + L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ + L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35 \ + ) \ + { \ + { L00, L01, L02, L03, L04, L05 }, \ + { L10, L11, L12, L13, L14, L15 }, \ + { L20, L21, L22, L23, L24, L25 }, \ + { L30, L31, L32, L33, L34, L35 }, \ + { R05, R04, R03, R02, R01, R00 }, \ + { R15, R14, R13, R12, R11, R10 }, \ + { R25, R24, R23, R22, R21, R20 }, \ + { R35, R34, R33, R32, R31, R30 } \ + } #else // Keymap with right side flipped // (TRRS jack on both halves are to the right) @@ -56,6 +72,22 @@ { R30, R31, R32, R33, R34, R35 }, \ { R40, R41, R42, R43, R44, R45 } \ } +#define LAYOUT_ortho_4x12( \ + L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ + L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ + L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35 \ + ) \ + { \ + { L00, L01, L02, L03, L04, L05 }, \ + { L10, L11, L12, L13, L14, L15 }, \ + { L20, L21, L22, L23, L24, L25 }, \ + { L30, L31, L32, L33, L34, L35 }, \ + { R00, R01, R02, R03, R04, R05 }, \ + { R10, R11, R12, R13, R14, R15 }, \ + { R20, R21, R22, R23, R24, R25 }, \ + { R30, R31, R32, R33, R34, R35 } \ + } #endif #define LAYOUT_ortho_5x12 LAYOUT diff --git a/keyboards/keebio/nyquist/rev1/rules.mk b/keyboards/keebio/nyquist/rev1/rules.mk index a3c3f036b21f..fb5e2515b12b 100644 --- a/keyboards/keebio/nyquist/rev1/rules.mk +++ b/keyboards/keebio/nyquist/rev1/rules.mk @@ -1,33 +1,22 @@ +# MCU name MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend SPLIT_KEYBOARD = yes LAYOUTS = ortho_5x12 ortho_4x12 diff --git a/keyboards/keebio/nyquist/rev2/rev2.h b/keyboards/keebio/nyquist/rev2/rev2.h index 20f53b3b4479..5896a826cc46 100644 --- a/keyboards/keebio/nyquist/rev2/rev2.h +++ b/keyboards/keebio/nyquist/rev2/rev2.h @@ -34,6 +34,22 @@ { R35, R34, R33, R32, R31, R30 }, \ { R45, R44, R43, R42, R41, R40 } \ } +#define LAYOUT_ortho_4x12( \ + L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ + L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ + L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35 \ + ) \ + { \ + { L00, L01, L02, L03, L04, L05 }, \ + { L10, L11, L12, L13, L14, L15 }, \ + { L20, L21, L22, L23, L24, L25 }, \ + { L30, L31, L32, L33, L34, L35 }, \ + { R05, R04, R03, R02, R01, R00 }, \ + { R15, R14, R13, R12, R11, R10 }, \ + { R25, R24, R23, R22, R21, R20 }, \ + { R35, R34, R33, R32, R31, R30 } \ + } #else // Keymap with right side flipped // (TRRS jack on both halves are to the right) @@ -56,6 +72,22 @@ { R30, R31, R32, R33, R34, R35 }, \ { R40, R41, R42, R43, R44, R45 } \ } +#define LAYOUT_ortho_4x12( \ + L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ + L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ + L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35 \ + ) \ + { \ + { L00, L01, L02, L03, L04, L05 }, \ + { L10, L11, L12, L13, L14, L15 }, \ + { L20, L21, L22, L23, L24, L25 }, \ + { L30, L31, L32, L33, L34, L35 }, \ + { R00, R01, R02, R03, R04, R05 }, \ + { R10, R11, R12, R13, R14, R15 }, \ + { R20, R21, R22, R23, R24, R25 }, \ + { R30, R31, R32, R33, R34, R35 } \ + } #endif #define LAYOUT_ortho_5x12 LAYOUT diff --git a/keyboards/keebio/nyquist/rev2/rules.mk b/keyboards/keebio/nyquist/rev2/rules.mk index 05c0f5ed0342..0c4580740085 100644 --- a/keyboards/keebio/nyquist/rev2/rules.mk +++ b/keyboards/keebio/nyquist/rev2/rules.mk @@ -1,33 +1,22 @@ +# MCU name MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend SPLIT_KEYBOARD = yes LAYOUTS = ortho_5x12 ortho_4x12 diff --git a/keyboards/keebio/nyquist/rev3/rev3.h b/keyboards/keebio/nyquist/rev3/rev3.h index 274b83926b5b..e365c0e41743 100644 --- a/keyboards/keebio/nyquist/rev3/rev3.h +++ b/keyboards/keebio/nyquist/rev3/rev3.h @@ -31,4 +31,23 @@ { R40, R41, R42, R43, R44, R45 } \ } +#define LAYOUT_ortho_4x12( \ + L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ + L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ + L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35 \ + ) \ + { \ + { L00, L01, L02, L03, L04, L05 }, \ + { L10, L11, L12, L13, L14, L15 }, \ + { L20, L21, L22, L23, L24, L25 }, \ + { L30, L31, L32, L33, L34, L35 }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ + { R00, R01, R02, R03, R04, R05 }, \ + { R10, R11, R12, R13, R14, R15 }, \ + { R20, R21, R22, R23, R24, R25 }, \ + { R30, R31, R32, R33, R34, R35 }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \ + } + #define LAYOUT_ortho_5x12 LAYOUT diff --git a/keyboards/keebio/nyquist/rev3/rules.mk b/keyboards/keebio/nyquist/rev3/rules.mk index 16d445b62701..85b9104c6a09 100644 --- a/keyboards/keebio/nyquist/rev3/rules.mk +++ b/keyboards/keebio/nyquist/rev3/rules.mk @@ -1,33 +1,22 @@ +# MCU name MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = qmk-dfu # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend SPLIT_KEYBOARD = yes LAYOUTS = ortho_5x12 ortho_4x12 diff --git a/keyboards/keebio/quefrency/info.json b/keyboards/keebio/quefrency/info.json deleted file mode 100644 index d560d8a384c8..000000000000 --- a/keyboards/keebio/quefrency/info.json +++ /dev/null @@ -1,369 +0,0 @@ -{ - "keyboard_name": "Quefrency", - "url": "https://keeb.io", - "maintainer": "nooges", - "width": 17, - "height": 5, - "layouts": { - "LAYOUT_60": { - "layout": [ - {"label":"Esc", "x":0, "y":0}, - {"label":"1", "x":1, "y":0}, - {"label":"2", "x":2, "y":0}, - {"label":"3", "x":3, "y":0}, - {"label":"4", "x":4, "y":0}, - {"label":"5", "x":5, "y":0}, - {"label":"6", "x":6, "y":0}, - - {"label":"7", "x":8, "y":0}, - {"label":"8", "x":9, "y":0}, - {"label":"9", "x":10, "y":0}, - {"label":"0", "x":11, "y":0}, - {"label":"-", "x":12, "y":0}, - {"label":"=", "x":13, "y":0}, - {"label":"Del", "x":14, "y":0}, - {"label":"Bksp", "x":15, "y":0}, - - {"label":"Tab", "x":0, "y":1, "w":1.5}, - {"label":"Q", "x":1.5, "y":1}, - {"label":"W", "x":2.5, "y":1}, - {"label":"E", "x":3.5, "y":1}, - {"label":"R", "x":4.5, "y":1}, - {"label":"T", "x":5.5, "y":1}, - - {"label":"Y", "x":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":"Backslash", "x":14.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":7.75, "y":2}, - {"label":"J", "x":8.75, "y":2}, - {"label":"K", "x":9.75, "y":2}, - {"label":"L", "x":10.75, "y":2}, - {"label":";", "x":11.75, "y":2}, - {"label":"'", "x":12.75, "y":2}, - {"label":"Enter", "x":13.75, "y":2, "w":2.25}, - - {"label":"Shift", "x":0, "y":3, "w":2.25}, - {"label":"Z", "x":2.25, "y":3}, - {"label":"X", "x":3.25, "y":3}, - {"label":"C", "x":4.25, "y":3}, - {"label":"V", "x":5.25, "y":3}, - {"label":"B", "x":6.25, "y":3}, - - {"label":"N", "x":8.25, "y":3}, - {"label":"M", "x":9.25, "y":3}, - {"label":",", "x":10.25, "y":3}, - {"label":".", "x":11.25, "y":3}, - {"label":"/", "x":12.25, "y":3}, - {"label":"Shift", "x":13.25, "y":3, "w":1.75}, - {"label":"Up", "x":15, "y":3}, - - {"label":"Ctrl", "x":0, "y":4, "w":1.25}, - {"label":"Alt", "x":1.25, "y":4, "w":1.25}, - {"label":"Win", "x":2.5, "y":4, "w":1.25}, - {"label":"Fn", "x":3.75, "y":4, "w":1.25}, - {"label":"Space", "x":5, "y":4, "w":2.25}, - - {"label":"Fn", "x":8.25, "y":4, "w":1.25}, - {"label":"Space", "x":9.5, "y":4, "w":1.5}, - {"label":"Alt", "x":11, "y":4}, - {"label":"Ctrl", "x":12, "y":4}, - {"label":"Left", "x":13, "y":4}, - {"label":"Down", "x":14, "y":4}, - {"label":"Right", "x":15, "y":4} - ] - }, - "LAYOUT_65": { - "layout": [ - {"label":"Esc", "x":0, "y":0}, - {"label":"1", "x":1, "y":0}, - {"label":"2", "x":2, "y":0}, - {"label":"3", "x":3, "y":0}, - {"label":"4", "x":4, "y":0}, - {"label":"5", "x":5, "y":0}, - {"label":"6", "x":6, "y":0}, - - {"label":"7", "x":8, "y":0}, - {"label":"8", "x":9, "y":0}, - {"label":"9", "x":10, "y":0}, - {"label":"0", "x":11, "y":0}, - {"label":"-", "x":12, "y":0}, - {"label":"=", "x":13, "y":0}, - {"label":"Del", "x":14, "y":0}, - {"label":"Bksp", "x":15, "y":0}, - {"label":"Home", "x":16, "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":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":"Backslash", "x":14.5, "y":1, "w":1.5}, - {"label":"End", "x":16, "y":1}, - - {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, - {"label":"A", "x":1.75, "y":2}, - {"label":"S", "x":2.75, "y":2}, - {"label":"D", "x":3.75, "y":2}, - {"label":"F", "x":4.75, "y":2}, - {"label":"G", "x":5.75, "y":2}, - - {"label":"H", "x":7.75, "y":2}, - {"label":"J", "x":8.75, "y":2}, - {"label":"K", "x":9.75, "y":2}, - {"label":"L", "x":10.75, "y":2}, - {"label":";", "x":11.75, "y":2}, - {"label":"'", "x":12.75, "y":2}, - {"label":"Enter", "x":13.75, "y":2, "w":2.25}, - {"label":"Page Up", "x":16, "y":2}, - - {"label":"Shift", "x":0, "y":3, "w":2.25}, - {"label":"Z", "x":2.25, "y":3}, - {"label":"X", "x":3.25, "y":3}, - {"label":"C", "x":4.25, "y":3}, - {"label":"V", "x":5.25, "y":3}, - {"label":"B", "x":6.25, "y":3}, - - {"label":"N", "x":8.25, "y":3}, - {"label":"M", "x":9.25, "y":3}, - {"label":",", "x":10.25, "y":3}, - {"label":".", "x":11.25, "y":3}, - {"label":"/", "x":12.25, "y":3}, - {"label":"Shift", "x":13.25, "y":3, "w":1.75}, - {"label":"Up", "x":15, "y":3}, - {"label":"Page Down", "x":16, "y":3}, - - {"label":"Ctrl", "x":0, "y":4, "w":1.25}, - {"label":"Alt", "x":1.25, "y":4, "w":1.25}, - {"label":"Win", "x":2.5, "y":4, "w":1.25}, - {"label":"Fn", "x":3.75, "y":4, "w":1.25}, - {"label":"Space", "x":5, "y":4, "w":2.25}, - - {"label":"Fn", "x":8.25, "y":4, "w":1.25}, - {"label":"Space", "x":9.5, "y":4, "w":1.5}, - {"label":"Alt", "x":11, "y":4}, - {"label":"Ctrl", "x":12, "y":4}, - {"label":"Win", "x":13, "y":4}, - {"label":"Left", "x":14, "y":4}, - {"label":"Down", "x":15, "y":4}, - {"label":"Right", "x":16, "y":4} - ] - }, - "LAYOUT_60_with_macro": { - "layout": [ - {"label":"F1", "x":0, "y":0}, - {"label":"F6", "x":1, "y":0}, - - {"label":"Esc", "x":2.25, "y":0}, - {"label":"1", "x":3.25, "y":0}, - {"label":"2", "x":4.25, "y":0}, - {"label":"3", "x":5.25, "y":0}, - {"label":"4", "x":6.25, "y":0}, - {"label":"5", "x":7.25, "y":0}, - {"label":"6", "x":8.25, "y":0}, - - {"label":"7", "x":10.25, "y":0}, - {"label":"8", "x":11.25, "y":0}, - {"label":"9", "x":12.25, "y":0}, - {"label":"0", "x":13.25, "y":0}, - {"label":"-", "x":14.25, "y":0}, - {"label":"=", "x":15.25, "y":0}, - {"label":"Del", "x":16.25, "y":0}, - {"label":"Bksp", "x":17.25, "y":0}, - - {"label":"F2", "x":0, "y":1}, - {"label":"F7", "x":1, "y":1}, - - {"label":"Tab", "x":2.25, "y":1, "w":1.5}, - {"label":"Q", "x":3.75, "y":1}, - {"label":"W", "x":4.75, "y":1}, - {"label":"E", "x":5.75, "y":1}, - {"label":"R", "x":6.75, "y":1}, - {"label":"T", "x":7.75, "y":1}, - - {"label":"Y", "x":9.75, "y":1}, - {"label":"U", "x":10.75, "y":1}, - {"label":"I", "x":11.75, "y":1}, - {"label":"O", "x":12.75, "y":1}, - {"label":"P", "x":13.75, "y":1}, - {"label":"{", "x":14.75, "y":1}, - {"label":"}", "x":15.75, "y":1}, - {"label":"Backslash", "x":16.75, "y":1, "w":1.5}, - - {"label":"F3", "x":0, "y":2}, - {"label":"F8", "x":1, "y":2}, - - {"label":"Caps Lock", "x":2.25, "y":2, "w":1.75}, - {"label":"A", "x":4, "y":2}, - {"label":"S", "x":5, "y":2}, - {"label":"D", "x":6, "y":2}, - {"label":"F", "x":7, "y":2}, - {"label":"G", "x":8, "y":2}, - - {"label":"H", "x":10, "y":2}, - {"label":"J", "x":11, "y":2}, - {"label":"K", "x":12, "y":2}, - {"label":"L", "x":13, "y":2}, - {"label":":", "x":14, "y":2}, - {"label":"\"", "x":15, "y":2}, - {"label":"Enter", "x":16, "y":2, "w":2.25}, - - {"label":"F4", "x":0, "y":3}, - {"label":"F9", "x":1, "y":3}, - - {"label":"Shift", "x":2.25, "y":3, "w":2.25}, - {"label":"Z", "x":4.5, "y":3}, - {"label":"X", "x":5.5, "y":3}, - {"label":"C", "x":6.5, "y":3}, - {"label":"V", "x":7.5, "y":3}, - {"label":"B", "x":8.5, "y":3}, - - {"label":"N", "x":10.5, "y":3}, - {"label":"M", "x":11.5, "y":3}, - {"label":",", "x":12.5, "y":3}, - {"label":".", "x":13.5, "y":3}, - {"label":"/", "x":14.5, "y":3}, - {"label":"Shift", "x":15.5, "y":3, "w":1.75}, - {"label":"Fn", "x":17.25, "y":3}, - - {"label":"F5", "x":0, "y":4}, - {"label":"F10", "x":1, "y":4}, - - {"label":"Ctrl", "x":2.25, "y":4, "w":1.25}, - {"label":"Win", "x":3.5, "y":4, "w":1.25}, - {"label":"Alt", "x":4.75, "y":4, "w":1.25}, - {"label":"Fn", "x":6, "y":4, "w":1.25}, - {"label":"Space", "x":7.25, "y":4, "w":2.25}, - - {"label":"Fn", "x":10.5, "y":4, "w":1.25}, - {"label":"Space", "x":11.75, "y":4, "w":1.5}, - {"label":"Alt", "x":13.25, "y":4}, - {"label":"Ctrl", "x":14.25, "y":4}, - {"label":"Left", "x":15.25, "y":4}, - {"label":"Down", "x":16.25, "y":4}, - {"label":"Right", "x":17.25, "y":4} - ] - }, - "LAYOUT_65_with_macro": { - "layout": [ - {"label":"F1", "x":0, "y":0}, - {"label":"F6", "x":1, "y":0}, - - {"label":"Esc", "x":2.25, "y":0}, - {"label":"1", "x":3.25, "y":0}, - {"label":"2", "x":4.25, "y":0}, - {"label":"3", "x":5.25, "y":0}, - {"label":"4", "x":6.25, "y":0}, - {"label":"5", "x":7.25, "y":0}, - {"label":"6", "x":8.25, "y":0}, - - {"label":"7", "x":10.25, "y":0}, - {"label":"8", "x":11.25, "y":0}, - {"label":"9", "x":12.25, "y":0}, - {"label":"0", "x":13.25, "y":0}, - {"label":"-", "x":14.25, "y":0}, - {"label":"=", "x":15.25, "y":0}, - {"label":"=", "x":16.25, "y":0}, - {"label":"Bksp", "x":17.25, "y":0}, - {"label":"Home", "x":18.25, "y":0}, - - {"label":"F2", "x":0, "y":1}, - {"label":"F7", "x":1, "y":1}, - - {"label":"Tab", "x":2.25, "y":1, "w":1.5}, - {"label":"Q", "x":3.75, "y":1}, - {"label":"W", "x":4.75, "y":1}, - {"label":"E", "x":5.75, "y":1}, - {"label":"R", "x":6.75, "y":1}, - {"label":"T", "x":7.75, "y":1}, - - {"label":"Y", "x":9.75, "y":1}, - {"label":"U", "x":10.75, "y":1}, - {"label":"I", "x":11.75, "y":1}, - {"label":"O", "x":12.75, "y":1}, - {"label":"P", "x":13.75, "y":1}, - {"label":"{", "x":14.75, "y":1}, - {"label":"}", "x":15.75, "y":1}, - {"label":"|", "x":16.75, "y":1, "w":1.5}, - {"label":"PgUp", "x":18.25, "y":1}, - - {"label":"F3", "x":0, "y":2}, - {"label":"F8", "x":1, "y":2}, - - {"label":"Caps Lock", "x":2.25, "y":2, "w":1.75}, - {"label":"A", "x":4, "y":2}, - {"label":"S", "x":5, "y":2}, - {"label":"D", "x":6, "y":2}, - {"label":"F", "x":7, "y":2}, - {"label":"G", "x":8, "y":2}, - - {"label":"H", "x":10, "y":2}, - {"label":"J", "x":11, "y":2}, - {"label":"K", "x":12, "y":2}, - {"label":"L", "x":13, "y":2}, - {"label":":", "x":14, "y":2}, - {"label":"\"", "x":15, "y":2}, - {"label":"Enter", "x":16, "y":2, "w":2.25}, - {"label":"PgDn", "x":18.25, "y":2}, - - {"label":"F4", "x":0, "y":3}, - {"label":"F9", "x":1, "y":3}, - - {"label":"Shift", "x":2.25, "y":3, "w":2.25}, - {"label":"Z", "x":4.5, "y":3}, - {"label":"X", "x":5.5, "y":3}, - {"label":"C", "x":6.5, "y":3}, - {"label":"V", "x":7.5, "y":3}, - {"label":"B", "x":8.5, "y":3}, - - {"label":"N", "x":10.5, "y":3}, - {"label":"M", "x":11.5, "y":3}, - {"label":",", "x":12.5, "y":3}, - {"label":".", "x":13.5, "y":3}, - {"label":"/", "x":14.5, "y":3}, - {"label":"Shift", "x":15.5, "y":3, "w":1.75}, - {"label":"Up", "x":17.25, "y":3}, - {"label":"End", "x":18.25, "y":3}, - - {"label":"F5", "x":0, "y":4}, - {"label":"F10", "x":1, "y":4}, - - {"label":"Ctrl", "x":2.25, "y":4, "w":1.25}, - {"label":"Win", "x":3.5, "y":4, "w":1.25}, - {"label":"Alt", "x":4.75, "y":4, "w":1.25}, - {"label":"Fn", "x":6, "y":4, "w":1.25}, - {"label":"Space", "x":7.25, "y":4, "w":2.25}, - - {"label":"Fn", "x":10.5, "y":4, "w":1.25}, - {"label":"Space", "x":11.75, "y":4, "w":1.5}, - {"label":"Alt", "x":13.25, "y":4}, - {"label":"Ctrl", "x":14.25, "y":4}, - {"label":"Win", "x":15.25, "y":4}, - {"label":"Left", "x":16.25, "y":4}, - {"label":"Down", "x":17.25, "y":4}, - {"label":"Right", "x":18.25, "y":4} - ] - } - } -} diff --git a/keyboards/keebio/quefrency/keymaps/bcat/config.h b/keyboards/keebio/quefrency/keymaps/bcat/config.h index 34387f2dd044..69771d36baac 100644 --- a/keyboards/keebio/quefrency/keymaps/bcat/config.h +++ b/keyboards/keebio/quefrency/keymaps/bcat/config.h @@ -1,10 +1,25 @@ +/* Copyright 2021 Jonathan Rascher + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #pragma once -/* - * Quefrency lacks I2C resistors on the right PCB, so the right half doesn't +/* Quefrency lacks I2C resistors on the right PCB, so the right half doesn't * work independently. (Presumably the floating I2C lines cause a problem.) - * Using serial seems sufficiently fast in practice and allows both halves to - * be used independently. + * Using serial seems sufficiently fast in practice and allows both halves to be + * used independently. */ #define USE_SERIAL @@ -14,4 +29,5 @@ /* Set up RGB lighting so it works with either side as master. */ #undef RGBLED_SPLIT -#define RGBLED_SPLIT { 8, 9 } +#define RGBLED_SPLIT \ + { 8, 9 } diff --git a/keyboards/keebio/quefrency/keymaps/bcat/keymap.c b/keyboards/keebio/quefrency/keymaps/bcat/keymap.c index e73022d9b606..d28a5083ac80 100644 --- a/keyboards/keebio/quefrency/keymaps/bcat/keymap.c +++ b/keyboards/keebio/quefrency/keymaps/bcat/keymap.c @@ -1,3 +1,19 @@ +/* Copyright 2021 Jonathan Rascher + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #include QMK_KEYBOARD_H enum layer { @@ -8,6 +24,7 @@ enum layer { #define LY_FN MO(LAYER_FUNCTION) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off /* Default layer: http://www.keyboard-layout-editor.com/#/gists/60a262432bb340b37d364a4424f3037b */ [LAYER_DEFAULT] = LAYOUT_65( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, KC_HOME, @@ -16,7 +33,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, KC_LCTL, KC_LGUI, KC_LALT, LY_FN, KC_SPC, KC_SPC, XXXXXXX, KC_RALT, LY_FN, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), - /* Function layer: http://www.keyboard-layout-editor.com/#/gists/59636898946da51f91fb290f8e078b4d */ [LAYER_FUNCTION] = LAYOUT_65( _______, 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, RGB_HUI, @@ -25,4 +41,5 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, KC_APP, _______, KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD ), + // clang-format on }; diff --git a/keyboards/keebio/quefrency/keymaps/bjohnson/rules.mk b/keyboards/keebio/quefrency/keymaps/bjohnson/rules.mk index 70fa7110092c..63121acd6b68 100644 --- a/keyboards/keebio/quefrency/keymaps/bjohnson/rules.mk +++ b/keyboards/keebio/quefrency/keymaps/bjohnson/rules.mk @@ -4,7 +4,7 @@ BOOTLOADER = atmel-dfu # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/keebio/quefrency/keymaps/georgepetri/keymap.c b/keyboards/keebio/quefrency/keymaps/georgepetri/keymap.c index 9ee3eb810221..a367e877fe4e 100644 --- a/keyboards/keebio/quefrency/keymaps/georgepetri/keymap.c +++ b/keyboards/keebio/quefrency/keymaps/georgepetri/keymap.c @@ -20,7 +20,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ KC_GRV ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_6 , KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_BSPC ,KC_DEL ,KC_MINS ,KC_EQL ,KC_HOME, // ├────────┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┘ ┌───┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┴────────┼────────┤ - KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T , KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_LBRC ,KC_RBRC ,KC_BSLS ,KC_END , + KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T , KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_LBRC ,KC_RBRC ,KC_BSLS ,KC_END , // ├─────────────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┐ └─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴────────────┼────────┤ KC_ESC ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_QUOT ,KC_ENT ,KC_PGUP , // ├───────────────┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┐ └─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴───────────────────┼────────┤ @@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_L] = LAYOUT_65( // ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ - _______ ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 , KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,_______ ,_______ ,_______ ,_______ ,KC_INS , + _______ ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 , KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,_______ ,_______ ,_______ ,_______ ,KC_INS , // ├────────┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┘ ┌───┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┴────────┼────────┤ _______ ,KC_F11 ,KC_F12 ,_______ ,_______ ,_______ , _______ ,KC_MINS ,KC_EQL ,_______ ,_______ ,_______ ,_______ ,_______, KC_PAUS , // ├─────────────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┐ └─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴────────────┼────────┤ @@ -46,7 +46,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_R] = LAYOUT_65( // ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ - _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , + _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , // ├────────┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┘ ┌───┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┴────────┼────────┤ _______ ,KC_TL ,KC_TR ,KC_TC ,KC_TRO ,_______ , _______ ,KC_TL , KC_TR , KC_TC , KC_TRO ,_______ ,_______ ,_______, _______ , // ├─────────────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┐ └─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴────────────┼────────┤ @@ -81,7 +81,7 @@ void update_led(void) { } } -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { update_led(); return state; } diff --git a/keyboards/keebio/quefrency/keymaps/jonavin/config.h b/keyboards/keebio/quefrency/keymaps/jonavin/config.h index 0e6f66d503da..b7883424bc56 100644 --- a/keyboards/keebio/quefrency/keymaps/jonavin/config.h +++ b/keyboards/keebio/quefrency/keymaps/jonavin/config.h @@ -35,3 +35,11 @@ along with this program. If not, see . //Always send Escape if Alt is pressed #define GRAVE_ESC_CTRL_OVERRIDE //Always send Escape if Control is pressed + +#define TAPPING_TERM 180 + +#ifdef RGBLIGHT_ENABLE + #define RGBLIGHT_LAYERS + #define RGBLIGHT_SLEEP +#endif // RGBLIGHT_ENABLE + diff --git a/keyboards/keebio/quefrency/keymaps/jonavin/keymap.c b/keyboards/keebio/quefrency/keymaps/jonavin/keymap.c index 6cea7338d31d..81b8497ca251 100644 --- a/keyboards/keebio/quefrency/keymaps/jonavin/keymap.c +++ b/keyboards/keebio/quefrency/keymaps/jonavin/keymap.c @@ -1,4 +1,4 @@ -/* Copyright 2021 Jonavin Eng +/* Copyright 2021 Jonavin Eng @Jonavin * * This 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,61 +16,33 @@ #include QMK_KEYBOARD_H +#include "jonavin.h" - -// Each layer gets a name for readability, which is then used in the keymap matrix below. -// The underscores don't mean anything - you can have a layer called STUFF or any other name. -// Layer names don't all need to be of the same length, obviously, and you can also skip them -// entirely and just use numbers. -enum custom_layers { - _BASE, - _FN1, - _MO2, - _MO3, -}; - - -enum custom_keycodes { - DOUBLEZERO = SAFE_RANGE, -}; - - - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case DOUBLEZERO: - if (record->event.pressed) { - // when keycode DOUBLEZERO is pressed - SEND_STRING("00"); - } else { - // when keycode DOUBLEZERO is released - } - break; - } - return true; -}; - +#ifdef RGBLIGHT_ENABLE + // Custom RGB Colours + #define RGB_GODSPEED 0x00, 0xE4, 0xFF // colour for matching keycaps +#endif // RGBLIGHT_ENABLE const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_BASE] = LAYOUT_65( 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_BSLS, KC_INS, KC_PSCR, 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_DEL, - TT(_MO2), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + TT(_LOWER), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFTCAPS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, KC_LCTL, KC_LGUI, KC_LALT, LT(_FN1, KC_SPC), KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(_FN1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), [_FN1] = LAYOUT_65( KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_CALC, KC_NO, - RGB_TOG, RGB_MOD, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_NO, KC_NO, KC_NO, KC_NO, KC_DEL, - KC_CAPS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_HOME, - KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, RCTL(KC_PGUP), KC_END, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_APP, RCTL(KC_LEFT), RCTL(KC_PGDN), RCTL(KC_RIGHT)), - [_MO2] = LAYOUT_65( - KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_P7, KC_P8, KC_P9, KC_P0, KC_PMNS, KC_PPLS, KC_PSLS, KC_PEQL, KC_TRNS, - KC_TAB, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_NO, KC_NO, KC_P4, KC_P5, KC_P6, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, - KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_NO, KC_TAB, KC_P1, KC_P2, KC_P3, KC_NO, KC_PAST, KC_PENT, KC_HOME, - KC_TRNS, KC_NO, KC_DEL, KC_INS, KC_NO, KC_NO, KC_NLCK, KC_P0, DOUBLEZERO, KC_PDOT, KC_PSLS, KC_TRNS, RCTL(KC_PGUP), KC_END, + RGB_TOG, RGB_MOD, RGB_VAI, KC_NO, KC_NO, KC_NO, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_NO, KC_NO, KC_NO, KC_NO, KC_DEL, + KC_CAPS, KC_NO, RGB_VAD, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_HOME, + KC_TRNS, KC_NO, RGB_HUI, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, RGB_MOD, KC_END, + KC_TRNS, KC_WINLCK, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_APP, RGB_SPD, RGB_RMOD, RGB_SPI), + [_LOWER] = LAYOUT_65( + KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_P7, KC_P8, KC_P9, KC_P0, KC_PMNS, KC_PPLS, KC_PSLS, KC_PEQL, KC_TRNS, + KC_TAB, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_NO, KC_NO, KC_P4, KC_P5, KC_P6, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_NO, KC_TAB, KC_P1, KC_P2, KC_P3, KC_NO, KC_PAST, KC_PENT, KC_HOME, + KC_TRNS, KC_NO, KC_DEL, KC_INS, KC_NO, KC_NO, KC_NLCK, KC_P0, KC_00, KC_PDOT, KC_PSLS, KC_TRNS, RCTL(KC_PGUP), KC_END, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RCTL(KC_LEFT), RCTL(KC_PGDN), RCTL(KC_RIGHT)), - [_MO3] = LAYOUT_65( + [_RAISE] = LAYOUT_65( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DOWN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -78,19 +50,103 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), }; -bool encoder_update_user(uint8_t index, bool clockwise) { - if (index == 0) { - if (clockwise) { - tap_code(KC_PGDN); - } else { - tap_code(KC_PGUP); - } - } else if (index == 1) { - if (clockwise) { - tap_code(KC_VOLU); - } else { - tap_code(KC_VOLD); + +bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { + // process_record_user() moved to userspace + return true; +}; + +#ifdef ENCODER_ENABLE // Encoder Functionality + bool encoder_update_user(uint8_t index, bool clockwise) { + uint8_t mods_state = get_mods(); + switch (index) { + case 0: // first encoder (Left Macro set) + encoder_action_navpage(clockwise); + break; + + default: // other encoder (Top right) + if (mods_state & MOD_BIT(KC_LSFT) ) { // If you are holding Left shift, change layers + encoder_action_layerchange(clockwise); + } else if (mods_state & MOD_BIT(KC_RSFT) ) { // If you are holding Right shift, Page up + unregister_mods(MOD_BIT(KC_RSFT)); + encoder_action_navpage(clockwise); + register_mods(MOD_BIT(KC_RSFT)); + } else if (mods_state & MOD_BIT(KC_LCTL)) { // if holding Left Ctrl, navigate next/prev word + encoder_action_navword(clockwise); + } else if (mods_state & MOD_BIT(KC_LALT)) { // if holding Left Alt, change media next/prev track + encoder_action_mediatrack(clockwise); + } else { + encoder_action_volume(clockwise); // Otherwise it just changes volume + } + break; } + return true; } - return true; +#endif + +#ifdef RGBLIGHT_ENABLE + + enum custom_rgblight_layers + { + _rgbCAPS, + _rgbNUMLOCK, + _rgbWINLOCK, + _rgbFN, + _rgbNUMPAD, + }; + + // RGB map LEFT 1, 2, 3, 12, 13, 14, 15, 0 RIGHT 7, 6, 5, 4, 11, 10, 9, 8 + const rgblight_segment_t PROGMEM _rgb_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {14, 1, HSV_RED} // Light 4 LEDs, starting with LED 6 + ); + const rgblight_segment_t PROGMEM _rgb_numlock_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {15, 1, HSV_BLUE} + ); const rgblight_segment_t PROGMEM _rgb_winlock_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {13, 1, HSV_PURPLE} // Light 4 LEDs, starting with LED 6 + ); + const rgblight_segment_t PROGMEM _rgb_fn_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {9, 2, HSV_ORANGE}, + {12, 2, HSV_ORANGE} + ); + // Light LEDs 9 & 10 in cyan when keyboard layer 1 is active + const rgblight_segment_t PROGMEM _rgb_numpad_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {4, 3, HSV_PURPLE}, + {9, 3, HSV_PURPLE} + ); + + const rgblight_segment_t* const PROGMEM _rgb_layers[] = RGBLIGHT_LAYERS_LIST( + _rgb_capslock_layer, + _rgb_numlock_layer, + _rgb_winlock_layer, + _rgb_fn_layer, + _rgb_numpad_layer + ); + + bool led_update_user(led_t led_state) { + rgblight_set_layer_state(_rgbCAPS, led_state.caps_lock); + + #ifdef INVERT_NUMLOCK_INDICATOR + rgblight_set_layer_state(_rgbNUMLOCK, !led_state.num_lock); // inverse numlock indicator override + #else + rgblight_set_layer_state(_rgbNUMLOCK, led_state.num_lock); // normal, light LED when numlock on + #endif // INVERT_NUMLOCK_INDICATOR + + rgblight_set_layer_state(_rgbWINLOCK, keymap_config.no_gui); + return true; + } + + layer_state_t layer_state_set_user(layer_state_t state) { + rgblight_set_layer_state(_rgbFN, layer_state_cmp(state, _FN1)); + rgblight_set_layer_state(_rgbNUMPAD, layer_state_cmp(state, _LOWER)); + return state; + } +#endif // RGBLIGHT_ENABLE + +void keyboard_post_init_keymap(void) { + // keyboard_post_init_user() moved to userspace + #ifdef RGBLIGHT_ENABLE + rgblight_mode(1); // single colour mode + rgblight_setrgb(RGB_GODSPEED); // Default startup colour + rgblight_layers = _rgb_layers; + #endif } diff --git a/keyboards/keebio/quefrency/keymaps/jonavin/readme.md b/keyboards/keebio/quefrency/keymaps/jonavin/readme.md index 325ab1af6657..dad817e8ec42 100644 --- a/keyboards/keebio/quefrency/keymaps/jonavin/readme.md +++ b/keyboards/keebio/quefrency/keymaps/jonavin/readme.md @@ -6,8 +6,33 @@ - Layer 2 provides arrows on WASD and additional nav keys + right hand numpad with 00 - ESC is set to GRAVESC (Esc when pressed, Shift-Esc is ~ and Win-ESC is `), plus handling for Ctrl-Shift-ESC to bring up Task Manager in Windows - Layer 2 left spacebar Backspace +- add double tap of Left Shift to toggle Caps Lock +- add Win Key lock function using Fn+Win +- additional encoder functionality + - holding L shift, Navigate page up/down + - holding Left Ctrl, navigate prev/next word + - holding Left Alt, change media prev/next track + - default is change volume +- RGB Functionality + - additional RGB function key binds to arrow on Fn layer + - Add capslock indicator, win key lock indicator + - Fn and layer 2 indicators using RGB underglow + - Inverted NUM lock indicator (light on when NUM lock is off when INVERT_NUMLOCK_INDICATOR = yes in rules.mk) + +rules.mk OPTIONS - Active features from userspace +STARTUP_NUMLOCK_ON = yes + - turns on NUMLOCK by default + +TD_LSFT_CAPSLOCK_ENABLE = yes + - This will enable double tap on Left Shift to toggle CAPSLOCK when using KC_LSFTCAPS ## All layers diagram -![image](https://user-images.githubusercontent.com/71780717/118903429-c52cc800-b8e5-11eb-9c45-3d9815a50123.png) +Default Layer +![image](https://user-images.githubusercontent.com/71780717/127251683-ad445b40-95a9-4d2a-b164-a96f3a13464e.png) + +MO(1) / FN layer +![image](https://user-images.githubusercontent.com/71780717/127251736-047f2f73-dfff-4fcc-bf0e-a5378e2fee08.png) +MO(2) / Numpad layer +![image](https://user-images.githubusercontent.com/71780717/127251985-4f564a56-8836-4db0-9cbd-ec859755a8d9.png) diff --git a/keyboards/keebio/quefrency/keymaps/jonavin/rules.mk b/keyboards/keebio/quefrency/keymaps/jonavin/rules.mk index 4b1bcabda81a..ac2865f60094 100644 --- a/keyboards/keebio/quefrency/keymaps/jonavin/rules.mk +++ b/keyboards/keebio/quefrency/keymaps/jonavin/rules.mk @@ -1,3 +1,10 @@ VIA_ENABLE = yes -CONSOLE_ENABLE = yes +CONSOLE_ENABLE = no LTO_ENABLE = yes + +MOUSEKEY_ENABLE = no +TAP_DANCE_ENABLE = yes + +TD_LSFT_CAPSLOCK_ENABLE = yes +STARTUP_NUMLOCK_ON = yes +INVERT_NUMLOCK_INDICATOR = yes diff --git a/keyboards/keebio/quefrency/keymaps/rogthefrog/config.h b/keyboards/keebio/quefrency/keymaps/rogthefrog/config.h index 583a363b91b1..2332c4f523b8 100644 --- a/keyboards/keebio/quefrency/keymaps/rogthefrog/config.h +++ b/keyboards/keebio/quefrency/keymaps/rogthefrog/config.h @@ -4,7 +4,7 @@ This is the c configuration file for the keymap Copyright 2012 Jun Wako Copyright 2015 Jack Humbert Copyright 2018 Danny Nguyen -Copyright 2020 Roger Billerey-Mosier +Copyright 2021 Roger Billerey-Mosier This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/keyboards/keebio/quefrency/keymaps/rogthefrog/keymap.c b/keyboards/keebio/quefrency/keymaps/rogthefrog/keymap.c index f4a306f70f57..0cc0cfe2b40b 100644 --- a/keyboards/keebio/quefrency/keymaps/rogthefrog/keymap.c +++ b/keyboards/keebio/quefrency/keymaps/rogthefrog/keymap.c @@ -1,5 +1,5 @@ /* - Copyright 2020 Roger Billerey-Mosier + Copyright 2021 Roger Billerey-Mosier This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -34,13 +34,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RCTL, KC_UP, KC_PGDN, - KC_LCTL, KC_LGUI, KC_LALT, KC_ENT, MO(_FN1), KC_SPC, KC_NO, KC_APP, KC_PSCR, KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT - ), + KC_LCTL, KC_LGUI, KC_LALT, KC_ENT, MO(_FN1), KC_SPC, KC_NO, LCTL(KC_C), LCTL(KC_V), KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT + ), [_FN1] = LAYOUT_65( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, _______, + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, KC_PSCR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, _______, + _______, _______, _______, _______, _______, KC_MPLY, _______, _______, _______, KC_MUTE, KC_MPRV, KC_VOLD, KC_MNXT ) }; diff --git a/keyboards/keebio/quefrency/keymaps/via/rules.mk b/keyboards/keebio/quefrency/keymaps/via/rules.mk index 4b1bcabda81a..36b7ba9cbc98 100644 --- a/keyboards/keebio/quefrency/keymaps/via/rules.mk +++ b/keyboards/keebio/quefrency/keymaps/via/rules.mk @@ -1,3 +1,2 @@ VIA_ENABLE = yes -CONSOLE_ENABLE = yes LTO_ENABLE = yes diff --git a/keyboards/keebio/quefrency/quefrency.h b/keyboards/keebio/quefrency/quefrency.h index bbd5ad699e15..2c77dc2ad382 100644 --- a/keyboards/keebio/quefrency/quefrency.h +++ b/keyboards/keebio/quefrency/quefrency.h @@ -11,3 +11,6 @@ #ifdef KEYBOARD_keebio_quefrency_rev3 #include "rev3.h" #endif +#ifdef KEYBOARD_keebio_quefrency_rev4 + #include "rev4.h" +#endif diff --git a/keyboards/keebio/quefrency/rev1/info.json b/keyboards/keebio/quefrency/rev1/info.json new file mode 100644 index 000000000000..1e50e2e6985b --- /dev/null +++ b/keyboards/keebio/quefrency/rev1/info.json @@ -0,0 +1,470 @@ +{ + "keyboard_name": "Quefrency rev1", + "url": "https://keeb.io", + "maintainer": "nooges", + "layouts": { + "LAYOUT": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "1", "x": 1, "y": 0 }, + { "label": "2", "x": 2, "y": 0 }, + { "label": "3", "x": 3, "y": 0 }, + { "label": "4", "x": 4, "y": 0 }, + { "label": "5", "x": 5, "y": 0 }, + { "label": "6", "x": 6, "y": 0 }, + + { "label": "7", "x": 8, "y": 0 }, + { "label": "8", "x": 9, "y": 0 }, + { "label": "9", "x": 10, "y": 0 }, + { "label": "0", "x": 11, "y": 0 }, + { "label": "-", "x": 12, "y": 0 }, + { "label": "=", "x": 13, "y": 0 }, + { "label": "Del", "x": 14, "y": 0 }, + { "label": "Bksp", "x": 15, "y": 0 }, + + { "label": "Tab", "x": 0, "y": 1, "w": 1.5 }, + { "label": "Q", "x": 1.5, "y": 1 }, + { "label": "W", "x": 2.5, "y": 1 }, + { "label": "E", "x": 3.5, "y": 1 }, + { "label": "R", "x": 4.5, "y": 1 }, + { "label": "T", "x": 5.5, "y": 1 }, + + { "label": "Y", "x": 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": "Backslash", "x": 14.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": 7.75, "y": 2 }, + { "label": "J", "x": 8.75, "y": 2 }, + { "label": "K", "x": 9.75, "y": 2 }, + { "label": "L", "x": 10.75, "y": 2 }, + { "label": ";", "x": 11.75, "y": 2 }, + { "label": "'", "x": 12.75, "y": 2 }, + { "label": "Enter", "x": 13.75, "y": 2, "w": 2.25 }, + + { "label": "Shift", "x": 0, "y": 3, "w": 2.25 }, + { "label": "Z", "x": 2.25, "y": 3 }, + { "label": "X", "x": 3.25, "y": 3 }, + { "label": "C", "x": 4.25, "y": 3 }, + { "label": "V", "x": 5.25, "y": 3 }, + { "label": "B", "x": 6.25, "y": 3 }, + + { "label": "N", "x": 8.25, "y": 3 }, + { "label": "M", "x": 9.25, "y": 3 }, + { "label": ",", "x": 10.25, "y": 3 }, + { "label": ".", "x": 11.25, "y": 3 }, + { "label": "/", "x": 12.25, "y": 3 }, + { "label": "Shift", "x": 13.25, "y": 3, "w": 1.75 }, + { "label": "Up", "x": 15, "y": 3 }, + + { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 1.25, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 2.5, "y": 4, "w": 1.25 }, + { "label": "Fn", "x": 3.75, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 5, "y": 4, "w": 2.25 }, + + { "label": "Fn", "x": 8.25, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 9.5, "y": 4, "w": 1.5 }, + { "label": "Alt", "x": 11, "y": 4 }, + { "label": "Ctrl", "x": 12, "y": 4 }, + { "label": "Left", "x": 13, "y": 4 }, + { "label": "Down", "x": 14, "y": 4 }, + { "label": "Right", "x": 15, "y": 4 } + ] + }, + "LAYOUT_65": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "1", "x": 1, "y": 0 }, + { "label": "2", "x": 2, "y": 0 }, + { "label": "3", "x": 3, "y": 0 }, + { "label": "4", "x": 4, "y": 0 }, + { "label": "5", "x": 5, "y": 0 }, + { "label": "6", "x": 6, "y": 0 }, + + { "label": "7", "x": 8, "y": 0 }, + { "label": "8", "x": 9, "y": 0 }, + { "label": "9", "x": 10, "y": 0 }, + { "label": "0", "x": 11, "y": 0 }, + { "label": "-", "x": 12, "y": 0 }, + { "label": "=", "x": 13, "y": 0 }, + { "label": "Del", "x": 14, "y": 0 }, + { "label": "Bksp", "x": 15, "y": 0 }, + { "label": "Home", "x": 16, "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": 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": "Backslash", "x": 14.5, "y": 1, "w": 1.5 }, + { "label": "End", "x": 16, "y": 1 }, + + { "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 }, + { "label": "A", "x": 1.75, "y": 2 }, + { "label": "S", "x": 2.75, "y": 2 }, + { "label": "D", "x": 3.75, "y": 2 }, + { "label": "F", "x": 4.75, "y": 2 }, + { "label": "G", "x": 5.75, "y": 2 }, + + { "label": "H", "x": 7.75, "y": 2 }, + { "label": "J", "x": 8.75, "y": 2 }, + { "label": "K", "x": 9.75, "y": 2 }, + { "label": "L", "x": 10.75, "y": 2 }, + { "label": ";", "x": 11.75, "y": 2 }, + { "label": "'", "x": 12.75, "y": 2 }, + { "label": "Enter", "x": 13.75, "y": 2, "w": 2.25 }, + { "label": "Page Up", "x": 16, "y": 2 }, + + { "label": "Shift", "x": 0, "y": 3, "w": 2.25 }, + { "label": "Z", "x": 2.25, "y": 3 }, + { "label": "X", "x": 3.25, "y": 3 }, + { "label": "C", "x": 4.25, "y": 3 }, + { "label": "V", "x": 5.25, "y": 3 }, + { "label": "B", "x": 6.25, "y": 3 }, + + { "label": "N", "x": 8.25, "y": 3 }, + { "label": "M", "x": 9.25, "y": 3 }, + { "label": ",", "x": 10.25, "y": 3 }, + { "label": ".", "x": 11.25, "y": 3 }, + { "label": "/", "x": 12.25, "y": 3 }, + { "label": "Shift", "x": 13.25, "y": 3, "w": 1.75 }, + { "label": "Up", "x": 15, "y": 3 }, + { "label": "Page Down", "x": 16, "y": 3 }, + + { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 1.25, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 2.5, "y": 4, "w": 1.25 }, + { "label": "Fn", "x": 3.75, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 5, "y": 4, "w": 2.25 }, + + { "label": "Fn", "x": 8.25, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 9.5, "y": 4, "w": 1.5 }, + { "label": "Alt", "x": 11, "y": 4 }, + { "label": "Ctrl", "x": 12, "y": 4 }, + { "label": "Win", "x": 13, "y": 4 }, + { "label": "Left", "x": 14, "y": 4 }, + { "label": "Down", "x": 15, "y": 4 }, + { "label": "Right", "x": 16, "y": 4 } + ] + }, + "LAYOUT_60_with_macro": { + "layout": [ + { "label": "F1", "x": 0, "y": 0 }, + { "label": "F6", "x": 1, "y": 0 }, + + { "label": "Esc", "x": 2.25, "y": 0 }, + { "label": "1", "x": 3.25, "y": 0 }, + { "label": "2", "x": 4.25, "y": 0 }, + { "label": "3", "x": 5.25, "y": 0 }, + { "label": "4", "x": 6.25, "y": 0 }, + { "label": "5", "x": 7.25, "y": 0 }, + { "label": "6", "x": 8.25, "y": 0 }, + + { "label": "7", "x": 10.25, "y": 0 }, + { "label": "8", "x": 11.25, "y": 0 }, + { "label": "9", "x": 12.25, "y": 0 }, + { "label": "0", "x": 13.25, "y": 0 }, + { "label": "-", "x": 14.25, "y": 0 }, + { "label": "=", "x": 15.25, "y": 0 }, + { "label": "Del", "x": 16.25, "y": 0 }, + { "label": "Bksp", "x": 17.25, "y": 0 }, + + { "label": "F2", "x": 0, "y": 1 }, + { "label": "F7", "x": 1, "y": 1 }, + + { "label": "Tab", "x": 2.25, "y": 1, "w": 1.5 }, + { "label": "Q", "x": 3.75, "y": 1 }, + { "label": "W", "x": 4.75, "y": 1 }, + { "label": "E", "x": 5.75, "y": 1 }, + { "label": "R", "x": 6.75, "y": 1 }, + { "label": "T", "x": 7.75, "y": 1 }, + + { "label": "Y", "x": 9.75, "y": 1 }, + { "label": "U", "x": 10.75, "y": 1 }, + { "label": "I", "x": 11.75, "y": 1 }, + { "label": "O", "x": 12.75, "y": 1 }, + { "label": "P", "x": 13.75, "y": 1 }, + { "label": "[", "x": 14.75, "y": 1 }, + { "label": "]", "x": 15.75, "y": 1 }, + { "label": "Backslash", "x": 16.75, "y": 1, "w": 1.5 }, + + { "label": "F3", "x": 0, "y": 2 }, + { "label": "F8", "x": 1, "y": 2 }, + + { "label": "Caps Lock", "x": 2.25, "y": 2, "w": 1.75 }, + { "label": "A", "x": 4, "y": 2 }, + { "label": "S", "x": 5, "y": 2 }, + { "label": "D", "x": 6, "y": 2 }, + { "label": "F", "x": 7, "y": 2 }, + { "label": "G", "x": 8, "y": 2 }, + + { "label": "H", "x": 10, "y": 2 }, + { "label": "J", "x": 11, "y": 2 }, + { "label": "K", "x": 12, "y": 2 }, + { "label": "L", "x": 13, "y": 2 }, + { "label": ";", "x": 14, "y": 2 }, + { "label": "'", "x": 15, "y": 2 }, + { "label": "Enter", "x": 16, "y": 2, "w": 2.25 }, + + { "label": "F4", "x": 0, "y": 3 }, + { "label": "F9", "x": 1, "y": 3 }, + + { "label": "Shift", "x": 2.25, "y": 3, "w": 2.25 }, + { "label": "Z", "x": 4.5, "y": 3 }, + { "label": "X", "x": 5.5, "y": 3 }, + { "label": "C", "x": 6.5, "y": 3 }, + { "label": "V", "x": 7.5, "y": 3 }, + { "label": "B", "x": 8.5, "y": 3 }, + + { "label": "N", "x": 10.5, "y": 3 }, + { "label": "M", "x": 11.5, "y": 3 }, + { "label": ",", "x": 12.5, "y": 3 }, + { "label": ".", "x": 13.5, "y": 3 }, + { "label": "/", "x": 14.5, "y": 3 }, + { "label": "Shift", "x": 15.5, "y": 3, "w": 1.75 }, + { "label": "Up", "x": 17.25, "y": 3 }, + + { "label": "F5", "x": 0, "y": 4 }, + { "label": "F10", "x": 1, "y": 4 }, + + { "label": "Ctrl", "x": 2.25, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 3.5, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 4.75, "y": 4, "w": 1.25 }, + { "label": "Fn", "x": 6, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 7.25, "y": 4, "w": 2.25 }, + + { "label": "Fn", "x": 10.5, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 11.75, "y": 4, "w": 1.5 }, + { "label": "Alt", "x": 13.25, "y": 4 }, + { "label": "Ctrl", "x": 14.25, "y": 4 }, + { "label": "Left", "x": 15.25, "y": 4 }, + { "label": "Down", "x": 16.25, "y": 4 }, + { "label": "Right", "x": 17.25, "y": 4 } + ] + }, + "LAYOUT_65_with_macro": { + "layout": [ + { "label": "F1", "x": 0, "y": 0 }, + { "label": "F6", "x": 1, "y": 0 }, + + { "label": "Esc", "x": 2.25, "y": 0 }, + { "label": "1", "x": 3.25, "y": 0 }, + { "label": "2", "x": 4.25, "y": 0 }, + { "label": "3", "x": 5.25, "y": 0 }, + { "label": "4", "x": 6.25, "y": 0 }, + { "label": "5", "x": 7.25, "y": 0 }, + { "label": "6", "x": 8.25, "y": 0 }, + + { "label": "7", "x": 10.25, "y": 0 }, + { "label": "8", "x": 11.25, "y": 0 }, + { "label": "9", "x": 12.25, "y": 0 }, + { "label": "0", "x": 13.25, "y": 0 }, + { "label": "-", "x": 14.25, "y": 0 }, + { "label": "=", "x": 15.25, "y": 0 }, + { "label": "Del", "x": 16.25, "y": 0 }, + { "label": "Bksp", "x": 17.25, "y": 0 }, + { "label": "Home", "x": 18.25, "y": 0 }, + + { "label": "F2", "x": 0, "y": 1 }, + { "label": "F7", "x": 1, "y": 1 }, + + { "label": "Tab", "x": 2.25, "y": 1, "w": 1.5 }, + { "label": "Q", "x": 3.75, "y": 1 }, + { "label": "W", "x": 4.75, "y": 1 }, + { "label": "E", "x": 5.75, "y": 1 }, + { "label": "R", "x": 6.75, "y": 1 }, + { "label": "T", "x": 7.75, "y": 1 }, + + { "label": "Y", "x": 9.75, "y": 1 }, + { "label": "U", "x": 10.75, "y": 1 }, + { "label": "I", "x": 11.75, "y": 1 }, + { "label": "O", "x": 12.75, "y": 1 }, + { "label": "P", "x": 13.75, "y": 1 }, + { "label": "[", "x": 14.75, "y": 1 }, + { "label": "]", "x": 15.75, "y": 1 }, + { "label": "Backslash", "x": 16.75, "y": 1, "w": 1.5 }, + { "label": "PgUp", "x": 18.25, "y": 1 }, + + { "label": "F3", "x": 0, "y": 2 }, + { "label": "F8", "x": 1, "y": 2 }, + + { "label": "Caps Lock", "x": 2.25, "y": 2, "w": 1.75 }, + { "label": "A", "x": 4, "y": 2 }, + { "label": "S", "x": 5, "y": 2 }, + { "label": "D", "x": 6, "y": 2 }, + { "label": "F", "x": 7, "y": 2 }, + { "label": "G", "x": 8, "y": 2 }, + + { "label": "H", "x": 10, "y": 2 }, + { "label": "J", "x": 11, "y": 2 }, + { "label": "K", "x": 12, "y": 2 }, + { "label": "L", "x": 13, "y": 2 }, + { "label": ";", "x": 14, "y": 2 }, + { "label": "'", "x": 15, "y": 2 }, + { "label": "Enter", "x": 16, "y": 2, "w": 2.25 }, + { "label": "PgDn", "x": 18.25, "y": 2 }, + + { "label": "F4", "x": 0, "y": 3 }, + { "label": "F9", "x": 1, "y": 3 }, + + { "label": "Shift", "x": 2.25, "y": 3, "w": 2.25 }, + { "label": "Z", "x": 4.5, "y": 3 }, + { "label": "X", "x": 5.5, "y": 3 }, + { "label": "C", "x": 6.5, "y": 3 }, + { "label": "V", "x": 7.5, "y": 3 }, + { "label": "B", "x": 8.5, "y": 3 }, + + { "label": "N", "x": 10.5, "y": 3 }, + { "label": "M", "x": 11.5, "y": 3 }, + { "label": ",", "x": 12.5, "y": 3 }, + { "label": ".", "x": 13.5, "y": 3 }, + { "label": "/", "x": 14.5, "y": 3 }, + { "label": "Shift", "x": 15.5, "y": 3, "w": 1.75 }, + { "label": "Up", "x": 17.25, "y": 3 }, + { "label": "End", "x": 18.25, "y": 3 }, + + { "label": "F5", "x": 0, "y": 4 }, + { "label": "F10", "x": 1, "y": 4 }, + + { "label": "Ctrl", "x": 2.25, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 3.5, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 4.75, "y": 4, "w": 1.25 }, + { "label": "Fn", "x": 6, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 7.25, "y": 4, "w": 2.25 }, + + { "label": "Fn", "x": 10.5, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 11.75, "y": 4, "w": 1.5 }, + { "label": "Alt", "x": 13.25, "y": 4 }, + { "label": "Ctrl", "x": 14.25, "y": 4 }, + { "label": "Win", "x": 15.25, "y": 4 }, + { "label": "Left", "x": 16.25, "y": 4 }, + { "label": "Down", "x": 17.25, "y": 4 }, + { "label": "Right", "x": 18.25, "y": 4 } + ] + }, + "LAYOUT_all": { + "layout": [ + { "label": "F1", "x": 0, "y": 0 }, + { "label": "F6", "x": 1, "y": 0 }, + + { "label": "Esc", "x": 2.25, "y": 0 }, + { "label": "1", "x": 3.25, "y": 0 }, + { "label": "2", "x": 4.25, "y": 0 }, + { "label": "3", "x": 5.25, "y": 0 }, + { "label": "4", "x": 6.25, "y": 0 }, + { "label": "5", "x": 7.25, "y": 0 }, + { "label": "6", "x": 8.25, "y": 0 }, + + { "label": "7", "x": 10.25, "y": 0 }, + { "label": "8", "x": 11.25, "y": 0 }, + { "label": "9", "x": 12.25, "y": 0 }, + { "label": "0", "x": 13.25, "y": 0 }, + { "label": "-", "x": 14.25, "y": 0 }, + { "label": "=", "x": 15.25, "y": 0 }, + { "label": "Del", "x": 16.25, "y": 0 }, + { "label": "Bksp", "x": 17.25, "y": 0 }, + { "label": "Home", "x": 18.25, "y": 0 }, + + { "label": "F2", "x": 0, "y": 1 }, + { "label": "F7", "x": 1, "y": 1 }, + + { "label": "Tab", "x": 2.25, "y": 1, "w": 1.5 }, + { "label": "Q", "x": 3.75, "y": 1 }, + { "label": "W", "x": 4.75, "y": 1 }, + { "label": "E", "x": 5.75, "y": 1 }, + { "label": "R", "x": 6.75, "y": 1 }, + { "label": "T", "x": 7.75, "y": 1 }, + + { "label": "Y", "x": 9.75, "y": 1 }, + { "label": "U", "x": 10.75, "y": 1 }, + { "label": "I", "x": 11.75, "y": 1 }, + { "label": "O", "x": 12.75, "y": 1 }, + { "label": "P", "x": 13.75, "y": 1 }, + { "label": "[", "x": 14.75, "y": 1 }, + { "label": "]", "x": 15.75, "y": 1 }, + { "label": "Backslash", "x": 16.75, "y": 1, "w": 1.5 }, + { "label": "PgUp", "x": 18.25, "y": 1 }, + + { "label": "F3", "x": 0, "y": 2 }, + { "label": "F8", "x": 1, "y": 2 }, + + { "label": "Caps Lock", "x": 2.25, "y": 2, "w": 1.75 }, + { "label": "A", "x": 4, "y": 2 }, + { "label": "S", "x": 5, "y": 2 }, + { "label": "D", "x": 6, "y": 2 }, + { "label": "F", "x": 7, "y": 2 }, + { "label": "G", "x": 8, "y": 2 }, + + { "label": "H", "x": 10, "y": 2 }, + { "label": "J", "x": 11, "y": 2 }, + { "label": "K", "x": 12, "y": 2 }, + { "label": "L", "x": 13, "y": 2 }, + { "label": ";", "x": 14, "y": 2 }, + { "label": "'", "x": 15, "y": 2 }, + { "label": "NUHS", "x": 16, "y": 2 }, + { "label": "Enter", "x": 17, "y": 2, "w": 1.25 }, + { "label": "PgDn", "x": 18.25, "y": 2 }, + + { "label": "F4", "x": 0, "y": 3 }, + { "label": "F9", "x": 1, "y": 3 }, + + { "label": "Shift", "x": 2.25, "y": 3, "w": 1.25 }, + { "label": "NUBS", "x": 3.5, "y": 3 }, + { "label": "Z", "x": 4.5, "y": 3 }, + { "label": "X", "x": 5.5, "y": 3 }, + { "label": "C", "x": 6.5, "y": 3 }, + { "label": "V", "x": 7.5, "y": 3 }, + { "label": "B", "x": 8.5, "y": 3 }, + + { "label": "N", "x": 10.5, "y": 3 }, + { "label": "M", "x": 11.5, "y": 3 }, + { "label": ",", "x": 12.5, "y": 3 }, + { "label": ".", "x": 13.5, "y": 3 }, + { "label": "/", "x": 14.5, "y": 3 }, + { "label": "Shift", "x": 15.5, "y": 3, "w": 1.75 }, + { "label": "Up", "x": 17.25, "y": 3 }, + { "label": "End", "x": 18.25, "y": 3 }, + + { "label": "F5", "x": 0, "y": 4 }, + { "label": "F10", "x": 1, "y": 4 }, + + { "label": "Ctrl", "x": 2.25, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 3.5, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 4.75, "y": 4, "w": 1.25 }, + { "label": "Fn", "x": 6, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 7.25, "y": 4 }, + { "label": "Space", "x": 8.25, "y": 4, "w": 1.25 }, + + { "label": "Fn", "x": 10.5, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 11.75, "y": 4, "w": 1.5 }, + { "label": "Alt", "x": 13.25, "y": 4 }, + { "label": "Ctrl", "x": 14.25, "y": 4 }, + { "label": "Win", "x": 15.25, "y": 4 }, + { "label": "Left", "x": 16.25, "y": 4 }, + { "label": "Down", "x": 17.25, "y": 4 }, + { "label": "Right", "x": 18.25, "y": 4 } + ] + } + } +} diff --git a/keyboards/keebio/quefrency/rev2/config.h b/keyboards/keebio/quefrency/rev2/config.h index 31d37a783219..1fb689677583 100644 --- a/keyboards/keebio/quefrency/rev2/config.h +++ b/keyboards/keebio/quefrency/rev2/config.h @@ -51,11 +51,6 @@ along with this program. If not, see . /* serial.c configuration for split keyboard */ #define SOFT_SERIAL_PIN D0 -/* 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 - /* ws2812 RGB LED */ #define RGB_DI_PIN E6 #define RGBLIGHT_ANIMATIONS diff --git a/keyboards/keebio/quefrency/rev2/info.json b/keyboards/keebio/quefrency/rev2/info.json new file mode 100644 index 000000000000..120add8eaa2b --- /dev/null +++ b/keyboards/keebio/quefrency/rev2/info.json @@ -0,0 +1,837 @@ +{ + "keyboard_name": "Quefrency rev2", + "url": "https://keeb.io", + "maintainer": "nooges", + "layout_aliases": { + "LAYOUT": "LAYOUT_60" + }, + "layouts": { + "LAYOUT_60": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "1", "x": 1, "y": 0 }, + { "label": "2", "x": 2, "y": 0 }, + { "label": "3", "x": 3, "y": 0 }, + { "label": "4", "x": 4, "y": 0 }, + { "label": "5", "x": 5, "y": 0 }, + { "label": "6", "x": 6, "y": 0 }, + + { "label": "7", "x": 8, "y": 0 }, + { "label": "8", "x": 9, "y": 0 }, + { "label": "9", "x": 10, "y": 0 }, + { "label": "0", "x": 11, "y": 0 }, + { "label": "-", "x": 12, "y": 0 }, + { "label": "=", "x": 13, "y": 0 }, + { "label": "Del", "x": 14, "y": 0 }, + { "label": "Bksp", "x": 15, "y": 0 }, + + { "label": "Tab", "x": 0, "y": 1, "w": 1.5 }, + { "label": "Q", "x": 1.5, "y": 1 }, + { "label": "W", "x": 2.5, "y": 1 }, + { "label": "E", "x": 3.5, "y": 1 }, + { "label": "R", "x": 4.5, "y": 1 }, + { "label": "T", "x": 5.5, "y": 1 }, + + { "label": "Y", "x": 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": "Backslash", "x": 14.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": 7.75, "y": 2 }, + { "label": "J", "x": 8.75, "y": 2 }, + { "label": "K", "x": 9.75, "y": 2 }, + { "label": "L", "x": 10.75, "y": 2 }, + { "label": ";", "x": 11.75, "y": 2 }, + { "label": "'", "x": 12.75, "y": 2 }, + { "label": "Enter", "x": 13.75, "y": 2, "w": 2.25 }, + + { "label": "Shift", "x": 0, "y": 3, "w": 2.25 }, + { "label": "Z", "x": 2.25, "y": 3 }, + { "label": "X", "x": 3.25, "y": 3 }, + { "label": "C", "x": 4.25, "y": 3 }, + { "label": "V", "x": 5.25, "y": 3 }, + { "label": "B", "x": 6.25, "y": 3 }, + + { "label": "N", "x": 8.25, "y": 3 }, + { "label": "M", "x": 9.25, "y": 3 }, + { "label": ",", "x": 10.25, "y": 3 }, + { "label": ".", "x": 11.25, "y": 3 }, + { "label": "/", "x": 12.25, "y": 3 }, + { "label": "Shift", "x": 13.25, "y": 3, "w": 1.75 }, + { "label": "Up", "x": 15, "y": 3 }, + + { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 1.25, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 2.5, "y": 4, "w": 1.25 }, + { "label": "Fn", "x": 3.75, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 5, "y": 4, "w": 2.25 }, + + { "label": "Fn", "x": 8.25, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 9.5, "y": 4, "w": 1.5 }, + { "label": "Alt", "x": 11, "y": 4 }, + { "label": "Ctrl", "x": 12, "y": 4 }, + { "label": "Left", "x": 13, "y": 4 }, + { "label": "Down", "x": 14, "y": 4 }, + { "label": "Right", "x": 15, "y": 4 } + ] + }, + "LAYOUT_65": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "1", "x": 1, "y": 0 }, + { "label": "2", "x": 2, "y": 0 }, + { "label": "3", "x": 3, "y": 0 }, + { "label": "4", "x": 4, "y": 0 }, + { "label": "5", "x": 5, "y": 0 }, + { "label": "6", "x": 6, "y": 0 }, + + { "label": "7", "x": 8, "y": 0 }, + { "label": "8", "x": 9, "y": 0 }, + { "label": "9", "x": 10, "y": 0 }, + { "label": "0", "x": 11, "y": 0 }, + { "label": "-", "x": 12, "y": 0 }, + { "label": "=", "x": 13, "y": 0 }, + { "label": "Del", "x": 14, "y": 0 }, + { "label": "Bksp", "x": 15, "y": 0 }, + { "label": "Home", "x": 16, "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": 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": "Backslash", "x": 14.5, "y": 1, "w": 1.5 }, + { "label": "End", "x": 16, "y": 1 }, + + { "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 }, + { "label": "A", "x": 1.75, "y": 2 }, + { "label": "S", "x": 2.75, "y": 2 }, + { "label": "D", "x": 3.75, "y": 2 }, + { "label": "F", "x": 4.75, "y": 2 }, + { "label": "G", "x": 5.75, "y": 2 }, + + { "label": "H", "x": 7.75, "y": 2 }, + { "label": "J", "x": 8.75, "y": 2 }, + { "label": "K", "x": 9.75, "y": 2 }, + { "label": "L", "x": 10.75, "y": 2 }, + { "label": ";", "x": 11.75, "y": 2 }, + { "label": "'", "x": 12.75, "y": 2 }, + { "label": "Enter", "x": 13.75, "y": 2, "w": 2.25 }, + { "label": "Page Up", "x": 16, "y": 2 }, + + { "label": "Shift", "x": 0, "y": 3, "w": 2.25 }, + { "label": "Z", "x": 2.25, "y": 3 }, + { "label": "X", "x": 3.25, "y": 3 }, + { "label": "C", "x": 4.25, "y": 3 }, + { "label": "V", "x": 5.25, "y": 3 }, + { "label": "B", "x": 6.25, "y": 3 }, + + { "label": "N", "x": 8.25, "y": 3 }, + { "label": "M", "x": 9.25, "y": 3 }, + { "label": ",", "x": 10.25, "y": 3 }, + { "label": ".", "x": 11.25, "y": 3 }, + { "label": "/", "x": 12.25, "y": 3 }, + { "label": "Shift", "x": 13.25, "y": 3, "w": 1.75 }, + { "label": "Up", "x": 15, "y": 3 }, + { "label": "Page Down", "x": 16, "y": 3 }, + + { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 1.25, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 2.5, "y": 4, "w": 1.25 }, + { "label": "Fn", "x": 3.75, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 5, "y": 4, "w": 2.25 }, + + { "label": "Fn", "x": 8.25, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 9.5, "y": 4, "w": 1.5 }, + { "label": "Alt", "x": 11, "y": 4 }, + { "label": "Ctrl", "x": 12, "y": 4 }, + { "label": "Win", "x": 13, "y": 4 }, + { "label": "Left", "x": 14, "y": 4 }, + { "label": "Down", "x": 15, "y": 4 }, + { "label": "Right", "x": 16, "y": 4 } + ] + }, + "LAYOUT_60_with_macro": { + "layout": [ + { "label": "F1", "x": 0, "y": 0 }, + { "label": "F6", "x": 1, "y": 0 }, + + { "label": "Esc", "x": 2.25, "y": 0 }, + { "label": "1", "x": 3.25, "y": 0 }, + { "label": "2", "x": 4.25, "y": 0 }, + { "label": "3", "x": 5.25, "y": 0 }, + { "label": "4", "x": 6.25, "y": 0 }, + { "label": "5", "x": 7.25, "y": 0 }, + { "label": "6", "x": 8.25, "y": 0 }, + + { "label": "7", "x": 10.25, "y": 0 }, + { "label": "8", "x": 11.25, "y": 0 }, + { "label": "9", "x": 12.25, "y": 0 }, + { "label": "0", "x": 13.25, "y": 0 }, + { "label": "-", "x": 14.25, "y": 0 }, + { "label": "=", "x": 15.25, "y": 0 }, + { "label": "Del", "x": 16.25, "y": 0 }, + { "label": "Bksp", "x": 17.25, "y": 0 }, + + { "label": "F2", "x": 0, "y": 1 }, + { "label": "F7", "x": 1, "y": 1 }, + + { "label": "Tab", "x": 2.25, "y": 1, "w": 1.5 }, + { "label": "Q", "x": 3.75, "y": 1 }, + { "label": "W", "x": 4.75, "y": 1 }, + { "label": "E", "x": 5.75, "y": 1 }, + { "label": "R", "x": 6.75, "y": 1 }, + { "label": "T", "x": 7.75, "y": 1 }, + + { "label": "Y", "x": 9.75, "y": 1 }, + { "label": "U", "x": 10.75, "y": 1 }, + { "label": "I", "x": 11.75, "y": 1 }, + { "label": "O", "x": 12.75, "y": 1 }, + { "label": "P", "x": 13.75, "y": 1 }, + { "label": "[", "x": 14.75, "y": 1 }, + { "label": "]", "x": 15.75, "y": 1 }, + { "label": "Backslash", "x": 16.75, "y": 1, "w": 1.5 }, + + { "label": "F3", "x": 0, "y": 2 }, + { "label": "F8", "x": 1, "y": 2 }, + + { "label": "Caps Lock", "x": 2.25, "y": 2, "w": 1.75 }, + { "label": "A", "x": 4, "y": 2 }, + { "label": "S", "x": 5, "y": 2 }, + { "label": "D", "x": 6, "y": 2 }, + { "label": "F", "x": 7, "y": 2 }, + { "label": "G", "x": 8, "y": 2 }, + + { "label": "H", "x": 10, "y": 2 }, + { "label": "J", "x": 11, "y": 2 }, + { "label": "K", "x": 12, "y": 2 }, + { "label": "L", "x": 13, "y": 2 }, + { "label": ";", "x": 14, "y": 2 }, + { "label": "'", "x": 15, "y": 2 }, + { "label": "Enter", "x": 16, "y": 2, "w": 2.25 }, + + { "label": "F4", "x": 0, "y": 3 }, + { "label": "F9", "x": 1, "y": 3 }, + + { "label": "Shift", "x": 2.25, "y": 3, "w": 2.25 }, + { "label": "Z", "x": 4.5, "y": 3 }, + { "label": "X", "x": 5.5, "y": 3 }, + { "label": "C", "x": 6.5, "y": 3 }, + { "label": "V", "x": 7.5, "y": 3 }, + { "label": "B", "x": 8.5, "y": 3 }, + + { "label": "N", "x": 10.5, "y": 3 }, + { "label": "M", "x": 11.5, "y": 3 }, + { "label": ",", "x": 12.5, "y": 3 }, + { "label": ".", "x": 13.5, "y": 3 }, + { "label": "/", "x": 14.5, "y": 3 }, + { "label": "Shift", "x": 15.5, "y": 3, "w": 1.75 }, + { "label": "Up", "x": 17.25, "y": 3 }, + + { "label": "F5", "x": 0, "y": 4 }, + { "label": "F10", "x": 1, "y": 4 }, + + { "label": "Ctrl", "x": 2.25, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 3.5, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 4.75, "y": 4, "w": 1.25 }, + { "label": "Fn", "x": 6, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 7.25, "y": 4, "w": 2.25 }, + + { "label": "Fn", "x": 10.5, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 11.75, "y": 4, "w": 1.5 }, + { "label": "Alt", "x": 13.25, "y": 4 }, + { "label": "Ctrl", "x": 14.25, "y": 4 }, + { "label": "Left", "x": 15.25, "y": 4 }, + { "label": "Down", "x": 16.25, "y": 4 }, + { "label": "Right", "x": 17.25, "y": 4 } + ] + }, + "LAYOUT_65_with_macro": { + "layout": [ + { "label": "F1", "x": 0, "y": 0 }, + { "label": "F6", "x": 1, "y": 0 }, + + { "label": "Esc", "x": 2.25, "y": 0 }, + { "label": "1", "x": 3.25, "y": 0 }, + { "label": "2", "x": 4.25, "y": 0 }, + { "label": "3", "x": 5.25, "y": 0 }, + { "label": "4", "x": 6.25, "y": 0 }, + { "label": "5", "x": 7.25, "y": 0 }, + { "label": "6", "x": 8.25, "y": 0 }, + + { "label": "7", "x": 10.25, "y": 0 }, + { "label": "8", "x": 11.25, "y": 0 }, + { "label": "9", "x": 12.25, "y": 0 }, + { "label": "0", "x": 13.25, "y": 0 }, + { "label": "-", "x": 14.25, "y": 0 }, + { "label": "=", "x": 15.25, "y": 0 }, + { "label": "Del", "x": 16.25, "y": 0 }, + { "label": "Bksp", "x": 17.25, "y": 0 }, + { "label": "Home", "x": 18.25, "y": 0 }, + + { "label": "F2", "x": 0, "y": 1 }, + { "label": "F7", "x": 1, "y": 1 }, + + { "label": "Tab", "x": 2.25, "y": 1, "w": 1.5 }, + { "label": "Q", "x": 3.75, "y": 1 }, + { "label": "W", "x": 4.75, "y": 1 }, + { "label": "E", "x": 5.75, "y": 1 }, + { "label": "R", "x": 6.75, "y": 1 }, + { "label": "T", "x": 7.75, "y": 1 }, + + { "label": "Y", "x": 9.75, "y": 1 }, + { "label": "U", "x": 10.75, "y": 1 }, + { "label": "I", "x": 11.75, "y": 1 }, + { "label": "O", "x": 12.75, "y": 1 }, + { "label": "P", "x": 13.75, "y": 1 }, + { "label": "[", "x": 14.75, "y": 1 }, + { "label": "]", "x": 15.75, "y": 1 }, + { "label": "Backslash", "x": 16.75, "y": 1, "w": 1.5 }, + { "label": "PgUp", "x": 18.25, "y": 1 }, + + { "label": "F3", "x": 0, "y": 2 }, + { "label": "F8", "x": 1, "y": 2 }, + + { "label": "Caps Lock", "x": 2.25, "y": 2, "w": 1.75 }, + { "label": "A", "x": 4, "y": 2 }, + { "label": "S", "x": 5, "y": 2 }, + { "label": "D", "x": 6, "y": 2 }, + { "label": "F", "x": 7, "y": 2 }, + { "label": "G", "x": 8, "y": 2 }, + + { "label": "H", "x": 10, "y": 2 }, + { "label": "J", "x": 11, "y": 2 }, + { "label": "K", "x": 12, "y": 2 }, + { "label": "L", "x": 13, "y": 2 }, + { "label": ";", "x": 14, "y": 2 }, + { "label": "'", "x": 15, "y": 2 }, + { "label": "Enter", "x": 16, "y": 2, "w": 2.25 }, + { "label": "PgDn", "x": 18.25, "y": 2 }, + + { "label": "F4", "x": 0, "y": 3 }, + { "label": "F9", "x": 1, "y": 3 }, + + { "label": "Shift", "x": 2.25, "y": 3, "w": 2.25 }, + { "label": "Z", "x": 4.5, "y": 3 }, + { "label": "X", "x": 5.5, "y": 3 }, + { "label": "C", "x": 6.5, "y": 3 }, + { "label": "V", "x": 7.5, "y": 3 }, + { "label": "B", "x": 8.5, "y": 3 }, + + { "label": "N", "x": 10.5, "y": 3 }, + { "label": "M", "x": 11.5, "y": 3 }, + { "label": ",", "x": 12.5, "y": 3 }, + { "label": ".", "x": 13.5, "y": 3 }, + { "label": "/", "x": 14.5, "y": 3 }, + { "label": "Shift", "x": 15.5, "y": 3, "w": 1.75 }, + { "label": "Up", "x": 17.25, "y": 3 }, + { "label": "End", "x": 18.25, "y": 3 }, + + { "label": "F5", "x": 0, "y": 4 }, + { "label": "F10", "x": 1, "y": 4 }, + + { "label": "Ctrl", "x": 2.25, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 3.5, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 4.75, "y": 4, "w": 1.25 }, + { "label": "Fn", "x": 6, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 7.25, "y": 4, "w": 2.25 }, + + { "label": "Fn", "x": 10.5, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 11.75, "y": 4, "w": 1.5 }, + { "label": "Alt", "x": 13.25, "y": 4 }, + { "label": "Ctrl", "x": 14.25, "y": 4 }, + { "label": "Win", "x": 15.25, "y": 4 }, + { "label": "Left", "x": 16.25, "y": 4 }, + { "label": "Down", "x": 17.25, "y": 4 }, + { "label": "Right", "x": 18.25, "y": 4 } + ] + }, + "LAYOUT_60_iso": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "1", "x": 1, "y": 0 }, + { "label": "2", "x": 2, "y": 0 }, + { "label": "3", "x": 3, "y": 0 }, + { "label": "4", "x": 4, "y": 0 }, + { "label": "5", "x": 5, "y": 0 }, + { "label": "6", "x": 6, "y": 0 }, + + { "label": "7", "x": 8, "y": 0 }, + { "label": "8", "x": 9, "y": 0 }, + { "label": "9", "x": 10, "y": 0 }, + { "label": "0", "x": 11, "y": 0 }, + { "label": "-", "x": 12, "y": 0 }, + { "label": "=", "x": 13, "y": 0 }, + { "label": "Del", "x": 14, "y": 0 }, + { "label": "Bksp", "x": 15, "y": 0 }, + + { "label": "Tab", "x": 0, "y": 1, "w": 1.5 }, + { "label": "Q", "x": 1.5, "y": 1 }, + { "label": "W", "x": 2.5, "y": 1 }, + { "label": "E", "x": 3.5, "y": 1 }, + { "label": "R", "x": 4.5, "y": 1 }, + { "label": "T", "x": 5.5, "y": 1 }, + + { "label": "Y", "x": 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": "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": 7.75, "y": 2 }, + { "label": "J", "x": 8.75, "y": 2 }, + { "label": "K", "x": 9.75, "y": 2 }, + { "label": "L", "x": 10.75, "y": 2 }, + { "label": ";", "x": 11.75, "y": 2 }, + { "label": "'", "x": 12.75, "y": 2 }, + { "label": "NUHS", "x": 13.75, "y": 2 }, + { "label": "Enter", "x": 14.75, "y": 1, "w": 1.25, "h": 2 }, + + { "label": "Shift", "x": 0, "y": 3, "w": 1.25 }, + { "label": "NUBS", "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.25, "y": 3 }, + { "label": "M", "x": 9.25, "y": 3 }, + { "label": ",", "x": 10.25, "y": 3 }, + { "label": ".", "x": 11.25, "y": 3 }, + { "label": "/", "x": 12.25, "y": 3 }, + { "label": "Shift", "x": 13.25, "y": 3, "w": 1.75 }, + { "label": "Up", "x": 15, "y": 3 }, + + { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 1.25, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 2.5, "y": 4, "w": 1.25 }, + { "label": "Fn", "x": 3.75, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 5, "y": 4, "w": 2.25 }, + + { "label": "Fn", "x": 8.25, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 9.5, "y": 4, "w": 1.5 }, + { "label": "Alt", "x": 11, "y": 4 }, + { "label": "Ctrl", "x": 12, "y": 4 }, + { "label": "Left", "x": 13, "y": 4 }, + { "label": "Down", "x": 14, "y": 4 }, + { "label": "Right", "x": 15, "y": 4 } + ] + }, + "LAYOUT_65_iso": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "1", "x": 1, "y": 0 }, + { "label": "2", "x": 2, "y": 0 }, + { "label": "3", "x": 3, "y": 0 }, + { "label": "4", "x": 4, "y": 0 }, + { "label": "5", "x": 5, "y": 0 }, + { "label": "6", "x": 6, "y": 0 }, + + { "label": "7", "x": 8, "y": 0 }, + { "label": "8", "x": 9, "y": 0 }, + { "label": "9", "x": 10, "y": 0 }, + { "label": "0", "x": 11, "y": 0 }, + { "label": "-", "x": 12, "y": 0 }, + { "label": "=", "x": 13, "y": 0 }, + { "label": "Del", "x": 14, "y": 0 }, + { "label": "Bksp", "x": 15, "y": 0 }, + { "label": "Home", "x": 16, "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": 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": "End", "x": 16, "y": 1 }, + + { "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 }, + { "label": "A", "x": 1.75, "y": 2 }, + { "label": "S", "x": 2.75, "y": 2 }, + { "label": "D", "x": 3.75, "y": 2 }, + { "label": "F", "x": 4.75, "y": 2 }, + { "label": "G", "x": 5.75, "y": 2 }, + + { "label": "H", "x": 7.75, "y": 2 }, + { "label": "J", "x": 8.75, "y": 2 }, + { "label": "K", "x": 9.75, "y": 2 }, + { "label": "L", "x": 10.75, "y": 2 }, + { "label": ";", "x": 11.75, "y": 2 }, + { "label": "'", "x": 12.75, "y": 2 }, + { "label": "NUHS", "x": 13.75, "y": 2 }, + { "label": "Enter", "x": 14.75, "y": 1, "w": 1.25, "h": 2 }, + { "label": "Page Up", "x": 16, "y": 2 }, + + { "label": "Shift", "x": 0, "y": 3, "w": 1.25 }, + { "label": "NUBS", "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.25, "y": 3 }, + { "label": "M", "x": 9.25, "y": 3 }, + { "label": ",", "x": 10.25, "y": 3 }, + { "label": ".", "x": 11.25, "y": 3 }, + { "label": "/", "x": 12.25, "y": 3 }, + { "label": "Shift", "x": 13.25, "y": 3, "w": 1.75 }, + { "label": "Up", "x": 15, "y": 3 }, + { "label": "Page Down", "x": 16, "y": 3 }, + + { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 1.25, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 2.5, "y": 4, "w": 1.25 }, + { "label": "Fn", "x": 3.75, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 5, "y": 4, "w": 2.25 }, + + { "label": "Fn", "x": 8.25, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 9.5, "y": 4, "w": 1.5 }, + { "label": "Alt", "x": 11, "y": 4 }, + { "label": "Ctrl", "x": 12, "y": 4 }, + { "label": "Win", "x": 13, "y": 4 }, + { "label": "Left", "x": 14, "y": 4 }, + { "label": "Down", "x": 15, "y": 4 }, + { "label": "Right", "x": 16, "y": 4 } + ] + }, + "LAYOUT_60_iso_with_macro": { + "layout": [ + { "label": "F1", "x": 0, "y": 0 }, + { "label": "F6", "x": 1, "y": 0 }, + + { "label": "Esc", "x": 2.25, "y": 0 }, + { "label": "1", "x": 3.25, "y": 0 }, + { "label": "2", "x": 4.25, "y": 0 }, + { "label": "3", "x": 5.25, "y": 0 }, + { "label": "4", "x": 6.25, "y": 0 }, + { "label": "5", "x": 7.25, "y": 0 }, + { "label": "6", "x": 8.25, "y": 0 }, + + { "label": "7", "x": 10.25, "y": 0 }, + { "label": "8", "x": 11.25, "y": 0 }, + { "label": "9", "x": 12.25, "y": 0 }, + { "label": "0", "x": 13.25, "y": 0 }, + { "label": "-", "x": 14.25, "y": 0 }, + { "label": "=", "x": 15.25, "y": 0 }, + { "label": "Del", "x": 16.25, "y": 0 }, + { "label": "Bksp", "x": 17.25, "y": 0 }, + + { "label": "F2", "x": 0, "y": 1 }, + { "label": "F7", "x": 1, "y": 1 }, + + { "label": "Tab", "x": 2.25, "y": 1, "w": 1.5 }, + { "label": "Q", "x": 3.75, "y": 1 }, + { "label": "W", "x": 4.75, "y": 1 }, + { "label": "E", "x": 5.75, "y": 1 }, + { "label": "R", "x": 6.75, "y": 1 }, + { "label": "T", "x": 7.75, "y": 1 }, + + { "label": "Y", "x": 9.75, "y": 1 }, + { "label": "U", "x": 10.75, "y": 1 }, + { "label": "I", "x": 11.75, "y": 1 }, + { "label": "O", "x": 12.75, "y": 1 }, + { "label": "P", "x": 13.75, "y": 1 }, + { "label": "[", "x": 14.75, "y": 1 }, + { "label": "]", "x": 15.75, "y": 1 }, + + { "label": "F3", "x": 0, "y": 2 }, + { "label": "F8", "x": 1, "y": 2 }, + + { "label": "Caps Lock", "x": 2.25, "y": 2, "w": 1.75 }, + { "label": "A", "x": 4, "y": 2 }, + { "label": "S", "x": 5, "y": 2 }, + { "label": "D", "x": 6, "y": 2 }, + { "label": "F", "x": 7, "y": 2 }, + { "label": "G", "x": 8, "y": 2 }, + + { "label": "H", "x": 10, "y": 2 }, + { "label": "J", "x": 11, "y": 2 }, + { "label": "K", "x": 12, "y": 2 }, + { "label": "L", "x": 13, "y": 2 }, + { "label": ";", "x": 14, "y": 2 }, + { "label": "'", "x": 15, "y": 2 }, + { "label": "NUHS", "x": 16, "y": 2 }, + { "label": "Enter", "x": 17, "y": 1, "w": 1.25, "h": 2 }, + + { "label": "F4", "x": 0, "y": 3 }, + { "label": "F9", "x": 1, "y": 3 }, + + { "label": "Shift", "x": 2.25, "y": 3, "w": 1.25 }, + { "label": "NUBS", "x": 3.5, "y": 3 }, + { "label": "Z", "x": 4.5, "y": 3 }, + { "label": "X", "x": 5.5, "y": 3 }, + { "label": "C", "x": 6.5, "y": 3 }, + { "label": "V", "x": 7.5, "y": 3 }, + { "label": "B", "x": 8.5, "y": 3 }, + + { "label": "N", "x": 10.5, "y": 3 }, + { "label": "M", "x": 11.5, "y": 3 }, + { "label": ",", "x": 12.5, "y": 3 }, + { "label": ".", "x": 13.5, "y": 3 }, + { "label": "/", "x": 14.5, "y": 3 }, + { "label": "Shift", "x": 15.5, "y": 3, "w": 1.75 }, + { "label": "Up", "x": 17.25, "y": 3 }, + + { "label": "F5", "x": 0, "y": 4 }, + { "label": "F10", "x": 1, "y": 4 }, + + { "label": "Ctrl", "x": 2.25, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 3.5, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 4.75, "y": 4, "w": 1.25 }, + { "label": "Fn", "x": 6, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 7.25, "y": 4, "w": 2.25 }, + + { "label": "Fn", "x": 10.5, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 11.75, "y": 4, "w": 1.5 }, + { "label": "Alt", "x": 13.25, "y": 4 }, + { "label": "Ctrl", "x": 14.25, "y": 4 }, + { "label": "Left", "x": 15.25, "y": 4 }, + { "label": "Down", "x": 16.25, "y": 4 }, + { "label": "Right", "x": 17.25, "y": 4 } + ] + }, + "LAYOUT_65_iso_with_macro": { + "layout": [ + { "label": "F1", "x": 0, "y": 0 }, + { "label": "F6", "x": 1, "y": 0 }, + + { "label": "Esc", "x": 2.25, "y": 0 }, + { "label": "1", "x": 3.25, "y": 0 }, + { "label": "2", "x": 4.25, "y": 0 }, + { "label": "3", "x": 5.25, "y": 0 }, + { "label": "4", "x": 6.25, "y": 0 }, + { "label": "5", "x": 7.25, "y": 0 }, + { "label": "6", "x": 8.25, "y": 0 }, + + { "label": "7", "x": 10.25, "y": 0 }, + { "label": "8", "x": 11.25, "y": 0 }, + { "label": "9", "x": 12.25, "y": 0 }, + { "label": "0", "x": 13.25, "y": 0 }, + { "label": "-", "x": 14.25, "y": 0 }, + { "label": "=", "x": 15.25, "y": 0 }, + { "label": "Del", "x": 16.25, "y": 0 }, + { "label": "Bksp", "x": 17.25, "y": 0 }, + { "label": "Home", "x": 18.25, "y": 0 }, + + { "label": "F2", "x": 0, "y": 1 }, + { "label": "F7", "x": 1, "y": 1 }, + + { "label": "Tab", "x": 2.25, "y": 1, "w": 1.5 }, + { "label": "Q", "x": 3.75, "y": 1 }, + { "label": "W", "x": 4.75, "y": 1 }, + { "label": "E", "x": 5.75, "y": 1 }, + { "label": "R", "x": 6.75, "y": 1 }, + { "label": "T", "x": 7.75, "y": 1 }, + + { "label": "Y", "x": 9.75, "y": 1 }, + { "label": "U", "x": 10.75, "y": 1 }, + { "label": "I", "x": 11.75, "y": 1 }, + { "label": "O", "x": 12.75, "y": 1 }, + { "label": "P", "x": 13.75, "y": 1 }, + { "label": "[", "x": 14.75, "y": 1 }, + { "label": "]", "x": 15.75, "y": 1 }, + { "label": "PgUp", "x": 18.25, "y": 1 }, + + { "label": "F3", "x": 0, "y": 2 }, + { "label": "F8", "x": 1, "y": 2 }, + + { "label": "Caps Lock", "x": 2.25, "y": 2, "w": 1.75 }, + { "label": "A", "x": 4, "y": 2 }, + { "label": "S", "x": 5, "y": 2 }, + { "label": "D", "x": 6, "y": 2 }, + { "label": "F", "x": 7, "y": 2 }, + { "label": "G", "x": 8, "y": 2 }, + + { "label": "H", "x": 10, "y": 2 }, + { "label": "J", "x": 11, "y": 2 }, + { "label": "K", "x": 12, "y": 2 }, + { "label": "L", "x": 13, "y": 2 }, + { "label": ";", "x": 14, "y": 2 }, + { "label": "'", "x": 15, "y": 2 }, + { "label": "NUHS", "x": 16, "y": 2 }, + { "label": "Enter", "x": 17, "y": 1, "w": 1.25, "h": 2 }, + { "label": "PgDn", "x": 18.25, "y": 2 }, + + { "label": "F4", "x": 0, "y": 3 }, + { "label": "F9", "x": 1, "y": 3 }, + + { "label": "Shift", "x": 2.25, "y": 3, "w": 1.25 }, + { "label": "NUBS", "x": 3.5, "y": 3 }, + { "label": "Z", "x": 4.5, "y": 3 }, + { "label": "X", "x": 5.5, "y": 3 }, + { "label": "C", "x": 6.5, "y": 3 }, + { "label": "V", "x": 7.5, "y": 3 }, + { "label": "B", "x": 8.5, "y": 3 }, + + { "label": "N", "x": 10.5, "y": 3 }, + { "label": "M", "x": 11.5, "y": 3 }, + { "label": ",", "x": 12.5, "y": 3 }, + { "label": ".", "x": 13.5, "y": 3 }, + { "label": "/", "x": 14.5, "y": 3 }, + { "label": "Shift", "x": 15.5, "y": 3, "w": 1.75 }, + { "label": "Up", "x": 17.25, "y": 3 }, + { "label": "End", "x": 18.25, "y": 3 }, + + { "label": "F5", "x": 0, "y": 4 }, + { "label": "F10", "x": 1, "y": 4 }, + + { "label": "Ctrl", "x": 2.25, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 3.5, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 4.75, "y": 4, "w": 1.25 }, + { "label": "Fn", "x": 6, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 7.25, "y": 4, "w": 2.25 }, + + { "label": "Fn", "x": 10.5, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 11.75, "y": 4, "w": 1.5 }, + { "label": "Alt", "x": 13.25, "y": 4 }, + { "label": "Ctrl", "x": 14.25, "y": 4 }, + { "label": "Win", "x": 15.25, "y": 4 }, + { "label": "Left", "x": 16.25, "y": 4 }, + { "label": "Down", "x": 17.25, "y": 4 }, + { "label": "Right", "x": 18.25, "y": 4 } + ] + }, + "LAYOUT_all": { + "layout": [ + { "label": "F1", "x": 0, "y": 0 }, + { "label": "F6", "x": 1, "y": 0 }, + + { "label": "Esc", "x": 2.25, "y": 0 }, + { "label": "1", "x": 3.25, "y": 0 }, + { "label": "2", "x": 4.25, "y": 0 }, + { "label": "3", "x": 5.25, "y": 0 }, + { "label": "4", "x": 6.25, "y": 0 }, + { "label": "5", "x": 7.25, "y": 0 }, + { "label": "6", "x": 8.25, "y": 0 }, + + { "label": "7", "x": 10.25, "y": 0 }, + { "label": "8", "x": 11.25, "y": 0 }, + { "label": "9", "x": 12.25, "y": 0 }, + { "label": "0", "x": 13.25, "y": 0 }, + { "label": "-", "x": 14.25, "y": 0 }, + { "label": "=", "x": 15.25, "y": 0 }, + { "label": "Del", "x": 16.25, "y": 0 }, + { "label": "Bksp", "x": 17.25, "y": 0 }, + { "label": "Home", "x": 18.25, "y": 0 }, + + { "label": "F2", "x": 0, "y": 1 }, + { "label": "F7", "x": 1, "y": 1 }, + + { "label": "Tab", "x": 2.25, "y": 1, "w": 1.5 }, + { "label": "Q", "x": 3.75, "y": 1 }, + { "label": "W", "x": 4.75, "y": 1 }, + { "label": "E", "x": 5.75, "y": 1 }, + { "label": "R", "x": 6.75, "y": 1 }, + { "label": "T", "x": 7.75, "y": 1 }, + + { "label": "Y", "x": 9.75, "y": 1 }, + { "label": "U", "x": 10.75, "y": 1 }, + { "label": "I", "x": 11.75, "y": 1 }, + { "label": "O", "x": 12.75, "y": 1 }, + { "label": "P", "x": 13.75, "y": 1 }, + { "label": "[", "x": 14.75, "y": 1 }, + { "label": "]", "x": 15.75, "y": 1 }, + { "label": "Backslash", "x": 16.75, "y": 1, "w": 1.5 }, + { "label": "PgUp", "x": 18.25, "y": 1 }, + + { "label": "F3", "x": 0, "y": 2 }, + { "label": "F8", "x": 1, "y": 2 }, + + { "label": "Caps Lock", "x": 2.25, "y": 2, "w": 1.75 }, + { "label": "A", "x": 4, "y": 2 }, + { "label": "S", "x": 5, "y": 2 }, + { "label": "D", "x": 6, "y": 2 }, + { "label": "F", "x": 7, "y": 2 }, + { "label": "G", "x": 8, "y": 2 }, + + { "label": "H", "x": 10, "y": 2 }, + { "label": "J", "x": 11, "y": 2 }, + { "label": "K", "x": 12, "y": 2 }, + { "label": "L", "x": 13, "y": 2 }, + { "label": ";", "x": 14, "y": 2 }, + { "label": "'", "x": 15, "y": 2 }, + { "label": "NUHS", "x": 16, "y": 2 }, + { "label": "Enter", "x": 17, "y": 2, "w": 1.25 }, + { "label": "PgDn", "x": 18.25, "y": 2 }, + + { "label": "F4", "x": 0, "y": 3 }, + { "label": "F9", "x": 1, "y": 3 }, + + { "label": "Shift", "x": 2.25, "y": 3, "w": 1.25 }, + { "label": "NUBS", "x": 3.5, "y": 3 }, + { "label": "Z", "x": 4.5, "y": 3 }, + { "label": "X", "x": 5.5, "y": 3 }, + { "label": "C", "x": 6.5, "y": 3 }, + { "label": "V", "x": 7.5, "y": 3 }, + { "label": "B", "x": 8.5, "y": 3 }, + + { "label": "N", "x": 10.5, "y": 3 }, + { "label": "M", "x": 11.5, "y": 3 }, + { "label": ",", "x": 12.5, "y": 3 }, + { "label": ".", "x": 13.5, "y": 3 }, + { "label": "/", "x": 14.5, "y": 3 }, + { "label": "Shift", "x": 15.5, "y": 3, "w": 1.75 }, + { "label": "Up", "x": 17.25, "y": 3 }, + { "label": "End", "x": 18.25, "y": 3 }, + + { "label": "F5", "x": 0, "y": 4 }, + { "label": "F10", "x": 1, "y": 4 }, + + { "label": "Ctrl", "x": 2.25, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 3.5, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 4.75, "y": 4, "w": 1.25 }, + { "label": "Fn", "x": 6, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 7.25, "y": 4 }, + { "label": "Space", "x": 8.25, "y": 4, "w": 1.25 }, + + { "label": "Fn", "x": 10.5, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 11.75, "y": 4, "w": 1.5 }, + { "label": "Alt", "x": 13.25, "y": 4 }, + { "label": "Ctrl", "x": 14.25, "y": 4 }, + { "label": "Win", "x": 15.25, "y": 4 }, + { "label": "Left", "x": 16.25, "y": 4 }, + { "label": "Down", "x": 17.25, "y": 4 }, + { "label": "Right", "x": 18.25, "y": 4 } + ] + } + } +} diff --git a/keyboards/keebio/quefrency/rev2/rev2.h b/keyboards/keebio/quefrency/rev2/rev2.h index b9c2ef6b448f..2f57ac489fd4 100644 --- a/keyboards/keebio/quefrency/rev2/rev2.h +++ b/keyboards/keebio/quefrency/rev2/rev2.h @@ -31,8 +31,6 @@ { RE1, RE2, RE3, RE4, RE5, KC_NO, RE7, RE8, KC_NO } \ } -#define LAYOUT LAYOUT_60 // For backwards compatibility with Rev. 1 - #define LAYOUT_65( \ LA3, LA4, LA5, LA6, LA7, LA8, LA9, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, RA9, \ LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9, \ diff --git a/keyboards/keebio/quefrency/rev3/config.h b/keyboards/keebio/quefrency/rev3/config.h index 5ab6d743fa13..2f1311e94316 100644 --- a/keyboards/keebio/quefrency/rev3/config.h +++ b/keyboards/keebio/quefrency/rev3/config.h @@ -51,11 +51,6 @@ along with this program. If not, see . /* serial.c configuration for split keyboard */ #define SOFT_SERIAL_PIN D0 -/* 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 - /* ws2812 RGB LED */ #define RGB_DI_PIN E6 #define RGBLIGHT_ANIMATIONS diff --git a/keyboards/keebio/quefrency/rev3/info.json b/keyboards/keebio/quefrency/rev3/info.json new file mode 100644 index 000000000000..5f59c90e80f8 --- /dev/null +++ b/keyboards/keebio/quefrency/rev3/info.json @@ -0,0 +1,837 @@ +{ + "keyboard_name": "Quefrency rev3", + "url": "https://keeb.io", + "maintainer": "nooges", + "layout_aliases": { + "LAYOUT": "LAYOUT_60" + }, + "layouts": { + "LAYOUT_60": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "1", "x": 1, "y": 0 }, + { "label": "2", "x": 2, "y": 0 }, + { "label": "3", "x": 3, "y": 0 }, + { "label": "4", "x": 4, "y": 0 }, + { "label": "5", "x": 5, "y": 0 }, + { "label": "6", "x": 6, "y": 0 }, + + { "label": "7", "x": 8, "y": 0 }, + { "label": "8", "x": 9, "y": 0 }, + { "label": "9", "x": 10, "y": 0 }, + { "label": "0", "x": 11, "y": 0 }, + { "label": "-", "x": 12, "y": 0 }, + { "label": "=", "x": 13, "y": 0 }, + { "label": "Del", "x": 14, "y": 0 }, + { "label": "Bksp", "x": 15, "y": 0 }, + + { "label": "Tab", "x": 0, "y": 1, "w": 1.5 }, + { "label": "Q", "x": 1.5, "y": 1 }, + { "label": "W", "x": 2.5, "y": 1 }, + { "label": "E", "x": 3.5, "y": 1 }, + { "label": "R", "x": 4.5, "y": 1 }, + { "label": "T", "x": 5.5, "y": 1 }, + + { "label": "Y", "x": 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": "Backslash", "x": 14.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": 7.75, "y": 2 }, + { "label": "J", "x": 8.75, "y": 2 }, + { "label": "K", "x": 9.75, "y": 2 }, + { "label": "L", "x": 10.75, "y": 2 }, + { "label": ";", "x": 11.75, "y": 2 }, + { "label": "'", "x": 12.75, "y": 2 }, + { "label": "Enter", "x": 13.75, "y": 2, "w": 2.25 }, + + { "label": "Shift", "x": 0, "y": 3, "w": 2.25 }, + { "label": "Z", "x": 2.25, "y": 3 }, + { "label": "X", "x": 3.25, "y": 3 }, + { "label": "C", "x": 4.25, "y": 3 }, + { "label": "V", "x": 5.25, "y": 3 }, + { "label": "B", "x": 6.25, "y": 3 }, + + { "label": "N", "x": 8.25, "y": 3 }, + { "label": "M", "x": 9.25, "y": 3 }, + { "label": ",", "x": 10.25, "y": 3 }, + { "label": ".", "x": 11.25, "y": 3 }, + { "label": "/", "x": 12.25, "y": 3 }, + { "label": "Shift", "x": 13.25, "y": 3, "w": 1.75 }, + { "label": "Up", "x": 15, "y": 3 }, + + { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 1.25, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 2.5, "y": 4, "w": 1.25 }, + { "label": "Fn", "x": 3.75, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 5, "y": 4, "w": 2.25 }, + + { "label": "Fn", "x": 8.25, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 9.5, "y": 4, "w": 1.5 }, + { "label": "Alt", "x": 11, "y": 4 }, + { "label": "Ctrl", "x": 12, "y": 4 }, + { "label": "Left", "x": 13, "y": 4 }, + { "label": "Down", "x": 14, "y": 4 }, + { "label": "Right", "x": 15, "y": 4 } + ] + }, + "LAYOUT_65": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "1", "x": 1, "y": 0 }, + { "label": "2", "x": 2, "y": 0 }, + { "label": "3", "x": 3, "y": 0 }, + { "label": "4", "x": 4, "y": 0 }, + { "label": "5", "x": 5, "y": 0 }, + { "label": "6", "x": 6, "y": 0 }, + + { "label": "7", "x": 8, "y": 0 }, + { "label": "8", "x": 9, "y": 0 }, + { "label": "9", "x": 10, "y": 0 }, + { "label": "0", "x": 11, "y": 0 }, + { "label": "-", "x": 12, "y": 0 }, + { "label": "=", "x": 13, "y": 0 }, + { "label": "Del", "x": 14, "y": 0 }, + { "label": "Bksp", "x": 15, "y": 0 }, + { "label": "Home", "x": 16, "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": 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": "Backslash", "x": 14.5, "y": 1, "w": 1.5 }, + { "label": "End", "x": 16, "y": 1 }, + + { "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 }, + { "label": "A", "x": 1.75, "y": 2 }, + { "label": "S", "x": 2.75, "y": 2 }, + { "label": "D", "x": 3.75, "y": 2 }, + { "label": "F", "x": 4.75, "y": 2 }, + { "label": "G", "x": 5.75, "y": 2 }, + + { "label": "H", "x": 7.75, "y": 2 }, + { "label": "J", "x": 8.75, "y": 2 }, + { "label": "K", "x": 9.75, "y": 2 }, + { "label": "L", "x": 10.75, "y": 2 }, + { "label": ";", "x": 11.75, "y": 2 }, + { "label": "'", "x": 12.75, "y": 2 }, + { "label": "Enter", "x": 13.75, "y": 2, "w": 2.25 }, + { "label": "Page Up", "x": 16, "y": 2 }, + + { "label": "Shift", "x": 0, "y": 3, "w": 2.25 }, + { "label": "Z", "x": 2.25, "y": 3 }, + { "label": "X", "x": 3.25, "y": 3 }, + { "label": "C", "x": 4.25, "y": 3 }, + { "label": "V", "x": 5.25, "y": 3 }, + { "label": "B", "x": 6.25, "y": 3 }, + + { "label": "N", "x": 8.25, "y": 3 }, + { "label": "M", "x": 9.25, "y": 3 }, + { "label": ",", "x": 10.25, "y": 3 }, + { "label": ".", "x": 11.25, "y": 3 }, + { "label": "/", "x": 12.25, "y": 3 }, + { "label": "Shift", "x": 13.25, "y": 3, "w": 1.75 }, + { "label": "Up", "x": 15, "y": 3 }, + { "label": "Page Down", "x": 16, "y": 3 }, + + { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 1.25, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 2.5, "y": 4, "w": 1.25 }, + { "label": "Fn", "x": 3.75, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 5, "y": 4, "w": 2.25 }, + + { "label": "Fn", "x": 8.25, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 9.5, "y": 4, "w": 1.5 }, + { "label": "Alt", "x": 11, "y": 4 }, + { "label": "Ctrl", "x": 12, "y": 4 }, + { "label": "Win", "x": 13, "y": 4 }, + { "label": "Left", "x": 14, "y": 4 }, + { "label": "Down", "x": 15, "y": 4 }, + { "label": "Right", "x": 16, "y": 4 } + ] + }, + "LAYOUT_60_with_macro": { + "layout": [ + { "label": "F1", "x": 0, "y": 0 }, + { "label": "F6", "x": 1, "y": 0 }, + + { "label": "Esc", "x": 2.25, "y": 0 }, + { "label": "1", "x": 3.25, "y": 0 }, + { "label": "2", "x": 4.25, "y": 0 }, + { "label": "3", "x": 5.25, "y": 0 }, + { "label": "4", "x": 6.25, "y": 0 }, + { "label": "5", "x": 7.25, "y": 0 }, + { "label": "6", "x": 8.25, "y": 0 }, + + { "label": "7", "x": 10.25, "y": 0 }, + { "label": "8", "x": 11.25, "y": 0 }, + { "label": "9", "x": 12.25, "y": 0 }, + { "label": "0", "x": 13.25, "y": 0 }, + { "label": "-", "x": 14.25, "y": 0 }, + { "label": "=", "x": 15.25, "y": 0 }, + { "label": "Del", "x": 16.25, "y": 0 }, + { "label": "Bksp", "x": 17.25, "y": 0 }, + + { "label": "F2", "x": 0, "y": 1 }, + { "label": "F7", "x": 1, "y": 1 }, + + { "label": "Tab", "x": 2.25, "y": 1, "w": 1.5 }, + { "label": "Q", "x": 3.75, "y": 1 }, + { "label": "W", "x": 4.75, "y": 1 }, + { "label": "E", "x": 5.75, "y": 1 }, + { "label": "R", "x": 6.75, "y": 1 }, + { "label": "T", "x": 7.75, "y": 1 }, + + { "label": "Y", "x": 9.75, "y": 1 }, + { "label": "U", "x": 10.75, "y": 1 }, + { "label": "I", "x": 11.75, "y": 1 }, + { "label": "O", "x": 12.75, "y": 1 }, + { "label": "P", "x": 13.75, "y": 1 }, + { "label": "[", "x": 14.75, "y": 1 }, + { "label": "]", "x": 15.75, "y": 1 }, + { "label": "Backslash", "x": 16.75, "y": 1, "w": 1.5 }, + + { "label": "F3", "x": 0, "y": 2 }, + { "label": "F8", "x": 1, "y": 2 }, + + { "label": "Caps Lock", "x": 2.25, "y": 2, "w": 1.75 }, + { "label": "A", "x": 4, "y": 2 }, + { "label": "S", "x": 5, "y": 2 }, + { "label": "D", "x": 6, "y": 2 }, + { "label": "F", "x": 7, "y": 2 }, + { "label": "G", "x": 8, "y": 2 }, + + { "label": "H", "x": 10, "y": 2 }, + { "label": "J", "x": 11, "y": 2 }, + { "label": "K", "x": 12, "y": 2 }, + { "label": "L", "x": 13, "y": 2 }, + { "label": ";", "x": 14, "y": 2 }, + { "label": "'", "x": 15, "y": 2 }, + { "label": "Enter", "x": 16, "y": 2, "w": 2.25 }, + + { "label": "F4", "x": 0, "y": 3 }, + { "label": "F9", "x": 1, "y": 3 }, + + { "label": "Shift", "x": 2.25, "y": 3, "w": 2.25 }, + { "label": "Z", "x": 4.5, "y": 3 }, + { "label": "X", "x": 5.5, "y": 3 }, + { "label": "C", "x": 6.5, "y": 3 }, + { "label": "V", "x": 7.5, "y": 3 }, + { "label": "B", "x": 8.5, "y": 3 }, + + { "label": "N", "x": 10.5, "y": 3 }, + { "label": "M", "x": 11.5, "y": 3 }, + { "label": ",", "x": 12.5, "y": 3 }, + { "label": ".", "x": 13.5, "y": 3 }, + { "label": "/", "x": 14.5, "y": 3 }, + { "label": "Shift", "x": 15.5, "y": 3, "w": 1.75 }, + { "label": "Up", "x": 17.25, "y": 3 }, + + { "label": "F5", "x": 0, "y": 4 }, + { "label": "F10", "x": 1, "y": 4 }, + + { "label": "Ctrl", "x": 2.25, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 3.5, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 4.75, "y": 4, "w": 1.25 }, + { "label": "Fn", "x": 6, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 7.25, "y": 4, "w": 2.25 }, + + { "label": "Fn", "x": 10.5, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 11.75, "y": 4, "w": 1.5 }, + { "label": "Alt", "x": 13.25, "y": 4 }, + { "label": "Ctrl", "x": 14.25, "y": 4 }, + { "label": "Left", "x": 15.25, "y": 4 }, + { "label": "Down", "x": 16.25, "y": 4 }, + { "label": "Right", "x": 17.25, "y": 4 } + ] + }, + "LAYOUT_65_with_macro": { + "layout": [ + { "label": "F1", "x": 0, "y": 0 }, + { "label": "F6", "x": 1, "y": 0 }, + + { "label": "Esc", "x": 2.25, "y": 0 }, + { "label": "1", "x": 3.25, "y": 0 }, + { "label": "2", "x": 4.25, "y": 0 }, + { "label": "3", "x": 5.25, "y": 0 }, + { "label": "4", "x": 6.25, "y": 0 }, + { "label": "5", "x": 7.25, "y": 0 }, + { "label": "6", "x": 8.25, "y": 0 }, + + { "label": "7", "x": 10.25, "y": 0 }, + { "label": "8", "x": 11.25, "y": 0 }, + { "label": "9", "x": 12.25, "y": 0 }, + { "label": "0", "x": 13.25, "y": 0 }, + { "label": "-", "x": 14.25, "y": 0 }, + { "label": "=", "x": 15.25, "y": 0 }, + { "label": "Del", "x": 16.25, "y": 0 }, + { "label": "Bksp", "x": 17.25, "y": 0 }, + { "label": "Home", "x": 18.25, "y": 0 }, + + { "label": "F2", "x": 0, "y": 1 }, + { "label": "F7", "x": 1, "y": 1 }, + + { "label": "Tab", "x": 2.25, "y": 1, "w": 1.5 }, + { "label": "Q", "x": 3.75, "y": 1 }, + { "label": "W", "x": 4.75, "y": 1 }, + { "label": "E", "x": 5.75, "y": 1 }, + { "label": "R", "x": 6.75, "y": 1 }, + { "label": "T", "x": 7.75, "y": 1 }, + + { "label": "Y", "x": 9.75, "y": 1 }, + { "label": "U", "x": 10.75, "y": 1 }, + { "label": "I", "x": 11.75, "y": 1 }, + { "label": "O", "x": 12.75, "y": 1 }, + { "label": "P", "x": 13.75, "y": 1 }, + { "label": "[", "x": 14.75, "y": 1 }, + { "label": "]", "x": 15.75, "y": 1 }, + { "label": "Backslash", "x": 16.75, "y": 1, "w": 1.5 }, + { "label": "PgUp", "x": 18.25, "y": 1 }, + + { "label": "F3", "x": 0, "y": 2 }, + { "label": "F8", "x": 1, "y": 2 }, + + { "label": "Caps Lock", "x": 2.25, "y": 2, "w": 1.75 }, + { "label": "A", "x": 4, "y": 2 }, + { "label": "S", "x": 5, "y": 2 }, + { "label": "D", "x": 6, "y": 2 }, + { "label": "F", "x": 7, "y": 2 }, + { "label": "G", "x": 8, "y": 2 }, + + { "label": "H", "x": 10, "y": 2 }, + { "label": "J", "x": 11, "y": 2 }, + { "label": "K", "x": 12, "y": 2 }, + { "label": "L", "x": 13, "y": 2 }, + { "label": ";", "x": 14, "y": 2 }, + { "label": "'", "x": 15, "y": 2 }, + { "label": "Enter", "x": 16, "y": 2, "w": 2.25 }, + { "label": "PgDn", "x": 18.25, "y": 2 }, + + { "label": "F4", "x": 0, "y": 3 }, + { "label": "F9", "x": 1, "y": 3 }, + + { "label": "Shift", "x": 2.25, "y": 3, "w": 2.25 }, + { "label": "Z", "x": 4.5, "y": 3 }, + { "label": "X", "x": 5.5, "y": 3 }, + { "label": "C", "x": 6.5, "y": 3 }, + { "label": "V", "x": 7.5, "y": 3 }, + { "label": "B", "x": 8.5, "y": 3 }, + + { "label": "N", "x": 10.5, "y": 3 }, + { "label": "M", "x": 11.5, "y": 3 }, + { "label": ",", "x": 12.5, "y": 3 }, + { "label": ".", "x": 13.5, "y": 3 }, + { "label": "/", "x": 14.5, "y": 3 }, + { "label": "Shift", "x": 15.5, "y": 3, "w": 1.75 }, + { "label": "Up", "x": 17.25, "y": 3 }, + { "label": "End", "x": 18.25, "y": 3 }, + + { "label": "F5", "x": 0, "y": 4 }, + { "label": "F10", "x": 1, "y": 4 }, + + { "label": "Ctrl", "x": 2.25, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 3.5, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 4.75, "y": 4, "w": 1.25 }, + { "label": "Fn", "x": 6, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 7.25, "y": 4, "w": 2.25 }, + + { "label": "Fn", "x": 10.5, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 11.75, "y": 4, "w": 1.5 }, + { "label": "Alt", "x": 13.25, "y": 4 }, + { "label": "Ctrl", "x": 14.25, "y": 4 }, + { "label": "Win", "x": 15.25, "y": 4 }, + { "label": "Left", "x": 16.25, "y": 4 }, + { "label": "Down", "x": 17.25, "y": 4 }, + { "label": "Right", "x": 18.25, "y": 4 } + ] + }, + "LAYOUT_60_iso": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "1", "x": 1, "y": 0 }, + { "label": "2", "x": 2, "y": 0 }, + { "label": "3", "x": 3, "y": 0 }, + { "label": "4", "x": 4, "y": 0 }, + { "label": "5", "x": 5, "y": 0 }, + { "label": "6", "x": 6, "y": 0 }, + + { "label": "7", "x": 8, "y": 0 }, + { "label": "8", "x": 9, "y": 0 }, + { "label": "9", "x": 10, "y": 0 }, + { "label": "0", "x": 11, "y": 0 }, + { "label": "-", "x": 12, "y": 0 }, + { "label": "=", "x": 13, "y": 0 }, + { "label": "Del", "x": 14, "y": 0 }, + { "label": "Bksp", "x": 15, "y": 0 }, + + { "label": "Tab", "x": 0, "y": 1, "w": 1.5 }, + { "label": "Q", "x": 1.5, "y": 1 }, + { "label": "W", "x": 2.5, "y": 1 }, + { "label": "E", "x": 3.5, "y": 1 }, + { "label": "R", "x": 4.5, "y": 1 }, + { "label": "T", "x": 5.5, "y": 1 }, + + { "label": "Y", "x": 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": "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": 7.75, "y": 2 }, + { "label": "J", "x": 8.75, "y": 2 }, + { "label": "K", "x": 9.75, "y": 2 }, + { "label": "L", "x": 10.75, "y": 2 }, + { "label": ";", "x": 11.75, "y": 2 }, + { "label": "'", "x": 12.75, "y": 2 }, + { "label": "NUHS", "x": 13.75, "y": 2 }, + { "label": "Enter", "x": 14.75, "y": 1, "w": 1.25, "h": 2 }, + + { "label": "Shift", "x": 0, "y": 3, "w": 1.25 }, + { "label": "NUBS", "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.25, "y": 3 }, + { "label": "M", "x": 9.25, "y": 3 }, + { "label": ",", "x": 10.25, "y": 3 }, + { "label": ".", "x": 11.25, "y": 3 }, + { "label": "/", "x": 12.25, "y": 3 }, + { "label": "Shift", "x": 13.25, "y": 3, "w": 1.75 }, + { "label": "Up", "x": 15, "y": 3 }, + + { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 1.25, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 2.5, "y": 4, "w": 1.25 }, + { "label": "Fn", "x": 3.75, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 5, "y": 4, "w": 2.25 }, + + { "label": "Fn", "x": 8.25, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 9.5, "y": 4, "w": 1.5 }, + { "label": "Alt", "x": 11, "y": 4 }, + { "label": "Ctrl", "x": 12, "y": 4 }, + { "label": "Left", "x": 13, "y": 4 }, + { "label": "Down", "x": 14, "y": 4 }, + { "label": "Right", "x": 15, "y": 4 } + ] + }, + "LAYOUT_65_iso": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "1", "x": 1, "y": 0 }, + { "label": "2", "x": 2, "y": 0 }, + { "label": "3", "x": 3, "y": 0 }, + { "label": "4", "x": 4, "y": 0 }, + { "label": "5", "x": 5, "y": 0 }, + { "label": "6", "x": 6, "y": 0 }, + + { "label": "7", "x": 8, "y": 0 }, + { "label": "8", "x": 9, "y": 0 }, + { "label": "9", "x": 10, "y": 0 }, + { "label": "0", "x": 11, "y": 0 }, + { "label": "-", "x": 12, "y": 0 }, + { "label": "=", "x": 13, "y": 0 }, + { "label": "Del", "x": 14, "y": 0 }, + { "label": "Bksp", "x": 15, "y": 0 }, + { "label": "Home", "x": 16, "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": 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": "End", "x": 16, "y": 1 }, + + { "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 }, + { "label": "A", "x": 1.75, "y": 2 }, + { "label": "S", "x": 2.75, "y": 2 }, + { "label": "D", "x": 3.75, "y": 2 }, + { "label": "F", "x": 4.75, "y": 2 }, + { "label": "G", "x": 5.75, "y": 2 }, + + { "label": "H", "x": 7.75, "y": 2 }, + { "label": "J", "x": 8.75, "y": 2 }, + { "label": "K", "x": 9.75, "y": 2 }, + { "label": "L", "x": 10.75, "y": 2 }, + { "label": ";", "x": 11.75, "y": 2 }, + { "label": "'", "x": 12.75, "y": 2 }, + { "label": "NUHS", "x": 13.75, "y": 2 }, + { "label": "Enter", "x": 14.75, "y": 1, "w": 1.25, "h": 2 }, + { "label": "Page Up", "x": 16, "y": 2 }, + + { "label": "Shift", "x": 0, "y": 3, "w": 1.25 }, + { "label": "NUBS", "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.25, "y": 3 }, + { "label": "M", "x": 9.25, "y": 3 }, + { "label": ",", "x": 10.25, "y": 3 }, + { "label": ".", "x": 11.25, "y": 3 }, + { "label": "/", "x": 12.25, "y": 3 }, + { "label": "Shift", "x": 13.25, "y": 3, "w": 1.75 }, + { "label": "Up", "x": 15, "y": 3 }, + { "label": "Page Down", "x": 16, "y": 3 }, + + { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 1.25, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 2.5, "y": 4, "w": 1.25 }, + { "label": "Fn", "x": 3.75, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 5, "y": 4, "w": 2.25 }, + + { "label": "Fn", "x": 8.25, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 9.5, "y": 4, "w": 1.5 }, + { "label": "Alt", "x": 11, "y": 4 }, + { "label": "Ctrl", "x": 12, "y": 4 }, + { "label": "Win", "x": 13, "y": 4 }, + { "label": "Left", "x": 14, "y": 4 }, + { "label": "Down", "x": 15, "y": 4 }, + { "label": "Right", "x": 16, "y": 4 } + ] + }, + "LAYOUT_60_iso_with_macro": { + "layout": [ + { "label": "F1", "x": 0, "y": 0 }, + { "label": "F6", "x": 1, "y": 0 }, + + { "label": "Esc", "x": 2.25, "y": 0 }, + { "label": "1", "x": 3.25, "y": 0 }, + { "label": "2", "x": 4.25, "y": 0 }, + { "label": "3", "x": 5.25, "y": 0 }, + { "label": "4", "x": 6.25, "y": 0 }, + { "label": "5", "x": 7.25, "y": 0 }, + { "label": "6", "x": 8.25, "y": 0 }, + + { "label": "7", "x": 10.25, "y": 0 }, + { "label": "8", "x": 11.25, "y": 0 }, + { "label": "9", "x": 12.25, "y": 0 }, + { "label": "0", "x": 13.25, "y": 0 }, + { "label": "-", "x": 14.25, "y": 0 }, + { "label": "=", "x": 15.25, "y": 0 }, + { "label": "Del", "x": 16.25, "y": 0 }, + { "label": "Bksp", "x": 17.25, "y": 0 }, + + { "label": "F2", "x": 0, "y": 1 }, + { "label": "F7", "x": 1, "y": 1 }, + + { "label": "Tab", "x": 2.25, "y": 1, "w": 1.5 }, + { "label": "Q", "x": 3.75, "y": 1 }, + { "label": "W", "x": 4.75, "y": 1 }, + { "label": "E", "x": 5.75, "y": 1 }, + { "label": "R", "x": 6.75, "y": 1 }, + { "label": "T", "x": 7.75, "y": 1 }, + + { "label": "Y", "x": 9.75, "y": 1 }, + { "label": "U", "x": 10.75, "y": 1 }, + { "label": "I", "x": 11.75, "y": 1 }, + { "label": "O", "x": 12.75, "y": 1 }, + { "label": "P", "x": 13.75, "y": 1 }, + { "label": "[", "x": 14.75, "y": 1 }, + { "label": "]", "x": 15.75, "y": 1 }, + + { "label": "F3", "x": 0, "y": 2 }, + { "label": "F8", "x": 1, "y": 2 }, + + { "label": "Caps Lock", "x": 2.25, "y": 2, "w": 1.75 }, + { "label": "A", "x": 4, "y": 2 }, + { "label": "S", "x": 5, "y": 2 }, + { "label": "D", "x": 6, "y": 2 }, + { "label": "F", "x": 7, "y": 2 }, + { "label": "G", "x": 8, "y": 2 }, + + { "label": "H", "x": 10, "y": 2 }, + { "label": "J", "x": 11, "y": 2 }, + { "label": "K", "x": 12, "y": 2 }, + { "label": "L", "x": 13, "y": 2 }, + { "label": ";", "x": 14, "y": 2 }, + { "label": "'", "x": 15, "y": 2 }, + { "label": "NUHS", "x": 16, "y": 2 }, + { "label": "Enter", "x": 17, "y": 1, "w": 1.25, "h": 2 }, + + { "label": "F4", "x": 0, "y": 3 }, + { "label": "F9", "x": 1, "y": 3 }, + + { "label": "Shift", "x": 2.25, "y": 3, "w": 1.25 }, + { "label": "NUBS", "x": 3.5, "y": 3 }, + { "label": "Z", "x": 4.5, "y": 3 }, + { "label": "X", "x": 5.5, "y": 3 }, + { "label": "C", "x": 6.5, "y": 3 }, + { "label": "V", "x": 7.5, "y": 3 }, + { "label": "B", "x": 8.5, "y": 3 }, + + { "label": "N", "x": 10.5, "y": 3 }, + { "label": "M", "x": 11.5, "y": 3 }, + { "label": ",", "x": 12.5, "y": 3 }, + { "label": ".", "x": 13.5, "y": 3 }, + { "label": "/", "x": 14.5, "y": 3 }, + { "label": "Shift", "x": 15.5, "y": 3, "w": 1.75 }, + { "label": "Up", "x": 17.25, "y": 3 }, + + { "label": "F5", "x": 0, "y": 4 }, + { "label": "F10", "x": 1, "y": 4 }, + + { "label": "Ctrl", "x": 2.25, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 3.5, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 4.75, "y": 4, "w": 1.25 }, + { "label": "Fn", "x": 6, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 7.25, "y": 4, "w": 2.25 }, + + { "label": "Fn", "x": 10.5, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 11.75, "y": 4, "w": 1.5 }, + { "label": "Alt", "x": 13.25, "y": 4 }, + { "label": "Ctrl", "x": 14.25, "y": 4 }, + { "label": "Left", "x": 15.25, "y": 4 }, + { "label": "Down", "x": 16.25, "y": 4 }, + { "label": "Right", "x": 17.25, "y": 4 } + ] + }, + "LAYOUT_65_iso_with_macro": { + "layout": [ + { "label": "F1", "x": 0, "y": 0 }, + { "label": "F6", "x": 1, "y": 0 }, + + { "label": "Esc", "x": 2.25, "y": 0 }, + { "label": "1", "x": 3.25, "y": 0 }, + { "label": "2", "x": 4.25, "y": 0 }, + { "label": "3", "x": 5.25, "y": 0 }, + { "label": "4", "x": 6.25, "y": 0 }, + { "label": "5", "x": 7.25, "y": 0 }, + { "label": "6", "x": 8.25, "y": 0 }, + + { "label": "7", "x": 10.25, "y": 0 }, + { "label": "8", "x": 11.25, "y": 0 }, + { "label": "9", "x": 12.25, "y": 0 }, + { "label": "0", "x": 13.25, "y": 0 }, + { "label": "-", "x": 14.25, "y": 0 }, + { "label": "=", "x": 15.25, "y": 0 }, + { "label": "Del", "x": 16.25, "y": 0 }, + { "label": "Bksp", "x": 17.25, "y": 0 }, + { "label": "Home", "x": 18.25, "y": 0 }, + + { "label": "F2", "x": 0, "y": 1 }, + { "label": "F7", "x": 1, "y": 1 }, + + { "label": "Tab", "x": 2.25, "y": 1, "w": 1.5 }, + { "label": "Q", "x": 3.75, "y": 1 }, + { "label": "W", "x": 4.75, "y": 1 }, + { "label": "E", "x": 5.75, "y": 1 }, + { "label": "R", "x": 6.75, "y": 1 }, + { "label": "T", "x": 7.75, "y": 1 }, + + { "label": "Y", "x": 9.75, "y": 1 }, + { "label": "U", "x": 10.75, "y": 1 }, + { "label": "I", "x": 11.75, "y": 1 }, + { "label": "O", "x": 12.75, "y": 1 }, + { "label": "P", "x": 13.75, "y": 1 }, + { "label": "[", "x": 14.75, "y": 1 }, + { "label": "]", "x": 15.75, "y": 1 }, + { "label": "PgUp", "x": 18.25, "y": 1 }, + + { "label": "F3", "x": 0, "y": 2 }, + { "label": "F8", "x": 1, "y": 2 }, + + { "label": "Caps Lock", "x": 2.25, "y": 2, "w": 1.75 }, + { "label": "A", "x": 4, "y": 2 }, + { "label": "S", "x": 5, "y": 2 }, + { "label": "D", "x": 6, "y": 2 }, + { "label": "F", "x": 7, "y": 2 }, + { "label": "G", "x": 8, "y": 2 }, + + { "label": "H", "x": 10, "y": 2 }, + { "label": "J", "x": 11, "y": 2 }, + { "label": "K", "x": 12, "y": 2 }, + { "label": "L", "x": 13, "y": 2 }, + { "label": ";", "x": 14, "y": 2 }, + { "label": "'", "x": 15, "y": 2 }, + { "label": "NUHS", "x": 16, "y": 2 }, + { "label": "Enter", "x": 17, "y": 1, "w": 1.25, "h": 2 }, + { "label": "PgDn", "x": 18.25, "y": 2 }, + + { "label": "F4", "x": 0, "y": 3 }, + { "label": "F9", "x": 1, "y": 3 }, + + { "label": "Shift", "x": 2.25, "y": 3, "w": 1.25 }, + { "label": "NUBS", "x": 3.5, "y": 3 }, + { "label": "Z", "x": 4.5, "y": 3 }, + { "label": "X", "x": 5.5, "y": 3 }, + { "label": "C", "x": 6.5, "y": 3 }, + { "label": "V", "x": 7.5, "y": 3 }, + { "label": "B", "x": 8.5, "y": 3 }, + + { "label": "N", "x": 10.5, "y": 3 }, + { "label": "M", "x": 11.5, "y": 3 }, + { "label": ",", "x": 12.5, "y": 3 }, + { "label": ".", "x": 13.5, "y": 3 }, + { "label": "/", "x": 14.5, "y": 3 }, + { "label": "Shift", "x": 15.5, "y": 3, "w": 1.75 }, + { "label": "Up", "x": 17.25, "y": 3 }, + { "label": "End", "x": 18.25, "y": 3 }, + + { "label": "F5", "x": 0, "y": 4 }, + { "label": "F10", "x": 1, "y": 4 }, + + { "label": "Ctrl", "x": 2.25, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 3.5, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 4.75, "y": 4, "w": 1.25 }, + { "label": "Fn", "x": 6, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 7.25, "y": 4, "w": 2.25 }, + + { "label": "Fn", "x": 10.5, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 11.75, "y": 4, "w": 1.5 }, + { "label": "Alt", "x": 13.25, "y": 4 }, + { "label": "Ctrl", "x": 14.25, "y": 4 }, + { "label": "Win", "x": 15.25, "y": 4 }, + { "label": "Left", "x": 16.25, "y": 4 }, + { "label": "Down", "x": 17.25, "y": 4 }, + { "label": "Right", "x": 18.25, "y": 4 } + ] + }, + "LAYOUT_all": { + "layout": [ + { "label": "F1", "x": 0, "y": 0 }, + { "label": "F6", "x": 1, "y": 0 }, + + { "label": "Esc", "x": 2.25, "y": 0 }, + { "label": "1", "x": 3.25, "y": 0 }, + { "label": "2", "x": 4.25, "y": 0 }, + { "label": "3", "x": 5.25, "y": 0 }, + { "label": "4", "x": 6.25, "y": 0 }, + { "label": "5", "x": 7.25, "y": 0 }, + { "label": "6", "x": 8.25, "y": 0 }, + + { "label": "7", "x": 10.25, "y": 0 }, + { "label": "8", "x": 11.25, "y": 0 }, + { "label": "9", "x": 12.25, "y": 0 }, + { "label": "0", "x": 13.25, "y": 0 }, + { "label": "-", "x": 14.25, "y": 0 }, + { "label": "=", "x": 15.25, "y": 0 }, + { "label": "Del", "x": 16.25, "y": 0 }, + { "label": "Bksp", "x": 17.25, "y": 0 }, + { "label": "Home", "x": 18.25, "y": 0 }, + + { "label": "F2", "x": 0, "y": 1 }, + { "label": "F7", "x": 1, "y": 1 }, + + { "label": "Tab", "x": 2.25, "y": 1, "w": 1.5 }, + { "label": "Q", "x": 3.75, "y": 1 }, + { "label": "W", "x": 4.75, "y": 1 }, + { "label": "E", "x": 5.75, "y": 1 }, + { "label": "R", "x": 6.75, "y": 1 }, + { "label": "T", "x": 7.75, "y": 1 }, + + { "label": "Y", "x": 9.75, "y": 1 }, + { "label": "U", "x": 10.75, "y": 1 }, + { "label": "I", "x": 11.75, "y": 1 }, + { "label": "O", "x": 12.75, "y": 1 }, + { "label": "P", "x": 13.75, "y": 1 }, + { "label": "[", "x": 14.75, "y": 1 }, + { "label": "]", "x": 15.75, "y": 1 }, + { "label": "Backslash", "x": 16.75, "y": 1, "w": 1.5 }, + { "label": "PgUp", "x": 18.25, "y": 1 }, + + { "label": "F3", "x": 0, "y": 2 }, + { "label": "F8", "x": 1, "y": 2 }, + + { "label": "Caps Lock", "x": 2.25, "y": 2, "w": 1.75 }, + { "label": "A", "x": 4, "y": 2 }, + { "label": "S", "x": 5, "y": 2 }, + { "label": "D", "x": 6, "y": 2 }, + { "label": "F", "x": 7, "y": 2 }, + { "label": "G", "x": 8, "y": 2 }, + + { "label": "H", "x": 10, "y": 2 }, + { "label": "J", "x": 11, "y": 2 }, + { "label": "K", "x": 12, "y": 2 }, + { "label": "L", "x": 13, "y": 2 }, + { "label": ";", "x": 14, "y": 2 }, + { "label": "'", "x": 15, "y": 2 }, + { "label": "NUHS", "x": 16, "y": 2 }, + { "label": "Enter", "x": 17, "y": 2, "w": 1.25 }, + { "label": "PgDn", "x": 18.25, "y": 2 }, + + { "label": "F4", "x": 0, "y": 3 }, + { "label": "F9", "x": 1, "y": 3 }, + + { "label": "Shift", "x": 2.25, "y": 3, "w": 1.25 }, + { "label": "NUBS", "x": 3.5, "y": 3 }, + { "label": "Z", "x": 4.5, "y": 3 }, + { "label": "X", "x": 5.5, "y": 3 }, + { "label": "C", "x": 6.5, "y": 3 }, + { "label": "V", "x": 7.5, "y": 3 }, + { "label": "B", "x": 8.5, "y": 3 }, + + { "label": "N", "x": 10.5, "y": 3 }, + { "label": "M", "x": 11.5, "y": 3 }, + { "label": ",", "x": 12.5, "y": 3 }, + { "label": ".", "x": 13.5, "y": 3 }, + { "label": "/", "x": 14.5, "y": 3 }, + { "label": "Shift", "x": 15.5, "y": 3, "w": 1.75 }, + { "label": "Up", "x": 17.25, "y": 3 }, + { "label": "End", "x": 18.25, "y": 3 }, + + { "label": "F5", "x": 0, "y": 4 }, + { "label": "F10", "x": 1, "y": 4 }, + + { "label": "Ctrl", "x": 2.25, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 3.5, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 4.75, "y": 4, "w": 1.25 }, + { "label": "Fn", "x": 6, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 7.25, "y": 4 }, + { "label": "Space", "x": 8.25, "y": 4, "w": 1.25 }, + + { "label": "Fn", "x": 10.5, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 11.75, "y": 4, "w": 1.5 }, + { "label": "Alt", "x": 13.25, "y": 4 }, + { "label": "Ctrl", "x": 14.25, "y": 4 }, + { "label": "Win", "x": 15.25, "y": 4 }, + { "label": "Left", "x": 16.25, "y": 4 }, + { "label": "Down", "x": 17.25, "y": 4 }, + { "label": "Right", "x": 18.25, "y": 4 } + ] + } + } +} diff --git a/keyboards/keebio/quefrency/rev3/rev3.c b/keyboards/keebio/quefrency/rev3/rev3.c index 63e67bf59c45..40771e2c68e1 100644 --- a/keyboards/keebio/quefrency/rev3/rev3.c +++ b/keyboards/keebio/quefrency/rev3/rev3.c @@ -24,7 +24,7 @@ void matrix_init_kb(void) { bool led_update_kb(led_t led_state) { // Only update if left half - if (isLeftHand && led_update_user(led_state)) { + if (led_update_user(led_state) && isLeftHand) { writePin(CAPS_LOCK_LED_PIN, !led_state.caps_lock); } return true; diff --git a/keyboards/keebio/quefrency/rev3/rev3.h b/keyboards/keebio/quefrency/rev3/rev3.h index 3e7749265172..12f76d5c8535 100644 --- a/keyboards/keebio/quefrency/rev3/rev3.h +++ b/keyboards/keebio/quefrency/rev3/rev3.h @@ -39,8 +39,6 @@ along with this program. If not, see . { RE1, RE2, RE3, RE4, RE5, KC_NO, RE7, RE8, KC_NO } \ } -#define LAYOUT LAYOUT_60 // For backwards compatibility with Rev. 1 - #define LAYOUT_65( \ LA3, LA4, LA5, LA6, LA7, LA8, LA9, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, RA9, \ LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9, \ diff --git a/keyboards/keebio/quefrency/rev4/config.h b/keyboards/keebio/quefrency/rev4/config.h new file mode 100644 index 000000000000..f92490c8eca6 --- /dev/null +++ b/keyboards/keebio/quefrency/rev4/config.h @@ -0,0 +1,60 @@ +/* Copyright 2021 Danny Nguyen + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xCB10 +#define PRODUCT_ID 0x4257 +#define DEVICE_VER 0x0400 +#define MANUFACTURER Keebio +#define PRODUCT Quefrency Rev. 4 + +/* key matrix size */ +// Rows are doubled-up +#define MATRIX_ROWS 10 +#define MATRIX_COLS 9 + +#define DIODE_DIRECTION COL2ROW +// wiring of each half +#define MATRIX_ROW_PINS { B1, B2, C7, B4, D7 } +#define MATRIX_COL_PINS { F4, F1, F0, B7, B3, D2, D3, D5, D4 } +#define MATRIX_ROW_PINS_RIGHT { B3, B2, B6, B4, D7 } +#define MATRIX_COL_PINS_RIGHT { F1, F0, F4, F5, F6, D5, C7, D3, B7 } +#define SPLIT_HAND_PIN F7 +#define ENCODERS_PAD_A { F5 } +#define ENCODERS_PAD_B { F6 } +#define ENCODERS_PAD_A_RIGHT { D6 } +#define ENCODERS_PAD_B_RIGHT { D4 } + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* serial.c configuration for split keyboard */ +#define SOFT_SERIAL_PIN D0 + +/* 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 + +/* ws2812 RGB LED */ +#define RGB_DI_PIN E6 +#define RGBLIGHT_ANIMATIONS +#define RGBLED_NUM 16 // Number of LEDs +#define RGBLED_SPLIT { 8, 8 } +#define RGBLIGHT_LED_MAP { 1, 2, 3, 12, 13, 14, 15, 0, 7, 6, 5, 4, 11, 10, 9, 8 } +#define RGBLIGHT_DEFAULT_MODE (RGBLIGHT_MODE_RAINBOW_SWIRL + 2) diff --git a/keyboards/keebio/quefrency/rev4/info.json b/keyboards/keebio/quefrency/rev4/info.json new file mode 100644 index 000000000000..3c2364ef1527 --- /dev/null +++ b/keyboards/keebio/quefrency/rev4/info.json @@ -0,0 +1,837 @@ +{ + "keyboard_name": "Quefrency rev4", + "url": "https://keeb.io", + "maintainer": "nooges", + "layout_aliases": { + "LAYOUT": "LAYOUT_60" + }, + "layouts": { + "LAYOUT_60": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "1", "x": 1, "y": 0 }, + { "label": "2", "x": 2, "y": 0 }, + { "label": "3", "x": 3, "y": 0 }, + { "label": "4", "x": 4, "y": 0 }, + { "label": "5", "x": 5, "y": 0 }, + { "label": "6", "x": 6, "y": 0 }, + + { "label": "7", "x": 8, "y": 0 }, + { "label": "8", "x": 9, "y": 0 }, + { "label": "9", "x": 10, "y": 0 }, + { "label": "0", "x": 11, "y": 0 }, + { "label": "-", "x": 12, "y": 0 }, + { "label": "=", "x": 13, "y": 0 }, + { "label": "Del", "x": 14, "y": 0 }, + { "label": "Bksp", "x": 15, "y": 0 }, + + { "label": "Tab", "x": 0, "y": 1, "w": 1.5 }, + { "label": "Q", "x": 1.5, "y": 1 }, + { "label": "W", "x": 2.5, "y": 1 }, + { "label": "E", "x": 3.5, "y": 1 }, + { "label": "R", "x": 4.5, "y": 1 }, + { "label": "T", "x": 5.5, "y": 1 }, + + { "label": "Y", "x": 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": "Backslash", "x": 14.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": 7.75, "y": 2 }, + { "label": "J", "x": 8.75, "y": 2 }, + { "label": "K", "x": 9.75, "y": 2 }, + { "label": "L", "x": 10.75, "y": 2 }, + { "label": ";", "x": 11.75, "y": 2 }, + { "label": "'", "x": 12.75, "y": 2 }, + { "label": "Enter", "x": 13.75, "y": 2, "w": 2.25 }, + + { "label": "Shift", "x": 0, "y": 3, "w": 2.25 }, + { "label": "Z", "x": 2.25, "y": 3 }, + { "label": "X", "x": 3.25, "y": 3 }, + { "label": "C", "x": 4.25, "y": 3 }, + { "label": "V", "x": 5.25, "y": 3 }, + { "label": "B", "x": 6.25, "y": 3 }, + + { "label": "N", "x": 8.25, "y": 3 }, + { "label": "M", "x": 9.25, "y": 3 }, + { "label": ",", "x": 10.25, "y": 3 }, + { "label": ".", "x": 11.25, "y": 3 }, + { "label": "/", "x": 12.25, "y": 3 }, + { "label": "Shift", "x": 13.25, "y": 3, "w": 1.75 }, + { "label": "Up", "x": 15, "y": 3 }, + + { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 1.25, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 2.5, "y": 4, "w": 1.25 }, + { "label": "Fn", "x": 3.75, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 5, "y": 4, "w": 2.25 }, + + { "label": "Fn", "x": 8.25, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 9.5, "y": 4, "w": 1.5 }, + { "label": "Alt", "x": 11, "y": 4 }, + { "label": "Ctrl", "x": 12, "y": 4 }, + { "label": "Left", "x": 13, "y": 4 }, + { "label": "Down", "x": 14, "y": 4 }, + { "label": "Right", "x": 15, "y": 4 } + ] + }, + "LAYOUT_65": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "1", "x": 1, "y": 0 }, + { "label": "2", "x": 2, "y": 0 }, + { "label": "3", "x": 3, "y": 0 }, + { "label": "4", "x": 4, "y": 0 }, + { "label": "5", "x": 5, "y": 0 }, + { "label": "6", "x": 6, "y": 0 }, + + { "label": "7", "x": 8, "y": 0 }, + { "label": "8", "x": 9, "y": 0 }, + { "label": "9", "x": 10, "y": 0 }, + { "label": "0", "x": 11, "y": 0 }, + { "label": "-", "x": 12, "y": 0 }, + { "label": "=", "x": 13, "y": 0 }, + { "label": "Del", "x": 14, "y": 0 }, + { "label": "Bksp", "x": 15, "y": 0 }, + { "label": "Home", "x": 16, "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": 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": "Backslash", "x": 14.5, "y": 1, "w": 1.5 }, + { "label": "End", "x": 16, "y": 1 }, + + { "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 }, + { "label": "A", "x": 1.75, "y": 2 }, + { "label": "S", "x": 2.75, "y": 2 }, + { "label": "D", "x": 3.75, "y": 2 }, + { "label": "F", "x": 4.75, "y": 2 }, + { "label": "G", "x": 5.75, "y": 2 }, + + { "label": "H", "x": 7.75, "y": 2 }, + { "label": "J", "x": 8.75, "y": 2 }, + { "label": "K", "x": 9.75, "y": 2 }, + { "label": "L", "x": 10.75, "y": 2 }, + { "label": ";", "x": 11.75, "y": 2 }, + { "label": "'", "x": 12.75, "y": 2 }, + { "label": "Enter", "x": 13.75, "y": 2, "w": 2.25 }, + { "label": "Page Up", "x": 16, "y": 2 }, + + { "label": "Shift", "x": 0, "y": 3, "w": 2.25 }, + { "label": "Z", "x": 2.25, "y": 3 }, + { "label": "X", "x": 3.25, "y": 3 }, + { "label": "C", "x": 4.25, "y": 3 }, + { "label": "V", "x": 5.25, "y": 3 }, + { "label": "B", "x": 6.25, "y": 3 }, + + { "label": "N", "x": 8.25, "y": 3 }, + { "label": "M", "x": 9.25, "y": 3 }, + { "label": ",", "x": 10.25, "y": 3 }, + { "label": ".", "x": 11.25, "y": 3 }, + { "label": "/", "x": 12.25, "y": 3 }, + { "label": "Shift", "x": 13.25, "y": 3, "w": 1.75 }, + { "label": "Up", "x": 15, "y": 3 }, + { "label": "Page Down", "x": 16, "y": 3 }, + + { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 1.25, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 2.5, "y": 4, "w": 1.25 }, + { "label": "Fn", "x": 3.75, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 5, "y": 4, "w": 2.25 }, + + { "label": "Fn", "x": 8.25, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 9.5, "y": 4, "w": 1.5 }, + { "label": "Alt", "x": 11, "y": 4 }, + { "label": "Ctrl", "x": 12, "y": 4 }, + { "label": "Win", "x": 13, "y": 4 }, + { "label": "Left", "x": 14, "y": 4 }, + { "label": "Down", "x": 15, "y": 4 }, + { "label": "Right", "x": 16, "y": 4 } + ] + }, + "LAYOUT_60_with_macro": { + "layout": [ + { "label": "F1", "x": 0, "y": 0 }, + { "label": "F6", "x": 1, "y": 0 }, + + { "label": "Esc", "x": 2.25, "y": 0 }, + { "label": "1", "x": 3.25, "y": 0 }, + { "label": "2", "x": 4.25, "y": 0 }, + { "label": "3", "x": 5.25, "y": 0 }, + { "label": "4", "x": 6.25, "y": 0 }, + { "label": "5", "x": 7.25, "y": 0 }, + { "label": "6", "x": 8.25, "y": 0 }, + + { "label": "7", "x": 10.25, "y": 0 }, + { "label": "8", "x": 11.25, "y": 0 }, + { "label": "9", "x": 12.25, "y": 0 }, + { "label": "0", "x": 13.25, "y": 0 }, + { "label": "-", "x": 14.25, "y": 0 }, + { "label": "=", "x": 15.25, "y": 0 }, + { "label": "Del", "x": 16.25, "y": 0 }, + { "label": "Bksp", "x": 17.25, "y": 0 }, + + { "label": "F2", "x": 0, "y": 1 }, + { "label": "F7", "x": 1, "y": 1 }, + + { "label": "Tab", "x": 2.25, "y": 1, "w": 1.5 }, + { "label": "Q", "x": 3.75, "y": 1 }, + { "label": "W", "x": 4.75, "y": 1 }, + { "label": "E", "x": 5.75, "y": 1 }, + { "label": "R", "x": 6.75, "y": 1 }, + { "label": "T", "x": 7.75, "y": 1 }, + + { "label": "Y", "x": 9.75, "y": 1 }, + { "label": "U", "x": 10.75, "y": 1 }, + { "label": "I", "x": 11.75, "y": 1 }, + { "label": "O", "x": 12.75, "y": 1 }, + { "label": "P", "x": 13.75, "y": 1 }, + { "label": "[", "x": 14.75, "y": 1 }, + { "label": "]", "x": 15.75, "y": 1 }, + { "label": "Backslash", "x": 16.75, "y": 1, "w": 1.5 }, + + { "label": "F3", "x": 0, "y": 2 }, + { "label": "F8", "x": 1, "y": 2 }, + + { "label": "Caps Lock", "x": 2.25, "y": 2, "w": 1.75 }, + { "label": "A", "x": 4, "y": 2 }, + { "label": "S", "x": 5, "y": 2 }, + { "label": "D", "x": 6, "y": 2 }, + { "label": "F", "x": 7, "y": 2 }, + { "label": "G", "x": 8, "y": 2 }, + + { "label": "H", "x": 10, "y": 2 }, + { "label": "J", "x": 11, "y": 2 }, + { "label": "K", "x": 12, "y": 2 }, + { "label": "L", "x": 13, "y": 2 }, + { "label": ";", "x": 14, "y": 2 }, + { "label": "'", "x": 15, "y": 2 }, + { "label": "Enter", "x": 16, "y": 2, "w": 2.25 }, + + { "label": "F4", "x": 0, "y": 3 }, + { "label": "F9", "x": 1, "y": 3 }, + + { "label": "Shift", "x": 2.25, "y": 3, "w": 2.25 }, + { "label": "Z", "x": 4.5, "y": 3 }, + { "label": "X", "x": 5.5, "y": 3 }, + { "label": "C", "x": 6.5, "y": 3 }, + { "label": "V", "x": 7.5, "y": 3 }, + { "label": "B", "x": 8.5, "y": 3 }, + + { "label": "N", "x": 10.5, "y": 3 }, + { "label": "M", "x": 11.5, "y": 3 }, + { "label": ",", "x": 12.5, "y": 3 }, + { "label": ".", "x": 13.5, "y": 3 }, + { "label": "/", "x": 14.5, "y": 3 }, + { "label": "Shift", "x": 15.5, "y": 3, "w": 1.75 }, + { "label": "Up", "x": 17.25, "y": 3 }, + + { "label": "F5", "x": 0, "y": 4 }, + { "label": "F10", "x": 1, "y": 4 }, + + { "label": "Ctrl", "x": 2.25, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 3.5, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 4.75, "y": 4, "w": 1.25 }, + { "label": "Fn", "x": 6, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 7.25, "y": 4, "w": 2.25 }, + + { "label": "Fn", "x": 10.5, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 11.75, "y": 4, "w": 1.5 }, + { "label": "Alt", "x": 13.25, "y": 4 }, + { "label": "Ctrl", "x": 14.25, "y": 4 }, + { "label": "Left", "x": 15.25, "y": 4 }, + { "label": "Down", "x": 16.25, "y": 4 }, + { "label": "Right", "x": 17.25, "y": 4 } + ] + }, + "LAYOUT_65_with_macro": { + "layout": [ + { "label": "F1", "x": 0, "y": 0 }, + { "label": "F6", "x": 1, "y": 0 }, + + { "label": "Esc", "x": 2.25, "y": 0 }, + { "label": "1", "x": 3.25, "y": 0 }, + { "label": "2", "x": 4.25, "y": 0 }, + { "label": "3", "x": 5.25, "y": 0 }, + { "label": "4", "x": 6.25, "y": 0 }, + { "label": "5", "x": 7.25, "y": 0 }, + { "label": "6", "x": 8.25, "y": 0 }, + + { "label": "7", "x": 10.25, "y": 0 }, + { "label": "8", "x": 11.25, "y": 0 }, + { "label": "9", "x": 12.25, "y": 0 }, + { "label": "0", "x": 13.25, "y": 0 }, + { "label": "-", "x": 14.25, "y": 0 }, + { "label": "=", "x": 15.25, "y": 0 }, + { "label": "Del", "x": 16.25, "y": 0 }, + { "label": "Bksp", "x": 17.25, "y": 0 }, + { "label": "Home", "x": 18.25, "y": 0 }, + + { "label": "F2", "x": 0, "y": 1 }, + { "label": "F7", "x": 1, "y": 1 }, + + { "label": "Tab", "x": 2.25, "y": 1, "w": 1.5 }, + { "label": "Q", "x": 3.75, "y": 1 }, + { "label": "W", "x": 4.75, "y": 1 }, + { "label": "E", "x": 5.75, "y": 1 }, + { "label": "R", "x": 6.75, "y": 1 }, + { "label": "T", "x": 7.75, "y": 1 }, + + { "label": "Y", "x": 9.75, "y": 1 }, + { "label": "U", "x": 10.75, "y": 1 }, + { "label": "I", "x": 11.75, "y": 1 }, + { "label": "O", "x": 12.75, "y": 1 }, + { "label": "P", "x": 13.75, "y": 1 }, + { "label": "[", "x": 14.75, "y": 1 }, + { "label": "]", "x": 15.75, "y": 1 }, + { "label": "Backslash", "x": 16.75, "y": 1, "w": 1.5 }, + { "label": "PgUp", "x": 18.25, "y": 1 }, + + { "label": "F3", "x": 0, "y": 2 }, + { "label": "F8", "x": 1, "y": 2 }, + + { "label": "Caps Lock", "x": 2.25, "y": 2, "w": 1.75 }, + { "label": "A", "x": 4, "y": 2 }, + { "label": "S", "x": 5, "y": 2 }, + { "label": "D", "x": 6, "y": 2 }, + { "label": "F", "x": 7, "y": 2 }, + { "label": "G", "x": 8, "y": 2 }, + + { "label": "H", "x": 10, "y": 2 }, + { "label": "J", "x": 11, "y": 2 }, + { "label": "K", "x": 12, "y": 2 }, + { "label": "L", "x": 13, "y": 2 }, + { "label": ";", "x": 14, "y": 2 }, + { "label": "'", "x": 15, "y": 2 }, + { "label": "Enter", "x": 16, "y": 2, "w": 2.25 }, + { "label": "PgDn", "x": 18.25, "y": 2 }, + + { "label": "F4", "x": 0, "y": 3 }, + { "label": "F9", "x": 1, "y": 3 }, + + { "label": "Shift", "x": 2.25, "y": 3, "w": 2.25 }, + { "label": "Z", "x": 4.5, "y": 3 }, + { "label": "X", "x": 5.5, "y": 3 }, + { "label": "C", "x": 6.5, "y": 3 }, + { "label": "V", "x": 7.5, "y": 3 }, + { "label": "B", "x": 8.5, "y": 3 }, + + { "label": "N", "x": 10.5, "y": 3 }, + { "label": "M", "x": 11.5, "y": 3 }, + { "label": ",", "x": 12.5, "y": 3 }, + { "label": ".", "x": 13.5, "y": 3 }, + { "label": "/", "x": 14.5, "y": 3 }, + { "label": "Shift", "x": 15.5, "y": 3, "w": 1.75 }, + { "label": "Up", "x": 17.25, "y": 3 }, + { "label": "End", "x": 18.25, "y": 3 }, + + { "label": "F5", "x": 0, "y": 4 }, + { "label": "F10", "x": 1, "y": 4 }, + + { "label": "Ctrl", "x": 2.25, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 3.5, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 4.75, "y": 4, "w": 1.25 }, + { "label": "Fn", "x": 6, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 7.25, "y": 4, "w": 2.25 }, + + { "label": "Fn", "x": 10.5, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 11.75, "y": 4, "w": 1.5 }, + { "label": "Alt", "x": 13.25, "y": 4 }, + { "label": "Ctrl", "x": 14.25, "y": 4 }, + { "label": "Win", "x": 15.25, "y": 4 }, + { "label": "Left", "x": 16.25, "y": 4 }, + { "label": "Down", "x": 17.25, "y": 4 }, + { "label": "Right", "x": 18.25, "y": 4 } + ] + }, + "LAYOUT_60_iso": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "1", "x": 1, "y": 0 }, + { "label": "2", "x": 2, "y": 0 }, + { "label": "3", "x": 3, "y": 0 }, + { "label": "4", "x": 4, "y": 0 }, + { "label": "5", "x": 5, "y": 0 }, + { "label": "6", "x": 6, "y": 0 }, + + { "label": "7", "x": 8, "y": 0 }, + { "label": "8", "x": 9, "y": 0 }, + { "label": "9", "x": 10, "y": 0 }, + { "label": "0", "x": 11, "y": 0 }, + { "label": "-", "x": 12, "y": 0 }, + { "label": "=", "x": 13, "y": 0 }, + { "label": "Del", "x": 14, "y": 0 }, + { "label": "Bksp", "x": 15, "y": 0 }, + + { "label": "Tab", "x": 0, "y": 1, "w": 1.5 }, + { "label": "Q", "x": 1.5, "y": 1 }, + { "label": "W", "x": 2.5, "y": 1 }, + { "label": "E", "x": 3.5, "y": 1 }, + { "label": "R", "x": 4.5, "y": 1 }, + { "label": "T", "x": 5.5, "y": 1 }, + + { "label": "Y", "x": 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": "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": 7.75, "y": 2 }, + { "label": "J", "x": 8.75, "y": 2 }, + { "label": "K", "x": 9.75, "y": 2 }, + { "label": "L", "x": 10.75, "y": 2 }, + { "label": ";", "x": 11.75, "y": 2 }, + { "label": "'", "x": 12.75, "y": 2 }, + { "label": "NUHS", "x": 13.75, "y": 2 }, + { "label": "Enter", "x": 14.75, "y": 1, "w": 1.25, "h": 2 }, + + { "label": "Shift", "x": 0, "y": 3, "w": 1.25 }, + { "label": "NUBS", "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.25, "y": 3 }, + { "label": "M", "x": 9.25, "y": 3 }, + { "label": ",", "x": 10.25, "y": 3 }, + { "label": ".", "x": 11.25, "y": 3 }, + { "label": "/", "x": 12.25, "y": 3 }, + { "label": "Shift", "x": 13.25, "y": 3, "w": 1.75 }, + { "label": "Up", "x": 15, "y": 3 }, + + { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 1.25, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 2.5, "y": 4, "w": 1.25 }, + { "label": "Fn", "x": 3.75, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 5, "y": 4, "w": 2.25 }, + + { "label": "Fn", "x": 8.25, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 9.5, "y": 4, "w": 1.5 }, + { "label": "Alt", "x": 11, "y": 4 }, + { "label": "Ctrl", "x": 12, "y": 4 }, + { "label": "Left", "x": 13, "y": 4 }, + { "label": "Down", "x": 14, "y": 4 }, + { "label": "Right", "x": 15, "y": 4 } + ] + }, + "LAYOUT_65_iso": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "1", "x": 1, "y": 0 }, + { "label": "2", "x": 2, "y": 0 }, + { "label": "3", "x": 3, "y": 0 }, + { "label": "4", "x": 4, "y": 0 }, + { "label": "5", "x": 5, "y": 0 }, + { "label": "6", "x": 6, "y": 0 }, + + { "label": "7", "x": 8, "y": 0 }, + { "label": "8", "x": 9, "y": 0 }, + { "label": "9", "x": 10, "y": 0 }, + { "label": "0", "x": 11, "y": 0 }, + { "label": "-", "x": 12, "y": 0 }, + { "label": "=", "x": 13, "y": 0 }, + { "label": "Del", "x": 14, "y": 0 }, + { "label": "Bksp", "x": 15, "y": 0 }, + { "label": "Home", "x": 16, "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": 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": "End", "x": 16, "y": 1 }, + + { "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 }, + { "label": "A", "x": 1.75, "y": 2 }, + { "label": "S", "x": 2.75, "y": 2 }, + { "label": "D", "x": 3.75, "y": 2 }, + { "label": "F", "x": 4.75, "y": 2 }, + { "label": "G", "x": 5.75, "y": 2 }, + + { "label": "H", "x": 7.75, "y": 2 }, + { "label": "J", "x": 8.75, "y": 2 }, + { "label": "K", "x": 9.75, "y": 2 }, + { "label": "L", "x": 10.75, "y": 2 }, + { "label": ";", "x": 11.75, "y": 2 }, + { "label": "'", "x": 12.75, "y": 2 }, + { "label": "NUHS", "x": 13.75, "y": 2 }, + { "label": "Enter", "x": 14.75, "y": 1, "w": 1.25, "h": 2 }, + { "label": "Page Up", "x": 16, "y": 2 }, + + { "label": "Shift", "x": 0, "y": 3, "w": 1.25 }, + { "label": "NUBS", "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.25, "y": 3 }, + { "label": "M", "x": 9.25, "y": 3 }, + { "label": ",", "x": 10.25, "y": 3 }, + { "label": ".", "x": 11.25, "y": 3 }, + { "label": "/", "x": 12.25, "y": 3 }, + { "label": "Shift", "x": 13.25, "y": 3, "w": 1.75 }, + { "label": "Up", "x": 15, "y": 3 }, + { "label": "Page Down", "x": 16, "y": 3 }, + + { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 1.25, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 2.5, "y": 4, "w": 1.25 }, + { "label": "Fn", "x": 3.75, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 5, "y": 4, "w": 2.25 }, + + { "label": "Fn", "x": 8.25, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 9.5, "y": 4, "w": 1.5 }, + { "label": "Alt", "x": 11, "y": 4 }, + { "label": "Ctrl", "x": 12, "y": 4 }, + { "label": "Win", "x": 13, "y": 4 }, + { "label": "Left", "x": 14, "y": 4 }, + { "label": "Down", "x": 15, "y": 4 }, + { "label": "Right", "x": 16, "y": 4 } + ] + }, + "LAYOUT_60_iso_with_macro": { + "layout": [ + { "label": "F1", "x": 0, "y": 0 }, + { "label": "F6", "x": 1, "y": 0 }, + + { "label": "Esc", "x": 2.25, "y": 0 }, + { "label": "1", "x": 3.25, "y": 0 }, + { "label": "2", "x": 4.25, "y": 0 }, + { "label": "3", "x": 5.25, "y": 0 }, + { "label": "4", "x": 6.25, "y": 0 }, + { "label": "5", "x": 7.25, "y": 0 }, + { "label": "6", "x": 8.25, "y": 0 }, + + { "label": "7", "x": 10.25, "y": 0 }, + { "label": "8", "x": 11.25, "y": 0 }, + { "label": "9", "x": 12.25, "y": 0 }, + { "label": "0", "x": 13.25, "y": 0 }, + { "label": "-", "x": 14.25, "y": 0 }, + { "label": "=", "x": 15.25, "y": 0 }, + { "label": "Del", "x": 16.25, "y": 0 }, + { "label": "Bksp", "x": 17.25, "y": 0 }, + + { "label": "F2", "x": 0, "y": 1 }, + { "label": "F7", "x": 1, "y": 1 }, + + { "label": "Tab", "x": 2.25, "y": 1, "w": 1.5 }, + { "label": "Q", "x": 3.75, "y": 1 }, + { "label": "W", "x": 4.75, "y": 1 }, + { "label": "E", "x": 5.75, "y": 1 }, + { "label": "R", "x": 6.75, "y": 1 }, + { "label": "T", "x": 7.75, "y": 1 }, + + { "label": "Y", "x": 9.75, "y": 1 }, + { "label": "U", "x": 10.75, "y": 1 }, + { "label": "I", "x": 11.75, "y": 1 }, + { "label": "O", "x": 12.75, "y": 1 }, + { "label": "P", "x": 13.75, "y": 1 }, + { "label": "[", "x": 14.75, "y": 1 }, + { "label": "]", "x": 15.75, "y": 1 }, + + { "label": "F3", "x": 0, "y": 2 }, + { "label": "F8", "x": 1, "y": 2 }, + + { "label": "Caps Lock", "x": 2.25, "y": 2, "w": 1.75 }, + { "label": "A", "x": 4, "y": 2 }, + { "label": "S", "x": 5, "y": 2 }, + { "label": "D", "x": 6, "y": 2 }, + { "label": "F", "x": 7, "y": 2 }, + { "label": "G", "x": 8, "y": 2 }, + + { "label": "H", "x": 10, "y": 2 }, + { "label": "J", "x": 11, "y": 2 }, + { "label": "K", "x": 12, "y": 2 }, + { "label": "L", "x": 13, "y": 2 }, + { "label": ";", "x": 14, "y": 2 }, + { "label": "'", "x": 15, "y": 2 }, + { "label": "NUHS", "x": 16, "y": 2 }, + { "label": "Enter", "x": 17, "y": 1, "w": 1.25, "h": 2 }, + + { "label": "F4", "x": 0, "y": 3 }, + { "label": "F9", "x": 1, "y": 3 }, + + { "label": "Shift", "x": 2.25, "y": 3, "w": 1.25 }, + { "label": "NUBS", "x": 3.5, "y": 3 }, + { "label": "Z", "x": 4.5, "y": 3 }, + { "label": "X", "x": 5.5, "y": 3 }, + { "label": "C", "x": 6.5, "y": 3 }, + { "label": "V", "x": 7.5, "y": 3 }, + { "label": "B", "x": 8.5, "y": 3 }, + + { "label": "N", "x": 10.5, "y": 3 }, + { "label": "M", "x": 11.5, "y": 3 }, + { "label": ",", "x": 12.5, "y": 3 }, + { "label": ".", "x": 13.5, "y": 3 }, + { "label": "/", "x": 14.5, "y": 3 }, + { "label": "Shift", "x": 15.5, "y": 3, "w": 1.75 }, + { "label": "Up", "x": 17.25, "y": 3 }, + + { "label": "F5", "x": 0, "y": 4 }, + { "label": "F10", "x": 1, "y": 4 }, + + { "label": "Ctrl", "x": 2.25, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 3.5, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 4.75, "y": 4, "w": 1.25 }, + { "label": "Fn", "x": 6, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 7.25, "y": 4, "w": 2.25 }, + + { "label": "Fn", "x": 10.5, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 11.75, "y": 4, "w": 1.5 }, + { "label": "Alt", "x": 13.25, "y": 4 }, + { "label": "Ctrl", "x": 14.25, "y": 4 }, + { "label": "Left", "x": 15.25, "y": 4 }, + { "label": "Down", "x": 16.25, "y": 4 }, + { "label": "Right", "x": 17.25, "y": 4 } + ] + }, + "LAYOUT_65_iso_with_macro": { + "layout": [ + { "label": "F1", "x": 0, "y": 0 }, + { "label": "F6", "x": 1, "y": 0 }, + + { "label": "Esc", "x": 2.25, "y": 0 }, + { "label": "1", "x": 3.25, "y": 0 }, + { "label": "2", "x": 4.25, "y": 0 }, + { "label": "3", "x": 5.25, "y": 0 }, + { "label": "4", "x": 6.25, "y": 0 }, + { "label": "5", "x": 7.25, "y": 0 }, + { "label": "6", "x": 8.25, "y": 0 }, + + { "label": "7", "x": 10.25, "y": 0 }, + { "label": "8", "x": 11.25, "y": 0 }, + { "label": "9", "x": 12.25, "y": 0 }, + { "label": "0", "x": 13.25, "y": 0 }, + { "label": "-", "x": 14.25, "y": 0 }, + { "label": "=", "x": 15.25, "y": 0 }, + { "label": "Del", "x": 16.25, "y": 0 }, + { "label": "Bksp", "x": 17.25, "y": 0 }, + { "label": "Home", "x": 18.25, "y": 0 }, + + { "label": "F2", "x": 0, "y": 1 }, + { "label": "F7", "x": 1, "y": 1 }, + + { "label": "Tab", "x": 2.25, "y": 1, "w": 1.5 }, + { "label": "Q", "x": 3.75, "y": 1 }, + { "label": "W", "x": 4.75, "y": 1 }, + { "label": "E", "x": 5.75, "y": 1 }, + { "label": "R", "x": 6.75, "y": 1 }, + { "label": "T", "x": 7.75, "y": 1 }, + + { "label": "Y", "x": 9.75, "y": 1 }, + { "label": "U", "x": 10.75, "y": 1 }, + { "label": "I", "x": 11.75, "y": 1 }, + { "label": "O", "x": 12.75, "y": 1 }, + { "label": "P", "x": 13.75, "y": 1 }, + { "label": "[", "x": 14.75, "y": 1 }, + { "label": "]", "x": 15.75, "y": 1 }, + { "label": "PgUp", "x": 18.25, "y": 1 }, + + { "label": "F3", "x": 0, "y": 2 }, + { "label": "F8", "x": 1, "y": 2 }, + + { "label": "Caps Lock", "x": 2.25, "y": 2, "w": 1.75 }, + { "label": "A", "x": 4, "y": 2 }, + { "label": "S", "x": 5, "y": 2 }, + { "label": "D", "x": 6, "y": 2 }, + { "label": "F", "x": 7, "y": 2 }, + { "label": "G", "x": 8, "y": 2 }, + + { "label": "H", "x": 10, "y": 2 }, + { "label": "J", "x": 11, "y": 2 }, + { "label": "K", "x": 12, "y": 2 }, + { "label": "L", "x": 13, "y": 2 }, + { "label": ";", "x": 14, "y": 2 }, + { "label": "'", "x": 15, "y": 2 }, + { "label": "NUHS", "x": 16, "y": 2 }, + { "label": "Enter", "x": 17, "y": 1, "w": 1.25, "h": 2 }, + { "label": "PgDn", "x": 18.25, "y": 2 }, + + { "label": "F4", "x": 0, "y": 3 }, + { "label": "F9", "x": 1, "y": 3 }, + + { "label": "Shift", "x": 2.25, "y": 3, "w": 1.25 }, + { "label": "NUBS", "x": 3.5, "y": 3 }, + { "label": "Z", "x": 4.5, "y": 3 }, + { "label": "X", "x": 5.5, "y": 3 }, + { "label": "C", "x": 6.5, "y": 3 }, + { "label": "V", "x": 7.5, "y": 3 }, + { "label": "B", "x": 8.5, "y": 3 }, + + { "label": "N", "x": 10.5, "y": 3 }, + { "label": "M", "x": 11.5, "y": 3 }, + { "label": ",", "x": 12.5, "y": 3 }, + { "label": ".", "x": 13.5, "y": 3 }, + { "label": "/", "x": 14.5, "y": 3 }, + { "label": "Shift", "x": 15.5, "y": 3, "w": 1.75 }, + { "label": "Up", "x": 17.25, "y": 3 }, + { "label": "End", "x": 18.25, "y": 3 }, + + { "label": "F5", "x": 0, "y": 4 }, + { "label": "F10", "x": 1, "y": 4 }, + + { "label": "Ctrl", "x": 2.25, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 3.5, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 4.75, "y": 4, "w": 1.25 }, + { "label": "Fn", "x": 6, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 7.25, "y": 4, "w": 2.25 }, + + { "label": "Fn", "x": 10.5, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 11.75, "y": 4, "w": 1.5 }, + { "label": "Alt", "x": 13.25, "y": 4 }, + { "label": "Ctrl", "x": 14.25, "y": 4 }, + { "label": "Win", "x": 15.25, "y": 4 }, + { "label": "Left", "x": 16.25, "y": 4 }, + { "label": "Down", "x": 17.25, "y": 4 }, + { "label": "Right", "x": 18.25, "y": 4 } + ] + }, + "LAYOUT_all": { + "layout": [ + { "label": "F1", "x": 0, "y": 0 }, + { "label": "F6", "x": 1, "y": 0 }, + + { "label": "Esc", "x": 2.25, "y": 0 }, + { "label": "1", "x": 3.25, "y": 0 }, + { "label": "2", "x": 4.25, "y": 0 }, + { "label": "3", "x": 5.25, "y": 0 }, + { "label": "4", "x": 6.25, "y": 0 }, + { "label": "5", "x": 7.25, "y": 0 }, + { "label": "6", "x": 8.25, "y": 0 }, + + { "label": "7", "x": 10.25, "y": 0 }, + { "label": "8", "x": 11.25, "y": 0 }, + { "label": "9", "x": 12.25, "y": 0 }, + { "label": "0", "x": 13.25, "y": 0 }, + { "label": "-", "x": 14.25, "y": 0 }, + { "label": "=", "x": 15.25, "y": 0 }, + { "label": "Del", "x": 16.25, "y": 0 }, + { "label": "Bksp", "x": 17.25, "y": 0 }, + { "label": "Home", "x": 18.25, "y": 0 }, + + { "label": "F2", "x": 0, "y": 1 }, + { "label": "F7", "x": 1, "y": 1 }, + + { "label": "Tab", "x": 2.25, "y": 1, "w": 1.5 }, + { "label": "Q", "x": 3.75, "y": 1 }, + { "label": "W", "x": 4.75, "y": 1 }, + { "label": "E", "x": 5.75, "y": 1 }, + { "label": "R", "x": 6.75, "y": 1 }, + { "label": "T", "x": 7.75, "y": 1 }, + + { "label": "Y", "x": 9.75, "y": 1 }, + { "label": "U", "x": 10.75, "y": 1 }, + { "label": "I", "x": 11.75, "y": 1 }, + { "label": "O", "x": 12.75, "y": 1 }, + { "label": "P", "x": 13.75, "y": 1 }, + { "label": "[", "x": 14.75, "y": 1 }, + { "label": "]", "x": 15.75, "y": 1 }, + { "label": "Backslash", "x": 16.75, "y": 1, "w": 1.5 }, + { "label": "PgUp", "x": 18.25, "y": 1 }, + + { "label": "F3", "x": 0, "y": 2 }, + { "label": "F8", "x": 1, "y": 2 }, + + { "label": "Caps Lock", "x": 2.25, "y": 2, "w": 1.75 }, + { "label": "A", "x": 4, "y": 2 }, + { "label": "S", "x": 5, "y": 2 }, + { "label": "D", "x": 6, "y": 2 }, + { "label": "F", "x": 7, "y": 2 }, + { "label": "G", "x": 8, "y": 2 }, + + { "label": "H", "x": 10, "y": 2 }, + { "label": "J", "x": 11, "y": 2 }, + { "label": "K", "x": 12, "y": 2 }, + { "label": "L", "x": 13, "y": 2 }, + { "label": ";", "x": 14, "y": 2 }, + { "label": "'", "x": 15, "y": 2 }, + { "label": "NUHS", "x": 16, "y": 2 }, + { "label": "Enter", "x": 17, "y": 2, "w": 1.25 }, + { "label": "PgDn", "x": 18.25, "y": 2 }, + + { "label": "F4", "x": 0, "y": 3 }, + { "label": "F9", "x": 1, "y": 3 }, + + { "label": "Shift", "x": 2.25, "y": 3, "w": 1.25 }, + { "label": "NUBS", "x": 3.5, "y": 3 }, + { "label": "Z", "x": 4.5, "y": 3 }, + { "label": "X", "x": 5.5, "y": 3 }, + { "label": "C", "x": 6.5, "y": 3 }, + { "label": "V", "x": 7.5, "y": 3 }, + { "label": "B", "x": 8.5, "y": 3 }, + + { "label": "N", "x": 10.5, "y": 3 }, + { "label": "M", "x": 11.5, "y": 3 }, + { "label": ",", "x": 12.5, "y": 3 }, + { "label": ".", "x": 13.5, "y": 3 }, + { "label": "/", "x": 14.5, "y": 3 }, + { "label": "Shift", "x": 15.5, "y": 3, "w": 1.75 }, + { "label": "Up", "x": 17.25, "y": 3 }, + { "label": "End", "x": 18.25, "y": 3 }, + + { "label": "F5", "x": 0, "y": 4 }, + { "label": "F10", "x": 1, "y": 4 }, + + { "label": "Ctrl", "x": 2.25, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 3.5, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 4.75, "y": 4, "w": 1.25 }, + { "label": "Fn", "x": 6, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 7.25, "y": 4 }, + { "label": "Space", "x": 8.25, "y": 4, "w": 1.25 }, + + { "label": "Fn", "x": 10.5, "y": 4, "w": 1.25 }, + { "label": "Space", "x": 11.75, "y": 4, "w": 1.5 }, + { "label": "Alt", "x": 13.25, "y": 4 }, + { "label": "Ctrl", "x": 14.25, "y": 4 }, + { "label": "Win", "x": 15.25, "y": 4 }, + { "label": "Left", "x": 16.25, "y": 4 }, + { "label": "Down", "x": 17.25, "y": 4 }, + { "label": "Right", "x": 18.25, "y": 4 } + ] + } + } +} diff --git a/keyboards/keebio/quefrency/rev4/readme.md b/keyboards/keebio/quefrency/rev4/readme.md new file mode 100644 index 000000000000..451afb00780b --- /dev/null +++ b/keyboards/keebio/quefrency/rev4/readme.md @@ -0,0 +1,18 @@ +# Quefrency Rev. 4 + +Quefrency Rev. 4 features Kailh hotswap sockets with a fixed layout. The left macro portion and right column can be broken off, and split backspace or 2u backspace can be used. + +* Keyboard Maintainer: [Bakingpy/nooges](https://github.com/nooges) +* Hardware Availability: [Keebio](https://keeb.io/) + +Make example for this keyboard (after setting up your build environment): + + make keebio/quefrency/rev4:default + +Example of flashing this keyboard: + + make keebio/quefrency/rev4: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). + +A build guide for this keyboard can be found here: [Keebio Build Guides](https://docs.keeb.io) diff --git a/keyboards/keebio/quefrency/rev4/rev4.c b/keyboards/keebio/quefrency/rev4/rev4.c new file mode 100644 index 000000000000..a66d19166d0c --- /dev/null +++ b/keyboards/keebio/quefrency/rev4/rev4.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Danny Nguyen + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "quefrency.h" diff --git a/keyboards/keebio/quefrency/rev4/rev4.h b/keyboards/keebio/quefrency/rev4/rev4.h new file mode 100644 index 000000000000..12f76d5c8535 --- /dev/null +++ b/keyboards/keebio/quefrency/rev4/rev4.h @@ -0,0 +1,200 @@ +/* Copyright 2021 Danny Nguyen + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quefrency.h" +#include "quantum.h" + +#define LAYOUT_60( \ + LA3, LA4, LA5, LA6, LA7, LA8, LA9, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, \ + LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, \ + LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC8, \ + LD3, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, \ + LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE3, RE4, RE5, RE7, RE8 \ + ) \ + { \ + { KC_NO, KC_NO, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \ + { KC_NO, KC_NO, LB3, LB4, LB5, LB6, LB7, LB8, KC_NO }, \ + { KC_NO, KC_NO, LC3, LC4, LC5, LC6, LC7, LC8, KC_NO }, \ + { KC_NO, KC_NO, LD3, KC_NO, LD5, LD6, LD7, LD8, LD9 }, \ + { KC_NO, KC_NO, LE3, LE4, LE5, LE6, KC_NO, LE8, KC_NO }, \ + { RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, KC_NO }, \ + { RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, KC_NO }, \ + { RC1, RC2, RC3, RC4, RC5, RC6, KC_NO, RC8, KC_NO }, \ + { RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, KC_NO }, \ + { RE1, RE2, RE3, RE4, RE5, KC_NO, RE7, RE8, KC_NO } \ + } + +#define LAYOUT_65( \ + LA3, LA4, LA5, LA6, LA7, LA8, LA9, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, RA9, \ + LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9, \ + LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC8, RC9, \ + LD3, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, RD9, \ + LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE3, RE4, RE5, RE7, RE8, RE9 \ + ) \ + { \ + { KC_NO, KC_NO, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \ + { KC_NO, KC_NO, LB3, LB4, LB5, LB6, LB7, LB8, KC_NO }, \ + { KC_NO, KC_NO, LC3, LC4, LC5, LC6, LC7, LC8, KC_NO }, \ + { KC_NO, KC_NO, LD3, KC_NO, LD5, LD6, LD7, LD8, LD9 }, \ + { KC_NO, KC_NO, LE3, LE4, LE5, LE6, KC_NO, LE8, KC_NO }, \ + { RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, RA9 }, \ + { RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9 }, \ + { RC1, RC2, RC3, RC4, RC5, RC6, KC_NO, RC8, RC9 }, \ + { RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, RD9 }, \ + { RE1, RE2, RE3, RE4, RE5, KC_NO, RE7, RE8, RE9 } \ + } + +#define LAYOUT_60_with_macro( \ + LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8, LA9, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, \ + LB1, LB2, LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, \ + LC1, LC2, LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC8, \ + LD1, LD2, LD3, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, \ + LE1, LE2, LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE3, RE4, RE5, RE7, RE8 \ + ) \ + { \ + { LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \ + { LB1, LB2, LB3, LB4, LB5, LB6, LB7, LB8, KC_NO }, \ + { LC1, LC2, LC3, LC4, LC5, LC6, LC7, LC8, KC_NO }, \ + { LD1, LD2, LD3, KC_NO, LD5, LD6, LD7, LD8, LD9 }, \ + { LE1, LE2, LE3, LE4, LE5, LE6, KC_NO, LE8, KC_NO }, \ + { RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, KC_NO }, \ + { RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, KC_NO }, \ + { RC1, RC2, RC3, RC4, RC5, RC6, KC_NO, RC8, KC_NO }, \ + { RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, KC_NO }, \ + { RE1, RE2, RE3, RE4, RE5, KC_NO, RE7, RE8, KC_NO } \ + } + +#define LAYOUT_65_with_macro( \ + LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8, LA9, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, RA9, \ + LB1, LB2, LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9, \ + LC1, LC2, LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC8, RC9, \ + LD1, LD2, LD3, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, RD9, \ + LE1, LE2, LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE3, RE4, RE5, RE7, RE8, RE9 \ + ) \ + { \ + { LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \ + { LB1, LB2, LB3, LB4, LB5, LB6, LB7, LB8, KC_NO }, \ + { LC1, LC2, LC3, LC4, LC5, LC6, LC7, LC8, KC_NO }, \ + { LD1, LD2, LD3, KC_NO, LD5, LD6, LD7, LD8, LD9 }, \ + { LE1, LE2, LE3, LE4, LE5, LE6, KC_NO, LE8, KC_NO }, \ + { RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, RA9 }, \ + { RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9 }, \ + { RC1, RC2, RC3, RC4, RC5, RC6, KC_NO, RC8, RC9 }, \ + { RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, RD9 }, \ + { RE1, RE2, RE3, RE4, RE5, KC_NO, RE7, RE8, RE9 } \ + } + +#define LAYOUT_60_iso( \ + LA3, LA4, LA5, LA6, LA7, LA8, LA9, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, \ + LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, \ + LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, \ + LD3, LD4, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, \ + LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE3, RE4, RE5, RE7, RE8 \ + ) \ + { \ + { KC_NO, KC_NO, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \ + { KC_NO, KC_NO, LB3, LB4, LB5, LB6, LB7, LB8, KC_NO }, \ + { KC_NO, KC_NO, LC3, LC4, LC5, LC6, LC7, LC8, KC_NO }, \ + { KC_NO, KC_NO, LD3, LD4, LD5, LD6, LD7, LD8, LD9 }, \ + { KC_NO, KC_NO, LE3, LE4, LE5, LE6, KC_NO, LE8, KC_NO }, \ + { RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, KC_NO }, \ + { RB1, RB2, RB3, RB4, RB5, RB6, RB7, KC_NO, KC_NO }, \ + { RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, KC_NO }, \ + { RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, KC_NO }, \ + { RE1, RE2, RE3, RE4, RE5, KC_NO, RE7, RE8, KC_NO } \ + } + +#define LAYOUT_65_iso( \ + LA3, LA4, LA5, LA6, LA7, LA8, LA9, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, RA9, \ + LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB9, \ + LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, RC9, \ + LD3, LD4, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, RD9, \ + LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE3, RE4, RE5, RE7, RE8, RE9 \ + ) \ + { \ + { KC_NO, KC_NO, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \ + { KC_NO, KC_NO, LB3, LB4, LB5, LB6, LB7, LB8, KC_NO }, \ + { KC_NO, KC_NO, LC3, LC4, LC5, LC6, LC7, LC8, KC_NO }, \ + { KC_NO, KC_NO, LD3, LD4, LD5, LD6, LD7, LD8, LD9 }, \ + { KC_NO, KC_NO, LE3, LE4, LE5, LE6, KC_NO, LE8, KC_NO }, \ + { RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, RA9 }, \ + { RB1, RB2, RB3, RB4, RB5, RB6, RB7, KC_NO, RB9 }, \ + { RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, RC9 }, \ + { RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, RD9 }, \ + { RE1, RE2, RE3, RE4, RE5, KC_NO, RE7, RE8, RE9 } \ + } + +#define LAYOUT_60_iso_with_macro( \ + LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8, LA9, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, \ + LB1, LB2, LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, \ + LC1, LC2, LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, \ + LD1, LD2, LD3, LD4, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, \ + LE1, LE2, LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE3, RE4, RE5, RE7, RE8 \ + ) \ + { \ + { LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \ + { LB1, LB2, LB3, LB4, LB5, LB6, LB7, LB8, KC_NO }, \ + { LC1, LC2, LC3, LC4, LC5, LC6, LC7, LC8, KC_NO }, \ + { LD1, LD2, LD3, LD4, LD5, LD6, LD7, LD8, LD9 }, \ + { LE1, LE2, LE3, LE4, LE5, LE6, KC_NO, LE8, KC_NO }, \ + { RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, KC_NO }, \ + { RB1, RB2, RB3, RB4, RB5, RB6, RB7, KC_NO, KC_NO }, \ + { RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, KC_NO }, \ + { RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, KC_NO }, \ + { RE1, RE2, RE3, RE4, RE5, KC_NO, RE7, RE8, KC_NO } \ + } + +#define LAYOUT_65_iso_with_macro( \ + LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8, LA9, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, RA9, \ + LB1, LB2, LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB9, \ + LC1, LC2, LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, RC9, \ + LD1, LD2, LD3, LD4, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, RD9, \ + LE1, LE2, LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE3, RE4, RE5, RE7, RE8, RE9 \ + ) \ + { \ + { LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \ + { LB1, LB2, LB3, LB4, LB5, LB6, LB7, LB8, KC_NO }, \ + { LC1, LC2, LC3, LC4, LC5, LC6, LC7, LC8, KC_NO }, \ + { LD1, LD2, LD3, LD4, LD5, LD6, LD7, LD8, LD9 }, \ + { LE1, LE2, LE3, LE4, LE5, LE6, KC_NO, LE8, KC_NO }, \ + { RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, RA9 }, \ + { RB1, RB2, RB3, RB4, RB5, RB6, RB7, KC_NO, RB9 }, \ + { RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, RC9 }, \ + { RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, RD9 }, \ + { RE1, RE2, RE3, RE4, RE5, KC_NO, RE7, RE8, RE9 } \ + } + +#define LAYOUT_all( \ + LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8, LA9, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, RA9, \ + LB1, LB2, LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9, \ + LC1, LC2, LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, RC9, \ + LD1, LD2, LD3, LD4, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, RD9, \ + LE1, LE2, LE3, LE4, LE5, LE6, LE7, LE8, RE1, RE2, RE3, RE4, RE5, RE7, RE8, RE9 \ + ) \ + { \ + { LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \ + { LB1, LB2, LB3, LB4, LB5, LB6, LB7, LB8, KC_NO }, \ + { LC1, LC2, LC3, LC4, LC5, LC6, LC7, LC8, KC_NO }, \ + { LD1, LD2, LD3, LD4, LD5, LD6, LD7, LD8, LD9 }, \ + { LE1, LE2, LE3, LE4, LE5, LE6, LE7, LE8, KC_NO }, \ + { RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, RA9 }, \ + { RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9 }, \ + { RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, RC9 }, \ + { RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, RD9 }, \ + { RE1, RE2, RE3, RE4, RE5, KC_NO, RE7, RE8, RE9 } \ + } diff --git a/keyboards/keebio/quefrency/rev4/rules.mk b/keyboards/keebio/quefrency/rev4/rules.mk new file mode 100644 index 000000000000..f071ae81b8a5 --- /dev/null +++ b/keyboards/keebio/quefrency/rev4/rules.mk @@ -0,0 +1,4 @@ +BOOTLOADER = atmel-dfu +BACKLIGHT_ENABLE = no +RGBLIGHT_ENABLE = yes +ENCODER_ENABLE = yes diff --git a/keyboards/keebio/quefrency/rules.mk b/keyboards/keebio/quefrency/rules.mk index 2c5ad0c36b4b..d8d2dd9de501 100644 --- a/keyboards/keebio/quefrency/rules.mk +++ b/keyboards/keebio/quefrency/rules.mk @@ -1,21 +1,17 @@ # MCU name MCU = atmega32u4 -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = yes # Console for debug +CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend SPLIT_KEYBOARD = yes DEFAULT_FOLDER = keebio/quefrency/rev1 +LTO_ENABLE = yes diff --git a/keyboards/keebio/rorschach/info.json b/keyboards/keebio/rorschach/info.json index 8d6ec6abd545..9675f96b8ab9 100644 --- a/keyboards/keebio/rorschach/info.json +++ b/keyboards/keebio/rorschach/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Rorschach", "url": "https://keeb.io", "maintainer": "nooges", - "width": 15, - "height": 6, "layouts": { "LAYOUT": { - "key_count": 52, "layout": [ { "w": 1, "x": 0, "y": 0 }, { "w": 1, "x": 1, "y": 0 }, diff --git a/keyboards/keebio/rorschach/keymaps/insertsnideremarks/keymap.c b/keyboards/keebio/rorschach/keymaps/insertsnideremarks/keymap.c index e345ce4a3837..d03916617f4e 100644 --- a/keyboards/keebio/rorschach/keymaps/insertsnideremarks/keymap.c +++ b/keyboards/keebio/rorschach/keymaps/insertsnideremarks/keymap.c @@ -242,7 +242,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _NUMBERS, _NUMBERS2, _ADJUST); } diff --git a/keyboards/keebio/rorschach/keymaps/insertsnideremarks/rules.mk b/keyboards/keebio/rorschach/keymaps/insertsnideremarks/rules.mk index cf63c44f4f0d..390cb3fd60a4 100644 --- a/keyboards/keebio/rorschach/keymaps/insertsnideremarks/rules.mk +++ b/keyboards/keebio/rorschach/keymaps/insertsnideremarks/rules.mk @@ -3,7 +3,7 @@ # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = yes # Console for debug(+400) diff --git a/keyboards/keebio/rorschach/keymaps/tuesdayjohn/keymap.c b/keyboards/keebio/rorschach/keymaps/tuesdayjohn/keymap.c index 19de124f87b8..ceb75d4f463c 100644 --- a/keyboards/keebio/rorschach/keymaps/tuesdayjohn/keymap.c +++ b/keyboards/keebio/rorschach/keymaps/tuesdayjohn/keymap.c @@ -48,7 +48,7 @@ void dance_LAYER_reset(qk_tap_dance_state_t *state, void *user_data) { } qk_tap_dance_action_t tap_dance_actions[] = { -[ADJ] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_LAYER_finished, dance_LAYER_reset), // Double-tap to activate Adjust layer via oneshot layer +[ADJ] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_LAYER_finished, dance_LAYER_reset), // Double-tap to activate Adjust layer via oneshot layer [LBCB] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, KC_LCBR), // Left bracket on a single-tap, left brace on a double-tap [RBCB] = ACTION_TAP_DANCE_DOUBLE(KC_RBRC, KC_RCBR), // Right bracket on a single-tap, right brace on a double-tap [EQPL] = ACTION_TAP_DANCE_DOUBLE(KC_EQL, KC_PLUS), // Plus sign on a single-tap, equal sign on a double-tap @@ -92,7 +92,7 @@ qk_tap_dance_action_t tap_dance_actions[] = { #define NKROTG MAGIC_TOGGLE_NKRO const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* +/* Colemak (Defauit layer; keys separated by /: tap for first, hold for second; uses Space Cadet Shifts) ,-----------------------------------------------------. ,-----------------------------------------------------. @@ -138,7 +138,7 @@ QWERTY ENTNS, KC_BSPC, KC_ENT, DELNS ), -/* +/* Number/symbol layer (Multiple characters: single-tap for first, double-tap for second) ,-----------------------------------------------------. ,-----------------------------------------------------. @@ -270,7 +270,7 @@ Adjust layer }; -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _NUMBERS, _NUMBERS2, _ADJUST); } diff --git a/keyboards/keebio/rorschach/keymaps/tuesdayjohn/rules.mk b/keyboards/keebio/rorschach/keymaps/tuesdayjohn/rules.mk index cf63c44f4f0d..390cb3fd60a4 100644 --- a/keyboards/keebio/rorschach/keymaps/tuesdayjohn/rules.mk +++ b/keyboards/keebio/rorschach/keymaps/tuesdayjohn/rules.mk @@ -3,7 +3,7 @@ # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = yes # Console for debug(+400) diff --git a/keyboards/keebio/rorschach/rev1/rev1.c b/keyboards/keebio/rorschach/rev1/rev1.c index cd7f935ca5c1..520a869e57ba 100644 --- a/keyboards/keebio/rorschach/rev1/rev1.c +++ b/keyboards/keebio/rorschach/rev1/rev1.c @@ -1,14 +1 @@ #include "rev1.h" - -void matrix_init_kb(void) { - - // // green led on - // DDRD |= (1<<5); - // PORTD &= ~(1<<5); - - // // orange led on - // DDRB |= (1<<0); - // PORTB &= ~(1<<0); - - matrix_init_user(); -}; diff --git a/keyboards/keebio/rorschach/rules.mk b/keyboards/keebio/rorschach/rules.mk index caf5fdf82420..01f518c211c0 100644 --- a/keyboards/keebio/rorschach/rules.mk +++ b/keyboards/keebio/rorschach/rules.mk @@ -2,29 +2,17 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend SPLIT_KEYBOARD = yes diff --git a/keyboards/keebio/sinc/info.json b/keyboards/keebio/sinc/info.json index fbbde699c431..9b89484bba70 100644 --- a/keyboards/keebio/sinc/info.json +++ b/keyboards/keebio/sinc/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Sinc", "url": "https://keeb.io", "maintainer": "nooges", - "width": 19, - "height": 6.25, "layouts": { "LAYOUT_75": { "layout": [ diff --git a/keyboards/keebio/sinc/keymaps/lickel/keymap.c b/keyboards/keebio/sinc/keymaps/lickel/keymap.c new file mode 100644 index 000000000000..abdb33e93643 --- /dev/null +++ b/keyboards/keebio/sinc/keymaps/lickel/keymap.c @@ -0,0 +1,109 @@ +/* Copyright 2021 @ Adam Lickel + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum custom_keycodes { +#ifdef VIA_ENABLE + KC_MISSION_CONTROL = USER00, +#else + KC_MISSION_CONTROL = SAFE_RANGE, +#endif + KC_LAUNCHPAD +}; + +#define KC_MCTL KC_MISSION_CONTROL +#define KC_LPAD KC_LAUNCHPAD + +// clang-format off + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_80_with_macro( + KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MPLY, + KC_F1, KC_F2, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_HOME, + KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_F9, KC_F10, KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, MO(1), KC_SPC, KC_RGUI, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_80_with_macro( + _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_80_with_macro( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_80_with_macro( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + +// clang-format on + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + if (clockwise) { + tap_code(KC_PGDN); + } else { + tap_code(KC_PGUP); + } + return false; + } else if (index == 1) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + return false; + } else { + return true; + } +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_MISSION_CONTROL: + if (record->event.pressed) { + host_consumer_send(0x29F); + } else { + host_consumer_send(0); + } + return false; + case KC_LAUNCHPAD: + if (record->event.pressed) { + host_consumer_send(0x2A0); + } else { + host_consumer_send(0); + } + return false; + default: + return true; + } +} diff --git a/keyboards/keebio/sinc/keymaps/lickel/readme.md b/keyboards/keebio/sinc/keymaps/lickel/readme.md new file mode 100644 index 000000000000..a41c16de236f --- /dev/null +++ b/keyboards/keebio/sinc/keymaps/lickel/readme.md @@ -0,0 +1,18 @@ +# lickel's Sinc keymap + +- Via support is enabled by default +- Function Row is optimized for macOS +- RGB controls mimic the stock Keychron Q1 layout +- F3 opens Mission Control and F4 opens Launchpad +- Left macros are: F1->F10 +- Right macros are: Play, Home, Pg Up, Pg Dn, End, Right + +![Layout](https://i.imgur.com/uQnzMSe.png) + +([KLE](http://www.keyboard-layout-editor.com/#/gists/e0350d8914cac3166abcca6abfd093b7)) + +## Changelog + +### 11/27/2021 - 1.0 + +- Initial release diff --git a/keyboards/keebio/sinc/keymaps/lickel/rules.mk b/keyboards/keebio/sinc/keymaps/lickel/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/keebio/sinc/keymaps/lickel/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/keebio/sinc/keymaps/via/rules.mk b/keyboards/keebio/sinc/keymaps/via/rules.mk index 4b1bcabda81a..36b7ba9cbc98 100644 --- a/keyboards/keebio/sinc/keymaps/via/rules.mk +++ b/keyboards/keebio/sinc/keymaps/via/rules.mk @@ -1,3 +1,2 @@ VIA_ENABLE = yes -CONSOLE_ENABLE = yes LTO_ENABLE = yes diff --git a/keyboards/keebio/sinc/rules.mk b/keyboards/keebio/sinc/rules.mk index 209b74de96e8..69b805e0c135 100644 --- a/keyboards/keebio/sinc/rules.mk +++ b/keyboards/keebio/sinc/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = yes # Console for debug +CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend LTO_ENABLE = yes SPLIT_KEYBOARD = yes diff --git a/keyboards/keebio/stick/config.h b/keyboards/keebio/stick/config.h index 0a43bb86114b..cd641ea28bd2 100644 --- a/keyboards/keebio/stick/config.h +++ b/keyboards/keebio/stick/config.h @@ -52,6 +52,54 @@ along with this program. If not, see . // RGB Matrix # ifdef RGB_MATRIX_ENABLE # define DRIVER_LED_TOTAL RGBLED_NUM +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH # endif #endif diff --git a/keyboards/keebio/stick/info.json b/keyboards/keebio/stick/info.json index 33029e8cbfb2..494dbe664ba9 100644 --- a/keyboards/keebio/stick/info.json +++ b/keyboards/keebio/stick/info.json @@ -2,8 +2,6 @@ "keyboard_name": "The Stick", "url": "https://keeb.io", "maintainer": "nooges", - "width": 12, - "height": 1, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/keebio/stick/rules.mk b/keyboards/keebio/stick/rules.mk index 36791b6c633c..1ae134e6a78c 100644 --- a/keyboards/keebio/stick/rules.mk +++ b/keyboards/keebio/stick/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 +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 = 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 ENCODER_ENABLE = yes RGB_MATRIX_ENABLE = yes diff --git a/keyboards/keebio/tragicforce68/info.json b/keyboards/keebio/tragicforce68/info.json index 3ff0b3678f7d..cb806cc5cbcd 100644 --- a/keyboards/keebio/tragicforce68/info.json +++ b/keyboards/keebio/tragicforce68/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Tragicforce 68", "url": "https://keeb.io", "maintainer": "Keebio", - "width": 17.25, - "height": 5, "layouts": { "LAYOUT_68_ansi": { "layout": [ diff --git a/keyboards/keebio/tragicforce68/rules.mk b/keyboards/keebio/tragicforce68/rules.mk index 549ffe9fad39..892ac5fcb0a2 100644 --- a/keyboards/keebio/tragicforce68/rules.mk +++ b/keyboards/keebio/tragicforce68/rules.mk @@ -2,31 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = yes # Console for debug -COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output LAYOUTS = 68_ansi diff --git a/keyboards/keebio/tragicforce68/tragicforce68.c b/keyboards/keebio/tragicforce68/tragicforce68.c index 327197d254d3..42df8ec295f4 100644 --- a/keyboards/keebio/tragicforce68/tragicforce68.c +++ b/keyboards/keebio/tragicforce68/tragicforce68.c @@ -1,8 +1 @@ #include "tragicforce68.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} diff --git a/keyboards/keebio/tukey/info.json b/keyboards/keebio/tukey/info.json index a43d1dbbf452..a17d5afa44bd 100644 --- a/keyboards/keebio/tukey/info.json +++ b/keyboards/keebio/tukey/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Tukey", "url": "https://keeb.io", "maintainer": "nooges", - "width": 2, - "height": 1, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/keebio/tukey/rules.mk b/keyboards/keebio/tukey/rules.mk index 0bf336fe0f77..985e18ffdc91 100644 --- a/keyboards/keebio/tukey/rules.mk +++ b/keyboards/keebio/tukey/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/keebio/viterbi/info.json b/keyboards/keebio/viterbi/info.json index c37d941f40ca..f28a7410d1c7 100644 --- a/keyboards/keebio/viterbi/info.json +++ b/keyboards/keebio/viterbi/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Viterbi", "url": "https://keeb.io", "maintainer": "nooges", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/keebio/viterbi/keymaps/drashna/rules.mk b/keyboards/keebio/viterbi/keymaps/drashna/rules.mk index 3246c1807896..487031b36dfe 100644 --- a/keyboards/keebio/viterbi/keymaps/drashna/rules.mk +++ b/keyboards/keebio/viterbi/keymaps/drashna/rules.mk @@ -1,4 +1,4 @@ -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) @@ -12,7 +12,6 @@ SPACE_CADET_ENABLE = no NO_SECRETS = yes INDICATOR_LIGHTS = no -RGBLIGHT_TWINKLE = no LAYOUTS = ortho_5x7 # SRC := $(filter-out serial.c matrix.c i2c.c split_util.c,$(SRC)) diff --git a/keyboards/keebio/viterbi/keymaps/drashna_old/config.h b/keyboards/keebio/viterbi/keymaps/drashna_old/config.h deleted file mode 100644 index 5697f7f11090..000000000000 --- a/keyboards/keebio/viterbi/keymaps/drashna_old/config.h +++ /dev/null @@ -1,25 +0,0 @@ -/* -Copyright 2017 Danny Nguyen - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -#include "../drashna/config.h" - -#ifdef RGBLIGHT_ENABLE -# undef RGBLED_NUM -# define RGBLED_NUM 12 -#endif diff --git a/keyboards/keebio/viterbi/keymaps/drashna_old/keymap.c b/keyboards/keebio/viterbi/keymaps/drashna_old/keymap.c deleted file mode 100644 index 2d361da9a34c..000000000000 --- a/keyboards/keebio/viterbi/keymaps/drashna_old/keymap.c +++ /dev/null @@ -1 +0,0 @@ -//placeholder \ No newline at end of file diff --git a/keyboards/keebio/viterbi/keymaps/drashna_old/rules.mk b/keyboards/keebio/viterbi/keymaps/drashna_old/rules.mk deleted file mode 100644 index 73f37c6c558b..000000000000 --- a/keyboards/keebio/viterbi/keymaps/drashna_old/rules.mk +++ /dev/null @@ -1,4 +0,0 @@ -USER_NAME := drashna -SRC += ../drashna/keymap.c - -include $(KEYBOARD_PATH_2)/keymaps/drashna/rules.mk diff --git a/keyboards/keebio/viterbi/rev2/rules.mk b/keyboards/keebio/viterbi/rev2/rules.mk index f95e7ae6a4a9..829d6a56e0b2 100644 --- a/keyboards/keebio/viterbi/rev2/rules.mk +++ b/keyboards/keebio/viterbi/rev2/rules.mk @@ -1,3 +1,5 @@ BACKLIGHT_ENABLE = yes LAYOUTS = ortho_5x14 + +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/keebio/viterbi/rules.mk b/keyboards/keebio/viterbi/rules.mk index 0b746d17207f..e5c29159f775 100644 --- a/keyboards/keebio/viterbi/rules.mk +++ b/keyboards/keebio/viterbi/rules.mk @@ -2,33 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = yes # Commands for debug and configuration +COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. SPLIT_KEYBOARD = yes diff --git a/keyboards/keebio/wavelet/info.json b/keyboards/keebio/wavelet/info.json index a71058b95ada..a4bc57b86f04 100644 --- a/keyboards/keebio/wavelet/info.json +++ b/keyboards/keebio/wavelet/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Wavelet", "url": "https://keeb.io", "maintainer": "Keebio", - "width": 12, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/keebio/wavelet/rules.mk b/keyboards/keebio/wavelet/rules.mk index cf4cab56e4d3..82a765bf9725 100644 --- a/keyboards/keebio/wavelet/rules.mk +++ b/keyboards/keebio/wavelet/rules.mk @@ -2,35 +2,22 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - LAYOUTS = ortho_4x12 # Disable unsupported hardware diff --git a/keyboards/keebio/wavelet/wavelet.c b/keyboards/keebio/wavelet/wavelet.c index 68011e266c47..466b4fe72e82 100644 --- a/keyboards/keebio/wavelet/wavelet.c +++ b/keyboards/keebio/wavelet/wavelet.c @@ -1,18 +1,5 @@ #include "wavelet.h" -void matrix_init_kb(void) { - - // // green led on - // DDRD |= (1<<5); - // PORTD &= ~(1<<5); - - // // orange led on - // DDRB |= (1<<0); - // PORTB &= ~(1<<0); - - matrix_init_user(); -}; - #ifdef SWAP_HANDS_ENABLE __attribute__ ((weak)) const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { diff --git a/keyboards/keebio/wtf60/info.json b/keyboards/keebio/wtf60/info.json index cdb30ea7ad6c..ad7e9c8c8900 100644 --- a/keyboards/keebio/wtf60/info.json +++ b/keyboards/keebio/wtf60/info.json @@ -2,8 +2,6 @@ "keyboard_name": "WTF60", "url": "https://keeb.io", "maintainer": "Keebio", - "width": 15, - "height": 5, "layouts": { "LAYOUT_full_wtf": { "layout": [{"label":"Bksp", "x":0, "y":0}, {"label":"Del", "x":1, "y":0}, {"label":"+", "x":2, "y":0}, {"label":"_", "x":3, "y":0}, {"label":")", "x":4, "y":0}, {"label":"(", "x":5, "y":0}, {"label":"*", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"^", "x":8, "y":0}, {"label":"%", "x":9, "y":0}, {"label":"$", "x":10, "y":0}, {"label":"#", "x":11, "y":0}, {"label":"@", "x":12, "y":0}, {"label":"!", "x":13, "y":0}, {"label":"Esc", "x":14, "y":0}, {"label":"|", "x":0, "y":1, "w":1.5}, {"label":"}", "x":1.5, "y":1}, {"label":"{", "x":2.5, "y":1}, {"label":"P", "x":3.5, "y":1}, {"label":"O", "x":4.5, "y":1}, {"label":"I", "x":5.5, "y":1}, {"label":"U", "x":6.5, "y":1}, {"label":"Y", "x":7.5, "y":1}, {"label":"T", "x":8.5, "y":1}, {"label":"R", "x":9.5, "y":1}, {"label":"E", "x":10.5, "y":1}, {"label":"W", "x":11.5, "y":1}, {"label":"Q", "x":12.5, "y":1}, {"label":"Tab", "x":13.5, "y":1, "w":1.5}, {"label":"Enter", "x":0, "y":2, "w":1.25}, {"label":"~", "x":1.25, "y":2}, {"label":"\"", "x":2.25, "y":2}, {"label":":", "x":3.25, "y":2}, {"label":"L", "x":4.25, "y":2}, {"label":"K", "x":5.25, "y":2}, {"label":"J", "x":6.25, "y":2}, {"label":"H", "x":7.25, "y":2}, {"label":"G", "x":8.25, "y":2}, {"label":"F", "x":9.25, "y":2}, {"label":"D", "x":10.25, "y":2}, {"label":"S", "x":11.25, "y":2}, {"label":"A", "x":12.25, "y":2}, {"label":"Caps Lock", "x":13.25, "y":2, "w":1.75}, {"label":"Fn", "x":0, "y":3}, {"label":"Shift", "x":1, "y":3, "w":1.75}, {"label":"?", "x":2.75, "y":3}, {"label":">", "x":3.75, "y":3}, {"label":"<", "x":4.75, "y":3}, {"label":"M", "x":5.75, "y":3}, {"label":"N", "x":6.75, "y":3}, {"label":"B", "x":7.75, "y":3}, {"label":"V", "x":8.75, "y":3}, {"label":"C", "x":9.75, "y":3}, {"label":"X", "x":10.75, "y":3}, {"label":"Z", "x":11.75, "y":3}, {"label":"|", "x":12.75, "y":3}, {"label":"Shift", "x":13.75, "y":3, "w":1.25}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Menu", "x":1.25, "y":4, "w":1.25}, {"label":"Win", "x":2.5, "y":4, "w":1.25}, {"label":"Alt", "x":3.75, "y":4, "w":1.25}, {"x":5, "y":4, "w":6.25}, {"label":"Alt", "x":11.25, "y":4, "w":1.25}, {"label":"Win", "x":12.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}] diff --git a/keyboards/keebio/wtf60/rules.mk b/keyboards/keebio/wtf60/rules.mk index 487df752e287..734ca609f14e 100644 --- a/keyboards/keebio/wtf60/rules.mk +++ b/keyboards/keebio/wtf60/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = yes # Console for debug +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 = 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 LTO_ENABLE = yes diff --git a/keyboards/keebsforall/coarse60/chconf.h b/keyboards/keebsforall/coarse60/chconf.h new file mode 100644 index 000000000000..2dfe6f0be0e6 --- /dev/null +++ b/keyboards/keebsforall/coarse60/chconf.h @@ -0,0 +1,31 @@ +/* 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/projectkb/alice/chconf.h -r platforms/chibios/common/configs/chconf.h` + */ + +#pragma once + +#define CH_CFG_ST_FREQUENCY 10000 + +#define CH_CFG_OPTIMIZE_SPEED FALSE + +#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE + +#include_next + diff --git a/keyboards/keebsforall/coarse60/coarse60.c b/keyboards/keebsforall/coarse60/coarse60.c new file mode 100644 index 000000000000..8287eec1a862 --- /dev/null +++ b/keyboards/keebsforall/coarse60/coarse60.c @@ -0,0 +1,29 @@ +/* +Copyright 2021 Elliot Powell + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "coarse60.h" + +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + if (index == 0) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } + return true; +} diff --git a/keyboards/keebsforall/coarse60/coarse60.h b/keyboards/keebsforall/coarse60/coarse60.h new file mode 100644 index 000000000000..76f147cf12f6 --- /dev/null +++ b/keyboards/keebsforall/coarse60/coarse60.h @@ -0,0 +1,50 @@ +/* +Copyright 2021 Elliot Powell + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "quantum.h" + +#define KNO KC_NO +#define LAYOUT_default LAYOUT_alice_split_bs + +#define LAYOUT_alice_split_bs( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K2D,\ + 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, K2E, \ + K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K41, K44, K45, 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, K2C, K2D, K2E }, \ + { KNO, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \ + { KNO, K41, KNO, KNO, K44, K45, K46, KNO, K48, KNO, K4A, KNO, KNO, KNO, K4E } \ +} + +#define LAYOUT_alice( \ + 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, K2E, \ + K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K41, K44, K45, 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, K2C, KNO, K2E }, \ + { KNO, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \ + { KNO, K41, KNO, KNO, K44, K45, K46, KNO, K48, KNO, K4A, KNO, KNO, KNO, K4E } \ +} diff --git a/keyboards/keebsforall/coarse60/config.h b/keyboards/keebsforall/coarse60/config.h new file mode 100644 index 000000000000..ee37802145a1 --- /dev/null +++ b/keyboards/keebsforall/coarse60/config.h @@ -0,0 +1,103 @@ +/* +Copyright 2021 Elliot Powell + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x6B66 +#define PRODUCT_ID 0x5341 +#define DEVICE_VER 0x0001 +#define MANUFACTURER KeebsforAll +#define PRODUCT coarse60 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +#define MATRIX_COL_PINS { B1, B0, A7, B14, A5, A4, A3, B9, B8, B7, B6, B5, B4, B3, A15 } +#define MATRIX_ROW_PINS { A9, A10, B12, A2, C13 } +#define DIODE_DIRECTION COL2ROW + +#define BACKLIGHT_PIN A6 +#define BACKLIGHT_PWM_DRIVER PWMD3 +#define BACKLIGHT_PWM_CHANNEL 1 +#define BACKLIGHT_PAL_MODE 1 +#define BACKLIGHT_LEVELS 6 +#define BACKLIGHT_BREATHING +#define BREATHING_PERIOD 6 + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* 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 RGB_DI_PIN B15 +#define RGBLED_NUM 14 +#define WS2812_SPI SPID2 +#define WS2812_SPI_MOSI_PAL_MODE 0 +#define WS2812_SPI_SCK_PAL_MODE 0 +#define WS2812_SPI_SCK_PIN B13 + +#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 LED_NUM_LOCK_PIN B2 +#define LED_CAPS_LOCK_PIN B10 +#define LED_SCROLL_LOCK_PIN B11 +#define LED_PIN_ON_STATE 0 + +#define ENCODERS_PAD_A { A8 } +#define ENCODERS_PAD_B { A1 } +#define ENCODER_RESOLUTION 2 + +// 2 bits for 4 layout options +#define VIA_EEPROM_LAYOUT_OPTIONS_SIZE 2 + +/* + * 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 + + +#define SLEEP_LED_GPT_DRIVER GPTD1 diff --git a/keyboards/keebsforall/coarse60/halconf.h b/keyboards/keebsforall/coarse60/halconf.h new file mode 100644 index 000000000000..0016e53ba87a --- /dev/null +++ b/keyboards/keebsforall/coarse60/halconf.h @@ -0,0 +1,33 @@ +/* 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/projectkb/alice/halconf.h -r platforms/chibios/common/configs/halconf.h` + */ + +#pragma once + +#define HAL_USE_I2C TRUE + +#define HAL_USE_PWM TRUE + +#define HAL_USE_SPI TRUE + +#define HAL_USE_GPT TRUE + +#include_next + diff --git a/keyboards/keebsforall/coarse60/info.json b/keyboards/keebsforall/coarse60/info.json new file mode 100644 index 000000000000..8718b79f447c --- /dev/null +++ b/keyboards/keebsforall/coarse60/info.json @@ -0,0 +1,154 @@ +{ + "keyboard_name": "coarse60", + "url":"https://keebsforall.com", + "maintainer": "keebsforall", + "layouts": { + "LAYOUT_alice_split_bs": { + "layout": [ + {"label":"Esc", "x":0.5, "y":0}, + {"label":"`", "x":1.75, "y":0.25}, + {"label":"1", "x":2.75, "y":0.25}, + {"label":"2", "x":3.75, "y":0}, + {"label":"3", "x":4.75, "y":0.25}, + {"label":"4", "x":5.75, "y":0.25}, + {"label":"5", "x":6.75, "y":0.25}, + {"label":"6", "x":7.75, "y":0.25}, + {"label":"7", "x":11, "y":0.25}, + {"label":"8", "x":12, "y":0.25}, + {"label":"9", "x":13, "y":0.25}, + {"label":"0", "x":14, "y":0.25}, + {"label":"-", "x":15, "y":0}, + {"label":"=", "x":16, "y":0.25}, + {"label":"Del", "x":17, "y":0.25}, + {"label":"Backspace", "x":18, "y":0.25}, + + {"label":"PgUp", "x":0.25, "y":1}, + {"label":"Tab", "x":1.5, "y":1.25, "w":1.5}, + {"label":"Q", "x":3, "y":1.25}, + {"label":"W", "x":4.25, "y":1.25}, + {"label":"E", "x":5.25, "y":1.25}, + {"label":"R", "x":6.25, "y":1.25}, + {"label":"T", "x":7.25, "y":1.25}, + {"label":"Y", "x":10.5, "y":1.25}, + {"label":"U", "x":11.5, "y":1.25}, + {"label":"I", "x":12.5, "y":1.25}, + {"label":"O", "x":13.5, "y":1.25}, + {"label":"P", "x":14.75, "y":1.25}, + {"label":"{", "x":15.75, "y":1.25}, + {"label":"}", "x":16.75, "y":1.25}, + {"label":"|", "x":17.75, "y":1.25, "w":1.5}, + + {"label":"PgDn", "x":0, "y":2}, + {"label":"Caps Lock", "x":1.5, "y":2.25, "w":1.75}, + {"label":"A", "x":3.25, "y":2.25}, + {"label":"S", "x":4.5, "y":2.25}, + {"label":"D", "x":5.5, "y":2.25}, + {"label":"F", "x":6.5, "y":2.25}, + {"label":"G", "x":7.5, "y":2.25}, + {"label":"H", "x":10.75, "y":2.25}, + {"label":"J", "x":11.75, "y":2.25}, + {"label":"K", "x":12.75, "y":2.25}, + {"label":"L", "x":13.75, "y":2.25}, + {"label":":", "x":15.25, "y":2.25}, + {"label":"\"", "x":16.25, "y":2.25}, + {"label":"Enter", "x":17.25, "y":2.25, "w":2.25}, + + {"label":"Shift", "x":1.5, "y":3.25, "w":2.25}, + {"label":"Z", "x":3.75, "y":3.25}, + {"label":"X", "x":5, "y":3.25}, + {"label":"C", "x":6, "y":3.25}, + {"label":"V", "x":7, "y":3.25}, + {"label":"B", "x":8, "y":3.25}, + {"label":"Fn", "x":10.25, "y":3.25}, + {"label":"N", "x":11.25, "y":3.25}, + {"label":"M", "x":12.25, "y":3.25}, + {"label":"<", "x":13.25, "y":3.25}, + {"label":">", "x":15, "y":3.25}, + {"label":"?", "x":16, "y":3.25}, + {"label":"Shift", "x":17, "y":3.25, "w":1.75}, + {"label":"Fn", "x":18.75, "y":3.25}, + + {"label":"Ctrl", "x":1.5, "y":4.25, "w":1.5}, + {"label":"Alt", "x":5, "y":4.25, "w":1.5}, + {"label":"Space", "x":6.5, "y":4.25, "w":2}, + {"label":"Menu", "x":8.5, "y":4.25}, + {"label":"Space", "x":10.25, "y":4.25, "w":2.75}, + {"label":"Alt", "x":13, "y":4.25, "w":1.5}, + {"label":"Ctrl", "x":18, "y":4.25, "w":1.5} + ] + }, + "LAYOUT_alice": { + "layout": [ + {"label":"Esc", "x":0.5, "y":0}, + {"label":"`", "x":1.75, "y":0.25}, + {"label":"1", "x":2.75, "y":0.25}, + {"label":"2", "x":3.75, "y":0}, + {"label":"3", "x":4.75, "y":0.25}, + {"label":"4", "x":5.75, "y":0.25}, + {"label":"5", "x":6.75, "y":0.25}, + {"label":"6", "x":7.75, "y":0.25}, + {"label":"7", "x":11, "y":0.25}, + {"label":"8", "x":12, "y":0.25}, + {"label":"9", "x":13, "y":0.25}, + {"label":"0", "x":14, "y":0.25}, + {"label":"-", "x":15, "y":0}, + {"label":"=", "x":16, "y":0.25}, + {"label":"Backspace", "x":17, "y":0.25, "w":2}, + + {"label":"PgUp", "x":0.25, "y":1}, + {"label":"Tab", "x":1.5, "y":1.25, "w":1.5}, + {"label":"Q", "x":3, "y":1.25}, + {"label":"W", "x":4.25, "y":1.25}, + {"label":"E", "x":5.25, "y":1.25}, + {"label":"R", "x":6.25, "y":1.25}, + {"label":"T", "x":7.25, "y":1.25}, + {"label":"Y", "x":10.5, "y":1.25}, + {"label":"U", "x":11.5, "y":1.25}, + {"label":"I", "x":12.5, "y":1.25}, + {"label":"O", "x":13.5, "y":1.25}, + {"label":"P", "x":14.75, "y":1.25}, + {"label":"{", "x":15.75, "y":1.25}, + {"label":"}", "x":16.75, "y":1.25}, + {"label":"|", "x":17.75, "y":1.25, "w":1.5}, + + {"label":"PgDn", "x":0, "y":2}, + {"label":"Caps Lock", "x":1.5, "y":2.25, "w":1.75}, + {"label":"A", "x":3.25, "y":2.25}, + {"label":"S", "x":4.5, "y":2.25}, + {"label":"D", "x":5.5, "y":2.25}, + {"label":"F", "x":6.5, "y":2.25}, + {"label":"G", "x":7.5, "y":2.25}, + {"label":"H", "x":10.75, "y":2.25}, + {"label":"J", "x":11.75, "y":2.25}, + {"label":"K", "x":12.75, "y":2.25}, + {"label":"L", "x":13.75, "y":2.25}, + {"label":":", "x":15.25, "y":2.25}, + {"label":"\"", "x":16.25, "y":2.25}, + {"label":"Enter", "x":17.25, "y":2.25, "w":2.25}, + + {"label":"Shift", "x":1.5, "y":3.25, "w":2.25}, + {"label":"Z", "x":3.75, "y":3.25}, + {"label":"X", "x":5, "y":3.25}, + {"label":"C", "x":6, "y":3.25}, + {"label":"V", "x":7, "y":3.25}, + {"label":"B", "x":8, "y":3.25}, + {"label":"Fn", "x":10.25, "y":3.25}, + {"label":"N", "x":11.25, "y":3.25}, + {"label":"M", "x":12.25, "y":3.25}, + {"label":"<", "x":13.25, "y":3.25}, + {"label":">", "x":15, "y":3.25}, + {"label":"?", "x":16, "y":3.25}, + {"label":"Shift", "x":17, "y":3.25, "w":1.75}, + {"label":"Fn", "x":18.75, "y":3.25}, + + {"label":"Ctrl", "x":1.5, "y":4.25, "w":1.5}, + {"label":"Alt", "x":5, "y":4.25, "w":1.5}, + {"label":"Space", "x":6.5, "y":4.25, "w":2}, + {"label":"Menu", "x":8.5, "y":4.25}, + {"label":"Space", "x":10.25, "y":4.25, "w":2.75}, + {"label":"Alt", "x":13, "y":4.25, "w":1.5}, + {"label":"Ctrl", "x":18, "y":4.25, "w":1.5} + ] + } + } +} diff --git a/keyboards/keebsforall/coarse60/keymaps/default/keymap.c b/keyboards/keebsforall/coarse60/keymaps/default/keymap.c new file mode 100644 index 000000000000..702785058216 --- /dev/null +++ b/keyboards/keebsforall/coarse60/keymaps/default/keymap.c @@ -0,0 +1,37 @@ +/* +Copyright 2021 Elliot Powell + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_alice_split_bs( + KC_ESC, KC_TILD, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, KC_BSPC, + KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RGUI, + KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RCTL + ), + + [1] = LAYOUT_alice_split_bs( + RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, + RGB_MOD, _______, _______, KC_UP, _______, _______, _______, RGB_SAI, RGB_HUI, RGB_VAI, _______, _______, _______, _______, _______, + RGB_RMOD, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, RGB_SAD, RGB_HUD, RGB_VAD, _______, _______, _______, _______, + _______, BL_INC, BL_DEC, BL_TOGG, BL_BRTG, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, RESET + ) +}; diff --git a/keyboards/keebsforall/coarse60/keymaps/via/keymap.c b/keyboards/keebsforall/coarse60/keymaps/via/keymap.c new file mode 100644 index 000000000000..6139c43d73dc --- /dev/null +++ b/keyboards/keebsforall/coarse60/keymaps/via/keymap.c @@ -0,0 +1,52 @@ +/* +Copyright 2021 Elliot Powell + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_alice_split_bs( + KC_ESC, KC_TILD, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, KC_BSPC, + KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RGUI, + KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RCTL + ), + + [1] = LAYOUT_alice_split_bs( + RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, + RGB_MOD, _______, _______, KC_UP, _______, _______, _______, RGB_SAI, RGB_HUI, RGB_VAI, _______, _______, _______, _______, _______, + RGB_RMOD, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, RGB_SAD, RGB_HUD, RGB_VAD, _______, _______, _______, _______, + _______, BL_INC, BL_DEC, BL_TOGG, BL_BRTG, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, RESET + ), + + [2] = LAYOUT_alice_split_bs( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ), + + [3] = LAYOUT_alice_split_bs( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/keebsforall/coarse60/keymaps/via/rules.mk b/keyboards/keebsforall/coarse60/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/keebsforall/coarse60/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/keebsforall/coarse60/mcuconf.h b/keyboards/keebsforall/coarse60/mcuconf.h new file mode 100644 index 000000000000..6e0f1a50d89f --- /dev/null +++ b/keyboards/keebsforall/coarse60/mcuconf.h @@ -0,0 +1,36 @@ +/* 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/projectkb/alice/mcuconf.h -r platforms/chibios/GENERIC_STM32_F072XB/configs/mcuconf.h` + */ + +#pragma once + +#include_next + +#undef STM32_I2C_USE_I2C1 +#define STM32_I2C_USE_I2C1 TRUE + +#undef STM32_PWM_USE_TIM3 +#define STM32_PWM_USE_TIM3 TRUE + +#undef STM32_SPI_USE_SPI2 +#define STM32_SPI_USE_SPI2 TRUE + +#undef STM32_GPT_USE_TIM1 +#define STM32_GPT_USE_TIM1 TRUE diff --git a/keyboards/keebsforall/coarse60/readme.md b/keyboards/keebsforall/coarse60/readme.md new file mode 100644 index 000000000000..cde61524996b --- /dev/null +++ b/keyboards/keebsforall/coarse60/readme.md @@ -0,0 +1,22 @@ +# Coarse60 +### seh0nky x KeebsForAll + +A beginner-friendly aluminum alice inspired keyboard. The Coarse60 aims to provide a seamless aluminum keyboard with premium features for an affordable price. + +![coarse60](https://i.imgur.com/L6dw2xKh.jpg) + +* Hardware Supported: seh0nky x KeebsForAll Coarse60 +* Keyboard Maintainer: [e11i0t23](https://github.com/e11i0t23) +* Keyboard Availabilty: [keebsforall](https://keebsforall.com) + +Make example for this keyboard (after setting up your build environment): + + make keebsforall/coarse60:default + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the top left key (Escape by default) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB (S1) +* **Keycode in layout**: Press the key mapped to `RESET` if it is available + +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/keebsforall/coarse60/rules.mk b/keyboards/keebsforall/coarse60/rules.mk new file mode 100644 index 000000000000..9cf37bb52930 --- /dev/null +++ b/keyboards/keebsforall/coarse60/rules.mk @@ -0,0 +1,27 @@ +# 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 = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# 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 = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +WS2812_DRIVER = spi +ENCODER_ENABLE = yes + + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE + +LAYOUTS = alice alice_split_bs diff --git a/keyboards/keebsforall/freebird60/info.json b/keyboards/keebsforall/freebird60/info.json index 4f0132909862..9b8b3ab5cc8b 100644 --- a/keyboards/keebsforall/freebird60/info.json +++ b/keyboards/keebsforall/freebird60/info.json @@ -2,8 +2,6 @@ "keyboard_name": "freebird60", "url": "", "maintainer": "KnoblesseOblige", - "width": 14, - "height": 5, "layouts": { "LAYOUT": { "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}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"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/keebsforall/freebird60/rules.mk b/keyboards/keebsforall/freebird60/rules.mk index 5c0d8f307c54..d2109f62500b 100644 --- a/keyboards/keebsforall/freebird60/rules.mk +++ b/keyboards/keebsforall/freebird60/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/keebsforall/freebirdtkl/config.h b/keyboards/keebsforall/freebirdtkl/config.h new file mode 100644 index 000000000000..f9717d06d5bb --- /dev/null +++ b/keyboards/keebsforall/freebirdtkl/config.h @@ -0,0 +1,55 @@ +/* +Copyright 2021 KnoblesseOblige + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x75FA /* "K"FA */ +#define PRODUCT_ID 0x0088 +#define DEVICE_VER 0x0001 +#define MANUFACTURER KeebsForAll +#define PRODUCT FreebirdTKL + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 17 + +/* + * 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 { B2, B1, B0, B3, D5, B7 } +#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, D3, D2, D1 } +#define UNUSED_PINS + +#define DIODE_DIRECTION COL2ROW + +#define DEBOUNCE 5 + +#define LOCKING_SUPPORT_ENABLE +#define LOCKING_RESYNC_ENABLE + +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/keebsforall/freebirdtkl/freebirdtkl.c b/keyboards/keebsforall/freebirdtkl/freebirdtkl.c new file mode 100644 index 000000000000..f996c90e7ba1 --- /dev/null +++ b/keyboards/keebsforall/freebirdtkl/freebirdtkl.c @@ -0,0 +1,17 @@ +/* Copyright 2021 KnoblesseOblige + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "freebirdtkl.h" diff --git a/keyboards/keebsforall/freebirdtkl/freebirdtkl.h b/keyboards/keebsforall/freebirdtkl/freebirdtkl.h new file mode 100644 index 000000000000..d091109d0506 --- /dev/null +++ b/keyboards/keebsforall/freebirdtkl/freebirdtkl.h @@ -0,0 +1,77 @@ +/* Copyright 2021 KnoblesseOblige + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define kxx KC_NO + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT_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, k3d, 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, k4d, k4f, \ + k50, k52, k53, k55, k58, k59, k5a, k5b, 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, kxx, kxx, kxx }, \ + { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, kxx, k4d, kxx, k4f, kxx }, \ + { k50, kxx, k52, k53, kxx, k55, kxx, kxx, k58, k59, k5a, k5b, kxx, kxx, k5e, k5f, k5g } \ +} + +#define LAYOUT_ansi( \ + 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, \ + k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4f, \ + k50, k52, k53, k55, k58, k59, k5a, k5b, 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, kxx, kxx, kxx, kxx }, \ + { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, kxx, kxx, kxx, k4f, kxx }, \ + { k50, kxx, k52, k53, kxx, k55, kxx, kxx, k58, k59, k5a, k5b, kxx, kxx, k5e, k5f, k5g } \ +} + +#define LAYOUT_tsangan( \ + 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, k3d, 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, k4d, k4f, \ + k50, k52, k53, k55, k59, k5a, k5b, 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, kxx, kxx, kxx }, \ + { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, kxx, k4d, kxx, k4f, kxx }, \ + { k50, kxx, k52, k53, kxx, k55, kxx, kxx, kxx, k59, k5a, k5b, kxx, kxx, k5e, k5f, k5g } \ +} diff --git a/keyboards/keebsforall/freebirdtkl/info.json b/keyboards/keebsforall/freebirdtkl/info.json new file mode 100644 index 000000000000..aedf8777af63 --- /dev/null +++ b/keyboards/keebsforall/freebirdtkl/info.json @@ -0,0 +1,16 @@ +{ + "keyboard_name": "FreebirdTKL", + "url": "https://keebsforall.com", + "maintainer": "KnoblesseOblige", + "layouts": { + "LAYOUT_ansi": { + "layout": [{"label":"0,0", "x":0, "y":0}, {"label":"0,1", "x":1.25, "y":0}, {"label":"0,2", "x":2.25, "y":0}, {"label":"0,3", "x":3.25, "y":0}, {"label":"0,4", "x":4.25, "y":0}, {"label":"0,5", "x":5.5, "y":0}, {"label":"0,6", "x":6.5, "y":0}, {"label":"0,7", "x":7.5, "y":0}, {"label":"0,8", "x":8.5, "y":0}, {"label":"0,9", "x":9.75, "y":0}, {"label":"0,10", "x":10.75, "y":0}, {"label":"0,11", "x":11.75, "y":0}, {"label":"0,12", "x":12.75, "y":0}, {"label":"0,13", "x":14, "y":0}, {"label":"0,14", "x":15.25, "y":0}, {"label":"0,15", "x":16.25, "y":0}, {"label":"0,16", "x":17.25, "y":0}, {"label":"1,0", "x":0, "y":1.25}, {"label":"1,1", "x":1, "y":1.25}, {"label":"1,2", "x":2, "y":1.25}, {"label":"1,3", "x":3, "y":1.25}, {"label":"1,4", "x":4, "y":1.25}, {"label":"1,5", "x":5, "y":1.25}, {"label":"1,6", "x":6, "y":1.25}, {"label":"1,7", "x":7, "y":1.25}, {"label":"1,8", "x":8, "y":1.25}, {"label":"1,9", "x":9, "y":1.25}, {"label":"1,10", "x":10, "y":1.25}, {"label":"1,11", "x":11, "y":1.25}, {"label":"1,12", "x":12, "y":1.25}, {"label":"1,13", "x":13, "y":1.25, "w":2}, {"label":"1,14", "x":15.25, "y":1.25}, {"label":"1,15", "x":16.25, "y":1.25}, {"label":"1,16", "x":17.25, "y":1.25}, {"label":"2,0", "x":0, "y":2.25, "w":1.5}, {"label":"2,1", "x":1.5, "y":2.25}, {"label":"2,2", "x":2.5, "y":2.25}, {"label":"2,3", "x":3.5, "y":2.25}, {"label":"2,4", "x":4.5, "y":2.25}, {"label":"2,5", "x":5.5, "y":2.25}, {"label":"2,6", "x":6.5, "y":2.25}, {"label":"2,7", "x":7.5, "y":2.25}, {"label":"2,8", "x":8.5, "y":2.25}, {"label":"2,9", "x":9.5, "y":2.25}, {"label":"2,10", "x":10.5, "y":2.25}, {"label":"2,11", "x":11.5, "y":2.25}, {"label":"2,12", "x":12.5, "y":2.25}, {"label":"2,13", "x":13.5, "y":2.25, "w":1.5}, {"label":"2,14", "x":15.25, "y":2.25}, {"label":"2,15", "x":16.25, "y":2.25}, {"label":"2,16", "x":17.25, "y":2.25}, {"label":"3,0", "x":0, "y":3.25, "w":1.75}, {"label":"3,1", "x":1.75, "y":3.25}, {"label":"3,2", "x":2.75, "y":3.25}, {"label":"3,3", "x":3.75, "y":3.25}, {"label":"3,4", "x":4.75, "y":3.25}, {"label":"3,5", "x":5.75, "y":3.25}, {"label":"3,6", "x":6.75, "y":3.25}, {"label":"3,7", "x":7.75, "y":3.25}, {"label":"3,8", "x":8.75, "y":3.25}, {"label":"3,9", "x":9.75, "y":3.25}, {"label":"3,10", "x":10.75, "y":3.25}, {"label":"3,11", "x":11.75, "y":3.25}, {"label":"3,12", "x":12.75, "y":3.25, "w":2.25}, {"label":"4,0", "x":0, "y":4.25, "w":2.25}, {"label":"4,1", "x":2.25, "y":4.25}, {"label":"4,2", "x":3.25, "y":4.25}, {"label":"4,3", "x":4.25, "y":4.25}, {"label":"4,4", "x":5.25, "y":4.25}, {"label":"4,5", "x":6.25, "y":4.25}, {"label":"4,6", "x":7.25, "y":4.25}, {"label":"4,7", "x":8.25, "y":4.25}, {"label":"4,8", "x":9.25, "y":4.25}, {"label":"4,9", "x":10.25, "y":4.25}, {"label":"4,10", "x":11.25, "y":4.25}, {"label":"4,11", "x":12.25, "y":4.25, "w":2.75}, {"label":"4,15", "x":16.25, "y":4.25}, {"label":"5,0", "x":0, "y":5.25, "w":1.25}, {"label":"5,2", "x":1.25, "y":5.25, "w":1.25}, {"label":"5,3", "x":2.5, "y":5.25, "w":1.25}, {"label":"5,5", "x":3.75, "y":5.25, "w":6.25}, {"label":"5,8", "x":10, "y":5.25, "w":1.25}, {"label":"5,9", "x":11.25, "y":5.25, "w":1.25}, {"label":"5,10", "x":12.5, "y":5.25, "w":1.25}, {"label":"5,11", "x":13.75, "y":5.25, "w":1.25}, {"label":"5,14", "x":15.25, "y":5.25}, {"label":"5,15", "x":16.25, "y":5.25}, {"label":"5,16", "x":17.25, "y":5.25}] + }, + "LAYOUT_tsangan": { + "layout": [{"label":"0,0", "x":0, "y":0}, {"label":"0,1", "x":1.25, "y":0}, {"label":"0,2", "x":2.25, "y":0}, {"label":"0,3", "x":3.25, "y":0}, {"label":"0,4", "x":4.25, "y":0}, {"label":"0,5", "x":5.5, "y":0}, {"label":"0,6", "x":6.5, "y":0}, {"label":"0,7", "x":7.5, "y":0}, {"label":"0,8", "x":8.5, "y":0}, {"label":"0,9", "x":9.75, "y":0}, {"label":"0,10", "x":10.75, "y":0}, {"label":"0,11", "x":11.75, "y":0}, {"label":"0,12", "x":12.75, "y":0}, {"label":"0,13", "x":14, "y":0}, {"label":"0,14", "x":15.25, "y":0}, {"label":"0,15", "x":16.25, "y":0}, {"label":"0,16", "x":17.25, "y":0}, {"label":"1,0", "x":0, "y":1.25}, {"label":"1,1", "x":1, "y":1.25}, {"label":"1,2", "x":2, "y":1.25}, {"label":"1,3", "x":3, "y":1.25}, {"label":"1,4", "x":4, "y":1.25}, {"label":"1,5", "x":5, "y":1.25}, {"label":"1,6", "x":6, "y":1.25}, {"label":"1,7", "x":7, "y":1.25}, {"label":"1,8", "x":8, "y":1.25}, {"label":"1,9", "x":9, "y":1.25}, {"label":"1,10", "x":10, "y":1.25}, {"label":"1,11", "x":11, "y":1.25}, {"label":"1,12", "x":12, "y":1.25}, {"label":"1,13", "x":13, "y":1.25}, {"label":"3,13", "x":14, "y":1.25}, {"label":"1,14", "x":15.25, "y":1.25}, {"label":"1,15", "x":16.25, "y":1.25}, {"label":"1,16", "x":17.25, "y":1.25}, {"label":"2,0", "x":0, "y":2.25, "w":1.5}, {"label":"2,1", "x":1.5, "y":2.25}, {"label":"2,2", "x":2.5, "y":2.25}, {"label":"2,3", "x":3.5, "y":2.25}, {"label":"2,4", "x":4.5, "y":2.25}, {"label":"2,5", "x":5.5, "y":2.25}, {"label":"2,6", "x":6.5, "y":2.25}, {"label":"2,7", "x":7.5, "y":2.25}, {"label":"2,8", "x":8.5, "y":2.25}, {"label":"2,9", "x":9.5, "y":2.25}, {"label":"2,10", "x":10.5, "y":2.25}, {"label":"2,11", "x":11.5, "y":2.25}, {"label":"2,12", "x":12.5, "y":2.25}, {"label":"2,13", "x":13.5, "y":2.25, "w":1.5}, {"label":"2,14", "x":15.25, "y":2.25}, {"label":"2,15", "x":16.25, "y":2.25}, {"label":"2,16", "x":17.25, "y":2.25}, {"label":"3,0", "x":0, "y":3.25, "w":1.75}, {"label":"3,1", "x":1.75, "y":3.25}, {"label":"3,2", "x":2.75, "y":3.25}, {"label":"3,3", "x":3.75, "y":3.25}, {"label":"3,4", "x":4.75, "y":3.25}, {"label":"3,5", "x":5.75, "y":3.25}, {"label":"3,6", "x":6.75, "y":3.25}, {"label":"3,7", "x":7.75, "y":3.25}, {"label":"3,8", "x":8.75, "y":3.25}, {"label":"3,9", "x":9.75, "y":3.25}, {"label":"3,10", "x":10.75, "y":3.25}, {"label":"3,11", "x":11.75, "y":3.25}, {"label":"3,12", "x":12.75, "y":3.25, "w":2.25}, {"label":"4,0", "x":0, "y":4.25, "w":2.25}, {"label":"4,1", "x":2.25, "y":4.25}, {"label":"4,2", "x":3.25, "y":4.25}, {"label":"4,3", "x":4.25, "y":4.25}, {"label":"4,4", "x":5.25, "y":4.25}, {"label":"4,5", "x":6.25, "y":4.25}, {"label":"4,6", "x":7.25, "y":4.25}, {"label":"4,7", "x":8.25, "y":4.25}, {"label":"4,8", "x":9.25, "y":4.25}, {"label":"4,9", "x":10.25, "y":4.25}, {"label":"4,10", "x":11.25, "y":4.25}, {"label":"4,11", "x":12.25, "y":4.25, "w":1.75}, {"label":"4,13", "x":14, "y":4.25}, {"label":"4,15", "x":16.25, "y":4.25}, {"label":"5,0", "x":0, "y":5.25, "w":1.5}, {"label":"5,2", "x":1.5, "y":5.25}, {"label":"5,3", "x":2.5, "y":5.25, "w":1.5}, {"label":"5,5", "x":4, "y":5.25, "w":7}, {"label":"5,9", "x":11, "y":5.25, "w":1.5}, {"label":"5,10", "x":12.5, "y":5.25}, {"label":"5,11", "x":13.5, "y":5.25, "w":1.5}, {"label":"5,14", "x":15.25, "y":5.25}, {"label":"5,15", "x":16.25, "y":5.25}, {"label":"5,16", "x":17.25, "y":5.25}] + }, + "LAYOUT_all": { + "layout": [{"label":"0,0", "x":0, "y":0}, {"label":"0,1", "x":1.25, "y":0}, {"label":"0,2", "x":2.25, "y":0}, {"label":"0,3", "x":3.25, "y":0}, {"label":"0,4", "x":4.25, "y":0}, {"label":"0,5", "x":5.5, "y":0}, {"label":"0,6", "x":6.5, "y":0}, {"label":"0,7", "x":7.5, "y":0}, {"label":"0,8", "x":8.5, "y":0}, {"label":"0,9", "x":9.75, "y":0}, {"label":"0,10", "x":10.75, "y":0}, {"label":"0,11", "x":11.75, "y":0}, {"label":"0,12", "x":12.75, "y":0}, {"label":"0,13", "x":14, "y":0}, {"label":"0,14", "x":15.25, "y":0}, {"label":"0,15", "x":16.25, "y":0}, {"label":"0,16", "x":17.25, "y":0}, {"label":"1,0", "x":0, "y":1.25}, {"label":"1,1", "x":1, "y":1.25}, {"label":"1,2", "x":2, "y":1.25}, {"label":"1,3", "x":3, "y":1.25}, {"label":"1,4", "x":4, "y":1.25}, {"label":"1,5", "x":5, "y":1.25}, {"label":"1,6", "x":6, "y":1.25}, {"label":"1,7", "x":7, "y":1.25}, {"label":"1,8", "x":8, "y":1.25}, {"label":"1,9", "x":9, "y":1.25}, {"label":"1,10", "x":10, "y":1.25}, {"label":"1,11", "x":11, "y":1.25}, {"label":"1,12", "x":12, "y":1.25}, {"label":"1,13", "x":13, "y":1.25}, {"label":"3,13", "x":14, "y":1.25}, {"label":"1,14", "x":15.25, "y":1.25}, {"label":"1,15", "x":16.25, "y":1.25}, {"label":"1,16", "x":17.25, "y":1.25}, {"label":"2,0", "x":0, "y":2.25, "w":1.5}, {"label":"2,1", "x":1.5, "y":2.25}, {"label":"2,2", "x":2.5, "y":2.25}, {"label":"2,3", "x":3.5, "y":2.25}, {"label":"2,4", "x":4.5, "y":2.25}, {"label":"2,5", "x":5.5, "y":2.25}, {"label":"2,6", "x":6.5, "y":2.25}, {"label":"2,7", "x":7.5, "y":2.25}, {"label":"2,8", "x":8.5, "y":2.25}, {"label":"2,9", "x":9.5, "y":2.25}, {"label":"2,10", "x":10.5, "y":2.25}, {"label":"2,11", "x":11.5, "y":2.25}, {"label":"2,12", "x":12.5, "y":2.25}, {"label":"2,13", "x":13.5, "y":2.25, "w":1.5}, {"label":"2,14", "x":15.25, "y":2.25}, {"label":"2,15", "x":16.25, "y":2.25}, {"label":"2,16", "x":17.25, "y":2.25}, {"label":"3,0", "x":0, "y":3.25, "w":1.75}, {"label":"3,1", "x":1.75, "y":3.25}, {"label":"3,2", "x":2.75, "y":3.25}, {"label":"3,3", "x":3.75, "y":3.25}, {"label":"3,4", "x":4.75, "y":3.25}, {"label":"3,5", "x":5.75, "y":3.25}, {"label":"3,6", "x":6.75, "y":3.25}, {"label":"3,7", "x":7.75, "y":3.25}, {"label":"3,8", "x":8.75, "y":3.25}, {"label":"3,9", "x":9.75, "y":3.25}, {"label":"3,10", "x":10.75, "y":3.25}, {"label":"3,11", "x":11.75, "y":3.25}, {"label":"3,12", "x":12.75, "y":3.25, "w":2.25}, {"label":"4,0", "x":0, "y":4.25, "w":2.25}, {"label":"4,1", "x":2.25, "y":4.25}, {"label":"4,2", "x":3.25, "y":4.25}, {"label":"4,3", "x":4.25, "y":4.25}, {"label":"4,4", "x":5.25, "y":4.25}, {"label":"4,5", "x":6.25, "y":4.25}, {"label":"4,6", "x":7.25, "y":4.25}, {"label":"4,7", "x":8.25, "y":4.25}, {"label":"4,8", "x":9.25, "y":4.25}, {"label":"4,9", "x":10.25, "y":4.25}, {"label":"4,10", "x":11.25, "y":4.25}, {"label":"4,11", "x":12.25, "y":4.25, "w":1.75}, {"label":"4,13", "x":14, "y":4.25}, {"label":"4,15", "x":16.25, "y":4.25}, {"label":"5,0", "x":0, "y":5.25, "w":1.25}, {"label":"5,2", "x":1.25, "y":5.25, "w":1.25}, {"label":"5,3", "x":2.5, "y":5.25, "w":1.25}, {"label":"5,5", "x":3.75, "y":5.25, "w":6.25}, {"label":"5,8", "x":10, "y":5.25, "w":1.25}, {"label":"5,9", "x":11.25, "y":5.25, "w":1.25}, {"label":"5,10", "x":12.5, "y":5.25, "w":1.25}, {"label":"5,11", "x":13.75, "y":5.25, "w":1.25}, {"label":"5,14", "x":15.25, "y":5.25}, {"label":"5,15", "x":16.25, "y":5.25}, {"label":"5,16", "x":17.25, "y":5.25}] + } + } +} diff --git a/keyboards/keebsforall/freebirdtkl/keymaps/default/keymap.c b/keyboards/keebsforall/freebirdtkl/keymaps/default/keymap.c new file mode 100644 index 000000000000..dbeb08e12387 --- /dev/null +++ b/keyboards/keebsforall/freebirdtkl/keymaps/default/keymap.c @@ -0,0 +1,28 @@ +/* Copyright 2021 KnoblesseOblige + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [0] = LAYOUT_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_MENU, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/keyboards/keebsforall/freebirdtkl/keymaps/via/keymap.c b/keyboards/keebsforall/freebirdtkl/keymaps/via/keymap.c new file mode 100644 index 000000000000..6cae507d56ff --- /dev/null +++ b/keyboards/keebsforall/freebirdtkl/keymaps/via/keymap.c @@ -0,0 +1,52 @@ +/* Copyright 2021 KnoblesseOblige + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_TRNS, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_MENU, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/keebsforall/freebirdtkl/keymaps/via/rules.mk b/keyboards/keebsforall/freebirdtkl/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/keebsforall/freebirdtkl/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/keebsforall/freebirdtkl/keymaps/wkl/keymap.c b/keyboards/keebsforall/freebirdtkl/keymaps/wkl/keymap.c new file mode 100644 index 000000000000..884c8c47b865 --- /dev/null +++ b/keyboards/keebsforall/freebirdtkl/keymaps/wkl/keymap.c @@ -0,0 +1,28 @@ +/* Copyright 2021 KnoblesseOblige + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [0] = LAYOUT_tsangan( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_TRNS, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/keyboards/keebsforall/freebirdtkl/readme.md b/keyboards/keebsforall/freebirdtkl/readme.md new file mode 100644 index 000000000000..5b5bade2782c --- /dev/null +++ b/keyboards/keebsforall/freebirdtkl/readme.md @@ -0,0 +1,27 @@ +# KeebsForAll FreebirdTKL + +![FreebirdTKL](https://i.imgur.com/GnY639m.png) + +A TKL PCB with USB-C, hotswap, and multiple layouts + +* Keyboard Maintainer: [KnoblesseOblige](https://github.com/KnoblesseOblige) +* Hardware Supported: KeebsForAll FreebirdTKL +* Hardware Availability: https://keebsforall.com + +Make example for this keyboard (after setting up your build environment): + + make keebsforall/freebirdtkl:default + +Flashing example for this keyboard: + + make keebsforall/freebirdtkl:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB +* **Keycode in layout**: Press the key mapped to `RESET` if it is available diff --git a/keyboards/keebsforall/freebirdtkl/rules.mk b/keyboards/keebsforall/freebirdtkl/rules.mk new file mode 100644 index 000000000000..d2109f62500b --- /dev/null +++ b/keyboards/keebsforall/freebirdtkl/rules.mk @@ -0,0 +1,19 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/keebwerk/mega/ansi/ansi.c b/keyboards/keebwerk/mega/ansi/ansi.c index b5eb0bbad26a..532cdec9aa98 100755 --- a/keyboards/keebwerk/mega/ansi/ansi.c +++ b/keyboards/keebwerk/mega/ansi/ansi.c @@ -18,7 +18,7 @@ #endif #include "ansi.h" -#include "drivers/issi/is31fl3733.h" +#include "drivers/led/issi/is31fl3733.h" uint8_t R = 0; uint8_t G = 0; diff --git a/keyboards/keebwerk/mega/ansi/info.json b/keyboards/keebwerk/mega/ansi/info.json index a9bbf797ab11..5ac104c07bb2 100755 --- a/keyboards/keebwerk/mega/ansi/info.json +++ b/keyboards/keebwerk/mega/ansi/info.json @@ -2,11 +2,9 @@ "keyboard_name": "Keebwerk Mega", "url": "", "maintainer": "Yiancar", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_ansi": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Home", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Page Up", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Page Down", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"label":"End", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4}, {"label":"Fn", "x":11, "y":4}, {"label":"Ctrl", "x":12, "y":4}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}] } } -} \ No newline at end of file +} diff --git a/keyboards/keebwerk/mega/ansi/rules.mk b/keyboards/keebwerk/mega/ansi/rules.mk index 6a1a9cbfad48..2f5981a169d2 100755 --- a/keyboards/keebwerk/mega/ansi/rules.mk +++ b/keyboards/keebwerk/mega/ansi/rules.mk @@ -12,18 +12,15 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in @@ -34,6 +31,6 @@ LAYOUTS = 65_ansi # project specific files SRC += keyboards/wilba_tech/wt_main.c \ keyboards/wilba_tech/wt_rgb_backlight.c \ - drivers/issi/is31fl3733.c \ + drivers/led/issi/is31fl3733.c \ quantum/color.c -QUANTUM_LIB_SRC += drivers/chibios/i2c_master.c +QUANTUM_LIB_SRC += i2c_master.c diff --git a/keyboards/keebwerk/nano_slider/config.h b/keyboards/keebwerk/nano_slider/config.h index 0e17f20024dc..827923fea750 100644 --- a/keyboards/keebwerk/nano_slider/config.h +++ b/keyboards/keebwerk/nano_slider/config.h @@ -90,59 +90,6 @@ along with this program. If not, see . */ // #define GRAVE_ESC_CTRL_OVERRIDE -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -163,26 +110,6 @@ along with this program. If not, see . #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/keebwerk/nano_slider/info.json b/keyboards/keebwerk/nano_slider/info.json index f6a9e9a026a0..b91ecffee3be 100644 --- a/keyboards/keebwerk/nano_slider/info.json +++ b/keyboards/keebwerk/nano_slider/info.json @@ -2,8 +2,6 @@ "keyboard_name": "nano. slider", "url": "", "maintainer": "qmk", - "width": 4, - "height": 3.25, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/keebwerk/nano_slider/rules.mk b/keyboards/keebwerk/nano_slider/rules.mk index 3e1d8fe6292b..7da30d1202fb 100644 --- a/keyboards/keebwerk/nano_slider/rules.mk +++ b/keyboards/keebwerk/nano_slider/rules.mk @@ -2,30 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow MIDI_ENABLE = yes # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LTO_ENABLE = yes SRC += analog.c diff --git a/keyboards/keebzdotnet/fme/fme.h b/keyboards/keebzdotnet/fme/fme.h index 912adf6451d6..ff8da5d409a7 100644 --- a/keyboards/keebzdotnet/fme/fme.h +++ b/keyboards/keebzdotnet/fme/fme.h @@ -20,7 +20,7 @@ along with this program. If not, see . #define ___ KC_NO -#define LAYOUT( \ +#define LAYOUT_all( \ k00, k13, k14, k12, k10, \ k11, k04, k02, k03, \ k22, k32, k21, k01 \ diff --git a/keyboards/keebzdotnet/fme/info.json b/keyboards/keebzdotnet/fme/info.json new file mode 100644 index 000000000000..f07d3fd79140 --- /dev/null +++ b/keyboards/keebzdotnet/fme/info.json @@ -0,0 +1,29 @@ +{ + "keyboard_name": "FMe", + "url": "", + "maintainer": "keebzdotnet", + "layout_aliases": { + "LAYOUT": "LAYOUT_all" + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"k00", "x":0, "y":0}, + {"label":"k13", "x":1, "y":0}, + {"label":"k14", "x":2, "y":0}, + {"label":"k12", "x":3, "y":0}, + {"label":"k10", "x":4, "y":0}, + + {"label":"k11", "x":0.25, "y":1}, + {"label":"k04", "x":1.25, "y":1}, + {"label":"k02", "x":2.25, "y":1}, + {"label":"k03", "x":3.25, "y":1, "w":1.75}, + + {"label":"k22", "x":0.25, "y":2, "w":2.75}, + {"label":"k32", "x":3, "y":3}, + {"label":"k21", "x":3, "y":2, "w":2}, + {"label":"k01", "x":4, "y":3} + ] + } + } +} diff --git a/keyboards/keebzdotnet/fme/keymaps/default/keymap.c b/keyboards/keebzdotnet/fme/keymaps/default/keymap.c index d6b52efd0fc8..a66b64eef0c6 100644 --- a/keyboards/keebzdotnet/fme/keymaps/default/keymap.c +++ b/keyboards/keebzdotnet/fme/keymaps/default/keymap.c @@ -17,13 +17,13 @@ along with this program. If not, see . #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( + [0] = LAYOUT_all( KC_F, KC_U, KC_C, KC_K, KC_BSPC, KC_Y, KC_O, KC_U, MO(1), KC_SPC, KC_SPC, KC_SPC, KC_SPC ), - [1] = LAYOUT( + [1] = LAYOUT_all( RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS diff --git a/keyboards/keebzdotnet/fme/keymaps/via/config.h b/keyboards/keebzdotnet/fme/keymaps/via/config.h new file mode 100644 index 000000000000..651c46be2155 --- /dev/null +++ b/keyboards/keebzdotnet/fme/keymaps/via/config.h @@ -0,0 +1,19 @@ +/* Copyright 2021 QMK / James Young (@noroadsleft) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define DYNAMIC_KEYMAP_LAYER_COUNT 2 diff --git a/keyboards/keebzdotnet/fme/keymaps/via/keymap.c b/keyboards/keebzdotnet/fme/keymaps/via/keymap.c index d6b52efd0fc8..a66b64eef0c6 100644 --- a/keyboards/keebzdotnet/fme/keymaps/via/keymap.c +++ b/keyboards/keebzdotnet/fme/keymaps/via/keymap.c @@ -17,13 +17,13 @@ along with this program. If not, see . #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( + [0] = LAYOUT_all( KC_F, KC_U, KC_C, KC_K, KC_BSPC, KC_Y, KC_O, KC_U, MO(1), KC_SPC, KC_SPC, KC_SPC, KC_SPC ), - [1] = LAYOUT( + [1] = LAYOUT_all( RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS diff --git a/keyboards/keebzdotnet/fme/rules.mk b/keyboards/keebzdotnet/fme/rules.mk index 91f48bd442d3..ef61685f7c09 100644 --- a/keyboards/keebzdotnet/fme/rules.mk +++ b/keyboards/keebzdotnet/fme/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/keebzdotnet/wazowski/config.h b/keyboards/keebzdotnet/wazowski/config.h index 42d14bd2fbf0..71db031caea9 100644 --- a/keyboards/keebzdotnet/wazowski/config.h +++ b/keyboards/keebzdotnet/wazowski/config.h @@ -121,59 +121,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -194,26 +141,6 @@ along with this program. If not, see . #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/keebzdotnet/wazowski/info.json b/keyboards/keebzdotnet/wazowski/info.json index 5c27a3ddca9c..2081cf92d3f7 100644 --- a/keyboards/keebzdotnet/wazowski/info.json +++ b/keyboards/keebzdotnet/wazowski/info.json @@ -2,8 +2,6 @@ "keyboard_name": "wazowski", "url": "https://www.keebz.net/shop/wazoski-pcb", "maintainer": "keebzdotnet", - "width": 9, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/keebzdotnet/wazowski/rules.mk b/keyboards/keebzdotnet/wazowski/rules.mk index 15bafda8ebcc..d1203ecf71bf 100644 --- a/keyboards/keebzdotnet/wazowski/rules.mk +++ b/keyboards/keebzdotnet/wazowski/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE = no # Audio output diff --git a/keyboards/kelowna/rgb64/config.h b/keyboards/kelowna/rgb64/config.h new file mode 100644 index 000000000000..906755d88abe --- /dev/null +++ b/keyboards/kelowna/rgb64/config.h @@ -0,0 +1,51 @@ + /* Copyright 2021 Weirdo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7764 +#define PRODUCT_ID 0x4C64 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Weirdo +#define PRODUCT kelownaRGB64 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +#define MATRIX_COL_PINS { A3, A4, A5, A7, B0, B1, B10, B15, A8, A9, A10, B7, B6, B5, B4} +#define MATRIX_ROW_PINS { B12, B13, B14, C11, A1} +#define DIODE_DIRECTION ROW2COL +#define DEBOUNCE 5 + + + +#define RGB_DI_PIN A6 +#define RGBLED_NUM 64 +//#define RGBLIGHT_DISABLE_KEYCODES + + + + +/* 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/kelowna/rgb64/info.json b/keyboards/kelowna/rgb64/info.json new file mode 100644 index 000000000000..8dbb01a4102c --- /dev/null +++ b/keyboards/kelowna/rgb64/info.json @@ -0,0 +1,75 @@ +{ + "keyboard_name": "kelownaRGB64", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_64_ansi": { + "layout": [ + {"label":"K00", "x":0, "y":0}, + {"label":"K01", "x":1, "y":0}, + {"label":"K02", "x":2, "y":0}, + {"label":"K03", "x":3, "y":0}, + {"label":"K04", "x":4, "y":0}, + {"label":"K05", "x":5, "y":0}, + {"label":"K06", "x":6, "y":0}, + {"label":"K07", "x":7, "y":0}, + {"label":"K08", "x":8, "y":0}, + {"label":"K09", "x":9, "y":0}, + {"label":"K0A", "x":10, "y":0}, + {"label":"K0B", "x":11, "y":0}, + {"label":"K0C", "x":12, "y":0}, + {"label":"K0E", "x":13, "y":0, "w":2}, + {"label":"K10", "x":0, "y":1, "w":1.5}, + {"label":"K12", "x":1.5, "y":1}, + {"label":"K13", "x":2.5, "y":1}, + {"label":"K14", "x":3.5, "y":1}, + {"label":"K15", "x":4.5, "y":1}, + {"label":"K16", "x":5.5, "y":1}, + {"label":"K17", "x":6.5, "y":1}, + {"label":"K18", "x":7.5, "y":1}, + {"label":"K19", "x":8.5, "y":1}, + {"label":"K1A", "x":9.5, "y":1}, + {"label":"K1B", "x":10.5, "y":1}, + {"label":"K1C", "x":11.5, "y":1}, + {"label":"K1D", "x":12.5, "y":1}, + {"label":"K1E", "x":13.5, "y":1, "w":1.5}, + {"label":"K20", "x":0, "y":2, "w":1.75}, + {"label":"K22", "x":1.75, "y":2}, + {"label":"K23", "x":2.75, "y":2}, + {"label":"K24", "x":3.75, "y":2}, + {"label":"K25", "x":4.75, "y":2}, + {"label":"K26", "x":5.75, "y":2}, + {"label":"K27", "x":6.75, "y":2}, + {"label":"K28", "x":7.75, "y":2}, + {"label":"K29", "x":8.75, "y":2}, + {"label":"K2A", "x":9.75, "y":2}, + {"label":"K2B", "x":10.75, "y":2}, + {"label":"K2C", "x":11.75, "y":2}, + {"label":"K2E", "x":12.75, "y":2, "w":2.25}, + {"label":"K30", "x":0, "y":3, "w":2}, + {"label":"K32", "x":2, "y":3}, + {"label":"K33", "x":3, "y":3}, + {"label":"K34", "x":4, "y":3}, + {"label":"K35", "x":5, "y":3}, + {"label":"K36", "x":6, "y":3}, + {"label":"K37", "x":7, "y":3}, + {"label":"K38", "x":8, "y":3}, + {"label":"K39", "x":9, "y":3}, + {"label":"K3A", "x":10, "y":3}, + {"label":"K3B", "x":11, "y":3}, + {"label":"K3C", "x":12, "y":3}, + {"label":"K3D", "x":13, "y":3}, + {"label":"K3E", "x":14, "y":3}, + {"label":"K40", "x":0, "y":4, "w":1.25}, + {"label":"K41", "x":1.25, "y":4, "w":1.25}, + {"label":"K42", "x":2.5, "y":4, "w":1.25}, + {"label":"K46", "x":3.75, "y":4, "w":6.25}, + {"label":"K4A", "x":10, "y":4}, + {"label":"K4B", "x":11, "y":4}, + {"label":"K4C", "x":12, "y":4}, + {"label":"K4D", "x":13, "y":4}, + {"label":"K4E", "x":14, "y":4} + ] + } + } +} diff --git a/keyboards/kelowna/rgb64/keymaps/default/keymap.c b/keyboards/kelowna/rgb64/keymaps/default/keymap.c new file mode 100644 index 000000000000..1c5acf6bab05 --- /dev/null +++ b/keyboards/kelowna/rgb64/keymaps/default/keymap.c @@ -0,0 +1,38 @@ + /* Copyright 2021 Weirdo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + + +// [Keymaps] -----------------------------------------------------------------// +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_64_ansi(KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LWIN, KC_LALT, KC_SPACE, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT), + + + [_FN] = LAYOUT_64_ansi(KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_SPACE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), // +}; \ No newline at end of file diff --git a/keyboards/kelowna/rgb64/keymaps/via/keymap.c b/keyboards/kelowna/rgb64/keymaps/via/keymap.c new file mode 100644 index 000000000000..db6b096b5476 --- /dev/null +++ b/keyboards/kelowna/rgb64/keymaps/via/keymap.c @@ -0,0 +1,47 @@ + /* Copyright 2021 Weirdo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + + +// [Keymaps] -----------------------------------------------------------------// +enum layer_names { _BASE, _FN ,_FN1 ,_FN2 }; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_64_ansi(KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LWIN, KC_LALT, KC_SPACE, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT), + + + [_FN] = LAYOUT_64_ansi(KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_SPACE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), // + + [_FN1] = LAYOUT_64_ansi(KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_SPACE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + [_FN2] = LAYOUT_64_ansi(KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_SPACE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; diff --git a/keyboards/kelowna/rgb64/keymaps/via/rules.mk b/keyboards/kelowna/rgb64/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/kelowna/rgb64/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/kelowna/rgb64/readme.md b/keyboards/kelowna/rgb64/readme.md new file mode 100644 index 000000000000..9300b8281981 --- /dev/null +++ b/keyboards/kelowna/rgb64/readme.md @@ -0,0 +1,17 @@ +# kelownaRGB64 + +![kelownaRGB64](https://i.imgur.com/DzLy87M.png) + +A 60% keyboard based on STM32f303 + +* Keyboard Maintainer: [Weirdo](https://github.com/Weirdo-F)(https://github.com/Weirdo-F) +* Hardware Supported: kelownaRGB64 +* Hardware Availability: Not yet + +Make example for this keyboard (after setting up your build environment): + + make kelowna/rgb64:default + +Use the SWD interface on the board to connect to the STlink (JLink) to directly burn firmware without entering the bootloader. + +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/kelowna/rgb64/rgb64.c b/keyboards/kelowna/rgb64/rgb64.c new file mode 100644 index 000000000000..dd576161612e --- /dev/null +++ b/keyboards/kelowna/rgb64/rgb64.c @@ -0,0 +1,16 @@ + /* Copyright 2021 Weirdo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "rgb64.h" diff --git a/keyboards/kelowna/rgb64/rgb64.h b/keyboards/kelowna/rgb64/rgb64.h new file mode 100644 index 000000000000..c2277aa2085b --- /dev/null +++ b/keyboards/kelowna/rgb64/rgb64.h @@ -0,0 +1,31 @@ +/* +Copyright 2021 Weirdo +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "quantum.h" + + +#define LAYOUT_64_ansi( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, 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, K2E, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E \ +) { \ + {K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, 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, KC_NO, K2E}, \ + {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, K46, KC_NO,KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E} \ +} diff --git a/keyboards/kelowna/rgb64/rules.mk b/keyboards/kelowna/rgb64/rules.mk new file mode 100644 index 000000000000..c92606d23ca3 --- /dev/null +++ b/keyboards/kelowna/rgb64/rules.mk @@ -0,0 +1,21 @@ +# MCU name +MCU = STM32F303 +BOARD = QMK_PROTON_C + +# 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 +# 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 = 64_ansi diff --git a/keyboards/keybage/radpad/config.h b/keyboards/keybage/radpad/config.h index 4692b38180ae..0d885ddea9bf 100644 --- a/keyboards/keybage/radpad/config.h +++ b/keyboards/keybage/radpad/config.h @@ -61,7 +61,7 @@ along with this program. If not, see . #define BOOTMAGIC_LITE_COLUMN 3 /* OLED Configuration */ -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE #define OLED_TIMEOUT 60000 #define OLED_LOGO_TIMEOUT 3000 // How long (in ms) the logo appears at start up #endif diff --git a/keyboards/keybage/radpad/info.json b/keyboards/keybage/radpad/info.json index b8f2306e18e0..2236a43418d4 100644 --- a/keyboards/keybage/radpad/info.json +++ b/keyboards/keybage/radpad/info.json @@ -2,8 +2,6 @@ "keyboard_name": "radpad", "url": "", "maintainer": "Brandon Schlack", - "width": 4, - "height": 5, "layouts": { "LAYOUT_4x4_encoders": { "layout": [ diff --git a/keyboards/keybage/radpad/keymaps/default/keymap.c b/keyboards/keybage/radpad/keymaps/default/keymap.c index 69bb3c685b33..f2d712bd6f59 100644 --- a/keyboards/keybage/radpad/keymaps/default/keymap.c +++ b/keyboards/keybage/radpad/keymaps/default/keymap.c @@ -54,7 +54,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { return true; } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE static uint32_t oled_logo_timer = 0; bool oled_logo_cleared = false; // Set to true if you don't want a logo at all @@ -126,7 +126,7 @@ static void render_logo(void) { oled_write_raw_P(radpad_logo, sizeof(radpad_logo)); } -void oled_task_user(void) { +bool oled_task_user(void) { if (oled_logo_cleared) { render_status(); } else { @@ -138,5 +138,6 @@ void oled_task_user(void) { render_logo(); } } + return false; } #endif diff --git a/keyboards/keybage/radpad/rules.mk b/keyboards/keybage/radpad/rules.mk index 74f4c487487c..958d759213a8 100644 --- a/keyboards/keybage/radpad/rules.mk +++ b/keyboards/keybage/radpad/rules.mk @@ -7,19 +7,17 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = yes -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 LTO_ENABLE = yes diff --git a/keyboards/keybee/keybee65/config.h b/keyboards/keybee/keybee65/config.h new file mode 100644 index 000000000000..25c7b5083731 --- /dev/null +++ b/keyboards/keybee/keybee65/config.h @@ -0,0 +1,64 @@ +/* +Copyright 2020 + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x6265 // KeyBee +#define PRODUCT_ID 0x0001 // Keybee65 +#define DEVICE_VER 0x0001 // Version 1 +#define MANUFACTURER KeyBee +#define PRODUCT KeyBee65 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 16 + +/* + * 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) + * +*/ + +// Checked with Eagle Schematic +#define MATRIX_ROW_PINS { D3, D2, D0, B0, F0 } +#define MATRIX_COL_PINS { E6, D1, D5, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +// The pin connected to the data pin of the LEDs +#define RGB_DI_PIN B0 +// The number of LEDs connected +#define DRIVER_LED_TOTAL 80 + +#define RGB_MATRIX_KEYPRESSES +#define RGB_DISABLE_WHEN_USB_SUSPENDED + +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/keybee/keybee65/info.json b/keyboards/keybee/keybee65/info.json new file mode 100644 index 000000000000..63f05c9c2adc --- /dev/null +++ b/keyboards/keybee/keybee65/info.json @@ -0,0 +1,361 @@ +{ + "keyboard_name": "KeyBee65", + "url": "", + "maintainer": "ToastyStoemp", + "layouts": { + "LAYOUT_65_ansi": { + "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 + }, + { + "label": "Backspace", + "x": 13, + "y": 0, + "w": 2 + }, + { + "label": "Home", + "x": 15, + "y": 0 + }, + { + "label": "Tab", + "x": 0, + "y": 1, + "w": 1.5 + }, + { + "label": "Q", + "x": 1.5, + "y": 1 + }, + { + "label": "W", + "x": 2.5, + "y": 1 + }, + { + "label": "E", + "x": 3.5, + "y": 1 + }, + { + "label": "R", + "x": 4.5, + "y": 1 + }, + { + "label": "T", + "x": 5.5, + "y": 1 + }, + { + "label": "Y", + "x": 6.5, + "y": 1 + }, + { + "label": "U", + "x": 7.5, + "y": 1 + }, + { + "label": "I", + "x": 8.5, + "y": 1 + }, + { + "label": "O", + "x": 9.5, + "y": 1 + }, + { + "label": "P", + "x": 10.5, + "y": 1 + }, + { + "label": "{", + "x": 11.5, + "y": 1 + }, + { + "label": "}", + "x": 12.5, + "y": 1 + }, + { + "label": "|", + "x": 13.5, + "y": 1, + "w": 1.5 + }, + { + "label": "Page Up", + "x": 15, + "y": 1 + }, + { + "label": "Caps Lock", + "x": 0, + "y": 2, + "w": 1.75 + }, + { + "label": "A", + "x": 1.75, + "y": 2 + }, + { + "label": "S", + "x": 2.75, + "y": 2 + }, + { + "label": "D", + "x": 3.75, + "y": 2 + }, + { + "label": "F", + "x": 4.75, + "y": 2 + }, + { + "label": "G", + "x": 5.75, + "y": 2 + }, + { + "label": "H", + "x": 6.75, + "y": 2 + }, + { + "label": "J", + "x": 7.75, + "y": 2 + }, + { + "label": "K", + "x": 8.75, + "y": 2 + }, + { + "label": "L", + "x": 9.75, + "y": 2 + }, + { + "label": ":", + "x": 10.75, + "y": 2 + }, + { + "label": "\"", + "x": 11.75, + "y": 2 + }, + { + "label": "Enter", + "x": 12.75, + "y": 2, + "w": 2.25 + }, + { + "label": "Page Down", + "x": 15, + "y": 2 + }, + { + "label": "Shift", + "x": 0, + "y": 3, + "w": 2.25 + }, + { + "label": "Z", + "x": 2.25, + "y": 3 + }, + { + "label": "X", + "x": 3.25, + "y": 3 + }, + { + "label": "C", + "x": 4.25, + "y": 3 + }, + { + "label": "V", + "x": 5.25, + "y": 3 + }, + { + "label": "B", + "x": 6.25, + "y": 3 + }, + { + "label": "N", + "x": 7.25, + "y": 3 + }, + { + "label": "M", + "x": 8.25, + "y": 3 + }, + { + "label": "<", + "x": 9.25, + "y": 3 + }, + { + "label": ">", + "x": 10.25, + "y": 3 + }, + { + "label": "?", + "x": 11.25, + "y": 3 + }, + { + "label": "Shift", + "x": 12.25, + "y": 3, + "w": 1.75 + }, + { + "label": "UP", + "x": 14, + "y": 3 + }, + { + "label": "End", + "x": 15, + "y": 3 + }, + { + "label": "Ctrl", + "x": 0, + "y": 4, + "w": 1.25 + }, + { + "label": "Win", + "x": 1.25, + "y": 4, + "w": 1.25 + }, + { + "label": "Alt", + "x": 2.5, + "y": 4, + "w": 1.25 + }, + { + "x": 3.75, + "y": 4, + "w": 6.25 + }, + { + "label": "Alt", + "x": 10, + "y": 4 + }, + { + "label": "Fn", + "x": 11, + "y": 4 + }, + { + "label": "Ctrl", + "x": 12, + "y": 4 + }, + { + "label": "LEFT", + "x": 13, + "y": 4 + }, + { + "label": "DOWN", + "x": 14, + "y": 4 + }, + { + "label": "RIGHT", + "x": 15, + "y": 4 + } + ] + } + } +} \ No newline at end of file diff --git a/keyboards/keybee/keybee65/keybee65.c b/keyboards/keybee/keybee65/keybee65.c new file mode 100644 index 000000000000..12422f088930 --- /dev/null +++ b/keyboards/keybee/keybee65/keybee65.c @@ -0,0 +1,39 @@ +/* +Copyright 2020 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "keybee65.h" + +led_config_t g_led_config = { { + // Key Matrix to LED Index + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, NO_LED, 13, 14 }, + { 29, NO_LED, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15 }, + { 30, NO_LED, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, NO_LED, 42, 43 }, + { 57, NO_LED, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, NO_LED, 45, 44 }, + { 58, 59, 60, NO_LED, NO_LED, NO_LED, NO_LED, 61, NO_LED, NO_LED, 62, 63, 64, 65, 66, 67 } +}, { + // LED Index to Physical Position + {6, 2}, {20, 2}, {35, 11}, {49, 11}, {64, 11}, {78, 11}, {92, 11}, {107, 11}, {120, 11}, {135, 11}, {148, 11}, {164, 11}, {177, 11}, {198, 11}, {220, 11}, + {9, 24}, {26, 24}, {42, 24}, {56, 24}, {70, 24}, {85, 24}, {100, 24}, {113, 24}, {128, 24}, {143, 24}, {156, 24}, {170, 24}, {184, 24}, {202, 24}, {220, 24}, + {11, 38}, {29, 38}, {46, 38}, {60, 38}, {74, 38}, {88, 38}, {103, 38}, {118, 38}, {132, 38}, {146, 38}, {160, 38}, {174, 38}, {198, 38}, {220, 38}, + {16, 53}, {37, 53}, {52, 53}, {66, 53}, {80, 53}, {96, 53}, {110, 53}, {125, 53}, {140, 53}, {153, 53}, {168, 53}, {187, 53}, {207, 53}, {220, 53}, + {6, 68}, {25, 68}, {44, 68}, +}, { + // LED Index to Flag + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 +} }; \ No newline at end of file diff --git a/keyboards/keybee/keybee65/keybee65.h b/keyboards/keybee/keybee65/keybee65.h new file mode 100644 index 000000000000..484f8977aa9f --- /dev/null +++ b/keyboards/keybee/keybee65/keybee65.h @@ -0,0 +1,32 @@ +/* +Copyright 2020 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +/* Keybee65 Keymap Definitions */ +#define LAYOUT_65_ansi( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, 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, K2E, K2F, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, K3F, \ + K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E, K4F \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, 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, KC_NO, K2E, K2F }, \ + { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KC_NO, K3E, K3F }, \ + { K40, K41, K42, KC_NO, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E, K4F } \ +} diff --git a/keyboards/keybee/keybee65/keymaps/default/keymap.c b/keyboards/keybee/keybee65/keymaps/default/keymap.c new file mode 100644 index 000000000000..13d1ba1f9d1f --- /dev/null +++ b/keyboards/keybee/keybee65/keymaps/default/keymap.c @@ -0,0 +1,84 @@ +/* +Copyright 2020 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _LAYER0, + _LAYER1, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_LAYER0] = LAYOUT_65_ansi( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_LAYER1] = LAYOUT_65_ansi( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUSE, RESET, KC_TRNS, + KC_TRNS, RGB_SPI, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EEP_RST, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_AUDIO_VOL_UP, KC_AUDIO_MUTE, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK + ) +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case RGB_TOG: + if (record->event.pressed) { + switch (rgb_matrix_get_flags()) { + case LED_FLAG_ALL: { + rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER); + rgb_matrix_set_color_all(0, 0, 0); + } + break; + case (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER): { + rgb_matrix_set_flags(LED_FLAG_UNDERGLOW); + rgb_matrix_set_color_all(0, 0, 0); + } + break; + case LED_FLAG_UNDERGLOW: { + rgb_matrix_set_flags(LED_FLAG_INDICATOR); + rgb_matrix_set_color_all(0, 0, 0); + } + break; + case LED_FLAG_INDICATOR: { + rgb_matrix_set_flags(LED_FLAG_NONE); + rgb_matrix_disable_noeeprom(); + } + break; + default: { + rgb_matrix_set_flags(LED_FLAG_ALL); + rgb_matrix_enable_noeeprom(); + } + break; + } + } + return false; + default: + return true; //Process all other keycodes normally + } +} + +void rgb_matrix_indicators_kb(void) { + led_t host_leds = host_keyboard_led_state(); + if (host_leds.caps_lock) { + rgb_matrix_set_color(30, 254, 189, 41); // set caps lock led color first nunber is index, R G B + } +} \ No newline at end of file diff --git a/keyboards/keybee/keybee65/keymaps/via/keymap.c b/keyboards/keybee/keybee65/keymaps/via/keymap.c new file mode 100644 index 000000000000..811e13ef55e6 --- /dev/null +++ b/keyboards/keybee/keybee65/keymaps/via/keymap.c @@ -0,0 +1,105 @@ +/* +Copyright 2020 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _LAYER0, + _LAYER1, + _LAYER2, + _LAYER3, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_LAYER0] = LAYOUT_65_ansi( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_LAYER1] = LAYOUT_65_ansi( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUSE, RESET, KC_TRNS, + KC_TRNS, RGB_SPI, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EEP_RST, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_AUDIO_VOL_UP, KC_AUDIO_MUTE, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK + ), + + [_LAYER2] = LAYOUT_65_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_LAYER3] = LAYOUT_65_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case RGB_TOG: + if (record->event.pressed) { + switch (rgb_matrix_get_flags()) { + case LED_FLAG_ALL: { + rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER); + rgb_matrix_set_color_all(0, 0, 0); + } + break; + case (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER): { + rgb_matrix_set_flags(LED_FLAG_UNDERGLOW); + rgb_matrix_set_color_all(0, 0, 0); + } + break; + case LED_FLAG_UNDERGLOW: { + rgb_matrix_set_flags(LED_FLAG_INDICATOR); + rgb_matrix_set_color_all(0, 0, 0); + } + break; + case LED_FLAG_INDICATOR: { + rgb_matrix_set_flags(LED_FLAG_NONE); + rgb_matrix_disable_noeeprom(); + } + break; + default: { + rgb_matrix_set_flags(LED_FLAG_ALL); + rgb_matrix_enable_noeeprom(); + } + break; + } + } + return false; + default: + return true; //Process all other keycodes normally + } +} + +void rgb_matrix_indicators_kb(void) { + led_t host_leds = host_keyboard_led_state(); + if (host_leds.caps_lock) { + rgb_matrix_set_color(30, 254, 189, 41); // set caps lock led color first nunber is index, R G B + } else if (!(rgb_matrix_get_flags() & LED_FLAG_MODIFIER)) { + rgb_matrix_set_color(30, 0, 0, 0); + } +} \ No newline at end of file diff --git a/keyboards/keybee/keybee65/keymaps/via/rules.mk b/keyboards/keybee/keybee65/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/keybee/keybee65/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/keybee/keybee65/readme.md b/keyboards/keybee/keybee65/readme.md new file mode 100644 index 000000000000..afe9cfd225ae --- /dev/null +++ b/keyboards/keybee/keybee65/readme.md @@ -0,0 +1,26 @@ +# KeyBee 65 + +The following is the QMK Firmware for the KeyBee 65 Hotswap PCB. + +The PCB features: +* QMK & VIA compatibility +* Hotswap +* RGB underglow +* Per-Key RGB + +--- + +* Keyboard Maintainer: [ToastyStoemp](https://github.com/ToastyStoemp) +* Hardware Supported: Pollen65 +* Hardware Availability: [keybeeshop.com](https://www.keybeeshop.com/collections/keyboards/products/pollen65-mechanical-keyboard-kit) + +Make example for this keyboard (after setting up your build environment): + + make keybee/keybee65:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader Enter the bootloader in 3 ways: +* **Bootmagic reset**: Hold down the key ESC key and plug in the keyboard (Top Left most switch) +* **Physical reset button**: Briefly press the button on the back of the PCB +* **Keycode in layout**: Press the Enter key on layer 1 which is mapped to `RESET` \ No newline at end of file diff --git a/keyboards/keybee/keybee65/rules.mk b/keyboards/keybee/keybee65/rules.mk new file mode 100644 index 000000000000..c1a493083399 --- /dev/null +++ b/keyboards/keybee/keybee65/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 +# 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 = no +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = WS2812 + +LAYOUTS = 65_ansi diff --git a/keyboards/keyboardio/atreus/info.json b/keyboards/keyboardio/atreus/info.json index 69386999ad1d..a23d81ac9d66 100644 --- a/keyboards/keyboardio/atreus/info.json +++ b/keyboards/keyboardio/atreus/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Keyboardio Atreus", "url": "", "maintainer": "keyboardio", - "width": 13, - "height": 4.7, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/keyboardio/atreus/keymaps/manna-harbour_miryoku/config.h b/keyboards/keyboardio/atreus/keymaps/manna-harbour_miryoku/config.h new file mode 100644 index 000000000000..3de799f942b0 --- /dev/null +++ b/keyboards/keyboardio/atreus/keymaps/manna-harbour_miryoku/config.h @@ -0,0 +1,22 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . + +#pragma once + +#define XXX KC_NO + +#define LAYOUT_miryoku( \ +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, \ +N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ +) \ +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, XXX, XXX, K25, K26, K27, K28, K29, \ +XXX, XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX, XXX \ +) diff --git a/keyboards/keyboardio/atreus/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/keyboardio/atreus/keymaps/manna-harbour_miryoku/keymap.c new file mode 100644 index 000000000000..7c5717a0fee0 --- /dev/null +++ b/keyboards/keyboardio/atreus/keymaps/manna-harbour_miryoku/keymap.c @@ -0,0 +1,5 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/keyboards/keyboardio/atreus/keymaps/replicaJunction/config.h b/keyboards/keyboardio/atreus/keymaps/replicaJunction/config.h new file mode 100644 index 000000000000..a02f9a95dbad --- /dev/null +++ b/keyboards/keyboardio/atreus/keymaps/replicaJunction/config.h @@ -0,0 +1,51 @@ +/* Copyright 2021 Joshua T. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +// Do not allow one macro to contain the other macro +#define DYNAMIC_MACRO_NO_NESTING + +// "THE most important tap hold configuration setting" +// https://precondition.github.io/home-row-mods#ignore-mod-tap-interrupt +// https://docs.qmk.fm/#/tap_hold?id=ignore-mod-tap-interrupt +#define IGNORE_MOD_TAP_INTERRUPT + +// This one is a style choice. Play with it both on and off to see which +// one suits you better. +// https://precondition.github.io/home-row-mods#permissive-hold +// https://docs.qmk.fm/#/tap_hold?id=permissive-hold +#define PERMISSIVE_HOLD + +// If you press a dual-role key for longer than TAPPING_TERM, then +// release it without pressing another key, without this setting nothing +// would happen. With this setting, it sends the key's tap function. +// https://precondition.github.io/home-row-mods#retro-tapping +#define RETRO_TAPPING + +// Disable some unused features to save space +#undef LOCKING_SUPPORT_ENABLE +#undef LOCKING_RESYNC_ENABLE + +///// +// Flags for stuff in my userspace + +#define USER_INCLUDE_GAMING_LAYER +#define USER_INCLUDE_MACRO_LAYER + +// "Super Alt-Tab" +// https://docs.qmk.fm/#/feature_macros?id=super-alt%E2%86%AFtab +#define USER_SUPER_ALT_TAB_TIMEOUT 500 diff --git a/keyboards/keyboardio/atreus/keymaps/replicaJunction/keymap.c b/keyboards/keyboardio/atreus/keymaps/replicaJunction/keymap.c new file mode 100644 index 000000000000..9e47155f4418 --- /dev/null +++ b/keyboards/keyboardio/atreus/keymaps/replicaJunction/keymap.c @@ -0,0 +1,94 @@ +/* Copyright 2021 Joshua T. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +#include "replicaJunction.h" + +#define BSP_SYM LT(L_SYMBOLS, KC_BSPC) +#define SPC_NAV LT(L_NAVIGATION, KC_SPC) +#define EQL_FUN LT(L_FN, KC_EQL) + +#define ESC_SFT LSFT_T(KC_ESC) +#define TAB_SFT RSFT_T(KC_TAB) + +#define DF_TYPE DF(L_BASE) +#define DF_GAME DF(L_GAMING) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[L_BASE] = LAYOUT( + KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, + KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, + KC_Z, KC_X, KC_C, KC_D, KC_V, SALTTAB,KC_BSLS,KC_K, KC_H, KC_COMM,KC_DOT, KC_SLSH, + KC_ESC, KC_LGUI,KC_TAB, ESC_SFT,BSP_SYM,CTL_DEL,ALT_ENT,SPC_NAV,TAB_SFT,KC_MINS,KC_QUOT,EQL_FUN +), + +[L_GAMING] = LAYOUT( + _______,_______,_______,_______,_______, _______,_______,_______,_______,_______, + _______,_______,_______,_______,_______, _______,_______,_______,_______,_______, + _______,_______,KC_C, KC_D, _______,_______,KC_LOCK,_______,_______,_______,_______,_______, + _______,KC_TAB, KC_LALT,KC_LSFT,KC_SPC, KC_LCTL,KC_LALT,KC_BSPC,KC_BTN1,KC_BTN2,KC_BTN3,_______ +), + +[L_NUMBERS] = LAYOUT( + _______,_______,_______,_______,_______, KC_HASH,KC_7, KC_8, KC_9, KC_SLSH, + _______,_______,_______,_______,_______, KC_PLUS,KC_4, KC_5, KC_6, KC_ASTR, + _______,_______,_______,_______,_______,_______,_______,KC_MINS,KC_1, KC_2, KC_3, KC_BSLS, + _______,_______,_______,_______,_______,_______,_______,_______,KC_0, KC_0, KC_DOT, KC_ENT +), + +[L_SYMBOLS] = LAYOUT( + KC_AT, KC_LT, KC_DLR, KC_GT, XXXXXXX, XXXXXXX,KC_LBRC,KC_UNDS,KC_RBRC,XXXXXXX, + KC_BSLS,KC_LPRN,KC_DQUO,KC_RPRN,KC_HASH, KC_PERC,KC_LCBR,KC_EQL, KC_RCBR,KC_PIPE, + KC_EXLM,KC_COLN,KC_ASTR,KC_PLUS,XXXXXXX,_______,_______,XXXXXXX,KC_AMPR,KC_CIRC,KC_TILD,KC_GRV, + _______,_______,_______,_______,ooooooo,_______,_______,ooooooo,CAPWORD,_______,_______,_______ +), + +[L_NAVIGATION] = LAYOUT( + OS_UNDO,OS_CUT, OS_PAST,OS_COPY,OS_SALL, KC_PGUP,KC_HOME,KC_UP, KC_END, KC_DEL, + KC_LGUI,KC_LALT,KC_LSFT,KC_LCTL,_______, KC_PGDN,KC_LEFT,KC_DOWN,KC_RGHT,KC_BSPC, + WIN_V, _______,_______,OS_FIND,SEARCH, _______,_______,_______,SFT_TAB,KC_TAB, KC_APP, KC_PSCR, + _______,_______,_______,NUMWORD,ooooooo,_______,_______,ooooooo,_______,_______,_______,_______ +), + +[L_FN] = LAYOUT( + _______,_______,_______,_______,_______, KC_VOLU,KC_F9, KC_F10, KC_F11, KC_F12, + _______,_______,_______,_______,_______, KC_MUTE,KC_F5, KC_F6, KC_F7, KC_F8, + _______,K_SECR1,K_SECR2,K_SECR3,K_SECR4,MS_JIGL,RESET, KC_VOLD,KC_F1, KC_F2, KC_F3, KC_F4, + DF_TYPE,DF_GAME,_______,_______,_______,KC_LCTL,KC_LALT,_______,_______,_______,_______,ooooooo +), + +[L_MACROS] = LAYOUT( + QK_MAKE,_______,DM_REC2,DM_REC1,DM_RSTP, _______,SHEBANG,_______,_______,_______, + QK_FLSH,_______,DM_PLY2,DM_PLY1,_______, PRG_NE, PRG_EQ, PRG_GEQ,PRG_LEQ,PRG_ARR, + QK_VERS,_______,_______,_______,_______,_______,_______,_______,PS_ITEM,FS_PIPE,_______,FS_ARR, + _______,_______,_______,_______,ooooooo,_______,_______,ooooooo,_______,_______,_______,_______ +) + + +// Template +// [L_FUNC] = LAYOUT( +// _______,_______,_______,_______,_______, _______,_______,_______,_______,_______, +// _______,_______,_______,_______,_______, _______,_______,_______,_______,_______, +// _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, +// _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ +// ), + +}; + +layer_state_t layer_state_set_user(layer_state_t state) { + return update_tri_layer_state(state, L_SYMBOLS, L_NAVIGATION, L_MACROS); +} diff --git a/keyboards/keyboardio/atreus/keymaps/replicaJunction/readme.md b/keyboards/keyboardio/atreus/keymaps/replicaJunction/readme.md new file mode 100644 index 000000000000..88f948a94f8a --- /dev/null +++ b/keyboards/keyboardio/atreus/keymaps/replicaJunction/readme.md @@ -0,0 +1,6 @@ +replicaJunction - Keyboardio Atreus +=================================== + +A 44-key layout designed for daily programming usage and occasional, light gaming. + +Most of the interesting logic in this is defined and described in [my userspace](../../../../../users/replicaJunction/readme.md), so check that out if you're interested in how things work. The CAPSWORD and NUMWORD features are especially important for a keyboard this size. diff --git a/keyboards/keyboardio/atreus/keymaps/replicaJunction/rules.mk b/keyboards/keyboardio/atreus/keymaps/replicaJunction/rules.mk new file mode 100644 index 000000000000..7e0b3c9cacca --- /dev/null +++ b/keyboards/keyboardio/atreus/keymaps/replicaJunction/rules.mk @@ -0,0 +1,29 @@ +# Userspace options +USER_CAPS_WORD_ENABLE = yes +USER_MOUSE_JIGGLE_ENABLE = yes +USER_NUM_WORD_ENABLE = yes +USER_SECRETS_ENABLE = yes +USER_SUPER_ALT_TAB_ENABLE = yes + +DYNAMIC_MACRO_ENABLE = yes + +# Extra features that are nice but takes space. Enable only if they're +# used in the layout. +WPM_ENABLE = no +# EXTRAKEY_ENABLE = no # For volume keys and similar +# MOUSEKEY_ENABLE = no # Them mouse keys yo +KEY_OVERRIDE_ENABLE = no +LEADER_ENABLE = no +TAP_DANCE_ENABLE = no +# RGBLIGHT_ENABLE = no # Keyboard RGB underglow +RGB_MATRIX_ENABLE = no + +# Features I definitely don't care aboud +LTO_ENABLE = yes +CONSOLE_ENABLE = no +VERBOSE = no +DEBUG_MATRIX_SCAN_RATE = no +DEBUG_MATRIX = no +MAGIC_ENABLE = no +SPACE_CADET_ENABLE = no +GRAVE_ESC_ENABLE = no diff --git a/keyboards/keyboardio/atreus/rules.mk b/keyboards/keyboardio/atreus/rules.mk index 76ff03a80cab..58b6cce366df 100644 --- a/keyboards/keyboardio/atreus/rules.mk +++ b/keyboards/keyboardio/atreus/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = 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 UNICODE_ENABLE = yes # Unicode diff --git a/keyboards/keyboardio/model01/config.h b/keyboards/keyboardio/model01/config.h index a08b989467ba..30538c56f175 100644 --- a/keyboards/keyboardio/model01/config.h +++ b/keyboards/keyboardio/model01/config.h @@ -35,3 +35,52 @@ along with this program. If not, see . /* RGB matrix constants */ #define DRIVER_LED_TOTAL 64 + +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH diff --git a/keyboards/keyboardio/model01/info.json b/keyboards/keyboardio/model01/info.json index 4e24e0fb8038..e934a7b66de7 100644 --- a/keyboards/keyboardio/model01/info.json +++ b/keyboards/keyboardio/model01/info.json @@ -2,8 +2,6 @@ "keyboard_name": "model01", "url": "https://keyboard.io", "maintainer": "qmk", - "width": 18.5, - "height": 7.5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/keyboardio/model01/keymaps/tw1t611/keymap.c b/keyboards/keyboardio/model01/keymaps/tw1t611/keymap.c index b4bd53e3fe28..3171dd36f96f 100644 --- a/keyboards/keyboardio/model01/keymaps/tw1t611/keymap.c +++ b/keyboards/keyboardio/model01/keymaps/tw1t611/keymap.c @@ -11,9 +11,9 @@ enum { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [DEF] = LAYOUT( _______, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , DE_SS , - KC_ESC , KC_Q , KC_W , KC_E , KC_R , KC_T , RGB_MOD, KC_MUTE, KC_Y , KC_U , KC_I , KC_O , KC_P , DE_AE , - KC_TAB , KC_A , KC_S , KC_D , KC_F , KC_G , DE_PARA, _______, KC_H , KC_J , KC_K , KC_L , DE_SLSH, DE_OE , - DE_PIPE, KC_Z , KC_X , KC_C , KC_V , KC_B , _______, _______, KC_N , KC_M , DE_COMM, DE_DOT , DE_MINS, DE_UE , + KC_ESC , KC_Q , KC_W , KC_E , KC_R , KC_T , RGB_MOD, KC_MUTE, KC_Y , KC_U , KC_I , KC_O , KC_P , DE_ADIA, + KC_TAB , KC_A , KC_S , KC_D , KC_F , KC_G , DE_SECT, _______, KC_H , KC_J , KC_K , KC_L , DE_SLSH, DE_ODIA, + DE_PIPE, KC_Z , KC_X , KC_C , KC_V , KC_B , _______, _______, KC_N , KC_M , DE_COMM, DE_DOT , DE_MINS, DE_UDIA, KC_LALT, KC_LGUI, KC_SPC , KC_ENT , KC_LSFT, MO(MOD), @@ -22,9 +22,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [MOD] = LAYOUT( KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , - DE_CIRC, DE_QUOT, DE_DQOT, DE_LCBR, DE_RCBR, DE_GRV , RGB_TOG, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END , DE_EQL , DE_PERC, - DE_TILD, DE_EXLM, DE_DLR , DE_LPRN, DE_RPRN, DE_AMPR, _______, _______, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, DE_QST , DE_ASTR, - DE_BSLS, DE_HASH, DE_LESS, DE_LBRC, DE_RBRC, DE_MORE, _______, RESET , DE_AT , DE_EURO, DE_SCLN, DE_COLN, DE_UNDS, DE_PLUS, + DE_CIRC, DE_QUOT, DE_DQUO, DE_LCBR, DE_RCBR, DE_GRV , RGB_TOG, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END , DE_EQL , DE_PERC, + DE_TILD, DE_EXLM, DE_DLR , DE_LPRN, DE_RPRN, DE_AMPR, _______, _______, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, DE_QUES, DE_ASTR, + DE_BSLS, DE_HASH, DE_LABK, DE_LBRC, DE_RBRC, DE_RABK, _______, RESET , DE_AT , DE_EURO, DE_SCLN, DE_COLN, DE_UNDS, DE_PLUS, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/keyboardio/model01/matrix.c b/keyboards/keyboardio/model01/matrix.c index 450e48d94780..524ec9bdca20 100644 --- a/keyboards/keyboardio/model01/matrix.c +++ b/keyboards/keyboardio/model01/matrix.c @@ -25,6 +25,17 @@ static matrix_row_t rows[MATRIX_ROWS]; #define ROWS_PER_HAND (MATRIX_ROWS / 2) +// user-defined overridable functions + +__attribute__((weak)) void matrix_init_kb(void) { matrix_init_user(); } + +__attribute__((weak)) void matrix_scan_kb(void) { matrix_scan_user(); } + +__attribute__((weak)) void matrix_init_user(void) {} + +__attribute__((weak)) void matrix_scan_user(void) {} + +// helper functions inline uint8_t matrix_rows(void) { return MATRIX_ROWS; diff --git a/keyboards/keyboardio/model01/model01.c b/keyboards/keyboardio/model01/model01.c index d9fac1cf0327..3644f045163f 100644 --- a/keyboards/keyboardio/model01/model01.c +++ b/keyboards/keyboardio/model01/model01.c @@ -23,16 +23,3 @@ void matrix_init_kb(void) { set_all_leds_to(0, 0, 0); matrix_init_user(); } - -void matrix_scan_kb(void) { - matrix_scan_user(); -} - -__attribute__ ((weak)) -void matrix_scan_user(void) { -} - -__attribute__ ((weak)) -void matrix_init_user(void) { -} - diff --git a/keyboards/keyboardio/model01/rules.mk b/keyboards/keyboardio/model01/rules.mk index a8c627562c13..f89a6b43a798 100644 --- a/keyboards/keyboardio/model01/rules.mk +++ b/keyboards/keyboardio/model01/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode CUSTOM_MATRIX = yes QUANTUM_LIB_SRC += i2c_master.c diff --git a/keyboards/keycapsss/kimiko/info.json b/keyboards/keycapsss/kimiko/info.json index 1bac3e466cb5..7b3749f5033e 100644 --- a/keyboards/keycapsss/kimiko/info.json +++ b/keyboards/keycapsss/kimiko/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Kimiko", "url": "https://keycapsss.com", "maintainer": "@ben_roe Keycapsss", - "width": 15, - "height": 5.75, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/keycapsss/kimiko/keymaps/default/keymap.c b/keyboards/keycapsss/kimiko/keymaps/default/keymap.c index 4a008b46609a..5a33d527c805 100644 --- a/keyboards/keycapsss/kimiko/keymaps/default/keymap.c +++ b/keyboards/keycapsss/kimiko/keymaps/default/keymap.c @@ -122,7 +122,7 @@ layer_state_t layer_state_set_user(layer_state_t state) { return state; } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { if (is_keyboard_master()) { return OLED_ROTATION_270; @@ -321,12 +321,13 @@ void render_status_secondary(void) { render_space(); } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { render_status_main(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) } else { render_status_secondary(); } + return false; } #endif diff --git a/keyboards/keycapsss/kimiko/keymaps/default/rules.mk b/keyboards/keycapsss/kimiko/keymaps/default/rules.mk index 947873117ee7..5dc0c64072af 100644 --- a/keyboards/keycapsss/kimiko/keymaps/default/rules.mk +++ b/keyboards/keycapsss/kimiko/keymaps/default/rules.mk @@ -1,4 +1,5 @@ -OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enables the use of OLED displays ENCODER_ENABLE = yes # ENables the use of one or more encoders RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow diff --git a/keyboards/keycapsss/kimiko/rules.mk b/keyboards/keycapsss/kimiko/rules.mk index 9be186a88fc3..7f7154bdfb1f 100644 --- a/keyboards/keycapsss/kimiko/rules.mk +++ b/keyboards/keycapsss/kimiko/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = yes diff --git a/keyboards/keycapsss/o4l_5x12/info.json b/keyboards/keycapsss/o4l_5x12/info.json index bd2d5f63276c..3553ada42b8b 100644 --- a/keyboards/keycapsss/o4l_5x12/info.json +++ b/keyboards/keycapsss/o4l_5x12/info.json @@ -2,8 +2,6 @@ "keyboard_name": "O4L 5x12", "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/keycapsss/o4l_5x12", "maintainer": "BenRoe", - "width": 12, - "height": 5, "layouts": { "LAYOUT_ortho_5x12": { "layout": [ diff --git a/keyboards/keycapsss/o4l_5x12/rules.mk b/keyboards/keycapsss/o4l_5x12/rules.mk index 05de11caf5da..f1b97d43c314 100644 --- a/keyboards/keycapsss/o4l_5x12/rules.mk +++ b/keyboards/keycapsss/o4l_5x12/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LAYOUTS = ortho_5x12 diff --git a/keyboards/keycapsss/plaid_pad/info.json b/keyboards/keycapsss/plaid_pad/info.json index 007f8bb5f8fe..1ccac5d2cc14 100644 --- a/keyboards/keycapsss/plaid_pad/info.json +++ b/keyboards/keycapsss/plaid_pad/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Plaid-Pad", "url": "https://keycapsss.com/diy-kits/104/plaid-pad-4x4-numpad", "maintainer": "BenRoe", - "width": 4, - "height": 4, "layouts": { "LAYOUT_ortho_4x4": { - "key_count": 16, "layout": [ {"w": 1,"x": 0,"y": 0}, {"w": 1,"x": 1,"y": 0}, diff --git a/keyboards/keycapsss/plaid_pad/keymaps/default/keymap.c b/keyboards/keycapsss/plaid_pad/keymaps/default/keymap.c index 6e338dc1025a..23821853629f 100644 --- a/keyboards/keycapsss/plaid_pad/keymaps/default/keymap.c +++ b/keyboards/keycapsss/plaid_pad/keymaps/default/keymap.c @@ -34,9 +34,10 @@ void keyboard_post_init_user(void) { // Rev3 and above only -#ifdef OLED_DRIVER_ENABLE -void oled_task_user(void) { +#ifdef OLED_ENABLE +bool oled_task_user(void) { oled_write_ln_P(PSTR("Plaid-Pad ///////////"), false); + return false; } #endif diff --git a/keyboards/keycapsss/plaid_pad/keymaps/oled/keymap.c b/keyboards/keycapsss/plaid_pad/keymaps/oled/keymap.c index f53d289879d7..540a735fc559 100644 --- a/keyboards/keycapsss/plaid_pad/keymaps/oled/keymap.c +++ b/keyboards/keycapsss/plaid_pad/keymaps/oled/keymap.c @@ -98,7 +98,7 @@ void process_combo_event(uint16_t combo_index, bool pressed) { } } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE void render_space(void) { oled_write_P(PSTR(" "), false); @@ -117,9 +117,10 @@ void oled_render_layer_state(void) { } -void oled_task_user(void) { +bool oled_task_user(void) { oled_write_ln_P(PSTR("Plaid-Pad ///////////"), false); oled_render_layer_state(); + return false; } #endif diff --git a/keyboards/keycapsss/plaid_pad/keymaps/oled/rules.mk b/keyboards/keycapsss/plaid_pad/keymaps/oled/rules.mk index a95ca8d778f5..9ce6e078db2b 100644 --- a/keyboards/keycapsss/plaid_pad/keymaps/oled/rules.mk +++ b/keyboards/keycapsss/plaid_pad/keymaps/oled/rules.mk @@ -1,2 +1,3 @@ -OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enables the use of OLED displays COMBO_ENABLE = yes diff --git a/keyboards/keycapsss/plaid_pad/keymaps/via/keymap.c b/keyboards/keycapsss/plaid_pad/keymaps/via/keymap.c index 0f32532d9288..7d48591cd2f3 100644 --- a/keyboards/keycapsss/plaid_pad/keymaps/via/keymap.c +++ b/keyboards/keycapsss/plaid_pad/keymaps/via/keymap.c @@ -61,9 +61,10 @@ void keyboard_post_init_user(void) { // Rev3 and above only -#ifdef OLED_DRIVER_ENABLE -void oled_task_user(void) { +#ifdef OLED_ENABLE +bool oled_task_user(void) { oled_write_ln_P(PSTR("Plaid-Pad ///////////"), false); + return false; } #endif diff --git a/keyboards/keycapsss/plaid_pad/rev3/rules.mk b/keyboards/keycapsss/plaid_pad/rev3/rules.mk index 9cc93aab4a5c..e72f11863f7e 100644 --- a/keyboards/keycapsss/plaid_pad/rev3/rules.mk +++ b/keyboards/keycapsss/plaid_pad/rev3/rules.mk @@ -1,2 +1,3 @@ ENCODER_ENABLE = yes -OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enables the use of OLED displays diff --git a/keyboards/keycapsss/plaid_pad/rules.mk b/keyboards/keycapsss/plaid_pad/rules.mk index d4485d939f47..de2df165f4d5 100644 --- a/keyboards/keycapsss/plaid_pad/rules.mk +++ b/keyboards/keycapsss/plaid_pad/rules.mk @@ -2,23 +2,20 @@ MCU = atmega328p # Bootloader selection -BOOTLOADER = USBasp +BOOTLOADER = usbasploader # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 LAYOUTS = ortho_4x4 diff --git a/keyboards/keychron/q1/config.h b/keyboards/keychron/q1/config.h new file mode 100644 index 000000000000..149280161f2b --- /dev/null +++ b/keyboards/keychron/q1/config.h @@ -0,0 +1,96 @@ +/* Copyright 2021 @ Keychron(https://www.keychron.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x3434 +#define MANUFACTURER Keychron +#define PRODUCT Keychron Q1 + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 15 + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION ROW2COL + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* RGB Matrix Driver Configuration */ +#define DRIVER_COUNT 2 +#define DRIVER_ADDR_1 0b1010000 +#define DRIVER_ADDR_2 0b1011111 + +/* DIP switch */ +#define DIP_SWITCH_MATRIX_GRID { {0,1} } + +/* Disable DIP switch in matrix data */ +#define MATRIX_MASKED + +/* NKRO */ +#define FORCE_NKRO + +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +// #define ENABLE_RGB_MATRIX_ALPHAS_MODS +// #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +// #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +// #define ENABLE_RGB_MATRIX_BAND_SAT +// #define ENABLE_RGB_MATRIX_BAND_VAL +// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +// #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +// #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +// #define ENABLE_RGB_MATRIX_HUE_BREATHING +// #define ENABLE_RGB_MATRIX_HUE_PENDULUM +// #define ENABLE_RGB_MATRIX_HUE_WAVE +// #define ENABLE_RGB_MATRIX_PIXEL_RAIN +// #define ENABLE_RGB_MATRIX_PIXEL_FLOW +// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH diff --git a/keyboards/keychron/q1/q1.c b/keyboards/keychron/q1/q1.c new file mode 100644 index 000000000000..a316c1fdcfa1 --- /dev/null +++ b/keyboards/keychron/q1/q1.c @@ -0,0 +1,35 @@ +/* Copyright 2021 @ Keychron (https://www.keychron.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "q1.h" + + +const matrix_row_t matrix_mask[] = { + 0b0111111111111101, + 0b0111111111111111, + 0b0111111111111111, + 0b0111111111111111, + 0b0111111111111111, + 0b0111111111111111, +}; + +bool dip_switch_update_kb(uint8_t index, bool active) { + if (!dip_switch_update_user(index, active)) { return false;} + if (index == 0) { + default_layer_set(1UL << (active ? 2 : 0)); + } + return true; +} diff --git a/keyboards/keychron/q1/q1.h b/keyboards/keychron/q1/q1.h new file mode 100644 index 000000000000..eb9a7d69a74c --- /dev/null +++ b/keyboards/keychron/q1/q1.h @@ -0,0 +1,26 @@ +/* Copyright 2021 @ Keychron (https://www.keychron.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + + +#if defined(KEYBOARD_keychron_q1_rev_0100) +# include "rev_0100.h" +#elif defined(KEYBOARD_keychron_q1_rev_0102) +# include "rev_0102.h" +#endif \ No newline at end of file diff --git a/keyboards/keychron/q1/readme.md b/keyboards/keychron/q1/readme.md new file mode 100644 index 000000000000..d7b6af3b374c --- /dev/null +++ b/keyboards/keychron/q1/readme.md @@ -0,0 +1,21 @@ +# Keychron Q1 + +![Keychron Q1](https://cdn.shopify.com/s/files/1/0059/0630/1017/t/5/assets/pf-823ebdc7--1073.jpg) + +A customizable 75% keyboard. + +* Keyboard Maintainer: [Keychron](https://github.com/keychron) +* Hardware Supported: Keychron Q1 +* Hardware Availability: [Keychron](https://www.keychron.com) + +Make example for this keyboard (after setting up your build environment): + + make keychron/q1/rev_0100:default + +Flashing example for this keyboard: + + make keychron/q1/rev_0100:default:flash + +**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard. + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/keychron/q1/rev_0100/config.h b/keyboards/keychron/q1/rev_0100/config.h new file mode 100644 index 000000000000..435f386a596b --- /dev/null +++ b/keyboards/keychron/q1/rev_0100/config.h @@ -0,0 +1,31 @@ +/* Copyright 2021 @ Keychron (https://www.keychron.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + + +/* USB Device descriptor parameter */ +#define PRODUCT_ID 0x0100 +#define DEVICE_VER 0x0100 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { D3, D2, B3, B2, B1, B0 } +#define MATRIX_COL_PINS { D5, D4, D6, D7, B4, B5, B6, C6, C7, F7, F6, F5, F4, F1, F0 } + +/* RGB Matrix Configuration */ +#define DRIVER_1_LED_TOTAL 59 +#define DRIVER_2_LED_TOTAL 23 +#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) \ No newline at end of file diff --git a/keyboards/keychron/q1/rev_0100/info.json b/keyboards/keychron/q1/rev_0100/info.json new file mode 100644 index 000000000000..dba3320ba752 --- /dev/null +++ b/keyboards/keychron/q1/rev_0100/info.json @@ -0,0 +1,91 @@ +{ + "keyboard_name": "Keychron Q1", + "url": "https://github.com/Keychron", + "maintainer": "lalalademaxiya1", + "layouts": { + "LAYOUT_ansi_82": { + "layout": [{"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":1.25, "y":0}, + {"label":"F2", "x":2.25, "y":0}, + {"label":"F3", "x":3.25, "y":0}, + {"label":"F4", "x":4.25, "y":0}, + {"label":"F5", "x":5.5, "y":0}, + {"label":"F6", "x":6.5, "y":0}, + {"label":"F7", "x":7.5, "y":0}, + {"label":"F8", "x":8.5, "y":0}, + {"label":"F9", "x":9.75, "y":0}, + {"label":"F10", "x":10.75, "y":0}, + {"label":"F11", "x":11.75, "y":0}, + {"label":"F12", "x":12.75, "y":0}, + {"label":"Delete", "x":14, "y":0}, + {"label":"Insert", "x":15.25, "y":0}, + {"label":"~", "x":0, "y":1}, + {"label":"!", "x":1, "y":1}, + {"label":"@", "x":2, "y":1}, + {"label":"#", "x":3, "y":1}, + {"label":"$", "x":4, "y":1}, + {"label":"%", "x":5, "y":1}, + {"label":"^", "x":6, "y":1}, + {"label":"&", "x":7, "y":1}, + {"label":"*", "x":8, "y":1}, + {"label":"(", "x":9, "y":1}, + {"label":")", "x":10, "y":1}, + {"label":"_", "x":11, "y":1}, + {"label":"+", "x":12, "y":1}, + {"label":"Backspace", "x":13, "y":1, "w":2}, + {"label":"Page Up", "x":15.25, "y":1}, + {"label":"Tab", "x":0, "y":2, "w":1.5}, + {"label":"Q", "x":1.5, "y":2}, + {"label":"W", "x":2.5, "y":2}, + {"label":"E", "x":3.5, "y":2}, + {"label":"R", "x":4.5, "y":2}, + {"label":"T", "x":5.5, "y":2}, + {"label":"Y", "x":6.5, "y":2}, + {"label":"U", "x":7.5, "y":2}, + {"label":"I", "x":8.5, "y":2}, + {"label":"O", "x":9.5, "y":2}, + {"label":"P", "x":10.5, "y":2}, + {"label":"{", "x":11.5, "y":2}, + {"label":"}", "x":12.5, "y":2}, + {"label":"|", "x":13.5, "y":2, "w":1.5}, + {"label":"Page Down", "x":15.25, "y":2}, + {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, + {"label":"A", "x":1.75, "y":3}, + {"label":"S", "x":2.75, "y":3}, + {"label":"D", "x":3.75, "y":3}, + {"label":"F", "x":4.75, "y":3}, + {"label":"G", "x":5.75, "y":3}, + {"label":"H", "x":6.75, "y":3}, + {"label":"J", "x":7.75, "y":3}, + {"label":"K", "x":8.75, "y":3}, + {"label":"L", "x":9.75, "y":3}, + {"label":":", "x":10.75, "y":3}, + {"label":"\"", "x":11.75, "y":3}, + {"label":"Enter", "x":12.75, "y":3, "w":2.25}, + {"label":"Home", "x":15.25, "y":3}, + {"label":"Shift", "x":0, "y":4, "w":2.25}, + {"label":"Z", "x":2.25, "y":4}, + {"label":"X", "x":3.25, "y":4}, + {"label":"C", "x":4.25, "y":4}, + {"label":"V", "x":5.25, "y":4}, + {"label":"B", "x":6.25, "y":4}, + {"label":"N", "x":7.25, "y":4}, + {"label":"M", "x":8.25, "y":4}, + {"label":"<", "x":9.25, "y":4}, + {"label":">", "x":10.25, "y":4}, + {"label":"?", "x":11.25, "y":4}, + {"label":"Shift", "x":12.25, "y":4, "w":1.75}, + {"label":"\u2191", "x":14.25, "y":4.25}, + {"label":"Ctrl", "x":0, "y":5, "w":1.25}, + {"label":"Win", "x":1.25, "y":5, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5, "w":1.25}, + {"x":3.75, "y":5, "w":6.25}, + {"label":"Alt", "x":10, "y":5}, + {"label":"Fn", "x":11, "y":5}, + {"label":"Ctrl", "x":12, "y":5}, + {"label":"\u2190", "x":13.25, "y":5.25}, + {"label":"\u2193", "x":14.25, "y":5.25}, + {"label":"\u2192", "x":15.25, "y":5.25}] + } + } +} diff --git a/keyboards/keychron/q1/rev_0100/keymaps/default/keymap.c b/keyboards/keychron/q1/rev_0100/keymaps/default/keymap.c new file mode 100644 index 000000000000..e000dd7dd7bb --- /dev/null +++ b/keyboards/keychron/q1/rev_0100/keymaps/default/keymap.c @@ -0,0 +1,64 @@ +/* Copyright 2021 @ Keychron (https://www.keychron.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + + +enum layers{ + MAC_BASE, + MAC_FN, + WIN_BASE, + WIN_FN +}; + +#define KC_TASK LGUI(KC_TAB) +#define KC_FLXP LGUI(KC_E) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[MAC_BASE] = LAYOUT_ansi_82( + KC_ESC, KC_BRID, KC_BRIU, KC_F3, KC_F4, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + +[MAC_FN] = LAYOUT_ansi_82( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +[WIN_BASE] = LAYOUT_ansi_82( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + +[WIN_FN] = LAYOUT_ansi_82( + KC_TRNS, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) + +}; \ No newline at end of file diff --git a/keyboards/keychron/q1/rev_0100/keymaps/gtg465x/README.md b/keyboards/keychron/q1/rev_0100/keymaps/gtg465x/README.md new file mode 100644 index 000000000000..c2d5799bb8b1 --- /dev/null +++ b/keyboards/keychron/q1/rev_0100/keymaps/gtg465x/README.md @@ -0,0 +1,21 @@ +# gtg465x's Keychron Q1 keymap + +- On macOS, F3 opens Mission Control and F4 opens Launchpad without needing to configure shortcuts in System Preferences +- RGB lighting turns off when the computer sleeps +- Caps Lock and alpha keys turn red to indicate when Caps Lock is on +- When the Fn layer is active, RGB lighting turns off for keys that are not assigned + +## Changelog + +### 10/3/2021 - 1.0.3 + +- Feature: When the Fn layer is active, RGB lighting turns off for keys that are not assigned + +### 10/1/2021 - 1.0.2 + +- Added Caps Lock indicator (my implementation is different, but this was inspired by mkillewald) +- Mission Control and Launchpad custom keycodes are now defined using the VIA user keycodes range so they can be labeled properly in VIA + +### 9/28/2021 - 1.0.1 + +- Initial release diff --git a/keyboards/keychron/q1/rev_0100/keymaps/gtg465x/config.h b/keyboards/keychron/q1/rev_0100/keymaps/gtg465x/config.h new file mode 100644 index 000000000000..5ac05d04c12f --- /dev/null +++ b/keyboards/keychron/q1/rev_0100/keymaps/gtg465x/config.h @@ -0,0 +1,25 @@ +/* Copyright 2021 @ Grayson Carr + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +/* RGB Matrix Configuration */ +#ifdef RGB_MATRIX_ENABLE +# define RGB_DISABLE_WHEN_USB_SUSPENDED +# define CAPS_LOCK_INDICATOR_COLOR RGB_RED +# define CAPS_LOCK_INDICATOR_LIGHT_ALPHAS +# define FN_LAYER_TRANSPARENT_KEYS_OFF +#endif diff --git a/keyboards/keychron/q1/rev_0100/keymaps/gtg465x/keymap.c b/keyboards/keychron/q1/rev_0100/keymaps/gtg465x/keymap.c new file mode 100644 index 000000000000..7f806f6b4570 --- /dev/null +++ b/keyboards/keychron/q1/rev_0100/keymaps/gtg465x/keymap.c @@ -0,0 +1,102 @@ +/* Copyright 2021 @ Grayson Carr + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +#include "keymap_user.h" +#ifdef RGB_MATRIX_ENABLE +# include "rgb_matrix_user.h" +#endif + +// clang-format off + +enum custom_keycodes { +#ifdef VIA_ENABLE + KC_MISSION_CONTROL = USER00, +#else + KC_MISSION_CONTROL = SAFE_RANGE, +#endif + KC_LAUNCHPAD +}; + +#define KC_MCTL KC_MISSION_CONTROL +#define KC_LPAD KC_LAUNCHPAD +#define KC_TASK LGUI(KC_TAB) +#define KC_FLXP LGUI(KC_E) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[MAC_BASE] = LAYOUT_ansi_82( + KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + +[MAC_FN] = LAYOUT_ansi_82( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +[WIN_BASE] = LAYOUT_ansi_82( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + +[WIN_FN] = LAYOUT_ansi_82( + KC_TRNS, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) + +}; + +// clang-format on + +void matrix_init_user(void) { +#ifdef RGB_MATRIX_ENABLE + rgb_matrix_init_user(); +#endif +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_MISSION_CONTROL: + if (record->event.pressed) { + host_consumer_send(0x29F); + } else { + host_consumer_send(0); + } + return false; // Skip all further processing of this key + case KC_LAUNCHPAD: + if (record->event.pressed) { + host_consumer_send(0x2A0); + } else { + host_consumer_send(0); + } + return false; // Skip all further processing of this key + default: + return true; // Process all other keycodes normally + } +} diff --git a/keyboards/keychron/q1/rev_0100/keymaps/gtg465x/keymap_user.h b/keyboards/keychron/q1/rev_0100/keymaps/gtg465x/keymap_user.h new file mode 100644 index 000000000000..728114d556ff --- /dev/null +++ b/keyboards/keychron/q1/rev_0100/keymaps/gtg465x/keymap_user.h @@ -0,0 +1,28 @@ +/* Copyright 2021 @ Grayson Carr + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +// clang-format off + +enum layers { + MAC_BASE, + MAC_FN, + WIN_BASE, + WIN_FN +}; + +// clang-format on diff --git a/keyboards/keychron/q1/rev_0100/keymaps/gtg465x/rgb_matrix_user.c b/keyboards/keychron/q1/rev_0100/keymaps/gtg465x/rgb_matrix_user.c new file mode 100644 index 000000000000..9bc7231ece0f --- /dev/null +++ b/keyboards/keychron/q1/rev_0100/keymaps/gtg465x/rgb_matrix_user.c @@ -0,0 +1,71 @@ +/* Copyright 2021 @ Grayson Carr + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +#include "rgb_matrix_user.h" +#include "keymap_user.h" + +keypos_t led_index_key_position[DRIVER_LED_TOTAL]; + +void rgb_matrix_init_user(void) { + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS; col++) { + uint8_t led_index = g_led_config.matrix_co[row][col]; + if (led_index != NO_LED) { + led_index_key_position[led_index] = (keypos_t){.row = row, .col = col}; + } + } + } +} + +void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { + uint8_t current_layer = get_highest_layer(layer_state); + switch (current_layer) { + case MAC_BASE: + case WIN_BASE: +#ifdef CAPS_LOCK_INDICATOR_COLOR + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_caps_lock_indicator, CAPS_LOCK_INDICATOR_COLOR); + } +#endif + break; + case MAC_FN: + case WIN_FN: +#ifdef FN_LAYER_TRANSPARENT_KEYS_OFF + rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_transparent, RGB_OFF); +#endif + break; + } +} + +void rgb_matrix_set_color_by_keycode(uint8_t led_min, uint8_t led_max, uint8_t layer, bool (*is_keycode)(uint16_t), uint8_t red, uint8_t green, uint8_t blue) { + for (uint8_t i = led_min; i < led_max; i++) { + uint16_t keycode = keymap_key_to_keycode(layer, led_index_key_position[i]); + if ((*is_keycode)(keycode)) { + rgb_matrix_set_color(i, red, green, blue); + } + } +} + +bool is_caps_lock_indicator(uint16_t keycode) { +#ifdef CAPS_LOCK_INDICATOR_LIGHT_ALPHAS + return (KC_A <= keycode && keycode <= KC_Z) || keycode == KC_CAPS; +#else + return keycode == KC_CAPS; +#endif +} + +bool is_transparent(uint16_t keycode) { return keycode == KC_TRNS; } diff --git a/keyboards/keychron/q1/rev_0100/keymaps/gtg465x/rgb_matrix_user.h b/keyboards/keychron/q1/rev_0100/keymaps/gtg465x/rgb_matrix_user.h new file mode 100644 index 000000000000..dead4541676d --- /dev/null +++ b/keyboards/keychron/q1/rev_0100/keymaps/gtg465x/rgb_matrix_user.h @@ -0,0 +1,24 @@ +/* Copyright 2021 @ Grayson Carr + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +void rgb_matrix_init_user(void); + +void rgb_matrix_set_color_by_keycode(uint8_t led_min, uint8_t led_max, uint8_t layer, bool (*is_keycode)(uint16_t), uint8_t red, uint8_t green, uint8_t blue); + +bool is_caps_lock_indicator(uint16_t keycode); +bool is_transparent(uint16_t keycode); diff --git a/keyboards/keychron/q1/rev_0100/keymaps/gtg465x/rules.mk b/keyboards/keychron/q1/rev_0100/keymaps/gtg465x/rules.mk new file mode 100644 index 000000000000..42ba38028d26 --- /dev/null +++ b/keyboards/keychron/q1/rev_0100/keymaps/gtg465x/rules.mk @@ -0,0 +1,6 @@ +VIA_ENABLE = yes +MOUSEKEY_ENABLE = no + +ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes) + SRC += rgb_matrix_user.c +endif diff --git a/keyboards/keychron/q1/rev_0100/keymaps/mkillewald/config.h b/keyboards/keychron/q1/rev_0100/keymaps/mkillewald/config.h new file mode 100644 index 000000000000..bc9fe405c35c --- /dev/null +++ b/keyboards/keychron/q1/rev_0100/keymaps/mkillewald/config.h @@ -0,0 +1,23 @@ +/* Copyright 2021 @ Mike Killewald + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#ifdef RGB_MATRIX_ENABLE +# define RGB_DISABLE_WHEN_USB_SUSPENDED +# define CAPS_LOCK_INDICATOR_COLOR RGB_RED +# define FN_LAYER_COLOR RGB_ORANGE +#endif \ No newline at end of file diff --git a/keyboards/keychron/q1/rev_0100/keymaps/mkillewald/keymap.c b/keyboards/keychron/q1/rev_0100/keymaps/mkillewald/keymap.c new file mode 100644 index 000000000000..937b20ee106f --- /dev/null +++ b/keyboards/keychron/q1/rev_0100/keymaps/mkillewald/keymap.c @@ -0,0 +1,175 @@ +/* Copyright 2021 @ Mike Killewald + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +#include "keymap_user.h" +#ifdef RGB_MATRIX_ENABLE +# include "rgb_matrix_user.h" +#endif + +// clang-format off + +typedef union { + uint32_t raw; + struct { + bool caps_lock_light_tab :1; + bool caps_lock_light_alphas :1; + bool fn_layer_transparent_keys_off :1; + bool fn_layer_color_enable :1; + }; +} user_config_t; + +user_config_t user_config; + +enum custom_keycodes { +#ifdef VIA_ENABLE + KC_MISSION_CONTROL = USER00, +#else + KC_MISSION_CONTROL = SAFE_RANGE, +#endif + KC_LAUNCHPAD, + KC_LIGHT_TAB_TOGGLE, + KC_LIGHT_ALPHAS_TOGGLE, + KC_FN_LAYER_TRANSPARENT_KEYS_TOGGLE, + KC_FN_LAYER_COLOR_TOGGLE +}; + +#define KC_MCTL KC_MISSION_CONTROL +#define KC_LPAD KC_LAUNCHPAD +#define KC_LTTOG KC_LIGHT_TAB_TOGGLE +#define KC_LATOG KC_LIGHT_ALPHAS_TOGGLE +#define KC_TKTOG KC_FN_LAYER_TRANSPARENT_KEYS_TOGGLE +#define KC_FCTOG KC_FN_LAYER_COLOR_TOGGLE +#define KC_TASK LGUI(KC_TAB) +#define KC_FLXP LGUI(KC_E) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[MAC_BASE] = LAYOUT_ansi_82( + KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + +[MAC_FN] = LAYOUT_ansi_82( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LTTOG, KC_LATOG, KC_TKTOG, KC_FCTOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +[WIN_BASE] = LAYOUT_ansi_82( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + +[WIN_FN] = LAYOUT_ansi_82( + KC_TRNS, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LTTOG, KC_LATOG, KC_TKTOG, KC_FCTOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) + +}; + +// clang-format on + +void matrix_init_user(void) { +#ifdef RGB_MATRIX_ENABLE + rgb_matrix_init_user(); +#endif +} + +void keyboard_post_init_user(void) { + user_config.raw = eeconfig_read_user(); +} + +void eeconfig_init_user(void) { + user_config.raw = 0; + user_config.caps_lock_light_tab = false; + user_config.caps_lock_light_alphas = false; + user_config.fn_layer_transparent_keys_off = true; + user_config.fn_layer_color_enable = false; + eeconfig_update_user(user_config.raw); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_MISSION_CONTROL: + if (record->event.pressed) { + host_consumer_send(0x29F); + } else { + host_consumer_send(0); + } + return false; // Skip all further processing of this key + case KC_LAUNCHPAD: + if (record->event.pressed) { + host_consumer_send(0x2A0); + } else { + host_consumer_send(0); + } + return false; // Skip all further processing of this key + case KC_LIGHT_TAB_TOGGLE: + if (record->event.pressed) { + user_config.caps_lock_light_tab ^= 1; // bitwise xor to toggle status bit + eeconfig_update_user(user_config.raw); + } + return false; // Skip all further processing of this key + case KC_LIGHT_ALPHAS_TOGGLE: + if (record->event.pressed) { + user_config.caps_lock_light_alphas ^= 1; + eeconfig_update_user(user_config.raw); + } + return false; // Skip all further processing of this key + case KC_FN_LAYER_TRANSPARENT_KEYS_TOGGLE: + if (record->event.pressed) { + user_config.fn_layer_transparent_keys_off ^= 1; + eeconfig_update_user(user_config.raw); + } + return false; // Skip all further processing of this key + case KC_FN_LAYER_COLOR_TOGGLE: + if (record->event.pressed) { + user_config.fn_layer_color_enable ^= 1; + eeconfig_update_user(user_config.raw); + } + return false; // Skip all further processing of this key + default: + return true; // Process all other keycodes normally + } +} + +bool get_caps_lock_light_tab(void) { + return user_config.caps_lock_light_tab; +} + +bool get_caps_lock_light_alphas(void) { + return user_config.caps_lock_light_alphas; +} + +bool get_fn_layer_transparent_keys_off(void) { + return user_config.fn_layer_transparent_keys_off; +} + +bool get_fn_layer_color_enable(void) { + return user_config.fn_layer_color_enable; +} \ No newline at end of file diff --git a/keyboards/keychron/q1/rev_0100/keymaps/mkillewald/keymap_user.h b/keyboards/keychron/q1/rev_0100/keymaps/mkillewald/keymap_user.h new file mode 100644 index 000000000000..87b1baf47f23 --- /dev/null +++ b/keyboards/keychron/q1/rev_0100/keymaps/mkillewald/keymap_user.h @@ -0,0 +1,33 @@ +/* Copyright 2021 @ Mike Killewald + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +// clang-format off + +enum layers { + MAC_BASE, + MAC_FN, + WIN_BASE, + WIN_FN +}; + +// clang-format on + +bool get_caps_lock_light_tab(void); +bool get_caps_lock_light_alphas(void); +bool get_fn_layer_transparent_keys_off(void); +bool get_fn_layer_color_enable(void); \ No newline at end of file diff --git a/keyboards/keychron/q1/rev_0100/keymaps/mkillewald/readme.md b/keyboards/keychron/q1/rev_0100/keymaps/mkillewald/readme.md new file mode 100644 index 000000000000..f8d5de012f61 --- /dev/null +++ b/keyboards/keychron/q1/rev_0100/keymaps/mkillewald/readme.md @@ -0,0 +1,54 @@ +## mkillewald's Keychron Q1 keymap (ANSI rev_0100) v1.0.4 + +This keymap builds on the keymap by Grayson Carr (gtg465x) but adds a couple options. + +## Features: +- On macOS, F3 opens Mission Control and F4 opens Launchpad without needing to configure shortcuts in System Preferences +- RGB lighting turns off when the computer sleeps +- Caps Lock RGB indicator + - the Caps Lock key will light when Caps Lock is enabled with the following options: + - #define CAPS_LOCK_INDICATOR_COLOR [color] in config.h to set the backlight color used for the indicator when Caps Lock is enabled (default: red) + - Fn+Z will toggle lighting the TAB key when Caps Lock is enabled. This is useful with non backlit keycaps/legends. (default: off) + - Fn+X will toggle lighting all the alpha keys when Caps Lock is enabled. (default: off) + +- Dynamic Fn layer RGB indicator + - When the Fn key is held down, any keys defined on the Fn layer in this firmware or in VIA will be highlighted with the following options: + - #define FN_LAYER_COLOR [color] in config.h to set a static color for defined keys (default: orange) + - Fn+C will toggle turning off RGB for keys with no definition (default: RGB off) + - Fn+V will toggle lighting the defined Fn layer keys with the static color set with FN_LAYER_COLOR (default: static color off) + +- All custom keycodes can be moved to different keys in VIA by using the ANY key with the following keycodes: + - USER00 (default: F3) macOS Mission Control + - USER01 (default: F4) macOS Launchpad + - USER02 (default: Fn+Z) Caps Lock light Tab toggle + - USER03 (default: Fn+X) Caps Lock light alphas toggle + - USER04 (default: Fn+C) Fn layer non-defined keys RGB toggle + - USER05 (default: Fn+V) Fn layer defined keys static color toggle + +RGB must be toggled on for all indicators to function. If you do not want an RGB mode active but still want the indicators, toggle RGB on and turn the brightness all the way off. The indicators will remain at full brightness. + +Please make sure to save any customizations you have made in VIA to a .json file before flashing the firmware. Sometimes it has been necessary to re-apply those changes in VIA after flashing the firmware. If that is the case, you will most likely need to manually add the USER00 through USER05 custom keycodes after loading your customizations from the saved .json file. Then re-save a new .json file which will have your previous customizations and the custom keycodes for future use as needed. + +#### USE AT YOUR OWN RISK + +## Changelog: + +v1.0.4 October 9, 2021 +- Caps Lock and Fn layer toggles are now stored in eeprom so settings will remain when Q1 is unplugged + +v1.0.3 October 8, 2021 +- now using keycode toggles instead of preprocessor directive to set the various Caps Lock and Fn Layer RGB lighting options. This allows for setting the options from user space without having to recompile. + +v1.0.2 October 7, 2021 +- adapted Grayson Carr's (gtg465x) Caps Lock alphas and dynamic Fn layer RGB routines +- added CAPS_LOCK_INDICATOR_LIGHT_TAB config option to enable/disable lighting Tab with Caps Lock indicator +- added FN_LAYER_COLOR config option to set FN layer static color + +v1.0.1 October 7, 2021 +- Mission Control and Launchpad custom keycodes are now defined using the VIA user keycodes range so thay can be labeled properly in VIA (adopted change from gtg465x) + +v1.0.0 September 30, 2021 +- Initial release built upon keymap by Grayson Carr (gtg465x) +- defined Mission Control (F3) and Launchpad (F4) keycodes for macOs +- RGB backlight turns off when computer sleeps +- added Caps Lock indicator lighting both the Caps Lock and Tab LEDs for better effect on non-backlit keycaps diff --git a/keyboards/keychron/q1/rev_0100/keymaps/mkillewald/rgb_matrix_user.c b/keyboards/keychron/q1/rev_0100/keymaps/mkillewald/rgb_matrix_user.c new file mode 100644 index 000000000000..f06039af064d --- /dev/null +++ b/keyboards/keychron/q1/rev_0100/keymaps/mkillewald/rgb_matrix_user.c @@ -0,0 +1,83 @@ +/* Copyright 2021 @ Mike Killewald + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +#include "rgb_matrix_user.h" +#include "keymap_user.h" + +keypos_t led_index_key_position[DRIVER_LED_TOTAL]; + +void rgb_matrix_init_user(void) { + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS; col++) { + uint8_t led_index = g_led_config.matrix_co[row][col]; + if (led_index != NO_LED) { + led_index_key_position[led_index] = (keypos_t){.row = row, .col = col}; + } + } + } +} + +void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { + uint8_t current_layer = get_highest_layer(layer_state); + switch (current_layer) { + case MAC_BASE: + case WIN_BASE: +#ifdef CAPS_LOCK_INDICATOR_COLOR + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_caps_lock_indicator, CAPS_LOCK_INDICATOR_COLOR); + } +#endif + break; + case MAC_FN: + case WIN_FN: +#ifdef FN_LAYER_COLOR + if (get_fn_layer_color_enable()) { + rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_not_transparent, FN_LAYER_COLOR); + } +#endif + if (get_fn_layer_transparent_keys_off()) { + rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_transparent, RGB_OFF); + } + break; + } +} + +void rgb_matrix_set_color_by_keycode(uint8_t led_min, uint8_t led_max, uint8_t layer, bool (*is_keycode)(uint16_t), uint8_t red, uint8_t green, uint8_t blue) { + for (uint8_t i = led_min; i < led_max; i++) { + uint16_t keycode = keymap_key_to_keycode(layer, led_index_key_position[i]); + if ((*is_keycode)(keycode)) { + rgb_matrix_set_color(i, red, green, blue); + } + } +} + +bool is_caps_lock_indicator(uint16_t keycode) { + bool indicator = keycode == KC_CAPS; + + if (get_caps_lock_light_tab()) { + indicator = keycode == KC_TAB || keycode == KC_CAPS; + } + + if (get_caps_lock_light_alphas()) { + return (KC_A <= keycode && keycode <= KC_Z) || indicator; + } else { + return indicator; + } +} + +bool is_transparent(uint16_t keycode) { return keycode == KC_TRNS; } +bool is_not_transparent(uint16_t keycode) { return keycode != KC_TRNS; } \ No newline at end of file diff --git a/keyboards/keychron/q1/rev_0100/keymaps/mkillewald/rgb_matrix_user.h b/keyboards/keychron/q1/rev_0100/keymaps/mkillewald/rgb_matrix_user.h new file mode 100644 index 000000000000..1fb79c0b2a14 --- /dev/null +++ b/keyboards/keychron/q1/rev_0100/keymaps/mkillewald/rgb_matrix_user.h @@ -0,0 +1,26 @@ +/* Copyright 2021 @ Mike Killewald + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +void rgb_matrix_init_user(void); + +void rgb_matrix_set_color_by_keycode(uint8_t led_min, uint8_t led_max, uint8_t layer, bool (*is_keycode)(uint16_t), uint8_t red, uint8_t green, uint8_t blue); + +bool is_caps_lock_indicator(uint16_t keycode); +bool is_transparent(uint16_t keycode); +bool is_not_transparent(uint16_t keycode); + diff --git a/keyboards/keychron/q1/rev_0100/keymaps/mkillewald/rules.mk b/keyboards/keychron/q1/rev_0100/keymaps/mkillewald/rules.mk new file mode 100644 index 000000000000..af720e37ee7b --- /dev/null +++ b/keyboards/keychron/q1/rev_0100/keymaps/mkillewald/rules.mk @@ -0,0 +1,6 @@ +VIA_ENABLE = yes +MOUSEKEY_ENABLE = no + +ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes) + SRC += rgb_matrix_user.c +endif \ No newline at end of file diff --git a/keyboards/keychron/q1/rev_0100/keymaps/via/keymap.c b/keyboards/keychron/q1/rev_0100/keymaps/via/keymap.c new file mode 100644 index 000000000000..e000dd7dd7bb --- /dev/null +++ b/keyboards/keychron/q1/rev_0100/keymaps/via/keymap.c @@ -0,0 +1,64 @@ +/* Copyright 2021 @ Keychron (https://www.keychron.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + + +enum layers{ + MAC_BASE, + MAC_FN, + WIN_BASE, + WIN_FN +}; + +#define KC_TASK LGUI(KC_TAB) +#define KC_FLXP LGUI(KC_E) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[MAC_BASE] = LAYOUT_ansi_82( + KC_ESC, KC_BRID, KC_BRIU, KC_F3, KC_F4, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + +[MAC_FN] = LAYOUT_ansi_82( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +[WIN_BASE] = LAYOUT_ansi_82( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + +[WIN_FN] = LAYOUT_ansi_82( + KC_TRNS, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) + +}; \ No newline at end of file diff --git a/keyboards/keychron/q1/rev_0100/keymaps/via/rules.mk b/keyboards/keychron/q1/rev_0100/keymaps/via/rules.mk new file mode 100644 index 000000000000..bee21da5283a --- /dev/null +++ b/keyboards/keychron/q1/rev_0100/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +MOUSEKEY_ENABLE = no \ No newline at end of file diff --git a/keyboards/keychron/q1/rev_0100/readme.md b/keyboards/keychron/q1/rev_0100/readme.md new file mode 100644 index 000000000000..5cf488f04867 --- /dev/null +++ b/keyboards/keychron/q1/rev_0100/readme.md @@ -0,0 +1 @@ +# The ANSI variant of the Keychron Q1 \ No newline at end of file diff --git a/keyboards/keychron/q1/rev_0100/rev_0100.c b/keyboards/keychron/q1/rev_0100/rev_0100.c new file mode 100644 index 000000000000..f42466952796 --- /dev/null +++ b/keyboards/keychron/q1/rev_0100/rev_0100.c @@ -0,0 +1,143 @@ +/* Copyright 2021 @ Keychron (https://www.keychron.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "quantum.h" + + +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { +/* Refer to IS31 manual for these locations + * driver + * | R location + * | | G location + * | | | B location + * | | | | */ + {0, C_1, A_1, B_1}, + {0, C_3, A_3, B_3}, + {0, C_4, A_4, B_4}, + {0, C_5, A_5, B_5}, + {0, C_6, A_6, B_6}, + {0, C_7, A_7, B_7}, + {0, C_8, A_8, B_8}, + {0, C_9, A_9, B_9}, + {0, C_10, A_10, B_10}, + {0, C_11, A_11, B_11}, + {0, C_12, A_12, B_12}, + {0, C_13, A_13, B_13}, + {0, C_14, A_14, B_14}, + {0, C_15, A_15, B_15}, + {0, C_16, A_16, B_16}, + + {0, F_1, D_1, E_1}, + {0, F_2, D_2, E_2}, + {0, F_3, D_3, E_3}, + {0, F_4, D_4, E_4}, + {0, F_5, D_5, E_5}, + {0, F_6, D_6, E_6}, + {0, F_7, D_7, E_7}, + {0, F_8, D_8, E_8}, + {0, F_9, D_9, E_9}, + {0, F_10, D_10, E_10}, + {0, F_11, D_11, E_11}, + {0, F_12, D_12, E_12}, + {0, F_13, D_13, E_13}, + {0, F_14, D_14, E_14}, + {0, F_16, D_16, E_16}, + + {0, I_1, G_1, H_1}, + {0, I_2, G_2, H_2}, + {0, I_3, G_3, H_3}, + {0, I_4, G_4, H_4}, + {0, I_5, G_5, H_5}, + {0, I_6, G_6, H_6}, + {0, I_7, G_7, H_7}, + {0, I_8, G_8, H_8}, + {0, I_9, G_9, H_9}, + {0, I_10, G_10, H_10}, + {0, I_11, G_11, H_11}, + {0, I_12, G_12, H_12}, + {0, I_13, G_13, H_13}, + {0, I_14, G_14, H_14}, + {0, I_16, G_16, H_16}, + + {0, L_1, J_1, K_1}, + {0, L_2, J_2, K_2}, + {0, L_3, J_3, K_3}, + {0, L_4, J_4, K_4}, + {0, L_5, J_5, K_5}, + {0, L_6, J_6, K_6}, + {0, L_7, J_7, K_7}, + {0, L_8, J_8, K_8}, + {0, L_9, J_9, K_9}, + {0, L_10, J_10, K_10}, + {0, L_11, J_11, K_11}, + {0, L_12, J_12, K_12}, + {0, L_14, J_14, K_14}, + {0, L_16, J_16, K_16}, + + {1, C_1, A_1, B_1}, + {1, C_3, A_3, B_3}, + {1, C_4, A_4, B_4}, + {1, C_5, A_5, B_5}, + {1, C_6, A_6, B_6}, + {1, C_7, A_7, B_7}, + {1, C_8, A_8, B_8}, + {1, C_9, A_9, B_9}, + {1, C_10, A_10, B_10}, + {1, C_11, A_11, B_11}, + {1, C_12, A_12, B_12}, + {1, C_14, A_14, B_14}, + {1, C_15, A_15, B_15}, + + {1, F_1, D_1, E_1}, + {1, F_2, D_2, E_2}, + {1, F_3, D_3, E_3}, + {1, F_7, D_7, E_7}, + {1, F_11, D_11, E_11}, + {1, F_12, D_12, E_12}, + {1, F_13, D_13, E_13}, + {1, F_14, D_14, E_14}, + {1, F_15, D_15, E_15}, + {1, F_16, D_16, E_16} + +}; + +led_config_t g_led_config = { + { + { 0, NO_LED, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14 }, + { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 }, + { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44 }, + { 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 71, 57, 58 }, + { 59, NO_LED, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 80, 70, 13 }, + { 72, 73, 74, NO_LED, NO_LED, NO_LED, 75, NO_LED, NO_LED, NO_LED, 76, 77, 78, 79, 81 } + }, + { + {0,0}, {30, 0}, {45, 0}, {60, 0}, {75, 0}, {90, 0}, {105, 0}, {120, 0}, {135, 0}, {150, 0}, {165, 0}, {180, 0}, {195, 0}, {210, 0}, {224, 0}, + {0,13}, {15,13}, {30,13}, {45,13}, {60,13}, {75,13}, {90,13}, {105,13}, {120,13}, {135,13}, {150,13}, {165,13}, {180,13}, {195,13}, {224,13}, + {0,26}, {15,26}, {30,26}, {45,26}, {60,26}, {75,26}, {90,26}, {105,26}, {120,26}, {135,26}, {150,26}, {165,26}, {180,26}, {195,26}, {224,26}, + {0,39}, {15,39}, {30,39}, {45,39}, {60,39}, {75,39}, {90,39}, {105,39}, {120,39}, {135,39}, {150,39}, {165,39}, {195,39}, {224,39}, + {0,52}, {30,52}, {45,52}, {60,52}, {75,52}, {90,52}, {105,52}, {120,52}, {135,52}, {150,52}, {165,52}, {195,52}, {210,52}, + {0,64}, {15,64}, {30,64}, {90,64}, {150,64}, {165,64}, {180,64}, {195,64}, {210,64}, {224,64}, + }, + { + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 + + } +}; diff --git a/keyboards/keychron/q1/rev_0100/rev_0100.h b/keyboards/keychron/q1/rev_0100/rev_0100.h new file mode 100644 index 000000000000..2a1edac646fe --- /dev/null +++ b/keyboards/keychron/q1/rev_0100/rev_0100.h @@ -0,0 +1,37 @@ +/* Copyright 2021 @ Keychron (https://www.keychron.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define xxx KC_NO + +#define LAYOUT_ansi_82( \ + K00, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K4E, 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, K3D, K3E, \ + K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4D, K3C, \ + K50, K51, K52, K56, K5A, K5B, K5C, K5D, K4C, K5E \ +) { \ + { K00, xxx, 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, xxx, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E }, \ + { K50, K51, K52, xxx, xxx, xxx, K56, xxx, xxx, xxx, K5A, K5B, K5C, K5D, K5E } \ +} diff --git a/keyboards/keychron/q1/rev_0100/rules.mk b/keyboards/keychron/q1/rev_0100/rules.mk new file mode 100644 index 000000000000..c82a14aab3d6 --- /dev/null +++ b/keyboards/keychron/q1/rev_0100/rules.mk @@ -0,0 +1,22 @@ +# 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 +# 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 +DIP_SWITCH_ENABLE = yes +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = IS31FL3733 diff --git a/keyboards/keychron/q1/rev_0102/config.h b/keyboards/keychron/q1/rev_0102/config.h new file mode 100644 index 000000000000..a537ab4e0d56 --- /dev/null +++ b/keyboards/keychron/q1/rev_0102/config.h @@ -0,0 +1,31 @@ +/* Copyright 2021 @ Keychron (https://www.keychron.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + + +/* USB Device descriptor parameter */ +#define PRODUCT_ID 0x0102 +#define DEVICE_VER 0x0100 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { D3, D2, B3, B2, B1, B0 } +#define MATRIX_COL_PINS { D5, D4, D6, D7, B4, B5, B6, C6, C7, F7, F6, F5, F4, F1, F0 } + +/* RGB Matrix Configuration */ +#define DRIVER_1_LED_TOTAL 59 +#define DRIVER_2_LED_TOTAL 24 +#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) \ No newline at end of file diff --git a/keyboards/keychron/q1/rev_0102/info.json b/keyboards/keychron/q1/rev_0102/info.json new file mode 100644 index 000000000000..a71e0b24f046 --- /dev/null +++ b/keyboards/keychron/q1/rev_0102/info.json @@ -0,0 +1,99 @@ +{ + "keyboard_name": "Keychron Q1", + "url": "https://github.com/Keychron", + "maintainer": "lalalademaxiya1", + "layouts": { + "LAYOUT_iso_83": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":1.25, "y":0}, + {"label":"F2", "x":2.25, "y":0}, + {"label":"F3", "x":3.25, "y":0}, + {"label":"F4", "x":4.25, "y":0}, + {"label":"F5", "x":5.5, "y":0}, + {"label":"F6", "x":6.5, "y":0}, + {"label":"F7", "x":7.5, "y":0}, + {"label":"F8", "x":8.5, "y":0}, + {"label":"F9", "x":9.75, "y":0}, + {"label":"F10", "x":10.75, "y":0}, + {"label":"F11", "x":11.75, "y":0}, + {"label":"F12", "x":12.75, "y":0}, + {"label":"Delete", "x":14, "y":0}, + {"label":"Insert", "x":15.25, "y":0}, + + {"label":"~", "x":0, "y":1.25}, + {"label":"!", "x":1, "y":1.25}, + {"label":"@", "x":2, "y":1.25}, + {"label":"#", "x":3, "y":1.25}, + {"label":"$", "x":4, "y":1.25}, + {"label":"%", "x":5, "y":1.25}, + {"label":"^", "x":6, "y":1.25}, + {"label":"&", "x":7, "y":1.25}, + {"label":"*", "x":8, "y":1.25}, + {"label":"(", "x":9, "y":1.25}, + {"label":")", "x":10, "y":1.25}, + {"label":"_", "x":11, "y":1.25}, + {"label":"+", "x":12, "y":1.25}, + {"label":"Backspace", "x":13, "y":1.25, "w":2}, + {"label":"Page Up", "x":15.25, "y":1.25}, + + {"label":"Tab", "x":0, "y":2.25, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.25}, + {"label":"W", "x":2.5, "y":2.25}, + {"label":"E", "x":3.5, "y":2.25}, + {"label":"R", "x":4.5, "y":2.25}, + {"label":"T", "x":5.5, "y":2.25}, + {"label":"Y", "x":6.5, "y":2.25}, + {"label":"U", "x":7.5, "y":2.25}, + {"label":"I", "x":8.5, "y":2.25}, + {"label":"O", "x":9.5, "y":2.25}, + {"label":"P", "x":10.5, "y":2.25}, + {"label":"{", "x":11.5, "y":2.25}, + {"label":"}", "x":12.5, "y":2.25}, + {"label":"Page Down", "x":15.25, "y":2.25}, + + {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, + {"label":"A", "x":1.75, "y":3.25}, + {"label":"S", "x":2.75, "y":3.25}, + {"label":"D", "x":3.75, "y":3.25}, + {"label":"F", "x":4.75, "y":3.25}, + {"label":"G", "x":5.75, "y":3.25}, + {"label":"H", "x":6.75, "y":3.25}, + {"label":"J", "x":7.75, "y":3.25}, + {"label":"K", "x":8.75, "y":3.25}, + {"label":"L", "x":9.75, "y":3.25}, + {"label":":", "x":10.75, "y":3.25}, + {"label":"\"", "x":11.75, "y":3.25}, + {"label":"#~", "x":12.75, "y":3.25}, + {"label":"Enter", "x":13.75, "y":2.25, "w":1.25, "h":2}, + {"label":"Home", "x":15.25, "y":3.25}, + + {"label":"Shift", "x":0, "y":4.25, "w":1.25}, + {"label":"\\|", "x":1.25, "y":4.25}, + {"label":"Z", "x":2.25, "y":4.25}, + {"label":"X", "x":3.25, "y":4.25}, + {"label":"C", "x":4.25, "y":4.25}, + {"label":"V", "x":5.25, "y":4.25}, + {"label":"B", "x":6.25, "y":4.25}, + {"label":"N", "x":7.25, "y":4.25}, + {"label":"M", "x":8.25, "y":4.25}, + {"label":"<", "x":9.25, "y":4.25}, + {"label":">", "x":10.25, "y":4.25}, + {"label":"?", "x":11.25, "y":4.25}, + {"label":"Shift", "x":12.25, "y":4.25, "w":1.75}, + {"label":"\u2191", "x":14.25, "y":4.5}, + + {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, + {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, + {"label":"Space", "x":3.75, "y":5.25, "w":6.25}, + {"label":"Alt", "x":10, "y":5.25}, + {"label":"Fn", "x":11, "y":5.25}, + {"label":"Ctrl", "x":12, "y":5.25}, + {"label":"\u2190", "x":13.25, "y":5.5}, + {"label":"\u2193", "x":14.25, "y":5.5}, + {"label":"\u2192", "x":15.25, "y":5.5} + ] + } + } +} diff --git a/keyboards/keychron/q1/rev_0102/keymaps/default/keymap.c b/keyboards/keychron/q1/rev_0102/keymaps/default/keymap.c new file mode 100644 index 000000000000..b4a7d6442754 --- /dev/null +++ b/keyboards/keychron/q1/rev_0102/keymaps/default/keymap.c @@ -0,0 +1,64 @@ +/* Copyright 2021 @ Keychron (https://www.keychron.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + + +enum layers{ + MAC_BASE, + MAC_FN, + WIN_BASE, + WIN_FN +}; + +#define KC_TASK LGUI(KC_TAB) +#define KC_FLXP LGUI(KC_E) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[MAC_BASE] = LAYOUT_iso_83( + KC_ESC, KC_BRID, KC_BRIU, KC_F3, KC_F4, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_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_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + +[MAC_FN] = LAYOUT_iso_83( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +[WIN_BASE] = LAYOUT_iso_83( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_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_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + +[WIN_FN] = LAYOUT_iso_83( + KC_TRNS, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) + +}; \ No newline at end of file diff --git a/keyboards/keychron/q1/rev_0102/keymaps/mkillewald_iso/config.h b/keyboards/keychron/q1/rev_0102/keymaps/mkillewald_iso/config.h new file mode 100644 index 000000000000..bc9fe405c35c --- /dev/null +++ b/keyboards/keychron/q1/rev_0102/keymaps/mkillewald_iso/config.h @@ -0,0 +1,23 @@ +/* Copyright 2021 @ Mike Killewald + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#ifdef RGB_MATRIX_ENABLE +# define RGB_DISABLE_WHEN_USB_SUSPENDED +# define CAPS_LOCK_INDICATOR_COLOR RGB_RED +# define FN_LAYER_COLOR RGB_ORANGE +#endif \ No newline at end of file diff --git a/keyboards/keychron/q1/rev_0102/keymaps/mkillewald_iso/keymap.c b/keyboards/keychron/q1/rev_0102/keymaps/mkillewald_iso/keymap.c new file mode 100644 index 000000000000..c62d065ef745 --- /dev/null +++ b/keyboards/keychron/q1/rev_0102/keymaps/mkillewald_iso/keymap.c @@ -0,0 +1,175 @@ +/* Copyright 2021 @ Mike Killewald + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +#include "keymap_user.h" +#ifdef RGB_MATRIX_ENABLE +# include "rgb_matrix_user.h" +#endif + +// clang-format off + +typedef union { + uint32_t raw; + struct { + bool caps_lock_light_tab :1; + bool caps_lock_light_alphas :1; + bool fn_layer_transparent_keys_off :1; + bool fn_layer_color_enable :1; + }; +} user_config_t; + +user_config_t user_config; + +enum custom_keycodes { +#ifdef VIA_ENABLE + KC_MISSION_CONTROL = USER00, +#else + KC_MISSION_CONTROL = SAFE_RANGE, +#endif + KC_LAUNCHPAD, + KC_LIGHT_TAB_TOGGLE, + KC_LIGHT_ALPHAS_TOGGLE, + KC_FN_LAYER_TRANSPARENT_KEYS_TOGGLE, + KC_FN_LAYER_COLOR_TOGGLE +}; + +#define KC_MCTL KC_MISSION_CONTROL +#define KC_LPAD KC_LAUNCHPAD +#define KC_LTTOG KC_LIGHT_TAB_TOGGLE +#define KC_LATOG KC_LIGHT_ALPHAS_TOGGLE +#define KC_TKTOG KC_FN_LAYER_TRANSPARENT_KEYS_TOGGLE +#define KC_FCTOG KC_FN_LAYER_COLOR_TOGGLE +#define KC_TASK LGUI(KC_TAB) +#define KC_FLXP LGUI(KC_E) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[MAC_BASE] = LAYOUT_iso_83( + KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_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_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + +[MAC_FN] = LAYOUT_iso_83( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_LTTOG, KC_LATOG, KC_TKTOG, KC_FCTOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +[WIN_BASE] = LAYOUT_iso_83( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_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_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + +[WIN_FN] = LAYOUT_iso_83( + KC_TRNS, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_LTTOG, KC_LATOG, KC_TKTOG, KC_FCTOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) + +}; + +// clang-format on + +void matrix_init_user(void) { +#ifdef RGB_MATRIX_ENABLE + rgb_matrix_init_user(); +#endif +} + +void keyboard_post_init_user(void) { + user_config.raw = eeconfig_read_user(); +} + +void eeconfig_init_user(void) { + user_config.raw = 0; + user_config.caps_lock_light_tab = false; + user_config.caps_lock_light_alphas = false; + user_config.fn_layer_transparent_keys_off = true; + user_config.fn_layer_color_enable = false; + eeconfig_update_user(user_config.raw); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_MISSION_CONTROL: + if (record->event.pressed) { + host_consumer_send(0x29F); + } else { + host_consumer_send(0); + } + return false; // Skip all further processing of this key + case KC_LAUNCHPAD: + if (record->event.pressed) { + host_consumer_send(0x2A0); + } else { + host_consumer_send(0); + } + return false; // Skip all further processing of this key + case KC_LIGHT_TAB_TOGGLE: + if (record->event.pressed) { + user_config.caps_lock_light_tab ^= 1; // bitwise xor to toggle status bit + eeconfig_update_user(user_config.raw); + } + return false; // Skip all further processing of this key + case KC_LIGHT_ALPHAS_TOGGLE: + if (record->event.pressed) { + user_config.caps_lock_light_alphas ^= 1; + eeconfig_update_user(user_config.raw); + } + return false; // Skip all further processing of this key + case KC_FN_LAYER_TRANSPARENT_KEYS_TOGGLE: + if (record->event.pressed) { + user_config.fn_layer_transparent_keys_off ^= 1; + eeconfig_update_user(user_config.raw); + } + return false; // Skip all further processing of this key + case KC_FN_LAYER_COLOR_TOGGLE: + if (record->event.pressed) { + user_config.fn_layer_color_enable ^= 1; + eeconfig_update_user(user_config.raw); + } + return false; // Skip all further processing of this key + default: + return true; // Process all other keycodes normally + } +} + +bool get_caps_lock_light_tab(void) { + return user_config.caps_lock_light_tab; +} + +bool get_caps_lock_light_alphas(void) { + return user_config.caps_lock_light_alphas; +} + +bool get_fn_layer_transparent_keys_off(void) { + return user_config.fn_layer_transparent_keys_off; +} + +bool get_fn_layer_color_enable(void) { + return user_config.fn_layer_color_enable; +} \ No newline at end of file diff --git a/keyboards/keychron/q1/rev_0102/keymaps/mkillewald_iso/keymap_user.h b/keyboards/keychron/q1/rev_0102/keymaps/mkillewald_iso/keymap_user.h new file mode 100644 index 000000000000..87b1baf47f23 --- /dev/null +++ b/keyboards/keychron/q1/rev_0102/keymaps/mkillewald_iso/keymap_user.h @@ -0,0 +1,33 @@ +/* Copyright 2021 @ Mike Killewald + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +// clang-format off + +enum layers { + MAC_BASE, + MAC_FN, + WIN_BASE, + WIN_FN +}; + +// clang-format on + +bool get_caps_lock_light_tab(void); +bool get_caps_lock_light_alphas(void); +bool get_fn_layer_transparent_keys_off(void); +bool get_fn_layer_color_enable(void); \ No newline at end of file diff --git a/keyboards/keychron/q1/rev_0102/keymaps/mkillewald_iso/readme.md b/keyboards/keychron/q1/rev_0102/keymaps/mkillewald_iso/readme.md new file mode 100644 index 000000000000..a6da9b346058 --- /dev/null +++ b/keyboards/keychron/q1/rev_0102/keymaps/mkillewald_iso/readme.md @@ -0,0 +1,54 @@ +## mkillewald's Keychron Q1 keymap (ISO rev_0102) v1.0.4 + +This keymap builds on the keymap by Grayson Carr (gtg465x) but adds a couple options. + +## Features: +- On macOS, F3 opens Mission Control and F4 opens Launchpad without needing to configure shortcuts in System Preferences +- RGB lighting turns off when the computer sleeps +- Caps Lock RGB indicator + - the Caps Lock key will light when Caps Lock is enabled with the following options: + - #define CAPS_LOCK_INDICATOR_COLOR [color] in config.h to set the backlight color used for the indicator when Caps Lock is enabled (default: red) + - Fn+Z will toggle lighting the TAB key when Caps Lock is enabled. This is useful with non backlit keycaps/legends. (default: off) + - Fn+X will toggle lighting all the alpha keys when Caps Lock is enabled. (default: off) + +- Dynamic Fn layer RGB indicator + - When the Fn key is held down, any keys defined on the Fn layer in this firmware or in VIA will be highlighted with the following options: + - #define FN_LAYER_COLOR [color] in config.h to set a static color for defined keys (default: orange) + - Fn+C will toggle turning off RGB for keys with no definition (default: RGB off) + - Fn+V will toggle lighting the defined Fn layer keys with the static color set with FN_LAYER_COLOR (default: static color off) + +- All custom keycodes can be moved to different keys in VIA by using the ANY key with the following keycodes: + - USER00 (default: F3) macOS Mission Control + - USER01 (default: F4) macOS Launchpad + - USER02 (default: Fn+Z) Caps Lock light Tab toggle + - USER03 (default: Fn+X) Caps Lock light alphas toggle + - USER04 (default: Fn+C) Fn layer non-defined keys RGB toggle + - USER05 (default: Fn+V) Fn layer defined keys static color toggle + +RGB must be toggled on for all indicators to function. If you do not want an RGB mode active but still want the indicators, toggle RGB on and turn the brightness all the way off. The indicators will remain at full brightness. + +Please make sure to save any customizations you have made in VIA to a .json file before flashing the firmware. Sometimes it has been necessary to re-apply those changes in VIA after flashing the firmware. If that is the case, you will most likely need to manually add the USER00 through USER05 custom keycodes after loading your customizations from the saved .json file. Then re-save a new .json file which will have your previous customizations and the custom keycodes for future use as needed. + +#### USE AT YOUR OWN RISK + +## Changelog: + +v1.0.4 October 9, 2021 +- Caps Lock and Fn layer toggles are now stored in eeprom so settings will remain when Q1 is unplugged + +v1.0.3 October 8, 2021 +- now using keycode toggles instead of preprocessor directives to set the various Caps Lock and Fn Layer RGB lighting options. This allows for setting the options from user space without having to recompile. + +v1.0.2 October 7, 2021 +- adapted Grayson Carr's (gtg465x) Caps Lock alphas and dynamic Fn layer RGB routines +- added CAPS_LOCK_INDICATOR_LIGHT_TAB config option to enable/disable lighting Tab with Caps Lock indicator +- added FN_LAYER_COLOR config option to set FN layer static color + +v1.0.1 October 7, 2021 +- Mission Control and Launchpad custom keycodes are now defined using the VIA user keycodes range so thay can be labeled properly in VIA (adopted change from gtg465x) + +v1.0.0 September 30, 2021 +- Initial release built upon keymap by Grayson Carr (gtg465x) +- defined Mission Control (F3) and Launchpad (F4) keycodes for macOs +- RGB backlight turns off when computer sleeps +- added Caps Lock indicator lighting both the Caps Lock and Tab LEDs for better effect on non-backlit keycaps diff --git a/keyboards/keychron/q1/rev_0102/keymaps/mkillewald_iso/rgb_matrix_user.c b/keyboards/keychron/q1/rev_0102/keymaps/mkillewald_iso/rgb_matrix_user.c new file mode 100644 index 000000000000..f06039af064d --- /dev/null +++ b/keyboards/keychron/q1/rev_0102/keymaps/mkillewald_iso/rgb_matrix_user.c @@ -0,0 +1,83 @@ +/* Copyright 2021 @ Mike Killewald + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +#include "rgb_matrix_user.h" +#include "keymap_user.h" + +keypos_t led_index_key_position[DRIVER_LED_TOTAL]; + +void rgb_matrix_init_user(void) { + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + for (uint8_t col = 0; col < MATRIX_COLS; col++) { + uint8_t led_index = g_led_config.matrix_co[row][col]; + if (led_index != NO_LED) { + led_index_key_position[led_index] = (keypos_t){.row = row, .col = col}; + } + } + } +} + +void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { + uint8_t current_layer = get_highest_layer(layer_state); + switch (current_layer) { + case MAC_BASE: + case WIN_BASE: +#ifdef CAPS_LOCK_INDICATOR_COLOR + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_caps_lock_indicator, CAPS_LOCK_INDICATOR_COLOR); + } +#endif + break; + case MAC_FN: + case WIN_FN: +#ifdef FN_LAYER_COLOR + if (get_fn_layer_color_enable()) { + rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_not_transparent, FN_LAYER_COLOR); + } +#endif + if (get_fn_layer_transparent_keys_off()) { + rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_transparent, RGB_OFF); + } + break; + } +} + +void rgb_matrix_set_color_by_keycode(uint8_t led_min, uint8_t led_max, uint8_t layer, bool (*is_keycode)(uint16_t), uint8_t red, uint8_t green, uint8_t blue) { + for (uint8_t i = led_min; i < led_max; i++) { + uint16_t keycode = keymap_key_to_keycode(layer, led_index_key_position[i]); + if ((*is_keycode)(keycode)) { + rgb_matrix_set_color(i, red, green, blue); + } + } +} + +bool is_caps_lock_indicator(uint16_t keycode) { + bool indicator = keycode == KC_CAPS; + + if (get_caps_lock_light_tab()) { + indicator = keycode == KC_TAB || keycode == KC_CAPS; + } + + if (get_caps_lock_light_alphas()) { + return (KC_A <= keycode && keycode <= KC_Z) || indicator; + } else { + return indicator; + } +} + +bool is_transparent(uint16_t keycode) { return keycode == KC_TRNS; } +bool is_not_transparent(uint16_t keycode) { return keycode != KC_TRNS; } \ No newline at end of file diff --git a/keyboards/keychron/q1/rev_0102/keymaps/mkillewald_iso/rgb_matrix_user.h b/keyboards/keychron/q1/rev_0102/keymaps/mkillewald_iso/rgb_matrix_user.h new file mode 100644 index 000000000000..1fb79c0b2a14 --- /dev/null +++ b/keyboards/keychron/q1/rev_0102/keymaps/mkillewald_iso/rgb_matrix_user.h @@ -0,0 +1,26 @@ +/* Copyright 2021 @ Mike Killewald + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +void rgb_matrix_init_user(void); + +void rgb_matrix_set_color_by_keycode(uint8_t led_min, uint8_t led_max, uint8_t layer, bool (*is_keycode)(uint16_t), uint8_t red, uint8_t green, uint8_t blue); + +bool is_caps_lock_indicator(uint16_t keycode); +bool is_transparent(uint16_t keycode); +bool is_not_transparent(uint16_t keycode); + diff --git a/keyboards/keychron/q1/rev_0102/keymaps/mkillewald_iso/rules.mk b/keyboards/keychron/q1/rev_0102/keymaps/mkillewald_iso/rules.mk new file mode 100644 index 000000000000..af720e37ee7b --- /dev/null +++ b/keyboards/keychron/q1/rev_0102/keymaps/mkillewald_iso/rules.mk @@ -0,0 +1,6 @@ +VIA_ENABLE = yes +MOUSEKEY_ENABLE = no + +ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes) + SRC += rgb_matrix_user.c +endif \ No newline at end of file diff --git a/keyboards/keychron/q1/rev_0102/keymaps/via/keymap.c b/keyboards/keychron/q1/rev_0102/keymaps/via/keymap.c new file mode 100644 index 000000000000..b4a7d6442754 --- /dev/null +++ b/keyboards/keychron/q1/rev_0102/keymaps/via/keymap.c @@ -0,0 +1,64 @@ +/* Copyright 2021 @ Keychron (https://www.keychron.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + + +enum layers{ + MAC_BASE, + MAC_FN, + WIN_BASE, + WIN_FN +}; + +#define KC_TASK LGUI(KC_TAB) +#define KC_FLXP LGUI(KC_E) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[MAC_BASE] = LAYOUT_iso_83( + KC_ESC, KC_BRID, KC_BRIU, KC_F3, KC_F4, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_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_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + +[MAC_FN] = LAYOUT_iso_83( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +[WIN_BASE] = LAYOUT_iso_83( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_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_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + +[WIN_FN] = LAYOUT_iso_83( + KC_TRNS, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) + +}; \ No newline at end of file diff --git a/keyboards/keychron/q1/rev_0102/keymaps/via/rules.mk b/keyboards/keychron/q1/rev_0102/keymaps/via/rules.mk new file mode 100644 index 000000000000..bee21da5283a --- /dev/null +++ b/keyboards/keychron/q1/rev_0102/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +MOUSEKEY_ENABLE = no \ No newline at end of file diff --git a/keyboards/keychron/q1/rev_0102/readme.md b/keyboards/keychron/q1/rev_0102/readme.md new file mode 100644 index 000000000000..777ce0477349 --- /dev/null +++ b/keyboards/keychron/q1/rev_0102/readme.md @@ -0,0 +1 @@ +# The ISO variant of the Keychron Q1 \ No newline at end of file diff --git a/keyboards/keychron/q1/rev_0102/rev_0102.c b/keyboards/keychron/q1/rev_0102/rev_0102.c new file mode 100644 index 000000000000..e8a2c85ae366 --- /dev/null +++ b/keyboards/keychron/q1/rev_0102/rev_0102.c @@ -0,0 +1,143 @@ +/* Copyright 2021 @ Keychron (https://www.keychron.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "quantum.h" + + +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { +/* Refer to IS31 manual for these locations + * driver + * | R location + * | | G location + * | | | B location + * | | | | */ + {0, C_1, A_1, B_1}, + {0, C_3, A_3, B_3}, + {0, C_4, A_4, B_4}, + {0, C_5, A_5, B_5}, + {0, C_6, A_6, B_6}, + {0, C_7, A_7, B_7}, + {0, C_8, A_8, B_8}, + {0, C_9, A_9, B_9}, + {0, C_10, A_10, B_10}, + {0, C_11, A_11, B_11}, + {0, C_12, A_12, B_12}, + {0, C_13, A_13, B_13}, + {0, C_14, A_14, B_14}, + {0, C_15, A_15, B_15}, + {0, C_16, A_16, B_16}, + + {0, F_1, D_1, E_1}, + {0, F_2, D_2, E_2}, + {0, F_3, D_3, E_3}, + {0, F_4, D_4, E_4}, + {0, F_5, D_5, E_5}, + {0, F_6, D_6, E_6}, + {0, F_7, D_7, E_7}, + {0, F_8, D_8, E_8}, + {0, F_9, D_9, E_9}, + {0, F_10, D_10, E_10}, + {0, F_11, D_11, E_11}, + {0, F_12, D_12, E_12}, + {0, F_13, D_13, E_13}, + {0, F_14, D_14, E_14}, + {0, F_16, D_16, E_16}, + + {0, I_1, G_1, H_1}, + {0, I_2, G_2, H_2}, + {0, I_3, G_3, H_3}, + {0, I_4, G_4, H_4}, + {0, I_5, G_5, H_5}, + {0, I_6, G_6, H_6}, + {0, I_7, G_7, H_7}, + {0, I_8, G_8, H_8}, + {0, I_9, G_9, H_9}, + {0, I_10, G_10, H_10}, + {0, I_11, G_11, H_11}, + {0, I_12, G_12, H_12}, + {0, I_13, G_13, H_13}, + {0, I_16, G_16, H_16}, + + {0, L_1, J_1, K_1}, + {0, L_2, J_2, K_2}, + {0, L_3, J_3, K_3}, + {0, L_4, J_4, K_4}, + {0, L_5, J_5, K_5}, + {0, L_6, J_6, K_6}, + {0, L_7, J_7, K_7}, + {0, L_8, J_8, K_8}, + {0, L_9, J_9, K_9}, + {0, L_10, J_10, K_10}, + {0, L_11, J_11, K_11}, + {0, L_12, J_12, K_12}, + {0, L_14, J_14, K_14}, + {0, I_14, G_14, H_14}, + {0, L_16, J_16, K_16}, + + {1, C_1, A_1, B_1}, + {1, C_2, A_2, B_2}, + {1, C_3, A_3, B_3}, + {1, C_4, A_4, B_4}, + {1, C_5, A_5, B_5}, + {1, C_6, A_6, B_6}, + {1, C_7, A_7, B_7}, + {1, C_8, A_8, B_8}, + {1, C_9, A_9, B_9}, + {1, C_10, A_10, B_10}, + {1, C_11, A_11, B_11}, + {1, C_12, A_12, B_12}, + {1, C_14, A_14, B_14}, + {1, C_15, A_15, B_15}, + + {1, F_1, D_1, E_1}, + {1, F_2, D_2, E_2}, + {1, F_3, D_3, E_3}, + {1, F_7, D_7, E_7}, + {1, F_11, D_11, E_11}, + {1, F_12, D_12, E_12}, + {1, F_13, D_13, E_13}, + {1, F_14, D_14, E_14}, + {1, F_15, D_15, E_15}, + {1, F_16, D_16, E_16} +}; + +led_config_t g_led_config = { + { + { 0, NO_LED, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14 }, + { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 }, + { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 57, 43 }, + { 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 72, 56, 58 }, + { 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 81, 71, 13 }, + { 73, 74, 75, NO_LED, NO_LED, NO_LED, 76, NO_LED, NO_LED, NO_LED, 77, 78, 79, 80, 82 } + }, + { + {0,0}, {30, 0}, {45, 0}, {60, 0}, {75, 0}, {90, 0}, {105, 0}, {120, 0}, {135, 0}, {150, 0}, {165, 0}, {180, 0}, {195, 0}, {210, 0}, {224, 0}, + {0,13}, {15,13}, {30,13}, {45,13}, {60,13}, {75,13}, {90,13}, {105,13}, {120,13}, {135,13}, {150,13}, {165,13}, {180,13}, {195,13}, {224,13}, + {0,26}, {15,26}, {30,26}, {45,26}, {60,26}, {75,26}, {90,26}, {105,26}, {120,26}, {135,26}, {150,26}, {165,26}, {180,26}, {224,26}, + {0,39}, {15,39}, {30,39}, {45,39}, {60,39}, {75,39}, {90,39}, {105,39}, {120,39}, {135,39}, {150,39}, {165,39}, {180,39}, {195,26}, {224,39}, + {0,52}, {15,52}, {30,52}, {45,52}, {60,52}, {75,52}, {90,52}, {105,52}, {120,52}, {135,52}, {150,52}, {165,52}, {180,52}, {210,52}, + {0,64}, {15,64}, {30,64}, {90,64}, {150,64}, {165,64}, {180,64}, {195,64}, {210,64}, {224,64}, + }, + { + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 + + } +}; diff --git a/keyboards/keychron/q1/rev_0102/rev_0102.h b/keyboards/keychron/q1/rev_0102/rev_0102.h new file mode 100644 index 000000000000..a13ffa56c0bc --- /dev/null +++ b/keyboards/keychron/q1/rev_0102/rev_0102.h @@ -0,0 +1,37 @@ +/* Copyright 2021 @ Keychron (https://www.keychron.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define xxx KC_NO + +#define LAYOUT_iso_83( \ + K00, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K4E, 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, K2E, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K2D, K3E, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4D, K3C, \ + K50, K51, K52, K56, K5A, K5B, K5C, K5D, K4C, K5E \ +) { \ + { K00, xxx, 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 }, \ + { K50, K51, K52, xxx, xxx, xxx, K56, xxx, xxx, xxx, K5A, K5B, K5C, K5D, K5E } \ +} diff --git a/keyboards/keychron/q1/rev_0102/rules.mk b/keyboards/keychron/q1/rev_0102/rules.mk new file mode 100644 index 000000000000..d515378fc984 --- /dev/null +++ b/keyboards/keychron/q1/rev_0102/rules.mk @@ -0,0 +1,22 @@ +# 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 +# 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 +DIP_SWITCH_ENABLE = yes +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = IS31FL3733 \ No newline at end of file diff --git a/keyboards/keyhive/maypad/config.h b/keyboards/keyhive/maypad/config.h index 3f671243a3b2..bb3ef2d64642 100644 --- a/keyboards/keyhive/maypad/config.h +++ b/keyboards/keyhive/maypad/config.h @@ -120,59 +120,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -191,26 +138,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/keyhive/maypad/info.json b/keyboards/keyhive/maypad/info.json index df059775b3bc..91a3eeeb09a8 100644 --- a/keyboards/keyhive/maypad/info.json +++ b/keyboards/keyhive/maypad/info.json @@ -2,8 +2,6 @@ "keyboard_name": "maypad", "url": "https://keyhive.xyz/shop/may-pad", "maintainer": "codybender", - "width": 4, - "height": 5, "layouts": { "LAYOUT_numpad_5x4": { "layout": [{"label":"Num Lock", "x":0, "y":0}, {"label":"/", "x":1, "y":0}, {"label":"*", "x":2, "y":0}, {"label":"-", "x":3, "y":0}, {"label":"7", "x":0, "y":1}, {"label":"8", "x":1, "y":1}, {"label":"9", "x":2, "y":1}, {"label":"4", "x":0, "y":2}, {"label":"5", "x":1, "y":2}, {"label":"6", "x":2, "y":2}, {"label":"+", "x":3, "y":1, "h":2}, {"label":"1", "x":0, "y":3}, {"label":"2", "x":1, "y":3}, {"label":"3", "x":2, "y":3}, {"label":"0", "x":0, "y":4, "w":2}, {"label":".", "x":2, "y":4}, {"label":"Enter", "x":3, "y":3, "h":2}] diff --git a/keyboards/keyhive/maypad/keymaps/default/keymap.c b/keyboards/keyhive/maypad/keymaps/default/keymap.c index 466a13f41b6e..f4689c012757 100644 --- a/keyboards/keyhive/maypad/keymaps/default/keymap.c +++ b/keyboards/keyhive/maypad/keymaps/default/keymap.c @@ -25,16 +25,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_P0, KC_PDOT, KC_PENT ), }; - - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/keyhive/maypad/maypad.c b/keyboards/keyhive/maypad/maypad.c index 825d8c4a5d5d..426575b3d26f 100644 --- a/keyboards/keyhive/maypad/maypad.c +++ b/keyboards/keyhive/maypad/maypad.c @@ -14,38 +14,3 @@ * along with this program. If not, see . */ #include "maypad.h" - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -/* - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - -*/ diff --git a/keyboards/keyhive/maypad/rules.mk b/keyboards/keyhive/maypad/rules.mk index fe60f513e66d..bb440a854f7a 100644 --- a/keyboards/keyhive/maypad/rules.mk +++ b/keyboards/keyhive/maypad/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = ortho_5x4 numpad_5x4 diff --git a/keyboards/keyprez/bison/bison.c b/keyboards/keyprez/bison/bison.c new file mode 100644 index 000000000000..66b86dfc901c --- /dev/null +++ b/keyboards/keyprez/bison/bison.c @@ -0,0 +1,35 @@ +/* Copyright 2021 csandven + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "bison.h" + +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + if (index == 0) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else if (index == 1) { + if (clockwise) { + tap_code(KC_PGDOWN); + } else { + tap_code(KC_PGUP); + } + } + return true; +} diff --git a/keyboards/keyprez/bison/bison.h b/keyboards/keyprez/bison/bison.h new file mode 100644 index 000000000000..74b7bae985ed --- /dev/null +++ b/keyboards/keyprez/bison/bison.h @@ -0,0 +1,99 @@ +/* Copyright 2021 csandven + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + L00, L01, L02, L03, L04, L05, L06, L07, R00, R01, R02, R03, R04, R05, R06, R07, \ + L10, L11, L12, L13, L14, L15, L16, L17, R10, R11, R12, R13, R14, R15, R16, R17, \ + L20, L21, L22, L23, L24, L25, L26, L27, R20, R21, R22, R23, R24, R25, R26, R27, \ + L30, L31, L32, L33, L34, L35, L36, L37, L44, R40, R30, R31, R32, R33, R34, R35, R36, R37, \ + L40, L41, L42, L43, R41, R42, R43, R44 \ + ) \ + { \ + { L07, L06, L05, L04, L03, L02, L01, L00 }, \ + { L17, L16, L15, L14, L13, L12, L11, L10 }, \ + { L27, L26, L25, L24, L23, L22, L21, L20 }, \ + { L37, L36, L35, L34, L33, L32, L31, L30 }, \ + { L43, L42, L41, L40, L44, KC_NO, KC_NO, KC_NO }, \ + { R00, R01, R02, R03, R04, R05, R06, R07 }, \ + { R10, R11, R12, R13, R14, R15, R16, R17 }, \ + { R20, R21, R22, R23, R24, R25, R26, R27 }, \ + { R30, R31, R32, R33, R34, R35, R36, R37 }, \ + { R41, R42, R43, R44, R40, KC_NO, KC_NO } \ + } + +#define LAYOUT_6_8( \ + L02, L03, L04, L05, L06, L07, R00, R01, R02, R03, R04, R05, R06, R07, \ + L12, L13, L14, L15, L16, L17, R10, R11, R12, R13, R14, R15, R16, R17, \ + L22, L23, L24, L25, L26, L27, R20, R21, R22, R23, R24, R25, R26, R27, \ + L32, L33, L34, L35, L36, L37, L44, R40, R30, R31, R32, R33, R34, R35, R36, R37, \ + L40, L41, L42, L43, R41, R42, R43, R44 \ + ) \ + { \ + { L07, L06, L05, L04, L03, L02, KC_NO, KC_NO }, \ + { L17, L16, L15, L14, L13, L12, KC_NO, KC_NO }, \ + { L27, L26, L25, L24, L23, L22, KC_NO, KC_NO }, \ + { L37, L36, L35, L34, L33, L32, KC_NO, KC_NO }, \ + { L43, L42, L41, L40, L44, KC_NO, KC_NO, KC_NO }, \ + { R00, R01, R02, R03, R04, R05, R06, R07 }, \ + { R10, R11, R12, R13, R14, R15, R16, R17 }, \ + { R20, R21, R22, R23, R24, R25, R26, R27 }, \ + { R30, R31, R32, R33, R34, R35, R36, R37 }, \ + { R41, R42, R43, R44, R40, KC_NO, KC_NO } \ + } + +#define LAYOUT_8_6( \ + L00, L01, L02, L03, L04, L05, L06, L07, R00, R01, R02, R03, R04, R05, \ + L10, L11, L12, L13, L14, L15, L16, L17, R10, R11, R12, R13, R14, R15, \ + L20, L21, L22, L23, L24, L25, L26, L27, R20, R21, R22, R23, R24, R25, \ + L30, L31, L32, L33, L34, L35, L36, L37, L44, R40, R30, R31, R32, R33, R34, R35, \ + L40, L41, L42, L43, R41, R42, R43, R44 \ + ) \ + { \ + { L07, L06, L05, L04, L03, L02, L01, L00 }, \ + { L17, L16, L15, L14, L13, L12, L11, L10 }, \ + { L27, L26, L25, L24, L23, L22, L21, L20 }, \ + { L37, L36, L35, L34, L33, L32, L31, L30 }, \ + { L43, L42, L41, L40, L44, KC_NO, KC_NO, KC_NO }, \ + { R00, R01, R02, R03, R04, R05, KC_NO, KC_NO }, \ + { R10, R11, R12, R13, R14, R15, KC_NO, KC_NO }, \ + { R20, R21, R22, R23, R24, R25, KC_NO, KC_NO }, \ + { R30, R31, R32, R33, R34, R35, KC_NO, KC_NO }, \ + { R41, R42, R43, R44, R40, KC_NO, KC_NO } \ + } + +#define LAYOUT_6_6( \ + L02, L03, L04, L05, L06, L07, R00, R01, R02, R03, R04, R05, \ + L12, L13, L14, L15, L16, L17, R10, R11, R12, R13, R14, R15, \ + L22, L23, L24, L25, L26, L27, R20, R21, R22, R23, R24, R25, \ + L32, L33, L34, L35, L36, L37, L44, R40, R30, R31, R32, R33, R34, R35, \ + L40, L41, L42, L43, R41, R42, R43, R44 \ + ) \ + { \ + { L07, L06, L05, L04, L03, L02, KC_NO, KC_NO }, \ + { L17, L16, L15, L14, L13, L12, KC_NO, KC_NO }, \ + { L27, L26, L25, L24, L23, L22, KC_NO, KC_NO }, \ + { L37, L36, L35, L34, L33, L32, KC_NO, KC_NO }, \ + { L43, L42, L41, L40, L44, KC_NO, KC_NO, KC_NO }, \ + { R00, R01, R02, R03, R04, R05, KC_NO, KC_NO }, \ + { R10, R11, R12, R13, R14, R15, KC_NO, KC_NO }, \ + { R20, R21, R22, R23, R24, R25, KC_NO, KC_NO }, \ + { R30, R31, R32, R33, R34, R35, KC_NO, KC_NO }, \ + { R41, R42, R43, R44, R40, KC_NO, KC_NO } \ + } diff --git a/keyboards/keyprez/bison/config.h b/keyboards/keyprez/bison/config.h new file mode 100644 index 000000000000..a85e33c7e963 --- /dev/null +++ b/keyboards/keyprez/bison/config.h @@ -0,0 +1,158 @@ +/* +Copyright 2021 csandven + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x0000 +#define DEVICE_VER 0x0001 +#define MANUFACTURER csandven +#define PRODUCT bison + +/* key matrix size */ +#define MATRIX_ROWS 10 +#define MATRIX_COLS 8 + +/* + * 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 { D2, F7, B1, B3, D7 } +#define MATRIX_COL_PINS { D3, E6, B2, B4, D4, F6, F5, F4 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +//#define LED_NUM_LOCK_PIN B0 +//#define LED_CAPS_LOCK_PIN B1 +//#define LED_SCROLL_LOCK_PIN B2 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +//#define RGB_DI_PIN E2 +//#ifdef RGB_DI_PIN +//# define RGBLED_NUM 16 +//# define RGBLIGHT_HUE_STEP 8 +//# define RGBLIGHT_SAT_STEP 8 +//# define RGBLIGHT_VAL_STEP 8 +//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +//# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +//#endif + +#define ENCODERS_PAD_A { B6 } +#define ENCODERS_PAD_B { B5 } +#define ENCODERS_PAD_A_RIGHT { B5 } +#define ENCODERS_PAD_B_RIGHT { B6 } +#define ENCODER_RESOLUTION 4 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/keyprez/bison/info.json b/keyboards/keyprez/bison/info.json new file mode 100644 index 000000000000..66a97559468f --- /dev/null +++ b/keyboards/keyprez/bison/info.json @@ -0,0 +1,306 @@ +{ + "keyboard_name": "bison", + "url": "", + "maintainer": "Christian Sandven", + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "F1", "x": 0, "y": 0}, + {"label": "F2", "x": 1, "y": 0}, + {"label": "~", "x": 2, "y": 0}, + {"label": "1", "x": 3, "y": 0}, + {"label": "2", "x": 4, "y": 0}, + {"label": "3", "x": 5, "y": 0}, + {"label": "4", "x": 6, "y": 0}, + {"label": "5", "x": 7, "y": 0}, + {"label": "6", "x": 10, "y": 0}, + {"label": "7", "x": 11, "y": 0}, + {"label": "8", "x": 12, "y": 0}, + {"label": "9", "x": 13, "y": 0}, + {"label": "0", "x": 14, "y": 0}, + {"label": "-", "x": 15, "y": 0}, + {"label": "=", "x": 16, "y": 0}, + {"label": "Del", "x": 17, "y": 0}, + + {"label": "F3", "x": 0, "y": 1}, + {"label": "F4", "x": 1, "y": 1}, + {"label": "Tab", "x": 2, "y": 1}, + {"label": "Q", "x": 3, "y": 1}, + {"label": "W", "x": 4, "y": 1}, + {"label": "E", "x": 5, "y": 1}, + {"label": "R", "x": 6, "y": 1}, + {"label": "T", "x": 7, "y": 1}, + {"label": "Y", "x": 10, "y": 1}, + {"label": "U", "x": 11, "y": 1}, + {"label": "I", "x": 12, "y": 1}, + {"label": "O", "x": 13, "y": 1}, + {"label": "P", "x": 14, "y": 1}, + {"label": "[", "x": 15, "y": 1}, + {"label": "]", "x": 16, "y": 1}, + {"label": "\\", "x": 17, "y": 1}, + + {"label": "F5", "x": 0, "y": 2}, + {"label": "F6", "x": 1, "y": 2}, + {"label": "Esc", "x": 2, "y": 2}, + {"label": "A", "x": 3, "y": 2}, + {"label": "S", "x": 4, "y": 2}, + {"label": "D", "x": 5, "y": 2}, + {"label": "F", "x": 6, "y": 2}, + {"label": "G", "x": 7, "y": 2}, + {"label": "H", "x": 10, "y": 2}, + {"label": "J", "x": 11, "y": 2}, + {"label": "K", "x": 12, "y": 2}, + {"label": "L", "x": 13, "y": 2}, + {"label": ";", "x": 14, "y": 2}, + {"label": "'", "x": 15, "y": 2}, + {"label": "BS", "x": 16, "y": 2}, + {"label": "FN", "x": 17, "y": 2}, + + {"label": "F7", "x": 0, "y": 3}, + {"label": "F8", "x": 1, "y": 3}, + {"label": "Shift", "x": 2, "y": 3}, + {"label": "Z", "x": 3, "y": 3}, + {"label": "X", "x": 4, "y": 3}, + {"label": "C", "x": 5, "y": 3}, + {"label": "V", "x": 6, "y": 3}, + {"label": "B", "x": 7, "y": 3}, + {"label": "Mute", "x": 8, "y": 3}, + {"label": "MPLY", "x": 9, "y": 3}, + {"label": "N", "x": 10, "y": 3}, + {"label": "M", "x": 11, "y": 3}, + {"label": ",", "x": 12, "y": 3}, + {"label": ".", "x": 13, "y": 3}, + {"label": "/", "x": 14, "y": 3}, + {"label": "Enter", "x": 15, "y": 3}, + {"label": "Home", "x": 16, "y": 3}, + {"label": "End", "x": 17, "y": 3}, + + {"label": "OS", "x": 3.75, "y": 4}, + {"label": "Alt", "x": 4.75, "y": 4}, + {"label": "Lower", "x": 5.75, "y": 4}, + {"label": "BS", "x": 6.75, "y": 4, "w": 1.5}, + {"label": "", "x": 9.75, "y": 4, "w": 1.5}, + {"label": "Raise", "x": 11.25, "y": 4}, + {"label": "Alt", "x": 12.25, "y": 4}, + {"label": "OS", "x": 13.25, "y": 4} + ] + }, + + "LAYOUT_6_8": { + "layout": [ + {"label": "~", "x": 2, "y": 0}, + {"label": "1", "x": 3, "y": 0}, + {"label": "2", "x": 4, "y": 0}, + {"label": "3", "x": 5, "y": 0}, + {"label": "4", "x": 6, "y": 0}, + {"label": "5", "x": 7, "y": 0}, + {"label": "6", "x": 10, "y": 0}, + {"label": "7", "x": 11, "y": 0}, + {"label": "8", "x": 12, "y": 0}, + {"label": "9", "x": 13, "y": 0}, + {"label": "0", "x": 14, "y": 0}, + {"label": "-", "x": 15, "y": 0}, + {"label": "=", "x": 16, "y": 0}, + {"label": "Del", "x": 17, "y": 0}, + + {"label": "Tab", "x": 2, "y": 1}, + {"label": "Q", "x": 3, "y": 1}, + {"label": "W", "x": 4, "y": 1}, + {"label": "E", "x": 5, "y": 1}, + {"label": "R", "x": 6, "y": 1}, + {"label": "T", "x": 7, "y": 1}, + {"label": "Y", "x": 10, "y": 1}, + {"label": "U", "x": 11, "y": 1}, + {"label": "I", "x": 12, "y": 1}, + {"label": "O", "x": 13, "y": 1}, + {"label": "P", "x": 14, "y": 1}, + {"label": "[", "x": 15, "y": 1}, + {"label": "]", "x": 16, "y": 1}, + {"label": "\\", "x": 17, "y": 1}, + + {"label": "Esc", "x": 2, "y": 2}, + {"label": "A", "x": 3, "y": 2}, + {"label": "S", "x": 4, "y": 2}, + {"label": "D", "x": 5, "y": 2}, + {"label": "F", "x": 6, "y": 2}, + {"label": "G", "x": 7, "y": 2}, + {"label": "H", "x": 10, "y": 2}, + {"label": "J", "x": 11, "y": 2}, + {"label": "K", "x": 12, "y": 2}, + {"label": "L", "x": 13, "y": 2}, + {"label": ";", "x": 14, "y": 2}, + {"label": "'", "x": 15, "y": 2}, + {"label": "BS", "x": 16, "y": 2}, + {"label": "FN", "x": 17, "y": 2}, + + {"label": "Shift", "x": 2, "y": 3}, + {"label": "Z", "x": 3, "y": 3}, + {"label": "X", "x": 4, "y": 3}, + {"label": "C", "x": 5, "y": 3}, + {"label": "V", "x": 6, "y": 3}, + {"label": "B", "x": 7, "y": 3}, + {"label": "Mute", "x": 8, "y": 3}, + {"label": "MPLY", "x": 9, "y": 3}, + {"label": "N", "x": 10, "y": 3}, + {"label": "M", "x": 11, "y": 3}, + {"label": ",", "x": 12, "y": 3}, + {"label": ".", "x": 13, "y": 3}, + {"label": "/", "x": 14, "y": 3}, + {"label": "Enter", "x": 15, "y": 3}, + {"label": "Home", "x": 16, "y": 3}, + {"label": "End", "x": 17, "y": 3}, + + {"label": "OS", "x": 3.75, "y": 4}, + {"label": "Alt", "x": 4.75, "y": 4}, + {"label": "Lower", "x": 5.75, "y": 4}, + {"label": "BS", "x": 6.75, "y": 4, "w": 1.5}, + {"label": "", "x": 9.75, "y": 4, "w": 1.5}, + {"label": "Raise", "x": 11.25, "y": 4}, + {"label": "Alt", "x": 12.25, "y": 4}, + {"label": "OS", "x": 13.25, "y": 4} + ] + }, + + "LAYOUT_8_6": { + "layout": [ + {"label": "F1", "x": 0, "y": 0}, + {"label": "F2", "x": 1, "y": 0}, + {"label": "~", "x": 2, "y": 0}, + {"label": "1", "x": 3, "y": 0}, + {"label": "2", "x": 4, "y": 0}, + {"label": "3", "x": 5, "y": 0}, + {"label": "4", "x": 6, "y": 0}, + {"label": "5", "x": 7, "y": 0}, + {"label": "6", "x": 10, "y": 0}, + {"label": "7", "x": 11, "y": 0}, + {"label": "8", "x": 12, "y": 0}, + {"label": "9", "x": 13, "y": 0}, + {"label": "0", "x": 14, "y": 0}, + {"label": "Del", "x": 15, "y": 0}, + + {"label": "F3", "x": 0, "y": 1}, + {"label": "F4", "x": 1, "y": 1}, + {"label": "Tab", "x": 2, "y": 1}, + {"label": "Q", "x": 3, "y": 1}, + {"label": "W", "x": 4, "y": 1}, + {"label": "E", "x": 5, "y": 1}, + {"label": "R", "x": 6, "y": 1}, + {"label": "T", "x": 7, "y": 1}, + {"label": "Y", "x": 10, "y": 1}, + {"label": "U", "x": 11, "y": 1}, + {"label": "I", "x": 12, "y": 1}, + {"label": "O", "x": 13, "y": 1}, + {"label": "P", "x": 14, "y": 1}, + {"label": "BS", "x": 15, "y": 1}, + + {"label": "F5", "x": 0, "y": 2}, + {"label": "F6", "x": 1, "y": 2}, + {"label": "Esc", "x": 2, "y": 2}, + {"label": "A", "x": 3, "y": 2}, + {"label": "S", "x": 4, "y": 2}, + {"label": "D", "x": 5, "y": 2}, + {"label": "F", "x": 6, "y": 2}, + {"label": "G", "x": 7, "y": 2}, + {"label": "H", "x": 10, "y": 2}, + {"label": "J", "x": 11, "y": 2}, + {"label": "K", "x": 12, "y": 2}, + {"label": "L", "x": 13, "y": 2}, + {"label": ";", "x": 14, "y": 2}, + {"label": "'", "x": 15, "y": 2}, + + {"label": "F7", "x": 0, "y": 3}, + {"label": "F8", "x": 1, "y": 3}, + {"label": "Shift", "x": 2, "y": 3}, + {"label": "Z", "x": 3, "y": 3}, + {"label": "X", "x": 4, "y": 3}, + {"label": "C", "x": 5, "y": 3}, + {"label": "V", "x": 6, "y": 3}, + {"label": "B", "x": 7, "y": 3}, + {"label": "Mute", "x": 8, "y": 3}, + {"label": "MPLY", "x": 9, "y": 3}, + {"label": "N", "x": 10, "y": 3}, + {"label": "M", "x": 11, "y": 3}, + {"label": ",", "x": 12, "y": 3}, + {"label": ".", "x": 13, "y": 3}, + {"label": "/", "x": 14, "y": 3}, + {"label": "Enter", "x": 15, "y": 3}, + + {"label": "OS", "x": 3.75, "y": 4}, + {"label": "Alt", "x": 4.75, "y": 4}, + {"label": "Lower", "x": 5.75, "y": 4}, + {"label": "BS", "x": 6.75, "y": 4, "w": 1.5}, + {"label": "", "x": 9.75, "y": 4, "w": 1.5}, + {"label": "Raise", "x": 11.25, "y": 4}, + {"label": "Alt", "x": 12.25, "y": 4}, + {"label": "FN", "x": 13.25, "y": 4} + ] + }, + + "LAYOUT_6_6": { + "layout": [ + {"label": "~", "x": 2, "y": 0}, + {"label": "1", "x": 3, "y": 0}, + {"label": "2", "x": 4, "y": 0}, + {"label": "3", "x": 5, "y": 0}, + {"label": "4", "x": 6, "y": 0}, + {"label": "5", "x": 7, "y": 0}, + {"label": "6", "x": 10, "y": 0}, + {"label": "7", "x": 11, "y": 0}, + {"label": "8", "x": 12, "y": 0}, + {"label": "9", "x": 13, "y": 0}, + {"label": "0", "x": 14, "y": 0}, + {"label": "Del", "x": 15, "y": 0}, + + {"label": "Tab", "x": 2, "y": 1}, + {"label": "Q", "x": 3, "y": 1}, + {"label": "W", "x": 4, "y": 1}, + {"label": "E", "x": 5, "y": 1}, + {"label": "R", "x": 6, "y": 1}, + {"label": "T", "x": 7, "y": 1}, + {"label": "Y", "x": 10, "y": 1}, + {"label": "U", "x": 11, "y": 1}, + {"label": "I", "x": 12, "y": 1}, + {"label": "O", "x": 13, "y": 1}, + {"label": "P", "x": 14, "y": 1}, + {"label": "BS", "x": 15, "y": 1}, + + {"label": "Esc", "x": 2, "y": 2}, + {"label": "A", "x": 3, "y": 2}, + {"label": "S", "x": 4, "y": 2}, + {"label": "D", "x": 5, "y": 2}, + {"label": "F", "x": 6, "y": 2}, + {"label": "G", "x": 7, "y": 2}, + {"label": "H", "x": 10, "y": 2}, + {"label": "J", "x": 11, "y": 2}, + {"label": "K", "x": 12, "y": 2}, + {"label": "L", "x": 13, "y": 2}, + {"label": ";", "x": 14, "y": 2}, + {"label": "'", "x": 15, "y": 2}, + + {"label": "Shift", "x": 2, "y": 3}, + {"label": "Z", "x": 3, "y": 3}, + {"label": "X", "x": 4, "y": 3}, + {"label": "C", "x": 5, "y": 3}, + {"label": "V", "x": 6, "y": 3}, + {"label": "B", "x": 7, "y": 3}, + {"label": "Mute", "x": 8, "y": 3}, + {"label": "MPLY", "x": 9, "y": 3}, + {"label": "N", "x": 10, "y": 3}, + {"label": "M", "x": 11, "y": 3}, + {"label": ",", "x": 12, "y": 3}, + {"label": ".", "x": 13, "y": 3}, + {"label": "/", "x": 14, "y": 3}, + {"label": "Enter", "x": 15, "y": 3}, + + {"label": "OS", "x": 3.75, "y": 4}, + {"label": "Alt", "x": 4.75, "y": 4}, + {"label": "Lower", "x": 5.75, "y": 4}, + {"label": "BS", "x": 6.75, "y": 4, "w": 1.5}, + {"label": "", "x": 9.75, "y": 4, "w": 1.5}, + {"label": "Raise", "x": 11.25, "y": 4}, + {"label": "Alt", "x": 12.25, "y": 4}, + {"label": "FN", "x": 13.25, "y": 4} + ] + } + } +} diff --git a/keyboards/keyprez/bison/keymaps/default/keymap.c b/keyboards/keyprez/bison/keymaps/default/keymap.c new file mode 100644 index 000000000000..fc1f346647ac --- /dev/null +++ b/keyboards/keyprez/bison/keymaps/default/keymap.c @@ -0,0 +1,226 @@ +/* Copyright 2021 csandven + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _QWERTY, + _COLEMAK, + _LOWER, + _RAISE, + _HRM, + _FN, +}; + +enum custom_keycodes { + KC_QWRTY = SAFE_RANGE, + KC_COLMK, + KC_HRM, + KC_PRVWD, + KC_NXTWD +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) +#define FN MO(_FN) +#define ESC_CTL MT(MOD_LCTL, KC_ESC) +#define HRM_LG MT(MOD_LGUI, KC_A) +#define HRM_LA MT(MOD_LALT, KC_S) +#define HRM_LC MT(MOD_LCTL, KC_D) +#define HRM_LS MT(MOD_LSFT, KC_F) +#define HRM_RG MT(MOD_RGUI, KC_SCLN) +#define HRM_RA MT(MOD_RALT, KC_L) +#define HRM_RC MT(MOD_RCTL, KC_K) +#define HRM_RS MT(MOD_RSFT, KC_J) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * QWERTY + * ,-------------------------------------------------------. ,-------------------------------------------------------. + * | F1 | F2 | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | - | = | DEL | + * |------+------+------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | F3 | F4 | Tab | Q | W | E | R | T | | Y | U | I | O | P | [ | ] | \ | + * |------+------+------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | F5 | F6 | ESC | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' | BS | Fn | + * |------+------+------+------+------+------+------+------| | | |------+------+------+------+------+------+------+------| + * | F7 | F8 |LShift| Z | X | C | V | B | | | | N | M | , | . | / | Enter| Home | End | + * `-------------------------------------------------------/-------/ \------\-------------------------------------------------------' + * | LGUI | LAlt | LCTR |LOWER | BS / \Space |RAISE | RCTR | RAlt | RGUI | + * | | | | | / \ | | | | | + * `----------------------------------' '------''---------------------------' + */ + [_QWERTY] = LAYOUT( + KC_F1, KC_F2, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL , + KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_F5, KC_F6, ESC_CTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSPC, FN, + KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, KC_MPLY,KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, KC_HOME, KC_END, + KC_LGUI,KC_LALT, LOWER, KC_BSPC, KC_SPC, RAISE, KC_RALT, KC_RGUI + ), + + /* + * COLEMAK + * ,-------------------------------------------------------. ,-------------------------------------------------------. + * | F1 | F2 | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | - | = | DEL | + * |------+------+------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | F3 | F4 | Tab | Q | W | F | P | G | | J | L | U | Y | ; | [ | ] | \ | + * |------+------+------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | F5 | F6 | ESC | A | R | S | T | D |-------. ,-------| H | N | E | I | O | ' | BS | Fn | + * |------+------+------+------+------+------+------+------| | | |------+------+------+------+------+------+------+------| + * | F7 | F8 |LShift| Z | X | C | V | B | | | | K | M | , | . | / | Enter| Home | End | + * `-------------------------------------------------------/-------/ \------\-------------------------------------------------------' + * | LGUI | LAlt | LCTR |LOWER | BS / \Space \ |RAISE | RCTR | RAlt | RGUI | + * | | | | | / \ \ | | | | | + * `----------------------------------' '------''---------------------------' + */ + [_COLEMAK] = LAYOUT( + KC_F1, KC_F2, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, + KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, + KC_F5, KC_F6, ESC_CTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_BSPC, FN, + KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, XXXXXXX,KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, KC_HOME, KC_END, + KC_LGUI,KC_LALT, LOWER, KC_BSPC, KC_SPC, RAISE, KC_RALT, KC_RGUI + ), + + /* + * LOWER + * ,-------------------------------------------------------. ,-------------------------------------------------------. + * | | | | | | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | | | | F1 | F2 | F3 | F4 | | | | | | | | | | | + * |------+------+------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | | | | F5 | F6 | F7 | F8 | |-------. ,-------| LEFT | DOWN | UP | RIGHT| | | | | + * |------+------+------+------+------+------+------+------| | | |------+------+------+------+------+------+------+------| + * | | | | F9 | F10 | F11 | F12 | | | | | | | | | | | | | + * `-------------------------------------------------------/-------/ \------\-------------------------------------------------------' + * | | | | | / \ \ | | | | | + * | | | | | / \ \ | | | | | + * `----------------------------------' '------''---------------------------' + */ + [_LOWER] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_F5, KC_F6, KC_F7, KC_F8, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, _______, _______, _______, _______, + _______, _______, _______, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,_______, _______, _______, _______, _______, _______, _______, _______, + _______,_______, _______, _______, _______, _______, _______, _______ + ), + + /* + * RAISE + * ,-------------------------------------------------------. ,-------------------------------------------------------. + * | | | | | | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | | | | F1 | F2 | F3 | F4 | | | | | PrevW| UP | NextW| | | | + * |------+------+------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | | | | F5 | F6 | F7 | F8 | |-------. ,-------| | | LEFT | DOWN | RIGHT| | | | + * |------+------+------+------+------+------+------+------| | | |------+------+------+------+------+------+------+------| + * | | | | F9 | F10 | F11 | F12 | | | | | | | | | | | | | + * `-------------------------------------------------------/-------/ \------\-------------------------------------------------------' + * | | | | | / \ \ | | | | | + * | | | | | / \ \ | | | | | + * `----------------------------------' '------''---------------------------' + */ + [_RAISE] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, _______,KC_PRVWD, KC_UP,KC_NXTWD, _______, _______, _______, + _______, _______, _______, KC_F5, KC_F6, KC_F7, KC_F8, _______, _______, _______, KC_LEFT, KC_DOWN,KC_RIGHT, _______, _______, _______, + _______, _______, _______, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,_______, _______, _______, _______, _______, _______, _______, _______, + _______,_______, _______, _______, _______, _______, _______, _______ + ), + + /* + * HRM + * ,-------------------------------------------------------. ,-------------------------------------------------------. + * | | | | | | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | | | |HRM_LG|HRM_LA|HRM_LC|HRM_LS| |-------. ,-------| |HRM_RS|HRM_RC|HRM_RA|HRM_RG| | | | + * |------+------+------+------+------+------+------+------| | | |------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | | | | | | | | + * `-------------------------------------------------------/-------/ \------\-------------------------------------------------------' + * | | | | | / \ \ | | | | | + * | | | | | / \ \ | | | | | + * `----------------------------------' '------''---------------------------' + */ + [_HRM] = LAYOUT( + _______, _______, _______, _______, _______, _______,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, HRM_LG, HRM_LA, HRM_LC, HRM_LS, _______, _______, HRM_RS, HRM_RC, HRM_RA, HRM_RG, _______, _______, _______, + _______, _______, _______, _______, _______, _______,_______, _______, _______, _______,_______, _______, _______, _______, _______, _______, _______, _______, + _______,_______, _______, _______, _______, _______, _______, _______ + ), + + /* + * FN + * ,-------------------------------------------------------. ,-------------------------------------------------------. + * | | | | | | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | | | |QWERTY| | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | | | | | | | | |-------. ,-------|KC_HRM| | | | | | | | + * |------+------+------+------+------+------+------+------| | | |------+------+------+------+------+------+------+------| + * | | | | | |COLEMAK| | | | | | | | | | | | | | + * `-------------------------------------------------------/-------/ \------\-------------------------------------------------------' + * | | | | | / \ \ | | | | | + * | | | | | / \ \ | | | | | + * `----------------------------------' '------''---------------------------' + */ + [_FN] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______,KC_QWRTY, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_HRM, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______,KC_COLMK, _______, _______, _______, _______,_______, _______, _______, _______, _______, _______, _______, _______, + _______,_______, _______, _______, _______, _______, _______, _______ + ), +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_QWRTY: + if (record->event.pressed) { + set_single_persistent_default_layer(_QWERTY); + } + return false; + case KC_COLMK: + if (record->event.pressed) { + set_single_persistent_default_layer(_COLEMAK); + } + return false; + case KC_HRM: + if (record->event.pressed) { + set_single_persistent_default_layer(_HRM); + } + return false; + case KC_PRVWD: + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_LEFT); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_LEFT); + } + break; + case KC_NXTWD: + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_RIGHT); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_RIGHT); + } + break; + } + return true; +} diff --git a/keyboards/keyprez/bison/keymaps/default/readme.md b/keyboards/keyprez/bison/keymaps/default/readme.md new file mode 100644 index 000000000000..b8557bbc8e50 --- /dev/null +++ b/keyboards/keyprez/bison/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for bison diff --git a/keyboards/keyprez/bison/keymaps/default_6_6/keymap.c b/keyboards/keyprez/bison/keymaps/default_6_6/keymap.c new file mode 100644 index 000000000000..816cd2fda6ef --- /dev/null +++ b/keyboards/keyprez/bison/keymaps/default_6_6/keymap.c @@ -0,0 +1,226 @@ +/* Copyright 2021 csandven + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _QWERTY, + _COLEMAK, + _LOWER, + _RAISE, + _HRM, + _FN, +}; + +enum custom_keycodes { + KC_QWRTY = SAFE_RANGE, + KC_COLMK, + KC_HRM, + KC_PRVWD, + KC_NXTWD +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) +#define FN MO(_FN) +#define ESC_CTL MT(MOD_LCTL, KC_ESC) +#define HRM_LG MT(MOD_LGUI, KC_A) +#define HRM_LA MT(MOD_LALT, KC_S) +#define HRM_LC MT(MOD_LCTL, KC_D) +#define HRM_LS MT(MOD_LSFT, KC_F) +#define HRM_RG MT(MOD_RGUI, KC_SCLN) +#define HRM_RA MT(MOD_RALT, KC_L) +#define HRM_RC MT(MOD_RCTL, KC_K) +#define HRM_RS MT(MOD_RSFT, KC_J) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * QWERTY + * ,-----------------------------------------. ,-----------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | DEL | + * |------+------+------+------+------+------| |------+------+------+------+------+------+ + * | Tab | Q | W | E | R | T | | Y | U | I | O | P | BS | + * |------+------+------+------+------+------| |------+------+------+------+------+------+ + * | ESC | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' | + * |------+------+------+------+------+------| | | |------+------+------+------+------+------+ + * |LShift| Z | X | C | V | B | | | | N | M | , | . | / | Enter| + * `-----------------------------------------/-------/ \------\-----------------------------------------' + * | LGUI | LAlt | LCTR |LOWER | BS / \Space |RAISE | RCTR | RAlt | FN | + * | | | | | / \ | | | | | + * `----------------------------------' '------''---------------------------' + */ + [_QWERTY] = LAYOUT_6_6( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + ESC_CTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, KC_MPLY,KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_LGUI,KC_LALT, LOWER, KC_BSPC, KC_SPC, RAISE, KC_RALT, FN + ), + + /* + * COLEMAK + * ,-----------------------------------------. ,-----------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | DEL | + * |------+------+------+------+------+------| |------+------+------+------+------+------+ + * | Tab | Q | W | F | P | G | | J | L | U | Y | ; | BS | + * |------+------+------+------+------+------| |------+------+------+------+------+------+ + * | ESC | A | R | S | T | D |-------. ,-------| H | N | E | I | O | ' | + * |------+------+------+------+------+------| | | |------+------+------+------+------+------+ + * |LShift| Z | X | C | V | B | | | | K | M | , | . | / | Enter| + * `-----------------------------------------/-------/ \------\-----------------------------------------' + * | LGUI | LAlt | LCTR |LOWER | BS / \Space \ |RAISE | RCTR | RAlt | FN | + * | | | | | / \ \ | | | | | + * `----------------------------------' '------''---------------------------' + */ + [_COLEMAK] = LAYOUT_6_6( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, + ESC_CTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, XXXXXXX,KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_LGUI,KC_LALT, LOWER, KC_BSPC, KC_SPC, RAISE, KC_RALT, FN + ), + + /* + * LOWER + * ,-----------------------------------------. ,-----------------------------------------. + * | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------+ + * | | F1 | F2 | F3 | F4 | | | | | | [ | ] | \ | + * |------+------+------+------+------+------| |------+------+------+------+------+------+ + * | | F5 | F6 | F7 | F8 | |-------. ,-------| LEFT | DOWN | UP | RIGHT| | | + * |------+------+------+------+------+------| | | |------+------+------+------+------+------+ + * | | F9 | F10 | F11 | F12 | | | | | Home | | | End | | | + * `-----------------------------------------/-------/ \------\-----------------------------------------' + * | | | | | / \ \ | | | | | + * | | | | | / \ \ | | | | | + * `----------------------------------' '------''---------------------------' + */ + [_LOWER] = LAYOUT_6_6( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, _______, _______, KC_LBRC, KC_RBRC, KC_BSLS, + _______, KC_F5, KC_F6, KC_F7, KC_F8, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, _______, _______, + _______, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,KC_HOME, _______, _______, KC_END, _______, _______, + _______,_______, _______, _______, _______, _______, _______, _______ + ), + + /* + * RAISE + * ,-----------------------------------------. ,-------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | | F1 | F2 | F3 | F4 | | | | | PrevW| UP | NextW| | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | | F5 | F6 | F7 | F8 | |-------. ,-------| | | LEFT | DOWN | RIGHT| | | | + * |------+------+------+------+------+------| | | |------+------+------+------+------+------+------+------| + * | | F9 | F10 | F11 | F12 | | | | | | | | | | | | | + * `-----------------------------------------/-------/ \------\-------------------------------------------------------' + * | | | | | / \ \ | | | | | + * | | | | | / \ \ | | | | | + * `----------------------------------' '------''---------------------------' + */ + [_RAISE] = LAYOUT_6_6( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, _______,KC_PRVWD, KC_UP,KC_NXTWD, _______, + _______, KC_F5, KC_F6, KC_F7, KC_F8, _______, _______, _______, KC_LEFT, KC_DOWN,KC_RIGHT, _______, + _______, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,_______, _______, _______, _______, _______, _______, + _______,_______, _______, _______, _______, _______, _______, _______ + ), + + /* + * HRM + * ,-----------------------------------------. ,-------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | |HRM_LG|HRM_LA|HRM_LC|HRM_LS| |-------. ,-------| |HRM_RS|HRM_RC|HRM_RA|HRM_RG| | | | + * |------+------+------+------+------+------| | | |------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | | | | | | + * `-----------------------------------------/-------/ \------\-------------------------------------------------------' + * | | | | | / \ \ | | | | | + * | | | | | / \ \ | | | | | + * `----------------------------------' '------''---------------------------' + */ + [_HRM] = LAYOUT_6_6( + _______, _______, _______, _______,_______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______,_______, _______, _______, _______, _______, _______, _______, _______, + _______, HRM_LG, HRM_LA, HRM_LC, HRM_LS, _______, _______, HRM_RS, HRM_RC, HRM_RA, HRM_RG, _______, + _______, _______, _______, _______,_______, _______, _______, _______,_______, _______, _______, _______, _______, _______, + _______,_______, _______, _______, _______, _______, _______, _______ + ), + + /* + * FN + * ,-----------------------------------------. ,-------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | |QWERTY| | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | | | | | | |-------. ,-------|KC_HRM| | | | | | | | + * |------+------+------+------+------+------| | | |------+------+------+------+------+------+------+------| + * | | | |COLEMAK| | | | | | | | | | | | | | + * `-----------------------------------------/-------/ \------\-------------------------------------------------------' + * | | | | | / \ \ | | | | | + * | | | | | / \ \ | | | | | + * `----------------------------------' '------''---------------------------' + */ + [_FN] = LAYOUT_6_6( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______,KC_QWRTY, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, KC_HRM, _______, _______, _______, _______, _______, + _______, _______, _______,KC_COLMK, _______, _______, _______, _______,_______, _______, _______, _______, _______, _______, + _______,_______, _______, _______, _______, _______, _______, _______ + ), +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_QWRTY: + if (record->event.pressed) { + set_single_persistent_default_layer(_QWERTY); + } + return false; + case KC_COLMK: + if (record->event.pressed) { + set_single_persistent_default_layer(_COLEMAK); + } + return false; + case KC_HRM: + if (record->event.pressed) { + set_single_persistent_default_layer(_HRM); + } + return false; + case KC_PRVWD: + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_LEFT); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_LEFT); + } + break; + case KC_NXTWD: + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_RIGHT); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_RIGHT); + } + break; + } + return true; +} diff --git a/keyboards/keyprez/bison/keymaps/default_6_6/readme.md b/keyboards/keyprez/bison/keymaps/default_6_6/readme.md new file mode 100644 index 000000000000..b8557bbc8e50 --- /dev/null +++ b/keyboards/keyprez/bison/keymaps/default_6_6/readme.md @@ -0,0 +1 @@ +# The default keymap for bison diff --git a/keyboards/keyprez/bison/keymaps/default_6_8/keymap.c b/keyboards/keyprez/bison/keymaps/default_6_8/keymap.c new file mode 100644 index 000000000000..c42ee631dbc5 --- /dev/null +++ b/keyboards/keyprez/bison/keymaps/default_6_8/keymap.c @@ -0,0 +1,226 @@ +/* Copyright 2021 csandven + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _QWERTY, + _COLEMAK, + _LOWER, + _RAISE, + _HRM, + _FN, +}; + +enum custom_keycodes { + KC_QWRTY = SAFE_RANGE, + KC_COLMK, + KC_HRM, + KC_PRVWD, + KC_NXTWD +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) +#define FN MO(_FN) +#define ESC_CTL MT(MOD_LCTL, KC_ESC) +#define HRM_LG MT(MOD_LGUI, KC_A) +#define HRM_LA MT(MOD_LALT, KC_S) +#define HRM_LC MT(MOD_LCTL, KC_D) +#define HRM_LS MT(MOD_LSFT, KC_F) +#define HRM_RG MT(MOD_RGUI, KC_SCLN) +#define HRM_RA MT(MOD_RALT, KC_L) +#define HRM_RC MT(MOD_RCTL, KC_K) +#define HRM_RS MT(MOD_RSFT, KC_J) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * QWERTY + * ,-----------------------------------------. ,-------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | - | = | DEL | + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | | Y | U | I | O | P | [ | ] | \ | + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | ESC | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' | BS | Fn | + * |------+------+------+------+------+------| | | |------+------+------+------+------+------+------+------| + * |LShift| Z | X | C | V | B | | | | N | M | , | . | / | Enter| Home | End | + * `----------------------------------------/-------/ \------\-------------------------------------------------------' + * | LGUI | LAlt | LCTR |LOWER | BS / \Space \ |RAISE | RCTR | RAlt | RGUI | + * | | | | | / \ \ | | | | | + * `----------------------------------' '------''---------------------------' + */ + [_QWERTY] = LAYOUT_6_8( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + ESC_CTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSPC, FN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, KC_MPLY,KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, KC_HOME, KC_END, + KC_LGUI,KC_LALT, LOWER, KC_BSPC, KC_SPC, RAISE, KC_RALT, KC_RGUI + ), + + /* + * COLEMAK + * ,-----------------------------------------. ,-------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | - | = | DEL | + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | Tab | Q | W | F | P | G | | J | L | U | Y | ; | [ | ] | \ | + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | ESC | A | R | S | T | D |-------. ,-------| H | N | E | I | O | ' | BS | Fn | + * |------+------+------+------+------+------| | | |------+------+------+------+------+------+------+------| + * |LShift| Z | X | C | V | B | | | | K | M | , | . | / | Enter| Home | End | + * `-----------------------------------------/-------/ \------\-------------------------------------------------------' + * | LGUI | LAlt | LCTR |LOWER | BS / \Space \ |RAISE | RCTR | RAlt | RGUI | + * | | | | | / \ \ | | | | | + * `----------------------------------' '------''---------------------------' + */ + [_COLEMAK] = LAYOUT_6_8( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, + ESC_CTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_BSPC, FN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, XXXXXXX,KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, KC_HOME, KC_END, + KC_LGUI,KC_LALT, LOWER, KC_BSPC, KC_SPC, RAISE, KC_RALT, KC_RGUI + ), + + /* + * LOWER + * ,-----------------------------------------. ,-------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | | F1 | F2 | F3 | F4 | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | | F5 | F6 | F7 | F8 | |-------. ,-------| LEFT | DOWN | UP | RIGHT| | | | | + * |------+------+------+------+------+------| | | |------+------+------+------+------+------+------+------| + * | | F9 | F10 | F11 | F12 | | | | | | | | | | | | | + * `-----------------------------------------/-------/ \------\-------------------------------------------------------' + * | | | | | / \ \ | | | | | + * | | | | | / \ \ | | | | | + * `----------------------------------' '------''---------------------------' + */ + [_LOWER] = LAYOUT_6_8( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_F5, KC_F6, KC_F7, KC_F8, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, _______, _______, _______, _______, + _______, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,_______, _______, _______, _______, _______, _______, _______, _______, + _______,_______, _______, _______, _______, _______, _______, _______ + ), + + /* + * RAISE + * ,-----------------------------------------. ,-------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | | F1 | F2 | F3 | F4 | | | | | PrevW| UP | NextW| | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | | F5 | F6 | F7 | F8 | |-------. ,-------| | | LEFT | DOWN | RIGHT| | | | + * |------+------+------+------+------+------| | | |------+------+------+------+------+------+------+------| + * | | F9 | F10 | F11 | F12 | | | | | | | | | | | | | + * `-----------------------------------------/-------/ \------\-------------------------------------------------------' + * | | | | | / \ \ | | | | | + * | | | | | / \ \ | | | | | + * `----------------------------------' '------''---------------------------' + */ + [_RAISE] = LAYOUT_6_8( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, _______,KC_PRVWD, KC_UP,KC_NXTWD, _______, _______, _______, + _______, KC_F5, KC_F6, KC_F7, KC_F8, _______, _______, _______, KC_LEFT, KC_DOWN,KC_RIGHT, _______, _______, _______, + _______, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,_______, _______, _______, _______, _______, _______, _______, _______, + _______,_______, _______, _______, _______, _______, _______, _______ + ), + + /* + * HRM + * ,-----------------------------------------. ,-------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | |HRM_LG|HRM_LA|HRM_LC|HRM_LS| |-------. ,-------| |HRM_RS|HRM_RC|HRM_RA|HRM_RG| | | | + * |------+------+------+------+------+------| | | |------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | | | | | | + * `-----------------------------------------/-------/ \------\-------------------------------------------------------' + * | | | | | / \ \ | | | | | + * | | | | | / \ \ | | | | | + * `----------------------------------' '------''---------------------------' + */ + [_HRM] = LAYOUT_6_8( + _______, _______, _______, _______,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, HRM_LG, HRM_LA, HRM_LC, HRM_LS, _______, _______, HRM_RS, HRM_RC, HRM_RA, HRM_RG, _______, _______, _______, + _______, _______, _______, _______,_______, _______, _______, _______,_______, _______, _______, _______, _______, _______, _______, _______, + _______,_______, _______, _______, _______, _______, _______, _______ + ), + + /* + * FN + * ,-----------------------------------------. ,-------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | |QWERTY| | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | | | | | | |-------. ,-------|KC_HRM| | | | | | | | + * |------+------+------+------+------+------| | | |------+------+------+------+------+------+------+------| + * | | | |COLEMAK| | | | | | | | | | | | | | + * `-----------------------------------------/-------/ \------\-------------------------------------------------------' + * | | | | | / \ \ | | | | | + * | | | | | / \ \ | | | | | + * `----------------------------------' '------''---------------------------' + */ + [_FN] = LAYOUT_6_8( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______,KC_QWRTY, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, KC_HRM, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______,KC_COLMK, _______, _______, _______, _______,_______, _______, _______, _______, _______, _______, _______, _______, + _______,_______, _______, _______, _______, _______, _______, _______ + ), +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_QWRTY: + if (record->event.pressed) { + set_single_persistent_default_layer(_QWERTY); + } + return false; + case KC_COLMK: + if (record->event.pressed) { + set_single_persistent_default_layer(_COLEMAK); + } + return false; + case KC_HRM: + if (record->event.pressed) { + set_single_persistent_default_layer(_HRM); + } + return false; + case KC_PRVWD: + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_LEFT); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_LEFT); + } + break; + case KC_NXTWD: + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_RIGHT); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_RIGHT); + } + break; + } + return true; +} diff --git a/keyboards/keyprez/bison/keymaps/default_6_8/readme.md b/keyboards/keyprez/bison/keymaps/default_6_8/readme.md new file mode 100644 index 000000000000..b8557bbc8e50 --- /dev/null +++ b/keyboards/keyprez/bison/keymaps/default_6_8/readme.md @@ -0,0 +1 @@ +# The default keymap for bison diff --git a/keyboards/keyprez/bison/keymaps/default_8_6/keymap.c b/keyboards/keyprez/bison/keymaps/default_8_6/keymap.c new file mode 100644 index 000000000000..173b9bc38714 --- /dev/null +++ b/keyboards/keyprez/bison/keymaps/default_8_6/keymap.c @@ -0,0 +1,226 @@ +/* Copyright 2021 csandven + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _QWERTY, + _COLEMAK, + _LOWER, + _RAISE, + _HRM, + _FN, +}; + +enum custom_keycodes { + KC_QWRTY = SAFE_RANGE, + KC_COLMK, + KC_HRM, + KC_PRVWD, + KC_NXTWD +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) +#define FN MO(_FN) +#define ESC_CTL MT(MOD_LCTL, KC_ESC) +#define HRM_LG MT(MOD_LGUI, KC_A) +#define HRM_LA MT(MOD_LALT, KC_S) +#define HRM_LC MT(MOD_LCTL, KC_D) +#define HRM_LS MT(MOD_LSFT, KC_F) +#define HRM_RG MT(MOD_RGUI, KC_SCLN) +#define HRM_RA MT(MOD_RALT, KC_L) +#define HRM_RC MT(MOD_RCTL, KC_K) +#define HRM_RS MT(MOD_RSFT, KC_J) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * QWERTY + * ,-------------------------------------------------------. ,-----------------------------------------. + * | F1 | F2 | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | DEL | + * |------+------+------+------+------+------+------+------| |------+------+------+------+------+------+ + * | F3 | F4 | Tab | Q | W | E | R | T | | Y | U | I | O | P | BS | + * |------+------+------+------+------+------+------+------| |------+------+------+------+------+------+ + * | F5 | F6 | ESC | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' | + * |------+------+------+------+------+------+------+------| | | |------+------+------+------+------+------+ + * | F7 | F8 |LShift| Z | X | C | V | B | | | | N | M | , | . | / | Enter| + * `-------------------------------------------------------/-------/ \------\-----------------------------------------' + * | LGUI | LAlt | LCTR |LOWER | BS / \Space |RAISE | RCTR | RAlt | FN | + * | | | | | / \ | | | | | + * `----------------------------------' '------''---------------------------' + */ + [_QWERTY] = LAYOUT_8_6( + KC_F1, KC_F2, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_F5, KC_F6, ESC_CTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, KC_MPLY,KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_LGUI,KC_LALT, LOWER, KC_BSPC, KC_SPC, RAISE, KC_RALT, FN + ), + + /* + * COLEMAK + * ,-------------------------------------------------------. ,-----------------------------------------. + * | F1 | F2 | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | DEL | + * |------+------+------+------+------+------+------+------| |------+------+------+------+------+------+ + * | F3 | F4 | Tab | Q | W | F | P | G | | J | L | U | Y | ; | BS | + * |------+------+------+------+------+------+------+------| |------+------+------+------+------+------+ + * | F5 | F6 | ESC | A | R | S | T | D |-------. ,-------| H | N | E | I | O | ' | + * |------+------+------+------+------+------+------+------| | | |------+------+------+------+------+------+ + * | F7 | F8 |LShift| Z | X | C | V | B | | | | K | M | , | . | / | Enter| + * `-------------------------------------------------------/-------/ \------\-----------------------------------------' + * | LGUI | LAlt | LCTR |LOWER | BS / \Space \ |RAISE | RCTR | RAlt | FN | + * | | | | | / \ \ | | | | | + * `----------------------------------' '------''---------------------------' + */ + [_COLEMAK] = LAYOUT_8_6( + KC_F1, KC_F2, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, + KC_F5, KC_F6, ESC_CTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, XXXXXXX,KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_LGUI,KC_LALT, LOWER, KC_BSPC, KC_SPC, RAISE, KC_RALT, FN + ), + + /* + * LOWER + * ,-------------------------------------------------------. ,-----------------------------------------. + * | | | | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------| |------+------+------+------+------+------+ + * | | | | F1 | F2 | F3 | F4 | | | | | | [ | ] | \ | + * |------+------+------+------+------+------+------+------| |------+------+------+------+------+------+ + * | | | | F5 | F6 | F7 | F8 | |-------. ,-------| LEFT | DOWN | UP | RIGHT| | | + * |------+------+------+------+------+------+------+------| | | |------+------+------+------+------+------+ + * | | | | F9 | F10 | F11 | F12 | | | | | Home | | | End | | | + * `-------------------------------------------------------/-------/ \------\-----------------------------------------' + * | | | | | / \ \ | | | | | + * | | | | | / \ \ | | | | | + * `----------------------------------' '------''---------------------------' + */ + [_LOWER] = LAYOUT_8_6( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, _______, _______, KC_LBRC, KC_RBRC, KC_BSLS, + _______, _______, _______, KC_F5, KC_F6, KC_F7, KC_F8, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, _______, _______, + _______, _______, _______, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,KC_HOME, _______, _______, KC_END, _______, _______, + _______,_______, _______, _______, _______, _______, _______, _______ + ), + + /* + * RAISE + * ,-------------------------------------------------------. ,-------------------------------------------------------. + * | | | | | | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | | | | F1 | F2 | F3 | F4 | | | | | PrevW| UP | NextW| | | | + * |------+------+------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | | | | F5 | F6 | F7 | F8 | |-------. ,-------| | | LEFT | DOWN | RIGHT| | | | + * |------+------+------+------+------+------+------+------| | | |------+------+------+------+------+------+------+------| + * | | | | F9 | F10 | F11 | F12 | | | | | | | | | | | | | + * `-------------------------------------------------------/-------/ \------\-------------------------------------------------------' + * | | | | | / \ \ | | | | | + * | | | | | / \ \ | | | | | + * `----------------------------------' '------''---------------------------' + */ + [_RAISE] = LAYOUT_8_6( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, _______,KC_PRVWD, KC_UP,KC_NXTWD, _______, + _______, _______, _______, KC_F5, KC_F6, KC_F7, KC_F8, _______, _______, _______, KC_LEFT, KC_DOWN,KC_RIGHT, _______, + _______, _______, _______, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,_______, _______, _______, _______, _______, _______, + _______,_______, _______, _______, _______, _______, _______, _______ + ), + + /* + * HRM + * ,-------------------------------------------------------. ,-------------------------------------------------------. + * | | | | | | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | | | |HRM_LG|HRM_LA|HRM_LC|HRM_LS| |-------. ,-------| |HRM_RS|HRM_RC|HRM_RA|HRM_RG| | | | + * |------+------+------+------+------+------+------+------| | | |------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | | | | | | | | + * `-------------------------------------------------------/-------/ \------\-------------------------------------------------------' + * | | | | | / \ \ | | | | | + * | | | | | / \ \ | | | | | + * `----------------------------------' '------''---------------------------' + */ + [_HRM] = LAYOUT_8_6( + _______, _______, _______, _______, _______, _______,_______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______,_______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, HRM_LG, HRM_LA, HRM_LC, HRM_LS, _______, _______, HRM_RS, HRM_RC, HRM_RA, HRM_RG, _______, + _______, _______, _______, _______, _______, _______,_______, _______, _______, _______,_______, _______, _______, _______, _______, _______, + _______,_______, _______, _______, _______, _______, _______, _______ + ), + + /* + * FN + * ,-------------------------------------------------------. ,-------------------------------------------------------. + * | | | | | | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | | | |QWERTY| | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------| |------+------+------+------+------+------+------+------| + * | | | | | | | | |-------. ,-------|KC_HRM| | | | | | | | + * |------+------+------+------+------+------+------+------| | | |------+------+------+------+------+------+------+------| + * | | | | | |COLEMAK| | | | | | | | | | | | | | + * `-------------------------------------------------------/-------/ \------\-------------------------------------------------------' + * | | | | | / \ \ | | | | | + * | | | | | / \ \ | | | | | + * `----------------------------------' '------''---------------------------' + */ + [_FN] = LAYOUT_8_6( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______,KC_QWRTY, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_HRM, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______,KC_COLMK, _______, _______, _______, _______,_______, _______, _______, _______, _______, _______, + _______,_______, _______, _______, _______, _______, _______, _______ + ), +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_QWRTY: + if (record->event.pressed) { + set_single_persistent_default_layer(_QWERTY); + } + return false; + case KC_COLMK: + if (record->event.pressed) { + set_single_persistent_default_layer(_COLEMAK); + } + return false; + case KC_HRM: + if (record->event.pressed) { + set_single_persistent_default_layer(_HRM); + } + return false; + case KC_PRVWD: + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_LEFT); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_LEFT); + } + break; + case KC_NXTWD: + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_RIGHT); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_RIGHT); + } + break; + } + return true; +} diff --git a/keyboards/keyprez/bison/keymaps/default_8_6/readme.md b/keyboards/keyprez/bison/keymaps/default_8_6/readme.md new file mode 100644 index 000000000000..b8557bbc8e50 --- /dev/null +++ b/keyboards/keyprez/bison/keymaps/default_8_6/readme.md @@ -0,0 +1 @@ +# The default keymap for bison diff --git a/keyboards/keyprez/bison/readme.md b/keyboards/keyprez/bison/readme.md new file mode 100644 index 000000000000..d537d98673e4 --- /dev/null +++ b/keyboards/keyprez/bison/readme.md @@ -0,0 +1,21 @@ +# bison + +![Imgur](https://i.imgur.com/FTOUHTqh.jpg) + +A split 60% ergonomic keyboard with a slight columnar stagger. Should provide an easy transition from a ortholinear keyboard to a split ergonomic keyboard. + +* Keyboard Maintainer: [csandven](https://github.com/csandven) +* Hardware Supported: Pro micro compatible boards +* Hardware Availability: *TBA* + +Make example for this keyboard (after setting up your build environment): + + make bison:default + +Flashing example for this keyboard: + + make bison:default:flash + +Simply click the reset button on the keyboard. Only the left button is needed if it is only a keymap update. + +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/keyprez/bison/rules.mk b/keyboards/keyprez/bison/rules.mk new file mode 100644 index 000000000000..a4e6e9000e5f --- /dev/null +++ b/keyboards/keyprez/bison/rules.mk @@ -0,0 +1,22 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +SPLIT_KEYBOARD = yes +ENCODER_ENABLE = yes diff --git a/keyboards/keyprez/corgi/info.json b/keyboards/keyprez/corgi/info.json index 4a40c9c70303..04d89e6b1bf6 100644 --- a/keyboards/keyprez/corgi/info.json +++ b/keyboards/keyprez/corgi/info.json @@ -2,59 +2,62 @@ "keyboard_name": "corgi", "url": "", "maintainer": "Christian Sandven", - "width": 12, - "height": 4, "layouts": { "LAYOUT": { "layout": [ - { "w": 1, "x": 0, "y": 0 }, - { "w": 1, "x": 1, "y": 0 }, - { "w": 1, "x": 2, "y": 0 }, - { "w": 1, "x": 3, "y": 0 }, - { "w": 1, "x": 4, "y": 0 }, - { "w": 1, "x": 5, "y": 0 }, - { "w": 1, "x": 6, "y": 0 }, - { "w": 1, "x": 7, "y": 0 }, - { "w": 1, "x": 8, "y": 0 }, - { "w": 1, "x": 9, "y": 0 }, - { "w": 1, "x": 10, "y": 0 }, - { "w": 1, "x": 11, "y": 0 }, - { "w": 1, "x": 0, "y": 1 }, - { "w": 1, "x": 1, "y": 1 }, - { "w": 1, "x": 2, "y": 1 }, - { "w": 1, "x": 3, "y": 1 }, - { "w": 1, "x": 4, "y": 1 }, - { "w": 1, "x": 5, "y": 1 }, - { "w": 1, "x": 6, "y": 1 }, - { "w": 1, "x": 7, "y": 1 }, - { "w": 1, "x": 8, "y": 1 }, - { "w": 1, "x": 9, "y": 1 }, - { "w": 1, "x": 10, "y": 1 }, - { "w": 1, "x": 11, "y": 1 }, - { "w": 1, "x": 0, "y": 2 }, - { "w": 1, "x": 1, "y": 2 }, - { "w": 1, "x": 2, "y": 2 }, - { "w": 1, "x": 3, "y": 2 }, - { "w": 1, "x": 4, "y": 2 }, - { "w": 1, "x": 5, "y": 2 }, - { "w": 1, "x": 6, "y": 2 }, - { "w": 1, "x": 7, "y": 2 }, - { "w": 1, "x": 8, "y": 2 }, - { "w": 1, "x": 9, "y": 2 }, - { "w": 1, "x": 10, "y": 2 }, - { "w": 1, "x": 11, "y": 2 }, - { "w": 1, "x": 0, "y": 3 }, - { "w": 1, "x": 1, "y": 3 }, - { "w": 1, "x": 2, "y": 3 }, - { "w": 1, "x": 3, "y": 3 }, - { "w": 1, "x": 4, "y": 3 }, - { "w": 1, "x": 5, "y": 3 }, - { "w": 1, "x": 6, "y": 3 }, - { "w": 1, "x": 7, "y": 3 }, - { "w": 1, "x": 8, "y": 3 }, - { "w": 1, "x": 9, "y": 3 }, - { "w": 1, "x": 10, "y": 3 }, - { "w": 1, "x": 11, "y": 3 } + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":6, "y":1}, + {"x":7, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + {"x":12, "y":1}, + + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + {"x":6, "y":2}, + {"x":7, "y":2}, + {"x":8, "y":2}, + {"x":9, "y":2}, + {"x":10, "y":2}, + {"x":11, "y":2}, + {"x":12, "y":2}, + + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3}, + {"x":6, "y":3}, + {"x":7, "y":3}, + {"x":8, "y":3}, + {"x":9, "y":3}, + {"x":10, "y":3}, + {"x":11, "y":3}, + {"x":12, "y":3}, + + {"x":0, "y":3} ] } } diff --git a/keyboards/keyprez/corgi/keymaps/default/keymap.c b/keyboards/keyprez/corgi/keymaps/default/keymap.c index a1f816449174..757b3fd1db01 100644 --- a/keyboards/keyprez/corgi/keymaps/default/keymap.c +++ b/keyboards/keyprez/corgi/keymaps/default/keymap.c @@ -18,6 +18,7 @@ // Defines names for use in layer keycodes and the keymap enum layer_names { _QWERTY, + _COLEMAK, _BASE, _FN, _LOWER, @@ -25,6 +26,11 @@ enum layer_names { _CMD, }; +enum corgi_keycodes { + QWERTY = SAFE_RANGE, + COLEMAK +}; + #define LOWER MO(_LOWER) #define RAISE MO(_RAISE) #define CMD MO(_CMD) @@ -49,6 +55,25 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_MUTE ), + /* Colemak + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Esc | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ + [_COLEMAK] = LAYOUT( + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, + KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , + KC_LCTL, KC_LGUI, KC_LALT, CMD, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, + KC_MUTE + ), + /* Lower * ,-----------------------------------------------------------------------------------. * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | @@ -99,9 +124,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_CMD] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, KC_PMNS, + _______, QWERTY, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, KC_PMNS, _______, _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_PPLS, - _______, _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, _______, + _______, _______, _______, COLEMAK, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT, _______, _______ ), @@ -111,3 +136,21 @@ bool encoder_update_user(uint8_t index, bool clockwise) { tap_code(clockwise ? KC_VOLU : KC_VOLD); return true; } + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + set_single_persistent_default_layer(_QWERTY); + } + return false; + break; + case COLEMAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_COLEMAK); + } + return false; + break; + } + return true; +} diff --git a/keyboards/keyprez/corgi/rules.mk b/keyboards/keyprez/corgi/rules.mk index fb12719ce81e..bc3e5b4e942d 100644 --- a/keyboards/keyprez/corgi/rules.mk +++ b/keyboards/keyprez/corgi/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = yes diff --git a/keyboards/keyprez/rhino/config.h b/keyboards/keyprez/rhino/config.h new file mode 100644 index 000000000000..b89be8fdc2b3 --- /dev/null +++ b/keyboards/keyprez/rhino/config.h @@ -0,0 +1,115 @@ +/* +Copyright 2021 Christian Sandven + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x0000 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Christian Sandven +#define PRODUCT rhino + +/* key matrix size */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 7 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS { B3, B2, B6, B1, F4, F5, F6, F7 } +#define MATRIX_COL_PINS { D3, D2, D4, D7, E6, B4, B5 } + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +#define ENCODERS_PAD_A { D1 } +#define ENCODERS_PAD_B { D0 } +#define ENCODER_RESOLUTION 4 + +#define AUDIO_PIN C6 +#define MUSIC_MAP + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 2 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/keyprez/rhino/info.json b/keyboards/keyprez/rhino/info.json new file mode 100644 index 000000000000..fbe403fc3522 --- /dev/null +++ b/keyboards/keyprez/rhino/info.json @@ -0,0 +1,185 @@ +{ + "keyboard_name": "rhino", + "url": "", + "maintainer": "Christian Sandven", + "layouts": { + "LAYOUT_ortho_2x2u": { + "layout": [ + {"x": 12.5, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"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.5}, + {"x": 1.5, "y": 2}, + {"x": 2.5, "y": 2}, + {"x": 3.5, "y": 2}, + {"x": 4.5, "y": 2}, + {"x": 5.5, "y": 2}, + {"x": 6.5, "y": 2}, + {"x": 7.5, "y": 2}, + {"x": 8.5, "y": 2}, + {"x": 9.5, "y": 2}, + {"x": 10.5, "y": 2}, + {"x": 11.5, "y": 2}, + {"x": 12.5, "y": 2}, + {"x": 13.5, "y": 2, "w": 1.5}, + + {"x": 0, "y": 3, "w": 1.5}, + {"x": 1.5, "y": 3}, + {"x": 2.5, "y": 3}, + {"x": 3.5, "y": 3}, + {"x": 4.5, "y": 3}, + {"x": 5.5, "y": 3}, + {"x": 6.5, "y": 3}, + {"x": 7.5, "y": 3}, + {"x": 8.5, "y": 3}, + {"x": 9.5, "y": 3}, + {"x": 10.5, "y": 3}, + {"x": 11.5, "y": 3}, + {"x": 12.5, "y": 3}, + {"x": 13.5, "y": 3, "w": 1.5}, + + {"x": 1.5, "y": 4}, + {"x": 2.5, "y": 4}, + {"x": 3.5, "y": 4}, + {"x": 4.5, "y": 4}, + {"x": 5.5, "y": 4, "w": 2}, + {"x": 7.5, "y": 4, "w": 2}, + {"x": 9.5, "y": 4}, + {"x": 10.5, "y": 4}, + {"x": 11.5, "y": 4}, + {"x": 12.5, "y": 4} + ] + }, + + "LAYOUT_ergo_2x2u": { + "layout": [ + {"x": 12.5, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1, "h": 1.5}, + {"x": 7.5, "y": 1, "h": 1.5}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"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.5}, + {"x": 1.5, "y": 2}, + {"x": 2.5, "y": 2}, + {"x": 3.5, "y": 2}, + {"x": 4.5, "y": 2}, + {"x": 5.5, "y": 2}, + {"x": 6.5, "y": 2.5, "h": 1.5}, + {"x": 7.5, "y": 2.5, "h": 1.5}, + {"x": 8.5, "y": 2}, + {"x": 9.5, "y": 2}, + {"x": 10.5, "y": 2}, + {"x": 11.5, "y": 2}, + {"x": 12.5, "y": 2}, + {"x": 13.5, "y": 2, "w": 1.5}, + + {"x": 0, "y": 3, "w": 1.5}, + {"x": 1.5, "y": 3}, + {"x": 2.5, "y": 3}, + {"x": 3.5, "y": 3}, + {"x": 4.5, "y": 3}, + {"x": 5.5, "y": 3}, + {"x": 8.5, "y": 3}, + {"x": 9.5, "y": 3}, + {"x": 10.5, "y": 3}, + {"x": 11.5, "y": 3}, + {"x": 12.5, "y": 3}, + {"x": 13.5, "y": 3, "w": 1.5}, + + {"x": 1.5, "y": 4}, + {"x": 2.5, "y": 4}, + {"x": 3.5, "y": 4}, + {"x": 4.5, "y": 4}, + {"x": 5.5, "y": 4, "w": 2}, + {"x": 7.5, "y": 4, "w": 2}, + {"x": 9.5, "y": 4}, + {"x": 10.5, "y": 4}, + {"x": 11.5, "y": 4}, + {"x": 12.5, "y": 4} + ] + }, + + "LAYOUT_ortho_7u": { + "layout": [ + {"x": 12.5, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"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.5}, + {"x": 1.5, "y": 2}, + {"x": 2.5, "y": 2}, + {"x": 3.5, "y": 2}, + {"x": 4.5, "y": 2}, + {"x": 5.5, "y": 2}, + {"x": 6.5, "y": 2}, + {"x": 7.5, "y": 2}, + {"x": 8.5, "y": 2}, + {"x": 9.5, "y": 2}, + {"x": 10.5, "y": 2}, + {"x": 11.5, "y": 2}, + {"x": 12.5, "y": 2, "w": 1.5}, + {"x": 14, "y": 2}, + + {"x": 0, "y": 3, "w": 1.5}, + {"x": 1.5, "y": 3}, + {"x": 2.5, "y": 3}, + {"x": 3.5, "y": 3}, + {"x": 4.5, "y": 3}, + {"x": 5.5, "y": 3}, + {"x": 6.5, "y": 3}, + {"x": 7.5, "y": 3}, + {"x": 8.5, "y": 3}, + {"x": 9.5, "y": 3}, + {"x": 10.5, "y": 3}, + {"x": 11.5, "y": 3, "w": 1.5}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 1.5, "y": 4}, + {"x": 2.5, "y": 4, "w": 1.5}, + {"x": 4, "y": 4, "w": 7}, + {"x": 11, "y": 4, "w": 1.5}, + {"x": 12.5, "y": 4} + ] + } + } +} diff --git a/keyboards/keyprez/rhino/keymaps/default/keymap.c b/keyboards/keyprez/rhino/keymaps/default/keymap.c new file mode 100644 index 000000000000..c58c3e8ccb4f --- /dev/null +++ b/keyboards/keyprez/rhino/keymaps/default/keymap.c @@ -0,0 +1,116 @@ +/* Copyright 2021 Christian Sandven + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN, + _LOWER, + _RAISE +}; + +#define LOWER MO(_LOWER) +#define FN MO(_FN) +#define TAB_CTL MT(MOD_LCTL, KC_TAB) +#define SPC_RAISE LT(_RAISE, KC_SPC) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* Base Layer + * .-----------------------------------------------------------------------------------------------------------------------------. + * | KC_MUTE | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | GESC | Q | W | E | R | T | [ | ] | Y | U | I | O | P | ' | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------| + * | TAB | A | S | D | F | G | HOME | PG UP | H | J | K | L | ; | BACKSP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------| + * | LSHIFT | Z | X | C | V | B | END | PG DN | N | M | , | . | / | ENTER | + * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+--------| + * | | LGUI | FN | LALT | LOWER | SPACE | SPACE | LEFT | UP | DOWN | RIGHT | | + * '-----------------------------------------------------------------------------------------------------------------------------' + */ + [_BASE] = LAYOUT_ortho_2x2u( + KC_MUTE, + KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_QUOT, + TAB_CTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_HOME, KC_PGUP, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_BSPC, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_END, KC_PGDN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_LGUI, FN, KC_LALT, LOWER, KC_SPC, KC_SPC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT + ), + + /* FN Layer + * .-----------------------------------------------------------------------------------------------------------------------------. + * | KC_APP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | ` | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------| + * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | | | DEL | PRT SC | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------| + * | | | | | | | | | | | | | | RESET | + * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+--------| + * | | | | | | | | MUTE | VOL UP |VOL DOWN| PAUSE | | + * '-----------------------------------------------------------------------------------------------------------------------------' + */ + [_FN] = LAYOUT_ortho_2x2u( + KC_APP, + 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_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, KC_DEL, KC_PSCR, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, + MU_TOG, MU_MOD, _______, _______, _______, _______, KC_MUTE, KC_VOLU, KC_VOLD, KC_MPLY + ), + + /* LOWER Layer + * .-----------------------------------------------------------------------------------------------------------------------------. + * | KC_APP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | DEL | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------| + * | | F1 | F2 | F3 | F4 | F5 | F6 | | | | | | | INSERT | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------| + * | | F7 | F8 | F9 | F10 | F11 | F12 | ISO # | ISO / | | | | \ | | + * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+--------| + * | | | | | | | | HOME | PG UP | PG DN | END | | + * '-----------------------------------------------------------------------------------------------------------------------------' + */ + [_LOWER] = LAYOUT_ortho_2x2u( + KC_APP, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, _______, _______, _______, _______, _______, KC_INS, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, KC_BSLS, _______, + _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_PGDOWN, KC_END + ), + + /* RAISE Layer + * .-----------------------------------------------------------------------------------------------------------------------------. + * | KC_APP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | - | = | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------| + * | | F1 | F2 | F3 | F4 | F5 | F6 | - | = | { | } | | | DEL | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------| + * | | F7 | F8 | F9 | F10 | F11 | F12 | ISO ~ | ISO | | | | | | INSERT | + * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+--------| + * | | | | | | | | | | | | | + * '-----------------------------------------------------------------------------------------------------------------------------' + */ + [_RAISE] = LAYOUT_ortho_2x2u( + KC_APP, + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_MINS, KC_EQL, KC_PIPE, + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, _______, _______, KC_DEL, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), _______, _______, _______, _______, KC_INS, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/keyprez/rhino/keymaps/default/readme.md b/keyboards/keyprez/rhino/keymaps/default/readme.md new file mode 100644 index 000000000000..2a9de9d74632 --- /dev/null +++ b/keyboards/keyprez/rhino/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for rhino diff --git a/keyboards/keyprez/rhino/keymaps/default_7u/keymap.c b/keyboards/keyprez/rhino/keymaps/default_7u/keymap.c new file mode 100644 index 000000000000..a24f45db65a4 --- /dev/null +++ b/keyboards/keyprez/rhino/keymaps/default_7u/keymap.c @@ -0,0 +1,117 @@ +/* Copyright 2021 Christian Sandven + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN, + _LOWER, + _RAISE +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) +#define FN MO(_FN) +#define ESC_CTL MT(MOD_LCTL, KC_ESC) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* Base Layer + * .-----------------------------------------------------------------------------------------------------------------------------. + * | KC_MUTE | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------| + * | ESC | A | S | D | F | G | H | J | K | L | ; | ' | BACKSP | PG UP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------| + * | LSHIFT | Z | X | C | V | B | N | M | , | . | / | ENTER | FN | PG DN | + * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+--------| + * | | LGUI | LALT | SPACE | RALT | RGUI | | + * '-----------------------------------------------------------------------------------------------------------------------------' + */ + [_BASE] = LAYOUT_ortho_7u( + KC_MUTE, + 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, + ESC_CTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSPC, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, FN, KC_PGDN, + LOWER, KC_LALT, KC_SPC, RAISE, KC_RGUI + ), + + /* FN Layer + * .-----------------------------------------------------------------------------------------------------------------------------. + * | KC_APP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | ` | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------| + * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | | | DEL | PRT SC | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------| + * | | | | | | | | | | | | | | RESET | + * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+--------| + * | | MU TOG | MU MOD | | | | | + * '-----------------------------------------------------------------------------------------------------------------------------' + */ + [_FN] = LAYOUT_ortho_7u( + KC_APP, + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, _______, _______, KC_UP, _______, _______, _______, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_DEL, KC_PSCR, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, + MU_TOG, MU_MOD, _______, _______, _______ + ), + + /* LOWER Layer + * .-----------------------------------------------------------------------------------------------------------------------------. + * | KC_APP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------| + * | | F1 | F2 | F3 | F4 | F5 | LEFT | DOWN | UP | RIGHT | | | DEL | INSERT | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------| + * | | F7 | F8 | F9 | F10 | F11 | F12 | ISO # | ISO / | | | | | \ | | + * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+--------| + * | | | F6 | | | | | + * '-----------------------------------------------------------------------------------------------------------------------------' + */ + [_LOWER] = LAYOUT_ortho_7u( + KC_APP, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_PIPE, + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, KC_DEL, KC_INS, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, _______, KC_BSLS, + _______, KC_F6, _______, _______, _______ + ), + + /* RAISE Layer + * .-----------------------------------------------------------------------------------------------------------------------------. + * | KC_APP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | - | = | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------| + * | | F1 | F2 | F3 | F4 | F5 | F6 | - | = | { | } | | DEL | INSERT | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------| + * | | F7 | F8 | F9 | F10 | F11 | F12 | ISO ~ | ISO | | | | | | \ | | + * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+--------| + * | | | | | | | | + * '-----------------------------------------------------------------------------------------------------------------------------' + */ + [_RAISE] = LAYOUT_ortho_7u( + KC_APP, + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_MINS, KC_EQL, KC_PIPE, + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, _______, KC_DEL, KC_INS, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), _______, _______, _______, _______, KC_BSLS, + _______, _______, _______, _______, _______ + ), +}; + diff --git a/keyboards/keyprez/rhino/keymaps/default_7u/readme.md b/keyboards/keyprez/rhino/keymaps/default_7u/readme.md new file mode 100644 index 000000000000..1b930c1e7d7d --- /dev/null +++ b/keyboards/keyprez/rhino/keymaps/default_7u/readme.md @@ -0,0 +1 @@ +# The default 7u keymap for rhino diff --git a/keyboards/keyprez/rhino/keymaps/default_ergo/keymap.c b/keyboards/keyprez/rhino/keymaps/default_ergo/keymap.c new file mode 100644 index 000000000000..ac73e3d79606 --- /dev/null +++ b/keyboards/keyprez/rhino/keymaps/default_ergo/keymap.c @@ -0,0 +1,124 @@ +/* Copyright 2021 Christian Sandven + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN, + _LOWER, + _RAISE +}; + +#define LOWER MO(_LOWER) +#define FN MO(_FN) +#define TAB_CTL MT(MOD_LCTL, KC_TAB) +#define SPC_RAISE LT(_RAISE, KC_SPC) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* Base Layer + * .-----------------------------------------------------------------------------------------------------------------------------. + * | KC_MUTE | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | GESC | Q | W | E | R | T | | | Y | U | I | O | P | ' | + * |--------+--------+--------+--------+--------+--------+ [ + ] +--------+--------+--------+-----------------+--------| + * | TAB | A | S | D | F | G |--------|--------| H | J | K | L | ; | BACKSP | + * |--------+--------+--------+--------+--------+--------+ HOME + END +--------+--------+--------------------------+--------| + * | LSHIFT | Z | X | C | V | B | | | N | M | , | . | / | ENTER | + * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+--------| + * | | LGUI | FN | LALT | LOWER | SPACE | SPACE | LEFT | UP | DOWN | RIGHT | | + * '-----------------------------------------------------------------------------------------------------------------------------' + */ + [_BASE] = LAYOUT_ergo_2x2u( + KC_MUTE, + KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_QUOT, + TAB_CTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_HOME, KC_END, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_BSPC, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_LGUI, FN, KC_LALT, LOWER, KC_SPC, SPC_RAISE, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT + ), + + /* FN Layer + * .-----------------------------------------------------------------------------------------------------------------------------. + * | KC_APP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | ` | F1 | F2 | F3 | F4 | F5 | | | F8 | F9 | F10 | F11 | F12 | | + * |--------+--------+--------+--------+--------+--------+ F6 + F7 +--------+--------+--------+-----------------+---------| + * | | F7 | F8 | F9 | F10 | F11 |--------|--------| | | | | | PRT SC | + * |--------+--------+--------+--------+--------+--------+ F12 + +--------+--------+--------------------------+--------| + * | | | | | | | | | | | | | | RESET | + * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+--------| + * | | MU TOG | MU MOD | | | | | MUTE | VOL UP |VOL DOWN| PAUSE | | + * '-----------------------------------------------------------------------------------------------------------------------------' + */ + [_FN] = LAYOUT_ergo_2x2u( + KC_APP, + 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_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, KC_PSCR, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, + MU_TOG, MU_MOD, _______, _______, _______, _______, KC_MUTE, KC_VOLU, KC_VOLD, KC_MPLY + ), + + /* LOWER Layer + * .-----------------------------------------------------------------------------------------------------------------------------. + * | KC_APP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | ` | 1 | 2 | 3 | 4 | 5 | | | 8 | 9 | 0 | - | = | | | + * |--------+--------+--------+--------+--------+--------+ 6 + 7 +--------+--------+--------+-----------------+--------| + * | | F1 | F2 | F3 | F4 | F5 |--------|--------| | | | | DEL | INSERT | + * |--------+--------+--------+--------+--------+--------+ F12 + +--------+--------+--------------------------+--------| + * | | F7 | F8 | F9 | F10 | F11 | | | | | | | \ | | + * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+--------| + * | | | | | | | | HOME | PG UP | PG DN | END | | + * '-----------------------------------------------------------------------------------------------------------------------------' + */ + [_LOWER] = LAYOUT_ergo_2x2u( + KC_APP, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_PIPE, + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F12, _______, _______, _______, _______, _______, KC_DEL, KC_INS, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, _______, _______, KC_BSLS, _______, + _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_PGDOWN, KC_END + ), + + /* RAISE Layer + * .-----------------------------------------------------------------------------------------------------------------------------. + * | KC_APP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | ~ | ! | @ | # | $ | % | | | * | ( | ) | - | = | | | + * |--------+--------+--------+--------+--------+--------+ ^ + & +--------+--------+--------+-----------------+--------| + * | | F1 | F2 | F3 | F4 | F5 |--------|--------| = | { | } | | DEL | INSERT | + * |--------+--------+--------+--------+--------+--------+ F12 + _ +--------+--------+--------------------------+--------| + * | | F7 | F8 | F9 | F10 | F11 | | | ISO ~ | ISO | | | | \ | | + * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+--------| + * | | | | | | | | | | | | | + * '-----------------------------------------------------------------------------------------------------------------------------' + */ + [_RAISE] = LAYOUT_ergo_2x2u( + KC_APP, + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_MINS, KC_EQL, KC_PIPE, + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F12, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, _______, KC_DEL, KC_INS, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, S(KC_NUHS), S(KC_NUBS), _______, _______, _______, KC_BSLS, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; + +const uint8_t music_map[MATRIX_ROWS][MATRIX_COLS] = LAYOUT_ergo_2x2u( + 0, + 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 3, 0, 6, 8, 9, 11, 13, 15, 0, 18, 20, 0, + 0, 0, 2, 4, 5, 7, 12, 14, 16, 17, 19, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +); diff --git a/keyboards/keyprez/rhino/keymaps/default_ergo/readme.md b/keyboards/keyprez/rhino/keymaps/default_ergo/readme.md new file mode 100644 index 000000000000..2a9de9d74632 --- /dev/null +++ b/keyboards/keyprez/rhino/keymaps/default_ergo/readme.md @@ -0,0 +1 @@ +# The default keymap for rhino diff --git a/keyboards/keyprez/rhino/readme.md b/keyboards/keyprez/rhino/readme.md new file mode 100644 index 000000000000..d63c1b23b049 --- /dev/null +++ b/keyboards/keyprez/rhino/readme.md @@ -0,0 +1,22 @@ +# rhino + +Rhino is a 50 percent keyboard taking inspiration from the Boardwalk keyboard. It supports some of the layouts the bordwalk does, but in a smaller form factor. The number row is removed and replaced with through hole components. + +![](https://i.imgur.com/OqCJZWah.jpg) + + +* Keyboard Maintainer: [Christian Sandven](https://github.com/csandven) +* Hardware Supported: *Pro micro compatible boards* +* Hardware Availability: *TBA* + +Make example for this keyboard (after setting up your build environment): + + make keyprez/rhino:default + +Flashing example for this keyboard: + + make keyprez/rhino:default:flash + +You can then press the reset button on the top right to flash the keyboard. + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/keyprez/rhino/rhino.c b/keyboards/keyprez/rhino/rhino.c new file mode 100644 index 000000000000..31302eff5b71 --- /dev/null +++ b/keyboards/keyprez/rhino/rhino.c @@ -0,0 +1,32 @@ +/* Copyright 2021 Christian Sandven + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "rhino.h" + +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + tap_code(clockwise ? KC_VOLU : KC_VOLD); + return true; +} + +__attribute__ ((weak)) +const uint8_t music_map[MATRIX_ROWS][MATRIX_COLS] = LAYOUT_ortho_2x2u( + 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 3, 0, 6, 8, 10, 0, 13, 15, 0, 18, 20, 0, + 0, 0, 2, 4, 5, 7, 9, 11, 12, 14, 16, 17, 19, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +); diff --git a/keyboards/keyprez/rhino/rhino.h b/keyboards/keyprez/rhino/rhino.h new file mode 100644 index 000000000000..1547717a87e1 --- /dev/null +++ b/keyboards/keyprez/rhino/rhino.h @@ -0,0 +1,80 @@ +/* Copyright 2021 Christian Sandven + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT_ortho_2x2u( \ + k70, \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, \ + k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, \ + k60, k61, k62, k63, k64, k65, k66, k67, k68, k69 \ +) { \ + { k00, k01, k02, k03, k04, k05, k06 }, \ + { k20, k21, k22, k23, k24, k25, k26 }, \ + { k40, k41, k42, k43, k44, k45, k46 }, \ + { KC_NO, k60, k61, k62, k63, KC_NO, k64 }, \ + { k07, k08, k09, k10, k11, k12, k13 }, \ + { k27, k28, k29, k30, k31, k32, k33 }, \ + { k47, k48, k49, k50, k51, k52, k53 }, \ + { k65, KC_NO, k66, k67, k68, k69, k70 } \ +} + +#define LAYOUT_ergo_2x2u( \ + k70, \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, \ + k40, k41, k42, k43, k44, k45, k48, k49, k50, k51, k52, k53, \ + k60, k61, k62, k63, k64, k65, k66, k67, k68, k69 \ +) { \ + { k00, k01, k02, k03, k04, k05, k06 }, \ + { k20, k21, k22, k23, k24, k25, KC_NO }, \ + { k40, k41, k42, k43, k44, k45, k26 }, \ + { KC_NO, k60, k61, k62, k63, KC_NO, k64 }, \ + { k07, k08, k09, k10, k11, k12, k13 }, \ + { KC_NO, k28, k29, k30, k31, k32, k33 }, \ + { k27, k48, k49, k50, k51, k52, k53 }, \ + { k65, KC_NO, k66, k67, k68, k69, k70 } \ +} + +#define LAYOUT_ortho_7u( \ + k65, \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, \ + k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, \ + k60, k61, k62, k63, k64 \ +) { \ + { k00, k01, k02, k03, k04, k05, k06 }, \ + { k20, k21, k22, k23, k24, k25, k26 }, \ + { k40, k41, k42, k43, k44, k45, k46 }, \ + { KC_NO, k60, k61, KC_NO, KC_NO, KC_NO, k62 }, \ + { k07, k08, k09, k10, k11, k12, k13 }, \ + { k27, k28, k29, k30, k31, k32, k33 }, \ + { k47, k48, k49, k50, k51, k52, k53 }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, k63, k64, k65 } \ +} + diff --git a/keyboards/keyprez/rhino/rules.mk b/keyboards/keyprez/rhino/rules.mk new file mode 100644 index 000000000000..321bdea8c01b --- /dev/null +++ b/keyboards/keyprez/rhino/rules.mk @@ -0,0 +1,20 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = yes # Audio output +ENCODER_ENABLE = yes diff --git a/keyboards/keysofkings/twokey/config.h b/keyboards/keysofkings/twokey/config.h index 9b77fa73e243..29612187f808 100755 --- a/keyboards/keysofkings/twokey/config.h +++ b/keyboards/keysofkings/twokey/config.h @@ -35,10 +35,9 @@ #define UNUSED_PINS -#define ENCODERS_PAD_A { E6 } -#define ENCODERS_PAD_B { D7 } +#define ENCODERS_PAD_A { D7 } +#define ENCODERS_PAD_B { E6 } #define ENCODER_RESOLUTION 1 -#define ENCODER_DIRECTION_FLIP /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW diff --git a/keyboards/keysofkings/twokey/info.json b/keyboards/keysofkings/twokey/info.json index d7dabbc946e8..979a8e2fc18a 100644 --- a/keyboards/keysofkings/twokey/info.json +++ b/keyboards/keysofkings/twokey/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Twokey", "url": "", "maintainer": "Keys of Kings", - "width": 2, - "height": 2.5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/keysofkings/twokey/rules.mk b/keyboards/keysofkings/twokey/rules.mk index d892fd2b7be2..240f15f22ef0 100755 --- a/keyboards/keysofkings/twokey/rules.mk +++ b/keyboards/keysofkings/twokey/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 = yes # Audio output ENCODER_ENABLE = yes diff --git a/keyboards/kikoslab/kl90/info.json b/keyboards/kikoslab/kl90/info.json index c0c61fe96911..1354469367c2 100644 --- a/keyboards/kikoslab/kl90/info.json +++ b/keyboards/kikoslab/kl90/info.json @@ -2,8 +2,6 @@ "keyboard_name": "KL-90", "url": "www.kikoslab.com", "maintainer": "swiftrax", - "width": 18, - "height": 6.75, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/kikoslab/kl90/keymaps/default/keymap.c b/keyboards/kikoslab/kl90/keymaps/default/keymap.c index 04af4ba9257c..4dbffe8f7725 100644 --- a/keyboards/kikoslab/kl90/keymaps/default/keymap.c +++ b/keyboards/kikoslab/kl90/keymaps/default/keymap.c @@ -61,7 +61,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { return true; } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_0; @@ -140,7 +140,8 @@ static void render_anim(void){ } } -void oled_task_user(void) { +bool oled_task_user(void) { render_anim(); + return false; } #endif diff --git a/keyboards/kikoslab/kl90/keymaps/via/keymap.c b/keyboards/kikoslab/kl90/keymaps/via/keymap.c index 04af4ba9257c..4dbffe8f7725 100644 --- a/keyboards/kikoslab/kl90/keymaps/via/keymap.c +++ b/keyboards/kikoslab/kl90/keymaps/via/keymap.c @@ -61,7 +61,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { return true; } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_0; @@ -140,7 +140,8 @@ static void render_anim(void){ } } -void oled_task_user(void) { +bool oled_task_user(void) { render_anim(); + return false; } #endif diff --git a/keyboards/kikoslab/kl90/rules.mk b/keyboards/kikoslab/kl90/rules.mk index 3d7e4db92910..15654aaff445 100644 --- a/keyboards/kikoslab/kl90/rules.mk +++ b/keyboards/kikoslab/kl90/rules.mk @@ -7,18 +7,16 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = yes -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/kindakeyboards/conone65/info.json b/keyboards/kindakeyboards/conone65/info.json index 65716ed0ae85..32644b430d2c 100644 --- a/keyboards/kindakeyboards/conone65/info.json +++ b/keyboards/kindakeyboards/conone65/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Conone 65", "url": "https://kindakeyboards.be/conone65", "maintainer": "evyd13", - "width": 16, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/kindakeyboards/conone65/rules.mk b/keyboards/kindakeyboards/conone65/rules.mk index 7210ffcf0f48..bb095c2d7bf4 100644 --- a/keyboards/kindakeyboards/conone65/rules.mk +++ b/keyboards/kindakeyboards/conone65/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 -LAYOUTS = 65_ansi 65_ansi_split_bs 65_iso 65_iso_split_bs \ No newline at end of file +LAYOUTS = 65_ansi 65_ansi_split_bs 65_iso diff --git a/keyboards/kinesis/alvicstep/alvicstep.c b/keyboards/kinesis/alvicstep/alvicstep.c index fba9f5136fef..735032d6a426 100644 --- a/keyboards/kinesis/alvicstep/alvicstep.c +++ b/keyboards/kinesis/alvicstep/alvicstep.c @@ -70,21 +70,6 @@ void blink_all_leds(void) matrix_init_user(); } - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - void led_set_kb(uint8_t usb_led) { // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here @@ -101,5 +86,3 @@ void led_set_kb(uint8_t usb_led) { led_set_user(usb_led); } - - diff --git a/keyboards/kinesis/alvicstep/alvicstep.h b/keyboards/kinesis/alvicstep/alvicstep.h index 169012faf5ce..053698770ab6 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 73aa4dd4dcba..8a656264eef5 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" @@ -23,7 +22,7 @@ * */ //Passed through the port multipler, so 4 pins =16 -#define MATRIX_ROW_PINS { F0,F1, F2, F3 } +#define MATRIX_ROW_PINS { F0, F1, F2, F3, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN } // May be upside down. #define MATRIX_COL_PINS { B0,B1, B2, B3, B4, B5, B6, B7 } @@ -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 c5a89d453320..b04d325903bd 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once /* USB Device descriptor parameter */ #define VENDOR_ID 0xFEED @@ -61,54 +60,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -126,5 +77,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -#endif diff --git a/keyboards/kinesis/info.json b/keyboards/kinesis/info.json index c90d3b6254ee..93259d06bf74 100644 --- a/keyboards/kinesis/info.json +++ b/keyboards/kinesis/info.json @@ -2,16 +2,12 @@ "keyboard_name": "Kinesis", "url": "", "maintainer": "qmk", - "width": 15.5, - "height": 9, "layouts": { "LAYOUT": { - "key_count": 86, "layout": [{"label":"Esc", "x":0, "y":0, "w":0.69, "h":0.85}, {"label":"F1", "x":0.7, "y":0, "w":0.69, "h":0.85}, {"label":"F2", "x":1.39, "y":0, "w":0.69, "h":0.85}, {"label":"F3", "x":2.09, "y":0, "w":0.69, "h":0.85}, {"label":"F4", "x":2.78, "y":0, "w":0.69, "h":0.85}, {"label":"F5", "x":3.48, "y":0, "w":0.69, "h":0.85}, {"label":"F6", "x":4.17, "y":0, "w":0.69, "h":0.85}, {"label":"F7", "x":4.87, "y":0, "w":0.69, "h":0.85}, {"label":"F8", "x":5.56, "y":0, "w":0.69, "h":0.85}, {"label":"+", "x":0, "y":1.25, "w":1.25}, {"label":"!", "x":1.25, "y":1.25}, {"label":"@", "x":2.25, "y":1}, {"label":"#", "x":3.25, "y":1}, {"label":"$", "x":4.25, "y":1}, {"label":"%", "x":5.25, "y":1}, {"label":"Tab", "x":0, "y":2.25, "w":1.25}, {"label":"Q", "x":1.25, "y":2.25}, {"label":"W", "x":2.25, "y":2}, {"label":"E", "x":3.25, "y":2}, {"label":"R", "x":4.25, "y":2}, {"label":"T", "x":5.25, "y":2}, {"label":"Caps Lock", "x":0, "y":3.25, "w":1.25}, {"label":"A", "x":1.25, "y":3.25}, {"label":"S", "x":2.25, "y":3}, {"label":"D", "x":3.25, "y":3}, {"label":"F", "x":4.25, "y":3}, {"label":"G", "x":5.25, "y":3}, {"label":"Shift", "x":0, "y":4.25, "w":1.25}, {"label":"Z", "x":1.25, "y":4.25}, {"label":"X", "x":2.25, "y":4}, {"label":"C", "x":3.25, "y":4}, {"label":"V", "x":4.25, "y":4}, {"label":"B", "x":5.25, "y":4}, {"label":"~", "x":1.25, "y":5.25}, {"label":"|", "x":2.25, "y":5}, {"label":"←", "x":3.25, "y":5}, {"label":"→", "x":4.25, "y":5}, {"label":"Ctrl", "x":5.25, "y":6}, {"label":"Alt", "x":6.25, "y":6}, {"label":"Home", "x":6.25, "y":7}, {"label":"Back Space", "x":4.25, "y":7, "h":2}, {"label":"Delete", "x":5.25, "y":7, "h":2}, {"label":"End", "x":6.25, "y":8}, {"label":"F9", "x":9.25, "y":0, "w":0.69, "h":0.85}, {"label":"F10", "x":9.95, "y":0, "w":0.69, "h":0.85}, {"label":"F11", "x":10.64, "y":0, "w":0.69, "h":0.85}, {"label":"F12", "x":11.34, "y":0, "w":0.69, "h":0.85}, {"label":"Print Scrn", "x":12.03, "y":0, "w":0.69, "h":0.85}, {"label":"Scroll Lock", "x":12.73, "y":0, "w":0.69, "h":0.85}, {"label":"Pause", "x":13.42, "y":0, "w":0.69, "h":0.85}, {"label":"Keypad", "x":14.12, "y":0, "w":0.69, "h":0.85}, {"label":"Progrm", "x":14.81, "y":0, "w":0.69, "h":0.85}, {"label":"^", "x":9.25, "y":1}, {"label":"&", "x":10.25, "y":1}, {"label":"*", "x":11.25, "y":1}, {"label":"(", "x":12.25, "y":1}, {"label":")", "x":13.25, "y":1.25}, {"label":"_", "x":14.25, "y":1.25, "w":1.25}, {"label":"Y", "x":9.25, "y":2}, {"label":"U", "x":10.25, "y":2}, {"label":"I", "x":11.25, "y":2}, {"label":"O", "x":12.25, "y":2}, {"label":"P", "x":13.25, "y":2.25}, {"label":"|", "x":14.25, "y":2.25, "w":1.25}, {"label":"H", "x":9.25, "y":3}, {"label":"J", "x":10.25, "y":3}, {"label":"K", "x":11.25, "y":3}, {"label":"L", "x":12.25, "y":3}, {"label":":", "x":13.25, "y":3.25}, {"label":"\"", "x":14.25, "y":3.25, "w":1.25}, {"label":"N", "x":9.25, "y":4}, {"label":"M", "x":10.25, "y":4}, {"label":"<", "x":11.25, "y":4}, {"label":">", "x":12.25, "y":4}, {"label":"?", "x":13.25, "y":4.25}, {"label":"Shift", "x":14.25, "y":4.25, "w":1.25}, {"label":"↑", "x":10.25, "y":5}, {"label":"↓", "x":11.25, "y":5}, {"label":"{", "x":12.25, "y":5}, {"label":"}", "x":13.25, "y":5.25}, {"label":"GUI", "x":8.25, "y":6}, {"label":"Ctrl", "x":9.25, "y":6}, {"label":"Page Up", "x":8.25, "y":7}, {"label":"Page Down", "x":8.25, "y":8}, {"label":"Enter", "x":9.25, "y":7, "h":2}, {"label":"Space", "x":10.25, "y":7, "h":2}] }, "LAYOUT_pretty": { - "key_count": 86, "layout": [{"label":"Esc", "x":0, "y":0, "w":0.69, "h":0.85}, {"label":"F1", "x":0.7, "y":0, "w":0.69, "h":0.85}, {"label":"F2", "x":1.39, "y":0, "w":0.69, "h":0.85}, {"label":"F3", "x":2.09, "y":0, "w":0.69, "h":0.85}, {"label":"F4", "x":2.78, "y":0, "w":0.69, "h":0.85}, {"label":"F5", "x":3.48, "y":0, "w":0.69, "h":0.85}, {"label":"F6", "x":4.17, "y":0, "w":0.69, "h":0.85}, {"label":"F7", "x":4.87, "y":0, "w":0.69, "h":0.85}, {"label":"F8", "x":5.56, "y":0, "w":0.69, "h":0.85}, {"label":"F9", "x":9.25, "y":0, "w":0.69, "h":0.85}, {"label":"F10", "x":9.95, "y":0, "w":0.69, "h":0.85}, {"label":"F11", "x":10.64, "y":0, "w":0.69, "h":0.85}, {"label":"F12", "x":11.34, "y":0, "w":0.69, "h":0.85}, {"label":"Print Scrn", "x":12.03, "y":0, "w":0.69, "h":0.85}, {"label":"Scroll Lock", "x":12.73, "y":0, "w":0.69, "h":0.85}, {"label":"Pause", "x":13.42, "y":0, "w":0.69, "h":0.85}, {"label":"Keypad", "x":14.12, "y":0, "w":0.69, "h":0.85}, {"label":"Progrm", "x":14.81, "y":0, "w":0.69, "h":0.85}, {"label":"+", "x":0, "y":1.25, "w":1.25}, {"label":"!", "x":1.25, "y":1.25}, {"label":"@", "x":2.25, "y":1}, {"label":"#", "x":3.25, "y":1}, {"label":"$", "x":4.25, "y":1}, {"label":"%", "x":5.25, "y":1}, {"label":"^", "x":9.25, "y":1}, {"label":"&", "x":10.25, "y":1}, {"label":"*", "x":11.25, "y":1}, {"label":"(", "x":12.25, "y":1}, {"label":")", "x":13.25, "y":1.25}, {"label":"_", "x":14.25, "y":1.25, "w":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.25}, {"label":"Q", "x":1.25, "y":2.25}, {"label":"W", "x":2.25, "y":2}, {"label":"E", "x":3.25, "y":2}, {"label":"R", "x":4.25, "y":2}, {"label":"T", "x":5.25, "y":2}, {"label":"Y", "x":9.25, "y":2}, {"label":"U", "x":10.25, "y":2}, {"label":"I", "x":11.25, "y":2}, {"label":"O", "x":12.25, "y":2}, {"label":"P", "x":13.25, "y":2.25}, {"label":"|", "x":14.25, "y":2.25, "w":1.25}, {"label":"Caps Lock", "x":0, "y":3.25, "w":1.25}, {"label":"A", "x":1.25, "y":3.25}, {"label":"S", "x":2.25, "y":3}, {"label":"D", "x":3.25, "y":3}, {"label":"F", "x":4.25, "y":3}, {"label":"G", "x":5.25, "y":3}, {"label":"H", "x":9.25, "y":3}, {"label":"J", "x":10.25, "y":3}, {"label":"K", "x":11.25, "y":3}, {"label":"L", "x":12.25, "y":3}, {"label":":", "x":13.25, "y":3.25}, {"label":"\"", "x":14.25, "y":3.25, "w":1.25}, {"label":"Shift", "x":0, "y":4.25, "w":1.25}, {"label":"Z", "x":1.25, "y":4.25}, {"label":"X", "x":2.25, "y":4}, {"label":"C", "x":3.25, "y":4}, {"label":"V", "x":4.25, "y":4}, {"label":"B", "x":5.25, "y":4}, {"label":"N", "x":9.25, "y":4}, {"label":"M", "x":10.25, "y":4}, {"label":"<", "x":11.25, "y":4}, {"label":">", "x":12.25, "y":4}, {"label":"?", "x":13.25, "y":4.25}, {"label":"Shift", "x":14.25, "y":4.25, "w":1.25}, {"label":"~", "x":1.25, "y":5.25}, {"label":"|", "x":2.25, "y":5}, {"label":"←", "x":3.25, "y":5}, {"label":"→", "x":4.25, "y":5}, {"label":"↑", "x":10.25, "y":5}, {"label":"↓", "x":11.25, "y":5}, {"label":"{", "x":12.25, "y":5}, {"label":"}", "x":13.25, "y":5.25}, {"label":"Ctrl", "x":5.25, "y":6}, {"label":"Alt", "x":6.25, "y":6}, {"label":"GUI", "x":8.25, "y":6}, {"label":"Ctrl", "x":9.25, "y":6}, {"label":"Home", "x":6.25, "y":7}, {"label":"Page Up", "x":8.25, "y":7}, {"label":"Back Space", "x":4.25, "y":7, "h":2}, {"label":"Delete", "x":5.25, "y":7, "h":2}, {"label":"End", "x":6.25, "y":8}, {"label":"Page Down", "x":8.25, "y":8}, {"label":"Enter", "x":9.25, "y":7, "h":2}, {"label":"Space", "x":10.25, "y":7, "h":2}] } } diff --git a/keyboards/kinesis/keymaps/carpalx/rules.mk b/keyboards/kinesis/keymaps/carpalx/rules.mk index 9c6a4673d2cf..1c26f881f2f3 100644 --- a/keyboards/kinesis/keymaps/carpalx/rules.mk +++ b/keyboards/kinesis/keymaps/carpalx/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 diff --git a/keyboards/kinesis/keymaps/default/keymap.c b/keyboards/kinesis/keymaps/default/keymap.c index b116386cecab..d46a07cacf91 100644 --- a/keyboards/kinesis/keymaps/default/keymap.c +++ b/keyboards/kinesis/keymaps/default/keymap.c @@ -40,7 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL,KC_LALT, KC_HOME, KC_BSPC,KC_DEL ,KC_END , - KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_PSCR ,KC_SLCK ,KC_PAUS, KC_FN0, RESET, + KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_PSCR ,KC_SLCK ,KC_PAUS, KC_NO, RESET, KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS, KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_BSLS, KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN,KC_QUOT, @@ -51,19 +51,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_PGDN,KC_ENTER ,KC_SPC ) }; - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/kinesis/keymaps/default/rules.mk b/keyboards/kinesis/keymaps/default/rules.mk index 46af5cd7b4b7..69e27bd2babc 100644 --- a/keyboards/kinesis/keymaps/default/rules.mk +++ b/keyboards/kinesis/keymaps/default/rules.mk @@ -2,17 +2,12 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = 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 -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - diff --git a/keyboards/kinesis/keymaps/default_pretty/keymap.c b/keyboards/kinesis/keymaps/default_pretty/keymap.c index d5cb69071016..94102a806764 100644 --- a/keyboards/kinesis/keymaps/default_pretty/keymap.c +++ b/keyboards/kinesis/keymaps/default_pretty/keymap.c @@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [QWERTY] = LAYOUT_pretty( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_FN0, RESET, + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_NO, RESET, KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, @@ -44,19 +44,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/kinesis/keymaps/default_pretty/rules.mk b/keyboards/kinesis/keymaps/default_pretty/rules.mk index 46af5cd7b4b7..69e27bd2babc 100644 --- a/keyboards/kinesis/keymaps/default_pretty/rules.mk +++ b/keyboards/kinesis/keymaps/default_pretty/rules.mk @@ -2,17 +2,12 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = 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 -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - diff --git a/keyboards/kinesis/keymaps/dvorak/keymap.c b/keyboards/kinesis/keymaps/dvorak/keymap.c index 3c532628ef1a..6f4d63a7d4f2 100644 --- a/keyboards/kinesis/keymaps/dvorak/keymap.c +++ b/keyboards/kinesis/keymaps/dvorak/keymap.c @@ -17,7 +17,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_HOME, KC_BSPC, KC_DEL, KC_END, // right hand - KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_FN0, RESET, + KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_NO, RESET, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_D, KC_H, KC_T, KC_N, KC_S, KC_BSLS, diff --git a/keyboards/kinesis/keymaps/dvorak/rules.mk b/keyboards/kinesis/keymaps/dvorak/rules.mk index 46af5cd7b4b7..eb94d17f07e9 100644 --- a/keyboards/kinesis/keymaps/dvorak/rules.mk +++ b/keyboards/kinesis/keymaps/dvorak/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 diff --git a/keyboards/kinesis/keymaps/insertsnideremarks/keymap.c b/keyboards/kinesis/keymaps/insertsnideremarks/keymap.c index 10b0c2cb73d4..183b1c4303eb 100644 --- a/keyboards/kinesis/keymaps/insertsnideremarks/keymap.c +++ b/keyboards/kinesis/keymaps/insertsnideremarks/keymap.c @@ -1,4 +1,4 @@ -#include QMK_KEYBOARD_H +#include QMK_KEYBOARD_H extern keymap_config_t keymap_config; @@ -61,7 +61,7 @@ void dance_LAYER_reset(qk_tap_dance_state_t *state, void *user_data) { } qk_tap_dance_action_t tap_dance_actions[] = { -[ADJ] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_LAYER_finished, dance_LAYER_reset), // Double-tap to activate Adjust layer via oneshot layer +[ADJ] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_LAYER_finished, dance_LAYER_reset), // Double-tap to activate Adjust layer via oneshot layer [LBCB] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, KC_LCBR), // Left bracket on a single-tap, left brace on a double-tap [RBCB] = ACTION_TAP_DANCE_DOUBLE(KC_RBRC, KC_RCBR), // Right bracket on a single-tap, right brace on a double-tap [EQPL] = ACTION_TAP_DANCE_DOUBLE(KC_EQL, KC_PLUS), // Plus sign on a single-tap, equal sign on a double-tap @@ -97,7 +97,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | Space | Enter |App/Alt| | RGUI | Delete| Bspc | | / | / |-------| |-------| / | / | | Fn | Number| Bspc | | Enter |Number2| Fn2 | - `-----------------------' `-----------------------' + `-----------------------' `-----------------------' */ [_COLEMAK] = LAYOUT_pretty( KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, NUMPAD, ADJUST, @@ -133,7 +133,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | Space | Enter |App/Alt| | RGUI | Delete| Bspc | | / | / |-------| |-------| / | / | | Fn | Number| Bspc | | Enter |Number2| Fn2 | - `-----------------------' `-----------------------' + `-----------------------' `-----------------------' */ [_QWERTY] = LAYOUT_pretty( KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, NUMPAD, ADJUST, @@ -169,15 +169,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | | | | | | | | | | |-------| |-------| | | | | | | | | | | - `-----------------------' `-----------------------' + `-----------------------' `-----------------------' */ [_NUMBERS] = LAYOUT_pretty( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, - _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, - _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, + _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, + _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, _______, _______, KC_DOT, TD(SLAS), TD(MNUN), TD(PLEQ), TD(GVTL), TD(LBCB), TD(RBCB), _______, _______, _______, - KC_LPRN, KC_RPRN, TD(LBCB), TD(RBCB), _______, _______, _______, _______, + KC_LPRN, KC_RPRN, TD(LBCB), TD(RBCB), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ @@ -186,10 +186,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_NUMBERS2] = LAYOUT_pretty( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, - _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, - _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, + _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, + _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, _______, _______, KC_DOT, TD(SLAS), TD(MNUN), TD(PLEQ), TD(GVTL), TD(LBCB), TD(RBCB), _______, _______, _______, - KC_LPRN, KC_RPRN, TD(LBCB), TD(RBCB), _______, _______, _______, _______, + KC_LPRN, KC_RPRN, TD(LBCB), TD(RBCB), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ @@ -216,7 +216,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | | | | | | | | | | |-------| |-------| | | | | | | | | | | - `-----------------------' `-----------------------' + `-----------------------' `-----------------------' */ [_FUNCTION] = LAYOUT_pretty( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -264,7 +264,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | | | | | | | | | | |-------| |-------| | | | | | | | | | | - `-----------------------' `-----------------------' + `-----------------------' `-----------------------' */ [_NUMPAD] = LAYOUT_pretty( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -300,7 +300,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | | | LAlt | | RGUI | Delete| Bspc | | Space | Enter |-------| |-------| / | / | | | | Bspc | | Ent/NS|Number2| Fn2 | - `-----------------------' `-----------------------' + `-----------------------' `-----------------------' */ [_COLEMAKGM] = LAYOUT_pretty( KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, NUMPAD, ADJUST, @@ -336,7 +336,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | | | LAlt | | RGUI | Delete| Bspc | | Space | Enter |-------| |-------| / | / | | | | Bspc | | Ent/NS|Number2| Fn2 | - `-----------------------' `-----------------------' + `-----------------------' `-----------------------' */ [_QWERTYGM] = LAYOUT_pretty( KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, NUMPAD, ADJUST, @@ -372,7 +372,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | | | | | | | | | | |-------| |-------| | | | | | | | | | | - `-----------------------' `-----------------------' + `-----------------------' `-----------------------' */ [_ADJUST] = LAYOUT_pretty( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -380,7 +380,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, NKROTG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ @@ -392,7 +392,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, NKROTG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ @@ -400,7 +400,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _NUMBERS, _NUMBERS2, _ADJUST); } diff --git a/keyboards/kinesis/keymaps/insertsnideremarks/rules.mk b/keyboards/kinesis/keymaps/insertsnideremarks/rules.mk index d2e362886a53..2cd0c1a9dc52 100644 --- a/keyboards/kinesis/keymaps/insertsnideremarks/rules.mk +++ b/keyboards/kinesis/keymaps/insertsnideremarks/rules.mk @@ -4,7 +4,7 @@ # DEFAULT_FOLDER = kinesis/stapelberg -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = yes # Console for debug(+400) diff --git a/keyboards/kinesis/keymaps/jwon/keymap.c b/keyboards/kinesis/keymaps/jwon/keymap.c new file mode 100644 index 000000000000..d0e9d812310b --- /dev/null +++ b/keyboards/kinesis/keymaps/jwon/keymap.c @@ -0,0 +1,174 @@ +/* Copyright 2021 James Won + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE_DVORAK, + _RAISE_DVORAK, + _KEYPAD, + _QWERTY, +}; + +// Mac-specific macros +#define MACCOPY LGUI(KC_C) +#define MACPAST LGUI(KC_V) +#define MACUNDO LGUI(KC_Z) +#define MACREDO LGUI(KC_Y) +#define MACLOCK LGUI(LCTL(KC_Q)) + +#define LSA_ LSA(KC_NO) +#define SFT_ESC SFT_T(KC_ESC) +#define KEYPAD TG(_KEYPAD) +#define QWERTY TG(_QWERTY) +#define RAISE MO(_RAISE_DVORAK) + +// clang-format off + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[_BASE_DVORAK] = LAYOUT ( + // Left Hand + MACLOCK, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, + KC_PIPE, KC_PLUS, KC_LBRC, KC_LCBR, KC_LPRN, KC_AMPR, + KC_TAB, KC_SCLN, KC_COMM, KC_DOT, KC_P, KC_Y, + SFT_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, + KC_LCTL, KC_QUOT, KC_Q, KC_J, KC_K, KC_X, + KC_DLR, KC_BSLS, KC_LEFT, KC_RGHT, + // Left Thumb + KC_LGUI, KC_LALT, + MACPAST, + KC_BSPC, KC_SPC, MACCOPY, + + // Right Hand + KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, QWERTY, RESET, + KC_EQL, KC_RPRN, KC_RCBR, KC_RBRC, KC_ASTR, KC_EXLM, + KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSLS, + KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, + KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, + KC_DOWN, KC_UP, KC_SLSH, KC_AT, + // Right Thumb + KEYPAD, LSA_, + MACUNDO, + MACREDO, RAISE, KC_ENT + ), + +[_RAISE_DVORAK] = LAYOUT ( + // Left Hand + _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, + _______, KC_COLN, KC_LABK, KC_RABK, S(KC_P), S(KC_Y), + _______, S(KC_A), S(KC_O), S(KC_E), S(KC_U), S(KC_I), + _______, KC_DQUO, S(KC_Q), S(KC_J), S(KC_K), S(KC_X), + KC_TILD, KC_PIPE, _______, _______, + // Left Thumb + _______, _______, + _______, + _______, _______, _______, + + // Right Hand + _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_6, KC_7, KC_8, KC_9, KC_0, KC_PERC, + S(KC_F), S(KC_G), S(KC_C), S(KC_R), S(KC_L), KC_HASH, + S(KC_D), S(KC_H), S(KC_T), S(KC_N), S(KC_S), KC_UNDS, + S(KC_B), S(KC_M), S(KC_W), S(KC_V), S(KC_Z), _______, + _______, _______, KC_QUES, KC_CIRC, + // Right Thumb + _______, _______, + _______, + _______, _______, _______ + ), + +[_KEYPAD] = LAYOUT ( + // Left Hand + _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, + // Left Thumb + _______, _______, + _______, + _______, _______, _______, + + // Right Hand + _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_NLCK, 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_PENT, _______, + _______, _______, KC_PDOT, KC_PENT, + // Right Thumb + _______, _______, + _______, + _______, _______, KC_P0 + ), + +[_QWERTY] = LAYOUT( + // Left Hand + KC_ESC, _______, _______, _______, _______, _______, _______, _______, _______, + KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, + KC_GRV, KC_INS, KC_LEFT, KC_RGHT, + // Left Thumb + KC_LGUI, KC_LALT, + KC_HOME, + KC_BSPC, KC_DEL, KC_END , + + // Right Hand + _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_UP, KC_DOWN, KC_LBRC, KC_RBRC, + // Right Thumb + KC_RGUI, KC_RCTL, + KC_PGUP, + KC_PGDN, KC_ENT, KC_SPC + ) +}; + +layer_state_t layer_state_set_user(layer_state_t state) { + switch (get_highest_layer(state)) { + case _KEYPAD: + writePinLow(LED_COMPOSE_PIN); + break; + case _RAISE_DVORAK: + writePinLow(LED_NUM_LOCK_PIN); + break; + case _QWERTY: + writePinLow(LED_SCROLL_LOCK_PIN); + break; + default: // for any other layers, or the default layer + writePinHigh(LED_NUM_LOCK_PIN); + writePinHigh(LED_SCROLL_LOCK_PIN); + writePinHigh(LED_COMPOSE_PIN); + break; + } + return state; +} + +bool led_update_user(led_t led_state) { + // Disable led_update_kb() so that layer indication code doesn't get overridden. + return false; +} + +void matrix_scan_user(void) { + writePin(LED_CAPS_LOCK_PIN, !(get_mods() & MOD_MASK_SHIFT)); +} diff --git a/keyboards/kinesis/keymaps/jwon/readme.md b/keyboards/kinesis/keymaps/jwon/readme.md new file mode 100644 index 000000000000..719e693384bb --- /dev/null +++ b/keyboards/kinesis/keymaps/jwon/readme.md @@ -0,0 +1,8 @@ +![jwon Programmer Dvorak Layout Image](https://i.imgur.com/3llBswG.png) + +# jwon's Programmer Dvorak + +Loosely based off [Programmer Dvorak](https://www.kaufmann.no/roland/dvorak/) and ThePrimeagen's [Real Programmers Dvorak](https://github.com/ThePrimeagen/keyboards) + +## Requirements +* The Stapelberg mod diff --git a/keyboards/kinesis/keymaps/jwon/rules.mk b/keyboards/kinesis/keymaps/jwon/rules.mk new file mode 100644 index 000000000000..1b8ed21105ad --- /dev/null +++ b/keyboards/kinesis/keymaps/jwon/rules.mk @@ -0,0 +1,3 @@ +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no +NKRO_ENABLE = yes diff --git a/keyboards/kinesis/keymaps/milestogo/rules.mk b/keyboards/kinesis/keymaps/milestogo/rules.mk index 7a331cd530cf..93e7cd8bb74f 100644 --- a/keyboards/kinesis/keymaps/milestogo/rules.mk +++ b/keyboards/kinesis/keymaps/milestogo/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/kinesis/keymaps/peott-fr/keymap.c b/keyboards/kinesis/keymaps/peott-fr/keymap.c new file mode 100644 index 000000000000..e813f070d088 --- /dev/null +++ b/keyboards/kinesis/keymaps/peott-fr/keymap.c @@ -0,0 +1,28 @@ +/* + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #include QMK_KEYBOARD_H + +/* THIS FILE WAS GENERATED! + * + * This file was generated by qmk json2c. You may or may not want to + * edit it directly. + */ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT(KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, LGUI_T(KC_MPLY), LALT_T(KC_MNXT), KC_GRV, KC_BSLS, KC_LBRC, KC_RBRC, KC_HOME, LT(1,KC_SPC), KC_DEL, KC_END, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, TG(3), KC_NO, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_RALT, KC_APP, KC_PGUP, KC_PGDN, KC_ENT, LT(2,KC_BSPC)), + [1] = LAYOUT(KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_LBRC, KC_UP, KC_RBRC, KC_LPRN, KC_TRNS, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_RPRN, KC_TRNS, KC_CALC, KC_MYCM, KC_TRNS, KC_ENT, KC_BSPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_EQL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [2] = LAYOUT(KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [3] = LAYOUT(KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_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_TRNS, KC_NO, KC_NO, KC_NLCK, KC_PEQL, KC_PSLS, KC_PAST, KC_NO, KC_NO, KC_P7, KC_P8, KC_P9, KC_PMNS, KC_NO, KC_NO, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_NO, KC_NO, KC_P1, KC_P2, KC_P3, KC_PENT, KC_NO, KC_NO, KC_P0, KC_PDOT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO) +}; diff --git a/keyboards/kinesis/keymaps/stapelberg/keymap.c b/keyboards/kinesis/keymaps/stapelberg/keymap.c index c62ffbbccf20..d7a0a5e5c237 100644 --- a/keyboards/kinesis/keymaps/stapelberg/keymap.c +++ b/keyboards/kinesis/keymaps/stapelberg/keymap.c @@ -56,7 +56,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL,KC_LALT, KC_LGUI, KC_BSPC,KC_ESC ,KC_END , - KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_PSCR ,KC_SLCK ,KC_PAUS, KC_FN0, RESET, + KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_PSCR ,KC_SLCK ,KC_PAUS, KC_NO, RESET, KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS, KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_BSLS, KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN,KC_QUOT, diff --git a/keyboards/kinesis/keymaps/stapelberg/rules.mk b/keyboards/kinesis/keymaps/stapelberg/rules.mk index f5557c73b56b..8117fc858945 100644 --- a/keyboards/kinesis/keymaps/stapelberg/rules.mk +++ b/keyboards/kinesis/keymaps/stapelberg/rules.mk @@ -1,3 +1,3 @@ -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite COMMAND_ENABLE = yes NKRO_ENABLE = yes diff --git a/keyboards/kinesis/keymaps/tuesdayjohn/keymap.c b/keyboards/kinesis/keymaps/tuesdayjohn/keymap.c index 0cdb7d584dcf..2e844f19b127 100644 --- a/keyboards/kinesis/keymaps/tuesdayjohn/keymap.c +++ b/keyboards/kinesis/keymaps/tuesdayjohn/keymap.c @@ -1,4 +1,4 @@ -#include QMK_KEYBOARD_H +#include QMK_KEYBOARD_H extern keymap_config_t keymap_config; @@ -20,7 +20,7 @@ enum kinesis_keycodes { QWERTY, GAMING }; - + //Tap Dance Declarations enum { ADJ = 0, @@ -50,7 +50,7 @@ void dance_LAYER_reset(qk_tap_dance_state_t *state, void *user_data) { } qk_tap_dance_action_t tap_dance_actions[] = { -[ADJ] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_LAYER_finished, dance_LAYER_reset), // Double-tap to activate Adjust layer via oneshot layer +[ADJ] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_LAYER_finished, dance_LAYER_reset), // Double-tap to activate Adjust layer via oneshot layer [LBCB] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, KC_LCBR), // Left bracket on a single-tap, left brace on a double-tap [RBCB] = ACTION_TAP_DANCE_DOUBLE(KC_RBRC, KC_RCBR), // Right bracket on a single-tap, right brace on a double-tap [EQPL] = ACTION_TAP_DANCE_DOUBLE(KC_EQL, KC_PLUS), // Plus sign on a single-tap, equal sign on a double-tap @@ -117,7 +117,7 @@ Colemak | Space | Enter | App/Alt| | RGUI | Delete | Bspc | | / | / |--------| |--------| / | / | | Fn | Number | Bspc | | Enter | Number2| Fn2 | - `--------------------------' `--------------------------' + `--------------------------' `--------------------------' */ [_COLEMAK] = LAYOUT_pretty( KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, NUMPAD, ADJUST, @@ -154,7 +154,7 @@ QWERTY | Space | Enter | App/Alt| | RGUI | Delete | Bspc | | / | / |--------| |--------| / | / | | Fn | Number | Bspc | | Enter | Number2| Fn2 | - `--------------------------' `--------------------------' + `--------------------------' `--------------------------' */ [_QWERTY] = LAYOUT_pretty( KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, NUMPAD, ADJUST, @@ -168,7 +168,7 @@ QWERTY SPCFN, ENTNS, KC_BSPC, KC_ENT, DELNS, BSPCFN ), -/* +/* Numbers/Symbols layer (Multiple characters: single-tap for first, double-tap for second) ,--------------------------------------------------------------. ,--------------------------------------------------------------. @@ -191,15 +191,15 @@ Numbers/Symbols layer | | | | | | | | | | |--------| |--------| | | | | | | | | | | - `--------------------------' `--------------------------' + `--------------------------' `--------------------------' */ [_NUMBERS] = LAYOUT_pretty( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, - _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, - _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, + _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, + _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, _______, _______, KC_DOT, TD_SLAS, TD_MNUN, TD_PLEQ, TD_GVTL, TD_LBCB, TD_RBCB, _______, _______, _______, - KC_LPRN, KC_RPRN, TD_LBCB, TD_RBCB, _______, _______, _______, _______, + KC_LPRN, KC_RPRN, TD_LBCB, TD_RBCB, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ @@ -208,10 +208,10 @@ Numbers/Symbols layer [_NUMBERS2] = LAYOUT_pretty( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, - _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, - _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, + _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, + _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, _______, _______, KC_DOT, TD_SLAS, TD_MNUN, TD_PLEQ, TD_GVTL, TD_LBCB, TD_RBCB, _______, _______, _______, - KC_LPRN, KC_RPRN, TD_LBCB, TD_RBCB, _______, _______, _______, _______, + KC_LPRN, KC_RPRN, TD_LBCB, TD_RBCB, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ @@ -239,7 +239,7 @@ Function layer | | | | | | | | | | |--------| |--------| | | | | | | | | | | - `--------------------------' `--------------------------' + `--------------------------' `--------------------------' */ [_FUNCTION] = LAYOUT_pretty( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -288,7 +288,7 @@ Numpad layer | | | | | | | | | | |--------| |--------| | | | | | | | | | | - `--------------------------' `--------------------------' + `--------------------------' `--------------------------' */ [_NUMPAD] = LAYOUT_pretty( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -325,7 +325,7 @@ Gaming | | | LAlt | | RGUI | Delete | Bspc | | Space | Enter |--------| |--------| / | / | | | | Bspc | |Enter/NS| Number2| Fn2 | - `--------------------------' `--------------------------' + `--------------------------' `--------------------------' */ [_GAMING] = LAYOUT_pretty( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -362,7 +362,7 @@ Adjust layer | | | | | | | | | | |--------| |--------| | | | | | | | | | | - `--------------------------' `--------------------------' + `--------------------------' `--------------------------' */ [_ADJUST] = LAYOUT_pretty( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -370,7 +370,7 @@ Adjust layer _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, NKROTG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ @@ -382,7 +382,7 @@ Adjust layer _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, NKROTG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ @@ -390,7 +390,7 @@ Adjust layer }; -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _NUMBERS, _NUMBERS2, _ADJUST); } diff --git a/keyboards/kinesis/keymaps/tuesdayjohn/rules.mk b/keyboards/kinesis/keymaps/tuesdayjohn/rules.mk index cf63c44f4f0d..390cb3fd60a4 100644 --- a/keyboards/kinesis/keymaps/tuesdayjohn/rules.mk +++ b/keyboards/kinesis/keymaps/tuesdayjohn/rules.mk @@ -3,7 +3,7 @@ # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = yes # Console for debug(+400) diff --git a/keyboards/kinesis/keymaps/tw1t611/keymap.c b/keyboards/kinesis/keymaps/tw1t611/keymap.c index afeaf771148d..e7a6ffd6e902 100644 --- a/keyboards/kinesis/keymaps/tw1t611/keymap.c +++ b/keyboards/kinesis/keymaps/tw1t611/keymap.c @@ -15,11 +15,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_RCTL,KC_LALT, KC_HOME, KC_SPC ,KC_LSFT,KC_BSPC , - KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_PSCR,KC_SLCK,KC_PAUS,KC_FN0 ,RESET, + KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_PSCR,KC_SLCK,KC_PAUS,KC_NO ,RESET, KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,DE_SS , - KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,DE_AE , - KC_H ,KC_J ,KC_K ,KC_L ,DE_SLSH,DE_OE , - KC_N ,KC_M ,DE_COMM,DE_DOT ,DE_MINS,DE_UE , + KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,DE_ADIA, + KC_H ,KC_J ,KC_K ,KC_L ,DE_SLSH,DE_ODIA, + KC_N ,KC_M ,DE_COMM,DE_DOT ,DE_MINS,DE_UDIA, _______,_______,_______,_______, KC_LGUI,KC_LCTL, KC_END , @@ -28,9 +28,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [MOD] = LAYOUT( _______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______, - DE_CIRC,DE_QUOT,DE_DQOT,DE_LCBR,DE_RCBR,DE_GRV , + DE_CIRC,DE_QUOT,DE_DQUO,DE_LCBR,DE_RCBR,DE_GRV , DE_TILD,DE_EXLM,DE_DLR ,DE_LPRN,DE_RPRN,DE_AMPR, - DE_BSLS,DE_HASH,DE_LESS,DE_LBRC,DE_RBRC,DE_MORE, + DE_BSLS,DE_HASH,DE_LABK,DE_LBRC,DE_RBRC,DE_RABK, _______,_______,_______,_______, _______,_______, _______, @@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______, KC_HOME,KC_PGDN,KC_PGUP,KC_END ,DE_EQL ,DE_PERC, - KC_LEFT,KC_DOWN,KC_UP ,KC_RGHT,DE_QST ,DE_ASTR, + KC_LEFT,KC_DOWN,KC_UP ,KC_RGHT,DE_QUES,DE_ASTR, DE_AT ,DE_EURO,DE_SCLN,DE_COLN,DE_UNDS,DE_PLUS, _______,_______,_______,_______, _______,_______, diff --git a/keyboards/kinesis/keymaps/tw1t611/rules.mk b/keyboards/kinesis/keymaps/tw1t611/rules.mk index 7a331cd530cf..93e7cd8bb74f 100644 --- a/keyboards/kinesis/keymaps/tw1t611/rules.mk +++ b/keyboards/kinesis/keymaps/tw1t611/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/kinesis/keymaps/xyverz/rules.mk b/keyboards/kinesis/keymaps/xyverz/rules.mk index f21a27feacaf..d0e540272b32 100644 --- a/keyboards/kinesis/keymaps/xyverz/rules.mk +++ b/keyboards/kinesis/keymaps/xyverz/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/kinesis/kinesis.h b/keyboards/kinesis/kinesis.h index 0833992b812a..54cf6b81a7f3 100644 --- a/keyboards/kinesis/kinesis.h +++ b/keyboards/kinesis/kinesis.h @@ -1,32 +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" +#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 ff5761b6bc9e..4191446e685a 100644 --- a/keyboards/kinesis/kint2pp/config.h +++ b/keyboards/kinesis/kint2pp/config.h @@ -32,11 +32,19 @@ #define LED_COMPOSE_PIN C3 #define LED_PIN_ON_STATE 0 -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 5 +/* Well-worn Cherry MX key switches can bounce for up to 20ms, despite the + * Cherry data sheet specifying 5ms. Because we use the sym_eager_pk debounce + * algorithm, this debounce latency only affects key releases (not key + * presses). */ +#undef DEBOUNCE +#define DEBOUNCE 20 #define IGNORE_MOD_TAP_INTERRUPT // 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 be57526036a9..3738629ea7ed 100644 --- a/keyboards/kinesis/kint36/config.h +++ b/keyboards/kinesis/kint36/config.h @@ -50,8 +50,12 @@ /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 5 +/* Well-worn Cherry MX key switches can bounce for up to 20ms, despite the + * Cherry data sheet specifying 5ms. Because we use the sym_eager_pk debounce + * algorithm, this debounce latency only affects key releases (not key + * presses). */ +#undef DEBOUNCE +#define DEBOUNCE 20 #define IGNORE_MOD_TAP_INTERRUPT @@ -59,8 +63,14 @@ // 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 #define LED_SCROLL_LOCK_PIN A5 #define LED_COMPOSE_PIN E26 + +#define EEPROM_SIZE 4096 diff --git a/keyboards/kinesis/kint36/keymaps/kzar/rules.mk b/keyboards/kinesis/kint36/keymaps/kzar/rules.mk index 7537188840cd..a88176512859 100644 --- a/keyboards/kinesis/kint36/keymaps/kzar/rules.mk +++ b/keyboards/kinesis/kint36/keymaps/kzar/rules.mk @@ -1,4 +1,4 @@ -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite COMMAND_ENABLE = yes MOUSEKEY_ENABLE = no NKRO_ENABLE = yes diff --git a/keyboards/kinesis/kint36/rules.mk b/keyboards/kinesis/kint36/rules.mk index cf58cb913452..c50225ad8a01 100644 --- a/keyboards/kinesis/kint36/rules.mk +++ b/keyboards/kinesis/kint36/rules.mk @@ -1,6 +1,9 @@ -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. DEBOUNCE_TYPE = sym_eager_pk + +#Specify firmware format that is copied to root qmk_firmware folder +FIRMWARE_FORMAT = hex diff --git a/keyboards/kinesis/kint41/chconf.h b/keyboards/kinesis/kint41/chconf.h new file mode 100644 index 000000000000..0cd253b95dd8 --- /dev/null +++ b/keyboards/kinesis/kint41/chconf.h @@ -0,0 +1,33 @@ +/* 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/kinesis/kint36/chconf.h -r platforms/chibios/common/configs/chconf.h` + */ + +#pragma once + +#define CH_CFG_ST_TIMEDELTA 0 + +#define CH_CFG_TIME_QUANTUM 20 + +// One tick (minimum sleep interval) will be 100 μs. This value cannot be +// increased arbitrarily: chSysTimerHandlerI() must be executed in less than one +// tick as per http://forum.chibios.org/viewtopic.php?t=3712#p27851 +#define CH_CFG_ST_FREQUENCY 10000 + +#include_next diff --git a/keyboards/kinesis/kint41/config.h b/keyboards/kinesis/kint41/config.h new file mode 100644 index 000000000000..7d87b8dd7650 --- /dev/null +++ b/keyboards/kinesis/kint41/config.h @@ -0,0 +1,109 @@ +/* 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 . + */ + +#pragma once + +/* USB Device descriptor parameter */ +#undef VENDOR_ID +#define VENDOR_ID 0x1209 +#undef PRODUCT_ID +#define PRODUCT_ID 0x345C +#undef DEVICE_VER +#define DEVICE_VER 0x0001 +#undef MANUFACTURER +#define MANUFACTURER "https://github.com/stapelberg" +#undef PRODUCT +#define PRODUCT "kinT (kint41)" + +/* key matrix size */ +#define MATRIX_ROWS 15 +#define MATRIX_COLS 7 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS \ + { \ + LINE_PIN8, /* ROW_EQL */ \ + LINE_PIN9, /* ROW_1 */ \ + LINE_PIN10, /* ROW_2 */ \ + LINE_PIN11, /* ROW_3 */ \ + LINE_PIN7, /* ROW_4 */ \ + LINE_PIN16, /* ROW_5 */ \ + LINE_PIN5, /* ROW_6 */ \ + LINE_PIN3, /* ROW_7 */ \ + LINE_PIN4, /* ROW_8 */ \ + LINE_PIN1, /* ROW_9 */ \ + LINE_PIN0, /* ROW_0 */ \ + LINE_PIN2, /* ROW_MIN */ \ + LINE_PIN17, /* ROW_ESC */ \ + LINE_PIN23, /* ROW_F1 */ \ + LINE_PIN21 /* ROW_F2 */ \ + } + +#define MATRIX_COL_PINS \ + { \ + LINE_PIN18, /* COL_0 */ \ + LINE_PIN14, /* COL_1 */ \ + LINE_PIN15, /* COL_2 */ \ + LINE_PIN20, /* COL_3 */ \ + LINE_PIN22, /* COL_4 */ \ + LINE_PIN19, /* COL_5 */ \ + LINE_PIN6 /* COL_6 */ \ + } + +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Well-worn Cherry MX key switches can bounce for up to 20ms, despite the + * Cherry data sheet specifying 5ms. Because we use the sym_eager_pk debounce + * algorithm, this debounce latency only affects key releases (not key + * presses). */ +#undef DEBOUNCE +#define DEBOUNCE 20 + +#define IGNORE_MOD_TAP_INTERRUPT + +// Reduce input latency by lowering the USB polling interval +// 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. + * No additional delay is necessary. */ + +// in clock cycles +#define GPIO_INPUT_PIN_DELAY 0 + +#define LED_PIN_ON_STATE 0 +#define LED_NUM_LOCK_PIN LINE_PIN26 +#define LED_CAPS_LOCK_PIN LINE_PIN12 +#define LED_SCROLL_LOCK_PIN LINE_PIN25 +#define LED_COMPOSE_PIN LINE_PIN24 diff --git a/keyboards/kinesis/kint41/kint41.c b/keyboards/kinesis/kint41/kint41.c new file mode 100644 index 000000000000..ab6567d0979c --- /dev/null +++ b/keyboards/kinesis/kint41/kint41.c @@ -0,0 +1,52 @@ +/* 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 . + */ + +#include "kint41.h" + +void matrix_init_kb(void) { + matrix_init_user(); + +// Turn on the Teensy 4.x Power LED: +#define LED_POWER LINE_PIN13 + setPinOutput(LED_POWER); + writePinHigh(LED_POWER); +} + +// delay_inline sleeps for |cycles| (e.g. sleeping for F_CPU will sleep 1s). +// delay_inline assumes the cycle counter has already been initialized and +// should not be modified, i.e. it is safe to call during keyboard matrix scan. +// +// ChibiOS enables the cycle counter in chcore_v7m.c: +// https://github.com/ChibiOS/ChibiOS/blob/b63023915c304092acb9f33bbab40f3ec07a7f0e/os/common/ports/ARMCMx/chcore_v7m.c#L263 +static void delay_inline(const uint32_t cycles) { + const uint32_t start = DWT->CYCCNT; + while ((DWT->CYCCNT - start) < cycles) { + // busy-loop until time has passed + } +} + +void matrix_output_unselect_delay(uint8_t line, bool key_pressed) { + // Use the cycle counter to do precise timing in microseconds. The ChibiOS + // thread sleep functions only allow sleep durations starting at 1 tick, which + // is 100μs in our configuration. + + // Empirically: e.g. 5μs is not enough, will result in keys that don’t work + // and ghost key presses. 10μs seems to work well. + + // 600 cycles at 0.6 cycles/ns == 1μs + const uint32_t cycles_per_us = 600; + delay_inline(10 * cycles_per_us); +} diff --git a/keyboards/kinesis/kint41/kint41.h b/keyboards/kinesis/kint41/kint41.h new file mode 100644 index 000000000000..d427a1c2d63e --- /dev/null +++ b/keyboards/kinesis/kint41/kint41.h @@ -0,0 +1,92 @@ +/* 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 . + */ + +#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 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, ___ }, \ +} + +/* ---------------- 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, ___ } \ +} diff --git a/keyboards/kinesis/kint41/mcuconf.h b/keyboards/kinesis/kint41/mcuconf.h new file mode 100644 index 000000000000..1ab5054ff3d5 --- /dev/null +++ b/keyboards/kinesis/kint41/mcuconf.h @@ -0,0 +1,22 @@ +/* + ChibiOS - Copyright (C) 2006..2015 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_ + +#define MIMXRT1062_MCUCONF + +#endif /* _MCUCONF_H_ */ diff --git a/keyboards/kinesis/kint41/readme.md b/keyboards/kinesis/kint41/readme.md new file mode 100644 index 000000000000..90781dc97d59 --- /dev/null +++ b/keyboards/kinesis/kint41/readme.md @@ -0,0 +1,3 @@ +# kinesis_kint41 keyboard firmware + +Please see https://github.com/kinx-project/kint for details. diff --git a/keyboards/kinesis/kint41/rules.mk b/keyboards/kinesis/kint41/rules.mk new file mode 100644 index 000000000000..2681ff6724a8 --- /dev/null +++ b/keyboards/kinesis/kint41/rules.mk @@ -0,0 +1,15 @@ +MCU_FAMILY = MIMXRT1062 +MCU_SERIES = MIMXRT1062 +MCU_LDSCRIPT = MIMXRT1062 +MCU_STARTUP = MIMXRT1062 +BOARD = IC_TEENSY_4_1 +MCU = cortex-m4 +ARMV = 7 + +# Debounce eagerly (report change immediately), keep per-key timers. We can use +# this because the Cherry MX keyswitches on the Kinesis only produce noise while +# pressed. +DEBOUNCE_TYPE = sym_eager_pk + +#Specify firmware format that is copied to root qmk_firmware folder +FIRMWARE_FORMAT = hex diff --git a/keyboards/kinesis/nguyenvietyen/config.h b/keyboards/kinesis/nguyenvietyen/config.h index 52f4c8054baf..f1b41e61bcc3 100644 --- a/keyboards/kinesis/nguyenvietyen/config.h +++ b/keyboards/kinesis/nguyenvietyen/config.h @@ -19,7 +19,7 @@ * */ // Passed through the port multipler, so 4 pins =16 -#define MATRIX_ROW_PINS { D0, D1, D2, D3 } +#define MATRIX_ROW_PINS { D0, D1, D2, D3, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN } #define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, F5, F4 } #define UNUSED_PINS diff --git a/keyboards/kinesis/nguyenvietyen/rules.mk b/keyboards/kinesis/nguyenvietyen/rules.mk index a401973aad0b..855c7072a508 100644 --- a/keyboards/kinesis/nguyenvietyen/rules.mk +++ b/keyboards/kinesis/nguyenvietyen/rules.mk @@ -7,7 +7,7 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes EXTRAKEY_ENABLE = yes COMMAND_ENABLE = yes diff --git a/keyboards/kinesis/rules.mk b/keyboards/kinesis/rules.mk index 651751fa6409..e57dce696239 100644 --- a/keyboards/kinesis/rules.mk +++ b/keyboards/kinesis/rules.mk @@ -2,31 +2,19 @@ MCU = at90usb1286 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = halfkay # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output should be port E6, current quantum library hardcodes C6, which we use for programming +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output DEFAULT_FOLDER = kinesis/alvicstep diff --git a/keyboards/kinesis/stapelberg/config.h b/keyboards/kinesis/stapelberg/config.h index 8f920c19c1bd..fe44131adbf3 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 e35e2f5db800..f478c493fdef 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/kineticlabs/emu/hotswap/config.h b/keyboards/kineticlabs/emu/hotswap/config.h new file mode 100644 index 000000000000..57eaad44b419 --- /dev/null +++ b/keyboards/kineticlabs/emu/hotswap/config.h @@ -0,0 +1,42 @@ +/* +Copyright 2021 kb-elmo + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xE015 +#define PRODUCT_ID 0xC387 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Kineticlabs +#define PRODUCT Emu Hotswap + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 18 + +/* Keyboard Matrix Assignments */ +#define MATRIX_ROW_PINS { E6, D4, B3, B1, B0, B7 } +#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D5, D3, D2, D1, D0 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 diff --git a/keyboards/kineticlabs/emu/hotswap/hotswap.c b/keyboards/kineticlabs/emu/hotswap/hotswap.c new file mode 100644 index 000000000000..8b26d5cd84f8 --- /dev/null +++ b/keyboards/kineticlabs/emu/hotswap/hotswap.c @@ -0,0 +1,17 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "hotswap.h" diff --git a/keyboards/kineticlabs/emu/hotswap/hotswap.h b/keyboards/kineticlabs/emu/hotswap/hotswap.h new file mode 100644 index 000000000000..da02500fec80 --- /dev/null +++ b/keyboards/kineticlabs/emu/hotswap/hotswap.h @@ -0,0 +1,37 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ____ KC_NO + +#define LAYOUT_tkl_ansi( \ + k000, k002, k003, k004, k005, k006, k007, k008, k009, k011, k012, k013, k014, k015, k016, k017, \ + k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k114, k115, k116, k117, \ + k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k214, k215, k216, k217, \ + k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k314, \ + k400, k401, k402, k403, k404, k405, k406, k407, k408, k409, k410, k414, k416, \ + k500, k501, k502, k505, k510, k511, k513, k514, k515, k516, k517 \ +) { \ + { k000, ____, k002, k003, k004, k005, k006, k007, k008, k009, ____, k011, k012, k013, k014, k015, k016, k017 }, \ + { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, ____, k114, k115, k116, k117 }, \ + { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, ____, k214, k215, k216, k217 }, \ + { k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, ____, ____, k314, ____, ____, ____ }, \ + { k400, k401, k402, k403, k404, k405, k406, k407, k408, k409, k410, ____, ____, ____, k414, ____, k416, ____ }, \ + { k500, k501, k502, ____, ____, k505, ____, ____, ____, ____, k510, k511, ____, k513, k514, k515, k516, k517 } \ +} diff --git a/keyboards/kineticlabs/emu/hotswap/info.json b/keyboards/kineticlabs/emu/hotswap/info.json new file mode 100644 index 000000000000..106bdf8da94c --- /dev/null +++ b/keyboards/kineticlabs/emu/hotswap/info.json @@ -0,0 +1,98 @@ +{ + "keyboard_name": "Emu hotswap", + "url": "", + "maintainer": "kb-elmo", + "layouts": { + "LAYOUT_tkl_ansi": { + "layout": [ + {"x":0, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.5, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15.25, "y":0}, + {"x":16.25, "y":0}, + {"x":17.25, "y":0}, + {"x":0, "y":1.5}, + {"x":1, "y":1.5}, + {"x":2, "y":1.5}, + {"x":3, "y":1.5}, + {"x":4, "y":1.5}, + {"x":5, "y":1.5}, + {"x":6, "y":1.5}, + {"x":7, "y":1.5}, + {"x":8, "y":1.5}, + {"x":9, "y":1.5}, + {"x":10, "y":1.5}, + {"x":11, "y":1.5}, + {"x":12, "y":1.5}, + {"x":13, "y":1.5, "w":2}, + {"x":15.25, "y":1.5}, + {"x":16.25, "y":1.5}, + {"x":17.25, "y":1.5}, + {"x":0, "y":2.5, "w":1.5}, + {"x":1.5, "y":2.5}, + {"x":2.5, "y":2.5}, + {"x":3.5, "y":2.5}, + {"x":4.5, "y":2.5}, + {"x":5.5, "y":2.5}, + {"x":6.5, "y":2.5}, + {"x":7.5, "y":2.5}, + {"x":8.5, "y":2.5}, + {"x":9.5, "y":2.5}, + {"x":10.5, "y":2.5}, + {"x":11.5, "y":2.5}, + {"x":12.5, "y":2.5}, + {"x":13.5, "y":2.5, "w":1.5}, + {"x":15.25, "y":2.5}, + {"x":16.25, "y":2.5}, + {"x":17.25, "y":2.5}, + {"x":0, "y":3.5, "w":1.75}, + {"x":1.75, "y":3.5}, + {"x":2.75, "y":3.5}, + {"x":3.75, "y":3.5}, + {"x":4.75, "y":3.5}, + {"x":5.75, "y":3.5}, + {"x":6.75, "y":3.5}, + {"x":7.75, "y":3.5}, + {"x":8.75, "y":3.5}, + {"x":9.75, "y":3.5}, + {"x":10.75, "y":3.5}, + {"x":11.75, "y":3.5}, + {"x":12.75, "y":3.5, "w":2.25}, + {"x":0, "y":4.5, "w":2.25}, + {"x":2.25, "y":4.5}, + {"x":3.25, "y":4.5}, + {"x":4.25, "y":4.5}, + {"x":5.25, "y":4.5}, + {"x":6.25, "y":4.5}, + {"x":7.25, "y":4.5}, + {"x":8.25, "y":4.5}, + {"x":9.25, "y":4.5}, + {"x":10.25, "y":4.5}, + {"x":11.25, "y":4.5}, + {"x":12.25, "y":4.5, "w":2.75}, + {"x":16.25, "y":4.5}, + {"x":0, "y":5.5, "w":1.25}, + {"x":1.25, "y":5.5, "w":1.25}, + {"x":2.5, "y":5.5, "w":1.25}, + {"x":3.75, "y":5.5, "w":6.25}, + {"x":10, "y":5.5, "w":1.25}, + {"x":11.25, "y":5.5, "w":1.25}, + {"x":12.5, "y":5.5, "w":1.25}, + {"x":13.75, "y":5.5, "w":1.25}, + {"x":15.25, "y":5.5}, + {"x":16.25, "y":5.5}, + {"x":17.25, "y":5.5} + ] + } + } +} diff --git a/keyboards/kineticlabs/emu/hotswap/keymaps/default/keymap.c b/keyboards/kineticlabs/emu/hotswap/keymaps/default/keymap.c new file mode 100644 index 000000000000..01a14010e6ec --- /dev/null +++ b/keyboards/kineticlabs/emu/hotswap/keymaps/default/keymap.c @@ -0,0 +1,37 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_tkl_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_tkl_ansi( + KC_ESC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/kineticlabs/emu/hotswap/keymaps/via/keymap.c b/keyboards/kineticlabs/emu/hotswap/keymaps/via/keymap.c new file mode 100644 index 000000000000..f5702905ca61 --- /dev/null +++ b/keyboards/kineticlabs/emu/hotswap/keymaps/via/keymap.c @@ -0,0 +1,55 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_tkl_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_tkl_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_tkl_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_tkl_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/kineticlabs/emu/hotswap/keymaps/via/rules.mk b/keyboards/kineticlabs/emu/hotswap/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/kineticlabs/emu/hotswap/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/kineticlabs/emu/hotswap/readme.md b/keyboards/kineticlabs/emu/hotswap/readme.md new file mode 100644 index 000000000000..bf4b681a9db1 --- /dev/null +++ b/keyboards/kineticlabs/emu/hotswap/readme.md @@ -0,0 +1,21 @@ +# Emu + +![emu](https://i.imgur.com/OiAQ6Vbl.jpg) + +TKL keyboard made by KineticLabs + +* Keyboard Maintainer: [kb-elmo](https://github.com/kb-elmo) +* Hardware Supported: Emu soldered PCB +* Hardware Availability: Groupbuy + +Make example for this keyboard (after setting up your build environment): + + make kineticlabs/emu:default + +Flashing example for this keyboard: + + make kineticlabs/emu:default:flash + +**Bootloader:** Press the physical reset button on the bottom side of the PCB (labeled SW1) or hold down ESC while plugging in the board. + +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/kineticlabs/emu/hotswap/rules.mk b/keyboards/kineticlabs/emu/hotswap/rules.mk new file mode 100644 index 000000000000..468699f506f1 --- /dev/null +++ b/keyboards/kineticlabs/emu/hotswap/rules.mk @@ -0,0 +1,21 @@ +# 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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +LAYOUTS = tkl_ansi \ No newline at end of file diff --git a/keyboards/kineticlabs/emu/soldered/config.h b/keyboards/kineticlabs/emu/soldered/config.h new file mode 100644 index 000000000000..0921911192ac --- /dev/null +++ b/keyboards/kineticlabs/emu/soldered/config.h @@ -0,0 +1,42 @@ +/* +Copyright 2021 kb-elmo + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xE015 +#define PRODUCT_ID 0xC386 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Kineticlabs +#define PRODUCT Emu + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 18 + +/* Keyboard Matrix Assignments */ +#define MATRIX_ROW_PINS { E6, D4, B3, B1, B0, B7 } +#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D5, D3, D2, D1, D0 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 diff --git a/keyboards/kineticlabs/emu/soldered/info.json b/keyboards/kineticlabs/emu/soldered/info.json new file mode 100644 index 000000000000..d1a35a91d9b0 --- /dev/null +++ b/keyboards/kineticlabs/emu/soldered/info.json @@ -0,0 +1,280 @@ +{ + "keyboard_name": "Emu hotswap", + "url": "", + "maintainer": "kb-elmo", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"x":0, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.5, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15.25, "y":0}, + {"x":16.25, "y":0}, + {"x":17.25, "y":0}, + {"x":0, "y":1.5}, + {"x":1, "y":1.5}, + {"x":2, "y":1.5}, + {"x":3, "y":1.5}, + {"x":4, "y":1.5}, + {"x":5, "y":1.5}, + {"x":6, "y":1.5}, + {"x":7, "y":1.5}, + {"x":8, "y":1.5}, + {"x":9, "y":1.5}, + {"x":10, "y":1.5}, + {"x":11, "y":1.5}, + {"x":12, "y":1.5}, + {"x":13, "y":1.5}, + {"x":14, "y":1.5}, + {"x":15.25, "y":1.5}, + {"x":16.25, "y":1.5}, + {"x":17.25, "y":1.5}, + {"x":0, "y":2.5, "w":1.5}, + {"x":1.5, "y":2.5}, + {"x":2.5, "y":2.5}, + {"x":3.5, "y":2.5}, + {"x":4.5, "y":2.5}, + {"x":5.5, "y":2.5}, + {"x":6.5, "y":2.5}, + {"x":7.5, "y":2.5}, + {"x":8.5, "y":2.5}, + {"x":9.5, "y":2.5}, + {"x":10.5, "y":2.5}, + {"x":11.5, "y":2.5}, + {"x":12.5, "y":2.5}, + {"x":13.5, "y":2.5, "w":1.5}, + {"x":15.25, "y":2.5}, + {"x":16.25, "y":2.5}, + {"x":17.25, "y":2.5}, + {"x":0, "y":3.5, "w":1.75}, + {"x":1.75, "y":3.5}, + {"x":2.75, "y":3.5}, + {"x":3.75, "y":3.5}, + {"x":4.75, "y":3.5}, + {"x":5.75, "y":3.5}, + {"x":6.75, "y":3.5}, + {"x":7.75, "y":3.5}, + {"x":8.75, "y":3.5}, + {"x":9.75, "y":3.5}, + {"x":10.75, "y":3.5}, + {"x":11.75, "y":3.5}, + {"x":12.75, "y":3.5, "w":2.25}, + {"x":0, "y":4.5, "w":2.25}, + {"x":2.25, "y":4.5}, + {"x":3.25, "y":4.5}, + {"x":4.25, "y":4.5}, + {"x":5.25, "y":4.5}, + {"x":6.25, "y":4.5}, + {"x":7.25, "y":4.5}, + {"x":8.25, "y":4.5}, + {"x":9.25, "y":4.5}, + {"x":10.25, "y":4.5}, + {"x":11.25, "y":4.5}, + {"x":12.25, "y":4.5, "w":2.75}, + {"x":16.25, "y":4.5}, + {"x":0, "y":5.5, "w":1.25}, + {"x":1.25, "y":5.5, "w":1.25}, + {"x":2.5, "y":5.5, "w":1.25}, + {"x":3.75, "y":5.5, "w":6.25}, + {"x":10, "y":5.5, "w":1.25}, + {"x":11.25, "y":5.5, "w":1.25}, + {"x":12.5, "y":5.5, "w":1.25}, + {"x":13.75, "y":5.5, "w":1.25}, + {"x":15.25, "y":5.5}, + {"x":16.25, "y":5.5}, + {"x":17.25, "y":5.5} + ] + }, + "LAYOUT_tkl_ansi": { + "layout": [ + {"x":0, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.5, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15.25, "y":0}, + {"x":16.25, "y":0}, + {"x":17.25, "y":0}, + {"x":0, "y":1.5}, + {"x":1, "y":1.5}, + {"x":2, "y":1.5}, + {"x":3, "y":1.5}, + {"x":4, "y":1.5}, + {"x":5, "y":1.5}, + {"x":6, "y":1.5}, + {"x":7, "y":1.5}, + {"x":8, "y":1.5}, + {"x":9, "y":1.5}, + {"x":10, "y":1.5}, + {"x":11, "y":1.5}, + {"x":12, "y":1.5}, + {"x":13, "y":1.5, "w":2}, + {"x":15.25, "y":1.5}, + {"x":16.25, "y":1.5}, + {"x":17.25, "y":1.5}, + {"x":0, "y":2.5, "w":1.5}, + {"x":1.5, "y":2.5}, + {"x":2.5, "y":2.5}, + {"x":3.5, "y":2.5}, + {"x":4.5, "y":2.5}, + {"x":5.5, "y":2.5}, + {"x":6.5, "y":2.5}, + {"x":7.5, "y":2.5}, + {"x":8.5, "y":2.5}, + {"x":9.5, "y":2.5}, + {"x":10.5, "y":2.5}, + {"x":11.5, "y":2.5}, + {"x":12.5, "y":2.5}, + {"x":13.5, "y":2.5, "w":1.5}, + {"x":15.25, "y":2.5}, + {"x":16.25, "y":2.5}, + {"x":17.25, "y":2.5}, + {"x":0, "y":3.5, "w":1.75}, + {"x":1.75, "y":3.5}, + {"x":2.75, "y":3.5}, + {"x":3.75, "y":3.5}, + {"x":4.75, "y":3.5}, + {"x":5.75, "y":3.5}, + {"x":6.75, "y":3.5}, + {"x":7.75, "y":3.5}, + {"x":8.75, "y":3.5}, + {"x":9.75, "y":3.5}, + {"x":10.75, "y":3.5}, + {"x":11.75, "y":3.5}, + {"x":12.75, "y":3.5, "w":2.25}, + {"x":0, "y":4.5, "w":2.25}, + {"x":2.25, "y":4.5}, + {"x":3.25, "y":4.5}, + {"x":4.25, "y":4.5}, + {"x":5.25, "y":4.5}, + {"x":6.25, "y":4.5}, + {"x":7.25, "y":4.5}, + {"x":8.25, "y":4.5}, + {"x":9.25, "y":4.5}, + {"x":10.25, "y":4.5}, + {"x":11.25, "y":4.5}, + {"x":12.25, "y":4.5, "w":2.75}, + {"x":16.25, "y":4.5}, + {"x":0, "y":5.5, "w":1.25}, + {"x":1.25, "y":5.5, "w":1.25}, + {"x":2.5, "y":5.5, "w":1.25}, + {"x":3.75, "y":5.5, "w":6.25}, + {"x":10, "y":5.5, "w":1.25}, + {"x":11.25, "y":5.5, "w":1.25}, + {"x":12.5, "y":5.5, "w":1.25}, + {"x":13.75, "y":5.5, "w":1.25}, + {"x":15.25, "y":5.5}, + {"x":16.25, "y":5.5}, + {"x":17.25, "y":5.5} + ] + }, + "LAYOUT_tkl_ansi_wkl": { + "layout": [ + {"x":0, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.5, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15.25, "y":0}, + {"x":16.25, "y":0}, + {"x":17.25, "y":0}, + {"x":0, "y":1.5}, + {"x":1, "y":1.5}, + {"x":2, "y":1.5}, + {"x":3, "y":1.5}, + {"x":4, "y":1.5}, + {"x":5, "y":1.5}, + {"x":6, "y":1.5}, + {"x":7, "y":1.5}, + {"x":8, "y":1.5}, + {"x":9, "y":1.5}, + {"x":10, "y":1.5}, + {"x":11, "y":1.5}, + {"x":12, "y":1.5}, + {"x":13, "y":1.5, "w":2}, + {"x":15.25, "y":1.5}, + {"x":16.25, "y":1.5}, + {"x":17.25, "y":1.5}, + {"x":0, "y":2.5, "w":1.5}, + {"x":1.5, "y":2.5}, + {"x":2.5, "y":2.5}, + {"x":3.5, "y":2.5}, + {"x":4.5, "y":2.5}, + {"x":5.5, "y":2.5}, + {"x":6.5, "y":2.5}, + {"x":7.5, "y":2.5}, + {"x":8.5, "y":2.5}, + {"x":9.5, "y":2.5}, + {"x":10.5, "y":2.5}, + {"x":11.5, "y":2.5}, + {"x":12.5, "y":2.5}, + {"x":13.5, "y":2.5, "w":1.5}, + {"x":15.25, "y":2.5}, + {"x":16.25, "y":2.5}, + {"x":17.25, "y":2.5}, + {"x":0, "y":3.5, "w":1.75}, + {"x":1.75, "y":3.5}, + {"x":2.75, "y":3.5}, + {"x":3.75, "y":3.5}, + {"x":4.75, "y":3.5}, + {"x":5.75, "y":3.5}, + {"x":6.75, "y":3.5}, + {"x":7.75, "y":3.5}, + {"x":8.75, "y":3.5}, + {"x":9.75, "y":3.5}, + {"x":10.75, "y":3.5}, + {"x":11.75, "y":3.5}, + {"x":12.75, "y":3.5, "w":2.25}, + {"x":0, "y":4.5, "w":2.25}, + {"x":2.25, "y":4.5}, + {"x":3.25, "y":4.5}, + {"x":4.25, "y":4.5}, + {"x":5.25, "y":4.5}, + {"x":6.25, "y":4.5}, + {"x":7.25, "y":4.5}, + {"x":8.25, "y":4.5}, + {"x":9.25, "y":4.5}, + {"x":10.25, "y":4.5}, + {"x":11.25, "y":4.5}, + {"x":12.25, "y":4.5, "w":2.75}, + {"x":16.25, "y":4.5}, + {"x":0, "y":5.5, "w":1.5}, + {"x":1.5, "y":5.5}, + {"x":2.5, "y":5.5, "w":1.5}, + {"x":4, "y":5.5, "w":7}, + {"x":11, "y":5.5, "w":1.5}, + {"x":12.5, "y":5.5}, + {"x":13.5, "y":5.5, "w":1.5}, + {"x":15.25, "y":5.5}, + {"x":16.25, "y":5.5}, + {"x":17.25, "y":5.5} + ] + } + } +} diff --git a/keyboards/kineticlabs/emu/soldered/keymaps/default/keymap.c b/keyboards/kineticlabs/emu/soldered/keymaps/default/keymap.c new file mode 100644 index 000000000000..01a14010e6ec --- /dev/null +++ b/keyboards/kineticlabs/emu/soldered/keymaps/default/keymap.c @@ -0,0 +1,37 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_tkl_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_tkl_ansi( + KC_ESC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/kineticlabs/emu/soldered/keymaps/via/keymap.c b/keyboards/kineticlabs/emu/soldered/keymaps/via/keymap.c new file mode 100644 index 000000000000..874779d115da --- /dev/null +++ b/keyboards/kineticlabs/emu/soldered/keymaps/via/keymap.c @@ -0,0 +1,55 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/kineticlabs/emu/soldered/keymaps/via/rules.mk b/keyboards/kineticlabs/emu/soldered/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/kineticlabs/emu/soldered/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/kineticlabs/emu/soldered/keymaps/wkl/keymap.c b/keyboards/kineticlabs/emu/soldered/keymaps/wkl/keymap.c new file mode 100644 index 000000000000..1d6e49b3cda1 --- /dev/null +++ b/keyboards/kineticlabs/emu/soldered/keymaps/wkl/keymap.c @@ -0,0 +1,37 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_tkl_ansi_wkl( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_tkl_ansi_wkl( + KC_ESC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/kineticlabs/emu/soldered/readme.md b/keyboards/kineticlabs/emu/soldered/readme.md new file mode 100644 index 000000000000..5e979dd0ff0a --- /dev/null +++ b/keyboards/kineticlabs/emu/soldered/readme.md @@ -0,0 +1,21 @@ +# Emu Hotswap + +![emu](https://i.imgur.com/OiAQ6Vbl.jpg) + +TKL keyboard made by KineticLabs + +* Keyboard Maintainer: [kb-elmo](https://github.com/kb-elmo) +* Hardware Supported: Emu hotswap PCB +* Hardware Availability: Groupbuy + +Make example for this keyboard (after setting up your build environment): + + make kineticlabs/emu_hotswap:default + +Flashing example for this keyboard: + + make kineticlabs/emu_hotswap:default:flash + +**Bootloader:** Press the physical reset button on the bottom side of the PCB (labeled SW1) or hold down ESC while plugging in the board. + +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/kineticlabs/emu/soldered/rules.mk b/keyboards/kineticlabs/emu/soldered/rules.mk new file mode 100644 index 000000000000..468699f506f1 --- /dev/null +++ b/keyboards/kineticlabs/emu/soldered/rules.mk @@ -0,0 +1,21 @@ +# 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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +LAYOUTS = tkl_ansi \ No newline at end of file diff --git a/keyboards/kineticlabs/emu/soldered/soldered.c b/keyboards/kineticlabs/emu/soldered/soldered.c new file mode 100644 index 000000000000..b99b94e08ab7 --- /dev/null +++ b/keyboards/kineticlabs/emu/soldered/soldered.c @@ -0,0 +1,17 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "soldered.h" diff --git a/keyboards/kineticlabs/emu/soldered/soldered.h b/keyboards/kineticlabs/emu/soldered/soldered.h new file mode 100644 index 000000000000..3c11c1a51398 --- /dev/null +++ b/keyboards/kineticlabs/emu/soldered/soldered.h @@ -0,0 +1,69 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ____ KC_NO + +#define LAYOUT_all( \ + k000, k002, k003, k004, k005, k006, k007, k008, k009, k011, k012, k013, k014, k015, k016, k017, \ + k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k115, k116, k117, \ + k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k214, k215, k216, k217, \ + k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k314, \ + k400, k401, k402, k403, k404, k405, k406, k407, k408, k409, k410, k414, k416, \ + k500, k501, k502, k505, k510, k511, k513, k514, k515, k516, k517 \ +) { \ + { k000, ____, k002, k003, k004, k005, k006, k007, k008, k009, ____, k011, k012, k013, k014, k015, k016, k017 }, \ + { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k115, k116, k117 }, \ + { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, ____, k214, k215, k216, k217 }, \ + { k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, ____, ____, k314, ____, ____, ____ }, \ + { k400, k401, k402, k403, k404, k405, k406, k407, k408, k409, k410, ____, ____, ____, k414, ____, k416, ____ }, \ + { k500, k501, k502, ____, ____, k505, ____, ____, ____, ____, k510, k511, ____, k513, k514, k515, k516, k517 } \ +} + +#define LAYOUT_tkl_ansi( \ + k000, k002, k003, k004, k005, k006, k007, k008, k009, k011, k012, k013, k014, k015, k016, k017, \ + k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k114, k115, k116, k117, \ + k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k214, k215, k216, k217, \ + k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k314, \ + k400, k401, k402, k403, k404, k405, k406, k407, k408, k409, k410, k414, k416, \ + k500, k501, k502, k505, k510, k511, k513, k514, k515, k516, k517 \ +) { \ + { k000, ____, k002, k003, k004, k005, k006, k007, k008, k009, ____, k011, k012, k013, k014, k015, k016, k017 }, \ + { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, ____, k114, k115, k116, k117 }, \ + { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, ____, k214, k215, k216, k217 }, \ + { k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, ____, ____, k314, ____, ____, ____ }, \ + { k400, k401, k402, k403, k404, k405, k406, k407, k408, k409, k410, ____, ____, ____, k414, ____, k416, ____ }, \ + { k500, k501, k502, ____, ____, k505, ____, ____, ____, ____, k510, k511, ____, k513, k514, k515, k516, k517 } \ +} + +#define LAYOUT_tkl_ansi_wkl( \ + k000, k002, k003, k004, k005, k006, k007, k008, k009, k011, k012, k013, k014, k015, k016, k017, \ + k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k114, k115, k116, k117, \ + k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k214, k215, k216, k217, \ + k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k314, \ + k400, k401, k402, k403, k404, k405, k406, k407, k408, k409, k410, k414, k416, \ + k500, k501, k502, k505, k511, k513, k514, k515, k516, k517 \ +) { \ + { k000, ____, k002, k003, k004, k005, k006, k007, k008, k009, ____, k011, k012, k013, k014, k015, k016, k017 }, \ + { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, ____, k114, k115, k116, k117 }, \ + { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, ____, k214, k215, k216, k217 }, \ + { k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, ____, ____, k314, ____, ____, ____ }, \ + { k400, k401, k402, k403, k404, k405, k406, k407, k408, k409, k410, ____, ____, ____, k414, ____, k416, ____ }, \ + { k500, k501, k502, ____, ____, k505, ____, ____, ____, ____, ____, k511, ____, k513, k514, k515, k516, k517 } \ +} diff --git a/keyboards/kingly_keys/ave/ortho/info.json b/keyboards/kingly_keys/ave/ortho/info.json index 9853fcd775e4..e45a3bbe44a2 100644 --- a/keyboards/kingly_keys/ave/ortho/info.json +++ b/keyboards/kingly_keys/ave/ortho/info.json @@ -2,8 +2,6 @@ "keyboard_name": "The Ave. (Ortholinear Ed. PCB)", "url": "", "maintainer": "the-royal", - "width": 13.5, - "height": 5.5, "layouts": { "LAYOUT_ortho_all": { "layout": [ diff --git a/keyboards/kingly_keys/ave/ortho/rules.mk b/keyboards/kingly_keys/ave/ortho/rules.mk index 611eb0ce1a69..e429c614a3ce 100644 --- a/keyboards/kingly_keys/ave/ortho/rules.mk +++ b/keyboards/kingly_keys/ave/ortho/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = yes diff --git a/keyboards/kingly_keys/ave/staggered/info.json b/keyboards/kingly_keys/ave/staggered/info.json index 9a64cdeb360f..bb720b196bfc 100644 --- a/keyboards/kingly_keys/ave/staggered/info.json +++ b/keyboards/kingly_keys/ave/staggered/info.json @@ -2,8 +2,6 @@ "keyboard_name": "The Ave. (Staggered Ed. PCB)", "url": "", "maintainer": "the-royal", - "width": 13.5, - "height": 5.5, "layouts": { "LAYOUT_staggered": { "layout": [ diff --git a/keyboards/kingly_keys/ave/staggered/rules.mk b/keyboards/kingly_keys/ave/staggered/rules.mk index 611eb0ce1a69..e429c614a3ce 100644 --- a/keyboards/kingly_keys/ave/staggered/rules.mk +++ b/keyboards/kingly_keys/ave/staggered/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = yes diff --git a/keyboards/kingly_keys/little_foot/info.json b/keyboards/kingly_keys/little_foot/info.json index d8fa905521ba..a9bb79452168 100644 --- a/keyboards/kingly_keys/little_foot/info.json +++ b/keyboards/kingly_keys/little_foot/info.json @@ -2,15 +2,11 @@ "keyboard_name": "Little Foot", "url": "", "maintainer": "TheRoyalSweatshirt", - "width": 10, - "height": 5, "layouts": { "LAYOUT_split_space_base": { - "key_count": 44, "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":1.5, "y":4, "w":1.5}, {"x":3, "y":4, "w":2}, {"x":5, "y":4, "w":2}, {"x":7, "y":4, "w":1.5}] }, "LAYOUT_big_space_base": { - "key_count": 41, "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":1.5, "y":4, "w":7}] } } diff --git a/keyboards/kingly_keys/little_foot/rules.mk b/keyboards/kingly_keys/little_foot/rules.mk index c314b98ddd93..2fac64395abb 100644 --- a/keyboards/kingly_keys/little_foot/rules.mk +++ b/keyboards/kingly_keys/little_foot/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -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 diff --git a/keyboards/kingly_keys/romac/info.json b/keyboards/kingly_keys/romac/info.json index 305785991e09..9d93c4a13c13 100644 --- a/keyboards/kingly_keys/romac/info.json +++ b/keyboards/kingly_keys/romac/info.json @@ -2,11 +2,8 @@ "keyboard_name": "RoMac", "url": "", "maintainer": "TheRoyalSweatshirt", - "width": 3, - "height": 4, "layouts": { "LAYOUT": { - "key_count": 12, "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "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":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}] } } diff --git a/keyboards/kingly_keys/romac/keymaps/boss566y/keymap.c b/keyboards/kingly_keys/romac/keymaps/boss566y/keymap.c index a636bb47612e..6acb55dd53c0 100755 --- a/keyboards/kingly_keys/romac/keymaps/boss566y/keymap.c +++ b/keyboards/kingly_keys/romac/keymaps/boss566y/keymap.c @@ -71,12 +71,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { - return OLED_ROTATION_270; + return OLED_ROTATION_270; } -void oled_task_user(void) { +bool oled_task_user(void) { // Host Keyboard Layer Status sprintf(oled_layer,"Layer\nL: %d\n",get_highest_layer(layer_state)); oled_write(oled_layer,false); @@ -86,5 +86,6 @@ void oled_task_user(void) { oled_write_P(led_state.num_lock ? PSTR("NLCK ") : PSTR(" "), false); oled_write_P(led_state.caps_lock ? PSTR("CAPS ") : PSTR(" "), false); oled_write_P(led_state.scroll_lock ? PSTR("SCRLK") : PSTR(" "), false); + return false; } #endif diff --git a/keyboards/kingly_keys/romac/keymaps/boss566y/rules.mk b/keyboards/kingly_keys/romac/keymaps/boss566y/rules.mk index 73fd595ab828..eee9c0d533e1 100755 --- a/keyboards/kingly_keys/romac/keymaps/boss566y/rules.mk +++ b/keyboards/kingly_keys/romac/keymaps/boss566y/rules.mk @@ -1,3 +1,4 @@ VIA_ENABLE = yes BOOTLOADER = qmk-dfu -OLED_DRIVER_ENABLE = yes # Enable Support for SSD1306 or SH1106 OLED Displays; Communicating over I2C \ No newline at end of file +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enable Support for SSD1306 or SH1106 OLED Displays; Communicating over I2C diff --git a/keyboards/kingly_keys/romac/rules.mk b/keyboards/kingly_keys/romac/rules.mk index 9bd22f18b6f2..eb593dba962e 100644 --- a/keyboards/kingly_keys/romac/rules.mk +++ b/keyboards/kingly_keys/romac/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 -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 diff --git a/keyboards/kingly_keys/romac_plus/info.json b/keyboards/kingly_keys/romac_plus/info.json index 5c73db5b27bf..b24e0c942f95 100644 --- a/keyboards/kingly_keys/romac_plus/info.json +++ b/keyboards/kingly_keys/romac_plus/info.json @@ -2,11 +2,8 @@ "keyboard_name": "RoMac+", "url": "", "maintainer": "TheRoyalSweatshirt", - "width": 3, - "height": 4, "layouts": { "LAYOUT": { - "key_count": 12, "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "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":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}] } } diff --git a/keyboards/kingly_keys/romac_plus/keymaps/default/keymap.c b/keyboards/kingly_keys/romac_plus/keymaps/default/keymap.c index 556af1d1e04b..62c2349150a0 100644 --- a/keyboards/kingly_keys/romac_plus/keymaps/default/keymap.c +++ b/keyboards/kingly_keys/romac_plus/keymaps/default/keymap.c @@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_1, KC_2, KC_3, MO(1), KC_0, KC_DOT ), - + [FN] = LAYOUT( KC_TRNS, KC_HOME, KC_PGUP, KC_TRNS, KC_END, KC_PGDN, @@ -36,12 +36,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; // flips the display 180 degrees if offhand } -void oled_task_user(void) { +bool oled_task_user(void) { // Host Keyboard Layer Status oled_write_P(PSTR("Let's\nbuild\nsome-\nthing\nto-\nget-\nher!"), false); switch (get_highest_layer(layer_state)) { @@ -61,5 +61,7 @@ void oled_task_user(void) { oled_write_P(IS_LED_ON(led_usb_state, USB_LED_NUM_LOCK) ? PSTR("NLCK ") : PSTR(" "), false); oled_write_P(IS_LED_ON(led_usb_state, USB_LED_CAPS_LOCK) ? PSTR("CAPS ") : PSTR(" "), false); oled_write_P(IS_LED_ON(led_usb_state, USB_LED_SCROLL_LOCK) ? PSTR("SCRLK") : PSTR(" "), false); + + return false; } #endif diff --git a/keyboards/kingly_keys/romac_plus/rules.mk b/keyboards/kingly_keys/romac_plus/rules.mk index 806b6355bb46..dc8a0a5a2866 100644 --- a/keyboards/kingly_keys/romac_plus/rules.mk +++ b/keyboards/kingly_keys/romac_plus/rules.mk @@ -2,30 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes # Enable support for EC11 Rotary Encoder -OLED_DRIVER_ENABLE = yes # Enable Support for SSD1306 or SH1106 OLED Displays; Communicating over I2C +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enable Support for SSD1306 or SH1106 OLED Displays; Communicating over I2C diff --git a/keyboards/kingly_keys/ropro/info.json b/keyboards/kingly_keys/ropro/info.json index f7b62f664eb6..10fee26c9492 100644 --- a/keyboards/kingly_keys/ropro/info.json +++ b/keyboards/kingly_keys/ropro/info.json @@ -2,11 +2,8 @@ "keyboard_name": "ropro", "url": "https://github.com/TheRoyalSweatshirt/The_RoPro", "maintainer": "[TheRoyalSweatshirt](https://github.com/TheRoyalSweatshirt)", - "width": 13, - "height": 6, "layouts": { "LAYOUT": { - "key_count": 76, "layout": [{"label":"F1", "x":1, "y":0}, {"label":"F2", "x":2, "y":0}, {"label":"F3", "x":3, "y":0}, {"label":"F4", "x":4, "y":0}, {"label":"F5", "x":5, "y":0}, {"label":"F6", "x":6, "y":0}, {"label":"F7", "x":7, "y":0}, {"label":"F8", "x":8, "y":0}, {"label":"F9", "x":9, "y":0}, {"label":"F10", "x":10, "y":0}, {"label":"F11", "x":11, "y":0}, {"label":"F12", "x":12, "y":0}, {"label":"Esc", "x":1, "y":1}, {"label":"1", "x":2, "y":1}, {"label":"2", "x":3, "y":1}, {"label":"3", "x":4, "y":1}, {"label":"4", "x":5, "y":1}, {"label":"5", "x":6, "y":1}, {"label":"6;", "x":7, "y":1}, {"label":"7", "x":8, "y":1}, {"label":"8", "x":9, "y":1}, {"label":"9", "x":10, "y":1}, {"label":"0", "x":11, "y":1}, {"label":"-", "x":12, "y":1}, {"label":"CAPS", "x":0, "y":2}, {"label":"Tab", "x":1, "y":2}, {"label":"Q", "x":2, "y":2}, {"label":"W", "x":3, "y":2}, {"label":"E", "x":4, "y":2}, {"label":"R", "x":5, "y":2}, {"label":"T", "x":6, "y":2}, {"label":"Y", "x":7, "y":2}, {"label":"U", "x":8, "y":2}, {"label":"I", "x":9, "y":2}, {"label":"O", "x":10, "y":2}, {"label":"P", "x":11, "y":2}, {"label":"Bksp", "x":12, "y":2}, {"label":"PgUp", "x":0, "y":3}, {"label":"Ctrl", "x":1, "y":3}, {"label":"A", "x":2, "y":3}, {"label":"S", "x":3, "y":3}, {"label":"D", "x":4, "y":3}, {"label":"F", "x":5, "y":3}, {"label":"G", "x":6, "y":3}, {"label":"H;", "x":7, "y":3}, {"label":"J", "x":8, "y":3}, {"label":"K", "x":9, "y":3}, {"label":"L", "x":10, "y":3}, {"label":";", "x":11, "y":3}, {"label":"'", "x":12, "y":3}, {"label":"Home", "x":0, "y":4}, {"label":"Shift", "x":1, "y":4}, {"label":"Z", "x":2, "y":4}, {"label":"X", "x":3, "y":4}, {"label":"C", "x":4, "y":4}, {"label":"V", "x":5, "y":4}, {"label":"B", "x":6, "y":4}, {"label":"N", "x":7, "y":4}, {"label":"M", "x":8, "y":4}, {"label":",", "x":9, "y":4}, {"label":".", "x":10, "y":4}, {"label":"/", "x":11, "y":4}, {"label":"Enter", "x":12, "y":4}, {"label":"PgDn", "x":0, "y":5}, {"label":"Del", "x":1, "y":5}, {"label":"Ctrl", "x":2, "y":5}, {"label":"GUI", "x":3, "y":5}, {"label":"Alt", "x":4, "y":5}, {"label":"Lower", "x":5, "y":5}, {"x":6, "y":5}, {"x":7, "y":5}, {"label":"End", "x":8, "y":5}, {"label":"Left", "x":9, "y":5}, {"label":"Down", "x":10, "y":5}, {"label":"Up", "x":11, "y":5}, {"label":"Right", "x":12, "y":5}] } } diff --git a/keyboards/kingly_keys/ropro/rules.mk b/keyboards/kingly_keys/ropro/rules.mk index a8cce778058c..ae92df0b9205 100644 --- a/keyboards/kingly_keys/ropro/rules.mk +++ b/keyboards/kingly_keys/ropro/rules.mk @@ -2,30 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes RGBLIGHT_ENABLE = yes LAYOUTS_HAS_RGB = yes diff --git a/keyboards/kingly_keys/smd_milk/info.json b/keyboards/kingly_keys/smd_milk/info.json index 1b00ceeaaa0d..6b43f9e68de1 100644 --- a/keyboards/kingly_keys/smd_milk/info.json +++ b/keyboards/kingly_keys/smd_milk/info.json @@ -2,13 +2,9 @@ "keyboard_name": "smd_milk", "url": "", "maintainer": "TheRoyalSweatshirt", - "width": 1, - "height": 2, "layouts": { "LAYOUT": { - "key_count": 2, "layout": [ {"x": 0, "y": 0 }, {"x": 0, "y": 1 }] } } } - diff --git a/keyboards/kingly_keys/smd_milk/rules.mk b/keyboards/kingly_keys/smd_milk/rules.mk index f34f8891b916..e2586b1ac576 100644 --- a/keyboards/kingly_keys/smd_milk/rules.mk +++ b/keyboards/kingly_keys/smd_milk/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u2 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # Audio control and System control 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 - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work 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 diff --git a/keyboards/kingly_keys/soap/info.json b/keyboards/kingly_keys/soap/info.json index 257391eea21b..afdacddb8d98 100644 --- a/keyboards/kingly_keys/soap/info.json +++ b/keyboards/kingly_keys/soap/info.json @@ -2,11 +2,8 @@ "keyboard_name": "soap", "url": "https://github.com/TheRoyalSweatshirt/SOAP", "maintainer": "[TheRoyalSweatshirt](https://github.com/TheRoyalSweatshirt)", - "width": 4, - "height": 2, "layouts": { "LAYOUT": { - "key_count": 8, "layout": [{"label":"K00", "x":0, "y":0}, {"label":"K01", "x":1, "y":0}, {"label":"K02", "x":2, "y":0}, {"label":"K03", "x":4, "y":0}, {"label":"K10", "x":0, "y":1}, {"label":"K11", "x":1, "y":1}, {"label":"K12", "x":2, "y":1}, {"label":"K13", "x":4, "y":1}] } } diff --git a/keyboards/kingly_keys/soap/rules.mk b/keyboards/kingly_keys/soap/rules.mk index e6d997bfe490..4ab3fe83828d 100644 --- a/keyboards/kingly_keys/soap/rules.mk +++ b/keyboards/kingly_keys/soap/rules.mk @@ -2,30 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes RGBLIGHT_ENABLE = yes LAYOUTS_HAS_RGB = yes diff --git a/keyboards/kira75/config.h b/keyboards/kira75/config.h index ca6c16fcdb48..373c3e4f0b12 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -98,54 +97,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -163,25 +114,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - -#endif diff --git a/keyboards/kira75/info.json b/keyboards/kira75/info.json index 9111053ae93d..131e57081069 100644 --- a/keyboards/kira75/info.json +++ b/keyboards/kira75/info.json @@ -2,11 +2,9 @@ "keyboard_name": "Kira 75", "url": "", "maintainer": "qmk", - "width": 16, - "height": 6, "layouts": { "LAYOUT": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, {"label":"F2", "x":2, "y":0}, {"label":"F3", "x":3, "y":0}, {"label":"F4", "x":4, "y":0}, {"label":"F5", "x":5, "y":0}, {"label":"F6", "x":6, "y":0}, {"label":"F7", "x":7, "y":0}, {"label":"F8", "x":8, "y":0}, {"label":"F9", "x":9, "y":0}, {"label":"F10", "x":10, "y":0}, {"label":"F11", "x":11, "y":0}, {"label":"F12", "x":12, "y":0}, {"label":"PrtSc", "x":13, "y":0}, {"label":"Pause", "x":14, "y":0}, {"label":"Delete", "x":15, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"@", "x":2, "y":1}, {"label":"#", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"label":"Backspace", "x":13, "y":1, "w":2}, {"label":"Home", "x":15, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"Page Up", "x":15, "y":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"\"", "x":11.75, "y":3}, {"label":"Enter", "x":12.75, "y":3, "w":2.25}, {"label":"Page Down", "x":15, "y":3}, {"label":"Shift", "x":0, "y":4, "w":2.25}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"label":"\u2191", "x":14, "y":4}, {"label":"End", "x":15, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5, "w":1.5}, {"label":"Ctrl", "x":11.5, "y":5, "w":1.5}, {"label":"\u2190", "x":13, "y":5}, {"label":"\u2193", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}] } } -} \ No newline at end of file +} diff --git a/keyboards/kira75/keymaps/default/keymap.c b/keyboards/kira75/keymaps/default/keymap.c index 74fa1ed84499..b98de1d395e2 100644 --- a/keyboards/kira75/keymaps/default/keymap.c +++ b/keyboards/kira75/keymaps/default/keymap.c @@ -25,19 +25,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT \ ), }; - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/kira75/kira75.c b/keyboards/kira75/kira75.c index 4b53290bef1c..bf9afcc8f1ae 100644 --- a/keyboards/kira75/kira75.c +++ b/keyboards/kira75/kira75.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "kira75.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/kira75/kira75.h b/keyboards/kira75/kira75.h index 8c564f20826c..27fdab02db69 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 . */ -#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/kira75/rules.mk b/keyboards/kira75/rules.mk index e6066e582759..b8254e1211d6 100644 --- a/keyboards/kira75/rules.mk +++ b/keyboards/kira75/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/kira80/info.json b/keyboards/kira80/info.json index bd096eb600f8..04c32798a4b0 100644 --- a/keyboards/kira80/info.json +++ b/keyboards/kira80/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Kira 80", "url": "", "maintainer": "qmk", - "width": 18.25, - "height": 6.25, "layouts": { "LAYOUT_all": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"label":"Back", "x":13, "y":1.25}, {"label":"Back", "x":14, "y":1.25}, {"label":"Insert", "x":15.25, "y":1.25}, {"label":"Home", "x":16.25, "y":1.25}, {"label":"PgUp", "x":17.25, "y":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Y", "x":6.5, "y":2.25}, {"label":"U", "x":7.5, "y":2.25}, {"label":"I", "x":8.5, "y":2.25}, {"label":"O", "x":9.5, "y":2.25}, {"label":"P", "x":10.5, "y":2.25}, {"label":"{", "x":11.5, "y":2.25}, {"label":"}", "x":12.5, "y":2.25}, {"label":"|", "x":13.5, "y":2.25, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.25}, {"label":"End", "x":16.25, "y":2.25}, {"label":"PgDn", "x":17.25, "y":2.25}, {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"H", "x":6.75, "y":3.25}, {"label":"J", "x":7.75, "y":3.25}, {"label":"K", "x":8.75, "y":3.25}, {"label":"L", "x":9.75, "y":3.25}, {"label":":", "x":10.75, "y":3.25}, {"label":"\"", "x":11.75, "y":3.25}, {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, {"label":"Shift", "x":0, "y":4.25, "w":1.25}, {"label":"|", "x":1.25, "y":4.25}, {"label":"Z", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"N", "x":7.25, "y":4.25}, {"label":"M", "x":8.25, "y":4.25}, {"label":"<", "x":9.25, "y":4.25}, {"label":">", "x":10.25, "y":4.25}, {"label":"?", "x":11.25, "y":4.25}, {"label":"Shift", "x":12.25, "y":4.25, "w":1.75}, {"label":"FN", "x":14, "y":4.25}, {"label":"\u2191", "x":16.25, "y":4.25}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, {"x":3.75, "y":5.25, "w":6.25}, {"label":"Alt", "x":10, "y":5.25, "w":1.25}, {"label":"Win", "x":11.25, "y":5.25, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.25, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.25}, {"label":"\u2193", "x":16.25, "y":5.25}, {"label":"\u2192", "x":17.25, "y":5.25}] diff --git a/keyboards/kira80/rules.mk b/keyboards/kira80/rules.mk index 02f34c5e8c56..c1207e4b74a8 100644 --- a/keyboards/kira80/rules.mk +++ b/keyboards/kira80/rules.mk @@ -2,19 +2,12 @@ MCU = atmega32a # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 diff --git a/keyboards/kiwikeebs/macro/config.h b/keyboards/kiwikeebs/macro/config.h index 5753b52a0bff..d9dcc3ba60ec 100644 --- a/keyboards/kiwikeebs/macro/config.h +++ b/keyboards/kiwikeebs/macro/config.h @@ -20,7 +20,7 @@ along with this program. If not, see . #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED +#define VENDOR_ID 0x4B51 #define PRODUCT_ID 0x4712 #define DEVICE_VER 0x0001 #define MANUFACTURER KiwiKeebs diff --git a/keyboards/kiwikeebs/macro/info.json b/keyboards/kiwikeebs/macro/info.json index 00726a02f4cf..de9ce2f01fcf 100644 --- a/keyboards/kiwikeebs/macro/info.json +++ b/keyboards/kiwikeebs/macro/info.json @@ -1,9 +1,7 @@ { - "keyboard_name": "KiwiKeebs MacroBoard v.10", + "keyboard_name": "KiwiKeebs MacroBoard v1.0", "url": "https://www.reddit.com/r/mechmarket/comments/ibijrd/ic_kiwikeebs_6key_macroboard_rotary_encoder_diy/", "maintainer": "KiwiKeebs", - "width": 5, - "height": 2, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/kiwikeebs/macro/keymaps/default/keymap.c b/keyboards/kiwikeebs/macro/keymaps/default/keymap.c index 7d1acce308fd..caa6b4aafcc0 100644 --- a/keyboards/kiwikeebs/macro/keymaps/default/keymap.c +++ b/keyboards/kiwikeebs/macro/keymaps/default/keymap.c @@ -18,17 +18,27 @@ // Defines names for use in layer keycodes and the keymap enum layer_names { _BASE, - _FN + _FN1, + _FN2, + _FN3 }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Base */ [_BASE] = LAYOUT( - KC_DEL, KC_HOME, LT(_FN,KC_END), + KC_DEL, KC_HOME, LT(_FN1,KC_END), KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE ), - [_FN] = LAYOUT( - KC_1, KC_UP, _______, - KC_LEFT, KC_DOWN, KC_RGHT, _______ + [_FN1] = LAYOUT( + RESET, KC_UP, _______, + KC_LEFT, KC_DOWN, KC_RGHT, MAGIC_TOGGLE_NKRO + ), + [_FN2] = LAYOUT( + _______, _______, _______, + _______, _______, _______, _______ + ), + [_FN3] = LAYOUT( + _______, _______, _______, + _______, _______, _______, _______ ) }; diff --git a/keyboards/kiwikeebs/macro/keymaps/via/keymap.c b/keyboards/kiwikeebs/macro/keymaps/via/keymap.c new file mode 100644 index 000000000000..56dffdbd93a7 --- /dev/null +++ b/keyboards/kiwikeebs/macro/keymaps/via/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2020 KiwiKeebs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT( + KC_DEL, KC_HOME, LT(_FN,KC_END), + KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE + ), + [_FN] = LAYOUT( + RESET, KC_UP, _______, + KC_LEFT, KC_DOWN, KC_RGHT, MAGIC_TOGGLE_NKRO + ) +}; diff --git a/keyboards/kiwikeebs/macro/keymaps/via/rules.mk b/keyboards/kiwikeebs/macro/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/kiwikeebs/macro/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/kiwikeebs/macro/readme.md b/keyboards/kiwikeebs/macro/readme.md new file mode 100644 index 000000000000..ce9d4ea8cc0b --- /dev/null +++ b/keyboards/kiwikeebs/macro/readme.md @@ -0,0 +1,19 @@ +# KiwiKeebs MacroBoard V1.0 + +![KiwiKeebs](https://kiwikeebs.co.uk/wp-content/themes/storefront-child-theme-master/images/kiwikeebs-logo.svg) + +A 6 Key PCB with Rotary Encoder Knob + Button made from solid CNC aluminium. + +* Keyboard Maintainer: [AKiwi92](https://github.com/akiwi92) +* Hardware Supported: KiwiKeebs MacroBoard V1.0 +* Hardware Availability: [reddit.com](https://www.reddit.com/r/mechmarket/comments/ibijrd/ic_kiwikeebs_6key_macroboard_rotary_encoder_diy/) + +Make example for this keyboard (after setting up your build environment): + + make kiwikeebs/macro:default + +Flashing example for this keyboard: + + make kiwikeebs/macro:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/kiwikeebs/macro/rules.mk b/keyboards/kiwikeebs/macro/rules.mk index 0c3a849c4f1e..54b88e25cfbb 100644 --- a/keyboards/kiwikeebs/macro/rules.mk +++ b/keyboards/kiwikeebs/macro/rules.mk @@ -7,15 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -NKRO_ENABLE = no # USB Nkey Rollover +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 ENCODER_ENABLE = yes \ No newline at end of file diff --git a/keyboards/kiwikeebs/macro_v2/config.h b/keyboards/kiwikeebs/macro_v2/config.h new file mode 100644 index 000000000000..9ecc4d6686b6 --- /dev/null +++ b/keyboards/kiwikeebs/macro_v2/config.h @@ -0,0 +1,108 @@ +/* +Copyright 2020 KiwiKeebs + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4B51 +#define PRODUCT_ID 0x4712 +#define DEVICE_VER 0x0001 +#define MANUFACTURER KiwiKeebs +#define PRODUCT MacroBoard v.2.0 + +/* key matrix size */ +#define MATRIX_ROWS 2 +#define MATRIX_COLS 4 + +/* + * 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 { B5, B4 } +#define MATRIX_COL_PINS { B6, C6, C7, D4 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +#define ENCODERS_PAD_A { D7 } +#define ENCODERS_PAD_B { D6 } + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/kiwikeebs/macro_v2/info.json b/keyboards/kiwikeebs/macro_v2/info.json new file mode 100644 index 000000000000..524e259463db --- /dev/null +++ b/keyboards/kiwikeebs/macro_v2/info.json @@ -0,0 +1,19 @@ +{ + "keyboard_name": "KiwiKeebs MacroBoard v.2.0", + "url": "https://www.reddit.com/r/mechmarket/comments/ibijrd/ic_kiwikeebs_6key_macroboard_rotary_encoder_diy/", + "maintainer": "KiwiKeebs", + "layouts": { + "LAYOUT": { + "layout": [ + { "label": "k00", "x": 0, "y": 0 }, + { "label": "k01", "x": 1, "y": 0 }, + { "label": "k02", "x": 2, "y": 0 }, + + { "label": "k03", "x": 0, "y": 1 }, + { "label": "k04", "x": 1, "y": 1 }, + { "label": "k05", "x": 2, "y": 1 }, + { "label": "k06", "x": 3, "y": 0, "h":2, "w":2 } + ] + } + } +} diff --git a/keyboards/kiwikeebs/macro_v2/keymaps/default/keymap.c b/keyboards/kiwikeebs/macro_v2/keymaps/default/keymap.c new file mode 100644 index 000000000000..dd0def64b6b8 --- /dev/null +++ b/keyboards/kiwikeebs/macro_v2/keymaps/default/keymap.c @@ -0,0 +1,44 @@ +/* Copyright 2020 KiwiKeebs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN1, + _FN2, + _FN3 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT( + KC_DEL, KC_HOME, LT(_FN1,KC_END), + KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE + ), + [_FN1] = LAYOUT( + RESET, KC_UP, _______, + KC_LEFT, KC_DOWN, KC_RGHT, MAGIC_TOGGLE_NKRO + ), + [_FN2] = LAYOUT( + _______, _______, _______, + _______, _______, _______, _______ + ), + [_FN3] = LAYOUT( + _______, _______, _______, + _______, _______, _______, _______ + ) +}; \ No newline at end of file diff --git a/keyboards/kiwikeebs/macro_v2/keymaps/via/keymap.c b/keyboards/kiwikeebs/macro_v2/keymaps/via/keymap.c new file mode 100644 index 000000000000..56dffdbd93a7 --- /dev/null +++ b/keyboards/kiwikeebs/macro_v2/keymaps/via/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2020 KiwiKeebs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT( + KC_DEL, KC_HOME, LT(_FN,KC_END), + KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE + ), + [_FN] = LAYOUT( + RESET, KC_UP, _______, + KC_LEFT, KC_DOWN, KC_RGHT, MAGIC_TOGGLE_NKRO + ) +}; diff --git a/keyboards/kiwikeebs/macro_v2/keymaps/via/rules.mk b/keyboards/kiwikeebs/macro_v2/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/kiwikeebs/macro_v2/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/kiwikeebs/macro_v2/macro_v2.c b/keyboards/kiwikeebs/macro_v2/macro_v2.c new file mode 100644 index 000000000000..795da21cc981 --- /dev/null +++ b/keyboards/kiwikeebs/macro_v2/macro_v2.c @@ -0,0 +1,29 @@ +/* Copyright 2020 KiwiKeebs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "macro_v2.h" + +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) return false; + if (index == 0) { /* First encoder */ + if (clockwise) { + tap_code(KC_AUDIO_VOL_UP); + } else { + tap_code(KC_AUDIO_VOL_DOWN); + } + } + return true; +} diff --git a/keyboards/kiwikeebs/macro_v2/macro_v2.h b/keyboards/kiwikeebs/macro_v2/macro_v2.h new file mode 100644 index 000000000000..ee7c6bd47d95 --- /dev/null +++ b/keyboards/kiwikeebs/macro_v2/macro_v2.h @@ -0,0 +1,35 @@ +/* Copyright 2020 KiwiKeebs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + k00, k01, k02, \ + k03, k04, k05, k06 \ +) { \ + { k00, k01, k02, KC_NO }, \ + { k03, k04, k05, k06 } \ +} diff --git a/keyboards/kiwikeebs/macro_v2/readme.md b/keyboards/kiwikeebs/macro_v2/readme.md new file mode 100644 index 000000000000..a581f9cbcef3 --- /dev/null +++ b/keyboards/kiwikeebs/macro_v2/readme.md @@ -0,0 +1,19 @@ +# KiwiKeebs MacroBoard V2.0 + +![KiwiKeebs](https://i.imgur.com/h5i9jBl.png) + +A 6 Key PCB with Rotary Encoder Knob + Button made from solid CNC aluminium. + +* Keyboard Maintainer: [AKiwi92](https://github.com/akiwi92) +* Hardware Supported: KiwiKeebs MacroBoard V1.0 +* Hardware Availability: [reddit.com](https://www.reddit.com/r/mechmarket/comments/ibijrd/ic_kiwikeebs_6key_macroboard_rotary_encoder_diy/) + +Make example for this keyboard (after setting up your build environment): + + make kiwikeebs/macro_v2:default + +Flashing example for this keyboard: + + make kiwikeebs/macro_v2:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/kiwikeebs/macro_v2/rules.mk b/keyboards/kiwikeebs/macro_v2/rules.mk new file mode 100644 index 000000000000..bda5f6c7d1fd --- /dev/null +++ b/keyboards/kiwikeebs/macro_v2/rules.mk @@ -0,0 +1,19 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +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 diff --git a/keyboards/kiwikeebs/readme.md b/keyboards/kiwikeebs/readme.md deleted file mode 100644 index 61a1441bd759..000000000000 --- a/keyboards/kiwikeebs/readme.md +++ /dev/null @@ -1,19 +0,0 @@ -# KiwiKeebs MacroBoard V1.0 - -![KiwiKeebs](https://i.imgur.com/h5i9jBl.png) - -A 6 Key PCB with Rotary Encoder Knob + Button made from solid CNC aluminium. - -* Keyboard Maintainer: [AKiwi92](https://github.com/akiwi92) -* Hardware Supported: KiwiKeebs MacroBoard V1.0 -* Hardware Availability: [reddit.com](https://www.reddit.com/r/mechmarket/comments/ibijrd/ic_kiwikeebs_6key_macroboard_rotary_encoder_diy/) - -Make example for this keyboard (after setting up your build environment): - - make kiwikeebsmacro:default - -Flashing example for this keyboard: - - make kiwikeebsmacro:default:flash - -See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/kiwikey/kawii9/info.json b/keyboards/kiwikey/kawii9/info.json index dac034f7e5f3..367f402f7b9c 100644 --- a/keyboards/kiwikey/kawii9/info.json +++ b/keyboards/kiwikey/kawii9/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Kawii9", "url": "http://kiwikey.vn/kawii9/", "maintainer": "KiwiKey", - "width": 3, - "height": 3, "layouts": { "LAYOUT_ortho_3x3": { "layout": [ diff --git a/keyboards/kiwikey/kawii9/rules.mk b/keyboards/kiwikey/kawii9/rules.mk index 682c48b1205c..b85e0b74bf92 100644 --- a/keyboards/kiwikey/kawii9/rules.mk +++ b/keyboards/kiwikey/kawii9/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 NO_USB_STARTUP_CHECK = yes diff --git a/keyboards/kiwikey/wanderland/info.json b/keyboards/kiwikey/wanderland/info.json index 4afd4561377e..01196c341831 100644 --- a/keyboards/kiwikey/wanderland/info.json +++ b/keyboards/kiwikey/wanderland/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Wanderland", "url": "http://kiwikey.vn/wanderland", "maintainer": "KiwiKey", - "width": 18.25, - "height": 5, "layouts": { "LAYOUT_alice_split_bs": { "layout": [ diff --git a/keyboards/kiwikey/wanderland/keymaps/stanrc85/keymap.c b/keyboards/kiwikey/wanderland/keymaps/stanrc85/keymap.c index a2f65ae5ee81..c535306afc94 100644 --- a/keyboards/kiwikey/wanderland/keymaps/stanrc85/keymap.c +++ b/keyboards/kiwikey/wanderland/keymaps/stanrc85/keymap.c @@ -50,8 +50,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -#ifdef OLED_DRIVER_ENABLE -void oled_task_user(void) { +#ifdef OLED_ENABLE +bool oled_task_user(void) { static const char PROGMEM qmk_logo[] = { 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, @@ -81,41 +81,7 @@ void oled_task_user(void) { oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); -} -#endif - -// Backlight timeout feature -#define BACKLIGHT_TIMEOUT 20 // in minutes -static uint16_t idle_timer = 0; -static uint8_t halfmin_counter = 0; -static bool led_on = true; -static bool rgb_on = true; - -void matrix_scan_user(void) { - // idle_timer needs to be set one time - if (idle_timer == 0) idle_timer = timer_read(); - if ( (led_on && timer_elapsed(idle_timer) > 30000) || (rgb_on && timer_elapsed(idle_timer) > 30000)) { - halfmin_counter++; - idle_timer = timer_read(); - } - if ( (led_on && halfmin_counter >= BACKLIGHT_TIMEOUT * 2) || (rgb_on && halfmin_counter >= BACKLIGHT_TIMEOUT * 2)) { - rgblight_disable_noeeprom(); - led_on = false; - rgb_on = false; - halfmin_counter = 0; - } -}; - -bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { - if (record->event.pressed) { - if (led_on == false || rgb_on == false ) { - rgblight_enable_noeeprom(); - led_on = true; - rgb_on = true; - } - idle_timer = timer_read(); - halfmin_counter = 0; - } - return true; + return false; } +#endif diff --git a/keyboards/kiwikey/wanderland/keymaps/stanrc85/rules.mk b/keyboards/kiwikey/wanderland/keymaps/stanrc85/rules.mk index c582662134c4..d34d066ded93 100644 --- a/keyboards/kiwikey/wanderland/keymaps/stanrc85/rules.mk +++ b/keyboards/kiwikey/wanderland/keymaps/stanrc85/rules.mk @@ -1 +1,2 @@ -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/kiwikey/wanderland/rules.mk b/keyboards/kiwikey/wanderland/rules.mk index a48a691a9140..36b911a40093 100644 --- a/keyboards/kiwikey/wanderland/rules.mk +++ b/keyboards/kiwikey/wanderland/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/kmac/config.h b/keyboards/kmac/config.h index 45cbff9fa281..23cf0a04708a 100644 --- a/keyboards/kmac/config.h +++ b/keyboards/kmac/config.h @@ -38,7 +38,7 @@ along with this program. If not, see . #define MATRIX_ROW_PINS \ { D0, D1, D2, D3, D5, B7 } #define MATRIX_COL_PINS \ - { B6, C6, C7, F1, F0, B5 } + { B6, C6, C7, F1, F0, B5, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN } #define UNUSED_PINS /* COL2ROW, ROW2COL*/ @@ -85,54 +85,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -150,23 +102,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 diff --git a/keyboards/kmac/info.json b/keyboards/kmac/info.json index 6a98fab0a447..91e7a2dedddc 100644 --- a/keyboards/kmac/info.json +++ b/keyboards/kmac/info.json @@ -1,11 +1,8 @@ { "keyboard_name": "kmac", "maintainer": "qmk", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT_tkl_ansi": { - "key_count": 87, "layout": [ { "label": "Esc", "x": 0, "y": 0 }, { "label": "F1", "x": 2, "y": 0 }, @@ -97,7 +94,6 @@ ] }, "LAYOUT_tkl_ansi_wkl": { - "key_count": 84, "layout": [ { "label": "Esc", "x": 0, "y": 0 }, { "label": "F1", "x": 2, "y": 0 }, diff --git a/keyboards/kmac/keymaps/default/keymap.c b/keyboards/kmac/keymaps/default/keymap.c index a67a4d10d3ea..70f3a5a368b8 100644 --- a/keyboards/kmac/keymaps/default/keymap.c +++ b/keyboards/kmac/keymaps/default/keymap.c @@ -79,9 +79,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; }; - -void matrix_init_user(void) {} - -void matrix_scan_user(void) {} - -void led_set_user(uint8_t usb_led) {} diff --git a/keyboards/kmac/keymaps/default_tkl_ansi/keymap.c b/keyboards/kmac/keymaps/default_tkl_ansi/keymap.c index a67a4d10d3ea..70f3a5a368b8 100644 --- a/keyboards/kmac/keymaps/default_tkl_ansi/keymap.c +++ b/keyboards/kmac/keymaps/default_tkl_ansi/keymap.c @@ -79,9 +79,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; }; - -void matrix_init_user(void) {} - -void matrix_scan_user(void) {} - -void led_set_user(uint8_t usb_led) {} diff --git a/keyboards/kmac/keymaps/default_tkl_ansi_wkl/keymap.c b/keyboards/kmac/keymaps/default_tkl_ansi_wkl/keymap.c index 6b495855602b..316fc7c0fdea 100644 --- a/keyboards/kmac/keymaps/default_tkl_ansi_wkl/keymap.c +++ b/keyboards/kmac/keymaps/default_tkl_ansi_wkl/keymap.c @@ -79,9 +79,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; }; - -void matrix_init_user(void) {} - -void matrix_scan_user(void) {} - -void led_set_user(uint8_t usb_led) {} diff --git a/keyboards/kmac/rules.mk b/keyboards/kmac/rules.mk index 2a35f70cdf87..844d420622c1 100644 --- a/keyboards/kmac/rules.mk +++ b/keyboards/kmac/rules.mk @@ -5,34 +5,22 @@ MCU = atmega32u4 F_CPU = 8000000 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration CUSTOM_MATRIX = yes # Custom matrix file -# 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 = yes # Enable keyboard backlight functionality BACKLIGHT_DRIVER = custom -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output # Project specific files SRC += matrix.c diff --git a/keyboards/kmac_pad/info.json b/keyboards/kmac_pad/info.json index 6a17b3d452a0..26bb3b66d98b 100644 --- a/keyboards/kmac_pad/info.json +++ b/keyboards/kmac_pad/info.json @@ -1,8 +1,6 @@ { "keyboard_name": "KMAC PAD", "maintainer": "talsu", - "width": 4, - "height": 6.5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/kmac_pad/rules.mk b/keyboards/kmac_pad/rules.mk index 3f63076c41e2..1d84ee99ebbc 100644 --- a/keyboards/kmac_pad/rules.mk +++ b/keyboards/kmac_pad/rules.mk @@ -10,18 +10,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output CUSTOM_MATRIX = lite # Custom matrix file diff --git a/keyboards/kmini/config.h b/keyboards/kmini/config.h index a0592b4ecfa9..c242aff0d05a 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 . */ -#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/info.json b/keyboards/kmini/info.json index 8d31f04fe143..a3b61c3cb208 100755 --- a/keyboards/kmini/info.json +++ b/keyboards/kmini/info.json @@ -2,8 +2,6 @@ "keyboard_name": "KMAC Mini", "url": "http://kbdmodadmin.cafe24.com/product/detail.html?product_no=12&cate_no=4&display_group=1", "maintainer": "evyd13", - "width": 18.25, - "height": 5, "layouts": { "LAYOUT": { "layout": [{"label":"F1", "x":0, "y":0}, {"label":"F2", "x":1, "y":0}, {"label":"Esc", "x":2.25, "y":0}, {"label":"!", "x":3.25, "y":0}, {"label":"@", "x":4.25, "y":0}, {"label":"#", "x":5.25, "y":0}, {"label":"$", "x":6.25, "y":0}, {"label":"%", "x":7.25, "y":0}, {"label":"^", "x":8.25, "y":0}, {"label":"&", "x":9.25, "y":0}, {"label":"*", "x":10.25, "y":0}, {"label":"(", "x":11.25, "y":0}, {"label":")", "x":12.25, "y":0}, {"label":"_", "x":13.25, "y":0}, {"label":"+", "x":14.25, "y":0}, {"label":"Backspace", "x":15.25, "y":0, "w":2}, {"label":"Insert", "x":17.25, "y":0}, {"label":"F3", "x":0, "y":1}, {"label":"F4", "x":1, "y":1}, {"label":"Tab", "x":2.25, "y":1, "w":1.5}, {"label":"Q", "x":3.75, "y":1}, {"label":"W", "x":4.75, "y":1}, {"label":"E", "x":5.75, "y":1}, {"label":"R", "x":6.75, "y":1}, {"label":"T", "x":7.75, "y":1}, {"label":"Y", "x":8.75, "y":1}, {"label":"U", "x":9.75, "y":1}, {"label":"I", "x":10.75, "y":1}, {"label":"O", "x":11.75, "y":1}, {"label":"P", "x":12.75, "y":1}, {"label":"{", "x":13.75, "y":1}, {"label":"}", "x":14.75, "y":1}, {"label":"|", "x":15.75, "y":1, "w":1.5}, {"label":"Delete", "x":17.25, "y":1}, {"label":"F5", "x":0, "y":2}, {"label":"F6", "x":1, "y":2}, {"label":"Caps Lock", "x":2.25, "y":2, "w":1.75}, {"label":"A", "x":4, "y":2}, {"label":"S", "x":5, "y":2}, {"label":"D", "x":6, "y":2}, {"label":"F", "x":7, "y":2}, {"label":"G", "x":8, "y":2}, {"label":"H", "x":9, "y":2}, {"label":"J", "x":10, "y":2}, {"label":"K", "x":11, "y":2}, {"label":"L", "x":12, "y":2}, {"label":":", "x":13, "y":2}, {"label":"\"", "x":14, "y":2}, {"label":"Enter", "x":15, "y":2, "w":2.25}, {"label":"PgUp", "x":17.25, "y":2}, {"label":"F7", "x":0, "y":3}, {"label":"F8", "x":1, "y":3}, {"label":"Shift", "x":2.25, "y":3, "w":2.25}, {"label":"Z", "x":4.5, "y":3}, {"label":"X", "x":5.5, "y":3}, {"label":"C", "x":6.5, "y":3}, {"label":"V", "x":7.5, "y":3}, {"label":"B", "x":8.5, "y":3}, {"label":"N", "x":9.5, "y":3}, {"label":"M", "x":10.5, "y":3}, {"label":"<", "x":11.5, "y":3}, {"label":">", "x":12.5, "y":3}, {"label":"?", "x":13.5, "y":3}, {"label":"Shift", "x":14.5, "y":3, "w":1.75}, {"label":"\u2191", "x":16.25, "y":3}, {"label":"PgDn", "x":17.25, "y":3}, {"label":"F9", "x":0, "y":4}, {"label":"F10", "x":1, "y":4}, {"label":"Ctrl", "x":2.25, "y":4, "w":1.5}, {"label":"GUI", "x":3.75, "y":4}, {"label":"Alt", "x":4.75, "y":4, "w":1.5}, {"x":6.25, "y":4, "w":7}, {"label":"Fn", "x":13.25, "y":4, "w":1.5}, {"label":"\u2190", "x":15.25, "y":4}, {"label":"\u2193", "x":16.25, "y":4}, {"label":"\u2192", "x":17.25, "y":4}] diff --git a/keyboards/kmini/keymaps/default/keymap.c b/keyboards/kmini/keymaps/default/keymap.c index 6f793a019ca4..3feaff5bfa72 100755 --- a/keyboards/kmini/keymaps/default/keymap.c +++ b/keyboards/kmini/keymaps/default/keymap.c @@ -41,17 +41,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { void led_set_user(uint8_t usb_led) { if (usb_led & (1<. */ -#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/kmini/rules.mk b/keyboards/kmini/rules.mk index 1694b9ac624c..0f28a42ab963 100755 --- a/keyboards/kmini/rules.mk +++ b/keyboards/kmini/rules.mk @@ -5,33 +5,21 @@ MCU = atmega32u4 F_CPU = 8000000 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration CUSTOM_MATRIX = yes # Custom matrix file -# 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 -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output # Project specific files SRC = matrix.c diff --git a/keyboards/knobgoblin/info.json b/keyboards/knobgoblin/info.json index 3e350de90dd4..cea6915409f9 100644 --- a/keyboards/knobgoblin/info.json +++ b/keyboards/knobgoblin/info.json @@ -2,8 +2,6 @@ "keyboard_name": "knobgoblin", "url": "", "maintainer": "MrT1ddl3s", - "width": 5, - "height": 5, "layouts": { "LAYOUT_ortho": { "layout": [ diff --git a/keyboards/knobgoblin/keymaps/ortho/keymap.c b/keyboards/knobgoblin/keymaps/default/keymap.c similarity index 100% rename from keyboards/knobgoblin/keymaps/ortho/keymap.c rename to keyboards/knobgoblin/keymaps/default/keymap.c diff --git a/keyboards/knobgoblin/keymaps/ortho/readme.md b/keyboards/knobgoblin/keymaps/default/readme.md similarity index 100% rename from keyboards/knobgoblin/keymaps/ortho/readme.md rename to keyboards/knobgoblin/keymaps/default/readme.md diff --git a/keyboards/knobgoblin/keymaps/moults31/keymap.c b/keyboards/knobgoblin/keymaps/moults31/keymap.c new file mode 100644 index 000000000000..20dda4ccd073 --- /dev/null +++ b/keyboards/knobgoblin/keymaps/moults31/keymap.c @@ -0,0 +1,171 @@ +/* Copyright 2020 MrT1ddl3s + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +#include "moults31.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_ortho( + KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_MPLY, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_MUTE, MO(10), KC_P0, KC_PDOT, KC_PENT + ), + + [1] = LAYOUT_ortho( + KC_ESC, KC_TRNS, KC_TRNS, KC_TRNS, + KC_HOME, KC_TRNS, KC_PGUP, KC_TRNS, + KC_END , KC_UP, KC_PGDN, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_SPC, + KC_TRNS, MO(10), KC_BSPC, KC_DEL, KC_TRNS + ), + + [2] = LAYOUT_ortho( + KC_2, KC_TRNS, KC_TRNS, KC_TRNS, + M_VSC_MVEDTRPRVGRP, M_VSC_MVEDTRNXTGRP, KC_TRNS, KC_TRNS, + M_VSC_EDGRPPRV, M_VSC_EDGRPNXT, KC_TRNS, KC_TRNS, + KC_TRNS, M_VSC_SIDEBARFOCUS, M_VSC_SIDEBARCLOSE, M_VSC_TERMFOCUS, KC_TRNS, + M_VSC_FILECLOSE, MO(10), KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT_ortho( + KC_3, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, M_GDB_PAUSE, + M_GDB_RESTART, M_GDB_STOP, KC_TRNS, M_GDB_PAUSE, + M_VSC_DBGCNSLFOCUS, M_GDB_STEPOVER, M_GDB_STEPIN, M_GDB_STEPOUT, M_GDB_PLAY, + KC_TRNS, MO(10), KC_TRNS, KC_TRNS, M_GDB_PLAY + ), + + [4] = LAYOUT_ortho( + KC_4, KC_TRNS, KC_TRNS, KC_TRNS, + M_OBS_VOICE_UNMUTE, M_OBS_MOOSIC_MUTE, M_OBS_MOOSIC_UNMUTE, KC_TRNS, + M_OBS_DSKT_MUTE, M_OBS_DSKT_UNMUTE, M_OBS_VOICE_MUTE, KC_TRNS, + KC_TRNS, M_OBS_BRB, M_OBS_GAME, M_OBS_JSTCHT, KC_TRNS, + KC_TRNS, MO(10), KC_TRNS, KC_TRNS, KC_TRNS + ), + + [5] = LAYOUT_ortho( + KC_5, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, MO(10), KC_TRNS, KC_TRNS, KC_TRNS + ), + + [6] = LAYOUT_ortho( + KC_6, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, MO(10), KC_TRNS, KC_TRNS, KC_TRNS + ), + + [7] = LAYOUT_ortho( + KC_7, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, MO(10), KC_TRNS, KC_TRNS, KC_TRNS + ), + + [8] = LAYOUT_ortho( + KC_8, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, MO(10), KC_TRNS, KC_TRNS, KC_TRNS + ), + + [9] = LAYOUT_ortho( + KC_9, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, MO(10), KC_TRNS, KC_TRNS, KC_TRNS + ), + + [10] = LAYOUT_ortho( + RESET, KC_TRNS, KC_TRNS, KC_TRNS, + TO(7), TO(8), TO(9), KC_TRNS, + TO(4), TO(5), TO(6), KC_TRNS, + KC_TRNS, TO(1), TO(2), TO(3), KC_TRNS, + KC_TRNS, KC_TRNS, TO(0), KC_TRNS, KC_TRNS + ), + + + +}; + +/* byte map for the goblin logo, knob goblin text, and level text */ +static void render_goblin_logo(void) { + static const char PROGMEM my_logo[] = { + 0x00, 0xe0, 0x40, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x60, 0x20, 0x10, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x10, 0x20, 0x60, 0xc0, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x40, 0xe0, 0x00, + 0x00, 0x03, 0x06, 0x3c, 0x49, 0x91, 0x21, 0x00, 0x40, 0x80, 0x80, 0x80, 0x80, 0x00, 0x60, 0x00, + 0x00, 0x60, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x00, 0x21, 0x91, 0x49, 0x3c, 0x06, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1f, 0x60, 0x40, 0xc0, 0x06, 0x0e, 0x0f, 0x67, 0x50, 0xc0, + 0xc0, 0x50, 0x67, 0x0f, 0x0e, 0x06, 0xc0, 0x40, 0x60, 0x1f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x7b, 0xc7, 0x8e, 0x1e, 0x3e, 0x3e, + 0x3e, 0x3e, 0x1e, 0x8e, 0xc7, 0x7b, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x04, + 0x04, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x83, 0x03, 0x03, 0x03, 0x83, 0x03, 0x83, 0x03, 0x03, 0x03, 0x83, + 0x03, 0x03, 0x83, 0x83, 0x83, 0x03, 0x03, 0x83, 0x83, 0x83, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x04, 0x06, 0x09, 0x10, 0x00, 0x1f, 0x03, 0x06, 0x0c, 0x1f, + 0x00, 0x0f, 0x10, 0x10, 0x10, 0x0f, 0x00, 0x1f, 0x12, 0x12, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x78, 0xfc, 0x84, 0xa4, 0xa4, 0x68, 0x00, 0x78, 0x84, 0x84, 0x84, 0x78, 0x00, 0xfc, 0x94, + 0x94, 0x68, 0x00, 0xfc, 0x80, 0x80, 0x80, 0x00, 0xfc, 0x00, 0xfc, 0x18, 0x30, 0x60, 0xfc, 0x00, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x50, 0x50, 0x50, 0x00, 0xf0, 0x00, 0x00, + 0x00, 0xf0, 0x00, 0xf0, 0x50, 0x50, 0x50, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x02, 0x02, 0x02, 0x00, 0x03, 0x02, 0x02, 0x02, 0x00, 0x00, 0x01, 0x02, + 0x01, 0x00, 0x00, 0x03, 0x02, 0x02, 0x02, 0x00, 0x03, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00 + }; + oled_write_raw_P(my_logo, sizeof(my_logo)); +} + +bool oled_task_user(void) { + + render_goblin_logo(); + + oled_set_cursor(0,11); + + switch (get_highest_layer(layer_state)) { + case 0: + oled_write_P(PSTR(" NUM\n"), false); + break; + case 1: + oled_write_P(PSTR(" NAV\n"), false); + break; + case 2: + oled_write_P(PSTR(" CODE\n"), false); + break; + case 3: + oled_write_P(PSTR(" GDB\n"), false); + break; + case 4: + oled_write_P(PSTR(" OBS\n"), false); + break; + default: + oled_write_P(PSTR(" NONE\n"), false); + break; + } + return false; +} diff --git a/keyboards/knobgoblin/keymaps/moults31/readme.md b/keyboards/knobgoblin/keymaps/moults31/readme.md new file mode 100644 index 000000000000..f137c78c3aba --- /dev/null +++ b/keyboards/knobgoblin/keymaps/moults31/readme.md @@ -0,0 +1,3 @@ +# Ortho Knob Goblin Layout + +Via functionality for the Knob Goblin. Ortho layout. \ No newline at end of file diff --git a/keyboards/knobgoblin/keymaps/moults31/rules.mk b/keyboards/knobgoblin/keymaps/moults31/rules.mk new file mode 100644 index 000000000000..533af592e529 --- /dev/null +++ b/keyboards/knobgoblin/keymaps/moults31/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = YES +LTO_ENABLE = YES +BOOTLOADER = atmel-dfu diff --git a/keyboards/knobgoblin/keymaps/via/keymap.c b/keyboards/knobgoblin/keymaps/via/keymap.c index afe3226bb0bd..4631dccd0ab0 100644 --- a/keyboards/knobgoblin/keymaps/via/keymap.c +++ b/keyboards/knobgoblin/keymaps/via/keymap.c @@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_MPLY, KC_P1, KC_P2, KC_P3, KC_PENT, KC_MUTE, MO(1), KC_P0, KC_PDOT, KC_PENT ), - + [1] = LAYOUT_ortho( KC_ESC, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_TRNS, KC_PGUP, KC_TRNS, @@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_SPC, KC_TRNS, KC_TRNS, KC_BSPC, KC_DEL, KC_TRNS ), - + [2] = LAYOUT_ortho( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -41,7 +41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), - + [3] = LAYOUT_ortho( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -50,4 +50,4 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ) -}; \ No newline at end of file +}; diff --git a/keyboards/knobgoblin/knobgoblin.c b/keyboards/knobgoblin/knobgoblin.c index 1c66908ef270..fcf86a3a4096 100644 --- a/keyboards/knobgoblin/knobgoblin.c +++ b/keyboards/knobgoblin/knobgoblin.c @@ -38,9 +38,11 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { } #endif -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE /* rotate screen for proper orentation*/ -__attribute__((weak)) oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; } +oled_rotation_t oled_init_kb(oled_rotation_t rotation) { + return OLED_ROTATION_270; +} /* byte map for the goblin logo, knob goblin text, and level text */ static void render_goblin_logo(void) { @@ -72,7 +74,10 @@ static void render_goblin_logo(void) { } /* text display for layer indication */ -__attribute__((weak)) void oled_task_user(void) { +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } render_goblin_logo(); @@ -99,5 +104,6 @@ __attribute__((weak)) void oled_task_user(void) { break; } + return false; } #endif diff --git a/keyboards/knobgoblin/rules.mk b/keyboards/knobgoblin/rules.mk index 17211c095d8a..5fac5074f1b9 100644 --- a/keyboards/knobgoblin/rules.mk +++ b/keyboards/knobgoblin/rules.mk @@ -7,19 +7,17 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # 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 = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/knops/mini/config.h b/keyboards/knops/mini/config.h index 000a9c6232f0..eca8b8b4a89d 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -89,56 +88,6 @@ along with this program. If not, see . * power-up. * */ -//#define FORCE_NKRO - -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -156,25 +105,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - -#endif diff --git a/keyboards/knops/mini/info.json b/keyboards/knops/mini/info.json index 4292fa31e6e9..184333117ec3 100644 --- a/keyboards/knops/mini/info.json +++ b/keyboards/knops/mini/info.json @@ -3,11 +3,9 @@ "url": "http://www.knops.io/knopsmini.html", "maintainer": "Pawnerd", "bootloader": "lufa-dfu", - "width": 3, - "height": 2, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}] } } -} \ No newline at end of file +} diff --git a/keyboards/knops/mini/keymaps/default-gsm-newbs/keymap.c b/keyboards/knops/mini/keymaps/default-gsm-newbs/keymap.c index 68c96fc192c9..3851719f196e 100644 --- a/keyboards/knops/mini/keymaps/default-gsm-newbs/keymap.c +++ b/keyboards/knops/mini/keymaps/default-gsm-newbs/keymap.c @@ -203,27 +203,7 @@ void set_layer_led(int layerId) { } } -void matrix_init_user(void) { - led_init_ports(); - - PORTB |= (1 << 7); - DDRB &= ~(1<<7); - - PORTD |= (1<<7); - PORTC |= (1<<6); - PORTC |= (1<<7); - PORTD |= (1<<4); - PORTE |= (1<<6); - PORTB |= (1<<4); - PORTD |= (1<<6); - - set_layer_led(0); -} - -void matrix_scan_user(void) { -} - -void led_init_ports() { +void led_init_ports_user(void) { // led voor switch #1 DDRD |= (1<<7); PORTD &= ~(1<<7); @@ -276,6 +256,26 @@ void led_init_ports() { //led_set_layer(0); } +void matrix_init_user(void) { + led_init_ports_user(); + + PORTB |= (1 << 7); + DDRB &= ~(1<<7); + + PORTD |= (1<<7); + PORTC |= (1<<6); + PORTC |= (1<<7); + PORTD |= (1<<4); + PORTE |= (1<<6); + PORTB |= (1<<4); + PORTD |= (1<<6); + + set_layer_led(0); +} + +void matrix_scan_user(void) { +} + void led_set_user(uint8_t usb_led) { if (usb_led & (1 << USB_LED_NUM_LOCK)) { diff --git a/keyboards/knops/mini/keymaps/default/keymap.c b/keyboards/knops/mini/keymaps/default/keymap.c index 859f07aa0754..46ce7e49d088 100644 --- a/keyboards/knops/mini/keymaps/default/keymap.c +++ b/keyboards/knops/mini/keymaps/default/keymap.c @@ -129,72 +129,52 @@ void set_layer_led(int layerId) { } } -void matrix_init_user(void) { - led_init_ports(); - - PORTB |= (1 << 7); - DDRB &= ~(1<<7); - - PORTD |= (1<<7); - PORTC |= (1<<6); - PORTC |= (1<<7); - PORTD |= (1<<4); - PORTE |= (1<<6); - PORTB |= (1<<4); - PORTD |= (1<<6); - - set_layer_led(0); -} - -void matrix_scan_user(void) { -} - -void led_init_ports() { +void led_init_ports_user(void) { // led voor switch #1 DDRD |= (1<<7); PORTD &= ~(1<<7); - + // led voor switch #2 DDRC |= (1<<6); DDRC |= (1<<7); PORTC &= ~(1<<6); PORTC &= ~(1<<7); - + // led voor switch #3 DDRD |= (1<<4); PORTD &= ~(1<<4); - + // led voor switch #4 DDRE |= (1<<6); PORTE &= ~(1<<6); - + // led voor switch #5 DDRB |= (1<<4); PORTB &= ~(1<<4); - + // led voor switch #6 DDRD |= (1<<6); PORTD &= ~(1<<6); - + /* DDRD |= (1<<7); PORTD |= (1<<7); - + DDRC |= (1<<6); PORTC |= (1<<6); - + DDRD |= (1<<4); PORTD |= (1<<4); - + DDRE |= (1<<6); PORTE |= (1<<6); - + DDRB |= (1<<4); PORTB |= (1<<4); - + DDRD |= (1<<6); PORTD |= (1<<6); - // */ + // */ DDRD |= (1<<5); DDRB |= (1<<6); @@ -202,42 +182,24 @@ void led_init_ports() { //led_set_layer(0); } -void led_set_user(uint8_t usb_led) { - - if (usb_led & (1 << USB_LED_NUM_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_CAPS_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_SCROLL_LOCK)) { - - } else { - - } +void matrix_init_user(void) { + led_init_ports_user(); - if (usb_led & (1 << USB_LED_COMPOSE)) { - - } else { - - } + PORTB |= (1 << 7); + DDRB &= ~(1<<7); - if (usb_led & (1 << USB_LED_KANA)) { - - } else { - - } + PORTD |= (1<<7); + PORTC |= (1<<6); + PORTC |= (1<<7); + PORTD |= (1<<4); + PORTE |= (1<<6); + PORTB |= (1<<4); + PORTD |= (1<<6); + set_layer_led(0); } - -/* +/* * NOTE: * * In case you don't understand this coding stuff, please @@ -257,11 +219,11 @@ void led_set_user(uint8_t usb_led) { * | | | | | | | set_switch_led( [1-6], [true/false]); * | 4 | | 5 | | 6 | <--- * |_____| |_____| |_____| -* +* * < 0 > < 1 > < 2 > <--- These front-LEDs are called 'Layer LEDs' * To turn one of them on, use: * set_layer_led( [0-2] ); -* +* */ /* @@ -272,14 +234,14 @@ void led_set_user(uint8_t usb_led) { */ void led_set_layer(int layer) { switch(layer) { - + /** * Here is an example to turn LEDs on and of. By default: * - the LEDs are turned on in layer 0 * - the LEDs are turned off in layer 1 * - the LEDs don't change from state for layer 2 - */ - + */ + case 0: set_layer_led(0); // Turn on only the first/left layer indicator set_switch_led(1, true); @@ -289,7 +251,7 @@ void led_set_layer(int layer) { set_switch_led(5, true); set_switch_led(6, true); break; - + case 1: set_layer_led(1); // Turn on only the second/middle layer indicator set_switch_led(1, false); @@ -299,12 +261,12 @@ void led_set_layer(int layer) { set_switch_led(5, false); set_switch_led(6, false); break; - + case 2: set_layer_led(2); // Turn on only the third/right layer indicator - + // Keep leds for layer two in their current state, since we don't use set_switch_led(SWITCH_ID, TRUE_OR_FALSE) - + break; } } diff --git a/keyboards/knops/mini/keymaps/knops/keymap.c b/keyboards/knops/mini/keymaps/knops/keymap.c index 7bc7fbe43d74..15d9e5bc111b 100644 --- a/keyboards/knops/mini/keymaps/knops/keymap.c +++ b/keyboards/knops/mini/keymaps/knops/keymap.c @@ -82,10 +82,10 @@ void set_led_state(int ledId, bool state) { } } -void led_init_ports() { +void led_init_ports_user(void) { PORTB |= (1 << 7); DDRB &= ~(1<<7); - + DDRD |= (1<<7); DDRC |= (1<<6); DDRC |= (1<<7); @@ -106,10 +106,10 @@ void led_set_layer(int layer) { } void matrix_init_user(void) { - led_init_ports(); - + led_init_ports_user(); + led_set_layer(1); - + /*KNOPS_INIT*/ } @@ -132,11 +132,11 @@ void led_set_user(uint8_t usb_led) { } bool process_record_user (uint16_t keycode, keyrecord_t *record) { - + /*KNOPS_PROCESS_STATE*/ return NULL; - + } diff --git a/keyboards/knops/mini/keymaps/mverteuil/keymap.c b/keyboards/knops/mini/keymaps/mverteuil/keymap.c index 5ecba0d5a1b0..12afb57da2a7 100644 --- a/keyboards/knops/mini/keymaps/mverteuil/keymap.c +++ b/keyboards/knops/mini/keymaps/mverteuil/keymap.c @@ -270,7 +270,7 @@ void led_set_layer(int layer) { /* * Prepare all LED ports for output */ -void led_init_ports() { +void led_init_ports_user(void) { setPinOutput(D7); // Switch 1 LED setPinOutput(C6); // Switch 2 LED Pin1 setPinOutput(C7); // Switch 2 LED Pin2 @@ -291,7 +291,7 @@ layer_state_t layer_state_set_user(layer_state_t state) { } void matrix_init_user(void) { - led_init_ports(); + led_init_ports_user(); led_init_animation(); } diff --git a/keyboards/knops/mini/mini.c b/keyboards/knops/mini/mini.c index ccfd4331b3ea..f378cc5d5f94 100644 --- a/keyboards/knops/mini/mini.c +++ b/keyboards/knops/mini/mini.c @@ -14,31 +14,3 @@ * along with this program. If not, see . */ #include "mini.h" -/* -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} -*/ \ No newline at end of file diff --git a/keyboards/knops/mini/mini.h b/keyboards/knops/mini/mini.h index e2d6c546b07d..e028dea6d7ad 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 . */ + #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/knops/mini/rules.mk b/keyboards/knops/mini/rules.mk index c0abf739e733..29111f1a5931 100644 --- a/keyboards/knops/mini/rules.mk +++ b/keyboards/knops/mini/rules.mk @@ -2,29 +2,17 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/kona_classic/config.h b/keyboards/kona_classic/config.h index 083a3e90a880..c6dc3a031819 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -88,54 +87,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -153,25 +104,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - -#endif diff --git a/keyboards/kona_classic/info.json b/keyboards/kona_classic/info.json index a6861e532355..9d4f7203b9a7 100644 --- a/keyboards/kona_classic/info.json +++ b/keyboards/kona_classic/info.json @@ -2,44 +2,33 @@ "keyboard_name": "Kona Classic", "url": "", "maintainer": "qmk", - "width": 17.25, - "height": 5, "layouts": { "LAYOUT_all": { - "key_count": 76, "layout": [{"label":"KA0", "x":0, "y":0}, {"label":"KA1", "x":1, "y":0}, {"label":"K00", "x":2.25, "y":0}, {"label":"K01", "x":3.25, "y":0}, {"label":"K02", "x":4.25, "y":0}, {"label":"K03", "x":5.25, "y":0}, {"label":"K04", "x":6.25, "y":0}, {"label":"K05", "x":7.25, "y":0}, {"label":"K06", "x":8.25, "y":0}, {"label":"K07", "x":9.25, "y":0}, {"label":"K08", "x":10.25, "y":0}, {"label":"K09", "x":11.25, "y":0}, {"label":"K0A", "x":12.25, "y":0}, {"label":"K0B", "x":13.25, "y":0}, {"label":"K0C", "x":14.25, "y":0}, {"label":"K0D", "x":15.25, "y":0, "w":2}, {"label":"KA2", "x":0, "y":1}, {"label":"KA3", "x":1, "y":1}, {"label":"K10", "x":2.25, "y":1, "w":1.5}, {"label":"K11", "x":3.75, "y":1}, {"label":"K12", "x":4.75, "y":1}, {"label":"K13", "x":5.75, "y":1}, {"label":"K14", "x":6.75, "y":1}, {"label":"K15", "x":7.75, "y":1}, {"label":"K16", "x":8.75, "y":1}, {"label":"K17", "x":9.75, "y":1}, {"label":"K18", "x":10.75, "y":1}, {"label":"K19", "x":11.75, "y":1}, {"label":"K1A", "x":12.75, "y":1}, {"label":"K1B", "x":13.75, "y":1}, {"label":"K1C", "x":14.75, "y":1}, {"label":"K1D", "x":15.75, "y":1, "w":1.5}, {"label":"KA4", "x":0, "y":2}, {"label":"KA5", "x":1, "y":2}, {"label":"K20", "x":2.25, "y":2, "w":1.75}, {"label":"K21", "x":4, "y":2}, {"label":"K22", "x":5, "y":2}, {"label":"K23", "x":6, "y":2}, {"label":"K24", "x":7, "y":2}, {"label":"K25", "x":8, "y":2}, {"label":"K26", "x":9, "y":2}, {"label":"K27", "x":10, "y":2}, {"label":"K28", "x":11, "y":2}, {"label":"K29", "x":12, "y":2}, {"label":"K2A", "x":13, "y":2}, {"label":"K2B", "x":14, "y":2}, {"label":"K2C", "x":15, "y":2, "w":2.25}, {"label":"KA6", "x":0, "y":3}, {"label":"KA7", "x":1, "y":3}, {"label":"K30", "x":2.25, "y":3, "w":1.25}, {"label":"K31", "x":3.5, "y":3}, {"label":"K32", "x":4.5, "y":3}, {"label":"K33", "x":5.5, "y":3}, {"label":"K34", "x":6.5, "y":3}, {"label":"K35", "x":7.5, "y":3}, {"label":"K36", "x":8.5, "y":3}, {"label":"K37", "x":9.5, "y":3}, {"label":"K38", "x":10.5, "y":3}, {"label":"K39", "x":11.5, "y":3}, {"label":"K3A", "x":12.5, "y":3}, {"label":"K3B", "x":13.5, "y":3}, {"label":"K3C", "x":15.25, "y":3}, {"label":"K3D", "x":16.25, "y":3}, {"label":"KA8", "x":0, "y":4}, {"label":"KA9", "x":1, "y":4}, {"label":"K40", "x":2.25, "y":4, "w":1.25}, {"label":"K41", "x":3.5, "y":4, "w":1.25}, {"label":"K42", "x":4.75, "y":4, "w":1.25}, {"label":"K44", "x":6, "y":4, "w":2.25}, {"label":"K46", "x":8.25, "y":4, "w":1.25}, {"label":"K47", "x":9.5, "y":4, "w":2.75}, {"label":"K49", "x":12.25, "y":4}, {"label":"K4A", "x":13.25, "y":4}, {"label":"K4B", "x":14.25, "y":4}, {"label":"K4C", "x":15.25, "y":4}, {"label":"K4D", "x":16.25, "y":4}] }, "LAYOUT_ansi": { - "key_count": 71, "layout": [{"label":"KA0", "x":0, "y":0}, {"label":"KA1", "x":1, "y":0}, {"label":"K00", "x":2.25, "y":0}, {"label":"K01", "x":3.25, "y":0}, {"label":"K02", "x":4.25, "y":0}, {"label":"K03", "x":5.25, "y":0}, {"label":"K04", "x":6.25, "y":0}, {"label":"K05", "x":7.25, "y":0}, {"label":"K06", "x":8.25, "y":0}, {"label":"K07", "x":9.25, "y":0}, {"label":"K08", "x":10.25, "y":0}, {"label":"K09", "x":11.25, "y":0}, {"label":"K0A", "x":12.25, "y":0}, {"label":"K0B", "x":13.25, "y":0}, {"label":"K0C", "x":14.25, "y":0}, {"label":"K0D", "x":15.25, "y":0, "w":2}, {"label":"KA2", "x":0, "y":1}, {"label":"KA3", "x":1, "y":1}, {"label":"K10", "x":2.25, "y":1, "w":1.5}, {"label":"K11", "x":3.75, "y":1}, {"label":"K12", "x":4.75, "y":1}, {"label":"K13", "x":5.75, "y":1}, {"label":"K14", "x":6.75, "y":1}, {"label":"K15", "x":7.75, "y":1}, {"label":"K16", "x":8.75, "y":1}, {"label":"K17", "x":9.75, "y":1}, {"label":"K18", "x":10.75, "y":1}, {"label":"K19", "x":11.75, "y":1}, {"label":"K1A", "x":12.75, "y":1}, {"label":"K1B", "x":13.75, "y":1}, {"label":"K1C", "x":14.75, "y":1}, {"label":"K1D", "x":15.75, "y":1, "w":1.5}, {"label":"KA4", "x":0, "y":2}, {"label":"KA5", "x":1, "y":2}, {"label":"K20", "x":2.25, "y":2, "w":1.75}, {"label":"K21", "x":4, "y":2}, {"label":"K22", "x":5, "y":2}, {"label":"K23", "x":6, "y":2}, {"label":"K24", "x":7, "y":2}, {"label":"K25", "x":8, "y":2}, {"label":"K26", "x":9, "y":2}, {"label":"K27", "x":10, "y":2}, {"label":"K28", "x":11, "y":2}, {"label":"K29", "x":12, "y":2}, {"label":"K2A", "x":13, "y":2}, {"label":"K2B", "x":14, "y":2}, {"label":"K2C", "x":15, "y":2, "w":2.25}, {"label":"KA6", "x":0, "y":3}, {"label":"KA7", "x":1, "y":3}, {"label":"K30", "x":2.25, "y":3, "w":2.25}, {"label":"K32", "x":4.5, "y":3}, {"label":"K33", "x":5.5, "y":3}, {"label":"K34", "x":6.5, "y":3}, {"label":"K35", "x":7.5, "y":3}, {"label":"K36", "x":8.5, "y":3}, {"label":"K37", "x":9.5, "y":3}, {"label":"K38", "x":10.5, "y":3}, {"label":"K39", "x":11.5, "y":3}, {"label":"K3A", "x":12.5, "y":3}, {"label":"K3B", "x":13.5, "y":3}, {"label":"K3C", "x":14.5, "y":3, "w":2.75}, {"label":"KA8", "x":0, "y":4}, {"label":"KA9", "x":1, "y":4}, {"label":"K40", "x":2.25, "y":4, "w":1.25}, {"label":"K41", "x":3.5, "y":4, "w":1.25}, {"label":"K42", "x":4.75, "y":4, "w":1.25}, {"label":"K46", "x":6, "y":4, "w":6.25}, {"label":"K49", "x":12.25, "y":4, "w":1.25}, {"label":"K4A", "x":13.5, "y":4, "w":1.25}, {"label":"K4C", "x":14.75, "y":4, "w":1.25}, {"label":"K4D", "x":16, "y":4, "w":1.25}] }, "LAYOUT_ansi_split": { - "key_count": 73, "layout": [{"label":"KA0", "x":0, "y":0}, {"label":"KA1", "x":1, "y":0}, {"label":"K00", "x":2.25, "y":0}, {"label":"K01", "x":3.25, "y":0}, {"label":"K02", "x":4.25, "y":0}, {"label":"K03", "x":5.25, "y":0}, {"label":"K04", "x":6.25, "y":0}, {"label":"K05", "x":7.25, "y":0}, {"label":"K06", "x":8.25, "y":0}, {"label":"K07", "x":9.25, "y":0}, {"label":"K08", "x":10.25, "y":0}, {"label":"K09", "x":11.25, "y":0}, {"label":"K0A", "x":12.25, "y":0}, {"label":"K0B", "x":13.25, "y":0}, {"label":"K0C", "x":14.25, "y":0}, {"label":"K0D", "x":15.25, "y":0, "w":2}, {"label":"KA2", "x":0, "y":1}, {"label":"KA3", "x":1, "y":1}, {"label":"K10", "x":2.25, "y":1, "w":1.5}, {"label":"K11", "x":3.75, "y":1}, {"label":"K12", "x":4.75, "y":1}, {"label":"K13", "x":5.75, "y":1}, {"label":"K14", "x":6.75, "y":1}, {"label":"K15", "x":7.75, "y":1}, {"label":"K16", "x":8.75, "y":1}, {"label":"K17", "x":9.75, "y":1}, {"label":"K18", "x":10.75, "y":1}, {"label":"K19", "x":11.75, "y":1}, {"label":"K1A", "x":12.75, "y":1}, {"label":"K1B", "x":13.75, "y":1}, {"label":"K1C", "x":14.75, "y":1}, {"label":"K1D", "x":15.75, "y":1, "w":1.5}, {"label":"KA4", "x":0, "y":2}, {"label":"KA5", "x":1, "y":2}, {"label":"K20", "x":2.25, "y":2, "w":1.75}, {"label":"K21", "x":4, "y":2}, {"label":"K22", "x":5, "y":2}, {"label":"K23", "x":6, "y":2}, {"label":"K24", "x":7, "y":2}, {"label":"K25", "x":8, "y":2}, {"label":"K26", "x":9, "y":2}, {"label":"K27", "x":10, "y":2}, {"label":"K28", "x":11, "y":2}, {"label":"K29", "x":12, "y":2}, {"label":"K2A", "x":13, "y":2}, {"label":"K2B", "x":14, "y":2}, {"label":"K2C", "x":15, "y":2, "w":2.25}, {"label":"KA6", "x":0, "y":3}, {"label":"KA7", "x":1, "y":3}, {"label":"K30", "x":2.25, "y":3, "w":2.25}, {"label":"K32", "x":4.5, "y":3}, {"label":"K33", "x":5.5, "y":3}, {"label":"K34", "x":6.5, "y":3}, {"label":"K35", "x":7.5, "y":3}, {"label":"K36", "x":8.5, "y":3}, {"label":"K37", "x":9.5, "y":3}, {"label":"K38", "x":10.5, "y":3}, {"label":"K39", "x":11.5, "y":3}, {"label":"K3A", "x":12.5, "y":3}, {"label":"K3B", "x":13.5, "y":3}, {"label":"K3C", "x":14.5, "y":3, "w":2.75}, {"label":"KA8", "x":0, "y":4}, {"label":"KA9", "x":1, "y":4}, {"label":"K40", "x":2.25, "y":4, "w":1.25}, {"label":"K41", "x":3.5, "y":4, "w":1.25}, {"label":"K42", "x":4.75, "y":4, "w":1.25}, {"label":"K44", "x":6, "y":4, "w":2.25}, {"label":"K46", "x":8.25, "y":4, "w":1.25}, {"label":"K47", "x":9.5, "y":4, "w":2.75}, {"label":"K49", "x":12.25, "y":4, "w":1.25}, {"label":"K4A", "x":13.5, "y":4, "w":1.25}, {"label":"K4C", "x":14.75, "y":4, "w":1.25}, {"label":"K4D", "x":16, "y":4, "w":1.25}] }, "LAYOUT_ansi_arrows": { - "key_count": 73, "layout": [{"label":"KA0", "x":0, "y":0}, {"label":"KA1", "x":1, "y":0}, {"label":"K00", "x":2.25, "y":0}, {"label":"K01", "x":3.25, "y":0}, {"label":"K02", "x":4.25, "y":0}, {"label":"K03", "x":5.25, "y":0}, {"label":"K04", "x":6.25, "y":0}, {"label":"K05", "x":7.25, "y":0}, {"label":"K06", "x":8.25, "y":0}, {"label":"K07", "x":9.25, "y":0}, {"label":"K08", "x":10.25, "y":0}, {"label":"K09", "x":11.25, "y":0}, {"label":"K0A", "x":12.25, "y":0}, {"label":"K0B", "x":13.25, "y":0}, {"label":"K0C", "x":14.25, "y":0}, {"label":"K0D", "x":15.25, "y":0, "w":2}, {"label":"KA2", "x":0, "y":1}, {"label":"KA3", "x":1, "y":1}, {"label":"K10", "x":2.25, "y":1, "w":1.5}, {"label":"K11", "x":3.75, "y":1}, {"label":"K12", "x":4.75, "y":1}, {"label":"K13", "x":5.75, "y":1}, {"label":"K14", "x":6.75, "y":1}, {"label":"K15", "x":7.75, "y":1}, {"label":"K16", "x":8.75, "y":1}, {"label":"K17", "x":9.75, "y":1}, {"label":"K18", "x":10.75, "y":1}, {"label":"K19", "x":11.75, "y":1}, {"label":"K1A", "x":12.75, "y":1}, {"label":"K1B", "x":13.75, "y":1}, {"label":"K1C", "x":14.75, "y":1}, {"label":"K1D", "x":15.75, "y":1, "w":1.5}, {"label":"KA4", "x":0, "y":2}, {"label":"KA5", "x":1, "y":2}, {"label":"K20", "x":2.25, "y":2, "w":1.75}, {"label":"K21", "x":4, "y":2}, {"label":"K22", "x":5, "y":2}, {"label":"K23", "x":6, "y":2}, {"label":"K24", "x":7, "y":2}, {"label":"K25", "x":8, "y":2}, {"label":"K26", "x":9, "y":2}, {"label":"K27", "x":10, "y":2}, {"label":"K28", "x":11, "y":2}, {"label":"K29", "x":12, "y":2}, {"label":"K2A", "x":13, "y":2}, {"label":"K2B", "x":14, "y":2}, {"label":"K2C", "x":15, "y":2, "w":2.25}, {"label":"KA6", "x":0, "y":3}, {"label":"KA7", "x":1, "y":3}, {"label":"K30", "x":2.25, "y":3, "w":2.25}, {"label":"K32", "x":4.5, "y":3}, {"label":"K33", "x":5.5, "y":3}, {"label":"K34", "x":6.5, "y":3}, {"label":"K35", "x":7.5, "y":3}, {"label":"K36", "x":8.5, "y":3}, {"label":"K37", "x":9.5, "y":3}, {"label":"K38", "x":10.5, "y":3}, {"label":"K39", "x":11.5, "y":3}, {"label":"K3A", "x":12.5, "y":3}, {"label":"K3B", "x":13.5, "y":3}, {"label":"K3C", "x":15.25, "y":3}, {"label":"K3D", "x":16.25, "y":3}, {"label":"KA8", "x":0, "y":4}, {"label":"KA9", "x":1, "y":4}, {"label":"K40", "x":2.25, "y":4, "w":1.25}, {"label":"K41", "x":3.5, "y":4, "w":1.25}, {"label":"K42", "x":4.75, "y":4, "w":1.25}, {"label":"K46", "x":6, "y":4, "w":6.25}, {"label":"K49", "x":12.25, "y":4}, {"label":"K4A", "x":13.25, "y":4}, {"label":"K4B", "x":14.25, "y":4}, {"label":"K4C", "x":15.25, "y":4}, {"label":"K4D", "x":16.25, "y":4}] }, "LAYOUT_ansi_split_arrows": { - "key_count": 75, "layout": [{"label":"KA0", "x":0, "y":0}, {"label":"KA1", "x":1, "y":0}, {"label":"K00", "x":2.25, "y":0}, {"label":"K01", "x":3.25, "y":0}, {"label":"K02", "x":4.25, "y":0}, {"label":"K03", "x":5.25, "y":0}, {"label":"K04", "x":6.25, "y":0}, {"label":"K05", "x":7.25, "y":0}, {"label":"K06", "x":8.25, "y":0}, {"label":"K07", "x":9.25, "y":0}, {"label":"K08", "x":10.25, "y":0}, {"label":"K09", "x":11.25, "y":0}, {"label":"K0A", "x":12.25, "y":0}, {"label":"K0B", "x":13.25, "y":0}, {"label":"K0C", "x":14.25, "y":0}, {"label":"K0D", "x":15.25, "y":0, "w":2}, {"label":"KA2", "x":0, "y":1}, {"label":"KA3", "x":1, "y":1}, {"label":"K10", "x":2.25, "y":1, "w":1.5}, {"label":"K11", "x":3.75, "y":1}, {"label":"K12", "x":4.75, "y":1}, {"label":"K13", "x":5.75, "y":1}, {"label":"K14", "x":6.75, "y":1}, {"label":"K15", "x":7.75, "y":1}, {"label":"K16", "x":8.75, "y":1}, {"label":"K17", "x":9.75, "y":1}, {"label":"K18", "x":10.75, "y":1}, {"label":"K19", "x":11.75, "y":1}, {"label":"K1A", "x":12.75, "y":1}, {"label":"K1B", "x":13.75, "y":1}, {"label":"K1C", "x":14.75, "y":1}, {"label":"K1D", "x":15.75, "y":1, "w":1.5}, {"label":"KA4", "x":0, "y":2}, {"label":"KA5", "x":1, "y":2}, {"label":"K20", "x":2.25, "y":2, "w":1.75}, {"label":"K21", "x":4, "y":2}, {"label":"K22", "x":5, "y":2}, {"label":"K23", "x":6, "y":2}, {"label":"K24", "x":7, "y":2}, {"label":"K25", "x":8, "y":2}, {"label":"K26", "x":9, "y":2}, {"label":"K27", "x":10, "y":2}, {"label":"K28", "x":11, "y":2}, {"label":"K29", "x":12, "y":2}, {"label":"K2A", "x":13, "y":2}, {"label":"K2B", "x":14, "y":2}, {"label":"K2C", "x":15, "y":2, "w":2.25}, {"label":"KA6", "x":0, "y":3}, {"label":"KA7", "x":1, "y":3}, {"label":"K30", "x":2.25, "y":3, "w":2.25}, {"label":"K32", "x":4.5, "y":3}, {"label":"K33", "x":5.5, "y":3}, {"label":"K34", "x":6.5, "y":3}, {"label":"K35", "x":7.5, "y":3}, {"label":"K36", "x":8.5, "y":3}, {"label":"K37", "x":9.5, "y":3}, {"label":"K38", "x":10.5, "y":3}, {"label":"K39", "x":11.5, "y":3}, {"label":"K3A", "x":12.5, "y":3}, {"label":"K3B", "x":13.5, "y":3}, {"label":"K3C", "x":15.25, "y":3}, {"label":"K3D", "x":16.25, "y":3}, {"label":"KA8", "x":0, "y":4}, {"label":"KA9", "x":1, "y":4}, {"label":"K40", "x":2.25, "y":4, "w":1.25}, {"label":"K41", "x":3.5, "y":4, "w":1.25}, {"label":"K42", "x":4.75, "y":4, "w":1.25}, {"label":"K44", "x":6, "y":4, "w":2.25}, {"label":"K46", "x":8.25, "y":4, "w":1.25}, {"label":"K47", "x":9.5, "y":4, "w":2.75}, {"label":"K49", "x":12.25, "y":4}, {"label":"K4A", "x":13.25, "y":4}, {"label":"K4B", "x":14.25, "y":4}, {"label":"K4C", "x":15.25, "y":4}, {"label":"K4D", "x":16.25, "y":4}] }, "LAYOUT_iso": { - "key_count": 72, "layout": [{"label":"KA0", "x":0, "y":0}, {"label":"KA1", "x":1, "y":0}, {"label":"K00", "x":2.25, "y":0}, {"label":"K01", "x":3.25, "y":0}, {"label":"K02", "x":4.25, "y":0}, {"label":"K03", "x":5.25, "y":0}, {"label":"K04", "x":6.25, "y":0}, {"label":"K05", "x":7.25, "y":0}, {"label":"K06", "x":8.25, "y":0}, {"label":"K07", "x":9.25, "y":0}, {"label":"K08", "x":10.25, "y":0}, {"label":"K09", "x":11.25, "y":0}, {"label":"K0A", "x":12.25, "y":0}, {"label":"K0B", "x":13.25, "y":0}, {"label":"K0C", "x":14.25, "y":0}, {"label":"K0D", "x":15.25, "y":0, "w":2}, {"label":"KA2", "x":0, "y":1}, {"label":"KA3", "x":1, "y":1}, {"label":"K10", "x":2.25, "y":1, "w":1.5}, {"label":"K11", "x":3.75, "y":1}, {"label":"K12", "x":4.75, "y":1}, {"label":"K13", "x":5.75, "y":1}, {"label":"K14", "x":6.75, "y":1}, {"label":"K15", "x":7.75, "y":1}, {"label":"K16", "x":8.75, "y":1}, {"label":"K17", "x":9.75, "y":1}, {"label":"K18", "x":10.75, "y":1}, {"label":"K19", "x":11.75, "y":1}, {"label":"K1A", "x":12.75, "y":1}, {"label":"K1B", "x":13.75, "y":1}, {"label":"K1C", "x":14.75, "y":1}, {"label":"K1D", "x":16, "y":1, "w":1.25, "h":2}, {"label":"KA4", "x":0, "y":2}, {"label":"KA5", "x":1, "y":2}, {"label":"K20", "x":2.25, "y":2, "w":1.75}, {"label":"K21", "x":4, "y":2}, {"label":"K22", "x":5, "y":2}, {"label":"K23", "x":6, "y":2}, {"label":"K24", "x":7, "y":2}, {"label":"K25", "x":8, "y":2}, {"label":"K26", "x":9, "y":2}, {"label":"K27", "x":10, "y":2}, {"label":"K28", "x":11, "y":2}, {"label":"K29", "x":12, "y":2}, {"label":"K2A", "x":13, "y":2}, {"label":"K2B", "x":14, "y":2}, {"label":"K2C", "x":15, "y":2}, {"label":"KA6", "x":0, "y":3}, {"label":"KA7", "x":1, "y":3}, {"label":"K30", "x":2.25, "y":3, "w":1.25}, {"label":"K31", "x":3.5, "y":3}, {"label":"K32", "x":4.5, "y":3}, {"label":"K33", "x":5.5, "y":3}, {"label":"K34", "x":6.5, "y":3}, {"label":"K35", "x":7.5, "y":3}, {"label":"K36", "x":8.5, "y":3}, {"label":"K37", "x":9.5, "y":3}, {"label":"K38", "x":10.5, "y":3}, {"label":"K39", "x":11.5, "y":3}, {"label":"K3A", "x":12.5, "y":3}, {"label":"K3B", "x":13.5, "y":3}, {"label":"K3C", "x":14.5, "y":3, "w":2.75}, {"label":"KA8", "x":0, "y":4}, {"label":"KA9", "x":1, "y":4}, {"label":"K40", "x":2.25, "y":4, "w":1.25}, {"label":"K41", "x":3.5, "y":4, "w":1.25}, {"label":"K42", "x":4.75, "y":4, "w":1.25}, {"label":"K46", "x":6, "y":4, "w":6.25}, {"label":"K49", "x":12.25, "y":4, "w":1.25}, {"label":"K4A", "x":13.5, "y":4, "w":1.25}, {"label":"K4C", "x":14.75, "y":4, "w":1.25}, {"label":"K4D", "x":16, "y":4, "w":1.25}] }, "LAYOUT_iso_split": { - "key_count": 74, "layout": [{"label":"KA0", "x":0, "y":0}, {"label":"KA1", "x":1, "y":0}, {"label":"K00", "x":2.25, "y":0}, {"label":"K01", "x":3.25, "y":0}, {"label":"K02", "x":4.25, "y":0}, {"label":"K03", "x":5.25, "y":0}, {"label":"K04", "x":6.25, "y":0}, {"label":"K05", "x":7.25, "y":0}, {"label":"K06", "x":8.25, "y":0}, {"label":"K07", "x":9.25, "y":0}, {"label":"K08", "x":10.25, "y":0}, {"label":"K09", "x":11.25, "y":0}, {"label":"K0A", "x":12.25, "y":0}, {"label":"K0B", "x":13.25, "y":0}, {"label":"K0C", "x":14.25, "y":0}, {"label":"K0D", "x":15.25, "y":0, "w":2}, {"label":"KA2", "x":0, "y":1}, {"label":"KA3", "x":1, "y":1}, {"label":"K10", "x":2.25, "y":1, "w":1.5}, {"label":"K11", "x":3.75, "y":1}, {"label":"K12", "x":4.75, "y":1}, {"label":"K13", "x":5.75, "y":1}, {"label":"K14", "x":6.75, "y":1}, {"label":"K15", "x":7.75, "y":1}, {"label":"K16", "x":8.75, "y":1}, {"label":"K17", "x":9.75, "y":1}, {"label":"K18", "x":10.75, "y":1}, {"label":"K19", "x":11.75, "y":1}, {"label":"K1A", "x":12.75, "y":1}, {"label":"K1B", "x":13.75, "y":1}, {"label":"K1C", "x":14.75, "y":1}, {"label":"K1D", "x":16, "y":1, "w":1.25, "h":2}, {"label":"KA4", "x":0, "y":2}, {"label":"KA5", "x":1, "y":2}, {"label":"K20", "x":2.25, "y":2, "w":1.75}, {"label":"K21", "x":4, "y":2}, {"label":"K22", "x":5, "y":2}, {"label":"K23", "x":6, "y":2}, {"label":"K24", "x":7, "y":2}, {"label":"K25", "x":8, "y":2}, {"label":"K26", "x":9, "y":2}, {"label":"K27", "x":10, "y":2}, {"label":"K28", "x":11, "y":2}, {"label":"K29", "x":12, "y":2}, {"label":"K2A", "x":13, "y":2}, {"label":"K2B", "x":14, "y":2}, {"label":"K2C", "x":15, "y":2}, {"label":"KA6", "x":0, "y":3}, {"label":"KA7", "x":1, "y":3}, {"label":"K30", "x":2.25, "y":3, "w":1.25}, {"label":"K31", "x":3.5, "y":3}, {"label":"K32", "x":4.5, "y":3}, {"label":"K33", "x":5.5, "y":3}, {"label":"K34", "x":6.5, "y":3}, {"label":"K35", "x":7.5, "y":3}, {"label":"K36", "x":8.5, "y":3}, {"label":"K37", "x":9.5, "y":3}, {"label":"K38", "x":10.5, "y":3}, {"label":"K39", "x":11.5, "y":3}, {"label":"K3A", "x":12.5, "y":3}, {"label":"K3B", "x":13.5, "y":3}, {"label":"K3C", "x":14.5, "y":3, "w":2.75}, {"label":"KA8", "x":0, "y":4}, {"label":"KA9", "x":1, "y":4}, {"label":"K40", "x":2.25, "y":4, "w":1.25}, {"label":"K41", "x":3.5, "y":4, "w":1.25}, {"label":"K42", "x":4.75, "y":4, "w":1.25}, {"label":"K44", "x":6, "y":4, "w":2.25}, {"label":"K46", "x":8.25, "y":4, "w":1.25}, {"label":"K47", "x":9.5, "y":4, "w":2.75}, {"label":"K49", "x":12.25, "y":4, "w":1.25}, {"label":"K4A", "x":13.5, "y":4, "w":1.25}, {"label":"K4C", "x":14.75, "y":4, "w":1.25}, {"label":"K4D", "x":16, "y":4, "w":1.25}] }, "LAYOUT_iso_arrows": { - "key_count": 74, "layout": [{"label":"KA0", "x":0, "y":0}, {"label":"KA1", "x":1, "y":0}, {"label":"K00", "x":2.25, "y":0}, {"label":"K01", "x":3.25, "y":0}, {"label":"K02", "x":4.25, "y":0}, {"label":"K03", "x":5.25, "y":0}, {"label":"K04", "x":6.25, "y":0}, {"label":"K05", "x":7.25, "y":0}, {"label":"K06", "x":8.25, "y":0}, {"label":"K07", "x":9.25, "y":0}, {"label":"K08", "x":10.25, "y":0}, {"label":"K09", "x":11.25, "y":0}, {"label":"K0A", "x":12.25, "y":0}, {"label":"K0B", "x":13.25, "y":0}, {"label":"K0C", "x":14.25, "y":0}, {"label":"K0D", "x":15.25, "y":0, "w":2}, {"label":"KA2", "x":0, "y":1}, {"label":"KA3", "x":1, "y":1}, {"label":"K10", "x":2.25, "y":1, "w":1.5}, {"label":"K11", "x":3.75, "y":1}, {"label":"K12", "x":4.75, "y":1}, {"label":"K13", "x":5.75, "y":1}, {"label":"K14", "x":6.75, "y":1}, {"label":"K15", "x":7.75, "y":1}, {"label":"K16", "x":8.75, "y":1}, {"label":"K17", "x":9.75, "y":1}, {"label":"K18", "x":10.75, "y":1}, {"label":"K19", "x":11.75, "y":1}, {"label":"K1A", "x":12.75, "y":1}, {"label":"K1B", "x":13.75, "y":1}, {"label":"K1C", "x":14.75, "y":1}, {"label":"K1D", "x":16, "y":1, "w":1.25, "h":2}, {"label":"KA4", "x":0, "y":2}, {"label":"KA5", "x":1, "y":2}, {"label":"K20", "x":2.25, "y":2, "w":1.75}, {"label":"K21", "x":4, "y":2}, {"label":"K22", "x":5, "y":2}, {"label":"K23", "x":6, "y":2}, {"label":"K24", "x":7, "y":2}, {"label":"K25", "x":8, "y":2}, {"label":"K26", "x":9, "y":2}, {"label":"K27", "x":10, "y":2}, {"label":"K28", "x":11, "y":2}, {"label":"K29", "x":12, "y":2}, {"label":"K2A", "x":13, "y":2}, {"label":"K2B", "x":14, "y":2}, {"label":"K2C", "x":15, "y":2}, {"label":"KA6", "x":0, "y":3}, {"label":"KA7", "x":1, "y":3}, {"label":"K30", "x":2.25, "y":3, "w":1.25}, {"label":"K31", "x":3.5, "y":3}, {"label":"K32", "x":4.5, "y":3}, {"label":"K33", "x":5.5, "y":3}, {"label":"K34", "x":6.5, "y":3}, {"label":"K35", "x":7.5, "y":3}, {"label":"K36", "x":8.5, "y":3}, {"label":"K37", "x":9.5, "y":3}, {"label":"K38", "x":10.5, "y":3}, {"label":"K39", "x":11.5, "y":3}, {"label":"K3A", "x":12.5, "y":3}, {"label":"K3B", "x":13.5, "y":3}, {"label":"K3C", "x":15.25, "y":3}, {"label":"K3D", "x":16.25, "y":3}, {"label":"KA8", "x":0, "y":4}, {"label":"KA9", "x":1, "y":4}, {"label":"K40", "x":2.25, "y":4, "w":1.25}, {"label":"K41", "x":3.5, "y":4, "w":1.25}, {"label":"K42", "x":4.75, "y":4, "w":1.25}, {"label":"K46", "x":6, "y":4, "w":6.25}, {"label":"K49", "x":12.25, "y":4}, {"label":"K4A", "x":13.25, "y":4}, {"label":"K4B", "x":14.25, "y":4}, {"label":"K4C", "x":15.25, "y":4}, {"label":"K4D", "x":16.25, "y":4}] }, "LAYOUT_iso_split_arrows": { - "key_count": 76, "layout": [{"label":"KA0", "x":0, "y":0}, {"label":"KA1", "x":1, "y":0}, {"label":"K00", "x":2.25, "y":0}, {"label":"K01", "x":3.25, "y":0}, {"label":"K02", "x":4.25, "y":0}, {"label":"K03", "x":5.25, "y":0}, {"label":"K04", "x":6.25, "y":0}, {"label":"K05", "x":7.25, "y":0}, {"label":"K06", "x":8.25, "y":0}, {"label":"K07", "x":9.25, "y":0}, {"label":"K08", "x":10.25, "y":0}, {"label":"K09", "x":11.25, "y":0}, {"label":"K0A", "x":12.25, "y":0}, {"label":"K0B", "x":13.25, "y":0}, {"label":"K0C", "x":14.25, "y":0}, {"label":"K0D", "x":15.25, "y":0, "w":2}, {"label":"KA2", "x":0, "y":1}, {"label":"KA3", "x":1, "y":1}, {"label":"K10", "x":2.25, "y":1, "w":1.5}, {"label":"K11", "x":3.75, "y":1}, {"label":"K12", "x":4.75, "y":1}, {"label":"K13", "x":5.75, "y":1}, {"label":"K14", "x":6.75, "y":1}, {"label":"K15", "x":7.75, "y":1}, {"label":"K16", "x":8.75, "y":1}, {"label":"K17", "x":9.75, "y":1}, {"label":"K18", "x":10.75, "y":1}, {"label":"K19", "x":11.75, "y":1}, {"label":"K1A", "x":12.75, "y":1}, {"label":"K1B", "x":13.75, "y":1}, {"label":"K1C", "x":14.75, "y":1}, {"label":"K1D", "x":16, "y":1, "w":1.25, "h":2}, {"label":"KA4", "x":0, "y":2}, {"label":"KA5", "x":1, "y":2}, {"label":"K20", "x":2.25, "y":2, "w":1.75}, {"label":"K21", "x":4, "y":2}, {"label":"K22", "x":5, "y":2}, {"label":"K23", "x":6, "y":2}, {"label":"K24", "x":7, "y":2}, {"label":"K25", "x":8, "y":2}, {"label":"K26", "x":9, "y":2}, {"label":"K27", "x":10, "y":2}, {"label":"K28", "x":11, "y":2}, {"label":"K29", "x":12, "y":2}, {"label":"K2A", "x":13, "y":2}, {"label":"K2B", "x":14, "y":2}, {"label":"K2C", "x":15, "y":2}, {"label":"KA6", "x":0, "y":3}, {"label":"KA7", "x":1, "y":3}, {"label":"K30", "x":2.25, "y":3, "w":1.25}, {"label":"K31", "x":3.5, "y":3}, {"label":"K32", "x":4.5, "y":3}, {"label":"K33", "x":5.5, "y":3}, {"label":"K34", "x":6.5, "y":3}, {"label":"K35", "x":7.5, "y":3}, {"label":"K36", "x":8.5, "y":3}, {"label":"K37", "x":9.5, "y":3}, {"label":"K38", "x":10.5, "y":3}, {"label":"K39", "x":11.5, "y":3}, {"label":"K3A", "x":12.5, "y":3}, {"label":"K3B", "x":13.5, "y":3}, {"label":"K3C", "x":15.25, "y":3}, {"label":"K3D", "x":16.25, "y":3}, {"label":"KA8", "x":0, "y":4}, {"label":"KA9", "x":1, "y":4}, {"label":"K40", "x":2.25, "y":4, "w":1.25}, {"label":"K41", "x":3.5, "y":4, "w":1.25}, {"label":"K42", "x":4.75, "y":4, "w":1.25}, {"label":"K44", "x":6, "y":4, "w":2.25}, {"label":"K46", "x":8.25, "y":4, "w":1.25}, {"label":"K47", "x":9.5, "y":4, "w":2.75}, {"label":"K49", "x":12.25, "y":4}, {"label":"K4A", "x":13.25, "y":4}, {"label":"K4B", "x":14.25, "y":4}, {"label":"K4C", "x":15.25, "y":4}, {"label":"K4D", "x":16.25, "y":4}] } } -} \ No newline at end of file +} diff --git a/keyboards/kona_classic/keymaps/ansi/keymap.c b/keyboards/kona_classic/keymaps/ansi/keymap.c index e6ae4ce47608..5aa483d2843e 100644 --- a/keyboards/kona_classic/keymaps/ansi/keymap.c +++ b/keyboards/kona_classic/keymaps/ansi/keymap.c @@ -44,18 +44,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} - bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case SFT_ESC: diff --git a/keyboards/kona_classic/keymaps/ansi/rules.mk b/keyboards/kona_classic/keymaps/ansi/rules.mk index fec19c9df57c..59881821a25d 100644 --- a/keyboards/kona_classic/keymaps/ansi/rules.mk +++ b/keyboards/kona_classic/keymaps/ansi/rules.mk @@ -18,17 +18,12 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # 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 -MIDI_ENABLE = no # MIDI support -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - diff --git a/keyboards/kona_classic/keymaps/ansi_arrows/keymap.c b/keyboards/kona_classic/keymaps/ansi_arrows/keymap.c index 021cce832d82..d3fcde5b2868 100644 --- a/keyboards/kona_classic/keymaps/ansi_arrows/keymap.c +++ b/keyboards/kona_classic/keymaps/ansi_arrows/keymap.c @@ -44,18 +44,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} - bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case SFT_ESC: diff --git a/keyboards/kona_classic/keymaps/ansi_arrows/rules.mk b/keyboards/kona_classic/keymaps/ansi_arrows/rules.mk index fec19c9df57c..59881821a25d 100644 --- a/keyboards/kona_classic/keymaps/ansi_arrows/rules.mk +++ b/keyboards/kona_classic/keymaps/ansi_arrows/rules.mk @@ -18,17 +18,12 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # 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 -MIDI_ENABLE = no # MIDI support -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - diff --git a/keyboards/kona_classic/keymaps/ansi_arrows_lcap/keymap.c b/keyboards/kona_classic/keymaps/ansi_arrows_lcap/keymap.c index fde23ba94c3a..950203be5fa3 100644 --- a/keyboards/kona_classic/keymaps/ansi_arrows_lcap/keymap.c +++ b/keyboards/kona_classic/keymaps/ansi_arrows_lcap/keymap.c @@ -44,18 +44,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} - bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case SFT_ESC: diff --git a/keyboards/kona_classic/keymaps/ansi_arrows_lcap/rules.mk b/keyboards/kona_classic/keymaps/ansi_arrows_lcap/rules.mk index fec19c9df57c..59881821a25d 100644 --- a/keyboards/kona_classic/keymaps/ansi_arrows_lcap/rules.mk +++ b/keyboards/kona_classic/keymaps/ansi_arrows_lcap/rules.mk @@ -18,17 +18,12 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # 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 -MIDI_ENABLE = no # MIDI support -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - diff --git a/keyboards/kona_classic/keymaps/ansi_split/keymap.c b/keyboards/kona_classic/keymaps/ansi_split/keymap.c index 01e049c7bcbe..1091521357ff 100644 --- a/keyboards/kona_classic/keymaps/ansi_split/keymap.c +++ b/keyboards/kona_classic/keymaps/ansi_split/keymap.c @@ -44,18 +44,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} - bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case SFT_ESC: diff --git a/keyboards/kona_classic/keymaps/ansi_split/rules.mk b/keyboards/kona_classic/keymaps/ansi_split/rules.mk index fec19c9df57c..59881821a25d 100644 --- a/keyboards/kona_classic/keymaps/ansi_split/rules.mk +++ b/keyboards/kona_classic/keymaps/ansi_split/rules.mk @@ -18,17 +18,12 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # 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 -MIDI_ENABLE = no # MIDI support -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - diff --git a/keyboards/kona_classic/keymaps/ansi_split_arrows/keymap.c b/keyboards/kona_classic/keymaps/ansi_split_arrows/keymap.c index eba565bb44d8..60c8b15361a1 100644 --- a/keyboards/kona_classic/keymaps/ansi_split_arrows/keymap.c +++ b/keyboards/kona_classic/keymaps/ansi_split_arrows/keymap.c @@ -44,18 +44,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} - bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case SFT_ESC: diff --git a/keyboards/kona_classic/keymaps/ansi_split_arrows/rules.mk b/keyboards/kona_classic/keymaps/ansi_split_arrows/rules.mk index fec19c9df57c..59881821a25d 100644 --- a/keyboards/kona_classic/keymaps/ansi_split_arrows/rules.mk +++ b/keyboards/kona_classic/keymaps/ansi_split_arrows/rules.mk @@ -18,17 +18,12 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # 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 -MIDI_ENABLE = no # MIDI support -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - diff --git a/keyboards/kona_classic/keymaps/default/keymap.c b/keyboards/kona_classic/keymaps/default/keymap.c index a42e9368038e..60c2b91bc45c 100644 --- a/keyboards/kona_classic/keymaps/default/keymap.c +++ b/keyboards/kona_classic/keymaps/default/keymap.c @@ -44,18 +44,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} - bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case SFT_ESC: diff --git a/keyboards/kona_classic/keymaps/default/rules.mk b/keyboards/kona_classic/keymaps/default/rules.mk index fec19c9df57c..59881821a25d 100644 --- a/keyboards/kona_classic/keymaps/default/rules.mk +++ b/keyboards/kona_classic/keymaps/default/rules.mk @@ -18,17 +18,12 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # 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 -MIDI_ENABLE = no # MIDI support -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - diff --git a/keyboards/kona_classic/keymaps/iso/keymap.c b/keyboards/kona_classic/keymaps/iso/keymap.c index 1486a8b75533..c4c9f41f34c5 100644 --- a/keyboards/kona_classic/keymaps/iso/keymap.c +++ b/keyboards/kona_classic/keymaps/iso/keymap.c @@ -44,18 +44,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} - bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case SFT_ESC: diff --git a/keyboards/kona_classic/keymaps/iso/rules.mk b/keyboards/kona_classic/keymaps/iso/rules.mk index fec19c9df57c..59881821a25d 100644 --- a/keyboards/kona_classic/keymaps/iso/rules.mk +++ b/keyboards/kona_classic/keymaps/iso/rules.mk @@ -18,17 +18,12 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # 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 -MIDI_ENABLE = no # MIDI support -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - diff --git a/keyboards/kona_classic/keymaps/iso_arrows/keymap.c b/keyboards/kona_classic/keymaps/iso_arrows/keymap.c index 96adc3482702..072785bf8849 100644 --- a/keyboards/kona_classic/keymaps/iso_arrows/keymap.c +++ b/keyboards/kona_classic/keymaps/iso_arrows/keymap.c @@ -44,18 +44,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} - bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case SFT_ESC: diff --git a/keyboards/kona_classic/keymaps/iso_arrows/rules.mk b/keyboards/kona_classic/keymaps/iso_arrows/rules.mk index fec19c9df57c..59881821a25d 100644 --- a/keyboards/kona_classic/keymaps/iso_arrows/rules.mk +++ b/keyboards/kona_classic/keymaps/iso_arrows/rules.mk @@ -18,17 +18,12 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # 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 -MIDI_ENABLE = no # MIDI support -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - diff --git a/keyboards/kona_classic/keymaps/iso_split/keymap.c b/keyboards/kona_classic/keymaps/iso_split/keymap.c index 278b4cd32db8..a0830fc8d680 100644 --- a/keyboards/kona_classic/keymaps/iso_split/keymap.c +++ b/keyboards/kona_classic/keymaps/iso_split/keymap.c @@ -44,18 +44,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} - bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case SFT_ESC: diff --git a/keyboards/kona_classic/keymaps/iso_split/rules.mk b/keyboards/kona_classic/keymaps/iso_split/rules.mk index fec19c9df57c..59881821a25d 100644 --- a/keyboards/kona_classic/keymaps/iso_split/rules.mk +++ b/keyboards/kona_classic/keymaps/iso_split/rules.mk @@ -18,17 +18,12 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # 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 -MIDI_ENABLE = no # MIDI support -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - diff --git a/keyboards/kona_classic/keymaps/iso_split_arrows/keymap.c b/keyboards/kona_classic/keymaps/iso_split_arrows/keymap.c index 1e8bc041867f..29ce3375f6ba 100644 --- a/keyboards/kona_classic/keymaps/iso_split_arrows/keymap.c +++ b/keyboards/kona_classic/keymaps/iso_split_arrows/keymap.c @@ -44,18 +44,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} - bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case SFT_ESC: diff --git a/keyboards/kona_classic/keymaps/iso_split_arrows/rules.mk b/keyboards/kona_classic/keymaps/iso_split_arrows/rules.mk index fec19c9df57c..59881821a25d 100644 --- a/keyboards/kona_classic/keymaps/iso_split_arrows/rules.mk +++ b/keyboards/kona_classic/keymaps/iso_split_arrows/rules.mk @@ -18,17 +18,12 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # 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 -MIDI_ENABLE = no # MIDI support -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - diff --git a/keyboards/kona_classic/kona_classic.h b/keyboards/kona_classic/kona_classic.h index 98eed3b3c2aa..66757fc9c415 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 . */ -#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/kona_classic/rules.mk b/keyboards/kona_classic/rules.mk index 8c5740b51b3d..df9239f247cd 100644 --- a/keyboards/kona_classic/rules.mk +++ b/keyboards/kona_classic/rules.mk @@ -2,29 +2,17 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = halfkay # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/kopibeng/mnk88/chconf.h b/keyboards/kopibeng/mnk88/chconf.h new file mode 100644 index 000000000000..5d57f9aece29 --- /dev/null +++ b/keyboards/kopibeng/mnk88/chconf.h @@ -0,0 +1,31 @@ +/* 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/kopibeng/xt8x/chconf.h -r platforms/chibios/common/configs/chconf.h` + */ + +#pragma once + +#define CH_CFG_ST_FREQUENCY 10000 + +#define CH_CFG_OPTIMIZE_SPEED FALSE + +#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE + +#include_next + diff --git a/keyboards/kopibeng/mnk88/config.h b/keyboards/kopibeng/mnk88/config.h new file mode 100644 index 000000000000..d8b4422523b3 --- /dev/null +++ b/keyboards/kopibeng/mnk88/config.h @@ -0,0 +1,82 @@ +/* Copyright 2021 Samuel Lu + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4B50 // 'KP' kopibeng +#define PRODUCT_ID 0x8800 +#define DEVICE_VER 0x0001 +#define MANUFACTURER kopibeng +#define PRODUCT MNK88 + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 17 + +/* + * 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 { A8, B15, A9, B12, A3, B14 } +#define MATRIX_COL_PINS { A2, A1, A0, B11, B10, B2, F1, B1, B0, A7, A6, A5, F0, A4, C15, C14, C13 } + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +#define LED_CAPS_LOCK_PIN B3 +#define LED_SCROLL_LOCK_PIN A15 + +#define RGB_DI_PIN A10 +#ifdef RGB_DI_PIN + #define RGBLED_NUM 19 + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 200 /* The maximum brightness level */ + #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +// #define RGBLIGHT_ANIMATIONS +// /*== or choose animations ==*/ + #define RGBLIGHT_EFFECT_BREATHING + #define RGBLIGHT_EFFECT_RAINBOW_MOOD + #define RGBLIGHT_EFFECT_RAINBOW_SWIRL +// #define RGBLIGHT_EFFECT_SNAKE +// #define RGBLIGHT_EFFECT_KNIGHT +// #define RGBLIGHT_EFFECT_CHRISTMAS + #define RGBLIGHT_EFFECT_STATIC_GRADIENT + #define RGBLIGHT_EFFECT_RGB_TEST +// #define RGBLIGHT_EFFECT_ALTERNATING +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* 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/kopibeng/mnk88/info.json b/keyboards/kopibeng/mnk88/info.json new file mode 100644 index 000000000000..2ee4da805054 --- /dev/null +++ b/keyboards/kopibeng/mnk88/info.json @@ -0,0 +1,495 @@ +{ + "keyboard_name": "MNK88", + "maintainer": "kopibeng", + "url": "https://monokei.co/", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"K00", "x":0, "y":0}, + {"label":"K01", "x":1.25, "y":0}, + {"label":"K02", "x":2.25, "y":0}, + {"label":"K03", "x":3.25, "y":0}, + {"label":"K04", "x":4.25, "y":0}, + {"label":"K05", "x":5.5, "y":0}, + {"label":"K06", "x":6.5, "y":0}, + {"label":"K07", "x":7.5, "y":0}, + {"label":"K08", "x":8.5, "y":0}, + {"label":"K09", "x":9.75, "y":0}, + {"label":"K0A", "x":10.75, "y":0}, + {"label":"K0B", "x":11.75, "y":0}, + {"label":"K0C", "x":12.75, "y":0}, + {"label":"K0D", "x":14, "y":0}, + {"label":"K0E", "x":15.25, "y":0}, + {"label":"K0F", "x":16.25, "y":0}, + {"label":"K0G", "x":17.25, "y":0}, + + {"label":"K10", "x":0, "y":1.25}, + {"label":"K11", "x":1, "y":1.25}, + {"label":"K12", "x":2, "y":1.25}, + {"label":"K13", "x":3, "y":1.25}, + {"label":"K14", "x":4, "y":1.25}, + {"label":"K15", "x":5, "y":1.25}, + {"label":"K16", "x":6, "y":1.25}, + {"label":"K17", "x":7, "y":1.25}, + {"label":"K18", "x":8, "y":1.25}, + {"label":"K19", "x":9, "y":1.25}, + {"label":"K1A", "x":10, "y":1.25}, + {"label":"K1B", "x":11, "y":1.25}, + {"label":"K1C", "x":12, "y":1.25}, + {"label":"K2C", "x":13, "y":1.25}, + {"label":"K1D", "x":14, "y":1.25}, + {"label":"K1E", "x":15.25, "y":1.25}, + {"label":"K1F", "x":16.25, "y":1.25}, + {"label":"K1G", "x":17.25, "y":1.25}, + + {"label":"K20", "x":0, "y":2.25, "w":1.5}, + {"label":"K21", "x":1.5, "y":2.25}, + {"label":"K22", "x":2.5, "y":2.25}, + {"label":"K23", "x":3.5, "y":2.25}, + {"label":"K24", "x":4.5, "y":2.25}, + {"label":"K25", "x":5.5, "y":2.25}, + {"label":"K26", "x":6.5, "y":2.25}, + {"label":"K27", "x":7.5, "y":2.25}, + {"label":"K28", "x":8.5, "y":2.25}, + {"label":"K29", "x":9.5, "y":2.25}, + {"label":"K2A", "x":10.5, "y":2.25}, + {"label":"K2B", "x":11.5, "y":2.25}, + {"label":"K3C", "x":12.5, "y":2.25}, + {"label":"K2D", "x":13.5, "y":2.25, "w":1.5}, + {"label":"K2E", "x":15.25, "y":2.25}, + {"label":"K2F", "x":16.25, "y":2.25}, + {"label":"K2G", "x":17.25, "y":2.25}, + + {"label":"K30", "x":0, "y":3.25, "w":1.75}, + {"label":"K31", "x":1.75, "y":3.25}, + {"label":"K32", "x":2.75, "y":3.25}, + {"label":"K33", "x":3.75, "y":3.25}, + {"label":"K34", "x":4.75, "y":3.25}, + {"label":"K35", "x":5.75, "y":3.25}, + {"label":"K36", "x":6.75, "y":3.25}, + {"label":"K37", "x":7.75, "y":3.25}, + {"label":"K38", "x":8.75, "y":3.25}, + {"label":"K39", "x":9.75, "y":3.25}, + {"label":"K3A", "x":10.75, "y":3.25}, + {"label":"K3B", "x":11.75, "y":3.25}, + {"label":"K3D", "x":12.75, "y":3.25, "w":2.25}, + + {"label":"K40", "x":0, "y":4.25, "w":1.25}, + {"label":"K41", "x":1.25, "y":4.25}, + {"label":"K42", "x":2.25, "y":4.25}, + {"label":"K43", "x":3.25, "y":4.25}, + {"label":"K44", "x":4.25, "y":4.25}, + {"label":"K45", "x":5.25, "y":4.25}, + {"label":"K46", "x":6.25, "y":4.25}, + {"label":"K47", "x":7.25, "y":4.25}, + {"label":"K48", "x":8.25, "y":4.25}, + {"label":"K49", "x":9.25, "y":4.25}, + {"label":"K4A", "x":10.25, "y":4.25}, + {"label":"K4B", "x":11.25, "y":4.25}, + {"label":"K4C", "x":12.25, "y":4.25, "w":1.75}, + {"label":"K4D", "x":14, "y":4.25}, + {"label":"K4F", "x":16.25, "y":4.25}, + + {"label":"K50", "x":0, "y":5.25, "w":1.25}, + {"label":"K51", "x":1.25, "y":5.25, "w":1.25}, + {"label":"K52", "x":2.5, "y":5.25, "w":1.25}, + {"label":"K56", "x":3.75, "y":5.25, "w":6.25}, + {"label":"K5A", "x":10, "y":5.25, "w":1.25}, + {"label":"K5B", "x":11.25, "y":5.25, "w":1.25}, + {"label":"K5C", "x":12.5, "y":5.25, "w":1.25}, + {"label":"K5D", "x":13.75, "y":5.25, "w":1.25}, + {"label":"K5E", "x":15.25, "y":5.25}, + {"label":"K5F", "x":16.25, "y":5.25}, + {"label":"K4G", "x":17.25, "y":5.25} + ] + }, + "LAYOUT_tkl_f13_ansi": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":1.25, "y":0}, + {"label":"F2", "x":2.25, "y":0}, + {"label":"F3", "x":3.25, "y":0}, + {"label":"F4", "x":4.25, "y":0}, + {"label":"F5", "x":5.5, "y":0}, + {"label":"F6", "x":6.5, "y":0}, + {"label":"F7", "x":7.5, "y":0}, + {"label":"F8", "x":8.5, "y":0}, + {"label":"F9", "x":9.75, "y":0}, + {"label":"F10", "x":10.75, "y":0}, + {"label":"F11", "x":11.75, "y":0}, + {"label":"F12", "x":12.75, "y":0}, + {"label":"F13", "x":14, "y":0}, + {"label":"Print Screen", "x":15.25, "y":0}, + {"label":"Scroll Lock", "x":16.25, "y":0}, + {"label":"Pause", "x":17.25, "y":0}, + + {"label":"`~", "x":0, "y":1.25}, + {"label":"1!", "x":1, "y":1.25}, + {"label":"2@", "x":2, "y":1.25}, + {"label":"3#", "x":3, "y":1.25}, + {"label":"4$", "x":4, "y":1.25}, + {"label":"5%", "x":5, "y":1.25}, + {"label":"6^", "x":6, "y":1.25}, + {"label":"7&", "x":7, "y":1.25}, + {"label":"8*", "x":8, "y":1.25}, + {"label":"9(", "x":9, "y":1.25}, + {"label":"0)", "x":10, "y":1.25}, + {"label":"-_", "x":11, "y":1.25}, + {"label":"=+", "x":12, "y":1.25}, + {"label":"Backspace", "x":13, "y":1.25, "w":2}, + {"label":"Insert", "x":15.25, "y":1.25}, + {"label":"Home", "x":16.25, "y":1.25}, + {"label":"Page Up", "x":17.25, "y":1.25}, + + {"label":"Tab", "x":0, "y":2.25, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.25}, + {"label":"W", "x":2.5, "y":2.25}, + {"label":"E", "x":3.5, "y":2.25}, + {"label":"R", "x":4.5, "y":2.25}, + {"label":"T", "x":5.5, "y":2.25}, + {"label":"Y", "x":6.5, "y":2.25}, + {"label":"U", "x":7.5, "y":2.25}, + {"label":"I", "x":8.5, "y":2.25}, + {"label":"O", "x":9.5, "y":2.25}, + {"label":"P", "x":10.5, "y":2.25}, + {"label":"[{", "x":11.5, "y":2.25}, + {"label":"]}", "x":12.5, "y":2.25}, + {"label":"\\|", "x":13.5, "y":2.25, "w":1.5}, + {"label":"Delete", "x":15.25, "y":2.25}, + {"label":"End", "x":16.25, "y":2.25}, + {"label":"Page Down", "x":17.25, "y":2.25}, + + {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, + {"label":"A", "x":1.75, "y":3.25}, + {"label":"S", "x":2.75, "y":3.25}, + {"label":"D", "x":3.75, "y":3.25}, + {"label":"F", "x":4.75, "y":3.25}, + {"label":"G", "x":5.75, "y":3.25}, + {"label":"H", "x":6.75, "y":3.25}, + {"label":"J", "x":7.75, "y":3.25}, + {"label":"K", "x":8.75, "y":3.25}, + {"label":"L", "x":9.75, "y":3.25}, + {"label":";:", "x":10.75, "y":3.25}, + {"label":"'\"", "x":11.75, "y":3.25}, + {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, + + {"label":"Shift", "x":0, "y":4.25, "w":2.25}, + {"label":"Z", "x":2.25, "y":4.25}, + {"label":"X", "x":3.25, "y":4.25}, + {"label":"C", "x":4.25, "y":4.25}, + {"label":"V", "x":5.25, "y":4.25}, + {"label":"B", "x":6.25, "y":4.25}, + {"label":"N", "x":7.25, "y":4.25}, + {"label":"M", "x":8.25, "y":4.25}, + {"label":",<", "x":9.25, "y":4.25}, + {"label":".>", "x":10.25, "y":4.25}, + {"label":"/?", "x":11.25, "y":4.25}, + {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, + {"label":"\u2191", "x":16.25, "y":4.25}, + + {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, + {"label":"GUI", "x":1.25, "y":5.25, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, + {"label":"Space", "x":3.75, "y":5.25, "w":6.25}, + {"label":"Alt", "x":10, "y":5.25, "w":1.25}, + {"label":"GUI", "x":11.25, "y":5.25, "w":1.25}, + {"label":"Menu", "x":12.5, "y":5.25, "w":1.25}, + {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, + {"label":"\u2190", "x":15.25, "y":5.25}, + {"label":"\u2193", "x":16.25, "y":5.25}, + {"label":"\u2192", "x":17.25, "y":5.25} + ] + }, + "LAYOUT_tkl_f13_ansi_tsangan": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":1.25, "y":0}, + {"label":"F2", "x":2.25, "y":0}, + {"label":"F3", "x":3.25, "y":0}, + {"label":"F4", "x":4.25, "y":0}, + {"label":"F5", "x":5.5, "y":0}, + {"label":"F6", "x":6.5, "y":0}, + {"label":"F7", "x":7.5, "y":0}, + {"label":"F8", "x":8.5, "y":0}, + {"label":"F9", "x":9.75, "y":0}, + {"label":"F10", "x":10.75, "y":0}, + {"label":"F11", "x":11.75, "y":0}, + {"label":"F12", "x":12.75, "y":0}, + {"label":"F13", "x":14, "y":0}, + {"label":"Print Screen", "x":15.25, "y":0}, + {"label":"Scroll Lock", "x":16.25, "y":0}, + {"label":"Pause", "x":17.25, "y":0}, + + {"label":"`~", "x":0, "y":1.25}, + {"label":"1!", "x":1, "y":1.25}, + {"label":"2@", "x":2, "y":1.25}, + {"label":"3#", "x":3, "y":1.25}, + {"label":"4$", "x":4, "y":1.25}, + {"label":"5%", "x":5, "y":1.25}, + {"label":"6^", "x":6, "y":1.25}, + {"label":"7&", "x":7, "y":1.25}, + {"label":"8*", "x":8, "y":1.25}, + {"label":"9(", "x":9, "y":1.25}, + {"label":"0)", "x":10, "y":1.25}, + {"label":"-_", "x":11, "y":1.25}, + {"label":"=+", "x":12, "y":1.25}, + {"label":"Backspace", "x":13, "y":1.25, "w":2}, + {"label":"Insert", "x":15.25, "y":1.25}, + {"label":"Home", "x":16.25, "y":1.25}, + {"label":"Page Up", "x":17.25, "y":1.25}, + + {"label":"Tab", "x":0, "y":2.25, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.25}, + {"label":"W", "x":2.5, "y":2.25}, + {"label":"E", "x":3.5, "y":2.25}, + {"label":"R", "x":4.5, "y":2.25}, + {"label":"T", "x":5.5, "y":2.25}, + {"label":"Y", "x":6.5, "y":2.25}, + {"label":"U", "x":7.5, "y":2.25}, + {"label":"I", "x":8.5, "y":2.25}, + {"label":"O", "x":9.5, "y":2.25}, + {"label":"P", "x":10.5, "y":2.25}, + {"label":"[{", "x":11.5, "y":2.25}, + {"label":"]}", "x":12.5, "y":2.25}, + {"label":"\\|", "x":13.5, "y":2.25, "w":1.5}, + {"label":"Delete", "x":15.25, "y":2.25}, + {"label":"End", "x":16.25, "y":2.25}, + {"label":"Page Down", "x":17.25, "y":2.25}, + + {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, + {"label":"A", "x":1.75, "y":3.25}, + {"label":"S", "x":2.75, "y":3.25}, + {"label":"D", "x":3.75, "y":3.25}, + {"label":"F", "x":4.75, "y":3.25}, + {"label":"G", "x":5.75, "y":3.25}, + {"label":"H", "x":6.75, "y":3.25}, + {"label":"J", "x":7.75, "y":3.25}, + {"label":"K", "x":8.75, "y":3.25}, + {"label":"L", "x":9.75, "y":3.25}, + {"label":";:", "x":10.75, "y":3.25}, + {"label":"'\"", "x":11.75, "y":3.25}, + {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, + + {"label":"Shift", "x":0, "y":4.25, "w":2.25}, + {"label":"Z", "x":2.25, "y":4.25}, + {"label":"X", "x":3.25, "y":4.25}, + {"label":"C", "x":4.25, "y":4.25}, + {"label":"V", "x":5.25, "y":4.25}, + {"label":"B", "x":6.25, "y":4.25}, + {"label":"N", "x":7.25, "y":4.25}, + {"label":"M", "x":8.25, "y":4.25}, + {"label":",<", "x":9.25, "y":4.25}, + {"label":".>", "x":10.25, "y":4.25}, + {"label":"/?", "x":11.25, "y":4.25}, + {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, + {"label":"\u2191", "x":16.25, "y":4.25}, + + {"label":"Ctrl", "x":0, "y":5.25, "w":1.5}, + {"label":"GUI", "x":1.5, "y":5.25}, + {"label":"Alt", "x":2.5, "y":5.25, "w":1.5}, + {"label":"Space", "x":4, "y":5.25, "w":7}, + {"label":"Alt", "x":11, "y":5.25, "w":1.5}, + {"label":"Menu", "x":12.5, "y":5.25}, + {"label":"Ctrl", "x":13.5, "y":5.25, "w":1.5}, + {"label":"\u2190", "x":15.25, "y":5.25}, + {"label":"\u2193", "x":16.25, "y":5.25}, + {"label":"\u2192", "x":17.25, "y":5.25} + ] + }, + "LAYOUT_tkl_f13_iso": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":1.25, "y":0}, + {"label":"F2", "x":2.25, "y":0}, + {"label":"F3", "x":3.25, "y":0}, + {"label":"F4", "x":4.25, "y":0}, + {"label":"F5", "x":5.5, "y":0}, + {"label":"F6", "x":6.5, "y":0}, + {"label":"F7", "x":7.5, "y":0}, + {"label":"F8", "x":8.5, "y":0}, + {"label":"F9", "x":9.75, "y":0}, + {"label":"F10", "x":10.75, "y":0}, + {"label":"F11", "x":11.75, "y":0}, + {"label":"F12", "x":12.75, "y":0}, + {"label":"F13", "x":14, "y":0}, + {"label":"Print Screen", "x":15.25, "y":0}, + {"label":"Scroll Lock", "x":16.25, "y":0}, + {"label":"Pause", "x":17.25, "y":0}, + + {"label":"`\u00ac", "x":0, "y":1.25}, + {"label":"1!", "x":1, "y":1.25}, + {"label":"2\"", "x":2, "y":1.25}, + {"label":"3\u00a3", "x":3, "y":1.25}, + {"label":"4$", "x":4, "y":1.25}, + {"label":"5%", "x":5, "y":1.25}, + {"label":"6^", "x":6, "y":1.25}, + {"label":"7&", "x":7, "y":1.25}, + {"label":"8*", "x":8, "y":1.25}, + {"label":"9(", "x":9, "y":1.25}, + {"label":"0)", "x":10, "y":1.25}, + {"label":"-_", "x":11, "y":1.25}, + {"label":"=+", "x":12, "y":1.25}, + {"label":"Backspace", "x":13, "y":1.25, "w":2}, + {"label":"Insert", "x":15.25, "y":1.25}, + {"label":"Home", "x":16.25, "y":1.25}, + {"label":"Page Up", "x":17.25, "y":1.25}, + + {"label":"Tab", "x":0, "y":2.25, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.25}, + {"label":"W", "x":2.5, "y":2.25}, + {"label":"E", "x":3.5, "y":2.25}, + {"label":"R", "x":4.5, "y":2.25}, + {"label":"T", "x":5.5, "y":2.25}, + {"label":"Y", "x":6.5, "y":2.25}, + {"label":"U", "x":7.5, "y":2.25}, + {"label":"I", "x":8.5, "y":2.25}, + {"label":"O", "x":9.5, "y":2.25}, + {"label":"P", "x":10.5, "y":2.25}, + {"label":"[{", "x":11.5, "y":2.25}, + {"label":"]}", "x":12.5, "y":2.25}, + {"label":"Delete", "x":15.25, "y":2.25}, + {"label":"End", "x":16.25, "y":2.25}, + {"label":"Page Down", "x":17.25, "y":2.25}, + + {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, + {"label":"A", "x":1.75, "y":3.25}, + {"label":"S", "x":2.75, "y":3.25}, + {"label":"D", "x":3.75, "y":3.25}, + {"label":"F", "x":4.75, "y":3.25}, + {"label":"G", "x":5.75, "y":3.25}, + {"label":"H", "x":6.75, "y":3.25}, + {"label":"J", "x":7.75, "y":3.25}, + {"label":"K", "x":8.75, "y":3.25}, + {"label":"L", "x":9.75, "y":3.25}, + {"label":";:", "x":10.75, "y":3.25}, + {"label":"'@", "x":11.75, "y":3.25}, + {"label":"#~", "x":12.75, "y":3.25}, + {"label":"Enter", "x":13.75, "y":2.25, "w":1.25, "h":2}, + + {"label":"Shift", "x":0, "y":4.25, "w":1.25}, + {"label":"\\|", "x":1.25, "y":4.25}, + {"label":"Z", "x":2.25, "y":4.25}, + {"label":"X", "x":3.25, "y":4.25}, + {"label":"C", "x":4.25, "y":4.25}, + {"label":"V", "x":5.25, "y":4.25}, + {"label":"B", "x":6.25, "y":4.25}, + {"label":"N", "x":7.25, "y":4.25}, + {"label":"M", "x":8.25, "y":4.25}, + {"label":",<", "x":9.25, "y":4.25}, + {"label":".>", "x":10.25, "y":4.25}, + {"label":"/?", "x":11.25, "y":4.25}, + {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, + {"label":"\u2191", "x":16.25, "y":4.25}, + + {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, + {"label":"GUI", "x":1.25, "y":5.25, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, + {"label":"Space", "x":3.75, "y":5.25, "w":6.25}, + {"label":"Alt", "x":10, "y":5.25, "w":1.25}, + {"label":"GUI", "x":11.25, "y":5.25, "w":1.25}, + {"label":"Menu", "x":12.5, "y":5.25, "w":1.25}, + {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, + {"label":"\u2190", "x":15.25, "y":5.25}, + {"label":"\u2193", "x":16.25, "y":5.25}, + {"label":"\u2192", "x":17.25, "y":5.25} + ] + }, + "LAYOUT_tkl_f13_iso_tsangan": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":1.25, "y":0}, + {"label":"F2", "x":2.25, "y":0}, + {"label":"F3", "x":3.25, "y":0}, + {"label":"F4", "x":4.25, "y":0}, + {"label":"F5", "x":5.5, "y":0}, + {"label":"F6", "x":6.5, "y":0}, + {"label":"F7", "x":7.5, "y":0}, + {"label":"F8", "x":8.5, "y":0}, + {"label":"F9", "x":9.75, "y":0}, + {"label":"F10", "x":10.75, "y":0}, + {"label":"F11", "x":11.75, "y":0}, + {"label":"F12", "x":12.75, "y":0}, + {"label":"F13", "x":14, "y":0}, + {"label":"Print Screen", "x":15.25, "y":0}, + {"label":"Scroll Lock", "x":16.25, "y":0}, + {"label":"Pause", "x":17.25, "y":0}, + + {"label":"`\u00ac", "x":0, "y":1.25}, + {"label":"1!", "x":1, "y":1.25}, + {"label":"2\"", "x":2, "y":1.25}, + {"label":"3\u00a3", "x":3, "y":1.25}, + {"label":"4$", "x":4, "y":1.25}, + {"label":"5%", "x":5, "y":1.25}, + {"label":"6^", "x":6, "y":1.25}, + {"label":"7&", "x":7, "y":1.25}, + {"label":"8*", "x":8, "y":1.25}, + {"label":"9(", "x":9, "y":1.25}, + {"label":"0)", "x":10, "y":1.25}, + {"label":"-_", "x":11, "y":1.25}, + {"label":"=+", "x":12, "y":1.25}, + {"label":"Backspace", "x":13, "y":1.25, "w":2}, + {"label":"Insert", "x":15.25, "y":1.25}, + {"label":"Home", "x":16.25, "y":1.25}, + {"label":"Page Up", "x":17.25, "y":1.25}, + + {"label":"Tab", "x":0, "y":2.25, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.25}, + {"label":"W", "x":2.5, "y":2.25}, + {"label":"E", "x":3.5, "y":2.25}, + {"label":"R", "x":4.5, "y":2.25}, + {"label":"T", "x":5.5, "y":2.25}, + {"label":"Y", "x":6.5, "y":2.25}, + {"label":"U", "x":7.5, "y":2.25}, + {"label":"I", "x":8.5, "y":2.25}, + {"label":"O", "x":9.5, "y":2.25}, + {"label":"P", "x":10.5, "y":2.25}, + {"label":"[{", "x":11.5, "y":2.25}, + {"label":"]}", "x":12.5, "y":2.25}, + {"label":"Delete", "x":15.25, "y":2.25}, + {"label":"End", "x":16.25, "y":2.25}, + {"label":"Page Down", "x":17.25, "y":2.25}, + + {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, + {"label":"A", "x":1.75, "y":3.25}, + {"label":"S", "x":2.75, "y":3.25}, + {"label":"D", "x":3.75, "y":3.25}, + {"label":"F", "x":4.75, "y":3.25}, + {"label":"G", "x":5.75, "y":3.25}, + {"label":"H", "x":6.75, "y":3.25}, + {"label":"J", "x":7.75, "y":3.25}, + {"label":"K", "x":8.75, "y":3.25}, + {"label":"L", "x":9.75, "y":3.25}, + {"label":";:", "x":10.75, "y":3.25}, + {"label":"'@", "x":11.75, "y":3.25}, + {"label":"#~", "x":12.75, "y":3.25}, + {"label":"Enter", "x":13.75, "y":2.25, "w":1.25, "h":2}, + + {"label":"Shift", "x":0, "y":4.25, "w":1.25}, + {"label":"\\|", "x":1.25, "y":4.25}, + {"label":"Z", "x":2.25, "y":4.25}, + {"label":"X", "x":3.25, "y":4.25}, + {"label":"C", "x":4.25, "y":4.25}, + {"label":"V", "x":5.25, "y":4.25}, + {"label":"B", "x":6.25, "y":4.25}, + {"label":"N", "x":7.25, "y":4.25}, + {"label":"M", "x":8.25, "y":4.25}, + {"label":",<", "x":9.25, "y":4.25}, + {"label":".>", "x":10.25, "y":4.25}, + {"label":"/?", "x":11.25, "y":4.25}, + {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, + {"label":"\u2191", "x":16.25, "y":4.25}, + + {"label":"Ctrl", "x":0, "y":5.25, "w":1.5}, + {"label":"GUI", "x":1.5, "y":5.25}, + {"label":"Alt", "x":2.5, "y":5.25, "w":1.5}, + {"label":"Space", "x":4, "y":5.25, "w":7}, + {"label":"Alt", "x":11, "y":5.25, "w":1.5}, + {"label":"Menu", "x":12.5, "y":5.25}, + {"label":"Ctrl", "x":13.5, "y":5.25, "w":1.5}, + {"label":"\u2190", "x":15.25, "y":5.25}, + {"label":"\u2193", "x":16.25, "y":5.25}, + {"label":"\u2192", "x":17.25, "y":5.25} + ] + } + } +} diff --git a/keyboards/kopibeng/mnk88/keymaps/default/keymap.c b/keyboards/kopibeng/mnk88/keymaps/default/keymap.c new file mode 100644 index 000000000000..eb3748e277de --- /dev/null +++ b/keyboards/kopibeng/mnk88/keymaps/default/keymap.c @@ -0,0 +1,61 @@ +/* Copyright 2021 Samuel Lu + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + // Default layer + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(2), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + // Fn1 Layer + [1] = LAYOUT_all( + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_VOLD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + // Fn2 Layer + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + // Fn3 Layer + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + +}; diff --git a/keyboards/kopibeng/mnk88/keymaps/via/keymap.c b/keyboards/kopibeng/mnk88/keymaps/via/keymap.c new file mode 100644 index 000000000000..eb3748e277de --- /dev/null +++ b/keyboards/kopibeng/mnk88/keymaps/via/keymap.c @@ -0,0 +1,61 @@ +/* Copyright 2021 Samuel Lu + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + // Default layer + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(2), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + // Fn1 Layer + [1] = LAYOUT_all( + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_VOLD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + // Fn2 Layer + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + // Fn3 Layer + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + +}; diff --git a/keyboards/kopibeng/mnk88/keymaps/via/rules.mk b/keyboards/kopibeng/mnk88/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/kopibeng/mnk88/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/kopibeng/mnk88/mnk88.c b/keyboards/kopibeng/mnk88/mnk88.c new file mode 100644 index 000000000000..ac40692d48a7 --- /dev/null +++ b/keyboards/kopibeng/mnk88/mnk88.c @@ -0,0 +1,36 @@ +/* Copyright 2021 Samuel Lu + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "mnk88.h" + +void matrix_init_kb(void) { + + setPinOutput(LED_CAPS_LOCK_PIN); + setPinOutput(LED_SCROLL_LOCK_PIN); + + matrix_init_user(); +} + +bool led_update_kb(led_t led_state) { + + bool res = led_update_user(led_state); + + if(res) { + writePin(LED_CAPS_LOCK_PIN, led_state.caps_lock); + writePin(LED_SCROLL_LOCK_PIN, led_state.scroll_lock); + } + return res; +} diff --git a/keyboards/kopibeng/mnk88/mnk88.h b/keyboards/kopibeng/mnk88/mnk88.h new file mode 100644 index 000000000000..fd6803ce0c76 --- /dev/null +++ b/keyboards/kopibeng/mnk88/mnk88.h @@ -0,0 +1,121 @@ +/* Copyright 2021 Samuel Lu + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ___ KC_NO + +/* + * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐┌───┬───┬───┐ + * │00 ││01 │02 │03 │04 ││05 │06 │07 │08 ││09 │0A │0B │0C ││0D ││0E │0F │0G │ + * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘└───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐┌───┬───┬───┐ ┌───────┐ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │2C │1D ││1E │1F │1G │ │1D │ 2u Backspace + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤├───┼───┼───┤ └─┬─────┤ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │3C │2D ││2E │2F │2G │ │ │ + * 2.25u ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤└───┴───┴───┘ ┌──┴┐2D │ ISO Enter + * LShift │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3D │ │3D │ │ + * ┌────────┐ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ ┌─┴───┴────┤ + * │40 │ │40 │41 │42 │43 │44 │45 │46 │47 │48 │49 │4A │4B │4C │4D │ │4F │ │4C │ 2.75u RShift + * └────────┘ ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤┌───┼───┼───┐ └──────────┘ + * │50 │51 │52 │56 │5A │5B │5C │5D ││5E │5F │4G │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘└───┴───┴───┘ + * ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐ + * │50 │51 │52 │56 │5B │5C │5D │ Tsangan/WKL + * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ + */ + +#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, K2C, K1D, K1E, K1F, K1G, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K3C, K2D, K2E, K2F, K2G, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4F, \ + K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E, K5F, 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, 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, ___, K4F, K4G}, \ + {K50, K51, K52, ___, ___, ___, K56, ___, ___, ___, K5A, K5B, K5C, K5D, K5E, K5F, ___} \ +} + +#define LAYOUT_tkl_f13_ansi( \ + 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, K3C, 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, K56, K5A, K5B, K5C, K5D, K5E, K5F, 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, ___, K2D, K2E, K2F, K2G}, \ + {K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, ___, ___, ___}, \ + {K40, ___, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, ___, ___, K4F, K4G}, \ + {K50, K51, K52, ___, ___, ___, K56, ___, ___, ___, K5A, K5B, K5C, K5D, K5E, K5F, ___} \ +} + +#define LAYOUT_tkl_f13_ansi_tsangan( \ + 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, K3C, 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, K56, K5B, K5C, K5D, K5E, K5F, 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, ___, K2D, K2E, K2F, K2G}, \ + {K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, ___, ___, ___}, \ + {K40, ___, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, ___, ___, K4F, K4G}, \ + {K50, K51, K52, ___, ___, ___, K56, ___, ___, ___, ___, K5B, K5C, K5D, K5E, K5F, ___} \ +} + +#define LAYOUT_tkl_f13_iso( \ + 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, K3C, K2E, K2F, K2G, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, 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, 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, ___, 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, ___, ___, K4F, K4G}, \ + {K50, K51, K52, ___, ___, ___, K56, ___, ___, ___, K5A, K5B, K5C, K5D, K5E, K5F, ___} \ +} + +#define LAYOUT_tkl_f13_iso_tsangan( \ + 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, K3C, K2E, K2F, K2G, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K2D, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4F, \ + K50, K51, K52, K56, K5B, K5C, K5D, K5E, K5F, 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, ___, 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, ___, ___, K4F, K4G}, \ + {K50, K51, K52, ___, ___, ___, K56, ___, ___, ___, ___, K5B, K5C, K5D, K5E, K5F, ___} \ +} diff --git a/keyboards/kopibeng/mnk88/readme.md b/keyboards/kopibeng/mnk88/readme.md new file mode 100644 index 000000000000..700dc8b248d0 --- /dev/null +++ b/keyboards/kopibeng/mnk88/readme.md @@ -0,0 +1,19 @@ +# MNK88 + +![MNK88](https://i.imgur.com/0risyWg.png) + +A QMK-powered, VIA-enabled 88-key (F13) TKL PCB with support for ANSI/ISO layouts, split Backspace, split Right Shift and 6.25U/7U bottom row. + +* Keyboard Maintainer: kopibeng +* Hardware Supported: A TKL keyboard with STM32F072 MCU +* Hardware Availability: https://monokei.co/ + +Make example for this keyboard (after setting up your build environment): + + make kopibeng/mnk88:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Reset + +Press the RESET switch on bottom side of PCB to enter bootloader. diff --git a/keyboards/kopibeng/mnk88/rules.mk b/keyboards/kopibeng/mnk88/rules.mk new file mode 100644 index 000000000000..622cac845f0a --- /dev/null +++ b/keyboards/kopibeng/mnk88/rules.mk @@ -0,0 +1,23 @@ +# 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 = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# 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 +ENCODER_ENABLE = no # Enable Encoder + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE \ No newline at end of file diff --git a/keyboards/kopibeng/xt65/info.json b/keyboards/kopibeng/xt65/info.json index dd374e01fed8..37afadf25f6c 100644 --- a/keyboards/kopibeng/xt65/info.json +++ b/keyboards/kopibeng/xt65/info.json @@ -1,80 +1,238 @@ { - "keyboard_name": "kopibeng XT65", - "url": "", - "maintainer": "kopibeng", - "width": 16, - "height": 5, + "keyboard_name": "kopibeng XT65", + "url": "", + "maintainer": "kopibeng", + "layout_aliases": { + "LAYOUT_65_7u_split_bs": "LAYOUT_65_ansi_blocker_tsangan_split_bs", + "LAYOUT_all": "LAYOUT_65_ansi_blocker_split_bs", + "LAYOUT_65_625u": "LAYOUT_65_ansi_blocker" + }, "layouts": { - "LAYOUT": { + "LAYOUT_65_ansi_blocker": { "layout": [ - {"label":"K00 (B5,D1)", "x":0, "y":0}, - {"label":"K01 (B5,D2)", "x":1, "y":0}, - {"label":"K02 (B5,D3)", "x":2, "y":0}, - {"label":"K03 (B5,B6)", "x":3, "y":0}, - {"label":"K04 (B5,C6)", "x":4, "y":0}, - {"label":"K05 (B5,C7)", "x":5, "y":0}, - {"label":"K06 (B5,F0)", "x":6, "y":0}, - {"label":"K07 (B5,F1)", "x":7, "y":0}, - {"label":"K08 (B5,F4)", "x":8, "y":0}, - {"label":"K09 (B5,F5)", "x":9, "y":0}, - {"label":"K0A (B5,F6)", "x":10, "y":0}, - {"label":"K0B (B5,F7)", "x":11, "y":0}, - {"label":"K0C (B5,B2)", "x":12, "y":0}, - {"label":"K0D (B5,B3)", "x":13, "y":0}, - {"label":"K1D (B4,B3)", "x":14, "y":0}, - {"label":"K0E (B5,B7)", "x":15, "y":0}, - {"label":"K10 (B4,D1)", "x":0, "y":1, "w":1.5}, - {"label":"K11 (B4,D2)", "x":1.5, "y":1}, - {"label":"K12 (B4,D3)", "x":2.5, "y":1}, - {"label":"K13 (B4,B6)", "x":3.5, "y":1}, - {"label":"K14 (B4,C6)", "x":4.5, "y":1}, - {"label":"K15 (B4,C7)", "x":5.5, "y":1}, - {"label":"K16 (B4,F0)", "x":6.5, "y":1}, - {"label":"K17 (B4,F1)", "x":7.5, "y":1}, - {"label":"K18 (B4,F4)", "x":8.5, "y":1}, - {"label":"K19 (B4,F5)", "x":9.5, "y":1}, - {"label":"K1A (B4,F6)", "x":10.5, "y":1}, - {"label":"K1B (B4,F7)", "x":11.5, "y":1}, - {"label":"K1C (B4,B2)", "x":12.5, "y":1}, - {"label":"K2D (D7,B3)", "x":13.5, "y":1, "w":1.5}, - {"label":"K1E (B4,B7)", "x":15, "y":1}, - {"label":"K20 (D7,D1)", "x":0, "y":2, "w":1.25}, - {"label":"K21 (D7,D2)", "x":1.75, "y":2}, - {"label":"K22 (D7,D3)", "x":2.75, "y":2}, - {"label":"K23 (D7,B6)", "x":3.75, "y":2}, - {"label":"K24 (D7,C6)", "x":4.75, "y":2}, - {"label":"K25 (D7,C7)", "x":5.75, "y":2}, - {"label":"K26 (D7,F0)", "x":6.75, "y":2}, - {"label":"K27 (D7,F1)", "x":7.75, "y":2}, - {"label":"K28 (D7,F4)", "x":8.75, "y":2}, - {"label":"K29 (D7,F5)", "x":9.75, "y":2}, - {"label":"K2A (D7,F6)", "x":10.75, "y":2}, - {"label":"K2B (D7,F7)", "x":11.75, "y":2}, - {"label":"K2C (D7,B2)", "x":12.75, "y":2, "w":2.25}, - {"label":"K2E (D7,B7)", "x":15, "y":2}, - {"label":"K30 (D6,D1)", "x":0, "y":3, "w":2.25}, - {"label":"K31 (D6,D2)", "x":2.25, "y":3}, - {"label":"K32 (D6,D3)", "x":3.25, "y":3}, - {"label":"K33 (D6,B6)", "x":4.25, "y":3}, - {"label":"K34 (D6,C6)", "x":5.25, "y":3}, - {"label":"K35 (D6,C7)", "x":6.25, "y":3}, - {"label":"K36 (D6,F0)", "x":7.25, "y":3}, - {"label":"K37 (D6,F1)", "x":8.25, "y":3}, - {"label":"K38 (D6,F4)", "x":9.25, "y":3}, - {"label":"K39 (D6,F5)", "x":10.25, "y":3}, - {"label":"K3A (D6,F6)", "x":11.25, "y":3}, - {"label":"K3B (D6,F7)", "x":12.25, "y":3, "w":1.75}, - {"label":"K3D (D6,B3)", "x":14, "y":3}, - {"label":"K3E (D6,B7)", "x":15, "y":3}, - {"label":"K40 (D4,D1)", "x":0, "y":4, "w":1.5}, - {"label":"K41 (D4,D2)", "x":1.5, "y":4}, - {"label":"K42 (D4,D3)", "x":2.5, "y":4, "w":1.5}, - {"label":"K45 (D4,C7)", "x":4, "y":4, "w":7}, - {"label":"K4A (D4,F6)", "x":11, "y":4, "w":1.5}, - {"label":"K4C (D4,B2)", "x":13, "y":4}, - {"label":"K4D (D4,B3)", "x":14, "y":4}, - {"label":"K4E (D4,B7)", "x":15, "y":4} + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":15, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + {"x":15, "y":1}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":15, "y":2}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + }, + "LAYOUT_65_ansi_blocker_split_bs": { + "layout": [ + {"label":"K00", "x":0, "y":0}, + {"label":"K01", "x":1, "y":0}, + {"label":"K02", "x":2, "y":0}, + {"label":"K03", "x":3, "y":0}, + {"label":"K04", "x":4, "y":0}, + {"label":"K05", "x":5, "y":0}, + {"label":"K06", "x":6, "y":0}, + {"label":"K07", "x":7, "y":0}, + {"label":"K08", "x":8, "y":0}, + {"label":"K09", "x":9, "y":0}, + {"label":"K0A", "x":10, "y":0}, + {"label":"K0B", "x":11, "y":0}, + {"label":"K0C", "x":12, "y":0}, + {"label":"K0D", "x":13, "y":0}, + {"label":"K1D", "x":14, "y":0}, + {"label":"K0E", "x":15, "y":0}, + + {"label":"K10", "x":0, "y":1, "w":1.5}, + {"label":"K11", "x":1.5, "y":1}, + {"label":"K12", "x":2.5, "y":1}, + {"label":"K13", "x":3.5, "y":1}, + {"label":"K14", "x":4.5, "y":1}, + {"label":"K15", "x":5.5, "y":1}, + {"label":"K16", "x":6.5, "y":1}, + {"label":"K17", "x":7.5, "y":1}, + {"label":"K18", "x":8.5, "y":1}, + {"label":"K19", "x":9.5, "y":1}, + {"label":"K1A", "x":10.5, "y":1}, + {"label":"K1B", "x":11.5, "y":1}, + {"label":"K1C", "x":12.5, "y":1}, + {"label":"K2D", "x":13.5, "y":1, "w":1.5}, + {"label":"K1E", "x":15, "y":1}, + + {"label":"K20", "x":0, "y":2, "w":1.75}, + {"label":"K21", "x":1.75, "y":2}, + {"label":"K22", "x":2.75, "y":2}, + {"label":"K23", "x":3.75, "y":2}, + {"label":"K24", "x":4.75, "y":2}, + {"label":"K25", "x":5.75, "y":2}, + {"label":"K26", "x":6.75, "y":2}, + {"label":"K27", "x":7.75, "y":2}, + {"label":"K28", "x":8.75, "y":2}, + {"label":"K29", "x":9.75, "y":2}, + {"label":"K2A", "x":10.75, "y":2}, + {"label":"K2B", "x":11.75, "y":2}, + {"label":"K2C", "x":12.75, "y":2, "w":2.25}, + {"label":"K2E", "x":15, "y":2}, + + {"label":"K30", "x":0, "y":3, "w":2.25}, + {"label":"K31", "x":2.25, "y":3}, + {"label":"K32", "x":3.25, "y":3}, + {"label":"K33", "x":4.25, "y":3}, + {"label":"K34", "x":5.25, "y":3}, + {"label":"K35", "x":6.25, "y":3}, + {"label":"K36", "x":7.25, "y":3}, + {"label":"K37", "x":8.25, "y":3}, + {"label":"K38", "x":9.25, "y":3}, + {"label":"K39", "x":10.25, "y":3}, + {"label":"K3A", "x":11.25, "y":3}, + {"label":"K3B", "x":12.25, "y":3, "w":1.75}, + {"label":"K3D", "x":14, "y":3}, + {"label":"K3E", "x":15, "y":3}, + + {"label":"K40", "x":0, "y":4, "w":1.25}, + {"label":"K41", "x":1.25, "y":4, "w":1.25}, + {"label":"K42", "x":2.5, "y":4, "w":1.25}, + {"label":"K45", "x":3.75, "y":4, "w":6.25}, + {"label":"K49", "x":10, "y":4, "w":1.25}, + {"label":"K4A", "x":11.25, "y":4, "w":1.25}, + {"label":"K4C", "x":13, "y":4}, + {"label":"K4D", "x":14, "y":4}, + {"label":"K4E", "x":15, "y":4} + ] + }, + "LAYOUT_65_ansi_blocker_tsangan_split_bs": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + {"x":15, "y":1}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":15, "y":2}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + + {"x":0, "y":4, "w":1.5}, + {"x":1.5, "y":4}, + {"x":2.5, "y":4, "w":1.5}, + {"x":4, "y":4, "w":7}, + {"x":11, "y":4, "w":1.5}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} ] } } -} \ No newline at end of file +} diff --git a/keyboards/kopibeng/xt65/keymaps/default/keymap.c b/keyboards/kopibeng/xt65/keymaps/default/keymap.c index 5c6d33041115..4fad8d149b8d 100644 --- a/keyboards/kopibeng/xt65/keymaps/default/keymap.c +++ b/keyboards/kopibeng/xt65/keymaps/default/keymap.c @@ -19,7 +19,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Default layer - [0] = LAYOUT_all( + [0] = LAYOUT_65_ansi_blocker_split_bs( 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_BSLS, KC_DEL, 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_HOME, @@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), // Fn1 Layer - [1] = LAYOUT_all( + [1] = LAYOUT_65_ansi_blocker_split_bs( KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -37,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), // Fn2 Layer - [2] = LAYOUT_all( + [2] = LAYOUT_65_ansi_blocker_split_bs( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, diff --git a/keyboards/kopibeng/xt65/keymaps/via/keymap.c b/keyboards/kopibeng/xt65/keymaps/via/keymap.c index 043afa68af6d..a4c95edd4be5 100644 --- a/keyboards/kopibeng/xt65/keymaps/via/keymap.c +++ b/keyboards/kopibeng/xt65/keymaps/via/keymap.c @@ -19,7 +19,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Default layer - [0] = LAYOUT_all( + [0] = LAYOUT_65_ansi_blocker_split_bs( KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_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_HOME, @@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), // Fn1 Layer - [1] = LAYOUT_all( + [1] = LAYOUT_65_ansi_blocker_split_bs( KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -37,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), // Fn2 Layer - [2] = LAYOUT_all( + [2] = LAYOUT_65_ansi_blocker_split_bs( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -46,7 +46,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), // Fn3 Layer - [3] = LAYOUT_all( + [3] = LAYOUT_65_ansi_blocker_split_bs( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, diff --git a/keyboards/kopibeng/xt65/rules.mk b/keyboards/kopibeng/xt65/rules.mk index 1d60cf3c2880..7925b77717c9 100644 --- a/keyboards/kopibeng/xt65/rules.mk +++ b/keyboards/kopibeng/xt65/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/kopibeng/xt65/xt65.h b/keyboards/kopibeng/xt65/xt65.h index d14440e08b6b..a31cd1539417 100644 --- a/keyboards/kopibeng/xt65/xt65.h +++ b/keyboards/kopibeng/xt65/xt65.h @@ -21,8 +21,8 @@ #define ____ KC_NO - -#define LAYOUT_all( \ +// LAYOUT_all: +#define LAYOUT_65_ansi_blocker_split_bs( \ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K113, K014, \ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K213, K114, \ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, \ @@ -36,7 +36,7 @@ {K400, K401, K402, ____, ____, K405, ____, ____, ____, K409, K410, ____, K412, K413, K414} \ } -#define LAYOUT_65_7u_split_bs( \ +#define LAYOUT_65_ansi_blocker_tsangan_split_bs( \ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K113, K014, \ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K213, K114, \ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, \ @@ -50,7 +50,7 @@ {K400, K401, K402, ____, ____, K405, ____, ____, ____, ____, K410, ____, K412, K413, K414} \ } -#define LAYOUT_65_625u( \ +#define LAYOUT_65_ansi_blocker( \ 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, K213, K114, \ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, \ diff --git a/keyboards/kopibeng/xt8x/chconf.h b/keyboards/kopibeng/xt8x/chconf.h new file mode 100644 index 000000000000..5d57f9aece29 --- /dev/null +++ b/keyboards/kopibeng/xt8x/chconf.h @@ -0,0 +1,31 @@ +/* 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/kopibeng/xt8x/chconf.h -r platforms/chibios/common/configs/chconf.h` + */ + +#pragma once + +#define CH_CFG_ST_FREQUENCY 10000 + +#define CH_CFG_OPTIMIZE_SPEED FALSE + +#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE + +#include_next + diff --git a/keyboards/kopibeng/xt8x/config.h b/keyboards/kopibeng/xt8x/config.h new file mode 100644 index 000000000000..d1508dfdd6f4 --- /dev/null +++ b/keyboards/kopibeng/xt8x/config.h @@ -0,0 +1,83 @@ +/* Copyright 2021 Samuel Lu + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4B50 // 'KP' kopibeng +#define PRODUCT_ID 0x8788 +#define DEVICE_VER 0x0001 +#define MANUFACTURER kopibeng +#define PRODUCT XT8x + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 17 + +/* + * 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 { A8, B15, A9, B12, A3, B14 } +#define MATRIX_COL_PINS { A2, A1, A0, B11, B10, B2, F1, B1, B0, A7, A6, A5, F0, A4, C15, C14, C13 } + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +#define LED_CAPS_LOCK_PIN B3 +#define LED_SCROLL_LOCK_PIN A15 +#define INDICATOR_PIN_0 B13 + +#define RGB_DI_PIN A10 +#ifdef RGB_DI_PIN + #define RGBLED_NUM 19 + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 200 /* The maximum brightness level */ + #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +// #define RGBLIGHT_ANIMATIONS +// /*== or choose animations ==*/ + #define RGBLIGHT_EFFECT_BREATHING + #define RGBLIGHT_EFFECT_RAINBOW_MOOD + #define RGBLIGHT_EFFECT_RAINBOW_SWIRL +// #define RGBLIGHT_EFFECT_SNAKE +// #define RGBLIGHT_EFFECT_KNIGHT +// #define RGBLIGHT_EFFECT_CHRISTMAS + #define RGBLIGHT_EFFECT_STATIC_GRADIENT + #define RGBLIGHT_EFFECT_RGB_TEST +// #define RGBLIGHT_EFFECT_ALTERNATING +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* 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/kopibeng/xt8x/info.json b/keyboards/kopibeng/xt8x/info.json new file mode 100644 index 000000000000..d2a59eef8b32 --- /dev/null +++ b/keyboards/kopibeng/xt8x/info.json @@ -0,0 +1,102 @@ +{ + "keyboard_name": "XT8x", + "maintainer": "kopibeng", + "url": "", + "layouts": { + "LAYOUT_all": { + "layout": [ + { "label": "0,0", "x": 0, "y": 0 }, + { "label": "0,1", "x": 1.25, "y": 0 }, + { "label": "0,2", "x": 2.25, "y": 0 }, + { "label": "0,3", "x": 3.25, "y": 0 }, + { "label": "0,4", "x": 4.25, "y": 0 }, + { "label": "0,5", "x": 5.5, "y": 0 }, + { "label": "0,6", "x": 6.5, "y": 0 }, + { "label": "0,7", "x": 7.5, "y": 0 }, + { "label": "0,8", "x": 8.5, "y": 0 }, + { "label": "0,9", "x": 9.75, "y": 0 }, + { "label": "0,10", "x": 10.75, "y": 0 }, + { "label": "0,11", "x": 11.75, "y": 0 }, + { "label": "0,12", "x": 12.75, "y": 0 }, + { "label": "0,13", "x": 14, "y": 0 }, + { "label": "0,14", "x": 15.25, "y": 0 }, + { "label": "0,15", "x": 16.25, "y": 0 }, + { "label": "0,16", "x": 17.25, "y": 0 }, + { "label": "1,0", "x": 0, "y": 1.25 }, + { "label": "1,1", "x": 1, "y": 1.25 }, + { "label": "1,2", "x": 2, "y": 1.25 }, + { "label": "1,3", "x": 3, "y": 1.25 }, + { "label": "1,4", "x": 4, "y": 1.25 }, + { "label": "1,5", "x": 5, "y": 1.25 }, + { "label": "1,6", "x": 6, "y": 1.25 }, + { "label": "1,7", "x": 7, "y": 1.25 }, + { "label": "1,8", "x": 8, "y": 1.25 }, + { "label": "1,9", "x": 9, "y": 1.25 }, + { "label": "1,10", "x": 10, "y": 1.25 }, + { "label": "1,11", "x": 11, "y": 1.25 }, + { "label": "1,12", "x": 12, "y": 1.25 }, + { "label": "2,12", "x": 13, "y": 1.25 }, + { "label": "1,13", "x": 14, "y": 1.25 }, + { "label": "1,14", "x": 15.25, "y": 1.25 }, + { "label": "1,15", "x": 16.25, "y": 1.25 }, + { "label": "1,16", "x": 17.25, "y": 1.25 }, + { "label": "2,0", "w": 1.5, "x": 0, "y": 2.25 }, + { "label": "2,1", "x": 1.5, "y": 2.25 }, + { "label": "2,2", "x": 2.5, "y": 2.25 }, + { "label": "2,3", "x": 3.5, "y": 2.25 }, + { "label": "2,4", "x": 4.5, "y": 2.25 }, + { "label": "2,5", "x": 5.5, "y": 2.25 }, + { "label": "2,6", "x": 6.5, "y": 2.25 }, + { "label": "2,7", "x": 7.5, "y": 2.25 }, + { "label": "2,8", "x": 8.5, "y": 2.25 }, + { "label": "2,9", "x": 9.5, "y": 2.25 }, + { "label": "2,10", "x": 10.5, "y": 2.25 }, + { "label": "2,11", "x": 11.5, "y": 2.25 }, + { "label": "3,12", "x": 12.5, "y": 2.25 }, + { "label": "2,13", "w": 1.5, "x": 13.5, "y": 2.25 }, + { "label": "2,14", "x": 15.25, "y": 2.25 }, + { "label": "2,15", "x": 16.25, "y": 2.25 }, + { "label": "2,16", "x": 17.25, "y": 2.25 }, + { "label": "3,0", "w": 1.75, "x": 0, "y": 3.25 }, + { "label": "3,1", "x": 1.75, "y": 3.25 }, + { "label": "3,2", "x": 2.75, "y": 3.25 }, + { "label": "3,3", "x": 3.75, "y": 3.25 }, + { "label": "3,4", "x": 4.75, "y": 3.25 }, + { "label": "3,5", "x": 5.75, "y": 3.25 }, + { "label": "3,6", "x": 6.75, "y": 3.25 }, + { "label": "3,7", "x": 7.75, "y": 3.25 }, + { "label": "3,8", "x": 8.75, "y": 3.25 }, + { "label": "3,9", "x": 9.75, "y": 3.25 }, + { "label": "3,10", "x": 10.75, "y": 3.25 }, + { "label": "3,11", "x": 11.75, "y": 3.25 }, + { "label": "3,13", "w": 2.25, "x": 12.75, "y": 3.25 }, + { "label": "4,0", "w": 1.25, "x": 0, "y": 4.25 }, + { "label": "4,1", "x": 1.25, "y": 4.25 }, + { "label": "4,2", "x": 2.25, "y": 4.25 }, + { "label": "4,3", "x": 3.25, "y": 4.25 }, + { "label": "4,4", "x": 4.25, "y": 4.25 }, + { "label": "4,5", "x": 5.25, "y": 4.25 }, + { "label": "4,6", "x": 6.25, "y": 4.25 }, + { "label": "4,7", "x": 7.25, "y": 4.25 }, + { "label": "4,8", "x": 8.25, "y": 4.25 }, + { "label": "4,9", "x": 9.25, "y": 4.25 }, + { "label": "4,10", "x": 10.25, "y": 4.25 }, + { "label": "4,11", "x": 11.25, "y": 4.25 }, + { "label": "4,12", "w": 1.75, "x": 12.25, "y": 4.25 }, + { "label": "4,13", "x": 14, "y": 4.25 }, + { "label": "4,15", "x": 16.25, "y": 4.25 }, + { "label": "5,0", "w": 1.25, "x": 0, "y": 5.25 }, + { "label": "5,1", "w": 1.25, "x": 1.25, "y": 5.25 }, + { "label": "5,2", "w": 1.25, "x": 2.5, "y": 5.25 }, + { "label": "5,6", "w": 6.25, "x": 3.75, "y": 5.25 }, + { "label": "5,10", "w": 1.25, "x": 10, "y": 5.25 }, + { "label": "5,11", "w": 1.25, "x": 11.25, "y": 5.25 }, + { "label": "5,12", "w": 1.25, "x": 12.5, "y": 5.25 }, + { "label": "5,13", "w": 1.25, "x": 13.75, "y": 5.25 }, + { "label": "5,14", "x": 15.25, "y": 5.25 }, + { "label": "5,15", "x": 16.25, "y": 5.25 }, + { "label": "4,16", "x": 17.25, "y": 5.25 } + ] + } + } +} \ No newline at end of file diff --git a/keyboards/kopibeng/xt8x/keymaps/default/keymap.c b/keyboards/kopibeng/xt8x/keymaps/default/keymap.c new file mode 100644 index 000000000000..368f0f1127b5 --- /dev/null +++ b/keyboards/kopibeng/xt8x/keymaps/default/keymap.c @@ -0,0 +1,61 @@ +/* Copyright 2021 Samuel Lu + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + // Default layer + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(2), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + // Fn1 Layer + [1] = LAYOUT_all( + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_VOLD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + // Fn2 Layer + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + // Fn3 Layer + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; + diff --git a/keyboards/kopibeng/xt8x/keymaps/via/keymap.c b/keyboards/kopibeng/xt8x/keymaps/via/keymap.c new file mode 100644 index 000000000000..368f0f1127b5 --- /dev/null +++ b/keyboards/kopibeng/xt8x/keymaps/via/keymap.c @@ -0,0 +1,61 @@ +/* Copyright 2021 Samuel Lu + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + // Default layer + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(2), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + // Fn1 Layer + [1] = LAYOUT_all( + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_VOLD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + // Fn2 Layer + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + // Fn3 Layer + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; + diff --git a/keyboards/kopibeng/xt8x/keymaps/via/rules.mk b/keyboards/kopibeng/xt8x/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/kopibeng/xt8x/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/kopibeng/xt8x/readme.md b/keyboards/kopibeng/xt8x/readme.md new file mode 100644 index 000000000000..cdb333a26092 --- /dev/null +++ b/keyboards/kopibeng/xt8x/readme.md @@ -0,0 +1,21 @@ +# XT8x + +![XT8x](https://i.imgur.com/J8QqWWq.png) + +A QMK-powered, VIA-enabled TKL PCB with support for ANSI/ISO layout, F12/F13 top row, split Backspace, split Right Shift and 6.25U/7U bottom row. + +* Keyboard Maintainer: kopibeng +* Hardware Supported: A TKL keyboard with STM32F072 +* Hardware Availability: N/A + +Make example for this keyboard (after setting up your build environment): + + make kopibeng/xt8x:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +* Physical reset button: Press the RESET switch on top side of PCB. +* Bootmagic reset: Unplug keyboard, hold down ESC key and plug in the keyboard. +* Keycode reset: Press the RESET keycode (default: MO(1) + R keys) in layout if available. diff --git a/keyboards/kopibeng/xt8x/rules.mk b/keyboards/kopibeng/xt8x/rules.mk new file mode 100644 index 000000000000..da2a6258cbd7 --- /dev/null +++ b/keyboards/kopibeng/xt8x/rules.mk @@ -0,0 +1,23 @@ +# 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 = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# 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 +ENCODER_ENABLE = no # Enable Encoder + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/kopibeng/xt8x/xt8x.c b/keyboards/kopibeng/xt8x/xt8x.c new file mode 100644 index 000000000000..7f182775909c --- /dev/null +++ b/keyboards/kopibeng/xt8x/xt8x.c @@ -0,0 +1,43 @@ +/* Copyright 2021 Samuel Lu + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "xt8x.h" + +void matrix_init_kb(void) { + // Initialize indicator LEDs to output + + setPinOutput(LED_CAPS_LOCK_PIN); // Caps + setPinOutput(LED_SCROLL_LOCK_PIN); // Scroll lock + setPinOutput(INDICATOR_PIN_0); // Layer indicator on F13 + + matrix_init_user(); +} + +bool led_update_kb(led_t led_state) { + + bool res = led_update_user(led_state); + + if(res) { + writePin(LED_CAPS_LOCK_PIN, led_state.caps_lock); + writePin(LED_SCROLL_LOCK_PIN, led_state.scroll_lock); + } + return res; +} + +__attribute__((weak)) layer_state_t layer_state_set_user(layer_state_t state) { + writePin(INDICATOR_PIN_0, layer_state_cmp(state, 1)); + return state; +} diff --git a/keyboards/kopibeng/xt8x/xt8x.h b/keyboards/kopibeng/xt8x/xt8x.h new file mode 100644 index 000000000000..4fabf95df12d --- /dev/null +++ b/keyboards/kopibeng/xt8x/xt8x.h @@ -0,0 +1,39 @@ +/* Copyright 2021 Samuel Lu + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ____ KC_NO + + + +#define LAYOUT_all( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K212, K113, K114, K115, K116, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K312, K213, K214, K215, K216, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, \ + K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K415, \ + K500, K501, K502, K506, K510, K511, K512, K513, K514, K515, K416 \ +) { \ + {K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016}, \ + {K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116}, \ + {K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216}, \ + {K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, ____, ____, ____}, \ + {K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, ____, K415, K416}, \ + {K500, K501, K502, ____, ____, ____, K506, ____, ____, ____, K510, K511, K512, K513, K514, K515, ____} \ +} diff --git a/keyboards/kprepublic/bm16a/bm16a.c b/keyboards/kprepublic/bm16a/bm16a.c new file mode 100644 index 000000000000..9676b5011995 --- /dev/null +++ b/keyboards/kprepublic/bm16a/bm16a.c @@ -0,0 +1,16 @@ +/* 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 . + */ +#include "bm16a.h" diff --git a/keyboards/bm16a/bm16a.h b/keyboards/kprepublic/bm16a/bm16a.h similarity index 100% rename from keyboards/bm16a/bm16a.h rename to keyboards/kprepublic/bm16a/bm16a.h diff --git a/keyboards/kprepublic/bm16a/config.h b/keyboards/kprepublic/bm16a/config.h new file mode 100644 index 000000000000..c38f74458e37 --- /dev/null +++ b/keyboards/kprepublic/bm16a/config.h @@ -0,0 +1,141 @@ +/* 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 . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4B50 // "KP" +#define PRODUCT_ID 0x016A +#define DEVICE_VER 0x0001 +#define MANUFACTURER KPrepublic +#define PRODUCT bm16a + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 4 + +/* + * 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 { D3, D5, D1, D2} +#define MATRIX_COL_PINS { D6, D4, D7, B4} +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +//#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +#define BACKLIGHT_PIN B6 +// #define BACKLIGHT_BREATHING +#define BACKLIGHT_LEVELS 5 + +#define RGB_DI_PIN E2 +#define RGBLED_NUM 4 +#define RGBLIGHT_ANIMATIONS +// #ifdef RGB_DI_PIN +// #define RGBLED_NUM 16 +// #define RGBLIGHT_HUE_STEP 8 +// #define RGBLIGHT_SAT_STEP 8 +// #define RGBLIGHT_VAL_STEP 8 +// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +// /*== all animations enable ==*/ +// #define RGBLIGHT_ANIMATIONS +// /*== or choose animations ==*/ +// #define RGBLIGHT_EFFECT_BREATHING +// #define RGBLIGHT_EFFECT_RAINBOW_MOOD +// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL +// #define RGBLIGHT_EFFECT_SNAKE +// #define RGBLIGHT_EFFECT_KNIGHT +// #define RGBLIGHT_EFFECT_CHRISTMAS +// #define RGBLIGHT_EFFECT_STATIC_GRADIENT +// #define RGBLIGHT_EFFECT_RGB_TEST +// #define RGBLIGHT_EFFECT_ALTERNATING +// #endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is userful for the Windows task manager shortcut (ctrl+shift+esc). + */ +// #define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* Bootmagic Lite key configuration */ +// #define BOOTMAGIC_LITE_ROW 0 +// #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/kprepublic/bm16a/info.json b/keyboards/kprepublic/bm16a/info.json new file mode 100644 index 000000000000..520e50824908 --- /dev/null +++ b/keyboards/kprepublic/bm16a/info.json @@ -0,0 +1,27 @@ +{ + "keyboard_name": "bm16a", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_ortho_4x4": { + "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} + ] + } + } + } diff --git a/keyboards/bm16a/keymaps/default/config.h b/keyboards/kprepublic/bm16a/keymaps/default/config.h similarity index 100% rename from keyboards/bm16a/keymaps/default/config.h rename to keyboards/kprepublic/bm16a/keymaps/default/config.h diff --git a/keyboards/bm16a/keymaps/default/keymap.c b/keyboards/kprepublic/bm16a/keymaps/default/keymap.c similarity index 100% rename from keyboards/bm16a/keymaps/default/keymap.c rename to keyboards/kprepublic/bm16a/keymaps/default/keymap.c diff --git a/keyboards/bm16a/keymaps/default/readme.md b/keyboards/kprepublic/bm16a/keymaps/default/readme.md similarity index 100% rename from keyboards/bm16a/keymaps/default/readme.md rename to keyboards/kprepublic/bm16a/keymaps/default/readme.md diff --git a/keyboards/bm16a/keymaps/factory/keymap.c b/keyboards/kprepublic/bm16a/keymaps/factory/keymap.c similarity index 100% rename from keyboards/bm16a/keymaps/factory/keymap.c rename to keyboards/kprepublic/bm16a/keymaps/factory/keymap.c diff --git a/keyboards/bm16a/keymaps/factory/readme.md b/keyboards/kprepublic/bm16a/keymaps/factory/readme.md similarity index 100% rename from keyboards/bm16a/keymaps/factory/readme.md rename to keyboards/kprepublic/bm16a/keymaps/factory/readme.md diff --git a/keyboards/bm16a/keymaps/via/keymap.c b/keyboards/kprepublic/bm16a/keymaps/via/keymap.c similarity index 100% rename from keyboards/bm16a/keymaps/via/keymap.c rename to keyboards/kprepublic/bm16a/keymaps/via/keymap.c diff --git a/keyboards/bm16a/keymaps/via/readme.md b/keyboards/kprepublic/bm16a/keymaps/via/readme.md similarity index 100% rename from keyboards/bm16a/keymaps/via/readme.md rename to keyboards/kprepublic/bm16a/keymaps/via/readme.md diff --git a/keyboards/kprepublic/bm16a/keymaps/via/rules.mk b/keyboards/kprepublic/bm16a/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/kprepublic/bm16a/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/kprepublic/bm16a/readme.md b/keyboards/kprepublic/bm16a/readme.md new file mode 100644 index 000000000000..b1c111b74bc3 --- /dev/null +++ b/keyboards/kprepublic/bm16a/readme.md @@ -0,0 +1,15 @@ +# bm16a + +![bm16a](https://ae01.alicdn.com/kf/HTB1RRRQaZfrK1RjSszcq6xGGFXaY.jpg) + +A 16 key macropad, with USB C, RGB underglow and backlight. + +* Keyboard Maintainer: QMK Community +* Hardware Supported: The PCBs, controllers supported +* Hardware Availability: [KPrepublic](https://kprepublic.com/products/bm16a-16-keys-custom-mechanical-keyboard-pcb-plate-programmed-numpad-layouts-qmk-firmware-with-rgb-bottom-underglow-alps-mx); [AliExpress](https://www.aliexpress.com/store/product/bm16a-16-keys-Custom-Mechanical-Keyboard-PCB-plate-programmed-numpad-layouts-qmk-firmware-with-rgb-bottom/3034003_32970629907.html) + +Make example for this keyboard (after setting up your build environment): + + make kprepublic/bm16a: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/kprepublic/bm16a/rules.mk b/keyboards/kprepublic/bm16a/rules.mk new file mode 100644 index 000000000000..4e9fe03b190a --- /dev/null +++ b/keyboards/kprepublic/bm16a/rules.mk @@ -0,0 +1,21 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +LAYOUTS = ortho_4x4 diff --git a/keyboards/bm16s/bm16s.h b/keyboards/kprepublic/bm16s/bm16s.h similarity index 100% rename from keyboards/bm16s/bm16s.h rename to keyboards/kprepublic/bm16s/bm16s.h diff --git a/keyboards/bm16s/config.h b/keyboards/kprepublic/bm16s/config.h similarity index 100% rename from keyboards/bm16s/config.h rename to keyboards/kprepublic/bm16s/config.h diff --git a/keyboards/kprepublic/bm16s/info.json b/keyboards/kprepublic/bm16s/info.json new file mode 100644 index 000000000000..938666a504a1 --- /dev/null +++ b/keyboards/kprepublic/bm16s/info.json @@ -0,0 +1,27 @@ +{ + "keyboard_name": "bm16s", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_ortho_4x4": { + "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} + ] + } + } + } diff --git a/keyboards/bm16s/keymaps/default/keymap.c b/keyboards/kprepublic/bm16s/keymaps/default/keymap.c similarity index 100% rename from keyboards/bm16s/keymaps/default/keymap.c rename to keyboards/kprepublic/bm16s/keymaps/default/keymap.c diff --git a/keyboards/bm16s/keymaps/media/keymap.c b/keyboards/kprepublic/bm16s/keymaps/media/keymap.c similarity index 100% rename from keyboards/bm16s/keymaps/media/keymap.c rename to keyboards/kprepublic/bm16s/keymaps/media/keymap.c diff --git a/keyboards/bm16s/keymaps/via/keymap.c b/keyboards/kprepublic/bm16s/keymaps/via/keymap.c similarity index 100% rename from keyboards/bm16s/keymaps/via/keymap.c rename to keyboards/kprepublic/bm16s/keymaps/via/keymap.c diff --git a/keyboards/bm16s/keymaps/via/readme.md b/keyboards/kprepublic/bm16s/keymaps/via/readme.md similarity index 100% rename from keyboards/bm16s/keymaps/via/readme.md rename to keyboards/kprepublic/bm16s/keymaps/via/readme.md diff --git a/keyboards/kprepublic/bm16s/keymaps/via/rules.mk b/keyboards/kprepublic/bm16s/keymaps/via/rules.mk new file mode 100644 index 000000000000..43061db1dd46 --- /dev/null +++ b/keyboards/kprepublic/bm16s/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/kprepublic/bm16s/readme.md b/keyboards/kprepublic/bm16s/readme.md new file mode 100644 index 000000000000..6a887e553ae1 --- /dev/null +++ b/keyboards/kprepublic/bm16s/readme.md @@ -0,0 +1,13 @@ +# bm16s + +A 16-key macropad, with USB C and per-key RGB backlighting. This is a variant of the BM16A, but with low profile Choc switches. + +* Keyboard Maintainer: QMK Community +* Hardware Supported: The PCBs, controllers supported +* Hardware Availability: [KPrepublic](https://kprepublic.com/collections/pcb/products/bm16s-16-keys-custom-mechanical-keyboard-pcb-plate-programmed-numpad-layouts-qmk-firmware-with-rgb-switch-leds-choc-switch); [AliExpress](https://www.aliexpress.com/item/bm16s-16-keys-Custom-Mechanical-Keyboard-PCB-plate-programmed-numpad-layouts-qmk-firmware-with-rgb-switch/32999247908.html); [Massdrop](https://www.massdrop.com/buy/78169) + +Make example for this keyboard (after setting up your build environment): + + make kprepublic/bm16s: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/kprepublic/bm16s/rules.mk b/keyboards/kprepublic/bm16s/rules.mk new file mode 100755 index 000000000000..d3cdc8140974 --- /dev/null +++ b/keyboards/kprepublic/bm16s/rules.mk @@ -0,0 +1,20 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# comment out to disable the options. +# +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 # 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 + +LAYOUTS = ortho_4x4 diff --git a/keyboards/bm40hsrgb/bm40hsrgb.c b/keyboards/kprepublic/bm40hsrgb/bm40hsrgb.c similarity index 100% rename from keyboards/bm40hsrgb/bm40hsrgb.c rename to keyboards/kprepublic/bm40hsrgb/bm40hsrgb.c diff --git a/keyboards/bm40hsrgb/bm40hsrgb.h b/keyboards/kprepublic/bm40hsrgb/bm40hsrgb.h similarity index 100% rename from keyboards/bm40hsrgb/bm40hsrgb.h rename to keyboards/kprepublic/bm40hsrgb/bm40hsrgb.h diff --git a/keyboards/kprepublic/bm40hsrgb/config.h b/keyboards/kprepublic/bm40hsrgb/config.h new file mode 100755 index 000000000000..8790de8a7b60 --- /dev/null +++ b/keyboards/kprepublic/bm40hsrgb/config.h @@ -0,0 +1,105 @@ +/* Copyright 2020 tominabox1 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4B50 // "KP" +#define PRODUCT_ID 0x3430 // "40" +#define DEVICE_VER 0x0001 +#define MANUFACTURER KPRepublic +#define PRODUCT BM40 Hotswap RGB + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { B3, B2, E6, B5 } +#define MATRIX_COL_PINS { B6, C6, B4, D7, D4, D6, C7, F6, F5, F4, F1, F0 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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 RGB_DI_PIN E2 +#define DRIVER_LED_TOTAL 53 +#ifdef RGB_DI_PIN +# define RGB_MATRIX_KEYPRESSES // reacts to keypresses +# define RGBLIGHT_LIMIT_VAL 180 // Limit to vendor-recommended value +#endif +#ifdef RGB_MATRIX_ENABLE +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended +# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180 // Limit to vendor-recommended value +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH +#endif diff --git a/keyboards/kprepublic/bm40hsrgb/info.json b/keyboards/kprepublic/bm40hsrgb/info.json new file mode 100644 index 000000000000..ddd99d3e357c --- /dev/null +++ b/keyboards/kprepublic/bm40hsrgb/info.json @@ -0,0 +1,58 @@ +{ + "keyboard_name": "BM40HSRGB", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_planck_mit": { + "layout": [ + {"label":"K00 (B3,B6)", "x":0, "y":0}, + {"label":"K01 (B3,C6)", "x":1, "y":0}, + {"label":"K02 (B3,B4)", "x":2, "y":0}, + {"label":"K03 (B3,D7)", "x":3, "y":0}, + {"label":"K04 (B3,D4)", "x":4, "y":0}, + {"label":"K05 (B3,D6)", "x":5, "y":0}, + {"label":"K06 (B3,C7)", "x":6, "y":0}, + {"label":"K07 (B3,F6)", "x":7, "y":0}, + {"label":"K08 (B3,F5)", "x":8, "y":0}, + {"label":"K09 (B3,F4)", "x":9, "y":0}, + {"label":"K0A (B3,F1)", "x":10, "y":0}, + {"label":"K0B (B3,F0)", "x":11, "y":0}, + {"label":"K10 (B2,B6)", "x":0, "y":1}, + {"label":"K11 (B2,C6)", "x":1, "y":1}, + {"label":"K12 (B2,B4)", "x":2, "y":1}, + {"label":"K13 (B2,D7)", "x":3, "y":1}, + {"label":"K14 (B2,D4)", "x":4, "y":1}, + {"label":"K15 (B2,D6)", "x":5, "y":1}, + {"label":"K16 (B2,C7)", "x":6, "y":1}, + {"label":"K17 (B2,F6)", "x":7, "y":1}, + {"label":"K18 (B2,F5)", "x":8, "y":1}, + {"label":"K19 (B2,F4)", "x":9, "y":1}, + {"label":"K1A (B2,F1)", "x":10, "y":1}, + {"label":"K1B (B2,F0)", "x":11, "y":1}, + {"label":"K20 (E6,B6)", "x":0, "y":2}, + {"label":"K21 (E6,C6)", "x":1, "y":2}, + {"label":"K22 (E6,B4)", "x":2, "y":2}, + {"label":"K23 (E6,D7)", "x":3, "y":2}, + {"label":"K24 (E6,D4)", "x":4, "y":2}, + {"label":"K25 (E6,D6)", "x":5, "y":2}, + {"label":"K26 (E6,C7)", "x":6, "y":2}, + {"label":"K27 (E6,F6)", "x":7, "y":2}, + {"label":"K28 (E6,F5)", "x":8, "y":2}, + {"label":"K29 (E6,F4)", "x":9, "y":2}, + {"label":"K2A (E6,F1)", "x":10, "y":2}, + {"label":"K2B (E6,F0)", "x":11, "y":2}, + {"label":"K30 (B5,B6)", "x":0, "y":3}, + {"label":"K31 (B5,C6)", "x":1, "y":3}, + {"label":"K32 (B5,B4)", "x":2, "y":3}, + {"label":"K33 (B5,D7)", "x":3, "y":3}, + {"label":"K34 (B5,D4)", "x":4, "y":3}, + {"label":"K35 (B5,D6)", "x":5, "y":3, "w":2}, + {"label":"K37 (B5,F6)", "x":7, "y":3}, + {"label":"K38 (B5,F5)", "x":8, "y":3}, + {"label":"K39 (B5,F4)", "x":9, "y":3}, + {"label":"K3A (B5,F1)", "x":10, "y":3}, + {"label":"K3B (B5,F0)", "x":11, "y":3} + ] + } + } +} diff --git a/keyboards/bm40hsrgb/keymaps/default/keymap.c b/keyboards/kprepublic/bm40hsrgb/keymaps/default/keymap.c similarity index 100% rename from keyboards/bm40hsrgb/keymaps/default/keymap.c rename to keyboards/kprepublic/bm40hsrgb/keymaps/default/keymap.c diff --git a/keyboards/bm40hsrgb/keymaps/default/readme.md b/keyboards/kprepublic/bm40hsrgb/keymaps/default/readme.md similarity index 100% rename from keyboards/bm40hsrgb/keymaps/default/readme.md rename to keyboards/kprepublic/bm40hsrgb/keymaps/default/readme.md diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/gabustoledo/config.h b/keyboards/kprepublic/bm40hsrgb/keymaps/gabustoledo/config.h new file mode 100644 index 000000000000..b38e4b8fc671 --- /dev/null +++ b/keyboards/kprepublic/bm40hsrgb/keymaps/gabustoledo/config.h @@ -0,0 +1,91 @@ +#pragma once +/* Copyright 2021 Gabriel Bustamante Toledo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . +*/ + +// default but used in macros +#undef TAPPING_TERM +#define TAPPING_TERM 200 + +// Prevent normal rollover on alphas from accidentally triggering mods. +#define IGNORE_MOD_TAP_INTERRUPT + +// Enable rapid switch from tap to hold, disables double tap hold auto-repeat. +#define TAPPING_FORCE_HOLD + +// Auto Shift +#define NO_AUTO_SHIFT_ALPHA +#define AUTO_SHIFT_TIMEOUT TAPPING_TERM +#define AUTO_SHIFT_NO_SETUP + +// Recommended for heavy chording. +#define QMK_KEYS_PER_SCAN 4 + +// Mouse key speed and acceleration. +#undef MOUSEKEY_DELAY +#define MOUSEKEY_DELAY 0 +#undef MOUSEKEY_INTERVAL +#define MOUSEKEY_INTERVAL 16 +#undef MOUSEKEY_WHEEL_DELAY +#define MOUSEKEY_WHEEL_DELAY 0 +#undef MOUSEKEY_MAX_SPEED +#define MOUSEKEY_MAX_SPEED 6 +#undef MOUSEKEY_TIME_TO_MAX +#define MOUSEKEY_TIME_TO_MAX 64 + +#define RGBLIGHT_LAYERS +#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF +#define RGBLIGHT_EFFECT_BREATHING +#define RGBLIGHT_EFFECT_RAINBOW_MOOD +#define RGBLIGHT_EFFECT_RAINBOW_SWIRL +#define RGBLIGHT_EFFECT_SNAKE +#define RGBLIGHT_EFFECT_KNIGHT +#define RGBLIGHT_EFFECT_CHRISTMAS +#define RGBLIGHT_EFFECT_STATIC_GRADIENT +#define RGBLIGHT_EFFECT_RGB_TEST +#define RGBLIGHT_EFFECT_ALTERNATING +#define RGBLIGHT_EFFECT_TWINKLE + +#define RGBLIGHT_LIMIT_VAL 10 + +//bootmagic +#define BOOTMAGIC_KEY_SALT KC_V +#define BOOTMAGIC_KEY_EEPROM_CLEAR KC_Q + +#ifdef RGB_MATRIX_ENABLE + +# undef ENABLE_RGB_MATRIX_ALPHAS_MODS +# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# undef ENABLE_RGB_MATRIX_BREATHING +# undef ENABLE_RGB_MATRIX_BAND_SAT +# undef ENABLE_RGB_MATRIX_BAND_VAL +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# undef ENABLE_RGB_MATRIX_CYCLE_ALL +# undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS + +# undef RGB_MATRIX_STARTUP_MODE + +# define RGBLIGHT_HUE_STEP 20 + +#endif diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/gabustoledo/keymap.c b/keyboards/kprepublic/bm40hsrgb/keymaps/gabustoledo/keymap.c new file mode 100755 index 000000000000..1ebea1817573 --- /dev/null +++ b/keyboards/kprepublic/bm40hsrgb/keymaps/gabustoledo/keymap.c @@ -0,0 +1,125 @@ +/* Copyright 2021 Gabriel Bustamante Toledo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +enum layers { BASE1, BASE2, MEDIA, NAV, MOUSE, SYM, NUM, FUN }; + +enum { + TD_MEDIA, TD_SCREEN, +}; + +qk_tap_dance_action_t tap_dance_actions[] = { + [TD_MEDIA] = ACTION_TAP_DANCE_DOUBLE( KC_MPLY , KC_MNXT ), + [TD_SCREEN] = ACTION_TAP_DANCE_DOUBLE( (G(S(KC_S))) , S(C(KC_4)) ), +}; + +void set_color(int r, int g, int b){ + rgb_matrix_set_color(5, r, g, b); + rgb_matrix_set_color(6, r, g, b); + rgb_matrix_set_color(17, r, g, b); + rgb_matrix_set_color(18, r, g, b); + rgb_matrix_set_color(29, r, g, b); + rgb_matrix_set_color(30, r, g, b); + rgb_matrix_set_color(41, r, g, b); +} + +void rgb_matrix_indicators_user(void) { + + switch (get_highest_layer(layer_state)) { + case BASE2: + set_color(128, 64, 0); + break; + case MEDIA: + set_color(50, 10, 20); + break; + case NAV: + set_color(0, 40, 50); + break; + case MOUSE: + set_color(0, 0, 50); + break; + case SYM: + set_color(0, 50, 1.9); + break; + case NUM: + set_color(10, 0, 50); + break; + case FUN: + set_color(50, 0, 0); + break; + } +} + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [BASE1] = LAYOUT_planck_mit( + KC_Q, KC_W, KC_E, KC_R, KC_T, TG(BASE2), KC_NO, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_NO, KC_NO, KC_H, KC_J, KC_K, KC_L, KC_QUOT, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_NO, KC_NO, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, + TD(TD_SCREEN), TD(TD_MEDIA), LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), KC_NO, LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), C(G(KC_LEFT)), C(G(KC_RIGHT)) + ), + + [BASE2] = LAYOUT_planck_mit( + KC_Q, KC_W, KC_E, KC_R, KC_T, TG(BASE2), KC_NO, KC_Y, KC_U, KC_I, KC_O, KC_P, + LGUI_T(KC_A), LALT_T(KC_S), LCTL_T(KC_D), LSFT_T(KC_F), KC_G, KC_NO, KC_NO, KC_H, LSFT_T(KC_J), LCTL_T(KC_K), LALT_T(KC_L), LGUI_T(KC_QUOT), + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_NO, KC_NO, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, + TD(TD_SCREEN), TD(TD_MEDIA), LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), KC_NO, LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), KC_NO, KC_NO + ), + + [MEDIA] = LAYOUT_planck_mit( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, + KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, + KC_NO, KC_ALGR, 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_MSTP, KC_MPLY, KC_MUTE, KC_NO, KC_NO + ), + + [NAV] = LAYOUT_planck_mit( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, C(KC_S), C(KC_V), C(KC_C), C(KC_X), C(KC_Z), + KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, KC_NO, KC_NO, KC_NO, KC_CAPS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, + KC_NO, KC_ALGR, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_INS, KC_HOME, KC_PGDN, KC_PGUP, KC_END, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_ENT, KC_BSPC, KC_DEL, KC_NO, KC_NO + ), + + [MOUSE] = LAYOUT_planck_mit( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, C(KC_S), C(KC_V), C(KC_C), C(KC_X), C(KC_Z), + KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, + KC_NO, KC_ALGR, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BTN1, KC_BTN3, KC_BTN2, KC_NO, KC_NO + ), + + [SYM] = LAYOUT_planck_mit( + KC_LCBR, KC_AMPR, KC_ASTR, KC_LPRN, KC_RCBR, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BSPC, + KC_COLN, KC_DLR, KC_PERC, KC_CIRC, KC_PLUS, KC_NO, KC_NO, KC_NO, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_PIPE, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_ALGR, KC_NO, + KC_NO, KC_NO, KC_LPRN, KC_RPRN, KC_UNDS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ), + + [NUM] = LAYOUT_planck_mit( + KC_LBRC, KC_7, KC_8, KC_9, KC_RBRC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BSPC, + KC_SCLN, KC_4, KC_5, KC_6, KC_EQL, KC_NO, KC_NO, KC_NO, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, + KC_GRV, KC_1, KC_2, KC_3, KC_BSLS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_ALGR, KC_NO, + KC_NO, KC_NO, KC_DOT, KC_0, KC_MINS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ), + + [FUN] = LAYOUT_planck_mit( + KC_F12, KC_F7, KC_F8, KC_F9, KC_PSCR, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RESET, + KC_F11, KC_F4, KC_F5, KC_F6, KC_SLCK, KC_NO, KC_NO, KC_NO, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, + KC_F10, KC_F1, KC_F2, KC_F3, KC_PAUS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_ALGR, KC_NO, + KC_NO, KC_NO, KC_APP, KC_SPC, KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ) + +}; + diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/gabustoledo/readme.md b/keyboards/kprepublic/bm40hsrgb/keymaps/gabustoledo/readme.md new file mode 100644 index 000000000000..7540bc56bf96 --- /dev/null +++ b/keyboards/kprepublic/bm40hsrgb/keymaps/gabustoledo/readme.md @@ -0,0 +1,47 @@ +# Gabustoledo + +### Compile + +- Compile: + + `qmk compile -kb kprepublic/bm40hsrgb -km gabustoledo` + +### Flash + +- Flash: + + `qmk flash -kb kprepublic/bm40hsrgb -km gabustoledo` + +# Layout + +## BASE + +![img](https://i.imgur.com/2H9WkM8.png) + +## Base 2 + +![img](https://i.imgur.com/16Y7cN2.png) + +## MEDIA + +![img](https://i.imgur.com/CQH2Zo8.png) + +## NAVIGATION + +![img](https://i.imgur.com/lcdBhfG.png) + +## MOUSE + +![img](https://i.imgur.com/kAaxSkb.png) + +## SYMBOL + +![img](https://i.imgur.com/i3rZYdq.png) + +## NUMBER + +![img](https://i.imgur.com/ijb2Dd8.png) + +## FUNCTION + +![img](https://i.imgur.com/QMoLXsP.png) \ No newline at end of file diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/gabustoledo/rules.mk b/keyboards/kprepublic/bm40hsrgb/keymaps/gabustoledo/rules.mk new file mode 100644 index 000000000000..6e27e2f5237a --- /dev/null +++ b/keyboards/kprepublic/bm40hsrgb/keymaps/gabustoledo/rules.mk @@ -0,0 +1,5 @@ +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +AUTO_SHIFT_ENABLE = yes # Auto Shift +TAP_DANCE_ENABLE = yes +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite \ No newline at end of file diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/signynt/config.h b/keyboards/kprepublic/bm40hsrgb/keymaps/signynt/config.h new file mode 100644 index 000000000000..2b0d0961c42e --- /dev/null +++ b/keyboards/kprepublic/bm40hsrgb/keymaps/signynt/config.h @@ -0,0 +1,80 @@ +// qmk flash -kb bm40hsrgb -km signynt + +/* Copyright 2021 Vincenzo Mitchell Barroso + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define RGBLIGHT_LAYERS +#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF +#define RGBLIGHT_ANIMATIONS + +//#define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS +#define RGBLIGHT_LIMIT_VAL 10 + +//bootmagic +#define BOOTMAGIC_KEY_SALT KC_V +#define BOOTMAGIC_KEY_EEPROM_CLEAR KC_Q + +#ifdef RGB_MATRIX_ENABLE + +#define TAPPING_TERM 200 + +//-------------------------------------------------------------------------------------------------------- + +//disable broken animations +# undef ENABLE_RGB_MATRIX_ALPHAS_MODS +# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# undef ENABLE_RGB_MATRIX_BREATHING +# undef ENABLE_RGB_MATRIX_BAND_SAT +# undef ENABLE_RGB_MATRIX_BAND_VAL +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# undef ENABLE_RGB_MATRIX_CYCLE_ALL +# undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +//#undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +//#undef ENABLE_RGB_MATRIX_DUAL_BEACON +# undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL +//#undef ENABLE_RGB_MATRIX_RAINBOW_BEACON +//#undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +//#undef ENABLE_RGB_MATRIX_RAINDROPS +# undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // DO NOT ENABLE +//#undef ENABLE_RGB_MATRIX_TYPING_HEATMAP +//#undef ENABLE_RGB_MATRIX_DIGITAL_RAIN +//#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE +//#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +//#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +//#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +//#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +//#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +//#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +//#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +//#undef ENABLE_RGB_MATRIX_SPLASH +//#undef ENABLE_RGB_MATRIX_MULTISPLASH +//#undef ENABLE_RGB_MATRIX_SOLID_SPLASH +//#undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + +# undef RGB_MATRIX_STARTUP_MODE + +# define RGBLIGHT_HUE_STEP 20 + +#endif diff --git a/keyboards/bm40hsrgb/keymaps/signynt/keymap.c b/keyboards/kprepublic/bm40hsrgb/keymaps/signynt/keymap.c similarity index 100% rename from keyboards/bm40hsrgb/keymaps/signynt/keymap.c rename to keyboards/kprepublic/bm40hsrgb/keymaps/signynt/keymap.c diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/signynt/readme.md b/keyboards/kprepublic/bm40hsrgb/keymaps/signynt/readme.md new file mode 100644 index 000000000000..97c09be2552a --- /dev/null +++ b/keyboards/kprepublic/bm40hsrgb/keymaps/signynt/readme.md @@ -0,0 +1,117 @@ +# Signynt's Keymap: 'Sigma-Squared' + +Sigma Squared is an adaptation & modification of the Layout [Miryoku](https://github.com/manna-harbour/qmk_firmware/blob/miryoku/users/manna-harbour_miryoku/miryoku.org#miryoku-) by *manna-harbour* + +*manna-harbour* lays out the general principles of the layout as follows: + +- Use layers instead of reaching. +- Use both hands instead of contortions. +- Use the home positions as much as possible. +- Make full use of the thumbs. +- Avoid unnecessary complication. + + + +Sigma Squared modifies on **Miryoku** in the following ways: + +- Added the Mods to the outer most columns to be easily accessed while typing with the pinkies +- Extended the **NUMBER** layer to include symbols on the right side to allow calcualtion to be typed more easily without haveing to move between layers +- Added a **GAME** layer to be used for gaming that emulates a more standard keyboard that most games expect + - moves *left shift* and *left ctrl* down + - *esc* moved to top left + - gives access to a **SECOND GAME** layer that contains an Fn row as well as number and arrow keys right under your left fingers +- Added Shortcuts to the bottom row to reduce the amount of keycombos needed to use commonly needed features + - Mission Control, Screenshot, Cycling Apps & Windows +- Added LED indicators to display what layer is currently active (only active while RGB is turned on) + + + +### Flashing + +- to directly flash to board: + + `qmk flash -kb kprepublic/bm40hsrgb -km signynt` + +- to only compile: + + `qmk compile -kb kprepublic/bm40hsrgb -km signynt` + + + +# Layout + +## BASE + +Tap the layer keys to use the black legends, hold them to activate the corresponding layer. + +The Shortcut keys can be modified to suit your needs, or change them in your OS to match the keys. + +If you are using MacOS I recommend swapping your *Ctrl* and *Cmd* keys in system preferences + +The Music Control key can be pressed once to pause and be pressed twice in rapid succession to skip to the next song. + +The Screenshot Key takes a screenshot to the clipboard if pressed once, if double tapped it will take a screenshot to be saved to the desktop. + +![img](https://i.imgur.com/vhb1L2f.png) + +## NAVIGATION + +Provides access to all essential navigation keys, comfortably under your home row. Modifiers remain identical to **BASE** layer to be used for navigating lines and words. + +*Game Layer* key takes you to the **GAME** layer. *(duh)* + +Bottom right keys are used to swap between Virtual Desktops. You might need to modify these to fit your OS. + +![img](https://i.imgur.com/daKxxFz.png) + + + +## MEDIA + +Provides access to all basic media keys, emulating the arrow keys on the home row. + +Also gives access to RGB controls. + +![img](https://i.imgur.com/1jWOvvH.png) + +## NUMBER + +Numbers are arranged in a numpad layout beneath home row, with 0 being positioned under the thumb resting position. Layer includes all most commonly needed symbols to reduce amount of layer switching needed to type longer calculations. + +Top right key changed to *Back Space* so corrections can be made without leaving layer. + +![img](https://i.imgur.com/LGJT3so.png) + +## SYMBOL + +Symbols are positioned over respective numbers from the **NUMBER** layer. + +Mouse keys are positioned similarly under the home row corresponding to the arrow keys. + +Also includes *Back Space* key for corrections. + +![img](https://i.imgur.com/ihOcdPj.png) + +## Fn + +Fn keys are arranged in the same layout as the numbers, with *F10* to *F12* added to the left + +![img](https://i.imgur.com/bPpI8KN.png) + +## GAME + +Somewhat emulates a regular layout needed for gaming. Top right key LED will indicate that you are on the **GAME** layer, and can be pressed to exit it. Holding one of the *Second Game* keys will give you access to **SECOND GAME** + +![img](https://i.imgur.com/r9KIWLX.png) + +## SECOND GAME + +Top right key will turn red to indicate you are in the layer + +![img](https://i.imgur.com/BLKHfVB.png) + + + +# Contact + +If you have any issues or questions you can reach me through Reddit at u/Signynt or on the QMK Discord diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/signynt/rules.mk b/keyboards/kprepublic/bm40hsrgb/keymaps/signynt/rules.mk new file mode 100644 index 000000000000..754f3f1f7080 --- /dev/null +++ b/keyboards/kprepublic/bm40hsrgb/keymaps/signynt/rules.mk @@ -0,0 +1,7 @@ +#rules + +MOUSEKEY_ENABLE = yes # Mouse keys +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +EXTRAKEY_ENABLE = yes # Audio control and System control +TAP_DANCE_ENABLE = yes +#RGB_MATRIX_ENABLE = no diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_loud/config.h b/keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_loud/config.h new file mode 100644 index 000000000000..d39f6b95c80f --- /dev/null +++ b/keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_loud/config.h @@ -0,0 +1,80 @@ +// qmk flash -kb bm40hsrgb -km signynt_2_loud + +/* Copyright 2021 Vincenzo Mitchell Barroso + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define RGBLIGHT_LAYERS +#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF +#define RGBLIGHT_ANIMATIONS + +//#define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS +#define RGBLIGHT_LIMIT_VAL 10 + +//bootmagic +#define BOOTMAGIC_KEY_SALT KC_V +#define BOOTMAGIC_KEY_EEPROM_CLEAR KC_Q + +#ifdef RGB_MATRIX_ENABLE + +#define TAPPING_TERM 200 + +//-------------------------------------------------------------------------------------------------------- + +//disable broken animations +# undef ENABLE_RGB_MATRIX_ALPHAS_MODS +# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# undef ENABLE_RGB_MATRIX_BREATHING +# undef ENABLE_RGB_MATRIX_BAND_SAT +# undef ENABLE_RGB_MATRIX_BAND_VAL +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# undef ENABLE_RGB_MATRIX_CYCLE_ALL +# undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +//#undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +//#undef ENABLE_RGB_MATRIX_DUAL_BEACON +# undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL +//#undef ENABLE_RGB_MATRIX_RAINBOW_BEACON +//#undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +//#undef ENABLE_RGB_MATRIX_RAINDROPS +# undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // DO NOT ENABLE +//#undef ENABLE_RGB_MATRIX_TYPING_HEATMAP +//#undef ENABLE_RGB_MATRIX_DIGITAL_RAIN +//#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE +//#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +//#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +//#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +//#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +//#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +//#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +//#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +//#undef ENABLE_RGB_MATRIX_SPLASH +//#undef ENABLE_RGB_MATRIX_MULTISPLASH +//#undef ENABLE_RGB_MATRIX_SOLID_SPLASH +//#undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + +# undef RGB_MATRIX_STARTUP_MODE + +# define RGBLIGHT_HUE_STEP 20 + +#endif diff --git a/keyboards/bm40hsrgb/keymaps/signynt_2_loud/keymap.c b/keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_loud/keymap.c similarity index 100% rename from keyboards/bm40hsrgb/keymaps/signynt_2_loud/keymap.c rename to keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_loud/keymap.c diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_loud/readme.md b/keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_loud/readme.md new file mode 100644 index 000000000000..97c09be2552a --- /dev/null +++ b/keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_loud/readme.md @@ -0,0 +1,117 @@ +# Signynt's Keymap: 'Sigma-Squared' + +Sigma Squared is an adaptation & modification of the Layout [Miryoku](https://github.com/manna-harbour/qmk_firmware/blob/miryoku/users/manna-harbour_miryoku/miryoku.org#miryoku-) by *manna-harbour* + +*manna-harbour* lays out the general principles of the layout as follows: + +- Use layers instead of reaching. +- Use both hands instead of contortions. +- Use the home positions as much as possible. +- Make full use of the thumbs. +- Avoid unnecessary complication. + + + +Sigma Squared modifies on **Miryoku** in the following ways: + +- Added the Mods to the outer most columns to be easily accessed while typing with the pinkies +- Extended the **NUMBER** layer to include symbols on the right side to allow calcualtion to be typed more easily without haveing to move between layers +- Added a **GAME** layer to be used for gaming that emulates a more standard keyboard that most games expect + - moves *left shift* and *left ctrl* down + - *esc* moved to top left + - gives access to a **SECOND GAME** layer that contains an Fn row as well as number and arrow keys right under your left fingers +- Added Shortcuts to the bottom row to reduce the amount of keycombos needed to use commonly needed features + - Mission Control, Screenshot, Cycling Apps & Windows +- Added LED indicators to display what layer is currently active (only active while RGB is turned on) + + + +### Flashing + +- to directly flash to board: + + `qmk flash -kb kprepublic/bm40hsrgb -km signynt` + +- to only compile: + + `qmk compile -kb kprepublic/bm40hsrgb -km signynt` + + + +# Layout + +## BASE + +Tap the layer keys to use the black legends, hold them to activate the corresponding layer. + +The Shortcut keys can be modified to suit your needs, or change them in your OS to match the keys. + +If you are using MacOS I recommend swapping your *Ctrl* and *Cmd* keys in system preferences + +The Music Control key can be pressed once to pause and be pressed twice in rapid succession to skip to the next song. + +The Screenshot Key takes a screenshot to the clipboard if pressed once, if double tapped it will take a screenshot to be saved to the desktop. + +![img](https://i.imgur.com/vhb1L2f.png) + +## NAVIGATION + +Provides access to all essential navigation keys, comfortably under your home row. Modifiers remain identical to **BASE** layer to be used for navigating lines and words. + +*Game Layer* key takes you to the **GAME** layer. *(duh)* + +Bottom right keys are used to swap between Virtual Desktops. You might need to modify these to fit your OS. + +![img](https://i.imgur.com/daKxxFz.png) + + + +## MEDIA + +Provides access to all basic media keys, emulating the arrow keys on the home row. + +Also gives access to RGB controls. + +![img](https://i.imgur.com/1jWOvvH.png) + +## NUMBER + +Numbers are arranged in a numpad layout beneath home row, with 0 being positioned under the thumb resting position. Layer includes all most commonly needed symbols to reduce amount of layer switching needed to type longer calculations. + +Top right key changed to *Back Space* so corrections can be made without leaving layer. + +![img](https://i.imgur.com/LGJT3so.png) + +## SYMBOL + +Symbols are positioned over respective numbers from the **NUMBER** layer. + +Mouse keys are positioned similarly under the home row corresponding to the arrow keys. + +Also includes *Back Space* key for corrections. + +![img](https://i.imgur.com/ihOcdPj.png) + +## Fn + +Fn keys are arranged in the same layout as the numbers, with *F10* to *F12* added to the left + +![img](https://i.imgur.com/bPpI8KN.png) + +## GAME + +Somewhat emulates a regular layout needed for gaming. Top right key LED will indicate that you are on the **GAME** layer, and can be pressed to exit it. Holding one of the *Second Game* keys will give you access to **SECOND GAME** + +![img](https://i.imgur.com/r9KIWLX.png) + +## SECOND GAME + +Top right key will turn red to indicate you are in the layer + +![img](https://i.imgur.com/BLKHfVB.png) + + + +# Contact + +If you have any issues or questions you can reach me through Reddit at u/Signynt or on the QMK Discord diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_loud/rules.mk b/keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_loud/rules.mk new file mode 100644 index 000000000000..754f3f1f7080 --- /dev/null +++ b/keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_loud/rules.mk @@ -0,0 +1,7 @@ +#rules + +MOUSEKEY_ENABLE = yes # Mouse keys +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +EXTRAKEY_ENABLE = yes # Audio control and System control +TAP_DANCE_ENABLE = yes +#RGB_MATRIX_ENABLE = no diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_quiet/config.h b/keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_quiet/config.h new file mode 100644 index 000000000000..a4634c581ee5 --- /dev/null +++ b/keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_quiet/config.h @@ -0,0 +1,80 @@ +// qmk flash -kb bm40hsrgb -km signynt_2_quiet + +/* Copyright 2021 Vincenzo Mitchell Barroso + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define RGBLIGHT_LAYERS +#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF +#define RGBLIGHT_ANIMATIONS + +//#define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS +#define RGBLIGHT_LIMIT_VAL 10 + +//bootmagic +#define BOOTMAGIC_KEY_SALT KC_V +#define BOOTMAGIC_KEY_EEPROM_CLEAR KC_Q + +#ifdef RGB_MATRIX_ENABLE + +#define TAPPING_TERM 200 + +//-------------------------------------------------------------------------------------------------------- + +//disable broken animations +# undef ENABLE_RGB_MATRIX_ALPHAS_MODS +# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# undef ENABLE_RGB_MATRIX_BREATHING +# undef ENABLE_RGB_MATRIX_BAND_SAT +# undef ENABLE_RGB_MATRIX_BAND_VAL +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# undef ENABLE_RGB_MATRIX_CYCLE_ALL +# undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +//#undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +//#undef ENABLE_RGB_MATRIX_DUAL_BEACON +# undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL +//#undef ENABLE_RGB_MATRIX_RAINBOW_BEACON +//#undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +//#undef ENABLE_RGB_MATRIX_RAINDROPS +# undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // DO NOT ENABLE +//#undef ENABLE_RGB_MATRIX_TYPING_HEATMAP +//#undef ENABLE_RGB_MATRIX_DIGITAL_RAIN +//#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE +//#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +//#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +//#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +//#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +//#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +//#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +//#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +//#undef ENABLE_RGB_MATRIX_SPLASH +//#undef ENABLE_RGB_MATRIX_MULTISPLASH +//#undef ENABLE_RGB_MATRIX_SOLID_SPLASH +//#undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + +# undef RGB_MATRIX_STARTUP_MODE + +# define RGBLIGHT_HUE_STEP 20 + +#endif diff --git a/keyboards/bm40hsrgb/keymaps/signynt_2_quiet/keymap.c b/keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_quiet/keymap.c similarity index 100% rename from keyboards/bm40hsrgb/keymaps/signynt_2_quiet/keymap.c rename to keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_quiet/keymap.c diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_quiet/readme.md b/keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_quiet/readme.md new file mode 100644 index 000000000000..97c09be2552a --- /dev/null +++ b/keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_quiet/readme.md @@ -0,0 +1,117 @@ +# Signynt's Keymap: 'Sigma-Squared' + +Sigma Squared is an adaptation & modification of the Layout [Miryoku](https://github.com/manna-harbour/qmk_firmware/blob/miryoku/users/manna-harbour_miryoku/miryoku.org#miryoku-) by *manna-harbour* + +*manna-harbour* lays out the general principles of the layout as follows: + +- Use layers instead of reaching. +- Use both hands instead of contortions. +- Use the home positions as much as possible. +- Make full use of the thumbs. +- Avoid unnecessary complication. + + + +Sigma Squared modifies on **Miryoku** in the following ways: + +- Added the Mods to the outer most columns to be easily accessed while typing with the pinkies +- Extended the **NUMBER** layer to include symbols on the right side to allow calcualtion to be typed more easily without haveing to move between layers +- Added a **GAME** layer to be used for gaming that emulates a more standard keyboard that most games expect + - moves *left shift* and *left ctrl* down + - *esc* moved to top left + - gives access to a **SECOND GAME** layer that contains an Fn row as well as number and arrow keys right under your left fingers +- Added Shortcuts to the bottom row to reduce the amount of keycombos needed to use commonly needed features + - Mission Control, Screenshot, Cycling Apps & Windows +- Added LED indicators to display what layer is currently active (only active while RGB is turned on) + + + +### Flashing + +- to directly flash to board: + + `qmk flash -kb kprepublic/bm40hsrgb -km signynt` + +- to only compile: + + `qmk compile -kb kprepublic/bm40hsrgb -km signynt` + + + +# Layout + +## BASE + +Tap the layer keys to use the black legends, hold them to activate the corresponding layer. + +The Shortcut keys can be modified to suit your needs, or change them in your OS to match the keys. + +If you are using MacOS I recommend swapping your *Ctrl* and *Cmd* keys in system preferences + +The Music Control key can be pressed once to pause and be pressed twice in rapid succession to skip to the next song. + +The Screenshot Key takes a screenshot to the clipboard if pressed once, if double tapped it will take a screenshot to be saved to the desktop. + +![img](https://i.imgur.com/vhb1L2f.png) + +## NAVIGATION + +Provides access to all essential navigation keys, comfortably under your home row. Modifiers remain identical to **BASE** layer to be used for navigating lines and words. + +*Game Layer* key takes you to the **GAME** layer. *(duh)* + +Bottom right keys are used to swap between Virtual Desktops. You might need to modify these to fit your OS. + +![img](https://i.imgur.com/daKxxFz.png) + + + +## MEDIA + +Provides access to all basic media keys, emulating the arrow keys on the home row. + +Also gives access to RGB controls. + +![img](https://i.imgur.com/1jWOvvH.png) + +## NUMBER + +Numbers are arranged in a numpad layout beneath home row, with 0 being positioned under the thumb resting position. Layer includes all most commonly needed symbols to reduce amount of layer switching needed to type longer calculations. + +Top right key changed to *Back Space* so corrections can be made without leaving layer. + +![img](https://i.imgur.com/LGJT3so.png) + +## SYMBOL + +Symbols are positioned over respective numbers from the **NUMBER** layer. + +Mouse keys are positioned similarly under the home row corresponding to the arrow keys. + +Also includes *Back Space* key for corrections. + +![img](https://i.imgur.com/ihOcdPj.png) + +## Fn + +Fn keys are arranged in the same layout as the numbers, with *F10* to *F12* added to the left + +![img](https://i.imgur.com/bPpI8KN.png) + +## GAME + +Somewhat emulates a regular layout needed for gaming. Top right key LED will indicate that you are on the **GAME** layer, and can be pressed to exit it. Holding one of the *Second Game* keys will give you access to **SECOND GAME** + +![img](https://i.imgur.com/r9KIWLX.png) + +## SECOND GAME + +Top right key will turn red to indicate you are in the layer + +![img](https://i.imgur.com/BLKHfVB.png) + + + +# Contact + +If you have any issues or questions you can reach me through Reddit at u/Signynt or on the QMK Discord diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_quiet/rules.mk b/keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_quiet/rules.mk new file mode 100644 index 000000000000..754f3f1f7080 --- /dev/null +++ b/keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_quiet/rules.mk @@ -0,0 +1,7 @@ +#rules + +MOUSEKEY_ENABLE = yes # Mouse keys +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +EXTRAKEY_ENABLE = yes # Audio control and System control +TAP_DANCE_ENABLE = yes +#RGB_MATRIX_ENABLE = no diff --git a/keyboards/bm40hsrgb/keymaps/via/keymap.c b/keyboards/kprepublic/bm40hsrgb/keymaps/via/keymap.c similarity index 100% rename from keyboards/bm40hsrgb/keymaps/via/keymap.c rename to keyboards/kprepublic/bm40hsrgb/keymaps/via/keymap.c diff --git a/keyboards/bm40hsrgb/keymaps/via/readme.md b/keyboards/kprepublic/bm40hsrgb/keymaps/via/readme.md similarity index 100% rename from keyboards/bm40hsrgb/keymaps/via/readme.md rename to keyboards/kprepublic/bm40hsrgb/keymaps/via/readme.md diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/via/rules.mk b/keyboards/kprepublic/bm40hsrgb/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/kprepublic/bm40hsrgb/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/wolff_abnt2/keymap.c b/keyboards/kprepublic/bm40hsrgb/keymaps/wolff_abnt2/keymap.c new file mode 100644 index 000000000000..daffb61e76df --- /dev/null +++ b/keyboards/kprepublic/bm40hsrgb/keymaps/wolff_abnt2/keymap.c @@ -0,0 +1,164 @@ +/* Copyright 2021 lmlmask + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +#include "keymap_br_abnt2.h" + +enum layers { + _WORKMAN, + _QWERTY, + _DVORAK, + _COLEMAK, + _SYM, + _FUNCTION, + _MIDI, + _NAV, + _NUM, + _ADJUST + +}; + +enum planck_keycodes { + WORKMAN = SAFE_RANGE, + QWERTY, + DVORAK, + COLEMAK, + MIDI +}; + +#define SYM MO(_SYM) +#define FUN LT(_FUNCTION, KC_ENT) +#define MYTAB LT(_NAV, KC_TAB) +#define MYNAV LT(_NAV, KC_DEL) +#define MYNUM LT(_NUM, KC_BSPC) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +//qwerty base layer ok +[_QWERTY] = LAYOUT_planck_mit( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, BR_TILD, + MYTAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, BR_CCED, BR_ACUT, + KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, BR_SLSH, KC_RSPC, + KC_LCTL, KC_LALT, KC_LGUI, SYM, MYNAV, KC_SPC, MYNUM, FUN, KC_RGUI, KC_LALT, RCTL_T(KC_ENT) +), + +//workman base layer ok +[_WORKMAN] = LAYOUT_planck_mit( + KC_ESC, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, BR_CCED, BR_TILD, + MYTAB, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, BR_ACUT, + KC_LSPO, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, KC_DOT, BR_SLSH, KC_RSPC, + KC_LCTL, KC_LALT, KC_LGUI, SYM, MYNAV, KC_SPC, MYNUM, FUN, KC_RGUI, KC_LALT, RCTL_T(KC_ENT) +), + +//dvorak base layer ok +[_DVORAK] = LAYOUT_planck_mit( + KC_ESC, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, BR_SLSH, BR_TILD, + MYTAB, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, BR_ACUT, + KC_LSPO, BR_CCED, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSPC, + KC_LCTL, KC_LALT, KC_LGUI, SYM, MYNAV, KC_SPC, MYNUM, FUN, KC_RGUI, KC_LALT, RCTL_T(KC_ENT) +), + +//colemak base layer ok +[_COLEMAK] = LAYOUT_planck_mit( + KC_ESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, BR_CCED, BR_TILD, + MYTAB, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, BR_ACUT, + KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, BR_SLSH, KC_RSPC, + KC_LCTL, KC_LALT, KC_LGUI, SYM, MYNAV, KC_SPC, MYNUM, FUN, KC_RGUI, KC_LALT, RCTL_T(KC_ENT) +), + +//navigation and utility layer ok +[_NAV] = LAYOUT_planck_mit( + KC_TRNS, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_VOLU, + _______, _______, _______, _______, BR_QUOT, _______, KC_ENT, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_VOLD, + KC_TRNS, KC_UNDO, KC_CUT, KC_COPY, KC_PSTE, _______, _______, KC_BSPC, KC_DEL, _______, _______, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, _______, _______, _______, MYNUM, _______, KC_MPRV, KC_MPLY, KC_MNXT +), + +//symbols layer ok +[_SYM] = LAYOUT_planck_mit( + BR_DQUO, BR_EXLM, BR_AT, BR_HASH, BR_DLR, BR_PERC, BR_DIAE, BR_AMPR, BR_ASTR, BR_LPRN, BR_RPRN, BR_COLN, + BR_QUOT, BR_PIPE, _______, _______, _______, _______, _______, BR_PLUS, BR_UNDS, BR_LBRC, BR_RBRC, BR_SCLN, + KC_TRNS, BR_BSLS, _______, _______, _______, _______, _______, BR_EQL, BR_MINS, BR_LCBR, BR_RCBR, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, _______, _______, _______, _______, _______, KC_TRNS, KC_TRNS, KC_TRNS +), + +//numbers layer ok +[_NUM] = LAYOUT_planck_mit( + KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, BR_MINS, + _______, BR_ASTR, BR_SLSH, BR_MINS, BR_PLUS, _______, _______, KC_4, KC_5, KC_6, BR_COMM, BR_PLUS, + KC_TRNS, BR_PERC, BR_EQL, BR_DOT, BR_COMM, _______, _______, KC_1, KC_2, KC_3, BR_DOT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, _______, MYNAV, _______, _______, KC_0, KC_0, KC_COMM, KC_ENT +), + +//FN layer +[_FUNCTION] = LAYOUT_planck_mit( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, KC_F13, KC_F14, KC_F15, KC_F16, KC_INS, + KC_PSCR, KC_F5, KC_F6, KC_F7, KC_F8, _______, _______, KC_F17, KC_F18, KC_F19, KC_F20, KC_PAUS, + KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_F21, KC_F22, KC_F23, KC_F24, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, _______, _______, _______, _______, _______, KC_TRNS, KC_TRNS, KC_TRNS +), + +// adjust layer ok +[_ADJUST] = LAYOUT_planck_mit( + RESET, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, _______, _______, _______, + KC_CAPS, RGB_RMOD,RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, _______, QWERTY, DVORAK, COLEMAK, WORKMAN, MIDI, + _______, MI_ON, MI_OFF, MI_TOG, MU_ON, MU_OFF, MU_TOG, MU_MOD, AU_ON, AU_OFF, _______, _______, + RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), + +// midi layer +[_MIDI] = LAYOUT_planck_mit( + MI_Cs, MI_Ds, _______, MI_Fs, MI_Gs, MI_As, _______, MI_Cs, MI_Ds, _______, MI_Fs, MI_Gs, + MI_C, MI_D, MI_E, MI_F, MI_G, MI_A, MI_B, MI_C, MI_D, MI_E, MI_F, MI_G, + MI_BENDU,MI_OCTU, MI_TRNSU,MI_VELU, _______, _______, _______, _______, _______, MI_ON, MI_CHU, MI_TOG, + MI_BENDD,MI_OCTD, MI_TRNSD,MI_VELD, MYNAV, MI_SUS, MYNUM, _______, MI_OFF, MI_CHD, MI_ALLOFF +) +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + set_single_persistent_default_layer(_QWERTY); + } + return false; + case WORKMAN: + if (record->event.pressed) { + set_single_persistent_default_layer(_WORKMAN); + } + return false; + case DVORAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_DVORAK); + } + return false; + case COLEMAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_COLEMAK); + } + return false; + case MIDI: + if (record->event.pressed) { + set_single_persistent_default_layer(_MIDI); + } + return false; + } + return true; +} + +layer_state_t layer_state_set_user(layer_state_t state) { + return update_tri_layer_state(state, _NAV, _NUM, _ADJUST); +} diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/wolff_abnt2/readme.md b/keyboards/kprepublic/bm40hsrgb/keymaps/wolff_abnt2/readme.md new file mode 100644 index 000000000000..b647e1e41870 --- /dev/null +++ b/keyboards/kprepublic/bm40hsrgb/keymaps/wolff_abnt2/readme.md @@ -0,0 +1,35 @@ +# Brazilian keymap for the BM40RGB keyboard + +![qwerty](https://user-images.githubusercontent.com/62627597/133505514-466192cf-c58f-4b6f-9b7c-53ec36078401.png) + +This keymap deviates somewhat from the generally used conventions of Planck style keyboards. +It's built on the following principles: + +1. Availability of different base layers. QWERTY, Dvorak, Colemak and Workman are available. They can be chosen with the four right hand home row keys on the ADJUST layer (NAV + NUM keys). The base layout you choose gets stored on the keyboard EEPROM, so it will still be set if you unplug or reset the keyboard. I use Workman, so it's the default, but you can change to QWERTY easily with NAV + NUM + J (the J in QWERTY). +2. Frequent use of navigation keys such as the arrow keys, home, end, and hotkeys using those keycodes. For that reason, it keeps the navigation keys on a dedicated nav layer, on the home row, under the right hand. The nav layer gets the highly accessible layer toggle button usually used for the LOWER layer on most Planck style keymaps. I find this much better than using dedicated arrow keys on the bottom right of the keyboard, as the very reason I swapped to a 40% is to move my hands less. +3. Accessibility of the ´ ` ^ ~ ç symbols. There are several blank spaces left on the symbols layer, if you need access to other symbols or diacritics. +4. Proper touch typing, and hotkey access, with the Ctrl, Shift, Win/Super and Alt modifiers on both sides. I found my hands very much expect Ctrl to be on the edge of the keyboard, and as such I've kept both bottom corner keys as Ctrl. Using those keys as layer modifiers, albeit common in many keymaps, is something I found to be somewhat awkward, as it makes it basically impossible to use the hand used to press them. +5. Numbers and navigation keys should be slightly more accessible than symbols and function keys. If you use symbols more often, consider swapping the NUM and SYM layer toggle keys. +6. It's easier to remember layers when they make sense conceptually. Hence, there are dedicated layers for navigation/utility (NAV), numbers (NUM), symbols (SYM) and function keys (FN). There's a dedicated MIDI layer. Don't forget to add #define MIDI_ADVANCED to your config.h if you plan on using it. +7. Tap hold is a good tool and you should use it if you can. Backspace and Delete are set as tap functions on the two more accessible layer toggle keys. + +It will only work as intended if your system keyboard layout is set to Brazilian ABNT2. It may work with other international layouts, but some keys, including brackets and the ´ ` ~ ^ keys, will get broken. + +# Layers and functions + +In each key: +Top left: Symbols; +Top right: Functions; +Bottom left: Navigation; +Bottom right: Numbers; +Bottom: secondary function (tap/hold) + +# BASE (Qwerty, Dvorak, Colemak, Workman) +![qwerty](https://user-images.githubusercontent.com/62627597/133505788-e8410162-8491-4f52-bc94-62dacb752171.png) + +# Adjust (NAV+NUM) +![adjust](https://user-images.githubusercontent.com/62627597/133182475-1994e733-71a2-42ee-88fe-9a15e711b938.png) + +# MIDI +![midi](https://user-images.githubusercontent.com/62627597/133505599-8ae3ea32-5f8f-451f-b191-f74c514d22c0.png) + diff --git a/keyboards/kprepublic/bm40hsrgb/readme.md b/keyboards/kprepublic/bm40hsrgb/readme.md new file mode 100644 index 000000000000..609b3c418494 --- /dev/null +++ b/keyboards/kprepublic/bm40hsrgb/readme.md @@ -0,0 +1,21 @@ +# bm40hsrgb + +![BM40 RGB](https://rgoulter.com/images/keyboards/bm40rgb/bm40rgb_large.jpg) + +An ortholinear 40% hotswap keyboard with per-key RGB in-switch LEDs and RGB Backlighting, from KP Republic. + +This firmware was originally taken from a kbfirmware.json and manually converted. You may find the original `.json` files [here](https://drive.google.com/drive/folders/1tlTHQIFcluK2mjZ4UbbKCsdRLgSRSPw6). + +* Keyboard Maintainer: [rgoulter](https://github.com/rgoulter) +* Hardware Supported: bm40hsrgb PCB +* Hardware Availability: [KPRepublic](https://www.aliexpress.com/item/4001147779116.html) + +Make example for this keyboard (after setting up your build environment): + + make kprepublic/bm40hsrgb:default + +Flashing example for this keyboard: + + make kprepublic/bm40hsrgb:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/kprepublic/bm40hsrgb/rules.mk b/keyboards/kprepublic/bm40hsrgb/rules.mk new file mode 100755 index 000000000000..893cdc853b52 --- /dev/null +++ b/keyboards/kprepublic/bm40hsrgb/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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = WS2812 + +LAYOUTS = planck_mit +LAYOUTS_HAS_RGB = yes diff --git a/keyboards/kprepublic/bm43a/bm43a.c b/keyboards/kprepublic/bm43a/bm43a.c new file mode 100644 index 000000000000..47e42864e02f --- /dev/null +++ b/keyboards/kprepublic/bm43a/bm43a.c @@ -0,0 +1,16 @@ +/* Copyright 2019 mechmerlin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "bm43a.h" diff --git a/keyboards/bm43a/bm43a.h b/keyboards/kprepublic/bm43a/bm43a.h similarity index 100% rename from keyboards/bm43a/bm43a.h rename to keyboards/kprepublic/bm43a/bm43a.h diff --git a/keyboards/kprepublic/bm43a/config.h b/keyboards/kprepublic/bm43a/config.h new file mode 100644 index 000000000000..e08561d91653 --- /dev/null +++ b/keyboards/kprepublic/bm43a/config.h @@ -0,0 +1,75 @@ +/* +Copyright 2019 mechmerlin + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x0000 +#define DEVICE_VER 0x0001 +#define MANUFACTURER KPRepublic +#define PRODUCT BM43A + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + +/* + * 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 { D1, F4, F1, F0 } +#define MATRIX_COL_PINS { B0, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4 } + +#define DIODE_DIRECTION COL2ROW + +#define BACKLIGHT_PIN B7 +// #define BACKLIGHT_BREATHING +#define BACKLIGHT_LEVELS 5 + +#define RGB_DI_PIN E2 +#ifdef RGB_DI_PIN + #define RGBLED_NUM 10 + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 180 // Limit to vendor-recommended value + #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ + #define RGBLIGHT_ANIMATIONS +// /*== or choose animations ==*/ +// #define RGBLIGHT_EFFECT_BREATHING +// #define RGBLIGHT_EFFECT_RAINBOW_MOOD +// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL +// #define RGBLIGHT_EFFECT_SNAKE +// #define RGBLIGHT_EFFECT_KNIGHT +// #define RGBLIGHT_EFFECT_CHRISTMAS +// #define RGBLIGHT_EFFECT_STATIC_GRADIENT +// #define RGBLIGHT_EFFECT_RGB_TEST +// #define RGBLIGHT_EFFECT_ALTERNATING +#endif +#ifdef RGB_MATRIX_ENABLE +# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180 // Limit to vendor-recommended value +#endif diff --git a/keyboards/kprepublic/bm43a/info.json b/keyboards/kprepublic/bm43a/info.json new file mode 100644 index 000000000000..005945d50e3f --- /dev/null +++ b/keyboards/kprepublic/bm43a/info.json @@ -0,0 +1,55 @@ +{ + "keyboard_name": "BM43A", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"K00 (D1,B0)", "x":0, "y":0}, + {"label":"K01 (D1,F5)", "x":1, "y":0}, + {"label":"K02 (D1,F6)", "x":2, "y":0}, + {"label":"K03 (D1,F7)", "x":3, "y":0}, + {"label":"K04 (D1,C7)", "x":4, "y":0}, + {"label":"K05 (D1,C6)", "x":5, "y":0}, + {"label":"K06 (D1,B6)", "x":6, "y":0}, + {"label":"K07 (D1,B5)", "x":7, "y":0}, + {"label":"K08 (D1,B4)", "x":8, "y":0}, + {"label":"K09 (D1,D7)", "x":9, "y":0}, + {"label":"K0A (D1,D6)", "x":10, "y":0}, + {"label":"K0B (D1,D4)", "x":11, "y":0}, + {"label":"K10 (F4,B0)", "x":0, "y":1, "w":1.25}, + {"label":"K11 (F4,F5)", "x":1.25, "y":1}, + {"label":"K12 (F4,F6)", "x":2.25, "y":1}, + {"label":"K13 (F4,F7)", "x":3.25, "y":1}, + {"label":"K14 (F4,C7)", "x":4.25, "y":1}, + {"label":"K15 (F4,C6)", "x":5.25, "y":1}, + {"label":"K16 (F4,B6)", "x":6.25, "y":1}, + {"label":"K17 (F4,B5)", "x":7.25, "y":1}, + {"label":"K18 (F4,B4)", "x":8.25, "y":1}, + {"label":"K19 (F4,D7)", "x":9.25, "y":1}, + {"label":"K1B (F4,D4)", "x":10.25, "y":1, "w":1.75}, + {"label":"K20 (F1,B0)", "x":0, "y":2, "w":2}, + {"label":"K21 (F1,F5)", "x":2, "y":2}, + {"label":"K22 (F1,F6)", "x":3, "y":2}, + {"label":"K23 (F1,F7)", "x":4, "y":2}, + {"label":"K24 (F1,C7)", "x":5, "y":2}, + {"label":"K25 (F1,C6)", "x":6, "y":2}, + {"label":"K26 (F1,B6)", "x":7, "y":2}, + {"label":"K27 (F1,B5)", "x":8, "y":2}, + {"label":"K28 (F1,B4)", "x":9, "y":2}, + {"label":"K29 (F1,D7)", "x":10, "y":2}, + {"label":"K2B (F1,D4)", "x":11, "y":2}, + {"label":"K30 (F0,B0)", "x":0, "y":3}, + {"label":"K31 (F0,F5)", "x":1, "y":3}, + {"label":"K32 (F0,F6)", "x":2, "y":3}, + {"label":"K33 (F0,F7)", "x":3, "y":3, "w":2.75}, + {"label":"K35 (F0,C6)", "x":5.75, "y":3, "w":2.25}, + {"label":"K37 (F0,B5)", "x":8, "y":3}, + {"label":"K38 (F0,B4)", "x":9, "y":3}, + {"label":"K39 (F0,D7)", "x":10, "y":3}, + {"label":"K3B (F0,D4)", "x":11, "y":3} + ] + } + } + ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/" +} diff --git a/keyboards/bm43a/keymaps/default/config.h b/keyboards/kprepublic/bm43a/keymaps/default/config.h similarity index 100% rename from keyboards/bm43a/keymaps/default/config.h rename to keyboards/kprepublic/bm43a/keymaps/default/config.h diff --git a/keyboards/bm43a/keymaps/default/keymap.c b/keyboards/kprepublic/bm43a/keymaps/default/keymap.c similarity index 100% rename from keyboards/bm43a/keymaps/default/keymap.c rename to keyboards/kprepublic/bm43a/keymaps/default/keymap.c diff --git a/keyboards/bm43a/keymaps/default/readme.md b/keyboards/kprepublic/bm43a/keymaps/default/readme.md similarity index 100% rename from keyboards/bm43a/keymaps/default/readme.md rename to keyboards/kprepublic/bm43a/keymaps/default/readme.md diff --git a/keyboards/bm43a/keymaps/stevexyz/keymap.c b/keyboards/kprepublic/bm43a/keymaps/stevexyz/keymap.c similarity index 100% rename from keyboards/bm43a/keymaps/stevexyz/keymap.c rename to keyboards/kprepublic/bm43a/keymaps/stevexyz/keymap.c diff --git a/keyboards/kprepublic/bm43a/keymaps/stevexyz/readme.md b/keyboards/kprepublic/bm43a/keymaps/stevexyz/readme.md new file mode 100644 index 000000000000..1cb87d6ec251 --- /dev/null +++ b/keyboards/kprepublic/bm43a/keymaps/stevexyz/readme.md @@ -0,0 +1,25 @@ +This is a full-featured bm43a layout inspired by the smaller "Super Micro gherkin" and "jj28" sisters. + +In addition to the default key layer, there is a function/numbers/symbols layer easily activated with either one of the two "meta" (red) keys and containing almost all keyset missing. + +On top of this, activated with both meta keys, there a system layer where are placed media keys, mouse emulation, and Numpad in addition to the PrintScreen/ScrLock/Pause keys. + +The below picture show all layers on the actual keys (if someone would be able to print these labels let me know! :)). + +![layout](https://raw.githubusercontent.com/stevexyz/qmk_firmware/master/keyboards/bm43a/keymaps/stevexyz/layout.jpeg) + +Notes: +- The Windows/OS key is overlayed with the Esc one +- To activate permanently the function/number/symbols layer you can use the "layer tap toggle" functionality (now set to the default 5 presses). For the system layer to be activated permanently is enough to hit shift in this layer (so with the two meta keys pressed) +- From the System Layer you can "jump" to an additional Lights layer pressing the control key +- Meta-Esc (or simply Esc from the System and Lights layers) and the keyboard is coming back to default key layer in case they are activated permanently + + +And a view on the actual build: + +![layout](https://raw.githubusercontent.com/stevexyz/qmk_firmware/master/keyboards/bm43a/keymaps/stevexyz/actualbuild.jpeg) + +In order to compile the module from qmk root directory use the command 'make kprepublic/bm43a:stevexyz' + +And in order to upload the new firmware use the command: 'qmk flash -kb kprepublic/bm43a -km stevexyz' (you can initiate programming with keyboard RESET key, that in this keymap has been moved on the backspace button in the "lights" layer) + diff --git a/keyboards/kprepublic/bm43a/keymaps/stevexyz/rules.mk b/keyboards/kprepublic/bm43a/keymaps/stevexyz/rules.mk new file mode 100644 index 000000000000..4b1dd152b5f6 --- /dev/null +++ b/keyboards/kprepublic/bm43a/keymaps/stevexyz/rules.mk @@ -0,0 +1,8 @@ +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +COMMAND_ENABLE = no # Commands for debug and configuration +CONSOLE_ENABLE = no # Console for debug + +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow diff --git a/keyboards/kprepublic/bm43a/readme.md b/keyboards/kprepublic/bm43a/readme.md new file mode 100644 index 000000000000..6be28a7ef3da --- /dev/null +++ b/keyboards/kprepublic/bm43a/readme.md @@ -0,0 +1,15 @@ +# bm43a + +A 40% mechanical keyboard. + +This firmware was originally taken from a kbfirmware.json and converted through [kbf_qmk_converter](https://noroadsleft.github.io/kbf_qmk_converter/). You may find the original `.json` files [here](https://drive.google.com/drive/folders/11DowBYrFN_uCNa9Q9bXwuMn91vmZYBcG). + +* Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin) +* Hardware Supported: bm43a PCB +* Hardware Availability: [KPRepublic](https://kprepublic.com/products/bm43a-bm43-43-keys-40-custom-mechanical-keyboard-pcb-programmed-numpad-layouts-qmk-firmware-with-rgb-bottom-underglow-alps-mx) + +Make example for this keyboard (after setting up your build environment): + + make kprepublic/bm43a: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/kprepublic/bm43a/rules.mk b/keyboards/kprepublic/bm43a/rules.mk new file mode 100644 index 000000000000..00a8fa07a459 --- /dev/null +++ b/keyboards/kprepublic/bm43a/rules.mk @@ -0,0 +1,19 @@ +# 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 = yes # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/kprepublic/bm43hsrgb/bm43hsrgb.c b/keyboards/kprepublic/bm43hsrgb/bm43hsrgb.c new file mode 100755 index 000000000000..8a0e8faab380 --- /dev/null +++ b/keyboards/kprepublic/bm43hsrgb/bm43hsrgb.c @@ -0,0 +1,16 @@ +/* Copyright 2021 bitstarr + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "bm43hsrgb.h" diff --git a/keyboards/kprepublic/bm43hsrgb/bm43hsrgb.h b/keyboards/kprepublic/bm43hsrgb/bm43hsrgb.h new file mode 100755 index 000000000000..09d99b02d550 --- /dev/null +++ b/keyboards/kprepublic/bm43hsrgb/bm43hsrgb.h @@ -0,0 +1,30 @@ +/* Copyright 2021 bitstarr + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#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, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2B, \ + K30, K31, K32, K33, K35, K37, K38, K39, K3B \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, KC_NO, K1B }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, KC_NO, K2B }, \ + { K30, K31, K32, K33, KC_NO, K35, KC_NO, K37, K38, K39, KC_NO, K3B }, \ +} diff --git a/keyboards/kprepublic/bm43hsrgb/config.h b/keyboards/kprepublic/bm43hsrgb/config.h new file mode 100755 index 000000000000..c778f5699552 --- /dev/null +++ b/keyboards/kprepublic/bm43hsrgb/config.h @@ -0,0 +1,66 @@ +/* +Copyright 2021 bitstarr + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4B50 +#define PRODUCT_ID 0x6061 +#define DEVICE_VER 0x0001 +#define MANUFACTURER KPRepublic +#define PRODUCT BM43 Hotswap RGB + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + +/* + * 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 { E6, B6, B4, B5 } +#define MATRIX_COL_PINS { C6, D2, D1, D0, D7, D6, D4, D5, D3, B7, B3, B2 } + +#define DIODE_DIRECTION COL2ROW + +#define RGB_DI_PIN E2 +#ifdef RGB_DI_PIN + #define RGBLED_NUM 53 + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 180 /* The maximum brightness level */ + #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ + + #define RGBLIGHT_EFFECT_BREATHING + #define RGBLIGHT_EFFECT_RAINBOW_MOOD + #define RGBLIGHT_EFFECT_RAINBOW_SWIRL + #define RGBLIGHT_EFFECT_SNAKE + #define RGBLIGHT_EFFECT_KNIGHT + #define RGBLIGHT_EFFECT_CHRISTMAS + #define RGBLIGHT_EFFECT_STATIC_GRADIENT + #define RGBLIGHT_EFFECT_RGB_TEST + #define RGBLIGHT_EFFECT_ALTERNATING +#endif diff --git a/keyboards/kprepublic/bm43hsrgb/info.json b/keyboards/kprepublic/bm43hsrgb/info.json new file mode 100755 index 000000000000..dbee830364fc --- /dev/null +++ b/keyboards/kprepublic/bm43hsrgb/info.json @@ -0,0 +1,55 @@ +{ + "keyboard_name": "BM43HSRGB", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"K00 (E6,C6)", "x":0, "y":0}, + {"label":"K01 (E6,D2)", "x":1, "y":0}, + {"label":"K02 (E6,D1)", "x":2, "y":0}, + {"label":"K03 (E6,D0)", "x":3, "y":0}, + {"label":"K04 (E6,D7)", "x":4, "y":0}, + {"label":"K05 (E6,D6)", "x":5, "y":0}, + {"label":"K06 (E6,D4)", "x":6, "y":0}, + {"label":"K07 (E6,D5)", "x":7, "y":0}, + {"label":"K08 (E6,D3)", "x":8, "y":0}, + {"label":"K09 (E6,B7)", "x":9, "y":0}, + {"label":"K0A (E6,B3)", "x":10, "y":0}, + {"label":"K0B (E6,B2)", "x":11, "y":0}, + {"label":"K10 (B6,C6)", "x":0, "y":1, "w":1.25}, + {"label":"K11 (B6,D2)", "x":1.25, "y":1}, + {"label":"K12 (B6,D1)", "x":2.25, "y":1}, + {"label":"K13 (B6,D0)", "x":3.25, "y":1}, + {"label":"K14 (B6,D7)", "x":4.25, "y":1}, + {"label":"K15 (B6,D6)", "x":5.25, "y":1}, + {"label":"K16 (B6,D4)", "x":6.25, "y":1}, + {"label":"K17 (B6,D5)", "x":7.25, "y":1}, + {"label":"K18 (B6,D3)", "x":8.25, "y":1}, + {"label":"K19 (B6,B7)", "x":9.25, "y":1}, + {"label":"K1B (B6,B2)", "x":10.25, "y":1, "w":1.75}, + {"label":"K20 (B4,C6)", "x":0, "y":2, "w":2}, + {"label":"K21 (B4,D2)", "x":2, "y":2}, + {"label":"K22 (B4,D1)", "x":3, "y":2}, + {"label":"K23 (B4,D0)", "x":4, "y":2}, + {"label":"K24 (B4,D7)", "x":5, "y":2}, + {"label":"K25 (B4,D6)", "x":6, "y":2}, + {"label":"K26 (B4,D4)", "x":7, "y":2}, + {"label":"K27 (B4,D5)", "x":8, "y":2}, + {"label":"K28 (B4,D3)", "x":9, "y":2}, + {"label":"K29 (B4,B7)", "x":10, "y":2}, + {"label":"K2B (B4,B2)", "x":11, "y":2}, + {"label":"K30 (B5,C6)", "x":0, "y":3}, + {"label":"K31 (B5,D2)", "x":1, "y":3}, + {"label":"K32 (B5,D1)", "x":2, "y":3}, + {"label":"K33 (B5,D0)", "x":3, "y":3, "w":2.75}, + {"label":"K35 (B5,D6)", "x":5.75, "y":3, "w":2.25}, + {"label":"K37 (B5,D5)", "x":8, "y":3}, + {"label":"K38 (B5,D3)", "x":9, "y":3}, + {"label":"K39 (B5,B7)", "x":10, "y":3}, + {"label":"K3B (B5,B2)", "x":11, "y":3} + ] + } + } + ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/" +} diff --git a/keyboards/kprepublic/bm43hsrgb/keymaps/bitstarr/config.h b/keyboards/kprepublic/bm43hsrgb/keymaps/bitstarr/config.h new file mode 100755 index 000000000000..22834394932a --- /dev/null +++ b/keyboards/kprepublic/bm43hsrgb/keymaps/bitstarr/config.h @@ -0,0 +1,35 @@ +/* +Copyright 2021 bitstarr + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#define UNICODE_SELECTED_MODES UC_WINC, UC_WIN, UC_LNX, UC_OSX +#define UNICODE_CYCLE_PERSIST false + +#ifdef RGB_DI_PIN +/*== all animations enable ==*/ + #undef RGBLIGHT_ANIMATIONS +// /*== or choose animations ==*/ + // #define RGBLIGHT_EFFECT_BREATHING +// #define RGBLIGHT_EFFECT_RAINBOW_MOOD +// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL +// #define RGBLIGHT_EFFECT_SNAKE +// #define RGBLIGHT_EFFECT_KNIGHT +// #define RGBLIGHT_EFFECT_CHRISTMAS +// #define RGBLIGHT_EFFECT_STATIC_GRADIENT +// #define RGBLIGHT_EFFECT_RGB_TEST +// #define RGBLIGHT_EFFECT_ALTERNATING +#endif \ No newline at end of file diff --git a/keyboards/kprepublic/bm43hsrgb/keymaps/bitstarr/keymap.c b/keyboards/kprepublic/bm43hsrgb/keymaps/bitstarr/keymap.c new file mode 100755 index 000000000000..366c75555864 --- /dev/null +++ b/keyboards/kprepublic/bm43hsrgb/keymaps/bitstarr/keymap.c @@ -0,0 +1,68 @@ +/* Copyright 2021 bitstarr + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +#define WORD_BACK C(KC_LEFT) +#define WORD_FORWARD C(KC_RIGHT) + +enum layers { + _BASE, + _EXT, + _ADV, + _FN, + _UNI, + _UNI2 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, LT(_EXT,KC_SPC), MO(_UNI), MO(_ADV), MO(_FN), KC_RCTL + ), + [_EXT] = LAYOUT( + 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_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS, + KC_TRNS, KC_F11, KC_F12, KC_NO, KC_NO, KC_GRV, KC_SCLN, KC_QUOT, KC_LBRC, KC_RBRC, KC_BSLS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS + ), + [_ADV] = LAYOUT( + KC_GRV, WORD_BACK, KC_UP, WORD_FORWARD, KC_NO, KC_NO, KC_NO, KC_NO, KC_PGUP, KC_NO, KC_PSCR, KC_DEL, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, KC_NO, KC_HOME, KC_PGDN, KC_END, KC_NO, + KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_MUTE, KC_VOLU, KC_NO, KC_NO, KC_NO, KC_INS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS + ), + [_FN] = LAYOUT( + KC_NO, KC_NO, KC_NO, KC_NO, RESET, 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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ), + [_UNI] = LAYOUT( + KC_NO, KC_NO, KC_NO, UC(L'€'), UC(L'§'), UC(L'°'), KC_NO, UC(L'ü'), KC_NO, UC(L'ö'), UC(L'–'), KC_NO, + KC_NO, UC(L'ä'), UC(L'ß'), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + MO(_UNI2), UC(L'„'), UC(L'“'), UC(L'”'), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, UC(L'…'), KC_NO, + KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, UC_MOD + ), + [_UNI2] = LAYOUT( + KC_NO, KC_NO, KC_NO, UC(L'é'), KC_NO, KC_NO, KC_NO, UC(L'Ü'), KC_NO, UC(L'Ö'), UC(L'—'), KC_NO, + KC_NO, UC(L'Ä'), 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_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO + ), +}; + diff --git a/keyboards/kprepublic/bm43hsrgb/keymaps/bitstarr/readme.md b/keyboards/kprepublic/bm43hsrgb/keymaps/bitstarr/readme.md new file mode 100755 index 000000000000..f43610a28d5d --- /dev/null +++ b/keyboards/kprepublic/bm43hsrgb/keymaps/bitstarr/readme.md @@ -0,0 +1,107 @@ +# Personal Layout of [bitstarr](https://github.com/bitstarr) + +I use an US ANSI Layout and set the OS to the US Keyboard. Since I'm german, I need to use some special characters once in a while - that's what the UNI and UNI2 Layers are for. Under Windows we have to rely on [WinCompose](https://github.com/samhocevar/wincompose) to work as intended. + + qmk compile -kb kprepublic/bm43hsrgb -km bitstarr + +## 0 Qwerty +``` +,----------------------------------------------------------------------------. +| ESC | Q | W | E | R | T | Y | U | I | O | P | Bscp | +|----------------------------------------------------------------------------+ +| Tab | A | S | D | F | G | H | J | K | L | Enter | +|----------------------------------------------------------------------------+ +| Shift | Z | X | C | V | B | N | M | , | . | / | +|----------------------------------------------------------------------------+ +| Ctrl | Win | Alt | Space | Space/EXT | UNI | ADV | FN | Ctrl | +`----------------------------------------------------------------------------' +``` + +## 1 EXT Layer +``` +EXT Layer +,----------------------------------------------------------------------------. +| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | O | - | + | +|----------------------------------------------------------------------------+ +| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | Enter | +|----------------------------------------------------------------------------+ +| Shift | F11 | F12 | | | ` | ; | ' | [ | ] | \ | +|----------------------------------------------------------------------------+ +| Ctrl | Win | Alt | Space | | | | | Ctrl | +`----------------------------------------------------------------------------' +``` + +* Numbers +* F-Keys +* Brackets, Punctuation, Special Characters + +## 2 ADV Layer +``` +ADV Layer +,----------------------------------------------------------------------------. +| ` | W→ | ↑ | W← | | | | | ⇞ | | PS | Del | +|----------------------------------------------------------------------------+ +| Tab | ← | ↓ | → | | | | ↖ | ⇟ | ↘︎ | | +|----------------------------------------------------------------------------+ +| Shift | ⏮ | ⏯ | ⏭ | 🔉 | 🔇 | 🔊 | | | | Ins | +|----------------------------------------------------------------------------+ +| Ctrl | Win | Alt | Space | | | | | Ctrl | +`----------------------------------------------------------------------------' +``` + +* Arrows, Word skips +* Print Screen, Page Up, Page Down +* Home, End, Ins, Del +* Media + +## 3 FN Layer +``` +FN Layer +,----------------------------------------------------------------------------. +| | | | | RESET | | | | | | | | +|----------------------------------------------------------------------------+ +| | | | | | | | | | | | +|----------------------------------------------------------------------------+ +| | RGB_T | RGB_M | H+ | H- | S+ | S- | B+ | B- | | | +|----------------------------------------------------------------------------+ +| | | | | | | | | | +`----------------------------------------------------------------------------' +``` + +* RGB, Toggle, Mode, Hue, Saturation, Brightness +* Reset + +## 4 UNI Layer +``` +UNI Layer +,----------------------------------------------------------------------------. +| | | | € | § | ° | | ü | | ö | – | | +|----------------------------------------------------------------------------+ +| | ä | ß | | | | | | | | | +|----------------------------------------------------------------------------+ +| UNI2 | „ | “ | ” | | | | | | … | | +|----------------------------------------------------------------------------+ +| | | | Space | Space | | | | Mode | +`----------------------------------------------------------------------------' +``` + +* Umlauts +* Punctuation +* Special Characters +* Switching [Input Modes](https://beta.docs.qmk.fm/using-qmk/software-features/feature_unicode#2-input-modes-id-input-modes) (UC_WINC, UC_WIN, UC_LNX, UC_OSX) + +## 5 UNI2 Layer +``` +UNI2 Layer +,----------------------------------------------------------------------------. +| | | | é | | | | Ü | | Ü | — | | +|----------------------------------------------------------------------------+ +| | Ä | | | | | | | | | | +|----------------------------------------------------------------------------+ +| UNI2 | | | | | | | | | | | +|----------------------------------------------------------------------------+ +| | | | Space | Space | | | | | +`----------------------------------------------------------------------------' +``` + +* Capital Umlauts \ No newline at end of file diff --git a/keyboards/kprepublic/bm43hsrgb/keymaps/bitstarr/rules.mk b/keyboards/kprepublic/bm43hsrgb/keymaps/bitstarr/rules.mk new file mode 100755 index 000000000000..e7b2d0a65ebc --- /dev/null +++ b/keyboards/kprepublic/bm43hsrgb/keymaps/bitstarr/rules.mk @@ -0,0 +1 @@ +UNICODE_ENABLE = yes \ No newline at end of file diff --git a/keyboards/kprepublic/bm43hsrgb/keymaps/default/keymap.c b/keyboards/kprepublic/bm43hsrgb/keymaps/default/keymap.c new file mode 100755 index 000000000000..a772e54aa4f9 --- /dev/null +++ b/keyboards/kprepublic/bm43hsrgb/keymaps/default/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2021 bitstarr + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_UP, KC_DOT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT( + RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; + diff --git a/keyboards/kprepublic/bm43hsrgb/keymaps/default/readme.md b/keyboards/kprepublic/bm43hsrgb/keymaps/default/readme.md new file mode 100755 index 000000000000..2ecc0b2f49d7 --- /dev/null +++ b/keyboards/kprepublic/bm43hsrgb/keymaps/default/readme.md @@ -0,0 +1,27 @@ +# The default keymap for bm43hsrgb + +## Base Layer +``` +,----------------------------------------------------------------------------. +| ESC | Q | W | E | R | T | Y | U | I | O | P | Bscp | +|----------------------------------------------------------------------------+ +| Tab | A | S | D | F | G | H | J | K | L | Enter | +|----------------------------------------------------------------------------+ +| Shift | Z | X | C | V | B | N | M | , | ↑ | . | +|----------------------------------------------------------------------------+ +| Ctrl | Win | Alt | Space | Space | Fn | ← | ↓ | → | +`----------------------------------------------------------------------------' +``` + +## Fn Layer +``` +,----------------------------------------------------------------------------. +| RESET | | | | | | | | | | | | +|----------------------------------------------------------------------------+ +| | | | | | | | | | | | +|----------------------------------------------------------------------------+ +| | RGB_T | RGB_M | H+ | H- | S+ | S- | B+ | B- | | | +|----------------------------------------------------------------------------+ +| | | | | | | | | | +`----------------------------------------------------------------------------' +``` \ No newline at end of file diff --git a/keyboards/kprepublic/bm43hsrgb/readme.md b/keyboards/kprepublic/bm43hsrgb/readme.md new file mode 100755 index 000000000000..f55616485705 --- /dev/null +++ b/keyboards/kprepublic/bm43hsrgb/readme.md @@ -0,0 +1,18 @@ +# bm43hsrgb + +A 43% (kind of ANSI) mechanical keyboard. + +This firmware was originally taken from a kbfirmware.json and converted through [kbf_qmk_converter](https://noroadsleft.github.io/kbf_qmk_converter/). You may find the original `.json` files [here](https://drive.google.com/drive/folders/11DowBYrFN_uCNa9Q9bXwuMn91vmZYBcG). + + +* Keyboard Maintainer: [bitstarr](https://github.com/bitstarr) +* Hardware Supported: bm43hsrgb PCB +* Hardware Availability: [KPRepublic](https://kprepublic.com/collections/bm43/products/bm43-rgb-43-keys-40-custom-mechanical-keyboard-pcb-programmed-via-qmk-firmware-with-rgb-bottom-underglow-hot-swapping-switch) + +Make example for this keyboard (after setting up your build environment): + + make kprepublic/bm43hsrgb: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). + +See [Default Keymap](keymaps/default/readme.md) for the layout. In the default keymap you can access the bootloader with `right Alt + Esc`. diff --git a/keyboards/kprepublic/bm43hsrgb/rules.mk b/keyboards/kprepublic/bm43hsrgb/rules.mk new file mode 100755 index 000000000000..86e329027e95 --- /dev/null +++ b/keyboards/kprepublic/bm43hsrgb/rules.mk @@ -0,0 +1,21 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +KEY_LOCK_ENABLE = no # Enable KC_LOCK support diff --git a/keyboards/bm60rgb/keymaps/default/keymap.c b/keyboards/kprepublic/bm60hsrgb/keymaps/default/keymap.c similarity index 100% rename from keyboards/bm60rgb/keymaps/default/keymap.c rename to keyboards/kprepublic/bm60hsrgb/keymaps/default/keymap.c diff --git a/keyboards/bm60rgb/keymaps/default/readme.md b/keyboards/kprepublic/bm60hsrgb/keymaps/default/readme.md similarity index 100% rename from keyboards/bm60rgb/keymaps/default/readme.md rename to keyboards/kprepublic/bm60hsrgb/keymaps/default/readme.md diff --git a/keyboards/bm60rgb/keymaps/jbradforddillon/keymap.c b/keyboards/kprepublic/bm60hsrgb/keymaps/jbradforddillon/keymap.c similarity index 100% rename from keyboards/bm60rgb/keymaps/jbradforddillon/keymap.c rename to keyboards/kprepublic/bm60hsrgb/keymaps/jbradforddillon/keymap.c diff --git a/keyboards/bm60rgb/keymaps/jbradforddillon/readme.md b/keyboards/kprepublic/bm60hsrgb/keymaps/jbradforddillon/readme.md similarity index 100% rename from keyboards/bm60rgb/keymaps/jbradforddillon/readme.md rename to keyboards/kprepublic/bm60hsrgb/keymaps/jbradforddillon/readme.md diff --git a/keyboards/bm60rgb/keymaps/via/keymap.c b/keyboards/kprepublic/bm60hsrgb/keymaps/via/keymap.c similarity index 100% rename from keyboards/bm60rgb/keymaps/via/keymap.c rename to keyboards/kprepublic/bm60hsrgb/keymaps/via/keymap.c diff --git a/keyboards/bm60rgb/keymaps/via/readme.md b/keyboards/kprepublic/bm60hsrgb/keymaps/via/readme.md similarity index 100% rename from keyboards/bm60rgb/keymaps/via/readme.md rename to keyboards/kprepublic/bm60hsrgb/keymaps/via/readme.md diff --git a/keyboards/kprepublic/bm60hsrgb/keymaps/via/rules.mk b/keyboards/kprepublic/bm60hsrgb/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/kprepublic/bm60hsrgb/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/kprepublic/bm60hsrgb/readme.md b/keyboards/kprepublic/bm60hsrgb/readme.md new file mode 100644 index 000000000000..bbb6ba45a178 --- /dev/null +++ b/keyboards/kprepublic/bm60hsrgb/readme.md @@ -0,0 +1,13 @@ +# BM60HSRGB + +A 60% hotswap inswitch RGB keyboard from KP Republic. + +* Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin) +* Hardware Supported: BM60HSRGB +* Hardware Availability: [KP Republic](https://kprepublic.com/products/bm60-rgb-60-gh60-hot-swappable-pcb-programmed-qmk-firmware-type-c) + +Make example for this keyboard (after setting up your build environment): + + make kprepublic/bm60hsrgb/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/kprepublic/bm60hsrgb/rev1/config.h b/keyboards/kprepublic/bm60hsrgb/rev1/config.h new file mode 100644 index 000000000000..b8f002dca609 --- /dev/null +++ b/keyboards/kprepublic/bm60hsrgb/rev1/config.h @@ -0,0 +1,107 @@ +/* +Copyright 2020 MechMerlin + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4B50 // "KP" +#define PRODUCT_ID 0xEF8C +#define DEVICE_VER 0x0001 +#define MANUFACTURER KP Republic +#define PRODUCT BM60HSRGB + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/* + * 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) + * + */ + +// 0 1 2 3 4 5 6 7 8 9 A B C D +#define MATRIX_ROW_PINS { B0, B1, B2, B3, E6 } +#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4, B5, B6, C6, C7, F7 } + +#define DIODE_DIRECTION COL2ROW + +#define RGB_DI_PIN E2 +#define DRIVER_LED_TOTAL 69 +#ifdef RGB_DI_PIN +# define RGBLED_NUM 69 +# define RGB_MATRIX_KEYPRESSES +# define RGBLIGHT_LIMIT_VAL 180 // Limit to vendor-recommended value +#endif +#ifdef RGB_MATRIX_ENABLE +# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180 // Limit to vendor-recommended value +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH +#endif diff --git a/keyboards/kprepublic/bm60hsrgb/rev1/info.json b/keyboards/kprepublic/bm60hsrgb/rev1/info.json new file mode 100644 index 000000000000..a5fb20a00884 --- /dev/null +++ b/keyboards/kprepublic/bm60hsrgb/rev1/info.json @@ -0,0 +1,77 @@ +{ + "keyboard_name": "BM60HSRGB", + "url": "", + "maintainer": "qmk", + "layout_aliases": { + "LAYOUT": "LAYOUT_60_ansi_arrow" + }, + "layouts": { + "LAYOUT_60_ansi_arrow": { + "layout": [ + {"label":"K00 (B0,D0)", "x":0, "y":0}, + {"label":"K01 (B0,D1)", "x":1, "y":0}, + {"label":"K02 (B0,D2)", "x":2, "y":0}, + {"label":"K03 (B0,D3)", "x":3, "y":0}, + {"label":"K04 (B0,D5)", "x":4, "y":0}, + {"label":"K05 (B0,D4)", "x":5, "y":0}, + {"label":"K06 (B0,D6)", "x":6, "y":0}, + {"label":"K07 (B0,D7)", "x":7, "y":0}, + {"label":"K08 (B0,B4)", "x":8, "y":0}, + {"label":"K09 (B0,B5)", "x":9, "y":0}, + {"label":"K0A (B0,B6)", "x":10, "y":0}, + {"label":"K0B (B0,C6)", "x":11, "y":0}, + {"label":"K0C (B0,C7)", "x":12, "y":0}, + {"label":"K0D (B0,F7)", "x":13, "y":0, "w":2}, + {"label":"K10 (B1,D0)", "x":0, "y":1, "w":1.5}, + {"label":"K11 (B1,D1)", "x":1.5, "y":1}, + {"label":"K12 (B1,D2)", "x":2.5, "y":1}, + {"label":"K13 (B1,D3)", "x":3.5, "y":1}, + {"label":"K14 (B1,D5)", "x":4.5, "y":1}, + {"label":"K15 (B1,D4)", "x":5.5, "y":1}, + {"label":"K16 (B1,D6)", "x":6.5, "y":1}, + {"label":"K17 (B1,D7)", "x":7.5, "y":1}, + {"label":"K18 (B1,B4)", "x":8.5, "y":1}, + {"label":"K19 (B1,B5)", "x":9.5, "y":1}, + {"label":"K1A (B1,B6)", "x":10.5, "y":1}, + {"label":"K1B (B1,C6)", "x":11.5, "y":1}, + {"label":"K1C (B1,C7)", "x":12.5, "y":1}, + {"label":"K1D (B1,F7)", "x":13.5, "y":1, "w":1.5}, + {"label":"K20 (B2,D0)", "x":0, "y":2, "w":1.75}, + {"label":"K22 (B2,D2)", "x":1.75, "y":2}, + {"label":"K23 (B2,D3)", "x":2.75, "y":2}, + {"label":"K24 (B2,D5)", "x":3.75, "y":2}, + {"label":"K25 (B2,D4)", "x":4.75, "y":2}, + {"label":"K26 (B2,D6)", "x":5.75, "y":2}, + {"label":"K27 (B2,D7)", "x":6.75, "y":2}, + {"label":"K28 (B2,B4)", "x":7.75, "y":2}, + {"label":"K29 (B2,B5)", "x":8.75, "y":2}, + {"label":"K2A (B2,B6)", "x":9.75, "y":2}, + {"label":"K2B (B2,C6)", "x":10.75, "y":2}, + {"label":"K2C (B2,C7)", "x":11.75, "y":2}, + {"label":"K2D (B2,F7)", "x":12.75, "y":2, "w":2.25}, + {"label":"K31 (B3,D1)", "x":0, "y":3, "w":2.25}, + {"label":"K32 (B3,D2)", "x":2.25, "y":3}, + {"label":"K33 (B3,D3)", "x":3.25, "y":3}, + {"label":"K34 (B3,D5)", "x":4.25, "y":3}, + {"label":"K35 (B3,D4)", "x":5.25, "y":3}, + {"label":"K36 (B3,D6)", "x":6.25, "y":3}, + {"label":"K37 (B3,D7)", "x":7.25, "y":3}, + {"label":"K38 (B3,B4)", "x":8.25, "y":3}, + {"label":"K39 (B3,B5)", "x":9.25, "y":3}, + {"label":"K3A (B3,B6)", "x":10.25, "y":3}, + {"label":"K3B (B3,C6)", "x":11.25, "y":3, "w":1.75}, + {"label":"K3C (B3,C7)", "x":13, "y":3}, + {"label":"K3D (B3,F7)", "x":14, "y":3}, + {"label":"K40 (E6,D0)", "x":0, "y":4, "w":1.25}, + {"label":"K41 (E6,D1)", "x":1.25, "y":4, "w":1.25}, + {"label":"K42 (E6,D2)", "x":2.5, "y":4, "w":1.25}, + {"label":"K46 (E6,D6)", "x":3.75, "y":4, "w":6.25}, + {"label":"K49 (E6,B5)", "x":10, "y":4}, + {"label":"K4A (E6,B6)", "x":11, "y":4}, + {"label":"K4B (E6,C6)", "x":12, "y":4}, + {"label":"K4C (E6,C7)", "x":13, "y":4}, + {"label":"K4D (E6,F7)", "x":14, "y":4} + ] + } + } +} diff --git a/keyboards/kprepublic/bm60hsrgb/rev1/rev1.c b/keyboards/kprepublic/bm60hsrgb/rev1/rev1.c new file mode 100644 index 000000000000..352118c1b1ea --- /dev/null +++ b/keyboards/kprepublic/bm60hsrgb/rev1/rev1.c @@ -0,0 +1,50 @@ +/* Copyright 2020 MechMerlin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "rev1.h" + +led_config_t g_led_config = { { + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 }, + { 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27 }, + { 28, NO_LED, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40 }, + { NO_LED, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53 }, + { 54, 55, 56, NO_LED, NO_LED, NO_LED, 57, NO_LED, NO_LED, 58, 59, 60, 61, 62 } +}, { + // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace + { 0, 0 }, { 15, 0 }, { 30, 0 }, { 45, 0 }, { 60, 0 }, { 75, 0 }, { 90, 0 }, { 105, 0 }, { 120, 0 }, { 135, 0 }, { 150, 0 }, { 165, 0 }, { 180, 0 }, { 202, 0 }, + // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], , + { 7, 16 }, { 22, 16 }, { 37, 16 }, { 52, 16 }, { 67, 16 }, { 82, 16 }, { 97, 16 }, { 112, 16 }, { 127, 16 }, { 142, 16 }, { 157, 16 }, { 172, 16 }, { 187, 16 }, { 206, 16 }, + // Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter + { 11, 32 }, { 26, 32 }, { 41, 32 }, { 56, 32 }, { 71, 32 }, { 86, 32 }, { 101, 32 }, { 116, 32 }, { 131, 32 }, { 146, 32 }, { 161, 32 }, { 176, 32 }, { 198, 32 }, + // LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up, + { 18, 48 }, { 30, 48 }, { 45, 48 }, { 60, 48 }, { 75, 48 }, { 90, 48 }, { 105, 48 }, { 120, 48 }, { 135, 48 }, { 150, 48 }, { 165, 48 }, { 191, 48 }, { 210, 48 }, + // Ctrl, GUI, Alt, Space, RAlt, FN, Left, Down, Right + { 3, 64 }, { 22, 64 }, { 33, 64 }, { 101, 64 }, { 135, 64 }, { 153, 64 }, { 195, 64 }, { 210, 64 }, { 225, 64 }, + // UNDERGLOW + { 216, 32 }, { 180, 32 }, { 144, 32 }, { 108, 32 }, { 72, 32 }, { 36, 32 } +}, { + // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], , + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + // Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + // LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, + // Ctrl, GUI, Alt, Space, RAlt, FN, Left, Down, Right + 1, 1, 1, 4, 1, 1, 1, 1, 1, + // UNDERGLOW + 2, 2, 2, 2, 2, 2 +} }; diff --git a/keyboards/kprepublic/bm60hsrgb/rev1/rev1.h b/keyboards/kprepublic/bm60hsrgb/rev1/rev1.h new file mode 100644 index 000000000000..b648660d2589 --- /dev/null +++ b/keyboards/kprepublic/bm60hsrgb/rev1/rev1.h @@ -0,0 +1,32 @@ +/* Copyright 2020 MechMerlin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define LAYOUT_60_ansi_arrow( \ + 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, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \ + K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \ + K40, K41, K42, K46, 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, KC_NO, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \ + { KC_NO, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \ + { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, K49, K4A, K4B, K4C, K4D }, \ +} diff --git a/keyboards/kprepublic/bm60hsrgb/rev1/rules.mk b/keyboards/kprepublic/bm60hsrgb/rev1/rules.mk new file mode 100644 index 000000000000..eaf953548179 --- /dev/null +++ b/keyboards/kprepublic/bm60hsrgb/rev1/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 = 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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = WS2812 +LTO_ENABLE = yes + +LAYOUTS = 60_ansi_arrow diff --git a/keyboards/bm60rgb_iso/keymaps/default/keymap.c b/keyboards/kprepublic/bm60hsrgb_iso/keymaps/default/keymap.c similarity index 100% rename from keyboards/bm60rgb_iso/keymaps/default/keymap.c rename to keyboards/kprepublic/bm60hsrgb_iso/keymaps/default/keymap.c diff --git a/keyboards/bm60rgb_iso/keymaps/default/readme.md b/keyboards/kprepublic/bm60hsrgb_iso/keymaps/default/readme.md similarity index 100% rename from keyboards/bm60rgb_iso/keymaps/default/readme.md rename to keyboards/kprepublic/bm60hsrgb_iso/keymaps/default/readme.md diff --git a/keyboards/bm60rgb_iso/keymaps/iso_nordic_sleepmode/config.h b/keyboards/kprepublic/bm60hsrgb_iso/keymaps/iso_nordic_sleepmode/config.h similarity index 100% rename from keyboards/bm60rgb_iso/keymaps/iso_nordic_sleepmode/config.h rename to keyboards/kprepublic/bm60hsrgb_iso/keymaps/iso_nordic_sleepmode/config.h diff --git a/keyboards/bm60rgb_iso/keymaps/iso_nordic_sleepmode/keymap.c b/keyboards/kprepublic/bm60hsrgb_iso/keymaps/iso_nordic_sleepmode/keymap.c similarity index 100% rename from keyboards/bm60rgb_iso/keymaps/iso_nordic_sleepmode/keymap.c rename to keyboards/kprepublic/bm60hsrgb_iso/keymaps/iso_nordic_sleepmode/keymap.c diff --git a/keyboards/bm60rgb_iso/keymaps/iso_nordic_sleepmode/readme.md b/keyboards/kprepublic/bm60hsrgb_iso/keymaps/iso_nordic_sleepmode/readme.md similarity index 100% rename from keyboards/bm60rgb_iso/keymaps/iso_nordic_sleepmode/readme.md rename to keyboards/kprepublic/bm60hsrgb_iso/keymaps/iso_nordic_sleepmode/readme.md diff --git a/keyboards/kprepublic/bm60hsrgb_iso/readme.md b/keyboards/kprepublic/bm60hsrgb_iso/readme.md new file mode 100644 index 000000000000..5cef32cbeb10 --- /dev/null +++ b/keyboards/kprepublic/bm60hsrgb_iso/readme.md @@ -0,0 +1,19 @@ +# BM60HSRGB_ISO + +![BM60HSRGB_ISO](https://i.imgur.com/i3gk2vql.jpg) + +A 60% ISO hotswap inswitch RGB keyboard. + +* Keyboard Maintainer: [markva](https://github.com/markva) +* Hardware Supported: BM60 RGB ISO +* Hardware Availability: [KP Republic](https://kprepublic.com/products/bm60-rgb-iso-uk-eu-rgb-60-hot-swappable-pcb-qmk-firmware-rgb-underglow-type-c) + +Make example for this keyboard (after setting up your build environment): + + make kprepublic/bm60hsrgb_iso/rev1:default + +Flashing example for this keyboard: + + make kprepublic/bm60hsrgb_iso:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/kprepublic/bm60hsrgb_iso/rev1/config.h b/keyboards/kprepublic/bm60hsrgb_iso/rev1/config.h new file mode 100644 index 000000000000..42b9d2afb11e --- /dev/null +++ b/keyboards/kprepublic/bm60hsrgb_iso/rev1/config.h @@ -0,0 +1,123 @@ +/* +Copyright 2020 markva + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4B50 // "KP" +#define PRODUCT_ID 0xEF8C +#define DEVICE_VER 0x0001 +#define MANUFACTURER KPRepublic +#define PRODUCT BM60HSRGB_ISO + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/* + * 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) + * + */ + +// 0 1 2 3 4 5 6 7 8 9 A B C D +#define MATRIX_ROW_PINS { B0, B1, B2, B3, E6 } +#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4, B5, B6, C6, C7, F7 } + +#define DIODE_DIRECTION COL2ROW + +#define RGB_DI_PIN E2 +#define DRIVER_LED_TOTAL 70 +#ifdef RGB_DI_PIN +# define RGBLED_NUM 70 +# define RGB_MATRIX_KEYPRESSES + // #define RGBLIGHT_HUE_STEP 8 + // #define RGBLIGHT_SAT_STEP 8 + // #define RGBLIGHT_VAL_STEP 8 +# define RGBLIGHT_LIMIT_VAL 180 // Limit to vendor-recommended value + // #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ + /*== all animations enable ==*/ + // #define RGBLIGHT_ANIMATIONS + // /*== or choose animations ==*/ + // #define RGBLIGHT_EFFECT_BREATHING + // #define RGBLIGHT_EFFECT_RAINBOW_MOOD + // #define RGBLIGHT_EFFECT_RAINBOW_SWIRL + // #define RGBLIGHT_EFFECT_SNAKE + // #define RGBLIGHT_EFFECT_KNIGHT + // #define RGBLIGHT_EFFECT_CHRISTMAS + // #define RGBLIGHT_EFFECT_STATIC_GRADIENT + // #define RGBLIGHT_EFFECT_RGB_TEST + // #define RGBLIGHT_EFFECT_ALTERNATING +#endif +#ifdef RGB_MATRIX_ENABLE +# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180 // Limit to vendor-recommended value +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH +#endif diff --git a/keyboards/kprepublic/bm60hsrgb_iso/rev1/info.json b/keyboards/kprepublic/bm60hsrgb_iso/rev1/info.json new file mode 100644 index 000000000000..b53600e44d5b --- /dev/null +++ b/keyboards/kprepublic/bm60hsrgb_iso/rev1/info.json @@ -0,0 +1,75 @@ +{ + "keyboard_name": "BM60HSRGB_ISO", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_60_iso_arrow": { + "layout": [ + {"label":"K00 (B0,D0)", "x":0, "y":0}, + {"label":"K01 (B0,D1)", "x":1, "y":0}, + {"label":"K02 (B0,D2)", "x":2, "y":0}, + {"label":"K03 (B0,D3)", "x":3, "y":0}, + {"label":"K04 (B0,D5)", "x":4, "y":0}, + {"label":"K05 (B0,D4)", "x":5, "y":0}, + {"label":"K06 (B0,D6)", "x":6, "y":0}, + {"label":"K07 (B0,D7)", "x":7, "y":0}, + {"label":"K08 (B0,B4)", "x":8, "y":0}, + {"label":"K09 (B0,B5)", "x":9, "y":0}, + {"label":"K0A (B0,B6)", "x":10, "y":0}, + {"label":"K0B (B0,C6)", "x":11, "y":0}, + {"label":"K0C (B0,C7)", "x":12, "y":0}, + {"label":"K0D (B0,F7)", "x":13, "y":0, "w":2}, + {"label":"K10 (B1,D0)", "x":0, "y":1, "w":1.5}, + {"label":"K11 (B1,D1)", "x":1.5, "y":1}, + {"label":"K12 (B1,D2)", "x":2.5, "y":1}, + {"label":"K13 (B1,D3)", "x":3.5, "y":1}, + {"label":"K14 (B1,D5)", "x":4.5, "y":1}, + {"label":"K15 (B1,D4)", "x":5.5, "y":1}, + {"label":"K16 (B1,D6)", "x":6.5, "y":1}, + {"label":"K17 (B1,D7)", "x":7.5, "y":1}, + {"label":"K18 (B1,B4)", "x":8.5, "y":1}, + {"label":"K19 (B1,B5)", "x":9.5, "y":1}, + {"label":"K1A (B1,B6)", "x":10.5, "y":1}, + {"label":"K1B (B1,C6)", "x":11.5, "y":1}, + {"label":"K1C (B1,C7)", "x":12.5, "y":1}, + {"label":"K20 (B2,D0)", "x":0, "y":2, "w":1.75}, + {"label":"K22 (B2,D2)", "x":1.75, "y":2}, + {"label":"K23 (B2,D3)", "x":2.75, "y":2}, + {"label":"K24 (B2,D5)", "x":3.75, "y":2}, + {"label":"K25 (B2,D4)", "x":4.75, "y":2}, + {"label":"K26 (B2,D6)", "x":5.75, "y":2}, + {"label":"K27 (B2,D7)", "x":6.75, "y":2}, + {"label":"K28 (B2,B4)", "x":7.75, "y":2}, + {"label":"K29 (B2,B5)", "x":8.75, "y":2}, + {"label":"K2A (B2,B6)", "x":9.75, "y":2}, + {"label":"K2B (B2,C6)", "x":10.75, "y":2}, + {"label":"K2C (B2,C7)", "x":11.75, "y":2}, + {"label":"K2D (B2,F7)", "x":12.75, "y":2}, + {"label":"K1D (B1,F7)", "x":13.75, "y":1, "w":1.25, "h":2}, + {"label":"K30 (B3,D0)", "x":0, "y":3, "w":1.25}, + {"label":"K31 (B3,D1)", "x":1.25, "y":3}, + {"label":"K32 (B3,D2)", "x":2.25, "y":3}, + {"label":"K33 (B3,D3)", "x":3.25, "y":3}, + {"label":"K34 (B3,D5)", "x":4.25, "y":3}, + {"label":"K35 (B3,D4)", "x":5.25, "y":3}, + {"label":"K36 (B3,D6)", "x":6.25, "y":3}, + {"label":"K37 (B3,D7)", "x":7.25, "y":3}, + {"label":"K38 (B3,B4)", "x":8.25, "y":3}, + {"label":"K39 (B3,B5)", "x":9.25, "y":3}, + {"label":"K3A (B3,B6)", "x":10.25, "y":3}, + {"label":"K3B (B3,C6)", "x":11.25, "y":3, "w":1.75}, + {"label":"K3C (B3,C7)", "x":13, "y":3}, + {"label":"K3D (B3,F7)", "x":14, "y":3}, + {"label":"K40 (E6,D0)", "x":0, "y":4, "w":1.25}, + {"label":"K41 (E6,D1)", "x":1.25, "y":4, "w":1.25}, + {"label":"K42 (E6,D2)", "x":2.5, "y":4, "w":1.25}, + {"label":"K46 (E6,D6)", "x":3.75, "y":4, "w":6.25}, + {"label":"K49 (E6,B5)", "x":10, "y":4}, + {"label":"K4A (E6,B6)", "x":11, "y":4}, + {"label":"K4B (E6,C6)", "x":12, "y":4}, + {"label":"K4C (E6,C7)", "x":13, "y":4}, + {"label":"K4D (E6,F7)", "x":14, "y":4} + ] + } + } +} diff --git a/keyboards/kprepublic/bm60hsrgb_iso/rev1/rev1.c b/keyboards/kprepublic/bm60hsrgb_iso/rev1/rev1.c new file mode 100644 index 000000000000..f708e74c27c9 --- /dev/null +++ b/keyboards/kprepublic/bm60hsrgb_iso/rev1/rev1.c @@ -0,0 +1,52 @@ +/* Copyright 2020 markva + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "rev1.h" + +#if defined(RGB_MATRIX_ENABLE) +led_config_t g_led_config = { { + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 }, + { 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27 }, + { 28, NO_LED, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40 }, + { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54 }, + { 55, 56, 57, NO_LED, NO_LED, NO_LED, 58, NO_LED, NO_LED, 59, 60, 61, 62, 63} +}, { + // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace + { 0, 0 }, { 15, 0 }, { 30, 0 }, { 45, 0 }, { 60, 0 }, { 75, 0 }, { 90, 0 }, { 105, 0 }, { 120, 0 }, { 135, 0 }, { 150, 0 }, { 165, 0 }, { 180, 0 }, { 202, 0 }, + // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], , + { 7, 16 }, { 22, 16 }, { 37, 16 }, { 52, 16 }, { 67, 16 }, { 82, 16 }, { 97, 16 }, { 112, 16 }, { 127, 16 }, { 142, 16 }, { 157, 16 }, { 172, 16 }, { 187, 16 }, { 206, 16 }, + // Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter + { 11, 32 }, { 26, 32 }, { 41, 32 }, { 56, 32 }, { 71, 32 }, { 86, 32 }, { 101, 32 }, { 116, 32 }, { 131, 32 }, { 146, 32 }, { 161, 32 }, { 176, 32 }, { 198, 32 }, + // LShift, <, Z, X, C, V, B, N, M, ,, ., /, Shift, Up, + { 3, 48 }, { 22, 48 }, { 33, 48 }, { 48, 48 }, { 63, 48 }, { 78, 48 }, { 93, 48 }, { 108, 48 }, { 123, 48 }, { 138, 48 }, { 153, 48 }, { 168, 48 }, { 194, 48 }, { 213, 48 }, + // Ctrl, GUI, Alt, Space, RAlt, FN, Left, Down, Right + { 3, 64 }, { 22, 64 }, { 33, 64 }, { 101, 64 }, { 135, 64 }, { 153, 64 }, { 195, 64 }, { 210, 64 }, { 225, 64 }, + // UNDERGLOW + { 216, 32 }, { 180, 32 }, { 144, 32 }, { 108, 32 }, { 72, 32 }, { 36, 32 } +}, { + // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], , + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + // Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + // LShift,<, Z, X, C, V, B, N, M, ,, ., Shift, Up, / + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, + // Ctrl, GUI, Alt, Space, RAlt, FN, Left, Down, Right + 1, 1, 1, 4, 1, 1, 1, 1, 1, + // UNDERGLOW + 2, 2, 2, 2, 2, 2 +} }; +#endif diff --git a/keyboards/bm60rgb_iso/bm60rgb_iso.h b/keyboards/kprepublic/bm60hsrgb_iso/rev1/rev1.h similarity index 100% rename from keyboards/bm60rgb_iso/bm60rgb_iso.h rename to keyboards/kprepublic/bm60hsrgb_iso/rev1/rev1.h diff --git a/keyboards/kprepublic/bm60hsrgb_iso/rev1/rules.mk b/keyboards/kprepublic/bm60hsrgb_iso/rev1/rules.mk new file mode 100644 index 000000000000..72c2df7dfb65 --- /dev/null +++ b/keyboards/kprepublic/bm60hsrgb_iso/rev1/rules.mk @@ -0,0 +1,22 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = WS2812 +LTO_ENABLE = yes diff --git a/keyboards/kprepublic/bm60hsrgb_poker/keymaps/carlosala/config.h b/keyboards/kprepublic/bm60hsrgb_poker/keymaps/carlosala/config.h new file mode 100644 index 000000000000..b8dea6a76a65 --- /dev/null +++ b/keyboards/kprepublic/bm60hsrgb_poker/keymaps/carlosala/config.h @@ -0,0 +1,6 @@ +// Copiright 2021 Carlo Sala (@carlosala) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define UNICODE_SELECTED_MODES UC_LNX diff --git a/keyboards/kprepublic/bm60hsrgb_poker/keymaps/carlosala/keymap.c b/keyboards/kprepublic/bm60hsrgb_poker/keymaps/carlosala/keymap.c new file mode 100644 index 000000000000..6cd574178645 --- /dev/null +++ b/keyboards/kprepublic/bm60hsrgb_poker/keymaps/carlosala/keymap.c @@ -0,0 +1,25 @@ +// Copiright 2021 Carlo Sala (@carlosala) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_60_ansi( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + LT(2, 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_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RSFT_T(KC_CAPS), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL), + [1] = LAYOUT_60_ansi( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, + KC_TRNS, RGB_MOD, RGB_SPI, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_HOME, KC_END, KC_TRNS, KC_PSCR, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_RMOD, RGB_SPD, RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_TOG, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_BRID, KC_BRIU, KC_TRNS, KC_TRNS, KC_TRNS, LALT(KC_F4), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [2] = LAYOUT_60_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, UC(0x00B7), KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET) +}; diff --git a/keyboards/kprepublic/bm60hsrgb_poker/keymaps/carlosala/rules.mk b/keyboards/kprepublic/bm60hsrgb_poker/keymaps/carlosala/rules.mk new file mode 100644 index 000000000000..fd581f26db42 --- /dev/null +++ b/keyboards/kprepublic/bm60hsrgb_poker/keymaps/carlosala/rules.mk @@ -0,0 +1,2 @@ +MOUSEKEY_ENABLE = no +UNICODE_ENABLE = yes diff --git a/keyboards/kprepublic/bm60hsrgb_poker/keymaps/david/keymap.c b/keyboards/kprepublic/bm60hsrgb_poker/keymaps/david/keymap.c new file mode 100644 index 000000000000..5050b25a909e --- /dev/null +++ b/keyboards/kprepublic/bm60hsrgb_poker/keymaps/david/keymap.c @@ -0,0 +1,58 @@ +/* Copyright 2021 David Martinz + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_60_ansi(KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, + KC_RSFT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL), + [1] = LAYOUT_60_ansi(KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + RESET, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_UP, KC_INS, KC_HOME, KC_END, + KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + +#ifdef RGB_MATRIX_ENABLE +void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { + // caps lock white + if (host_keyboard_led_state().caps_lock) { + RGB_MATRIX_INDICATOR_SET_COLOR(28, 200, 200, 200); + } + + // layer state + switch (get_highest_layer(layer_state)) { + case 0: + // RGB_MATRIX_INDICATOR_SET_COLOR(59, 0, 0, 0); + break; + case 1: + RGB_MATRIX_INDICATOR_SET_COLOR(59, 128, 0, 0); + break; + case 2: + RGB_MATRIX_INDICATOR_SET_COLOR(59, 0, 128, 0); + break; + case 3: + RGB_MATRIX_INDICATOR_SET_COLOR(59, 0, 0, 128); + break; + default: + // white + RGB_MATRIX_INDICATOR_SET_COLOR(59, 128, 128, 128); + break; + } +} +#endif diff --git a/keyboards/bm60poker/keymaps/default/keymap.c b/keyboards/kprepublic/bm60hsrgb_poker/keymaps/default/keymap.c similarity index 100% rename from keyboards/bm60poker/keymaps/default/keymap.c rename to keyboards/kprepublic/bm60hsrgb_poker/keymaps/default/keymap.c diff --git a/keyboards/bm60poker/keymaps/ipetepete/keymap.c b/keyboards/kprepublic/bm60hsrgb_poker/keymaps/ipetepete/keymap.c similarity index 100% rename from keyboards/bm60poker/keymaps/ipetepete/keymap.c rename to keyboards/kprepublic/bm60hsrgb_poker/keymaps/ipetepete/keymap.c diff --git a/keyboards/bm60poker/keymaps/ipetepete/readme.md b/keyboards/kprepublic/bm60hsrgb_poker/keymaps/ipetepete/readme.md similarity index 100% rename from keyboards/bm60poker/keymaps/ipetepete/readme.md rename to keyboards/kprepublic/bm60hsrgb_poker/keymaps/ipetepete/readme.md diff --git a/keyboards/bm60poker/keymaps/ipetepete/rules.mk b/keyboards/kprepublic/bm60hsrgb_poker/keymaps/ipetepete/rules.mk similarity index 100% rename from keyboards/bm60poker/keymaps/ipetepete/rules.mk rename to keyboards/kprepublic/bm60hsrgb_poker/keymaps/ipetepete/rules.mk diff --git a/keyboards/bm60poker/keymaps/via/keymap.c b/keyboards/kprepublic/bm60hsrgb_poker/keymaps/via/keymap.c similarity index 100% rename from keyboards/bm60poker/keymaps/via/keymap.c rename to keyboards/kprepublic/bm60hsrgb_poker/keymaps/via/keymap.c diff --git a/keyboards/kprepublic/bm60hsrgb_poker/keymaps/via/rules.mk b/keyboards/kprepublic/bm60hsrgb_poker/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/kprepublic/bm60hsrgb_poker/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/kprepublic/bm60hsrgb_poker/readme.md b/keyboards/kprepublic/bm60hsrgb_poker/readme.md new file mode 100644 index 000000000000..ef29166df8ea --- /dev/null +++ b/keyboards/kprepublic/bm60hsrgb_poker/readme.md @@ -0,0 +1,13 @@ +# BM60HSRGB_Poker 60% Mechanical Keyboard RGB PCB + +A 60% hotswap inswitch RGB (north facing) keyboard from KP Republic. + +* Keyboard Maintainer: [ipetepete](https://github.com/ipetepete) +* Hardware Supported: BM60HSRGB_Poker +* Hardware Availability: [KP Republic](https://kprepublic.com/products/bm60-rgb-poker-60-gh60-hot-swap-custom-mechanical-keyboard-pcb-program-qmk-underglow-type-c) + +Make example for this keyboard (after setting up your build environment): + + make kprepublic/bm60hsrgb_poker/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/kprepublic/bm60hsrgb_poker/rev1/config.h b/keyboards/kprepublic/bm60hsrgb_poker/rev1/config.h new file mode 100644 index 000000000000..a3aab0e65e08 --- /dev/null +++ b/keyboards/kprepublic/bm60hsrgb_poker/rev1/config.h @@ -0,0 +1,121 @@ +/* +Copyright 2020 ipetepete + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4B50 // "KP" +#define PRODUCT_ID 0xEF8D +#define DEVICE_VER 0x0001 +#define MANUFACTURER KP Republic +#define PRODUCT BM60HSRGB_POKER + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/* + * 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, E6 } +#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4, B5, B6, C6, C7, F7 } + +#define DIODE_DIRECTION COL2ROW + +#define RGB_DI_PIN E2 +#define DRIVER_LED_TOTAL 67 +#ifdef RGB_DI_PIN + #define RGBLED_NUM 67 + #define RGB_MATRIX_KEYPRESSES + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 180 // Limit to vendor-recommended value + #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ + #define RGBLIGHT_ANIMATIONS +// /*== or choose animations ==*/ +// #define RGBLIGHT_EFFECT_BREATHING +// #define RGBLIGHT_EFFECT_RAINBOW_MOOD +// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL +// #define RGBLIGHT_EFFECT_SNAKE +// #define RGBLIGHT_EFFECT_KNIGHT +// #define RGBLIGHT_EFFECT_CHRISTMAS +// #define RGBLIGHT_EFFECT_STATIC_GRADIENT +// #define RGBLIGHT_EFFECT_RGB_TEST +// #define RGBLIGHT_EFFECT_ALTERNATING +#endif +#ifdef RGB_MATRIX_ENABLE +# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180 // Limit to vendor-recommended value +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH +#endif diff --git a/keyboards/kprepublic/bm60hsrgb_poker/rev1/info.json b/keyboards/kprepublic/bm60hsrgb_poker/rev1/info.json new file mode 100644 index 000000000000..09abf6e353c3 --- /dev/null +++ b/keyboards/kprepublic/bm60hsrgb_poker/rev1/info.json @@ -0,0 +1,72 @@ +{ + "keyboard_name": "BM60HSRGB_POKER", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_60_ansi": { + "layout": [ + {"label":"K00 (B0,D0)", "x":0, "y":0}, + {"label":"K01 (B0,D1)", "x":1, "y":0}, + {"label":"K02 (B0,D2)", "x":2, "y":0}, + {"label":"K03 (B0,D3)", "x":3, "y":0}, + {"label":"K04 (B0,D5)", "x":4, "y":0}, + {"label":"K05 (B0,D4)", "x":5, "y":0}, + {"label":"K06 (B0,D6)", "x":6, "y":0}, + {"label":"K07 (B0,D7)", "x":7, "y":0}, + {"label":"K08 (B0,B4)", "x":8, "y":0}, + {"label":"K09 (B0,B5)", "x":9, "y":0}, + {"label":"K0A (B0,B6)", "x":10, "y":0}, + {"label":"K0B (B0,C6)", "x":11, "y":0}, + {"label":"K0C (B0,C7)", "x":12, "y":0}, + {"label":"K0D (B0,F7)", "x":13, "y":0, "w":2}, + {"label":"K10 (B1,D0)", "x":0, "y":1, "w":1.5}, + {"label":"K11 (B1,D1)", "x":1.5, "y":1}, + {"label":"K12 (B1,D2)", "x":2.5, "y":1}, + {"label":"K13 (B1,D3)", "x":3.5, "y":1}, + {"label":"K14 (B1,D5)", "x":4.5, "y":1}, + {"label":"K15 (B1,D4)", "x":5.5, "y":1}, + {"label":"K16 (B1,D6)", "x":6.5, "y":1}, + {"label":"K17 (B1,D7)", "x":7.5, "y":1}, + {"label":"K18 (B1,B4)", "x":8.5, "y":1}, + {"label":"K19 (B1,B5)", "x":9.5, "y":1}, + {"label":"K1A (B1,B6)", "x":10.5, "y":1}, + {"label":"K1B (B1,C6)", "x":11.5, "y":1}, + {"label":"K1C (B1,C7)", "x":12.5, "y":1}, + {"label":"K1D (B1,F7)", "x":13.5, "y":1, "w":1.5}, + {"label":"K20 (B2,D0)", "x":0, "y":2, "w":1.75}, + {"label":"K22 (B2,D2)", "x":1.75, "y":2}, + {"label":"K23 (B2,D3)", "x":2.75, "y":2}, + {"label":"K24 (B2,D5)", "x":3.75, "y":2}, + {"label":"K25 (B2,D4)", "x":4.75, "y":2}, + {"label":"K26 (B2,D6)", "x":5.75, "y":2}, + {"label":"K27 (B2,D7)", "x":6.75, "y":2}, + {"label":"K28 (B2,B4)", "x":7.75, "y":2}, + {"label":"K29 (B2,B5)", "x":8.75, "y":2}, + {"label":"K2A (B2,B6)", "x":9.75, "y":2}, + {"label":"K2B (B2,C6)", "x":10.75, "y":2}, + {"label":"K2C (B2,C7)", "x":11.75, "y":2}, + {"label":"K2D (B2,F7)", "x":12.75, "y":2, "w":2.25}, + {"label":"K31 (B3,D1)", "x":0, "y":3, "w":2.25}, + {"label":"K32 (B3,D2)", "x":2.25, "y":3}, + {"label":"K33 (B3,D3)", "x":3.25, "y":3}, + {"label":"K34 (B3,D5)", "x":4.25, "y":3}, + {"label":"K35 (B3,D4)", "x":5.25, "y":3}, + {"label":"K36 (B3,D6)", "x":6.25, "y":3}, + {"label":"K37 (B3,D7)", "x":7.25, "y":3}, + {"label":"K38 (B3,B4)", "x":8.25, "y":3}, + {"label":"K39 (B3,B5)", "x":9.25, "y":3}, + {"label":"K3A (B3,B6)", "x":10.25, "y":3}, + {"label":"K3B (B3,C6)", "x":11.25, "y":3}, + {"label":"K3D (B3,F7)", "x":12.25, "y":3, "w":2.75}, + {"label":"K40 (E6,D0)", "x":0, "y":4, "w":1.25}, + {"label":"K41 (E6,D1)", "x":1.25, "y":4, "w":1.25}, + {"label":"K42 (E6,D2)", "x":2.5, "y":4, "w":1.25}, + {"label":"K46 (E6,D6)", "x":3.75, "y":4, "w":6.25}, + {"label":"K49 (E6,B5)", "x":10, "y":4, "w":1.25}, + {"label":"K4A (E6,B6)", "x":11.25, "y":4, "w":1.25}, + {"label":"K4C (E6,C7)", "x":12.5, "y":4, "w":1.25}, + {"label":"K4D (E6,F7)", "x":13.75, "y":4, "w":1.25} + ] + } + } +} diff --git a/keyboards/kprepublic/bm60hsrgb_poker/rev1/rev1.c b/keyboards/kprepublic/bm60hsrgb_poker/rev1/rev1.c new file mode 100644 index 000000000000..4029a5466c1f --- /dev/null +++ b/keyboards/kprepublic/bm60hsrgb_poker/rev1/rev1.c @@ -0,0 +1,52 @@ +/* Copyright 2020 ipetepete + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "rev1.h" + +#ifdef RGB_MATRIX_ENABLE +led_config_t g_led_config = { { + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 }, + { 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27 }, + { 28, NO_LED, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40 }, + { NO_LED, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, NO_LED, 52 }, + { 53, 54, 55, NO_LED, NO_LED, NO_LED, 56, NO_LED, NO_LED, 57, 58, NO_LED, 59, 60 } +}, { + // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace + { 0, 0 }, { 15, 0 }, { 30, 0 }, { 45, 0 }, { 60, 0 }, { 75, 0 }, { 90, 0 }, { 105, 0 }, { 120, 0 }, { 135, 0 }, { 150, 0 }, { 165, 0 }, { 180, 0 }, { 202, 0 }, + // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], , + { 7, 16 }, { 22, 16 }, { 37, 16 }, { 52, 16 }, { 67, 16 }, { 82, 16 }, { 97, 16 }, { 112, 16 }, { 127, 16 }, { 142, 16 }, { 157, 16 }, { 172, 16 }, { 187, 16 }, { 206, 16 }, + // Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter + { 11, 32 }, { 26, 32 }, { 41, 32 }, { 56, 32 }, { 71, 32 }, { 86, 32 }, { 101, 32 }, { 116, 32 }, { 131, 32 }, { 146, 32 }, { 161, 32 }, { 176, 32 }, { 198, 32 }, + // LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up, + { 18, 48 }, { 30, 48 }, { 45, 48 }, { 60, 48 }, { 75, 48 }, { 90, 48 }, { 105, 48 }, { 120, 48 }, { 135, 48 }, { 150, 48 }, { 165, 48 }, { 191, 48 }, + // Ctrl, GUI, Alt, Space, RAlt, FN, Left, Down, Right + { 3, 64 }, { 22, 64 }, { 33, 64 }, { 101, 64 }, { 135, 64 }, { 153, 64 }, { 210, 64 }, { 225, 64 }, + // UNDERGLOW + { 216, 32 }, { 180, 32 }, { 144, 32 }, { 108, 32 }, { 72, 32 }, { 36, 32 } +}, { + // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], , + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + // Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + // LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + // Ctrl, GUI, Alt, Space, RAlt, FN, Left, Down, Right + 1, 1, 1, 4, 1, 1, 1, 1, + // UNDERGLOW + 2, 2, 2, 2, 2, 2 +} }; +#endif diff --git a/keyboards/bm60poker/bm60poker.h b/keyboards/kprepublic/bm60hsrgb_poker/rev1/rev1.h similarity index 100% rename from keyboards/bm60poker/bm60poker.h rename to keyboards/kprepublic/bm60hsrgb_poker/rev1/rev1.h diff --git a/keyboards/kprepublic/bm60hsrgb_poker/rev1/rules.mk b/keyboards/kprepublic/bm60hsrgb_poker/rev1/rules.mk new file mode 100644 index 000000000000..983bfdd6b4e0 --- /dev/null +++ b/keyboards/kprepublic/bm60hsrgb_poker/rev1/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = WS2812 +LAYOUTS = 60_ansi diff --git a/keyboards/kprepublic/bm65hsrgb/keymaps/default/keymap.c b/keyboards/kprepublic/bm65hsrgb/keymaps/default/keymap.c new file mode 100644 index 000000000000..dadeb9c149aa --- /dev/null +++ b/keyboards/kprepublic/bm65hsrgb/keymaps/default/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2021 bytesapart + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi_blocker( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_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_HOME, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_ansi_blocker( + KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; diff --git a/keyboards/kprepublic/bm65hsrgb/keymaps/default/readme.md b/keyboards/kprepublic/bm65hsrgb/keymaps/default/readme.md new file mode 100644 index 000000000000..72171ee89a68 --- /dev/null +++ b/keyboards/kprepublic/bm65hsrgb/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for bm65rgb diff --git a/keyboards/kprepublic/bm65hsrgb/readme.md b/keyboards/kprepublic/bm65hsrgb/readme.md new file mode 100644 index 000000000000..d660861296af --- /dev/null +++ b/keyboards/kprepublic/bm65hsrgb/readme.md @@ -0,0 +1,24 @@ +# BM65HSRGB + +![BM65HSRGB](https://i.imgur.com/DskSCve.jpeg) + +A 65% hotswap in switch RGB keyboard from KPRepublic. + +* Keyboard Maintainer: [bytesapart](https://github.com/bytesapart) +* Hardware Supported: BM65HSRGB +* Hardware Availability: [KP Republic](https://kprepublic.com/products/bm65rgb-bm65-rgb-65-hot-swappable-custom-mechanical-keyboard-pcb-programmed-qmk-via-firmware-full-rgb-switch-underglow-type-c?_pos=1&_sid=5b9a6a5d0&_ss=r) + +Make example for this keyboard (after setting up your build environment): + + make kprepublic/bm65hsrgb/rev1:default + +Flashing example for this keyboard: + + make kprepublic/bm65hsrgb/rev1:default:flash + +To reset the board into bootloader mode, do one of the following: + +* Short the two-pad footprint to the left of the spacebar switch while the board is plugged in +* Hold the Esc key while connecting the USB cable (also erases persistent settings) + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/kprepublic/bm65hsrgb/rev1/config.h b/keyboards/kprepublic/bm65hsrgb/rev1/config.h new file mode 100644 index 000000000000..1fbfab93683a --- /dev/null +++ b/keyboards/kprepublic/bm65hsrgb/rev1/config.h @@ -0,0 +1,122 @@ +/* +Copyright 2021 bytesapart + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4B50 //KP +#define PRODUCT_ID 0xEF6E +#define DEVICE_VER 0x0001 +#define MANUFACTURER KPRepublic +#define PRODUCT BM65HSRGB + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * 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, \ + E6 } +#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4, B5, B6, C6, C7, F7, F6 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +// The pin connected to the data pin of the LEDs +#define RGB_DI_PIN E2 +// The number of LEDs connected +#define DRIVER_LED_TOTAL 73 +#ifdef RGB_DI_PIN + #define RGBLED_NUM 73 + #define RGB_MATRIX_KEYPRESSES // reacts to keypresses +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/kprepublic/bm65hsrgb/rev1/info.json b/keyboards/kprepublic/bm65hsrgb/rev1/info.json new file mode 100644 index 000000000000..788f8be23e2c --- /dev/null +++ b/keyboards/kprepublic/bm65hsrgb/rev1/info.json @@ -0,0 +1,82 @@ +{ + "keyboard_name": "BM65HSRGB", + "url": "", + "maintainer": "bytesapart", + "layouts": { + "LAYOUT_65_ansi_blocker": { + "layout": [ + {"label":"K00 (B0,D0)", "x":0, "y":0}, + {"label":"K01 (B0,D1)", "x":1, "y":0}, + {"label":"K02 (B0,D2)", "x":2, "y":0}, + {"label":"K03 (B0,D3)", "x":3, "y":0}, + {"label":"K04 (B0,D5)", "x":4, "y":0}, + {"label":"K05 (B0,D4)", "x":5, "y":0}, + {"label":"K06 (B0,D6)", "x":6, "y":0}, + {"label":"K07 (B0,D7)", "x":7, "y":0}, + {"label":"K08 (B0,B4)", "x":8, "y":0}, + {"label":"K09 (B0,B5)", "x":9, "y":0}, + {"label":"K0A (B0,B6)", "x":10, "y":0}, + {"label":"K0B (B0,C6)", "x":11, "y":0}, + {"label":"K0C (B0,C7)", "x":12, "y":0}, + {"label":"K0D (B0,F7)", "x":13, "y":0, "w":2}, + {"label":"K0E (B0,F6)", "x":15, "y":0}, + + {"label":"K10 (B1,D0)", "x":0, "y":1, "w":1.5}, + {"label":"K11 (B1,D1)", "x":1.5, "y":1}, + {"label":"K12 (B1,D2)", "x":2.5, "y":1}, + {"label":"K13 (B1,D3)", "x":3.5, "y":1}, + {"label":"K14 (B1,D5)", "x":4.5, "y":1}, + {"label":"K15 (B1,D4)", "x":5.5, "y":1}, + {"label":"K16 (B1,D6)", "x":6.5, "y":1}, + {"label":"K17 (B1,D7)", "x":7.5, "y":1}, + {"label":"K18 (B1,B4)", "x":8.5, "y":1}, + {"label":"K19 (B1,B5)", "x":9.5, "y":1}, + {"label":"K1A (B1,B6)", "x":10.5, "y":1}, + {"label":"K1B (B1,C6)", "x":11.5, "y":1}, + {"label":"K1C (B1,C7)", "x":12.5, "y":1}, + {"label":"K1D (B1,F7)", "x":13.5, "y":1, "w":1.5}, + {"label":"K1E (B1,F6)", "x":15, "y":1}, + + {"label":"K20 (B2,D0)", "x":0, "y":2, "w":1.75}, + {"label":"K22 (B2,D2)", "x":1.75, "y":2}, + {"label":"K23 (B2,D3)", "x":2.75, "y":2}, + {"label":"K24 (B2,D5)", "x":3.75, "y":2}, + {"label":"K25 (B2,D4)", "x":4.75, "y":2}, + {"label":"K26 (B2,D6)", "x":5.75, "y":2}, + {"label":"K27 (B2,D7)", "x":6.75, "y":2}, + {"label":"K28 (B2,B4)", "x":7.75, "y":2}, + {"label":"K29 (B2,B5)", "x":8.75, "y":2}, + {"label":"K2A (B2,B6)", "x":9.75, "y":2}, + {"label":"K2B (B2,C6)", "x":10.75, "y":2}, + {"label":"K2C (B2,C7)", "x":11.75, "y":2}, + {"label":"K2D (B2,F7)", "x":12.75, "y":2, "w":2.25}, + {"label":"K2E (B2,F6)", "x":15, "y":2}, + + {"label":"K31 (B3,D1)", "x":0, "y":3, "w":2.25}, + {"label":"K32 (B3,D2)", "x":2.25, "y":3}, + {"label":"K33 (B3,D3)", "x":3.25, "y":3}, + {"label":"K34 (B3,D5)", "x":4.25, "y":3}, + {"label":"K35 (B3,D4)", "x":5.25, "y":3}, + {"label":"K36 (B3,D6)", "x":6.25, "y":3}, + {"label":"K37 (B3,D7)", "x":7.25, "y":3}, + {"label":"K38 (B3,B4)", "x":8.25, "y":3}, + {"label":"K39 (B3,B5)", "x":9.25, "y":3}, + {"label":"K3A (B3,B6)", "x":10.25, "y":3}, + {"label":"K3B (B3,C6)", "x":11.25, "y":3}, + {"label":"K3C (B3,C7)", "x":12.25, "y":3, "w":1.75}, + {"label":"K3D (B3,F7)", "x":14, "y":3}, + {"label":"K3E (B3,F6)", "x":15, "y":3}, + + {"label":"K40 (E6,D0)", "x":0, "y":4, "w":1.25}, + {"label":"K41 (E6,D1)", "x":1.25, "y":4, "w":1.25}, + {"label":"K42 (E6,D2)", "x":2.5, "y":4, "w":1.25}, + {"label":"K46 (E6,D6)", "x":3.75, "y":4, "w":6.25}, + {"label":"K49 (E6,B5)", "x":10, "y":4, "w":1.25}, + {"label":"K4A (E6,B6)", "x":11.25, "y":4, "w":1.25}, + {"label":"K4C (E6,C7)", "x":13, "y":4}, + {"label":"K4D (E6,F7)", "x":14, "y":4}, + {"label":"K4E (E6,F6)", "x":15, "y":4} + ] + } + } +} diff --git a/keyboards/kprepublic/bm65hsrgb/rev1/readme.md b/keyboards/kprepublic/bm65hsrgb/rev1/readme.md new file mode 100644 index 000000000000..119d05d20e6c --- /dev/null +++ b/keyboards/kprepublic/bm65hsrgb/rev1/readme.md @@ -0,0 +1,24 @@ +# bm65rgb + +![bm65rgb](https://i.imgur.com/DskSCve.jpeg) + +A 65% hotswap in switch RGB keyboard from KPRepublic. + +* Keyboard Maintainer: [bytesapart](https://github.com/bytesapart) +* Hardware Supported: BM65 RGB +* Hardware Availability: [KP Republic](https://kprepublic.com/products/bm65rgb-bm65-rgb-65-hot-swappable-custom-mechanical-keyboard-pcb-programmed-qmk-via-firmware-full-rgb-switch-underglow-type-c?_pos=1&_sid=5b9a6a5d0&_ss=r) + +Make example for this keyboard (after setting up your build environment): + + make kprepublic/bm65rgb/rev1:default + +Flashing example for this keyboard: + + make kprepublic/bm65rgb/rev1:default:flash + +To reset the board into bootloader mode, do one of the following: + +* Short the two-pad footprint to the left of the spacebar switch while the board is plugged in +* Hold the Esc key while connecting the USB cable (also erases persistent settings) + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/kprepublic/bm65hsrgb/rev1/rev1.c b/keyboards/kprepublic/bm65hsrgb/rev1/rev1.c new file mode 100644 index 000000000000..6f85f256e1f4 --- /dev/null +++ b/keyboards/kprepublic/bm65hsrgb/rev1/rev1.c @@ -0,0 +1,44 @@ +/* Copyright 2021 bytesapart + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "rev1.h" + +#ifdef RGB_MATRIX_ENABLE +led_config_t g_led_config = { { + // Key Matrix to LED Index + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }, + { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 }, + { 30, NO_LED, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43 }, + { NO_LED, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57 }, + { 58, 59, 60, NO_LED, NO_LED, NO_LED, 61, NO_LED, NO_LED, 62, 63, NO_LED, 64, 65, 66 } +}, { + // LED Index to Physical Position + { 0, 0}, { 15, 0}, { 30, 0}, { 45, 0}, { 60, 0}, { 75, 0}, { 90, 0}, {105, 0}, {120, 0}, {135, 0}, {150, 0}, {165, 0}, {180, 0}, {202, 0}, {225, 0}, // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace, Delete + { 4, 16}, { 22, 16}, { 37, 16}, { 52, 16}, { 67, 16}, { 82, 16}, { 97, 16}, {112, 16}, {127, 16}, {142, 16}, {157, 16}, {172, 16}, {187, 16}, {206, 16}, {225, 16}, // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], backslash , Home + { 6, 32}, { 26, 32}, { 41, 32}, { 56, 32}, { 71, 32}, { 86, 32}, {101, 32}, {116, 32}, {131, 32}, {146, 32}, {161, 32}, {176, 32}, {201, 32}, {225, 32}, // Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter, Page up + { 9, 48}, { 34, 48}, { 49, 48}, { 64, 48}, { 79, 48}, { 94, 48}, {109, 48}, {124, 48}, {139, 48}, {154, 48}, {169, 48}, {189, 48}, {208, 48}, {225, 48}, // LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up, Page Down + { 2, 64}, { 21, 64}, { 39, 64}, { 94, 64}, {148, 64}, {163, 64}, {193, 64}, {208, 64}, {225, 64}, // Ctrl, GUI, Alt, Space, RAlt, FN, Left, Down, Right + {185, 45}, {160, 45}, {125, 45}, { 95, 45}, { 60, 45}, { 25, 45} // UNDERGLOW +}, { + // LED Index to Flag + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace, Delete + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], backslash , Home + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, // Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter, Page up + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, // LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up, Page Down + 1, 1, 1, 4, 1, 1, 1, 1, 1, // Ctrl, GUI, Alt, Space, RAlt, FN, Left, Down, Right + 2, 2, 2, 2, 2, 2 // UNDERGLOW +} }; +#endif diff --git a/keyboards/kprepublic/bm65hsrgb/rev1/rev1.h b/keyboards/kprepublic/bm65hsrgb/rev1/rev1.h new file mode 100644 index 000000000000..4bafcf1943dd --- /dev/null +++ b/keyboards/kprepublic/bm65hsrgb/rev1/rev1.h @@ -0,0 +1,41 @@ +/* Copyright 2021 bytesapart + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT_65_ansi_blocker( \ + 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, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E,\ + 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, k1D, k1E }, \ + { k20, KC_NO, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E }, \ + { KC_NO, 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, k49, k4A, KC_NO, k4C, k4D, k4E }, \ +} diff --git a/keyboards/kprepublic/bm65hsrgb/rev1/rules.mk b/keyboards/kprepublic/bm65hsrgb/rev1/rules.mk new file mode 100644 index 000000000000..1f2855a8394d --- /dev/null +++ b/keyboards/kprepublic/bm65hsrgb/rev1/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 = 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 +# 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 +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = WS2812 +LTO_ENABLE = yes + +LAYOUTS = 65_ansi_blocker diff --git a/keyboards/kprepublic/bm65hsrgb_iso/bm65hsrgb_iso.c b/keyboards/kprepublic/bm65hsrgb_iso/bm65hsrgb_iso.c new file mode 100644 index 000000000000..134c2718240e --- /dev/null +++ b/keyboards/kprepublic/bm65hsrgb_iso/bm65hsrgb_iso.c @@ -0,0 +1,59 @@ +/* Copyright 2020 ipetepete, 2021 deadolus + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "bm65hsrgb_iso.h" + +#ifdef RGB_MATRIX_ENABLE +led_config_t g_led_config = { { + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 , 14}, + { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29}, + { 30, NO_LED, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43}, + { 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58}, + { 59, 60, NO_LED, NO_LED, NO_LED, 61, NO_LED, NO_LED, 62, 63, NO_LED, 64, 65, 66, 67} +}, { + // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace + { 0, 0 }, { 15, 0 }, { 30, 0 }, { 45, 0 }, { 60, 0 }, { 75, 0 }, { 90, 0 }, { 105, 0 }, { 120, 0 }, { 135, 0 }, { 150, 0 }, { 165, 0 }, { 180, 0 }, { 202, 0 },{ 224, 0 }, + // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], , + { 7, 16 }, { 22, 16 }, { 37, 16 }, { 52, 16 }, { 67, 16 }, { 82, 16 }, { 97, 16 }, { 112, 16 }, { 127, 16 }, { 142, 16 }, { 157, 16 }, { 172, 16 }, { 187, 16 }, { 206, 16 },{ 224, 16}, + // Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter + { 11, 32 }, { 26, 32 }, { 41, 32 }, { 56, 32 }, { 71, 32 }, { 86, 32 }, { 101, 32 }, { 116, 32 }, { 131, 32 }, { 146, 32 }, { 161, 32 }, { 176, 32 }, { 198, 32 }, { 224, 32 }, + // LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up, + { 18, 48 }, { 30, 48 }, { 45, 48 }, { 60, 48 }, { 75, 48 }, { 90, 48 }, { 105, 48 }, { 120, 48 }, { 135, 48 }, { 150, 48 }, { 165, 48 }, { 195, 48 }, { 209, 48 }, { 224, 48 }, + // Ctrl, GUI, Alt, Space, RAlt, FN, Left, Down, Right + { 3, 64 }, { 22, 64 }, { 33, 64 }, { 101, 64 }, { 135, 64 }, { 153, 64 }, { 194, 64 }, { 209, 64 },{ 224, 64 }, + // UNDERGLOW + { 216, 32 }, { 180, 32 }, { 144, 32 }, { 108, 32 }, { 72, 32 }, { 36, 32 } +}, { + // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], , + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + // Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + // LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + // Ctrl, GUI, Alt, Space, RAlt, FN, Left, Down, Right + 1, 1, 1, 4, 1, 1, 1, 1, 1, + // UNDERGLOW + 2, 2, 2, 2, 2, 2 +} }; + +__attribute__ ((weak)) +void rgb_matrix_indicators_user(void) { + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color(30, 0xFF, 0xFF, 0xFF); + } +} +#endif diff --git a/keyboards/kprepublic/bm65hsrgb_iso/bm65hsrgb_iso.h b/keyboards/kprepublic/bm65hsrgb_iso/bm65hsrgb_iso.h new file mode 100644 index 000000000000..7f39c6f61bf6 --- /dev/null +++ b/keyboards/kprepublic/bm65hsrgb_iso/bm65hsrgb_iso.h @@ -0,0 +1,34 @@ +/* Copyright 2021 deadolus + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +#define LAYOUT_65_iso_blocker( \ + 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, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K1D, 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, 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, K49, K4A, XXX, K4C, K4D, K4E }, \ +} diff --git a/keyboards/kprepublic/bm65hsrgb_iso/config.h b/keyboards/kprepublic/bm65hsrgb_iso/config.h new file mode 100644 index 000000000000..30b27dc26e87 --- /dev/null +++ b/keyboards/kprepublic/bm65hsrgb_iso/config.h @@ -0,0 +1,119 @@ +/* +Copyright 2020 ipetepete, 2021 deadolus + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4B50 // "KP" +#define PRODUCT_ID 0x0653 +#define DEVICE_VER 0x0001 +#define MANUFACTURER KP Republic +#define PRODUCT BM65HSRGB_ISO + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 +#define FORCE_NKRO + +/* + * 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, E6 } +#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4, B5, B6, C6, C7, F7, F6 } + +#define DIODE_DIRECTION COL2ROW + +#define RGB_DI_PIN E2 +#define DRIVER_LED_TOTAL 74 +#ifdef RGB_DI_PIN + #define RGBLED_NUM 74 + #define RGB_MATRIX_KEYPRESSES + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 140 +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + +# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_BAND_SAT +# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ + /*== all animations enable ==*/ +# define RGBLIGHT_EFFECT_BREATHING +# define RGBLIGHT_EFFECT_RAINBOW_MOOD +# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +# define RGBLIGHT_EFFECT_SNAKE +# define RGBLIGHT_EFFECT_KNIGHT +# define RGBLIGHT_EFFECT_CHRISTMAS +# define RGBLIGHT_EFFECT_STATIC_GRADIENT +# define RGBLIGHT_EFFECT_RGB_TEST +# define RGBLIGHT_EFFECT_ALTERNATING +#endif diff --git a/keyboards/kprepublic/bm65hsrgb_iso/info.json b/keyboards/kprepublic/bm65hsrgb_iso/info.json new file mode 100644 index 000000000000..9212c43339f0 --- /dev/null +++ b/keyboards/kprepublic/bm65hsrgb_iso/info.json @@ -0,0 +1,83 @@ +{ + "keyboard_name": "BM65HSRGB_ISO", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_65_iso_blocker": { + "layout": [ + {"label":"K00 (B0,D0)", "x":0, "y":0}, + {"label":"K01 (B0,D1)", "x":1, "y":0}, + {"label":"K02 (B0,D2)", "x":2, "y":0}, + {"label":"K03 (B0,D3)", "x":3, "y":0}, + {"label":"K04 (B0,D5)", "x":4, "y":0}, + {"label":"K05 (B0,D4)", "x":5, "y":0}, + {"label":"K06 (B0,D6)", "x":6, "y":0}, + {"label":"K07 (B0,D7)", "x":7, "y":0}, + {"label":"K08 (B0,B4)", "x":8, "y":0}, + {"label":"K09 (B0,B5)", "x":9, "y":0}, + {"label":"K0A (B0,B6)", "x":10, "y":0}, + {"label":"K0B (B0,C6)", "x":11, "y":0}, + {"label":"K0C (B0,C7)", "x":12, "y":0}, + {"label":"K0D (B0,F7)", "x":13, "y":0, "w":2}, + {"label":"K0E (B0,F6)", "x":15, "y":0}, + + {"label":"K10 (B1,D0)", "x":0, "y":1, "w":1.5}, + {"label":"K11 (B1,D1)", "x":1.5, "y":1}, + {"label":"K12 (B1,D2)", "x":2.5, "y":1}, + {"label":"K13 (B1,D3)", "x":3.5, "y":1}, + {"label":"K14 (B1,D5)", "x":4.5, "y":1}, + {"label":"K15 (B1,D4)", "x":5.5, "y":1}, + {"label":"K16 (B1,D6)", "x":6.5, "y":1}, + {"label":"K17 (B1,D7)", "x":7.5, "y":1}, + {"label":"K18 (B1,B4)", "x":8.5, "y":1}, + {"label":"K19 (B1,B5)", "x":9.5, "y":1}, + {"label":"K1A (B1,B6)", "x":10.5, "y":1}, + {"label":"K1B (B1,C6)", "x":11.5, "y":1}, + {"label":"K1C (B1,C7)", "x":12.5, "y":1}, + {"label":"K1E (B1,F6)", "x":15, "y":1}, + + {"label":"K20 (B2,D0)", "x":0, "y":2, "w":1.75}, + {"label":"K22 (B2,D2)", "x":1.75, "y":2}, + {"label":"K23 (B2,D3)", "x":2.75, "y":2}, + {"label":"K24 (B2,D5)", "x":3.75, "y":2}, + {"label":"K25 (B2,D4)", "x":4.75, "y":2}, + {"label":"K26 (B2,D6)", "x":5.75, "y":2}, + {"label":"K27 (B2,D7)", "x":6.75, "y":2}, + {"label":"K28 (B2,B4)", "x":7.75, "y":2}, + {"label":"K29 (B2,B5)", "x":8.75, "y":2}, + {"label":"K2A (B2,B6)", "x":9.75, "y":2}, + {"label":"K2B (B2,C6)", "x":10.75, "y":2}, + {"label":"K2C (B2,C7)", "x":11.75, "y":2}, + {"label":"K2D (B2,F7)", "x":12.75, "y":2}, + {"label":"K1D (B1,F7)", "x":13.75, "y":1, "w":1.25, "h":2}, + {"label":"K2E (B2,F6)", "x":15, "y":2}, + + {"label":"K30 (B3,D0)", "x":0, "y":3, "w":1.25}, + {"label":"K31 (B3,D1)", "x":1.25, "y":3}, + {"label":"K32 (B3,D2)", "x":2.25, "y":3}, + {"label":"K33 (B3,D3)", "x":3.25, "y":3}, + {"label":"K34 (B3,D5)", "x":4.25, "y":3}, + {"label":"K35 (B3,D4)", "x":5.25, "y":3}, + {"label":"K36 (B3,D6)", "x":6.25, "y":3}, + {"label":"K37 (B3,D7)", "x":7.25, "y":3}, + {"label":"K38 (B3,B4)", "x":8.25, "y":3}, + {"label":"K39 (B3,B5)", "x":9.25, "y":3}, + {"label":"K3A (B3,B6)", "x":10.25, "y":3}, + {"label":"K3B (B3,C6)", "x":11.25, "y":3}, + {"label":"K3C (B3,C7)", "x":12.25, "y":3, "w":1.75}, + {"label":"K3D (B3,F7)", "x":14, "y":3}, + {"label":"K3E (B3,F6)", "x":15, "y":3}, + + {"label":"K40 (E6,D0)", "x":0, "y":4, "w":1.25}, + {"label":"K41 (E6,D1)", "x":1.25, "y":4, "w":1.25}, + {"label":"K42 (E6,D2)", "x":2.5, "y":4, "w":1.25}, + {"label":"K46 (E6,D6)", "x":3.75, "y":4, "w":6.25}, + {"label":"K49 (E6,B5)", "x":10, "y":4, "w":1.25}, + {"label":"K4A (E6,B6)", "x":11.25, "y":4, "w":1.25}, + {"label":"K4C (E6,C7)", "x":13, "y":4}, + {"label":"K4D (E6,F7)", "x":14, "y":4}, + {"label":"K4E (E6,F6)", "x":15, "y":4} + ] + } + } +} diff --git a/keyboards/kprepublic/bm65hsrgb_iso/keymaps/deadolus/config.h b/keyboards/kprepublic/bm65hsrgb_iso/keymaps/deadolus/config.h new file mode 100644 index 000000000000..1dc1414fa5ff --- /dev/null +++ b/keyboards/kprepublic/bm65hsrgb_iso/keymaps/deadolus/config.h @@ -0,0 +1,27 @@ +/* Copyright 2021 deadolus + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +// place overrides here + +#pragma once +#define LSPO_KEYS KC_LSFT, KC_LSFT, KC_8 +#define RSPC_KEYS KC_RSFT, KC_LSFT, KC_9 +#define LAPO_KEYS KC_LALT, KC_RALT, KC_QUOT +#define RAPC_KEYS KC_RALT, KC_RALT, KC_NUHS + +#define LEADER_TIMEOUT 1000 +#define LEADER_PER_KEY_TIMING 250 + diff --git a/keyboards/kprepublic/bm65hsrgb_iso/keymaps/deadolus/keymap.c b/keyboards/kprepublic/bm65hsrgb_iso/keymaps/deadolus/keymap.c new file mode 100644 index 000000000000..46de987a689a --- /dev/null +++ b/keyboards/kprepublic/bm65hsrgb_iso/keymaps/deadolus/keymap.c @@ -0,0 +1,283 @@ +/* Copyright 2019 ashlar 2021 peepeetee, deadolus + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +#include "keymap.h" + +#ifdef TAP_DANCE_ENABLE +enum { + TD_HOME_END, +}; + +// Tap Dance definitions +qk_tap_dance_action_t tap_dance_actions[] = { + //tap once for home, twice for end + [TD_HOME_END] = ACTION_TAP_DANCE_DOUBLE(KC_HOME, KC_END) +}; +#endif + + +// // Defines names for use in layer keycodes and the keymap +enum layers { + _BL, + _RED_, + _GREEN_, + _BLUE_, + _CYAN_, + _MAGENTA_, + _YELLOW_ +}; + + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ├───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ + * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘ + */ +#ifdef TAP_DANCE_ENABLE + /* 0: ISO qwerty */ + [_BL] = LAYOUT_65_iso_blocker( + KC_CAPS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, TD(TD_HOME_END), + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP, + KC_LSPO, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LAPO, KC_SPC, KC_RAPC, MO(_RED_), KC_LEFT, KC_DOWN, KC_RGHT + + ), +#else + [_BL] = LAYOUT_65_iso_blocker( + KC_CAPS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_HOME, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP, + KC_LSPO, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LAPO, KC_SPC, KC_RAPC, MO(_RED_), KC_LEFT, KC_DOWN, KC_RGHT + + ), +#endif + + [_RED_] = LAYOUT_65_iso_blocker( + 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, _______, LGUI(KC_END), + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, LGUI(KC_PAUSE), + _______, TO(_GREEN_), TO(_BLUE_), TO(_CYAN_), TO(_MAGENTA_), TO(_YELLOW_), _______, _______, _______, _______, _______, _______, _______, TO(0), _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, _______, + RESET, _______, _______, KC_LEAD, _______, _______, KC_MPLY, KC_VOLD, KC_MUTE + ), + + + [_GREEN_] = LAYOUT_65_iso_blocker( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_PGDN, KC_PGUP, KC_PSCR, _______, _______, _______, _______, + _______, KC_ACL0, KC_ACL1, KC_ACL2, _______, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_BTN1, KC_BTN2, _______, TO(0), _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_END, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + + [_BLUE_] = LAYOUT_65_iso_blocker( + _______, DM_PLY1, DM_PLY2, _______, _______, _______, _______, _______, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, _______, _______, _______, + _______, DM_REC1, DM_REC2, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PMNS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_PPLS, TO(0), _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, KC_PENT, _______, _______, + _______, _______, _______, _______, KC_0, KC_PCMM, _______, _______, _______ + ), + [_CYAN_] = LAYOUT_65_iso_blocker( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TO(0), _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [_MAGENTA_] = LAYOUT_65_iso_blocker( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TO(0), _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [_YELLOW_] = LAYOUT_65_iso_blocker( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TO(0), _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + /*template + [_UL] = LAYOUT_65_iso_blocker( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TO(0), _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) + */ +}; + +#ifdef _______ +#undef _______ +#define _______ {0, 0, 0} + +const uint8_t PROGMEM ledmap[][3] = { + [_BL] = _______, + [_RED_] = RED, + [_GREEN_] = GREEN, + [_BLUE_] = BLUE, + [_CYAN_] = CYAN, + [_MAGENTA_] = MAGENTA, + [_YELLOW_] = YELLOW +}; + +#undef _______ +#define _______ KC_TRNS +#endif + + + +void keyboard_post_init_user(void) { + // Call the post init code. +#ifdef CONSOLE_ENABLE + debug_enable=true; + debug_matrix=true; +#endif + rgb_matrix_set_flags(LED_FLAG_UNDERGLOW); +} + + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { +#ifdef CONSOLE_ENABLE + //useful for getting matrix right + uprintf("KL: kc: 0x%04X, col: %u, row: %u, pressed: %b, time: %u, interrupt: %b, count: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed, record->event.time, record->tap.interrupted, record->tap.count); +#endif + + switch (keycode) { + case RGB_TOG: + if (record->event.pressed) { + switch (rgb_matrix_get_flags()) { + case LED_FLAG_ALL: { + rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR); + rgb_matrix_set_color_all(0, 0, 0); + } + break; + case (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR): { + rgb_matrix_set_flags(LED_FLAG_UNDERGLOW); + rgb_matrix_set_color_all(0, 0, 0); + } + break; + case LED_FLAG_UNDERGLOW: { + rgb_matrix_set_flags(LED_FLAG_NONE); + rgb_matrix_disable_noeeprom(); + } + break; + default: { + rgb_matrix_set_flags(LED_FLAG_ALL); + rgb_matrix_enable_noeeprom(); + } + break; + } + } + return false; + default: + return true; // Process all other keycodes normally + } +} + +void setCapsLock(void) { + led_t host_leds = host_keyboard_led_state(); + if (host_leds.caps_lock) { + rgb_matrix_set_color(30, 0xFF, 0xFF, 0xFF); + + } else { + //if capslock is not pressed don't clear it, it might be used for displaying led pattern + if((rgb_matrix_get_flags() != LED_FLAG_ALL)) { + rgb_matrix_set_color(30, 0x0, 0x0, 0x0); + } + } +} + +void set_layer_color(int layer) { + int ledkey=0; + for(int i=0; i. + */ +#include QMK_KEYBOARD_H + +#include "print.h" +#include +// HID has not yet been implemented for this keyboard +// #include "raw_hid.h" + +#define MILLISECONDS_IN_SECOND 1000 + +// These are just to make it neater to use builtin HSV values in the keymap +#define RED {HSV_RED} +#define CORAL {HSV_CORAL} +#define ORANGE {HSV_ORANGE} +#define GOLDEN {HSV_GOLDENROD} +#define GOLD {HSV_GOLD} +#define YELLOW {HSV_YELLOW} +#define CHART {HSV_CHARTREUSE} +#define GREEN {HSV_GREEN} +#define SPRING {HSV_SPRINGGREEN} +#define TURQ {HSV_TURQUOISE} +#define TEAL {HSV_TEAL} +#define CYAN {HSV_CYAN} +#define AZURE {HSV_AZURE} +#define BLUE {HSV_BLUE} +#define PURPLE {HSV_PURPLE} +#define MAGENTA {HSV_MAGENTA} +#define PINK {HSV_PINK} + +//========================================================== CONFIGURABLE DEFAULTS ========================================================== +#define RGB_DEFAULT_TIME_OUT 30 +#define RGB_FAST_MODE_TIME_OUT 3 +#define RGB_TIME_OUT_MAX 600 +#define RGB_TIME_OUT_MIN 10 +#define RGB_TIME_OUT_STEP 10 + +extern bool g_suspend_state; +bool disable_layer_color; + +uint8_t dfa_state; //state for my language switching DFA + + +bool rgb_enabled_flag; // Current LED state flag. If false then LED is off. +bool rgb_time_out_enable; // Idle LED toggle enable. If false then LED will not turn off after idle timeout. +bool rgb_time_out_fast_mode_enabled; // Enable flag for RGB timeout fast mode +bool rgb_time_out_user_value; // This holds the toggle value set by user with ROUT_TG. It's necessary as RGB_TOG changes timeout enable. +uint16_t rgb_time_out_seconds; // Idle LED timeout value, in seconds not milliseconds +uint16_t rgb_time_out_saved_seconds; // The saved user config for RGB timeout period +led_flags_t rgb_time_out_saved_flag; // Store LED flag before timeout so it can be restored when LED is turned on again. diff --git a/keyboards/kprepublic/bm65hsrgb_iso/keymaps/deadolus/readme.md b/keyboards/kprepublic/bm65hsrgb_iso/keymaps/deadolus/readme.md new file mode 100644 index 000000000000..095550b01a8a --- /dev/null +++ b/keyboards/kprepublic/bm65hsrgb_iso/keymaps/deadolus/readme.md @@ -0,0 +1,20 @@ +# Deadolus' keymap for the bm65iso + +* Six layers (even though three are mostly empty) +* Different color for each layer (r,g,b,c,m,y) +* **Keys with something else defined than KC_TRNS are lit up in the layer color, so you easily can see which keys have some function defined** +* Caps-Lock lights up when active and on layer 0 +* Some leader shortcuts defined - nothing useful yet +* Some space cadet keys defined for easier insertion of () and {} +* Bootmagic lite enabled via default settings so you can plug in the keyboard while holding esc to land in bootloader mode +* Manages all this and still fits in to the program memory + +Make example for this keyboard (after setting up your build environment): + + make kprepublic/bm65hsrgb_iso:deadolus + +Flashing example for this keyboard: + + make kprepublic/bm65hsrgb_iso:deadolus:flash + +Keyboard Maintainer: **[deadolus](https://github.com/deadolus)** diff --git a/keyboards/kprepublic/bm65hsrgb_iso/keymaps/deadolus/rules.mk b/keyboards/kprepublic/bm65hsrgb_iso/keymaps/deadolus/rules.mk new file mode 100644 index 000000000000..c8354ea2561e --- /dev/null +++ b/keyboards/kprepublic/bm65hsrgb_iso/keymaps/deadolus/rules.mk @@ -0,0 +1,4 @@ +DYNAMIC_MACRO_ENABLE = yes +TAP_DANCE_ENABLE = yes +LEADER_ENABLE = yes +#CONSOLE_ENABLE=yes diff --git a/keyboards/kprepublic/bm65hsrgb_iso/keymaps/default/keymap.c b/keyboards/kprepublic/bm65hsrgb_iso/keymaps/default/keymap.c new file mode 100644 index 000000000000..bed12e0f72fb --- /dev/null +++ b/keyboards/kprepublic/bm65hsrgb_iso/keymaps/default/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2021 deadolus + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_65_iso_blocker( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_HOME, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_65_iso_blocker( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; diff --git a/keyboards/kprepublic/bm65hsrgb_iso/keymaps/via/keymap.c b/keyboards/kprepublic/bm65hsrgb_iso/keymaps/via/keymap.c new file mode 100644 index 000000000000..ae36e6b1f53e --- /dev/null +++ b/keyboards/kprepublic/bm65hsrgb_iso/keymaps/via/keymap.c @@ -0,0 +1,52 @@ +/* Copyright 2021 deadolus + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_65_iso_blocker( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_HOME, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_65_iso_blocker( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [2] = LAYOUT_65_iso_blocker( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [3] = LAYOUT_65_iso_blocker( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; diff --git a/keyboards/kprepublic/bm65hsrgb_iso/keymaps/via/readme.md b/keyboards/kprepublic/bm65hsrgb_iso/keymaps/via/readme.md new file mode 100644 index 000000000000..87c754275609 --- /dev/null +++ b/keyboards/kprepublic/bm65hsrgb_iso/keymaps/via/readme.md @@ -0,0 +1 @@ +# The VIA default keymap for bm65iso diff --git a/keyboards/kprepublic/bm65hsrgb_iso/keymaps/via/rules.mk b/keyboards/kprepublic/bm65hsrgb_iso/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/kprepublic/bm65hsrgb_iso/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/kprepublic/bm65hsrgb_iso/readme.md b/keyboards/kprepublic/bm65hsrgb_iso/readme.md new file mode 100644 index 000000000000..752362e29a94 --- /dev/null +++ b/keyboards/kprepublic/bm65hsrgb_iso/readme.md @@ -0,0 +1,24 @@ +# BM65HSRGB_ISO + +![BM65HSRGB_ISO](https://ae01.alicdn.com/kf/He2fd118856c7490292bc3c299049fdbcp.jpg) + +A 65% hotswap in switch RGB keyboard from KPRepublic. + +* Keyboard Maintainer: [deadolus](https://github.com/deadolus) +* Hardware Supported: BM65HSRGB_ISO +* Hardware Availability: [KP Republic](https://kprepublic.com/products/bm65rgb-bm65-iso-rgb-65-hot-swappable-custom-mechanical-keyboard-pcb-programmed-qmk-via-firmware-rgb-switch-underglow-type-c) + +Make example for this keyboard (after setting up your build environment): + + make kprepublic/bm65hsrgb_iso:default + +Flashing example for this keyboard: + + make kprepublic/bm65hsrgb_iso:default:flash + +To reset the board into bootloader mode, do one of the following: + +* Short the two-pad footprint to the left of the spacebar switch while the board is plugged in +* Hold the Esc key while connecting the USB cable (also erases persistent settings) + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/kprepublic/bm65hsrgb_iso/rules.mk b/keyboards/kprepublic/bm65hsrgb_iso/rules.mk new file mode 100644 index 000000000000..8b9812492c6e --- /dev/null +++ b/keyboards/kprepublic/bm65hsrgb_iso/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 = 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 +# 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 +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = WS2812 +LTO_ENABLE = yes + +LAYOUTS = 65_iso_blocker diff --git a/keyboards/kprepublic/bm68hsrgb/bm68hsrgb.c b/keyboards/kprepublic/bm68hsrgb/bm68hsrgb.c new file mode 100644 index 000000000000..b405a9f204b6 --- /dev/null +++ b/keyboards/kprepublic/bm68hsrgb/bm68hsrgb.c @@ -0,0 +1,44 @@ +/* Copyright 2021 peepeetee + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "bm68hsrgb.h" + +#ifdef RGB_MATRIX_ENABLE +led_config_t g_led_config = { { + // Key Matrix to LED Index + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }, + { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 }, + { 30, NO_LED, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43 }, + { NO_LED, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57 }, + { 58, 59, 60, NO_LED, NO_LED, NO_LED, 61, NO_LED, NO_LED, 62, 63, 64, 65, 66, 67 } +}, { + // LED Index to Physical Position + { 0, 0}, { 15, 0}, { 30, 0}, { 45, 0}, { 60, 0}, { 75, 0}, { 90, 0}, {105, 0}, {120, 0}, {135, 0}, {150, 0}, {165, 0}, {180, 0}, {202, 0}, {225, 0}, // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace, Delete + { 4, 16}, { 22, 16}, { 37, 16}, { 52, 16}, { 67, 16}, { 82, 16}, { 97, 16}, {112, 16}, {127, 16}, {142, 16}, {157, 16}, {172, 16}, {187, 16}, {206, 16}, {225, 16}, // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], backslash , Home + { 6, 32}, { 26, 32}, { 41, 32}, { 56, 32}, { 71, 32}, { 86, 32}, {101, 32}, {116, 32}, {131, 32}, {146, 32}, {161, 32}, {176, 32}, {201, 32}, {225, 32}, // Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter, Page up + { 9, 48}, { 34, 48}, { 49, 48}, { 64, 48}, { 79, 48}, { 94, 48}, {109, 48}, {124, 48}, {139, 48}, {154, 48}, {169, 48}, {189, 48}, {208, 48}, {225, 48}, // LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up, Page Down + { 2, 64}, { 21, 64}, { 39, 64}, { 94, 64}, {148, 64}, {163, 64}, {178, 64}, {193, 64}, {208, 64}, {225, 64}, // Ctrl, GUI, Alt, Space, RAlt, FN, Ctrl, Left, Down, Right + {185, 45}, {160, 45}, {125, 45}, { 95, 45}, { 60, 45}, { 25, 45} // UNDERGLOW +}, { + // LED Index to Flag + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace, Delete + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], backslash , Home + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, // Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter, Page up + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, // LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up, Page Down + 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, // Ctrl, GUI, Alt, Space, RAlt, FN, Ctrl, Left, Down, Right + 2, 2, 2, 2, 2, 2 // UNDERGLOW +} }; +#endif diff --git a/keyboards/bm68rgb/bm68rgb.h b/keyboards/kprepublic/bm68hsrgb/bm68hsrgb.h similarity index 100% rename from keyboards/bm68rgb/bm68rgb.h rename to keyboards/kprepublic/bm68hsrgb/bm68hsrgb.h diff --git a/keyboards/kprepublic/bm68hsrgb/config.h b/keyboards/kprepublic/bm68hsrgb/config.h new file mode 100644 index 000000000000..a779c97b7b5c --- /dev/null +++ b/keyboards/kprepublic/bm68hsrgb/config.h @@ -0,0 +1,174 @@ +/* +Copyright 2021 peepeetee + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4B50 //KP +#define PRODUCT_ID 0xEF6F +#define DEVICE_VER 0x0001 +#define MANUFACTURER KPRepublic +#define PRODUCT BM68HSRGB + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * 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, \ + E6 } +#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4, B5, B6, C6, C7, F7, F6 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +// The pin connected to the data pin of the LEDs +#define RGB_DI_PIN E2 +// The number of LEDs connected +#define DRIVER_LED_TOTAL 74 +#ifdef RGB_DI_PIN +# define RGBLED_NUM 74 +# define RGB_MATRIX_KEYPRESSES // reacts to keypresses +# define RGBLIGHT_LIMIT_VAL 180 // Limit to vendor-recommended value +#endif +#ifdef RGB_MATRIX_ENABLE +# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180 // Limit to vendor-recommended value +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/kprepublic/bm68hsrgb/info.json b/keyboards/kprepublic/bm68hsrgb/info.json new file mode 100644 index 000000000000..0a72da6e9847 --- /dev/null +++ b/keyboards/kprepublic/bm68hsrgb/info.json @@ -0,0 +1,79 @@ +{ + "keyboard_name": "BM68HSRGB", + "url": "", + "maintainer": "peepeetee", + "layouts": { + "LAYOUT_65_ansi": { + "layout": [ + {"label":"K00 (B0,D0)", "x":0, "y":0}, + {"label":"K01 (B0,D1)", "x":1, "y":0}, + {"label":"K02 (B0,D2)", "x":2, "y":0}, + {"label":"K03 (B0,D3)", "x":3, "y":0}, + {"label":"K04 (B0,D5)", "x":4, "y":0}, + {"label":"K05 (B0,D4)", "x":5, "y":0}, + {"label":"K06 (B0,D6)", "x":6, "y":0}, + {"label":"K07 (B0,D7)", "x":7, "y":0}, + {"label":"K08 (B0,B4)", "x":8, "y":0}, + {"label":"K09 (B0,B5)", "x":9, "y":0}, + {"label":"K0A (B0,B6)", "x":10, "y":0}, + {"label":"K0B (B0,C6)", "x":11, "y":0}, + {"label":"K0C (B0,C7)", "x":12, "y":0}, + {"label":"K0D (B0,F7)", "x":13, "y":0, "w":2}, + {"label":"K0E (B0,F6)", "x":15, "y":0}, + {"label":"K10 (B1,D0)", "x":0, "y":1, "w":1.5}, + {"label":"K11 (B1,D1)", "x":1.5, "y":1}, + {"label":"K12 (B1,D2)", "x":2.5, "y":1}, + {"label":"K13 (B1,D3)", "x":3.5, "y":1}, + {"label":"K14 (B1,D5)", "x":4.5, "y":1}, + {"label":"K15 (B1,D4)", "x":5.5, "y":1}, + {"label":"K16 (B1,D6)", "x":6.5, "y":1}, + {"label":"K17 (B1,D7)", "x":7.5, "y":1}, + {"label":"K18 (B1,B4)", "x":8.5, "y":1}, + {"label":"K19 (B1,B5)", "x":9.5, "y":1}, + {"label":"K1A (B1,B6)", "x":10.5, "y":1}, + {"label":"K1B (B1,C6)", "x":11.5, "y":1}, + {"label":"K1C (B1,C7)", "x":12.5, "y":1}, + {"label":"K1D (B1,F7)", "x":13.5, "y":1, "w":1.5}, + {"label":"K1E (B1,F6)", "x":15, "y":1}, + {"label":"K20 (B2,D0)", "x":0, "y":2, "w":1.75}, + {"label":"K22 (B2,D2)", "x":1.75, "y":2}, + {"label":"K23 (B2,D3)", "x":2.75, "y":2}, + {"label":"K24 (B2,D5)", "x":3.75, "y":2}, + {"label":"K25 (B2,D4)", "x":4.75, "y":2}, + {"label":"K26 (B2,D6)", "x":5.75, "y":2}, + {"label":"K27 (B2,D7)", "x":6.75, "y":2}, + {"label":"K28 (B2,B4)", "x":7.75, "y":2}, + {"label":"K29 (B2,B5)", "x":8.75, "y":2}, + {"label":"K2A (B2,B6)", "x":9.75, "y":2}, + {"label":"K2B (B2,C6)", "x":10.75, "y":2}, + {"label":"K2C (B2,C7)", "x":11.75, "y":2}, + {"label":"K2D (B2,F7)", "x":12.75, "y":2, "w":2.25}, + {"label":"K2E (B2,F6)", "x":15, "y":2}, + {"label":"K31 (B3,D1)", "x":0, "y":3, "w":2.25}, + {"label":"K32 (B3,D2)", "x":2.25, "y":3}, + {"label":"K33 (B3,D3)", "x":3.25, "y":3}, + {"label":"K34 (B3,D5)", "x":4.25, "y":3}, + {"label":"K35 (B3,D4)", "x":5.25, "y":3}, + {"label":"K36 (B3,D6)", "x":6.25, "y":3}, + {"label":"K37 (B3,D7)", "x":7.25, "y":3}, + {"label":"K38 (B3,B4)", "x":8.25, "y":3}, + {"label":"K39 (B3,B5)", "x":9.25, "y":3}, + {"label":"K3A (B3,B6)", "x":10.25, "y":3}, + {"label":"K3B (B3,C6)", "x":11.25, "y":3}, + {"label":"K3C (B3,C7)", "x":12.25, "y":3, "w":1.75}, + {"label":"K3D (B3,F7)", "x":14, "y":3}, + {"label":"K3E (B3,F6)", "x":15, "y":3}, + {"label":"K40 (E6,D0)", "x":0, "y":4, "w":1.25}, + {"label":"K41 (E6,D1)", "x":1.25, "y":4, "w":1.25}, + {"label":"K42 (E6,D2)", "x":2.5, "y":4, "w":1.25}, + {"label":"K46 (E6,D6)", "x":3.75, "y":4, "w":6.25}, + {"label":"K49 (E6,B5)", "x":10, "y":4}, + {"label":"K4A (E6,B6)", "x":11, "y":4}, + {"label":"K4B (E6,C6)", "x":12, "y":4}, + {"label":"K4C (E6,C7)", "x":13, "y":4}, + {"label":"K4D (E6,F7)", "x":14, "y":4}, + {"label":"K4E (E6,F6)", "x":15, "y":4} + ] + } + } +} diff --git a/keyboards/bm68rgb/keymaps/default/keymap.c b/keyboards/kprepublic/bm68hsrgb/keymaps/default/keymap.c similarity index 100% rename from keyboards/bm68rgb/keymaps/default/keymap.c rename to keyboards/kprepublic/bm68hsrgb/keymaps/default/keymap.c diff --git a/keyboards/bm68rgb/keymaps/default/readme.md b/keyboards/kprepublic/bm68hsrgb/keymaps/default/readme.md similarity index 100% rename from keyboards/bm68rgb/keymaps/default/readme.md rename to keyboards/kprepublic/bm68hsrgb/keymaps/default/readme.md diff --git a/keyboards/kprepublic/bm68hsrgb/keymaps/peepeetee/config.h b/keyboards/kprepublic/bm68hsrgb/keymaps/peepeetee/config.h new file mode 100644 index 000000000000..0748f83cdcb6 --- /dev/null +++ b/keyboards/kprepublic/bm68hsrgb/keymaps/peepeetee/config.h @@ -0,0 +1,132 @@ +/* Copyright 2021 peepeetee + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + + +// #define MODS_SHIFT (get_mods() & MOD_MASK_SHIFT) +// #define MODS_CTRL (get_mods() & MOD_MASK_CTRL) +// #define MODS_ALT (get_mods() & MOD_MASK_ALT) + +// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) // Key combination that allows the use of magic commands (useful for debugging) + +// #define NO_DEBUG // Disable debugging +// #define NO_PRINT // Disable printing/debugging using hid_listen +// #define NO_ACTION_LAYER // Disable layers +// #define NO_ACTION_TAPPING // Disable tap dance and other tapping features +// #define NO_ACTION_ONESHOT // Disable one-shot modifiers +// #define NO_ACTION_MACRO // Disable old style macro handling: MACRO() & action_get_macro +// #define TERMINAL_HELP +// #define MOUSEKEY_INTERVAL 20 +// #define MOUSEKEY_DELAY 0 +// #define MOUSEKEY_TIME_TO_MAX 60 +// #define MOUSEKEY_MAX_SPEED 10 +// #define MOUSEKEY_WHEEL_DELAY 0 +#define FORCE_NKRO // NKRO by default requires to be turned on, this forces it on during keyboard startup regardless of EEPROM setting. NKRO can still be turned off but will be turned on again if the keyboard reboots. +// #define QMK_KEYS_PER_SCAN 4 // Allows sending more than one key per scan. By default, only one key event gets sent via process_record() per scan. This has little impact on most typing, but if you're doing a lot of chords, or your scan rate is slow to begin with, you can have some delay in processing key events. Each press and release is a separate event. For a keyboard with 1ms or so scan times, even a very fast typist isn't going to produce the 500 keystrokes a second needed to actually get more than a few ms of delay from this. But if you're doing chording on something with 3-4ms scan times? You probably want this. +// #define STRICT_LAYER_RELEASE // Force a key release to be evaluated using the current layer stack instead of remembering which layer it came from (used for advanced cases) +// #define LOCKING_SUPPORT_ENABLE // Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap +// #define LOCKING_RESYNC_ENABLE // Tries to keep switch state consistent with keyboard LED state + #define TAPPING_TERM 200 // How long before a tap becomes a hold, if set above 500, a key tapped during the tapping term will turn it into a hold too +// #define TAPPING_TERM_PER_KEY // Enables handling for per key TAPPING_TERM settings +// #define RETRO_TAPPING // Tap anyway, even after TAPPING_TERM, if there was no other key interruption between press and release +// #define TAPPING_TOGGLE 2 // How many taps before triggering the toggle +// #define PERMISSIVE_HOLD // Makes tap and hold keys trigger the hold if another key is pressed before releasing, even if it hasn't hit the TAPPING_TERM. See Permissive Hold for details +// #define IGNORE_MOD_TAP_INTERRUPT // Makes it possible to do rolling combos (zx) with keys that convert to other keys on hold, by enforcing the TAPPING_TERM for both keys. See Mod tap interrupt for details +// #define TAPPING_FORCE_HOLD // Makes it possible to use a dual role key as modifier shortly after having been tapped. See Hold after tap. Breaks any Tap Toggle functionality (TT or the One Shot Tap Toggle) +// #define LEADER_TIMEOUT 300 // How long before the leader key times out. If you're having issues finishing the sequence before it times out, you may need to increase the timeout setting. Or you may want to enable the LEADER_PER_KEY_TIMING option, which resets the timeout after each key is tapped. +// #define LEADER_PER_KEY_TIMING // Sets the timer for leader key chords to run on each key press rather than overall +// #define LEADER_KEY_STRICT_KEY_PROCESSING // Disables keycode filtering for Mod-Tap and Layer-Tap keycodes. Eg, if you enable this, you would need to specify MT(MOD_CTL, KC_A) if you want to use KC_A. +// #define ONESHOT_TIMEOUT 300 // How long before oneshot times out +// #define ONESHOT_TAP_TOGGLE 2 // How many taps before oneshot toggle is triggered +// #define COMBO_COUNT 2 // Set this to the number of combos that you're using in the Combo feature. +// #define COMBO_TERM 200 // How long for the Combo keys to be detected. Defaults to TAPPING_TERM if not defined. +// #define TAP_CODE_DELAY 100 // Sets the delay between register_code and unregister_code, if you're having issues with it registering properly (common on VUSB boards). The value is in milliseconds. +// #define TAP_HOLD_CAPS_DELAY 80 // Sets the delay for Tap Hold keys (LT, MT) when using KC_CAPSLOCK keycode, as this has some special handling on MacOS. The value is in milliseconds, and defaults to 80 ms if not defined. For macOS, you may want to set this to 200 or higher. + +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define RGB_MATRIX_KEYPRESSES // reacts to keypresses +// #define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses) +#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_ALPHAS_MODS // Sets the default mode, if none has been set +// #define RGBLIGHT_HUE_STEP 12 // Units to step when in/decreasing hue +// #define RGBLIGHT_SAT_STEP 25 // Units to step when in/decreasing saturation +// #define RGBLIGHT_VAL_STEP 12 // Units to step when in/decreasing value (brightness) +// #define RGB_DISABLE_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_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness) +// #define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness) +// #define RGBLIGHT_ANIMATIONS // Run RGB animations +// #define RGBLIGHT_ANIMATIONS // Enable all additional animation modes. +// #define RGBLIGHT_EFFECT_ALTERNATING // Enable alternating animation mode. +// #define RGBLIGHT_EFFECT_BREATHING // Enable breathing animation mode. +// #define RGBLIGHT_EFFECT_CHRISTMAS // Enable christmas animation mode. +// #define RGBLIGHT_EFFECT_KNIGHT // Enable knight animation mode. +// #define RGBLIGHT_EFFECT_RAINBOW_MOOD // Enable rainbow mood animation mode. +// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL // Enable rainbow swirl animation mode. +// #define RGBLIGHT_EFFECT_RGB_TEST // Enable RGB test animation mode. +// #define RGBLIGHT_EFFECT_SNAKE // Enable snake animation mode. +// #define RGBLIGHT_EFFECT_STATIC_GRADIENT // Enable static gradient mode. + +// #define RGBLIGHT_EFFECT_BREATHE_CENTER // If defined, used to calculate the curve for the breathing animation. Valid values are 1.0 to 2.7 +// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // The maximum brightness for the breathing mode. Valid values are 1 to 255 +// #define RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL 1000 // How long to wait between light changes for the "Christmas" animation, in milliseconds +// #define RGBLIGHT_EFFECT_CHRISTMAS_STEP 2 // The number of LEDs to group the red/green colors by for the "Christmas" animation +// #define RGBLIGHT_EFFECT_KNIGHT_LED_NUM RGBLED_NUM // The number of LEDs to have the "Knight" animation travel +// #define RGBLIGHT_EFFECT_KNIGHT_LENGTH 3 // The number of LEDs to light up for the "Knight" animation +// #define RGBLIGHT_EFFECT_KNIGHT_OFFSET 0 // The number of LEDs to start the "Knight" animation from the start of the strip by +// #define RGBLIGHT_RAINBOW_SWIRL_RANGE 255 // Range adjustment for the rainbow swirl effect to get different swirls +// #define RGBLIGHT_EFFECT_SNAKE_LENGTH 4 // The number of LEDs to light up for the "Snake" animation + +// This list in in the correct mode order. Next mode is the following line, previous mode is previous line. Loops around. +// #undef ENABLE_RGB_MATRIX_SOLID_COLOR // Static single hue, no speed support +// #undef ENABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue +#undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes +#undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Static gradient top to bottom, speed controls how much gradient changes +#undef ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation +#undef ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right +#undef ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right +#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation +#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness +#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades saturation +#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness +#undef ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient +//#undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right +#undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom +#undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradent Chevron shapped scrolling left to right +#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in +#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in +#undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard +#undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard +#undef ENABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard +#undef ENABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard +#undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard +#undef ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue +#undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation +// =================================================== Requires RGB_MATRIX_FRAMEBUFFER_EFFECTS ============================================================= +// #undef ENABLE_RGB_MATRIX_TYPING_HEATMAP // How hot is your WPM! +#undef ENABLE_RGB_MATRIX_DIGITAL_RAIN // That famous computer simulation + // =================================================== RGB_MATRIX_KEYPRESSES OR RGB_MATRIX_KEYRELEASES ===================================================== +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out +#undef ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out +#undef ENABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out +#undef ENABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out +#undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out diff --git a/keyboards/bm68rgb/keymaps/peepeetee/keymap.c b/keyboards/kprepublic/bm68hsrgb/keymaps/peepeetee/keymap.c similarity index 100% rename from keyboards/bm68rgb/keymaps/peepeetee/keymap.c rename to keyboards/kprepublic/bm68hsrgb/keymaps/peepeetee/keymap.c diff --git a/keyboards/bm68rgb/keymaps/peepeetee/keymap.h b/keyboards/kprepublic/bm68hsrgb/keymaps/peepeetee/keymap.h similarity index 100% rename from keyboards/bm68rgb/keymaps/peepeetee/keymap.h rename to keyboards/kprepublic/bm68hsrgb/keymaps/peepeetee/keymap.h diff --git a/keyboards/bm68rgb/keymaps/peepeetee/readme.md b/keyboards/kprepublic/bm68hsrgb/keymaps/peepeetee/readme.md similarity index 100% rename from keyboards/bm68rgb/keymaps/peepeetee/readme.md rename to keyboards/kprepublic/bm68hsrgb/keymaps/peepeetee/readme.md diff --git a/keyboards/bm68rgb/keymaps/via/keymap.c b/keyboards/kprepublic/bm68hsrgb/keymaps/via/keymap.c similarity index 100% rename from keyboards/bm68rgb/keymaps/via/keymap.c rename to keyboards/kprepublic/bm68hsrgb/keymaps/via/keymap.c diff --git a/keyboards/bm68rgb/keymaps/via/readme.md b/keyboards/kprepublic/bm68hsrgb/keymaps/via/readme.md similarity index 100% rename from keyboards/bm68rgb/keymaps/via/readme.md rename to keyboards/kprepublic/bm68hsrgb/keymaps/via/readme.md diff --git a/keyboards/kprepublic/bm68hsrgb/keymaps/via/rules.mk b/keyboards/kprepublic/bm68hsrgb/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/kprepublic/bm68hsrgb/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/kprepublic/bm68hsrgb/readme.md b/keyboards/kprepublic/bm68hsrgb/readme.md new file mode 100644 index 000000000000..54d71cab2c6e --- /dev/null +++ b/keyboards/kprepublic/bm68hsrgb/readme.md @@ -0,0 +1,24 @@ +# BM68HSRGB + +![BM68HSRGB](https://i.imgur.com/uuYP8OIl.jpeg) + +A 65% hotswap in switch RGB keyboard from KPRepublic. + +* Keyboard Maintainer: [peepeetee](https://github.com/peepeetee) +* Hardware Supported: BM68HSRGB +* Hardware Availability: [KP Republic](https://kprepublic.com/products/bm68rgb-bm68-rgb-65-hot-swappable-custom-mechanical-keyboard-pcb-programmed-qmk-via-firmware-full-rgb-switch-underglow-type-c) + +Make example for this keyboard (after setting up your build environment): + + make kprepublic/bm68hsrgb:default + +Flashing example for this keyboard: + + make kprepublic/bm68hsrgb:default:flash + +To reset the board into bootloader mode, do one of the following: + +* Short the two-pad footprint to the left of the spacebar switch while the board is plugged in +* Hold the Esc key while connecting the USB cable (also erases persistent settings) + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/kprepublic/bm68hsrgb/rules.mk b/keyboards/kprepublic/bm68hsrgb/rules.mk new file mode 100644 index 000000000000..73311a914fa2 --- /dev/null +++ b/keyboards/kprepublic/bm68hsrgb/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 = 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 +# 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 +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = WS2812 +LTO_ENABLE = yes + +LAYOUTS = 65_ansi diff --git a/keyboards/kprepublic/bm80hsrgb/bm80hsrgb.c b/keyboards/kprepublic/bm80hsrgb/bm80hsrgb.c new file mode 100644 index 000000000000..3455efd84c56 --- /dev/null +++ b/keyboards/kprepublic/bm80hsrgb/bm80hsrgb.c @@ -0,0 +1,142 @@ +/* Copyright 2021 peepeetee + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "bm80hsrgb.h" + +#ifdef RGB_MATRIX_ENABLE +led_config_t g_led_config = { { + // Key Matrix to LED Index + { 0, NO_LED, 1, 2, 3, 4, NO_LED, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15 }, + { 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 }, + { 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49 }, + { 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 11, 62, NO_LED, NO_LED, NO_LED }, + /* ^ this one is f11*/ + { 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, NO_LED, 74, NO_LED, NO_LED, 75, NO_LED }, + { 76, 77, 78, NO_LED, NO_LED, 79, NO_LED, NO_LED, NO_LED, 80, 81, 82, 83, 84, NO_LED, 85, 86 } + +// K0_0, K0_2, K0_3, K0_4, K0_5, K0_7, K0_8, K0_9, K0_A, K0_B, K0_C, K3_C, K0_D, K0_E, K0_F, K0_10, +// K1_0, K1_1, K1_2, K1_3, K1_4, K1_5, K1_6, K1_7, K1_8, K1_9, K1_A, K1_B, K1_C, K1_D, K1_E, K1_F, K1_10, +// K2_0, K2_1, K2_2, K2_3, K2_4, K2_5, K2_6, K2_7, K2_8, K2_9, K2_A, K2_B, K2_C, K2_D, K2_E, K2_F, K2_10, +// K3_0, K3_1, K3_2, K3_3, K3_4, K3_5, K3_6, K3_7, K3_8, K3_9, K3_A, K3_B, K3_D, +// K4_0, K4_1, K4_2, K4_3, K4_4, K4_5, K4_6, K4_7, K4_8, K4_9, K4_A, K4_C, K4_F, +// K5_0, K5_1, K5_2, K5_5, K5_9, K5_A, K5_B, K5_C, K5_D, K5_F, K5_10 + + +// K0_0, KC_NO, K0_2, K0_3, K0_4, K0_5, KC_NO, K0_7, K0_8, K0_9, K0_A, K0_B, K0_C, K0_D, K0_E, K0_F, K0_10 +// K1_0, K1_1, K1_2, K1_3, K1_4, K1_5, K1_6, K1_7, K1_8, K1_9, K1_A, K1_B, K1_C, K1_D, K1_E, K1_F, K1_10 +// K2_0, K2_1, K2_2, K2_3, K2_4, K2_5, K2_6, K2_7, K2_8, K2_9, K2_A, K2_B, K2_C, K2_D, K2_E, K2_F, K2_10 +// K3_0, K3_1, K3_2, K3_3, K3_4, K3_5, K3_6, K3_7, K3_8, K3_9, K3_A, K3_B, K3_C, K3_D, KC_NO, KC_NO, KC_NO +// K4_0, K4_1, K4_2, K4_3, K4_4, K4_5, K4_6, K4_7, K4_8, K4_9, K4_A, KC_NO, K4_C, KC_NO, KC_NO, K4_F, KC_NO +// K5_0, K5_1, K5_2, KC_NO, KC_NO, K5_5, KC_NO, KC_NO, KC_NO, K5_9, K5_A, K5_B, K5_C, K5_D, KC_NO, K5_F, K5_10 + + /* + * ┌───┐   ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ + * │ 0 │   │ 1 │ 2 │ 3 │ 4 │ │ 5 │ 6 │ 7 │ 8 │ │ 9 │ 10│ 11│ 12│ │ 13│ 14│ 15│ + * └───┘   └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ + * │ 16│ 17│ 18│ 19│ 20│ 21│ 22│ 23│ 24│ 25│ 26│ 27│ 28│  29 │ │ 30│ 31│ 32│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ + * │  33 │ 34│ 35│ 36│ 37│ 38│ 39│ 40│ 41│ 42│ 43│ 44│ 45│  46 │ │ 47│ 48│ 49│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ + * │ 50  │ 51│ 52│ 53│ 54│ 55│ 56│ 57│ 58│ 59│ 60│ 61│   62  │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤     ┌───┐ + * │ 63   │ 64│ 65│ 66│ 67│ 68│ 69│ 70│ 71│ 72│ 73│    74  │     │ 75│ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ + * │ 76 │ 77 │ 78 │           79           │ 80 │ 81 │ 82 │ 83 │ │ 84│ 85│ 86│ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ + */ + +}, { + // LED Index to Physical Position + { 7, 5 }, { 31, 5 }, { 43, 5 }, { 55, 5 }, { 67, 5 }, { 85, 5 }, { 97, 5 }, { 109, 5 }, { 121, 5 }, { 139, 5 }, { 151, 5 }, { 163, 5 }, { 175, 5 }, { 193, 5 }, { 205, 5 }, { 217, 5 }, + /* + * ┌───┐   ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ + * │ 0 │   │ 1 │ 2 │ 3 │ 4 │ │ 5 │ 6 │ 7 │ 8 │ │ 9 │ 10│ 11│ 12│ │ 13│ 14│ 15│ + * └───┘   └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ + */ + { 7, 20 }, { 19, 20 }, { 31, 20 }, { 43, 20 }, { 55, 20 }, { 67, 20 }, { 79, 20 }, { 91, 20 }, { 103, 20 }, { 115, 20 }, { 127, 20 }, { 139, 20 }, { 151, 20 }, { 169, 20 }, { 193, 20 }, { 205, 20 }, { 217, 20 }, + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ + * │ 16│ 17│ 18│ 19│ 20│ 21│ 22│ 23│ 24│ 25│ 26│ 27│ 28│  29 │ │ 30│ 31│ 32│ + * └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───────┘ └───┴───┴───┘ + */ + { 10, 30 }, { 25, 30 }, { 37, 30 }, { 49, 30 }, { 61, 30 }, { 73, 30 }, { 85, 30 }, { 97, 30 }, { 109, 30 }, { 121, 30 }, { 133, 30 }, { 145, 30 }, { 157, 30 }, { 172, 30 }, { 193, 30 }, { 205, 30 }, { 217, 30 }, + /* + * ┌─────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ ┌───┬───┬───┐ + * │  33 │ 34│ 35│ 36│ 37│ 38│ 39│ 40│ 41│ 42│ 43│ 44│ 45│  46 │ │ 47│ 48│ 49│ + * └─────┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴─────┘ └───┴───┴───┘ + */ + { 11, 39 }, { 28, 39 }, { 40, 39 }, { 52, 39 }, { 64, 39 }, { 76, 39 }, { 88, 39 }, { 100, 39 }, { 112, 39 }, { 124, 39 }, { 136, 39 }, { 148, 39 }, { 168, 39 }, + /* + * ┌──────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬────────┐ + * │ 50  │ 51│ 52│ 53│ 54│ 55│ 56│ 57│ 58│ 59│ 60│ 61│   62  │ + * └──────┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴────────┘ + */ + { 14, 49 }, { 34, 49 }, { 46, 49 }, { 58, 49 }, { 70, 49 }, { 82, 49 }, { 94, 49 }, { 106, 49 }, { 118, 49 }, { 130, 49 }, { 142, 49 }, { 165, 49 }, { 205, 49 }, + /* + * ┌────────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬──────────┐     ┌───┐ + * │ 63   │ 64│ 65│ 66│ 67│ 68│ 69│ 70│ 71│ 72│ 73│    74  │     │ 75│ + * └────────┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴──────────┘  └───┘ + */ + { 8, 59 }, { 23, 59 }, { 38, 59 }, { 83, 59 }, { 129, 59 }, { 144, 59 }, { 159, 59 }, { 174, 59 }, { 193, 59 }, { 205, 59 }, { 217, 59 } + /* + * ┌────┬────┬────┬────────────────────────┬────┬────┬────┬────┐ ┌───┬───┬───┐ + * │ 76 │ 77 │ 78 │           79           │ 80 │ 81 │ 82 │ 83 │ │ 84│ 85│ 86│ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ + */ +}, { + // LED Index to Flag + 1, 4, 4, 4, 4, 1, 1, 1, 1, 4, 4, 4, 4, 1, 9/*scroll lock*/, 1, + /* + * ┌───┐   ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ + * │ 0 │   │ 1 │ 2 │ 3 │ 4 │ │ 5 │ 6 │ 7 │ 8 │ │ 9 │ 10│ 11│ 12│ │ 13│ 14│ 15│ + * └───┘   └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ + */ + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ + * │ 16│ 17│ 18│ 19│ 20│ 21│ 22│ 23│ 24│ 25│ 26│ 27│ 28│  29 │ │ 30│ 31│ 32│ + * └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───────┘ └───┴───┴───┘ + */ + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, + /* + * ┌─────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ ┌───┬───┬───┐ + * │  33 │ 34│ 35│ 36│ 37│ 38│ 39│ 40│ 41│ 42│ 43│ 44│ 45│  46 │ │ 47│ 48│ 49│ + * └─────┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴─────┘ └───┴───┴───┘ + */ + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + //caps lock is 1 instead of 1+8, this board has a dedicated led + /* + * ┌──────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬────────┐ + * │ 50  │ 51│ 52│ 53│ 54│ 55│ 56│ 57│ 58│ 59│ 60│ 61│   62  │ + * └──────┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴────────┘ + */ + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, + /* + * ┌────────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬──────────┐     ┌───┐ + * │ 63   │ 64│ 65│ 66│ 67│ 68│ 69│ 70│ 71│ 72│ 73│    74  │     │ 75│ + * └────────┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴──────────┘  └───┘ + */ + 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1 + /* + * ┌────┬────┬────┬────────────────────────┬────┬────┬────┬────┐ ┌───┬───┬───┐ + * │ 76 │ 77 │ 78 │           79           │ 80 │ 81 │ 82 │ 83 │ │ 84│ 85│ 86│ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ + */ +} }; + + +#endif diff --git a/keyboards/kprepublic/bm80hsrgb/bm80hsrgb.h b/keyboards/kprepublic/bm80hsrgb/bm80hsrgb.h new file mode 100644 index 000000000000..450befe882dd --- /dev/null +++ b/keyboards/kprepublic/bm80hsrgb/bm80hsrgb.h @@ -0,0 +1,43 @@ +/* Copyright 2021 peepeetee + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT_tkl_ansi( \ + K0_0, K0_2, K0_3, K0_4, K0_5, K0_7, K0_8, K0_9, K0_A, K0_B, K0_C, K3_C, K0_D, K0_E, K0_F, K0_10, \ + K1_0, K1_1, K1_2, K1_3, K1_4, K1_5, K1_6, K1_7, K1_8, K1_9, K1_A, K1_B, K1_C, K1_D, K1_E, K1_F, K1_10, \ + K2_0, K2_1, K2_2, K2_3, K2_4, K2_5, K2_6, K2_7, K2_8, K2_9, K2_A, K2_B, K2_C, K2_D, K2_E, K2_F, K2_10, \ + K3_0, K3_1, K3_2, K3_3, K3_4, K3_5, K3_6, K3_7, K3_8, K3_9, K3_A, K3_B, K3_D, \ + K4_0, K4_1, K4_2, K4_3, K4_4, K4_5, K4_6, K4_7, K4_8, K4_9, K4_A, K4_C, K4_F, \ + K5_0, K5_1, K5_2, K5_5, K5_9, K5_A, K5_B, K5_C, K5_D, K5_F, K5_10 \ +) { \ + { K0_0, KC_NO, K0_2, K0_3, K0_4, K0_5, KC_NO, K0_7, K0_8, K0_9, K0_A, K0_B, K0_C, K0_D, K0_E, K0_F, K0_10 }, \ + { K1_0, K1_1, K1_2, K1_3, K1_4, K1_5, K1_6, K1_7, K1_8, K1_9, K1_A, K1_B, K1_C, K1_D, K1_E, K1_F, K1_10 }, \ + { K2_0, K2_1, K2_2, K2_3, K2_4, K2_5, K2_6, K2_7, K2_8, K2_9, K2_A, K2_B, K2_C, K2_D, K2_E, K2_F, K2_10 }, \ + { K3_0, K3_1, K3_2, K3_3, K3_4, K3_5, K3_6, K3_7, K3_8, K3_9, K3_A, K3_B, K3_C, K3_D, KC_NO, KC_NO, KC_NO }, \ + { K4_0, K4_1, K4_2, K4_3, K4_4, K4_5, K4_6, K4_7, K4_8, K4_9, K4_A, KC_NO, K4_C, KC_NO, KC_NO, K4_F, KC_NO }, \ + { K5_0, K5_1, K5_2, KC_NO, KC_NO, K5_5, KC_NO, KC_NO, KC_NO, K5_9, K5_A, K5_B, K5_C, K5_D, KC_NO, K5_F, K5_10 } \ +} diff --git a/keyboards/kprepublic/bm80hsrgb/config.h b/keyboards/kprepublic/bm80hsrgb/config.h new file mode 100644 index 000000000000..b1a2ad23a1d4 --- /dev/null +++ b/keyboards/kprepublic/bm80hsrgb/config.h @@ -0,0 +1,142 @@ +/* +Copyright 2021 peepeetee + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4B50 //KP +#define PRODUCT_ID 0xEF83 +#define DEVICE_VER 0x0001 +#define MANUFACTURER KPRepublic +#define PRODUCT BM80HSRGB + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 17 + +/* + * 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 { B3, B2, B1, B0, C6, C7 } +#define MATRIX_COL_PINS { F0, F1, F4, D7, D6, D4, D5, D3, D2, F5, F6, F7, D1, D0, B4, B5, B6 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + + + + +#define LED_CAPS_LOCK_PIN E6 +#define LED_PIN_ON_STATE 0 + + +#define RGB_DI_PIN E2 +// The number of LEDs connected +#define DRIVER_LED_TOTAL 87 + +#ifdef RGB_DI_PIN +#define RGBLED_NUM 87 +#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_TIMEOUT 0 // number of milliseconds to wait until rgb automatically turns off +//#define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness) +#define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness) +// #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255 +#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT // Sets the default mode, if none has been set +#define RGB_MATRIX_STARTUP_HUE 0 // Sets the default hue value, if none has been set +#define RGB_MATRIX_STARTUP_SAT 255 // Sets the default saturation value, if none has been set +#define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS // Sets the default brightness value, if none has been set +#define RGB_MATRIX_STARTUP_SPD 127 // Sets the default animation speed, if none has been set +// #define RGB_MATRIX_DISABLE_KEYCODES // disables control of rgb matrix by keycodes (must use code functions to control the feature) + +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_FRACTAL +#define ENABLE_RGB_MATRIX_PIXEL_RAIN + +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN + +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + +// # define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended +// does not work for some reason, might revisit + + + +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/kprepublic/bm80hsrgb/info.json b/keyboards/kprepublic/bm80hsrgb/info.json new file mode 100644 index 000000000000..f46024a93fc7 --- /dev/null +++ b/keyboards/kprepublic/bm80hsrgb/info.json @@ -0,0 +1,98 @@ +{ + "keyboard_name": "BM80HSRGB", + "url": "", + "maintainer": "peepeetee", + "layouts": { + "LAYOUT_tkl_ansi": { + "layout": [ + {"label":"K0_0 (B3,F0)", "x":0, "y":0}, + {"label":"K0_2 (B3,F4)", "x":2, "y":0}, + {"label":"K0_3 (B3,D7)", "x":3, "y":0}, + {"label":"K0_4 (B3,D6)", "x":4, "y":0}, + {"label":"K0_5 (B3,D4)", "x":5, "y":0}, + {"label":"K0_7 (B3,D3)", "x":6.5, "y":0}, + {"label":"K0_8 (B3,D2)", "x":7.5, "y":0}, + {"label":"K0_9 (B3,F5)", "x":8.5, "y":0}, + {"label":"K0_A (B3,F6)", "x":9.5, "y":0}, + {"label":"K0_B (B3,F7)", "x":11, "y":0}, + {"label":"K0_C (B3,D1)", "x":12, "y":0}, + {"label":"K3_C (B0,D1)", "x":13, "y":0}, + {"label":"K0_D (B3,D0)", "x":14, "y":0}, + {"label":"K0_E (B3,B4)", "x":15.25, "y":0}, + {"label":"K0_F (B3,B5)", "x":16.25, "y":0}, + {"label":"K0_10 (B3,B6)", "x":17.25, "y":0}, + {"label":"K1_0 (B2,F0)", "x":0, "y":1.5}, + {"label":"K1_1 (B2,F1)", "x":1, "y":1.5}, + {"label":"K1_2 (B2,F4)", "x":2, "y":1.5}, + {"label":"K1_3 (B2,D7)", "x":3, "y":1.5}, + {"label":"K1_4 (B2,D6)", "x":4, "y":1.5}, + {"label":"K1_5 (B2,D4)", "x":5, "y":1.5}, + {"label":"K1_6 (B2,D5)", "x":6, "y":1.5}, + {"label":"K1_7 (B2,D3)", "x":7, "y":1.5}, + {"label":"K1_8 (B2,D2)", "x":8, "y":1.5}, + {"label":"K1_9 (B2,F5)", "x":9, "y":1.5}, + {"label":"K1_A (B2,F6)", "x":10, "y":1.5}, + {"label":"K1_B (B2,F7)", "x":11, "y":1.5}, + {"label":"K1_C (B2,D1)", "x":12, "y":1.5}, + {"label":"K1_D (B2,D0)", "x":13, "y":1.5, "w":2}, + {"label":"K1_E (B2,B4)", "x":15.25, "y":1.5}, + {"label":"K1_F (B2,B5)", "x":16.25, "y":1.5}, + {"label":"K1_10 (B2,B6)", "x":17.25, "y":1.5}, + {"label":"K2_0 (B1,F0)", "x":0, "y":2.5, "w":1.5}, + {"label":"K2_1 (B1,F1)", "x":1.5, "y":2.5}, + {"label":"K2_2 (B1,F4)", "x":2.5, "y":2.5}, + {"label":"K2_3 (B1,D7)", "x":3.5, "y":2.5}, + {"label":"K2_4 (B1,D6)", "x":4.5, "y":2.5}, + {"label":"K2_5 (B1,D4)", "x":5.5, "y":2.5}, + {"label":"K2_6 (B1,D5)", "x":6.5, "y":2.5}, + {"label":"K2_7 (B1,D3)", "x":7.5, "y":2.5}, + {"label":"K2_8 (B1,D2)", "x":8.5, "y":2.5}, + {"label":"K2_9 (B1,F5)", "x":9.5, "y":2.5}, + {"label":"K2_A (B1,F6)", "x":10.5, "y":2.5}, + {"label":"K2_B (B1,F7)", "x":11.5, "y":2.5}, + {"label":"K2_C (B1,D1)", "x":12.5, "y":2.5}, + {"label":"K2_D (B1,D0)", "x":13.5, "y":2.5, "w":1.5}, + {"label":"K2_E (B1,B4)", "x":15.25, "y":2.5}, + {"label":"K2_F (B1,B5)", "x":16.25, "y":2.5}, + {"label":"K2_10 (B1,B6)", "x":17.25, "y":2.5}, + {"label":"K3_0 (B0,F0)", "x":0, "y":3.5, "w":1.75}, + {"label":"K3_1 (B0,F1)", "x":1.75, "y":3.5}, + {"label":"K3_2 (B0,F4)", "x":2.75, "y":3.5}, + {"label":"K3_3 (B0,D7)", "x":3.75, "y":3.5}, + {"label":"K3_4 (B0,D6)", "x":4.75, "y":3.5}, + {"label":"K3_5 (B0,D4)", "x":5.75, "y":3.5}, + {"label":"K3_6 (B0,D5)", "x":6.75, "y":3.5}, + {"label":"K3_7 (B0,D3)", "x":7.75, "y":3.5}, + {"label":"K3_8 (B0,D2)", "x":8.75, "y":3.5}, + {"label":"K3_9 (B0,F5)", "x":9.75, "y":3.5}, + {"label":"K3_A (B0,F6)", "x":10.75, "y":3.5}, + {"label":"K3_B (B0,F7)", "x":11.75, "y":3.5}, + {"label":"K3_D (B0,D0)", "x":12.75, "y":3.5, "w":2.25}, + {"label":"K4_0 (C6,F0)", "x":0, "y":4.5, "w":2.25}, + {"label":"K4_1 (C6,F1)", "x":2.25, "y":4.5}, + {"label":"K4_2 (C6,F4)", "x":3.25, "y":4.5}, + {"label":"K4_3 (C6,D7)", "x":4.25, "y":4.5}, + {"label":"K4_4 (C6,D6)", "x":5.25, "y":4.5}, + {"label":"K4_5 (C6,D4)", "x":6.25, "y":4.5}, + {"label":"K4_6 (C6,D5)", "x":7.25, "y":4.5}, + {"label":"K4_7 (C6,D3)", "x":8.25, "y":4.5}, + {"label":"K4_8 (C6,D2)", "x":9.25, "y":4.5}, + {"label":"K4_9 (C6,F5)", "x":10.25, "y":4.5}, + {"label":"K4_A (C6,F6)", "x":11.25, "y":4.5}, + {"label":"K4_C (C6,D1)", "x":12.25, "y":4.5, "w":2.75}, + {"label":"K4_F (C6,B5)", "x":16.25, "y":4.5}, + {"label":"K5_0 (C7,F0)", "x":0, "y":5.5, "w":1.25}, + {"label":"K5_1 (C7,F1)", "x":1.25, "y":5.5, "w":1.25}, + {"label":"K5_2 (C7,F4)", "x":2.5, "y":5.5, "w":1.25}, + {"label":"K5_5 (C7,D4)", "x":3.75, "y":5.5, "w":6.25}, + {"label":"K5_9 (C7,F5)", "x":10, "y":5.5, "w":1.25}, + {"label":"K5_A (C7,F6)", "x":11.25, "y":5.5, "w":1.25}, + {"label":"K5_B (C7,F7)", "x":12.5, "y":5.5, "w":1.25}, + {"label":"K5_C (C7,D1)", "x":13.75, "y":5.5, "w":1.25}, + {"label":"K5_D (C7,D0)", "x":15.25, "y":5.5}, + {"label":"K5_F (C7,B5)", "x":16.25, "y":5.5}, + {"label":"K5_10 (C7,B6)", "x":17.25, "y":5.5} + ] + } + } +} diff --git a/keyboards/kprepublic/bm80hsrgb/keymaps/default/keymap.c b/keyboards/kprepublic/bm80hsrgb/keymaps/default/keymap.c new file mode 100644 index 000000000000..d86c6f9ec8d8 --- /dev/null +++ b/keyboards/kprepublic/bm80hsrgb/keymaps/default/keymap.c @@ -0,0 +1,51 @@ +/* Copyright 2021 peepeetee + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_tkl_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_tkl_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) + +/* + [X] = LAYOUT_tkl_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +*/ + + +}; + diff --git a/keyboards/kprepublic/bm80hsrgb/keymaps/default/readme.md b/keyboards/kprepublic/bm80hsrgb/keymaps/default/readme.md new file mode 100644 index 000000000000..8ad360ebda28 --- /dev/null +++ b/keyboards/kprepublic/bm80hsrgb/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for bm80 diff --git a/keyboards/kprepublic/bm80hsrgb/keymaps/peepeetee/config.h b/keyboards/kprepublic/bm80hsrgb/keymaps/peepeetee/config.h new file mode 100644 index 000000000000..b322afae9be4 --- /dev/null +++ b/keyboards/kprepublic/bm80hsrgb/keymaps/peepeetee/config.h @@ -0,0 +1,97 @@ +/* Copyright 2021 peepeetee + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + + + +// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) // Key combination that allows the use of magic commands (useful for debugging) + +// #define TERMINAL_HELP + +#define FORCE_NKRO // NKRO by default requires to be turned on, this forces it on during keyboard startup regardless of EEPROM setting. NKRO can still be turned off but will be turned on again if the keyboard reboots. +// #define QMK_KEYS_PER_SCAN 4 // Allows sending more than one key per scan. By default, only one key event gets sent via process_record() per scan. This has little impact on most typing, but if you're doing a lot of chords, or your scan rate is slow to begin with, you can have some delay in processing key events. Each press and release is a separate event. For a keyboard with 1ms or so scan times, even a very fast typist isn't going to produce the 500 keystrokes a second needed to actually get more than a few ms of delay from this. But if you're doing chording on something with 3-4ms scan times? You probably want this. +// #define STRICT_LAYER_RELEASE // Force a key release to be evaluated using the current layer stack instead of remembering which layer it came from (used for advanced cases) +// #define TAPPING_TERM 200 // How long before a tap becomes a hold, if set above 500, a key tapped during the tapping term will turn it into a hold too +// #define TAPPING_TERM_PER_KEY // Enables handling for per key TAPPING_TERM settings +// #define RETRO_TAPPING // Tap anyway, even after TAPPING_TERM, if there was no other key interruption between press and release +// #define TAPPING_TOGGLE 2 // How many taps before triggering the toggle +// #define PERMISSIVE_HOLD // Makes tap and hold keys trigger the hold if another key is pressed before releasing, even if it hasn't hit the TAPPING_TERM. See Permissive Hold for details +// #define IGNORE_MOD_TAP_INTERRUPT // Makes it possible to do rolling combos (zx) with keys that convert to other keys on hold, by enforcing the TAPPING_TERM for both keys. See Mod tap interrupt for details +// #define TAPPING_FORCE_HOLD // Makes it possible to use a dual role key as modifier shortly after having been tapped. See Hold after tap. Breaks any Tap Toggle functionality (TT or the One Shot Tap Toggle) +// #define LEADER_TIMEOUT 300 // How long before the leader key times out. If you're having issues finishing the sequence before it times out, you may need to increase the timeout setting. Or you may want to enable the LEADER_PER_KEY_TIMING option, which resets the timeout after each key is tapped. +// #define LEADER_PER_KEY_TIMING // Sets the timer for leader key chords to run on each key press rather than overall +// #define LEADER_KEY_STRICT_KEY_PROCESSING // Disables keycode filtering for Mod-Tap and Layer-Tap keycodes. Eg, if you enable this, you would need to specify MT(MOD_CTL, KC_A) if you want to use KC_A. +// #define ONESHOT_TIMEOUT 300 // How long before oneshot times out +// #define ONESHOT_TAP_TOGGLE 2 // How many taps before oneshot toggle is triggered +// #define COMBO_COUNT 2 // Set this to the number of combos that you're using in the Combo feature. +// #define COMBO_TERM 200 // How long for the Combo keys to be detected. Defaults to TAPPING_TERM if not defined. +// #define TAP_CODE_DELAY 100 // Sets the delay between register_code and unregister_code, if you're having issues with it registering properly (common on VUSB boards). The value is in milliseconds. +// #define TAP_HOLD_CAPS_DELAY 80 // Sets the delay for Tap Hold keys (LT, MT) when using KC_CAPSLOCK keycode, as this has some special handling on MacOS. The value is in milliseconds, and defaults to 80 ms if not defined. For macOS, you may want to set this to 200 or higher. + +// #define RGB_MATRIX_FRAMEBUFFER_EFFECTS +// #define RGB_MATRIX_KEYPRESSES // reacts to keypresses +// #define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses) +// #define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_ALPHAS_MODS // Sets the default mode, if none has been set +// #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects +// #define RGB_DISABLE_WHEN_USB_SUSPENDED false // turn off effects when suspended +// #define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness) +// #define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness) + + +// This list in in the correct mode order. Next mode is the following line, previous mode is previous line. Loops around. +// #define DISABLE_RGB_MATRIX_SOLID_COLOR // Static single hue, no speed support +// #define DISABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue +#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes +#define DISABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Static gradient top to bottom, speed controls how much gradient changes +#define DISABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation +#define DISABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right +#define DISABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right +#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation +#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness +#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades saturation +#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness +#define DISABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient +//#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right +#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom +#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradent Chevron shapped scrolling left to right +#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in +#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in +#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard +#define DISABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard +#define DISABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard +#define DISABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard +#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard +#define DISABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue +#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation +#define DISABLE_RGB_MATRIX_HUE_BREATHING // Hue shifts up a slight ammount at the same time, then shifts back +#define DISABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight ammount in a wave to the right, then back to the left +#define DISABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight ammount and then back down in a wave to the right +// =================================================== Requires RGB_MATRIX_FRAMEBUFFER_EFFECTS ============================================================= +// #define DISABLE_RGB_MATRIX_TYPING_HEATMAP // How hot is your WPM! +#define DISABLE_RGB_MATRIX_DIGITAL_RAIN // That famous computer simulation +// =================================================== RGB_MATRIX_KEYPRESSES OR RGB_MATRIX_KEYRELEASES ===================================================== +#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out +#define DISABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue +#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out +#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out +#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out +#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out +#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out +#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out +#define DISABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out +//#define DISABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out +#define DISABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out +#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out diff --git a/keyboards/kprepublic/bm80hsrgb/keymaps/peepeetee/keymap.c b/keyboards/kprepublic/bm80hsrgb/keymaps/peepeetee/keymap.c new file mode 100644 index 000000000000..d4a188089bc9 --- /dev/null +++ b/keyboards/kprepublic/bm80hsrgb/keymaps/peepeetee/keymap.c @@ -0,0 +1,51 @@ +/* Copyright 2021 peepeetee + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_tkl_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_tkl_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + RGB_MOD, RGB_HUI, RGB_VAI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + RGB_TOG, RGB_HUD, RGB_VAD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, KC_AUDIO_VOL_UP, + _______, _______, _______, _______, _______, _______, _______, _______, KC_BRIGHTNESS_DOWN, KC_AUDIO_VOL_DOWN, KC_BRIGHTNESS_UP + ) + +/* + [X] = LAYOUT_tkl_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +*/ + + +}; + diff --git a/keyboards/kprepublic/bm80hsrgb/keymaps/via/keymap.c b/keyboards/kprepublic/bm80hsrgb/keymaps/via/keymap.c new file mode 100644 index 000000000000..53b2981c5eed --- /dev/null +++ b/keyboards/kprepublic/bm80hsrgb/keymaps/via/keymap.c @@ -0,0 +1,57 @@ +/* Copyright 2021 peepeetee + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_tkl_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_tkl_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [2] = LAYOUT_tkl_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [3] = LAYOUT_tkl_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) + +}; + diff --git a/keyboards/kprepublic/bm80hsrgb/keymaps/via/readme.md b/keyboards/kprepublic/bm80hsrgb/keymaps/via/readme.md new file mode 100644 index 000000000000..9fb42c24d867 --- /dev/null +++ b/keyboards/kprepublic/bm80hsrgb/keymaps/via/readme.md @@ -0,0 +1 @@ +# The default VIA keymap for bm80 diff --git a/keyboards/kprepublic/bm80hsrgb/keymaps/via/rules.mk b/keyboards/kprepublic/bm80hsrgb/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/kprepublic/bm80hsrgb/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/kprepublic/bm80hsrgb/readme.md b/keyboards/kprepublic/bm80hsrgb/readme.md new file mode 100644 index 000000000000..f48af7390c6d --- /dev/null +++ b/keyboards/kprepublic/bm80hsrgb/readme.md @@ -0,0 +1,30 @@ +# BM80HSRGB + +![BM80HSRGB](https://i.imgur.com/AqjEjOi.jpeg) + +A tkl, hotswap, in switch RGB keyboard from KPRepublic. + +* Keyboard Maintainer: [peepeetee](https://github.com/peepeetee) +* Hardware Supported: BM80HSRGB +* Hardware Availability: [KP Republic](https://kprepublic.com/collections/new-arrival/products/bm80rgb-bm80-rgb-80-hot-swappable-custom-mechanical-keyboard-pcb-programmed-qmk-via-firmware-full-rgb-switch-underglow-type-c) + +Make example for this keyboard (after setting up your build environment): + + make kprepublic/bm80hsrgb:default + +Flashing example for this keyboard: + + make kprepublic/bm80hsrgb:default:flash + +To reset the board into bootloader mode, do one of the following: + +* Short the two-pad footprint between the "delete" key and the "end" key while the board is plugged in +* Press the switch labled RST on the back of the PCB, near the MCU, while the board is plugged in +* Hold the Esc key while connecting the USB cable (also erases persistent settings) + +All of the RGB matrix effects are enabled by default. To disable specific ones, see [this section](https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects) for more information. + + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + + diff --git a/keyboards/kprepublic/bm80hsrgb/rules.mk b/keyboards/kprepublic/bm80hsrgb/rules.mk new file mode 100644 index 000000000000..4893e0a01aa3 --- /dev/null +++ b/keyboards/kprepublic/bm80hsrgb/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 = 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 +# 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 +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = WS2812 +LTO_ENABLE = yes + +LAYOUTS = tkl_ansi diff --git a/keyboards/kprepublic/cospad/config.h b/keyboards/kprepublic/cospad/config.h new file mode 100644 index 000000000000..47c4a1d9af90 --- /dev/null +++ b/keyboards/kprepublic/cospad/config.h @@ -0,0 +1,150 @@ +/* +Copyright 2020 + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4B5C // "KP" +#define PRODUCT_ID 0xB1E5 +#define DEVICE_VER 0x0001 +#define MANUFACTURER KPrepublic +#define PRODUCT Cospad + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 4 + +/* + * 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 { D0, D1, D2, D3, D4, D5 } +#define MATRIX_COL_PINS { F0, F1, E6, C7 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +#define LED_NUM_LOCK_PIN B2 +#define LED_PIN_ON_STATE 0 + +#define BACKLIGHT_PIN F7 +// #define BACKLIGHT_BREATHING +#define BACKLIGHT_LEVELS 3 +#define BACKLIGHT_ON_STATE 0 + +#define RGB_DI_PIN F6 +#ifdef RGB_DI_PIN + #define RGBLED_NUM 4 +// #define RGBLIGHT_HUE_STEP 8 +// #define RGBLIGHT_SAT_STEP 8 +// #define RGBLIGHT_VAL_STEP 8 +// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +// /*== all animations enable ==*/ + #define RGBLIGHT_ANIMATIONS +// /*== or choose animations ==*/ +// #define RGBLIGHT_EFFECT_BREATHING +// #define RGBLIGHT_EFFECT_RAINBOW_MOOD +// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL +// #define RGBLIGHT_EFFECT_SNAKE +// #define RGBLIGHT_EFFECT_KNIGHT +// #define RGBLIGHT_EFFECT_CHRISTMAS +// #define RGBLIGHT_EFFECT_STATIC_GRADIENT +// #define RGBLIGHT_EFFECT_RGB_TEST +// #define RGBLIGHT_EFFECT_ALTERNATING +// /*== customize breathing effect ==*/ +// /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +// #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +// /*==== use exp() and sin() ====*/ +// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is userful for the Windows task manager shortcut (ctrl+shift+esc). + */ +// #define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +// #define BOOTMAGIC_LITE_ROW 0 +// #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/cospad/cospad.c b/keyboards/kprepublic/cospad/cospad.c similarity index 100% rename from keyboards/cospad/cospad.c rename to keyboards/kprepublic/cospad/cospad.c diff --git a/keyboards/cospad/cospad.h b/keyboards/kprepublic/cospad/cospad.h similarity index 86% rename from keyboards/cospad/cospad.h rename to keyboards/kprepublic/cospad/cospad.h index f5ae8961f1d5..1e3b6c42760d 100644 --- a/keyboards/cospad/cospad.h +++ b/keyboards/kprepublic/cospad/cospad.h @@ -125,6 +125,37 @@ { k50, ___, k52, ___ } \ } +/* 6x4 numpad layout with split Plus + * ,-------------------. + * | 00 | 01 | 02 | 03 | + * |----|----|----|----| + * | 10 | 11 | 12 | 13 | + * |----|----|----|----| + * | 20 | 21 | 22 | 23 | + * |----|----|----|----| + * | 30 | 31 | 32 | 33 | + * |----|----|----|----| + * | 40 | 41 | 42 | | + * |----|----|----| 43 | + * | 50 | 52 | | + * `-------------------' + */ +#define LAYOUT_numpad_6x4_split_plus( \ + k00, k01, k02, k03, \ + k10, k11, k12, k13, \ + k20, k21, k22, k23, \ + k30, k31, k32, k33, \ + k40, k41, k42, \ + k50, k52, k43 \ +) \ +{ \ + { k00, k01, k02, k03 }, \ + { k10, k11, k12, k13 }, \ + { k20, k21, k22, k23 }, \ + { k30, k31, k32, k33 }, \ + { k40, k41, k42, k43 }, \ + { k50, ___, k52, ___ } \ +} /* 6x4 numpad with split Plus and 0 keys * ,-------------------. diff --git a/keyboards/kprepublic/cospad/info.json b/keyboards/kprepublic/cospad/info.json new file mode 100644 index 000000000000..bba19a437942 --- /dev/null +++ b/keyboards/kprepublic/cospad/info.json @@ -0,0 +1,196 @@ +{ + "keyboard_name": "Cospad", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_ortho_6x4": { + "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}, + + {"x":0, "y":5}, + {"x":1, "y":5}, + {"x":2, "y":5}, + {"x":3, "y":5} + ] + }, + "LAYOUT_gamepad_6x4": { + "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":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":2, "h":2}, + + {"x":0, "y":4}, + {"x":1, "y":4}, + {"x":2, "y":4}, + {"x":3, "y":4}, + + {"x":0, "y":5}, + {"x":1, "y":5}, + {"x":2, "y":5}, + {"x":3, "y":5} + ] + }, + "LAYOUT_numpad_6x4": { + "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":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":2, "h":2}, + + {"x":0, "y":4}, + {"x":1, "y":4}, + {"x":2, "y":4}, + + {"x":0, "y":5, "w":2}, + {"x":2, "y":5}, + {"x":3, "y":4, "h":2} + ] + }, + "LAYOUT_numpad_6x4_split_plus": { + "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":0, "y":5, "w":2}, + {"x":2, "y":5}, + {"x":3, "y":4, "h":2} + ] + }, + "LAYOUT_numpad_6x4_split_plus_zero": { + "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":0, "y":5}, + {"x":1, "y":5}, + {"x":2, "y":5}, + {"x":3, "y":4, "h":2} + ] + }, + "LAYOUT_numpad_6x4_split_zero": { + "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":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":2, "h":2}, + + {"x":0, "y":4}, + {"x":1, "y":4}, + {"x":2, "y":4}, + + {"x":0, "y":5}, + {"x":1, "y":5}, + {"x":2, "y":5}, + {"x":3, "y":4, "h":2} + ] + } + } +} diff --git a/keyboards/cospad/keymaps/default/keymap.c b/keyboards/kprepublic/cospad/keymaps/default/keymap.c similarity index 100% rename from keyboards/cospad/keymaps/default/keymap.c rename to keyboards/kprepublic/cospad/keymaps/default/keymap.c diff --git a/keyboards/kprepublic/cospad/keymaps/detrus/keymap.c b/keyboards/kprepublic/cospad/keymaps/detrus/keymap.c new file mode 100644 index 000000000000..af56305e5cea --- /dev/null +++ b/keyboards/kprepublic/cospad/keymaps/detrus/keymap.c @@ -0,0 +1,367 @@ +#include QMK_KEYBOARD_H +#include "led.h" +#include + +#ifdef RGBLIGHT_ENABLE +#include "rgblight.h" +#endif + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +enum cospad_layers { + _QWERTY_LAYER, + _QWERTZ_LAYER, + _COLEMA_LAYER, + _DVORAK_LAYER, + _QWERTY_LOWER_LAYER, + _QWERTZ_LOWER_LAYER, + _COLEMA_LOWER_LAYER, + _DVORAK_LOWER_LAYER, + _RAISE_LAYER, + _ALTER_LAYER, +}; + +// To switch the default layer used for the layout, there are special keycodes. +// Which onces detected below serve to switch it. +enum cospad_keycodes { + QWERTY = SAFE_RANGE, + QWERTZ, + COLEMAK, + DVORAK +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* Keymap _QWERTY_LAYER: Default layer + * ,-----------------------. + * | T | G | B | Alt | + * |-----|-----|-----|-----| + * | R | F | V | LOW | + * |-----|-----|-----|-----| + * | E | D | C | | + * |-----|-----|-----| Spc | + * | W | S | X | | + * |-----|-----|-----|-----| + * | Q | A | Z | RAI | + * |-----|-----|-----|-----| + * | Esc | Tab | Sft | Ctl | + * `-----------------------' + * + * And it's LOWER layer + * ,-----------------------. + * | P | ; | / | Alt | + * |-----|-----|-----|-----| + * | O | L | . | LOW | + * |-----|-----|-----|-----| + * | I | K | , | | + * |-----|-----|-----| Ent | + * | U | J | M | | + * |-----|-----|-----|-----| + * | Y | H | N | RAI | + * |-----|-----|-----|-----| + * | Esc | Tab | Sft | Ctl | + * `-----------------------' + */ + [_QWERTY_LAYER] = LAYOUT_gamepad_6x4( + KC_T, KC_G, KC_B, KC_LALT, \ + KC_R, KC_F, KC_V, MO(_QWERTY_LOWER_LAYER),\ + KC_E, KC_D, KC_C, \ + KC_W, KC_S, KC_X, KC_SPACE, \ + KC_Q, KC_A, KC_Z, MO(_RAISE_LAYER),\ + KC_GESC, KC_TAB, KC_LSFT, KC_LCTRL), + [_QWERTY_LOWER_LAYER] = LAYOUT_gamepad_6x4( + KC_P, KC_SCLN, KC_SLSH, KC_LALT, \ + KC_O, KC_L, KC_DOT, _______, \ + KC_I, KC_K, KC_COMM, \ + KC_U, KC_J, KC_M, KC_ENTER, \ + KC_Y, KC_H, KC_N, _______, \ + _______, _______, _______, _______), + + + + /* Keymap _QWERTZ_LAYER: Alternate default layer + * ,-----------------------. + * | T | G | B | Alt | + * |-----|-----|-----|-----| + * | R | F | V | LOW | + * |-----|-----|-----|-----| + * | E | D | C | | + * |-----|-----|-----| Spc | + * | W | S | X | | + * |-----|-----|-----|-----| + * | Q | A | Y | RAI | + * |-----|-----|-----|-----| + * | Esc | Tab | Sft | Ctl | + * `-----------------------' + * + * And it's LOWER layer + * ,-----------------------. + * | P | ; | / | Alt | + * |-----|-----|-----|-----| + * | O | L | > | LOW | + * |-----|-----|-----|-----| + * | I | K | < | | + * |-----|-----|-----| Ent | + * | U | J | M | | + * |-----|-----|-----|-----| + * | Z | H | N | RAI | + * |-----|-----|-----|-----| + * | Esc | Tab | Sft | Ctl | + * `-----------------------' + */ + [_QWERTZ_LAYER] = LAYOUT_gamepad_6x4( + KC_T, KC_G, KC_B, KC_LALT, \ + KC_R, KC_F, KC_V, MO(_QWERTZ_LOWER_LAYER),\ + KC_E, KC_D, KC_C, \ + KC_W, KC_S, KC_X, KC_SPACE, \ + KC_Q, KC_A, KC_Y, MO(_RAISE_LAYER),\ + KC_GESC, KC_TAB, KC_LSFT, KC_LCTRL), + [_QWERTZ_LOWER_LAYER] = LAYOUT_gamepad_6x4( + KC_P, KC_SCLN, KC_SLSH, KC_LALT, \ + KC_O, KC_L, KC_DOT, _______, \ + KC_I, KC_K, KC_COMM, \ + KC_U, KC_J, KC_M, KC_ENTER, \ + KC_Z, KC_H, KC_N, _______, \ + _______, _______, _______, _______), + + + + /* Keymap _COLEMA_LAYER: Alternate default layer + * ,-----------------------. + * | G | D | B | Alt | + * |-----|-----|-----|-----| + * | P | T | V | LOW | + * |-----|-----|-----|-----| + * | F | S | C | | + * |-----|-----|-----| Spc | + * | W | R | X | | + * |-----|-----|-----|-----| + * | Q | A | Z | RAI | + * |-----|-----|-----|-----| + * | Esc | Tab | Sft | Ctl | + * `-----------------------' + * + * And it's LOWER layer + * ,-----------------------. + * | ; | O | / | Alt | + * |-----|-----|-----|-----| + * | Y | I | . | LOW | + * |-----|-----|-----|-----| + * | U | E | , | | + * |-----|-----|-----| Ent | + * | L | N | M | | + * |-----|-----|-----|-----| + * | J | H | K | RAI | + * |-----|-----|-----|-----| + * | Esc | Tab | Sft | Ctl | + * `-----------------------' + */ + [_COLEMA_LAYER] = LAYOUT_gamepad_6x4( + KC_T, KC_D, KC_B, KC_LALT, \ + KC_R, KC_T, KC_V, MO(_COLEMA_LOWER_LAYER),\ + KC_E, KC_S, KC_C, \ + KC_W, KC_R, KC_X, KC_SPACE, \ + KC_Q, KC_A, KC_Z, MO(_RAISE_LAYER),\ + KC_GESC, KC_TAB, KC_LSFT, KC_LCTRL), + [_COLEMA_LOWER_LAYER] = LAYOUT_gamepad_6x4( + KC_SCLN, KC_O, KC_SLSH, _______, \ + KC_Y, KC_I, KC_DOT, _______, \ + KC_U, KC_E, KC_COMM, \ + KC_L, KC_N, KC_M, KC_ENTER, \ + KC_J, KC_H, KC_K, _______, \ + KC_F, KC_G, _______, _______), + + + + /* Keymap _DVORAK_LAYER: Alternate default layer + * ,-----------------------. + * | Y | I | X | Alt | + * |-----|-----|-----|-----| + * | P | U | K | LOW | + * |-----|-----|-----|-----| + * | . | E | J | | + * |-----|-----|-----| Spc | + * | , | O | Q | | + * |-----|-----|-----|-----| + * | ' | A | ; | RAI | + * |-----|-----|-----|-----| + * | Esc | Tab | Sft | Ctl | + * `-----------------------' + * + * And it's LOWER layer + * ,-----------------------. + * | L | S | Z | Alt | + * |-----|-----|-----|-----| + * | R | N | V | LOW | + * |-----|-----|-----|-----| + * | C | T | W | | + * |-----|-----|-----| Ent | + * | G | H | M | | + * |-----|-----|-----|-----| + * | F | D | B | RAI | + * |-----|-----|-----|-----| + * | Esc | Tab | Sft | Ctl | + * `-----------------------' + */ + [_DVORAK_LAYER] = LAYOUT_gamepad_6x4( + KC_Y, KC_I, KC_X, KC_LALT, \ + KC_P, KC_U, KC_K, MO(_DVORAK_LOWER_LAYER),\ + KC_DOT, KC_E, KC_J, \ + KC_COMM, KC_O, KC_A, KC_SPACE, \ + KC_QUOT, KC_A, KC_SCLN, MO(_RAISE_LAYER),\ + KC_GESC, KC_TAB, KC_LSFT, KC_LCTRL), + [_DVORAK_LOWER_LAYER] = LAYOUT_gamepad_6x4( + KC_L, KC_S, KC_Z, KC_LALT, \ + KC_R, KC_N, KC_V, _______, \ + KC_C, KC_T, KC_W, \ + KC_G, KC_H, KC_M, KC_ENTER,\ + KC_F, KC_D, KC_B, _______, \ + _______, _______, _______, _______), + + + + /* Keymap _RAISE_LAYER: Additional layer to access more + * ,-----------------------. + * | 5 | 0 | del | Alt | + * |-----|-----|-----|-----| + * | 4 | 9 | -> | LOW | + * |-----|-----|-----|-----| + * | 3 | 8 | <- | | + * |-----|-----|-----| Spc | + * | 2 | 7 | -> | | + * |-----|-----|-----|-----| + * | 1 | 6 | <- | RAI | + * |-----|-----|-----|-----| + * | Esc | Tab | Sft | Ctl | + * `-----------------------' + */ + [_RAISE_LAYER] = LAYOUT_gamepad_6x4( + KC_5, KC_0, KC_BSPC, _______, \ + KC_4, KC_9, KC_RIGHT, _______, \ + KC_3, KC_8, KC_UP, \ + KC_2, KC_7, KC_DOWN, _______, \ + KC_1, KC_6, KC_LEFT, _______, \ + _______, _______, _______, _______), + + + + /* Keymap _ALTER_LAYER: Function layer used to control the Leds + * and use media buttons + * ,----------------------------------------. + * | Val Dec | Bl Toggle | Qwertz | Super | + * |---------|------------|---------|-------| + * | Val Inc | Bl Off | Qwerty | | + * |---------|------------|---------|-------| + * | Sat Dec | Bl On | Colemak | | + * |---------|------------|---------| | + * | Sat Inc | RGB Toggle | Dvorak | | + * |---------|------------|---------|-------| + * | Hue Dec | RGB Next | Vol Dwn | | + * |---------|------------|---------|-------| + * | Hue Inc | RGB Prev | Vol Up | Reset | + * `----------------------------------------' + */ + [_ALTER_LAYER] = LAYOUT_gamepad_6x4( + RGB_VAD, BL_TOGG, QWERTZ, KC_LGUI, \ + RGB_VAI, BL_OFF, QWERTY, _______, \ + RGB_SAD, BL_ON, COLEMAK, \ + RGB_SAI, RGB_TOG, DVORAK, _______, \ + RGB_HUD, RGB_MOD, KC_VOLD, _______, \ + RGB_HUI, RGB_RMOD, KC_VOLU, RESET), +}; + +// Makes sure to update the good tri-layer if a layer changes +layer_state_t layer_state_set_user(layer_state_t state) { + switch (biton32(default_layer_state)) { + case _QWERTY_LAYER: + state = update_tri_layer_state(state, _RAISE_LAYER, _QWERTY_LOWER_LAYER, _ALTER_LAYER); + break; + case _QWERTZ_LAYER: + state = update_tri_layer_state(state, _RAISE_LAYER, _QWERTZ_LOWER_LAYER, _ALTER_LAYER); + break; + case _COLEMA_LAYER: + state = update_tri_layer_state(state, _RAISE_LAYER, _COLEMA_LOWER_LAYER, _ALTER_LAYER); + break; + case _DVORAK_LAYER: + state = update_tri_layer_state(state, _RAISE_LAYER, _DVORAK_LOWER_LAYER, _ALTER_LAYER); + break; + } + return state; +} + +// Makes the tri-layer +uint32_t default_layer_state_set_kb(uint32_t state) { + switch (biton32(state)) { + case _QWERTY_LAYER: + state = update_tri_layer_state(state, _RAISE_LAYER, _QWERTZ_LOWER_LAYER, _ALTER_LAYER); + state = update_tri_layer_state(state, _RAISE_LAYER, _COLEMA_LOWER_LAYER, _ALTER_LAYER); + state = update_tri_layer_state(state, _RAISE_LAYER, _DVORAK_LOWER_LAYER, _ALTER_LAYER); + layer_move(_QWERTY_LAYER); + break; + case _QWERTZ_LAYER: + state = update_tri_layer_state(state, _RAISE_LAYER, _QWERTY_LOWER_LAYER, _ALTER_LAYER); + state = update_tri_layer_state(state, _RAISE_LAYER, _COLEMA_LOWER_LAYER, _ALTER_LAYER); + state = update_tri_layer_state(state, _RAISE_LAYER, _DVORAK_LOWER_LAYER, _ALTER_LAYER); + layer_move(_QWERTZ_LAYER); + break; + case _COLEMA_LAYER: + state = update_tri_layer_state(state, _RAISE_LAYER, _QWERTY_LOWER_LAYER, _ALTER_LAYER); + state = update_tri_layer_state(state, _RAISE_LAYER, _QWERTZ_LOWER_LAYER, _ALTER_LAYER); + state = update_tri_layer_state(state, _RAISE_LAYER, _DVORAK_LOWER_LAYER, _ALTER_LAYER); + layer_move(_COLEMA_LAYER); + break; + case _DVORAK_LAYER: + state = update_tri_layer_state(state, _RAISE_LAYER, _QWERTY_LOWER_LAYER, _ALTER_LAYER); + state = update_tri_layer_state(state, _RAISE_LAYER, _QWERTZ_LOWER_LAYER, _ALTER_LAYER); + state = update_tri_layer_state(state, _RAISE_LAYER, _COLEMA_LOWER_LAYER, _ALTER_LAYER); + layer_move(_DVORAK_LAYER); + break; + } + return state; +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case BL_TOGG: + if (record->event.pressed) { + cospad_bl_led_togg(); + } + return false; + case BL_ON: + if (record->event.pressed) { + cospad_bl_led_on(); + } + return false; + case BL_OFF: + if (record->event.pressed) { + cospad_bl_led_off(); + } + return false; + case QWERTY: + if (record->event.pressed) { + set_single_persistent_default_layer(_QWERTY_LAYER); + print("switched to QWERTY layout\n"); + } + return false; + break; + case QWERTZ: + if (record->event.pressed) { + set_single_persistent_default_layer(_QWERTZ_LAYER); + } + return false; + break; + case COLEMAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_COLEMA_LAYER); + } + return false; + break; + case DVORAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_DVORAK_LAYER); + } + return false; + break; + default: + return true; + } +} diff --git a/keyboards/cospad/keymaps/split_plus_and_zero/keymap.c b/keyboards/kprepublic/cospad/keymaps/split_plus_and_zero/keymap.c similarity index 100% rename from keyboards/cospad/keymaps/split_plus_and_zero/keymap.c rename to keyboards/kprepublic/cospad/keymaps/split_plus_and_zero/keymap.c diff --git a/keyboards/cospad/keymaps/split_zero/keymap.c b/keyboards/kprepublic/cospad/keymaps/split_zero/keymap.c similarity index 100% rename from keyboards/cospad/keymaps/split_zero/keymap.c rename to keyboards/kprepublic/cospad/keymaps/split_zero/keymap.c diff --git a/keyboards/cospad/keymaps/via/keymap.c b/keyboards/kprepublic/cospad/keymaps/via/keymap.c similarity index 100% rename from keyboards/cospad/keymaps/via/keymap.c rename to keyboards/kprepublic/cospad/keymaps/via/keymap.c diff --git a/keyboards/kprepublic/cospad/keymaps/via/rules.mk b/keyboards/kprepublic/cospad/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/kprepublic/cospad/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/kprepublic/cospad/readme.md b/keyboards/kprepublic/cospad/readme.md new file mode 100644 index 000000000000..70f9658cfccf --- /dev/null +++ b/keyboards/kprepublic/cospad/readme.md @@ -0,0 +1,18 @@ +# Cospad + +A DIY keypad kit sold by KPRepublic, runs TKG natively. + +* Keyboard Maintainer: QMK Community +* Hardware Supported: Cospad PCB +* Hardware Availability: [KPrepublic on Aliexpress](https://aliexpress.com/item/cospad-Custom-Mechanical-Keyboard-Kit-up-tp-24-keys-Supports-TKG-TOOLS-Underglow-RGB-PCB-20/32818383873.html) + +Supported Layouts: + +![Numpad layouts](https://i.imgur.com/t03lXJ4.png) +![Ortholinear layouts](https://i.imgur.com/mliUcCc.png) + +Make example for this keyboard (after setting up your build environment): + + make kprepublic/cospad: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/kprepublic/cospad/rules.mk b/keyboards/kprepublic/cospad/rules.mk new file mode 100644 index 000000000000..c0940be51821 --- /dev/null +++ b/keyboards/kprepublic/cospad/rules.mk @@ -0,0 +1,21 @@ +# 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 +# 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 = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +LAYOUTS = numpad_6x4 ortho_6x4 diff --git a/keyboards/kprepublic/jj40/config.h b/keyboards/kprepublic/jj40/config.h new file mode 100644 index 000000000000..c42b247d1aac --- /dev/null +++ b/keyboards/kprepublic/jj40/config.h @@ -0,0 +1,50 @@ +/* +Copyright 2017 Luiz Ribeiro +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +#define VENDOR_ID 0x4B50 // "KP" +#define PRODUCT_ID 0x0040 +#define DEVICE_VER 0x0200 +#define MANUFACTURER KPrepublic +#define PRODUCT JJ40 + +/* matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 +#define MATRIX_ROW_PINS { B0, B1, B3, B4 } +#define MATRIX_COL_PINS { C4, C5, C6, C7, A4, A5, A6, A7, A3, A2, A1, A0 } + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +#define BACKLIGHT_PIN D4 +#define BACKLIGHT_LEVELS 12 +#define BACKLIGHT_BREATHING + +/* RGB underglow */ +// NOTE: for PS2AVRGB boards, underglow commands are sent via I2C to 0xB0. +#define RGBLED_NUM 5 +#define RGBLIGHT_ANIMATIONS + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +#define USB_MAX_POWER_CONSUMPTION 100 + +/* Bootmagic Lite key configuration */ +// #define BOOTMAGIC_LITE_ROW 0 +// #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/kprepublic/jj40/info.json b/keyboards/kprepublic/jj40/info.json new file mode 100644 index 000000000000..4b7c527ba973 --- /dev/null +++ b/keyboards/kprepublic/jj40/info.json @@ -0,0 +1,18 @@ +{ + "keyboard_name": "jj40", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_planck_mit": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3, "w":2}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}] + }, + + "LAYOUT_ortho_4x12": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}] + }, + + "LAYOUT_planck_1x2uR": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3, "w":2}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}] + } + } +} diff --git a/keyboards/jj40/jj40.c b/keyboards/kprepublic/jj40/jj40.c similarity index 100% rename from keyboards/jj40/jj40.c rename to keyboards/kprepublic/jj40/jj40.c diff --git a/keyboards/jj40/jj40.h b/keyboards/kprepublic/jj40/jj40.h similarity index 100% rename from keyboards/jj40/jj40.h rename to keyboards/kprepublic/jj40/jj40.h diff --git a/keyboards/kprepublic/jj40/keymaps/ajp10304/readme.md b/keyboards/kprepublic/jj40/keymaps/ajp10304/readme.md new file mode 100644 index 000000000000..8a7562d7422a --- /dev/null +++ b/keyboards/kprepublic/jj40/keymaps/ajp10304/readme.md @@ -0,0 +1,117 @@ +# AJP10304 Custom JJ40 Layout +# Also available for the Planck, Shark, Quark and Atreus50 + +**Note:** In the tables below where there are two characters on a key, +the second is the output when shift is applied. + +**Note:** The below tables assume a UK layout. + +#### Flashing +Refer to the README.md of the keyboard you want to flash. + +##### Main Qwerty Layer + +* Tab: when held, operates as shift. +* Enter: when held, operates as shift. +* MENU: perform right-click + +| | | | | | | | | | | | | +| ---- |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| ----:| +| Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp | +| Tab | A | S | D | F | G | H | J | K | L | ;: | Enter| +| Shft | Z | X | C | V | B | N | M | ,< | .> | /? | Shft | +| Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Raise | Shift| MENU | Ctrl | Fn2 | + +##### Function Layer +Activated when `fn` held in the above `qwerty` layer. + +| | | | | | | | | | | | | +| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| +| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | +| 1! | 2" | 3£ | 4$ | 5% | 6^ | 7& | 8* | 9( | 0) | ~ |INSERT| +| Shift | \| | `¬ | #~ | * | -_ | =+ | \| | [{ | ]} | '@ |Shift | +| Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Mouse | MENU | Alt | Ctrl | Fn2 | + +##### Lower Layer +Activated when `Lower` is held in the above `qwerty` layer. + +* Numbers are along the top row, their shifted counterparts are on row 2. +* WrdBks: `backspace` with `ctrl` applied. I.e. delete a word. +* WrdDel: `delete` with `ctrl` applied. I.e. forward delete a word. + +| | | | | | | | | | | | | +| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| +| 1! | 2" | 3£ | 4$ | 5% | 6^ | 7& | 8* | 9( | 0) | DEL | Bksp | +| ! | " | £ | $ | % | ^ | & | * | ( | ) |WrdDel|WrdBks| +| Shift | \| | `¬ | #~ | '@ | -_ | =+ | #~ | [{ | ]} | '@ |Shift | +| | | | |Lower | Del |Space | | Next | Vol- | Vol+ | Play | + +##### Raise Layer +Activated when `Raise` is held in the above `qwerty` layer. + +* Preferred layer for typing brackets. +* Allows for cursor navigation to be used solely with the right hand. +* WRDSEL: Select the word where the cursor is. +* |< and >|: Apply `ctrl` to `left` and `right` respectively for word jumping. + +| | | | | | | | | | | | | +| :---: |:----:| :---:| :---:| :---:| :---:| :---: | :---:| :---:| :---:| :---: | :---:| +| ` | |WRDSEL| [ | ] | | | PGUP | HOME |PGDOWN| |PRNTSC| +| ` | | | ( | ) | | | HOME | UP | END | |ZOOM +| +| | | | { | } | ||<| LEFT | DOWN |RIGHT |>||ZOOM -| +| Mouse | | | | | Alt | Enter |Raise | | | | | + +##### Lower + Raise +Activated when `Lower` and `Raise` are held together in the above `qwerty` layer. + +* Audio controls in the same position as cursor keys from the `Raise` layer. +* ????: Runs a macro for outputting a text string. Do not use this store passwords. +* Reset: Enter bootloader for flashing firmware to the keyboard. +* CAPS: Toggle caps lock. +* Macro functions: Allows recording of macros. To start recording the macro, press either REC1 or REC2. +To finish the recording, press STOP. To replay the macro, press either PLAY1 or PLAY2. +* MAC: Toggle MAC OS extensions to layers. This allows MLWR to be enabled with LOWER, +MRSE with RAISE, MFNC with FUNC and MFNC2 with FUNC2 respectively. + +| | | | | | | | | | | | | +| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| +| ???? | Reset|Qwerty| | | REC1 | REC2 | | | | | Del | +| CAPS | | | | | PLAY1|PLAY2 | Mute | Vol+ | Play | | | +| MAC | | | | | STOP1|STOP2 | Prev | Vol- | Next | | | +| | | | | | | | | DYN | | | | + +##### Function 2 Layer +Activated when `fn` held in the above `qwerty` layer. +* WRDSEL: Select the word where the cursor is. +* LNDEL: Delete the line where the cursor is. +* LNSEL: Select the line where the cursor is. +* DUP: Duplicate the selected text. +* LNJOIN: Join the line where the cursor is with the following line. +* MODE: Print either `PC` or `OSX` depending on what layer mode is active. + +| | | | | | | | | | | | | +| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| +| | |WRDSEL| | | | LNDEL| | | | | | +| | | LNSEL| DUP | | | | |LNJOIN| | | | +| | UNDO | CUT | COPY | PASTE| | | | | | | MODE | +| | | | | | | | | | | | | + +##### Mouse Layer +Activated when `fn` and `raise` held together. + +| | | | | | | | | | | | | +| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| +| ESC | | | | | | W_L | W_UP | BTN3 | W_DWN| W_R | | +| ACC0 | ACC1 | ACC2 | | | | | BTN1 | UP | BTN2 | | | +| ACC0 | ACC1 | ACC2 | | | | | LEFT | DOWN | RIGHT| | | +| | | | | | | | | | | | | + +##### Number Pad Layout +Activated when holding `Esc` key. + +| | | | | | | | | | | | | +| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| +| | | | | | |NMLOCK| 7 | 8 | 9 | / | | +| | | | | | | | 4 | 5 | 6 | * | | +| | | | | | | | 1 | 2 | 3 | + | | +| | | | | | | | 0 | . | , | - | | diff --git a/keyboards/jj40/keymaps/cockpit/keymap.c b/keyboards/kprepublic/jj40/keymaps/cockpit/keymap.c similarity index 100% rename from keyboards/jj40/keymaps/cockpit/keymap.c rename to keyboards/kprepublic/jj40/keymaps/cockpit/keymap.c diff --git a/keyboards/kprepublic/jj40/keymaps/cockpit/readme.md b/keyboards/kprepublic/jj40/keymaps/cockpit/readme.md new file mode 100644 index 000000000000..340c6924ee11 --- /dev/null +++ b/keyboards/kprepublic/jj40/keymaps/cockpit/readme.md @@ -0,0 +1,55 @@ +# Cockpit custom layout + +> This configuration is built around Lithuanian keyboard layout, but you can easily modify it to fit your needs + +## Layers + +### Default QWERTY + +| | | | | | | | | | | | | +| :-------: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :-------: | +|
Esc | Q
q | W
w | E
e | R
r | T
t | Y
y | U
u | I
i | O
o | P
p |
Bksp | +|
Tab | A
a | S
s | D
d | F
f | G
g | H
h | J
j | K
k | L
l | :
; | "
' | +|
Shift | Z
z | X
x | C
c | V
v | B
b | N
n | M
m | <
, | >
. | ?
/ |
Enter | +| Ctrl | Fn | GUI | Alt | Lower | Sp | ace | Raise | Left | Down | Up | Right | + +### Lower + +| | | | | | | | | | | | | +| :-------: | :----: | :----: | :----: | :-------: | :----: | :----: | :----: | :----: | :----: | :-----: | :------: | +| ~
\` | Ą
ą | Č
č | Ę
ę | Ė
ė | Į
į | Š
š | Ų
ų | Ū
ū | Ž
ž | \_
- |
Bksp | +|
Tab |
! |
@ |
# |
\$ |
% |
^ |
& |
\* |
( |
) |
Del | +|
Shift |
= |
+ |
- |
\| | {
[ | }
] |
< |
> |
{ |
} |
Ins | +| Ctrl | | | Alt | **Lower** | Sp | ace | | Home | PgDn | PgUp | End | + +### Raise + +| | | | | | | | | | | | | +| :-------: | :-----: | :-----: | :----: | :-----: | :----: | :----: | :-------: | :-----: | :----: | :----: | :-------: | +| ~
\` | !
1 | @
2 | #
3 | \$
4 | %
5 | ^
6 | &
7 | \*
8 | (
9 | )
0 |
Bksp | +|
Tab | \$
4 | %
5 | ^
6 | | | | | | | | \|
\ | +|
Shift | &
7 | \*
8 | (
9 | )
0 | | | | <
, | >
. | ?
/ |
Enter | +| Ctrl | | | Alt | | Sp | ace | **Raise** | Left | Down | Up | Right | + +### Function + +- Backlight breathing does not work. +- **Term** button is bound to `Calculator`. I have set this button as a shortcut to open a terminal. +- **Lock** is a shortcut for `Alt + L` + +| | | | | | | | | | | | | +| :-------: | :---------: | :---------: | :---------: | :---------: | :--------: | :----------: | :--------: | :----: | :---------: | :-----: | :------: | +|
F1 |
F2 |
F3 |
F4 |
F5 |
F6 |
F7 |
F8 |
F9 |
F10 |
F11 |
F12 | +|
Caps | RGB
Togl | RGB
Hue+ | RGB
Sat+ | RGB
Brt+ | BL
Togl | BL
Breath | BL
Brt+ | | Scr
Brt+ | |
Vol+ | +|
Shift |
Term | RGB
Hue- | RGB
Sat- | RGB
Brt- | WWW
< | WWW
> | BL
Brt- | | Scr
Brt- | PrScr |
Vol- | +| Ctrl | **Fn** | RGB
Mode | Alt | | Sp | ace | MPrev | MStop | MNext | MPlay | Lock | + +## Usage + +```bash +cd qmk_firmware +make kprepublic/jj40:cockpit +bootloadHID .build/kprepublic_jj40_cockpit.hex +``` + +_if you're getting permission errors use sudo_ diff --git a/keyboards/jj40/keymaps/default/keymap.c b/keyboards/kprepublic/jj40/keymaps/default/keymap.c similarity index 100% rename from keyboards/jj40/keymaps/default/keymap.c rename to keyboards/kprepublic/jj40/keymaps/default/keymap.c diff --git a/keyboards/jj40/keymaps/fun40/config.h b/keyboards/kprepublic/jj40/keymaps/fun40/config.h similarity index 100% rename from keyboards/jj40/keymaps/fun40/config.h rename to keyboards/kprepublic/jj40/keymaps/fun40/config.h diff --git a/keyboards/jj40/keymaps/fun40/keymap.c b/keyboards/kprepublic/jj40/keymaps/fun40/keymap.c similarity index 100% rename from keyboards/jj40/keymaps/fun40/keymap.c rename to keyboards/kprepublic/jj40/keymaps/fun40/keymap.c diff --git a/keyboards/jj40/keymaps/fun40/readme.md b/keyboards/kprepublic/jj40/keymaps/fun40/readme.md similarity index 100% rename from keyboards/jj40/keymaps/fun40/readme.md rename to keyboards/kprepublic/jj40/keymaps/fun40/readme.md diff --git a/keyboards/kprepublic/jj40/keymaps/fun40/rules.mk b/keyboards/kprepublic/jj40/keymaps/fun40/rules.mk new file mode 100644 index 000000000000..cc9508d7d6f2 --- /dev/null +++ b/keyboards/kprepublic/jj40/keymaps/fun40/rules.mk @@ -0,0 +1,21 @@ + + +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = yes # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID + +RGBLIGHT_ENABLE = yes +RGBLIGHT_CUSTOM_DRIVER = yes +DISABLE_WS2812 = yes + + +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + diff --git a/keyboards/jj40/keymaps/krusli/config.h b/keyboards/kprepublic/jj40/keymaps/krusli/config.h similarity index 100% rename from keyboards/jj40/keymaps/krusli/config.h rename to keyboards/kprepublic/jj40/keymaps/krusli/config.h diff --git a/keyboards/jj40/keymaps/krusli/keymap.c b/keyboards/kprepublic/jj40/keymaps/krusli/keymap.c similarity index 100% rename from keyboards/jj40/keymaps/krusli/keymap.c rename to keyboards/kprepublic/jj40/keymaps/krusli/keymap.c diff --git a/keyboards/jj40/keymaps/krusli/numpad.txt b/keyboards/kprepublic/jj40/keymaps/krusli/numpad.txt similarity index 100% rename from keyboards/jj40/keymaps/krusli/numpad.txt rename to keyboards/kprepublic/jj40/keymaps/krusli/numpad.txt diff --git a/keyboards/jj40/keymaps/krusli/readme.md b/keyboards/kprepublic/jj40/keymaps/krusli/readme.md similarity index 100% rename from keyboards/jj40/keymaps/krusli/readme.md rename to keyboards/kprepublic/jj40/keymaps/krusli/readme.md diff --git a/keyboards/jj40/keymaps/krusli/rules.mk b/keyboards/kprepublic/jj40/keymaps/krusli/rules.mk similarity index 100% rename from keyboards/jj40/keymaps/krusli/rules.mk rename to keyboards/kprepublic/jj40/keymaps/krusli/rules.mk diff --git a/keyboards/jj40/keymaps/oscillope/config.h b/keyboards/kprepublic/jj40/keymaps/oscillope/config.h similarity index 100% rename from keyboards/jj40/keymaps/oscillope/config.h rename to keyboards/kprepublic/jj40/keymaps/oscillope/config.h diff --git a/keyboards/jj40/keymaps/oscillope/keymap.c b/keyboards/kprepublic/jj40/keymaps/oscillope/keymap.c similarity index 100% rename from keyboards/jj40/keymaps/oscillope/keymap.c rename to keyboards/kprepublic/jj40/keymaps/oscillope/keymap.c diff --git a/keyboards/kprepublic/jj40/keymaps/oscillope/rules.mk b/keyboards/kprepublic/jj40/keymaps/oscillope/rules.mk new file mode 100644 index 000000000000..8cf85a5d64e1 --- /dev/null +++ b/keyboards/kprepublic/jj40/keymaps/oscillope/rules.mk @@ -0,0 +1,11 @@ +# build options +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no +EXTRAKEY_ENABLE = yes +CONSOLE_ENABLE = no +COMMAND_ENABLE = yes + +BACKLIGHT_ENABLE = no +RGBLIGHT_ENABLE = no + +KEY_LOCK_ENABLE = yes diff --git a/keyboards/kprepublic/jj40/keymaps/skewwhiffy/keymap.c b/keyboards/kprepublic/jj40/keymaps/skewwhiffy/keymap.c new file mode 100644 index 000000000000..e6eef65d500f --- /dev/null +++ b/keyboards/kprepublic/jj40/keymaps/skewwhiffy/keymap.c @@ -0,0 +1,219 @@ +/* Copyright 2017 Kenny Hung + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +#include "keymap_uk.h" + +// Layer shorthand +enum Layers { + cm, // colemak + dv, // dvorak + qw, // qwerty + nbl, // numbers left + nbr, // numbers right + syl, // symbols left + syr, // symbols right + nal, // navigation left + nar // navigation right +}; + +// Layer buttons +#define _Z_SFT SFT_T(UK_Z) +#define _SCLSH SFT_T(UK_SCLN) +#define _SLSH SFT_T(UK_SLSH) + +#define _X_NB LT(nbl, UK_X) +#define _Q_NB LT(nbl, UK_Q) +#define _DOT_NB LT(nbr, UK_DOT) +#define _V_NB LT(nbr, UK_V) +#define __NBL LT(nbl, _______) +#define __NBR LT(nbr, _______) + +#define _C_SY LT(syl, UK_C) +#define _J_SY LT(syl, UK_J) +#define _W_SY LT(syr, UK_W) +#define _COM_SY LT(syr, UK_COMM) +#define __SYL LT(syl, _______) +#define __SYR LT(syr, _______) + +#define _V_NAL LT(nal, UK_V) +#define _K_NAL LT(nal, UK_K) +#define _M_NAR LT(nar, UK_M) +#define __NAL LT(nal, _______) +#define __NAR LT(nar, _______) + +// Custom hotkeys +#define _TERM LCTL(UK_QUOT) // Hotkey for terminal +#define _S_TAB S(KC_TAB) +#define _C_LEFT LCTL(KC_LEFT) +#define _C_RGHT LCTL(KC_RGHT) +#define _A_LEFT LALT(KC_LEFT) +#define _A_RGHT LALT(KC_RGHT) + +// Custom hotkeys +#define _TERM LCTL(UK_QUOT) // Hotkey for terminal +#define _S_TAB S(KC_TAB) +#define _C_LEFT LCTL(KC_LEFT) +#define _C_RGHT LCTL(KC_RGHT) +#define _A_LEFT LALT(KC_LEFT) +#define _A_RGHT LALT(KC_RGHT) + +enum custom_keycodes { + IJ_OMN = SAFE_RANGE // IntelliJ Omnibox +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Colemak + * .-----------------------------------------------------------------------------------------------------------. + * | Q | W | F | P | G | | | J | L | U | Y | ; | + * |-----------------------------------------------------------------------------------------------------------| + * | A | R | S | T | D | | | H | N | E | I | O | + * |-----------------------------------------------------------------------------------------------------------| + * | Z | X | C | V | B | | | K | M | , | . | / | + * | SHIFT | NUMBER | SYMBOL | NAV | | | | | NAV | SYMBOL | FUNC | SHIFT | + * |-----------------------------------------------------------------------------------------------------------| + * | LSHIFT | LCTRL | LALT | LGUI | SPACE | ENT | DEL | BKSPC | RGUI | RALT | RCTRL | RSHIFT | + * .-----------------------------------------------------------------------------------------------------------. + */ + [cm] = LAYOUT_ortho_4x12( \ + UK_Q, UK_W, UK_F, UK_P, UK_G, _______, _______, UK_J, UK_L, UK_U, UK_Y, UK_SCLN, \ + UK_A, UK_R, UK_S, UK_T, UK_D, _______, _______, UK_H, UK_N, UK_E, UK_I, UK_O, \ + _Z_SFT, _X_NB, _C_SY, _V_NAL, UK_B, _______, _______, UK_K, _M_NAR, _COM_SY, _DOT_NB, _SLSH, \ + KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_ENT, KC_DEL, KC_BSPC, KC_RGUI, KC_RALT, KC_RCTL, KC_RSFT \ + ), + +/* Dvorak + * .-----------------------------------------------------------------------------------------------------------. + * | ' | , | . | P | Y | | | F | G | C | R | L | + * |-----------------------------------------------------------------------------------------------------------| + * | A | O | E | U | I | | | D | H | T | N | S | + * |-----------------------------------------------------------------------------------------------------------| + * | ; | Q | J | K | X | | | B | M | W | V | Z | + * | SHIFT | NUMBER | SYMBOL | NAV | | | | | NAV | SYMBOL | FUNC | SHIFT | + * |-----------------------------------------------------------------------------------------------------------| + * | | | | | | | | | | | | | + * |-----------------------------------------------------------------------------------------------------------| + */ + [dv] = LAYOUT_ortho_4x12( \ + UK_QUOT, UK_COMM, UK_DOT, UK_P, UK_Y, _______, _______, UK_F, UK_G, UK_C, UK_R, UK_L, \ + UK_A, UK_O, UK_E, UK_U, UK_I, _______, _______, UK_D, UK_H, UK_T, UK_N, UK_S, \ + _SCLSH, _Q_NB, _J_SY, _K_NAL, UK_X, _______, _______, UK_B, _M_NAR, _W_SY, _V_NB, _Z_SFT, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ + ), + +/* QWERTY + * .-----------------------------------------------------------------------------------------------------------. + * | Q | W | E | R | T | | | Y | U | I | O | P | + * |-----------------------------------------------------------------------------------------------------------| + * | A | S | D | F | G | | | H | J | K | L | ; | + * |-----------------------------------------------------------------------------------------------------------| + * | Z | X | C | V | B | | | N | M | , | . | / | + * | SHIFT | NUMBER | SYMBOL | NAV | | | | | NAV | SYMBOL | FUNC | SHIFT | + * |-----------------------------------------------------------------------------------------------------------| + * | | | | | | | | | | | | | + * .-----------------------------------------------------------------------------------------------------------. + */ + [qw] = LAYOUT_ortho_4x12( \ + UK_Q, UK_W, UK_E, UK_R, UK_T, _______, _______, UK_Y, UK_U, UK_I, UK_O, UK_P, \ + UK_A, UK_S, UK_D, UK_F, UK_G, _______, _______, UK_H, UK_J, UK_K, UK_L, UK_SCLN, \ + _Z_SFT, _X_NB, _C_SY, _V_NAL, UK_B, _______, _______, UK_N, _M_NAR, _COM_SY, _DOT_NB, _SLSH, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ + ), + +/* Numbers _NB + * .-----------------------------------------------------------------------------------------------------------. + * | | F7 | F8 | F9 | F10 | | | | 7 | 8 | 9 | | + * |-----------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | F4 | F5 | F6 | F11 | | | | 4 | 5 | 6 | | + * |-----------------+--------+--------+--------+--------+--------+--------+--------------------------+--------| + * | | F1 | F2 | F3 | F12 | | | 0 | 1 | 2 | 3 | . | + * |-----------------+--------+--------+--------+--------+--------+--------+-----------------+--------+--------| + * | | | | | | | | | | | | | + * '-----------------------------------------------------------------------------------------------------------' + */ + [nbl] = LAYOUT_ortho_4x12( \ + _______, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______, _______, UK_7, UK_8, UK_9, _______, \ + _______, KC_F4, KC_F5, KC_F6, KC_F11, _______, _______, _______, UK_4, UK_5, UK_6, _______, \ + _______, __NBL, KC_F2, KC_F3, KC_F12, _______, _______, UK_0, UK_1, UK_2, UK_3, UK_DOT, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ + ), + [nbr] = LAYOUT_ortho_4x12( \ + _______, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______, _______, UK_7, UK_8, UK_9, _______, \ + _______, KC_F4, KC_F5, KC_F6, KC_F11, _______, _______, _______, UK_4, UK_5, UK_6, _______, \ + _______, KC_F1, KC_F2, KC_F3, KC_F12, _______, _______, UK_0, UK_1, UK_2, __NBR, UK_DOT, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ + ), + +/* Symbols _SY + * .-----------------------------------------------------------------------------------------------------------. + * | ! | £ | _ | - | ~ | | | \ | { | } | / | # | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | $ | % | + | = | | | | " | ( | ) | ' | @ | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | ^ | & | * | | | | | | < | [ | ] | > | ` | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | | | | | | | | + * '-----------------------------------------------------------------------------------------------------------' + */ + [syl] = LAYOUT_ortho_4x12( \ + UK_EXLM, UK_PND, UK_UNDS, UK_MINS, UK_TILD, _______, _______, UK_BSLS, UK_LCBR, UK_RCBR, UK_SLSH, UK_HASH, \ + UK_DLR, UK_PERC, UK_PLUS, UK_EQL, _______, _______, _______, UK_DQUO, UK_LPRN, UK_RPRN, UK_QUOT, UK_AT, \ + UK_CIRC, UK_AMPR, __SYL, UK_PIPE, _______, _______, _______, UK_LABK, UK_LBRC, UK_RBRC, UK_RABK, UK_GRV, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ + ), + [syr] = LAYOUT_ortho_4x12( \ + UK_EXLM, UK_PND, UK_UNDS, UK_MINS, UK_TILD, _______, _______, UK_BSLS, UK_LCBR, UK_RCBR, UK_SLSH, UK_HASH, \ + UK_DLR, UK_PERC, UK_PLUS, UK_EQL, _______, _______, _______, UK_DQUO, UK_LPRN, UK_RPRN, UK_QUOT, UK_AT, \ + UK_CIRC, UK_AMPR, UK_ASTR, UK_PIPE, _______, _______, _______, UK_LABK, UK_LBRC, __SYR, UK_RABK, UK_GRV, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ + ), + +/* + * Navigation + * .-----------------------------------------------------------------------------------------------------------. + * | Esc | Ctrl L | Up | Ctrl R | RGB RMD| RGB HD | RGB HI | RGB_TG | PtSn | ScLk | Pause | DVORAK | + * +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | Tab | Left | Down | Right | RGB MD | RGB SD | RGB SI | COLEMAK| Insert | Home | PgUp | Term | + * +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | ShTab | Alt L | IJ Omni| Alt R | | RGB VD | RGB VI | | ScLk | End | PgDn | QWERTY | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | | | | | | | | + * '-----------------------------------------------------------------------------------------------------------' + */ + [nal] = LAYOUT_ortho_4x12( \ + KC_ESC, _C_LEFT, KC_UP, _C_RGHT, RGB_RMOD,RGB_HUD, RGB_HUI, RGB_TOG, KC_PSCR, KC_SLCK, KC_PAUS, DF(dv), \ + KC_TAB, KC_LEFT, KC_DOWN, KC_RGHT, RGB_MOD, RGB_SAD, RGB_SAI, DF(cm), KC_INS, KC_HOME, KC_PGUP, _TERM, \ + _S_TAB, _A_LEFT, IJ_OMN, __NAL, _______, RGB_VAD, RGB_VAI, _______, KC_SLCK, KC_END, KC_PGDN, DF(qw), \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ + ), + [nar] = LAYOUT_ortho_4x12( \ + KC_ESC, _C_LEFT, KC_UP, _C_RGHT, RGB_RMOD,RGB_HUD, RGB_HUI, RGB_TOG, KC_PSCR, KC_SLCK, KC_PAUS, DF(dv), \ + KC_TAB, KC_LEFT, KC_DOWN, KC_RGHT, RGB_MOD, RGB_SAD, RGB_SAI, DF(cm), KC_INS, KC_HOME, KC_PGUP, _TERM, \ + _S_TAB, _A_LEFT, IJ_OMN, _A_RGHT, _______, RGB_VAD, RGB_VAI, _______, __NAR, KC_END, KC_PGDN, DF(qw), \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ + ), +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (record->event.pressed) { + switch(keycode) { + case IJ_OMN: + SEND_STRING(SS_TAP(X_LSHIFT)SS_TAP(X_LSHIFT)); + return false; + } + } + return true; +} diff --git a/keyboards/jj40/keymaps/stevexyz/config.h b/keyboards/kprepublic/jj40/keymaps/stevexyz/config.h similarity index 100% rename from keyboards/jj40/keymaps/stevexyz/config.h rename to keyboards/kprepublic/jj40/keymaps/stevexyz/config.h diff --git a/keyboards/jj40/keymaps/stevexyz/keymap.c b/keyboards/kprepublic/jj40/keymaps/stevexyz/keymap.c similarity index 100% rename from keyboards/jj40/keymaps/stevexyz/keymap.c rename to keyboards/kprepublic/jj40/keymaps/stevexyz/keymap.c diff --git a/keyboards/jj40/keymaps/stevexyz/readme.md b/keyboards/kprepublic/jj40/keymaps/stevexyz/readme.md similarity index 100% rename from keyboards/jj40/keymaps/stevexyz/readme.md rename to keyboards/kprepublic/jj40/keymaps/stevexyz/readme.md diff --git a/keyboards/kprepublic/jj40/keymaps/stevexyz/rules.mk b/keyboards/kprepublic/jj40/keymaps/stevexyz/rules.mk new file mode 100644 index 000000000000..b9152e31f3fe --- /dev/null +++ b/keyboards/kprepublic/jj40/keymaps/stevexyz/rules.mk @@ -0,0 +1,19 @@ +# Build Options (yes/no) +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = no # Commands for debug and configuration +NKRO_ENABLE = no # USB Nkey Rollover (see: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work) +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config) +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output on port C6 + +TAP_DANCE_ENABLE = yes + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend diff --git a/keyboards/jj40/keymaps/suzuken/config.h b/keyboards/kprepublic/jj40/keymaps/suzuken/config.h similarity index 100% rename from keyboards/jj40/keymaps/suzuken/config.h rename to keyboards/kprepublic/jj40/keymaps/suzuken/config.h diff --git a/keyboards/jj40/keymaps/suzuken/keymap.c b/keyboards/kprepublic/jj40/keymaps/suzuken/keymap.c similarity index 100% rename from keyboards/jj40/keymaps/suzuken/keymap.c rename to keyboards/kprepublic/jj40/keymaps/suzuken/keymap.c diff --git a/keyboards/jj40/keymaps/via/keymap.c b/keyboards/kprepublic/jj40/keymaps/via/keymap.c similarity index 100% rename from keyboards/jj40/keymaps/via/keymap.c rename to keyboards/kprepublic/jj40/keymaps/via/keymap.c diff --git a/keyboards/jj40/keymaps/via/rules.mk b/keyboards/kprepublic/jj40/keymaps/via/rules.mk similarity index 100% rename from keyboards/jj40/keymaps/via/rules.mk rename to keyboards/kprepublic/jj40/keymaps/via/rules.mk diff --git a/keyboards/jj40/keymaps/waples/config.h b/keyboards/kprepublic/jj40/keymaps/waples/config.h similarity index 100% rename from keyboards/jj40/keymaps/waples/config.h rename to keyboards/kprepublic/jj40/keymaps/waples/config.h diff --git a/keyboards/jj40/keymaps/waples/keymap.c b/keyboards/kprepublic/jj40/keymaps/waples/keymap.c similarity index 100% rename from keyboards/jj40/keymaps/waples/keymap.c rename to keyboards/kprepublic/jj40/keymaps/waples/keymap.c diff --git a/keyboards/kprepublic/jj40/keymaps/waples/readme.md b/keyboards/kprepublic/jj40/keymaps/waples/readme.md new file mode 100644 index 000000000000..e9382d89f82b --- /dev/null +++ b/keyboards/kprepublic/jj40/keymaps/waples/readme.md @@ -0,0 +1,49 @@ +# Waples jj40 keymap +> based heavily on my lets split +[Waples](https://www.github.com/Waples) + +### Layers +I currently have the following layers in my keymap: +* Qwerty (as default) +* Dvorak (still learning this type of layout, so not really used much) +* Lefty (lower) +* Righty (raise) +* Dual (adjust) + +### Note to self: +YOU NEED TO USE [bootloadHID -r kprepublic_jj40_waples.hex](https://github.com/qmk/qmk_firmware/tree/master/keyboards/jj40) + +## the stuff below is out of date and I think about removing them from this readme + +#### QWERTY + | Tab | Q | W | E | R | T | Y | U | I | O | P | Bsp | + |C_Esc| A | S | D | F | G | H | J | K | L | ; |S_Ent| + | Sft | Z | X | C | V | B | N | M | , | . | / | " | + |P_SCR| GUI | Alt | Cps | ^L^ | Bsp | Spc | ^R^ | Lft | Dwn | Up! | Rgt | + + +#### DVORAK + | Tab | " | , | . | P | Y | F | G | C | R | L | Bsp | + |C_Esc| A | O | E | U | I | D | H | T | N | S |S_Ent| + | Sft | ; | Q | J | K | X | B | M | W | V | Z | / | + |P_SCR| GUI | Alt | Cps | ^L^ | Bsp | Spc | ^R^ | Lft | Dwn | Up! | Rgt | + +#### LEFTY (lower) + | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bsp | + | Del | | | | | | | ( | ) | [ | ] | | + | | | | | | | | | | | | | + | | | | | | | Ins | | Hme | PgD | PgU | End | + + +#### RIGHTY (raise) + | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bsp | + | Del | F1 | F2 | F3 | F4 | | = | - | \ | / | | | + | | F5 | F6 | F7 | F8 | | | | | | | | + | | F9 | F10 | F11 | | | | | | | | | + + +#### DUAL + |Reset| | | | |QWERT| GAME| | | | |Reset| + | | Prv | Stp | Tog | Nxt | Nrm | Swp | | | | | | + | | | Mte | Vol-| Vol+| | NKRO| | | | | | + | | | | | | |DVORK| | | | | | diff --git a/keyboards/kprepublic/jj40/keymaps/waples/rules.mk b/keyboards/kprepublic/jj40/keymaps/waples/rules.mk new file mode 100644 index 000000000000..b9b67d1c7398 --- /dev/null +++ b/keyboards/kprepublic/jj40/keymaps/waples/rules.mk @@ -0,0 +1,10 @@ +# build options +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no +EXTRAKEY_ENABLE = yes +CONSOLE_ENABLE = no +COMMAND_ENABLE = yes +BACKLIGHT_ENABLE = yes +RGBLIGHT_ENABLE = yes +RGBLIGHT_CUSTOM_DRIVER = yes +KEY_LOCK_ENABLE = yes diff --git a/keyboards/kprepublic/jj40/readme.md b/keyboards/kprepublic/jj40/readme.md new file mode 100644 index 000000000000..06ca2e657ee7 --- /dev/null +++ b/keyboards/kprepublic/jj40/readme.md @@ -0,0 +1,21 @@ +# jj40 + +![jj40](https://ae01.alicdn.com/kf/HTB18bq6bOERMeJjSspiq6zZLFXar.jpg?size=359506&height=562&width=750&hash=663a22d0109e2416ec8f54a7658686da) + +A compact 40% (12x4) ortholinear keyboard kit made and KPRepublic on AliExpress. + +* Keyboard Maintainer: [QMK Community](https://github.com/qmk) +* Hardware Supported: Atmega32A +* Hardware Availability: [AliExpress](https://www.aliexpress.com/store/product/jj40-Custom-Mechanical-Keyboard-40-PCB-programmed-40-planck-layouts-bface-firmware-gh40/3034003_32828781103.html) + +Make example for this keyboard (after setting up your build environment): + + make kprepublic/jj40:default + +Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid)) + + make kprepublic/jj40:default:flash + +**Reset Key**: Hold down the *Top Right Key* key, commonly programmed as *Backspace* while plugging in the keyboard. + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/kprepublic/jj40/rules.mk b/keyboards/kprepublic/jj40/rules.mk new file mode 100644 index 000000000000..5bd08dfd34ca --- /dev/null +++ b/keyboards/kprepublic/jj40/rules.mk @@ -0,0 +1,25 @@ +# MCU name +MCU = atmega32a + +# Bootloader selection +BOOTLOADER = bootloadhid + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +WS2812_DRIVER = i2c +AUDIO_ENABLE = no # Audio output + +LAYOUTS = ortho_4x12 planck_mit + +# Disable unsupported hardware +AUDIO_SUPPORTED = no diff --git a/keyboards/kprepublic/jj4x4/config.h b/keyboards/kprepublic/jj4x4/config.h new file mode 100644 index 000000000000..f97dd7f1cb68 --- /dev/null +++ b/keyboards/kprepublic/jj4x4/config.h @@ -0,0 +1,53 @@ +/* +Copyright 2017 Luiz Ribeiro + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +#define VENDOR_ID 0x4B50 // "KP" +#define PRODUCT_ID 0x0044 // 4x4 +#define DEVICE_VER 0x0200 +#define MANUFACTURER KPrepublic +#define PRODUCT JJ4x4 + +/* matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 4 +#define MATRIX_ROW_PINS { B5, B0, B3, B4 } +#define MATRIX_COL_PINS { A1, A0, A2, A3 } + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +#define BACKLIGHT_PIN D4 +#define BACKLIGHT_LEVELS 12 +#define BACKLIGHT_BREATHING + +/* RGB underglow */ +// NOTE: for PS2AVRGB boards, underglow commands are sent via I2C to 0xB0. +#define RGBLED_NUM 4 +#define RGBLIGHT_ANIMATIONS + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +#define USB_MAX_POWER_CONSUMPTION 100 + +/* Bootmagic Lite key configuration */ +// #define BOOTMAGIC_LITE_ROW 0 +// #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/kprepublic/jj4x4/info.json b/keyboards/kprepublic/jj4x4/info.json new file mode 100644 index 000000000000..9d07e297fc81 --- /dev/null +++ b/keyboards/kprepublic/jj4x4/info.json @@ -0,0 +1,27 @@ +{ + "keyboard_name": "JJ4x4", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_ortho_4x4": { + "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} + ] + } + } +} diff --git a/keyboards/jj4x4/jj4x4.c b/keyboards/kprepublic/jj4x4/jj4x4.c similarity index 100% rename from keyboards/jj4x4/jj4x4.c rename to keyboards/kprepublic/jj4x4/jj4x4.c diff --git a/keyboards/jj4x4/jj4x4.h b/keyboards/kprepublic/jj4x4/jj4x4.h similarity index 100% rename from keyboards/jj4x4/jj4x4.h rename to keyboards/kprepublic/jj4x4/jj4x4.h diff --git a/keyboards/jj4x4/keymaps/default/keymap.c b/keyboards/kprepublic/jj4x4/keymaps/default/keymap.c similarity index 100% rename from keyboards/jj4x4/keymaps/default/keymap.c rename to keyboards/kprepublic/jj4x4/keymaps/default/keymap.c diff --git a/keyboards/jj4x4/keymaps/via/keymap.c b/keyboards/kprepublic/jj4x4/keymaps/via/keymap.c similarity index 100% rename from keyboards/jj4x4/keymaps/via/keymap.c rename to keyboards/kprepublic/jj4x4/keymaps/via/keymap.c diff --git a/keyboards/kprepublic/jj4x4/keymaps/via/rules.mk b/keyboards/kprepublic/jj4x4/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/kprepublic/jj4x4/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/kprepublic/jj4x4/readme.md b/keyboards/kprepublic/jj4x4/readme.md new file mode 100644 index 000000000000..b6e58661682b --- /dev/null +++ b/keyboards/kprepublic/jj4x4/readme.md @@ -0,0 +1,39 @@ +# JJ4x4 + +![jj4x4](https://cdn.shopify.com/s/files/1/2711/4238/products/JJ4x4case-1_1024x1024.jpg?v=1532325339) + +A 4x4 keypad kit made and KPRepublic on AliExpress. This is a chopped off version of the JJ40 with rearranged keys. + +* Keyboard Maintainer: [QMK Community](https://github.com/qmk) +* Hardware Supported: Atmega32A +* Hardware Availability: [AliExpress](https://www.aliexpress.com/item/jj4x4-jj4X4-16-keys-Custom-Mechanical-Keyboard-PCB-programmed-numpad-layouts-bface-firmware-with-rgb-bottom/32901955446.html) + +Make example for this keyboard (after setting up your build environment): + + make kprepublic/jj4x4:default + +Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid)) + + make kprepublic/jj4x4:default:flash + +**Reset Key**: + +Hold down the key located at *K11*, commonly programmed as *8* while plugging in the keyboard USB cable. + +Key *K11* is in the above picture: + +Row 2 from the top, Column 2 from the left, see the schematic below: + +``` +,-----------------------. +| | | | | +|-----`-----`-----`-----| +| | K11 | | | +|-----`-----`-----`-----| +| | | | | +|-----`-----`-----`-----| +| | | | | +`-----`-----`-----`-----' +``` + +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/kprepublic/jj4x4/rules.mk b/keyboards/kprepublic/jj4x4/rules.mk new file mode 100644 index 000000000000..c54f87a38923 --- /dev/null +++ b/keyboards/kprepublic/jj4x4/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32a + +# Bootloader selection +BOOTLOADER = bootloadhid + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +WS2812_DRIVER = i2c +AUDIO_ENABLE = no # Audio output + +LAYOUTS = ortho_4x4 diff --git a/keyboards/jj50/config.h b/keyboards/kprepublic/jj50/config.h similarity index 100% rename from keyboards/jj50/config.h rename to keyboards/kprepublic/jj50/config.h diff --git a/keyboards/kprepublic/jj50/info.json b/keyboards/kprepublic/jj50/info.json new file mode 100644 index 000000000000..e492059e11f9 --- /dev/null +++ b/keyboards/kprepublic/jj50/info.json @@ -0,0 +1,10 @@ +{ + "keyboard_name": "JJ50", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_ortho_5x12": { + "layout": [{"label":"K011", "x":0, "y":0}, {"label":"K010", "x":1, "y":0}, {"label":"K009", "x":2, "y":0}, {"label":"K008", "x":3, "y":0}, {"label":"K004", "x":4, "y":0}, {"label":"K005", "x":5, "y":0}, {"label":"K006", "x":6, "y":0}, {"label":"K007", "x":7, "y":0}, {"label":"K003", "x":8, "y":0}, {"label":"K002", "x":9, "y":0}, {"label":"K201", "x":10, "y":0}, {"label":"K000", "x":11, "y":0}, {"label":"K111", "x":0, "y":1}, {"label":"K110", "x":1, "y":1}, {"label":"K109", "x":2, "y":1}, {"label":"K108", "x":3, "y":1}, {"label":"K104", "x":4, "y":1}, {"label":"K105", "x":5, "y":1}, {"label":"K106", "x":6, "y":1}, {"label":"K107", "x":7, "y":1}, {"label":"K103", "x":8, "y":1}, {"label":"K102", "x":9, "y":1}, {"label":"K001", "x":10, "y":1}, {"label":"K100", "x":11, "y":1}, {"label":"K211", "x":0, "y":2}, {"label":"K210", "x":1, "y":2}, {"label":"K209", "x":2, "y":2}, {"label":"K208", "x":3, "y":2}, {"label":"K204", "x":4, "y":2}, {"label":"K205", "x":5, "y":2}, {"label":"K206", "x":6, "y":2}, {"label":"K207", "x":7, "y":2}, {"label":"K203", "x":8, "y":2}, {"label":"K202", "x":9, "y":2}, {"label":"K101", "x":10, "y":2}, {"label":"K200", "x":11, "y":2}, {"label":"K311", "x":0, "y":3}, {"label":"K310", "x":1, "y":3}, {"label":"K309", "x":2, "y":3}, {"label":"K308", "x":3, "y":3}, {"label":"K304", "x":4, "y":3}, {"label":"K305", "x":5, "y":3}, {"label":"K306", "x":6, "y":3}, {"label":"K307", "x":7, "y":3}, {"label":"K303", "x":8, "y":3}, {"label":"K302", "x":9, "y":3}, {"label":"K301", "x":10, "y":3}, {"label":"K300", "x":11, "y":3}, {"label":"K411", "x":0, "y":4}, {"label":"K410", "x":1, "y":4}, {"label":"K409", "x":2, "y":4}, {"label":"K408", "x":3, "y":4}, {"label":"K404", "x":4, "y":4}, {"label":"K405", "x":5, "y":4}, {"label":"K406", "x":6, "y":4}, {"label":"K407", "x":7, "y":4}, {"label":"K403", "x":8, "y":4}, {"label":"K402", "x":9, "y":4}, {"label":"K401", "x":10, "y":4}, {"label":"K400", "x":11, "y":4}] + } + } +} diff --git a/keyboards/jj50/jj50.c b/keyboards/kprepublic/jj50/jj50.c similarity index 100% rename from keyboards/jj50/jj50.c rename to keyboards/kprepublic/jj50/jj50.c diff --git a/keyboards/jj50/jj50.h b/keyboards/kprepublic/jj50/jj50.h similarity index 100% rename from keyboards/jj50/jj50.h rename to keyboards/kprepublic/jj50/jj50.h diff --git a/keyboards/jj50/keymaps/abstractkb/config.h b/keyboards/kprepublic/jj50/keymaps/abstractkb/config.h similarity index 100% rename from keyboards/jj50/keymaps/abstractkb/config.h rename to keyboards/kprepublic/jj50/keymaps/abstractkb/config.h diff --git a/keyboards/kprepublic/jj50/keymaps/abstractkb/keymap.c b/keyboards/kprepublic/jj50/keymaps/abstractkb/keymap.c new file mode 100644 index 000000000000..e257649369b8 --- /dev/null +++ b/keyboards/kprepublic/jj50/keymaps/abstractkb/keymap.c @@ -0,0 +1,135 @@ +/* +Base Copyright 2017 Luiz Ribeiro +Modified 2017 Andrew Novak +Modified 2018 Wayne Jones (WarmCatUK) +Modified 2019 AbstractKB + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public LicensezZZ +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _DEFLT, + _RAISE, + _LOWER, + _FN +}; + +enum custom_keycodes { + MYRGB_TG = SAFE_RANGE +}; + +bool rgbinit = true; +bool rgbon = true; + +const uint8_t RGBLED_RAINBOW_SWIRL_INTERVALS[] PROGMEM = {1,5,5}; //only using the first one + +void keyboard_post_init_user(void) { + rgblight_enable_noeeprom(); + led_set_user(host_keyboard_leds()); +} + +layer_state_t layer_state_set_user(layer_state_t state) { + switch (biton32(state)) { + case _RAISE: + rgblight_sethsv_noeeprom(170,255,255); + rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); + break; + case _LOWER: + rgblight_sethsv_noeeprom(0,255,255); + rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); + break; + case _FN: + rgblight_sethsv_noeeprom(0,255,255); + rgblight_mode_noeeprom(RGBLIGHT_MODE_RAINBOW_SWIRL); + break; + default: //_DEFLT + rgblight_sethsv_noeeprom(0,0,255); + rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); + break; + } + + return state; +} + +void led_set_user(uint8_t usb_led) { + if (usb_led & (1<event.pressed) { + myrgb_toggle(); + } + return false; + default: + return true; + } +} + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_DEFLT] = LAYOUT( \ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_ENT, \ + KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \ + MO(_FN), KC_LCTL, KC_LGUI, KC_LALT, MO(_LOWER),KC_SPC,KC_SPC,MO(_RAISE),KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ + ), + + + [_RAISE] = LAYOUT( \ + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, LCTL(LGUI(KC_LEFT)), LGUI(KC_L), LCTL(LGUI(KC_RGHT)), _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_CAPS, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY \ + ), + + + [_LOWER] = LAYOUT( \ + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \ + _______, KC_GRV, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_BSLS, _______, \ + _______, _______, _______, KC_LBRC, KC_RBRC, S(KC_9),S(KC_0),S(KC_LBRC),S(KC_RBRC),_______,_______,_______, \ + _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ + ), + + + [_FN] = LAYOUT( \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MYRGB_TG \ + ) +}; diff --git a/keyboards/jj50/keymaps/abstractkb/readme.md b/keyboards/kprepublic/jj50/keymaps/abstractkb/readme.md similarity index 100% rename from keyboards/jj50/keymaps/abstractkb/readme.md rename to keyboards/kprepublic/jj50/keymaps/abstractkb/readme.md diff --git a/keyboards/jj50/keymaps/abstractkb_gergomatch/config.h b/keyboards/kprepublic/jj50/keymaps/abstractkb_gergomatch/config.h similarity index 100% rename from keyboards/jj50/keymaps/abstractkb_gergomatch/config.h rename to keyboards/kprepublic/jj50/keymaps/abstractkb_gergomatch/config.h diff --git a/keyboards/kprepublic/jj50/keymaps/abstractkb_gergomatch/keymap.c b/keyboards/kprepublic/jj50/keymaps/abstractkb_gergomatch/keymap.c new file mode 100644 index 000000000000..baedbb4dd2a1 --- /dev/null +++ b/keyboards/kprepublic/jj50/keymaps/abstractkb_gergomatch/keymap.c @@ -0,0 +1,135 @@ +/* +Base Copyright 2017 Luiz Ribeiro +Modified 2017 Andrew Novak +Modified 2018 Wayne Jones (WarmCatUK) +Modified 2019 AbstractKB + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public LicensezZZ +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _DEFLT, + _FUNC, + _SYM, + _META +}; + +enum custom_keycodes { + MYRGB_TG = SAFE_RANGE +}; + +bool rgbinit = true; +bool rgbon = true; + +const uint8_t RGBLED_RAINBOW_SWIRL_INTERVALS[] PROGMEM = {1,5,5}; //only using the first one + +void keyboard_post_init_user(void) { + rgblight_enable_noeeprom(); + led_set_user(host_keyboard_leds()); +} + +layer_state_t layer_state_set_user(layer_state_t state) { + switch (biton32(state)) { + case _FUNC: + rgblight_sethsv_noeeprom(170,255,255); + rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); + break; + case _SYM: + rgblight_sethsv_noeeprom(0,255,255); + rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); + break; + case _META: + rgblight_sethsv_noeeprom(0,255,255); + rgblight_mode_noeeprom(RGBLIGHT_MODE_RAINBOW_SWIRL); + break; + default: //_DEFLT + rgblight_sethsv_noeeprom(0,0,255); + rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); + break; + } + + return state; +} + +void led_set_user(uint8_t usb_led) { + if (usb_led & (1<event.pressed) { + myrgb_toggle(); + } + return false; + default: + return true; + } +} + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_DEFLT] = LAYOUT( \ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_ENT, \ + KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \ + KC_LCTL, MO(_META), KC_LGUI, KC_LALT, MO(_SYM),KC_SPC,KC_SPC,MO(_FUNC),KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ + ), + + + [_FUNC] = LAYOUT( \ + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, LCTL(LGUI(KC_LEFT)), LGUI(KC_L), LCTL(LGUI(KC_RGHT)), _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_CAPS, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY \ + ), + + + [_SYM] = LAYOUT( \ + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \ + _______,S(KC_1),S(KC_2),S(KC_LBRC),S(KC_RBRC),S(KC_BSLS),_______, S(KC_MINS), _______, _______, _______, _______, \ + _______, S(KC_3), S(KC_4), S(KC_9), S(KC_0), KC_GRV, S(KC_EQL), KC_MINS, KC_BSLS, S(KC_8), _______, _______, \ + _______, S(KC_5), S(KC_6), KC_LBRC,KC_RBRC,S(KC_GRV), S(KC_7),KC_EQL, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ + ), + + + [_META] = LAYOUT( \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MYRGB_TG \ + ) +}; diff --git a/keyboards/jj50/keymaps/abstractkb_gergomatch/readme.md b/keyboards/kprepublic/jj50/keymaps/abstractkb_gergomatch/readme.md similarity index 100% rename from keyboards/jj50/keymaps/abstractkb_gergomatch/readme.md rename to keyboards/kprepublic/jj50/keymaps/abstractkb_gergomatch/readme.md diff --git a/keyboards/jj50/keymaps/archetype/README.md b/keyboards/kprepublic/jj50/keymaps/archetype/README.md similarity index 100% rename from keyboards/jj50/keymaps/archetype/README.md rename to keyboards/kprepublic/jj50/keymaps/archetype/README.md diff --git a/keyboards/jj50/keymaps/archetype/config.h b/keyboards/kprepublic/jj50/keymaps/archetype/config.h similarity index 100% rename from keyboards/jj50/keymaps/archetype/config.h rename to keyboards/kprepublic/jj50/keymaps/archetype/config.h diff --git a/keyboards/jj50/keymaps/archetype/keymap.c b/keyboards/kprepublic/jj50/keymaps/archetype/keymap.c similarity index 100% rename from keyboards/jj50/keymaps/archetype/keymap.c rename to keyboards/kprepublic/jj50/keymaps/archetype/keymap.c diff --git a/keyboards/jj50/keymaps/archetype/rules.mk b/keyboards/kprepublic/jj50/keymaps/archetype/rules.mk similarity index 100% rename from keyboards/jj50/keymaps/archetype/rules.mk rename to keyboards/kprepublic/jj50/keymaps/archetype/rules.mk diff --git a/keyboards/jj50/keymaps/default/README.md b/keyboards/kprepublic/jj50/keymaps/default/README.md similarity index 100% rename from keyboards/jj50/keymaps/default/README.md rename to keyboards/kprepublic/jj50/keymaps/default/README.md diff --git a/keyboards/jj50/keymaps/default/keymap.c b/keyboards/kprepublic/jj50/keymaps/default/keymap.c similarity index 100% rename from keyboards/jj50/keymaps/default/keymap.c rename to keyboards/kprepublic/jj50/keymaps/default/keymap.c diff --git a/keyboards/jj50/keymaps/yoonbae81/config.h b/keyboards/kprepublic/jj50/keymaps/yoonbae81/config.h similarity index 100% rename from keyboards/jj50/keymaps/yoonbae81/config.h rename to keyboards/kprepublic/jj50/keymaps/yoonbae81/config.h diff --git a/keyboards/jj50/keymaps/yoonbae81/keymap.c b/keyboards/kprepublic/jj50/keymaps/yoonbae81/keymap.c similarity index 100% rename from keyboards/jj50/keymaps/yoonbae81/keymap.c rename to keyboards/kprepublic/jj50/keymaps/yoonbae81/keymap.c diff --git a/keyboards/jj50/keymaps/yoonbae81/rules.mk b/keyboards/kprepublic/jj50/keymaps/yoonbae81/rules.mk similarity index 100% rename from keyboards/jj50/keymaps/yoonbae81/rules.mk rename to keyboards/kprepublic/jj50/keymaps/yoonbae81/rules.mk diff --git a/keyboards/kprepublic/jj50/readme.md b/keyboards/kprepublic/jj50/readme.md new file mode 100644 index 000000000000..c34b5d8eebad --- /dev/null +++ b/keyboards/kprepublic/jj50/readme.md @@ -0,0 +1,21 @@ +# JJ50 + +![JJ50 + SA Vilebloom (w/ Sakurios) by u/rendleshift](https://i.imgur.com/SwYZ4wol.jpg) + +A compact 50% (5x12) ortholinear keyboard made and sold by KPrepublic. + +* Keyboard Maintainer: [QMK Community](https://github.com/qmk) +* Hardware Supported: Atmega32A +* Hardware Availability: [AliExpress](https://www.aliexpress.com/item/jj50-v1-0-Custom-Mechanical-Keyboard-50-PCB-programmed-50-preonic-layouts-bface-firmware-with-rgb/32848915277.html); [KPrepublic](https://kprepublic.com/collections/jj50-50/products/jj50-50-custom-keyboard-pcb-similar-with-preonic) + +Make example for this keyboard (after setting up your build environment): + + make kprepublic/jj50:default + +Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid)) + + make kprepublic/jj50:default:flash + +**Reset Key**: Hold down the key `Backspace` (`Key below the top right key`) while plugging in the keyboard. + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/kprepublic/jj50/rules.mk b/keyboards/kprepublic/jj50/rules.mk new file mode 100644 index 000000000000..ee086ee5bd57 --- /dev/null +++ b/keyboards/kprepublic/jj50/rules.mk @@ -0,0 +1,19 @@ +# MCU name +MCU = atmega32a + +# Bootloader selection +BOOTLOADER = bootloadhid + +# build options +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality +WS2812_DRIVER = i2c # This driver powers the RGB Lighting and RGB Matrix features +LTO_ENABLE = yes # Enable link time optimization + +LAYOUTS = ortho_5x12 diff --git a/keyboards/ktec/daisy/config.h b/keyboards/ktec/daisy/config.h new file mode 100644 index 000000000000..3d504888ec4b --- /dev/null +++ b/keyboards/ktec/daisy/config.h @@ -0,0 +1,149 @@ +/* +Copyright 2020 + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4B50 +#define PRODUCT_ID 0xD7DC +#define DEVICE_VER 0x0501 +#define MANUFACTURER KTEC +#define PRODUCT Daisy + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 11 + +/* + * 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 { D2, D3, D5, B7 } +#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, B6, B5, B4, D7, D6 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +//#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +#define LED_CAPS_LOCK_PIN C6 +#define LED_PIN_ON_STATE 0 + +#define BACKLIGHT_PIN D0 +// #define BACKLIGHT_BREATHING +#define BACKLIGHT_LEVELS 6 + +#define RGB_DI_PIN C7 +#ifdef RGB_DI_PIN +# define RGBLED_NUM 8 +# define RGBLIGHT_HUE_STEP 12 +# define RGBLIGHT_SAT_STEP 25 +# define RGBLIGHT_VAL_STEP 12 +// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +// /*== all animations enable ==*/ +# define RGBLIGHT_ANIMATIONS +// /*== or choose animations ==*/ +// #define RGBLIGHT_EFFECT_BREATHING +// #define RGBLIGHT_EFFECT_RAINBOW_MOOD +// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL +// #define RGBLIGHT_EFFECT_SNAKE +// #define RGBLIGHT_EFFECT_KNIGHT +// #define RGBLIGHT_EFFECT_CHRISTMAS +// #define RGBLIGHT_EFFECT_STATIC_GRADIENT +// #define RGBLIGHT_EFFECT_RGB_TEST +// #define RGBLIGHT_EFFECT_ALTERNATING +// /*== customize breathing effect ==*/ +// /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +// #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +// /*==== use exp() and sin() ====*/ +// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is userful for the Windows task manager shortcut (ctrl+shift+esc). + */ +// #define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +// #define BOOTMAGIC_LITE_ROW 0 +// #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/daisy/daisy.c b/keyboards/ktec/daisy/daisy.c similarity index 100% rename from keyboards/daisy/daisy.c rename to keyboards/ktec/daisy/daisy.c diff --git a/keyboards/daisy/daisy.h b/keyboards/ktec/daisy/daisy.h similarity index 100% rename from keyboards/daisy/daisy.h rename to keyboards/ktec/daisy/daisy.h diff --git a/keyboards/ktec/daisy/info.json b/keyboards/ktec/daisy/info.json new file mode 100644 index 000000000000..6d5d5f49e233 --- /dev/null +++ b/keyboards/ktec/daisy/info.json @@ -0,0 +1,103 @@ +{ + "keyboard_name": "Daisy", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + + {"x": 0, "y": 1, "w": 1.25}, + {"x": 1.25, "y": 1}, + {"x": 2.25, "y": 1}, + {"x": 3.25, "y": 1}, + {"x": 4.25, "y": 1}, + {"x": 5.25, "y": 1}, + {"x": 6.25, "y": 1}, + {"x": 7.25, "y": 1}, + {"x": 8.25, "y": 1}, + {"x": 9.25, "y": 1}, + {"x": 10.25, "y": 1, "w": 1.75}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2, "w": 1.25}, + + {"x": 0, "y": 3, "w": 1.25}, + {"x": 1.25, "y": 3}, + {"x": 2.25, "y": 3, "w": 1.25}, + {"x": 3.5, "y": 3, "w": 2.25}, + {"x": 5.75, "y": 3, "w": 2.75}, + {"x": 8.5, "y": 3, "w": 1.25}, + {"x": 9.75, "y": 3}, + {"x": 10.75, "y": 3, "w": 1.25} + ] + }, + "LAYOUT_625_space": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + + {"x": 0, "y": 1, "w": 1.25}, + {"x": 1.25, "y": 1}, + {"x": 2.25, "y": 1}, + {"x": 3.25, "y": 1}, + {"x": 4.25, "y": 1}, + {"x": 5.25, "y": 1}, + {"x": 6.25, "y": 1}, + {"x": 7.25, "y": 1}, + {"x": 8.25, "y": 1}, + {"x": 9.25, "y": 1}, + {"x": 10.25, "y": 1, "w": 1.75}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2, "w": 1.25}, + + {"x": 0, "y": 3, "w": 1.25}, + {"x": 1.25, "y": 3}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3, "w": 6.25}, + {"x": 9.5, "y": 3, "w": 1.25}, + {"x": 10.75, "y": 3, "w": 1.25} + ] + } + } +} diff --git a/keyboards/daisy/keymaps/default/keymap.c b/keyboards/ktec/daisy/keymaps/default/keymap.c similarity index 100% rename from keyboards/daisy/keymaps/default/keymap.c rename to keyboards/ktec/daisy/keymaps/default/keymap.c diff --git a/keyboards/daisy/keymaps/default/readme.md b/keyboards/ktec/daisy/keymaps/default/readme.md similarity index 100% rename from keyboards/daisy/keymaps/default/readme.md rename to keyboards/ktec/daisy/keymaps/default/readme.md diff --git a/keyboards/daisy/keymaps/via/keymap.c b/keyboards/ktec/daisy/keymaps/via/keymap.c similarity index 100% rename from keyboards/daisy/keymaps/via/keymap.c rename to keyboards/ktec/daisy/keymaps/via/keymap.c diff --git a/keyboards/daisy/keymaps/via/readme.md b/keyboards/ktec/daisy/keymaps/via/readme.md similarity index 100% rename from keyboards/daisy/keymaps/via/readme.md rename to keyboards/ktec/daisy/keymaps/via/readme.md diff --git a/keyboards/ktec/daisy/keymaps/via/rules.mk b/keyboards/ktec/daisy/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/ktec/daisy/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/ktec/daisy/readme.md b/keyboards/ktec/daisy/readme.md new file mode 100644 index 000000000000..b6a8e6012873 --- /dev/null +++ b/keyboards/ktec/daisy/readme.md @@ -0,0 +1,15 @@ +# Daisy + +![Daisy PCB](https://cdn.shopify.com/s/files/1/2711/4238/products/HTB1Pj1UggMPMeJjy1Xcq6xpppXa7_1024x1024.jpg) + +A 40% keyboard kit sold by KPrepublic. + +* Keyboard Maintainer: [westfoxtrot](https://github.com/westfoxtrot) +* Hardware Supported: Daisy PCB Rev.1, Daisy PCB Rev.2 +* Hardware Availability: [KPrepublic](https://kprepublic.com/products/daisy-40-custom-keyboard-pcb) + +Make example for this keyboard (after setting up your build environment): + + make ktec/daisy: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/ktec/daisy/rules.mk b/keyboards/ktec/daisy/rules.mk new file mode 100644 index 000000000000..f139207d3467 --- /dev/null +++ b/keyboards/ktec/daisy/rules.mk @@ -0,0 +1,19 @@ +# 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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/ktec/ergodone/config.h b/keyboards/ktec/ergodone/config.h new file mode 100644 index 000000000000..db626ab8083e --- /dev/null +++ b/keyboards/ktec/ergodone/config.h @@ -0,0 +1,78 @@ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x1209 +#define PRODUCT_ID 0x2328 +// The official ErgoDone VID and PID are documented at http://pid.codes/1209/2328/. +#define DEVICE_VER 0x0001 +#define MANUFACTURER K.T.E.C. +#define PRODUCT ErgoDone + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 14 + +#define MOUSEKEY_INTERVAL 20 +#define MOUSEKEY_DELAY 0 +#define MOUSEKEY_TIME_TO_MAX 60 +#define MOUSEKEY_MAX_SPEED 7 +#define MOUSEKEY_WHEEL_DELAY 0 + +#define TAPPING_TOGGLE 1 + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +#define TAPPING_TERM 200 +#define IGNORE_MOD_TAP_INTERRUPT // this makes it possible to do rolling combos (zx) with keys that convert to other keys on hold (z becomes ctrl when you hold it, and when this option isn't enabled, z rapidly followed by x actually sends Ctrl-x. That's bad.) + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* key combination for command */ +#define IS_COMMAND() ( \ + get_mods() == (MOD_BIT(KC_LCTL) | MOD_BIT(KC_RCTL)) || \ + get_mods() == (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) \ +) + +/* number of backlight levels */ +#define BACKLIGHT_LEVELS 3 + +#define LED_BRIGHTNESS_LO 15 +#define LED_BRIGHTNESS_HI 255 + +/* fix space cadet rollover issue */ +#define DISABLE_SPACE_CADET_ROLLOVER + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +#define USB_MAX_POWER_CONSUMPTION 500 + +/* NKRO */ +#ifndef FORCE_NKRO + #define FORCE_NKRO // Depends on NKRO_ENABLE. +#endif + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +// #define NO_DEBUG + +/* disable print */ +// #define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION +//#define DEBUG_MATRIX_SCAN_RATE diff --git a/keyboards/ergodone/ergodone.c b/keyboards/ktec/ergodone/ergodone.c similarity index 100% rename from keyboards/ergodone/ergodone.c rename to keyboards/ktec/ergodone/ergodone.c diff --git a/keyboards/ktec/ergodone/ergodone.h b/keyboards/ktec/ergodone/ergodone.h new file mode 100644 index 000000000000..77e496854364 --- /dev/null +++ b/keyboards/ktec/ergodone/ergodone.h @@ -0,0 +1,156 @@ +#pragma once + +#include "quantum.h" +#include +#include + +void init_ergodox(void); + +inline void ergodox_right_led_1_off(void) { DDRB &= ~(1< #include "action.h" -#include "i2cmaster.h" +#include "i2c_master.h" #include "expander.h" #include "debug.h" +#define I2C_TIMEOUT 100 + static uint8_t expander_status = 0; static uint8_t expander_input = 0; @@ -20,7 +22,7 @@ void expander_init(void) void expander_scan(void) { dprintf("expander status: %d ... ", expander_status); - uint8_t ret = i2c_start(EXPANDER_ADDR | I2C_WRITE); + uint8_t ret = i2c_start(EXPANDER_ADDR | I2C_WRITE, I2C_TIMEOUT); if (ret == 0) { i2c_stop(); if (expander_status == 0) { @@ -90,15 +92,7 @@ uint8_t expander_write(uint8_t reg, uint8_t data) if (expander_status == 0) { return 0; } - uint8_t ret; - ret = i2c_start(EXPANDER_ADDR | I2C_WRITE); - if (ret) goto stop; - ret = i2c_write(reg); - if (ret) goto stop; - ret = i2c_write(data); - stop: - i2c_stop(); - return ret; + return i2c_writeReg(EXPANDER_ADDR, reg, &data, 1, I2C_TIMEOUT); } uint8_t expander_read(uint8_t reg, uint8_t *data) @@ -106,15 +100,5 @@ uint8_t expander_read(uint8_t reg, uint8_t *data) if (expander_status == 0) { return 0; } - uint8_t ret; - ret = i2c_start(EXPANDER_ADDR | I2C_WRITE); - if (ret) goto stop; - ret = i2c_write(reg); - if (ret) goto stop; - ret = i2c_rep_start(EXPANDER_ADDR | I2C_READ); - if (ret) goto stop; - *data = i2c_readNak(); - stop: - i2c_stop(); - return ret; + return i2c_readReg(EXPANDER_ADDR, reg, data, 1, I2C_TIMEOUT); } diff --git a/keyboards/ergodone/expander.h b/keyboards/ktec/ergodone/expander.h similarity index 95% rename from keyboards/ergodone/expander.h rename to keyboards/ktec/ergodone/expander.h index 8676fed69316..071570c40844 100644 --- a/keyboards/ergodone/expander.h +++ b/keyboards/ktec/ergodone/expander.h @@ -1,5 +1,4 @@ -#ifndef EXPANDER_H -#define EXPANDER_H +#pragma once #include #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/ktec/ergodone/info.json b/keyboards/ktec/ergodone/info.json new file mode 100644 index 000000000000..e8f8b2bc890f --- /dev/null +++ b/keyboards/ktec/ergodone/info.json @@ -0,0 +1,104 @@ +{ + "keyboard_name": "Ergodone", + "maintainer": "Yu He", + "layouts": { + "LAYOUT_ergodox": { + + "layout": [ + {"x":0, "y":0.375, "w":1.5}, {"x":1.5, "y":0.375}, {"x":2.5, "y":0.125}, {"x":3.5, "y":0}, {"x":4.5, "y":0.125}, {"x":5.5, "y":0.25}, {"x":6.5, "y":0.25}, + {"x":0, "y":1.375, "w":1.5}, {"x":1.5, "y":1.375}, {"x":2.5, "y":1.125}, {"x":3.5, "y":1}, {"x":4.5, "y":1.125}, {"x":5.5, "y":1.25}, {"x":6.5, "y":1.25, "h":1.5}, + {"x":0, "y":2.375, "w":1.5}, {"x":1.5, "y":2.375}, {"x":2.5, "y":2.125}, {"x":3.5, "y":2}, {"x":4.5, "y":2.125}, {"x":5.5, "y":2.25}, + {"x":0, "y":3.375, "w":1.5}, {"x":1.5, "y":3.375}, {"x":2.5, "y":3.125}, {"x":3.5, "y":3}, {"x":4.5, "y":3.125}, {"x":5.5, "y":3.25}, {"x":6.5, "y":2.75, "h":1.5}, + {"x":0.5, "y":4.375}, {"x":1.5, "y":4.375}, {"x":2.5, "y":4.125}, {"x":3.5, "y":4}, {"x":4.5, "y":4.125}, + + {"x":6, "y":5}, {"x":7, "y":5}, + {"x":7, "y":6}, + {"x":5, "y":6, "h":2}, {"x":6, "y":6, "h":2}, {"x":7, "y":7}, + + + {"x":9.5, "y":0.25}, {"x":10.5, "y":0.25}, {"x":11.5, "y":0.125}, {"x":12.5, "y":0}, {"x":13.5, "y":0.125}, {"x":14.5, "y":0.375}, {"x":15.5, "y":0.375, "w":1.5}, + {"x":9.5, "y":1.25, "h":1.5}, {"x":10.5, "y":1.25}, {"x":11.5, "y":1.125}, {"x":12.5, "y":1}, {"x":13.5, "y":1.125}, {"x":14.5, "y":1.375}, {"x":15.5, "y":1.375, "w":1.5}, + {"x":10.5, "y":2.25}, {"x":11.5, "y":2.125}, {"x":12.5, "y":2}, {"x":13.5, "y":2.125}, {"x":14.5, "y":2.375}, {"x":15.5, "y":2.375, "w":1.5}, + {"x":9.5, "y":2.75, "h":1.5}, {"x":10.5, "y":3.25}, {"x":11.5, "y":3.125}, {"x":12.5, "y":3}, {"x":13.5, "y":3.125}, {"x":14.5, "y":3.375}, {"x":15.5, "y":3.375, "w":1.5}, + {"x":11.5, "y":4.125}, {"x":12.5, "y":4}, {"x":13.5, "y":4.125}, {"x":14.5, "y":4.375}, {"x":15.5, "y":4.375}, + + + {"x":9, "y":5}, {"x":10, "y":5}, + {"x":9, "y":6}, + {"x":9, "y":7}, {"x":10, "y":6, "h":2}, {"x":11, "y":6, "h":2} + ] + }, + "LAYOUT_ergodox_pretty": { + "layout": [ + {"x":0, "y":0.375, "w":1.5}, {"x":1.5, "y":0.375}, {"x":2.5, "y":0.125}, {"x":3.5, "y":0}, {"x":4.5, "y":0.125}, {"x":5.5, "y":0.25}, {"x":6.5, "y":0.25}, + {"x":9.5, "y":0.25}, {"x":10.5, "y":0.25}, {"x":11.5, "y":0.125}, {"x":12.5, "y":0}, {"x":13.5, "y":0.125}, {"x":14.5, "y":0.375}, {"x":15.5, "y":0.375, "w":1.5}, + + {"x":0, "y":1.375, "w":1.5}, {"x":1.5, "y":1.375}, {"x":2.5, "y":1.125}, {"x":3.5, "y":1}, {"x":4.5, "y":1.125}, {"x":5.5, "y":1.25}, {"x":6.5, "y":1.25, "h":1.5}, + {"x":9.5, "y":1.25, "h":1.5}, {"x":10.5, "y":1.25}, {"x":11.5, "y":1.125}, {"x":12.5, "y":1}, {"x":13.5, "y":1.125}, {"x":14.5, "y":1.375}, {"x":15.5, "y":1.375, "w":1.5}, + + {"x":0, "y":2.375, "w":1.5}, {"x":1.5, "y":2.375}, {"x":2.5, "y":2.125}, {"x":3.5, "y":2}, {"x":4.5, "y":2.125}, {"x":5.5, "y":2.25}, + {"x":10.5, "y":2.25}, {"x":11.5, "y":2.125}, {"x":12.5, "y":2}, {"x":13.5, "y":2.125}, {"x":14.5, "y":2.375}, {"x":15.5, "y":2.375, "w":1.5}, + + {"x":0, "y":3.375, "w":1.5}, {"x":1.5, "y":3.375}, {"x":2.5, "y":3.125}, {"x":3.5, "y":3}, {"x":4.5, "y":3.125}, {"x":5.5, "y":3.25}, {"x":6.5, "y":2.75, "h":1.5}, + {"x":9.5, "y":2.75, "h":1.5}, {"x":10.5, "y":3.25}, {"x":11.5, "y":3.125}, {"x":12.5, "y":3}, {"x":13.5, "y":3.125}, {"x":14.5, "y":3.375}, {"x":15.5, "y":3.375, "w":1.5}, + + {"x":0.5, "y":4.375}, {"x":1.5, "y":4.375}, {"x":2.5, "y":4.125}, {"x":3.5, "y":4}, {"x":4.5, "y":4.125}, + {"x":11.5, "y":4.125}, {"x":12.5, "y":4}, {"x":13.5, "y":4.125}, {"x":14.5, "y":4.375}, {"x":15.5, "y":4.375}, + + {"x":6, "y":5}, {"x":7, "y":5}, {"x":9, "y":5}, {"x":10, "y":5}, + {"x":7, "y":6}, {"x":9, "y":6}, + {"x":5, "y":6, "h":2}, {"x":6, "y":6, "h":2}, {"x":7, "y":7}, {"x":9, "y":7}, {"x":10, "y":6, "h":2}, {"x":11, "y":6, "h":2} + ] + }, + "LAYOUT_ergodox_80": { + + "layout": [ + {"x":0, "y":0.375, "w":1.5}, {"x":1.5, "y":0.375}, {"x":2.5, "y":0.125}, {"x":3.5, "y":0}, {"x":4.5, "y":0.125}, {"x":5.5, "y":0.25}, {"x":6.5, "y":0.25}, + {"x":0, "y":1.375, "w":1.5}, {"x":1.5, "y":1.375}, {"x":2.5, "y":1.125}, {"x":3.5, "y":1}, {"x":4.5, "y":1.125}, {"x":5.5, "y":1.25}, {"x":6.5, "y":1.25, "h":1.5}, + {"x":0, "y":2.375, "w":1.5}, {"x":1.5, "y":2.375}, {"x":2.5, "y":2.125}, {"x":3.5, "y":2}, {"x":4.5, "y":2.125}, {"x":5.5, "y":2.25}, + {"x":0, "y":3.375, "w":1.5}, {"x":1.5, "y":3.375}, {"x":2.5, "y":3.125}, {"x":3.5, "y":3}, {"x":4.5, "y":3.125}, {"x":5.5, "y":3.25}, {"x":6.5, "y":2.75, "h":1.5}, + {"x":0.5, "y":4.375}, {"x":1.5, "y":4.375}, {"x":2.5, "y":4.125}, {"x":3.5, "y":4}, {"x":4.5, "y":4.125}, + + {"x":6, "y":5}, {"x":7, "y":5}, + + {"x":5, "y":6}, {"x":6, "y":6}, {"x":7, "y":6}, + {"x":5, "y":7}, {"x":6, "y":7}, {"x":7, "y":7}, + + + {"x":9.5, "y":0.25}, {"x":10.5, "y":0.25}, {"x":11.5, "y":0.125}, {"x":12.5, "y":0}, {"x":13.5, "y":0.125}, {"x":14.5, "y":0.375}, {"x":15.5, "y":0.375, "w":1.5}, + {"x":9.5, "y":1.25, "h":1.5}, {"x":10.5, "y":1.25}, {"x":11.5, "y":1.125}, {"x":12.5, "y":1}, {"x":13.5, "y":1.125}, {"x":14.5, "y":1.375}, {"x":15.5, "y":1.375, "w":1.5}, + {"x":10.5, "y":2.25}, {"x":11.5, "y":2.125}, {"x":12.5, "y":2}, {"x":13.5, "y":2.125}, {"x":14.5, "y":2.375}, {"x":15.5, "y":2.375, "w":1.5}, + {"x":9.5, "y":2.75, "h":1.5}, {"x":10.5, "y":3.25}, {"x":11.5, "y":3.125}, {"x":12.5, "y":3}, {"x":13.5, "y":3.125}, {"x":14.5, "y":3.375}, {"x":15.5, "y":3.375, "w":1.5}, + {"x":11.5, "y":4.125}, {"x":12.5, "y":4}, {"x":13.5, "y":4.125}, {"x":14.5, "y":4.375}, {"x":15.5, "y":4.375}, + + + {"x":9, "y":5}, {"x":10, "y":5}, + {"x":9, "y":6}, {"x":10, "y":6}, {"x":11, "y":6}, + {"x":9, "y":7}, {"x":10, "y":7}, {"x":11, "y":7} + ] + }, + "LAYOUT_ergodox_pretty_80": { + + "layout": [ + {"x":0, "y":0.375, "w":1.5}, {"x":1.5, "y":0.375}, {"x":2.5, "y":0.125}, {"x":3.5, "y":0}, {"x":4.5, "y":0.125}, {"x":5.5, "y":0.25}, {"x":6.5, "y":0.25}, + {"x":9.5, "y":0.25}, {"x":10.5, "y":0.25}, {"x":11.5, "y":0.125}, {"x":12.5, "y":0}, {"x":13.5, "y":0.125}, {"x":14.5, "y":0.375}, {"x":15.5, "y":0.375, "w":1.5}, + + {"x":0, "y":1.375, "w":1.5}, {"x":1.5, "y":1.375}, {"x":2.5, "y":1.125}, {"x":3.5, "y":1}, {"x":4.5, "y":1.125}, {"x":5.5, "y":1.25}, {"x":6.5, "y":1.25, "h":1.5}, + {"x":9.5, "y":1.25, "h":1.5}, {"x":10.5, "y":1.25}, {"x":11.5, "y":1.125}, {"x":12.5, "y":1}, {"x":13.5, "y":1.125}, {"x":14.5, "y":1.375}, {"x":15.5, "y":1.375, "w":1.5}, + + {"x":0, "y":2.375, "w":1.5}, {"x":1.5, "y":2.375}, {"x":2.5, "y":2.125}, {"x":3.5, "y":2}, {"x":4.5, "y":2.125}, {"x":5.5, "y":2.25}, + {"x":10.5, "y":2.25}, {"x":11.5, "y":2.125}, {"x":12.5, "y":2}, {"x":13.5, "y":2.125}, {"x":14.5, "y":2.375}, {"x":15.5, "y":2.375, "w":1.5}, + + {"x":0, "y":3.375, "w":1.5}, {"x":1.5, "y":3.375}, {"x":2.5, "y":3.125}, {"x":3.5, "y":3}, {"x":4.5, "y":3.125}, {"x":5.5, "y":3.25}, {"x":6.5, "y":2.75, "h":1.5}, + {"x":9.5, "y":2.75, "h":1.5}, {"x":10.5, "y":3.25}, {"x":11.5, "y":3.125}, {"x":12.5, "y":3}, {"x":13.5, "y":3.125}, {"x":14.5, "y":3.375}, {"x":15.5, "y":3.375, "w":1.5}, + + {"x":0.5, "y":4.375}, {"x":1.5, "y":4.375}, {"x":2.5, "y":4.125}, {"x":3.5, "y":4}, {"x":4.5, "y":4.125}, + {"x":11.5, "y":4.125}, {"x":12.5, "y":4}, {"x":13.5, "y":4.125}, {"x":14.5, "y":4.375}, {"x":15.5, "y":4.375}, + + {"x":6, "y":5}, {"x":7, "y":5}, {"x":9, "y":5}, {"x":10, "y":5}, + {"x":5, "y":6}, {"x":6, "y":6}, {"x":7, "y":6}, {"x":9, "y":6}, {"x":10, "y":6}, {"x":11, "y":6}, + {"x":5, "y":7}, {"x":6, "y":7}, {"x":7, "y":7}, {"x":9, "y":7}, {"x":10, "y":7}, {"x":11, "y":7} + ] + } + } +} diff --git a/keyboards/ergodone/keymaps/art/keymap.c b/keyboards/ktec/ergodone/keymaps/art/keymap.c similarity index 100% rename from keyboards/ergodone/keymaps/art/keymap.c rename to keyboards/ktec/ergodone/keymaps/art/keymap.c diff --git a/keyboards/ktec/ergodone/keymaps/default/keymap.c b/keyboards/ktec/ergodone/keymaps/default/keymap.c new file mode 100644 index 000000000000..ca3da7ec5d73 --- /dev/null +++ b/keyboards/ktec/ergodone/keymaps/default/keymap.c @@ -0,0 +1,193 @@ +#include QMK_KEYBOARD_H +#include "version.h" + +#define BASE 0 // default layer +#define SYMB 1 // symbols +#define MDIA 2 // media keys + +enum custom_keycodes { + PLACEHOLDER = SAFE_RANGE, // can always be here + EPRM, + VRSN, + RGB_SLD +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Basic layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | Del | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | BkSp | A | S | D | F | G |------| |------| H | J | K | L |; / L2|' / Cmd | + * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| + * | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | App | LGui | | Alt |Ctrl/Esc| + * ,------|------|------| |------+--------+------. + * | | | Home | | PgUp | | | + * | Space|Backsp|------| |------| Tab |Enter | + * | |ace | End | | PgDn | | | + * `--------------------' `----------------------' + */ +// If it accepts an argument (i.e, is a function), it doesn't need KC_. +// Otherwise, it needs KC_* +[BASE] = LAYOUT_ergodox( // layer 0 : default + // left hand + KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, + KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), + KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), + LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, + ALT_T(KC_APP), KC_LGUI, + KC_HOME, + KC_SPC,KC_BSPC,KC_END, + // right hand + KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),GUI_T(KC_QUOT), + MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT, + KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, TT(SYMB), + KC_LALT, CTL_T(KC_ESC), + KC_PGUP, + KC_PGDN,KC_TAB, KC_ENT + ), +/* Keymap 1: Symbol Layer + * + * ,---------------------------------------------------. ,--------------------------------------------------. + * |Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * |---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------| + * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 | + * |---------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | | + * |---------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | | + * `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | EPRM | | | | | | | . | 0 | = | | + * `-----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * |Animat| | |Toggle|Solid | + * ,------|------|------| |------+------+------. + * |Bright|Bright| | | |Hue- |Hue+ | + * |ness- |ness+ |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// SYMBOLS +[SYMB] = LAYOUT_ergodox( + // left hand + VRSN, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, + KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS, + KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV, + KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS, + EPRM,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + RGB_MOD,KC_TRNS, + KC_TRNS, + RGB_VAD,RGB_VAI,KC_TRNS, + // right hand + KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12, + KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS, + KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS, + KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS, + RGB_TOG, RGB_SLD, + KC_TRNS, + KC_TRNS, RGB_HUD, RGB_HUI +), +/* Keymap 2: Media and mouse keys + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | MsUp | | | | | | | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | Prev | Next | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | |Brwser| + * | | |------| |------| |Back | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// MEDIA AND MOUSE +[MDIA] = LAYOUT_ergodox( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + // right hand + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, + KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_WBAK +), +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + // dynamically generate these. + case EPRM: + if (record->event.pressed) { + eeconfig_init(); + } + return false; + break; + case VRSN: + if (record->event.pressed) { + SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); + } + return false; + break; + case RGB_SLD: + if (record->event.pressed) { + #ifdef RGBLIGHT_ENABLE + rgblight_mode(1); + #endif + } + return false; + break; + } + return true; +} + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { + + uint8_t layer = biton32(layer_state); + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + // TODO: Make this relevant to the ErgoDox EZ. + case 1: + ergodox_right_led_1_on(); + break; + case 2: + ergodox_right_led_2_on(); + break; + default: + // none + break; + } + +}; diff --git a/keyboards/ergodone/keymaps/default/readme.md b/keyboards/ktec/ergodone/keymaps/default/readme.md similarity index 100% rename from keyboards/ergodone/keymaps/default/readme.md rename to keyboards/ktec/ergodone/keymaps/default/readme.md diff --git a/keyboards/ergodone/keymaps/eozaki/keymap.c b/keyboards/ktec/ergodone/keymaps/eozaki/keymap.c similarity index 100% rename from keyboards/ergodone/keymaps/eozaki/keymap.c rename to keyboards/ktec/ergodone/keymaps/eozaki/keymap.c diff --git a/keyboards/ergodone/keymaps/eozaki/readme.md b/keyboards/ktec/ergodone/keymaps/eozaki/readme.md similarity index 100% rename from keyboards/ergodone/keymaps/eozaki/readme.md rename to keyboards/ktec/ergodone/keymaps/eozaki/readme.md diff --git a/keyboards/ergodone/keymaps/erovia/config.h b/keyboards/ktec/ergodone/keymaps/erovia/config.h similarity index 100% rename from keyboards/ergodone/keymaps/erovia/config.h rename to keyboards/ktec/ergodone/keymaps/erovia/config.h diff --git a/keyboards/ktec/ergodone/keymaps/erovia/keymap.c b/keyboards/ktec/ergodone/keymaps/erovia/keymap.c new file mode 100644 index 000000000000..279c8a57c17f --- /dev/null +++ b/keyboards/ktec/ergodone/keymaps/erovia/keymap.c @@ -0,0 +1,229 @@ +#include QMK_KEYBOARD_H +#include "version.h" +#include "bootmagic.h" + +#define QWERTY 0 // qwerty layer +#define COLEMAK 1 // colemak layer +#define FN 2 // function layer + +enum custom_keycodes { + QWRTY = SAFE_RANGE, // can always be here + CLMK, + VRSN, + FNCTN +}; + +/* false: Caps Lock LED is off + true: Caps Lock LED is on */ +bool CAPS_LED = false; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Qwerty layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | Copy | | Paste| 6 | 7 | 8 | 9 | 0 | Sleep | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | Tab | Q | W | E | R | T | Mute | | { | Y | U | I | O | P | \ | + * |--------+------+------+------+------+------| | | [ |------+------+------+------+------+--------| + * | Esc | A | S | D | F | G |------| |------| H | J | K | L | ; | ' | + * |--------+------+------+------+------+------| Fn1 | | } |------+------+------+------+------+--------| + * | LShift | Z | X | C | V | B | | | ] | N | M | , | . | / | RShift | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |LCtrl | LGui | LAlt | Left | Right| | Down | Up | - | = | RCtrl | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | Caps | LGui | | Ins | Del | + * ,------|------|------| |------+--------+------. + * | | | Home | | PgUp | | | + * | Space|Backsp|------| |------| Tab |Enter | + * | |ace | End | | PgDn | | | + * `--------------------' `----------------------' + */ +// If it accepts an argument (i.e, is a function), it doesn't need KC_. +// Otherwise, it needs KC_* +[QWERTY] = LAYOUT_ergodox( // layer 0 : qwerty + // left hand + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_COPY, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_MUTE, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, TT(FN), + KC_LCTL, KC_LGUI, KC_LALT, KC_LEFT, KC_RGHT, + KC_CAPS, KC_LGUI, + KC_HOME, + KC_SPC, KC_BSPC, KC_END, + // right hand + KC_PASTE, KC_6, KC_7, KC_8, KC_9, KC_0, KC_SLEP, + KC_LBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOTE, + KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, + KC_DOWN, KC_UP, KC_MINS, KC_EQL, KC_RCTL, + KC_INS, KC_DEL, + KC_PGUP, + KC_PGDN, KC_TAB, KC_ENT +), +/* Keymap 1: Colemak layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | Copy | | Paste| 6 | 7 | 8 | 9 | 0 | Sleep | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | Tab | Q | W | F | P | B | Mute | | { | J | L | U | Y | ; | \ | + * |--------+------+------+------+------+------| | | [ |------+------+------+------+------+--------| + * | Esc | A | R | S | T | G |------| |------| M | N | E | I | O | ' | + * |--------+------+------+------+------+------| Fn1 | | } |------+------+------+------+------+--------| + * | LShift | Z | X | C | D | V | | | ] | K | H | , | . | / | RShift | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |LCtrl | LGui | LAlt | Left | Right| | Down | Up | - | = | RCtrl | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | Caps | LGui | | Ins | Del | + * ,------|------|------| |------+--------+------. + * | | | Home | | PgUp | | | + * | Space|Backsp|------| |------| Tab |Enter | + * | |ace | End | | PgDn | | | + * `--------------------' `----------------------' + */ +[COLEMAK] = LAYOUT_ergodox( // layer 1 : colemak + // left hand + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_COPY, + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_MUTE, + KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_G, + KC_LSPO, KC_Z, KC_X, KC_C, KC_D, KC_V, TT(FN), + KC_LCTL, KC_LGUI, KC_LALT, KC_LEFT, KC_RGHT, + KC_CAPS, KC_LGUI, + KC_HOME, + KC_SPC, KC_BSPC, KC_END, + // right hand + KC_PASTE, KC_6, KC_7, KC_8, KC_9, KC_0, KC_SLEP, + KC_LBRC, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS, + KC_M, KC_N, KC_E, KC_I, KC_O, KC_QUOTE, + KC_RBRC, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, + KC_DOWN, KC_UP, KC_MINS, KC_EQL, KC_RCTL, + KC_INS, KC_DEL, + KC_PGUP, + KC_PGDN, KC_TAB, KC_ENT +), +/* Keymap 2: Function Layer + * + * ,---------------------------------------------------. ,--------------------------------------------------. + * |Version | F1 | F2 | F3 | F4 | F5 | F11 | | F12 | F6 | F7 | F8 | F9 | F10 | | + * |---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------| + * | | | | Prev | Play | Next | | | | | | | | | | + * |---------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | |VolDn | VolUp|------| |------| |QWRTY | CLMK | | | | + * |---------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | | | | | + * `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | | | | | + * `-----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// Functions +[FN] = LAYOUT_ergodox( + // left hand + VRSN, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + // right hand + KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, QWRTY, CLMK, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case VRSN: + if (record->event.pressed) { + SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); + } + return false; + break; + case QWRTY: + if (record->event.pressed) { + set_single_persistent_default_layer(QWERTY); + } + return false; + break; + case CLMK: + if (record->event.pressed) { + set_single_persistent_default_layer(COLEMAK); + } + return false; + break; + case KC_CAPS: + if (record->event.pressed) { + // Turn LED1 On/Off for Caps Lock + if (CAPS_LED) { + ergodox_right_led_1_off(); + CAPS_LED = false; + } else { + ergodox_right_led_1_on(); + CAPS_LED = true; + } + } + return true; + break; + } + return true; +}; + +// Set LED according to the default layer +void default_layer_led_set(void) { + switch (biton32(eeconfig_read_default_layer())) { + case COLEMAK: + // LED2 for COLEMAK + ergodox_right_led_2_on(); + break; + case QWERTY: + // LED3 for QWERTY + ergodox_right_led_3_on(); + break; + }; +}; + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { + default_layer_led_set(); +}; + +layer_state_t layer_state_set_user(layer_state_t state) { + ergodox_led_all_off(); + switch (biton32(state)) { + case FN: + // Red led on Pro Micro for Fn layer + ergodox_board_led_on(); + break; + }; + + if (CAPS_LED) { + ergodox_right_led_1_on(); + } + + default_layer_led_set(); + + return state; +}; + +void suspend_power_down_user(void) { + ergodox_led_all_off(); +}; + +void suspend_wakeup_init_user(void) { + default_layer_led_set(); +}; diff --git a/keyboards/ergodone/keymaps/erovia/readme.md b/keyboards/ktec/ergodone/keymaps/erovia/readme.md similarity index 100% rename from keyboards/ergodone/keymaps/erovia/readme.md rename to keyboards/ktec/ergodone/keymaps/erovia/readme.md diff --git a/keyboards/ergodone/keymaps/erovia/rules.mk b/keyboards/ktec/ergodone/keymaps/erovia/rules.mk similarity index 100% rename from keyboards/ergodone/keymaps/erovia/rules.mk rename to keyboards/ktec/ergodone/keymaps/erovia/rules.mk diff --git a/keyboards/ergodone/keymaps/kloki/keymap.c b/keyboards/ktec/ergodone/keymaps/kloki/keymap.c similarity index 100% rename from keyboards/ergodone/keymaps/kloki/keymap.c rename to keyboards/ktec/ergodone/keymaps/kloki/keymap.c diff --git a/keyboards/ergodone/keymaps/kloki/readme.md b/keyboards/ktec/ergodone/keymaps/kloki/readme.md similarity index 100% rename from keyboards/ergodone/keymaps/kloki/readme.md rename to keyboards/ktec/ergodone/keymaps/kloki/readme.md diff --git a/keyboards/ergodone/keymaps/vega/keymap.c b/keyboards/ktec/ergodone/keymaps/vega/keymap.c similarity index 100% rename from keyboards/ergodone/keymaps/vega/keymap.c rename to keyboards/ktec/ergodone/keymaps/vega/keymap.c diff --git a/keyboards/ergodone/keymaps/vega/rules.mk b/keyboards/ktec/ergodone/keymaps/vega/rules.mk similarity index 100% rename from keyboards/ergodone/keymaps/vega/rules.mk rename to keyboards/ktec/ergodone/keymaps/vega/rules.mk diff --git a/keyboards/ergodone/keymaps/via/config.h b/keyboards/ktec/ergodone/keymaps/via/config.h similarity index 100% rename from keyboards/ergodone/keymaps/via/config.h rename to keyboards/ktec/ergodone/keymaps/via/config.h diff --git a/keyboards/ergodone/keymaps/via/keymap.c b/keyboards/ktec/ergodone/keymaps/via/keymap.c similarity index 100% rename from keyboards/ergodone/keymaps/via/keymap.c rename to keyboards/ktec/ergodone/keymaps/via/keymap.c diff --git a/keyboards/ergodone/keymaps/via/readme.md b/keyboards/ktec/ergodone/keymaps/via/readme.md similarity index 100% rename from keyboards/ergodone/keymaps/via/readme.md rename to keyboards/ktec/ergodone/keymaps/via/readme.md diff --git a/keyboards/ktec/ergodone/keymaps/via/rules.mk b/keyboards/ktec/ergodone/keymaps/via/rules.mk new file mode 100644 index 000000000000..43061db1dd46 --- /dev/null +++ b/keyboards/ktec/ergodone/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/ergodone/matrix.c b/keyboards/ktec/ergodone/matrix.c similarity index 100% rename from keyboards/ergodone/matrix.c rename to keyboards/ktec/ergodone/matrix.c diff --git a/keyboards/ktec/ergodone/readme.md b/keyboards/ktec/ergodone/readme.md new file mode 100644 index 000000000000..c06222b2863c --- /dev/null +++ b/keyboards/ktec/ergodone/readme.md @@ -0,0 +1,28 @@ +# ErgoDone + +![ErgoDone](https://i.imgur.com/QERsQGQ.jpg) + +The ErgoDone is a modified version of the ErgoDox, made by K.T.E.C., with pre-soldered components. It has different wiring and uses a SparkFun Pro Micro instead of Teensy. + +- Keyboard maintainer: [Yu He](http://github.com/yuhe00) +- Hardware supported: + - ErgoDone v1.3 (tested) +- Hardware availability: + - [AliExpress](https://www.aliexpress.com/store/product/ergodone-Custom-Mechanical-Keyboard-TKG-TOOLS-PCB-programmed-Ergonomic-Keyboard-Kit-similar-with-infinity-ergodox/3034003_32830050940.html) + - [KBDfans](https://kbdfans.myshopify.com/collections/pcb/products/ergodone-keyboard-pcb-1pcs-free-shipping) + +Make example for this keyboard (after setting up your build environment): + + make ktec/ergodone:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Flashing the firmware onto the keyboard + +The ErgoDone uses a customized HID bootloader rather than the Teensy one. It doesn't need an OS driver, and the required actions before flashing are a little different than with an ErgoDox. + +1. To enter flash mode, disconnect the keyboard first. Then, on the left-hand device, in the top row, press and hold the two rightmost keys while reconnecting the keyboard. +![Ergodone Flash Mode](https://i.imgur.com/sNivAnr.jpg) +2. To flash the .hex file, use the `hid_bootloader_cli` utlity from the [TKG Toolkit](https://github.com/kairyu/tkg-toolkit) (as of 2017-10-03, only [this old version](https://github.com/kairyu/tkg-toolkit/blob/b14c67ca8bc84c07e5fc6b2e01ae4002b808243a/windows/bin/hid_bootloader_cli.exe) works under Windows): + + hid_bootloader_cli -mmcu=atmega32u4 ktec_ergodone_default.hex diff --git a/keyboards/ktec/ergodone/rules.mk b/keyboards/ktec/ergodone/rules.mk new file mode 100644 index 000000000000..470c794a9962 --- /dev/null +++ b/keyboards/ktec/ergodone/rules.mk @@ -0,0 +1,28 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# comment out to disable the options. +# +CUSTOM_MATRIX = yes # Custom matrix file for the ErgoDone +UNICODE_ENABLE = yes # Unicode +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 # USB Nkey Rollover - not yet supported in LUFA +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +SWAP_HANDS_ENABLE = no # Disable Onehand +RGBLIGHT_ENABLE = no + +# project specific files +QUANTUM_LIB_SRC += i2c_master.c +SRC = \ + matrix.c \ + expander.c \ + +LAYOUTS = ergodox diff --git a/keyboards/staryu/backlight_staryu.h b/keyboards/ktec/staryu/backlight_staryu.h similarity index 100% rename from keyboards/staryu/backlight_staryu.h rename to keyboards/ktec/staryu/backlight_staryu.h diff --git a/keyboards/staryu/config.h b/keyboards/ktec/staryu/config.h similarity index 100% rename from keyboards/staryu/config.h rename to keyboards/ktec/staryu/config.h diff --git a/keyboards/ktec/staryu/info.json b/keyboards/ktec/staryu/info.json new file mode 100644 index 000000000000..deaf3d140a97 --- /dev/null +++ b/keyboards/ktec/staryu/info.json @@ -0,0 +1,10 @@ +{ + "keyboard_name": "staryu", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT": { + "layout": [{"x":1, "y":0}, {"x":2, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}] + } + } +} diff --git a/keyboards/staryu/keymaps/default/README.md b/keyboards/ktec/staryu/keymaps/default/README.md similarity index 100% rename from keyboards/staryu/keymaps/default/README.md rename to keyboards/ktec/staryu/keymaps/default/README.md diff --git a/keyboards/staryu/keymaps/default/keymap.c b/keyboards/ktec/staryu/keymaps/default/keymap.c similarity index 100% rename from keyboards/staryu/keymaps/default/keymap.c rename to keyboards/ktec/staryu/keymaps/default/keymap.c diff --git a/keyboards/staryu/keymaps/default/rules.mk b/keyboards/ktec/staryu/keymaps/default/rules.mk similarity index 100% rename from keyboards/staryu/keymaps/default/rules.mk rename to keyboards/ktec/staryu/keymaps/default/rules.mk diff --git a/keyboards/staryu/keymaps/krusli/README.md b/keyboards/ktec/staryu/keymaps/krusli/README.md similarity index 100% rename from keyboards/staryu/keymaps/krusli/README.md rename to keyboards/ktec/staryu/keymaps/krusli/README.md diff --git a/keyboards/staryu/keymaps/krusli/keymap.c b/keyboards/ktec/staryu/keymaps/krusli/keymap.c similarity index 100% rename from keyboards/staryu/keymaps/krusli/keymap.c rename to keyboards/ktec/staryu/keymaps/krusli/keymap.c diff --git a/keyboards/ktec/staryu/readme.md b/keyboards/ktec/staryu/readme.md new file mode 100644 index 000000000000..f0d019de23fd --- /dev/null +++ b/keyboards/ktec/staryu/readme.md @@ -0,0 +1,15 @@ +# Staryu + +![Staryu](https://i.imgur.com/obcCpZN.jpg) + +A 5 key macropad, designed by Kai and sold by KPRepublic. + +* Keyboard Maintainer: QMK Community +* Hardware Supported: Staryu (only the non-lite version has been tested) +* Hardware Availability: [AliExpress](https://www.aliexpress.com/item/Staryu-Mini-Macro-Pad-custom-keyboard-by-tkg-kai-Mini-macro-pad-mechanical-keyboard-5-keys/32817560746.html) + +Make example for this keyboard (after setting up your build environment): + + make ktec/staryu:default + +See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. diff --git a/keyboards/ktec/staryu/rules.mk b/keyboards/ktec/staryu/rules.mk new file mode 100755 index 000000000000..2a7423e492e4 --- /dev/null +++ b/keyboards/ktec/staryu/rules.mk @@ -0,0 +1,19 @@ +# MCU name +MCU = atmega32u2 + +# Bootloader selection +BOOTLOADER = lufa-dfu + +# Build Options +# comment out to disable the options. +# +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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/staryu/staryu.c b/keyboards/ktec/staryu/staryu.c similarity index 100% rename from keyboards/staryu/staryu.c rename to keyboards/ktec/staryu/staryu.c diff --git a/keyboards/staryu/staryu.h b/keyboards/ktec/staryu/staryu.h similarity index 100% rename from keyboards/staryu/staryu.h rename to keyboards/ktec/staryu/staryu.h diff --git a/keyboards/kudox/rev1/rev1.c b/keyboards/kudox/rev1/rev1.c index 3b39ee764d45..abcdf4843e55 100644 --- a/keyboards/kudox/rev1/rev1.c +++ b/keyboards/kudox/rev1/rev1.c @@ -1,22 +1 @@ #include "kudox.h" - - -#ifdef SSD1306OLED -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - led_set_user(usb_led); -} -#endif - -void matrix_init_kb(void) { - - // // green led on - // DDRD |= (1<<5); - // PORTD &= ~(1<<5); - - // // orange led on - // DDRB |= (1<<0); - // PORTB &= ~(1<<0); - - matrix_init_user(); -}; diff --git a/keyboards/kudox/rules.mk b/keyboards/kudox/rules.mk index bc8b8ae42387..8223cf6fead3 100644 --- a/keyboards/kudox/rules.mk +++ b/keyboards/kudox/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. SPLIT_KEYBOARD = yes diff --git a/keyboards/kudox_game/info.json b/keyboards/kudox_game/info.json index 0862dade53ba..47fdd84b3473 100644 --- a/keyboards/kudox_game/info.json +++ b/keyboards/kudox_game/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Kudox Game Keyboard", "url": "", "maintainer": "Kumao Kobo", - "width": 7.5, - "height": 6.75, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/kudox_game/rev1/rev1.c b/keyboards/kudox_game/rev1/rev1.c index 8f1b8b2b6819..32356f8a4ae0 100644 --- a/keyboards/kudox_game/rev1/rev1.c +++ b/keyboards/kudox_game/rev1/rev1.c @@ -1,22 +1 @@ #include "kudox_game.h" - - -#ifdef SSD1306OLED -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - led_set_user(usb_led); -} -#endif - -void matrix_init_kb(void) { - - // // green led on - // DDRD |= (1<<5); - // PORTD &= ~(1<<5); - - // // orange led on - // DDRB |= (1<<0); - // PORTB &= ~(1<<0); - - matrix_init_user(); -}; diff --git a/keyboards/kudox_game/rules.mk b/keyboards/kudox_game/rules.mk index 8f217cde08a0..7578f3e8e6a2 100644 --- a/keyboards/kudox_game/rules.mk +++ b/keyboards/kudox_game/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. DEFAULT_FOLDER = kudox_game/rev2 diff --git a/keyboards/kv/revt/info.json b/keyboards/kv/revt/info.json index 176e4575348e..6f2b30b29353 100644 --- a/keyboards/kv/revt/info.json +++ b/keyboards/kv/revt/info.json @@ -2,8 +2,6 @@ "keyboard_name": "KVT", "url": "", "maintainer": "qmk", - "width": 22.5, - "height": 6, "layouts": { "LAYOUT_default": { "layout": [ diff --git a/keyboards/kv/revt/rules.mk b/keyboards/kv/revt/rules.mk index 7d2acfcd0a4d..9f38ed1b1b01 100644 --- a/keyboards/kv/revt/rules.mk +++ b/keyboards/kv/revt/rules.mk @@ -8,17 +8,13 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/kwub/bloop/bloop.c b/keyboards/kwub/bloop/bloop.c new file mode 100644 index 000000000000..bbd2980b532b --- /dev/null +++ b/keyboards/kwub/bloop/bloop.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Kwabena Aduse-Poku (Kwub) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "bloop.h" diff --git a/keyboards/kwub/bloop/bloop.h b/keyboards/kwub/bloop/bloop.h new file mode 100644 index 000000000000..548225c0589c --- /dev/null +++ b/keyboards/kwub/bloop/bloop.h @@ -0,0 +1,76 @@ +/* Copyright 2021 Kwabena Aduse-Poku (Kwub) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +// clang-format off +#define LAYOUT_625( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K314, \ + K400, K401, K402, K405, K409, K410, K411, K412, K414 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, KC_NO }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, KC_NO, K214 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO, K314 }, \ + { K400, K401, K402, KC_NO, KC_NO, K405, KC_NO, KC_NO, KC_NO, K409, K410, K411, K412, KC_NO, K414 } \ +} + +#define LAYOUT_625_split_bs( \ + 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, K114, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K314, \ + K400, K401, K402, K405, K409, K410, K411, K412, K414 \ +) { \ + { 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, K114 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, KC_NO, K214 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO, K314 }, \ + { K400, K401, K402, KC_NO, KC_NO, K405, KC_NO, KC_NO, KC_NO, K409, K410, K411, K412, KC_NO, K414 } \ +} + +#define LAYOUT_7( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K314, \ + K400, K401, K402, K405, K410, K411, K412, K414 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, KC_NO }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, KC_NO, K214 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO, K314 }, \ + { K400, K401, K402, KC_NO, KC_NO, K405, KC_NO, KC_NO, KC_NO, KC_NO, K410, K411, K412, KC_NO, K414 } \ +} + +#define LAYOUT_7_split_bs( \ + 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, K114, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K314, \ + K400, K401, K402, K405, K410, K411, K412, K414 \ +) { \ + { 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, K114 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, KC_NO, K214 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO, K314 }, \ + { K400, K401, K402, KC_NO, KC_NO, K405, KC_NO, KC_NO, KC_NO, KC_NO, K410, K411, K412, KC_NO, K414 } \ +} diff --git a/keyboards/kwub/bloop/config.h b/keyboards/kwub/bloop/config.h new file mode 100644 index 000000000000..f3c0bae637da --- /dev/null +++ b/keyboards/kwub/bloop/config.h @@ -0,0 +1,63 @@ +/* Copyright 2021 Kwabena Aduse-Poku (Kwub) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x6B77 // Kwub +#define PRODUCT_ID 0x0001 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Kwub +#define PRODUCT Bloop65 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* key matrix pins */ +#define MATRIX_ROW_PINS \ + { F5, F4, C6, C7, D7 } +#define MATRIX_COL_PINS \ + { B4, B5, B6, F6, F1, F7, F0, B0, B7, D3, D2, D1, D5, D4, D6 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* number of backlight levels */ + +#ifdef BACKLIGHT_PIN +# define BACKLIGHT_LEVELS 3 +#endif + +/* Set 0 if debouncing isn't needed */ +#define 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 + +#ifdef RGB_DI_PIN +# define RGBLIGHT_ANIMATIONS +# define RGBLED_NUM 0 +# define RGBLIGHT_HUE_STEP 8 +# define RGBLIGHT_SAT_STEP 8 +# define RGBLIGHT_VAL_STEP 8 +#endif diff --git a/keyboards/kwub/bloop/info.json b/keyboards/kwub/bloop/info.json new file mode 100644 index 000000000000..aa87c2e452c5 --- /dev/null +++ b/keyboards/kwub/bloop/info.json @@ -0,0 +1,43 @@ +{ + "keyboard_name": "Bloop65", + "url": "https://geekhack.org/index.php?topic=110483.0", + "maintainer": "Kwub", + "layouts": { + "LAYOUT_625": { + "layout": [ + {"x":0,"y":0},{"x":1,"y":0},{"x":2,"y":0},{"x":3,"y":0},{"x":4,"y":0},{"x":5,"y":0},{"x":6,"y":0},{"x":7,"y":0},{"x":8,"y":0},{"x":9,"y":0},{"x":10,"y":0},{"x":11,"y":0},{"x":12,"y":0},{"x":13,"y":0,"w":2}, + {"x":0,"y":1,"w":1.5},{"x":1.5,"y":1},{"x":2.5,"y":1},{"x":3.5,"y":1},{"x":4.5,"y":1},{"x":5.5,"y":1},{"x":6.5,"y":1},{"x":7.5,"y":1},{"x":8.5,"y":1},{"x":9.5,"y":1},{"x":10.5,"y":1},{"x":11.5,"y":1},{"x":12.5,"y":1},{"x":13.5,"y":1,"w":1.5},{"x":15,"y":1}, + {"x":0,"y":2,"w":1.75},{"x":1.75,"y":2},{"x":2.75,"y":2},{"x":3.75,"y":2},{"x":4.75,"y":2},{"x":5.75,"y":2},{"x":6.75,"y":2},{"x":7.75,"y":2},{"x":8.75,"y":2},{"x":9.75,"y":2},{"x":10.75,"y":2},{"x":11.75,"y":2},{"x":12.75,"y":2,"w":2.25},{"x":15,"y":2}, + {"x":0,"y":3,"w":2.25},{"x":2.25,"y":3},{"x":3.25,"y":3},{"x":4.25,"y":3},{"x":5.25,"y":3},{"x":6.25,"y":3},{"x":7.25,"y":3},{"x":8.25,"y":3},{"x":9.25,"y":3},{"x":10.25,"y":3},{"x":11.25,"y":3},{"x":12.25,"y":3,"w":1.75},{"x":14,"y":3},{"x":15,"y":3}, + {"x":0,"y":4,"w":1.25},{"x":1.25,"y":4,"w":1.25},{"x":2.5,"y":4,"w":1.25},{"x":3.75,"y":4,"w":6.25},{"x":10,"y":4,"w":1.25},{"x":11.25,"y":4,"w":1.25},{"x":13,"y":4},{"x":14,"y":4},{"x":15,"y":4} + ] + }, + "LAYOUT_625_split_bs": { + "layout": [ + {"x":0,"y":0},{"x":1,"y":0},{"x":2,"y":0},{"x":3,"y":0},{"x":4,"y":0},{"x":5,"y":0},{"x":6,"y":0},{"x":7,"y":0},{"x":8,"y":0},{"x":9,"y":0},{"x":10,"y":0},{"x":11,"y":0},{"x":12,"y":0},{"x":13,"y":0},{"x":14,"y":0}, + {"x":0,"y":1,"w":1.5},{"x":1.5,"y":1},{"x":2.5,"y":1},{"x":3.5,"y":1},{"x":4.5,"y":1},{"x":5.5,"y":1},{"x":6.5,"y":1},{"x":7.5,"y":1},{"x":8.5,"y":1},{"x":9.5,"y":1},{"x":10.5,"y":1},{"x":11.5,"y":1},{"x":12.5,"y":1},{"x":13.5,"y":1,"w":1.5},{"x":15,"y":1}, + {"x":0,"y":2,"w":1.75},{"x":1.75,"y":2},{"x":2.75,"y":2},{"x":3.75,"y":2},{"x":4.75,"y":2},{"x":5.75,"y":2},{"x":6.75,"y":2},{"x":7.75,"y":2},{"x":8.75,"y":2},{"x":9.75,"y":2},{"x":10.75,"y":2},{"x":11.75,"y":2},{"x":12.75,"y":2,"w":2.25},{"x":15,"y":2}, + {"x":0,"y":3,"w":2.25},{"x":2.25,"y":3},{"x":3.25,"y":3},{"x":4.25,"y":3},{"x":5.25,"y":3},{"x":6.25,"y":3},{"x":7.25,"y":3},{"x":8.25,"y":3},{"x":9.25,"y":3},{"x":10.25,"y":3},{"x":11.25,"y":3},{"x":12.25,"y":3,"w":1.75},{"x":14,"y":3},{"x":15,"y":3}, + {"x":0,"y":4,"w":1.25},{"x":1.25,"y":4,"w":1.25},{"x":2.5,"y":4,"w":1.25},{"x":3.75,"y":4,"w":6.25},{"x":10,"y":4,"w":1.25},{"x":11.25,"y":4,"w":1.25},{"x":13,"y":4},{"x":14,"y":4},{"x":15,"y":4} + ] + }, + "LAYOUT_7": { + "layout": [ + {"x":0,"y":0},{"x":1,"y":0},{"x":2,"y":0},{"x":3,"y":0},{"x":4,"y":0},{"x":5,"y":0},{"x":6,"y":0},{"x":7,"y":0},{"x":8,"y":0},{"x":9,"y":0},{"x":10,"y":0},{"x":11,"y":0},{"x":12,"y":0},{"x":13,"y":0,"w":2}, + {"x":0,"y":1,"w":1.5},{"x":1.5,"y":1},{"x":2.5,"y":1},{"x":3.5,"y":1},{"x":4.5,"y":1},{"x":5.5,"y":1},{"x":6.5,"y":1},{"x":7.5,"y":1},{"x":8.5,"y":1},{"x":9.5,"y":1},{"x":10.5,"y":1},{"x":11.5,"y":1},{"x":12.5,"y":1},{"x":13.5,"y":1,"w":1.5},{"x":15,"y":1}, + {"x":0,"y":2,"w":1.75},{"x":1.75,"y":2},{"x":2.75,"y":2},{"x":3.75,"y":2},{"x":4.75,"y":2},{"x":5.75,"y":2},{"x":6.75,"y":2},{"x":7.75,"y":2},{"x":8.75,"y":2},{"x":9.75,"y":2},{"x":10.75,"y":2},{"x":11.75,"y":2},{"x":12.75,"y":2,"w":2.25},{"x":15,"y":2}, + {"x":0,"y":3,"w":2.25},{"x":2.25,"y":3},{"x":3.25,"y":3},{"x":4.25,"y":3},{"x":5.25,"y":3},{"x":6.25,"y":3},{"x":7.25,"y":3},{"x":8.25,"y":3},{"x":9.25,"y":3},{"x":10.25,"y":3},{"x":11.25,"y":3},{"x":12.25,"y":3,"w":1.75},{"x":14,"y":3},{"x":15,"y":3}, + {"x":0,"y":4,"w":1.5},{"x":1.5,"y":4},{"x":2.5,"y":4,"w":1.5},{"x":4,"y":4,"w":7},{"x":11,"y":4,"w":1.5},{"x":13,"y":4},{"x":14,"y":4},{"x":15,"y":4} + ] + }, + "LAYOUT_7_split_bs": { + "layout": [ + {"x":0,"y":0},{"x":1,"y":0},{"x":2,"y":0},{"x":3,"y":0},{"x":4,"y":0},{"x":5,"y":0},{"x":6,"y":0},{"x":7,"y":0},{"x":8,"y":0},{"x":9,"y":0},{"x":10,"y":0},{"x":11,"y":0},{"x":12,"y":0},{"x":13,"y":0},{"x":14,"y":0}, + {"x":0,"y":1,"w":1.5},{"x":1.5,"y":1},{"x":2.5,"y":1},{"x":3.5,"y":1},{"x":4.5,"y":1},{"x":5.5,"y":1},{"x":6.5,"y":1},{"x":7.5,"y":1},{"x":8.5,"y":1},{"x":9.5,"y":1},{"x":10.5,"y":1},{"x":11.5,"y":1},{"x":12.5,"y":1},{"x":13.5,"y":1,"w":1.5},{"x":15,"y":1}, + {"x":0,"y":2,"w":1.75},{"x":1.75,"y":2},{"x":2.75,"y":2},{"x":3.75,"y":2},{"x":4.75,"y":2},{"x":5.75,"y":2},{"x":6.75,"y":2},{"x":7.75,"y":2},{"x":8.75,"y":2},{"x":9.75,"y":2},{"x":10.75,"y":2},{"x":11.75,"y":2},{"x":12.75,"y":2,"w":2.25},{"x":15,"y":2}, + {"x":0,"y":3,"w":2.25},{"x":2.25,"y":3},{"x":3.25,"y":3},{"x":4.25,"y":3},{"x":5.25,"y":3},{"x":6.25,"y":3},{"x":7.25,"y":3},{"x":8.25,"y":3},{"x":9.25,"y":3},{"x":10.25,"y":3},{"x":11.25,"y":3},{"x":12.25,"y":3,"w":1.75},{"x":14,"y":3},{"x":15,"y":3}, + {"x":0,"y":4,"w":1.5},{"x":1.5,"y":4},{"x":2.5,"y":4,"w":1.5},{"x":4,"y":4,"w":7},{"x":11,"y":4,"w":1.5},{"x":13,"y":4},{"x":14,"y":4},{"x":15,"y":4} + ] + } + } +} diff --git a/keyboards/kwub/bloop/keymaps/crispyy/keymap.c b/keyboards/kwub/bloop/keymaps/crispyy/keymap.c new file mode 100644 index 000000000000..6892f5d14bdd --- /dev/null +++ b/keyboards/kwub/bloop/keymaps/crispyy/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2021 Kwabena Aduse-Poku (Kwub) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum keyboard_layers { + _BL = 0, // Base layer + _FL, // Function +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [_BL]= LAYOUT_625_split_bs( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_VOLU, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_VOLD, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_FL), KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT), + + [_FL]= LAYOUT_625_split_bs( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_VOLU, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT) +}; diff --git a/keyboards/kwub/bloop/keymaps/default/keymap.c b/keyboards/kwub/bloop/keymaps/default/keymap.c new file mode 100644 index 000000000000..4b0518b09e2e --- /dev/null +++ b/keyboards/kwub/bloop/keymaps/default/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2021 Kwabena Aduse-Poku (Kwub) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum keyboard_layers { + _BL = 0, // Base layer + _FL, // Function layer +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [_BL]= LAYOUT_625_split_bs( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(_FL), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT), + + [_FL]= LAYOUT_625_split_bs( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_VOLU, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT) +}; diff --git a/keyboards/kwub/bloop/keymaps/default/readme.md b/keyboards/kwub/bloop/keymaps/default/readme.md new file mode 100644 index 000000000000..4de2f94c02f4 --- /dev/null +++ b/keyboards/kwub/bloop/keymaps/default/readme.md @@ -0,0 +1 @@ +# Default keymap for the Bloop65 \ No newline at end of file diff --git a/keyboards/kwub/bloop/keymaps/kevin_hhkb/keymap.c b/keyboards/kwub/bloop/keymaps/kevin_hhkb/keymap.c new file mode 100644 index 000000000000..80faf620c376 --- /dev/null +++ b/keyboards/kwub/bloop/keymaps/kevin_hhkb/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2021 Kwabena Aduse-Poku (Kwub) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum keyboard_layers { + _BL = 0, // Base layer + _FL, // Function +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [_BL]= LAYOUT_625_split_bs( + 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_BSLS, KC_GRV, + 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_PGUP, + 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_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(_FL), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT), + + [_FL]= LAYOUT_625_split_bs( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_VOLU, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT) +}; diff --git a/keyboards/kwub/bloop/keymaps/via/keymap.c b/keyboards/kwub/bloop/keymaps/via/keymap.c new file mode 100644 index 000000000000..ad91fb40ce36 --- /dev/null +++ b/keyboards/kwub/bloop/keymaps/via/keymap.c @@ -0,0 +1,55 @@ +/* Copyright 2021 Kwabena Aduse-Poku (Kwub) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum keyboard_layers { + _BL = 0, // Base layer + _F1, // Function layer 1 + _F2, // Function layer 2 + _F3 // Function layer 3 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [_BL]= LAYOUT_625_split_bs( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(_F1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT), + + [_F1]= LAYOUT_625_split_bs( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + [_F2]= LAYOUT_625_split_bs( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + [_F3]= LAYOUT_625_split_bs( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; diff --git a/keyboards/kwub/bloop/keymaps/via/readme.md b/keyboards/kwub/bloop/keymaps/via/readme.md new file mode 100644 index 000000000000..2ebf4743cf4c --- /dev/null +++ b/keyboards/kwub/bloop/keymaps/via/readme.md @@ -0,0 +1 @@ +# The VIA layout for the Bloop65 \ No newline at end of file diff --git a/keyboards/kwub/bloop/keymaps/via/rules.mk b/keyboards/kwub/bloop/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/kwub/bloop/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/kwub/bloop/readme.md b/keyboards/kwub/bloop/readme.md new file mode 100644 index 000000000000..b162e6a7fc8c --- /dev/null +++ b/keyboards/kwub/bloop/readme.md @@ -0,0 +1,24 @@ +# Bloop65 +![Bloop65](https://imgur.com/WH56BIuh.png) + +[Interest check page here](https://geekhack.org/index.php?topic=110483.0) + +[Join the discord server here](https://discord.gg/XXw8fu7F8M) + +[Bloop assembly instructions here](https://imgur.com/gallery/iTgFU17) + +The Bloop is a plateless 65% inspired by the idb60 with some internal and external changes to make assembly easier. +Groupbuy ran: 2/14/2021 - 2/21/2021 + +* Keyboard Maintainer: [Kwub](https://github.com/Kwub) +* Hardware Supported: Bloop65 +* Hardware Availability: Completed groupbuy + +## How to flash +Flash by holding down the reboot switch on the back of the PCB while plugging in the USB port. + +Make example for this keyboard (after setting up your build environment): + + make kwub/bloop: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/kwub/bloop/rules.mk b/keyboards/kwub/bloop/rules.mk new file mode 100644 index 000000000000..ef61685f7c09 --- /dev/null +++ b/keyboards/kwub/bloop/rules.mk @@ -0,0 +1,19 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 diff --git a/keyboards/ky01/info.json b/keyboards/ky01/info.json index 8099759318b2..ef6498fb044b 100644 --- a/keyboards/ky01/info.json +++ b/keyboards/ky01/info.json @@ -2,435 +2,98 @@ "keyboard_name": "ky01", "url": "https://geekhack.org/index.php?topic=107809.0", "maintainer": "KnoblesseOblige", - "width": 16.25, - "height": 6.5, "layouts": { "LAYOUT": { "layout": [ - { - "label": "Esc", - "x": 0, - "y": 0 - }, - { - "label": "F1", - "x": 2, - "y": 0 - }, - { - "label": "F2", - "x": 3, - "y": 0 - }, - { - "label": "F3", - "x": 4, - "y": 0 - }, - { - "label": "F4", - "x": 5, - "y": 0 - }, - { - "label": "F5", - "x": 6.5, - "y": 0 - }, - { - "label": "F6", - "x": 7.5, - "y": 0 - }, - { - "label": "F7", - "x": 8.5, - "y": 0 - }, - { - "label": "F8", - "x": 9.5, - "y": 0 - }, - { - "label": "F9", - "x": 11, - "y": 0 - }, - { - "label": "F10", - "x": 12, - "y": 0 - }, - { - "label": "F11", - "x": 13, - "y": 0 - }, - { - "label": "F12", - "x": 14, - "y": 0 - }, - { - "label": "PrtSc", - "x": 15.25, - "y": 0 - }, - { - "label": "\\u00ac", - "x": 0, - "y": 1.5 - }, - { - "label": "!", - "x": 1, - "y": 1.5 - }, - { - "label": "\"", - "x": 2, - "y": 1.5 - }, - { - "label": "\\u00a3", - "x": 3, - "y": 1.5 - }, - { - "label": "$", - "x": 4, - "y": 1.5 - }, - { - "label": "%", - "x": 5, - "y": 1.5 - }, - { - "label": "^", - "x": 6, - "y": 1.5 - }, - { - "label": "&", - "x": 7, - "y": 1.5 - }, - { - "label": "*", - "x": 8, - "y": 1.5 - }, - { - "label": "(", - "x": 9, - "y": 1.5 - }, - { - "label": ")", - "x": 10, - "y": 1.5 - }, - { - "label": "_", - "x": 11, - "y": 1.5 - }, - { - "label": "+", - "x": 12, - "y": 1.5 - }, - { - "label": "Backspace", - "x": 13, - "y": 1.5 - }, - { - "label": "Delete", - "x": 14, - "y": 1.5 - }, - { - "label": "Insert", - "x": 15.25, - "y": 1.5 - }, - { - "label": "Tab", - "x": 0, - "y": 2.5, - "w": 1.5 - }, - { - "label": "Q", - "x": 1.5, - "y": 2.5 - }, - { - "label": "W", - "x": 2.5, - "y": 2.5 - }, - { - "label": "E", - "x": 3.5, - "y": 2.5 - }, - { - "label": "R", - "x": 4.5, - "y": 2.5 - }, - { - "label": "T", - "x": 5.5, - "y": 2.5 - }, - { - "label": "Y", - "x": 6.5, - "y": 2.5 - }, - { - "label": "U", - "x": 7.5, - "y": 2.5 - }, - { - "label": "I", - "x": 8.5, - "y": 2.5 - }, - { - "label": "O", - "x": 9.5, - "y": 2.5 - }, - { - "label": "P", - "x": 10.5, - "y": 2.5 - }, - { - "label": "{", - "x": 11.5, - "y": 2.5 - }, - { - "label": "}", - "x": 12.5, - "y": 2.5 - }, - { - "label": "Enter", - "x": 13.75, - "y": 2.5, - "w": 1.25, - "h": 2 - }, - { - "label": "Delete", - "x": 15.25, - "y": 2.5 - }, - { - "label": "Caps Lock", - "x": 0, - "y": 3.5, - "w": 1.75 - }, - { - "label": "A", - "x": 1.75, - "y": 3.5 - }, - { - "label": "S", - "x": 2.75, - "y": 3.5 - }, - { - "label": "D", - "x": 3.75, - "y": 3.5 - }, - { - "label": "F", - "x": 4.75, - "y": 3.5 - }, - { - "label": "G", - "x": 5.75, - "y": 3.5 - }, - { - "label": "H", - "x": 6.75, - "y": 3.5 - }, - { - "label": "J", - "x": 7.75, - "y": 3.5 - }, - { - "label": "K", - "x": 8.75, - "y": 3.5 - }, - { - "label": "L", - "x": 9.75, - "y": 3.5 - }, - { - "label": ":", - "x": 10.75, - "y": 3.5 - }, - { - "label": "@", - "x": 11.75, - "y": 3.5 - }, - { - "label": "~", - "x": 12.75, - "y": 3.5 - }, - { - "label": "PgDn", - "x": 15.25, - "y": 3.5 - }, - { - "label": "Shift", - "x": 0, - "y": 4.5, - "w": 1.25 - }, - { - "label": "|", - "x": 1.25, - "y": 4.5 - }, - { - "label": "Z", - "x": 2.25, - "y": 4.5 - }, - { - "label": "X", - "x": 3.25, - "y": 4.5 - }, - { - "label": "C", - "x": 4.25, - "y": 4.5 - }, - { - "label": "V", - "x": 5.25, - "y": 4.5 - }, - { - "label": "B", - "x": 6.25, - "y": 4.5 - }, - { - "label": "N", - "x": 7.25, - "y": 4.5 - }, - { - "label": "M", - "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": "Shift", - "x": 12.25, - "y": 4.5, - "w": 1.75 - }, - { - "label": "\\u2191", - "x": 14.25, - "y": 4.5 - }, - { - "label": "Ctrl", - "x": 0, - "y": 5.5, - "w": 1.25 - }, - { - "label": "Win", - "x": 1.25, - "y": 5.5, - "w": 1.25 - }, - { - "label": "Alt", - "x": 2.5, - "y": 5.5, - "w": 1.25 - }, - { - "x": 3.75, - "y": 5.5, - "w": 6.25 - }, - { - "label": "AltGr", - "x": 10, - "y": 5.5 - }, - { - "label": "Win", - "x": 11, - "y": 5.5 - }, - { - "label": "Ctrl", - "x": 12, - "y": 5.5 - }, - { - "label": "\\u2190", - "x": 13.25, - "y": 5.5 - }, - { - "label": "\\u2193", - "x": 14.25, - "y": 5.5 - }, - { - "label": "\\u2192", - "x": 15.25, - "y": 5.5 - } + {"x":0, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.5, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15.25, "y":0}, + + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2, "y":1.25}, + {"x":3, "y":1.25}, + {"x":4, "y":1.25}, + {"x":5, "y":1.25}, + {"x":6, "y":1.25}, + {"x":7, "y":1.25}, + {"x":8, "y":1.25}, + {"x":9, "y":1.25}, + {"x":10, "y":1.25}, + {"x":11, "y":1.25}, + {"x":12, "y":1.25}, + {"x":13, "y":1.25}, + {"x":14, "y":1.25}, + {"x":15.25, "y":1.25}, + + {"x":0, "y":2.25, "w":1.5}, + {"x":1.5, "y":2.25}, + {"x":2.5, "y":2.25}, + {"x":3.5, "y":2.25}, + {"x":4.5, "y":2.25}, + {"x":5.5, "y":2.25}, + {"x":6.5, "y":2.25}, + {"x":7.5, "y":2.25}, + {"x":8.5, "y":2.25}, + {"x":9.5, "y":2.25}, + {"x":10.5, "y":2.25}, + {"x":11.5, "y":2.25}, + {"x":12.5, "y":2.25}, + {"x":13.5, "y":2.25, "w":1.5}, + {"x":15.25, "y":2.25}, + + {"x":0, "y":3.25, "w":1.75}, + {"x":1.75, "y":3.25}, + {"x":2.75, "y":3.25}, + {"x":3.75, "y":3.25}, + {"x":4.75, "y":3.25}, + {"x":5.75, "y":3.25}, + {"x":6.75, "y":3.25}, + {"x":7.75, "y":3.25}, + {"x":8.75, "y":3.25}, + {"x":9.75, "y":3.25}, + {"x":10.75, "y":3.25}, + {"x":11.75, "y":3.25}, + {"x":12.75, "y":3.25}, + {"x":13.75, "y":3.25, "w":1.25}, + {"x":15.25, "y":3.25}, + + {"x":0, "y":4.25, "w":1.25}, + {"x":1.25, "y":4.25}, + {"x":2.25, "y":4.25}, + {"x":3.25, "y":4.25}, + {"x":4.25, "y":4.25}, + {"x":5.25, "y":4.25}, + {"x":6.25, "y":4.25}, + {"x":7.25, "y":4.25}, + {"x":8.25, "y":4.25}, + {"x":9.25, "y":4.25}, + {"x":10.25, "y":4.25}, + {"x":11.25, "y":4.25}, + {"x":12.25, "y":4.25, "w":1.75}, + {"x":14.25, "y":4.5}, + + {"x":0, "y":5.25, "w":1.25}, + {"x":1.25, "y":5.25, "w":1.25}, + {"x":2.5, "y":5.25, "w":1.25}, + {"x":3.75, "y":5.25, "w":6.25}, + {"x":10, "y":5.25}, + {"x":11, "y":5.25}, + {"x":12, "y":5.25}, + {"x":13.25, "y":5.5}, + {"x":14.25, "y":5.5}, + {"x":15.25, "y":5.5} ] } } diff --git a/keyboards/ky01/rules.mk b/keyboards/ky01/rules.mk index 000f55911ad3..182df619f905 100644 --- a/keyboards/ky01/rules.mk +++ b/keyboards/ky01/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/kyria/info.json b/keyboards/kyria/info.json deleted file mode 100644 index a2bfd578ce33..000000000000 --- a/keyboards/kyria/info.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "keyboard_name": "Kyria", - "url": "https://splitkb.com", - "maintainer": "splitkb.com", - "width": 16.5, - "height": 5.25, - "layouts": { - "LAYOUT": { - "layout": [ - {"x":0, "y":0.75}, - {"x":1, "y":0.75}, - {"x":2, "y":0.25}, - {"x":3, "y":0}, - {"x":4, "y":0.25}, - {"x":5, "y":0.5}, - {"x":10.5, "y":0.5}, - {"x":11.5, "y":0.25}, - {"x":12.5, "y":0}, - {"x":13.5, "y":0.25}, - {"x":14.5, "y":0.75}, - {"x":15.5, "y":0.75}, - {"x":0, "y":1.75}, - {"x":1, "y":1.75}, - {"x":2, "y":1.25}, - {"x":3, "y":1}, - {"x":4, "y":1.25}, - {"x":5, "y":1.5}, - {"x":10.5, "y":1.5}, - {"x":11.5, "y":1.25}, - {"x":12.5, "y":1}, - {"x":13.5, "y":1.25}, - {"x":14.5, "y":1.75}, - {"x":15.5, "y":1.75}, - {"x":0, "y":2.75}, - {"x":1, "y":2.75}, - {"x":2, "y":2.25}, - {"x":3, "y":2}, - {"x":4, "y":2.25}, - {"x":5, "y":2.5}, - {"x":6, "y":3}, - {"x":7, "y":3.25}, - {"x":8.5, "y":3.25}, - {"x":9.5, "y":3}, - {"x":10.5, "y":2.5}, - {"x":11.5, "y":2.25}, - {"x":12.5, "y":2}, - {"x":13.5, "y":2.25}, - {"x":14.5, "y":2.75}, - {"x":15.5, "y":2.75}, - {"x":2.5, "y":3.25}, - {"x":3.5, "y":3.25}, - {"x":4.5, "y":3.5}, - {"x":5.5, "y":4}, - {"x":6.5, "y":4.25}, - {"x":9, "y":4.25}, - {"x":10, "y":4}, - {"x":11, "y":3.5}, - {"x":12, "y":3.25}, - {"x":13, "y":3.25} - ] - } - } -} diff --git a/keyboards/kyria/keymaps/asapjockey/config.h b/keyboards/kyria/keymaps/asapjockey/config.h deleted file mode 100644 index e878663bfb1e..000000000000 --- a/keyboards/kyria/keymaps/asapjockey/config.h +++ /dev/null @@ -1,47 +0,0 @@ -/* Copyright 2019 Thomas Baart - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#ifdef OLED_DRIVER_ENABLE - #define OLED_DISPLAY_128X64 -#endif - -#ifdef RGBLIGHT_ENABLE - #define RGBLIGHT_ANIMATIONS - #define RGBLIGHT_HUE_STEP 8 - #define RGBLIGHT_SAT_STEP 8 - #define RGBLIGHT_VAL_STEP 8 - #define RGBLIGHT_SLEEP -#endif - -// EC11K encoders have a different resolution than other EC11 encoders. -// When using the default resolution of 4, if you notice your encoder skipping -// every other tick, lower the resolution to 2. -#define ENCODER_RESOLUTION 2 - -// The Leader key allows to flexibly assign macros to key sequences. -#define LEADER_PER_KEY_TIMING -#define LEADER_TIMEOUT 350 - -#define TAPPING_TERM 200 - -// Allows to use either side as the master. Look at the documentation for info: -// https://docs.qmk.fm/#/config_options?id=setting-handedness -#define EE_HANDS - -// Allows media codes to properly register in macros and rotary encoder code -#define TAP_CODE_DELAY 10 \ No newline at end of file diff --git a/keyboards/kyria/keymaps/asapjockey/keymap.c b/keyboards/kyria/keymaps/asapjockey/keymap.c deleted file mode 100644 index 9d0d2955e6e3..000000000000 --- a/keyboards/kyria/keymaps/asapjockey/keymap.c +++ /dev/null @@ -1,313 +0,0 @@ -/* Copyright 2019 Thomas Baart - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include QMK_KEYBOARD_H - -enum layers { - QWERTY, - LOWER, - RAISE, - NAV, - ADJUST -}; - -enum custom_keycodes { - KC_LBR = SAFE_RANGE, - KC_RBR -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* - * Base Layer: QWERTY - * - * ,-------------------------------------------. ,-------------------------------------------. - * | TAB | Q | W | E | R | T | | Y | U | I | O | P | RCTL | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * | LCTL | A | S | D | F | G | | H | J | K | L | ; : | ' " | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | LSFT | Z | X | C | V | B | Del | Raise| |Adjust| Esc | N | M | , < | . > | / ? | LSFT | - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * | | LALT | | Bspc | Lower| | Enter| Space| [ { | ] } | | - * | | | | | | | | | | | | - * `----------------------------------' `----------------------------------' - */ - [QWERTY] = LAYOUT( - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_RCTL, - 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DEL, MO(RAISE), MO(ADJUST), KC_ESC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, - XXXXXXX, KC_LALT, XXXXXXX, KC_BSPC, MO(LOWER), KC_ENT, KC_SPC, KC_LBR, KC_RBR, XXXXXXX - ), -/* - * Lower Layer: Numbers, functions, symbols - * - * ,-------------------------------------------. ,-------------------------------------------. - * | | 1 ! | 2 @ | 3 # | 4 $ | 5 % | | 6 ^ | 7 & | 8 * | 9 ( | 0 ) | | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * | | ! | @ | # | $ | % | | ^ | & | * | ( | ) | | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | | F1 | F2 | F3 | F4 | F5 | | | | | | F6 | F7 | F8 | F9 | F10 | | - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * | | | | | | | | | ( | ) | | - * | | | | | | | | | | | | - * `----------------------------------' `----------------------------------' - */ - [LOWER] = LAYOUT( - _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, - _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, _______, _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, - _______, _______, _______, _______, _______, _______, _______, KC_LPRN, KC_RPRN, _______ - ), -/* - * Raise Layer: Functions, Numbers - * - * ,-------------------------------------------. ,-------------------------------------------. - * | | | F7 | F8 | F9 | | | | 7 & | 8 * | 9 ( | - _ | | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * | | | F4 | F5 | F6 | | | | 4 * | 5 % | 6 ^ | = + | RCTL | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | | | F1 | F2 | F3 | | | | | | | | 1 ! | 2 @ | 3 # | \ | | | - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * | | | | | | | | | 0 ) | | | - * | | | | | | | | | | | | - * `----------------------------------' `----------------------------------' - */ - [RAISE] = LAYOUT( - _______, _______, KC_F7, KC_F8, KC_F9, _______, _______, KC_7, KC_8, KC_9, _______, _______, - _______, _______, KC_F4, KC_F5, KC_F6, _______, _______, KC_4, KC_5, KC_6, _______, KC_RCTL, - _______, _______, KC_F1, KC_F2, KC_F3, _______, _______, _______, _______, _______, _______, KC_1, KC_2, KC_3, _______, _______, - _______, _______, _______, _______, _______, _______, _______, KC_0, _______, _______ - ), -/* - * Navigation Layer - * - * ,-------------------------------------------. ,-------------------------------------------. - * | | | | | | | | | | Up | | | RGBTOG | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * | | | | | | | | | Left | Down | Right| | RGBOFF | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | | | | | | | | | | | | | | | | | RGBON | - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * | | | | | | | | | Reset|Debug | | - * | | | | | | | | | | | | - * `----------------------------------' `----------------------------------' - */ - [ADJUST] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, RGB_TOG, - _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, RGB_HUI, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, - _______, _______, _______, _______, _______, _______, _______, RESET, DEBUG, _______ - ), -// /* -// * Layer template -// * -// * ,-------------------------------------------. ,-------------------------------------------. -// * | | | | | | | | | | | | | | -// * |--------+------+------+------+------+------| |------+------+------+------+------+--------| -// * | | | | | | | | | | | | | | -// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| -// * | | | | | | | | | | | | | | | | | | -// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' -// * | | | | | | | | | | | | -// * | | | | | | | | | | | | -// * `----------------------------------' `----------------------------------' -// */ -// [_LAYERINDEX] = LAYOUT( -// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, -// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, -// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, -// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ -// ), -}; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case KC_LBR: { - if (record->event.pressed) { - if ((get_mods() & MOD_MASK_SHIFT) == MOD_MASK_SHIFT) { - register_code(KC_9); - } else { - register_code(KC_LBRC); - } - } else { // Release the key - if ((get_mods() & MOD_MASK_SHIFT) == MOD_MASK_SHIFT) { - unregister_code(KC_9); - } else { - unregister_code(KC_LBRC); - } - } - return false; - break; - } - case KC_RBR: { - if (record->event.pressed) { - if ((get_mods() & MOD_MASK_SHIFT) == MOD_MASK_SHIFT) { - register_code(KC_0); - } else { - register_code(KC_RBRC); - } - } else { // Release the key - if ((get_mods() & MOD_MASK_SHIFT) == MOD_MASK_SHIFT) { - unregister_code(KC_0); - } else { - unregister_code(KC_RBRC); - } - } - return false; - break; - } - } - return true; -} - -LEADER_EXTERNS(); - -void matrix_scan_user(void) { - LEADER_DICTIONARY() { - leading = false; - leader_end(); - - SEQ_ONE_KEY(KC_F) { // Shift + Ctrl + F - tap_code16(S(C(KC_F))); - } - } -} - -#ifdef OLED_DRIVER_ENABLE -oled_rotation_t oled_init_user(oled_rotation_t rotation) { - return OLED_ROTATION_180; -} - -static void render_kyria_logo(void) { - static const char PROGMEM kyria_logo[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,224,240,112,120, 56, 60, 28, 30, 14, 14, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 30, 28, 60, 56,120,112,240,224,192,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0,192,224,240,124, 62, 31, 15, 7, 3, 1,128,192,224,240,120, 56, 60, 28, 30, 14, 14, 7, 7,135,231,127, 31,255,255, 31,127,231,135, 7, 7, 14, 14, 30, 28, 60, 56,120,240,224,192,128, 1, 3, 7, 15, 31, 62,124,240,224,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,240,252,255, 31, 7, 1, 0, 0,192,240,252,254,255,247,243,177,176, 48, 48, 48, 48, 48, 48, 48,120,254,135, 1, 0, 0,255,255, 0, 0, 1,135,254,120, 48, 48, 48, 48, 48, 48, 48,176,177,243,247,255,254,252,240,192, 0, 0, 1, 7, 31,255,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,254,255,255, 1, 1, 7, 30,120,225,129,131,131,134,134,140,140,152,152,177,183,254,248,224,255,255,224,248,254,183,177,152,152,140,140,134,134,131,131,129,225,120, 30, 7, 1, 1,255,255,254, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0,255,255, 0, 0,192,192, 48, 48, 0, 0,240,240, 0, 0, 0, 0, 0, 0,240,240, 0, 0,240,240,192,192, 48, 48, 48, 48,192,192, 0, 0, 48, 48,243,243, 0, 0, 0, 0, 0, 0, 48, 48, 48, 48, 48, 48,192,192, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,127,255,255,128,128,224,120, 30,135,129,193,193, 97, 97, 49, 49, 25, 25,141,237,127, 31, 7,255,255, 7, 31,127,237,141, 25, 25, 49, 49, 97, 97,193,193,129,135, 30,120,224,128,128,255,255,127, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0, 63, 63, 3, 3, 12, 12, 48, 48, 0, 0, 0, 0, 51, 51, 51, 51, 51, 51, 15, 15, 0, 0, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 63, 63, 48, 48, 0, 0, 12, 12, 51, 51, 51, 51, 51, 51, 63, 63, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 15, 63,255,248,224,128, 0, 0, 3, 15, 63,127,255,239,207,141, 13, 12, 12, 12, 12, 12, 12, 12, 30,127,225,128, 0, 0,255,255, 0, 0,128,225,127, 30, 12, 12, 12, 12, 12, 12, 12, 13,141,207,239,255,127, 63, 15, 3, 0, 0,128,224,248,255, 63, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3, 7, 15, 62,124,248,240,224,192,128, 1, 3, 7, 15, 30, 28, 60, 56,120,112,112,224,224,225,231,254,248,255,255,248,254,231,225,224,224,112,112,120, 56, 60, 28, 30, 15, 7, 3, 1,128,192,224,240,248,124, 62, 15, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 15, 14, 30, 28, 60, 56,120,112,112,112,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,112,112,112,120, 56, 60, 28, 30, 14, 15, 7, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }; - oled_write_raw_P(kyria_logo, sizeof(kyria_logo)); -} - -static void render_qmk_logo(void) { - static const char PROGMEM qmk_logo[] = { - 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, - 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, - 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0}; - - oled_write_P(qmk_logo, false); -} - -static void render_status(void) { - // QMK Logo and version information - render_qmk_logo(); - oled_write_P(PSTR(" Kyria rev1.0\n\n"), false); - - // Host Keyboard Layer Status - oled_write_P(PSTR("Layer: "), false); - switch (get_highest_layer(layer_state)) { - case QWERTY: - oled_write_P(PSTR("Default\n"), false); - break; - case LOWER: - oled_write_P(PSTR("Lower\n"), false); - break; - case RAISE: - oled_write_P(PSTR("Raise\n"), false); - break; - case NAV: - oled_write_P(PSTR("Navigation\n"), false); - break; - case ADJUST: - oled_write_P(PSTR("Adjust\n"), false); - break; - default: - oled_write_P(PSTR("Undefined\n"), false); - } - - // Host Keyboard LED Status - led_t led_state = host_keyboard_led_state(); - oled_write_P(led_state.num_lock ? PSTR("NUMLCK ") : PSTR(" "), false); - oled_write_P(led_state.caps_lock ? PSTR("CAPLCK ") : PSTR(" "), false); - oled_write_P(led_state.scroll_lock ? PSTR("SCRLCK ") : PSTR(" "), false); -} - -void oled_task_user(void) { - if (is_keyboard_master()) { - render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) - } else { - render_kyria_logo(); - } -} -#endif - -#ifdef ENCODER_ENABLE -bool encoder_update_user(uint8_t index, bool clockwise) { - if (index == 0) { - switch (get_highest_layer(layer_state)) { - case QWERTY: - if (clockwise) { // Ctrl + I - tap_code16(C(KC_I)); - } else { // Shift + F3 - tap_code16(S(KC_F3)); - } - break; - case LOWER: - // History scrubbing. For Adobe products, hold shift while moving - // backward to go forward instead. - if (clockwise) { - tap_code16(C(KC_Y)); - } else { - tap_code16(C(KC_Z)); - } - break; - case RAISE: - if (clockwise) { // Subscript: CTRL + = - tap_code16(C(KC_EQL)); - } - break; - default: - // Nothing - break; - } - } else if (index == 1) { - switch (get_highest_layer(layer_state)) { - case QWERTY: - // Scroll by letter horizontally - if (clockwise) { - tap_code16(KC_RGHT); - } else { - tap_code16(KC_LEFT); - } - case LOWER: - // Nothing - break; - case RAISE: - // Find previous/Find next - if (clockwise) { - tap_code(KC_F3); - } else { - tap_code16(S(KC_F3)); - } - default: - // Nothing - break; - } - } - return true; -} -#endif diff --git a/keyboards/kyria/keymaps/asapjockey/rules.mk b/keyboards/kyria/keymaps/asapjockey/rules.mk deleted file mode 100644 index 9b8e2941987c..000000000000 --- a/keyboards/kyria/keymaps/asapjockey/rules.mk +++ /dev/null @@ -1,5 +0,0 @@ -OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays -ENCODER_ENABLE = yes # Enables the use of one or more encoders -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -LEADER_ENABLE = yes # Enable the Leader Key feature -MOUSEKEY_ENABLE = no diff --git a/keyboards/kyria/keymaps/benji/config.h b/keyboards/kyria/keymaps/benji/config.h deleted file mode 100644 index 442ecc6057ef..000000000000 --- a/keyboards/kyria/keymaps/benji/config.h +++ /dev/null @@ -1,34 +0,0 @@ -/* Copyright 2019 Thomas Baart - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#ifdef OLED_DRIVER_ENABLE - #define OLED_DISPLAY_128X64 - #define OLED_FONT_H "keyboards/kyria/keymaps/benji/glcdfont.c" -#endif - -#ifdef RGBLIGHT_ENABLE - #define RGBLIGHT_ANIMATIONS - #define RGBLIGHT_HUE_STEP 8 - #define RGBLIGHT_SAT_STEP 8 - #define RGBLIGHT_VAL_STEP 8 - #define RGBLIGHT_LIMIT_VAL 150 -#endif - -// If you are using an Elite C rev3 on the slave side, uncomment the lines below: -// #define SPLIT_USB_DETECT -// #define NO_USB_STARTUP_CHECK diff --git a/keyboards/kyria/keymaps/benji/keymap.c b/keyboards/kyria/keymaps/benji/keymap.c deleted file mode 100644 index 2e3e2b1cffa1..000000000000 --- a/keyboards/kyria/keymaps/benji/keymap.c +++ /dev/null @@ -1,247 +0,0 @@ -/* Copyright 2019 Thomas Baart - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include QMK_KEYBOARD_H - -enum layers { - _QWERTY = 0, - _LOWER, - _RAISE, - _ADJUST -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* - * Base Layer: QWERTY - * - * ,-------------------------------------------. ,-------------------------------------------. - * |RAIS/ESC| Q | W | E | R | T | | Y | U | I | O | P | | \ | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * |Ctrl/BS | A | S | D | F | G | | H | J | K | L | ; : | ' " | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | LShift | Z | X | C | V | B |LShift|LShift| |LShift|LShift| N | M | , < | . > | / ? | - _ | - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * | GUI | Del | Enter| Space| Esc | | Enter| Space| Tab | Bksp | AltGr| - * | | | Alt | Lower| Raise| | Lower| Raise| | | | - * `----------------------------------' `----------------------------------' - */ - [_QWERTY] = LAYOUT( - LT(_RAISE, KC_ESC), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_PIPE, - MT(MOD_LCTL, KC_BSPC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LSFT, KC_LSFT, KC_LSFT, KC_LSFT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_MINS, - KC_LGUI, KC_DEL, MT(MOD_LALT, KC_ENT), LT(_LOWER, KC_SPC), KC_LGUI, LT(_LOWER, KC_ENT), LT(_RAISE, KC_SPC), KC_TAB, KC_BSPC, KC_RALT - ), - /* - * Lower Layer: Symbols - * - * ,-------------------------------------------. ,-------------------------------------------. - * | | ! | @ | { | } | | | | | | | | | | \ | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * | | # | $ | ( | ) | ` | | + | - | / | * | % | ' " | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | | % | ^ | [ | ] | ~ | | | | | | & | = | , | . | / ? | - _ | - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * | | | | ; | = | | = | ; | | | | - * | | | | | | | | | | | | - * `----------------------------------' `----------------------------------' - */ - [_LOWER] = LAYOUT( - _______, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, _______, _______, _______, _______, _______, KC_BSLS, - _______, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV, KC_PLUS, KC_MINS, KC_SLSH, KC_ASTR, KC_PERC, KC_QUOT, - _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, _______, _______, _______, _______, KC_AMPR, KC_EQL, KC_COMM, KC_DOT, KC_SLSH, KC_MINS, - _______, _______, _______, KC_SCLN, KC_EQL, KC_EQL, KC_SCLN, _______, _______, _______ - ), - /* - * Raise Layer: Number keys, media, navigation - * - * ,-------------------------------------------. ,-------------------------------------------. - * | | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * | | | Prev | Play | Next | VolUp| | Left | Down | Up | Right| | | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | | | | | Mute | VolDn| | | | | | MLeft| Mdown| MUp |MRight| | | - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * | |Mbtn1 |Mbtn2 |Mbtn3 | | | Mbtn4|Mbtn5 | | | | - * | | | | | | | | | | | | - * `----------------------------------' `----------------------------------' - */ - [_RAISE] = LAYOUT( - _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, - _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, - _______, _______, _______, _______, KC_MUTE, KC_VOLD, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, _______, _______, - _______, KC_BTN1, KC_BTN2, KC_BTN3, _______, KC_BTN4, KC_BTN5, _______, _______, _______ - ), - /* - * Adjust Layer: Function keys, RGB - * - * ,-------------------------------------------. ,-------------------------------------------. - * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * | | TOG | SAI | HUI | VAI | MOD | | | | | F11 | F12 | | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | | | SAD | HUD | VAD | RMOD | | | | | | | | | | | | - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * | | | | | | | | | | | | - * | | | | | | | | | | | | - * `----------------------------------' `----------------------------------' - */ - [_ADJUST] = LAYOUT( - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, - _______, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_MOD, _______, _______, _______, KC_F11, KC_F12, _______, - _______, _______, RGB_SAD, RGB_HUD, RGB_VAD, RGB_RMOD,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - // /* - // * Layer template - // * - // * ,-------------------------------------------. ,-------------------------------------------. - // * | | | | | | | | | | | | | | - // * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - // * | | | | | | | | | | | | | | - // * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - // * | | | | | | | | | | | | | | | | | | - // * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - // * | | | | | | | | | | | | - // * | | | | | | | | | | | | - // * `----------------------------------' `----------------------------------' - // */ - // [_LAYERINDEX] = LAYOUT( - // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - // ), -}; - -layer_state_t layer_state_set_user(layer_state_t state) { - return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); -} - -#ifdef OLED_DRIVER_ENABLE -oled_rotation_t oled_init_user(oled_rotation_t rotation) { - return OLED_ROTATION_180; -} - -static void render_kyria_logo(void) { - static const char PROGMEM kyria_logo[] = { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,48,24,108,244,130,194,193,25,125,119,97,1,193,226,178,52,44,24,48,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,64,64,192,64,64,64,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,136,24,48,56,28,221,193,156,62,127,127,127,62,156,193,221,156,14,6,4,140,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,64,64,64,64,64,64,64,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,48,76,230,243,253,254,252,190,255,223,255,255,159,158,254,249,243,230,76,48,192,0,0,0,0,0,0,0,0,0,1,6,12,26,22,38,35,65,64,67,119,95,76,65,33,32,23,27,12,6,1,0,0,0,0,0,0,0,0,0,0,192,48,12,6,3,1,0,192,224,240,248,252,254,255,224,128,0,1,3,6,12,48,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,96,130,7,15,7,3,2,6,13,255,255,255,7,2,2,3,7,7,7,131,96,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,96,128,0,0,0,127,255,255,255,255,255,255,255,255,227,99,62,0,0,128,96,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,6,4,8,9,19,17,17,19,17,19,18,10,8,4,6,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,6,4,8,8,17,17,17,17,17,17,17,8,8,4,6,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,96,48,152,72,228,52,34,10,74,74,58,178,50,116,228,200,24,176,96,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,96,48,152,200,228,228,242,242,242,242,242,242,242,228,228,200,152,48,96,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,1,0,0,192,240,248,248,248,248,184,152,140,204,249,231,255,191,159,223,6,1,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,1,0,63,127,249,240,240,241,251,159,191,159,251,241,240,240,249,127,63,0,1,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,12,24,49,39,79,79,143,143,143,143,149,149,149,67,65,33,49,24,12,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,12,24,48,32,64,71,159,135,159,135,159,135,159,135,159,71,64,32,48,24,12,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - - - -// 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,224,240,112,120, 56, 60, 28, 30, 14, 14, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 30, 28, 60, 56,120,112,240,224,192,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -// 0, 0, 0, 0, 0, 0, 0,192,224,240,124, 62, 31, 15, 7, 3, 1,128,192,224,240,120, 56, 60, 28, 30, 14, 14, 7, 7,135,232,127, 31,255,255, 31,127,231,135, 7, 7, 14, 14, 30, 28, 60, 56,120,240,224,192,128, 1, 3, 7, 15, 31, 62,124,240,224,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -// 0, 0, 0, 0,240,252,255, 31, 7, 1, 0, 0,192,240,252,254,255,247,243,177,176, 48, 48, 48, 48, 48, 48, 48,120,254,135, 1, 0, 0,255,255, 0, 0, 1,135,254,120, 48, 48, 48, 48, 48, 48, 48,176,177,243,247,255,254,252,240,192, 0, 0, 1, 7, 31,255,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -// 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,254,255,255, 1, 1, 7, 30,120,225,129,131,131,134,134,140,140,152,152,177,183,254,248,224,255,255,224,248,254,183,177,152,152,140,140,134,134,131,131,129,225,120, 30, 7, 1, 1,255,255,254, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0,255,255, 0, 0,192,192, 48, 48, 0, 0,240,240, 0, 0, 0, 0, 0, 0,240,240, 0, 0,240,240,192,192, 48, 48, 48, 48,192,192, 0, 0, 48, 48,243,243, 0, 0, 0, 0, 0, 0, 48, 48, 48, 48, 48, 48,192,192, 0, 0, 0, 0, 0, -// 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,127,255,255,128,128,224,120, 30,135,129,193,193, 97, 97, 49, 49, 25, 25,141,237,127, 31, 7,255,255, 7, 31,127,237,141, 25, 25, 49, 49, 97, 97,193,193,129,135, 30,120,224,128,128,255,255,127, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0, 63, 63, 3, 3, 12, 12, 48, 48, 0, 0, 0, 0, 51, 51, 51, 51, 51, 51, 15, 15, 0, 0, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 63, 63, 48, 48, 0, 0, 12, 12, 51, 51, 51, 51, 51, 51, 63, 63, 0, 0, 0, 0, 0, -// 0, 0, 0, 0, 15, 63,255,248,224,128, 0, 0, 3, 15, 63,127,255,239,207,141, 13, 12, 12, 12, 12, 12, 12, 12, 30,127,225,128, 0, 0,255,255, 0, 0,128,225,127, 30, 12, 12, 12, 12, 12, 12, 12, 13,141,207,239,255,127, 63, 15, 3, 0, 0,128,224,248,255, 63, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -// 0, 0, 0, 0, 0, 0, 0, 3, 7, 15, 62,124,248,240,224,192,128, 1, 3, 7, 15, 30, 28, 60, 56,120,112,112,224,224,225,231,254,248,255,255,248,254,231,225,224,224,112,112,120, 56, 60, 28, 30, 15, 7, 3, 1,128,192,224,240,248,124, 62, 15, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -// 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 15, 14, 30, 28, 60, 56,120,112,112,112,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,112,112,112,120, 56, 60, 28, 30, 14, 15, 7, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }; - oled_write_raw_P(kyria_logo, sizeof(kyria_logo)); -} - -static void render_qmk_logo(void) { - static const char PROGMEM qmk_logo[] = { - 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, - 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, - 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0}; - - oled_write_P(qmk_logo, false); -} - -static void render_status(void) { - // QMK Logo and version information - //render_kyria_logo(); - render_qmk_logo(); - oled_write_P(PSTR("Kyria rev B3nJ.P0tt3r\n\n"), false); - - // Host Keyboard Layer Status - oled_write_P(PSTR("Layer: "), false); - switch (get_highest_layer(layer_state)) { - case _QWERTY: - oled_write_P(PSTR("Chandra\n"), false); - break; - case _LOWER: - oled_write_P(PSTR("Jace\n"), false); - break; - case _RAISE: - oled_write_P(PSTR("Karn\n"), false); - break; - case _ADJUST: - oled_write_P(PSTR("Teferi\n"), false); - break; - default: - oled_write_P(PSTR("Ashiok\n"), false); - } - - // Host Keyboard LED Status - led_t led_usb_state = host_keyboard_led_state(); - oled_write_P(led_usb_state.num_lock? PSTR("NUMLCK ") : PSTR(" "), false); - oled_write_P(led_usb_state.caps_lock ? PSTR("CAPLCK ") : PSTR(" "), false); - oled_write_P(led_usb_state.scroll_lock ? PSTR("SCRLCK ") : PSTR(" "), false); -} - -void oled_task_user(void) { - if (is_keyboard_master()) { - render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) - } else { - render_kyria_logo(); - } -} -#endif - -#ifdef ENCODER_ENABLE -bool encoder_update_user(uint8_t index, bool clockwise) { - if (index == 0) { - switch (get_highest_layer(layer_state)) { - case _RAISE: - // Volume control - if (clockwise) { - tap_code(KC_VOLU); - } else { - tap_code(KC_VOLD); - } - break; - case _LOWER: - // Page up/Page down - if (clockwise) { - tap_code(KC_PGDN); - } else { - tap_code(KC_PGUP); - } - break; - case _QWERTY: - // Page up/Page down - if (clockwise) { - tap_code(KC_DOWN); - } else { - tap_code(KC_UP); - } - break; - default: - break; - - } - } - return true; -} -#endif diff --git a/keyboards/kyria/keymaps/benji/rules.mk b/keyboards/kyria/keymaps/benji/rules.mk deleted file mode 100644 index e3486a8a9f7e..000000000000 --- a/keyboards/kyria/keymaps/benji/rules.mk +++ /dev/null @@ -1,3 +0,0 @@ -OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays -ENCODER_ENABLE = yes # Enables the use of one or more encoders -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow \ No newline at end of file diff --git a/keyboards/kyria/keymaps/cjuniet/config.h b/keyboards/kyria/keymaps/cjuniet/config.h deleted file mode 100644 index d5d9c23bf3a2..000000000000 --- a/keyboards/kyria/keymaps/cjuniet/config.h +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright 2019 Thomas Baart - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#ifdef OLED_DRIVER_ENABLE - #define OLED_DISPLAY_128X64 - #define OLED_FONT_H "users/cjuniet/glcdfont.c" -#endif - -#ifdef RGBLIGHT_ENABLE - #define RGBLIGHT_ANIMATIONS - #define RGBLIGHT_HUE_STEP 8 - #define RGBLIGHT_SAT_STEP 8 - #define RGBLIGHT_VAL_STEP 8 - #define RGBLIGHT_SLEEP -#endif - -#define EE_HANDS - -#define LEADER_PER_KEY_TIMING -#define LEADER_TIMEOUT 250 - -#define TAPPING_TOGGLE 2 diff --git a/keyboards/kyria/keymaps/cjuniet/keymap.c b/keyboards/kyria/keymaps/cjuniet/keymap.c deleted file mode 100644 index d0620309b6f4..000000000000 --- a/keyboards/kyria/keymaps/cjuniet/keymap.c +++ /dev/null @@ -1,127 +0,0 @@ -#include QMK_KEYBOARD_H -#include "cjuniet.h" - -enum layers { - _COLEMAK = 0, - _SYMBOLS, - _NUMBERS, - _SPECIALS -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_COLEMAK] = LAYOUT( - KC_ESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS, - LCTL_T(KC_BSPC), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, - LSFT_T(KC_DEL), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LAPO, LGUI_T(KC_LBRC), RGUI_T(KC_RBRC), KC_RAPC, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_MINS, - KC_TAB, KC_LGUI, TT(_SYMBOLS), LSFT_T(KC_SPC), LCTL_T(KC_ENT), RCTL_T(KC_ENT), RSFT_T(KC_SPC), TT(_NUMBERS), KC_RGUI, KC_LEAD), - [_SYMBOLS] = LAYOUT( - KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TILD, - KC_TRNS, KC_MPLY, KC_MS_L, KC_MS_U, KC_MS_R, KC_WH_U, KC_PGUP, KC_LEFT, KC_UP, KC_RGHT, KC_VOLU, KC_GRV, - KC_TRNS, KC_MUTE, KC_BTN1, KC_MS_D, KC_BTN2, KC_WH_D, KC_LT, KC_TRNS, KC_TRNS, KC_GT, KC_PGDN, KC_HOME, KC_DOWN, KC_END, KC_VOLD, KC_EQL, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), - [_NUMBERS] = LAYOUT( - KC_TRNS, KC_MNXT, KC_F7, KC_F8, KC_F9, KC_F10, KC_PGUP, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_PMNS, - KC_TRNS, KC_MPLY, KC_F4, KC_F5, KC_F6, KC_F11, KC_TAB, KC_P4, KC_P5, KC_P6, KC_PAST, KC_PSLS, - KC_TRNS, KC_MPRV, KC_F1, KC_F2, KC_F3, KC_F12, KC_LPRN, KC_LT, KC_GT, KC_RPRN, KC_PGDN, KC_P1, KC_P2, KC_P3, KC_EQL, KC_PENT, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P0, KC_PDOT), - [_SPECIALS] = LAYOUT( - KC_TRNS, KC_NLCK, KC_CAPS, KC_SLCK, KC_LANG1, KC_LANG2, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, - KC_TRNS, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_MOD, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, KC_TRNS, - KC_TRNS, KC_NO, RGB_SAD, RGB_HUD, RGB_VAD, RGB_RMOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) -}; - -LEADER_EXTERNS(); - -void keyboard_post_init_user(void) { - led_t led_state = host_keyboard_led_state(); - if (!led_state.num_lock) { - tap_code(KC_NLCK); - } -} - -layer_state_t layer_state_set_user(layer_state_t state) { - return update_tri_layer_state(state, _SYMBOLS, _NUMBERS, _SPECIALS); -} - -void matrix_scan_user(void) { - LEADER_DICTIONARY() { - leading = false; - leader_end(); - - // Lock screen (macOS) - SEQ_ONE_KEY(KC_ESC) { - tap_code16(LCTL(LGUI(KC_Q))); - } - - // Escape-Shift-Z-Z (VIM) - SEQ_ONE_KEY(KC_Z) { - SEND_STRING(SS_TAP(X_ESC) SS_LSFT("zz")); - } - - // Dead grave accent (macOS) - SEQ_ONE_KEY(KC_E) { - tap_code16(LALT(KC_GRAVE)); - } - } -} - -oled_rotation_t oled_init_user(oled_rotation_t rotation) { - return OLED_ROTATION_180; -} - -static void render_kyria_logo(void) { - static const char PROGMEM kyria_logo[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,224,240,112,120, 56, 60, 28, 30, 14, 14, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 30, 28, 60, 56,120,112,240,224,192,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0,192,224,240,124, 62, 31, 15, 7, 3, 1,128,192,224,240,120, 56, 60, 28, 30, 14, 14, 7, 7,135,231,127, 31,255,255, 31,127,231,135, 7, 7, 14, 14, 30, 28, 60, 56,120,240,224,192,128, 1, 3, 7, 15, 31, 62,124,240,224,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,240,252,255, 31, 7, 1, 0, 0,192,240,252,254,255,247,243,177,176, 48, 48, 48, 48, 48, 48, 48,120,254,135, 1, 0, 0,255,255, 0, 0, 1,135,254,120, 48, 48, 48, 48, 48, 48, 48,176,177,243,247,255,254,252,240,192, 0, 0, 1, 7, 31,255,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,254,255,255, 1, 1, 7, 30,120,225,129,131,131,134,134,140,140,152,152,177,183,254,248,224,255,255,224,248,254,183,177,152,152,140,140,134,134,131,131,129,225,120, 30, 7, 1, 1,255,255,254, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0,255,255, 0, 0,192,192, 48, 48, 0, 0,240,240, 0, 0, 0, 0, 0, 0,240,240, 0, 0,240,240,192,192, 48, 48, 48, 48,192,192, 0, 0, 48, 48,243,243, 0, 0, 0, 0, 0, 0, 48, 48, 48, 48, 48, 48,192,192, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,127,255,255,128,128,224,120, 30,135,129,193,193, 97, 97, 49, 49, 25, 25,141,237,127, 31, 7,255,255, 7, 31,127,237,141, 25, 25, 49, 49, 97, 97,193,193,129,135, 30,120,224,128,128,255,255,127, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0, 63, 63, 3, 3, 12, 12, 48, 48, 0, 0, 0, 0, 51, 51, 51, 51, 51, 51, 15, 15, 0, 0, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 63, 63, 48, 48, 0, 0, 12, 12, 51, 51, 51, 51, 51, 51, 63, 63, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 15, 63,255,248,224,128, 0, 0, 3, 15, 63,127,255,239,207,141, 13, 12, 12, 12, 12, 12, 12, 12, 30,127,225,128, 0, 0,255,255, 0, 0,128,225,127, 30, 12, 12, 12, 12, 12, 12, 12, 13,141,207,239,255,127, 63, 15, 3, 0, 0,128,224,248,255, 63, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3, 7, 15, 62,124,248,240,224,192,128, 1, 3, 7, 15, 30, 28, 60, 56,120,112,112,224,224,225,231,254,248,255,255,248,254,231,225,224,224,112,112,120, 56, 60, 28, 30, 15, 7, 3, 1,128,192,224,240,248,124, 62, 15, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 15, 14, 30, 28, 60, 56,120,112,112,112,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,112,112,112,120, 56, 60, 28, 30, 14, 15, 7, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }; - oled_write_raw_P(kyria_logo, sizeof(kyria_logo)); -} - -static void render_qmk_logo(void) { - static const char PROGMEM qmk_logo[] = { - 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, - 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, - 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0}; - - oled_write_P(qmk_logo, false); -} - -static void render_status(void) { - render_qmk_logo(); - oled_write_ln_P(PSTR(" Chris's Kyria\n"), false); - - oled_write_P(PSTR(" "), false); - switch (get_highest_layer(layer_state)) { - case _COLEMAK: - oled_write_P(PSTR("Colemak"), false); - break; - case _SYMBOLS: - oled_write_P(PSTR("Symbols"), false); - break; - case _NUMBERS: - oled_write_P(PSTR("Numbers"), false); - break; - case _SPECIALS: - oled_write_P(PSTR("Special"), false); - break; - default: - oled_write_P(PSTR("Undefined"), false); - } - oled_write_ln_P(PSTR(" Layer\n"), false); -} - -void oled_task_user(void) { - if (is_keyboard_master()) { - render_status(); - render_status_bar(); - } else { - render_kyria_logo(); - } -} diff --git a/keyboards/kyria/keymaps/cjuniet/rules.mk b/keyboards/kyria/keymaps/cjuniet/rules.mk deleted file mode 100644 index 9699ed810dcf..000000000000 --- a/keyboards/kyria/keymaps/cjuniet/rules.mk +++ /dev/null @@ -1,6 +0,0 @@ -ENCODER_ENABLE = no -EXTRAKEY_ENABLE = yes -LEADER_ENABLE = yes -MOUSEKEY_ENABLE = yes -OLED_DRIVER_ENABLE = yes -RGBLIGHT_ENABLE = no diff --git a/keyboards/kyria/keymaps/corodiak/config.h b/keyboards/kyria/keymaps/corodiak/config.h deleted file mode 100644 index eed94d055863..000000000000 --- a/keyboards/kyria/keymaps/corodiak/config.h +++ /dev/null @@ -1,45 +0,0 @@ -/* Copyright 2019 Thomas Baart - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#ifdef OLED_DRIVER_ENABLE - #define OLED_DISPLAY_128X64 -#endif - -#ifdef RGBLIGHT_ENABLE - #define RGBLIGHT_ANIMATIONS - #define RGBLIGHT_HUE_STEP 8 - #define RGBLIGHT_SAT_STEP 8 - #define RGBLIGHT_VAL_STEP 8 -#endif - -// The Leader key allows to flexibly assign macros to key sequences. -#define LEADER_PER_KEY_TIMING -#define LEADER_TIMEOUT 350 - -#define TAPPING_TERM 200 - -// Turn off on slave -#define WAIT_FOR_USB - -// If you are using an Elite C rev3 on the slave side, uncomment the lines below: -#define SPLIT_USB_DETECT -#define NO_USB_STARTUP_CHECK - -// Allows to use either side as the master. Look at the documentation for info: -// https://docs.qmk.fm/#/config_options?id=setting-handedness -#define EE_HANDS diff --git a/keyboards/kyria/keymaps/corodiak/rules.mk b/keyboards/kyria/keymaps/corodiak/rules.mk deleted file mode 100644 index da64c4ea51f0..000000000000 --- a/keyboards/kyria/keymaps/corodiak/rules.mk +++ /dev/null @@ -1,4 +0,0 @@ -# OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays -# ENCODER_ENABLE = yes # Enables the use of one or more encoders -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -LEADER_ENABLE = yes # Enables the Leader shortcut funtionality diff --git a/keyboards/kyria/keymaps/cwebster2/config.h b/keyboards/kyria/keymaps/cwebster2/config.h deleted file mode 100644 index 6a56d7ee905f..000000000000 --- a/keyboards/kyria/keymaps/cwebster2/config.h +++ /dev/null @@ -1,55 +0,0 @@ -/* Copyright 2020 Casey Webster - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#ifdef OLED_DRIVER_ENABLE - #define OLED_DISPLAY_128X64 -#endif - -#ifdef RGBLIGHT_ENABLE - //#define RGBLIGHT_ANIMATIONS - //#define RGBLIGHT_EFFECT_ALTERNATING - #define RGBLIGHT_EFFECT_BREATHING - //#define RGBLIGHT_EFFECT_CHRISTMAS - //#define RGBLIGHT_EFFECT_KNIGHT - //#define RGBLIGHT_EFFECT_RAINBOW_MOOD - //#define RGBLIGHT_EFFECT_RAINBOW_SWIRL - //#define RGBLIGHT_EFFECT_RGB_TEST - //#define RGBLIGHT_EFFECT_SNAKE - //#define RGBLIGHT_EFFECT_STATIC_GRADIENT - //#define RGBLIGHT_EFFECT_TWINKLE - #define RGBLIGHT_HUE_STEP 8 - #define RGBLIGHT_SAT_STEP 8 - #define RGBLIGHT_VAL_STEP 8 - #define RGBLIGHT_SLEEP - #define RGBLIGHT_LIMIT_VAL 128 - #define RGBLIGHT_EFFECT_BREATHE_MAX 128 - #define RGBLIGHT_LAYERS - #define RGBLIGHT_MAX_LAYERS 16 - //#define RGBLIGHT_STARTUP_ANIMATION -#endif - -#ifdef COMBO_ENABLE - #define COMBO_COUNT 2 -#endif - -#define QMK_KEYS_PER_SCAN 4 - -#define EE_HANDS - -//#define DEBUG_MATRIX_SCAN_RATE -//#define SPLIT_MODS_ENABLE diff --git a/keyboards/kyria/keymaps/cwebster2/keymap.c b/keyboards/kyria/keymaps/cwebster2/keymap.c deleted file mode 100644 index 311ad167aa13..000000000000 --- a/keyboards/kyria/keymaps/cwebster2/keymap.c +++ /dev/null @@ -1,397 +0,0 @@ -/* Copyright 2020 Casey Webster - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include QMK_KEYBOARD_H -#include "raw_hid.h" -#define RAW_EPSIZE 8 -#include - -#include "cwebster2.h" - -#ifdef WPM_ENABLE -char wpm_str[10]; -uint16_t wpm_graph_timer = 0; -#endif - -#ifdef COMBO_ENABLE -enum combos { - ZX_COPY, - CV_PASTE -}; - -const uint16_t PROGMEM copy_combo[] = { KC_Z, KC_X, COMBO_END }; -const uint16_t PROGMEM paste_combo[] = { KC_C, KC_V, COMBO_END }; - -combo_t key_combos[COMBO_COUNT] = { - [ZX_COPY] = COMBO(copy_combo, LCTL_T(KC_C)), - [CV_PASTE] = COMBO(paste_combo, LCTL_T(KC_V)) -}; -#endif - -#define LAYOUT_kyria_base( \ - L01, L02, L03, L04, L05, R05, R04, R03, R02, R01, \ - L11, L12, L13, L14, L15, R15, R14, R13, R12, R11, \ - L21, L22, L23, L24, L25, R25, R24, R23, R22, R21, \ - L33, L34, L35, R35, R34, R33 \ - ) \ - LAYOUT_kyria_wrapper ( \ - KC_GRV, L01, L02, L03, L04, L05, R05, R04, R03, R02, R01, KC_BSLS, \ - KC_CTLBS, L11, L12, L13, L14, L15, R15, R14, R13, R12, R11, KC_QUOT, \ - KC_EQL, L21, L22, L23, L24, L25, KC_LCCL, KC_LGUI, KC_ALTCL, KC_LSFT, R25, R24, R23, R22, R21, KC_MINS, \ - SCMD_T(KC_LBRC), C_S_T(KC_MINS), L33, L34, L35, R35, R34, R33, TO(_GAME), KC_PSCR \ - ) -#define LAYOUT_kyria_base_wrapper(...) LAYOUT_kyria_base(__VA_ARGS__) - - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* - * Base Layer: QWERTY - */ - [_QWERTY] = LAYOUT_kyria_base_wrapper( - /* ,-----------------------. ,-----------------------. */ - _______QWERTY_L1______, _______QWERTY_R1______, - _______QWERTY_L2______, _______QWERTY_R2______, - _______QWERTY_L3______, _______QWERTY_R3______, - _______THUMBS_L_______, _______THUMBS_R_______ - /* `---------------------' `---------------------' */ - ), - [_COLEMAK] = LAYOUT_kyria_wrapper( - /* ,-----------------------. ,-----------------------. */ - KC_GRV, _______COLEMAK_L1_____, _______COLEMAK_R1_____, KC_BSLS, - KC_CTLBS, _______COLEMAK_L2_____, _______COLEMAK_R2_____, KC_SCLN, - KC_EQL, _______COLEMAK_L3_____, KC_LCCL, KC_LGUI, KC_ALTCL, KC_LSFT, _______COLEMAK_R3_____, KC_MINS, - SCMD_T(KC_LBRC), C_S_T(KC_MINS), _______THUMBS_L_______, _______THUMBS_R_______, TO(_QWERTY), KC_PSCR - /* `---------------------' `---------------------' */ - ), - // GAME layout -- qwerty without homerow mods - [_GAME] = LAYOUT_kyria_wrapper( - /* ,-------------------------------------------. ,-------------------------------------------. */ - KC_GRV, _______QWERTY_L1______, _______QWERTY_R1______, KC_BSLS, - KC_CTLBS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - KC_LSFT, _______QWERTY_L3______, KC_LCCL, KC_LALT, KC_ALTCL, KC_LSFT, _______QWERTY_R3______, KC_MINS, - KC_EQL, KC_0, _______NAKED_L___T____, _______THUMBS_R_______, TO(_COLEMAK), KC_F12 - /* `----------------------------------' `----------------------------------' */ - ), - [_FN] = LAYOUT_kyria_base_wrapper( - /* ,-----------------------. ,-----------------------. */ - _______FN_______L1____, _______INACTIVE_R1____, - _______FN_______L2____, _______INACTIVE_R2____, - _______FN_______L3____, _______NAV______R2____, - _______FN________T____, _______INACTIVE__T____ - /* `---------------------' `---------------------' */ - ), - [_SYMBOLS] = LAYOUT_kyria_base_wrapper( - /* ,-----------------------. ,-----------------------. */ - _______SYM______L1____, _______INACTIVE_R1____, - _______SYM______L2____, _______INACTIVE_R2____, - _______SYM______L3____, _______INACTIVE_R3____, - _______SYM_______T____, _______INACTIVE__T____ - /* `---------------------' `---------------------' */ - ), - [_NUM] = LAYOUT_kyria_base_wrapper( - /* ,-----------------------. ,-----------------------. */ - _______NUM______L1____, _______INACTIVE_R1____, - _______NUM______L2____, _______INACTIVE_R2____, - _______NUM______L3____, _______INACTIVE_R3____, - _______NUM_______T____, _______INACTIVE__T____ - /* `---------------------' `---------------------' */ - ), - [_NAV] = LAYOUT_kyria_base_wrapper( - /* ,-----------------------. ,-----------------------. */ - _______INACTIVE_L1____, _______NAV______R1____, - _______INACTIVE_L2____, _______NAV______R2____, - _______INACTIVE_L3____, _______NAV______R3____, - _______INACTIVE__T____, _______NAV_______T____ - /* `---------------------' `---------------------' */ - ), - [_MOUSE] = LAYOUT_kyria_base_wrapper( - /* ,-----------------------. ,-----------------------. */ - _______INACTIVE_L1____, _______MOUSE____R1____, - _______INACTIVE_L2____, _______MOUSE____R2____, - _______INACTIVE_L3____, _______MOUSE____R3____, - _______INACTIVE__T____, _______MOUSE_____T____ - /* `---------------------' `---------------------' */ - ), - [_MEDIA] = LAYOUT_kyria_base_wrapper( - /* ,-----------------------. ,-----------------------. */ - _______INACTIVE_L1____, _______MEDIA____R1____, - _______INACTIVE_L2____, _______MEDIA____R2____, - _______INACTIVE_L3____, _______MEDIA____R3____, - _______INACTIVE__T____, _______MEDIA_____T____ - /* `---------------------' `---------------------' */ - ), -}; - -#ifdef RAW_ENABLE -static void send_layer_via_hid(int layer) { - uint8_t data[RAW_EPSIZE]; - data[0] = 1; - data[1] = layer; - raw_hid_send(data, sizeof(data)); - return; -} -#endif - - -#ifdef RGBLIGHT_LAYERS -const rgblight_segment_t PROGMEM my_qwerty_layer[] = RGBLIGHT_LAYER_SEGMENTS( {0, 20, HSV_AZURE} ); -const rgblight_segment_t PROGMEM my_colemak_layer[] = RGBLIGHT_LAYER_SEGMENTS( {0, 20, HSV_BLUE} ); -const rgblight_segment_t PROGMEM my_game_layer[] = RGBLIGHT_LAYER_SEGMENTS( {0, 20, HSV_RED} ); -const rgblight_segment_t PROGMEM my_fn_layer[] = RGBLIGHT_LAYER_SEGMENTS( {0, 20, HSV_PINK} ); -const rgblight_segment_t PROGMEM my_symbols_layer[] = RGBLIGHT_LAYER_SEGMENTS( {0, 20, HSV_GREEN} ); -const rgblight_segment_t PROGMEM my_num_layer[] = RGBLIGHT_LAYER_SEGMENTS( {0, 20, HSV_CORAL} ); -const rgblight_segment_t PROGMEM my_nav_layer[] = RGBLIGHT_LAYER_SEGMENTS( {0, 20, HSV_GOLDENROD} ); -const rgblight_segment_t PROGMEM my_mouse_layer[] = RGBLIGHT_LAYER_SEGMENTS( {0, 20, HSV_TURQUOISE} ); -const rgblight_segment_t PROGMEM my_media_layer[] = RGBLIGHT_LAYER_SEGMENTS( {0, 20, HSV_MAGENTA} ); - -const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS( - {0, 3, HSV_RED}, - {7, 1, HSV_RED}, - {10, 3, HSV_RED}, - {17, 1, HSV_RED} -); - -const rgblight_segment_t PROGMEM my_shift_layer[] = RGBLIGHT_LAYER_SEGMENTS( - {3, 1, HSV_RED}, - {13, 1, HSV_RED} -); - -const rgblight_segment_t PROGMEM my_ctrl_layer[] = RGBLIGHT_LAYER_SEGMENTS( - {4, 1, HSV_ORANGE}, - {14, 1, HSV_ORANGE} -); - -const rgblight_segment_t PROGMEM my_alt_layer[] = RGBLIGHT_LAYER_SEGMENTS( - {5, 1, HSV_GOLD}, - {15, 1, HSV_GOLD} -); - -const rgblight_segment_t PROGMEM my_gui_layer[] = RGBLIGHT_LAYER_SEGMENTS( - {9, 1, HSV_SPRINGGREEN}, - {19, 1, HSV_SPRINGGREEN} -); - -const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( - my_colemak_layer, - my_qwerty_layer, - my_game_layer, - my_fn_layer, - my_symbols_layer, - my_num_layer, - my_nav_layer, - my_mouse_layer, - my_media_layer, - my_capslock_layer, - my_shift_layer, - my_ctrl_layer, - my_alt_layer, - my_gui_layer -); - -void matrix_scan_keymap(void) { - uint8_t mods = mod_config(get_mods()); - rgblight_set_layer_state(10, mods & MOD_MASK_SHIFT); - rgblight_set_layer_state(11, mods & MOD_MASK_CTRL); - rgblight_set_layer_state(12, mods & MOD_MASK_ALT); - rgblight_set_layer_state(13, mods & MOD_MASK_GUI); -} -#endif - -void keyboard_post_init_user(void) { - rgblight_sethsv_noeeprom(HSV_BLUE); - keyboard_post_init_rgb(); -#ifdef RGBLIGHT_LAYERS - rgblight_layers = my_rgb_layers; -#else - rgblight_sethsv_noeeprom(HSV_BLUE); -#endif - /*debug_enable=true;*/ - /*debug_matrix=true;*/ -} - -//todo https://github.com/qmk/qmk_firmware/blob/debdc6379c7a72815df1f53e3406479381d243af/keyboards/crkbd/keymaps/soundmonster/keymap.c RGBRST - -layer_state_t layer_state_set_user(layer_state_t state) { -#ifdef RGBLIGHT_LAYERS - for (int i = _QWERTY; i < __LAST; i++) { - rgblight_set_layer_state(i, layer_state_cmp(state, i)); - } -# ifdef RAW_ENABLE - send_layer_via_hid(state); -# endif -#endif - return state; -} - -#ifdef RGBLIGHT_LAYERS -bool led_update_user(led_t led_state) { - rgblight_set_layer_state(9, led_state.caps_lock); - return true; -} -#endif - -#ifdef OLED_DRIVER_ENABLE -void suspend_power_down_user() { - oled_clear(); - oled_off(); -} - -oled_rotation_t oled_init_user(oled_rotation_t rotation) { - return OLED_ROTATION_180; -} - -static void render_logo(void) { - static const char PROGMEM qmk_logo[] = { - 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, - 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, - 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0}; - - static const char PROGMEM logo[] = { - // canvas is 128x64. need 16 padding - // 80x32 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x60, 0xe0, 0xf0, 0xfe, 0xfe, 0xf0, 0x60, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0c, 0x1c, 0x3c, 0x7c, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x7c, 0xf8, 0xe0, 0x60, 0x20, 0x10, 0x10, 0x0c, 0x0f, 0x09, 0x08, 0x00, 0x09, 0x9b, 0x5c, 0x50, 0x10, 0x20, 0x40, 0xe0, 0xf8, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0x78, 0x38, 0x38, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x03, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x1f, 0x1f, 0x1f, 0x1f, 0x17, 0x15, 0x3d, 0xef, 0xaf, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x40, 0xa0, 0xbf, 0xff, 0x3f, 0x3f, 0x3f, 0x1f, 0x1f, 0x1f, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - oled_write_raw_P(logo, sizeof(logo)); - - oled_advance_page(false); - oled_advance_page(false); - oled_advance_page(false); - oled_advance_page(false); - oled_write_P(qmk_logo, false); - -#ifdef COMBO_ENABLE - oled_write_P(PSTR("Combos enabled: "), false); - if (is_combo_enabled()) { - oled_write_P(PSTR("Yes\n"), false); - } else { - oled_write_P(PSTR("No\n"), false); - } -#endif - -#ifdef SPLIT_MODS_ENABLE - uint8_t mods = get_mods() | get_weak_mods(); - oled_write_P((mods & MOD_MASK_GUI) ? PSTR("GUI ") : PSTR(" "), false); - oled_write_P((mods & MOD_MASK_ALT) ? PSTR("ALT ") : PSTR(" "), false); - oled_write_P((mods & MOD_MASK_CTRL) ? PSTR("CTRL ") : PSTR(" "), false); - oled_write_P((mods & MOD_MASK_SHIFT) ? PSTR("SHFT ") : PSTR(" "), false); - oled_write_P(PSTR("\n"), false); - -#endif - -#ifdef WPM_ENABLE - // Write WPM - sprintf(wpm_str, "WPM: %03d", get_current_wpm()); - //oled_write_P(PSTR("\n"), false); - oled_write_P(PSTR(" "), false); - oled_write(wpm_str, false); -#endif -} - - -static void render_status(void) { - static bool isColemak = false; - // QMK Logo and version information - oled_write_P(PSTR("Kyria rev1.3\n\n"), false); - - oled_write_P(isColemak ? PSTR("COLEMAK ") : PSTR("QWERTY "), false); - - // Host Keyboard Layer Status - switch (get_highest_layer(layer_state)) { - case _QWERTY: - oled_write_P(PSTR("Default\n"), false); - isColemak = false; - break; - case _SYMBOLS: - oled_write_P(PSTR("Shifted Sym\n"), false); - break; - case _NUM: - oled_write_P(PSTR("Numbers\n"), false); - break; - case _NAV: - oled_write_P(PSTR("Navigation\n"), false); - break; - case _FN: - oled_write_P(PSTR("Fn\n"), false); - break; - case _GAME: - oled_write_P(PSTR("Game\n"), false); - isColemak = false; - break; - case _COLEMAK: - oled_write_P(PSTR("Colemak-DHm\n"), false); - isColemak = true; - break; - case _MEDIA: - oled_write_P(PSTR("Media keys\n"), false); - break; - case _MOUSE: - oled_write_P(PSTR("Mouse keys\n"), false); - break; - default: - oled_write_P(PSTR("Undefined\n"), false); - } - - uint8_t mods = get_mods() | get_weak_mods(); - oled_write_P(PSTR("\n"), false); - oled_write_P((mods & MOD_MASK_GUI) ? PSTR("GUI ") : PSTR(" "), false); - oled_write_P((mods & MOD_MASK_ALT) ? PSTR("ALT ") : PSTR(" "), false); - oled_write_P((mods & MOD_MASK_CTRL) ? PSTR("CTRL ") : PSTR(" "), false); - oled_write_P((mods & MOD_MASK_SHIFT) ? PSTR("SHFT ") : PSTR(" "), false); - oled_write_P(PSTR("\n"), false); - -#define I3MASK MOD_BIT(KC_LGUI) -#define I3SMASK (MOD_BIT(KC_LGUI) | MOD_BIT(KC_LSFT)) -#define KMASK (MOD_BIT(KC_LCTL) | MOD_BIT(KC_LSFT)) - - oled_write_P((mods == I3MASK) ? PSTR("I3 ") : (mods == I3SMASK) ? PSTR("I3-SFT ") : PSTR(" "), false); - oled_write_P((mods == KMASK) ? PSTR("KITTY ") : PSTR(" "), false); - oled_write_P(PSTR("\n"), false); - - // Host Keyboard LED Status - uint8_t led_usb_state = host_keyboard_leds(); - oled_write_P(IS_LED_ON(led_usb_state, USB_LED_NUM_LOCK) ? PSTR("NUMLCK ") : PSTR(" "), false); - oled_write_P(IS_LED_ON(led_usb_state, USB_LED_CAPS_LOCK) ? PSTR("CAPLCK ") : PSTR(" "), false); - oled_write_P(IS_LED_ON(led_usb_state, USB_LED_SCROLL_LOCK) ? PSTR("SCRLCK ") : PSTR(" "), false); - -} - -void oled_task_user(void) { - if (is_keyboard_master()) { - render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) - } else { - render_logo(); - } -} -#endif - - -#ifdef RAW_ENABLE -void raw_hid_receive(uint8_t *data, uint8_t length) { - // messages from host - // add ability to set color - raw_hid_send(data, length); -} -#endif diff --git a/keyboards/kyria/keymaps/cwebster2/rules.mk b/keyboards/kyria/keymaps/cwebster2/rules.mk deleted file mode 100644 index fe9ca3c2ccf2..000000000000 --- a/keyboards/kyria/keymaps/cwebster2/rules.mk +++ /dev/null @@ -1,5 +0,0 @@ -OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -RAW_ENABLE = yes -WPM_ENABLE = yes -COMBO_ENABLE = no diff --git a/keyboards/kyria/keymaps/default/config.h b/keyboards/kyria/keymaps/default/config.h deleted file mode 100644 index 9c2fb52abc9d..000000000000 --- a/keyboards/kyria/keymaps/default/config.h +++ /dev/null @@ -1,33 +0,0 @@ -/* Copyright 2019 Thomas Baart - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#ifdef OLED_DRIVER_ENABLE - #define OLED_DISPLAY_128X64 -#endif - -#ifdef RGBLIGHT_ENABLE - #define RGBLIGHT_ANIMATIONS - #define RGBLIGHT_HUE_STEP 8 - #define RGBLIGHT_SAT_STEP 8 - #define RGBLIGHT_VAL_STEP 8 - #define RGBLIGHT_LIMIT_VAL 150 -#endif - -// If you are using an Elite C rev3 on the slave side, uncomment the lines below: -// #define SPLIT_USB_DETECT -// #define NO_USB_STARTUP_CHECK diff --git a/keyboards/kyria/keymaps/default/keymap.c b/keyboards/kyria/keymaps/default/keymap.c deleted file mode 100644 index c6254c1a5227..000000000000 --- a/keyboards/kyria/keymaps/default/keymap.c +++ /dev/null @@ -1,220 +0,0 @@ -/* Copyright 2019 Thomas Baart - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include QMK_KEYBOARD_H - -enum layers { - _QWERTY = 0, - _LOWER, - _RAISE, - _ADJUST -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* - * Base Layer: QWERTY - * - * ,-------------------------------------------. ,-------------------------------------------. - * |RAIS/ESC| Q | W | E | R | T | | Y | U | I | O | P | | \ | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * |Ctrl/BS | A | S | D | F | G | | H | J | K | L | ; : | ' " | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | LShift | Z | X | C | V | B |LShift|LShift| |LShift|LShift| N | M | , < | . > | / ? | - _ | - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * | GUI | Del | Enter| Space| Esc | | Enter| Space| Tab | Bksp | AltGr| - * | | | Alt | Lower| Raise| | Lower| Raise| | | | - * `----------------------------------' `----------------------------------' - */ - [_QWERTY] = LAYOUT( - LT(_RAISE, KC_ESC), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_PIPE, - MT(MOD_LCTL, KC_BSPC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LSFT, KC_LSFT, KC_LSFT, KC_LSFT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_MINS, - KC_LGUI, KC_DEL, MT(MOD_LALT, KC_ENT), LT(_LOWER, KC_SPC), LT(_RAISE, KC_ESC), LT(_LOWER, KC_ENT), LT(_RAISE, KC_SPC), KC_TAB, KC_BSPC, KC_RALT - ), -/* - * Lower Layer: Symbols - * - * ,-------------------------------------------. ,-------------------------------------------. - * | | ! | @ | { | } | | | | | | | | | | \ | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * | | # | $ | ( | ) | ` | | + | - | / | * | % | ' " | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | | % | ^ | [ | ] | ~ | | | | | | & | = | , | . | / ? | - _ | - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * | | | | ; | = | | = | ; | | | | - * | | | | | | | | | | | | - * `----------------------------------' `----------------------------------' - */ - [_LOWER] = LAYOUT( - _______, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, _______, _______, _______, _______, _______, KC_BSLS, - _______, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV, KC_PLUS, KC_MINS, KC_SLSH, KC_ASTR, KC_PERC, KC_QUOT, - _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, _______, _______, _______, _______, KC_AMPR, KC_EQL, KC_COMM, KC_DOT, KC_SLSH, KC_MINS, - _______, _______, _______, KC_SCLN, KC_EQL, KC_EQL, KC_SCLN, _______, _______, _______ - ), -/* - * Raise Layer: Number keys, media, navigation - * - * ,-------------------------------------------. ,-------------------------------------------. - * | | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * | | | Prev | Play | Next | VolUp| | Left | Down | Up | Right| | | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | | | | | Mute | VolDn| | | | | | MLeft| Mdown| MUp |MRight| | | - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * | | | | | | | | | | | | - * | | | | | | | | | | | | - * `----------------------------------' `----------------------------------' - */ - [_RAISE] = LAYOUT( - _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, - _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, - _______, _______, _______, _______, KC_MUTE, KC_VOLD, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), -/* - * Adjust Layer: Function keys, RGB - * - * ,-------------------------------------------. ,-------------------------------------------. - * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * | | TOG | SAI | HUI | VAI | MOD | | | | | F11 | F12 | | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | | | SAD | HUD | VAD | RMOD | | | | | | | | | | | | - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * | | | | | | | | | | | | - * | | | | | | | | | | | | - * `----------------------------------' `----------------------------------' - */ - [_ADJUST] = LAYOUT( - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, - _______, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_MOD, _______, _______, _______, KC_F11, KC_F12, _______, - _______, _______, RGB_SAD, RGB_HUD, RGB_VAD, RGB_RMOD,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), -// /* -// * Layer template -// * -// * ,-------------------------------------------. ,-------------------------------------------. -// * | | | | | | | | | | | | | | -// * |--------+------+------+------+------+------| |------+------+------+------+------+--------| -// * | | | | | | | | | | | | | | -// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| -// * | | | | | | | | | | | | | | | | | | -// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' -// * | | | | | | | | | | | | -// * | | | | | | | | | | | | -// * `----------------------------------' `----------------------------------' -// */ -// [_LAYERINDEX] = LAYOUT( -// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, -// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, -// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, -// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ -// ), -}; - -layer_state_t layer_state_set_user(layer_state_t state) { - return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); -} - -#ifdef OLED_DRIVER_ENABLE -oled_rotation_t oled_init_user(oled_rotation_t rotation) { - return OLED_ROTATION_180; -} - -static void render_kyria_logo(void) { - static const char PROGMEM kyria_logo[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,224,240,112,120, 56, 60, 28, 30, 14, 14, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 30, 28, 60, 56,120,112,240,224,192,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0,192,224,240,124, 62, 31, 15, 7, 3, 1,128,192,224,240,120, 56, 60, 28, 30, 14, 14, 7, 7,135,231,127, 31,255,255, 31,127,231,135, 7, 7, 14, 14, 30, 28, 60, 56,120,240,224,192,128, 1, 3, 7, 15, 31, 62,124,240,224,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,240,252,255, 31, 7, 1, 0, 0,192,240,252,254,255,247,243,177,176, 48, 48, 48, 48, 48, 48, 48,120,254,135, 1, 0, 0,255,255, 0, 0, 1,135,254,120, 48, 48, 48, 48, 48, 48, 48,176,177,243,247,255,254,252,240,192, 0, 0, 1, 7, 31,255,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,254,255,255, 1, 1, 7, 30,120,225,129,131,131,134,134,140,140,152,152,177,183,254,248,224,255,255,224,248,254,183,177,152,152,140,140,134,134,131,131,129,225,120, 30, 7, 1, 1,255,255,254, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0,255,255, 0, 0,192,192, 48, 48, 0, 0,240,240, 0, 0, 0, 0, 0, 0,240,240, 0, 0,240,240,192,192, 48, 48, 48, 48,192,192, 0, 0, 48, 48,243,243, 0, 0, 0, 0, 0, 0, 48, 48, 48, 48, 48, 48,192,192, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,127,255,255,128,128,224,120, 30,135,129,193,193, 97, 97, 49, 49, 25, 25,141,237,127, 31, 7,255,255, 7, 31,127,237,141, 25, 25, 49, 49, 97, 97,193,193,129,135, 30,120,224,128,128,255,255,127, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0, 63, 63, 3, 3, 12, 12, 48, 48, 0, 0, 0, 0, 51, 51, 51, 51, 51, 51, 15, 15, 0, 0, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 63, 63, 48, 48, 0, 0, 12, 12, 51, 51, 51, 51, 51, 51, 63, 63, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 15, 63,255,248,224,128, 0, 0, 3, 15, 63,127,255,239,207,141, 13, 12, 12, 12, 12, 12, 12, 12, 30,127,225,128, 0, 0,255,255, 0, 0,128,225,127, 30, 12, 12, 12, 12, 12, 12, 12, 13,141,207,239,255,127, 63, 15, 3, 0, 0,128,224,248,255, 63, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3, 7, 15, 62,124,248,240,224,192,128, 1, 3, 7, 15, 30, 28, 60, 56,120,112,112,224,224,225,231,254,248,255,255,248,254,231,225,224,224,112,112,120, 56, 60, 28, 30, 15, 7, 3, 1,128,192,224,240,248,124, 62, 15, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 15, 14, 30, 28, 60, 56,120,112,112,112,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,112,112,112,120, 56, 60, 28, 30, 14, 15, 7, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }; - oled_write_raw_P(kyria_logo, sizeof(kyria_logo)); -} - -static void render_qmk_logo(void) { - static const char PROGMEM qmk_logo[] = { - 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, - 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, - 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0}; - - oled_write_P(qmk_logo, false); -} - -static void render_status(void) { - // QMK Logo and version information - render_qmk_logo(); - oled_write_P(PSTR("Kyria rev1.0\n\n"), false); - - // Host Keyboard Layer Status - oled_write_P(PSTR("Layer: "), false); - switch (get_highest_layer(layer_state)) { - case _QWERTY: - oled_write_P(PSTR("Default\n"), false); - break; - case _LOWER: - oled_write_P(PSTR("Lower\n"), false); - break; - case _RAISE: - oled_write_P(PSTR("Raise\n"), false); - break; - case _ADJUST: - oled_write_P(PSTR("Adjust\n"), false); - break; - default: - oled_write_P(PSTR("Undefined\n"), false); - } - - // Host Keyboard LED Status - uint8_t led_usb_state = host_keyboard_leds(); - oled_write_P(IS_LED_ON(led_usb_state, USB_LED_NUM_LOCK) ? PSTR("NUMLCK ") : PSTR(" "), false); - oled_write_P(IS_LED_ON(led_usb_state, USB_LED_CAPS_LOCK) ? PSTR("CAPLCK ") : PSTR(" "), false); - oled_write_P(IS_LED_ON(led_usb_state, USB_LED_SCROLL_LOCK) ? PSTR("SCRLCK ") : PSTR(" "), false); -} - -void oled_task_user(void) { - if (is_keyboard_master()) { - render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) - } else { - render_kyria_logo(); - } -} -#endif - -#ifdef ENCODER_ENABLE -bool encoder_update_user(uint8_t index, bool clockwise) { - if (index == 0) { - // Volume control - if (clockwise) { - tap_code(KC_VOLU); - } else { - tap_code(KC_VOLD); - } - } - else if (index == 1) { - // Page up/Page down - if (clockwise) { - tap_code(KC_PGDN); - } else { - tap_code(KC_PGUP); - } - } - return true; -} -#endif diff --git a/keyboards/kyria/keymaps/default/rules.mk b/keyboards/kyria/keymaps/default/rules.mk deleted file mode 100644 index e3486a8a9f7e..000000000000 --- a/keyboards/kyria/keymaps/default/rules.mk +++ /dev/null @@ -1,3 +0,0 @@ -OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays -ENCODER_ENABLE = yes # Enables the use of one or more encoders -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow \ No newline at end of file diff --git a/keyboards/kyria/keymaps/drashna/config.h b/keyboards/kyria/keymaps/drashna/config.h deleted file mode 100644 index af6f73815508..000000000000 --- a/keyboards/kyria/keymaps/drashna/config.h +++ /dev/null @@ -1,35 +0,0 @@ -/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#define EE_HANDS - -#ifdef OLED_DRIVER_ENABLE -# define OLED_DISPLAY_128X64 -#endif - -#ifdef RGBLIGHT_ENABLE -# define RGBLIGHT_SLEEP -# define RGBLIGHT_LIMIT_VAL 200 -# define RGBLIGHT_HUE_STEP 8 -# define RGBLIGHT_SAT_STEP 8 -# define RGBLIGHT_VAL_STEP 8 -# define RGBLIGHT_SPLIT -// # define RGBLIGHT_LAYERS -#endif - -#define KEYLOGGER_LENGTH 10 diff --git a/keyboards/kyria/keymaps/drashna/keymap.c b/keyboards/kyria/keymaps/drashna/keymap.c deleted file mode 100644 index 4563a3c62235..000000000000 --- a/keyboards/kyria/keymaps/drashna/keymap.c +++ /dev/null @@ -1,194 +0,0 @@ -/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "drashna.h" - -/* - * The `LAYOUT_kyria_base` macro is a template to allow the use of identical - * modifiers for the default layouts (eg QWERTY, Colemak, Dvorak, etc), so - * that there is no need to set them up for each layout, and modify all of - * them if I want to change them. This helps to keep consistency and ease - * of use. K## is a placeholder to pass through the individual keycodes - */ - -// clang-format off -#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) -#define LAYOUT_kyria_base( \ - K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ - K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \ - K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \ - ) \ - LAYOUT_wrapper( \ - KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_MINS, \ - LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(K1B), \ - OS_LSFT, CTL_T(K21), K22, K23, K24, K25, TG_GAME, MEH(KC_MINS), TG_DBLO, KC_CAPS, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \ - KC_MUTE, OS_LALT, KC_GRV, KC_SPC, BK_LWER, DL_RAIS, KC_ENT, OS_RGUI, UC(0x03A8), UC(0x2E2E) \ - ) -/* Re-pass though to allow templates to be used */ -#define LAYOUT_kyria_base_wrapper(...) LAYOUT_kyria_base(__VA_ARGS__) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_QWERTY] = LAYOUT_kyria_base_wrapper( - _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, - _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, - _________________QWERTY_L3_________________, _________________QWERTY_R3_________________ - ), - - [_COLEMAK] = LAYOUT_kyria_base_wrapper( - _________________COLEMAK_L1________________, _________________COLEMAK_R1________________, - _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, - _________________COLEMAK_L3________________, _________________COLEMAK_R3________________ - ), - - [_DVORAK] = LAYOUT_kyria_base_wrapper( - _________________DVORAK_L1_________________, _________________DVORAK_R1_________________, - _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, - _________________DVORAK_L3_________________, _________________DVORAK_R3_________________ - ), - - [_WORKMAN] = LAYOUT_kyria_base_wrapper( - _________________WORKMAN_L1________________, _________________WORKMAN_R1________________, - _________________WORKMAN_L2________________, _________________WORKMAN_R2________________, - _________________WORKMAN_L3________________, _________________WORKMAN_R3________________ - ), - - [_NORMAN] = LAYOUT_kyria_base_wrapper( - _________________NORMAN_L1_________________, _________________NORMAN_L1_________________, - _________________NORMAN_L2_________________, _________________NORMAN_R2_________________, - _________________NORMAN_L3_________________, _________________NORMAN_R3_________________ - ), - - [_MALTRON] = LAYOUT_kyria_base_wrapper( - _________________MALTRON_L1________________, _________________MALTRON_R1________________, - _________________MALTRON_L2________________, _________________MALTRON_R2________________, - _________________MALTRON_L3________________, _________________MALTRON_R3________________ - ), - - [_EUCALYN] = LAYOUT_kyria_base_wrapper( - _________________EUCALYN_L1________________, _________________EUCALYN_R1________________, - _________________EUCALYN_L2________________, _________________EUCALYN_R2________________, - _________________EUCALYN_L3________________, _________________EUCALYN_R3________________ - ), - - [_CARPLAX] = LAYOUT_kyria_base_wrapper( - _____________CARPLAX_QFMLWY_L1_____________, _____________CARPLAX_QFMLWY_R1_____________, - _____________CARPLAX_QFMLWY_L2_____________, _____________CARPLAX_QFMLWY_R2_____________, - _____________CARPLAX_QFMLWY_L3_____________, _____________CARPLAX_QFMLWY_R3_____________ - ), - - [_GAMEPAD] = LAYOUT_wrapper( - KC_ESC, KC_K, KC_Q, KC_W, KC_E, KC_R, _______, _______, _______, _______, _______, _______, - KC_TAB, KC_G, KC_A, KC_S, KC_D, KC_F, _______, _______, _______, _______, _______, _______, - KC_LCTL, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, _______, _______, _______, LALT(KC_PSCR), _______, _______, _______, _______, _______, _______, - _______, MAGIC_TOGGLE_NKRO, KC_V, KC_SPC, KC_H, _______, _______, _______, _______, _______ - ), - - [_DIABLO] = LAYOUT_wrapper( - KC_ESC, KC_S, KC_I, KC_F, KC_M, KC_T, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, - KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_G, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_LCTL, KC_D3_1, KC_D3_2, KC_D3_3, KC_D3_4, KC_Z, KC_J, KC_L, TG_DBLO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_DIABLO_CLEAR, KC_J, KC_NO, SFT_T(KC_SPACE), ALT_T(KC_Q), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO - ), - [_LOWER] = LAYOUT_wrapper( - KC_F12, _________________LOWER_L1__________________, _________________LOWER_R1__________________, KC_F11, - _______, _________________LOWER_L2__________________, _________________LOWER_R2__________________, KC_PIPE, - _______, _________________LOWER_L3__________________, _______, _______, _______, _______, _________________LOWER_R3__________________, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - [_RAISE] = LAYOUT_wrapper( - KC_F12, _________________RAISE_L1__________________, _________________RAISE_R1__________________, KC_F11, - _______, _________________RAISE_L2__________________, _________________RAISE_R2__________________, KC_BSLS, - _______, _________________RAISE_L3__________________, _______, _______, _______, _______, _________________RAISE_R3__________________, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - [_ADJUST] = LAYOUT_wrapper( - KC_MAKE, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, KC_RESET, - VRSN, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, EEP_RST, - _______, _________________ADJUST_L3_________________, HPT_TOG, HPT_FBK, MG_NKRO, UC_MOD, _________________ADJUST_R3_________________, TG_MODS, - _______, _______, _______, KC_NUKE, _______, _______, _______, _______, _______, _______ - ), -// [_LAYERINDEX] = LAYOUT_wrapper( -// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, -// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, -// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, -// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ -// ), -}; -// clang-format on - -#ifdef OLED_DRIVER_ENABLE -oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; } -#endif - -#ifdef ENCODER_ENABLE -bool encoder_update_user(uint8_t index, bool clockwise) { - if (index == 0) { - // Volume control - if (clockwise) { - tap_code(KC_VOLU); - } else { - tap_code(KC_VOLD); - } - } else if (index == 1) { - // Page up/Page down - if (clockwise) { - tap_code(KC_PGDN); - } else { - tap_code(KC_PGUP); - } - } - return true; -} -#endif - -#ifdef RGBLIGHT_LAYERS -const rgblight_segment_t PROGMEM shift_layers[] = RGBLIGHT_LAYER_SEGMENTS( - { 8, 1, 120, 255, 255}, - { 18, 1, 120, 255, 255} -); -const rgblight_segment_t PROGMEM control_layers[] = RGBLIGHT_LAYER_SEGMENTS( - { 6, 1, 0, 255, 255}, - { 16, 1, 0, 255, 255} -); -const rgblight_segment_t PROGMEM alt_layers[] = RGBLIGHT_LAYER_SEGMENTS( - { 2, 1, 240, 255, 255}, - { 17, 1, 250, 255, 255} -); -const rgblight_segment_t PROGMEM gui_layers[] = RGBLIGHT_LAYER_SEGMENTS( - { 7, 1, 51, 255, 255}, - { 12, 1, 51, 255, 255} -); - -const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( - shift_layers, - control_layers, - alt_layers, - gui_layers -); - -void keyboard_post_init_keymap(void) { - rgblight_layers = my_rgb_layers; -} - -void matrix_scan_keymap(void) { - uint8_t mods = mod_config(get_mods()|get_oneshot_mods()); - rgblight_set_layer_state(0, mods & MOD_MASK_SHIFT); - rgblight_set_layer_state(1, mods & MOD_MASK_CTRL); - rgblight_set_layer_state(2, mods & MOD_MASK_ALT); - rgblight_set_layer_state(3, mods & MOD_MASK_GUI); -} -#endif diff --git a/keyboards/kyria/keymaps/drashna/rules.mk b/keyboards/kyria/keymaps/drashna/rules.mk deleted file mode 100644 index fb3c1cf8436f..000000000000 --- a/keyboards/kyria/keymaps/drashna/rules.mk +++ /dev/null @@ -1,21 +0,0 @@ -OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays -ENCODER_ENABLE = yes # ENables the use of one or more encoders -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -RGBLIGHT_STARTUP_ANIMATION = no - -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration -MOUSEKEY_ENABLE = no # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 -BOOTLOADER = atmel-dfu - -# SPLIT_TRANSPORT = mirror - -# TAP_DANCE_ENABLE = yes diff --git a/keyboards/kyria/keymaps/ghidalgo93/config.h b/keyboards/kyria/keymaps/ghidalgo93/config.h deleted file mode 100644 index c46873c8ef20..000000000000 --- a/keyboards/kyria/keymaps/ghidalgo93/config.h +++ /dev/null @@ -1,41 +0,0 @@ -/* Copyright 2019 Thomas Baart - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#ifdef OLED_DRIVER_ENABLE - #define OLED_DISPLAY_128X64 -#endif - -#ifdef RGBLIGHT_ENABLE - #define RGBLIGHT_ANIMATIONS - #define RGBLIGHT_HUE_STEP 8 - #define RGBLIGHT_SAT_STEP 8 - #define RGBLIGHT_VAL_STEP 8 -#endif - -// encoder resolution from default 4 to 2 -#define ENCODER_RESOLUTION 2 - -// If you are using an Elite C rev3 on the slave side, uncomment the lines below: -// #define SPLIT_USB_DETECT -// #define NO_USB_STARTUP_CHECK - -//allows for either side as the master. -#define EE_HANDS - - - diff --git a/keyboards/kyria/keymaps/ghidalgo93/keymap.c b/keyboards/kyria/keymaps/ghidalgo93/keymap.c deleted file mode 100644 index 1adbcc6ee721..000000000000 --- a/keyboards/kyria/keymaps/ghidalgo93/keymap.c +++ /dev/null @@ -1,246 +0,0 @@ -/* Copyright 2019 Thomas Baart - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include QMK_KEYBOARD_H - - -enum layers { - _QWERTY = 0, - _LOWER, - _RAISE, - _NAV, - _ADJUST -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* - * Base Layer: QWERTY - * - * ,-------------------------------------------. ,-------------------------------------------. - * | ESC | Q | W | E | R | T | | Y | U | I | O | P | | \ | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * | Ctrl | A | S | D | F | G | | H | J | K | L | ; : | ' " | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | LShift | Z | X | C | V | B | | | | | | N | M | , < | . > | / ? | - _ | - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * | | GUI | | Tab | Enter| | Bksp | Space| Alt | Home | End | - * | | | LCTL | Lower| | | | Raise| | | | - * `----------------------------------' `----------------------------------' - */ - [_QWERTY] = LAYOUT( - KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_PIPE, - 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, _______, _______, _______, _______, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_MINS, - _______, KC_LGUI , KC_LCTL, LT(_LOWER, KC_TAB), LT(_NAV, KC_ENT), KC_BSPC, LT(_RAISE, KC_SPC), KC_RALT, KC_HOME, KC_END - ), -/* - * Lower Layer: Number keys, media - * - * ,-------------------------------------------. ,-------------------------------------------. - * | | | | | | | | | 7 | 8 | 9 | | | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * | | | Prev | Play | Next | VolUp| | | 4 | 5 | 6 | | | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | | | | | Mute | VolDn| | | | | | 0 | 1 | 2 | 3 | | | - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * | | | | | | | | | | | | - * | | | | | | | | | | | | - * `----------------------------------' `----------------------------------' - */ - [_LOWER] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, KC_7 , KC_8 , KC_9 , _______, _______, - _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, _______, KC_4 , KC_5 , KC_6 , _______, _______, - _______, _______, _______, _______, KC_MUTE, KC_VOLD, _______, _______, _______, _______, KC_0 , KC_1 , KC_2 , KC_3 , _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), -/* - * Raise Layer: Symbols - * - * ,-------------------------------------------. ,-------------------------------------------. - * | | @ | ! | { | } | | | ` | ~ | & | * | | | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * | | # | $ | ( | ) | | | _ | - | = | | | ' " | | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | | % | ^ | [ | ] | | | | | | | | + | \ | | | | - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * | | | | | | | | | | | | - * | | | | | | | | | | | | - * `----------------------------------' `----------------------------------' - */ - [_RAISE] = LAYOUT( - _______, KC_AT , KC_EXLM, KC_LCBR, KC_RCBR, _______, KC_GRV , KC_TILD, KC_AMPR, KC_ASTR, _______, _______, - _______, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, _______, KC_UNDS, KC_MINS, KC_EQL , KC_PIPE, KC_QUOT, _______, - _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, _______, _______, _______, _______, _______, _______, KC_PLUS, KC_BSLS, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), -// /* -// * Navigation Layer -// * -// * ,-------------------------------------------. ,-------------------------------------------. -// * | | | | | | | | home |pg dn |pg up | end | | | -// * |--------+------+------+------+------+------| |------+------+------+------+------+--------| -// * | | | | | | | | left | down | up | right| | | -// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| -// * | | | | | | | | | | | | | | | | | | -// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' -// * | | | | | | | | | | | | -// * | | | | | | | | | | | | -// * `----------------------------------' `----------------------------------' -// */ - [_NAV] = LAYOUT( - _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END , _______, _______, - _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), -/* - * Adjust Layer: Function keys, RGB - * - * ,-------------------------------------------. ,-------------------------------------------. - * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * | | | | | | | | | | | F11 | F12 | | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | | | | | | | | | | | | | | | | | | - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * | | | | | | | | | | | | - * | | | | | | | | | | | | - * `----------------------------------' `----------------------------------' - */ - [_ADJUST] = LAYOUT( - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_F11, KC_F12, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), -// /* -// * Layer template -// * -// * ,-------------------------------------------. ,-------------------------------------------. -// * | | | | | | | | | | | | | | -// * |--------+------+------+------+------+------| |------+------+------+------+------+--------| -// * | | | | | | | | | | | | | | -// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| -// * | | | | | | | | | | | | | | | | | | -// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' -// * | | | | | | | | | | | | -// * | | | | | | | | | | | | -// * `----------------------------------' `----------------------------------' -// */ -// [_LAYERINDEX] = LAYOUT( -// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, -// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, -// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, -// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ -// ), -}; - -layer_state_t layer_state_set_user(layer_state_t state) { - return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); -} - - -#ifdef OLED_DRIVER_ENABLE -oled_rotation_t oled_init_user(oled_rotation_t rotation) { - return OLED_ROTATION_180; -} - -static void render_kyria_logo(void) { - static const char PROGMEM kyria_logo[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,224,240,112,120, 56, 60, 28, 30, 14, 14, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 30, 28, 60, 56,120,112,240,224,192,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0,192,224,240,124, 62, 31, 15, 7, 3, 1,128,192,224,240,120, 56, 60, 28, 30, 14, 14, 7, 7,135,231,127, 31,255,255, 31,127,231,135, 7, 7, 14, 14, 30, 28, 60, 56,120,240,224,192,128, 1, 3, 7, 15, 31, 62,124,240,224,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,240,252,255, 31, 7, 1, 0, 0,192,240,252,254,255,247,243,177,176, 48, 48, 48, 48, 48, 48, 48,120,254,135, 1, 0, 0,255,255, 0, 0, 1,135,254,120, 48, 48, 48, 48, 48, 48, 48,176,177,243,247,255,254,252,240,192, 0, 0, 1, 7, 31,255,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,254,255,255, 1, 1, 7, 30,120,225,129,131,131,134,134,140,140,152,152,177,183,254,248,224,255,255,224,248,254,183,177,152,152,140,140,134,134,131,131,129,225,120, 30, 7, 1, 1,255,255,254, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0,255,255, 0, 0,192,192, 48, 48, 0, 0,240,240, 0, 0, 0, 0, 0, 0,240,240, 0, 0,240,240,192,192, 48, 48, 48, 48,192,192, 0, 0, 48, 48,243,243, 0, 0, 0, 0, 0, 0, 48, 48, 48, 48, 48, 48,192,192, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,127,255,255,128,128,224,120, 30,135,129,193,193, 97, 97, 49, 49, 25, 25,141,237,127, 31, 7,255,255, 7, 31,127,237,141, 25, 25, 49, 49, 97, 97,193,193,129,135, 30,120,224,128,128,255,255,127, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0, 63, 63, 3, 3, 12, 12, 48, 48, 0, 0, 0, 0, 51, 51, 51, 51, 51, 51, 15, 15, 0, 0, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 63, 63, 48, 48, 0, 0, 12, 12, 51, 51, 51, 51, 51, 51, 63, 63, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 15, 63,255,248,224,128, 0, 0, 3, 15, 63,127,255,239,207,141, 13, 12, 12, 12, 12, 12, 12, 12, 30,127,225,128, 0, 0,255,255, 0, 0,128,225,127, 30, 12, 12, 12, 12, 12, 12, 12, 13,141,207,239,255,127, 63, 15, 3, 0, 0,128,224,248,255, 63, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3, 7, 15, 62,124,248,240,224,192,128, 1, 3, 7, 15, 30, 28, 60, 56,120,112,112,224,224,225,231,254,248,255,255,248,254,231,225,224,224,112,112,120, 56, 60, 28, 30, 15, 7, 3, 1,128,192,224,240,248,124, 62, 15, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 15, 14, 30, 28, 60, 56,120,112,112,112,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,112,112,112,120, 56, 60, 28, 30, 14, 15, 7, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }; - oled_write_raw_P(kyria_logo, sizeof(kyria_logo)); -} - -static void render_qmk_logo(void) { - static const char PROGMEM qmk_logo[] = { - 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, - 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, - 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0}; - - oled_write_P(qmk_logo, false); -} - -static void render_status(void) { - // QMK Logo and version information - render_qmk_logo(); - oled_write_P(PSTR("Kyria rev1.0\n\n"), false); - - // Host Keyboard Layer Status - oled_write_P(PSTR("Layer: "), false); - switch (get_highest_layer(layer_state)) { - case _QWERTY: - oled_write_P(PSTR("Default\n"), false); - break; - case _LOWER: - oled_write_P(PSTR("Lower\n"), false); - break; - case _RAISE: - oled_write_P(PSTR("Raise\n"), false); - break; - case _NAV: - oled_write_P(PSTR("Nav\n"), false); - break; - case _ADJUST: - oled_write_P(PSTR("Adjust\n"), false); - break; - default: - oled_write_P(PSTR("Undefined\n"), false); - } - - // Host Keyboard LED Status - led_t led_state = host_keyboard_led_state(); - oled_write_P(led_state.num_lock ? PSTR("NUMLCK ") : PSTR(" "), false); - oled_write_P(led_state.caps_lock ? PSTR("CAPLCK ") : PSTR(" "), false); - oled_write_P(led_state.scroll_lock ? PSTR("SCRLCK ") : PSTR(" "), false); -} - -void oled_task_user(void) { - if (is_keyboard_master()) { - render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) - } else { - render_kyria_logo(); - } -} -#endif - -#ifdef ENCODER_ENABLE -bool encoder_update_user(uint8_t index, bool clockwise) { - if (index == 0) { - // Volume control - if (clockwise) { - tap_code(KC_VOLD); - } else { - tap_code(KC_VOLU); - } - } - else if (index == 1) { - // Page up/Page down - if (clockwise) { - tap_code(KC_PGDN); - } else { - tap_code(KC_PGUP); - } - } - return true; -} -#endif diff --git a/keyboards/kyria/keymaps/ghidalgo93/rules.mk b/keyboards/kyria/keymaps/ghidalgo93/rules.mk deleted file mode 100644 index 449e3d95013f..000000000000 --- a/keyboards/kyria/keymaps/ghidalgo93/rules.mk +++ /dev/null @@ -1,4 +0,0 @@ -OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays -ENCODER_ENABLE = yes # Enables the use of one or more encoders -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -AUTO_SHIFT_ENABLE = yes # Enable auto shift diff --git a/keyboards/kyria/keymaps/gotham/config.h b/keyboards/kyria/keymaps/gotham/config.h deleted file mode 100644 index 1b84d996fedd..000000000000 --- a/keyboards/kyria/keymaps/gotham/config.h +++ /dev/null @@ -1,48 +0,0 @@ -/* Copyright 2019 Thomas Baart - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#define EE_HANDS -#define IGNORE_MOD_TAP_INTERRUPT - -// Fix for Elite C rev3 -#define SPLIT_USB_DETECT -// Speed up slave half startup -#define SPLIT_USB_TIMEOUT 1000 - -#ifdef OLED_DRIVER_ENABLE -# define OLED_DISPLAY_128X64 -# define OLED_TIMEOUT 10000 -#endif - -#ifdef RGBLIGHT_ENABLE -# define RGBLIGHT_EFFECT_BREATHING -# define RGBLIGHT_EFFECT_RAINBOW_MOOD -# define RGBLIGHT_EFFECT_RAINBOW_SWIRL -# define RGBLIGHT_EFFECT_KNIGHT -#endif - -#ifdef ENCODER_ENABLE -# define ENCODER_DIRECTION_FLIP -# define ENCODER_RESOLUTION 2 -#endif - -#ifdef THUMBSTICK_ENABLE -# define THUMBSTICK_FLIP_X -# define THUMBSTICK_PIN_X F0 -# define THUMBSTICK_PIN_Y F1 -#endif diff --git a/keyboards/kyria/keymaps/gotham/keymap.c b/keyboards/kyria/keymaps/gotham/keymap.c deleted file mode 100644 index a725e61fe331..000000000000 --- a/keyboards/kyria/keymaps/gotham/keymap.c +++ /dev/null @@ -1,127 +0,0 @@ -/* Copyright 2019 Thomas Baart - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include QMK_KEYBOARD_H - -#include "keycodes.h" - -#ifdef ENCODER_ENABLE -# include "encoder_utils.h" -#endif - -#ifdef OLED_DRIVER_ENABLE -# include "oled_utils.h" -#endif - -#ifdef THUMBSTICK_ENABLE -# include "thumbstick.h" -#endif - -// clang-format off -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* - * Base Layer: QWERTY -*/ - [_QWERTY] = LAYOUT( - ESC_RAISE, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, BSLS_RAISE, - KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, SFT_QUOT, - KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LGUI, KC_NO, TMB_MODE, KC_NO, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, CTL_MINS, - ENC_MODE_L, KC_LALT, LT(_LOWER, KC_SPC), LT(_RAISE, KC_TAB), KC_LSFT, KC_EQL, LT(_RAISE, KC_ENT), LT(_LOWER, KC_BSPC), KC_DEL, ENC_MODE_R - ), -/* - * Lower Layer: Symbols, Navigation - */ - [_LOWER] = LAYOUT( - _______, KC_HASH, KC_DLR, KC_LCBR, KC_RCBR, KC_PIPE, _______, _______, _______, _______, _______, KC_PIPE, - _______, KC_EXLM, KC_AT, KC_LPRN, KC_RPRN, KC_GRV, KC_PGUP, KC_LEFT, KC_UP, KC_RGHT, _______, KC_QUOT, - _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, _______, _______, _______, _______, KC_PGDN, KC_HOME, KC_DOWN, KC_END, _______, KC_MINS, - _______, _______, _______, KC_SCLN, KC_EQL, KC_EQL, KC_SCLN, _______, _______, _______ - ), -/* - * Raise Layer: Number keys, media, more symbols - */ - [_RAISE] = LAYOUT( - _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, - _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, KC_MINS, KC_PLUS, KC_ASTR, KC_SLSH, KC_PERC, _______, - _______, _______, _______, _______, KC_MUTE, KC_VOLD, _______, _______, _______, _______, KC_AMPR, KC_PIPE, KC_COMM, KC_DOT, KC_SLSH, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), -/* - * Adjust Layer: Function keys, RGB - */ - [_ADJUST] = LAYOUT( - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, - _______, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_MOD, _______, _______, _______, KC_F11, KC_F12, _______, - _______, _______, RGB_SAD, RGB_HUD, RGB_VAD, RGB_RMOD,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), -}; -// clang-format on - -void matrix_init_user(void) { -#ifdef ENCODER_ENABLE - encoder_utils_init(); -#endif -} - -layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { -#ifdef ENCODER_ENABLE - case ENC_MODE_L: - if (record->event.pressed) { - cycle_encoder_mode(true, false); - } - break; - case ENC_MODE_R: - if (record->event.pressed) { - cycle_encoder_mode(false, false); - } - break; -#endif -#ifdef THUMBSTICK_ENABLE - case TMB_MODE: - if (record->event.pressed) { - thumbstick_mode_cycle(false); - } -#endif - } - return true; -} - -#ifdef OLED_DRIVER_ENABLE -oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; } - -void oled_task_user(void) { render_status(); } -#endif - -#ifdef ENCODER_ENABLE -bool encoder_update_user(uint8_t index, bool clockwise) { - if (index == 0) { - encoder_action(get_encoder_mode(true), clockwise); -# ifdef OLED_DRIVER_ENABLE - oled_on(); -# endif - } else if (index == 1) { - encoder_action(get_encoder_mode(false), clockwise); -# ifdef OLED_DRIVER_ENABLE - oled_on(); -# endif - } - return true; -} -#endif diff --git a/keyboards/kyria/keymaps/gotham/rules.mk b/keyboards/kyria/keymaps/gotham/rules.mk deleted file mode 100644 index 0bd8badb4d48..000000000000 --- a/keyboards/kyria/keymaps/gotham/rules.mk +++ /dev/null @@ -1,21 +0,0 @@ -CONSOLE_ENABLE = yes # Console for debug -ENCODER_ENABLE = yes # ENables the use of one or more encoders -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MOUSEKEY_ENABLE = no # Mouse keys -OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays -THUMBSTICK_ENABLE = yes # Enables analog thumbstick code - -ifeq ($(strip $(ENCODER_ENABLE)), yes) - SRC += encoder_utils.c -endif - -ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes) - SRC += oled_utils.c -endif - -ifeq ($(strip $(THUMBSTICK_ENABLE)), yes) - POINTING_DEVICE_ENABLE = yes - OPT_DEFS += -DTHUMBSTICK_ENABLE - SRC += analog.c - SRC += thumbstick.c -endif diff --git a/keyboards/kyria/keymaps/j-inc/config.h b/keyboards/kyria/keymaps/j-inc/config.h deleted file mode 100644 index 833fbe4bd9b0..000000000000 --- a/keyboards/kyria/keymaps/j-inc/config.h +++ /dev/null @@ -1,45 +0,0 @@ -/* Copyright 2019 Thomas Baart - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#ifdef OLED_DRIVER_ENABLE - #define OLED_DISPLAY_128X64 - #define OLED_TIMEOUT 300000 -#endif - -// If you are using an Elite C rev3 on the slave side, uncomment the lines below: -#define SPLIT_USB_DETECT -#define NO_USB_STARTUP_CHECK -#define SPLIT_USB_TIMEOUT 1000 - -#define MASTER_RIGHT -#define ENCODER_DIRECTION_FLIP - - -#define NO_ACTION_MACRO -#define NO_ACTION_FUNCTION -#define NO_ACTION_ONESHOT -#define OLED_FONT_END 127 - - -#ifdef RGBLIGHT_ENABLE - #define RGBLIGHT_LED_MAP {0,1,2,9,8,7,4,3,5,6,19,18,17,10,11,12,15,16,14,13} // Orients Kyria LEDs to a circle around both halves. - //#define RBGLIGHT_LED_MAP {9,8,6,7,5,3,2,4,1,0,10,12,13,11,14,16,17,15,18,19} // Orients Kyria LEDs for a left half-right half columnar progression. - #define RGBLIGHT_EFFECT_RAINBOW_SWIRL - //#define RGBLIGHT_EFFECT_STATIC_GRADIENT - #define RGBLIGHT_SLEEP -#endif diff --git a/keyboards/kyria/keymaps/j-inc/keymap.c b/keyboards/kyria/keymaps/j-inc/keymap.c deleted file mode 100644 index d842e4c2b9f2..000000000000 --- a/keyboards/kyria/keymaps/j-inc/keymap.c +++ /dev/null @@ -1,371 +0,0 @@ -/* Copyright 2019 Thomas Baart - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include QMK_KEYBOARD_H -#include -bool is_alt_tab_active = false; -uint16_t alt_tab_timer = 0; - -char wpm_str[10]; - -enum layers { - _QWERTY, - _2WERTY, //pronounced "twerty," obviously - _LOWER, - _RAISE, - _ADJUST, -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* - * Base Layer: QWERTY - * - * ,-------------------------------------------. ,-------------------------------------------. - * |RAIS/ESC| Q | W | E | R | T | | Y | U | I | O | P | BKSP | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * |Tab | A | S | D | F | G | | H | J | K | L | ; : | ' " | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | CTRL | Z | X | C | V | B |Enter |Ctrl | |Ctrl |(2u) | N | M | , < | . > | / ? | - _ | - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * | TG(1)| Alt | Win | Shift| Back | | Enter| Space| Win | Alt |TG(3) | - * | | | | Lower| space| | Lower| Raise| | | | - * `----------------------------------' `----------------------------------' - */ - [_QWERTY] = LAYOUT( - KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, - KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_ENT, KC_LCTL, KC_RCTL, _______, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_MINS, - TG(1), KC_LALT, KC_LGUI, KC_LSFT, KC_BSPC, LT(3, KC_ENT), LT(2, KC_SPC), KC_RGUI, KC_RALT, TG(2) - ), -/* - * This layer exists to change encoder functions. - * - * ,-------------------------------------------. ,-------------------------------------------. - * | | | | | | | | | | | | | | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * | | | | | | | | | | | | | | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | | | | | | | | | | | | | | | | | | - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * | | | | | | | | | | | | - * | | | | | | | | | | | | - * `----------------------------------' `----------------------------------' - */ - [_2WERTY] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - KC_TRNS, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), -/* - * Lower Layer: numpad and arrow - * - * ,-------------------------------------------. ,-------------------------------------------. - * | | | 7 | 8 | 9 | 0 | | PGUP | | UP | | | Del - | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * | CAPS | | 4 | 5 | 6 | Tab | | PGDN | Left | Down | Right| | | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | | | 1 | 2 | 3 | Ent | | | | | | | LBRC | RBRC | | |\ | += | - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * | | Tab | Ent | | | | | | | | | - * | | | | | | | | | | | | - * `----------------------------------' `----------------------------------' - */ - [_LOWER] = LAYOUT( - _______, _______, KC_7, KC_8, KC_9, KC_0, KC_PGUP, _______, KC_UP, _______, _______, KC_DEL, - KC_CAPS, _______, KC_4, KC_5, KC_6, KC_TAB, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, - KC_LSFT, KC_0, KC_1, KC_2, KC_3, KC_ENT, KC_TRNS, KC_TRNS, MO(4), _______, KC_LBRC, KC_RBRC, _______, _______, KC_BSLS, KC_EQL, - KC_TRNS, KC_TAB, KC_ENT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, _______, _______, _______ - ), -/* - * Raise Layer: F keys and media - * - * ,-------------------------------------------. ,-------------------------------------------. - * | | | | | | | | F9 | F10 | F11 | F12 | | | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * | | | Prev | Play | Next | VolUp| | F5 | F6 | F7 | F8 | | | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | | | | | Mute | VolDn| | | | | | F1 | F2 | F3 | F4 | | | - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * | | | | | | | | | | | | - * | | | | | | | | | | | | - * `----------------------------------' `----------------------------------' - */ - [_RAISE] = LAYOUT( - _______, _______, _______, _______, _______, _______, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, - _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, KC_F5, KC_F6, KC_F7, KC_F8, _______, _______, - _______, _______, _______, _______, KC_MUTE, KC_VOLD, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_TRNS - ), -/* - * Adjust Layer: Function keys, RGB - * - * ,-------------------------------------------. ,-------------------------------------------. - * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * | | VAI | SAI | HUI | SPI | MOD | | | | | F11 | F12 | | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | | VID | SAD | HUD | SPD | RMOD | | | | | | | | | | | | - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * | | | | | | | | | | | | - * | | | | | | | | | | | | - * `----------------------------------' `----------------------------------' - */ - [_ADJUST] = LAYOUT( - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, - RGB_TOG, RGB_VAI, RGB_SAI, RGB_HUI, RGB_SPI, RGB_MOD, _______, _______, _______, KC_F11, KC_F12, _______, - _______, RGB_VAD, RGB_SAD, RGB_HUD, RGB_SPD, RGB_RMOD,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - KC_TRNS, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), -// /* -// * Layer template -// * -// * ,-------------------------------------------. ,-------------------------------------------. -// * | | | | | | | | | | | | | | -// * |--------+------+------+------+------+------| |------+------+------+------+------+--------| -// * | | | | | | | | | | | | | | -// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| -// * | | | | | | | | | | | | | | | | | | -// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' -// * | | | | | | | | | | | | -// * | | | | | | | | | | | | -// * `----------------------------------' `----------------------------------' -// */ -// [_LAYERINDEX] = LAYOUT( -// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, -// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, -// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, -// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ -// ), -}; - -layer_state_t layer_state_set_user(layer_state_t state) { - return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); -} - -#ifdef OLED_DRIVER_ENABLE - -oled_rotation_t oled_init_user(oled_rotation_t rotation) { - return OLED_ROTATION_180; -} - -static void render_status(void) { - // Host Keyboard Layer Status - oled_write_P(PSTR("Layer: "), false); - switch (get_highest_layer(layer_state)) { - case _QWERTY: - oled_write_P(PSTR("QWERTY"), false); - break; - case _2WERTY: - oled_write_P(PSTR("2WERTY"), false); - break; - case _LOWER: - oled_write_P(PSTR("Numpad"), false); - break; - case _RAISE: - oled_write_P(PSTR("F Keys"), false); - break; - case _ADJUST: - oled_write_P(PSTR("RGB "), false); - break; - default: - oled_write_P(PSTR("Undefined"), false); - } - - //Host Keyboard LED Status - led_t led_state = host_keyboard_led_state(); - oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); - oled_write_P(led_state.caps_lock ? PSTR("CAPS ") : PSTR(" "), false); - oled_write_P(led_state.scroll_lock ? PSTR("SCRL") : PSTR(" "), false); -} - - -// WPM-responsive animation stuff here -#define IDLE_FRAMES 5 -#define IDLE_SPEED 40 // below this wpm value your animation will idle - -// #define PREP_FRAMES 1 // uncomment if >1 - -#define TAP_FRAMES 2 -#define TAP_SPEED 60 // above this wpm value typing animation to triggere - -#define ANIM_FRAME_DURATION 200 // how long each frame lasts in ms -// #define SLEEP_TIMER 60000 // should sleep after this period of 0 wpm, needs fixing -#define ANIM_SIZE 636 // number of bytes in array, minimize for adequate firmware size, max is 1024 - -uint32_t anim_timer = 0; -uint32_t anim_sleep = 0; -uint8_t current_idle_frame = 0; -// uint8_t current_prep_frame = 0; // uncomment if PREP_FRAMES >1 -uint8_t current_tap_frame = 0; - -// Images credit j-inc(/James Incandenza) and pixelbenny. Credit to obosob for initial animation approach. -static void render_anim(void) { - static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = { - { - 0, 0,126,126, 24, 60,102, 66, 0, 12, 28,112,112, 28, 12, 0,116,116, 20, 20,124,104, 0,124,124, 0,112,120, 44, 36,124,124,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 16, 8, 8, 4, 4, 4, 8, 48, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,128, - 0, 0, 0, 0,192, 96, 48, 24, 12,132,198, 98, 35, 51, 17,145,113,241,113,145, 17, 51, 35, 98,198,132, 12, 24, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,100,130, 2, 2, 2, 2, 2, 1, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 48, 48, 0,192,193,193,194, 4, 8, 16, 32, 64,128, 0, 0, 0,128,128,128,128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8,196, 4,196, 4,196, 2,194, 2,194, 1, 1, 1, 1, 0, 0, 0, - 0, 0,252, 15, 1, 0,248, 14, 31,109,140,148,148,164,166,249,224,255,224,249,166,164,148,148,140,109, 31, 14,248, 0, 1, 15,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 56, 4, 3, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 13, 1, 0, 64,160, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 8, 8, 16, 16, 16, 16, 16, 17, 15, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,170,255,255,195,191,127, 3,127,191,195,255,255,170,170, 0, 0, 0, 0, - 0, 0, 31,120,192, 0, 15, 56,124,219,152, 20, 20, 18, 50,207, 3,255, 3,207, 50, 18, 20, 20,152,219,124, 56, 15, 0,192,120, 31, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 4, 4, 8, 8, 8, 8, 8, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,130,135, 31, 7,159, 7, 28, 7,159, 7,159, 7, 2,130, 0, 0, 0, 0, - 32, 16, 16, 16, 17, 11, 14, 12, 24, 16, 49, 35, 98,102, 68, 68, 71, 71, 71, 68, 68,102, 98, 35, 49, 16, 24, 12, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 23, 0, 15, 1, 2, 1, 15, 0, 15, 2, 5, 8 - }, - { - 0, 0,126,126, 24, 60,102, 66, 0, 12, 28,112,112, 28, 12, 0,116,116, 20, 20,124,104, 0,124,124, 0,112,120, 44, 36,124,124,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 16, 8, 8, 4, 4, 4, 8, 48, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,128, - 0, 0, 0, 0,192, 96, 48, 24, 12,132,198, 98, 35, 51, 17,145,113,241,113,145, 17, 51, 35, 98,198,132, 12, 24, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,100,130, 2, 2, 2, 2, 2, 1, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 48, 48, 0,192,193,193,194, 4, 8, 16, 32, 64,128, 0, 0, 0,128,128,128,128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8,196, 4,196, 4,196, 2,194, 2,194, 1, 1, 1, 1, 0, 0, 0, - 0, 0,252, 15, 1, 0,248, 14, 31,109,140,148,148,164,166,249,224,255,224,249,166,164,148,148,140,109, 31, 14,248, 0, 1, 15,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 56, 4, 3, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 13, 1, 0, 64,160, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 8, 8, 16, 16, 16, 16, 16, 17, 15, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,170,255,255,195,191,127, 3,127,191,195,255,255,170,170, 0, 0, 0, 0, - 0, 0, 31,120,192, 0, 15, 56,124,219,152, 20, 20, 18, 50,207, 3,255, 3,207, 50, 18, 20, 20,152,219,124, 56, 15, 0,192,120, 31, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 4, 4, 8, 8, 8, 8, 8, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,130,135, 31, 7,159, 7, 28, 7,159, 7,159, 7, 2,130, 0, 0, 0, 0, - 32, 16, 16, 16, 17, 11, 14, 12, 24, 16, 49, 35, 98,102, 68, 68, 71, 71, 71, 68, 68,102, 98, 35, 49, 16, 24, 12, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 23, 0, 15, 1, 2, 1, 15, 0, 15, 2, 5, 8 - }, - { - 0, 0,126,126, 24, 60,102, 66, 0, 12, 28,112,112, 28, 12, 0,116,116, 20, 20,124,104, 0,124,124, 0,112,120, 44, 36,124,124,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 8, 4, 2, 2, 4, 24, 96,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,128, - 0, 0, 0, 0,192, 96, 48, 24, 12,132,198, 98, 35, 51, 17,145,113,241,113,145, 17, 51, 35, 98,198,132, 12, 24, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,194, 1, 1, 2, 2, 4, 4, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 96, 0,129,130,130,132, 8, 16, 32, 64,128, 0, 0, 0, 0,128,128,128,128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8,196, 4,196, 4,196, 2,194, 2,194, 1, 1, 1, 1, 0, 0, 0, - 0, 0,252, 15, 1, 0,248, 14, 31,109,140,148,148,164,166,249,224,255,224,249,166,164,148,148,140,109, 31, 14,248, 0, 1, 15,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,112, 25, 6, 0, 0, 0, 0, 0, 0, 0, 24, 24, 24, 27, 3, 0, 64,160, 34, 36, 20, 18, 18, 18, 11, 8, 8, 8, 8, 5, 5, 9, 9, 16, 16, 16, 16, 16, 17, 15, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,170,255,255,195,191,127, 3,127,191,195,255,255,170,170, 0, 0, 0, 0, - 0, 0, 31,120,192, 0, 15, 56,124,219,152, 20, 20, 18, 50,207, 3,255, 3,207, 50, 18, 20, 20,152,219,124, 56, 15, 0,192,120, 31, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 4, 4, 8, 8, 8, 8, 8, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,130,135, 31, 7,159, 7, 28, 7,159, 7,159, 7, 2,130, 0, 0, 0, 0, - 32, 16, 16, 16, 17, 11, 14, 12, 24, 16, 49, 35, 98,102, 68, 68, 71, 71, 71, 68, 68,102, 98, 35, 49, 16, 24, 12, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 23, 0, 15, 1, 2, 1, 15, 0, 15, 2, 5, 8 - }, - { - 0, 0,126,126, 24, 60,102, 66, 0, 12, 28,112,112, 28, 12, 0,116,116, 20, 20,124,104, 0,124,124, 0,112,120, 44, 36,124,124,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0,128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 4, 2, 1, 1, 2, 12, 48, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,128, - 0, 0, 0, 0,192, 96, 48, 24, 12,132,198, 98, 35, 51, 17,145,113,241,113,145, 17, 51, 35, 98,198,132, 12, 24, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30,225, 0, 0, 1, 1, 2, 2, 1, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 48, 48, 0,192,193,193,194, 4, 8, 16, 32, 64,128, 0, 0, 0,128,128,128,128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8,196, 4,196, 4,196, 2,194, 2,194, 1, 1, 1, 1, 0, 0, 0, - 0, 0,252, 15, 1, 0,248, 14, 31,109,140,148,148,164,166,249,224,255,224,249,166,164,148,148,140,109, 31, 14,248, 0, 1, 15,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,112, 12, 3, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 13, 1, 0, 64,160, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 8, 8, 16, 16, 16, 16, 16, 17, 15, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,170,255,255,195,191,127, 3,127,191,195,255,255,170,170, 0, 0, 0, 0, - 0, 0, 31,120,192, 0, 15, 56,124,219,152, 20, 20, 18, 50,207, 3,255, 3,207, 50, 18, 20, 20,152,219,124, 56, 15, 0,192,120, 31, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 4, 4, 8, 8, 8, 8, 8, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,130,135, 31, 7,159, 7, 28, 7,159, 7,159, 7, 2,130, 0, 0, 0, 0, - 32, 16, 16, 16, 17, 11, 14, 12, 24, 16, 49, 35, 98,102, 68, 68, 71, 71, 71, 68, 68,102, 98, 35, 49, 16, 24, 12, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 23, 0, 15, 1, 2, 1, 15, 0, 15, 2, 5, 8 - }, - { - 0, 0,126,126, 24, 60,102, 66, 0, 12, 28,112,112, 28, 12, 0,116,116, 20, 20,124,104, 0,124,124, 0,112,120, 44, 36,124,124,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 4, 2, 2, 2, 4, 56, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,128, - 0, 0, 0, 0,192, 96, 48, 24, 12,132,198, 98, 35, 51, 17,145,113,241,113,145, 17, 51, 35, 98,198,132, 12, 24, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,226, 1, 1, 2, 2, 2, 2, 1, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 48, 48, 0,192,193,193,194, 4, 8, 16, 32, 64,128, 0, 0, 0,128,128,128,128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8,196, 4,196, 4,196, 2,194, 2,194, 1, 1, 1, 1, 0, 0, 0, - 0, 0,252, 15, 1, 0,248, 14, 31,109,140,148,148,164,166,249,224,255,224,249,166,164,148,148,140,109, 31, 14,248, 0, 1, 15,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,112, 12, 3, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 13, 1, 0, 64,160, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 8, 8, 16, 16, 16, 16, 16, 17, 15, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,170,255,255,195,191,127, 3,127,191,195,255,255,170,170, 0, 0, 0, 0, - 0, 0, 31,120,192, 0, 15, 56,124,219,152, 20, 20, 18, 50,207, 3,255, 3,207, 50, 18, 20, 20,152,219,124, 56, 15, 0,192,120, 31, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 4, 4, 8, 8, 8, 8, 8, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,130,135, 31, 7,159, 7, 28, 7,159, 7,159, 7, 2,130, 0, 0, 0, 0, - 32, 16, 16, 16, 17, 11, 14, 12, 24, 16, 49, 35, 98,102, 68, 68, 71, 71, 71, 68, 68,102, 98, 35, 49, 16, 24, 12, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 23, 0, 15, 1, 2, 1, 15, 0, 15, 2, 5, 8 - } - }; - static const char PROGMEM prep[][ANIM_SIZE] = { - { - 0, 0,126,126, 24, 60,102, 66, 0, 12, 28,112,112, 28, 12, 0,116,116, 20, 20,124,104, 0,124,124, 0,112,120, 44, 36,124,124,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0,128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 4, 2, 1, 1, 2, 12, 48, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,128, - 0, 0, 0, 0,192, 96, 48, 24, 12,132,198, 98, 35, 51, 17,145,113,241,113,145, 17, 51, 35, 98,198,132, 12, 24, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30,225, 0, 0, 1, 1, 2, 2,129,128,128, 0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 48, 48, 0, 0, 1,225, 26, 6, 9, 49, 53, 1,138,124, 0, 0,128,128,128,128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8,196, 4,196, 4,196, 2,194, 2,194, 1, 1, 1, 1, 0, 0, 0, - 0, 0,252, 15, 1, 0,248, 14, 31,109,140,148,148,164,166,249,224,255,224,249,166,164,148,148,140,109, 31, 14,248, 0, 1, 15,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,112, 12, 3, 0, 0, 24, 6, 5,152,153,132,195,124, 65, 65, 64, 64, 32, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 4, 4, 4, 4, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,170,255,255,195,191,127, 3,127,191,195,255,255,170,170, 0, 0, 0, 0, - 0, 0, 31,120,192, 0, 15, 56,124,219,152, 20, 20, 18, 50,207, 3,255, 3,207, 50, 18, 20, 20,152,219,124, 56, 15, 0,192,120, 31, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,130,135, 31, 7,159, 7, 28, 7,159, 7,159, 7, 2,130, 0, 0, 0, 0, - 32, 16, 16, 16, 17, 11, 14, 12, 24, 16, 49, 35, 98,102, 68, 68, 71, 71, 71, 68, 68,102, 98, 35, 49, 16, 24, 12, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 23, 0, 15, 1, 2, 1, 15, 0, 15, 2, 5, 8 - } - }; - static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE] = { - { - 0, 0,126,126, 24, 60,102, 66, 0, 12, 28,112,112, 28, 12, 0,116,116, 20, 20,124,104, 0,124,124, 0,112,120, 44, 36,124,124,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0,128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 4, 2, 1, 1, 2, 12, 48, 64,128, 0, 0, 0, 0, 0, 0, 0,248,248,248,248, 0, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,128, - 0, 0, 0, 0,192, 96, 48, 24, 12,132,198, 98, 35, 51, 17,145,113,241,113,145, 17, 51, 35, 98,198,132, 12, 24, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30,225, 0, 0, 1, 1, 2, 2,129,128,128, 0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 48, 48, 0, 0, 1, 1, 2, 4, 8, 16, 32, 67,135, 7, 1, 0,184,188,190,159, 95, 95, 79, 76, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8,196, 4,196, 4,196, 2,194, 2,194, 1, 1, 1, 1, 0, 0, 0, - 0, 0,252, 15, 1, 0,248, 14, 31,109,140,148,148,164,166,249,224,255,224,249,166,164,148,148,140,109, 31, 14,248, 0, 1, 15,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,112, 12, 3, 0, 0, 24, 6, 5,152,153,132, 67,124, 65, 65, 64, 64, 32, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 8, 8, 16, 16, 16, 16, 16, 17, 15, 1, 61,124,252,252,252,252,252, 60, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,170,255,255,195,191,127, 3,127,191,195,255,255,170,170, 0, 0, 0, 0, - 0, 0, 31,120,192, 0, 15, 56,124,219,152, 20, 20, 18, 50,207, 3,255, 3,207, 50, 18, 20, 20,152,219,124, 56, 15, 0,192,120, 63, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,130,135, 31, 7,159, 7, 28, 7,159, 7,159, 7, 2,130, 0, 0, 0, 0, - 32, 16, 16, 16, 17, 11, 14, 12, 24, 16, 49, 35, 98,102, 68, 68, 71, 71, 71, 68, 68,102, 98, 35, 49, 16, 24, 12, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 23, 0, 15, 1, 2, 1, 15, 0, 15, 2, 5, 8 - }, - { - 0, 0,126,126, 24, 60,102, 66, 0, 12, 28,112,112, 28, 12, 0,116,116, 20, 20,124,104, 0,124,124, 0,112,120, 44, 36,124,124,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0,128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 4, 2, 1, 1, 2, 12, 48, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,128, - 0, 0, 0, 0,192, 96, 48, 24, 12,132,198, 98, 35, 51, 17,145,113,241,113,145, 17, 51, 35, 98,198,132, 12, 24, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30,225, 0, 0, 1, 1, 2, 2, 1, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 48, 48, 0, 0, 1,225, 26, 6, 9, 49, 53, 1,138,124, 0, 0,128,128,128,128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8,196, 4,196, 4,196, 2,194, 2,194, 1, 1, 1, 1, 0, 0, 0, - 0, 0,252, 15, 1, 0,248, 14, 31,109,140,148,148,164,166,249,224,255,224,249,166,164,148,148,140,109, 31, 14,248, 0, 1, 15,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,112, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 64,160, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 4, 4, 4, 4, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,170,255,255,195,191,127, 3,127,191,195,255,255,170,170, 0, 0, 0, 0, - 0, 0, 31,120,192, 0, 15, 56,124,219,152, 20, 20, 18, 50,207, 3,255, 3,207, 50, 18, 20, 20,152,219,124, 56, 15, 0,192,120, 31, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3,122,122,121,121,121,121, 57, 49, 2, 2, 4, 4, 8, 8, 8,136,136,135,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,130,135, 31, 7,159, 7, 28, 7,159, 7,159, 7, 2,130, 0, 0, 0, 0, - 32, 16, 16, 16, 17, 11, 14, 12, 24, 16, 49, 35, 98,102, 68, 68, 71, 71, 71, 68, 68,102, 98, 35, 49, 16, 24, 12, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,120,124,254,255, 63, 7, 0, 0, 0, 0,255,255,127,127, 63, 62, 28, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 23, 0, 15, 1, 2, 1, 15, 0, 15, 2, 5, 8 - }, - }; - - //assumes 1 frame prep stage - void animation_phase(void) { - if(get_current_wpm() <=IDLE_SPEED){ - current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES; - oled_write_raw_P(idle[abs((IDLE_FRAMES-1)-current_idle_frame)], ANIM_SIZE); - } - if(get_current_wpm() >IDLE_SPEED && get_current_wpm() 1 - oled_write_raw_P(prep[0], ANIM_SIZE); // remove if IDLE_FRAMES >1 - } - if(get_current_wpm() >=TAP_SPEED){ - current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES; - oled_write_raw_P(tap[abs((TAP_FRAMES-1)-current_tap_frame)], ANIM_SIZE); - } - } - if(get_current_wpm() != 000) { - oled_on(); // not essential but turns on animation OLED with any alpha keypress - if(timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { - anim_timer = timer_read32(); - animation_phase(); - } - anim_sleep = timer_read32(); - } else { - if(timer_elapsed32(anim_sleep) > OLED_TIMEOUT) { - oled_off(); - } else { - if(timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { - anim_timer = timer_read32(); - animation_phase(); - } - } - } -} - -// static void render_skull(void) { // Helen Tseong (http://shewolfe.co/), the original artist behind the skull, sadly only allowing use of the skull for my personal use. Her (excellent) works are copyright her, and I claim no ownership. Reach out to her for permission! -// static const char PROGMEM skull[] = { -// }; -// oled_write_raw_P(skull, 801); -// } - -void oled_task_user(void) { - if (is_keyboard_master()) { - //render_skull(); - //oled_set_cursor(7,6); - render_status(); - // Renders the current keyboard state (layer, lock, caps, scroll, etc) - } else { - render_anim(); - oled_set_cursor(0,6); - sprintf(wpm_str, " WPM: %03d", get_current_wpm()); - oled_write(wpm_str, false); - - } -} -#endif - -#ifdef ENCODER_ENABLE -bool encoder_update_user(uint8_t index, bool clockwise) { - switch(biton32(layer_state)){ - case 1: - if (clockwise) { - tap_code16(C(KC_TAB)); - } else { - tap_code16(S(C(KC_TAB))); - } - break; - default: - if (clockwise) { - if (!is_alt_tab_active) { - is_alt_tab_active = true; - register_code(KC_LALT); - } - alt_tab_timer = timer_read(); - tap_code16(KC_TAB); - } else { - tap_code16(S(KC_TAB)); - } - break; - } - return true; -} - -void matrix_scan_user(void) { - if (is_alt_tab_active) { - if (timer_elapsed(alt_tab_timer) > 1250) { - unregister_code(KC_LALT); - is_alt_tab_active = false; - } - } -} - -#endif diff --git a/keyboards/kyria/keymaps/j-inc/rules.mk b/keyboards/kyria/keymaps/j-inc/rules.mk deleted file mode 100644 index 87d07f667e0e..000000000000 --- a/keyboards/kyria/keymaps/j-inc/rules.mk +++ /dev/null @@ -1,18 +0,0 @@ -OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays -ENCODER_ENABLE = yes # Enables the use of one or more encoders -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -RGBLIGHT_ANIMATIONS = yes -WPM_ENABLE = yes -MOUSEKEY_ENABLE = no - -TAP_DANCE_ENABLE = no -STENO_ENABLE = no -BOOTMAGIC_ENABLE =no -TERMINAL_ENABLE = no -GRAVE_ESC_ENABLE = no -MAGIC_ENABLE = no -SPACE_CADET_ENABLE = no -KEY_LOCK_ENABLE = no -AUDIO_ENABLE = no -CONSOLE_ENABLE = no -VELOCIKEY_ENABLE = no diff --git a/keyboards/kyria/keymaps/jhelvy/config.h b/keyboards/kyria/keymaps/jhelvy/config.h deleted file mode 100644 index 6dbc0dc1d24c..000000000000 --- a/keyboards/kyria/keymaps/jhelvy/config.h +++ /dev/null @@ -1,33 +0,0 @@ -/* Copyright 2019 Thomas Baart - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#ifdef OLED_DRIVER_ENABLE - #define OLED_DISPLAY_128X64 -#endif - -#define ENCODER_RESOLUTION 2 - -#define TAPPING_FORCE_HOLD -#define TAPPING_TERM 200 -#define AUTO_SHIFT_TIMEOUT 150 - -#define MOUSEKEY_DELAY 100 -#define MOUSEKEY_INTERVAL 16 -#define MOUSEKEY_MAX_SPEED 2 -#define MOUSEKEY_WHEEL_MAX_SPEED 42 -#define MOUSEKEY_WHEEL_TIME_TO_MAX 15 diff --git a/keyboards/kyria/keymaps/jhelvy/keymap.c b/keyboards/kyria/keymaps/jhelvy/keymap.c deleted file mode 100644 index 371007eeb39b..000000000000 --- a/keyboards/kyria/keymaps/jhelvy/keymap.c +++ /dev/null @@ -1,202 +0,0 @@ -#include QMK_KEYBOARD_H - -enum layers { - QWERTY = 0, - HOTKEYS, - TEXT, - SELECT, - NUMBERS, -}; - -enum custom_keycodes { - SIG_PROF = SAFE_RANGE, - SIG_JOHN, - R_PIPE, - R_ASSIGN, - R_COLS, - R_IN, - TEX, - E_GMAIL, - E_GWU, -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -[QWERTY] = LAYOUT(LALT(KC_A), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT, KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_NO, KC_NO, KC_NO, KC_NO, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, KC_LALT, KC_LCTL, KC_LGUI, MO(2), MO(4), KC_BSPC, KC_SPC, MO(1), KC_PGDN, TG(1)), - -[HOTKEYS] = LAYOUT(KC_F6, LGUI(LALT(KC_1)), LGUI(LALT(KC_2)), LCTL(KC_U), SGUI(KC_R), KC_F2, SGUI(KC_K), LCTL(KC_9), LCTL(KC_0), KC_F14, KC_F11, KC_F15, KC_F7, LGUI(LCTL(KC_A)), KC_F10, KC_LBRC, KC_RBRC, KC_F9, SIG_JOHN, LSFT(KC_TAB), KC_TAB, E_GMAIL, KC_F12, KC_F16, KC_F8, KC_ASTG, KC_NO, KC_LCBR, KC_RCBR, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, SIG_PROF, KC_F3, KC_F4, E_GWU, KC_F13, KC_F17, KC_F5, KC_NO, KC_LGUI, KC_LGUI, KC_LCTL, KC_BSPC, KC_SPC, KC_TRNS, KC_NO, KC_TRNS), - -[TEXT] = LAYOUT(LGUI(KC_BSPC), LGUI(KC_Q), LGUI(KC_W), KC_ESC, LGUI(KC_R), LGUI(KC_T), LCTL(KC_Y), LGUI(KC_LEFT), KC_UP, LGUI(KC_RGHT), KC_SCLN, R_PIPE, KC_BSPC, MO(3), LGUI(KC_S), LGUI(KC_C), LGUI(KC_V), LGUI(KC_X), KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_GRV, KC_ENT, KC_F18, LGUI(KC_A), LGUI(KC_D), KC_F1, LGUI(KC_Z), LGUI(KC_Y), KC_NO, KC_NO, KC_NO, KC_NO, KC_BSPC, LGUI(KC_F), SGUI(KC_G), LGUI(KC_G), KC_BSLS, R_ASSIGN, KC_LALT, KC_LCTL, KC_LGUI, KC_TRNS, KC_NO, KC_BSPC, KC_SPC, KC_LGUI, KC_PGUP, KC_NO), - -[SELECT] = LAYOUT(KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, SGUI(KC_LEFT), LSFT(KC_UP), SGUI(KC_RGHT), KC_NO, R_COLS, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, LSFT(KC_LEFT), LSFT(KC_DOWN), LSFT(KC_RGHT), KC_NO, R_IN, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, LALT(LSFT(KC_LEFT)), LALT(LSFT(KC_RIGHT)), KC_NO, TEX, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BSPC, KC_SPC, KC_LGUI, KC_NO, KC_NO), - -[NUMBERS] = LAYOUT(KC_NO, LGUI(KC_1), LGUI(KC_2), LGUI(KC_3), LGUI(KC_4), LGUI(KC_5), KC_EQL, KC_7, KC_8, KC_9, KC_TILD, KC_MINS, KC_NO, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_PLUS, KC_4, KC_5, KC_6, KC_COLN, KC_ENT, KC_LSPO, KC_NO, KC_NO, KC_CIRC, KC_AMPR, KC_ASTR, KC_NO, KC_NO, KC_NO, KC_NO, KC_MINS, KC_1, KC_2, KC_3, KC_SLSH, KC_PIPE, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_BSPC, KC_SPC, KC_0, KC_DOT, KC_COMM) - -}; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case SIG_PROF: - if (record->event.pressed) { - SEND_STRING("Cheers,\nProfessor Helveston"); - } else { - } - break; - - case SIG_JOHN: - if (record->event.pressed) { - SEND_STRING("Cheers,\nJohn"); - } else { - } - break; - - case R_PIPE: - if (record->event.pressed) { - SEND_STRING(" %>% "); - } else { - } - break; - - case R_ASSIGN: - if (record->event.pressed) { - SEND_STRING(" <- "); - } else { - } - break; - - case R_COLS: - if (record->event.pressed) { - SEND_STRING(".leftcol[\n]\n.rightcol[\n]\n"); - } else { - } - break; - - case R_IN: - if (record->event.pressed) { - SEND_STRING(" %in% "); - } else { - } - break; - - case TEX: - if (record->event.pressed) { - SEND_STRING("\\text{}"); - } else { - } - break; - - case E_GMAIL: - if (record->event.pressed) { - SEND_STRING("john.helveston@gmail.com"); - } else { - } - break; - - case E_GWU: - if (record->event.pressed) { - SEND_STRING("jph@gwu.edu"); - } else { - } - break; - - } - - return true; -}; - -#ifdef OLED_DRIVER_ENABLE -oled_rotation_t oled_init_user(oled_rotation_t rotation) { - return OLED_ROTATION_180; -} - -static void render_kyria_logo(void) { - static const char PROGMEM kyria_logo[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,224,240,112,120, 56, 60, 28, 30, 14, 14, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 30, 28, 60, 56,120,112,240,224,192,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0,192,224,240,124, 62, 31, 15, 7, 3, 1,128,192,224,240,120, 56, 60, 28, 30, 14, 14, 7, 7,135,231,127, 31,255,255, 31,127,231,135, 7, 7, 14, 14, 30, 28, 60, 56,120,240,224,192,128, 1, 3, 7, 15, 31, 62,124,240,224,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,240,252,255, 31, 7, 1, 0, 0,192,240,252,254,255,247,243,177,176, 48, 48, 48, 48, 48, 48, 48,120,254,135, 1, 0, 0,255,255, 0, 0, 1,135,254,120, 48, 48, 48, 48, 48, 48, 48,176,177,243,247,255,254,252,240,192, 0, 0, 1, 7, 31,255,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,254,255,255, 1, 1, 7, 30,120,225,129,131,131,134,134,140,140,152,152,177,183,254,248,224,255,255,224,248,254,183,177,152,152,140,140,134,134,131,131,129,225,120, 30, 7, 1, 1,255,255,254, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0,255,255, 0, 0,192,192, 48, 48, 0, 0,240,240, 0, 0, 0, 0, 0, 0,240,240, 0, 0,240,240,192,192, 48, 48, 48, 48,192,192, 0, 0, 48, 48,243,243, 0, 0, 0, 0, 0, 0, 48, 48, 48, 48, 48, 48,192,192, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,127,255,255,128,128,224,120, 30,135,129,193,193, 97, 97, 49, 49, 25, 25,141,237,127, 31, 7,255,255, 7, 31,127,237,141, 25, 25, 49, 49, 97, 97,193,193,129,135, 30,120,224,128,128,255,255,127, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0, 63, 63, 3, 3, 12, 12, 48, 48, 0, 0, 0, 0, 51, 51, 51, 51, 51, 51, 15, 15, 0, 0, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 63, 63, 48, 48, 0, 0, 12, 12, 51, 51, 51, 51, 51, 51, 63, 63, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 15, 63,255,248,224,128, 0, 0, 3, 15, 63,127,255,239,207,141, 13, 12, 12, 12, 12, 12, 12, 12, 30,127,225,128, 0, 0,255,255, 0, 0,128,225,127, 30, 12, 12, 12, 12, 12, 12, 12, 13,141,207,239,255,127, 63, 15, 3, 0, 0,128,224,248,255, 63, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3, 7, 15, 62,124,248,240,224,192,128, 1, 3, 7, 15, 30, 28, 60, 56,120,112,112,224,224,225,231,254,248,255,255,248,254,231,225,224,224,112,112,120, 56, 60, 28, 30, 15, 7, 3, 1,128,192,224,240,248,124, 62, 15, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 15, 14, 30, 28, 60, 56,120,112,112,112,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,112,112,112,120, 56, 60, 28, 30, 14, 15, 7, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }; - oled_write_raw_P(kyria_logo, sizeof(kyria_logo)); -} - -static void render_qmk_logo(void) { - static const char PROGMEM qmk_logo[] = { - 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, - 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, - 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0}; - - oled_write_P(qmk_logo, false); -} - -static void render_status(void) { - // QMK Logo and version information - render_qmk_logo(); - oled_write_P(PSTR(" Kyria rev1.0\n\n"), false); - - // Host Keyboard Layer Status - oled_write_P(PSTR("Layer: "), false); - switch (get_highest_layer(layer_state)) { - case QWERTY: - oled_write_P(PSTR("QWERTY\n"), false); - break; - case HOTKEYS: - oled_write_P(PSTR("HOTKEYS\n"), false); - break; - case TEXT: - oled_write_P(PSTR("TEXT\n"), false); - break; - case SELECT: - oled_write_P(PSTR("SELECT\n"), false); - break; - case NUMBERS: - oled_write_P(PSTR("NUMBERS\n"), false); - break; - default: - oled_write_P(PSTR("Undefined\n"), false); - } - -} - -void oled_task_user(void) { - if (is_keyboard_master()) { - render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) - } else { - render_kyria_logo(); - } -} -#endif - -bool encoder_update_user(uint8_t index, bool clockwise) { - if (IS_LAYER_ON(HOTKEYS)) { - if (clockwise) { - tap_code(KC_VOLD); - } else { - tap_code(KC_VOLU); - } - } else if (IS_LAYER_ON(TEXT)) { - if (clockwise) { - tap_code(KC_MS_WH_LEFT); - } else { - tap_code(KC_MS_WH_RIGHT); - } - } else if (IS_LAYER_ON(NUMBERS)) { - if (clockwise) { - tap_code16(G(KC_MINS)); - } else { - register_code(KC_LGUI); - tap_code(KC_EQL); - unregister_code(KC_LGUI); - } - } else { - if (clockwise) { - tap_code(KC_MS_WH_UP); - } else { - tap_code(KC_MS_WH_DOWN); - } - } - return true; -} diff --git a/keyboards/kyria/keymaps/jhelvy/rules.mk b/keyboards/kyria/keymaps/jhelvy/rules.mk deleted file mode 100644 index ec4c65f706b0..000000000000 --- a/keyboards/kyria/keymaps/jhelvy/rules.mk +++ /dev/null @@ -1,8 +0,0 @@ -AUTO_SHIFT_ENABLE = yes # Autoshift by holding down a key -OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays -ENCODER_ENABLE = yes # Enables the use of one or more encoders -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -LEADER_ENABLE = no # Enable the Leader Key feature -MOUSEKEY_ENABLE = yes -EXTRAKEY_ENABLE = yes -BACKLIGHT_ENABLE = no diff --git a/keyboards/kyria/keymaps/kejadlen/config.h b/keyboards/kyria/keymaps/kejadlen/config.h deleted file mode 100644 index 3c0951f11206..000000000000 --- a/keyboards/kyria/keymaps/kejadlen/config.h +++ /dev/null @@ -1,47 +0,0 @@ -/* Copyright 2019 Thomas Baart - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#ifdef OLED_DRIVER_ENABLE - #define OLED_DISPLAY_128X64 -#endif - -#ifdef RGBLIGHT_ENABLE - #define RGBLIGHT_ANIMATIONS - #define RGBLIGHT_HUE_STEP 8 - #define RGBLIGHT_SAT_STEP 8 - #define RGBLIGHT_VAL_STEP 8 - #define RGBLIGHT_SLEEP -#endif - -// EC11K encoders have a different resolution than other EC11 encoders. -// When using the default resolution of 4, if you notice your encoder skipping -// every other tick, lower the resolution to 2. -#define ENCODER_RESOLUTION 2 - -// The Leader key allows to flexibly assign macros to key sequences. -#define LEADER_PER_KEY_TIMING -#define LEADER_TIMEOUT 350 - -#define TAPPING_TERM 200 - -// Allows to use either side as the master. Look at the documentation for info: -// https://docs.qmk.fm/#/config_options?id=setting-handedness -#define EE_HANDS - -// Allows media codes to properly register in macros and rotary encoder code -#define TAP_CODE_DELAY 10 diff --git a/keyboards/kyria/keymaps/kejadlen/rules.mk b/keyboards/kyria/keymaps/kejadlen/rules.mk deleted file mode 100644 index 35ba17e4a233..000000000000 --- a/keyboards/kyria/keymaps/kejadlen/rules.mk +++ /dev/null @@ -1,5 +0,0 @@ -OLED_DRIVER_ENABLE = no # Enables the use of OLED displays -ENCODER_ENABLE = no # Enables the use of one or more encoders -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -LEADER_ENABLE = no # Enable the Leader Key feature -MOUSEKEY_ENABLE = no diff --git a/keyboards/kyria/keymaps/mattir/config.h b/keyboards/kyria/keymaps/mattir/config.h deleted file mode 100644 index 2c71428a9c02..000000000000 --- a/keyboards/kyria/keymaps/mattir/config.h +++ /dev/null @@ -1,55 +0,0 @@ -/* Copyright 2019 Thomas Baart - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#ifdef OLED_DRIVER_ENABLE -# define OLED_DISPLAY_128X64 -# define OLED_TIMEOUT 300000 -# define OLED_UPDATE_INTERVAL 30 -#endif - -#ifdef RGBLIGHT_ENABLE -# define RGBLIGHT_LIMIT_VAL 150 -# define RGBLIGHT_ANIMATIONS -# define RGBLIGHT_HUE_STEP 8 -# define RGBLIGHT_SAT_STEP 8 -# define RGBLIGHT_VAL_STEP 8 -# define RGBLIGHT_SLEEP -#endif - -// If you are using an Elite C rev3 on the slave side, uncomment the lines below: -//#define SPLIT_USB_DETECT -//#define NO_USB_STARTUP_CHECK - -// Set the layer toggle to only need 2 clicks instead of 5 -#define TAPPING_TOGGLE 2 - -// EC11K encoders have a different resolution than other EC11 encoders. -#define ENCODER_RESOLUTION 2 - -// The Leader key allows to flexibly assign macros to key sequences. -#define LEADER_PER_KEY_TIMING -#define LEADER_TIMEOUT 350 - -#define TAPPING_TERM 200 - -// Allows to use either side as the master. Look at the documentation for info: -// https://docs.qmk.fm/#/config_options?id=setting-handedness -#define EE_HANDS - -// Allows media codes to properly register in macros and rotary encoder code -#define TAP_CODE_DELAY 10 diff --git a/keyboards/kyria/keymaps/mattir/keymap.c b/keyboards/kyria/keymaps/mattir/keymap.c deleted file mode 100644 index 0ee0f3d852af..000000000000 --- a/keyboards/kyria/keymaps/mattir/keymap.c +++ /dev/null @@ -1,292 +0,0 @@ -/* Copyright 2020 Matthew Gilbert - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include QMK_KEYBOARD_H - -enum layers { - QWERTY = 0, - LOWER, - RAISE, - FUNCS, - RGBLED -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [QWERTY] = LAYOUT( - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, - KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, - KC_LEAD, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_GRV, XXXXXXX, XXXXXXX, KC_MINS, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT, - KC_MUTE, KC_LCTL, KC_LGUI, TT(RAISE), SFT_T(KC_SPC), SFT_T(KC_SPC), TT(LOWER), KC_BSPC, KC_LALT, TG(RGBLED) - ), - [LOWER] = LAYOUT( - _______, KC_EXLM, KC_AT, KC_HASH, KC_LCBR, KC_RCBR, _______, _______, _______, _______, _______, _______, - _______, KC_DLR, KC_PERC, KC_CIRC, KC_LPRN, KC_RPRN, KC_EQL, KC_PLUS, KC_MINS, KC_ASTR, KC_SLSH, _______, - TG(FUNCS), KC_AMPR, _______, _______, KC_LBRC, KC_RBRC, _______, XXXXXXX, XXXXXXX, _______, _______, _______, KC_COMM, KC_DOT, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - [RAISE] = LAYOUT( - _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, - _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, - _______, _______, KC_BTN1, KC_BTN3, KC_BTN2, _______, _______, XXXXXXX, XXXXXXX, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, _______, _______, - _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______, _______ - ), - [FUNCS] = LAYOUT( - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_PPLS, KC_P7, KC_P8, KC_P9, KC_PAST, _______, - _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_PMNS, KC_P4, KC_P5, KC_P6, KC_PSLS, _______, - TG(FUNCS), KC_F11, KC_F12, _______, _______, _______, _______, XXXXXXX, XXXXXXX, _______, KC_P0, KC_P1, KC_P2, KC_P3, KC_PDOT, KC_PEQL, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - [RGBLED] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, RGB_VAI, RGB_HUI, RGB_SAI, RGB_MOD, _______, _______, _______, _______, _______, _______, - _______, _______, RGB_VAD, RGB_HUD, RGB_SAD, RGB_RMOD, _______, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, - RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, TG(RGBLED) - ), -}; - -bool is_cmd_tab_active = false; -uint16_t cmd_tab_timer = 0; - -LEADER_EXTERNS(); - -void matrix_scan_user(void) { - if (is_cmd_tab_active) { - if (timer_elapsed(cmd_tab_timer) > 1000) { - unregister_code(KC_LGUI); - is_cmd_tab_active = false; - } - } - - LEADER_DICTIONARY() { - leading = false; - leader_end(); - - SEQ_ONE_KEY(KC_A) { - tap_code16(SGUI(KC_L)); - } - SEQ_TWO_KEYS(KC_S, KC_S) { - tap_code16(SGUI(KC_5)); - } - } -} - -#ifdef OLED_DRIVER_ENABLE -oled_rotation_t oled_init_user(oled_rotation_t rotation) { - return OLED_ROTATION_180; -} - -static void render_mattir_logo(void) { - static const char PROGMEM mattir_logo[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x3c, 0xfc, 0xf8, 0xe0, - 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, 0x80, 0xe0, 0xe0, 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, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x83, 0x07, - 0x1f, 0x7e, 0xf8, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf0, 0xf8, 0xfe, 0x3f, 0x1f, 0x7f, 0xff, - 0xfc, 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, 0x0f, 0xff, 0xfc, 0xf8, 0x1c, 0x0f, 0x07, 0x00, - 0x00, 0x00, 0x01, 0x07, 0x1f, 0x7e, 0xf8, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x80, 0xe0, 0xf0, 0xfc, 0x7f, 0x1f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0f, - 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 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, - 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xfe, 0xff, 0x3f, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1f, 0x7f, 0xfc, 0xf0, 0xc0, 0x00, 0x00, 0x80, - 0xe0, 0xf8, 0xfe, 0x3f, 0x0f, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x3f, 0xff, 0xfe, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, - 0xfe, 0xff, 0x7f, 0xfc, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x80, 0xe0, 0xfc, 0x7f, 0xff, 0xff, 0xe0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0xe0, 0xe0, 0xe0, - 0x00, 0x00, 0xe0, 0xfe, 0xfe, 0xfe, 0xe0, 0xe0, 0x00, 0xe0, 0xfe, 0xfe, 0xfe, 0xe0, 0x60, 0x00, - 0xe3, 0xe3, 0xe3, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0xc0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xf8, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1f, 0x3f, 0x7f, 0x1f, - 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x07, 0xff, 0xff, 0xf8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, - 0xff, 0x07, 0x00, 0x01, 0x07, 0x1f, 0x7f, 0xf8, 0xfe, 0x3f, 0x07, 0x01, 0x00, 0x03, 0xff, 0xff, - 0xfc, 0x00, 0x00, 0x00, 0x1e, 0x7f, 0xff, 0xe1, 0xc0, 0xc0, 0xc0, 0xc0, 0xe1, 0xff, 0xff, 0xff, - 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, - 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x80, 0xfc, 0xff, 0x7f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, - 0xfe, 0xff, 0xff, 0x1f, 0x7f, 0xfe, 0xf8, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x80, 0xe0, 0xf0, 0xfc, 0x7f, 0x1f, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, - 0xff, 0x3f, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0f, 0x3f, 0xff, 0xfc, 0xf0, 0xc0, 0x80, 0x00, 0xc0, - 0xf0, 0xfc, 0xfe, 0x3f, 0x0f, 0x07, 0x01, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xf0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x78, 0xff, 0xef, 0xcf, 0xce, 0xfc, 0x7c, 0x30, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x38, 0x3f, 0x3f, 0x3f, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x3c, 0x3f, 0x3f, - 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x1f, 0x3f, 0x3f, 0x1f, - 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x3f, 0x3f, 0x3c, 0x38, - 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x39, 0x39, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x30, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - oled_write_raw_P(mattir_logo, sizeof(mattir_logo)); -} - -static void render_qmk_logo(void) { - static const char PROGMEM qmk_logo[] = { - 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, - 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, - 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0 - }; - oled_write_P(qmk_logo, false); -} - -static void render_status(void) { - // QMK Logo and version information - render_qmk_logo(); - oled_write_P(PSTR("Matt's Kyria\n\n"), false); - // Host Keyboard Layer Status - oled_write_P(PSTR("Layer: "), false); - switch (get_highest_layer(layer_state)) { - case QWERTY: - oled_write_P(PSTR("Default\n"), false); - break; - case LOWER: - oled_write_P(PSTR("Lower\n"), false); - break; - case RAISE: - oled_write_P(PSTR("Raise\n"), false); - break; - case FUNCS: - oled_write_P(PSTR("F-keys\n"), false); - break; - case RGBLED: - oled_write_P(PSTR("Underglow\n"), false); - break; - default: - oled_write_P(PSTR("No idea dog\n"), false); - } -} - -void oled_task_user(void) { - if (is_keyboard_master()) { - render_status(); // Renders the current keyboard layer - } else { - render_mattir_logo(); - } -} -#endif - -// Layer-specific encoder knob functions -#ifdef ENCODER_ENABLE -bool encoder_update_user(uint8_t index, bool clockwise) { - if (index == 0) { // left knob - switch (get_highest_layer(layer_state)) { - case QWERTY: // Volume - if (clockwise) { - tap_code(KC_VOLD); - } else { - tap_code(KC_VOLU); - } - break; - case LOWER: // Desktop switching - if (clockwise) { - tap_code16(C(KC_RIGHT)); - } else { - tap_code16(C(KC_LEFT)); - } - break; - case RAISE: // Mousewheel L/R - if (clockwise) { - tap_code(KC_WH_L); - } else { - tap_code(KC_WH_R); - } - break; - case RGBLED: // Underglow color - if (clockwise) { - rgblight_increase_hue(); - } else { - rgblight_decrease_hue(); - } - break; - default: // No action - if (clockwise) { - tap_code(KC_NO); - } else { - tap_code(KC_NO); - } - break; - } - } else if (index == 1) { // right knob - switch (get_highest_layer(layer_state)) { - case QWERTY: // Undo / Redo - if (clockwise) { - tap_code16(LGUI(KC_Z)); - } else { - tap_code16(SGUI(KC_Z)); - } - break; - case LOWER: // App switching - if (clockwise) { - if (!is_cmd_tab_active) { - is_cmd_tab_active = true; - register_code(KC_LGUI); - } - cmd_tab_timer = timer_read(); - tap_code16(KC_TAB); - } else { - tap_code16(S(KC_TAB)); - } - break; - case RAISE: // Mouse wheel U/D - if (clockwise) { - tap_code(KC_WH_U); - } else { - tap_code(KC_WH_D); - } - break; - case RGBLED: // Underglow brightness - if (clockwise) { - rgblight_increase_val(); - } else { - rgblight_decrease_val(); - } - break; - default: // No action - if (clockwise) { - tap_code(KC_NO); - } else { - tap_code(KC_NO); - } - break; - } - } - return true; -} -#endif diff --git a/keyboards/kyria/keymaps/mattir/rules.mk b/keyboards/kyria/keymaps/mattir/rules.mk deleted file mode 100644 index 4f5e31be1842..000000000000 --- a/keyboards/kyria/keymaps/mattir/rules.mk +++ /dev/null @@ -1,4 +0,0 @@ -OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays -ENCODER_ENABLE = yes # Enables the use of one or more encoders -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -LEADER_ENABLE = yes # Enables the use of the leader key diff --git a/keyboards/kyria/keymaps/mattir2/rules.mk b/keyboards/kyria/keymaps/mattir2/rules.mk deleted file mode 100644 index cc5ae236ff95..000000000000 --- a/keyboards/kyria/keymaps/mattir2/rules.mk +++ /dev/null @@ -1,4 +0,0 @@ -OLED_DRIVER_ENABLE = no # Enables the use of OLED displays -ENCODER_ENABLE = no # Enables the use of one or more encoders -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -LEADER_ENABLE = yes # Enables the use of the leader key diff --git a/keyboards/kyria/keymaps/ninjonas/config.h b/keyboards/kyria/keymaps/ninjonas/config.h deleted file mode 100644 index 5673e6c3d83d..000000000000 --- a/keyboards/kyria/keymaps/ninjonas/config.h +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright 2020 ninjonas - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#define TAPPING_TERM 200 - -#ifdef OLED_DRIVER_ENABLE - #define OLED_DISPLAY_128X64 - #define OLED_TIMEOUT 15000 -#endif - -#ifdef RGBLIGHT_ENABLE -# define RGBLIGHT_SLEEP -# define RGBLIGHT_LIMIT_VAL 200 -# define RGBLIGHT_HUE_STEP 8 -# define RGBLIGHT_SAT_STEP 8 -# define RGBLIGHT_VAL_STEP 8 -# define RGBLIGHT_SPLIT -#endif - -// If you are using an Elite C rev3 on the slave side, uncomment the lines below: -#define SPLIT_USB_DETECT -#define SPLIT_USB_TIMEOUT 1000 diff --git a/keyboards/kyria/keymaps/ninjonas/oled.c b/keyboards/kyria/keymaps/ninjonas/oled.c deleted file mode 100644 index 65976205b71f..000000000000 --- a/keyboards/kyria/keymaps/ninjonas/oled.c +++ /dev/null @@ -1,209 +0,0 @@ -/* Copyright 2020 ninjonas - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include "ninjonas.h" - -#ifdef OLED_DRIVER_ENABLE -oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; } - -static void render_logo(void) { - static const char PROGMEM logo[] = { - // Converter: https://javl.github.io/image2cpp/ - // Image Dimensions: 128x64 - // Code Output Format: Plain Bytes - // Draw Mode: Vertical, 1 bit per pixel -0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0xc0, 0x00, 0x00, 0xe0, -0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x80, 0xe0, 0xe0, 0xe0, 0xe0, 0x80, 0x00, 0x00, 0xe0, 0xe0, 0xe0, -0xe0, 0x00, 0x60, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0xe0, 0x80, 0x00, 0x00, -0xc0, 0xe0, 0xe0, 0xe0, 0x20, 0x60, 0xe0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, -0xe0, 0x00, 0x00, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0xc0, 0x00, 0x00, 0x00, -0x80, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0x80, 0x00, 0xe0, 0xe0, 0xfc, 0xfe, -0xfe, 0xfe, 0xee, 0xee, 0x0e, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0x80, -0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0x80, 0x00, 0x00, -0x00, 0x00, 0x79, 0xfd, 0xfd, 0xfd, 0xec, 0xee, 0x76, 0x7f, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, -0x07, 0x3f, 0xff, 0xfc, 0xf8, 0xff, 0x7f, 0x07, 0x0f, 0x7f, 0xff, 0xf8, 0xfc, 0xff, 0x3f, 0x07, -0x00, 0x00, 0x00, 0x03, 0x1f, 0xff, 0xfe, 0xf0, 0xff, 0x7f, 0x0f, 0x07, 0x3f, 0xff, 0xfc, 0xf8, -0xff, 0x7f, 0x0f, 0x01, 0x00, 0x00, 0x01, 0x0f, 0x3f, 0xff, 0xfe, 0xf8, 0xff, 0xff, 0x1f, 0x03, -0x00, 0x00, 0x1f, 0x7f, 0x7f, 0xff, 0xf6, 0xe6, 0xe6, 0xf7, 0xf7, 0x77, 0x37, 0x17, 0x00, 0x30, -0x79, 0xfd, 0xfd, 0xfd, 0xee, 0xee, 0x76, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, -0xff, 0xff, 0x00, 0x00, 0x00, 0x3f, 0x7f, 0x7f, 0xff, 0xf1, 0xe0, 0xe0, 0xff, 0xff, 0x7f, 0x3f, -0x0e, 0x00, 0x0e, 0x3f, 0x7f, 0xff, 0xff, 0xe0, 0xe0, 0xe1, 0xff, 0x7f, 0x7f, 0x3f, 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, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, -0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x07, 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, 0x0c, 0x3c, 0xfc, 0xfc, 0xfc, 0xc0, 0x00, 0xe0, 0xfc, 0xfc, 0x7c, 0x1c, 0x00, 0xf0, 0xf8, -0xf8, 0xfc, 0xdc, 0xdc, 0xdc, 0xfc, 0xfc, 0xf8, 0xf0, 0xe0, 0x00, 0x00, 0x30, 0xb8, 0xbc, 0xbc, -0xdc, 0xdc, 0xdc, 0xfc, 0xfc, 0xf8, 0xf0, 0x00, 0x1c, 0x1c, 0xff, 0xff, 0xff, 0xff, 0x1d, 0x1d, -0x00, 0xf0, 0xf8, 0xf8, 0xfc, 0x3c, 0x1c, 0x1c, 0xfc, 0xfc, 0xf8, 0xf0, 0xc0, 0x00, 0xe0, 0xf0, -0xf8, 0xfc, 0x3c, 0x1c, 0x1c, 0x3c, 0xfc, 0xf8, 0xf8, 0xe0, 0x00, 0x00, 0x20, 0xb8, 0xbc, 0xbc, -0xbc, 0xdc, 0xdc, 0xfc, 0xfc, 0xfc, 0xf8, 0xe0, 0x00, 0x0c, 0x7c, 0xfc, 0xfc, 0xc0, 0x00, 0xe0, -0xfc, 0xfc, 0xfc, 0xfc, 0xf0, 0x80, 0x00, 0xf8, 0xfc, 0xfc, 0x3c, 0x04, 0x0c, 0x7c, 0xfc, 0xfc, -0xf0, 0x00, 0xc0, 0xfc, 0xfc, 0x7c, 0xfc, 0xf8, 0xc0, 0x00, 0xf0, 0xfc, 0xfc, 0x7c, 0x0c, 0x00, -0x00, 0x00, 0xc0, 0xc1, 0xc7, 0xff, 0xff, 0xff, 0x7f, 0x1f, 0x03, 0x00, 0x00, 0x00, 0x07, 0x0f, -0x1f, 0x1f, 0x1e, 0x1c, 0x1c, 0x1e, 0x1e, 0x0e, 0x06, 0x00, 0x00, 0x06, 0x0f, 0x1f, 0x1f, 0x1f, -0x1d, 0x1d, 0x0e, 0x1f, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x1f, 0x00, 0x00, -0x00, 0x07, 0x0f, 0x0f, 0x1f, 0x1e, 0x1c, 0x1c, 0x1f, 0x1f, 0x0f, 0x07, 0x01, 0x00, 0x03, 0x07, -0x0f, 0x1f, 0x1e, 0x1c, 0x1c, 0x1e, 0x1f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x0f, 0x1f, 0x1f, 0x1f, -0x1d, 0x1d, 0x0c, 0x0f, 0x1f, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x03, 0x1f, 0x1f, 0x1e, 0x1f, -0x0f, 0x01, 0x00, 0x07, 0x1f, 0x1f, 0x1f, 0x1f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, -0x1f, 0x1e, 0x1f, 0x1f, 0x03, 0x00, 0x03, 0x1f, 0x1f, 0x1e, 0x1f, 0x0f, 0x01, 0x00, 0x00, 0x00, -0x00, 0x80, 0xc1, 0xf1, 0xf9, 0xf9, 0xf9, 0xb8, 0xb8, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, -0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, -0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, -0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, -0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, -0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x03, 0x7c, 0xfe, 0xff, 0xff, 0xc7, 0x83, 0x83, -0xc7, 0xff, 0xff, 0xff, 0x7c, 0x00, 0x00, 0x7c, 0xff, 0xff, 0xff, 0xc7, 0x83, 0x83, 0xc7, 0xff, -0xff, 0xfe, 0x7c, 0x00, 0xc0, 0xe6, 0xf7, 0xf7, 0xf7, 0xbb, 0xbb, 0xdb, 0xff, 0xff, 0xff, 0xfe, -0x00, 0x00, 0x03, 0x1f, 0xff, 0xff, 0xf0, 0xe0, 0xfe, 0xff, 0x1f, 0x3f, 0xff, 0xfe, 0xe0, 0xf0, -0xff, 0xff, 0x1f, 0x03, 0x00, 0x01, 0x0f, 0x7f, 0xff, 0xf8, 0xc0, 0xfc, 0xff, 0x3f, 0x1f, 0xff, -0xfe, 0xf0, 0xe0, 0xff, 0xff, 0x3f, 0x07, 0x00, 0x01, 0x07, 0x3f, 0xff, 0xff, 0xf8, 0xe0, 0xfc, -0xff, 0x7f, 0x0f, 0x03, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xdb, 0x9b, 0x9b, 0xdf, 0xdf, 0xdf, 0xde, -0x1c, 0x00, 0xc0, 0xe6, 0xf7, 0xf7, 0xf7, 0xbb, 0xbb, 0xdb, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, -0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, -0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, -0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x03, 0x03, 0x03, 0x03, -0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, -0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, -0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x38, 0x38, 0x38, 0x3f, 0x3f, 0x1f, 0x0f, -0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, -0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00 - }; - oled_write_raw_P(logo, sizeof(logo)); -} - -static void render_qmk_logo(void) { - static const char PROGMEM qmk_logo[] = { - 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, - 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, - 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0}; - - oled_write_P(qmk_logo, false); -} - -void oled_white_space(void){ - oled_write_P(PSTR(" "), false); -} - -void oled_slash_separator(void){ - oled_write_P(PSTR(" / "), false); -} - -void render_layout_state(void) { - oled_write_P(PSTR("Layout: "), false); - switch (biton32(default_layer_state)) { - case _COLEMAK: - oled_write_P(PSTR("Colemak"), false); - break; - case _DVORAK: - oled_write_P(PSTR("Dvorak"), false); - break; - case _QWERTY: - oled_write_P(PSTR("Qwerty"), false); - break; - default: - oled_write_ln_P(PSTR("Undefined"), false); - } -} -#ifdef ENCODER_ENABLE -static void render_encoder_state(void) { - oled_write_P(PSTR("\nEnc: "), false); - bool lower = layer_state_is(_LOWER) & !layer_state_is(_ADJUST); - bool raise = layer_state_is(_RAISE) & !layer_state_is(_ADJUST); - bool adjust = layer_state_is(_ADJUST); - - if(lower){ - oled_write_P(PSTR("APPSW"), left_encoder_rotated); - oled_slash_separator(); - oled_write_P(PSTR("UPDN"), right_encoder_rotated); - } else if(raise){ - oled_write_P(PSTR("PGUD"), left_encoder_rotated); - oled_slash_separator(); - oled_write_P(PSTR("TABSW"), right_encoder_rotated); - } else if(adjust){ - oled_write_P(PSTR("RHUE"), left_encoder_rotated); - oled_slash_separator(); - oled_write_P(PSTR("RBRI"), right_encoder_rotated); - } else { - oled_write_P(PSTR("BRI"), left_encoder_rotated); - oled_slash_separator(); - oled_write_P(PSTR("VOL"), right_encoder_rotated); - } - - if (timer_elapsed(encoder_rotated_timer) > 200) { - left_encoder_rotated = false; - right_encoder_rotated = false; - } -} -#endif - -static void render_layer_state(void) { - oled_write_P(PSTR("\nLayer:"), false); - bool lower = layer_state_is(_LOWER) & !layer_state_is(_ADJUST); - bool raise = layer_state_is(_RAISE) & !layer_state_is(_ADJUST); - bool adjust = layer_state_is(_ADJUST); - bool numpad = layer_state_is(_NUMPAD); - - if(lower){ - oled_write_P(PSTR(" Lower "), true); - } else if(raise){ - oled_write_P(PSTR(" Raise "), true); - } else if(adjust){ - oled_write_P(PSTR(" Adjust "), true); - } else if(numpad) { - oled_write_P(PSTR(" Numpad "), true); - } else { - oled_write_P(PSTR(" Default"), false); - } -} - -void render_mod_state(uint8_t modifiers) { - oled_write_P(PSTR("\nMods: "), false); - oled_write_P(PSTR("SHF"), (modifiers & MOD_MASK_SHIFT)); - oled_white_space(); - oled_write_P(PSTR("CTL"), (modifiers & MOD_MASK_CTRL)); - oled_white_space(); - oled_write_P(PSTR("ALT"), (modifiers & MOD_MASK_ALT)); - oled_white_space(); - oled_write_P(PSTR("GUI"), (modifiers & MOD_MASK_GUI)); -} - -static void render_status(void) { - render_qmk_logo(); - render_layout_state(); - #ifdef ENCODER_ENABLE - render_encoder_state(); - #endif - render_layer_state(); - render_mod_state(get_mods()|get_oneshot_mods()); -} - -void oled_task_user(void) { - if (is_keyboard_master()) { - render_status(); - } else { - render_logo(); - oled_scroll_left(); - } -} -#endif \ No newline at end of file diff --git a/keyboards/kyria/keymaps/ninjonas/rules.mk b/keyboards/kyria/keymaps/ninjonas/rules.mk deleted file mode 100644 index 94c06b80eb4f..000000000000 --- a/keyboards/kyria/keymaps/ninjonas/rules.mk +++ /dev/null @@ -1,6 +0,0 @@ -OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays -ENCODER_ENABLE = yes # Enables the use of one or more encoders -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -LTO_ENABLE = yes - -SRC += oled.c diff --git a/keyboards/kyria/keymaps/pierrec83/config.h b/keyboards/kyria/keymaps/pierrec83/config.h deleted file mode 100644 index eb222c0d7ae7..000000000000 --- a/keyboards/kyria/keymaps/pierrec83/config.h +++ /dev/null @@ -1,65 +0,0 @@ -/* Copyright 2020 Pierre Chevalier - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#ifdef OLED_DRIVER_ENABLE - #define OLED_DISPLAY_128X64 -#endif - -#ifdef RGBLIGHT_ENABLE - #define RGBLIGHT_ANIMATIONS - #define RGBLIGHT_HUE_STEP 8 - #define RGBLIGHT_SAT_STEP 8 - #define RGBLIGHT_VAL_STEP 8 -#endif - -#ifdef ENCODER_ENABLE - #define ENCODER_DIRECTION_FLIP - #define ENCODER_RESOLUTION 2 -#endif - -#define TAPPING_TERM 200 -#define PERMISSIVE_HOLD -#define IGNORE_MOD_TAP_INTERRUPT -#define TAPPING_FORCE_HOLD -// Allows to use either side as the master. Look at the documentation for info: -// https://docs.qmk.fm/#/config_options?id=setting-handedness -#define EE_HANDS - -// Allows media codes to properly register in macros and rotary encoder code -#define TAP_CODE_DELAY 10 - -// If you are using an Elite C rev3 on the slave side, uncomment the lines below: -// #define SPLIT_USB_DETECT -// #define NO_USB_STARTUP_CHECK - -// Set the mouse settings to a comfortable speed/accuracy trade-off -// Assume the screen refresh rate is 60 Htz or higher -// The default is 50. This makes the mouse ~3 times faster and more accurate -#define MOUSEKEY_INTERVAL 16 -// The default is 20. Since we made the mouse about 3 times faster with the previous setting, -// give it more time to accelerate to max speed to retain precise control over short distances. -#define MOUSEKEY_TIME_TO_MAX 40 -// The default is 300. Let's try and make this as low as possible while keeping the cursor responsive -#define MOUSEKEY_DELAY 100 -// It makes sense to use the same delay for the mouseweel -#define MOUSEKEY_WHEEL_DELAY 100 -// The default is 100 -#define MOUSEKEY_WHEEL_INTERVAL 50 -// The default is 40 -#define MOUSEKEY_WHEEL_TIME_TO_MAX 100 - diff --git a/keyboards/kyria/keymaps/pierrec83/rules.mk b/keyboards/kyria/keymaps/pierrec83/rules.mk deleted file mode 100644 index 78f0ac93f1a5..000000000000 --- a/keyboards/kyria/keymaps/pierrec83/rules.mk +++ /dev/null @@ -1,5 +0,0 @@ -OLED_DRIVER_ENABLE = no # Enables the use of OLED displays -ENCODER_ENABLE = yes # ENables the use of one or more encoders -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow - -SRC += encoders.c diff --git a/keyboards/kyria/keymaps/plattfot/README.md b/keyboards/kyria/keymaps/plattfot/README.md deleted file mode 100644 index 860a3b782972..000000000000 --- a/keyboards/kyria/keymaps/plattfot/README.md +++ /dev/null @@ -1,168 +0,0 @@ -# plattfot's keymap for [Kyria](https://github.com/splitkb/kyria) - -![Keyboard](https://i.imgur.com/Pvsm973l.jpg) - -Designed to be ease of use when programming, typing in both English -and Swedish and navigating around in a tiling window manager, in my -case [sway](https://swaywm.org/). Uses the two rotary encoders (lower -left/right thumb row) as two palm buttons. - -This keymap avoids [Mod-tap](https://docs.qmk.fm/#/mod_tap) as they do -not work for me. [Kyria](https://github.com/splitkb/kyria) has enough -thumb keys to make it work without them. - - -# Base Layer: Default -``` - // ,-------------------------------------------. ,-------------------------------------------. - // | ` | Q | W | E | R | T | | Y | U | I | O | P | Å | - // |--------+------+------+------+------+------| |------+------+------+------+------+--------| - // | Tab | A | S | D | F | G | | H | J | K | L | ; : | ' " | - // |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - // | LShift | Z | X | C | V | B | Lead | RAISE| | LOWER|DBLTAP| N | M | , < | . > | / ? | RShift | - // `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - // | MPlay| GUI | LCtrl| Space| LALT | | Enter|BSpace| NAV | LCTL+|Worksp| - // | | | | | | | | | | LALT |toggle| - // `----------------------------------' `----------------------------------' -``` - -Setup for typing in both English and Swedish (hence the Å in the top -right corner, which is just [ on an US layout). - -Modifiers are mostly on the left hand, to make it comfortable when -require keyboard and mouse. For example working in a DCC (Digital -Content Creation tool) like [Houdini](https://www.sidefx.com/) and -[Maya](https://www.autodesk.com/products/maya/overview). - -## Notable features on this layer - -Left rotary encoder -- Press: play/pause -- Rotate: Volume control - -Right rotary encoder -- Press: Call keybinding that toggles between two recent workspaces. - For [sway](https://swaywm.org/) that is `workspace - back_and_forth` -- Rotate: Page up/Page down. Used mouse scrolling at first. But - scrolling only works in the window where the mouse pointer - is. Which kind of defeated the purpose of having the scroll - on the keyboard, as I still needed to move my hand to the - mouse and then I could just use the scroll on the mouse. - -[Leader key](https://docs.qmk.fm/#/feature_leader_key) is mainly used -for jumping between workspaces. Otherwise I would need to use both -hands everytime I need to switch. With the leader key I can jump -between 1-5 with just the left hand. The right rotary encoder also -helps jumping back and forth between two workspaces by just pressing -down my right palm. - -The double tap key, which I based on a code snippet from a -[reddit post](https://www.reddit.com/r/olkb/comments/citkbx/double_key_press_modifier_qmkwould_work_like/ev9cue8). -When pressed, it will repeat the next key twice. Reason for this is -that I found it a bit awkward to hold down the lower key when I need -to type a symbol twice. Which happens a lot when programming or -running commands on the command line. Does not save me any key presses -but more comfortable to type double keys, for example `--` and `&&`. - -# Lower Layer: Symbols -``` - // - // ,-------------------------------------------. ,-------------------------------------------. - // | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | | - // |--------+------+------+------+------+------| |------+------+------+------+------+--------| - // | | | | _ | \ | - | + | | = | { | } | [ | ] | '' | - // |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - // | | [] | {} | () | <> | | | | | | | | | < | > | ? | | - // `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - // | Mute | | | | | | | | | | | - // | | | | | | | | | | | | - // `----------------------------------' `----------------------------------' -``` - -Contains most of the symbols, only exceptions are those that are -already on the default US base layer i.e. quotes, punctuation and -forward slash. - -## Notable features on this layer - -Left rotary encoder -- Press: mute -- Rotate: Skip next/previous song - -The left letter bottom row contains macros to quickly type the -different types of brackets and move the cursor to be inside. For -example lower+c will type `()←`, where `←` is pressing the left arrow. -Same principle for the `''` macro. Really nice to have when -programming, and it is editor agnostic. - -# Raise Layer: Function keys -``` - // ,-------------------------------------------. ,-------------------------------------------. - // | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | | - // |--------+------+------+------+------+------| |------+------+------+------+------+--------| - // | | | | | | F11 | | F12 | | | | | | - // |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - // | | | | | | |ScLock| | | | Ins | | | | | |CapsLock| - // `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - // | | | | | | | | | | RAlt | | - // | | | | | | | | | | | | - // `----------------------------------' `----------------------------------' -``` - -Access to the functional keys, which I mostly use to run `emacs` -compilation mode. - -This layer also includes key that changes the state, like insert and -caps lock. - -Scroll Lock is used to toggle between English and Swedish. - -## Notable features on this layer - -Right rotary encoder -- Press: Right Alt, rarely use this, but it is needed for the Swedish - layout to type some symbols. But I find I mostly switch back - to the English layout if I need to type symbols. Might change - this in the future. -- Rotate: Moving between tabs in the browser, as described in this - [blog post](https://docs.splitkb.com/hc/en-us/articles/360010513760-How-can-I-use-a-rotary-encoder-). - -# Navigation Layer: Number keys, navigation -``` - // ,-------------------------------------------. ,-------------------------------------------. - // | | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | | - // |--------+------+------+------+------+------| |------+------+------+------+------+--------| - // | | | ESC | DEL | | | | | Left | Up | Down | Right| | - // |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - // | | | | | | | | | | | | | | | | | | - // `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - // | | | | | | | | | | RCtrl| | - // | | | | | | | | | | | | - // `----------------------------------' `----------------------------------' -``` - -Access to the number as well as the arrow keys. Got use to the number -row after using [ErgoDox](https://www.ergodox.io/) keyboards for a few -years. Do not feel I need a numpad layer, which seems to be quite -common with small keyboards like this. - -Esc and Delete is also on this layer as they are easy to reach and they -only need to be chord with the modifiers. - -# Adjust Layer: RGB -``` - // - // ,-------------------------------------------. ,-------------------------------------------. - // | | | | | | | | | | | | | | - // |--------+------+------+------+------+------| |------+------+------+------+------+--------| - // | | TOG | SAI | HUI | VAI | MOD | | | | | | | | - // |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - // | | | SAD | HUD | VAD | RMOD | | | | | | | | | | | | - // `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - // | | | | | | | | | | | | - // | | | | | | | | | | | | - // `----------------------------------' `----------------------------------' -``` - -Right now it only contains adjustment to the underglow. diff --git a/keyboards/kyria/keymaps/plattfot/config.h b/keyboards/kyria/keymaps/plattfot/config.h deleted file mode 100644 index 6e21c3ff5a8c..000000000000 --- a/keyboards/kyria/keymaps/plattfot/config.h +++ /dev/null @@ -1,40 +0,0 @@ -/* Copyright 2019 Thomas Baart - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#ifdef OLED_DRIVER_ENABLE - #define OLED_DISPLAY_128X64 -#endif - -#ifdef RGBLIGHT_ENABLE - #define RGBLIGHT_ANIMATIONS - #define RGBLIGHT_HUE_STEP 8 - #define RGBLIGHT_SAT_STEP 8 - #define RGBLIGHT_VAL_STEP 8 -#endif - -#define ENCODER_DIRECTION_FLIP -// Fixing the skipping with the EC11K encoder -#define ENCODER_RESOLUTION 2 - -#define EE_HANDS - -// The Leader key allows to flexibly assign macros to key sequences. -#define LEADER_PER_KEY_TIMING -#define LEADER_TIMEOUT 350 - -#define TAPPING_TERM 200 diff --git a/keyboards/kyria/keymaps/plattfot/keymap.c b/keyboards/kyria/keymaps/plattfot/keymap.c deleted file mode 100644 index 0fb305300e42..000000000000 --- a/keyboards/kyria/keymaps/plattfot/keymap.c +++ /dev/null @@ -1,437 +0,0 @@ -/* Copyright 2020 Fredrik Salomonsson - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include QMK_KEYBOARD_H -#include "version.h" - -enum custom_keycodes { - PLACEHOLDER = SAFE_RANGE, // can always be here - // Macros, where | is the cursor - M_LRBRC, // [|] - M_LRCBR, // {|} - M_LRPRN, // (|) - M_LRABR, // <|> - M_DQUOT, // '|' - // New keys - DBL_TAP, // Repeat next key -}; - -// Double Tap feature based on post from drashna -// https://www.reddit.com/r/olkb/comments/citkbx/double_key_press_modifier_qmkwould_work_like/ev9cue8/ -static bool double_tap_it = false; - -enum layers { - _DEFAULT, - _LOWER, - _RAISE, - _NAV, - _ADJUST, -}; - -// clang-format off -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* - * Base Layer: Default - * - * ,-------------------------------------------. ,-------------------------------------------. - * | ` | Q | W | E | R | T | | Y | U | I | O | P | Å | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * | Tab | A | S | D | F | G | | H | J | K | L | ; : | ' " | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | LShift | Z | X | C | V | B | Lead | RAISE| | LOWER|DBLTAP| N | M | , < | . > | / ? | RShift | - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * | MPlay| GUI | LCtrl| Space| LALT | | Enter|BSpace| NAV |LCTL+ |Worksp| - * | | | | | | | | | |LALT |toggle| - * `----------------------------------' `----------------------------------' - */ - [_DEFAULT] = LAYOUT( - KC_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, - KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LEAD, OSL(_RAISE), OSL(_LOWER), DBL_TAP, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, - KC_MPLY, KC_LGUI, KC_LCTL, KC_SPACE, KC_LALT, KC_ENT, KC_BSPC, MO(_NAV), LCTL(KC_LALT), LGUI(KC_B) - ), - -/* - * Lower Layer: Symbols - * - * ,-------------------------------------------. ,-------------------------------------------. - * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * | | | | _ | \ | - | + | | = | { | } | [ | ] | '' | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | | [] | {} | () | <> | | | | | | | | | < | > | ? | | - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * | Mute | | | | | | | | | | | - * | | | | | | | | | | | | - * `----------------------------------' `----------------------------------' - */ - [_LOWER] = LAYOUT( - KC_TILDE,KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, - _______, KC_PIPE, KC_UNDS, KC_BSLS, KC_MINS, KC_PLUS, KC_EQUAL,KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, M_DQUOT, - _______, M_LRBRC, M_LRCBR, M_LRPRN, M_LRABR, _______, _______, _______, _______, _______, _______, _______, KC_LT, KC_GT, KC_QUES, _______, - KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), -/* - * Raise Layer: Function keys - * - * ,-------------------------------------------. ,-------------------------------------------. - * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * | | | | | | F11 | | F12 | | | | | | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | | | | | | |ScLock| | | | Ins | | | | | |CapsLock| - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * | | | | | | | | | | RAlt | | - * | | | | | | | | | | | | - * `----------------------------------' `----------------------------------' - */ - [_RAISE] = LAYOUT( - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, - _______, _______, _______, _______, _______, KC_F11, KC_F12, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, KC_SLCK, _______, _______, KC_INS, _______, _______, _______, _______, _______, KC_CAPS, - _______, _______, _______, _______, _______, _______, _______, _______, KC_RALT, _______ - - ), -/* - * Navigation Layer: Number keys, navigation, modification - * - * ,-------------------------------------------. ,-------------------------------------------. - * | | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * | | | Esc | Del | | | | | Left | Up | Down | Right| | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | | | | | | | | | | | | | | | | | | - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * | | | | | | | | | | RCtrl| | - * | | | | | | | | | | | | - * `----------------------------------' `----------------------------------' - */ - [_NAV] = LAYOUT( - _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, - _______, _______, KC_ESC, KC_DEL, _______, _______, _______, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, KC_RCTL, _______ - ), -/* - * Adjust Layer: RGB - * - * ,-------------------------------------------. ,-------------------------------------------. - * | | | | | | | | | | | | | | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * | | TOG | SAI | HUI | VAI | MOD | | | | | | | | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | | | SAD | HUD | VAD | RMOD | | | | | | | | | | | | - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * | | | | | | | | | | | | - * | | | | | | | | | | | | - * `----------------------------------' `----------------------------------' - */ - [_ADJUST] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_MOD, _______, _______, _______, _______, _______, _______, - _______, _______, RGB_SAD, RGB_HUD, RGB_VAD, RGB_RMOD,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), -// /* -// * Layer template -// * -// * ,-------------------------------------------. ,-------------------------------------------. -// * | | | | | | | | | | | | | | -// * |--------+------+------+------+------+------| |------+------+------+------+------+--------| -// * | | | | | | | | | | | | | | -// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| -// * | | | | | | | | | | | | | | | | | | -// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' -// * | | | | | | | | | | | | -// * | | | | | | | | | | | | -// * `----------------------------------' `----------------------------------' -// */ -// [_LAYERINDEX] = LAYOUT( -// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, -// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, -// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, -// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ -// ), -}; -// clang-format on - -/* void keyboard_post_init_user(void) { */ -/* rgblight_setrgb(51, 135, 204); */ -/* } */ -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - if (record->event.pressed) { - switch (keycode) { - case M_LRPRN: - // Double tap gets messed up with macros, turning it off - double_tap_it = false; - SEND_STRING("()" SS_TAP(X_LEFT)); - return false; - case M_LRCBR: - double_tap_it = false; - SEND_STRING("{}" SS_TAP(X_LEFT)); - return false; - case M_LRBRC: - double_tap_it = false; - SEND_STRING("[]" SS_TAP(X_LEFT)); - return false; - case M_LRABR: - double_tap_it = false; - SEND_STRING("<>" SS_TAP(X_LEFT)); - return false; - case M_DQUOT: - double_tap_it = false; - SEND_STRING("''" SS_TAP(X_LEFT)); - return false; - case DBL_TAP: - double_tap_it = !double_tap_it; - return false; - case KC_LEAD: - double_tap_it = false; - return true; - } - - } else if (double_tap_it && - keycode != DBL_TAP && - keycode != OSL(_RAISE) && - keycode != OSL(_LOWER) && - keycode != MO(_NAV)) { - double_tap_it = false; - tap_code16(keycode); - } - - return true; -} - -layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } - -#ifdef OLED_DRIVER_ENABLE -oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; } - -// clang-format off -static void render_kyria_logo(void) { - static const char PROGMEM kyria_logo[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,224,240,112,120, 56, 60, 28, 30, 14, 14, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 30, 28, 60, 56,120,112,240,224,192,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0,192,224,240,124, 62, 31, 15, 7, 3, 1,128,192,224,240,120, 56, 60, 28, 30, 14, 14, 7, 7,135,231,127, 31,255,255, 31,127,231,135, 7, 7, 14, 14, 30, 28, 60, 56,120,240,224,192,128, 1, 3, 7, 15, 31, 62,124,240,224,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,240,252,255, 31, 7, 1, 0, 0,192,240,252,254,255,247,243,177,176, 48, 48, 48, 48, 48, 48, 48,120,254,135, 1, 0, 0,255,255, 0, 0, 1,135,254,120, 48, 48, 48, 48, 48, 48, 48,176,177,243,247,255,254,252,240,192, 0, 0, 1, 7, 31,255,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,254,255,255, 1, 1, 7, 30,120,225,129,131,131,134,134,140,140,152,152,177,183,254,248,224,255,255,224,248,254,183,177,152,152,140,140,134,134,131,131,129,225,120, 30, 7, 1, 1,255,255,254, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0,255,255, 0, 0,192,192, 48, 48, 0, 0,240,240, 0, 0, 0, 0, 0, 0,240,240, 0, 0,240,240,192,192, 48, 48, 48, 48,192,192, 0, 0, 48, 48,243,243, 0, 0, 0, 0, 0, 0, 48, 48, 48, 48, 48, 48,192,192, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,127,255,255,128,128,224,120, 30,135,129,193,193, 97, 97, 49, 49, 25, 25,141,237,127, 31, 7,255,255, 7, 31,127,237,141, 25, 25, 49, 49, 97, 97,193,193,129,135, 30,120,224,128,128,255,255,127, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0, 63, 63, 3, 3, 12, 12, 48, 48, 0, 0, 0, 0, 51, 51, 51, 51, 51, 51, 15, 15, 0, 0, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 63, 63, 48, 48, 0, 0, 12, 12, 51, 51, 51, 51, 51, 51, 63, 63, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 15, 63,255,248,224,128, 0, 0, 3, 15, 63,127,255,239,207,141, 13, 12, 12, 12, 12, 12, 12, 12, 30,127,225,128, 0, 0,255,255, 0, 0,128,225,127, 30, 12, 12, 12, 12, 12, 12, 12, 13,141,207,239,255,127, 63, 15, 3, 0, 0,128,224,248,255, 63, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3, 7, 15, 62,124,248,240,224,192,128, 1, 3, 7, 15, 30, 28, 60, 56,120,112,112,224,224,225,231,254,248,255,255,248,254,231,225,224,224,112,112,120, 56, 60, 28, 30, 15, 7, 3, 1,128,192,224,240,248,124, 62, 15, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 15, 14, 30, 28, 60, 56,120,112,112,112,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,112,112,112,120, 56, 60, 28, 30, 14, 15, 7, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }; - oled_write_raw_P(kyria_logo, sizeof(kyria_logo)); -} - -static void render_qmk_logo(void) { - static const char PROGMEM qmk_logo[] = { - 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, - 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, - 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0}; - - oled_write_P(qmk_logo, false); -} -// clang-format on - -static void render_status(void) { - // QMK Logo and version information - render_qmk_logo(); - oled_write_P(PSTR("Kyria rev1.0\n"), false); - oled_write_P(PSTR("v" QMK_VERSION "\n"), false); - - // Host Keyboard Layer Status - oled_write_P(PSTR("Layer: "), false); - switch (get_highest_layer(layer_state)) { - case _DEFAULT: - oled_write_P(PSTR("plattfot\n"), false); - break; - case _LOWER: - oled_write_P(PSTR("symbols\n"), false); - break; - case _RAISE: - oled_write_P(PSTR("function keys\n"), false); - break; - case _NAV: - oled_write_P(PSTR("numbers/navi\n"), false); - break; - case _ADJUST: - oled_write_P(PSTR("adjust\n"), false); - break; - default: - oled_write_P(PSTR("undefined\n"), false); - } - - // Host Keyboard LED Status and Double tap - led_t led_state = host_keyboard_led_state(); - if (led_state.num_lock) { - oled_write_P(PSTR("NUMLCK "), false); - } else if (double_tap_it) { - oled_write_P(PSTR("Double "), false); - } else { - oled_write_P(PSTR(" "), false); - } - - if (led_state.caps_lock) { - oled_write_P(PSTR("CAPLCK "), false); - } else if (double_tap_it) { - oled_write_P(PSTR("Tap "), false); - } else { - oled_write_P(PSTR(" "), false); - } - - oled_write_P(led_state.scroll_lock ? PSTR("SCRLCK ") : PSTR(" "), false); -} - -void oled_task_user(void) { - if (is_keyboard_master()) { - render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) - } else { - render_kyria_logo(); - } -} -#endif - -#ifdef ENCODER_ENABLE -bool encoder_update_user(uint8_t index, bool clockwise) { - if (index == 0) { - switch (get_highest_layer(layer_state)) { - case _LOWER: - // Skip/Prev song - if (clockwise) { - tap_code(KC_MNXT); - clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); - } else { - tap_code(KC_MPRV); - clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); - } - break; - default: - // Volume control - if (clockwise) { - tap_code(KC_VOLU); - clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); - } else { - tap_code(KC_VOLD); - clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); - } - break; - } - } else if (index == 1) { - switch (get_highest_layer(layer_state)) { - case _RAISE: - // Credit to Thomas Baart for this - // See https://docs.splitkb.com/hc/en-us/articles/360010513760-How-can-I-use-a-rotary-encoder- - if (clockwise) { - tap_code16(C(KC_TAB)); - clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); - } else { - tap_code16(S(C(KC_TAB))); - clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); - } - break; - default: - // Scrolling - if (clockwise) { - tap_code(KC_PGDN); - clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); - } else { - tap_code(KC_PGUP); - clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); - } - break; - } - } - return true; -} -#endif - -LEADER_EXTERNS(); - -void matrix_scan_user(void) { - LEADER_DICTIONARY() { - leading = false; - leader_end(); - // Sway navigation - SEQ_ONE_KEY(KC_Q) { // Jump to workspace 1 - SEND_STRING(SS_LGUI("1")); - } - SEQ_ONE_KEY(KC_W) { // Jump to workspace 2 - SEND_STRING(SS_LGUI("2")); - } - SEQ_ONE_KEY(KC_E) { // Jump to workspace 3 - SEND_STRING(SS_LGUI("3")); - } - SEQ_ONE_KEY(KC_R) { // Jump to workspace 4 - SEND_STRING(SS_LGUI("4")); - } - SEQ_ONE_KEY(KC_T) { // Jump to workspace 5 - SEND_STRING(SS_LGUI("5")); - } - - SEQ_ONE_KEY(KC_Y) { // Jump to workspace 6 - SEND_STRING(SS_LGUI("6")); - } - SEQ_ONE_KEY(KC_U) { // Jump to workspace 7 - SEND_STRING(SS_LGUI("7")); - } - SEQ_ONE_KEY(KC_I) { // Jump to workspace 8 - SEND_STRING(SS_LGUI("8")); - } - SEQ_ONE_KEY(KC_O) { // Jump to workspace 9 - SEND_STRING(SS_LGUI("9")); - } - SEQ_ONE_KEY(KC_P) { // Jump to workspace 0 - SEND_STRING(SS_LGUI("0")); - } - SEQ_ONE_KEY(KC_G) { // View scratch pad - SEND_STRING(SS_LGUI("-")); - } - - // Sway move window - SEQ_TWO_KEYS(KC_M, KC_Q) { // Move to workspace 1 - SEND_STRING(SS_LSFT(SS_LGUI("1"))); - } - SEQ_TWO_KEYS(KC_M, KC_W) { // Move to workspace 2 - SEND_STRING(SS_LSFT(SS_LGUI("2"))); - } - SEQ_TWO_KEYS(KC_M, KC_E) { // Move to workspace 3 - SEND_STRING(SS_LSFT(SS_LGUI("3"))); - } - SEQ_TWO_KEYS(KC_M, KC_R) { // Move to workspace 4 - SEND_STRING(SS_LSFT(SS_LGUI("4"))); - } - SEQ_TWO_KEYS(KC_M, KC_T) { // Move to workspace 5 - SEND_STRING(SS_LSFT(SS_LGUI("5"))); - } - - SEQ_TWO_KEYS(KC_M, KC_Y) { // Move to workspace 6 - SEND_STRING(SS_LSFT(SS_LGUI("6"))); - } - SEQ_TWO_KEYS(KC_M, KC_U) { // Move to workspace 7 - SEND_STRING(SS_LSFT(SS_LGUI("7"))); - } - SEQ_TWO_KEYS(KC_M, KC_I) { // Move to workspace 8 - SEND_STRING(SS_LSFT(SS_LGUI("8"))); - } - SEQ_TWO_KEYS(KC_M, KC_O) { // Move to workspace 9 - SEND_STRING(SS_LSFT(SS_LGUI("9"))); - } - SEQ_TWO_KEYS(KC_M, KC_P) { // Move to workspace 0 - SEND_STRING(SS_LSFT(SS_LGUI("0"))); - } - SEQ_TWO_KEYS(KC_M, KC_G) { // Move to scratch pad - SEND_STRING(SS_LSFT(SS_LGUI("-"))); - } - } -} diff --git a/keyboards/kyria/keymaps/plattfot/rules.mk b/keyboards/kyria/keymaps/plattfot/rules.mk deleted file mode 100644 index 412546d09a59..000000000000 --- a/keyboards/kyria/keymaps/plattfot/rules.mk +++ /dev/null @@ -1,5 +0,0 @@ -OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays -ENCODER_ENABLE = yes # Enables the use of one or more encoders -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -LEADER_ENABLE = yes # Enable the Leader Key feature -MOUSEKEY_ENABLE = no # Disable mouse, need to save space. diff --git a/keyboards/kyria/keymaps/rmw/config.h b/keyboards/kyria/keymaps/rmw/config.h deleted file mode 100644 index 02e5087b3e90..000000000000 --- a/keyboards/kyria/keymaps/rmw/config.h +++ /dev/null @@ -1,36 +0,0 @@ -/* Copyright 2019 Thomas Baart - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#define MACOSX - -#ifdef OLED_DRIVER_ENABLE - #define OLED_DISPLAY_128X64 -#endif - -#ifdef RGBLIGHT_ENABLE - #define RGBLIGHT_ANIMATIONS - #define RGBLIGHT_HUE_STEP 8 - #define RGBLIGHT_SAT_STEP 8 - #define RGBLIGHT_VAL_STEP 8 -#endif - -// If you are using an Elite C rev3 on the follower side, uncomment the lines below: -// #define SPLIT_USB_DETECT -// #define NO_USB_STARTUP_CHECK - - diff --git a/keyboards/kyria/keymaps/rmw/rules.mk b/keyboards/kyria/keymaps/rmw/rules.mk deleted file mode 100644 index d41ffaef6dfe..000000000000 --- a/keyboards/kyria/keymaps/rmw/rules.mk +++ /dev/null @@ -1,4 +0,0 @@ -OLED_DRIVER_ENABLE = no # Enables the use of OLED displays -ENCODER_ENABLE = yes # Enables the use of one or more encoders -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -TAP_DANCE_ENABLE=yes # Enables Tap Dance diff --git a/keyboards/kyria/keymaps/shinze/config.h b/keyboards/kyria/keymaps/shinze/config.h deleted file mode 100644 index f00bfa8e7059..000000000000 --- a/keyboards/kyria/keymaps/shinze/config.h +++ /dev/null @@ -1,32 +0,0 @@ -/* Copyright 2019 Thomas Baart - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#ifdef OLED_DRIVER_ENABLE - #define OLED_DISPLAY_128X64 -#endif - -#ifdef RGBLIGHT_ENABLE - #define RGBLIGHT_ANIMATIONS - #define RGBLIGHT_HUE_STEP 8 - #define RGBLIGHT_SAT_STEP 8 - #define RGBLIGHT_VAL_STEP 8 -#endif - -// If you are using an Elite C rev3 on the slave side, uncomment the lines below: -// #define SPLIT_USB_DETECT -// #define NO_USB_STARTUP_CHECK diff --git a/keyboards/kyria/keymaps/shinze/keymap.c b/keyboards/kyria/keymaps/shinze/keymap.c deleted file mode 100644 index 29f6dc079f21..000000000000 --- a/keyboards/kyria/keymaps/shinze/keymap.c +++ /dev/null @@ -1,248 +0,0 @@ -/* Copyright 2019 Thomas Baart - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include QMK_KEYBOARD_H -#include "keymap_bepo.h" - -enum layers { - _BEPO = 0, - _LOWER, - _RAISE, - _ADJUST -}; - -#define RESC LT(_RAISE, KC_ESC) -#define BP_EA BP_E_ACUTE -#define BP_AG BP_AGRV -#define BP_EG BP_E_GRAVE -#define BP_DC BP_DCRC -#define BP_AP BP_APOS -#define BP_CO BP_COMM -#define BP_DT BP_DOT -#define LS KC_LSFT -#define BP_DOL BP_DOLLAR - -/* Bottom Row */ -#define BR01 KC_LCTL -#define BR02 KC_LALT -#define BR03 MT(MOD_LGUI, KC_ENT) -#define BR04 LT(_LOWER, KC_SPC) -#define BR05 LT(_RAISE, KC_ESC) -#define BR06 LT(_LOWER, KC_ENT) -#define BR07 LT(_RAISE, KC_SPC) -#define BR08 KC_TAB -#define BR09 KC_BSPC -#define BR10 KC_RALT - -/* Under the screen row */ -#define U1 KC_LSFT - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -/* - * Base Layer: BÉPO - * - * ,-------------------------------------------. ,-------------------------------------------. - * |RAIS/ESC| B | É | P | O | È | | ^ | V | D | L | J | | Z | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * | W | A | U | I | E | , | | C | T | S | R | N | M | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | LShift | À | Y | X | . | K | SPC |LShift| |LShift|LShift| ’ | Q | G | H | F | Ç | - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * | CTRL | Alt | Enter| Space| Esc | | Enter| Space| Tab | Bksp | AltGr| - * | | | CMD | Lower| Raise| | Lower| Raise| | | | - * `----------------------------------' `----------------------------------' - */ - [_BEPO] = LAYOUT( - RESC, BP_B, BP_EA, BP_P, BP_O, BP_EG, BP_DC, BP_V, BP_D, BP_L, BP_J, BP_Z, - BP_W, BP_A, BP_U, BP_I, BP_E, BP_CO, BP_C, BP_T, BP_S, BP_R, BP_N, BP_M, - LS, BP_AG, BP_Y, BP_X, BP_DT, BP_K, KC_SPC, U1, U1, U1, BP_AP, BP_Q, BP_G, BP_H, BP_F, BP_CCED, - BR01, BR02, BR03, BR04, BR05, BR06, BR07, BR08, BR09, BR10 - ), -/* - * Lower Layer: Numbers and symbols ? - * - * ,-------------------------------------------. ,-------------------------------------------. - * | $ | " | « | » | ( | ) | | @ | + | - | / | * | = | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * | # | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ° | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | % | | | | | | | | | | | | | | | | ` | - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * | | | | | | | | | | | | - * | | | | | | | | | | | | - * `----------------------------------' `----------------------------------' - */ - [_LOWER] = LAYOUT( - BP_DOL , BP_DQUO, BP_LGIL, BP_RGIL, BP_LPRN, BP_RPRN, BP_AT, BP_PLUS, BP_MINS, BP_SLASH, BP_ASTR, BP_EQL, - BP_HASH, BP_1, BP_2, BP_3, BP_4, BP_5, BP_6, BP_7, BP_8, BP_9, BP_0, BP_DEGR, - BP_PERC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BP_GRV, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), -/* - * Raise Layer: Media - * - * ,-------------------------------------------. ,-------------------------------------------. - * | | | | | | | | | | | | | | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * | | | Prev | Play | Next | VolUp| | Left | Down | Up | Right| | | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | | | | | Mute | VolDn| | | | | | MLeft| Mdown| MUp |MRight| | | - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * | | | | | | | | | | | | - * | | | | | | | | | | | | - * `----------------------------------' `----------------------------------' - */ - [_RAISE] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, - _______, _______, _______, _______, KC_MUTE, KC_VOLD, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), -/* - * Adjust Layer: Function keys, RGB - * - * ,-------------------------------------------. ,-------------------------------------------. - * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * | | TOG | SAI | HUI | VAI | MOD | | | | | F11 | F12 | | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | | | SAD | HUD | VAD | RMOD | | | | | | | | | | | | - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * | | | | | | | | | | | | - * | | | | | | | | | | | | - * `----------------------------------' `----------------------------------' - */ - [_ADJUST] = LAYOUT( - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, - _______, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_MOD, _______, _______, _______, KC_F11, KC_F12, _______, - _______, _______, RGB_SAD, RGB_HUD, RGB_VAD, RGB_RMOD,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), -// /* -// * Layer template -// * -// * ,-------------------------------------------. ,-------------------------------------------. -// * | | | | | | | | | | | | | | -// * |--------+------+------+------+------+------| |------+------+------+------+------+--------| -// * | | | | | | | | | | | | | | -// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| -// * | | | | | | | | | | | | | | | | | | -// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' -// * | | | | | | | | | | | | -// * | | | | | | | | | | | | -// * `----------------------------------' `----------------------------------' -// */ -// [_LAYERINDEX] = LAYOUT( -// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, -// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, -// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, -// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ -// ), -}; - -layer_state_t layer_state_set_user(layer_state_t state) { - return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); -} - -#ifdef OLED_DRIVER_ENABLE -oled_rotation_t oled_init_user(oled_rotation_t rotation) { - return OLED_ROTATION_180; -} - -static void render_kyria_logo(void) { - static const char PROGMEM kyria_logo[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,224,240,112,120, 56, 60, 28, 30, 14, 14, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 30, 28, 60, 56,120,112,240,224,192,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0,192,224,240,124, 62, 31, 15, 7, 3, 1,128,192,224,240,120, 56, 60, 28, 30, 14, 14, 7, 7,135,231,127, 31,255,255, 31,127,231,135, 7, 7, 14, 14, 30, 28, 60, 56,120,240,224,192,128, 1, 3, 7, 15, 31, 62,124,240,224,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,240,252,255, 31, 7, 1, 0, 0,192,240,252,254,255,247,243,177,176, 48, 48, 48, 48, 48, 48, 48,120,254,135, 1, 0, 0,255,255, 0, 0, 1,135,254,120, 48, 48, 48, 48, 48, 48, 48,176,177,243,247,255,254,252,240,192, 0, 0, 1, 7, 31,255,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,254,255,255, 1, 1, 7, 30,120,225,129,131,131,134,134,140,140,152,152,177,183,254,248,224,255,255,224,248,254,183,177,152,152,140,140,134,134,131,131,129,225,120, 30, 7, 1, 1,255,255,254, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0,255,255, 0, 0,192,192, 48, 48, 0, 0,240,240, 0, 0, 0, 0, 0, 0,240,240, 0, 0,240,240,192,192, 48, 48, 48, 48,192,192, 0, 0, 48, 48,243,243, 0, 0, 0, 0, 0, 0, 48, 48, 48, 48, 48, 48,192,192, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,127,255,255,128,128,224,120, 30,135,129,193,193, 97, 97, 49, 49, 25, 25,141,237,127, 31, 7,255,255, 7, 31,127,237,141, 25, 25, 49, 49, 97, 97,193,193,129,135, 30,120,224,128,128,255,255,127, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0, 63, 63, 3, 3, 12, 12, 48, 48, 0, 0, 0, 0, 51, 51, 51, 51, 51, 51, 15, 15, 0, 0, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 63, 63, 48, 48, 0, 0, 12, 12, 51, 51, 51, 51, 51, 51, 63, 63, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 15, 63,255,248,224,128, 0, 0, 3, 15, 63,127,255,239,207,141, 13, 12, 12, 12, 12, 12, 12, 12, 30,127,225,128, 0, 0,255,255, 0, 0,128,225,127, 30, 12, 12, 12, 12, 12, 12, 12, 13,141,207,239,255,127, 63, 15, 3, 0, 0,128,224,248,255, 63, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3, 7, 15, 62,124,248,240,224,192,128, 1, 3, 7, 15, 30, 28, 60, 56,120,112,112,224,224,225,231,254,248,255,255,248,254,231,225,224,224,112,112,120, 56, 60, 28, 30, 15, 7, 3, 1,128,192,224,240,248,124, 62, 15, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 15, 14, 30, 28, 60, 56,120,112,112,112,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,112,112,112,120, 56, 60, 28, 30, 14, 15, 7, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }; - oled_write_raw_P(kyria_logo, sizeof(kyria_logo)); -} - -static void render_qmk_logo(void) { - static const char PROGMEM qmk_logo[] = { - 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, - 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, - 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0}; - - oled_write_P(qmk_logo, false); -} - -static void render_status(void) { - // QMK Logo and version information - render_qmk_logo(); - oled_write_P(PSTR("Kyria rev1.0\n\n"), false); - - // Host Keyboard Layer Status - oled_write_P(PSTR("Layer: "), false); - switch (get_highest_layer(layer_state)) { - case _BEPO: - oled_write_P(PSTR("BEPO\n"), false); - break; - case _LOWER: - oled_write_P(PSTR("NumSym\n"), false); - break; - case _RAISE: - oled_write_P(PSTR("Media\n"), false); - break; - case _ADJUST: - oled_write_P(PSTR("Adjust\n"), false); - break; - default: - oled_write_P(PSTR("Undefined\n"), false); - } - - // Host Keyboard LED Status - uint8_t led_usb_state = host_keyboard_leds(); - oled_write_P(IS_LED_ON(led_usb_state, USB_LED_NUM_LOCK) ? PSTR("NUMLCK ") : PSTR(" "), false); - oled_write_P(IS_LED_ON(led_usb_state, USB_LED_CAPS_LOCK) ? PSTR("CAPLCK ") : PSTR(" "), false); - oled_write_P(IS_LED_ON(led_usb_state, USB_LED_SCROLL_LOCK) ? PSTR("SCRLCK ") : PSTR(" "), false); -} - -void oled_task_user(void) { - if (is_keyboard_master()) { - render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) - } else { - render_kyria_logo(); - } -} -#endif - -#ifdef ENCODER_ENABLE -bool encoder_update_user(uint8_t index, bool clockwise) { - if (index == 0) { - // Volume control - if (clockwise) { - tap_code(KC_VOLU); - } else { - tap_code(KC_VOLD); - } - } - else if (index == 1) { - // Page up/Page down - if (clockwise) { - tap_code(KC_PGDN); - } else { - tap_code(KC_PGUP); - } - } - return true; -} -#endif diff --git a/keyboards/kyria/keymaps/shinze/rules.mk b/keyboards/kyria/keymaps/shinze/rules.mk deleted file mode 100644 index 604e154650d1..000000000000 --- a/keyboards/kyria/keymaps/shinze/rules.mk +++ /dev/null @@ -1,3 +0,0 @@ -OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays -ENCODER_ENABLE = yes # Enables the use of one or more encoders -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow diff --git a/keyboards/kyria/keymaps/tessachka/config.h b/keyboards/kyria/keymaps/tessachka/config.h deleted file mode 100644 index a5529128da0f..000000000000 --- a/keyboards/kyria/keymaps/tessachka/config.h +++ /dev/null @@ -1,29 +0,0 @@ -/* Copyright 2019 Thomas Baart - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#ifdef OLED_DRIVER_ENABLE - #define OLED_DISPLAY_128X64 -#endif - -#ifdef RGBLIGHT_ENABLE - #define RGBLIGHT_ANIMATIONS - #define RGBLIGHT_HUE_STEP 8 - #define RGBLIGHT_SAT_STEP 8 - #define RGBLIGHT_VAL_STEP 8 - #define RGBLIGHT_SLEEP -#endif diff --git a/keyboards/kyria/keymaps/tessachka/keymap.c b/keyboards/kyria/keymaps/tessachka/keymap.c deleted file mode 100644 index 38307f9644c6..000000000000 --- a/keyboards/kyria/keymaps/tessachka/keymap.c +++ /dev/null @@ -1,241 +0,0 @@ -/* Copyright 2019 Thomas Baart - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include QMK_KEYBOARD_H - - -enum layers { - QWERTY = 0, - LOWER, - RAISE, - ADJUST -}; - -enum custom_keycodes { - RGBRST = SAFE_RANGE, - KC_RACL -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* - * Base Layer: QWERTY - * - * ,-------------------------------------------. ,-------------------------------------------. - * | ESC | Q | W | E | R | T | | Y | U | I | O | P | BSPC | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * | TAB/ADJ| A | S | D | F | G | | H | J | K | L | ; : | ENTER | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | LSHIFT | Z | X | C | V | B | | | | | | N | M | , < | . > | / ? | F16 | - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * | | | | | Space| | MYCM | Calc | F15 | | | - * | | | Ctrl | LAlt | Lower| | Raise| | | | | - * `----------------------------------' `----------------------------------' - */ - [QWERTY] = LAYOUT( - KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, - LT(ADJUST,KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_F16, - XXXXXXX, XXXXXXX, KC_LCTL, KC_LALT, LT(LOWER,KC_SPC), LT(RAISE,KC_MYCM), KC_CALC, KC_F15, XXXXXXX, XXXXXXX - ), -/* - * Lower Layer: Numbers and symbols - * - * ,-------------------------------------------. ,-------------------------------------------. - * | ` | 1 ! | 2 @ | 3 # | 4 $ | 5 % | | 6 ^ | 7 & | 8 * | 9 ( | 0 ) | DEL | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * | CAPS | - _ | = + | [ { | ] } | | | | | | | ' " | | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | LSHIFT | TAB | | | | | | | | | | Home | PgDn | PgUp | End | \ | | | - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * | | | | | Space| | Space| | | | | - * | | | Ctrl | LAlt | Lower| | | | | | | - * `----------------------------------' `----------------------------------' - */ - [LOWER] = LAYOUT( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, - KC_CAPS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_QUOT, KC_NO, - KC_LSFT, KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_BSLS, KC_NO, - _______, _______, _______, _______, _______, KC_SPC, KC_NO, KC_NO, _______, _______ - ), -/* - * Raise Layer: Function Keys - * - * ,-------------------------------------------. ,-------------------------------------------. - * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * | | |EEPRST| | | | | | | | | | F12 | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | LSHIFT | TAB | RESET| | | | | | | | | Play | | | | | | - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * | | | | | Space| | MYCM | Prev | Next | | | - * | | | Ctrl | LAlt | | | Raise| | | | | - * `----------------------------------' `----------------------------------' - */ - [RAISE] = LAYOUT( - KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, - KC_NO, KC_NO, EEP_RST, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12, - KC_LSFT, KC_TAB, RESET, KC_NO, KC_NO, KC_NO, _______, _______, _______, _______, KC_MPLY, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - _______, _______, _______, _______, KC_SPC , KC_MPRV, KC_MNXT, _______, _______, _______ - ), -/* - * Adjust Layer: Arrow keys, RGB - * - * ,-------------------------------------------. ,-------------------------------------------. - * | | BTN2 | Up | BTN1 |RGBMOD|RGBTOG| | | | | | | | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * | | Left | Down | Right|RGBSAI|RGBHUI| | | | | | | | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | RGBRST | |RGBVAI|RGBVAD|RGBSAD|RGBHUD| | | | | | | | | | | | - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * | | | WBAK | BTN3 | WFWD | | MYCM | Calc | F15 | | | - * | | | | | | | Raise| | | | | - * `----------------------------------' `----------------------------------' - */ - [ADJUST] = LAYOUT( - KC_NO, KC_BTN2, KC_UP, KC_BTN1, RGB_MOD, RGB_TOG, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, RGB_SAI, RGB_HUI, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - RGBRST, KC_NO, RGB_VAI, RGB_VAD, RGB_SAD, RGB_HUD, _______, _______, _______, _______, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - _______, _______, KC_WBAK, KC_BTN3, KC_WFWD, _______, _______, _______, _______, _______ - ), -// /* -// * Layer template -// * -// * ,-------------------------------------------. ,-------------------------------------------. -// * | | | | | | | | | | | | | | -// * |--------+------+------+------+------+------| |------+------+------+------+------+--------| -// * | | | | | | | | | | | | | | -// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| -// * | | | | | | | | | | | | | | | | | | -// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' -// * | | | | | | | | | | | | -// * | | | | | | | | | | | | -// * `----------------------------------' `----------------------------------' -// */ -// [LAYERINDEX] = LAYOUT( -// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, -// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, -// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, -// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ -// ), -}; - -layer_state_t layer_state_set_user(layer_state_t state) { - return update_tri_layer_state(state, LOWER, RAISE, ADJUST); -} - -// bool process_record_user(uint16_t keycode, keyrecord_t *record) { -// switch (keycode) { -// case MyCustomKeycode: -// if (record->event.pressed) { -// // What to do if the button was pressed -// } else { -// // What to do if the button was released -// } -// break; -// } -// return true; -// } - -#ifdef OLED_DRIVER_ENABLE -oled_rotation_t oled_init_user(oled_rotation_t rotation) { - return OLED_ROTATION_180; -} - -static void render_kyria_logo(void) { - static const char PROGMEM kyria_logo[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,224,240,112,120, 56, 60, 28, 30, 14, 14, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 30, 28, 60, 56,120,112,240,224,192,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0,192,224,240,124, 62, 31, 15, 7, 3, 1,128,192,224,240,120, 56, 60, 28, 30, 14, 14, 7, 7,135,231,127, 31,255,255, 31,127,231,135, 7, 7, 14, 14, 30, 28, 60, 56,120,240,224,192,128, 1, 3, 7, 15, 31, 62,124,240,224,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,240,252,255, 31, 7, 1, 0, 0,192,240,252,254,255,247,243,177,176, 48, 48, 48, 48, 48, 48, 48,120,254,135, 1, 0, 0,255,255, 0, 0, 1,135,254,120, 48, 48, 48, 48, 48, 48, 48,176,177,243,247,255,254,252,240,192, 0, 0, 1, 7, 31,255,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,254,255,255, 1, 1, 7, 30,120,225,129,131,131,134,134,140,140,152,152,177,183,254,248,224,255,255,224,248,254,183,177,152,152,140,140,134,134,131,131,129,225,120, 30, 7, 1, 1,255,255,254, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0,255,255, 0, 0,192,192, 48, 48, 0, 0,240,240, 0, 0, 0, 0, 0, 0,240,240, 0, 0,240,240,192,192, 48, 48, 48, 48,192,192, 0, 0, 48, 48,243,243, 0, 0, 0, 0, 0, 0, 48, 48, 48, 48, 48, 48,192,192, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,127,255,255,128,128,224,120, 30,135,129,193,193, 97, 97, 49, 49, 25, 25,141,237,127, 31, 7,255,255, 7, 31,127,237,141, 25, 25, 49, 49, 97, 97,193,193,129,135, 30,120,224,128,128,255,255,127, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0, 63, 63, 3, 3, 12, 12, 48, 48, 0, 0, 0, 0, 51, 51, 51, 51, 51, 51, 15, 15, 0, 0, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 63, 63, 48, 48, 0, 0, 12, 12, 51, 51, 51, 51, 51, 51, 63, 63, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 15, 63,255,248,224,128, 0, 0, 3, 15, 63,127,255,239,207,141, 13, 12, 12, 12, 12, 12, 12, 12, 30,127,225,128, 0, 0,255,255, 0, 0,128,225,127, 30, 12, 12, 12, 12, 12, 12, 12, 13,141,207,239,255,127, 63, 15, 3, 0, 0,128,224,248,255, 63, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3, 7, 15, 62,124,248,240,224,192,128, 1, 3, 7, 15, 30, 28, 60, 56,120,112,112,224,224,225,231,254,248,255,255,248,254,231,225,224,224,112,112,120, 56, 60, 28, 30, 15, 7, 3, 1,128,192,224,240,248,124, 62, 15, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 15, 14, 30, 28, 60, 56,120,112,112,112,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,112,112,112,120, 56, 60, 28, 30, 14, 15, 7, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }; - oled_write_raw_P(kyria_logo, sizeof(kyria_logo)); -} - -static void render_tessachka_logo(void) { - static const char PROGMEM Tessachka_OLED_Logo_Inverted[] = - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 64, 0, 0, 128, 128, 192, 192, 192, 192, 192, 192, 64, 0, 0, - 128, 192, 192, 192, 192, 192, 192, 192, 192, 192, 64, 0, 0, 128, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 64, 0, 0, 0, 0, 0, 0, 192, 192, 0, 0, - 0, 0, 0, 0, 0, 128, 192, 192, 192, 192, 192, 192, 192, 192, 128, 0, 0, - 192, 128, 0, 0, 0, 0, 0, 0, 0, 0, 128, 192, 0, 192, 128, 0, 0, - 0, 0, 128, 192, 192, 128, 0, 0, 0, 0, 0, 0, 0, 192, 192, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 255, 255, 255, 127, 1, 1, 1, 0, 24, 126, 255, 255, 219, - 219, 153, 153, 153, 137, 128, 128, 0, 135, 143, 159, 153, 153, 153, 153, 153, 153, - 249, 240, 224, 0, 135, 143, 159, 153, 153, 153, 153, 153, 153, 249, 240, 224, 0, - 0, 192, 240, 252, 159, 135, 135, 159, 124, 240, 192, 0, 60, 255, 255, 231, 195, - 129, 0, 0, 0, 129, 195, 195, 195, 0, 255, 255, 255, 24, 24, 24, 24, 24, - 24, 255, 255, 255, 0, 255, 255, 255, 28, 62, 127, 247, 227, 193, 128, 0, 0, - 0, 192, 240, 252, 159, 135, 135, 159, 124, 240, 192, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 3, 3, 3, 3, 1, 0, 0, - 0, 1, 3, 3, 3, 3, 3, 3, 3, 3, 1, 0, 0, 0, 1, 3, 3, - 3, 3, 3, 3, 3, 3, 1, 0, 0, 3, 3, 3, 3, 3, 3, 1, 0, - 0, 1, 3, 3, 0, 0, 1, 3, 3, 3, 3, 3, 3, 3, 3, 1, 0, - 0, 0, 1, 3, 0, 0, 0, 0, 0, 0, 3, 1, 0, 0, 0, 1, 3, - 0, 0, 0, 0, 1, 3, 3, 1, 0, 3, 3, 3, 3, 3, 3, 1, 0, - 0, 1, 3, 3, 0, 0, 0, 0, 0, 0 - }; - oled_write_raw_P(Tessachka_OLED_Logo_Inverted, sizeof(Tessachka_OLED_Logo_Inverted)); - oled_advance_page(false); - oled_advance_page(false); - oled_advance_page(false); -} - -static void render_status(void) { - // Logo and version information - render_tessachka_logo(); - oled_write_P(PSTR("Kyria rev1.0\n\n"), false); - - // Host Keyboard Layer Status - oled_write_P(PSTR("Layer: "), false); - switch (get_highest_layer(layer_state)) { - case QWERTY: - oled_write_P(PSTR("Default\n"), false); - break; - case LOWER: - oled_write_P(PSTR("Lower\n"), false); - break; - case RAISE: - oled_write_P(PSTR("Raise\n"), false); - break; - case ADJUST: - oled_write_P(PSTR("Adjust\n"), false); - break; - default: - oled_write_P(PSTR("Undefined\n"), false); - } - - // Host Keyboard LED Status - uint8_t led_usb_state = host_keyboard_leds(); - oled_write_P(IS_LED_ON(led_usb_state, USB_LED_NUM_LOCK) ? PSTR("NUMLCK ") : PSTR(" "), false); - oled_write_P(IS_LED_ON(led_usb_state, USB_LED_CAPS_LOCK) ? PSTR("CAPLCK ") : PSTR(" "), false); - oled_write_P(IS_LED_ON(led_usb_state, USB_LED_SCROLL_LOCK) ? PSTR("SCRLCK ") : PSTR(" "), false); -} - -void oled_task_user(void) { - if (is_keyboard_master()) { - render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) - } else { - render_kyria_logo(); - } -} -#endif diff --git a/keyboards/kyria/keymaps/tessachka/rules.mk b/keyboards/kyria/keymaps/tessachka/rules.mk deleted file mode 100644 index b7d691efd937..000000000000 --- a/keyboards/kyria/keymaps/tessachka/rules.mk +++ /dev/null @@ -1,3 +0,0 @@ -OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MOUSEKEY_ENABLE = yes diff --git a/keyboards/kyria/keymaps/thomasbaart/config.h b/keyboards/kyria/keymaps/thomasbaart/config.h deleted file mode 100644 index 6128133ed61d..000000000000 --- a/keyboards/kyria/keymaps/thomasbaart/config.h +++ /dev/null @@ -1,47 +0,0 @@ -/* Copyright 2019 Thomas Baart - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#ifdef OLED_DRIVER_ENABLE - #define OLED_DISPLAY_128X64 -#endif - -#ifdef RGBLIGHT_ENABLE - #define RGBLIGHT_ANIMATIONS - #define RGBLIGHT_HUE_STEP 8 - #define RGBLIGHT_SAT_STEP 8 - #define RGBLIGHT_VAL_STEP 8 - #define RGBLIGHT_SLEEP -#endif - -// EC11K encoders have a different resolution than other EC11 encoders. -// When using the default resolution of 4, if you notice your encoder skipping -// every other tick, lower the resolution to 2. -#define ENCODER_RESOLUTION 2 - -// The Leader key allows to flexibly assign macros to key sequences. -#define LEADER_PER_KEY_TIMING -#define LEADER_TIMEOUT 350 - -#define TAPPING_TERM 200 - -// Allows to use either side as the master. Look at the documentation for info: -// https://docs.qmk.fm/#/config_options?id=setting-handedness -#define EE_HANDS - -// Allows media codes to properly register in macros and rotary encoder code -#define TAP_CODE_DELAY 10 diff --git a/keyboards/kyria/keymaps/thomasbaart/keymap.c b/keyboards/kyria/keymaps/thomasbaart/keymap.c deleted file mode 100644 index aed9d9762fed..000000000000 --- a/keyboards/kyria/keymaps/thomasbaart/keymap.c +++ /dev/null @@ -1,359 +0,0 @@ -/* Copyright 2019 Thomas Baart - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include QMK_KEYBOARD_H - -uint16_t copy_paste_timer; - -enum layers { - QWERTY = 0, - LOWER, - RAISE, - NAV, - ADJUST -}; - -enum custom_keycodes { - KC_CCCV = SAFE_RANGE -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* - * Base Layer: QWERTY - * - * ,-------------------------------------------. ,-------------------------------------------. - * | ESC | Q | W | E | R | T | | Y | U | I | O | P | | \ | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * | LSFT | A | S | D | F | G | | H | J | K | L | ; : | ' " | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | LCTL | Z | X | C | V | B | CCCV | | | Del |Leader| N | M | , < | . > | / ? | - _ | - * `----------------------+------+------+------+------+ | |------+------+------+------+------+----------------------' - * | GUI | Alt | | Space| Enter| | Bspc | Space| | Tab | AltGr| - * | | | Lower| Shift| Alt | | | Nav | Raise| | | - * `----------------------------------' `----------------------------------' - */ - [QWERTY] = LAYOUT( - KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_PIPE, - KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_CCCV, XXXXXXX, KC_DEL, KC_LEAD, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_MINS, - KC_LGUI, KC_LALT, MO(LOWER), MT(MOD_LSFT, KC_SPC), MT(MOD_LALT, KC_ENT), KC_BSPC, LT(NAV, KC_SPC), MO(RAISE), KC_TAB, KC_RALT - ), -/* - * Lower Layer: Numpad, Media - * - * ,-------------------------------------------. ,-------------------------------------------. - * | | | | VolUp| | | | / ? | 7 & | 8 * | 9 ( | - _ | | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * | | | Prev | Play | Next | | | * | 4 $ | 5 % | 6 ^ | , < | + | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | | | | VolDn| Mute | | | | | | | 0 ) | 1 ! | 2 @ | 3 # | = + | | - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * | | | | | | | | | | | | - * | | | Lower| | | | | Nav | Raise| | | - * `----------------------------------' `----------------------------------' - */ - [LOWER] = LAYOUT( - _______, _______, _______, KC_VOLU, _______, _______, KC_SLSH, KC_7, KC_8, KC_9, KC_MINS, _______, - _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_ASTR, KC_4, KC_5, KC_6, KC_COMM, KC_PLUS, - _______, _______, _______, KC_VOLD, KC_MUTE, _______, _______, _______, _______, _______, KC_0, KC_1, KC_2, KC_3, KC_EQL, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), -/* - * Raise Layer: Symbols - * - * ,-------------------------------------------. ,-------------------------------------------. - * | | ! | @ | { | } | | | | | _ | € | | | \ | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * | | # | $ | ( | ) | ` | | + | - | / | * | % | ' " | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | | % | ^ | [ | ] | ~ | | | | | | & | = | , | . | / ? | - _ | - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * | | | | | | | | | | | | - * | | | Lower| | | | | Nav | Raise| | | - * `----------------------------------' `----------------------------------' - */ - [RAISE] = LAYOUT( - _______, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, _______, KC_UNDS, ALGR(KC_5),_______,_______,KC_BSLS, - _______, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV, KC_PLUS, KC_MINS, KC_SLSH, KC_ASTR, KC_PERC, KC_QUOT, - _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, _______, _______, _______, _______, KC_AMPR, KC_EQL, KC_COMM, KC_DOT, KC_SLSH, KC_MINS, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), -/* - * Navigation Layer - * - * ,-------------------------------------------. ,-------------------------------------------. - * | | | | | | | | PgUp | Home | Up | End | | ScrlLk | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * | | | | | | | | PgDn | Left | Down | Right| | CapsLk | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | | | | | | | | | | | | | | | | | | - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * | | | | | | | | | | | | - * | | | Lower| | | | | Nav | Raise| | | - * `----------------------------------' `----------------------------------' - */ - [NAV] = LAYOUT( - _______, _______, _______, _______, _______, _______, KC_PGUP, KC_HOME, KC_UP, KC_END, _______, KC_SLCK, - _______, _______, _______, _______, _______, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_CAPS, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), -/* - * Adjust Layer - * - * ,-------------------------------------------. ,-------------------------------------------. - * | | | | | | | | | F7 | F8 | F9 | F10 | | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * | | | SAI | HUI | VAI | | | | F4 | F5 | F6 | F11 | | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | | | SAD | HUD | VAD | | | | | | | | F1 | F2 | F3 | F12 | | - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * | | | | | | | | | | | | - * | | | | | | | | | | | | - * `----------------------------------' `----------------------------------' - */ - [ADJUST] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, _______, - _______, _______, RGB_SAI, RGB_HUI, RGB_VAI, _______, _______, KC_F4, KC_F5, KC_F6, KC_F11, _______, - _______, _______, RGB_SAD, RGB_HUD, RGB_VAD, _______, _______, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F12, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), -// /* -// * Layer template -// * -// * ,-------------------------------------------. ,-------------------------------------------. -// * | | | | | | | | | | | | | | -// * |--------+------+------+------+------+------| |------+------+------+------+------+--------| -// * | | | | | | | | | | | | | | -// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| -// * | | | | | | | | | | | | | | | | | | -// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' -// * | | | | | | | | | | | | -// * | | | | | | | | | | | | -// * `----------------------------------' `----------------------------------' -// */ -// [_LAYERINDEX] = LAYOUT( -// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, -// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, -// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, -// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ -// ), -}; - -layer_state_t layer_state_set_user(layer_state_t state) { - return update_tri_layer_state(state, LOWER, RAISE, ADJUST); -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case KC_CCCV: // One key copy/paste - if (record->event.pressed) { - copy_paste_timer = timer_read(); - } else { - if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) { // Hold, copy - tap_code16(LCTL(KC_C)); - } else { // Tap, paste - tap_code16(LCTL(KC_V)); - } - } - break; - } - return true; -} - - -bool is_alt_tab_active = false; -uint16_t alt_tab_timer = 0; - -LEADER_EXTERNS(); - -void matrix_scan_user(void) { - if (is_alt_tab_active) { - if (timer_elapsed(alt_tab_timer) > 1000) { - unregister_code(KC_LALT); - is_alt_tab_active = false; - } - } - - LEADER_DICTIONARY() { - leading = false; - leader_end(); - - SEQ_ONE_KEY(KC_C) { // Inline Code - SEND_STRING("`` " SS_TAP(X_LEFT) SS_TAP(X_LEFT)); - } - SEQ_ONE_KEY(KC_P) { // Invoke Password Manager - SEND_STRING(SS_LCTRL(SS_LALT("\\"))); - } - SEQ_ONE_KEY(KC_S) { // Windows screenshot - SEND_STRING(SS_LGUI("\nS")); - } - SEQ_TWO_KEYS(KC_F, KC_P) { // Fusion Projection prefix - SEND_STRING("[Projection] "); - } - SEQ_TWO_KEYS(KC_B, KC_B) { // Basecone invoice description - SEND_STRING("[Leveranciersnaam] [Factuurnummer]"); - } - SEQ_TWO_KEYS(KC_E, KC_S) { // Support email splitkb - SEND_STRING("support@splitkb.com"); - } - SEQ_TWO_KEYS(KC_E, KC_T) { // Email splitkb - SEND_STRING("thomas@splitkb.com"); - } - SEQ_TWO_KEYS(KC_E, KC_P) { // Email personal - SEND_STRING("mail@thomasbaart.nl"); - } - SEQ_TWO_KEYS(KC_S, KC_D) { // Splitkb documentation - SEND_STRING("https://docs.splitkb.com/"); - } - SEQ_TWO_KEYS(KC_S, KC_V) { // Splitkb VAT number - SEND_STRING("NL210593349B01"); - } - SEQ_TWO_KEYS(KC_B, KC_C) { // Discord bongocat - SEND_STRING(":bongocat:\n"); - } - SEQ_TWO_KEYS(KC_C, KC_B) { // Discord code block - SEND_STRING("```c" SS_LSFT("\n\n") "``` " SS_TAP(X_UP)); - } - SEQ_TWO_KEYS(KC_Y, KC_S) { // Greeting - SEND_STRING("Yours sincerely,\n\nThomas Baart"); - } - SEQ_THREE_KEYS(KC_M, KC_V, KC_G) { // Greeting - SEND_STRING("Met vriendelijke groet,\n\nThomas Baart"); - } - } -} - -#ifdef OLED_DRIVER_ENABLE -oled_rotation_t oled_init_user(oled_rotation_t rotation) { - return OLED_ROTATION_180; -} - -static void render_kyria_logo(void) { - static const char PROGMEM kyria_logo[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,224,240,112,120, 56, 60, 28, 30, 14, 14, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 30, 28, 60, 56,120,112,240,224,192,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0,192,224,240,124, 62, 31, 15, 7, 3, 1,128,192,224,240,120, 56, 60, 28, 30, 14, 14, 7, 7,135,231,127, 31,255,255, 31,127,231,135, 7, 7, 14, 14, 30, 28, 60, 56,120,240,224,192,128, 1, 3, 7, 15, 31, 62,124,240,224,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,240,252,255, 31, 7, 1, 0, 0,192,240,252,254,255,247,243,177,176, 48, 48, 48, 48, 48, 48, 48,120,254,135, 1, 0, 0,255,255, 0, 0, 1,135,254,120, 48, 48, 48, 48, 48, 48, 48,176,177,243,247,255,254,252,240,192, 0, 0, 1, 7, 31,255,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,254,255,255, 1, 1, 7, 30,120,225,129,131,131,134,134,140,140,152,152,177,183,254,248,224,255,255,224,248,254,183,177,152,152,140,140,134,134,131,131,129,225,120, 30, 7, 1, 1,255,255,254, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0,255,255, 0, 0,192,192, 48, 48, 0, 0,240,240, 0, 0, 0, 0, 0, 0,240,240, 0, 0,240,240,192,192, 48, 48, 48, 48,192,192, 0, 0, 48, 48,243,243, 0, 0, 0, 0, 0, 0, 48, 48, 48, 48, 48, 48,192,192, 0, 0, 0, 0, 0, - 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,127,255,255,128,128,224,120, 30,135,129,193,193, 97, 97, 49, 49, 25, 25,141,237,127, 31, 7,255,255, 7, 31,127,237,141, 25, 25, 49, 49, 97, 97,193,193,129,135, 30,120,224,128,128,255,255,127, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0, 63, 63, 3, 3, 12, 12, 48, 48, 0, 0, 0, 0, 51, 51, 51, 51, 51, 51, 15, 15, 0, 0, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 63, 63, 48, 48, 0, 0, 12, 12, 51, 51, 51, 51, 51, 51, 63, 63, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 15, 63,255,248,224,128, 0, 0, 3, 15, 63,127,255,239,207,141, 13, 12, 12, 12, 12, 12, 12, 12, 30,127,225,128, 0, 0,255,255, 0, 0,128,225,127, 30, 12, 12, 12, 12, 12, 12, 12, 13,141,207,239,255,127, 63, 15, 3, 0, 0,128,224,248,255, 63, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3, 7, 15, 62,124,248,240,224,192,128, 1, 3, 7, 15, 30, 28, 60, 56,120,112,112,224,224,225,231,254,248,255,255,248,254,231,225,224,224,112,112,120, 56, 60, 28, 30, 15, 7, 3, 1,128,192,224,240,248,124, 62, 15, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 15, 14, 30, 28, 60, 56,120,112,112,112,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,112,112,112,120, 56, 60, 28, 30, 14, 15, 7, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }; - oled_write_raw_P(kyria_logo, sizeof(kyria_logo)); -} - -static void render_qmk_logo(void) { - static const char PROGMEM qmk_logo[] = { - 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, - 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, - 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0}; - - oled_write_P(qmk_logo, false); -} - -static void render_status(void) { - // QMK Logo and version information - render_qmk_logo(); - oled_write_P(PSTR(" Kyria rev1.0\n\n"), false); - - // Host Keyboard Layer Status - oled_write_P(PSTR("Layer: "), false); - switch (get_highest_layer(layer_state)) { - case QWERTY: - oled_write_P(PSTR("Default\n"), false); - break; - case LOWER: - oled_write_P(PSTR("Lower\n"), false); - break; - case RAISE: - oled_write_P(PSTR("Raise\n"), false); - break; - case NAV: - oled_write_P(PSTR("Navigation\n"), false); - break; - case ADJUST: - oled_write_P(PSTR("Adjust\n"), false); - break; - default: - oled_write_P(PSTR("Undefined\n"), false); - } - - // Host Keyboard LED Status - uint8_t led_usb_state = host_keyboard_leds(); - oled_write_P(IS_LED_ON(led_usb_state, USB_LED_NUM_LOCK) ? PSTR("NUMLCK ") : PSTR(" "), false); - oled_write_P(IS_LED_ON(led_usb_state, USB_LED_CAPS_LOCK) ? PSTR("CAPLCK ") : PSTR(" "), false); - oled_write_P(IS_LED_ON(led_usb_state, USB_LED_SCROLL_LOCK) ? PSTR("SCRLCK ") : PSTR(" "), false); -} - -void oled_task_user(void) { - if (is_keyboard_master()) { - render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) - } else { - render_kyria_logo(); - } -} -#endif - -#ifdef ENCODER_ENABLE -bool encoder_update_user(uint8_t index, bool clockwise) { - if (index == 0) { - switch (biton32(layer_state)) { - case QWERTY: - // History scrubbing. For Adobe products, hold shift while moving - // backward to go forward instead. - if (clockwise) { - tap_code16(C(KC_Z)); - } else { - tap_code16(C(KC_Y)); - } - break; - default: - // Switch between windows on Windows with alt tab. - if (clockwise) { - if (!is_alt_tab_active) { - is_alt_tab_active = true; - register_code(KC_LALT); - } - alt_tab_timer = timer_read(); - tap_code16(KC_TAB); - } else { - tap_code16(S(KC_TAB)); - } - break; - } - } else if (index == 1) { - switch (biton32(layer_state)) { - case QWERTY: - // Scrolling with PageUp and PgDn. - if (clockwise) { - tap_code(KC_PGDN); - } else { - tap_code(KC_PGUP); - } - break; - default: - // Volume control. - if (clockwise) { - tap_code(KC_VOLU); - } else { - tap_code(KC_VOLD); - } - break; - } - } - return true; -} -#endif diff --git a/keyboards/kyria/keymaps/thomasbaart/rules.mk b/keyboards/kyria/keymaps/thomasbaart/rules.mk deleted file mode 100644 index 9b8e2941987c..000000000000 --- a/keyboards/kyria/keymaps/thomasbaart/rules.mk +++ /dev/null @@ -1,5 +0,0 @@ -OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays -ENCODER_ENABLE = yes # Enables the use of one or more encoders -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -LEADER_ENABLE = yes # Enable the Leader Key feature -MOUSEKEY_ENABLE = no diff --git a/keyboards/kyria/keymaps/winternebs/config.h b/keyboards/kyria/keymaps/winternebs/config.h deleted file mode 100755 index db14011d1108..000000000000 --- a/keyboards/kyria/keymaps/winternebs/config.h +++ /dev/null @@ -1,31 +0,0 @@ -/* Copyright 2019 Thomas Baart - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#pragma once - -#define OLED_FONT_H "keyboards/kyria/keymaps/winternebs/glcdfont.c" -#define OLED_FONT_END 127 -#ifdef OLED_DRIVER_ENABLE - #define OLED_DISPLAY_128X64 -#endif - -#define FORCE_NKRO -#define ENCODER_RESOLUTION 4 - -#define NO_ACTION_MACRO -#define NO_ACTION_FUNCTION -#define NO_ACTION_ONESHOT -#define TAPPING_FORCE_HOLD -#define IGNORE_MOD_TAP_INTERRUPT diff --git a/keyboards/kyria/keymaps/winternebs/keymap.c b/keyboards/kyria/keymaps/winternebs/keymap.c deleted file mode 100755 index 5a2ea83337de..000000000000 --- a/keyboards/kyria/keymaps/winternebs/keymap.c +++ /dev/null @@ -1,726 +0,0 @@ -/* Copyright 2019 Thomas Baart - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include QMK_KEYBOARD_H - -#ifdef CONSOLE_ENABLE - #include -#endif -enum custom_keycodes { - QWERTY = SAFE_RANGE, - WORKMAN, - ADJUST, - SBKSP, - ENDW -}; - -enum layers { - _QWERTY = 0, - _WORKMAN, - _LOWER, - _RAISE, - _ADJUST -}; -#define RAISE LT(_RAISE, KC_ENT) -#define LOWER MO(_LOWER) -#define HOME_A KC_A -#define HOME_S KC_S -#define HOME_H CTL_T(KC_H) -#define HOME_T SFT_T(KC_T) -#define HOME_N SFT_T(KC_N) -#define HOME_E CTL_T(KC_E) -#define HOME_O KC_O -#define HOME_I KC_I -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* - * Base Layer: QWERTY - * - * ,-------------------------------------------. ,-------------------------------------------. - * | ESC | Q | W | E | R | T | | Y | U | I | O | P | | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * | TAB | A | S | D | F | G | | H | J | K | L | ; | ' | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | CTRL | Z | X | C | V | B | | | | | | N | M | , | . | / | ENTER | - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * | GUI | ALT | LOWER| Space| | | SHIFT| Bksp | RAISE| | | - * `----------------------------------' `----------------------------------' - */ - [_QWERTY] = LAYOUT( - KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, _______, - KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, _______, _______, _______, _______, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, - KC_LGUI, KC_LALT, LOWER, KC_SPC, _______, KC_LSFT, KC_BSPC, RAISE, _______, _______ - ), - /* - * Workman Layer - * - * ,-------------------------------------------. ,-------------------------------------------. - * | ESC | Q | D | R | W | B | | J | F | U | P | ; | Bksp | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * | TAB | A | S | H | T | G | | Y | N | E | O | I | ' | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | | Z | X | M | C | V | SHIFT| Space| | | ENTER| K | L | , | . | / | | - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * | GUI | ESC | LOWER| Space| SWAP | | SWAP | Bksp | RAISE| | | - * `----------------------------------' `----------------------------------' - */ - [_WORKMAN] = LAYOUT( - KC_ESC, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_BSPC, - KC_TAB, HOME_A, HOME_S, HOME_H, HOME_T, KC_G, KC_Y, HOME_N, HOME_E, HOME_O, HOME_I, KC_QUOT, - XXXXXXX, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_LSFT, KC_SPC, SH_MON, KC_ENT, KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH, XXXXXXX, - KC_LGUI, KC_LALT, LOWER, KC_SPC, SH_MON, SH_MON, KC_BSPC, RAISE, XXXXXXX, _______ - ), -/* - * Lower Layer: NUM/symb - * - * ,-------------------------------------------. ,-------------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * | DEL | $ | + | ( | ) | @ | | | | - | = | _ | * | \ | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | | ! | # | { | } | ~ | | | | | | & | [ | ] | % | ^ | | - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * |prints| | | | | | | | | | | - * `----------------------------------' `----------------------------------' - */ - [_LOWER] = LAYOUT( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, - KC_DEL, KC_DLR, KC_PLUS, KC_LPRN, KC_RPRN, KC_AT, KC_PIPE, KC_MINS, KC_EQL, KC_UNDS, KC_ASTR, KC_BSLS, - _______, KC_EXLM, KC_HASH, KC_LCBR, KC_RCBR, KC_TILD, _______, _______, _______, _______, KC_AMPR, KC_LBRC, KC_RBRC, KC_PERC, KC_CIRC, _______, - KC_PSCR, _______, _______, _______, _______, _______, KC_BSPC, _______, _______, _______ - ), - /* - * Raise Layer: VIM Movement - * - * ,-------------------------------------------. ,-------------------------------------------. - * | | | PgDn | | Word | Back | | Down | | PgUp | | | | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * | | | | Left | | | | | | End | | | | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | | | | | | | | | | | | Up | Right| | | | | - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * | | | | | | | | | | | | - * | | | | | | | | | | | | - * `----------------------------------' `----------------------------------' - */ - [_RAISE] = LAYOUT( - _______, _______, KC_PGDN, _______, C(KC_RGHT), C(KC_LEFT), KC_DOWN, _______, KC_PGUP, _______, _______, _______, - _______, _______, _______, KC_LEFT, _______, _______, _______, _______, ENDW, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, KC_RGHT, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - /* - * Layer template - * - * ,-------------------------------------------. ,-------------------------------------------. - * | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | - * |--------+------+------+------+------+------| |------+------+------+------+------+--------| - * | | | | | | | | | | | | | | - * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| - * | | | | |QWERTY|WRKMAN| | | | | | | | | | | | - * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' - * | | | | | | | | | | | | - * | | | | | | | | | | | | - * `----------------------------------' `----------------------------------' - */ - [_ADJUST] = LAYOUT( - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, QWERTY, WORKMAN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), -// /* -// * Layer template -// * -// * ,-------------------------------------------. ,-------------------------------------------. -// * | | | | | | | | | | | | | | -// * |--------+------+------+------+------+------| |------+------+------+------+------+--------| -// * | | | | | | | | | | | | | | -// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| -// * | | | | | | | | | | | | | | | | | | -// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' -// * | | | | | | | | | | | | -// * | | | | | | | | | | | | -// * `----------------------------------' `----------------------------------' -// */ -// [_LAYERINDEX] = LAYOUT( -// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, -// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, -// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, -// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ -// ), -}; - - -layer_state_t layer_state_set_user(layer_state_t state) { - return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); -} - -#ifdef ENCODER_ENABLE -bool encoder_update_user(uint8_t index, bool clockwise) { - if (index == 0) { - // Volume control - if (clockwise) { - tap_code(KC_RGHT); - } else { - tap_code(KC_LEFT); - } - } - else if (index == 1) { - // Page up/Page down - if (clockwise) { - tap_code(KC_DOWN); - } else { - tap_code(KC_UP); - } - } - return true; -} -#endif -#ifdef OLED_DRIVER_ENABLE -bool left = false; -bool right = false; -bool lastl = false; -bool lastr = false; -#endif -bool bksp = false; -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - #ifdef CONSOLE_ENABLE - uprintf("KL: kc: %u, col: %u, row: %u, pressed: %u, total: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed, record->event.key.col + 10 * record->event.key.row); - #endif - #ifdef OLED_DRIVER_ENABLE - if(record->event.pressed){ - uint8_t n = record->event.key.col + 10 * record->event.key.row; - if (n<40) { - left = true; - } - else { - right = true; - } - } - #endif - switch (keycode) { - case QWERTY: - if (record->event.pressed) { - set_single_persistent_default_layer(_QWERTY); - } - return false; - break; - case WORKMAN: - if (record->event.pressed) { - set_single_persistent_default_layer(_WORKMAN); - } - return false; - break; - case SBKSP: - if (record->event.pressed) { - register_code(KC_LSFT); - bksp = true; - } - else { - unregister_code(KC_LSFT); - if (bksp) { - tap_code(KC_BSPC); - } - } - return false; - break; - case ENDW: - if (record->event.pressed) { - register_code(KC_LCTL); - tap_code(KC_RGHT); - unregister_code(KC_LCTL); - tap_code(KC_LEFT); - } - } - bksp = false; - return true; - -} - -#ifdef OLED_DRIVER_ENABLE -oled_rotation_t oled_init_user(oled_rotation_t rotation) { - return OLED_ROTATION_180; -} - - - -char wpm_str[10]; -// WPM-responsive animation stuff here -#define IDLE_FRAMES 2 -#define IDLE_SPEED 10 // below this wpm value your animation will idle - - -#define TAP_FRAMES 3 - -#define ANIM_FRAME_DURATION 400 // how long each frame lasts in ms -// #define SLEEP_TIMER 60000 // should sleep after this period of 0 wpm, needs fixing -#define ANIM_SIZE 896 // number of bytes in array, minimize for adequate firmware size, max is 1024 - -uint32_t anim_timer = 0; -uint32_t anim_sleep = 0; -uint8_t current_idle_frame = 0; -// uint8_t current_prep_frame = 0; // uncomment if PREP_FRAMES >1 -uint8_t current_tap_frame = 0; -// Credit to obosob for initial animation approach. -static void render_anim(void) { - static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = { - { -// 'bongo0', 128x56px -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x60, 0x20, 0x30, 0x30, 0x10, -0x18, 0x08, 0x0c, 0x04, 0x04, 0x04, 0x86, 0x82, 0xc2, 0x42, 0x22, 0x12, 0x12, 0x12, 0x12, 0x14, -0x14, 0x14, 0x14, 0x14, 0x18, 0x19, 0x19, 0x11, 0x11, 0x10, 0x10, 0x00, 0x20, 0xf0, 0x2f, 0x24, -0x66, 0xda, 0xd1, 0x11, 0x91, 0x91, 0x11, 0x11, 0x11, 0x12, 0x1e, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x20, 0x18, 0x04, 0x02, 0x01, 0x80, 0x80, 0x00, 0x40, 0x40, 0xc0, 0x40, 0x30, -0x90, 0x88, 0x44, 0x42, 0x42, 0x41, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0xf0, 0x88, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x03, 0x06, 0x08, 0x71, 0x81, 0x02, 0x06, 0x04, 0x08, 0x10, 0x20, 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, 0x03, 0x82, 0xe2, 0x39, 0x09, 0x05, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x39, -0x1c, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, -0xe0, 0xf0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x18, 0x20, 0x40, 0x80, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, -0x06, 0x38, 0xc0, 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, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x40, 0x20, 0x30, -0x18, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, -0x02, 0x04, 0x08, 0x08, 0x10, 0x08, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xf3, 0x06, 0x0c, 0x10, -0x20, 0x20, 0xc1, 0xff, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x01, 0x02, 0x02, 0xfa, 0x06, 0x06, 0x03, 0x03, 0x02, 0x02, 0x04, 0x18, -0xf0, 0x80, 0xc0, 0x60, 0x20, 0x10, 0x18, 0x0c, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x10, 0x10, -0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x40, -0x40, 0x40, 0x80, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x02, 0x02, 0x02, 0x03, 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, 0xf8, -0x8e, 0x03, 0x01, 0x01, 0x01, 0x03, 0x06, 0x9c, 0xf0, 0x80, 0xc0, 0x40, 0x60, 0x20, 0x30, 0x10, -0x08, 0x0d, 0x07, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x07, 0x04, 0x00, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, -0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x01, 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 - }, - { -// 'bongo1', 128x56px -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x40, -0x60, 0x20, 0x20, 0x20, 0x20, 0x00, 0x10, 0x10, 0x10, 0x90, 0x90, 0x90, 0x90, 0x90, 0xa0, 0xa0, -0xa0, 0xa0, 0xa0, 0xc0, 0xc0, 0xc1, 0x80, 0x80, 0x81, 0x81, 0x02, 0x06, 0x84, 0x7c, 0x5f, 0x58, -0x4c, 0x46, 0x42, 0x42, 0x42, 0x43, 0x61, 0x23, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 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, 0xa0, 0x20, 0x20, -0x30, 0x10, 0x10, 0x18, 0x08, 0x08, 0x0c, 0x04, 0x06, 0x02, 0x03, 0x01, 0x08, 0x18, 0x18, 0x28, -0x68, 0x44, 0x84, 0x84, 0x86, 0x02, 0x02, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x09, 0x07, 0x01, 0x01, 0x03, -0x06, 0x06, 0x10, 0x3c, 0x4c, 0xc8, 0x88, 0x08, 0x08, 0x18, 0x10, 0x30, 0x60, 0xc0, 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, 0x01, 0x01, -0x01, 0x01, 0x81, 0xc1, 0x21, 0x31, 0x11, 0x0d, 0x05, 0x01, 0x03, 0x02, 0x06, 0x0e, 0xc6, 0xe4, -0x04, 0x04, 0x04, 0x06, 0x02, 0x03, 0x01, 0x03, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, -0x81, 0x01, 0x01, 0x01, 0x00, 0x00, 0x07, 0x0c, 0x30, 0x40, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x1e, 0x30, 0x40, 0x80, 0x00, 0x00, 0x00, 0x01, 0x07, -0x1c, 0x70, 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, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x40, 0x20, 0x30, -0x18, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x02, 0x04, 0x08, 0x08, 0x08, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, -0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x02, 0x02, -0x06, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x0c, 0x04, 0x0c, 0x3c, 0x15, 0xd3, 0x72, 0x10, 0x20, -0x20, 0x20, 0x21, 0x23, 0x26, 0x24, 0x2c, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x01, 0x02, 0x02, 0xfa, 0x06, 0x06, 0x03, 0x03, 0x02, 0x02, 0x04, 0x18, -0xf0, 0x80, 0xc0, 0x60, 0x20, 0x10, 0x18, 0x0c, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x10, 0x10, -0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x40, -0x40, 0x40, 0x80, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x02, 0x02, 0x02, 0x03, 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, 0xf8, -0x8e, 0x03, 0x01, 0x01, 0x01, 0x03, 0x06, 0x9c, 0xf0, 0x80, 0xc0, 0x40, 0x60, 0x20, 0x30, 0x10, -0x08, 0x0d, 0x07, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x07, 0x04, 0x00, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, -0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x01, 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 - } - }; - static const char PROGMEM prep[][ANIM_SIZE] = { - { -// 'bongo2', 128x56px -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x60, 0x20, 0x30, 0x30, 0x10, -0x18, 0x08, 0x0c, 0x04, 0x04, 0x04, 0x86, 0x82, 0xc2, 0x42, 0x22, 0x12, 0x12, 0x12, 0x12, 0x14, -0x14, 0x14, 0x14, 0x14, 0x18, 0x19, 0x19, 0x11, 0x11, 0x10, 0x10, 0x00, 0x20, 0xf0, 0x2f, 0x24, -0x66, 0xda, 0xd1, 0x11, 0x91, 0x91, 0x11, 0x11, 0x11, 0x12, 0x1e, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x20, 0x18, 0x04, 0x02, 0x01, 0x80, 0x80, 0x00, 0x40, 0x40, 0xc0, 0x40, 0x30, -0x90, 0x88, 0x44, 0x42, 0x42, 0x41, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0xf0, 0x88, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x03, 0x06, 0x08, 0x71, 0x81, 0x02, 0x06, 0x04, 0x08, 0x10, 0x20, 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, 0xe0, 0x18, 0x08, 0x0c, 0x04, 0x04, -0x04, 0x07, 0x0a, 0x92, 0xf9, 0xc9, 0x05, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x39, -0x1c, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, -0xe0, 0xf0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x46, 0x78, 0x20, 0x20, 0x20, 0x20, 0x40, -0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, -0x06, 0x38, 0xc0, 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, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, -0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1e, 0x64, 0xc4, 0x04, 0x04, -0x00, 0x02, 0x03, 0x01, 0x00, 0x01, 0x03, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xe0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x60, 0x20, -0x30, 0x19, 0x0e, 0x38, 0xcc, 0x08, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xf3, 0x06, 0x0c, 0x10, -0x20, 0x20, 0xc1, 0xff, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0x05, 0x07, 0x0e, -0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x10, 0x10, -0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x40, -0x40, 0x40, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x83, 0x87, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x38, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 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, -0x01, 0x01, 0x03, 0x02, 0x02, 0x02, 0x03, 0x03, 0x02, 0x04, 0x04, 0x04, 0x04, 0x07, 0x04, 0x00, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, -0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - } - }; - static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE] = { - { - // 'bongo3', 128x56px -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x60, 0x20, 0x30, 0x30, 0x10, -0x18, 0x08, 0x0c, 0x04, 0x04, 0x04, 0x86, 0x82, 0xc2, 0x42, 0x22, 0x12, 0x12, 0x12, 0x12, 0x14, -0x14, 0x14, 0x14, 0x14, 0x18, 0x19, 0x19, 0x11, 0x11, 0x10, 0x10, 0x00, 0x20, 0xf0, 0x2f, 0x24, -0x66, 0xda, 0xd1, 0x11, 0x91, 0x91, 0x11, 0x11, 0x11, 0x12, 0x1e, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0xc0, 0x20, 0x18, 0x04, 0x02, 0x01, 0x80, 0x80, 0x00, 0x40, 0x40, 0xc0, 0x40, 0x30, -0x90, 0x88, 0x44, 0x42, 0x42, 0x41, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0xf0, 0x88, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x03, 0x06, 0x08, 0x71, 0x81, 0x02, 0x06, 0x04, 0x08, 0x10, 0x20, 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, 0x1f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x03, 0x82, 0xe2, 0x39, 0x09, 0x05, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x39, -0x1c, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, -0xe0, 0xf0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x46, 0x78, 0x20, 0x20, 0x20, 0x20, 0x40, -0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, -0x06, 0x38, 0xc0, 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, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0xe0, 0xf8, 0xf8, 0xf0, -0xe0, 0xe0, 0xc0, 0xc0, 0x80, 0x01, 0x03, 0x1f, 0x0f, 0x07, 0x00, 0x80, 0xc0, 0x40, 0x20, 0x30, -0x18, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xe0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x60, 0x20, -0x30, 0x19, 0x0e, 0x38, 0xcc, 0x08, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xf3, 0x06, 0x0c, 0x10, -0x20, 0x20, 0xc1, 0xff, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x3f, 0x3f, 0x3f, -0x1f, 0x1f, 0x0f, 0x07, 0x01, 0x02, 0x02, 0xfa, 0x06, 0x06, 0x03, 0x03, 0x02, 0x02, 0x04, 0x18, -0xf0, 0x80, 0xc0, 0x60, 0x20, 0x10, 0x18, 0x0c, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x10, 0x10, -0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x40, -0x40, 0x40, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x83, 0x87, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x38, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x80, 0xe0, 0xf0, 0xf8, 0xf9, 0xe1, 0x81, 0x02, 0x02, 0x02, 0x03, 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, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x03, 0x02, 0x02, 0x02, 0x03, 0x03, 0x02, 0x04, 0x04, 0x04, 0x04, 0x07, 0x04, 0x00, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, -0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x08, 0x1c, 0x1f, 0x1f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }, - { - // 'bongo4', 128x56px -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x60, 0x20, 0x30, 0x30, 0x10, -0x18, 0x08, 0x0c, 0x04, 0x04, 0x04, 0x86, 0x82, 0xc2, 0x42, 0x22, 0x12, 0x12, 0x12, 0x12, 0x14, -0x14, 0x14, 0x14, 0x14, 0x18, 0x19, 0x19, 0x11, 0x11, 0x10, 0x10, 0x00, 0x20, 0xf0, 0x2f, 0x24, -0x66, 0xda, 0xd1, 0x11, 0x91, 0x91, 0x11, 0x11, 0x11, 0x12, 0x1e, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x20, 0x18, 0x04, 0x02, 0x01, 0x80, 0x80, 0x00, 0x40, 0x40, 0xc0, 0x40, 0x30, -0x90, 0x88, 0x44, 0x42, 0x42, 0x41, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0xf0, 0x88, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x03, 0x06, 0x08, 0x71, 0x81, 0x02, 0x06, 0x04, 0x08, 0x10, 0x20, 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, 0xe0, 0x18, 0x08, 0x0c, 0x04, 0x04, -0x04, 0x07, 0x0a, 0x92, 0xf9, 0xc9, 0x05, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x39, -0x1c, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, -0xe0, 0xf0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x18, 0x20, 0x40, 0x80, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, -0x06, 0x38, 0xc0, 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, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, -0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1e, 0x64, 0xc4, 0x04, 0x04, -0x00, 0x02, 0x03, 0x01, 0x00, 0x01, 0x03, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, -0x02, 0x04, 0x08, 0x08, 0x10, 0x08, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xf3, 0x06, 0x0c, 0x10, -0x20, 0x20, 0xc1, 0xff, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0x05, 0x07, 0x0e, -0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x10, 0x10, -0x10, 0x10, 0x10, 0x10, 0x20, 0xa0, 0xa0, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x40, -0x40, 0x40, 0x80, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x7c, 0x7f, 0x7f, 0x7f, 0x3f, 0x3f, 0x3e, 0x1e, 0x1e, 0x1c, 0x0c, 0x00, 0xf8, -0x8e, 0x03, 0x01, 0x01, 0x01, 0x03, 0x06, 0x9c, 0xf0, 0x80, 0xc0, 0x40, 0x60, 0x20, 0x30, 0x10, -0x08, 0x0d, 0x07, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x07, 0x04, 0x00, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, -0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x30, 0x38, 0x38, 0x78, 0x7c, 0x7e, 0xff, 0xff, 0xff, 0xfc, -0xf1, 0xe1, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x03, 0x07, 0x06, 0x0e, -0x1e, 0x3e, 0x3e, 0x7e, 0x7e, 0x1e, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }, - { -// 'bongo5', 128x56px -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x60, 0x20, 0x30, 0x30, 0x10, -0x18, 0x08, 0x0c, 0x04, 0x04, 0x04, 0x86, 0x82, 0xc2, 0x42, 0x22, 0x12, 0x12, 0x12, 0x12, 0x14, -0x14, 0x14, 0x14, 0x14, 0x18, 0x19, 0x19, 0x11, 0x11, 0x10, 0x10, 0x00, 0x20, 0xf0, 0x2f, 0x24, -0x66, 0xda, 0xd1, 0x11, 0x91, 0x91, 0x11, 0x11, 0x11, 0x12, 0x1e, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0xc0, 0x20, 0x18, 0x04, 0x02, 0x01, 0x80, 0x80, 0x00, 0x40, 0x40, 0xc0, 0x40, 0x30, -0x90, 0x88, 0x44, 0x42, 0x42, 0x41, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0xf0, 0x88, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x03, 0x06, 0x08, 0x71, 0x81, 0x02, 0x06, 0x04, 0x08, 0x10, 0x20, 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, 0x1f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x03, 0x82, 0xe2, 0x39, 0x09, 0x05, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x39, -0x1c, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, -0xe0, 0xf0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x18, 0x20, 0x40, 0x80, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, -0x06, 0x38, 0xc0, 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, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0xe0, 0xf8, 0xf8, 0xf0, -0xe0, 0xe0, 0xc0, 0xc0, 0x80, 0x01, 0x03, 0x1f, 0x0f, 0x07, 0x00, 0x80, 0xc0, 0x40, 0x20, 0x30, -0x18, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, -0x02, 0x04, 0x08, 0x08, 0x10, 0x08, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xf3, 0x06, 0x0c, 0x10, -0x20, 0x20, 0xc1, 0xff, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x3f, 0x3f, 0x3f, -0x1f, 0x1f, 0x0f, 0x07, 0x01, 0x02, 0x02, 0xfa, 0x06, 0x06, 0x03, 0x03, 0x02, 0x02, 0x04, 0x18, -0xf0, 0x80, 0xc0, 0x60, 0x20, 0x10, 0x18, 0x0c, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x10, 0x10, -0x10, 0x10, 0x10, 0x10, 0x20, 0xa0, 0xa0, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x40, -0x40, 0x40, 0x80, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x80, 0xe0, 0xf0, 0xf8, 0xf9, 0xe1, 0x81, 0x02, 0x02, 0x02, 0x03, 0x01, 0x01, -0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x7c, 0x7f, 0x7f, 0x7f, 0x3f, 0x3f, 0x3e, 0x1e, 0x1e, 0x1c, 0x0c, 0x00, 0xf8, -0x8e, 0x03, 0x01, 0x01, 0x01, 0x03, 0x06, 0x9c, 0xf0, 0x80, 0xc0, 0x40, 0x60, 0x20, 0x30, 0x10, -0x08, 0x0d, 0x07, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x07, 0x04, 0x00, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, -0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x08, 0x1c, 0x1f, 0x1f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x30, 0x38, 0x38, 0x78, 0x7c, 0x7e, 0xff, 0xff, 0xff, 0xfc, -0xf1, 0xe1, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x03, 0x07, 0x06, 0x0e, -0x1e, 0x3e, 0x3e, 0x7e, 0x7e, 0x1e, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - } - }; - - //assumes 1 frame prep stage - void animation_phase(void) { - if(get_current_wpm() <= IDLE_SPEED){ - current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES; - oled_write_raw_P(idle[abs((IDLE_FRAMES-1)-current_idle_frame)], ANIM_SIZE); - } - else { - // if is true 2 frames in a row make it false; - if(left && !lastl && right && !lastr) { - oled_write_raw_P(tap[2], ANIM_SIZE); - } - else if (left && !lastl) { - oled_write_raw_P(tap[0], ANIM_SIZE); - } - else if (right && !lastr) { - oled_write_raw_P(tap[1], ANIM_SIZE); - } - else { - oled_write_raw_P(prep[0], ANIM_SIZE); - left = false; - right = false; - } - lastl = left; - lastr = right; - left = false; - right = false; - } - } - if(get_current_wpm() != 000) { - oled_on(); // not essential but turns on animation OLED with any alpha keypress - if(timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { - anim_timer = timer_read32(); - animation_phase(); - } - anim_sleep = timer_read32(); - } else { - if(timer_elapsed32(anim_sleep) > OLED_TIMEOUT) { - oled_off(); - } else { - if(timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { - anim_timer = timer_read32(); - animation_phase(); - } - } - } -} -bool wpm_keycode_user(uint16_t keycode) { - return true; -} -static void render_logo(void) { - oled_set_cursor(0,0); - oled_write_P(PSTR(" play asc "), false); - oled_set_cursor(3,3); - oled_write_P(PSTR(" play asc "), false); - oled_set_cursor(6,6); - oled_write_P(PSTR(" play asc "), false); -} -void oled_task_user(void) { - if (is_keyboard_master()) { - render_anim(); - oled_set_cursor(0,7); - sprintf(wpm_str, "APM: %03d ", get_current_wpm()); - oled_write(wpm_str, false); - switch (get_highest_layer(layer_state)) { - case _QWERTY: - oled_write_ln_P(PSTR("base"), false); - break; - case _LOWER: - oled_write_ln_P(PSTR("LOWER"), false); - break; - case _RAISE: - oled_write_ln_P(PSTR("RAISE"), false); - break; - case _ADJUST: - oled_write_ln_P(PSTR("ADJUST"), false); - break; - default: - oled_write_ln_P(PSTR("Undefined"), false); - } - } else { - render_logo(); - oled_scroll_left(); - - } -} -#endif diff --git a/keyboards/kyria/keymaps/winternebs/rules.mk b/keyboards/kyria/keymaps/winternebs/rules.mk deleted file mode 100755 index 5831e23cbad5..000000000000 --- a/keyboards/kyria/keymaps/winternebs/rules.mk +++ /dev/null @@ -1,12 +0,0 @@ -OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays -ENCODER_ENABLE = yes # Enables the use of one or more -NKRO_ENABLE = yes -WPM_ENABLE = yes -CONSOLE_ENABLE = no # Console for debug -AUDIO_ENABLE = no # Audio output -SPACE_CADET_ENABLE = no -EXTRAKEY_ENABLE = no -MOUSEKEY_ENABLE = no -BOOTMAGIC_ENABLE = no -SWAP_HANDS_ENABLE = yes -LTO_ENABLE = yes diff --git a/keyboards/kyria/readme.md b/keyboards/kyria/readme.md deleted file mode 100644 index ed4b14508191..000000000000 --- a/keyboards/kyria/readme.md +++ /dev/null @@ -1,21 +0,0 @@ -# Kyria - -![Kyria](https://cdn.shopify.com/s/files/1/0227/9171/6941/products/PlateCase_f1870016-98b8-43a9-8aed-3eaf073b367b_900x.jpg?v=1568934600) - -An ergonomical 40% split keyboard - -Keyboard Maintainer: [splitkb.com](https://github.com/splitkb) -Hardware Supported: Pro Micro 5V/16MHz and compatible. -Hardware Availability: [splitkb.com](https://splitkb.com) and partners. - -Make example for this keyboard (after setting up your build environment): - - make kyria:default - -Example of flashing this keyboard: - - make kyria/rev1:default:flash - -See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). - -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). diff --git a/keyboards/kyria/rev1/config.h b/keyboards/kyria/rev1/config.h deleted file mode 100644 index e832db105b69..000000000000 --- a/keyboards/kyria/rev1/config.h +++ /dev/null @@ -1,64 +0,0 @@ -/* -Copyright 2019 Thomas Baart - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x0000 -#define DEVICE_VER 0x0001 -#define MANUFACTURER splitkb -#define PRODUCT Kyria Keyboard - -/* key matrix size */ -/* Rows are doubled up */ -#define MATRIX_ROWS 8 -#define MATRIX_COLS 8 - -// wiring -#define MATRIX_ROW_PINS { B4, E6, D7, D4 } -#define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, F5, F4 } -#define UNUSED_PINS - -#define ENCODERS_PAD_A { C6 } -#define ENCODERS_PAD_B { B5 } -#define ENCODERS_PAD_A_RIGHT { B5 } -#define ENCODERS_PAD_B_RIGHT { C6 } - -/* COL2ROW, ROW2COL*/ -#define DIODE_DIRECTION COL2ROW - -/* define if matrix has ghost (lacks anti-ghosting diodes) */ -//#define MATRIX_HAS_GHOST - -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 5 - -/* - * 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 -#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 diff --git a/keyboards/kyria/rev1/rev1.c b/keyboards/kyria/rev1/rev1.c deleted file mode 100644 index 622ac279bdeb..000000000000 --- a/keyboards/kyria/rev1/rev1.c +++ /dev/null @@ -1,17 +0,0 @@ -#include "rev1.h" - -#ifdef SWAP_HANDS_ENABLE -__attribute__ ((weak)) - -const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { - {{0, 4}, {1, 4}, {2, 4}, {3, 4}, {4, 4}, {5, 4}, {6, 4}, {7, 4}}, - {{0, 5}, {1, 5}, {2, 5}, {3, 5}, {4, 5}, {5, 5}, {6, 5}, {7, 5}}, - {{0, 6}, {1, 6}, {2, 6}, {3, 6}, {4, 6}, {5, 6}, {6, 6}, {7, 6}}, - {{0, 7}, {1, 7}, {2, 7}, {3, 7}, {4, 7}, {5, 7}, {6, 7}, {7, 7}}, - {{0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0}, {6, 0}, {7, 0}}, - {{0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}, {5, 1}, {6, 1}, {7, 1}}, - {{0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}, {5, 2}, {6, 2}, {7, 2}}, - {{0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}, {5, 3}, {6, 3}, {7, 3}} -}; - -#endif diff --git a/keyboards/kyria/rev1/rev1.h b/keyboards/kyria/rev1/rev1.h deleted file mode 100644 index 44060a153662..000000000000 --- a/keyboards/kyria/rev1/rev1.h +++ /dev/null @@ -1,82 +0,0 @@ -/* Copyright 2019 Thomas Baart - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#pragma once - -#include "kyria.h" - -/* This a shortcut to help you visually see your layout. - * - * The first section contains all of the arguments representing the physical - * layout of the board and position of the keys. - * - * The second converts the arguments into a two-dimensional array which - * represents the switch matrix. - */ -#define LAYOUT( \ - L00, L01, L02, L03, L04, L05, R06, R07, R08, R09, R10, R11, \ - L12, L13, L14, L15, L16, L17, R18, R19, R20, R21, R22, R23, \ - L24, L25, L26, L27, L28, L29, L30, L31, R32, R33, R34, R35, R36, R37, R38, R39, \ - L40, L41, L42, L43, L44, R45, R46, R47, R48, R49 \ -) \ -{ \ - { KC_NO, KC_NO, L05, L04, L03, L02, L01, L00 }, \ - { KC_NO, KC_NO, L17, L16, L15, L14, L13, L12 }, \ - { L31, L30, L29, L28, L27, L26, L25, L24 }, \ - { L44, L43, L42, L41, L40, KC_NO, KC_NO, KC_NO }, \ - { KC_NO, KC_NO, R06, R07, R08, R09, R10, R11 }, \ - { KC_NO, KC_NO, R18, R19, R20, R21, R22, R23 }, \ - { R32, R33, R34, R35, R36, R37, R38, R39 }, \ - { R45, R46, R47, R48, R49, KC_NO, KC_NO, KC_NO }, \ -} - -#define LAYOUT_stack( \ - L00, L01, L02, L03, L04, L05, \ - L12, L13, L14, L15, L16, L17, \ - L24, L25, L26, L27, L28, L29, L30, L31, \ - L40, L41, L42, L43, L44, \ - \ - R06, R07, R08, R09, R10, R11, \ - R18, R19, R20, R21, R22, R23, \ - R32, R33, R34, R35, R36, R37, R38, R39, \ - R45, R46, R47, R48, R49 \ -) \ -{ \ - { KC_NO, KC_NO, L05, L04, L03, L02, L01, L00 }, \ - { KC_NO, KC_NO, L17, L16, L15, L14, L13, L12 }, \ - { L31, L30, L29, L28, L27, L26, L25, L24 }, \ - { L44, L43, L42, L41, L40, KC_NO, KC_NO, KC_NO }, \ - { KC_NO, KC_NO, R06, R07, R08, R09, R10, R11 }, \ - { KC_NO, KC_NO, R18, R19, R20, R21, R22, R23 }, \ - { R32, R33, R34, R35, R36, R37, R38, R39 }, \ - { R45, R46, R47, R48, R49, KC_NO, KC_NO, KC_NO }, \ -} - -#define LAYOUT_split_3x6_5( \ - L00, L01, L02, L03, L04, L05, R06, R07, R08, R09, R10, R11, \ - L12, L13, L14, L15, L16, L17, R18, R19, R20, R21, R22, R23, \ - L24, L25, L26, L27, L28, L29, R34, R35, R36, R37, R38, R39, \ - L40, L41, L42, L43, L44, R45, R46, R47, R48, R49 \ -) \ -{ \ - { KC_NO, KC_NO, L05, L04, L03, L02, L01, L00 }, \ - { KC_NO, KC_NO, L17, L16, L15, L14, L13, L12 }, \ - { KC_NO, KC_NO, L29, L28, L27, L26, L25, L24 }, \ - { L44, L43, L42, L41, L40, KC_NO, KC_NO, KC_NO }, \ - { KC_NO, KC_NO, R06, R07, R08, R09, R10, R11 }, \ - { KC_NO, KC_NO, R18, R19, R20, R21, R22, R23 }, \ - { KC_NO, KC_NO, R34, R35, R36, R37, R38, R39 }, \ - { R45, R46, R47, R48, R49, KC_NO, KC_NO, KC_NO }, \ -} diff --git a/keyboards/kyria/rev1/rules.mk b/keyboards/kyria/rev1/rules.mk deleted file mode 100644 index 8b1c9616cbe9..000000000000 --- a/keyboards/kyria/rev1/rules.mk +++ /dev/null @@ -1,3 +0,0 @@ -OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays -ENCODER_ENABLE = yes # ENables the use of one or more encoders -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow diff --git a/keyboards/kyria/rules.mk b/keyboards/kyria/rules.mk deleted file mode 100644 index 2c749186af69..000000000000 --- a/keyboards/kyria/rules.mk +++ /dev/null @@ -1,27 +0,0 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -BOOTLOADER = atmel-dfu - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 -SPLIT_KEYBOARD = yes # Split common -LTO_ENABLE = yes - -DEFAULT_FOLDER = kyria/rev1 diff --git a/keyboards/labyrinth75/info.json b/keyboards/labyrinth75/info.json index f3ce4eb2b3e1..3871300dfe34 100644 --- a/keyboards/labyrinth75/info.json +++ b/keyboards/labyrinth75/info.json @@ -2,11 +2,9 @@ "keyboard_name": "labyrinth75", "url": "", "maintainer": "qmk", - "width": 16, - "height": 6.25, "layouts": { "LAYOUT": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.5, "y":0}, {"label":"F2", "x":2.5, "y":0}, {"label":"F3", "x":3.5, "y":0}, {"label":"F4", "x":4.5, "y":0}, {"label":"F5", "x":5.75, "y":0}, {"label":"F6", "x":6.75, "y":0}, {"label":"F7", "x":7.75, "y":0}, {"label":"F8", "x":8.75, "y":0}, {"label":"F9", "x":10, "y":0}, {"label":"F10", "x":11, "y":0}, {"label":"F11", "x":12, "y":0}, {"label":"F12", "x":13, "y":0}, {"label":"PrtSc", "x":15, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"label":"Backspace", "x":13, "y":1.25, "w":2}, {"label":"Delete", "x":15, "y":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Y", "x":6.5, "y":2.25}, {"label":"U", "x":7.5, "y":2.25}, {"label":"I", "x":8.5, "y":2.25}, {"label":"O", "x":9.5, "y":2.25}, {"label":"P", "x":10.5, "y":2.25}, {"label":"{", "x":11.5, "y":2.25}, {"label":"}", "x":12.5, "y":2.25}, {"label":"|", "x":13.5, "y":2.25, "w":1.5}, {"label":"Page Up", "x":15, "y":2.25}, {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"H", "x":6.75, "y":3.25}, {"label":"J", "x":7.75, "y":3.25}, {"label":"K", "x":8.75, "y":3.25}, {"label":"L", "x":9.75, "y":3.25}, {"label":":", "x":10.75, "y":3.25}, {"label":"\"", "x":11.75, "y":3.25}, {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, {"label":"Page Down", "x":15, "y":3.25}, {"label":"Shift", "x":0, "y":4.25, "w":2.25}, {"label":"Z", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"N", "x":7.25, "y":4.25}, {"label":"M", "x":8.25, "y":4.25}, {"label":"<", "x":9.25, "y":4.25}, {"label":">", "x":10.25, "y":4.25}, {"label":"?", "x":11.25, "y":4.25}, {"label":"Shift", "x":12.25, "y":4.25, "w":1.75}, {"label":"\u2191", "x":14, "y":4.25}, {"label":"End", "x":15, "y":4.25}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, {"x":3.75, "y":5.25, "w":6.25}, {"label":"Alt", "x":10, "y":5.25, "w":1.25}, {"label":"Ctrl", "x":11.25, "y":5.25, "w":1.25}, {"label":"\u2190", "x":13, "y":5.25}, {"label":"\u2193", "x":14, "y":5.25}, {"label":"\u2192", "x":15, "y":5.25}] } } -} \ No newline at end of file +} diff --git a/keyboards/labyrinth75/rules.mk b/keyboards/labyrinth75/rules.mk index f7bb5a298934..ceceb489474c 100644 --- a/keyboards/labyrinth75/rules.mk +++ b/keyboards/labyrinth75/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/laptreus/info.json b/keyboards/laptreus/info.json index adcfdf60406e..f82cc8419dc0 100644 --- a/keyboards/laptreus/info.json +++ b/keyboards/laptreus/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Laptreus", "url": "", "maintainer": "vosechu", - "width": 14, - "height": 4.67, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/laptreus/laptreus.h b/keyboards/laptreus/laptreus.h index f367c13dc37d..2e7932e49441 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 0f192113c2fd..8f13f135ca86 100644 --- a/keyboards/laptreus/rules.mk +++ b/keyboards/laptreus/rules.mk @@ -5,33 +5,20 @@ MCU = atmega32u4 F_CPU = 8000000 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work #BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -#MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode KEY_LOCK_ENABLE = no -TAP_DANCE_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/latin17rgb/config.h b/keyboards/latin17rgb/config.h index 013899f6008c..6b929f249dae 100644 --- a/keyboards/latin17rgb/config.h +++ b/keyboards/latin17rgb/config.h @@ -1,18 +1,18 @@ /* Copyright 2021 18438880 - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ #pragma once @@ -49,46 +49,77 @@ #define DEBOUNCE 3 /* disable these deprecated features by default */ -//#ifndef LINK_TIME_OPTIMIZATION_ENABLE -//# define NO_ACTION_MACRO -//# define NO_ACTION_FUNCTION -//#endif +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION #ifdef RGB_MATRIX_ENABLE # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended # define RGB_MATRIX_KEYPRESSES # define RGB_MATRIX_FRAMEBUFFER_EFFECTS -# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -# define DISABLE_RGB_MATRIX_BAND_SAT -# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -# define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -# define DISABLE_RGB_MATRIX_SPLASH -# define DISABLE_RGB_MATRIX_MULTISPLASH -# define DISABLE_RGB_MATRIX_SOLID_SPLASH -# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH -# define DISABLE_RGB_MATRIX_DIGITAL_RAIN + // RGB Matrix Animation modes. Explicitly enabled + // For full list of effects, see: + // https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +// # define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL + // enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN + // enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// # define ENABLE_RGB_MATRIX_SPLASH +// # define ENABLE_RGB_MATRIX_MULTISPLASH +// # define ENABLE_RGB_MATRIX_SOLID_SPLASH +// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH -// 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 0b1110100 -#define DRIVER_ADDR_2 0b1110110 + // 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 0b1110100 +# define DRIVER_ADDR_2 0b1110110 -#define DRIVER_COUNT 2 -#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_COUNT 2 +# 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 #define RGB_DI_PIN B7 @@ -100,5 +131,3 @@ #define RGBLIGHT_VAL_STEP 5 #define RGBLIGHT_SLEEP #endif - - diff --git a/keyboards/latin17rgb/info.json b/keyboards/latin17rgb/info.json index d236aea8c2a2..61aae4f8d6c0 100644 --- a/keyboards/latin17rgb/info.json +++ b/keyboards/latin17rgb/info.json @@ -2,8 +2,6 @@ "keyboard_name": "latin17rgb", "url": "", "maintainer": "18438880", - "width": 5, - "height": 4, "layouts": { "LAYOUT_numpad_5x4": { "layout": [ diff --git a/keyboards/latin17rgb/latin17rgb.c b/keyboards/latin17rgb/latin17rgb.c index 8d9eaae8ae89..d4ab3ea67524 100644 --- a/keyboards/latin17rgb/latin17rgb.c +++ b/keyboards/latin17rgb/latin17rgb.c @@ -17,7 +17,7 @@ #ifdef RGB_MATRIX_ENABLE -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { /* Refer to IS31 manual for these locations * driver * | R location diff --git a/keyboards/latin17rgb/rules.mk b/keyboards/latin17rgb/rules.mk index dd7bab746d3d..b681f0d584a1 100644 --- a/keyboards/latin17rgb/rules.mk +++ b/keyboards/latin17rgb/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in RGB_MATRIX_ENABLE = yes diff --git a/keyboards/latin47ble/info.json b/keyboards/latin47ble/info.json index 8755e97f74ec..56b14136d803 100644 --- a/keyboards/latin47ble/info.json +++ b/keyboards/latin47ble/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Latin47ble", "url": "", "maintainer": "latincompass", - "width": 12, - "height": 4, "layouts": { "LAYOUT_planck_mit": { "layout": [ diff --git a/keyboards/latin47ble/rules.mk b/keyboards/latin47ble/rules.mk index c9cdfc912149..3dd1cd48e5f5 100644 --- a/keyboards/latin47ble/rules.mk +++ b/keyboards/latin47ble/rules.mk @@ -10,19 +10,17 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = 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 bbe502054ae8..cc7b83b9b886 100644 --- a/keyboards/latin60rgb/config.h +++ b/keyboards/latin60rgb/config.h @@ -1,18 +1,18 @@ /* Copyright 2021 latincompass - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ #pragma once /* USB Device descriptor parameter */ @@ -53,28 +53,58 @@ #ifdef RGB_MATRIX_ENABLE # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended # define RGB_MATRIX_KEYPRESSES # define RGB_MATRIX_FRAMEBUFFER_EFFECTS -# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -# define DISABLE_RGB_MATRIX_BAND_SAT -# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -# define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -# define DISABLE_RGB_MATRIX_SPLASH -# define DISABLE_RGB_MATRIX_MULTISPLASH -# define DISABLE_RGB_MATRIX_SOLID_SPLASH -# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH -# define DISABLE_RGB_MATRIX_DIGITAL_RAIN + // RGB Matrix Animation modes. Explicitly enabled + // For full list of effects, see: + // https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +// # define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL + // enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN + // enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// # define ENABLE_RGB_MATRIX_SPLASH +// # define ENABLE_RGB_MATRIX_MULTISPLASH +// # define ENABLE_RGB_MATRIX_SOLID_SPLASH +// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH # define 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/latin60rgb/info.json b/keyboards/latin60rgb/info.json index 5f4a0d845296..a493befaf993 100644 --- a/keyboards/latin60rgb/info.json +++ b/keyboards/latin60rgb/info.json @@ -2,8 +2,6 @@ "keyboard_name": "latin60rgb", "url": "", "maintainer": "latincompass", - "width": 14, - "height": 5, "layouts": { "LAYOUT_60_latin_hhkb": { "layout": [ diff --git a/keyboards/latin60rgb/latin60rgb.c b/keyboards/latin60rgb/latin60rgb.c index cdd6fed44d9c..b849f7ef9dad 100644 --- a/keyboards/latin60rgb/latin60rgb.c +++ b/keyboards/latin60rgb/latin60rgb.c @@ -16,7 +16,7 @@ #include "latin60rgb.h" #ifdef RGB_MATRIX_ENABLE -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { { 0, K_13, J_13, L_13 }, { 0, K_12, J_12, L_12 }, { 0, K_11, J_11, L_11 }, diff --git a/keyboards/latin60rgb/rules.mk b/keyboards/latin60rgb/rules.mk index 64df3bfe2ada..16e56525543e 100644 --- a/keyboards/latin60rgb/rules.mk +++ b/keyboards/latin60rgb/rules.mk @@ -8,18 +8,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output RGB_MATRIX_ENABLE = yes # Use RGB matrix RGB_MATRIX_DRIVER = IS31FL3733 diff --git a/keyboards/latin64ble/info.json b/keyboards/latin64ble/info.json index de34b2bd17b8..99fe62b266aa 100644 --- a/keyboards/latin64ble/info.json +++ b/keyboards/latin64ble/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Latin64ble", "url": "", "maintainer": "latincompass", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/latin64ble/rules.mk b/keyboards/latin64ble/rules.mk index 4da5e0938cfb..41f42a9f0c01 100644 --- a/keyboards/latin64ble/rules.mk +++ b/keyboards/latin64ble/rules.mk @@ -10,17 +10,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality 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 4052fdc9910d..718d8aa26f63 100644 --- a/keyboards/latin6rgb/config.h +++ b/keyboards/latin6rgb/config.h @@ -1,18 +1,18 @@ /* Copyright 2021 18438880 - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ #pragma once @@ -50,31 +50,62 @@ #define DEBOUNCE 3 /* disable these deprecated features by default */ -//#ifndef LINK_TIME_OPTIMIZATION_ENABLE -//# define NO_ACTION_MACRO -//# define NO_ACTION_FUNCTION -//#endif +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION #ifdef RGB_MATRIX_ENABLE # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended # define RGB_MATRIX_KEYPRESSES # define RGB_MATRIX_FRAMEBUFFER_EFFECTS -# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -# define DISABLE_RGB_MATRIX_BAND_SAT -# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -# define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -# define DISABLE_RGB_MATRIX_SPLASH -# define DISABLE_RGB_MATRIX_MULTISPLASH -# define DISABLE_RGB_MATRIX_SOLID_SPLASH -# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH -# define DISABLE_RGB_MATRIX_DIGITAL_RAIN + // RGB Matrix Animation modes. Explicitly enabled + // For full list of effects, see: + // https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +// # define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL + // enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN + // enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// # define ENABLE_RGB_MATRIX_SPLASH +// # define ENABLE_RGB_MATRIX_MULTISPLASH +// # define ENABLE_RGB_MATRIX_SOLID_SPLASH +// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // 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) @@ -84,14 +115,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/latin6rgb/info.json b/keyboards/latin6rgb/info.json index f22149215cab..26508e93205c 100644 --- a/keyboards/latin6rgb/info.json +++ b/keyboards/latin6rgb/info.json @@ -2,8 +2,6 @@ "keyboard_name": "latin6rgb", "url": "", "maintainer": "18438880", - "width": 2, - "height": 3, "layouts": { "LAYOUT_numpad_2x3": { "layout": [ diff --git a/keyboards/latin6rgb/latin6rgb.c b/keyboards/latin6rgb/latin6rgb.c index 76b39c86bbcf..ddab9a15191d 100644 --- a/keyboards/latin6rgb/latin6rgb.c +++ b/keyboards/latin6rgb/latin6rgb.c @@ -17,7 +17,7 @@ #ifdef RGB_MATRIX_ENABLE -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { /* Refer to IS31 manual for these locations * driver * | R location diff --git a/keyboards/latin6rgb/rules.mk b/keyboards/latin6rgb/rules.mk index 4a162d97b3b9..571fad62d985 100644 --- a/keyboards/latin6rgb/rules.mk +++ b/keyboards/latin6rgb/rules.mk @@ -7,19 +7,16 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 +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 = 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 NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in diff --git a/keyboards/latinpad/config.h b/keyboards/latinpad/config.h index ed2fcdf9ab48..5cff076d9d37 100644 --- a/keyboards/latinpad/config.h +++ b/keyboards/latinpad/config.h @@ -37,6 +37,54 @@ along with this program. If not, see .*/ #define RGBLED_NUM 18 #define DRIVER_LED_TOTAL RGBLED_NUM +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ #define DEBOUNCE 5 @@ -44,12 +92,6 @@ along with this program. If not, see .*/ /* define if matrix has ghost (lacks anti-ghosting diodes) */ //#define MATRIX_HAS_GHOST -/* 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 OLED_FONT_H "./lib/glcdfont.c" #define ENCODERS_PAD_A { B4, B5 } diff --git a/keyboards/latinpad/info.json b/keyboards/latinpad/info.json index 024672d30b7b..0c86498e7d94 100644 --- a/keyboards/latinpad/info.json +++ b/keyboards/latinpad/info.json @@ -2,9 +2,6 @@ "keyboard_name": "latinpad", "url": "https://github.com/latincompass/2-RotaryEncoder-pad", "maintainer": "latincompass", - - "width": 4, - "height": 5, "layouts": { "LAYOUT": { diff --git a/keyboards/latinpad/keymaps/default/keymap.c b/keyboards/latinpad/keymaps/default/keymap.c index fe0741423caa..b6606e6be702 100644 --- a/keyboards/latinpad/keymaps/default/keymap.c +++ b/keyboards/latinpad/keymaps/default/keymap.c @@ -48,8 +48,11 @@ static void render_logo(void) { oled_write_P(qmk_logo, false); } -#ifdef OLED_DRIVER_ENABLE -void oled_task_user(void) { render_logo(); } +#ifdef OLED_ENABLE +bool oled_task_user(void) { + render_logo(); + return false; +} #endif bool encoder_update_user(uint8_t index, bool clockwise) { diff --git a/keyboards/latinpad/keymaps/via/keymap.c b/keyboards/latinpad/keymaps/via/keymap.c index c196cd485f38..12d7e910e6a5 100644 --- a/keyboards/latinpad/keymaps/via/keymap.c +++ b/keyboards/latinpad/keymaps/via/keymap.c @@ -46,8 +46,11 @@ static void render_logo(void) { oled_write_P(qmk_logo, false); } -#ifdef OLED_DRIVER_ENABLE -void oled_task_user(void) { render_logo(); } +#ifdef OLED_ENABLE +bool oled_task_user(void) { + render_logo(); + return false; +} #endif bool encoder_update_user(uint8_t index, bool clockwise) { diff --git a/keyboards/latinpad/keymaps/via/rules.mk b/keyboards/latinpad/keymaps/via/rules.mk index 1e5b99807cb7..36b7ba9cbc98 100644 --- a/keyboards/latinpad/keymaps/via/rules.mk +++ b/keyboards/latinpad/keymaps/via/rules.mk @@ -1 +1,2 @@ VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/latinpad/rules.mk b/keyboards/latinpad/rules.mk index 20ed069353ca..79626c14cc58 100644 --- a/keyboards/latinpad/rules.mk +++ b/keyboards/latinpad/rules.mk @@ -2,28 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = no # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality AUDIO_ENABLE = no RGBLIGHT_ENABLE = no -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 ENCODER_ENABLE = yes RGB_MATRIX_ENABLE = yes RGB_MATRIX_DRIVER = WS2812 diff --git a/keyboards/latinpadble/config.h b/keyboards/latinpadble/config.h index 5381bf91ccec..da89046176d1 100644 --- a/keyboards/latinpadble/config.h +++ b/keyboards/latinpadble/config.h @@ -54,44 +54,42 @@ along with this program. If not, see .*/ #define RGBLIGHT_LIMIT_VAL 255 #define RGBLIGHT_EFFECT_KNIGHT_OFFSET 20 //#define RGBLIGHT_ANIMATIONS // Run RGB animations -#define DISABLE_RGB_MATRIX_ALPHAS_MODS -#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -#define DISABLE_RGB_MATRIX_BREATHING -#define DISABLE_RGB_MATRIX_BAND_SAT -#define DISABLE_RGB_MATRIX_BAND_VAL -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL -#define DISABLE_RGB_MATRIX_CYCLE_ALL -#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT -#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN -#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN -#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL -#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON -#define DISABLE_RGB_MATRIX_DUAL_BEACON -#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL -#define DISABLE_RGB_MATRIX_CYCLE_SPIRAL -#define DISABLE_RGB_MATRIX_RAINBOW_BEACON -#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS -#define DISABLE_RGB_MATRIX_RAINDROPS -#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS -#define DISABLE_RGB_MATRIX_TYPING_HEATMAP -#define DISABLE_RGB_MATRIX_DIGITAL_RAIN -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -#define DISABLE_RGB_MATRIX_SPLASH -#define DISABLE_RGB_MATRIX_MULTISPLASH -#define DISABLE_RGB_MATRIX_SOLID_SPLASH -#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH - - +#undef ENABLE_RGB_MATRIX_ALPHAS_MODS +#undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#undef ENABLE_RGB_MATRIX_BREATHING +#undef ENABLE_RGB_MATRIX_BAND_SAT +#undef ENABLE_RGB_MATRIX_BAND_VAL +#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#undef ENABLE_RGB_MATRIX_CYCLE_ALL +#undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#undef ENABLE_RGB_MATRIX_DUAL_BEACON +#undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#undef ENABLE_RGB_MATRIX_RAINBOW_BEACON +#undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#undef ENABLE_RGB_MATRIX_RAINDROPS +#undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#undef ENABLE_RGB_MATRIX_TYPING_HEATMAP +#undef ENABLE_RGB_MATRIX_DIGITAL_RAIN +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#undef ENABLE_RGB_MATRIX_SPLASH +#undef ENABLE_RGB_MATRIX_MULTISPLASH +#undef ENABLE_RGB_MATRIX_SOLID_SPLASH +#undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH #define OLED_FONT_H "./lib/glcdfont.c" diff --git a/keyboards/latinpadble/info.json b/keyboards/latinpadble/info.json index d650dc9f6493..b640d3e46ede 100644 --- a/keyboards/latinpadble/info.json +++ b/keyboards/latinpadble/info.json @@ -2,28 +2,26 @@ "keyboard_name": "latinpadble", "url": "https://github.com/latincompass/2-RotaryEncoder-pad", "maintainer": "haierwangwei2005", - - "width": 4, - "height": 5, "layouts": { - - "LAYOUT": { + "LAYOUT_pad": { "layout": [ {"label":"Num Lock", "x":0, "y":0, "w":0.8, "h":0.8}, - {"label":"/", "x":0.8, "y":0, "w":0.8, "h":0.8}, {"label":"7", "x":0, "y":1}, {"label":"8", "x":1, "y":1}, {"label":"9", "x":2, "y":1}, {"label":"+", "x":3, "y":1}, + {"label":"4", "x":0, "y":2}, {"label":"5", "x":1, "y":2}, {"label":"6", "x":2, "y":2}, {"label":"+", "x":3, "y":2}, + {"label":"1", "x":0, "y":3}, {"label":"2", "x":1, "y":3}, {"label":"3", "x":2, "y":3}, {"label":"Enter", "x":3, "y":3}, + {"label":"0", "x":0, "y":4}, {"label":"0", "x":1, "y":4}, {"label":".", "x":2, "y":4}, diff --git a/keyboards/latinpadble/keymaps/default/keymap.c b/keyboards/latinpadble/keymaps/default/keymap.c index 7a6e0eda6b6b..3fed6c0cb48f 100644 --- a/keyboards/latinpadble/keymaps/default/keymap.c +++ b/keyboards/latinpadble/keymaps/default/keymap.c @@ -34,8 +34,11 @@ static void render_logo(void) { oled_write_P(qmk_logo, false); } -#ifdef OLED_DRIVER_ENABLE -void oled_task_user(void) { render_logo(); } +#ifdef OLED_ENABLE +bool oled_task_user(void) { + render_logo(); + return false; +} #endif bool encoder_update_user(uint8_t index, bool clockwise) { diff --git a/keyboards/latinpadble/keymaps/via/keymap.c b/keyboards/latinpadble/keymaps/via/keymap.c index 0a29b04ab3eb..2c4cc5f4097f 100644 --- a/keyboards/latinpadble/keymaps/via/keymap.c +++ b/keyboards/latinpadble/keymaps/via/keymap.c @@ -63,8 +63,11 @@ static void render_logo(void) { oled_write_P(qmk_logo, false); } -#ifdef OLED_DRIVER_ENABLE -void oled_task_user(void) { render_logo(); } +#ifdef OLED_ENABLE +bool oled_task_user(void) { + render_logo(); + return false; +} #endif bool encoder_update_user(uint8_t index, bool clockwise) { diff --git a/keyboards/latinpadble/rules.mk b/keyboards/latinpadble/rules.mk index cb9789acaa35..710c9e889fc1 100644 --- a/keyboards/latinpadble/rules.mk +++ b/keyboards/latinpadble/rules.mk @@ -1,44 +1,28 @@ - # MCU name MCU = atmega32u4 -# Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = caterina +# Processor frequency F_CPU = 8000000 - -# Feather uses the caterina bootloader -OPT_DEFS += -DBOOTLOADER_SIZE=4096 -DCATERINA_BOOTLOADER +# Bootloader selection +BOOTLOADER = caterina # Build Options # change yes to no to disable # - -# Build Options -# change yes to no to disable -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -AUDIO_ENABLE = no # Audio output on port C6 -BLUETOOTH = AdafruitBLE -LAYOUTS = pad -RGBLIGHT_ENABLE = yes -OLED_DRIVER_ENABLE = yes -ENCODER_ENABLE = yes +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +BLUETOOTH_ENABLE = yes +BLUETOOTH_DRIVER = AdafruitBLE +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 +ENCODER_ENABLE = yes diff --git a/keyboards/lattice60/info.json b/keyboards/lattice60/info.json index fd738945d482..824884ecbda1 100644 --- a/keyboards/lattice60/info.json +++ b/keyboards/lattice60/info.json @@ -2,8 +2,6 @@ "keyboard_name": "lattice60", "url": "", "maintainer": "emdarcher", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/lattice60/rules.mk b/keyboards/lattice60/rules.mk index abd97e24b7c1..94be68ea4c35 100644 --- a/keyboards/lattice60/rules.mk +++ b/keyboards/lattice60/rules.mk @@ -2,14 +2,7 @@ MCU = atmega328p # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = USBasp +BOOTLOADER = usbasploader # Processor frequency F_CPU = 12000000 @@ -17,19 +10,15 @@ F_CPU = 12000000 # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = 60_hhkb diff --git a/keyboards/launchpad/config.h b/keyboards/launchpad/config.h index e9a13a3bdff9..327d67016bf1 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -65,5 +64,3 @@ along with this program. If not, see . #ifdef SUBPROJECT_rev1 #include "rev1/config.h" #endif - -#endif diff --git a/keyboards/launchpad/keymaps/brandonschlack/rules.mk b/keyboards/launchpad/keymaps/brandonschlack/rules.mk index ac92af928e9c..31c8f7b39d34 100644 --- a/keyboards/launchpad/keymaps/brandonschlack/rules.mk +++ b/keyboards/launchpad/keymaps/brandonschlack/rules.mk @@ -5,7 +5,7 @@ IS_MACROPAD = yes BOOTLOADER = atmel-dfu # Build Options -BOOTMAGIC_ENABLE = lite +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. CONSOLE_ENABLE = yes # Console for debug(+400) MOUSEKEY_ENABLE = yes # Use mouse keys for scrolling. diff --git a/keyboards/launchpad/keymaps/default/keymap.c b/keyboards/launchpad/keymaps/default/keymap.c index 8ebc98159d3f..560f7e858568 100644 --- a/keyboards/launchpad/keymaps/default/keymap.c +++ b/keyboards/launchpad/keymaps/default/keymap.c @@ -53,7 +53,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; - -void matrix_init_user(void) { - -} diff --git a/keyboards/launchpad/keymaps/drashna/rules.mk b/keyboards/launchpad/keymaps/drashna/rules.mk index 3eb1694adbdc..c3b1e0a8b976 100644 --- a/keyboards/launchpad/keymaps/drashna/rules.mk +++ b/keyboards/launchpad/keymaps/drashna/rules.mk @@ -2,6 +2,6 @@ BOOTLOADER = atmel-dfu RGBLIGHT_ENABLE = no AUDIO_ENABLE = no -BOOTMAGIC_ENABLE = lite +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite RGB_MATRIX_ENABLE = yes RGB_MATRIX_DRIVER = WS2812 diff --git a/keyboards/launchpad/launchpad.h b/keyboards/launchpad/launchpad.h index 85432de0ad23..59cf64afecc1 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/info.json b/keyboards/launchpad/rev1/info.json index f12eaba42d46..c8ba35c966b7 100644 --- a/keyboards/launchpad/rev1/info.json +++ b/keyboards/launchpad/rev1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Launch Pad rev1", "url": "", "maintainer": "qmk", - "width": 2, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/launchpad/rev1/rev1.c b/keyboards/launchpad/rev1/rev1.c index cff4edf9f874..cc2812a76c66 100644 --- a/keyboards/launchpad/rev1/rev1.c +++ b/keyboards/launchpad/rev1/rev1.c @@ -1,9 +1 @@ #include "launchpad.h" - -void matrix_init_kb(void) { - // Undo init of RX LED, we use that port currently - //DDRB &= ~(1<<0); - - matrix_init_user(); - -}; diff --git a/keyboards/launchpad/rev1/rev1.h b/keyboards/launchpad/rev1/rev1.h index 6644db83006c..2ea6e7e77555 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/launchpad/rules.mk b/keyboards/launchpad/rules.mk index 2b115b1e1e87..99d19044b7cf 100644 --- a/keyboards/launchpad/rules.mk +++ b/keyboards/launchpad/rules.mk @@ -2,34 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -API_SYSEX_ENABLE = no - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend DEFAULT_FOLDER = launchpad/rev1 diff --git a/keyboards/lazydesigners/bolt/info.json b/keyboards/lazydesigners/bolt/info.json index ee2756bbe7a6..6e669d4ca9ef 100644 --- a/keyboards/lazydesigners/bolt/info.json +++ b/keyboards/lazydesigners/bolt/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Bolt", "url": "http://lazydesigners.cn", "maintainer": "LAZYDESIGNERS", - "width": 14.25, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/lazydesigners/bolt/via/keymap.c b/keyboards/lazydesigners/bolt/keymaps/via/keymap.c similarity index 100% rename from keyboards/lazydesigners/bolt/via/keymap.c rename to keyboards/lazydesigners/bolt/keymaps/via/keymap.c diff --git a/keyboards/lazydesigners/bolt/keymaps/via/rules.mk b/keyboards/lazydesigners/bolt/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/lazydesigners/bolt/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/lazydesigners/bolt/rules.mk b/keyboards/lazydesigners/bolt/rules.mk index 38ce53e3096f..4d962e934fdc 100644 --- a/keyboards/lazydesigners/bolt/rules.mk +++ b/keyboards/lazydesigners/bolt/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/lazydesigners/cassette8/cassette8.c b/keyboards/lazydesigners/cassette8/cassette8.c new file mode 100755 index 000000000000..a36de6d7a638 --- /dev/null +++ b/keyboards/lazydesigners/cassette8/cassette8.c @@ -0,0 +1,17 @@ +/* Copyright 2021 LAZYDESIGNERS + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "cassette8.h" diff --git a/keyboards/lazydesigners/cassette8/cassette8.h b/keyboards/lazydesigners/cassette8/cassette8.h new file mode 100755 index 000000000000..9b640638f6d2 --- /dev/null +++ b/keyboards/lazydesigners/cassette8/cassette8.h @@ -0,0 +1,28 @@ +/* Copyright 2021 LAZYDESIGNERS + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + + +#define LAYOUT( \ + K00, K01, K02, K03, \ + K10, K11, K12, K13 \ +) { \ + { K00, K01, K02, K03, }, \ + { K10, K11, K12, K13 }, \ +} diff --git a/keyboards/lazydesigners/cassette8/config.h b/keyboards/lazydesigners/cassette8/config.h new file mode 100755 index 000000000000..ee20577e3dc5 --- /dev/null +++ b/keyboards/lazydesigners/cassette8/config.h @@ -0,0 +1,58 @@ +/* Copyright 2021 LAZYDESIGNERS + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4C44 // "LD" +#define PRODUCT_ID 0x0008 +#define DEVICE_VER 0x0001 +#define MANUFACTURER LAZYDESIGNERS +#define PRODUCT Cassette8 + +/* key matrix size */ +#define MATRIX_ROWS 2 +#define MATRIX_COLS 4 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { B3, B2 } +#define MATRIX_COL_PINS { B5, B4, B1, B0 } + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* RBG underglow */ +#define RGB_DI_PIN C2 +#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 RGBLIGHT_SLEEP + #define RGBLED_NUM 15 + /* #define RGBLIGHT_HUE_STEP 8 */ + /* #define RGBLIGHT_SAT_STEP 8 */ + /* #define RGBLIGHT_VAL_STEP 8 */ +#endif + diff --git a/keyboards/lazydesigners/cassette8/info.json b/keyboards/lazydesigners/cassette8/info.json new file mode 100755 index 000000000000..980d4a3d9327 --- /dev/null +++ b/keyboards/lazydesigners/cassette8/info.json @@ -0,0 +1,19 @@ +{ + "keyboard_name": "Cassette8", + "url": "http://lazydesigners.cn", + "maintainer": "Jacky@LAZYDESIGNERS", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"1", "x":0, "y":0}, + {"label":"2", "x":1, "y":0}, + {"label":"3", "x":2, "y":0}, + {"label":"4", "x":3, "y":0}, + {"label":"5", "x":0, "y":1}, + {"label":"6", "x":1, "y":1}, + {"label":"7", "x":2, "y":1}, + {"label":"8", "x":3, "y":1} + ] + } + } +} diff --git a/keyboards/lazydesigners/cassette8/keymaps/default/keymap.c b/keyboards/lazydesigners/cassette8/keymaps/default/keymap.c new file mode 100755 index 000000000000..3d1eb395c663 --- /dev/null +++ b/keyboards/lazydesigners/cassette8/keymaps/default/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2021 LAZYDESIGNERS + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +#define LT1_SPC LT(1, KC_SPC) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_1, KC_2, KC_3, KC_4, + KC_5, KC_6, KC_7, LT1_SPC + ), + [1] = LAYOUT( + RESET, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO + ), + [2] = LAYOUT( + KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO + ), +}; diff --git a/keyboards/lazydesigners/cassette8/keymaps/via/keymap.c b/keyboards/lazydesigners/cassette8/keymaps/via/keymap.c new file mode 100755 index 000000000000..3d1eb395c663 --- /dev/null +++ b/keyboards/lazydesigners/cassette8/keymaps/via/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2021 LAZYDESIGNERS + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +#define LT1_SPC LT(1, KC_SPC) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_1, KC_2, KC_3, KC_4, + KC_5, KC_6, KC_7, LT1_SPC + ), + [1] = LAYOUT( + RESET, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO + ), + [2] = LAYOUT( + KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO + ), +}; diff --git a/keyboards/lazydesigners/cassette8/keymaps/via/rules.mk b/keyboards/lazydesigners/cassette8/keymaps/via/rules.mk new file mode 100755 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/lazydesigners/cassette8/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/lazydesigners/cassette8/readme.md b/keyboards/lazydesigners/cassette8/readme.md new file mode 100755 index 000000000000..7211bf5e97e1 --- /dev/null +++ b/keyboards/lazydesigners/cassette8/readme.md @@ -0,0 +1,21 @@ +# Cassette8 + +A 8 key macropad designed and produced by [LAZYDESIGNERS](http://lazydesigners.cn). + +![Cassette8](http://lazydesigners.cn/wp-content/uploads/2021/05/cassette8.jpg) + +* Keyboard Maintainer: [LAZYDESIGNERS](https://github.com/jackytrabbit) +* Hardware Supported: Cassette8 +* Hardware Availability: Check [LAZYDESIGNERS's homepage.](http://lazydesigners.cn) + +Make example for this keyboard (after setting up your build environment): + + make lazydesigners/cassette8:default + +Flashing example for this keyboard: + + make lazydesigners/cassette8:default:flash + +**Reset Key:** To enter the bootloader, either push the RESET button on the PCB or the RESET button on the FN layer. + +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/lazydesigners/cassette8/rules.mk b/keyboards/lazydesigners/cassette8/rules.mk new file mode 100755 index 000000000000..4af370cc36d5 --- /dev/null +++ b/keyboards/lazydesigners/cassette8/rules.mk @@ -0,0 +1,19 @@ +# MCU name +MCU = atmega32u2 + +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 diff --git a/keyboards/lazydesigners/dimple/info.json b/keyboards/lazydesigners/dimple/info.json index db5137e1f85f..4cfa1e6f181f 100644 --- a/keyboards/lazydesigners/dimple/info.json +++ b/keyboards/lazydesigners/dimple/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Dimple", "url": "http://lazydesigners.cn", "maintainer": "Erovia", - "width": 12.5, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/lazydesigners/dimple/rules.mk b/keyboards/lazydesigners/dimple/rules.mk index 5460d74733d8..6ac20a59a53b 100644 --- a/keyboards/lazydesigners/dimple/rules.mk +++ b/keyboards/lazydesigners/dimple/rules.mk @@ -2,19 +2,12 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control NKRO_ENABLE = yes # USB Nkey Rollover diff --git a/keyboards/lazydesigners/dimpleplus/info.json b/keyboards/lazydesigners/dimpleplus/info.json index e7a028e55007..aab9e66dfdb4 100644 --- a/keyboards/lazydesigners/dimpleplus/info.json +++ b/keyboards/lazydesigners/dimpleplus/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Dimpleplus", "url": "http://lazydesigners.cn", "maintainer": "LAZYDESIGNERS", - "width": 12.5, - "height": 5.25, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/lazydesigners/dimpleplus/rules.mk b/keyboards/lazydesigners/dimpleplus/rules.mk index 3fd7208dbbd5..69aef30ff2e6 100644 --- a/keyboards/lazydesigners/dimpleplus/rules.mk +++ b/keyboards/lazydesigners/dimpleplus/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/lazydesigners/the30/info.json b/keyboards/lazydesigners/the30/info.json index 97974112ebe8..7f423620f469 100644 --- a/keyboards/lazydesigners/the30/info.json +++ b/keyboards/lazydesigners/the30/info.json @@ -2,11 +2,8 @@ "keyboard_name": "THE30", "url": "http://lazydesigners.cn", "maintainer": "Erovia", - "width": 10, - "height": 3, "layouts": { "LAYOUT_ortho_3x10": { - "key_count": 30, "layout": [ {"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, diff --git a/keyboards/lazydesigners/the30/rules.mk b/keyboards/lazydesigners/the30/rules.mk index d8a79f09446e..6be9f63aa7dd 100644 --- a/keyboards/lazydesigners/the30/rules.mk +++ b/keyboards/lazydesigners/the30/rules.mk @@ -2,32 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output # Support community keymaps LAYOUTS = ortho_3x10 diff --git a/keyboards/lazydesigners/the40/info.json b/keyboards/lazydesigners/the40/info.json index 6e145bbb7cec..5af86fc923ea 100644 --- a/keyboards/lazydesigners/the40/info.json +++ b/keyboards/lazydesigners/the40/info.json @@ -2,8 +2,6 @@ "keyboard_name": "THE40", "url": "http://lazydesigners.cn", "maintainer": "LAZYDESIGNERS", - "width": 12, - "height": 4, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/lazydesigners/the40/keymaps/via/keymap.c b/keyboards/lazydesigners/the40/keymaps/via/keymap.c index 4317c663c144..cdd7941b4bfd 100644 --- a/keyboards/lazydesigners/the40/keymaps/via/keymap.c +++ b/keyboards/lazydesigners/the40/keymaps/via/keymap.c @@ -17,28 +17,28 @@ #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_all( - KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, - KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_DOT, KC_UP, MO(1), - KC_LCTL, KC_LGUI, KC_RALT, KC_SPC, KC_SPC, KC_LEFT, KC_DOWN, KC_RGHT + [0] = LAYOUT_ortho( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCOLON, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_QUOTE, MO(2), + KC_LCTL, KC_LGUI, KC_RALT, KC_LSFT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_UP, KC_DOWN, KC_LEFT, KC_RGHT ), - [1] = LAYOUT_all( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_NO, - RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, - KC_NO, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, KC_NO, KC_NO, - KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO + [1] = LAYOUT_ortho( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_NO, + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_NO, + KC_NO, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO ), - [2] = LAYOUT_all( - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + [2] = LAYOUT_ortho( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO ), - [3] = LAYOUT_all( - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + [3] = LAYOUT_ortho( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO ), }; diff --git a/keyboards/lazydesigners/the40/rules.mk b/keyboards/lazydesigners/the40/rules.mk index 27e32f935b4c..f55bcf59c243 100644 --- a/keyboards/lazydesigners/the40/rules.mk +++ b/keyboards/lazydesigners/the40/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/lazydesigners/the40/the40.h b/keyboards/lazydesigners/the40/the40.h index 91e71206050c..26cc68dd5cb6 100644 --- a/keyboards/lazydesigners/the40/the40.h +++ b/keyboards/lazydesigners/the40/the40.h @@ -55,5 +55,5 @@ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011 }, \ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, KC_NO }, \ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, KC_NO }, \ - { K300, K301, K302, KC_NO, K304, KC_NO, K306, KC_NO, K308, K309, K310, KC_NO }, \ + { K300, KC_NO, K302, KC_NO, K304, KC_NO, K306, KC_NO, K308, KC_NO, K310, KC_NO }, \ } diff --git a/keyboards/lazydesigners/the50/info.json b/keyboards/lazydesigners/the50/info.json index 16e751dac32a..536c5da1d24e 100644 --- a/keyboards/lazydesigners/the50/info.json +++ b/keyboards/lazydesigners/the50/info.json @@ -2,11 +2,8 @@ "keyboard_name": "THE50", "url": "http://lazydesigners.cn", "maintainer": "qmk", - "width": 15.25, - "height": 4, "layouts": { "LAYOUT": { - "key_count": 54, "layout": [ {"label":"Esc", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, diff --git a/keyboards/lazydesigners/the50/rules.mk b/keyboards/lazydesigners/the50/rules.mk index 8194d084e0b5..fcfa88ec33ce 100644 --- a/keyboards/lazydesigners/the50/rules.mk +++ b/keyboards/lazydesigners/the50/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 = 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 RGBLIGHT_ENABLE = no # Enable keyboard underlight functionality diff --git a/keyboards/lazydesigners/the60/rev1/info.json b/keyboards/lazydesigners/the60/rev1/info.json index 1f33bce4e61d..8ab5056bf6d0 100755 --- a/keyboards/lazydesigners/the60/rev1/info.json +++ b/keyboards/lazydesigners/the60/rev1/info.json @@ -2,11 +2,8 @@ "keyboard_name": "THE60 rev1", "url": "http://lazydesigners.cn", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_split_spc_split_bspc": { - "key_count": 66, "layout": [ {"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, diff --git a/keyboards/lazydesigners/the60/rev1/rules.mk b/keyboards/lazydesigners/the60/rev1/rules.mk index 28161512cc96..6ceee057083a 100755 --- a/keyboards/lazydesigners/the60/rev1/rules.mk +++ b/keyboards/lazydesigners/the60/rev1/rules.mk @@ -7,11 +7,10 @@ BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -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 = yes # Enable keyboard backlight functionality diff --git a/keyboards/lazydesigners/the60/rev2/info.json b/keyboards/lazydesigners/the60/rev2/info.json index 742a65cda547..05540cd308ea 100755 --- a/keyboards/lazydesigners/the60/rev2/info.json +++ b/keyboards/lazydesigners/the60/rev2/info.json @@ -2,8 +2,6 @@ "keyboard_name": "THE60rev2", "url": "http://lazydesigners.cn", "maintainer": "LAZYDESIGNERS", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ @@ -263,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} ] @@ -328,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/lazydesigners/the60/rev2/rev2.h b/keyboards/lazydesigners/the60/rev2/rev2.h index 1742fa6bfc6c..4ac3327f6080 100755 --- a/keyboards/lazydesigners/the60/rev2/rev2.h +++ b/keyboards/lazydesigners/the60/rev2/rev2.h @@ -45,8 +45,8 @@ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \ { 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, K212, K213 }, \ - { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313 }, \ - { K400, K401, K402, KC_NO, K404, KC_NO, K406, KC_NO, K408, KC_NO, K410, K411, K412, K413 }, \ + { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313 }, \ + { K400, KC_NO, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, KC_NO, K411, KC_NO, K413 }, \ } #define LAYOUT_hhkb_standard( \ @@ -60,8 +60,8 @@ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \ { 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, K212, K213 }, \ - { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313 }, \ - { K400, K401, K402, KC_NO, K404, KC_NO, K406, KC_NO, K408, KC_NO, K410, K411, K412, K413 }, \ + { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313 }, \ + { KC_NO, K401, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, KC_NO, K411, K412, KC_NO}, \ } #define LAYOUT_wkl_iso( \ @@ -76,7 +76,7 @@ { 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, K212, K213 }, \ { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313 }, \ - { K400, K401, K402, KC_NO, K404, KC_NO, K406, KC_NO, K408, KC_NO, K410, K411, K412, K413 }, \ + { K400, KC_NO, K402, KC_NO, K404, KC_NO, K406, KC_NO, K408, KC_NO, K410, K411, KC_NO, K413 }, \ } #define LAYOUT_hhkb_iso( \ @@ -91,7 +91,7 @@ { 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, K212, K213 }, \ { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313 }, \ - { K400, K401, K402, KC_NO, K404, KC_NO, K406, KC_NO, K408, KC_NO, K410, K411, K412, K413 }, \ + { KC_NO, K401, K402, KC_NO, K404, KC_NO, K406, KC_NO, K408, KC_NO, K410, K411, K412, KC_NO}, \ } #define LAYOUT_wkl_splitspace( \ @@ -105,8 +105,8 @@ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \ { 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, K212, K213 }, \ - { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313 }, \ - { K400, K401, K402, KC_NO, K404, KC_NO, K406, KC_NO, K408, KC_NO, K410, K411, K412, K413 }, \ + { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313 }, \ + { K400, KC_NO, K402, KC_NO, K404, KC_NO, K406, KC_NO, K408, KC_NO, K410, K411, KC_NO, K413 }, \ } #define LAYOUT_hhkb_splitspace( \ @@ -120,6 +120,6 @@ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \ { 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, K212, K213 }, \ - { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313 }, \ - { K400, K401, K402, KC_NO, K404, KC_NO, K406, KC_NO, K408, KC_NO, K410, K411, K412, K413 }, \ + { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313 }, \ + { KC_NO, K401, K402, KC_NO, K404, KC_NO, K406, KC_NO, K408, KC_NO, K410, K411, K412, KC_NO}, \ } diff --git a/keyboards/lazydesigners/the60/rev2/rules.mk b/keyboards/lazydesigners/the60/rev2/rules.mk index 82eccdb40f21..4f120778179b 100755 --- a/keyboards/lazydesigners/the60/rev2/rules.mk +++ b/keyboards/lazydesigners/the60/rev2/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/lck75/config.h b/keyboards/lck75/config.h index 3758afa189c1..18dd381ece88 100644 --- a/keyboards/lck75/config.h +++ b/keyboards/lck75/config.h @@ -20,13 +20,13 @@ along with this program. If not, see . #define VENDOR_ID 0x7856 #define PRODUCT_ID 0x6163 -#define DEVICE_VER 0x0001 +#define DEVICE_VER 0x0002 #define MANUFACTURER Lyso1 #define PRODUCT lck75 /* key matrix size */ #define MATRIX_ROWS 6 -#define MATRIX_COLS 15 +#define MATRIX_COLS 16 /* * Keyboard Matrix Assignments @@ -38,9 +38,9 @@ along with this program. If not, see . * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) * */ -/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14*/ +/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15*/ #define MATRIX_ROW_PINS { C2, C3, C7, C4, C6, C5 } -#define MATRIX_COL_PINS { A0, B0, A1, B1, A2, B2, A3, B3, A4, B4, A5, A6, A7, D6, D5 } +#define MATRIX_COL_PINS { A0, B0, A1, B1, A2, B2, A3, B3, A4, B4, A5, A6, A7, D7, D6, D5 } #define UNUSED_PINS #define ENCODERS_PAD_B { D1 } diff --git a/keyboards/lck75/info.json b/keyboards/lck75/info.json index 0858115d90c2..4d04175e0011 100644 --- a/keyboards/lck75/info.json +++ b/keyboards/lck75/info.json @@ -2,14 +2,27 @@ "keyboard_name": "LCK75", "url": "https://github.com/lyso1/LCK75", "maintainer": "Lyso1", - "width": 16.5, - "height": 6.5, "layouts": { - "LAYOUT_lck75_ansi": { + "LAYOUT_default": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.25, "y":0}, {"label":"F2", "x":2.25, "y":0}, {"label":"F3", "x":3.25, "y":0}, {"label":"F4", "x":4.25, "y":0}, {"label":"F5", "x":5.5, "y":0}, {"label":"F6", "x":6.5, "y":0}, {"label":"F7", "x":7.5, "y":0}, {"label":"F8", "x":8.5, "y":0}, {"label":"F9", "x":9.75, "y":0}, {"label":"F10", "x":10.75, "y":0}, {"label":"F11", "x":11.75, "y":0}, {"label":"F12", "x":12.75, "y":0}, {"label":"F13", "x":14, "y":0}, {"label":"Mute", "x":15.5, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"label":"Backspace", "x":13, "y":1.25, "w":2}, {"label":"PgDn", "x":15.5, "y":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Y", "x":6.5, "y":2.25}, {"label":"U", "x":7.5, "y":2.25}, {"label":"I", "x":8.5, "y":2.25}, {"label":"O", "x":9.5, "y":2.25}, {"label":"P", "x":10.5, "y":2.25}, {"label":"[", "x":11.5, "y":2.25}, {"label":"]", "x":12.5, "y":2.25}, {"label":"|", "x":13.5, "y":2.25, "w":1.5}, {"label":"PgUp", "x":15.5, "y":2.25}, {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"H", "x":6.75, "y":3.25}, {"label":"J", "x":7.75, "y":3.25}, {"label":"K", "x":8.75, "y":3.25}, {"label":"L", "x":9.75, "y":3.25}, {"label":";", "x":10.75, "y":3.25}, {"label":"\"", "x":11.75, "y":3.25}, {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, {"label":"Del", "x":15.5, "y":3.25}, {"label":"Shift", "x":0, "y":4.25, "w":2.25}, {"label":"Z", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"N", "x":7.25, "y":4.25}, {"label":"M", "x":8.25, "y":4.25}, {"label":"<", "x":9.25, "y":4.25}, {"label":">", "x":10.25, "y":4.25}, {"label":"?", "x":11.25, "y":4.25}, {"label":"Shift", "x":12.25, "y":4.25, "w":1.75}, {"label":"Up", "x":14.25, "y":4.5}, {"label":"MO(1)", "x":15.5, "y":4.25}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, {"x":3.75, "y":5.25, "w":6.25}, {"label":"Alt", "x":10, "y":5.25, "w":1.5}, {"label":"Ctrl", "x":11.5, "y":5.25, "w":1.5}, {"label":"Left", "x":13.25, "y":5.5}, {"label":"Down", "x":14.25, "y":5.5}, {"label":"Right", "x":15.25, "y":5.5}] }, - "LAYOUT_lck75_7u": { + "LAYOUT_7u": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.25, "y":0}, {"label":"F2", "x":2.25, "y":0}, {"label":"F3", "x":3.25, "y":0}, {"label":"F4", "x":4.25, "y":0}, {"label":"F5", "x":5.5, "y":0}, {"label":"F6", "x":6.5, "y":0}, {"label":"F7", "x":7.5, "y":0}, {"label":"F8", "x":8.5, "y":0}, {"label":"F9", "x":9.75, "y":0}, {"label":"F10", "x":10.75, "y":0}, {"label":"F11", "x":11.75, "y":0}, {"label":"F12", "x":12.75, "y":0}, {"label":"F13", "x":14, "y":0}, {"label":"Mute", "x":15.5, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"label":"Backspace", "x":13, "y":1.25, "w":2}, {"label":"PgDn", "x":15.5, "y":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Y", "x":6.5, "y":2.25}, {"label":"U", "x":7.5, "y":2.25}, {"label":"I", "x":8.5, "y":2.25}, {"label":"O", "x":9.5, "y":2.25}, {"label":"P", "x":10.5, "y":2.25}, {"label":"[", "x":11.5, "y":2.25}, {"label":"]", "x":12.5, "y":2.25}, {"label":"|", "x":13.5, "y":2.25, "w":1.5}, {"label":"PgUp", "x":15.5, "y":2.25}, {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"H", "x":6.75, "y":3.25}, {"label":"J", "x":7.75, "y":3.25}, {"label":"K", "x":8.75, "y":3.25}, {"label":"L", "x":9.75, "y":3.25}, {"label":";", "x":10.75, "y":3.25}, {"label":"\"", "x":11.75, "y":3.25}, {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, {"label":"Del", "x":15.5, "y":3.25}, {"label":"Shift", "x":0, "y":4.25, "w":2.25}, {"label":"Z", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"N", "x":7.25, "y":4.25}, {"label":"M", "x":8.25, "y":4.25}, {"label":"<", "x":9.25, "y":4.25}, {"label":">", "x":10.25, "y":4.25}, {"label":"?", "x":11.25, "y":4.25}, {"label":"Shift", "x":12.25, "y":4.25, "w":1.75}, {"label":"Up", "x":14.25, "y":4.5}, {"label":"MO(1)", "x":15.5, "y":4.25}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.5}, {"label":"Alt", "x":1.5, "y":5.25, "w":1.5}, {"x":3, "y":5.25, "w":7}, {"label":"Alt", "x":10, "y":5.25, "w":1.5}, {"label":"Ctrl", "x":11.5, "y":5.25, "w":1.5}, {"label":"Left", "x":13.25, "y":5.5}, {"label":"Down", "x":14.25, "y":5.5}, {"label":"Right", "x":15.25, "y":5.5}] + }, + "LAYOUT_7u_iso": { + "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.25, "y":0}, {"label":"F2", "x":2.25, "y":0}, {"label":"F3", "x":3.25, "y":0}, {"label":"F4", "x":4.25, "y":0}, {"label":"F5", "x":5.5, "y":0}, {"label":"F6", "x":6.5, "y":0}, {"label":"F7", "x":7.5, "y":0}, {"label":"F8", "x":8.5, "y":0}, {"label":"F9", "x":9.75, "y":0}, {"label":"F10", "x":10.75, "y":0}, {"label":"F11", "x":11.75, "y":0}, {"label":"F12", "x":12.75, "y":0}, {"label":"F13", "x":14, "y":0}, {"label":"Mute", "x":15.5, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"label":"Backspace", "x":13, "y":1.25, "w":2}, {"label":"PgDn", "x":15.5, "y":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Y", "x":6.5, "y":2.25}, {"label":"U", "x":7.5, "y":2.25}, {"label":"I", "x":8.5, "y":2.25}, {"label":"O", "x":9.5, "y":2.25}, {"label":"P", "x":10.5, "y":2.25}, {"label":"[", "x":11.5, "y":2.25}, {"label":"]", "x":12.5, "y":2.25}, {"x":13.75, "y":2.25, "w":1.25, "h":2}, {"label":"PgUp", "x":15.5, "y":2.25}, {"x":0, "y":3.25, "w":1.25}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"H", "x":6.75, "y":3.25}, {"label":"J", "x":7.75, "y":3.25}, {"label":"K", "x":8.75, "y":3.25}, {"label":"L", "x":9.75, "y":3.25}, {"label":";", "x":10.75, "y":3.25}, {"label":"\"", "x":11.75, "y":3.25}, {"label":"|", "x":12.75, "y":3.25}, {"label":"Del", "x":15.5, "y":3.25}, {"label":"Shift", "x":0, "y":4.25, "w":1.25}, {"label":"Shift", "x":1.25, "y":4.25}, {"label":"Z", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"N", "x":7.25, "y":4.25}, {"label":"M", "x":8.25, "y":4.25}, {"label":"<", "x":9.25, "y":4.25}, {"label":">", "x":10.25, "y":4.25}, {"label":"?", "x":11.25, "y":4.25}, {"label":"Shift", "x":12.25, "y":4.25, "w":1.75}, {"label":"MO(1)", "x":15.5, "y":4.25}, {"label":"Up", "x":14.25, "y":4.5}, {"label":"Alt", "x":0, "y":5.25, "w":1.5}, {"label":"Alt", "x":1.5, "y":5.25, "w":1.5}, {"x":3, "y":5.25, "w":7}, {"label":"Alt", "x":10, "y":5.25, "w":1.5}, {"label":"Ctrl", "x":11.5, "y":5.25, "w":1.5}, {"label":"Left", "x":13.25, "y":5.5}, {"label":"Down", "x":14.25, "y":5.5}, {"label":"Right", "x":15.25, "y":5.5}] + }, + "LAYOUT_iso": { + "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.25, "y":0}, {"label":"F2", "x":2.25, "y":0}, {"label":"F3", "x":3.25, "y":0}, {"label":"F4", "x":4.25, "y":0}, {"label":"F5", "x":5.5, "y":0}, {"label":"F6", "x":6.5, "y":0}, {"label":"F7", "x":7.5, "y":0}, {"label":"F8", "x":8.5, "y":0}, {"label":"F9", "x":9.75, "y":0}, {"label":"F10", "x":10.75, "y":0}, {"label":"F11", "x":11.75, "y":0}, {"label":"F12", "x":12.75, "y":0}, {"label":"F13", "x":14, "y":0}, {"label":"Mute", "x":15.5, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"label":"Backspace", "x":13, "y":1.25, "w":2}, {"label":"PgDn", "x":15.5, "y":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Y", "x":6.5, "y":2.25}, {"label":"U", "x":7.5, "y":2.25}, {"label":"I", "x":8.5, "y":2.25}, {"label":"O", "x":9.5, "y":2.25}, {"label":"P", "x":10.5, "y":2.25}, {"label":"[", "x":11.5, "y":2.25}, {"label":"]", "x":12.5, "y":2.25}, {"x":13.75, "y":2.25, "w":1.25, "h":2}, {"label":"PgUp", "x":15.5, "y":2.25}, {"x":0, "y":3.25, "w":1.25}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"H", "x":6.75, "y":3.25}, {"label":"J", "x":7.75, "y":3.25}, {"label":"K", "x":8.75, "y":3.25}, {"label":"L", "x":9.75, "y":3.25}, {"label":";", "x":10.75, "y":3.25}, {"label":"\"", "x":11.75, "y":3.25}, {"label":"|", "x":12.75, "y":3.25}, {"label":"Del", "x":15.5, "y":3.25}, {"label":"Shift", "x":0, "y":4.25, "w":1.25}, {"label":"Shift", "x":1.25, "y":4.25}, {"label":"Z", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"N", "x":7.25, "y":4.25}, {"label":"M", "x":8.25, "y":4.25}, {"label":"<", "x":9.25, "y":4.25}, {"label":">", "x":10.25, "y":4.25}, {"label":"?", "x":11.25, "y":4.25}, {"label":"Shift", "x":12.25, "y":4.25, "w":1.75}, {"label":"MO(1)", "x":15.5, "y":4.25}, {"label":"Up", "x":14.25, "y":4.5}, {"label":"Alt", "x":0, "y":5.25, "w":1.25}, {"label":"Alt", "x":1.25, "y":5.25, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, {"x":3.75, "y":5.25, "w":6.25}, {"label":"Alt", "x":10, "y":5.25, "w":1.5}, {"label":"Ctrl", "x":11.5, "y":5.25, "w":1.5}, {"label":"Left", "x":13.25, "y":5.5}, {"label":"Down", "x":14.25, "y":5.5}, {"label":"Right", "x":15.25, "y":5.5}] + }, + "LAYOUT_sbs": { + "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.25, "y":0}, {"label":"F2", "x":2.25, "y":0}, {"label":"F3", "x":3.25, "y":0}, {"label":"F4", "x":4.25, "y":0}, {"label":"F5", "x":5.5, "y":0}, {"label":"F6", "x":6.5, "y":0}, {"label":"F7", "x":7.5, "y":0}, {"label":"F8", "x":8.5, "y":0}, {"label":"F9", "x":9.75, "y":0}, {"label":"F10", "x":10.75, "y":0}, {"label":"F11", "x":11.75, "y":0}, {"label":"F12", "x":12.75, "y":0}, {"label":"F13", "x":14, "y":0}, {"label":"Mute", "x":15.5, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"label":"|", "x":13, "y":1.25}, {"label":"Insert", "x":14, "y":1.25}, {"label":"PgDn", "x":15.5, "y":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Y", "x":6.5, "y":2.25}, {"label":"U", "x":7.5, "y":2.25}, {"label":"I", "x":8.5, "y":2.25}, {"label":"O", "x":9.5, "y":2.25}, {"label":"P", "x":10.5, "y":2.25}, {"label":"[", "x":11.5, "y":2.25}, {"label":"]", "x":12.5, "y":2.25}, {"label":"Backspace", "x":13.5, "y":2.25, "w":1.5}, {"label":"PgUp", "x":15.5, "y":2.25}, {"x":0, "y":3.25, "w":1.25}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"H", "x":6.75, "y":3.25}, {"label":"J", "x":7.75, "y":3.25}, {"label":"K", "x":8.75, "y":3.25}, {"label":"L", "x":9.75, "y":3.25}, {"label":";", "x":10.75, "y":3.25}, {"label":"\"", "x":11.75, "y":3.25}, {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, {"label":"Del", "x":15.5, "y":3.25}, {"label":"Shift", "x":0, "y":4.25, "w":2.25}, {"label":"Z", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"N", "x":7.25, "y":4.25}, {"label":"M", "x":8.25, "y":4.25}, {"label":"<", "x":9.25, "y":4.25}, {"label":">", "x":10.25, "y":4.25}, {"label":"?", "x":11.25, "y":4.25}, {"label":"Shift", "x":12.25, "y":4.25, "w":1.75}, {"label":"MO(1)", "x":15.5, "y":4.25}, {"label":"Up", "x":14.25, "y":4.5}, {"label":"Alt", "x":0, "y":5.25, "w":1.25}, {"label":"Alt", "x":1.25, "y":5.25, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, {"x":3.75, "y":5.25, "w":6.25}, {"label":"Alt", "x":10, "y":5.25, "w":1.5}, {"label":"Ctrl", "x":11.5, "y":5.25, "w":1.5}, {"label":"Left", "x":13.25, "y":5.5}, {"label":"Down", "x":14.25, "y":5.5}, {"label":"Right", "x":15.25, "y":5.5}] + }, + "LAYOUT_7u_sbs": { + "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.25, "y":0}, {"label":"F2", "x":2.25, "y":0}, {"label":"F3", "x":3.25, "y":0}, {"label":"F4", "x":4.25, "y":0}, {"label":"F5", "x":5.5, "y":0}, {"label":"F6", "x":6.5, "y":0}, {"label":"F7", "x":7.5, "y":0}, {"label":"F8", "x":8.5, "y":0}, {"label":"F9", "x":9.75, "y":0}, {"label":"F10", "x":10.75, "y":0}, {"label":"F11", "x":11.75, "y":0}, {"label":"F12", "x":12.75, "y":0}, {"label":"F13", "x":14, "y":0}, {"label":"Mute", "x":15.5, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"label":"|", "x":13, "y":1.25}, {"label":"Insert", "x":14, "y":1.25}, {"label":"PgDn", "x":15.5, "y":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Y", "x":6.5, "y":2.25}, {"label":"U", "x":7.5, "y":2.25}, {"label":"I", "x":8.5, "y":2.25}, {"label":"O", "x":9.5, "y":2.25}, {"label":"P", "x":10.5, "y":2.25}, {"label":"[", "x":11.5, "y":2.25}, {"label":"]", "x":12.5, "y":2.25}, {"label":"Backspace", "x":13.5, "y":2.25, "w":1.5}, {"label":"PgUp", "x":15.5, "y":2.25}, {"x":0, "y":3.25, "w":1.25}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"H", "x":6.75, "y":3.25}, {"label":"J", "x":7.75, "y":3.25}, {"label":"K", "x":8.75, "y":3.25}, {"label":"L", "x":9.75, "y":3.25}, {"label":";", "x":10.75, "y":3.25}, {"label":"\"", "x":11.75, "y":3.25}, {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, {"label":"Del", "x":15.5, "y":3.25}, {"label":"Shift", "x":0, "y":4.25, "w":2.25}, {"label":"Z", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"N", "x":7.25, "y":4.25}, {"label":"M", "x":8.25, "y":4.25}, {"label":"<", "x":9.25, "y":4.25}, {"label":">", "x":10.25, "y":4.25}, {"label":"?", "x":11.25, "y":4.25}, {"label":"Shift", "x":12.25, "y":4.25, "w":1.75}, {"label":"MO(1)", "x":15.5, "y":4.25}, {"label":"Up", "x":14.25, "y":4.5}, {"label":"Alt", "x":0, "y":5.25, "w":1.5}, {"label":"Alt", "x":1.5, "y":5.25, "w":1.5}, {"x":3, "y":5.25, "w":7}, {"label":"Alt", "x":10, "y":5.25, "w":1.5}, {"label":"Ctrl", "x":11.5, "y":5.25, "w":1.5}, {"label":"Left", "x":13.25, "y":5.5}, {"label":"Down", "x":14.25, "y":5.5}, {"label":"Right", "x":15.25, "y":5.5}] + }, + "LAYOUT_iso_sbs": { + "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.25, "y":0}, {"label":"F2", "x":2.25, "y":0}, {"label":"F3", "x":3.25, "y":0}, {"label":"F4", "x":4.25, "y":0}, {"label":"F5", "x":5.5, "y":0}, {"label":"F6", "x":6.5, "y":0}, {"label":"F7", "x":7.5, "y":0}, {"label":"F8", "x":8.5, "y":0}, {"label":"F9", "x":9.75, "y":0}, {"label":"F10", "x":10.75, "y":0}, {"label":"F11", "x":11.75, "y":0}, {"label":"F12", "x":12.75, "y":0}, {"label":"F13", "x":14, "y":0}, {"label":"Mute", "x":15.5, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"label":"Ins", "x":13, "y":1.25}, {"label":"Del", "x":14, "y":1.25}, {"label":"PgDn", "x":15.5, "y":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Y", "x":6.5, "y":2.25}, {"label":"U", "x":7.5, "y":2.25}, {"label":"I", "x":8.5, "y":2.25}, {"label":"O", "x":9.5, "y":2.25}, {"label":"P", "x":10.5, "y":2.25}, {"label":"[", "x":11.5, "y":2.25}, {"label":"]", "x":12.5, "y":2.25}, {"x":13.75, "y":2.25, "w":1.25, "h":2}, {"label":"PgUp", "x":15.5, "y":2.25}, {"x":0, "y":3.25, "w":1.25}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"H", "x":6.75, "y":3.25}, {"label":"J", "x":7.75, "y":3.25}, {"label":"K", "x":8.75, "y":3.25}, {"label":"L", "x":9.75, "y":3.25}, {"label":";", "x":10.75, "y":3.25}, {"label":"\"", "x":11.75, "y":3.25}, {"label":"|", "x":12.75, "y":3.25}, {"label":"Del", "x":15.5, "y":3.25}, {"label":"Shift", "x":0, "y":4.25, "w":1.25}, {"label":"Shift", "x":1.25, "y":4.25}, {"label":"Z", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"N", "x":7.25, "y":4.25}, {"label":"M", "x":8.25, "y":4.25}, {"label":"<", "x":9.25, "y":4.25}, {"label":">", "x":10.25, "y":4.25}, {"label":"?", "x":11.25, "y":4.25}, {"label":"Shift", "x":12.25, "y":4.25, "w":1.75}, {"label":"MO(1)", "x":15.5, "y":4.25}, {"label":"Up", "x":14.25, "y":4.5}, {"label":"Alt", "x":0, "y":5.25, "w":1.25}, {"label":"Alt", "x":1.25, "y":5.25, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, {"x":3.75, "y":5.25, "w":6.25}, {"label":"Alt", "x":10, "y":5.25, "w":1.5}, {"label":"Ctrl", "x":11.5, "y":5.25, "w":1.5}, {"label":"Left", "x":13.25, "y":5.5}, {"label":"Down", "x":14.25, "y":5.5}, {"label":"Right", "x":15.25, "y":5.5}] } } -} +} \ No newline at end of file diff --git a/keyboards/lck75/keymaps/7u/keymap.c b/keyboards/lck75/keymaps/7u/keymap.c new file mode 100644 index 000000000000..25cf66176ee0 --- /dev/null +++ b/keyboards/lck75/keymaps/7u/keymap.c @@ -0,0 +1,42 @@ +/* Copyright 2020 Lyso1/Lysol#5640(board/layout code) + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + + + +// + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_7u( + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_MUTE, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT), + + [1] = LAYOUT_7u( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_RALT, MO(1), KC_TRNS, KC_TRNS, KC_TRNS) +}; + + + + diff --git a/keyboards/lck75/keymaps/7u_iso/keymap.c b/keyboards/lck75/keymaps/7u_iso/keymap.c new file mode 100644 index 000000000000..f42d63877861 --- /dev/null +++ b/keyboards/lck75/keymaps/7u_iso/keymap.c @@ -0,0 +1,42 @@ +/* Copyright 2020 Lyso1/Lysol#5640(board/layout code) + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + + + +// + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_7u_iso( + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_MUTE, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, KC_PGUP, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT), + + [1] = LAYOUT_iso( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_RALT, MO(1), KC_TRNS, KC_TRNS, KC_TRNS) +}; + + + + diff --git a/keyboards/lck75/keymaps/7u_sbs/keymap.c b/keyboards/lck75/keymaps/7u_sbs/keymap.c new file mode 100644 index 000000000000..3c562659dce7 --- /dev/null +++ b/keyboards/lck75/keymaps/7u_sbs/keymap.c @@ -0,0 +1,42 @@ +/* Copyright 2020 Lyso1/Lysol#5640(board/layout code) + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + + + +// + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_7u_sbs( + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_MUTE, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, KC_INS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT), + + [1] = LAYOUT_7u_sbs( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_RALT, MO(1), KC_TRNS, KC_TRNS, KC_TRNS) +}; + + + + diff --git a/keyboards/lck75/keymaps/default/keymap.c b/keyboards/lck75/keymaps/default/keymap.c index 694b42a6883e..4af75f23e263 100644 --- a/keyboards/lck75/keymaps/default/keymap.c +++ b/keyboards/lck75/keymaps/default/keymap.c @@ -20,21 +20,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_lck75_ansi( - KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_MUTE, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, - KC_NO, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT), - - [1] = LAYOUT_lck75_ansi( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_LGUI, KC_TRNS, KC_TRNS, KC_RALT, MO(1), KC_TRNS, KC_TRNS, KC_TRNS) + [0] = LAYOUT_default( + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_MUTE, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT), + + [1] = LAYOUT_default( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RALT, MO(1), KC_TRNS, KC_TRNS, KC_TRNS) }; diff --git a/keyboards/lck75/keymaps/iso/keymap.c b/keyboards/lck75/keymaps/iso/keymap.c new file mode 100644 index 000000000000..f0d6dbaf1216 --- /dev/null +++ b/keyboards/lck75/keymaps/iso/keymap.c @@ -0,0 +1,41 @@ +/* Copyright 2020 Lyso1/Lysol#5640(board/layout code) + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + + + +// + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_iso( + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_MUTE, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, KC_PGUP, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT), + + [1] = LAYOUT_iso( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RALT, MO(1), KC_TRNS, KC_TRNS, KC_TRNS) +}; + + + diff --git a/keyboards/lck75/keymaps/iso_sbs/keymap.c b/keyboards/lck75/keymaps/iso_sbs/keymap.c new file mode 100644 index 000000000000..a2b2469d3e2e --- /dev/null +++ b/keyboards/lck75/keymaps/iso_sbs/keymap.c @@ -0,0 +1,41 @@ +/* Copyright 2020 Lyso1/Lysol#5640(board/layout code) + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + + + +// + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_iso_sbs( + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_MUTE, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, KC_INS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, KC_PGUP, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT), + + [1] = LAYOUT_iso_sbs( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RALT, MO(1), KC_TRNS, KC_TRNS, KC_TRNS) +}; + + + diff --git a/keyboards/lck75/keymaps/sbs/keymap.c b/keyboards/lck75/keymaps/sbs/keymap.c new file mode 100644 index 000000000000..767176561997 --- /dev/null +++ b/keyboards/lck75/keymaps/sbs/keymap.c @@ -0,0 +1,41 @@ +/* Copyright 2020 Lyso1/Lysol#5640(board/layout code) + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + + + +// + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_sbs( + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_MUTE, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, KC_INS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT), + + [1] = LAYOUT_sbs( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RALT, MO(1), KC_TRNS, KC_TRNS, KC_TRNS) +}; + + + diff --git a/keyboards/lck75/keymaps/via/keymap.c b/keyboards/lck75/keymaps/via/keymap.c index 697de925b591..4ba5c50f4432 100644 --- a/keyboards/lck75/keymaps/via/keymap.c +++ b/keyboards/lck75/keymaps/via/keymap.c @@ -15,39 +15,39 @@ #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_lck75_ansi( - KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_MUTE, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, - KC_NO, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT + [0] = LAYOUT_default( + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_MUTE, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT ), - [1] = LAYOUT_lck75_ansi( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_LGUI, KC_TRNS, KC_TRNS, KC_RALT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + [1] = LAYOUT_default( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RALT, MO(1), KC_TRNS, KC_TRNS, KC_TRNS ), - [2] = LAYOUT_lck75_ansi( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + [2] = LAYOUT_default( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RALT, MO(1), KC_TRNS, KC_TRNS, KC_TRNS ), - [3] = LAYOUT_lck75_ansi( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + [3] = LAYOUT_default( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RALT, MO(1), KC_TRNS, KC_TRNS, KC_TRNS ) }; diff --git a/keyboards/lck75/lck75.c b/keyboards/lck75/lck75.c index caca42678a65..55650681ac79 100644 --- a/keyboards/lck75/lck75.c +++ b/keyboards/lck75/lck75.c @@ -32,12 +32,15 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { #define TAP_SPEED 40 #define ANIM_FRAME_DURATION 200 #define ANIM_SIZE 512 -#ifdef OLED_DRIVER_ENABLE -__attribute__((weak)) oled_rotation_t oled_init_user(oled_rotation_t rotation) { +#ifdef OLED_ENABLE +oled_rotation_t oled_init_kb(oled_rotation_t rotation) { return OLED_ROTATION_180; } -__attribute__((weak)) void oled_task_user(void) { +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } static uint32_t anim_timer = 0; static uint32_t anim_sleep = 0; static uint8_t current_idle_frame = 0; @@ -140,6 +143,6 @@ static uint8_t current_tap_frame = 0; } } } - + return false; } #endif diff --git a/keyboards/lck75/lck75.h b/keyboards/lck75/lck75.h index 08eb8c4b1148..d7648eff2a62 100644 --- a/keyboards/lck75/lck75.h +++ b/keyboards/lck75/lck75.h @@ -23,36 +23,121 @@ #include "quantum.h" -#define LAYOUT_lck75_ansi(\ - 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, K3D, K3E, \ - K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, \ - K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E \ +#define LAYOUT_default(\ + 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, K2C, K2E, K2F, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3E, K3F, \ + K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4E, K4F, \ + K50, K51, K52, K56, K5A, K5B, K5C, K5E, K5F \ ) \ { \ - { 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, _x_, K3D, K3E }, \ - { K40, _x_, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E }, \ - { K50, K51, K52, _x_, _x_, _x_, K56, _x_, _x_, _x_, K5A, K5B, K5C, K5D, K5E} \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, _x_, K0E, K0F}, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, _x_, K1E, K1F}, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, _x_, K2E, K2F}, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, _x_, _x_, K3E, K3F}, \ + { K40, _x_, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, _x_, K4E, K4F}, \ + { K50, K51, K52, _x_, _x_, _x_, K56, _x_, _x_, _x_, K5A, K5B, K5C, _x_, K5E, K5F} \ } -#define LAYOUT_lck75_7u( \ - 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, K3D, K3E, \ - K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, \ - K50, K52, K56, K5A, K5B, K5C, K5D, K5E \ +#define LAYOUT_7u( \ + 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, K2C, K2E, K2F, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3E, K3F, \ + K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4E, K4F, \ + K50, K52, K56, K5A, K5B, K5C, K5E, K5F \ ) \ { \ - { 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, _x_, K3D, K3E }, \ - { K40, _x_, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E }, \ - { K50, _x_, K52, _x_, _x_, _x_, K56, _x_, _x_, _x_, K5A, K5B, K5C, K5D, K5E } \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, _x_, K0E, K0F}, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, _x_, K1E, K1F}, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, _x_, K2E, K2F}, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, _x_, _x_, K3E, K3F}, \ + { K40, _x_, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, _x_, K4E, K4F}, \ + { K50, _x_, K52, _x_, _x_, _x_, K56, _x_, _x_, _x_, K5A, K5B, K5C, _x_, K5E, K5F} \ +} + +#define LAYOUT_iso_sbs( \ + 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, K1D, K1E, K1F, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2F, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, K3F, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4E, K4F, \ + K50, K51, K52, K56, K5A, K5B, K5C, K5E, K5F \ +) \ +{ \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, _x_, 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, _x_, _x_, K2F}, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, _x_, K3E, K3F}, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, _x_, K4E, K4F}, \ + { K50, K51, K52, _x_, _x_, _x_, K56, _x_, _x_, _x_, K5A, K5B, K5C, _x_, K5E, K5F} \ +} + +#define LAYOUT_sbs( \ + 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, K1D, 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, K3E, K3F, \ + K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4E, K4F, \ + K50, K51, K52, K56, K5A, K5B, K5C, K5E, K5F \ +) \ +{ \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, _x_, 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, _x_, K2E, K2F}, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, _x_, _x_, K3E, K3F}, \ + { K40, _x_, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, _x_, K4E, K4F}, \ + { K50, K51, K52, _x_, _x_, _x_, K56, _x_, _x_, _x_, K5A, K5B, K5C, _x_, K5E, K5F} \ +} + +#define LAYOUT_7u_sbs( \ + 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, K1D, 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, K3E, K3F, \ + K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4E, K4F, \ + K50, K52, K56, K5A, K5B, K5C, K5E, K5F \ +) \ +{ \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, _x_, 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, _x_, K2E, K2F}, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, _x_, _x_, K3E, K3F}, \ + { K40, _x_, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, _x_, K4E, K4F}, \ + { K50, _x_, K52, _x_, _x_, _x_, K56, _x_, _x_, _x_, K5A, K5B, K5C, _x_, K5E, K5F} \ +} + +#define LAYOUT_iso( \ + 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, K2C, K2F, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, K3F, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4E, K4F, \ + K50, K51, K52, K56, K5A, K5B, K5C, K5E, K5F \ +) \ +{ \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, _x_, K0E, K0F}, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, _x_, K1E, K1F}, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, _x_, _x_, K2F}, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, _x_, K3E, K3F}, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, _x_, K4E, K4F}, \ + { K50, K51, K52, _x_, _x_, _x_, K56, _x_, _x_, _x_, K5A, K5B, K5C, _x_, K5E, K5F} \ +} + +#define LAYOUT_7u_iso( \ + 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, K2C, K2F, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, K3F, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4E, K4F, \ + K50, K52, K56, K5A, K5B, K5C, K5E, K5F \ +) \ +{ \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, _x_, K0E, K0F}, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, _x_, K1E, K1F}, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, _x_, _x_, K2F}, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, _x_, K3E, K3F}, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, _x_, K4E, K4F}, \ + { K50, _x_, K52, _x_, _x_, _x_, K56, _x_, _x_, _x_, K5A, K5B, K5C, _x_, K5E, K5F} \ } diff --git a/keyboards/lck75/rules.mk b/keyboards/lck75/rules.mk index ee196d53ac1f..cb116ece2098 100644 --- a/keyboards/lck75/rules.mk +++ b/keyboards/lck75/rules.mk @@ -5,28 +5,25 @@ MCU = atmega32a F_CPU = 16000000 # Bootloader selection -BOOTLOADER = USBasp +BOOTLOADER = usbasploader # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 UNICODE_ENABLE = yes -OLED_DRIVER_ENABLE = yes -ENCODER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 +ENCODER_ENABLE = yes WPM_ENABLE = yes LTO_ENABLE = no AUTO_SHIFT_ENABLE = no - diff --git a/keyboards/le_chiffre/config.h b/keyboards/le_chiffre/config.h index e14b4665f2b8..b2e4c673a4a0 100644 --- a/keyboards/le_chiffre/config.h +++ b/keyboards/le_chiffre/config.h @@ -69,11 +69,60 @@ #ifdef RGB_MATRIX_ENABLE #define RGB_MATRIX_KEYPRESSES // reacts to keypresses -#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended #define RGB_MATRIX_FRAMEBUFFER_EFFECTS #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash. #define RGB_MATRIX_HUE_STEP 8 #define RGB_MATRIX_SAT_STEP 8 #define RGB_MATRIX_VAL_STEP 8 #define RGB_MATRIX_SPD_STEP 10 + +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH #endif diff --git a/keyboards/le_chiffre/info.json b/keyboards/le_chiffre/info.json index eda303ffc15d..afcbc752a5f8 100644 --- a/keyboards/le_chiffre/info.json +++ b/keyboards/le_chiffre/info.json @@ -2,8 +2,6 @@ "keyboard_name": "le_chiffre", "url": "", "maintainer": "tominabox1", - "width": 11, - "height": 4, "layouts": { "LAYOUT": { "layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "y":0}, {"label":"Rotary", "x":5, "y":0, "w":1}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, diff --git a/keyboards/le_chiffre/keymaps/default/keymap.c b/keyboards/le_chiffre/keymaps/default/keymap.c index 5d4a4e0f94dd..45fee56a95c9 100644 --- a/keyboards/le_chiffre/keymaps/default/keymap.c +++ b/keyboards/le_chiffre/keymaps/default/keymap.c @@ -90,7 +90,7 @@ combo_t key_combos[COMBO_COUNT] = { }; #endif -#ifdef OLED_DRIVER_ENABLE //Special thanks to Sickbabies for this great OLED widget! +#ifdef OLED_ENABLE //Special thanks to Sickbabies for this great OLED widget! oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_90; // rotates for proper orientation } @@ -185,13 +185,15 @@ void render_mod_status(uint8_t modifiers) { oled_write_ln_P(PSTR("GUI"), (modifiers & MOD_MASK_GUI)); } -void oled_task_user(void) { +bool oled_task_user(void) { render_lechiffre_logo(); oled_set_cursor(0,3); render_layer_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) render_mod_status(get_mods()|get_oneshot_mods()); render_keylock_status(host_keyboard_led_state()); render_keylogger_status(); + + return false; } bool process_record_user(uint16_t keycode, keyrecord_t *record) { diff --git a/keyboards/le_chiffre/keymaps/via/keymap.c b/keyboards/le_chiffre/keymaps/via/keymap.c index fcb546374438..10a2fb0d4ab6 100644 --- a/keyboards/le_chiffre/keymaps/via/keymap.c +++ b/keyboards/le_chiffre/keymaps/via/keymap.c @@ -49,7 +49,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { return true; } -#ifdef OLED_DRIVER_ENABLE //Special thanks to Sickbabies for this great OLED widget! +#ifdef OLED_ENABLE //Special thanks to Sickbabies for this great OLED widget! oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_90; // rotates for proper orientation } @@ -144,13 +144,14 @@ void render_mod_status(uint8_t modifiers) { oled_write_ln_P(PSTR("GUI"), (modifiers & MOD_MASK_GUI)); } -void oled_task_user(void) { +bool oled_task_user(void) { render_lechiffre_logo(); oled_set_cursor(0,3); // render_layer_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) render_mod_status(get_mods()|get_oneshot_mods()); render_keylock_status(host_keyboard_led_state()); render_keylogger_status(); + return false; } bool process_record_user(uint16_t keycode, keyrecord_t *record) { diff --git a/keyboards/le_chiffre/rules.mk b/keyboards/le_chiffre/rules.mk index 2d3a50ca16c6..f1adb6f4ff7d 100644 --- a/keyboards/le_chiffre/rules.mk +++ b/keyboards/le_chiffre/rules.mk @@ -2,24 +2,15 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -TAP_DANCE_ENABLE = no ENCODER_ENABLE = yes -OLED_DRIVER_ENABLE = no +OLED_ENABLE = no RGB_MATRIX_ENABLE = yes RGB_MATRIX_DRIVER = WS2812 LTO_ENABLE = yes diff --git a/keyboards/leafcutterlabs/bigknob/info.json b/keyboards/leafcutterlabs/bigknob/info.json index 697edebbefdd..e08004228180 100644 --- a/keyboards/leafcutterlabs/bigknob/info.json +++ b/keyboards/leafcutterlabs/bigknob/info.json @@ -2,8 +2,6 @@ "keyboard_name": "bigknob", "url": "", "maintainer": "qmk", - "width": 5, - "height": 1, "layouts": { "LAYOUT_ortho_1x5": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}] diff --git a/keyboards/leafcutterlabs/bigknob/rules.mk b/keyboards/leafcutterlabs/bigknob/rules.mk index 6d6364cadd7f..15bf1c3b2204 100644 --- a/keyboards/leafcutterlabs/bigknob/rules.mk +++ b/keyboards/leafcutterlabs/bigknob/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes # Enable rotary encoders diff --git a/keyboards/leeku/finger65/info.json b/keyboards/leeku/finger65/info.json index f78d7098b0ba..5ecfb5fbaded 100644 --- a/keyboards/leeku/finger65/info.json +++ b/keyboards/leeku/finger65/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Leeku Finger65", "url": "", "maintainer": "sidcarter", - "width": 16, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/leeku/finger65/keymaps/madhatter/keymap.c b/keyboards/leeku/finger65/keymaps/madhatter/keymap.c index f8d5a0f7bbe3..a69fe6915310 100644 --- a/keyboards/leeku/finger65/keymaps/madhatter/keymap.c +++ b/keyboards/leeku/finger65/keymaps/madhatter/keymap.c @@ -39,7 +39,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -// uint32_t layer_state_set_user(uint32_t state) { +// layer_state_t layer_state_set_user(layer_state_t state) { // switch(biton32(state)) { // case _FNMS: // led_off(); diff --git a/keyboards/leeku/finger65/rules.mk b/keyboards/leeku/finger65/rules.mk index 1ebd43b085e2..9089d8bd7cd2 100644 --- a/keyboards/leeku/finger65/rules.mk +++ b/keyboards/leeku/finger65/rules.mk @@ -2,24 +2,14 @@ MCU = atmega32a # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 NKRO_ENABLE = no # USB Nkey Rollover -MIDI_ENABLE = no # MIDI support diff --git a/keyboards/lefishe/config.h b/keyboards/lefishe/config.h new file mode 100644 index 000000000000..a5bafa5413a0 --- /dev/null +++ b/keyboards/lefishe/config.h @@ -0,0 +1,48 @@ +/*Copyright 2019 Lyso1 + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +#define VENDOR_ID 0x7856 +#define PRODUCT_ID 0x6169 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Lyso1 +#define PRODUCT lefishe + + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 18 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { B7, F7, F6, F5, F4 } +#define MATRIX_COL_PINS { F0, F1, D5, C7, C6, B6, B5, B4, D7, D6, D4, D3, D2, D1, D0, B3, B2, B1 } +#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/lefishe/info.json b/keyboards/lefishe/info.json new file mode 100644 index 000000000000..e31877a95bc7 --- /dev/null +++ b/keyboards/lefishe/info.json @@ -0,0 +1,19 @@ +{ + "keyboard_name": "Le_Fishe", + "url": "", + "maintainer": "Lyso1", + "layouts": { + "LAYOUT_default": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"label":"~", "x":2.25, "y":0}, {"label":"!", "x":3.25, "y":0}, {"label":"@", "x":4.25, "y":0}, {"label":"#", "x":5.25, "y":0}, {"label":"$", "x":6.25, "y":0}, {"label":"%", "x":7.25, "y":0}, {"label":"^", "x":8.25, "y":0}, {"label":"&", "x":9.25, "y":0}, {"label":"*", "x":10.25, "y":0}, {"label":"(", "x":11.25, "y":0}, {"label":")", "x":12.25, "y":0}, {"label":"_", "x":13.25, "y":0}, {"label":"+", "x":14.25, "y":0}, {"label":"Backspace", "x":15.25, "y":0, "w":2}, {"label":"Insert", "x":17.25, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"label":"Tab", "x":2.25, "y":1, "w":1.5}, {"label":"Q", "x":3.75, "y":1}, {"label":"W", "x":4.75, "y":1}, {"label":"E", "x":5.75, "y":1}, {"label":"R", "x":6.75, "y":1}, {"label":"T", "x":7.75, "y":1}, {"label":"Y", "x":8.75, "y":1}, {"label":"U", "x":9.75, "y":1}, {"label":"I", "x":10.75, "y":1}, {"label":"O", "x":11.75, "y":1}, {"label":"P", "x":12.75, "y":1}, {"label":"{", "x":13.75, "y":1}, {"label":"}", "x":14.75, "y":1}, {"label":"|", "x":15.75, "y":1, "w":1.5}, {"label":"Delete", "x":17.25, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"label":"Caps", "x":2.25, "y":2, "w":1.25}, {"label":"A", "x":4, "y":2}, {"label":"S", "x":5, "y":2}, {"label":"D", "x":6, "y":2}, {"label":"F", "x":7, "y":2}, {"label":"G", "x":8, "y":2}, {"label":"H", "x":9, "y":2}, {"label":"J", "x":10, "y":2}, {"label":"K", "x":11, "y":2}, {"label":"L", "x":12, "y":2}, {"label":":", "x":13, "y":2}, {"label":"\"", "x":14, "y":2}, {"label":"Enter", "x":15, "y":2, "w":2.25}, {"label":"PgUp", "x":17.25, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"label":"Shift", "x":2.25, "y":3, "w":2.25}, {"label":"Z", "x":4.5, "y":3}, {"label":"X", "x":5.5, "y":3}, {"label":"C", "x":6.5, "y":3}, {"label":"V", "x":7.5, "y":3}, {"label":"B", "x":8.5, "y":3}, {"label":"N", "x":9.5, "y":3}, {"label":"M", "x":10.5, "y":3}, {"label":"<", "x":11.5, "y":3}, {"label":">", "x":12.5, "y":3}, {"label":"?", "x":13.5, "y":3}, {"label":"Shift", "x":14.5, "y":3, "w":1.75}, {"label":"\u2191", "x":16.25, "y":3}, {"label":"PgDn", "x":17.25, "y":3}, {"x":0, "y":4}, {"x":1, "y":4}, {"label":"Ctrl", "x":2.25, "y":4, "w":1.5}, {"label":"LGUI", "x":3.75, "y":4}, {"label":"Alt", "x":4.75, "y":4, "w":1.5}, {"x":6.25, "y":4, "w":7}, {"label":"Alt", "x":13.25, "y":4, "w":1.5}, {"label":"\u2190", "x":15.25, "y":4}, {"label":"\u2193", "x":16.25, "y":4}, {"label":"\u2192", "x":17.25, "y":4}] + }, + "LAYOUT_wk_sbs": { + "layout": [{"label":"F1", "x":0, "y":0}, {"label":"F2", "x":1, "y":0}, {"label":"~", "x":2.25, "y":0}, {"label":"!", "x":3.25, "y":0}, {"label":"@", "x":4.25, "y":0}, {"label":"#", "x":5.25, "y":0}, {"label":"$", "x":6.25, "y":0}, {"label":"%", "x":7.25, "y":0}, {"label":"^", "x":8.25, "y":0}, {"label":"&", "x":9.25, "y":0}, {"label":"*", "x":10.25, "y":0}, {"label":"(", "x":11.25, "y":0}, {"label":")", "x":12.25, "y":0}, {"label":"_", "x":13.25, "y":0}, {"label":"+", "x":14.25, "y":0}, {"label":"|", "x":15.25, "y":0}, {"x":16.25, "y":0}, {"label":"Insert", "x":17.25, "y":0}, {"label":"F3", "x":0, "y":1}, {"label":"F4", "x":1, "y":1}, {"label":"Tab", "x":2.25, "y":1, "w":1.5}, {"label":"Q", "x":3.75, "y":1}, {"label":"W", "x":4.75, "y":1}, {"label":"E", "x":5.75, "y":1}, {"label":"R", "x":6.75, "y":1}, {"label":"T", "x":7.75, "y":1}, {"label":"Y", "x":8.75, "y":1}, {"label":"U", "x":9.75, "y":1}, {"label":"I", "x":10.75, "y":1}, {"label":"O", "x":11.75, "y":1}, {"label":"P", "x":12.75, "y":1}, {"label":"{", "x":13.75, "y":1}, {"label":"}", "x":14.75, "y":1}, {"label":"Backspace", "x":15.75, "y":1, "w":1.5}, {"label":"Delete", "x":17.25, "y":1}, {"label":"F5", "x":0, "y":2}, {"label":"F6", "x":1, "y":2}, {"label":"Caps", "x":2.25, "y":2, "w":1.25}, {"label":"A", "x":4, "y":2}, {"label":"S", "x":5, "y":2}, {"label":"D", "x":6, "y":2}, {"label":"F", "x":7, "y":2}, {"label":"G", "x":8, "y":2}, {"label":"H", "x":9, "y":2}, {"label":"J", "x":10, "y":2}, {"label":"K", "x":11, "y":2}, {"label":"L", "x":12, "y":2}, {"label":":", "x":13, "y":2}, {"label":"\"", "x":14, "y":2}, {"label":"Enter", "x":15, "y":2, "w":2.25}, {"label":"PgUp", "x":17.25, "y":2}, {"label":"F7", "x":0, "y":3}, {"label":"F8", "x":1, "y":3}, {"label":"Shift", "x":2.25, "y":3, "w":2.25}, {"label":"Z", "x":4.5, "y":3}, {"label":"X", "x":5.5, "y":3}, {"label":"C", "x":6.5, "y":3}, {"label":"V", "x":7.5, "y":3}, {"label":"B", "x":8.5, "y":3}, {"label":"N", "x":9.5, "y":3}, {"label":"M", "x":10.5, "y":3}, {"label":"<", "x":11.5, "y":3}, {"label":">", "x":12.5, "y":3}, {"label":"?", "x":13.5, "y":3}, {"label":"Shift", "x":14.5, "y":3, "w":1.75}, {"label":"\u2191", "x":16.25, "y":3}, {"label":"PgDn", "x":17.25, "y":3}, {"label":"F9", "x":0, "y":4}, {"label":"F10", "x":1, "y":4}, {"label":"Ctrl", "x":2.25, "y":4, "w":1.5}, {"label":"LGUI", "x":3.75, "y":4}, {"label":"Alt", "x":4.75, "y":4, "w":1.5}, {"x":6.25, "y":4, "w":7}, {"label":"Alt", "x":13.25, "y":4, "w":1.5}, {"label":"\u2190", "x":15.25, "y":4}, {"label":"\u2193", "x":16.25, "y":4}, {"label":"\u2192", "x":17.25, "y":4}] + }, + "LAYOUT_wkl_sbs": { + "layout": [{"label":"F1", "x":0, "y":0}, {"label":"F2", "x":1, "y":0}, {"label":"~", "x":2.25, "y":0}, {"label":"!", "x":3.25, "y":0}, {"label":"@", "x":4.25, "y":0}, {"label":"#", "x":5.25, "y":0}, {"label":"$", "x":6.25, "y":0}, {"label":"%", "x":7.25, "y":0}, {"label":"^", "x":8.25, "y":0}, {"label":"&", "x":9.25, "y":0}, {"label":"*", "x":10.25, "y":0}, {"label":"(", "x":11.25, "y":0}, {"label":")", "x":12.25, "y":0}, {"label":"_", "x":13.25, "y":0}, {"label":"+", "x":14.25, "y":0}, {"label":"|", "x":15.25, "y":0}, {"x":16.25, "y":0}, {"label":"Insert", "x":17.25, "y":0}, {"label":"F3", "x":0, "y":1}, {"label":"F4", "x":1, "y":1}, {"label":"Tab", "x":2.25, "y":1, "w":1.5}, {"label":"Q", "x":3.75, "y":1}, {"label":"W", "x":4.75, "y":1}, {"label":"E", "x":5.75, "y":1}, {"label":"R", "x":6.75, "y":1}, {"label":"T", "x":7.75, "y":1}, {"label":"Y", "x":8.75, "y":1}, {"label":"U", "x":9.75, "y":1}, {"label":"I", "x":10.75, "y":1}, {"label":"O", "x":11.75, "y":1}, {"label":"P", "x":12.75, "y":1}, {"label":"{", "x":13.75, "y":1}, {"label":"}", "x":14.75, "y":1}, {"label":"Backspace", "x":15.75, "y":1, "w":1.5}, {"label":"Delete", "x":17.25, "y":1}, {"label":"F5", "x":0, "y":2}, {"label":"F6", "x":1, "y":2}, {"label":"Caps", "x":2.25, "y":2, "w":1.25}, {"label":"A", "x":4, "y":2}, {"label":"S", "x":5, "y":2}, {"label":"D", "x":6, "y":2}, {"label":"F", "x":7, "y":2}, {"label":"G", "x":8, "y":2}, {"label":"H", "x":9, "y":2}, {"label":"J", "x":10, "y":2}, {"label":"K", "x":11, "y":2}, {"label":"L", "x":12, "y":2}, {"label":":", "x":13, "y":2}, {"label":"\"", "x":14, "y":2}, {"label":"Enter", "x":15, "y":2, "w":2.25}, {"label":"PgUp", "x":17.25, "y":2}, {"label":"F7", "x":0, "y":3}, {"label":"F8", "x":1, "y":3}, {"label":"Shift", "x":2.25, "y":3, "w":2.25}, {"label":"Z", "x":4.5, "y":3}, {"label":"X", "x":5.5, "y":3}, {"label":"C", "x":6.5, "y":3}, {"label":"V", "x":7.5, "y":3}, {"label":"B", "x":8.5, "y":3}, {"label":"N", "x":9.5, "y":3}, {"label":"M", "x":10.5, "y":3}, {"label":"<", "x":11.5, "y":3}, {"label":">", "x":12.5, "y":3}, {"label":"?", "x":13.5, "y":3}, {"label":"Shift", "x":14.5, "y":3, "w":1.75}, {"label":"\u2191", "x":16.25, "y":3}, {"label":"PgDn", "x":17.25, "y":3}, {"label":"F9", "x":0, "y":4}, {"label":"F10", "x":1, "y":4}, {"label":"Ctrl", "x":2.25, "y":4, "w":1.5}, {"label":"Alt", "x":4.75, "y":4, "w":1.5}, {"x":6.25, "y":4, "w":7}, {"label":"Alt", "x":13.25, "y":4, "w":1.5}, {"label":"\u2190", "x":15.25, "y":4}, {"label":"\u2193", "x":16.25, "y":4}, {"label":"\u2192", "x":17.25, "y":4}] + }, + "LAYOUT_wkl": { + "layout": [{"label":"F1", "x":0, "y":0}, {"label":"F2", "x":1, "y":0}, {"label":"~", "x":2.25, "y":0}, {"label":"!", "x":3.25, "y":0}, {"label":"@", "x":4.25, "y":0}, {"label":"#", "x":5.25, "y":0}, {"label":"$", "x":6.25, "y":0}, {"label":"%", "x":7.25, "y":0}, {"label":"^", "x":8.25, "y":0}, {"label":"&", "x":9.25, "y":0}, {"label":"*", "x":10.25, "y":0}, {"label":"(", "x":11.25, "y":0}, {"label":")", "x":12.25, "y":0}, {"label":"_", "x":13.25, "y":0}, {"label":"+", "x":14.25, "y":0}, {"label":"Backspace", "x":15.25, "y":0, "w":2}, {"label":"Insert", "x":17.25, "y":0}, {"label":"F3", "x":0, "y":1}, {"label":"F4", "x":1, "y":1}, {"label":"Tab", "x":2.25, "y":1, "w":1.5}, {"label":"Q", "x":3.75, "y":1}, {"label":"W", "x":4.75, "y":1}, {"label":"E", "x":5.75, "y":1}, {"label":"R", "x":6.75, "y":1}, {"label":"T", "x":7.75, "y":1}, {"label":"Y", "x":8.75, "y":1}, {"label":"U", "x":9.75, "y":1}, {"label":"I", "x":10.75, "y":1}, {"label":"O", "x":11.75, "y":1}, {"label":"P", "x":12.75, "y":1}, {"label":"{", "x":13.75, "y":1}, {"label":"}", "x":14.75, "y":1}, {"label":"|", "x":15.75, "y":1, "w":1.5}, {"label":"Delete", "x":17.25, "y":1}, {"label":"F5", "x":0, "y":2}, {"label":"F6", "x":1, "y":2}, {"label":"Caps", "x":2.25, "y":2, "w":1.25}, {"label":"A", "x":4, "y":2}, {"label":"S", "x":5, "y":2}, {"label":"D", "x":6, "y":2}, {"label":"F", "x":7, "y":2}, {"label":"G", "x":8, "y":2}, {"label":"H", "x":9, "y":2}, {"label":"J", "x":10, "y":2}, {"label":"K", "x":11, "y":2}, {"label":"L", "x":12, "y":2}, {"label":":", "x":13, "y":2}, {"label":"\"", "x":14, "y":2}, {"label":"Enter", "x":15, "y":2, "w":2.25}, {"label":"PgUp", "x":17.25, "y":2}, {"label":"F7", "x":0, "y":3}, {"label":"F8", "x":1, "y":3}, {"label":"Shift", "x":2.25, "y":3, "w":2.25}, {"label":"Z", "x":4.5, "y":3}, {"label":"X", "x":5.5, "y":3}, {"label":"C", "x":6.5, "y":3}, {"label":"V", "x":7.5, "y":3}, {"label":"B", "x":8.5, "y":3}, {"label":"N", "x":9.5, "y":3}, {"label":"M", "x":10.5, "y":3}, {"label":"<", "x":11.5, "y":3}, {"label":">", "x":12.5, "y":3}, {"label":"?", "x":13.5, "y":3}, {"label":"Shift", "x":14.5, "y":3, "w":1.75}, {"label":"\u2191", "x":16.25, "y":3}, {"label":"PgDn", "x":17.25, "y":3}, {"label":"F9", "x":0, "y":4}, {"label":"F10", "x":1, "y":4}, {"label":"Ctrl", "x":2.25, "y":4, "w":1.5}, {"label":"Alt", "x":4.75, "y":4, "w":1.5}, {"x":6.25, "y":4, "w":7}, {"label":"Alt", "x":13.25, "y":4, "w":1.5}, {"label":"\u2190", "x":15.25, "y":4}, {"label":"\u2193", "x":16.25, "y":4}, {"label":"\u2192", "x":17.25, "y":4}] + } + } +} diff --git a/keyboards/lefishe/keymaps/default/keymap.c b/keyboards/lefishe/keymaps/default/keymap.c new file mode 100644 index 000000000000..5ba35de7b0d7 --- /dev/null +++ b/keyboards/lefishe/keymaps/default/keymap.c @@ -0,0 +1,38 @@ +/* Copyright 2020 Lyso1/Lysol#5640(board/layout code) + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_default( + KC_F1, KC_F2, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, + KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [_FN] = LAYOUT_default( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/lefishe/keymaps/wk_sbs/keymap.c b/keyboards/lefishe/keymaps/wk_sbs/keymap.c new file mode 100644 index 000000000000..36c7d73b86d1 --- /dev/null +++ b/keyboards/lefishe/keymaps/wk_sbs/keymap.c @@ -0,0 +1,38 @@ +/* Copyright 2020 Lyso1/Lysol#5640(board/layout code) + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_wk_sbs( + KC_F1, KC_F2, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, KC_INS, + KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_DEL, + KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [_FN] = LAYOUT_wk_sbs( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/lefishe/keymaps/wkl/keymap.c b/keyboards/lefishe/keymaps/wkl/keymap.c new file mode 100644 index 000000000000..f40e933d6da3 --- /dev/null +++ b/keyboards/lefishe/keymaps/wkl/keymap.c @@ -0,0 +1,38 @@ +/* Copyright 2020 Lyso1/Lysol#5640(board/layout code) + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_wkl( + KC_F1, KC_F2, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, + KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_F9, KC_F10, KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [_FN] = LAYOUT_wkl( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/lefishe/keymaps/wkl_sbs/keymap.c b/keyboards/lefishe/keymaps/wkl_sbs/keymap.c new file mode 100644 index 000000000000..91a707db78bb --- /dev/null +++ b/keyboards/lefishe/keymaps/wkl_sbs/keymap.c @@ -0,0 +1,38 @@ +/* Copyright 2020 Lyso1/Lysol#5640(board/layout code) + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_wkl_sbs( + KC_F1, KC_F2, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, KC_INS, + KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_DEL, + KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_F9, KC_F10, KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [_FN] = LAYOUT_wkl_sbs( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/lefishe/lefishe.c b/keyboards/lefishe/lefishe.c new file mode 100644 index 000000000000..c557a59c2d75 --- /dev/null +++ b/keyboards/lefishe/lefishe.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Lyso1 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "lefishe.h" diff --git a/keyboards/lefishe/lefishe.h b/keyboards/lefishe/lefishe.h new file mode 100644 index 000000000000..98197b21c421 --- /dev/null +++ b/keyboards/lefishe/lefishe.h @@ -0,0 +1,76 @@ +/* Copyright 2020 Lyso1 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + + +#include "quantum.h" + +#define LAYOUT_default( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K017, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K116, K117, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K216, K217, \ + K300, K301, K302, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K315, K316, K317, \ + K400, K401, K402, K403, K404, K408, K413, K415, K416, K417 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, KC_NO, K017 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, KC_NO, K116, K117 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, KC_NO, KC_NO, K216, K217 }, \ + { K300, K301, K302, KC_NO, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, KC_NO, K315, K316, K317 }, \ + { K400, K401, K402, K403, K404, KC_NO, KC_NO, KC_NO, K408, KC_NO, KC_NO, KC_NO, KC_NO, K413, KC_NO, K415, K416, K417 } \ +} + +#define LAYOUT_wk_sbs( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, K017, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K116, K117, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K216, K217, \ + K300, K301, K302, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K315, K316, K317, \ + K400, K401, K402, K403, K404, K408, K413, K415, K416, K417 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, K017 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, KC_NO, K116, K117 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, KC_NO, KC_NO, K216, K217 }, \ + { K300, K301, K302, KC_NO, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, KC_NO, K315, K316, K317 }, \ + { K400, K401, K402, K403, K404, KC_NO, KC_NO, KC_NO, K408, KC_NO, KC_NO, KC_NO, KC_NO, K413, KC_NO, K415, K416, K417 } \ +} + +#define LAYOUT_wkl_sbs( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, K017, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K116, K117, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K216, K217, \ + K300, K301, K302, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K315, K316, K317, \ + K400, K401, K402, K404, K408, K413, K415, K416, K417 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, K017 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, KC_NO, K116, K117 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, KC_NO, KC_NO, K216, K217 }, \ + { K300, K301, K302, KC_NO, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, KC_NO, K315, K316, K317 }, \ + { K400, K401, K402, KC_NO, K404, KC_NO, KC_NO, KC_NO, K408, KC_NO, KC_NO, KC_NO, KC_NO, K413, KC_NO, K415, K416, K417 } \ +} + +#define LAYOUT_wkl( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K017, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K116, K117, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K216, K217, \ + K300, K301, K302, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K315, K316, K317, \ + K400, K401, K402, K404, K408, K413, K415, K416, K417 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, KC_NO, K017 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, KC_NO, K116, K117 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, KC_NO, KC_NO, K216, K217 }, \ + { K300, K301, K302, KC_NO, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, KC_NO, K315, K316, K317 }, \ + { K400, K401, K402, KC_NO, K404, KC_NO, KC_NO, KC_NO, K408, KC_NO, KC_NO, KC_NO, KC_NO, K413, KC_NO, K415, K416, K417 } \ +} diff --git a/keyboards/lefishe/readme.md b/keyboards/lefishe/readme.md new file mode 100644 index 000000000000..ae6ab1322e98 --- /dev/null +++ b/keyboards/lefishe/readme.md @@ -0,0 +1,24 @@ +# lefishe + +firmware for the 65xt keyboard designed around the symmetrical blocker 65% layout. +This pcb cab also be used as a replacement pcb for the revoKmini/kmacmini with some modification to the design + +* Keyboard Maintainer: [Lyso1](https://github.com/lyso1) +* Hardware Supported: LeFishe, atmega32u4 +* Hardware Availability: [/u/TheLysol_27](https://www.reddit.com/user/TheLysol_27) + +Make example for this keyboard (after setting up your build environment): + + make lefishe:default + +Enter into the bootloader to flash new firmware in 3 ways: + + * **Bootmagic reset**: Hold down the key at (0,0) in the matrix(The F1 key in this case) and plug the the keyboard in. + * **Physical reset button**: Briefly press the button on the back and left side of the PCB(exactly under where the "2" key would be located) while the PCB is plugged in. + * **Keycode in layout**: Press the key mapped to `RESET` (RALT + E in this case) while the keyboard is plugged in. + +Flashing example for this keyboard: + + make lefishe:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/lefishe/rules.mk b/keyboards/lefishe/rules.mk new file mode 100644 index 000000000000..f280c0919ff0 --- /dev/null +++ b/keyboards/lefishe/rules.mk @@ -0,0 +1,21 @@ +# 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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +UNICODE_ENABLE = yes + diff --git a/keyboards/lefty/config.h b/keyboards/lefty/config.h new file mode 100644 index 000000000000..85620ca15bf1 --- /dev/null +++ b/keyboards/lefty/config.h @@ -0,0 +1,44 @@ +/* Copyright 2021 Smoll Chungus (@smollchungus) +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x5363 // Sc for Smollchungus +#define PRODUCT_ID 0x0001 +#define DEVICE_VER 0x0001 +#define MANUFACTURER SmollChungus +#define PRODUCT Lefty + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 8 + +/* key matrix pins are in subfolders v1/v2 */ + +/* Diode direction */ +#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/lefty/info.json b/keyboards/lefty/info.json new file mode 100644 index 000000000000..bd5d2f7c4e4a --- /dev/null +++ b/keyboards/lefty/info.json @@ -0,0 +1,43 @@ +{ + "keyboard_name": "lefty", + "url": "https://github.com/smollchungus", + "maintainer": "smollchungus", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"F1", "x":0.5, "y":0}, + {"label":"Escape", "x":2, "y":0}, + {"label":"1", "x":3, "y":0}, + {"label":"2", "x":4, "y":0}, + {"label":"3", "x":5, "y":0}, + {"label":"4", "x":6, "y":0}, + {"label":"5", "x":7, "y":0}, + {"label":"6", "x":8, "y":0}, + {"label":"F2", "x":0.25, "y":1}, + {"label":"Tab", "x":1.75, "y":1, "w":1.5}, + {"label":"Q", "x":3.25, "y":1}, + {"label":"W", "x":4.25, "y":1}, + {"label":"E", "x":5.25, "y":1}, + {"label":"R", "x":6.25, "y":1}, + {"label":"T", "x":7.25, "y":1}, + {"label":"F3", "x":0, "y":2}, + {"label":"Caps Lock", "x":1.5, "y":2, "w":1.75}, + {"label":"A", "x":3.25, "y":2}, + {"label":"S", "x":4.25, "y":2}, + {"label":"D", "x":5.25, "y":2}, + {"label":"F", "x":6.25, "y":2}, + {"label":"G", "x":7.25, "y":2}, + {"label":"Shift", "x":1.25, "y":3, "w":2.25}, + {"label":"Z", "x":3.5, "y":3}, + {"label":"X", "x":4.5, "y":3}, + {"label":"C", "x":5.5, "y":3}, + {"label":"V", "x":6.5, "y":3}, + {"label":"B", "x":7.5, "y":3}, + {"label":"Control", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":4.5, "y":4, "w":1.25}, + {"label":"Layer2", "x":5.75, "y":4, "w":2}, + {"label":"Layer3", "x":7.75, "y":4, "w":1.25} + ] + } + } +} diff --git a/keyboards/lefty/keymaps/default/keymap.c b/keyboards/lefty/keymaps/default/keymap.c new file mode 100644 index 000000000000..ecedbac39052 --- /dev/null +++ b/keyboards/lefty/keymaps/default/keymap.c @@ -0,0 +1,64 @@ +/* Copyright 2021 Smoll Chungus (@smollchungus) +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _QWERTY, + _LOWER, + _RAISE, + _SPECIAL, +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) +#define SPECIAL MO(_SPECIAL) + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[_QWERTY] = LAYOUT_all( + KC_UP, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, + KC_DOWN, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, + KC_RGHT, LOWER, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, + KC_LCTL, KC_LALT, RAISE, SPECIAL +), + +[_LOWER] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______ +), + +[_RAISE] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______ +), + +[_SPECIAL] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______ +) +}; diff --git a/keyboards/lefty/keymaps/via/keymap.c b/keyboards/lefty/keymaps/via/keymap.c new file mode 100644 index 000000000000..5acf16c04461 --- /dev/null +++ b/keyboards/lefty/keymaps/via/keymap.c @@ -0,0 +1,65 @@ +/* Copyright 2021 Smoll Chungus (@smollchungus) +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + + +enum layers { + _QWERTY, + _LOWER, + _RAISE, + _SPECIAL, +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) +#define SPECIAL MO(_SPECIAL) + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[_QWERTY] = LAYOUT_all( + KC_UP, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, + KC_DOWN, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, + KC_RGHT, LOWER, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, + KC_LCTL, KC_LALT, RAISE, SPECIAL +), + +[_LOWER] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______ +), + +[_RAISE] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______ +), + +[_SPECIAL] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______ +) +}; diff --git a/keyboards/lefty/keymaps/via/rules.mk b/keyboards/lefty/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/lefty/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/lefty/lefty.c b/keyboards/lefty/lefty.c new file mode 100644 index 000000000000..a3e5301ea1fe --- /dev/null +++ b/keyboards/lefty/lefty.c @@ -0,0 +1,47 @@ +/* Copyright 2021 Smoll Chungus (@smollchungus) +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*/ + +#include "lefty.h" + +#ifdef OLED_ENABLE +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } + // Host Keyboard Layer Status + oled_write_P(PSTR("Layer: "), false); + + switch (get_highest_layer(layer_state)) { + case 0: + oled_write_P(PSTR("Default\n"), false); + break; + case 1: + oled_write_P(PSTR("LOWER\n"), false); + break; + case 2: + oled_write_P(PSTR("RAISE\n"), false); + break; + case 3: + oled_write_P(PSTR("SPECIAL\n"), false); + break; + default: + // Or use the write_ln shortcut over adding '\n' to the end of your string + oled_write_ln_P(PSTR("Undefined"), false); + } + + return true; +} +#endif diff --git a/keyboards/lefty/lefty.h b/keyboards/lefty/lefty.h new file mode 100644 index 000000000000..2466552353fa --- /dev/null +++ b/keyboards/lefty/lefty.h @@ -0,0 +1,37 @@ +/* Copyright 2021 Smoll Chungus (@smollchungus) +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +// keymap +#define LAYOUT_all( \ + K00, K01, K02, K03, K04, K05, K06, K07, \ + K10, K11, K12, K13, K14, K15, K16, \ + K20, K21, K22, K23, K24, K25, K26, \ + K31, K32, K33, K34, K35, K36, \ + K41, K43, K44, K46 \ +) \ +{ \ + { K00, K01, K02, K03, K04, K05, K06, K07 }, \ + { K10, K11, K12, K13, K14, K15, K16, KC_NO }, \ + { K20, K21, K22, K23, K24, K25, K26, KC_NO }, \ + { KC_NO, K31, K32, K33, K34, K35, K36, KC_NO }, \ + { KC_NO, K41, KC_NO, K43, K44, KC_NO, K46, KC_NO } \ +} + +#define LAYOUT LAYOUT diff --git a/keyboards/lefty/readme.md b/keyboards/lefty/readme.md new file mode 100644 index 000000000000..f8cc2ec2037d --- /dev/null +++ b/keyboards/lefty/readme.md @@ -0,0 +1,27 @@ +# lefty + +![lefty](https://i.imgur.com/nMmJCJMh.jpeg) + +Half an alice used as a macropad. + +* Keyboard Maintainer: [SmollChungus](https://github.com/smollchungus/) + +* Hardware Supported: Lefty PCB rev1 and rev2 + +Make example for this keyboard (after setting up your build environment): + + make lefty:default + +Flashing example for this keyboard: + + make lefty:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. +Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +# Bootloader +Enter the bootloader in 3 ways: + +Bootmagic reset: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +Physical reset button: Briefly press the button on the back of the PCB - some may have pads you must short instead +Keycode in layout: Press the key mapped to RESET if it is available diff --git a/keyboards/lefty/rev1/config.h b/keyboards/lefty/rev1/config.h new file mode 100644 index 000000000000..fa70eeb3595b --- /dev/null +++ b/keyboards/lefty/rev1/config.h @@ -0,0 +1,22 @@ +/* Copyright 2021 Smoll Chungus (@smollchungus) +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*/ + +#pragma once + +/* key matrix pins */ + +#define MATRIX_ROW_PINS { F0, F1, C7, D5, B7 } +#define MATRIX_COL_PINS { D4, B5, F5, F6, F7, B1, B3, F4 } diff --git a/keyboards/lefty/rev1/rev1.c b/keyboards/lefty/rev1/rev1.c new file mode 100644 index 000000000000..81734fd7fc39 --- /dev/null +++ b/keyboards/lefty/rev1/rev1.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Smoll Chungus (@smollchungus) +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*/ + +#include "lefty.h" diff --git a/keyboards/lefty/rev1/rules.mk b/keyboards/lefty/rev1/rules.mk new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/keyboards/lefty/rev2/config.h b/keyboards/lefty/rev2/config.h new file mode 100644 index 000000000000..82894187287e --- /dev/null +++ b/keyboards/lefty/rev2/config.h @@ -0,0 +1,21 @@ +/* Copyright 2021 Smoll Chungus (@smollchungus) +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*/ + +#pragma once + +/* key matrix pins */ +#define MATRIX_ROW_PINS { B2, B6, D7, E6, B4 } +#define MATRIX_COL_PINS { D4, B5, F5, F6, F7, B1, B3, F4 } diff --git a/keyboards/lefty/rev2/rev2.c b/keyboards/lefty/rev2/rev2.c new file mode 100644 index 000000000000..81734fd7fc39 --- /dev/null +++ b/keyboards/lefty/rev2/rev2.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Smoll Chungus (@smollchungus) +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*/ + +#include "lefty.h" diff --git a/keyboards/lefty/rev2/rules.mk b/keyboards/lefty/rev2/rules.mk new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/keyboards/lefty/rules.mk b/keyboards/lefty/rules.mk new file mode 100644 index 000000000000..ae98a81711e7 --- /dev/null +++ b/keyboards/lefty/rules.mk @@ -0,0 +1,25 @@ +# 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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +LTO_ENABLE = yes + +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 + +DEFAULT_FOLDER = lefty/rev2 diff --git a/keyboards/lets_split/info.json b/keyboards/lets_split/info.json index aa1c3b8efc8b..aa47a848348c 100644 --- a/keyboards/lets_split/info.json +++ b/keyboards/lets_split/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Let's Split", "url": "", "maintainer": "qmk", - "width": 13, - "height": 4, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":12, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}, {"x":12, "y":3}] diff --git a/keyboards/lets_split/keymaps/DE_programming/keymap.c b/keyboards/lets_split/keymaps/DE_programming/keymap.c index 32231f883190..a72ba4f86502 100644 --- a/keyboards/lets_split/keymaps/DE_programming/keymap.c +++ b/keyboards/lets_split/keymaps/DE_programming/keymap.c @@ -47,9 +47,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_LOWER] = LAYOUT( - DE_CIRC, DE_EXLM, DE_QST, DE_PARA, DE_EURO, DE_TILD, DE_DLR, DE_LPRN, DE_RPRN, DE_LESS, DE_MORE, KC_BSPC, + DE_CIRC, DE_EXLM, DE_QUES, DE_SECT, DE_EURO, DE_TILD, DE_DLR, DE_LPRN, DE_RPRN, DE_LABK, DE_RABK, KC_BSPC, KC_DEL, KC_VOLU, KC_MPRV, KC_MNXT, KC_MPLY, DE_AMPR, DE_AT, DE_LCBR, DE_RCBR, DE_LBRC, DE_RBRC, KC_ENT, - KC_LSFT, KC_VOLD, _______, _______, _______, DE_PIPE, DE_PERC, DE_SLSH, DE_BSLS, DE_QUOT, DE_DQOT, KC_RSFT, + KC_LSFT, KC_VOLD, _______, _______, _______, DE_PIPE, DE_PERC, DE_SLSH, DE_BSLS, DE_QUOT, DE_DQUO, KC_RSFT, KC_LCTL, _______, _______, _______, _______, _______, _______, _______, DE_EQL, DE_ASTR, _______, _______ ), @@ -66,7 +66,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_RAISE] = LAYOUT( DE_SLSH, KC_7, KC_8, KC_9, DE_ASTR, _______, _______, _______, DE_HASH, KC_LALT, DE_ACUT, KC_BSPC, - KC_DEL, KC_4, KC_5, KC_6, DE_MINS, KC_HOME, KC_END, DE_AE, DE_OE, DE_UE, DE_SS, KC_ENT, + KC_DEL, KC_4, KC_5, KC_6, DE_MINS, KC_HOME, KC_END, DE_ADIA, DE_ODIA, DE_UDIA, DE_SS, KC_ENT, KC_LSFT, KC_1, KC_2, KC_3, DE_PLUS, KC_PGUP, KC_PGDN, _______, _______, _______, _______, KC_LSFT, _______, DE_DOT, KC_0, DE_EQL, _______, _______, _______, _______, _______, _______, _______, _______ ), diff --git a/keyboards/lets_split/keymaps/DE_simple/keymap.c b/keyboards/lets_split/keymaps/DE_simple/keymap.c index 32383ec67b34..c49da49cf0fb 100644 --- a/keyboards/lets_split/keymaps/DE_simple/keymap.c +++ b/keyboards/lets_split/keymaps/DE_simple/keymap.c @@ -51,8 +51,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_LOWER] = LAYOUT( \ - DE_CIRC, DE_EXLM, DE_DQOT, DE_PARA, DE_DLR, DE_PERC, DE_AMPR, DE_SLSH, DE_LPRN, DE_RPRN, DE_EQL, KC_BSPC, \ - KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, DE_AT , DE_EURO, KC_LBRC, DE_QST, DE_QUOT, \ + DE_CIRC, DE_EXLM, DE_DQUO, DE_SECT, DE_DLR, DE_PERC, DE_AMPR, DE_SLSH, DE_LPRN, DE_RPRN, DE_EQL, KC_BSPC, \ + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, DE_AT , DE_EURO, KC_LBRC, DE_QUES, DE_QUOT, \ KC_LSFT, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DE_PIPE , KC_SCLN, KC_QUOT, _______, KC_ENT, \ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ ), diff --git a/keyboards/lets_split/keymaps/OLED_sample/rules.mk b/keyboards/lets_split/keymaps/OLED_sample/rules.mk index 162c7aeb93e2..e1716e0c02aa 100644 --- a/keyboards/lets_split/keymaps/OLED_sample/rules.mk +++ b/keyboards/lets_split/keymaps/OLED_sample/rules.mk @@ -4,7 +4,7 @@ SRC += ssd1306.c # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 diff --git a/keyboards/lets_split/keymaps/bbaserdem_right/rules.mk b/keyboards/lets_split/keymaps/bbaserdem_right/rules.mk index 377a0ded118a..6886a320a594 100755 --- a/keyboards/lets_split/keymaps/bbaserdem_right/rules.mk +++ b/keyboards/lets_split/keymaps/bbaserdem_right/rules.mk @@ -9,13 +9,11 @@ TAP_DANCE_ENABLE = no # Use multi-tap features AUDIO_ENABLE = no # Audio stuff BLUETOOTH_ENABLE = no # No bluetooth COMMAND_ENABLE = no # Some bootmagic thing -BOOTMAGIC_ENABLE = no # Access to EEPROM settings, not needed +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite CONSOLE_ENABLE = no # Allows console output with a command SLEEP_LED_ENABLE = no # Breathes LED's when computer is asleep. Untested. NKRO_ENABLE = no # Default is 6KRO which is plenty MIDI_ENABLE = no # Untested feature KEY_LOCK_ENABLE = no # Allows locking any key. Not used -API_SYSEX_ENABLE = no # Allows OS to send signals. -KEY_LOCK_ENABLE = no # Allows locking any key. Not used UNICODE_ENABLE = no # Used for unicode character emulation EXTRAKEY_ENABLE = no # OS signals like volume control diff --git a/keyboards/lets_split/keymaps/cpeters1982/keymap.c b/keyboards/lets_split/keymaps/cpeters1982/keymap.c index 8fa2bf6c042a..c4c26d56bc55 100644 --- a/keyboards/lets_split/keymaps/cpeters1982/keymap.c +++ b/keyboards/lets_split/keymaps/cpeters1982/keymap.c @@ -179,7 +179,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { #define rgblight_set_purple rgblight_sethsv (0x10E, 0xFF, 0xFF); #define rgblight_set_white rgblight_sethsv (0x00, 0x00, 0xFF); -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { #ifdef RGBLIGHT_ENABLE uint8_t default_layer = eeconfig_read_default_layer(); if (rgb_layer_change) { diff --git a/keyboards/lets_split/keymaps/heartrobotninja/rules.mk b/keyboards/lets_split/keymaps/heartrobotninja/rules.mk index 21aae31dbabd..9c6a3661370c 100644 --- a/keyboards/lets_split/keymaps/heartrobotninja/rules.mk +++ b/keyboards/lets_split/keymaps/heartrobotninja/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/lets_split/keymaps/mjt/rules.mk b/keyboards/lets_split/keymaps/mjt/rules.mk index a43a9a1daa04..a609caa02cc6 100644 --- a/keyboards/lets_split/keymaps/mjt/rules.mk +++ b/keyboards/lets_split/keymaps/mjt/rules.mk @@ -3,7 +3,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/lets_split/keymaps/piemod/rules.mk b/keyboards/lets_split/keymaps/piemod/rules.mk index e2bb583cd9cf..79a0a173830b 100644 --- a/keyboards/lets_split/keymaps/piemod/rules.mk +++ b/keyboards/lets_split/keymaps/piemod/rules.mk @@ -1,4 +1,4 @@ -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/lets_split/keymaps/pyrol/rules.mk b/keyboards/lets_split/keymaps/pyrol/rules.mk index 8d49979f98d9..d4c4ffab6a22 100644 --- a/keyboards/lets_split/keymaps/pyrol/rules.mk +++ b/keyboards/lets_split/keymaps/pyrol/rules.mk @@ -1 +1 @@ - BOOTMAGIC_ENABLE = full + BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite diff --git a/keyboards/lets_split/keymaps/shaymdev/config.h b/keyboards/lets_split/keymaps/shaymdev/config.h new file mode 100644 index 000000000000..300dc47c2e09 --- /dev/null +++ b/keyboards/lets_split/keymaps/shaymdev/config.h @@ -0,0 +1,60 @@ +/* +This is the c configuration file for the keymap + +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +/* Use I2C or Serial, not both */ +#define USE_SERIAL +// #define USE_I2C + +/* Select hand configuration */ +#define MASTER_LEFT +// #define _MASTER_RIGHT +// #define EE_HANDS + +#undef RGB_DI_PIN +#define RGB_DI_PIN D3 +#undef RGBLED_NUM +#define RGBLIGHT_EFFECT_BREATHING +#define RGBLIGHT_EFFECT_RAINBOW_MOOD +#define RGBLIGHT_EFFECT_RAINBOW_SWIRL +#define RGBLIGHT_EFFECT_SNAKE +#define RGBLIGHT_EFFECT_KNIGHT +#define RGBLIGHT_EFFECT_STATIC_GRADIENT +#define RGBLED_NUM 10 + +#define RGBLIGHT_LAYERS +#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF +#define RGBLIGHT_SLEEP + +#ifdef AUDIO_ENABLE + #define STARTUP_SONG SONG(PLANCK_SOUND) + // #define STARTUP_SONG SONG(NO_SOUND) + + #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \ + SONG(COLEMAK_SOUND), \ + SONG(DVORAK_SOUND) \ + } +#endif + +#define COMBO_COUNT 1 + +#define IGNORE_MOD_TAP_INTERRUPT +#define TAPPING_TERM 220 diff --git a/keyboards/lets_split/keymaps/shaymdev/keymap.c b/keyboards/lets_split/keymaps/shaymdev/keymap.c new file mode 100644 index 000000000000..7ab16b3fe321 --- /dev/null +++ b/keyboards/lets_split/keymaps/shaymdev/keymap.c @@ -0,0 +1,188 @@ +/* Copyright 2021 Shay Merrill + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum lets_split_layers { + _DVORAK, + _QWERTY, + _LOWER, + _RAISE, + _ADJUST +}; + +enum custom_keycodes { + DVORAK = SAFE_RANGE, + QWERTY +}; + +#define TO_DV TO(_DVORAK) +#define LOWER MO(_LOWER) +#define LWR LOWER +#define RAISE MO(_RAISE) +#define RAS RAISE + +enum combos //match combo_count in config.h +{ + EU_ENT, +}; + +const uint16_t PROGMEM eu_combo[] = {KC_E, KC_U, COMBO_END}; + +combo_t key_combos[COMBO_COUNT] = { + [EU_ENT] = COMBO_ACTION(eu_combo), +}; + +void process_combo_event(uint16_t combo_index, bool pressed) { + switch(combo_index) { + case EU_ENT: + if (pressed) { + tap_code16(KC_ENT); + } + break; + } +} + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[_DVORAK] = LAYOUT( + KC_ESC, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, + KC_TAB, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, + KC_EQL, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_BSLS, + XXXXXXX, KC_ENT, KC_LALT, TT(LWR), KC_LSFT, KC_LCTL, KC_BSPC, KC_SPC, TT(RAS), KC_DEL, KC_LGUI, XXXXXXX +), + +[_QWERTY] = LAYOUT( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LGUI, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), + +[_LOWER] = LAYOUT( + _______, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_AMPR, _______, KC_P7, KC_P8, KC_P9, KC_PMNS, _______, + _______, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_ASTR, _______, KC_P4, KC_P5, KC_P6, KC_PPLS, _______, + _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_GRV, _______, KC_P1, KC_P2, KC_P3, KC_PENT, _______, + _______, _______, _______, _______, _______, _______, _______, KC_KP_0, _______, _______, _______, _______ //This kp_0 is blocking the space key.... may want to do something about that. +), + +[_RAISE] = LAYOUT( + _______, KC_PSCR, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_VOLU, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, + KC_CAPS, KC_INS, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_VOLD, KC_F4, KC_F5, KC_F6, KC_F11, XXXXXXX, + _______, KC_NLCK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE, KC_F1, KC_F2, KC_F3, KC_F12, XXXXXXX, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), + +[_ADJUST] = LAYOUT( + TO_DV, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, + RGB_TOG, RGB_MOD, VLK_TOG, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, DVORAK, _______, _______, _______, + RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +) + +}; + +const key_override_t delete_key_override = ko_make_basic(MOD_MASK_SHIFT, KC_BSPACE, KC_DELETE); + +// This globally defines all key overrides to be used +const key_override_t **key_overrides = (const key_override_t *[]){ + &delete_key_override, + NULL // Null terminate the array of overrides! +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + set_single_persistent_default_layer(_QWERTY); + } + return false; + break; + case DVORAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_DVORAK); + } + return false; + break; + } + return true; +} + + +#ifdef RGBLIGHT_ENABLE + +const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {4, 2, HSV_RED} // Light 2 LEDs, starting with LED 4 +); + +const rgblight_segment_t PROGMEM my_qwerty_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 3, HSV_CHARTREUSE} // Light 3 LEDs, starting with LED 0 +); + +const rgblight_segment_t PROGMEM my_lower_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {3, 2, HSV_BLUE} // Light LEDs 3-4 +); + +const rgblight_segment_t PROGMEM my_raise_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {5, 2, HSV_ORANGE} // Light LEDs 5-6 +); + +const rgblight_segment_t PROGMEM my_adjust_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {3, 4, HSV_GREEN} // Light 4 LEDs, starting with LED 3 +); + + +//Later layers take precedence. This array corresponds to the magic numbers used in rgblight_set_layer_state(i, onOff) +const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( + my_capslock_layer, + my_qwerty_layer, // Overrides other layers + my_lower_layer, // Overrides other layers + my_raise_layer, // Overrides other layers + my_adjust_layer // Overrides other layers +); + +void keyboard_post_init_user(void) { + // Enable the LED layers + rgblight_layers = my_rgb_layers; + rgblight_disable_noeeprom(); // disables RGB, without saving settings + //rgblight_sethsv_noeeprom(HSV_CYAN); + //rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); + // rgblight_mode_noeeprom(RGBLIGHT_MODE_RAINBOW_SWIRL); +} + +bool led_update_user(led_t led_state) { + rgblight_set_layer_state(0, led_state.caps_lock); + return true; +} + +layer_state_t default_layer_state_set_user(layer_state_t state) { + rgblight_set_layer_state(1, layer_state_cmp(state, _QWERTY)); + return state; +} + +#endif + +layer_state_t layer_state_set_user(layer_state_t state) { + state = update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); + +#ifdef RGBLIGHT_ENABLE + rgblight_set_layer_state(2, layer_state_cmp(state, _LOWER)); + rgblight_set_layer_state(3, layer_state_cmp(state, _RAISE)); + rgblight_set_layer_state(4, layer_state_cmp(state, _ADJUST)); +#endif + + return state; +} diff --git a/keyboards/lets_split/keymaps/shaymdev/rules.mk b/keyboards/lets_split/keymaps/shaymdev/rules.mk new file mode 100644 index 000000000000..3d737cbb4882 --- /dev/null +++ b/keyboards/lets_split/keymaps/shaymdev/rules.mk @@ -0,0 +1,5 @@ +RGBLIGHT_ENABLE = yes +VELOCIKEY_ENABLE = yes +KEY_OVERRIDE_ENABLE = yes +COMBO_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/lets_split/keymaps/via/config.h b/keyboards/lets_split/keymaps/via/config.h index df24c53cde2d..334be75194fc 100644 --- a/keyboards/lets_split/keymaps/via/config.h +++ b/keyboards/lets_split/keymaps/via/config.h @@ -38,3 +38,5 @@ along with this program. If not, see . #undef RGBLED_NUM #define RGBLIGHT_ANIMATIONS #define RGBLED_NUM 10 + +#define NO_MUSIC_MODE diff --git a/keyboards/lets_split/keymaps/xk/rules.mk b/keyboards/lets_split/keymaps/xk/rules.mk index 8aafefa64f2e..a624479b590a 100644 --- a/keyboards/lets_split/keymaps/xk/rules.mk +++ b/keyboards/lets_split/keymaps/xk/rules.mk @@ -12,5 +12,5 @@ AUDIO_ENABLE = no # Audio output on port C6 UNICODE_ENABLE = yes # Unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite diff --git a/keyboards/lets_split/rev1/rev1.c b/keyboards/lets_split/rev1/rev1.c index c243f71bc4a8..3caa114c221d 100644 --- a/keyboards/lets_split/rev1/rev1.c +++ b/keyboards/lets_split/rev1/rev1.c @@ -1,15 +1 @@ #include "lets_split.h" - -void matrix_init_kb(void) { - - // // green led on - // DDRD |= (1<<5); - // PORTD &= ~(1<<5); - - // // orange led on - // DDRB |= (1<<0); - // PORTB &= ~(1<<0); - - matrix_init_user(); -}; - diff --git a/keyboards/lets_split/rev2/rev2.c b/keyboards/lets_split/rev2/rev2.c index 3ae967c0731a..3caa114c221d 100644 --- a/keyboards/lets_split/rev2/rev2.c +++ b/keyboards/lets_split/rev2/rev2.c @@ -1,23 +1 @@ #include "lets_split.h" - - -#ifdef SSD1306OLED -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - led_set_user(usb_led); -} -#endif - -void matrix_init_kb(void) { - - // // green led on - // DDRD |= (1<<5); - // PORTD &= ~(1<<5); - - // // orange led on - // DDRB |= (1<<0); - // PORTB &= ~(1<<0); - - matrix_init_user(); -}; - diff --git a/keyboards/lets_split/rules.mk b/keyboards/lets_split/rules.mk index a7703ce44b55..1101d9217489 100644 --- a/keyboards/lets_split/rules.mk +++ b/keyboards/lets_split/rules.mk @@ -2,35 +2,22 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - SPLIT_KEYBOARD = yes LAYOUTS = ortho_4x12 diff --git a/keyboards/lets_split/sockets/config.h b/keyboards/lets_split/sockets/config.h index 67fa4b4ccc20..70cbc18cd596 100644 --- a/keyboards/lets_split/sockets/config.h +++ b/keyboards/lets_split/sockets/config.h @@ -49,11 +49,6 @@ along with this program. If not, see . /* serial.c configuration for split keyboard */ #define SOFT_SERIAL_PIN D0 -/* 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 - /* ws2812 RGB LED */ #define RGB_DI_PIN D4 diff --git a/keyboards/lets_split/sockets/sockets.c b/keyboards/lets_split/sockets/sockets.c index d50678560a9f..3caa114c221d 100644 --- a/keyboards/lets_split/sockets/sockets.c +++ b/keyboards/lets_split/sockets/sockets.c @@ -1,22 +1 @@ #include "lets_split.h" - - -#ifdef SSD1306OLED -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - led_set_user(usb_led); -} -#endif - -void matrix_init_kb(void) { - - // // green led on - // DDRD |= (1<<5); - // PORTD &= ~(1<<5); - - // // orange led on - // DDRB |= (1<<0); - // PORTB &= ~(1<<0); - - matrix_init_user(); -}; diff --git a/keyboards/lets_split_eh/eh/info.json b/keyboards/lets_split_eh/eh/info.json index f96477e6ee45..c241fa381316 100644 --- a/keyboards/lets_split_eh/eh/info.json +++ b/keyboards/lets_split_eh/eh/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Let's Split", "url": "", "maintainer": "qmk", - "width": 13, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/lets_split_eh/keymaps/mikethetiger/keymap.c b/keyboards/lets_split_eh/keymaps/mikethetiger/keymap.c index c5a2ed95350d..9e67b7dda8c6 100644 --- a/keyboards/lets_split_eh/keymaps/mikethetiger/keymap.c +++ b/keyboards/lets_split_eh/keymaps/mikethetiger/keymap.c @@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , - _______, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + _______, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT ), /* Lower @@ -115,6 +115,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } diff --git a/keyboards/lets_split_eh/rules.mk b/keyboards/lets_split_eh/rules.mk index fe3face86b6b..74f5c32730ce 100644 --- a/keyboards/lets_split_eh/rules.mk +++ b/keyboards/lets_split_eh/rules.mk @@ -2,38 +2,24 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -API_SYSEX_ENABLE = no SPLIT_KEYBOARD = yes -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - LAYOUTS = ortho_4x12 DEFAULT_FOLDER = lets_split_eh/eh diff --git a/keyboards/lfkeyboards/issi.h b/keyboards/lfkeyboards/issi.h index 51777f6ee385..74379ddbc8ff 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 8107d3ccc01a..0adc0b3f5603 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" @@ -66,54 +65,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -131,5 +82,3 @@ //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -#endif diff --git a/keyboards/lfkeyboards/lfk65_hs/info.json b/keyboards/lfkeyboards/lfk65_hs/info.json index a3a72452c827..6bbfd6e2d9bc 100644 --- a/keyboards/lfkeyboards/lfk65_hs/info.json +++ b/keyboards/lfkeyboards/lfk65_hs/info.json @@ -2,10 +2,8 @@ "keyboard_name": "LFK65-HS", "url": "https://github.com/lfkeyboards", "maintainer": "LFKeyboards", - "width": 16, - "height": 5, "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},{"label": "","x": 13,"y": 0,"w": 1},{"label": "","x": 14,"y": 0,"w": 1},{"label": "Home","x": 15,"y": 0},{"label": "Tab","x": 0,"y": 1,"w": 1.5},{"label": "Q","x": 1.5,"y": 1},{"label": "W","x": 2.5,"y": 1},{"label": "E","x": 3.5,"y": 1},{"label": "R","x": 4.5,"y": 1},{"label": "T","x": 5.5,"y": 1},{"label": "Y","x": 6.5,"y": 1},{"label": "U","x": 7.5,"y": 1},{"label": "I","x": 8.5,"y": 1},{"label": "O","x": 9.5,"y": 1},{"label": "P","x": 10.5,"y": 1},{"label": "{","x": 11.5,"y": 1},{"label": "}","x": 12.5,"y": 1},{"label": "|","x": 13.5,"y": 1,"w": 1.5},{"label": "Page Up","x": 15,"y": 1},{"label": "Caps Lock","x": 0,"y": 2,"w": 1.75},{"label": "A","x": 1.75,"y": 2},{"label": "S","x": 2.75,"y": 2},{"label": "D","x": 3.75,"y": 2},{"label": "F","x": 4.75,"y": 2},{"label": "G","x": 5.75,"y": 2},{"label": "H","x": 6.75,"y": 2},{"label": "J","x": 7.75,"y": 2},{"label": "K","x": 8.75,"y": 2},{"label": "L","x": 9.75,"y": 2},{"label": ":","x": 10.75,"y": 2},{"label": "\"","x": 11.75,"y": 2},{"label": "","x": 12.75,"y": 2},{"label": "Enter","x": 13.75,"y": 2,"w": 1.25},{"label": "Page Down","x": 15,"y": 2},{"label": "Shift","x": 0,"y": 3,"w": 1.25},{"label": "","x": 1.25,"y": 3},{"label": "Z","x": 2.25,"y": 3},{"label": "X","x": 3.25,"y": 3},{"label": "C","x": 4.25,"y": 3},{"label": "V","x": 5.25,"y": 3},{"label": "B","x": 6.25,"y": 3},{"label": "N","x": 7.25,"y": 3},{"label": "M","x": 8.25,"y": 3},{"label": "<","x": 9.25,"y": 3},{"label": ">","x": 10.25,"y": 3},{"label": "?","x": 11.25,"y": 3},{"label": "Shift","x": 12.25,"y": 3,"w": 1.75},{"label": "↑","x": 14,"y": 3},{"label": "End","x": 15,"y": 3},{"label": "Ctrl","x": 0,"y": 4,"w": 1.25},{"label": "Win","x": 1.25,"y": 4,"w": 1.25},{"label": "Alt","x": 2.5,"y": 4,"w": 1.25},{"x": 3.75,"y": 4,"w": 6.25},{"label": "Alt","x": 10,"y": 4},{"label": "Fn","x": 11,"y": 4},{"label": "Ctrl","x": 12,"y": 4},{"label": "←","x": 13,"y": 4},{"label": "↓","x": 14,"y": 4},{"label": "→","x": 15,"y": 4}]}, "LAYOUT_ansi": {"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},{"label": "Backspace","x": 13,"y": 0,"w": 2},{"label": "Home","x": 15,"y": 0},{"label": "Tab","x": 0,"y": 1,"w": 1.5},{"label": "Q","x": 1.5,"y": 1},{"label": "W","x": 2.5,"y": 1},{"label": "E","x": 3.5,"y": 1},{"label": "R","x": 4.5,"y": 1},{"label": "T","x": 5.5,"y": 1},{"label": "Y","x": 6.5,"y": 1},{"label": "U","x": 7.5,"y": 1},{"label": "I","x": 8.5,"y": 1},{"label": "O","x": 9.5,"y": 1},{"label": "P","x": 10.5,"y": 1},{"label": "{","x": 11.5,"y": 1},{"label": "}","x": 12.5,"y": 1},{"label": "|","x": 13.5,"y": 1,"w": 1.5},{"label": "Page Up","x": 15,"y": 1},{"label": "Caps Lock","x": 0,"y": 2,"w": 1.75},{"label": "A","x": 1.75,"y": 2},{"label": "S","x": 2.75,"y": 2},{"label": "D","x": 3.75,"y": 2},{"label": "F","x": 4.75,"y": 2},{"label": "G","x": 5.75,"y": 2},{"label": "H","x": 6.75,"y": 2},{"label": "J","x": 7.75,"y": 2},{"label": "K","x": 8.75,"y": 2},{"label": "L","x": 9.75,"y": 2},{"label": ":","x": 10.75,"y": 2},{"label": "\"","x": 11.75,"y": 2},{"label": "Enter","x": 12.75,"y": 2,"w": 2.25},{"label": "Page Down","x": 15,"y": 2},{"label": "Shift","x": 0,"y": 3,"w": 2.25},{"label": "Z","x": 2.25,"y": 3},{"label": "X","x": 3.25,"y": 3},{"label": "C","x": 4.25,"y": 3},{"label": "V","x": 5.25,"y": 3},{"label": "B","x": 6.25,"y": 3},{"label": "N","x": 7.25,"y": 3},{"label": "M","x": 8.25,"y": 3},{"label": "<","x": 9.25,"y": 3},{"label": ">","x": 10.25,"y": 3},{"label": "?","x": 11.25,"y": 3},{"label": "Shift","x": 12.25,"y": 3,"w": 1.75},{"label": "↑","x": 14,"y": 3},{"label": "End","x": 15,"y": 3},{"label": "Ctrl","x": 0,"y": 4,"w": 1.25},{"label": "Win","x": 1.25,"y": 4,"w": 1.25},{"label": "Alt","x": 2.5,"y": 4,"w": 1.25},{"x": 3.75,"y": 4,"w": 6.25},{"label": "Alt","x": 10,"y": 4},{"label": "Fn","x": 11,"y": 4},{"label": "Ctrl","x": 12,"y": 4},{"label": "←","x": 13,"y": 4},{"label": "↓","x": 14,"y": 4},{"label": "→","x": 15,"y": 4}]} } -} \ No newline at end of file +} diff --git a/keyboards/lfkeyboards/lfk65_hs/keymaps/default/keymap.c b/keyboards/lfkeyboards/lfk65_hs/keymaps/default/keymap.c index 87c9358624d2..cced607b0c56 100644 --- a/keyboards/lfkeyboards/lfk65_hs/keymaps/default/keymap.c +++ b/keyboards/lfkeyboards/lfk65_hs/keymaps/default/keymap.c @@ -48,23 +48,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ KC_GRV,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14, MU_MOD, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, RGB_TOG, - AU_TOG, KC_FN1,KC_FN3, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, RESET, RGB_MOD, - KC_FN5, KC_FN2,KC_FN4, KC_TR, KC_TR, KC_TR, KC_TR, MU_TOG, RGB_VAD, RGB_VAI, KC_TR, KC_TR, RGB_HUI, KC_TR, + AU_TOG, F(1),F(3), KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, RESET, RGB_MOD, + F(5), F(2),F(4), KC_TR, KC_TR, KC_TR, KC_TR, MU_TOG, RGB_VAD, RGB_VAI, KC_TR, KC_TR, RGB_HUI, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, RGB_SAD, RGB_HUD, RGB_SAI), }; - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/lfkeyboards/lfk65_hs/lfk65_hs.c b/keyboards/lfkeyboards/lfk65_hs/lfk65_hs.c index 26ab883a4976..86573ce17f54 100644 --- a/keyboards/lfkeyboards/lfk65_hs/lfk65_hs.c +++ b/keyboards/lfkeyboards/lfk65_hs/lfk65_hs.c @@ -4,17 +4,6 @@ #include "lfk65_hs.h" #include "keymap.h" -void matrix_init_kb(void) -{ - matrix_init_user(); - -} - -void matrix_scan_kb(void) -{ - matrix_scan_user(); -} - bool process_record_kb(uint16_t keycode, keyrecord_t* record) { if (keycode == RESET) { diff --git a/keyboards/lfkeyboards/lfk65_hs/lfk65_hs.h b/keyboards/lfkeyboards/lfk65_hs/lfk65_hs.h index 53860ea2bf61..6ba3a63e8836 100644 --- a/keyboards/lfkeyboards/lfk65_hs/lfk65_hs.h +++ b/keyboards/lfkeyboards/lfk65_hs/lfk65_hs.h @@ -1,26 +1,10 @@ -#ifndef LFK65_HS_H -#define LFK65_HS_H - -/* if the kb.h file exists (because we're running from qmkbuilder) include it */ -#ifdef __has_include -#if __has_include("kb.h") -#include "kb.h" -#endif -#endif +#pragma once #include "quantum.h" #include "matrix.h" #include #include -#ifndef cbi -#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) -#endif - -#ifndef sbi -#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) -#endif - void reset_keyboard_kb(void); // readability @@ -28,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/config.h b/keyboards/lfkeyboards/lfk78/config.h index 2b0b01d86117..05ead71c8692 100644 --- a/keyboards/lfkeyboards/lfk78/config.h +++ b/keyboards/lfkeyboards/lfk78/config.h @@ -87,59 +87,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -160,26 +107,6 @@ along with this program. If not, see . #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/lfkeyboards/lfk78/keymaps/ca178858/keymap.c b/keyboards/lfkeyboards/lfk78/keymaps/ca178858/keymap.c index 4e5e84722087..9e79a7355509 100644 --- a/keyboards/lfkeyboards/lfk78/keymaps/ca178858/keymap.c +++ b/keyboards/lfkeyboards/lfk78/keymaps/ca178858/keymap.c @@ -57,7 +57,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [CS_GO] = LAYOUT_split_rshift( - _______, _______, KC_GESC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_FN0, _______, \ + _______, _______, KC_GESC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, F(0), _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ _______, _______, KC_LCTL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ @@ -99,11 +99,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `---------' `------------------------------------------------------' `--------------' */ [SETTINGS] = LAYOUT_split_rshift( - XXXXXXX, XXXXXXX, KC_FN0, KC_FN3, KC_FN4, KC_FN5, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, BL_INC, BL_TOGG, RGB_TOG, RGB_VAI, \ + XXXXXXX, XXXXXXX, F(0), F(3), F(4), F(5), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, BL_INC, BL_TOGG, RGB_TOG, RGB_VAI, \ XXXXXXX, XXXXXXX, DEBUG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_VAD, \ - XXXXXXX, XXXXXXX, KC_FN0, KC_FN6, KC_FN8, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, \ - XXXXXXX, XXXXXXX, KC_FN10, KC_FN7, KC_FN9, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_FN0, XXXXXXX, RGB_HUI, \ - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_FN12, XXXXXXX, XXXXXXX, KC_FN0, RGB_SAD, RGB_HUD, RGB_SAI \ + XXXXXXX, XXXXXXX, F(0), F(6), F(8), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, \ + XXXXXXX, XXXXXXX, F(10), F(7), F(9), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, F(0), XXXXXXX, RGB_HUI, \ + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, F(12), XXXXXXX, XXXXXXX, F(0), RGB_SAD, RGB_HUD, RGB_SAI \ ), }; diff --git a/keyboards/lfkeyboards/lfk78/keymaps/ca178858/rules.mk b/keyboards/lfkeyboards/lfk78/keymaps/ca178858/rules.mk index 98e3d5a78b18..edc7f0d943f9 100644 --- a/keyboards/lfkeyboards/lfk78/keymaps/ca178858/rules.mk +++ b/keyboards/lfkeyboards/lfk78/keymaps/ca178858/rules.mk @@ -3,7 +3,7 @@ # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) @@ -16,7 +16,7 @@ UNICODE_ENABLE = no # Unicode BLUETOOTH_ENABLE = no # Disable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = no # Enable RGB underlight RGBLIGHT_CUSTOM_DRIVER = no # RGB code is implemented in lefkeyboards, not WS2812 -SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend +SLEEP_LED_ENABLE = yes TAP_DANCE_ENABLE = yes ISSI_ENABLE = yes # If the I2C pullup resistors aren't install this must be disabled diff --git a/keyboards/lfkeyboards/lfk78/post_rules.mk b/keyboards/lfkeyboards/lfk78/post_rules.mk new file mode 100644 index 000000000000..03f975b9df27 --- /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/revb/info.json b/keyboards/lfkeyboards/lfk78/revb/info.json index bc3b13c849d1..a2d28389e7ce 100644 --- a/keyboards/lfkeyboards/lfk78/revb/info.json +++ b/keyboards/lfkeyboards/lfk78/revb/info.json @@ -2,8 +2,6 @@ "keyboard_name": "LFK78/68 Rev B", "url": "", "maintainer": "qmk", - "width": 19.5, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/lfkeyboards/lfk78/revc/info.json b/keyboards/lfkeyboards/lfk78/revc/info.json index e895d39a7a0e..9fa07967c0c1 100644 --- a/keyboards/lfkeyboards/lfk78/revc/info.json +++ b/keyboards/lfkeyboards/lfk78/revc/info.json @@ -2,8 +2,6 @@ "keyboard_name": "LFK78/68 Rev C-H", "url": "", "maintainer": "qmk", - "width": 19.5, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/lfkeyboards/lfk78/revj/info.json b/keyboards/lfkeyboards/lfk78/revj/info.json index 945ee8cd1578..497b147ff94f 100644 --- a/keyboards/lfkeyboards/lfk78/revj/info.json +++ b/keyboards/lfkeyboards/lfk78/revj/info.json @@ -2,8 +2,6 @@ "keyboard_name": "LFK78/68 Rev J", "url": "", "maintainer": "qmk", - "width": 19.5, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/lfkeyboards/lfk78/rules.mk b/keyboards/lfkeyboards/lfk78/rules.mk index 6da6ea4b849c..92360a7e1420 100644 --- a/keyboards/lfkeyboards/lfk78/rules.mk +++ b/keyboards/lfkeyboards/lfk78/rules.mk @@ -1,17 +1,10 @@ # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 @@ -19,32 +12,13 @@ COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality BACKLIGHT_DRIVER = custom -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. RGBLIGHT_CUSTOM_DRIVER = yes # RGB code is implemented in lfkeyboards, not qmk base -SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend -TAP_DANCE_ENABLE = no +SLEEP_LED_ENABLE = yes 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 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 c030590921e1..387c58851c57 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -97,54 +96,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -162,5 +113,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -#endif diff --git a/keyboards/lfkeyboards/lfk87/info.json b/keyboards/lfkeyboards/lfk87/info.json index 46d01acfc0c7..a64782016ed5 100644 --- a/keyboards/lfkeyboards/lfk87/info.json +++ b/keyboards/lfkeyboards/lfk87/info.json @@ -2,8 +2,6 @@ "keyboard_name": "LFK87/SMK87", "url": "", "maintainer": "qmk", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT_tkl_ansi": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"@", "x":2, "y":1.5}, {"label":"#", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"Backspace", "x":13, "y":1.5, "w":2}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.25, "y":1.5}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":6.5, "y":2.5}, {"label":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"|", "x":13.5, "y":2.5, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, {"label":"Shift", "x":0, "y":4.5, "w":2.25}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"N", "x":7.25, "y":4.5}, {"label":"M", "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":"Shift", "x":12.25, "y":4.5, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, {"label":"Win", "x":1.25, "y":5.5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"label":"Alt", "x":10, "y":5.5, "w":1.25}, {"label":"Win", "x":11.25, "y":5.5, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.5, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}] diff --git a/keyboards/lfkeyboards/lfk87/keymaps/ca178858/keymap.c b/keyboards/lfkeyboards/lfk87/keymaps/ca178858/keymap.c index 7f5ae4a721b6..c6799ea532e0 100644 --- a/keyboards/lfkeyboards/lfk87/keymaps/ca178858/keymap.c +++ b/keyboards/lfkeyboards/lfk87/keymaps/ca178858/keymap.c @@ -101,7 +101,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [CS_GO] = LAYOUT_tkl_ansi( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_FN0, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, F(0), _______, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ KC_LCTL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ @@ -148,12 +148,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `------------------------------------------------------' `--------------' */ [SETTINGS] = LAYOUT_tkl_ansi( - KC_FN13, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, XXXXXXX, XXXXXXX, XXXXXXX, \ - KC_FN0, KC_FN3, KC_FN4, KC_FN5, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, BL_INC, BL_TOGG, RGB_TOG, RGB_VAI, XXXXXXX, \ - MU_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_FN2, RGB_MOD, RGB_VAD, XXXXXXX, \ - AU_TOG, KC_FN6, KC_FN8, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, \ - KC_FN10, KC_FN7, KC_FN9, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MU_TOG, XXXXXXX, XXXXXXX, XXXXXXX, KC_FN0, RGB_HUI, \ - XXXXXXX, XXXXXXX, XXXXXXX, KC_FN12, XXXXXXX, XXXXXXX, XXXXXXX, _______, RGB_SAD, RGB_HUD, RGB_SAI \ + F(13), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, XXXXXXX, XXXXXXX, XXXXXXX, \ + F(0), F(3), F(4), F(5), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, BL_INC, BL_TOGG, RGB_TOG, RGB_VAI, XXXXXXX, \ + MU_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, F(2), RGB_MOD, RGB_VAD, XXXXXXX, \ + AU_TOG, F(6), F(8), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, \ + F(10), F(7), F(9), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MU_TOG, XXXXXXX, XXXXXXX, XXXXXXX, F(0), RGB_HUI, \ + XXXXXXX, XXXXXXX, XXXXXXX, F(12), XXXXXXX, XXXXXXX, XXXXXXX, _______, RGB_SAD, RGB_HUD, RGB_SAI \ ), }; diff --git a/keyboards/lfkeyboards/lfk87/keymaps/ca178858/rules.mk b/keyboards/lfkeyboards/lfk87/keymaps/ca178858/rules.mk index f28ec80ea723..58d7fd5ee04b 100644 --- a/keyboards/lfkeyboards/lfk87/keymaps/ca178858/rules.mk +++ b/keyboards/lfkeyboards/lfk87/keymaps/ca178858/rules.mk @@ -3,7 +3,7 @@ # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = yes # Console for debug(+400) @@ -16,7 +16,7 @@ UNICODE_ENABLE = no # Unicode BLUETOOTH_ENABLE = no # Disable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = yes # Enable RGB underlight RGBLIGHT_CUSTOM_DRIVER = yes # RGB code is implemented in lefkeyboards, not WS2812 -SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend +SLEEP_LED_ENABLE = yes TAP_DANCE_ENABLE = yes ISSI_ENABLE = yes # If the I2C pullup resistors aren't install this must be disabled diff --git a/keyboards/lfkeyboards/lfk87/keymaps/default/keymap.c b/keyboards/lfkeyboards/lfk87/keymaps/default/keymap.c index f35826880ba0..8d0dadcf81cd 100644 --- a/keyboards/lfkeyboards/lfk87/keymaps/default/keymap.c +++ b/keyboards/lfkeyboards/lfk87/keymaps/default/keymap.c @@ -82,12 +82,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `------------------------------------------------------------------------------' */ [SETTINGS] = LAYOUT_tkl_ansi( - KC_FN0, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, XXXXXXX, XXXXXXX, XXXXXXX, \ - KC_FN0, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, BL_INC, BL_TOGG, RGB_TOG, RGB_VAI, XXXXXXX, \ - MU_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_FN2, RGB_MOD, RGB_VAD, XXXXXXX, \ - AU_TOG, KC_FN1, KC_FN3, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, \ - KC_FN5, KC_FN2, KC_FN4, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MU_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI, \ - XXXXXXX, XXXXXXX, XXXXXXX, KC_FN12, XXXXXXX, XXXXXXX, XXXXXXX, _______, RGB_SAD, RGB_HUD, RGB_SAI \ + F(0), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, XXXXXXX, XXXXXXX, XXXXXXX, \ + F(0), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, BL_INC, BL_TOGG, RGB_TOG, RGB_VAI, XXXXXXX, \ + MU_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, F(2), RGB_MOD, RGB_VAD, XXXXXXX, \ + AU_TOG, F(1), F(3), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, \ + F(5), F(2), F(4), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MU_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI, \ + XXXXXXX, XXXXXXX, XXXXXXX, F(12), XXXXXXX, XXXXXXX, XXXXXXX, _______, RGB_SAD, RGB_HUD, RGB_SAI \ ), }; @@ -107,15 +107,3 @@ void matrix_init_user(void) { default_layer_set(1); } } - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/lfkeyboards/lfk87/keymaps/default/rules.mk b/keyboards/lfkeyboards/lfk87/keymaps/default/rules.mk index 59cfee01cc24..4d97a284cd3d 100644 --- a/keyboards/lfkeyboards/lfk87/keymaps/default/rules.mk +++ b/keyboards/lfkeyboards/lfk87/keymaps/default/rules.mk @@ -3,21 +3,17 @@ # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = yes # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = yes # Audio output RGBLIGHT_ENABLE = yes # Enable RGB underlight RGBLIGHT_CUSTOM_DRIVER = yes # RGB code is implemented in lefkeyboards, not WS2812 -SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend -TAP_DANCE_ENABLE = no +SLEEP_LED_ENABLE = yes 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 diff --git a/keyboards/lfkeyboards/lfk87/keymaps/gbchk/keymap.c b/keyboards/lfkeyboards/lfk87/keymaps/gbchk/keymap.c index 5c9dfb522a2a..64f4acea809b 100644 --- a/keyboards/lfkeyboards/lfk87/keymaps/gbchk/keymap.c +++ b/keyboards/lfkeyboards/lfk87/keymaps/gbchk/keymap.c @@ -82,12 +82,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `----------------------------------------------------------------------------' */ [SETTINGS] = LAYOUT_tkl_ansi( - KC_FN0, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, XXXXXXX, XXXXXXX, XXXXXXX, \ - KC_FN0, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, BL_INC, BL_TOGG, RGB_TOG, RGB_VAI, XXXXXXX, \ - MU_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_FN2, RGB_MOD, RGB_VAD, XXXXXXX, \ - AU_TOG, KC_F1, KC_FN3, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, \ - KC_FN5, KC_FN2, KC_FN4, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MU_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI, \ - XXXXXXX, XXXXXXX, XXXXXXX, KC_FN12, XXXXXXX, XXXXXXX, XXXXXXX, _______, RGB_SAD, RGB_HUD, RGB_SAI \ + F(0), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, XXXXXXX, XXXXXXX, XXXXXXX, \ + F(0), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, BL_INC, BL_TOGG, RGB_TOG, RGB_VAI, XXXXXXX, \ + MU_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, F(2), RGB_MOD, RGB_VAD, XXXXXXX, \ + AU_TOG, KC_F1, F(3), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, \ + F(5), F(2), F(4), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MU_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI, \ + XXXXXXX, XXXXXXX, XXXXXXX, F(12), XXXXXXX, XXXXXXX, XXXXXXX, _______, RGB_SAD, RGB_HUD, RGB_SAI \ ), }; diff --git a/keyboards/lfkeyboards/lfk87/keymaps/gbchk/rules.mk b/keyboards/lfkeyboards/lfk87/keymaps/gbchk/rules.mk index f7b39455b49d..e9764be26b22 100644 --- a/keyboards/lfkeyboards/lfk87/keymaps/gbchk/rules.mk +++ b/keyboards/lfkeyboards/lfk87/keymaps/gbchk/rules.mk @@ -3,7 +3,7 @@ # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) @@ -16,8 +16,7 @@ UNICODE_ENABLE = no # Unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = yes # Enable RGB underlight RGBLIGHT_CUSTOM_DRIVER = yes # RGB code is implemented in lefkeyboards, not WS2812 -SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend -TAP_DANCE_ENABLE = no +SLEEP_LED_ENABLE = yes 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 diff --git a/keyboards/lfkeyboards/lfk87/keymaps/iso/keymap.c b/keyboards/lfkeyboards/lfk87/keymaps/iso/keymap.c index b86c99a41e1f..b9d46df2b941 100644 --- a/keyboards/lfkeyboards/lfk87/keymaps/iso/keymap.c +++ b/keyboards/lfkeyboards/lfk87/keymaps/iso/keymap.c @@ -83,11 +83,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [SETTINGS] = LAYOUT_tkl_iso( XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, XXXXXXX, XXXXXXX, XXXXXXX, \ - KC_FN0, KC_FN3, KC_FN4, KC_FN5, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, BL_INC, BL_TOGG, RGB_TOG, RGB_VAI, XXXXXXX, \ + F(0), F(3), F(4), F(5), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, BL_INC, BL_TOGG, RGB_TOG, RGB_VAI, XXXXXXX, \ MU_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_VAD, XXXXXXX, \ - AU_TOG, KC_FN3, KC_FN5, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, \ - KC_FN7, XXXXXXX, KC_FN4, KC_FN6, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MU_TOG, XXXXXXX, XXXXXXX, XXXXXXX, KC_FN0, RGB_HUI, \ - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_FN0, RGB_SAD, RGB_HUD, RGB_SAI \ + AU_TOG, F(3), F(5), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, \ + F(7), XXXXXXX, F(4), F(6), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MU_TOG, XXXXXXX, XXXXXXX, XXXXXXX, F(0), RGB_HUI, \ + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, F(0), RGB_SAD, RGB_HUD, RGB_SAI \ ), }; @@ -107,15 +107,3 @@ void matrix_init_user(void) { default_layer_set(1); } } - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/lfkeyboards/lfk87/keymaps/iso/rules.mk b/keyboards/lfkeyboards/lfk87/keymaps/iso/rules.mk index da697e66fec4..debde02835df 100644 --- a/keyboards/lfkeyboards/lfk87/keymaps/iso/rules.mk +++ b/keyboards/lfkeyboards/lfk87/keymaps/iso/rules.mk @@ -3,21 +3,17 @@ # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = yes # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = yes # Audio output RGBLIGHT_ENABLE = yes # Enable RGB underlight RGBLIGHT_CUSTOM_DRIVER = yes # RGB code is implemented in lefkeyboards, not WS2812 -SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend -TAP_DANCE_ENABLE = no +SLEEP_LED_ENABLE = yes 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 diff --git a/keyboards/lfkeyboards/lfk87/lfk87.c b/keyboards/lfkeyboards/lfk87/lfk87.c index 4b34fcef7e19..10fc14a8aa5d 100644 --- a/keyboards/lfkeyboards/lfk87/lfk87.c +++ b/keyboards/lfkeyboards/lfk87/lfk87.c @@ -32,8 +32,8 @@ void matrix_init_kb(void) set_rgb(32, 0xFF, 0x00, 0x00); // Layer indicator, start red #ifndef AUDIO_ENABLE // If we're not using the audio pin, drive it low - sbi(DDRC, 6); - cbi(PORTC, 6); + setPinOutput(C6); + writePinLow(C6); #endif #ifdef ISSI_ENABLE issi_init(); diff --git a/keyboards/lfkeyboards/lfk87/lfk87.h b/keyboards/lfkeyboards/lfk87/lfk87.h index 1a2f9fbaf63d..1b1368659ba8 100644 --- a/keyboards/lfkeyboards/lfk87/lfk87.h +++ b/keyboards/lfkeyboards/lfk87/lfk87.h @@ -1,24 +1,9 @@ -#ifndef LFK87_H -#define LFK87_H - -/* if the kb.h file exists (because we're running from qmkbuilder) include it */ -#if __has_include("kb.h") -#include "kb.h" -#endif +#pragma once #include "quantum.h" #include "matrix.h" #include -#ifndef cbi -#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) -#endif - -#ifndef sbi -#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) -#endif - - typedef struct RGB_Color { uint16_t red; uint16_t green; @@ -58,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 000000000000..563462dd9957 --- /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 dc6fa376aa6c..a6fb290d0976 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) @@ -24,7 +19,7 @@ LAYOUTS = tkl_ansi tkl_iso # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 @@ -32,24 +27,10 @@ COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality BACKLIGHT_DRIVER = custom -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = yes # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = yes # Audio output RGBLIGHT_ENABLE = yes # Enable RGB underlight RGBLIGHT_CUSTOM_DRIVER = yes # RGB code is implemented in lefkeyboards, not WS2812 -SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend -TAP_DANCE_ENABLE = no +SLEEP_LED_ENABLE = yes 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/config.h b/keyboards/lfkeyboards/lfkpad/config.h index f3da6c8f77e9..972b0283b5a4 100644 --- a/keyboards/lfkeyboards/lfkpad/config.h +++ b/keyboards/lfkeyboards/lfkpad/config.h @@ -104,59 +104,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -177,26 +124,6 @@ along with this program. If not, see . #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/lfkeyboards/lfkpad/info.json b/keyboards/lfkeyboards/lfkpad/info.json index f5f41f5a7a7d..53ac3e0b8bc0 100644 --- a/keyboards/lfkeyboards/lfkpad/info.json +++ b/keyboards/lfkeyboards/lfkpad/info.json @@ -2,8 +2,6 @@ "keyboard_name": "LFKPad", "url": "", "maintainer": "qmk", - "width": 4, - "height": 6, "layouts": { "LAYOUT_numpad_6x4": { "layout": [ diff --git a/keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/config.h b/keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/config.h new file mode 100644 index 000000000000..a9f61f849cbc --- /dev/null +++ b/keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/config.h @@ -0,0 +1,30 @@ +/* Copyright 2021 Pascal Pfeil + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +/* 1000Hz USB polling */ +#define USB_POLLING_INTERVAL_MS 1 + +/* Send up to 4 key press events per scan */ +#define QMK_KEYS_PER_SCAN 4 + +/* Force NKRO on boot up */ +#define FORCE_NKRO + +#define RGB_DISABLE_WHEN_USB_SUSPENDED + +#define RGB_DISABLE_TIMEOUT 900000 diff --git a/keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/keymap.c b/keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/keymap.c new file mode 100644 index 000000000000..b2b97f442d4e --- /dev/null +++ b/keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/keymap.c @@ -0,0 +1,73 @@ +/* Copyright 2021 Pascal Pfeil + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_numpad_6x4( + KC_ESC, KC_TAB, KC_BSPC, MO(1), + KC_NLCK, KC_PSLS, KC_PAST, 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 + ), + + /* RGB */ + [1] = LAYOUT_numpad_6x4( + RGB_SAI, RGB_VAI, RGB_HUI, _______, + RGB_SAD, RGB_VAD, RGB_HUD, RESET, + RGB_M_X, RGB_M_G, RGB_MOD, + RGB_M_SW,RGB_M_SN,RGB_M_K, RGB_RMOD, + RGB_M_P, RGB_M_B, RGB_M_R, + XXXXXXX, XXXXXXX, RGB_TOG + ), + + /* VIA wants four keymaps */ + [2] = LAYOUT_numpad_6x4( + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, + _______, _______, _______ + ), + + /* VIA wants four keymaps */ + [3] = LAYOUT_numpad_6x4( + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, + _______, _______, _______ + ), +}; + +const uint8_t number_leds[] = {8, 9, 10, 11, 12, 13, 15, 16, 17}; +const uint8_t number_leds_size = sizeof(number_leds) / sizeof(uint8_t); + +bool led_update_user(led_t led_state) { + for (uint8_t i = 0; i < number_leds_size; i++) + if (led_state.num_lock) + // set to whatever the other leds are doing + // this is needed so that upon disabling num lock, the leds don't stay red + rgblight_sethsv_at(rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val(), numer_leds[i]); + else + rgblight_setrgb_red_at(numer_leds[i]); // set to red + + return true; +} diff --git a/keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/rules.mk b/keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/lfkeyboards/lfkpad/lfkpad.c b/keyboards/lfkeyboards/lfkpad/lfkpad.c index b91b7da67d40..fffa26ca3a5f 100644 --- a/keyboards/lfkeyboards/lfkpad/lfkpad.c +++ b/keyboards/lfkeyboards/lfkpad/lfkpad.c @@ -8,19 +8,9 @@ #include "TWIlib.h" #include "lighting.h" -uint16_t click_hz = CLICK_HZ; -uint16_t click_time = CLICK_MS; -uint8_t click_toggle = CLICK_ENABLED; - void matrix_init_kb(void) { matrix_init_user(); -#ifndef AUDIO_ENABLE - // If we're not using the audio pin, drive it low - setPinOutput(C6); - writePinLow(C6); -#endif - #ifdef ISSI_ENABLE issi_init(); #endif @@ -68,97 +58,6 @@ void matrix_scan_kb(void) { matrix_scan_user(); } -void click(uint16_t freq, uint16_t duration) { -#ifdef AUDIO_ENABLE - if (freq >= 100 && freq <= 20000 && duration < 100) { - play_note(freq, 10); - - for (uint16_t i = 0; i < duration; i++) { - _delay_ms(1); - } - - stop_all_notes(); - } -#endif -} - -bool process_record_kb(uint16_t keycode, keyrecord_t* record) { - if (click_toggle && record->event.pressed) { - click(click_hz, click_time); - } - - if (keycode == RESET) { - reset_keyboard_kb(); - } - - return process_record_user(keycode, record); -} - -void action_function(keyrecord_t *event, uint8_t id, uint8_t opt) { -#ifdef AUDIO_ENABLE - int8_t sign = 1; -#endif - - if (id == LFK_ESC_TILDE) { - // Send ~ on shift-esc - void (*method)(uint8_t) = (event->event.pressed) ? &add_key : &del_key; - uint8_t shifted = get_mods() & MOD_MASK_SHIFT; - - if (layer_state == 0) { - method(shifted ? KC_GRAVE : KC_ESCAPE); - } else { - method(shifted ? KC_ESCAPE : KC_GRAVE); - } - send_keyboard_report(); - } else if (event->event.pressed) { - switch (id) { - case LFK_SET_DEFAULT_LAYER: - // set/save the current base layer to eeprom, falls through to LFK_CLEAR - eeconfig_update_default_layer(1UL << opt); - default_layer_set(1UL << opt); - case LFK_CLEAR: - // Go back to default layer - layer_clear(); - break; -#ifdef AUDIO_ENABLE - case LFK_CLICK_FREQ_LOWER: - sign = -1; // continue to next statement - case LFK_CLICK_FREQ_HIGHER: - click_hz += sign * 100; - click(click_hz, click_time); - break; - case LFK_CLICK_TOGGLE: - if (click_toggle) { - click_toggle = 0; - click(4000, 100); - click(1000, 100); - } else { - click_toggle = 1; - click(1000, 100); - click(4000, 100); - } - break; - case LFK_CLICK_TIME_SHORTER: - sign = -1; // continue to next statement - case LFK_CLICK_TIME_LONGER: - click_time += sign; - click(click_hz, click_time); - break; -#endif - } - } -} - -void reset_keyboard_kb() { -#ifdef WATCHDOG_ENABLE - MCUSR = 0; - wdt_disable(); - wdt_reset(); -#endif - - reset_keyboard(); -} - // LFK lighting info const uint8_t rgb_matrices[] = { 0, 1 }; const uint8_t rgb_sequence[] = { @@ -168,7 +67,6 @@ const uint8_t rgb_sequence[] = { 17, 18, 9, 8, 19, 21, 11, 22, 14, 12, - 16, 26, 4, 25, 13, 24, diff --git a/keyboards/lfkeyboards/lfkpad/lfkpad.h b/keyboards/lfkeyboards/lfkpad/lfkpad.h index 0f34150db99e..5ca8a3c50d0f 100644 --- a/keyboards/lfkeyboards/lfkpad/lfkpad.h +++ b/keyboards/lfkeyboards/lfkpad/lfkpad.h @@ -2,42 +2,6 @@ #include "quantum.h" -typedef struct RGB_Color { - uint16_t red; - uint16_t green; - uint16_t blue; -} RGB_Color; - -typedef struct Layer_Info { - uint32_t layer; - uint32_t mask; - RGB_Color color; -} Layer_Info; - -extern const uint32_t layer_count; -extern const Layer_Info layer_info[]; - -enum action_functions { - LFK_CLEAR = 0, // Resets all layers - LFK_ESC_TILDE, // esc+lshift = ~ - LFK_SET_DEFAULT_LAYER, // changes and saves current base layer to eeprom - LFK_CLICK_TOGGLE, // Adjusts click duration - LFK_CLICK_FREQ_HIGHER, // Adjusts click frequency - LFK_CLICK_FREQ_LOWER, // Adjusts click frequency - LFK_CLICK_TIME_LONGER, // Adjusts click duration - LFK_CLICK_TIME_SHORTER, // Adjusts click duration - LFK_DEBUG_SETTINGS, // prints LED and click settings to HID - LFK_LED_TEST // cycles through switch and RGB LEDs -}; - -#define CLICK_HZ 500 -#define CLICK_MS 2 -#define CLICK_ENABLED 0 - -void reset_keyboard_kb(void); -void click(uint16_t freq, uint16_t duration); - -// readability #define ___ KC_NO #define LAYOUT_numpad_6x4( \ diff --git a/keyboards/lfkeyboards/lfkpad/post_rules.mk b/keyboards/lfkeyboards/lfkpad/post_rules.mk new file mode 100644 index 000000000000..ad997587b2de --- /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 91d754803782..db3db8060696 100644 --- a/keyboards/lfkeyboards/lfkpad/rules.mk +++ b/keyboards/lfkeyboards/lfkpad/rules.mk @@ -2,47 +2,27 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -RGBLIGHT_CUSTOM_DRIVER = yes # RGB code is implemented in lefkeyboards, not qmk base -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -TAP_DANCE_ENABLE = no +RGBLIGHT_CUSTOM_DRIVER = yes # RGB code is implemented in lfkeyboards, not qmk base +AUDIO_ENABLE = no # Audio output +SLEEP_LED_ENABLE = yes ISSI_ENABLE = yes # If the I2C pullup resistors aren't installed this must be disabled WATCHDOG_ENABLE = no # Resets keyboard if matrix_scan() isn't run every 250ms 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 69e63268ddfc..cb07755c53b1 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 b8c0f2b671d2..1504a95cb417 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -84,54 +83,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -149,5 +100,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -#endif diff --git a/keyboards/lfkeyboards/mini1800/info.json b/keyboards/lfkeyboards/mini1800/info.json index 07e05166b8c7..5d2662b87757 100644 --- a/keyboards/lfkeyboards/mini1800/info.json +++ b/keyboards/lfkeyboards/mini1800/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Mini1800", "url": "", "maintainer": "qmk", - "width": 19.5, - "height": 5.25, "layouts": { "LAYOUT": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Back Space", "x":13, "y":0, "w":2}, {"label":"Num Lock", "x":15.5, "y":0}, {"label":"/", "x":16.5, "y":0}, {"label":"*", "x":17.5, "y":0}, {"label":"-", "x":18.5, "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":"7", "x":15.5, "y":1}, {"label":"8", "x":16.5, "y":1}, {"label":"9", "x":17.5, "y":1}, {"label":"+", "x":18.5, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.25}, {"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":"4", "x":15.5, "y":2}, {"label":"5", "x":16.5, "y":2}, {"label":"6", "x":17.5, "y":2}, {"label":"+", "x":18.5, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"1", "x":15.5, "y":3}, {"label":"2", "x":16.5, "y":3}, {"label":"3", "x":17.5, "y":3}, {"label":"Enter", "x":18.5, "y":3, "h":2}, {"label":"\u2191", "x":14.25, "y":3.25}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4}, {"label":"Fn", "x":11, "y":4}, {"label":"Ctrl", "x":12, "y":4}, {"label":"0", "x":16.5, "y":4}, {"label":".", "x":17.5, "y":4}, {"label":"\u2190", "x":13.25, "y":4.25}, {"label":"\u2193", "x":14.25, "y":4.25}, {"label":"\u2192", "x":15.25, "y":4.25}] diff --git a/keyboards/lfkeyboards/mini1800/keymaps/ca178858/keymap.c b/keyboards/lfkeyboards/mini1800/keymaps/ca178858/keymap.c index 479862fe7c4a..2a16bf4ccf65 100644 --- a/keyboards/lfkeyboards/mini1800/keymaps/ca178858/keymap.c +++ b/keyboards/lfkeyboards/mini1800/keymaps/ca178858/keymap.c @@ -86,11 +86,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `----------------------------------------------------------------------------' */ [SETTINGS] = LAYOUT( - KC_FN0, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, BL_INC, BL_TOGG, RGB_TOG, RGB_VAI, XXXXXXX, XXXXXXX, \ - MU_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_FN2, RGB_MOD, RGB_VAD, XXXXXXX, XXXXXXX, \ - AU_TOG, KC_F1, KC_FN3, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ - KC_FN5, KC_FN2, KC_FN4, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MU_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ - XXXXXXX, XXXXXXX, XXXXXXX, KC_FN12, XXXXXXX, XXXXXXX, XXXXXXX, RGB_SAD, RGB_HUD, RGB_SAI, XXXXXXX, XXXXXXX \ + F(0), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, BL_INC, BL_TOGG, RGB_TOG, RGB_VAI, XXXXXXX, XXXXXXX, \ + MU_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, F(2), RGB_MOD, RGB_VAD, XXXXXXX, XXXXXXX, \ + AU_TOG, KC_F1, F(3), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + F(5), F(2), F(4), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MU_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + XXXXXXX, XXXXXXX, XXXXXXX, F(12), XXXXXXX, XXXXXXX, XXXXXXX, RGB_SAD, RGB_HUD, RGB_SAI, XXXXXXX, XXXXXXX \ ), }; diff --git a/keyboards/lfkeyboards/mini1800/keymaps/ca178858/rules.mk b/keyboards/lfkeyboards/mini1800/keymaps/ca178858/rules.mk index 2c6035d583fa..3e3fc641ad39 100644 --- a/keyboards/lfkeyboards/mini1800/keymaps/ca178858/rules.mk +++ b/keyboards/lfkeyboards/mini1800/keymaps/ca178858/rules.mk @@ -3,7 +3,7 @@ # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) @@ -16,7 +16,7 @@ UNICODE_ENABLE = no # Unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = yes # Enable RGB underlight RGBLIGHT_CUSTOM_DRIVER = yes # RGB code is implemented in lefkeyboards, not WS2812 -SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend +SLEEP_LED_ENABLE = yes TAP_DANCE_ENABLE = yes ISSI_ENABLE = yes # If the I2C pullup resistors aren't install this must be disabled diff --git a/keyboards/lfkeyboards/mini1800/keymaps/default/keymap.c b/keyboards/lfkeyboards/mini1800/keymaps/default/keymap.c index 303fa9bb4c64..364bf06c3094 100644 --- a/keyboards/lfkeyboards/mini1800/keymaps/default/keymap.c +++ b/keyboards/lfkeyboards/mini1800/keymaps/default/keymap.c @@ -83,11 +83,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `----------------------------------------------------------------------------' */ [SETTINGS] = LAYOUT( - KC_FN0, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, BL_INC, BL_TOGG, RGB_TOG, RGB_VAI, XXXXXXX, XXXXXXX, \ - MU_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_FN2, RGB_MOD, RGB_VAD, XXXXXXX, XXXXXXX, \ - AU_TOG, KC_FN1, KC_FN3, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ - KC_FN5, KC_FN2, KC_FN4, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MU_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ - XXXXXXX, XXXXXXX, XXXXXXX, KC_FN12, XXXXXXX, XXXXXXX, XXXXXXX, RGB_SAD, RGB_HUD, RGB_SAI, XXXXXXX, XXXXXXX \ + F(0), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, BL_INC, BL_TOGG, RGB_TOG, RGB_VAI, XXXXXXX, XXXXXXX, \ + MU_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, F(2), RGB_MOD, RGB_VAD, XXXXXXX, XXXXXXX, \ + AU_TOG, F(1), F(3), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + F(5), F(2), F(4), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MU_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + XXXXXXX, XXXXXXX, XXXXXXX, F(12), XXXXXXX, XXXXXXX, XXXXXXX, RGB_SAD, RGB_HUD, RGB_SAI, XXXXXXX, XXXXXXX \ ), }; @@ -107,15 +107,3 @@ void matrix_init_user(void) { default_layer_set(1); } } - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/lfkeyboards/mini1800/keymaps/default/rules.mk b/keyboards/lfkeyboards/mini1800/keymaps/default/rules.mk index 2619a2d197fb..d8092db6e14b 100644 --- a/keyboards/lfkeyboards/mini1800/keymaps/default/rules.mk +++ b/keyboards/lfkeyboards/mini1800/keymaps/default/rules.mk @@ -3,21 +3,17 @@ # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = yes # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = yes # Audio output RGBLIGHT_ENABLE = yes # Enable RGB underlight RGBLIGHT_CUSTOM_DRIVER = yes # RGB code is implemented in lefkeyboards, not WS2812 -SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend -TAP_DANCE_ENABLE = no +SLEEP_LED_ENABLE = yes ISSI_ENABLE = yes # If the I2C pullup resistors aren't install this must be disabled WATCHDOG_ENABLE = yes # Resets keyboard if matrix_scan isn't run every 250ms diff --git a/keyboards/lfkeyboards/mini1800/mini1800.c b/keyboards/lfkeyboards/mini1800/mini1800.c index d5f4193c1da0..4c897ac69343 100644 --- a/keyboards/lfkeyboards/mini1800/mini1800.c +++ b/keyboards/lfkeyboards/mini1800/mini1800.c @@ -37,8 +37,8 @@ void matrix_init_kb(void) set_rgb(32, 0xFF, 0x00, 0x00); // Layer indicator, start red #ifndef AUDIO_ENABLE // If we're not using the audio pin, drive it low - sbi(DDRC, 6); - cbi(PORTC, 6); + setPinOutput(C6); + writePinLow(C6); #endif _delay_ms(500); #ifdef ISSI_ENABLE diff --git a/keyboards/lfkeyboards/mini1800/mini1800.h b/keyboards/lfkeyboards/mini1800/mini1800.h index 17f7da348396..3e460c8a11d3 100644 --- a/keyboards/lfkeyboards/mini1800/mini1800.h +++ b/keyboards/lfkeyboards/mini1800/mini1800.h @@ -1,24 +1,9 @@ -#ifndef LFK87_H -#define LFK87_H - -/* if the kb.h file exists (because we're running from qmkbuilder) include it */ -#if __has_include("kb.h") -#include "kb.h" -#endif +#pragma once #include "quantum.h" #include "matrix.h" #include -#ifndef cbi -#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) -#endif - -#ifndef sbi -#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) -#endif - - typedef struct RGB_Color { uint16_t red; uint16_t green; @@ -57,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 000000000000..f04e10e4a3b5 --- /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 a9c29c4b91e2..c9a9b0105439 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/lfkeyboards/smk65/info.json b/keyboards/lfkeyboards/smk65/info.json index dfba5737a572..038893c8f350 100644 --- a/keyboards/lfkeyboards/smk65/info.json +++ b/keyboards/lfkeyboards/smk65/info.json @@ -2,8 +2,6 @@ "keyboard_name": "SMK65", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_ansi": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] diff --git a/keyboards/lfkeyboards/smk65/keymaps/default/keymap.c b/keyboards/lfkeyboards/smk65/keymaps/default/keymap.c index 996bee5f7ad1..1470f95022f7 100644 --- a/keyboards/lfkeyboards/smk65/keymaps/default/keymap.c +++ b/keyboards/lfkeyboards/smk65/keymaps/default/keymap.c @@ -58,8 +58,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_FN] = LAYOUT_65_ansi( KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14, MU_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, - AU_TOG, KC_FN1, KC_FN3, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, RGB_MOD, - KC_FN5, KC_FN2, KC_FN4, _______, _______, _______, _______, MU_TOG, RGB_VAD, RGB_VAI, _______, _______, RGB_HUI, _______, + AU_TOG, F(1), F(3), _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, RGB_MOD, + F(5), F(2), F(4), _______, _______, _______, _______, MU_TOG, RGB_VAD, RGB_VAI, _______, _______, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_HUD, RGB_SAI ) }; diff --git a/keyboards/lfkeyboards/smk65/keymaps/iso/keymap.c b/keyboards/lfkeyboards/smk65/keymaps/iso/keymap.c index c93abfd34c35..3a1701ce8629 100644 --- a/keyboards/lfkeyboards/smk65/keymaps/iso/keymap.c +++ b/keyboards/lfkeyboards/smk65/keymaps/iso/keymap.c @@ -58,8 +58,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_FN] = LAYOUT_65_iso( KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14, MU_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, - AU_TOG, KC_FN1, KC_FN3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, RGB_MOD, - KC_FN5, _______, KC_FN2, KC_FN4, _______, _______, _______, _______, MU_TOG, RGB_VAD, RGB_VAI, _______, _______, RGB_HUI, _______, + AU_TOG, F(1), F(3), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, RGB_MOD, + F(5), _______, F(2), F(4), _______, _______, _______, _______, MU_TOG, RGB_VAD, RGB_VAI, _______, _______, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_HUD, RGB_SAI ), }; diff --git a/keyboards/lfkeyboards/smk65/revb/revb.c b/keyboards/lfkeyboards/smk65/revb/revb.c index 7498febeb39a..01c339f06bbb 100644 --- a/keyboards/lfkeyboards/smk65/revb/revb.c +++ b/keyboards/lfkeyboards/smk65/revb/revb.c @@ -34,12 +34,12 @@ void matrix_init_kb(void) #ifdef AUDIO_ENABLE // audio_init() sets PB5 to output and drives it low, which breaks our matrix // so reset PB5 to input - cbi(DDRB, 5); - sbi(PORTB, 5); + setPinInput(B5); + writePinHigh(B5); #else // If we're not using the audio pin, drive it low - sbi(DDRC, 6); - cbi(PORTC, 6); + setPinOutput(C6); + writePinLow(C6); #endif #ifdef ISSI_ENABLE diff --git a/keyboards/lfkeyboards/smk65/revb/revb.h b/keyboards/lfkeyboards/smk65/revb/revb.h index 3d3e5181fdf2..dbb25b869a45 100644 --- a/keyboards/lfkeyboards/smk65/revb/revb.h +++ b/keyboards/lfkeyboards/smk65/revb/revb.h @@ -14,26 +14,10 @@ along with this program. If not, see . #pragma once -/* if the kb.h file exists (because we're running from qmkbuilder) include it */ -#ifdef __has_include -#if __has_include("kb.h") -#include "kb.h" -#endif -#endif - #include "quantum.h" #include "matrix.h" #include -#ifndef cbi -#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) -#endif - -#ifndef sbi -#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) -#endif - - typedef struct RGB_Color { uint16_t red; uint16_t green; diff --git a/keyboards/lfkeyboards/smk65/rules.mk b/keyboards/lfkeyboards/smk65/rules.mk index 26bf8cd8a831..9d5f6fc17f04 100644 --- a/keyboards/lfkeyboards/smk65/rules.mk +++ b/keyboards/lfkeyboards/smk65/rules.mk @@ -1,18 +1,15 @@ # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output DEFAULT_FOLDER = lfkeyboards/smk65/revb diff --git a/keyboards/lily58/keymaps/barabas/keymap.c b/keyboards/lily58/keymaps/barabas/keymap.c index ca23a59c23a3..64ef3cfffc4d 100644 --- a/keyboards/lily58/keymaps/barabas/keymap.c +++ b/keyboards/lily58/keymaps/barabas/keymap.c @@ -124,8 +124,8 @@ void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) { } } -// SSD1306 OLED update loop, make sure to enable OLED_DRIVER_ENABLE=yes in rules.mk -#ifdef OLED_DRIVER_ENABLE +// SSD1306 OLED update loop, make sure to enable OLED_ENABLE=yes in rules.mk +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { if (!is_keyboard_master()) return OLED_ROTATION_180; // flips the display 180 degrees if offhand @@ -171,7 +171,7 @@ void write_layer_state(void) { oled_advance_page(true); } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { write_layer_state(); oled_write_ln(read_keylog(), false); @@ -179,12 +179,13 @@ void oled_task_user(void) { } else { oled_write(read_logo(), false); } + return false; } -#endif // OLED_DRIVER_ENABLE +#endif // OLED_ENABLE bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (record->event.pressed) { -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE set_keylog(keycode, record); #endif } diff --git a/keyboards/lily58/keymaps/bcat/config.h b/keyboards/lily58/keymaps/bcat/config.h index 180926204492..dbe724d56b96 100644 --- a/keyboards/lily58/keymaps/bcat/config.h +++ b/keyboards/lily58/keymaps/bcat/config.h @@ -1,3 +1,19 @@ +/* Copyright 2021 Jonathan Rascher + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #pragma once #define EE_HANDS diff --git a/keyboards/lily58/keymaps/bcat/keymap.c b/keyboards/lily58/keymaps/bcat/keymap.c index 549363d03a12..69af2ca003c0 100644 --- a/keyboards/lily58/keymaps/bcat/keymap.c +++ b/keyboards/lily58/keymaps/bcat/keymap.c @@ -34,6 +34,7 @@ enum layer { #define KY_ZMRST LCTL(KC_0) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off /* Default layer: http://www.keyboard-layout-editor.com/#/gists/e0eb3af65961e9fd612dcff3ddd88e4f */ [LAYER_DEFAULT] = LAYOUT( KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, @@ -42,7 +43,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_WBAK, KC_WFWD, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_LALT, KC_LCTL, LY_LWR, KC_SPC, KC_ENT, LY_RSE, KC_RALT, KC_RGUI ), - /* Lower layer: http://www.keyboard-layout-editor.com/#/gists/19ad0d3b5d745fbb2818db09740f5a11 */ [LAYER_LOWER] = LAYOUT( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -51,7 +51,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, KC_APP, KC_PSCR, KC_SLCK, KC_PAUS, KC_LGUI, _______, _______, KC_BSLS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_GRV, _______, _______, _______, _______, _______, _______, _______, _______ ), - /* Raise layer: http://www.keyboard-layout-editor.com/#/gists/912be7955f781cdaf692cc4d4c0b5823 */ [LAYER_RAISE] = LAYOUT( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -60,7 +59,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_F12, KC_INS, _______, _______, _______, _______, _______, _______, _______, _______ ), - /* Adjust layer: http://www.keyboard-layout-editor.com/#/gists/8f6a3f08350a9bbe1d414b22bca4e6c7 */ [LAYER_ADJUST] = LAYOUT( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -69,8 +67,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), + // clang-format on }; -layer_state_t layer_state_set_keymap(layer_state_t state) { - return update_tri_layer_state(state, LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST); -} +layer_state_t layer_state_set_keymap(layer_state_t state) { return update_tri_layer_state(state, LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST); } diff --git a/keyboards/lily58/keymaps/chuan/keymap.c b/keyboards/lily58/keymaps/chuan/keymap.c index da3416087e9b..1e0923a3c526 100644 --- a/keyboards/lily58/keymaps/chuan/keymap.c +++ b/keyboards/lily58/keymaps/chuan/keymap.c @@ -130,7 +130,7 @@ void matrix_init_user(void) { #endif } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { if (!is_keyboard_master()) @@ -152,7 +152,7 @@ const char *read_timelog(void); char encoder_debug[24]; -void oled_task_user(void) { +bool oled_task_user(void) { // Host Keyboard Layer Status snprintf(encoder_debug, sizeof(encoder_debug), "%i %i", counter, lastIndex ); if (is_keyboard_master()) { @@ -168,8 +168,9 @@ void oled_task_user(void) { oled_write(read_logo(), false); // oled_write_ln(encoder_debug, false); } + return false; } -#endif //OLED_DRIVER_ENABLE +#endif //OLED_ENABLE bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (record->event.pressed) { diff --git a/keyboards/lily58/keymaps/curry/rules.mk b/keyboards/lily58/keymaps/curry/rules.mk index 2137a15074dc..1ff1fad96833 100644 --- a/keyboards/lily58/keymaps/curry/rules.mk +++ b/keyboards/lily58/keymaps/curry/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no CONSOLE_ENABLE = no COMMAND_ENABLE = no @@ -10,7 +10,7 @@ COMMAND_ENABLE = no RGBLIGHT_ENABLE = no RGB_MATRIX_ENABLE = no -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes BOOTLOADER = atmel-dfu SPLIT_TRANSPORT = mirror diff --git a/keyboards/lily58/keymaps/cykedev/keymap.c b/keyboards/lily58/keymaps/cykedev/keymap.c index e3887235624b..75cdc04febbb 100644 --- a/keyboards/lily58/keymaps/cykedev/keymap.c +++ b/keyboards/lily58/keymaps/cykedev/keymap.c @@ -105,7 +105,7 @@ bool get_ignore_mod_tap_interrupt(uint16_t keycode, keyrecord_t *record) { } } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { if (!is_keyboard_master()) return OLED_ROTATION_180; @@ -114,8 +114,8 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) { const char *read_logo(void); -void oled_task_user(void) { +bool oled_task_user(void) { oled_write_ln(read_logo(), false); + return false; } -#endif // OLED_DRIVER_ENABLE - +#endif // OLED_ENABLE diff --git a/keyboards/lily58/keymaps/cykedev/rules.mk b/keyboards/lily58/keymaps/cykedev/rules.mk index 4424813693a5..30a34bd64b7d 100644 --- a/keyboards/lily58/keymaps/cykedev/rules.mk +++ b/keyboards/lily58/keymaps/cykedev/rules.mk @@ -1,9 +1,9 @@ AUTO_SHIFT_ENABLE = no -OLED_DRIVER_ENABLE= yes +OLED_ENABLE= yes EXTRAKEY_ENABLE = yes -SRC += ./lib/logo_reader.c +SRC += ./lib/logo_reader.c # ./lib/keylogger.c \ # ./lib/mode_icon_reader.c \ # ./lib/timelogger.c \ diff --git a/keyboards/lily58/keymaps/datadavd/config.h b/keyboards/lily58/keymaps/datadavd/config.h new file mode 100644 index 000000000000..f0b7f6ee399b --- /dev/null +++ b/keyboards/lily58/keymaps/datadavd/config.h @@ -0,0 +1,53 @@ +/* +This is the c configuration file for the keymap + +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +//#define USE_MATRIX_I2C + +/* Select hand configuration */ + +#define MASTER_LEFT +// #define MASTER_RIGHT +// #define EE_HANDS + +// #define SSD1306OLED + +#define TAPPING_FORCE_HOLD +#define TAPPING_TERM 50 + +#undef RGBLED_NUM +#define RGBLIGHT_ANIMATIONS +#define RGBLED_NUM 27 +#define RGBLIGHT_LIMIT_VAL 120 +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 17 +#define RGBLIGHT_VAL_STEP 17 + +// Mouse configs +#define MOUSEKEY_DELAY 150 + +// Underglow +/* +#undef RGBLED_NUM +#define RGBLED_NUM 14 // Number of LEDs +#define RGBLIGHT_ANIMATIONS +#define RGBLIGHT_SLEEP +*/ diff --git a/keyboards/lily58/keymaps/datadavd/keymap.c b/keyboards/lily58/keymaps/datadavd/keymap.c new file mode 100644 index 000000000000..0485cd19ad1a --- /dev/null +++ b/keyboards/lily58/keymaps/datadavd/keymap.c @@ -0,0 +1,266 @@ +/* Copyright 2021 David Dansby + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layer_number { + _QWERTY = 0, + _SUPER, + _RAISE, + _MOUSE, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* QWERTY + * ,-----------------------------------------. ,-----------------------------------------. + * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 |BackSP| + * |------+------+------+------+------+------| |------+------+------+------+------+----- | + * | Tab | Q | W | E | R | T | | Y | U | I | O | P | \| | + * |------+------+------+------+------+------| |------+------+------+------+------+----- | + * |LShift| A | S | D | F | G |-------. ,-------| H | J | K | L | ;: | '" | + * |------+------+------+------+------+------| `~ | | Enter |------+------+------+------+------+------| + * |LCTRL | Z | X | C | V | B |-------| |-------| N | M | ,< | .> | ?/ |RShift| + * `-----------------------------------------/ / \ \-----------------------------------------' + * | [ | LAlt | LGUI | /SUPER / \Space \ |RAISE | RGUI | ] | + * | | | |/ / \ \ | | | | + * `----------------------------' '------''--------------------' + */ + + [_QWERTY] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LCTRL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_GRV, KC_ENT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LBRC, KC_LALT, KC_LGUI, MO(_SUPER), KC_SPC, MO(_RAISE), KC_RGUI, KC_RBRC +), +/* SUPER + * ,-----------------------------------------. ,-----------------------------------------. + * | Pwr |Pwr Dn| Sleep| Wake | XXXX | XXXX | | \| | `~ | } | -_ | =+ |BackSP| + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Tab | Tab | ESC |Enter |LCTRL | { | | ) | Tab | Up | {[ | ]} | \| | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * |LShift|LShift| LGUI | LAlt | _ | ( |-------. ,-------|BackSP| Left | Down |Right | = |Enter | + * |------+------+------+------+------+------| CAPS | | `~ |------+------+------+------+------+------| + * |LCTRL |LCTRL | Home |Pg Up |Pg Dwn| End |-------| |-------| B | V | C | X | Z |RShift| + * `-----------------------------------------/ / \ \-----------------------------------------' + * |Trans | LAlt |LGUI | /Trans / \Space \ |Del | TGUI |Trans | + * | | | |/ / \ \ | | | | + * `----------------------------' '------''--------------------' + */ +[_SUPER] = LAYOUT( + KC_POWER, KC_PWR, KC_SLEP, KC_WAKE, KC_NO, KC_NO, KC_BSLS, KC_GRV, KC_RCBR, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_TAB, KC_ESC, KC_ENT, KC_LCTRL, KC_LCBR, KC_RPRN, KC_TAB, KC_UP, KC_LBRC, KC_RBRC, KC_TRNS, + KC_LSFT, KC_LSFT, KC_LGUI, KC_LALT, KC_UNDS, KC_LPRN, KC_BSPC, KC_LEFT, KC_DOWN, KC_RGHT, KC_EQL, KC_ENT, + KC_LCTL, KC_LCTL, KC_HOME, KC_PGUP, KC_PGDN, KC_END, KC_CAPS, KC_GRV, KC_B, KC_V, KC_C, KC_X, KC_Z, KC_RSFT, + KC_TRNS, KC_LALT, KC_LGUI, KC_TRNS, KC_SPC, KC_DEL, KC_RGUI, KC_TRNS +), +/* RAISE + * ,-----------------------------------------. ,-----------------------------------------. + * | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | TAB | TAB | XXXX | ( | ) | TAB | | MUTE | VOLU | Up |_MOUSE|ENTER | CAPS | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * |LShift|LShift| DEL | [ | ] | `~ |-------. ,-------| VOLD | Left | Down |Right |RShift|_MOUSE| + * |------+------+------+------+------+------| BRID | | BRIU |------+------+------+------+------+------| + * |LCTRL |LCTRL | MRWD | MPLY | MFFD | MSTP |-------| |-------| End |Pg Dwn|Pg Up | Home |RShift|RShift| + * `-----------------------------------------/ / \ \-----------------------------------------' + * |MS_BT2| LAlt | LGUI | /BackSP / \Trans \ |Trans |Trans | XXXX | + * | | | |/ / \ \ | | | | + * `----------------------------' '------''--------------------' + */ + +[_RAISE] = LAYOUT( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + KC_TAB, KC_TAB, KC_NO, KC_LPRN, KC_RPRN, KC_TAB, KC_MUTE, KC_VOLU, KC_UP, MO(_MOUSE), KC_ENT, KC_CAPS, + KC_LSFT, KC_LSFT, KC_DEL, KC_LBRC, KC_RBRC, KC_GRV, KC_VOLD, KC_LEFT, KC_DOWN, KC_RGHT, KC_RSFT, MO(_MOUSE), + KC_LCTL, KC_LCTL, KC_MRWD, KC_MPLY, KC_MFFD, KC_MSTP, KC_BRID, KC_BRIU, KC_END, KC_PGDN, KC_PGUP, KC_HOME, KC_RSFT, KC_RSFT, + KC_NO, KC_LALT, KC_LGUI, KC_BSPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO +), +/* MOUSE + * ,-----------------------------------------. ,-----------------------------------------. + * | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | XXXX | XXXX |MS_W_D| MS_U |MS_W_U| XXXX | | XXXX | XXXX |LShift|Trans | LGUI | XXXX | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | XXXX |MS_BT2| MS_L | MS_D | MS_R | XXXX |-------. ,-------| XXXX | XXXX | XXXX | XXXX | XXXX |Trans | + * |------+------+------+------+------+------| XXXX | | XXXX |------+------+------+------+------+------| + * | XXXX | XXXX |MS_W_R|MS_BT3|MS_W_L| XXXX |-------| |-------| XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | + * `-----------------------------------------/ / \ \-----------------------------------------' + * | XXXX | XXXX | XXXX | / MS_BT1/ \ XXXX \ |Trans | XXXX | XXXX | + * | | | |/ / \ \ | | | | + * `----------------------------' '------''--------------------' + */ + +[_MOUSE] = LAYOUT( + 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_WH_D, KC_MS_U, KC_WH_U, KC_NO, KC_NO, KC_NO, KC_LSFT, KC_TRNS, KC_LGUI, KC_NO, + KC_NO, KC_BTN2, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, + KC_NO, KC_NO, KC_WH_R, KC_BTN3, KC_WH_L, 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_BTN1, KC_NO, KC_TRNS, KC_NO, KC_NO +) +}; + +//SSD1306 OLED update loop, make sure to enable OLED_ENABLE=yes in rules.mk +#ifdef OLED_ENABLE + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + if (!is_keyboard_master()) + return OLED_ROTATION_180; // flips the display 180 degrees if offhand + return rotation; +} + +// When you add source files to SRC in rules.mk, you can use functions. +const char *read_layer_state(void); +const char *read_logo(void); +void set_keylog(uint16_t keycode, keyrecord_t *record); +//const char *read_keylog(void); +//const char *read_keylogs(void); + +// const char *read_mode_icon(bool swap); +// const char *read_host_led_state(void); +// void set_timelog(void); +// const char *read_timelog(void); + +static void render_logo(void) { + static const char PROGMEM my_logo[] = { + // Paste the code from the previous step below this line! + // 'DataDavD Logo', 128x32px + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x01, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0x19, 0xf9, 0xf9, 0xf9, 0xe1, 0xe7, 0x07, 0xff, 0xff, + 0xff, 0x01, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0x01, 0xff, 0xff, + 0xff, 0x01, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0x61, 0x61, 0x67, 0x67, 0x67, 0x67, 0x07, 0x07, 0xff, + 0xff, 0x01, 0x01, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xf9, 0xf9, 0xf9, 0xf9, 0x01, 0x01, 0xff, + 0xff, 0x01, 0x01, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0x19, 0xf9, 0xf9, 0xf9, 0xe1, 0xe7, 0x07, 0xff, + 0xff, 0xff, 0x01, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0x01, 0x01, 0xf9, 0xf9, 0xf9, 0xf9, 0x01, 0x01, + 0xff, 0xff, 0x01, 0x01, 0xf9, 0xf9, 0xf9, 0xf9, 0x19, 0x19, 0xf9, 0xf9, 0xe1, 0xe1, 0x07, 0x07, + 0x80, 0x80, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x98, 0x9f, 0x9f, 0x9f, 0x87, 0xe7, 0xe0, 0xff, 0xff, + 0xff, 0x80, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x99, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x80, 0xff, 0xff, + 0xff, 0x80, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x98, 0x98, 0x9e, 0x9e, 0x9e, 0x9e, 0x80, 0x80, 0xff, + 0xff, 0x80, 0x80, 0x9f, 0x9f, 0x9f, 0x9f, 0x99, 0x99, 0x9f, 0x9f, 0x9f, 0x9f, 0x80, 0x80, 0xff, + 0xff, 0x80, 0x80, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x98, 0x9f, 0x9f, 0x9f, 0x87, 0xe7, 0xe0, 0xff, + 0xff, 0xff, 0x80, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x99, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x80, 0xff, + 0xff, 0xff, 0xe0, 0xe7, 0x87, 0x9f, 0x9f, 0x9f, 0x98, 0x98, 0x9f, 0x9f, 0x87, 0x87, 0xe0, 0xe0, + 0xff, 0xff, 0x80, 0x80, 0x9f, 0x9f, 0x9f, 0x9f, 0x98, 0x98, 0x9f, 0x9f, 0x87, 0x87, 0xe0, 0xe0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff + + }; + + oled_write_raw_P(my_logo, sizeof(my_logo)); +} + +static void render_lfc_logo(void) { + static const char PROGMEM my_lfc_logo[] = { + // Paste the code from the previous step below this line! + // 'YNWA', 128x32px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0x7f, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0x7f, 0xff, 0xff, 0x7f, 0x7f, 0x7f, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0x7f, 0xff, 0xff, 0xff, 0xff, + 0x7f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf8, 0xf0, 0xc3, 0x87, + 0x1f, 0x3f, 0x1f, 0x8f, 0xc3, 0xf0, 0xf8, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xf0, 0xe1, + 0xc3, 0x87, 0x1f, 0x3f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xfc, 0xf0, 0x00, 0x0f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x03, 0x81, 0x03, 0x1f, 0xff, 0xff, + 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x1f, 0x87, 0xe1, 0xf0, 0xc0, + 0x07, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xfc, 0xf8, 0xf1, 0xc3, 0x87, 0x1f, 0x1f, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xf8, 0x80, 0x03, 0x1f, 0x07, 0xc0, 0xf8, 0xff, 0xff, 0xfe, 0xf0, 0x81, 0x0f, + 0x07, 0x80, 0xf0, 0xff, 0xff, 0xff, 0x7f, 0x1f, 0x87, 0xe1, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, + 0xf9, 0xf8, 0xe0, 0x03, 0x0f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xfc, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, + 0xfc, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xfe, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + }; + + oled_write_raw_P(my_lfc_logo, sizeof(my_lfc_logo)); +} + +bool oled_task_user(void) { + if (is_keyboard_master()) { + render_logo(); + } else { + render_lfc_logo(); + } + return false; +} +#endif // OLED_ENABLE + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (record->event.pressed) { +#ifdef OLED_ENABLE +#endif + } + return true; +} + +#include +#include "lily58.h" + +#define L_BASE 0 +#define L_SUPER (1 << 1) +#define L_RAISE (1 << 2) + +char layer_state_str[24]; + +const char *read_layer_state(void) { + switch (layer_state) + { + case L_BASE: + snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Default"); + break; + case L_RAISE: + snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Raise"); + break; + case L_SUPER: + snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Super"); + break; + default: + snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Undef-%ld", layer_state); + } + + return layer_state_str; +} diff --git a/keyboards/lily58/keymaps/datadavd/rules.mk b/keyboards/lily58/keymaps/datadavd/rules.mk new file mode 100644 index 000000000000..b53fed1a72a4 --- /dev/null +++ b/keyboards/lily58/keymaps/datadavd/rules.mk @@ -0,0 +1,6 @@ +MOUSEKEY_ENABLE = yes +EXTRAKEY_ENABLE = yes + +# If you want to change the display of OLED, you need to change here +SRC += ./lib/rgb_state_reader.c \ + ./lib/logo_reader.c diff --git a/keyboards/lily58/keymaps/default/keymap.c b/keyboards/lily58/keymaps/default/keymap.c index 74a1895dd67c..5010c669782a 100644 --- a/keyboards/lily58/keymaps/default/keymap.c +++ b/keyboards/lily58/keymaps/default/keymap.c @@ -101,8 +101,8 @@ layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } -//SSD1306 OLED update loop, make sure to enable OLED_DRIVER_ENABLE=yes in rules.mk -#ifdef OLED_DRIVER_ENABLE +//SSD1306 OLED update loop, make sure to enable OLED_ENABLE=yes in rules.mk +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { if (!is_keyboard_master()) @@ -122,7 +122,7 @@ const char *read_keylogs(void); // void set_timelog(void); // const char *read_timelog(void); -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { // If you want to change the display of OLED, you need to change here oled_write_ln(read_layer_state(), false); @@ -134,12 +134,13 @@ void oled_task_user(void) { } else { oled_write(read_logo(), false); } + return false; } -#endif // OLED_DRIVER_ENABLE +#endif // OLED_ENABLE bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (record->event.pressed) { -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE set_keylog(keycode, record); #endif // set_timelog(); diff --git a/keyboards/lily58/keymaps/default/rules.mk b/keyboards/lily58/keymaps/default/rules.mk index ea94a9708eba..73d1ff27daf2 100644 --- a/keyboards/lily58/keymaps/default/rules.mk +++ b/keyboards/lily58/keymaps/default/rules.mk @@ -2,23 +2,17 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. +AUDIO_ENABLE = no # Audio output +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. SWAP_HANDS_ENABLE = no # Enable one-hand typing -OLED_DRIVER_ENABLE= yes # OLED display - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +OLED_ENABLE= yes # OLED display # If you want to change the display of OLED, you need to change here SRC += ./lib/rgb_state_reader.c \ diff --git a/keyboards/lily58/keymaps/domnantas/keymap.c b/keyboards/lily58/keymaps/domnantas/keymap.c index badc3bb63c7d..ef2a89c470b6 100644 --- a/keyboards/lily58/keymaps/domnantas/keymap.c +++ b/keyboards/lily58/keymaps/domnantas/keymap.c @@ -1,18 +1,18 @@ /* Copyright 2020 Domantas Petrauskas - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ #include QMK_KEYBOARD_H #include @@ -98,7 +98,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+------| |------+------+------+------+------+------| * |LShift| 7 | 8 | 9 | 0 | |-------. ,-------| | | | | | | * |------+------+------+------+------+------| [ | | ] |------+------+------+------+------+------| - * |LCTRL | = | + | - | | | |-------| |-------| | | | | | | + * |LCTRL | = | + | - | | | |-------| |-------| | | | | \ | | * `-----------------------------------------/ / \ \-----------------------------------------' * | LGUI | LAlt |LOWER | / Space / \ Enter\ | Bksp |RAISE | Del | * | | ||||||||/ / \ \ | | | | @@ -108,7 +108,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, LT_1, LT_2, LT_3, LT_4, LT_5, LT_6, LT_7, LT_8, LT_9, LT_0, KC_GRV, _______, LT_4, LT_5, LT_6, _______, _______, _______, _______, _______, _______, _______, _______, _______, LT_7, LT_8, LT_9, LT_0, _______, _______, _______, _______, _______, _______, _______, - _______, LT_EQL, KC_PPLS, KC_PMNS, KC_PIPE, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, LT_EQL, KC_PPLS, KC_PMNS, KC_PIPE, _______, _______, _______, _______, _______, _______, _______, KC_BSLS, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), @@ -275,10 +275,11 @@ static void render_status(void) { oled_write_ln_P(PSTR("caps"), led_state.caps_lock); } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_left()) { render_status(); } else { render_bongo_cat(); } + return false; } diff --git a/keyboards/lily58/keymaps/drasbeck/keymap.c b/keyboards/lily58/keymaps/drasbeck/keymap.c index e575736c0eb2..56bed4d7abeb 100644 --- a/keyboards/lily58/keymaps/drasbeck/keymap.c +++ b/keyboards/lily58/keymaps/drasbeck/keymap.c @@ -71,8 +71,8 @@ void matrix_init_user(void) { #endif } -//SSD1306 OLED update loop, make sure to enable OLED_DRIVER_ENABLE=yes in rules.mk -#ifdef OLED_DRIVER_ENABLE +//SSD1306 OLED update loop, make sure to enable OLED_ENABLE=yes in rules.mk +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { if (!is_keyboard_master()) @@ -92,7 +92,7 @@ void set_keylog(uint16_t keycode, keyrecord_t *record); // void set_timelog(void); // const char *read_timelog(void); -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { // If you want to change the display of OLED, you need to change here oled_write_ln(read_layer_state(), false); @@ -104,12 +104,13 @@ void oled_task_user(void) { } else { oled_write(read_logo(), false); } + return false; } -#endif // OLED_DRIVER_ENABLE +#endif // OLED_ENABLE bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (record->event.pressed) { -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE set_keylog(keycode, record); #endif // set_timelog(); diff --git a/keyboards/lily58/keymaps/drasbeck/rules.mk b/keyboards/lily58/keymaps/drasbeck/rules.mk index ff8b816e3f47..10228e36776a 100644 --- a/keyboards/lily58/keymaps/drasbeck/rules.mk +++ b/keyboards/lily58/keymaps/drasbeck/rules.mk @@ -1,7 +1,7 @@ # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 @@ -12,7 +12,8 @@ AUDIO_ENABLE = no # Audio output BLUETOOTH_ENABLE = no # Enable Bluetooth RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow SWAP_HANDS_ENABLE = no # Enable one-hand typing -OLED_DRIVER_ENABLE = yes # OLED display +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # OLED display ENCODER_ENABLE = yes # Enable encoder # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE diff --git a/keyboards/lily58/keymaps/gaston/config.h b/keyboards/lily58/keymaps/gaston/config.h new file mode 100644 index 000000000000..621a0a9295c5 --- /dev/null +++ b/keyboards/lily58/keymaps/gaston/config.h @@ -0,0 +1,26 @@ +/* Copyright 2012 Jun Wako + * Copyright 2015 Jack Humbert + * Copyright 2021 Gaston Jorquera + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* This is the c configuration file for the keymap. */ + +#pragma once + +#define MASTER_LEFT + +#define TAPPING_FORCE_HOLD +#define TAPPING_TERM 150 /* ms */ diff --git a/keyboards/lily58/keymaps/gaston/keymap.c b/keyboards/lily58/keymaps/gaston/keymap.c new file mode 100644 index 000000000000..321b225c029e --- /dev/null +++ b/keyboards/lily58/keymaps/gaston/keymap.c @@ -0,0 +1,58 @@ +/* Copyright 2021 Gaston Jorquera + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* This is the keymap configuration. */ + +#include QMK_KEYBOARD_H + +enum layer_number { + _QWERTY = 0, + _LOWER, + _MOUSE, +}; + +#define EN_LOWER LT(_LOWER, KC_SPC) +#define EN_MOUSE MO(_MOUSE) + +/* See the readme.md file for an ASCII representation of this keymap. */ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[_QWERTY] = LAYOUT( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, + KC_LCTRL,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, EN_MOUSE,KC_EQL, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_RALT, KC_LALT, KC_LGUI, EN_LOWER,EN_LOWER, KC_LBRC, KC_RBRC, KC_BSLS +), + +[_LOWER] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_TRNS, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, KC_HOME, KC_PGDN, KC_PGUP, KC_END, XXXXXXX, KC_F12, + KC_TRNS, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, XXXXXXX, + KC_TRNS, XXXXXXX, XXXXXXX, KC_BRID, KC_BRIU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_INS, KC_DEL, XXXXXXX, XXXXXXX, XXXXXXX, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, XXXXXXX, XXXXXXX, XXXXXXX +), + +[_MOUSE] = LAYOUT( + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_BTN1, KC_BTN2, XXXXXXX, XXXXXXX, KC_ACL0, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_ACL1, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_TRNS, XXXXXXX, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, KC_ACL2, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX +) + +}; diff --git a/keyboards/lily58/keymaps/gaston/readme.md b/keyboards/lily58/keymaps/gaston/readme.md new file mode 100644 index 000000000000..8edd92cc3ff2 --- /dev/null +++ b/keyboards/lily58/keymaps/gaston/readme.md @@ -0,0 +1,67 @@ +# Gaston's Lily58 Keymap + +A simple three layers keymap to improve typing performance by reducing +cognitive load. + +The main characteristics of this keymap are: + +* The QWERTY layer tries to be as normal as possible, without having to use + modifiers. + * The main thumb buttons are spaces when tapped and enable the LOWER layer + when held. + * Vim style arrow keys. + * Left and right ALT in case you need different behaviors. (For example, the + default Option and readline's Alt behavior in macOS.) +* The LOWER layer has mostly meta keys. +* The MOUSE layer controls the mouse. + +## QWERTY Layer + +```plain +,-----------------------------------------. ,-----------------------------------------. +| ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BSPC | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| TAB | Q | W | E | R | T | | Y | U | I | O | P | - | +|------+------+------+------+------+------| |------+------+------+------+------+------| +|LCTRL | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' | +|------+------+------+------+------+------| MOUSE | | = |------+------+------+------+------+------| +| LSFT | Z | X | C | V | B |-------| |-------| N | M | , | . | / | ENT | +`-----------------------------------------/ LT / \ LT \----------------------------------------' + | RALT | LALT | LGUI | / LOWER / \ LOWER \ | [ | ] | \ | + | | | |/ SPC / \ SPC \ | | | | + `----------------------------' '-----------------------------' +``` + +## LOWER Layer + +```plain +,-----------------------------------------. ,-----------------------------------------. +| ESC | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| TRNS | | MUTE | VOLD | VOLU | | | HOME | PGDN | PGUP | END | | F12 | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| TRNS | | MPRV | MPLY | MNXT | |-------. ,-------| LEFT | DOWN | UP | RGHT | | | +|------+------+------+------+------+------| | | |------+------+------+------+------+------| +| TRNS | | | BRID | BRIU | |-------| |-------| | INS | DEL | | | | +`-----------------------------------------/ / \ \----------------------------------------' + | TRNS | TRNS | TRNS | / TRNS / \ TRNS \ | | | | + | | | |/ / \ \ | | | | + `----------------------------' '-----------------------------' +``` + +## MOUSE Layer + +```plain +,-----------------------------------------. ,-----------------------------------------. +| | | | | | | | | | | | | | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| | | | | | | | BTN1 | BTN2 | | | ACL0 | | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| | | | | | |-------. ,-------| MS_L | MS_D | MS_U | MS_R | ACL1 | | +|------+------+------+------+------+------| TRNS | | |------+------+------+------+------+------| +| | | | | | |-------| |-------| WH_L | WH_D | WH_U | WH_R | ACL2 | | +`-----------------------------------------/ / \ \----------------------------------------' + | | | | / / \ \ | | | | + | | | |/ / \ \ | | | | + `----------------------------' '-----------------------------' +``` diff --git a/keyboards/lily58/keymaps/gaston/rules.mk b/keyboards/lily58/keymaps/gaston/rules.mk new file mode 100644 index 000000000000..4d566ddb79fe --- /dev/null +++ b/keyboards/lily58/keymaps/gaston/rules.mk @@ -0,0 +1,9 @@ +MOUSEKEY_ENABLE = yes +EXTRAKEY_ENABLE = yes +RGBLIGHT_ENABLE = no +OLED_ENABLE = no + +SRC += ./lib/rgb_state_reader.c \ + ./lib/layer_state_reader.c \ + ./lib/logo_reader.c \ + ./lib/keylogger.c \ diff --git a/keyboards/lily58/keymaps/lily58l/keymap.c b/keyboards/lily58/keymaps/lily58l/keymap.c index cf1f38d7445f..10794b869576 100644 --- a/keyboards/lily58/keymaps/lily58l/keymap.c +++ b/keyboards/lily58/keymaps/lily58l/keymap.c @@ -126,8 +126,8 @@ layer_state_t layer_state_set_user(layer_state_t state) { return state; } -//SSD1306 OLED update loop, make sure to enable OLED_DRIVER_ENABLE=yes in rules.mk -#ifdef OLED_DRIVER_ENABLE +//SSD1306 OLED update loop, make sure to enable OLED_ENABLE=yes in rules.mk +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { if (is_keyboard_master()) { @@ -271,13 +271,14 @@ void render_status_main(void) { render_keylogger_status(); } -void oled_task_user(void) { +bool oled_task_user(void) { update_log(); if (is_keyboard_master()) { render_status_main(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) } else { render_lily58_logo(); } + return false; } bool process_record_user(uint16_t keycode, keyrecord_t *record) { @@ -286,7 +287,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } -#endif // OLED_DRIVER_ENABLE +#endif // OLED_ENABLE // Rotary encoder related code diff --git a/keyboards/lily58/keymaps/manna-harbour_miryoku/config.h b/keyboards/lily58/keymaps/manna-harbour_miryoku/config.h new file mode 100644 index 000000000000..1e1a2802ff11 --- /dev/null +++ b/keyboards/lily58/keymaps/manna-harbour_miryoku/config.h @@ -0,0 +1,23 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . + +#pragma once + +#define XXX KC_NO + +#define LAYOUT_miryoku(\ + 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,\ + N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +LAYOUT(\ +XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,\ +XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX,\ +XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX,\ +XXX, K20, K21, K22, K23, K24, XXX, XXX, K25, K26, K27, K28, K29, XXX,\ + XXX, K32, K33, K34, K35, K36, K37, XXX\ +) diff --git a/keyboards/lily58/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/lily58/keymaps/manna-harbour_miryoku/keymap.c new file mode 100644 index 000000000000..7c5717a0fee0 --- /dev/null +++ b/keyboards/lily58/keymaps/manna-harbour_miryoku/keymap.c @@ -0,0 +1,5 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/keyboards/lily58/keymaps/mikefightsbears/keymap.c b/keyboards/lily58/keymaps/mikefightsbears/keymap.c index d6e24ef3c696..2b9855f190bf 100644 --- a/keyboards/lily58/keymaps/mikefightsbears/keymap.c +++ b/keyboards/lily58/keymaps/mikefightsbears/keymap.c @@ -60,7 +60,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+------| |------+------+------+------+------+------| * | | | left | dn | rght | |-------. ,-------| | home | pgdn | end | | INS | * |------+------+------+------+------+------| | | |------+------+------+------+------+------| - * | | | | | | |-------| |-------| | mute | prev | next | play | + * | | | | | | |-------| |-------| | mute | prev | next | play | * `-----------------------------------------/ / \ \-----------------------------------------' * | | | | / / \ \ | | vol- | vol+ | * | | | |/ / \ \ | | | | @@ -81,7 +81,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+------| |------+------+------+------+------+------| * | | | left | dn | rght | |-------. ,-------| | home | pgdn | end | | INS | * |------+------+------+------+------+------| | | |------+------+------+------+------+------| - * | | | | | | |-------| |-------| | mute | prev | next | play | + * | | | | | | |-------| |-------| | mute | prev | next | play | * `-----------------------------------------/ / \ \-----------------------------------------' * | | | | / / \ \ | | vol- | vol+ | * | | | |/ / \ \ | | | | @@ -135,8 +135,8 @@ void matrix_init_user(void) { #endif } -//SSD1306 OLED update loop, make sure to enable OLED_DRIVER_ENABLE=yes in rules.mk -#ifdef OLED_DRIVER_ENABLE +//SSD1306 OLED update loop, make sure to enable OLED_ENABLE=yes in rules.mk +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { if (!is_keyboard_master()) @@ -156,7 +156,7 @@ const char *read_keylogs(void); // void set_timelog(void); // const char *read_timelog(void); -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { // If you want to change the display of OLED, you need to change here oled_write_ln(read_layer_state(), false); @@ -168,12 +168,13 @@ void oled_task_user(void) { } else { oled_write(read_logo(), false); } + return false; } -#endif // OLED_DRIVER_ENABLE +#endif // OLED_ENABLE bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (record->event.pressed) { -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE set_keylog(keycode, record); #endif // set_timelog(); @@ -211,4 +212,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - diff --git a/keyboards/lily58/keymaps/mikefightsbears/rules.mk b/keyboards/lily58/keymaps/mikefightsbears/rules.mk index af08856838ea..f43c8e200156 100644 --- a/keyboards/lily58/keymaps/mikefightsbears/rules.mk +++ b/keyboards/lily58/keymaps/mikefightsbears/rules.mk @@ -4,9 +4,9 @@ # EXTRAKEY_ENABLE = yes # Audio control and System control NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. +RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. SWAP_HANDS_ENABLE = no # Enable one-hand typing -OLED_DRIVER_ENABLE= yes # OLED display +OLED_ENABLE= yes # OLED display # If you want to change the display of OLED, you need to change here SRC += ./lib/rgb_state_reader.c \ diff --git a/keyboards/lily58/keymaps/muuko/keymap.c b/keyboards/lily58/keymaps/muuko/keymap.c index b8afa0aa4c49..c984202b9e2f 100644 --- a/keyboards/lily58/keymaps/muuko/keymap.c +++ b/keyboards/lily58/keymaps/muuko/keymap.c @@ -58,7 +58,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { if (!is_keyboard_master()) return OLED_ROTATION_180; else return rotation; @@ -174,11 +174,12 @@ static void render_anim(void) { } } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { render_status(); } else { render_anim(); } + return false; } #endif diff --git a/keyboards/lily58/keymaps/muuko/rules.mk b/keyboards/lily58/keymaps/muuko/rules.mk index 3f958dff35b0..7c38d43f82bd 100644 --- a/keyboards/lily58/keymaps/muuko/rules.mk +++ b/keyboards/lily58/keymaps/muuko/rules.mk @@ -1,4 +1,5 @@ -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 WPM_ENABLE = yes EXTRAKEY_ENABLE = yes COMBO_ENABLE = yes diff --git a/keyboards/lily58/keymaps/narze/config.h b/keyboards/lily58/keymaps/narze/config.h new file mode 100644 index 000000000000..c494429af74d --- /dev/null +++ b/keyboards/lily58/keymaps/narze/config.h @@ -0,0 +1,58 @@ +/* +This is the c configuration file for the keymap + +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +//#define USE_MATRIX_I2C + +/* Select hand configuration */ + +// #define MASTER_LEFT +#define MASTER_RIGHT +// #define EE_HANDS + +#define USE_SERIAL_PD2 + +#define COMBO_TERM 20 +#define COMBO_COUNT 3 + +#define IGNORE_MOD_TAP_INTERRUPT +#define PERMISSIVE_HOLD + +#define TAPPING_FORCE_HOLD +#define TAPPING_TERM 100 + +#undef RGBLED_NUM +#define RGBLIGHT_ANIMATIONS +#define RGBLED_NUM 27 +#define RGBLIGHT_LIMIT_VAL 120 +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 17 +#define RGBLIGHT_VAL_STEP 17 + +#define FORCE_NKRO + +// Underglow +/* +#undef RGBLED_NUM +#define RGBLED_NUM 14 // Number of LEDs +#define RGBLIGHT_ANIMATIONS +#define RGBLIGHT_SLEEP +*/ diff --git a/keyboards/lily58/keymaps/narze/keymap.c b/keyboards/lily58/keymaps/narze/keymap.c new file mode 100644 index 000000000000..7438e72751b4 --- /dev/null +++ b/keyboards/lily58/keymaps/narze/keymap.c @@ -0,0 +1,468 @@ +#include QMK_KEYBOARD_H +#include "narze.h" +#include "keymap_colemak.h" +#include "keymap_steno.h" + + +#ifdef RGBLIGHT_ENABLE +//Following line allows macro to read current RGB settings +extern rgblight_config_t rgblight_config; +#endif + +enum layers { + _QWERTY, + _COLEMAK, + _QWOC, + _LOWER, + _RAISE, + _PLOVER, + _SUPERDUPER, + _DEV, + _ADJUST +}; + +enum custom_keycodes { + QWERTY = SAFE_RANGE, + PLOVER, + LOWER, + RAISE, + ADJUST, + SUPERDUPER, + DEV, + SDTOGG, // Toggle SuperDuper + GUI_UNDS, + LSFT_LPRN, + RSFT_RPRN, + EXT_PLV, +}; + +// Narze : Custom Macros +#define HPR_ESC ALL_T(KC_ESC) +#define SFT_ENT SFT_T(KC_ENT) + +enum process_combo_event { + CB_SUPERDUPER, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* QWERTY + * ,-----------------------------------------. ,-----------------------------------------. + * | Tab | Q | W | E | R | T | | Y | U | I | O | P | F19 | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * |Hp/Esc| A | S | D | F | G | | H | J | K | L | ; | ' | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * |Sft/( | Z | X | C | V | B |-------. ,-------| N | M | , | . | / |Sft/) | + * |------+------+------+------+------+------| Swap | | Swap |------+------+------+------+------+------| + * |Rse/[ | Ctrl | Alt | GUI/_|Lower | Space|-------| |-------| Space| Raise| Bksp | Alt | Ctrl | Low/]| + * `-----------------------------------------/ / \ \-----------------------------------------' + * | | | | /Space / \Enter \ | | | | + * | | | |/ / \ \ | | | | + * `----------------------------' '------''--------------------' + */ + + [_QWERTY] = LAYOUT( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_F19, + HPR_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + LSFT_LPRN, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RSFT_RPRN, + LT(_RAISE, KC_LBRC), KC_LCTL, KC_LALT, GUI_UNDS,LOWER, KC_SPC, SH_TT, SH_TT, KC_SPC, RAISE, KC_BSPC, KC_RALT, KC_RCTL, LT(_LOWER, KC_RBRC), + _______, _______, _______, KC_SPC, KC_ENT, _______, _______, _______ +), +/* LOWER + * ,-----------------------------------------. ,-----------------------------------------. + * | ` | ! | @ | # | $ | % | | ^ | & | * | ( | ) | - | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | F1 | F2 | F3 | F4 | F5 | F6 | | | _ | + | { | } | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | F7 | F8 | F9 | F10 | F11 | F12 |-------. ,-------| | | | | | | + * |------+------+------+------+------+------| [ | | ] |------+------+------+------+------+------| + * | | | | | | |-------| |-------| | _ | + | { | } | | | + * `-----------------------------------------/ / \ \-----------------------------------------' + * | | | | / / \ \ | | | | + * | | | |/ / \ \ | | | | + * `----------------------------' '------''--------------------' + */ +[_LOWER] = LAYOUT( + KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TILD, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,_______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + _______, _______, _______, _______, _______, _______, _______, _______ +), +/* RAISE + * ,-----------------------------------------. ,-----------------------------------------. + * | ~ | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | F1 | F2 | F3 | F4 | F5 | F6 | | | - | = | [ | ] | \ | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | F7 | F8 | F9 | F10 | F11 | F12 |-------. ,-------| | | | | | | + * |------+------+------+------+------+------| [ | | ] |------+------+------+------+------+------| + * | | | | | | |-------| |-------| | | | | | | + * `-----------------------------------------/ / \ \-----------------------------------------' + * | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI | + * | | | |/ / \ \ | | | | + * `----------------------------' '------''--------------------' + */ + +[_RAISE] = LAYOUT( + S(KC_GRV),KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, + KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ +), +/* ADJUST + * ,-----------------------------------------. ,-----------------------------------------. + * | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | |-------. ,-------| | |RGB ON| HUE+ | SAT+ | VAL+ | + * |------+------+------+------+------+------| | | |------+------+------+------+------+------| + * | | | | | | |-------| |-------| | | MODE | HUE- | SAT- | VAL- | + * `-----------------------------------------/ / \ \-----------------------------------------' + * | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI | + * | | | |/ / \ \ | | | | + * `----------------------------' '------''--------------------' + */ +[_ADJUST] = LAYOUT( + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, + PLOVER, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, + _______, _______, _______, _______, _______, _______, _______, _______ +), +/* Plover layer (http://opensteno.org) + * ,-----------------------------------------------------------------------------------. + * | # | # | # | # | # | # | # | # | # | # | # | # | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | FN | S | T | P | H | * | * | F | P | L | T | D | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | S | K | W | R | * | * | R | B | G | S | Z | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Exit | | | A | O | | E | U | PWR | RES1 | RES2 | + * `-----------------------------------------------------------------------------------' + */ + +// [_PLOVER] = { +// {STN_N1, STN_N2, STN_N3, STN_N4, STN_N5, STN_N6, STN_N7, STN_N8, STN_N9, STN_NA, STN_NB, STN_NC }, +// {STN_FN, STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR }, +// {XXXXXXX, STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR }, +// {EXT_PLV, XXXXXXX, XXXXXXX, STN_A, STN_O, XXXXXXX, XXXXXXX, STN_E, STN_U, STN_PWR, STN_RE1, STN_RE2} +// }, +/* Plover + * ,-----------------------------------------. ,-----------------------------------------. + * | | | | | | | | | | T← | T→ | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | Alt | [SuperDuper]| Bksp | Gui | | ← | ↓ | ↑ | → | Del | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | |-------. ,-------| | | | | | | + * |------+------+------+------+------+------| | | |------+------+------+------+------+------| + * | | | | | | |-------| |-------| | | | | | | + * `-----------------------------------------/ / \ \-----------------------------------------' + * | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI | + * | | | |/ / \ \ | | | | + * `----------------------------' '------''--------------------' + */ +[_PLOVER] = LAYOUT( + STN_N1, STN_N2, STN_N3, STN_N4, STN_N5, STN_N6, STN_N7, STN_N8, STN_N9, STN_NA, STN_NB, STN_NC, + STN_FN, STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR, + XXXXXXX, STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR, + EXT_PLV, XXXXXXX, XXXXXXX, STN_A, STN_O, XXXXXXX, KC_LSFT, KC_LSFT, XXXXXXX, STN_E, STN_U, STN_PWR, STN_RE1, STN_RE2, + QK_STENO_GEMINI, QK_STENO_BOLT, _______, KC_LSFT, KC_LSFT, _______, _______, _______ +), +/* SuperDuper : https://gist.github.com/narze/861e2167784842d38771 + * ,-----------------------------------------. ,-----------------------------------------. + * | | | | | | | | | | T← | T→ | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | Alt | [SuperDuper]| Bksp | Gui | | ← | ↓ | ↑ | → | Del | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | |-------. ,-------| | | | | | | + * |------+------+------+------+------+------| | | |------+------+------+------+------+------| + * | | | | | | |-------| |-------| | | | | | | + * `-----------------------------------------/ / \ \-----------------------------------------' + * | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI | + * | | | |/ / \ \ | | | | + * `----------------------------' '------''--------------------' + */ +[_SUPERDUPER] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, S(LGUI(KC_LBRC)), S(LGUI(KC_RBRC)), _______, _______, + _______, KC_LALT, _______, _______, KC_BSPC, KC_LGUI, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_DEL, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, KC_LSFT, KC_LSFT, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_LSFT, KC_LSFT, _______, _______, _______ +), +/* Dev Layer + * ,-----------------------------------------. ,-----------------------------------------. + * | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | |-------. ,-------| | | | | | | + * |------+------+------+------+------+------| | | |------+------+------+------+------+------| + * | | | | | | |-------| |-------| | | | | | | + * `-----------------------------------------/ / \ \-----------------------------------------' + * | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI | + * | | | |/ / \ \ | | | | + * `----------------------------' '------''--------------------' + */ +[_DEV] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ +), +/* Colemak + * ,-----------------------------------------. ,-----------------------------------------. + * | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | |-------. ,-------| | | | | | | + * |------+------+------+------+------+------| | | |------+------+------+------+------+------| + * | | | | | | |-------| |-------| | | | | | | + * `-----------------------------------------/ / \ \-----------------------------------------' + * | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI | + * | | | |/ / \ \ | | | | + * `----------------------------' '------''--------------------' + */ +[_COLEMAK] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ +), +/* QWOC + * ,-----------------------------------------. ,-----------------------------------------. + * | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | |-------. ,-------| | | | | | | + * |------+------+------+------+------+------| | | |------+------+------+------+------+------| + * | | | | | | |-------| |-------| | | | | | | + * `-----------------------------------------/ / \ \-----------------------------------------' + * | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI | + * | | | |/ / \ \ | | | | + * `----------------------------' '------''--------------------' + */ +[_QWOC] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ +), +}; + +int RGB_current_mode; + +// Setting ADJUST layer RGB back to default +void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) { + if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) { + layer_on(layer3); + } else { + layer_off(layer3); + } +} + +void matrix_init_user(void) { + set_superduper_key_combos(); + steno_set_mode(STENO_MODE_GEMINI); + + #ifdef RGBLIGHT_ENABLE + RGB_current_mode = rgblight_config.mode; + #endif +} + +#ifdef OLED_ENABLE + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + if (!is_keyboard_master()) + return OLED_ROTATION_180; // flips the display 180 degrees if offhand + return rotation; +} + +// When add source files to SRC in rules.mk, you can use functions. +const char *read_layer_state(void); +const char *read_logo(void); +void set_keylog(uint16_t keycode, keyrecord_t *record); +const char *read_keylog(void); +const char *read_keylogs(void); + +const char *read_mode_icon(bool swap); +const char *read_host_led_state(void); +void set_timelog(void); +const char *read_timelog(void); + +char encoder_debug[24]; + +bool oled_task_user(void) { + // Host Keyboard Layer Status + if (is_keyboard_master()) { + // If you want to change the display of OLED, you need to change here + oled_write_ln(read_layer_state(), false); + oled_write_ln(read_keylog(), false); + oled_write_ln(read_keylogs(), false); + // oled_write_ln(read_mode_icon(keymap_config.swap_lalt_lgui), false); + oled_write_ln(read_host_led_state(), false); + // oled_write_ln(read_timelog(), false); + } else { + oled_write(read_logo(), false); + // oled_write_ln(encoder_debug, false); + } + return false; +} + +#endif //OLED_ENABLE + +#ifdef SWAP_HANDS_ENABLE +__attribute__ ((weak)) +const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { + // Left + {{5,5},{4,5},{3,5},{2,5},{1,5},{0,5}}, + {{5,6},{4,6},{3,6},{2,6},{1,6},{0,6}}, + {{5,7},{4,7},{3,7},{2,7},{1,7},{0,7}}, + {{5,8},{4,8},{3,8},{2,8},{1,8},{0,8}}, + {{5,9},{4,9},{3,9},{2,9},{1,9},{0,9}}, + // Right + {{0,0},{1,0},{2,0},{3,0},{4,0},{5,0}}, + {{0,1},{1,1},{2,1},{3,1},{4,1},{5,1}}, + {{0,2},{1,2},{2,2},{3,2},{4,2},{5,2}}, + {{0,3},{1,3},{2,3},{3,3},{4,3},{5,3}}, + {{0,4},{1,4},{2,4},{3,4},{4,4},{5,4}}, +}; +#endif + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (record->event.pressed) { +#ifdef OLED_ENABLE + set_keylog(keycode, record); +#endif + // set_timelog(); + } + + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + set_single_persistent_default_layer(_QWERTY); + set_superduper_key_combo_layer(_QWERTY); + } + return false; + break; + case LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case ADJUST: + if (record->event.pressed) { + layer_on(_ADJUST); + } else { + layer_off(_ADJUST); + } + return false; + break; + case PLOVER: + if (!record->event.pressed) { + layer_on(_PLOVER); + } + return false; + break; + case EXT_PLV: + if (record->event.pressed) { + layer_off(_PLOVER); + } + return false; + break; + + // Macros + + // 1. Hold for LGUI, tap for Underscore + case GUI_UNDS: + perform_space_cadet(record, keycode, KC_LGUI, KC_LSFT, KC_MINS); + return false; + + // 2. Hold for LSHIFT, tap for Parens open + case LSFT_LPRN: + perform_space_cadet(record, keycode, KC_LSFT, KC_LSFT, KC_9); + return false; + + // 3. Hold for RSHIFT, tap for Parens close + case RSFT_RPRN: + perform_space_cadet(record, keycode, KC_RSFT, KC_RSFT, KC_0); + return false; + } + return true; +} + +void process_combo_event(uint16_t combo_index, bool pressed) { + if (pressed) { + switch(combo_index) { + case CB_SUPERDUPER: + layer_on(_SUPERDUPER); + break; + } + } else { + layer_off(_SUPERDUPER); + unregister_mods(MOD_BIT(KC_LGUI) | MOD_BIT(KC_LCTL) | MOD_BIT(KC_LALT)); // Sometimes mods are held, unregister them + } +} + +// matrix_setup is already used +void keyboard_pre_init_user(void) { + set_superduper_key_combos(); +} + +char layer_state_str[24]; + +const char *read_layer(void) { + switch (layer_state) + { + case _QWERTY: + snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Default"); + break; + case 1 << _COLEMAK: + snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Colemak"); + break; + case 1 << _QWOC: + snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Qwerty2Colemak"); + break; + case 1 << _LOWER: + snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Lower"); + break; + case 1 << _RAISE: + snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Raise"); + break; + case 1 << _SUPERDUPER: + snprintf(layer_state_str, sizeof(layer_state_str), "Layer: SuperDuper"); + break; + case 1 << _DEV: + snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Dev"); + break; + case 1 << _ADJUST: + snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Adjust"); + break; + default: + snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Undef-%ld", layer_state); + } + + return layer_state_str; +} diff --git a/keyboards/lily58/keymaps/narze/readme.md b/keyboards/lily58/keymaps/narze/readme.md new file mode 100644 index 000000000000..9d522f5cae5f --- /dev/null +++ b/keyboards/lily58/keymaps/narze/readme.md @@ -0,0 +1,13 @@ +# narze's layout + +## Key features + +- Qwerty + [Colemak](https://colemak.com) layouts, and you can type Qwerty on software-level Colemak as well. Very useful for gaming or when your friend wanna type something but don't use Colemak. +- [(S)uper (D)uper Mode](/users/narze/readme.md) + +## Build instructions + +- `cd /path/to/qmk_firmware` +- Ensure latest libraries are loaded `make git-submodule` +- Flash to right hand side (Elite C) with `make lily58:narze:dfu` or `qmk flash -kb lily58 -km narze -b dfu` +- Flash to left hand side (Pro Micro) with `make lily58:narze:avrdude` or `qmk flash -kb lily58 -km narze -b avrdude` diff --git a/keyboards/lily58/keymaps/narze/rules.mk b/keyboards/lily58/keymaps/narze/rules.mk new file mode 100644 index 000000000000..0fe1d92356fa --- /dev/null +++ b/keyboards/lily58/keymaps/narze/rules.mk @@ -0,0 +1,13 @@ +NKRO_ENABLE = yes +SWAP_HANDS_ENABLE = yes +STENO_ENABLE = yes +FORCE_NKRO = yes +COMBO_ENABLE = yes + +SRC += ./lib/rgb_state_reader.c \ + ./lib/layer_state_reader.c \ + ./lib/logo_reader.c \ + ./lib/mode_icon_reader.c \ + ./lib/host_led_state_reader.c \ + ./lib/timelogger.c \ + ./lib/keylogger.c \ diff --git a/keyboards/lily58/keymaps/ninjonas/rules.mk b/keyboards/lily58/keymaps/ninjonas/rules.mk index 2cccbd077d2d..b7c57d87b9ed 100644 --- a/keyboards/lily58/keymaps/ninjonas/rules.mk +++ b/keyboards/lily58/keymaps/ninjonas/rules.mk @@ -1,2 +1,3 @@ -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 LTO_ENABLE = yes diff --git a/keyboards/lily58/keymaps/pttbx/config.h b/keyboards/lily58/keymaps/pttbx/config.h new file mode 100644 index 000000000000..d843f5b1c4f4 --- /dev/null +++ b/keyboards/lily58/keymaps/pttbx/config.h @@ -0,0 +1,46 @@ +/* +This is the c configuration file for the keymap + +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +/* Select hand configuration */ + +#define MASTER_LEFT +// #define MASTER_RIGHT +// #define EE_HANDS + +#define TAPPING_FORCE_HOLD +#define TAPPING_TERM 100 + +#undef RGBLED_NUM +#define RGBLIGHT_ANIMATIONS +#define RGBLED_NUM 27 +#define RGBLIGHT_LIMIT_VAL 120 +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 17 +#define RGBLIGHT_VAL_STEP 17 + +// Underglow +/* +#undef RGBLED_NUM +#define RGBLED_NUM 14 // Number of LEDs +#define RGBLIGHT_ANIMATIONS +#define RGBLIGHT_SLEEP +*/ diff --git a/keyboards/lily58/keymaps/pttbx/keymap.c b/keyboards/lily58/keymaps/pttbx/keymap.c new file mode 100644 index 000000000000..944794141a8a --- /dev/null +++ b/keyboards/lily58/keymaps/pttbx/keymap.c @@ -0,0 +1,164 @@ +/* Copyright 2021 Paul Tan + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layer_number { + _QWERTY = 0, + _LOWER, + _RAISE, + _ADJUST, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* QWERTY + * ,-----------------------------------------. ,-----------------------------------------. + * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | | Y | U | I | O | P | - | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * |LCTRL | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' | + * |------+------+------+------+------+------| [ | | ] |------+------+------+------+------+------| + * |LShift| Z | X | C | V | B |-------| |-------| N | M | , | . | / |RShift| + * `-----------------------------------------/ / \ \-----------------------------------------' + * | LOWER| LGUI |LAlt | /Space / \Enter \ |BackSP| RGUI |RAISE | + * | | | |/ / \ \ | | | | + * `----------------------------' '------''--------------------' + */ + + [_QWERTY] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, + KC_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + MO(_LOWER), KC_LGUI, KC_LALT, KC_SPC, KC_ENT, KC_BSPC, KC_RGUI, MO(_RAISE) +), +/* LOWER + * ,-----------------------------------------. ,-----------------------------------------. + * | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | ` | ! | @ | # | $ | % |-------. ,-------| ^ | & | * | ( | ) | - | + * |------+------+------+------+------+------| [ | | ] |------+------+------+------+------+------| + * | | | | | | |-------| |-------| | _ | + | { | } | | | + * `-----------------------------------------/ / \ \-----------------------------------------' + * | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI | + * | | | |/ / \ \ | | | | + * `----------------------------' '------''--------------------' + */ +[_LOWER] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______,_______, _______, _______, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TILD, + _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + _______, _______, _______, _______, _______, _______, _______, _______ +), +/* RAISE + * ,-----------------------------------------. ,-----------------------------------------. + * | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | F1 | F2 | F3 | F4 | F5 | F6 |-------. ,-------| | Left | Down | Up |Right | | + * |------+------+------+------+------+------| [ | | ] |------+------+------+------+------+------| + * | F7 | F8 | F9 | F10 | F11 | F12 |-------| |-------| + | - | = | [ | ] | \ | + * `-----------------------------------------/ / \ \-----------------------------------------' + * | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI | + * | | | |/ / \ \ | | | | + * `----------------------------' '------''--------------------' + */ + +[_RAISE] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, + KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_PLUS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, + _______, _______, _______, _______, _______, _______, _______, _______ +), +/* ADJUST + * ,-----------------------------------------. ,-----------------------------------------. + * | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | |-------. ,-------| | |RGB ON| HUE+ | SAT+ | VAL+ | + * |------+------+------+------+------+------| | | |------+------+------+------+------+------| + * | | | | | | |-------| |-------| | | MODE | HUE- | SAT- | VAL- | + * `-----------------------------------------/ / \ \-----------------------------------------' + * | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI | + * | | | |/ / \ \ | | | | + * `----------------------------' '------''--------------------' + */ + [_ADJUST] = LAYOUT( + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + +layer_state_t layer_state_set_user(layer_state_t state) { + return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); +} + +//SSD1306 OLED update loop, make sure to enable OLED_ENABLE=yes in rules.mk +#ifdef OLED_ENABLE + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + if (!is_keyboard_master()) + return OLED_ROTATION_180; // flips the display 180 degrees if offhand + return rotation; +} + +// When you add source files to SRC in rules.mk, you can use functions. +const char *read_layer_state(void); +const char *read_logo(void); +void set_keylog(uint16_t keycode, keyrecord_t *record); +const char *read_keylog(void); +const char *read_keylogs(void); + +// const char *read_mode_icon(bool swap); +// const char *read_host_led_state(void); +// void set_timelog(void); +// const char *read_timelog(void); + +void oled_task_user(void) { + if (is_keyboard_master()) { + // If you want to change the display of OLED, you need to change here + oled_write_ln(read_layer_state(), false); + oled_write_ln(read_keylog(), false); + oled_write_ln(read_keylogs(), false); + //oled_write_ln(read_mode_icon(keymap_config.swap_lalt_lgui), false); + //oled_write_ln(read_host_led_state(), false); + //oled_write_ln(read_timelog(), false); + } else { + oled_write(read_logo(), false); + } +} +#endif // OLED_ENABLE + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (record->event.pressed) { +#ifdef OLED_ENABLE + set_keylog(keycode, record); +#endif + // set_timelog(); + } + return true; +} diff --git a/keyboards/lily58/keymaps/pttbx/rules.mk b/keyboards/lily58/keymaps/pttbx/rules.mk new file mode 100644 index 000000000000..e2c8a6f7467b --- /dev/null +++ b/keyboards/lily58/keymaps/pttbx/rules.mk @@ -0,0 +1,5 @@ +# If you want to change the display of OLED, you need to change here +SRC += ./lib/rgb_state_reader.c \ + ./lib/layer_state_reader.c \ + ./lib/logo_reader.c \ + ./lib/keylogger.c diff --git a/keyboards/lily58/keymaps/via/keymap.c b/keyboards/lily58/keymaps/via/keymap.c index bf46fb8e1864..4cae267338f5 100644 --- a/keyboards/lily58/keymaps/via/keymap.c +++ b/keyboards/lily58/keymaps/via/keymap.c @@ -120,7 +120,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { if (!is_keyboard_master()) @@ -186,7 +186,7 @@ const char *read_keylogs(void) { } //new -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { // Host Keyboard Layer Status oled_write_P(PSTR("Layer: "), false); @@ -214,13 +214,14 @@ void oled_task_user(void) { } else { render_logo(); } + return false; } -#endif // OLED_DRIVER_ENABLE +#endif // OLED_ENABLE bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (record->event.pressed) { -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE set_keylog(keycode, record); #endif // set_timelog(); diff --git a/keyboards/lily58/keymaps/via/rules.mk b/keyboards/lily58/keymaps/via/rules.mk index 03f8d38f4b41..d3528d52a1a2 100644 --- a/keyboards/lily58/keymaps/via/rules.mk +++ b/keyboards/lily58/keymaps/via/rules.mk @@ -1,4 +1,5 @@ VIA_ENABLE = yes -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 MOUSEKEY_ENABLE = yes EXTRAKEY_ENABLE = yes diff --git a/keyboards/lily58/keymaps/yshrsmz/keymap.c b/keyboards/lily58/keymaps/yshrsmz/keymap.c index 545d440b4346..6b31663239ec 100644 --- a/keyboards/lily58/keymaps/yshrsmz/keymap.c +++ b/keyboards/lily58/keymaps/yshrsmz/keymap.c @@ -137,8 +137,8 @@ void matrix_init_user(void) { #endif } -//SSD1306 OLED update loop, make sure to enable OLED_DRIVER_ENABLE=yes in rules.mk -#ifdef OLED_DRIVER_ENABLE +//SSD1306 OLED update loop, make sure to enable OLED_ENABLE=yes in rules.mk +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { if (!is_keyboard_master()) @@ -158,7 +158,7 @@ const char *read_keylogs(void); // void set_timelog(void); // const char *read_timelog(void); -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { // If you want to change the display of OLED, you need to change here oled_write_ln(read_layer_state(), false); @@ -170,12 +170,13 @@ void oled_task_user(void) { } else { oled_write(read_logo(), false); } + return false; } -#endif // OLED_DRIVER_ENABLE +#endif // OLED_ENABLE bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (record->event.pressed) { -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE set_keylog(keycode, record); #endif // set_timelog(); diff --git a/keyboards/lily58/keymaps/yshrsmz/rules.mk b/keyboards/lily58/keymaps/yshrsmz/rules.mk index 4d481eac120f..2541d64e1d1c 100644 --- a/keyboards/lily58/keymaps/yshrsmz/rules.mk +++ b/keyboards/lily58/keymaps/yshrsmz/rules.mk @@ -1,6 +1,6 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. AUTO_SHIFT_ENABLE = yes -OLED_DRIVER_ENABLE= yes # OLED display +OLED_ENABLE= yes # OLED display # If you want to change the display of OLED, you need to change here SRC += ./lib/rgb_state_reader.c \ diff --git a/keyboards/lily58/keymaps/yuchi/keymap.c b/keyboards/lily58/keymaps/yuchi/keymap.c index 37230696fc32..2cab439c3b39 100644 --- a/keyboards/lily58/keymaps/yuchi/keymap.c +++ b/keyboards/lily58/keymaps/yuchi/keymap.c @@ -119,8 +119,8 @@ void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) { } } -//SSD1306 OLED update loop, make sure to enable OLED_DRIVER_ENABLE=yes in rules.mk -#ifdef OLED_DRIVER_ENABLE +//SSD1306 OLED update loop, make sure to enable OLED_ENABLE=yes in rules.mk +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { if (!is_keyboard_master()) @@ -140,7 +140,7 @@ const char *read_keylogs(void); // void set_timelog(void); // const char *read_timelog(void); -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { // If you want to change the display of OLED, you need to change here oled_write_ln(read_layer_state(), false); @@ -152,12 +152,13 @@ void oled_task_user(void) { } else { oled_write(read_logo(), false); } + return false; } -#endif // OLED_DRIVER_ENABLE +#endif // OLED_ENABLE bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (record->event.pressed) { -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE set_keylog(keycode, record); #endif // set_timelog(); diff --git a/keyboards/lily58/keymaps/yuchi/rules.mk b/keyboards/lily58/keymaps/yuchi/rules.mk index 45bf4cfc3a3b..f714be7c6ada 100644 --- a/keyboards/lily58/keymaps/yuchi/rules.mk +++ b/keyboards/lily58/keymaps/yuchi/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = no # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) @@ -15,7 +15,7 @@ UNICODE_ENABLE = no # Unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. SWAP_HANDS_ENABLE = no # Enable one-hand typing -OLED_DRIVER_ENABLE= yes # OLED display +OLED_ENABLE= yes # OLED display # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend diff --git a/keyboards/lily58/light/info.json b/keyboards/lily58/light/info.json index a305103a954e..503cdaae1298 100644 --- a/keyboards/lily58/light/info.json +++ b/keyboards/lily58/light/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Lily58", "url": "https://keycapsss.com", "maintainer": "BenRoe", - "width": 16.5, - "height": 5.25, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/lily58/lily58.c b/keyboards/lily58/lily58.c index 03975057f40f..6108d70b9064 100644 --- a/keyboards/lily58/lily58.c +++ b/keyboards/lily58/lily58.c @@ -1,5 +1 @@ #include "lily58.h" - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - return process_record_user(keycode, record); -} diff --git a/keyboards/lily58/rev1/info.json b/keyboards/lily58/rev1/info.json index dcafc96fa27a..ed4deb0098e0 100644 --- a/keyboards/lily58/rev1/info.json +++ b/keyboards/lily58/rev1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Lily58", "url": "", "maintainer": "liliums", - "width": 16.5, - "height": 5.25, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/lily58/rev1/rev1.c b/keyboards/lily58/rev1/rev1.c index e78f2ccfa5f4..6108d70b9064 100644 --- a/keyboards/lily58/rev1/rev1.c +++ b/keyboards/lily58/rev1/rev1.c @@ -1,8 +1 @@ #include "lily58.h" - -#ifdef SSD1306OLED -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - //led_set_user(usb_led); -} -#endif \ No newline at end of file diff --git a/keyboards/lily58/rules.mk b/keyboards/lily58/rules.mk index 34b512d59a6c..8e1c80ad7f73 100644 --- a/keyboards/lily58/rules.mk +++ b/keyboards/lily58/rules.mk @@ -2,34 +2,23 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -OLED_DRIVER_ENABLE = yes # OLED display +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # OLED display SPLIT_KEYBOARD = yes DEFAULT_FOLDER = lily58/rev1 diff --git a/keyboards/lime/config.h b/keyboards/lime/config.h new file mode 100644 index 000000000000..22d4f632d026 --- /dev/null +++ b/keyboards/lime/config.h @@ -0,0 +1,20 @@ +/* Copyright 2021 HellSingCoder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + diff --git a/keyboards/lime/keymaps/default/config.h b/keyboards/lime/keymaps/default/config.h new file mode 100644 index 000000000000..f19e2592327e --- /dev/null +++ b/keyboards/lime/keymaps/default/config.h @@ -0,0 +1,22 @@ + /* Copyright 2021 HellSingCoder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + +#pragma once + +#define OLED_TIMEOUT 120000 +#define OLED_BRIGHTNESS 120 +#define OLED_FONT_H "keyboards/lime/lib/glcdfont.c" diff --git a/keyboards/lime/keymaps/default/keymap.c b/keyboards/lime/keymaps/default/keymap.c new file mode 100644 index 000000000000..2d904d36db55 --- /dev/null +++ b/keyboards/lime/keymaps/default/keymap.c @@ -0,0 +1,714 @@ + /* Copyright 2021 HellSingCoder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +#ifdef JOYSTICK_ENABLE +# include "joystick.h" +# include "analog.h" +#endif + +enum lime_layers { + /* _M_XYZ = Mac Os, _W_XYZ = Win/Linux */ + _QWERTY, + _COLEMAK, + _LOWER, + _RAISE, + _ADJUST, +}; + +enum custom_keycodes { + KC_QWERTY = SAFE_RANGE, + KC_COLEMAK, + KC_LOWER, + KC_RAISE, + KC_ADJUST, + KC_PRVWD, + KC_NXTWD, + KC_LSTRT, + KC_LEND, + KC_DLINE, + KC_BSPC_DEL, + KC_THUMB_SWAP, + KC_THUMB_LEFT, + KC_THUMB_RIGHT, + KC_JOYSTICK_DEBUG, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* + * QWERTY + * ,-----------------------------------------. ,-----------------------------------------. + * | Esc | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BS | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | | Y | U | I | O | P | ` | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Caps | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' | + * |------+------+------+------+------+------| | | Mute |------+------+------+------+------+------| + * |LShift| Z | X | C | V | B |-------| |-------| N | M | , | . | / | \ | + * `-----------------------------------------/ / \ \-----------------------------------------' + * |Lower | LGUI | LAlt | DEL | LCTR | /Enter / \Space \ |Raise | [ | ] | - | = | + * | | | | | |/ / \ \ | | | | | | + * `----------------------------------------' '------''----------------------------------' + */ + +[_QWERTY] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_GRV, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, XXXXXXX, KC_MUTE, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS, + KC_LOWER, KC_LGUI,KC_LALT,KC_DEL, KC_LCTRL, KC_THUMB_LEFT, KC_THUMB_RIGHT, KC_RAISE, KC_LBRC, KC_RBRC, KC_MINS, KC_EQL +), + +/* + * COLEMAK + * ,-----------------------------------------. ,-----------------------------------------. + * | Esc | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BS | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Tab | Q | W | F | P | G | | J | L | U | Y | ; | ` | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Caps | A | R | S | T | D |-------. ,-------| H | N | E | I | O | ' | + * |------+------+------+------+------+------| | | Mute |------+------+------+------+------+------| + * |LShift| Z | X | C | V | B |-------| |-------| K | M | , | . | / | \ | + * `-----------------------------------------/ / \ \-----------------------------------------' + * |Lower | LGUI | LAlt | DEL | LCTR | /Enter / \Space \ |Raise | [ | ] | - | = | + * | | | | | |/ / \ \ | | | | | | + * `----------------------------------------' '------''----------------------------------' + */ + +[_COLEMAK] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC_DEL, + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_GRV, + KC_CAPS, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, XXXXXXX, KC_MUTE, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS, + KC_LOWER, KC_LGUI,KC_LALT,KC_DEL, KC_LCTRL, KC_THUMB_LEFT, KC_THUMB_RIGHT, KC_RAISE, KC_LBRC, KC_RBRC, KC_MINS, KC_EQL +), + +/* RAISE + * ,-----------------------------------------. ,-----------------------------------------. + * | Esc | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Tab | Ins | Pscr | Menu | | | | | PWrd | Up | NWrd | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Caps | LAt | LCtl |LShift| | |-------. ,-------| | Left | Down | Rigth| | | + * |------+------+------+------+------+------| | | Mute |------+------+------+------+------+------| + * |LShift| | | | | |-------| |-------| | LStr | DLine| LEnd | | | + * `-----------------------------------------/ / \ \-----------------------------------------' + * |Lower | LGUI | LAlt | DEL | LCTR | /Enter / \Space \ |Raise | | | | | + * | | | | | |/ / \ \ | | | | | | + * `----------------------------------------' '------''----------------------------------' + */ +[_RAISE] = LAYOUT( + _______, _______ , _______ , _______ , _______ , _______, _______, _______ , _______ , _______ , _______ , _______, + _______, KC_INS, KC_PSCR, KC_APP, XXXXXXX, XXXXXXX, KC_PGUP, KC_PRVWD, KC_UP, KC_NXTWD, XXXXXXX, XXXXXXX, + _______, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, XXXXXXX, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, XXXXXXX, KC_LSTRT, KC_DLINE, KC_LEND, XXXXXXX, XXXXXXX, + _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX +), + +/* LOWER + * ,-----------------------------------------. ,-----------------------------------------. + * | Esc | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Tab | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | F12 | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Caps | ! | @ | # | $ | % |-------. ,-------| ^ | & | * | ( | ) | | | + * |------+------+------+------+------+------| | | Mute |------+------+------+------+------+------| + * |LShift| = | - | + | { | } |-------| |-------| [ | ] | ; | : | \ | ` | + * `-----------------------------------------/ / \ \-----------------------------------------' + * |Lower | LGUI | LAlt | DEL | LCTR | /Enter / \Space \ |Raise | | | | | + * | | | | | |/ / \ \ | | | | | | + * `----------------------------------------' '------''----------------------------------' + */ +[_LOWER] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_F12, + _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE, + _______, KC_EQL, KC_MINS, KC_PLUS, KC_LCBR, KC_RCBR, _______, _______, KC_LBRC, KC_RBRC, KC_SCLN, KC_COLN, KC_BSLS, KC_GRV, + _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX +), + +/* ADJUST + * ,-----------------------------------------. ,-----------------------------------------. + * | RESET| | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | |QWERTY| | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | |JDEBUG| | |-------. ,-------| | VOLDO| MUTE | VOLUP| | | + * |------+------+------+------+------+------| | | Mute |------+------+------+------+------+------| + * | | | |COLEMA| | |-------| |-------| | PREV | PLAY | NEXT | | | + * `-----------------------------------------/ / \ \-----------------------------------------' + * |Lower |MACWIN| | | | / Swap / \ \ |Raise | | | | | + * | | | | | |/ / \ \ | | | | | | + * `----------------------------------------' '------''----------------------------------' + */ + [_ADJUST] = LAYOUT( + RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, KC_QWERTY, XXXXXXX, XXXXXXX, CG_TOGG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, KC_JOYSTICK_DEBUG,XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD, KC_MUTE, KC_VOLU, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, KC_COLEMAK, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX, + _______, CG_TOGG, XXXXXXX, XXXXXXX, XXXXXXX, KC_THUMB_SWAP, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + ) +}; + +#ifdef JOYSTICK_ENABLE + /* Joystick pins */ +# ifndef JOYSTICK_X_PIN +# define JOYSTICK_X_PIN F5 +# define JOYSTICK_Y_PIN F4 +# endif + + /* Joystick + Encoder fix */ + void keyboard_post_init_kb(void) { + if (is_keyboard_master()) { + writePinLow(JOYSTICK_X_PIN); + writePinLow(JOYSTICK_Y_PIN); + } + } + + /* Joystick axes settings */ + joystick_config_t joystick_axes[JOYSTICK_AXES_COUNT] = { + [0] = JOYSTICK_AXIS_IN(JOYSTICK_X_PIN, 268, 514, 813), + [1] = JOYSTICK_AXIS_IN(JOYSTICK_Y_PIN, 865, 519, 260) + }; +#endif + +/* Joystick Debug */ +bool joystick_debug = false; + +/* Space Enter swap */ +bool swap_space_enter = false; + +/* Smart Backspace Delete */ +bool shift_held = false; +static uint16_t held_shift = 0; + +/* keyboard pet jump status variables */ +bool isJumping = false; +bool showedJump = true; + +#ifdef OLED_ENABLE + /* Keyboard logo (from gdlcfont.c) */ + static void render_logo(void) { + static const char PROGMEM lime_logo[] = { + 0x80, 0x81, 0x82, 0x83, 0x84, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0 + }; + + oled_write_P(lime_logo, false); + } + + /* Keyboard Pet settings */ + #define MIN_WALK_SPEED 10 + #define MIN_RUN_SPEED 50 + #define ANIM_FRAME_DURATION 200 // how long each frame lasts in ms + #define ANIM_SIZE 96 // number of bytes per image + + /* Keyboard Pet status variables */ + led_t led_usb_state; + uint8_t current_wpm = 0; + uint8_t current_frame = 0; + uint32_t anim_timer = 0; + uint32_t anim_sleep = 0; + + /* Keyboard Pet logic */ + static void render_keyboard_pet(int KEYBOARD_PET_X, int KEYBOARD_PET_Y) { + + /* Sit */ + static const char PROGMEM sit[2][ANIM_SIZE] = { + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c, + 0x02, 0x05, 0x02, 0x24, 0x04, 0x04, 0x02, 0xa9, 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x08, 0x68, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x82, 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x0c, 0x10, 0x10, 0x20, 0x20, 0x20, 0x28, + 0x3e, 0x1c, 0x20, 0x20, 0x3e, 0x0f, 0x11, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c, + 0x02, 0x05, 0x02, 0x24, 0x04, 0x04, 0x02, 0xa9, 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x90, 0x08, 0x18, 0x60, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x82, 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x0c, 0x10, 0x10, 0x20, 0x20, 0x20, 0x28, + 0x3e, 0x1c, 0x20, 0x20, 0x3e, 0x0f, 0x11, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + } + }; + + /* Walk */ + static const char PROGMEM walk[2][ANIM_SIZE] = { + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x90, 0x90, 0x90, 0xa0, 0xc0, 0x80, 0x80, + 0x80, 0x70, 0x08, 0x14, 0x08, 0x90, 0x10, 0x10, 0x08, 0xa4, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x18, 0xea, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1c, 0x20, 0x20, 0x3c, 0x0f, 0x11, 0x1f, 0x03, + 0x06, 0x18, 0x20, 0x20, 0x3c, 0x0c, 0x12, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x20, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, + 0x00, 0xe0, 0x10, 0x28, 0x10, 0x20, 0x20, 0x20, 0x10, 0x48, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x20, 0xf8, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x30, 0xd5, 0x20, 0x1f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x30, 0x0c, 0x02, 0x05, 0x09, 0x12, 0x1e, + 0x02, 0x1c, 0x14, 0x08, 0x10, 0x20, 0x2c, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + } + }; + + /* Run */ + static const char PROGMEM run[2][ANIM_SIZE] = { + { + 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x08, 0x08, 0xc8, 0xb0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x40, 0x40, 0x3c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0xc4, 0xa4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc8, 0x58, 0x28, 0x2a, 0x10, 0x0f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x09, 0x04, 0x04, 0x04, 0x04, 0x02, 0x03, 0x02, 0x01, 0x01, + 0x02, 0x02, 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0xe0, 0x10, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0x80, 0x80, 0x78, 0x28, 0x08, 0x10, 0x20, 0x30, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0xb0, 0x50, 0x55, 0x20, 0x1f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, + 0x02, 0x1e, 0x20, 0x20, 0x18, 0x0c, 0x14, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + } + }; + + /* Bark */ + static const char PROGMEM bark[2][ANIM_SIZE] = { + { + 0x00, 0xc0, 0x20, 0x10, 0xd0, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, + 0x3c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0xc8, 0x48, 0x28, 0x2a, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x02, + 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }, + { + 0x00, 0xe0, 0x10, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, + 0x40, 0x2c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x48, 0x28, 0x2a, 0x10, 0x0f, 0x20, 0x4a, 0x09, 0x10, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x02, + 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + } + }; + + /* animation */ + void animate_keyboard_pet(void) { + + /* jump */ + if (isJumping || !showedJump) { + oled_set_cursor(KEYBOARD_PET_X,KEYBOARD_PET_Y +2); + oled_write_P(PSTR(" "), false); + oled_set_cursor(KEYBOARD_PET_X,KEYBOARD_PET_Y -1); + showedJump = true; + } else { + oled_set_cursor(KEYBOARD_PET_X,KEYBOARD_PET_Y -1); + oled_write_P(PSTR(" "), false); + oled_set_cursor(KEYBOARD_PET_X,KEYBOARD_PET_Y); + } + + /* switch frame */ + current_frame = (current_frame + 1) % 2; + + /* current animation status */ + if(led_usb_state.caps_lock) { + oled_write_raw_P(bark[abs(1 - current_frame)], ANIM_SIZE); + } else if(current_wpm <= MIN_WALK_SPEED) { + oled_write_raw_P(sit[abs(1 - current_frame)], ANIM_SIZE); + } else if(current_wpm <= MIN_RUN_SPEED) { + oled_write_raw_P(walk[abs(1 - current_frame)], ANIM_SIZE); + } else { + oled_write_raw_P(run[abs(1 - current_frame)], ANIM_SIZE); + } + } + + /* animation timer */ + if(timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { + anim_timer = timer_read32(); + if(timer_elapsed32(anim_sleep) < OLED_TIMEOUT) { + animate_keyboard_pet(); + } + } + + if (current_wpm > 0) { + anim_sleep = timer_read32(); + } else if(timer_elapsed32(anim_sleep) > OLED_TIMEOUT) { + oled_off(); + } + + } + + static void print_logo_narrow(void) { + + /* Keyboard logo */ + render_logo(); + + /* wpm counter */ + char wpm_str[5]; + wpm_str[4] = '\0'; + wpm_str[3] = '0' + current_wpm % 10; + wpm_str[2] = '0' + ( current_wpm /= 10) % 10; + wpm_str[1] = '0' + current_wpm / 10; + wpm_str[0] = ' '; + oled_set_cursor(0,14); + oled_write(wpm_str, false); + oled_write_P(PSTR(" wpm"), false); + } + + static void print_status_narrow(void) { + + /* Print current OS */ + oled_set_cursor(2,0); + if (keymap_config.swap_lctl_lgui) { + oled_write_P(PSTR("\x9E"), false); + } else { + oled_write_P(PSTR("\x9F"), false); + } + + /* Print current layout */ + oled_set_cursor(0,2); + switch (get_highest_layer(default_layer_state)) { + case _QWERTY: + oled_write_P(PSTR("QWRTY"), false); + break; + case _COLEMAK: + oled_write_P(PSTR("COLMK"), false); + break; + default: + oled_write_P(PSTR("UNDEF"), false); + } + + /* Print current layer */ + oled_set_cursor(0,4); + oled_write_P(PSTR("LAYER"), false); + oled_set_cursor(0,5); + switch (get_highest_layer(layer_state)) { + case _QWERTY: + oled_write_P(PSTR("Base "), false); + break; + case _RAISE: + oled_write_P(PSTR("Raise"), false); + break; + case _LOWER: + oled_write_P(PSTR("Lower"), false); + break; + case _ADJUST: + oled_write_P(PSTR("Adj "), false); + break; + default: + oled_write_P(PSTR("Undef"), false); + } + + /* caps lock */ + oled_set_cursor(0,7); + oled_write_P(PSTR("CAPS"), false); + if (led_usb_state.caps_lock) { + oled_write_P(PSTR("\x9A"), false); + } else { + oled_write_P(PSTR("\x99"), false); + } + + /* Space Enter swap */ + oled_set_cursor(0,9); + oled_write_P(PSTR("\x9B"), false); + oled_set_cursor(2,9); + oled_write_P(PSTR("\x9C"), !swap_space_enter); + oled_set_cursor(4,9); + oled_write_P(PSTR("\x9D"), swap_space_enter); + + /* Joystick debugging */ +# ifdef JOYSTICK_ENABLE + if (joystick_debug) { + oled_set_cursor(0,10); + oled_write_P(PSTR("X:"), false); + uint16_t val = analogReadPin(JOYSTICK_X_PIN); + char val_str[3]; + itoa(val, val_str, 10); + oled_write(val_str, false); + oled_set_cursor(0,11); + oled_write_P(PSTR("Y:"), false); + val = analogReadPin(JOYSTICK_Y_PIN); + itoa(val, val_str, 10); + oled_write(val_str, false); + } else { + oled_set_cursor(0,10); + oled_write_P(PSTR(" "), false); + oled_set_cursor(0,11); + oled_write_P(PSTR(" "), false); + } +# endif + + /* Keyboard Pet Render */ + render_keyboard_pet(0,13); + } + + /* vertical screens orientation fix */ + oled_rotation_t oled_init_user(oled_rotation_t rotation) { + return OLED_ROTATION_270; + } + + bool oled_task_user(void) { + + /* Keyboard Pet Variables */ + current_wpm = get_current_wpm(); + led_usb_state = host_keyboard_led_state(); + + if (is_keyboard_master()) { + print_status_narrow(); + } else { + print_logo_narrow(); + } + return false; + } + +#endif + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_QWERTY: + if (record->event.pressed) { + set_single_persistent_default_layer(_QWERTY); + } + return false; + case KC_COLEMAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_COLEMAK); + } + return false; + case KC_LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + case KC_RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + case KC_ADJUST: + if (record->event.pressed) { + layer_on(_ADJUST); + } else { + layer_off(_ADJUST); + } + return false; + case KC_PRVWD: + if (record->event.pressed) { + if (keymap_config.swap_lctl_lgui) { + register_mods(mod_config(MOD_LALT)); + register_code(KC_LEFT); + } else { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_LEFT); + } + } else { + if (keymap_config.swap_lctl_lgui) { + unregister_mods(mod_config(MOD_LALT)); + unregister_code(KC_LEFT); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_LEFT); + } + } + break; + case KC_NXTWD: + if (record->event.pressed) { + if (keymap_config.swap_lctl_lgui) { + register_mods(mod_config(MOD_LALT)); + register_code(KC_RIGHT); + } else { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_RIGHT); + } + } else { + if (keymap_config.swap_lctl_lgui) { + unregister_mods(mod_config(MOD_LALT)); + unregister_code(KC_RIGHT); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_RIGHT); + } + } + break; + case KC_LSTRT: + if (record->event.pressed) { + if (keymap_config.swap_lctl_lgui) { + /* CMD-arrow on Mac, but we have CTL and GUI swapped */ + register_mods(mod_config(MOD_LCTL)); + register_code(KC_LEFT); + } else { + register_code(KC_HOME); + } + } else { + if (keymap_config.swap_lctl_lgui) { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_LEFT); + } else { + unregister_code(KC_HOME); + } + } + break; + case KC_LEND: + if (record->event.pressed) { + if (keymap_config.swap_lctl_lgui) { + /* CMD-arrow on Mac, but we have CTL and GUI swapped */ + register_mods(mod_config(MOD_LCTL)); + register_code(KC_RIGHT); + } else { + register_code(KC_END); + } + } else { + if (keymap_config.swap_lctl_lgui) { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_RIGHT); + } else { + unregister_code(KC_END); + } + } + break; + case KC_DLINE: + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_BSPC); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_BSPC); + } + break; + + case KC_JOYSTICK_DEBUG: + if (record->event.pressed) { + joystick_debug = !joystick_debug; + } + return false; + break; + + /* Space Enter swap */ + case KC_THUMB_SWAP: + if (record->event.pressed) { + swap_space_enter = !swap_space_enter; + } + return false; + break; + case KC_THUMB_LEFT: + if (record->event.pressed) { + if (swap_space_enter) { + register_code(KC_SPC); + + /*Keyboard Pet jump*/ + isJumping = true; + showedJump = false; + } else { + register_code(KC_ENT); + } + } else { + if (swap_space_enter) { + unregister_code(KC_SPC); + + /*Keyboard Pet jump reset*/ + isJumping = false; + } else { + unregister_code(KC_ENT); + } + } + return false; + case KC_THUMB_RIGHT: + if (record->event.pressed) { + if (swap_space_enter) { + register_code(KC_ENT); + } else { + register_code(KC_SPC); + isJumping = true; + showedJump = false; + } + } else { + if (swap_space_enter) { + unregister_code(KC_ENT); + } else { + unregister_code(KC_SPC); + isJumping = false; + } + } + return false; + + /* Smart Backspace Delete */ + case KC_RSFT: + case KC_LSFT: + shift_held = record->event.pressed; + held_shift = keycode; + break; + case KC_BSPC_DEL: + if (record->event.pressed) { + if (shift_held) { + unregister_code(held_shift); + register_code(KC_DEL); + } else { + register_code(KC_BSPC); + } + } else { + unregister_code(KC_DEL); + unregister_code(KC_BSPC); + if (shift_held) { + register_code(held_shift); + } + } + return false; + } + return true; +} + +/* The default rotary encoder code can be found at the bottom of qmk_firmware/keyboards/lime/rev1/rev1.c + * These default settings can be overriden by your own settings in your keymap.c + * For your convenience, here's a copy of those settings so that you can uncomment them if you wish to apply your own modifications. + * DO NOT edit the rev1.c file; instead override the weakly defined default functions by your own. + */ + +/* DELETE THIS LINE TO UNCOMMENT (1/2) + +// Encoders +#ifdef ENCODER_ENABLE + bool encoder_update_user(uint8_t index, bool clockwise) { + + if (index == 0) { + if (clockwise) { + tap_code(KC_MNXT); + } else { + tap_code(KC_MPRV); + } + } else if (index == 1) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } + return false; + } +#endif + +#endif +DELETE THIS LINE TO UNCOMMENT (2/2) */ diff --git a/keyboards/lime/keymaps/default/readme.md b/keyboards/lime/keymaps/default/readme.md new file mode 100644 index 000000000000..006be983c777 --- /dev/null +++ b/keyboards/lime/keymaps/default/readme.md @@ -0,0 +1,52 @@ +## Default layout +Joystick on the left side, encoder on the right. No underglow. + +### Base layer +![Base layout for Lime Keyboard](https://github.com/HellSingCoder/LimeKeyboard/blob/main/media/base-layer.png?raw=true) +The layout can be switched for COLEMAK in the settings layer + +### Lower layer +![Lower layout for Lime Keyboard](https://github.com/HellSingCoder/LimeKeyboard/blob/main/media/lower-layer.png?raw=true) + +### Raise layer +![Raise layout for Lime Keyboard](https://github.com/HellSingCoder/LimeKeyboard/blob/main/media/raise-layer.png?raw=true) + +### Settings layer +![Adj layout for Lime Keyboard](https://github.com/HellSingCoder/LimeKeyboard/blob/main/media/adj-layer.png?raw=true) + +This layer can be accessed with the following combination: + +![Adj layout combination for Lime Keyboard](https://github.com/HellSingCoder/LimeKeyboard/blob/main/media/buttons-layer.png?raw=true) + +## Extras + +### Keyboard Pet (Luna) +![Adj layout for Lime Keyboard](https://github.com/HellSingCoder/LimeKeyboard/blob/main/media/luna.gif?raw=true) + +Luna jumps every time you hit Space and will bark at people on the internet if you activate Caps Lock! + +This keyboard pet reacts to your WPM counter: +- under 10 -> sit +- between 10 and 50 -> walk +- over 50 -> run + +### Joystick +The joystick on the left side will act as a controller for games. + +### Shift + Backspace = Delete +This one is pretty self explanatory. + +### Space / Enter swap +The Enter and Space functions can be swapped pressing the left thumb button from the Setting layer. The current mode will be displayed on the left display. This one may be useful to all the gamers out there! + +### OS Switch +Pressing the OS button while on the settings layer will toggle the MAC / WIN mode. This corrects the behaviour of the Alt and Control modifiers. The current selection will be displayed with an icon at the top of the left display. + +### Media Buttons +The right encoder controls the volume and can be pressed to mute. Extra media buttons are hidden away on the settings layer. + +### WPM indicator +Current WPM will be displayed at the bottom of the right screen. + +### Joystick Debug +The JDebug button on the settings layer toggles the ADC readings of the joystick pins for X and Y axis. These will be displayed on the left OLED. diff --git a/keyboards/lime/keymaps/default/rules.mk b/keyboards/lime/keymaps/default/rules.mk new file mode 100644 index 000000000000..b4572ce79a4c --- /dev/null +++ b/keyboards/lime/keymaps/default/rules.mk @@ -0,0 +1,9 @@ +OLED_ENABLE = yes +ENCODER_ENABLE = yes +JOYSTICK_ENABLE = yes +JOYSTICK_DRIVER = analog +EXTRAKEY_ENABLE = yes +WPM_ENABLE = yes +LTO_ENABLE = yes + +SRC += analog.c diff --git a/keyboards/lime/lib/glcdfont.c b/keyboards/lime/lib/glcdfont.c new file mode 100644 index 000000000000..bfc2cef1ebc0 --- /dev/null +++ b/keyboards/lime/lib/glcdfont.c @@ -0,0 +1,232 @@ +// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0. +// See gfxfont.h for newer custom bitmap font info. + +#include "progmem.h" + +// Standard ASCII 5x7 font +const unsigned char font[] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, + 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, + 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, + 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, + 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, + 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, + 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, + 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, + 0x00, 0x18, 0x24, 0x18, 0x00, 0x00, + 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, + 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, + 0x26, 0x29, 0x79, 0x29, 0x26, 0x00, + 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, + 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, + 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, + 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, + 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, + 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, + 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, + 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, + 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, + 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, + 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00, + 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00, + 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, + 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, + 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, + 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, + 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, + 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, + 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, + 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, + 0x23, 0x13, 0x08, 0x64, 0x62, 0x00, + 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, + 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, + 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, + 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, + 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, + 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, + 0x00, 0x80, 0x70, 0x30, 0x00, 0x00, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, + 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, + 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, + 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, + 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, + 0x72, 0x49, 0x49, 0x49, 0x46, 0x00, + 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, + 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, + 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, + 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, + 0x41, 0x21, 0x11, 0x09, 0x07, 0x00, + 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, + 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, + 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, + 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, + 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, + 0x02, 0x01, 0x59, 0x09, 0x06, 0x00, + 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00, + 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, + 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, + 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, + 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, + 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, + 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, + 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, + 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, + 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, + 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, + 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, + 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, + 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, + 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, + 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, + 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, + 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, + 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, + 0x26, 0x49, 0x49, 0x49, 0x32, 0x00, + 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00, + 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, + 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, + 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, + 0x63, 0x14, 0x08, 0x14, 0x63, 0x00, + 0x03, 0x04, 0x78, 0x04, 0x03, 0x00, + 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, + 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, + 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, + 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, + 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, + 0x00, 0x03, 0x07, 0x08, 0x00, 0x00, + 0x20, 0x54, 0x54, 0x78, 0x40, 0x00, + 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00, + 0x38, 0x44, 0x44, 0x44, 0x28, 0x00, + 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00, + 0x38, 0x54, 0x54, 0x54, 0x18, 0x00, + 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00, + 0x18, 0x24, 0x24, 0x1C, 0x78, 0x00, + 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, + 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, + 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, + 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, + 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, + 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00, + 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, + 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, + 0x7C, 0x18, 0x24, 0x24, 0x18, 0x00, + 0x18, 0x24, 0x24, 0x18, 0x7C, 0x00, + 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, + 0x48, 0x54, 0x54, 0x54, 0x24, 0x00, + 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00, + 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, + 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, + 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, + 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, + 0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00, + 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, + 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, + 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0x00, 0x41, 0x36, 0x08, 0x00, 0x00, + 0x02, 0x01, 0x02, 0x04, 0x02, 0x00, + 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xC0, 0x30, 0xC8, 0xF4, + 0xEA, 0xDA, 0xBD, 0x7D, 0x83, 0x7D, + 0xBD, 0xDA, 0xEA, 0xF4, 0xC8, 0x30, + 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, 0x00, + 0xF0, 0xFE, 0xF1, 0x91, 0xF6, 0xF0, + 0xF0, 0xFC, 0xF2, 0x92, 0xFC, 0xF0, + 0x10, 0x38, 0x54, 0x10, 0x10, 0x1E, + 0x00, 0x7E, 0x40, 0x40, 0x40, 0x00, + 0x00, 0x7E, 0x12, 0x12, 0x6C, 0x00, + 0x18, 0x3C, 0x7C, 0x3A, 0x7D, 0x24, + 0x14, 0x36, 0x00, 0x36, 0x77, 0x77, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, + 0xC0, 0x00, 0x07, 0x19, 0x26, 0x5E, + 0xAE, 0xB6, 0x7A, 0x7D, 0x82, 0x7D, + 0x7A, 0xB6, 0xAE, 0x5E, 0x26, 0x19, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x40, 0x3C, 0x53, 0x88, 0x84, + 0xC3, 0x60, 0x90, 0x84, 0x60, 0x30, + 0x90, 0x70, 0x21, 0x11, 0x71, 0x81, + 0x61, 0x50, 0xB0, 0x80, 0x00, 0x00, + 0x30, 0xC0, 0x30, 0x00, 0x20, 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, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 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/keyboards/lime/lime.c b/keyboards/lime/lime.c new file mode 100644 index 000000000000..bfc9ea0faaa3 --- /dev/null +++ b/keyboards/lime/lime.c @@ -0,0 +1,46 @@ +#include "lime.h" + +#ifdef SWAP_HANDS_ENABLE + +__attribute__ ((weak)) +const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = + // The LAYOUT macro could work for this, but it was harder to figure out the + // identity using it. + + // This is the identity layout. +/* +{ \ + { {0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0} }, \ + { {0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}, {5, 1} }, \ + { {0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}, {5, 2} }, \ + { {0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}, {5, 3} }, \ + { {0, 4}, {1, 4}, {2, 4}, {3, 4}, {4, 4}, {5, 4} }, \ + { {0, 5}, {1, 5}, {2, 5}, {3, 5}, {4, 5}, {5, 5} }, \ + \ + { {0, 5}, {1, 5}, {2, 5}, {3, 5}, {4, 5}, {5, 5} }, \ + { {0, 6}, {1, 6}, {2, 6}, {3, 6}, {4, 6}, {5, 6} }, \ + { {0, 7}, {1, 7}, {2, 7}, {3, 7}, {4, 7}, {5, 7} }, \ + { {0, 8}, {1, 8}, {2, 8}, {3, 8}, {4, 8}, {5, 8} }, \ + { {0, 9}, {1, 9}, {2, 9}, {3, 9}, {4, 9}, {5, 9} }, \ + { {0, 10}, {1, 10}, {2, 10}, {3, 10}, {4, 10}, {5, 10} }, \ +}; +*/ + + // This is the mirror, q <-> p, w <-> o, etc... +{ \ + { {0, 5}, {1, 5}, {2, 5}, {3, 5}, {4, 5}, {5, 5} }, \ + { {0, 6}, {1, 6}, {2, 6}, {3, 6}, {4, 6}, {5, 6} }, \ + { {0, 7}, {1, 7}, {2, 7}, {3, 7}, {4, 7}, {5, 7} }, \ + { {0, 8}, {1, 8}, {2, 8}, {3, 8}, {4, 8}, {5, 8} }, \ + { {0, 9}, {1, 9}, {2, 9}, {3, 9}, {4, 9}, {5, 9} }, \ + { {0, 10}, {1, 10}, {2, 10}, {3, 10}, {4, 10}, {5, 10} }, \ + \ + { {0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0} }, \ + { {0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}, {5, 1} }, \ + { {0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}, {5, 2} }, \ + { {0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}, {5, 3} }, \ + { {0, 4}, {1, 4}, {2, 4}, {3, 4}, {4, 4}, {5, 4} }, \ + { {0, 5}, {1, 5}, {2, 5}, {3, 5}, {4, 5}, {5, 5} }, \ +}; + +#endif diff --git a/keyboards/lime/lime.h b/keyboards/lime/lime.h new file mode 100644 index 000000000000..97cee454bcc4 --- /dev/null +++ b/keyboards/lime/lime.h @@ -0,0 +1,21 @@ + /* Copyright 2021 HellSingCoder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#ifdef KEYBOARD_lime_rev1 + #include "rev1.h" +#endif diff --git a/keyboards/lime/readme.md b/keyboards/lime/readme.md new file mode 100644 index 000000000000..539ae97fd333 --- /dev/null +++ b/keyboards/lime/readme.md @@ -0,0 +1,30 @@ +# Lime Keyboard + +![Lime Keyboard](https://github.com/HellSingCoder/LimeKeyboard/blob/main/media/lime_keyboard.jpeg?raw=true) + +Lime is a 6×4+6 keys column-staggered split keyboard with encoder and joystick support. Based on [Lily58](https://github.com/kata0510/Lily58), [Corne](https://github.com/foostan/crkbd), [Helix](https://github.com/MakotoKurauchi/helix) and [Sofle](https://github.com/josefadamcik/SofleKeyboard) keyboards. This board features a reversible PCB, OLEDs, Underglow and Bluetooth support. The PCB has holes for floating or screwed mounts but can be also mounted with a gasket. + +The Lime keyboard was created by [HellTM](https://github.com/HellSingCoder) with the help of the QMK and custom keyboard community. + +Build guide and a build log not available yet + +* Keyboard Maintainer: [HellSingCoder](https://www.simonepellegrino.com/) (GitHub: [HellTM](https://github.com/HellSingCoder)) +* Hardware Supported: LimeKeyboard PCB, ProMicro +* Hardware Availability: [PCB & Case Data](https://github.com/HellSingCoder/LimeKeyboard) + +Make example for this keyboard (after setting up your build environment): + + make lime:default + +Flashing example for this keyboard: + + make lime:default:flash + +Press reset button on he keyboard when asked. You can do that in 3 ways: +* **Physical reset button**: Briefly press the button near the TRRS connector on the PCB - if you haven't installed one, short the pads instead +* **Keycode in layout**: Press the key mapped to `RESET` (`Lower` + `Raise` + `Esc` on the default layout) +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard + +Disconnect the first half, connect the second one and repeat the process. + +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/lime/rev1/config.h b/keyboards/lime/rev1/config.h new file mode 100644 index 000000000000..55c045dc67bf --- /dev/null +++ b/keyboards/lime/rev1/config.h @@ -0,0 +1,68 @@ + /* Copyright 2021 HellSingCoder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x0666 +#define PRODUCT_ID 0x2784 +#define DEVICE_VER 0x0001 +#define MANUFACTURER HellSingCoder +#define PRODUCT Lime + +/* key matrix size */ +// Rows are doubled-up +#define MATRIX_ROWS 12 +#define MATRIX_COLS 6 + +// wiring of each half +#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4, B5 } +#define MATRIX_COL_PINS { F6, F7, B1, B3, B2, B6 } +#define DIODE_DIRECTION COL2ROW + +#define TAPPING_TERM 100 +#define DEBOUNCE 5 + +/* encoder support */ +#ifdef ENCODER_ENABLE +# define ENCODERS_PAD_A { F5 } +# define ENCODERS_PAD_B { F4 } +# define ENCODERS_PAD_A_RIGHT { F4 } +# define ENCODERS_PAD_B_RIGHT { F5 } +# define ENCODER_RESOLUTION 2 +#endif + +/* joystick support */ +#ifdef JOYSTICK_ENABLE +# define JOYSTICK_AXES_COUNT 2 +# define JOYSTICK_BUTTON_COUNT 1 +# define JOYSTICK_AXES_RESOLUTION 8 +#endif + +#define TAP_CODE_DELAY 10 + +/* communication between sides */ +#define USE_SERIAL +#define SOFT_SERIAL_PIN D2 + +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION +#define SPLIT_USB_DETECT + +#ifdef WPM_ENABLE +# define SPLIT_WPM_ENABLE +#endif + diff --git a/keyboards/lime/rev1/info.json b/keyboards/lime/rev1/info.json new file mode 100644 index 000000000000..0dcadc782326 --- /dev/null +++ b/keyboards/lime/rev1/info.json @@ -0,0 +1,77 @@ +{ + "keyboard_name": "Lime", + "url": "https://github.com/HellSingCoder/LimeKeyboard", + "maintainer": "HellSingCoder", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"Esc", "x":0, "y":0.5}, + {"label":"1!", "x":1, "y":0.38}, + {"label":"2@", "x":2, "y":0.13}, + {"label":"3#", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0.13}, + {"label":"5%", "x":5, "y":0.25}, + {"label":"6^", "x":9, "y":0.25}, + {"label":"7&", "x":10, "y":0.13}, + {"label":"8*", "x":11, "y":0}, + {"label":"9(", "x":12, "y":0.13}, + {"label":"0)", "x":13, "y":0.38}, + {"label":"Backspace", "x":14, "y":0.5}, + + {"label":"Tab", "x":0, "y":1.5}, + {"label":"Q", "x":1, "y":1.38}, + {"label":"W", "x":2, "y":1.13}, + {"label":"E", "x":3, "y":1}, + {"label":"R", "x":4, "y":1.13}, + {"label":"T", "x":5, "y":1.25}, + {"label":"Y", "x":9, "y":1.25}, + {"label":"U", "x":10, "y":1.13}, + {"label":"I", "x":11, "y":1}, + {"label":"O", "x":12, "y":1.13}, + {"label":"P", "x":13, "y":1.38}, + {"label":"`~", "x":14, "y":1.5}, + + {"label":"Caps Lock", "x":0, "y":2.5}, + {"label":"A", "x":1, "y":2.38}, + {"label":"S", "x":2, "y":2.13}, + {"label":"D", "x":3, "y":2}, + {"label":"F", "x":4, "y":2.13}, + {"label":"G", "x":5, "y":2.25}, + {"label":"H", "x":9, "y":2.25}, + {"label":"J", "x":10, "y":2.13}, + {"label":"K", "x":11, "y":2}, + {"label":"L", "x":12, "y":2.13}, + {"label":";:", "x":13, "y":2.38}, + {"label":"'\"", "x":14, "y":2.5}, + + {"label":"Shift", "x":0, "y":3.5}, + {"label":"Z", "x":1, "y":3.38}, + {"label":"X", "x":2, "y":3.13}, + {"label":"C", "x":3, "y":3}, + {"label":"V", "x":4, "y":3.13}, + {"label":"B", "x":5, "y":3.25}, + {"label":"Joystick", "x":6, "y":3.25}, + {"label":"Encoder", "x":8, "y":3.25}, + {"label":"N", "x":9, "y":3.25}, + {"label":"M", "x":10, "y":3.13}, + {"label":",<", "x":11, "y":3}, + {"label":".>", "x":12, "y":3.13}, + {"label":"/?", "x":13, "y":3.38}, + {"label":"\\|", "x":14, "y":3.5}, + + {"label":"Lower", "x":0.35, "y":4.5}, + {"label":"OS", "x":1.35, "y":4.38}, + {"label":"Alt", "x":2.35, "y":4.13}, + {"label":"Del", "x":3.35, "y":4.13}, + {"label":"Ctrl", "x":4.55, "y":4.5}, + {"label":"Enter", "x":5.75, "y":4.25, "h":1.25}, + {"label":"Space", "x":8.25, "y":4.25, "h":1.25}, + {"label":"Raise", "x":9.45, "y":4.5}, + {"label":"[{", "x":10.65, "y":4.13}, + {"label":"]}", "x":11.65, "y":4.13}, + {"label":"-_", "x":12.65, "y":4.38}, + {"label":"=+", "x":13.65, "y":4.5} + ] + } + } +} diff --git a/keyboards/lime/rev1/rev1.c b/keyboards/lime/rev1/rev1.c new file mode 100644 index 000000000000..4cc560623b45 --- /dev/null +++ b/keyboards/lime/rev1/rev1.c @@ -0,0 +1,38 @@ + /* Copyright 2021 HellSingCoder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "lime.h" + +/* Encoders */ +#ifdef ENCODER_ENABLE + bool encoder_update_user(uint8_t index, bool clockwise) { + + if (index == 0) { + if (clockwise) { + tap_code(KC_MNXT); + } else { + tap_code(KC_MPRV); + } + } else if (index == 1) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } + return false; + } +#endif diff --git a/keyboards/lime/rev1/rev1.h b/keyboards/lime/rev1/rev1.h new file mode 100644 index 000000000000..24a3f7212b7c --- /dev/null +++ b/keyboards/lime/rev1/rev1.h @@ -0,0 +1,41 @@ + /* Copyright 2021 HellSingCoder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once +#include "quantum.h" + +#define LAYOUT( \ + L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ + L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ + L30, L31, L32, L33, L34, L35, L50, R50, R30, R31, R32, R33, R34, R35, \ + L40, L41, L42, L43, L44, L45, R40, R41, R42, R43, R44, R45 \ + ) \ + { \ + { L00, L01, L02, L03, L04, L05 }, \ + { L10, L11, L12, L13, L14, L15 }, \ + { L20, L21, L22, L23, L24, L25 }, \ + { L30, L31, L32, L33, L34, L35 }, \ + { L40, L41, L42, L43, L44, L45 }, \ + { L50, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ + { R05, R04, R03, R02, R01, R00 }, \ + { R15, R14, R13, R12, R11, R10 }, \ + { R25, R24, R23, R22, R21, R20 }, \ + { R35, R34, R33, R32, R31, R30 }, \ + { R45, R44, R43, R42, R41, R40 }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, R50 } \ + } + diff --git a/keyboards/lime/rev1/rules.mk b/keyboards/lime/rev1/rules.mk new file mode 100644 index 000000000000..f83c13ac8d68 --- /dev/null +++ b/keyboards/lime/rev1/rules.mk @@ -0,0 +1,4 @@ +ENCODER_ENABLE = yes +ENCODER_RIGHT_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/lime/rules.mk b/keyboards/lime/rules.mk new file mode 100644 index 000000000000..18a2881d04ff --- /dev/null +++ b/keyboards/lime/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = no # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +SPLIT_KEYBOARD = yes +SWAP_HANDS_ENABLE = yes +DEFAULT_FOLDER = lime/rev1 diff --git a/keyboards/linworks/fave87/config.h b/keyboards/linworks/fave87/config.h new file mode 100644 index 000000000000..d6d5ab5cf480 --- /dev/null +++ b/keyboards/linworks/fave87/config.h @@ -0,0 +1,55 @@ +/* +Copyright 2021 Moritz Plattner +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4C58 //"LX" +#define PRODUCT_ID 0x0002 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Lx3 +#define PRODUCT FAVE-87 + +/* Set 1 kHz polling rate and force USB NKRO */ +#define USB_POLLING_INTERVAL_MS 1 +#define FORCE_NKRO + +/* key matrix size */ +#define MATRIX_ROWS 12 +#define MATRIX_COLS 9 + +#define MATRIX_ROW_PINS { D3, D5, D1, D2, D4, D0, F5, F4, F7, F6, B5, B4 } +#define MATRIX_COL_PINS { F1, F0, E6, B0, B1, B2, B3, D6, D7 } +#define UNUSED_PINS { B6, C6, C7 } + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION ROW2COL + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* Backlight */ +#define BACKLIGHT_PIN B7 // Timer 1 on mega32u4 +#define BACKLIGHT_BREATHING +#define BACKLIGHT_ON_STATE 1 + +/* Underglow */ +#define RGB_DI_PIN E2 +#define RGBLED_NUM 40 +#define RGBLIGHT_SLEEP // Turns LEDs off if the PC goes to sleep/shutdown +#define RGBLIGHT_EFFECT_BREATHING +#define RGBLIGHT_EFFECT_RAINBOW_MOOD +#define RGBLIGHT_EFFECT_RAINBOW_SWIRL diff --git a/keyboards/linworks/fave87/fave87.c b/keyboards/linworks/fave87/fave87.c new file mode 100644 index 000000000000..49272baf5ade --- /dev/null +++ b/keyboards/linworks/fave87/fave87.c @@ -0,0 +1,16 @@ +/* Copyright 2021 Moritz Plattner + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "fave87.h" diff --git a/keyboards/linworks/fave87/fave87.h b/keyboards/linworks/fave87/fave87.h new file mode 100644 index 000000000000..7c3490f45795 --- /dev/null +++ b/keyboards/linworks/fave87/fave87.h @@ -0,0 +1,129 @@ +/* Copyright 2021 Moritz Plattner + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_all( \ + K000, K001, K011, K002, K012, K003, K013, K004, K014, K005, K015, K006, K016, K017, K008, K018, \ + K020, K030, K021, K031, K022, K032, K023, K033, K024, K034, K025, K035, K026, K036, K027, K037, K028, K038, \ + K040, K050, K041, K051, K042, K052, K043, K053, K044, K054, K045, K055, K046, K056, K057, K048, K058, \ + K060, K070, K061, K071, K062, K072, K063, K073, K064, K074, K065, K075, K066, K076, \ + K080, K090, K081, K091, K082, K092, K083, K093, K084, K094, K085, K095, K086, K096, K088, \ + K100, K110, K101, K103, K105, K115, K106, K116, K117, K108, K118 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, KC_NO, K008 }, \ + { KC_NO, 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, KC_NO, K048 }, \ + { K050, K051, K052, K053, K054, K055, K056, K057, K058 }, \ + { K060, K061, K062, K063, K064, K065, K066, KC_NO, KC_NO }, \ + { K070, K071, K072, K073, K074, K075, K076, KC_NO, KC_NO }, \ + { K080, K081, K082, K083, K084, K085, K086, KC_NO, K088 }, \ + { K090, K091, K092, K093, K094, K095, K096, KC_NO, KC_NO }, \ + { K100, K101, KC_NO, K103, KC_NO, K105, K106, KC_NO, K108 }, \ + { K110, KC_NO, KC_NO, KC_NO, KC_NO, K115, K116, K117, K118 } \ +} + +#define LAYOUT_tkl_ansi( \ + K000, K001, K011, K002, K012, K003, K013, K004, K014, K005, K015, K006, K016, K017, K008, K018, \ + K020, K030, K021, K031, K022, K032, K023, K033, K024, K034, K025, K035, K026, K036, K037, K028, K038, \ + K040, K050, K041, K051, K042, K052, K043, K053, K044, K054, K045, K055, K046, K056, K057, K048, K058, \ + K060, K070, K061, K071, K062, K072, K063, K073, K064, K074, K065, K075, K076, \ + K080, K081, K091, K082, K092, K083, K093, K084, K094, K085, K095, K086, K088, \ + K100, K110, K101, K103, K105, K115, K106, K116, K117, K108, K118 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, KC_NO, K008 }, \ + { KC_NO, K011, K012, K013, K014, K015, K016, K017, K018 }, \ + { K020, K021, K022, K023, K024, K025, K026, KC_NO, K028 }, \ + { K030, K031, K032, K033, K034, K035, K036, K037, K038 }, \ + { K040, K041, K042, K043, K044, K045, K046, KC_NO, K048 }, \ + { K050, K051, K052, K053, K054, K055, K056, K057, K058 }, \ + { K060, K061, K062, K063, K064, K065, KC_NO, KC_NO, KC_NO }, \ + { K070, K071, K072, K073, K074, K075, K076, KC_NO, KC_NO }, \ + { K080, K081, K082, K083, K084, K085, K086, KC_NO, K088 }, \ + { KC_NO, K091, K092, K093, K094, K095, KC_NO, KC_NO, KC_NO }, \ + { K100, K101, KC_NO, K103, KC_NO, K105, K106, KC_NO, K108 }, \ + { K110, KC_NO, KC_NO, KC_NO, KC_NO, K115, K116, K117, K118 } \ +} + +#define LAYOUT_tkl_ansi_split_bs_rshift( \ + K000, K001, K011, K002, K012, K003, K013, K004, K014, K005, K015, K006, K016, K017, K008, K018, \ + K020, K030, K021, K031, K022, K032, K023, K033, K024, K034, K025, K035, K026, K036, K027, K037, K028, K038, \ + K040, K050, K041, K051, K042, K052, K043, K053, K044, K054, K045, K055, K046, K056, K057, K048, K058, \ + K060, K070, K061, K071, K062, K072, K063, K073, K064, K074, K065, K075, K076, \ + K080, K081, K091, K082, K092, K083, K093, K084, K094, K085, K095, K086, K096, K088, \ + K100, K110, K101, K103, K105, K115, K106, K116, K117, K108, K118 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, KC_NO, K008 }, \ + { KC_NO, K011, K012, K013, K014, K015, K016, K017, K018 }, \ + { K020, K021, K022, K023, K024, K025, K026, KC_NO, K028 }, \ + { K030, K031, K032, K033, K034, K035, K036, K037, K038 }, \ + { K040, K041, K042, K043, K044, K045, K046, KC_NO, K048 }, \ + { K050, K051, K052, K053, K054, K055, K056, K057, K058 }, \ + { K060, K061, K062, K063, K064, K065, KC_NO, KC_NO, KC_NO }, \ + { K070, K071, K072, K073, K074, K075, K076, KC_NO, KC_NO }, \ + { K080, K081, K082, K083, K084, K085, K086, KC_NO, K088 }, \ + { KC_NO, K091, K092, K093, K094, K095, KC_NO, KC_NO, KC_NO }, \ + { K100, K101, KC_NO, K103, KC_NO, K105, K106, KC_NO, K108 }, \ + { K110, KC_NO, KC_NO, KC_NO, KC_NO, K115, K116, K117, K118 } \ +} + +#define LAYOUT_tkl_iso( \ + K000, K001, K011, K002, K012, K003, K013, K004, K014, K005, K015, K006, K016, K017, K008, K018, \ + K020, K030, K021, K031, K022, K032, K023, K033, K024, K034, K025, K035, K026, K036, K037, K028, K038, \ + K040, K050, K041, K051, K042, K052, K043, K053, K044, K054, K045, K055, K046, K057, K048, K058, \ + K060, K070, K061, K071, K062, K072, K063, K073, K064, K074, K065, K075, K066, K076, \ + K080, K090, K081, K091, K082, K092, K083, K093, K084, K094, K085, K095, K086, K088, \ + K100, K110, K101, K103, K105, K115, K106, K116, K117, K108, K118 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, KC_NO, K008 }, \ + { KC_NO, K011, K012, K013, K014, K015, K016, K017, K018 }, \ + { K020, K021, K022, K023, K024, K025, K026, KC_NO, K028 }, \ + { K030, K031, K032, K033, K034, K035, K036, K037, K038 }, \ + { K040, K041, K042, K043, K044, K045, K046, KC_NO, K048 }, \ + { K050, K051, K052, K053, K054, K055, KC_NO, K057, K058 }, \ + { K060, K061, K062, K063, K064, K065, K066, KC_NO, KC_NO }, \ + { K070, K071, K072, K073, K074, K075, K076, KC_NO, KC_NO }, \ + { K080, K081, K082, K083, K084, K085, K086, KC_NO, K088 }, \ + { K090, K091, K092, K093, K094, K095, KC_NO, KC_NO, KC_NO }, \ + { K100, K101, KC_NO, K103, KC_NO, K105, K106, KC_NO, K108 }, \ + { K110, KC_NO, KC_NO, KC_NO, KC_NO, K115, K116, K117, K118 } \ +} + +#define LAYOUT_tkl_iso_split_bs_rshift( \ + K000, K001, K011, K002, K012, K003, K013, K004, K014, K005, K015, K006, K016, K017, K008, K018, \ + K020, K030, K021, K031, K022, K032, K023, K033, K024, K034, K025, K035, K026, K036, K027, K037, K028, K038, \ + K040, K050, K041, K051, K042, K052, K043, K053, K044, K054, K045, K055, K046, K057, K048, K058, \ + K060, K070, K061, K071, K062, K072, K063, K073, K064, K074, K065, K075, K066, K076, \ + K080, K090, K081, K091, K082, K092, K083, K093, K084, K094, K085, K095, K086, K096, K088, \ + K100, K110, K101, K103, K105, K115, K106, K116, K117, K108, K118 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, KC_NO, K008 }, \ + { KC_NO, K011, K012, K013, K014, K015, K016, K017, K018 }, \ + { K020, K021, K022, K023, K024, K025, K026, KC_NO, K028 }, \ + { K030, K031, K032, K033, K034, K035, K036, K037, K038 }, \ + { K040, K041, K042, K043, K044, K045, K046, KC_NO, K048 }, \ + { K050, K051, K052, K053, K054, K055, KC_NO, K057, K058 }, \ + { K060, K061, K062, K063, K064, K065, K066, KC_NO, KC_NO }, \ + { K070, K071, K072, K073, K074, K075, K076, KC_NO, KC_NO }, \ + { K080, K081, K082, K083, K084, K085, K086, KC_NO, K088 }, \ + { K090, K091, K092, K093, K094, K095, KC_NO, KC_NO, KC_NO }, \ + { K100, K101, KC_NO, K103, KC_NO, K105, K106, KC_NO, K108 }, \ + { K110, KC_NO, KC_NO, KC_NO, KC_NO, K115, K116, K117, K118 } \ +} diff --git a/keyboards/linworks/fave87/info.json b/keyboards/linworks/fave87/info.json new file mode 100644 index 000000000000..82a524ca5e7d --- /dev/null +++ b/keyboards/linworks/fave87/info.json @@ -0,0 +1,499 @@ +{ + "keyboard_name": "Lx3 Fave 87", + "maintainer": "ebastler", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":2, "y":0}, + {"label":"F2", "x":3, "y":0}, + {"label":"F3", "x":4, "y":0}, + {"label":"F4", "x":5, "y":0}, + {"label":"F5", "x":6.5, "y":0}, + {"label":"F6", "x":7.5, "y":0}, + {"label":"F7", "x":8.5, "y":0}, + {"label":"F8", "x":9.5, "y":0}, + {"label":"F9", "x":11, "y":0}, + {"label":"F10", "x":12, "y":0}, + {"label":"F11", "x":13, "y":0}, + {"label":"F12", "x":14, "y":0}, + {"label":"PrtSc", "x":15.25, "y":0}, + {"label":"Scroll Lock", "x":16.25, "y":0}, + {"label":"Pause", "x":17.25, "y":0}, + + {"label":"~", "x":0, "y":1.25}, + {"label":"!", "x":1, "y":1.25}, + {"label":"@", "x":2, "y":1.25}, + {"label":"#", "x":3, "y":1.25}, + {"label":"$", "x":4, "y":1.25}, + {"label":"%", "x":5, "y":1.25}, + {"label":"^", "x":6, "y":1.25}, + {"label":"&", "x":7, "y":1.25}, + {"label":"*", "x":8, "y":1.25}, + {"label":"(", "x":9, "y":1.25}, + {"label":")", "x":10, "y":1.25}, + {"label":"_", "x":11, "y":1.25}, + {"label":"+", "x":12, "y":1.25}, + {"x":13, "y":1.25}, + {"label":"Bksp", "x":14, "y":1.25}, + {"label":"Insert", "x":15.25, "y":1.25}, + {"label":"Home", "x":16.25, "y":1.25}, + {"label":"PgUp", "x":17.25, "y":1.25}, + + {"label":"Tab", "x":0, "y":2.25, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.25}, + {"label":"W", "x":2.5, "y":2.25}, + {"label":"E", "x":3.5, "y":2.25}, + {"label":"R", "x":4.5, "y":2.25}, + {"label":"T", "x":5.5, "y":2.25}, + {"label":"Y", "x":6.5, "y":2.25}, + {"label":"U", "x":7.5, "y":2.25}, + {"label":"I", "x":8.5, "y":2.25}, + {"label":"O", "x":9.5, "y":2.25}, + {"label":"P", "x":10.5, "y":2.25}, + {"label":"{", "x":11.5, "y":2.25}, + {"label":"}", "x":12.5, "y":2.25}, + {"label":"|", "x":13.5, "y":2.25, "w":1.5}, + {"label":"Delete", "x":15.25, "y":2.25}, + {"label":"End", "x":16.25, "y":2.25}, + {"label":"PgDn", "x":17.25, "y":2.25}, + + {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, + {"label":"A", "x":1.75, "y":3.25}, + {"label":"S", "x":2.75, "y":3.25}, + {"label":"D", "x":3.75, "y":3.25}, + {"label":"F", "x":4.75, "y":3.25}, + {"label":"G", "x":5.75, "y":3.25}, + {"label":"H", "x":6.75, "y":3.25}, + {"label":"J", "x":7.75, "y":3.25}, + {"label":"K", "x":8.75, "y":3.25}, + {"label":"L", "x":9.75, "y":3.25}, + {"label":":", "x":10.75, "y":3.25}, + {"label":"\"", "x":11.75, "y":3.25}, + {"x":12.75, "y":3.25}, + {"label":"Enter", "x":13.75, "y":3.25, "w":1.25}, + + {"label":"Shift", "x":0, "y":4.25, "w":1.25}, + {"x":1.25, "y":4.25}, + {"label":"Z", "x":2.25, "y":4.25}, + {"label":"X", "x":3.25, "y":4.25}, + {"label":"C", "x":4.25, "y":4.25}, + {"label":"V", "x":5.25, "y":4.25}, + {"label":"B", "x":6.25, "y":4.25}, + {"label":"N", "x":7.25, "y":4.25}, + {"label":"M", "x":8.25, "y":4.25}, + {"label":"<", "x":9.25, "y":4.25}, + {"label":">", "x":10.25, "y":4.25}, + {"label":"?", "x":11.25, "y":4.25}, + {"label":"Shift", "x":12.25, "y":4.25, "w":1.75}, + {"x":14, "y":4.25}, + {"label":"\u2191", "x":16.25, "y":4.25}, + + {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, + {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, + {"x":3.75, "y":5.25, "w":6.25}, + {"label":"Alt", "x":10, "y":5.25, "w":1.25}, + {"label":"Win", "x":11.25, "y":5.25, "w":1.25}, + {"label":"Menu", "x":12.5, "y":5.25, "w":1.25}, + {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, + {"label":"\u2190", "x":15.25, "y":5.25}, + {"label":"\u2193", "x":16.25, "y":5.25}, + {"label":"\u2192", "x":17.25, "y":5.25}] + }, + + "LAYOUT_tkl_ansi": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":2, "y":0}, + {"label":"F2", "x":3, "y":0}, + {"label":"F3", "x":4, "y":0}, + {"label":"F4", "x":5, "y":0}, + {"label":"F5", "x":6.5, "y":0}, + {"label":"F6", "x":7.5, "y":0}, + {"label":"F7", "x":8.5, "y":0}, + {"label":"F8", "x":9.5, "y":0}, + {"label":"F9", "x":11, "y":0}, + {"label":"F10", "x":12, "y":0}, + {"label":"F11", "x":13, "y":0}, + {"label":"F12", "x":14, "y":0}, + {"label":"PrtSc", "x":15.25, "y":0}, + {"label":"Scroll Lock", "x":16.25, "y":0}, + {"label":"Pause", "x":17.25, "y":0}, + + {"label":"~", "x":0, "y":1.25}, + {"label":"!", "x":1, "y":1.25}, + {"label":"@", "x":2, "y":1.25}, + {"label":"#", "x":3, "y":1.25}, + {"label":"$", "x":4, "y":1.25}, + {"label":"%", "x":5, "y":1.25}, + {"label":"^", "x":6, "y":1.25}, + {"label":"&", "x":7, "y":1.25}, + {"label":"*", "x":8, "y":1.25}, + {"label":"(", "x":9, "y":1.25}, + {"label":")", "x":10, "y":1.25}, + {"label":"_", "x":11, "y":1.25}, + {"label":"+", "x":12, "y":1.25}, + {"label":"Bksp", "x":13, "y":1.25, "w":2}, + {"label":"Insert", "x":15.25, "y":1.25}, + {"label":"Home", "x":16.25, "y":1.25}, + {"label":"PgUp", "x":17.25, "y":1.25}, + + {"label":"Tab", "x":0, "y":2.25, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.25}, + {"label":"W", "x":2.5, "y":2.25}, + {"label":"E", "x":3.5, "y":2.25}, + {"label":"R", "x":4.5, "y":2.25}, + {"label":"T", "x":5.5, "y":2.25}, + {"label":"Y", "x":6.5, "y":2.25}, + {"label":"U", "x":7.5, "y":2.25}, + {"label":"I", "x":8.5, "y":2.25}, + {"label":"O", "x":9.5, "y":2.25}, + {"label":"P", "x":10.5, "y":2.25}, + {"label":"{", "x":11.5, "y":2.25}, + {"label":"}", "x":12.5, "y":2.25}, + {"label":"|", "x":13.5, "y":2.25, "w":1.5}, + {"label":"Delete", "x":15.25, "y":2.25}, + {"label":"End", "x":16.25, "y":2.25}, + {"label":"PgDn", "x":17.25, "y":2.25}, + + {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, + {"label":"A", "x":1.75, "y":3.25}, + {"label":"S", "x":2.75, "y":3.25}, + {"label":"D", "x":3.75, "y":3.25}, + {"label":"F", "x":4.75, "y":3.25}, + {"label":"G", "x":5.75, "y":3.25}, + {"label":"H", "x":6.75, "y":3.25}, + {"label":"J", "x":7.75, "y":3.25}, + {"label":"K", "x":8.75, "y":3.25}, + {"label":"L", "x":9.75, "y":3.25}, + {"label":":", "x":10.75, "y":3.25}, + {"label":"\"", "x":11.75, "y":3.25}, + {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, + + {"label":"Shift", "x":0, "y":4.25, "w":2.25}, + {"label":"Z", "x":2.25, "y":4.25}, + {"label":"X", "x":3.25, "y":4.25}, + {"label":"C", "x":4.25, "y":4.25}, + {"label":"V", "x":5.25, "y":4.25}, + {"label":"B", "x":6.25, "y":4.25}, + {"label":"N", "x":7.25, "y":4.25}, + {"label":"M", "x":8.25, "y":4.25}, + {"label":"<", "x":9.25, "y":4.25}, + {"label":">", "x":10.25, "y":4.25}, + {"label":"?", "x":11.25, "y":4.25}, + {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, + {"label":"\u2191", "x":16.25, "y":4.25}, + + {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, + {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, + {"x":3.75, "y":5.25, "w":6.25}, + {"label":"Alt", "x":10, "y":5.25, "w":1.25}, + {"label":"Win", "x":11.25, "y":5.25, "w":1.25}, + {"label":"Menu", "x":12.5, "y":5.25, "w":1.25}, + {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, + {"label":"\u2190", "x":15.25, "y":5.25}, + {"label":"\u2193", "x":16.25, "y":5.25}, + {"label":"\u2192", "x":17.25, "y":5.25} + ] + }, + + "LAYOUT_tkl_ansi_split_bs_rshift": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":2, "y":0}, + {"label":"F2", "x":3, "y":0}, + {"label":"F3", "x":4, "y":0}, + {"label":"F4", "x":5, "y":0}, + {"label":"F5", "x":6.5, "y":0}, + {"label":"F6", "x":7.5, "y":0}, + {"label":"F7", "x":8.5, "y":0}, + {"label":"F8", "x":9.5, "y":0}, + {"label":"F9", "x":11, "y":0}, + {"label":"F10", "x":12, "y":0}, + {"label":"F11", "x":13, "y":0}, + {"label":"F12", "x":14, "y":0}, + {"label":"PrtSc", "x":15.25, "y":0}, + {"label":"Scroll Lock", "x":16.25, "y":0}, + {"label":"Pause", "x":17.25, "y":0}, + + {"label":"~", "x":0, "y":1.25}, + {"label":"!", "x":1, "y":1.25}, + {"label":"@", "x":2, "y":1.25}, + {"label":"#", "x":3, "y":1.25}, + {"label":"$", "x":4, "y":1.25}, + {"label":"%", "x":5, "y":1.25}, + {"label":"^", "x":6, "y":1.25}, + {"label":"&", "x":7, "y":1.25}, + {"label":"*", "x":8, "y":1.25}, + {"label":"(", "x":9, "y":1.25}, + {"label":")", "x":10, "y":1.25}, + {"label":"_", "x":11, "y":1.25}, + {"label":"+", "x":12, "y":1.25}, + {"label":"Bksp", "x":13, "y":1.25}, + {"label":"Bksp", "x":14, "y":1.25}, + {"label":"Insert", "x":15.25, "y":1.25}, + {"label":"Home", "x":16.25, "y":1.25}, + {"label":"PgUp", "x":17.25, "y":1.25}, + + {"label":"Tab", "x":0, "y":2.25, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.25}, + {"label":"W", "x":2.5, "y":2.25}, + {"label":"E", "x":3.5, "y":2.25}, + {"label":"R", "x":4.5, "y":2.25}, + {"label":"T", "x":5.5, "y":2.25}, + {"label":"Y", "x":6.5, "y":2.25}, + {"label":"U", "x":7.5, "y":2.25}, + {"label":"I", "x":8.5, "y":2.25}, + {"label":"O", "x":9.5, "y":2.25}, + {"label":"P", "x":10.5, "y":2.25}, + {"label":"{", "x":11.5, "y":2.25}, + {"label":"}", "x":12.5, "y":2.25}, + {"label":"|", "x":13.5, "y":2.25, "w":1.5}, + {"label":"Delete", "x":15.25, "y":2.25}, + {"label":"End", "x":16.25, "y":2.25}, + {"label":"PgDn", "x":17.25, "y":2.25}, + + {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, + {"label":"A", "x":1.75, "y":3.25}, + {"label":"S", "x":2.75, "y":3.25}, + {"label":"D", "x":3.75, "y":3.25}, + {"label":"F", "x":4.75, "y":3.25}, + {"label":"G", "x":5.75, "y":3.25}, + {"label":"H", "x":6.75, "y":3.25}, + {"label":"J", "x":7.75, "y":3.25}, + {"label":"K", "x":8.75, "y":3.25}, + {"label":"L", "x":9.75, "y":3.25}, + {"label":":", "x":10.75, "y":3.25}, + {"label":"\"", "x":11.75, "y":3.25}, + {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, + + {"label":"Shift", "x":0, "y":4.25, "w":2.25}, + {"label":"Z", "x":2.25, "y":4.25}, + {"label":"X", "x":3.25, "y":4.25}, + {"label":"C", "x":4.25, "y":4.25}, + {"label":"V", "x":5.25, "y":4.25}, + {"label":"B", "x":6.25, "y":4.25}, + {"label":"N", "x":7.25, "y":4.25}, + {"label":"M", "x":8.25, "y":4.25}, + {"label":"<", "x":9.25, "y":4.25}, + {"label":">", "x":10.25, "y":4.25}, + {"label":"?", "x":11.25, "y":4.25}, + {"label":"Shift", "x":12.25, "y":4.25, "w":1.75}, + {"label":"Fn", "x":14, "y":4.25}, + {"label":"\u2191", "x":16.25, "y":4.25}, + + {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, + {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, + {"x":3.75, "y":5.25, "w":6.25}, + {"label":"Alt", "x":10, "y":5.25, "w":1.25}, + {"label":"Win", "x":11.25, "y":5.25, "w":1.25}, + {"label":"Menu", "x":12.5, "y":5.25, "w":1.25}, + {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, + {"label":"\u2190", "x":15.25, "y":5.25}, + {"label":"\u2193", "x":16.25, "y":5.25}, + {"label":"\u2192", "x":17.25, "y":5.25} + ] + }, + + "LAYOUT_tkl_iso": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":2, "y":0}, + {"label":"F2", "x":3, "y":0}, + {"label":"F3", "x":4, "y":0}, + {"label":"F4", "x":5, "y":0}, + {"label":"F5", "x":6.5, "y":0}, + {"label":"F6", "x":7.5, "y":0}, + {"label":"F7", "x":8.5, "y":0}, + {"label":"F8", "x":9.5, "y":0}, + {"label":"F9", "x":11, "y":0}, + {"label":"F10", "x":12, "y":0}, + {"label":"F11", "x":13, "y":0}, + {"label":"F12", "x":14, "y":0}, + {"label":"PrtSc", "x":15.25, "y":0}, + {"label":"Scroll Lock", "x":16.25, "y":0}, + {"label":"Pause", "x":17.25, "y":0}, + + {"label":"~", "x":0, "y":1.25}, + {"label":"!", "x":1, "y":1.25}, + {"label":"@", "x":2, "y":1.25}, + {"label":"#", "x":3, "y":1.25}, + {"label":"$", "x":4, "y":1.25}, + {"label":"%", "x":5, "y":1.25}, + {"label":"^", "x":6, "y":1.25}, + {"label":"&", "x":7, "y":1.25}, + {"label":"*", "x":8, "y":1.25}, + {"label":"(", "x":9, "y":1.25}, + {"label":")", "x":10, "y":1.25}, + {"label":"_", "x":11, "y":1.25}, + {"label":"+", "x":12, "y":1.25}, + {"label":"Bksp", "x":13, "y":1.25, "w":2}, + {"label":"Insert", "x":15.25, "y":1.25}, + {"label":"Home", "x":16.25, "y":1.25}, + {"label":"PgUp", "x":17.25, "y":1.25}, + + {"label":"Tab", "x":0, "y":2.25, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.25}, + {"label":"W", "x":2.5, "y":2.25}, + {"label":"E", "x":3.5, "y":2.25}, + {"label":"R", "x":4.5, "y":2.25}, + {"label":"T", "x":5.5, "y":2.25}, + {"label":"Y", "x":6.5, "y":2.25}, + {"label":"U", "x":7.5, "y":2.25}, + {"label":"I", "x":8.5, "y":2.25}, + {"label":"O", "x":9.5, "y":2.25}, + {"label":"P", "x":10.5, "y":2.25}, + {"label":"{", "x":11.5, "y":2.25}, + {"label":"}", "x":12.5, "y":2.25}, + {"label":"Delete", "x":15.25, "y":2.25}, + {"label":"End", "x":16.25, "y":2.25}, + {"label":"PgDn", "x":17.25, "y":2.25}, + + {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, + {"label":"A", "x":1.75, "y":3.25}, + {"label":"S", "x":2.75, "y":3.25}, + {"label":"D", "x":3.75, "y":3.25}, + {"label":"F", "x":4.75, "y":3.25}, + {"label":"G", "x":5.75, "y":3.25}, + {"label":"H", "x":6.75, "y":3.25}, + {"label":"J", "x":7.75, "y":3.25}, + {"label":"K", "x":8.75, "y":3.25}, + {"label":"L", "x":9.75, "y":3.25}, + {"label":":", "x":10.75, "y":3.25}, + {"label":"\"", "x":11.75, "y":3.25}, + {"label":"#", "x":12.75, "y":3.25}, + {"label":"Enter", "x": 13.75, "y":2.25, "w":1.25, "h":2}, + + {"label":"Shift", "x":0, "y":4.25, "w":1.25}, + {"x":1.25, "y":4.25}, + {"label":"Z", "x":2.25, "y":4.25}, + {"label":"X", "x":3.25, "y":4.25}, + {"label":"C", "x":4.25, "y":4.25}, + {"label":"V", "x":5.25, "y":4.25}, + {"label":"B", "x":6.25, "y":4.25}, + {"label":"N", "x":7.25, "y":4.25}, + {"label":"M", "x":8.25, "y":4.25}, + {"label":"<", "x":9.25, "y":4.25}, + {"label":">", "x":10.25, "y":4.25}, + {"label":"?", "x":11.25, "y":4.25}, + {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, + {"label":"\u2191", "x":16.25, "y":4.25}, + + {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, + {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, + {"x":3.75, "y":5.25, "w":6.25}, + {"label":"Alt", "x":10, "y":5.25, "w":1.25}, + {"label":"Win", "x":11.25, "y":5.25, "w":1.25}, + {"label":"Menu", "x":12.5, "y":5.25, "w":1.25}, + {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, + {"label":"\u2190", "x":15.25, "y":5.25}, + {"label":"\u2193", "x":16.25, "y":5.25}, + {"label":"\u2192", "x":17.25, "y":5.25} + ] + }, + + "LAYOUT_tkl_iso_split_bs_rshift": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":2, "y":0}, + {"label":"F2", "x":3, "y":0}, + {"label":"F3", "x":4, "y":0}, + {"label":"F4", "x":5, "y":0}, + {"label":"F5", "x":6.5, "y":0}, + {"label":"F6", "x":7.5, "y":0}, + {"label":"F7", "x":8.5, "y":0}, + {"label":"F8", "x":9.5, "y":0}, + {"label":"F9", "x":11, "y":0}, + {"label":"F10", "x":12, "y":0}, + {"label":"F11", "x":13, "y":0}, + {"label":"F12", "x":14, "y":0}, + {"label":"PrtSc", "x":15.25, "y":0}, + {"label":"Scroll Lock", "x":16.25, "y":0}, + {"label":"Pause", "x":17.25, "y":0}, + + {"label":"~", "x":0, "y":1.25}, + {"label":"!", "x":1, "y":1.25}, + {"label":"@", "x":2, "y":1.25}, + {"label":"#", "x":3, "y":1.25}, + {"label":"$", "x":4, "y":1.25}, + {"label":"%", "x":5, "y":1.25}, + {"label":"^", "x":6, "y":1.25}, + {"label":"&", "x":7, "y":1.25}, + {"label":"*", "x":8, "y":1.25}, + {"label":"(", "x":9, "y":1.25}, + {"label":")", "x":10, "y":1.25}, + {"label":"_", "x":11, "y":1.25}, + {"label":"+", "x":12, "y":1.25}, + {"label":"Bksp", "x":13, "y":1.25}, + {"label":"Bksp", "x":14, "y":1.25}, + {"label":"Insert", "x":15.25, "y":1.25}, + {"label":"Home", "x":16.25, "y":1.25}, + {"label":"PgUp", "x":17.25, "y":1.25}, + + {"label":"Tab", "x":0, "y":2.25, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.25}, + {"label":"W", "x":2.5, "y":2.25}, + {"label":"E", "x":3.5, "y":2.25}, + {"label":"R", "x":4.5, "y":2.25}, + {"label":"T", "x":5.5, "y":2.25}, + {"label":"Y", "x":6.5, "y":2.25}, + {"label":"U", "x":7.5, "y":2.25}, + {"label":"I", "x":8.5, "y":2.25}, + {"label":"O", "x":9.5, "y":2.25}, + {"label":"P", "x":10.5, "y":2.25}, + {"label":"{", "x":11.5, "y":2.25}, + {"label":"}", "x":12.5, "y":2.25}, + {"label":"Delete", "x":15.25, "y":2.25}, + {"label":"End", "x":16.25, "y":2.25}, + {"label":"PgDn", "x":17.25, "y":2.25}, + + {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, + {"label":"A", "x":1.75, "y":3.25}, + {"label":"S", "x":2.75, "y":3.25}, + {"label":"D", "x":3.75, "y":3.25}, + {"label":"F", "x":4.75, "y":3.25}, + {"label":"G", "x":5.75, "y":3.25}, + {"label":"H", "x":6.75, "y":3.25}, + {"label":"J", "x":7.75, "y":3.25}, + {"label":"K", "x":8.75, "y":3.25}, + {"label":"L", "x":9.75, "y":3.25}, + {"label":":", "x":10.75, "y":3.25}, + {"label":"\"", "x":11.75, "y":3.25}, + {"label":"#", "x":12.75, "y":3.25}, + {"label":"Enter", "x": 13.75, "y":2.25, "w":1.25, "h":2}, + + {"label":"Shift", "x":0, "y":4.25, "w":1.25}, + {"x":1.25, "y":4.25}, + {"label":"Z", "x":2.25, "y":4.25}, + {"label":"X", "x":3.25, "y":4.25}, + {"label":"C", "x":4.25, "y":4.25}, + {"label":"V", "x":5.25, "y":4.25}, + {"label":"B", "x":6.25, "y":4.25}, + {"label":"N", "x":7.25, "y":4.25}, + {"label":"M", "x":8.25, "y":4.25}, + {"label":"<", "x":9.25, "y":4.25}, + {"label":">", "x":10.25, "y":4.25}, + {"label":"?", "x":11.25, "y":4.25}, + {"label":"Shift", "x":12.25, "y":4.25, "w":1.75}, + {"label":"Fn", "x":14, "y":4.25}, + {"label":"\u2191", "x":16.25, "y":4.25}, + + {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, + {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, + {"x":3.75, "y":5.25, "w":6.25}, + {"label":"Alt", "x":10, "y":5.25, "w":1.25}, + {"label":"Win", "x":11.25, "y":5.25, "w":1.25}, + {"label":"Menu", "x":12.5, "y":5.25, "w":1.25}, + {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, + {"label":"\u2190", "x":15.25, "y":5.25}, + {"label":"\u2193", "x":16.25, "y":5.25}, + {"label":"\u2192", "x":17.25, "y":5.25} + ] + } + } +} diff --git a/keyboards/linworks/fave87/keymaps/default/keymap.c b/keyboards/linworks/fave87/keymaps/default/keymap.c new file mode 100644 index 000000000000..fc56046e857a --- /dev/null +++ b/keyboards/linworks/fave87/keymaps/default/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2021 Moritz Plattner + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_TRNS, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [1] = LAYOUT_all( + RGB_TOG, RGB_VAD, RGB_VAI, BL_DEC, BL_INC, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_RMOD, RGB_MOD, RGB_SPI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT), +}; \ No newline at end of file diff --git a/keyboards/linworks/fave87/keymaps/via/keymap.c b/keyboards/linworks/fave87/keymaps/via/keymap.c new file mode 100644 index 000000000000..fc56046e857a --- /dev/null +++ b/keyboards/linworks/fave87/keymaps/via/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2021 Moritz Plattner + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_TRNS, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [1] = LAYOUT_all( + RGB_TOG, RGB_VAD, RGB_VAI, BL_DEC, BL_INC, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_RMOD, RGB_MOD, RGB_SPI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT), +}; \ No newline at end of file diff --git a/keyboards/linworks/fave87/keymaps/via/rules.mk b/keyboards/linworks/fave87/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/linworks/fave87/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/linworks/fave87/readme.md b/keyboards/linworks/fave87/readme.md new file mode 100644 index 000000000000..b673c312acbc --- /dev/null +++ b/keyboards/linworks/fave87/readme.md @@ -0,0 +1,18 @@ +# Fave 87 + + +The Fave 87 is the default PCB used by linworks/LX3 for TKL-boards. This is the latest pcb iteration, featuring QMK, VIA, single-color 3 mm LED backlight and RGB underglow. + +* Keyboard maintainer: [ebastler](https://github.com/ebastler) +* Hardware supported: Fave 87 PCBs (the latest rev designed by ebastler - can be recognized by a name badge + "`e`" logo on the bottom) +* Hardware availability: Groupbuys. Check the ongoing ones on [the Linworks Discord](https://discord.gg/UC8gTdVnsj) + +Make example for this keyboard (after setting up your build environment): + + make linworks/fave87:default + +Flash example for this keyboard: + + make linworks/fave87:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/linworks/fave87/rules.mk b/keyboards/linworks/fave87/rules.mk new file mode 100644 index 000000000000..e8cf6fbb1a34 --- /dev/null +++ b/keyboards/linworks/fave87/rules.mk @@ -0,0 +1,20 @@ +# 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 +# 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 = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow + +LAYOUTS = tkl_ansi tkl_iso diff --git a/keyboards/linworks/whale75/info.json b/keyboards/linworks/whale75/info.json index 7518afb9db98..07679ca1e504 100644 --- a/keyboards/linworks/whale75/info.json +++ b/keyboards/linworks/whale75/info.json @@ -1,364 +1,454 @@ { - "keyboard_name": "Lx3 Whale 75", - "maintainer": "ebastler", - "width": 16.25, - "height": 6.5, - "layouts": { - "LAYOUT_ansi": { - "layout": [ - { "x": 0, "y": 0 }, - { "x": 2, "y": 0 }, - { "x": 3, "y": 0 }, - { "x": 4, "y": 0 }, - { "x": 5, "y": 0 }, - { "x": 6.5, "y": 0 }, - { "x": 7.5, "y": 0 }, - { "x": 8.5, "y": 0 }, - { "x": 9.5, "y": 0 }, - { "x": 11, "y": 0 }, - { "x": 12, "y": 0 }, - { "x": 13, "y": 0 }, - { "x": 14, "y": 0 }, - { "x": 15.25, "y": 0 }, + "keyboard_name": "Lx3 Whale 75", + "maintainer": "ebastler", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"x":0, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.5, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15.25, "y":0}, - { "x": 0, "y": 1.25 }, - { "x": 1, "y": 1.25 }, - { "x": 2, "y": 1.25 }, - { "x": 3, "y": 1.25 }, - { "x": 4, "y": 1.25 }, - { "x": 5, "y": 1.25 }, - { "x": 6, "y": 1.25 }, - { "x": 7, "y": 1.25 }, - { "x": 8, "y": 1.25 }, - { "x": 9, "y": 1.25 }, - { "x": 10, "y": 1.25 }, - { "x": 11, "y": 1.25 }, - { "x": 12, "y": 1.25 }, - { "x": 13, "y": 1.25, "w":2}, - { "x": 15.25, "y": 1.25 }, + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2, "y":1.25}, + {"x":3, "y":1.25}, + {"x":4, "y":1.25}, + {"x":5, "y":1.25}, + {"x":6, "y":1.25}, + {"x":7, "y":1.25}, + {"x":8, "y":1.25}, + {"x":9, "y":1.25}, + {"x":10, "y":1.25}, + {"x":11, "y":1.25}, + {"x":12, "y":1.25}, + {"x":13, "y":1.25}, + {"x":14, "y":1.25}, + {"x":15.25, "y":1.25}, - { "x": 0, "y": 2.25, "w": 1.5 }, - { "x": 1.5, "y": 2.25 }, - { "x": 2.5, "y": 2.25 }, - { "x": 3.5, "y": 2.25 }, - { "x": 4.5, "y": 2.25 }, - { "x": 5.5, "y": 2.25 }, - { "x": 6.5, "y": 2.25 }, - { "x": 7.5, "y": 2.25 }, - { "x": 8.5, "y": 2.25 }, - { "x": 9.5, "y": 2.25 }, - { "x": 10.5, "y": 2.25 }, - { "x": 11.5, "y": 2.25 }, - { "x": 12.5, "y": 2.25 }, - { "x": 13.5, "y": 2.25, "w":1.5 }, - { "x": 15.25, "y": 2.25 }, + {"x":0, "y":2.25, "w":1.5}, + {"x":1.5, "y":2.25}, + {"x":2.5, "y":2.25}, + {"x":3.5, "y":2.25}, + {"x":4.5, "y":2.25}, + {"x":5.5, "y":2.25}, + {"x":6.5, "y":2.25}, + {"x":7.5, "y":2.25}, + {"x":8.5, "y":2.25}, + {"x":9.5, "y":2.25}, + {"x":10.5, "y":2.25}, + {"x":11.5, "y":2.25}, + {"x":12.5, "y":2.25}, + {"x":13.5, "y":2.25, "w":1.5}, + {"x":15.25, "y":2.25}, - { "x": 0, "y": 3.25, "w": 1.75 }, - { "x": 1.75, "y": 3.25 }, - { "x": 2.75, "y": 3.25 }, - { "x": 3.75, "y": 3.25 }, - { "x": 4.75, "y": 3.25 }, - { "x": 5.75, "y": 3.25 }, - { "x": 6.75, "y": 3.25 }, - { "x": 7.75, "y": 3.25 }, - { "x": 8.75, "y": 3.25 }, - { "x": 9.75, "y": 3.25 }, - { "x": 10.75, "y": 3.25 }, - { "x": 11.75, "y": 3.25 }, - { "x": 12.75, "y": 3.25, "w":2.25 }, - { "x": 15.25, "y": 3.25 }, + {"x":0, "y":3.25, "w":1.75}, + {"x":1.75, "y":3.25}, + {"x":2.75, "y":3.25}, + {"x":3.75, "y":3.25}, + {"x":4.75, "y":3.25}, + {"x":5.75, "y":3.25}, + {"x":6.75, "y":3.25}, + {"x":7.75, "y":3.25}, + {"x":8.75, "y":3.25}, + {"x":9.75, "y":3.25}, + {"x":10.75, "y":3.25}, + {"x":11.75, "y":3.25}, + {"x":12.75, "y":3.25}, + {"x":13.75, "y":3.25, "w":1.25}, + {"x":15.25, "y":3.25}, - { "x": 0, "y": 4.25, "w": 2.25 }, - { "x": 2.25, "y": 4.25 }, - { "x": 3.25, "y": 4.25 }, - { "x": 4.25, "y": 4.25 }, - { "x": 5.25, "y": 4.25 }, - { "x": 6.25, "y": 4.25 }, - { "x": 7.25, "y": 4.25 }, - { "x": 8.25, "y": 4.25 }, - { "x": 9.25, "y": 4.25 }, - { "x": 10.25, "y": 4.25 }, - { "x": 11.25, "y": 4.25 }, - { "x": 12.25, "y": 4.25, "w":1.75 }, - { "x": 14.25, "y": 4.5 }, + {"x":0, "y":4.25, "w":1.25}, + {"x":1.25, "y":4.25}, + {"x":2.25, "y":4.25}, + {"x":3.25, "y":4.25}, + {"x":4.25, "y":4.25}, + {"x":5.25, "y":4.25}, + {"x":6.25, "y":4.25}, + {"x":7.25, "y":4.25}, + {"x":8.25, "y":4.25}, + {"x":9.25, "y":4.25}, + {"x":10.25, "y":4.25}, + {"x":11.25, "y":4.25}, + {"x":12.25, "y":4.25, "w":1.75}, + {"x":14.25, "y":4.5}, - { "x": 0, "y": 5.25, "w": 1.25}, - { "x": 1.25, "y": 5.25, "w": 1.25}, - { "x": 2.5, "y": 5.25, "w": 1.25}, - { "x": 3.75, "y": 5.25, "w": 6.25}, - { "x": 10, "y": 5.25, "w": 1.5}, - { "x": 11.5, "y": 5.25, "w": 1.5}, - { "x": 13.25, "y": 5.25, "w": 1}, - { "x": 14.25, "y": 5.25, "w": 1}, - { "x": 15.25, "y": 5.25, "w": 1} - ] - }, - "LAYOUT_ansi_wkl": { - "layout": [ - { "x": 0, "y": 0 }, - { "x": 2, "y": 0 }, - { "x": 3, "y": 0 }, - { "x": 4, "y": 0 }, - { "x": 5, "y": 0 }, - { "x": 6.5, "y": 0 }, - { "x": 7.5, "y": 0 }, - { "x": 8.5, "y": 0 }, - { "x": 9.5, "y": 0 }, - { "x": 11, "y": 0 }, - { "x": 12, "y": 0 }, - { "x": 13, "y": 0 }, - { "x": 14, "y": 0 }, - { "x": 15.25, "y": 0 }, - - { "x": 0, "y": 1.25 }, - { "x": 1, "y": 1.25 }, - { "x": 2, "y": 1.25 }, - { "x": 3, "y": 1.25 }, - { "x": 4, "y": 1.25 }, - { "x": 5, "y": 1.25 }, - { "x": 6, "y": 1.25 }, - { "x": 7, "y": 1.25 }, - { "x": 8, "y": 1.25 }, - { "x": 9, "y": 1.25 }, - { "x": 10, "y": 1.25 }, - { "x": 11, "y": 1.25 }, - { "x": 12, "y": 1.25 }, - { "x": 13, "y": 1.25, "w":2}, - { "x": 15.25, "y": 1.25 }, - - { "x": 0, "y": 2.25, "w": 1.5 }, - { "x": 1.5, "y": 2.25 }, - { "x": 2.5, "y": 2.25 }, - { "x": 3.5, "y": 2.25 }, - { "x": 4.5, "y": 2.25 }, - { "x": 5.5, "y": 2.25 }, - { "x": 6.5, "y": 2.25 }, - { "x": 7.5, "y": 2.25 }, - { "x": 8.5, "y": 2.25 }, - { "x": 9.5, "y": 2.25 }, - { "x": 10.5, "y": 2.25 }, - { "x": 11.5, "y": 2.25 }, - { "x": 12.5, "y": 2.25 }, - { "x": 13.5, "y": 2.25, "w":1.5 }, - { "x": 15.25, "y": 2.25 }, - - { "x": 0, "y": 3.25, "w": 1.75 }, - { "x": 1.75, "y": 3.25 }, - { "x": 2.75, "y": 3.25 }, - { "x": 3.75, "y": 3.25 }, - { "x": 4.75, "y": 3.25 }, - { "x": 5.75, "y": 3.25 }, - { "x": 6.75, "y": 3.25 }, - { "x": 7.75, "y": 3.25 }, - { "x": 8.75, "y": 3.25 }, - { "x": 9.75, "y": 3.25 }, - { "x": 10.75, "y": 3.25 }, - { "x": 11.75, "y": 3.25 }, - { "x": 12.75, "y": 3.25, "w":2.25 }, - { "x": 15.25, "y": 3.25 }, - - { "x": 0, "y": 4.25, "w": 2.25 }, - { "x": 2.25, "y": 4.25 }, - { "x": 3.25, "y": 4.25 }, - { "x": 4.25, "y": 4.25 }, - { "x": 5.25, "y": 4.25 }, - { "x": 6.25, "y": 4.25 }, - { "x": 7.25, "y": 4.25 }, - { "x": 8.25, "y": 4.25 }, - { "x": 9.25, "y": 4.25 }, - { "x": 10.25, "y": 4.25 }, - { "x": 11.25, "y": 4.25 }, - { "x": 12.25, "y": 4.25, "w":1.75 }, - { "x": 14.25, "y": 4.5 }, - - { "x": 0, "y": 5.25, "w": 1.5}, - { "x": 1.5, "y": 5.25, "w": 1.5}, - { "x": 3, "y": 5.25, "w": 7}, - { "x": 10, "y": 5.25, "w": 1.5}, - { "x": 11.5, "y": 5.25, "w": 1.5}, - { "x": 13.25, "y": 5.25, "w": 1}, - { "x": 14.25, "y": 5.25, "w": 1}, - { "x": 15.25, "y": 5.25, "w": 1} - ] - }, - "LAYOUT_iso": { - "layout": [ - { "x": 0, "y": 0 }, - { "x": 2, "y": 0 }, - { "x": 3, "y": 0 }, - { "x": 4, "y": 0 }, - { "x": 5, "y": 0 }, - { "x": 6.5, "y": 0 }, - { "x": 7.5, "y": 0 }, - { "x": 8.5, "y": 0 }, - { "x": 9.5, "y": 0 }, - { "x": 11, "y": 0 }, - { "x": 12, "y": 0 }, - { "x": 13, "y": 0 }, - { "x": 14, "y": 0 }, - { "x": 15.25, "y": 0 }, - - { "x": 0, "y": 1.25 }, - { "x": 1, "y": 1.25 }, - { "x": 2, "y": 1.25 }, - { "x": 3, "y": 1.25 }, - { "x": 4, "y": 1.25 }, - { "x": 5, "y": 1.25 }, - { "x": 6, "y": 1.25 }, - { "x": 7, "y": 1.25 }, - { "x": 8, "y": 1.25 }, - { "x": 9, "y": 1.25 }, - { "x": 10, "y": 1.25 }, - { "x": 11, "y": 1.25 }, - { "x": 12, "y": 1.25 }, - { "x": 13, "y": 1.25, "w":2}, - { "x": 15.25, "y": 1.25 }, - - { "x": 0, "y": 2.25, "w": 1.5 }, - { "x": 1.5, "y": 2.25 }, - { "x": 2.5, "y": 2.25 }, - { "x": 3.5, "y": 2.25 }, - { "x": 4.5, "y": 2.25 }, - { "x": 5.5, "y": 2.25 }, - { "x": 6.5, "y": 2.25 }, - { "x": 7.5, "y": 2.25 }, - { "x": 8.5, "y": 2.25 }, - { "x": 9.5, "y": 2.25 }, - { "x": 10.5, "y": 2.25 }, - { "x": 11.5, "y": 2.25 }, - { "x": 12.5, "y": 2.25 }, - { "x": 13.75, "y":2.25, "w":1.25, "h":2 }, - { "x": 15.25, "y": 2.25 }, - - { "x": 0, "y": 3.25, "w": 1.75 }, - { "x": 1.75, "y": 3.25 }, - { "x": 2.75, "y": 3.25 }, - { "x": 3.75, "y": 3.25 }, - { "x": 4.75, "y": 3.25 }, - { "x": 5.75, "y": 3.25 }, - { "x": 6.75, "y": 3.25 }, - { "x": 7.75, "y": 3.25 }, - { "x": 8.75, "y": 3.25 }, - { "x": 9.75, "y": 3.25 }, - { "x": 10.75, "y": 3.25 }, - { "x": 11.75, "y": 3.25 }, - { "x": 12.75, "y": 3.25 }, - { "x": 15.25, "y": 3.25 }, - - { "x": 0, "y": 4.25, "w": 1.25 }, - { "x": 1.25, "y": 4.25 }, - { "x": 2.25, "y": 4.25 }, - { "x": 3.25, "y": 4.25 }, - { "x": 4.25, "y": 4.25 }, - { "x": 5.25, "y": 4.25 }, - { "x": 6.25, "y": 4.25 }, - { "x": 7.25, "y": 4.25 }, - { "x": 8.25, "y": 4.25 }, - { "x": 9.25, "y": 4.25 }, - { "x": 10.25, "y": 4.25 }, - { "x": 11.25, "y": 4.25 }, - { "x": 12.25, "y": 4.25, "w":1.75 }, - { "x": 14.25, "y": 4.5 }, - - { "x": 0, "y": 5.25, "w": 1.25}, - { "x": 1.25, "y": 5.25, "w": 1.25}, - { "x": 2.5, "y": 5.25, "w": 1.25}, - { "x": 3.75, "y": 5.25, "w": 6.25}, - { "x": 10, "y": 5.25, "w": 1.5}, - { "x": 11.5, "y": 5.25, "w": 1.5}, - { "x": 13.25, "y": 5.25, "w": 1}, - { "x": 14.25, "y": 5.25, "w": 1}, - { "x": 15.25, "y": 5.25, "w": 1} - ] - }, - "LAYOUT_iso_wkl": { - "layout": [ - { "x": 0, "y": 0 }, - { "x": 2, "y": 0 }, - { "x": 3, "y": 0 }, - { "x": 4, "y": 0 }, - { "x": 5, "y": 0 }, - { "x": 6.5, "y": 0 }, - { "x": 7.5, "y": 0 }, - { "x": 8.5, "y": 0 }, - { "x": 9.5, "y": 0 }, - { "x": 11, "y": 0 }, - { "x": 12, "y": 0 }, - { "x": 13, "y": 0 }, - { "x": 14, "y": 0 }, - { "x": 15.25, "y": 0 }, - - { "x": 0, "y": 1.25 }, - { "x": 1, "y": 1.25 }, - { "x": 2, "y": 1.25 }, - { "x": 3, "y": 1.25 }, - { "x": 4, "y": 1.25 }, - { "x": 5, "y": 1.25 }, - { "x": 6, "y": 1.25 }, - { "x": 7, "y": 1.25 }, - { "x": 8, "y": 1.25 }, - { "x": 9, "y": 1.25 }, - { "x": 10, "y": 1.25 }, - { "x": 11, "y": 1.25 }, - { "x": 12, "y": 1.25 }, - { "x": 13, "y": 1.25, "w":2}, - { "x": 15.25, "y": 1.25 }, - - { "x": 0, "y": 2.25, "w": 1.5 }, - { "x": 1.5, "y": 2.25 }, - { "x": 2.5, "y": 2.25 }, - { "x": 3.5, "y": 2.25 }, - { "x": 4.5, "y": 2.25 }, - { "x": 5.5, "y": 2.25 }, - { "x": 6.5, "y": 2.25 }, - { "x": 7.5, "y": 2.25 }, - { "x": 8.5, "y": 2.25 }, - { "x": 9.5, "y": 2.25 }, - { "x": 10.5, "y": 2.25 }, - { "x": 11.5, "y": 2.25 }, - { "x": 12.5, "y": 2.25 }, - { "x": 13.75, "y":2.25, "w":1.25, "h":2 }, - { "x": 15.25, "y": 2.25 }, - - { "x": 0, "y": 3.25, "w": 1.75 }, - { "x": 1.75, "y": 3.25 }, - { "x": 2.75, "y": 3.25 }, - { "x": 3.75, "y": 3.25 }, - { "x": 4.75, "y": 3.25 }, - { "x": 5.75, "y": 3.25 }, - { "x": 6.75, "y": 3.25 }, - { "x": 7.75, "y": 3.25 }, - { "x": 8.75, "y": 3.25 }, - { "x": 9.75, "y": 3.25 }, - { "x": 10.75, "y": 3.25 }, - { "x": 11.75, "y": 3.25 }, - { "x": 12.75, "y": 3.25 }, - { "x": 15.25, "y": 3.25 }, - - { "x": 0, "y": 4.25, "w": 1.25 }, - { "x": 1.25, "y": 4.25 }, - { "x": 2.25, "y": 4.25 }, - { "x": 3.25, "y": 4.25 }, - { "x": 4.25, "y": 4.25 }, - { "x": 5.25, "y": 4.25 }, - { "x": 6.25, "y": 4.25 }, - { "x": 7.25, "y": 4.25 }, - { "x": 8.25, "y": 4.25 }, - { "x": 9.25, "y": 4.25 }, - { "x": 10.25, "y": 4.25 }, - { "x": 11.25, "y": 4.25 }, - { "x": 12.25, "y": 4.25, "w":1.75 }, - { "x": 14.25, "y": 4.5 }, - - { "x": 0, "y": 5.25, "w": 1.5}, - { "x": 1.5, "y": 5.25, "w": 1.5}, - { "x": 3, "y": 5.25, "w": 7}, - { "x": 10, "y": 5.25, "w": 1.5}, - { "x": 11.5, "y": 5.25, "w": 1.5}, - { "x": 13.25, "y": 5.25, "w": 1}, - { "x": 14.25, "y": 5.25, "w": 1}, - { "x": 15.25, "y": 5.25, "w": 1} - ] + {"x":0, "y":5.25, "w":1.25}, + {"x":1.25, "y":5.25, "w":1.25}, + {"x":2.5, "y":5.25, "w":1.25}, + {"x":3.75, "y":5.25, "w":6.25}, + {"x":10, "y":5.25, "w":1.5}, + {"x":11.5, "y":5.25, "w":1.5}, + {"x":13.25, "y":5.5}, + {"x":14.25, "y":5.5}, + {"x":15.25, "y":5.5} + ] + }, + "LAYOUT_ansi": { + "layout": [ + {"x":0, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.5, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15.25, "y":0}, + + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2, "y":1.25}, + {"x":3, "y":1.25}, + {"x":4, "y":1.25}, + {"x":5, "y":1.25}, + {"x":6, "y":1.25}, + {"x":7, "y":1.25}, + {"x":8, "y":1.25}, + {"x":9, "y":1.25}, + {"x":10, "y":1.25}, + {"x":11, "y":1.25}, + {"x":12, "y":1.25}, + {"x":13, "y":1.25, "w":2}, + {"x":15.25, "y":1.25}, + + {"x":0, "y":2.25, "w":1.5}, + {"x":1.5, "y":2.25}, + {"x":2.5, "y":2.25}, + {"x":3.5, "y":2.25}, + {"x":4.5, "y":2.25}, + {"x":5.5, "y":2.25}, + {"x":6.5, "y":2.25}, + {"x":7.5, "y":2.25}, + {"x":8.5, "y":2.25}, + {"x":9.5, "y":2.25}, + {"x":10.5, "y":2.25}, + {"x":11.5, "y":2.25}, + {"x":12.5, "y":2.25}, + {"x":13.5, "y":2.25, "w":1.5}, + {"x":15.25, "y":2.25}, + + {"x":0, "y":3.25, "w":1.75}, + {"x":1.75, "y":3.25}, + {"x":2.75, "y":3.25}, + {"x":3.75, "y":3.25}, + {"x":4.75, "y":3.25}, + {"x":5.75, "y":3.25}, + {"x":6.75, "y":3.25}, + {"x":7.75, "y":3.25}, + {"x":8.75, "y":3.25}, + {"x":9.75, "y":3.25}, + {"x":10.75, "y":3.25}, + {"x":11.75, "y":3.25}, + {"x":12.75, "y":3.25, "w":2.25}, + {"x":15.25, "y":3.25}, + + {"x":0, "y":4.25, "w":2.25}, + {"x":2.25, "y":4.25}, + {"x":3.25, "y":4.25}, + {"x":4.25, "y":4.25}, + {"x":5.25, "y":4.25}, + {"x":6.25, "y":4.25}, + {"x":7.25, "y":4.25}, + {"x":8.25, "y":4.25}, + {"x":9.25, "y":4.25}, + {"x":10.25, "y":4.25}, + {"x":11.25, "y":4.25}, + {"x":12.25, "y":4.25, "w":1.75}, + {"x":14.25, "y":4.5}, + + {"x":0, "y":5.25, "w":1.25}, + {"x":1.25, "y":5.25, "w":1.25}, + {"x":2.5, "y":5.25, "w":1.25}, + {"x":3.75, "y":5.25, "w":6.25}, + {"x":10, "y":5.25, "w":1.5}, + {"x":11.5, "y":5.25, "w":1.5}, + {"x":13.25, "y":5.5}, + {"x":14.25, "y":5.5}, + {"x":15.25, "y":5.5} + ] + }, + "LAYOUT_ansi_wkl": { + "layout": [ + {"x":0, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.5, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15.25, "y":0}, + + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2, "y":1.25}, + {"x":3, "y":1.25}, + {"x":4, "y":1.25}, + {"x":5, "y":1.25}, + {"x":6, "y":1.25}, + {"x":7, "y":1.25}, + {"x":8, "y":1.25}, + {"x":9, "y":1.25}, + {"x":10, "y":1.25}, + {"x":11, "y":1.25}, + {"x":12, "y":1.25}, + {"x":13, "y":1.25, "w":2}, + {"x":15.25, "y":1.25}, + + {"x":0, "y":2.25, "w":1.5}, + {"x":1.5, "y":2.25}, + {"x":2.5, "y":2.25}, + {"x":3.5, "y":2.25}, + {"x":4.5, "y":2.25}, + {"x":5.5, "y":2.25}, + {"x":6.5, "y":2.25}, + {"x":7.5, "y":2.25}, + {"x":8.5, "y":2.25}, + {"x":9.5, "y":2.25}, + {"x":10.5, "y":2.25}, + {"x":11.5, "y":2.25}, + {"x":12.5, "y":2.25}, + {"x":13.5, "y":2.25, "w":1.5}, + {"x":15.25, "y":2.25}, + + {"x":0, "y":3.25, "w":1.75}, + {"x":1.75, "y":3.25}, + {"x":2.75, "y":3.25}, + {"x":3.75, "y":3.25}, + {"x":4.75, "y":3.25}, + {"x":5.75, "y":3.25}, + {"x":6.75, "y":3.25}, + {"x":7.75, "y":3.25}, + {"x":8.75, "y":3.25}, + {"x":9.75, "y":3.25}, + {"x":10.75, "y":3.25}, + {"x":11.75, "y":3.25}, + {"x":12.75, "y":3.25, "w":2.25}, + {"x":15.25, "y":3.25}, + + {"x":0, "y":4.25, "w":2.25}, + {"x":2.25, "y":4.25}, + {"x":3.25, "y":4.25}, + {"x":4.25, "y":4.25}, + {"x":5.25, "y":4.25}, + {"x":6.25, "y":4.25}, + {"x":7.25, "y":4.25}, + {"x":8.25, "y":4.25}, + {"x":9.25, "y":4.25}, + {"x":10.25, "y":4.25}, + {"x":11.25, "y":4.25}, + {"x":12.25, "y":4.25, "w":1.75}, + {"x":14.25, "y":4.5}, + + {"x":0, "y":5.25, "w":1.5}, + {"x":1.5, "y":5.25, "w":1.5}, + {"x":3, "y":5.25, "w":7}, + {"x":10, "y":5.25, "w":1.5}, + {"x":11.5, "y":5.25, "w":1.5}, + {"x":13.25, "y":5.5}, + {"x":14.25, "y":5.5}, + {"x":15.25, "y":5.5} + ] + }, + "LAYOUT_iso": { + "layout": [ + {"x":0, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.5, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15.25, "y":0}, + + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2, "y":1.25}, + {"x":3, "y":1.25}, + {"x":4, "y":1.25}, + {"x":5, "y":1.25}, + {"x":6, "y":1.25}, + {"x":7, "y":1.25}, + {"x":8, "y":1.25}, + {"x":9, "y":1.25}, + {"x":10, "y":1.25}, + {"x":11, "y":1.25}, + {"x":12, "y":1.25}, + {"x":13, "y":1.25, "w":2}, + {"x":15.25, "y":1.25}, + + {"x":0, "y":2.25, "w":1.5}, + {"x":1.5, "y":2.25}, + {"x":2.5, "y":2.25}, + {"x":3.5, "y":2.25}, + {"x":4.5, "y":2.25}, + {"x":5.5, "y":2.25}, + {"x":6.5, "y":2.25}, + {"x":7.5, "y":2.25}, + {"x":8.5, "y":2.25}, + {"x":9.5, "y":2.25}, + {"x":10.5, "y":2.25}, + {"x":11.5, "y":2.25}, + {"x":12.5, "y":2.25}, + {"x":15.25, "y":2.25}, + + {"x":0, "y":3.25, "w":1.75}, + {"x":1.75, "y":3.25}, + {"x":2.75, "y":3.25}, + {"x":3.75, "y":3.25}, + {"x":4.75, "y":3.25}, + {"x":5.75, "y":3.25}, + {"x":6.75, "y":3.25}, + {"x":7.75, "y":3.25}, + {"x":8.75, "y":3.25}, + {"x":9.75, "y":3.25}, + {"x":10.75, "y":3.25}, + {"x":11.75, "y":3.25}, + {"x":12.75, "y":3.25}, + {"x":13.75, "y":2.25, "w":1.25, "h":2}, + {"x":15.25, "y":3.25}, + + {"x":0, "y":4.25, "w":1.25}, + {"x":1.25, "y":4.25}, + {"x":2.25, "y":4.25}, + {"x":3.25, "y":4.25}, + {"x":4.25, "y":4.25}, + {"x":5.25, "y":4.25}, + {"x":6.25, "y":4.25}, + {"x":7.25, "y":4.25}, + {"x":8.25, "y":4.25}, + {"x":9.25, "y":4.25}, + {"x":10.25, "y":4.25}, + {"x":11.25, "y":4.25}, + {"x":12.25, "y":4.25, "w":1.75}, + {"x":14.25, "y":4.5}, + + {"x":0, "y":5.25, "w":1.25}, + {"x":1.25, "y":5.25, "w":1.25}, + {"x":2.5, "y":5.25, "w":1.25}, + {"x":3.75, "y":5.25, "w":6.25}, + {"x":10, "y":5.25, "w":1.5}, + {"x":11.5, "y":5.25, "w":1.5}, + {"x":13.25, "y":5.5}, + {"x":14.25, "y":5.5}, + {"x":15.25, "y":5.5} + ] + }, + "LAYOUT_iso_wkl": { + "layout": [ + {"x":0, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.5, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15.25, "y":0}, + + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2, "y":1.25}, + {"x":3, "y":1.25}, + {"x":4, "y":1.25}, + {"x":5, "y":1.25}, + {"x":6, "y":1.25}, + {"x":7, "y":1.25}, + {"x":8, "y":1.25}, + {"x":9, "y":1.25}, + {"x":10, "y":1.25}, + {"x":11, "y":1.25}, + {"x":12, "y":1.25}, + {"x":13, "y":1.25, "w":2}, + {"x":15.25, "y":1.25}, + + {"x":0, "y":2.25, "w":1.5}, + {"x":1.5, "y":2.25}, + {"x":2.5, "y":2.25}, + {"x":3.5, "y":2.25}, + {"x":4.5, "y":2.25}, + {"x":5.5, "y":2.25}, + {"x":6.5, "y":2.25}, + {"x":7.5, "y":2.25}, + {"x":8.5, "y":2.25}, + {"x":9.5, "y":2.25}, + {"x":10.5, "y":2.25}, + {"x":11.5, "y":2.25}, + {"x":12.5, "y":2.25}, + {"x":15.25, "y":2.25}, + + {"x":0, "y":3.25, "w":1.75}, + {"x":1.75, "y":3.25}, + {"x":2.75, "y":3.25}, + {"x":3.75, "y":3.25}, + {"x":4.75, "y":3.25}, + {"x":5.75, "y":3.25}, + {"x":6.75, "y":3.25}, + {"x":7.75, "y":3.25}, + {"x":8.75, "y":3.25}, + {"x":9.75, "y":3.25}, + {"x":10.75, "y":3.25}, + {"x":11.75, "y":3.25}, + {"x":12.75, "y":3.25}, + {"x":13.75, "y":2.25, "w":1.25, "h":2}, + {"x":15.25, "y":3.25}, + + {"x":0, "y":4.25, "w":1.25}, + {"x":1.25, "y":4.25}, + {"x":2.25, "y":4.25}, + {"x":3.25, "y":4.25}, + {"x":4.25, "y":4.25}, + {"x":5.25, "y":4.25}, + {"x":6.25, "y":4.25}, + {"x":7.25, "y":4.25}, + {"x":8.25, "y":4.25}, + {"x":9.25, "y":4.25}, + {"x":10.25, "y":4.25}, + {"x":11.25, "y":4.25}, + {"x":12.25, "y":4.25, "w":1.75}, + {"x":14.25, "y":4.5}, + + {"x":0, "y":5.25, "w":1.5}, + {"x":1.5, "y":5.25, "w":1.5}, + {"x":3, "y":5.25, "w":7}, + {"x":10, "y":5.25, "w":1.5}, + {"x":11.5, "y":5.25, "w":1.5}, + {"x":13.25, "y":5.5}, + {"x":14.25, "y":5.5}, + {"x":15.25, "y":5.5} + ] + } } - } } diff --git a/keyboards/linworks/whale75/keymaps/default/keymap.c b/keyboards/linworks/whale75/keymaps/default/keymap.c index a2298865ef22..8aa21048ebb0 100644 --- a/keyboards/linworks/whale75/keymaps/default/keymap.c +++ b/keyboards/linworks/whale75/keymaps/default/keymap.c @@ -21,8 +21,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MUTE, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_TRNS, KC_BSPC, KC_INS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, - KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_HOME, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT ), @@ -30,8 +30,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { RGB_TOG, RGB_VAD, RGB_VAI, BL_DEC, BL_INC, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_RMOD, RGB_MOD, RGB_SPI, RGB_SPI, KC_MPLY, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, KC_TRNS, KC_TRNS, 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(1), KC_TRNS, KC_TRNS, KC_TRNS ), }; diff --git a/keyboards/linworks/whale75/keymaps/via/keymap.c b/keyboards/linworks/whale75/keymaps/via/keymap.c index 3412e8397ffc..eab5f110d124 100644 --- a/keyboards/linworks/whale75/keymaps/via/keymap.c +++ b/keyboards/linworks/whale75/keymaps/via/keymap.c @@ -21,8 +21,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MUTE, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_TRNS, KC_BSPC, KC_INS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, - KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_HOME, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT ), @@ -30,16 +30,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { RGB_TOG, RGB_VAD, RGB_VAI, BL_DEC, BL_INC, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_RMOD, RGB_MOD, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, KC_TRNS, KC_TRNS, 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), [2] = LAYOUT_all( /* keymap for layer 2 */ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), @@ -47,8 +47,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), }; diff --git a/keyboards/linworks/whale75/rules.mk b/keyboards/linworks/whale75/rules.mk index bcca4a73de6a..53a4b09d4143 100644 --- a/keyboards/linworks/whale75/rules.mk +++ b/keyboards/linworks/whale75/rules.mk @@ -8,18 +8,15 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes WS2812_DRIVER = pwm diff --git a/keyboards/linworks/whale75/whale75.c b/keyboards/linworks/whale75/whale75.c index 4bce30adf3e4..ef86e0268a7b 100644 --- a/keyboards/linworks/whale75/whale75.c +++ b/keyboards/linworks/whale75/whale75.c @@ -14,3 +14,29 @@ * along with this program. If not, see . */ #include "whale75.h" + +#if defined(ENCODER_ENABLE) +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + if (index == 0) { + /* The switch case allows for different encoder mappings on different layers, "default" map gets applied for all unspecified layers */ + switch(get_highest_layer(layer_state)){ + case 1: + if (clockwise) { + tap_code(KC_MNXT); + } else { + tap_code(KC_MPRV); + } + break; + default: + if (clockwise){ + tap_code(KC_VOLU); + } else{ + tap_code(KC_VOLD); + } + break; + } + } + return true; +} +#endif diff --git a/keyboards/linworks/whale75/whale75.h b/keyboards/linworks/whale75/whale75.h index f5ba205ecc72..44b77a1dd08b 100644 --- a/keyboards/linworks/whale75/whale75.h +++ b/keyboards/linworks/whale75/whale75.h @@ -18,82 +18,105 @@ #include "quantum.h" +#define XXX KC_NO + +/* + * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┐ + * │00 │ │02 │03 │04 │05 │ │06 │07 │08 │09 │ │0A │0B │0C │0D │ │0F │ + * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┐ ┌───────┐ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │1E │ │1F │ │1E │ 2u Backspace + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┤ └─┬─────┤ + * │20 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2D │2E │ │2F │ │ │ + * 2.25u ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ├───┤ ┌──┴┐3E │ ISO + * LShift │30 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3E │ │4F │ │3D │ │ Enter + * ┌────────┐ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┘ └───┘ └───┴────┘ + * │40 │ │40 │41 │42 │43 │44 │45 │46 │47 │48 │49 │4A │4B │4D │ ┌───┐ + * └────────┘ ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┴┬──┴──┬───┘ │4E │ + * │50 │51 │52 │56 │5A │5B │ ┌───┼───┼───┐ + * └────┴────┴────┴────────────────────────┴─────┴─────┘ │5D │5E │5F │ + * └───┴───┴───┘ + * ┌─────┬─────┬───────────────────────────┬─────┬─────┐ + * WKL │50 │52 │56 │5A │5B │ + * └─────┴─────┴───────────────────────────┴─────┴─────┘ + */ + #define LAYOUT_all( \ - K000, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K015, \ - K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \ - K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, \ - K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, \ - K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K413, K414, K415, \ - K500, K501, K502, K506, K510, K511, K513, K514, K515 \ + K00, 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, K1D, K1E, 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, K3E, K4F, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4D, K4E, \ + K50, K51, K52, K56, K5A, K5B, K5D, K5E, K5F \ ) { \ - { K000, KC_NO, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, KC_NO, K015 }, \ - { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \ - { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \ - { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, KC_NO }, \ - { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, K413, K414, K415 }, \ - { K500, K501, K502, KC_NO, KC_NO, KC_NO, K506, KC_NO, KC_NO, KC_NO, K510, K511, KC_NO, K513, K514, K515 } \ + { K00, XXX, 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, K1D, K1E, 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, K3E, XXX }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, XXX, K4D, K4E, K4F }, \ + { K50, K51, K52, XXX, XXX, XXX, K56, XXX, XXX, XXX, K5A, K5B, XXX, K5D, K5E, K5F } \ } #define LAYOUT_ansi( \ - K000, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K015, \ - K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K114, K115, \ - K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, \ - K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K314, \ - K400, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K413, K414, K415, \ - K500, K501, K502, K506, K510, K511, K513, K514, K515 \ + K00, 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, 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, K3E, K4F, \ + K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4D, K4E, \ + K50, K51, K52, K56, K5A, K5B, K5D, K5E, K5F \ ) { \ - { K000, KC_NO, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, KC_NO, K015 }, \ - { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, KC_NO, K114, K115 }, \ - { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \ - { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO, K314, KC_NO }, \ - { K400, KC_NO, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, K413, K414, K415 }, \ - { K500, K501, K502, KC_NO, KC_NO, KC_NO, K506, KC_NO, KC_NO, KC_NO, K510, K511, KC_NO, K513, K514, K515 } \ + { K00, XXX, 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, 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, XXX, K3E, XXX }, \ + { K40, XXX, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, XXX, K4D, K4E, K4F }, \ + { K50, K51, K52, XXX, XXX, XXX, K56, XXX, XXX, XXX, K5A, K5B, XXX, K5D, K5E, K5F } \ } #define LAYOUT_ansi_wkl( \ - K000, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K015, \ - K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K114, K115, \ - K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, \ - K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K314, \ - K400, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K413, K414, K415, \ - K500, K502, K506, K510, K511, K513, K514, K515 \ + K00, 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, 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, K3E, K4F, \ + K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4D, K4E, \ + K50, K52, K56, K5A, K5B, K5D, K5E, K5F \ ) { \ - { K000, KC_NO, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, KC_NO, K015 }, \ - { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, KC_NO, K114, K115 }, \ - { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \ - { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO, K314, KC_NO }, \ - { K400, KC_NO, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, K413, K414, K415 }, \ - { K500, KC_NO, K502, KC_NO, KC_NO, KC_NO, K506, KC_NO, KC_NO, KC_NO, K510, K511, KC_NO, K513, K514, K515 } \ + { K00, XXX, 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, 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, XXX, K3E, XXX }, \ + { K40, XXX, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, XXX, K4D, K4E, K4F }, \ + { K50, XXX, K52, XXX, XXX, XXX, K56, XXX, XXX, XXX, K5A, K5B, XXX, K5D, K5E, K5F } \ } #define LAYOUT_iso( \ - K000, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K015, \ - K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K114, K115, \ - K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K215, \ - K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, \ - K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K413, K414, K415, \ - K500, K501, K502, K506, K510, K511, K513, K514, K515 \ + K00, 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, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2F, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K4F, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4D, K4E, \ + K50, K51, K52, K56, K5A, K5B, K5D, K5E, K5F \ ) { \ - { K000, KC_NO, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, KC_NO, K015 }, \ - { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, KC_NO, K114, K115 }, \ - { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, KC_NO, K215 }, \ - { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, KC_NO }, \ - { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, K413, K414, K415 }, \ - { K500, K501, K502, KC_NO, KC_NO, KC_NO, K506, KC_NO, KC_NO, KC_NO, K510, K511, KC_NO, K513, K514, K515 } \ + { K00, XXX, 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, XXX, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, XXX, K2F }, \ + { K30, XXX, 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, XXX, K4D, K4E, K4F }, \ + { K50, K51, K52, XXX, XXX, XXX, K56, XXX, XXX, XXX, K5A, K5B, XXX, K5D, K5E, K5F } \ } #define LAYOUT_iso_wkl( \ - K000, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K015, \ - K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K114, K115, \ - K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K215, \ - K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, \ - K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K413, K414, K415, \ - K500, K502, K506, K510, K511, K513, K514, K515 \ + K00, 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, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2F, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K4F, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4D, K4E, \ + K50, K52, K56, K5A, K5B, K5D, K5E, K5F \ ) { \ - { K000, KC_NO, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, KC_NO, K015 }, \ - { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, KC_NO, K114, K115 }, \ - { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, KC_NO, K215 }, \ - { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, KC_NO }, \ - { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, K413, K414, K415 }, \ - { K500, KC_NO, K502, KC_NO, KC_NO, KC_NO, K506, KC_NO, KC_NO, KC_NO, K510, K511, KC_NO, K513, K514, K515 } \ + { K00, XXX, 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, XXX, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, XXX, K2F }, \ + { K30, XXX, 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, XXX, K4D, K4E, K4F }, \ + { K50, XXX, K52, XXX, XXX, XXX, K56, XXX, XXX, XXX, K5A, K5B, XXX, K5D, K5E, K5F } \ } diff --git a/keyboards/littlealby/mute/info.json b/keyboards/littlealby/mute/info.json index 9d6ff1a8d4e9..7490eba4084a 100644 --- a/keyboards/littlealby/mute/info.json +++ b/keyboards/littlealby/mute/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Little Alby", "url": "", "maintainer": "albybarber", - "width": 1, - "height": 1, "layouts": { "LAYOUT": { "layout": [ {"x": 0, "y": 0 }] diff --git a/keyboards/littlealby/mute/rules.mk b/keyboards/littlealby/mute/rules.mk index 0ea77b0552a2..31bc2cdd4afc 100644 --- a/keyboards/littlealby/mute/rules.mk +++ b/keyboards/littlealby/mute/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/lizard_trick/tenkey_plusplus/config.h b/keyboards/lizard_trick/tenkey_plusplus/config.h index d962e67dae22..d1087851cb52 100644 --- a/keyboards/lizard_trick/tenkey_plusplus/config.h +++ b/keyboards/lizard_trick/tenkey_plusplus/config.h @@ -41,7 +41,7 @@ along with this program. If not, see . * */ -#define MATRIX_ROW_PINS { B7, D4, B5, B6, C6, C7, } +#define MATRIX_ROW_PINS { B7, D4, B5, B6, C6, C7 } #define MATRIX_COL_PINS { D5, D3, D2, F7 } #define UNUSED_PINS diff --git a/keyboards/lizard_trick/tenkey_plusplus/info.json b/keyboards/lizard_trick/tenkey_plusplus/info.json index cad5dd75db0a..bfda92de93c9 100644 --- a/keyboards/lizard_trick/tenkey_plusplus/info.json +++ b/keyboards/lizard_trick/tenkey_plusplus/info.json @@ -2,8 +2,6 @@ "keyboard_name": "tenkey_plusplus", "url": "https://github.com/jonbobcar/tenkey_plusplus", "maintainer": "Jonathon Carstens", - "width": 4, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/lizard_trick/tenkey_plusplus/rules.mk b/keyboards/lizard_trick/tenkey_plusplus/rules.mk index fb12719ce81e..bc3e5b4e942d 100644 --- a/keyboards/lizard_trick/tenkey_plusplus/rules.mk +++ b/keyboards/lizard_trick/tenkey_plusplus/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = yes diff --git a/keyboards/ll3macorn/bongopad/bongopad.c b/keyboards/ll3macorn/bongopad/bongopad.c new file mode 100644 index 000000000000..42a8a199cbb3 --- /dev/null +++ b/keyboards/ll3macorn/bongopad/bongopad.c @@ -0,0 +1,124 @@ +// Copyright 2021 Ll3macorn (@ll3macorn) +// SPDX-License-Identifier: GPL-2.0-or-later +#include "bongopad.h" + + +#ifdef ENCODER_ENABLE +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { + return false; + } + // rest fo the code + if (clockwise) { + tap_code_delay(KC_VOLU, 10); + } else { + tap_code_delay(KC_VOLD, 10); + } + return true; +} +#endif + +#ifdef OLED_ENABLE +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } + +// WPM-responsive animation stuff here +# define IDLE_FRAMES 5 +# define IDLE_SPEED 0 // below this wpm value your animation will idle + + // #define PREP_FRAMES 1 // uncomment if >1 + +# define TAP_FRAMES 2 +# define TAP_SPEED 0 // above this wpm value typing animation to triggere + +# define ANIM_FRAME_DURATION 200 // how long each frame lasts in ms +// #define SLEEP_TIMER 60000 // should sleep after this period of 0 wpm, needs fixing +# define ANIM_SIZE 512 // number of bytes in array, minimize for adequate firmware size, max is 1024 + + uint32_t anim_timer = 0; + uint32_t anim_sleep = 0; + uint8_t current_idle_frame = 0; + // uint8_t current_prep_frame = 0; // uncomment if PREP_FRAMES >1 + uint8_t current_tap_frame = 0; + + // Images credit j-inc(/James Incandenza) and pixelbenny. Credit to obosob for initial animation approach. + void render_anim(void) { + static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 16, 8, 8, 4, 4, 4, 8, 48, 64, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 100, 130, 2, 2, 2, 2, 2, 1, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 48, 48, 0, 192, 193, 193, 194, 4, 8, 16, 32, 64, 128, 0, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 196, 4, 196, 4, 196, 2, 194, 2, 194, 1, 1, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 56, 4, 3, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 13, 1, 0, 64, 160, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 8, 8, 16, 16, 16, 16, 16, 17, 15, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 255, 255, 195, 191, 127, 3, 127, 191, 195, 255, 255, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 4, 4, 8, 8, 8, 8, 8, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 7, 31, 7, 31, 7, 28, 7, 31, 7, 31, 7, 2, 2, 0, 0, 0, 0, + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 16, 8, 8, 4, 4, 4, 8, 48, 64, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 100, 130, 2, 2, 2, 2, 2, 1, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 48, 48, 0, 192, 193, 193, 194, 4, 8, 16, 32, 64, 128, 0, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 196, 4, 196, 4, 196, 2, 194, 2, 194, 1, 1, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 56, 4, 3, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 13, 1, 0, 64, 160, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 8, 8, 16, 16, 16, 16, 16, 17, 15, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 255, 255, 195, 191, 127, 3, 127, 191, 195, 255, 255, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 4, 4, 8, 8, 8, 8, 8, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 7, 31, 7, 31, 7, 28, 7, 31, 7, 31, 7, 2, 2, 0, 0, 0, 0, + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 8, 4, 2, 2, 4, 24, 96, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 194, 1, 1, 2, 2, 4, 4, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 96, 0, 129, 130, 130, 132, 8, 16, 32, 64, 128, 0, 0, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 196, 4, 196, 4, 196, 2, 194, 2, 194, 1, 1, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 112, 25, 6, 0, 0, 0, 0, 0, 0, 0, 24, 24, 24, 27, 3, 0, 64, 160, 34, 36, 20, 18, 18, 18, 11, 8, 8, 8, 8, 5, 5, 9, 9, 16, 16, 16, 16, 16, 17, 15, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 255, 255, 195, 191, 127, 3, 127, 191, 195, 255, 255, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 4, 4, 8, 8, 8, 8, 8, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 7, 31, 7, 31, 7, 28, 7, 31, 7, 31, 7, 2, 2, 0, 0, 0, 0, + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 0, 128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 4, 2, 1, 1, 2, 12, 48, 64, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 225, 0, 0, 1, 1, 2, 2, 1, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 48, 48, 0, 192, 193, 193, 194, 4, 8, 16, 32, 64, 128, 0, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 196, 4, 196, 4, 196, 2, 194, 2, 194, 1, 1, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 112, 12, 3, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 13, 1, 0, 64, 160, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 8, 8, 16, 16, 16, 16, 16, 17, 15, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 255, 255, 195, 191, 127, 3, 127, 191, 195, 255, 255, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 4, 4, 8, 8, 8, 8, 8, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 7, 31, 7, 31, 7, 28, 7, 31, 7, 31, 7, 2, 2, 0, 0, 0, 0, + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 4, 2, 2, 2, 4, 56, 64, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 226, 1, 1, 2, 2, 2, 2, 1, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 48, 48, 0, 192, 193, 193, 194, 4, 8, 16, 32, 64, 128, 0, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 196, 4, 196, 4, 196, 2, 194, 2, 194, 1, 1, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 112, 12, 3, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 13, 1, 0, 64, 160, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 8, 8, 16, 16, 16, 16, 16, 17, 15, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 255, 255, 195, 191, 127, 3, 127, 191, 195, 255, 255, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 4, 4, 8, 8, 8, 8, 8, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 7, 31, 7, 31, 7, 28, 7, 31, 7, 31, 7, 2, 2, 0, 0, 0, 0, + }}; + static const char PROGMEM prep[][ANIM_SIZE] = {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 0, 128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 4, 2, 1, 1, 2, 12, 48, 64, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 225, 0, 0, 1, 1, 2, 2, 129, 128, 128, 0, 0, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 48, 48, 0, 0, 1, 225, 26, 6, 9, 49, 53, 1, 138, 124, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 196, 4, 196, 4, 196, 2, 194, 2, 194, 1, 1, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 112, 12, 3, 0, 0, 24, 6, 5, 152, 153, 132, 195, 124, 65, 65, 64, 64, 32, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 4, 4, 4, 4, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 255, 255, 195, 191, 127, 3, 127, 191, 195, 255, 255, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 7, 31, 7, 31, 7, 28, 7, 31, 7, 31, 7, 2, 2, 0, 0, 0, 0, + }}; + static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE] = { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 0, 128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 4, 2, 1, 1, 2, 12, 48, 64, 128, 0, 0, 0, 0, 0, 0, 0, 248, 248, 248, 248, 0, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 225, 0, 0, 1, 1, 2, 2, 129, 128, 128, 0, 0, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 48, 48, 0, 0, 1, 1, 2, 4, 8, 16, 32, 67, 135, 7, 1, 0, 184, 188, 190, 159, 95, 95, 79, 76, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 196, 4, 196, 4, 196, 2, 194, 2, 194, 1, 1, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 112, 12, 3, 0, 0, 24, 6, 5, 152, 153, 132, 67, 124, 65, 65, 64, 64, 32, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 8, 8, 16, 16, 16, 16, 16, 17, 15, 1, 61, 124, 252, 252, 252, 252, 252, 60, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 255, 255, 195, 191, 127, 3, 127, 191, 195, 255, 255, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 7, 31, 7, 31, 7, 28, 7, 31, 7, 31, 7, 2, 2, 0, 0, 0, 0, + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 0, 128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 4, 2, 1, 1, 2, 12, 48, 64, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 225, 0, 0, 1, 1, 2, 2, 1, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 48, 48, 0, 0, 1, 225, 26, 6, 9, 49, 53, 1, 138, 124, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 196, 4, 196, 4, 196, 2, 194, 2, 194, 1, 1, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 112, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 64, 160, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 4, 4, 4, 4, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 255, 255, 195, 191, 127, 3, 127, 191, 195, 255, 255, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 122, 122, 121, 121, 121, 121, 57, 49, 2, 2, 4, 4, 8, 8, 8, 8, 8, 7, 0, 0, 0, 48, 60, 124, 124, 126, 126, 126, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 7, 31, 7, 31, 7, 28, 7, 31, 7, 31, 7, 2, 2, 0, 0, 0, 0, + }, + }; + + // assumes 1 frame prep stage + void animation_phase(void) { + if (get_current_wpm() <= IDLE_SPEED) { + current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES; + oled_write_raw_P(idle[abs((IDLE_FRAMES - 1) - current_idle_frame)], ANIM_SIZE); + } + if (get_current_wpm() > IDLE_SPEED && get_current_wpm() < TAP_SPEED) { + // oled_write_raw_P(prep[abs((PREP_FRAMES-1)-current_prep_frame)], ANIM_SIZE); // uncomment if IDLE_FRAMES >1 + oled_write_raw_P(prep[0], ANIM_SIZE); // remove if IDLE_FRAMES >1 + } + if (get_current_wpm() >= TAP_SPEED) { + current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES; + oled_write_raw_P(tap[abs((TAP_FRAMES - 1) - current_tap_frame)], ANIM_SIZE); + } + } + if (get_current_wpm() != 000) { + oled_on(); // not essential but turns on animation OLED with any alpha keypress + if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { + anim_timer = timer_read32(); + animation_phase(); + } + anim_sleep = timer_read32(); + } else { + if (timer_elapsed32(anim_sleep) > OLED_TIMEOUT) { + oled_off(); + } else { + if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { + anim_timer = timer_read32(); + animation_phase(); + } + } + } + } + + render_anim(); + oled_set_cursor(0, 0); + oled_write(get_u8_str(get_current_wpm(), '0'), false); + return true; +} + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; }; +#endif diff --git a/keyboards/ll3macorn/bongopad/bongopad.h b/keyboards/ll3macorn/bongopad/bongopad.h new file mode 100644 index 000000000000..31fc0cc5c7ac --- /dev/null +++ b/keyboards/ll3macorn/bongopad/bongopad.h @@ -0,0 +1,18 @@ +// Copyright 2021 Ll3macorn (@ll3macorn) +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#include "quantum.h" + +#define LAYOUT_default( \ + K00, \ + K10, K11, K12, \ + K20, K21, K22, \ + K30, K31, K32 \ +) { \ + { K00, KC_NO, KC_NO }, \ + { K10, K11, K12 }, \ + { K20, K21, K22 }, \ + { K30, K31, K32 } \ +} + diff --git a/keyboards/ll3macorn/bongopad/config.h b/keyboards/ll3macorn/bongopad/config.h new file mode 100644 index 000000000000..ccbd45f461c1 --- /dev/null +++ b/keyboards/ll3macorn/bongopad/config.h @@ -0,0 +1,40 @@ +// Copyright 2021 Ll3macorn (@ll3macorn) +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x3728 +#define PRODUCT_ID 0x2949 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Ll3macorn +#define PRODUCT BongoPad + +/* bootmagic */ +#define BOOTMAGIC_LITE_ROW 1 +#define BOOTMAGIC_LITE_COLUMN 0 + +/* rgb underglow */ +#define RGB_DI_PIN E6 +#define RGBLED_NUM 6 + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 3 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { F7, D7, C6, D4 } +#define MATRIX_COL_PINS { F4, F5, F6 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* encoders */ +#define ENCODERS_PAD_A { B1 } +#define ENCODERS_PAD_B { B3 } + +/* misc */ +#define LAYER_STATE_8BIT +#define NO_ACTION_TAPPING diff --git a/keyboards/ll3macorn/bongopad/keymaps/default/keymap.c b/keyboards/ll3macorn/bongopad/keymaps/default/keymap.c new file mode 100644 index 000000000000..807d050e1d74 --- /dev/null +++ b/keyboards/ll3macorn/bongopad/keymaps/default/keymap.c @@ -0,0 +1,41 @@ +// Copyright 2021 Ll3macorn (@ll3macorn) +// SPDX-License-Identifier: GPL-2.0-or-later +#include QMK_KEYBOARD_H + +enum layers { + Layer1, + Layer2, + Layer3, + Layer4 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [Layer1] = LAYOUT_default( + KC__MUTE, + KC_7, KC_8, KC_9, + KC_4, KC_5, KC_6, + KC_1, KC_2, KC_3), + + [Layer2] = LAYOUT_default( + KC_SPC, + KC_SPC, KC_SPC, KC_SPC, + KC_SPC, KC_SPC, KC_SPC, + KC_SPC, KC_SPC, KC_SPC), + + [Layer3] = LAYOUT_default( + KC_SPC, + KC_SPC, KC_SPC, KC_SPC, + KC_SPC, KC_SPC, KC_SPC, + KC_SPC, KC_SPC, KC_SPC), + + [Layer4] = LAYOUT_default( + KC_SPC, + KC_SPC, KC_SPC, KC_SPC, + KC_SPC, KC_SPC, KC_SPC, + KC_SPC, KC_SPC, KC_SPC) + +}; + +// clang-format on + diff --git a/keyboards/ll3macorn/bongopad/keymaps/default/rules.mk b/keyboards/ll3macorn/bongopad/keymaps/default/rules.mk new file mode 100644 index 000000000000..c715f0027729 --- /dev/null +++ b/keyboards/ll3macorn/bongopad/keymaps/default/rules.mk @@ -0,0 +1,3 @@ +LTO_ENABLE = yes +COMBO_ENABLE = no + diff --git a/keyboards/ll3macorn/bongopad/readme.md b/keyboards/ll3macorn/bongopad/readme.md new file mode 100644 index 000000000000..d2902aae6a97 --- /dev/null +++ b/keyboards/ll3macorn/bongopad/readme.md @@ -0,0 +1,10 @@ +# BongoPad + +* Keyboard Maintainer: [Ll3macorn](https://github.com/Ll3macorn) +* Hardware Supported: Pro micro + +Make example for this keyboard (after setting up your build environment): + + make ll3macorn/bongopad: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/ll3macorn/bongopad/rules.mk b/keyboards/ll3macorn/bongopad/rules.mk new file mode 100644 index 000000000000..f1bbf0a2d459 --- /dev/null +++ b/keyboards/ll3macorn/bongopad/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 = 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 +# 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 +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 +WPM_ENABLE = yes \ No newline at end of file diff --git a/keyboards/lm_keyboard/lm60n/info.json b/keyboards/lm_keyboard/lm60n/info.json index 5ceb9e88fcf7..0a1fc4c04f03 100644 --- a/keyboards/lm_keyboard/lm60n/info.json +++ b/keyboards/lm_keyboard/lm60n/info.json @@ -2,8 +2,6 @@ "keyboard_name": "lm60n", "url": "", "maintainer": "gkeyboard", - "width": 19.5, - "height": 5, "layouts": { "LAYOUT_ansi": { "layout": [ diff --git a/keyboards/lm_keyboard/lm60n/lm60n.h b/keyboards/lm_keyboard/lm60n/lm60n.h index 31ac7b177a49..f64a1a9d3996 100644 --- a/keyboards/lm_keyboard/lm60n/lm60n.h +++ b/keyboards/lm_keyboard/lm60n/lm60n.h @@ -149,9 +149,9 @@ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┐ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │0e │ |68 |69 |6a |6b | * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┼───┤ - * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │ │ |58 |59 |5a |5b | + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │2d │ |58 |59 |5a |5b | * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ | ├───┼───┼───┤ | - * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c |2d │ |5c |5d |5e | | + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c | │ |5c |5d |5e | | * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┤ ├───┼───┼───┼───┤ * │30 |31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c |3d │ |48 |49 |4a |4b | * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬──┴─┬────┤ ├───┴───┼───┤ | @@ -160,8 +160,8 @@ */ #define LAYOUT_all_iso_6_25( \ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k68, k69, k6a, k6b, \ - k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k58, k59, k5a, k5b, \ - k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k5c, k5d, k5e, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k2d, k58, k59, k5a, k5b, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k5c, k5d, k5e, \ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k48, k49, k4a, k4b, \ k40, k41, k42, k43, k44, k45, k46, k47, k4c, k4d \ ) { \ @@ -178,9 +178,9 @@ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┐ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d |0e │ |68 |69 |6a |6b | * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┼───┤ - * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │ │ |58 |59 |5a |5b | + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │2d │ |58 |59 |5a |5b | * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ | ├───┼───┼───┤ | - * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c |2d │ |5c |5d |5e | | + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c | │ |5c |5d |5e | | * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┤ ├───┼───┼───┼───┤ * │30 |31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c |3d │ |48 |49 |4a |4b | * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬──┴┬─────┤ ├───┴───┼───┤ | @@ -189,8 +189,8 @@ */ #define LAYOUT_all_iso_7( \ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k68, k69, k6a, k6b, \ - k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k58, k59, k5a, k5b, \ - k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k5c, k5d, k5e, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k2d, k58, k59, k5a, k5b, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k5c, k5d, k5e, \ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k48, k49, k4a, k4b, \ k40, k41, k42, k43, k45, k46, k47, k4c, k4d \ ) { \ diff --git a/keyboards/lm_keyboard/lm60n/rules.mk b/keyboards/lm_keyboard/lm60n/rules.mk index f49426d5137f..6f114436f0b8 100644 --- a/keyboards/lm_keyboard/lm60n/rules.mk +++ b/keyboards/lm_keyboard/lm60n/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/longnald/corin/info.json b/keyboards/longnald/corin/info.json index e0faf22090eb..902620901288 100644 --- a/keyboards/longnald/corin/info.json +++ b/keyboards/longnald/corin/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Corin", "url": "https://github.com/longnald/corin", "maintainer": "Seaton Jiang ", - "width": 15, - "height": 5, "layouts": { "LAYOUT_64_ansi": { "layout": [ diff --git a/keyboards/longnald/corin/rules.mk b/keyboards/longnald/corin/rules.mk index 965087c1a6a6..66169abc1a1f 100644 --- a/keyboards/longnald/corin/rules.mk +++ b/keyboards/longnald/corin/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/ls_60/chconf.h b/keyboards/ls_60/chconf.h new file mode 100644 index 000000000000..5884dd8b0bde --- /dev/null +++ b/keyboards/ls_60/chconf.h @@ -0,0 +1,24 @@ +/* Copyright 2021 Weirdo + * + * This program is free software: you can 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 . + */ + +#pragma once + +// Need to override the SysTick timer to use TIM3 -- this is a 16-bit timer on F303 +// so we need to change resolution and frequency to match. +#define CH_CFG_ST_RESOLUTION 16 +#define CH_CFG_ST_FREQUENCY 10000 + +#include_next diff --git a/keyboards/ls_60/config.h b/keyboards/ls_60/config.h new file mode 100644 index 000000000000..e7151ac10f70 --- /dev/null +++ b/keyboards/ls_60/config.h @@ -0,0 +1,52 @@ + /* Copyright 2021 Weirdo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7764 +#define PRODUCT_ID 0x4c53 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Weirdo +#define PRODUCT LS_60 + + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +#define MATRIX_ROW_PINS { A9, A10, B10, B11, B15} +#define MATRIX_COL_PINS { A8, B14, B13, B12, B1, B0, A7 , A1 , A15, B3, B4, B5, B6, B7, B8} +#define DIODE_DIRECTION ROW2COL +#define DEBOUNCE 5 + + + +#define RGB_DI_PIN A6 +#define RGBLED_NUM 1 +//#define RGBLIGHT_DISABLE_KEYCODES + + + + +/* 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/ls_60/info.json b/keyboards/ls_60/info.json new file mode 100644 index 000000000000..20cb544b9863 --- /dev/null +++ b/keyboards/ls_60/info.json @@ -0,0 +1,76 @@ +{ + "keyboard_name": "LS_60", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"K00", "x":0, "y":0}, + {"label":"K01", "x":1, "y":0}, + {"label":"K02", "x":2, "y":0}, + {"label":"K0", "x":3, "y":0}, + {"label":"K04", "x":4, "y":0}, + {"label":"K05", "x":5, "y":0}, + {"label":"K06", "x":6, "y":0}, + {"label":"K07", "x":7, "y":0}, + {"label":"K08", "x":8, "y":0}, + {"label":"K09", "x":9, "y":0}, + {"label":"K010", "x":10, "y":0}, + {"label":"K011", "x":11, "y":0}, + {"label":"K012", "x":12, "y":0}, + {"label":"K013", "x":13, "y":0}, + {"label":"K014", "x":14, "y":0}, + {"label":"K10", "x":0, "y":1, "w":1.5}, + {"label":"K11", "x":1.5, "y":1}, + {"label":"K12", "x":2.5, "y":1}, + {"label":"K13", "x":3.5, "y":1}, + {"label":"K14", "x":4.5, "y":1}, + {"label":"K15", "x":5.5, "y":1}, + {"label":"K16", "x":6.5, "y":1}, + {"label":"K17", "x":7.5, "y":1}, + {"label":"K18", "x":8.5, "y":1}, + {"label":"K19", "x":9.5, "y":1}, + {"label":"K110", "x":10.5, "y":1}, + {"label":"K111", "x":11.5, "y":1}, + {"label":"K112", "x":12.5, "y":1}, + {"label":"K113", "x":13.5, "y":1, "w":1.5}, + {"label":"K20", "x":0, "y":2, "w":1.75}, + {"label":"K21", "x":1.75, "y":2}, + {"label":"K22", "x":2.75, "y":2}, + {"label":"K23", "x":3.75, "y":2}, + {"label":"K24", "x":4.75, "y":2}, + {"label":"K25", "x":5.75, "y":2}, + {"label":"K26", "x":6.75, "y":2}, + {"label":"K27", "x":7.75, "y":2}, + {"label":"K28", "x":8.75, "y":2}, + {"label":"K29", "x":9.75, "y":2}, + {"label":"K210", "x":10.75, "y":2}, + {"label":"K211", "x":11.75, "y":2}, + {"label":"K212", "x":12.75, "y":2}, + {"label":"K213", "x":13.75, "y":2, "w":1.25}, + {"label":"K30", "x":0, "y":3, "w":1.25}, + {"label":"K31", "x":1.25, "y":3}, + {"label":"K32", "x":2.25, "y":3}, + {"label":"K33", "x":3.25, "y":3}, + {"label":"K34", "x":4.25, "y":3}, + {"label":"K35", "x":5.25, "y":3}, + {"label":"K36", "x":6.25, "y":3}, + {"label":"K37", "x":7.25, "y":3}, + {"label":"K38", "x":8.25, "y":3}, + {"label":"K39", "x":9.25, "y":3}, + {"label":"K310", "x":10.25, "y":3}, + {"label":"K311", "x":11.25, "y":3}, + {"label":"K312", "x":12.25, "y":3, "w":1.75}, + {"label":"K313", "x":14, "y":3}, + {"label":"K40", "x":0, "y":4, "w":1.25}, + {"label":"K41", "x":1.25, "y":4, "w":1.25}, + {"label":"K42", "x":2.5, "y":4, "w":1.25}, + {"label":"K46", "x":3.75, "y":4, "w":6.25}, + {"label":"K410", "x":10, "y":4, "w":1.25}, + {"label":"K411", "x":11.25, "y":4, "w":1.25}, + {"label":"K412", "x":12.5, "y":4, "w":1.25}, + {"label":"K413", "x":13.75, "y":4, "w":1.25} + ] + } + } +} diff --git a/keyboards/ls_60/keymaps/default/keymap.c b/keyboards/ls_60/keymaps/default/keymap.c new file mode 100644 index 000000000000..35879593992a --- /dev/null +++ b/keyboards/ls_60/keymaps/default/keymap.c @@ -0,0 +1,39 @@ + /* Copyright 2021 Weirdo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + + +// [Keymaps] -----------------------------------------------------------------// +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT(KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LWIN, KC_LALT,KC_SPACE, KC_RALT, KC_RALT, KC_RWIN, KC_RCTL), + + + [_FN] = LAYOUT(KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT), // + +}; diff --git a/keyboards/ls_60/keymaps/via/keymap.c b/keyboards/ls_60/keymaps/via/keymap.c new file mode 100644 index 000000000000..e3af8eb7da8e --- /dev/null +++ b/keyboards/ls_60/keymaps/via/keymap.c @@ -0,0 +1,47 @@ + /* Copyright 2021 Weirdo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + + +// [Keymaps] -----------------------------------------------------------------// +enum layer_names { _BASE, _FN ,_FN1 ,_FN2 }; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT(KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LWIN, KC_LALT, KC_SPACE, KC_RALT, KC_RALT, KC_RWIN, KC_RCTL), + + + [_FN] = LAYOUT(KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT), // + + [_FN1] = LAYOUT(KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + [_FN2] = LAYOUT(KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; diff --git a/keyboards/ls_60/keymaps/via/rules.mk b/keyboards/ls_60/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/ls_60/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/ls_60/ls_60.c b/keyboards/ls_60/ls_60.c new file mode 100644 index 000000000000..ef29acf9a1f7 --- /dev/null +++ b/keyboards/ls_60/ls_60.c @@ -0,0 +1,31 @@ + /* Copyright 2021 Weirdo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "ls_60.h" + + +bool led_update_kb(led_t led_state) { + bool res = led_update_user(led_state); + + if (res) { + if(led_state.caps_lock){ + rgblight_setrgb_at(192, 192, 192, 0); + } else { + rgblight_setrgb_at(0, 0, 0, 0); + } + } + + return res; +} diff --git a/keyboards/ls_60/ls_60.h b/keyboards/ls_60/ls_60.h new file mode 100644 index 000000000000..b099521b9eab --- /dev/null +++ b/keyboards/ls_60/ls_60.h @@ -0,0 +1,30 @@ +/* +Copyright 2021 Weirdo +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K010, K011, K012, K013, K014, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, K212, K213, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K310, K311, K312, K313, \ + K40, K41, K42, K46, K410, K411, K412, K413 ) \ + { \ + {K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K010, K011, K012, K013, K014}, \ + {K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113 }, \ + {K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, K212, K213 }, \ + {K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K310, K311, K312, K313 }, \ + {K40, K41, K42, K46, K410, K411, K412, K413 } \ + } diff --git a/keyboards/ls_60/readme.md b/keyboards/ls_60/readme.md new file mode 100644 index 000000000000..e0efdfd9b500 --- /dev/null +++ b/keyboards/ls_60/readme.md @@ -0,0 +1,17 @@ +# LS_60 + +![LS_60](https://i.imgur.com/Cuy5W1H.png) + +A 60% keyboard based on STM32f303 + +* Keyboard Maintainer: [Weirdo](https://weirdo-f.github.io)(https://github.com/1248314361) +* Hardware Supported: LS_60 +* Hardware Availability: Not yet + +Make example for this keyboard (after setting up your build environment): + + make ls_60:default + +The RST pin and GND pin on the board can be quickly shortened twice to enter DFU mode, and then the program can be written. + +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/ls_60/rules.mk b/keyboards/ls_60/rules.mk new file mode 100644 index 000000000000..3ab27ec312e4 --- /dev/null +++ b/keyboards/ls_60/rules.mk @@ -0,0 +1,20 @@ +# MCU name +MCU = STM32F303 +BOARD = QMK_PROTON_C + +# 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 +# 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 diff --git a/keyboards/lucid/alexa/alexa.c b/keyboards/lucid/alexa/alexa.c new file mode 100644 index 000000000000..c8bbfcdc776e --- /dev/null +++ b/keyboards/lucid/alexa/alexa.c @@ -0,0 +1,14 @@ +/* +Copyright 2021 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "alexa.h" diff --git a/keyboards/lucid/alexa/alexa.h b/keyboards/lucid/alexa/alexa.h new file mode 100644 index 000000000000..9fd221fceae7 --- /dev/null +++ b/keyboards/lucid/alexa/alexa.h @@ -0,0 +1,60 @@ +/* +Copyright 2021 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +#define ___ KC_NO + +/* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───────┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │2D │0E │ │0D │ 2u Backspace + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ └───────┘ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │1E │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2E │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3D │3E │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │40 │41 │42 │45 │49 │4A │ │4C │4D │4E │ + * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + */ + +#define LAYOUT_65_ansi_blocker_split_bs( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, 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, K2E, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \ + K40, K41, K42, K45, 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, 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, ___, K3D, K3E }, \ + { K40, K41, K42, ___, ___, K45, ___, ___, ___, K49, K4A, ___, K4C, K4D, K4E } \ +} + +#define LAYOUT_65_ansi_blocker( \ + 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, K2E, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \ + K40, K41, K42, K45, 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, K1D, K1E }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, ___, K2E }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K3D, K3E }, \ + { K40, K41, K42, ___, ___, K45, ___, ___, ___, K49, K4A, ___, K4C, K4D, K4E } \ +} diff --git a/keyboards/lucid/alexa/config.h b/keyboards/lucid/alexa/config.h new file mode 100644 index 000000000000..a4ac8b62d28d --- /dev/null +++ b/keyboards/lucid/alexa/config.h @@ -0,0 +1,105 @@ +/* +Copyright 2021 + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7667 // Lucid +#define PRODUCT_ID 0x0005 // Phantom +#define DEVICE_VER 0x0001 // Version 1 +#define MANUFACTURER Lucid +#define PRODUCT Alexa + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * 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) + * +*/ + +// Checked with Eagle Schematic +#define MATRIX_ROW_PINS { F4, F1, F7, F6, F5 } +#define MATRIX_COL_PINS { F0, B1, B2, B3, B7, D0, D1, D2, D3, D5, D7, B4, B5, B6, C6 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* 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 Indicator LED's */ +#define LED_CAPS_LOCK_PIN C7 + +/* Define less important options */ + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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/lucid/alexa/info.json b/keyboards/lucid/alexa/info.json new file mode 100644 index 000000000000..91c38364446b --- /dev/null +++ b/keyboards/lucid/alexa/info.json @@ -0,0 +1,158 @@ +{ + "keyboard_name": "Alexa", + "url": "https://www.makerkeyboards.com/products/alexa", + "maintainer": "mrnoisytiger", + "layouts": { + "LAYOUT_65_ansi_blocker_split_bs": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2@", "x":2, "y":0}, + {"label":"3#", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":7, "y":0}, + {"label":"8*", "x":8, "y":0}, + {"label":"9(", "x":9, "y":0}, + {"label":"0)", "x":10, "y":0}, + {"label":"-_", "x":11, "y":0}, + {"label":"=+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0}, + {"label":"Delete", "x":14, "y":0}, + {"label":"Home", "x":15, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"[{", "x":11.5, "y":1}, + {"label":"]}", "x":12.5, "y":1}, + {"label":"\\|", "x":13.5, "y":1, "w":1.5}, + {"label":"PgUp", "x":15, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";:", "x":10.75, "y":2}, + {"label":"\"'", "x":11.75, "y":2}, + {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + {"label":"PgDn", "x":15, "y":2}, + + {"label":"Shift", "x":0, "y":3, "w":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",<", "x":9.25, "y":3}, + {"label":".>", "x":10.25, "y":3}, + {"label":"/?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"\u2191", "x":14, "y":3}, + {"label":"End", "x":15, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"GUI", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space", "x":3.75, "y":4, "w":6.25}, + {"label":"Alt", "x":10, "y":4, "w":1.25}, + {"label":"Fn", "x":11.25, "y":4, "w":1.25}, + {"label":"\u2190", "x":13, "y":4}, + {"label":"\u2193", "x":14, "y":4}, + {"label":"\u2192", "x":15, "y":4} + ] + }, + "LAYOUT_65_ansi_blocker": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2@", "x":2, "y":0}, + {"label":"3#", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":7, "y":0}, + {"label":"8*", "x":8, "y":0}, + {"label":"9(", "x":9, "y":0}, + {"label":"0)", "x":10, "y":0}, + {"label":"-_", "x":11, "y":0}, + {"label":"=+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + {"label":"Home", "x":15, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"[{", "x":11.5, "y":1}, + {"label":"]}", "x":12.5, "y":1}, + {"label":"\\|", "x":13.5, "y":1, "w":1.5}, + {"label":"PgUp", "x":15, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";:", "x":10.75, "y":2}, + {"label":"\"'", "x":11.75, "y":2}, + {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + {"label":"PgDn", "x":15, "y":2}, + + {"label":"Shift", "x":0, "y":3, "w":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",<", "x":9.25, "y":3}, + {"label":".>", "x":10.25, "y":3}, + {"label":"/?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"\u2191", "x":14, "y":3}, + {"label":"End", "x":15, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"GUI", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space", "x":3.75, "y":4, "w":6.25}, + {"label":"Alt", "x":10, "y":4, "w":1.25}, + {"label":"Fn", "x":11.25, "y":4, "w":1.25}, + {"label":"\u2190", "x":13, "y":4}, + {"label":"\u2193", "x":14, "y":4}, + {"label":"\u2192", "x":15, "y":4} + ] + } + } +} diff --git a/keyboards/lucid/alexa/keymaps/default/keymap.c b/keyboards/lucid/alexa/keymaps/default/keymap.c new file mode 100644 index 000000000000..29efe094f539 --- /dev/null +++ b/keyboards/lucid/alexa/keymaps/default/keymap.c @@ -0,0 +1,38 @@ +/* +Copyright 2021 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _LAYER0, + _LAYER1, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_LAYER0] = LAYOUT_65_ansi_blocker_split_bs( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [_LAYER1] = LAYOUT_65_ansi_blocker_split_bs( + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, KC_PGUP, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MUTE, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT + ), +}; diff --git a/keyboards/lucid/alexa/keymaps/via/keymap.c b/keyboards/lucid/alexa/keymaps/via/keymap.c new file mode 100644 index 000000000000..8cfb97af10c9 --- /dev/null +++ b/keyboards/lucid/alexa/keymaps/via/keymap.c @@ -0,0 +1,54 @@ +/* +Copyright 2021 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _LAYER0, + _LAYER1, + _LAYER2, + _LAYER3, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_LAYER0] = LAYOUT_65_ansi_blocker_split_bs( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [_LAYER1] = LAYOUT_65_ansi_blocker_split_bs( + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, KC_PGUP, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MUTE, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT + ), + [_LAYER2] = LAYOUT_65_ansi_blocker_split_bs( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [_LAYER3] = LAYOUT_65_ansi_blocker_split_bs( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/lucid/alexa/keymaps/via/rules.mk b/keyboards/lucid/alexa/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/lucid/alexa/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/lucid/alexa/readme.md b/keyboards/lucid/alexa/readme.md new file mode 100644 index 000000000000..a0cef7291377 --- /dev/null +++ b/keyboards/lucid/alexa/readme.md @@ -0,0 +1,25 @@ +# Alexa Hotswap PCB by Maker Keyboards + +The following is the QMK Firmware for the Alexa Hotswap PCB for [Maker Keyboards](https://www.makerkeyboards.com/). +--- + +* Keyboard Maintainer: [mrnoisytiger](https://github.com/mrnoisytiger) +* Hardware Supported: Alexa Hotswap PCB (ATmega32U4) +* Hardware Availability: [Maker Keyboards](https://www.makerkeyboards.com/products/alexa) + +Make example for this keyboard (after setting up your build environment): + + make lucid/alexa:default + +Flashing example for this keyboard: + + make lucid/alexa:default:flash + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the top left key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Keycode in layout**: Press the key mapped to `RESET` if it is available (Fn+Backslash by 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/lucid/alexa/rules.mk b/keyboards/lucid/alexa/rules.mk new file mode 100644 index 000000000000..d602094bde04 --- /dev/null +++ b/keyboards/lucid/alexa/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = atmega32u4 + +# Processor frequency +F_CPU = 8000000 + +# 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 = no # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# 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 + +LAYOUTS = 65_ansi_blocker 65_ansi_blocker_split_bs diff --git a/keyboards/lucid/kbd8x_hs/info.json b/keyboards/lucid/kbd8x_hs/info.json index c8e81f5451b5..1a22c78326ba 100644 --- a/keyboards/lucid/kbd8x_hs/info.json +++ b/keyboards/lucid/kbd8x_hs/info.json @@ -2,8 +2,6 @@ "keyboard_name": "KBD8X Hotswap PCB's", "url": "http://www.lucidkb.com", "maintainer": "Lucid", - "width": 18.25, - "height": 6.25, "layouts": { "LAYOUT_tkl_ansi": { "layout": [ diff --git a/keyboards/lucid/kbd8x_hs/rules.mk b/keyboards/lucid/kbd8x_hs/rules.mk index a6dd88ac1c22..5391473f1f6a 100644 --- a/keyboards/lucid/kbd8x_hs/rules.mk +++ b/keyboards/lucid/kbd8x_hs/rules.mk @@ -10,17 +10,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = 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 -KEYBOARD_LOCK_ENABLE = yes diff --git a/keyboards/lucid/phantom_hs/info.json b/keyboards/lucid/phantom_hs/info.json index d190b25263b0..2aea46bdd169 100644 --- a/keyboards/lucid/phantom_hs/info.json +++ b/keyboards/lucid/phantom_hs/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Phantom", "url": "http://www.lucidkb.com", "maintainer": "Lucid", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_ansi_blocker": { "layout": [ diff --git a/keyboards/lucid/phantom_hs/rules.mk b/keyboards/lucid/phantom_hs/rules.mk index 945e7be2eeb0..94deb5c06a01 100644 --- a/keyboards/lucid/phantom_hs/rules.mk +++ b/keyboards/lucid/phantom_hs/rules.mk @@ -10,19 +10,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = 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 -KEYBOARD_LOCK_ENABLE = yes LAYOUTS = 65_ansi_blocker diff --git a/keyboards/lucid/phantom_solder/info.json b/keyboards/lucid/phantom_solder/info.json index 4c969046d0f2..beee1ac2b233 100644 --- a/keyboards/lucid/phantom_solder/info.json +++ b/keyboards/lucid/phantom_solder/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Phantom Solder", "url": "http://www.lucidkb.com", "maintainer": "Lucid", - "width": 16, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/lucid/phantom_solder/keymaps/default/keymap.c b/keyboards/lucid/phantom_solder/keymaps/default/keymap.c index 2647d1a1b009..6c860639324c 100644 --- a/keyboards/lucid/phantom_solder/keymaps/default/keymap.c +++ b/keyboards/lucid/phantom_solder/keymaps/default/keymap.c @@ -22,18 +22,18 @@ enum layers { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_LAYER0] = LAYOUT_all( - KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_DEL, KC_PGDN, - KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, - KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT ), [_LAYER1] = LAYOUT_all( - KC_GESC, 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_BSPC, KC_DEL, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUSE, RESET, KC_PGUP, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_AUDIO_VOL_UP, KC_AUDIO_MUTE, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK + KC_GESC, 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_BSPC, KC_DEL, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MUTE, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT ) }; diff --git a/keyboards/lucid/phantom_solder/keymaps/via/keymap.c b/keyboards/lucid/phantom_solder/keymaps/via/keymap.c index ca288fa0be4f..afc8ae550f0b 100644 --- a/keyboards/lucid/phantom_solder/keymaps/via/keymap.c +++ b/keyboards/lucid/phantom_solder/keymaps/via/keymap.c @@ -24,35 +24,34 @@ enum layers { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_LAYER0] = LAYOUT_all( - KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_DEL, KC_PGDN, - KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, - KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT ), [_LAYER1] = LAYOUT_all( - KC_GESC, 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_BSPC, KC_DEL, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUSE, RESET, KC_PGUP, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_AUDIO_VOL_UP, KC_AUDIO_MUTE, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK + KC_GESC, 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_BSPC, KC_TRNS, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUSE,RESET, KC_PGUP, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MUTE, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT ), [_LAYER2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), [_LAYER3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ) - -}; \ No newline at end of file +}; diff --git a/keyboards/lucid/phantom_solder/phantom_solder.h b/keyboards/lucid/phantom_solder/phantom_solder.h index 7df6335b6cce..243684e7882f 100644 --- a/keyboards/lucid/phantom_solder/phantom_solder.h +++ b/keyboards/lucid/phantom_solder/phantom_solder.h @@ -18,11 +18,11 @@ along with this program. If not, see . /* Phantom Keymap Definitions */ #define LAYOUT_all( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, 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, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, \ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ - K40, K41, K42, K43, K46, K48, K49, K4A, K4C, K4D, K4E \ + K40, K41, K42, K43, K46, K48, 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, K1D, K1E }, \ diff --git a/keyboards/lucid/phantom_solder/rules.mk b/keyboards/lucid/phantom_solder/rules.mk index ddf921edb128..47ee4cc4a7c3 100644 --- a/keyboards/lucid/phantom_solder/rules.mk +++ b/keyboards/lucid/phantom_solder/rules.mk @@ -10,17 +10,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = 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 -KEYBOARD_LOCK_ENABLE = yes diff --git a/keyboards/lucid/scarlet/info.json b/keyboards/lucid/scarlet/info.json index 54291a1b910e..59526a9f4cf5 100644 --- a/keyboards/lucid/scarlet/info.json +++ b/keyboards/lucid/scarlet/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Scarlet PCB's", "url": "http://www.lucidkb.com", "maintainer": "Lucid", - "width": 18.25, - "height": 6.25, "layouts": { "LAYOUT_tkl_all": { "layout": [ diff --git a/keyboards/lucid/scarlet/rules.mk b/keyboards/lucid/scarlet/rules.mk index 9572d3371275..5391473f1f6a 100644 --- a/keyboards/lucid/scarlet/rules.mk +++ b/keyboards/lucid/scarlet/rules.mk @@ -10,16 +10,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = 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 diff --git a/keyboards/lyra/config.h b/keyboards/lyra/config.h new file mode 100644 index 000000000000..a4606507cec9 --- /dev/null +++ b/keyboards/lyra/config.h @@ -0,0 +1,19 @@ + /* Copyright 2021 Domanic Calleja + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "config_common.h" + diff --git a/keyboards/lyra/keymaps/default/config.h b/keyboards/lyra/keymaps/default/config.h new file mode 100644 index 000000000000..9c4bacd36d1b --- /dev/null +++ b/keyboards/lyra/keymaps/default/config.h @@ -0,0 +1,30 @@ +/* +This is the c configuration file for the keymap + +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +/* Select hand configuration */ + +#define MASTER_LEFT +// #define MASTER_RIGHT +// #define EE_HANDS + +#define TAPPING_FORCE_HOLD +#define TAPPING_TERM 100 diff --git a/keyboards/lyra/keymaps/default/keymap.c b/keyboards/lyra/keymaps/default/keymap.c new file mode 100644 index 000000000000..1d4bef03f24e --- /dev/null +++ b/keyboards/lyra/keymaps/default/keymap.c @@ -0,0 +1,48 @@ + /* Copyright 2021 Domanic Calleja + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +// +// Keymaps +// +enum lyra_layers { + /* _M_XYZ = Mac Os, _W_XYZ = Win/Linux */ + _QWERTY, + _FUNCTION + +}; +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + // Layer 0 + [_QWERTY] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_LBRC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_NUHS, KC_DEL, + KC_CLCK, KC_RBRC, 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_UP, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, TT(1), KC_APP, KC_PGDN, KC_SPC, KC_SPC, KC_PGUP, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + // Layer 1 + [_FUNCTION] = LAYOUT( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_TRNS, KC_TRNS, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) + +}; + diff --git a/keyboards/lyra/keymaps/default/rules.mk b/keyboards/lyra/keymaps/default/rules.mk new file mode 100644 index 000000000000..c02c449839f4 --- /dev/null +++ b/keyboards/lyra/keymaps/default/rules.mk @@ -0,0 +1 @@ +CONSOLE_ENABLE = yes \ No newline at end of file diff --git a/keyboards/lyra/keymaps/via/config.h b/keyboards/lyra/keymaps/via/config.h new file mode 100644 index 000000000000..9c4bacd36d1b --- /dev/null +++ b/keyboards/lyra/keymaps/via/config.h @@ -0,0 +1,30 @@ +/* +This is the c configuration file for the keymap + +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +/* Select hand configuration */ + +#define MASTER_LEFT +// #define MASTER_RIGHT +// #define EE_HANDS + +#define TAPPING_FORCE_HOLD +#define TAPPING_TERM 100 diff --git a/keyboards/lyra/keymaps/via/keymap.c b/keyboards/lyra/keymaps/via/keymap.c new file mode 100644 index 000000000000..efc40d2267b1 --- /dev/null +++ b/keyboards/lyra/keymaps/via/keymap.c @@ -0,0 +1,56 @@ + /* Copyright 2021 Domanic Calleja + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +// +// Keymaps +// + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + // Layer 0 + [0] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_LBRC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_NUHS, KC_DEL, + KC_CLCK, KC_RBRC, 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_UP, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, TT(1), KC_APP, KC_PGDN, KC_SPC, KC_SPC, KC_PGUP, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + // Layer 1 + [1] = LAYOUT( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_TRNS, KC_TRNS, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + // Layer 2 + [2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_TRNS, KC_TRNS, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_TRNS, KC_TRNS, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + // Layer 3 + [3] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_TRNS, KC_TRNS, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_TRNS, KC_TRNS, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/lyra/keymaps/via/rules.mk b/keyboards/lyra/keymaps/via/rules.mk new file mode 100644 index 000000000000..5e92d952f1f5 --- /dev/null +++ b/keyboards/lyra/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +CONSOLE_ENABLE = yes +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/lyra/lyra.c b/keyboards/lyra/lyra.c new file mode 100644 index 000000000000..6b9c47c4a041 --- /dev/null +++ b/keyboards/lyra/lyra.c @@ -0,0 +1,93 @@ + /* Copyright 2021 Domanic Calleja + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "lyra.h" + +#ifdef OLED_ENABLE + +// 'lyralogooled', 32x128px +oled_rotation_t oled_init_kb(oled_rotation_t rotation) { + if (is_keyboard_master()) { + return OLED_ROTATION_270; + } + return rotation; +} + +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } + if (is_keyboard_master()) { + oled_write_P(PSTR(" "), false); +# ifdef WPM_ENABLE + uint8_t n = get_current_wpm(); + char wpm_counter[4]; + wpm_counter[3] = '\0'; + wpm_counter[2] = '0' + n % 10; + wpm_counter[1] = (n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' '; + wpm_counter[0] = n / 10 ? '0' + n / 10 : ' '; + oled_write(wpm_counter, false); + oled_write_ln_P(PSTR(" WPM"), false); +# else + oled_advance_page(true); +# endif + oled_advance_page(true); + led_t led_usb_state = host_keyboard_led_state(); + oled_write_ln_P(PSTR("CPSLK"), led_usb_state.caps_lock); + oled_advance_page(true); oled_advance_page(true); + oled_write_ln_P(PSTR("Lyra"), false); + oled_write_ln_P(PSTR("v1.1"), false); + oled_write_ln_P(PSTR("by"), false); + oled_write_P(PSTR("Dom C"), false); + } else { + static const char PROGMEM QMK_logo[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0x78, 0x18, 0x0c, 0x04, 0x06, 0x02, + 0x02, 0x82, 0xc0, 0xf0, 0x38, 0x8c, 0xf2, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0xc0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x40, 0xc0, 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, 0x80, 0x40, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1f, 0x18, 0x30, 0x20, 0xa0, 0xe0, 0xf8, + 0x3e, 0x1f, 0x13, 0x0c, 0x06, 0xc3, 0xf0, 0x60, 0x00, 0x80, 0xf0, 0xe0, 0x00, 0x38, 0xfe, 0x67, + 0x7b, 0xa5, 0xf3, 0xf0, 0x70, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xe0, 0x70, 0x30, 0x20, 0x00, 0x00, + 0x00, 0x80, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0xdd, 0xdd, 0xdd, 0xe3, 0x7e, 0x3c, 0x3e, 0x61, 0xdf, + 0xde, 0xde, 0x01, 0xff, 0xfe, 0x00, 0x80, 0x80, 0x80, 0xff, 0xc0, 0xdf, 0xdf, 0xdf, 0xe0, 0xff, + 0x7f, 0x3c, 0x62, 0xdd, 0xdd, 0xdd, 0xe3, 0x7e, 0x3c, 0xfe, 0xc1, 0xfd, 0x7d, 0xc3, 0xfd, 0x7d, + 0xc3, 0xfe, 0xfc, 0x30, 0xea, 0xd5, 0xd5, 0xd5, 0xc3, 0xff, 0xfe, 0x7e, 0xc1, 0xfd, 0x7d, 0x7d, + 0xc3, 0xfe, 0xfc, 0x3f, 0xe1, 0xff, 0xff, 0x3c, 0x62, 0xdd, 0xdd, 0xdd, 0xf7, 0xe6, 0x00, 0x00, + 0x00, 0x78, 0xc4, 0xc2, 0x82, 0x82, 0x82, 0x82, 0xc2, 0xe4, 0x74, 0x7c, 0x3f, 0x1f, 0x31, 0x60, + 0xe0, 0xc0, 0x80, 0x9c, 0xbf, 0xe7, 0xf1, 0x78, 0x3e, 0x1f, 0x0b, 0x04, 0x02, 0x01, 0x00, 0x1c, + 0x3e, 0x2f, 0x13, 0x10, 0x0c, 0x1e, 0x3f, 0x2f, 0x13, 0x09, 0x1c, 0x3e, 0x2f, 0x10, 0x08, 0x06, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x06, + 0x06, 0x06, 0x07, 0x03, 0x7f, 0xc1, 0xbe, 0xbe, 0xbe, 0xa6, 0xe7, 0xc7, 0x60, 0xd4, 0xaa, 0xaa, + 0xaa, 0x86, 0xfe, 0xfc, 0x7f, 0xc0, 0xff, 0xff, 0x7f, 0xc0, 0xff, 0xff, 0xc4, 0xaa, 0xaa, 0xaa, + 0xa6, 0xfc, 0xf8, 0xff, 0x02, 0xff, 0xff, 0x60, 0xd4, 0xaa, 0xaa, 0xaa, 0x86, 0xfe, 0xfc, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x28, 0x24, + 0x32, 0x1b, 0x1f, 0x0f, 0x0f, 0x1f, 0x1f, 0x3c, 0x38, 0x38, 0x78, 0x70, 0x70, 0x70, 0x30, 0x38, + 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x07, 0x0d, 0x0e, 0x07, 0x03, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + oled_write_raw_P(QMK_logo, sizeof(QMK_logo)); + } + return false; +} +#endif diff --git a/keyboards/lyra/lyra.h b/keyboards/lyra/lyra.h new file mode 100644 index 000000000000..ba0c8344fe03 --- /dev/null +++ b/keyboards/lyra/lyra.h @@ -0,0 +1,23 @@ + /* Copyright 2021 Domanic Calleja + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + + +#ifdef KEYBOARD_lyra_rev1 + #include "rev1.h" +#endif diff --git a/keyboards/lyra/readme.md b/keyboards/lyra/readme.md new file mode 100644 index 000000000000..575afa3f03ff --- /dev/null +++ b/keyboards/lyra/readme.md @@ -0,0 +1,20 @@ +# Lyra Keyboard +By Domanic Calleja - https://github.com/Malevolti + +Lyra is 7x5 keys column-staggered split keyboard. Based on Sofle, Lily58, Corne and Helix keyboards. +There is an open source PCB available via https://github.com/Malevolti/Lyra +Instructions for handwiring and hand-wire specific case STLs are available for home 3d printing + +Make example for this keyboard (after setting up your build environment): + + make lyra:default + +Flashing example for this keyboard: + + make lyra:default:flash + +Press reset button on the keyboard when asked. + +Disconnect the first half, connect the second one and repeat the process. + +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/lyra/rev1/config.h b/keyboards/lyra/rev1/config.h new file mode 100644 index 000000000000..3dc9af28aa46 --- /dev/null +++ b/keyboards/lyra/rev1/config.h @@ -0,0 +1,50 @@ + /* Copyright 2021 Domanic Calleja + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4443 //DC +#define PRODUCT_ID 0x4C43 //LC +#define DEVICE_VER 0x3031 //01 +#define MANUFACTURER Dom +#define PRODUCT Lyra + +/* key matrix size */ +// Rows are doubled-up +#define MATRIX_ROWS 10 +#define MATRIX_COLS 7 + +// wiring of each half +#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4 } +#define MATRIX_COL_PINS { B2, B3, B1, F7, F6, F5, F4 } + +#define DIODE_DIRECTION COL2ROW + +#define TAPPING_TERM 100 + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* communication between sides */ +#define USE_SERIAL +#define SERIAL_USE_MULTI_TRANSACTION +#define SOFT_SERIAL_PIN D2 + +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/lyra/rev1/info.json b/keyboards/lyra/rev1/info.json new file mode 100644 index 000000000000..82dd811fd562 --- /dev/null +++ b/keyboards/lyra/rev1/info.json @@ -0,0 +1,90 @@ +{ + "keyboard_name": "lyra", + "url": "", + "maintainer": "malevolti", + "layouts": { + "LAYOUT": { + "layout": [ + {"x": 0, "y": 0.3}, + {"x": 1, "y": 0.4}, + {"x": 2, "y": 0.3}, + {"x": 3, "y": 0.1}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0.1}, + {"x": 6, "y": 0.25}, + + {"x": 8, "y": 0.25}, + {"x": 9, "y": 0.1}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0.1}, + {"x": 12, "y": 0.3}, + {"x": 13, "y": 0.4}, + {"x": 14, "y": 0.3}, + + {"x": 0, "y": 1.3}, + {"x": 1, "y": 1.4}, + {"x": 2, "y": 1.3}, + {"x": 3, "y": 1.1}, + {"x": 4, "y": 1}, + {"x": 5, "y": 1.1}, + {"x": 6, "y": 1.25}, + + {"x": 8, "y": 1.25}, + {"x": 9, "y": 1.1}, + {"x": 10, "y": 1}, + {"x": 11, "y": 1.1}, + {"x": 12, "y": 1.3}, + {"x": 13, "y": 1.4}, + {"x": 14, "y": 1.3}, + + {"x": 0, "y": 2.3}, + {"x": 1, "y": 2.4}, + {"x": 2, "y": 2.3}, + {"x": 3, "y": 2.1}, + {"x": 4, "y": 2}, + {"x": 5, "y": 2.1}, + {"x": 6, "y": 2.25}, + + {"x": 8, "y": 2.25}, + {"x": 9, "y": 2.1}, + {"x": 10, "y": 2}, + {"x": 11, "y": 2.1}, + {"x": 12, "y": 2.3}, + {"x": 13, "y": 2.4}, + {"x": 14, "y": 2.3}, + + {"x": 0, "y": 3.3}, + {"x": 1, "y": 3.4}, + {"x": 2, "y": 3.3}, + {"x": 3, "y": 3.1}, + {"x": 4, "y": 3}, + {"x": 5, "y": 3.1}, + {"x": 6, "y": 3.25}, + + {"x": 8, "y": 3.25}, + {"x": 9, "y": 3.1}, + {"x": 10, "y": 3}, + {"x": 11, "y": 3.1}, + {"x": 12, "y": 3.3}, + {"x": 13, "y": 3.4}, + {"x": 14, "y": 3.3}, + + {"x": 0, "y": 4.3}, + {"x": 1, "y": 4.4}, + {"x": 2, "y": 4.3}, + {"x": 3, "y": 4.1}, + {"x": 4, "y": 4}, + {"x": 5, "y": 4.1}, + {"x": 6.25, "y": 4.5}, + + {"x": 7.75, "y": 4.5}, + {"x": 9, "y": 4.1}, + {"x": 10, "y": 4}, + {"x": 11, "y": 4.1}, + {"x": 12, "y": 4.3}, + {"x": 13, "y": 4.4}, + {"x": 14, "y": 4.3} + ] + } + } +} diff --git a/keyboards/lyra/rev1/rev1.c b/keyboards/lyra/rev1/rev1.c new file mode 100644 index 000000000000..35b44aed1649 --- /dev/null +++ b/keyboards/lyra/rev1/rev1.c @@ -0,0 +1,17 @@ + /* Copyright 2021 Domanic Calleja + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "rev1.h" diff --git a/keyboards/lyra/rev1/rev1.h b/keyboards/lyra/rev1/rev1.h new file mode 100644 index 000000000000..81b862c5c676 --- /dev/null +++ b/keyboards/lyra/rev1/rev1.h @@ -0,0 +1,39 @@ +/* Copyright 2021 Domanic Calleja + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once +#include "lyra.h" + + +#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 }, \ + { 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 } \ + } diff --git a/keyboards/lyra/rev1/rules.mk b/keyboards/lyra/rev1/rules.mk new file mode 100644 index 000000000000..a6ddd38c8499 --- /dev/null +++ b/keyboards/lyra/rev1/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +SPLIT_KEYBOARD = yes +OLED_ENABLE = yes +WPM_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/m10a/info.json b/keyboards/m10a/info.json index 7692259297ea..c4d82f13abe0 100644 --- a/keyboards/m10a/info.json +++ b/keyboards/m10a/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Rama Works X Machine Industries M10-A Macropad", "url": "", "maintainer": "qmk", - "width": 3, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/m10a/keymaps/gam3cat/keymap.c b/keyboards/m10a/keymaps/gam3cat/keymap.c index 2d79007fe157..f962246ef3e4 100644 --- a/keyboards/m10a/keymaps/gam3cat/keymap.c +++ b/keyboards/m10a/keymaps/gam3cat/keymap.c @@ -114,7 +114,7 @@ void matrix_scan_user(void) { } -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { switch (biton32(state)) { case _L0: custom_backlight_level(0); diff --git a/keyboards/m10a/keymaps/gam3cat/rules.mk b/keyboards/m10a/keymaps/gam3cat/rules.mk index 374f5224250b..ce170ae85fe9 100644 --- a/keyboards/m10a/keymaps/gam3cat/rules.mk +++ b/keyboards/m10a/keymaps/gam3cat/rules.mk @@ -4,7 +4,7 @@ # TAP_DANCE_ENABLE = no # Enable TapDance functionality RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+1500) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) @@ -18,6 +18,5 @@ UNICODEMAP_ENABLE = no # Enable extended unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE = no # Audio output on port C6 #VARIABLE_TRACE = no # Use this to debug changes to variable values -API_SYSEX_ENABLE = no # This enables using the Quantum SYSEX API to send strings(+5390) KEY_LOCK_ENABLE = no # This enables key lock(+260) SPLIT_KEYBOARD = no # This enables split keyboard support and includes all necessary files located at quantum/split_common diff --git a/keyboards/m10a/rules.mk b/keyboards/m10a/rules.mk index 0f8368e63759..9941472e3ac8 100644 --- a/keyboards/m10a/rules.mk +++ b/keyboards/m10a/rules.mk @@ -7,19 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# 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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output UNICODE_ENABLE = yes # Unicode -API_SYSEX_ENABLE = yes diff --git a/keyboards/m3n3van/info.json b/keyboards/m3n3van/info.json index b9c5a89a8681..240c203c29a1 100644 --- a/keyboards/m3n3van/info.json +++ b/keyboards/m3n3van/info.json @@ -2,8 +2,6 @@ "keyboard_name": "m3n3van", "url": "https://github.com/matthewdias/m3n3van/tree/main/rev2", "maintainer": "matthewdias", - "width": 12.75, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/m3n3van/rules.mk b/keyboards/m3n3van/rules.mk index 831de6dc5cd8..7764b8bfff96 100644 --- a/keyboards/m3n3van/rules.mk +++ b/keyboards/m3n3van/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes diff --git a/keyboards/m65/config.h b/keyboards/m65/config.h new file mode 100644 index 000000000000..49db1720a76f --- /dev/null +++ b/keyboards/m65/config.h @@ -0,0 +1,33 @@ +/* +Copyright 2021 Alin M Elena + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +#define VENDOR_ID 0xBABA +#define MANUFACTURER Alin Elena +#define PRODUCT m65 + +#define MATRIX_ROWS 5 +#define MATRIX_COLS 13 + +#define DIODE_DIRECTION COL2ROW +#define DEBOUNCE 5 + +#define LOCKING_SUPPORT_ENABLE +#define LOCKING_RESYNC_ENABLE diff --git a/keyboards/m65/info.json b/keyboards/m65/info.json new file mode 100644 index 000000000000..966a9494669c --- /dev/null +++ b/keyboards/m65/info.json @@ -0,0 +1,81 @@ +{ + "keyboard_name": "M65", + "keyboard_folder": "m65", + "url": "https://alin.elena.space/blog/keeblego/", + "maintainer": "alinelena", + "layouts": { + "LAYOUT_ortho_5x13": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + + {"x": 0, "y": 1}, + {"x": 1, "y": 1}, + {"x": 2, "y": 1}, + {"x": 3, "y": 1}, + {"x": 4, "y": 1}, + {"x": 5, "y": 1}, + {"x": 6, "y": 1}, + {"x": 7, "y": 1}, + {"x": 8, "y": 1}, + {"x": 9, "y": 1}, + {"x": 10, "y": 1}, + {"x": 11, "y": 1}, + {"x": 12, "y": 1}, + + {"x": 0, "y": 2}, + {"x": 1, "y": 2}, + {"x": 2, "y": 2}, + {"x": 3, "y": 2}, + {"x": 4, "y": 2}, + {"x": 5, "y": 2}, + {"x": 6, "y": 2}, + {"x": 7, "y": 2}, + {"x": 8, "y": 2}, + {"x": 9, "y": 2}, + {"x": 10, "y": 2}, + {"x": 11, "y": 2}, + {"x": 12, "y": 2}, + + {"x": 0, "y": 3}, + {"x": 1, "y": 3}, + {"x": 2, "y": 3}, + {"x": 3, "y": 3}, + {"x": 4, "y": 3}, + {"x": 5, "y": 3}, + {"x": 6, "y": 3}, + {"x": 7, "y": 3}, + {"x": 8, "y": 3}, + {"x": 9, "y": 3}, + {"x": 10, "y": 3}, + {"x": 11, "y": 3}, + {"x": 12, "y": 3}, + + {"x": 0, "y": 4}, + {"x": 1, "y": 4}, + {"x": 2, "y": 4}, + {"x": 3, "y": 4}, + {"x": 4, "y": 4}, + {"x": 5, "y": 4}, + {"x": 6, "y": 4}, + {"x": 7, "y": 4}, + {"x": 8, "y": 4}, + {"x": 9, "y": 4}, + {"x": 10, "y": 4}, + {"x": 11, "y": 4} + {"x": 12, "y": 4} + ] + } + } +} diff --git a/keyboards/m65/keymaps/default/config.h b/keyboards/m65/keymaps/default/config.h new file mode 100644 index 000000000000..aabd6a2be662 --- /dev/null +++ b/keyboards/m65/keymaps/default/config.h @@ -0,0 +1,20 @@ +/* +Copyright 2021 Alin M Elena + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#define TAPPING_TOGGLE 2 diff --git a/keyboards/m65/keymaps/default/keymap.c b/keyboards/m65/keymaps/default/keymap.c new file mode 100644 index 000000000000..13093408b2e5 --- /dev/null +++ b/keyboards/m65/keymaps/default/keymap.c @@ -0,0 +1,113 @@ +/* +Copyright 2021 Alin M Elena + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layer_names { _QW = 0, _LWR, _RSE, _ADJ }; + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_QW] = LAYOUT_ortho_5x13( + KC_ESC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_BSPC , + KC_TAB, KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC , + KC_NUHS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , + KC_LSPO, KC_NUBS, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_UP , KC_SLSH , + KC_LCTL, KC_LGUI, TT(_LWR), KC_LALT, TT(_RSE), KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RSPC, KC_LEFT, KC_DOWN, KC_RGHT), + + [_LWR] = LAYOUT_ortho_5x13( + KC_GRV , KC_MUTE, KC_VOLU, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, G(KC_P), KC_SLEP, KC_WAKE, KC_PSCR, KC_DEL , KC_EQL , + KC_BTN3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , + KC_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , + KC_TRNS, KC_BTN1, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS , + KC_TRNS, KC_BTN4, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R), + + [_RSE] = LAYOUT_ortho_5x13( + KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_WH_U, KC_TRNS , + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_WH_L, KC_WH_D, KC_WH_R), + + [_ADJ] = LAYOUT_ortho_5x13( + KC_TRNS, KC_TRNS, A(KC_F2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , + KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, RESET , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , + KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , + KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , + KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; +// clang-format on + +// let us assume we start with both layers off +bool toggle_lwr = false; +bool toggle_rse = false; + +static inline void led_lwr(const bool on) { +#ifdef LED_NUM_LOCK_PIN + writePin(LED_NUM_LOCK_PIN, on); +#endif +} + +static inline void led_rse(const bool on) { +#ifdef LED_SCROLL_LOCK_PIN + writePin(LED_SCROLL_LOCK_PIN, on); +#endif +} + +static inline void led_caps(const bool on) { +#ifdef LED_CAPS_LOCK_PIN + writePin(LED_CAPS_LOCK_PIN, on); +#endif +} + +bool led_update_user(led_t led_state) { + // Disable the default LED update code, so that lock LEDs could be reused to show layer status. + return false; +} + +void matrix_scan_user(void) { + led_lwr(toggle_lwr); + led_rse(toggle_rse); + led_t led_state = host_keyboard_led_state(); + led_caps(!led_state.caps_lock); + if (layer_state_is(_ADJ)) { + led_lwr(true); + led_rse(true); + } +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case (TT(_LWR)): + if (!record->event.pressed && record->tap.count == TAPPING_TOGGLE) { + // This runs before the TT() handler toggles the layer state, so the current layer state is the opposite of the final one after toggle. + toggle_lwr = !layer_state_is(_LWR); + } + return true; + break; + case (TT(_RSE)): + if (record->event.pressed && record->tap.count == TAPPING_TOGGLE) { + toggle_rse = !layer_state_is(_RSE); + } + return true; + break; + default: + return true; + } +} + +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LWR, _RSE, _ADJ); } diff --git a/keyboards/m65/keymaps/default/readme.md b/keyboards/m65/keymaps/default/readme.md new file mode 100644 index 000000000000..ae71342232dd --- /dev/null +++ b/keyboards/m65/keymaps/default/readme.md @@ -0,0 +1,13 @@ +![M65 Layout Image](https://i.imgur.com/Z2O8yhGh.png) + +# Default M65 Layout + +This is the default layout for M65. For the most part it's a straightforward and easy to follow layout inspired by ISO with a UK +turn. The only unusual key is the key in the upper left, which sends Escape normally, but Grave when in layer 1 aka LWR. Similarly +number row in layer 1 give the usual audio KC_GRV, KC_AUDIO_MUTE, KC_AUDIO_VOL_UP, KC_AUDIO_VOL_DOWN, KC_MEDIA_PREV_TRACK, +KC_MEDIA_PLAY_PAUSE, KC_MEDIA_NEXT_TRACK, M_EXTDISP, KC_SYSTEM_SLEEP, KC_SYSTEM_WAKE, KC_PSCREEN, KC_DEL, KC_EQL in layer 2 aka +RSE one gets F1-F12 mouse emulation can be used in layer 1 and 2. + +flashing is done by LWR+RSE+r + +full layout below see in keymap.c diff --git a/keyboards/m65/keymaps/dk/config.h b/keyboards/m65/keymaps/dk/config.h new file mode 100644 index 000000000000..aabd6a2be662 --- /dev/null +++ b/keyboards/m65/keymaps/dk/config.h @@ -0,0 +1,20 @@ +/* +Copyright 2021 Alin M Elena + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#define TAPPING_TOGGLE 2 diff --git a/keyboards/m65/keymaps/dk/keymap.c b/keyboards/m65/keymaps/dk/keymap.c new file mode 100644 index 000000000000..4a26f4eedaf1 --- /dev/null +++ b/keyboards/m65/keymaps/dk/keymap.c @@ -0,0 +1,114 @@ +/* +Copyright 2021 Alin M Elena + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H +#include "keymap_danish.h" + +enum layer_names { _QW = 0, _LWR, _RSE, _ADJ }; + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_QW] = LAYOUT_ortho_5x13( + KC_ESC, DK_1 , DK_2 , DK_3 , DK_4 , DK_5 , DK_6 , DK_7 , DK_8 , DK_9 , DK_0 , DK_PLUS, KC_BSPC , + KC_TAB, DK_Q , DK_W , DK_E , DK_R , DK_T , DK_Y , DK_U , DK_I , DK_O , DK_P , DK_ARNG, DK_DIAE , + DK_QUOT, DK_A , DK_S , DK_D , DK_F , DK_G , DK_H , DK_J , DK_K , DK_L , DK_AE , DK_OSTR, KC_ENT , + KC_LSPO, DK_LABK, DK_Z , DK_X , DK_C , DK_V , DK_B , DK_N , DK_M , DK_COMM, DK_DOT , KC_UP , DK_MINS , + KC_LCTL, KC_LGUI, TT(_LWR), KC_LALT, TT(_RSE), KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RSPC, KC_LEFT, KC_DOWN, KC_RGHT), + + [_LWR] = LAYOUT_ortho_5x13( + DK_HALF, KC_MUTE, KC_VOLU, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, G(KC_P), KC_SLEP, KC_WAKE, KC_PSCR, KC_DEL , DK_ACUT , + KC_BTN3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , + KC_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , + KC_TRNS, KC_BTN1, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS , + KC_TRNS, KC_BTN4, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R), + + [_RSE] = LAYOUT_ortho_5x13( + KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_WH_U, KC_TRNS , + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_WH_L, KC_WH_D, KC_WH_R), + + [_ADJ] = LAYOUT_ortho_5x13( + KC_TRNS, KC_TRNS, A(KC_F2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , + KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, RESET , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , + KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , + KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , + KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; +// clang-format on + +// let us assume we start with both layers off +bool toggle_lwr = false; +bool toggle_rse = false; + +static inline void led_lwr(const bool on) { +#ifdef LED_NUM_LOCK_PIN + writePin(LED_NUM_LOCK_PIN, on); +#endif +} + +static inline void led_rse(const bool on) { +#ifdef LED_SCROLL_LOCK_PIN + writePin(LED_SCROLL_LOCK_PIN, on); +#endif +} + +static inline void led_caps(const bool on) { +#ifdef LED_CAPS_LOCK_PIN + writePin(LED_CAPS_LOCK_PIN, on); +#endif +} + +bool led_update_user(led_t led_state) { + // Disable the default LED update code, so that lock LEDs could be reused to show layer status. + return false; +} + +void matrix_scan_user(void) { + led_lwr(toggle_lwr); + led_rse(toggle_rse); + led_t led_state = host_keyboard_led_state(); + led_caps(!led_state.caps_lock); + if (layer_state_is(_ADJ)) { + led_lwr(true); + led_rse(true); + } +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case (TT(_LWR)): + if (!record->event.pressed && record->tap.count == TAPPING_TOGGLE) { + // This runs before the TT() handler toggles the layer state, so the current layer state is the opposite of the final one after toggle. + toggle_lwr = !layer_state_is(_LWR); + } + return true; + break; + case (TT(_RSE)): + if (record->event.pressed && record->tap.count == TAPPING_TOGGLE) { + toggle_rse = !layer_state_is(_RSE); + } + return true; + break; + default: + return true; + } +} + +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LWR, _RSE, _ADJ); } diff --git a/keyboards/m65/keymaps/dk/readme.md b/keyboards/m65/keymaps/dk/readme.md new file mode 100644 index 000000000000..06fed3bda651 --- /dev/null +++ b/keyboards/m65/keymaps/dk/readme.md @@ -0,0 +1,13 @@ +![M65 Layout Image](https://i.imgur.com/RQqsM4gh.png) + +# Default M65 Layout + +This is the Danish keymap for M65. For the most part it's a straightforward and easy to follow layout inspired by ISO with a DK +turn. The only unusual key is the key in the upper left, which sends Escape normally, but Grave when in layer 1 aka LWR. Similarly +number row in layer 1 give the usual audio KC_GRV, KC_AUDIO_MUTE, KC_AUDIO_VOL_UP, KC_AUDIO_VOL_DOWN, KC_MEDIA_PREV_TRACK, +KC_MEDIA_PLAY_PAUSE, KC_MEDIA_NEXT_TRACK, M_EXTDISP, KC_SYSTEM_SLEEP, KC_SYSTEM_WAKE, KC_PSCREEN, KC_DEL, DK_ACUT in layer 2 aka +RSE one gets F1-F12 mouse emulation can be used in layer 1 and 2. + +flashing is done by LWR+RSE+r + +full layout below see in keymap.c diff --git a/keyboards/m65/keymaps/uk/config.h b/keyboards/m65/keymaps/uk/config.h new file mode 100644 index 000000000000..aabd6a2be662 --- /dev/null +++ b/keyboards/m65/keymaps/uk/config.h @@ -0,0 +1,20 @@ +/* +Copyright 2021 Alin M Elena + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#define TAPPING_TOGGLE 2 diff --git a/keyboards/m65/keymaps/uk/keymap.c b/keyboards/m65/keymaps/uk/keymap.c new file mode 100644 index 000000000000..0f426f61498c --- /dev/null +++ b/keyboards/m65/keymaps/uk/keymap.c @@ -0,0 +1,114 @@ +/* +Copyright 2021 Alin M Elena + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H +#include "keymap_uk.h" + +enum layer_names { _QW = 0, _LWR, _RSE, _ADJ }; + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_QW] = LAYOUT_ortho_5x13( + KC_ESC, UK_1 , UK_2 , UK_3 , UK_4 , UK_5 , UK_6 , UK_7 , UK_8 , UK_9 , UK_0 , UK_MINS, KC_BSPC , + KC_TAB, UK_Q , UK_W , UK_E , UK_R , UK_T , UK_Y , UK_U , UK_I , UK_O , UK_P , UK_LBRC, UK_RBRC , + UK_HASH, UK_A , UK_S , UK_D , UK_F , UK_G , UK_H , UK_J , UK_K , UK_L , UK_SCLN, UK_QUOT, KC_ENT , + KC_LSPO, UK_BSLS, UK_Z , UK_X , UK_C , UK_V , UK_B , UK_N , UK_M , UK_COMM, UK_DOT , KC_UP , UK_SLSH , + KC_LCTL, KC_LGUI, TT(_LWR), KC_LALT, TT(_RSE), KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RSPC, KC_LEFT, KC_DOWN, KC_RGHT), + + [_LWR] = LAYOUT_ortho_5x13( + KC_GRV , KC_MUTE, KC_VOLU, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, G(KC_P), KC_SLEP, KC_WAKE, KC_PSCR, KC_DEL , UK_EQL , + KC_BTN3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , + KC_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , + KC_TRNS, KC_BTN1, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS , + KC_TRNS, KC_BTN4, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R), + + [_RSE] = LAYOUT_ortho_5x13( + KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_WH_U, KC_TRNS , + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_WH_L, KC_WH_D, KC_WH_R), + + [_ADJ] = LAYOUT_ortho_5x13( + KC_TRNS, KC_TRNS, A(KC_F2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , + KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, RESET , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , + KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , + KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , + KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; +// clang-format on + +// let us assume we start with both layers off +bool toggle_lwr = false; +bool toggle_rse = false; + +static inline void led_lwr(const bool on) { +#ifdef LED_NUM_LOCK_PIN + writePin(LED_NUM_LOCK_PIN, on); +#endif +} + +static inline void led_rse(const bool on) { +#ifdef LED_SCROLL_LOCK_PIN + writePin(LED_SCROLL_LOCK_PIN, on); +#endif +} + +static inline void led_caps(const bool on) { +#ifdef LED_CAPS_LOCK_PIN + writePin(LED_CAPS_LOCK_PIN, on); +#endif +} + +bool led_update_user(led_t led_state) { + // Disable the default LED update code, so that lock LEDs could be reused to show layer status. + return false; +} + +void matrix_scan_user(void) { + led_lwr(toggle_lwr); + led_rse(toggle_rse); + led_t led_state = host_keyboard_led_state(); + led_caps(!led_state.caps_lock); + if (layer_state_is(_ADJ)) { + led_lwr(true); + led_rse(true); + } +} + +bool process_record_user(uint16_t keycode, keyrecord_t* record) { + switch (keycode) { + case (TT(_LWR)): + if (!record->event.pressed && record->tap.count == TAPPING_TOGGLE) { + // This runs before the TT() handler toggles the layer state, so the current layer state is the opposite of the final one after toggle. + toggle_lwr = !layer_state_is(_LWR); + } + return true; + break; + case (TT(_RSE)): + if (record->event.pressed && record->tap.count == TAPPING_TOGGLE) { + toggle_rse = !layer_state_is(_RSE); + } + return true; + break; + default: + return true; + } +} + +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LWR, _RSE, _ADJ); } diff --git a/keyboards/m65/keymaps/uk/readme.md b/keyboards/m65/keymaps/uk/readme.md new file mode 100644 index 000000000000..bc29d23905ae --- /dev/null +++ b/keyboards/m65/keymaps/uk/readme.md @@ -0,0 +1,13 @@ +# Default M65 Layout + +![M65 Layout Image](https://i.imgur.com/KZFnAU5h.png) + +This is the default layout for M65. For the most part it's a straightforward and easy to follow layout inspired by ISO with a UK +turn. The only unusual key is the key in the upper left, which sends Escape normally, but Grave when in layer 1 aka LWR. Similarly +number row in layer 1 give the usual audio KC_GRV, KC_AUDIO_MUTE, KC_AUDIO_VOL_UP, KC_AUDIO_VOL_DOWN, KC_MEDIA_PREV_TRACK, +KC_MEDIA_PLAY_PAUSE, KC_MEDIA_NEXT_TRACK, M_EXTDISP, KC_SYSTEM_SLEEP, KC_SYSTEM_WAKE, KC_PSCREEN, KC_DEL, KC_EQL in layer 2 aka +RSE one gets F1-F12 mouse emulation can be used in layer 1 and 2. + +flashing is done by LWR+RSE+r + +full layout below see in keymap.c diff --git a/keyboards/m65/m65.c b/keyboards/m65/m65.c new file mode 100644 index 000000000000..35e2b412267c --- /dev/null +++ b/keyboards/m65/m65.c @@ -0,0 +1,19 @@ +/* +Copyright 2021 Alin M Elena + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + + +#include "m65.h" diff --git a/keyboards/m65/m65.h b/keyboards/m65/m65.h new file mode 100644 index 000000000000..50065c9f8976 --- /dev/null +++ b/keyboards/m65/m65.h @@ -0,0 +1,34 @@ +/* +Copyright 2021 Alin M Elena + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_ortho_5x13( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, \ + 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, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, \ + K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012 }, \ + { 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 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312 }, \ + { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412 } \ +} diff --git a/keyboards/m65/readme.md b/keyboards/m65/readme.md new file mode 100644 index 000000000000..9493a3fffc37 --- /dev/null +++ b/keyboards/m65/readme.md @@ -0,0 +1,22 @@ +# M65 + +![M65](https://i.imgur.com/gXuecush.jpg) + +A (13x5) ortholinear keyboard that can be hand wired or using a pcb. + +* Keyboard Maintainer: [Alin Elena](https://github.com/alinelena) ([@drFaustroll on GitLab](https://gitlab.com/drFaustroll)) +* Hardware Supported: custom pcb [see](https://gitlab.com/drFaustroll/m65) STM/APM32F103C8T6, aka Black Pill +* Hardware Availability: [custom how to](https://alin.elena.space/blog/keeblego/) + + +Make example for this keyboard (after setting up your build environment): + + make m65/rev1:default + +Flashing example for this keyboard: + + make m65/rev1:default:flash + +To enter flashing mode, press Lower+Raise+R. + +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/m65/rev1/chconf.h b/keyboards/m65/rev1/chconf.h new file mode 100644 index 000000000000..8c43fb26979b --- /dev/null +++ b/keyboards/m65/rev1/chconf.h @@ -0,0 +1,29 @@ +/* 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/m65/rev1/chconf.h -r platforms/chibios/common/configs/chconf.h` + */ + +#pragma once + +#define CH_CFG_ST_TIMEDELTA 0 + +#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE + +#include_next + diff --git a/keyboards/m65/rev1/config.h b/keyboards/m65/rev1/config.h new file mode 100644 index 000000000000..090210f254e7 --- /dev/null +++ b/keyboards/m65/rev1/config.h @@ -0,0 +1,32 @@ +/* +Copyright 2021 Alin M Elena + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#define DEVICE_VER 0x0001 +#define PRODUCT_ID 0x6060 + +#define LED_NUM_LOCK_PIN B12 +#define LED_SCROLL_LOCK_PIN B13 +#define LED_CAPS_LOCK_PIN C13 + +// 0 1 2 3 4 +#define MATRIX_ROW_PINS { B11, B0, B1, A2, A3 } +// 0 1 2 3 4 5 6 7 8 9 10 11 12 +#define MATRIX_COL_PINS {A10, A15, B3, B4, B5, B9, B8, B7, B6, C15, A0, A7, B10 } + +#define UNUSED_PINS diff --git a/keyboards/m65/rev1/mcuconf.h b/keyboards/m65/rev1/mcuconf.h new file mode 100644 index 000000000000..20df276a5ac2 --- /dev/null +++ b/keyboards/m65/rev1/mcuconf.h @@ -0,0 +1,27 @@ +/* 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/m65/rev1/mcuconf.h -r platforms/chibios/STM32_F103_STM32DUINO/configs/mcuconf.h` + */ + +#pragma once + +#include_next + +#undef STM32_SPI_USE_SPI2 +#define STM32_SPI_USE_SPI2 FALSE diff --git a/keyboards/m65/rev1/readme.md b/keyboards/m65/rev1/readme.md new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/keyboards/m65/rev1/rules.mk b/keyboards/m65/rev1/rules.mk new file mode 100644 index 000000000000..a974bcb9d3dc --- /dev/null +++ b/keyboards/m65/rev1/rules.mk @@ -0,0 +1,19 @@ +# MCU name +MCU = STM32F103 + +# Bootloader selection +BOOTLOADER = stm32duino + +# 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 = yes # Commands for debug and configuration +# 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 diff --git a/keyboards/machkeyboards/mach3/config.h b/keyboards/machkeyboards/mach3/config.h new file mode 100644 index 000000000000..d78f8dce9b37 --- /dev/null +++ b/keyboards/machkeyboards/mach3/config.h @@ -0,0 +1,45 @@ +/* Copyright 2021 Mach Keyboards + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4D41 +#define PRODUCT_ID 0x4D33 +#define DEVICE_VER 0x0001 +#define MANUFACTURER MachKeyboard +#define PRODUCT Mach33 + +/* key matrix size */ +#define MATRIX_ROWS 3 +#define MATRIX_COLS 3 + +/* key pins */ +#define MATRIX_ROW_PINS { D1, D0, D4 } +#define MATRIX_COL_PINS { E6, B4, B5 } + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* backlight */ +#define BACKLIGHT_PIN B6 +#define BACKLIGHT_BREATHING +#define BACKLIGHT_LEVELS 5 + +/* debounce */ +#define DEBOUNCE 5 \ No newline at end of file diff --git a/keyboards/machkeyboards/mach3/info.json b/keyboards/machkeyboards/mach3/info.json new file mode 100644 index 000000000000..42f29a98733a --- /dev/null +++ b/keyboards/machkeyboards/mach3/info.json @@ -0,0 +1,47 @@ +{ + "keyboard_name": "Mach 3", + "url": "https://machkeyboards.com", + "maintainer": "etiennelepagel", + "layouts": { + "LAYOUT_3x3": { + "layout": [ + { + "x": 0, + "y": 0 + }, + { + "x": 1, + "y": 0 + }, + { + "x": 2, + "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 + } + ] + } + } +} \ No newline at end of file diff --git a/keyboards/machkeyboards/mach3/keymaps/default/keymap.c b/keyboards/machkeyboards/mach3/keymaps/default/keymap.c new file mode 100644 index 000000000000..19133200e03e --- /dev/null +++ b/keyboards/machkeyboards/mach3/keymaps/default/keymap.c @@ -0,0 +1,24 @@ +/* Copyright 2021 Mach Keyboards + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_3x3( + BL_INC, BL_DEC, BL_BRTG, + BL_INC, BL_DEC, BL_BRTG, + BL_INC, BL_DEC, BL_BRTG + ) +}; \ No newline at end of file diff --git a/keyboards/machkeyboards/mach3/keymaps/default/readme.md b/keyboards/machkeyboards/mach3/keymaps/default/readme.md new file mode 100644 index 000000000000..d12e48d497b6 --- /dev/null +++ b/keyboards/machkeyboards/mach3/keymaps/default/readme.md @@ -0,0 +1,4 @@ +# Default Mach 3 Keymap + +This is the default layout that comes with the Mach 3. +The keys are set to only control the backlight. \ No newline at end of file diff --git a/keyboards/machkeyboards/mach3/keymaps/via/keymap.c b/keyboards/machkeyboards/mach3/keymaps/via/keymap.c new file mode 100644 index 000000000000..19133200e03e --- /dev/null +++ b/keyboards/machkeyboards/mach3/keymaps/via/keymap.c @@ -0,0 +1,24 @@ +/* Copyright 2021 Mach Keyboards + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_3x3( + BL_INC, BL_DEC, BL_BRTG, + BL_INC, BL_DEC, BL_BRTG, + BL_INC, BL_DEC, BL_BRTG + ) +}; \ No newline at end of file diff --git a/keyboards/machkeyboards/mach3/keymaps/via/rules.mk b/keyboards/machkeyboards/mach3/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/machkeyboards/mach3/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/machkeyboards/mach3/mach3.c b/keyboards/machkeyboards/mach3/mach3.c new file mode 100644 index 000000000000..9769d02a531c --- /dev/null +++ b/keyboards/machkeyboards/mach3/mach3.c @@ -0,0 +1,42 @@ +/* Copyright 2021 Mach Keyboards + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "mach3.h" + +#ifdef RGB_MATRIX_ENABLE +led_config_t g_led_config = { { + // Key Matrix to LED Index + { 0, 1, 2 }, + { 7, 6, 5 }, + { 8, 9, 10 }, +}, { + // LED Index to Physical Position + { 0, 0 }, { 112, 0 }, { 224, 0 }, + { 0, 112 }, { 112, 112 }, { 224, 112 }, + { 0, 224 }, { 112, 224 }, { 224, 224 }, +}, { + // LED Index to Flag + 4, 4, 4, + 4, 4, 4, + 4, 4, 4 +} }; +#endif + +void keyboard_pre_init_kb(void) { + setPinOutput(F5); + writePinHigh(F5); + + keyboard_pre_init_user(); +} \ No newline at end of file diff --git a/keyboards/machkeyboards/mach3/mach3.h b/keyboards/machkeyboards/mach3/mach3.h new file mode 100644 index 000000000000..2eeadb3fbaa2 --- /dev/null +++ b/keyboards/machkeyboards/mach3/mach3.h @@ -0,0 +1,29 @@ +/* Copyright 2021 Mach Keyboards + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define LAYOUT_3x3( \ + K00, K01, K02, \ + K10, K11, K12, \ + K20, K21, K22 \ + ) \ + { \ + { K00, K01, K02 }, \ + { K10, K11, K12 }, \ + { K20, K21, K22 } \ + } diff --git a/keyboards/machkeyboards/mach3/readme.md b/keyboards/machkeyboards/mach3/readme.md new file mode 100644 index 000000000000..16c61511b192 --- /dev/null +++ b/keyboards/machkeyboards/mach3/readme.md @@ -0,0 +1,22 @@ +# Mach 3 + +A 3x3 macropad with RGB underglow. +Note: It sets an output pin to high, which is the alimentation of the backlight circuit. + +* Keyboard Maintainer: [etiennelepagel](https://github.com/etiennelepagel) +* Hardware Supported: Mach 3 from Mach Keyboards +* Hardware Availability: [Mach Keyboards Official Website](https://machkeyboards.com/) + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB +* **Keycode in layout**: Press the key mapped to `RESET` if it is available + +Make example for this keyboard (after setting up your build environment): + + make machkeyboards/mach3: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/machkeyboards/mach3/rules.mk b/keyboards/machkeyboards/mach3/rules.mk new file mode 100644 index 000000000000..3c2034c726ec --- /dev/null +++ b/keyboards/machkeyboards/mach3/rules.mk @@ -0,0 +1,21 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +UNICODE_ENABLE = yes +BACKLIGHT_DRIVER = pwm \ No newline at end of file diff --git a/keyboards/machkeyboards/readme.md b/keyboards/machkeyboards/readme.md new file mode 100644 index 000000000000..ef2f8b159d78 --- /dev/null +++ b/keyboards/machkeyboards/readme.md @@ -0,0 +1,7 @@ +# Mach Keyboards + +Mach Keyboards focus itself on selling the best macropad in the world. + +[Mach Keyboards Official Website](https://machkeyboards.com) +[Discord](https://discord.gg/ukFKFc7eXy) +[Instagram](https://www.instagram.com/machkeyboards) \ No newline at end of file diff --git a/keyboards/macro1/config.h b/keyboards/macro1/config.h new file mode 100644 index 000000000000..54203ef2bfe8 --- /dev/null +++ b/keyboards/macro1/config.h @@ -0,0 +1,55 @@ +/* Copyright 2021 Laneware Peripherals + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4C50 // "LP" = Laneware Peripherals +#define PRODUCT_ID 0x9999 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Laneware Peripherals +#define PRODUCT MACRO-1 + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 4 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { E6, B7, D0, D1, D2, B3 } +#define MATRIX_COL_PINS { D3, D4, D6, D7 } +#define UNUSED_PINS + +/*ENCODER*/ +#define ENCODERS_PAD_A { F0 } +#define ENCODERS_PAD_B { F1 } +#define ENCODER_RESOLUTION 4 + +/* 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/macro1/info.json b/keyboards/macro1/info.json new file mode 100644 index 000000000000..dbb7bafa74c7 --- /dev/null +++ b/keyboards/macro1/info.json @@ -0,0 +1,84 @@ +{ + "keyboard_name": "MACRO1", + "url": "", + "maintainer": "qmk", + "layouts":{ + "LAYOUT_numpad":{ + "layout":[ + {"label":"Mute", "x":0, "y":0}, + {"label":"Play", "x":2, "y":0}, + {"label":"Backspace", "x":3, "y":0}, + {"label":"Numlock", "x":0, "y":1}, + {"label":"/", "x":1, "y":1}, + {"label":"*", "x":2, "y":1}, + {"label":"-", "x":3, "y":1}, + {"label":"7", "x":0, "y":2}, + {"label":"8", "x":1, "y":2}, + {"label":"9", "x":2, "y":2}, + {"label":"+", "x":3, "y":2, "h":2}, + {"label":"4", "x":0, "y":3}, + {"label":"5", "x":1, "y":3}, + {"label":"6", "x":2, "y":3}, + {"label":"1", "x":0, "y":4}, + {"label":"2", "x":1, "y":4}, + {"label":"3", "x":2, "y":4}, + {"label":"Enter", "x":3, "y":4, "h":2}, + {"label":"0", "x":0, "y":5, "w":2}, + {"label":".", "x":2, "y":5} + ] + }, + + "LAYOUT_southpaw":{ + "layout":[ + {"label":"Mute", "x":0, "y":0}, + {"label":"Play", "x":2, "y":0}, + {"label":"Backspace", "x":3, "y":0}, + {"label":"Numlock", "x":0, "y":1}, + {"label":"/", "x":1, "y":1}, + {"label":"*", "x":2, "y":1}, + {"label":"-", "x":3, "y":1}, + {"label":"+", "x":0, "y":2, "h":2}, + {"label":"7", "x":1, "y":2}, + {"label":"8", "x":2, "y":2}, + {"label":"9", "x":3, "y":2}, + {"label":"4", "x":1, "y":3}, + {"label":"5", "x":2, "y":3}, + {"label":"6", "x":3, "y":3}, + {"label":"Enter", "x":0, "y":4, "h":2}, + {"label":"1", "x":1, "y":4}, + {"label":"2", "x":2, "y":4}, + {"label":"3", "x":3, "y":4}, + {"label":".", "x":1, "y":5}, + {"label":"0", "x":2, "y":5, "w":2} + ] + }, + + "LAYOUT_macropad":{ + "layout":[ + {"label":"Mute", "x":0, "y":0}, + {"label":"F1", "x":2, "y":0}, + {"label":"F2", "x":3, "y":0}, + {"label":"F3", "x":0, "y":1}, + {"label":"F4", "x":1, "y":1}, + {"label":"F5", "x":2, "y":1}, + {"label":"F6", "x":3, "y":1}, + {"label":"F7", "x":0, "y":2}, + {"label":"F8", "x":1, "y":2}, + {"label":"F9", "x":2, "y":2}, + {"label":"F10", "x":3, "y":2}, + {"label":"F11", "x":0, "y":3}, + {"label":"F12", "x":1, "y":3}, + {"label":"F13", "x":2, "y":3}, + {"label":"F14", "x":3, "y":3}, + {"label":"F15", "x":0, "y":4}, + {"label":"F16", "x":1, "y":4}, + {"label":"F17", "x":2, "y":4}, + {"label":"F18", "x":3, "y":4}, + {"label":"F19", "x":0, "y":5}, + {"label":"F20", "x":1, "y":5}, + {"label":"F21", "x":2, "y":5}, + {"label":"F22", "x":3, "y":5} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/macro1/keymaps/default/keymap.c b/keyboards/macro1/keymaps/default/keymap.c new file mode 100644 index 000000000000..22cff4a718b0 --- /dev/null +++ b/keyboards/macro1/keymaps/default/keymap.c @@ -0,0 +1,64 @@ + /* Copyright 2021 Laneware Peripherals + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +/* + * ┌───┐ ┌───┬───┐ + * │K00│ │K02│K03│ + * └───┘ └───┴───┘ + * ┌───┬───┬───┬───┐ + * │K10│K11│K12│K13│ + * ├───┼───┼───┼───┤ + * │K20│K21│K22│K23│ + * ├───┼───┼───┤ │ + * │K30│K31│K32│ │ + * ├───┼───┼───┼───┤ + * │K40│K41│K42│K43│ + * ├───┴───┼───┤ │ + * │K50 │K52│ │ + * └───────┴───┴───┘ + */ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_numpad( + KC_MUTE, KC_MPLY, KC_BSPC, + KC_CALC, KC_KP_SLASH, KC_KP_ASTERISK, KC_KP_MINUS, + KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_PLUS, + KC_KP_4, KC_KP_5, KC_KP_6, + KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_ENTER, + KC_KP_0, KC_KP_DOT), + + [1] = LAYOUT_numpad( + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS), + + [2] = LAYOUT_numpad( + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS), }; + + + + diff --git a/keyboards/macro1/keymaps/macropad/keymap.c b/keyboards/macro1/keymaps/macropad/keymap.c new file mode 100644 index 000000000000..68566fb53f69 --- /dev/null +++ b/keyboards/macro1/keymaps/macropad/keymap.c @@ -0,0 +1,63 @@ + /* Copyright 2021 Laneware Peripherals + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +/* + * ┌───┐ ┌───┬───┐ + * │K00│ │K01│K02│ + * └───┘ └───┴───┘ + * ┌───┬───┬───┬───┐ + * │K10│K11│K12│K13│ + * ├───┼───┼───┼───┤ + * │K20│K21│K22│K23│ + * ├───┼───┼───┼───┤ + * │K30│K31│K32│K33│ + * ├───┼───┼───┼───┤ + * │K40│K41│K42│K43│ + * ├───┼───┼───┼───┤ + * │K50│K51│K52│K53│ + * └───┴───┴───┴───┘ + */ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_macropad( + KC_MUTE, KC_F1, KC_F2, + KC_F3, KC_F4, KC_F5, KC_F6, + KC_F7, KC_F8, KC_F9, KC_F10, + KC_F11, KC_F12, KC_F13, KC_F14, + KC_F15, KC_F16, KC_F17, KC_F18, + KC_F19, KC_F20, KC_F21, KC_F22), + + [1] = LAYOUT_macropad( + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + [2] = LAYOUT_macropad( + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), }; + + + diff --git a/keyboards/macro1/keymaps/southpaw/keymap.c b/keyboards/macro1/keymaps/southpaw/keymap.c new file mode 100644 index 000000000000..b8c6bfb33996 --- /dev/null +++ b/keyboards/macro1/keymaps/southpaw/keymap.c @@ -0,0 +1,63 @@ + /* Copyright 2021 Laneware Peripherals + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +/* + * ┌───┐ ┌───┬───┐ + * │K00│ │K02│K03│ + * └───┘ └───┴───┘ + * ┌───┬───┬───┬───┐ + * │K10│K11│K12│K13│ + * ├───┼───┼───┼───┤ + * │K20│K21│K22│K23│ + * │ ├───┼───┼───┤ + * │ │K31│K32│K33│ + * ├───┼───┼───┼───┤ + * │K40│K41│K42│K43│ + * │ ├───┼───┴───┤ + * │ │K51│K52 │ + * └───┴───┴───────┘ + */ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_southpaw( + KC_MUTE, KC_MPLY, KC_BSPC, + KC_CALC, KC_KP_SLASH, KC_KP_ASTERISK, KC_KP_MINUS, + KC_KP_PLUS, KC_KP_7, KC_KP_8, KC_KP_9, + KC_KP_4, KC_KP_5, KC_KP_6, + KC_KP_ENTER, KC_KP_1, KC_KP_2, KC_KP_3, + KC_KP_DOT, KC_KP_0), + + [1] = LAYOUT_southpaw( + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS), + + [2] = LAYOUT_southpaw( + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS), }; + + + diff --git a/keyboards/macro1/keymaps/via/keymap.c b/keyboards/macro1/keymaps/via/keymap.c new file mode 100644 index 000000000000..f3e53a78e9d1 --- /dev/null +++ b/keyboards/macro1/keymaps/via/keymap.c @@ -0,0 +1,103 @@ + /* Copyright 2021 Laneware Peripherals + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +/* + * ┌───┐ ┌───┬───┐ + * │K00│ │K02│K03│ + * └───┘ └───┴───┘ + * ┌───┬───┬───┬───┐ + * │K10│K11│K12│K13│ + * ├───┼───┼───┼───┤ + * │K20│K21│K22│K23│ + * ├───┼───┼───┤ │ + * │K30│K31│K32│ │ + * ├───┼───┼───┼───┤ + * │K40│K41│K42│K43│ + * ├───┴───┼───┤ │ + * │K50 │K52│ │ + * └───────┴───┴───┘ + */ + + /* + * ┌───┐ ┌───┬───┐ + * │K00│ │K02│K03│ + * └───┘ └───┴───┘ + * ┌───┬───┬───┬───┐ + * │K10│K11│K12│K13│ + * ├───┼───┼───┼───┤ + * │K20│K21│K22│K23│ + * │ ├───┼───┼───┤ + * │ │K31│K32│K33│ + * ├───┼───┼───┼───┤ + * │K40│K41│K42│K43│ + * │ ├───┼───┴───┤ + * │ │K51│K52 │ + * └───┴───┴───────┘ + */ + +/* + * ┌───┐ ┌───┬───┐ + * │K00│ │K01│K02│ + * └───┘ └───┴───┘ + * ┌───┬───┬───┬───┐ + * │K10│K11│K12│K13│ + * ├───┼───┼───┼───┤ + * │K20│K21│K22│K23│ + * ├───┼───┼───┼───┤ + * │K30│K31│K32│K33│ + * ├───┼───┼───┼───┤ + * │K40│K41│K42│K43│ + * ├───┼───┼───┼───┤ + * │K50│K51│K52│K53│ + * └───┴───┴───┴───┘ + */ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_numpad( + KC_MUTE, KC_MPLY, KC_BSPC, + KC_CALC, KC_KP_SLASH, KC_KP_ASTERISK, KC_KP_MINUS, + KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_PLUS, + KC_KP_4, KC_KP_5, KC_KP_6, + KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_ENTER, + KC_KP_0, KC_KP_DOT), + + [1] = LAYOUT_numpad( + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS), + + [2] = LAYOUT_numpad( + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS), + + [3] = LAYOUT_numpad( + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS), }; + diff --git a/keyboards/macro1/keymaps/via/rules.mk b/keyboards/macro1/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/macro1/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/macro1/macro1.c b/keyboards/macro1/macro1.c new file mode 100644 index 000000000000..b470ed523f0e --- /dev/null +++ b/keyboards/macro1/macro1.c @@ -0,0 +1,29 @@ + /* Copyright 2021 Laneware Peripherals + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "macro1.h" + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { /* First encoder */ + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } + return false; +} + diff --git a/keyboards/macro1/macro1.h b/keyboards/macro1/macro1.h new file mode 100644 index 000000000000..1066258050b3 --- /dev/null +++ b/keyboards/macro1/macro1.h @@ -0,0 +1,115 @@ + /* Copyright 2021 Laneware Peripherals + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* KEYMAP_numpad + * ┌───┐ ┌───┬───┐ + * │K00│ │K02│K03│ + * └───┘ └───┴───┘ + * ┌───┬───┬───┬───┐ + * │K10│K11│K12│K13│ + * ├───┼───┼───┼───┤ + * │K20│K21│K22│K23│ + * ├───┼───┼───┤ │ + * │K30│K31│K32│ │ + * ├───┼───┼───┼───┤ + * │K40│K41│K42│K43│ + * ├───┴───┼───┤ │ + * │K50 │K52│ │ + * └───────┴───┴───┘ + */ +#define LAYOUT_numpad( \ + K00, K02, K03, \ + K10, K11, K12, K13, \ + K20, K21, K22, K23, \ + K30, K31, K32, \ + K40, K41, K42, K43, \ + K50, K52 \ +) { \ + { K00, KC_NO, K02, K03 }, \ + { K10, K11, K12, K13 }, \ + { K20, K21, K22, K23 }, \ + { K30, K31, K32, KC_NO }, \ + { K40, K41, K42, K43 }, \ + { K50, KC_NO, K52, KC_NO } \ +} + +/* KEYMAP_southpaw + * ┌───┐ ┌───┬───┐ + * │K00│ │K02│K03│ + * └───┘ └───┴───┘ + * ┌───┬───┬───┬───┐ + * │K10│K11│K12│K13│ + * ├───┼───┼───┼───┤ + * │K20│K21│K22│K23│ + * │ ├───┼───┼───┤ + * │ │K31│K32│K33│ + * ├───┼───┼───┼───┤ + * │K40│K41│K42│K43│ + * │ ├───┼───┴───┤ + * │ │K51│K52 │ + * └───┴───┴───────┘ + */ +#define LAYOUT_southpaw( \ + K00, K02, K03, \ + K10, K11, K12, K13, \ + K20, K21, K22, K23, \ + K31, K32, K33, \ + K40, K41, K42, K43, \ + K51, K52 \ +) { \ + { K00, KC_NO, K02, K03 }, \ + { K10, K11, K12, K13 }, \ + { K20, K21, K22, K23 }, \ + { KC_NO, K31, K32, K33 }, \ + { K40, K41, K42, K43 }, \ + { KC_NO, K51, K52, KC_NO } \ +} + +/* KEYMAP_macropad + * ┌───┐ ┌───┬───┐ + * │K00│ │K01│K02│ + * └───┘ └───┴───┘ + * ┌───┬───┬───┬───┐ + * │K10│K11│K12│K13│ + * ├───┼───┼───┼───┤ + * │K20│K21│K22│K23│ + * ├───┼───┼───┼───┤ + * │K30│K31│K32│K33│ + * ├───┼───┼───┼───┤ + * │K40│K41│K42│K43│ + * ├───┼───┼───┼───┤ + * │K50│K51│K52│K53│ + * └───┴───┴───┴───┘ + */ +#define LAYOUT_macropad( \ + K00, K02, K03, \ + K10, K11, K12, K13, \ + K20, K21, K22, K23, \ + K30, K31, K32, K33, \ + K40, K41, K42, K43, \ + K50, K51, K52, K53 \ +) { \ + { K00, KC_NO, K02, K03 }, \ + { K10, K11, K12, K13 }, \ + { K20, K21, K22, K23 }, \ + { K30, K31, K32, K33 }, \ + { K40, K41, K42, K43 }, \ + { K50, K51, K52, K53 } \ +} diff --git a/keyboards/macro1/readme.md b/keyboards/macro1/readme.md new file mode 100644 index 000000000000..578a34e1c70f --- /dev/null +++ b/keyboards/macro1/readme.md @@ -0,0 +1,22 @@ +# Macro-1 + +![Macro-1](https://i.imgur.com/pnTgKuTh.jpeg) + +A versitile numpad/macropad (14x6) with a rotary encoder, made and sold by Laneware Peripherals. + +* Keyboard Maintainer: [Laneware Peripherals](https://github.com/laneware) +* Hardware Supported: Macro-1 +* Hardware Availability: [Laneware Peripherals](https://lanewareperipherals.com/), + +Make example for this keyboard (after setting up your build environment): + + make macro1:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the encoder and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB diff --git a/keyboards/macro1/rules.mk b/keyboards/macro1/rules.mk new file mode 100644 index 000000000000..d818bc7870c6 --- /dev/null +++ b/keyboards/macro1/rules.mk @@ -0,0 +1,20 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 \ No newline at end of file diff --git a/keyboards/macro3/config.h b/keyboards/macro3/config.h new file mode 100644 index 000000000000..84f8c8fd9d75 --- /dev/null +++ b/keyboards/macro3/config.h @@ -0,0 +1,39 @@ +/* Copyright 2020 David Philip Barr <@davidphilipbarr> + * Copyright 2021 @filterpaper + * SPDX-License-Identifier: GPL-2.0+ + */ + +#pragma once +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xC88B +#define PRODUCT_ID 0x3388 +#define DEVICE_VER 0x0003 +#define MANUFACTURER DPB +#define PRODUCT Macro3 + +/* key matrix size */ +#define MATRIX_ROWS 2 +#define MATRIX_COLS 4 + +/* key matrix pins */ +#define DIRECT_PINS { \ + { D7, C6, D4, D1 }, \ + { B1, B4, B5, B3 } \ +} + +#define ENCODERS_PAD_A { D2, F7 } +#define ENCODERS_PAD_B { D3, F6 } + +#define UNUSED_PINS + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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/macro3/info.json b/keyboards/macro3/info.json new file mode 100644 index 000000000000..b25779cb703b --- /dev/null +++ b/keyboards/macro3/info.json @@ -0,0 +1,20 @@ +{ + "keyboard_name": "Macro3", + "url": "https://github.com/davidphilipbarr/Macropads/tree/main/macro3", + "maintainer": "@davidphilipbarr", + "layouts": { + "LAYOUT": { + "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}, + ] + } + } +} diff --git a/keyboards/macro3/keymaps/default/keymap.c b/keyboards/macro3/keymaps/default/keymap.c new file mode 100644 index 000000000000..11ebeff0230d --- /dev/null +++ b/keyboards/macro3/keymaps/default/keymap.c @@ -0,0 +1,18 @@ +/* Copyright 2020 David Philip Barr <@davidphilipbarr> + * Copyright 2021 @filterpaper + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_MUTE, KC_MPLY, KC_MRWD, LT(1,KC_MFFD), + C(KC_Z), C(KC_X), C(KC_C), C(KC_V) + ), + [1] = LAYOUT( + _______, _______, _______, _______, + RESET, _______, _______, _______ + ) +}; + diff --git a/keyboards/macro3/macro3.c b/keyboards/macro3/macro3.c new file mode 100644 index 000000000000..90bb98250913 --- /dev/null +++ b/keyboards/macro3/macro3.c @@ -0,0 +1,27 @@ +/* Copyright 2020 David Philip Barr <@davidphilipbarr> + * Copyright 2021 @filterpaper + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include "macro3.h" + +#ifdef ENCODER_ENABLE +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + if (index == 0) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else if (index == 1) { + if (clockwise) { + tap_code(KC_MNXT); + } else { + tap_code(KC_MPRV); + } + } + return true; +} +#endif + diff --git a/keyboards/macro3/macro3.h b/keyboards/macro3/macro3.h new file mode 100644 index 000000000000..d95f504083e2 --- /dev/null +++ b/keyboards/macro3/macro3.h @@ -0,0 +1,16 @@ +/* Copyright 2020 David Philip Barr <@davidphilipbarr> + * Copyright 2021 @filterpaper + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include "quantum.h" + +#define LAYOUT( \ + K00, K01, K02, K03, \ + K10, K11, K12, K13 \ +) \ +{ \ + { K00, K01, K02, K03 }, \ + { K10, K11, K12, K13 } \ +} + diff --git a/keyboards/macro3/post_config.h b/keyboards/macro3/post_config.h new file mode 100644 index 000000000000..0f94fe19e1a6 --- /dev/null +++ b/keyboards/macro3/post_config.h @@ -0,0 +1,17 @@ +/* Copyright 2020 David Philip Barr <@davidphilipbarr> + * Copyright 2021 @filterpaper + * SPDX-License-Identifier: GPL-2.0+ + */ + +/* Top right key */ +#ifndef BOOTMAGIC_LITE_ROW +# define BOOTMAGIC_LITE_ROW 0 +#endif +#ifndef BOOTMAGIC_LITE_COLUMN +# define BOOTMAGIC_LITE_COLUMN 3 +#endif + +#ifndef ENCODER_RESOLUTION +# define ENCODER_RESOLUTION 2 +#endif + diff --git a/keyboards/macro3/readme.md b/keyboards/macro3/readme.md new file mode 100644 index 000000000000..023474117459 --- /dev/null +++ b/keyboards/macro3/readme.md @@ -0,0 +1,26 @@ +# Macro3 + +![Macro3](https://github.com/filterpaper/filterpaper.github.io/raw/main/images/macro3.png) + +Macro3 is a low-profile macro pad with dual encoder support designed by [@davidphilipbarr](https://github.com/davidphilipbarr). + +## Keyboard Info + +* Keyboard Maintainer: [davidphilipbarr](https://github.com/davidphilipbarr) +* Hardware Supported: [Macro3](https://github.com/davidphilipbarr/Macropads/tree/main/macro3) +* Hardware Availability: order PCBs with gerber file from the repository + +Make example for this keyboard (after setting up your build environment): + + make macro3:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the top right key and plug in the controller. +* **Keycode in layout**: Press the key mapped to `RESET` if it is configured. +* **Physical reset pins**: Briefly short the RST and GND pins on the microcontroller using tweezers, a paperclip, or any other conductive material. + diff --git a/keyboards/macro3/rules.mk b/keyboards/macro3/rules.mk new file mode 100644 index 000000000000..bc3e5b4e942d --- /dev/null +++ b/keyboards/macro3/rules.mk @@ -0,0 +1,20 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes diff --git a/keyboards/majistic/info.json b/keyboards/majistic/info.json index 2ae92678823c..8d8005c7f4c0 100644 --- a/keyboards/majistic/info.json +++ b/keyboards/majistic/info.json @@ -2,8 +2,6 @@ "keyboard_name": "maJIStic", "url": "https://github.com/yossiyossy/maJIStic", "maintainer": "yossiyossy", - "width": 15.5, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/majistic/rules.mk b/keyboards/majistic/rules.mk index 2440fc903d5d..48df64bf0ba2 100644 --- a/keyboards/majistic/rules.mk +++ b/keyboards/majistic/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = yes diff --git a/keyboards/makrosu/config.h b/keyboards/makrosu/config.h index 8a5214fe6810..b587477f8a1c 100644 --- a/keyboards/makrosu/config.h +++ b/keyboards/makrosu/config.h @@ -34,9 +34,8 @@ #define MATRIX_COL_PINS { B2, B3, B1, F7, F6, F5} #define UNUSED_PINS -#define ENCODERS_PAD_A { D1 } -#define ENCODERS_PAD_B { E6 } -#define ENCODER_DIRECTION_FLIP +#define ENCODERS_PAD_A { E6 } +#define ENCODERS_PAD_B { D1 } #define TAP_CODE_DELAY 10 /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW diff --git a/keyboards/makrosu/info.json b/keyboards/makrosu/info.json index caf039ac63ab..84aca4a14c1d 100644 --- a/keyboards/makrosu/info.json +++ b/keyboards/makrosu/info.json @@ -2,8 +2,6 @@ "keyboard_name": "MakrOSU", "url": "", "maintainer": "Valdydesu_", - "width": 3, - "height": 2, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/makrosu/rules.mk b/keyboards/makrosu/rules.mk index d12ce5037752..f5e65aa1616f 100644 --- a/keyboards/makrosu/rules.mk +++ b/keyboards/makrosu/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes diff --git a/keyboards/manta60/info.json b/keyboards/manta60/info.json index 08039557b561..2210503b824e 100644 --- a/keyboards/manta60/info.json +++ b/keyboards/manta60/info.json @@ -2,8 +2,6 @@ "keyboard_name": "manta60", "url": "https://github.com/KamoNanban", "maintainer": "kamonanban", - "width": 17, - "height": 5.5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/manta60/post_rules.mk b/keyboards/manta60/post_rules.mk new file mode 100644 index 000000000000..e26b52df30f5 --- /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 71148e248c29..6c24c73bcac0 100644 --- a/keyboards/manta60/rules.mk +++ b/keyboards/manta60/rules.mk @@ -7,23 +7,16 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = no # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth 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/manyboard/macro/config.h b/keyboards/manyboard/macro/config.h new file mode 100644 index 000000000000..d7a950f2e6a1 --- /dev/null +++ b/keyboards/manyboard/macro/config.h @@ -0,0 +1,53 @@ +/* +Copyright 2020 William Ehman + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4D42 // MB +#define PRODUCT_ID 0x0015 // 15 keys +#define DEVICE_VER 0x0103 +#define MANUFACTURER Manyboard +#define PRODUCT MB_Macro + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 4 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { D0, D1, D2, D3 } +#define MATRIX_COL_PINS { D4, D5, D6, D7 } +#define UNUSED_PINS + +/*Encoder Pins*/ +#define ENCODERS_PAD_A { C6 } +#define ENCODERS_PAD_B { C7 } + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION ROW2COL + +/* RGB Pins */ +#define RGB_DI_PIN B6 +#define RGBLED_NUM 2 +#define RGBLIGHT_LIMIT_VAL 10 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/manyboard/macro/info.json b/keyboards/manyboard/macro/info.json new file mode 100644 index 000000000000..13f89494dce4 --- /dev/null +++ b/keyboards/manyboard/macro/info.json @@ -0,0 +1,27 @@ +{ + "keyboard_name": "manyboard_macro", + "url": "https://github.com/WillEhman/qmk_firmware/tree/dev_create_mb_macro", + "maintainer": "William Ehman", + "layouts": { + "LAYOUT_ortho_4x4": { + "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} + ] + } + } +} diff --git a/keyboards/manyboard/macro/keymaps/default/keymap.c b/keyboards/manyboard/macro/keymaps/default/keymap.c new file mode 100644 index 000000000000..0b9d2ac927d6 --- /dev/null +++ b/keyboards/manyboard/macro/keymaps/default/keymap.c @@ -0,0 +1,75 @@ +/* Copyright 2020 William Ehman + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ortho_4x4( + KC_F1, KC_F2, KC_F3, KC_F4, + KC_F5, KC_F6, KC_F7, KC_F8, + KC_F9, KC_F10, KC_F11, KC_F12, + KC_F13, KC_F14, KC_F15, TO(1) + ), + [1] = LAYOUT_ortho_4x4( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, TO(2) + ), + [2] = LAYOUT_ortho_4x4( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, TO(0) + ), +}; +// clang-format on + +layer_state_t layer_state_set_user(layer_state_t state) { + switch (get_highest_layer(state)) { + case 0: + sethsv(HSV_WHITE, (LED_TYPE *)&led[0]); + rgblight_set(); + break; + case 1: + sethsv(HSV_GREEN, (LED_TYPE *)&led[0]); + rgblight_set(); + break; + case 2: + sethsv(HSV_BLUE, (LED_TYPE *)&led[0]); + rgblight_set(); + break; + } + return state; +} + +bool encoder_update_user(uint8_t index, bool clockwise) { + /* With an if statement we can check which encoder was turned. */ + if (index == 0) { /* First encoder */ + /* And with another if statement we can check the direction. */ + if (clockwise) { + /* This is where the actual magic happens: this bit of code taps on the + Page Down key. You can do anything QMK allows you to do here. + You'll want to replace these lines with the things you want your + encoders to do. */ + tap_code(KC_AUDIO_VOL_UP); + } else { + /* And likewise for the other direction, this time Vol Down is pressed. */ + tap_code(KC_AUDIO_VOL_DOWN); + } + } + return true; +} diff --git a/keyboards/manyboard/macro/keymaps/via/keymap.c b/keyboards/manyboard/macro/keymaps/via/keymap.c new file mode 100644 index 000000000000..0b9d2ac927d6 --- /dev/null +++ b/keyboards/manyboard/macro/keymaps/via/keymap.c @@ -0,0 +1,75 @@ +/* Copyright 2020 William Ehman + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ortho_4x4( + KC_F1, KC_F2, KC_F3, KC_F4, + KC_F5, KC_F6, KC_F7, KC_F8, + KC_F9, KC_F10, KC_F11, KC_F12, + KC_F13, KC_F14, KC_F15, TO(1) + ), + [1] = LAYOUT_ortho_4x4( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, TO(2) + ), + [2] = LAYOUT_ortho_4x4( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, TO(0) + ), +}; +// clang-format on + +layer_state_t layer_state_set_user(layer_state_t state) { + switch (get_highest_layer(state)) { + case 0: + sethsv(HSV_WHITE, (LED_TYPE *)&led[0]); + rgblight_set(); + break; + case 1: + sethsv(HSV_GREEN, (LED_TYPE *)&led[0]); + rgblight_set(); + break; + case 2: + sethsv(HSV_BLUE, (LED_TYPE *)&led[0]); + rgblight_set(); + break; + } + return state; +} + +bool encoder_update_user(uint8_t index, bool clockwise) { + /* With an if statement we can check which encoder was turned. */ + if (index == 0) { /* First encoder */ + /* And with another if statement we can check the direction. */ + if (clockwise) { + /* This is where the actual magic happens: this bit of code taps on the + Page Down key. You can do anything QMK allows you to do here. + You'll want to replace these lines with the things you want your + encoders to do. */ + tap_code(KC_AUDIO_VOL_UP); + } else { + /* And likewise for the other direction, this time Vol Down is pressed. */ + tap_code(KC_AUDIO_VOL_DOWN); + } + } + return true; +} diff --git a/keyboards/manyboard/macro/keymaps/via/rules.mk b/keyboards/manyboard/macro/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/manyboard/macro/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/manyboard/macro/macro.c b/keyboards/manyboard/macro/macro.c new file mode 100644 index 000000000000..eb8a188f3c4c --- /dev/null +++ b/keyboards/manyboard/macro/macro.c @@ -0,0 +1,17 @@ +/* Copyright 2020 WillEhman + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "macro.h" diff --git a/keyboards/manyboard/macro/macro.h b/keyboards/manyboard/macro/macro.h new file mode 100644 index 000000000000..0dccdbebfb23 --- /dev/null +++ b/keyboards/manyboard/macro/macro.h @@ -0,0 +1,31 @@ +/* Copyright 2020 WillEhman + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#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 } \ +} diff --git a/keyboards/manyboard/macro/readme.md b/keyboards/manyboard/macro/readme.md new file mode 100644 index 000000000000..ca400b30e75d --- /dev/null +++ b/keyboards/manyboard/macro/readme.md @@ -0,0 +1,15 @@ +# manyboard_macro + +* Keyboard Maintainer: [WillEhman](https://github.com/WillEhman) +* Hardware Supported: The Manyboard Family of keyboards +* Hardware Availability: TBA + +Make example for this keyboard (after setting up your build environment): + + make manyboard/macro:default + +Flashing example for this keyboard: + + make manyboard/macro:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/manyboard/macro/rules.mk b/keyboards/manyboard/macro/rules.mk new file mode 100644 index 000000000000..c2be88c7d740 --- /dev/null +++ b/keyboards/manyboard/macro/rules.mk @@ -0,0 +1,20 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes # Encoder Input diff --git a/keyboards/marksard/leftover30/info.json b/keyboards/marksard/leftover30/info.json index 4321527c168e..6ff164a90a81 100644 --- a/keyboards/marksard/leftover30/info.json +++ b/keyboards/marksard/leftover30/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Leftover30", "url": "https://github.com/marksard/Keyboards", "maintainer": "marksard", - "width": 11.5, - "height": 4, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/marksard/leftover30/rules.mk b/keyboards/marksard/leftover30/rules.mk index dd52fe113edc..c767c16e76d4 100644 --- a/keyboards/marksard/leftover30/rules.mk +++ b/keyboards/marksard/leftover30/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/marksard/rhymestone/common/oled_helper.c b/keyboards/marksard/rhymestone/common/oled_helper.c index 537650025c9c..354c1fb89669 100644 --- a/keyboards/marksard/rhymestone/common/oled_helper.c +++ b/keyboards/marksard/rhymestone/common/oled_helper.c @@ -1,4 +1,4 @@ -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE #include QMK_KEYBOARD_H #include #include diff --git a/keyboards/marksard/rhymestone/common/oled_helper.h b/keyboards/marksard/rhymestone/common/oled_helper.h index 02f7b94fa526..dc9a938f6c02 100644 --- a/keyboards/marksard/rhymestone/common/oled_helper.h +++ b/keyboards/marksard/rhymestone/common/oled_helper.h @@ -1,4 +1,4 @@ -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE void render_logo(void); void render_lock_status(void); diff --git a/keyboards/marksard/rhymestone/info.json b/keyboards/marksard/rhymestone/info.json index 2c1ba9b37c70..c10a45aa4bbe 100644 --- a/keyboards/marksard/rhymestone/info.json +++ b/keyboards/marksard/rhymestone/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Rhymestone", "url": "https://github.com/marksard/Keyboards", "maintainer": "marksard", - "width": 11, - "height": 4, "layouts": { "LAYOUT_ortho_4x10": { "layout": [ diff --git a/keyboards/marksard/rhymestone/keymaps/default/keymap.c b/keyboards/marksard/rhymestone/keymaps/default/keymap.c index 2d695f76b14a..0bc981977315 100644 --- a/keyboards/marksard/rhymestone/keymaps/default/keymap.c +++ b/keyboards/marksard/rhymestone/keymaps/default/keymap.c @@ -95,7 +95,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #define L_ADJUST (1<<_ADJUST) #define L_ADJUST_TRI (L_ADJUST|L_RAISE|L_LOWER) -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE #include #include @@ -158,13 +158,14 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) { return rotation; } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { render_status(); } else { render_logo(); } + return false; } #else diff --git a/keyboards/marksard/rhymestone/keymaps/default/rules.mk b/keyboards/marksard/rhymestone/keymaps/default/rules.mk index c86cab8cce7f..9ab36c285a7c 100644 --- a/keyboards/marksard/rhymestone/keymaps/default/rules.mk +++ b/keyboards/marksard/rhymestone/keymaps/default/rules.mk @@ -2,7 +2,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys TAP_DANCE_ENABLE = no RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -OLED_DRIVER_ENABLE = no +OLED_ENABLE = no LTO_ENABLE = yes # If you want to change the display of OLED, you need to change here diff --git a/keyboards/marksard/rhymestone/keymaps/switch_tester/rules.mk b/keyboards/marksard/rhymestone/keymaps/switch_tester/rules.mk index f4ccdf54f864..e5a4e9710cd3 100644 --- a/keyboards/marksard/rhymestone/keymaps/switch_tester/rules.mk +++ b/keyboards/marksard/rhymestone/keymaps/switch_tester/rules.mk @@ -2,6 +2,6 @@ MOUSEKEY_ENABLE = no # Mouse keys TAP_DANCE_ENABLE = no RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -OLED_DRIVER_ENABLE = no +OLED_ENABLE = no LTO_ENABLE = yes RGB_MATRIX_ENABLE = yes diff --git a/keyboards/marksard/rhymestone/rev1/config.h b/keyboards/marksard/rhymestone/rev1/config.h index 9a1bf0a1d8fd..4448e5126832 100644 --- a/keyboards/marksard/rhymestone/rev1/config.h +++ b/keyboards/marksard/rhymestone/rev1/config.h @@ -93,7 +93,7 @@ along with this program. If not, see . #define RGB_MATRIX_KEYPRESSES // reacts to keypresses // #define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses) // #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects - #define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended + #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended // #define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness) // #define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness) #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255 @@ -102,50 +102,50 @@ along with this program. If not, see . #define RGB_MATRIX_VAL_STEP 8 #define RGB_MATRIX_SPD_STEP 10 -// #define DISABLE_RGB_MATRIX_ALPHAS_MODS -// #define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -// #define DISABLE_RGB_MATRIX_BREATHING -// #define DISABLE_RGB_MATRIX_BAND_SAT -// #define DISABLE_RGB_MATRIX_BAND_VAL -// #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -// #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL -// #define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT -// #define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL -// #define DISABLE_RGB_MATRIX_CYCLE_ALL -// #define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT -// #define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN -// #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN -// #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL -// #define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON -// #define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL -// #define DISABLE_RGB_MATRIX_CYCLE_SPIRAL -// #define DISABLE_RGB_MATRIX_DUAL_BEACON -// #define DISABLE_RGB_MATRIX_RAINBOW_BEACON -// #define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS -// #define DISABLE_RGB_MATRIX_RAINDROPS -// #define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS - - #define RGB_MATRIX_FRAMEBUFFER_EFFECTS -// #define DISABLE_RGB_MATRIX_TYPING_HEATMAP -// #define DISABLE_RGB_MATRIX_DIGITAL_RAIN +// #undef ENABLE_RGB_MATRIX_ALPHAS_MODS +// #undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +// #undef ENABLE_RGB_MATRIX_BREATHING +// #undef ENABLE_RGB_MATRIX_BAND_SAT +// #undef ENABLE_RGB_MATRIX_BAND_VAL +// #undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +// #undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +// #undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +// #undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +// #undef ENABLE_RGB_MATRIX_CYCLE_ALL +// #undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +// #undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +// #undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN +// #undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +// #undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +// #undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +// #undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL +// #undef ENABLE_RGB_MATRIX_DUAL_BEACON +// #undef ENABLE_RGB_MATRIX_RAINBOW_BEACON +// #undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +// #undef ENABLE_RGB_MATRIX_RAINDROPS +// #undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS + +# define RGB_MATRIX_FRAMEBUFFER_EFFECTS +// #undef ENABLE_RGB_MATRIX_TYPING_HEATMAP +// #undef ENABLE_RGB_MATRIX_DIGITAL_RAIN // #define RGB_MATRIX_KEYPRESSES // reacts to keypresses -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS - -// #define DISABLE_RGB_MATRIX_SPLASH -// #define DISABLE_RGB_MATRIX_MULTISPLASH -// #define DISABLE_RGB_MATRIX_SOLID_SPLASH -// #define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH - - #define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_TYPING_HEATMAP +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS + +// #undef ENABLE_RGB_MATRIX_SPLASH +// #undef ENABLE_RGB_MATRIX_MULTISPLASH +// #undef ENABLE_RGB_MATRIX_SOLID_SPLASH +// #undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + +# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_TYPING_HEATMAP #endif /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ diff --git a/keyboards/marksard/rhymestone/rev1/rev1.c b/keyboards/marksard/rhymestone/rev1/rev1.c index a4dadd55cbf0..d41694c1d9e1 100644 --- a/keyboards/marksard/rhymestone/rev1/rev1.c +++ b/keyboards/marksard/rhymestone/rev1/rev1.c @@ -58,51 +58,3 @@ led_config_t g_led_config = { { 4, 4, 4, 4 } }; #endif - -__attribute__((weak)) -void matrix_init_user(void) {} - -void matrix_init_kb(void) { - -#ifdef RGB_MATRIX_ENABLE - // if (!is_keyboard_master()) { - // g_led_config = (led_config_t){ { - // { 30, 31, 32, 33, 20 }, - // { 29, 38, 39, 34, 21 }, - // { 28, 37, 36, 35, 22 }, - // { 27, 26, 25, 24, 23 }, - // { 10, 11, 12, 13, 0 }, - // { 9, 18, 19, 14, 1 }, - // { 8, 17, 16, 15, 2 }, - // { 7, 6, 5, 4, 3 } - // }, { - // { 125, 0 }, { 125, 21 }, { 125, 43 }, { 125, 64 }, - // { 150, 64 }, { 175, 64 }, { 200, 64 }, { 225, 64 }, - // { 225, 43 }, { 225, 21 }, { 225, 0 }, - // { 200, 0 }, { 175, 0 }, { 150, 0 }, - // { 150, 21 }, { 150, 43 }, - // { 175, 43 }, { 200, 43 }, - // { 200, 21 }, { 150, 21 }, - // { 100, 0 }, { 100, 21 }, { 100, 43 }, { 100, 64 }, - // { 75, 64 }, { 50, 64 }, { 25, 64 }, { 0, 64 }, - // { 0, 43 }, { 0, 21 }, { 0, 0 }, - // { 25, 0 }, { 50, 0 }, { 75, 0 }, - // { 75, 21 }, { 75, 43 }, - // { 50, 43 }, { 25, 43 }, - // { 25, 21 }, { 50, 21 } - // }, { - // 4, 4, 4, 1, - // 1, 1, 1, 1, - // 4, 4, 4, 4, - // 4, 4, 4, 4, - // 4, 4, 4, 4, - // 4, 4, 4, 1, - // 1, 1, 1, 1, - // 4, 4, 4, 4, - // 4, 4, 4, 4, - // 4, 4, 4, 4 - // } }; - // } -#endif - matrix_init_user(); -} diff --git a/keyboards/marksard/rhymestone/rules.mk b/keyboards/marksard/rhymestone/rules.mk index adfaca217467..8977dcfdf847 100644 --- a/keyboards/marksard/rhymestone/rules.mk +++ b/keyboards/marksard/rhymestone/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = yes RGB_MATRIX_ENABLE = no diff --git a/keyboards/massdrop/alt/alt.c b/keyboards/massdrop/alt/alt.c new file mode 100644 index 000000000000..c3ed246a4fbd --- /dev/null +++ b/keyboards/massdrop/alt/alt.c @@ -0,0 +1,21 @@ +/* +Copyright 2021 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 . +*/ +#include "alt.h" + +/* Temporary solution for matrix delay */ +void matrix_output_select_delay(void) { matrix_io_delay(); } +void matrix_output_unselect_delay(uint8_t line, bool key_pressed) {} diff --git a/keyboards/massdrop/alt/alt.h b/keyboards/massdrop/alt/alt.h index 03960954506a..c3761bee8bab 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 d8389fc0093e..df3cd891b642 100644 --- a/keyboards/massdrop/alt/config.h +++ b/keyboards/massdrop/alt/config.h @@ -32,37 +32,39 @@ along with this program. If not, see . #define MATRIX_ROWS 5 #define MATRIX_COLS 15 + +#define MATRIX_ROW_PINS { A00, A01, A02, A03, A04 } +#define MATRIX_COL_PINS { B04, B05, B06, B07, B08, B09, B10, B11, B12, B13, A05, A06, A07, A10, A11 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Temporary solution for matrix delay */ +#define IGNORE_ATOMIC_BLOCK + +/* Avoid out-of-bounds errors when SmartEEPROM is not enabled */ +#define EEPROM_SIZE 1024 + /* MCU Port name definitions */ #define PA 0 #define PB 1 -/* Port and Pin definition of key row hardware configuration */ -#define MATRIX_ROW_PORTS PA, PA, PA, PA, PA -#define MATRIX_ROW_PINS 0, 1, 2, 3, 4 - -/* Port and Pin definition of key column hardware configuration */ -#define MATRIX_COL_PORTS PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, PA, PA, PA, PA, PA -#define MATRIX_COL_PINS 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 5, 6, 7, 10, 11 - /* 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 @@ -91,6 +93,15 @@ along with this program. If not, see . #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 @@ -123,5 +134,53 @@ along with this program. If not, see . #define RGB_MATRIX_KEYPRESSES #define RGB_MATRIX_LED_PROCESS_LIMIT 15 #define RGB_MATRIX_LED_FLUSH_LIMIT 10 +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH #include "config_led.h" diff --git a/keyboards/massdrop/alt/config_led.c b/keyboards/massdrop/alt/config_led.c index 136117703c19..85ae67878b6d 100644 --- a/keyboards/massdrop/alt/config_led.c +++ b/keyboards/massdrop/alt/config_led.c @@ -50,9 +50,8 @@ led_config_t g_led_config = { { #ifdef USB_LED_INDICATOR_ENABLE -void rgb_matrix_indicators_kb(void) -{ - md_rgb_matrix_indicators(); +void rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) { + md_rgb_matrix_indicators_advanced(led_min, led_max); } #endif // USB_LED_INDICATOR_ENABLE diff --git a/keyboards/massdrop/alt/config_led.h b/keyboards/massdrop/alt/config_led.h index 82117b33279e..b600dd23b98f 100644 --- a/keyboards/massdrop/alt/config_led.h +++ b/keyboards/massdrop/alt/config_led.h @@ -58,7 +58,7 @@ along with this program. If not, see . //swr: Matrix wiring SW Red row (1-12) //swg: Matrix wiring SW Green row (1-12) //swb: Matrix wiring SW Blue row (1-12) -//scan: Associated key scancode if any +//scan: Associated key matrix scancode (set 255 if none or 254 for LED to turn off in alternating mode) //Note: Origin 0,0 may be located anywhere as the software will do the final layout #define ISSI3733_LED_MAP { \ { .id = 1, .x = 0, .y = 0, .adr = { .drv = 2, .cs = 2, .swr = 2, .swg = 1, .swb = 3 }, .scan = 0 }, \ @@ -129,46 +129,45 @@ along with this program. If not, see . { .id = 66, .x = 10.5, .y = -3, .adr = { .drv = 1, .cs = 12, .swr = 8, .swg = 7, .swb = 9 }, .scan = 73 }, \ { .id = 67, .x = 11.25, .y = -3, .adr = { .drv = 1, .cs = 12, .swr = 5, .swg = 4, .swb = 6 }, .scan = 74 }, \ { .id = 68, .x = -0.338, .y = -3.338, .adr = { .drv = 2, .cs = 11, .swr = 11, .swg = 10, .swb = 12 }, .scan = 255 }, \ - { .id = 69, .x = 0.39, .y = -3.443, .adr = { .drv = 2, .cs = 11, .swr = 8, .swg = 7, .swb = 9 }, .scan = 255 }, \ + { .id = 69, .x = 0.39, .y = -3.443, .adr = { .drv = 2, .cs = 11, .swr = 8, .swg = 7, .swb = 9 }, .scan = 254 }, \ { .id = 70, .x = 1.263, .y = -3.443, .adr = { .drv = 2, .cs = 11, .swr = 5, .swg = 4, .swb = 6 }, .scan = 255 }, \ - { .id = 71, .x = 2.135, .y = -3.443, .adr = { .drv = 2, .cs = 11, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ + { .id = 71, .x = 2.135, .y = -3.443, .adr = { .drv = 2, .cs = 11, .swr = 2, .swg = 1, .swb = 3 }, .scan = 254 }, \ { .id = 72, .x = 3.008, .y = -3.443, .adr = { .drv = 2, .cs = 12, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ - { .id = 73, .x = 3.88, .y = -3.443, .adr = { .drv = 2, .cs = 12, .swr = 5, .swg = 4, .swb = 6 }, .scan = 255 }, \ + { .id = 73, .x = 3.88, .y = -3.443, .adr = { .drv = 2, .cs = 12, .swr = 5, .swg = 4, .swb = 6 }, .scan = 254 }, \ { .id = 74, .x = 4.753, .y = -3.443, .adr = { .drv = 2, .cs = 13, .swr = 5, .swg = 4, .swb = 6 }, .scan = 255 }, \ - { .id = 75, .x = 5.625, .y = -3.443, .adr = { .drv = 2, .cs = 13, .swr = 8, .swg = 7, .swb = 9 }, .scan = 255 }, \ + { .id = 75, .x = 5.625, .y = -3.443, .adr = { .drv = 2, .cs = 13, .swr = 8, .swg = 7, .swb = 9 }, .scan = 254 }, \ { .id = 76, .x = 6.497, .y = -3.443, .adr = { .drv = 1, .cs = 9, .swr = 8, .swg = 7, .swb = 9 }, .scan = 255 }, \ - { .id = 77, .x = 7.37, .y = -3.443, .adr = { .drv = 1, .cs = 9, .swr = 5, .swg = 4, .swb = 6 }, .scan = 255 }, \ + { .id = 77, .x = 7.37, .y = -3.443, .adr = { .drv = 1, .cs = 9, .swr = 5, .swg = 4, .swb = 6 }, .scan = 254 }, \ { .id = 78, .x = 8.242, .y = -3.443, .adr = { .drv = 1, .cs = 9, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ - { .id = 79, .x = 9.115, .y = -3.443, .adr = { .drv = 1, .cs = 13, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ + { .id = 79, .x = 9.115, .y = -3.443, .adr = { .drv = 1, .cs = 13, .swr = 2, .swg = 1, .swb = 3 }, .scan = 254 }, \ { .id = 80, .x = 9.987, .y = -3.443, .adr = { .drv = 1, .cs = 13, .swr = 8, .swg = 7, .swb = 9 }, .scan = 255 }, \ - { .id = 81, .x = 10.86, .y = -3.443, .adr = { .drv = 1, .cs = 13, .swr = 5, .swg = 4, .swb = 6 }, .scan = 255 }, \ + { .id = 81, .x = 10.86, .y = -3.443, .adr = { .drv = 1, .cs = 13, .swr = 5, .swg = 4, .swb = 6 }, .scan = 254 }, \ { .id = 82, .x = 11.588, .y = -3.338, .adr = { .drv = 1, .cs = 13, .swr = 11, .swg = 10, .swb = 12 }, .scan = 255 }, \ - { .id = 83, .x = 11.693, .y = -2.623, .adr = { .drv = 1, .cs = 12, .swr = 11, .swg = 10, .swb = 12 }, .scan = 255 }, \ + { .id = 83, .x = 11.693, .y = -2.623, .adr = { .drv = 1, .cs = 12, .swr = 11, .swg = 10, .swb = 12 }, .scan = 254 }, \ { .id = 84, .x = 11.693, .y = -1.873, .adr = { .drv = 1, .cs = 8, .swr = 11, .swg = 10, .swb = 12 }, .scan = 255 }, \ { .id = 85, .x = 11.693, .y = -1.123, .adr = { .drv = 1, .cs = 8, .swr = 8, .swg = 7, .swb = 9 }, .scan = 255 }, \ - { .id = 86, .x = 11.693, .y = -0.373, .adr = { .drv = 1, .cs = 8, .swr = 5, .swg = 4, .swb = 6 }, .scan = 255 }, \ + { .id = 86, .x = 11.693, .y = -0.373, .adr = { .drv = 1, .cs = 8, .swr = 5, .swg = 4, .swb = 6 }, .scan = 254 }, \ { .id = 87, .x = 11.588, .y = 0.338, .adr = { .drv = 1, .cs = 8, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ { .id = 88, .x = 9.908, .y = 0.443, .adr = { .drv = 1, .cs = 6, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ - { .id = 89, .x = 9.288, .y = 0.443, .adr = { .drv = 1, .cs = 5, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ + { .id = 89, .x = 9.288, .y = 0.443, .adr = { .drv = 1, .cs = 5, .swr = 2, .swg = 1, .swb = 3 }, .scan = 254 }, \ { .id = 90, .x = 8.625, .y = 0.443, .adr = { .drv = 1, .cs = 4, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ - { .id = 91, .x = 7.875, .y = 0.443, .adr = { .drv = 1, .cs = 3, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ + { .id = 91, .x = 7.875, .y = 0.443, .adr = { .drv = 1, .cs = 3, .swr = 2, .swg = 1, .swb = 3 }, .scan = 254 }, \ { .id = 92, .x = 7.125, .y = 0.443, .adr = { .drv = 1, .cs = 2, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ - { .id = 93, .x = 6.375, .y = 0.443, .adr = { .drv = 1, .cs = 1, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ + { .id = 93, .x = 6.375, .y = 0.443, .adr = { .drv = 1, .cs = 1, .swr = 2, .swg = 1, .swb = 3 }, .scan = 254 }, \ { .id = 94, .x = 5.625, .y = 0.443, .adr = { .drv = 1, .cs = 14, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ - { .id = 95, .x = 4.875, .y = 0.443, .adr = { .drv = 2, .cs = 8, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ + { .id = 95, .x = 4.875, .y = 0.443, .adr = { .drv = 2, .cs = 8, .swr = 2, .swg = 1, .swb = 3 }, .scan = 254 }, \ { .id = 96, .x = 4.125, .y = 0.443, .adr = { .drv = 2, .cs = 7, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ - { .id = 97, .x = 3.375, .y = 0.443, .adr = { .drv = 2, .cs = 6, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ + { .id = 97, .x = 3.375, .y = 0.443, .adr = { .drv = 2, .cs = 6, .swr = 2, .swg = 1, .swb = 3 }, .scan = 254 }, \ { .id = 98, .x = 2.625, .y = 0.443, .adr = { .drv = 2, .cs = 5, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ - { .id = 99, .x = 1.875, .y = 0.443, .adr = { .drv = 2, .cs = 4, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ + { .id = 99, .x = 1.875, .y = 0.443, .adr = { .drv = 2, .cs = 4, .swr = 2, .swg = 1, .swb = 3 }, .scan = 254 }, \ { .id = 100, .x = 1.125, .y = 0.443, .adr = { .drv = 2, .cs = 3, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ { .id = 101, .x = -0.338, .y = 0.338, .adr = { .drv = 2, .cs = 1, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ - { .id = 102, .x = -0.443, .y = -0.373, .adr = { .drv = 2, .cs = 1, .swr = 5, .swg = 4, .swb = 6 }, .scan = 255 }, \ + { .id = 102, .x = -0.443, .y = -0.373, .adr = { .drv = 2, .cs = 1, .swr = 5, .swg = 4, .swb = 6 }, .scan = 254 }, \ { .id = 103, .x = -0.443, .y = -1.123, .adr = { .drv = 2, .cs = 1, .swr = 8, .swg = 7, .swb = 9 }, .scan = 255 }, \ { .id = 104, .x = -0.443, .y = -1.873, .adr = { .drv = 2, .cs = 1, .swr = 11, .swg = 10, .swb = 12 }, .scan = 255 }, \ - { .id = 105, .x = -0.443, .y = -2.623, .adr = { .drv = 2, .cs = 10, .swr = 11, .swg = 10, .swb = 12 }, .scan = 255 }, \ + { .id = 105, .x = -0.443, .y = -2.623, .adr = { .drv = 2, .cs = 10, .swr = 11, .swg = 10, .swb = 12 }, .scan = 254 }, \ }; - #define USB_LED_INDICATOR_ENABLE //Comment out to disable indicator functionality #ifdef USB_LED_INDICATOR_ENABLE //Scan codes refer to actual key matrix codes, not KC_* (255 to disable) #define USB_LED_NUM_LOCK_SCANCODE 255 diff --git a/keyboards/massdrop/alt/info.json b/keyboards/massdrop/alt/info.json index 965b232fcd3f..9a820661bc5a 100644 --- a/keyboards/massdrop/alt/info.json +++ b/keyboards/massdrop/alt/info.json @@ -2,8 +2,6 @@ "keyboard_name": "ALT", "url": "https://www.massdrop.com/buy/massdrop-alt-mechanical-keyboard", "maintainer": "Massdrop", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_ansi_blocker": { "layout": [ diff --git a/keyboards/massdrop/alt/keymaps/default_md/keymap.c b/keyboards/massdrop/alt/keymaps/default_md/keymap.c index 810585a3df47..fa8b294cd117 100644 --- a/keyboards/massdrop/alt/keymaps/default_md/keymap.c +++ b/keyboards/massdrop/alt/keymaps/default_md/keymap.c @@ -3,10 +3,15 @@ enum alt_keycodes { L_BRI = SAFE_RANGE, //LED Brightness Increase //Working L_BRD, //LED Brightness Decrease //Working + L_EDG_I, //LED Edge Brightness Increase + L_EDG_D, //LED Edge Brightness Decrease + L_EDG_M, //LED Edge lighting mode L_PTN, //LED Pattern Select Next //Working L_PTP, //LED Pattern Select Previous //Working L_PSI, //LED Pattern Speed Increase //Working L_PSD, //LED Pattern Speed Decrease //Working + L_RATIOD, + L_RATIOI, L_T_MD, //LED Toggle Mode //Working L_T_ONF, //LED Toggle On / Off //Broken L_ON, //LED On //Broken @@ -18,6 +23,7 @@ enum alt_keycodes { DBG_MTRX, //DEBUG Toggle Matrix Prints // DBG_KBD, //DEBUG Toggle Keyboard Prints // DBG_MOU, //DEBUG Toggle Mouse Prints // + DBG_FAC, //DEBUG Factory light testing (All on white) MD_BOOT //Restart into bootloader after hold timeout //Working }; @@ -31,10 +37,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [1] = LAYOUT( 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_MUTE, \ - L_T_BR, L_PSD, L_BRI, L_PSI, _______, _______, _______, _______, U_T_AGCR,_______, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_END, \ - L_T_PTD, L_PTP, L_BRD, L_PTN, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, \ - _______, L_T_MD, L_T_ONF, _______, _______, MD_BOOT, NK_TOGG, _______, _______, _______, _______, _______, KC_PGUP, KC_VOLD, \ - _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END \ + L_T_BR, L_PSD, L_BRI, L_PSI, L_EDG_I, _______, _______, _______, U_T_AGCR,_______, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_END, \ + L_T_PTD, L_PTP, L_BRD, L_PTN, L_EDG_D, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, \ + _______, L_T_MD, L_T_ONF, _______, L_EDG_M, MD_BOOT, NK_TOGG, _______, _______, _______, _______, _______, KC_PGUP, KC_VOLD, \ + _______, _______, _______, DBG_FAC, _______, _______, KC_HOME, KC_PGDN, KC_END \ ), /* [X] = LAYOUT( @@ -53,6 +59,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { bool process_record_user(uint16_t keycode, keyrecord_t *record) { static uint32_t key_timer; + static uint8_t scroll_effect = 0; + + switch (keycode) { + case L_BRI ... U_T_AGCR: + if (record->event.pressed) { + md_led_changed(); + } + break; + } switch (keycode) { case L_BRI: @@ -69,6 +84,38 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (led_animation_breathing) gcr_breathe = gcr_desired; } return false; + case L_EDG_M: + if (record->event.pressed) { + led_edge_mode++; + if (led_edge_mode > LED_EDGE_MODE_MAX) { + led_edge_mode = LED_EDGE_MODE_ALL; + } + } + return false; + case L_EDG_I: + if (record->event.pressed) { + led_edge_brightness += 0.1; + if (led_edge_brightness > 1) { led_edge_brightness = 1; } + } + return false; + case L_EDG_D: + if (record->event.pressed) { + led_edge_brightness -= 0.1; + if (led_edge_brightness < 0) { led_edge_brightness = 0; } + } + return false; + case L_RATIOI: + if (record->event.pressed) { + led_ratio_brightness += 0.2; + if (led_ratio_brightness > 2.0) { led_ratio_brightness = 2.0; } + } + return false; + case L_RATIOD: + if (record->event.pressed) { + led_ratio_brightness -= 0.2; + if (led_ratio_brightness < 0.0) { led_ratio_brightness = 0.0; } + } + return false; case L_PTN: if (record->event.pressed) { if (led_animation_id == led_setups_count - 1) led_animation_id = 0; @@ -128,7 +175,33 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return false; case L_T_PTD: if (record->event.pressed) { - led_animation_direction = !led_animation_direction; + scroll_effect++; + if (scroll_effect == 1) { //Patterns with scroll move horizontal (Right to left) + led_animation_direction = 1; + led_animation_orientation = 0; + led_animation_circular = 0; + } else if (scroll_effect == 2) { //Patterns with scroll move vertical (Top to bottom) + led_animation_direction = 1; + led_animation_orientation = 1; + led_animation_circular = 0; + } else if (scroll_effect == 3) { //Patterns with scroll move vertical (Bottom to top) + led_animation_direction = 0; + led_animation_orientation = 1; + led_animation_circular = 0; + } else if (scroll_effect == 4) { //Patterns with scroll explode from center + led_animation_direction = 0; + led_animation_orientation = 0; + led_animation_circular = 1; + } else if (scroll_effect == 5) { //Patterns with scroll implode on center + led_animation_direction = 1; + led_animation_orientation = 0; + led_animation_circular = 1; + } else { //Patterns with scroll move horizontal (Left to right) + scroll_effect = 0; + led_animation_direction = 0; + led_animation_orientation = 0; + led_animation_circular = 0; + } } return false; case U_T_AGCR: @@ -136,6 +209,18 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { TOGGLE_FLAG_AND_PRINT(usb_gcr_auto, "USB GCR auto mode"); } return false; + case DBG_FAC: + if (record->event.pressed && MODS_SHIFT && MODS_CTRL) { + led_lighting_mode = LED_MODE_NORMAL; + led_edge_brightness = 1; + led_edge_mode = LED_EDGE_MODE_ALL; + led_animation_breathing = 0; + led_animation_id = 7; //led_programs.c led_setups leds_white index + gcr_desired = LED_GCR_MAX; + led_enabled = 1; + I2C3733_Control_Set(led_enabled); + } + return false; case DBG_TOG: if (record->event.pressed) { TOGGLE_FLAG_AND_PRINT(debug_enable, "Debug mode"); diff --git a/keyboards/massdrop/alt/keymaps/ewersp/README.md b/keyboards/massdrop/alt/keymaps/ewersp/README.md index d2e691a9ef51..8a19bb6c19a5 100644 --- a/keyboards/massdrop/alt/keymaps/ewersp/README.md +++ b/keyboards/massdrop/alt/keymaps/ewersp/README.md @@ -6,11 +6,13 @@ This keymap is very similar to the default keymap for the Drop ALT, but it overl ### For example: ``` -LeftAlt + 1...N -> F1...FN -LeftAlt + L/R Arrows -> Home/End -LeftAlt + Home -> End -LeftAlt + Backspace -> Delete -LeftAlt + Esc -> Backtick (`) +LeftAlt + 1...N -> F1...FN +LeftAlt + L/R Arrows -> Home/End +LeftAlt + Home -> End +LeftAlt + Backspace -> Delete +LeftAlt + Esc -> Backtick (`) +LeftAlt + Shift + Esc -> Tilde (~) +LeftAlt + LeftShift + 4 -> Alt+F4 ``` The novel part of this keymap is that it **preserves the default functionality** of the left alt key, so ```'alt + tab', 'ctrl + alt + del', 'alt + f4'```, etc. all work as expected without using any janky timers. @@ -23,8 +25,6 @@ And finally, the original alt key functionality can be toggled at any time by pr This keymap was based on the 'default' Drop ALT keymap (and _not_ 'default_md') which means it supports all the fancy QMK RGB patterns, and isn't limited to the stock options that come with the board. -It's also worth noting that this keymap fixes an outstanding issue where the caps lock LED flickers when the RGB mode is keylight or underglow. I could not find a general purpose fix, but the one included here works quite well. - If you have any questions, feel free to reach out to me at: ewersp [at] gmail [dot] com. Enjoy! **<3** diff --git a/keyboards/massdrop/alt/keymaps/ewersp/keymap.c b/keyboards/massdrop/alt/keymaps/ewersp/keymap.c index 483ea3cfb2a1..d4f05b9f32d7 100644 --- a/keyboards/massdrop/alt/keymaps/ewersp/keymap.c +++ b/keyboards/massdrop/alt/keymaps/ewersp/keymap.c @@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 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_MUTE, _______, RGB_SPD, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, U_T_AUTO,U_T_AGCR,_______, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_END, _______, RGB_RMOD,RGB_VAD, RGB_MOD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, - _______, RGB_TOG, _______, _______, _______, MD_BOOT, NK_TOGG, DBG_TOG, _______, TG(ALT), _______, _______, KC_PGUP, KC_VOLD, + _______, RGB_TOG, _______, _______, EEP_RST, MD_BOOT, NK_TOGG, DBG_TOG, _______, TG(ALT), _______, _______, KC_PGUP, KC_VOLD, _______, _______, KC_LALT, _______, _______, _______, KC_HOME, KC_PGDN, KC_END ), [SUPR] = LAYOUT_65_ansi_blocker( @@ -50,34 +50,56 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -// If the super alt layer is the active layer -bool super_alt_layer_active = false; +// EEPROM storage mode +enum alt_rgb_mode { + RGB_MODE_ALL, + RGB_MODE_KEYLIGHT, + RGB_MODE_UNDERGLOW, + RGB_MODE_NONE, +}; -// If we need to unregister alt when leaving the super alt layer -bool need_to_unregister_alt = false; +// EEPROM storage type +typedef union { + uint32_t raw; + struct { + uint8_t rgb_mode :8; + }; +} alt_config_t; + +alt_config_t alt_config; + +// Read from EEPROM on init to load the last saved mode +void keyboard_post_init_kb(void) { + alt_config.raw = eeconfig_read_user(); + switch (alt_config.rgb_mode) { + case RGB_MODE_ALL: + rgb_matrix_set_flags(LED_FLAG_ALL); + rgb_matrix_enable_noeeprom(); + break; + case RGB_MODE_KEYLIGHT: + rgb_matrix_set_flags(LED_FLAG_KEYLIGHT); + rgb_matrix_set_color_all(0, 0, 0); + break; + case RGB_MODE_UNDERGLOW: + rgb_matrix_set_flags(LED_FLAG_UNDERGLOW); + rgb_matrix_set_color_all(0, 0, 0); + break; + case RGB_MODE_NONE: + rgb_matrix_set_flags(LED_FLAG_NONE); + rgb_matrix_disable_noeeprom(); + break; + } +} #define MODS_SHIFT (get_mods() & MOD_BIT(KC_LSHIFT) || get_mods() & MOD_BIT(KC_RSHIFT)) #define MODS_CTRL (get_mods() & MOD_BIT(KC_LCTL) || get_mods() & MOD_BIT(KC_RCTRL)) #define MODS_ALT (get_mods() & MOD_BIT(KC_LALT) || get_mods() & MOD_BIT(KC_RALT)) -// Taken from 'g_led_config' in config_led.c -#define CAPS_LOCK_LED_ID 30 - -// This runs every matrix scan (every 'frame') -void rgb_matrix_indicators_user(void) { - led_flags_t flags = rgb_matrix_get_flags(); - - // If we're in either keylight or underglow modes (but not both simultaneously) - if (HAS_FLAGS(flags, LED_FLAG_KEYLIGHT) != HAS_FLAGS(flags, LED_FLAG_UNDERGLOW)) { +// If the super alt layer is the active layer +bool super_alt_layer_active = false; - // This fixes a bug where the caps lock LED flickers when toggled in either keylight or underglow modes - if (host_keyboard_leds() & (1 << USB_LED_CAPS_LOCK)) { - rgb_matrix_set_color(CAPS_LOCK_LED_ID, RGB_WHITE); - } else { - rgb_matrix_set_color(CAPS_LOCK_LED_ID, 0, 0, 0); - } - } -} +// If we need to unregister alt when leaving the super alt layer +bool need_to_unregister_alt = false; // This runs code every time that the layers get changed layer_state_t layer_state_set_user(layer_state_t state) { @@ -118,6 +140,16 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } // We still want to process the keycode normally return true; + case KC_F4: + // Map alt+shift+4 to alt+f4 + if (super_alt_layer_active && (get_mods() & MOD_BIT(KC_LSHIFT))) { + if (record->event.pressed) { + register_code(KC_LALT); + } else { + unregister_code(KC_LALT); + } + } + return true; case ALT_DEL: if (record->event.pressed) { register_code(KC_DEL); @@ -164,30 +196,44 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } } return false; + case EEP_RST: + if (record->event.pressed) { + key_timer = timer_read32(); + } else { + if (timer_elapsed32(key_timer) >= 500) { + eeconfig_init(); + } + } + return false; case RGB_TOG: if (record->event.pressed) { - switch (rgb_matrix_get_flags()) { - case LED_FLAG_ALL: { - rgb_matrix_set_flags(LED_FLAG_KEYLIGHT); - rgb_matrix_set_color_all(0, 0, 0); - } - break; - case LED_FLAG_KEYLIGHT: { - rgb_matrix_set_flags(LED_FLAG_UNDERGLOW); - rgb_matrix_set_color_all(0, 0, 0); - } - break; - case LED_FLAG_UNDERGLOW: { - rgb_matrix_set_flags(LED_FLAG_NONE); - rgb_matrix_disable_noeeprom(); - } - break; - default: { - rgb_matrix_set_flags(LED_FLAG_ALL); - rgb_matrix_enable_noeeprom(); - } - break; - } + switch (rgb_matrix_get_flags()) { + case LED_FLAG_ALL: { + rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR); + rgb_matrix_set_color_all(0, 0, 0); + alt_config.rgb_mode = RGB_MODE_KEYLIGHT; + break; + } + case (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR): { + rgb_matrix_set_flags(LED_FLAG_UNDERGLOW); + rgb_matrix_set_color_all(0, 0, 0); + alt_config.rgb_mode = RGB_MODE_UNDERGLOW; + break; + } + case LED_FLAG_UNDERGLOW: { + rgb_matrix_set_flags(LED_FLAG_NONE); + rgb_matrix_disable_noeeprom(); + alt_config.rgb_mode = RGB_MODE_NONE; + break; + } + default: { + rgb_matrix_set_flags(LED_FLAG_ALL); + rgb_matrix_enable_noeeprom(); + alt_config.rgb_mode = RGB_MODE_ALL; + break; + } + } + eeconfig_update_user(alt_config.raw); } return false; default: diff --git a/keyboards/massdrop/alt/keymaps/mac_md/keymap.c b/keyboards/massdrop/alt/keymaps/mac_md/keymap.c index b3626c1b6113..bfcadf890026 100644 --- a/keyboards/massdrop/alt/keymaps/mac_md/keymap.c +++ b/keyboards/massdrop/alt/keymaps/mac_md/keymap.c @@ -3,10 +3,15 @@ enum alt_keycodes { L_BRI = SAFE_RANGE, //LED Brightness Increase //Working L_BRD, //LED Brightness Decrease //Working + L_EDG_I, //LED Edge Brightness Increase + L_EDG_D, //LED Edge Brightness Decrease + L_EDG_M, //LED Edge lighting mode L_PTN, //LED Pattern Select Next //Working L_PTP, //LED Pattern Select Previous //Working L_PSI, //LED Pattern Speed Increase //Working L_PSD, //LED Pattern Speed Decrease //Working + L_RATIOD, + L_RATIOI, L_T_MD, //LED Toggle Mode //Working L_T_ONF, //LED Toggle On / Off //Broken L_ON, //LED On //Broken @@ -18,6 +23,7 @@ enum alt_keycodes { DBG_MTRX, //DEBUG Toggle Matrix Prints // DBG_KBD, //DEBUG Toggle Keyboard Prints // DBG_MOU, //DEBUG Toggle Mouse Prints // + DBG_FAC, //DEBUG Factory light testing (All on white) MD_BOOT //Restart into bootloader after hold timeout //Working }; @@ -31,10 +37,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [1] = LAYOUT( 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_MUTE, \ - L_T_BR, L_PSD, L_BRI, L_PSI, _______, _______, _______, _______, U_T_AGCR,_______, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_END, \ - L_T_PTD, L_PTP, L_BRD, L_PTN, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, \ - _______, L_T_MD, L_T_ONF, _______, _______, MD_BOOT, NK_TOGG, _______, _______, _______, _______, _______, KC_PGUP, KC_VOLD, \ - _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END \ + L_T_BR, L_PSD, L_BRI, L_PSI, L_EDG_I, _______, _______, _______, U_T_AGCR,_______, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_END, \ + L_T_PTD, L_PTP, L_BRD, L_PTN, L_EDG_D, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, \ + _______, L_T_MD, L_T_ONF, _______, L_EDG_M, MD_BOOT, NK_TOGG, _______, _______, _______, _______, _______, KC_PGUP, KC_VOLD, \ + _______, _______, _______, DBG_FAC, _______, _______, KC_HOME, KC_PGDN, KC_END \ ), /* [X] = LAYOUT( @@ -53,6 +59,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { bool process_record_user(uint16_t keycode, keyrecord_t *record) { static uint32_t key_timer; + static uint8_t scroll_effect = 0; switch (keycode) { case L_BRI: @@ -69,6 +76,38 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (led_animation_breathing) gcr_breathe = gcr_desired; } return false; + case L_EDG_M: + if (record->event.pressed) { + led_edge_mode++; + if (led_edge_mode > LED_EDGE_MODE_MAX) { + led_edge_mode = LED_EDGE_MODE_ALL; + } + } + return false; + case L_EDG_I: + if (record->event.pressed) { + led_edge_brightness += 0.1; + if (led_edge_brightness > 1) { led_edge_brightness = 1; } + } + return false; + case L_EDG_D: + if (record->event.pressed) { + led_edge_brightness -= 0.1; + if (led_edge_brightness < 0) { led_edge_brightness = 0; } + } + return false; + case L_RATIOI: + if (record->event.pressed) { + led_ratio_brightness += 0.2; + if (led_ratio_brightness > 2.0) { led_ratio_brightness = 2.0; } + } + return false; + case L_RATIOD: + if (record->event.pressed) { + led_ratio_brightness -= 0.2; + if (led_ratio_brightness < 0.0) { led_ratio_brightness = 0.0; } + } + return false; case L_PTN: if (record->event.pressed) { if (led_animation_id == led_setups_count - 1) led_animation_id = 0; @@ -128,7 +167,33 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return false; case L_T_PTD: if (record->event.pressed) { - led_animation_direction = !led_animation_direction; + scroll_effect++; + if (scroll_effect == 1) { //Patterns with scroll move horizontal (Right to left) + led_animation_direction = 1; + led_animation_orientation = 0; + led_animation_circular = 0; + } else if (scroll_effect == 2) { //Patterns with scroll move vertical (Top to bottom) + led_animation_direction = 1; + led_animation_orientation = 1; + led_animation_circular = 0; + } else if (scroll_effect == 3) { //Patterns with scroll move vertical (Bottom to top) + led_animation_direction = 0; + led_animation_orientation = 1; + led_animation_circular = 0; + } else if (scroll_effect == 4) { //Patterns with scroll explode from center + led_animation_direction = 0; + led_animation_orientation = 0; + led_animation_circular = 1; + } else if (scroll_effect == 5) { //Patterns with scroll implode on center + led_animation_direction = 1; + led_animation_orientation = 0; + led_animation_circular = 1; + } else { //Patterns with scroll move horizontal (Left to right) + scroll_effect = 0; + led_animation_direction = 0; + led_animation_orientation = 0; + led_animation_circular = 0; + } } return false; case U_T_AGCR: @@ -136,6 +201,18 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { TOGGLE_FLAG_AND_PRINT(usb_gcr_auto, "USB GCR auto mode"); } return false; + case DBG_FAC: + if (record->event.pressed && MODS_SHIFT && MODS_CTRL) { + led_lighting_mode = LED_MODE_NORMAL; + led_edge_brightness = 1; + led_edge_mode = LED_EDGE_MODE_ALL; + led_animation_breathing = 0; + led_animation_id = 7; //led_programs.c led_setups leds_white index + gcr_desired = LED_GCR_MAX; + led_enabled = 1; + I2C3733_Control_Set(led_enabled); + } + return false; case DBG_TOG: if (record->event.pressed) { TOGGLE_FLAG_AND_PRINT(debug_enable, "Debug mode"); diff --git a/keyboards/massdrop/alt/keymaps/pregame/config.h b/keyboards/massdrop/alt/keymaps/pregame/config.h index acd041ce1455..19fc4fed34dc 100644 --- a/keyboards/massdrop/alt/keymaps/pregame/config.h +++ b/keyboards/massdrop/alt/keymaps/pregame/config.h @@ -89,7 +89,7 @@ // #define RGBLIGHT_SAT_STEP 25 // Units to step when in/decreasing saturation // #define RGBLIGHT_VAL_STEP 12 // Units to step when in/decreasing value (brightness) // #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -// #define RGB_DISABLE_WHEN_USB_SUSPENDED false // turn off effects when suspended +// #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended // #define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness) // #define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness) #define RGBLIGHT_ANIMATIONS // Run RGB animations @@ -103,7 +103,7 @@ // #define RGBLIGHT_EFFECT_RGB_TEST // Enable RGB test animation mode. // #define RGBLIGHT_EFFECT_SNAKE // Enable snake animation mode. // #define RGBLIGHT_EFFECT_STATIC_GRADIENT // Enable static gradient mode. - + // #define RGBLIGHT_EFFECT_BREATHE_CENTER // If defined, used to calculate the curve for the breathing animation. Valid values are 1.0 to 2.7 // #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // The maximum brightness for the breathing mode. Valid values are 1 to 255 // #define RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL 1000 // How long to wait between light changes for the "Christmas" animation, in milliseconds @@ -115,42 +115,42 @@ // #define RGBLIGHT_EFFECT_SNAKE_LENGTH 4 // The number of LEDs to light up for the "Snake" animation // This list in in the correct mode order. Next mode is the following line, previous mode is previous line. Loops around. -// #define DISABLE_RGB_MATRIX_SOLID_COLOR // Static single hue, no speed support -// #define DISABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue -// #define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes -// #define DISABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation -// #define DISABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right -// #define DISABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right -// #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation -// #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness -// #define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades saturation -// #define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness -// #define DISABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient -// #define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right -// #define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom -// #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in -// #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in -// #define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradent Chevron shapped scrolling left to right -// #define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard -// #define DISABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard -// #define DISABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard -// #define DISABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard -// #define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard -// #define DISABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue -// #define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation +// #undef ENABLE_RGB_MATRIX_SOLID_COLOR // Static single hue, no speed support +// #undef ENABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue +// #undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes +// #undef ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation +// #undef ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right +// #undef ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right +// #undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation +// #undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness +// #undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades saturation +// #undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness +// #undef ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient +// #undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right +// #undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom +// #undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in +// #undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in +// #undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradent Chevron shapped scrolling left to right +// #undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard +// #undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard +// #undef ENABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard +// #undef ENABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard +// #undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard +// #undef ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue +// #undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation // =================================================== Requires RGB_MATRIX_FRAMEBUFFER_EFFECTS ============================================================= -// #define DISABLE_RGB_MATRIX_TYPING_HEATMAP // How hot is your WPM! -#define DISABLE_RGB_MATRIX_DIGITAL_RAIN // That famous computer simulation +// #undef ENABLE_RGB_MATRIX_TYPING_HEATMAP // How hot is your WPM! +#undef ENABLE_RGB_MATRIX_DIGITAL_RAIN // That famous computer simulation // =================================================== RGB_MATRIX_KEYPRESSES OR RGB_MATRIX_KEYRELEASES ===================================================== -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out -// #define DISABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out -// #define DISABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out -// #define DISABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out -// #define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out +// #undef ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out +// #undef ENABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out +// #undef ENABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out +// #undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out diff --git a/keyboards/massdrop/alt/keymaps/pregame/rules.mk b/keyboards/massdrop/alt/keymaps/pregame/rules.mk index c6977c23cbf9..184405662a38 100644 --- a/keyboards/massdrop/alt/keymaps/pregame/rules.mk +++ b/keyboards/massdrop/alt/keymaps/pregame/rules.mk @@ -1,7 +1,7 @@ # RGBLIGHT_ENABLE = no # Not for MD boards. This is here in case you forget. COMMAND_ENABLE = no # Commands for debug and configuration -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite # AUTO_SHIFT_ENABLE = yes # Auto Shift NKRO_ENABLE = yes # USB Nkey Rollover DYNAMIC_MACRO_ENABLE = no # Dynamic macro recording and play diff --git a/keyboards/massdrop/alt/keymaps/urbanvanilla/config.h b/keyboards/massdrop/alt/keymaps/urbanvanilla/config.h index 0f2740013d4c..f2a7e50386d7 100644 --- a/keyboards/massdrop/alt/keymaps/urbanvanilla/config.h +++ b/keyboards/massdrop/alt/keymaps/urbanvanilla/config.h @@ -24,4 +24,4 @@ along with this program. If not, see . #define RGB_MATRIX_LED_PROCESS_LIMIT 15 #define RGB_MATRIX_LED_FLUSH_LIMIT 10 -#define RGB_DISABLE_WHEN_USB_SUSPENDED false // turn off effects when suspended +// #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended diff --git a/keyboards/massdrop/alt/matrix.c b/keyboards/massdrop/alt/matrix.c deleted file mode 100644 index f635f37f2322..000000000000 --- a/keyboards/massdrop/alt/matrix.c +++ /dev/null @@ -1,182 +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 . -*/ - -#include "alt.h" - -#include "d51_util.h" -#include "debug.h" -#include "clks.h" -#include - -#ifndef MATRIX_IO_DELAY -# define MATRIX_IO_DELAY 1 -#endif - -matrix_row_t mlatest[MATRIX_ROWS]; -matrix_row_t mlast[MATRIX_ROWS]; -matrix_row_t mdebounced[MATRIX_ROWS]; - -uint8_t row_ports[] = { MATRIX_ROW_PORTS }; -uint8_t row_pins[] = { MATRIX_ROW_PINS }; -uint8_t col_ports[] = { MATRIX_COL_PORTS }; -uint8_t col_pins[] = { MATRIX_COL_PINS }; -uint32_t row_masks[2]; //NOTE: If more than PA PB used in the future, adjust code to accomodate - -__attribute__((weak)) void matrix_io_delay(void) { wait_us(MATRIX_IO_DELAY); } - -__attribute__ ((weak)) -void matrix_init_kb(void) { - matrix_init_user(); -} - -__attribute__ ((weak)) -void matrix_scan_kb(void) { - matrix_scan_user(); -} - -__attribute__ ((weak)) -void matrix_init_user(void) { -} - -__attribute__ ((weak)) -void matrix_scan_user(void) { -} - -void matrix_init(void) -{ - memset(mlatest, 0, MATRIX_ROWS * sizeof(matrix_row_t)); - memset(mlast, 0, MATRIX_ROWS * sizeof(matrix_row_t)); - memset(mdebounced, 0, MATRIX_ROWS * sizeof(matrix_row_t)); - - row_masks[PA] = 0; - row_masks[PB] = 0; - - uint8_t row; - for (row = 0; row < MATRIX_ROWS; row++) - { - PORT->Group[row_ports[row]].DIRCLR.reg = 1 << row_pins[row]; //Input - PORT->Group[row_ports[row]].OUTCLR.reg = 1 << row_pins[row]; //Low - PORT->Group[row_ports[row]].PINCFG[row_pins[row]].bit.INEN = 1; //Input Enable, - PORT->Group[row_ports[row]].PINCFG[row_pins[row]].bit.PULLEN = 1; //Pull Enable - row_masks[row_ports[row]] |= 1 << row_pins[row]; //Add pin to proper row mask - } - - uint8_t col; - for (col = 0; col < MATRIX_COLS; col++) - { - PORT->Group[col_ports[col]].DIRSET.reg = 1 << col_pins[col]; //Output - PORT->Group[col_ports[col]].OUTCLR.reg = 1 << col_pins[col]; //Low - } - - matrix_init_quantum(); -} - -uint64_t mdebouncing = 0; -uint8_t matrix_scan(void) -{ - uint8_t mchanged; - uint8_t row; - uint8_t col; - uint32_t scans[2]; //PA PB - - if (timer_read64() < mdebouncing) return 1; //mdebouncing == 0 when no debouncing active - - memset(mlatest, 0, MATRIX_ROWS * sizeof(matrix_row_t)); //Zero the result buffer - - for (col = 0; col < MATRIX_COLS; col++) - { - PORT->Group[col_ports[col]].OUTSET.reg = 1 << col_pins[col]; //Set col output - - matrix_io_delay(); //Delay for output - - scans[PA] = PORT->Group[PA].IN.reg & row_masks[PA]; //Read PA row pins data - scans[PB] = PORT->Group[PB].IN.reg & row_masks[PB]; //Read PB row pins data - - PORT->Group[col_ports[col]].OUTCLR.reg = 1 << col_pins[col]; //Clear col output - - for (row = 0; row < MATRIX_ROWS; row++) - { - //Move scan bits from scans array into proper row bit locations - if (scans[row_ports[row]] & (1 << row_pins[row])) - mlatest[row] |= 1 << col; - } - } - - mchanged = 0; //Default to no matrix change since last - - for (row = 0; row < MATRIX_ROWS; row++) - { - if (mlast[row] != mlatest[row]) - mchanged = 1; - mlast[row] = mlatest[row]; - } - - if (!mchanged) - { - for (row = 0; row < MATRIX_ROWS; row++) - mdebounced[row] = mlatest[row]; - mdebouncing = 0; - } - else - { - //Begin or extend debounce on change - mdebouncing = timer_read64() + DEBOUNCE; - } - - matrix_scan_quantum(); - - return 1; -} - -matrix_row_t matrix_get_row(uint8_t row) -{ - return mdebounced[row]; -} - -void matrix_print(void) -{ - char buf[(MATRIX_COLS+8)*(MATRIX_ROWS+1)] = "R C"; - char *pbuf = buf+3; - uint32_t cols; - uint32_t rows; - matrix_row_t row; - - for (cols = 1; cols <= MATRIX_COLS; cols++) - { - *pbuf = (cols%10)+48; - pbuf++; - } - *pbuf = '\r'; pbuf++; - *pbuf = '\n'; pbuf++; - - for (rows = 1; rows <= MATRIX_ROWS; rows++) - { - row = matrix_get_row(rows-1); - if (rows < 10) { *pbuf = rows+48; pbuf++; *pbuf = ' '; pbuf++; *pbuf = ' '; pbuf++; } - else { *pbuf = (rows/10)+48; pbuf++; *pbuf = (rows%10)+48; pbuf++; *pbuf = ' '; pbuf++; } - for (cols = 0; cols < MATRIX_COLS; cols++) - { - if (row & 1 << cols) *pbuf = 'X'; - else *pbuf = '.'; - pbuf++; - } - *pbuf = '\r'; pbuf++; - *pbuf = '\n'; pbuf++; - } - *pbuf = 0; - dprint(buf); -} diff --git a/keyboards/massdrop/alt/rules.mk b/keyboards/massdrop/alt/rules.mk index 538df480bd2b..ecbb7e19937b 100644 --- a/keyboards/massdrop/alt/rules.mk +++ b/keyboards/massdrop/alt/rules.mk @@ -1,31 +1,23 @@ # project specific files -SRC = matrix.c SRC += config_led.c #For platform and packs ARM_ATSAM = SAMD51J18A MCU = cortex-m4 -CUSTOM_MATRIX = yes - # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# 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 on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output VIRTSER_ENABLE = no # USB Serial Driver RAW_ENABLE = no # Raw device AUTO_SHIFT_ENABLE = no # Auto Shift diff --git a/keyboards/massdrop/ctrl/config.h b/keyboards/massdrop/ctrl/config.h index 215a2e1b19b0..6c0678c5ed8d 100644 --- a/keyboards/massdrop/ctrl/config.h +++ b/keyboards/massdrop/ctrl/config.h @@ -32,37 +32,38 @@ along with this program. If not, see . #define MATRIX_ROWS 11 #define MATRIX_COLS 8 +#define MATRIX_ROW_PINS { B04, B05, B06, B07, B08, B09, A10, A11, B10, B11, B12 } +#define MATRIX_COL_PINS { A00, A01, A02, A03, A04, A05, A06, A07 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Temporary solution for matrix delay */ +#define IGNORE_ATOMIC_BLOCK + +/* Avoid out-of-bounds errors when SmartEEPROM is not enabled */ +#define EEPROM_SIZE 1024 + /* MCU Port name definitions */ #define PA 0 #define PB 1 -/* Port and Pin definition of key row hardware configuration */ -#define MATRIX_ROW_PORTS PB, PB, PB, PB, PB, PB, PA, PA, PB, PB, PB -#define MATRIX_ROW_PINS 4, 5, 6, 7, 8, 9, 10, 11, 10, 11, 12 - -/* Port and Pin definition of key column hardware configuration */ -#define MATRIX_COL_PORTS PA, PA, PA, PA, PA, PA, PA, PA -#define MATRIX_COL_PINS 0, 1, 2, 3, 4, 5, 6, 7 - /* 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 @@ -91,6 +92,15 @@ along with this program. If not, see . #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 @@ -123,5 +133,53 @@ along with this program. If not, see . #define RGB_MATRIX_KEYPRESSES #define RGB_MATRIX_LED_PROCESS_LIMIT 15 #define RGB_MATRIX_LED_FLUSH_LIMIT 10 +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH #include "config_led.h" diff --git a/keyboards/massdrop/ctrl/config_led.c b/keyboards/massdrop/ctrl/config_led.c index 27ddb5c388e7..bd708c2cb8c0 100644 --- a/keyboards/massdrop/ctrl/config_led.c +++ b/keyboards/massdrop/ctrl/config_led.c @@ -73,9 +73,8 @@ led_config_t g_led_config = { { #ifdef USB_LED_INDICATOR_ENABLE -void rgb_matrix_indicators_kb(void) -{ - md_rgb_matrix_indicators(); +void rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) { + md_rgb_matrix_indicators_advanced(led_min, led_max); } #endif // USB_LED_INDICATOR_ENABLE diff --git a/keyboards/massdrop/ctrl/config_led.h b/keyboards/massdrop/ctrl/config_led.h index 0c91a0c80baf..de897ce1bd95 100644 --- a/keyboards/massdrop/ctrl/config_led.h +++ b/keyboards/massdrop/ctrl/config_led.h @@ -58,7 +58,7 @@ along with this program. If not, see . //swr: Matrix wiring SW Red row (1-12) //swg: Matrix wiring SW Green row (1-12) //swb: Matrix wiring SW Blue row (1-12) -//scan: Associated key scancode if any +//scan: Associated key matrix scancode (set 255 if none or 254 for LED to turn off in alternating mode) //Note: Origin 0,0 may be located anywhere as the software will do the final layout #define ISSI3733_LED_MAP { \ { .id = 1, .x = 0, .y = 0, .adr = { .drv = 2, .cs = 2, .swr = 2, .swg = 1, .swb = 3 }, .scan = 0 }, \ @@ -149,37 +149,37 @@ along with this program. If not, see . { .id = 86, .x = 12.375, .y = -4.125, .adr = { .drv = 1, .cs = 12, .swr = 5, .swg = 4, .swb = 6 }, .scan = 85 }, \ { .id = 87, .x = 13.125, .y = -4.125, .adr = { .drv = 1, .cs = 11, .swr = 5, .swg = 4, .swb = 6 }, .scan = 86 }, \ { .id = 88, .x = 13.433, .y = -4.43, .adr = { .drv = 1, .cs = 11, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ - { .id = 89, .x = 12.285, .y = -4.535, .adr = { .drv = 1, .cs = 12, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ + { .id = 89, .x = 12.285, .y = -4.535, .adr = { .drv = 1, .cs = 12, .swr = 2, .swg = 1, .swb = 3 }, .scan = 254 }, \ { .id = 90, .x = 11.14, .y = -4.535, .adr = { .drv = 1, .cs = 13, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ - { .id = 91, .x = 9.995, .y = -4.535, .adr = { .drv = 1, .cs = 14, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ + { .id = 91, .x = 9.995, .y = -4.535, .adr = { .drv = 1, .cs = 14, .swr = 2, .swg = 1, .swb = 3 }, .scan = 254 }, \ { .id = 92, .x = 8.85, .y = -4.535, .adr = { .drv = 1, .cs = 15, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ - { .id = 93, .x = 7.705, .y = -4.535, .adr = { .drv = 1, .cs = 16, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ + { .id = 93, .x = 7.705, .y = -4.535, .adr = { .drv = 1, .cs = 16, .swr = 2, .swg = 1, .swb = 3 }, .scan = 254 }, \ { .id = 94, .x = 6.56, .y = -4.535, .adr = { .drv = 2, .cs = 9, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ - { .id = 95, .x = 5.415, .y = -4.535, .adr = { .drv = 2, .cs = 10, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ + { .id = 95, .x = 5.415, .y = -4.535, .adr = { .drv = 2, .cs = 10, .swr = 2, .swg = 1, .swb = 3 }, .scan = 254 }, \ { .id = 96, .x = 4.27, .y = -4.535, .adr = { .drv = 2, .cs = 11, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ - { .id = 97, .x = 3.125, .y = -4.535, .adr = { .drv = 2, .cs = 12, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ + { .id = 97, .x = 3.125, .y = -4.535, .adr = { .drv = 2, .cs = 12, .swr = 2, .swg = 1, .swb = 3 }, .scan = 254 }, \ { .id = 98, .x = 1.98, .y = -4.535, .adr = { .drv = 2, .cs = 13, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ - { .id = 99, .x = 0.835, .y = -4.535, .adr = { .drv = 2, .cs = 14, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ + { .id = 99, .x = 0.835, .y = -4.535, .adr = { .drv = 2, .cs = 14, .swr = 2, .swg = 1, .swb = 3 }, .scan = 254 }, \ { .id = 100, .x = -0.307, .y = -4.43, .adr = { .drv = 2, .cs = 15, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ - { .id = 101, .x = -0.41, .y = -3.245, .adr = { .drv = 2, .cs = 15, .swr = 11, .swg = 10, .swb = 12 }, .scan = 255 }, \ + { .id = 101, .x = -0.41, .y = -3.245, .adr = { .drv = 2, .cs = 15, .swr = 11, .swg = 10, .swb = 12 }, .scan = 254 }, \ { .id = 102, .x = -0.41, .y = -2.06, .adr = { .drv = 2, .cs = 15, .swr = 5, .swg = 4, .swb = 6 }, .scan = 255 }, \ - { .id = 103, .x = -0.41, .y = -0.875, .adr = { .drv = 2, .cs = 15, .swr = 8, .swg = 7, .swb = 9 }, .scan = 255 }, \ + { .id = 103, .x = -0.41, .y = -0.875, .adr = { .drv = 2, .cs = 15, .swr = 8, .swg = 7, .swb = 9 }, .scan = 254 }, \ { .id = 104, .x = -0.308, .y = 0.31, .adr = { .drv = 2, .cs = 1, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ - { .id = 105, .x = 0.835, .y = 0.415, .adr = { .drv = 2, .cs = 3, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ + { .id = 105, .x = 0.835, .y = 0.415, .adr = { .drv = 2, .cs = 3, .swr = 2, .swg = 1, .swb = 3 }, .scan = 254 }, \ { .id = 106, .x = 1.98, .y = 0.415, .adr = { .drv = 2, .cs = 4, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ - { .id = 107, .x = 3.125, .y = 0.415, .adr = { .drv = 2, .cs = 5, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ + { .id = 107, .x = 3.125, .y = 0.415, .adr = { .drv = 2, .cs = 5, .swr = 2, .swg = 1, .swb = 3 }, .scan = 254 }, \ { .id = 108, .x = 4.27, .y = 0.415, .adr = { .drv = 2, .cs = 7, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ - { .id = 109, .x = 5.415, .y = 0.415, .adr = { .drv = 2, .cs = 8, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ + { .id = 109, .x = 5.415, .y = 0.415, .adr = { .drv = 2, .cs = 8, .swr = 2, .swg = 1, .swb = 3 }, .scan = 254 }, \ { .id = 110, .x = 6.56, .y = 0.415, .adr = { .drv = 1, .cs = 1, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ - { .id = 111, .x = 7.705, .y = 0.415, .adr = { .drv = 1, .cs = 2, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ + { .id = 111, .x = 7.705, .y = 0.415, .adr = { .drv = 1, .cs = 2, .swr = 2, .swg = 1, .swb = 3 }, .scan = 254 }, \ { .id = 112, .x = 8.85, .y = 0.415, .adr = { .drv = 1, .cs = 3, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ - { .id = 113, .x = 9.995, .y = 0.415, .adr = { .drv = 1, .cs = 5, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ + { .id = 113, .x = 9.995, .y = 0.415, .adr = { .drv = 1, .cs = 5, .swr = 2, .swg = 1, .swb = 3 }, .scan = 254 }, \ { .id = 114, .x = 11.14, .y = 0.415, .adr = { .drv = 1, .cs = 6, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ - { .id = 115, .x = 12.285, .y = 0.415, .adr = { .drv = 1, .cs = 8, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ + { .id = 115, .x = 12.285, .y = 0.415, .adr = { .drv = 1, .cs = 8, .swr = 2, .swg = 1, .swb = 3 }, .scan = 254 }, \ { .id = 116, .x = 13.432, .y = 0.31, .adr = { .drv = 1, .cs = 10, .swr = 2, .swg = 1, .swb = 3 }, .scan = 255 }, \ - { .id = 117, .x = 13.535, .y = -0.875, .adr = { .drv = 1, .cs = 10, .swr = 8, .swg = 7, .swb = 9 }, .scan = 255 }, \ + { .id = 117, .x = 13.535, .y = -0.875, .adr = { .drv = 1, .cs = 10, .swr = 8, .swg = 7, .swb = 9 }, .scan = 254 }, \ { .id = 118, .x = 13.535, .y = -2.06, .adr = { .drv = 1, .cs = 10, .swr = 11, .swg = 10, .swb = 12 }, .scan = 255 }, \ - { .id = 119, .x = 13.535, .y = -3.245, .adr = { .drv = 1, .cs = 10, .swr = 5, .swg = 4, .swb = 6 }, .scan = 255 }, \ + { .id = 119, .x = 13.535, .y = -3.245, .adr = { .drv = 1, .cs = 10, .swr = 5, .swg = 4, .swb = 6 }, .scan = 254 }, \ }; #define USB_LED_INDICATOR_ENABLE //Comment out to disable indicator functionality diff --git a/keyboards/massdrop/ctrl/ctrl.c b/keyboards/massdrop/ctrl/ctrl.c new file mode 100644 index 000000000000..c688d330a526 --- /dev/null +++ b/keyboards/massdrop/ctrl/ctrl.c @@ -0,0 +1,21 @@ +/* +Copyright 2021 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 . +*/ +#include "ctrl.h" + +/* Temporary solution for matrix delay */ +void matrix_output_select_delay(void) { matrix_io_delay(); } +void matrix_output_unselect_delay(uint8_t line, bool key_pressed) {} diff --git a/keyboards/massdrop/ctrl/ctrl.h b/keyboards/massdrop/ctrl/ctrl.h index 1650beb9a444..a3d66ba77551 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/massdrop/ctrl/info.json b/keyboards/massdrop/ctrl/info.json index 5e7f92f5bb68..00d74be021b1 100644 --- a/keyboards/massdrop/ctrl/info.json +++ b/keyboards/massdrop/ctrl/info.json @@ -2,8 +2,6 @@ "keyboard_name": "CTRL", "url": "https://www.massdrop.com/buy/massdrop-ctrl-mechanical-keyboard", "maintainer": "Massdrop", - "width": 18.5, - "height": 6.5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/massdrop/ctrl/keymaps/default/keymap.c b/keyboards/massdrop/ctrl/keymaps/default/keymap.c index 7a1aebfcb8ae..8c0cab2ea9e0 100644 --- a/keyboards/massdrop/ctrl/keymaps/default/keymap.c +++ b/keyboards/massdrop/ctrl/keymaps/default/keymap.c @@ -39,14 +39,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ }; -// Runs just one time when the keyboard initializes. -void matrix_init_user(void) { -}; - -// Runs constantly in the background, in a loop. -void matrix_scan_user(void) { -}; - #define MODS_SHIFT (get_mods() & MOD_MASK_SHIFT) #define MODS_CTRL (get_mods() & MOD_MASK_CTRL) #define MODS_ALT (get_mods() & MOD_MASK_ALT) diff --git a/keyboards/massdrop/ctrl/keymaps/default_md/keymap.c b/keyboards/massdrop/ctrl/keymaps/default_md/keymap.c index a4442d8c652c..db36131fca0a 100644 --- a/keyboards/massdrop/ctrl/keymaps/default_md/keymap.c +++ b/keyboards/massdrop/ctrl/keymaps/default_md/keymap.c @@ -3,10 +3,15 @@ enum ctrl_keycodes { L_BRI = SAFE_RANGE, //LED Brightness Increase //Working L_BRD, //LED Brightness Decrease //Working + L_EDG_I, //LED Edge Brightness Increase + L_EDG_D, //LED Edge Brightness Decrease + L_EDG_M, //LED Edge lighting mode L_PTN, //LED Pattern Select Next //Working L_PTP, //LED Pattern Select Previous //Working L_PSI, //LED Pattern Speed Increase //Working L_PSD, //LED Pattern Speed Decrease //Working + L_RATIOD, + L_RATIOI, L_T_MD, //LED Toggle Mode //Working L_T_ONF, //LED Toggle On / Off //Broken L_ON, //LED On //Broken @@ -18,6 +23,7 @@ enum ctrl_keycodes { DBG_MTRX, //DEBUG Toggle Matrix Prints // DBG_KBD, //DEBUG Toggle Keyboard Prints // DBG_MOU, //DEBUG Toggle Mouse Prints // + DBG_FAC, //DEBUG Factory light testing (All on white) MD_BOOT //Restart into bootloader after hold timeout //Working }; @@ -33,10 +39,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [1] = LAYOUT( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, _______, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MSTP, KC_VOLU, \ - L_T_BR, L_PSD, L_BRI, L_PSI, _______, _______, _______, _______, U_T_AGCR,_______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLD, \ - L_T_PTD, L_PTP, L_BRD, L_PTN, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, L_T_MD, L_T_ONF, _______, _______, MD_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ + L_T_BR, L_PSD, L_BRI, L_PSI, L_EDG_I, _______, _______, _______, U_T_AGCR,_______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLD, \ + L_T_PTD, L_PTP, L_BRD, L_PTN, L_EDG_D, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, L_T_MD, L_T_ONF, _______, L_EDG_M, MD_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, DBG_FAC, _______, _______, _______, _______, _______, _______, _______ \ ), /* [X] = LAYOUT( @@ -50,20 +56,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ }; -// Runs just one time when the keyboard initializes. -void matrix_init_user(void) { -}; - -// Runs constantly in the background, in a loop. -void matrix_scan_user(void) { -}; - #define MODS_SHIFT (get_mods() & MOD_BIT(KC_LSHIFT) || get_mods() & MOD_BIT(KC_RSHIFT)) #define MODS_CTRL (get_mods() & MOD_BIT(KC_LCTL) || get_mods() & MOD_BIT(KC_RCTRL)) #define MODS_ALT (get_mods() & MOD_BIT(KC_LALT) || get_mods() & MOD_BIT(KC_RALT)) bool process_record_user(uint16_t keycode, keyrecord_t *record) { static uint32_t key_timer; + static uint8_t scroll_effect = 0; + + switch (keycode) { + case L_BRI ... U_T_AGCR: + if (record->event.pressed) { + md_led_changed(); + } + break; + } switch (keycode) { case L_BRI: @@ -80,6 +87,38 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (led_animation_breathing) gcr_breathe = gcr_desired; } return false; + case L_EDG_M: + if (record->event.pressed) { + led_edge_mode++; + if (led_edge_mode > LED_EDGE_MODE_MAX) { + led_edge_mode = LED_EDGE_MODE_ALL; + } + } + return false; + case L_EDG_I: + if (record->event.pressed) { + led_edge_brightness += 0.1; + if (led_edge_brightness > 1) { led_edge_brightness = 1; } + } + return false; + case L_EDG_D: + if (record->event.pressed) { + led_edge_brightness -= 0.1; + if (led_edge_brightness < 0) { led_edge_brightness = 0; } + } + return false; + case L_RATIOI: + if (record->event.pressed) { + led_ratio_brightness += 0.2; + if (led_ratio_brightness > 2.0) { led_ratio_brightness = 2.0; } + } + return false; + case L_RATIOD: + if (record->event.pressed) { + led_ratio_brightness -= 0.2; + if (led_ratio_brightness < 0.0) { led_ratio_brightness = 0.0; } + } + return false; case L_PTN: if (record->event.pressed) { if (led_animation_id == led_setups_count - 1) led_animation_id = 0; @@ -139,7 +178,33 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return false; case L_T_PTD: if (record->event.pressed) { - led_animation_direction = !led_animation_direction; + scroll_effect++; + if (scroll_effect == 1) { //Patterns with scroll move horizontal (Right to left) + led_animation_direction = 1; + led_animation_orientation = 0; + led_animation_circular = 0; + } else if (scroll_effect == 2) { //Patterns with scroll move vertical (Top to bottom) + led_animation_direction = 1; + led_animation_orientation = 1; + led_animation_circular = 0; + } else if (scroll_effect == 3) { //Patterns with scroll move vertical (Bottom to top) + led_animation_direction = 0; + led_animation_orientation = 1; + led_animation_circular = 0; + } else if (scroll_effect == 4) { //Patterns with scroll explode from center + led_animation_direction = 0; + led_animation_orientation = 0; + led_animation_circular = 1; + } else if (scroll_effect == 5) { //Patterns with scroll implode on center + led_animation_direction = 1; + led_animation_orientation = 0; + led_animation_circular = 1; + } else { //Patterns with scroll move horizontal (Left to right) + scroll_effect = 0; + led_animation_direction = 0; + led_animation_orientation = 0; + led_animation_circular = 0; + } } return false; case U_T_AGCR: @@ -147,6 +212,18 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { TOGGLE_FLAG_AND_PRINT(usb_gcr_auto, "USB GCR auto mode"); } return false; + case DBG_FAC: + if (record->event.pressed && MODS_SHIFT && MODS_CTRL) { + led_lighting_mode = LED_MODE_NORMAL; + led_edge_brightness = 1; + led_edge_mode = LED_EDGE_MODE_ALL; + led_animation_breathing = 0; + led_animation_id = 7; //led_programs.c led_setups leds_white index + gcr_desired = LED_GCR_MAX; + led_enabled = 1; + I2C3733_Control_Set(led_enabled); + } + return false; case DBG_TOG: if (record->event.pressed) { TOGGLE_FLAG_AND_PRINT(debug_enable, "Debug mode"); @@ -187,7 +264,7 @@ led_instruction_t led_instructions[] = { //Flags can be found in tmk_core/protocol/arm_atsam/md_rgb_matrix.h (prefixed with LED_FLAG_) //LED IDs can be found in config_led.h in the keyboard's directory //Examples are below - + //All LEDs use the user's selected pattern (this is the factory default) { .flags = LED_FLAG_USE_ROTATE_PATTERN }, @@ -196,7 +273,7 @@ led_instruction_t led_instructions[] = { //Specific LEDs use specified RGB values while all others are off // { .flags = LED_FLAG_MATCH_ID | LED_FLAG_USE_RGB, .id0 = 0xFF, .id1 = 0x00FF, .id2 = 0x0000FF00, .id3 = 0xFF000000, .r = 75, .g = 150, .b = 225 }, - + //All LEDs use the user's selected pattern //On layer 1, all key LEDs (except the top row which keeps active pattern) are red while all edge LEDs are green //When layer 1 is active, key LEDs use red (id0 32 - 17: 1111 1111 1111 1111 0000 0000 0000 0000 = 0xFFFF0000) (except top row 16 - 1) diff --git a/keyboards/massdrop/ctrl/keymaps/endgame/config.h b/keyboards/massdrop/ctrl/keymaps/endgame/config.h index 0ef485591fbf..4850d7eed2f5 100644 --- a/keyboards/massdrop/ctrl/keymaps/endgame/config.h +++ b/keyboards/massdrop/ctrl/keymaps/endgame/config.h @@ -49,7 +49,7 @@ // #define RGBLIGHT_SAT_STEP 25 // Units to step when in/decreasing saturation // #define RGBLIGHT_VAL_STEP 12 // Units to step when in/decreasing value (brightness) // #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -// #define RGB_DISABLE_WHEN_USB_SUSPENDED false // turn off effects when suspended +// #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended // #define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness) // #define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness) // #define RGBLIGHT_ANIMATIONS // Run RGB animations @@ -75,42 +75,42 @@ // #define RGBLIGHT_EFFECT_SNAKE_LENGTH 4 // The number of LEDs to light up for the "Snake" animation // This list in in the correct mode order. Next mode is the following line, previous mode is previous line. Loops around. -// #define DISABLE_RGB_MATRIX_SOLID_COLOR // Static single hue, no speed support -// #define DISABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue -// #define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes -#define DISABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation -#define DISABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right -#define DISABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades saturation -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness -#define DISABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient -#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right -#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom -#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in -#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in -#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradent Chevron shapped scrolling left to right -#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard -#define DISABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard -#define DISABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard -#define DISABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard -#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard -// #define DISABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue -// #define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation +// #undef ENABLE_RGB_MATRIX_SOLID_COLOR // Static single hue, no speed support +// #undef ENABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue +// #undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes +#undef ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation +#undef ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right +#undef ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right +#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation +#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness +#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades saturation +#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness +#undef ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient +#undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right +#undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom +#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in +#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in +#undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradent Chevron shapped scrolling left to right +#undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard +#undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard +#undef ENABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard +#undef ENABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard +#undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard +// #undef ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue +// #undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation // =================================================== Requires RGB_MATRIX_FRAMEBUFFER_EFFECTS ============================================================= -// #define DISABLE_RGB_MATRIX_TYPING_HEATMAP // How hot is your WPM! -#define DISABLE_RGB_MATRIX_DIGITAL_RAIN // That famous computer simulation +// #undef ENABLE_RGB_MATRIX_TYPING_HEATMAP // How hot is your WPM! +#undef ENABLE_RGB_MATRIX_DIGITAL_RAIN // That famous computer simulation // =================================================== RGB_MATRIX_KEYPRESSES OR RGB_MATRIX_KEYRELEASES ===================================================== -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out -#define DISABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out -#define DISABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out -#define DISABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out -#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out +#undef ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out +#undef ENABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out +#undef ENABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out +#undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out diff --git a/keyboards/massdrop/ctrl/keymaps/endgame/keymap.c b/keyboards/massdrop/ctrl/keymaps/endgame/keymap.c index c28434e06b31..6451dd495b3c 100644 --- a/keyboards/massdrop/ctrl/keymaps/endgame/keymap.c +++ b/keyboards/massdrop/ctrl/keymaps/endgame/keymap.c @@ -373,7 +373,7 @@ void set_layer_color(int layer) { } void rgb_matrix_indicators_user(void) { - if (g_suspend_state || disable_layer_color || + if (disable_layer_color || rgb_matrix_get_flags() == LED_FLAG_NONE || rgb_matrix_get_flags() == LED_FLAG_UNDERGLOW) { return; diff --git a/keyboards/massdrop/ctrl/keymaps/endgame/keymap.h b/keyboards/massdrop/ctrl/keymaps/endgame/keymap.h index 1a204311d47d..274768112622 100644 --- a/keyboards/massdrop/ctrl/keymaps/endgame/keymap.h +++ b/keyboards/massdrop/ctrl/keymaps/endgame/keymap.h @@ -33,7 +33,6 @@ #define RGB_TIME_OUT_MIN 10 #define RGB_TIME_OUT_STEP 10 -extern bool g_suspend_state; extern rgb_config_t rgb_matrix_config; bool disable_layer_color; diff --git a/keyboards/massdrop/ctrl/keymaps/endgame/rules.mk b/keyboards/massdrop/ctrl/keymaps/endgame/rules.mk index 09bf488daba9..9502c242dde7 100644 --- a/keyboards/massdrop/ctrl/keymaps/endgame/rules.mk +++ b/keyboards/massdrop/ctrl/keymaps/endgame/rules.mk @@ -1,7 +1,5 @@ # RGBLIGHT_ENABLE = no # Not for MD boards. This is here in case you forget. COMMAND_ENABLE = yes # Commands for debug and configuration -# BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration -# BOOTMAGIC_ENABLE = lite # AUTO_SHIFT_ENABLE = yes # Auto Shift NKRO_ENABLE = yes # USB Nkey Rollover DYNAMIC_MACRO_ENABLE = yes # Dynamic macro recording and play diff --git a/keyboards/massdrop/ctrl/keymaps/foxx1337/README.md b/keyboards/massdrop/ctrl/keymaps/foxx1337/README.md new file mode 100644 index 000000000000..4827d2bdbf85 --- /dev/null +++ b/keyboards/massdrop/ctrl/keymaps/foxx1337/README.md @@ -0,0 +1,18 @@ +# Massdrop CTRL default layout with raw HID protocol + +This represents my current layout, with filtered out effects, personal defaults, +added inactivity timeout (for rgbmatrix) and a HID protocol example. + +To test that this is working, there's a user application I'm using to help with +development on [my GitHub](https://github.com/foxx1337/rawhid_io). + +Currently all the HID operations defined in the protocol are callable from the +user application: + +- hello: gets the string "CTRLHID 1.0.0" +- lights: toggles the rgbmatrix on/off +- led n #RRGGBB: colors the specified led. Valid n from 0 to 117 (87-117 are on + the edge) +- leds start #RRGGBB #RRGGBB #RRGGBB ...: colors the range of leds from start +- mode n: switches to the specific rgbmatrix mode. Use the last one, 11, to test + the led operations listed above diff --git a/keyboards/massdrop/ctrl/keymaps/foxx1337/config.h b/keyboards/massdrop/ctrl/keymaps/foxx1337/config.h new file mode 100644 index 000000000000..160ddf6d1841 --- /dev/null +++ b/keyboards/massdrop/ctrl/keymaps/foxx1337/config.h @@ -0,0 +1,100 @@ +/* + * Copyright 2021 foxx1337 at yahoo dot 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 . + */ + +#pragma once + +#define FORCE_NKRO // NKRO by default requires to be turned on, this forces it on during keyboard startup regardless of EEPROM setting. NKRO can still be turned off but will be turned on again if the keyboard reboots. + +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define RGB_MATRIX_KEYPRESSES // reacts to keypresses + +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define RGB_MATRIX_KEYPRESSES // reacts to keypresses +// #define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses) +#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_REACTIVE // Sets the default mode, if none has been set +#define RGB_MATRIX_STARTUP_HUE 12 +#define RGB_MATRIX_STARTUP_SPD (UINT8_MAX / 2 + 32) +#define RGB_MATRIX_STARTUP_VAL 96 +// #define RGBLIGHT_HUE_STEP 12 // Units to step when in/decreasing hue +// #define RGBLIGHT_SAT_STEP 25 // Units to step when in/decreasing saturation +// #define RGBLIGHT_VAL_STEP 12 // Units to step when in/decreasing value (brightness) +// #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects +// #define RGB_DISABLE_WHEN_USB_SUSPENDED false // turn off effects when suspended +// #define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness) +// #define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness) +// #define RGBLIGHT_ANIMATIONS // Run RGB animations +// #define RGBLIGHT_ANIMATIONS // Enable all additional animation modes. +// #define RGBLIGHT_EFFECT_ALTERNATING // Enable alternating animation mode. +// #define RGBLIGHT_EFFECT_BREATHING // Enable breathing animation mode. +// #define RGBLIGHT_EFFECT_CHRISTMAS // Enable christmas animation mode. +// #define RGBLIGHT_EFFECT_KNIGHT // Enable knight animation mode. +// #define RGBLIGHT_EFFECT_RAINBOW_MOOD // Enable rainbow mood animation mode. +// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL // Enable rainbow swirl animation mode. +// #define RGBLIGHT_EFFECT_RGB_TEST // Enable RGB test animation mode. +// #define RGBLIGHT_EFFECT_SNAKE // Enable snake animation mode. +// #define RGBLIGHT_EFFECT_STATIC_GRADIENT // Enable static gradient mode. + +// #define RGBLIGHT_EFFECT_BREATHE_CENTER // If defined, used to calculate the curve for the breathing animation. Valid values are 1.0 to 2.7 +// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // The maximum brightness for the breathing mode. Valid values are 1 to 255 +// #define RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL 1000 // How long to wait between light changes for the "Christmas" animation, in milliseconds +// #define RGBLIGHT_EFFECT_CHRISTMAS_STEP 2 // The number of LEDs to group the red/green colors by for the "Christmas" animation +// #define RGBLIGHT_EFFECT_KNIGHT_LED_NUM RGBLED_NUM // The number of LEDs to have the "Knight" animation travel +// #define RGBLIGHT_EFFECT_KNIGHT_LENGTH 3 // The number of LEDs to light up for the "Knight" animation +// #define RGBLIGHT_EFFECT_KNIGHT_OFFSET 0 // The number of LEDs to start the "Knight" animation from the start of the strip by +// #define RGBLIGHT_RAINBOW_SWIRL_RANGE 255 // Range adjustment for the rainbow swirl effect to get different swirls +// #define RGBLIGHT_EFFECT_SNAKE_LENGTH 4 // The number of LEDs to light up for the "Snake" animation + +// This list in in the correct mode order. Next mode is the following line, previous mode is previous line. Loops around. +// #define DISABLE_RGB_MATRIX_SOLID_COLOR // Static single hue, no speed support +// #define DISABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue +#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes +#define DISABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation +#define DISABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right +#define DISABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right +#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation +#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness +#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades saturation +#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness +#define DISABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient +#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right +#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom +#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in +#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in +#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradent Chevron shapped scrolling left to right +#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard +#define DISABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard +#define DISABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard +#define DISABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard +#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard +// #define DISABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue +// #define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation +// =================================================== Requires RGB_MATRIX_FRAMEBUFFER_EFFECTS ============================================================= +#define DISABLE_RGB_MATRIX_TYPING_HEATMAP // How hot is your WPM! +#define DISABLE_RGB_MATRIX_DIGITAL_RAIN // That famous computer simulation +// =================================================== RGB_MATRIX_KEYPRESSES OR RGB_MATRIX_KEYRELEASES ===================================================== +// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue +//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out +#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out +//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out +//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out +#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out +//#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out +#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out +#define DISABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out +#define DISABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out +#define DISABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out +#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out diff --git a/keyboards/massdrop/ctrl/keymaps/foxx1337/hid_protocol.c b/keyboards/massdrop/ctrl/keymaps/foxx1337/hid_protocol.c new file mode 100644 index 000000000000..fd7dd6b6921a --- /dev/null +++ b/keyboards/massdrop/ctrl/keymaps/foxx1337/hid_protocol.c @@ -0,0 +1,25 @@ +/* + * Copyright 2021 foxx1337 at yahoo dot 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 . + */ + +#include QMK_KEYBOARD_H +#include "hid_protocol.h" + +uint8_t raw_hid_buffer[RAW_EPSIZE]; + +void raw_hid_perform_send(void) { + raw_hid_send(raw_hid_buffer, RAW_EPSIZE); +} diff --git a/keyboards/massdrop/ctrl/keymaps/foxx1337/hid_protocol.h b/keyboards/massdrop/ctrl/keymaps/foxx1337/hid_protocol.h new file mode 100644 index 000000000000..ff214aaad604 --- /dev/null +++ b/keyboards/massdrop/ctrl/keymaps/foxx1337/hid_protocol.h @@ -0,0 +1,80 @@ +/* + * Copyright 2021 foxx1337 at yahoo dot 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 . + */ + +#pragma once + +#include +#include + +#define CTRL_HID_GREETING_VERSION "CTRLHID 1.0.0" + +enum ctrl_hid_codes { + // Signals end of message. Not really that useful. + CTRL_HID_EOM = 0x00, + CTRL_HID_OK, + CTRL_HID_NOK, + + /** + * to hid: CTRL_HID_HELLO + * from hid: CTRL_HID_HELLO, "CTRLHID 1.0.0", CTRL_HID_EOM + **/ + CTRL_HID_HELLO, + + /** + * to hid: CTRL_HID_LIGHTS_TOGGLE + * from hid: CTRL_HID_LIGHTS_TOGGLE, CTRL_HID_OK, is_led_timeout, CTRL_HID_EOM + * + * Toggles all the leds on the keyboard. is_led_timeout will be 1 if the new + * state is off, 0 if leds are on. + **/ + CTRL_HID_LIGHTS_TOGGLE, + + /** + * to hid: CTRL_HID_LED, led_id, r, g, b + * from hid: CTRL_HID_LED, CTRL_HID_OK, CTRL_HID_EOM + * on error: CTRL_HID_LED, CTRL_HID_NOK, num_leds, CTRL_HID_EOM + * + * Sets the specific led to r, g, b. It's only visible when the hid_effect mode is active. + **/ + CTRL_HID_LED, + + /** + * to hid: CTRL_HID_LEDS, start, count, r0, g0, b0, ..., r[count-1], g[count-1], b[count-1] + * from hid: CTRL_HID_LEDS, CTRL_HID_OK, affected_leds, CTRL_HID_EOM + * + * Sets affected_leds leds following start to the corresponding r, g, b value. + * It's only visible when the hid_effect mode is active. + **/ + CTRL_HID_LEDS, + + /** + * to hid: CTRL_HID_RGBMATRIX_MODE, mode + * from hid: CTRL_HID_RGBMATRIX_MODE, CTRL_HID_OK, CTRL_HID_EOM + * on error: CTRL_HID_RGBMATRIX_MODE, CTRL_HID_NOK, mode_max, CTRL_HID_EOM + * + * Changes light mode. mode_max is hid_effect for CTRL_HID_LED and CTRL_HID_LEDS. + */ + CTRL_HID_RGBMATRIX_MODE +}; + +extern uint8_t raw_hid_buffer[RAW_EPSIZE]; + +// Defined in rgb_matrix_user.inc +// It's 119 for Massdrop CTRL, 0 - 118. +extern RGB rgb_matrix_led_state[DRIVER_LED_TOTAL]; + +void raw_hid_perform_send(void); diff --git a/keyboards/massdrop/ctrl/keymaps/foxx1337/keymap.c b/keyboards/massdrop/ctrl/keymaps/foxx1337/keymap.c new file mode 100644 index 000000000000..299251e456d4 --- /dev/null +++ b/keyboards/massdrop/ctrl/keymaps/foxx1337/keymap.c @@ -0,0 +1,268 @@ +/* + * Copyright 2021 foxx1337 at yahoo dot 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 . + */ + +#include QMK_KEYBOARD_H +#include "hid_protocol.h" + +enum ctrl_keycodes { + U_T_AUTO = SAFE_RANGE, //USB Extra Port Toggle Auto Detect / Always Active + U_T_AGCR, //USB Toggle Automatic GCR control + DBG_TOG, //DEBUG Toggle On / Off + DBG_MTRX, //DEBUG Toggle Matrix Prints + DBG_KBD, //DEBUG Toggle Keyboard Prints + DBG_MOU, //DEBUG Toggle Mouse Prints + MD_BOOT, //Restart into bootloader after hold timeout +}; + +#define TIMEOUT_ACTIVITY 300000 // 300 seconds before lights go off + +uint32_t time_last_activity; +bool is_led_timeout; +led_flags_t led_state; + +keymap_config_t keymap_config; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, \ + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \ + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \ + ), + [1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MSTP, KC_VOLU, \ + _______, RGB_SPD, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, U_T_AUTO,U_T_AGCR,_______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLD, \ + _______, RGB_RMOD,RGB_VAD, RGB_MOD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, \ + _______, RGB_TOG, _______, _______, _______, MD_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ + ), + /* + [X] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ + ), + */ +}; + +void change_led_state(bool is_off) { + is_led_timeout = is_off; + + if (is_led_timeout) { + led_state = rgb_matrix_get_flags(); + if (led_state != LED_FLAG_NONE) { + rgb_matrix_set_flags(LED_FLAG_NONE); + rgb_matrix_disable_noeeprom(); + } + } else { + if (led_state != LED_FLAG_NONE) { + rgb_matrix_set_flags(led_state); + rgb_matrix_enable_noeeprom(); + } + } +} + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { + time_last_activity = timer_read32(); +}; + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { + if (!is_led_timeout && timer_elapsed32(time_last_activity) > TIMEOUT_ACTIVITY) { + change_led_state(true); + } +}; + +#define MODS_SHIFT (get_mods() & MOD_MASK_SHIFT) +#define MODS_CTRL (get_mods() & MOD_MASK_CTRL) +#define MODS_ALT (get_mods() & MOD_MASK_ALT) + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + static uint32_t key_timer; + + time_last_activity = timer_read32(); + if (is_led_timeout) { + change_led_state(false); + } + + switch (keycode) { + case U_T_AUTO: + if (record->event.pressed && MODS_SHIFT && MODS_CTRL) { + TOGGLE_FLAG_AND_PRINT(usb_extra_manual, "USB extra port manual mode"); + } + return false; + case U_T_AGCR: + if (record->event.pressed && MODS_SHIFT && MODS_CTRL) { + TOGGLE_FLAG_AND_PRINT(usb_gcr_auto, "USB GCR auto mode"); + } + return false; + case DBG_TOG: + if (record->event.pressed) { + TOGGLE_FLAG_AND_PRINT(debug_enable, "Debug mode"); + } + return false; + case DBG_MTRX: + if (record->event.pressed) { + TOGGLE_FLAG_AND_PRINT(debug_matrix, "Debug matrix"); + } + return false; + case DBG_KBD: + if (record->event.pressed) { + TOGGLE_FLAG_AND_PRINT(debug_keyboard, "Debug keyboard"); + } + return false; + case DBG_MOU: + if (record->event.pressed) { + TOGGLE_FLAG_AND_PRINT(debug_mouse, "Debug mouse"); + } + return false; + case MD_BOOT: + if (record->event.pressed) { + key_timer = timer_read32(); + } else { + if (timer_elapsed32(key_timer) >= 500) { + reset_keyboard(); + } + } + return false; + case RGB_TOG: + if (record->event.pressed) { + switch (rgb_matrix_get_flags()) { + case LED_FLAG_ALL: { + rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER); + rgb_matrix_set_color_all(0, 0, 0); + } + break; + case LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER: { + rgb_matrix_set_flags(LED_FLAG_UNDERGLOW); + rgb_matrix_set_color_all(0, 0, 0); + } + break; + case LED_FLAG_UNDERGLOW: { + rgb_matrix_set_flags(LED_FLAG_NONE); + rgb_matrix_disable_noeeprom(); + } + break; + default: { + rgb_matrix_set_flags(LED_FLAG_ALL); + rgb_matrix_enable_noeeprom(); + } + break; + } + } + return false; + default: + return true; //Process all other keycodes normally + } +} + +void raw_hid_say_hello(void) { + const char *ctrl = CTRL_HID_GREETING_VERSION; + uint8_t i = 0; + while (ctrl[i] != 0 && i + 2 < RAW_EPSIZE) { + raw_hid_buffer[1 + i] = ctrl[i]; + i++; + } + raw_hid_buffer[i] = CTRL_HID_EOM; +} + +void raw_hid_lights_toggle(void) { + change_led_state(!is_led_timeout); + + raw_hid_buffer[1] = CTRL_HID_OK; + raw_hid_buffer[2] = (uint8_t) is_led_timeout; + raw_hid_buffer[3] = CTRL_HID_EOM; +} + +void raw_hid_led(uint8_t *data) { + //rgb_matrix_set_color(data[1], data[2], data[3], data[4]); + const uint8_t led = data[1]; + + if (led >= DRIVER_LED_TOTAL) { + raw_hid_buffer[1] = CTRL_HID_NOK; + raw_hid_buffer[2] = DRIVER_LED_TOTAL; + raw_hid_buffer[3] = CTRL_HID_EOM; + return; + } + + rgb_matrix_led_state[led].r = data[2]; + rgb_matrix_led_state[led].g = data[3]; + rgb_matrix_led_state[led].b = data[4]; + + raw_hid_buffer[1] = CTRL_HID_OK; + raw_hid_buffer[2] = CTRL_HID_EOM; +} + +void raw_hid_leds(uint8_t *data) { + const uint8_t first_led = data[1]; + const uint8_t number_leds = data[2]; + + uint8_t i = 0; + while (i < number_leds && first_led + i < DRIVER_LED_TOTAL && i * 3 + 5 < RAW_EPSIZE) { + rgb_matrix_led_state[first_led + i].r = data[3 + i * 3 + 0]; + rgb_matrix_led_state[first_led + i].g = data[3 + i * 3 + 1]; + rgb_matrix_led_state[first_led + i].b = data[3 + i * 3 + 2]; + i++; + } + + raw_hid_buffer[1] = CTRL_HID_OK; + raw_hid_buffer[2] = i; + raw_hid_buffer[3] = CTRL_HID_EOM; +} + +void raw_hid_rgbmatrix_mode(uint8_t *data) { + const uint8_t mode = data[1]; + if (mode >= RGB_MATRIX_EFFECT_MAX) { + raw_hid_buffer[1] = CTRL_HID_NOK; + raw_hid_buffer[2] = RGB_MATRIX_EFFECT_MAX - 1; + raw_hid_buffer[3] = CTRL_HID_EOM; + return; + } + rgb_matrix_mode_noeeprom(mode); + + raw_hid_buffer[1] = CTRL_HID_OK; + raw_hid_buffer[2] = CTRL_HID_EOM; +} + +void raw_hid_receive(uint8_t *data, uint8_t length) { + switch (*data) { + case CTRL_HID_HELLO: + raw_hid_say_hello(); + break; + case CTRL_HID_LIGHTS_TOGGLE: + raw_hid_lights_toggle(); + break; + case CTRL_HID_LED: + raw_hid_led(data); + break; + case CTRL_HID_LEDS: + raw_hid_leds(data); + break; + case CTRL_HID_RGBMATRIX_MODE: + raw_hid_rgbmatrix_mode(data); + break; + } + + raw_hid_perform_send(); +} diff --git a/keyboards/massdrop/ctrl/keymaps/foxx1337/rgb_matrix_user.inc b/keyboards/massdrop/ctrl/keymaps/foxx1337/rgb_matrix_user.inc new file mode 100644 index 000000000000..cca598e3b2c3 --- /dev/null +++ b/keyboards/massdrop/ctrl/keymaps/foxx1337/rgb_matrix_user.inc @@ -0,0 +1,44 @@ +/* + * Copyright 2021 foxx1337 at yahoo dot 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 . + */ + +// !!! DO NOT ADD #pragma once !!! // + +// Step 1. +// Declare custom effects using the RGB_MATRIX_EFFECT macro +// (note the lack of semicolon after the macro!) +RGB_MATRIX_EFFECT(hid_effect) + +// Step 2. +// Define effects inside the `RGB_MATRIX_CUSTOM_EFFECT_IMPLS` ifdef block +#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS + +RGB rgb_matrix_led_state[DRIVER_LED_TOTAL]; + +// e.g: A simple effect, self-contained within a single method +static bool hid_effect(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + + for (uint8_t i = led_min; i < led_max; i++) { + rgb_matrix_set_color(i, + rgb_matrix_led_state[i].r, + rgb_matrix_led_state[i].g, + rgb_matrix_led_state[i].b); + } + return led_max < DRIVER_LED_TOTAL; +} + +#endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS diff --git a/keyboards/massdrop/ctrl/keymaps/foxx1337/rules.mk b/keyboards/massdrop/ctrl/keymaps/foxx1337/rules.mk new file mode 100644 index 000000000000..ba6cb8f4b5aa --- /dev/null +++ b/keyboards/massdrop/ctrl/keymaps/foxx1337/rules.mk @@ -0,0 +1,6 @@ +# Build Options +CONSOLE_ENABLE = no # Console for debug +RAW_ENABLE = yes # Raw device +RGB_MATRIX_CUSTOM_USER = yes # Custom rgb matrix effect + +SRC += hid_protocol.c diff --git a/keyboards/massdrop/ctrl/keymaps/mac_md/keymap.c b/keyboards/massdrop/ctrl/keymaps/mac_md/keymap.c index ba02d5e506a3..4a85b375b39e 100644 --- a/keyboards/massdrop/ctrl/keymaps/mac_md/keymap.c +++ b/keyboards/massdrop/ctrl/keymaps/mac_md/keymap.c @@ -3,10 +3,15 @@ enum ctrl_keycodes { L_BRI = SAFE_RANGE, //LED Brightness Increase //Working L_BRD, //LED Brightness Decrease //Working + L_EDG_I, //LED Edge Brightness Increase + L_EDG_D, //LED Edge Brightness Decrease + L_EDG_M, //LED Edge lighting mode L_PTN, //LED Pattern Select Next //Working L_PTP, //LED Pattern Select Previous //Working L_PSI, //LED Pattern Speed Increase //Working L_PSD, //LED Pattern Speed Decrease //Working + L_RATIOD, + L_RATIOI, L_T_MD, //LED Toggle Mode //Working L_T_ONF, //LED Toggle On / Off //Broken L_ON, //LED On //Broken @@ -18,6 +23,7 @@ enum ctrl_keycodes { DBG_MTRX, //DEBUG Toggle Matrix Prints // DBG_KBD, //DEBUG Toggle Keyboard Prints // DBG_MOU, //DEBUG Toggle Mouse Prints // + DBG_FAC, //DEBUG Factory light testing (All on white) MD_BOOT //Restart into bootloader after hold timeout //Working }; @@ -33,10 +39,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [1] = LAYOUT( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, _______, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MSTP, KC_VOLU, \ - L_T_BR, L_PSD, L_BRI, L_PSI, _______, _______, _______, _______, U_T_AGCR,_______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLD, \ - L_T_PTD, L_PTP, L_BRD, L_PTN, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, L_T_MD, L_T_ONF, _______, _______, MD_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ + L_T_BR, L_PSD, L_BRI, L_PSI, L_EDG_I, _______, _______, _______, U_T_AGCR,_______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLD, \ + L_T_PTD, L_PTP, L_BRD, L_PTN, L_EDG_D, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, L_T_MD, L_T_ONF, _______, L_EDG_M, MD_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, DBG_FAC, _______, _______, _______, _______, _______, _______, _______ \ ), /* [X] = LAYOUT( @@ -64,6 +70,7 @@ void matrix_scan_user(void) { bool process_record_user(uint16_t keycode, keyrecord_t *record) { static uint32_t key_timer; + static uint8_t scroll_effect = 0; switch (keycode) { case L_BRI: @@ -80,6 +87,38 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (led_animation_breathing) gcr_breathe = gcr_desired; } return false; + case L_EDG_M: + if (record->event.pressed) { + led_edge_mode++; + if (led_edge_mode > LED_EDGE_MODE_MAX) { + led_edge_mode = LED_EDGE_MODE_ALL; + } + } + return false; + case L_EDG_I: + if (record->event.pressed) { + led_edge_brightness += 0.1; + if (led_edge_brightness > 1) { led_edge_brightness = 1; } + } + return false; + case L_EDG_D: + if (record->event.pressed) { + led_edge_brightness -= 0.1; + if (led_edge_brightness < 0) { led_edge_brightness = 0; } + } + return false; + case L_RATIOI: + if (record->event.pressed) { + led_ratio_brightness += 0.2; + if (led_ratio_brightness > 2.0) { led_ratio_brightness = 2.0; } + } + return false; + case L_RATIOD: + if (record->event.pressed) { + led_ratio_brightness -= 0.2; + if (led_ratio_brightness < 0.0) { led_ratio_brightness = 0.0; } + } + return false; case L_PTN: if (record->event.pressed) { if (led_animation_id == led_setups_count - 1) led_animation_id = 0; @@ -139,7 +178,33 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return false; case L_T_PTD: if (record->event.pressed) { - led_animation_direction = !led_animation_direction; + scroll_effect++; + if (scroll_effect == 1) { //Patterns with scroll move horizontal (Right to left) + led_animation_direction = 1; + led_animation_orientation = 0; + led_animation_circular = 0; + } else if (scroll_effect == 2) { //Patterns with scroll move vertical (Top to bottom) + led_animation_direction = 1; + led_animation_orientation = 1; + led_animation_circular = 0; + } else if (scroll_effect == 3) { //Patterns with scroll move vertical (Bottom to top) + led_animation_direction = 0; + led_animation_orientation = 1; + led_animation_circular = 0; + } else if (scroll_effect == 4) { //Patterns with scroll explode from center + led_animation_direction = 0; + led_animation_orientation = 0; + led_animation_circular = 1; + } else if (scroll_effect == 5) { //Patterns with scroll implode on center + led_animation_direction = 1; + led_animation_orientation = 0; + led_animation_circular = 1; + } else { //Patterns with scroll move horizontal (Left to right) + scroll_effect = 0; + led_animation_direction = 0; + led_animation_orientation = 0; + led_animation_circular = 0; + } } return false; case U_T_AGCR: @@ -147,6 +212,18 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { TOGGLE_FLAG_AND_PRINT(usb_gcr_auto, "USB GCR auto mode"); } return false; + case DBG_FAC: + if (record->event.pressed && MODS_SHIFT && MODS_CTRL) { + led_lighting_mode = LED_MODE_NORMAL; + led_edge_brightness = 1; + led_edge_mode = LED_EDGE_MODE_ALL; + led_animation_breathing = 0; + led_animation_id = 7; //led_programs.c led_setups leds_white index + gcr_desired = LED_GCR_MAX; + led_enabled = 1; + I2C3733_Control_Set(led_enabled); + } + return false; case DBG_TOG: if (record->event.pressed) { TOGGLE_FLAG_AND_PRINT(debug_enable, "Debug mode"); diff --git a/keyboards/massdrop/ctrl/keymaps/matthewrobo/config.h b/keyboards/massdrop/ctrl/keymaps/matthewrobo/config.h index 6e16c3a5f996..81e7764a9ee3 100644 --- a/keyboards/massdrop/ctrl/keymaps/matthewrobo/config.h +++ b/keyboards/massdrop/ctrl/keymaps/matthewrobo/config.h @@ -67,7 +67,7 @@ along with this program. If not, see . // #define RGBLIGHT_SAT_STEP 25 // Units to step when in/decreasing saturation // #define RGBLIGHT_VAL_STEP 12 // Units to step when in/decreasing value (brightness) // #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -// #define RGB_DISABLE_WHEN_USB_SUSPENDED false // turn off effects when suspended +// #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended // #define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness) // #define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness) // #define RGBLIGHT_ANIMATIONS // Run RGB animations @@ -93,42 +93,42 @@ along with this program. If not, see . // #define RGBLIGHT_EFFECT_SNAKE_LENGTH 4 // The number of LEDs to light up for the "Snake" animation // This list in in the correct mode order. Next mode is the following line, previous mode is previous line. Loops around. -// #define DISABLE_RGB_MATRIX_SOLID_COLOR // Static single hue, no speed support -// #define DISABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue -// #define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes -#define DISABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation -#define DISABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right -#define DISABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades saturation -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness -#define DISABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient -#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right -#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom -#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in -#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in -#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradent Chevron shapped scrolling left to right -#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard -// #define DISABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard -#define DISABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard -#define DISABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard -#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard -#define DISABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue -#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation +// #undef ENABLE_RGB_MATRIX_SOLID_COLOR // Static single hue, no speed support +// #undef ENABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue +// #undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes +#undef ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation +#undef ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right +#undef ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right +#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation +#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness +#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades saturation +#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness +#undef ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient +#undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right +#undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom +#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in +#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in +#undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradent Chevron shapped scrolling left to right +#undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard +// #undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard +#undef ENABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard +#undef ENABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard +#undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard +#undef ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue +#undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation // =================================================== Requires RGB_MATRIX_FRAMEBUFFER_EFFECTS ============================================================= -// #define DISABLE_RGB_MATRIX_TYPING_HEATMAP // How hot is your WPM! -#define DISABLE_RGB_MATRIX_DIGITAL_RAIN // That famous computer simulation +// #undef ENABLE_RGB_MATRIX_TYPING_HEATMAP // How hot is your WPM! +#undef ENABLE_RGB_MATRIX_DIGITAL_RAIN // That famous computer simulation // =================================================== RGB_MATRIX_KEYPRESSES OR RGB_MATRIX_KEYRELEASES ===================================================== -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out -// #define DISABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out -// #define DISABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out -// #define DISABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out -// #define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out +// #undef ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out +// #undef ENABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out +// #undef ENABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out +// #undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out diff --git a/keyboards/massdrop/ctrl/keymaps/matthewrobo/rules.mk b/keyboards/massdrop/ctrl/keymaps/matthewrobo/rules.mk index 1eb11fded72c..e834404e2907 100644 --- a/keyboards/massdrop/ctrl/keymaps/matthewrobo/rules.mk +++ b/keyboards/massdrop/ctrl/keymaps/matthewrobo/rules.mk @@ -1,7 +1,5 @@ #RGBLIGHT_ENABLE = no #Not for MD boards.This is here in case you forget. COMMAND_ENABLE = no # Commands for debug and configuration -#BOOTMAGIC_ENABLE = full #Virtual DIP switch configuration -#BOOTMAGIC_ENABLE = lite #AUTO_SHIFT_ENABLE = yes #Auto Shift NKRO_ENABLE = yes # USB Nkey Rollover DYNAMIC_MACRO_ENABLE = no # Dynamic macro recording and play diff --git a/keyboards/massdrop/ctrl/keymaps/r-pufky/config.h b/keyboards/massdrop/ctrl/keymaps/r-pufky/config.h index ddcd81630320..e536ebdd85a1 100644 --- a/keyboards/massdrop/ctrl/keymaps/r-pufky/config.h +++ b/keyboards/massdrop/ctrl/keymaps/r-pufky/config.h @@ -24,3 +24,5 @@ along with this program. If not, see . #define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR #define RGB_MATRIX_STARTUP_VAL 100 #define HSV_BACKLIGHT_COLOR HSV_BLUE +#define HSV_GAME_COLOR 170, 255, 192 // darker blue +#define HSV_CONTROL_COLOR 0, 255, 192 // darker red diff --git a/keyboards/massdrop/ctrl/keymaps/r-pufky/keymap.c b/keyboards/massdrop/ctrl/keymaps/r-pufky/keymap.c index d523dba89185..824725756b49 100644 --- a/keyboards/massdrop/ctrl/keymaps/r-pufky/keymap.c +++ b/keyboards/massdrop/ctrl/keymaps/r-pufky/keymap.c @@ -16,6 +16,9 @@ #include QMK_KEYBOARD_H +#define BASE 0 +#define GAME 1 +#define CTRL 2 #define MODS_SHIFT (get_mods() & MOD_MASK_SHIFT) #define MODS_CTRL (get_mods() & MOD_MASK_CTRL) #define MODS_ALT (get_mods() & MOD_MASK_ALT) @@ -43,34 +46,60 @@ enum ctrl_keycodes { }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, - KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, - KC_NLCK, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_F24, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + [BASE] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_NLCK, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(CTRL), KC_F24, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), - [1] = LAYOUT( - KC_EJCT, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_MUTE, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MSTP, KC_VOLU, - _______, RGB_SPD, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLD, - KC_CAPS, RGB_RMOD,RGB_VAD, RGB_MOD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, - _______, RGB_TOG, _______, _______, _______, MD_BOOT, NK_TOGG, _______, _______, _______, _______, _______, KC_BRIU, - _______, _______, _______, _______, _______, _______, _______, _______, KC_MRWD, KC_BRID, KC_MFFD + [GAME] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_HOME, KC_END, KC_LALT, KC_SPC, KC_RALT, MO(CTRL), KC_F24, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [CTRL] = LAYOUT( + KC_EJCT, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_MUTE, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MSTP, KC_VOLU, + _______, RGB_SPD, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, _______, _______, _______, _______, TO(BASE), TO(GAME), _______, KC_MPRV, KC_MNXT, KC_VOLD, + KC_CAPS, RGB_RMOD, RGB_VAD, RGB_MOD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_TOG, _______, _______, _______, MD_BOOT, NK_TOGG, _______, _______, _______, _______, _______, KC_BRIU, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MRWD, KC_BRID, KC_MFFD ), }; // Init keyboard static color with underglow off. void matrix_init_user(void) { - rgblight_sethsv(HSV_BACKLIGHT_COLOR); - rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR); + rgblight_sethsv(HSV_BACKLIGHT_COLOR); + rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR); }; // Runs constantly in the background, in a loop. void matrix_scan_user(void) { }; +// Set backlight color based on active layer +layer_state_t layer_state_set_user(layer_state_t state) { + switch (get_highest_layer(state)) { + case GAME: { + rgblight_sethsv_noeeprom(HSV_GAME_COLOR); + break; + } + case CTRL: { + rgblight_sethsv_noeeprom(HSV_CONTROL_COLOR); + break; + } + default: + rgblight_sethsv_noeeprom(HSV_BACKLIGHT_COLOR); + break; + } + return state; +} + bool process_record_user(uint16_t keycode, keyrecord_t *record) { static uint32_t key_timer; @@ -116,28 +145,28 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return false; case RGB_TOG: if (record->event.pressed) { - switch (rgb_matrix_get_flags()) { - case LED_FLAG_ALL: { - rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR); - rgb_matrix_set_color_all(RGB_OFF); - } - break; - case (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR): { - rgb_matrix_set_flags(LED_FLAG_UNDERGLOW); - rgb_matrix_set_color_all(RGB_OFF); - } - break; - case LED_FLAG_UNDERGLOW: { - rgb_matrix_set_flags(LED_FLAG_NONE); - rgb_matrix_disable_noeeprom(); - } - break; - default: { - rgb_matrix_set_flags(LED_FLAG_ALL); - rgb_matrix_enable_noeeprom(); - } - break; - } + switch (rgb_matrix_get_flags()) { + case LED_FLAG_ALL: { + rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR); + rgb_matrix_set_color_all(RGB_OFF); + } + break; + case (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR): { + rgb_matrix_set_flags(LED_FLAG_UNDERGLOW); + rgb_matrix_set_color_all(RGB_OFF); + } + break; + case LED_FLAG_UNDERGLOW: { + rgb_matrix_set_flags(LED_FLAG_NONE); + rgb_matrix_disable_noeeprom(); + } + break; + default: { + rgb_matrix_set_flags(LED_FLAG_ALL); + rgb_matrix_enable_noeeprom(); + } + break; + } } return false; default: diff --git a/keyboards/massdrop/ctrl/keymaps/r-pufky/readme.md b/keyboards/massdrop/ctrl/keymaps/r-pufky/readme.md index 515189259951..38075b3a0ff4 100644 --- a/keyboards/massdrop/ctrl/keymaps/r-pufky/readme.md +++ b/keyboards/massdrop/ctrl/keymaps/r-pufky/readme.md @@ -1,6 +1,7 @@ # Massdrop Ctrl r-pufky -Gaming QOL improvments; enabling useful keys for left hand & in-game overlay usage. +Gaming QOL improvments; enabling useful keys for left hand & in-game overlay +usage. ## Layers @@ -8,21 +9,36 @@ Gaming QOL improvments; enabling useful keys for left hand & in-game overlay usa ![Typing Layer](https://i.imgur.com/qEBaupV.png) -Layer optimized to enable useful keys for gaming without changing typing state, as well as specific -in-game overlay keys. +Layer optimized to enable useful keys for typing and casual gaming without +changing typing state, as well as specific in-game overlay keys. * Left Ctrl: Easier control key usage without always setting capslock. -* Num Lock: Unique non visible character key for additional left-hand input options in game. -* Fn: Enable layer 1, temporal. -* F24: Unique non-visible F24 key; no windows function. Map to in-game overlays. +* Num Lock: Unique non visible character key for additional left-hand input + options in game. +* Fn: Enable Control layer, temporal. +* F24: Non-visible F24 key; no windows function. Map to in-game overlays. + +### Gaming Layer + +![Gaming Layer](https://i.imgur.com/q4wGbFQ.png) + +Replaces super key with additional non-printing inputs. + +* Home: Non visible character key for additional input options in game. +* End: Non visible character key for additional input options in game. +* Left Ctrl: Easier control key usage without always setting capslock. +* Fn: Enable Control layer, temporal. +* F24: Non-visible F24 key; no windows function. Map to in-game overlays. -### Function Layer +### Control Layer -![Function Layer](https://i.imgur.com/2qGNwVQ.png) +![Function Layer](https://i.imgur.com/7Nalcyp.png) * Purple: Media keys. Note CD Eject on Escape, and OSX Prev/Next on Arrows. -* Blue: Keyboard adminstration. Toggle NKRO (N Key Rollover) and enable bootloader. +* Blue: Keyboard adminstration. Toggle NKRO (N Key Rollover) and enable + bootloader. * Orange: RGB Controls. +* Green: Toggle gaming layer. * Capslock: Now requires the use of the function key. * F13-F24: Extended function keys. * Bright+/-: Monitor Brightness. diff --git a/keyboards/massdrop/ctrl/matrix.c b/keyboards/massdrop/ctrl/matrix.c deleted file mode 100644 index 713fb89f64d6..000000000000 --- a/keyboards/massdrop/ctrl/matrix.c +++ /dev/null @@ -1,182 +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 . -*/ - -#include "ctrl.h" - -#include "d51_util.h" -#include "debug.h" -#include "clks.h" -#include - -#ifndef MATRIX_IO_DELAY -# define MATRIX_IO_DELAY 1 -#endif - -matrix_row_t mlatest[MATRIX_ROWS]; -matrix_row_t mlast[MATRIX_ROWS]; -matrix_row_t mdebounced[MATRIX_ROWS]; - -uint8_t row_ports[] = { MATRIX_ROW_PORTS }; -uint8_t row_pins[] = { MATRIX_ROW_PINS }; -uint8_t col_ports[] = { MATRIX_COL_PORTS }; -uint8_t col_pins[] = { MATRIX_COL_PINS }; -uint32_t row_masks[2]; //NOTE: If more than PA PB used in the future, adjust code to accomodate - -__attribute__((weak)) void matrix_io_delay(void) { wait_us(MATRIX_IO_DELAY); } - -__attribute__ ((weak)) -void matrix_init_kb(void) { - matrix_init_user(); -} - -__attribute__ ((weak)) -void matrix_scan_kb(void) { - matrix_scan_user(); -} - -__attribute__ ((weak)) -void matrix_init_user(void) { -} - -__attribute__ ((weak)) -void matrix_scan_user(void) { -} - -void matrix_init(void) -{ - memset(mlatest, 0, MATRIX_ROWS * sizeof(matrix_row_t)); - memset(mlast, 0, MATRIX_ROWS * sizeof(matrix_row_t)); - memset(mdebounced, 0, MATRIX_ROWS * sizeof(matrix_row_t)); - - row_masks[PA] = 0; - row_masks[PB] = 0; - - uint8_t row; - for (row = 0; row < MATRIX_ROWS; row++) - { - PORT->Group[row_ports[row]].DIRCLR.reg = 1 << row_pins[row]; //Input - PORT->Group[row_ports[row]].OUTCLR.reg = 1 << row_pins[row]; //Low - PORT->Group[row_ports[row]].PINCFG[row_pins[row]].bit.INEN = 1; //Input Enable, - PORT->Group[row_ports[row]].PINCFG[row_pins[row]].bit.PULLEN = 1; //Pull Enable - row_masks[row_ports[row]] |= 1 << row_pins[row]; //Add pin to proper row mask - } - - uint8_t col; - for (col = 0; col < MATRIX_COLS; col++) - { - PORT->Group[col_ports[col]].DIRSET.reg = 1 << col_pins[col]; //Output - PORT->Group[col_ports[col]].OUTCLR.reg = 1 << col_pins[col]; //Low - } - - matrix_init_quantum(); -} - -uint64_t mdebouncing = 0; -uint8_t matrix_scan(void) -{ - uint8_t mchanged; - uint8_t row; - uint8_t col; - uint32_t scans[2]; //PA PB - - if (timer_read64() < mdebouncing) return 1; //mdebouncing == 0 when no debouncing active - - memset(mlatest, 0, MATRIX_ROWS * sizeof(matrix_row_t)); //Zero the result buffer - - for (col = 0; col < MATRIX_COLS; col++) - { - PORT->Group[col_ports[col]].OUTSET.reg = 1 << col_pins[col]; //Set col output - - matrix_io_delay(); //Delay for output - - scans[PA] = PORT->Group[PA].IN.reg & row_masks[PA]; //Read PA row pins data - scans[PB] = PORT->Group[PB].IN.reg & row_masks[PB]; //Read PB row pins data - - PORT->Group[col_ports[col]].OUTCLR.reg = 1 << col_pins[col]; //Clear col output - - for (row = 0; row < MATRIX_ROWS; row++) - { - //Move scan bits from scans array into proper row bit locations - if (scans[row_ports[row]] & (1 << row_pins[row])) - mlatest[row] |= 1 << col; - } - } - - mchanged = 0; //Default to no matrix change since last - - for (row = 0; row < MATRIX_ROWS; row++) - { - if (mlast[row] != mlatest[row]) - mchanged = 1; - mlast[row] = mlatest[row]; - } - - if (!mchanged) - { - for (row = 0; row < MATRIX_ROWS; row++) - mdebounced[row] = mlatest[row]; - mdebouncing = 0; - } - else - { - //Begin or extend debounce on change - mdebouncing = timer_read64() + DEBOUNCE; - } - - matrix_scan_quantum(); - - return 1; -} - -matrix_row_t matrix_get_row(uint8_t row) -{ - return mdebounced[row]; -} - -void matrix_print(void) -{ - char buf[(MATRIX_COLS+8)*(MATRIX_ROWS+1)] = "R C"; - char *pbuf = buf+3; - uint32_t cols; - uint32_t rows; - matrix_row_t row; - - for (cols = 1; cols <= MATRIX_COLS; cols++) - { - *pbuf = (cols%10)+48; - pbuf++; - } - *pbuf = '\r'; pbuf++; - *pbuf = '\n'; pbuf++; - - for (rows = 1; rows <= MATRIX_ROWS; rows++) - { - row = matrix_get_row(rows-1); - if (rows < 10) { *pbuf = rows+48; pbuf++; *pbuf = ' '; pbuf++; *pbuf = ' '; pbuf++; } - else { *pbuf = (rows/10)+48; pbuf++; *pbuf = (rows%10)+48; pbuf++; *pbuf = ' '; pbuf++; } - for (cols = 0; cols < MATRIX_COLS; cols++) - { - if (row & 1 << cols) *pbuf = 'X'; - else *pbuf = '.'; - pbuf++; - } - *pbuf = '\r'; pbuf++; - *pbuf = '\n'; pbuf++; - } - *pbuf = 0; - dprint(buf); -} diff --git a/keyboards/massdrop/ctrl/rules.mk b/keyboards/massdrop/ctrl/rules.mk index 970e5a05cd42..0caa0978eeff 100644 --- a/keyboards/massdrop/ctrl/rules.mk +++ b/keyboards/massdrop/ctrl/rules.mk @@ -1,31 +1,23 @@ # project specific files -SRC = matrix.c SRC += config_led.c #For platform and packs ARM_ATSAM = SAMD51J18A MCU = cortex-m4 -CUSTOM_MATRIX = yes - # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# 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 on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output VIRTSER_ENABLE = no # USB Serial Driver RAW_ENABLE = no # Raw device AUTO_SHIFT_ENABLE = no # Auto Shift diff --git a/keyboards/masterworks/classy_tkl/info.json b/keyboards/masterworks/classy_tkl/info.json index 5cf93dfbd94e..7baf2c41abec 100644 --- a/keyboards/masterworks/classy_tkl/info.json +++ b/keyboards/masterworks/classy_tkl/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Classy TKL", "url": "https://geekhack.org/index.php?topic=105933", "maintainer": "qmk", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/masterworks/classy_tkl/rev_a/rules.mk b/keyboards/masterworks/classy_tkl/rev_a/rules.mk index 68d6bc50c189..fafe63897919 100644 --- a/keyboards/masterworks/classy_tkl/rev_a/rules.mk +++ b/keyboards/masterworks/classy_tkl/rev_a/rules.mk @@ -8,19 +8,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = 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 - -# Supported layouts -LAYOUTS = tkl_ansi_wkl tkl_iso_wkl diff --git a/keyboards/matchstickworks/southpad/config.h b/keyboards/matchstickworks/southpad/config.h new file mode 100644 index 000000000000..247084a862b0 --- /dev/null +++ b/keyboards/matchstickworks/southpad/config.h @@ -0,0 +1,100 @@ +/* +Copyright 2021 Logan Butler + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6060 +#define DEVICE_VER 0x0001 +#define MANUFACTURER MatchstickWorks +#define PRODUCT SouthPad + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 4 + +/* + * 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 { B3, B5, B6, B7, C7, C6 } +#define MATRIX_COL_PINS { B0, B1, B2, B4 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + + +/* + * 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 + +/* Bootmagic Lite key configuration */ +// #define BOOTMAGIC_LITE_ROW 0 +// #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/matchstickworks/southpad/info.json b/keyboards/matchstickworks/southpad/info.json new file mode 100644 index 000000000000..c020bb79f148 --- /dev/null +++ b/keyboards/matchstickworks/southpad/info.json @@ -0,0 +1,37 @@ +{ + "keyboard_name": "SouthPad", + "url": "", + "maintainer": "MatchstickWorks", + "layouts": { + "LAYOUT_numpad_6x4_southpaw": { + "layout": [ + {"label":"Bksp", "x":0, "y":0}, + {"label":"=", "x":1, "y":0}, + {"label":"(", "x":2, "y":0}, + {"label":")", "x":3, "y":0}, + + {"label":"-", "x":0, "y":1}, + {"label":"*", "x":1, "y":1}, + {"label":"/", "x":2, "y":1}, + {"label":"Num Lock", "x":3, "y":1}, + + {"label":"9", "x":1, "y":2}, + {"label":"8", "x":2, "y":2}, + {"label":"7", "x":3, "y":2}, + + {"label":"+", "x":0, "y":2, "h":2}, + {"label":"6", "x":1, "y":3}, + {"label":"5", "x":2, "y":3}, + {"label":"4", "x":3, "y":3}, + + {"label":"3", "x":1, "y":4}, + {"label":"2", "x":2, "y":4}, + {"label":"1", "x":3, "y":4}, + + {"label":"Enter", "x":0, "y":4, "h":2}, + {"label":".", "x":1, "y":5}, + {"label":"0", "x":2, "y":5, "w":2} + ] + } + } +} diff --git a/keyboards/matchstickworks/southpad/keymaps/default/keymap.c b/keyboards/matchstickworks/southpad/keymaps/default/keymap.c new file mode 100644 index 000000000000..5ffd3ef21af4 --- /dev/null +++ b/keyboards/matchstickworks/southpad/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +/* Copyright 2021 Logan Butler + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_numpad_6x4_southpaw( /* Base */ + KC_BSPC, KC_EQL, KC_LPRN, KC_RPRN, + KC_PMNS, KC_PAST, KC_PSLS, KC_NLCK, + KC_P9, KC_P8, KC_P7, + KC_PPLS, KC_P6, KC_P5, KC_P4, + KC_P3, KC_P2, KC_P1, + KC_PENT, KC_PDOT, KC_P0 + ), +}; diff --git a/keyboards/matchstickworks/southpad/readme.md b/keyboards/matchstickworks/southpad/readme.md new file mode 100644 index 000000000000..8c8007c2e777 --- /dev/null +++ b/keyboards/matchstickworks/southpad/readme.md @@ -0,0 +1,23 @@ +# SouthPad + +![Southpad](https://i.imgur.com/Wl71thnh.jpg) + +This is a left-handed (or mirrored) numberpad with USB-C connections. + +Default layout is such: + +![SouthPad Layout](https://i.imgur.com/jc7T2jl.jpg) + +* Keyboard Maintainer: [Logan Butler](https://github.com/MatchstickWorks) +* Hardware Supported: SouthPad PCB +* Hardware Availability: Either via [my Etsy Store](https://www.etsy.com/shop/MatchstickWorksShop) or by messaging directly + +Getting the board into bootloader mode: + +In order to flash the firmware to this board, simply press the Reset button on the back of the PCB. You should head a USB disconnect and reconnect sound shortly following. + +Make example for this keyboard (after setting up your build environment): + + make matchstickworks/southpad: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/matchstickworks/southpad/rules.mk b/keyboards/matchstickworks/southpad/rules.mk new file mode 100644 index 000000000000..429ac78df95e --- /dev/null +++ b/keyboards/matchstickworks/southpad/rules.mk @@ -0,0 +1,19 @@ +# MCU name +MCU = atmega32u2 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/matchstickworks/southpad/southpad.c b/keyboards/matchstickworks/southpad/southpad.c new file mode 100644 index 000000000000..52c9c1e6b1e1 --- /dev/null +++ b/keyboards/matchstickworks/southpad/southpad.c @@ -0,0 +1,16 @@ +/* Copyright 2021 Logan Butler + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "southpad.h" diff --git a/keyboards/matchstickworks/southpad/southpad.h b/keyboards/matchstickworks/southpad/southpad.h new file mode 100644 index 000000000000..bdfb11bdd025 --- /dev/null +++ b/keyboards/matchstickworks/southpad/southpad.h @@ -0,0 +1,44 @@ +/* Copyright 2021 Logan Butler + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +/* This a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT_numpad_6x4_southpaw( \ + k00, k01, k02, k03, \ + k10, k11, k12, k13, \ + k21, k22, k23, \ + k20, k31, k32, k33, \ + k41, k42, k43, \ + k40, k51, k53 \ +) \ +{ \ + { k00, k01, k02, k03 }, \ + { k10, k11, k12, k13 }, \ + { k20, k21, k22, k23 }, \ + { KC_NO, k31, k32, k33 }, \ + { k40, k41, k42, k43 }, \ + { KC_NO, k51, KC_NO, k53 } \ +} + diff --git a/keyboards/matrix/abelx/abelx.c b/keyboards/matrix/abelx/abelx.c new file mode 100644 index 000000000000..77e749ee4005 --- /dev/null +++ b/keyboards/matrix/abelx/abelx.c @@ -0,0 +1,99 @@ +/** + * abelx.c + * + * Copyright 2020 astro + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "abelx.h" +#include "tca6424.h" +#include "aw9523b.h" + +void set_pin(uint16_t pin) +{ + uint8_t data = tca6424_read_port(GET_PORT(pin)); + data |= ( 1 << GET_PIN(pin)); + tca6424_write_port(GET_PORT(pin), data); +} + +void clear_pin(uint16_t pin) +{ + uint8_t data = tca6424_read_port(GET_PORT(pin)); + data &= ~( 1 << GET_PIN(pin)); + tca6424_write_port(GET_PORT(pin), data); +} + +uint8_t read_pin(uint16_t pin) +{ + uint8_t data = tca6424_read_port(GET_PORT(pin)); + return (data & (1<BKP0R)) = REBOOT_MAGIC; +} diff --git a/keyboards/matrix/abelx/abelx.h b/keyboards/matrix/abelx/abelx.h new file mode 100644 index 000000000000..b5a1cc7aa7bc --- /dev/null +++ b/keyboards/matrix/abelx/abelx.h @@ -0,0 +1,61 @@ +/** + * abelx.h + * + * Copyright 2020 astro + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + + +#define LAYOUT_tkl_iso( \ + 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, K116, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, K215, K216, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, \ + K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, \ + K500, K501, K502, K506, 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, KC_NO, K214, K116}, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K215, K216}, \ + { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, KC_NO, K413,KC_NO}, \ + { K500, K501, K502, KC_NO, KC_NO, KC_NO, K506, K509, K510, K511, K512, K513, K514, KC_NO, K515,KC_NO}, \ +} + +#define LAYOUT_tkl_ansi( \ + 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, K116, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, \ + K400, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, \ + K500, K501, K502, K506, 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, K116}, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, K215, K216}, \ + { K400, KC_NO, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, KC_NO, K413,KC_NO}, \ + { K500, K501, K502, KC_NO, KC_NO, KC_NO, K506, K509, K510, K511, K512, K513, K514, KC_NO, K515,KC_NO}, \ +} + +void set_pin(uint16_t pin); +void clear_pin(uint16_t pin); +uint8_t read_pin(uint16_t pin); diff --git a/keyboards/matrix/abelx/aw9523b.c b/keyboards/matrix/abelx/aw9523b.c new file mode 100644 index 000000000000..8c6e8eaccf5a --- /dev/null +++ b/keyboards/matrix/abelx/aw9523b.c @@ -0,0 +1,100 @@ +/** + * @file aw9523b.c + * @brief driver implementation of aw9523b + * + * Copyright 2020 astro + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include +#include "aw9523b.h" +#include "wait.h" +#include "i2c_master.h" + +#define AW9523B_P0_INPUT 0x00 +#define AW9523B_P1_INPUT 0x01 +#define AW9523B_P0_OUTPUT 0x02 +#define AW9523B_P1_OUTPUT 0x03 +#define AW9523B_P0_CONF 0x04 +#define AW9523B_P1_CONF 0x05 +#define AW9523B_P0_INT 0x06 +#define AW9523B_P1_INT 0x07 + +#define AW9523B_ID 0x10 +#define AW9523B_CTL 0x11 +#define AW9523B_P0_LED 0x12 +#define AW9523B_P1_LED 0x13 + + +#define AW9523B_RESET 0x7F + +#define TIMEOUT 100 + +#define PWM2BUF(x) ((x) - AW9523B_PWM_BASE) +static uint8_t aw9523b_pwm_buf[AW9523B_PWM_SIZE]; +static bool aw9523b_pwm_dirty = false; + +void aw9523b_init(uint8_t addr) +{ + i2c_init(); + // reset chip + uint8_t data = 0; + i2c_writeReg(addr, AW9523B_RESET, &data, 1, TIMEOUT); + wait_ms(1); + // set max led current + data = 0x03; // 37mA/4 + i2c_writeReg(addr, AW9523B_CTL, &data, 1, TIMEOUT); + // set port to led mode + data = 0; + i2c_writeReg(addr, AW9523B_P0_LED, &data, 1, TIMEOUT); + i2c_writeReg(addr, AW9523B_P1_LED, &data, 1, TIMEOUT); + // clear pwm buff + for (uint8_t i = 0; i < 16; i++) { + aw9523b_pwm_buf[i] = 0; + } + aw9523b_pwm_dirty = false; +} + +void aw9523b_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) +{ + if (index >= AW9523B_RGB_NUM) return; + + aw9523b_led led = g_aw9523b_leds[index]; + aw9523b_pwm_buf[PWM2BUF(led.r)] = red; + aw9523b_pwm_buf[PWM2BUF(led.g)] = green; + aw9523b_pwm_buf[PWM2BUF(led.b)] = blue; + aw9523b_pwm_dirty = true; +} + +void aw9523b_set_color_all(uint8_t red, uint8_t green, uint8_t blue) +{ + for (uint8_t i = 0; i < AW9523B_RGB_NUM; i++) { + aw9523b_set_color(i, red, green, blue); + } + aw9523b_pwm_dirty = true; +} + +void aw9523b_update_pwm_buffers(uint8_t addr) +{ + if (aw9523b_pwm_dirty) { + for (uint8_t i = 0; i < AW9523B_RGB_NUM; i++){ + aw9523b_led led = g_aw9523b_leds[i]; + i2c_writeReg(addr, led.r, &aw9523b_pwm_buf[PWM2BUF(led.r)], 1, TIMEOUT); + i2c_writeReg(addr, led.g, &aw9523b_pwm_buf[PWM2BUF(led.g)], 1, TIMEOUT); + i2c_writeReg(addr, led.b, &aw9523b_pwm_buf[PWM2BUF(led.b)], 1, TIMEOUT); + } + aw9523b_pwm_dirty = false; + } +} diff --git a/keyboards/matrix/abelx/aw9523b.h b/keyboards/matrix/abelx/aw9523b.h new file mode 100644 index 000000000000..daee0c855856 --- /dev/null +++ b/keyboards/matrix/abelx/aw9523b.h @@ -0,0 +1,62 @@ +/** + * @file aw9523b.h + * @brief driver for aw9523b + * + * Copyright 2020 astro + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include + +#ifndef AW9523B_ADDR + #define AW9523B_ADDR 0xB6 +#endif + +#define AW9523B_PWM_BASE 0x20 + +#define AW9523B_P10_PWM 0x20 +#define AW9523B_P11_PWM 0x21 +#define AW9523B_P12_PWM 0x22 +#define AW9523B_P13_PWM 0x23 +#define AW9523B_P00_PWM 0x24 +#define AW9523B_P01_PWM 0x25 +#define AW9523B_P02_PWM 0x26 +#define AW9523B_P03_PWM 0x27 +#define AW9523B_P04_PWM 0x28 +#define AW9523B_P05_PWM 0x29 +#define AW9523B_P06_PWM 0x2A +#define AW9523B_P07_PWM 0x2B +#define AW9523B_P14_PWM 0x2C +#define AW9523B_P15_PWM 0x2D +#define AW9523B_P16_PWM 0x2E +#define AW9523B_P17_PWM 0x2F + +#define AW9523B_PWM_SIZE 16 + +typedef struct { + uint8_t r; + uint8_t g; + uint8_t b; +} aw9523b_led; + +extern const aw9523b_led g_aw9523b_leds[AW9523B_RGB_NUM]; + +void aw9523b_init(uint8_t addr); + +void aw9523b_set_color(int index, uint8_t red, uint8_t green, uint8_t blue); +void aw9523b_set_color_all(uint8_t red, uint8_t green, uint8_t blue); +void aw9523b_update_pwm_buffers(uint8_t addr); diff --git a/keyboards/matrix/abelx/boards/abelx_bd/board.c b/keyboards/matrix/abelx/boards/abelx_bd/board.c new file mode 100644 index 000000000000..68cf23cddc4a --- /dev/null +++ b/keyboards/matrix/abelx/boards/abelx_bd/board.c @@ -0,0 +1,268 @@ +/* + 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. +*/ + +/* + * This file has been automatically generated using ChibiStudio board + * generator plugin. Do not edit manually. + */ + +#include "hal.h" +#include "stm32_gpio.h" + +/*===========================================================================*/ +/* Driver local definitions. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver exported variables. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver local variables and types. */ +/*===========================================================================*/ + +/** + * @brief Type of STM32 GPIO port setup. + */ +typedef struct { + uint32_t moder; + uint32_t otyper; + uint32_t ospeedr; + uint32_t pupdr; + uint32_t odr; + uint32_t afrl; + uint32_t afrh; +} gpio_setup_t; + +/** + * @brief Type of STM32 GPIO initialization data. + */ +typedef struct { +#if STM32_HAS_GPIOA || defined(__DOXYGEN__) + gpio_setup_t PAData; +#endif +#if STM32_HAS_GPIOB || defined(__DOXYGEN__) + gpio_setup_t PBData; +#endif +#if STM32_HAS_GPIOC || defined(__DOXYGEN__) + gpio_setup_t PCData; +#endif +#if STM32_HAS_GPIOD || defined(__DOXYGEN__) + gpio_setup_t PDData; +#endif +#if STM32_HAS_GPIOE || defined(__DOXYGEN__) + gpio_setup_t PEData; +#endif +#if STM32_HAS_GPIOF || defined(__DOXYGEN__) + gpio_setup_t PFData; +#endif +#if STM32_HAS_GPIOG || defined(__DOXYGEN__) + gpio_setup_t PGData; +#endif +#if STM32_HAS_GPIOH || defined(__DOXYGEN__) + gpio_setup_t PHData; +#endif +#if STM32_HAS_GPIOI || defined(__DOXYGEN__) + gpio_setup_t PIData; +#endif +#if STM32_HAS_GPIOJ || defined(__DOXYGEN__) + gpio_setup_t PJData; +#endif +#if STM32_HAS_GPIOK || defined(__DOXYGEN__) + gpio_setup_t PKData; +#endif +} gpio_config_t; + +/** + * @brief STM32 GPIO static initialization data. + */ +static const gpio_config_t gpio_default_config = { +#if STM32_HAS_GPIOA + {VAL_GPIOA_MODER, VAL_GPIOA_OTYPER, VAL_GPIOA_OSPEEDR, VAL_GPIOA_PUPDR, + VAL_GPIOA_ODR, VAL_GPIOA_AFRL, VAL_GPIOA_AFRH}, +#endif +#if STM32_HAS_GPIOB + {VAL_GPIOB_MODER, VAL_GPIOB_OTYPER, VAL_GPIOB_OSPEEDR, VAL_GPIOB_PUPDR, + VAL_GPIOB_ODR, VAL_GPIOB_AFRL, VAL_GPIOB_AFRH}, +#endif +#if STM32_HAS_GPIOC + {VAL_GPIOC_MODER, VAL_GPIOC_OTYPER, VAL_GPIOC_OSPEEDR, VAL_GPIOC_PUPDR, + VAL_GPIOC_ODR, VAL_GPIOC_AFRL, VAL_GPIOC_AFRH}, +#endif +#if STM32_HAS_GPIOD + {VAL_GPIOD_MODER, VAL_GPIOD_OTYPER, VAL_GPIOD_OSPEEDR, VAL_GPIOD_PUPDR, + VAL_GPIOD_ODR, VAL_GPIOD_AFRL, VAL_GPIOD_AFRH}, +#endif +#if STM32_HAS_GPIOE + {VAL_GPIOE_MODER, VAL_GPIOE_OTYPER, VAL_GPIOE_OSPEEDR, VAL_GPIOE_PUPDR, + VAL_GPIOE_ODR, VAL_GPIOE_AFRL, VAL_GPIOE_AFRH}, +#endif +#if STM32_HAS_GPIOF + {VAL_GPIOF_MODER, VAL_GPIOF_OTYPER, VAL_GPIOF_OSPEEDR, VAL_GPIOF_PUPDR, + VAL_GPIOF_ODR, VAL_GPIOF_AFRL, VAL_GPIOF_AFRH}, +#endif +#if STM32_HAS_GPIOG + {VAL_GPIOG_MODER, VAL_GPIOG_OTYPER, VAL_GPIOG_OSPEEDR, VAL_GPIOG_PUPDR, + VAL_GPIOG_ODR, VAL_GPIOG_AFRL, VAL_GPIOG_AFRH}, +#endif +#if STM32_HAS_GPIOH + {VAL_GPIOH_MODER, VAL_GPIOH_OTYPER, VAL_GPIOH_OSPEEDR, VAL_GPIOH_PUPDR, + VAL_GPIOH_ODR, VAL_GPIOH_AFRL, VAL_GPIOH_AFRH}, +#endif +#if STM32_HAS_GPIOI + {VAL_GPIOI_MODER, VAL_GPIOI_OTYPER, VAL_GPIOI_OSPEEDR, VAL_GPIOI_PUPDR, + VAL_GPIOI_ODR, VAL_GPIOI_AFRL, VAL_GPIOI_AFRH}, +#endif +#if STM32_HAS_GPIOJ + {VAL_GPIOJ_MODER, VAL_GPIOJ_OTYPER, VAL_GPIOJ_OSPEEDR, VAL_GPIOJ_PUPDR, + VAL_GPIOJ_ODR, VAL_GPIOJ_AFRL, VAL_GPIOJ_AFRH}, +#endif +#if STM32_HAS_GPIOK + {VAL_GPIOK_MODER, VAL_GPIOK_OTYPER, VAL_GPIOK_OSPEEDR, VAL_GPIOK_PUPDR, + VAL_GPIOK_ODR, VAL_GPIOK_AFRL, VAL_GPIOK_AFRH} +#endif +}; + +/*===========================================================================*/ +/* Driver local functions. */ +/*===========================================================================*/ + +static void gpio_init(stm32_gpio_t *gpiop, const gpio_setup_t *config) { + + gpiop->OTYPER = config->otyper; + gpiop->OSPEEDR = config->ospeedr; + gpiop->PUPDR = config->pupdr; + gpiop->ODR = config->odr; + gpiop->AFRL = config->afrl; + gpiop->AFRH = config->afrh; + gpiop->MODER = config->moder; +} + +static void stm32_gpio_init(void) { + + /* Enabling GPIO-related clocks, the mask comes from the + registry header file.*/ + rccResetAHB1(STM32_GPIO_EN_MASK); + rccEnableAHB1(STM32_GPIO_EN_MASK, true); + + /* Initializing all the defined GPIO ports.*/ +#if STM32_HAS_GPIOA + gpio_init(GPIOA, &gpio_default_config.PAData); +#endif +#if STM32_HAS_GPIOB + gpio_init(GPIOB, &gpio_default_config.PBData); +#endif +#if STM32_HAS_GPIOC + gpio_init(GPIOC, &gpio_default_config.PCData); +#endif +#if STM32_HAS_GPIOD + gpio_init(GPIOD, &gpio_default_config.PDData); +#endif +#if STM32_HAS_GPIOE + gpio_init(GPIOE, &gpio_default_config.PEData); +#endif +#if STM32_HAS_GPIOF + gpio_init(GPIOF, &gpio_default_config.PFData); +#endif +#if STM32_HAS_GPIOG + gpio_init(GPIOG, &gpio_default_config.PGData); +#endif +#if STM32_HAS_GPIOH + gpio_init(GPIOH, &gpio_default_config.PHData); +#endif +#if STM32_HAS_GPIOI + gpio_init(GPIOI, &gpio_default_config.PIData); +#endif +#if STM32_HAS_GPIOJ + gpio_init(GPIOJ, &gpio_default_config.PJData); +#endif +#if STM32_HAS_GPIOK + gpio_init(GPIOK, &gpio_default_config.PKData); +#endif +} + +/*===========================================================================*/ +/* Driver interrupt handlers. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver exported functions. */ +/*===========================================================================*/ + +/** + * @brief Early initialization code. + * @details GPIO ports and system clocks are initialized before everything + * else. + */ +void __early_init(void) { + extern void enter_bootloader_mode_if_requested(void); + enter_bootloader_mode_if_requested(); + + stm32_gpio_init(); + stm32_clock_init(); +} + +#if HAL_USE_SDC || defined(__DOXYGEN__) +/** + * @brief SDC card detection. + */ +bool sdc_lld_is_card_inserted(SDCDriver *sdcp) { + + (void)sdcp; + /* TODO: Fill the implementation.*/ + return true; +} + +/** + * @brief SDC card write protection detection. + */ +bool sdc_lld_is_write_protected(SDCDriver *sdcp) { + + (void)sdcp; + /* TODO: Fill the implementation.*/ + return false; +} +#endif /* HAL_USE_SDC */ + +#if HAL_USE_MMC_SPI || defined(__DOXYGEN__) +/** + * @brief MMC_SPI card detection. + */ +bool mmc_lld_is_card_inserted(MMCDriver *mmcp) { + + (void)mmcp; + /* TODO: Fill the implementation.*/ + return true; +} + +/** + * @brief MMC_SPI card write protection detection. + */ +bool mmc_lld_is_write_protected(MMCDriver *mmcp) { + + (void)mmcp; + /* TODO: Fill the implementation.*/ + return false; +} +#endif + +/** + * @brief Board-specific initialization code. + * @todo Add your board-specific code, if any. + */ +void boardInit(void) { + +} diff --git a/keyboards/matrix/abelx/boards/abelx_bd/board.h b/keyboards/matrix/abelx/boards/abelx_bd/board.h new file mode 100644 index 000000000000..e57147fab856 --- /dev/null +++ b/keyboards/matrix/abelx/boards/abelx_bd/board.h @@ -0,0 +1,1299 @@ +/* + ChibiOS - Copyright (C) 2006..2016 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. +*/ + +/* + * This file has been automatically generated using ChibiStudio board + * generator plugin. Do not edit manually. + */ + +#ifndef BOARD_H +#define BOARD_H + +/* + * Board identifier. + */ +#define BOARD_MATRIX_ABELX +#define BOARD_NAME "Matrix ABELX keyboard" +#define BOARD_OTG_NOVBUSSENS + +/* + * Board oscillators-related settings. + * NOTE: LSE not fitted. + */ +#if !defined(STM32_LSECLK) +#define STM32_LSECLK 0U +#endif + +#if !defined(STM32_HSECLK) +#define STM32_HSECLK 8000000U +#endif + +//#define STM32_HSE_BYPASS + +/* + * Board voltages. + * Required for performance limits calculation. + */ +#define STM32_VDD 300U + +/* + * MCU type as defined in the ST header. + */ +#define STM32F411xE + +/* + * IO pins assignments. + */ +#define GPIOA_PIN0 0U +#define GPIOA_PIN1 1U +#define GPIOA_PIN2 2U +#define GPIOA_PIN3 3U +#define GPIOA_PIN4 4U +#define GPIOA_SCK 5U +#define GPIOA_MISO 6U +#define GPIOA_MOSI 7U +#define GPIOA_PIN8 8U +#define GPIOA_PIN9 9U +#define GPIOA_PIN10 10U +#define GPIOA_OTG_FS_DM 11U +#define GPIOA_OTG_FS_DP 12U +#define GPIOA_SWDIO 13U +#define GPIOA_SWCLK 14U +#define GPIOA_PIN15 15U + +#define GPIOB_PIN0 0U +#define GPIOB_PIN1 1U +#define GPIOB_PIN2 2U +#define GPIOB_SWO 3U +#define GPIOB_PIN4 4U +#define GPIOB_PIN5 5U +#define GPIOB_UART_TX 6U +#define GPIOB_UART_RX 7U +#define GPIOB_PIN8 8U +#define GPIOB_PIN9 9U +#define GPIOB_PIN10 10U +#define GPIOB_PIN11 11U +#define GPIOB_PIN12 12U +#define GPIOB_PIN13 13U +#define GPIOB_PIN14 14U +#define GPIOB_PIN15 15U + +#define GPIOC_PIN0 0U +#define GPIOC_PIN1 1U +#define GPIOC_PIN2 2U +#define GPIOC_PIN3 3U +#define GPIOC_PIN4 4U +#define GPIOC_PIN5 5U +#define GPIOC_PIN6 6U +#define GPIOC_PIN7 7U +#define GPIOC_PIN8 8U +#define GPIOC_PIN9 9U +#define GPIOC_PIN10 10U +#define GPIOC_PIN11 11U +#define GPIOC_PIN12 12U +#define GPIOC_PIN13 13U +#define GPIOC_PIN14 14U +#define GPIOC_PIN15 15U + +#define GPIOD_PIN0 0U +#define GPIOD_PIN1 1U +#define GPIOD_PIN2 2U +#define GPIOD_PIN3 3U +#define GPIOD_PIN4 4U +#define GPIOD_PIN5 5U +#define GPIOD_PIN6 6U +#define GPIOD_PIN7 7U +#define GPIOD_PIN8 8U +#define GPIOD_PIN9 9U +#define GPIOD_PIN10 10U +#define GPIOD_PIN11 11U +#define GPIOD_PIN12 12U +#define GPIOD_PIN13 13U +#define GPIOD_PIN14 14U +#define GPIOD_PIN15 15U + +#define GPIOE_PIN0 0U +#define GPIOE_PIN1 1U +#define GPIOE_PIN2 2U +#define GPIOE_PIN3 3U +#define GPIOE_PIN4 4U +#define GPIOE_PIN5 5U +#define GPIOE_PIN6 6U +#define GPIOE_PIN7 7U +#define GPIOE_PIN8 8U +#define GPIOE_PIN9 9U +#define GPIOE_PIN10 10U +#define GPIOE_PIN11 11U +#define GPIOE_PIN12 12U +#define GPIOE_PIN13 13U +#define GPIOE_PIN14 14U +#define GPIOE_PIN15 15U + +#define GPIOF_PIN0 0U +#define GPIOF_PIN1 1U +#define GPIOF_PIN2 2U +#define GPIOF_PIN3 3U +#define GPIOF_PIN4 4U +#define GPIOF_PIN5 5U +#define GPIOF_PIN6 6U +#define GPIOF_PIN7 7U +#define GPIOF_PIN8 8U +#define GPIOF_PIN9 9U +#define GPIOF_PIN10 10U +#define GPIOF_PIN11 11U +#define GPIOF_PIN12 12U +#define GPIOF_PIN13 13U +#define GPIOF_PIN14 14U +#define GPIOF_PIN15 15U + +#define GPIOG_PIN0 0U +#define GPIOG_PIN1 1U +#define GPIOG_PIN2 2U +#define GPIOG_PIN3 3U +#define GPIOG_PIN4 4U +#define GPIOG_PIN5 5U +#define GPIOG_PIN6 6U +#define GPIOG_PIN7 7U +#define GPIOG_PIN8 8U +#define GPIOG_PIN9 9U +#define GPIOG_PIN10 10U +#define GPIOG_PIN11 11U +#define GPIOG_PIN12 12U +#define GPIOG_PIN13 13U +#define GPIOG_PIN14 14U +#define GPIOG_PIN15 15U + +#define GPIOH_OSC_IN 0U +#define GPIOH_OSC_OUT 1U +#define GPIOH_PIN2 2U +#define GPIOH_PIN3 3U +#define GPIOH_PIN4 4U +#define GPIOH_PIN5 5U +#define GPIOH_PIN6 6U +#define GPIOH_PIN7 7U +#define GPIOH_PIN8 8U +#define GPIOH_PIN9 9U +#define GPIOH_PIN10 10U +#define GPIOH_PIN11 11U +#define GPIOH_PIN12 12U +#define GPIOH_PIN13 13U +#define GPIOH_PIN14 14U +#define GPIOH_PIN15 15U + +#define GPIOI_PIN0 0U +#define GPIOI_PIN1 1U +#define GPIOI_PIN2 2U +#define GPIOI_PIN3 3U +#define GPIOI_PIN4 4U +#define GPIOI_PIN5 5U +#define GPIOI_PIN6 6U +#define GPIOI_PIN7 7U +#define GPIOI_PIN8 8U +#define GPIOI_PIN9 9U +#define GPIOI_PIN10 10U +#define GPIOI_PIN11 11U +#define GPIOI_PIN12 12U +#define GPIOI_PIN13 13U +#define GPIOI_PIN14 14U +#define GPIOI_PIN15 15U + +/* + * I/O ports initial setup, this configuration is established soon after reset + * in the initialization code. + * Please refer to the STM32 Reference Manual for details. + */ +#define PIN_MODE_INPUT(n) (0U << ((n) * 2U)) +#define PIN_MODE_OUTPUT(n) (1U << ((n) * 2U)) +#define PIN_MODE_ALTERNATE(n) (2U << ((n) * 2U)) +#define PIN_MODE_ANALOG(n) (3U << ((n) * 2U)) +#define PIN_ODR_LOW(n) (0U << (n)) +#define PIN_ODR_HIGH(n) (1U << (n)) +#define PIN_OTYPE_PUSHPULL(n) (0U << (n)) +#define PIN_OTYPE_OPENDRAIN(n) (1U << (n)) +#define PIN_OSPEED_VERYLOW(n) (0U << ((n) * 2U)) +#define PIN_OSPEED_LOW(n) (1U << ((n) * 2U)) +#define PIN_OSPEED_MEDIUM(n) (2U << ((n) * 2U)) +#define PIN_OSPEED_HIGH(n) (3U << ((n) * 2U)) +#define PIN_PUPDR_FLOATING(n) (0U << ((n) * 2U)) +#define PIN_PUPDR_PULLUP(n) (1U << ((n) * 2U)) +#define PIN_PUPDR_PULLDOWN(n) (2U << ((n) * 2U)) +#define PIN_AFIO_AF(n, v) ((v) << (((n) % 8U) * 4U)) + +/* + * GPIOA setup: + * + * PA0 - (input pullup). + * PA1 - (input pullup). + * PA2 - (input pullup). + * PA3 - (input pullup). + * PA4 - (input pullup). + * PA5 - SPI SCK (alternate 5). + * PA6 - SPI MISO (alternate 5). + * PA7 - SPI MOSI (alternate 5). + * PA8 - (input pullup). + * PA9 - (input pullup). + * PA10 - (input pullup). + * PA11 - OTG_FS_DM (alternate 10). + * PA12 - OTG_FS_DP (alternate 10). + * PA13 - SWDIO (alternate 0). + * PA14 - SWCLK (alternate 0). + * PA15 - (input pullup). + */ +#define VAL_GPIOA_MODER (PIN_MODE_INPUT(GPIOA_PIN0) | \ + PIN_MODE_INPUT(GPIOA_PIN1) | \ + PIN_MODE_INPUT(GPIOA_PIN2) | \ + PIN_MODE_INPUT(GPIOA_PIN3) | \ + PIN_MODE_INPUT(GPIOA_PIN4) | \ + PIN_MODE_ALTERNATE(GPIOA_SCK) | \ + PIN_MODE_ALTERNATE(GPIOA_MISO) | \ + PIN_MODE_ALTERNATE(GPIOA_MOSI) | \ + PIN_MODE_INPUT(GPIOA_PIN8) | \ + PIN_MODE_INPUT(GPIOA_PIN9) | \ + PIN_MODE_INPUT(GPIOA_PIN10) | \ + PIN_MODE_ALTERNATE(GPIOA_OTG_FS_DM) | \ + PIN_MODE_ALTERNATE(GPIOA_OTG_FS_DP) | \ + PIN_MODE_ALTERNATE(GPIOA_SWDIO) | \ + PIN_MODE_ALTERNATE(GPIOA_SWCLK) | \ + PIN_MODE_INPUT(GPIOA_PIN15)) +#define VAL_GPIOA_OTYPER (PIN_OTYPE_PUSHPULL(GPIOA_PIN0) | \ + PIN_OTYPE_PUSHPULL(GPIOA_PIN1) | \ + PIN_OTYPE_PUSHPULL(GPIOA_PIN2) | \ + PIN_OTYPE_PUSHPULL(GPIOA_PIN3) | \ + PIN_OTYPE_PUSHPULL(GPIOA_PIN4) | \ + PIN_OTYPE_PUSHPULL(GPIOA_SCK) | \ + PIN_OTYPE_PUSHPULL(GPIOA_MISO) | \ + PIN_OTYPE_PUSHPULL(GPIOA_MOSI) | \ + PIN_OTYPE_PUSHPULL(GPIOA_PIN8) | \ + PIN_OTYPE_PUSHPULL(GPIOA_PIN9) | \ + PIN_OTYPE_PUSHPULL(GPIOA_PIN10) | \ + PIN_OTYPE_PUSHPULL(GPIOA_OTG_FS_DM) | \ + PIN_OTYPE_PUSHPULL(GPIOA_OTG_FS_DP) | \ + PIN_OTYPE_PUSHPULL(GPIOA_SWDIO) | \ + PIN_OTYPE_PUSHPULL(GPIOA_SWCLK) | \ + PIN_OTYPE_PUSHPULL(GPIOA_PIN15)) +#define VAL_GPIOA_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOA_PIN0) | \ + PIN_OSPEED_VERYLOW(GPIOA_PIN1) | \ + PIN_OSPEED_VERYLOW(GPIOA_PIN2) | \ + PIN_OSPEED_VERYLOW(GPIOA_PIN3) | \ + PIN_OSPEED_VERYLOW(GPIOA_PIN4) | \ + PIN_OSPEED_HIGH(GPIOA_SCK) | \ + PIN_OSPEED_HIGH(GPIOA_MISO) | \ + PIN_OSPEED_HIGH(GPIOA_MOSI) | \ + PIN_OSPEED_VERYLOW(GPIOA_PIN8) | \ + PIN_OSPEED_VERYLOW(GPIOA_PIN9) | \ + PIN_OSPEED_VERYLOW(GPIOA_PIN10) | \ + PIN_OSPEED_HIGH(GPIOA_OTG_FS_DM) | \ + PIN_OSPEED_HIGH(GPIOA_OTG_FS_DP) | \ + PIN_OSPEED_HIGH(GPIOA_SWDIO) | \ + PIN_OSPEED_HIGH(GPIOA_SWCLK) | \ + PIN_OSPEED_VERYLOW(GPIOA_PIN15)) +#define VAL_GPIOA_PUPDR (PIN_PUPDR_PULLUP(GPIOA_PIN0) | \ + PIN_PUPDR_PULLUP(GPIOA_PIN1) | \ + PIN_PUPDR_PULLUP(GPIOA_PIN2) | \ + PIN_PUPDR_PULLUP(GPIOA_PIN3) | \ + PIN_PUPDR_PULLUP(GPIOA_PIN4) | \ + PIN_PUPDR_PULLUP(GPIOA_SCK) | \ + PIN_PUPDR_PULLUP(GPIOA_MISO) | \ + PIN_PUPDR_PULLUP(GPIOA_MOSI) | \ + PIN_PUPDR_PULLUP(GPIOA_PIN8) | \ + PIN_PUPDR_PULLUP(GPIOA_PIN9) | \ + PIN_PUPDR_PULLUP(GPIOA_PIN10) | \ + PIN_PUPDR_FLOATING(GPIOA_OTG_FS_DM) | \ + PIN_PUPDR_FLOATING(GPIOA_OTG_FS_DP) | \ + PIN_PUPDR_PULLUP(GPIOA_SWDIO) | \ + PIN_PUPDR_PULLDOWN(GPIOA_SWCLK) | \ + PIN_PUPDR_PULLUP(GPIOA_PIN15)) +#define VAL_GPIOA_ODR (PIN_ODR_HIGH(GPIOA_PIN0) | \ + PIN_ODR_HIGH(GPIOA_PIN1) | \ + PIN_ODR_HIGH(GPIOA_PIN2) | \ + PIN_ODR_HIGH(GPIOA_PIN3) | \ + PIN_ODR_HIGH(GPIOA_PIN4) | \ + PIN_ODR_HIGH(GPIOA_SCK) | \ + PIN_ODR_HIGH(GPIOA_MISO) | \ + PIN_ODR_HIGH(GPIOA_MOSI) | \ + PIN_ODR_HIGH(GPIOA_PIN8) | \ + PIN_ODR_HIGH(GPIOA_PIN9) | \ + PIN_ODR_HIGH(GPIOA_PIN10) | \ + PIN_ODR_HIGH(GPIOA_OTG_FS_DM) | \ + PIN_ODR_HIGH(GPIOA_OTG_FS_DP) | \ + PIN_ODR_HIGH(GPIOA_SWDIO) | \ + PIN_ODR_HIGH(GPIOA_SWCLK) | \ + PIN_ODR_HIGH(GPIOA_PIN15)) +#define VAL_GPIOA_AFRL (PIN_AFIO_AF(GPIOA_PIN0, 0U) | \ + PIN_AFIO_AF(GPIOA_PIN1, 0U) | \ + PIN_AFIO_AF(GPIOA_PIN2, 0U) | \ + PIN_AFIO_AF(GPIOA_PIN3, 0U) | \ + PIN_AFIO_AF(GPIOA_PIN4, 0U) | \ + PIN_AFIO_AF(GPIOA_SCK, 5U) | \ + PIN_AFIO_AF(GPIOA_MISO, 5U) | \ + PIN_AFIO_AF(GPIOA_MOSI, 5U)) +#define VAL_GPIOA_AFRH (PIN_AFIO_AF(GPIOA_PIN8, 0U) | \ + PIN_AFIO_AF(GPIOA_PIN9, 0U) | \ + PIN_AFIO_AF(GPIOA_PIN10, 0U) | \ + PIN_AFIO_AF(GPIOA_OTG_FS_DM, 10U) | \ + PIN_AFIO_AF(GPIOA_OTG_FS_DP, 10U) | \ + PIN_AFIO_AF(GPIOA_SWDIO, 0U) | \ + PIN_AFIO_AF(GPIOA_SWCLK, 0U) | \ + PIN_AFIO_AF(GPIOA_PIN15, 0U)) + +/* + * GPIOB setup: + * + * PB0 - (input pullup). + * PB1 - (input pullup). + * PB2 - (input pullup). + * PB3 - SWO (alternate 0). + * PB4 - (input pullup). + * PB5 - (input pullup). + * PB6 - UART TX (alternate 7). + * PB7 - UART RX (alternate 7). + * PB8 - (input pullup). + * PB9 - (input pullup). + * PB10 - (input pullup). + * PB11 - (input pullup). + * PB12 - (input pullup). + * PB13 - (input pullup). + * PB14 - (input pullup). + * PB15 - (input pullup). + */ +#define VAL_GPIOB_MODER (PIN_MODE_INPUT(GPIOB_PIN0) | \ + PIN_MODE_INPUT(GPIOB_PIN1) | \ + PIN_MODE_INPUT(GPIOB_PIN2) | \ + PIN_MODE_ALTERNATE(GPIOB_SWO) | \ + PIN_MODE_INPUT(GPIOB_PIN4) | \ + PIN_MODE_INPUT(GPIOB_PIN5) | \ + PIN_MODE_ALTERNATE(GPIOB_UART_TX) | \ + PIN_MODE_ALTERNATE(GPIOB_UART_RX) | \ + PIN_MODE_INPUT(GPIOB_PIN8) | \ + PIN_MODE_INPUT(GPIOB_PIN9) | \ + PIN_MODE_INPUT(GPIOB_PIN10) | \ + PIN_MODE_INPUT(GPIOB_PIN11) | \ + PIN_MODE_INPUT(GPIOB_PIN12) | \ + PIN_MODE_INPUT(GPIOB_PIN13) | \ + PIN_MODE_INPUT(GPIOB_PIN14) | \ + PIN_MODE_INPUT(GPIOB_PIN15)) +#define VAL_GPIOB_OTYPER (PIN_OTYPE_PUSHPULL(GPIOB_PIN0) | \ + PIN_OTYPE_PUSHPULL(GPIOB_PIN1) | \ + PIN_OTYPE_PUSHPULL(GPIOB_PIN2) | \ + PIN_OTYPE_PUSHPULL(GPIOB_SWO) | \ + PIN_OTYPE_PUSHPULL(GPIOB_PIN4) | \ + PIN_OTYPE_PUSHPULL(GPIOB_PIN5) | \ + PIN_OTYPE_PUSHPULL(GPIOB_UART_TX) | \ + PIN_OTYPE_PUSHPULL(GPIOB_UART_RX) | \ + PIN_OTYPE_PUSHPULL(GPIOB_PIN8) | \ + PIN_OTYPE_PUSHPULL(GPIOB_PIN9) | \ + PIN_OTYPE_PUSHPULL(GPIOB_PIN10) | \ + PIN_OTYPE_PUSHPULL(GPIOB_PIN11) | \ + PIN_OTYPE_PUSHPULL(GPIOB_PIN12) | \ + PIN_OTYPE_PUSHPULL(GPIOB_PIN13) | \ + PIN_OTYPE_PUSHPULL(GPIOB_PIN14) | \ + PIN_OTYPE_PUSHPULL(GPIOB_PIN15)) +#define VAL_GPIOB_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOB_PIN0) | \ + PIN_OSPEED_VERYLOW(GPIOB_PIN1) | \ + PIN_OSPEED_VERYLOW(GPIOB_PIN2) | \ + PIN_OSPEED_HIGH(GPIOB_SWO) | \ + PIN_OSPEED_VERYLOW(GPIOB_PIN4) | \ + PIN_OSPEED_VERYLOW(GPIOB_PIN5) | \ + PIN_OSPEED_HIGH(GPIOB_UART_TX) | \ + PIN_OSPEED_HIGH(GPIOB_UART_RX) | \ + PIN_OSPEED_VERYLOW(GPIOB_PIN8) | \ + PIN_OSPEED_VERYLOW(GPIOB_PIN9) | \ + PIN_OSPEED_VERYLOW(GPIOB_PIN10) | \ + PIN_OSPEED_VERYLOW(GPIOB_PIN11) | \ + PIN_OSPEED_VERYLOW(GPIOB_PIN12) | \ + PIN_OSPEED_VERYLOW(GPIOB_PIN13) | \ + PIN_OSPEED_VERYLOW(GPIOB_PIN14) | \ + PIN_OSPEED_VERYLOW(GPIOB_PIN15)) +#define VAL_GPIOB_PUPDR (PIN_PUPDR_PULLUP(GPIOB_PIN0) | \ + PIN_PUPDR_PULLUP(GPIOB_PIN1) | \ + PIN_PUPDR_PULLUP(GPIOB_PIN2) | \ + PIN_PUPDR_PULLUP(GPIOB_SWO) | \ + PIN_PUPDR_PULLUP(GPIOB_PIN4) | \ + PIN_PUPDR_PULLUP(GPIOB_PIN5) | \ + PIN_PUPDR_FLOATING(GPIOB_UART_TX) | \ + PIN_PUPDR_FLOATING(GPIOB_UART_RX) | \ + PIN_PUPDR_PULLUP(GPIOB_PIN8) | \ + PIN_PUPDR_PULLUP(GPIOB_PIN9) | \ + PIN_PUPDR_PULLUP(GPIOB_PIN10) | \ + PIN_PUPDR_PULLUP(GPIOB_PIN11) | \ + PIN_PUPDR_PULLUP(GPIOB_PIN12) | \ + PIN_PUPDR_PULLUP(GPIOB_PIN13) | \ + PIN_PUPDR_PULLUP(GPIOB_PIN14) | \ + PIN_PUPDR_PULLUP(GPIOB_PIN15)) +#define VAL_GPIOB_ODR (PIN_ODR_HIGH(GPIOB_PIN0) | \ + PIN_ODR_HIGH(GPIOB_PIN1) | \ + PIN_ODR_HIGH(GPIOB_PIN2) | \ + PIN_ODR_HIGH(GPIOB_SWO) | \ + PIN_ODR_HIGH(GPIOB_PIN4) | \ + PIN_ODR_HIGH(GPIOB_PIN5) | \ + PIN_ODR_HIGH(GPIOB_UART_TX) | \ + PIN_ODR_HIGH(GPIOB_UART_RX) | \ + PIN_ODR_HIGH(GPIOB_PIN8) | \ + PIN_ODR_HIGH(GPIOB_PIN9) | \ + PIN_ODR_HIGH(GPIOB_PIN10) | \ + PIN_ODR_HIGH(GPIOB_PIN11) | \ + PIN_ODR_HIGH(GPIOB_PIN12) | \ + PIN_ODR_HIGH(GPIOB_PIN13) | \ + PIN_ODR_HIGH(GPIOB_PIN14) | \ + PIN_ODR_HIGH(GPIOB_PIN15)) +#define VAL_GPIOB_AFRL (PIN_AFIO_AF(GPIOB_PIN0, 0U) | \ + PIN_AFIO_AF(GPIOB_PIN1, 0U) | \ + PIN_AFIO_AF(GPIOB_PIN2, 0U) | \ + PIN_AFIO_AF(GPIOB_SWO, 0U) | \ + PIN_AFIO_AF(GPIOB_PIN4, 0U) | \ + PIN_AFIO_AF(GPIOB_PIN5, 0U) | \ + PIN_AFIO_AF(GPIOB_UART_TX, 7U) | \ + PIN_AFIO_AF(GPIOB_UART_RX, 7U)) +#define VAL_GPIOB_AFRH (PIN_AFIO_AF(GPIOB_PIN8, 0U) | \ + PIN_AFIO_AF(GPIOB_PIN9, 0U) | \ + PIN_AFIO_AF(GPIOB_PIN10, 0U) | \ + PIN_AFIO_AF(GPIOB_PIN11, 0U) | \ + PIN_AFIO_AF(GPIOB_PIN12, 0U) | \ + PIN_AFIO_AF(GPIOB_PIN13, 0U) | \ + PIN_AFIO_AF(GPIOB_PIN14, 0U) | \ + PIN_AFIO_AF(GPIOB_PIN15, 0U)) + +/* + * GPIOC setup: + * + * PC0 - (input pullup). + * PC1 - (input pullup). + * PC2 - (input pullup). + * PC3 - (input pullup). + * PC4 - (input pullup). + * PC5 - (input pullup). + * PC6 - (input pullup). + * PC7 - (input pullup). + * PC8 - (input pullup). + * PC9 - (input pullup). + * PC10 - (input pullup). + * PC11 - (input pullup). + * PC12 - (input pullup). + * PC13 - (input floating). + * PC14 - (input floating). + * PC15 - (input floating). + */ +#define VAL_GPIOC_MODER (PIN_MODE_INPUT(GPIOC_PIN0) | \ + PIN_MODE_INPUT(GPIOC_PIN1) | \ + PIN_MODE_INPUT(GPIOC_PIN2) | \ + PIN_MODE_INPUT(GPIOC_PIN3) | \ + PIN_MODE_INPUT(GPIOC_PIN4) | \ + PIN_MODE_INPUT(GPIOC_PIN5) | \ + PIN_MODE_INPUT(GPIOC_PIN6) | \ + PIN_MODE_INPUT(GPIOC_PIN7) | \ + PIN_MODE_INPUT(GPIOC_PIN8) | \ + PIN_MODE_INPUT(GPIOC_PIN9) | \ + PIN_MODE_INPUT(GPIOC_PIN10) | \ + PIN_MODE_INPUT(GPIOC_PIN11) | \ + PIN_MODE_INPUT(GPIOC_PIN12) | \ + PIN_MODE_INPUT(GPIOC_PIN13) | \ + PIN_MODE_INPUT(GPIOC_PIN14) | \ + PIN_MODE_INPUT(GPIOC_PIN15)) +#define VAL_GPIOC_OTYPER (PIN_OTYPE_PUSHPULL(GPIOC_PIN0) | \ + PIN_OTYPE_PUSHPULL(GPIOC_PIN1) | \ + PIN_OTYPE_PUSHPULL(GPIOC_PIN2) | \ + PIN_OTYPE_PUSHPULL(GPIOC_PIN3) | \ + PIN_OTYPE_PUSHPULL(GPIOC_PIN4) | \ + PIN_OTYPE_PUSHPULL(GPIOC_PIN5) | \ + PIN_OTYPE_PUSHPULL(GPIOC_PIN6) | \ + PIN_OTYPE_PUSHPULL(GPIOC_PIN7) | \ + PIN_OTYPE_PUSHPULL(GPIOC_PIN8) | \ + PIN_OTYPE_PUSHPULL(GPIOC_PIN9) | \ + PIN_OTYPE_PUSHPULL(GPIOC_PIN10) | \ + PIN_OTYPE_PUSHPULL(GPIOC_PIN11) | \ + PIN_OTYPE_PUSHPULL(GPIOC_PIN12) | \ + PIN_OTYPE_PUSHPULL(GPIOC_PIN13) | \ + PIN_OTYPE_PUSHPULL(GPIOC_PIN14) | \ + PIN_OTYPE_PUSHPULL(GPIOC_PIN15)) +#define VAL_GPIOC_OSPEEDR (PIN_OSPEED_VERYLOW(GPIOC_PIN0) | \ + PIN_OSPEED_VERYLOW(GPIOC_PIN1) | \ + PIN_OSPEED_VERYLOW(GPIOC_PIN2) | \ + PIN_OSPEED_VERYLOW(GPIOC_PIN3) | \ + PIN_OSPEED_VERYLOW(GPIOC_PIN4) | \ + PIN_OSPEED_VERYLOW(GPIOC_PIN5) | \ + PIN_OSPEED_VERYLOW(GPIOC_PIN6) | \ + PIN_OSPEED_VERYLOW(GPIOC_PIN7) | \ + PIN_OSPEED_VERYLOW(GPIOC_PIN8) | \ + PIN_OSPEED_VERYLOW(GPIOC_PIN9) | \ + PIN_OSPEED_VERYLOW(GPIOC_PIN10) | \ + PIN_OSPEED_VERYLOW(GPIOC_PIN11) | \ + PIN_OSPEED_VERYLOW(GPIOC_PIN12) | \ + PIN_OSPEED_VERYLOW(GPIOC_PIN13) | \ + PIN_OSPEED_VERYLOW(GPIOC_PIN14) | \ + PIN_OSPEED_VERYLOW(GPIOC_PIN15)) +#define VAL_GPIOC_PUPDR (PIN_PUPDR_PULLUP(GPIOC_PIN0) | \ + PIN_PUPDR_PULLUP(GPIOC_PIN1) | \ + PIN_PUPDR_PULLUP(GPIOC_PIN2) | \ + PIN_PUPDR_PULLUP(GPIOC_PIN3) | \ + PIN_PUPDR_PULLUP(GPIOC_PIN4) | \ + PIN_PUPDR_PULLUP(GPIOC_PIN5) | \ + PIN_PUPDR_PULLUP(GPIOC_PIN6) | \ + PIN_PUPDR_PULLUP(GPIOC_PIN7) | \ + PIN_PUPDR_PULLUP(GPIOC_PIN8) | \ + PIN_PUPDR_PULLUP(GPIOC_PIN9) | \ + PIN_PUPDR_PULLUP(GPIOC_PIN10) | \ + PIN_PUPDR_PULLUP(GPIOC_PIN11) | \ + PIN_PUPDR_PULLUP(GPIOC_PIN12) | \ + PIN_PUPDR_PULLUP(GPIOC_PIN13) | \ + PIN_PUPDR_PULLUP(GPIOC_PIN14) | \ + PIN_PUPDR_PULLUP(GPIOC_PIN15)) +#define VAL_GPIOC_ODR (PIN_ODR_HIGH(GPIOC_PIN0) | \ + PIN_ODR_HIGH(GPIOC_PIN1) | \ + PIN_ODR_HIGH(GPIOC_PIN2) | \ + PIN_ODR_HIGH(GPIOC_PIN3) | \ + PIN_ODR_HIGH(GPIOC_PIN4) | \ + PIN_ODR_HIGH(GPIOC_PIN5) | \ + PIN_ODR_HIGH(GPIOC_PIN6) | \ + PIN_ODR_HIGH(GPIOC_PIN7) | \ + PIN_ODR_HIGH(GPIOC_PIN8) | \ + PIN_ODR_HIGH(GPIOC_PIN9) | \ + PIN_ODR_HIGH(GPIOC_PIN10) | \ + PIN_ODR_HIGH(GPIOC_PIN11) | \ + PIN_ODR_HIGH(GPIOC_PIN12) | \ + PIN_ODR_HIGH(GPIOC_PIN13) | \ + PIN_ODR_HIGH(GPIOC_PIN14) | \ + PIN_ODR_HIGH(GPIOC_PIN15)) +#define VAL_GPIOC_AFRL (PIN_AFIO_AF(GPIOC_PIN0, 0U) | \ + PIN_AFIO_AF(GPIOC_PIN1, 0U) | \ + PIN_AFIO_AF(GPIOC_PIN2, 0U) | \ + PIN_AFIO_AF(GPIOC_PIN3, 0U) | \ + PIN_AFIO_AF(GPIOC_PIN4, 0U) | \ + PIN_AFIO_AF(GPIOC_PIN5, 0U) | \ + PIN_AFIO_AF(GPIOC_PIN6, 0U) | \ + PIN_AFIO_AF(GPIOC_PIN7, 0U)) +#define VAL_GPIOC_AFRH (PIN_AFIO_AF(GPIOC_PIN8, 0U) | \ + PIN_AFIO_AF(GPIOC_PIN9, 0U) | \ + PIN_AFIO_AF(GPIOC_PIN10, 0U) | \ + PIN_AFIO_AF(GPIOC_PIN11, 0U) | \ + PIN_AFIO_AF(GPIOC_PIN12, 0U) | \ + PIN_AFIO_AF(GPIOC_PIN13, 0U) | \ + PIN_AFIO_AF(GPIOC_PIN14, 0U) | \ + PIN_AFIO_AF(GPIOC_PIN15, 0U)) + +/* + * GPIOD setup: + * + * PD0 - PIN0 (input pullup). + * PD1 - PIN1 (input pullup). + * PD2 - PIN2 (input pullup). + * PD3 - PIN3 (input pullup). + * PD4 - PIN4 (input pullup). + * PD5 - PIN5 (input pullup). + * PD6 - PIN6 (input pullup). + * PD7 - PIN7 (input pullup). + * PD8 - PIN8 (input pullup). + * PD9 - PIN9 (input pullup). + * PD10 - PIN10 (input pullup). + * PD11 - PIN11 (input pullup). + * PD12 - PIN12 (input pullup). + * PD13 - PIN13 (input pullup). + * PD14 - PIN14 (input pullup). + * PD15 - PIN15 (input pullup). + */ +#define VAL_GPIOD_MODER (PIN_MODE_INPUT(GPIOD_PIN0) | \ + PIN_MODE_INPUT(GPIOD_PIN1) | \ + PIN_MODE_INPUT(GPIOD_PIN2) | \ + PIN_MODE_INPUT(GPIOD_PIN3) | \ + PIN_MODE_INPUT(GPIOD_PIN4) | \ + PIN_MODE_INPUT(GPIOD_PIN5) | \ + PIN_MODE_INPUT(GPIOD_PIN6) | \ + PIN_MODE_INPUT(GPIOD_PIN7) | \ + PIN_MODE_INPUT(GPIOD_PIN8) | \ + PIN_MODE_INPUT(GPIOD_PIN9) | \ + PIN_MODE_INPUT(GPIOD_PIN10) | \ + PIN_MODE_INPUT(GPIOD_PIN11) | \ + PIN_MODE_INPUT(GPIOD_PIN12) | \ + PIN_MODE_INPUT(GPIOD_PIN13) | \ + PIN_MODE_INPUT(GPIOD_PIN14) | \ + PIN_MODE_INPUT(GPIOD_PIN15)) +#define VAL_GPIOD_OTYPER (PIN_OTYPE_PUSHPULL(GPIOD_PIN0) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN1) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN2) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN3) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN4) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN5) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN6) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN7) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN8) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN9) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN10) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN11) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN12) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN13) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN14) | \ + PIN_OTYPE_PUSHPULL(GPIOD_PIN15)) +#define VAL_GPIOD_OSPEEDR (PIN_OSPEED_HIGH(GPIOD_PIN0) | \ + PIN_OSPEED_HIGH(GPIOD_PIN1) | \ + PIN_OSPEED_HIGH(GPIOD_PIN2) | \ + PIN_OSPEED_HIGH(GPIOD_PIN3) | \ + PIN_OSPEED_HIGH(GPIOD_PIN4) | \ + PIN_OSPEED_HIGH(GPIOD_PIN5) | \ + PIN_OSPEED_HIGH(GPIOD_PIN6) | \ + PIN_OSPEED_HIGH(GPIOD_PIN7) | \ + PIN_OSPEED_HIGH(GPIOD_PIN8) | \ + PIN_OSPEED_HIGH(GPIOD_PIN9) | \ + PIN_OSPEED_HIGH(GPIOD_PIN10) | \ + PIN_OSPEED_HIGH(GPIOD_PIN11) | \ + PIN_OSPEED_HIGH(GPIOD_PIN12) | \ + PIN_OSPEED_HIGH(GPIOD_PIN13) | \ + PIN_OSPEED_HIGH(GPIOD_PIN14) | \ + PIN_OSPEED_HIGH(GPIOD_PIN15)) +#define VAL_GPIOD_PUPDR (PIN_PUPDR_PULLUP(GPIOD_PIN0) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN1) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN2) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN3) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN4) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN5) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN6) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN7) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN8) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN9) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN10) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN11) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN12) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN13) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN14) | \ + PIN_PUPDR_PULLUP(GPIOD_PIN15)) +#define VAL_GPIOD_ODR (PIN_ODR_HIGH(GPIOD_PIN0) | \ + PIN_ODR_HIGH(GPIOD_PIN1) | \ + PIN_ODR_HIGH(GPIOD_PIN2) | \ + PIN_ODR_HIGH(GPIOD_PIN3) | \ + PIN_ODR_HIGH(GPIOD_PIN4) | \ + PIN_ODR_HIGH(GPIOD_PIN5) | \ + PIN_ODR_HIGH(GPIOD_PIN6) | \ + PIN_ODR_HIGH(GPIOD_PIN7) | \ + PIN_ODR_HIGH(GPIOD_PIN8) | \ + PIN_ODR_HIGH(GPIOD_PIN9) | \ + PIN_ODR_HIGH(GPIOD_PIN10) | \ + PIN_ODR_HIGH(GPIOD_PIN11) | \ + PIN_ODR_HIGH(GPIOD_PIN12) | \ + PIN_ODR_HIGH(GPIOD_PIN13) | \ + PIN_ODR_HIGH(GPIOD_PIN14) | \ + PIN_ODR_HIGH(GPIOD_PIN15)) +#define VAL_GPIOD_AFRL (PIN_AFIO_AF(GPIOD_PIN0, 0U) | \ + PIN_AFIO_AF(GPIOD_PIN1, 0U) | \ + PIN_AFIO_AF(GPIOD_PIN2, 0U) | \ + PIN_AFIO_AF(GPIOD_PIN3, 0U) | \ + PIN_AFIO_AF(GPIOD_PIN4, 0U) | \ + PIN_AFIO_AF(GPIOD_PIN5, 0U) | \ + PIN_AFIO_AF(GPIOD_PIN6, 0U) | \ + PIN_AFIO_AF(GPIOD_PIN7, 0U)) +#define VAL_GPIOD_AFRH (PIN_AFIO_AF(GPIOD_PIN8, 0U) | \ + PIN_AFIO_AF(GPIOD_PIN9, 0U) | \ + PIN_AFIO_AF(GPIOD_PIN10, 0U) | \ + PIN_AFIO_AF(GPIOD_PIN11, 0U) | \ + PIN_AFIO_AF(GPIOD_PIN12, 0U) | \ + PIN_AFIO_AF(GPIOD_PIN13, 0U) | \ + PIN_AFIO_AF(GPIOD_PIN14, 0U) | \ + PIN_AFIO_AF(GPIOD_PIN15, 0U)) + +/* + * GPIOE setup: + * + * PE0 - PIN0 (input pullup). + * PE1 - PIN1 (input pullup). + * PE2 - PIN2 (input pullup). + * PE3 - PIN3 (input pullup). + * PE4 - PIN4 (input pullup). + * PE5 - PIN5 (input pullup). + * PE6 - PIN6 (input pullup). + * PE7 - PIN7 (input pullup). + * PE8 - PIN8 (input pullup). + * PE9 - PIN9 (input pullup). + * PE10 - PIN10 (input pullup). + * PE11 - PIN11 (input pullup). + * PE12 - PIN12 (input pullup). + * PE13 - PIN13 (input pullup). + * PE14 - PIN14 (input pullup). + * PE15 - PIN15 (input pullup). + */ +#define VAL_GPIOE_MODER (PIN_MODE_INPUT(GPIOE_PIN0) | \ + PIN_MODE_INPUT(GPIOE_PIN1) | \ + PIN_MODE_INPUT(GPIOE_PIN2) | \ + PIN_MODE_INPUT(GPIOE_PIN3) | \ + PIN_MODE_INPUT(GPIOE_PIN4) | \ + PIN_MODE_INPUT(GPIOE_PIN5) | \ + PIN_MODE_INPUT(GPIOE_PIN6) | \ + PIN_MODE_INPUT(GPIOE_PIN7) | \ + PIN_MODE_INPUT(GPIOE_PIN8) | \ + PIN_MODE_INPUT(GPIOE_PIN9) | \ + PIN_MODE_INPUT(GPIOE_PIN10) | \ + PIN_MODE_INPUT(GPIOE_PIN11) | \ + PIN_MODE_INPUT(GPIOE_PIN12) | \ + PIN_MODE_INPUT(GPIOE_PIN13) | \ + PIN_MODE_INPUT(GPIOE_PIN14) | \ + PIN_MODE_INPUT(GPIOE_PIN15)) +#define VAL_GPIOE_OTYPER (PIN_OTYPE_PUSHPULL(GPIOE_PIN0) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN1) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN2) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN3) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN4) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN5) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN6) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN7) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN8) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN9) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN10) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN11) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN12) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN13) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN14) | \ + PIN_OTYPE_PUSHPULL(GPIOE_PIN15)) +#define VAL_GPIOE_OSPEEDR (PIN_OSPEED_HIGH(GPIOE_PIN0) | \ + PIN_OSPEED_HIGH(GPIOE_PIN1) | \ + PIN_OSPEED_HIGH(GPIOE_PIN2) | \ + PIN_OSPEED_HIGH(GPIOE_PIN3) | \ + PIN_OSPEED_HIGH(GPIOE_PIN4) | \ + PIN_OSPEED_HIGH(GPIOE_PIN5) | \ + PIN_OSPEED_HIGH(GPIOE_PIN6) | \ + PIN_OSPEED_HIGH(GPIOE_PIN7) | \ + PIN_OSPEED_HIGH(GPIOE_PIN8) | \ + PIN_OSPEED_HIGH(GPIOE_PIN9) | \ + PIN_OSPEED_HIGH(GPIOE_PIN10) | \ + PIN_OSPEED_HIGH(GPIOE_PIN11) | \ + PIN_OSPEED_HIGH(GPIOE_PIN12) | \ + PIN_OSPEED_HIGH(GPIOE_PIN13) | \ + PIN_OSPEED_HIGH(GPIOE_PIN14) | \ + PIN_OSPEED_HIGH(GPIOE_PIN15)) +#define VAL_GPIOE_PUPDR (PIN_PUPDR_PULLUP(GPIOE_PIN0) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN1) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN2) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN3) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN4) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN5) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN6) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN7) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN8) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN9) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN10) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN11) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN12) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN13) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN14) | \ + PIN_PUPDR_PULLUP(GPIOE_PIN15)) +#define VAL_GPIOE_ODR (PIN_ODR_HIGH(GPIOE_PIN0) | \ + PIN_ODR_HIGH(GPIOE_PIN1) | \ + PIN_ODR_HIGH(GPIOE_PIN2) | \ + PIN_ODR_HIGH(GPIOE_PIN3) | \ + PIN_ODR_HIGH(GPIOE_PIN4) | \ + PIN_ODR_HIGH(GPIOE_PIN5) | \ + PIN_ODR_HIGH(GPIOE_PIN6) | \ + PIN_ODR_HIGH(GPIOE_PIN7) | \ + PIN_ODR_HIGH(GPIOE_PIN8) | \ + PIN_ODR_HIGH(GPIOE_PIN9) | \ + PIN_ODR_HIGH(GPIOE_PIN10) | \ + PIN_ODR_HIGH(GPIOE_PIN11) | \ + PIN_ODR_HIGH(GPIOE_PIN12) | \ + PIN_ODR_HIGH(GPIOE_PIN13) | \ + PIN_ODR_HIGH(GPIOE_PIN14) | \ + PIN_ODR_HIGH(GPIOE_PIN15)) +#define VAL_GPIOE_AFRL (PIN_AFIO_AF(GPIOE_PIN0, 0U) | \ + PIN_AFIO_AF(GPIOE_PIN1, 0U) | \ + PIN_AFIO_AF(GPIOE_PIN2, 0U) | \ + PIN_AFIO_AF(GPIOE_PIN3, 0U) | \ + PIN_AFIO_AF(GPIOE_PIN4, 0U) | \ + PIN_AFIO_AF(GPIOE_PIN5, 0U) | \ + PIN_AFIO_AF(GPIOE_PIN6, 0U) | \ + PIN_AFIO_AF(GPIOE_PIN7, 0U)) +#define VAL_GPIOE_AFRH (PIN_AFIO_AF(GPIOE_PIN8, 0U) | \ + PIN_AFIO_AF(GPIOE_PIN9, 0U) | \ + PIN_AFIO_AF(GPIOE_PIN10, 0U) | \ + PIN_AFIO_AF(GPIOE_PIN11, 0U) | \ + PIN_AFIO_AF(GPIOE_PIN12, 0U) | \ + PIN_AFIO_AF(GPIOE_PIN13, 0U) | \ + PIN_AFIO_AF(GPIOE_PIN14, 0U) | \ + PIN_AFIO_AF(GPIOE_PIN15, 0U)) + +/* + * GPIOF setup: + * + * PF0 - PIN0 (input pullup). + * PF1 - PIN1 (input pullup). + * PF2 - PIN2 (input pullup). + * PF3 - PIN3 (input pullup). + * PF4 - PIN4 (input pullup). + * PF5 - PIN5 (input pullup). + * PF6 - PIN6 (input pullup). + * PF7 - PIN7 (input pullup). + * PF8 - PIN8 (input pullup). + * PF9 - PIN9 (input pullup). + * PF10 - PIN10 (input pullup). + * PF11 - PIN11 (input pullup). + * PF12 - PIN12 (input pullup). + * PF13 - PIN13 (input pullup). + * PF14 - PIN14 (input pullup). + * PF15 - PIN15 (input pullup). + */ +#define VAL_GPIOF_MODER (PIN_MODE_INPUT(GPIOF_PIN0) | \ + PIN_MODE_INPUT(GPIOF_PIN1) | \ + PIN_MODE_INPUT(GPIOF_PIN2) | \ + PIN_MODE_INPUT(GPIOF_PIN3) | \ + PIN_MODE_INPUT(GPIOF_PIN4) | \ + PIN_MODE_INPUT(GPIOF_PIN5) | \ + PIN_MODE_INPUT(GPIOF_PIN6) | \ + PIN_MODE_INPUT(GPIOF_PIN7) | \ + PIN_MODE_INPUT(GPIOF_PIN8) | \ + PIN_MODE_INPUT(GPIOF_PIN9) | \ + PIN_MODE_INPUT(GPIOF_PIN10) | \ + PIN_MODE_INPUT(GPIOF_PIN11) | \ + PIN_MODE_INPUT(GPIOF_PIN12) | \ + PIN_MODE_INPUT(GPIOF_PIN13) | \ + PIN_MODE_INPUT(GPIOF_PIN14) | \ + PIN_MODE_INPUT(GPIOF_PIN15)) +#define VAL_GPIOF_OTYPER (PIN_OTYPE_PUSHPULL(GPIOF_PIN0) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN1) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN2) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN3) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN4) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN5) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN6) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN7) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN8) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN9) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN10) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN11) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN12) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN13) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN14) | \ + PIN_OTYPE_PUSHPULL(GPIOF_PIN15)) +#define VAL_GPIOF_OSPEEDR (PIN_OSPEED_HIGH(GPIOF_PIN0) | \ + PIN_OSPEED_HIGH(GPIOF_PIN1) | \ + PIN_OSPEED_HIGH(GPIOF_PIN2) | \ + PIN_OSPEED_HIGH(GPIOF_PIN3) | \ + PIN_OSPEED_HIGH(GPIOF_PIN4) | \ + PIN_OSPEED_HIGH(GPIOF_PIN5) | \ + PIN_OSPEED_HIGH(GPIOF_PIN6) | \ + PIN_OSPEED_HIGH(GPIOF_PIN7) | \ + PIN_OSPEED_HIGH(GPIOF_PIN8) | \ + PIN_OSPEED_HIGH(GPIOF_PIN9) | \ + PIN_OSPEED_HIGH(GPIOF_PIN10) | \ + PIN_OSPEED_HIGH(GPIOF_PIN11) | \ + PIN_OSPEED_HIGH(GPIOF_PIN12) | \ + PIN_OSPEED_HIGH(GPIOF_PIN13) | \ + PIN_OSPEED_HIGH(GPIOF_PIN14) | \ + PIN_OSPEED_HIGH(GPIOF_PIN15)) +#define VAL_GPIOF_PUPDR (PIN_PUPDR_PULLUP(GPIOF_PIN0) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN1) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN2) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN3) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN4) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN5) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN6) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN7) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN8) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN9) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN10) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN11) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN12) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN13) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN14) | \ + PIN_PUPDR_PULLUP(GPIOF_PIN15)) +#define VAL_GPIOF_ODR (PIN_ODR_HIGH(GPIOF_PIN0) | \ + PIN_ODR_HIGH(GPIOF_PIN1) | \ + PIN_ODR_HIGH(GPIOF_PIN2) | \ + PIN_ODR_HIGH(GPIOF_PIN3) | \ + PIN_ODR_HIGH(GPIOF_PIN4) | \ + PIN_ODR_HIGH(GPIOF_PIN5) | \ + PIN_ODR_HIGH(GPIOF_PIN6) | \ + PIN_ODR_HIGH(GPIOF_PIN7) | \ + PIN_ODR_HIGH(GPIOF_PIN8) | \ + PIN_ODR_HIGH(GPIOF_PIN9) | \ + PIN_ODR_HIGH(GPIOF_PIN10) | \ + PIN_ODR_HIGH(GPIOF_PIN11) | \ + PIN_ODR_HIGH(GPIOF_PIN12) | \ + PIN_ODR_HIGH(GPIOF_PIN13) | \ + PIN_ODR_HIGH(GPIOF_PIN14) | \ + PIN_ODR_HIGH(GPIOF_PIN15)) +#define VAL_GPIOF_AFRL (PIN_AFIO_AF(GPIOF_PIN0, 0U) | \ + PIN_AFIO_AF(GPIOF_PIN1, 0U) | \ + PIN_AFIO_AF(GPIOF_PIN2, 0U) | \ + PIN_AFIO_AF(GPIOF_PIN3, 0U) | \ + PIN_AFIO_AF(GPIOF_PIN4, 0U) | \ + PIN_AFIO_AF(GPIOF_PIN5, 0U) | \ + PIN_AFIO_AF(GPIOF_PIN6, 0U) | \ + PIN_AFIO_AF(GPIOF_PIN7, 0U)) +#define VAL_GPIOF_AFRH (PIN_AFIO_AF(GPIOF_PIN8, 0U) | \ + PIN_AFIO_AF(GPIOF_PIN9, 0U) | \ + PIN_AFIO_AF(GPIOF_PIN10, 0U) | \ + PIN_AFIO_AF(GPIOF_PIN11, 0U) | \ + PIN_AFIO_AF(GPIOF_PIN12, 0U) | \ + PIN_AFIO_AF(GPIOF_PIN13, 0U) | \ + PIN_AFIO_AF(GPIOF_PIN14, 0U) | \ + PIN_AFIO_AF(GPIOF_PIN15, 0U)) + +/* + * GPIOG setup: + * + * PG0 - PIN0 (input pullup). + * PG1 - PIN1 (input pullup). + * PG2 - PIN2 (input pullup). + * PG3 - PIN3 (input pullup). + * PG4 - PIN4 (input pullup). + * PG5 - PIN5 (input pullup). + * PG6 - PIN6 (input pullup). + * PG7 - PIN7 (input pullup). + * PG8 - PIN8 (input pullup). + * PG9 - PIN9 (input pullup). + * PG10 - PIN10 (input pullup). + * PG11 - PIN11 (input pullup). + * PG12 - PIN12 (input pullup). + * PG13 - PIN13 (input pullup). + * PG14 - PIN14 (input pullup). + * PG15 - PIN15 (input pullup). + */ +#define VAL_GPIOG_MODER (PIN_MODE_INPUT(GPIOG_PIN0) | \ + PIN_MODE_INPUT(GPIOG_PIN1) | \ + PIN_MODE_INPUT(GPIOG_PIN2) | \ + PIN_MODE_INPUT(GPIOG_PIN3) | \ + PIN_MODE_INPUT(GPIOG_PIN4) | \ + PIN_MODE_INPUT(GPIOG_PIN5) | \ + PIN_MODE_INPUT(GPIOG_PIN6) | \ + PIN_MODE_INPUT(GPIOG_PIN7) | \ + PIN_MODE_INPUT(GPIOG_PIN8) | \ + PIN_MODE_INPUT(GPIOG_PIN9) | \ + PIN_MODE_INPUT(GPIOG_PIN10) | \ + PIN_MODE_INPUT(GPIOG_PIN11) | \ + PIN_MODE_INPUT(GPIOG_PIN12) | \ + PIN_MODE_INPUT(GPIOG_PIN13) | \ + PIN_MODE_INPUT(GPIOG_PIN14) | \ + PIN_MODE_INPUT(GPIOG_PIN15)) +#define VAL_GPIOG_OTYPER (PIN_OTYPE_PUSHPULL(GPIOG_PIN0) | \ + PIN_OTYPE_PUSHPULL(GPIOG_PIN1) | \ + PIN_OTYPE_PUSHPULL(GPIOG_PIN2) | \ + PIN_OTYPE_PUSHPULL(GPIOG_PIN3) | \ + PIN_OTYPE_PUSHPULL(GPIOG_PIN4) | \ + PIN_OTYPE_PUSHPULL(GPIOG_PIN5) | \ + PIN_OTYPE_PUSHPULL(GPIOG_PIN6) | \ + PIN_OTYPE_PUSHPULL(GPIOG_PIN7) | \ + PIN_OTYPE_PUSHPULL(GPIOG_PIN8) | \ + PIN_OTYPE_PUSHPULL(GPIOG_PIN9) | \ + PIN_OTYPE_PUSHPULL(GPIOG_PIN10) | \ + PIN_OTYPE_PUSHPULL(GPIOG_PIN11) | \ + PIN_OTYPE_PUSHPULL(GPIOG_PIN12) | \ + PIN_OTYPE_PUSHPULL(GPIOG_PIN13) | \ + PIN_OTYPE_PUSHPULL(GPIOG_PIN14) | \ + PIN_OTYPE_PUSHPULL(GPIOG_PIN15)) +#define VAL_GPIOG_OSPEEDR (PIN_OSPEED_HIGH(GPIOG_PIN0) | \ + PIN_OSPEED_HIGH(GPIOG_PIN1) | \ + PIN_OSPEED_HIGH(GPIOG_PIN2) | \ + PIN_OSPEED_HIGH(GPIOG_PIN3) | \ + PIN_OSPEED_HIGH(GPIOG_PIN4) | \ + PIN_OSPEED_HIGH(GPIOG_PIN5) | \ + PIN_OSPEED_HIGH(GPIOG_PIN6) | \ + PIN_OSPEED_HIGH(GPIOG_PIN7) | \ + PIN_OSPEED_HIGH(GPIOG_PIN8) | \ + PIN_OSPEED_HIGH(GPIOG_PIN9) | \ + PIN_OSPEED_HIGH(GPIOG_PIN10) | \ + PIN_OSPEED_HIGH(GPIOG_PIN11) | \ + PIN_OSPEED_HIGH(GPIOG_PIN12) | \ + PIN_OSPEED_HIGH(GPIOG_PIN13) | \ + PIN_OSPEED_HIGH(GPIOG_PIN14) | \ + PIN_OSPEED_HIGH(GPIOG_PIN15)) +#define VAL_GPIOG_PUPDR (PIN_PUPDR_PULLUP(GPIOG_PIN0) | \ + PIN_PUPDR_PULLUP(GPIOG_PIN1) | \ + PIN_PUPDR_PULLUP(GPIOG_PIN2) | \ + PIN_PUPDR_PULLUP(GPIOG_PIN3) | \ + PIN_PUPDR_PULLUP(GPIOG_PIN4) | \ + PIN_PUPDR_PULLUP(GPIOG_PIN5) | \ + PIN_PUPDR_PULLUP(GPIOG_PIN6) | \ + PIN_PUPDR_PULLUP(GPIOG_PIN7) | \ + PIN_PUPDR_PULLUP(GPIOG_PIN8) | \ + PIN_PUPDR_PULLUP(GPIOG_PIN9) | \ + PIN_PUPDR_PULLUP(GPIOG_PIN10) | \ + PIN_PUPDR_PULLUP(GPIOG_PIN11) | \ + PIN_PUPDR_PULLUP(GPIOG_PIN12) | \ + PIN_PUPDR_PULLUP(GPIOG_PIN13) | \ + PIN_PUPDR_PULLUP(GPIOG_PIN14) | \ + PIN_PUPDR_PULLUP(GPIOG_PIN15)) +#define VAL_GPIOG_ODR (PIN_ODR_HIGH(GPIOG_PIN0) | \ + PIN_ODR_HIGH(GPIOG_PIN1) | \ + PIN_ODR_HIGH(GPIOG_PIN2) | \ + PIN_ODR_HIGH(GPIOG_PIN3) | \ + PIN_ODR_HIGH(GPIOG_PIN4) | \ + PIN_ODR_HIGH(GPIOG_PIN5) | \ + PIN_ODR_HIGH(GPIOG_PIN6) | \ + PIN_ODR_HIGH(GPIOG_PIN7) | \ + PIN_ODR_HIGH(GPIOG_PIN8) | \ + PIN_ODR_HIGH(GPIOG_PIN9) | \ + PIN_ODR_HIGH(GPIOG_PIN10) | \ + PIN_ODR_HIGH(GPIOG_PIN11) | \ + PIN_ODR_HIGH(GPIOG_PIN12) | \ + PIN_ODR_HIGH(GPIOG_PIN13) | \ + PIN_ODR_HIGH(GPIOG_PIN14) | \ + PIN_ODR_HIGH(GPIOG_PIN15)) +#define VAL_GPIOG_AFRL (PIN_AFIO_AF(GPIOG_PIN0, 0U) | \ + PIN_AFIO_AF(GPIOG_PIN1, 0U) | \ + PIN_AFIO_AF(GPIOG_PIN2, 0U) | \ + PIN_AFIO_AF(GPIOG_PIN3, 0U) | \ + PIN_AFIO_AF(GPIOG_PIN4, 0U) | \ + PIN_AFIO_AF(GPIOG_PIN5, 0U) | \ + PIN_AFIO_AF(GPIOG_PIN6, 0U) | \ + PIN_AFIO_AF(GPIOG_PIN7, 0U)) +#define VAL_GPIOG_AFRH (PIN_AFIO_AF(GPIOG_PIN8, 0U) | \ + PIN_AFIO_AF(GPIOG_PIN9, 0U) | \ + PIN_AFIO_AF(GPIOG_PIN10, 0U) | \ + PIN_AFIO_AF(GPIOG_PIN11, 0U) | \ + PIN_AFIO_AF(GPIOG_PIN12, 0U) | \ + PIN_AFIO_AF(GPIOG_PIN13, 0U) | \ + PIN_AFIO_AF(GPIOG_PIN14, 0U) | \ + PIN_AFIO_AF(GPIOG_PIN15, 0U)) + +/* + * GPIOH setup: + * + * PH0 - OSC_IN (input floating). + * PH1 - OSC_OUT (input floating). + * PH2 - PIN2 (input pullup). + * PH3 - PIN3 (input pullup). + * PH4 - PIN4 (input pullup). + * PH5 - PIN5 (input pullup). + * PH6 - PIN6 (input pullup). + * PH7 - PIN7 (input pullup). + * PH8 - PIN8 (input pullup). + * PH9 - PIN9 (input pullup). + * PH10 - PIN10 (input pullup). + * PH11 - PIN11 (input pullup). + * PH12 - PIN12 (input pullup). + * PH13 - PIN13 (input pullup). + * PH14 - PIN14 (input pullup). + * PH15 - PIN15 (input pullup). + */ +#define VAL_GPIOH_MODER (PIN_MODE_INPUT(GPIOH_OSC_IN) | \ + PIN_MODE_INPUT(GPIOH_OSC_OUT) | \ + PIN_MODE_INPUT(GPIOH_PIN2) | \ + PIN_MODE_INPUT(GPIOH_PIN3) | \ + PIN_MODE_INPUT(GPIOH_PIN4) | \ + PIN_MODE_INPUT(GPIOH_PIN5) | \ + PIN_MODE_INPUT(GPIOH_PIN6) | \ + PIN_MODE_INPUT(GPIOH_PIN7) | \ + PIN_MODE_INPUT(GPIOH_PIN8) | \ + PIN_MODE_INPUT(GPIOH_PIN9) | \ + PIN_MODE_INPUT(GPIOH_PIN10) | \ + PIN_MODE_INPUT(GPIOH_PIN11) | \ + PIN_MODE_INPUT(GPIOH_PIN12) | \ + PIN_MODE_INPUT(GPIOH_PIN13) | \ + PIN_MODE_INPUT(GPIOH_PIN14) | \ + PIN_MODE_INPUT(GPIOH_PIN15)) +#define VAL_GPIOH_OTYPER (PIN_OTYPE_PUSHPULL(GPIOH_OSC_IN) | \ + PIN_OTYPE_PUSHPULL(GPIOH_OSC_OUT) | \ + PIN_OTYPE_PUSHPULL(GPIOH_PIN2) | \ + PIN_OTYPE_PUSHPULL(GPIOH_PIN3) | \ + PIN_OTYPE_PUSHPULL(GPIOH_PIN4) | \ + PIN_OTYPE_PUSHPULL(GPIOH_PIN5) | \ + PIN_OTYPE_PUSHPULL(GPIOH_PIN6) | \ + PIN_OTYPE_PUSHPULL(GPIOH_PIN7) | \ + PIN_OTYPE_PUSHPULL(GPIOH_PIN8) | \ + PIN_OTYPE_PUSHPULL(GPIOH_PIN9) | \ + PIN_OTYPE_PUSHPULL(GPIOH_PIN10) | \ + PIN_OTYPE_PUSHPULL(GPIOH_PIN11) | \ + PIN_OTYPE_PUSHPULL(GPIOH_PIN12) | \ + PIN_OTYPE_PUSHPULL(GPIOH_PIN13) | \ + PIN_OTYPE_PUSHPULL(GPIOH_PIN14) | \ + PIN_OTYPE_PUSHPULL(GPIOH_PIN15)) +#define VAL_GPIOH_OSPEEDR (PIN_OSPEED_HIGH(GPIOH_OSC_IN) | \ + PIN_OSPEED_HIGH(GPIOH_OSC_OUT) | \ + PIN_OSPEED_HIGH(GPIOH_PIN2) | \ + PIN_OSPEED_HIGH(GPIOH_PIN3) | \ + PIN_OSPEED_HIGH(GPIOH_PIN4) | \ + PIN_OSPEED_HIGH(GPIOH_PIN5) | \ + PIN_OSPEED_HIGH(GPIOH_PIN6) | \ + PIN_OSPEED_HIGH(GPIOH_PIN7) | \ + PIN_OSPEED_HIGH(GPIOH_PIN8) | \ + PIN_OSPEED_HIGH(GPIOH_PIN9) | \ + PIN_OSPEED_HIGH(GPIOH_PIN10) | \ + PIN_OSPEED_HIGH(GPIOH_PIN11) | \ + PIN_OSPEED_HIGH(GPIOH_PIN12) | \ + PIN_OSPEED_HIGH(GPIOH_PIN13) | \ + PIN_OSPEED_HIGH(GPIOH_PIN14) | \ + PIN_OSPEED_HIGH(GPIOH_PIN15)) +#define VAL_GPIOH_PUPDR (PIN_PUPDR_FLOATING(GPIOH_OSC_IN) | \ + PIN_PUPDR_FLOATING(GPIOH_OSC_OUT) | \ + PIN_PUPDR_PULLUP(GPIOH_PIN2) | \ + PIN_PUPDR_PULLUP(GPIOH_PIN3) | \ + PIN_PUPDR_PULLUP(GPIOH_PIN4) | \ + PIN_PUPDR_PULLUP(GPIOH_PIN5) | \ + PIN_PUPDR_PULLUP(GPIOH_PIN6) | \ + PIN_PUPDR_PULLUP(GPIOH_PIN7) | \ + PIN_PUPDR_PULLUP(GPIOH_PIN8) | \ + PIN_PUPDR_PULLUP(GPIOH_PIN9) | \ + PIN_PUPDR_PULLUP(GPIOH_PIN10) | \ + PIN_PUPDR_PULLUP(GPIOH_PIN11) | \ + PIN_PUPDR_PULLUP(GPIOH_PIN12) | \ + PIN_PUPDR_PULLUP(GPIOH_PIN13) | \ + PIN_PUPDR_PULLUP(GPIOH_PIN14) | \ + PIN_PUPDR_PULLUP(GPIOH_PIN15)) +#define VAL_GPIOH_ODR (PIN_ODR_HIGH(GPIOH_OSC_IN) | \ + PIN_ODR_HIGH(GPIOH_OSC_OUT) | \ + PIN_ODR_HIGH(GPIOH_PIN2) | \ + PIN_ODR_HIGH(GPIOH_PIN3) | \ + PIN_ODR_HIGH(GPIOH_PIN4) | \ + PIN_ODR_HIGH(GPIOH_PIN5) | \ + PIN_ODR_HIGH(GPIOH_PIN6) | \ + PIN_ODR_HIGH(GPIOH_PIN7) | \ + PIN_ODR_HIGH(GPIOH_PIN8) | \ + PIN_ODR_HIGH(GPIOH_PIN9) | \ + PIN_ODR_HIGH(GPIOH_PIN10) | \ + PIN_ODR_HIGH(GPIOH_PIN11) | \ + PIN_ODR_HIGH(GPIOH_PIN12) | \ + PIN_ODR_HIGH(GPIOH_PIN13) | \ + PIN_ODR_HIGH(GPIOH_PIN14) | \ + PIN_ODR_HIGH(GPIOH_PIN15)) +#define VAL_GPIOH_AFRL (PIN_AFIO_AF(GPIOH_OSC_IN, 0U) | \ + PIN_AFIO_AF(GPIOH_OSC_OUT, 0U) | \ + PIN_AFIO_AF(GPIOH_PIN2, 0U) | \ + PIN_AFIO_AF(GPIOH_PIN3, 0U) | \ + PIN_AFIO_AF(GPIOH_PIN4, 0U) | \ + PIN_AFIO_AF(GPIOH_PIN5, 0U) | \ + PIN_AFIO_AF(GPIOH_PIN6, 0U) | \ + PIN_AFIO_AF(GPIOH_PIN7, 0U)) +#define VAL_GPIOH_AFRH (PIN_AFIO_AF(GPIOH_PIN8, 0U) | \ + PIN_AFIO_AF(GPIOH_PIN9, 0U) | \ + PIN_AFIO_AF(GPIOH_PIN10, 0U) | \ + PIN_AFIO_AF(GPIOH_PIN11, 0U) | \ + PIN_AFIO_AF(GPIOH_PIN12, 0U) | \ + PIN_AFIO_AF(GPIOH_PIN13, 0U) | \ + PIN_AFIO_AF(GPIOH_PIN14, 0U) | \ + PIN_AFIO_AF(GPIOH_PIN15, 0U)) + +/* + * GPIOI setup: + * + * PI0 - PIN0 (input pullup). + * PI1 - PIN1 (input pullup). + * PI2 - PIN2 (input pullup). + * PI3 - PIN3 (input pullup). + * PI4 - PIN4 (input pullup). + * PI5 - PIN5 (input pullup). + * PI6 - PIN6 (input pullup). + * PI7 - PIN7 (input pullup). + * PI8 - PIN8 (input pullup). + * PI9 - PIN9 (input pullup). + * PI10 - PIN10 (input pullup). + * PI11 - PIN11 (input pullup). + * PI12 - PIN12 (input pullup). + * PI13 - PIN13 (input pullup). + * PI14 - PIN14 (input pullup). + * PI15 - PIN15 (input pullup). + */ +#define VAL_GPIOI_MODER (PIN_MODE_INPUT(GPIOI_PIN0) | \ + PIN_MODE_INPUT(GPIOI_PIN1) | \ + PIN_MODE_INPUT(GPIOI_PIN2) | \ + PIN_MODE_INPUT(GPIOI_PIN3) | \ + PIN_MODE_INPUT(GPIOI_PIN4) | \ + PIN_MODE_INPUT(GPIOI_PIN5) | \ + PIN_MODE_INPUT(GPIOI_PIN6) | \ + PIN_MODE_INPUT(GPIOI_PIN7) | \ + PIN_MODE_INPUT(GPIOI_PIN8) | \ + PIN_MODE_INPUT(GPIOI_PIN9) | \ + PIN_MODE_INPUT(GPIOI_PIN10) | \ + PIN_MODE_INPUT(GPIOI_PIN11) | \ + PIN_MODE_INPUT(GPIOI_PIN12) | \ + PIN_MODE_INPUT(GPIOI_PIN13) | \ + PIN_MODE_INPUT(GPIOI_PIN14) | \ + PIN_MODE_INPUT(GPIOI_PIN15)) +#define VAL_GPIOI_OTYPER (PIN_OTYPE_PUSHPULL(GPIOI_PIN0) | \ + PIN_OTYPE_PUSHPULL(GPIOI_PIN1) | \ + PIN_OTYPE_PUSHPULL(GPIOI_PIN2) | \ + PIN_OTYPE_PUSHPULL(GPIOI_PIN3) | \ + PIN_OTYPE_PUSHPULL(GPIOI_PIN4) | \ + PIN_OTYPE_PUSHPULL(GPIOI_PIN5) | \ + PIN_OTYPE_PUSHPULL(GPIOI_PIN6) | \ + PIN_OTYPE_PUSHPULL(GPIOI_PIN7) | \ + PIN_OTYPE_PUSHPULL(GPIOI_PIN8) | \ + PIN_OTYPE_PUSHPULL(GPIOI_PIN9) | \ + PIN_OTYPE_PUSHPULL(GPIOI_PIN10) | \ + PIN_OTYPE_PUSHPULL(GPIOI_PIN11) | \ + PIN_OTYPE_PUSHPULL(GPIOI_PIN12) | \ + PIN_OTYPE_PUSHPULL(GPIOI_PIN13) | \ + PIN_OTYPE_PUSHPULL(GPIOI_PIN14) | \ + PIN_OTYPE_PUSHPULL(GPIOI_PIN15)) +#define VAL_GPIOI_OSPEEDR (PIN_OSPEED_HIGH(GPIOI_PIN0) | \ + PIN_OSPEED_HIGH(GPIOI_PIN1) | \ + PIN_OSPEED_HIGH(GPIOI_PIN2) | \ + PIN_OSPEED_HIGH(GPIOI_PIN3) | \ + PIN_OSPEED_HIGH(GPIOI_PIN4) | \ + PIN_OSPEED_HIGH(GPIOI_PIN5) | \ + PIN_OSPEED_HIGH(GPIOI_PIN6) | \ + PIN_OSPEED_HIGH(GPIOI_PIN7) | \ + PIN_OSPEED_HIGH(GPIOI_PIN8) | \ + PIN_OSPEED_HIGH(GPIOI_PIN9) | \ + PIN_OSPEED_HIGH(GPIOI_PIN10) | \ + PIN_OSPEED_HIGH(GPIOI_PIN11) | \ + PIN_OSPEED_HIGH(GPIOI_PIN12) | \ + PIN_OSPEED_HIGH(GPIOI_PIN13) | \ + PIN_OSPEED_HIGH(GPIOI_PIN14) | \ + PIN_OSPEED_HIGH(GPIOI_PIN15)) +#define VAL_GPIOI_PUPDR (PIN_PUPDR_PULLUP(GPIOI_PIN0) | \ + PIN_PUPDR_PULLUP(GPIOI_PIN1) | \ + PIN_PUPDR_PULLUP(GPIOI_PIN2) | \ + PIN_PUPDR_PULLUP(GPIOI_PIN3) | \ + PIN_PUPDR_PULLUP(GPIOI_PIN4) | \ + PIN_PUPDR_PULLUP(GPIOI_PIN5) | \ + PIN_PUPDR_PULLUP(GPIOI_PIN6) | \ + PIN_PUPDR_PULLUP(GPIOI_PIN7) | \ + PIN_PUPDR_PULLUP(GPIOI_PIN8) | \ + PIN_PUPDR_PULLUP(GPIOI_PIN9) | \ + PIN_PUPDR_PULLUP(GPIOI_PIN10) | \ + PIN_PUPDR_PULLUP(GPIOI_PIN11) | \ + PIN_PUPDR_PULLUP(GPIOI_PIN12) | \ + PIN_PUPDR_PULLUP(GPIOI_PIN13) | \ + PIN_PUPDR_PULLUP(GPIOI_PIN14) | \ + PIN_PUPDR_PULLUP(GPIOI_PIN15)) +#define VAL_GPIOI_ODR (PIN_ODR_HIGH(GPIOI_PIN0) | \ + PIN_ODR_HIGH(GPIOI_PIN1) | \ + PIN_ODR_HIGH(GPIOI_PIN2) | \ + PIN_ODR_HIGH(GPIOI_PIN3) | \ + PIN_ODR_HIGH(GPIOI_PIN4) | \ + PIN_ODR_HIGH(GPIOI_PIN5) | \ + PIN_ODR_HIGH(GPIOI_PIN6) | \ + PIN_ODR_HIGH(GPIOI_PIN7) | \ + PIN_ODR_HIGH(GPIOI_PIN8) | \ + PIN_ODR_HIGH(GPIOI_PIN9) | \ + PIN_ODR_HIGH(GPIOI_PIN10) | \ + PIN_ODR_HIGH(GPIOI_PIN11) | \ + PIN_ODR_HIGH(GPIOI_PIN12) | \ + PIN_ODR_HIGH(GPIOI_PIN13) | \ + PIN_ODR_HIGH(GPIOI_PIN14) | \ + PIN_ODR_HIGH(GPIOI_PIN15)) +#define VAL_GPIOI_AFRL (PIN_AFIO_AF(GPIOI_PIN0, 0U) | \ + PIN_AFIO_AF(GPIOI_PIN1, 0U) | \ + PIN_AFIO_AF(GPIOI_PIN2, 0U) | \ + PIN_AFIO_AF(GPIOI_PIN3, 0U) | \ + PIN_AFIO_AF(GPIOI_PIN4, 0U) | \ + PIN_AFIO_AF(GPIOI_PIN5, 0U) | \ + PIN_AFIO_AF(GPIOI_PIN6, 0U) | \ + PIN_AFIO_AF(GPIOI_PIN7, 0U)) +#define VAL_GPIOI_AFRH (PIN_AFIO_AF(GPIOI_PIN8, 0U) | \ + PIN_AFIO_AF(GPIOI_PIN9, 0U) | \ + PIN_AFIO_AF(GPIOI_PIN10, 0U) | \ + PIN_AFIO_AF(GPIOI_PIN11, 0U) | \ + PIN_AFIO_AF(GPIOI_PIN12, 0U) | \ + PIN_AFIO_AF(GPIOI_PIN13, 0U) | \ + PIN_AFIO_AF(GPIOI_PIN14, 0U) | \ + PIN_AFIO_AF(GPIOI_PIN15, 0U)) + + +#if !defined(_FROM_ASM_) +#ifdef __cplusplus +extern "C" { +#endif + void boardInit(void); +#ifdef __cplusplus +} +#endif +#endif /* _FROM_ASM_ */ + +#endif /* BOARD_H */ diff --git a/keyboards/matrix/abelx/boards/abelx_bd/board.mk b/keyboards/matrix/abelx/boards/abelx_bd/board.mk new file mode 100644 index 000000000000..a4404001f4f2 --- /dev/null +++ b/keyboards/matrix/abelx/boards/abelx_bd/board.mk @@ -0,0 +1,9 @@ +# List of all the board related files. +BOARDSRC = $(BOARD_PATH)/boards/abelx_bd/board.c + +# Required include directories +BOARDINC = $(BOARD_PATH)/boards/abelx_bd + +# Shared variables +ALLCSRC += $(BOARDSRC) +ALLINC += $(BOARDINC) diff --git a/keyboards/matrix/abelx/bootloader_defs.h b/keyboards/matrix/abelx/bootloader_defs.h new file mode 100644 index 000000000000..20b8f73e6f7d --- /dev/null +++ b/keyboards/matrix/abelx/bootloader_defs.h @@ -0,0 +1,7 @@ +/* Address for jumping to bootloader on STM32 chips. */ +/* It is chip dependent, the correct number can be looked up here: + * http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf + * This also requires a patch to chibios: + * /tmk_core/tool/chibios/ch-bootloader-jump.patch + */ +#define STM32_BOOTLOADER_ADDRESS 0x1FFF0000 diff --git a/keyboards/matrix/abelx/chconf.h b/keyboards/matrix/abelx/chconf.h new file mode 100644 index 000000000000..0d6c21a96480 --- /dev/null +++ b/keyboards/matrix/abelx/chconf.h @@ -0,0 +1,27 @@ +/* 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/matrix/abelx/chconf.h -r platforms/chibios/boards/common/configs/chconf.h` + */ + +#pragma once + +#define CH_CFG_ST_FREQUENCY 10000 + +#include_next + diff --git a/keyboards/matrix/abelx/config.h b/keyboards/matrix/abelx/config.h new file mode 100644 index 000000000000..d3c6a569b138 --- /dev/null +++ b/keyboards/matrix/abelx/config.h @@ -0,0 +1,108 @@ +/** + * config.h + * + * Copyright 2020 astro + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4D58 // MX +#define PRODUCT_ID 0xAB87 // abelx keyboard +#define DEVICE_VER 0x0001 +#define MANUFACTURER MATRIX +#define PRODUCT ABELX + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 16 + +#define DEF_PIN(port, pin) (((port) << 8) | pin) +#define GET_PORT(pp) (((pp) >> 8) & 0xFF) +#define GET_PIN(pp) ((pp) & 0xFF) + +#define CUSTOM_MATRIX_ROW_PINS { \ + DEF_PIN(TCA6424_PORT2, 7), \ + DEF_PIN(TCA6424_PORT2, 6), \ + DEF_PIN(TCA6424_PORT2, 0), \ + DEF_PIN(TCA6424_PORT2, 2), \ + DEF_PIN(TCA6424_PORT2, 4), \ + DEF_PIN(TCA6424_PORT2, 5) } + +#define CUSTOM_MATRIX_COL_PINS { \ + DEF_PIN(TCA6424_PORT2, 1), \ + DEF_PIN(TCA6424_PORT1, 7), \ + DEF_PIN(TCA6424_PORT1, 6), \ + DEF_PIN(TCA6424_PORT1, 5), \ + DEF_PIN(TCA6424_PORT1, 4), \ + DEF_PIN(TCA6424_PORT1, 3), \ + DEF_PIN(TCA6424_PORT1, 2), \ + DEF_PIN(TCA6424_PORT1, 1), \ + DEF_PIN(TCA6424_PORT1, 0), \ + DEF_PIN(TCA6424_PORT0, 7), \ + DEF_PIN(TCA6424_PORT0, 6), \ + DEF_PIN(TCA6424_PORT0, 5), \ + DEF_PIN(TCA6424_PORT0, 4), \ + DEF_PIN(TCA6424_PORT0, 3), \ + DEF_PIN(TCA6424_PORT0, 2), \ + DEF_PIN(TCA6424_PORT0, 1) } + +#define ROW1_MASK 0x80 +#define ROW2_MASK 0x40 +#define ROW3_MASK 0x01 +#define ROW4_MASK 0x04 +#define ROW5_MASK 0x10 +#define ROW6_MASK 0x20 +#define ROW_PORT TCA6424_PORT2 + +#define COL1_MASK 0x02 +#define COL2_MASK 0x80 +#define COL3_MASK 0x40 +#define COL4_MASK 0x20 +#define COL5_MASK 0x10 +#define COL6_MASK 0x08 +#define COL7_MASK 0x04 +#define COL8_MASK 0x02 +#define COL9_MASK 0x01 +#define COL10_MASK 0x80 +#define COL11_MASK 0x40 +#define COL12_MASK 0x20 +#define COL13_MASK 0x10 +#define COL14_MASK 0x08 +#define COL15_MASK 0x04 +#define COL16_MASK 0x02 + +#define UNUSED_PINS + +#define DIODE_DIRECTION COL2ROW +#define DEBOUNCE 5 + +// i2c setting +#define USE_I2CV1 +#define I2C1_SCL 8 +#define I2C1_SDA 9 +#define I2C1_CLOCK_SPEED 400000 +#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2 + + +// rgb light setting +#define RGBLED_NUM 9 +#define RGB_DI_PIN B4 +#define RGBLIGHT_ANIMATIONS + +#define AW9523B_RGB_NUM 4 + +#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP FALSE diff --git a/keyboards/matrix/abelx/halconf.h b/keyboards/matrix/abelx/halconf.h new file mode 100644 index 000000000000..6fcfd84f3a16 --- /dev/null +++ b/keyboards/matrix/abelx/halconf.h @@ -0,0 +1,31 @@ +/* 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/matrix/abelx/halconf.h -r platforms/chibios/boards/common/configs/halconf.h` + */ + +#pragma once + +#define HAL_USE_I2C TRUE + +#define HAL_USE_RTC TRUE + +#define SERIAL_USB_BUFFERS_SIZE 256 + +#include_next + diff --git a/keyboards/matrix/abelx/info.json b/keyboards/matrix/abelx/info.json new file mode 100644 index 000000000000..18bed65bc07c --- /dev/null +++ b/keyboards/matrix/abelx/info.json @@ -0,0 +1,15 @@ +{ + "keyboard_name": "Matrix ABELX keyboard", + "url": "", + "maintainer": "qmk", + "width": 18.25, + "height": 6.5, + "layouts": { + "LAYOUT_tkl_ansi": { + "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"@", "x":2, "y":1.5}, {"label":"#", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"Backspace", "x":13, "y":1.5, "w":2}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.25, "y":1.5}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":6.5, "y":2.5}, {"label":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"|", "x":13.5, "y":2.5, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, {"label":"Shift", "x":0, "y":4.5, "w":2.25}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"N", "x":7.25, "y":4.5}, {"label":"M", "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":"Shift", "x":12.25, "y":4.5, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, {"label":"Win", "x":1.25, "y":5.5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"label":"Alt", "x":10, "y":5.5, "w":1.25}, {"label":"Win", "x":11.25, "y":5.5, "w":1.25},{"label":"Menu", "x":12.5, "y":5.5, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}] + }, + "LAYOUT_tkl_iso": { + "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"\u00ac", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"\"", "x":2, "y":1.5}, {"label":"\u00a3", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"Backspace", "x":13, "y":1.5, "w":2}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.25, "y":1.5}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":6.5, "y":2.5}, {"label":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"@", "x":11.75, "y":3.5}, {"label":"~", "x":12.75, "y":3.5}, {"label":"Enter", "x":13.75, "y":2.5, "w":1.25, "h":2}, {"label":"Shift", "x":0, "y":4.5, "w":1.25}, {"label":"|", "x":1.25, "y":4.5}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"N", "x":7.25, "y":4.5}, {"label":"M", "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":"Shift", "x":12.25, "y":4.5, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, {"label":"Win", "x":1.25, "y":5.5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"label":"Alt", "x":10, "y":5.5, "w":1.25}, {"label":"Win", "x":11.25, "y":5.5, "w":1.25},{"label":"Menu", "x":12.5, "y":5.5, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}] + } + } +} diff --git a/keyboards/matrix/abelx/keymaps/default/keymap.c b/keyboards/matrix/abelx/keymaps/default/keymap.c new file mode 100644 index 000000000000..ecba6d6d153e --- /dev/null +++ b/keyboards/matrix/abelx/keymaps/default/keymap.c @@ -0,0 +1,41 @@ +/** + * keymap.c + * + * Copyright 2020 astro + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0]=LAYOUT_tkl_ansi( + + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, LT(1,KC_PAUS), + + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT,KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT), + + [1]=LAYOUT_tkl_ansi( + KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_NLCK, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, + RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, + _______, _______, _______, KC_MPLY, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT), +}; diff --git a/keyboards/matrix/abelx/keymaps/iso/keymap.c b/keyboards/matrix/abelx/keymaps/iso/keymap.c new file mode 100644 index 000000000000..81cfcd74d21d --- /dev/null +++ b/keyboards/matrix/abelx/keymaps/iso/keymap.c @@ -0,0 +1,39 @@ +/** + * keymap.c + * + * Copyright 2020 astro + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0]=LAYOUT_tkl_iso( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, LT(1,KC_PAUS), + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_LGUI, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT,KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [1]=LAYOUT_tkl_iso( + KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_NLCK, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, + RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, + _______, _______, _______, KC_MPLY, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT), +}; diff --git a/keyboards/matrix/abelx/ld/abelx_boot.ld b/keyboards/matrix/abelx/ld/abelx_boot.ld new file mode 100644 index 000000000000..3abdd1529be4 --- /dev/null +++ b/keyboards/matrix/abelx/ld/abelx_boot.ld @@ -0,0 +1,85 @@ +/* + ChibiOS - Copyright (C) 2006..2016 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 : org = 0x08020000, len = 512k-128k + flash1 : org = 0x00000000, len = 0 + flash2 : org = 0x00000000, len = 0 + flash3 : org = 0x00000000, len = 0 + flash4 : org = 0x00000000, len = 0 + flash5 : org = 0x00000000, len = 0 + flash6 : org = 0x00000000, len = 0 + flash7 : org = 0x00000000, len = 0 + ram0 : org = 0x20000000, len = 128k + ram1 : org = 0x00000000, len = 0 + ram2 : org = 0x00000000, len = 0 + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x00000000, len = 0 + ram5 : org = 0x00000000, len = 0 + ram6 : org = 0x00000000, len = 0 + ram7 : 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", flash0); +REGION_ALIAS("XTORS_FLASH_LMA", flash0); + +/* Flash region to be used for code text.*/ +REGION_ALIAS("TEXT_FLASH", flash0); +REGION_ALIAS("TEXT_FLASH_LMA", flash0); + +/* Flash region to be used for read only data.*/ +REGION_ALIAS("RODATA_FLASH", flash0); +REGION_ALIAS("RODATA_FLASH_LMA", flash0); + +/* Flash region to be used for various.*/ +REGION_ALIAS("VARIOUS_FLASH", flash0); +REGION_ALIAS("VARIOUS_FLASH_LMA", flash0); + +/* Flash region to be used for RAM(n) initialization data.*/ +REGION_ALIAS("RAM_INIT_FLASH_LMA", flash0); + +/* 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", flash0); + +/* 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/keyboards/matrix/abelx/matrix.c b/keyboards/matrix/abelx/matrix.c new file mode 100644 index 000000000000..d8d87b7d895d --- /dev/null +++ b/keyboards/matrix/abelx/matrix.c @@ -0,0 +1,108 @@ +/** + * matrix.c + * + * Copyright 2020 astro + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include +#include +#include +#include "quantum.h" +#include "matrix.h" +#include "tca6424.h" +#include "abelx.h" + +static const uint16_t col_pins[MATRIX_COLS] = CUSTOM_MATRIX_COL_PINS; + +void matrix_init_custom(void) +{ + tca6424_init(); + // set port0 + tca6424_write_config(TCA6424_PORT0, 0); + // set port1 + tca6424_write_config(TCA6424_PORT1, 0); + // set port2 + tca6424_write_config(TCA6424_PORT2, 0xF5); + + // clear output + tca6424_write_port(TCA6424_PORT0, 0); + tca6424_write_port(TCA6424_PORT1, 0); + tca6424_write_port(TCA6424_PORT2, 0); +} + + +static uint8_t row_mask[] = {ROW1_MASK,ROW2_MASK,ROW3_MASK,ROW4_MASK,ROW5_MASK,ROW6_MASK}; +static uint8_t col_mask[] = {COL1_MASK, COL2_MASK, COL3_MASK, COL4_MASK, COL5_MASK, COL6_MASK, COL7_MASK, COL8_MASK, COL9_MASK, COL10_MASK, COL11_MASK, COL12_MASK, COL13_MASK, COL14_MASK, COL15_MASK, COL16_MASK}; + +bool matrix_scan_custom(matrix_row_t current_matrix[]) +{ + bool changed = false; + uint8_t p0_data = tca6424_read_port(TCA6424_PORT0); + + for (int col = 0; col < MATRIX_COLS; col++) { + // Select col and wait for col selecton to stabilize + switch(col) { + case 0: + set_pin(col_pins[col]); + break; + case 1 ... 8: + tca6424_write_port(TCA6424_PORT1, col_mask[col]); + break; + default: + tca6424_write_port(TCA6424_PORT0, col_mask[col]|(p0_data&0x01)); + break; + } + matrix_io_delay(); + + // read row port for all rows + uint8_t row_value = tca6424_read_port(ROW_PORT); + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + uint8_t tmp = row; + // Store last value of row prior to reading + matrix_row_t last_row_value = current_matrix[tmp]; + + // Check row pin state + if (row_value & row_mask[row]) { + // Pin HI, set col bit + current_matrix[tmp] |= (1 << col); + } else { + // Pin LOW, clear col bit + current_matrix[tmp] &= ~(1 << col); + } + + // Determine if the matrix changed state + if ((last_row_value != current_matrix[tmp]) && !(changed)) { + changed = true; + } + } + // Unselect col + switch(col) { + case 0: + clear_pin(col_pins[col]); + break; + case 8: + tca6424_write_port(TCA6424_PORT1, 0); + break; + case 15: + tca6424_write_port(TCA6424_PORT0, p0_data&0x01); + break; + default: + break; + } + } + + return changed; +} diff --git a/keyboards/matrix/abelx/mcuconf.h b/keyboards/matrix/abelx/mcuconf.h new file mode 100644 index 000000000000..a22ce51c4c25 --- /dev/null +++ b/keyboards/matrix/abelx/mcuconf.h @@ -0,0 +1,253 @@ +/* + 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 STM32F411_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 8 +#define STM32_PLLN_VALUE 192 +#define STM32_PLLP_VALUE 2 +#define STM32_PLLQ_VALUE 4 +#define STM32_HPRE STM32_HPRE_DIV1 +#define STM32_PPRE1 STM32_PPRE1_DIV2 +#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 + +#define STM32_IRQ_TIM1_BRK_TIM9_PRIORITY 7 +#define STM32_IRQ_TIM1_UP_TIM10_PRIORITY 7 +#define STM32_IRQ_TIM1_TRGCO_TIM11_PRIORITY 7 +#define STM32_IRQ_TIM1_CC_PRIORITY 7 +#define STM32_IRQ_TIM2_PRIORITY 7 +#define STM32_IRQ_TIM3_PRIORITY 7 +#define STM32_IRQ_TIM4_PRIORITY 7 +#define STM32_IRQ_TIM5_PRIORITY 7 + +#define STM32_IRQ_USART1_PRIORITY 12 +#define STM32_IRQ_USART2_PRIORITY 12 +#define STM32_IRQ_USART6_PRIORITY 12 + +/* + * ADC driver system settings. + */ +#define STM32_ADC_ADCPRE ADC_CCR_ADCPRE_DIV4 +#define STM32_ADC_USE_ADC1 FALSE +#define STM32_ADC_ADC1_DMA_STREAM STM32_DMA_STREAM_ID(2, 4) +#define STM32_ADC_ADC1_DMA_PRIORITY 2 +#define STM32_ADC_IRQ_PRIORITY 6 +#define STM32_ADC_ADC1_DMA_IRQ_PRIORITY 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 TRUE +#define STM32_GPT_USE_TIM5 FALSE +#define STM32_GPT_USE_TIM9 FALSE +#define STM32_GPT_USE_TIM10 FALSE +#define STM32_GPT_USE_TIM11 FALSE + +/* + * I2C driver system settings. + */ +#define STM32_I2C_USE_I2C1 TRUE +#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_TIM9 FALSE +#define STM32_ICU_USE_TIM10 FALSE +#define STM32_ICU_USE_TIM11 FALSE + +/* + * 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_TIM9 FALSE +#define STM32_PWM_USE_TIM10 FALSE +#define STM32_PWM_USE_TIM11 FALSE + +/* + * 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 + +/* + * SERIAL driver system settings. + */ +#define STM32_SERIAL_USE_USART1 FALSE +#define STM32_SERIAL_USE_USART2 FALSE +#define STM32_SERIAL_USE_USART6 FALSE + +/* + * 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_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_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_DMA_PRIORITY 0 +#define STM32_UART_USART2_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_OTG1_IRQ_PRIORITY 14 +#define STM32_USB_OTG1_RX_FIFO_SIZE 512 +#define STM32_USB_HOST_WAKEUP_DURATION 2 + +/* + * WDG driver system settings. + */ +#define STM32_WDG_USE_IWDG FALSE + +#endif /* MCUCONF_H */ diff --git a/keyboards/matrix/abelx/readme.md b/keyboards/matrix/abelx/readme.md new file mode 100644 index 000000000000..e02438a1a60e --- /dev/null +++ b/keyboards/matrix/abelx/readme.md @@ -0,0 +1,11 @@ +# Matrix ABELX keyboard + +* Keyboard Maintainer: [astro](https://github.com/yulei) +* Hardware Supported: Matrix ABELX keyboard +* Hardware Availability: + +Make example for this keyboard (after setting up your build environment): + + make matrix/abelx: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/matrix/abelx/rules.mk b/keyboards/matrix/abelx/rules.mk new file mode 100644 index 000000000000..e38c88077ec4 --- /dev/null +++ b/keyboards/matrix/abelx/rules.mk @@ -0,0 +1,55 @@ +## chip/board settings +# - the next two should match the directories in +# /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) +MCU_FAMILY = STM32 +MCU_SERIES = STM32F4xx + +# Linker script to use +# - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/ +# or /ld/ +MCU_LDSCRIPT = abelx_boot + +# Startup code to use +# - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/ +MCU_STARTUP = stm32f4xx + +# Board: it should exist either in /os/hal/boards/ +# or /boards +BOARD = abelx_bd + +# Cortex version +MCU = cortex-m4 + +# ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 +ARMV = 7 + +USE_FPU = yes + +# Vector table for application +# 0x00000000-0x00001000 area is occupied by bootlaoder.*/ +OPT_DEFS = + +# Options to pass to dfu-util when flashing +#DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave +#DFU_SUFFIX_ARGS = -p DF11 -v 0483 + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output +NO_USB_STARTUP_CHECK = yes # Disable initialization only when usb is plugged in + +CUSTOM_MATRIX = lite +# project specific files +SRC += matrix.c tca6424.c aw9523b.c +QUANTUM_LIB_SRC += i2c_master.c diff --git a/keyboards/matrix/abelx/tca6424.c b/keyboards/matrix/abelx/tca6424.c new file mode 100644 index 000000000000..44dc7909d821 --- /dev/null +++ b/keyboards/matrix/abelx/tca6424.c @@ -0,0 +1,117 @@ +/** + * @file tca6424.c + * @author astro + * @brief driver for the tca6424 + * + * Copyright 2020 astro + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "tca6424.h" +#include "i2c_master.h" + +#define TCA6424_INPUT_PORT0 0x0 +#define TCA6424_INPUT_PORT1 0x01 +#define TCA6424_INPUT_PORT2 0x02 + +#define TCA6424_OUTPUT_PORT0 0x04 +#define TCA6424_OUTPUT_PORT1 0x05 +#define TCA6424_OUTPUT_PORT2 0x06 + +#define TCA6424_POLARITY_PORT0 0x08 +#define TCA6424_POLARITY_PORT1 0x09 +#define TCA6424_POLARITY_PORT2 0x0A + +#define TCA6424_CONF_PORT0 0x0C +#define TCA6424_CONF_PORT1 0x0D +#define TCA6424_CONF_PORT2 0x0E + +#define TIMEOUT 100 + +void tca6424_init(void) +{ + i2c_init(); +} + +static void write_port(uint8_t p, uint8_t d) +{ + i2c_writeReg(TCA6424_ADDR, p, &d, 1, TIMEOUT); +} + +static uint8_t read_port(uint8_t port) +{ + uint8_t data = 0; + i2c_readReg(TCA6424_ADDR, port, &data, 1, TIMEOUT); + return data; +} + +void tca6424_write_config(TCA6424_PORT port, uint8_t data) +{ + switch(port) { + case TCA6424_PORT0: + write_port(TCA6424_CONF_PORT0, data); + break; + case TCA6424_PORT1: + write_port(TCA6424_CONF_PORT1, data); + break; + case TCA6424_PORT2: + write_port(TCA6424_CONF_PORT2, data); + break; + } +} + +void tca6424_write_polarity(TCA6424_PORT port, uint8_t data) +{ + switch(port) { + case TCA6424_PORT0: + write_port(TCA6424_POLARITY_PORT0, data); + break; + case TCA6424_PORT1: + write_port(TCA6424_POLARITY_PORT1, data); + break; + case TCA6424_PORT2: + write_port(TCA6424_POLARITY_PORT2, data); + break; + } +} + +void tca6424_write_port(TCA6424_PORT port, uint8_t data) +{ + switch(port) { + case TCA6424_PORT0: + write_port(TCA6424_OUTPUT_PORT0, data); + break; + case TCA6424_PORT1: + write_port(TCA6424_OUTPUT_PORT1, data); + break; + case TCA6424_PORT2: + write_port(TCA6424_OUTPUT_PORT2, data); + break; + } +} + +uint8_t tca6424_read_port(TCA6424_PORT port) +{ + switch(port) { + case TCA6424_PORT0: + return read_port(TCA6424_INPUT_PORT0); + case TCA6424_PORT1: + return read_port(TCA6424_INPUT_PORT1); + case TCA6424_PORT2: + return read_port(TCA6424_INPUT_PORT2); + } + + return 0; +} diff --git a/keyboards/matrix/abelx/tca6424.h b/keyboards/matrix/abelx/tca6424.h new file mode 100644 index 000000000000..519c6370eeb7 --- /dev/null +++ b/keyboards/matrix/abelx/tca6424.h @@ -0,0 +1,42 @@ +/** + * @file tca6424.h + * @author astro + * @brief driver for the tca6424 + * + * Copyright 2020 astro + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include + +#ifndef TCA6424_ADDR + #define TCA6424_ADDR 0x44 +#endif + +typedef enum { + TCA6424_PORT0 = 0, + TCA6424_PORT1, + TCA6424_PORT2, +} TCA6424_PORT; + +void tca6424_init(void); + +void tca6424_write_config(TCA6424_PORT port, uint8_t data); +void tca6424_write_polarity(TCA6424_PORT port, uint8_t data); + +void tca6424_write_port(TCA6424_PORT port, uint8_t data); +uint8_t tca6424_read_port(TCA6424_PORT port); diff --git a/keyboards/matrix/cain_re/info.json b/keyboards/matrix/cain_re/info.json index 3f65b7de7799..8cf49e7fc8f7 100644 --- a/keyboards/matrix/cain_re/info.json +++ b/keyboards/matrix/cain_re/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Matrix Cain Keyboard", "url": "", "maintainer": "qmk", - "width": 23, - "height": 6.5, "layouts": { "LAYOUT_all": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":20, "y":0}, {"label":"Scroll Lock", "x":21, "y":0}, {"label":"Pause", "x":22, "y":0}, {"label":"~", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"@", "x":2, "y":1.5}, {"label":"#", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"Backspace", "x":13, "y":1.5, "w":2}, {"label":"Num Lock", "x":15.5, "y":1.5}, {"label":"/", "x":16.5, "y":1.5}, {"label":"*", "x":17.5, "y":1.5}, {"label":"-", "x":18.5, "y":1.5}, {"label":"Insert", "x":20, "y":1.5}, {"label":"Home", "x":21, "y":1.5}, {"label":"PgUp", "x":22, "y":1.5}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":6.5, "y":2.5}, {"label":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"|", "x":13.5, "y":2.5, "w":1.5}, {"label":"7", "x":15.5, "y":2.5}, {"label":"8", "x":16.5, "y":2.5}, {"label":"9", "x":17.5, "y":2.5}, {"label":"+", "x":18.5, "y":2.5}, {"label":"Delete", "x":20, "y":2.5}, {"label":"End", "x":21, "y":2.5}, {"label":"PgDn", "x":22, "y":2.5}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, {"label":"4", "x":15.5, "y":3.5}, {"label":"5", "x":16.5, "y":3.5}, {"label":"6", "x":17.5, "y":3.5}, {"label":"+", "x":18.5, "y":3.5}, {"label":"Shift", "x":0, "y":4.5, "w":2.25}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"N", "x":7.25, "y":4.5}, {"label":"M", "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":"Shift", "x":12.25, "y":4.5, "w":2.75}, {"label":"1", "x":15.5, "y":4.5}, {"label":"2", "x":16.5, "y":4.5}, {"label":"3", "x":17.5, "y":4.5}, {"label":"Enter", "x":18.5, "y":4.5}, {"label":"\u2191", "x":21, "y":4.5}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.5}, {"label":"Win", "x":1.5, "y":5.5}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":7}, {"label":"Alt", "x":11, "y":5.5, "w":1.5}, {"label":"Win", "x":12.5, "y":5.5}, {"label":"Ctrl", "x":13.5, "y":5.5, "w":1.5}, {"label":"0", "x":15.5, "y":5.5}, {"label":"0", "x":16.5, "y":5.5}, {"label":".", "x":17.5, "y":5.5}, {"label":"Enter", "x":18.5, "y":5.5}, {"label":"\u2190", "x":20, "y":5.5}, {"label":"\u2193", "x":21, "y":5.5}, {"label":"\u2192", "x":22, "y":5.5}] diff --git a/keyboards/matrix/cain_re/rules.mk b/keyboards/matrix/cain_re/rules.mk index 9bbb324e7ca9..6f114436f0b8 100644 --- a/keyboards/matrix/cain_re/rules.mk +++ b/keyboards/matrix/cain_re/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/matrix/falcon/config.h b/keyboards/matrix/falcon/config.h new file mode 100644 index 000000000000..afd0b5d3efa0 --- /dev/null +++ b/keyboards/matrix/falcon/config.h @@ -0,0 +1,72 @@ +/** + * config.h + * + * Copyright 2021 astro + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4D58 +#define PRODUCT_ID 0x474E +#define DEVICE_VER 0x0001 +#define MANUFACTURER Matrix Lab +#define PRODUCT Falcon + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 13 + +#define MATRIX_ROW_PINS { F1, B7, F7, F5, F4} +#define MATRIX_COL_PINS { F6, B3, B2, B1, B0, C7, C6, B6, B5, B4, D7, D6, D4} + +#define UNUSED_PINS +#define DIODE_DIRECTION ROW2COL + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +//rgb light setting +#define RGBLED_NUM 4 +#define RGB_DI_PIN D1 +#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 + +//pin setting +#define LED_CAPS_LOCK_PIN E2 +#define LED_POWER_PIN D5 +#define CHG_EN_PIN E6 +#define BATTERY_LEVEL_PIN F0 diff --git a/keyboards/matrix/falcon/falcon.c b/keyboards/matrix/falcon/falcon.c new file mode 100644 index 000000000000..0d779443153e --- /dev/null +++ b/keyboards/matrix/falcon/falcon.c @@ -0,0 +1,28 @@ +/** + * falcon.c + * Copyright 2021 astro + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +#include "falcon.h" + +void matrix_init_kb(void) +{ + // enable charge + setPinOutput(CHG_EN_PIN); + writePinHigh(CHG_EN_PIN); + + // enable led power + setPinOutput(LED_POWER_PIN); + writePinHigh(LED_POWER_PIN); + +} diff --git a/keyboards/matrix/falcon/falcon.h b/keyboards/matrix/falcon/falcon.h new file mode 100644 index 000000000000..f98ba095042d --- /dev/null +++ b/keyboards/matrix/falcon/falcon.h @@ -0,0 +1,51 @@ +/** + * falcon.h + * Copyright 2021 astro + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + You should have received a copy of the GNU General Public License + along with this program. If not, see . + * + */ +#pragma once + +#include "quantum.h" + + +// This a shortcut to help you visually see your layout. +// The first section contains all of the arguements +// The second converts the arguments into a two-dimensional array + +#define LAYOUT_60_hhkb( \ + 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, \ + k41, k42, k43, k44, k45) \ +{ \ + { 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,KC_NO}, \ + { k30,KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c}, \ + {KC_NO, k41, k42,KC_NO,KC_NO, k43, k44, k45, k0e, k3d, k2d, k1d, k0d} \ +} + +#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, \ + k41, k42, k43, k44, k45) \ +{ \ + { 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}, \ + {KC_NO, k41, k42,KC_NO,KC_NO, k43, k44, k45, k0e, k3d, k2d, k1d, k0d} \ +} diff --git a/keyboards/matrix/falcon/info.json b/keyboards/matrix/falcon/info.json new file mode 100644 index 000000000000..aeaaa7f9f2e2 --- /dev/null +++ b/keyboards/matrix/falcon/info.json @@ -0,0 +1,145 @@ +{ + "keyboard_name": "Matrix Lab Falcon", + "url": "", + "maintainer": "yulei (Astro)", + "layouts": { + "LAYOUT_60_hhkb": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"!", "x":1, "y":0}, + {"label":"@", "x":2, "y":0}, + {"label":"#", "x":3, "y":0}, + {"label":"$", "x":4, "y":0}, + {"label":"%", "x":5, "y":0}, + {"label":"^", "x":6, "y":0}, + {"label":"&", "x":7, "y":0}, + {"label":"*", "x":8, "y":0}, + {"label":"(", "x":9, "y":0}, + {"label":")", "x":10, "y":0}, + {"label":"_", "x":11, "y":0}, + {"label":"+", "x":12, "y":0}, + {"label":"|", "x":13, "y":0}, + {"label":"~", "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":"Delete", "x":13.5, "y":1, "w":1.5}, + + {"label":"Control", "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":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"Fn", "x":14, "y":3}, + + {"label":"OS", "x":1.5, "y":4}, + {"label":"Alt", "x":2.5, "y":4, "w":1.5}, + {"label":"Space", "x":4, "y":4, "w":7}, + {"label":"Alt", "x":11, "y":4, "w":1.5}, + {"label":"OS", "x":12.5, "y":4} + ] + }, + "LAYOUT_all": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"!", "x":1, "y":0}, + {"label":"@", "x":2, "y":0}, + {"label":"#", "x":3, "y":0}, + {"label":"$", "x":4, "y":0}, + {"label":"%", "x":5, "y":0}, + {"label":"^", "x":6, "y":0}, + {"label":"&", "x":7, "y":0}, + {"label":"*", "x":8, "y":0}, + {"label":"(", "x":9, "y":0}, + {"label":")", "x":10, "y":0}, + {"label":"_", "x":11, "y":0}, + {"label":"+", "x":12, "y":0}, + {"label":"|", "x":13, "y":0}, + {"label":"~", "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":"Delete", "x":13.5, "y":1, "w":1.5}, + + {"label":"Control", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":":", "x":10.75, "y":2}, + {"label":"\"", "x":11.75, "y":2}, + {"label":"#~", "x":12.75, "y":2}, + {"label":"Enter", "x":13.75, "y":2, "w":1.25}, + + {"label":"Shift", "x":0, "y":3, "w":1.25}, + {"label":"\\|", "x":1.25, "y":3}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"Fn", "x":14, "y":3}, + + {"label":"OS", "x":1.5, "y":4}, + {"label":"Alt", "x":2.5, "y":4, "w":1.5}, + {"label":"Space", "x":4, "y":4, "w":7}, + {"label":"Alt", "x":11, "y":4, "w":1.5}, + {"label":"OS", "x":12.5, "y":4} + ] + } + } +} diff --git a/keyboards/matrix/falcon/keymaps/default/keymap.c b/keyboards/matrix/falcon/keymaps/default/keymap.c new file mode 100644 index 000000000000..2860d515e97d --- /dev/null +++ b/keyboards/matrix/falcon/keymaps/default/keymap.c @@ -0,0 +1,32 @@ +/** + * keymap.c + * + Copyright 2021 astro + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_60_hhkb( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSLS, KC_GRV, + 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL), + + [1] = LAYOUT_60_hhkb( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,_______,KC_PSCR, + RESET, RGB_TOG,RGB_MOD,_______,KC_F13,KC_F14,_______,_______,_______,_______,_______,KC_PGUP,KC_PGDN,_______, + _______, _______,_______,_______,_______,_______,KC_LEFT,KC_DOWN, KC_UP,KC_RIGHT,KC_HOME,KC_END,_______, + _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______,_______, _______, _______,_______), +}; diff --git a/keyboards/matrix/falcon/keymaps/via/keymap.c b/keyboards/matrix/falcon/keymaps/via/keymap.c new file mode 100644 index 000000000000..03f9bab87b88 --- /dev/null +++ b/keyboards/matrix/falcon/keymaps/via/keymap.c @@ -0,0 +1,46 @@ +/** + * keymap.c + * + Copyright 2021 astro + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_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_DEL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_NUHS, 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_RSFT, MO(1), + KC_LCTL, KC_LALT, KC_SPC, KC_RGUI,KC_RALT), + + [1] = 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_DEL, + RESET, _______,KC_UP,_______,_______,_______,_______,_______,KC_PAUS,KC_SLCK,KC_PSCR,KC_PGUP,_______,KC_INS, + _______, KC_LEFT,KC_DOWN,KC_RIGHT,_______,_______,_______,_______, _______,_______,KC_HOME,KC_END,_______, _______, + _______,_______, _______,_______,_______,_______,_______,_______,_______,_______,_______,KC_PGDN,_______,_______, + _______,_______, _______, _______,MO(2)), + + [2] = LAYOUT_all( + _______, _______,_______, _______,_______, _______,_______, _______,_______, _______,_______, _______,_______,_______,_______, + _______, _______,KC_VOLU,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + KC_MUTE, KC_MPRV,KC_VOLD,KC_MNXT,_______,_______,_______,_______, _______,_______,_______,_______,_______, _______, + _______, _______, RGB_TOG,RGB_MOD,RGB_RMOD,RGB_VAI,RGB_VAD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,_______,_______,_______, + _______,_______, KC_MPLY, _______,_______), + + [3] = LAYOUT_all( + _______, _______,_______, _______,_______, _______,_______, _______,_______, _______,_______, _______,_______,_______,_______, + _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______, _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______, + _______, _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______,_______, _______, _______,_______) +}; diff --git a/keyboards/matrix/falcon/keymaps/via/rules.mk b/keyboards/matrix/falcon/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/matrix/falcon/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/matrix/falcon/readme.md b/keyboards/matrix/falcon/readme.md new file mode 100644 index 000000000000..c283650fcf59 --- /dev/null +++ b/keyboards/matrix/falcon/readme.md @@ -0,0 +1,25 @@ +# Falcon AVR + +PCB using atmega32u4 for the Matrix Falcon + +* Keyboard Maintainer: [astro](https://github.com/yulei) +* Hardware Supported: Matrix Falcon +* Hardware Availability: Limited GB + +Make example for this keyboard (after setting up your build environment): + + make matrix/falcon:default + +Flashing example for this keyboard: + + make matrix/falcon:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard. +* **Physical reset button**: Briefly short cut the *RST* pin with the *GND* pin (pin at the topside of the *RST*) on the back of the PCB. +* **Keycode in layout**: Press the key mapped to `RESET` if it is available. \ No newline at end of file diff --git a/keyboards/matrix/falcon/rules.mk b/keyboards/matrix/falcon/rules.mk new file mode 100644 index 000000000000..9e3caa141723 --- /dev/null +++ b/keyboards/matrix/falcon/rules.mk @@ -0,0 +1,21 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +LAYOUTS = 60_hhkb diff --git a/keyboards/matrix/m12og/rev1/info.json b/keyboards/matrix/m12og/rev1/info.json index 4bf8ed9d3f5e..25cfe6bafc9f 100644 --- a/keyboards/matrix/m12og/rev1/info.json +++ b/keyboards/matrix/m12og/rev1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Matrix 8XV1.2 OG rev1", "url": "", "maintainer": "kb-elmo", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/matrix/m12og/rev1/rules.mk b/keyboards/matrix/m12og/rev1/rules.mk index b146a35ac5a2..ba9cf10cb2bc 100644 --- a/keyboards/matrix/m12og/rev1/rules.mk +++ b/keyboards/matrix/m12og/rev1/rules.mk @@ -8,18 +8,15 @@ BOARD = m12og_v1 # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Bootmagic disabled because Matrix bootlaoder uses it's own reset mechanism +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # HAS TO BE ON! Otherwise the custom matrix doesn't work -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output CUSTOM_MATRIX = lite diff --git a/keyboards/matrix/m12og/rev2/info.json b/keyboards/matrix/m12og/rev2/info.json index 3b610d71571c..72514b09abd9 100644 --- a/keyboards/matrix/m12og/rev2/info.json +++ b/keyboards/matrix/m12og/rev2/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Matrix 8XV1.2 OG ISO/ANSI", "url": "", "maintainer": "qmk", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT_tkl_ansi": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"@", "x":2, "y":1.5}, {"label":"#", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"Backspace", "x":13, "y":1.5, "w":2}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.25, "y":1.5}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":6.5, "y":2.5}, {"label":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"|", "x":13.5, "y":2.5, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, {"label":"Shift", "x":0, "y":4.5, "w":2.25}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"N", "x":7.25, "y":4.5}, {"label":"M", "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":"Shift", "x":12.25, "y":4.5, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.5}, {"label":"Win", "x":1.5, "y":5.5}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":7}, {"label":"Alt", "x":11, "y":5.5, "w":1.5}, {"label":"Menu", "x":12.5, "y":5.5}, {"label":"Ctrl", "x":13.5, "y":5.5, "w":1.5}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}] diff --git a/keyboards/matrix/m12og/rev2/rules.mk b/keyboards/matrix/m12og/rev2/rules.mk index 58ec898a678c..5d302da8b8f7 100644 --- a/keyboards/matrix/m12og/rev2/rules.mk +++ b/keyboards/matrix/m12og/rev2/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality AUDIO_ENABLE = no diff --git a/keyboards/matrix/m20add/config.h b/keyboards/matrix/m20add/config.h index 3df5d78d5558..5d615dbad66f 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/info.json b/keyboards/matrix/m20add/info.json index 389916ce8e9b..90649d1c604e 100644 --- a/keyboards/matrix/m20add/info.json +++ b/keyboards/matrix/m20add/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Matrix 2.0 Additional", "url": "", "maintainer": "qmk", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT_tkl_ansi_tsangan": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"@", "x":2, "y":1.5}, {"label":"#", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"Backspace", "x":13, "y":1.5, "w":2}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.25, "y":1.5}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":6.5, "y":2.5}, {"label":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"|", "x":13.5, "y":2.5, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, {"label":"Shift", "x":0, "y":4.5, "w":2.25}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"N", "x":7.25, "y":4.5}, {"label":"M", "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":"Shift", "x":12.25, "y":4.5, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.5}, {"label":"Win", "x":1.5, "y":5.5}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":7}, {"label":"Alt", "x":11, "y":5.5, "w":1.5}, {"label":"Menu", "x":12.5, "y":5.5}, {"label":"Ctrl", "x":13.5, "y":5.5, "w":1.5}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}] diff --git a/keyboards/matrix/m20add/m20add.c b/keyboards/matrix/m20add/m20add.c index b38dad27cdfd..21f4f9b1ba87 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/m20add/mcuconf.h b/keyboards/matrix/m20add/mcuconf.h index 54a1f2661324..00216f6908fd 100644 --- a/keyboards/matrix/m20add/mcuconf.h +++ b/keyboards/matrix/m20add/mcuconf.h @@ -1,5 +1,5 @@ /* - ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio + ChibiOS - Copyright (C) 2006..2020 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. @@ -32,11 +32,15 @@ */ #define STM32F4xx_MCUCONF +#define STM32F411_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 @@ -60,9 +64,6 @@ #define STM32_I2SSRC STM32_I2SSRC_CKIN #define STM32_PLLI2SN_VALUE 192 #define STM32_PLLI2SR_VALUE 5 -#define STM32_PVD_ENABLE FALSE -#define STM32_PLS STM32_PLS_LEV0 -#define STM32_BKPRAM_ENABLE FALSE /* * IRQ system settings. @@ -82,6 +83,19 @@ #define STM32_IRQ_EXTI21_PRIORITY 15 #define STM32_IRQ_EXTI22_PRIORITY 15 +#define STM32_IRQ_TIM1_BRK_TIM9_PRIORITY 7 +#define STM32_IRQ_TIM1_UP_TIM10_PRIORITY 7 +#define STM32_IRQ_TIM1_TRGCO_TIM11_PRIORITY 7 +#define STM32_IRQ_TIM1_CC_PRIORITY 7 +#define STM32_IRQ_TIM2_PRIORITY 7 +#define STM32_IRQ_TIM3_PRIORITY 7 +#define STM32_IRQ_TIM4_PRIORITY 7 +#define STM32_IRQ_TIM5_PRIORITY 7 + +#define STM32_IRQ_USART1_PRIORITY 12 +#define STM32_IRQ_USART2_PRIORITY 12 +#define STM32_IRQ_USART6_PRIORITY 12 + /* * ADC driver system settings. */ @@ -101,14 +115,8 @@ #define STM32_GPT_USE_TIM4 TRUE #define STM32_GPT_USE_TIM5 FALSE #define STM32_GPT_USE_TIM9 FALSE +#define STM32_GPT_USE_TIM10 FALSE #define STM32_GPT_USE_TIM11 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_TIM9_IRQ_PRIORITY 7 -#define STM32_GPT_TIM11_IRQ_PRIORITY 7 /* * I2C driver system settings. @@ -155,29 +163,28 @@ #define STM32_ICU_USE_TIM4 FALSE #define STM32_ICU_USE_TIM5 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_TIM9_IRQ_PRIORITY 7 +#define STM32_ICU_USE_TIM10 FALSE +#define STM32_ICU_USE_TIM11 FALSE /* * 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_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_TIM9_IRQ_PRIORITY 7 +#define STM32_PWM_USE_TIM10 FALSE +#define STM32_PWM_USE_TIM11 FALSE + +/* + * 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 /* * SERIAL driver system settings. @@ -185,9 +192,6 @@ #define STM32_SERIAL_USE_USART1 FALSE #define STM32_SERIAL_USE_USART2 FALSE #define STM32_SERIAL_USE_USART6 FALSE -#define STM32_SERIAL_USART1_PRIORITY 12 -#define STM32_SERIAL_USART2_PRIORITY 12 -#define STM32_SERIAL_USART6_PRIORITY 12 /* * SPI driver system settings. @@ -227,9 +231,6 @@ #define STM32_UART_USART2_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6) #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_USART6_IRQ_PRIORITY 12 #define STM32_UART_USART1_DMA_PRIORITY 0 #define STM32_UART_USART2_DMA_PRIORITY 0 #define STM32_UART_USART6_DMA_PRIORITY 0 @@ -241,9 +242,7 @@ #define STM32_USB_USE_OTG1 TRUE #define STM32_USB_OTG1_IRQ_PRIORITY 14 #define STM32_USB_OTG1_RX_FIFO_SIZE 512 -#define STM32_USB_OTG_THREAD_PRIO LOWPRIO -#define STM32_USB_OTG_THREAD_STACK_SIZE 128 -#define STM32_USB_OTGFIFO_FILL_BASEPRI 0 +#define STM32_USB_HOST_WAKEUP_DURATION 2 /* * WDG driver system settings. diff --git a/keyboards/matrix/m20add/rgb_ring.c b/keyboards/matrix/m20add/rgb_ring.c index fa70dea7ebcb..7535cb5bd43c 100644 --- a/keyboards/matrix/m20add/rgb_ring.c +++ b/keyboards/matrix/m20add/rgb_ring.c @@ -21,7 +21,7 @@ #include #include "quantum.h" #include "rgblight.h" -#include "issi/is31fl3731.h" +#include "drivers/led/issi/is31fl3731.h" #include "i2c_master.h" @@ -30,7 +30,7 @@ #endif // rgb ring leds setting -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { /* Refer to IS31 manual for these locations * driver * | R location diff --git a/keyboards/matrix/m20add/rules.mk b/keyboards/matrix/m20add/rules.mk index d5516964d0ad..e5b9093e3751 100644 --- a/keyboards/matrix/m20add/rules.mk +++ b/keyboards/matrix/m20add/rules.mk @@ -13,7 +13,7 @@ BOARD = ST_NUCLEO64_F411RE # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 @@ -25,5 +25,5 @@ RGBLIGHT_ENABLE = yes CUSTOM_MATRIX = lite # project specific files -SRC += matrix.c tca6424.c rgb_ring.c issi/is31fl3731.c +SRC += matrix.c tca6424.c rgb_ring.c drivers/led/issi/is31fl3731.c QUANTUM_LIB_SRC += i2c_master.c diff --git a/keyboards/matrix/me/config.h b/keyboards/matrix/me/config.h new file mode 100644 index 000000000000..033198ef6551 --- /dev/null +++ b/keyboards/matrix/me/config.h @@ -0,0 +1,68 @@ +/** + * config.h + * + Copyright 2021 astro + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4D58 // MX +#define PRODUCT_ID 0x454D // ME +#define DEVICE_VER 0x0001 +#define MANUFACTURER Matrix Lab +#define PRODUCT Matrix ME + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 15 +#define MATRIX_ROW_PINS {D3, D5, D4, D6, B5, B4} +#define MATRIX_COL_PINS {B7, B3, B2, B1, B0, F0, F1, F4, F5, F6, F7, C7, C6, B6, D7} +#define UNUSED_PINS +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +//rgb light setting +#define RGBLED_NUM 4 +#define RGB_DI_PIN E2 +#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 + +// led pins +#define LED_CAPS_LOCK_PIN E6 +#define LED_SCROLL_LOCK_PIN D2 diff --git a/keyboards/matrix/me/info.json b/keyboards/matrix/me/info.json new file mode 100644 index 000000000000..cad1b3f70e1e --- /dev/null +++ b/keyboards/matrix/me/info.json @@ -0,0 +1,13 @@ +{ + "keyboard_name": "Matrix ME", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_tkl_ansi_tsangan": { + "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"@", "x":2, "y":1.5}, {"label":"#", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"Backspace", "x":13, "y":1.5, "w":2}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.25, "y":1.5}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":6.5, "y":2.5}, {"label":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"|", "x":13.5, "y":2.5, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, {"label":"Shift", "x":0, "y":4.5, "w":2.25}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"N", "x":7.25, "y":4.5}, {"label":"M", "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":"Shift", "x":12.25, "y":4.5, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.5}, {"label":"Win", "x":1.5, "y":5.5}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":7}, {"label":"Alt", "x":11, "y":5.5, "w":1.5}, {"label":"Menu", "x":12.5, "y":5.5}, {"label":"Ctrl", "x":13.5, "y":5.5, "w":1.5}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}] + }, + "LAYOUT_tkl_iso_tsangan": { + "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"\u00ac", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"\"", "x":2, "y":1.5}, {"label":"\u00a3", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"Backspace", "x":13, "y":1.5, "w":2}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.25, "y":1.5}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":6.5, "y":2.5}, {"label":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"@", "x":11.75, "y":3.5}, {"label":"~", "x":12.75, "y":3.5}, {"label":"Enter", "x":13.75, "y":2.5, "w":1.25, "h":2}, {"label":"Shift", "x":0, "y":4.5, "w":1.25}, {"label":"|", "x":1.25, "y":4.5}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"N", "x":7.25, "y":4.5}, {"label":"M", "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":"Shift", "x":12.25, "y":4.5, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.5}, {"label":"Win", "x":1.5, "y":5.5}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":7}, {"label":"AltGr", "x":11, "y":5.5, "w":1.5}, {"label":"Menu", "x":12.5, "y":5.5}, {"label":"Ctrl", "x":13.5, "y":5.5, "w":1.5}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}] + } + } +} diff --git a/keyboards/matrix/me/keymaps/default/keymap.c b/keyboards/matrix/me/keymaps/default/keymap.c new file mode 100644 index 000000000000..9858753a5016 --- /dev/null +++ b/keyboards/matrix/me/keymaps/default/keymap.c @@ -0,0 +1,37 @@ +/** + * keymap.c + * + Copyright 2021 astro + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0]=LAYOUT_tkl_ansi_tsangan( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, LT(1,KC_PAUS), + + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [1]=LAYOUT_tkl_ansi_tsangan( + KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + RESET, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, + _______, _______, _______, KC_MPLY, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT), +}; diff --git a/keyboards/matrix/me/keymaps/via/keymap.c b/keyboards/matrix/me/keymaps/via/keymap.c new file mode 100644 index 000000000000..d5a05ef94437 --- /dev/null +++ b/keyboards/matrix/me/keymaps/via/keymap.c @@ -0,0 +1,56 @@ +/** + * keymap.c + * + Copyright 2021 astro + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0]=LAYOUT_all( + + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, LT(1,KC_PAUS), + + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,KC_BSLS, KC_ENT, + KC_LSFT, KC_LGUI, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [1]=LAYOUT_all( + KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + RESET, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_F24, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, + _______, _______, _______, KC_MPLY, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT), + + [2]=LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [3]=LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), +}; diff --git a/keyboards/matrix/me/keymaps/via/rules.mk b/keyboards/matrix/me/keymaps/via/rules.mk new file mode 100644 index 000000000000..43061db1dd46 --- /dev/null +++ b/keyboards/matrix/me/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/matrix/me/me.c b/keyboards/matrix/me/me.c new file mode 100644 index 000000000000..c99f26e6238b --- /dev/null +++ b/keyboards/matrix/me/me.c @@ -0,0 +1,17 @@ +/** + * me.c + * + Copyright 2021 astro + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +#include "me.h" diff --git a/keyboards/matrix/me/me.h b/keyboards/matrix/me/me.h new file mode 100644 index 000000000000..f10417f58f0f --- /dev/null +++ b/keyboards/matrix/me/me.h @@ -0,0 +1,70 @@ +/** + * me.h + * + Copyright 2021 astro + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + + +#define LAYOUT_tkl_ansi_tsangan( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K015, K016, \ + \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, \ + K400, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K415, \ + K500, K501, K502, K507, K511, K512, K513, K514, K515, K516 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K015}, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K016}, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K114}, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, K115}, \ + { K400, KC_NO, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K415, KC_NO}, \ + { K500, K501, K502, K507, KC_NO, K511, K512, K513, K514, K515, K516, K216, K215, K214, K116}, \ +} + +#define LAYOUT_tkl_iso_tsangan( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K015, K016, \ + \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, K215, K216, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, \ + K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K415, \ + K500, K501, K502, K507, K511, K512, K513, K514, K515, K516 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K015}, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K016}, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, KC_NO, K114}, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K115}, \ + { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K415, KC_NO}, \ + { K500, K501, K502, K507, KC_NO, K511, K512, K513, K514, K515, K516, K216, K215, K214, K116}, \ +} + +#define LAYOUT_all( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K015, K016, \ + \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, \ + K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K415, \ + K500, K501, K502, K507, K508, K511, K512, K513, K514, K515, K516 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K015}, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K016}, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K114}, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K115}, \ + { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K415, KC_NO}, \ + { K500, K501, K502, K507, K508, K511, K512, K513, K514, K515, K516, K216, K215, K214, K116}, \ +} diff --git a/keyboards/matrix/me/readme.md b/keyboards/matrix/me/readme.md new file mode 100644 index 000000000000..6a39bb0398ba --- /dev/null +++ b/keyboards/matrix/me/readme.md @@ -0,0 +1,25 @@ +# Matrix ME + +A TKL keyboard with top gasket + +* Keyboard Maintainer: [astro](https://github.com/yulei) +* Hardware Supported: Matrix ME keyboard +* Hardware Availability: GB + +Make example for this keyboard (after setting up your build environment): + + make matrix/me:default + +Flashing example for this keyboard: + + make matrix/me:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard. +* **Physical reset button**: Briefly short cut the *RST* pin with the *GND* pin (pin at the topside of the *RST*) on the back of the PCB. +* **Keycode in layout**: Press the key mapped to `RESET` if it is available. \ No newline at end of file diff --git a/keyboards/matrix/me/rules.mk b/keyboards/matrix/me/rules.mk new file mode 100644 index 000000000000..6470900d4b30 --- /dev/null +++ b/keyboards/matrix/me/rules.mk @@ -0,0 +1,19 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/matrix/noah/config.h b/keyboards/matrix/noah/config.h index f41cad94cea3..84877f6a5c40 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) @@ -39,6 +39,54 @@ #define DRIVER_1_LED_TOTAL 36 #define DRIVER_2_LED_TOTAL 36 #define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH /* indicator rgb */ #define RGBLED_NUM 7 diff --git a/keyboards/matrix/noah/info.json b/keyboards/matrix/noah/info.json index bb06a16d7cb8..61c07feb57ad 100644 --- a/keyboards/matrix/noah/info.json +++ b/keyboards/matrix/noah/info.json @@ -2,11 +2,8 @@ "keyboard_name": "NOAH", "url": "", "maintainer": "astro", - "width": 16, - "height": 5, "layouts": { "LAYOUT_default": { - "key_count": 68, "layout": [ { "label": "~", @@ -362,7 +359,6 @@ ] }, "LAYOUT_default_splitspace": { - "key_count": 70, "layout": [ { "label": "~", @@ -729,7 +725,6 @@ ] }, "LAYOUT_wkl": { - "key_count": 67, "layout": [ { "label": "~", @@ -1078,7 +1073,6 @@ ] }, "LAYOUT_iso": { - "key_count": 67, "layout": [ { "label": "~", diff --git a/keyboards/matrix/noah/matrix.c b/keyboards/matrix/noah/matrix.c index 94a27b181feb..17f7a2fb6236 100644 --- a/keyboards/matrix/noah/matrix.c +++ b/keyboards/matrix/noah/matrix.c @@ -26,6 +26,17 @@ static matrix_row_t matrix_debouncing[MATRIX_COLS]; static bool debouncing = false; static uint16_t debouncing_time = 0; +// user-defined overridable functions + +__attribute__((weak)) void matrix_init_kb(void) { matrix_init_user(); } + +__attribute__((weak)) void matrix_scan_kb(void) { matrix_scan_user(); } + +__attribute__((weak)) void matrix_init_user(void) {} + +__attribute__((weak)) void matrix_scan_user(void) {} + +// helper functions void matrix_init(void) { //debug_enable = true; diff --git a/keyboards/matrix/noah/mcuconf.h b/keyboards/matrix/noah/mcuconf.h index 54a1f2661324..00216f6908fd 100644 --- a/keyboards/matrix/noah/mcuconf.h +++ b/keyboards/matrix/noah/mcuconf.h @@ -1,5 +1,5 @@ /* - ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio + ChibiOS - Copyright (C) 2006..2020 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. @@ -32,11 +32,15 @@ */ #define STM32F4xx_MCUCONF +#define STM32F411_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 @@ -60,9 +64,6 @@ #define STM32_I2SSRC STM32_I2SSRC_CKIN #define STM32_PLLI2SN_VALUE 192 #define STM32_PLLI2SR_VALUE 5 -#define STM32_PVD_ENABLE FALSE -#define STM32_PLS STM32_PLS_LEV0 -#define STM32_BKPRAM_ENABLE FALSE /* * IRQ system settings. @@ -82,6 +83,19 @@ #define STM32_IRQ_EXTI21_PRIORITY 15 #define STM32_IRQ_EXTI22_PRIORITY 15 +#define STM32_IRQ_TIM1_BRK_TIM9_PRIORITY 7 +#define STM32_IRQ_TIM1_UP_TIM10_PRIORITY 7 +#define STM32_IRQ_TIM1_TRGCO_TIM11_PRIORITY 7 +#define STM32_IRQ_TIM1_CC_PRIORITY 7 +#define STM32_IRQ_TIM2_PRIORITY 7 +#define STM32_IRQ_TIM3_PRIORITY 7 +#define STM32_IRQ_TIM4_PRIORITY 7 +#define STM32_IRQ_TIM5_PRIORITY 7 + +#define STM32_IRQ_USART1_PRIORITY 12 +#define STM32_IRQ_USART2_PRIORITY 12 +#define STM32_IRQ_USART6_PRIORITY 12 + /* * ADC driver system settings. */ @@ -101,14 +115,8 @@ #define STM32_GPT_USE_TIM4 TRUE #define STM32_GPT_USE_TIM5 FALSE #define STM32_GPT_USE_TIM9 FALSE +#define STM32_GPT_USE_TIM10 FALSE #define STM32_GPT_USE_TIM11 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_TIM9_IRQ_PRIORITY 7 -#define STM32_GPT_TIM11_IRQ_PRIORITY 7 /* * I2C driver system settings. @@ -155,29 +163,28 @@ #define STM32_ICU_USE_TIM4 FALSE #define STM32_ICU_USE_TIM5 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_TIM9_IRQ_PRIORITY 7 +#define STM32_ICU_USE_TIM10 FALSE +#define STM32_ICU_USE_TIM11 FALSE /* * 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_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_TIM9_IRQ_PRIORITY 7 +#define STM32_PWM_USE_TIM10 FALSE +#define STM32_PWM_USE_TIM11 FALSE + +/* + * 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 /* * SERIAL driver system settings. @@ -185,9 +192,6 @@ #define STM32_SERIAL_USE_USART1 FALSE #define STM32_SERIAL_USE_USART2 FALSE #define STM32_SERIAL_USE_USART6 FALSE -#define STM32_SERIAL_USART1_PRIORITY 12 -#define STM32_SERIAL_USART2_PRIORITY 12 -#define STM32_SERIAL_USART6_PRIORITY 12 /* * SPI driver system settings. @@ -227,9 +231,6 @@ #define STM32_UART_USART2_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6) #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_USART6_IRQ_PRIORITY 12 #define STM32_UART_USART1_DMA_PRIORITY 0 #define STM32_UART_USART2_DMA_PRIORITY 0 #define STM32_UART_USART6_DMA_PRIORITY 0 @@ -241,9 +242,7 @@ #define STM32_USB_USE_OTG1 TRUE #define STM32_USB_OTG1_IRQ_PRIORITY 14 #define STM32_USB_OTG1_RX_FIFO_SIZE 512 -#define STM32_USB_OTG_THREAD_PRIO LOWPRIO -#define STM32_USB_OTG_THREAD_STACK_SIZE 128 -#define STM32_USB_OTGFIFO_FILL_BASEPRI 0 +#define STM32_USB_HOST_WAKEUP_DURATION 2 /* * WDG driver system settings. diff --git a/keyboards/matrix/noah/noah.c b/keyboards/matrix/noah/noah.c index 1e2f4bb7d93f..2143dee3be08 100644 --- a/keyboards/matrix/noah/noah.c +++ b/keyboards/matrix/noah/noah.c @@ -50,11 +50,6 @@ void rgblight_set(void) { } #endif -void matrix_init_kb(void) { matrix_init_user(); } - -__attribute__((weak)) -void matrix_init_user(void) { } - void matrix_scan_kb(void) { #ifdef RGBLIGHT_ENABLE rgblight_task(); @@ -62,11 +57,8 @@ void matrix_scan_kb(void) { matrix_scan_user(); } -__attribute__((weak)) -void matrix_scan_user(void) { } - #ifdef RGB_MATRIX_ENABLE -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { /* Refer to IS31 manual for these locations * driver * | R location diff --git a/keyboards/matrix/noah/rules.mk b/keyboards/matrix/noah/rules.mk index 25106a9b5362..83b33df48c7c 100644 --- a/keyboards/matrix/noah/rules.mk +++ b/keyboards/matrix/noah/rules.mk @@ -13,7 +13,7 @@ BOARD = ST_NUCLEO64_F411RE # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 diff --git a/keyboards/maxipad/info.json b/keyboards/maxipad/info.json index 84daa5aba4af..881bba63e61f 100644 --- a/keyboards/maxipad/info.json +++ b/keyboards/maxipad/info.json @@ -2,8 +2,6 @@ "keyboard_name": "maxipad", "url": "", "maintainer": "qmk", - "width": 6, - "height": 5, "layouts": { "LAYOUT_grid": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":0, "y":4}, {"x":1, "y":4}, {"x":2, "y":4}, {"x":3, "y":4}, {"x":4, "y":4}, {"x":5, "y":4}] diff --git a/keyboards/maxipad/promicro/rules.mk b/keyboards/maxipad/promicro/rules.mk index e6fef517279c..cf663a7ed6aa 100644 --- a/keyboards/maxipad/promicro/rules.mk +++ b/keyboards/maxipad/promicro/rules.mk @@ -2,11 +2,4 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina diff --git a/keyboards/maxipad/rules.mk b/keyboards/maxipad/rules.mk index 99fc1fa853c8..d51e6bd93a21 100644 --- a/keyboards/maxipad/rules.mk +++ b/keyboards/maxipad/rules.mk @@ -1,20 +1,15 @@ # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output DEFAULT_FOLDER = maxipad/promicro diff --git a/keyboards/maxipad/teensy2/rules.mk b/keyboards/maxipad/teensy2/rules.mk index ae398e2588c7..320633f80f33 100644 --- a/keyboards/maxipad/teensy2/rules.mk +++ b/keyboards/maxipad/teensy2/rules.mk @@ -2,11 +2,4 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = halfkay diff --git a/keyboards/maxr1998/phoebe/info.json b/keyboards/maxr1998/phoebe/info.json index df46464f16cd..58926842451e 100644 --- a/keyboards/maxr1998/phoebe/info.json +++ b/keyboards/maxr1998/phoebe/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Phoebe", "url": "https://github.com/Maxr1998/Phoebe_Keyboard", "maintainer": "Maxr1998", - "width": 12, - "height": 5, "layouts": { "LAYOUT": { - "key_count": 59, "layout": [ { "w": 1, "x": 0, "y": 0 }, { "w": 1, "x": 1, "y": 0 }, diff --git a/keyboards/maxr1998/phoebe/keymaps/default/keymap.c b/keyboards/maxr1998/phoebe/keymaps/default/keymap.c index 11df63bb1738..11ac657751ab 100644 --- a/keyboards/maxr1998/phoebe/keymaps/default/keymap.c +++ b/keyboards/maxr1998/phoebe/keymaps/default/keymap.c @@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * └─────┴─────┴─────┴─────┴─────┴───────────┴─────┴─────┴─────┴─────┴─────┘ */ [_QWERTZ] = LAYOUT( - KC_ESC, DE_1, DE_2, DE_3, DE_4, DE_5, DE_6, DE_7, DE_8, DE_9, DE_0, DE_QST, + KC_ESC, DE_1, DE_2, DE_3, DE_4, DE_5, DE_6, DE_7, DE_8, DE_9, DE_0, DE_QUES, KC_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, DE_PLUS, KC_ENT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_RSPC, @@ -55,7 +55,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, DE_ACUT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, DE_HASH, _______, - _______, DE_LESS, _______, _______, _______, _______, _______, _______, _______, _______, DE_MINS, _______, + _______, DE_LABK, _______, _______, _______, _______, _______, _______, _______, _______, DE_MINS, _______, _______, _______, _______, XXXXXXX, _______, _______, _______, XXXXXXX, _______, _______, _______ ), @@ -74,8 +74,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_FN] = LAYOUT( _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F10, KC_F11, KC_F12, - _______, _______, _______, _______, _______, _______, _______, DE_UE, KC_F9, DE_OE, _______, KC_DEL, - KC_LOCK, DE_AE, DE_SS, _______, _______, G_1, _______, RGB_M_P, RGB_M_SW,RGB_M_SN,_______, _______, + _______, _______, _______, _______, _______, _______, _______, DE_UDIA, KC_F9, DE_ODIA, _______, KC_DEL, + KC_LOCK, DE_ADIA, DE_SS, _______, _______, G_1, _______, RGB_M_P, RGB_M_SW,RGB_M_SN,_______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_TOG, RGB_HUI, KC_PGUP, _______, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, KC_HOME, KC_PGDN, KC_END ), @@ -106,7 +106,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { - case DE_QST: + case DE_QUES: if (get_mods() & MODS_ALGR_MASK) { if (record->event.pressed) { register_code(DE_SS); @@ -119,9 +119,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case KC_Z: if (get_mods() & MODS_ALGR_MASK) { if (record->event.pressed) { - register_code(DE_LESS); + register_code(DE_LABK); } else { - unregister_code(DE_LESS); + unregister_code(DE_LABK); } return false; } diff --git a/keyboards/maxr1998/phoebe/rules.mk b/keyboards/maxr1998/phoebe/rules.mk index f60274e51573..1e3b1f0fe1c3 100644 --- a/keyboards/maxr1998/phoebe/rules.mk +++ b/keyboards/maxr1998/phoebe/rules.mk @@ -2,33 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -COMBO_ENABLE = no # Key combo feature 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 -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. KEY_LOCK_ENABLE = yes LEADER_ENABLE = yes # Enable leader key -API_SYSEX_ENABLE = no -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend diff --git a/keyboards/maxr1998/pulse4k/info.json b/keyboards/maxr1998/pulse4k/info.json index 0f2bb4b31445..7caa85072a2d 100644 --- a/keyboards/maxr1998/pulse4k/info.json +++ b/keyboards/maxr1998/pulse4k/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Pulse 4k", "url": "https://github.com/Maxr1998/Pulse_4k", "maintainer": "Maxr1998", - "width": 3, - "height": 2, "layouts": { "LAYOUT": { - "key_count": 6, "layout": [ { "w": 1, "x": 0, "y": 0 }, { "w": 1, "x": 1, "y": 0 }, diff --git a/keyboards/maxr1998/pulse4k/keymaps/default/keymap.c b/keyboards/maxr1998/pulse4k/keymaps/default/keymap.c index 46de247aae36..1ed4b5f1af09 100644 --- a/keyboards/maxr1998/pulse4k/keymaps/default/keymap.c +++ b/keyboards/maxr1998/pulse4k/keymaps/default/keymap.c @@ -24,20 +24,8 @@ enum layers { const uint16_t PROGMEM led_adjust_combo[] = {KC_LEFT, KC_RGHT, COMBO_END}; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [DEFAULT] = { - { KC_END, KC_UP, KC_MUTE }, - { KC_LEFT, KC_DOWN, KC_RGHT } - } + [DEFAULT] = LAYOUT( + KC_END, KC_UP, KC_MUTE, + KC_LEFT, KC_DOWN, KC_RGHT + ) }; - -void matrix_init_user(void) { -} - -// Override if necessary -/* -void encoder_one_update(bool clockwise) { -} - -void encoder_two_update(bool clockwise) { -} -//*/ diff --git a/keyboards/maxr1998/pulse4k/keymaps/maxr1998/keymap.c b/keyboards/maxr1998/pulse4k/keymaps/maxr1998/keymap.c index 4ef97790102b..9eec3f0ae770 100644 --- a/keyboards/maxr1998/pulse4k/keymaps/maxr1998/keymap.c +++ b/keyboards/maxr1998/pulse4k/keymaps/maxr1998/keymap.c @@ -24,10 +24,10 @@ enum layers { const uint16_t PROGMEM led_adjust_combo[] = {KC_F22, KC_F24, COMBO_END}; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [DEFAULT] = { - { KC_F20, KC_F21, KC_MUTE }, - { KC_F22, KC_F23, KC_F24 } - } + [DEFAULT] = LAYOUT( + KC_F20, KC_F21, KC_MUTE, + KC_F22, KC_F23, KC_F24 + ) }; void encoder_one_update(bool clockwise) { diff --git a/keyboards/maxr1998/pulse4k/rules.mk b/keyboards/maxr1998/pulse4k/rules.mk index 71d9b5debff8..8dc8ac0973d0 100644 --- a/keyboards/maxr1998/pulse4k/rules.mk +++ b/keyboards/maxr1998/pulse4k/rules.mk @@ -2,20 +2,13 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys ENCODER_ENABLE = yes # Rotary encoders EXTRAKEY_ENABLE = yes # Audio control and System control @@ -24,10 +17,5 @@ COMMAND_ENABLE = no # Commands for debug and configuration COMBO_ENABLE = yes # Key combo feature 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 -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -API_SYSEX_ENABLE = no -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend diff --git a/keyboards/mb44/info.json b/keyboards/mb44/info.json index d18a0b0142a9..47527443d481 100644 --- a/keyboards/mb44/info.json +++ b/keyboards/mb44/info.json @@ -2,8 +2,6 @@ "keyboard_name": "MB-44", "url": "", "maintainer": "melonbred", - "width": 3, - "height": 2, "layouts": { "LAYOUT_default": { "layout": [ @@ -52,7 +50,7 @@ {"x":11.75, "y":3} ] }, - "LAYOUT_2u_split": { + "LAYOUT_2u_space": { "layout": [ {"x":0, "y":0}, {"x":1, "y":0}, @@ -101,7 +99,7 @@ {"x":11.75, "y":3} ] }, - "LAYOUT_2u1u_split": { + "LAYOUT_2u1u_space": { "layout": [ {"x":0, "y":0}, {"x":1, "y":0}, @@ -150,7 +148,7 @@ {"x":11.75, "y":3} ] }, - "LAYOUT_3u_split": { + "LAYOUT_3u_space": { "layout": [ {"x":0, "y":0}, {"x":1, "y":0}, diff --git a/keyboards/mb44/keymaps/2u1u_space/keymap.c b/keyboards/mb44/keymaps/2u1u_space/keymap.c index 437a90c7b377..d231d633018d 100644 --- a/keyboards/mb44/keymaps/2u1u_space/keymap.c +++ b/keyboards/mb44/keymaps/2u1u_space/keymap.c @@ -48,7 +48,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; // Rotary Encoder Functions -void encoder_update_user(uint8_t index, bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (index == 0) { /* First encoder */ if (clockwise) { tap_code(KC_VOLD); @@ -56,4 +56,5 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code(KC_VOLU); } } + return true; } diff --git a/keyboards/mb44/keymaps/2u_space/keymap.c b/keyboards/mb44/keymaps/2u_space/keymap.c index b2f1fb64b686..c3f654337a82 100644 --- a/keyboards/mb44/keymaps/2u_space/keymap.c +++ b/keyboards/mb44/keymaps/2u_space/keymap.c @@ -48,7 +48,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; // Rotary Encoder Functions -void encoder_update_user(uint8_t index, bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (index == 0) { /* First encoder */ if (clockwise) { tap_code(KC_VOLD); @@ -56,4 +56,5 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code(KC_VOLU); } } + return true; } diff --git a/keyboards/mb44/keymaps/3u_space/keymap.c b/keyboards/mb44/keymaps/3u_space/keymap.c index bfd01c6ea25b..924b3f4abb81 100644 --- a/keyboards/mb44/keymaps/3u_space/keymap.c +++ b/keyboards/mb44/keymaps/3u_space/keymap.c @@ -56,7 +56,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; // Rotary Encoder Functions -void encoder_update_user(uint8_t index, bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (index == 0) { /* First encoder */ if (clockwise) { tap_code(KC_VOLD); @@ -64,4 +64,5 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code(KC_VOLU); } } + return true; } \ No newline at end of file diff --git a/keyboards/mb44/keymaps/default/keymap.c b/keyboards/mb44/keymaps/default/keymap.c index 1659661f3bd7..5eac54e07ef8 100644 --- a/keyboards/mb44/keymaps/default/keymap.c +++ b/keyboards/mb44/keymaps/default/keymap.c @@ -50,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Rotary Encoder Functions -void encoder_update_user(uint8_t index, bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (index == 0) { /* First encoder */ if (clockwise) { tap_code(KC_VOLD); @@ -58,4 +58,5 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code(KC_VOLU); } } + return true; } diff --git a/keyboards/mb44/mb44.h b/keyboards/mb44/mb44.h index a0664d8b87de..e3c490e87ceb 100644 --- a/keyboards/mb44/mb44.h +++ b/keyboards/mb44/mb44.h @@ -48,13 +48,13 @@ 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, K36, K37, K39, K3A, K3B \ + K30, K31, K32, K33, K35, K36, 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, XXX, K36, K37, XXX, K39, K3A, K3B } \ + { K30, K31, K32, K33, XXX, K35, K36, XXX, XXX, K39, K3A, K3B } \ } #define LAYOUT_2u1u_space( \ diff --git a/keyboards/mb44/rules.mk b/keyboards/mb44/rules.mk index ba7e249c9b4f..b9897ebe58c6 100644 --- a/keyboards/mb44/rules.mk +++ b/keyboards/mb44/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = yes # Enable rotary encoder diff --git a/keyboards/mc_76k/info.json b/keyboards/mc_76k/info.json index 482caa1c4855..411886886e64 100644 --- a/keyboards/mc_76k/info.json +++ b/keyboards/mc_76k/info.json @@ -2,11 +2,9 @@ "keyboard_name": "mc_76k", "url": "www.yiancar-designs.com", "maintainer": "Yiancar", - "width": 15, - "height": 6.5, "layouts": { "LAYOUT_all": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.25, "y":0}, {"label":"F2", "x":2.25, "y":0}, {"label":"F3", "x":3.25, "y":0}, {"label":"F4", "x":4.25, "y":0}, {"label":"F5", "x":5.5, "y":0}, {"label":"F6", "x":6.5, "y":0}, {"label":"F7", "x":7.5, "y":0}, {"label":"F8", "x":8.5, "y":0}, {"label":"F9", "x":9.75, "y":0}, {"label":"F10", "x":10.75, "y":0}, {"label":"F11", "x":11.75, "y":0}, {"label":"F12", "x":12.75, "y":0}, {"label":"F13", "x":14, "y":0}, {"label":"~", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"@", "x":2, "y":1.5}, {"label":"#", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"|", "x":13, "y":1.5}, {"label":"Delete", "x":14, "y":1.5}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":6.5, "y":2.5}, {"label":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"Backspace", "x":13.5, "y":2.5, "w":1.5}, {"label":"Ctrl", "x":0, "y":3.5, "w":1.75}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, {"label":"Shift", "x":0, "y":4.5, "w":2.25}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"N", "x":7.25, "y":4.5}, {"label":"M", "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":"Shift", "x":12.25, "y":4.5, "w":1.75}, {"label":"Fn", "x":14, "y":4.5}, {"label":"Caps Lock", "x":0, "y":5.5, "w":1.5}, {"label":"Win", "x":1.5, "y":5.5}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":7}, {"label":"Alt", "x":11, "y":5.5, "w":1.5}, {"label":"Win", "x":12.5, "y":5.5}, {"label":"Ctrl", "x":13.5, "y":5.5, "w":1.5}] } } -} \ No newline at end of file +} diff --git a/keyboards/mc_76k/rules.mk b/keyboards/mc_76k/rules.mk index b48754e9fc04..74047d4dec7d 100644 --- a/keyboards/mc_76k/rules.mk +++ b/keyboards/mc_76k/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/mechanickeys/miniashen40/config.h b/keyboards/mechanickeys/miniashen40/config.h new file mode 100644 index 000000000000..bf2ea6e00f97 --- /dev/null +++ b/keyboards/mechanickeys/miniashen40/config.h @@ -0,0 +1,53 @@ +/* Copyright 2021 jfescobar18 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4D4B // MechanicKeys +#define PRODUCT_ID 0x6D6E +#define DEVICE_VER 0x0001 +#define MANUFACTURER MechanicKeys +#define PRODUCT MINI ASHEN 40 + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 13 + +/* + * 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 { B1, B2, B3, B4 } +#define MATRIX_COL_PINS { C5, C4, C3, D0, C2, D1, C1, C0, D4, B0, D7, D6, B5 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST \ No newline at end of file diff --git a/keyboards/mechanickeys/miniashen40/info.json b/keyboards/mechanickeys/miniashen40/info.json new file mode 100644 index 000000000000..6a6b1e951a4c --- /dev/null +++ b/keyboards/mechanickeys/miniashen40/info.json @@ -0,0 +1,15 @@ +{ + "keyboard_name": "Mini Ashen 40", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "Tab", "x": 0, "y": 0}, {"label": "Q", "x": 1, "y": 0}, {"label": "W", "x": 2, "y": 0}, {"label": "E", "x": 3, "y": 0}, {"label": "R", "x": 4, "y": 0}, {"label": "T", "x": 5, "y": 0}, {"label": "Y", "x": 6, "y": 0}, {"label": "U", "x": 7, "y": 0}, {"label": "I", "x": 8, "y": 0}, {"label": "O", "x": 9, "y": 0}, {"label": "P", "x": 10, "y": 0}, {"label": "Del", "x": 11, "y": 0}, {"label": "M1", "x": 12.25, "y": 0}, {"label": "M2", "x": 13.25, "y": 0}, + {"label": "Ctrl", "x": 0, "y": 1, "w":1.25}, {"label": "A", "x": 1.25, "y": 1}, {"label": "S", "x": 2.25, "y": 1}, {"label": "D", "x": 3.25, "y": 1}, {"label": "F", "x": 4.25, "y": 1}, {"label": "G", "x": 5.25, "y": 1}, {"label": "H", "x": 6.25, "y": 1}, {"label": "J", "x": 7.25, "y": 1}, {"label": "K", "x": 8.25, "y": 1}, {"label": "L", "x": 9.25, "y": 1}, {"label": "Enter", "x": 10.25, "y": 1, "w":1.75}, {"label": "M3", "x": 12.25, "y": 1}, {"label": "M4", "x": 13.25, "y": 1}, + {"label": "Shift", "x": 0, "y": 2, "w":1.75}, {"label": "Z", "x": 1.75, "y": 2}, {"label": "X", "x": 2.75, "y": 2}, {"label": "C", "x": 3.75, "y": 2}, {"label": "V", "x": 4.75, "y": 2}, {"label": "B", "x": 5.75, "y": 2}, {"label": "N", "x": 6.75, "y": 2}, {"label": "M", "x": 7.75, "y": 2}, {"label": ",", "x": 8.75, "y": 2}, {"label": ".", "x": 9.75, "y": 2}, {"label": "Fn", "x": 10.75, "y": 2, "w":1.25}, {"label": "Up", "x": 12.25, "y": 2.25}, + {"label": "Alt", "x": 1, "y": 3}, {"label": "OS", "x": 2, "y": 3, "w": 1.5}, {"label": "", "x": 3.5, "y": 3, "w": 2.75}, {"label": "", "x": 6.25, "y": 3, "w": 2.25}, {"label": "Os", "x": 8.5, "y": 3, "w": 1.5}, {"label": "Alt", "x": 10, "y": 3}, {"label": "Left", "x": 11.25, "y": 3.25}, {"label": "Down", "x": 12.25, "y": 3.25}, {"label": "Right", "x": 13.25, "y": 3.25} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/mechanickeys/miniashen40/keymaps/default/keymap.c b/keyboards/mechanickeys/miniashen40/keymaps/default/keymap.c new file mode 100644 index 000000000000..b49b5882fadf --- /dev/null +++ b/keyboards/mechanickeys/miniashen40/keymaps/default/keymap.c @@ -0,0 +1,47 @@ +/* Copyright 2021 jfescobar18 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( /* 0: qwerty */ + KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MPRV, KC_MNXT, + CTL_T(KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, KC_MUTE, KC_MPLY, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, MO(1), KC_UP, KC_BSPC, + KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_RGUI, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT( /* 1: Symbols */ + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_TRNS, KC_TRNS, + MO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_SCLN, KC_QUOT, KC_BSLS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SLSH, KC_TRNS, KC_TRNS, KC_EQL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT( /* 2: Fn */ + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT( /*3: Empty */ + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; diff --git a/keyboards/mechanickeys/miniashen40/keymaps/via/keymap.c b/keyboards/mechanickeys/miniashen40/keymaps/via/keymap.c new file mode 100644 index 000000000000..0aa9476b4edf --- /dev/null +++ b/keyboards/mechanickeys/miniashen40/keymaps/via/keymap.c @@ -0,0 +1,47 @@ +/* Copyright 2021 Francisco Escobar + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( /* 0: qwerty */ + KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MPRV, KC_MNXT, + CTL_T(KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, KC_MUTE, KC_MPLY, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, MO(1), KC_UP, KC_BSPC, + KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_RGUI, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT( /* 1: Symbols */ + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_TRNS, KC_TRNS, + MO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_SCLN, KC_QUOT, KC_BSLS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SLSH, KC_TRNS, KC_TRNS, KC_EQL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT( /* 2: Fn */ + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT( /*3: Empty */ + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; diff --git a/keyboards/mechanickeys/miniashen40/keymaps/via/rules.mk b/keyboards/mechanickeys/miniashen40/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/mechanickeys/miniashen40/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/mechanickeys/miniashen40/miniashen40.c b/keyboards/mechanickeys/miniashen40/miniashen40.c new file mode 100644 index 000000000000..9c740e117e90 --- /dev/null +++ b/keyboards/mechanickeys/miniashen40/miniashen40.c @@ -0,0 +1,17 @@ +/* Copyright 2021 jfescobar18 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . +*/ + +#include "miniashen40.h" diff --git a/keyboards/mechanickeys/miniashen40/miniashen40.h b/keyboards/mechanickeys/miniashen40/miniashen40.h new file mode 100644 index 000000000000..4430396b4116 --- /dev/null +++ b/keyboards/mechanickeys/miniashen40/miniashen40.h @@ -0,0 +1,42 @@ +/* Copyright 2021 jfescobar18 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + 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, K33, K36, K38, K39, K3A, K3B, K3C \ +) \ +{ \ + { 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, XXX, K33, XXX, XXX, K36, XXX, K38, K39, K3A, K3B, K3C } \ +} diff --git a/keyboards/mechanickeys/miniashen40/readme.md b/keyboards/mechanickeys/miniashen40/readme.md new file mode 100644 index 000000000000..29f7b68fd109 --- /dev/null +++ b/keyboards/mechanickeys/miniashen40/readme.md @@ -0,0 +1,40 @@ +# Mini Ashen 40 + +![Mini Ashen 40](https://i.imgur.com/0k3gFZCh.jpeg) + +![Mini Ashen 40](https://i.imgur.com/B1w8qwPh.jpeg) + +![Mini Ashen 40](https://i.imgur.com/LqxXW0Rh.jpeg) + +A 40% keyboard with some extras + - Arrows + - Mini macro cluster + - Full assembly with only through hole components + +* Keyboard Maintainer: [jfescobar18](https://github.com/jfescobar18) +* Hardware Supported: Mini Ashen 40 PCB and Case +* Hardware Availability: [MechanicKeys](https://www.facebook.com/MechanicKeys-104963764775280) + +Make example for this keyboard (after setting up your build environment): + + make mechanickeys/miniashen40:default + +Flashing example for this keyboard: + + make mechanickeys/miniashen40:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical**: + 1. Press and hold `BOOT` switch + 2. Tap `RESET` switch + 3. Release `BOOT` switch +* **Keycode in layout**: Press the key mapped to `RESET` if it is available + +## Flash bootloader +* [Follow this instructions](https://github.com/jfescobar18/USBaspLoader) diff --git a/keyboards/mechanickeys/miniashen40/rules.mk b/keyboards/mechanickeys/miniashen40/rules.mk new file mode 100644 index 000000000000..f3f83c1f60ab --- /dev/null +++ b/keyboards/mechanickeys/miniashen40/rules.mk @@ -0,0 +1,19 @@ +# MCU name +MCU = atmega328p + +# Bootloader selection +BOOTLOADER = usbasploader + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/mechanickeys/undead60m/config.h b/keyboards/mechanickeys/undead60m/config.h new file mode 100644 index 000000000000..e819cf99713e --- /dev/null +++ b/keyboards/mechanickeys/undead60m/config.h @@ -0,0 +1,75 @@ +/* Copyright 2021 jfescobar18 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4D4B // MechanicKeys +#define PRODUCT_ID 0x3C4D +#define DEVICE_VER 0x0001 +#define MANUFACTURER MechanicKeys +#define PRODUCT Undead 60-M + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 16 + +/* + * 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 { D0, D1, D2, D3, D5 } +#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B6, D4, B1, B0, B7, B5, B4, D7, D6, B3, B2 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* RGB Underglow */ +#define RGB_DI_PIN F7 +#ifdef RGB_DI_PIN + #define RGBLED_NUM 16 + #define RGBLIGHT_SLEEP + #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 +#endif + +/* Rotary encoder */ +#define ENCODERS_PAD_A { F6 } +#define ENCODERS_PAD_B { F5 } +#define ENCODER_RESOLUTION 4 diff --git a/keyboards/mechanickeys/undead60m/info.json b/keyboards/mechanickeys/undead60m/info.json new file mode 100644 index 000000000000..5032974857a9 --- /dev/null +++ b/keyboards/mechanickeys/undead60m/info.json @@ -0,0 +1,86 @@ +{ + "keyboard_name": "Undead-60M", + "url": "", + "maintainer": "jfescobar18", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"F1", "x":0, "y":0}, + {"label":"F2", "x":1, "y":0}, + {"label":"Esc", "x":2.5, "y":0}, + {"label":"1!", "x":3.5, "y":0}, + {"label":"2@", "x":4.5, "y":0}, + {"label":"3#", "x":5.5, "y":0}, + {"label":"4$", "x":6.5, "y":0}, + {"label":"5%", "x":7.5, "y":0}, + {"label":"6^", "x":8.5, "y":0}, + {"label":"7&", "x":9.5, "y":0}, + {"label":"8*", "x":10.5, "y":0}, + {"label":"9(", "x":11.5, "y":0}, + {"label":"0)", "x":12.5, "y":0}, + {"label":"-_", "x":13.5, "y":0}, + {"label":"=+", "x":14.5, "y":0}, + {"label":"Backspace", "x":15.5, "y":0, "w":2}, + + {"label":"F2", "x":0, "y":1}, + {"label":"F3", "x":1, "y":1}, + {"label":"Tab", "x":2.5, "y":1, "w":1.5}, + {"label":"Q", "x":4, "y":1}, + {"label":"W", "x":5, "y":1}, + {"label":"E", "x":6, "y":1}, + {"label":"R", "x":7, "y":1}, + {"label":"T", "x":8, "y":1}, + {"label":"Y", "x":9, "y":1}, + {"label":"U", "x":10, "y":1}, + {"label":"I", "x":11, "y":1}, + {"label":"O", "x":12, "y":1}, + {"label":"P", "x":13, "y":1}, + {"label":"[{", "x":14, "y":1}, + {"label":"]}", "x":15, "y":1}, + {"label":"\\|", "x":16, "y":1, "w":1.5}, + + {"label":"F4", "x":0, "y":2}, + {"label":"F5", "x":1, "y":2}, + {"label":"Caps", "x":2.5, "y":2, "w":1.75}, + {"label":"A", "x":4.25, "y":2}, + {"label":"S", "x":5.25, "y":2}, + {"label":"D", "x":6.25, "y":2}, + {"label":"F", "x":7.25, "y":2}, + {"label":"G", "x":8.25, "y":2}, + {"label":"H", "x":9.25, "y":2}, + {"label":"J", "x":10.25, "y":2}, + {"label":"K", "x":11.25, "y":2}, + {"label":"L", "x":12.25, "y":2}, + {"label":";:", "x":13.25, "y":2}, + {"label":"'\"", "x":14.25, "y":2}, + {"label":"Enter", "x":15.25, "y":2, "w":2.25}, + + {"label":"F6", "x":0, "y":3}, + {"label":"F7", "x":1, "y":3}, + {"label":"Shift", "x":2.5, "y":3, "w":2.25}, + {"label":"Z", "x":4.75, "y":3}, + {"label":"X", "x":5.75, "y":3}, + {"label":"C", "x":6.75, "y":3}, + {"label":"V", "x":7.75, "y":3}, + {"label":"B", "x":8.75, "y":3}, + {"label":"N", "x":9.75, "y":3}, + {"label":"M", "x":10.75, "y":3}, + {"label":",<", "x":11.75, "y":3}, + {"label":".>", "x":12.75, "y":3}, + {"label":"/?", "x":13.75, "y":3}, + {"label":"Shift", "x":14.75, "y":3, "w":2.75}, + + {"label":"F1", "x":0, "y":4}, + {"label":"F2", "x":1, "y":4}, + {"label":"Ctrl", "x":2.5, "y":4, "w":1.25}, + {"label":"OS", "x":3.75, "y":4, "w":1.25}, + {"label":"Alt", "x":5, "y":4, "w":1.25}, + {"label":"Space", "x":6.25, "y":4, "w":6.25}, + {"label":"Alt", "x":12.5, "y":4, "w":1.25}, + {"label":"OS", "x":13.75, "y":4, "w":1.25}, + {"label":"Ctrl", "x":15, "y":4, "w":1.25}, + {"label":"Fn", "x":16.25, "y":4, "w":1.25} + ] + } + } +} diff --git a/keyboards/mechanickeys/undead60m/keymaps/default/keymap.c b/keyboards/mechanickeys/undead60m/keymaps/default/keymap.c new file mode 100644 index 000000000000..084049f09bd3 --- /dev/null +++ b/keyboards/mechanickeys/undead60m/keymaps/default/keymap.c @@ -0,0 +1,51 @@ +/* Copyright 2021 jfescobar18 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( /* 0: qwerty */ + KC_MPLY, KC_P1, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_P2, KC_P3, 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_P4, KC_P5, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_P6, KC_P7, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_P8, KC_P9, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, MO(1) + ), + + [1] = LAYOUT( /* 1: fn */ + KC_TRNS, KC_TRNS, KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(2), KC_TRNS + ), + + [2] = LAYOUT( /* 2: media */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT( /*3: RGB */ + RGB_TOG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + RGB_HUD, RGB_HUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + RGB_SAD, RGB_SAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + RGB_VAD, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; diff --git a/keyboards/mechanickeys/undead60m/keymaps/via/keymap.c b/keyboards/mechanickeys/undead60m/keymaps/via/keymap.c new file mode 100644 index 000000000000..1bd56eadbf3d --- /dev/null +++ b/keyboards/mechanickeys/undead60m/keymaps/via/keymap.c @@ -0,0 +1,52 @@ +/* Copyright 2021 jfescobar18 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( /* 0: qwerty */ + KC_MPLY, KC_P1, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_P2, KC_P3, 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_P4, KC_P5, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_P6, KC_P7, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_P8, KC_P9, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, MO(1) + ), + + [1] = LAYOUT( /* 1: fn */ + KC_TRNS, KC_TRNS, KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(2), KC_TRNS + ), + + [2] = LAYOUT( /* 2: media */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT( /*3: RGB */ + RGB_TOG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + RGB_HUD, RGB_HUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + RGB_SAD, RGB_SAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + RGB_VAD, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; + diff --git a/keyboards/mechanickeys/undead60m/keymaps/via/rules.mk b/keyboards/mechanickeys/undead60m/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/mechanickeys/undead60m/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/mechanickeys/undead60m/readme.md b/keyboards/mechanickeys/undead60m/readme.md new file mode 100644 index 000000000000..77deb26a9979 --- /dev/null +++ b/keyboards/mechanickeys/undead60m/readme.md @@ -0,0 +1,27 @@ +# Undead 60M + +![Undead 60M](https://i.imgur.com/0EWBzNth.jpeg) + +![Undead 60M](https://i.imgur.com/m8z1kMVh.jpeg) + +![Undead 60M](https://i.imgur.com/AZIfVzNh.jpeg) + +A 60% PCB with some add-ons + - RGB Underglow + - Macro cluster + - Hotswap + - optional Knob + +* Keyboard Maintainer: [jfescobar18](https://github.com/jfescobar18) +* Hardware Supported: Undead 60M PCB +* Hardware Availability: [MechanicKeys](https://www.facebook.com/MechanicKeys-104963764775280) + +Make example for this keyboard (after setting up your build environment): + + make mechanickeys/undead60m:default + +Flashing example for this keyboard: + + make mechanickeys/undead60m:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/mechanickeys/undead60m/rules.mk b/keyboards/mechanickeys/undead60m/rules.mk new file mode 100644 index 000000000000..ec6d6b7030d7 --- /dev/null +++ b/keyboards/mechanickeys/undead60m/rules.mk @@ -0,0 +1,21 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/mechanickeys/undead60m/undead60m.c b/keyboards/mechanickeys/undead60m/undead60m.c new file mode 100644 index 000000000000..1bda4b1bd83c --- /dev/null +++ b/keyboards/mechanickeys/undead60m/undead60m.c @@ -0,0 +1,60 @@ +/* Copyright 2021 jfescobar18 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . +*/ + +#include "undead60m.h" +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + if (index == 0) { + switch (get_highest_layer(layer_state)) { + case 0: /* Layer 1: Volume */ + if (clockwise) { + tap_code(KC_VOLD); + } else { + tap_code(KC_VOLU); + } + break; + case 1: /* Layer 2: Scroll */ + if (clockwise) { + tap_code(KC_WH_U); + } else { + tap_code(KC_WH_D); + } + break; + case 2: /* Layer 3: Change Track */ + if (clockwise) { + tap_code(KC_MPRV); + } else { + tap_code(KC_MNXT); + } + break; + case 3: /* Layer 4: Brightness */ + if (clockwise) { + tap_code(KC_BRID); + } else { + tap_code(KC_BRIU); + } + break; + default: /* Default: Volume */ + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + break; + } + } + return true; +} diff --git a/keyboards/mechanickeys/undead60m/undead60m.h b/keyboards/mechanickeys/undead60m/undead60m.h new file mode 100644 index 000000000000..4bc665ffd87e --- /dev/null +++ b/keyboards/mechanickeys/undead60m/undead60m.h @@ -0,0 +1,34 @@ +/* Copyright 2021 jfescobar18 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +#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, 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, \ + K40, K41, K42, K43, K44, K48, 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, K1E, K1F }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, KC_NO }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO, KC_NO }, \ + { K40, K41, K42, K43, K44, KC_NO, KC_NO, KC_NO, K48, KC_NO, KC_NO, KC_NO, K4C, K4D, K4E, K4F } \ +} diff --git a/keyboards/mechkeys/mk60/config.h b/keyboards/mechkeys/mk60/config.h index f2d60439753e..a841152f4f8f 100644 --- a/keyboards/mechkeys/mk60/config.h +++ b/keyboards/mechkeys/mk60/config.h @@ -120,59 +120,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -191,26 +138,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/mechkeys/mk60/info.json b/keyboards/mechkeys/mk60/info.json index 06ed337260ce..cb504123785d 100644 --- a/keyboards/mechkeys/mk60/info.json +++ b/keyboards/mechkeys/mk60/info.json @@ -2,11 +2,8 @@ "keyboard_name": "MK60", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { - "key_count": 68, "layout": [ {"label":"K00", "x":0, "y":0}, {"label":"K01", "x":1, "y":0}, @@ -80,4 +77,3 @@ } } } - \ No newline at end of file diff --git a/keyboards/mechkeys/mk60/keymaps/default/keymap.c b/keyboards/mechkeys/mk60/keymaps/default/keymap.c index ea566d4b557c..7718902eba98 100644 --- a/keyboards/mechkeys/mk60/keymaps/default/keymap.c +++ b/keyboards/mechkeys/mk60/keymaps/default/keymap.c @@ -60,15 +60,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/mechkeys/mk60/rules.mk b/keyboards/mechkeys/mk60/rules.mk index d7754ceb50c2..9fba0682c5b5 100644 --- a/keyboards/mechkeys/mk60/rules.mk +++ b/keyboards/mechkeys/mk60/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/mechllama/g35/info.json b/keyboards/mechllama/g35/info.json index 6fcc2412db3c..c22c124fc8c4 100644 --- a/keyboards/mechllama/g35/info.json +++ b/keyboards/mechllama/g35/info.json @@ -2,9 +2,6 @@ "keyboard_name": "G35", "url": "https://github.com/kaylynb/MechLlama-G35", "maintainer": "kaylynb", - "width": 7, - "height": 5.75, - "key_count": 35, "layouts": { "LAYOUT": { "layout": [{"label":"F1", "x":0, "y":0.5}, {"label":"Esc", "x":1, "y":0.5}, {"label":"1", "x":2, "y":0}, {"label":"2", "x":3, "y":0.15}, {"label":"3", "x":4, "y":0}, {"label":"4", "x":5, "y":0}, {"label":"5", "x":6, "y":0}, {"label":"F2", "x":0, "y":1.5}, {"label":"Tab", "x":1, "y":1.5}, {"label":"Q", "x":2, "y":1}, {"label":"W", "x":3, "y":1.15}, {"label":"E", "x":4, "y":1}, {"label":"R", "x":5, "y":1}, {"label":"T", "x":6, "y":1}, {"label":"F3", "x":0, "y":2.5}, {"label":"Shift", "x":1, "y":2.5}, {"label":"A", "x":2, "y":2}, {"label":"S", "x":3, "y":2.15}, {"label":"D", "x":4, "y":2}, {"label":"F", "x":5, "y":2}, {"label":"G", "x":6, "y":2}, {"label":"F4", "x":0, "y":3.5}, {"label":"Ctrl", "x":1, "y":3.5}, {"label":"Z", "x":2, "y":3}, {"label":"X", "x":3, "y":3.15}, {"label":"C", "x":4, "y":3}, {"label":"V", "x":5, "y":3}, {"label":"B", "x":6, "y":3}, {"label":"F5", "x":0, "y":4.5}, {"label":"Super", "x":1, "y":4.5}, {"label":"Alt", "x":2, "y":4, "h":1.5}, {"label":"Bksp", "x":3, "y":4.25, "h":1.25}, {"label":"Enter", "x":4, "y":4, "h":1.5}, {"label":"Space", "x":5, "y":4, "h":1.75}, {"label":"Fn", "x":6, "y":4, "h":1.75}] diff --git a/keyboards/mechllama/g35/keymaps/default/keymap.c b/keyboards/mechllama/g35/keymaps/default/keymap.c index 4b7bf76516b6..f02cba0b5abf 100644 --- a/keyboards/mechllama/g35/keymaps/default/keymap.c +++ b/keyboards/mechllama/g35/keymaps/default/keymap.c @@ -51,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -#if defined(OLED_DRIVER_ENABLE) +#if defined(OLED_ENABLE) const char* get_layer_name(uint8_t layer) { switch (layer) { case _BASE: @@ -66,7 +66,8 @@ const char* get_layer_name(uint8_t layer) { } } -void oled_task_user(void) { +bool oled_task_user(void) { oled_write_ln_P(get_layer_name(biton32(layer_state)), false); + return false; } #endif diff --git a/keyboards/mechllama/g35/rules.mk b/keyboards/mechllama/g35/rules.mk index 20fbf160afdc..d0f3ce4ede23 100644 --- a/keyboards/mechllama/g35/rules.mk +++ b/keyboards/mechllama/g35/rules.mk @@ -2,17 +2,11 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu NKRO_ENABLE = yes -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 RGBLIGHT_ENABLE = yes DEFAULT_FOLDER = mechllama/g35/v2 diff --git a/keyboards/mechlovin/adelais/adelais.h b/keyboards/mechlovin/adelais/adelais.h index 5a5673abc7b7..6c3980a09042 100644 --- a/keyboards/mechlovin/adelais/adelais.h +++ b/keyboards/mechlovin/adelais/adelais.h @@ -18,32 +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_all LAYOUT_alice_split_bs +#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 3ec5c4913272..035ffa80322d 100644 --- a/keyboards/mechlovin/adelais/config.h +++ b/keyboards/mechlovin/adelais/config.h @@ -26,11 +26,4 @@ along with this program. If not, see . /* 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/info.json b/keyboards/mechlovin/adelais/info.json index d65935a4f70d..7a858277e7d3 100644 --- a/keyboards/mechlovin/adelais/info.json +++ b/keyboards/mechlovin/adelais/info.json @@ -1,12 +1,12 @@ { "keyboard_name": "Adelais", "url": "", - "maintainer": "Team Mechlovin'", - "width": 18.5, - "height": 5, + "maintainer": "mechlovin", + "layout_aliases": { + "LAYOUT_all": "LAYOUT_alice_split_bs" + }, "layouts": { "LAYOUT_alice_split_bs": { - "key_count": 66, "layout": [ {"label":"K1E", "x":0, "y":0}, {"label":"K00", "x":1.5, "y":0}, @@ -24,6 +24,7 @@ {"label":"K0C", "x":15.5, "y":0}, {"label":"K0D", "x":16.5, "y":0}, {"label":"K0E", "x":17.5, "y":0}, + {"label":"K2E", "x":0, "y":1}, {"label":"K10", "x":1.5, "y":1, "w":1.5}, {"label":"K11", "x":3, "y":1}, @@ -39,6 +40,7 @@ {"label":"K1B", "x":15, "y":1}, {"label":"K1C", "x":16, "y":1}, {"label":"K1D", "x":17, "y":1, "w":1.5}, + {"label":"K3E", "x":0, "y":2}, {"label":"K20", "x":1.5, "y":2, "w":1.75}, {"label":"K21", "x":3.25, "y":2}, @@ -53,6 +55,7 @@ {"label":"K2A", "x":14.25, "y":2}, {"label":"K2B", "x":15.25, "y":2}, {"label":"K2D", "x":16.25, "y":2, "w":2.25}, + {"label":"K30", "x":1.5, "y":3, "w":2.25}, {"label":"K32", "x":3.75, "y":3}, {"label":"K33", "x":4.75, "y":3}, @@ -64,9 +67,10 @@ {"label":"K39", "x":11.75, "y":3}, {"label":"K3A", "x":12.75, "y":3}, {"label":"K3B", "x":13.75, "y":3}, - {"label":"K4D", "x":14.75, "y":3}, + {"label":"K3D", "x":14.75, "y":3}, {"label":"K3C", "x":15.75, "y":3, "w":1.75}, - {"label":"K3D", "x":17.5, "y":3}, + {"label":"K4D", "x":17.5, "y":3}, + {"label":"K40", "x":1.5, "y":4, "w":1.5}, {"label":"K42", "x":4.5, "y":4, "w":1.25}, {"label":"K44", "x":5.75, "y":4, "w":2.25}, @@ -93,6 +97,7 @@ {"label":"K0B", "x":14.5, "y":0}, {"label":"K0C", "x":15.5, "y":0}, {"label":"K0D", "x":16.5, "y":0, "w":2}, + {"label":"K2E", "x":0, "y":1}, {"label":"K10", "x":1.5, "y":1, "w":1.5}, {"label":"K11", "x":3, "y":1}, @@ -108,6 +113,7 @@ {"label":"K1B", "x":15, "y":1}, {"label":"K1C", "x":16, "y":1}, {"label":"K1D", "x":17, "y":1, "w":1.5}, + {"label":"K3E", "x":0, "y":2}, {"label":"K20", "x":1.5, "y":2, "w":1.75}, {"label":"K21", "x":3.25, "y":2}, @@ -122,6 +128,7 @@ {"label":"K2A", "x":14.25, "y":2}, {"label":"K2B", "x":15.25, "y":2}, {"label":"K2D", "x":16.25, "y":2, "w":2.25}, + {"label":"K30", "x":1.5, "y":3, "w":2.25}, {"label":"K32", "x":3.75, "y":3}, {"label":"K33", "x":4.75, "y":3}, @@ -133,9 +140,155 @@ {"label":"K39", "x":11.75, "y":3}, {"label":"K3A", "x":12.75, "y":3}, {"label":"K3B", "x":13.75, "y":3}, - {"label":"K4D", "x":14.75, "y":3}, + {"label":"K3D", "x":14.75, "y":3}, {"label":"K3C", "x":15.75, "y":3, "w":1.75}, - {"label":"K3D", "x":17.5, "y":3}, + {"label":"K4D", "x":17.5, "y":3}, + + {"label":"K40", "x":1.5, "y":4, "w":1.5}, + {"label":"K42", "x":4.5, "y":4, "w":1.25}, + {"label":"K44", "x":5.75, "y":4, "w":2.25}, + {"label":"K46", "x":8, "y":4, "w":1.25}, + {"label":"K48", "x":9.75, "y":4, "w":2.75}, + {"label":"K4A", "x":12.5, "y":4, "w":1.25}, + {"label":"K4E", "x":17, "y":4, "w":1.5} + ] + }, + "LAYOUT_alice_split_bs_full_rshift": { + "layout": [ + {"label":"K1E", "x":0, "y":0}, + {"label":"K00", "x":1.5, "y":0}, + {"label":"K01", "x":2.5, "y":0}, + {"label":"K02", "x":3.5, "y":0}, + {"label":"K03", "x":4.5, "y":0}, + {"label":"K04", "x":5.5, "y":0}, + {"label":"K05", "x":6.5, "y":0}, + {"label":"K06", "x":7.5, "y":0}, + {"label":"K07", "x":10.5, "y":0}, + {"label":"K08", "x":11.5, "y":0}, + {"label":"K09", "x":12.5, "y":0}, + {"label":"K0A", "x":13.5, "y":0}, + {"label":"K0B", "x":14.5, "y":0}, + {"label":"K0C", "x":15.5, "y":0}, + {"label":"K0D", "x":16.5, "y":0}, + {"label":"K0E", "x":17.5, "y":0}, + + {"label":"K2E", "x":0, "y":1}, + {"label":"K10", "x":1.5, "y":1, "w":1.5}, + {"label":"K11", "x":3, "y":1}, + {"label":"K12", "x":4, "y":1}, + {"label":"K13", "x":5, "y":1}, + {"label":"K14", "x":6, "y":1}, + {"label":"K15", "x":7, "y":1}, + {"label":"K16", "x":10, "y":1}, + {"label":"K17", "x":11, "y":1}, + {"label":"K18", "x":12, "y":1}, + {"label":"K19", "x":13, "y":1}, + {"label":"K1A", "x":14, "y":1}, + {"label":"K1B", "x":15, "y":1}, + {"label":"K1C", "x":16, "y":1}, + {"label":"K1D", "x":17, "y":1, "w":1.5}, + + {"label":"K3E", "x":0, "y":2}, + {"label":"K20", "x":1.5, "y":2, "w":1.75}, + {"label":"K21", "x":3.25, "y":2}, + {"label":"K22", "x":4.25, "y":2}, + {"label":"K23", "x":5.25, "y":2}, + {"label":"K24", "x":6.25, "y":2}, + {"label":"K25", "x":7.25, "y":2}, + {"label":"K26", "x":10.25, "y":2}, + {"label":"K27", "x":11.25, "y":2}, + {"label":"K28", "x":12.25, "y":2}, + {"label":"K29", "x":13.25, "y":2}, + {"label":"K2A", "x":14.25, "y":2}, + {"label":"K2B", "x":15.25, "y":2}, + {"label":"K2D", "x":16.25, "y":2, "w":2.25}, + + {"label":"K30", "x":1.5, "y":3, "w":2.25}, + {"label":"K32", "x":3.75, "y":3}, + {"label":"K33", "x":4.75, "y":3}, + {"label":"K34", "x":5.75, "y":3}, + {"label":"K35", "x":6.75, "y":3}, + {"label":"K36", "x":7.75, "y":3}, + {"label":"K37", "x":9.75, "y":3}, + {"label":"K38", "x":10.75, "y":3}, + {"label":"K39", "x":11.75, "y":3}, + {"label":"K3A", "x":12.75, "y":3}, + {"label":"K3B", "x":13.75, "y":3}, + {"label":"K3D", "x":14.75, "y":3}, + {"label":"K3C", "x":15.75, "y":3, "w":2.75}, + + {"label":"K40", "x":1.5, "y":4, "w":1.5}, + {"label":"K42", "x":4.5, "y":4, "w":1.25}, + {"label":"K44", "x":5.75, "y":4, "w":2.25}, + {"label":"K46", "x":8, "y":4, "w":1.25}, + {"label":"K48", "x":9.75, "y":4, "w":2.75}, + {"label":"K4A", "x":12.5, "y":4, "w":1.25}, + {"label":"K4E", "x":17, "y":4, "w":1.5} + ] + }, + "LAYOUT_alice_full_rshift": { + "layout": [ + {"label":"K1E", "x":0, "y":0}, + {"label":"K00", "x":1.5, "y":0}, + {"label":"K01", "x":2.5, "y":0}, + {"label":"K02", "x":3.5, "y":0}, + {"label":"K03", "x":4.5, "y":0}, + {"label":"K04", "x":5.5, "y":0}, + {"label":"K05", "x":6.5, "y":0}, + {"label":"K06", "x":7.5, "y":0}, + {"label":"K07", "x":10.5, "y":0}, + {"label":"K08", "x":11.5, "y":0}, + {"label":"K09", "x":12.5, "y":0}, + {"label":"K0A", "x":13.5, "y":0}, + {"label":"K0B", "x":14.5, "y":0}, + {"label":"K0C", "x":15.5, "y":0}, + {"label":"K0D", "x":16.5, "y":0, "w":2}, + + {"label":"K2E", "x":0, "y":1}, + {"label":"K10", "x":1.5, "y":1, "w":1.5}, + {"label":"K11", "x":3, "y":1}, + {"label":"K12", "x":4, "y":1}, + {"label":"K13", "x":5, "y":1}, + {"label":"K14", "x":6, "y":1}, + {"label":"K15", "x":7, "y":1}, + {"label":"K16", "x":10, "y":1}, + {"label":"K17", "x":11, "y":1}, + {"label":"K18", "x":12, "y":1}, + {"label":"K19", "x":13, "y":1}, + {"label":"K1A", "x":14, "y":1}, + {"label":"K1B", "x":15, "y":1}, + {"label":"K1C", "x":16, "y":1}, + {"label":"K1D", "x":17, "y":1, "w":1.5}, + + {"label":"K3E", "x":0, "y":2}, + {"label":"K20", "x":1.5, "y":2, "w":1.75}, + {"label":"K21", "x":3.25, "y":2}, + {"label":"K22", "x":4.25, "y":2}, + {"label":"K23", "x":5.25, "y":2}, + {"label":"K24", "x":6.25, "y":2}, + {"label":"K25", "x":7.25, "y":2}, + {"label":"K26", "x":10.25, "y":2}, + {"label":"K27", "x":11.25, "y":2}, + {"label":"K28", "x":12.25, "y":2}, + {"label":"K29", "x":13.25, "y":2}, + {"label":"K2A", "x":14.25, "y":2}, + {"label":"K2B", "x":15.25, "y":2}, + {"label":"K2D", "x":16.25, "y":2, "w":2.25}, + + {"label":"K30", "x":1.5, "y":3, "w":2.25}, + {"label":"K32", "x":3.75, "y":3}, + {"label":"K33", "x":4.75, "y":3}, + {"label":"K34", "x":5.75, "y":3}, + {"label":"K35", "x":6.75, "y":3}, + {"label":"K36", "x":7.75, "y":3}, + {"label":"K37", "x":9.75, "y":3}, + {"label":"K38", "x":10.75, "y":3}, + {"label":"K39", "x":11.75, "y":3}, + {"label":"K3A", "x":12.75, "y":3}, + {"label":"K3B", "x":13.75, "y":3}, + {"label":"K3D", "x":14.75, "y":3}, + {"label":"K3C", "x":15.75, "y":3, "w":2.75}, + {"label":"K40", "x":1.5, "y":4, "w":1.5}, {"label":"K42", "x":4.5, "y":4, "w":1.25}, {"label":"K44", "x":5.75, "y":4, "w":2.25}, @@ -146,5 +299,4 @@ ] } } - ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/" } diff --git a/keyboards/mechlovin/adelais/rgb_led/config.h b/keyboards/mechlovin/adelais/rgb_led/config.h new file mode 100644 index 000000000000..2ec0afd47bae --- /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 . +*/ + +#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 f58ca7aa29e3..000000000000 --- 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 1ba7d27dff89..c0cae1600bca 100644 --- a/keyboards/mechlovin/adelais/rgb_led/rev1/config.h +++ b/keyboards/mechlovin/adelais/rgb_led/rev1/config.h @@ -13,7 +13,60 @@ #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 false // 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 \ No newline at end of file +#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_PINWHEEL // Sets the default mode, if none has been set + +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + +#define LED_NUM_LOCK_PIN C15 +#define LED_CAPS_LOCK_PIN B2 +#define LED_SCROLL_LOCK_PIN B9 diff --git a/keyboards/mechlovin/adelais/rgb_led/rev1/rev1.h b/keyboards/mechlovin/adelais/rgb_led/rev1/rev1.h index 16cdf9ed8565..45d48fac4602 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 38ffdd40ae5c..cd290cdcd10f 100644 --- a/keyboards/mechlovin/adelais/rgb_led/rev2/config.h +++ b/keyboards/mechlovin/adelais/rgb_led/rev2/config.h @@ -1,7 +1,7 @@ #pragma once #define PRODUCT_ID 0xAEC2 -#define PRODUCT Adelais En Ciel Rev2 +#define PRODUCT Adelais En Ciel Rev2 #define MATRIX_ROW_PINS { B1, A0, C13, A1, A2} #define MATRIX_COL_PINS { A10, A9, A8, B15, B14, B13, B12, B11, B10, B8, B4, B5, B3, C14, A7 } @@ -31,10 +31,58 @@ #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 false // 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 +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH #define RGB_MATRIX_DISABLE_KEYCODES @@ -42,4 +90,9 @@ #define ENCODERS_PAD_B { A3 } #define ENCODER_RESOLUTION 4 -#define TAP_CODE_DELAY 10 \ No newline at end of file +#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.c b/keyboards/mechlovin/adelais/rgb_led/rev2/rev2.c index 5087174b966a..dda36f371062 100644 --- a/keyboards/mechlovin/adelais/rgb_led/rev2/rev2.c +++ b/keyboards/mechlovin/adelais/rgb_led/rev2/rev2.c @@ -17,7 +17,7 @@ #include "adelais.h" #ifdef RGB_MATRIX_ENABLE -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { {0, C2_1, C3_1, C4_1}, //D102-A0-0 {0, C5_1, C6_1, C7_1}, //D108-A1-1 diff --git a/keyboards/mechlovin/adelais/rgb_led/rev2/rev2.h b/keyboards/mechlovin/adelais/rgb_led/rev2/rev2.h index 16cdf9ed8565..45d48fac4602 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 000000000000..b0f082cc886f --- /dev/null +++ b/keyboards/mechlovin/adelais/rgb_led/rev3/config.h @@ -0,0 +1,120 @@ +/* +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 . +*/ + +#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 ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_FRACTAL +#define ENABLE_RGB_MATRIX_PIXEL_RAIN + +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN + +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + +#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 diff --git a/keyboards/mechlovin/adelais/rgb_led/rev3/halconf.h b/keyboards/mechlovin/adelais/rgb_led/rev3/halconf.h new file mode 100644 index 000000000000..d001829d0348 --- /dev/null +++ b/keyboards/mechlovin/adelais/rgb_led/rev3/halconf.h @@ -0,0 +1,26 @@ +/* Copyright 2020 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define HAL_USE_I2C TRUE + +#define PAL_USE_CALLBACKS FALSE + +#define PAL_USE_WAIT FALSE + +#include_next + diff --git a/keyboards/mechlovin/adelais/rgb_led/rev3/mcuconf.h b/keyboards/mechlovin/adelais/rgb_led/rev3/mcuconf.h new file mode 100644 index 000000000000..20d2a82c2733 --- /dev/null +++ b/keyboards/mechlovin/adelais/rgb_led/rev3/mcuconf.h @@ -0,0 +1,35 @@ +/* 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 . + */ + +#pragma once + +#include_next + +#undef STM32_GPT_USE_TIM15 +#define STM32_GPT_USE_TIM15 FALSE + +#undef STM32_I2C_USE_I2C1 +#define STM32_I2C_USE_I2C1 TRUE + +#undef STM32_PWM_USE_TIM3 +#define STM32_PWM_USE_TIM3 FALSE + +#undef STM32_SPI_USE_SPI1 +#define STM32_SPI_USE_SPI1 TRUE + +#undef STM32_SPI_USE_SPI2 +#define STM32_SPI_USE_SPI2 FALSE + 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 000000000000..b20f897720b4 --- /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 . + */ + +#include "rev3.h" + +#ifdef RGB_MATRIX_ENABLE +const is31_led PROGMEM 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 000000000000..28c373ad850b --- /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 . + */ + +#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 000000000000..904d20877b99 --- /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 73e90befbeb4..d9202c51bbcd 100644 --- a/keyboards/mechlovin/adelais/rules.mk +++ b/keyboards/mechlovin/adelais/rules.mk @@ -8,19 +8,15 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +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/arm/.noci b/keyboards/mechlovin/adelais/standard_led/arm/.noci new file mode 100644 index 000000000000..e69de29bb2d1 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 000000000000..fe716d6552be --- /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 . + */ + +#pragma once + +#define CH_CFG_ST_TIMEDELTA 0 + +#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE + +#include_next + diff --git a/keyboards/mechlovin/adelais/standard_led/arm/config.h b/keyboards/mechlovin/adelais/standard_led/arm/config.h new file mode 100644 index 000000000000..4377405fc639 --- /dev/null +++ b/keyboards/mechlovin/adelais/standard_led/arm/config.h @@ -0,0 +1,42 @@ +/* +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 . +*/ + +#pragma once + +#define PRODUCT Adelais + +#define MATRIX_ROW_PINS { B1, A0, C13, A1, A2} +#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 +#define BACKLIGHT_PWM_CHANNEL 3 + +#define RGB_DI_PIN A7 +#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/mechlovin/adelais/standard_led/arm/halconf.h b/keyboards/mechlovin/adelais/standard_led/arm/halconf.h new file mode 100644 index 000000000000..aca546705d6c --- /dev/null +++ b/keyboards/mechlovin/adelais/standard_led/arm/halconf.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 . + */ + +#pragma once + +#define HAL_USE_PWM TRUE + +#define HAL_USE_SPI TRUE + +#include_next + 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 000000000000..ac5a23c70e00 --- /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 . + */ + + +#pragma once + +#include_next + +#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/arm/readme.md b/keyboards/mechlovin/adelais/standard_led/arm/readme.md new file mode 100644 index 000000000000..9011ff3a88f6 --- /dev/null +++ b/keyboards/mechlovin/adelais/standard_led/arm/readme.md @@ -0,0 +1,16 @@ +# Adelais + +![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.3 & rev.4 support 3 rotary encoder, USB TypeC both side and reset footprint. + +* Keyboard Maintainer: [Team Mechlovin'](https://github.com/mechlovin) +* 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/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 000000000000..e69de29bb2d1 diff --git a/keyboards/mechlovin/adelais/standard_led/rev2/config.h b/keyboards/mechlovin/adelais/standard_led/arm/rev2/config.h similarity index 100% rename from keyboards/mechlovin/adelais/standard_led/rev2/config.h rename to 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 000000000000..45d48fac4602 --- /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 . + */ + +#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 000000000000..e69de29bb2d1 diff --git a/keyboards/mechlovin/adelais/standard_led/rev3/config.h b/keyboards/mechlovin/adelais/standard_led/arm/rev3/config.h similarity index 100% rename from keyboards/mechlovin/adelais/standard_led/rev3/config.h rename to 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 000000000000..45d48fac4602 --- /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 . + */ + +#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 similarity index 100% rename from keyboards/mechlovin/adelais/standard_led/rev3/rules.mk rename to 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 000000000000..34cbe434957a --- /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 similarity index 100% rename from keyboards/mechlovin/adelais/standard_led/rev4/config.h rename to 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 000000000000..8035195b0fc9 --- /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 000000000000..45d48fac4602 --- /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 . + */ + +#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 similarity index 100% rename from keyboards/mechlovin/adelais/standard_led/rev4/rules.mk rename to 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 000000000000..7a846816d1bb --- /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 000000000000..2a0951eabd36 --- /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 000000000000..e69de29bb2d1 diff --git a/keyboards/mechlovin/adelais/standard_led/avr/readme.md b/keyboards/mechlovin/adelais/standard_led/avr/readme.md new file mode 100644 index 000000000000..aaae225efbde --- /dev/null +++ b/keyboards/mechlovin/adelais/standard_led/avr/readme.md @@ -0,0 +1,16 @@ +# 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://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: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 000000000000..9093d262e4db --- /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 . +*/ +#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 000000000000..37046790feb2 --- /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 . +*/ + +#include +#include +#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 000000000000..9d7d7dbf20bf --- /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 000000000000..7cc7add2c685 --- /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 . + */ + +#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 000000000000..0bba0b6eaf15 --- /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 000000000000..f33198890dde --- /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/config.h b/keyboards/mechlovin/adelais/standard_led/config.h deleted file mode 100644 index 4580e56d5a29..000000000000 --- a/keyboards/mechlovin/adelais/standard_led/config.h +++ /dev/null @@ -1,34 +0,0 @@ -/* -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 . -*/ - -#pragma once - -#define PRODUCT Adelais - -#define MATRIX_ROW_PINS { B1, A0, C13, A1, A2} -#define MATRIX_COL_PINS { A10, A9, A8, B15, B14, B13, B12, B11, B10, B8, B4, B5, B3, C14, A15 } -#define UNUSED_PINS - -#define BACKLIGHT_PIN B0 -#define BACKLIGHT_BREATHING -#define BACKLIGHT_PWM_DRIVER PWMD3 -#define BACKLIGHT_PWM_CHANNEL 3 - -#define RGB_DI_PIN A7 -#define RGBLED_NUM 23 -#define RGBLIGHT_LIMIT_VAL 255 -#define RGBLIGHT_ANIMATIONS diff --git a/keyboards/mechlovin/adelais/standard_led/halconf.h b/keyboards/mechlovin/adelais/standard_led/halconf.h deleted file mode 100644 index 01d02f71c3c1..000000000000 --- a/keyboards/mechlovin/adelais/standard_led/halconf.h +++ /dev/null @@ -1,27 +0,0 @@ -/* 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 . - */ - - -#pragma once - -#define HAL_USE_I2C TRUE - -#define PAL_USE_CALLBACKS FALSE - -#define PAL_USE_WAIT FALSE - -#include_next - diff --git a/keyboards/mechlovin/adelais/standard_led/mcuconf.h b/keyboards/mechlovin/adelais/standard_led/mcuconf.h deleted file mode 100644 index b7ecee020485..000000000000 --- a/keyboards/mechlovin/adelais/standard_led/mcuconf.h +++ /dev/null @@ -1,36 +0,0 @@ -/* 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 . - */ - - -#pragma once - -#include_next - -#undef STM32_GPT_USE_TIM15 -#define STM32_GPT_USE_TIM15 FALSE - -#undef STM32_I2C_USE_I2C1 -#define STM32_I2C_USE_I2C1 TRUE - -#undef STM32_PWM_USE_TIM3 -#define STM32_PWM_USE_TIM3 FALSE - -#undef STM32_SPI_USE_SPI1 -#define STM32_SPI_USE_SPI1 TRUE - -#undef STM32_SPI_USE_SPI2 -#define STM32_SPI_USE_SPI2 FALSE - diff --git a/keyboards/mechlovin/adelais/standard_led/readme.md b/keyboards/mechlovin/adelais/standard_led/readme.md deleted file mode 100644 index a7c76beb4960..000000000000 --- a/keyboards/mechlovin/adelais/standard_led/readme.md +++ /dev/null @@ -1,16 +0,0 @@ -# Adelais - -![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.3 & rev.4 support 3 rotary encoder, USB TypeC both side and reset footprint. - -* Keyboard Maintainer: [Team Mechlovin'](https://github.com/mechlovin) -* 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 - -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/rev4/readme.md b/keyboards/mechlovin/adelais/standard_led/rev4/readme.md deleted file mode 100644 index 333efbacdb4a..000000000000 --- a/keyboards/mechlovin/adelais/standard_led/rev4/readme.md +++ /dev/null @@ -1,16 +0,0 @@ -# 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://github.com/mechlovin) -* 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 - -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/rules.mk b/keyboards/mechlovin/adelais/standard_led/rules.mk index b4523dbf37e3..b3c522ca0678 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/delphine.h b/keyboards/mechlovin/delphine/delphine.h index 1112fc27ffde..da0254eeb400 100644 --- a/keyboards/mechlovin/delphine/delphine.h +++ b/keyboards/mechlovin/delphine/delphine.h @@ -18,6 +18,28 @@ #include "quantum.h" +#define XXX KC_NO + +/* + * ┌───┬───┬───┬───┐ + * │00 │01 │02 │03 │ + * └───┴───┴───┴───┘ + * ┌───┬───┬───┬───┐ + * │10 │11 │12 │13 │ + * ├───┼───┼───┼───┤ ┌───┐ + * │20 │21 │22 │23 │ │ │ + * ├───┼───┼───┼───┤ │23 │ 2u Plus + * │30 │31 │32 │33 │ │ │ + * ├───┼───┼───┼───┤ ├───┤ + * │40 │41 │42 │43 │ │ │ + * ├───┼───┼───┼───┤ │43 │ 2u Enter + * │50 │51 │52 │53 │ │ │ + * └───┴───┴───┴───┘ └───┘ + * ┌───────┐ + * │51 │ 2u 0/Ins + * └───────┘ + */ + #define LAYOUT_ortho_6x4( \ K00, K01, K02, K03, \ K10, K11, K12, K13, \ @@ -33,3 +55,19 @@ { K40, K41, K42, K43 }, \ { K50, K51, K52, K53 }, \ } + +#define LAYOUT_numpad_6x4( \ + K00, K01, K02, K03, \ + K10, K11, K12, K13, \ + K20, K21, K22, \ + K30, K31, K32, K23, \ + K40, K41, K42, \ + K51, K52, K43 \ +) { \ + { K00, K01, K02, K03 }, \ + { K10, K11, K12, K13 }, \ + { K20, K21, K22, K23 }, \ + { K30, K31, K32, XXX }, \ + { K40, K41, K42, K43 }, \ + { XXX, K51, K52, XXX }, \ +} diff --git a/keyboards/mechlovin/delphine/info.json b/keyboards/mechlovin/delphine/info.json index 6356f4a3d602..38ae0a3beb50 100644 --- a/keyboards/mechlovin/delphine/info.json +++ b/keyboards/mechlovin/delphine/info.json @@ -1,9 +1,7 @@ { "keyboard_name": "Delphine", "url": "", - "maintainer": "Team Mechlovin'", - "width": 4, - "height": 6.25, + "maintainer": "mechlovin", "layouts": { "LAYOUT_ortho_6x4": { "layout": [ @@ -32,7 +30,36 @@ {"label":"K52 (D3,D6)", "x":2, "y":5.25}, {"label":"K53 (D3,D2)", "x":3, "y":5.25} ] + }, + "LAYOUT_numpad_6x4": { + "layout": [ + {"label":"K00 (F0,F7)", "x":0, "y":0}, + {"label":"K01 (F0,D7)", "x":1, "y":0}, + {"label":"K02 (F0,D6)", "x":2, "y":0}, + {"label":"K03 (F0,D2)", "x":3, "y":0}, + + {"label":"K10 (F1,F7)", "x":0, "y":1.25}, + {"label":"K11 (F1,D7)", "x":1, "y":1.25}, + {"label":"K12 (F1,D6)", "x":2, "y":1.25}, + {"label":"K13 (F1,D2)", "x":3, "y":1.25}, + + {"label":"K20 (F4,F7)", "x":0, "y":2.25}, + {"label":"K21 (F4,D7)", "x":1, "y":2.25}, + {"label":"K22 (F4,D6)", "x":2, "y":2.25}, + + {"label":"K30 (F5,F7)", "x":0, "y":3.25}, + {"label":"K31 (F5,D7)", "x":1, "y":3.25}, + {"label":"K32 (F5,D6)", "x":2, "y":3.25}, + {"label":"K23 (F4,D2)", "x":3, "y":2.25, "h":2}, + + {"label":"K40 (F6,F7)", "x":0, "y":4.25}, + {"label":"K41 (F6,D7)", "x":1, "y":4.25}, + {"label":"K42 (F6,D6)", "x":2, "y":4.25}, + + {"label":"K51 (D3,D7)", "x":0, "y":5.25, "w":2}, + {"label":"K52 (D3,D6)", "x":2, "y":5.25}, + {"label":"K43 (F6,D2)", "x":3, "y":4.25, "h":2} + ] } } - ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/" } diff --git a/keyboards/mechlovin/delphine/rgb_led/config.h b/keyboards/mechlovin/delphine/rgb_led/config.h index 4d5c853d0c10..0ed8721d23eb 100644 --- a/keyboards/mechlovin/delphine/rgb_led/config.h +++ b/keyboards/mechlovin/delphine/rgb_led/config.h @@ -24,7 +24,7 @@ // #define RGBLIGHT_EFFECT_RGB_TEST // #define RGBLIGHT_EFFECT_ALTERNATING #endif - + //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: @@ -33,15 +33,60 @@ // 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) #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -#define RGB_DISABLE_WHEN_USB_SUSPENDED false // turn off effects when suspended +// #define RGB_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 +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH diff --git a/keyboards/mechlovin/delphine/rgb_led/rgb_led.c b/keyboards/mechlovin/delphine/rgb_led/rgb_led.c index 6f3e3ec731e6..413a9a06ea66 100644 --- a/keyboards/mechlovin/delphine/rgb_led/rgb_led.c +++ b/keyboards/mechlovin/delphine/rgb_led/rgb_led.c @@ -18,7 +18,7 @@ #ifdef RGB_MATRIX_ENABLE -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { // left CA {0, C5_2, C6_2, C7_2}, //D2-0 {0, C1_1, C3_2, C4_2}, //D20-1 diff --git a/keyboards/mechlovin/delphine/rules.mk b/keyboards/mechlovin/delphine/rules.mk index 217bb758b252..8a55d378ef9e 100644 --- a/keyboards/mechlovin/delphine/rules.mk +++ b/keyboards/mechlovin/delphine/rules.mk @@ -7,19 +7,17 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output -LAYOUTS = ortho_6x4 -DEFAULT_FOLDER = mechlovin/delphine/mono_led \ No newline at end of file +LAYOUTS = numpad_6x4 ortho_6x4 + +DEFAULT_FOLDER = mechlovin/delphine/mono_led diff --git a/keyboards/mechlovin/hannah60rgb/rev1/config.h b/keyboards/mechlovin/hannah60rgb/rev1/config.h index 20873e716129..0f0c923fd09f 100644 --- a/keyboards/mechlovin/hannah60rgb/rev1/config.h +++ b/keyboards/mechlovin/hannah60rgb/rev1/config.h @@ -11,8 +11,56 @@ # 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 false // 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 -#endif \ No newline at end of file +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH +#endif diff --git a/keyboards/mechlovin/hannah60rgb/rev1/info.json b/keyboards/mechlovin/hannah60rgb/rev1/info.json index f729ac8f29ed..48c878edb11f 100644 --- a/keyboards/mechlovin/hannah60rgb/rev1/info.json +++ b/keyboards/mechlovin/hannah60rgb/rev1/info.json @@ -1,9 +1,7 @@ { - "keyboard_name": "hannah60rgb", + "keyboard_name": "hannah60rgb rev1", "url": "", - "maintainer": "Team Mechlovin'", - "width": 15, - "height": 5, + "maintainer": "mechlovin", "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/mechlovin/hannah60rgb/rev1/rev1.c b/keyboards/mechlovin/hannah60rgb/rev1/rev1.c index 5acea8c665fe..6b1b8604a2be 100644 --- a/keyboards/mechlovin/hannah60rgb/rev1/rev1.c +++ b/keyboards/mechlovin/hannah60rgb/rev1/rev1.c @@ -16,13 +16,6 @@ #include "hannah60rgb.h" -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - matrix_init_user(); - led_init_ports(); -}; - #ifdef RGB_MATRIX_ENABLE led_config_t g_led_config = { { //Key Matrix to LED Index diff --git a/keyboards/mechlovin/hannah60rgb/rev1/rev1.h b/keyboards/mechlovin/hannah60rgb/rev1/rev1.h index 8fd1c67979a0..6563644593bb 100644 --- a/keyboards/mechlovin/hannah60rgb/rev1/rev1.h +++ b/keyboards/mechlovin/hannah60rgb/rev1/rev1.h @@ -18,6 +18,31 @@ along with this program. If not, see . #include "quantum.h" +#define XXX KC_NO + +/* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───────┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │1D │ │0D │ 2u Backspace + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ └─┬─────┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │2C │ │ │ + * 2.25u ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ┌──┴┐2D │ ISO Enter + * LShift │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2D │ │2C │ │ + * ┌────────┐ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌─┴───┴────┤ + * │30 │ │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │ │3C │ 2.75u RShift + * └────────┘ ├────┼───┴┬──┴─┬─┴───┴──┬┴───┼───┴───┴──┬┴───┼───┴┬────┬┴───┤ └──────────┘ + * │40 │41 │42 │44 │46 │48 │4A │4B │4C │4D │ Split Space 1 + * └────┴────┴────┴────────┴────┴──────────┴────┴────┴────┴────┘ + * ┌────┬────┬────┬──────────┬────┬────────┬────┬────┬────┬────┐ + * │40 │41 │42 │44 │46 │48 │4A │4B │4C │4D │ Split Space 2 + * └────┴────┴────┴──────────┴────┴────────┴────┴────┴────┴────┘ + * ┌────┬────┬────┬────────────────────────┬────┬────┬────┬────┐ + * │40 │41 │42 │46 │4A │4B │4C │4D │ Standard + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ + * ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐ + * │40 │41 │42 │46 │4B │4C │4D │ Tsangan/WKL + * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ + */ + #define LAYOUT_all( \ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K1D, \ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K2C, \ @@ -25,11 +50,11 @@ 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, \ K40, K41, K42, K44, K46, K48, 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, KC_NO, K44, KC_NO, K46, KC_NO, K48, 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, K2C, K2D }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \ + { K40, K41, K42, XXX, K44, XXX, K46, XXX, K48, XXX, K4A, K4B, K4C, K4D }, \ } #define LAYOUT_60_ansi( \ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \ @@ -38,11 +63,11 @@ K40, K41, K42, K44, K46, K48, K4A, K4B, K4C, K4D \ 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 }, \ - { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KC_NO }, \ - { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \ - { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KC_NO }, \ - { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, 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, 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, K3C, XXX }, \ + { K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D }, \ } #define LAYOUT_60_iso( \ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \ @@ -51,13 +76,9 @@ K40, K41, K42, K44, K46, K48, K4A, K4B, K4C, K4D \ K30, K31, 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 }, \ - { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KC_NO }, \ - { 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, KC_NO }, \ - { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, 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, 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, K3C, XXX }, \ + { K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D }, \ } - - -// generated by KBFirmware JSON to QMK Parser -// https://noroadsleft.github.io/kbf_qmk_converter/ diff --git a/keyboards/mechlovin/hannah60rgb/rev2/config.h b/keyboards/mechlovin/hannah60rgb/rev2/config.h index 2bcffbc85631..e96ca0002a11 100644 --- a/keyboards/mechlovin/hannah60rgb/rev2/config.h +++ b/keyboards/mechlovin/hannah60rgb/rev2/config.h @@ -30,11 +30,59 @@ #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 false // 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 +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH #if defined(RGBLIGHT_ENABLE) && defined(RGB_MATRIX_ENABLE) # define RGB_MATRIX_DISABLE_KEYCODES -#endif \ No newline at end of file +#endif diff --git a/keyboards/mechlovin/hannah60rgb/rev2/info.json b/keyboards/mechlovin/hannah60rgb/rev2/info.json index 44e0836727e7..74490e03e376 100644 --- a/keyboards/mechlovin/hannah60rgb/rev2/info.json +++ b/keyboards/mechlovin/hannah60rgb/rev2/info.json @@ -1,9 +1,7 @@ { - "keyboard_name": "hannah60rgb", + "keyboard_name": "hannah60rgb rev2", "url": "", - "maintainer": "Team Mechlovin'", - "width": 15, - "height": 5, + "maintainer": "mechlovin", "layouts": { "LAYOUT_all": { "layout": [ @@ -76,6 +74,145 @@ {"x": 12.5, "y": 4, "w": 1.25}, {"x": 13.75, "y": 4, "w": 1.25} ] + }, + "LAYOUT_60_ansi": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":2.75}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":12.5, "y":4, "w":1.25}, + {"x":13.75, "y":4, "w":1.25} + ] + }, + "LAYOUT_60_iso": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + {"x":13.75, "y":1, "w":1.25, "h":2}, + + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":2.75}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":12.5, "y":4, "w":1.25}, + {"x":13.75, "y":4, "w":1.25} + ] } } } diff --git a/keyboards/mechlovin/hannah60rgb/rev2/rev2.c b/keyboards/mechlovin/hannah60rgb/rev2/rev2.c index 05469a1bbe47..ac371e4185f8 100644 --- a/keyboards/mechlovin/hannah60rgb/rev2/rev2.c +++ b/keyboards/mechlovin/hannah60rgb/rev2/rev2.c @@ -17,7 +17,7 @@ #include "rev2.h" #ifdef RGB_MATRIX_ENABLE -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { /* Refer to IS31 manual for these locations * driver * | R location diff --git a/keyboards/mechlovin/hannah60rgb/rev2/rev2.h b/keyboards/mechlovin/hannah60rgb/rev2/rev2.h index 3382941e49cc..7e10c6769aff 100644 --- a/keyboards/mechlovin/hannah60rgb/rev2/rev2.h +++ b/keyboards/mechlovin/hannah60rgb/rev2/rev2.h @@ -18,6 +18,25 @@ along with this program. If not, see . #include "quantum.h" +#define XXX KC_NO + +/* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───────┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │1D │ │0D │ 2u Backspace + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ └─┬─────┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │2C │ │ │ + * 2.25u ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ┌──┴┐2D │ ISO Enter + * LShift │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2D │ │2C │ │ + * ┌────────┐ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌─┴───┴────┤ + * │30 │ │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │ │3C │ 2.75u RShift + * └────────┘ ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ └──────────┘ + * │40 │41 │42 │46 │4A │4B │4C │4D │ Standard + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ + * ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐ + * │40 │41 │42 │46 │4B │4C │4D │ Tsangan/WKL + * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ + */ + #define LAYOUT_all( \ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K1D, \ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K2C, \ @@ -25,9 +44,37 @@ 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, \ 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, 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, KC_NO, K46, 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, K2C, K2D }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, 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, K3C, \ + 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, K3C, XXX }, \ + { K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D }, \ +} + +#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, K3C, \ + 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, K3C, XXX }, \ + { K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D }, \ } diff --git a/keyboards/mechlovin/hannah60rgb/rules.mk b/keyboards/mechlovin/hannah60rgb/rules.mk index 3d11b3c9ab4c..dcf3a6a8a4f7 100644 --- a/keyboards/mechlovin/hannah60rgb/rules.mk +++ b/keyboards/mechlovin/hannah60rgb/rules.mk @@ -8,20 +8,16 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output -# generated by KBFirmware JSON to QMK Parser -# https://noroadsleft.github.io/kbf_qmk_converter/ +LAYOUTS = 60_ansi 60_iso DEFAULT_FOLDER = mechlovin/hannah60rgb/rev1 diff --git a/keyboards/mechlovin/hannah65/hannah65.h b/keyboards/mechlovin/hannah65/hannah65.h index 576a78510d8a..99da5a2a1a9d 100644 --- a/keyboards/mechlovin/hannah65/hannah65.h +++ b/keyboards/mechlovin/hannah65/hannah65.h @@ -20,6 +20,4 @@ #if defined(KEYBOARD_mechlovin_hannah65_rev1) # include "rev1.h" -#elif defined(KEYBOARD_mechlovin_hannah65_mechlovin9) -# include "mechlovin9.h" #endif \ No newline at end of file diff --git a/keyboards/mechlovin/hannah65/mechlovin9/config.h b/keyboards/mechlovin/hannah65/mechlovin9/config.h deleted file mode 100644 index 68097bd62394..000000000000 --- a/keyboards/mechlovin/hannah65/mechlovin9/config.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once - -#define PRODUCT_ID 0x6509 -#define DEVICE_VER 0x0001 -#define PRODUCTION Mechlovin9 \ No newline at end of file diff --git a/keyboards/mechlovin/hannah65/mechlovin9/info.json b/keyboards/mechlovin/hannah65/mechlovin9/info.json deleted file mode 100644 index 24585920a2a7..000000000000 --- a/keyboards/mechlovin/hannah65/mechlovin9/info.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "keyboard_name": "mechlovin9", - "url": "", - "maintainer": "Team Mechlovin", - "width": 16, - "height": 5, - "layouts": { - "LAYOUT_all": { - "layout": [ - {"label":"K00 (B0,B5)", "x":0, "y":0}, - {"label":"K01 (B0,B6)", "x":1, "y":0}, - {"label":"K02 (B0,B7)", "x":2, "y":0}, - {"label":"K03 (B0,C0)", "x":3, "y":0}, - {"label":"K04 (B0,C1)", "x":4, "y":0}, - {"label":"K05 (B0,C2)", "x":5, "y":0}, - {"label":"K06 (B0,C3)", "x":6, "y":0}, - {"label":"K07 (B0,C4)", "x":7, "y":0}, - {"label":"K08 (B0,C5)", "x":8, "y":0}, - {"label":"K09 (B0,C6)", "x":9, "y":0}, - {"label":"K0A (B0,C7)", "x":10, "y":0}, - {"label":"K0B (B0,D0)", "x":11, "y":0}, - {"label":"K0C (B0,D1)", "x":12, "y":0}, - {"label":"K0D (B0,D2)", "x":13, "y":0}, - {"label":"K1D (B1,D2)", "x":14, "y":0}, - {"label":"K0E (B0,D3)", "x":15, "y":0}, - {"label":"K10 (B1,B5)", "x":0, "y":1, "w":1.5}, - {"label":"K11 (B1,B6)", "x":1.5, "y":1}, - {"label":"K12 (B1,B7)", "x":2.5, "y":1}, - {"label":"K13 (B1,C0)", "x":3.5, "y":1}, - {"label":"K14 (B1,C1)", "x":4.5, "y":1}, - {"label":"K15 (B1,C2)", "x":5.5, "y":1}, - {"label":"K16 (B1,C3)", "x":6.5, "y":1}, - {"label":"K17 (B1,C4)", "x":7.5, "y":1}, - {"label":"K18 (B1,C5)", "x":8.5, "y":1}, - {"label":"K19 (B1,C6)", "x":9.5, "y":1}, - {"label":"K1A (B1,C7)", "x":10.5, "y":1}, - {"label":"K1B (B1,D0)", "x":11.5, "y":1}, - {"label":"K1C (B1,D1)", "x":12.5, "y":1}, - {"label":"K2C (B2,D1)", "x":13.5, "y":1, "w":1.5}, - {"label":"K1E (B1,D3)", "x":15, "y":1}, - {"label":"K20 (B2,B5)", "x":0, "y":2, "w":1.75}, - {"label":"K21 (B2,B6)", "x":1.75, "y":2}, - {"label":"K22 (B2,B7)", "x":2.75, "y":2}, - {"label":"K23 (B2,C0)", "x":3.75, "y":2}, - {"label":"K24 (B2,C1)", "x":4.75, "y":2}, - {"label":"K25 (B2,C2)", "x":5.75, "y":2}, - {"label":"K26 (B2,C3)", "x":6.75, "y":2}, - {"label":"K27 (B2,C4)", "x":7.75, "y":2}, - {"label":"K28 (B2,C5)", "x":8.75, "y":2}, - {"label":"K29 (B2,C6)", "x":9.75, "y":2}, - {"label":"K2A (B2,C7)", "x":10.75, "y":2}, - {"label":"K2B (B2,D0)", "x":11.75, "y":2}, - {"label":"K2D (B2,D2)", "x":12.75, "y":2, "w":2.25}, - {"label":"K2E (B2,D3)", "x":15, "y":2}, - {"label":"K30 (B3,B5)", "x":0, "y":3, "w":2.25}, - {"label":"K32 (B3,B7)", "x":2.25, "y":3}, - {"label":"K33 (B3,C0)", "x":3.25, "y":3}, - {"label":"K34 (B3,C1)", "x":4.25, "y":3}, - {"label":"K35 (B3,C2)", "x":5.25, "y":3}, - {"label":"K36 (B3,C3)", "x":6.25, "y":3}, - {"label":"K37 (B3,C4)", "x":7.25, "y":3}, - {"label":"K38 (B3,C5)", "x":8.25, "y":3}, - {"label":"K39 (B3,C6)", "x":9.25, "y":3}, - {"label":"K3A (B3,C7)", "x":10.25, "y":3}, - {"label":"K3B (B3,D0)", "x":11.25, "y":3}, - {"label":"K3C (B3,D1)", "x":12.25, "y":3, "w":1.75}, - {"label":"K3D (B3,D2)", "x":14, "y":3}, - {"label":"K3E (B3,D3)", "x":15, "y":3}, - {"label":"K40 (B4,B5)", "x":0, "y":4, "w":1.5}, - {"label":"K41 (B4,B6)", "x":1.5, "y":4}, - {"label":"K42 (B4,B7)", "x":2.5, "y":4, "w":1.5}, - {"label":"K46 (B4,C3)", "x":4, "y":4, "w":7}, - {"label":"K4B (B4,D0)", "x":11, "y":4, "w":1.5}, - {"label":"K4C (B4,D1)", "x":13, "y":4}, - {"label":"K4D (B4,D2)", "x":14, "y":4}, - {"label":"K4E (B4,D3)", "x":15, "y":4} - ] - } - } -} diff --git a/keyboards/mechlovin/hannah65/mechlovin9/readme.md b/keyboards/mechlovin/hannah65/mechlovin9/readme.md deleted file mode 100644 index aa6bdc1cad3d..000000000000 --- a/keyboards/mechlovin/hannah65/mechlovin9/readme.md +++ /dev/null @@ -1,15 +0,0 @@ -# mechlovin9 - -![mechlovin9](https://i.imgur.com/T5Lm6OYl.png) - -A 65% PCB, compatible with Kyuu. - -* Keyboard Maintainer: [Team Mechlovin](https://github.com/mechlovin) -* Hardware Supported: Kyuu Keyboard. -* Hardware Availability: [Reddit GB](https://www.reddit.com/r/mechmarket/comments/i61par/gb_mechlovin_9_a_kyuu_65_keyboard_compatible_pcb/) - -Make example for this keyboard (after setting up your build environment): - - make mechlovin/hannah65/mechlovin9: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/hannah65/rev1/config.h b/keyboards/mechlovin/hannah65/rev1/config.h deleted file mode 100644 index 8d90908c20e3..000000000000 --- a/keyboards/mechlovin/hannah65/rev1/config.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once - -#define PRODUCT_ID 0x6500 -#define DEVICE_VER 0x0001 -#define PRODUCTION Hannah65 \ No newline at end of file diff --git a/keyboards/mechlovin/hannah65/rev1/haus/config.h b/keyboards/mechlovin/hannah65/rev1/haus/config.h new file mode 100644 index 000000000000..4d517ef47592 --- /dev/null +++ b/keyboards/mechlovin/hannah65/rev1/haus/config.h @@ -0,0 +1,22 @@ +/* +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 . +*/ + +#pragma once + +#define PRODUCT_ID 0x6500 +#define DEVICE_VER 0x0001 +#define PRODUCTION Haus Rev. 1 \ No newline at end of file diff --git a/keyboards/mechlovin/hannah65/rev1/haus/readme.md b/keyboards/mechlovin/hannah65/rev1/haus/readme.md new file mode 100644 index 000000000000..5f937bf20dd5 --- /dev/null +++ b/keyboards/mechlovin/hannah65/rev1/haus/readme.md @@ -0,0 +1,23 @@ +# Haus + +![Haus](https://i.imgur.com/sQ2QWAZh.jpg) + +A Haus PCB, Rev.1 + +* Keyboard Maintainer: [Hand Engineering](https://www.reddit.com/r/MechanicalKeyboards/comments/hzcavx/haus_by_hand_engineering/) +* Hardware Supported: Haus PCB rev.1, STM32F303. +* Hardware Availability: Haus Keyboard. + +Make example for this keyboard (after setting up your build environment): + + make mechlovin/hannah65/rev1/haus:default + +Flashing example for this keyboard: + + make mechlovin/hannah65/rev1/haus:flash + + + +**Reset Key:** To put the Haus PCB into bootloader, push reset swith on the bottom of the PCB. + +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/hannah65/rev1/haus/rules.mk b/keyboards/mechlovin/hannah65/rev1/haus/rules.mk new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/keyboards/mechlovin/hannah65/rev1/info.json b/keyboards/mechlovin/hannah65/rev1/info.json index ceb7aceb383f..329c4040c844 100644 --- a/keyboards/mechlovin/hannah65/rev1/info.json +++ b/keyboards/mechlovin/hannah65/rev1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "hannah65-rev1", "url": "", "maintainer": "Team Mechlovin", - "width": 16, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/mechlovin/hannah65/rev1/readme.md b/keyboards/mechlovin/hannah65/rev1/readme.md new file mode 100644 index 000000000000..d8179f56fdee --- /dev/null +++ b/keyboards/mechlovin/hannah65/rev1/readme.md @@ -0,0 +1,19 @@ +# hannah65 rev1 + +![hannah65](https://i.imgur.com/qf0BYI2l.png) + +A 65% PCB, compatible with E6.5, Kyuu,... + +* Keyboard Maintainer: [Team Mechlovin](https://github.com/mechlovin) +* Hardware Supported: Hannah65, STM32F303 +* Hardware Availability: [Mechlovin Store](https://mechlovin.studio) + +Make example for this keyboard (after setting up your build environment): + + make mechlovin/hannah65/rev1:default + +Flashing example for this keyboard: + + make mechlovin/hannah65/rev1:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/mechlovin/hannah65/rev1/rules.mk b/keyboards/mechlovin/hannah65/rev1/rules.mk index e69de29bb2d1..ae9bc176a4c9 100644 --- a/keyboards/mechlovin/hannah65/rev1/rules.mk +++ b/keyboards/mechlovin/hannah65/rev1/rules.mk @@ -0,0 +1 @@ +DEFAULT_FOLDER = mechlovin/hannah65/rev1/haus diff --git a/keyboards/mechlovin/hannah65/rules.mk b/keyboards/mechlovin/hannah65/rules.mk index 656722353c08..e5e9af594254 100644 --- a/keyboards/mechlovin/hannah65/rules.mk +++ b/keyboards/mechlovin/hannah65/rules.mk @@ -8,18 +8,15 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output -DEFAULT_FOLDER = mechlovin/hannah65/rev1 +DEFAULT_FOLDER = mechlovin/hannah65/rev1/haus diff --git a/keyboards/mechlovin/hannah910/config.h b/keyboards/mechlovin/hannah910/config.h index 56f3c97aeb3b..7e0b9dd30c0b 100644 --- a/keyboards/mechlovin/hannah910/config.h +++ b/keyboards/mechlovin/hannah910/config.h @@ -91,59 +91,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -162,26 +109,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/mechlovin/hannah910/hannah910.c b/keyboards/mechlovin/hannah910/hannah910.c index 2c696ab564fe..3237636be22d 100644 --- a/keyboards/mechlovin/hannah910/hannah910.c +++ b/keyboards/mechlovin/hannah910/hannah910.c @@ -15,10 +15,6 @@ */ #include "hannah910.h" -void matrix_init_kb(void) { - matrix_init_user(); - led_init_ports(); -}; void led_init_ports(void) { setPinOutput(B2); setPinOutput(D0); @@ -35,7 +31,7 @@ void led_set_kb(uint8_t usb_led) { led_set_user(usb_led); } -uint32_t layer_state_set_user(uint32_t state) +layer_state_t layer_state_set_user(layer_state_t state) { // if on layer 1, turn on D2 LED, otherwise off. if (biton32(state) == 1) { diff --git a/keyboards/mechlovin/hannah910/rev1/info.json b/keyboards/mechlovin/hannah910/rev1/info.json index 7bc6c744140e..1f130c69923f 100644 --- a/keyboards/mechlovin/hannah910/rev1/info.json +++ b/keyboards/mechlovin/hannah910/rev1/info.json @@ -2,20 +2,15 @@ "keyboard_name": "Hannah910", "url": "", "maintainer": "Mechlovin'", - "width": 16, - "height": 5, "layouts": { "LAYOUT_all": { - "key_count": 71, "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}, {"label":"Back", "x":13, "y":0}, {"label":"Delete", "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":"INS", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.25}, {"label":"HOME", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"label":"Shift", "x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Up", "x":14, "y":3}, {"label":"END", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"label":"Space", "x":3.75, "y":4, "w":2.75}, {"label":"Space", "x":6.5, "y":4, "w":1.25}, {"label":"Space", "x":7.75, "y":4, "w":2.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"Left", "x":13, "y":4}, {"label":"Down", "x":14, "y":4}, {"label":"Right", "x":15, "y":4}] }, "LAYOUT_iso": { - "key_count": 68, "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":"INS", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, {"label":"HOME", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"label":"Shift", "x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Up", "x":14, "y":3}, {"label":"END", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"label":"6.25U", "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":"Left", "x":13, "y":4}, {"label":"Down", "x":14, "y":4}, {"label":"Right", "x":15, "y":4}] }, "LAYOUT_ansi": { - "key_count": 66, "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}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"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":"INS", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"HOME", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Up", "x":14, "y":3}, {"label":"END", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"label":"6.25U", "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":"Left", "x":13, "y":4}, {"label":"Down", "x":14, "y":4}, {"label":"Right", "x":15, "y":4}] } } -} \ No newline at end of file +} diff --git a/keyboards/mechlovin/hannah910/rev1/rules.mk b/keyboards/mechlovin/hannah910/rev1/rules.mk index d000eafc62ad..f139207d3467 100644 --- a/keyboards/mechlovin/hannah910/rev1/rules.mk +++ b/keyboards/mechlovin/hannah910/rev1/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/mechlovin/hannah910/rev2/info.json b/keyboards/mechlovin/hannah910/rev2/info.json index b094bfdcf86d..c2e5dd1a3e89 100644 --- a/keyboards/mechlovin/hannah910/rev2/info.json +++ b/keyboards/mechlovin/hannah910/rev2/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Hannah910 Rev.2", "url": "", "maintainer": "Team Mechlovin'", - "width": 16, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/mechlovin/hannah910/rev2/rules.mk b/keyboards/mechlovin/hannah910/rev2/rules.mk index f66b6105dbdd..23827411fcc2 100644 --- a/keyboards/mechlovin/hannah910/rev2/rules.mk +++ b/keyboards/mechlovin/hannah910/rev2/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LAYOUTS = 65_ansi_blocker 65_iso_blocker_split_bs diff --git a/keyboards/mechlovin/hannah910/rev3/config.h b/keyboards/mechlovin/hannah910/rev3/config.h index b6e539d67448..5e377f4d79ef 100644 --- a/keyboards/mechlovin/hannah910/rev3/config.h +++ b/keyboards/mechlovin/hannah910/rev3/config.h @@ -3,4 +3,4 @@ #define PRODUCT_ID 0x9103 #define DEVICE_VER 0x0002 -#define RGBLED_NUM 28 \ No newline at end of file +#define RGBLED_NUM 28 diff --git a/keyboards/mechlovin/hannah910/rev3/info.json b/keyboards/mechlovin/hannah910/rev3/info.json index 8cde5d253ce0..bb762dd58934 100644 --- a/keyboards/mechlovin/hannah910/rev3/info.json +++ b/keyboards/mechlovin/hannah910/rev3/info.json @@ -2,8 +2,6 @@ "keyboard_name": "hannah910-rev3", "url": "", "maintainer": "Team Mechlovin'", - "width": 16, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/mechlovin/hannah910/rev3/rules.mk b/keyboards/mechlovin/hannah910/rev3/rules.mk index a8100762d3a4..3475e32edce4 100644 --- a/keyboards/mechlovin/hannah910/rev3/rules.mk +++ b/keyboards/mechlovin/hannah910/rev3/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LAYOUTS = 65_ansi \ No newline at end of file diff --git a/keyboards/mechlovin/hex4b/config.h b/keyboards/mechlovin/hex4b/config.h new file mode 100644 index 000000000000..789e5517b421 --- /dev/null +++ b/keyboards/mechlovin/hex4b/config.h @@ -0,0 +1,64 @@ +/* +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 . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4D4C //MechLovin +#define PRODUCT_ID 0x0675 //Hex-75 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Team Mechlovin +#define PRODUCT Hex 4B + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 15 + +/* + * 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 { B7, A2, A1, A3, A4, A5 } +#define MATRIX_COL_PINS { B6, B5, B3, B2, B1, B0, A0, A6, A7, C7, C6, C5, C4, D1, D0 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +#define LED_NUM_LOCK_PIN D6 +#define LED_CAPS_LOCK_PIN D7 +#define LED_SCROLL_LOCK_PIN D5 +#define LED_PIN_ON_STATE 0 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +#define BACKLIGHT_PIN D4 +#define BACKLIGHT_LEVELS 5 +#define BACKLIGHT_BREATHING + +/* Bootmagic Lite key configuration, Backspace */ +#define BOOTMAGIC_LITE_ROW 1 +#define BOOTMAGIC_LITE_COLUMN 14 diff --git a/keyboards/mechlovin/hex4b/hex4b.c b/keyboards/mechlovin/hex4b/hex4b.c new file mode 100644 index 000000000000..fb8c4aef1632 --- /dev/null +++ b/keyboards/mechlovin/hex4b/hex4b.c @@ -0,0 +1,17 @@ +/* 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 . + */ + +#include "hex4b.h" diff --git a/keyboards/mechlovin/hex4b/hex4b.h b/keyboards/mechlovin/hex4b/hex4b.h new file mode 100644 index 000000000000..17e2da910fc7 --- /dev/null +++ b/keyboards/mechlovin/hex4b/hex4b.h @@ -0,0 +1,104 @@ +/* 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 . + */ + +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +/* + * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┐ + * │00 │ │01 │02 │03 │04 │ │06 │07 │08 │09 │ │0A │0B │0C │0D │ │0E │ + * ├───┼─┴─┬─┴─┬─┴─┬─┴─┬─┴─┼───┼───┼───┼───┼─┴─┬─┴─┬─┴─┬─┴─┬─┴─┼───┤ ┌───────┐ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │3C │1E │ │1D │ 2u Backspace + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ └───────┘ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2D │2E │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3D │3E │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + * │40 │42 │43 │44 │45 │46 │47 │48 │49 │4A │4B │4C │4D │4E │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───────┼───┤ + * │50 │51 │52 │56 │5A │5B │ │5C │5D │5E │ + * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + * ┌─────┬───┬─────┬───────────────────────────┬─────┐ + * │50 │51 │52 │56 │5B │ Tsangan + * └─────┴───┴─────┴───────────────────────────┴─────┘ + */ + +#define LAYOUT_split_bs( \ + K00, K01, K02, K03, K04, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K3C, 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, K3D, K3E, \ + K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, \ + K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E \ +) { \ + { K00, K01, K02, K03, K04, XXX, 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, XXX, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E }, \ + { K50, K51, K52, XXX, XXX, XXX, K56, XXX, XXX, XXX, K5A, K5B, K5C, K5D, K5E }, \ +} + +#define LAYOUT_2u_bs( \ + K00, K01, K02, K03, K04, 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, K3D, K3E, \ + K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, \ + K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E \ +) { \ + { K00, K01, K02, K03, K04, XXX, 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, XXX, K3D, K3E }, \ + { K40, XXX, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E }, \ + { K50, K51, K52, XXX, XXX, XXX, K56, XXX, XXX, XXX, K5A, K5B, K5C, K5D, K5E }, \ +} + +#define LAYOUT_tsangan_split_bs( \ + K00, K01, K02, K03, K04, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K3C, 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, K3D, K3E, \ + K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, \ + K50, K51, K52, K56, K5B, K5C, K5D, K5E \ +) { \ + { K00, K01, K02, K03, K04, XXX, 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, XXX, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E }, \ + { K50, K51, K52, XXX, XXX, XXX, K56, XXX, XXX, XXX, XXX, K5B, K5C, K5D, K5E }, \ +} + +#define LAYOUT_tsangan_2u_bs( \ + K00, K01, K02, K03, K04, 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, K3D, K3E, \ + K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, \ + K50, K51, K52, K56, K5B, K5C, K5D, K5E \ +) { \ + { K00, K01, K02, K03, K04, XXX, 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, XXX, K3D, K3E }, \ + { K40, XXX, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E }, \ + { K50, K51, K52, XXX, XXX, XXX, K56, XXX, XXX, XXX, XXX, K5B, K5C, K5D, K5E }, \ +} diff --git a/keyboards/mechlovin/hex4b/info.json b/keyboards/mechlovin/hex4b/info.json new file mode 100644 index 000000000000..686d79cc0e8e --- /dev/null +++ b/keyboards/mechlovin/hex4b/info.json @@ -0,0 +1,371 @@ +{ + "keyboard_name": "Hex4B", + "url": "", + "maintainer": "Hex-Keyboard&Mechlovin", + "layout_aliases": { + "LAYOUT": "LAYOUT_split_bs", + "LAYOUT_all": "LAYOUT_split_bs" + }, + "layouts": { + "LAYOUT_split_bs": { + "layout": [ + {"label":"K00 (B0,B6)", "x":0, "y":0}, + {"label":"K01 (B0,B7)", "x":1.5, "y":0}, + {"label":"K02 (B0,C0)", "x":2.5, "y":0}, + {"label":"K03 (B0,C1)", "x":3.5, "y":0}, + {"label":"K04 (B0,C2)", "x":4.5, "y":0}, + {"label":"K06 (B0,C4)", "x":6, "y":0}, + {"label":"K07 (B0,C5)", "x":7, "y":0}, + {"label":"K08 (B0,C6)", "x":8, "y":0}, + {"label":"K09 (B0,C7)", "x":9, "y":0}, + {"label":"K0A (B0,D0)", "x":10.5, "y":0}, + {"label":"K0B (B0,D1)", "x":11.5, "y":0}, + {"label":"K0C (B0,D2)", "x":12.5, "y":0}, + {"label":"K0D (B0,D3)", "x":13.5, "y":0}, + {"label":"K0E (B0,D4)", "x":15, "y":0}, + + {"label":"K10 (B1,B6)", "x":0, "y":1}, + {"label":"K11 (B1,B7)", "x":1, "y":1}, + {"label":"K12 (B1,C0)", "x":2, "y":1}, + {"label":"K13 (B1,C1)", "x":3, "y":1}, + {"label":"K14 (B1,C2)", "x":4, "y":1}, + {"label":"K15 (B1,C3)", "x":5, "y":1}, + {"label":"K16 (B1,C4)", "x":6, "y":1}, + {"label":"K17 (B1,C5)", "x":7, "y":1}, + {"label":"K18 (B1,C6)", "x":8, "y":1}, + {"label":"K19 (B1,C7)", "x":9, "y":1}, + {"label":"K1A (B1,D0)", "x":10, "y":1}, + {"label":"K1B (B1,D1)", "x":11, "y":1}, + {"label":"K1C (B1,D2)", "x":12, "y":1}, + {"label":"K1D (B1,D3)", "x":13, "y":1}, + {"label":"K3C (B3,D2)", "x":14, "y":1}, + {"label":"K1E (B1,D4)", "x":15, "y":1}, + + {"label":"K20 (B2,B6)", "x":0, "y":2, "w":1.5}, + {"label":"K21 (B2,B7)", "x":1.5, "y":2}, + {"label":"K22 (B2,C0)", "x":2.5, "y":2}, + {"label":"K23 (B2,C1)", "x":3.5, "y":2}, + {"label":"K24 (B2,C2)", "x":4.5, "y":2}, + {"label":"K25 (B2,C3)", "x":5.5, "y":2}, + {"label":"K26 (B2,C4)", "x":6.5, "y":2}, + {"label":"K27 (B2,C5)", "x":7.5, "y":2}, + {"label":"K28 (B2,C6)", "x":8.5, "y":2}, + {"label":"K29 (B2,C7)", "x":9.5, "y":2}, + {"label":"K2A (B2,D0)", "x":10.5, "y":2}, + {"label":"K2B (B2,D1)", "x":11.5, "y":2}, + {"label":"K2C (B2,D2)", "x":12.5, "y":2}, + {"label":"K2D (B2,D3)", "x":13.5, "y":2, "w":1.5}, + {"label":"K2E (B2,D4)", "x":15, "y":2}, + + {"label":"K30 (B3,B6)", "x":0, "y":3, "w":1.75}, + {"label":"K31 (B3,B7)", "x":1.75, "y":3}, + {"label":"K32 (B3,C0)", "x":2.75, "y":3}, + {"label":"K33 (B3,C1)", "x":3.75, "y":3}, + {"label":"K34 (B3,C2)", "x":4.75, "y":3}, + {"label":"K35 (B3,C3)", "x":5.75, "y":3}, + {"label":"K36 (B3,C4)", "x":6.75, "y":3}, + {"label":"K37 (B3,C5)", "x":7.75, "y":3}, + {"label":"K38 (B3,C6)", "x":8.75, "y":3}, + {"label":"K39 (B3,C7)", "x":9.75, "y":3}, + {"label":"K3A (B3,D0)", "x":10.75, "y":3}, + {"label":"K3B (B3,D1)", "x":11.75, "y":3}, + {"label":"K3D (B3,D3)", "x":12.75, "y":3, "w":2.25}, + {"label":"K3E (B3,D4)", "x":15, "y":3}, + + {"label":"K40 (B4,B6)", "x":0, "y":4, "w":2.25}, + {"label":"K42 (B4,C0)", "x":2.25, "y":4}, + {"label":"K43 (B4,C1)", "x":3.25, "y":4}, + {"label":"K44 (B4,C2)", "x":4.25, "y":4}, + {"label":"K45 (B4,C3)", "x":5.25, "y":4}, + {"label":"K46 (B4,C4)", "x":6.25, "y":4}, + {"label":"K47 (B4,C5)", "x":7.25, "y":4}, + {"label":"K48 (B4,C6)", "x":8.25, "y":4}, + {"label":"K49 (B4,C7)", "x":9.25, "y":4}, + {"label":"K4A (B4,D0)", "x":10.25, "y":4}, + {"label":"K4B (B4,D1)", "x":11.25, "y":4}, + {"label":"K4C (B4,D2)", "x":12.25, "y":4, "w":1.75}, + {"label":"K4D (B4,D3)", "x":14, "y":4}, + {"label":"K4E (B4,D4)", "x":15, "y":4}, + + {"label":"K50 (B5,B6)", "x":0, "y":5, "w":1.25}, + {"label":"K51 (B5,B7)", "x":1.25, "y":5, "w":1.25}, + {"label":"K52 (B5,C0)", "x":2.5, "y":5, "w":1.25}, + {"label":"K56 (B5,C4)", "x":3.75, "y":5, "w":6.25}, + {"label":"K5A (B5,D0)", "x":10, "y":5, "w":1.25}, + {"label":"K5B (B5,D1)", "x":11.25, "y":5, "w":1.25}, + {"label":"K5C (B5,D2)", "x":13, "y":5}, + {"label":"K5D (B5,D3)", "x":14, "y":5}, + {"label":"K5E (B5,D4)", "x":15, "y":5} + ] + }, + "LAYOUT_2u_bs": { + "layout": [ + {"label":"K00 (B0,B6)", "x":0, "y":0}, + {"label":"K01 (B0,B7)", "x":1.5, "y":0}, + {"label":"K02 (B0,C0)", "x":2.5, "y":0}, + {"label":"K03 (B0,C1)", "x":3.5, "y":0}, + {"label":"K04 (B0,C2)", "x":4.5, "y":0}, + {"label":"K06 (B0,C4)", "x":6, "y":0}, + {"label":"K07 (B0,C5)", "x":7, "y":0}, + {"label":"K08 (B0,C6)", "x":8, "y":0}, + {"label":"K09 (B0,C7)", "x":9, "y":0}, + {"label":"K0A (B0,D0)", "x":10.5, "y":0}, + {"label":"K0B (B0,D1)", "x":11.5, "y":0}, + {"label":"K0C (B0,D2)", "x":12.5, "y":0}, + {"label":"K0D (B0,D3)", "x":13.5, "y":0}, + {"label":"K0E (B0,D4)", "x":15, "y":0}, + + {"label":"K10 (B1,B6)", "x":0, "y":1}, + {"label":"K11 (B1,B7)", "x":1, "y":1}, + {"label":"K12 (B1,C0)", "x":2, "y":1}, + {"label":"K13 (B1,C1)", "x":3, "y":1}, + {"label":"K14 (B1,C2)", "x":4, "y":1}, + {"label":"K15 (B1,C3)", "x":5, "y":1}, + {"label":"K16 (B1,C4)", "x":6, "y":1}, + {"label":"K17 (B1,C5)", "x":7, "y":1}, + {"label":"K18 (B1,C6)", "x":8, "y":1}, + {"label":"K19 (B1,C7)", "x":9, "y":1}, + {"label":"K1A (B1,D0)", "x":10, "y":1}, + {"label":"K1B (B1,D1)", "x":11, "y":1}, + {"label":"K1C (B1,D2)", "x":12, "y":1}, + {"label":"K1D (B1,D3)", "x":13, "y":1, "w":2}, + {"label":"K1E (B1,D4)", "x":15, "y":1}, + + {"label":"K20 (B2,B6)", "x":0, "y":2, "w":1.5}, + {"label":"K21 (B2,B7)", "x":1.5, "y":2}, + {"label":"K22 (B2,C0)", "x":2.5, "y":2}, + {"label":"K23 (B2,C1)", "x":3.5, "y":2}, + {"label":"K24 (B2,C2)", "x":4.5, "y":2}, + {"label":"K25 (B2,C3)", "x":5.5, "y":2}, + {"label":"K26 (B2,C4)", "x":6.5, "y":2}, + {"label":"K27 (B2,C5)", "x":7.5, "y":2}, + {"label":"K28 (B2,C6)", "x":8.5, "y":2}, + {"label":"K29 (B2,C7)", "x":9.5, "y":2}, + {"label":"K2A (B2,D0)", "x":10.5, "y":2}, + {"label":"K2B (B2,D1)", "x":11.5, "y":2}, + {"label":"K2C (B2,D2)", "x":12.5, "y":2}, + {"label":"K2D (B2,D3)", "x":13.5, "y":2, "w":1.5}, + {"label":"K2E (B2,D4)", "x":15, "y":2}, + + {"label":"K30 (B3,B6)", "x":0, "y":3, "w":1.75}, + {"label":"K31 (B3,B7)", "x":1.75, "y":3}, + {"label":"K32 (B3,C0)", "x":2.75, "y":3}, + {"label":"K33 (B3,C1)", "x":3.75, "y":3}, + {"label":"K34 (B3,C2)", "x":4.75, "y":3}, + {"label":"K35 (B3,C3)", "x":5.75, "y":3}, + {"label":"K36 (B3,C4)", "x":6.75, "y":3}, + {"label":"K37 (B3,C5)", "x":7.75, "y":3}, + {"label":"K38 (B3,C6)", "x":8.75, "y":3}, + {"label":"K39 (B3,C7)", "x":9.75, "y":3}, + {"label":"K3A (B3,D0)", "x":10.75, "y":3}, + {"label":"K3B (B3,D1)", "x":11.75, "y":3}, + {"label":"K3D (B3,D3)", "x":12.75, "y":3, "w":2.25}, + {"label":"K3E (B3,D4)", "x":15, "y":3}, + + {"label":"K40 (B4,B6)", "x":0, "y":4, "w":2.25}, + {"label":"K42 (B4,C0)", "x":2.25, "y":4}, + {"label":"K43 (B4,C1)", "x":3.25, "y":4}, + {"label":"K44 (B4,C2)", "x":4.25, "y":4}, + {"label":"K45 (B4,C3)", "x":5.25, "y":4}, + {"label":"K46 (B4,C4)", "x":6.25, "y":4}, + {"label":"K47 (B4,C5)", "x":7.25, "y":4}, + {"label":"K48 (B4,C6)", "x":8.25, "y":4}, + {"label":"K49 (B4,C7)", "x":9.25, "y":4}, + {"label":"K4A (B4,D0)", "x":10.25, "y":4}, + {"label":"K4B (B4,D1)", "x":11.25, "y":4}, + {"label":"K4C (B4,D2)", "x":12.25, "y":4, "w":1.75}, + {"label":"K4D (B4,D3)", "x":14, "y":4}, + {"label":"K4E (B4,D4)", "x":15, "y":4}, + + {"label":"K50 (B5,B6)", "x":0, "y":5, "w":1.25}, + {"label":"K51 (B5,B7)", "x":1.25, "y":5, "w":1.25}, + {"label":"K52 (B5,C0)", "x":2.5, "y":5, "w":1.25}, + {"label":"K56 (B5,C4)", "x":3.75, "y":5, "w":6.25}, + {"label":"K5A (B5,D0)", "x":10, "y":5, "w":1.25}, + {"label":"K5B (B5,D1)", "x":11.25, "y":5, "w":1.25}, + {"label":"K5C (B5,D2)", "x":13, "y":5}, + {"label":"K5D (B5,D3)", "x":14, "y":5}, + {"label":"K5E (B5,D4)", "x":15, "y":5} + ] + }, + "LAYOUT_tsangan_split_bs": { + "layout": [ + {"label":"K00 (B0,B6)", "x":0, "y":0}, + {"label":"K01 (B0,B7)", "x":1.5, "y":0}, + {"label":"K02 (B0,C0)", "x":2.5, "y":0}, + {"label":"K03 (B0,C1)", "x":3.5, "y":0}, + {"label":"K04 (B0,C2)", "x":4.5, "y":0}, + {"label":"K06 (B0,C4)", "x":6, "y":0}, + {"label":"K07 (B0,C5)", "x":7, "y":0}, + {"label":"K08 (B0,C6)", "x":8, "y":0}, + {"label":"K09 (B0,C7)", "x":9, "y":0}, + {"label":"K0A (B0,D0)", "x":10.5, "y":0}, + {"label":"K0B (B0,D1)", "x":11.5, "y":0}, + {"label":"K0C (B0,D2)", "x":12.5, "y":0}, + {"label":"K0D (B0,D3)", "x":13.5, "y":0}, + {"label":"K0E (B0,D4)", "x":15, "y":0}, + + {"label":"K10 (B1,B6)", "x":0, "y":1}, + {"label":"K11 (B1,B7)", "x":1, "y":1}, + {"label":"K12 (B1,C0)", "x":2, "y":1}, + {"label":"K13 (B1,C1)", "x":3, "y":1}, + {"label":"K14 (B1,C2)", "x":4, "y":1}, + {"label":"K15 (B1,C3)", "x":5, "y":1}, + {"label":"K16 (B1,C4)", "x":6, "y":1}, + {"label":"K17 (B1,C5)", "x":7, "y":1}, + {"label":"K18 (B1,C6)", "x":8, "y":1}, + {"label":"K19 (B1,C7)", "x":9, "y":1}, + {"label":"K1A (B1,D0)", "x":10, "y":1}, + {"label":"K1B (B1,D1)", "x":11, "y":1}, + {"label":"K1C (B1,D2)", "x":12, "y":1}, + {"label":"K1D (B1,D3)", "x":13, "y":1}, + {"label":"K3C (B3,D2)", "x":14, "y":1}, + {"label":"K1E (B1,D4)", "x":15, "y":1}, + + {"label":"K20 (B2,B6)", "x":0, "y":2, "w":1.5}, + {"label":"K21 (B2,B7)", "x":1.5, "y":2}, + {"label":"K22 (B2,C0)", "x":2.5, "y":2}, + {"label":"K23 (B2,C1)", "x":3.5, "y":2}, + {"label":"K24 (B2,C2)", "x":4.5, "y":2}, + {"label":"K25 (B2,C3)", "x":5.5, "y":2}, + {"label":"K26 (B2,C4)", "x":6.5, "y":2}, + {"label":"K27 (B2,C5)", "x":7.5, "y":2}, + {"label":"K28 (B2,C6)", "x":8.5, "y":2}, + {"label":"K29 (B2,C7)", "x":9.5, "y":2}, + {"label":"K2A (B2,D0)", "x":10.5, "y":2}, + {"label":"K2B (B2,D1)", "x":11.5, "y":2}, + {"label":"K2C (B2,D2)", "x":12.5, "y":2}, + {"label":"K2D (B2,D3)", "x":13.5, "y":2, "w":1.5}, + {"label":"K2E (B2,D4)", "x":15, "y":2}, + + {"label":"K30 (B3,B6)", "x":0, "y":3, "w":1.75}, + {"label":"K31 (B3,B7)", "x":1.75, "y":3}, + {"label":"K32 (B3,C0)", "x":2.75, "y":3}, + {"label":"K33 (B3,C1)", "x":3.75, "y":3}, + {"label":"K34 (B3,C2)", "x":4.75, "y":3}, + {"label":"K35 (B3,C3)", "x":5.75, "y":3}, + {"label":"K36 (B3,C4)", "x":6.75, "y":3}, + {"label":"K37 (B3,C5)", "x":7.75, "y":3}, + {"label":"K38 (B3,C6)", "x":8.75, "y":3}, + {"label":"K39 (B3,C7)", "x":9.75, "y":3}, + {"label":"K3A (B3,D0)", "x":10.75, "y":3}, + {"label":"K3B (B3,D1)", "x":11.75, "y":3}, + {"label":"K3D (B3,D3)", "x":12.75, "y":3, "w":2.25}, + {"label":"K3E (B3,D4)", "x":15, "y":3}, + + {"label":"K40 (B4,B6)", "x":0, "y":4, "w":2.25}, + {"label":"K42 (B4,C0)", "x":2.25, "y":4}, + {"label":"K43 (B4,C1)", "x":3.25, "y":4}, + {"label":"K44 (B4,C2)", "x":4.25, "y":4}, + {"label":"K45 (B4,C3)", "x":5.25, "y":4}, + {"label":"K46 (B4,C4)", "x":6.25, "y":4}, + {"label":"K47 (B4,C5)", "x":7.25, "y":4}, + {"label":"K48 (B4,C6)", "x":8.25, "y":4}, + {"label":"K49 (B4,C7)", "x":9.25, "y":4}, + {"label":"K4A (B4,D0)", "x":10.25, "y":4}, + {"label":"K4B (B4,D1)", "x":11.25, "y":4}, + {"label":"K4C (B4,D2)", "x":12.25, "y":4, "w":1.75}, + {"label":"K4D (B4,D3)", "x":14, "y":4}, + {"label":"K4E (B4,D4)", "x":15, "y":4}, + + {"label":"K50 (B5,B6)", "x":0, "y":5, "w":1.5}, + {"label":"K51 (B5,B7)", "x":1.5, "y":5}, + {"label":"K52 (B5,C0)", "x":2.5, "y":5, "w":1.5}, + {"label":"K56 (B5,C4)", "x":4, "y":5, "w":7}, + {"label":"K5B (B5,D1)", "x":11, "y":5, "w":1.5}, + {"label":"K5C (B5,D2)", "x":13, "y":5}, + {"label":"K5D (B5,D3)", "x":14, "y":5}, + {"label":"K5E (B5,D4)", "x":15, "y":5} + ] + }, + "LAYOUT_tsangan_2u_bs": { + "layout": [ + {"label":"K00 (B0,B6)", "x":0, "y":0}, + {"label":"K01 (B0,B7)", "x":1.5, "y":0}, + {"label":"K02 (B0,C0)", "x":2.5, "y":0}, + {"label":"K03 (B0,C1)", "x":3.5, "y":0}, + {"label":"K04 (B0,C2)", "x":4.5, "y":0}, + {"label":"K06 (B0,C4)", "x":6, "y":0}, + {"label":"K07 (B0,C5)", "x":7, "y":0}, + {"label":"K08 (B0,C6)", "x":8, "y":0}, + {"label":"K09 (B0,C7)", "x":9, "y":0}, + {"label":"K0A (B0,D0)", "x":10.5, "y":0}, + {"label":"K0B (B0,D1)", "x":11.5, "y":0}, + {"label":"K0C (B0,D2)", "x":12.5, "y":0}, + {"label":"K0D (B0,D3)", "x":13.5, "y":0}, + {"label":"K0E (B0,D4)", "x":15, "y":0}, + + {"label":"K10 (B1,B6)", "x":0, "y":1}, + {"label":"K11 (B1,B7)", "x":1, "y":1}, + {"label":"K12 (B1,C0)", "x":2, "y":1}, + {"label":"K13 (B1,C1)", "x":3, "y":1}, + {"label":"K14 (B1,C2)", "x":4, "y":1}, + {"label":"K15 (B1,C3)", "x":5, "y":1}, + {"label":"K16 (B1,C4)", "x":6, "y":1}, + {"label":"K17 (B1,C5)", "x":7, "y":1}, + {"label":"K18 (B1,C6)", "x":8, "y":1}, + {"label":"K19 (B1,C7)", "x":9, "y":1}, + {"label":"K1A (B1,D0)", "x":10, "y":1}, + {"label":"K1B (B1,D1)", "x":11, "y":1}, + {"label":"K1C (B1,D2)", "x":12, "y":1}, + {"label":"K1D (B1,D3)", "x":13, "y":1, "w":2}, + {"label":"K1E (B1,D4)", "x":15, "y":1}, + + {"label":"K20 (B2,B6)", "x":0, "y":2, "w":1.5}, + {"label":"K21 (B2,B7)", "x":1.5, "y":2}, + {"label":"K22 (B2,C0)", "x":2.5, "y":2}, + {"label":"K23 (B2,C1)", "x":3.5, "y":2}, + {"label":"K24 (B2,C2)", "x":4.5, "y":2}, + {"label":"K25 (B2,C3)", "x":5.5, "y":2}, + {"label":"K26 (B2,C4)", "x":6.5, "y":2}, + {"label":"K27 (B2,C5)", "x":7.5, "y":2}, + {"label":"K28 (B2,C6)", "x":8.5, "y":2}, + {"label":"K29 (B2,C7)", "x":9.5, "y":2}, + {"label":"K2A (B2,D0)", "x":10.5, "y":2}, + {"label":"K2B (B2,D1)", "x":11.5, "y":2}, + {"label":"K2C (B2,D2)", "x":12.5, "y":2}, + {"label":"K2D (B2,D3)", "x":13.5, "y":2, "w":1.5}, + {"label":"K2E (B2,D4)", "x":15, "y":2}, + + {"label":"K30 (B3,B6)", "x":0, "y":3, "w":1.75}, + {"label":"K31 (B3,B7)", "x":1.75, "y":3}, + {"label":"K32 (B3,C0)", "x":2.75, "y":3}, + {"label":"K33 (B3,C1)", "x":3.75, "y":3}, + {"label":"K34 (B3,C2)", "x":4.75, "y":3}, + {"label":"K35 (B3,C3)", "x":5.75, "y":3}, + {"label":"K36 (B3,C4)", "x":6.75, "y":3}, + {"label":"K37 (B3,C5)", "x":7.75, "y":3}, + {"label":"K38 (B3,C6)", "x":8.75, "y":3}, + {"label":"K39 (B3,C7)", "x":9.75, "y":3}, + {"label":"K3A (B3,D0)", "x":10.75, "y":3}, + {"label":"K3B (B3,D1)", "x":11.75, "y":3}, + {"label":"K3D (B3,D3)", "x":12.75, "y":3, "w":2.25}, + {"label":"K3E (B3,D4)", "x":15, "y":3}, + + {"label":"K40 (B4,B6)", "x":0, "y":4, "w":2.25}, + {"label":"K42 (B4,C0)", "x":2.25, "y":4}, + {"label":"K43 (B4,C1)", "x":3.25, "y":4}, + {"label":"K44 (B4,C2)", "x":4.25, "y":4}, + {"label":"K45 (B4,C3)", "x":5.25, "y":4}, + {"label":"K46 (B4,C4)", "x":6.25, "y":4}, + {"label":"K47 (B4,C5)", "x":7.25, "y":4}, + {"label":"K48 (B4,C6)", "x":8.25, "y":4}, + {"label":"K49 (B4,C7)", "x":9.25, "y":4}, + {"label":"K4A (B4,D0)", "x":10.25, "y":4}, + {"label":"K4B (B4,D1)", "x":11.25, "y":4}, + {"label":"K4C (B4,D2)", "x":12.25, "y":4, "w":1.75}, + {"label":"K4D (B4,D3)", "x":14, "y":4}, + {"label":"K4E (B4,D4)", "x":15, "y":4}, + + {"label":"K50 (B5,B6)", "x":0, "y":5, "w":1.5}, + {"label":"K51 (B5,B7)", "x":1.5, "y":5}, + {"label":"K52 (B5,C0)", "x":2.5, "y":5, "w":1.5}, + {"label":"K56 (B5,C4)", "x":4, "y":5, "w":7}, + {"label":"K5B (B5,D1)", "x":11, "y":5, "w":1.5}, + {"label":"K5C (B5,D2)", "x":13, "y":5}, + {"label":"K5D (B5,D3)", "x":14, "y":5}, + {"label":"K5E (B5,D4)", "x":15, "y":5} + ] + } + } +} diff --git a/keyboards/mechlovin/hex4b/keymaps/default/keymap.c b/keyboards/mechlovin/hex4b/keymaps/default/keymap.c new file mode 100644 index 000000000000..d298473263d1 --- /dev/null +++ b/keyboards/mechlovin/hex4b/keymaps/default/keymap.c @@ -0,0 +1,28 @@ +/* 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 . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_split_bs( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_SPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + +}; diff --git a/keyboards/mechlovin/hex4b/keymaps/default/readme.md b/keyboards/mechlovin/hex4b/keymaps/default/readme.md new file mode 100644 index 000000000000..6b36fc521371 --- /dev/null +++ b/keyboards/mechlovin/hex4b/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for hex4b diff --git a/keyboards/mechlovin/hex4b/keymaps/via/keymap.c b/keyboards/mechlovin/hex4b/keymaps/via/keymap.c new file mode 100644 index 000000000000..dc20ae1365e8 --- /dev/null +++ b/keyboards/mechlovin/hex4b/keymaps/via/keymap.c @@ -0,0 +1,52 @@ +/* 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 . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_split_bs( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_SPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_split_bs( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_split_bs( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_split_bs( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + +}; diff --git a/keyboards/mechlovin/hex4b/keymaps/via/rules.mk b/keyboards/mechlovin/hex4b/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/mechlovin/hex4b/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/mechlovin/hex4b/readme.md b/keyboards/mechlovin/hex4b/readme.md new file mode 100644 index 000000000000..0f2320b6df45 --- /dev/null +++ b/keyboards/mechlovin/hex4b/readme.md @@ -0,0 +1,21 @@ +# hex4b + +![hex4b](https://i.imgur.com/lArfGgHh.jpeg) + +A PCB for HEX.4B 75% keyboard. + +* Keyboard Maintainer: [Mechlovin' Studio](https://github.com/mechlovin) +* Hardware Supported: Hex.4B PCB, Atmega32A +* Hardware Availability: [Hex Keyboard](https://hexkeyboards.com/) + +Make example for this keyboard (after setting up your build environment): + + make mechlovin/hex4b:default + +Flashing example for this keyboard: + + make mechlovin/hex4b: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). + +Reset Key: To put the Hex4B into bootloader, hold esc key while plugging in (bootloader), hold backspace while plugging in (bootmagic) and plug cable. diff --git a/keyboards/mechlovin/hex4b/rules.mk b/keyboards/mechlovin/hex4b/rules.mk new file mode 100644 index 000000000000..cc8abc547a74 --- /dev/null +++ b/keyboards/mechlovin/hex4b/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32a + +# Bootloader selection +BOOTLOADER = usbasploader + +# Processor frequency +F_CPU = 16000000 + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/mechlovin/hex6c/info.json b/keyboards/mechlovin/hex6c/info.json index f7692bb805e6..0d8a6529dbae 100644 --- a/keyboards/mechlovin/hex6c/info.json +++ b/keyboards/mechlovin/hex6c/info.json @@ -2,8 +2,6 @@ "keyboard_name": "hex-6C", "url": "", "maintainer": "Mechlovin' Studio", - "width": 22.5, - "height": 6.25, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/mechlovin/hex6c/rules.mk b/keyboards/mechlovin/hex6c/rules.mk index 0af4a07f7083..f3a13d7553f4 100644 --- a/keyboards/mechlovin/hex6c/rules.mk +++ b/keyboards/mechlovin/hex6c/rules.mk @@ -8,15 +8,12 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes diff --git a/keyboards/mechlovin/infinity87/rev1/rogue87/info.json b/keyboards/mechlovin/infinity87/rev1/rogue87/info.json index 3d541cfb7911..3ffa18166620 100644 --- a/keyboards/mechlovin/infinity87/rev1/rogue87/info.json +++ b/keyboards/mechlovin/infinity87/rev1/rogue87/info.json @@ -2,10 +2,8 @@ "keyboard_name": "Rogue87", "url": "", "maintainer": "Mechlovin' Studio", - "width": 18.25, - "height": 6.25, "layouts": { - "LAYOUT": { + "LAYOUT_all": { "layout": [ {"label":"K00", "x":0, "y":0}, {"label":"K01", "x":2, "y":0}, diff --git a/keyboards/mechlovin/infinity87/rev1/rouge87/info.json b/keyboards/mechlovin/infinity87/rev1/rouge87/info.json index 8317e93512ff..8faaa83fd187 100644 --- a/keyboards/mechlovin/infinity87/rev1/rouge87/info.json +++ b/keyboards/mechlovin/infinity87/rev1/rouge87/info.json @@ -2,10 +2,8 @@ "keyboard_name": "Rouge87", "url": "", "maintainer": "Mechlovin' Studio", - "width": 18.25, - "height": 6.25, "layouts": { - "LAYOUT": { + "LAYOUT_all": { "layout": [ {"label":"K00", "x":0, "y":0}, {"label":"K01", "x":2, "y":0}, diff --git a/keyboards/mechlovin/infinity87/rev1/standard/info.json b/keyboards/mechlovin/infinity87/rev1/standard/info.json index 78d6a29bc872..da67c40c39a9 100644 --- a/keyboards/mechlovin/infinity87/rev1/standard/info.json +++ b/keyboards/mechlovin/infinity87/rev1/standard/info.json @@ -2,11 +2,8 @@ "keyboard_name": "infinity87", "url": "", "maintainer": "Team Mechlovin'", - "width": 18.25, - "height": 6.25, "layouts": { "LAYOUT_all": { - "key_count": 91, "layout": [ {"label":"K00 (B0,B6)", "x":0, "y":0}, {"label":"K01 (B0,F4)", "x":2, "y":0}, diff --git a/keyboards/mechlovin/infinity87/rev2/config.h b/keyboards/mechlovin/infinity87/rev2/config.h index 1be7f0a1bbfa..ddf9df459349 100644 --- a/keyboards/mechlovin/infinity87/rev2/config.h +++ b/keyboards/mechlovin/infinity87/rev2/config.h @@ -18,7 +18,7 @@ #define PRODUCT_ID 0x8702 #define DEVICE_VER 0x0001 -#define PRODUCT Infinity 87 rev2 +#define PRODUCT Infinity87 rev.2 /* * Keyboard Matrix Assignments @@ -30,19 +30,49 @@ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) * */ -#define MATRIX_ROW_PINS { A3, D5, C3, C2, B3, B4 } +#define MATRIX_ROW_PINS { D5, D2, D4, D3, D0, D1 } #define UNUSED_PINS /* COL2ROW, ROW2COL*/ #define DIODE_DIRECTION ROW2COL -#define BACKLIGHT_PIN D4 +#define USB_POLLING_INTERVAL_MS 1 + + +#define LED_NUM_LOCK_PIN D7 +#define LED_CAPS_LOCK_PIN D6 +#define LED_SCROLL_LOCK_PIN B4 +#define LED_PIN_ON_STATE 1 + +#define BACKLIGHT_PIN B6 +#define BACKLIGHT_LEVELS 3 #define BACKLIGHT_BREATHING -#define LED_NUM_LOCK_PIN B1 -#define LED_CAPS_LOCK_PIN B0 -#define LED_SCROLL_LOCK_PIN B2 -#define LED_PIN_ON_STATE 0 +#ifdef RGBLIGHT_ENABLE +#define RGB_DI_PIN E2 +#define RGBLED_NUM 24 +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 +#define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +#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 +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +#endif /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 5 \ No newline at end of file +#define DEBOUNCE 5 diff --git a/keyboards/mechlovin/infinity87/rev2/info.json b/keyboards/mechlovin/infinity87/rev2/info.json index 9b3fe1002c4c..fa6073912cce 100644 --- a/keyboards/mechlovin/infinity87/rev2/info.json +++ b/keyboards/mechlovin/infinity87/rev2/info.json @@ -1,9 +1,7 @@ { - "keyboard_name": "infinity87", + "keyboard_name": "infinity87 Rev.2", "url": "", - "maintainer": "Team Mechlovin'", - "width": 18.25, - "height": 6.25, + "maintainer": "Mechlovin' Studio", "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/mechlovin/infinity87/rev2/matrix.c b/keyboards/mechlovin/infinity87/rev2/matrix.c index 6f417765aa79..b1b0d20654c8 100644 --- a/keyboards/mechlovin/infinity87/rev2/matrix.c +++ b/keyboards/mechlovin/infinity87/rev2/matrix.c @@ -60,61 +60,12 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) return (last_row_value != current_matrix[current_row]); } -#elif (DIODE_DIRECTION == COL2ROW) - -static void select_row(uint8_t row) { - setPinOutput(row_pins[row]); - writePinLow(row_pins[row]); -} - -static void unselect_row(uint8_t row) { setPinInputHigh(row_pins[row]); } - -static void unselect_rows(void) { - for (uint8_t x = 0; x < MATRIX_ROWS; x++) { - setPinInputHigh(row_pins[x]); - } -} - -static void init_pins(void) { - unselect_rows(); - for (uint8_t x = 0; x < MATRIX_COLS; x++) { - setPinInputHigh(col_pins[x]); - } -} - -static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) { - // Store last value of row prior to reading - matrix_row_t last_row_value = current_matrix[current_row]; - - // Clear data in matrix row - current_matrix[current_row] = 0; - - // Select row and wait for row selecton to stabilize - select_row(current_row); - wait_us(30); - - // For each col... - for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) { - - // Select the col pin to read (active low) - uint8_t pin_state = readPin(col_pins[col_index]); - - // Populate the matrix row with the state of the col pin - current_matrix[current_row] |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index); - } - - // Unselect row - unselect_row(current_row); - - return (last_row_value != current_matrix[current_row]); -} - #elif (DIODE_DIRECTION == ROW2COL) /* Cols 0 - 16 - * These columns use two 74HC138 3 to 8 bit demultiplexer. D6, D7 is the enable pin, must be set high (1) to use it. + * 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: PA0 PA1 PA2 PD6 PD7 PC4 + * col / pin: PB5 PB7 PF0 PB0 PF1 PE6 * 0: 0 ── 0 ── 0 1 ── 0 0 * ──────────────────────────────────────────── * 1: 0 ── 0 ── 1 1 ── 0 0 @@ -153,103 +104,103 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) static void select_col(uint8_t col) { switch (col) { case 0: - writePinLow(A0); - writePinLow(A1); - writePinLow(A2); - writePinHigh(D6); + writePinLow(B5); + writePinLow(B7); + writePinLow(F0); + writePinHigh(B0); break; case 1: - writePinLow(A0); - writePinLow(A1); - writePinHigh(A2); - writePinHigh(D6); + writePinLow(B5); + writePinLow(B7); + writePinHigh(F0); + writePinHigh(B0); break; case 2: - writePinLow(A0); - writePinHigh(A1); - writePinLow(A2); - writePinHigh(D6); + writePinLow(B5); + writePinHigh(B7); + writePinLow(F0); + writePinHigh(B0); break; case 3: - writePinLow(A0); - writePinHigh(A1); - writePinHigh(A2); - writePinHigh(D6); + writePinLow(B5); + writePinHigh(B7); + writePinHigh(F0); + writePinHigh(B0); break; case 4: - writePinHigh(A0); - writePinLow(A1); - writePinLow(A2); - writePinHigh(D6); + writePinHigh(B5); + writePinLow(B7); + writePinLow(F0); + writePinHigh(B0); break; case 5: - writePinHigh(A0); - writePinLow(A1); - writePinHigh(A2); - writePinHigh(D6); + writePinHigh(B5); + writePinLow(B7); + writePinHigh(F0); + writePinHigh(B0); break; case 6: - writePinHigh(A0); - writePinHigh(A1); - writePinLow(A2); - writePinHigh(D6); + writePinHigh(B5); + writePinHigh(B7); + writePinLow(F0); + writePinHigh(B0); break; case 7: - writePinHigh(A0); - writePinHigh(A1); - writePinHigh(A2); - writePinHigh(D6); + writePinHigh(B5); + writePinHigh(B7); + writePinHigh(F0); + writePinHigh(B0); break; case 8: - writePinLow(A0); - writePinLow(A1); - writePinLow(A2); - writePinHigh(D7); + writePinLow(B5); + writePinLow(B7); + writePinLow(F0); + writePinHigh(F1); break; case 9: - writePinLow(A0); - writePinLow(A1); - writePinHigh(A2); - writePinHigh(D7); + writePinLow(B5); + writePinLow(B7); + writePinHigh(F0); + writePinHigh(F1); break; case 10: - writePinLow(A0); - writePinHigh(A1); - writePinLow(A2); - writePinHigh(D7); + writePinLow(B5); + writePinHigh(B7); + writePinLow(F0); + writePinHigh(F1); break; case 11: - writePinLow(A0); - writePinHigh(A1); - writePinHigh(A2); - writePinHigh(D7); + writePinLow(B5); + writePinHigh(B7); + writePinHigh(F0); + writePinHigh(F1); break; case 12: - writePinHigh(A0); - writePinLow(A1); - writePinLow(A2); - writePinHigh(D7); + writePinHigh(B5); + writePinLow(B7); + writePinLow(F0); + writePinHigh(F1); break; case 13: - writePinHigh(A0); - writePinLow(A1); - writePinHigh(A2); - writePinHigh(D7); + writePinHigh(B5); + writePinLow(B7); + writePinHigh(F0); + writePinHigh(F1); break; case 14: - writePinHigh(A0); - writePinHigh(A1); - writePinHigh(A2); - writePinHigh(D7); + writePinHigh(B5); + writePinHigh(B7); + writePinHigh(F0); + writePinHigh(F1); break; case 15: - writePinHigh(A0); - writePinHigh(A1); - writePinLow(A2); - writePinHigh(D7); + writePinHigh(B5); + writePinHigh(B7); + writePinLow(F0); + writePinHigh(F1); break; case 16: - writePinLow(C4); + writePinLow(E6); break; } } @@ -257,117 +208,117 @@ static void select_col(uint8_t col) { static void unselect_col(uint8_t col) { switch (col) { case 0: - writePinHigh(A0); - writePinHigh(A1); - writePinHigh(A2); - writePinLow(D6); + writePinHigh(B5); + writePinHigh(B7); + writePinHigh(F0); + writePinLow(B0); break; case 1: - writePinHigh(A0); - writePinHigh(A1); - writePinLow(A2); - writePinLow(D6); + writePinHigh(B5); + writePinHigh(B7); + writePinLow(F0); + writePinLow(B0); break; case 2: - writePinHigh(A0); - writePinLow(A1); - writePinHigh(A2); - writePinLow(D6); + writePinHigh(B5); + writePinLow(B7); + writePinHigh(F0); + writePinLow(B0); break; case 3: - writePinHigh(A0); - writePinLow(A1); - writePinLow(A2); - writePinLow(D6); + writePinHigh(B5); + writePinLow(B7); + writePinLow(F0); + writePinLow(B0); break; case 4: - writePinLow(A0); - writePinHigh(A1); - writePinHigh(A2); - writePinLow(D6); + writePinLow(B5); + writePinHigh(B7); + writePinHigh(F0); + writePinLow(B0); break; case 5: - writePinLow(A0); - writePinHigh(A1); - writePinLow(A2); - writePinLow(D6); + writePinLow(B5); + writePinHigh(B7); + writePinLow(F0); + writePinLow(B0); break; case 6: - writePinLow(A0); - writePinLow(A1); - writePinHigh(A2); - writePinLow(D6); + writePinLow(B5); + writePinLow(B7); + writePinHigh(F0); + writePinLow(B0); break; case 7: - writePinLow(A0); - writePinLow(A1); - writePinLow(A2); - writePinLow(D6); + writePinLow(B5); + writePinLow(B7); + writePinLow(F0); + writePinLow(B0); break; case 8: - writePinHigh(A0); - writePinHigh(A1); - writePinHigh(A2); - writePinLow(D7); + writePinHigh(B5); + writePinHigh(B7); + writePinHigh(F0); + writePinLow(F1); break; case 9: - writePinHigh(A0); - writePinHigh(A1); - writePinLow(A2); - writePinLow(D7); + writePinHigh(B5); + writePinHigh(B7); + writePinLow(F0); + writePinLow(F1); break; case 10: - writePinHigh(A0); - writePinLow(A1); - writePinHigh(A2); - writePinLow(D7); + writePinHigh(B5); + writePinLow(B7); + writePinHigh(F0); + writePinLow(F1); break; case 11: - writePinHigh(A0); - writePinLow(A1); - writePinLow(A2); - writePinLow(D7); + writePinHigh(B5); + writePinLow(B7); + writePinLow(F0); + writePinLow(F1); break; case 12: - writePinLow(A0); - writePinHigh(A1); - writePinHigh(A2); - writePinLow(D7); + writePinLow(B5); + writePinHigh(B7); + writePinHigh(F0); + writePinLow(F1); break; case 13: - writePinLow(A0); - writePinHigh(A1); - writePinLow(A2); - writePinLow(D7); + writePinLow(B5); + writePinHigh(B7); + writePinLow(F0); + writePinLow(F1); break; case 14: - writePinLow(A0); - writePinLow(A1); - writePinLow(A2); - writePinLow(D7); + writePinLow(B5); + writePinLow(B7); + writePinLow(F0); + writePinLow(F1); break; case 15: - writePinLow(A0); - writePinLow(A1); - writePinHigh(A2); - writePinLow(D7); + writePinLow(B5); + writePinLow(B7); + writePinHigh(F0); + writePinLow(F1); break; case 16: - writePinHigh(C4); + writePinHigh(E6); break; } } static void unselect_cols(void) { //Native - writePinHigh(C4); + writePinHigh(E6); //Demultiplexer - writePinLow(D6); - writePinLow(D7); - writePinHigh(A0); - writePinHigh(A1); - writePinHigh(A2); + writePinLow(B0); + writePinLow(F1); + writePinHigh(B5); + writePinHigh(B7); + writePinHigh(F0); } static void init_pins(void) { @@ -375,12 +326,12 @@ static void init_pins(void) { for (uint8_t x = 0; x < MATRIX_ROWS; x++) { setPinInputHigh(row_pins[x]); } - setPinOutput(A0); - setPinOutput(A1); - setPinOutput(A2); - setPinOutput(D6); - setPinOutput(D7); - setPinOutput(C4); + setPinOutput(B5); + setPinOutput(B7); + setPinOutput(F0); + setPinOutput(B0); + setPinOutput(F1); + setPinOutput(E6); } static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col) { @@ -426,12 +377,7 @@ void matrix_init_custom(void) { bool matrix_scan_custom(matrix_row_t current_matrix[]) { bool changed = false; -#if defined(DIRECT_PINS) || (DIODE_DIRECTION == COL2ROW) - // Set row, read cols - for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) { - changed |= read_cols_on_row(current_matrix, current_row); - } -#elif (DIODE_DIRECTION == ROW2COL) +#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); diff --git a/keyboards/mechlovin/infinity87/rev2/readme.md b/keyboards/mechlovin/infinity87/rev2/readme.md index 4c7ea2929148..a5be85f0bbad 100644 --- a/keyboards/mechlovin/infinity87/rev2/readme.md +++ b/keyboards/mechlovin/infinity87/rev2/readme.md @@ -2,8 +2,7 @@ ![infinity87](https://i.imgur.com/pgtvUTrl.png) -A replacement PCB for TKL keyboard. south-facing stabilisers, .STEP file in our github - +A PCB for TKL keyboards. * Keyboard Maintainer: [Team Mechlovin'](https://github.com/mechlovin) * Hardware Supported: Infinity87 rev.2, AVR. * Hardware Availability: [Mechlovin.studio](https://mechlovin.studio) @@ -20,4 +19,3 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to **Reset Key:** To put the IF87_rev2 into bootloader, push reset swith on the bottom of the PCB. -IF87_rev2 used USBasploader from [Erovia tutorial](https://erovia.github.io/posts/thk/#bootloader), thank you [Erovia](https://github.com/Erovia). diff --git a/keyboards/mechlovin/infinity87/rev2/rev2.c b/keyboards/mechlovin/infinity87/rev2/rev2.c index 5a92f8bec646..ab9ecbf6fc7e 100644 --- a/keyboards/mechlovin/infinity87/rev2/rev2.c +++ b/keyboards/mechlovin/infinity87/rev2/rev2.c @@ -14,44 +14,4 @@ * along with this program. If not, see . */ -#include "rev2.h" - -void matrix_init_kb(void) { - matrix_init_user(); - led_init_ports(); -}; -void led_init_ports(void) { - setPinOutput(A5); - setPinOutput(A6); - setPinOutput(A7); - setPinOutput(C7); - setPinOutput(C6); - -} - -layer_state_t layer_state_set_kb(layer_state_t state) { - state = layer_state_set_user(state); - writePinHigh(C6); - writePinHigh(C7); - writePinHigh(A7); - writePinHigh(A6); - writePinHigh(A5); - switch (get_highest_layer(state)) { - case 0: - writePinLow(C6); - break; - case 1: - writePinLow(C7); - break; - case 2: - writePinLow(A7); - break; - case 3: - writePinLow(A6); - break; - case 4: - writePinLow(A5); - break; - } - return state; -} +#include "rev2.h" \ No newline at end of file diff --git a/keyboards/mechlovin/infinity87/rev2/rules.mk b/keyboards/mechlovin/infinity87/rev2/rules.mk index 367e0bc82fd3..f30ef9c493e7 100644 --- a/keyboards/mechlovin/infinity87/rev2/rules.mk +++ b/keyboards/mechlovin/infinity87/rev2/rules.mk @@ -1,19 +1,18 @@ # MCU name -MCU = atmega32a - -# Processor frequency -F_CPU = 16000000 +MCU = atmega32u4 # Bootloader selection -BOOTLOADER = USBasp +BOOTLOADER = atmel-dfu + # Build Options # change yes to no to disable # CONSOLE_ENABLE = no COMMAND_ENABLE = no -NKRO_ENABLE = no +NKRO_ENABLE = yes BACKLIGHT_ENABLE = yes +RGBLIGHT_ENABLE = yes CUSTOM_MATRIX = lite SRC += matrix.c diff --git a/keyboards/mechlovin/infinity87/rgb_rev1/config.h b/keyboards/mechlovin/infinity87/rgb_rev1/config.h index 0c16c684cfdb..5b1a68308ba6 100644 --- a/keyboards/mechlovin/infinity87/rgb_rev1/config.h +++ b/keyboards/mechlovin/infinity87/rgb_rev1/config.h @@ -35,17 +35,63 @@ // 0b0110001 AD <-> SCL // 0b0110010 AD <-> SDA #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended #define RGB_MATRIX_KEYPRESSES -#define DISABLE_RGB_MATRIX_SPLASH -#define DISABLE_RGB_MATRIX_MULTISPLASH -#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH +#undef ENABLE_RGB_MATRIX_SPLASH +#undef ENABLE_RGB_MATRIX_MULTISPLASH +#undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH //#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR #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/mechlovin/infinity87/rgb_rev1/info.json b/keyboards/mechlovin/infinity87/rgb_rev1/info.json index 9b3fe1002c4c..da67c40c39a9 100644 --- a/keyboards/mechlovin/infinity87/rgb_rev1/info.json +++ b/keyboards/mechlovin/infinity87/rgb_rev1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "infinity87", "url": "", "maintainer": "Team Mechlovin'", - "width": 18.25, - "height": 6.25, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/mechlovin/infinity87/rgb_rev1/rgb_rev1.c b/keyboards/mechlovin/infinity87/rgb_rev1/rgb_rev1.c index f13fee8addd8..0ad5d4143059 100644 --- a/keyboards/mechlovin/infinity87/rgb_rev1/rgb_rev1.c +++ b/keyboards/mechlovin/infinity87/rgb_rev1/rgb_rev1.c @@ -17,7 +17,7 @@ #include "rgb_rev1.h" #ifdef RGB_MATRIX_ENABLE -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { {0, CS34_SW1, CS35_SW1, CS36_SW1}, //D92-K00-0 {0, CS37_SW1, CS38_SW1, CS39_SW1}, //D94-K01-1 {0, CS31_SW1, CS32_SW1, CS33_SW1}, //D96-K02-2 diff --git a/keyboards/mechlovin/infinity87/rules.mk b/keyboards/mechlovin/infinity87/rules.mk index e0858aff0fc8..7fec645368e8 100644 --- a/keyboards/mechlovin/infinity87/rules.mk +++ b/keyboards/mechlovin/infinity87/rules.mk @@ -2,18 +2,15 @@ # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = 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 DEFAULT_FOLDER = mechlovin/infinity87/rgb_rev1 diff --git a/keyboards/mechlovin/infinity88/config.h b/keyboards/mechlovin/infinity88/config.h index a387b7638654..edbb628e7b1d 100644 --- a/keyboards/mechlovin/infinity88/config.h +++ b/keyboards/mechlovin/infinity88/config.h @@ -69,6 +69,3 @@ along with this program. If not, see . // #define RGBLIGHT_EFFECT_STATIC_GRADIENT // #define RGBLIGHT_EFFECT_RGB_TEST // #define RGBLIGHT_EFFECT_ALTERNATING - -// generated by KBFirmware JSON to QMK Parser -// https://noroadsleft.github.io/kbf_qmk_converter/ \ No newline at end of file diff --git a/keyboards/mechlovin/infinity88/infinity88.h b/keyboards/mechlovin/infinity88/infinity88.h index 27f4e2307391..c7decced4528 100644 --- a/keyboards/mechlovin/infinity88/infinity88.h +++ b/keyboards/mechlovin/infinity88/infinity88.h @@ -18,6 +18,28 @@ #include "quantum.h" +#define XXX KC_NO + +/* + * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┐ + * │00 ││01 │02 │03 │04 ││05 │06 │07 │08 ││09 │0A │0B │0C ││3E │ │0E │0F │0G │ + * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ ┌───────┐ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │0D │ │1E │1F │1G │ │1D │ 2u Backspace + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ └─┬─────┤ ┌─────┐ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2D │ │2E │2F │2G │ │ │ │2D │ + * 2.25u ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬────┤ └───┴───┴───┘ ┌──┴┐3D │ ISO Enter ┌──┴─────┤ ANSI Enter + * LShift │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │ │3C │ │ │3D │ + * ┌────────┐ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ ┌───┐ ┌─┴───┴────┤ ┌─┴─┬──────┤ + * │40 │ │40 │41 │42 │43 │44 │45 │46 │47 │48 │49 │4A │4B │4C │4D │ │4F │ │4D │ 2.75u RShift │4C │4D │ 1u/1.75u + * └────────┘ ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ ┌───┼───┼───┐ └──────────┘ └───┴──────┘ + * │50 │51 │52 │56 │5A │5B │5C │5D │ │5E │5F │5G │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ + * ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐ + * │50 │51 │52 │56 │5B │5C │5D │ Tsangan/WKL + * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ + */ + #define LAYOUT_all( \ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K3E, K0E, K0F, K0G, \ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K0D, K1E, K1F, K1G, \ @@ -26,13 +48,42 @@ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4F, \ K50, K51, K52, K56, 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, K3E, KC_NO, KC_NO }, \ - { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, KC_NO, K4F, KC_NO }, \ - { K50, K51, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO, 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, K3E, XXX, XXX }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, XXX, K4F, XXX }, \ + { K50, K51, K52, XXX, XXX, XXX, K56, XXX, XXX, XXX, K5A, K5B, K5C, K5D, K5E, K5F, K5G }, \ +} + +#define LAYOUT_tkl_f13_ansi( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K3E, 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, K4D, K4F, \ + K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E, K5F, K5G \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, XXX, 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, K3E, XXX, XXX }, \ + { K40, XXX, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, XXX, K4D, XXX, K4F, XXX }, \ + { K50, K51, K52, XXX, XXX, XXX, K56, XXX, XXX, XXX, K5A, K5B, K5C, K5D, K5E, K5F, K5G }, \ } -// generated by KBFirmware JSON to QMK Parser -// https://noroadsleft.github.io/kbf_qmk_converter/ \ No newline at end of file +#define LAYOUT_tkl_f13_iso( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K3E, 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, K4D, K4F, \ + K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E, K5F, K5G \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, XXX, 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, K3E, XXX, XXX }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, XXX, K4D, XXX, K4F, XXX }, \ + { K50, K51, K52, XXX, XXX, XXX, K56, XXX, XXX, XXX, K5A, K5B, K5C, K5D, K5E, K5F, K5G }, \ +} diff --git a/keyboards/mechlovin/infinity88/info.json b/keyboards/mechlovin/infinity88/info.json index d667141b9961..edf91c4687ae 100644 --- a/keyboards/mechlovin/infinity88/info.json +++ b/keyboards/mechlovin/infinity88/info.json @@ -1,9 +1,7 @@ { "keyboard_name": "infinity88", "url": "", - "maintainer": "Team Mechlovin", - "width": 18.25, - "height": 6.25, + "maintainer": "mechlovin", "layouts": { "LAYOUT_all": { "layout": [ @@ -88,6 +86,201 @@ {"label":"K4C (B4,D2)", "x":12.25, "y":4.25, "w":1.75}, {"label":"K4D (B4,D3)", "x":14, "y":4.25}, {"label":"K4F (B4,D5)", "x":16.25, "y":4.25}, + {"label":"K50 (B5,B6)", "x":0, "y":5.25, "w":1.25}, + {"label":"K51 (B5,F4)", "x":1.25, "y":5.25, "w":1.25}, + {"label":"K52 (B5,C0)", "x":2.5, "y":5.25, "w":1.25}, + {"label":"K56 (B5,C4)", "x":3.75, "y":5.25, "w":6.25}, + {"label":"K5A (B5,D0)", "x":10, "y":5.25, "w":1.25}, + {"label":"K5B (B5,D1)", "x":11.25, "y":5.25, "w":1.25}, + {"label":"K5C (B5,D2)", "x":12.5, "y":5.25, "w":1.25}, + {"label":"K5D (B5,D3)", "x":13.75, "y":5.25, "w":1.25}, + {"label":"K5E (B5,D4)", "x":15.25, "y":5.25}, + {"label":"K5F (B5,D5)", "x":16.25, "y":5.25}, + {"label":"K5G (B5,D6)", "x":17.25, "y":5.25} + ] + }, + "LAYOUT_tkl_f13_ansi": { + "layout": [ + {"label":"K00 (B0,B6)", "x":0, "y":0}, + {"label":"K01 (B0,F4)", "x":1.25, "y":0}, + {"label":"K02 (B0,C0)", "x":2.25, "y":0}, + {"label":"K03 (B0,C1)", "x":3.25, "y":0}, + {"label":"K04 (B0,C2)", "x":4.25, "y":0}, + {"label":"K05 (B0,C3)", "x":5.5, "y":0}, + {"label":"K06 (B0,C4)", "x":6.5, "y":0}, + {"label":"K07 (B0,C5)", "x":7.5, "y":0}, + {"label":"K08 (B0,C6)", "x":8.5, "y":0}, + {"label":"K09 (B0,C7)", "x":9.75, "y":0}, + {"label":"K0A (B0,D0)", "x":10.75, "y":0}, + {"label":"K0B (B0,D1)", "x":11.75, "y":0}, + {"label":"K0C (B0,D2)", "x":12.75, "y":0}, + {"label":"K3E (B3,D4)", "x":14, "y":0}, + {"label":"K0E (B0,D4)", "x":15.25, "y":0}, + {"label":"K0F (B0,D5)", "x":16.25, "y":0}, + {"label":"K0G (B0,D6)", "x":17.25, "y":0}, + + {"label":"K10 (B1,B6)", "x":0, "y":1.25}, + {"label":"K11 (B1,F4)", "x":1, "y":1.25}, + {"label":"K12 (B1,C0)", "x":2, "y":1.25}, + {"label":"K13 (B1,C1)", "x":3, "y":1.25}, + {"label":"K14 (B1,C2)", "x":4, "y":1.25}, + {"label":"K15 (B1,C3)", "x":5, "y":1.25}, + {"label":"K16 (B1,C4)", "x":6, "y":1.25}, + {"label":"K17 (B1,C5)", "x":7, "y":1.25}, + {"label":"K18 (B1,C6)", "x":8, "y":1.25}, + {"label":"K19 (B1,C7)", "x":9, "y":1.25}, + {"label":"K1A (B1,D0)", "x":10, "y":1.25}, + {"label":"K1B (B1,D1)", "x":11, "y":1.25}, + {"label":"K1C (B1,D2)", "x":12, "y":1.25}, + {"label":"K1D (B1,D3)", "x":13, "y":1.25, "w":2}, + {"label":"K1E (B1,D4)", "x":15.25, "y":1.25}, + {"label":"K1F (B1,D5)", "x":16.25, "y":1.25}, + {"label":"K1G (B1,D6)", "x":17.25, "y":1.25}, + + {"label":"K20 (B2,B6)", "x":0, "y":2.25, "w":1.5}, + {"label":"K21 (B2,F4)", "x":1.5, "y":2.25}, + {"label":"K22 (B2,C0)", "x":2.5, "y":2.25}, + {"label":"K23 (B2,C1)", "x":3.5, "y":2.25}, + {"label":"K24 (B2,C2)", "x":4.5, "y":2.25}, + {"label":"K25 (B2,C3)", "x":5.5, "y":2.25}, + {"label":"K26 (B2,C4)", "x":6.5, "y":2.25}, + {"label":"K27 (B2,C5)", "x":7.5, "y":2.25}, + {"label":"K28 (B2,C6)", "x":8.5, "y":2.25}, + {"label":"K29 (B2,C7)", "x":9.5, "y":2.25}, + {"label":"K2A (B2,D0)", "x":10.5, "y":2.25}, + {"label":"K2B (B2,D1)", "x":11.5, "y":2.25}, + {"label":"K2C (B2,D2)", "x":12.5, "y":2.25}, + {"label":"K2D (B2,D3)", "x":13.5, "y":2.25, "w":1.5}, + {"label":"K2E (B2,D4)", "x":15.25, "y":2.25}, + {"label":"K2F (B2,D5)", "x":16.25, "y":2.25}, + {"label":"K2G (B2,D6)", "x":17.25, "y":2.25}, + + {"label":"K30 (B3,B6)", "x":0, "y":3.25, "w":1.75}, + {"label":"K31 (B3,F4)", "x":1.75, "y":3.25}, + {"label":"K32 (B3,C0)", "x":2.75, "y":3.25}, + {"label":"K33 (B3,C1)", "x":3.75, "y":3.25}, + {"label":"K34 (B3,C2)", "x":4.75, "y":3.25}, + {"label":"K35 (B3,C3)", "x":5.75, "y":3.25}, + {"label":"K36 (B3,C4)", "x":6.75, "y":3.25}, + {"label":"K37 (B3,C5)", "x":7.75, "y":3.25}, + {"label":"K38 (B3,C6)", "x":8.75, "y":3.25}, + {"label":"K39 (B3,C7)", "x":9.75, "y":3.25}, + {"label":"K3A (B3,D0)", "x":10.75, "y":3.25}, + {"label":"K3B (B3,D1)", "x":11.75, "y":3.25}, + {"label":"K3D (B3,D3)", "x":12.75, "y":3.25, "w":2.25}, + + {"label":"K40 (B4,B6)", "x":0, "y":4.25, "w":2.25}, + {"label":"K42 (B4,C0)", "x":2.25, "y":4.25}, + {"label":"K43 (B4,C1)", "x":3.25, "y":4.25}, + {"label":"K44 (B4,C2)", "x":4.25, "y":4.25}, + {"label":"K45 (B4,C3)", "x":5.25, "y":4.25}, + {"label":"K46 (B4,C4)", "x":6.25, "y":4.25}, + {"label":"K47 (B4,C5)", "x":7.25, "y":4.25}, + {"label":"K48 (B4,C6)", "x":8.25, "y":4.25}, + {"label":"K49 (B4,C7)", "x":9.25, "y":4.25}, + {"label":"K4A (B4,D0)", "x":10.25, "y":4.25}, + {"label":"K4B (B4,D1)", "x":11.25, "y":4.25}, + {"label":"K4D (B4,D3)", "x":12.25, "y":4.25, "w":2.75}, + {"label":"K4F (B4,D5)", "x":16.25, "y":4.25}, + + {"label":"K50 (B5,B6)", "x":0, "y":5.25, "w":1.25}, + {"label":"K51 (B5,F4)", "x":1.25, "y":5.25, "w":1.25}, + {"label":"K52 (B5,C0)", "x":2.5, "y":5.25, "w":1.25}, + {"label":"K56 (B5,C4)", "x":3.75, "y":5.25, "w":6.25}, + {"label":"K5A (B5,D0)", "x":10, "y":5.25, "w":1.25}, + {"label":"K5B (B5,D1)", "x":11.25, "y":5.25, "w":1.25}, + {"label":"K5C (B5,D2)", "x":12.5, "y":5.25, "w":1.25}, + {"label":"K5D (B5,D3)", "x":13.75, "y":5.25, "w":1.25}, + {"label":"K5E (B5,D4)", "x":15.25, "y":5.25}, + {"label":"K5F (B5,D5)", "x":16.25, "y":5.25}, + {"label":"K5G (B5,D6)", "x":17.25, "y":5.25} + ] + }, + "LAYOUT_tkl_f13_iso": { + "layout": [ + {"label":"K00 (B0,B6)", "x":0, "y":0}, + {"label":"K01 (B0,F4)", "x":1.25, "y":0}, + {"label":"K02 (B0,C0)", "x":2.25, "y":0}, + {"label":"K03 (B0,C1)", "x":3.25, "y":0}, + {"label":"K04 (B0,C2)", "x":4.25, "y":0}, + {"label":"K05 (B0,C3)", "x":5.5, "y":0}, + {"label":"K06 (B0,C4)", "x":6.5, "y":0}, + {"label":"K07 (B0,C5)", "x":7.5, "y":0}, + {"label":"K08 (B0,C6)", "x":8.5, "y":0}, + {"label":"K09 (B0,C7)", "x":9.75, "y":0}, + {"label":"K0A (B0,D0)", "x":10.75, "y":0}, + {"label":"K0B (B0,D1)", "x":11.75, "y":0}, + {"label":"K0C (B0,D2)", "x":12.75, "y":0}, + {"label":"K3E (B3,D4)", "x":14, "y":0}, + {"label":"K0E (B0,D4)", "x":15.25, "y":0}, + {"label":"K0F (B0,D5)", "x":16.25, "y":0}, + {"label":"K0G (B0,D6)", "x":17.25, "y":0}, + + {"label":"K10 (B1,B6)", "x":0, "y":1.25}, + {"label":"K11 (B1,F4)", "x":1, "y":1.25}, + {"label":"K12 (B1,C0)", "x":2, "y":1.25}, + {"label":"K13 (B1,C1)", "x":3, "y":1.25}, + {"label":"K14 (B1,C2)", "x":4, "y":1.25}, + {"label":"K15 (B1,C3)", "x":5, "y":1.25}, + {"label":"K16 (B1,C4)", "x":6, "y":1.25}, + {"label":"K17 (B1,C5)", "x":7, "y":1.25}, + {"label":"K18 (B1,C6)", "x":8, "y":1.25}, + {"label":"K19 (B1,C7)", "x":9, "y":1.25}, + {"label":"K1A (B1,D0)", "x":10, "y":1.25}, + {"label":"K1B (B1,D1)", "x":11, "y":1.25}, + {"label":"K1C (B1,D2)", "x":12, "y":1.25}, + {"label":"K1D (B1,D3)", "x":13, "y":1.25, "w":2}, + {"label":"K1E (B1,D4)", "x":15.25, "y":1.25}, + {"label":"K1F (B1,D5)", "x":16.25, "y":1.25}, + {"label":"K1G (B1,D6)", "x":17.25, "y":1.25}, + + {"label":"K20 (B2,B6)", "x":0, "y":2.25, "w":1.5}, + {"label":"K21 (B2,F4)", "x":1.5, "y":2.25}, + {"label":"K22 (B2,C0)", "x":2.5, "y":2.25}, + {"label":"K23 (B2,C1)", "x":3.5, "y":2.25}, + {"label":"K24 (B2,C2)", "x":4.5, "y":2.25}, + {"label":"K25 (B2,C3)", "x":5.5, "y":2.25}, + {"label":"K26 (B2,C4)", "x":6.5, "y":2.25}, + {"label":"K27 (B2,C5)", "x":7.5, "y":2.25}, + {"label":"K28 (B2,C6)", "x":8.5, "y":2.25}, + {"label":"K29 (B2,C7)", "x":9.5, "y":2.25}, + {"label":"K2A (B2,D0)", "x":10.5, "y":2.25}, + {"label":"K2B (B2,D1)", "x":11.5, "y":2.25}, + {"label":"K2C (B2,D2)", "x":12.5, "y":2.25}, + {"label":"K2E (B2,D4)", "x":15.25, "y":2.25}, + {"label":"K2F (B2,D5)", "x":16.25, "y":2.25}, + {"label":"K2G (B2,D6)", "x":17.25, "y":2.25}, + + {"label":"K30 (B3,B6)", "x":0, "y":3.25, "w":1.75}, + {"label":"K31 (B3,F4)", "x":1.75, "y":3.25}, + {"label":"K32 (B3,C0)", "x":2.75, "y":3.25}, + {"label":"K33 (B3,C1)", "x":3.75, "y":3.25}, + {"label":"K34 (B3,C2)", "x":4.75, "y":3.25}, + {"label":"K35 (B3,C3)", "x":5.75, "y":3.25}, + {"label":"K36 (B3,C4)", "x":6.75, "y":3.25}, + {"label":"K37 (B3,C5)", "x":7.75, "y":3.25}, + {"label":"K38 (B3,C6)", "x":8.75, "y":3.25}, + {"label":"K39 (B3,C7)", "x":9.75, "y":3.25}, + {"label":"K3A (B3,D0)", "x":10.75, "y":3.25}, + {"label":"K3B (B3,D1)", "x":11.75, "y":3.25}, + {"label":"K3C (B3,D2)", "x":12.75, "y":3.25}, + {"label":"K3D (B3,D3)", "x":13.75, "y":2.25, "w":1.25, "h":2}, + + {"label":"K40 (B4,B6)", "x":0, "y":4.25, "w":1.25}, + {"label":"K41 (B4,F4)", "x":1.25, "y":4.25}, + {"label":"K42 (B4,C0)", "x":2.25, "y":4.25}, + {"label":"K43 (B4,C1)", "x":3.25, "y":4.25}, + {"label":"K44 (B4,C2)", "x":4.25, "y":4.25}, + {"label":"K45 (B4,C3)", "x":5.25, "y":4.25}, + {"label":"K46 (B4,C4)", "x":6.25, "y":4.25}, + {"label":"K47 (B4,C5)", "x":7.25, "y":4.25}, + {"label":"K48 (B4,C6)", "x":8.25, "y":4.25}, + {"label":"K49 (B4,C7)", "x":9.25, "y":4.25}, + {"label":"K4A (B4,D0)", "x":10.25, "y":4.25}, + {"label":"K4B (B4,D1)", "x":11.25, "y":4.25}, + {"label":"K4D (B4,D3)", "x":12.25, "y":4.25, "w":2.75}, + {"label":"K4F (B4,D5)", "x":16.25, "y":4.25}, + {"label":"K50 (B5,B6)", "x":0, "y":5.25, "w":1.25}, {"label":"K51 (B5,F4)", "x":1.25, "y":5.25, "w":1.25}, {"label":"K52 (B5,C0)", "x":2.5, "y":5.25, "w":1.25}, diff --git a/keyboards/mechlovin/infinity88/rules.mk b/keyboards/mechlovin/infinity88/rules.mk index 85c01d52bfa1..d81305777849 100644 --- a/keyboards/mechlovin/infinity88/rules.mk +++ b/keyboards/mechlovin/infinity88/rules.mk @@ -8,13 +8,11 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality diff --git a/keyboards/mechlovin/infinityce/infinityce.c b/keyboards/mechlovin/infinityce/infinityce.c index 5d75b480b3d7..84eaf0b7ee9d 100644 --- a/keyboards/mechlovin/infinityce/infinityce.c +++ b/keyboards/mechlovin/infinityce/infinityce.c @@ -16,13 +16,6 @@ #include "infinityce.h" -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - matrix_init_user(); - led_init_ports(); -}; - void led_init_ports(void) { // * Set our LED pins as output setPinOutput(B3); diff --git a/keyboards/mechlovin/infinityce/info.json b/keyboards/mechlovin/infinityce/info.json index 61801e991fe5..6b3b2f8adff1 100644 --- a/keyboards/mechlovin/infinityce/info.json +++ b/keyboards/mechlovin/infinityce/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Infinity CE", "url": "", "maintainer": "Team Mechlovin'", - "width": 18.25, - "height": 6.25, "layouts": { "LAYOUT_all": { - "key_count": 91, "layout": [ {"label":"K00 (B0,B6)", "x":0, "y":0}, {"label":"K01 (B0,B7)", "x":1.25, "y":0}, @@ -102,7 +99,6 @@ ] }, "LAYOUT_ansi": { - "key_count": 88, "layout": [ {"label":"K00 (B0,B6)", "x":0, "y":0}, {"label":"K01 (B0,B7)", "x":1.25, "y":0}, @@ -195,7 +191,6 @@ ] }, "LAYOUT_iso": { - "key_count": 89, "layout": [ {"label":"K00 (B0,B6)", "x":0, "y":0}, {"label":"K01 (B0,B7)", "x":1.25, "y":0}, @@ -290,4 +285,4 @@ } } ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/" -} \ No newline at end of file +} diff --git a/keyboards/mechlovin/infinityce/rules.mk b/keyboards/mechlovin/infinityce/rules.mk index 8a5bd6b42ca7..1f44da3ea6c9 100644 --- a/keyboards/mechlovin/infinityce/rules.mk +++ b/keyboards/mechlovin/infinityce/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/mechlovin/jay60/config.h b/keyboards/mechlovin/jay60/config.h new file mode 100644 index 000000000000..0b9770e5e232 --- /dev/null +++ b/keyboards/mechlovin/jay60/config.h @@ -0,0 +1,147 @@ +/* +Copyright 2021 Mechlovin' + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4D4C +#define PRODUCT_ID 0x0600 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Mechlovin Studio +#define PRODUCT Jay60 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/* + * 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 { C2, C1, C0, D7, A1 } +#define MATRIX_COL_PINS { B6, B5, B3, B2, B1, B0, A0, A6, A7, C7, C6, C5, C4, C3 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +//#define LED_NUM_LOCK_PIN B0 +#define LED_CAPS_LOCK_PIN D4 +//#define LED_SCROLL_LOCK_PIN B2 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +//#define RGB_DI_PIN E2 +//#ifdef RGB_DI_PIN +//# define RGBLED_NUM 16 +//# define RGBLIGHT_HUE_STEP 8 +//# define RGBLIGHT_SAT_STEP 8 +//# define RGBLIGHT_VAL_STEP 8 +//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +//# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +//#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/mechlovin/jay60/info.json b/keyboards/mechlovin/jay60/info.json new file mode 100644 index 000000000000..d4c0f57dd63e --- /dev/null +++ b/keyboards/mechlovin/jay60/info.json @@ -0,0 +1,78 @@ +{ + "keyboard_name": "Jay60", + "url": "", + "maintainer": "Mechlovin' Studio", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"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}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3}, + {"x": 12.25, "y": 3, "w": 1.75}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6.25}, + {"x": 10, "y": 4, "w": 1.25}, + {"x": 11.25, "y": 4, "w": 1.25}, + {"x": 12.5, "y": 4, "w": 1.25}, + {"x": 13.75, "y": 4, "w": 1.25} + ] + } + } +} diff --git a/keyboards/mechlovin/jay60/jay60.c b/keyboards/mechlovin/jay60/jay60.c new file mode 100644 index 000000000000..9571c1375a1f --- /dev/null +++ b/keyboards/mechlovin/jay60/jay60.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Mechlovin' + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "jay60.h" diff --git a/keyboards/mechlovin/jay60/jay60.h b/keyboards/mechlovin/jay60/jay60.h new file mode 100644 index 000000000000..dfe4980483ff --- /dev/null +++ b/keyboards/mechlovin/jay60/jay60.h @@ -0,0 +1,41 @@ +/* Copyright 2021 Mechlovin' + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT_all( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2C, \ + 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, \ + 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, K1D }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \ + { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \ + { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D }, \ +} diff --git a/keyboards/mechlovin/jay60/keymaps/default/keymap.c b/keyboards/mechlovin/jay60/keymaps/default/keymap.c new file mode 100644 index 000000000000..10546ece4dec --- /dev/null +++ b/keyboards/mechlovin/jay60/keymaps/default/keymap.c @@ -0,0 +1,36 @@ +/* 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 . + */ +#include QMK_KEYBOARD_H + +#define LT1_CAP LT(1, KC_CAPS) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = 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_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + LT1_CAP, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, TO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI, KC_MENU, KC_LCTL + ), + [1] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_PENT, + _______, _______, _______, _______, _______, _______, _______, _______, KC_P0, KC_P1, KC_P2, KC_P3, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; diff --git a/keyboards/mechlovin/jay60/keymaps/default/readme.md b/keyboards/mechlovin/jay60/keymaps/default/readme.md new file mode 100644 index 000000000000..c86f2113d848 --- /dev/null +++ b/keyboards/mechlovin/jay60/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for common60 diff --git a/keyboards/mechlovin/jay60/keymaps/via/keymap.c b/keyboards/mechlovin/jay60/keymaps/via/keymap.c new file mode 100644 index 000000000000..34b8cb9822c6 --- /dev/null +++ b/keyboards/mechlovin/jay60/keymaps/via/keymap.c @@ -0,0 +1,50 @@ +/* Copyright 2020 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 . + */ +#include QMK_KEYBOARD_H + +#define LT1_CAP LT(1, KC_CAPS) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = 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_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + LT1_CAP, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, TO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI, KC_MENU, KC_LCTL + ), + [1] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_PENT, + _______, _______, _______, _______, _______, _______, _______, _______, KC_P0, KC_P1, KC_P2, KC_P3, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; diff --git a/keyboards/mechlovin/jay60/keymaps/via/rules.mk b/keyboards/mechlovin/jay60/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/mechlovin/jay60/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/mechlovin/jay60/readme.md b/keyboards/mechlovin/jay60/readme.md new file mode 100644 index 000000000000..79867e5503f9 --- /dev/null +++ b/keyboards/mechlovin/jay60/readme.md @@ -0,0 +1,26 @@ +# jay60 + +![jay60](https://i.imgur.com/FVg59LUl.png) + +Jay60 PCB, Unikorn PCB compatible +* Keyboard Maintainer: [Mechlovin'](https://mechlovin.studio) +* Hardware Supported: Jay60, Atmega32A +* Hardware Availability: [Mechlovin'](https://mechlovin.studio) + +Make example for this keyboard (after setting up your build environment): + + make mechlovin/jay60:default + +Flashing example for this keyboard: + + make mechlovin/jay60:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Bootloader reset**: Hold down the key at (0,13) in the matrix (Backspace) and plug in the keyboard +* **Keycode in layout**: Press the key mapped to `RESET` if it is available diff --git a/keyboards/mechlovin/jay60/rules.mk b/keyboards/mechlovin/jay60/rules.mk new file mode 100644 index 000000000000..0ed896250405 --- /dev/null +++ b/keyboards/mechlovin/jay60/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32a + +# Processor frequency +F_CPU = 16000000 + +# Bootloader selection +BOOTLOADER = usbasploader + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/mechlovin/kanu/info.json b/keyboards/mechlovin/kanu/info.json index 3369ac476478..1049ba7d1d12 100644 --- a/keyboards/mechlovin/kanu/info.json +++ b/keyboards/mechlovin/kanu/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Kanu", "url": "", "maintainer": "Team Mechlovin'", - "width": 16, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/mechlovin/kanu/kanu.c b/keyboards/mechlovin/kanu/kanu.c index d19b7f1031a1..ceb874e12431 100644 --- a/keyboards/mechlovin/kanu/kanu.c +++ b/keyboards/mechlovin/kanu/kanu.c @@ -16,10 +16,6 @@ #include "kanu.h" -void matrix_init_kb(void) { - matrix_init_user(); - led_init_ports(); -}; void led_init_ports(void) { setPinOutput(B2); setPinOutput(D0); diff --git a/keyboards/mechlovin/kanu/rules.mk b/keyboards/mechlovin/kanu/rules.mk index 2c7cbc4aedab..c59d33872a97 100644 --- a/keyboards/mechlovin/kanu/rules.mk +++ b/keyboards/mechlovin/kanu/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LAYOUTS = 65_ansi_blocker 65_iso_blocker_split_bs 65_iso_blocker diff --git a/keyboards/mechlovin/mechlovin9/config.h b/keyboards/mechlovin/mechlovin9/config.h new file mode 100644 index 000000000000..669d79ac91ff --- /dev/null +++ b/keyboards/mechlovin/mechlovin9/config.h @@ -0,0 +1,30 @@ + +/* +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 . +*/ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4D4C +#define MANUFACTURER Mechlovin Studio + +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +#define DIODE_DIRECTION COL2ROW +#define BACKLIGHT_LEVELS 3 diff --git a/keyboards/mechlovin/mechlovin9/info.json b/keyboards/mechlovin/mechlovin9/info.json new file mode 100644 index 000000000000..6fea78aecce9 --- /dev/null +++ b/keyboards/mechlovin/mechlovin9/info.json @@ -0,0 +1,78 @@ +{ + "keyboard_name": "mechlovin9", + "url": "", + "maintainer": "Team Mechlovin", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"K00 (B0,B5)", "x":0, "y":0}, + {"label":"K01 (B0,B6)", "x":1, "y":0}, + {"label":"K02 (B0,B7)", "x":2, "y":0}, + {"label":"K03 (B0,C0)", "x":3, "y":0}, + {"label":"K04 (B0,C1)", "x":4, "y":0}, + {"label":"K05 (B0,C2)", "x":5, "y":0}, + {"label":"K06 (B0,C3)", "x":6, "y":0}, + {"label":"K07 (B0,C4)", "x":7, "y":0}, + {"label":"K08 (B0,C5)", "x":8, "y":0}, + {"label":"K09 (B0,C6)", "x":9, "y":0}, + {"label":"K0A (B0,C7)", "x":10, "y":0}, + {"label":"K0B (B0,D0)", "x":11, "y":0}, + {"label":"K0C (B0,D1)", "x":12, "y":0}, + {"label":"K0D (B0,D2)", "x":13, "y":0}, + {"label":"K1D (B1,D2)", "x":14, "y":0}, + {"label":"K0E (B0,D3)", "x":15, "y":0}, + {"label":"K10 (B1,B5)", "x":0, "y":1, "w":1.5}, + {"label":"K11 (B1,B6)", "x":1.5, "y":1}, + {"label":"K12 (B1,B7)", "x":2.5, "y":1}, + {"label":"K13 (B1,C0)", "x":3.5, "y":1}, + {"label":"K14 (B1,C1)", "x":4.5, "y":1}, + {"label":"K15 (B1,C2)", "x":5.5, "y":1}, + {"label":"K16 (B1,C3)", "x":6.5, "y":1}, + {"label":"K17 (B1,C4)", "x":7.5, "y":1}, + {"label":"K18 (B1,C5)", "x":8.5, "y":1}, + {"label":"K19 (B1,C6)", "x":9.5, "y":1}, + {"label":"K1A (B1,C7)", "x":10.5, "y":1}, + {"label":"K1B (B1,D0)", "x":11.5, "y":1}, + {"label":"K1C (B1,D1)", "x":12.5, "y":1}, + {"label":"K2C (B2,D1)", "x":13.5, "y":1, "w":1.5}, + {"label":"K1E (B1,D3)", "x":15, "y":1}, + {"label":"K20 (B2,B5)", "x":0, "y":2, "w":1.75}, + {"label":"K21 (B2,B6)", "x":1.75, "y":2}, + {"label":"K22 (B2,B7)", "x":2.75, "y":2}, + {"label":"K23 (B2,C0)", "x":3.75, "y":2}, + {"label":"K24 (B2,C1)", "x":4.75, "y":2}, + {"label":"K25 (B2,C2)", "x":5.75, "y":2}, + {"label":"K26 (B2,C3)", "x":6.75, "y":2}, + {"label":"K27 (B2,C4)", "x":7.75, "y":2}, + {"label":"K28 (B2,C5)", "x":8.75, "y":2}, + {"label":"K29 (B2,C6)", "x":9.75, "y":2}, + {"label":"K2A (B2,C7)", "x":10.75, "y":2}, + {"label":"K2B (B2,D0)", "x":11.75, "y":2}, + {"label":"K2D (B2,D2)", "x":12.75, "y":2, "w":2.25}, + {"label":"K2E (B2,D3)", "x":15, "y":2}, + {"label":"K30 (B3,B5)", "x":0, "y":3, "w":2.25}, + {"label":"K32 (B3,B7)", "x":2.25, "y":3}, + {"label":"K33 (B3,C0)", "x":3.25, "y":3}, + {"label":"K34 (B3,C1)", "x":4.25, "y":3}, + {"label":"K35 (B3,C2)", "x":5.25, "y":3}, + {"label":"K36 (B3,C3)", "x":6.25, "y":3}, + {"label":"K37 (B3,C4)", "x":7.25, "y":3}, + {"label":"K38 (B3,C5)", "x":8.25, "y":3}, + {"label":"K39 (B3,C6)", "x":9.25, "y":3}, + {"label":"K3A (B3,C7)", "x":10.25, "y":3}, + {"label":"K3B (B3,D0)", "x":11.25, "y":3}, + {"label":"K3C (B3,D1)", "x":12.25, "y":3, "w":1.75}, + {"label":"K3D (B3,D2)", "x":14, "y":3}, + {"label":"K3E (B3,D3)", "x":15, "y":3}, + {"label":"K40 (B4,B5)", "x":0, "y":4, "w":1.5}, + {"label":"K41 (B4,B6)", "x":1.5, "y":4}, + {"label":"K42 (B4,B7)", "x":2.5, "y":4, "w":1.5}, + {"label":"K46 (B4,C3)", "x":4, "y":4, "w":7}, + {"label":"K4B (B4,D0)", "x":11, "y":4, "w":1.5}, + {"label":"K4C (B4,D1)", "x":13, "y":4}, + {"label":"K4D (B4,D2)", "x":14, "y":4}, + {"label":"K4E (B4,D3)", "x":15, "y":4} + ] + } + } +} diff --git a/keyboards/mechlovin/hannah65/mechlovin9/keymaps/default/keymap.c b/keyboards/mechlovin/mechlovin9/keymaps/default/keymap.c similarity index 100% rename from keyboards/mechlovin/hannah65/mechlovin9/keymaps/default/keymap.c rename to keyboards/mechlovin/mechlovin9/keymaps/default/keymap.c diff --git a/keyboards/mechlovin/hannah65/mechlovin9/keymaps/default/readme.md b/keyboards/mechlovin/mechlovin9/keymaps/default/readme.md similarity index 100% rename from keyboards/mechlovin/hannah65/mechlovin9/keymaps/default/readme.md rename to keyboards/mechlovin/mechlovin9/keymaps/default/readme.md diff --git a/keyboards/mechlovin/hannah65/mechlovin9/keymaps/via/keymap.c b/keyboards/mechlovin/mechlovin9/keymaps/via/keymap.c similarity index 100% rename from keyboards/mechlovin/hannah65/mechlovin9/keymaps/via/keymap.c rename to keyboards/mechlovin/mechlovin9/keymaps/via/keymap.c diff --git a/keyboards/mechlovin/mechlovin9/keymaps/via/rules.mk b/keyboards/mechlovin/mechlovin9/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/mechlovin/mechlovin9/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/mechlovin/mechlovin9/mechlovin9.c b/keyboards/mechlovin/mechlovin9/mechlovin9.c new file mode 100644 index 000000000000..a5a8b6c0fe7c --- /dev/null +++ b/keyboards/mechlovin/mechlovin9/mechlovin9.c @@ -0,0 +1,17 @@ +/* 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 . + */ + +#include "mechlovin9.h" diff --git a/keyboards/mechlovin/hannah65/mechlovin9/mechlovin9.h b/keyboards/mechlovin/mechlovin9/mechlovin9.h similarity index 97% rename from keyboards/mechlovin/hannah65/mechlovin9/mechlovin9.h rename to keyboards/mechlovin/mechlovin9/mechlovin9.h index 4aebaad0f34e..c7d65e05f48c 100644 --- a/keyboards/mechlovin/hannah65/mechlovin9/mechlovin9.h +++ b/keyboards/mechlovin/mechlovin9/mechlovin9.h @@ -1,4 +1,4 @@ -/* Copyright 2020 Team Mechlovin +/* 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 diff --git a/keyboards/mechlovin/mechlovin9/readme.md b/keyboards/mechlovin/mechlovin9/readme.md new file mode 100644 index 000000000000..55dead19c489 --- /dev/null +++ b/keyboards/mechlovin/mechlovin9/readme.md @@ -0,0 +1,17 @@ +# mechlovin9 + +![mechlovin9](https://i.imgur.com/T5Lm6OYl.png) + +A 65% PCB, compatible with Kyuu. + +* Keyboard Maintainer: [Team Mechlovin](https://github.com/mechlovin) +* Hardware Supported: Kyuu Keyboard. +* Hardware Availability: [Reddit GB](https://www.reddit.com/r/mechmarket/comments/i61par/gb_mechlovin_9_a_kyuu_65_keyboard_compatible_pcb/) + +Make example for this keyboard (after setting up your build environment): + + make mechlovin/mechlovin9/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). + +**Reset Key:** To put the mechlovin9 PCB into bootloader, hold ESC and plug cable. \ No newline at end of file diff --git a/keyboards/mechlovin/mechlovin9/rev1/config.h b/keyboards/mechlovin/mechlovin9/rev1/config.h new file mode 100644 index 000000000000..2a9c335d73fb --- /dev/null +++ b/keyboards/mechlovin/mechlovin9/rev1/config.h @@ -0,0 +1,42 @@ +/* +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 . +*/ + +#pragma once + +#define PRODUCT_ID 0x6509 +#define DEVICE_VER 0x0001 +#define PRODUCT Mechlovin9 + +/* + * 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 { A4, A5, A3, A2, A1 } +#define MATRIX_COL_PINS { B11, B10, B2, B1, B0, A7, A6, A0, C15, B4, B5, B3, C13, C14, A13 } + +#define LED_CAPS_LOCK_PIN B9 + +#define BACKLIGHT_PIN B8 +#define BACKLIGHT_BREATHING +#define BACKLIGHT_PWM_DRIVER PWMD3 +#define BACKLIGHT_PWM_CHANNEL 3 \ No newline at end of file diff --git a/keyboards/mechlovin/mechlovin9/rev1/readme.md b/keyboards/mechlovin/mechlovin9/rev1/readme.md new file mode 100644 index 000000000000..55dead19c489 --- /dev/null +++ b/keyboards/mechlovin/mechlovin9/rev1/readme.md @@ -0,0 +1,17 @@ +# mechlovin9 + +![mechlovin9](https://i.imgur.com/T5Lm6OYl.png) + +A 65% PCB, compatible with Kyuu. + +* Keyboard Maintainer: [Team Mechlovin](https://github.com/mechlovin) +* Hardware Supported: Kyuu Keyboard. +* Hardware Availability: [Reddit GB](https://www.reddit.com/r/mechmarket/comments/i61par/gb_mechlovin_9_a_kyuu_65_keyboard_compatible_pcb/) + +Make example for this keyboard (after setting up your build environment): + + make mechlovin/mechlovin9/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). + +**Reset Key:** To put the mechlovin9 PCB into bootloader, hold ESC and plug cable. \ No newline at end of file diff --git a/keyboards/mechlovin/mechlovin9/rev1/rules.mk b/keyboards/mechlovin/mechlovin9/rev1/rules.mk new file mode 100644 index 000000000000..38261a4f0638 --- /dev/null +++ b/keyboards/mechlovin/mechlovin9/rev1/rules.mk @@ -0,0 +1,10 @@ +# MCU name +MCU = STM32F303 +BOARD = QMK_PROTON_C + +# Build Options +# change yes to no to disable +# +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # USB Nkey Rollover diff --git a/keyboards/mechlovin/mechlovin9/rev2/config.h b/keyboards/mechlovin/mechlovin9/rev2/config.h new file mode 100644 index 000000000000..ed11fafa83f4 --- /dev/null +++ b/keyboards/mechlovin/mechlovin9/rev2/config.h @@ -0,0 +1,44 @@ +/* +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 . +*/ + +#pragma once + +#define PRODUCT_ID 0x6509 +#define DEVICE_VER 0x0002 +#define PRODUCT Mechlovin9 Rev2 + +/* + * 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 { A0, A1, A2, A3, A4 } +#define MATRIX_COL_PINS { B2, B1, B0, B3, B4, B5, D0, D1, D5, D6, D7, C0, C3, C2, C1 } + +#define LED_CAPS_LOCK_PIN A7 + +#define BACKLIGHT_PIN D4 +#define BACKLIGHT_BREATHING + +/* Bootmagic Lite key configuration */ + #define BOOTMAGIC_LITE_ROW 0 + #define BOOTMAGIC_LITE_COLUMN 13 diff --git a/keyboards/mechlovin/mechlovin9/rev2/readme.md b/keyboards/mechlovin/mechlovin9/rev2/readme.md new file mode 100644 index 000000000000..55dead19c489 --- /dev/null +++ b/keyboards/mechlovin/mechlovin9/rev2/readme.md @@ -0,0 +1,17 @@ +# mechlovin9 + +![mechlovin9](https://i.imgur.com/T5Lm6OYl.png) + +A 65% PCB, compatible with Kyuu. + +* Keyboard Maintainer: [Team Mechlovin](https://github.com/mechlovin) +* Hardware Supported: Kyuu Keyboard. +* Hardware Availability: [Reddit GB](https://www.reddit.com/r/mechmarket/comments/i61par/gb_mechlovin_9_a_kyuu_65_keyboard_compatible_pcb/) + +Make example for this keyboard (after setting up your build environment): + + make mechlovin/mechlovin9/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). + +**Reset Key:** To put the mechlovin9 PCB into bootloader, hold ESC and plug cable. \ No newline at end of file diff --git a/keyboards/mechlovin/mechlovin9/rev2/rules.mk b/keyboards/mechlovin/mechlovin9/rev2/rules.mk new file mode 100644 index 000000000000..afbfc0d853f5 --- /dev/null +++ b/keyboards/mechlovin/mechlovin9/rev2/rules.mk @@ -0,0 +1,8 @@ +# MCU name +MCU = atmega32a + +# Processor frequency +F_CPU = 16000000 + +# Bootloader selection +BOOTLOADER = bootloadhid diff --git a/keyboards/mechlovin/mechlovin9/rules.mk b/keyboards/mechlovin/mechlovin9/rules.mk new file mode 100644 index 000000000000..71f9a3a063cc --- /dev/null +++ b/keyboards/mechlovin/mechlovin9/rules.mk @@ -0,0 +1,15 @@ +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +DEFAULT_FOLDER = mechlovin/mechlovin9/rev1 \ No newline at end of file diff --git a/keyboards/mechlovin/olly/bb/bb.c b/keyboards/mechlovin/olly/bb/bb.c new file mode 100644 index 000000000000..6ec4a15ee5b5 --- /dev/null +++ b/keyboards/mechlovin/olly/bb/bb.c @@ -0,0 +1,36 @@ +/* Copyright 2021 mechlovin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "bb.h" + + +void led_init_ports(void) { + setPinOutput(C0); + setPinOutput(D0); + setPinOutput(D1); + setPinOutput(C1); + setPinOutput(C6); +} + +__attribute__((weak)) layer_state_t layer_state_set_user(layer_state_t state) { + writePin(D1, layer_state_cmp(state, 1)); + writePin(D0, layer_state_cmp(state, 2)); + writePin(C1, layer_state_cmp(state, 3)); + writePin(C0, layer_state_cmp(state, 4)); + writePin(C6, layer_state_cmp(state, 5)); + + return state; +} diff --git a/keyboards/mechlovin/olly/bb/bb.h b/keyboards/mechlovin/olly/bb/bb.h new file mode 100644 index 000000000000..91a8f2389614 --- /dev/null +++ b/keyboards/mechlovin/olly/bb/bb.h @@ -0,0 +1,33 @@ +/* Copyright 2021 mechlovin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_all( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K1D, K0E, K0F, K0G, K0H, K0I, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K2E, K1E, K1F, K1G, K1H, K1I, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, 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, K43, K46, K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H, K4I \ +) { \ + { 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, K1D, K1E, K1F, K1G, K1H, K1I }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, 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, KC_NO, K43, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H, K4I }, \ +} diff --git a/keyboards/mechlovin/olly/bb/config.h b/keyboards/mechlovin/olly/bb/config.h new file mode 100644 index 000000000000..3110a9589cea --- /dev/null +++ b/keyboards/mechlovin/olly/bb/config.h @@ -0,0 +1,72 @@ +/* +Copyright 2021 mechlovin + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4D4C +#define PRODUCT_ID 0xD181 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Mechlovin.Studio +#define PRODUCT Olly BB + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 19 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS {D6, A5, A4, A3, A6} +#define UNUSED_PINS + +#define BACKLIGHT_PIN D4 +#define BACKLIGHT_BREATHING + +#define LED_NUM_LOCK_PIN B1 +#define LED_CAPS_LOCK_PIN B0 +#define LED_SCROLL_LOCK_PIN B2 +#define LED_PIN_ON_STATE 1 + +#ifdef RGBLIGHT_ENABLE +#define RGB_DI_PIN B3 +#define RGBLED_NUM 24 +#define RGBLIGHT_LIMIT_VAL 255 +#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +#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 +#endif +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 diff --git a/keyboards/mechlovin/olly/bb/info.json b/keyboards/mechlovin/olly/bb/info.json new file mode 100644 index 000000000000..90e07662fd12 --- /dev/null +++ b/keyboards/mechlovin/olly/bb/info.json @@ -0,0 +1,101 @@ +{ + "keyboard_name": "Mechlovin Olly", + "url": "", + "maintainer": "Mechlovin' Studio", + "layouts": { + "LAYOUT": { + "layout": [ + { "label": "K00 (B0,B5)", "x": 0, "y": 0 }, + { "label": "K01 (B0,B6)", "x": 1, "y": 0 }, + { "label": "K02 (B0,B7)", "x": 2, "y": 0 }, + { "label": "K03 (B0,C0)", "x": 3, "y": 0 }, + { "label": "K04 (B0,C1)", "x": 4, "y": 0 }, + { "label": "K05 (B0,C2)", "x": 5, "y": 0 }, + { "label": "K06 (B0,C3)", "x": 6, "y": 0 }, + { "label": "K07 (B0,C4)", "x": 7, "y": 0 }, + { "label": "K08 (B0,C5)", "x": 8, "y": 0 }, + { "label": "K09 (B0,C6)", "x": 9, "y": 0 }, + { "label": "K0A (B0,C7)", "x": 10, "y": 0 }, + { "label": "K0B (B0,D0)", "x": 11, "y": 0 }, + { "label": "K0C (B0,D1)", "x": 12, "y": 0 }, + { "label": "K0D (B0,D2)", "x": 13, "y": 0 }, + { "label": "K1D (B1,D2)", "x": 14, "y": 0 }, + { "label": "K0E (B0,D3)", "x": 15.25, "y": 0 }, + { "label": "K0F (B0,D4)", "x": 16.5, "y": 0 }, + { "label": "K0G (B0,D5)", "x": 17.5, "y": 0 }, + { "label": "K0H (B0,D6)", "x": 18.5, "y": 0 }, + { "label": "K0I (B0,D7)", "x": 19.5, "y": 0 }, + { "label": "K10 (B1,B5)", "x": 0, "y": 1, "w": 1.5 }, + { "label": "K11 (B1,B6)", "x": 1.5, "y": 1 }, + { "label": "K12 (B1,B7)", "x": 2.5, "y": 1 }, + { "label": "K13 (B1,C0)", "x": 3.5, "y": 1 }, + { "label": "K14 (B1,C1)", "x": 4.5, "y": 1 }, + { "label": "K15 (B1,C2)", "x": 5.5, "y": 1 }, + { "label": "K16 (B1,C3)", "x": 6.5, "y": 1 }, + { "label": "K17 (B1,C4)", "x": 7.5, "y": 1 }, + { "label": "K18 (B1,C5)", "x": 8.5, "y": 1 }, + { "label": "K19 (B1,C6)", "x": 9.5, "y": 1 }, + { "label": "K1A (B1,C7)", "x": 10.5, "y": 1 }, + { "label": "K1B (B1,D0)", "x": 11.5, "y": 1 }, + { "label": "K1C (B1,D1)", "x": 12.5, "y": 1 }, + { "label": "K2E (B2,D3)", "x": 13.5, "y": 1, "w": 1.5 }, + { "label": "K1E (B1,D3)", "x": 15.25, "y": 1 }, + { "label": "K1F (B1,D4)", "x": 16.5, "y": 1 }, + { "label": "K1G (B1,D5)", "x": 17.5, "y": 1 }, + { "label": "K1H (B1,D6)", "x": 18.5, "y": 1 }, + { "label": "K1I (B1,D7)", "x": 19.5, "y": 1 }, + { "label": "K20 (B2,B5)", "x": 0, "y": 2, "w": 1.75 }, + { "label": "K21 (B2,B6)", "x": 1.75, "y": 2 }, + { "label": "K22 (B2,B7)", "x": 2.75, "y": 2 }, + { "label": "K23 (B2,C0)", "x": 3.75, "y": 2 }, + { "label": "K24 (B2,C1)", "x": 4.75, "y": 2 }, + { "label": "K25 (B2,C2)", "x": 5.75, "y": 2 }, + { "label": "K26 (B2,C3)", "x": 6.75, "y": 2 }, + { "label": "K27 (B2,C4)", "x": 7.75, "y": 2 }, + { "label": "K28 (B2,C5)", "x": 8.75, "y": 2 }, + { "label": "K29 (B2,C6)", "x": 9.75, "y": 2 }, + { "label": "K2A (B2,C7)", "x": 10.75, "y": 2 }, + { "label": "K2B (B2,D0)", "x": 11.75, "y": 2 }, + { "label": "K2C (B2,D1)", "x": 12.75, "y": 2 }, + { "label": "K2D (B2,D2)", "x": 13.75, "y": 2, "w": 1.25 }, + { "label": "K2F (B2,D4)", "x": 16.5, "y": 2 }, + { "label": "K2G (B2,D5)", "x": 17.5, "y": 2 }, + { "label": "K2H (B2,D6)", "x": 18.5, "y": 2 }, + { "label": "K2I (B2,D7)", "x": 19.5, "y": 2 }, + { "label": "K30 (B3,B5)", "x": 0, "y": 3, "w": 1.25 }, + { "label": "K31 (B3,B6)", "x": 1.25, "y": 3 }, + { "label": "K32 (B3,B7)", "x": 2.25, "y": 3 }, + { "label": "K33 (B3,C0)", "x": 3.25, "y": 3 }, + { "label": "K34 (B3,C1)", "x": 4.25, "y": 3 }, + { "label": "K35 (B3,C2)", "x": 5.25, "y": 3 }, + { "label": "K36 (B3,C3)", "x": 6.25, "y": 3 }, + { "label": "K37 (B3,C4)", "x": 7.25, "y": 3 }, + { "label": "K38 (B3,C5)", "x": 8.25, "y": 3 }, + { "label": "K39 (B3,C6)", "x": 9.25, "y": 3 }, + { "label": "K3A (B3,C7)", "x": 10.25, "y": 3 }, + { "label": "K3B (B3,D0)", "x": 11.25, "y": 3 }, + { "label": "K3C (B3,D1)", "x": 12.25, "y": 3, "w": 1.75 }, + { "label": "K3D (B3,D2)", "x": 14, "y": 3 }, + { "label": "K3F (B3,D4)", "x": 16.5, "y": 3 }, + { "label": "K3G (B3,D5)", "x": 17.5, "y": 3 }, + { "label": "K3H (B3,D6)", "x": 18.5, "y": 3 }, + { "label": "K3I (B3,D7)", "x": 19.5, "y": 3 }, + { "label": "K3E (B3,D3)", "x": 15.25, "y": 3.25 }, + { "label": "K40 (B4,B5)", "x": 0, "y": 4, "w": 1.5 }, + { "label": "K41 (B4,B6)", "x": 1.5, "y": 4 }, + { "label": "K43 (B4,C0)", "x": 2.5, "y": 4, "w": 1.5 }, + { "label": "K46 (B4,C3)", "x": 4, "y": 4, "w": 6.25 }, + { "label": "K4A (B4,C7)", "x": 10.25, "y": 4, "w": 1.25 }, + { "label": "K4B (B4,D0)", "x": 11.5, "y": 4, "w": 1.25 }, + { "label": "K4C (B4,D1)", "x": 12.75, "y": 4, "w": 1.25 }, + { "label": "K4G (B4,D5)", "x": 17.5, "y": 4 }, + { "label": "K4H (B4,D6)", "x": 18.5, "y": 4 }, + { "label": "K4I (B4,D7)", "x": 19.5, "y": 4 }, + { "label": "K4D (B4,D2)", "x": 14.25, "y": 4.25 }, + { "label": "K4E (B4,D3)", "x": 15.25, "y": 4.25 }, + { "label": "K4F (B4,D4)", "x": 16.25, "y": 4.25 } + ] + } + } + ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/" +} diff --git a/keyboards/mechlovin/olly/bb/keymaps/default/keymap.c b/keyboards/mechlovin/olly/bb/keymaps/default/keymap.c new file mode 100644 index 000000000000..c7c0da223e50 --- /dev/null +++ b/keyboards/mechlovin/olly/bb/keymaps/default/keymap.c @@ -0,0 +1,48 @@ +/* Copyright 2021 mechlovin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = 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_BSPC, KC_DEL, KC_INS, KC_NLCK, KC_PSLS, KC_PAST, KC_PAUS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_P7, KC_P8, KC_P9, KC_PMNS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_SPC, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT + ), + [1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + +}; \ No newline at end of file diff --git a/keyboards/mechlovin/olly/bb/keymaps/default/readme.md b/keyboards/mechlovin/olly/bb/keymaps/default/readme.md new file mode 100644 index 000000000000..2fa087aa1d02 --- /dev/null +++ b/keyboards/mechlovin/olly/bb/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for Olly BB diff --git a/keyboards/mechlovin/olly/bb/keymaps/via/keymap.c b/keyboards/mechlovin/olly/bb/keymaps/via/keymap.c new file mode 100644 index 000000000000..c7c0da223e50 --- /dev/null +++ b/keyboards/mechlovin/olly/bb/keymaps/via/keymap.c @@ -0,0 +1,48 @@ +/* Copyright 2021 mechlovin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = 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_BSPC, KC_DEL, KC_INS, KC_NLCK, KC_PSLS, KC_PAST, KC_PAUS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_P7, KC_P8, KC_P9, KC_PMNS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_SPC, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT + ), + [1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + +}; \ No newline at end of file diff --git a/keyboards/mechlovin/olly/bb/keymaps/via/readme.md b/keyboards/mechlovin/olly/bb/keymaps/via/readme.md new file mode 100644 index 000000000000..bc577158bbc1 --- /dev/null +++ b/keyboards/mechlovin/olly/bb/keymaps/via/readme.md @@ -0,0 +1 @@ +# The VIA keymap for Olly BB \ No newline at end of file diff --git a/keyboards/mechlovin/olly/bb/keymaps/via/rules.mk b/keyboards/mechlovin/olly/bb/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/mechlovin/olly/bb/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/mechlovin/olly/bb/matrix.c b/keyboards/mechlovin/olly/bb/matrix.c new file mode 100644 index 000000000000..e045299bae2f --- /dev/null +++ b/keyboards/mechlovin/olly/bb/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 . +*/ + +#include "matrix.h" +#include "gpio.h" + +static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; + +/* Cols 0 - 16 + * These columns use two 74HC138 3 to 8 bit demultiplexer. B4, C7 is the enable pin, must be set high (1) to use it. + * + * col / pin: PA0 PA1 PA2 PB4 PC7 PC2 PC3 PC5 + * 0: 0 ── 0 ── 0 1 ── 0 0 0 0 + * ──────────────────────────────────────────── + * 1: 0 ── 0 ── 1 1 ── 0 0 0 0 + * ──────────────────────────────────────────── + * 2: 0 ── 1 ── 0 1 ── 0 0 0 0 + * ──────────────────────────────────────────── + * 3: 0 ── 1 ── 1 1 ── 0 0 0 0 + * ──────────────────────────────────────────── + * 4: 1 ── 0 ── 0 1 ── 0 0 0 0 + * ──────────────────────────────────────────── + * 5: 1 ── 0 ── 1 1 ── 0 0 0 0 + * ──────────────────────────────────────────── + * 6: 1 ── 1 ── 0 1 ── 0 0 0 0 + * ──────────────────────────────────────────── + * 7: 1 ── 1 ── 1 1 ── 0 0 0 0 + * ──────────────────────────────────────────── + * 8: 1 ── 1 ── 1 0 ── 1 0 0 0 + * ──────────────────────────────────────────── + * 9: 0 ── 0 ── 0 0 ── 1 0 0 0 + * ──────────────────────────────────────────── + *10: 0 ── 0 ── 1 0 ── 1 0 0 0 + * ──────────────────────────────────────────── + *11: 0 ── 1 ── 0 0 ── 1 0 0 0 + * ──────────────────────────────────────────── + *12: 0 ── 1 ── 1 0 ── 1 0 0 0 + * ──────────────────────────────────────────── + *13: 1 ── 0 ── 0 0 ── 1 0 0 0 + * ──────────────────────────────────────────── + *14: 1 ── 0 ── 1 0 ── 1 0 0 0 + * ──────────────────────────────────────────── + *15: 1 ── 1 ── 0 0 ── 1 0 0 0 + * ──────────────────────────────────────────── + *16: 0 ── 0 ── 0 0 ── 0 1 0 0 + * ──────────────────────────────────────────── + *17: 0 ── 0 ── 0 0 ── 0 0 1 0 + * ──────────────────────────────────────────── + *18: 0 ── 0 ── 0 0 ── 0 0 0 1 + * + */ +static void select_col(uint8_t col) { + switch (col) { + case 0: + writePinLow(A0); + writePinLow(A1); + writePinLow(A2); + writePinHigh(B4); + break; + case 1: + writePinLow(A0); + writePinLow(A1); + writePinHigh(A2); + writePinHigh(B4); + break; + case 2: + writePinLow(A0); + writePinHigh(A1); + writePinLow(A2); + writePinHigh(B4); + break; + case 3: + writePinLow(A0); + writePinHigh(A1); + writePinHigh(A2); + writePinHigh(B4); + break; + case 4: + writePinHigh(A0); + writePinLow(A1); + writePinLow(A2); + writePinHigh(B4); + break; + case 5: + writePinHigh(A0); + writePinLow(A1); + writePinHigh(A2); + writePinHigh(B4); + break; + case 6: + writePinHigh(A0); + writePinHigh(A1); + writePinLow(A2); + writePinHigh(B4); + break; + case 7: + writePinHigh(A0); + writePinHigh(A1); + writePinHigh(A2); + writePinHigh(B4); + break; + case 8: + writePinHigh(A0); + writePinHigh(A1); + writePinHigh(A2); + writePinHigh(C7); + break; + case 9: + writePinLow(A0); + writePinLow(A1); + writePinLow(A2); + writePinHigh(C7); + break; + case 10: + writePinLow(A0); + writePinLow(A1); + writePinHigh(A2); + writePinHigh(C7); + break; + case 11: + writePinLow(A0); + writePinHigh(A1); + writePinLow(A2); + writePinHigh(C7); + break; + case 12: + writePinLow(A0); + writePinHigh(A1); + writePinHigh(A2); + writePinHigh(C7); + break; + case 13: + writePinHigh(A0); + writePinLow(A1); + writePinLow(A2); + writePinHigh(C7); + break; + case 14: + writePinHigh(A0); + writePinLow(A1); + writePinHigh(A2); + writePinHigh(C7); + break; + case 15: + writePinHigh(A0); + writePinHigh(A1); + writePinLow(A2); + writePinHigh(C7); + break; + case 16: + writePinLow(C2); + break; + case 17: + writePinLow(C3); + break; + case 18: + writePinLow(C5); + break; + } +} + +static void unselect_col(uint8_t col) { + switch (col) { + case 0: + writePinHigh(A0); + writePinHigh(A1); + writePinHigh(A2); + writePinLow(B4); + break; + case 1: + writePinHigh(A0); + writePinHigh(A1); + writePinLow(A2); + writePinLow(B4); + break; + case 2: + writePinHigh(A0); + writePinLow(A1); + writePinHigh(A2); + writePinLow(B4); + break; + case 3: + writePinHigh(A0); + writePinLow(A1); + writePinLow(A2); + writePinLow(B4); + break; + case 4: + writePinLow(A0); + writePinHigh(A1); + writePinHigh(A2); + writePinLow(B4); + break; + case 5: + writePinLow(A0); + writePinHigh(A1); + writePinLow(A2); + writePinLow(B4); + break; + case 6: + writePinLow(A0); + writePinLow(A1); + writePinHigh(A2); + writePinLow(B4); + break; + case 7: + writePinLow(A0); + writePinLow(A1); + writePinLow(A2); + writePinLow(B4); + break; + case 8: + writePinLow(A0); + writePinLow(A1); + writePinLow(A2); + writePinLow(C7); + break; + case 9: + writePinHigh(A0); + writePinHigh(A1); + writePinHigh(A2); + writePinLow(C7); + break; + case 10: + writePinHigh(A0); + writePinHigh(A1); + writePinLow(A2); + writePinLow(C7); + break; + case 11: + writePinHigh(A0); + writePinLow(A1); + writePinHigh(A2); + writePinLow(C7); + break; + case 12: + writePinHigh(A0); + writePinLow(A1); + writePinLow(A2); + writePinLow(C7); + break; + case 13: + writePinLow(A0); + writePinHigh(A1); + writePinHigh(A2); + writePinLow(C7); + break; + case 14: + writePinLow(A0); + writePinHigh(A1); + writePinLow(A2); + writePinLow(C7); + break; + case 15: + writePinLow(A0); + writePinLow(A1); + writePinHigh(A2); + writePinLow(C7); + break; + case 16: + writePinHigh(C2); + break; + case 17: + writePinHigh(C3); + break; + case 18: + writePinHigh(C5); + break; + } +} + +static void unselect_cols(void) { + //Native + writePinHigh(C2); + writePinHigh(C3); + writePinHigh(C5); + + //Demultiplexer + writePinLow(B4); + writePinLow(C7); + writePinHigh(A0); + writePinHigh(A1); + writePinHigh(A2); +} + +static void init_pins(void) { + unselect_cols(); + for (uint8_t x = 0; x < MATRIX_ROWS; x++) { + setPinInputHigh(row_pins[x]); + } + setPinOutput(A0); + setPinOutput(A1); + setPinOutput(A2); + setPinOutput(B4); + setPinOutput(C7); + setPinOutput(C2); + setPinOutput(C3); + setPinOutput(C5); +} + +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); + matrix_io_delay(); + + // 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; +} + +void matrix_init_custom(void) { + // initialize key pins + init_pins(); +} + +bool matrix_scan_custom(matrix_row_t current_matrix[]) { + bool changed = false; + + // 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); + } + + return changed; +} diff --git a/keyboards/mechlovin/olly/bb/readme.md b/keyboards/mechlovin/olly/bb/readme.md new file mode 100644 index 000000000000..0e41a3072f2d --- /dev/null +++ b/keyboards/mechlovin/olly/bb/readme.md @@ -0,0 +1,23 @@ +# Mechlovin Olly BB + +![jf](https://i.imgur.com/3QzHisYl.png) + +Olly BB PCB, compatible Duck Black Bird keyboard. + +* Keyboard Maintainer: [Mechlovin' Studio](https://mechlovin.studio/) +* Hardware Supported: Duck Black Bird Korean Kustom +* Hardware Availability: [Mechlovin' Studio](https://mechlovin.studio/) + +Make example for this keyboard (after setting up your build environment): + + make mechlovin/olly/bb:default + +Flashing example for this keyboard: + + make mechlovin/olly/bb: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). + +**Reset Key:** 2 ways to put the Olly JF into bootloader: +By keycode: Tap RESET keycode. +By bootloader: hold ESC key while plugging in \ No newline at end of file diff --git a/keyboards/mechlovin/olly/bb/rules.mk b/keyboards/mechlovin/olly/bb/rules.mk new file mode 100644 index 000000000000..95efd6f6b3ae --- /dev/null +++ b/keyboards/mechlovin/olly/bb/rules.mk @@ -0,0 +1,25 @@ +# MCU name +MCU = atmega32a + +# Processor frequency +F_CPU = 16000000 + +# Bootloader selection +BOOTLOADER = usbasploader + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +CUSTOM_MATRIX = lite + +SRC += matrix.c diff --git a/keyboards/mechlovin/olly/jf/config.h b/keyboards/mechlovin/olly/jf/config.h new file mode 100644 index 000000000000..66826aafa4e5 --- /dev/null +++ b/keyboards/mechlovin/olly/jf/config.h @@ -0,0 +1,74 @@ +/* +Copyright 2021 mechlovin + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4D4C +#define PRODUCT_ID 0xD180 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Mechlovin.Studio +#define PRODUCT Olly JF + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 19 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS { D5, D6, A5, A4, A3, A6} +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION ROW2COL + +#define BACKLIGHT_PIN D4 +#define BACKLIGHT_BREATHING + +#define LED_NUM_LOCK_PIN B1 +#define LED_CAPS_LOCK_PIN B0 +#define LED_SCROLL_LOCK_PIN B2 +#define LED_PIN_ON_STATE 1 + +#define RGB_DI_PIN B3 +#define RGBLED_NUM 27 +#define RGBLIGHT_LIMIT_VAL 255 +#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +#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 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 diff --git a/keyboards/mechlovin/olly/jf/info.json b/keyboards/mechlovin/olly/jf/info.json new file mode 100644 index 000000000000..ab57d31787d5 --- /dev/null +++ b/keyboards/mechlovin/olly/jf/info.json @@ -0,0 +1,119 @@ +{ + "keyboard_name": "Mechlovin Olly", + "url": "", + "maintainer": "Mechlovin' Studio", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"K00 (B0,B7)", "x":0, "y":0}, + {"label":"K01 (B0,C0)", "x":1.5, "y":0}, + {"label":"K02 (B0,C1)", "x":2.5, "y":0}, + {"label":"K03 (B0,C2)", "x":3.5, "y":0}, + {"label":"K04 (B0,C3)", "x":4.5, "y":0}, + {"label":"K05 (B0,C4)", "x":6, "y":0}, + {"label":"K06 (B0,C5)", "x":7, "y":0}, + {"label":"K07 (B0,C6)", "x":8, "y":0}, + {"label":"K08 (B0,C7)", "x":9, "y":0}, + {"label":"K09 (B0,D0)", "x":10.5, "y":0}, + {"label":"K0A (B0,D1)", "x":11.5, "y":0}, + {"label":"K0B (B0,D2)", "x":12.5, "y":0}, + {"label":"K0C (B0,D3)", "x":13.5, "y":0}, + {"label":"K0E (B0,D5)", "x":15.25, "y":0}, + {"label":"K0F (B0,D6)", "x":16.5, "y":0}, + {"label":"K0G (B0,D7)", "x":17.5, "y":0}, + {"label":"K0H (B0,E0)", "x":18.5, "y":0}, + {"label":"K0I (B0,E1)", "x":19.5, "y":0}, + {"label":"K10 (B1,B7)", "x":0, "y":1.5}, + {"label":"K11 (B1,C0)", "x":1, "y":1.5}, + {"label":"K12 (B1,C1)", "x":2, "y":1.5}, + {"label":"K13 (B1,C2)", "x":3, "y":1.5}, + {"label":"K14 (B1,C3)", "x":4, "y":1.5}, + {"label":"K15 (B1,C4)", "x":5, "y":1.5}, + {"label":"K16 (B1,C5)", "x":6, "y":1.5}, + {"label":"K17 (B1,C6)", "x":7, "y":1.5}, + {"label":"K18 (B1,C7)", "x":8, "y":1.5}, + {"label":"K19 (B1,D0)", "x":9, "y":1.5}, + {"label":"K1A (B1,D1)", "x":10, "y":1.5}, + {"label":"K1B (B1,D2)", "x":11, "y":1.5}, + {"label":"K1C (B1,D3)", "x":12, "y":1.5}, + {"label":"K1D (B1,D4)", "x":13, "y":1.5}, + {"label":"K0D (B0,D4)", "x":14, "y":1.5}, + {"label":"K1E (B1,D5)", "x":15.25, "y":1.5}, + {"label":"K1F (B1,D6)", "x":16.5, "y":1.5}, + {"label":"K1G (B1,D7)", "x":17.5, "y":1.5}, + {"label":"K1H (B1,E0)", "x":18.5, "y":1.5}, + {"label":"K1I (B1,E1)", "x":19.5, "y":1.5}, + {"label":"K20 (B2,B7)", "x":0, "y":2.5, "w":1.5}, + {"label":"K21 (B2,C0)", "x":1.5, "y":2.5}, + {"label":"K22 (B2,C1)", "x":2.5, "y":2.5}, + {"label":"K23 (B2,C2)", "x":3.5, "y":2.5}, + {"label":"K24 (B2,C3)", "x":4.5, "y":2.5}, + {"label":"K25 (B2,C4)", "x":5.5, "y":2.5}, + {"label":"K26 (B2,C5)", "x":6.5, "y":2.5}, + {"label":"K27 (B2,C6)", "x":7.5, "y":2.5}, + {"label":"K28 (B2,C7)", "x":8.5, "y":2.5}, + {"label":"K29 (B2,D0)", "x":9.5, "y":2.5}, + {"label":"K2A (B2,D1)", "x":10.5, "y":2.5}, + {"label":"K2B (B2,D2)", "x":11.5, "y":2.5}, + {"label":"K2C (B2,D3)", "x":12.5, "y":2.5}, + {"label":"K2D (B2,D4)", "x":13.5, "y":2.5, "w":1.5}, + {"label":"K2E (B2,D5)", "x":15.25, "y":2.5}, + {"label":"K2F (B2,D6)", "x":16.5, "y":2.5}, + {"label":"K2G (B2,D7)", "x":17.5, "y":2.5}, + {"label":"K2H (B2,E0)", "x":18.5, "y":2.5}, + {"label":"K2I (B2,E1)", "x":19.5, "y":2.5}, + {"label":"K30 (B3,B7)", "x":0, "y":3.5, "w":1.75}, + {"label":"K31 (B3,C0)", "x":1.75, "y":3.5}, + {"label":"K32 (B3,C1)", "x":2.75, "y":3.5}, + {"label":"K33 (B3,C2)", "x":3.75, "y":3.5}, + {"label":"K34 (B3,C3)", "x":4.75, "y":3.5}, + {"label":"K35 (B3,C4)", "x":5.75, "y":3.5}, + {"label":"K36 (B3,C5)", "x":6.75, "y":3.5}, + {"label":"K37 (B3,C6)", "x":7.75, "y":3.5}, + {"label":"K38 (B3,C7)", "x":8.75, "y":3.5}, + {"label":"K39 (B3,D0)", "x":9.75, "y":3.5}, + {"label":"K3A (B3,D1)", "x":10.75, "y":3.5}, + {"label":"K3B (B3,D2)", "x":11.75, "y":3.5}, + {"label":"K3C (B3,D3)", "x":12.75, "y":3.5}, + {"label":"K3D (B3,D4)", "x":13.75, "y":3.5, "w":1.25}, + {"label":"K3F (B3,D6)", "x":16.5, "y":3.5}, + {"label":"K3G (B3,D7)", "x":17.5, "y":3.5}, + {"label":"K3H (B3,E0)", "x":18.5, "y":3.5}, + {"label":"K3I (B3,E1)", "x":19.5, "y":3.5}, + {"label":"K40 (B4,B7)", "x":0, "y":4.5, "w":1.25}, + {"label":"K41 (B4,C0)", "x":1.25, "y":4.5}, + {"label":"K42 (B4,C1)", "x":2.25, "y":4.5}, + {"label":"K43 (B4,C2)", "x":3.25, "y":4.5}, + {"label":"K44 (B4,C3)", "x":4.25, "y":4.5}, + {"label":"K45 (B4,C4)", "x":5.25, "y":4.5}, + {"label":"K46 (B4,C5)", "x":6.25, "y":4.5}, + {"label":"K47 (B4,C6)", "x":7.25, "y":4.5}, + {"label":"K48 (B4,C7)", "x":8.25, "y":4.5}, + {"label":"K49 (B4,D0)", "x":9.25, "y":4.5}, + {"label":"K4A (B4,D1)", "x":10.25, "y":4.5}, + {"label":"K4B (B4,D2)", "x":11.25, "y":4.5}, + {"label":"K4C (B4,D3)", "x":12.25, "y":4.5, "w":1.75}, + {"label":"K4D (B4,D4)", "x":14, "y":4.5}, + {"label":"K4E (B4,D5)", "x":15.25, "y":4.75}, + {"label":"K4F (B4,D6)", "x":16.5, "y":4.5}, + {"label":"K4G (B4,D7)", "x":17.5, "y":4.5}, + {"label":"K4H (B4,E0)", "x":18.5, "y":4.5}, + {"label":"K4I (B4,E1)", "x":19.5, "y":4.5}, + {"label":"K50 (B5,B7)", "x":0, "y":5.5, "w":1.5}, + {"label":"K51 (B5,C0)", "x":1.5, "y":5.5}, + {"label":"K53 (B5,C2)", "x":2.5, "y":5.5, "w":1.5}, + {"label":"K56 (B5,C5)", "x":4, "y":5.5, "w":6.25}, + {"label":"K5A (B5,D1)", "x":10.25, "y":5.5, "w":1.25}, + {"label":"K5B (B5,D2)", "x":11.5, "y":5.5, "w":1.25}, + {"label":"K5C (B5,D3)", "x":12.75, "y":5.5, "w":1.25}, + {"label":"K5D (B5,D4)", "x":14.25, "y":5.75}, + {"label":"K5E (B5,D5)", "x":15.25, "y":5.75}, + {"label":"K5F (B5,D6)", "x":16.25, "y":5.75}, + {"label":"K5G (B5,D7)", "x":17.5, "y":5.5}, + {"label":"K5H (B5,E0)", "x":18.5, "y":5.5}, + {"label":"K5I (B5,E1)", "x":19.5, "y":5.5} + ] + } + } + ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/" +} diff --git a/keyboards/mechlovin/olly/jf/jf.c b/keyboards/mechlovin/olly/jf/jf.c new file mode 100644 index 000000000000..dc13e84ae267 --- /dev/null +++ b/keyboards/mechlovin/olly/jf/jf.c @@ -0,0 +1,39 @@ +/* Copyright 2021 mechlovin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "jf.h" + + +void led_init_ports(void) { + setPinOutput(C0); + setPinOutput(D0); + setPinOutput(D1); + setPinOutput(C1); + setPinOutput(C6); + setPinOutput(B0); + setPinOutput(B1); + setPinOutput(B2); +} + +layer_state_t layer_state_set_user(layer_state_t state) { + writePin(D1, layer_state_cmp(state, 1)); + writePin(D0, layer_state_cmp(state, 2)); + writePin(C1, layer_state_cmp(state, 3)); + writePin(C0, layer_state_cmp(state, 4)); + writePin(C6, layer_state_cmp(state, 5)); + + return state; +} diff --git a/keyboards/mechlovin/olly/jf/jf.h b/keyboards/mechlovin/olly/jf/jf.h new file mode 100644 index 000000000000..cbc5287e35e7 --- /dev/null +++ b/keyboards/mechlovin/olly/jf/jf.h @@ -0,0 +1,35 @@ +/* Copyright 2021 mechlovin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_all( \ + 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, K0D, K1E, K1F, K1G, K1H, K1I, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H, K2I, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3F, K3G, K3H, K3I, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H, K4I, \ + K50, K51, K53, K56, K5A, 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, K1D, K1E, K1F, K1G, K1H, K1I }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H, K2I }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO, K3F, K3G, K3H, K3I }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H, K4I }, \ + { K50, K51, KC_NO, K53, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F, K5G, K5H, K5I }, \ +} diff --git a/keyboards/mechlovin/olly/jf/keymaps/default/keymap.c b/keyboards/mechlovin/olly/jf/keymaps/default/keymap.c new file mode 100644 index 000000000000..e87d665a2bdc --- /dev/null +++ b/keyboards/mechlovin/olly/jf/keymaps/default/keymap.c @@ -0,0 +1,52 @@ +/* Copyright 2021 mechlovin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_INS, KC_HOME, KC_PGUP, KC_PSCR, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS, KC_NLCK, KC_PSLS, KC_PAST, KC_PAUS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_P7, KC_P8, KC_P9, KC_PMNS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_SPC, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT + ), + [1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + +}; \ No newline at end of file diff --git a/keyboards/mechlovin/olly/jf/keymaps/default/readme.md b/keyboards/mechlovin/olly/jf/keymaps/default/readme.md new file mode 100644 index 000000000000..0dad971bdca3 --- /dev/null +++ b/keyboards/mechlovin/olly/jf/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for Olly JF diff --git a/keyboards/mechlovin/olly/jf/keymaps/via/config.h b/keyboards/mechlovin/olly/jf/keymaps/via/config.h new file mode 100644 index 000000000000..f330025a008f --- /dev/null +++ b/keyboards/mechlovin/olly/jf/keymaps/via/config.h @@ -0,0 +1,22 @@ +/* +Copyright 2021 mechlovin + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 1607 +#define DYNAMIC_KEYMAP_LAYER_COUNT 6 + diff --git a/keyboards/mechlovin/olly/jf/keymaps/via/keymap.c b/keyboards/mechlovin/olly/jf/keymaps/via/keymap.c new file mode 100644 index 000000000000..c90eeb18307e --- /dev/null +++ b/keyboards/mechlovin/olly/jf/keymaps/via/keymap.c @@ -0,0 +1,68 @@ +/* Copyright 2021 mechlovin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_INS, KC_HOME, KC_PGUP, KC_PSCR, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS, KC_NLCK, KC_PSLS, KC_PAST, KC_PAUS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_P7, KC_P8, KC_P9, KC_PMNS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_SPC, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT + ), + [1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [4] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [5] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + +}; \ No newline at end of file diff --git a/keyboards/mechlovin/olly/jf/keymaps/via/readme.md b/keyboards/mechlovin/olly/jf/keymaps/via/readme.md new file mode 100644 index 000000000000..0453b5aef0d3 --- /dev/null +++ b/keyboards/mechlovin/olly/jf/keymaps/via/readme.md @@ -0,0 +1 @@ +# The VIA keymap for Olly JF \ No newline at end of file diff --git a/keyboards/mechlovin/olly/jf/keymaps/via/rules.mk b/keyboards/mechlovin/olly/jf/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/mechlovin/olly/jf/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/mechlovin/olly/jf/matrix.c b/keyboards/mechlovin/olly/jf/matrix.c new file mode 100644 index 000000000000..c01879c9a54d --- /dev/null +++ b/keyboards/mechlovin/olly/jf/matrix.c @@ -0,0 +1,462 @@ +/* +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 . +*/ + +#include +#include +#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 == COL2ROW) + +static void select_row(uint8_t row) { + setPinOutput(row_pins[row]); + writePinLow(row_pins[row]); +} + +static void unselect_row(uint8_t row) { setPinInputHigh(row_pins[row]); } + +static void unselect_rows(void) { + for (uint8_t x = 0; x < MATRIX_ROWS; x++) { + setPinInputHigh(row_pins[x]); + } +} + +static void init_pins(void) { + unselect_rows(); + for (uint8_t x = 0; x < MATRIX_COLS; x++) { + setPinInputHigh(col_pins[x]); + } +} + +static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) { + // Store last value of row prior to reading + matrix_row_t last_row_value = current_matrix[current_row]; + + // Clear data in matrix row + current_matrix[current_row] = 0; + + // Select row and wait for row selecton to stabilize + select_row(current_row); + wait_us(30); + + // For each col... + for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) { + + // Select the col pin to read (active low) + uint8_t pin_state = readPin(col_pins[col_index]); + + // Populate the matrix row with the state of the col pin + current_matrix[current_row] |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index); + } + + // Unselect row + unselect_row(current_row); + + return (last_row_value != current_matrix[current_row]); +} + +#elif (DIODE_DIRECTION == ROW2COL) + +/* Cols 0 - 16 + * These columns use two 74HC138 3 to 8 bit demultiplexer. B4, C7 is the enable pin, must be set high (1) to use it. + * + * col / pin: PA0 PA1 PA2 PB4 PC7 PC2 PC3 PC5 + * 0: 0 ── 0 ── 0 1 ── 0 0 0 0 + * ──────────────────────────────────────────── + * 1: 0 ── 0 ── 1 1 ── 0 0 0 0 + * ──────────────────────────────────────────── + * 2: 0 ── 1 ── 0 1 ── 0 0 0 0 + * ──────────────────────────────────────────── + * 3: 0 ── 1 ── 1 1 ── 0 0 0 0 + * ──────────────────────────────────────────── + * 4: 1 ── 0 ── 0 1 ── 0 0 0 0 + * ──────────────────────────────────────────── + * 5: 1 ── 0 ── 1 1 ── 0 0 0 0 + * ──────────────────────────────────────────── + * 6: 1 ── 1 ── 0 1 ── 0 0 0 0 + * ──────────────────────────────────────────── + * 7: 1 ── 1 ── 1 1 ── 0 0 0 0 + * ──────────────────────────────────────────── + * 8: 1 ── 1 ── 1 0 ── 1 0 0 0 + * ──────────────────────────────────────────── + * 9: 0 ── 0 ── 0 0 ── 1 0 0 0 + * ──────────────────────────────────────────── + *10: 0 ── 0 ── 1 0 ── 1 0 0 0 + * ──────────────────────────────────────────── + *11: 0 ── 1 ── 0 0 ── 1 0 0 0 + * ──────────────────────────────────────────── + *12: 0 ── 1 ── 1 0 ── 1 0 0 0 + * ──────────────────────────────────────────── + *13: 1 ── 0 ── 0 0 ── 1 0 0 0 + * ──────────────────────────────────────────── + *14: 1 ── 0 ── 1 0 ── 1 0 0 0 + * ──────────────────────────────────────────── + *15: 1 ── 1 ── 0 0 ── 1 0 0 0 + * ──────────────────────────────────────────── + *16: 0 ── 0 ── 0 0 ── 0 1 0 0 + * ──────────────────────────────────────────── + *17: 0 ── 0 ── 0 0 ── 0 0 1 0 + * ──────────────────────────────────────────── + *18: 0 ── 0 ── 0 0 ── 0 0 0 1 + * + */ +static void select_col(uint8_t col) { + switch (col) { + case 0: + writePinLow(A0); + writePinLow(A1); + writePinLow(A2); + writePinHigh(B4); + break; + case 1: + writePinLow(A0); + writePinLow(A1); + writePinHigh(A2); + writePinHigh(B4); + break; + case 2: + writePinLow(A0); + writePinHigh(A1); + writePinLow(A2); + writePinHigh(B4); + break; + case 3: + writePinLow(A0); + writePinHigh(A1); + writePinHigh(A2); + writePinHigh(B4); + break; + case 4: + writePinHigh(A0); + writePinLow(A1); + writePinLow(A2); + writePinHigh(B4); + break; + case 5: + writePinHigh(A0); + writePinLow(A1); + writePinHigh(A2); + writePinHigh(B4); + break; + case 6: + writePinHigh(A0); + writePinHigh(A1); + writePinLow(A2); + writePinHigh(B4); + break; + case 7: + writePinHigh(A0); + writePinHigh(A1); + writePinHigh(A2); + writePinHigh(B4); + break; + case 8: + writePinHigh(A0); + writePinHigh(A1); + writePinHigh(A2); + writePinHigh(C7); + break; + case 9: + writePinLow(A0); + writePinLow(A1); + writePinLow(A2); + writePinHigh(C7); + break; + case 10: + writePinLow(A0); + writePinLow(A1); + writePinHigh(A2); + writePinHigh(C7); + break; + case 11: + writePinLow(A0); + writePinHigh(A1); + writePinLow(A2); + writePinHigh(C7); + break; + case 12: + writePinLow(A0); + writePinHigh(A1); + writePinHigh(A2); + writePinHigh(C7); + break; + case 13: + writePinHigh(A0); + writePinLow(A1); + writePinLow(A2); + writePinHigh(C7); + break; + case 14: + writePinHigh(A0); + writePinLow(A1); + writePinHigh(A2); + writePinHigh(C7); + break; + case 15: + writePinHigh(A0); + writePinHigh(A1); + writePinLow(A2); + writePinHigh(C7); + break; + case 16: + writePinLow(C2); + break; + case 17: + writePinLow(C3); + break; + case 18: + writePinLow(C5); + break; + } +} + +static void unselect_col(uint8_t col) { + switch (col) { + case 0: + writePinHigh(A0); + writePinHigh(A1); + writePinHigh(A2); + writePinLow(B4); + break; + case 1: + writePinHigh(A0); + writePinHigh(A1); + writePinLow(A2); + writePinLow(B4); + break; + case 2: + writePinHigh(A0); + writePinLow(A1); + writePinHigh(A2); + writePinLow(B4); + break; + case 3: + writePinHigh(A0); + writePinLow(A1); + writePinLow(A2); + writePinLow(B4); + break; + case 4: + writePinLow(A0); + writePinHigh(A1); + writePinHigh(A2); + writePinLow(B4); + break; + case 5: + writePinLow(A0); + writePinHigh(A1); + writePinLow(A2); + writePinLow(B4); + break; + case 6: + writePinLow(A0); + writePinLow(A1); + writePinHigh(A2); + writePinLow(B4); + break; + case 7: + writePinLow(A0); + writePinLow(A1); + writePinLow(A2); + writePinLow(B4); + break; + case 8: + writePinLow(A0); + writePinLow(A1); + writePinLow(A2); + writePinLow(C7); + break; + case 9: + writePinHigh(A0); + writePinHigh(A1); + writePinHigh(A2); + writePinLow(C7); + break; + case 10: + writePinHigh(A0); + writePinHigh(A1); + writePinLow(A2); + writePinLow(C7); + break; + case 11: + writePinHigh(A0); + writePinLow(A1); + writePinHigh(A2); + writePinLow(C7); + break; + case 12: + writePinHigh(A0); + writePinLow(A1); + writePinLow(A2); + writePinLow(C7); + break; + case 13: + writePinLow(A0); + writePinHigh(A1); + writePinHigh(A2); + writePinLow(C7); + break; + case 14: + writePinLow(A0); + writePinHigh(A1); + writePinLow(A2); + writePinLow(C7); + break; + case 15: + writePinLow(A0); + writePinLow(A1); + writePinHigh(A2); + writePinLow(C7); + break; + case 16: + writePinHigh(C2); + break; + case 17: + writePinHigh(C3); + break; + case 18: + writePinHigh(C5); + break; + } +} + +static void unselect_cols(void) { + //Native + writePinHigh(C2); + writePinHigh(C3); + writePinHigh(C5); + + //Demultiplexer + writePinLow(B4); + writePinLow(C7); + writePinHigh(A0); + writePinHigh(A1); + writePinHigh(A2); +} + +static void init_pins(void) { + unselect_cols(); + for (uint8_t x = 0; x < MATRIX_ROWS; x++) { + setPinInputHigh(row_pins[x]); + } + setPinOutput(A0); + setPinOutput(A1); + setPinOutput(A2); + setPinOutput(B4); + setPinOutput(C7); + setPinOutput(C2); + setPinOutput(C3); + setPinOutput(C5); +} + +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 == COL2ROW) + // Set row, read cols + for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) { + changed |= read_cols_on_row(current_matrix, current_row); + } +#elif (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/olly/jf/readme.md b/keyboards/mechlovin/olly/jf/readme.md new file mode 100644 index 000000000000..b45498f849c8 --- /dev/null +++ b/keyboards/mechlovin/olly/jf/readme.md @@ -0,0 +1,23 @@ +# Mechlovin Olly JF + +![jf](https://i.imgur.com/IrfTGE7l.png) + +Olly JF PCB, compatible Duck Jetfire keyboard. + +* Keyboard Maintainer: [Mechlovin' Studio](https://mechlovin.studio/) +* Hardware Supported: Jetfire Korean Kustom +* Hardware Availability: [Mechlovin' Studio](https://mechlovin.studio/) + +Make example for this keyboard (after setting up your build environment): + + make mechlovin/olly/jf:default + +Flashing example for this keyboard: + + make mechlovin/olly/jf: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). + +**Reset Key:** 2 ways to put the Olly JF into bootloader: +By keycode: Tap RESET keycode. +By bootloader: hold ESC key while plugging in \ No newline at end of file diff --git a/keyboards/mechlovin/olly/jf/rules.mk b/keyboards/mechlovin/olly/jf/rules.mk new file mode 100644 index 000000000000..bd64782de0cd --- /dev/null +++ b/keyboards/mechlovin/olly/jf/rules.mk @@ -0,0 +1,25 @@ +# MCU name +MCU = atmega32a + +# Processor frequency +F_CPU = 16000000 + +# Bootloader selection +BOOTLOADER = USBasp + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +CUSTOM_MATRIX = lite + +SRC += matrix.c \ No newline at end of file diff --git a/keyboards/mechlovin/pisces/config.h b/keyboards/mechlovin/pisces/config.h index 1debf021c808..48a94eb26250 100644 --- a/keyboards/mechlovin/pisces/config.h +++ b/keyboards/mechlovin/pisces/config.h @@ -72,6 +72,3 @@ along with this program. If not, see . // #define RGBLIGHT_EFFECT_RGB_TEST // #define RGBLIGHT_EFFECT_ALTERNATING #endif - -// generated by KBFirmware JSON to QMK Parser -// https://noroadsleft.github.io/kbf_qmk_converter/ diff --git a/keyboards/mechlovin/pisces/info.json b/keyboards/mechlovin/pisces/info.json index bb6e4b8c3269..57da5b4a0e41 100644 --- a/keyboards/mechlovin/pisces/info.json +++ b/keyboards/mechlovin/pisces/info.json @@ -1,12 +1,86 @@ { "keyboard_name": "pisces", "url": "", - "maintainer": "qmk", - "width": 16, - "height": 5, + "maintainer": "mechlovin", "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"K00 (B0,E6)", "x":0, "y":0}, + {"label":"K01 (B0,B1)", "x":1, "y":0}, + {"label":"K02 (B0,B3)", "x":2, "y":0}, + {"label":"K03 (B0,D0)", "x":3, "y":0}, + {"label":"K04 (B0,D1)", "x":4, "y":0}, + {"label":"K05 (B0,D2)", "x":5, "y":0}, + {"label":"K06 (B0,D3)", "x":6, "y":0}, + {"label":"K07 (B0,D5)", "x":7, "y":0}, + {"label":"K08 (B0,F4)", "x":8, "y":0}, + {"label":"K09 (B0,F1)", "x":9, "y":0}, + {"label":"K0A (B0,D4)", "x":10, "y":0}, + {"label":"K0B (B0,D6)", "x":11, "y":0}, + {"label":"K0C (B0,D7)", "x":12, "y":0}, + {"label":"K0D (B0,B4)", "x":13, "y":0}, + {"label":"K0E (B0,B5)", "x":14, "y":0}, + + {"label":"K10 (F0,E6)", "x":0, "y":1, "w":1.5}, + {"label":"K11 (F0,B1)", "x":1.5, "y":1}, + {"label":"K12 (F0,B3)", "x":2.5, "y":1}, + {"label":"K13 (F0,D0)", "x":3.5, "y":1}, + {"label":"K14 (F0,D1)", "x":4.5, "y":1}, + {"label":"K15 (F0,D2)", "x":5.5, "y":1}, + {"label":"K16 (F0,D3)", "x":6.5, "y":1}, + {"label":"K17 (F0,D5)", "x":7.5, "y":1}, + {"label":"K18 (F0,F4)", "x":8.5, "y":1}, + {"label":"K19 (F0,F1)", "x":9.5, "y":1}, + {"label":"K1A (F0,D4)", "x":10.5, "y":1}, + {"label":"K1B (F0,D6)", "x":11.5, "y":1}, + {"label":"K1C (F0,D7)", "x":12.5, "y":1}, + {"label":"K1D (F0,B4)", "x":13.5, "y":1, "w":1.5}, + {"label":"K1E (F0,B5)", "x":15, "y":1}, + + {"label":"K20 (F5,E6)", "x":0, "y":2, "w":1.75}, + {"label":"K21 (F5,B1)", "x":1.75, "y":2}, + {"label":"K22 (F5,B3)", "x":2.75, "y":2}, + {"label":"K23 (F5,D0)", "x":3.75, "y":2}, + {"label":"K24 (F5,D1)", "x":4.75, "y":2}, + {"label":"K25 (F5,D2)", "x":5.75, "y":2}, + {"label":"K26 (F5,D3)", "x":6.75, "y":2}, + {"label":"K27 (F5,D5)", "x":7.75, "y":2}, + {"label":"K28 (F5,F4)", "x":8.75, "y":2}, + {"label":"K29 (F5,F1)", "x":9.75, "y":2}, + {"label":"K2A (F5,D4)", "x":10.75, "y":2}, + {"label":"K2B (F5,D6)", "x":11.75, "y":2}, + {"label":"K2C (F5,D7)", "x":12.75, "y":2}, + {"label":"K2D (F5,B4)", "x":13.75, "y":2, "w":1.25}, + {"label":"K2E (F5,B5)", "x":15, "y":2}, + + {"label":"K30 (F6,E6)", "x":0, "y":3, "w":1.25}, + {"label":"K31 (F6,B1)", "x":1.25, "y":3}, + {"label":"K32 (F6,B3)", "x":2.25, "y":3}, + {"label":"K33 (F6,D0)", "x":3.25, "y":3}, + {"label":"K34 (F6,D1)", "x":4.25, "y":3}, + {"label":"K35 (F6,D2)", "x":5.25, "y":3}, + {"label":"K36 (F6,D3)", "x":6.25, "y":3}, + {"label":"K37 (F6,D5)", "x":7.25, "y":3}, + {"label":"K38 (F6,F4)", "x":8.25, "y":3}, + {"label":"K39 (F6,F1)", "x":9.25, "y":3}, + {"label":"K3A (F6,D4)", "x":10.25, "y":3}, + {"label":"K3B (F6,D6)", "x":11.25, "y":3}, + {"label":"K3C (F6,D7)", "x":12.25, "y":3, "w":1.75}, + {"label":"K3D (F6,B4)", "x":14, "y":3}, + {"label":"K3E (F6,B5)", "x":15, "y":3}, + + {"label":"K40 (F7,E6)", "x":0, "y":4, "w":1.25}, + {"label":"K41 (F7,B1)", "x":1.25, "y":4, "w":1.25}, + {"label":"K42 (F7,B3)", "x":2.5, "y":4, "w":1.25}, + {"label":"K46 (F7,D3)", "x":3.75, "y":4, "w":6.25}, + {"label":"K4A (F7,D4)", "x":10, "y":4, "w":1.25}, + {"label":"K4B (F7,D6)", "x":11.25, "y":4, "w":1.25}, + {"label":"K4C (F7,D7)", "x":13, "y":4}, + {"label":"K4D (F7,B4)", "x":14, "y":4}, + {"label":"K4E (F7,B5)", "x":15, "y":4} + ] + }, "LAYOUT": { - "key_count": 65, "layout": [ {"label":"K00 (B0,E6)", "x":0, "y":0}, {"label":"K01 (B0,B1)", "x":1, "y":0}, @@ -22,6 +96,7 @@ {"label":"K0B (B0,D6)", "x":11, "y":0}, {"label":"K0C (B0,D7)", "x":12, "y":0}, {"label":"K0D (B0,B4)", "x":13, "y":0, "w":2}, + {"label":"K10 (F0,E6)", "x":0, "y":1, "w":1.5}, {"label":"K11 (F0,B1)", "x":1.5, "y":1}, {"label":"K12 (F0,B3)", "x":2.5, "y":1}, @@ -37,6 +112,7 @@ {"label":"K1C (F0,D7)", "x":12.5, "y":1}, {"label":"K1D (F0,B4)", "x":13.5, "y":1, "w":1.5}, {"label":"K1E (F0,B5)", "x":15, "y":1}, + {"label":"K20 (F5,E6)", "x":0, "y":2, "w":1.75}, {"label":"K21 (F5,B1)", "x":1.75, "y":2}, {"label":"K22 (F5,B3)", "x":2.75, "y":2}, @@ -51,6 +127,7 @@ {"label":"K2B (F5,D6)", "x":11.75, "y":2}, {"label":"K2D (F5,B4)", "x":12.75, "y":2, "w":2.25}, {"label":"K2E (F5,B5)", "x":15, "y":2}, + {"label":"K30 (F6,E6)", "x":0, "y":3, "w":2.25}, {"label":"K32 (F6,B3)", "x":2.25, "y":3}, {"label":"K33 (F6,D0)", "x":3.25, "y":3}, @@ -65,6 +142,7 @@ {"label":"K3C (F6,D7)", "x":12.25, "y":3, "w":1.75}, {"label":"K3D (F6,B4)", "x":14, "y":3}, {"label":"K3E (F6,B5)", "x":15, "y":3}, + {"label":"K40 (F7,E6)", "x":0, "y":4, "w":1.25}, {"label":"K41 (F7,B1)", "x":1.25, "y":4, "w":1.25}, {"label":"K42 (F7,B3)", "x":2.5, "y":4, "w":1.25}, @@ -77,5 +155,4 @@ ] } } - ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/" } diff --git a/keyboards/mechlovin/pisces/keymaps/default/keymap.c b/keyboards/mechlovin/pisces/keymaps/default/keymap.c index d4890a11ada2..c717f92bea84 100644 --- a/keyboards/mechlovin/pisces/keymaps/default/keymap.c +++ b/keyboards/mechlovin/pisces/keymaps/default/keymap.c @@ -15,20 +15,22 @@ */ #include QMK_KEYBOARD_H +#define CTL_CAP LCTL_T(KC_CAPS) + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, - LCTL_T(KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + [0] = 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_BSPC, XXXXXXX, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + CTL_CAP, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RGHT ), - [1] = LAYOUT( - KC_TRNS, BL_STEP, RGB_TOG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + [1] = LAYOUT_all( + _______, BL_STEP, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_SPC, _______, _______, _______, _______, _______ ), -}; \ No newline at end of file +}; diff --git a/keyboards/mechlovin/pisces/keymaps/via/keymap.c b/keyboards/mechlovin/pisces/keymaps/via/keymap.c index 4ea597a9f109..874d9ccc42e5 100644 --- a/keyboards/mechlovin/pisces/keymaps/via/keymap.c +++ b/keyboards/mechlovin/pisces/keymaps/via/keymap.c @@ -15,34 +15,36 @@ */ #include QMK_KEYBOARD_H +#define CTL_CAP LCTL_T(KC_CAPS) + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, - LCTL_T(KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + [0] = 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_BSPC, XXXXXXX, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + CTL_CAP, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RGHT ), - [1] = LAYOUT( - KC_TRNS, BL_STEP, RGB_TOG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + [1] = LAYOUT_all( + _______, BL_STEP, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_SPC, _______, _______, _______, _______, _______ ), - [2] = LAYOUT( - KC_TRNS, BL_STEP, RGB_TOG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + [2] = LAYOUT_all( + _______, BL_STEP, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_SPC, _______, _______, _______, _______, _______ ), - [3] = LAYOUT( - KC_TRNS, BL_STEP, RGB_TOG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + [3] = LAYOUT_all( + _______, BL_STEP, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_SPC, _______, _______, _______, _______, _______ ), -}; \ No newline at end of file +}; diff --git a/keyboards/mechlovin/pisces/pisces.h b/keyboards/mechlovin/pisces/pisces.h index 743b787b7cc9..7ff54ecddef8 100644 --- a/keyboards/mechlovin/pisces/pisces.h +++ b/keyboards/mechlovin/pisces/pisces.h @@ -18,6 +18,40 @@ #include "quantum.h" +#define XXX KC_NO + +/* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───────┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │0E │ │0D │ 2u Backspace + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┐ └─┬─────┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │1E │ │ │ + * 2.25u ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ ┌──┴┐2D │ ISO Enter + * LShift │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2D │2E │ │2C │ │ + * ┌────────┐ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ └───┴────┘ + * │30 │ │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │3E │ + * └────────┘ ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │40 │41 │42 │46 │4A │4B │││4C │4D │4E │ + * └────┴────┴────┴────────────────────────┴────┴────┘│└───┴───┴───┘ + * ──────┴───── + * ┌──────────┐ + * │3C │ 2.75u RShift + * └──────────┘ + */ + +#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, 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, 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, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D, K4E }, \ +} + #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, K1E, \ @@ -25,12 +59,9 @@ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ K40, K41, K42, K46, K4A, K4B, K4C, K4D, 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, 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, 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, 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, XXX, XXX, K4A, K4B, K4C, K4D, K4E }, \ } - -// generated by KBFirmware JSON to QMK Parser -// https://noroadsleft.github.io/kbf_qmk_converter/ \ No newline at end of file diff --git a/keyboards/mechlovin/pisces/rules.mk b/keyboards/mechlovin/pisces/rules.mk index 25f6c2b8b72a..916b7998845a 100644 --- a/keyboards/mechlovin/pisces/rules.mk +++ b/keyboards/mechlovin/pisces/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/mechlovin/serratus/config.h b/keyboards/mechlovin/serratus/config.h new file mode 100644 index 000000000000..055557b3a4e5 --- /dev/null +++ b/keyboards/mechlovin/serratus/config.h @@ -0,0 +1,89 @@ +/* +Copyright 2021 mechlovin + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4D4C // ML +#define PRODUCT_ID 0x0870 +#define DEVICE_VER 0x0001 +#define PRODUCT Serratus Rev.1 +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 17 + + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS { D5, D2, D4, D3, D0, D1 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION ROW2COL + +#define USB_POLLING_INTERVAL_MS 1 + + +#define LED_NUM_LOCK_PIN D7 +#define LED_CAPS_LOCK_PIN D6 +#define LED_SCROLL_LOCK_PIN B4 +#define LED_PIN_ON_STATE 1 + +#define BACKLIGHT_PIN B6 +#define BACKLIGHT_LEVELS 3 +#define BACKLIGHT_BREATHING + +#ifdef RGBLIGHT_ENABLE +#define RGB_DI_PIN E2 +#define RGBLED_NUM 24 +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 +#define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +#define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 diff --git a/keyboards/mechlovin/serratus/info.json b/keyboards/mechlovin/serratus/info.json new file mode 100644 index 000000000000..209ee4a3307e --- /dev/null +++ b/keyboards/mechlovin/serratus/info.json @@ -0,0 +1,103 @@ +{ + "keyboard_name": "Serratus", + "url": "", + "maintainer": "Mechlovin' Studio", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"K00 (B0,B6)", "x":0, "y":0}, + {"label":"K01 (B0,F4)", "x":2, "y":0}, + {"label":"K02 (B0,C0)", "x":3, "y":0}, + {"label":"K03 (B0,C1)", "x":4, "y":0}, + {"label":"K04 (B0,C2)", "x":5, "y":0}, + {"label":"K05 (B0,C3)", "x":6.5, "y":0}, + {"label":"K06 (B0,C4)", "x":7.5, "y":0}, + {"label":"K07 (B0,C5)", "x":8.5, "y":0}, + {"label":"K08 (B0,C6)", "x":9.5, "y":0}, + {"label":"K09 (B0,C7)", "x":11, "y":0}, + {"label":"K0A (B0,D0)", "x":12, "y":0}, + {"label":"K0B (B0,D1)", "x":13, "y":0}, + {"label":"K0C (B0,D2)", "x":14, "y":0}, + {"label":"K0E (B0,D4)", "x":15.25, "y":0}, + {"label":"K0F (B0,D5)", "x":16.25, "y":0}, + {"label":"K0G (B0,D6)", "x":17.25, "y":0}, + {"label":"K10 (B1,B6)", "x":0, "y":1.25}, + {"label":"K11 (B1,F4)", "x":1, "y":1.25}, + {"label":"K12 (B1,C0)", "x":2, "y":1.25}, + {"label":"K13 (B1,C1)", "x":3, "y":1.25}, + {"label":"K14 (B1,C2)", "x":4, "y":1.25}, + {"label":"K15 (B1,C3)", "x":5, "y":1.25}, + {"label":"K16 (B1,C4)", "x":6, "y":1.25}, + {"label":"K17 (B1,C5)", "x":7, "y":1.25}, + {"label":"K18 (B1,C6)", "x":8, "y":1.25}, + {"label":"K19 (B1,C7)", "x":9, "y":1.25}, + {"label":"K1A (B1,D0)", "x":10, "y":1.25}, + {"label":"K1B (B1,D1)", "x":11, "y":1.25}, + {"label":"K1C (B1,D2)", "x":12, "y":1.25}, + {"label":"K1D (B1,D3)", "x":13, "y":1.25}, + {"label":"K0D (B0,D3)", "x":14, "y":1.25}, + {"label":"K1E (B1,D4)", "x":15.25, "y":1.25}, + {"label":"K1F (B1,D5)", "x":16.25, "y":1.25}, + {"label":"K1G (B1,D6)", "x":17.25, "y":1.25}, + {"label":"K20 (B2,B6)", "x":0, "y":2.25, "w":1.5}, + {"label":"K21 (B2,F4)", "x":1.5, "y":2.25}, + {"label":"K22 (B2,C0)", "x":2.5, "y":2.25}, + {"label":"K23 (B2,C1)", "x":3.5, "y":2.25}, + {"label":"K24 (B2,C2)", "x":4.5, "y":2.25}, + {"label":"K25 (B2,C3)", "x":5.5, "y":2.25}, + {"label":"K26 (B2,C4)", "x":6.5, "y":2.25}, + {"label":"K27 (B2,C5)", "x":7.5, "y":2.25}, + {"label":"K28 (B2,C6)", "x":8.5, "y":2.25}, + {"label":"K29 (B2,C7)", "x":9.5, "y":2.25}, + {"label":"K2A (B2,D0)", "x":10.5, "y":2.25}, + {"label":"K2B (B2,D1)", "x":11.5, "y":2.25}, + {"label":"K2C (B2,D2)", "x":12.5, "y":2.25}, + {"label":"K2D (B2,D3)", "x":13.5, "y":2.25, "w":1.5}, + {"label":"K2E (B2,D4)", "x":15.25, "y":2.25}, + {"label":"K2F (B2,D5)", "x":16.25, "y":2.25}, + {"label":"K2G (B2,D6)", "x":17.25, "y":2.25}, + {"label":"K30 (B3,B6)", "x":0, "y":3.25, "w":1.75}, + {"label":"K31 (B3,F4)", "x":1.75, "y":3.25}, + {"label":"K32 (B3,C0)", "x":2.75, "y":3.25}, + {"label":"K33 (B3,C1)", "x":3.75, "y":3.25}, + {"label":"K34 (B3,C2)", "x":4.75, "y":3.25}, + {"label":"K35 (B3,C3)", "x":5.75, "y":3.25}, + {"label":"K36 (B3,C4)", "x":6.75, "y":3.25}, + {"label":"K37 (B3,C5)", "x":7.75, "y":3.25}, + {"label":"K38 (B3,C6)", "x":8.75, "y":3.25}, + {"label":"K39 (B3,C7)", "x":9.75, "y":3.25}, + {"label":"K3A (B3,D0)", "x":10.75, "y":3.25}, + {"label":"K3B (B3,D1)", "x":11.75, "y":3.25}, + {"label":"K3C (B3,D2)", "x":12.75, "y":3.25}, + {"label":"K3D (B3,D3)", "x":13.75, "y":3.25, "w":1.25}, + {"label":"K40 (B4,B6)", "x":0, "y":4.25, "w":1.25}, + {"label":"K41 (B4,F4)", "x":1.25, "y":4.25}, + {"label":"K42 (B4,C0)", "x":2.25, "y":4.25}, + {"label":"K43 (B4,C1)", "x":3.25, "y":4.25}, + {"label":"K44 (B4,C2)", "x":4.25, "y":4.25}, + {"label":"K45 (B4,C3)", "x":5.25, "y":4.25}, + {"label":"K46 (B4,C4)", "x":6.25, "y":4.25}, + {"label":"K47 (B4,C5)", "x":7.25, "y":4.25}, + {"label":"K48 (B4,C6)", "x":8.25, "y":4.25}, + {"label":"K49 (B4,C7)", "x":9.25, "y":4.25}, + {"label":"K4A (B4,D0)", "x":10.25, "y":4.25}, + {"label":"K4B (B4,D1)", "x":11.25, "y":4.25}, + {"label":"K4C (B4,D2)", "x":12.25, "y":4.25, "w":1.75}, + {"label":"K4D (B4,D3)", "x":14, "y":4.25}, + {"label":"K4F (B4,D5)", "x":16.25, "y":4.25}, + {"label":"K50 (B5,B6)", "x":0, "y":5.25, "w":1.25}, + {"label":"K51 (B5,F4)", "x":1.25, "y":5.25, "w":1.25}, + {"label":"K52 (B5,C0)", "x":2.5, "y":5.25, "w":1.25}, + {"label":"K56 (B5,C4)", "x":3.75, "y":5.25, "w":6.25}, + {"label":"K5A (B5,D0)", "x":10, "y":5.25, "w":1.25}, + {"label":"K5B (B5,D1)", "x":11.25, "y":5.25, "w":1.25}, + {"label":"K5C (B5,D2)", "x":12.5, "y":5.25, "w":1.25}, + {"label":"K5D (B5,D3)", "x":13.75, "y":5.25, "w":1.25}, + {"label":"K5E (B5,D4)", "x":15.25, "y":5.25}, + {"label":"K5F (B5,D5)", "x":16.25, "y":5.25}, + {"label":"K5G (B5,D6)", "x":17.25, "y":5.25} + ] + } + } + ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/" +} diff --git a/keyboards/mechlovin/serratus/keymaps/default/keymap.c b/keyboards/mechlovin/serratus/keymaps/default/keymap.c new file mode 100644 index 000000000000..a98abef90c8b --- /dev/null +++ b/keyboards/mechlovin/serratus/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +/* 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 . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_HASH, KC_ENT, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_LSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI,MO(1), KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), +}; diff --git a/keyboards/mechlovin/serratus/keymaps/default/readme.md b/keyboards/mechlovin/serratus/keymaps/default/readme.md new file mode 100644 index 000000000000..2061661718dc --- /dev/null +++ b/keyboards/mechlovin/serratus/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for serratus diff --git a/keyboards/mechlovin/serratus/keymaps/via/keymap.c b/keyboards/mechlovin/serratus/keymaps/via/keymap.c new file mode 100644 index 000000000000..22250ad0e633 --- /dev/null +++ b/keyboards/mechlovin/serratus/keymaps/via/keymap.c @@ -0,0 +1,52 @@ +/* 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 . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_HASH, KC_ENT, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_LSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI, MO(1), KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + +}; diff --git a/keyboards/mechlovin/serratus/keymaps/via/readme.md b/keyboards/mechlovin/serratus/keymaps/via/readme.md new file mode 100644 index 000000000000..3481201f9c65 --- /dev/null +++ b/keyboards/mechlovin/serratus/keymaps/via/readme.md @@ -0,0 +1 @@ +# The via keymap for serratus diff --git a/keyboards/mechlovin/serratus/keymaps/via/rules.mk b/keyboards/mechlovin/serratus/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/mechlovin/serratus/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/mechlovin/serratus/matrix.c b/keyboards/mechlovin/serratus/matrix.c new file mode 100644 index 000000000000..b1b0d20654c8 --- /dev/null +++ b/keyboards/mechlovin/serratus/matrix.c @@ -0,0 +1,388 @@ +/* +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 . +*/ + +#include +#include +#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 - 16 + * 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: PB5 PB7 PF0 PB0 PF1 PE6 + * 0: 0 ── 0 ── 0 1 ── 0 0 + * ──────────────────────────────────────────── + * 1: 0 ── 0 ── 1 1 ── 0 0 + * ──────────────────────────────────────────── + * 2: 0 ── 1 ── 0 1 ── 0 0 + * ──────────────────────────────────────────── + * 3: 0 ── 1 ── 1 1 ── 0 0 + * ──────────────────────────────────────────── + * 4: 1 ── 0 ── 0 1 ── 0 0 + * ──────────────────────────────────────────── + * 5: 1 ── 0 ── 1 1 ── 0 0 + * ──────────────────────────────────────────── + * 6: 1 ── 1 ── 0 1 ── 0 0 + * ──────────────────────────────────────────── + * 7: 1 ── 1 ── 1 1 ── 0 0 + * ──────────────────────────────────────────── + * 8: 0 ── 0 ── 0 0 ── 1 0 + * ──────────────────────────────────────────── + * 9: 0 ── 0 ── 1 0 ── 1 0 + * ──────────────────────────────────────────── + *10: 0 ── 1 ── 0 0 ── 1 0 + * ──────────────────────────────────────────── + *11: 0 ── 1 ── 1 0 ── 1 0 + * ──────────────────────────────────────────── + *12: 1 ── 0 ── 0 0 ── 1 0 + * ──────────────────────────────────────────── + *13: 1 ── 0 ── 1 0 ── 1 0 + * ──────────────────────────────────────────── + *14: 1 ── 1 ── 1 0 ── 1 0 + * ──────────────────────────────────────────── + *15: 1 ── 1 ── 0 0 ── 1 0 + * ──────────────────────────────────────────── + *16: 0 ── 0 ── 0 0 ── 0 1 + * + */ +static void select_col(uint8_t col) { + switch (col) { + case 0: + writePinLow(B5); + writePinLow(B7); + writePinLow(F0); + writePinHigh(B0); + break; + case 1: + writePinLow(B5); + writePinLow(B7); + writePinHigh(F0); + writePinHigh(B0); + break; + case 2: + writePinLow(B5); + writePinHigh(B7); + writePinLow(F0); + writePinHigh(B0); + break; + case 3: + writePinLow(B5); + writePinHigh(B7); + writePinHigh(F0); + writePinHigh(B0); + break; + case 4: + writePinHigh(B5); + writePinLow(B7); + writePinLow(F0); + writePinHigh(B0); + break; + case 5: + writePinHigh(B5); + writePinLow(B7); + writePinHigh(F0); + writePinHigh(B0); + break; + case 6: + writePinHigh(B5); + writePinHigh(B7); + writePinLow(F0); + writePinHigh(B0); + break; + case 7: + writePinHigh(B5); + writePinHigh(B7); + writePinHigh(F0); + writePinHigh(B0); + break; + case 8: + writePinLow(B5); + writePinLow(B7); + writePinLow(F0); + writePinHigh(F1); + break; + case 9: + writePinLow(B5); + writePinLow(B7); + writePinHigh(F0); + writePinHigh(F1); + break; + case 10: + writePinLow(B5); + writePinHigh(B7); + writePinLow(F0); + writePinHigh(F1); + break; + case 11: + writePinLow(B5); + writePinHigh(B7); + writePinHigh(F0); + writePinHigh(F1); + break; + case 12: + writePinHigh(B5); + writePinLow(B7); + writePinLow(F0); + writePinHigh(F1); + break; + case 13: + writePinHigh(B5); + writePinLow(B7); + writePinHigh(F0); + writePinHigh(F1); + break; + case 14: + writePinHigh(B5); + writePinHigh(B7); + writePinHigh(F0); + writePinHigh(F1); + break; + case 15: + writePinHigh(B5); + writePinHigh(B7); + writePinLow(F0); + writePinHigh(F1); + break; + case 16: + writePinLow(E6); + break; + } +} + +static void unselect_col(uint8_t col) { + switch (col) { + case 0: + writePinHigh(B5); + writePinHigh(B7); + writePinHigh(F0); + writePinLow(B0); + break; + case 1: + writePinHigh(B5); + writePinHigh(B7); + writePinLow(F0); + writePinLow(B0); + break; + case 2: + writePinHigh(B5); + writePinLow(B7); + writePinHigh(F0); + writePinLow(B0); + break; + case 3: + writePinHigh(B5); + writePinLow(B7); + writePinLow(F0); + writePinLow(B0); + break; + case 4: + writePinLow(B5); + writePinHigh(B7); + writePinHigh(F0); + writePinLow(B0); + break; + case 5: + writePinLow(B5); + writePinHigh(B7); + writePinLow(F0); + writePinLow(B0); + break; + case 6: + writePinLow(B5); + writePinLow(B7); + writePinHigh(F0); + writePinLow(B0); + break; + case 7: + writePinLow(B5); + writePinLow(B7); + writePinLow(F0); + writePinLow(B0); + break; + case 8: + writePinHigh(B5); + writePinHigh(B7); + writePinHigh(F0); + writePinLow(F1); + break; + case 9: + writePinHigh(B5); + writePinHigh(B7); + writePinLow(F0); + writePinLow(F1); + break; + case 10: + writePinHigh(B5); + writePinLow(B7); + writePinHigh(F0); + writePinLow(F1); + break; + case 11: + writePinHigh(B5); + writePinLow(B7); + writePinLow(F0); + writePinLow(F1); + break; + case 12: + writePinLow(B5); + writePinHigh(B7); + writePinHigh(F0); + writePinLow(F1); + break; + case 13: + writePinLow(B5); + writePinHigh(B7); + writePinLow(F0); + writePinLow(F1); + break; + case 14: + writePinLow(B5); + writePinLow(B7); + writePinLow(F0); + writePinLow(F1); + break; + case 15: + writePinLow(B5); + writePinLow(B7); + writePinHigh(F0); + writePinLow(F1); + break; + case 16: + writePinHigh(E6); + break; + } +} + +static void unselect_cols(void) { + //Native + writePinHigh(E6); + + //Demultiplexer + writePinLow(B0); + writePinLow(F1); + writePinHigh(B5); + writePinHigh(B7); + writePinHigh(F0); +} + +static void init_pins(void) { + unselect_cols(); + for (uint8_t x = 0; x < MATRIX_ROWS; x++) { + setPinInputHigh(row_pins[x]); + } + setPinOutput(B5); + setPinOutput(B7); + setPinOutput(F0); + setPinOutput(B0); + setPinOutput(F1); + setPinOutput(E6); +} + +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/serratus/readme.md b/keyboards/mechlovin/serratus/readme.md new file mode 100644 index 000000000000..5181f4169b52 --- /dev/null +++ b/keyboards/mechlovin/serratus/readme.md @@ -0,0 +1,21 @@ +# serratus + +![serratus](https://i.imgur.com/VN38ogYh.jpeg) + +A TKL PCB TypeC for Serratus keyboard. + +* Keyboard Maintainer: [mechlovin](https://github.com/mechlovin) +* Hardware Supported: Serratus, Atmega32u4 +* Hardware Availability: [Geekhack GB](https://geekhack.org/index.php?topic=112768.0) + +Make example for this keyboard (after setting up your build environment): + + make mechlovin/serratus:default + +Flashing example for this keyboard: + + make mechlovin/serratus: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). + +**Reset Key:** To put the Serratus PCB into bootloader, push reset swith on the bottom of the PCB. diff --git a/keyboards/mechlovin/serratus/rules.mk b/keyboards/mechlovin/serratus/rules.mk new file mode 100644 index 000000000000..0de5f52e6bdf --- /dev/null +++ b/keyboards/mechlovin/serratus/rules.mk @@ -0,0 +1,22 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +CUSTOM_MATRIX = lite + +SRC += matrix.c diff --git a/keyboards/mechlovin/serratus/serratus.c b/keyboards/mechlovin/serratus/serratus.c new file mode 100644 index 000000000000..b396e57bf5e6 --- /dev/null +++ b/keyboards/mechlovin/serratus/serratus.c @@ -0,0 +1,17 @@ +/* Copyright 2021 mechlovin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "serratus.h" diff --git a/keyboards/mechlovin/serratus/serratus.h b/keyboards/mechlovin/serratus/serratus.h new file mode 100644 index 000000000000..fd04f7a2297b --- /dev/null +++ b/keyboards/mechlovin/serratus/serratus.h @@ -0,0 +1,35 @@ +/* Copyright 2021 mechlovin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_all( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, K0F, K0G, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K0D, 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, K4F, \ + K50, K51, K52, K56, 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, KC_NO, KC_NO, KC_NO }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, KC_NO, K4F, KC_NO }, \ + { K50, K51, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F, K5G }, \ +} diff --git a/keyboards/mechlovin/th1800/info.json b/keyboards/mechlovin/th1800/info.json index 2ed6673a5542..8efddf61a1ab 100644 --- a/keyboards/mechlovin/th1800/info.json +++ b/keyboards/mechlovin/th1800/info.json @@ -2,8 +2,6 @@ "keyboard_name": "th-1800", "url": "", "maintainer": "qmk", - "width": 19.5, - "height": 7.25, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/mechlovin/th1800/rules.mk b/keyboards/mechlovin/th1800/rules.mk index 3076166479fc..0ed896250405 100644 --- a/keyboards/mechlovin/th1800/rules.mk +++ b/keyboards/mechlovin/th1800/rules.mk @@ -5,21 +5,18 @@ MCU = atmega32a F_CPU = 16000000 # Bootloader selection -BOOTLOADER = USBasp +BOOTLOADER = usbasploader # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/mechlovin/tmkl/config.h b/keyboards/mechlovin/tmkl/config.h index e36470a9bdda..9a1d865e295b 100644 --- a/keyboards/mechlovin/tmkl/config.h +++ b/keyboards/mechlovin/tmkl/config.h @@ -40,7 +40,7 @@ along with this program. If not, see . * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) * */ -#define MATRIX_ROW_PINS { A8, A4, A5, A3, A2, A1, } +#define MATRIX_ROW_PINS { A8, A4, A5, A3, A2, A1 } #define MATRIX_COL_PINS { B11, B10, B2, B1, B0, A7, A6, A0, C15, B4, B5, B3, C13, C14 } #define DIODE_DIRECTION COL2ROW @@ -58,4 +58,4 @@ along with this program. If not, see . #define LED_CAPS_LOCK_PIN B9 /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ -#define LOCKING_SUPPORT_ENABLE \ No newline at end of file +#define LOCKING_SUPPORT_ENABLE diff --git a/keyboards/mechlovin/tmkl/info.json b/keyboards/mechlovin/tmkl/info.json index 5d32c59236bc..b57ea89fa7f1 100644 --- a/keyboards/mechlovin/tmkl/info.json +++ b/keyboards/mechlovin/tmkl/info.json @@ -1,8 +1,6 @@ { "keyboard_name": "tmkl", "maintainer": "Team Mechlovin", - "width": 15, - "height": 6, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/mechlovin/tmkl/rules.mk b/keyboards/mechlovin/tmkl/rules.mk index 54a646d2746a..10875ceb0437 100644 --- a/keyboards/mechlovin/tmkl/rules.mk +++ b/keyboards/mechlovin/tmkl/rules.mk @@ -8,13 +8,11 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality diff --git a/keyboards/mechmini/mechmini.h b/keyboards/mechmini/mechmini.h index 637021cd2006..cbd405285f35 100644 --- a/keyboards/mechmini/mechmini.h +++ b/keyboards/mechmini/mechmini.h @@ -14,17 +14,12 @@ * along with this program. If not, see . */ -#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/v1/info.json b/keyboards/mechmini/v1/info.json index d99f3609420d..f48fddd066d3 100644 --- a/keyboards/mechmini/v1/info.json +++ b/keyboards/mechmini/v1/info.json @@ -1,10 +1,55 @@ { - "keyboard_name": "MechMini", + "keyboard_name": "MechMini v1", "url": "", "maintainer": "qmk", - "width": 12, - "height": 4, "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + + {"x":0, "y":1, "w":1.25}, + {"x":1.25, "y":1}, + {"x":2.25, "y":1}, + {"x":3.25, "y":1}, + {"x":4.25, "y":1}, + {"x":5.25, "y":1}, + {"x":6.25, "y":1}, + {"x":7.25, "y":1}, + {"x":8.25, "y":1}, + {"x":9.25, "y":1}, + {"x":10.25, "y":1, "w":1.75}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2, "w":1.25}, + {"x":11, "y":2}, + + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3, "w":6.25}, + {"x":9.5, "y":3, "w":1.25}, + {"x":10.75, "y":3, "w":1.25} + ] + }, "LAYOUT_split_space": { "layout": [ {"x":0, "y":0}, diff --git a/keyboards/mechmini/v1/keymaps/default/keymap.c b/keyboards/mechmini/v1/keymaps/default/keymap.c index f9e446064a53..e0b746df9f26 100644 --- a/keyboards/mechmini/v1/keymaps/default/keymap.c +++ b/keyboards/mechmini/v1/keymaps/default/keymap.c @@ -15,35 +15,36 @@ along with this program. If not, see . #include QMK_KEYBOARD_H -#define _BL 0 // base layer -#define _FN1 1 // function layer 1 -#define _FN2 2 // function layer 2 -#define _FN3 3 // function layer 3 -#define _____ KC_TRNS +enum layer_names { + _BL, // base layer + _NV, // navigation layer + _NP, // numbers and punctuation layer + _FN // function keys +}; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_BL] = KEYMAP( - KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, - KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, MO(_FN2), - KC_LCTL, KC_LGUI, KC_LALT, _____, KC_SPC, _____, MO(_FN1), MO(_FN3) - ), - [_FN1] = KEYMAP( - KC_GRAVE, _____, KC_UP, KC_MUTE, KC_VOLD, KC_VOLU, KC_MRWD, KC_MPLY, KC_MFFD, KC_SLCK, KC_PAUS, KC_DEL, - KC_CAPS, KC_LEFT, KC_DOWN, KC_RIGHT, _____, _____, _____, KC_INS, KC_HOME, KC_PGUP, KC_PSCR, - _____, _____, M(0), M(1), M(2), _____, _____, KC_END, KC_PGDN, _____, _____, - _____, _____, _____, _____, _____, _____, _____, _____ - ), - [_FN2] = KEYMAP( - KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, - KC_CAPS, _____, _____, _____, _____, KC_LBRC, KC_RBRC, KC_BSLS, KC_MINS, KC_EQL, _____, - _____, _____, _____, _____, _____, _____, _____, KC_SCLN, KC_QUOT, KC_SLSH, _____, - _____, _____, _____, _____, _____, _____, _____, _____ - ), - [_FN3] = KEYMAP( - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, - _____, M(3), M(4), M(5), _____, _____, _____, _____, _____, _____, _____, - _____, M(6), _____, _____, _____, _____, _____, _____, _____, _____, _____, - _____, _____, _____, _____, _____, _____, _____, _____ - ) + [_BL] = LAYOUT( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, MO(_NP), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_NV), MO(_FN) + ), + [_NV] = LAYOUT( + KC_GRV, _______, KC_UP, KC_MUTE, KC_VOLD, KC_VOLU, KC_MRWD, KC_MPLY, KC_MFFD, KC_SLCK, KC_PAUS, KC_DEL, + KC_CAPS, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, KC_INS, KC_HOME, KC_PGUP, KC_PSCR, + _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, _______, _______, + _______, _______, _______, _______, _______, _______ + ), + [_NP] = LAYOUT( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + KC_CAPS, _______, _______, _______, _______, KC_LBRC, KC_RBRC, KC_BSLS, KC_MINS, KC_EQL, _______, + _______, _______, _______, _______, _______, _______, _______, KC_SCLN, KC_QUOT, KC_SLSH, _______, + _______, _______, _______, _______, _______, _______ + ), + [_FN] = LAYOUT( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______ + ) }; diff --git a/keyboards/mechmini/v1/rules.mk b/keyboards/mechmini/v1/rules.mk index c1582d9c6819..d77ba0399382 100644 --- a/keyboards/mechmini/v1/rules.mk +++ b/keyboards/mechmini/v1/rules.mk @@ -2,17 +2,10 @@ MCU = atmega32a # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # build options -BOOTMAGIC_ENABLE = full +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes EXTRAKEY_ENABLE = yes CONSOLE_ENABLE = no diff --git a/keyboards/mechmini/v1/v1.h b/keyboards/mechmini/v1/v1.h index 401eac85b711..526f12e410a6 100644 --- a/keyboards/mechmini/v1/v1.h +++ b/keyboards/mechmini/v1/v1.h @@ -15,38 +15,34 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#ifndef V1_H -#define V2_H +#pragma once -#include "../mechmini.h" -#include "keycode.h" -#include "action.h" -#include "quantum.h" +#include "mechmini.h" + +#define ___ KC_NO #define LAYOUT( \ - K03, K13, K23, K33, K43, K53, K26, KC6, KC7, K27, KA3, KB3, \ - K02, K12, K22, K32, K42, K52, K36, KD6, KD7, K37, KA2, \ - K01, K11, K21, K31, K41, K51, K46, KE6, KE7, K47, KA1, \ - K00, K10, K20, K56, K57, KB0, KC0, K66 \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \ + K00, K01, K02, K05, K09, K0A \ ) \ { \ - { K00, K10, K20, K56, KC_NO, K57, KC_NO, KC_NO, KB0, KC0, K66, KC_NO }, \ - { K01, K11, K21, K31, K41, K51, K46, KE6, KE7, K47, KA1, KC_NO }, \ - { K02, K12, K22, K32, K42, K52, K36, KD6, KD7, K37, KA2, KC_NO }, \ - { K03, K13, K23, K33, K43, K53, K26, KC6, KC7, K27, KA3, KB3 } \ + { K00, K01, K02, ___, ___, K05, ___, ___, ___, 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, K34, K35, K36, K37, K38, K39, K3A, K3B } \ } #define LAYOUT_split_space( \ - K03, K13, K23, K33, K43, K53, K26, KC6, KC7, K27, KA3, KB3, \ - K02, K12, K22, K32, K42, K52, K36, KD6, KD7, K37, KA2, \ - K01, K11, K21, K31, K41, K51, K46, KE6, KE7, K47, KA1, \ - K00, K10, K20, K56, K57, KB0, KC0, K66 \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \ + K00, K01, K02, K03, K06, K08, K09, K0A \ ) \ { \ - { K00, K10, K20, K56, KC_NO, KC_NO, K57, KC_NO, KB0, KC0, K66, KC_NO }, \ - { K01, K11, K21, K31, K41, K51, K46, KE6, KE7, K47, KA1, KC_NO }, \ - { K02, K12, K22, K32, K42, K52, K36, KD6, KD7, K37, KA2, KC_NO }, \ - { K03, K13, K23, K33, K43, K53, K26, KC6, KC7, K27, KA3, KB3 } \ + { K00, K01, K02, K03, ___, ___, K06, ___, 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, K34, K35, K36, K37, K38, K39, K3A, K3B } \ } - -#endif diff --git a/keyboards/mechmini/v2/config.h b/keyboards/mechmini/v2/config.h index c19e030bf466..7936caef0073 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 . */ -#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/info.json b/keyboards/mechmini/v2/info.json index f24b8648cbbe..1d0d727a3eea 100644 --- a/keyboards/mechmini/v2/info.json +++ b/keyboards/mechmini/v2/info.json @@ -2,8 +2,6 @@ "keyboard_name": "MechMini 2", "url": "https://mechkeys.ca/pages/mechmini-2-guide", "maintainer": "qmk", - "width": 12, - "height": 4, "layouts": { "LAYOUT_ortho": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"Back Space", "x":11, "y":0}, {"label":"Tab", "x":0, "y":1}, {"label":"A", "x":1, "y":1}, {"label":"S", "x":2, "y":1}, {"label":"D", "x":3, "y":1}, {"label":"F", "x":4, "y":1}, {"label":"G", "x":5, "y":1}, {"label":"H", "x":6, "y":1}, {"label":"J", "x":7, "y":1}, {"label":"K", "x":8, "y":1}, {"label":"L", "x":9, "y":1}, {"label":";", "x":10, "y":1}, {"label":"'", "x":11, "y":1}, {"label":"Shift", "x":0, "y":2}, {"label":"Z", "x":1, "y":2}, {"label":"X", "x":2, "y":2}, {"label":"C", "x":3, "y":2}, {"label":"V", "x":4, "y":2}, {"label":"B", "x":5, "y":2}, {"label":"N", "x":6, "y":2}, {"label":"M", "x":7, "y":2}, {"label":",", "x":8, "y":2}, {"label":".", "x":9, "y":2}, {"label":"/", "x":10, "y":2}, {"label":"Return", "x":11, "y":2}, {"label":"Caps", "x":0, "y":3}, {"label":"Ctrl", "x":1, "y":3}, {"label":"Alt", "x":2, "y":3}, {"label":"GUI", "x":3, "y":3}, {"label":"MO(1)", "x":4, "y":3}, {"label":"Space", "x":5, "y":3}, {"label":"Space", "x":6, "y":3}, {"label":"MO(2)", "x":7, "y":3}, {"label":"←", "x":8, "y":3}, {"label":"↓", "x":9, "y":3}, {"label":"↑", "x":10, "y":3}, {"label":"→", "x":11, "y":3}] diff --git a/keyboards/mechmini/v2/keymaps/2u_space_ortho/keymap.c b/keyboards/mechmini/v2/keymaps/2u_space_ortho/keymap.c index 1b21750035e6..90bb2ddd6077 100644 --- a/keyboards/mechmini/v2/keymaps/2u_space_ortho/keymap.c +++ b/keyboards/mechmini/v2/keymaps/2u_space_ortho/keymap.c @@ -4,11 +4,10 @@ #define _FN1 1 #define _FN2 2 -#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_BL] = LAYOUT_2u_space_ortho( - F(0), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, KC_CAPS, KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT), @@ -44,81 +43,3 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { } return MACRO_NONE; } - -void matrix_init_user(void) { -} - -void matrix_scan_user(void) { -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - - if (usb_led & (1 << USB_LED_NUM_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_CAPS_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_SCROLL_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_COMPOSE)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_KANA)) { - - } else { - - } - -} - -enum function_id { - SHIFT_ESC, -}; - -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_FUNCTION(SHIFT_ESC), -}; - -void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { - static uint8_t shift_esc_shift_mask; - switch (id) { - case SHIFT_ESC: - shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK; - if (record->event.pressed) { - if (shift_esc_shift_mask) { - add_key(KC_GRV); - send_keyboard_report(); - } else { - add_key(KC_ESC); - send_keyboard_report(); - } - } else { - if (shift_esc_shift_mask) { - del_key(KC_GRV); - send_keyboard_report(); - } else { - del_key(KC_ESC); - send_keyboard_report(); - } - } - break; - } -} diff --git a/keyboards/mechmini/v2/keymaps/625_space/keymap.c b/keyboards/mechmini/v2/keymaps/625_space/keymap.c index 0746b8aec92e..4344d6d2bc52 100755 --- a/keyboards/mechmini/v2/keymaps/625_space/keymap.c +++ b/keyboards/mechmini/v2/keymaps/625_space/keymap.c @@ -4,11 +4,10 @@ #define _FN1 1 #define _FN2 2 -#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_BL] = LAYOUT_625_space( - F(0), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_LSFT, KC_DOT, KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, MO(1), MO(2)), @@ -27,37 +26,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; - -enum function_id { - SHIFT_ESC, -}; - -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_FUNCTION(SHIFT_ESC), -}; - -void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { - static uint8_t shift_esc_shift_mask; - switch (id) { - case SHIFT_ESC: - shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK; - if (record->event.pressed) { - if (shift_esc_shift_mask) { - add_key(KC_GRV); - send_keyboard_report(); - } else { - add_key(KC_ESC); - send_keyboard_report(); - } - } else { - if (shift_esc_shift_mask) { - del_key(KC_GRV); - send_keyboard_report(); - } else { - del_key(KC_ESC); - send_keyboard_report(); - } - } - break; - } -} diff --git a/keyboards/mechmini/v2/keymaps/arkag/rules.mk b/keyboards/mechmini/v2/keymaps/arkag/rules.mk index c4ee1a7d7615..735d573d73cf 100644 --- a/keyboards/mechmini/v2/keymaps/arkag/rules.mk +++ b/keyboards/mechmini/v2/keymaps/arkag/rules.mk @@ -1,4 +1,4 @@ -BOOTMAGIC_ENABLE = lite +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no STENO_ENABLE = no EXTRAKEY_ENABLE = yes diff --git a/keyboards/mechmini/v2/keymaps/default/keymap.c b/keyboards/mechmini/v2/keymaps/default/keymap.c index b0701ed58e22..dae1dc9fd68d 100755 --- a/keyboards/mechmini/v2/keymaps/default/keymap.c +++ b/keyboards/mechmini/v2/keymaps/default/keymap.c @@ -31,46 +31,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -void matrix_init_user(void) { -} - -void matrix_scan_user(void) { -} - -void led_set_user(uint8_t usb_led) { - - if (usb_led & (1 << USB_LED_NUM_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_CAPS_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_SCROLL_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_COMPOSE)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_KANA)) { - - } else { - - } - -} - bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case SFT_ESC: diff --git a/keyboards/mechmini/v2/keymaps/lbibass_625_space/rules.mk b/keyboards/mechmini/v2/keymaps/lbibass_625_space/rules.mk index 49a55db5137d..cf808a2b414c 100755 --- a/keyboards/mechmini/v2/keymaps/lbibass_625_space/rules.mk +++ b/keyboards/mechmini/v2/keymaps/lbibass_625_space/rules.mk @@ -1,4 +1,4 @@ -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = yes # Console for debug(+400) diff --git a/keyboards/mechmini/v2/keymaps/lbibass_split_space/rules.mk b/keyboards/mechmini/v2/keymaps/lbibass_split_space/rules.mk index 9ea2eeee8c28..7d50540f149e 100755 --- a/keyboards/mechmini/v2/keymaps/lbibass_split_space/rules.mk +++ b/keyboards/mechmini/v2/keymaps/lbibass_split_space/rules.mk @@ -1,4 +1,4 @@ -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = yes # Console for debug(+400) diff --git a/keyboards/mechmini/v2/keymaps/ortho/keymap.c b/keyboards/mechmini/v2/keymaps/ortho/keymap.c index 3b8fbb168f51..31ccfa82a345 100755 --- a/keyboards/mechmini/v2/keymaps/ortho/keymap.c +++ b/keyboards/mechmini/v2/keymaps/ortho/keymap.c @@ -4,11 +4,10 @@ #define _FN1 1 #define _FN2 2 -#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_BL] = LAYOUT_ortho( - F(0), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, KC_CAPS, KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT), @@ -44,81 +43,3 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { } return MACRO_NONE; } - -void matrix_init_user(void) { -} - -void matrix_scan_user(void) { -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - - if (usb_led & (1 << USB_LED_NUM_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_CAPS_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_SCROLL_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_COMPOSE)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_KANA)) { - - } else { - - } - -} - -enum function_id { - SHIFT_ESC, -}; - -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_FUNCTION(SHIFT_ESC), -}; - -void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { - static uint8_t shift_esc_shift_mask; - switch (id) { - case SHIFT_ESC: - shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK; - if (record->event.pressed) { - if (shift_esc_shift_mask) { - add_key(KC_GRV); - send_keyboard_report(); - } else { - add_key(KC_ESC); - send_keyboard_report(); - } - } else { - if (shift_esc_shift_mask) { - del_key(KC_GRV); - send_keyboard_report(); - } else { - del_key(KC_ESC); - send_keyboard_report(); - } - } - break; - } -} diff --git a/keyboards/mechmini/v2/keymaps/spacebarracecar/keymap.c b/keyboards/mechmini/v2/keymaps/spacebarracecar/keymap.c index a7e06c6043e0..c0fb3695f905 100644 --- a/keyboards/mechmini/v2/keymaps/spacebarracecar/keymap.c +++ b/keyboards/mechmini/v2/keymaps/spacebarracecar/keymap.c @@ -44,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { `-----------------------------------------------------------------------------------------------------------------------' */ [_LOWER] = LAYOUT_ortho( - DE_TILD, DE_EXLM, DE_DQOT, DE_HASH, DE_DLR, DE_PERC, CU_CIRC, DE_AMPR, DE_ASTR, DE_LPRN, DE_RPRN, _______, + DE_TILD, DE_EXLM, DE_DQUO, DE_HASH, DE_DLR, DE_PERC, CU_CIRC, DE_AMPR, DE_ASTR, DE_LPRN, DE_RPRN, _______, _______, DE_AT, CTRLX, CTRLC, CTRLV, XXXXXXX, XXXXXXX, DE_UNDS, DE_PLUS, DE_LCBR, DE_RCBR, DE_PIPE, _______, DE_EURO, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DE_MINS, CU_EQL, CU_LBRC, CU_RBRC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ diff --git a/keyboards/mechmini/v2/keymaps/spacebarracecar/rules.mk b/keyboards/mechmini/v2/keymaps/spacebarracecar/rules.mk index cade68ac9849..82f1f96f643c 100644 --- a/keyboards/mechmini/v2/keymaps/spacebarracecar/rules.mk +++ b/keyboards/mechmini/v2/keymaps/spacebarracecar/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/mechmini/v2/keymaps/split_space/keymap.c b/keyboards/mechmini/v2/keymaps/split_space/keymap.c index e332c641a6cc..635b4eacb356 100755 --- a/keyboards/mechmini/v2/keymaps/split_space/keymap.c +++ b/keyboards/mechmini/v2/keymaps/split_space/keymap.c @@ -4,11 +4,10 @@ #define _FN1 1 #define _FN2 2 -#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_BL] = LAYOUT_split_space( - F(0), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_RSFT, KC_DOT, KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_RCTL, MO(1), MO(2)), @@ -26,37 +25,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), }; - -enum function_id { - SHIFT_ESC, -}; - -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_FUNCTION(SHIFT_ESC), -}; - -void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { - static uint8_t shift_esc_shift_mask; - switch (id) { - case SHIFT_ESC: - shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK; - if (record->event.pressed) { - if (shift_esc_shift_mask) { - add_key(KC_GRV); - send_keyboard_report(); - } else { - add_key(KC_ESC); - send_keyboard_report(); - } - } else { - if (shift_esc_shift_mask) { - del_key(KC_GRV); - send_keyboard_report(); - } else { - del_key(KC_ESC); - send_keyboard_report(); - } - } - break; - } -} diff --git a/keyboards/mechmini/v2/keymaps/wsturgiss/keymap.c b/keyboards/mechmini/v2/keymaps/wsturgiss/keymap.c index e90a8c6e6554..218936a19b02 100644 --- a/keyboards/mechmini/v2/keymaps/wsturgiss/keymap.c +++ b/keyboards/mechmini/v2/keymaps/wsturgiss/keymap.c @@ -1,7 +1,7 @@ #include QMK_KEYBOARD_H #define base 0 -#define raise 1 +#define raise 1 #define lower 2 //Tap Dance Declarations @@ -37,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [raise] = LAYOUT_2u_space_ortho( _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_QUOT, _______, - _______, KC_HOME, KC_END, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, _______, _______, + _______, KC_HOME, KC_END, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, _______, KC_MNXT, EEP_RST), [lower] = LAYOUT_2u_space_ortho( @@ -86,7 +86,7 @@ void matrix_scan_user(void) { } //change colors and rgb modes on layer change -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { switch (biton32(state)) { case raise: rgblight_mode_noeeprom(1); diff --git a/keyboards/mechmini/v2/keymaps/wsturgiss/rules.mk b/keyboards/mechmini/v2/keymaps/wsturgiss/rules.mk index 1484e2dd0ad0..c429a6486ffc 100755 --- a/keyboards/mechmini/v2/keymaps/wsturgiss/rules.mk +++ b/keyboards/mechmini/v2/keymaps/wsturgiss/rules.mk @@ -1,4 +1,4 @@ -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite CONSOLE_ENABLE = no # Console for debug(+400) COMMAND_ENABLE = no # Commands for debug and configuration SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend diff --git a/keyboards/mechmini/v2/rules.mk b/keyboards/mechmini/v2/rules.mk index d585958de420..30ca4521657f 100755 --- a/keyboards/mechmini/v2/rules.mk +++ b/keyboards/mechmini/v2/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 -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 = yes # Enable keyboard backlight functionality AUDIO_ENABLE = no diff --git a/keyboards/mechmini/v2/v2.h b/keyboards/mechmini/v2/v2.h index 67a13abbb5dc..a0a620675e34 100755 --- a/keyboards/mechmini/v2/v2.h +++ b/keyboards/mechmini/v2/v2.h @@ -13,57 +13,56 @@ * along with this program. If not, see . */ -#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/mechstudio/dawn/info.json b/keyboards/mechstudio/dawn/info.json index 2a2ff221e4f5..6ab1540d35c9 100644 --- a/keyboards/mechstudio/dawn/info.json +++ b/keyboards/mechstudio/dawn/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Dawn", "url": "https://mech.studio/projects/dawn/", "maintainer": "dejaeghered", - "width": 15, - "height": 6, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/mechstudio/dawn/rules.mk b/keyboards/mechstudio/dawn/rules.mk index d9cc76829e49..40c644c6a375 100644 --- a/keyboards/mechstudio/dawn/rules.mk +++ b/keyboards/mechstudio/dawn/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = qmk-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 \ No newline at end of file diff --git a/keyboards/mechstudio/ud_40_ortho/info.json b/keyboards/mechstudio/ud_40_ortho/info.json index 785b466fc72a..f0bc1524a8b5 100644 --- a/keyboards/mechstudio/ud_40_ortho/info.json +++ b/keyboards/mechstudio/ud_40_ortho/info.json @@ -2,8 +2,6 @@ "keyboard_name": "UD_40 ortho", "url": "https://mech.studio/projects/ud_40/", "maintainer": "dejaeghered", - "width": 12, - "height": 4, "layouts": { "LAYOUT_ortho_4x12": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}] diff --git a/keyboards/mechstudio/ud_40_ortho/keymaps/via/keymap.c b/keyboards/mechstudio/ud_40_ortho/keymaps/via/keymap.c index c61bec5a0537..affc42c7bb3f 100644 --- a/keyboards/mechstudio/ud_40_ortho/keymaps/via/keymap.c +++ b/keyboards/mechstudio/ud_40_ortho/keymaps/via/keymap.c @@ -20,7 +20,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, - _______, KC_LCTRL, KC_LALT, KC_LGUI, KC_FN13, KC_SPC, KC_SPC, KC_FN23, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT), + _______, KC_LCTRL, KC_LALT, KC_LGUI, KC_NO, KC_SPC, KC_SPC, KC_NO, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT), [1] = LAYOUT_ortho_4x12( KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, diff --git a/keyboards/mechstudio/ud_40_ortho/rules.mk b/keyboards/mechstudio/ud_40_ortho/rules.mk index 4593fbf96e39..f10634638a6e 100644 --- a/keyboards/mechstudio/ud_40_ortho/rules.mk +++ b/keyboards/mechstudio/ud_40_ortho/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = qmk-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 LAYOUTS = ortho_4x12 diff --git a/keyboards/mechwild/bde/lefty/info.json b/keyboards/mechwild/bde/lefty/info.json index 1ada76e7832d..f955618e94db 100644 --- a/keyboards/mechwild/bde/lefty/info.json +++ b/keyboards/mechwild/bde/lefty/info.json @@ -2,8 +2,6 @@ "keyboard_name": "MechWild BDE Lefty", "url": "mechwild.com", "maintainer": "kylemccreery", - "width": 14, - "height": 3, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/mechwild/bde/lefty/rules.mk b/keyboards/mechwild/bde/lefty/rules.mk index f4aec9cf5fa5..e63ce010256f 100644 --- a/keyboards/mechwild/bde/lefty/rules.mk +++ b/keyboards/mechwild/bde/lefty/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/mechwild/bde/righty/info.json b/keyboards/mechwild/bde/righty/info.json index 8f4c879499ef..93b84e287227 100644 --- a/keyboards/mechwild/bde/righty/info.json +++ b/keyboards/mechwild/bde/righty/info.json @@ -2,8 +2,6 @@ "keyboard_name": "MechWild BDE Righty", "url": "mechwild.com", "maintainer": "kylemccreery", - "width": 14, - "height": 3, "layouts": { "LAYOUT": { "layout": [ @@ -13,4 +11,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/mechwild/bde/righty/rules.mk b/keyboards/mechwild/bde/righty/rules.mk index f4aec9cf5fa5..e63ce010256f 100644 --- a/keyboards/mechwild/bde/righty/rules.mk +++ b/keyboards/mechwild/bde/righty/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/mechwild/mercutio/info.json b/keyboards/mechwild/mercutio/info.json index f44f87adb53d..cc663f2215ba 100644 --- a/keyboards/mechwild/mercutio/info.json +++ b/keyboards/mechwild/mercutio/info.json @@ -2,11 +2,9 @@ "keyboard_name": "MechWild Mercutio", "url": "mechwild.com", "maintainer": "kylemccreery", - "width": 12, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"label":"encoder", "x":12, "y":0}, {"label":"1.5u", "x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"label":"1.5u", "x":11.5, "y":1, "w":1.5}, {"label":"1.75u", "x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"label":"1.25u", "x":11.75, "y":2, "w":1.25}, {"label":"1.25u", "x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"label":"1.75u", "x":11.25, "y":3, "w":1.75},{"label":"1.25u", "x":0, "y":4, "w":1.25}, {"label":"1u", "x":1.25, "y":4}, {"label":"1.25u", "x":2.25, "y":4, "w":1.25}, {"label":"2.25u", "x":3.5, "y":4, "w":2.25}, {"label":"1u", "x":5.75, "y":4}, {"label":"2.75u", "x":6.75, "y":4, "w":2.75}, {"label":"1.25u", "x":9.5, "y":4, "w":1.25}, {"label":"1u", "x":10.75, "y":4}, {"label":"1.25u", "x":11.75, "y":4, "w":1.25}] } } -} \ No newline at end of file +} diff --git a/keyboards/mechwild/mercutio/keymaps/bongocat/keymap.c b/keyboards/mechwild/mercutio/keymaps/bongocat/keymap.c index 51034d39406f..6062b8c73d41 100644 --- a/keyboards/mechwild/mercutio/keymaps/bongocat/keymap.c +++ b/keyboards/mechwild/mercutio/keymaps/bongocat/keymap.c @@ -80,7 +80,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { } #endif -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; // flips the display 180 degrees } @@ -187,12 +187,13 @@ static void render_anim(void) { } } -void oled_task_user(void) { +bool oled_task_user(void) { render_anim(); oled_set_cursor(0,4); sprintf(wpm_str, "WPM: %03d", get_current_wpm()); oled_write(wpm_str, false); + return false; } #endif diff --git a/keyboards/mechwild/mercutio/keymaps/default/keymap.c b/keyboards/mechwild/mercutio/keymaps/default/keymap.c index 519e182512fc..8f433292b5ba 100644 --- a/keyboards/mechwild/mercutio/keymaps/default/keymap.c +++ b/keyboards/mechwild/mercutio/keymaps/default/keymap.c @@ -61,7 +61,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { } #endif -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; // flips the display 180 degrees if offhand } @@ -76,7 +76,8 @@ static void render_name(void) { oled_write_P(mercutio_name, false); } -void oled_task_user(void) { +bool oled_task_user(void) { render_name(); + return false; } #endif diff --git a/keyboards/mechwild/mercutio/keymaps/fancy/keymap.c b/keyboards/mechwild/mercutio/keymaps/fancy/keymap.c index ea1cd1525d77..96457be6d22c 100755 --- a/keyboards/mechwild/mercutio/keymaps/fancy/keymap.c +++ b/keyboards/mechwild/mercutio/keymaps/fancy/keymap.c @@ -50,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #ifdef ENCODER_ENABLE // Encoder Functionality uint8_t selected_layer = 0; bool encoder_update_user(uint8_t index, bool clockwise) { - #ifdef OLED_DRIVER_ENABLE + #ifdef OLED_ENABLE oled_clear(); oled_render(); #endif @@ -76,7 +76,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { } #endif -#ifdef OLED_DRIVER_ENABLE // OLED Functionality +#ifdef OLED_ENABLE // OLED Functionality oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; // flips the display 180 degrees if offhand } @@ -107,7 +107,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { oled_write_P(logo_4, false); } - void oled_task_user(void) { + bool oled_task_user(void) { if ( IS_HOST_LED_OFF(USB_LED_NUM_LOCK) && IS_HOST_LED_OFF(USB_LED_CAPS_LOCK) && selected_layer == 0 && get_highest_layer(layer_state) == 0 ) { render_name(); @@ -164,5 +164,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { oled_write_P(led_state.num_lock ? PSTR("NLCK ") : PSTR(" "), false); oled_write_P(led_state.caps_lock ? PSTR("CAPS ") : PSTR(" "), false); } + return false; } #endif diff --git a/keyboards/mechwild/mercutio/keymaps/jonavin/config.h b/keyboards/mechwild/mercutio/keymaps/jonavin/config.h index 7272cd4c3ab9..09909e28c9a9 100644 --- a/keyboards/mechwild/mercutio/keymaps/jonavin/config.h +++ b/keyboards/mechwild/mercutio/keymaps/jonavin/config.h @@ -28,3 +28,5 @@ //Always send Escape if Alt is pressed #define GRAVE_ESC_CTRL_OVERRIDE //Always send Escape if Control is pressed + +#define TAPPING_TERM 180 diff --git a/keyboards/mechwild/mercutio/keymaps/jonavin/keymap.c b/keyboards/mechwild/mercutio/keymaps/jonavin/keymap.c index f5dddcfac841..869a9f73ab3a 100755 --- a/keyboards/mechwild/mercutio/keymaps/jonavin/keymap.c +++ b/keyboards/mechwild/mercutio/keymaps/jonavin/keymap.c @@ -18,28 +18,22 @@ #include QMK_KEYBOARD_H #include - -enum custom_layers { - _BASE, - _FN1, - _LOWER, - _RAISE, -}; +#include "jonavin.h" const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_BASE] = LAYOUT_all( KC_MUTE, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, - TT(_RAISE), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - KC_LSFT, KC_SLSH, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SFTENT, + TT(_RAISE), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFTCAPS, KC_SLSH, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SFTENT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, LT(_LOWER,KC_SPC), KC_SPC, KC_RALT, MO(_FN1), KC_RCTL ), [_FN1] = LAYOUT_all( - KC_TRNS, + ENCFUNC, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL, - KC_CAPS, KC_F11, KC_F12, KC_NO, KC_NO, KC_NO, KC_NO, KC_PSCR, KC_SCLN, KC_PAUS, KC_NO, KC_NO, - KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NLCK, KC_P0, KC_NO, KC_NO, KC_SFTENT, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), + KC_CAPS, KC_F11, KC_F12, KC_NO, KC_NO, KC_NO, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_NO, KC_NO, + KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NLCK, KC_NO, KC_NO, KC_NO, KC_SFTENT, + KC_TRNS, KC_WINLCK, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), [_LOWER] = LAYOUT_all( KC_TRNS, @@ -50,42 +44,120 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_RAISE] = LAYOUT_all( KC_TRNS, - KC_TAB, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_PMNS, KC_PPLS, KC_P7, KC_P8, KC_P9, KC_P0, KC_TRNS, + KC_TAB, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_PMNS, KC_PPLS, KC_P7, KC_P8, KC_P9, KC_P0, KC_TRNS, TT(_RAISE), KC_LEFT, KC_DOWN, KC_RIGHT,KC_PGDN, KC_PSLS, KC_TAB, KC_P4, KC_P5, KC_P6, KC_PDOT, KC_PEQL, - KC_TRNS, KC_TRNS, KC_NO, KC_DEL, KC_INS, KC_NO, KC_PAST, KC_P0, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_TRNS, KC_TRNS, KC_NO, KC_DEL, KC_INS, KC_NO, KC_PAST, KC_P0, KC_P1, KC_P2, KC_P3, KC_PENT, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ) }; +/* These are needed whether encoder function is enabled or not when ENCFUNC keycode is pressed.? + Defaults never changes if no encoder present to change it +*/ +typedef struct { + char keydesc[6]; // this will be displayed on OLED + uint16_t keycode; // this is the keycode that will be sent when activted +} keycodedescType; + +static const keycodedescType PROGMEM keyselection[] = { + // list of key codes that will be scrollled through by encoder and description + {"TASK", KC_TASK}, + {"INS", KC_INS}, + {"DEL", KC_DEL}, + {"PrtSc", KC_PSCR}, + {"ScrLk", KC_SCLN}, + {"Break", KC_PAUS}, + {"C-A-D", KC_CAD}, // Ctrl-Alt-Del + {"AltF4", KC_AF4}, + {"PLAY", KC_MEDIA_PLAY_PAUSE}, + {"RESET", RESET}, // firmware flash mode +}; + +#define MAX_KEYSELECTION sizeof(keyselection)/sizeof(keyselection[0]) + +static uint8_t selectedkey_idx = 0; +static keycodedescType selectedkey_rec; + +static void set_selectedkey(uint8_t idx) { + // make a copy from PROGMEM + memcpy_P (&selectedkey_rec, &keyselection[idx], sizeof selectedkey_rec); + + //selectedkey_rec = keyselection[idx]; + +} + +void keyboard_post_init_keymap(void) { + // Call the keyboard post init code. + set_selectedkey(selectedkey_idx); +} + +bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case ENCFUNC: + if (record->event.pressed) { + selectedkey_rec.keycode == RESET ? reset_keyboard() : tap_code16(selectedkey_rec.keycode); // handle RESET code + } else { + // when keycode is released + } + break; + } + return true; +}; + + + #ifdef ENCODER_ENABLE // Encoder Functionality - uint8_t selected_layer = 0; + void encoder_action_selectkey(bool clockwise) { + if ( clockwise ) { + if ( selectedkey_idx < MAX_KEYSELECTION-1) { + selectedkey_idx ++; + } else { + // do nothing + } + } else if ( !clockwise ) { + if ( selectedkey_idx > 0){ + selectedkey_idx --; + } else { + // do nothing + } + } + set_selectedkey(selectedkey_idx); + } + bool encoder_update_user(uint8_t index, bool clockwise) { - #ifdef OLED_DRIVER_ENABLE + #ifdef OLED_ENABLE oled_clear(); oled_render(); #endif + uint8_t mods_state = get_mods(); switch (index) { case 0: // This is the only encoder right now, keeping for consistency - if ( clockwise ) { - if ( selected_layer < 3 && keyboard_report->mods & MOD_BIT(KC_LSFT) ) { // If you are holding L shift, encoder changes layers - selected_layer ++; - layer_move(selected_layer); + switch(get_highest_layer(layer_state)){ // special handling per layer + case _FN1: // on Fn layer select what the encoder does when pressed + if (!mods_state) { + encoder_action_selectkey(clockwise); + break; } else { - tap_code(KC_VOLU); // Otherwise it just changes volume + // continue to default } - } else if ( !clockwise ) { - if ( selected_layer > 0 && keyboard_report->mods & MOD_BIT(KC_LSFT) ){ - selected_layer --; - layer_move(selected_layer); - } else { - tap_code(KC_VOLD); + default: // all other layers + if (mods_state & MOD_BIT(KC_LSFT) ) { // If you are holding L shift, encoder changes layers + encoder_action_layerchange(clockwise); + } else if (mods_state & MOD_BIT(KC_LCTL)) { // if holding Left Ctrl, navigate next/prev word + encoder_action_navword(clockwise); + } else if (mods_state & MOD_BIT(KC_LALT)) { // if holding Left Alt, change media next/prev track + encoder_action_mediatrack(clockwise); + } else { + encoder_action_volume(clockwise); // Otherwise it just changes volume } + break; } + break; } return true; } #endif -#ifdef OLED_DRIVER_ENABLE // OLED Functionality +#ifdef OLED_ENABLE // OLED Functionality oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; // flips the display 180 degrees if offhand } @@ -116,9 +188,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { oled_write_P(logo_4, false); } - void oled_task_user(void) { + bool oled_task_user(void) { - if ( IS_HOST_LED_OFF(USB_LED_NUM_LOCK) && IS_HOST_LED_OFF(USB_LED_CAPS_LOCK) && selected_layer == 0 && get_highest_layer(layer_state) == 0 ) { + if ( IS_HOST_LED_OFF(USB_LED_NUM_LOCK) && IS_HOST_LED_OFF(USB_LED_CAPS_LOCK) && get_selected_layer() == 0 && get_highest_layer(layer_state) == 0 ) { render_name(); clear_screen = true; } else { @@ -129,12 +201,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { } render_logo(); oled_set_cursor(8,2); - switch(selected_layer){ + char fn_str[12]; + switch(get_selected_layer()){ case 0: oled_write_P(PSTR("BASE"), false); break; case 1: - oled_write_P(PSTR("FN"), false); + sprintf(fn_str, "FN %5s", selectedkey_rec.keydesc); + oled_write(fn_str, false); + //oled_write_P(PSTR("FN "), false); break; case 2: oled_write_P(PSTR("LOWER"), false); @@ -145,16 +220,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { default: oled_write_P(PSTR("Layer ?"), false); // Should never display, here as a catchall } + oled_write_P(keymap_config.no_gui ? PSTR(" WL") : PSTR(" "), false); oled_set_cursor(8,3); - if (get_highest_layer(layer_state) == selected_layer) { - oled_write_P(PSTR(" "), false); + if (get_highest_layer(layer_state) == get_selected_layer()) { + oled_write_P(PSTR(" "), false); } else { switch (get_highest_layer(layer_state)) { case 0: oled_write_P(PSTR("Temp BASE"), false); break; case 1: - oled_write_P(PSTR("Temp FN"), false); + sprintf(fn_str, "Temp FN %5s", selectedkey_rec.keydesc); + oled_write(fn_str, false); break; case 2: oled_write_P(PSTR("Temp LOWER"), false); @@ -186,6 +263,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { } + return false; } void suspend_power_down_user(void) { // shutdown oled when powered down to prevent OLED from showing Mercutio all the time diff --git a/keyboards/mechwild/mercutio/keymaps/jonavin/readme.md b/keyboards/mechwild/mercutio/keymaps/jonavin/readme.md index 5122f143d591..6255dadd05aa 100644 --- a/keyboards/mechwild/mercutio/keymaps/jonavin/readme.md +++ b/keyboards/mechwild/mercutio/keymaps/jonavin/readme.md @@ -12,5 +12,51 @@ Features - MOUSEKEYS is disbled - shutdown oled when powered down to prevent OLED from showing Mercutio all the time - add WPM indicator when wpm is > 20 wpm + - add double tap of Left Shift to toggle Caps Lock + - add WinLock feature with FN + Win; display WL on OLED when enabled + + - FN layer has encoder selectable key codes and displayed on OLED + + Change these in keymap.c to assign your desired key selection + + static const keycodedescType PROGMEM keyselection[] = { + // list of key codes that will be scrollled through by encoder and description + {"TASK", KC_TASK}, + {"INS", KC_INS}, + {"DEL", KC_DEL}, + {"PrtSc", KC_PSCR}, + {"ScrLk", KC_SCLN}, + {"Break", KC_PAUS}, + {"C-A-D", KC_CAD}, // Ctrl-Alt-Del + {"AltF4", KC_AF4}, + {"PLAY", KC_MEDIA_PLAY_PAUSE}, + {"RESET", RESET}, // firmware flash mode + }; + + - Additional encoder functionality + While holding Left Ctrl, navigates next or previous word + While holding Left Alt, media next track or previous track + + +rules.mk OPTIONS - Active features from userspace +STARTUP_NUMLOCK_ON = yes + - turns on NUMLOCK by default + +TD_LSFT_CAPSLOCK_ENABLE = yes + - This will enable double tap on Left Shift to toggle CAPSLOCK when using KC_LSFTCAPS + +Default Layers +![image](https://user-images.githubusercontent.com/71780717/127014682-3aa05136-6dc7-4a40-9be1-89a5b584848a.png) + +MO(1) / FN Layer +![image](https://user-images.githubusercontent.com/71780717/127014620-a3a36dc6-6e22-4a9b-ad9a-6c6a5d18cbc5.png) + +MO(2) / Lower layer +![image](https://user-images.githubusercontent.com/71780717/127014816-09598d62-2d23-42e5-a625-504a79a54ca9.png) + +MO(3) / Raise layer +![image](https://user-images.githubusercontent.com/71780717/127014881-a181c198-a7e8-4f48-9789-a7a85eabcbd1.png) + + + -![image](https://user-images.githubusercontent.com/71780717/118902752-4aaf7880-b8e4-11eb-82f4-e5047612ffcf.png) diff --git a/keyboards/mechwild/mercutio/keymaps/jonavin/rules.mk b/keyboards/mechwild/mercutio/keymaps/jonavin/rules.mk index 5ae6c7d311f6..0b76c6e57c04 100644 --- a/keyboards/mechwild/mercutio/keymaps/jonavin/rules.mk +++ b/keyboards/mechwild/mercutio/keymaps/jonavin/rules.mk @@ -2,3 +2,7 @@ VIA_ENABLE = yes MOUSEKEY_ENABLE = yes WPM_ENABLE = yes +TAP_DANCE_ENABLE = yes + +TD_LSFT_CAPSLOCK_ENABLE = yes +STARTUP_NUMLOCK_ON = yes diff --git a/keyboards/mechwild/mercutio/keymaps/via/keymap.c b/keyboards/mechwild/mercutio/keymaps/via/keymap.c index 519e182512fc..8f433292b5ba 100755 --- a/keyboards/mechwild/mercutio/keymaps/via/keymap.c +++ b/keyboards/mechwild/mercutio/keymaps/via/keymap.c @@ -61,7 +61,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { } #endif -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; // flips the display 180 degrees if offhand } @@ -76,7 +76,8 @@ static void render_name(void) { oled_write_P(mercutio_name, false); } -void oled_task_user(void) { +bool oled_task_user(void) { render_name(); + return false; } #endif diff --git a/keyboards/mechwild/mercutio/rules.mk b/keyboards/mechwild/mercutio/rules.mk index 7d02480ec564..bd6fde1944e2 100644 --- a/keyboards/mechwild/mercutio/rules.mk +++ b/keyboards/mechwild/mercutio/rules.mk @@ -2,23 +2,21 @@ MCU = atmega328p # Bootloader selection -BOOTLOADER = USBasp +BOOTLOADER = usbasploader # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = yes -OLED_DRIVER_ENABLE = yes \ No newline at end of file +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/mechwild/murphpad/info.json b/keyboards/mechwild/murphpad/info.json index cabb9185e21c..42e01d2ca44c 100644 --- a/keyboards/mechwild/murphpad/info.json +++ b/keyboards/mechwild/murphpad/info.json @@ -2,8 +2,6 @@ "keyboard_name": "MechWild MurphPad", "url": "mechwild.com", "maintainer": "Kyle McCreery", - "width": 5, - "height": 7, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/mechwild/murphpad/keymaps/default/keymap.c b/keyboards/mechwild/murphpad/keymaps/default/keymap.c index eace87cd64b7..fe46e8ce5ec0 100644 --- a/keyboards/mechwild/murphpad/keymaps/default/keymap.c +++ b/keyboards/mechwild/murphpad/keymaps/default/keymap.c @@ -56,7 +56,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - + _______, _______, _______ ), @@ -67,7 +67,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - + _______, _______, _______ ) @@ -95,7 +95,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { } #endif -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; // flips the display 270 degrees } @@ -115,7 +115,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { oled_write_P(logo_4, false); } - void oled_task_user(void) { + bool oled_task_user(void) { render_logo(); oled_set_cursor(0,6); @@ -143,5 +143,6 @@ bool encoder_update_user(uint8_t index, bool clockwise) { oled_write_ln_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); oled_write_ln_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); oled_write_ln_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); + return false; } #endif diff --git a/keyboards/mechwild/murphpad/keymaps/jonavin/config.h b/keyboards/mechwild/murphpad/keymaps/jonavin/config.h new file mode 100644 index 000000000000..2636ea405160 --- /dev/null +++ b/keyboards/mechwild/murphpad/keymaps/jonavin/config.h @@ -0,0 +1,26 @@ +/* Copyright 2021 Jonavin Eng + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +// Standard encoder position. Set to 1 for top right optional position +#define ENCODER_DEFAULTACTIONS_INDEX 0 + +// Increase layers to 6 for VIA +#define DYNAMIC_KEYMAP_LAYER_COUNT 6 + +// Remove line below for vertical layout +#define LANDSCAPE_MODE diff --git a/keyboards/mechwild/murphpad/keymaps/jonavin/keymap.c b/keyboards/mechwild/murphpad/keymaps/jonavin/keymap.c new file mode 100644 index 000000000000..043eeb992bd4 --- /dev/null +++ b/keyboards/mechwild/murphpad/keymaps/jonavin/keymap.c @@ -0,0 +1,424 @@ +/* Copyright 2021 Kyle McCreery + * Copyright 2021 Jonavin Eng + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +#include "jonavin.h" +#include "layout_landscape.h" + + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _FN2 = 2, + _FN3, + _FN4, + _RGB +}; + +#ifdef LANDSCAPE_MODE +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_BASE] = LAYOUT_landscape( + TT(_FN1), TT(_FN2), KC_MUTE, + + KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_PPLS, KC_BSPC, + KC_TAB, KC_P7, KC_P8, KC_P9, KC_PDOT, KC_RGUI, + KC_RSFT, KC_P4, KC_P5, KC_P6, KC_COMMA, KC_RCTL, + KC_P0, KC_P1, KC_P2, KC_P3, KC_PENT, KC_RALT, + + TT(_FN3), TT(_FN4), TT(_RGB) + ), + [_FN1] = LAYOUT_landscape( + _______, _______, ENCFUNC, + + _______, KC_F10, KC_F11, KC_F12, KC_PSCR, _______, + _______, KC_F7, KC_F8, KC_F9, KC_SLCK, _______, + _______, KC_F4, KC_F5, KC_F6, KC_PAUS, _______, + _______, KC_F1, KC_F2, KC_F3, _______, _______, + + _______, _______, _______ + ), + [_FN2] = LAYOUT_landscape( + _______, _______, RESET, + + _______, _______, KC_MPLY, KC_MPRV, KC_MNXT, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + + _______, _______, _______ + ), + [_FN3] = LAYOUT_landscape( + _______, _______, _______, + + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + + _______, _______, _______ + ), + [_FN4] = LAYOUT_landscape( + _______, _______, _______, + + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + + _______, _______, _______ + ), + [_RGB] = LAYOUT_landscape( + _______, _______, _______, + + _______, _______, _______, _______, _______, _______, + _______, RGB_HUD, RGB_SPI, RGB_HUI, RGB_SAI, _______, + _______, RGB_RMOD, RGB_TOG, RGB_MOD, RGB_SAD, _______, + _______, RGB_VAD, RGB_SPD, RGB_VAI, KC_NO, _______, + + _______, _______, _______ + ), +}; +#endif // LANDSCAPE_MODE + +#ifndef LANDSCAPE_MODE +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT( + TT(_FN2),TT(_FN3),TT(_FN4),LT(_RGB,KC_PSCR), + KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_MUTE, KC_P4, KC_P5, KC_P6, _______, + TT(_FN1), KC_P1, KC_P2, KC_P3, KC_PENT, + KC_RALT, KC_P0, _______, KC_PDOT, _______, + + TT(_FN3), TT(_FN4), TT(_RGB) + ), + [_FN1] = LAYOUT( + _______, _______, _______, RESET, + KC_CALC, _______, _______, _______, + _______, _______, _______, _______, + ENCFUNC, KC_TAB, _______, _______, _______, + _______, _______, _______, _______, _______, + _______, KC_BSPC, _______, KC_DEL, _______, + + _______, _______, _______ + ), + [_FN2] = LAYOUT( + _______, _______, _______, _______, + _______, _______, KC_MPLY, KC_MPRV, + _______, _______, _______, KC_MNXT, + RESET, _______, _______, _______, _______, + _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, + + _______, _______, _______ + ), + [_FN3] = LAYOUT( + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, + + _______, _______, _______ + ), + [_FN4] = LAYOUT( + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, + + _______, _______, _______ + ), + [_RGB] = LAYOUT( + _______, _______, _______, _______, + _______, _______, _______, _______, + RGB_HUD, RGB_SPI, RGB_HUI, _______, + _______, RGB_RMOD, RGB_TOG, RGB_MOD, _______, + _______, RGB_VAD, RGB_SPD, RGB_VAI, _______, + _______, RGB_SAD, _______, RGB_SAI, _______, + + _______, _______, _______ + ), +}; +#endif // !LANDSCAPE_MODE + +typedef struct { + char keydesc[6]; // this will be displayed on OLED + uint16_t keycode; // this is the keycode that will be sent when activted +} keycodedescType; + +static const keycodedescType PROGMEM keyselection[] = { + // list of key codes that will be scrolled through by encoder and description + {"TASK ", KC_TASK}, + {"PREV ", KC_MEDIA_PREV_TRACK}, + {"NEXT ", KC_MEDIA_NEXT_TRACK}, + {"PLAY ", KC_MEDIA_PLAY_PAUSE}, + {"PrtScm", KC_PSCR}, + {"ScrLk", KC_SCLN}, + {"Break", KC_PAUS}, + {"C-A-D", KC_CAD}, // Ctrl-Alt-Del + {"AltF4", KC_AF4}, + {"RESET", RESET}, // firmware flash mode +}; + +#define MAX_KEYSELECTION sizeof(keyselection)/sizeof(keyselection[0]) + +static uint8_t selectedkey_idx = 0; +static keycodedescType selectedkey_rec; + +static void set_selectedkey(uint8_t idx) { + // make a copy from PROGMEM + memcpy_P (&selectedkey_rec, &keyselection[idx], sizeof selectedkey_rec); + + //selectedkey_rec = keyselection[idx]; + +} + +void keyboard_post_init_keymap(void) { + // Call the keyboard post init code. + set_selectedkey(selectedkey_idx); +} + +bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case ENCFUNC: + if (record->event.pressed) { + selectedkey_rec.keycode == RESET ? reset_keyboard() : tap_code16(selectedkey_rec.keycode); // handle RESET code + } else { + // when keycode is released + } + break; + } + return true; +}; + + +#ifdef ENCODER_ENABLE // Encoder Functionality + void encoder_action_selectkey(bool clockwise) { + if ( clockwise ) { + if ( selectedkey_idx < MAX_KEYSELECTION-1) { + selectedkey_idx ++; + } else { + // do nothing + } + } else if ( !clockwise ) { + if ( selectedkey_idx > 0){ + selectedkey_idx --; + } else { + // do nothing + } + } + set_selectedkey(selectedkey_idx); + } + + bool encoder_update_user(uint8_t index, bool clockwise) { + #ifdef OLED_ENABLE + oled_clear(); + oled_render(); + #endif + uint8_t mods_state = get_mods(); + switch (index) { + case 0: // main primary encoder + switch(get_highest_layer(layer_state)){ // special handling per layer + case _FN1: // on Fn layer select what the encoder does when pressed + if (!mods_state) { + encoder_action_selectkey(clockwise); + break; + } else { + // continue to default + } + case _RGB: + if (!mods_state) { + encoder_action_rgb_hue(clockwise); + break; + } + default: // all other layers + if (mods_state & MOD_BIT(KC_RSFT) ) { // If you are holding R shift, encoder changes layers + encoder_action_layerchange(clockwise); + } else if (mods_state & MOD_BIT(KC_RCTL)) { // if holding Right Ctrl, navigate next/prev word + encoder_action_navword(clockwise); + } else if (mods_state & MOD_BIT(KC_RALT)) { // if holding Right Alt, change media next/prev track + encoder_action_mediatrack(clockwise); + } else { + encoder_action_volume(clockwise); // Otherwise it just changes volume + } + break; + } + break; + case 1: // optional secondary encoder + switch(get_highest_layer(layer_state)){ // special handling per layer + case _RGB: + if (!mods_state) { + encoder_action_rgb_mode(clockwise); + break; + } + default: // all other layers + encoder_action_mediatrack(clockwise); // Otherwise prev/next track + break; + } + } + return true; + } +#endif + + +#ifdef OLED_ENABLE + static void render_logo(void) { // Render MechWild "MW" Logo + static const char PROGMEM logo_1[] = {0x8A, 0x8B, 0x8C, 0x8D, 0x00}; + static const char PROGMEM logo_2[] = {0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0x00}; + static const char PROGMEM logo_3[] = {0xCA, 0xCB, 0xCC, 0xCD, 0x00}; + static const char PROGMEM logo_4[] = {0x20, 0x8E, 0x8F, 0x90, 0x00}; + oled_set_cursor(0,0); + oled_write_P(logo_1, false); + oled_set_cursor(0,1); + oled_write_P(logo_2, false); + oled_set_cursor(0,2); + oled_write_P(logo_3, false); + oled_set_cursor(0,3); + oled_write_P(logo_4, false); + } + + #ifdef LANDSCAPE_MODE + bool oled_task_user(void) { + + render_logo(); + oled_set_cursor(8,2); + switch(get_selected_layer()){ + case _BASE: + oled_write_P(PSTR("BASE"), false); + break; + case _FN1: + oled_write_P(PSTR("FN "), false); + oled_write(selectedkey_rec.keydesc, false); + break; + case _FN2: + oled_write_P(PSTR("FN2 "), false); + break; + case _FN3: + oled_write_P(PSTR("FN3 "), false); + break; + case _FN4: + oled_write_P(PSTR("FN4 "), false); + break; + case _RGB: + oled_write_P(PSTR("RGB "), false); + break; + default: + oled_write_P(PSTR(" ?? "), false); // Should never display, here as a catchall + } + oled_write_P(keymap_config.no_gui ? PSTR(" WL") : PSTR(" "), false); + oled_set_cursor(8,3); + if (get_highest_layer(layer_state) == get_selected_layer()) { + oled_write_P(PSTR(" "), false); + } else { + switch (get_highest_layer(layer_state)) { + case _BASE: + oled_write_P(PSTR("Temp BASE"), false); + break; + case _FN1: + oled_write_P(PSTR("Temp FN "), false); + oled_write(selectedkey_rec.keydesc, false); + break; + case _FN2: + oled_write_P(PSTR("Temp FN2 "), false); + break; + case _FN3: + oled_write_P(PSTR("Temp FN3 "), false); + break; + case _FN4: + oled_write_P(PSTR("Temp FN4 "), false); + break; + case _RGB: + oled_write_P(PSTR("Temp RGB "), false); + break; + default: + oled_write_P(PSTR("Temp ????"), false); // Should never display, here as a catchall + } + } + led_t led_state = host_keyboard_led_state(); + oled_set_cursor(8,0); + oled_write_P(PSTR(" JONAVIN "), false); + oled_set_cursor(8,1); + oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); + oled_write_P(led_state.caps_lock ? PSTR("CAPS ") : PSTR(" "), false); + oled_write_P(led_state.scroll_lock ? PSTR("SCR") : PSTR(" "), false); + return false; + } + #endif // LANDSCAPE_MODE + + // regular mode + #ifndef LANDSCAPE_MODE + oled_rotation_t oled_init_user(oled_rotation_t rotation) { + return OLED_ROTATION_270; // flips the display 270 degrees + } + + bool oled_task_user(void) { + render_logo(); + oled_set_cursor(0,5); + + oled_write_ln_P(PSTR("-JV-"), false); + oled_write_ln_P(PSTR(" "), false); + + bool showSelectedKey = false; + switch (get_highest_layer(layer_state)) { + case _BASE: + oled_write_ln_P(PSTR("BASE"), false); + break; + case _FN1: + oled_write_ln_P(PSTR("FN 1"), false); + showSelectedKey = true; + break; + case _FN2: + oled_write_ln_P(PSTR("FN 2"), false); + break; + case _FN3: + oled_write_ln_P(PSTR("FN 3"), false); + break; + case _FN4: + oled_write_ln_P(PSTR("FN 4"), false); + break; + case _RGB: + oled_write_ln_P(PSTR("RGB "), false); + break; + default: + oled_write_ln_P(PSTR(" ?? "), false); + } + if (showSelectedKey) oled_write_ln(selectedkey_rec.keydesc, false); + else oled_write_ln_P(PSTR(" "), false); + + // Host Keyboard LED Status + led_t led_state = host_keyboard_led_state(); + oled_set_cursor(0,11); + oled_write_ln_P(led_state.num_lock ? PSTR(" NUM") : PSTR(" "), false); + oled_write_ln_P(led_state.caps_lock ? PSTR(" CAP") : PSTR(" "), false); + oled_write_ln_P(led_state.scroll_lock ? PSTR(" SCR") : PSTR(" "), false); + return false; + } + #endif // !LANDSCAPE_MODE + + void suspend_power_down_user(void) { // shutdown oled when powered down to prevent OLED from showing Mercutio all the time + oled_off(); + rgblight_disable_noeeprom(); + } + + void suspend_wakeup_init_user(void) { + rgblight_enable_noeeprom(); + } +#endif diff --git a/keyboards/mechwild/murphpad/keymaps/jonavin/layout_landscape.h b/keyboards/mechwild/murphpad/keymaps/jonavin/layout_landscape.h new file mode 100644 index 000000000000..2a3dce21d4ad --- /dev/null +++ b/keyboards/mechwild/murphpad/keymaps/jonavin/layout_landscape.h @@ -0,0 +1,43 @@ +/* Copyright 2021 Jonavin Eng + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* First section contains the physical layout of the board and position of keys. + * + * Second is a two-dimensional array which represents the switch matrix. + */ + +#define LAYOUT_landscape( \ + k50, k40, k30, \ + k51, k41, k31, k20, k10, k00, \ + k52, k42, k32, k21, k11, k01, \ + k53, k43, k33, k22, k12, k02, \ + k54, k44, k34, k23, k13, k03, \ + \ + BACK00, BACK01, BACK02 \ +\ +) { \ + { BACK00, k00, k01, k02, k03 }, \ + { BACK01, k10, k11, k12, k13 }, \ + { BACK02, k20, k21, k22, k23 }, \ + { k30, k31, k32, k33, k34 }, \ + { k40, k41, k42, k43, k44 }, \ + { k50, k51, k52, k53, k54 } \ +} + diff --git a/keyboards/mechwild/murphpad/keymaps/jonavin/readme.md b/keyboards/mechwild/murphpad/keymaps/jonavin/readme.md new file mode 100644 index 000000000000..0e389a5c3763 --- /dev/null +++ b/keyboards/mechwild/murphpad/keymaps/jonavin/readme.md @@ -0,0 +1,76 @@ +Jonavin's Custom MurphPad Landscape Layout + +This allows you to use Murphpad in a horizontal/landscape orientation with extra layers + + - OLED has been rotated for landscape mode + - Keymap positions have been updated so it's easier to visualize the keymap in landscape + + [_BASE] = LAYOUT_landscape( + TT(_FN1), TT(_FN2), KC_MUTE, + + KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_PPLS, KC_BSPC, + KC_TAB, KC_P7, KC_P8, KC_P9, KC_PDOT, KC_RGUI, + KC_RSFT, KC_P4, KC_P5, KC_P6, KC_COMMA, KC_RCTL, + KC_P0, KC_P1, KC_P2, KC_P3, KC_PENT, KC_RALT, + + _______, _______, _______ + ), + +NOTE: VIA is enabled, but it will show it in the normal orientation until I build a landscape layout version + +Special Features + - FN1 layer has encoder selectable key codes and displayed on OLED + + Change these in keymap.c to assign your desired key selection + + static const keycodedescType PROGMEM keyselection[] = { + // list of key codes that will be scrollled through by encoder and description + {"TASK ", KC_TASK}, + {"PREV ", KC_MEDIA_PREV_TRACK}, + {"NEXT ", KC_MEDIA_NEXT_TRACK}, + {"PLAY ", KC_MEDIA_PLAY_PAUSE}, + {"PrtScm", KC_PSCR}, + {"ScrLk", KC_SCLN}, + {"Break", KC_PAUS}, + {"C-A-D", KC_CAD}, // Ctrl-Alt-Del + {"AltF4", KC_AF4}, + {"RESET", RESET}, // firmware flash mode + }; + + - Additional encoder functionality + - While holding R Shift, changes layers + - While holding R Ctrl, navigates next or previous word + - While holding R Alt, media next track or previous track + - Otherwise change volume up/dn + + +rules.mk OPTIONS - Active features from userspace + + - STARTUP_NUMLOCK_ON = yes + - turns on NUMLOCK by default + +DEFAULT LANDSCAPE MAPPING + +![image](https://user-images.githubusercontent.com/71780717/131718965-b20afef6-3bc5-49e4-952f-5755a9d6d539.png) + + +FN1 Layer 1 + +![image](https://user-images.githubusercontent.com/71780717/131719025-d41cbcd9-80b1-4a0a-abb5-55d878752dc6.png) + + +FN2 Layer 2 + +![image](https://user-images.githubusercontent.com/71780717/132967003-63268514-2ac3-4069-bca1-6d92992ca403.png) + + +RGB Layer 5 - Use Shift+Encoder to get to RGB layer 5 + +![image](https://user-images.githubusercontent.com/71780717/131719492-e2d05a75-3a7a-48ca-94a3-faa3ff891914.png) + +-------------- + +NORMAL / TRADITIONAL NON-LANDSCAPE NUMPAD LAYOUT + +![image](https://user-images.githubusercontent.com/71780717/132966975-3b463fb4-059f-42c5-b8b3-a3d35f4a0d6b.png) + diff --git a/keyboards/mechwild/murphpad/keymaps/jonavin/rules.mk b/keyboards/mechwild/murphpad/keymaps/jonavin/rules.mk new file mode 100644 index 000000000000..4887fb1bdca4 --- /dev/null +++ b/keyboards/mechwild/murphpad/keymaps/jonavin/rules.mk @@ -0,0 +1,5 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes + +STARTUP_NUMLOCK_ON = yes +ENCODER_DEFAULTACTIONS_ENABLE = no diff --git a/keyboards/mechwild/murphpad/keymaps/via/keymap.c b/keyboards/mechwild/murphpad/keymaps/via/keymap.c index f7d381940374..4f4f6d571af7 100644 --- a/keyboards/mechwild/murphpad/keymaps/via/keymap.c +++ b/keyboards/mechwild/murphpad/keymaps/via/keymap.c @@ -32,18 +32,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_MUTE, KC_P4, KC_P5, KC_P6, _______, MO(_FN1), KC_P1, KC_P2, KC_P3, KC_PENT, KC_BSPC, KC_P0, _______, KC_PDOT, _______, - + KC_F5, KC_F6, KC_F7 ), [_FN1] = LAYOUT( - _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SPI, RGB_HUI, _______, _______, RGB_RMOD, RGB_TOG, RGB_MOD, _______, _______, RGB_VAD, RGB_SPD, RGB_VAI, _______, _______, RGB_SAD, _______, RGB_SAI, _______, - + _______, _______, _______ ), @@ -54,7 +54,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - + _______, _______, _______ ), @@ -65,7 +65,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - + _______, _______, _______ ) @@ -93,7 +93,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { } #endif -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; // flips the display 270 degrees } @@ -113,7 +113,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { oled_write_P(logo_4, false); } - void oled_task_user(void) { + bool oled_task_user(void) { render_logo(); oled_set_cursor(0,6); @@ -141,5 +141,6 @@ bool encoder_update_user(uint8_t index, bool clockwise) { oled_write_ln_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); oled_write_ln_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); oled_write_ln_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); + return false; } #endif diff --git a/keyboards/mechwild/murphpad/rules.mk b/keyboards/mechwild/murphpad/rules.mk index 93ee10d1696f..a72c717a5349 100644 --- a/keyboards/mechwild/murphpad/rules.mk +++ b/keyboards/mechwild/murphpad/rules.mk @@ -7,18 +7,16 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = yes # Enable encoder -OLED_DRIVER_ENABLE = yes # Enable OLED Screen +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enable OLED Screen diff --git a/keyboards/mechwild/obe/config.h b/keyboards/mechwild/obe/config.h new file mode 100644 index 000000000000..03ff96878755 --- /dev/null +++ b/keyboards/mechwild/obe/config.h @@ -0,0 +1,149 @@ +/* +Copyright 2021 Kyle McCreery + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x6D77 // mw = "MechWild" +#define PRODUCT_ID 0x1707 +#define DEVICE_VER 0x0201 +#define MANUFACTURER MechWild +#define PRODUCT OrangeBoyErgo + +/* key matrix size */ +#define MATRIX_ROWS 7 +#define MATRIX_COLS 10 + +#define EEPROM_I2C_24LC64 + +/* + * 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 { A8, B15, B14, B13, B12, A15, B3 } +#define MATRIX_COL_PINS { B10, B1, B0, A7, A6, A5, A4, A3, A2, A1 } +#define UNUSED_PINS + +/* encoder pins */ +#define ENCODERS_PAD_A { B5 } +#define ENCODERS_PAD_B { B4 } + +/* encoder resolution */ +#define ENCODER_RESOLUTION 4 +#define TAP_CODE_DELAY 10 + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* status light pins */ +#define LED_NUM_LOCK_PIN B8 +#define LED_CAPS_LOCK_PIN B9 + +/* RGB settings, uncomment this define to enable RGB */ +#define RGB_DI_PIN A0 +#ifdef RGB_DI_PIN +# define RGBLED_NUM 10 +# define RGBLIGHT_HUE_STEP 8 +# define RGBLIGHT_SAT_STEP 8 +# define RGBLIGHT_VAL_STEP 8 +# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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 + +/* 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). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +#define BOOTMAGIC_LITE_ROW 5 +#define BOOTMAGIC_LITE_COLUMN 4 diff --git a/keyboards/mechwild/obe/f401/halconf.h b/keyboards/mechwild/obe/f401/halconf.h new file mode 100644 index 000000000000..b57977316a6c --- /dev/null +++ b/keyboards/mechwild/obe/f401/halconf.h @@ -0,0 +1,22 @@ +/* Copyright 2021 Kyle McCreery + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define HAL_USE_I2C TRUE + +#include_next + diff --git a/keyboards/mechwild/obe/f401/mcuconf.h b/keyboards/mechwild/obe/f401/mcuconf.h new file mode 100644 index 000000000000..da43021663c3 --- /dev/null +++ b/keyboards/mechwild/obe/f401/mcuconf.h @@ -0,0 +1,22 @@ +/* Copyright 2021 Kyle McCreery + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include_next + +#undef STM32_I2C_USE_I2C1 +#define STM32_I2C_USE_I2C1 TRUE diff --git a/keyboards/mechwild/obe/f401/rules.mk b/keyboards/mechwild/obe/f401/rules.mk new file mode 100644 index 000000000000..f1304648f085 --- /dev/null +++ b/keyboards/mechwild/obe/f401/rules.mk @@ -0,0 +1,5 @@ +# MCU name +MCU = STM32F401 + +# Bootloader selection +BOOTLOADER = stm32-dfu diff --git a/keyboards/mechwild/obe/f411/halconf.h b/keyboards/mechwild/obe/f411/halconf.h new file mode 100644 index 000000000000..b57977316a6c --- /dev/null +++ b/keyboards/mechwild/obe/f411/halconf.h @@ -0,0 +1,22 @@ +/* Copyright 2021 Kyle McCreery + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define HAL_USE_I2C TRUE + +#include_next + diff --git a/keyboards/mechwild/obe/f411/mcuconf.h b/keyboards/mechwild/obe/f411/mcuconf.h new file mode 100644 index 000000000000..a00131aca558 --- /dev/null +++ b/keyboards/mechwild/obe/f411/mcuconf.h @@ -0,0 +1,23 @@ +/* Copyright 2021 Kyle McCreery + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include_next + +#undef STM32_I2C_USE_I2C1 +#define STM32_I2C_USE_I2C1 TRUE + diff --git a/keyboards/mechwild/obe/f411/rules.mk b/keyboards/mechwild/obe/f411/rules.mk new file mode 100644 index 000000000000..b32a8b7f5bda --- /dev/null +++ b/keyboards/mechwild/obe/f411/rules.mk @@ -0,0 +1,5 @@ +# MCU name +MCU = STM32F411 + +# Bootloader selection +BOOTLOADER = stm32-dfu diff --git a/keyboards/mechwild/obe/info.json b/keyboards/mechwild/obe/info.json new file mode 100644 index 000000000000..c03b735df6f1 --- /dev/null +++ b/keyboards/mechwild/obe/info.json @@ -0,0 +1,81 @@ +{ + "keyboard_name": "MechWild OBE", + "url": "mechwild.com", + "maintainer": "Kyle McCreery", + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "k55", "x": 0.3, "y": 0}, + {"label": "k54", "x": 1.72, "y": 0}, + {"label": "k53", "x": 2.72, "y": 0}, + {"label": "k52", "x": 4.00, "y": 0}, + {"label": "k51", "x": 5, "y": 0}, + {"label": "k50", "x": 6, "y": 0}, + {"label": "k00", "x": 7, "y": 0}, + {"label": "k01", "x": 8, "y": 0}, + {"label": "k02", "x": 10.75, "y": 0}, + {"label": "k03", "x": 11.75, "y": 0}, + {"label": "k04", "x": 12.75, "y": 0}, + {"label": "k05", "x": 13.75, "y": 0}, + {"label": "k06", "x": 15, "y": 0}, + {"label": "k07", "x": 16, "y": 0}, + {"label": "k08", "x": 17, "y": 0}, + {"label": "k09", "x": 18, "y": 0}, + {"label": "k65", "x": 0.2, "y": 1}, + {"label": "k59", "x": 1.47, "y": 1, "w": 1.5}, + {"label": "k58", "x": 2.97, "y": 1}, + {"label": "k57", "x": 4.50, "y": 1}, + {"label": "k56", "x": 5.5, "y": 1}, + {"label": "k10", "x": 6.5, "y": 1}, + {"label": "k11", "x": 7.5, "y": 1}, + {"label": "k12", "x": 10.25, "y": 1}, + {"label": "k13", "x": 11.25, "y": 1}, + {"label": "k14", "x": 12.25, "y": 1}, + {"label": "k15", "x": 13.25, "y": 1}, + {"label": "k16", "x": 14.75, "y": 1}, + {"label": "k17", "x": 15.75, "y": 1}, + {"label": "k18", "x": 16.75, "y": 1}, + {"label": "k19", "x": 17.75, "y": 1, "w": 1.5}, + {"label": "k64", "x": 0.1, "y": 2}, + {"label": "k69", "x": 1.40, "y": 2, "w": 1.75}, + {"label": "k68", "x": 3.12, "y": 2}, + {"label": "k63", "x": 4.75, "y": 2}, + {"label": "k20", "x": 5.75, "y": 2}, + {"label": "k21", "x": 6.75, "y": 2}, + {"label": "k22", "x": 7.75, "y": 2}, + {"label": "k23", "x": 10.5, "y": 2}, + {"label": "k24", "x": 11.5, "y": 2}, + {"label": "k25", "x": 12.5, "y": 2}, + {"label": "k26", "x": 13.5, "y": 2}, + {"label": "k27", "x": 15.1, "y": 2}, + {"label": "k28", "x": 16.1, "y": 2}, + {"label": "k29", "x": 17.1, "y": 2, "w": 2.25}, + {"label": "k62", "x": 1.22, "y": 3, "w": 2.25}, + {"label": "k60", "x": 3.47, "y": 3}, + {"label": "k67", "x": 5.25, "y": 3}, + {"label": "k66", "x": 6.25, "y": 3}, + {"label": "k30", "x": 7.25, "y": 3}, + {"label": "k31", "x": 8.25, "y": 3}, + {"label": "k32", "x": 10, "y": 3}, + {"label": "k33", "x": 11, "y": 3}, + {"label": "k34", "x": 12, "y": 3}, + {"label": "k35", "x": 13, "y": 3}, + {"label": "k36", "x": 14.75, "y": 3}, + {"label": "k37", "x": 15.75, "y": 3}, + {"label": "k38", "x": 16.75, "y": 3}, + {"label": "k39", "x": 17.75, "y": 3, "w": 1.75}, + {"label": "k61", "x": 1.25, "y": 4, "w": 1.25}, + {"label": "k40", "x": 2.72, "y": 4, "w": 1.25}, + {"label": "k41", "x": 5.25, "y": 4, "w": 1.25}, + {"label": "k42", "x": 6.50, "y": 4, "w": 2.25}, + {"label": "k43", "x": 8.75, "y": 4}, + {"label": "k44", "x": 10, "y": 4, "w": 2.75}, + {"label": "k45", "x": 12.75, "y": 4}, + {"label": "k46", "x": 14.75, "y": 4}, + {"label": "k47", "x": 15.75, "y": 4}, + {"label": "k48", "x": 16.75, "y": 4}, + {"label": "k49", "x": 17.75, "y": 4} + ] + } + } +} diff --git a/keyboards/mechwild/obe/keymaps/default/keymap.c b/keyboards/mechwild/obe/keymaps/default/keymap.c new file mode 100644 index 000000000000..fd91890ae063 --- /dev/null +++ b/keyboards/mechwild/obe/keymaps/default/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2021 Kyle McCreery + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + #include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN1, + _FN2, + _FN3 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT( + KC_MUTE, 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_TRNS, KC_BSPC, + KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_PGDN, MO(1), 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_UP, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, MO(2), KC_LEFT, KC_DOWN, KC_RGHT + ), + [_FN1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; diff --git a/keyboards/mechwild/obe/keymaps/jonavin/config.h b/keyboards/mechwild/obe/keymaps/jonavin/config.h new file mode 100644 index 000000000000..8a812f1550c9 --- /dev/null +++ b/keyboards/mechwild/obe/keymaps/jonavin/config.h @@ -0,0 +1,39 @@ +/* Copyright 2021 Jonavin Eng + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define TAPPING_TOGGLE 2 +// TT set to two taps + +/* Handle GRAVESC combo keys */ +#define GRAVE_ESC_ALT_OVERRIDE + //Always send Escape if Alt is pressed +#define GRAVE_ESC_CTRL_OVERRIDE + //Always send Escape if Control is pressed + +#define TAPPING_TERM 180 + +#ifdef RGBLIGHT_ENABLE + // Redefine number of LED + #ifdef RGBLED_NUM + #undef RGBLED_NUM + #endif // DEBUG + #define RGBLED_NUM 20 + + #define RGBLIGHT_LAYERS + #define RGBLIGHT_SLEEP +#endif // RGBLIGHT_ENABLE diff --git a/keyboards/mechwild/obe/keymaps/jonavin/keymap.c b/keyboards/mechwild/obe/keymaps/jonavin/keymap.c new file mode 100644 index 000000000000..27d09c718d95 --- /dev/null +++ b/keyboards/mechwild/obe/keymaps/jonavin/keymap.c @@ -0,0 +1,119 @@ +/* Copyright 2021 Kyle McCreery + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +#include "jonavin.h" + +#ifdef RGBLIGHT_ENABLE + // Custom RGB Colours + #define HSV_OBE_BOW 180, 100, 100 // colour for matching keycaps +#endif // RGBLIGHT_ENABLE + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT( + KC_TSTOG,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_BSLS, KC_DEL, + 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, TT(_RAISE), 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_LSFTCAPSWIN,KC_Z, KC_X, KC_C, KC_V, KC_B, LT(_LOWER,KC_B), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_SFTUP,KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_FN1), KC_RAISESPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_FN1] = LAYOUT( + KC_MUTE, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_INS, + KC_HOME, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_NO, KC_NO, KC_NO, RESET, + KC_END, KC_CAPS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NLCK, KC_NO, KC_NO, KC_NO, KC_NO, KC_PGUP, KC_TRNS, + KC_TRNS,KC_WINLCK,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_HOME, KC_PGDN, KC_END + ), + [_LOWER] = LAYOUT( + EEP_RST, KC_TILD, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_TRNS, KC_DEL, + RGB_HUI, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, EMO_TEARS, EMO_SAD, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_TOG, + RGB_HUD, KC_NO, KC_NO, EMO_SHRUG,KC_NO, KC_NO, KC_NO, KC_NO, EMO_JOY, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, + KC_NO, KC_NO, KC_NO, EMO_CONFUSE,KC_NO,KC_NO,KC_TRNS,EMO_NERVOUS, KC_NO, KC_NO, KC_NO, KC_NO, RGB_MOD, KC_TRNS, + KC_TRNS, KC_APP, KC_TRNS, KC_BSPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SPD, RGB_RMOD,RGB_SPI + ), + [_RAISE] = LAYOUT( + KC_NO, KC_GRV, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_P7, KC_P8, KC_P9, KC_P0, KC_PMNS, KC_PPLS, KC_PSLS, KC_DEL, + KC_VOLU, KC_NO, KC_HOME,KC_UP, KC_END, KC_PGUP, KC_NO, KC_TAB, KC_P4, KC_P5, KC_P6, KC_NO, KC_NO, KC_NO, KC_PEQL, + KC_VOLD,TT(_RAISE),KC_LEFT,KC_DOWN,KC_RGHT, KC_PGDN, KC_NO, KC_NO, KC_P1, KC_P2, KC_P3, KC_NO, KC_PAST, KC_PENT, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_P0, KC_00, KC_NO, KC_PDOT, KC_PSLS, CT_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_BSPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, CT_HOME, CT_PGDN, CT_END + ) +}; + +#ifdef RGBLIGHT_ENABLE + + enum custom_rgblight_layers + { + _rgbWINLOCK, _rgbFN, + _rgbLOWER, + _rgbRAISE + }; + + // Optional RGB Light Mapping Zones {LED Posiiton, Number of LEDs, Colour} + const rgblight_segment_t PROGMEM _rgb_winlock_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {1, 3, HSV_RED}, + {15, 3, HSV_RED} + ); + const rgblight_segment_t PROGMEM _rgb_fn_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {6, 6, HSV_PURPLE} + ); + // Light LEDs 9 & 10 in cyan when keyboard layer 1 is active + const rgblight_segment_t PROGMEM _rgb_lower_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {4, 10, HSV_YELLOW} + ); + + const rgblight_segment_t PROGMEM _rgb_raise_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {3, 5, HSV_GREEN}, + {10, 5, HSV_GREEN} + ); + + const rgblight_segment_t* const PROGMEM _rgb_layers[] = RGBLIGHT_LAYERS_LIST( + _rgb_winlock_layer, + _rgb_fn_layer, + _rgb_lower_layer, + _rgb_raise_layer + ); + + bool led_update_user(led_t led_state) { + rgblight_set_layer_state(_rgbWINLOCK, keymap_config.no_gui); + writePin(LED_CAPS_LOCK_PIN, led_state.caps_lock); + #ifdef INVERT_NUMLOCK_INDICATOR + writePin(LED_NUM_LOCK_PIN, !led_state.num_lock); // inverse numlock indicator override + #else + writePin(LED_NUM_LOCK_PIN, led_state.num_lock); // normal, light LED when numlock on + #endif // INVERT_NUMLOCK_INDICATOR + return false; + } + + layer_state_t layer_state_set_user(layer_state_t state) { + rgblight_set_layer_state(_rgbFN, layer_state_cmp(state, _FN1)); + rgblight_set_layer_state(_rgbLOWER, layer_state_cmp(state, _LOWER)); + rgblight_set_layer_state(_rgbRAISE, layer_state_cmp(state, _RAISE)); + return state; + } +#endif // RGBLIGHT_ENABLE + +void keyboard_post_init_keymap(void) { + // keyboard_post_init_user() moved to userspace + #ifdef RGBLIGHT_ENABLE + rgblight_enable_noeeprom(); + rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); + rgblight_sethsv_noeeprom(HSV_OBE_BOW); // Default startup colour + rgblight_layers = _rgb_layers; + #endif +} + diff --git a/keyboards/mechwild/obe/keymaps/jonavin/readme.md b/keyboards/mechwild/obe/keymaps/jonavin/readme.md new file mode 100644 index 000000000000..ec17981cafae --- /dev/null +++ b/keyboards/mechwild/obe/keymaps/jonavin/readme.md @@ -0,0 +1,54 @@ +# Jonavin's MechWild Orange Boy Ergo keymap + +--> This keymap makes use of user/jonavin userspace + +Features + - Split spacebars, Split Backspace + - Inverted Num Lock indicator (LED on when num lock if off) + - RGB Winlock indicator (requires LED stripto be installed) + - RGB Layer indicators: FN/MO1 - Purple; LOWER/MO2 - Yellow; RAISE/MO3/NumPad - Green + - quick demo https://youtu.be/gR1awbsouLk + +- Add PrtScr, Scroll Lock, Break, NumLock to Fn layer +- Implement Win key lock using Fn+Win +- Layer 2 (LOWER) when right B is held -- for emoticons +- Layer 2 RGB functions, and EEPROM Reset +- Layer 3 (RAISE) mod on Caps Lock with double-tap to switch to this layer, double tap to switch back + - provides arrows on WASD and additional nav keys + right hand numpad with 00; an be used for Alt Code entry + - left spacebar Backspace +- add double tap of Left Shift to toggle Caps Lock +- Up arrow is also Shift when held +- Pushing the encoder switches the default encoder scroll between volume control and Alt-Tab + + +rules.mk OPTIONS - Active features from userspace +-------------------------------------------------- + +STARTUP_NUMLOCK_ON = yes +- turns on NUMLOCK by default + +ENCODER_DEFAULTACTIONS_ENABLE = yes +- Enables default encoder funtions + - holding Left shift, change layers + - holding right shift, Navigate page up/down + - holding Left Ctrl, navigate prev/next word + - holding Left Alt, change media prev/next track + - default is change volume + +TD_LSFT_CAPSLOCK_ENABLE = yes + - This will enable double tap on Left Shift to toggle CAPSLOCK when using KC_LSFTCAPS + +IDLE_TIMEOUT_ENABLE = yes + - Enables Timer functionality; for RGB idle timeouts that can be changed dynamically + +EMOTICON_ENABLE + - adds EMO_ keycodes for text emojis + +INVERT_NUMLOCK_INDICATOR + - inverts the Num lock indicator, LED is on when num lokc is off + +ALTTAB_SCROLL_ENABLE + - bind KS_TSTOG to a different key to change how this toggle happens + +## All layers diagram +![image](https://user-images.githubusercontent.com/71780717/137356366-6b23c71b-9499-473e-a1e3-c65644135fc6.png) diff --git a/keyboards/mechwild/obe/keymaps/jonavin/rules.mk b/keyboards/mechwild/obe/keymaps/jonavin/rules.mk new file mode 100644 index 000000000000..6a9acf5d0712 --- /dev/null +++ b/keyboards/mechwild/obe/keymaps/jonavin/rules.mk @@ -0,0 +1,14 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes +RGBLIGHT_ENABLE = yes + +MOUSEKEY_ENABLE = no +TAP_DANCE_ENABLE = yes + +TD_LSFT_CAPSLOCK_ENABLE = yes +STARTUP_NUMLOCK_ON = yes +ENCODER_DEFAULTACTIONS_ENABLE = yes +EMOTICON_ENABLE = yes +INVERT_NUMLOCK_INDICATOR = yes + +ALTTAB_SCROLL_ENABLE = yes diff --git a/keyboards/mechwild/obe/keymaps/via/keymap.c b/keyboards/mechwild/obe/keymaps/via/keymap.c new file mode 100644 index 000000000000..23b93099018a --- /dev/null +++ b/keyboards/mechwild/obe/keymaps/via/keymap.c @@ -0,0 +1,57 @@ +/* Copyright 2021 Kyle McCreery + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + #include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN1, + _FN2, + _FN3 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT( + KC_MUTE, 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_TRNS, KC_BSPC, + KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_PGDN, MO(1), 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_UP, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, MO(2), KC_LEFT, KC_DOWN, KC_RGHT + ), + [_FN1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [_FN2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [_FN3] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/mechwild/obe/keymaps/via/rules.mk b/keyboards/mechwild/obe/keymaps/via/rules.mk new file mode 100644 index 000000000000..16d33cd89fe4 --- /dev/null +++ b/keyboards/mechwild/obe/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes + diff --git a/keyboards/mechwild/obe/obe.c b/keyboards/mechwild/obe/obe.c new file mode 100644 index 000000000000..8612764ae5a1 --- /dev/null +++ b/keyboards/mechwild/obe/obe.c @@ -0,0 +1,39 @@ +/* Copyright 2021 Kyle McCreery + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "obe.h" + +void board_init(void) { + // B9 is configured as I2C1_SDA in the board file; that function must be + // disabled before using B7 as I2C1_SDA. + setPinInputHigh(B9); +} + +#ifdef ENCODER_ENABLE +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + switch (index) { + case 0: + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + break; + } + return true; +} +#endif diff --git a/keyboards/mechwild/obe/obe.h b/keyboards/mechwild/obe/obe.h new file mode 100644 index 000000000000..8c57aa283b89 --- /dev/null +++ b/keyboards/mechwild/obe/obe.h @@ -0,0 +1,43 @@ +/* Copyright 2021 Kyle McCreery + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + k55, k54, k53, k52, k51, k50, k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, \ + k65, k59, k58, k57, k56, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, \ + k64, k69, k68, k63, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, \ + k62, k60, k67, k66, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, \ + k61, k40, k41, k42, k43, k44, k45, k46, k47, k48, k49 \ +) { \ + { 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 } \ +} diff --git a/keyboards/mechwild/obe/readme.md b/keyboards/mechwild/obe/readme.md new file mode 100644 index 000000000000..f03ed03a9245 --- /dev/null +++ b/keyboards/mechwild/obe/readme.md @@ -0,0 +1,19 @@ +# OrangeBoyErgo (OBE) + +![obe](https://i.imgur.com/bzqi2XOh.png) + +An affordable Alice-like keyboard kit powered by the STM32 Blackpill. + +* Keyboard Maintainer: [Kyle McCreery](https://github.com/kylemccreery) +* Hardware Supported: OBE v2.1 +* Hardware Availability: [OBE on MechWild](https://mechwild.com/product/orange-boy-ergo/) + +Make example for this keyboard (after setting up your build environment): + + make mechwild/obe:default + +Flashing example for this keyboard: + + make mechwild/obe:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/mechwild/obe/rules.mk b/keyboards/mechwild/obe/rules.mk new file mode 100644 index 000000000000..5f8b1daa391e --- /dev/null +++ b/keyboards/mechwild/obe/rules.mk @@ -0,0 +1,18 @@ +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes # Encoder Enabled + +EEPROM_DRIVER = i2c + +DEFAULT_FOLDER = mechwild/obe/f401 diff --git a/keyboards/mehkee96/info.json b/keyboards/mehkee96/info.json index 75da3e591db9..050adaa767f4 100644 --- a/keyboards/mehkee96/info.json +++ b/keyboards/mehkee96/info.json @@ -2,8 +2,6 @@ "keyboard_name": "mehkee96", "url": "", "maintainer": "qmk", - "width": 19, - "height": 6, "layouts": { "LAYOUT": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, {"label":"F2", "x":2, "y":0}, {"label":"F3", "x":3, "y":0}, {"label":"F4", "x":4, "y":0}, {"label":"F5", "x":5, "y":0}, {"label":"F6", "x":6, "y":0}, {"label":"F7", "x":7, "y":0}, {"label":"F8", "x":8, "y":0}, {"label":"F9", "x":9, "y":0}, {"label":"F10", "x":10, "y":0}, {"label":"F11", "x":11, "y":0}, {"label":"F12", "x":12, "y":0}, {"label":"Print Screen", "x":13, "y":0}, {"label":"Delete", "x":14, "y":0}, {"label":"Home", "x":15, "y":0}, {"label":"End", "x":16, "y":0}, {"label":"Page Up", "x":17, "y":0}, {"label":"Page Down", "x":18, "y":0}, {"label":"`", "x":0, "y":1}, {"label":"1", "x":1, "y":1}, {"label":"2", "x":2, "y":1}, {"label":"3", "x":3, "y":1}, {"label":"4", "x":4, "y":1}, {"label":"5", "x":5, "y":1}, {"label":"6", "x":6, "y":1}, {"label":"7", "x":7, "y":1}, {"label":"8", "x":8, "y":1}, {"label":"9", "x":9, "y":1}, {"label":"0", "x":10, "y":1}, {"label":"-", "x":11, "y":1}, {"label":"=", "x":12, "y":1}, {"label":"Backspace", "x":13, "y":1, "w":2}, {"label":"Num Lock", "x":15, "y":1}, {"label":"P/", "x":16, "y":1}, {"label":"P*", "x":17, "y":1}, {"label":"P-", "x":18, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"[", "x":11.5, "y":2}, {"label":"]", "x":12.5, "y":2}, {"label":"\\", "x":13.5, "y":2, "w":1.5}, {"label":"P7", "x":15, "y":2}, {"label":"P8", "x":16, "y":2}, {"label":"P9", "x":17, "y":2}, {"label":"P+", "x":18, "y":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":";", "x":10.75, "y":3}, {"label":"'", "x":11.75, "y":3}, {"label":"Enter", "x":12.75, "y":3, "w":2.25}, {"label":"P4", "x":15, "y":3}, {"label":"P5", "x":16, "y":3}, {"label":"P6", "x":17, "y":3}, {"label":"P+", "x":18, "y":3}, {"label":"Shift", "x":0, "y":4, "w":2.25}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":",", "x":9.25, "y":4}, {"label":".", "x":10.25, "y":4}, {"label":"/", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"label":"Up", "x":14, "y":4}, {"label":"P1", "x":15, "y":4}, {"label":"P2", "x":16, "y":4}, {"label":"P3", "x":17, "y":4}, {"label":"PEnter", "x":18, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5}, {"label":"Win", "x":11, "y":5}, {"label":"Fn", "x":12, "y":5}, {"label":"Left", "x":13, "y":5}, {"label":"Down", "x":14, "y":5}, {"label":"Right", "x":15, "y":5}, {"label":"P0", "x":16, "y":5}, {"label":"P.", "x":17, "y":5}, {"label":"PEnter", "x":18, "y":5}] diff --git a/keyboards/mehkee96/mehkee96.h b/keyboards/mehkee96/mehkee96.h index 1e1eb44a642b..a92e7ffe0f84 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/mehkee96/rules.mk b/keyboards/mehkee96/rules.mk index 91c9dc0df5c5..171f3a5734d8 100644 --- a/keyboards/mehkee96/rules.mk +++ b/keyboards/mehkee96/rules.mk @@ -2,19 +2,12 @@ MCU = atmega32a # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 diff --git a/keyboards/meira/config.h b/keyboards/meira/config.h index 4d864a8a7682..999ab1bf8a30 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -44,5 +43,3 @@ along with this program. If not, see . #define RGBLED_NUM 15 // Number of LEDs #endif - -#endif diff --git a/keyboards/meira/featherble/config.h b/keyboards/meira/featherble/config.h index e8db87acbb3a..94bef3b3305e 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 . */ -#ifndef FEATHERBLECONFIG_H -#define FEATHERBLECONFIG_H +#pragma once #include "config_common.h" @@ -32,7 +31,8 @@ along with this program. If not, see . */ #define MATRIX_ROW_PINS { F7, F6, F5, F4 } // Column pins to demux in LSB order -#define MATRIX_COL_PINS { C7, B7, B6, C6 } +#define MATRIX_COL_PINS { C7, B7, B6, C6, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN } +#define MATRIX_COL_PINS_SCANNED { C7, B7, B6, C6 } #define LED_EN_PIN D2 #define UNUSED_PINS @@ -78,54 +78,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -143,25 +95,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - -#endif diff --git a/keyboards/meira/featherble/featherble.c b/keyboards/meira/featherble/featherble.c index 560f0db29726..63ade2190492 100644 --- a/keyboards/meira/featherble/featherble.c +++ b/keyboards/meira/featherble/featherble.c @@ -1 +1,17 @@ +/* Copyright 2017 Cole Markham, WoodKeys.click + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #include "meira.h" diff --git a/keyboards/meira/featherble/featherble.h b/keyboards/meira/featherble/featherble.h index b7599b994119..eab7c639b90f 100644 --- a/keyboards/meira/featherble/featherble.h +++ b/keyboards/meira/featherble/featherble.h @@ -1,9 +1,19 @@ -#ifndef FEATHERBLE_H -#define FEATHERBLE_H +/* Copyright 2017 Cole Markham, WoodKeys.click + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ -#include "../meira.h" +#pragma once -#include "quantum.h" - - -#endif +#include "meira.h" diff --git a/keyboards/meira/featherble/rules.mk b/keyboards/meira/featherble/rules.mk index b0295ced7779..d3e985e8c239 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/info.json b/keyboards/meira/info.json index ea48f0df1929..de9ce42f8e37 100644 --- a/keyboards/meira/info.json +++ b/keyboards/meira/info.json @@ -2,8 +2,9 @@ "keyboard_name": "Meira", "url": "", "maintainer": "colemarkham", - "width": 12, - "height": 4, + "layout_aliases": { + "LAYOUT": "LAYOUT_ortho_4x12" + }, "layouts": { "LAYOUT_ortho_4x12": { "layout": [ diff --git a/keyboards/meira/issi.h b/keyboards/meira/issi.h index 51777f6ee385..74379ddbc8ff 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/keymaps/cole/keymap.c b/keyboards/meira/keymaps/cole/keymap.c index 14581aa57297..94806c5da2bf 100644 --- a/keyboards/meira/keymaps/cole/keymap.c +++ b/keyboards/meira/keymaps/cole/keymap.c @@ -56,7 +56,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |Adjust| Ctrl | Ctrl | Alt |Lower | Cmd |Space |Raise | Left | Down | Up |Right | * `-----------------------------------------------------------------------------------' */ - [_QWERTY] = KEYMAP( \ + [_QWERTY] = LAYOUT( \ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \ @@ -74,7 +74,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | Next | Vol- | Vol+ | Play | * `-----------------------------------------------------------------------------------' */ - [_LOWER] = KEYMAP( \ + [_LOWER] = LAYOUT( \ _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \ KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, KC_QUOT, \ @@ -92,7 +92,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | Home | PgUp | PgDn | End | * `-----------------------------------------------------------------------------------' */ - [_RAISE] = KEYMAP( \ + [_RAISE] = LAYOUT( \ _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, \ @@ -110,7 +110,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | | | | * `-----------------------------------------------------------------------------------' */ - [_ADJUST] = KEYMAP( \ + [_ADJUST] = LAYOUT( \ RESET, _______, _______, KC_MRWD, KC_MPLY, KC_MFFD, KC_PSCR, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, \ BL_STEP, RGB_MOD, _______, AU_ON, AU_OFF, _______, _______, _______, _______, _______, _______, _______, \ BL_TOGG, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ diff --git a/keyboards/meira/keymaps/default/keymap.c b/keyboards/meira/keymaps/default/keymap.c index 5c80df0f061c..c4d6759ea77c 100644 --- a/keyboards/meira/keymaps/default/keymap.c +++ b/keyboards/meira/keymaps/default/keymap.c @@ -17,24 +17,26 @@ #include "lighting.h" #ifdef RGBLIGHT_ENABLE -//Following line allows macro to read current RGB settings +// Following line allows macro to read current RGB settings extern rgblight_config_t rgblight_config; #endif -#define _QWERTY 0 -#define _COLEMAK 1 -#define _DVORAK 2 -#define _LOWER 3 -#define _RAISE 4 -#define _ADJUST 16 +enum layer_names { + _QWERTY, + _COLEMAK, + _DVORAK, + _LOWER, + _RAISE, + _ADJUST +}; enum custom_keycodes { - QWERTY = SAFE_RANGE, - COLEMAK, - DVORAK, - LOWER, - RAISE, - ADJUST, + QWERTY = SAFE_RANGE, + COLEMAK, + DVORAK, + LOWER, + RAISE, + ADJUST }; #ifdef AUDIO_ENABLE @@ -42,269 +44,256 @@ enum custom_keycodes { float tone_my_startup[][2] = SONG(ODE_TO_JOY); float tone_my_goodbye[][2] = SONG(ROCK_A_BYE_BABY); -float tone_qwerty[][2] = SONG(QWERTY_SOUND); -float tone_dvorak[][2] = SONG(DVORAK_SOUND); -float tone_colemak[][2] = SONG(COLEMAK_SOUND); +float tone_qwerty[][2] = SONG(QWERTY_SOUND); +float tone_dvorak[][2] = SONG(DVORAK_SOUND); +float tone_colemak[][2] = SONG(COLEMAK_SOUND); #endif /* AUDIO_ENABLE */ // define variables for reactive RGB bool TOG_STATUS = false; -int RGB_current_mode; +int RGB_current_mode; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Qwerty - * ,-----------------------------------------------------------------------------------. - * | Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Tab | A | S | D | F | G | H | J | K | L | ; | ' | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * |Adjust| Ctrl | Ctrl | Alt |Lower | Cmd |Space |Raise | Left | Down | Up |Right | - * `-----------------------------------------------------------------------------------' - */ - [_QWERTY] = KEYMAP( \ - KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \ - KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \ - ADJUST, KC_LCTL, KC_LALT, KC_LALT, LOWER, KC_LGUI, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ - ), + /* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Tab | A | S | D | F | G | H | J | K | L | ; | ' | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |Adjust| Ctrl | Alt | Alt |Lower | Cmd |Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ + [_QWERTY] = LAYOUT( \ + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \ + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \ + ADJUST, KC_LCTL, KC_LALT, KC_LALT, LOWER, KC_LGUI, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ + ), - /* Colemak - * ,-----------------------------------------------------------------------------------. - * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc | A | R | S | T | D | H | N | E | I | O | " | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | - * `-----------------------------------------------------------------------------------' - */ - [_COLEMAK] = KEYMAP( \ - KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \ - KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \ - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \ - ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ - ), + /* Colemak + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ + [_COLEMAK] = LAYOUT( \ + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \ + KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \ + ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ + ), - /* Dvorak - * ,-----------------------------------------------------------------------------------. - * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc | A | O | E | U | I | D | H | T | N | S | / | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | - * `-----------------------------------------------------------------------------------' - */ - [_DVORAK] = KEYMAP( \ - KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, \ - KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \ - KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , \ - ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ - ), + /* Dvorak + * ,-----------------------------------------------------------------------------------. + * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | O | E | U | I | D | H | T | N | S | / | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ + [_DVORAK] = LAYOUT( \ + KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, \ + KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \ + KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT, \ + ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ + ), - /* Lower - * ,-----------------------------------------------------------------------------------. - * | | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | ~ | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | | \ | | | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | Next | Vol- | Vol+ | Play | - * `-----------------------------------------------------------------------------------' - */ - [_LOWER] = KEYMAP( \ - _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \ - KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \ - _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, KC_QUOT, \ - _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END \ - ), + /* Lower + * ,-----------------------------------------------------------------------------------. + * | | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | ~ | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | | \ | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ + [_LOWER] = LAYOUT( \ + _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \ + KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \ + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), _______, _______, KC_QUOT, \ + _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END \ + ), - /* Raise - * ,-----------------------------------------------------------------------------------. - * | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | ` | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | Home | PgUp | PgDn | End | - * `-----------------------------------------------------------------------------------' - */ - [_RAISE] = KEYMAP( \ - _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \ - KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \ - _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END \ - ), + /* Raise + * ,-----------------------------------------------------------------------------------. + * | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | ` | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | Home | PgUp | PgDn | End | + * `-----------------------------------------------------------------------------------' + */ + [_RAISE] = LAYOUT( \ + _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \ + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \ + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END \ + ), - /* Adjust (Lower + Raise) - * ,-----------------------------------------------------------------------------------. - * | | Reset| | | | | | | | | | Del | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | | | | | | | | | | | | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | - * `-----------------------------------------------------------------------------------' - */ - [_ADJUST] = KEYMAP( \ - BL_TOGG, RESET, _______, KC_MRWD, KC_MPLY, KC_MFFD, KC_PSCR, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, \ - BL_STEP, RGB_MOD, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, KC_PSCR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ - ) + /* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | | Reset| | | | | | | | | | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ + [_ADJUST] = LAYOUT( \ + BL_TOGG, RESET, _______, KC_MRWD, KC_MPLY, KC_MFFD, KC_PSCR, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, \ + BL_STEP, RGB_MOD, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, KC_PSCR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ + ) }; // Setting ADJUST layer RGB back to default void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) { - if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) { + if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) { #ifdef RGBLIGHT_ENABLE - rgblight_mode(RGB_current_mode); + rgblight_mode(RGB_current_mode); #endif - layer_on(layer3); - } else { - layer_off(layer3); - } -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - + layer_on(layer3); + } else { + layer_off(layer3); + } } bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case QWERTY: - if (record->event.pressed) { - #ifdef AUDIO_ENABLE - PLAY_SONG(tone_qwerty); - #endif -// persistent_default_layer_set(1UL<<_QWERTY); - } - return false; - break; - case COLEMAK: - if (record->event.pressed) { - #ifdef AUDIO_ENABLE - PLAY_SONG(tone_colemak); - #endif -// persistent_default_layer_set(1UL<<_COLEMAK); - } - return false; - break; - case DVORAK: - if (record->event.pressed) { - #ifdef AUDIO_ENABLE - PLAY_SONG(tone_dvorak); - #endif -// persistent_default_layer_set(1UL<<_DVORAK); - } - return false; - 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 - //uses another variable that would be set to true after the first time a reactive key is pressed. - if (TOG_STATUS) { //TOG_STATUS checks is another reactive key currently pressed, only changes RGB mode if returns false - } else { - TOG_STATUS = !TOG_STATUS; -#ifdef RGBLIGHT_ENABLE - rgblight_mode(16); + switch (keycode) { + case QWERTY: + if (record->event.pressed) { +#ifdef AUDIO_ENABLE + PLAY_SONG(tone_qwerty); #endif + // persistent_default_layer_set(1UL<<_QWERTY); } - layer_on(_LOWER); - update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); - } else { + return false; + break; + case COLEMAK: + if (record->event.pressed) { +#ifdef AUDIO_ENABLE + PLAY_SONG(tone_colemak); +#endif + // persistent_default_layer_set(1UL<<_COLEMAK); + } + return false; + break; + case DVORAK: + if (record->event.pressed) { +#ifdef AUDIO_ENABLE + PLAY_SONG(tone_dvorak); +#endif + // persistent_default_layer_set(1UL<<_DVORAK); + } + return false; + 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 + // uses another variable that would be set to true after the first time a reactive key is pressed. + if (TOG_STATUS) { // TOG_STATUS checks is another reactive key currently pressed, only changes RGB mode if returns false + } else { + TOG_STATUS = !TOG_STATUS; #ifdef RGBLIGHT_ENABLE - rgblight_mode(RGB_current_mode); // revert RGB to initial mode prior to RGB mode change + rgblight_mode(16); #endif - TOG_STATUS = false; - layer_off(_LOWER); - update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); - } - return false; - break; - case RAISE: - if (record->event.pressed) { - //not sure how to have keyboard check mode and set it to a variable, so my work around - //uses another variable that would be set to true after the first time a reactive key is pressed. - if (TOG_STATUS) { //TOG_STATUS checks is another reactive key currently pressed, only changes RGB mode if returns false + } + layer_on(_LOWER); + update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); } else { - TOG_STATUS = !TOG_STATUS; #ifdef RGBLIGHT_ENABLE - rgblight_mode(15); + rgblight_mode(RGB_current_mode); // revert RGB to initial mode prior to RGB mode change #endif + TOG_STATUS = false; + layer_off(_LOWER); + update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); } - layer_on(_RAISE); - update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); - } else { + return false; + break; + case RAISE: + if (record->event.pressed) { + // not sure how to have keyboard check mode and set it to a variable, so my work around + // uses another variable that would be set to true after the first time a reactive key is pressed. + if (TOG_STATUS) { // TOG_STATUS checks is another reactive key currently pressed, only changes RGB mode if returns false + } else { + TOG_STATUS = !TOG_STATUS; +#ifdef RGBLIGHT_ENABLE + rgblight_mode(15); +#endif + } + layer_on(_RAISE); + update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); + } else { #ifdef RGBLIGHT_ENABLE - rgblight_mode(RGB_current_mode); // revert RGB to initial mode prior to RGB mode change + rgblight_mode(RGB_current_mode); // revert RGB to initial mode prior to RGB mode change #endif - layer_off(_RAISE); - TOG_STATUS = false; - update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); - } - return false; - break; - case ADJUST: - // FIXME add RGB feedback - if (record->event.pressed) { - layer_on(_ADJUST); - } else { - layer_off(_ADJUST); - } - return false; - break; - case BL_TOGG: + layer_off(_RAISE); + TOG_STATUS = false; + update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case ADJUST: + // FIXME add RGB feedback + if (record->event.pressed) { + layer_on(_ADJUST); + } else { + layer_off(_ADJUST); + } + return false; + break; + case BL_TOGG: #ifdef BACKLIGHT_ENABLE - if (record->event.pressed) { - print("Enabling backlight\n"); - backlight_init_ports(); - } + if (record->event.pressed) { + print("Enabling backlight\n"); + backlight_init_ports(); + } #endif - return false; - break; - case BL_STEP: - if (record->event.pressed) { - print("Stepping backlight\n"); + return false; + break; + case BL_STEP: + if (record->event.pressed) { + print("Stepping backlight\n"); #ifdef BACKLIGHT_ENABLE - print("Really stepping backlight\n"); - backlight_step(); + print("Really stepping backlight\n"); + backlight_step(); #endif - - } - return false; - break; - //led operations - RGB mode change now updates the RGB_current_mode to allow the right RGB mode to be set after reactive keys are released + } + return false; + break; + // led operations - RGB mode change now updates the RGB_current_mode to allow the right RGB mode to be set after reactive keys are released #ifdef RGBLIGHT_ENABLE - case RGB_MOD: - if (record->event.pressed) { - rgblight_mode(RGB_current_mode); - rgblight_step(); - RGB_current_mode = rgblight_config.mode; - } - return false; - break; + case RGB_MOD: + if (record->event.pressed) { + rgblight_mode(RGB_current_mode); + rgblight_step(); + RGB_current_mode = rgblight_config.mode; + } + return false; + break; #endif -// case BL_INC: -// meira_inc_backlight_level(); -// return false; -// break; - } - return true; -} - -void led_set_user(uint8_t usb_led) { - + // case BL_INC: + // meira_inc_backlight_level(); + // return false; + // break; + } + return true; } diff --git a/keyboards/meira/keymaps/grahampheath/keymap.c b/keyboards/meira/keymaps/grahampheath/keymap.c index ca47b8913675..35fa31b8b8f4 100644 --- a/keyboards/meira/keymaps/grahampheath/keymap.c +++ b/keyboards/meira/keymaps/grahampheath/keymap.c @@ -85,7 +85,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |Emoji | Ctrl | Alt |Lower | Cmd |Space+|Space |Raise | Left | Down | Up |Right | * `-----------------------------------------------------------------------------------' */ - [_QWERTY] = KEYMAP( \ + [_QWERTY] = LAYOUT( \ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \ KC_X0, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_X1, \ @@ -103,7 +103,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | * `-----------------------------------------------------------------------------------' */ - [_COLEMAK] = KEYMAP( \ + [_COLEMAK] = LAYOUT( \ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \ KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \ @@ -121,7 +121,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | * `-----------------------------------------------------------------------------------' */ - [_DVORAK] = KEYMAP( \ + [_DVORAK] = LAYOUT( \ KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, \ KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \ KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , \ @@ -140,7 +140,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * │ │ │ │ │Brig-│ Sleep │Brig+│ 👈 │ 👎 | 👍 │ 👉 │ * └─────┴─────┴─────┴─────┴─────┴───────────┴─────┴─────┴─────┴─────┴─────┘ */ - [_EMOJI] = KEYMAP ( \ + [_EMOJI] = LAYOUT ( \ HYPR_0, _______, WINK, _______, _______, TOUNGE, _______, _______, CRY, FLIP, _______, _______, \ HYPR_1, ABOVE, SHRUG, _______, FROWN, _______, HEART, JOY, _______, LLAP, _______, _______, \ HYPR_2, _______, _______, _______, CONFUSED, _______, _______, GRIN, SHIT, _______, _______, _______, \ @@ -160,7 +160,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | Tab- | | | Tab+ | * `-----------------------------------------------------------------------------------' */ - [_LOWER] = KEYMAP( \ + [_LOWER] = LAYOUT( \ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \ KC_LSFT, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, \ @@ -178,7 +178,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | Home | PgUp | PgDn | End | * `-----------------------------------------------------------------------------------' */ - [_RAISE] = KEYMAP( \ + [_RAISE] = LAYOUT( \ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \ KC_LSFT, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, KC_X2, \ @@ -196,7 +196,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | | | | * `-----------------------------------------------------------------------------------' */ - [_ADJUST] = KEYMAP( \ + [_ADJUST] = LAYOUT( \ _______, RESET, _______, _______, _______, _______, KC_PSCR, _______, _______, _______, _______, KC_DEL, \ _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ diff --git a/keyboards/meira/keymaps/takmiya/keymap.c b/keyboards/meira/keymaps/takmiya/keymap.c index 171b4f43ae18..25f50abc49ce 100644 --- a/keyboards/meira/keymaps/takmiya/keymap.c +++ b/keyboards/meira/keymaps/takmiya/keymap.c @@ -50,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | Ctrl | GUI | Alt | GUI |Lower |Space |Enter |Raise | Left | Down | Up |Right | * `-----------------------------------------------------------------------------------' */ - [_QWERTY] = KEYMAP( \ + [_QWERTY] = LAYOUT( \ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, GUI_T(KC_SLSH), KC_ENT, \ @@ -68,7 +68,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | Home | PgUp | PgDn | End | * `-----------------------------------------------------------------------------------' */ - [_LOWER] = KEYMAP( \ + [_LOWER] = LAYOUT( \ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), _______, _______, _______, \ @@ -86,7 +86,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | Home | PgUp | PgDn | End | * `-----------------------------------------------------------------------------------' */ - [_RAISE] = KEYMAP( \ + [_RAISE] = LAYOUT( \ KC_GRV , KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, \ @@ -104,7 +104,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | | | | * `-----------------------------------------------------------------------------------' */ - [_ADJUST] = KEYMAP( \ + [_ADJUST] = LAYOUT( \ BL_TOGG, RESET, _______, KC_MRWD, KC_MPLY, KC_MFFD, KC_PSCR, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, \ BL_STEP, RGB_MOD, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, _______, _______, _______, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ diff --git a/keyboards/meira/lighting.c b/keyboards/meira/lighting.c index a02487f69b43..1a3c954bcffb 100755 --- a/keyboards/meira/lighting.c +++ b/keyboards/meira/lighting.c @@ -23,7 +23,7 @@ const uint8_t backlight_pwm_map[BACKLIGHT_LEVELS] = BACKLIGHT_PWM_MAP; // / | // Device // const uint8_t switch_leds[MATRIX_ROWS][MATRIX_COLS] = -// KEYMAP( +// LAYOUT( // 0x29, 0x28, 0x27, 0x26, 0x25, 0x24, 0x23, 0x22, 0x21, 0xA9, 0xA8, 0xA7, 0xA6, 0xA5, // 0x39, 0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0xB9, 0xB8, 0xB7, 0xB6, 0xB5, // 0x49, 0x48, 0x47, 0x45, 0x44, 0x43, 0x42, 0x41, 0xC9, 0xC8, 0xC7, 0xC6, diff --git a/keyboards/meira/lighting.h b/keyboards/meira/lighting.h index dc55b70ef909..42fee8ac9251 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/matrix.c b/keyboards/meira/matrix.c index c1bfb5868feb..ae1ae5ce9d4e 100644 --- a/keyboards/meira/matrix.c +++ b/keyboards/meira/matrix.c @@ -62,7 +62,7 @@ along with this program. If not, see . static matrix_row_t matrix_debouncing[MATRIX_ROWS]; static const uint8_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; -static const uint8_t col_pins[4] = MATRIX_COL_PINS; +static const uint8_t col_pins[4] = MATRIX_COL_PINS_SCANNED; //static const uint8_t lrow_pins[MATRIX_ROWS] = LED_ROW_PINS; //static const uint8_t lcol_pins[4] = LED_COL_PINS; diff --git a/keyboards/meira/meira.c b/keyboards/meira/meira.c index 1d0db5e99721..e900fd0dd684 100644 --- a/keyboards/meira/meira.c +++ b/keyboards/meira/meira.c @@ -30,7 +30,9 @@ void matrix_init_kb(void) #ifdef ISSI_ENABLE issi_init(); #endif +#ifdef BACKLIGHT_ENABLE backlight_set(5); +#endif #ifdef WATCHDOG_ENABLE // This is done after turning the layer LED red, if we're caught in a loop // we should get a flashing red light @@ -84,11 +86,6 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) { return process_record_user(keycode, record); } -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - led_set_user(usb_led); -} - void reset_keyboard_kb(){ #ifdef WATCHDOG_ENABLE MCUSR = 0; diff --git a/keyboards/meira/meira.h b/keyboards/meira/meira.h index cad590477c75..55fccf5de50f 100644 --- a/keyboards/meira/meira.h +++ b/keyboards/meira/meira.h @@ -13,8 +13,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -#ifndef MEIRA_H -#define MEIRA_H +#pragma once #include "quantum.h" #include "issi.h" @@ -22,23 +21,17 @@ void reset_keyboard_kb(void); // 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, \ - 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_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 } \ } - -#define LAYOUT_ortho_4x12 LAYOUT - -#endif - diff --git a/keyboards/meira/promicro/config.h b/keyboards/meira/promicro/config.h index bb88f9e08ee4..bbdaa9dbd8bb 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 . */ -#ifndef PROMICROCONFIG_H -#define PROMICROCONFIG_H +#pragma once #include "config_common.h" @@ -32,7 +31,9 @@ along with this program. If not, see . */ #define MATRIX_ROW_PINS { F7, F6, F5, F4 } // Column pins to demux in LSB order -#define MATRIX_COL_PINS { B1, B3, B2, B6 } +#define MATRIX_COL_PINS { B1, B3, B2, B6, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN } +#define MATRIX_COL_PINS_SCANNED { B1, B3, B2, B6 } + #define LED_EN_PIN D2 #define UNUSED_PINS @@ -68,54 +69,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -133,25 +86,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - -#endif diff --git a/keyboards/meira/promicro/promicro.c b/keyboards/meira/promicro/promicro.c index cf579c89b2f8..63ade2190492 100644 --- a/keyboards/meira/promicro/promicro.c +++ b/keyboards/meira/promicro/promicro.c @@ -1,2 +1,17 @@ -#include "meira.h" +/* Copyright 2017 Cole Markham, WoodKeys.click + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "meira.h" diff --git a/keyboards/meira/promicro/promicro.h b/keyboards/meira/promicro/promicro.h index 9e6800b4977f..eab7c639b90f 100644 --- a/keyboards/meira/promicro/promicro.h +++ b/keyboards/meira/promicro/promicro.h @@ -1,8 +1,19 @@ -#ifndef FEATHERBLE_H -#define FEATHERBLE_H +/* Copyright 2017 Cole Markham, WoodKeys.click + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ -#include "../meira.h" +#pragma once -#include "quantum.h" - -#endif +#include "meira.h" diff --git a/keyboards/meira/promicro/rules.mk b/keyboards/meira/promicro/rules.mk index bbb8bda6b594..09057bea54bc 100644 --- a/keyboards/meira/promicro/rules.mk +++ b/keyboards/meira/promicro/rules.mk @@ -1,5 +1,3 @@ -BLUETOOTH_ENABLE = no - # Disable unsupported hardware RGBLIGHT_SUPPORTED = no AUDIO_SUPPORTED = no diff --git a/keyboards/meira/readme.md b/keyboards/meira/readme.md index 10c27ee94e28..716eb7445d76 100644 --- a/keyboards/meira/readme.md +++ b/keyboards/meira/readme.md @@ -1,26 +1,23 @@ # Meira -![Miera](https://imgur.com/kF4MFlW) +![Meira](https://i.imgur.com/kF4MFlWh.jpeg) A 4x12 ortholinear low-profile keyboard. -Keyboard Maintainer: [Cole Markham](https://github.com/colemarkham) -Hardware Supported: Meira/ProMicro, Meira/FeatherBLE -Hardware Availability: [WoodKeys.click](https://woodkeys.click/meira) +* Keyboard Maintainer: [Cole Markham](https://github.com/colemarkham) +* Hardware Supported: Meira/ProMicro, Meira/FeatherBLE +* Hardware Availability: [WoodKeys.click](https://woodkeys.click/meira) -Two controllers are support: the Pro Micro, and the Adafruit Feather BLE 32u4. Support for each is defined as a hardware revision subfolder in QMK. Main differences include processor frequencies and matrix pinouts. +Two controllers are supported: the Pro Micro, and the Adafruit Feather BLE 32u4. Support for each is defined as a hardware revision subfolder in QMK. Main differences include processor frequencies and matrix pinouts. -Make example for this keyboard (after setting up your build environment): +Make examples for this keyboard (after setting up your build environment): - make meira/promicro:default + make meira/featherble:default # for Feather BLE 32u4 controllers + make meira/promicro:default # for Pro Micro controllers -or +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). - make meira/featherble:default - -See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information on generic QMK configuration and setup. - -Both the Pro Micro and the Feather BLE use the Catalina bootloader, which is typically programmed using avrdude. +Both the Pro Micro and the Feather BLE use the Caterina bootloader, which is typically programmed using avrdude. ## Matrix @@ -28,4 +25,4 @@ In order to have enough pins for the matrix and other functions, a custom matrix ## LED Controller -The in-switch LEDs are driven by an ISSI LED controller (IS31FL3731). The micro controller communicates with this chip using I2C. Individual LED control is possible, but currently only general backlighting support is implemented. This functionality is located in lighting.c, issi.c, and TWILib.c. \ No newline at end of file +The in-switch LEDs are driven by an ISSI LED controller (IS31FL3731). The micro controller communicates with this chip using I2C. Individual LED control is possible, but currently only general backlighting support is implemented. This functionality is located in lighting.c, issi.c, and TWILib.c. diff --git a/keyboards/meira/rules.mk b/keyboards/meira/rules.mk index a932b5b2a7ba..c73ad2a4ddc1 100644 --- a/keyboards/meira/rules.mk +++ b/keyboards/meira/rules.mk @@ -2,42 +2,30 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration -MOUSEKEY_ENABLE = no # Mouse keys +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 -RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -BACKLIGHT_CUSTOM_DRIVER = yes -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality, also set ISSI_ENABLE below for Miera -ISSI_ENABLE = yes # If the I2C pullup resistors aren't install this must be disabled +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality, also set ISSI_ENABLE below for Meira +BACKLIGHT_DRIVER = custom +ISSI_ENABLE = yes # If the I2C pullup resistors aren't install this must be disabled +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output CUSTOM_MATRIX = yes #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/meishi/config.h b/keyboards/meishi/config.h index 6f04269c9cc8..6664e371a19d 100644 --- a/keyboards/meishi/config.h +++ b/keyboards/meishi/config.h @@ -91,54 +91,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -156,23 +108,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 diff --git a/keyboards/meishi/info.json b/keyboards/meishi/info.json index ec2a9cb63112..8241541c7202 100644 --- a/keyboards/meishi/info.json +++ b/keyboards/meishi/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Meishi", "url": "", "maintainer": "Biacco42", - "width": 4, - "height": 1, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/meishi/keymaps/default/keymap.c b/keyboards/meishi/keymaps/default/keymap.c index ea6e42a961c8..5cbeebc46922 100644 --- a/keyboards/meishi/keymaps/default/keymap.c +++ b/keyboards/meishi/keymaps/default/keymap.c @@ -20,19 +20,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V) \ ), }; - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/meishi/meishi.c b/keyboards/meishi/meishi.c index 92c5194d5f74..85ede859d329 100644 --- a/keyboards/meishi/meishi.c +++ b/keyboards/meishi/meishi.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "meishi.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/meishi/rules.mk b/keyboards/meishi/rules.mk index f00690733f0a..cd0b5fb4a638 100644 --- a/keyboards/meishi/rules.mk +++ b/keyboards/meishi/rules.mk @@ -2,29 +2,17 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/meishi2/config.h b/keyboards/meishi2/config.h index 872169cb77ea..df3203991cdb 100644 --- a/keyboards/meishi2/config.h +++ b/keyboards/meishi2/config.h @@ -123,59 +123,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -194,26 +141,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/meishi2/info.json b/keyboards/meishi2/info.json index 11e18e9f4789..8e277716ea26 100644 --- a/keyboards/meishi2/info.json +++ b/keyboards/meishi2/info.json @@ -2,11 +2,8 @@ "keyboard_name": "meishi2", "url": "", "maintainer": "biacco42", - "width": 4, - "height": 1, "layouts": { "LAYOUT": { - "key_count": 4, "layout": [ { "x": 0, "y": 0 }, { "x": 1, "y": 0 }, diff --git a/keyboards/meishi2/keymaps/default/keymap.c b/keyboards/meishi2/keymaps/default/keymap.c index 6eb3b5a9ffd0..11cfcf072ae6 100644 --- a/keyboards/meishi2/keymaps/default/keymap.c +++ b/keyboards/meishi2/keymaps/default/keymap.c @@ -20,16 +20,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V) \ ) }; - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} - diff --git a/keyboards/meishi2/keymaps/via/keymap.c b/keyboards/meishi2/keymaps/via/keymap.c new file mode 100644 index 000000000000..be706ea09a63 --- /dev/null +++ b/keyboards/meishi2/keymaps/via/keymap.c @@ -0,0 +1,31 @@ +/* Copyright 2019 Biacco42 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( /* Base */ + LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V) + ), + [1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; diff --git a/keyboards/meishi2/keymaps/via/rules.mk b/keyboards/meishi2/keymaps/via/rules.mk new file mode 100644 index 000000000000..c859353a464c --- /dev/null +++ b/keyboards/meishi2/keymaps/via/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes +CONSOLE_ENABLE = no +COMMAND_ENABLE = no diff --git a/keyboards/meishi2/meishi2.c b/keyboards/meishi2/meishi2.c index a74e6d3e6391..14525ae175cb 100644 --- a/keyboards/meishi2/meishi2.c +++ b/keyboards/meishi2/meishi2.c @@ -14,38 +14,3 @@ * along with this program. If not, see . */ #include "meishi2.h" - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -/* - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - -*/ diff --git a/keyboards/meishi2/rules.mk b/keyboards/meishi2/rules.mk index b828d7c361d3..1b3f48990ee1 100644 --- a/keyboards/meishi2/rules.mk +++ b/keyboards/meishi2/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/meletrix/zoom65/config.h b/keyboards/meletrix/zoom65/config.h new file mode 100644 index 000000000000..4eb85aeb4960 --- /dev/null +++ b/keyboards/meletrix/zoom65/config.h @@ -0,0 +1,51 @@ +/* Copyright 2021 meletrix + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x806B +#define PRODUCT_ID 0x0004 +#define DEVICE_VER 0x0001 +#define MANUFACTURER meletrix +#define PRODUCT zoom65 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +#define MATRIX_ROW_PINS { F0, E6, D5, F1, F4 } +#define MATRIX_COL_PINS { C7, D3, D2, D1, D0, B7, B3, B2, C6, B6, B5, B4, D7, D6, D4 } + +#define DIODE_DIRECTION COL2ROW + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* Enable encoder */ +#define ENCODERS_PAD_A { B1 } +#define ENCODERS_PAD_B { B0 } + +#define ENCODERS 1 +// Note: array is { col, row ) +#define ENCODERS_CW_KEY { { 5, 4 } } +#define ENCODERS_CCW_KEY { { 3, 4 } } + +#define LED_CAPS_LOCK_PIN F7 +#define LED_PIN_ON_STATE 0 + diff --git a/keyboards/meletrix/zoom65/info.json b/keyboards/meletrix/zoom65/info.json new file mode 100644 index 000000000000..8cc7dce8c354 --- /dev/null +++ b/keyboards/meletrix/zoom65/info.json @@ -0,0 +1,623 @@ +{ + "keyboard_name": "zoom65", + "url": "https://zoom65.com/", + "maintainer": "spbgzh", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2@", "x":2, "y":0}, + {"label":"3#", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":7, "y":0}, + {"label":"8*", "x":8, "y":0}, + {"label":"9(", "x":9, "y":0}, + {"label":"0)", "x":10, "y":0}, + {"label":"-_", "x":11, "y":0}, + {"label":"=+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0}, + {"label":"Backspace", "x":14, "y":0}, + {"label":"EncoderRotateL", "x":15, "y":0, "w":0.5}, + {"label":"EncoderClick", "x":15.5, "y":0}, + {"label":"EncoderRotateR", "x":16.5, "y":0, "w":0.5}, + + {"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":"Delete", "x":15, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";:", "x":10.75, "y":2}, + {"label":"'\"", "x":11.75, "y":2}, + {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + {"label":"PageUp", "x":15, "y":2}, + + {"label":"Shift1", "x":0, "y":3, "w":1.25}, + {"label":"Shift2", "x":1.25, "y":3}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",<", "x":9.25, "y":3}, + {"label":".>", "x":10.25, "y":3}, + {"label":"/?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"\u2191", "x":14, "y":3}, + {"label":"End", "x":15, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"Win", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space1", "x":3.75, "y":4, "w":2.25}, + {"label":"Space2", "x":6, "y":4, "w":1.25}, + {"label":"Space3", "x":7.25, "y":4, "w":2.75}, + {"label":"Alt", "x":10, "y":4, "w":1.25}, + {"label":"Fn", "x":11.25, "y":4, "w":1.25}, + {"label":"\u2190", "x":13, "y":4}, + {"label":"\u2193", "x":14, "y":4}, + {"label":"\u2192", "x":15, "y":4} + ] + }, + "LAYOUT_65_ansi_blocker": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2@", "x":2, "y":0}, + {"label":"3#", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":7, "y":0}, + {"label":"8*", "x":8, "y":0}, + {"label":"9(", "x":9, "y":0}, + {"label":"0)", "x":10, "y":0}, + {"label":"-_", "x":11, "y":0}, + {"label":"=+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + {"label":"Encode", "x":15, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"[{", "x":11.5, "y":1}, + {"label":"]}", "x":12.5, "y":1}, + {"label":"\\|", "x":13.5, "y":1, "w":1.5}, + {"label":"Delete", "x":15, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";:", "x":10.75, "y":2}, + {"label":"'\"", "x":11.75, "y":2}, + {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + {"label":"PageUp", "x":15, "y":2}, + + {"label":"Shift", "x":0, "y":3, "w":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",<", "x":9.25, "y":3}, + {"label":".>", "x":10.25, "y":3}, + {"label":"/?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"\u2191", "x":14, "y":3}, + {"label":"End", "x":15, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"Win", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space", "x":3.75, "y":4, "w":6.25}, + {"label":"Alt", "x":10, "y":4, "w":1.25}, + {"label":"Fn", "x":11.25, "y":4, "w":1.25}, + {"label":"\u2190", "x":13, "y":4}, + {"label":"\u2193", "x":14, "y":4}, + {"label":"\u2192", "x":15, "y":4} + ] + }, + "LAYOUT_65_iso_blocker": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2\"", "x":2, "y":0}, + {"label":"3\u00a3", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":7, "y":0}, + {"label":"8*", "x":8, "y":0}, + {"label":"9(", "x":9, "y":0}, + {"label":"0)", "x":10, "y":0}, + {"label":"-_", "x":11, "y":0}, + {"label":"=+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + {"label":"Encode", "x":15, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"[{", "x":11.5, "y":1}, + {"label":"]}", "x":12.5, "y":1}, + {"label":"Delete", "x":15, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";:", "x":10.75, "y":2}, + {"label":"'@", "x":11.75, "y":2}, + {"label":"#~", "x":12.75, "y":2}, + {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, + {"label":"PageUp", "x":15, "y":2}, + + {"label":"Shift", "x":0, "y":3, "w":1.25}, + {"label":"\\|", "x":1.25, "y":3}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",<", "x":9.25, "y":3}, + {"label":".>", "x":10.25, "y":3}, + {"label":"/?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"\u2191", "x":14, "y":3}, + {"label":"End", "x":15, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"Win", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space", "x":3.75, "y":4, "w":6.25}, + {"label":"Alt", "x":10, "y":4, "w":1.25}, + {"label":"Fn", "x":11.25, "y":4, "w":1.25}, + {"label":"\u2190", "x":13, "y":4}, + {"label":"\u2193", "x":14, "y":4}, + {"label":"\u2192", "x":15, "y":4} + ] + }, + "LAYOUT_65_ansi_blocker_split_bs": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2@", "x":2, "y":0}, + {"label":"3#", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":7, "y":0}, + {"label":"8*", "x":8, "y":0}, + {"label":"9(", "x":9, "y":0}, + {"label":"0)", "x":10, "y":0}, + {"label":"-_", "x":11, "y":0}, + {"label":"=+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0}, + {"label":"Backspace", "x":14, "y":0}, + {"label":"Encode", "x":15, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"[{", "x":11.5, "y":1}, + {"label":"]}", "x":12.5, "y":1}, + {"label":"\\|", "x":13.5, "y":1, "w":1.5}, + {"label":"Delete", "x":15, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";:", "x":10.75, "y":2}, + {"label":"'\"", "x":11.75, "y":2}, + {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + {"label":"PageUp", "x":15, "y":2}, + + {"label":"Shift", "x":0, "y":3, "w":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",<", "x":9.25, "y":3}, + {"label":".>", "x":10.25, "y":3}, + {"label":"/?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"\u2191", "x":14, "y":3}, + {"label":"End", "x":15, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"Win", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space", "x":3.75, "y":4, "w":6.25}, + {"label":"Alt", "x":10, "y":4, "w":1.25}, + {"label":"Fn", "x":11.25, "y":4, "w":1.25}, + {"label":"\u2190", "x":13, "y":4}, + {"label":"\u2193", "x":14, "y":4}, + {"label":"\u2192", "x":15, "y":4} + ] + }, + "LAYOUT_65_iso_blocker_split_bs": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2\"", "x":2, "y":0}, + {"label":"3\u00a3", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":7, "y":0}, + {"label":"8*", "x":8, "y":0}, + {"label":"9(", "x":9, "y":0}, + {"label":"0)", "x":10, "y":0}, + {"label":"-_", "x":11, "y":0}, + {"label":"=+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0}, + {"label":"Backspace", "x":14, "y":0}, + {"label":"Encode", "x":15, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"[{", "x":11.5, "y":1}, + {"label":"]}", "x":12.5, "y":1}, + {"label":"Delete", "x":15, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";:", "x":10.75, "y":2}, + {"label":"'@", "x":11.75, "y":2}, + {"label":"#~", "x":12.75, "y":2}, + {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, + {"label":"PageUp", "x":15, "y":2}, + + {"label":"Shift", "x":0, "y":3, "w":1.25}, + {"label":"\\|", "x":1.25, "y":3}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",<", "x":9.25, "y":3}, + {"label":".>", "x":10.25, "y":3}, + {"label":"/?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"\u2191", "x":14, "y":3}, + {"label":"End", "x":15, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"Win", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space", "x":3.75, "y":4, "w":6.25}, + {"label":"Alt", "x":10, "y":4, "w":1.25}, + {"label":"Fn", "x":11.25, "y":4, "w":1.25}, + {"label":"\u2190", "x":13, "y":4}, + {"label":"\u2193", "x":14, "y":4}, + {"label":"\u2192", "x":15, "y":4} + ] + }, + "LAYOUT_65_ansi_blocker_split_lshift": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2@", "x":2, "y":0}, + {"label":"3#", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":7, "y":0}, + {"label":"8*", "x":8, "y":0}, + {"label":"9(", "x":9, "y":0}, + {"label":"0)", "x":10, "y":0}, + {"label":"-_", "x":11, "y":0}, + {"label":"=+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + {"label":"Encode", "x":15, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"[{", "x":11.5, "y":1}, + {"label":"]}", "x":12.5, "y":1}, + {"label":"\\|", "x":13.5, "y":1, "w":1.5}, + {"label":"Delete", "x":15, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";:", "x":10.75, "y":2}, + {"label":"'\"", "x":11.75, "y":2}, + {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + {"label":"PageUp", "x":15, "y":2}, + + {"label":"Shift1", "x":0, "y":3, "w":1.25}, + {"label":"Shift2", "x":1.25, "y":3}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",<", "x":9.25, "y":3}, + {"label":".>", "x":10.25, "y":3}, + {"label":"/?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"\u2191", "x":14, "y":3}, + {"label":"End", "x":15, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"Win", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space", "x":3.75, "y":4, "w":6.25}, + {"label":"Alt", "x":10, "y":4, "w":1.25}, + {"label":"Fn", "x":11.25, "y":4, "w":1.25}, + {"label":"\u2190", "x":13, "y":4}, + {"label":"\u2193", "x":14, "y":4}, + {"label":"\u2192", "x":15, "y":4} + ] + }, + "LAYOUT_65_ansi_blocker_split_space": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2@", "x":2, "y":0}, + {"label":"3#", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":7, "y":0}, + {"label":"8*", "x":8, "y":0}, + {"label":"9(", "x":9, "y":0}, + {"label":"0)", "x":10, "y":0}, + {"label":"-_", "x":11, "y":0}, + {"label":"=+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + {"label":"Encode", "x":15, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"[{", "x":11.5, "y":1}, + {"label":"]}", "x":12.5, "y":1}, + {"label":"\\|", "x":13.5, "y":1, "w":1.5}, + {"label":"Delete", "x":15, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";:", "x":10.75, "y":2}, + {"label":"'\"", "x":11.75, "y":2}, + {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + {"label":"PageUp", "x":15, "y":2}, + + {"label":"Shift", "x":0, "y":3, "w":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",<", "x":9.25, "y":3}, + {"label":".>", "x":10.25, "y":3}, + {"label":"/?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"\u2191", "x":14, "y":3}, + {"label":"End", "x":15, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"Win", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space1", "x":3.75, "y":4, "w":2.25}, + {"label":"Space2", "x":6, "y":4, "w":1.25}, + {"label":"Space3", "x":7.25, "y":4, "w":2.75}, + {"label":"Alt", "x":10, "y":4, "w":1.25}, + {"label":"Fn", "x":11.25, "y":4, "w":1.25}, + {"label":"\u2190", "x":13, "y":4}, + {"label":"\u2193", "x":14, "y":4}, + {"label":"\u2192", "x":15, "y":4} + ] + }, + "LAYOUT_65_iso_blocker_split_space": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2\"", "x":2, "y":0}, + {"label":"3\u00a3", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":7, "y":0}, + {"label":"8*", "x":8, "y":0}, + {"label":"9(", "x":9, "y":0}, + {"label":"0)", "x":10, "y":0}, + {"label":"-_", "x":11, "y":0}, + {"label":"=+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + {"label":"Encode", "x":15, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"[{", "x":11.5, "y":1}, + {"label":"]}", "x":12.5, "y":1}, + {"label":"Delete", "x":15, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";:", "x":10.75, "y":2}, + {"label":"'@", "x":11.75, "y":2}, + {"label":"#~", "x":12.75, "y":2}, + {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, + {"label":"PageUp", "x":15, "y":2}, + + {"label":"Shift", "x":0, "y":3, "w":1.25}, + {"label":"\\|", "x":1.25, "y":3}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",<", "x":9.25, "y":3}, + {"label":".>", "x":10.25, "y":3}, + {"label":"/?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"\u2191", "x":14, "y":3}, + {"label":"End", "x":15, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"Win", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space1", "x":3.75, "y":4, "w":2.25}, + {"label":"Space2", "x":6, "y":4, "w":1.25}, + {"label":"Space3", "x":7.25, "y":4, "w":2.75}, + {"label":"Alt", "x":10, "y":4, "w":1.25}, + {"label":"Fn", "x":11.25, "y":4, "w":1.25}, + {"label":"\u2190", "x":13, "y":4}, + {"label":"\u2193", "x":14, "y":4}, + {"label":"\u2192", "x":15, "y":4} + ] + } + } +} diff --git a/keyboards/meletrix/zoom65/keymaps/65_ansi_blocker/keymap.c b/keyboards/meletrix/zoom65/keymaps/65_ansi_blocker/keymap.c new file mode 100644 index 000000000000..07d58e9d2b9d --- /dev/null +++ b/keyboards/meletrix/zoom65/keymaps/65_ansi_blocker/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2021 meletrix + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi_blocker( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_ansi_blocker( + 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_MPLY, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/meletrix/zoom65/keymaps/65_ansi_blocker/readme.md b/keyboards/meletrix/zoom65/keymaps/65_ansi_blocker/readme.md new file mode 100644 index 000000000000..f9dd323673e4 --- /dev/null +++ b/keyboards/meletrix/zoom65/keymaps/65_ansi_blocker/readme.md @@ -0,0 +1 @@ +# The 65_ansi_blocker keymap for zoom65 diff --git a/keyboards/meletrix/zoom65/keymaps/65_ansi_blocker_split_bs/keymap.c b/keyboards/meletrix/zoom65/keymaps/65_ansi_blocker_split_bs/keymap.c new file mode 100644 index 000000000000..7580e22f956b --- /dev/null +++ b/keyboards/meletrix/zoom65/keymaps/65_ansi_blocker_split_bs/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2021 meletrix + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi_blocker_split_bs( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_MUTE, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_ansi_blocker_split_bs( + 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_MPLY, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/meletrix/zoom65/keymaps/65_ansi_blocker_split_bs/readme.md b/keyboards/meletrix/zoom65/keymaps/65_ansi_blocker_split_bs/readme.md new file mode 100644 index 000000000000..768bda7b6d9b --- /dev/null +++ b/keyboards/meletrix/zoom65/keymaps/65_ansi_blocker_split_bs/readme.md @@ -0,0 +1 @@ +# The 65_ansi_blocker_split_bs keymap for zoom65 diff --git a/keyboards/meletrix/zoom65/keymaps/65_ansi_blocker_split_lshift/keymap.c b/keyboards/meletrix/zoom65/keymaps/65_ansi_blocker_split_lshift/keymap.c new file mode 100644 index 000000000000..29bf8fb54359 --- /dev/null +++ b/keyboards/meletrix/zoom65/keymaps/65_ansi_blocker_split_lshift/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2021 meletrix + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi_blocker_split_lshift( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_ansi_blocker_split_lshift( + 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_MPLY, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/meletrix/zoom65/keymaps/65_ansi_blocker_split_lshift/readme.md b/keyboards/meletrix/zoom65/keymaps/65_ansi_blocker_split_lshift/readme.md new file mode 100644 index 000000000000..5d3bfbcd1713 --- /dev/null +++ b/keyboards/meletrix/zoom65/keymaps/65_ansi_blocker_split_lshift/readme.md @@ -0,0 +1 @@ +# The 65_ansi_blocker_split_lshift keymap for zoom65 diff --git a/keyboards/meletrix/zoom65/keymaps/65_ansi_blocker_split_space/keymap.c b/keyboards/meletrix/zoom65/keymaps/65_ansi_blocker_split_space/keymap.c new file mode 100644 index 000000000000..9ab31d62f740 --- /dev/null +++ b/keyboards/meletrix/zoom65/keymaps/65_ansi_blocker_split_space/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2021 meletrix + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi_blocker_split_space( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_ansi_blocker_split_space( + 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_MPLY, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/meletrix/zoom65/keymaps/65_ansi_blocker_split_space/readme.md b/keyboards/meletrix/zoom65/keymaps/65_ansi_blocker_split_space/readme.md new file mode 100644 index 000000000000..85d4e776cf63 --- /dev/null +++ b/keyboards/meletrix/zoom65/keymaps/65_ansi_blocker_split_space/readme.md @@ -0,0 +1 @@ +# The 65_ansi_blocker_split_space keymap for zoom65 diff --git a/keyboards/meletrix/zoom65/keymaps/65_iso_blocker/keymap.c b/keyboards/meletrix/zoom65/keymaps/65_iso_blocker/keymap.c new file mode 100644 index 000000000000..cc7967446d70 --- /dev/null +++ b/keyboards/meletrix/zoom65/keymaps/65_iso_blocker/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2021 meletrix + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_iso_blocker( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_iso_blocker( + 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_MPLY, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/meletrix/zoom65/keymaps/65_iso_blocker/readme.md b/keyboards/meletrix/zoom65/keymaps/65_iso_blocker/readme.md new file mode 100644 index 000000000000..46af22fcd94e --- /dev/null +++ b/keyboards/meletrix/zoom65/keymaps/65_iso_blocker/readme.md @@ -0,0 +1 @@ +# The 65_iso_blocker keymap for zoom65 diff --git a/keyboards/meletrix/zoom65/keymaps/65_iso_blocker_split_bs/keymap.c b/keyboards/meletrix/zoom65/keymaps/65_iso_blocker_split_bs/keymap.c new file mode 100644 index 000000000000..af549a744b3a --- /dev/null +++ b/keyboards/meletrix/zoom65/keymaps/65_iso_blocker_split_bs/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2021 meletrix, James Young for QMK (@noroadsleft) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_iso_blocker_split_bs( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_MUTE, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_iso_blocker_split_bs( + 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_MPLY, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/meletrix/zoom65/keymaps/65_iso_blocker_split_bs/readme.md b/keyboards/meletrix/zoom65/keymaps/65_iso_blocker_split_bs/readme.md new file mode 100644 index 000000000000..873c51652a35 --- /dev/null +++ b/keyboards/meletrix/zoom65/keymaps/65_iso_blocker_split_bs/readme.md @@ -0,0 +1 @@ +# The 65_iso_blocker_split_bs keymap for zoom65 diff --git a/keyboards/meletrix/zoom65/keymaps/65_iso_blocker_split_space/keymap.c b/keyboards/meletrix/zoom65/keymaps/65_iso_blocker_split_space/keymap.c new file mode 100644 index 000000000000..7ab65bbf2d6b --- /dev/null +++ b/keyboards/meletrix/zoom65/keymaps/65_iso_blocker_split_space/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2021 meletrix, James Young for QMK (@noroadsleft) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_iso_blocker_split_space( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_iso_blocker_split_space( + 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_MPLY, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/meletrix/zoom65/keymaps/65_iso_blocker_split_space/readme.md b/keyboards/meletrix/zoom65/keymaps/65_iso_blocker_split_space/readme.md new file mode 100644 index 000000000000..a9c715e796f8 --- /dev/null +++ b/keyboards/meletrix/zoom65/keymaps/65_iso_blocker_split_space/readme.md @@ -0,0 +1 @@ +# The 65_iso_blocker_split_space keymap for zoom65 diff --git a/keyboards/meletrix/zoom65/keymaps/default/keymap.c b/keyboards/meletrix/zoom65/keymaps/default/keymap.c new file mode 100644 index 000000000000..dfcad3107ef8 --- /dev/null +++ b/keyboards/meletrix/zoom65/keymaps/default/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2021 meletrix + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_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_BSPC, KC_BSPC, KC_VOLD, KC_MUTE, KC_VOLU, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = 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_MPRV, KC_MPLY, KC_MNXT, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/meletrix/zoom65/keymaps/default/readme.md b/keyboards/meletrix/zoom65/keymaps/default/readme.md new file mode 100644 index 000000000000..32dfecc2657c --- /dev/null +++ b/keyboards/meletrix/zoom65/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for zoom65 diff --git a/keyboards/meletrix/zoom65/keymaps/via/keymap.c b/keyboards/meletrix/zoom65/keymaps/via/keymap.c new file mode 100644 index 000000000000..0bd3004a1212 --- /dev/null +++ b/keyboards/meletrix/zoom65/keymaps/via/keymap.c @@ -0,0 +1,48 @@ +/* Copyright 2021 meletrix + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_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_BSPC, KC_BSPC, KC_VOLD, KC_MUTE, KC_VOLU, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = 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_MPRV, KC_MPLY, KC_MNXT, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/meletrix/zoom65/keymaps/via/readme.md b/keyboards/meletrix/zoom65/keymaps/via/readme.md new file mode 100644 index 000000000000..5bc43e82b3be --- /dev/null +++ b/keyboards/meletrix/zoom65/keymaps/via/readme.md @@ -0,0 +1 @@ +# The via keymap for zoom65 diff --git a/keyboards/meletrix/zoom65/keymaps/via/rules.mk b/keyboards/meletrix/zoom65/keymaps/via/rules.mk new file mode 100644 index 000000000000..43061db1dd46 --- /dev/null +++ b/keyboards/meletrix/zoom65/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/meletrix/zoom65/readme.md b/keyboards/meletrix/zoom65/readme.md new file mode 100644 index 000000000000..5d9ba306984c --- /dev/null +++ b/keyboards/meletrix/zoom65/readme.md @@ -0,0 +1,26 @@ +# zoom65 + +![zoom65](https://i.imgur.com/NIbreqdh.jpeg) + +Meletrix's first mass-produced mechanical keyboard. +More Info at [zoom](https://zoom65.com/). + +* Keyboard Maintainer: [spbgzh](https://github.com/spbgzh) +* Hardware Supported: zoom65 Standard +* Hardware Availability: [zoom](https://zoom65.com/) + +Make example for this keyboard (after setting up your build environment): + + make meletrix/zoom65:default + +Flashing example for this keyboard: + + make meletrix/zoom65:default:flash + +To reset the board into bootloader mode, do one of the following: + +* Tap the Reset switch mounted on the PCB +* In the case of the default keymap, use the key combination Fn + End +* Hold the Esc key while connecting the USB cable (also erases persistent settings) + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/meletrix/zoom65/rules.mk b/keyboards/meletrix/zoom65/rules.mk new file mode 100644 index 000000000000..bee4fc872e73 --- /dev/null +++ b/keyboards/meletrix/zoom65/rules.mk @@ -0,0 +1,22 @@ +# 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 +# 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 # Enable Encoder + +LAYOUTS = 65_ansi_blocker 65_iso_blocker 65_ansi_blocker_split_bs 65_iso_blocker_split_bs diff --git a/keyboards/meletrix/zoom65/zoom65.c b/keyboards/meletrix/zoom65/zoom65.c new file mode 100644 index 000000000000..f69ed547eff3 --- /dev/null +++ b/keyboards/meletrix/zoom65/zoom65.c @@ -0,0 +1,66 @@ +/* Copyright 2021 meletrix + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "zoom65.h" + +#ifdef VIA_ENABLE +static uint8_t encoder_state[ENCODERS] = {0}; +static keypos_t encoder_cw[ENCODERS] = ENCODERS_CW_KEY; +static keypos_t encoder_ccw[ENCODERS] = ENCODERS_CCW_KEY; + +void encoder_action_unregister(void) +{ + for (int index = 0; index < ENCODERS; ++index) + { + if (encoder_state[index]) + { + keyevent_t encoder_event = (keyevent_t){ + .key = encoder_state[index] >> 1 ? encoder_cw[index] : encoder_ccw[index], + .pressed = false, + .time = (timer_read() | 1)}; + encoder_state[index] = 0; + action_exec(encoder_event); + } + } +} +void encoder_action_register(uint8_t index, bool clockwise) +{ + keyevent_t encoder_event = (keyevent_t){ + .key = clockwise ? encoder_cw[index] : encoder_ccw[index], + .pressed = true, + .time = (timer_read() | 1)}; + encoder_state[index] = (clockwise ^ 1) | (clockwise << 1); + action_exec(encoder_event); +} + +void matrix_scan_kb(void) +{ + encoder_action_unregister(); + matrix_scan_user(); +} + +bool encoder_update_kb(uint8_t index, bool clockwise) +{ + encoder_action_register(index, clockwise); + return true; +}; +#else +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + tap_code_delay(clockwise ? KC_VOLU : KC_VOLD, 10); + return true; +} +#endif diff --git a/keyboards/meletrix/zoom65/zoom65.h b/keyboards/meletrix/zoom65/zoom65.h new file mode 100644 index 000000000000..81948ba1da42 --- /dev/null +++ b/keyboards/meletrix/zoom65/zoom65.h @@ -0,0 +1,243 @@ +/* Copyright 2021 meletrix + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + + +/* Standard Arrangement + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │2d │ ◯ ISO + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┐ ┌─────┐ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │1e │ │1d │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ ┌──┴┐ │ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2e │ │2c │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ └───┴────┘ + * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │3e │ + * ├────┼───┴┬──┴─┬─┴───┴──┬┴───┼───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │40 │41 │42 │44 │46 │48 │4a │4b │ │4c │4d │4e │ + * └────┴────┴────┴────────┴────┴──────────┴────┴────┘ └───┴───┴───┘ + */ +#define LAYOUT_all( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, K43, K0E, K45, \ + 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, K2E, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K40, K41, K42, K44, K46, K48, 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, KC_NO, K48, KC_NO, K4A, K4B, K4C, K4D, K4E }, \ +} + + +/* LAYOUT_65_ansi_blocker + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │ ◯ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┐ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │1e │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2e │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │3e │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │40 │41 │42 │46 │4a │4b │ │4c │4d │4e │ + * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + */ +#define LAYOUT_65_ansi_blocker( \ + 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, K2E, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K40, K41, K42, K46, 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, KC_NO, 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 }, \ +} + + +/* LAYOUT_65_iso_blocker + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │ ◯ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┐ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │1e │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ├───┤ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │ │2e │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤ + * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │3e │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │40 │41 │42 │46 │4a │4b │ │4c │4d │4e │ + * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + */ +#define LAYOUT_65_iso_blocker( \ + 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, K1D, K2E, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K40, K41, K42, K46, 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, 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 }, \ +} + + +/* LAYOUT_65_ansi_blocker_split_bs + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │2d │ ◯ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┐ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │1e │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2e │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │3e │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │40 │41 │42 │46 │4a │4b │ │4c │4d │4e │ + * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + */ +#define LAYOUT_65_ansi_blocker_split_bs( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, 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, K2E, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K40, K41, K42, K46, 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, KC_NO, 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 }, \ +} + + +/* LAYOUT_65_iso_blocker_split_bs + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │2d │ ◯ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┐ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │1e │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ├───┤ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │ │2e │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤ + * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │3e │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │40 │41 │42 │46 │4a │4b │ │4c │4d │4e │ + * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + */ +#define LAYOUT_65_iso_blocker_split_bs( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, 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, K1D, K2E, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K40, K41, K42, K46, 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, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E }, \ +} + + +/* LAYOUT_65_ansi_blocker_split_lshift + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │ ◯ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┐ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │1e │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2e │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │3e │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │40 │41 │42 │46 │4a │4b │ │4c │4d │4e │ + * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + */ +#define LAYOUT_65_ansi_blocker_split_lshift( \ + 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, K2E, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K40, K41, K42, K46, 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, 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 }, \ +} + + +/* LAYOUT_65_ansi_blocker_split_space + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │ ◯ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┐ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │1e │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2e │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │3e │ + * ├────┬───┴┬──┴─┬─┴───┴──┬┴───┼───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │40 │41 │42 │44 │46 │48 │4a │4b │ │4c │4d │4e │ + * └────┴────┴────┴────────┴────┴──────────┴────┴────┘ └───┴───┴───┘ + */ +#define LAYOUT_65_ansi_blocker_split_space( \ + 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, K2E, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K40, K41, K42, K44, K46, K48, 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, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \ + { K40, K41, K42, KC_NO, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, K4B, K4C, K4D, K4E }, \ +} + + +/* LAYOUT_65_iso_blocker_split_space + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │ ◯ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┐ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │1e │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ├───┤ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │ │2e │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤ + * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │3e │ + * ├────┼───┴┬──┴─┬─┴───┴──┬┴───┼───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │40 │41 │42 │44 │46 │48 │4a │4b │ │4c │4d │4e │ + * └────┴────┴────┴────────┴────┴──────────┴────┴────┘ └───┴───┴───┘ + */ +#define LAYOUT_65_iso_blocker_split_space( \ + 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, K2E, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K40, K41, K42, K44, K46, K48, 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, K3B, K3C, K3D, K3E }, \ + { K40, K41, K42, KC_NO, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, K4B, K4C, K4D, K4E }, \ +} diff --git a/keyboards/melgeek/mach80/config.h b/keyboards/melgeek/mach80/config.h new file mode 100755 index 000000000000..f5987514184b --- /dev/null +++ b/keyboards/melgeek/mach80/config.h @@ -0,0 +1,95 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xEDED +#define PRODUCT_ID 0x0080 +#define DEVICE_VER 0x0001 +#define MANUFACTURER MelGeek +#define PRODUCT Mach80 + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 16 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 3 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +#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_KEYPRESSES +#define RGB_MATRIX_LED_PROCESS_LIMIT 4 +#define RGB_MATRIX_LED_FLUSH_LIMIT 26 +#define DISABLE_RGB_MATRIX_SPLASH +#define DISABLE_RGB_MATRIX_MULTISPLASH +#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH +//#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR +#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL +#define DRIVER_ADDR_1 0b0110000 +#define DRIVER_COUNT 1 + +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_FRACTAL +#define ENABLE_RGB_MATRIX_PIXEL_RAIN + +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN + +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH diff --git a/keyboards/melgeek/mach80/info.json b/keyboards/melgeek/mach80/info.json new file mode 100755 index 000000000000..ea7c628c6f53 --- /dev/null +++ b/keyboards/melgeek/mach80/info.json @@ -0,0 +1,196 @@ +{ + "keyboard_name": "Mach80", + "url": "", + "maintainer": "melgeek001365", + "layouts": { + "LAYOUT_tkl_ansi": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6.5, "y": 0}, + {"x": 7.5, "y": 0}, + {"x": 8.5, "y": 0}, + {"x": 9.5, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + {"x": 15.25, "y": 0}, + {"x": 16.25, "y": 0}, + {"x": 17.25, "y": 0}, + + {"x": 0, "y": 1.5}, + {"x": 1, "y": 1.5}, + {"x": 2, "y": 1.5}, + {"x": 3, "y": 1.5}, + {"x": 4, "y": 1.5}, + {"x": 5, "y": 1.5}, + {"x": 6, "y": 1.5}, + {"x": 7, "y": 1.5}, + {"x": 8, "y": 1.5}, + {"x": 9, "y": 1.5}, + {"x": 10, "y": 1.5}, + {"x": 11, "y": 1.5}, + {"x": 12, "y": 1.5}, + {"x": 13, "y": 1.5, "w": 2.0}, + {"x": 15.25, "y": 1.5}, + {"x": 16.25, "y": 1.5}, + {"x": 17.25, "y": 1.5}, + + {"x": 0, "y": 2.5, "w": 1.5}, + {"x": 1.5, "y": 2.5}, + {"x": 2.5, "y": 2.5}, + {"x": 3.5, "y": 2.5}, + {"x": 4.5, "y": 2.5}, + {"x": 5.5, "y": 2.5}, + {"x": 6.5, "y": 2.5}, + {"x": 7.5, "y": 2.5}, + {"x": 8.5, "y": 2.5}, + {"x": 9.5, "y": 2.5}, + {"x": 10.5, "y": 2.5}, + {"x": 11.5, "y": 2.5}, + {"x": 12.5, "y": 2.5}, + {"x": 13.5, "y": 2.5, "w": 1.5}, + {"x": 15.25, "y": 2.5}, + {"x": 16.25, "y": 2.5}, + {"x": 17.25, "y": 2.5}, + + {"x": 0, "y": 3.5, "w": 1.75}, + {"x": 1.75, "y": 3.5}, + {"x": 2.75, "y": 3.5}, + {"x": 3.75, "y": 3.5}, + {"x": 4.75, "y": 3.5}, + {"x": 5.75, "y": 3.5}, + {"x": 6.75, "y": 3.5}, + {"x": 7.75, "y": 3.5}, + {"x": 8.75, "y": 3.5}, + {"x": 9.75, "y": 3.5}, + {"x": 10.75, "y": 3.5}, + {"x": 11.75, "y": 3.5}, + {"x": 12.75, "y": 3.5, "w": 2.25}, + + {"x": 0, "y": 4.5, "w": 2.25}, + {"x": 2.25, "y": 4.5}, + {"x": 3.25, "y": 4.5}, + {"x": 4.25, "y": 4.5}, + {"x": 5.25, "y": 4.5}, + {"x": 6.25, "y": 4.5}, + {"x": 7.25, "y": 4.5}, + {"x": 8.25, "y": 4.5}, + {"x": 9.25, "y": 4.5}, + {"x": 10.25, "y": 4.5}, + {"x": 11.25, "y": 4.5}, + {"x": 12.25, "y": 4.5, "w": 2.75}, + {"x": 16.25, "y": 4.5}, + + {"x": 0, "y": 5.5, "w": 1.25}, + {"x": 1.25, "y": 5.5, "w": 1.25}, + {"x": 2.5, "y": 5.5, "w": 1.25}, + {"x": 3.75, "y": 5.5, "w": 6.25}, + {"x": 10, "y": 5.5, "w": 1.25}, + {"x": 11.25, "y": 5.5, "w": 1.25}, + {"x": 12.5, "y": 5.5, "w": 1.25}, + {"x": 13.75, "y": 5.5, "w": 1.25}, + {"x": 15.25, "y": 5.5}, + {"x": 16.25, "y": 5.5}, + {"x": 17.25, "y": 5.5} + ] + }, + "LAYOUT_tkl_ansi_wkl": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6.5, "y": 0}, + {"x": 7.5, "y": 0}, + {"x": 8.5, "y": 0}, + {"x": 9.5, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + {"x": 15.25, "y": 0}, + {"x": 16.25, "y": 0}, + {"x": 17.25, "y": 0}, + + {"x": 0, "y": 1.5}, + {"x": 1, "y": 1.5}, + {"x": 2, "y": 1.5}, + {"x": 3, "y": 1.5}, + {"x": 4, "y": 1.5}, + {"x": 5, "y": 1.5}, + {"x": 6, "y": 1.5}, + {"x": 7, "y": 1.5}, + {"x": 8, "y": 1.5}, + {"x": 9, "y": 1.5}, + {"x": 10, "y": 1.5}, + {"x": 11, "y": 1.5}, + {"x": 12, "y": 1.5}, + {"x": 13, "y": 1.5, "w": 2.0}, + {"x": 15.25, "y": 1.5}, + {"x": 16.25, "y": 1.5}, + {"x": 17.25, "y": 1.5}, + + {"x": 0, "y": 2.5, "w": 1.5}, + {"x": 1.5, "y": 2.5}, + {"x": 2.5, "y": 2.5}, + {"x": 3.5, "y": 2.5}, + {"x": 4.5, "y": 2.5}, + {"x": 5.5, "y": 2.5}, + {"x": 6.5, "y": 2.5}, + {"x": 7.5, "y": 2.5}, + {"x": 8.5, "y": 2.5}, + {"x": 9.5, "y": 2.5}, + {"x": 10.5, "y": 2.5}, + {"x": 11.5, "y": 2.5}, + {"x": 12.5, "y": 2.5}, + {"x": 13.5, "y": 2.5, "w": 1.5}, + {"x": 15.25, "y": 2.5}, + {"x": 16.25, "y": 2.5}, + {"x": 17.25, "y": 2.5}, + + {"x": 0, "y": 3.5, "w": 1.75}, + {"x": 1.75, "y": 3.5}, + {"x": 2.75, "y": 3.5}, + {"x": 3.75, "y": 3.5}, + {"x": 4.75, "y": 3.5}, + {"x": 5.75, "y": 3.5}, + {"x": 6.75, "y": 3.5}, + {"x": 7.75, "y": 3.5}, + {"x": 8.75, "y": 3.5}, + {"x": 9.75, "y": 3.5}, + {"x": 10.75, "y": 3.5}, + {"x": 11.75, "y": 3.5}, + {"x": 12.75, "y": 3.5, "w": 2.25}, + + {"x": 0, "y": 4.5, "w": 2.25}, + {"x": 2.25, "y": 4.5}, + {"x": 3.25, "y": 4.5}, + {"x": 4.25, "y": 4.5}, + {"x": 5.25, "y": 4.5}, + {"x": 6.25, "y": 4.5}, + {"x": 7.25, "y": 4.5}, + {"x": 8.25, "y": 4.5}, + {"x": 9.25, "y": 4.5}, + {"x": 10.25, "y": 4.5}, + {"x": 11.25, "y": 4.5}, + {"x": 12.25, "y": 4.5, "w": 2.75}, + {"x": 16.25, "y": 4.5}, + + {"x": 0, "y": 5.5, "w": 1.5}, + {"x": 2.5, "y": 5.5, "w": 1.5}, + {"x": 4, "y": 5.5, "w": 7}, + {"x": 11, "y": 5.5, "w": 1.5}, + {"x": 13.5, "y": 5.5, "w": 1.5}, + {"x": 15.25, "y": 5.5}, + {"x": 16.25, "y": 5.5}, + {"x": 17.25, "y": 5.5} + ] + } + } +} diff --git a/keyboards/melgeek/mach80/keymaps/default/keymap.c b/keyboards/melgeek/mach80/keymaps/default/keymap.c new file mode 100755 index 000000000000..235f0c40db49 --- /dev/null +++ b/keyboards/melgeek/mach80/keymaps/default/keymap.c @@ -0,0 +1,37 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_tkl_ansi( /* Base */ + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_tkl_ansi( /* FN */ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______, KC_END, _______, + _______, RGB_TOG, _______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, _______, _______, _______, RESET, _______, KC_INS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPI, RGB_SPD, _______, _______, _______, + _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, KC_VOLU, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT + ) +}; diff --git a/keyboards/melgeek/mach80/keymaps/tkl/keymap.c b/keyboards/melgeek/mach80/keymaps/tkl/keymap.c new file mode 100755 index 000000000000..17aa4e6d3675 --- /dev/null +++ b/keyboards/melgeek/mach80/keymaps/tkl/keymap.c @@ -0,0 +1,37 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_tkl_ansi( /* Base */ + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_tkl_ansi( /* FN */ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______, KC_END, _______, + _______, RGB_TOG, _______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, _______, _______, _______, RESET, _______, KC_INS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPI, RGB_SPD, _______, _______, _______, + _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, KC_VOLU, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT + ) +}; diff --git a/keyboards/melgeek/mach80/keymaps/via/keymap.c b/keyboards/melgeek/mach80/keymaps/via/keymap.c new file mode 100755 index 000000000000..058786d1d251 --- /dev/null +++ b/keyboards/melgeek/mach80/keymaps/via/keymap.c @@ -0,0 +1,53 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_tkl_ansi( /* Base */ + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_tkl_ansi( /* FN */ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______, KC_END, _______, + _______, RGB_TOG, _______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, _______, _______, _______, RESET, _______, KC_INS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPI, RGB_SPD, _______, _______, _______, + _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, KC_VOLU, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT + ), + [2] = LAYOUT_tkl_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_tkl_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/melgeek/mach80/keymaps/via/rules.mk b/keyboards/melgeek/mach80/keymaps/via/rules.mk new file mode 100755 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/melgeek/mach80/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/melgeek/mach80/keymaps/wkl/keymap.c b/keyboards/melgeek/mach80/keymaps/wkl/keymap.c new file mode 100755 index 000000000000..7fcf43bd01d1 --- /dev/null +++ b/keyboards/melgeek/mach80/keymaps/wkl/keymap.c @@ -0,0 +1,37 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_tkl_ansi_wkl( /* Base */ + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_tkl_ansi_wkl( /* FN */ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______, KC_END, _______, + _______, RGB_TOG, _______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, _______, _______, _______, RESET, _______, KC_INS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPI, RGB_SPD, _______, _______, _______, + _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, KC_VOLU, + _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT + ) +}; diff --git a/keyboards/melgeek/mach80/mach80.c b/keyboards/melgeek/mach80/mach80.c new file mode 100755 index 000000000000..28d21b22b150 --- /dev/null +++ b/keyboards/melgeek/mach80/mach80.c @@ -0,0 +1,17 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "mach80.h" diff --git a/keyboards/melgeek/mach80/mach80.h b/keyboards/melgeek/mach80/mach80.h new file mode 100755 index 000000000000..6e954a918568 --- /dev/null +++ b/keyboards/melgeek/mach80/mach80.h @@ -0,0 +1,53 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +#define LAYOUT_tkl_ansi( \ + K00, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K3D, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K3E, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K3F, \ + 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, K4E, \ + K50, K51, K52, K55, K59, K5A, K5B, K5C, K5D, K5E, K5F \ +) { \ + {K00, XXX, 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, XXX, XXX, K4E, XXX}, \ + {K50, K51, K52, XXX, XXX, K55, XXX, XXX, XXX, K59, K5A, K5B, K5C, K5D, K5E, K5F} \ +} + +#define LAYOUT_tkl_ansi_wkl( \ + K00, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K3D, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K3E, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K3F, \ + 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, K4E, \ + K50, K52, K55, K59, K5C, K5D, K5E, K5F \ +) { \ + {K00, XXX, 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, XXX, XXX, K4E, XXX}, \ + {K50, XXX, K52, XXX, XXX, K55, XXX, XXX, XXX, K59, XXX, XXX, K5C, K5D, K5E, K5F} \ +} diff --git a/keyboards/melgeek/mach80/readme.md b/keyboards/melgeek/mach80/readme.md new file mode 100755 index 000000000000..f4c8572c4d57 --- /dev/null +++ b/keyboards/melgeek/mach80/readme.md @@ -0,0 +1,21 @@ +# MelGeek Mach80 + +![Mach80](https://www.melgeek.com/collections/pcb-plate/products/melgeek-mach80-tkl87-hotswappable-rgb-pcba) + +A hotswap 80% RGB Custom Mechanical keyboard. + +* Keyboard Maintainer: [melgeek001365](https://github.com/melgeek001365) +* Hardware Supported: Mach80 rev1 20210819 +* Hardware Availability: [MelGeek](https://www.melgeek.com/) + +Make example for this keyboard (after setting up your build environment): + + make melgeek/mach80/rev1:default + +Enter the bootloader in 3 ways: + +**Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard * +**Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead * +**Keycode in layout**: Press the key mapped to `RESET` if it is available * + +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/melgeek/mach80/rev1/config.h b/keyboards/melgeek/mach80/rev1/config.h new file mode 100755 index 000000000000..868832d80860 --- /dev/null +++ b/keyboards/melgeek/mach80/rev1/config.h @@ -0,0 +1,42 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +/* + * 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 { F0, F1, F4, F5, F6, E6 } +#define MATRIX_COL_PINS { B0, B1, B2, B3, D2, D5, D4, D6, D7, B4, B5, B6, C6, C7, F7, D3 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION ROW2COL + +#define DRIVER_LED_TOTAL 97 +#define DRIVER_INDICATOR_LED_TOTAL 3 + + +#define RGB_MATRIX_CENTER { 108, 30 } + diff --git a/keyboards/melgeek/mach80/rev1/rev1.c b/keyboards/melgeek/mach80/rev1/rev1.c new file mode 100755 index 000000000000..4d11d3f71185 --- /dev/null +++ b/keyboards/melgeek/mach80/rev1/rev1.c @@ -0,0 +1,193 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "mach80.h" + +#ifdef RGB_MATRIX_ENABLE + + +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { + {0, CS9_SW1, CS8_SW1, CS7_SW1}, /* RGB1 */ + {0, CS9_SW2, CS8_SW2, CS7_SW2}, /* RGB2 */ + {0, CS9_SW3, CS8_SW3, CS7_SW3}, /* RGB3 */ + {0, CS9_SW4, CS8_SW4, CS7_SW4}, /* RGB4 */ + {0, CS9_SW5, CS8_SW5, CS7_SW5}, /* RGB5 */ + {0, CS9_SW6, CS8_SW6, CS7_SW6}, /* RGB6 */ + {0, CS9_SW7, CS8_SW7, CS7_SW7}, /* RGB7 */ + {0, CS9_SW8, CS8_SW8, CS7_SW8}, /* RGB8 */ + {0, CS9_SW9, CS8_SW9, CS7_SW9}, /* RGB9 */ + {0, CS27_SW1, CS26_SW1, CS25_SW1}, /* RGB65 */ + {0, CS27_SW2, CS26_SW2, CS25_SW2}, /* RGB56 */ + {0, CS27_SW3, CS26_SW3, CS25_SW3}, /* RGB57 */ + {0, CS27_SW4, CS26_SW4, CS25_SW4}, /* RGB58 */ + {0, CS27_SW5, CS26_SW5, CS25_SW5}, /* RGB59 */ + {0, CS27_SW6, CS26_SW6, CS25_SW6}, /* RGB67 */ + {0, CS27_SW7, CS26_SW7, CS25_SW7}, /* RGB68 */ + {0, CS12_SW1, CS11_SW1, CS10_SW1}, /* RGB10 */ + {0, CS12_SW2, CS11_SW2, CS10_SW2}, /* RGB11 */ + {0, CS12_SW3, CS11_SW3, CS10_SW3}, /* RGB12 */ + {0, CS12_SW4, CS11_SW4, CS10_SW4}, /* RGB13 */ + {0, CS12_SW5, CS11_SW5, CS10_SW5}, /* RGB14 */ + {0, CS12_SW6, CS11_SW6, CS10_SW6}, /* RGB15 */ + {0, CS12_SW7, CS11_SW7, CS10_SW7}, /* RGB16 */ + {0, CS12_SW8, CS11_SW8, CS10_SW8}, /* RGB17 */ + {0, CS12_SW9, CS11_SW9, CS10_SW9}, /* RGB18 */ + {0, CS27_SW8, CS26_SW8, CS25_SW8}, /* RGB69 */ + {0, CS27_SW9, CS26_SW9, CS25_SW9}, /* RGB70 */ + {0, CS30_SW1, CS29_SW1, CS28_SW1}, /* RGB64 */ + {0, CS30_SW2, CS29_SW2, CS28_SW2}, /* RGB55 */ + {0, CS30_SW3, CS29_SW3, CS28_SW3}, /* RGB71 */ + {0, CS30_SW4, CS29_SW4, CS28_SW4}, /* RGB72 */ + {0, CS30_SW5, CS29_SW5, CS28_SW5}, /* RGB66 */ + {0, CS30_SW6, CS29_SW6, CS28_SW6}, /* RGB60 */ + {0, CS30_SW7, CS29_SW7, CS28_SW7}, /* RGB61 */ + {0, CS30_SW8, CS29_SW8, CS28_SW8}, /* RGB73 */ + {0, CS15_SW1, CS14_SW1, CS13_SW1}, /* RGB19 */ + {0, CS15_SW2, CS14_SW2, CS13_SW2}, /* RGB20 */ + {0, CS15_SW3, CS14_SW3, CS13_SW3}, /* RGB21 */ + {0, CS15_SW4, CS14_SW4, CS13_SW4}, /* RGB22 */ + {0, CS15_SW5, CS14_SW5, CS13_SW5}, /* RGB23 */ + {0, CS15_SW6, CS14_SW6, CS13_SW6}, /* RGB24 */ + {0, CS15_SW7, CS14_SW7, CS13_SW7}, /* RGB25 */ + {0, CS15_SW8, CS14_SW8, CS13_SW8}, /* RGB26 */ + {0, CS15_SW9, CS14_SW9, CS13_SW9}, /* RGB27 */ + {0, CS30_SW9, CS29_SW9, CS28_SW9}, /* RGB74 */ + {0, CS33_SW1, CS32_SW1, CS31_SW1}, /* RGB75 */ + {0, CS33_SW2, CS32_SW2, CS31_SW2}, /* RGB76 */ + {0, CS33_SW3, CS32_SW3, CS31_SW3}, /* RGB77 */ + {0, CS33_SW4, CS32_SW4, CS31_SW4}, /* RGB78 */ + {0, CS33_SW5, CS32_SW5, CS31_SW5}, /* RGB79 */ + {0, CS33_SW6, CS32_SW6, CS31_SW6}, /* RGB80 */ + {0, CS33_SW7, CS32_SW7, CS31_SW7}, /* RGB83 */ + {0, CS18_SW1, CS17_SW1, CS16_SW1}, /* RGB28 */ + {0, CS18_SW2, CS17_SW2, CS16_SW2}, /* RGB29 */ + {0, CS18_SW3, CS17_SW3, CS16_SW3}, /* RGB30 */ + {0, CS18_SW4, CS17_SW4, CS16_SW4}, /* RGB31 */ + {0, CS18_SW5, CS17_SW5, CS16_SW5}, /* RGB32 */ + {0, CS18_SW6, CS17_SW6, CS16_SW6}, /* RGB33 */ + {0, CS18_SW7, CS17_SW7, CS16_SW7}, /* RGB34 */ + {0, CS18_SW8, CS17_SW8, CS16_SW8}, /* RGB35 */ + {0, CS18_SW9, CS17_SW9, CS16_SW9}, /* RGB36 */ + {0, CS33_SW8, CS32_SW8, CS31_SW8}, /* RGB81 */ + {0, CS33_SW9, CS32_SW9, CS31_SW9}, /* RGB82 */ + {0, CS36_SW1, CS35_SW1, CS34_SW1}, /* RGB89 */ + {0, CS36_SW2, CS35_SW2, CS34_SW2}, /* RGB90 */ + {0, CS36_SW3, CS35_SW3, CS34_SW3}, /* RGB91 */ + {0, CS36_SW4, CS35_SW4, CS34_SW4}, /* RGB92 */ + {0, CS21_SW1, CS20_SW1, CS19_SW1}, /* RGB37 */ + {0, CS21_SW2, CS20_SW2, CS19_SW2}, /* RGB38 */ + {0, CS21_SW3, CS20_SW3, CS19_SW3}, /* RGB39 */ + {0, CS21_SW4, CS20_SW4, CS19_SW4}, /* RGB40 */ + {0, CS21_SW5, CS20_SW5, CS19_SW5}, /* RGB41 */ + {0, CS21_SW6, CS20_SW6, CS19_SW6}, /* RGB42 */ + {0, CS21_SW7, CS20_SW7, CS19_SW7}, /* RGB43 */ + {0, CS21_SW8, CS20_SW8, CS19_SW8}, /* RGB44 */ + {0, CS21_SW9, CS20_SW9, CS19_SW9}, /* RGB45 */ + {0, CS36_SW5, CS35_SW5, CS34_SW5}, /* RGB84 */ + {0, CS36_SW6, CS35_SW6, CS34_SW6}, /* RGB85 */ + {0, CS36_SW7, CS35_SW7, CS34_SW7}, /* RGB88 */ + {0, CS36_SW8, CS35_SW8, CS34_SW8}, /* RGB86 */ + {0, CS36_SW9, CS35_SW9, CS34_SW9}, /* RGB87 */ + {0, CS39_SW1, CS38_SW1, CS37_SW1}, /* RGB98 */ + {0, CS39_SW2, CS38_SW2, CS37_SW2}, /* RGB99 */ + {0, CS39_SW3, CS38_SW3, CS37_SW3}, /* RGB100 */ + {0, CS24_SW1, CS23_SW1, CS22_SW1}, /* RGB46 */ + {0, CS24_SW2, CS23_SW2, CS22_SW2}, /* RGB47 */ + {0, CS24_SW3, CS23_SW3, CS22_SW3}, /* RGB48 */ + {0, CS24_SW4, CS23_SW4, CS22_SW4}, /* RGB49 */ + {0, CS24_SW5, CS23_SW5, CS22_SW5}, /* RGB50 */ + {0, CS24_SW6, CS23_SW6, CS22_SW6}, /* RGB51 */ + {0, CS24_SW7, CS23_SW7, CS22_SW7}, /* RGB52 */ + {0, CS24_SW8, CS23_SW8, CS22_SW8}, /* RGB53 */ + {0, CS24_SW9, CS23_SW9, CS22_SW9}, /* RGB54 */ + {0, CS39_SW4, CS38_SW4, CS37_SW4}, /* RGB101 */ + {0, CS39_SW5, CS38_SW5, CS37_SW5}, /* RGB110 */ + {0, CS39_SW6, CS38_SW6, CS37_SW6}, /* RGB111 */ + {0, CS39_SW7, CS38_SW7, CS37_SW7}, /* RGB112 */ +}; +led_config_t g_led_config = { + { + /* C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14 C15 */ + { 0, NO_LED, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }, /* R0 */ + { 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 32, 33 }, /* R1 */ + { 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50 }, /* R2 */ + { 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 65, 15, 34, 51 }, /* R3 */ + { 68, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 81, NO_LED, NO_LED, 83, NO_LED }, /* R4 */ + { 84, 85, 86, NO_LED, NO_LED, 88, NO_LED, NO_LED, NO_LED, 90, 91, 92, 93, 94, 95, 96 } /* R5 */ + }, { + {0, 0}, {12, 0}, {24, 0}, {36, 0}, {48, 0}, {60, 0}, {72, 0}, {84, 0}, {96, 0}, {108, 0}, {120, 0}, {132, 0}, {144, 0}, {156, 0}, {168, 0}, {180, 0}, //16 + {0, 12}, {12, 12}, {24, 12}, {36, 12}, {48, 12}, {60, 12}, {72, 12}, {84, 12}, {96, 12}, {108, 12}, {120, 12}, {132, 12}, {144, 12}, {156, 12}, {168, 12}, {180, 12}, {192, 12}, {204, 12}, {216, 12}, //19 + {0, 24}, {12, 24}, {24, 24}, {36, 24}, {48, 24}, {60, 24}, {72, 24}, {84, 24}, {96, 24}, {108, 24}, {120, 24}, {132, 24}, {144, 24}, {156, 24}, {168, 24}, {180, 24}, {192, 24}, //17 + {0, 36}, {12, 36}, {24, 36}, {36, 36}, {48, 36}, {60, 36}, {72, 36}, {84, 36}, {96, 36}, {108, 36}, {120, 36}, {132, 36}, {144, 36}, {156, 36}, {168, 36}, //15 + {0, 48}, {12, 48}, {24, 48}, {36, 48}, {48, 48}, {60, 48}, {72, 48}, {84, 48}, {96, 48}, {108, 48}, {120, 48}, {132, 48}, {144, 48}, {156, 48}, {168, 48}, {180, 48}, {192, 48}, //17 + {0, 60}, {12, 60}, {24, 60}, {36, 60}, {48, 60}, {60, 60}, {72, 60}, {84, 60}, {96, 60}, {108, 60}, {120, 60}, {132, 60}, {144, 60} //13 + }, { + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + } +}; + +const is31_led g_is31_indicator_leds[3] = { + {0, CS6_SW1, CS5_SW1, CS4_SW1}, /* RGB107 */ + {0, CS6_SW2, CS5_SW2, CS4_SW2}, /* RGB108 */ + {0, CS6_SW3, CS5_SW3, CS4_SW3}, /* RGB109 */ +}; + +bool led_update_kb(led_t led_state) { + if (led_update_user(led_state)) { + if (led_state.caps_lock) { + IS31FL3741_set_pwm_buffer(&g_is31_indicator_leds[2], 0x00, 0x00, 0xff); + } else { + IS31FL3741_set_pwm_buffer(&g_is31_indicator_leds[2], 0x00, 0x00, 0x00); + } + + if (led_state.num_lock) { + IS31FL3741_set_pwm_buffer(&g_is31_indicator_leds[1], 0xff, 0x00, 0x00); + } else { + IS31FL3741_set_pwm_buffer(&g_is31_indicator_leds[1], 0x00, 0x00, 0x00); + } + + if (led_state.scroll_lock) { + IS31FL3741_set_pwm_buffer(&g_is31_indicator_leds[0], 0x00, 0xff, 0x00); + } else { + IS31FL3741_set_pwm_buffer(&g_is31_indicator_leds[0], 0x00, 0x00, 0x00); + } + } + return true; +} + +void matrix_init_kb(void) { + for (int i = 0; i < DRIVER_INDICATOR_LED_TOTAL; ++i) { + is31_led led = g_is31_indicator_leds[i]; + IS31FL3741_set_scaling_registers(&led, 0xFF, 0xFF, 0xFF); + } + + IS31FL3741_update_led_control_registers(DRIVER_ADDR_1, 0); + + matrix_init_user(); +} + + +void keyboard_pre_init_kb(void) { + setPinOutput(B7); + writePinHigh(B7); + keyboard_pre_init_user(); +} +#endif diff --git a/keyboards/melgeek/mach80/rev1/rules.mk b/keyboards/melgeek/mach80/rev1/rules.mk new file mode 100755 index 000000000000..9342088bf157 --- /dev/null +++ b/keyboards/melgeek/mach80/rev1/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 = 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 +# 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 +RGB_MATRIX_ENABLE = yes # Use RGB matrix +RGB_MATRIX_DRIVER = IS31FL3741 + +LTO_ENABLE = yes + +LAYOUTS = tkl_ansi diff --git a/keyboards/melgeek/mj61/config.h b/keyboards/melgeek/mj61/config.h index 164c04fb503e..e3097b9cf7fa 100644 --- a/keyboards/melgeek/mj61/config.h +++ b/keyboards/melgeek/mj61/config.h @@ -37,15 +37,59 @@ #define NO_ACTION_FUNCTION #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended #define RGB_MATRIX_KEYPRESSES #define RGB_MATRIX_LED_PROCESS_LIMIT 4 #define RGB_MATRIX_LED_FLUSH_LIMIT 26 -#define DISABLE_RGB_MATRIX_SPLASH -#define DISABLE_RGB_MATRIX_MULTISPLASH -#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// # define ENABLE_RGB_MATRIX_SPLASH +// # define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH //#define RGB_MATRIX_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/info.json b/keyboards/melgeek/mj61/info.json index 460858474c48..52c98ecdab38 100644 --- a/keyboards/melgeek/mj61/info.json +++ b/keyboards/melgeek/mj61/info.json @@ -2,8 +2,6 @@ "keyboard_name": "MJ61", "url": "", "maintainer": "melgeek001365", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_ansi": { "layout": [ diff --git a/keyboards/melgeek/mj61/rev1/config.h b/keyboards/melgeek/mj61/rev1/config.h index 9586a6930d80..9d73a4fe96a7 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/rev1/rev1.c b/keyboards/melgeek/mj61/rev1/rev1.c index be58f57a955b..9d8de36d8838 100644 --- a/keyboards/melgeek/mj61/rev1/rev1.c +++ b/keyboards/melgeek/mj61/rev1/rev1.c @@ -17,7 +17,7 @@ #include "mj61.h" #ifdef RGB_MATRIX_ENABLE -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { {0, CS12_SW1, CS11_SW1, CS10_SW1}, /* RGB1 */ {0, CS12_SW2, CS11_SW2, CS10_SW2}, /* RGB2 */ {0, CS12_SW3, CS11_SW3, CS10_SW3}, /* RGB3 */ diff --git a/keyboards/melgeek/mj61/rev1/rules.mk b/keyboards/melgeek/mj61/rev1/rules.mk index e7b3e77e449f..500e1907bbc8 100644 --- a/keyboards/melgeek/mj61/rev1/rules.mk +++ b/keyboards/melgeek/mj61/rev1/rules.mk @@ -8,18 +8,15 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth RGB_MATRIX_ENABLE = yes # Use RGB matrix RGB_MATRIX_DRIVER = IS31FL3741 NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in diff --git a/keyboards/melgeek/mj61/rev2/config.h b/keyboards/melgeek/mj61/rev2/config.h index e6c6e9610e43..616426df6552 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/mj61/rev2/rev2.c b/keyboards/melgeek/mj61/rev2/rev2.c index 236b00397216..b46cf08c4e1e 100644 --- a/keyboards/melgeek/mj61/rev2/rev2.c +++ b/keyboards/melgeek/mj61/rev2/rev2.c @@ -19,7 +19,7 @@ #ifdef RGB_MATRIX_ENABLE -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { {0, CS9_SW1, CS8_SW1, CS7_SW1}, /* RGB1 */ {0, CS9_SW2, CS8_SW2, CS7_SW2}, /* RGB3 */ {0, CS9_SW3, CS8_SW3, CS7_SW3}, /* RGB4 */ diff --git a/keyboards/melgeek/mj61/rev2/rules.mk b/keyboards/melgeek/mj61/rev2/rules.mk index e7b3e77e449f..500e1907bbc8 100644 --- a/keyboards/melgeek/mj61/rev2/rules.mk +++ b/keyboards/melgeek/mj61/rev2/rules.mk @@ -8,18 +8,15 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth RGB_MATRIX_ENABLE = yes # Use RGB matrix RGB_MATRIX_DRIVER = IS31FL3741 NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in diff --git a/keyboards/melgeek/mj63/config.h b/keyboards/melgeek/mj63/config.h index 47ad2f96cf79..db80371a2b2a 100644 --- a/keyboards/melgeek/mj63/config.h +++ b/keyboards/melgeek/mj63/config.h @@ -37,15 +37,59 @@ #define NO_ACTION_FUNCTION #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended #define RGB_MATRIX_KEYPRESSES #define RGB_MATRIX_LED_PROCESS_LIMIT 4 #define RGB_MATRIX_LED_FLUSH_LIMIT 26 -#define DISABLE_RGB_MATRIX_SPLASH -#define DISABLE_RGB_MATRIX_MULTISPLASH -#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// # define ENABLE_RGB_MATRIX_SPLASH +// # define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH //#define RGB_MATRIX_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/info.json b/keyboards/melgeek/mj63/info.json index f608b984e2b4..5c5983abd029 100644 --- a/keyboards/melgeek/mj63/info.json +++ b/keyboards/melgeek/mj63/info.json @@ -2,8 +2,6 @@ "keyboard_name": "MJ63", "url": "", "maintainer": "melgeek001365", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_ansi_arrow": { "layout": [ diff --git a/keyboards/melgeek/mj63/rev1/config.h b/keyboards/melgeek/mj63/rev1/config.h index 1f6914f6610c..75f7da43a6b0 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/rev1/rev1.c b/keyboards/melgeek/mj63/rev1/rev1.c index e9f75739c6b0..45abafd84d0a 100644 --- a/keyboards/melgeek/mj63/rev1/rev1.c +++ b/keyboards/melgeek/mj63/rev1/rev1.c @@ -19,7 +19,7 @@ #ifdef RGB_MATRIX_ENABLE -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { {0, CS9_SW1, CS8_SW1, CS7_SW1}, /* RGB1 */ {0, CS9_SW2, CS8_SW2, CS7_SW2}, /* RGB2 */ {0, CS9_SW3, CS8_SW3, CS7_SW3}, /* RGB3 */ @@ -93,19 +93,19 @@ led_config_t g_led_config = { { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 }, /* R0 */ { 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14 }, /* R1 */ { 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, NO_LED }, /* R2 */ - { 53, NO_LED, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41 }, /* R3 */ + { 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, NO_LED, 43, 42, 41 }, /* R3 */ { 61, 60, 59, NO_LED, 64, 62, 63, NO_LED, NO_LED, 58, 57, 56, 55, 54 }, /* R4 */ }, { {0, 0}, {16, 0}, {32, 0}, {48, 0}, {64, 0}, {80, 0}, {96, 0}, {112, 0}, {128, 0}, {144, 0}, {160, 0}, {176, 0}, {192, 0}, {208, 0}, {0, 16}, {16, 16}, {32, 16}, {48, 16}, {64, 16}, {80, 16}, {96, 16}, {112, 16}, {128, 16}, {144, 16}, {160, 16}, {176, 16}, {192, 16}, {208, 16}, {0, 32}, {16, 32}, {32, 32}, {48, 32}, {64, 32}, {80, 32}, {96, 32}, {112, 32}, {128, 32}, {144, 32}, {160, 32}, {176, 32}, {192, 32}, - {0, 48}, {16, 48}, {32, 48}, {48, 48}, {64, 48}, {80, 48}, {96, 48}, {112, 48}, {128, 48}, {144, 48}, {160, 48}, {176, 48}, {192, 48}, + {0, 48}, {16, 48}, {32, 48}, {48, 48}, {64, 48}, {80, 48}, {96, 48}, {112, 48}, {128, 48}, {144, 48}, {160, 48}, {176, 48}, {192, 48}, {0, 64}, {16, 64}, {32, 64}, {48, 64}, {64, 64}, {80, 64}, {96, 64}, {112, 64}, {128, 64}, {144, 64}, {160, 64}, }, { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, } }; diff --git a/keyboards/melgeek/mj63/rev1/rules.mk b/keyboards/melgeek/mj63/rev1/rules.mk index e7793557667b..5e38f8bc9675 100644 --- a/keyboards/melgeek/mj63/rev1/rules.mk +++ b/keyboards/melgeek/mj63/rev1/rules.mk @@ -8,18 +8,15 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth RGB_MATRIX_ENABLE = yes # Use RGB matrix RGB_MATRIX_DRIVER = IS31FL3741 NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in diff --git a/keyboards/melgeek/mj63/rev2/config.h b/keyboards/melgeek/mj63/rev2/config.h index e6c6e9610e43..616426df6552 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/mj63/rev2/rev2.c b/keyboards/melgeek/mj63/rev2/rev2.c index c2379dabe943..b21c4f960c83 100644 --- a/keyboards/melgeek/mj63/rev2/rev2.c +++ b/keyboards/melgeek/mj63/rev2/rev2.c @@ -19,7 +19,7 @@ #ifdef RGB_MATRIX_ENABLE -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { {0, CS9_SW1, CS8_SW1, CS7_SW1}, /* RGB1 */ {0, CS9_SW2, CS8_SW2, CS7_SW2}, /* RGB3 */ {0, CS9_SW3, CS8_SW3, CS7_SW3}, /* RGB4 */ diff --git a/keyboards/melgeek/mj63/rev2/rules.mk b/keyboards/melgeek/mj63/rev2/rules.mk index e7793557667b..5e38f8bc9675 100644 --- a/keyboards/melgeek/mj63/rev2/rules.mk +++ b/keyboards/melgeek/mj63/rev2/rules.mk @@ -8,18 +8,15 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth RGB_MATRIX_ENABLE = yes # Use RGB matrix RGB_MATRIX_DRIVER = IS31FL3741 NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in diff --git a/keyboards/melgeek/mj64/config.h b/keyboards/melgeek/mj64/config.h index 29cb95f171b9..a249be3feaa9 100644 --- a/keyboards/melgeek/mj64/config.h +++ b/keyboards/melgeek/mj64/config.h @@ -37,15 +37,59 @@ #define NO_ACTION_FUNCTION #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended #define RGB_MATRIX_KEYPRESSES #define RGB_MATRIX_LED_PROCESS_LIMIT 4 #define RGB_MATRIX_LED_FLUSH_LIMIT 26 -#define DISABLE_RGB_MATRIX_SPLASH -#define DISABLE_RGB_MATRIX_MULTISPLASH -#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// # define ENABLE_RGB_MATRIX_SPLASH +// # define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH //#define RGB_MATRIX_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/info.json b/keyboards/melgeek/mj64/info.json index a9a8a5040b79..61a7ded2a18e 100644 --- a/keyboards/melgeek/mj64/info.json +++ b/keyboards/melgeek/mj64/info.json @@ -2,8 +2,6 @@ "keyboard_name": "MJ64", "url": "", "maintainer": "melgeek001365", - "width": 15, - "height": 5, "layouts": { "LAYOUT_64_ansi": { "layout": [ diff --git a/keyboards/melgeek/mj64/rev1/config.h b/keyboards/melgeek/mj64/rev1/config.h index fb45ef3582ae..db846cb0118e 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/rev1/rev1.c b/keyboards/melgeek/mj64/rev1/rev1.c index e01765b69457..3279e7a1fe35 100644 --- a/keyboards/melgeek/mj64/rev1/rev1.c +++ b/keyboards/melgeek/mj64/rev1/rev1.c @@ -18,7 +18,7 @@ #ifdef RGB_MATRIX_ENABLE -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { {0, CS9_SW1, CS8_SW1, CS7_SW1}, /* RGB1 */ {0, CS9_SW2, CS8_SW2, CS7_SW2}, /* RGB2 */ {0, CS9_SW3, CS8_SW3, CS7_SW3}, /* RGB3 */ diff --git a/keyboards/melgeek/mj64/rev1/rules.mk b/keyboards/melgeek/mj64/rev1/rules.mk index 0efb7fb8f19c..fe3fd83e809e 100644 --- a/keyboards/melgeek/mj64/rev1/rules.mk +++ b/keyboards/melgeek/mj64/rev1/rules.mk @@ -8,18 +8,15 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth RGB_MATRIX_ENABLE = yes # Use RGB matrix RGB_MATRIX_DRIVER = IS31FL3741 NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in diff --git a/keyboards/melgeek/mj64/rev2/config.h b/keyboards/melgeek/mj64/rev2/config.h index 8af6833b2183..fbe170f18ebb 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/rev2/rev2.c b/keyboards/melgeek/mj64/rev2/rev2.c index d5486b90862d..b0653f9e71fb 100644 --- a/keyboards/melgeek/mj64/rev2/rev2.c +++ b/keyboards/melgeek/mj64/rev2/rev2.c @@ -18,7 +18,7 @@ #ifdef RGB_MATRIX_ENABLE -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { {0, CS9_SW1, CS8_SW1, CS7_SW1}, /* RGB1 */ {0, CS9_SW2, CS8_SW2, CS7_SW2}, /* RGB2 */ {0, CS9_SW3, CS8_SW3, CS7_SW3}, /* RGB3 */ diff --git a/keyboards/melgeek/mj64/rev2/rules.mk b/keyboards/melgeek/mj64/rev2/rules.mk index 0efb7fb8f19c..fe3fd83e809e 100644 --- a/keyboards/melgeek/mj64/rev2/rules.mk +++ b/keyboards/melgeek/mj64/rev2/rules.mk @@ -8,18 +8,15 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth RGB_MATRIX_ENABLE = yes # Use RGB matrix RGB_MATRIX_DRIVER = IS31FL3741 NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in diff --git a/keyboards/melgeek/mj64/rev3/config.h b/keyboards/melgeek/mj64/rev3/config.h index 26909d559841..dfde77f24ac7 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/mj64/rev3/rev3.c b/keyboards/melgeek/mj64/rev3/rev3.c index 03ed9fe0073d..b67dbee75be3 100644 --- a/keyboards/melgeek/mj64/rev3/rev3.c +++ b/keyboards/melgeek/mj64/rev3/rev3.c @@ -18,7 +18,7 @@ #ifdef RGB_MATRIX_ENABLE -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { {0, CS9_SW1, CS8_SW1, CS7_SW1}, /* RGB1 */ {0, CS9_SW2, CS8_SW2, CS7_SW2}, /* RGB3 */ {0, CS9_SW3, CS8_SW3, CS7_SW3}, /* RGB4 */ diff --git a/keyboards/melgeek/mj64/rev3/rules.mk b/keyboards/melgeek/mj64/rev3/rules.mk index 0efb7fb8f19c..fe3fd83e809e 100644 --- a/keyboards/melgeek/mj64/rev3/rules.mk +++ b/keyboards/melgeek/mj64/rev3/rules.mk @@ -8,18 +8,15 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth RGB_MATRIX_ENABLE = yes # Use RGB matrix RGB_MATRIX_DRIVER = IS31FL3741 NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in diff --git a/keyboards/melgeek/mj65/config.h b/keyboards/melgeek/mj65/config.h index 12a7c7ce1866..70a12d925574 100644 --- a/keyboards/melgeek/mj65/config.h +++ b/keyboards/melgeek/mj65/config.h @@ -37,15 +37,59 @@ #define NO_ACTION_FUNCTION #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended #define RGB_MATRIX_KEYPRESSES #define RGB_MATRIX_LED_PROCESS_LIMIT 4 #define RGB_MATRIX_LED_FLUSH_LIMIT 26 -#define DISABLE_RGB_MATRIX_SPLASH -#define DISABLE_RGB_MATRIX_MULTISPLASH -#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// # define ENABLE_RGB_MATRIX_SPLASH +// # define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH //#define RGB_MATRIX_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/info.json b/keyboards/melgeek/mj65/info.json index 7e11b6eb7e1b..e5fffa6d83e7 100644 --- a/keyboards/melgeek/mj65/info.json +++ b/keyboards/melgeek/mj65/info.json @@ -2,8 +2,6 @@ "keyboard_name": "MJ65", "url": "", "maintainer": "melgeek001365", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_ansi": { "layout": [ diff --git a/keyboards/melgeek/mj65/rev3/config.h b/keyboards/melgeek/mj65/rev3/config.h index 7955f4be971a..d9a8c5a815c4 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/mj65/rev3/rev3.c b/keyboards/melgeek/mj65/rev3/rev3.c index 43fae53a36a1..f02c29e74746 100644 --- a/keyboards/melgeek/mj65/rev3/rev3.c +++ b/keyboards/melgeek/mj65/rev3/rev3.c @@ -18,7 +18,7 @@ #ifdef RGB_MATRIX_ENABLE -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { {0, CS9_SW1, CS8_SW1, CS7_SW1}, /* RGB1 */ {0, CS9_SW2, CS8_SW2, CS7_SW2}, /* RGB2 */ {0, CS9_SW3, CS8_SW3, CS7_SW3}, /* RGB3 */ diff --git a/keyboards/melgeek/mj65/rev3/rules.mk b/keyboards/melgeek/mj65/rev3/rules.mk index 13a802355ca9..3745a36fbf53 100644 --- a/keyboards/melgeek/mj65/rev3/rules.mk +++ b/keyboards/melgeek/mj65/rev3/rules.mk @@ -8,18 +8,15 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth RGB_MATRIX_ENABLE = yes # Use RGB matrix RGB_MATRIX_DRIVER = IS31FL3741 NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in diff --git a/keyboards/melgeek/mj6xy/config.h b/keyboards/melgeek/mj6xy/config.h new file mode 100755 index 000000000000..4a6336c1c9ce --- /dev/null +++ b/keyboards/melgeek/mj6xy/config.h @@ -0,0 +1,40 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xEDED +#define PRODUCT_ID 0x6060 +#define DEVICE_VER 0x0001 +#define MANUFACTURER MelGeek +#define PRODUCT MJ6XY + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 3 + + + +/* 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 + +/* VIA related config */ +#define VIA_EEPROM_LAYOUT_OPTIONS_SIZE 2 + diff --git a/keyboards/melgeek/mj6xy/info.json b/keyboards/melgeek/mj6xy/info.json new file mode 100755 index 000000000000..712b97295cfa --- /dev/null +++ b/keyboards/melgeek/mj6xy/info.json @@ -0,0 +1,3456 @@ +{ + "keyboard_name": "MJ6XY", + "url": "", + "maintainer": "melgeek001365", + "layouts": { + "LAYOUT_60_ansi": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0, "w": 2}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"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}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3}, + {"x": 12.25, "y": 3, "w": 2.75}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6.25}, + {"x": 10, "y": 4, "w": 1.25}, + {"x": 11.25, "y": 4, "w": 1.25}, + {"x": 12.5, "y": 4, "w": 1.25}, + {"x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_60_ansi_arrow": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0, "w": 2}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"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}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3, "w": 1.75}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6.25}, + {"x": 10, "y": 4 }, + {"x": 11, "y": 4 }, + {"x": 12, "y": 4 }, + {"x": 13, "y": 4 }, + {"x": 14, "y": 4 } + ] + }, + "LAYOUT_60_ansi_arrow_6u_spc": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0, "w": 2}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"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}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3, "w": 1.75}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6}, + {"x": 9.75, "y": 4, "w": 1.25}, + {"x": 11, "y": 4 }, + {"x": 12, "y": 4 }, + {"x": 13, "y": 4 }, + {"x": 14, "y": 4 } + ] + }, + "LAYOUT_60_ansi_arrow_3u_spc": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0, "w": 2}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"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}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3, "w": 1.75}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.75}, + {"x": 1.75, "y": 4, "w": 1.25}, + {"x": 3, "y": 4, "w": 1.25}, + {"x": 4.25, "y": 4, "w": 1.25}, + {"x": 5.5, "y": 4, "w": 3 }, + {"x": 8.5, "y": 4, "w": 1.25 }, + {"x": 9.75, "y": 4 , "w": 1.25}, + {"x": 11, "y": 4 }, + {"x": 12, "y": 4 }, + {"x": 13, "y": 4 }, + {"x": 14, "y": 4 } + ] + }, + "LAYOUT_60_ansi_arrow_split_3u_spc": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0, "w": 2}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"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}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3, "w": 1.75}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 3 }, + {"x": 6.75, "y": 4, "w": 3 }, + {"x": 9.75, "y": 4, "w": 1.25 }, + {"x": 11, "y": 4 }, + {"x": 12, "y": 4 }, + {"x": 13, "y": 4 }, + {"x": 14, "y": 4 } + ] + }, + "LAYOUT_60_ansi_7u_spc": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0, "w": 2}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"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}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3}, + {"x": 12.25, "y": 3, "w": 2.75}, + + {"x": 0, "y": 4, "w": 1.5}, + {"x": 1.5, "y": 4}, + {"x": 2.5, "y": 4, "w": 1.5}, + {"x": 4, "y": 4, "w": 7}, + {"x": 11, "y": 4, "w": 1.5}, + {"x": 12.5, "y": 4}, + {"x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_64_ansi": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0, "w": 2}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"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}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 0, "y": 3, "w": 2}, + {"x": 2, "y": 3}, + {"x": 3, "y": 3}, + {"x": 4, "y": 3}, + {"x": 5, "y": 3}, + {"x": 6, "y": 3}, + {"x": 7, "y": 3}, + {"x": 8, "y": 3}, + {"x": 9, "y": 3}, + {"x": 10, "y": 3}, + {"x": 11, "y": 3}, + {"x": 12, "y": 3}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6.25}, + {"x": 10, "y": 4 }, + {"x": 11, "y": 4 }, + {"x": 12, "y": 4 }, + {"x": 13, "y": 4 }, + {"x": 14, "y": 4 } + ] + }, + "LAYOUT_64_ansi_6u_spc": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0, "w": 2}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"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}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 0, "y": 3, "w": 2}, + {"x": 2, "y": 3}, + {"x": 3, "y": 3}, + {"x": 4, "y": 3}, + {"x": 5, "y": 3}, + {"x": 6, "y": 3}, + {"x": 7, "y": 3}, + {"x": 8, "y": 3}, + {"x": 9, "y": 3}, + {"x": 10, "y": 3}, + {"x": 11, "y": 3}, + {"x": 12, "y": 3}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6}, + {"x": 9.75, "y": 4, "w":1.25 }, + {"x": 11, "y": 4 }, + {"x": 12, "y": 4 }, + {"x": 13, "y": 4 }, + {"x": 14, "y": 4 } + ] + }, + "LAYOUT_64_ansi_3u_spc": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0, "w": 2}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"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}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 0, "y": 3, "w": 2}, + {"x": 2, "y": 3}, + {"x": 3, "y": 3}, + {"x": 4, "y": 3}, + {"x": 5, "y": 3}, + {"x": 6, "y": 3}, + {"x": 7, "y": 3}, + {"x": 8, "y": 3}, + {"x": 9, "y": 3}, + {"x": 10, "y": 3}, + {"x": 11, "y": 3}, + {"x": 12, "y": 3}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.75}, + {"x": 1.75, "y": 4, "w": 1.25}, + {"x": 3, "y": 4, "w": 1.25}, + {"x": 4.25, "y": 4, "w": 1.25}, + {"x": 5.5, "y": 4, "w": 3 }, + {"x": 8.5, "y": 4, "w": 1.25 }, + {"x": 9.75, "y": 4 , "w": 1.25}, + {"x": 11, "y": 4 }, + {"x": 12, "y": 4 }, + {"x": 13, "y": 4 }, + {"x": 14, "y": 4 } + ] + }, + "LAYOUT_64_ansi_split_3u_spc": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0, "w": 2}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"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}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 0, "y": 3, "w": 2}, + {"x": 2, "y": 3}, + {"x": 3, "y": 3}, + {"x": 4, "y": 3}, + {"x": 5, "y": 3}, + {"x": 6, "y": 3}, + {"x": 7, "y": 3}, + {"x": 8, "y": 3}, + {"x": 9, "y": 3}, + {"x": 10, "y": 3}, + {"x": 11, "y": 3}, + {"x": 12, "y": 3}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 3 }, + {"x": 6.75, "y": 4, "w": 3 }, + {"x": 9.75, "y": 4, "w": 1.25 }, + {"x": 11, "y": 4 }, + {"x": 12, "y": 4 }, + {"x": 13, "y": 4 }, + {"x": 14, "y": 4 } + ] + }, + "LAYOUT_60_iso": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0, "w": 2}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2}, + {"x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3}, + {"x": 12.25, "y": 3, "w": 2.75}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6.25}, + {"x": 10, "y": 4, "w": 1.25}, + {"x": 11.25, "y": 4, "w": 1.25}, + {"x": 12.5, "y": 4, "w": 1.25}, + {"x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_60_iso_split_rshift": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0, "w": 2}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2}, + {"x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"x": 0, "y": 3, "w": 1.25}, + {"x": 1.25, "y": 3}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3}, + {"x": 12.25, "y": 3, "w": 1.75}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6.25}, + {"x": 10, "y": 4, "w": 1.25}, + {"x": 11.25, "y": 4, "w": 1.25}, + {"x": 12.5, "y": 4, "w": 1.25}, + {"x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_60_iso_7u_spc_split_rshift": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0, "w": 2}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2}, + {"x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"x": 0, "y": 3, "w": 1.25}, + {"x": 1.25, "y": 3}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3}, + {"x": 12.25, "y": 3, "w": 1.75}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.5}, + {"x": 1.5, "y": 4}, + {"x": 2.5, "y": 4, "w": 1.5}, + {"x": 4, "y": 4, "w": 7}, + {"x": 11, "y": 4, "w": 1.5}, + {"x": 12.5, "y": 4}, + {"x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_iso_arrow": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0, "w": 2}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2}, + {"x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3, "w": 1.75}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6.25}, + {"x": 10, "y": 4 }, + {"x": 11, "y": 4 }, + {"x": 12, "y": 4 }, + {"x": 13, "y": 4 }, + {"x": 14, "y": 4 } + ] + }, + "LAYOUT_60_iso_arrow_6u_spc": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0, "w": 2}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2}, + {"x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3, "w": 1.75}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6}, + {"x": 9.75, "y": 4, "w": 1.25}, + {"x": 11, "y": 4 }, + {"x": 12, "y": 4 }, + {"x": 13, "y": 4 }, + {"x": 14, "y": 4 } + ] + }, + "LAYOUT_60_iso_arrow_3u_spc": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0, "w": 2}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2}, + {"x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3, "w": 1.75}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.75}, + {"x": 1.75, "y": 4, "w": 1.25}, + {"x": 3, "y": 4, "w": 1.25}, + {"x": 4.25, "y": 4, "w": 1.25}, + {"x": 5.5, "y": 4, "w": 3 }, + {"x": 8.5, "y": 4, "w": 1.25 }, + {"x": 9.75, "y": 4 , "w": 1.25}, + {"x": 11, "y": 4 }, + {"x": 12, "y": 4 }, + {"x": 13, "y": 4 }, + {"x": 14, "y": 4 } + ] + }, + "LAYOUT_60_iso_arrow_split_3u_spc": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0, "w": 2}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2}, + {"x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3, "w": 1.75}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 3 }, + {"x": 6.75, "y": 4, "w": 3 }, + {"x": 9.75, "y": 4, "w": 1.25 }, + {"x": 11, "y": 4 }, + {"x": 12, "y": 4 }, + {"x": 13, "y": 4 }, + {"x": 14, "y": 4 } + ] + }, + "LAYOUT_60_iso_7u_spc": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0, "w": 2}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2}, + {"x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3}, + {"x": 12.25, "y": 3, "w": 2.75}, + + {"x": 0, "y": 4, "w": 1.5}, + {"x": 1.5, "y": 4}, + {"x": 2.5, "y": 4, "w": 1.5}, + {"x": 4, "y": 4, "w": 7}, + {"x": 11, "y": 4, "w": 1.5}, + {"x": 12.5, "y": 4}, + {"x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_64_iso": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0, "w": 2}, + + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2}, + {"x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"x": 0, "y": 3, "w": 2}, + {"x": 2, "y": 3}, + {"x": 3, "y": 3}, + {"x": 4, "y": 3}, + {"x": 5, "y": 3}, + {"x": 6, "y": 3}, + {"x": 7, "y": 3}, + {"x": 8, "y": 3}, + {"x": 9, "y": 3}, + {"x": 10, "y": 3}, + {"x": 11, "y": 3}, + {"x": 12, "y": 3}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6.25}, + {"x": 10, "y": 4 }, + {"x": 11, "y": 4 }, + {"x": 12, "y": 4 }, + {"x": 13, "y": 4 }, + {"x": 14, "y": 4 } + ] + }, + "LAYOUT_64_iso_6u_spc": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0, "w": 2}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2}, + {"x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"x": 0, "y": 3, "w": 2}, + {"x": 2, "y": 3}, + {"x": 3, "y": 3}, + {"x": 4, "y": 3}, + {"x": 5, "y": 3}, + {"x": 6, "y": 3}, + {"x": 7, "y": 3}, + {"x": 8, "y": 3}, + {"x": 9, "y": 3}, + {"x": 10, "y": 3}, + {"x": 11, "y": 3}, + {"x": 12, "y": 3}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6}, + {"x": 9.75, "y": 4, "w":1.25 }, + {"x": 11, "y": 4 }, + {"x": 12, "y": 4 }, + {"x": 13, "y": 4 }, + {"x": 14, "y": 4 } + ] + }, + "LAYOUT_64_iso_3u_spc": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0, "w": 2}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2}, + {"x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"x": 0, "y": 3, "w": 2}, + {"x": 2, "y": 3}, + {"x": 3, "y": 3}, + {"x": 4, "y": 3}, + {"x": 5, "y": 3}, + {"x": 6, "y": 3}, + {"x": 7, "y": 3}, + {"x": 8, "y": 3}, + {"x": 9, "y": 3}, + {"x": 10, "y": 3}, + {"x": 11, "y": 3}, + {"x": 12, "y": 3}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.75}, + {"x": 1.75, "y": 4, "w": 1.25}, + {"x": 3, "y": 4, "w": 1.25}, + {"x": 4.25, "y": 4, "w": 1.25}, + {"x": 5.5, "y": 4, "w": 3 }, + {"x": 8.5, "y": 4, "w": 1.25 }, + {"x": 9.75, "y": 4 , "w": 1.25}, + {"x": 11, "y": 4 }, + {"x": 12, "y": 4 }, + {"x": 13, "y": 4 }, + {"x": 14, "y": 4 } + ] + }, + "LAYOUT_64_iso_split_3u_spc": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0, "w": 2}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2}, + {"x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"x": 0, "y": 3, "w": 2}, + {"x": 2, "y": 3}, + {"x": 3, "y": 3}, + {"x": 4, "y": 3}, + {"x": 5, "y": 3}, + {"x": 6, "y": 3}, + {"x": 7, "y": 3}, + {"x": 8, "y": 3}, + {"x": 9, "y": 3}, + {"x": 10, "y": 3}, + {"x": 11, "y": 3}, + {"x": 12, "y": 3}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 3 }, + {"x": 6.75, "y": 4, "w": 3 }, + {"x": 9.75, "y": 4, "w": 1.25 }, + {"x": 11, "y": 4 }, + {"x": 12, "y": 4 }, + {"x": 13, "y": 4 }, + {"x": 14, "y": 4 } + ] + }, + "LAYOUT_60_iso_1u_lshift_split_rshift": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0, "w": 2}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2}, + {"x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"x": 0, "y": 3}, + {"x": 1, "y": 3}, + {"x": 2, "y": 3}, + {"x": 3, "y": 3}, + {"x": 4, "y": 3}, + {"x": 5, "y": 3}, + {"x": 6, "y": 3}, + {"x": 7, "y": 3}, + {"x": 8, "y": 3}, + {"x": 9, "y": 3}, + {"x": 10, "y": 3}, + {"x": 11, "y": 3}, + {"x": 12, "y": 3, "w": 2}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6.25}, + {"x": 10, "y": 4, "w": 1.25}, + {"x": 11.25, "y": 4, "w": 1.25}, + {"x": 12.5, "y": 4, "w": 1.25}, + {"x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_60_iso_1u_lshift_7u_spc_split_rshift": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0, "w": 2}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2}, + {"x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"x": 0, "y": 3}, + {"x": 1, "y": 3}, + {"x": 2, "y": 3}, + {"x": 3, "y": 3}, + {"x": 4, "y": 3}, + {"x": 5, "y": 3}, + {"x": 6, "y": 3}, + {"x": 7, "y": 3}, + {"x": 8, "y": 3}, + {"x": 9, "y": 3}, + {"x": 10, "y": 3}, + {"x": 11, "y": 3}, + {"x": 12, "y": 3, "w": 2}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.5}, + {"x": 1.5, "y": 4}, + {"x": 2.5, "y": 4, "w": 1.5}, + {"x": 4, "y": 4, "w": 7}, + {"x": 11, "y": 4, "w": 1.5}, + {"x": 12.5, "y": 4}, + {"x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_ansi_split_bs": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"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}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3}, + {"x": 12.25, "y": 3, "w": 2.75}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6.25}, + {"x": 10, "y": 4, "w": 1.25}, + {"x": 11.25, "y": 4, "w": 1.25}, + {"x": 12.5, "y": 4, "w": 1.25}, + {"x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_60_ansi_arrow_split_bs": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"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}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3, "w": 1.75}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6.25}, + {"x": 10, "y": 4 }, + {"x": 11, "y": 4 }, + {"x": 12, "y": 4 }, + {"x": 13, "y": 4 }, + {"x": 14, "y": 4 } + ] + }, + "LAYOUT_60_ansi_arrow_6u_spc_split_bs": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"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}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3, "w": 1.75}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6}, + {"x": 9.75, "y": 4, "w": 1.25}, + {"x": 11, "y": 4 }, + {"x": 12, "y": 4 }, + {"x": 13, "y": 4 }, + {"x": 14, "y": 4 } + ] + }, + "LAYOUT_60_ansi_arrow_3u_spc_split_bs": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"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}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3, "w": 1.75}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.75}, + {"x": 1.75, "y": 4, "w": 1.25}, + {"x": 3, "y": 4, "w": 1.25}, + {"x": 4.25, "y": 4, "w": 1.25}, + {"x": 5.5, "y": 4, "w": 3 }, + {"x": 8.5, "y": 4, "w": 1.25 }, + {"x": 9.75, "y": 4 , "w": 1.25}, + {"x": 11, "y": 4 }, + {"x": 12, "y": 4 }, + {"x": 13, "y": 4 }, + {"x": 14, "y": 4 } + ] + }, + "LAYOUT_60_ansi_arrow_split_bs_3u_spc": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"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}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3, "w": 1.75}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 3 }, + {"x": 6.75, "y": 4, "w": 3 }, + {"x": 9.75, "y": 4, "w": 1.25 }, + {"x": 11, "y": 4 }, + {"x": 12, "y": 4 }, + {"x": 13, "y": 4 }, + {"x": 14, "y": 4 } + ] + }, + "LAYOUT_60_ansi_7u_spc_split_bs": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"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}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3}, + {"x": 12.25, "y": 3, "w": 2.75}, + + {"x": 0, "y": 4, "w": 1.5}, + {"x": 1.5, "y": 4}, + {"x": 2.5, "y": 4, "w": 1.5}, + {"x": 4, "y": 4, "w": 7}, + {"x": 11, "y": 4, "w": 1.5}, + {"x": 12.5, "y": 4}, + {"x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_64_ansi_split_bs": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"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}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 0, "y": 3, "w": 2}, + {"x": 2, "y": 3}, + {"x": 3, "y": 3}, + {"x": 4, "y": 3}, + {"x": 5, "y": 3}, + {"x": 6, "y": 3}, + {"x": 7, "y": 3}, + {"x": 8, "y": 3}, + {"x": 9, "y": 3}, + {"x": 10, "y": 3}, + {"x": 11, "y": 3}, + {"x": 12, "y": 3}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6.25}, + {"x": 10, "y": 4 }, + {"x": 11, "y": 4 }, + {"x": 12, "y": 4 }, + {"x": 13, "y": 4 }, + {"x": 14, "y": 4 } + ] + }, + "LAYOUT_64_ansi_6u_spc_split_bs": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"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}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 0, "y": 3, "w": 2}, + {"x": 2, "y": 3}, + {"x": 3, "y": 3}, + {"x": 4, "y": 3}, + {"x": 5, "y": 3}, + {"x": 6, "y": 3}, + {"x": 7, "y": 3}, + {"x": 8, "y": 3}, + {"x": 9, "y": 3}, + {"x": 10, "y": 3}, + {"x": 11, "y": 3}, + {"x": 12, "y": 3}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6}, + {"x": 9.75, "y": 4, "w":1.25 }, + {"x": 11, "y": 4 }, + {"x": 12, "y": 4 }, + {"x": 13, "y": 4 }, + {"x": 14, "y": 4 } + ] + }, + "LAYOUT_64_ansi_3u_spc_split_bs": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"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}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 0, "y": 3, "w": 2}, + {"x": 2, "y": 3}, + {"x": 3, "y": 3}, + {"x": 4, "y": 3}, + {"x": 5, "y": 3}, + {"x": 6, "y": 3}, + {"x": 7, "y": 3}, + {"x": 8, "y": 3}, + {"x": 9, "y": 3}, + {"x": 10, "y": 3}, + {"x": 11, "y": 3}, + {"x": 12, "y": 3}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.75}, + {"x": 1.75, "y": 4, "w": 1.25}, + {"x": 3, "y": 4, "w": 1.25}, + {"x": 4.25, "y": 4, "w": 1.25}, + {"x": 5.5, "y": 4, "w": 3 }, + {"x": 8.5, "y": 4, "w": 1.25 }, + {"x": 9.75, "y": 4 , "w": 1.25}, + {"x": 11, "y": 4 }, + {"x": 12, "y": 4 }, + {"x": 13, "y": 4 }, + {"x": 14, "y": 4 } + ] + }, + "LAYOUT_64_ansi_split_bs_3u_spc": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"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}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 0, "y": 3, "w": 2}, + {"x": 2, "y": 3}, + {"x": 3, "y": 3}, + {"x": 4, "y": 3}, + {"x": 5, "y": 3}, + {"x": 6, "y": 3}, + {"x": 7, "y": 3}, + {"x": 8, "y": 3}, + {"x": 9, "y": 3}, + {"x": 10, "y": 3}, + {"x": 11, "y": 3}, + {"x": 12, "y": 3}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 3 }, + {"x": 6.75, "y": 4, "w": 3 }, + {"x": 9.75, "y": 4, "w": 1.25 }, + {"x": 11, "y": 4 }, + {"x": 12, "y": 4 }, + {"x": 13, "y": 4 }, + {"x": 14, "y": 4 } + ] + }, + "LAYOUT_60_iso_split_bs": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2}, + {"x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3}, + {"x": 12.25, "y": 3, "w": 2.75}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6.25}, + {"x": 10, "y": 4, "w": 1.25}, + {"x": 11.25, "y": 4, "w": 1.25}, + {"x": 12.5, "y": 4, "w": 1.25}, + {"x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_60_iso_split_bs_rshift": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2}, + {"x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"x": 0, "y": 3, "w": 1.25}, + {"x": 1.25, "y": 3}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3}, + {"x": 12.25, "y": 3, "w": 1.75}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6.25}, + {"x": 10, "y": 4, "w": 1.25}, + {"x": 11.25, "y": 4, "w": 1.25}, + {"x": 12.5, "y": 4, "w": 1.25}, + {"x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_60_iso_7u_spc_split_bs_rshift": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2}, + {"x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"x": 0, "y": 3, "w": 1.25}, + {"x": 1.25, "y": 3}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3}, + {"x": 12.25, "y": 3, "w": 1.75}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.5}, + {"x": 1.5, "y": 4}, + {"x": 2.5, "y": 4, "w": 1.5}, + {"x": 4, "y": 4, "w": 7}, + {"x": 11, "y": 4, "w": 1.5}, + {"x": 12.5, "y": 4}, + {"x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_iso_arrow_split_bs": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2}, + {"x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3, "w": 1.75}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6.25}, + {"x": 10, "y": 4 }, + {"x": 11, "y": 4 }, + {"x": 12, "y": 4 }, + {"x": 13, "y": 4 }, + {"x": 14, "y": 4 } + ] + }, + "LAYOUT_60_iso_arrow_6u_spc_split_bs": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2}, + {"x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3, "w": 1.75}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6}, + {"x": 9.75, "y": 4, "w": 1.25}, + {"x": 11, "y": 4 }, + {"x": 12, "y": 4 }, + {"x": 13, "y": 4 }, + {"x": 14, "y": 4 } + ] + }, + "LAYOUT_60_iso_arrow_3u_spc_split_bs": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2}, + {"x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3, "w": 1.75}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.75}, + {"x": 1.75, "y": 4, "w": 1.25}, + {"x": 3, "y": 4, "w": 1.25}, + {"x": 4.25, "y": 4, "w": 1.25}, + {"x": 5.5, "y": 4, "w": 3 }, + {"x": 8.5, "y": 4, "w": 1.25 }, + {"x": 9.75, "y": 4 , "w": 1.25}, + {"x": 11, "y": 4 }, + {"x": 12, "y": 4 }, + {"x": 13, "y": 4 }, + {"x": 14, "y": 4 } + ] + }, + "LAYOUT_60_iso_arrow_split_bs_3u_spc": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2}, + {"x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3, "w": 1.75}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 3 }, + {"x": 6.75, "y": 4, "w": 3 }, + {"x": 9.75, "y": 4, "w": 1.25 }, + {"x": 11, "y": 4 }, + {"x": 12, "y": 4 }, + {"x": 13, "y": 4 }, + {"x": 14, "y": 4 } + ] + }, + "LAYOUT_60_iso_7u_spc_split_bs": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2}, + {"x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3}, + {"x": 12.25, "y": 3, "w": 2.75}, + + {"x": 0, "y": 4, "w": 1.5}, + {"x": 1.5, "y": 4}, + {"x": 2.5, "y": 4, "w": 1.5}, + {"x": 4, "y": 4, "w": 7}, + {"x": 11, "y": 4, "w": 1.5}, + {"x": 12.5, "y": 4}, + {"x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_64_iso_split_bs": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2}, + {"x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"x": 0, "y": 3, "w": 2}, + {"x": 2, "y": 3}, + {"x": 3, "y": 3}, + {"x": 4, "y": 3}, + {"x": 5, "y": 3}, + {"x": 6, "y": 3}, + {"x": 7, "y": 3}, + {"x": 8, "y": 3}, + {"x": 9, "y": 3}, + {"x": 10, "y": 3}, + {"x": 11, "y": 3}, + {"x": 12, "y": 3}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6.25}, + {"x": 10, "y": 4 }, + {"x": 11, "y": 4 }, + {"x": 12, "y": 4 }, + {"x": 13, "y": 4 }, + {"x": 14, "y": 4 } + ] + }, + "LAYOUT_64_iso_6u_spc_split_bs": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2}, + {"x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"x": 0, "y": 3, "w": 2}, + {"x": 2, "y": 3}, + {"x": 3, "y": 3}, + {"x": 4, "y": 3}, + {"x": 5, "y": 3}, + {"x": 6, "y": 3}, + {"x": 7, "y": 3}, + {"x": 8, "y": 3}, + {"x": 9, "y": 3}, + {"x": 10, "y": 3}, + {"x": 11, "y": 3}, + {"x": 12, "y": 3}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6}, + {"x": 9.75, "y": 4, "w":1.25 }, + {"x": 11, "y": 4 }, + {"x": 12, "y": 4 }, + {"x": 13, "y": 4 }, + {"x": 14, "y": 4 } + ] + }, + "LAYOUT_64_iso_3u_spc_split_bs": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2}, + {"x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"x": 0, "y": 3, "w": 2}, + {"x": 2, "y": 3}, + {"x": 3, "y": 3}, + {"x": 4, "y": 3}, + {"x": 5, "y": 3}, + {"x": 6, "y": 3}, + {"x": 7, "y": 3}, + {"x": 8, "y": 3}, + {"x": 9, "y": 3}, + {"x": 10, "y": 3}, + {"x": 11, "y": 3}, + {"x": 12, "y": 3}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.75}, + {"x": 1.75, "y": 4, "w": 1.25}, + {"x": 3, "y": 4, "w": 1.25}, + {"x": 4.25, "y": 4, "w": 1.25}, + {"x": 5.5, "y": 4, "w": 3 }, + {"x": 8.5, "y": 4, "w": 1.25 }, + {"x": 9.75, "y": 4 , "w": 1.25}, + {"x": 11, "y": 4 }, + {"x": 12, "y": 4 }, + {"x": 13, "y": 4 }, + {"x": 14, "y": 4 } + ] + }, + "LAYOUT_64_iso_split_bs_3u_spc": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2}, + {"x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"x": 0, "y": 3, "w": 2}, + {"x": 2, "y": 3}, + {"x": 3, "y": 3}, + {"x": 4, "y": 3}, + {"x": 5, "y": 3}, + {"x": 6, "y": 3}, + {"x": 7, "y": 3}, + {"x": 8, "y": 3}, + {"x": 9, "y": 3}, + {"x": 10, "y": 3}, + {"x": 11, "y": 3}, + {"x": 12, "y": 3}, + {"x": 13, "y": 3}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 3 }, + {"x": 6.75, "y": 4, "w": 3 }, + {"x": 9.75, "y": 4, "w": 1.25 }, + {"x": 11, "y": 4 }, + {"x": 12, "y": 4 }, + {"x": 13, "y": 4 }, + {"x": 14, "y": 4 } + ] + }, + "LAYOUT_60_iso_1u_lshift_split_bs_rshift": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2}, + {"x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"x": 0, "y": 3}, + {"x": 1, "y": 3}, + {"x": 2, "y": 3}, + {"x": 3, "y": 3}, + {"x": 4, "y": 3}, + {"x": 5, "y": 3}, + {"x": 6, "y": 3}, + {"x": 7, "y": 3}, + {"x": 8, "y": 3}, + {"x": 9, "y": 3}, + {"x": 10, "y": 3}, + {"x": 11, "y": 3}, + {"x": 12, "y": 3, "w": 2}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.25}, + {"x": 1.25, "y": 4, "w": 1.25}, + {"x": 2.5, "y": 4, "w": 1.25}, + {"x": 3.75, "y": 4, "w": 6.25}, + {"x": 10, "y": 4, "w": 1.25}, + {"x": 11.25, "y": 4, "w": 1.25}, + {"x": 12.5, "y": 4, "w": 1.25}, + {"x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_60_iso_1u_lshift_7u_spc_split_bs_rshift": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + + {"x": 0, "y": 2, "w": 1.75}, + {"x": 1.75, "y": 2}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2}, + {"x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"x": 0, "y": 3}, + {"x": 1, "y": 3}, + {"x": 2, "y": 3}, + {"x": 3, "y": 3}, + {"x": 4, "y": 3}, + {"x": 5, "y": 3}, + {"x": 6, "y": 3}, + {"x": 7, "y": 3}, + {"x": 8, "y": 3}, + {"x": 9, "y": 3}, + {"x": 10, "y": 3}, + {"x": 11, "y": 3}, + {"x": 12, "y": 3, "w": 2}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.5}, + {"x": 1.5, "y": 4}, + {"x": 2.5, "y": 4, "w": 1.5}, + {"x": 4, "y": 4, "w": 7}, + {"x": 11, "y": 4, "w": 1.5}, + {"x": 12.5, "y": 4}, + {"x": 13.5, "y": 4, "w": 1.5} + ] + } + } +} diff --git a/keyboards/melgeek/mj6xy/keymaps/60_ansi/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_ansi/keymap.c new file mode 100755 index 000000000000..4bedb0d4008a --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/60_ansi/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_60_ansi( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL), + + LAYOUT_60_ansi( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/melgeek/mj6xy/keymaps/60_ansi_7u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_ansi_7u_spc/keymap.c new file mode 100755 index 000000000000..2d972d74f101 --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/60_ansi_7u_spc/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_60_ansi_7u_spc( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, MO(1), KC_RCTL), + + LAYOUT_60_ansi_7u_spc( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/melgeek/mj6xy/keymaps/60_ansi_7u_spc_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_ansi_7u_spc_split_bs/keymap.c new file mode 100755 index 000000000000..d1ffaf4b8d51 --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/60_ansi_7u_spc_split_bs/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_60_ansi_7u_spc_split_bs( + 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_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, MO(1), KC_RCTL), + + LAYOUT_60_ansi_7u_spc_split_bs( + 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_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow/keymap.c new file mode 100755 index 000000000000..dc779513e4e0 --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_60_ansi_arrow( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT,KC_DOWN, KC_RGHT), + + LAYOUT_60_ansi_arrow( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_3u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_3u_spc/keymap.c new file mode 100755 index 000000000000..3f8a2206b7e8 --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_3u_spc/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_60_ansi_arrow_3u_spc( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_APP, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + LAYOUT_60_ansi_arrow_3u_spc( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_3u_spc_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_3u_spc_split_bs/keymap.c new file mode 100755 index 000000000000..5b77b70c7da9 --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_3u_spc_split_bs/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_60_ansi_arrow_3u_spc_split_bs( + 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_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_APP, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + LAYOUT_60_ansi_arrow_3u_spc_split_bs( + 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_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_6u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_6u_spc/keymap.c new file mode 100755 index 000000000000..f61c123e1360 --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_6u_spc/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_60_ansi_arrow_6u_spc( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT,KC_DOWN, KC_RGHT), + + LAYOUT_60_ansi_arrow_6u_spc( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_6u_spc_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_6u_spc_split_bs/keymap.c new file mode 100755 index 000000000000..6831ac2d7d73 --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_6u_spc_split_bs/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_60_ansi_arrow_6u_spc_split_bs( + 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_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT,KC_DOWN, KC_RGHT), + + LAYOUT_60_ansi_arrow_6u_spc_split_bs( + 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_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_split_3u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_split_3u_spc/keymap.c new file mode 100755 index 000000000000..4cd58ee4b99b --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_split_3u_spc/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_60_ansi_arrow_split_3u_spc( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), + + LAYOUT_60_ansi_arrow_split_3u_spc( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_split_bs/keymap.c new file mode 100755 index 000000000000..874c8ec16ef8 --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_split_bs/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_60_ansi_arrow_split_bs( + 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_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT,KC_DOWN, KC_RGHT), + + LAYOUT_60_ansi_arrow_split_bs( + 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_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_split_bs_3u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_split_bs_3u_spc/keymap.c new file mode 100755 index 000000000000..1e64f5265925 --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_split_bs_3u_spc/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_60_ansi_arrow_split_bs_3u_spc( + 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_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), + + LAYOUT_60_ansi_arrow_split_bs_3u_spc( + 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_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/melgeek/mj6xy/keymaps/60_ansi_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_ansi_split_bs/keymap.c new file mode 100755 index 000000000000..b54ea62a73a8 --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/60_ansi_split_bs/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_60_ansi_split_bs( + 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_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL), + + LAYOUT_60_ansi_split_bs( + 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_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso/keymap.c new file mode 100755 index 000000000000..d0f50a7010b3 --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/60_iso/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_60_iso( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL), + + LAYOUT_60_iso( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_7u_spc_split_bs_rshift/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_7u_spc_split_bs_rshift/keymap.c new file mode 100755 index 000000000000..60ac095ae8db --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_7u_spc_split_bs_rshift/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_60_iso_1u_lshift_7u_spc_split_bs_rshift( + 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_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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, MO(1), KC_RCTL), + + LAYOUT_60_iso_1u_lshift_7u_spc_split_bs_rshift( + 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_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + + + + + diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_7u_spc_split_rshift/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_7u_spc_split_rshift/keymap.c new file mode 100755 index 000000000000..97da29d39c50 --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_7u_spc_split_rshift/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_60_iso_1u_lshift_7u_spc_split_rshift( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, MO(1), KC_RCTL), + + LAYOUT_60_iso_1u_lshift_7u_spc_split_rshift( + 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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + + + + + diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_split_bs_rshift/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_split_bs_rshift/keymap.c new file mode 100755 index 000000000000..c28de0ae27c9 --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_split_bs_rshift/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_60_iso_1u_lshift_split_bs_rshift( + 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_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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL), + + LAYOUT_60_iso_1u_lshift_split_bs_rshift( + 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_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + + + + + diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_split_rshift/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_split_rshift/keymap.c new file mode 100755 index 000000000000..c95aa2838ea4 --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_split_rshift/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_60_iso_1u_lshift_split_rshift( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL), + + LAYOUT_60_iso_1u_lshift_split_rshift( + 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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + + + + + diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc/keymap.c new file mode 100755 index 000000000000..1f4f3e0b49a4 --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_60_iso_7u_spc( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, MO(1), KC_RCTL), + + LAYOUT_60_iso_7u_spc( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc_split_bs/keymap.c new file mode 100755 index 000000000000..ad180ffbdbf0 --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc_split_bs/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_60_iso_7u_spc_split_bs( + 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_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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, MO(1), KC_RCTL), + + LAYOUT_60_iso_7u_spc_split_bs( + 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_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc_split_bs_rshift/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc_split_bs_rshift/keymap.c new file mode 100755 index 000000000000..644f8801834c --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc_split_bs_rshift/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_60_iso_7u_spc_split_bs_rshift( + 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_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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, MO(1), KC_RCTL), + + LAYOUT_60_iso_7u_spc_split_bs_rshift( + 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_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + + + + + diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc_split_rshift/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc_split_rshift/keymap.c new file mode 100755 index 000000000000..0a6321d9556c --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc_split_rshift/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_60_iso_7u_spc_split_rshift( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, MO(1), KC_RCTL), + + LAYOUT_60_iso_7u_spc_split_rshift( + 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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + + + + + diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow/keymap.c new file mode 100755 index 000000000000..e0997d26dacd --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_60_iso_arrow( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT,KC_DOWN, KC_RGHT), + + LAYOUT_60_iso_arrow( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_3u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_3u_spc/keymap.c new file mode 100755 index 000000000000..bcefcc681876 --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_3u_spc/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_60_iso_arrow_3u_spc( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_APP, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + LAYOUT_60_iso_arrow_3u_spc( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_3u_spc_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_3u_spc_split_bs/keymap.c new file mode 100755 index 000000000000..76858516cc57 --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_3u_spc_split_bs/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_60_iso_arrow_3u_spc_split_bs( + 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_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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_APP, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + LAYOUT_60_iso_arrow_3u_spc_split_bs( + 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_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_6u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_6u_spc/keymap.c new file mode 100755 index 000000000000..a4306832f80f --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_6u_spc/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_60_iso_arrow_6u_spc( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT,KC_DOWN, KC_RGHT), + + LAYOUT_60_iso_arrow_6u_spc( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_6u_spc_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_6u_spc_split_bs/keymap.c new file mode 100755 index 000000000000..5e2187ac35f1 --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_6u_spc_split_bs/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_60_iso_arrow_6u_spc_split_bs( + 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_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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT,KC_DOWN, KC_RGHT), + + LAYOUT_60_iso_arrow_6u_spc_split_bs( + 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_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_split_3u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_split_3u_spc/keymap.c new file mode 100755 index 000000000000..e08039de3b2b --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_split_3u_spc/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_60_iso_arrow_split_3u_spc( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), + + LAYOUT_60_iso_arrow_split_3u_spc( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_split_bs/keymap.c new file mode 100755 index 000000000000..8aed87a9779e --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_split_bs/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_60_iso_arrow_split_bs( + 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_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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT,KC_DOWN, KC_RGHT), + + LAYOUT_60_iso_arrow_split_bs( + 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_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_split_bs_3u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_split_bs_3u_spc/keymap.c new file mode 100755 index 000000000000..b1398092e93d --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_split_bs_3u_spc/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_60_iso_arrow_split_bs_3u_spc( + 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_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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), + + LAYOUT_60_iso_arrow_split_bs_3u_spc( + 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_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_split_bs/keymap.c new file mode 100755 index 000000000000..55aa73d3257a --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_split_bs/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_60_iso_split_bs( + 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_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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL), + + LAYOUT_60_iso_split_bs( + 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_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_split_bs_rshift/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_split_bs_rshift/keymap.c new file mode 100755 index 000000000000..a78595d50c3d --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_split_bs_rshift/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_60_iso_split_bs_rshift( + 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_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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL), + + LAYOUT_60_iso_split_bs_rshift( + 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_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + + + + + diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_split_rshift/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_split_rshift/keymap.c new file mode 100755 index 000000000000..902fb1d07dae --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_split_rshift/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_60_iso_split_rshift( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL), + + LAYOUT_60_iso_split_rshift( + 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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + + + + + diff --git a/keyboards/melgeek/mj6xy/keymaps/64_ansi/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_ansi/keymap.c new file mode 100755 index 000000000000..adf8abee898f --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/64_ansi/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_64_ansi( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT,KC_DOWN, KC_RGHT), + + LAYOUT_64_ansi( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/melgeek/mj6xy/keymaps/64_ansi_3u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_ansi_3u_spc/keymap.c new file mode 100755 index 000000000000..75740f58ac07 --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/64_ansi_3u_spc/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_64_ansi_3u_spc( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_APP, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + LAYOUT_64_ansi_3u_spc( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/melgeek/mj6xy/keymaps/64_ansi_3u_spc_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_ansi_3u_spc_split_bs/keymap.c new file mode 100755 index 000000000000..ece9c5d120fc --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/64_ansi_3u_spc_split_bs/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_64_ansi_3u_spc_split_bs( + 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_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_APP, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + LAYOUT_64_ansi_3u_spc_split_bs( + 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_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/melgeek/mj6xy/keymaps/64_ansi_6u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_ansi_6u_spc/keymap.c new file mode 100755 index 000000000000..d399553f6ad3 --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/64_ansi_6u_spc/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_64_ansi_6u_spc( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, EEP_RST, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT,KC_DOWN, KC_RGHT), + + LAYOUT_64_ansi_6u_spc( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/melgeek/mj6xy/keymaps/64_ansi_6u_spc_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_ansi_6u_spc_split_bs/keymap.c new file mode 100755 index 000000000000..731a92ce5a4d --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/64_ansi_6u_spc_split_bs/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_64_ansi_6u_spc_split_bs( + 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_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT,KC_DOWN, KC_RGHT), + + LAYOUT_64_ansi_6u_spc_split_bs( + 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_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/melgeek/mj6xy/keymaps/64_ansi_split_3u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_ansi_split_3u_spc/keymap.c new file mode 100755 index 000000000000..7f5c3ba53730 --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/64_ansi_split_3u_spc/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_64_ansi_split_3u_spc( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), + + LAYOUT_64_ansi_split_3u_spc( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/melgeek/mj6xy/keymaps/64_ansi_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_ansi_split_bs/keymap.c new file mode 100755 index 000000000000..234f936ab3c9 --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/64_ansi_split_bs/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_64_ansi_split_bs( + 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_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT,KC_DOWN, KC_RGHT), + + LAYOUT_64_ansi_split_bs( + 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_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/melgeek/mj6xy/keymaps/64_ansi_split_bs_3u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_ansi_split_bs_3u_spc/keymap.c new file mode 100755 index 000000000000..31a6b5a9db91 --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/64_ansi_split_bs_3u_spc/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_64_ansi_split_bs_3u_spc( + 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_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), + + LAYOUT_64_ansi_split_bs_3u_spc( + 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_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/melgeek/mj6xy/keymaps/64_iso/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_iso/keymap.c new file mode 100755 index 000000000000..ef7f3a2fef69 --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/64_iso/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_64_iso( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT,KC_DOWN, KC_RGHT), + + LAYOUT_64_iso( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/melgeek/mj6xy/keymaps/64_iso_3u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_iso_3u_spc/keymap.c new file mode 100755 index 000000000000..5bdbc289de5d --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/64_iso_3u_spc/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_64_iso_3u_spc( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_APP, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + LAYOUT_64_iso_3u_spc( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/melgeek/mj6xy/keymaps/64_iso_3u_spc_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_iso_3u_spc_split_bs/keymap.c new file mode 100755 index 000000000000..2689f1744519 --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/64_iso_3u_spc_split_bs/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_64_iso_3u_spc_split_bs( + 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_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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_APP, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + LAYOUT_64_iso_3u_spc_split_bs( + 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_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/melgeek/mj6xy/keymaps/64_iso_6u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_iso_6u_spc/keymap.c new file mode 100755 index 000000000000..b9b9924bc7ba --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/64_iso_6u_spc/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_64_iso_6u_spc( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT,KC_DOWN, KC_RGHT), + + LAYOUT_64_iso_6u_spc( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/melgeek/mj6xy/keymaps/64_iso_6u_spc_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_iso_6u_spc_split_bs/keymap.c new file mode 100755 index 000000000000..b15d8d2575a5 --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/64_iso_6u_spc_split_bs/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_64_iso_6u_spc_split_bs( + 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_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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT,KC_DOWN, KC_RGHT), + + LAYOUT_64_iso_6u_spc_split_bs( + 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_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/melgeek/mj6xy/keymaps/64_iso_split_3u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_iso_split_3u_spc/keymap.c new file mode 100755 index 000000000000..a085b10d78c5 --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/64_iso_split_3u_spc/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_64_iso_split_3u_spc( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), + + LAYOUT_64_iso_split_3u_spc( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/melgeek/mj6xy/keymaps/64_iso_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_iso_split_bs/keymap.c new file mode 100755 index 000000000000..ff1fdb70f836 --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/64_iso_split_bs/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_64_iso_split_bs( + 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_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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT,KC_DOWN, KC_RGHT), + + LAYOUT_64_iso_split_bs( + 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_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/melgeek/mj6xy/keymaps/64_iso_split_bs_3u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_iso_split_bs_3u_spc/keymap.c new file mode 100755 index 000000000000..918d0e949332 --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/64_iso_split_bs_3u_spc/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_64_iso_split_bs_3u_spc( + 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_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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), + + LAYOUT_64_iso_split_bs_3u_spc( + 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_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/melgeek/mj6xy/keymaps/default/keymap.c b/keyboards/melgeek/mj6xy/keymaps/default/keymap.c new file mode 100755 index 000000000000..4bedb0d4008a --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/default/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_60_ansi( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL), + + LAYOUT_60_ansi( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/melgeek/mj6xy/keymaps/via/keymap.c b/keyboards/melgeek/mj6xy/keymaps/via/keymap.c new file mode 100755 index 000000000000..be2bcc247e4f --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/via/keymap.c @@ -0,0 +1,49 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT_60_ansi( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL), + + LAYOUT_60_ansi( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + LAYOUT_60_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + LAYOUT_60_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/melgeek/mj6xy/keymaps/via/rules.mk b/keyboards/melgeek/mj6xy/keymaps/via/rules.mk new file mode 100644 index 000000000000..ca9fed0e6b53 --- /dev/null +++ b/keyboards/melgeek/mj6xy/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +LTO_ENABLE = yes +VIA_ENABLE = yes diff --git a/keyboards/melgeek/mj6xy/mj6xy.c b/keyboards/melgeek/mj6xy/mj6xy.c new file mode 100755 index 000000000000..78297ab7c404 --- /dev/null +++ b/keyboards/melgeek/mj6xy/mj6xy.c @@ -0,0 +1,17 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "mj6xy.h" diff --git a/keyboards/melgeek/mj6xy/mj6xy.h b/keyboards/melgeek/mj6xy/mj6xy.h new file mode 100755 index 000000000000..e394c9941412 --- /dev/null +++ b/keyboards/melgeek/mj6xy/mj6xy.h @@ -0,0 +1,693 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +#define LAYOUT_60_ansi( \ + 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, k45, k4a, k4b, k4c, 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, 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, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, XXX, k4e } \ +} + +#define LAYOUT_60_ansi_arrow( \ + 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, k3e, \ + k40, k41, k42, k45, 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, 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, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, k4e } \ +} + +#define LAYOUT_60_ansi_arrow_6u_spc( \ + 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, k3e, \ + k40, k41, k42, k45, 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, 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, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, k4e } \ +} + +#define LAYOUT_60_ansi_arrow_3u_spc( \ + 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, k3e, \ + k40, k41, k42, k43, k45, 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, 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, k43, XXX, k45, XXX, XXX, XXX, k49, k4a, k4b, k4c, k4d, k4e } \ +} + +#define LAYOUT_60_ansi_arrow_split_3u_spc( \ + 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, k3e, \ + k40, k41, k42, k43, k48, 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, 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, k43, XXX, XXX, XXX, XXX, k48, XXX, k4a, k4b, k4c, k4d, k4e } \ +} + +#define LAYOUT_60_ansi_7u_spc( \ + 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, k47, k4b, k4c, 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, 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, XXX, k47, XXX, XXX, XXX, k4b, k4c, XXX, k4e } \ +} + +#define LAYOUT_64_ansi( \ + 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, k3c, k3d, k3e, \ + k40, k41, k42, k45, 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, 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, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, k4e } \ +} + +#define LAYOUT_64_ansi_6u_spc( \ + 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, k3c, k3d, k3e, \ + k40, k41, k42, k45, 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, 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, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, k4e } \ +} + +#define LAYOUT_64_ansi_3u_spc( \ + 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, k3c, k3d, k3e, \ + k40, k41, k42, k43, k45, 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, 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, k45, XXX, XXX, XXX, k49, k4a, k4b, k4c, k4d, k4e } \ +} + +#define LAYOUT_64_ansi_split_3u_spc( \ + 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, k3c, k3d, k3e, \ + k40, k41, k42, k43, k48, 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, 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, XXX, k48, XXX, k4a, k4b, k4c, k4d, k4e } \ +} + +#define LAYOUT_60_iso( \ + 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, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, \ + k40, k41, k42, k45, k4a, k4b, k4c, 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, XXX, XXX }, \ + { k20, k21, 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, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, XXX, k4e } \ +} + +#define LAYOUT_60_iso_split_rshift( \ + 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, k3c, k3e, \ + k40, k41, k42, k45, k4a, k4b, k4c, 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, 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, k3c, XXX, k3e }, \ + { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, XXX, k4e } \ +} + +#define LAYOUT_60_iso_7u_spc_split_rshift( \ + 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, k3c, k3e, \ + k40, k41, k42, k47, k4b, k4c, 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, 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, k3c, XXX, k3e }, \ + { k40, k41, k42, XXX, XXX, XXX, XXX, k47, XXX, XXX, XXX, k4b, k4c, XXX, k4e } \ +} + +#define LAYOUT_60_iso_arrow( \ + 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, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, \ + k40, k41, k42, k45, 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, XXX, XXX }, \ + { k20, k21, 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, k3e }, \ + { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, k4e } \ +} + +#define LAYOUT_60_iso_arrow_6u_spc( \ + 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, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, \ + k40, k41, k42, k45, 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, XXX, XXX }, \ + { k20, k21, 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, k3e }, \ + { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, k4e } \ +} + +#define LAYOUT_60_iso_arrow_3u_spc( \ + 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, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, \ + k40, k41, k42, k43, k45, 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, XXX, XXX }, \ + { k20, k21, 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, k3e }, \ + { k40, k41, k42, k43, XXX, k45, XXX, XXX, XXX, k49, k4a, k4b, k4c, k4d, k4e } \ +} + +#define LAYOUT_60_iso_arrow_split_3u_spc( \ + 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, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, \ + k40, k41, k42, k43, k48, 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, XXX, XXX }, \ + { k20, k21, 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, k3e }, \ + { k40, k41, k42, k43, XXX, XXX, XXX, XXX, k48, XXX, k4a, k4b, k4c, k4d, k4e } \ +} + +#define LAYOUT_60_iso_7u_spc( \ + 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, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, \ + k40, k41, k42, k47, k4b, k4c, 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, XXX, XXX }, \ + { k20, k21, 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, k41, k42, XXX, XXX, XXX, XXX, k47, XXX, XXX, XXX, k4b, k4c, XXX, k4e } \ +} + +#define LAYOUT_64_iso( \ + 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, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \ + k40, k41, k42, k45, 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, XXX, XXX }, \ + { k20, k21, 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, k3d, k3e }, \ + { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, k4e } \ +} + +#define LAYOUT_64_iso_6u_spc( \ + 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, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \ + k40, k41, k42, k45, 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, XXX, XXX }, \ + { k20, k21, 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, k3d, k3e }, \ + { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, k4e } \ +} + +#define LAYOUT_64_iso_3u_spc( \ + 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, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \ + k40, k41, k42, k43, k45, 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, XXX, XXX }, \ + { k20, k21, 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, k3d, k3e }, \ + { k40, k41, k42, k43, XXX, k45, XXX, XXX, XXX, k49, k4a, k4b, k4c, k4d, k4e } \ +} + +#define LAYOUT_64_iso_split_3u_spc( \ + 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, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \ + k40, k41, k42, k43, k48, 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, XXX, XXX }, \ + { k20, k21, 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, k3d, k3e }, \ + { k40, k41, k42, k43, XXX, XXX, XXX, XXX, k48, XXX, k4a, k4b, k4c, k4d, k4e } \ +} + +#define LAYOUT_60_iso_1u_lshift_split_rshift( \ + 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, k3c, k3e, \ + k40, k41, k42, k45, k4a, k4b, k4c, 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, 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, k3c, XXX, k3e }, \ + { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, XXX, k4e } \ +} + +#define LAYOUT_60_iso_1u_lshift_7u_spc_split_rshift( \ + 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, k3c, k3e, \ + k40, k41, k42, k47, k4b, k4c, 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, 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, k3c, XXX, k3e }, \ + { k40, k41, k42, XXX, XXX, XXX, XXX, k47, XXX, XXX, XXX, k4b, k4c, XXX, k4e } \ +} + +#define LAYOUT_60_ansi_split_bs( \ + 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, \ + k40, k41, k42, k45, k4a, k4b, k4c, 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, 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, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, XXX, k4e } \ +} + +#define LAYOUT_60_ansi_arrow_split_bs( \ + 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, k45, 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, 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, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, k4e } \ +} + +#define LAYOUT_60_ansi_arrow_6u_spc_split_bs( \ + 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, k45, 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, 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, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, k4e } \ +} + +#define LAYOUT_60_ansi_arrow_3u_spc_split_bs( \ + 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, k43, 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, 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, k43, XXX, k45, XXX, XXX, XXX, k49, k4a, k4b, k4c, k4d, k4e } \ +} + +#define LAYOUT_60_ansi_arrow_split_bs_3u_spc( \ + 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, k43, k48, 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, 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, k43, XXX, XXX, XXX, XXX, k48, XXX, k4a, k4b, k4c, k4d, k4e } \ +} + +#define LAYOUT_60_ansi_7u_spc_split_bs( \ + 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, \ + k40, k41, k42, k47, k4b, k4c, 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, 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, XXX, k47, XXX, XXX, XXX, k4b, k4c, XXX, k4e } \ +} + +#define LAYOUT_64_ansi_split_bs( \ + 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, k45, 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, 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, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, k4e } \ +} + +#define LAYOUT_64_ansi_6u_spc_split_bs( \ + 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, k45, 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, 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, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, k4e } \ +} + +#define LAYOUT_64_ansi_3u_spc_split_bs( \ + 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, 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, 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, k45, XXX, XXX, XXX, k49, k4a, k4b, k4c, k4d, k4e } \ +} + +#define LAYOUT_64_ansi_split_bs_3u_spc( \ + 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, k48, 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, 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, XXX, k48, XXX, k4a, k4b, k4c, k4d, k4e } \ +} + +#define LAYOUT_60_iso_split_bs( \ + 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, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, \ + k40, k41, k42, k45, k4a, k4b, k4c, 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, XXX, XXX }, \ + { k20, k21, 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, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, XXX, k4e } \ +} + +#define LAYOUT_60_iso_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, \ + 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, k3e, \ + k40, k41, k42, k45, k4a, k4b, k4c, 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, 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, k3c, XXX, k3e }, \ + { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, XXX, k4e } \ +} + +#define LAYOUT_60_iso_7u_spc_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, \ + 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, k3e, \ + k40, k41, k42, k47, k4b, k4c, 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, 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, k3c, XXX, k3e }, \ + { k40, k41, k42, XXX, XXX, XXX, XXX, k47, XXX, XXX, XXX, k4b, k4c, XXX, k4e } \ +} + +#define LAYOUT_60_iso_arrow_split_bs( \ + 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, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, \ + k40, k41, k42, k45, 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, XXX, XXX }, \ + { k20, k21, 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, k3e }, \ + { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, k4e } \ +} + +#define LAYOUT_60_iso_arrow_6u_spc_split_bs( \ + 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, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, \ + k40, k41, k42, k45, 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, XXX, XXX }, \ + { k20, k21, 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, k3e }, \ + { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, k4e } \ +} + +#define LAYOUT_60_iso_arrow_3u_spc_split_bs( \ + 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, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, \ + k40, k41, k42, k43, 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, XXX, XXX }, \ + { k20, k21, 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, k3e }, \ + { k40, k41, k42, k43, XXX, k45, XXX, XXX, XXX, k49, k4a, k4b, k4c, k4d, k4e } \ +} + +#define LAYOUT_60_iso_arrow_split_bs_3u_spc( \ + 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, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, \ + k40, k41, k42, k43, k48, 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, XXX, XXX }, \ + { k20, k21, 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, k3e }, \ + { k40, k41, k42, k43, XXX, XXX, XXX, XXX, k48, XXX, k4a, k4b, k4c, k4d, k4e } \ +} + +#define LAYOUT_60_iso_7u_spc_split_bs( \ + 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, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, \ + k40, k41, k42, k47, k4b, k4c, 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, XXX, XXX }, \ + { k20, k21, 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, k41, k42, XXX, XXX, XXX, XXX, k47, XXX, XXX, XXX, k4b, k4c, XXX, k4e } \ +} + +#define LAYOUT_64_iso_split_bs( \ + 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, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \ + k40, k41, k42, k45, 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, XXX, XXX }, \ + { k20, k21, 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, k3d, k3e }, \ + { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, k4e } \ +} + +#define LAYOUT_64_iso_6u_spc_split_bs( \ + 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, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \ + k40, k41, k42, k45, 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, XXX, XXX }, \ + { k20, k21, 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, k3d, k3e }, \ + { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, k4e } \ +} + +#define LAYOUT_64_iso_3u_spc_split_bs( \ + 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, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \ + k40, k41, k42, k43, 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, XXX, XXX }, \ + { k20, k21, 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, k3d, k3e }, \ + { k40, k41, k42, k43, XXX, k45, XXX, XXX, XXX, k49, k4a, k4b, k4c, k4d, k4e } \ +} + +#define LAYOUT_64_iso_split_bs_3u_spc( \ + 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, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \ + k40, k41, k42, k43, k48, 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, XXX, XXX }, \ + { k20, k21, 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, k3d, k3e }, \ + { k40, k41, k42, k43, XXX, XXX, XXX, XXX, k48, XXX, k4a, k4b, k4c, k4d, k4e } \ +} + +#define LAYOUT_60_iso_1u_lshift_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, \ + 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, k3e, \ + k40, k41, k42, k45, k4a, k4b, k4c, 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, 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, k3c, XXX, k3e }, \ + { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, XXX, k4e } \ +} + +#define LAYOUT_60_iso_1u_lshift_7u_spc_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, \ + 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, k3e, \ + k40, k41, k42, k47, k4b, k4c, 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, 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, k3c, XXX, k3e }, \ + { k40, k41, k42, XXX, XXX, XXX, XXX, k47, XXX, XXX, XXX, k4b, k4c, XXX, k4e } \ +} diff --git a/keyboards/melgeek/mj6xy/readme.md b/keyboards/melgeek/mj6xy/readme.md new file mode 100755 index 000000000000..952f8c4868cf --- /dev/null +++ b/keyboards/melgeek/mj6xy/readme.md @@ -0,0 +1,17 @@ +# MJ6XY 60% Mechanical Keyboard PCB + +![MJ6XY](https://cdn.shopifycdn.net/s/files/1/0078/2863/5712/products/e66b60bbaa22111cfcb8c9287ff182fa_fe508bda-4e62-4d0e-9842-552ed1233af0_1024x1024@2x.jpg?v=1625753059) + +## A Customizable 60% Mechanical Keyboard PCB which is support multi-layouts + +![A Customizable 60% Mechanical Keyboard PCB](https://cdn.shopifycdn.net/s/files/1/0078/2863/5712/products/e66b60bbaa22111cfcb8c9287ff182fa_fe508bda-4e62-4d0e-9842-552ed1233af0_1024x1024@2x.jpg?v=1625753059) + +* Keyboard Maintainer: QMK Community +* Hardware Supported: MJ6XY 60% Mechanical Keyboard PCB +* Hardware Availability: [MelGeek](https://www.melgeek.com/collections/pcb-plate/products/melgeek-mj6xy-soldered-pcba-melgeek-com) + +Make example for this keyboard (after setting up your build environment): + + make melgeek/mj6xy: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/melgeek/mj6xy/rev3/config.h b/keyboards/melgeek/mj6xy/rev3/config.h new file mode 100755 index 000000000000..8ea2b720309b --- /dev/null +++ b/keyboards/melgeek/mj6xy/rev3/config.h @@ -0,0 +1,52 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6 } +#define MATRIX_COL_PINS { B0, B1, B2, B3, B6, B5, B4, D7, D6, D4, D5, F7, D2, D1, D0 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +#define LED_CAPS_LOCK_PIN C7 +#define LED_PIN_ON_STATE 0 + +#define BACKLIGHT_PIN B7 + +#define RGB_DI_PIN C6 + +#ifdef BACKLIGHT_PIN +# define BACKLIGHT_LEVELS 10 +# define BACKLIGHT_ON_STATE 1 +# define BACKLIGHT_LIMIT_VAL 255 +#endif + +#ifdef RGB_DI_PIN +# define RGBLIGHT_ANIMATIONS +# define RGBLIGHT_DEFAULT_MODE (RGBLIGHT_EFFECT_RAINBOW_MOOD + 6) +# define RGBLIGHT_DEFAULT_SPD 10 +# define RGBLED_NUM 16 +# define RGBLIGHT_HUE_STEP 8 +# define RGBLIGHT_SAT_STEP 8 +# define RGBLIGHT_VAL_STEP 8 +# define RGBLIGHT_SLEEP +#endif diff --git a/keyboards/melgeek/mj6xy/rev3/rev3.c b/keyboards/melgeek/mj6xy/rev3/rev3.c new file mode 100644 index 000000000000..7982316513ae --- /dev/null +++ b/keyboards/melgeek/mj6xy/rev3/rev3.c @@ -0,0 +1,18 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "mj6xy.h" + diff --git a/keyboards/melgeek/mj6xy/rev3/rules.mk b/keyboards/melgeek/mj6xy/rev3/rules.mk new file mode 100755 index 000000000000..8c6e470ff30e --- /dev/null +++ b/keyboards/melgeek/mj6xy/rev3/rules.mk @@ -0,0 +1,22 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +BACKLIGHT_DRIVER = software + +LAYOUTS = 60_ansi diff --git a/keyboards/melgeek/mojo68/config.h b/keyboards/melgeek/mojo68/config.h new file mode 100755 index 000000000000..15ea1a58b440 --- /dev/null +++ b/keyboards/melgeek/mojo68/config.h @@ -0,0 +1,94 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xEDED +#define PRODUCT_ID 0x0068 +#define DEVICE_VER 0x0001 +#define MANUFACTURER MelGeek +#define PRODUCT MoJo68 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 3 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +#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_KEYPRESSES +#define RGB_MATRIX_LED_PROCESS_LIMIT 4 +#define RGB_MATRIX_LED_FLUSH_LIMIT 26 +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +// # define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// # define ENABLE_RGB_MATRIX_PIXEL_RAIN +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// # define ENABLE_RGB_MATRIX_SPLASH +// # define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH +//#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR +#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL +#define DRIVER_ADDR_1 0b0110000 +#define DRIVER_COUNT 1 diff --git a/keyboards/melgeek/mojo68/info.json b/keyboards/melgeek/mojo68/info.json new file mode 100755 index 000000000000..843637d90115 --- /dev/null +++ b/keyboards/melgeek/mojo68/info.json @@ -0,0 +1,83 @@ +{ + "keyboard_name": "MoJo68", + "url": "", + "maintainer": "melgeek001365", + "layouts": { + "LAYOUT_68_ansi": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2.0}, + {"x":15, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + {"x":15, "y":1}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":15, "y":2}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4}, + {"x":11, "y":4}, + {"x":12, "y":4}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + } + } +} diff --git a/keyboards/melgeek/mojo68/keymaps/default/keymap.c b/keyboards/melgeek/mojo68/keymaps/default/keymap.c new file mode 100755 index 000000000000..f76ca3a37bf7 --- /dev/null +++ b/keyboards/melgeek/mojo68/keymaps/default/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_68_ansi( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_68_ansi( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_PSCR, + _______, RGB_TOG, _______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, KC_PSCR, KC_SLCK, KC_PAUS, RESET, _______, + _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPI, RGB_SPD, KC_HOME, _______, EEP_RST, _______, + _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, KC_INS, KC_END, KC_MPLY, KC_VOLU, KC_MUTE, + _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT + ) +}; + diff --git a/keyboards/melgeek/mojo68/keymaps/via/keymap.c b/keyboards/melgeek/mojo68/keymaps/via/keymap.c new file mode 100755 index 000000000000..c8655ab819f8 --- /dev/null +++ b/keyboards/melgeek/mojo68/keymaps/via/keymap.c @@ -0,0 +1,49 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_68_ansi( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_68_ansi( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_PSCR, + _______, RGB_TOG, _______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, KC_PSCR, KC_SLCK, KC_PAUS, RESET, _______, + _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPI, RGB_SPD, KC_HOME, _______, EEP_RST, _______, + _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, KC_INS, KC_END, KC_MPLY, KC_VOLU, KC_MUTE, + _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT + ), + [2] = LAYOUT_68_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_68_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + diff --git a/keyboards/melgeek/mojo68/keymaps/via/rules.mk b/keyboards/melgeek/mojo68/keymaps/via/rules.mk new file mode 100755 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/melgeek/mojo68/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/melgeek/mojo68/mojo68.c b/keyboards/melgeek/mojo68/mojo68.c new file mode 100755 index 000000000000..d217daf0acff --- /dev/null +++ b/keyboards/melgeek/mojo68/mojo68.c @@ -0,0 +1,17 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "mojo68.h" diff --git a/keyboards/melgeek/mojo68/mojo68.h b/keyboards/melgeek/mojo68/mojo68.h new file mode 100755 index 000000000000..f5823c1926f5 --- /dev/null +++ b/keyboards/melgeek/mojo68/mojo68.h @@ -0,0 +1,35 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +#define LAYOUT_68_ansi( \ + 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, K2E, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, \ + 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, K3B, K3C, XXX, K3E }, \ + { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, K4B, K4C, K4D, K4E } \ +} diff --git a/keyboards/melgeek/mojo68/readme.md b/keyboards/melgeek/mojo68/readme.md new file mode 100755 index 000000000000..9895048d318d --- /dev/null +++ b/keyboards/melgeek/mojo68/readme.md @@ -0,0 +1,15 @@ +# MelGeek MoJo68 + +![MoJo68](https://cdn.shopifycdn.net/s/files/1/0078/2863/5712/products/c34621677ffc53ea6d1c68ab82100749_1024x1024@2x.jpg?v=1612186093) + +A hotswap 65% RGB Custom Mechanical keyboard. + +* Keyboard Maintainer: [melgeek001365](https://github.com/melgeek001365) +* Hardware Supported: MOJO68 rev1 20210717 +* Hardware Availability: [MelGeek](https://www.melgeek.com/) + +Make example for this keyboard (after setting up your build environment): + + make melgeek/mojo68/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/melgeek/mojo68/rev1/config.h b/keyboards/melgeek/mojo68/rev1/config.h new file mode 100755 index 000000000000..74a7e3dc26eb --- /dev/null +++ b/keyboards/melgeek/mojo68/rev1/config.h @@ -0,0 +1,38 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +/* + * 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 { F0, F1, F4, F5, F6 } +#define MATRIX_COL_PINS { B0 ,B1, B2, B3, D2, D5, D4, D6, D7, B4, B5, B6, C6, C7, F7 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +#define DRIVER_LED_TOTAL 68 +#define DRIVER_INDICATOR_LED_TOTAL 3 diff --git a/keyboards/melgeek/mojo68/rev1/rev1.c b/keyboards/melgeek/mojo68/rev1/rev1.c new file mode 100755 index 000000000000..27c9212ac6ff --- /dev/null +++ b/keyboards/melgeek/mojo68/rev1/rev1.c @@ -0,0 +1,161 @@ +/* Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "mojo68.h" + +#ifdef RGB_MATRIX_ENABLE + +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { + {0, CS9_SW1, CS8_SW1, CS7_SW1}, /* RGB1 */ + {0, CS9_SW2, CS8_SW2, CS7_SW2}, /* RGB2 */ + {0, CS9_SW3, CS8_SW3, CS7_SW3}, /* RGB3 */ + {0, CS9_SW4, CS8_SW4, CS7_SW4}, /* RGB4 */ + {0, CS9_SW5, CS8_SW5, CS7_SW5}, /* RGB5 */ + {0, CS9_SW6, CS8_SW6, CS7_SW6}, /* RGB6 */ + {0, CS9_SW7, CS8_SW7, CS7_SW7}, /* RGB7 */ + {0, CS9_SW8, CS8_SW8, CS7_SW8}, /* RGB8 */ + {0, CS9_SW9, CS8_SW9, CS7_SW9}, /* RGB9 */ + {0, CS24_SW1, CS23_SW1, CS22_SW1}, /* RGB46 */ + {0, CS24_SW2, CS23_SW2, CS22_SW2}, /* RGB47 */ + {0, CS24_SW3, CS23_SW3, CS22_SW3}, /* RGB48 */ + {0, CS24_SW4, CS23_SW4, CS22_SW4}, /* RGB49 */ + {0, CS24_SW5, CS23_SW5, CS22_SW5}, /* RGB50 */ + {0, CS24_SW6, CS23_SW6, CS22_SW6}, /* RGB51 */ + {0, CS12_SW1, CS11_SW1, CS10_SW1}, /* RGB10 */ + {0, CS12_SW2, CS11_SW2, CS10_SW2}, /* RGB11 */ + {0, CS12_SW3, CS11_SW3, CS10_SW3}, /* RGB12 */ + {0, CS12_SW4, CS11_SW4, CS10_SW4}, /* RGB13 */ + {0, CS12_SW5, CS11_SW5, CS10_SW5}, /* RGB14 */ + {0, CS12_SW6, CS11_SW6, CS10_SW6}, /* RGB15 */ + {0, CS12_SW7, CS11_SW7, CS10_SW7}, /* RGB16 */ + {0, CS12_SW8, CS11_SW8, CS10_SW8}, /* RGB17 */ + {0, CS12_SW9, CS11_SW9, CS10_SW9}, /* RGB18 */ + {0, CS24_SW7, CS23_SW7, CS22_SW7}, /* RGB52 */ + {0, CS24_SW8, CS23_SW8, CS22_SW8}, /* RGB53 */ + {0, CS24_SW9, CS23_SW9, CS22_SW9}, /* RGB54 */ + {0, CS27_SW1, CS26_SW1, CS25_SW1}, /* RGB55 */ + {0, CS27_SW2, CS26_SW2, CS25_SW2}, /* RGB56 */ + {0, CS27_SW3, CS26_SW3, CS25_SW3}, /* RGB57 */ + {0, CS15_SW1, CS14_SW1, CS13_SW1}, /* RGB19 */ + {0, CS15_SW2, CS14_SW2, CS13_SW2}, /* RGB20 */ + {0, CS15_SW3, CS14_SW3, CS13_SW3}, /* RGB21 */ + {0, CS15_SW4, CS14_SW4, CS13_SW4}, /* RGB22 */ + {0, CS15_SW5, CS14_SW5, CS13_SW5}, /* RGB23 */ + {0, CS15_SW6, CS14_SW6, CS13_SW6}, /* RGB24 */ + {0, CS15_SW7, CS14_SW7, CS13_SW7}, /* RGB25 */ + {0, CS15_SW8, CS14_SW8, CS13_SW8}, /* RGB26 */ + {0, CS15_SW9, CS14_SW9, CS13_SW9}, /* RGB27 */ + {0, CS27_SW4, CS26_SW4, CS25_SW4}, /* RGB58 */ + {0, CS27_SW5, CS26_SW5, CS25_SW5}, /* RGB59 */ + {0, CS27_SW6, CS26_SW6, CS25_SW6}, /* RGB60 */ + {0, CS27_SW7, CS26_SW7, CS25_SW7}, /* RGB61 */ + {0, CS27_SW8, CS26_SW8, CS25_SW8}, /* RGB62 */ + {0, CS18_SW1, CS17_SW1, CS16_SW1}, /* RGB28 */ + {0, CS18_SW2, CS17_SW2, CS16_SW2}, /* RGB29 */ + {0, CS18_SW3, CS17_SW3, CS16_SW3}, /* RGB30 */ + {0, CS18_SW4, CS17_SW4, CS16_SW4}, /* RGB31 */ + {0, CS18_SW5, CS17_SW5, CS16_SW5}, /* RGB32 */ + {0, CS18_SW6, CS17_SW6, CS16_SW6}, /* RGB33 */ + {0, CS18_SW7, CS17_SW7, CS16_SW7}, /* RGB34 */ + {0, CS18_SW8, CS17_SW8, CS16_SW8}, /* RGB35 */ + {0, CS18_SW9, CS17_SW9, CS16_SW9}, /* RGB36 */ + {0, CS27_SW9, CS26_SW9, CS25_SW9}, /* RGB63 */ + {0, CS30_SW1, CS29_SW1, CS28_SW1}, /* RGB64 */ + {0, CS30_SW2, CS29_SW2, CS28_SW2}, /* RGB65 */ + {0, CS30_SW3, CS29_SW3, CS28_SW3}, /* RGB66 */ + {0, CS30_SW4, CS29_SW4, CS28_SW4}, /* RGB67 */ + {0, CS21_SW1, CS20_SW1, CS19_SW1}, /* RGB37 */ + {0, CS21_SW2, CS20_SW2, CS19_SW2}, /* RGB38 */ + {0, CS21_SW3, CS20_SW3, CS19_SW3}, /* RGB39 */ + {0, CS21_SW4, CS20_SW4, CS19_SW4}, /* RGB40 */ + {0, CS21_SW5, CS20_SW5, CS19_SW5}, /* RGB41 */ + {0, CS21_SW6, CS20_SW6, CS19_SW6}, /* RGB42 */ + {0, CS21_SW7, CS20_SW7, CS19_SW7}, /* RGB43 */ + {0, CS21_SW8, CS20_SW8, CS19_SW8}, /* RGB44 */ + {0, CS21_SW9, CS20_SW9, CS19_SW9}, /* RGB45 */ + {0, CS30_SW5, CS29_SW5, CS28_SW5}, /* RGB68 */ +}; + +led_config_t g_led_config = { + { + /* C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14*/ + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }, /* R0 */ + { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 }, /* R1 */ + { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, NO_LED, 43 }, /* R2 */ + { 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, NO_LED, 57 }, /* R3 */ + { 58, 59, 60, NO_LED, NO_LED, 61, NO_LED, NO_LED, NO_LED, 62, 63, 64, 65, 66, 67 }, /* R4 */ + }, { + {0, 0}, {16, 0}, {32, 0}, {48, 0}, {64, 0}, {80, 0}, {96, 0}, {112, 0}, {128, 0}, {144, 0}, {160, 0}, {176, 0}, {192, 0}, {208, 0}, {224, 0}, + {0, 16}, {16, 16}, {32, 16}, {48, 16}, {64, 16}, {80, 16}, {96, 16}, {112, 16}, {128, 16}, {144, 16}, {160, 16}, {176, 16}, {192, 16}, {208, 16}, {224, 16}, + {0, 32}, {16, 32}, {32, 32}, {48, 32}, {64, 32}, {80, 32}, {96, 32}, {112, 32}, {128, 32}, {144, 32}, {160, 32}, {176, 32}, {192, 32}, {208, 32}, + {0, 48}, {16, 48}, {32, 48}, {48, 48}, {64, 48}, {80, 48}, {96, 48}, {112, 48}, {128, 48}, {144, 48}, {160, 48}, {176, 48}, {192, 48}, {208, 48}, + {0, 64}, {16, 64}, {32, 64}, {48, 64}, {64, 64}, {80, 64}, {96, 64}, {112, 64}, {128, 64}, {144, 64}, + }, { + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + } +}; + +const is31_led g_is31_indicator_leds[3] = { + {0, CS6_SW1, CS5_SW1, CS4_SW1}, /* RGB124 */ + {0, CS6_SW2, CS5_SW2, CS4_SW2}, /* RGB125 */ + {0, CS6_SW3, CS5_SW3, CS4_SW3}, /* RGB126 */ +}; + +bool led_update_kb(led_t led_state) { + if (led_update_user(led_state)) { + if (led_state.caps_lock) { + IS31FL3741_set_pwm_buffer(&g_is31_indicator_leds[2], 0xff, 0x00, 0x00); + } else { + IS31FL3741_set_pwm_buffer(&g_is31_indicator_leds[2], 0x00, 0x00, 0x00); + } + + if (led_state.num_lock) { + IS31FL3741_set_pwm_buffer(&g_is31_indicator_leds[1], 0x00, 0xff, 0x00); + } else { + IS31FL3741_set_pwm_buffer(&g_is31_indicator_leds[1], 0x00, 0x00, 0x00); + } + + if (led_state.scroll_lock) { + IS31FL3741_set_pwm_buffer(&g_is31_indicator_leds[0], 0x00, 0x00, 0xff); + } else { + IS31FL3741_set_pwm_buffer(&g_is31_indicator_leds[0], 0x00, 0x00, 0x00); + } + } + return true; +} + +void matrix_init_kb(void) { + for (int i = 0; i < DRIVER_INDICATOR_LED_TOTAL; ++i) { + is31_led led = g_is31_indicator_leds[i]; + IS31FL3741_set_scaling_registers(&led, 0xFF, 0xFF, 0xFF); + } + + IS31FL3741_update_led_control_registers(DRIVER_ADDR_1, 0); + + matrix_init_user(); +} + + +void keyboard_pre_init_kb(void) { + setPinOutput(B7); + writePinHigh(B7); + keyboard_pre_init_user(); +} +#endif diff --git a/keyboards/melgeek/mojo68/rev1/rules.mk b/keyboards/melgeek/mojo68/rev1/rules.mk new file mode 100755 index 000000000000..cdaf2de7dcb4 --- /dev/null +++ b/keyboards/melgeek/mojo68/rev1/rules.mk @@ -0,0 +1,22 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 +RGB_MATRIX_ENABLE = yes # Use RGB matrix +RGB_MATRIX_DRIVER = IS31FL3741 + +LAYOUTS = 68_ansi diff --git a/keyboards/melgeek/mojo75/config.h b/keyboards/melgeek/mojo75/config.h index c1a8083f1cdf..9e2d1080d1fc 100644 --- a/keyboards/melgeek/mojo75/config.h +++ b/keyboards/melgeek/mojo75/config.h @@ -37,16 +37,60 @@ #define NO_ACTION_FUNCTION #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended #define RGB_MATRIX_KEYPRESSES #define RGB_MATRIX_LED_PROCESS_LIMIT 4 #define RGB_MATRIX_LED_FLUSH_LIMIT 26 -#define DISABLE_RGB_MATRIX_SPLASH -#define DISABLE_RGB_MATRIX_MULTISPLASH -#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// # define ENABLE_RGB_MATRIX_SPLASH +// # define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH //#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR #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/info.json b/keyboards/melgeek/mojo75/info.json index e9a90ea22419..95f750b9f22e 100644 --- a/keyboards/melgeek/mojo75/info.json +++ b/keyboards/melgeek/mojo75/info.json @@ -2,8 +2,6 @@ "keyboard_name": "MoJo75", "url": "", "maintainer": "melgeek001365", - "width": 16, - "height": 6, "layouts": { "LAYOUT_75_ansi": { "layout": [ diff --git a/keyboards/melgeek/mojo75/rev1/config.h b/keyboards/melgeek/mojo75/rev1/config.h index c841c96fdec1..eaac850b6d3b 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/mojo75/rev1/rev1.c b/keyboards/melgeek/mojo75/rev1/rev1.c index 670116fcd674..ae103801e2f3 100644 --- a/keyboards/melgeek/mojo75/rev1/rev1.c +++ b/keyboards/melgeek/mojo75/rev1/rev1.c @@ -18,7 +18,7 @@ #ifdef RGB_MATRIX_ENABLE -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { {0, CS6_SW1, CS5_SW1, CS4_SW1}, /* RGB1 */ {0, CS6_SW2, CS5_SW2, CS4_SW2}, /* RGB2 */ {0, CS6_SW3, CS5_SW3, CS4_SW3}, /* RGB3 */ diff --git a/keyboards/melgeek/mojo75/rev1/rules.mk b/keyboards/melgeek/mojo75/rev1/rules.mk index 9b3d6367f150..08be4c10b7ce 100644 --- a/keyboards/melgeek/mojo75/rev1/rules.mk +++ b/keyboards/melgeek/mojo75/rev1/rules.mk @@ -8,18 +8,15 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth RGB_MATRIX_ENABLE = yes # Use RGB matrix RGB_MATRIX_DRIVER = IS31FL3741 NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in diff --git a/keyboards/melgeek/z70ultra/config.h b/keyboards/melgeek/z70ultra/config.h index d5a9d0a8944d..2df25bf50189 100644 --- a/keyboards/melgeek/z70ultra/config.h +++ b/keyboards/melgeek/z70ultra/config.h @@ -36,18 +36,61 @@ #define NO_ACTION_FUNCTION #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended #define RGB_MATRIX_KEYPRESSES #define RGB_MATRIX_LED_PROCESS_LIMIT 4 #define RGB_MATRIX_LED_FLUSH_LIMIT 26 -#define DISABLE_RGB_MATRIX_SPLASH -#define DISABLE_RGB_MATRIX_MULTISPLASH -#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// # define ENABLE_RGB_MATRIX_SPLASH +// # define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH //#define RGB_MATRIX_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/melgeek/z70ultra/info.json b/keyboards/melgeek/z70ultra/info.json index 9959e6384982..e24b177070eb 100644 --- a/keyboards/melgeek/z70ultra/info.json +++ b/keyboards/melgeek/z70ultra/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Z70Ultra", "url": "", "maintainer": "melgeek001365", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_ansi_blocker": { "layout": [ diff --git a/keyboards/melgeek/z70ultra/rev1/rules.mk b/keyboards/melgeek/z70ultra/rev1/rules.mk index a80e4290683a..e094a86f1898 100644 --- a/keyboards/melgeek/z70ultra/rev1/rules.mk +++ b/keyboards/melgeek/z70ultra/rev1/rules.mk @@ -8,18 +8,15 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth RGB_MATRIX_ENABLE = yes # Use RGB matrix RGB_MATRIX_DRIVER = IS31FL3741 NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in diff --git a/keyboards/melgeek/z70ultra/z70ultra.c b/keyboards/melgeek/z70ultra/z70ultra.c index 740720681a94..6be690c01e35 100644 --- a/keyboards/melgeek/z70ultra/z70ultra.c +++ b/keyboards/melgeek/z70ultra/z70ultra.c @@ -18,7 +18,7 @@ #ifdef RGB_MATRIX_ENABLE -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { {0, CS28_SW1, CS30_SW1, CS29_SW1}, /* RGB10 */ {0, CS28_SW2, CS30_SW2, CS29_SW2}, /* RGB11 */ {0, CS28_SW3, CS30_SW3, CS29_SW3}, /* RGB12 */ diff --git a/keyboards/melody96/info.json b/keyboards/melody96/info.json index f69ae267909d..e6f3a03ad885 100644 --- a/keyboards/melody96/info.json +++ b/keyboards/melody96/info.json @@ -2,8 +2,6 @@ "keyboard_name": "melody96", "url": "", "maintainer": "qmk", - "width": 19, - "height": 6, "layouts": { "LAYOUT": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, {"label":"F2", "x":2, "y":0}, {"label":"F3", "x":3, "y":0}, {"label":"F4", "x":4, "y":0}, {"label":"F5", "x":5, "y":0}, {"label":"F6", "x":6, "y":0}, {"label":"F7", "x":7, "y":0}, {"label":"F8", "x":8, "y":0}, {"label":"F9", "x":9, "y":0}, {"label":"F10", "x":10, "y":0}, {"label":"F11", "x":11, "y":0}, {"label":"F12", "x":12, "y":0}, {"label":"PrtSc", "x":13, "y":0}, {"label":"Scroll Lock", "x":14, "y":0}, {"label":"Pause", "x":15, "y":0}, {"label":"Insert", "x":16, "y":0}, {"label":"Home", "x":17, "y":0}, {"label":"PgUp", "x":18, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"@", "x":2, "y":1}, {"label":"#", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, {"label":"Num Lock", "x":15, "y":1}, {"label":"/", "x":16, "y":1}, {"label":"*", "x":17, "y":1}, {"label":"-", "x":18, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"7", "x":15, "y":2}, {"label":"8", "x":16, "y":2}, {"label":"9", "x":17, "y":2}, {"label":"+", "x":18, "y":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"\"", "x":11.75, "y":3}, {"label":"Enter", "x":12.75, "y":3, "w":2.25}, {"label":"4", "x":15, "y":3}, {"label":"5", "x":16, "y":3}, {"label":"6", "x":17, "y":3}, {"x":18, "y":3}, {"label":"Shift", "x":0, "y":4, "w":1.25}, {"x":1.25, "y":4}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"label":"\u2191", "x":14, "y":4}, {"label":"1", "x":15, "y":4}, {"label":"2", "x":16, "y":4}, {"label":"3", "x":17, "y":4}, {"label":"Enter", "x":18, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5}, {"label":"Win", "x":11, "y":5}, {"x":12, "y":5}, {"label":"\u2190", "x":13, "y":5}, {"label":"\u2193", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}, {"label":"0", "x":16, "y":5}, {"label":".", "x":17, "y":5}, {"x":18, "y":5}] diff --git a/keyboards/melody96/keymaps/dvz/config.h b/keyboards/melody96/keymaps/dvz/config.h new file mode 100644 index 000000000000..be786464bc7c --- /dev/null +++ b/keyboards/melody96/keymaps/dvz/config.h @@ -0,0 +1,34 @@ + /* Copyright 2021 Milan Düwel + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define COMBO_COUNT 4 +#define COMBO_TERM 100 + +//#define UNICODE_SELECTED_MODES UC_WINC + +#define RGBLIGHT_LAYERS +#define RGBLIGHT_LAYER_BLINK + +#undef RGBLIGHT_ANIMATIONS +#define RGBLIGHT_EFFECT_ALTERNATING +#define RGBLIGHT_EFFECT_BREATHING +#define RGBLIGHT_EFFECT_CHRISTMAS +#define RGBLIGHT_EFFECT_KNIGHT +#define RGBLIGHT_EFFECT_SNAKE +#define RGBLIGHT_EFFECT_TWINKLE + diff --git a/keyboards/melody96/keymaps/dvz/keymap.c b/keyboards/melody96/keymaps/dvz/keymap.c new file mode 100644 index 000000000000..cea3970e1889 --- /dev/null +++ b/keyboards/melody96/keymaps/dvz/keymap.c @@ -0,0 +1,161 @@ + /* Copyright 2021 Milan Düwel + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + + /* This keymap is designed for use with a German keyboard layout. + * It is essentially the same as the default via keymap but adds combo functionality to type umlauts as well as lighting layers for various actions. + * Toggling the combo feature also disables KC_LGUI so both can be turned off for gaming. If you want to get rid of it without reflashing new firmware, use KC_RGUI instead. + * Layers 2 and 3 are currently unused but are configurable within via. + */ + +enum combos { + UML_AE, + UML_OE, + UML_UE, + UML_SZ +}; + +const uint16_t PROGMEM ae_combo[] = {KC_A, KC_E, COMBO_END}; +const uint16_t PROGMEM oe_combo[] = {KC_O, KC_E, COMBO_END}; +const uint16_t PROGMEM ue_combo[] = {KC_U, KC_E, COMBO_END}; +const uint16_t PROGMEM sz_combo[] = {KC_S, KC_Y, COMBO_END}; + +combo_t key_combos[COMBO_COUNT] = { + [UML_AE] = COMBO(ae_combo, KC_QUOT), + [UML_OE] = COMBO(oe_combo, KC_SCLN), + [UML_UE] = COMBO(ue_combo, KC_LBRC), + [UML_SZ] = COMBO(sz_combo, KC_MINS) +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_DEL, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT), + + [1] = LAYOUT( + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, + KC_TRNS, RGB_TOG, KC_TRNS, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, + BL_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, CMB_TOG, BL_TOGG, BL_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END, KC_TRNS, KC_TRNS, KC_MUTE), + + [2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + [3] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; + +/* The lighting layers feature a caps indicator as well as layer blinks for mute and the function layer (blink only to allow unhindered adjustment of the RGB backlight settings). + Sadly these colours can not be customized within VIA. +*/ + +const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 1, HSV_RED}, + {15, 17, HSV_RED} +); + +const rgblight_segment_t PROGMEM my_function_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {10, 12, HSV_YELLOW} +); + +const rgblight_segment_t PROGMEM my_f2_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 17, HSV_CYAN} +); + +const rgblight_segment_t PROGMEM my_f3_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 17, HSV_PURPLE} +); + +const rgblight_segment_t PROGMEM my_flash_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 17, HSV_RED} +); + +// Now define the array of layers. Later layers take precedence +const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( + my_capslock_layer, + my_function_layer, // Overrides caps lock layer + my_f2_layer, + my_f3_layer, + my_flash_layer +); + +void keyboard_post_init_user(void) { + // Enable the LED layers + rgblight_layers = my_rgb_layers; +}; + +bool led_update_user(led_t led_state) { + rgblight_set_layer_state(0, led_state.caps_lock); + return true; +}; + +layer_state_t layer_state_set_user(layer_state_t state) { + //rgblight_set_layer_state(1, layer_state_cmp(state, 1)); + rgblight_set_layer_state(2, layer_state_cmp(state, 2)); + rgblight_set_layer_state(3, layer_state_cmp(state, 3)); + return state; +}; + +// Note we user post_process_record_user because we want the state +// after the flag has been flipped... +void post_process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_CAPS: + case KC_MUTE: + case CMB_TOG: + if (record->event.pressed) { + rgblight_blink_layer(4, 250); + } + break; + case MO(1): + if (record->event.pressed) { + rgblight_blink_layer(1, 250); + } + break; + } +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_LGUI: //use combo toggle to disable the win key while gaming + if (record->event.pressed) { + if (is_combo_enabled()==false) { + return false; + } + } + return true; // Let QMK send the enter press/release events + default: + return true; // Process all other keycodes normally + } +}; diff --git a/keyboards/melody96/keymaps/dvz/readme.md b/keyboards/melody96/keymaps/dvz/readme.md new file mode 100644 index 000000000000..d82055244eb1 --- /dev/null +++ b/keyboards/melody96/keymaps/dvz/readme.md @@ -0,0 +1,3 @@ +# DvZ's VIA compatible keymap with rolling umlauts for german typists + +Added by: [devilzmods](https://github.com/devilzmods) diff --git a/keyboards/melody96/keymaps/dvz/rules.mk b/keyboards/melody96/keymaps/dvz/rules.mk new file mode 100644 index 000000000000..a1e85f13f4e4 --- /dev/null +++ b/keyboards/melody96/keymaps/dvz/rules.mk @@ -0,0 +1,5 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes # reduce firmware size +COMBO_ENABLE = yes +#UNICODE_ENABLE = yes +BOOTLOADER = caterina diff --git a/keyboards/melody96/keymaps/konstantin/rules.mk b/keyboards/melody96/keymaps/konstantin/rules.mk index 3ef19428aa64..b315c8e6b96a 100644 --- a/keyboards/melody96/keymaps/konstantin/rules.mk +++ b/keyboards/melody96/keymaps/konstantin/rules.mk @@ -1,5 +1,5 @@ # Generic features -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite COMMAND_ENABLE = yes CONSOLE_ENABLE = yes EXTRAKEY_ENABLE = yes @@ -11,6 +11,7 @@ UNICODEMAP_ENABLE = yes # Keyboard-specific features BACKLIGHT_ENABLE = no RGBLIGHT_ENABLE = yes +VIA_ENABLE = yes # Firmware size reduction GRAVE_ESC_ENABLE = no diff --git a/keyboards/melody96/rules.mk b/keyboards/melody96/rules.mk index 46b60ab9e405..ad87f9ecc980 100644 --- a/keyboards/melody96/rules.mk +++ b/keyboards/melody96/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -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 = yes # Enable keyboard backlight functionality AUDIO_ENABLE = no diff --git a/keyboards/meme/config.h b/keyboards/meme/config.h index e1248036f1a1..0757846f5728 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -91,54 +90,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -156,25 +107,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - -#endif diff --git a/keyboards/meme/info.json b/keyboards/meme/info.json index f62a401c5d60..57bf54633feb 100644 --- a/keyboards/meme/info.json +++ b/keyboards/meme/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Meme", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT_spicy": { "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}, {"x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4}, {"label":"Win", "x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] diff --git a/keyboards/meme/meme.c b/keyboards/meme/meme.c index 8ba421b15085..928f121fe912 100644 --- a/keyboards/meme/meme.c +++ b/keyboards/meme/meme.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "meme.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/meme/meme.h b/keyboards/meme/meme.h index 4c4b29a046cd..36c533ea9d65 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 . */ -#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/meme/rules.mk b/keyboards/meme/rules.mk index 344d83b335b4..28c40517c86d 100644 --- a/keyboards/meme/rules.mk +++ b/keyboards/meme/rules.mk @@ -2,29 +2,17 @@ MCU = atmega32u2 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/meow65/config.h b/keyboards/meow65/config.h new file mode 100644 index 000000000000..54af798314ec --- /dev/null +++ b/keyboards/meow65/config.h @@ -0,0 +1,147 @@ +/* +Copyright 2021 mrninhvn + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x6E64 // Hai-Ninh Dang +#define PRODUCT_ID 0x4D36 +#define DEVICE_VER 0x0001 +#define MANUFACTURER mrninhvn +#define PRODUCT Meow65 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * 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 { C6, B6, B5, B7, F7 } +#define MATRIX_COL_PINS { F5, F6, B0, F4, F1, D0, D1, D2, D3, D5, D4, D6, D7, B4, C7 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +//#define LED_NUM_LOCK_PIN B0 +//#define LED_CAPS_LOCK_PIN B1 +//#define LED_SCROLL_LOCK_PIN B2 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +//#define RGB_DI_PIN E2 +//#ifdef RGB_DI_PIN +//# define RGBLED_NUM 16 +//# define RGBLIGHT_HUE_STEP 8 +//# define RGBLIGHT_SAT_STEP 8 +//# define RGBLIGHT_VAL_STEP 8 +//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +//# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +//#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/meow65/info.json b/keyboards/meow65/info.json new file mode 100644 index 000000000000..90153257a63c --- /dev/null +++ b/keyboards/meow65/info.json @@ -0,0 +1,78 @@ +{ + "keyboard_name": "meow65", + "url": "https://github.com/mrninhvn/meow65-pcb", + "maintainer": "mrninhvn", + "layouts": { + "LAYOUT": { + "layout": [ + { "label": "K00 (C6,F5)", "x": 0, "y": 0 }, + { "label": "K01 (C6,F6)", "x": 1, "y": 0 }, + { "label": "K02 (C6,B0)", "x": 2, "y": 0 }, + { "label": "K03 (C6,F4)", "x": 3, "y": 0 }, + { "label": "K04 (C6,F1)", "x": 4, "y": 0 }, + { "label": "K05 (C6,D0)", "x": 5, "y": 0 }, + { "label": "K06 (C6,D1)", "x": 6, "y": 0 }, + { "label": "K07 (C6,D2)", "x": 7, "y": 0 }, + { "label": "K08 (C6,D3)", "x": 8, "y": 0 }, + { "label": "K09 (C6,D5)", "x": 9, "y": 0 }, + { "label": "K0A (C6,D4)", "x": 10, "y": 0 }, + { "label": "K0B (C6,D6)", "x": 11, "y": 0 }, + { "label": "K0C (C6,D7)", "x": 12, "y": 0 }, + { "label": "K0D (C6,B4)", "x": 13, "y": 0, "w": 2 }, + { "label": "K0E (C6,C7)", "x": 15, "y": 0 }, + { "label": "K10 (B6,F5)", "x": 0, "y": 1, "w": 1.5 }, + { "label": "K11 (B6,F6)", "x": 1.5, "y": 1 }, + { "label": "K12 (B6,B0)", "x": 2.5, "y": 1 }, + { "label": "K13 (B6,F4)", "x": 3.5, "y": 1 }, + { "label": "K14 (B6,F1)", "x": 4.5, "y": 1 }, + { "label": "K15 (B6,D0)", "x": 5.5, "y": 1 }, + { "label": "K16 (B6,D1)", "x": 6.5, "y": 1 }, + { "label": "K17 (B6,D2)", "x": 7.5, "y": 1 }, + { "label": "K18 (B6,D3)", "x": 8.5, "y": 1 }, + { "label": "K19 (B6,D5)", "x": 9.5, "y": 1 }, + { "label": "K1A (B6,D4)", "x": 10.5, "y": 1 }, + { "label": "K1B (B6,D6)", "x": 11.5, "y": 1 }, + { "label": "K1C (B6,D7)", "x": 12.5, "y": 1 }, + { "label": "K1D (B6,B4)", "x": 13.5, "y": 1, "w": 1.5 }, + { "label": "K1E (B6,C7)", "x": 15, "y": 1 }, + { "label": "K20 (B5,F5)", "x": 0, "y": 2, "w": 1.75 }, + { "label": "K21 (B5,F6)", "x": 1.75, "y": 2 }, + { "label": "K22 (B5,B0)", "x": 2.75, "y": 2 }, + { "label": "K23 (B5,F4)", "x": 3.75, "y": 2 }, + { "label": "K24 (B5,F1)", "x": 4.75, "y": 2 }, + { "label": "K25 (B5,D0)", "x": 5.75, "y": 2 }, + { "label": "K26 (B5,D1)", "x": 6.75, "y": 2 }, + { "label": "K27 (B5,D2)", "x": 7.75, "y": 2 }, + { "label": "K28 (B5,D3)", "x": 8.75, "y": 2 }, + { "label": "K29 (B5,D5)", "x": 9.75, "y": 2 }, + { "label": "K2A (B5,D4)", "x": 10.75, "y": 2 }, + { "label": "K2B (B5,D6)", "x": 11.75, "y": 2 }, + { "label": "K2D (B5,B4)", "x": 12.75, "y": 2, "w": 2.25 }, + { "label": "K2E (B5,C7)", "x": 15, "y": 2 }, + { "label": "K30 (B7,F5)", "x": 0, "y": 3, "w": 2.25 }, + { "label": "K31 (B7,F6)", "x": 2.25, "y": 3 }, + { "label": "K32 (B7,B0)", "x": 3.25, "y": 3 }, + { "label": "K33 (B7,F4)", "x": 4.25, "y": 3 }, + { "label": "K34 (B7,F1)", "x": 5.25, "y": 3 }, + { "label": "K35 (B7,D0)", "x": 6.25, "y": 3 }, + { "label": "K36 (B7,D1)", "x": 7.25, "y": 3 }, + { "label": "K37 (B7,D2)", "x": 8.25, "y": 3 }, + { "label": "K38 (B7,D3)", "x": 9.25, "y": 3 }, + { "label": "K39 (B7,D5)", "x": 10.25, "y": 3 }, + { "label": "K3A (B7,D4)", "x": 11.25, "y": 3 }, + { "label": "K3C (B7,D7)", "x": 12.25, "y": 3, "w": 1.75 }, + { "label": "K3D (B7,B4)", "x": 14, "y": 3 }, + { "label": "K3E (B7,C7)", "x": 15, "y": 3 }, + { "label": "K40 (F7,F5)", "x": 0, "y": 4, "w": 1.25 }, + { "label": "K41 (F7,F6)", "x": 1.25, "y": 4, "w": 1.25 }, + { "label": "K42 (F7,B0)", "x": 2.5, "y": 4, "w": 1.25 }, + { "label": "K45 (F7,D0)", "x": 3.75, "y": 4, "w": 6.25 }, + { "label": "K49 (F7,D5)", "x": 10, "y": 4, "w": 1.25 }, + { "label": "K4A (F7,D4)", "x": 11.25, "y": 4, "w": 1.25 }, + { "label": "K4C (F7,D7)", "x": 13, "y": 4 }, + { "label": "K4D (F7,B4)", "x": 14, "y": 4 }, + { "label": "K4E (F7,C7)", "x": 15, "y": 4 } + ] + } + } +} diff --git a/keyboards/meow65/keymaps/default/keymap.c b/keyboards/meow65/keymaps/default/keymap.c new file mode 100644 index 000000000000..b93abee7233f --- /dev/null +++ b/keyboards/meow65/keymaps/default/keymap.c @@ -0,0 +1,40 @@ +/* Copyright 2021 mrninhvn + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_FN] = LAYOUT( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/meow65/keymaps/default/readme.md b/keyboards/meow65/keymaps/default/readme.md new file mode 100644 index 000000000000..6da1fe875a4c --- /dev/null +++ b/keyboards/meow65/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for meow65 diff --git a/keyboards/meow65/keymaps/via/keymap.c b/keyboards/meow65/keymaps/via/keymap.c new file mode 100644 index 000000000000..b765673ca1c0 --- /dev/null +++ b/keyboards/meow65/keymaps/via/keymap.c @@ -0,0 +1,54 @@ +/* Copyright 2020 kkatano + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layer_names { + _L0, + _L1, + _L2, + _L3 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_L0] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_L1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_L1] = LAYOUT( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [_L2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [_L3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/meow65/keymaps/via/readme.md b/keyboards/meow65/keymaps/via/readme.md new file mode 100644 index 000000000000..717f08351e10 --- /dev/null +++ b/keyboards/meow65/keymaps/via/readme.md @@ -0,0 +1 @@ +# The via keymap for meow65 diff --git a/keyboards/meow65/keymaps/via/rules.mk b/keyboards/meow65/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/meow65/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/meow65/meow65.c b/keyboards/meow65/meow65.c new file mode 100644 index 000000000000..4d03f6a46006 --- /dev/null +++ b/keyboards/meow65/meow65.c @@ -0,0 +1,17 @@ +/* Copyright 2021 mrninhvn + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "meow65.h" diff --git a/keyboards/meow65/meow65.h b/keyboards/meow65/meow65.h new file mode 100644 index 000000000000..2e25bd975837 --- /dev/null +++ b/keyboards/meow65/meow65.h @@ -0,0 +1,41 @@ +/* Copyright 2021 mrninhvn + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + 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, k114, \ + k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k213, k214, \ + k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k312, k313, k314, \ + k400, k401, k402, k405, k409, k410, k412, k413, k414 \ +) { \ + { 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, k114 }, \ + { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, KC_NO, k213, k214 }, \ + { k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, KC_NO, k312, k313, k314 }, \ + { k400, k401, k402, KC_NO, KC_NO, k405, KC_NO, KC_NO, KC_NO, k409, k410, KC_NO, k412, k413, k414 } \ +} diff --git a/keyboards/meow65/readme.md b/keyboards/meow65/readme.md new file mode 100644 index 000000000000..734a278082f6 --- /dev/null +++ b/keyboards/meow65/readme.md @@ -0,0 +1,27 @@ +# meow65 + +![meow65](https://i.imgur.com/M6PmjPGh.png) + +Meow65 Hotswap PCB, compatible with Meow65 & Bakeneko65 V3 Keyboard + +* Keyboard Maintainer: [mrninhvn](https://github.com/mrninhvn) +* Hardware Supported: Meow65, Bakeneko65 V3 +* Hardware Availability: https://github.com/mrninhvn/meow65-pcb + +Make example for this keyboard (after setting up your build environment): + + make meow65:default + +Flashing example for this keyboard: + + make meow65:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down ESC key (the top left key) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB +* **Keycode in layout**: Press the key mapped to `RESET` if it is available diff --git a/keyboards/meow65/rules.mk b/keyboards/meow65/rules.mk new file mode 100644 index 000000000000..549d174906db --- /dev/null +++ b/keyboards/meow65/rules.mk @@ -0,0 +1,19 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 diff --git a/keyboards/merge/iso_macro/info.json b/keyboards/merge/iso_macro/info.json index 6ec535ac2db0..df31150821ac 100644 --- a/keyboards/merge/iso_macro/info.json +++ b/keyboards/merge/iso_macro/info.json @@ -2,8 +2,6 @@ "keyboard_name": "ISO Macro", "url": "", "maintainer": "duoshock", - "width": 5.75, - "height": 2, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/merge/iso_macro/rules.mk b/keyboards/merge/iso_macro/rules.mk index 43659757fa19..89e4faaf6134 100644 --- a/keyboards/merge/iso_macro/rules.mk +++ b/keyboards/merge/iso_macro/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes \ No newline at end of file diff --git a/keyboards/merge/uc1/info.json b/keyboards/merge/uc1/info.json index b1fbc5935348..5452e1e7cb8f 100644 --- a/keyboards/merge/uc1/info.json +++ b/keyboards/merge/uc1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "UC-1", "url": "https://mergedesign.store/products/uc-1", "maintainer": "duoshock", - "width": 4.25, - "height": 1, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/merge/uc1/rules.mk b/keyboards/merge/uc1/rules.mk index d1ce4736b780..e29b4f289233 100644 --- a/keyboards/merge/uc1/rules.mk +++ b/keyboards/merge/uc1/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # 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 ENCODER_ENABLE = yes diff --git a/keyboards/merge/um70/info.json b/keyboards/merge/um70/info.json index 56c764c8119b..f0fc07a95ec8 100644 --- a/keyboards/merge/um70/info.json +++ b/keyboards/merge/um70/info.json @@ -2,8 +2,6 @@ "keyboard_name": "UM-70", "url": "https://mergedesign.store/um-70", "maintainer": "duoshock", - "width": 18.75, - "height": 5.25, "layouts": { "LAYOUT_rspace_2u_bksp": { "layout": [{"x":1.5, "y":0}, {"x":2.5, "y":0}, {"x":3.5, "y":0}, {"x":4.5, "y":0}, {"x":5.5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":9.25, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.25, "y":0}, {"x":15.25, "y":0, "w":2}, {"x":17.75, "y":0}, {"x":1.5, "y":1, "w":1.5}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8.75, "y":1}, {"x":9.75, "y":1}, {"x":10.75, "y":1}, {"x":11.75, "y":1}, {"x":12.75, "y":1}, {"x":13.75, "y":1}, {"x":14.75, "y":1}, {"x":15.75, "y":1, "w":1.5}, {"x":17.75, "y":1}, {"x":0, "y":2}, {"x":1.5, "y":2, "w":1.75}, {"x":3.25, "y":2}, {"x":4.25, "y":2}, {"x":5.25, "y":2}, {"x":6.25, "y":2}, {"x":7.25, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":13, "y":2}, {"x":14, "y":2}, {"x":15, "y":2, "w":2.25}, {"x":17.75, "y":2}, {"x":0, "y":3}, {"x":1.5, "y":3, "w":2.25}, {"x":3.75, "y":3}, {"x":4.75, "y":3}, {"x":5.75, "y":3}, {"x":6.75, "y":3}, {"x":7.75, "y":3}, {"x":9.5, "y":3}, {"x":10.5, "y":3}, {"x":11.5, "y":3}, {"x":12.5, "y":3}, {"x":13.5, "y":3}, {"x":14.5, "y":3, "w":1.75}, {"x":16.5, "y":3.25}, {"x":0, "y":4}, {"x":1.5, "y":4, "w":1.25}, {"x":2.75, "y":4, "w":1.25}, {"x":4, "y":4, "w":1.25}, {"x":5.25, "y":4, "w":1.25}, {"x":6.5, "y":4, "w":2.25}, {"x":9.5, "y":4, "w":2.75}, {"x":12.25, "y":4, "w":1.5}, {"x":13.75, "y":4, "w":1.5}, {"x":15.5, "y":4.25}, {"x":16.5, "y":4.25}, {"x":17.5, "y":4.25}] diff --git a/keyboards/merge/um70/keymaps/default/keymap.c b/keyboards/merge/um70/keymaps/default/keymap.c index d16e737b4e3a..926f7836aade 100644 --- a/keyboards/merge/um70/keymaps/default/keymap.c +++ b/keyboards/merge/um70/keymaps/default/keymap.c @@ -89,7 +89,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE void suspend_power_down_user(void) { oled_off(); } @@ -169,7 +169,7 @@ static void print_status_narrow(void) { // WPM counter End } -void oled_task_user(void) { +bool oled_task_user(void) { current_wpm = get_current_wpm(); if (is_keyboard_master()) { print_status_narrow(); @@ -178,6 +178,7 @@ void oled_task_user(void) { render_logo(); //print_status_narrow(); } + return false; } #endif diff --git a/keyboards/merge/um70/keymaps/via/keymap.c b/keyboards/merge/um70/keymaps/via/keymap.c index 17cb2895cba2..f7255eacf292 100644 --- a/keyboards/merge/um70/keymaps/via/keymap.c +++ b/keyboards/merge/um70/keymaps/via/keymap.c @@ -88,7 +88,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE void suspend_power_down_user(void) { oled_off(); } @@ -173,7 +173,7 @@ static void print_status_narrow(void) { // WPM counter End } -void oled_task_user(void) { +bool oled_task_user(void) { current_wpm = get_current_wpm(); if (is_keyboard_master()) { print_status_narrow(); @@ -182,6 +182,7 @@ void oled_task_user(void) { render_logo(); //print_status_narrow(); } + return false; } #endif diff --git a/keyboards/merge/um70/keymaps/via/rules.mk b/keyboards/merge/um70/keymaps/via/rules.mk index 56de955c272a..cc9055e91e56 100644 --- a/keyboards/merge/um70/keymaps/via/rules.mk +++ b/keyboards/merge/um70/keymaps/via/rules.mk @@ -1,3 +1,6 @@ VIA_ENABLE = yes WPM_ENABLE = yes -LTO_ENABLE = yes \ No newline at end of file +LTO_ENABLE = yes +SPACE_CADET_ENABLE = no +GRAVE_ESC_ENABLE = no +MAGIC_ENABLE = no diff --git a/keyboards/merge/um70/rules.mk b/keyboards/merge/um70/rules.mk index 4e4abc1d80fa..af71e6bf252b 100644 --- a/keyboards/merge/um70/rules.mk +++ b/keyboards/merge/um70/rules.mk @@ -7,19 +7,17 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes SPLIT_KEYBOARD = yes -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/mesa/mesa_tkl/config.h b/keyboards/mesa/mesa_tkl/config.h index f4c26e2a0f4f..23da260bcf68 100644 --- a/keyboards/mesa/mesa_tkl/config.h +++ b/keyboards/mesa/mesa_tkl/config.h @@ -42,7 +42,7 @@ along with this program. If not, see . */ #define MATRIX_ROW_PINS { D2, D1, D0, B0, C6, C7 } #define MATRIX_COL_PINS { D3, D5, D4, D6, D7, B4, B5, B6, F7, F6, F5, F4, F1, F0, B1, B2, B3 } -#define UNUSED_PINS { B7 E6 } +#define UNUSED_PINS { B7, E6 } /* COL2ROW, ROW2COL*/ #define DIODE_DIRECTION COL2ROW diff --git a/keyboards/mesa/mesa_tkl/info.json b/keyboards/mesa/mesa_tkl/info.json index 0172ac6ea3be..c546ae5e97d8 100644 --- a/keyboards/mesa/mesa_tkl/info.json +++ b/keyboards/mesa/mesa_tkl/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Mesa TKL", "url": "https://mesakeyboards.com", "maintainer": "MesaKeyboards", - "width": 18.25, - "height": 6.25, "layouts": { "LAYOUT_all": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"label":"Back Space", "x":13, "y":1.25}, {"label":"Split BkSp", "x":14, "y":1.25}, {"label":"Insert", "x":15.25, "y":1.25}, {"label":"Home", "x":16.25, "y":1.25}, {"label":"PgUp", "x":17.25, "y":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Y", "x":6.5, "y":2.25}, {"label":"U", "x":7.5, "y":2.25}, {"label":"I", "x":8.5, "y":2.25}, {"label":"O", "x":9.5, "y":2.25}, {"label":"P", "x":10.5, "y":2.25}, {"label":"{", "x":11.5, "y":2.25}, {"label":"}", "x":12.5, "y":2.25}, {"label":"|", "x":13.5, "y":2.25, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.25}, {"label":"End", "x":16.25, "y":2.25}, {"label":"PgDn", "x":17.25, "y":2.25}, {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"H", "x":6.75, "y":3.25}, {"label":"J", "x":7.75, "y":3.25}, {"label":"K", "x":8.75, "y":3.25}, {"label":"L", "x":9.75, "y":3.25}, {"label":":", "x":10.75, "y":3.25}, {"label":"\"", "x":11.75, "y":3.25}, {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, {"label":"Shift", "x":0, "y":4.25, "w":1.25}, {"label":"NUBS", "x":1.25, "y":4.25}, {"label":"Z", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"N", "x":7.25, "y":4.25}, {"label":"M", "x":8.25, "y":4.25}, {"label":"<", "x":9.25, "y":4.25}, {"label":">", "x":10.25, "y":4.25}, {"label":"?", "x":11.25, "y":4.25}, {"label":"Shift", "x":12.25, "y":4.25, "w":1.75}, {"label":"Fn", "x":14, "y":4.25}, {"label":"\u2191", "x":16.25, "y":4.25}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.5}, {"label":"Win", "x":1.5, "y":5.25}, {"label":"Alt", "x":2.5, "y":5.25, "w":1.5}, {"x":4, "y":5.25, "w":7}, {"label":"Alt", "x":11, "y":5.25, "w":1.5}, {"label":"Win", "x":12.5, "y":5.25}, {"label":"Ctrl", "x":13.5, "y":5.25, "w":1.5}, {"label":"\u2190", "x":15.25, "y":5.25}, {"label":"\u2193", "x":16.25, "y":5.25}, {"label":"\u2192", "x":17.25, "y":5.25}] diff --git a/keyboards/mesa/mesa_tkl/rules.mk b/keyboards/mesa/mesa_tkl/rules.mk index 219b57ecf76f..c3849a52bf1e 100644 --- a/keyboards/mesa/mesa_tkl/rules.mk +++ b/keyboards/mesa/mesa_tkl/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/meson/config.h b/keyboards/meson/config.h index facadbdab236..e777320487c5 100644 --- a/keyboards/meson/config.h +++ b/keyboards/meson/config.h @@ -94,59 +94,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. diff --git a/keyboards/meson/info.json b/keyboards/meson/info.json index ccb793b10b9d..fd4fd1b6fc2a 100644 --- a/keyboards/meson/info.json +++ b/keyboards/meson/info.json @@ -1,8 +1,6 @@ { "keyboard_name": "Meson", "maintainer": "qmk", - "width": 15.5, - "height": 4, "layouts": { "LAYOUT": { "layout": [ @@ -104,4 +102,3 @@ } } } - diff --git a/keyboards/meson/keymaps/default/keymap.c b/keyboards/meson/keymaps/default/keymap.c index 002fc79775d8..3280b081c83a 100644 --- a/keyboards/meson/keymaps/default/keymap.c +++ b/keyboards/meson/keymaps/default/keymap.c @@ -64,15 +64,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/meson/meson.c b/keyboards/meson/meson.c index 9dc6f6a2e663..4b777633b11f 100644 --- a/keyboards/meson/meson.c +++ b/keyboards/meson/meson.c @@ -14,38 +14,3 @@ * along with this program. If not, see . */ #include "meson.h" - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -/* - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - -*/ diff --git a/keyboards/meson/rules.mk b/keyboards/meson/rules.mk index c4bb45334890..0067ad4fe941 100644 --- a/keyboards/meson/rules.mk +++ b/keyboards/meson/rules.mk @@ -2,31 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # SPLIT_KEYBOARD = yes -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/metamechs/timberwolf/config.h b/keyboards/metamechs/timberwolf/config.h index c6e0a8fe3d8d..fa0791a8ea3b 100644 --- a/keyboards/metamechs/timberwolf/config.h +++ b/keyboards/metamechs/timberwolf/config.h @@ -95,59 +95,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -163,11 +110,3 @@ along with this program. If not, see . //#define NO_ACTION_LAYER //#define NO_ACTION_TAPPING //#define NO_ACTION_ONESHOT - -/* - * MIDI options - */ - -/* Bootmagic Lite key configuration */ -#define BOOTMAGIC_LITE_ROW 0 -#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/metamechs/timberwolf/info.json b/keyboards/metamechs/timberwolf/info.json index 4c099e50394d..602ef358c5fc 100644 --- a/keyboards/metamechs/timberwolf/info.json +++ b/keyboards/metamechs/timberwolf/info.json @@ -1,72 +1,739 @@ { - "keyboard_name": "Timber Wolf", - "url": "https://geekhack.org/index.php?topic=102520.0", - "maintainer": "Croktopus", - "width": 18.75, - "height": 6.5, + "keyboard_name": "Timber Wolf", + "url": "https://geekhack.org/index.php?topic=102520.0", + "maintainer": "Croktopus", "layouts": { "LAYOUT_all": { "layout": [ - {"label":"Mute", "x":0, "y":0}, {"label":"Esc", "x":1.25, "y":0}, {"label":"F1", "x":2.5, "y":0}, {"label":"F2", "x":3.5, "y":0}, {"label":"F3", "x":4.5, "y":0}, {"label":"F4", "x":5.5, "y":0}, {"label":"F5", "x":7, "y":0}, {"label":"F6", "x":8, "y":0}, {"label":"F7", "x":9, "y":0}, {"label":"F8", "x":10, "y":0}, {"label":"F9", "x":11.5, "y":0}, {"label":"F10", "x":12.5, "y":0}, {"label":"F11", "x":13.5, "y":0}, {"label":"F12", "x":14.5, "y":0}, {"label":"Insert", "x":15.75, "y":0}, {"label":"Home", "x":16.75, "y":0}, {"label":"PgUp", "x":17.75, "y":0}, - {"label":"F13", "x":0, "y":1.25}, {"label":"~", "x":1.25, "y":1.25}, {"label":"!", "x":2.25, "y":1.25}, {"label":"@", "x":3.25, "y":1.25}, {"label":"#", "x":4.25, "y":1.25}, {"label":"$", "x":5.25, "y":1.25}, {"label":"%", "x":6.25, "y":1.25}, {"label":"^", "x":7.25, "y":1.25}, {"label":"&", "x":8.25, "y":1.25}, {"label":"*", "x":9.25, "y":1.25}, {"label":"(", "x":10.25, "y":1.25}, {"label":")", "x":11.25, "y":1.25}, {"label":"_", "x":12.25, "y":1.25}, {"label":"+", "x":13.25, "y":1.25}, {"x":14.25, "y":1.25}, {"label":"Backspace", "x":15.25, "y":1.25}, {"label":"End", "x":16.75, "y":1}, {"label":"PgDn", "x":17.75, "y":1}, - {"label":"F14", "x":0, "y":2.25}, {"label":"Tab", "x":1.25, "y":2.25, "w":1.5}, {"label":"Q", "x":2.75, "y":2.25}, {"label":"W", "x":3.75, "y":2.25}, {"label":"E", "x":4.75, "y":2.25}, {"label":"R", "x":5.75, "y":2.25}, {"label":"T", "x":6.75, "y":2.25}, {"label":"Y", "x":7.75, "y":2.25}, {"label":"U", "x":8.75, "y":2.25}, {"label":"I", "x":9.75, "y":2.25}, {"label":"O", "x":10.75, "y":2.25}, {"label":"P", "x":11.75, "y":2.25}, {"label":"{", "x":12.75, "y":2.25}, {"label":"}", "x":13.75, "y":2.25}, {"label":"|", "x":14.75, "y":2.25, "w":1.5}, {"label":"Insert", "x":16.5, "y":2.25}, {"label":"PrtSc", "x":17.75, "y":2.25}, - {"label":"F15", "x":0, "y":3.25}, {"label":"Caps Lock", "x":1.25, "y":3.25, "w":1.75}, {"label":"A", "x":3, "y":3.25}, {"label":"S", "x":4, "y":3.25}, {"label":"D", "x":5, "y":3.25}, {"label":"F", "x":6, "y":3.25}, {"label":"G", "x":7, "y":3.25}, {"label":"H", "x":8, "y":3.25}, {"label":"J", "x":9, "y":3.25}, {"label":"K", "x":10, "y":3.25}, {"label":"L", "x":11, "y":3.25}, {"label":":", "x":12, "y":3.25}, {"label":"\"", "x":13, "y":3.25}, {"x":14, "y":3.25}, {"label":"Enter", "x":15, "y":3.25, "w":1.25}, {"label":"Delete", "x":16.5, "y":3.25}, {"label":"Enter", "x":17.75, "y":3.25}, - {"label":"F16", "x":0, "y":4.25}, {"label":"Shift", "x":1.25, "y":4.25, "w":1.25}, {"x":2.5, "y":4.25}, {"label":"Z", "x":3.5, "y":4.25}, {"label":"X", "x":4.5, "y":4.25}, {"label":"C", "x":5.5, "y":4.25}, {"label":"V", "x":6.5, "y":4.25}, {"label":"B", "x":7.5, "y":4.25}, {"label":"N", "x":8.5, "y":4.25}, {"label":"M", "x":9.5, "y":4.25}, {"label":"<", "x":10.5, "y":4.25}, {"label":">", "x":11.5, "y":4.25}, {"label":"?", "x":12.5, "y":4.25}, {"label":"Shift", "x":13.5, "y":4.25, "w":1.25}, {"label":"Fn", "x":14.75, "y":4.25}, {"label":"Up", "x":15.75, "y":4.5}, {"label":"Up", "x":16.75, "y":4.5}, {"label":"Enter", "x":17.75, "y":4.25}, - {"label":"F17", "x":0, "y":5.25}, {"label":"Ctrl", "x":1.25, "y":5.25, "w":1.5}, {"label":"Win", "x":2.75, "y":5.25}, {"label":"Alt", "x":3.75, "y":5.25, "w":1.5}, {"x":5.25, "y":5.25, "w":5.5}, {"label":"Alt", "x":10.75, "y":5.25, "w":1}, {"label":"Win", "x":11.75, "y":5.25}, {"label":"Ctrl", "x":12.75, "y":5.25, "w":1}, {"label":"Left", "x":13.75, "y":5.5}, {"label":"Left", "x":14.75, "y":5.5}, {"label":"Down", "x":15.75, "y":5.5}, {"label":"Right", "x":16.75, "y":5.5}, {"label":"Enter", "x":17.75, "y":5.25}] + {"label":"Mute", "x":0, "y":0}, + {"label":"Esc", "x":1.25, "y":0}, + {"label":"F1", "x":2.5, "y":0}, + {"label":"F2", "x":3.5, "y":0}, + {"label":"F3", "x":4.5, "y":0}, + {"label":"F4", "x":5.5, "y":0}, + {"label":"F5", "x":7, "y":0}, + {"label":"F6", "x":8, "y":0}, + {"label":"F7", "x":9, "y":0}, + {"label":"F8", "x":10, "y":0}, + {"label":"F9", "x":11.5, "y":0}, + {"label":"F10", "x":12.5, "y":0}, + {"label":"F11", "x":13.5, "y":0}, + {"label":"F12", "x":14.5, "y":0}, + {"label":"Insert", "x":15.75, "y":0}, + {"label":"Home", "x":16.75, "y":0}, + {"label":"PgUp", "x":17.75, "y":0}, + + {"label":"F13", "x":0, "y":1.25}, + {"label":"~", "x":1.25, "y":1.25}, + {"label":"!", "x":2.25, "y":1.25}, + {"label":"@", "x":3.25, "y":1.25}, + {"label":"#", "x":4.25, "y":1.25}, + {"label":"$", "x":5.25, "y":1.25}, + {"label":"%", "x":6.25, "y":1.25}, + {"label":"^", "x":7.25, "y":1.25}, + {"label":"&", "x":8.25, "y":1.25}, + {"label":"*", "x":9.25, "y":1.25}, + {"label":"(", "x":10.25, "y":1.25}, + {"label":")", "x":11.25, "y":1.25}, + {"label":"_", "x":12.25, "y":1.25}, + {"label":"+", "x":13.25, "y":1.25}, + {"x":14.25, "y":1.25}, + {"label":"Backspace", "x":15.25, "y":1.25}, + {"label":"End", "x":16.75, "y":1}, + {"label":"PgDn", "x":17.75, "y":1}, + + {"label":"F14", "x":0, "y":2.25}, + {"label":"Tab", "x":1.25, "y":2.25, "w":1.5}, + {"label":"Q", "x":2.75, "y":2.25}, + {"label":"W", "x":3.75, "y":2.25}, + {"label":"E", "x":4.75, "y":2.25}, + {"label":"R", "x":5.75, "y":2.25}, + {"label":"T", "x":6.75, "y":2.25}, + {"label":"Y", "x":7.75, "y":2.25}, + {"label":"U", "x":8.75, "y":2.25}, + {"label":"I", "x":9.75, "y":2.25}, + {"label":"O", "x":10.75, "y":2.25}, + {"label":"P", "x":11.75, "y":2.25}, + {"label":"{", "x":12.75, "y":2.25}, + {"label":"}", "x":13.75, "y":2.25}, + {"label":"|", "x":14.75, "y":2.25, "w":1.5}, + {"label":"Insert", "x":16.5, "y":2.25}, + {"label":"PrtSc", "x":17.75, "y":2.25}, + + {"label":"F15", "x":0, "y":3.25}, + {"label":"Caps Lock", "x":1.25, "y":3.25, "w":1.75}, + {"label":"A", "x":3, "y":3.25}, + {"label":"S", "x":4, "y":3.25}, + {"label":"D", "x":5, "y":3.25}, + {"label":"F", "x":6, "y":3.25}, + {"label":"G", "x":7, "y":3.25}, + {"label":"H", "x":8, "y":3.25}, + {"label":"J", "x":9, "y":3.25}, + {"label":"K", "x":10, "y":3.25}, + {"label":"L", "x":11, "y":3.25}, + {"label":":", "x":12, "y":3.25}, + {"label":"\"", "x":13, "y":3.25}, + {"x":14, "y":3.25}, + {"label":"Enter", "x":15, "y":3.25, "w":1.25}, + {"label":"Delete", "x":16.5, "y":3.25}, + {"label":"Enter", "x":17.75, "y":3.25}, + + {"label":"F16", "x":0, "y":4.25}, + {"label":"Shift", "x":1.25, "y":4.25, "w":1.25}, + {"x":2.5, "y":4.25}, + {"label":"Z", "x":3.5, "y":4.25}, + {"label":"X", "x":4.5, "y":4.25}, + {"label":"C", "x":5.5, "y":4.25}, + {"label":"V", "x":6.5, "y":4.25}, + {"label":"B", "x":7.5, "y":4.25}, + {"label":"N", "x":8.5, "y":4.25}, + {"label":"M", "x":9.5, "y":4.25}, + {"label":"<", "x":10.5, "y":4.25}, + {"label":">", "x":11.5, "y":4.25}, + {"label":"?", "x":12.5, "y":4.25}, + {"label":"Shift", "x":13.5, "y":4.25, "w":1.25}, + {"label":"Fn", "x":14.75, "y":4.25}, + {"label":"Up", "x":15.75, "y":4.5}, + {"label":"Up", "x":16.75, "y":4.5}, + {"label":"Enter", "x":17.75, "y":4.25}, + + {"label":"F17", "x":0, "y":5.25}, + {"label":"Ctrl", "x":1.25, "y":5.25, "w":1.5}, + {"label":"Win", "x":2.75, "y":5.25}, + {"label":"Alt", "x":3.75, "y":5.25, "w":1.5}, + {"x":5.25, "y":5.25, "w":5.5}, + {"label":"Alt", "x":10.75, "y":5.25, "w":1}, + {"label":"Win", "x":11.75, "y":5.25}, + {"label":"Ctrl", "x":12.75, "y":5.25, "w":1}, + {"label":"Left", "x":13.75, "y":5.5}, + {"label":"Left", "x":14.75, "y":5.5}, + {"label":"Down", "x":15.75, "y":5.5}, + {"label":"Right", "x":16.75, "y":5.5}, + {"label":"Enter", "x":17.75, "y":5.25} + ] }, "LAYOUT_prime_ansi": { "layout": [ - {"label":"Mute", "x":0, "y":0}, {"label":"Esc", "x":1.25, "y":0}, {"label":"F1", "x":2.5, "y":0}, {"label":"F2", "x":3.5, "y":0}, {"label":"F3", "x":4.5, "y":0}, {"label":"F4", "x":5.5, "y":0}, {"label":"F5", "x":7, "y":0}, {"label":"F6", "x":8, "y":0}, {"label":"F7", "x":9, "y":0}, {"label":"F8", "x":10, "y":0}, {"label":"F9", "x":11.5, "y":0}, {"label":"F10", "x":12.5, "y":0}, {"label":"F11", "x":13.5, "y":0}, {"label":"F12", "x":14.5, "y":0}, {"label":"Insert", "x":15.75, "y":0}, {"label":"Home", "x":16.75, "y":0}, {"label":"PgUp", "x":17.75, "y":0}, - {"label":"F13", "x":0, "y":1.25}, {"label":"~", "x":1.25, "y":1.25}, {"label":"!", "x":2.25, "y":1.25}, {"label":"@", "x":3.25, "y":1.25}, {"label":"#", "x":4.25, "y":1.25}, {"label":"$", "x":5.25, "y":1.25}, {"label":"%", "x":6.25, "y":1.25}, {"label":"^", "x":7.25, "y":1.25}, {"label":"&", "x":8.25, "y":1.25}, {"label":"*", "x":9.25, "y":1.25}, {"label":"(", "x":10.25, "y":1.25}, {"label":")", "x":11.25, "y":1.25}, {"label":"_", "x":12.25, "y":1.25}, {"label":"+", "x":13.25, "y":1.25}, {"x":14.25, "y":1.25}, {"label":"Backspace", "x":15.25, "y":1.25}, {"label":"End", "x":16.75, "y":1}, {"label":"PgDn", "x":17.75, "y":1}, - {"label":"F14", "x":0, "y":2.25}, {"label":"Tab", "x":1.25, "y":2.25, "w":1.5}, {"label":"Q", "x":2.75, "y":2.25}, {"label":"W", "x":3.75, "y":2.25}, {"label":"E", "x":4.75, "y":2.25}, {"label":"R", "x":5.75, "y":2.25}, {"label":"T", "x":6.75, "y":2.25}, {"label":"Y", "x":7.75, "y":2.25}, {"label":"U", "x":8.75, "y":2.25}, {"label":"I", "x":9.75, "y":2.25}, {"label":"O", "x":10.75, "y":2.25}, {"label":"P", "x":11.75, "y":2.25}, {"label":"{", "x":12.75, "y":2.25}, {"label":"}", "x":13.75, "y":2.25}, {"label":"|", "x":14.75, "y":2.25, "w":1.5}, {"label":"Insert", "x":16.5, "y":2.25}, {"label":"PrtSc", "x":17.75, "y":2.25}, - {"label":"F15", "x":0, "y":3.25}, {"label":"Caps Lock", "x":1.25, "y":3.25, "w":1.75}, {"label":"A", "x":3, "y":3.25}, {"label":"S", "x":4, "y":3.25}, {"label":"D", "x":5, "y":3.25}, {"label":"F", "x":6, "y":3.25}, {"label":"G", "x":7, "y":3.25}, {"label":"H", "x":8, "y":3.25}, {"label":"J", "x":9, "y":3.25}, {"label":"K", "x":10, "y":3.25}, {"label":"L", "x":11, "y":3.25}, {"label":":", "x":12, "y":3.25}, {"label":"\"", "x":13, "y":3.25}, {"label":"Enter", "x":14, "y":3.25, "w":2.25}, {"label":"Delete", "x":16.5, "y":3.25}, {"label":"Enter", "x":17.75, "y":3.25}, - {"label":"F16", "x":0, "y":4.25}, {"label":"Shift", "x":1.25, "y":4.25, "w":2.25}, {"label":"Z", "x":3.5, "y":4.25}, {"label":"X", "x":4.5, "y":4.25}, {"label":"C", "x":5.5, "y":4.25}, {"label":"V", "x":6.5, "y":4.25}, {"label":"B", "x":7.5, "y":4.25}, {"label":"N", "x":8.5, "y":4.25}, {"label":"M", "x":9.5, "y":4.25}, {"label":"<", "x":10.5, "y":4.25}, {"label":">", "x":11.5, "y":4.25}, {"label":"?", "x":12.5, "y":4.25}, {"label":"Shift", "x":13.5, "y":4.25, "w":1.75}, {"label":"Fn", "x":15.25, "y":4.25}, {"label":"Up", "x":16.5, "y":4.5}, {"label":"Enter", "x":17.75, "y":4.25}, - {"label":"F17", "x":0, "y":5.25}, {"label":"Ctrl", "x":1.25, "y":5.25, "w":1.5}, {"label":"Win", "x":2.75, "y":5.25}, {"label":"Alt", "x":3.75, "y":5.25, "w":1.5}, {"x":5.25, "y":5.25, "w":6}, {"label":"Alt", "x":11.25, "y":5.25, "w":1.5}, {"label":"Win", "x":12.75, "y":5.25}, {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.5}, {"label":"Left", "x":15.5, "y":5.5}, {"label":"Down", "x":16.5, "y":5.5}, {"label":"Right", "x":17.5, "y":5.5}] + {"label":"Mute", "x":0, "y":0}, + {"label":"Esc", "x":1.25, "y":0}, + {"label":"F1", "x":2.5, "y":0}, + {"label":"F2", "x":3.5, "y":0}, + {"label":"F3", "x":4.5, "y":0}, + {"label":"F4", "x":5.5, "y":0}, + {"label":"F5", "x":7, "y":0}, + {"label":"F6", "x":8, "y":0}, + {"label":"F7", "x":9, "y":0}, + {"label":"F8", "x":10, "y":0}, + {"label":"F9", "x":11.5, "y":0}, + {"label":"F10", "x":12.5, "y":0}, + {"label":"F11", "x":13.5, "y":0}, + {"label":"F12", "x":14.5, "y":0}, + {"label":"Insert", "x":15.75, "y":0}, + {"label":"Home", "x":16.75, "y":0}, + {"label":"PgUp", "x":17.75, "y":0}, + + {"label":"F13", "x":0, "y":1.25}, + {"label":"~", "x":1.25, "y":1.25}, + {"label":"!", "x":2.25, "y":1.25}, + {"label":"@", "x":3.25, "y":1.25}, + {"label":"#", "x":4.25, "y":1.25}, + {"label":"$", "x":5.25, "y":1.25}, + {"label":"%", "x":6.25, "y":1.25}, + {"label":"^", "x":7.25, "y":1.25}, + {"label":"&", "x":8.25, "y":1.25}, + {"label":"*", "x":9.25, "y":1.25}, + {"label":"(", "x":10.25, "y":1.25}, + {"label":")", "x":11.25, "y":1.25}, + {"label":"_", "x":12.25, "y":1.25}, + {"label":"+", "x":13.25, "y":1.25}, + {"x":14.25, "y":1.25}, + {"label":"Backspace", "x":15.25, "y":1.25}, + {"label":"End", "x":16.75, "y":1}, + {"label":"PgDn", "x":17.75, "y":1}, + + {"label":"F14", "x":0, "y":2.25}, + {"label":"Tab", "x":1.25, "y":2.25, "w":1.5}, + {"label":"Q", "x":2.75, "y":2.25}, + {"label":"W", "x":3.75, "y":2.25}, + {"label":"E", "x":4.75, "y":2.25}, + {"label":"R", "x":5.75, "y":2.25}, + {"label":"T", "x":6.75, "y":2.25}, + {"label":"Y", "x":7.75, "y":2.25}, + {"label":"U", "x":8.75, "y":2.25}, + {"label":"I", "x":9.75, "y":2.25}, + {"label":"O", "x":10.75, "y":2.25}, + {"label":"P", "x":11.75, "y":2.25}, + {"label":"{", "x":12.75, "y":2.25}, + {"label":"}", "x":13.75, "y":2.25}, + {"label":"|", "x":14.75, "y":2.25, "w":1.5}, + {"label":"Insert", "x":16.5, "y":2.25}, + {"label":"PrtSc", "x":17.75, "y":2.25}, + + {"label":"F15", "x":0, "y":3.25}, + {"label":"Caps Lock", "x":1.25, "y":3.25, "w":1.75}, + {"label":"A", "x":3, "y":3.25}, + {"label":"S", "x":4, "y":3.25}, + {"label":"D", "x":5, "y":3.25}, + {"label":"F", "x":6, "y":3.25}, + {"label":"G", "x":7, "y":3.25}, + {"label":"H", "x":8, "y":3.25}, + {"label":"J", "x":9, "y":3.25}, + {"label":"K", "x":10, "y":3.25}, + {"label":"L", "x":11, "y":3.25}, + {"label":":", "x":12, "y":3.25}, + {"label":"\"", "x":13, "y":3.25}, + {"label":"Enter", "x":14, "y":3.25, "w":2.25}, + {"label":"Delete", "x":16.5, "y":3.25}, + {"label":"Enter", "x":17.75, "y":3.25}, + + {"label":"F16", "x":0, "y":4.25}, + {"label":"Shift", "x":1.25, "y":4.25, "w":2.25}, + {"label":"Z", "x":3.5, "y":4.25}, + {"label":"X", "x":4.5, "y":4.25}, + {"label":"C", "x":5.5, "y":4.25}, + {"label":"V", "x":6.5, "y":4.25}, + {"label":"B", "x":7.5, "y":4.25}, + {"label":"N", "x":8.5, "y":4.25}, + {"label":"M", "x":9.5, "y":4.25}, + {"label":"<", "x":10.5, "y":4.25}, + {"label":">", "x":11.5, "y":4.25}, + {"label":"?", "x":12.5, "y":4.25}, + {"label":"Shift", "x":13.5, "y":4.25, "w":1.75}, + {"label":"Fn", "x":15.25, "y":4.25}, + {"label":"Up", "x":16.5, "y":4.5}, + {"label":"Enter", "x":17.75, "y":4.25}, + + {"label":"F17", "x":0, "y":5.25}, + {"label":"Ctrl", "x":1.25, "y":5.25, "w":1.5}, + {"label":"Win", "x":2.75, "y":5.25}, + {"label":"Alt", "x":3.75, "y":5.25, "w":1.5}, + {"x":5.25, "y":5.25, "w":6}, + {"label":"Alt", "x":11.25, "y":5.25, "w":1.5}, + {"label":"Win", "x":12.75, "y":5.25}, + {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.5}, + {"label":"Left", "x":15.5, "y":5.5}, + {"label":"Down", "x":16.5, "y":5.5}, + {"label":"Right", "x":17.5, "y":5.5} + ] }, "LAYOUT_prime_iso": { "layout": [ - {"label":"Mute", "x":0, "y":0}, {"label":"Esc", "x":1.25, "y":0}, {"label":"F1", "x":2.5, "y":0}, {"label":"F2", "x":3.5, "y":0}, {"label":"F3", "x":4.5, "y":0}, {"label":"F4", "x":5.5, "y":0}, {"label":"F5", "x":7, "y":0}, {"label":"F6", "x":8, "y":0}, {"label":"F7", "x":9, "y":0}, {"label":"F8", "x":10, "y":0}, {"label":"F9", "x":11.5, "y":0}, {"label":"F10", "x":12.5, "y":0}, {"label":"F11", "x":13.5, "y":0}, {"label":"F12", "x":14.5, "y":0}, {"label":"Insert", "x":15.75, "y":0}, {"label":"Home", "x":16.75, "y":0}, {"label":"PgUp", "x":17.75, "y":0}, - {"label":"F13", "x":0, "y":1.25}, {"label":"~", "x":1.25, "y":1.25}, {"label":"!", "x":2.25, "y":1.25}, {"label":"@", "x":3.25, "y":1.25}, {"label":"#", "x":4.25, "y":1.25}, {"label":"$", "x":5.25, "y":1.25}, {"label":"%", "x":6.25, "y":1.25}, {"label":"^", "x":7.25, "y":1.25}, {"label":"&", "x":8.25, "y":1.25}, {"label":"*", "x":9.25, "y":1.25}, {"label":"(", "x":10.25, "y":1.25}, {"label":")", "x":11.25, "y":1.25}, {"label":"_", "x":12.25, "y":1.25}, {"label":"+", "x":13.25, "y":1.25}, {"x":14.25, "y":1.25}, {"label":"Backspace", "x":15.25, "y":1.25}, {"label":"End", "x":16.75, "y":1}, {"label":"PgDn", "x":17.75, "y":1}, - {"label":"F14", "x":0, "y":2.25}, {"label":"Tab", "x":1.25, "y":2.25, "w":1.5}, {"label":"Q", "x":2.75, "y":2.25}, {"label":"W", "x":3.75, "y":2.25}, {"label":"E", "x":4.75, "y":2.25}, {"label":"R", "x":5.75, "y":2.25}, {"label":"T", "x":6.75, "y":2.25}, {"label":"Y", "x":7.75, "y":2.25}, {"label":"U", "x":8.75, "y":2.25}, {"label":"I", "x":9.75, "y":2.25}, {"label":"O", "x":10.75, "y":2.25}, {"label":"P", "x":11.75, "y":2.25}, {"label":"{", "x":12.75, "y":2.25}, {"label":"}", "x":13.75, "y":2.25}, {"label":"Enter", "x":15, "y":2.25, "w":1.25, "h":2}, {"label":"Insert", "x":16.5, "y":2.25}, {"label":"PrtSc", "x":17.75, "y":2.25}, - {"label":"F15", "x":0, "y":3.25}, {"label":"Caps Lock", "x":1.25, "y":3.25, "w":1.75}, {"label":"A", "x":3, "y":3.25}, {"label":"S", "x":4, "y":3.25}, {"label":"D", "x":5, "y":3.25}, {"label":"F", "x":6, "y":3.25}, {"label":"G", "x":7, "y":3.25}, {"label":"H", "x":8, "y":3.25}, {"label":"J", "x":9, "y":3.25}, {"label":"K", "x":10, "y":3.25}, {"label":"L", "x":11, "y":3.25}, {"label":":", "x":12, "y":3.25}, {"label":"\"", "x":13, "y":3.25}, {"x":14, "y":3.25}, {"label":"Delete", "x":16.5, "y":3.25}, {"label":"Enter", "x":17.75, "y":3.25}, - {"label":"F16", "x":0, "y":4.25}, {"label":"Shift", "x":1.25, "y":4.25, "w":1.25}, {"x":2.5, "y":4.25}, {"label":"Z", "x":3.5, "y":4.25}, {"label":"X", "x":4.5, "y":4.25}, {"label":"C", "x":5.5, "y":4.25}, {"label":"V", "x":6.5, "y":4.25}, {"label":"B", "x":7.5, "y":4.25}, {"label":"N", "x":8.5, "y":4.25}, {"label":"M", "x":9.5, "y":4.25}, {"label":"<", "x":10.5, "y":4.25}, {"label":">", "x":11.5, "y":4.25}, {"label":"?", "x":12.5, "y":4.25}, {"label":"Shift", "x":13.5, "y":4.25, "w":1.75}, {"label":"Fn", "x":15.25, "y":4.25}, {"label":"Up", "x":16.5, "y":4.5}, {"label":"Enter", "x":17.75, "y":4.25}, - {"label":"F17", "x":0, "y":5.25}, {"label":"Ctrl", "x":1.25, "y":5.25, "w":1.5}, {"label":"Win", "x":2.75, "y":5.25}, {"label":"Alt", "x":3.75, "y":5.25, "w":1.5}, {"x":5.25, "y":5.25, "w":6}, {"label":"Alt", "x":11.25, "y":5.25, "w":1.5}, {"label":"Win", "x":12.75, "y":5.25}, {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.5}, {"label":"Left", "x":15.5, "y":5.5}, {"label":"Down", "x":16.5, "y":5.5}, {"label":"Right", "x":17.5, "y":5.5}] + {"label":"Mute", "x":0, "y":0}, + {"label":"Esc", "x":1.25, "y":0}, + {"label":"F1", "x":2.5, "y":0}, + {"label":"F2", "x":3.5, "y":0}, + {"label":"F3", "x":4.5, "y":0}, + {"label":"F4", "x":5.5, "y":0}, + {"label":"F5", "x":7, "y":0}, + {"label":"F6", "x":8, "y":0}, + {"label":"F7", "x":9, "y":0}, + {"label":"F8", "x":10, "y":0}, + {"label":"F9", "x":11.5, "y":0}, + {"label":"F10", "x":12.5, "y":0}, + {"label":"F11", "x":13.5, "y":0}, + {"label":"F12", "x":14.5, "y":0}, + {"label":"Insert", "x":15.75, "y":0}, + {"label":"Home", "x":16.75, "y":0}, + {"label":"PgUp", "x":17.75, "y":0}, + + {"label":"F13", "x":0, "y":1.25}, + {"label":"~", "x":1.25, "y":1.25}, + {"label":"!", "x":2.25, "y":1.25}, + {"label":"@", "x":3.25, "y":1.25}, + {"label":"#", "x":4.25, "y":1.25}, + {"label":"$", "x":5.25, "y":1.25}, + {"label":"%", "x":6.25, "y":1.25}, + {"label":"^", "x":7.25, "y":1.25}, + {"label":"&", "x":8.25, "y":1.25}, + {"label":"*", "x":9.25, "y":1.25}, + {"label":"(", "x":10.25, "y":1.25}, + {"label":")", "x":11.25, "y":1.25}, + {"label":"_", "x":12.25, "y":1.25}, + {"label":"+", "x":13.25, "y":1.25}, + {"x":14.25, "y":1.25}, + {"label":"Backspace", "x":15.25, "y":1.25}, + {"label":"End", "x":16.75, "y":1}, + {"label":"PgDn", "x":17.75, "y":1}, + + {"label":"F14", "x":0, "y":2.25}, + {"label":"Tab", "x":1.25, "y":2.25, "w":1.5}, + {"label":"Q", "x":2.75, "y":2.25}, + {"label":"W", "x":3.75, "y":2.25}, + {"label":"E", "x":4.75, "y":2.25}, + {"label":"R", "x":5.75, "y":2.25}, + {"label":"T", "x":6.75, "y":2.25}, + {"label":"Y", "x":7.75, "y":2.25}, + {"label":"U", "x":8.75, "y":2.25}, + {"label":"I", "x":9.75, "y":2.25}, + {"label":"O", "x":10.75, "y":2.25}, + {"label":"P", "x":11.75, "y":2.25}, + {"label":"{", "x":12.75, "y":2.25}, + {"label":"}", "x":13.75, "y":2.25}, + {"label":"Insert", "x":16.5, "y":2.25}, + {"label":"PrtSc", "x":17.75, "y":2.25}, + + {"label":"F15", "x":0, "y":3.25}, + {"label":"Caps Lock", "x":1.25, "y":3.25, "w":1.75}, + {"label":"A", "x":3, "y":3.25}, + {"label":"S", "x":4, "y":3.25}, + {"label":"D", "x":5, "y":3.25}, + {"label":"F", "x":6, "y":3.25}, + {"label":"G", "x":7, "y":3.25}, + {"label":"H", "x":8, "y":3.25}, + {"label":"J", "x":9, "y":3.25}, + {"label":"K", "x":10, "y":3.25}, + {"label":"L", "x":11, "y":3.25}, + {"label":":", "x":12, "y":3.25}, + {"label":"\"", "x":13, "y":3.25}, + {"x":14, "y":3.25}, + {"label":"Enter", "x":15, "y":2.25, "w":1.25, "h":2}, + {"label":"Delete", "x":16.5, "y":3.25}, + {"label":"Enter", "x":17.75, "y":3.25}, + + {"label":"F16", "x":0, "y":4.25}, + {"label":"Shift", "x":1.25, "y":4.25, "w":1.25}, + {"x":2.5, "y":4.25}, + {"label":"Z", "x":3.5, "y":4.25}, + {"label":"X", "x":4.5, "y":4.25}, + {"label":"C", "x":5.5, "y":4.25}, + {"label":"V", "x":6.5, "y":4.25}, + {"label":"B", "x":7.5, "y":4.25}, + {"label":"N", "x":8.5, "y":4.25}, + {"label":"M", "x":9.5, "y":4.25}, + {"label":"<", "x":10.5, "y":4.25}, + {"label":">", "x":11.5, "y":4.25}, + {"label":"?", "x":12.5, "y":4.25}, + {"label":"Shift", "x":13.5, "y":4.25, "w":1.75}, + {"label":"Fn", "x":15.25, "y":4.25}, + {"label":"Up", "x":16.5, "y":4.5}, + {"label":"Enter", "x":17.75, "y":4.25}, + + {"label":"F17", "x":0, "y":5.25}, + {"label":"Ctrl", "x":1.25, "y":5.25, "w":1.5}, + {"label":"Win", "x":2.75, "y":5.25}, + {"label":"Alt", "x":3.75, "y":5.25, "w":1.5}, + {"x":5.25, "y":5.25, "w":6}, + {"label":"Alt", "x":11.25, "y":5.25, "w":1.5}, + {"label":"Win", "x":12.75, "y":5.25}, + {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.5}, + {"label":"Left", "x":15.5, "y":5.5}, + {"label":"Down", "x":16.5, "y":5.5}, + {"label":"Right", "x":17.5, "y":5.5} + ] }, - "LAYOUT_b_ansi": { + "LAYOUT_b_ansi": { "layout": [ - {"label":"Mute", "x":0, "y":0}, {"label":"Esc", "x":1.25, "y":0}, {"label":"F1", "x":2.5, "y":0}, {"label":"F2", "x":3.5, "y":0}, {"label":"F3", "x":4.5, "y":0}, {"label":"F4", "x":5.5, "y":0}, {"label":"F5", "x":7, "y":0}, {"label":"F6", "x":8, "y":0}, {"label":"F7", "x":9, "y":0}, {"label":"F8", "x":10, "y":0}, {"label":"F9", "x":11.5, "y":0}, {"label":"F10", "x":12.5, "y":0}, {"label":"F11", "x":13.5, "y":0}, {"label":"F12", "x":14.5, "y":0}, {"label":"PrtSc", "x":15.75, "y":0}, {"label":"Scroll Lock", "x":16.75, "y":0}, {"label":"Pause", "x":17.75, "y":0}, - {"label":"F13", "x":0, "y":1.25}, {"label":"~", "x":1.25, "y":1.25}, {"label":"!", "x":2.25, "y":1.25}, {"label":"@", "x":3.25, "y":1.25}, {"label":"#", "x":4.25, "y":1.25}, {"label":"$", "x":5.25, "y":1.25}, {"label":"%", "x":6.25, "y":1.25}, {"label":"^", "x":7.25, "y":1.25}, {"label":"&", "x":8.25, "y":1.25}, {"label":"*", "x":9.25, "y":1.25}, {"label":"(", "x":10.25, "y":1.25}, {"label":")", "x":11.25, "y":1.25}, {"label":"_", "x":12.25, "y":1.25}, {"label":"+", "x":13.25, "y":1.25}, {"x":14.25, "y":1.25}, {"label":"Backspace", "x":15.25, "y":1.25}, {"label":"Home", "x":16.75, "y":1.25}, {"label":"PgUp", "x":17.75, "y":1.25}, - {"label":"F14", "x":0, "y":2.25}, {"label":"Tab", "x":1.25, "y":2.25, "w":1.5}, {"label":"Q", "x":2.75, "y":2.25}, {"label":"W", "x":3.75, "y":2.25}, {"label":"E", "x":4.75, "y":2.25}, {"label":"R", "x":5.75, "y":2.25}, {"label":"T", "x":6.75, "y":2.25}, {"label":"Y", "x":7.75, "y":2.25}, {"label":"U", "x":8.75, "y":2.25}, {"label":"I", "x":9.75, "y":2.25}, {"label":"O", "x":10.75, "y":2.25}, {"label":"P", "x":11.75, "y":2.25}, {"label":"{", "x":12.75, "y":2.25}, {"label":"}", "x":13.75, "y":2.25}, {"label":"|", "x":14.75, "y":2.25, "w":1.5}, {"label":"End", "x":16.75, "y":2.25}, {"label":"PgDn", "x":17.75, "y":2.25}, - {"label":"F15", "x":0, "y":3.25}, {"label":"Caps Lock", "x":1.25, "y":3.25, "w":1.75}, {"label":"A", "x":3, "y":3.25}, {"label":"S", "x":4, "y":3.25}, {"label":"D", "x":5, "y":3.25}, {"label":"F", "x":6, "y":3.25}, {"label":"G", "x":7, "y":3.25}, {"label":"H", "x":8, "y":3.25}, {"label":"J", "x":9, "y":3.25}, {"label":"K", "x":10, "y":3.25}, {"label":"L", "x":11, "y":3.25}, {"label":":", "x":12, "y":3.25}, {"label":"\"", "x":13, "y":3.25}, {"label":"Enter", "x":14, "y":3.25, "w":2.25}, {"label":"Delete", "x":16.75, "y":3.25}, {"label":"Insert", "x":17.75, "y":3.25}, - {"label":"F16", "x":0, "y":4.25}, {"label":"Shift", "x":1.25, "y":4.25, "w":2.25}, {"label":"Z", "x":3.5, "y":4.25}, {"label":"X", "x":4.5, "y":4.25}, {"label":"C", "x":5.5, "y":4.25}, {"label":"V", "x":6.5, "y":4.25}, {"label":"B", "x":7.5, "y":4.25}, {"label":"N", "x":8.5, "y":4.25}, {"label":"M", "x":9.5, "y":4.25}, {"label":"<", "x":10.5, "y":4.25}, {"label":">", "x":11.5, "y":4.25}, {"label":"?", "x":12.5, "y":4.25}, {"label":"Shift", "x":13.5, "y":4.25, "w":1.75}, {"label":"Fn", "x":15.25, "y":4.25}, {"label":"Up", "x":16.5, "y":4.5}, {"label":"Enter", "x":17.75, "y":4.25}, - {"label":"F17", "x":0, "y":5.25}, {"label":"Ctrl", "x":1.25, "y":5.25, "w":1.5}, {"label":"Win", "x":2.75, "y":5.25}, {"label":"Alt", "x":3.75, "y":5.25, "w":1.5}, {"x":5.25, "y":5.25, "w":6}, {"label":"Alt", "x":11.25, "y":5.25, "w":1.5}, {"label":"Win", "x":12.75, "y":5.25}, {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.5}, {"label":"Left", "x":15.5, "y":5.5}, {"label":"Down", "x":16.5, "y":5.5}, {"label":"Right", "x":17.5, "y":5.5}] + {"label":"Mute", "x":0, "y":0}, + {"label":"Esc", "x":1.25, "y":0}, + {"label":"F1", "x":2.5, "y":0}, + {"label":"F2", "x":3.5, "y":0}, + {"label":"F3", "x":4.5, "y":0}, + {"label":"F4", "x":5.5, "y":0}, + {"label":"F5", "x":7, "y":0}, + {"label":"F6", "x":8, "y":0}, + {"label":"F7", "x":9, "y":0}, + {"label":"F8", "x":10, "y":0}, + {"label":"F9", "x":11.5, "y":0}, + {"label":"F10", "x":12.5, "y":0}, + {"label":"F11", "x":13.5, "y":0}, + {"label":"F12", "x":14.5, "y":0}, + {"label":"PrtSc", "x":15.75, "y":0}, + {"label":"Scroll Lock", "x":16.75, "y":0}, + {"label":"Pause", "x":17.75, "y":0}, + + {"label":"F13", "x":0, "y":1.25}, + {"label":"~", "x":1.25, "y":1.25}, + {"label":"!", "x":2.25, "y":1.25}, + {"label":"@", "x":3.25, "y":1.25}, + {"label":"#", "x":4.25, "y":1.25}, + {"label":"$", "x":5.25, "y":1.25}, + {"label":"%", "x":6.25, "y":1.25}, + {"label":"^", "x":7.25, "y":1.25}, + {"label":"&", "x":8.25, "y":1.25}, + {"label":"*", "x":9.25, "y":1.25}, + {"label":"(", "x":10.25, "y":1.25}, + {"label":")", "x":11.25, "y":1.25}, + {"label":"_", "x":12.25, "y":1.25}, + {"label":"+", "x":13.25, "y":1.25}, + {"x":14.25, "y":1.25}, + {"label":"Backspace", "x":15.25, "y":1.25}, + {"label":"Home", "x":16.75, "y":1.25}, + {"label":"PgUp", "x":17.75, "y":1.25}, + + {"label":"F14", "x":0, "y":2.25}, + {"label":"Tab", "x":1.25, "y":2.25, "w":1.5}, + {"label":"Q", "x":2.75, "y":2.25}, + {"label":"W", "x":3.75, "y":2.25}, + {"label":"E", "x":4.75, "y":2.25}, + {"label":"R", "x":5.75, "y":2.25}, + {"label":"T", "x":6.75, "y":2.25}, + {"label":"Y", "x":7.75, "y":2.25}, + {"label":"U", "x":8.75, "y":2.25}, + {"label":"I", "x":9.75, "y":2.25}, + {"label":"O", "x":10.75, "y":2.25}, + {"label":"P", "x":11.75, "y":2.25}, + {"label":"{", "x":12.75, "y":2.25}, + {"label":"}", "x":13.75, "y":2.25}, + {"label":"|", "x":14.75, "y":2.25, "w":1.5}, + {"label":"End", "x":16.75, "y":2.25}, + {"label":"PgDn", "x":17.75, "y":2.25}, + + {"label":"F15", "x":0, "y":3.25}, + {"label":"Caps Lock", "x":1.25, "y":3.25, "w":1.75}, + {"label":"A", "x":3, "y":3.25}, + {"label":"S", "x":4, "y":3.25}, + {"label":"D", "x":5, "y":3.25}, + {"label":"F", "x":6, "y":3.25}, + {"label":"G", "x":7, "y":3.25}, + {"label":"H", "x":8, "y":3.25}, + {"label":"J", "x":9, "y":3.25}, + {"label":"K", "x":10, "y":3.25}, + {"label":"L", "x":11, "y":3.25}, + {"label":":", "x":12, "y":3.25}, + {"label":"\"", "x":13, "y":3.25}, + {"label":"Enter", "x":14, "y":3.25, "w":2.25}, + {"label":"Delete", "x":16.75, "y":3.25}, + {"label":"Insert", "x":17.75, "y":3.25}, + + {"label":"F16", "x":0, "y":4.25}, + {"label":"Shift", "x":1.25, "y":4.25, "w":2.25}, + {"label":"Z", "x":3.5, "y":4.25}, + {"label":"X", "x":4.5, "y":4.25}, + {"label":"C", "x":5.5, "y":4.25}, + {"label":"V", "x":6.5, "y":4.25}, + {"label":"B", "x":7.5, "y":4.25}, + {"label":"N", "x":8.5, "y":4.25}, + {"label":"M", "x":9.5, "y":4.25}, + {"label":"<", "x":10.5, "y":4.25}, + {"label":">", "x":11.5, "y":4.25}, + {"label":"?", "x":12.5, "y":4.25}, + {"label":"Shift", "x":13.5, "y":4.25, "w":1.75}, + {"label":"Fn", "x":15.25, "y":4.25}, + {"label":"Up", "x":16.5, "y":4.5}, + {"label":"Enter", "x":17.75, "y":4.25}, + + {"label":"F17", "x":0, "y":5.25}, + {"label":"Ctrl", "x":1.25, "y":5.25, "w":1.5}, + {"label":"Win", "x":2.75, "y":5.25}, + {"label":"Alt", "x":3.75, "y":5.25, "w":1.5}, + {"x":5.25, "y":5.25, "w":6}, + {"label":"Alt", "x":11.25, "y":5.25, "w":1.5}, + {"label":"Win", "x":12.75, "y":5.25}, + {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.5}, + {"label":"Left", "x":15.5, "y":5.5}, + {"label":"Down", "x":16.5, "y":5.5}, + {"label":"Right", "x":17.5, "y":5.5} + ] }, "LAYOUT_b_iso": { "layout": [ - {"label":"Mute", "x":0, "y":0}, {"label":"Esc", "x":1.25, "y":0}, {"label":"F1", "x":2.5, "y":0}, {"label":"F2", "x":3.5, "y":0}, {"label":"F3", "x":4.5, "y":0}, {"label":"F4", "x":5.5, "y":0}, {"label":"F5", "x":7, "y":0}, {"label":"F6", "x":8, "y":0}, {"label":"F7", "x":9, "y":0}, {"label":"F8", "x":10, "y":0}, {"label":"F9", "x":11.5, "y":0}, {"label":"F10", "x":12.5, "y":0}, {"label":"F11", "x":13.5, "y":0}, {"label":"F12", "x":14.5, "y":0}, {"label":"PrtSc", "x":15.75, "y":0}, {"label":"Scroll Lock", "x":16.75, "y":0}, {"label":"Pause", "x":17.75, "y":0}, - {"label":"F13", "x":0, "y":1.25}, {"label":"~", "x":1.25, "y":1.25}, {"label":"!", "x":2.25, "y":1.25}, {"label":"@", "x":3.25, "y":1.25}, {"label":"#", "x":4.25, "y":1.25}, {"label":"$", "x":5.25, "y":1.25}, {"label":"%", "x":6.25, "y":1.25}, {"label":"^", "x":7.25, "y":1.25}, {"label":"&", "x":8.25, "y":1.25}, {"label":"*", "x":9.25, "y":1.25}, {"label":"(", "x":10.25, "y":1.25}, {"label":")", "x":11.25, "y":1.25}, {"label":"_", "x":12.25, "y":1.25}, {"label":"+", "x":13.25, "y":1.25}, {"x":14.25, "y":1.25}, {"label":"Backspace", "x":15.25, "y":1.25}, {"label":"Home", "x":16.75, "y":1.25}, {"label":"PgUp", "x":17.75, "y":1.25}, - {"label":"F14", "x":0, "y":2.25}, {"label":"Tab", "x":1.25, "y":2.25, "w":1.5}, {"label":"Q", "x":2.75, "y":2.25}, {"label":"W", "x":3.75, "y":2.25}, {"label":"E", "x":4.75, "y":2.25}, {"label":"R", "x":5.75, "y":2.25}, {"label":"T", "x":6.75, "y":2.25}, {"label":"Y", "x":7.75, "y":2.25}, {"label":"U", "x":8.75, "y":2.25}, {"label":"I", "x":9.75, "y":2.25}, {"label":"O", "x":10.75, "y":2.25}, {"label":"P", "x":11.75, "y":2.25}, {"label":"{", "x":12.75, "y":2.25}, {"label":"}", "x":13.75, "y":2.25}, {"label":"Enter", "x":15, "y":2.25, "w":1.25, "h":2}, {"label":"End", "x":16.75, "y":2.25}, {"label":"PgDn", "x":17.75, "y":2.25}, - {"label":"F15", "x":0, "y":3.25}, {"label":"Caps Lock", "x":1.25, "y":3.25, "w":1.75}, {"label":"A", "x":3, "y":3.25}, {"label":"S", "x":4, "y":3.25}, {"label":"D", "x":5, "y":3.25}, {"label":"F", "x":6, "y":3.25}, {"label":"G", "x":7, "y":3.25}, {"label":"H", "x":8, "y":3.25}, {"label":"J", "x":9, "y":3.25}, {"label":"K", "x":10, "y":3.25}, {"label":"L", "x":11, "y":3.25}, {"label":":", "x":12, "y":3.25}, {"label":"\"", "x":13, "y":3.25}, {"x":14, "y":3.25}, {"label":"Delete", "x":16.75, "y":3.25}, {"label":"Insert", "x":17.75, "y":3.25}, - {"label":"F16", "x":0, "y":4.25}, {"label":"Shift", "x":1.25, "y":4.25, "w":1.25}, {"x":2.5, "y":4.25}, {"label":"Z", "x":3.5, "y":4.25}, {"label":"X", "x":4.5, "y":4.25}, {"label":"C", "x":5.5, "y":4.25}, {"label":"V", "x":6.5, "y":4.25}, {"label":"B", "x":7.5, "y":4.25}, {"label":"N", "x":8.5, "y":4.25}, {"label":"M", "x":9.5, "y":4.25}, {"label":"<", "x":10.5, "y":4.25}, {"label":">", "x":11.5, "y":4.25}, {"label":"?", "x":12.5, "y":4.25}, {"label":"Shift", "x":13.5, "y":4.25, "w":1.75}, {"label":"Fn", "x":15.25, "y":4.25}, {"label":"Up", "x":16.5, "y":4.5}, {"label":"Enter", "x":17.75, "y":4.25}, - {"label":"F17", "x":0, "y":5.25}, {"label":"Ctrl", "x":1.25, "y":5.25, "w":1.5}, {"label":"Win", "x":2.75, "y":5.25}, {"label":"Alt", "x":3.75, "y":5.25, "w":1.5}, {"x":5.25, "y":5.25, "w":6}, {"label":"Alt", "x":11.25, "y":5.25, "w":1.5}, {"label":"Win", "x":12.75, "y":5.25}, {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.5}, {"label":"Left", "x":15.5, "y":5.5}, {"label":"Down", "x":16.5, "y":5.5}, {"label":"Right", "x":17.5, "y":5.5}] + {"label":"Mute", "x":0, "y":0}, + {"label":"Esc", "x":1.25, "y":0}, + {"label":"F1", "x":2.5, "y":0}, + {"label":"F2", "x":3.5, "y":0}, + {"label":"F3", "x":4.5, "y":0}, + {"label":"F4", "x":5.5, "y":0}, + {"label":"F5", "x":7, "y":0}, + {"label":"F6", "x":8, "y":0}, + {"label":"F7", "x":9, "y":0}, + {"label":"F8", "x":10, "y":0}, + {"label":"F9", "x":11.5, "y":0}, + {"label":"F10", "x":12.5, "y":0}, + {"label":"F11", "x":13.5, "y":0}, + {"label":"F12", "x":14.5, "y":0}, + {"label":"PrtSc", "x":15.75, "y":0}, + {"label":"Scroll Lock", "x":16.75, "y":0}, + {"label":"Pause", "x":17.75, "y":0}, + + {"label":"F13", "x":0, "y":1.25}, + {"label":"~", "x":1.25, "y":1.25}, + {"label":"!", "x":2.25, "y":1.25}, + {"label":"@", "x":3.25, "y":1.25}, + {"label":"#", "x":4.25, "y":1.25}, + {"label":"$", "x":5.25, "y":1.25}, + {"label":"%", "x":6.25, "y":1.25}, + {"label":"^", "x":7.25, "y":1.25}, + {"label":"&", "x":8.25, "y":1.25}, + {"label":"*", "x":9.25, "y":1.25}, + {"label":"(", "x":10.25, "y":1.25}, + {"label":")", "x":11.25, "y":1.25}, + {"label":"_", "x":12.25, "y":1.25}, + {"label":"+", "x":13.25, "y":1.25}, + {"x":14.25, "y":1.25}, + {"label":"Backspace", "x":15.25, "y":1.25}, + {"label":"Home", "x":16.75, "y":1.25}, + {"label":"PgUp", "x":17.75, "y":1.25}, + + {"label":"F14", "x":0, "y":2.25}, + {"label":"Tab", "x":1.25, "y":2.25, "w":1.5}, + {"label":"Q", "x":2.75, "y":2.25}, + {"label":"W", "x":3.75, "y":2.25}, + {"label":"E", "x":4.75, "y":2.25}, + {"label":"R", "x":5.75, "y":2.25}, + {"label":"T", "x":6.75, "y":2.25}, + {"label":"Y", "x":7.75, "y":2.25}, + {"label":"U", "x":8.75, "y":2.25}, + {"label":"I", "x":9.75, "y":2.25}, + {"label":"O", "x":10.75, "y":2.25}, + {"label":"P", "x":11.75, "y":2.25}, + {"label":"{", "x":12.75, "y":2.25}, + {"label":"}", "x":13.75, "y":2.25}, + {"label":"End", "x":16.75, "y":2.25}, + {"label":"PgDn", "x":17.75, "y":2.25}, + + {"label":"F15", "x":0, "y":3.25}, + {"label":"Caps Lock", "x":1.25, "y":3.25, "w":1.75}, + {"label":"A", "x":3, "y":3.25}, + {"label":"S", "x":4, "y":3.25}, + {"label":"D", "x":5, "y":3.25}, + {"label":"F", "x":6, "y":3.25}, + {"label":"G", "x":7, "y":3.25}, + {"label":"H", "x":8, "y":3.25}, + {"label":"J", "x":9, "y":3.25}, + {"label":"K", "x":10, "y":3.25}, + {"label":"L", "x":11, "y":3.25}, + {"label":":", "x":12, "y":3.25}, + {"label":"\"", "x":13, "y":3.25}, + {"x":14, "y":3.25}, + {"label":"Enter", "x":15, "y":2.25, "w":1.25, "h":2}, + {"label":"Delete", "x":16.75, "y":3.25}, + {"label":"Insert", "x":17.75, "y":3.25}, + + {"label":"F16", "x":0, "y":4.25}, + {"label":"Shift", "x":1.25, "y":4.25, "w":1.25}, + {"x":2.5, "y":4.25}, + {"label":"Z", "x":3.5, "y":4.25}, + {"label":"X", "x":4.5, "y":4.25}, + {"label":"C", "x":5.5, "y":4.25}, + {"label":"V", "x":6.5, "y":4.25}, + {"label":"B", "x":7.5, "y":4.25}, + {"label":"N", "x":8.5, "y":4.25}, + {"label":"M", "x":9.5, "y":4.25}, + {"label":"<", "x":10.5, "y":4.25}, + {"label":">", "x":11.5, "y":4.25}, + {"label":"?", "x":12.5, "y":4.25}, + {"label":"Shift", "x":13.5, "y":4.25, "w":1.75}, + {"label":"Fn", "x":15.25, "y":4.25}, + {"label":"Up", "x":16.5, "y":4.5}, + {"label":"Enter", "x":17.75, "y":4.25}, + + {"label":"F17", "x":0, "y":5.25}, + {"label":"Ctrl", "x":1.25, "y":5.25, "w":1.5}, + {"label":"Win", "x":2.75, "y":5.25}, + {"label":"Alt", "x":3.75, "y":5.25, "w":1.5}, + {"x":5.25, "y":5.25, "w":6}, + {"label":"Alt", "x":11.25, "y":5.25, "w":1.5}, + {"label":"Win", "x":12.75, "y":5.25}, + {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.5}, + {"label":"Left", "x":15.5, "y":5.5}, + {"label":"Down", "x":16.5, "y":5.5}, + {"label":"Right", "x":17.5, "y":5.5} + ] }, "LAYOUT_a_ansi": { "layout": [ - {"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.25, "y":0}, {"label":"F2", "x":2.25, "y":0}, {"label":"F3", "x":3.25, "y":0}, {"label":"F4", "x":4.25, "y":0}, {"label":"F5", "x":5.75, "y":0}, {"label":"F6", "x":6.75, "y":0}, {"label":"F7", "x":7.75, "y":0}, {"label":"F8", "x":8.75, "y":0}, {"label":"F9", "x":10.25, "y":0}, {"label":"F10", "x":11.25, "y":0}, {"label":"F11", "x":12.25, "y":0}, {"label":"F12", "x":13.25, "y":0}, {"label":"PrtSc", "x":14.5, "y":0}, {"label":"Insert", "x":15.75, "y":0}, {"label":"Home", "x":16.75, "y":0}, {"label":"PgUp", "x":17.75, "y":0}, - {"label":"F13", "x":0, "y":1.25}, {"label":"~", "x":1.25, "y":1.25}, {"label":"!", "x":2.25, "y":1.25}, {"label":"@", "x":3.25, "y":1.25}, {"label":"#", "x":4.25, "y":1.25}, {"label":"$", "x":5.25, "y":1.25}, {"label":"%", "x":6.25, "y":1.25}, {"label":"^", "x":7.25, "y":1.25}, {"label":"&", "x":8.25, "y":1.25}, {"label":"*", "x":9.25, "y":1.25}, {"label":"(", "x":10.25, "y":1.25}, {"label":")", "x":11.25, "y":1.25}, {"label":"_", "x":12.25, "y":1.25}, {"label":"+", "x":13.25, "y":1.25}, {"x":14.25, "y":1.25}, {"label":"Backspace", "x":15.25, "y":1.25}, {"label":"End", "x":16.75, "y":1}, {"label":"PgDn", "x":17.75, "y":1}, - {"label":"F14", "x":0, "y":2.25}, {"label":"Tab", "x":1.25, "y":2.25, "w":1.5}, {"label":"Q", "x":2.75, "y":2.25}, {"label":"W", "x":3.75, "y":2.25}, {"label":"E", "x":4.75, "y":2.25}, {"label":"R", "x":5.75, "y":2.25}, {"label":"T", "x":6.75, "y":2.25}, {"label":"Y", "x":7.75, "y":2.25}, {"label":"U", "x":8.75, "y":2.25}, {"label":"I", "x":9.75, "y":2.25}, {"label":"O", "x":10.75, "y":2.25}, {"label":"P", "x":11.75, "y":2.25}, {"label":"{", "x":12.75, "y":2.25}, {"label":"}", "x":13.75, "y":2.25}, {"label":"|", "x":14.75, "y":2.25, "w":1.5}, {"label":"Insert", "x":16.5, "y":2.25}, {"label":"Mute", "x":17.75, "y":2.625}, - {"label":"F15", "x":0, "y":3.25}, {"label":"Caps Lock", "x":1.25, "y":3.25, "w":1.75}, {"label":"A", "x":3, "y":3.25}, {"label":"S", "x":4, "y":3.25}, {"label":"D", "x":5, "y":3.25}, {"label":"F", "x":6, "y":3.25}, {"label":"G", "x":7, "y":3.25}, {"label":"H", "x":8, "y":3.25}, {"label":"J", "x":9, "y":3.25}, {"label":"K", "x":10, "y":3.25}, {"label":"L", "x":11, "y":3.25}, {"label":":", "x":12, "y":3.25}, {"label":"\"", "x":13, "y":3.25}, {"label":"Enter", "x":14, "y":3.25, "w":2.25}, {"label":"Delete", "x":16.5, "y":3.25}, - {"label":"F16", "x":0, "y":4.25}, {"label":"Shift", "x":1.25, "y":4.25, "w":2.25}, {"label":"Z", "x":3.5, "y":4.25}, {"label":"X", "x":4.5, "y":4.25}, {"label":"C", "x":5.5, "y":4.25}, {"label":"V", "x":6.5, "y":4.25}, {"label":"B", "x":7.5, "y":4.25}, {"label":"N", "x":8.5, "y":4.25}, {"label":"M", "x":9.5, "y":4.25}, {"label":"<", "x":10.5, "y":4.25}, {"label":">", "x":11.5, "y":4.25}, {"label":"?", "x":12.5, "y":4.25}, {"label":"Shift", "x":13.5, "y":4.25, "w":1.75}, {"label":"Up", "x":15.5, "y":4.5}, {"label":"Enter", "x":17.75, "y":4.25}, - {"label":"F17", "x":0, "y":5.25}, {"label":"Ctrl", "x":1.25, "y":5.25, "w":1.25}, {"label":"Win", "x":2.5, "y":5.25, "w":1.25}, {"label":"Alt", "x":3.75, "y":5.25, "w":1.25}, {"x":5, "y":5.25, "w":6.25}, {"label":"Alt", "x":11.25, "y":5.25, "w":1.5}, {"label":"Ctrl", "x":12.75, "y":5.25, "w":1.5}, {"label":"Left", "x":14.5, "y":5.5}, {"label":"Down", "x":15.5, "y":5.5}, {"label":"Right", "x":16.5, "y":5.5}, {"label":"Enter", "x":17.75, "y":5.25}] + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":1.25, "y":0}, + {"label":"F2", "x":2.25, "y":0}, + {"label":"F3", "x":3.25, "y":0}, + {"label":"F4", "x":4.25, "y":0}, + {"label":"F5", "x":5.75, "y":0}, + {"label":"F6", "x":6.75, "y":0}, + {"label":"F7", "x":7.75, "y":0}, + {"label":"F8", "x":8.75, "y":0}, + {"label":"F9", "x":10.25, "y":0}, + {"label":"F10", "x":11.25, "y":0}, + {"label":"F11", "x":12.25, "y":0}, + {"label":"F12", "x":13.25, "y":0}, + {"label":"PrtSc", "x":14.5, "y":0}, + {"label":"Insert", "x":15.75, "y":0}, + {"label":"Home", "x":16.75, "y":0}, + {"label":"PgUp", "x":17.75, "y":0}, + + {"label":"F13", "x":0, "y":1.25}, + {"label":"~", "x":1.25, "y":1.25}, + {"label":"!", "x":2.25, "y":1.25}, + {"label":"@", "x":3.25, "y":1.25}, + {"label":"#", "x":4.25, "y":1.25}, + {"label":"$", "x":5.25, "y":1.25}, + {"label":"%", "x":6.25, "y":1.25}, + {"label":"^", "x":7.25, "y":1.25}, + {"label":"&", "x":8.25, "y":1.25}, + {"label":"*", "x":9.25, "y":1.25}, + {"label":"(", "x":10.25, "y":1.25}, + {"label":")", "x":11.25, "y":1.25}, + {"label":"_", "x":12.25, "y":1.25}, + {"label":"+", "x":13.25, "y":1.25}, + {"x":14.25, "y":1.25}, + {"label":"Backspace", "x":15.25, "y":1.25}, + {"label":"End", "x":16.75, "y":1}, + {"label":"PgDn", "x":17.75, "y":1}, + + {"label":"F14", "x":0, "y":2.25}, + {"label":"Tab", "x":1.25, "y":2.25, "w":1.5}, + {"label":"Q", "x":2.75, "y":2.25}, + {"label":"W", "x":3.75, "y":2.25}, + {"label":"E", "x":4.75, "y":2.25}, + {"label":"R", "x":5.75, "y":2.25}, + {"label":"T", "x":6.75, "y":2.25}, + {"label":"Y", "x":7.75, "y":2.25}, + {"label":"U", "x":8.75, "y":2.25}, + {"label":"I", "x":9.75, "y":2.25}, + {"label":"O", "x":10.75, "y":2.25}, + {"label":"P", "x":11.75, "y":2.25}, + {"label":"{", "x":12.75, "y":2.25}, + {"label":"}", "x":13.75, "y":2.25}, + {"label":"|", "x":14.75, "y":2.25, "w":1.5}, + {"label":"Insert", "x":16.5, "y":2.25}, + {"label":"Mute", "x":17.75, "y":2.625}, + + {"label":"F15", "x":0, "y":3.25}, + {"label":"Caps Lock", "x":1.25, "y":3.25, "w":1.75}, + {"label":"A", "x":3, "y":3.25}, + {"label":"S", "x":4, "y":3.25}, + {"label":"D", "x":5, "y":3.25}, + {"label":"F", "x":6, "y":3.25}, + {"label":"G", "x":7, "y":3.25}, + {"label":"H", "x":8, "y":3.25}, + {"label":"J", "x":9, "y":3.25}, + {"label":"K", "x":10, "y":3.25}, + {"label":"L", "x":11, "y":3.25}, + {"label":":", "x":12, "y":3.25}, + {"label":"\"", "x":13, "y":3.25}, + {"label":"Enter", "x":14, "y":3.25, "w":2.25}, + {"label":"Delete", "x":16.5, "y":3.25}, + + {"label":"F16", "x":0, "y":4.25}, + {"label":"Shift", "x":1.25, "y":4.25, "w":2.25}, + {"label":"Z", "x":3.5, "y":4.25}, + {"label":"X", "x":4.5, "y":4.25}, + {"label":"C", "x":5.5, "y":4.25}, + {"label":"V", "x":6.5, "y":4.25}, + {"label":"B", "x":7.5, "y":4.25}, + {"label":"N", "x":8.5, "y":4.25}, + {"label":"M", "x":9.5, "y":4.25}, + {"label":"<", "x":10.5, "y":4.25}, + {"label":">", "x":11.5, "y":4.25}, + {"label":"?", "x":12.5, "y":4.25}, + {"label":"Shift", "x":13.5, "y":4.25, "w":1.75}, + {"label":"Up", "x":15.5, "y":4.5}, + {"label":"Enter", "x":17.75, "y":4.25}, + + {"label":"F17", "x":0, "y":5.25}, + {"label":"Ctrl", "x":1.25, "y":5.25, "w":1.25}, + {"label":"Win", "x":2.5, "y":5.25, "w":1.25}, + {"label":"Alt", "x":3.75, "y":5.25, "w":1.25}, + {"x":5, "y":5.25, "w":6.25}, + {"label":"Alt", "x":11.25, "y":5.25, "w":1.5}, + {"label":"Ctrl", "x":12.75, "y":5.25, "w":1.5}, + {"label":"Left", "x":14.5, "y":5.5}, + {"label":"Down", "x":15.5, "y":5.5}, + {"label":"Right", "x":16.5, "y":5.5}, + {"label":"Enter", "x":17.75, "y":5.25} + ] }, "LAYOUT_a_iso": { "layout": [ - {"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.25, "y":0}, {"label":"F2", "x":2.25, "y":0}, {"label":"F3", "x":3.25, "y":0}, {"label":"F4", "x":4.25, "y":0}, {"label":"F5", "x":5.75, "y":0}, {"label":"F6", "x":6.75, "y":0}, {"label":"F7", "x":7.75, "y":0}, {"label":"F8", "x":8.75, "y":0}, {"label":"F9", "x":10.25, "y":0}, {"label":"F10", "x":11.25, "y":0}, {"label":"F11", "x":12.25, "y":0}, {"label":"F12", "x":13.25, "y":0}, {"label":"PrtSc", "x":14.5, "y":0}, {"label":"Insert", "x":15.75, "y":0}, {"label":"Home", "x":16.75, "y":0}, {"label":"PgUp", "x":17.75, "y":0}, - {"label":"F13", "x":0, "y":1.25}, {"label":"~", "x":1.25, "y":1.25}, {"label":"!", "x":2.25, "y":1.25}, {"label":"@", "x":3.25, "y":1.25}, {"label":"#", "x":4.25, "y":1.25}, {"label":"$", "x":5.25, "y":1.25}, {"label":"%", "x":6.25, "y":1.25}, {"label":"^", "x":7.25, "y":1.25}, {"label":"&", "x":8.25, "y":1.25}, {"label":"*", "x":9.25, "y":1.25}, {"label":"(", "x":10.25, "y":1.25}, {"label":")", "x":11.25, "y":1.25}, {"label":"_", "x":12.25, "y":1.25}, {"label":"+", "x":13.25, "y":1.25}, {"x":14.25, "y":1.25}, {"label":"Backspace", "x":15.25, "y":1.25}, {"label":"End", "x":16.75, "y":1}, {"label":"PgDn", "x":17.75, "y":1}, - {"label":"F14", "x":0, "y":2.25}, {"label":"Tab", "x":1.25, "y":2.25, "w":1.5}, {"label":"Q", "x":2.75, "y":2.25}, {"label":"W", "x":3.75, "y":2.25}, {"label":"E", "x":4.75, "y":2.25}, {"label":"R", "x":5.75, "y":2.25}, {"label":"T", "x":6.75, "y":2.25}, {"label":"Y", "x":7.75, "y":2.25}, {"label":"U", "x":8.75, "y":2.25}, {"label":"I", "x":9.75, "y":2.25}, {"label":"O", "x":10.75, "y":2.25}, {"label":"P", "x":11.75, "y":2.25}, {"label":"{", "x":12.75, "y":2.25}, {"label":"}", "x":13.75, "y":2.25}, {"label":"Enter", "x":15, "y":2.25, "w":1.25, "h":2}, {"label":"Insert", "x":16.5, "y":2.25}, {"label":"Mute", "x":17.75, "y":2.625}, - {"label":"F15", "x":0, "y":3.25}, {"label":"Caps Lock", "x":1.25, "y":3.25, "w":1.75}, {"label":"A", "x":3, "y":3.25}, {"label":"S", "x":4, "y":3.25}, {"label":"D", "x":5, "y":3.25}, {"label":"F", "x":6, "y":3.25}, {"label":"G", "x":7, "y":3.25}, {"label":"H", "x":8, "y":3.25}, {"label":"J", "x":9, "y":3.25}, {"label":"K", "x":10, "y":3.25}, {"label":"L", "x":11, "y":3.25}, {"label":":", "x":12, "y":3.25}, {"label":"\"", "x":13, "y":3.25}, {"x":14, "y":3.25}, {"label":"Delete", "x":16.5, "y":3.25}, - {"label":"F16", "x":0, "y":4.25}, {"label":"Shift", "x":1.25, "y":4.25, "w":1.25}, {"x":2.5, "y":4.25}, {"label":"Z", "x":3.5, "y":4.25}, {"label":"X", "x":4.5, "y":4.25}, {"label":"C", "x":5.5, "y":4.25}, {"label":"V", "x":6.5, "y":4.25}, {"label":"B", "x":7.5, "y":4.25}, {"label":"N", "x":8.5, "y":4.25}, {"label":"M", "x":9.5, "y":4.25}, {"label":"<", "x":10.5, "y":4.25}, {"label":">", "x":11.5, "y":4.25}, {"label":"?", "x":12.5, "y":4.25}, {"label":"Shift", "x":13.5, "y":4.25, "w":1.75}, {"label":"Up", "x":15.5, "y":4.5}, {"label":"Enter", "x":17.75, "y":4.25}, - {"label":"F17", "x":0, "y":5.25}, {"label":"Ctrl", "x":1.25, "y":5.25, "w":1.25}, {"label":"Win", "x":2.5, "y":5.25, "w":1.25}, {"label":"Alt", "x":3.75, "y":5.25, "w":1.25}, {"x":5, "y":5.25, "w":6.25}, {"label":"Alt", "x":11.25, "y":5.25, "w":1.5}, {"label":"Ctrl", "x":12.75, "y":5.25, "w":1.5}, {"label":"Left", "x":14.5, "y":5.5}, {"label":"Down", "x":15.5, "y":5.5}, {"label":"Right", "x":16.5, "y":5.5}, {"label":"Enter", "x":17.75, "y":5.25}] + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":1.25, "y":0}, + {"label":"F2", "x":2.25, "y":0}, + {"label":"F3", "x":3.25, "y":0}, + {"label":"F4", "x":4.25, "y":0}, + {"label":"F5", "x":5.75, "y":0}, + {"label":"F6", "x":6.75, "y":0}, + {"label":"F7", "x":7.75, "y":0}, + {"label":"F8", "x":8.75, "y":0}, + {"label":"F9", "x":10.25, "y":0}, + {"label":"F10", "x":11.25, "y":0}, + {"label":"F11", "x":12.25, "y":0}, + {"label":"F12", "x":13.25, "y":0}, + {"label":"PrtSc", "x":14.5, "y":0}, + {"label":"Insert", "x":15.75, "y":0}, + {"label":"Home", "x":16.75, "y":0}, + {"label":"PgUp", "x":17.75, "y":0}, + + {"label":"F13", "x":0, "y":1.25}, + {"label":"~", "x":1.25, "y":1.25}, + {"label":"!", "x":2.25, "y":1.25}, + {"label":"@", "x":3.25, "y":1.25}, + {"label":"#", "x":4.25, "y":1.25}, + {"label":"$", "x":5.25, "y":1.25}, + {"label":"%", "x":6.25, "y":1.25}, + {"label":"^", "x":7.25, "y":1.25}, + {"label":"&", "x":8.25, "y":1.25}, + {"label":"*", "x":9.25, "y":1.25}, + {"label":"(", "x":10.25, "y":1.25}, + {"label":")", "x":11.25, "y":1.25}, + {"label":"_", "x":12.25, "y":1.25}, + {"label":"+", "x":13.25, "y":1.25}, + {"x":14.25, "y":1.25}, + {"label":"Backspace", "x":15.25, "y":1.25}, + {"label":"End", "x":16.75, "y":1}, + {"label":"PgDn", "x":17.75, "y":1}, + + {"label":"F14", "x":0, "y":2.25}, + {"label":"Tab", "x":1.25, "y":2.25, "w":1.5}, + {"label":"Q", "x":2.75, "y":2.25}, + {"label":"W", "x":3.75, "y":2.25}, + {"label":"E", "x":4.75, "y":2.25}, + {"label":"R", "x":5.75, "y":2.25}, + {"label":"T", "x":6.75, "y":2.25}, + {"label":"Y", "x":7.75, "y":2.25}, + {"label":"U", "x":8.75, "y":2.25}, + {"label":"I", "x":9.75, "y":2.25}, + {"label":"O", "x":10.75, "y":2.25}, + {"label":"P", "x":11.75, "y":2.25}, + {"label":"{", "x":12.75, "y":2.25}, + {"label":"}", "x":13.75, "y":2.25}, + {"label":"Insert", "x":16.5, "y":2.25}, + {"label":"Mute", "x":17.75, "y":2.625}, + + {"label":"F15", "x":0, "y":3.25}, + {"label":"Caps Lock", "x":1.25, "y":3.25, "w":1.75}, + {"label":"A", "x":3, "y":3.25}, + {"label":"S", "x":4, "y":3.25}, + {"label":"D", "x":5, "y":3.25}, + {"label":"F", "x":6, "y":3.25}, + {"label":"G", "x":7, "y":3.25}, + {"label":"H", "x":8, "y":3.25}, + {"label":"J", "x":9, "y":3.25}, + {"label":"K", "x":10, "y":3.25}, + {"label":"L", "x":11, "y":3.25}, + {"label":":", "x":12, "y":3.25}, + {"label":"\"", "x":13, "y":3.25}, + {"x":14, "y":3.25}, + {"label":"Enter", "x":15, "y":2.25, "w":1.25, "h":2}, + {"label":"Delete", "x":16.5, "y":3.25}, + + {"label":"F16", "x":0, "y":4.25}, + {"label":"Shift", "x":1.25, "y":4.25, "w":1.25}, + {"x":2.5, "y":4.25}, + {"label":"Z", "x":3.5, "y":4.25}, + {"label":"X", "x":4.5, "y":4.25}, + {"label":"C", "x":5.5, "y":4.25}, + {"label":"V", "x":6.5, "y":4.25}, + {"label":"B", "x":7.5, "y":4.25}, + {"label":"N", "x":8.5, "y":4.25}, + {"label":"M", "x":9.5, "y":4.25}, + {"label":"<", "x":10.5, "y":4.25}, + {"label":">", "x":11.5, "y":4.25}, + {"label":"?", "x":12.5, "y":4.25}, + {"label":"Shift", "x":13.5, "y":4.25, "w":1.75}, + {"label":"Up", "x":15.5, "y":4.5}, + {"label":"Enter", "x":17.75, "y":4.25}, + + {"label":"F17", "x":0, "y":5.25}, + {"label":"Ctrl", "x":1.25, "y":5.25, "w":1.25}, + {"label":"Win", "x":2.5, "y":5.25, "w":1.25}, + {"label":"Alt", "x":3.75, "y":5.25, "w":1.25}, + {"x":5, "y":5.25, "w":6.25}, + {"label":"Alt", "x":11.25, "y":5.25, "w":1.5}, + {"label":"Ctrl", "x":12.75, "y":5.25, "w":1.5}, + {"label":"Left", "x":14.5, "y":5.5}, + {"label":"Down", "x":15.5, "y":5.5}, + {"label":"Right", "x":16.5, "y":5.5}, + {"label":"Enter", "x":17.75, "y":5.25} + ] } } -} \ No newline at end of file +} diff --git a/keyboards/metamechs/timberwolf/rules.mk b/keyboards/metamechs/timberwolf/rules.mk index d6da3177415e..fe7c03374682 100644 --- a/keyboards/metamechs/timberwolf/rules.mk +++ b/keyboards/metamechs/timberwolf/rules.mk @@ -2,30 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes # Enable encoder support LTO_ENABLE = yes diff --git a/keyboards/mexsistor/ludmila/info.json b/keyboards/mexsistor/ludmila/info.json index c134428f4b7c..7df5d576701a 100644 --- a/keyboards/mexsistor/ludmila/info.json +++ b/keyboards/mexsistor/ludmila/info.json @@ -2,8 +2,6 @@ "keyboard_name": "ludmila", "url": "", "maintainer": "Kevin M.", - "width": 4, - "height": 2, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/mexsistor/ludmila/rules.mk b/keyboards/mexsistor/ludmila/rules.mk index 6066750612f7..5ee3b15820f8 100644 --- a/keyboards/mexsistor/ludmila/rules.mk +++ b/keyboards/mexsistor/ludmila/rules.mk @@ -9,17 +9,14 @@ BOOTLOADER = atmel-dfu # CUSTOM_MATRIX = lite SRC = matrix.c -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = yes diff --git a/keyboards/miller/gm862/config.h b/keyboards/miller/gm862/config.h index 2b084efc2588..09429b4d198a 100644 --- a/keyboards/miller/gm862/config.h +++ b/keyboards/miller/gm862/config.h @@ -36,27 +36,59 @@ #define DEBOUNCE 3 #ifdef RGB_MATRIX_ENABLE # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended # define RGB_MATRIX_KEYPRESSES # define RGB_MATRIX_FRAMEBUFFER_EFFECTS -# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -# define DISABLE_RGB_MATRIX_BAND_SAT -# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -# define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -# define DISABLE_RGB_MATRIX_SPLASH -# define DISABLE_RGB_MATRIX_MULTISPLASH -# define DISABLE_RGB_MATRIX_SOLID_SPLASH -# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH -# define DISABLE_RGB_MATRIX_DIGITAL_RAIN +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +// # define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// # define ENABLE_RGB_MATRIX_SPLASH +// # define ENABLE_RGB_MATRIX_MULTISPLASH +// # define ENABLE_RGB_MATRIX_SOLID_SPLASH +// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + # define 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/miller/gm862/gm862.c b/keyboards/miller/gm862/gm862.c index 5af66dd398fe..5262957767dd 100644 --- a/keyboards/miller/gm862/gm862.c +++ b/keyboards/miller/gm862/gm862.c @@ -1,7 +1,7 @@ #include "gm862.h" #ifdef RGB_MATRIX_ENABLE -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { {0, B_1, A_1, C_1}, {0, B_2, A_2, C_2}, {0, B_3, A_3, C_3}, diff --git a/keyboards/miller/gm862/info.json b/keyboards/miller/gm862/info.json index 1eb136195917..5c784d1a1819 100644 --- a/keyboards/miller/gm862/info.json +++ b/keyboards/miller/gm862/info.json @@ -2,8 +2,6 @@ "keyboard_name": "GM862", "url": "", "maintainer": "MILLER", - "width": 14, - "height": 5, "layouts": { "LAYOUT_60_ansi": { "layout": [ diff --git a/keyboards/miller/gm862/rules.mk b/keyboards/miller/gm862/rules.mk index f35c9f40c9d6..bc119c682508 100644 --- a/keyboards/miller/gm862/rules.mk +++ b/keyboards/miller/gm862/rules.mk @@ -2,32 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output RGB_MATRIX_ENABLE = yes # Use RGB matrix RGB_MATRIX_DRIVER = IS31FL3733 NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in diff --git a/keyboards/millipad/info.json b/keyboards/millipad/info.json index 565ec713657d..a50f69aa6f95 100644 --- a/keyboards/millipad/info.json +++ b/keyboards/millipad/info.json @@ -2,8 +2,6 @@ "keyboard_name": "millipad", "url": "https://github.com/GLozares/millipad", "maintainer": "Jirou", - "width": 6, - "height": 2, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/millipad/rules.mk b/keyboards/millipad/rules.mk index 57daefea4eb8..9cd3baf58e9b 100644 --- a/keyboards/millipad/rules.mk +++ b/keyboards/millipad/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = yes \ No newline at end of file diff --git a/keyboards/mini_elixivy/config.h b/keyboards/mini_elixivy/config.h new file mode 100644 index 000000000000..e0853c025106 --- /dev/null +++ b/keyboards/mini_elixivy/config.h @@ -0,0 +1,108 @@ +/* +Copyright 2021 minibois + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x0000 +#define DEVICE_VER 0x0001 +#define MANUFACTURER minibois +#define PRODUCT mini_elixivy + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * 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 { B5, B6, E6, F6, C7 } +#define MATRIX_COL_PINS { F7, F5, F4, F1, F0, B7, D0, D1, D2, D3, D4, D6, D7, B4, C6 } +#define ENCODERS_PAD_A { B0 } +#define ENCODERS_PAD_B { D5 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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 + +/* 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). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 \ No newline at end of file diff --git a/keyboards/mini_elixivy/info.json b/keyboards/mini_elixivy/info.json new file mode 100644 index 000000000000..44143a3c1b6b --- /dev/null +++ b/keyboards/mini_elixivy/info.json @@ -0,0 +1,25 @@ +{ + "keyboard_name": "mini_elixivy", + "url": "https://github.com/minibois/elixivy", + "maintainer": "minibois", + "layouts": { + "LAYOUT_65_ansi": { + "layout":[ + {"label":"Esc", "x":0, "y":0},{"label":"1", "x":1, "y":0},{"label":"2", "x":2, "y":0},{"label":"3", "x":3, "y":0},{"label":"4", "x":4, "y":0},{"label":"5", "x":5, "y":0},{"label":"6", "x":6, "y":0},{"label":"7", "x":7, "y":0},{"label":"8", "x":8, "y":0},{"label":"9", "x":9, "y":0},{"label":"0", "x":10, "y":0},{"label":"Dash", "x":11, "y":0},{"label":"Equals", "x":12, "y":0},{"label":"Backspace", "x":13, "y":0, "w":2.00},{"label":"Mute", "x":15, "y":0}, + {"label":"Tab", "x":0, "y":1, "w":1.5},{"label":"Q", "x":1.5, "y":1},{"label":"W", "x":2.5, "y":1},{"label":"E", "x":3.5, "y":1},{"label":"R", "x":4.5, "y":1},{"label":"T", "x":5.5, "y":1},{"label":"Y", "x":6.5, "y":1},{"label":"U", "x":7.5, "y":1},{"label":"I", "x":8.5, "y":1},{"label":"O", "x":9.5, "y":1},{"label":"P", "x":10.5, "y":1},{"label":"[", "x":11.5, "y":1},{"label":"]", "x":12.5, "y":1},{"label":"BackSlash", "x":13.5, "y":1, "w":1.5},{"label":"PrintScr", "x":15, "y":1}, + {"label":"Caps", "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":"Del", "x":15, "y":2}, + {"label":"Shift", "x":0, "y":3, "w":2.25},{"label":"Z", "x":2.25, "y":3},{"label":"X", "x":3.25, "y":3},{"label":"C", "x":4.25, "y":3},{"label":"V", "x":5.25, "y":3},{"label":"B", "x":6.25, "y":3},{"label":"N", "x":7.25, "y":3},{"label":"M", "x":8.25, "y":3},{"label":",", "x":9.25, "y":3},{"label":".", "x":10.25, "y":3},{"label":"/", "x":11.25, "y":3},{"label":"Shift", "x":12.25, "y":3, "w":1.75},{"label":"Up", "x":14, "y":3},{"label":"`", "x":15, "y":3}, + {"label":"Ctrl", "x":0, "y":4, "w":1.25},{"label":"Win", "x":1.25, "y":4, "w":1.25},{"label":"Alt", "x":2.50, "y":4, "w":1.25},{"label":"", "x":3.75, "y":4, "w":6.25},{"label":"Alt", "x":10, "y":4},{"label":"Fn", "x":11, "y":4},{"label":"Ctrl", "x":12, "y":4},{"label":"Left", "x":13, "y":4},{"label":"Down", "x":14, "y":4},{"label":"Right", "x":15, "y":4} + ] + }, + "LAYOUT_65_iso": { + "layout":[ + {"label":"Esc", "x":0, "y":0},{"label":"1", "x":1, "y":0},{"label":"2", "x":2, "y":0},{"label":"3", "x":3, "y":0},{"label":"4", "x":4, "y":0},{"label":"5", "x":5, "y":0},{"label":"6", "x":6, "y":0},{"label":"7", "x":7, "y":0},{"label":"8", "x":8, "y":0},{"label":"9", "x":9, "y":0},{"label":"0", "x":10, "y":0},{"label":"Dash", "x":11, "y":0},{"label":"Equals", "x":12, "y":0},{"label":"Backspace", "x":13, "y":0, "w":2.00},{"label":"Mute", "x":15, "y":0}, + {"label":"Tab", "x":0, "y":1, "w":1.5},{"label":"Q", "x":1.5, "y":1},{"label":"W", "x":2.5, "y":1},{"label":"E", "x":3.5, "y":1},{"label":"R", "x":4.5, "y":1},{"label":"T", "x":5.5, "y":1},{"label":"Y", "x":6.5, "y":1},{"label":"U", "x":7.5, "y":1},{"label":"I", "x":8.5, "y":1},{"label":"O", "x":9.5, "y":1},{"label":"P", "x":10.5, "y":1},{"label":"[", "x":11.5, "y":1},{"label":"]", "x":12.5, "y":1},{"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2},{"label":"PrintScr", "x":15, "y":1}, + {"label":"Caps", "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":"BackSlash", "x":12.75, "y":2},{"label":"Del", "x":15, "y":2}, + {"label":"Shift", "x":0, "y":3, "w":1.25},{"label":"BackSlash", "x":1.25, "y":3},{"label":"Z", "x":2.25, "y":3},{"label":"X", "x":3.25, "y":3},{"label":"C", "x":4.25, "y":3},{"label":"V", "x":5.25, "y":3},{"label":"B", "x":6.25, "y":3},{"label":"N", "x":7.25, "y":3},{"label":"M", "x":8.25, "y":3},{"label":",", "x":9.25, "y":3},{"label":".", "x":10.25, "y":3},{"label":"/", "x":11.25, "y":3},{"label":"Shift", "x":12.25, "y":3, "w":1.75},{"label":"Up", "x":14, "y":3},{"label":"`", "x":15, "y":3}, + {"label":"Ctrl", "x":0, "y":4, "w":1.25},{"label":"Win", "x":1.25, "y":4, "w":1.25},{"label":"Alt", "x":2.50, "y":4, "w":1.25},{"label":"", "x":3.75, "y":4, "w":6.25},{"label":"Alt", "x":10, "y":4},{"label":"Fn", "x":11, "y":4},{"label":"Ctrl", "x":12, "y":4},{"label":"Left", "x":13, "y":4},{"label":"Down", "x":14, "y":4},{"label":"Right", "x":15, "y":4} + ] + } + } +} diff --git a/keyboards/mini_elixivy/keymaps/ansi/keymap.c b/keyboards/mini_elixivy/keymaps/ansi/keymap.c new file mode 100644 index 000000000000..84328ebc4b04 --- /dev/null +++ b/keyboards/mini_elixivy/keymaps/ansi/keymap.c @@ -0,0 +1,66 @@ +/* Copyright 2021 minibois + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BASE: (Base Layer) Default Layer + * ,----------------------------------------------------------------. + * |Esc | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |Mute| + * |----------------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ |Prts| + * |----------------------------------------------------------------| + * |CAPS | A| S| D| F| G| H| J| K| L| ;| '|Enter |Del | + * |----------------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up|‘ ~ | + * |----------------------------------------------------------------| + * |Ctrl|Win |Alt | Space |Alt|FN |Ctrl|Lef|Dow|Rig | + * `----------------------------------------------------------------' + */ + [_BASE] = LAYOUT_65_ansi( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE, + 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_PSCR, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_DEL, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_GRAVE, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* Keymap _FN: Function Layer + * ,----------------------------------------------------------------. + * | | F1|F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12| | | + * |----------------------------------------------------------------| + * | | | | | | | | | | | | | | |PgUp| + * |----------------------------------------------------------------| + * | | | | | | | | | | | | | |PgDn| + * |----------------------------------------------------------------| + * | | | | | | | | | | | | | |Ins | + * |----------------------------------------------------------------| + * | | | | | | | | | | | + * `----------------------------------------------------------------' + */ + [_FN] = LAYOUT_65_ansi( + _______, 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_PGUP, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGDN, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/mini_elixivy/keymaps/ansi/readme.md b/keyboards/mini_elixivy/keymaps/ansi/readme.md new file mode 100644 index 000000000000..021d2891b3d3 --- /dev/null +++ b/keyboards/mini_elixivy/keymaps/ansi/readme.md @@ -0,0 +1,2 @@ +# The ANSI keymap for mini_elixivy +This is an ANSI keymap, with three 1u modifiers between the spacebar/arrow keys and (optionally) a rotary encoder. \ No newline at end of file diff --git a/keyboards/mini_elixivy/keymaps/default/keymap.c b/keyboards/mini_elixivy/keymaps/default/keymap.c new file mode 100644 index 000000000000..680a57e4fa4a --- /dev/null +++ b/keyboards/mini_elixivy/keymaps/default/keymap.c @@ -0,0 +1,66 @@ +/* Copyright 2021 minibois + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BASE: (Base Layer) Default Layer + * ,----------------------------------------------------------------. + * |Esc | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |Mute| + * |----------------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ |Prts| + * |----------------------------------------------------------------| + * |CAPS | A| S| D| F| G| H| J| K| L| ;| '|Enter |Del | + * |----------------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up|‘ ~ | + * |----------------------------------------------------------------| + * |Ctrl|Win |Alt | Space |Alt|FN |Ctrl|Lef|Dow|Rig | + * `----------------------------------------------------------------' + */ + [_BASE] = LAYOUT_65_ansi( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE, + 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_PSCR, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_DEL, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_GRAVE, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* Keymap _FN: Function Layer + * ,----------------------------------------------------------------. + * | | F1|F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12| | | + * |----------------------------------------------------------------| + * | | | | | | | | | | | | | | | | + * |----------------------------------------------------------------| + * | | | | | | | | | | | | | | | + * |----------------------------------------------------------------| + * | | | | | | | | | | | | | | | + * |----------------------------------------------------------------| + * | | | | | | | | | | | + * `----------------------------------------------------------------' + */ + [_FN] = LAYOUT_65_ansi( + _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/mini_elixivy/keymaps/default/readme.md b/keyboards/mini_elixivy/keymaps/default/readme.md new file mode 100644 index 000000000000..717b2c30ae93 --- /dev/null +++ b/keyboards/mini_elixivy/keymaps/default/readme.md @@ -0,0 +1,2 @@ +# The default keymap for mini_elixivy +This is an ANSI keymap, with three 1u modifiers between the spacebar/arrow keys and (optionally) a rotary encoder. \ No newline at end of file diff --git a/keyboards/mini_elixivy/keymaps/iso/keymap.c b/keyboards/mini_elixivy/keymaps/iso/keymap.c new file mode 100644 index 000000000000..c595e6b0a585 --- /dev/null +++ b/keyboards/mini_elixivy/keymaps/iso/keymap.c @@ -0,0 +1,66 @@ +/* Copyright 2021 minibois + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BASE: (Base Layer) Default Layer + * ,----------------------------------------------------------------. + * |Esc | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |Mute| + * |----------------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| |Prts| + * |------------------------------------------------------Enter-----| + * |CAPS | A| S| D| F| G| H| J| K| L| ;| '| \| |Del | + * |----------------------------------------------------------------| + * |Shift| \| Z| X| C| V| B| N| M| ,| .| /|Shift | Up|‘ ~ | + * |----------------------------------------------------------------| + * |Ctrl|Win |Alt | Space |Alt|FN |Ctrl|Lef|Dow|Rig | + * `----------------------------------------------------------------' + */ + [_BASE] = LAYOUT_65_iso( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE, + 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_ENT, KC_PSCR, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_DEL, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_GRAVE, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* Keymap _FN: Function Layer + * ,----------------------------------------------------------------. + * | | F1|F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12| | | + * |----------------------------------------------------------------| + * | | | | | | | | | | | | | | |PgUp| + * |----------------------------------------------------------------| + * | | | | | | | | | | | | | |PgDn| + * |----------------------------------------------------------------| + * | | | | | | | | | | | | | |Ins | + * |----------------------------------------------------------------| + * | | | | | | | | | | | + * `----------------------------------------------------------------' + */ + [_FN] = LAYOUT_65_iso( + _______, 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_PGUP, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGDN, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/mini_elixivy/keymaps/iso/readme.md b/keyboards/mini_elixivy/keymaps/iso/readme.md new file mode 100644 index 000000000000..d67bd323284b --- /dev/null +++ b/keyboards/mini_elixivy/keymaps/iso/readme.md @@ -0,0 +1,2 @@ +# The ISO keymap for mini_elixivy +This is an ISO keymap, with three 1u modifiers between the spacebar/arrow keys and (optionally) a rotary encoder. \ No newline at end of file diff --git a/keyboards/mini_elixivy/mini_elixivy.c b/keyboards/mini_elixivy/mini_elixivy.c new file mode 100644 index 000000000000..a8d9c931c2e2 --- /dev/null +++ b/keyboards/mini_elixivy/mini_elixivy.c @@ -0,0 +1,28 @@ +/* Copyright 2021 minibois + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "mini_elixivy.h" + +/* Rotary Encoder's function (currently volume up/down) */ +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/mini_elixivy/mini_elixivy.h b/keyboards/mini_elixivy/mini_elixivy.h new file mode 100644 index 000000000000..154a1d74e9c6 --- /dev/null +++ b/keyboards/mini_elixivy/mini_elixivy.h @@ -0,0 +1,78 @@ +/* Copyright 2021 minibois + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +// Easier reading of layouts +#define ___ KC_NO + +/* ANSI + * ,-------------------------------------------------------------. + * |00 |01 |02 |03 |04 |05 |06 |07 |08 |09 |0a |0b |0c | 0d|0e | + * |-------------------------------------------------------------| + * |10 |11 |12 |13 |14 |15 |16 |17 |18 |19 |1a |1b |1c | 1d|1e | + * |-------------------------------------------------------------| + * |20 |21 |22 |23 |24 |25 |26 |27 |28 |29 |2a |2b |2c ||2e | + * |-------------------------------------------------------------| + * |30 ||32 |33 |34 |35 |36 |37 |38 |39 |3a |3b |3b |3c | + * |-------------------------------------------------------------| + * |40 |41 |42 | 46 |49 |4a |4b |4c |4d |4e | + * `-------------------------------------------------------------' +*/ +#define LAYOUT_65_ansi( \ + 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, 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, 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, ___, 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 } \ +} + +/* ISO + * ,-------------------------------------------------------------. + * |00 |01 |02 |03 |04 |05 |06 |07 |08 |09 |0a |0b |0c | 0d|0e | + * |-------------------------------------------------------------| + * |10 |11 |12 |13 |14 |15 |16 |17 |18 |19 |1a |1b |1c | |1e | + * |-----------------------------------------------------| 1d|---| + * |20 |21 |22 |23 |24 |25 |26 |27 |28 |29 |2a |2b |2c | |2e | + * |-------------------------------------------------------------| + * |30 |31 |32 |33 |34 |35 |36 |37 |38 |39 |3a |3b |3b |3c | + * |-------------------------------------------------------------| + * |40 |41 |42 | 46 |49 |4a |4b |4c |4d |4e | + * `-------------------------------------------------------------' +*/ +#define LAYOUT_65_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, k1d, k1e , \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2e , \ + k30, k31, 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, 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, ___, k2e }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e }, \ + { k40, k41, k42, ___, ___, ___, k46, ___, ___, k49, k4a, k4b, k4c, k4d, k4e } \ +} diff --git a/keyboards/mini_elixivy/readme.md b/keyboards/mini_elixivy/readme.md new file mode 100644 index 000000000000..6047a173465b --- /dev/null +++ b/keyboards/mini_elixivy/readme.md @@ -0,0 +1,24 @@ +# mini_elixivy + +![mini_eLiXiVy](https://imgur.com/0lmOFcF.jpg) + +A 65% ANSI/ISO keyboard PCB, with a rotary encoder option + +* Keyboard Maintainer: [minibois](https://github.com/minibois) +* Hardware Supported: mini_eLiXiVy PCB, KBDFans' 65% plate and case, PCB mount stabilizers +* Hardware Availability: PCB: https://github.com/minibois, BOM: https://octopart.com/bom-tool/allQRgda + +Make example for this keyboard (after setting up your build environment): + + make mini_elixivy:default + +Flashing example for this keyboard: + + make mini_elixivy:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader: +* **Physical reset button**: Briefly press the button on the back of the PCB (or short the reset/ground pads, should a tactile button not be installed) \ No newline at end of file diff --git a/keyboards/mini_elixivy/rules.mk b/keyboards/mini_elixivy/rules.mk new file mode 100644 index 000000000000..f379082a6125 --- /dev/null +++ b/keyboards/mini_elixivy/rules.mk @@ -0,0 +1,22 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes + +LAYOUTS = 65_ansi 65_iso diff --git a/keyboards/miniaxe/config.h b/keyboards/miniaxe/config.h index 8119c4f8e5e9..b9295bad9fc3 100644 --- a/keyboards/miniaxe/config.h +++ b/keyboards/miniaxe/config.h @@ -107,54 +107,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -173,26 +125,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/miniaxe/info.json b/keyboards/miniaxe/info.json index 7461a548d98e..40c9def62c61 100644 --- a/keyboards/miniaxe/info.json +++ b/keyboards/miniaxe/info.json @@ -2,8 +2,6 @@ "keyboard_name": "MiniAxe", "url": "", "maintainer": "ka2hiro", - "width": 11, - "height": 4, "layouts": { "LAYOUT_split_3x5_3": { "layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"A", "x":0, "y":1}, {"label":"S", "x":1, "y":1}, {"label":"D", "x":2, "y":1}, {"label":"F", "x":3, "y":1}, {"label":"G", "x":4, "y":1}, {"label":"J", "x":6, "y":1}, {"label":"J", "x":7, "y":1}, {"label":"K", "x":8, "y":1}, {"label":"L", "x":9, "y":1}, {"label":";", "x":10, "y":1}, {"label":"Z", "x":0, "y":2}, {"label":"X", "x":1, "y":2}, {"label":"C", "x":2, "y":2}, {"label":"V", "x":3, "y":2}, {"label":"B", "x":4, "y":2}, {"label":"N", "x":6, "y":2}, {"label":"M", "x":7, "y":2}, {"label":",", "x":8, "y":2}, {"label":".", "x":9, "y":2}, {"label":"/", "x":10, "y":2}, {"label":"Cmd", "x":2, "y":3}, {"label":"⇓", "x":3, "y":3}, {"label":"Ctrl", "x":4, "y":3}, {"x":6, "y":3}, {"label":"⇑", "x":7, "y":3}, {"label":"Opt", "x":8, "y":3}] diff --git a/keyboards/miniaxe/keymaps/default/keymap.c b/keyboards/miniaxe/keymaps/default/keymap.c index fb8f6ca9710d..cc77feeca58e 100644 --- a/keyboards/miniaxe/keymaps/default/keymap.c +++ b/keyboards/miniaxe/keymaps/default/keymap.c @@ -148,12 +148,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -void matrix_init_user(void) { -} - -void matrix_scan_user(void) { -} - -void led_set_user(uint8_t usb_led) { -} diff --git a/keyboards/miniaxe/keymaps/underglow/keymap.c b/keyboards/miniaxe/keymaps/underglow/keymap.c index 6325b205654f..362b29c60800 100644 --- a/keyboards/miniaxe/keymaps/underglow/keymap.c +++ b/keyboards/miniaxe/keymaps/underglow/keymap.c @@ -148,12 +148,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -void matrix_init_user(void) { -} - -void matrix_scan_user(void) { -} - -void led_set_user(uint8_t usb_led) { -} diff --git a/keyboards/miniaxe/miniaxe.c b/keyboards/miniaxe/miniaxe.c index 965ada9a1887..bda61784ed09 100644 --- a/keyboards/miniaxe/miniaxe.c +++ b/keyboards/miniaxe/miniaxe.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "miniaxe.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/miniaxe/miniaxe.h b/keyboards/miniaxe/miniaxe.h index b6a605112398..fc23865c3639 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 . */ -#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/miniaxe/rules.mk b/keyboards/miniaxe/rules.mk index 216d73438b32..e23cafaa72a2 100644 --- a/keyboards/miniaxe/rules.mk +++ b/keyboards/miniaxe/rules.mk @@ -2,36 +2,23 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output DEBUG_ENABLE = no -CUSTOM_MATRIX = no # Use custom matrix code SPLIT_KEYBOARD = yes # Use shared split_common code LAYOUTS = split_3x5_3 diff --git a/keyboards/minidox/keymaps/bepo/keymap.c b/keyboards/minidox/keymaps/bepo/keymap.c index 95b9ef30c0ab..331a22314d84 100644 --- a/keyboards/minidox/keymaps/bepo/keymap.c +++ b/keyboards/minidox/keymaps/bepo/keymap.c @@ -30,8 +30,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `------' `------' */ [_BEPO] = LAYOUT( - BP_B, BP_W, BP_P, BP_O, BP_APOS, BP_DCRC, BP_V , BP_D, BP_L, BP_J, - BP_A, BP_U, BP_I, BP_E, BP_COMMA, BP_C, BP_T, BP_S, BP_R, BP_N, + BP_B, BP_W, BP_P, BP_O, BP_QUOT, BP_DCIR, BP_V , BP_D, BP_L, BP_J, + BP_A, BP_U, BP_I, BP_E, BP_COMM, BP_C, BP_T, BP_S, BP_R, BP_N, LGUI_T(BP_Z), ALT_T(BP_Y), CTL_T(BP_X), SFT_T(BP_DOT), BP_K, BP_M, SFT_T(BP_Q), CTL_T(BP_G), ALT_T(BP_H), LGUI_T(BP_F), KC_DEL, TABLO, KC_SPC, KC_BSPC, ENTRA , KC_ESC ), @@ -52,8 +52,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `------' `------' */ [_LOWER] = LAYOUT( - ALGR(BP_B), BP_E_ACUTE, ALGR(BP_P), ALGR(BP_O), BP_E_GRAVE, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_MS_WH_UP, - ALGR(BP_A), ALGR(BP_U), ALGR(BP_I), ALGR(BP_E), BP_DOLLAR, KC_PGDOWN, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MS_WH_DOWN, + ALGR(BP_B), BP_EACU, ALGR(BP_P), ALGR(BP_O), BP_EGRV, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_MS_WH_UP, + ALGR(BP_A), ALGR(BP_U), ALGR(BP_I), ALGR(BP_E), BP_DLR, KC_PGDOWN, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MS_WH_DOWN, BP_AGRV, KC_LALT, KC_LCTL, KC_LSFT, BP_CCED, _______, KC_LSFT, KC_LCTL, KC_LALT, _______, _______, _______, _______, _______, _______, _______ ), @@ -74,8 +74,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `------' `------' */ [_RAISE] = LAYOUT( - BP_DQOT, ALGR(BP_LGIL), ALGR(BP_RGIL), BP_LPRN, BP_RPRN, BP_AT, BP_PLUS, BP_MINUS, BP_SLASH, BP_ASTR, - S(BP_PERCENT), ALGR(BP_Y), ALGR(BP_X), ALGR(BP_LPRN), ALGR(BP_RPRN), ALGR(BP_K), BP_EQUAL, BP_PERCENT, ALGR(BP_A_GRAVE), S(BP_DOLLAR), + BP_DQUO, ALGR(BP_LDAQ), ALGR(BP_RDAQ), BP_LPRN, BP_RPRN, BP_AT, BP_PLUS, BP_MINS, BP_SLSH, BP_ASTR, + S(BP_PERC), ALGR(BP_Y), ALGR(BP_X), ALGR(BP_LPRN), ALGR(BP_RPRN), ALGR(BP_K), BP_EQL, BP_PERC, ALGR(BP_AGRV), S(BP_DLR), ALGR(BP_B), KC_LALT, KC_LCTL, KC_LSFT, ALGR(BP_COMM), _______, KC_LSFT, KC_LCTL, KC_LALT, ALGR(BP_P), _______, _______, ALGR(KC_SPC), _______, _______, _______ ), @@ -98,7 +98,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_ADJUST] = LAYOUT( KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, - S(BP_DQOT), S(BP_LGIL), S(BP_RGIL), S(BP_LPRN), S(BP_RPRN), S(BP_AT), S(BP_PLUS), S(BP_MINUS), S(BP_SLASH), S(BP_ASTR), + S(BP_DQUO), S(BP_LDAQ), S(BP_RDAQ), S(BP_LPRN), S(BP_RPRN), S(BP_AT), S(BP_PLUS), S(BP_MINS), S(BP_SLSH), S(BP_ASTR), KC_F11, KC_LALT, KC_LCTL, KC_LSFT, _______, _______, KC_LSFT, KC_LCTL, KC_LALT, KC_F12 , _______, _______, _______, _______, _______, _______ ) diff --git a/keyboards/minidox/keymaps/tw1t611/keymap.c b/keyboards/minidox/keymaps/tw1t611/keymap.c index e94625516e95..f479b10f67a2 100644 --- a/keyboards/minidox/keymaps/tw1t611/keymap.c +++ b/keyboards/minidox/keymaps/tw1t611/keymap.c @@ -34,16 +34,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_RAISE] = LAYOUT( \ - DE_EXLM, DE_QST, DE_PARA, DE_DLR, DE_HASH, DE_PLUS, DE_7, DE_8, DE_9, DE_0, \ - DE_CIRC, DE_QUOT, DE_DQOT, DE_GRV, DE_AMPR, DE_ASTR, DE_4, DE_5, DE_6, DE_EQL, \ + DE_EXLM, DE_QUES, DE_SECT, DE_DLR, DE_HASH, DE_PLUS, DE_7, DE_8, DE_9, DE_0, \ + DE_CIRC, DE_QUOT, DE_DQUO, DE_GRV, DE_AMPR, DE_ASTR, DE_4, DE_5, DE_6, DE_EQL, \ DE_SLSH, DE_PIPE, DE_BSLS, DE_AT, DE_EURO, DE_PERC, DE_1, DE_2, DE_3, KC_TAB, \ _______, _______, _______, _______, _______, _______ \ ), [_LOWER] = LAYOUT( \ KC_AUDIO_MUTE, KC_AUDIO_VOL_DOWN, DE_LBRC, DE_RBRC, KC_AUDIO_VOL_UP, KC_HOME, KC_PGDOWN, KC_PGUP, KC_END, DE_TILD, \ - KC_ESC, DE_LESS, DE_LPRN, DE_RPRN, DE_MORE, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_ENT, \ - KC_BSPC, KC_DEL, DE_LCBR, DE_RCBR, KC_PSCR, _______, DE_AE, DE_OE, DE_UE, DE_SS, \ + KC_ESC, DE_LABK, DE_LPRN, DE_RPRN, DE_RABK, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_ENT, \ + KC_BSPC, KC_DEL, DE_LCBR, DE_RCBR, KC_PSCR, _______, DE_ADIA, DE_ODIA, DE_UDIA, DE_SS, \ _______, _______, _______, _______, MO(_ADJUST), _______ \ ), diff --git a/keyboards/minidox/rev1/info.json b/keyboards/minidox/rev1/info.json index 438dae5e5209..47ed14dab0fd 100644 --- a/keyboards/minidox/rev1/info.json +++ b/keyboards/minidox/rev1/info.json @@ -2,11 +2,8 @@ "keyboard_name": "MiniDox", "url": "", "maintainer": "qmk", - "width": 12, - "height": 5.75, "layouts": { "LAYOUT_split_3x5_3": { - "key_count": 36, "layout": [{"x":0, "y":0.375}, {"x":1, "y":0.125}, {"x":2, "y":0}, {"x":3, "y":0.125}, {"x":4, "y":0.25}, {"x":7, "y":0.25}, {"x":8, "y":0.125}, {"x":9, "y":0}, {"x":10, "y":0.125}, {"x":11, "y":0.375}, {"x":0, "y":1.375}, {"x":1, "y":1.125}, {"x":2, "y":1}, {"x":3, "y":1.125}, {"x":4, "y":1.25}, {"x":7, "y":1.25}, {"x":8, "y":1.125}, {"x":9, "y":1}, {"x":10, "y":1.125}, {"x":11, "y":1.375}, {"x":0, "y":2.375}, {"x":1, "y":2.125}, {"x":2, "y":2}, {"x":3, "y":2.125}, {"x":4, "y":2.25}, {"x":7, "y":2.25}, {"x":8, "y":2.125}, {"x":9, "y":2}, {"x":10, "y":2.125}, {"x":11, "y":2.375}, {"x":2.5, "y":4.75}, {"x":3.5, "y":4.75}, {"x":4.5, "y":3.75, "h":2}, {"x":6.5, "y":3.75, "h":2}, {"x":7.5, "y":4.75}, {"x":8.5, "y":4.75}] } } diff --git a/keyboards/minidox/rules.mk b/keyboards/minidox/rules.mk index 9948ef0c6ecb..8471850a564a 100644 --- a/keyboards/minidox/rules.mk +++ b/keyboards/minidox/rules.mk @@ -2,32 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = yes diff --git a/keyboards/minim/info.json b/keyboards/minim/info.json index a478ccfeabaf..0ac146b9a235 100644 --- a/keyboards/minim/info.json +++ b/keyboards/minim/info.json @@ -2,8 +2,6 @@ "keyboard_name": "minim", "url": "https://github.com/matthewdias/minim", "maintainer": "matthewdias", - "width": 14.5, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/minim/rules.mk b/keyboards/minim/rules.mk index 32981133b2eb..ef61685f7c09 100644 --- a/keyboards/minim/rules.mk +++ b/keyboards/minim/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/minimacro5/info.json b/keyboards/minimacro5/info.json index 1cc2a2e41ce3..5649c57de4a4 100644 --- a/keyboards/minimacro5/info.json +++ b/keyboards/minimacro5/info.json @@ -2,8 +2,6 @@ "keyboard_name": "minimacro5", "url": "", "maintainer": "qmk", - "width": 5, - "height": 1, "layouts": { "LAYOUT_ortho_1x5": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":5, "y":0}] diff --git a/keyboards/minimacro5/rules.mk b/keyboards/minimacro5/rules.mk index dd66c4fbd8c3..d5e149ca9891 100644 --- a/keyboards/minimacro5/rules.mk +++ b/keyboards/minimacro5/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes #enable rotary encoders diff --git a/keyboards/minimon/index_tab/config.h b/keyboards/minimon/index_tab/config.h new file mode 100644 index 000000000000..fc02185545d3 --- /dev/null +++ b/keyboards/minimon/index_tab/config.h @@ -0,0 +1,64 @@ +/* +Copyright 2020 Kyrre Havik Eriksen + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4B49 +#define PRODUCT_ID 0x1306 +#define DEVICE_VER 0x0001 +#define PRODUCT Index Tab + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 13 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { D3, B7, B3, B2, B1, B0 } +#define MATRIX_COL_PINS { F7, C7, C6, B6, B5, B4, D7, D6, D4, D5, D2, F1, F0 } +#define UNUSED_PINS { F4, F5, F6, D1, D0 } + + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* 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 RGB_DI_PIN E6 +#define RGBLED_NUM 10 +#define RGBLIGHT_SLEEP + +#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 diff --git a/keyboards/minimon/index_tab/index_tab.c b/keyboards/minimon/index_tab/index_tab.c new file mode 100644 index 000000000000..a0d8377e9723 --- /dev/null +++ b/keyboards/minimon/index_tab/index_tab.c @@ -0,0 +1,14 @@ +/* +Copyright 2020 Kyrre Havik Eriksen +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "index_tab.h" diff --git a/keyboards/minimon/index_tab/index_tab.h b/keyboards/minimon/index_tab/index_tab.h new file mode 100644 index 000000000000..e1419379baf4 --- /dev/null +++ b/keyboards/minimon/index_tab/index_tab.h @@ -0,0 +1,94 @@ +/* Copyright 2020 Kyrre Havik Eriksen + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +/* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │ + * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │ + * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │ + * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ + * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │ + * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ + * │40 │41 │42 │43 │44 │45 │46 │47 │48 │49 │4a │4b │4c │ + * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ + * │50 │51 │52 │53 │54 │55 │56 │57 │58 │59 │5a │5b │5c │ + * └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘ + * ┌───┬───┬───┬───┬───────┬───────┬───┬───┬───┬───┬───┐ + * │50 │51 │52 │53 │54 │56 │58 │59 │5a │5b │5c │ 2x2u + * └───┴───┴───┴───┴───────┴───────┴───┴───┴───┴───┴───┘ + * ┌───┬───┬───┬───────────────────────────┬───┬───┬───┐ + * │50 │51 │52 │ 56 │5a │5b │5c │ 7u_space + * └───┴───┴───┴───────────────────────────┴───┴───┴───┘ + */ + +#define LAYOUT_ortho_6x13( \ + 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, K45, K46, K47, K48, K49, K4a, K4b, K4c, \ + K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5a, K5b, K5c \ +) \ + { \ + { 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, K45, K46, K47, K48, K49, K4a, K4b, K4c }, \ + { K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5a, K5b, K5c } \ + } + +#define LAYOUT_2x2u( \ + 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, K45, K46, K47, K48, K49, K4a, K4b, K4c, \ + K50, K51, K52, K53, K54, K56, K58, K59, K5a, K5b, K5c \ +) \ + { \ + { 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, K45, K46, K47, K48, K49, K4a, K4b, K4c }, \ + { K50, K51, K52, K53, K54, XXX, K56, XXX, K58, K59, K5a, K5b, K5c } \ + } + +#define LAYOUT_7u_space( \ + 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, K45, K46, K47, K48, K49, K4a, K4b, K4c, \ + K50, K51, K52, K56, K5a, K5b, K5c \ +) \ + { \ + { 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, K45, K46, K47, K48, K49, K4a, K4b, K4c }, \ + { K50, K51, K52, XXX, XXX, XXX, K56, XXX, XXX, XXX, K5a, K5b, K5c } \ + } diff --git a/keyboards/minimon/index_tab/info.json b/keyboards/minimon/index_tab/info.json new file mode 100644 index 000000000000..209d3044fe44 --- /dev/null +++ b/keyboards/minimon/index_tab/info.json @@ -0,0 +1,263 @@ +{ + "keyboard_name": "Index Tab", + "maintainer": "kyrremann", + "url": "https://github.com/Kyrremann/index-tab", + "layout_aliases": { + "LAYOUT": "LAYOUT_ortho_6x13" + }, + "layouts": { + "LAYOUT_ortho_6x13": { + "layout": [ + {"label":"CAPS", "x":0, "y":0}, + {"label":"F1", "x":1, "y":0}, + {"label":"F2", "x":2, "y":0}, + {"label":"F3", "x":3, "y":0}, + {"label":"F4", "x":4, "y":0}, + {"label":"F5", "x":5, "y":0}, + {"label":"F6", "x":6, "y":0}, + {"label":"F7", "x":7, "y":0}, + {"label":"F8", "x":8, "y":0}, + {"label":"F9", "x":9, "y":0}, + {"label":"F10", "x":10, "y":0}, + {"label":"F11", "x":11, "y":0}, + {"label":"F12", "x":12, "y":0}, + + {"label":"<>", "x":0, "y":1}, + {"label":"1!", "x":1, "y":1}, + {"label":"2\"", "x":2, "y":1}, + {"label":"3#", "x":3, "y":1}, + {"label":"4\u00a4", "x":4, "y":1}, + {"label":"5%", "x":5, "y":1}, + {"label":"6&", "x":6, "y":1}, + {"label":"7/", "x":7, "y":1}, + {"label":"8(", "x":8, "y":1}, + {"label":"9)", "x":9, "y":1}, + {"label":"0=", "x":10, "y":1}, + {"label":"+?", "x":11, "y":1}, + {"label":"\\`", "x":12, "y":1}, + + {"label":"TAB", "x":0, "y":2}, + {"label":"Q", "x":1, "y":2}, + {"label":"W", "x":2, "y":2}, + {"label":"E", "x":3, "y":2}, + {"label":"R", "x":4, "y":2}, + {"label":"T", "x":5, "y":2}, + {"label":"Y", "x":6, "y":2}, + {"label":"U", "x":7, "y":2}, + {"label":"I", "x":8, "y":2}, + {"label":"O", "x":9, "y":2}, + {"label":"P", "x":10, "y":2}, + {"label":"\u00c5", "x":11, "y":2}, + {"label":"BKSP", "x":12, "y":2}, + + {"label":"CTRL", "x":0, "y":3}, + {"label":"A", "x":1, "y":3}, + {"label":"S", "x":2, "y":3}, + {"label":"D", "x":3, "y":3}, + {"label":"F", "x":4, "y":3}, + {"label":"G", "x":5, "y":3}, + {"label":"H", "x":6, "y":3}, + {"label":"J", "x":7, "y":3}, + {"label":"K", "x":8, "y":3}, + {"label":"L", "x":9, "y":3}, + {"label":"\u00d8", "x":10, "y":3}, + {"label":"\u00c6", "x":11, "y":3}, + {"label":"\u00a8^", "x":12, "y":3}, + + {"label":"SHIFT", "x":0, "y":4}, + {"label":"Z", "x":1, "y":4}, + {"label":"X", "x":2, "y":4}, + {"label":"C", "x":3, "y":4}, + {"label":"V", "x":4, "y":4}, + {"label":"B", "x":5, "y":4}, + {"label":"N", "x":6, "y":4}, + {"label":"M", "x":7, "y":4}, + {"label":",;", "x":8, "y":4}, + {"label":".:", "x":9, "y":4}, + {"label":"-_", "x":10, "y":4}, + {"label":"\u2191", "x":11, "y":4}, + {"label":"\u21b2", "x":12, "y":4}, + + {"label":"ESC", "x":0, "y":5}, + {"label":"|\u00a7", "x":1, "y":5}, + {"label":"WIN", "x":2, "y":5}, + {"label":"LALT", "x":3, "y":5}, + {"label":"Space", "x":4, "y":5}, + {"label":"Space", "x":5, "y":5}, + {"label":"Space", "x":6, "y":5}, + {"label":"Space", "x":7, "y":5}, + {"label":"FN", "x":8, "y":5}, + {"label":"'*", "x":9, "y":5}, + {"label":"\u2190", "x":10, "y":5}, + {"label":"\u2193", "x":11, "y":5}, + {"label":"\u2192", "x":12, "y":5} + ] + }, + "LAYOUT_2x2u": { + "layout": [ + {"label":"CAPS", "x":0, "y":0}, + {"label":"F1", "x":1, "y":0}, + {"label":"F2", "x":2, "y":0}, + {"label":"F3", "x":3, "y":0}, + {"label":"F4", "x":4, "y":0}, + {"label":"F5", "x":5, "y":0}, + {"label":"F6", "x":6, "y":0}, + {"label":"F7", "x":7, "y":0}, + {"label":"F8", "x":8, "y":0}, + {"label":"F9", "x":9, "y":0}, + {"label":"F10", "x":10, "y":0}, + {"label":"F11", "x":11, "y":0}, + {"label":"F12", "x":12, "y":0}, + + {"label":"<>", "x":0, "y":1}, + {"label":"1!", "x":1, "y":1}, + {"label":"2\"", "x":2, "y":1}, + {"label":"3#", "x":3, "y":1}, + {"label":"4\u00a4", "x":4, "y":1}, + {"label":"5%", "x":5, "y":1}, + {"label":"6&", "x":6, "y":1}, + {"label":"7/", "x":7, "y":1}, + {"label":"8(", "x":8, "y":1}, + {"label":"9)", "x":9, "y":1}, + {"label":"0=", "x":10, "y":1}, + {"label":"+?", "x":11, "y":1}, + {"label":"\\`", "x":12, "y":1}, + + {"label":"TAB", "x":0, "y":2}, + {"label":"Q", "x":1, "y":2}, + {"label":"W", "x":2, "y":2}, + {"label":"E", "x":3, "y":2}, + {"label":"R", "x":4, "y":2}, + {"label":"T", "x":5, "y":2}, + {"label":"Y", "x":6, "y":2}, + {"label":"U", "x":7, "y":2}, + {"label":"I", "x":8, "y":2}, + {"label":"O", "x":9, "y":2}, + {"label":"P", "x":10, "y":2}, + {"label":"\u00c5", "x":11, "y":2}, + {"label":"BKSP", "x":12, "y":2}, + + {"label":"CTRL", "x":0, "y":3}, + {"label":"A", "x":1, "y":3}, + {"label":"S", "x":2, "y":3}, + {"label":"D", "x":3, "y":3}, + {"label":"F", "x":4, "y":3}, + {"label":"G", "x":5, "y":3}, + {"label":"H", "x":6, "y":3}, + {"label":"J", "x":7, "y":3}, + {"label":"K", "x":8, "y":3}, + {"label":"L", "x":9, "y":3}, + {"label":"\u00d8", "x":10, "y":3}, + {"label":"\u00c6", "x":11, "y":3}, + {"label":"\u00a8^", "x":12, "y":3}, + + {"label":"SHIFT", "x":0, "y":4}, + {"label":"Z", "x":1, "y":4}, + {"label":"X", "x":2, "y":4}, + {"label":"C", "x":3, "y":4}, + {"label":"V", "x":4, "y":4}, + {"label":"B", "x":5, "y":4}, + {"label":"N", "x":6, "y":4}, + {"label":"M", "x":7, "y":4}, + {"label":",;", "x":8, "y":4}, + {"label":".:", "x":9, "y":4}, + {"label":"-_", "x":10, "y":4}, + {"label":"\u2191", "x":11, "y":4}, + {"label":"\u21b2", "x":12, "y":4}, + + {"label":"ESC", "x":0, "y":5}, + {"label":"|\u00a7", "x":1, "y":5}, + {"label":"WIN", "x":2, "y":5}, + {"label":"LALT", "x":3, "y":5}, + {"label":"Space", "x":4, "y":5, "w":2}, + {"label":"Space", "x":6, "y":5, "w":2}, + {"label":"FN", "x":8, "y":5}, + {"label":"'*", "x":9, "y":5}, + {"label":"\u2190", "x":10, "y":5}, + {"label":"\u2193", "x":11, "y":5}, + {"label":"\u2192", "x":12, "y":5} + ] + }, + "LAYOUT_7u_space": { + "layout": [ + {"label":"Fn/Caps", "x":0, "y":0}, + {"label":"F1", "x":1, "y":0}, + {"label":"F2", "x":2, "y":0}, + {"label":"F3", "x":3, "y":0}, + {"label":"F4", "x":4, "y":0}, + {"label":"F5", "x":5, "y":0}, + {"label":"F6", "x":6, "y":0}, + {"label":"F7", "x":7, "y":0}, + {"label":"F8", "x":8, "y":0}, + {"label":"F9", "x":9, "y":0}, + {"label":"F10", "x":10, "y":0}, + {"label":"F11", "x":11, "y":0}, + {"label":"F12", "x":12, "y":0}, + + {"label":"<>", "x":0, "y":1}, + {"label":"1!", "x":1, "y":1}, + {"label":"2\"", "x":2, "y":1}, + {"label":"3#", "x":3, "y":1}, + {"label":"4\u00a4", "x":4, "y":1}, + {"label":"5%", "x":5, "y":1}, + {"label":"6&", "x":6, "y":1}, + {"label":"7/", "x":7, "y":1}, + {"label":"8(", "x":8, "y":1}, + {"label":"9)", "x":9, "y":1}, + {"label":"0=", "x":10, "y":1}, + {"label":"+?", "x":11, "y":1}, + {"label":"\\`", "x":12, "y":1}, + + {"label":"TAB", "x":0, "y":2}, + {"label":"Q", "x":1, "y":2}, + {"label":"W", "x":2, "y":2}, + {"label":"E", "x":3, "y":2}, + {"label":"R", "x":4, "y":2}, + {"label":"T", "x":5, "y":2}, + {"label":"Y", "x":6, "y":2}, + {"label":"U", "x":7, "y":2}, + {"label":"I", "x":8, "y":2}, + {"label":"O", "x":9, "y":2}, + {"label":"P", "x":10, "y":2}, + {"label":"\u00c5", "x":11, "y":2}, + {"label":"BKSP", "x":12, "y":2}, + + {"label":"CTRL", "x":0, "y":3}, + {"label":"A", "x":1, "y":3}, + {"label":"S", "x":2, "y":3}, + {"label":"D", "x":3, "y":3}, + {"label":"F", "x":4, "y":3}, + {"label":"G", "x":5, "y":3}, + {"label":"H", "x":6, "y":3}, + {"label":"J", "x":7, "y":3}, + {"label":"K", "x":8, "y":3}, + {"label":"L", "x":9, "y":3}, + {"label":"\u00d8", "x":10, "y":3}, + {"label":"\u00c6", "x":11, "y":3}, + {"label":"\u00a8^", "x":12, "y":3}, + + {"label":"SHIFT", "x":0, "y":4}, + {"label":"Z", "x":1, "y":4}, + {"label":"X", "x":2, "y":4}, + {"label":"C", "x":3, "y":4}, + {"label":"V", "x":4, "y":4}, + {"label":"B", "x":5, "y":4}, + {"label":"N", "x":6, "y":4}, + {"label":"M", "x":7, "y":4}, + {"label":",;", "x":8, "y":4}, + {"label":".:", "x":9, "y":4}, + {"label":"-_", "x":10, "y":4}, + {"label":"\u2191", "x":11, "y":4}, + {"label":"\u21b2", "x":12, "y":4}, + + {"label":"GESC", "x":0, "y":5}, + {"label":"WIN", "x":1, "y":5}, + {"label":"LALT", "x":2, "y":5}, + {"label":"Space", "x":3, "y":5, "w":7}, + {"label":"\u2190", "x":10, "y":5}, + {"label":"\u2193", "x":11, "y":5}, + {"label":"\u2192", "x":12, "y":5} + ] + } + } +} diff --git a/keyboards/minimon/index_tab/keymaps/default/keymap.c b/keyboards/minimon/index_tab/keymaps/default/keymap.c new file mode 100644 index 000000000000..95e2f3427ed7 --- /dev/null +++ b/keyboards/minimon/index_tab/keymaps/default/keymap.c @@ -0,0 +1,44 @@ +/* +Copyright 2020 Kyrre Havik Eriksen +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[0] = LAYOUT_ortho_6x13( + KC_CAPS, 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_NUBS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_BSPC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_RBRC, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_ENT, + KC_ESC, KC_GRV, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, TG(1), KC_BSLS, KC_LEFT, KC_DOWN, KC_RGHT + ), + +[1] = LAYOUT_ortho_6x13( + KC_TRNS, RGB_TOG, RGB_MOD, RGB_RMOD,RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PCMM, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MSTP, KC_VOLD, KC_MUTE, KC_VOLU, KC_MNXT, KC_P1, KC_P2, KC_P3, KC_PEQL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MPLY, KC_MPLY, KC_MPLY, KC_TRNS, KC_P0, KC_P0, KC_PDOT, KC_PENT + ), + +[2] = LAYOUT_ortho_6x13( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/minimon/index_tab/keymaps/default/readme.md b/keyboards/minimon/index_tab/keymaps/default/readme.md new file mode 100644 index 000000000000..3633ffcd08d4 --- /dev/null +++ b/keyboards/minimon/index_tab/keymaps/default/readme.md @@ -0,0 +1,6 @@ +Index Tab default keymap +======================== + +![Index Tab layout image](https://i.imgur.com/BSsNGL9.png) + +[Keyboard layout editor](http://www.keyboard-layout-editor.com/##@@_a:7%3B&=CAPS&=F1&=F2&=F3&=F4&=F5&=F6&=F7&=F8&=F9&=F10&=F11&=F12%3B&@=%3C&=1&=2&=3&=4&=5&=6&=7&=8&=9&=0&=+&=%C2%B4%3B&@=TAB&=q&=w&=e&=r&=t&=y&=u&=i&=o&=p&=%C3%A5&=BKSP%3B&@=CTRL&=a&=s&=d&=f&=g&=h&=j&=k&=l&=%C3%B8&=%C3%A6&=%C2%A8%3B&@=SHIFT&=z&=x&=c&=v&=b&=n&=m&=,&=.&=-&=%E2%86%91&=%E2%86%B2%3B&@=ESC&=%C2%A7&=WIN&=LALT&_w:2%3B&=&_w:2%3B&=&=FN&=%2F@&=%E2%86%90&=%E2%86%93&=%E2%86%92) diff --git a/keyboards/minimon/index_tab/keymaps/default_2x2u/keymap.c b/keyboards/minimon/index_tab/keymaps/default_2x2u/keymap.c new file mode 100644 index 000000000000..999e19fb6919 --- /dev/null +++ b/keyboards/minimon/index_tab/keymaps/default_2x2u/keymap.c @@ -0,0 +1,37 @@ +/* +Copyright 2020 Kyrre Havik Eriksen + 2021 James Young for QMK (@noroadsleft) +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_2x2u( + KC_CAPS, 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_NUBS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_BSPC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_RBRC, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_ENT, + KC_ESC, KC_GRV, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, TG(1), KC_BSLS, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_2x2u( + KC_TRNS, RGB_TOG, RGB_MOD, RGB_RMOD,RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PCMM, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MSTP, KC_VOLD, KC_MUTE, KC_VOLU, KC_MNXT, KC_P1, KC_P2, KC_P3, KC_PEQL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MPLY, KC_TRNS, KC_P0, KC_P0, KC_PDOT, KC_PENT + ), + +}; diff --git a/keyboards/minimon/index_tab/keymaps/default_7u_space/keymap.c b/keyboards/minimon/index_tab/keymaps/default_7u_space/keymap.c new file mode 100644 index 000000000000..ea9e88568fdd --- /dev/null +++ b/keyboards/minimon/index_tab/keymaps/default_7u_space/keymap.c @@ -0,0 +1,39 @@ +/* +Copyright 2020 Kyrre Havik Eriksen + 2021 James Young for QMK (@noroadsleft) +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +#define LT1_CAP LT(1, KC_CAPS) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_7u_space( + LT1_CAP, 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_NUBS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_BSPC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_RBRC, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_ENT, + KC_GESC, KC_LGUI, KC_LALT, KC_SPC, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_7u_space( + KC_TRNS, RGB_TOG, RGB_MOD, RGB_RMOD,RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PCMM, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MSTP, KC_VOLD, KC_MUTE, KC_VOLU, KC_MNXT, KC_P1, KC_P2, KC_P3, KC_PEQL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_P0, KC_PDOT, KC_PENT + ), + +}; diff --git a/keyboards/minimon/index_tab/keymaps/via/keymap.c b/keyboards/minimon/index_tab/keymaps/via/keymap.c new file mode 100644 index 000000000000..f3bac2aee81d --- /dev/null +++ b/keyboards/minimon/index_tab/keymaps/via/keymap.c @@ -0,0 +1,53 @@ +/* +Copyright 2020 Kyrre Havik Eriksen +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[0] = LAYOUT_ortho_6x13( + KC_CAPS, 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_NUBS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_BSPC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_RBRC, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NUHS, KC_SFTENT, + KC_ESC, KC_GRV, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, TG(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + +[1] = LAYOUT_ortho_6x13( + KC_TRNS, RGB_TOG, RGB_MOD, RGB_RMOD,RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSLS, KC_PAST, KC_PMNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MRWD, KC_TRNS, KC_MSTP, KC_TRNS, KC_MFFD, KC_P4, KC_P5, KC_P6, KC_PCMM, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MUTE, KC_VOLU, KC_MNXT, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS, KC_P0, KC_P0, KC_PDOT, KC_PEQL + ), + +[2] = LAYOUT_ortho_6x13( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + +[3] = LAYOUT_ortho_6x13( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/minimon/index_tab/keymaps/via/rules.mk b/keyboards/minimon/index_tab/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/minimon/index_tab/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/minimon/index_tab/readme.md b/keyboards/minimon/index_tab/readme.md new file mode 100644 index 000000000000..31ad51aa5529 --- /dev/null +++ b/keyboards/minimon/index_tab/readme.md @@ -0,0 +1,35 @@ +# Index Tab + +Not just another ortho-keyboard. but one catering to the northern marked with our extra letters. +This is a 13x6 ortho keyboard; giving you enough space for all the numbers, all the F-keys, and our precious extraordinary letters. + +![Picture of the keyboard in the wild](https://raw.githubusercontent.com/Kyrremann/index-tab/master/images/rev5-dsa-vilebloom.JPG) + +Keyboard Maintainer: [Kyrremann](https://github.com/Kyrremann) + +The keyboard files can be found here: https://github.com/Kyrremann/index-tab + + +## Instructions + +To create a hex file for the Index Tab, run: + + make minimon/index_tab:default + +Flash the keyboard with QMK Toolbox or run: + + make minimon/index_tab:default:flash + +How to enter bootloader (DFU): + +Press the reset button on the underside of the board, near the USB port. + +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 the [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + + +## Default layout + +![Index Tab layout image](https://raw.githubusercontent.com/Kyrremann/index-tab/master/images/index-tab.png) + +[Keyboard layout editor](http://www.keyboard-layout-editor.com/#/gists/2577189f7cf19d980fff8177d14dc3ec) diff --git a/keyboards/minimon/index_tab/rules.mk b/keyboards/minimon/index_tab/rules.mk new file mode 100644 index 000000000000..779bdbe0bca4 --- /dev/null +++ b/keyboards/minimon/index_tab/rules.mk @@ -0,0 +1,19 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 diff --git a/keyboards/minimon/info.json b/keyboards/minimon/info.json new file mode 100644 index 000000000000..6740fa750ff7 --- /dev/null +++ b/keyboards/minimon/info.json @@ -0,0 +1,4 @@ +{ + "maintainer": "Kyrremann", + "manufacturer": "Minimon" +} diff --git a/keyboards/minimon/readme.md b/keyboards/minimon/readme.md new file mode 100644 index 000000000000..cd020a11108d --- /dev/null +++ b/keyboards/minimon/readme.md @@ -0,0 +1,9 @@ +![Minimon logo](https://i.imgur.com/4SWEH5Kh.png) + +Having fun making keyboards for the northern marked, as we need an extra column for our extended alphabets. + +Maintained by [Kyrremann](https://github.com/Kyrremann). + +## Keyboards + +* [Index Tab](index_tab/) - 13x6 ortho keyboard diff --git a/keyboards/mint60/config.h b/keyboards/mint60/config.h index db882a1d3dd4..b421349d868e 100644 --- a/keyboards/mint60/config.h +++ b/keyboards/mint60/config.h @@ -95,54 +95,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* ws2812 RGB LED */ #define RGB_DI_PIN D3 @@ -171,24 +123,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - diff --git a/keyboards/mint60/info.json b/keyboards/mint60/info.json index f03e6371b129..377b134c74b5 100644 --- a/keyboards/mint60/info.json +++ b/keyboards/mint60/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Mint60", "url": "", "maintainer": "eucalyn", - "width": 16, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/mint60/rules.mk b/keyboards/mint60/rules.mk index 33ddcbb1c196..3374efa0e257 100644 --- a/keyboards/mint60/rules.mk +++ b/keyboards/mint60/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = yes diff --git a/keyboards/mio/info.json b/keyboards/mio/info.json index d5afdbf79b27..fb66fba7f569 100644 --- a/keyboards/mio/info.json +++ b/keyboards/mio/info.json @@ -2,8 +2,6 @@ "keyboard_name": "MIO", "url": "https://keys.recompile.net/projects/mio/", "maintainer": "recompile keys", - "width": 8.25, - "height": 7.5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/mio/rules.mk b/keyboards/mio/rules.mk index 38ce53e3096f..4d962e934fdc 100644 --- a/keyboards/mio/rules.mk +++ b/keyboards/mio/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/misonoworks/chocolatebar/chocolatebar.c b/keyboards/misonoworks/chocolatebar/chocolatebar.c new file mode 100644 index 000000000000..dc9a251df49e --- /dev/null +++ b/keyboards/misonoworks/chocolatebar/chocolatebar.c @@ -0,0 +1,54 @@ +/* +Copyright 2021 MisonoWorks + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "chocolatebar.h" + +#ifdef OLED_ENABLE +oled_rotation_t oled_init_kb(oled_rotation_t rotation) { + return OLED_ROTATION_270; +} + +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } + static const char PROGMEM base_logo[] = {// 'choccy oled base', 32x128px + 0xff, 0xff, 0xff, 0xff, 0x7f, 0x3f, 0x1f, 0x0f, 0x8f, 0xff, 0x7f, 0x1f, 0x0f, 0x0f, 0x1f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7f, 0x7f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7c, 0x38, 0x08, 0x04, 0x02, 0x03, 0xe3, 0x98, 0x08, 0x08, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x9e, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xff, 0x03, 0x01, 0x01, 0xff, 0x00, 0x00, 0x00, 0x61, 0x63, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x30, 0x20, 0x20, 0x30, 0x3f, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x3c, 0x30, 0x20, 0x20, 0x30, 0x3f, 0x3e, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xfc, 0xbc, 0x14, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x14, 0xbc, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x3f, 0x7f, 0x3b, 0x30, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x43, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x80, 0x80, 0xc3, 0xc3, 0xc2, 0xc2, 0xc2, 0xc3, 0xc2, 0xc0, 0xc0, 0xc2, 0xc3, 0xc2, 0xc2, 0xc2, 0x42, 0x43, 0xc0, 0x80, 0x80, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xbf, 0xdf, 0xef, 0x67, 0x9b, 0x9d, 0x6e, 0x75, 0xb3, 0xc5, 0xce, 0x57, 0xbb, 0xdc, 0xed, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xed, 0xce, 0xb7, 0x3a, 0xdc, 0xe8, 0x73, 0xa3, 0xcd, 0xee, 0xf6, 0xf9, 0xfd, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0x87, 0x87, 0x87, 0x87, 0x87, 0x86, 0x86, 0x07, 0x07, 0x07, 0x07, 0x07, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x9f, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x9f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x08, 0x08, 0x08, 0x08, 0x88, 0x88, 0x80, 0x80, 0x80, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x03, 0x00, 0x00, 0x80, 0xf8, 0xf8, 0x78, 0x18, 0x00, 0x00, 0x00, 0x80, 0x88, 0x88, 0x88, 0x88, 0x08, 0x08, 0x08, 0x08, 0xf8, 0xf8, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xf8, 0xf8, 0xf8, 0xfc, 0xfc, 0xf8, 0xf8, 0xf8, 0xf8, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0xf9, 0xf1, 0xf1, 0xf0, 0xf0, 0xf8, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; + + static const char PROGMEM num_logo[] = {// 'choccy num', 32x128px + 0xff, 0xff, 0xff, 0xff, 0x7f, 0x3f, 0x1f, 0x0f, 0x8f, 0xff, 0x7f, 0x1f, 0x0f, 0x0f, 0x1f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7f, 0x7f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7c, 0x38, 0x08, 0x04, 0x02, 0x03, 0xe3, 0x98, 0x08, 0x08, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x9e, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xff, 0x03, 0x01, 0x01, 0xff, 0x00, 0x00, 0x00, 0x61, 0x63, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x30, 0x20, 0x20, 0x30, 0x3f, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x3c, 0x30, 0x20, 0x20, 0x30, 0x3f, 0x3e, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xfc, 0xbc, 0x14, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x14, 0xbc, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x3f, 0x7f, 0x3b, 0x30, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x43, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x80, 0x80, 0xc3, 0xc3, 0xc2, 0xc2, 0xc2, 0xc3, 0xc2, 0xc0, 0xc0, 0xc2, 0xc3, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc0, 0x80, 0x80, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xfc, 0xfc, 0xfc, 0x1c, 0x0c, 0x0c, 0x0c, 0x0c, 0x1c, 0xfc, 0xfc, 0xfc, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3e, 0x30, 0x30, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x07, 0x07, 0x07, 0x07, 0x07, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x9f, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x9f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x08, 0x08, 0x08, 0x08, 0x88, 0x88, 0x80, 0x80, 0x80, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x03, 0x00, 0x00, 0x80, 0xf8, 0xf8, 0x78, 0x18, 0x00, 0x00, 0x00, 0x80, 0x88, 0x88, 0x88, 0x88, 0x08, 0x08, 0x08, 0x08, 0xf8, 0xf8, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xf8, 0xf8, 0xf8, 0xfc, 0xfc, 0xf8, 0xf8, 0xf8, 0xf8, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0xf9, 0xf1, 0xf1, 0xf0, 0xf0, 0xf8, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; + + switch (get_highest_layer(layer_state)) { + case 0: + if (host_keyboard_led_state().num_lock) { + oled_write_raw_P(num_logo, sizeof(num_logo)); + } else { + oled_write_raw_P(base_logo, sizeof(base_logo)); + } + break; + default: + oled_write_raw_P(base_logo, sizeof(base_logo)); + } + return false; +} +#endif diff --git a/keyboards/misonoworks/chocolatebar/chocolatebar.h b/keyboards/misonoworks/chocolatebar/chocolatebar.h new file mode 100644 index 000000000000..badebdb73b5f --- /dev/null +++ b/keyboards/misonoworks/chocolatebar/chocolatebar.h @@ -0,0 +1,32 @@ +/* +Copyright 2021 MisonoWorks + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K013, K014, K015, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K111, K113, K114, K115, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K211, K212, K213, K214, K215, \ + K300, K301, K302, K303, K305, K306, K308, K311, K312, K313, K314, K315 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, KC_NO, K013, K014, K015 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, KC_NO, K111, KC_NO, K113, K114, K115 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, KC_NO, KC_NO, K211, K212, K213, K214, K215 }, \ + { K300, K301, K302, K303, KC_NO, K305, K306, KC_NO, K308, KC_NO, KC_NO, K311, K312, K313, K314, K315 } \ +} diff --git a/keyboards/misonoworks/chocolatebar/config.h b/keyboards/misonoworks/chocolatebar/config.h new file mode 100644 index 000000000000..a1da636fd99c --- /dev/null +++ b/keyboards/misonoworks/chocolatebar/config.h @@ -0,0 +1,63 @@ +/* +Copyright 2021 MisonoWorks + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x6D77 // "mW" - misonoWorks +#define PRODUCT_ID 0xC456 +#define DEVICE_VER 0x0001 +#define MANUFACTURER MisonoWorks +#define PRODUCT Chocolate Bar + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 16 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { B0, B7, D2, D3 } +#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, B3, B2 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* number of backlight levels */ +#ifdef BACKLIGHT_PIN +#define BACKLIGHT_LEVELS 3 +#endif + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 +#define FORCE_NKRO + +#define RGB_DI_PIN B1 +#ifdef RGB_DI_PIN +#define RGBLED_NUM 12 +#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 +#endif diff --git a/keyboards/misonoworks/chocolatebar/info.json b/keyboards/misonoworks/chocolatebar/info.json new file mode 100644 index 000000000000..d22d9da7aca6 --- /dev/null +++ b/keyboards/misonoworks/chocolatebar/info.json @@ -0,0 +1,69 @@ +{ + "keyboard_name": "Chocolate Bar", + "url": "https://github.com/misonoworks/chocolate-bar", + "maintainer": "Robin Bayardo", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"Q", "x":1, "y":0}, + {"label":"W", "x":2, "y":0}, + {"label":"E", "x":3, "y":0}, + {"label":"R", "x":4, "y":0}, + {"label":"T", "x":5, "y":0}, + {"label":"Y", "x":6, "y":0}, + {"label":"U", "x":7, "y":0}, + {"label":"I", "x":8, "y":0}, + {"label":"O", "x":9, "y":0}, + {"label":"P", "x":10, "y":0}, + {"label":"Back Space", "x":11, "y":0}, + {"label":"7", "x":13, "y":0}, + {"label":"8", "x":14, "y":0}, + {"label":"9", "x":15, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"A", "x":1.5, "y":1}, + {"label":"S", "x":2.5, "y":1}, + {"label":"D", "x":3.5, "y":1}, + {"label":"F", "x":4.5, "y":1}, + {"label":"G", "x":5.5, "y":1}, + {"label":"H", "x":6.5, "y":1}, + {"label":"J", "x":7.5, "y":1}, + {"label":"K", "x":8.5, "y":1}, + {"label":"L", "x":9.5, "y":1}, + {"label":"Enter", "x":10.5, "y":1, "w":1.5}, + {"label":"4", "x":13, "y":1}, + {"label":"5", "x":14, "y":1}, + {"label":"6", "x":15, "y":1}, + + {"label":"Shift", "x":0, "y":2, "w":2}, + {"label":"Z", "x":2, "y":2}, + {"label":"X", "x":3, "y":2}, + {"label":"C", "x":4, "y":2}, + {"label":"V", "x":5, "y":2}, + {"label":"B", "x":6, "y":2}, + {"label":"N", "x":7, "y":2}, + {"label":"M", "x":8, "y":2}, + {"label":", <", "x":9, "y":2}, + {"label":"Shift", "x":10, "y":2, "w":1.5}, + {"label":"Up", "x":11.75, "y":2.25}, + {"label":"1", "x":13, "y":2}, + {"label":"2", "x":14, "y":2}, + {"label":"3", "x":15, "y":2}, + + {"label":"Ctrl", "x":0, "y":3, "w":1.5}, + {"label":"Alt", "x":1.5, "y":3, "w":1.5}, + {"label":"Meta", "x":3, "y":3}, + {"x":4, "y":3, "w":2}, + {"x":6, "y":3, "w":2}, + {"label":"Super", "x":8, "y":3}, + {"label":"Ctrl", "x":9, "y":3, "w":1.5}, + {"label":"Left", "x":10.75, "y":3.25}, + {"label":"Down", "x":11.75, "y":3.25}, + {"label":"Right", "x":12.75, "y":3.25}, + {"label":"0", "x":14, "y":3}, + {"label":"Calc", "x":15, "y":3} + ] + } + } +} diff --git a/keyboards/misonoworks/chocolatebar/keymaps/default/keymap.c b/keyboards/misonoworks/chocolatebar/keymaps/default/keymap.c new file mode 100644 index 000000000000..957d826d938a --- /dev/null +++ b/keyboards/misonoworks/chocolatebar/keymaps/default/keymap.c @@ -0,0 +1,53 @@ +/* +Copyright 2021 MisonoWorks + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + DEFAULT, + META, + SUPER, + CALC, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [DEFAULT] = LAYOUT( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_P7, KC_P8, KC_P9, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_P1, KC_P2, KC_P3, + KC_LCTL, KC_LALT, MO(META), KC_SPC, KC_BSPC, MO(SUPER), KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, MO(CALC)), + + [META] = LAYOUT( + KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DELETE, KC_7, KC_8, KC_9, + KC_TAB, KC_GRAVE, KC_MINUS, KC_EQUAL, KC_F, KC_G, KC_H, KC_J, KC_K, KC_QUOT, KC_SCLN, KC_4, KC_5, KC_6, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_SLASH, KC_BSLASH, KC_PGUP, KC_1, KC_2, KC_3, + KC_LCTL, KC_LALT, KC_TRNS, KC_SPC, KC_BSPC, KC_TRNS, KC_LCTL, KC_WBAK, KC_PGDN, KC_WFWD, KC_0, KC_NLCK), + + [SUPER] = LAYOUT( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_MOD, RGB_RMOD, RGB_SAI, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_LBRC, KC_RBRC, RGB_HUI, RGB_HUD, RGB_SAD, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, RGB_VAI, RGB_VAD, KC_3, + KC_APP, KC_LALT, KC_TRNS, KC_SPC, KC_BSPC, KC_TRNS, KC_MENU, KC_LEFT, KC_DOWN, KC_RGHT, KC_0, RGB_TOG), + + [CALC] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, KC_KP_DOT, KC_NO, KC_PPLS, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_DOT, KC_DOT, KC_UP, KC_BSPC, KC_NO, KC_PENT, + KC_LCTL, KC_LALT, KC_TRNS, KC_SPC, KC_BSPC, KC_TRNS, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_NLCK, KC_TRNS), + +}; diff --git a/keyboards/misonoworks/chocolatebar/keymaps/via/keymap.c b/keyboards/misonoworks/chocolatebar/keymaps/via/keymap.c new file mode 100644 index 000000000000..c92069d13f13 --- /dev/null +++ b/keyboards/misonoworks/chocolatebar/keymaps/via/keymap.c @@ -0,0 +1,53 @@ +/* +Copyright 2021 MisonoWorks + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + DEFAULT, + META, + SUPER, + CALC, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [DEFAULT] = LAYOUT( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_P7, KC_P8, KC_P9, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_P1, KC_P2, KC_P3, + KC_LCTL, KC_LALT, MO(META), KC_SPC, KC_BSPC, MO(SUPER), KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, MO(CALC)), + + [META] = LAYOUT( + KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DELETE, KC_7, KC_8, KC_9, + KC_TRNS, KC_GRAVE, KC_MINUS, KC_EQUAL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_4, KC_5, KC_6, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SLASH, KC_BSLASH, KC_PGUP, KC_1, KC_2, KC_3, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_WBAK, KC_PGDN, KC_WFWD, KC_0, KC_NLCK), + + [SUPER] = LAYOUT( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_MOD, RGB_RMOD, RGB_SAI, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, RGB_HUI, RGB_HUD, RGB_SAD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_COMM, KC_DOT, KC_UP, RGB_VAI, RGB_VAD, KC_3, + KC_APP, KC_LALT, KC_TRNS, KC_SPC, KC_BSPC, KC_TRNS, KC_MENU, KC_LEFT, KC_DOWN, KC_RGHT, KC_0, RGB_TOG), + + [CALC] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_PSLS, KC_PAST, KC_PMNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_DOT, KC_NO, KC_PPLS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_BSPC, KC_NO, KC_PENT, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_NLCK), + +}; diff --git a/keyboards/misonoworks/chocolatebar/keymaps/via/rules.mk b/keyboards/misonoworks/chocolatebar/keymaps/via/rules.mk new file mode 100644 index 000000000000..43061db1dd46 --- /dev/null +++ b/keyboards/misonoworks/chocolatebar/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/misonoworks/chocolatebar/readme.md b/keyboards/misonoworks/chocolatebar/readme.md new file mode 100644 index 000000000000..b652c0714490 --- /dev/null +++ b/keyboards/misonoworks/chocolatebar/readme.md @@ -0,0 +1,16 @@ +# Chocolate Bar + +![Choc](https://i.imgur.com/IwF9JkVh.jpg) + + +An 1800-Style 40% Choc Keyboard + +* Keyboard Maintainer: [MisonoWorks](https://github.com/misonoworks/) +* Hardware Supported: Chocolate Bar PCB +* Hardware Availability: [MKUltra.click](https://mkultra.click/) + +Make example for this keyboard (after setting up your build environment): + + make misonoworks/chocolatebar: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/misonoworks/chocolatebar/rules.mk b/keyboards/misonoworks/chocolatebar/rules.mk new file mode 100644 index 000000000000..6e76fc12e6f8 --- /dev/null +++ b/keyboards/misonoworks/chocolatebar/rules.mk @@ -0,0 +1,22 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 +ENCODER_ENABLE = no +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/misonoworks/karina/info.json b/keyboards/misonoworks/karina/info.json index cc8a81e6a78e..bfa4944c74d9 100644 --- a/keyboards/misonoworks/karina/info.json +++ b/keyboards/misonoworks/karina/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Karina", "url": "https://github.com/autumnisacutie/karina", "maintainer": "MisonoWorks", - "width": 11, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/misonoworks/karina/rules.mk b/keyboards/misonoworks/karina/rules.mk index 40ef41ff970b..22ce985232a4 100644 --- a/keyboards/misonoworks/karina/rules.mk +++ b/keyboards/misonoworks/karina/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes diff --git a/keyboards/misterknife/knife66/info.json b/keyboards/misterknife/knife66/info.json index 3f61398c6379..983811fe3192 100644 --- a/keyboards/misterknife/knife66/info.json +++ b/keyboards/misterknife/knife66/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Knife66", "url": "", "maintainer": "qmk", - "width": 16.5, - "height": 5.25, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.5, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15.5, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":15.5, "y":2}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14.25, "y":3.25}, {"x":15.5, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":2.25, "y":4}, {"x":3.25, "y":4, "w":1.25}, {"x":4.5, "y":4, "w":2.25}, {"x":6.75, "y":4, "w":2.75}, {"x":9.5, "y":4, "w":1.25}, {"x":10.75, "y":4}, {"x":11.75, "y":4, "w":1.25}, {"x":13.25, "y":4.25}, {"x":14.25, "y":4.25}, {"x":15.25, "y":4.25}] diff --git a/keyboards/misterknife/knife66/rules.mk b/keyboards/misterknife/knife66/rules.mk index 2202d51ea089..a1c12ae9e2ca 100644 --- a/keyboards/misterknife/knife66/rules.mk +++ b/keyboards/misterknife/knife66/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output # Enter lower-power sleep mode when on the ChibiOS idle thread diff --git a/keyboards/misterknife/knife66_iso/info.json b/keyboards/misterknife/knife66_iso/info.json index 3597f59386bb..6411a480eed0 100644 --- a/keyboards/misterknife/knife66_iso/info.json +++ b/keyboards/misterknife/knife66_iso/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Knife66_iso", "url": "", "maintainer": "qmk", - "width": 16.5, - "height": 5.25, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/misterknife/knife66_iso/rules.mk b/keyboards/misterknife/knife66_iso/rules.mk index 2202d51ea089..a1c12ae9e2ca 100644 --- a/keyboards/misterknife/knife66_iso/rules.mk +++ b/keyboards/misterknife/knife66_iso/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output # Enter lower-power sleep mode when on the ChibiOS idle thread diff --git a/keyboards/mitosis/config.h b/keyboards/mitosis/config.h index 0e089269e8b5..94e84e680e74 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -66,5 +65,3 @@ along with this program. If not, see . UCSR1B = _BV(TXEN1) | _BV(RXEN1); \ /* 8-bit data */ \ UCSR1C = _BV(UCSZ11) | _BV(UCSZ10); - -#endif diff --git a/keyboards/mitosis/info.json b/keyboards/mitosis/info.json index 20ee1edf5c9b..a5a45ddf9be7 100644 --- a/keyboards/mitosis/info.json +++ b/keyboards/mitosis/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Mitosis", "url": "", "maintainer": "qmk", - "width": 12, - "height": 5.75, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0.75}, {"x":1, "y":0.25}, {"x":2, "y":0}, {"x":3, "y":0.25}, {"x":4, "y":0.125}, {"x":7, "y":0.125}, {"x":8, "y":0.25}, {"x":9, "y":0}, {"x":10, "y":0.25}, {"x":11, "y":0.75}, {"x":0, "y":1.75}, {"x":1, "y":1.25}, {"x":2, "y":1}, {"x":3, "y":1.25}, {"x":4, "y":1.125}, {"x":7, "y":1.125}, {"x":8, "y":1.25}, {"x":9, "y":1}, {"x":10, "y":1.25}, {"x":11, "y":1.75}, {"x":0, "y":2.75}, {"x":1, "y":2.25}, {"x":2, "y":2}, {"x":3, "y":2.25}, {"x":4, "y":2.125}, {"x":7, "y":2.125}, {"x":8, "y":2.25}, {"x":9, "y":2}, {"x":10, "y":2.25}, {"x":11, "y":2.75}, {"x":1.5, "y":3.75}, {"x":2.5, "y":3.75}, {"x":3.5, "y":3.75}, {"x":4.5, "y":3.75}, {"x":6.5, "y":3.75}, {"x":7.5, "y":3.75}, {"x":8.5, "y":3.75}, {"x":9.5, "y":3.75}, {"x":1.5, "y":4.75}, {"x":2.5, "y":4.75}, {"x":3.5, "y":4.75}, {"x":4.5, "y":4.75}, {"x":6.5, "y":4.75}, {"x":7.5, "y":4.75}, {"x":8.5, "y":4.75}, {"x":9.5, "y":4.75}] diff --git a/keyboards/mitosis/keymaps/datagrok/rules.mk b/keyboards/mitosis/keymaps/datagrok/rules.mk index b69efdf54f3f..7ee0852d7925 100644 --- a/keyboards/mitosis/keymaps/datagrok/rules.mk +++ b/keyboards/mitosis/keymaps/datagrok/rules.mk @@ -14,7 +14,7 @@ MITOSIS_DATAGROK_BOTTOMSPACE = no MITOSIS_DATAGROK_SLOWUART = no AUDIO_ENABLE = no # audio output -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/mitosis/keymaps/mjt/rules.mk b/keyboards/mitosis/keymaps/mjt/rules.mk index 0259657677bd..9060940ea567 100644 --- a/keyboards/mitosis/keymaps/mjt/rules.mk +++ b/keyboards/mitosis/keymaps/mjt/rules.mk @@ -1,4 +1,4 @@ -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) @@ -10,5 +10,3 @@ AUDIO_ENABLE = yes # Audio output on port C6 UNICODE_ENABLE = no # Unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -API_SYSEX_ENABLE = no - diff --git a/keyboards/mitosis/mitosis.h b/keyboards/mitosis/mitosis.h index 80476e71c884..4b7d3a60c414 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<. */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -86,54 +85,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -158,5 +109,3 @@ along with this program. If not, see . #define RGBLIGHT_HUE_STEP 10 #define RGBLIGHT_SAT_STEP 17 #define RGBLIGHT_VAL_STEP 17 - -#endif diff --git a/keyboards/miuni32/info.json b/keyboards/miuni32/info.json index fcd161dc04fb..016c772f1942 100644 --- a/keyboards/miuni32/info.json +++ b/keyboards/miuni32/info.json @@ -2,15 +2,11 @@ "keyboard_name": "miuni32", "url": "", "maintainer": "qmk", - "width": 11, - "height": 3, "layouts": { "LAYOUT": { - "key_count": 32, "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2, "w":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}] }, "LAYOUT_ortho_3x11": { - "key_count": 33, "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}] } } diff --git a/keyboards/miuni32/keymaps/adam-lee/rules.mk b/keyboards/miuni32/keymaps/adam-lee/rules.mk index 3a741d20a7ca..1022078ba6c6 100644 --- a/keyboards/miuni32/keymaps/adam-lee/rules.mk +++ b/keyboards/miuni32/keymaps/adam-lee/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/miuni32/keymaps/default/keymap.c b/keyboards/miuni32/keymaps/default/keymap.c index ae58f80a24b8..87519de54636 100644 --- a/keyboards/miuni32/keymaps/default/keymap.c +++ b/keyboards/miuni32/keymaps/default/keymap.c @@ -58,47 +58,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12 ) }; - -void matrix_init_user(void) { -} - -void matrix_scan_user(void) { -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - - if (usb_led & (1 << USB_LED_NUM_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_CAPS_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_SCROLL_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_COMPOSE)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_KANA)) { - - } else { - - } - -} diff --git a/keyboards/miuni32/keymaps/ht_156/rules.mk b/keyboards/miuni32/keymaps/ht_156/rules.mk index 3a741d20a7ca..1022078ba6c6 100644 --- a/keyboards/miuni32/keymaps/ht_156/rules.mk +++ b/keyboards/miuni32/keymaps/ht_156/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/miuni32/keymaps/kifinnsson/rules.mk b/keyboards/miuni32/keymaps/kifinnsson/rules.mk index 15d3cfff2ca0..5bd824e1fa61 100644 --- a/keyboards/miuni32/keymaps/kifinnsson/rules.mk +++ b/keyboards/miuni32/keymaps/kifinnsson/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/miuni32/miuni32.c b/keyboards/miuni32/miuni32.c index 1c1983a5641a..7defbe891bbd 100644 --- a/keyboards/miuni32/miuni32.c +++ b/keyboards/miuni32/miuni32.c @@ -1,28 +1 @@ #include "miuni32.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/miuni32/miuni32.h b/keyboards/miuni32/miuni32.h index ff74675450ed..c95a37e2e898 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/miuni32/rules.mk b/keyboards/miuni32/rules.mk index 9f36d744a397..491a2dd8d100 100644 --- a/keyboards/miuni32/rules.mk +++ b/keyboards/miuni32/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# 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 on B7 by default -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes diff --git a/keyboards/mixi/info.json b/keyboards/mixi/info.json index 123e23dc6be2..6b55464aa172 100644 --- a/keyboards/mixi/info.json +++ b/keyboards/mixi/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Mixi", "url": "https://tokopedia.com/sell-stuffs", "maintainer": "ohchiko", - "width": 3, - "height": 3, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/mixi/rules.mk b/keyboards/mixi/rules.mk index 99b1f1cbc5ed..9e62ed68651c 100644 --- a/keyboards/mixi/rules.mk +++ b/keyboards/mixi/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control 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 = no # 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 RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow diff --git a/keyboards/mnk1800s/config.h b/keyboards/mnk1800s/config.h new file mode 100755 index 000000000000..1c7ec21a29a3 --- /dev/null +++ b/keyboards/mnk1800s/config.h @@ -0,0 +1,76 @@ +/* +Copyright 2021 Yiancar-Designs + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published byß +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x8968 +#define PRODUCT_ID 0x3138 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Yiancar-Designs +#define PRODUCT MNK1800s + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 18 + +#define MATRIX_ROW_PINS { B13, B12, A7, A6, A5 } +#define MATRIX_COL_PINS { B10, B2, B1, B0, B14, B15, A8, A9, A10, B9, B8, B7, B6, B5, B4, B3, A15, A14 } + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* Ensure we jump to bootloader if the RESET keycode was pressed */ +#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is userful for the Windows task manager shortcut (ctrl+shift+esc). + */ +// #define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* Bootmagic Lite key configuration */ +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/mnk1800s/info.json b/keyboards/mnk1800s/info.json new file mode 100755 index 000000000000..9dd79dbf7d3b --- /dev/null +++ b/keyboards/mnk1800s/info.json @@ -0,0 +1,98 @@ +{ + "keyboard_name": "MNK1800s", + "url": "https://yiancar-designs.com", + "maintainer": "Yiancar-Designs", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"Num Lock", "x":0, "y":0}, + {"label":"/", "x":1, "y":0}, + {"label":"*", "x":2, "y":0}, + {"label":"-", "x":3, "y":0}, + {"label":"Esc", "x":4.5, "y":0}, + {"label":"1", "x":5.5, "y":0}, + {"label":"2", "x":6.5, "y":0}, + {"label":"3", "x":7.5, "y":0}, + {"label":"4", "x":8.5, "y":0}, + {"label":"5", "x":9.5, "y":0}, + {"label":"6", "x":10.5, "y":0}, + {"label":"7", "x":11.5, "y":0}, + {"label":"8", "x":12.5, "y":0}, + {"label":"9", "x":13.5, "y":0}, + {"label":"0", "x":14.5, "y":0}, + {"label":"-", "x":15.5, "y":0}, + {"label":"=", "x":16.5, "y":0}, + {"label":"Backspace", "x":17.5, "y":0}, + {"label":"Delete", "x":18.5, "y":0}, + + {"label":"7", "x":0, "y":1}, + {"label":"8", "x":1, "y":1}, + {"label":"9", "x":2, "y":1}, + {"label":"+", "x":3, "y":1}, + {"label":"Tab", "x":4.5, "y":1, "w":1.5}, + {"label":"Q", "x":6, "y":1}, + {"label":"W", "x":7, "y":1}, + {"label":"E", "x":8, "y":1}, + {"label":"R", "x":9, "y":1}, + {"label":"T", "x":10, "y":1}, + {"label":"Y", "x":11, "y":1}, + {"label":"U", "x":12, "y":1}, + {"label":"I", "x":13, "y":1}, + {"label":"O", "x":14, "y":1}, + {"label":"P", "x":15, "y":1}, + {"label":"[", "x":16, "y":1}, + {"label":"]", "x":17, "y":1}, + {"label":"\\", "x":18, "y":1, "w":1.5}, + + {"label":"4", "x":0, "y":2}, + {"label":"5", "x":1, "y":2}, + {"label":"6", "x":2, "y":2}, + {"label":"Enter", "x":3, "y":2}, + {"label":"Ctrl", "x":4.5, "y":2, "w":1.75}, + {"label":"A", "x":6.25, "y":2}, + {"label":"S", "x":7.25, "y":2}, + {"label":"D", "x":8.25, "y":2}, + {"label":"F", "x":9.25, "y":2}, + {"label":"G", "x":10.25, "y":2}, + {"label":"H", "x":11.25, "y":2}, + {"label":"J", "x":12.25, "y":2}, + {"label":"K", "x":13.25, "y":2}, + {"label":"L", "x":14.25, "y":2}, + {"label":";", "x":15.25, "y":2}, + {"label":"'", "x":16.25, "y":2}, + {"label":"Enter", "x":17.25, "y":2, "w":2.25}, + + {"label":"1", "x":0, "y":3}, + {"label":"2", "x":1, "y":3}, + {"label":"3", "x":2, "y":3}, + {"label":"Enter", "x":3, "y":3}, + {"label":"Up", "x":4.25, "y":3.25}, + {"label":"Shift", "x":5.5, "y":3, "w":1.25}, + {"label":"Z", "x":6.75, "y":3}, + {"label":"X", "x":7.75, "y":3}, + {"label":"C", "x":8.75, "y":3}, + {"label":"V", "x":9.75, "y":3}, + {"label":"B", "x":10.75, "y":3}, + {"label":"N", "x":11.75, "y":3}, + {"label":"M", "x":12.75, "y":3}, + {"label":",", "x":13.75, "y":3}, + {"label":".", "x":14.75, "y":3}, + {"label":"/", "x":15.75, "y":3}, + {"label":"Shift", "x":16.75, "y":3, "w":1.75}, + {"label":"Fn", "x":18.5, "y":3}, + + {"label":"0", "x":0, "y":4}, + {"label":"0", "x":1, "y":4}, + {"label":".", "x":2, "y":4}, + {"label":"Left", "x":3.25, "y":4.25}, + {"label":"Down", "x":4.25, "y":4.25}, + {"label":"Right", "x":5.25, "y":4.25}, + {"label":"GUI", "x":6.5, "y":4, "w":1.5}, + {"label":"Alt", "x":8, "y":4, "w":1.5}, + {"label":"Space", "x":9.5, "y":4, "w":7}, + {"label":"Alt", "x":16.5, "y":4, "w":1.5}, + {"label":"Menu", "x":18, "y":4, "w":1.5} + ] + } + } +} diff --git a/keyboards/mnk1800s/keymaps/default/keymap.c b/keyboards/mnk1800s/keymaps/default/keymap.c new file mode 100644 index 000000000000..24aa49ba84ef --- /dev/null +++ b/keyboards/mnk1800s/keymaps/default/keymap.c @@ -0,0 +1,32 @@ +/* Copyright 2021 Yiancar-Designs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_all( /* Base */ + KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_P7, KC_P8, KC_P9, KC_PPLS, 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_P4, KC_P5, KC_P6, KC_PENT, 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_P1, KC_P2, KC_P3, KC_PENT, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_P0, KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_MENU), + +[1] = LAYOUT_all( /* FN */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; diff --git a/keyboards/mnk1800s/keymaps/default/readme.md b/keyboards/mnk1800s/keymaps/default/readme.md new file mode 100755 index 000000000000..8d0f371ca3d3 --- /dev/null +++ b/keyboards/mnk1800s/keymaps/default/readme.md @@ -0,0 +1,5 @@ +# The default keymap for MNK1800s. VIA support disabled. + +![Layer 0](https://i.imgur.com/7fk7pg6.png) + +![Layer 1](https://i.imgur.com/SLKK1Oa.png) diff --git a/keyboards/mnk1800s/keymaps/via/keymap.c b/keyboards/mnk1800s/keymaps/via/keymap.c new file mode 100644 index 000000000000..dba005494bd6 --- /dev/null +++ b/keyboards/mnk1800s/keymaps/via/keymap.c @@ -0,0 +1,46 @@ +/* Copyright 2021 Yiancar-Designs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_all( /* Base */ + KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_P7, KC_P8, KC_P9, KC_PPLS, 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_P4, KC_P5, KC_P6, KC_PENT, 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_P1, KC_P2, KC_P3, KC_PENT, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_P0, KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_MENU), + +[1] = LAYOUT_all( /* FN */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +[2] = LAYOUT_all( /* Empty for dynamic keymaps */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +[3] = LAYOUT_all( /* Empty for dynamic keymaps */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; diff --git a/keyboards/mnk1800s/keymaps/via/readme.md b/keyboards/mnk1800s/keymaps/via/readme.md new file mode 100755 index 000000000000..f4f03694cb50 --- /dev/null +++ b/keyboards/mnk1800s/keymaps/via/readme.md @@ -0,0 +1,5 @@ +# The default keymap for MNK1800s. VIA support enabled. + +![Layer 0](https://i.imgur.com/7fk7pg6.png) + +![Layer 1](https://i.imgur.com/SLKK1Oa.png) diff --git a/keyboards/mnk1800s/keymaps/via/rules.mk b/keyboards/mnk1800s/keymaps/via/rules.mk new file mode 100755 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/mnk1800s/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/mnk1800s/mnk1800s.c b/keyboards/mnk1800s/mnk1800s.c new file mode 100755 index 000000000000..f7fcd20c2b82 --- /dev/null +++ b/keyboards/mnk1800s/mnk1800s.c @@ -0,0 +1,16 @@ +/* Copyright 2021 Yiancar-Designs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "mnk1800s.h" diff --git a/keyboards/mnk1800s/mnk1800s.h b/keyboards/mnk1800s/mnk1800s.h new file mode 100644 index 000000000000..71716767b8cc --- /dev/null +++ b/keyboards/mnk1800s/mnk1800s.h @@ -0,0 +1,34 @@ +/* Copyright 2021 Yiancar-Designs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#define XXX KC_NO + +#include "quantum.h" + +#define LAYOUT_all( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, KOG, K0H, K2H, \ + 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, \ + K30, K31, K32, K48, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3G, \ + K40, K41, K42, K43, K44, K45, K46, K47, K4A, K4F, K4G \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, KOG, 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, XXX }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48, XXX, K4A, XXX, XXX, XXX, XXX, K4F, K4G, XXX } \ +} diff --git a/keyboards/mnk1800s/readme.md b/keyboards/mnk1800s/readme.md new file mode 100755 index 000000000000..eb4e1b0ef594 --- /dev/null +++ b/keyboards/mnk1800s/readme.md @@ -0,0 +1,32 @@ +# MNK1800s + +This is a southpaw 65% keyboard. It supports VIA. + +* Keyboard Maintainer: [Yiancar](http://yiancar-designs.com/) and on [GitHub](https://github.com/yiancar) +* Hardware Supported: A TKL keyboard with STM32F072CB +* Hardware Availability: https://www.monokei.co + +## Instructions + +### Build + +Make example for this keyboard (after setting up your build environment): + + make mnk1800s:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +### Reset + +- Unplug +- Hold Escape +- Plug In +- Unplug +- Release Escape + +### Flash + +- Unplug +- Hold Escape +- Plug In +- Flash using QMK Toolbox or CLI (`make mnk1800s::flash`) diff --git a/keyboards/mnk1800s/rules.mk b/keyboards/mnk1800s/rules.mk new file mode 100755 index 000000000000..3e71d4e8d772 --- /dev/null +++ b/keyboards/mnk1800s/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = STM32F072 + +# Do not put the microcontroller into power saving mode +# when we get USB suspend event. We want it to keep updating +# backlight effects. +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 +NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in diff --git a/keyboards/mnk50/config.h b/keyboards/mnk50/config.h new file mode 100755 index 000000000000..9e49bd5c966d --- /dev/null +++ b/keyboards/mnk50/config.h @@ -0,0 +1,76 @@ +/* +Copyright 2021 Yiancar-Designs + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published byß +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x8968 +#define PRODUCT_ID 0x4D35 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Yiancar-Designs +#define PRODUCT MNK50 + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 14 + +#define MATRIX_ROW_PINS { B12, B13, A10, A6 } +#define MATRIX_COL_PINS { B14, B15, A8, A9, A13, A14, A15, B3, B4, B5, B6, B7, B8, B9 } + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* Ensure we jump to bootloader if the RESET keycode was pressed */ +#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is userful for the Windows task manager shortcut (ctrl+shift+esc). + */ +// #define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* Bootmagic Lite key configuration */ +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/mnk50/info.json b/keyboards/mnk50/info.json new file mode 100755 index 000000000000..2d174ead3ce6 --- /dev/null +++ b/keyboards/mnk50/info.json @@ -0,0 +1,170 @@ +{ + "keyboard_name": "MNK50", + "url": "https://yiancar-designs.com", + "maintainer": "Yiancar-Designs", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + + {"x":0, "y":1, "w":1.25}, + {"x":1.25, "y":1}, + {"x":2.25, "y":1}, + {"x":3.25, "y":1}, + {"x":4.25, "y":1}, + {"x":5.25, "y":1}, + {"x":6.25, "y":1}, + {"x":7.25, "y":1}, + {"x":8.25, "y":1}, + {"x":9.25, "y":1}, + {"x":10.25, "y":1}, + {"x":11.25, "y":1}, + {"x":12.25, "y":1, "w":1.75}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2, "w":1.25}, + {"x":13, "y":2}, + + {"x":1.25, "y":3}, + {"x":2.25, "y":3, "w":1.25}, + {"x":3.5, "y":3}, + {"x":4.5, "y":3, "w":2}, + {"x":6.5, "y":3}, + {"x":7.5, "y":3, "w":2}, + {"x":9.5, "y":3}, + {"x":10.5, "y":3, "w":1.25}, + {"x":11.75, "y":3} + ] + }, + "LAYOUT_split_space": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + + {"x":0, "y":1, "w":1.25}, + {"x":1.25, "y":1}, + {"x":2.25, "y":1}, + {"x":3.25, "y":1}, + {"x":4.25, "y":1}, + {"x":5.25, "y":1}, + {"x":6.25, "y":1}, + {"x":7.25, "y":1}, + {"x":8.25, "y":1}, + {"x":9.25, "y":1}, + {"x":10.25, "y":1}, + {"x":11.25, "y":1}, + {"x":12.25, "y":1, "w":1.75}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2, "w":1.25}, + {"x":13, "y":2}, + + {"x":1.25, "y":3}, + {"x":2.25, "y":3, "w":1.25}, + {"x":3.5, "y":3}, + {"x":4.5, "y":3, "w":2.25}, + {"x":6.75, "y":3, "w":2.75}, + {"x":9.5, "y":3}, + {"x":10.5, "y":3, "w":1.25}, + {"x":11.75, "y":3} + ] + }, + "LAYOUT_7u_space": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + + {"x":0, "y":1, "w":1.25}, + {"x":1.25, "y":1}, + {"x":2.25, "y":1}, + {"x":3.25, "y":1}, + {"x":4.25, "y":1}, + {"x":5.25, "y":1}, + {"x":6.25, "y":1}, + {"x":7.25, "y":1}, + {"x":8.25, "y":1}, + {"x":9.25, "y":1}, + {"x":10.25, "y":1}, + {"x":11.25, "y":1}, + {"x":12.25, "y":1, "w":1.75}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2, "w":1.25}, + {"x":13, "y":2}, + + {"x":1.25, "y":3}, + {"x":2.25, "y":3, "w":1.25}, + {"x":3.5, "y":3, "w":7}, + {"x":10.5, "y":3, "w":1.25}, + {"x":11.75, "y":3} + ] + } + } +} diff --git a/keyboards/mnk50/keymaps/default/keymap.c b/keyboards/mnk50/keymaps/default/keymap.c new file mode 100644 index 000000000000..9c35dc689bfc --- /dev/null +++ b/keyboards/mnk50/keymaps/default/keymap.c @@ -0,0 +1,30 @@ +/* Copyright 2021 Yiancar-Designs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_all( /* Base */ + KC_GESC, 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_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_LCTL), + +[1] = LAYOUT_all( /* FN */ + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, + KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN) +}; diff --git a/keyboards/mnk50/keymaps/default/readme.md b/keyboards/mnk50/keymaps/default/readme.md new file mode 100755 index 000000000000..b78cf94011c5 --- /dev/null +++ b/keyboards/mnk50/keymaps/default/readme.md @@ -0,0 +1,5 @@ +# The default keymap for MNK50 + +![Layer 0](https://i.imgur.com/8R4AXY5.png) + +![Layer 1](https://i.imgur.com/U8tLYCY.png) diff --git a/keyboards/mnk50/keymaps/via/keymap.c b/keyboards/mnk50/keymaps/via/keymap.c new file mode 100644 index 000000000000..7e8f4f138c43 --- /dev/null +++ b/keyboards/mnk50/keymaps/via/keymap.c @@ -0,0 +1,42 @@ +/* Copyright 2021 Yiancar-Designs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_all( /* Base */ + KC_GESC, 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_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_LCTL), + +[1] = LAYOUT_all( /* FN */ + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, + KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN), + +[2] = LAYOUT_all( /* Empty for dynamic keymaps */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +[3] = LAYOUT_all( /* Empty for dynamic keymaps */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; diff --git a/keyboards/mnk50/keymaps/via/readme.md b/keyboards/mnk50/keymaps/via/readme.md new file mode 100755 index 000000000000..9c61657a721a --- /dev/null +++ b/keyboards/mnk50/keymaps/via/readme.md @@ -0,0 +1,5 @@ +# The default keymap for MNK50s. VIA support enabled. + +![Layer 0](https://i.imgur.com/8R4AXY5.png) + +![Layer 1](https://i.imgur.com/U8tLYCY.png) \ No newline at end of file diff --git a/keyboards/mnk50/keymaps/via/rules.mk b/keyboards/mnk50/keymaps/via/rules.mk new file mode 100755 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/mnk50/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/mnk50/mnk50.c b/keyboards/mnk50/mnk50.c new file mode 100755 index 000000000000..0e833dc7b3d9 --- /dev/null +++ b/keyboards/mnk50/mnk50.c @@ -0,0 +1,16 @@ +/* Copyright 2021 Yiancar-Designs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "mnk50.h" diff --git a/keyboards/mnk50/mnk50.h b/keyboards/mnk50/mnk50.h new file mode 100644 index 000000000000..594445038746 --- /dev/null +++ b/keyboards/mnk50/mnk50.h @@ -0,0 +1,71 @@ +/* Copyright 2021 Yiancar-Designs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#define XXX KC_NO + +#include "quantum.h" + +/* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │ + * ├───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1D │ + * ├────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──┬───┤ ┌────────┐ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2D │ │2B │ 2.25u RShift + * └────┬─┴─┬─┴──┬┴──┬┴───┴───┼───┴───┴──┬┴──┬┴───┼───┬┴───┘ └────────┘ + * │31 │32 │33 │ 35 │ 37 │39 │3A │3B │ + * └───┴────┴───┴────────┴──────────┴───┴────┴───┘ + * ┌───────────────────────────┐ + * │ 36 │ 7u Spacebar + * └───────────────────────────┘ + */ + +#define LAYOUT_all( \ + 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, K1D, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \ + K31, K32, K33, K35, K36, K37, K39, K3A, K3B \ +) { \ + { 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, XXX, K1D }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, XXX, K2D }, \ + { XXX, K31, K32, K33, XXX, K35, K36, K37, XXX, K39, K3A, K3B, XXX, XXX } \ +} + +#define LAYOUT_split_space( \ + 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, K1D, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \ + K31, K32, K33, K35, K37, K39, K3A, K3B \ +) { \ + { 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, XXX, K1D }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, XXX, K2D }, \ + { XXX, K31, K32, K33, XXX, K35, XXX, K37, XXX, K39, K3A, K3B, XXX, XXX } \ +} + +#define LAYOUT_7u_space( \ + 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, K1D, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \ + K31, K32, K36, K3A, K3B \ +) { \ + { 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, XXX, K1D }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, XXX, K2D }, \ + { XXX, K31, K32, XXX, XXX, XXX, K36, XXX, XXX, XXX, K3A, K3B, XXX, XXX } \ +} diff --git a/keyboards/mnk50/readme.md b/keyboards/mnk50/readme.md new file mode 100755 index 000000000000..f8484e9d36d6 --- /dev/null +++ b/keyboards/mnk50/readme.md @@ -0,0 +1,32 @@ +# MNK40 + +This is a 40% keyboard. It supports VIA. + +* Keyboard Maintainer: [Yiancar](http://yiancar-designs.com/) and on [GitHub](https://github.com/yiancar) +* Hardware Supported: A 40% keyboard with STM32F072CB +* Hardware Availability: https://www.monokei.co + +## Instructions + +### Build + +Make example for this keyboard (after setting up your build environment): + + make mnk50:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +### Reset + +- Unplug +- Hold Escape +- Plug In +- Unplug +- Release Escape + +### Flash + +- Unplug +- Hold Escape +- Plug In +- Flash using QMK Toolbox or CLI (`make mnk50::flash`) diff --git a/keyboards/mnk50/rules.mk b/keyboards/mnk50/rules.mk new file mode 100755 index 000000000000..26154419de13 --- /dev/null +++ b/keyboards/mnk50/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = STM32F072 + +# Bootloader selection +BOOTLOADER = stm32-dfu + +# Do not put the microcontroller into power saving mode +# when we get USB suspend event. We want it to keep updating +# backlight effects. +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 diff --git a/keyboards/mode/eighty/m80h/info.json b/keyboards/mode/eighty/m80h/info.json index afb740c82a0e..97d5881997b2 100644 --- a/keyboards/mode/eighty/m80h/info.json +++ b/keyboards/mode/eighty/m80h/info.json @@ -2,8 +2,6 @@ "keyboard_name": "MODE80H", "url": "", "maintainer": "qmk", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT_eighty_m80h": { "layout": [ diff --git a/keyboards/mode/eighty/m80h/rules.mk b/keyboards/mode/eighty/m80h/rules.mk index 583ff23774a8..8d2b84a4e026 100644 --- a/keyboards/mode/eighty/m80h/rules.mk +++ b/keyboards/mode/eighty/m80h/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output # Enter lower-power sleep mode when on the ChibiOS idle thread diff --git a/keyboards/mode/eighty/m80s/info.json b/keyboards/mode/eighty/m80s/info.json index 90b1b5e40569..c586614a7833 100644 --- a/keyboards/mode/eighty/m80s/info.json +++ b/keyboards/mode/eighty/m80s/info.json @@ -2,8 +2,6 @@ "keyboard_name": "MODE80S", "url": "", "maintainer": "qmk", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT_eighty_m80s": { "layout": [ diff --git a/keyboards/mode/eighty/m80s/rules.mk b/keyboards/mode/eighty/m80s/rules.mk index 583ff23774a8..8d2b84a4e026 100644 --- a/keyboards/mode/eighty/m80s/rules.mk +++ b/keyboards/mode/eighty/m80s/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output # Enter lower-power sleep mode when on the ChibiOS idle thread diff --git a/keyboards/mode/m65ha_alpha/chconf.h b/keyboards/mode/m65ha_alpha/chconf.h new file mode 100644 index 000000000000..cbbae31079fb --- /dev/null +++ b/keyboards/mode/m65ha_alpha/chconf.h @@ -0,0 +1,25 @@ +/* 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 . + */ + +#pragma once + +#define CH_CFG_ST_FREQUENCY 10000 + +#define CH_CFG_OPTIMIZE_SPEED FALSE + +#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE + +#include_next diff --git a/keyboards/mode/m65ha_alpha/config.h b/keyboards/mode/m65ha_alpha/config.h new file mode 100644 index 000000000000..dc921fb33508 --- /dev/null +++ b/keyboards/mode/m65ha_alpha/config.h @@ -0,0 +1,73 @@ +/* + Copyright 2020 Álvaro "Gondolindrim" Volpato + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x00DE +#define PRODUCT_ID 0x6566 // 65A + 1 since the pre-alpha version was 6565 +#define DEVICE_VER 0x0065 // A for release Alpha +#define MANUFACTURER Mode +#define PRODUCT SixtyFive HA + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 15 + +#define MATRIX_COL_PINS { B10, B12, C8 , C4 , C5 , B0 , C10, B13, B14, B15, A15, C6 , C7 , A8 , C9} +#define MATRIX_ROW_PINS { A7 , A10, D2 , C12, B1 , C11 } +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* 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 EEPROM_I2C_24LC256 +//#define I2C1_CLOCK_SPEED 400000 +//#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2 + +#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE + +#define STM32_HSECLK 8000000 + +#define OPENDRAIN_INDICATORS +#define LED_CAPS_LOCK_PIN A6 + +/* + * 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/mode/m65ha_alpha/halconf.h b/keyboards/mode/m65ha_alpha/halconf.h new file mode 100644 index 000000000000..41bddcb2799b --- /dev/null +++ b/keyboards/mode/m65ha_alpha/halconf.h @@ -0,0 +1,21 @@ +/* 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 . + */ + +#pragma once + +#define HAL_USE_I2C TRUE + +#include_next diff --git a/keyboards/mode/m65ha_alpha/info.json b/keyboards/mode/m65ha_alpha/info.json new file mode 100644 index 000000000000..a25d22714e5f --- /dev/null +++ b/keyboards/mode/m65ha_alpha/info.json @@ -0,0 +1,82 @@ +{ + "keyboard_name": "Mode SixtyFive HA", + "url": "", + "maintainer": "Gondolindrim", + "layouts": { + "LAYOUT_all": { + "layout": [ + { "label": "K00", "x": 0, "y": 0 }, + { "label": "K01", "x": 1, "y": 0 }, + { "label": "K02", "x": 2, "y": 0 }, + { "label": "K03", "x": 3, "y": 0 }, + { "label": "K04", "x": 4, "y": 0 }, + { "label": "K05", "x": 5, "y": 0 }, + { "label": "K06", "x": 6, "y": 0 }, + { "label": "K07", "x": 7, "y": 0 }, + { "label": "K08", "x": 8, "y": 0 }, + { "label": "K09", "x": 9, "y": 0 }, + { "label": "K0A", "x": 10, "y": 0 }, + { "label": "K0B", "x": 11, "y": 0 }, + { "label": "K0C", "x": 12, "y": 0 }, + { "label": "K0D", "x": 13, "y": 0, "w": 2 }, + { "label": "K0E", "x": 15, "y": 0 }, + + { "label": "K10", "x": 0, "y": 1, "w": 1.5 }, + { "label": "K11", "x": 1.5, "y": 1 }, + { "label": "K12", "x": 2.5, "y": 1 }, + { "label": "K13", "x": 3.5, "y": 1 }, + { "label": "K14", "x": 4.5, "y": 1 }, + { "label": "K15", "x": 5.5, "y": 1 }, + { "label": "K16", "x": 6.5, "y": 1 }, + { "label": "K17", "x": 7.5, "y": 1 }, + { "label": "K18", "x": 8.5, "y": 1 }, + { "label": "K19", "x": 9.5, "y": 1 }, + { "label": "K1A", "x": 10.5, "y": 1 }, + { "label": "K1B", "x": 11.5, "y": 1 }, + { "label": "K1C", "x": 12.5, "y": 1 }, + { "label": "K1D", "x": 13.5, "y": 1, "w": 1.5}, + { "label": "K1E", "x": 15, "y": 1 }, + + { "label": "K20", "x": 0, "y": 2, "w": 1.75 }, + { "label": "K21", "x": 1.75, "y": 2 }, + { "label": "K22", "x": 2.75, "y": 2 }, + { "label": "K23", "x": 3.75, "y": 2 }, + { "label": "K24", "x": 4.75, "y": 2 }, + { "label": "K25", "x": 5.75, "y": 2 }, + { "label": "K26", "x": 6.75, "y": 2 }, + { "label": "K27", "x": 7.75, "y": 2 }, + { "label": "K28", "x": 8.75, "y": 2 }, + { "label": "K29", "x": 9.75, "y": 2 }, + { "label": "K2A", "x": 10.75, "y": 2 }, + { "label": "K2B", "x": 11.75, "y": 2 }, + { "label": "K2D", "x": 12.75, "y": 2, "w": 2.25 }, + { "label": "K2E", "x": 15, "y": 2 }, + + { "label": "K30", "x": 0, "y": 3, "w": 2.25 }, + { "label": "K32", "x": 2.25, "y": 3 }, + { "label": "K33", "x": 3.25, "y": 3 }, + { "label": "K34", "x": 4.25, "y": 3 }, + { "label": "K35", "x": 5.25, "y": 3 }, + { "label": "K36", "x": 6.25, "y": 3 }, + { "label": "K37", "x": 7.25, "y": 3 }, + { "label": "K38", "x": 8.25, "y": 3 }, + { "label": "K39", "x": 9.25, "y": 3 }, + { "label": "K3A", "x": 10.25, "y": 3 }, + { "label": "K3B", "x": 11.25, "y": 3 }, + { "label": "K3C", "x": 12.25, "y": 3, "w": 1.75 }, + { "label": "K3D", "x": 14, "y": 3 }, + { "label": "K3E", "x": 15, "y": 3 }, + + { "label": "K40", "x": 0, "y": 4, "w": 1.25 }, + { "label": "K41", "x": 1.25, "y": 4, "w": 1.25 }, + { "label": "K42", "x": 2.5, "y": 4, "w": 1.25 }, + { "label": "K56", "x": 3.75, "y": 4, "w": 6.25 }, + { "label": "K5A", "x": 10, "y": 4, "w": 1.25 }, + { "label": "K5B", "x": 11.25, "y": 4, "w": 1.25 }, + { "label": "K5C", "x": 13, "y": 4 }, + { "label": "K5D", "x": 14, "y": 4 }, + { "label": "K5E", "x": 15, "y": 4 } + ] + } + } +} diff --git a/keyboards/mode/m65ha_alpha/keymaps/default/keymap.c b/keyboards/mode/m65ha_alpha/keymaps/default/keymap.c new file mode 100755 index 000000000000..2a2e041536e5 --- /dev/null +++ b/keyboards/mode/m65ha_alpha/keymaps/default/keymap.c @@ -0,0 +1,49 @@ +/* +Copyright 2020 Álvaro "Gondolindrim" Volpato + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_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_BSPC, KC_DEL , + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_PGDN, + KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_END , + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, MO(1) , KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_all( + RESET , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_TRNS, KC_MUTE, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/mode/m65ha_alpha/keymaps/via/keymap.c b/keyboards/mode/m65ha_alpha/keymaps/via/keymap.c new file mode 100755 index 000000000000..2a2e041536e5 --- /dev/null +++ b/keyboards/mode/m65ha_alpha/keymaps/via/keymap.c @@ -0,0 +1,49 @@ +/* +Copyright 2020 Álvaro "Gondolindrim" Volpato + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_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_BSPC, KC_DEL , + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_PGDN, + KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_END , + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, MO(1) , KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_all( + RESET , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_TRNS, KC_MUTE, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/mode/m65ha_alpha/keymaps/via/rules.mk b/keyboards/mode/m65ha_alpha/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/mode/m65ha_alpha/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/mode/m65ha_alpha/m65ha_alpha.c b/keyboards/mode/m65ha_alpha/m65ha_alpha.c new file mode 100644 index 000000000000..93e0c06b73fc --- /dev/null +++ b/keyboards/mode/m65ha_alpha/m65ha_alpha.c @@ -0,0 +1,67 @@ +/* + Copyright 2020 Álvaro "Gondolindrim" Volpato + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "m65ha_alpha.h" + +void board_init(void) { + setPinInput(B9); + setPinInput(B10); +} + +#define LED_PIN_ON_STATE 1 +void led_init_ports(void) { + +/** If the OPENDRAIN_INDICATORS option is not defined in config.h, the indicator + pins default to push-pull output. Else, they are defined as open-drain. The + pin mode configuration is done through the INDICATOR_PIN_MODE which is + attributed right at the beggining. **/ + +#ifndef OPENDRAIN_INDICATORS +# define INDICATOR_PIN_MODE PAL_MODE_OUTPUT_PUSHPULL +#else +# define INDICATOR_PIN_MODE PAL_MODE_OUTPUT_OPENDRAIN +#endif + +#ifdef LED_NUM_LOCK_PIN + palSetLineMode(LED_NUM_LOCK_PIN, INDICATOR_PIN_MODE); +#endif +#ifdef LED_CAPS_LOCK_PIN + palSetLineMode(LED_CAPS_LOCK_PIN, INDICATOR_PIN_MODE); +#endif +#ifdef LED_SCROLL_LOCK_PIN + palSetLineMode(LED_SCROLL_LOCK_PIN, INDICATOR_PIN_MODE); +#endif +#ifdef LED_COMPOSE_PIN + palSetLineMode(LED_COMPOSE_PIN, INDICATOR_PIN_MODE); +#endif +#ifdef LED_KANA_PIN + palSetLineMode(LED_KANA_PIN, INDICATOR_PIN_MODE); +#endif +} + +bool led_update_kb(led_t led_state) { + bool res = led_update_user(led_state); + if(res) { + // writePin sets the pin high for 1 and low for 0. + // In this example the pins are inverted, setting + // it low/0 turns it on, and high/1 turns the LED off. + // This behavior depends on whether the LED is between the pin + // and VCC or the pin and GND. + writePin(LED_CAPS_LOCK_PIN, !led_state.caps_lock); + } + return res; +} diff --git a/keyboards/mode/m65ha_alpha/m65ha_alpha.h b/keyboards/mode/m65ha_alpha/m65ha_alpha.h new file mode 100644 index 000000000000..6b0c63c6bec8 --- /dev/null +++ b/keyboards/mode/m65ha_alpha/m65ha_alpha.h @@ -0,0 +1,37 @@ +/* +Copyright 2020 Álvaro "Gondolindrim" Volpato + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +#define ___ KC_NO + +#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, 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, K56, K5A, K5B, K5C, K5D, K5E \ +) { \ + { 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, ___, K2D, K2E }, \ + { K30, ___, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \ + { K40, K41, K42, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \ + { ___, ___, ___, ___, ___, ___, K56, ___, ___, ___, K5A, K5B, K5C, K5D, K5E } \ +} diff --git a/keyboards/mode/m65ha_alpha/mcuconf.h b/keyboards/mode/m65ha_alpha/mcuconf.h new file mode 100644 index 000000000000..e4cefd0b75c7 --- /dev/null +++ b/keyboards/mode/m65ha_alpha/mcuconf.h @@ -0,0 +1,35 @@ +/* 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 . + */ + +#pragma once + +#include_next +#undef STM32_PLLM_VALUE +#undef STM32_PLLN_VALUE +#undef STM32_PLLP_VALUE +#undef STM32_PLLQ_VALUE +#undef STM32_PPRE1 +#undef STM32_PPRE2 + +#define STM32_PLLM_VALUE 4 +#define STM32_PLLN_VALUE 168 +#define STM32_PLLP_VALUE 4 +#define STM32_PLLQ_VALUE 7 +#define STM32_PPRE1 STM32_PPRE1_DIV2 +#define STM32_PPRE2 STM32_PPRE2_DIV1 + +#undef STM32_I2C_USE_I2C1 +#define STM32_I2C_USE_I2C1 TRUE diff --git a/keyboards/mode/m65ha_alpha/readme.md b/keyboards/mode/m65ha_alpha/readme.md new file mode 100644 index 000000000000..ae8b489759c0 --- /dev/null +++ b/keyboards/mode/m65ha_alpha/readme.md @@ -0,0 +1,16 @@ +# Mode SixtyFive HA rev. Alpha + +![Image Gallery](https://cdn.shopify.com/s/files/1/0279/3426/1330/files/Group_95_1024x1024.jpg) + +The Mode SixtyFive is a 65% high-end keyboard sold by [Mode Designs](https://shop.modedesigns.com/). The M65HA is the ANSI-layout variant of its PCB. + +* Keyboard Maintainer: [Gondolindrim](https://github.com/gondolindrim) +* Hardware Supported: proprietary PCB using STM32F401 controller +* Hardware Availability: revision 1 public sales are over as of june 2021. + +Flashing example for this keyboard: + + make mode/m65hi_alpha:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + diff --git a/keyboards/mode/m65ha_alpha/rules.mk b/keyboards/mode/m65ha_alpha/rules.mk new file mode 100644 index 000000000000..f33a05592077 --- /dev/null +++ b/keyboards/mode/m65ha_alpha/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = STM32F401 + +# 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 = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +EEPROM_DRIVER = i2c +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE -DDEBUG_EEPROM_OUTPUT=TRUE diff --git a/keyboards/mode/m65hi_alpha/chconf.h b/keyboards/mode/m65hi_alpha/chconf.h new file mode 100644 index 000000000000..cbbae31079fb --- /dev/null +++ b/keyboards/mode/m65hi_alpha/chconf.h @@ -0,0 +1,25 @@ +/* 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 . + */ + +#pragma once + +#define CH_CFG_ST_FREQUENCY 10000 + +#define CH_CFG_OPTIMIZE_SPEED FALSE + +#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE + +#include_next diff --git a/keyboards/mode/m65hi_alpha/config.h b/keyboards/mode/m65hi_alpha/config.h new file mode 100644 index 000000000000..1a048e94d2be --- /dev/null +++ b/keyboards/mode/m65hi_alpha/config.h @@ -0,0 +1,73 @@ +/* + Copyright 2020 Álvaro "Gondolindrim" Volpato + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x00DE +#define PRODUCT_ID 0x6574 // For 65I + 1 (for alpha, since pre-alpha 6573) +#define DEVICE_VER 0x0065 // A for A (alpha) +#define MANUFACTURER Mode +#define PRODUCT SixtyFive HI + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 15 + +#define MATRIX_COL_PINS { B10, B12, C8 , C4 , C5 , B0 , C10, B13, B14, B15, A15, C6 , C7 , A8 , C9 } +#define MATRIX_ROW_PINS { A7 , A10, D2 , C12, B1 , C11 } +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* 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 EEPROM_I2C_24LC256 +//#define I2C1_CLOCK_SPEED 400000 +//#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2 + +#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE + +#define STM32_HSECLK 8000000 + +#define OPENDRAIN_INDICATORS +#define LED_CAPS_LOCK_PIN A6 + +/* + * 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/mode/m65hi_alpha/halconf.h b/keyboards/mode/m65hi_alpha/halconf.h new file mode 100644 index 000000000000..41bddcb2799b --- /dev/null +++ b/keyboards/mode/m65hi_alpha/halconf.h @@ -0,0 +1,21 @@ +/* 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 . + */ + +#pragma once + +#define HAL_USE_I2C TRUE + +#include_next diff --git a/keyboards/mode/m65hi_alpha/info.json b/keyboards/mode/m65hi_alpha/info.json new file mode 100644 index 000000000000..aa5f98efc695 --- /dev/null +++ b/keyboards/mode/m65hi_alpha/info.json @@ -0,0 +1,83 @@ +{ + "keyboard_name": "Mode SixtyFive HI", + "url": "", + "maintainer": "Gondolindrim", + "layouts": { + "LAYOUT_all": { + "layout": [ + { "label": "K00", "x": 0, "y": 0 }, + { "label": "K01", "x": 1, "y": 0 }, + { "label": "K02", "x": 2, "y": 0 }, + { "label": "K03", "x": 3, "y": 0 }, + { "label": "K04", "x": 4, "y": 0 }, + { "label": "K05", "x": 5, "y": 0 }, + { "label": "K06", "x": 6, "y": 0 }, + { "label": "K07", "x": 7, "y": 0 }, + { "label": "K08", "x": 8, "y": 0 }, + { "label": "K09", "x": 9, "y": 0 }, + { "label": "K0A", "x": 10, "y": 0 }, + { "label": "K0B", "x": 11, "y": 0 }, + { "label": "K0C", "x": 12, "y": 0 }, + { "label": "K0D", "x": 13, "y": 0, "w": 2 }, + { "label": "K0E", "x": 15, "y": 0 }, + + { "label": "K10", "x": 0, "y": 1, "w": 1.5 }, + { "label": "K11", "x": 1.5, "y": 1 }, + { "label": "K12", "x": 2.5, "y": 1 }, + { "label": "K13", "x": 3.5, "y": 1 }, + { "label": "K14", "x": 4.5, "y": 1 }, + { "label": "K15", "x": 5.5, "y": 1 }, + { "label": "K16", "x": 6.5, "y": 1 }, + { "label": "K17", "x": 7.5, "y": 1 }, + { "label": "K18", "x": 8.5, "y": 1 }, + { "label": "K19", "x": 9.5, "y": 1 }, + { "label": "K1A", "x": 10.5, "y": 1 }, + { "label": "K1B", "x": 11.5, "y": 1 }, + { "label": "K1C", "x": 12.5, "y": 1 }, + { "label": "K1E", "x": 15, "y": 1 }, + + { "label": "K20", "x": 0, "y": 2, "w": 1.75 }, + { "label": "K21", "x": 1.75, "y": 2 }, + { "label": "K22", "x": 2.75, "y": 2 }, + { "label": "K23", "x": 3.75, "y": 2 }, + { "label": "K24", "x": 4.75, "y": 2 }, + { "label": "K25", "x": 5.75, "y": 2 }, + { "label": "K26", "x": 6.75, "y": 2 }, + { "label": "K27", "x": 7.75, "y": 2 }, + { "label": "K28", "x": 8.75, "y": 2 }, + { "label": "K29", "x": 9.75, "y": 2 }, + { "label": "K2A", "x": 10.75, "y": 2 }, + { "label": "K2B", "x": 11.75, "y": 2 }, + { "label": "K2C", "x": 12.75, "y": 2 }, + { "label": "K2D", "x": 13.75, "y": 1, "w": 1.25, "h": 2 }, + { "label": "K2E", "x": 15, "y": 2 }, + + { "label": "K30", "x": 0, "y": 3, "w": 1.25 }, + { "label": "K31", "x": 1.25, "y": 3 }, + { "label": "K32", "x": 2.25, "y": 3 }, + { "label": "K33", "x": 3.25, "y": 3 }, + { "label": "K34", "x": 4.25, "y": 3 }, + { "label": "K35", "x": 5.25, "y": 3 }, + { "label": "K36", "x": 6.25, "y": 3 }, + { "label": "K37", "x": 7.25, "y": 3 }, + { "label": "K38", "x": 8.25, "y": 3 }, + { "label": "K39", "x": 9.25, "y": 3 }, + { "label": "K3A", "x": 10.25, "y": 3 }, + { "label": "K3B", "x": 11.25, "y": 3 }, + { "label": "K3C", "x": 12.25, "y": 3, "w": 1.75 }, + { "label": "K3D", "x": 14, "y": 3 }, + { "label": "K3E", "x": 15, "y": 3 }, + + { "label": "K40", "x": 0, "y": 4, "w": 1.25 }, + { "label": "K41", "x": 1.25, "y": 4, "w": 1.25 }, + { "label": "K42", "x": 2.5, "y": 4, "w": 1.25 }, + { "label": "K56", "x": 3.75, "y": 4, "w": 6.25 }, + { "label": "K5A", "x": 10, "y": 4, "w": 1.25 }, + { "label": "K5B", "x": 11.25, "y": 4, "w": 1.25 }, + { "label": "K5C", "x": 13, "y": 4 }, + { "label": "K5D", "x": 14, "y": 4 }, + { "label": "K5E", "x": 15, "y": 4 } + ] + } + } +} diff --git a/keyboards/mode/m65hi_alpha/keymaps/default/keymap.c b/keyboards/mode/m65hi_alpha/keymaps/default/keymap.c new file mode 100755 index 000000000000..2159d5ffe85b --- /dev/null +++ b/keyboards/mode/m65hi_alpha/keymaps/default/keymap.c @@ -0,0 +1,49 @@ +/* +Copyright 2020 Álvaro "Gondolindrim" Volpato + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_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_BSPC, KC_DEL , + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_PGDN, + KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT , KC_PGDN, + KC_LSFT, KC_NUBS, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_END , + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, MO(1) , KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_all( + RESET , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_TRNS, KC_MUTE, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/mode/m65hi_alpha/keymaps/via/keymap.c b/keyboards/mode/m65hi_alpha/keymaps/via/keymap.c new file mode 100755 index 000000000000..6d84d3849631 --- /dev/null +++ b/keyboards/mode/m65hi_alpha/keymaps/via/keymap.c @@ -0,0 +1,49 @@ +/* +Copyright 2020 Álvaro "Gondolindrim" Volpato + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_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_BSPC, KC_DEL , + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_PGDN, + KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT , KC_PGUP, + KC_LSFT, KC_NUBS, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_END , + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, MO(1) , KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_all( + RESET , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_TRNS, KC_MUTE, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/mode/m65hi_alpha/keymaps/via/rules.mk b/keyboards/mode/m65hi_alpha/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/mode/m65hi_alpha/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/mode/m65hi_alpha/m65hi_alpha.c b/keyboards/mode/m65hi_alpha/m65hi_alpha.c new file mode 100644 index 000000000000..db0ab7ca9aee --- /dev/null +++ b/keyboards/mode/m65hi_alpha/m65hi_alpha.c @@ -0,0 +1,67 @@ +/* + Copyright 2020 Álvaro "Gondolindrim" Volpato + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "m65hi_alpha.h" + +void board_init(void) { + setPinInput(B9); + setPinInput(B10); +} + +#define LED_PIN_ON_STATE 1 +void led_init_ports(void) { + +/** If the OPENDRAIN_INDICATORS option is not defined in config.h, the indicator + pins default to push-pull output. Else, they are defined as open-drain. The + pin mode configuration is done through the INDICATOR_PIN_MODE which is + attributed right at the beggining. **/ + +#ifndef OPENDRAIN_INDICATORS +# define INDICATOR_PIN_MODE PAL_MODE_OUTPUT_PUSHPULL +#else +# define INDICATOR_PIN_MODE PAL_MODE_OUTPUT_OPENDRAIN +#endif + +#ifdef LED_NUM_LOCK_PIN + palSetLineMode(LED_NUM_LOCK_PIN, INDICATOR_PIN_MODE); +#endif +#ifdef LED_CAPS_LOCK_PIN + palSetLineMode(LED_CAPS_LOCK_PIN, INDICATOR_PIN_MODE); +#endif +#ifdef LED_SCROLL_LOCK_PIN + palSetLineMode(LED_SCROLL_LOCK_PIN, INDICATOR_PIN_MODE); +#endif +#ifdef LED_COMPOSE_PIN + palSetLineMode(LED_COMPOSE_PIN, INDICATOR_PIN_MODE); +#endif +#ifdef LED_KANA_PIN + palSetLineMode(LED_KANA_PIN, INDICATOR_PIN_MODE); +#endif +} + +bool led_update_kb(led_t led_state) { + bool res = led_update_user(led_state); + if(res) { + // writePin sets the pin high for 1 and low for 0. + // In this example the pins are inverted, setting + // it low/0 turns it on, and high/1 turns the LED off. + // This behavior depends on whether the LED is between the pin + // and VCC or the pin and GND. + writePin(LED_CAPS_LOCK_PIN, !led_state.caps_lock); + } + return res; +} diff --git a/keyboards/mode/m65hi_alpha/m65hi_alpha.h b/keyboards/mode/m65hi_alpha/m65hi_alpha.h new file mode 100644 index 000000000000..7d2b5cc68ed4 --- /dev/null +++ b/keyboards/mode/m65hi_alpha/m65hi_alpha.h @@ -0,0 +1,37 @@ +/* +Copyright 2020 Álvaro "Gondolindrim" Volpato + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +#define ___ KC_NO + +#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, 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, K56, K5A, K5B, K5C, K5D, K5E \ +) { \ + { 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, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \ + { ___, ___, ___, ___, ___, ___, K56, ___, ___, ___, K5A, K5B, K5C, K5D, K5E } \ +} diff --git a/keyboards/mode/m65hi_alpha/mcuconf.h b/keyboards/mode/m65hi_alpha/mcuconf.h new file mode 100644 index 000000000000..97f2ee51ee08 --- /dev/null +++ b/keyboards/mode/m65hi_alpha/mcuconf.h @@ -0,0 +1,40 @@ +/* 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/acheron/austin/mcuconf.h -r platforms/chibios/GENERIC_STM32_F072XB/configs/mcuconf.h` + */ + +#pragma once + +#include_next +#undef STM32_PLLM_VALUE +#undef STM32_PLLN_VALUE +#undef STM32_PLLP_VALUE +#undef STM32_PLLQ_VALUE +#undef STM32_PPRE1 +#undef STM32_PPRE2 + +#define STM32_PLLM_VALUE 4 +#define STM32_PLLN_VALUE 168 +#define STM32_PLLP_VALUE 4 +#define STM32_PLLQ_VALUE 7 +#define STM32_PPRE1 STM32_PPRE1_DIV2 +#define STM32_PPRE2 STM32_PPRE2_DIV1 + +#undef STM32_I2C_USE_I2C1 +#define STM32_I2C_USE_I2C1 TRUE diff --git a/keyboards/mode/m65hi_alpha/readme.md b/keyboards/mode/m65hi_alpha/readme.md new file mode 100644 index 000000000000..6dcc32656581 --- /dev/null +++ b/keyboards/mode/m65hi_alpha/readme.md @@ -0,0 +1,15 @@ +# Mode SixtyFive HI rev. Alpha + +![Image Gallery](https://cdn.shopify.com/s/files/1/0279/3426/1330/files/Group_95_1024x1024.jpg) + +The Mode SixtyFive is a 65% high-end keyboard sold by [Mode Designs](https://shop.modedesigns.com/). The M65HI is the ISO-layout variant of its PCB. + +* Keyboard Maintainer: [Gondolindrim](https://github.com/gondolindrim) +* Hardware Supported: proprietary PCB using STM32F401 controller +* Hardware Availability: revision 1 public sales are over as of june 2021. + +Flashing example for this keyboard: + + make mode/m65hi_alpha:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/mode/m65hi_alpha/rules.mk b/keyboards/mode/m65hi_alpha/rules.mk new file mode 100644 index 000000000000..f33a05592077 --- /dev/null +++ b/keyboards/mode/m65hi_alpha/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = STM32F401 + +# 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 = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +EEPROM_DRIVER = i2c +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE -DDEBUG_EEPROM_OUTPUT=TRUE diff --git a/keyboards/mode/m65s/chconf.h b/keyboards/mode/m65s/chconf.h new file mode 100644 index 000000000000..dedd4d5e28f5 --- /dev/null +++ b/keyboards/mode/m65s/chconf.h @@ -0,0 +1,30 @@ +/* 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/acheron/austin/chconf.h -r platforms/chibios/common/configs/chconf.h` + */ + +#pragma once + +#define CH_CFG_ST_FREQUENCY 10000 + +#define CH_CFG_OPTIMIZE_SPEED FALSE + +#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE + +#include_next diff --git a/keyboards/mode/m65s/config.h b/keyboards/mode/m65s/config.h new file mode 100644 index 000000000000..e2e553bca99b --- /dev/null +++ b/keyboards/mode/m65s/config.h @@ -0,0 +1,75 @@ +/* + Copyright 2020 Álvaro "Gondolindrim" Volpato + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x00DE +#define PRODUCT_ID 0x6583 // For 65S +#define DEVICE_VER 0x0001 +#define MANUFACTURER Mode +#define PRODUCT SixtyFive S + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 16 + +#define MATRIX_COL_PINS { C7 , A8 , A10, A4 , A5 , A6 , C10, A7, C4 , C5 , A15, B0 , B1 , B12, B10, B13 } +#define MATRIX_ROW_PINS { A3 , B14, B15, C9 , C6 , C11 } +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* 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 EEPROM_I2C_24LC128 +//#define I2C1_CLOCK_SPEED 400000 +//#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2 + +#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE + +#define STM32_HSECLK 8000000 + +#define OPENDRAIN_INDICATORS +#define LED_CAPS_LOCK_PIN C8 + +/* + * 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 + +#define TAP_CODE_DELAY 50 diff --git a/keyboards/mode/m65s/halconf.h b/keyboards/mode/m65s/halconf.h new file mode 100644 index 000000000000..6c53f594c769 --- /dev/null +++ b/keyboards/mode/m65s/halconf.h @@ -0,0 +1,26 @@ +/* Copyright 2020 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/acheron/austin/halconf.h -r platforms/chibios/common/configs/halconf.h` + */ + +#pragma once + +#define HAL_USE_I2C TRUE + +#include_next diff --git a/keyboards/mode/m65s/info.json b/keyboards/mode/m65s/info.json new file mode 100644 index 000000000000..cb0cf8c12cd5 --- /dev/null +++ b/keyboards/mode/m65s/info.json @@ -0,0 +1,85 @@ +{ + "keyboard_name": "Mode SixtyFive S", + "url": "", + "maintainer": "Gondolindrim", + "layouts": { + "LAYOUT_all": { + "layout": [ + { "label": "K00", "x": 0, "y": 0 }, + { "label": "K01", "x": 1, "y": 0 }, + { "label": "K02", "x": 2, "y": 0 }, + { "label": "K03", "x": 3, "y": 0 }, + { "label": "K04", "x": 4, "y": 0 }, + { "label": "K05", "x": 5, "y": 0 }, + { "label": "K06", "x": 6, "y": 0 }, + { "label": "K07", "x": 7, "y": 0 }, + { "label": "K08", "x": 8, "y": 0 }, + { "label": "K09", "x": 9, "y": 0 }, + { "label": "K0A", "x": 10, "y": 0 }, + { "label": "K0B", "x": 11, "y": 0 }, + { "label": "K0C", "x": 12, "y": 0 }, + { "label": "K0D", "x": 13, "y": 0 }, + { "label": "K0E", "x": 14, "y": 0 }, + { "label": "K0F", "x": 15, "y": 0 }, + + { "label": "K10", "x": 0, "y": 1, "w": 1.5 }, + { "label": "K11", "x": 1.5, "y": 1 }, + { "label": "K12", "x": 2.5, "y": 1 }, + { "label": "K13", "x": 3.5, "y": 1 }, + { "label": "K14", "x": 4.5, "y": 1 }, + { "label": "K15", "x": 5.5, "y": 1 }, + { "label": "K16", "x": 6.5, "y": 1 }, + { "label": "K17", "x": 7.5, "y": 1 }, + { "label": "K18", "x": 8.5, "y": 1 }, + { "label": "K19", "x": 9.5, "y": 1 }, + { "label": "K1A", "x": 10.5, "y": 1 }, + { "label": "K1B", "x": 11.5, "y": 1 }, + { "label": "K1C", "x": 12.5, "y": 1 }, + { "label": "K1E", "x": 13.5, "y": 1, "w": 1.5}, + { "label": "K1F", "x": 15, "y": 1 }, + + { "label": "K20", "x": 0, "y": 2, "w": 1.75 }, + { "label": "K21", "x": 1.75, "y": 2 }, + { "label": "K22", "x": 2.75, "y": 2 }, + { "label": "K23", "x": 3.75, "y": 2 }, + { "label": "K24", "x": 4.75, "y": 2 }, + { "label": "K25", "x": 5.75, "y": 2 }, + { "label": "K26", "x": 6.75, "y": 2 }, + { "label": "K27", "x": 7.75, "y": 2 }, + { "label": "K28", "x": 8.75, "y": 2 }, + { "label": "K29", "x": 9.75, "y": 2 }, + { "label": "K2A", "x": 10.75, "y": 2 }, + { "label": "K2B", "x": 11.75, "y": 2 }, + { "label": "K2D", "x": 12.75, "y": 2 }, + { "label": "K2E", "x": 13.75, "y": 2, "w": 1.25 }, + { "label": "K2F", "x": 15, "y": 2 }, + + { "label": "K30", "x": 0, "y": 3, "w": 1.25 }, + { "label": "K31", "x": 1.25, "y": 3 }, + { "label": "K32", "x": 2.25, "y": 3 }, + { "label": "K33", "x": 3.25, "y": 3 }, + { "label": "K34", "x": 4.25, "y": 3 }, + { "label": "K35", "x": 5.25, "y": 3 }, + { "label": "K36", "x": 6.25, "y": 3 }, + { "label": "K37", "x": 7.25, "y": 3 }, + { "label": "K38", "x": 8.25, "y": 3 }, + { "label": "K39", "x": 9.25, "y": 3 }, + { "label": "K3A", "x": 10.25, "y": 3 }, + { "label": "K3B", "x": 11.25, "y": 3 }, + { "label": "K3C", "x": 12.25, "y": 3, "w": 1.75 }, + { "label": "K3E", "x": 14, "y": 3 }, + { "label": "K3F", "x": 15, "y": 3 }, + + { "label": "K40", "x": 0, "y": 4, "w": 1.25 }, + { "label": "K41", "x": 1.25, "y": 4, "w": 1.25 }, + { "label": "K42", "x": 2.5, "y": 4, "w": 1.25 }, + { "label": "K56", "x": 3.75, "y": 4, "w": 6.25 }, + { "label": "K5A", "x": 10, "y": 4, "w": 1.25 }, + { "label": "K5B", "x": 11.25, "y": 4, "w": 1.25 }, + { "label": "K5D", "x": 13, "y": 4 }, + { "label": "K5E", "x": 14, "y": 4 }, + { "label": "K5F", "x": 15, "y": 4 } + ] + } + } +} diff --git a/keyboards/mode/m65s/keymaps/default/keymap.c b/keyboards/mode/m65s/keymaps/default/keymap.c new file mode 100755 index 000000000000..880835f382c8 --- /dev/null +++ b/keyboards/mode/m65s/keymaps/default/keymap.c @@ -0,0 +1,49 @@ +/* +Copyright 2020 Álvaro "Gondolindrim" Volpato + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_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_BSPC, KC_BSPC, KC_DEL , + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP , + KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT , KC_PGDN , + KC_LSFT, KC_BSLS, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_END , + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, MO(1) , KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_all( + RESET , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_TRNS, KC_TRNS, KC_MUTE, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/mode/m65s/keymaps/via/keymap.c b/keyboards/mode/m65s/keymaps/via/keymap.c new file mode 100755 index 000000000000..880835f382c8 --- /dev/null +++ b/keyboards/mode/m65s/keymaps/via/keymap.c @@ -0,0 +1,49 @@ +/* +Copyright 2020 Álvaro "Gondolindrim" Volpato + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_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_BSPC, KC_BSPC, KC_DEL , + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP , + KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT , KC_PGDN , + KC_LSFT, KC_BSLS, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_END , + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, MO(1) , KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_all( + RESET , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_TRNS, KC_TRNS, KC_MUTE, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/mode/m65s/keymaps/via/rules.mk b/keyboards/mode/m65s/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/mode/m65s/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/mode/m65s/m65s.c b/keyboards/mode/m65s/m65s.c new file mode 100644 index 000000000000..298fc9414036 --- /dev/null +++ b/keyboards/mode/m65s/m65s.c @@ -0,0 +1,68 @@ +/* + Copyright 2020 Álvaro "Gondolindrim" Volpato + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "m65s.h" + +void board_init(void) { + setPinInput(B9); + setPinInput(B10); +} + +#define LED_PIN_ON_STATE 1 +void led_init_ports(void) { + +/** If the OPENDRAIN_INDICATORS option is not defined in config.h, the indicator + pins default to push-pull output. Else, they are defined as open-drain. The + pin mode configuration is done through the INDICATOR_PIN_MODE which is + attributed right at the beggining. **/ + +#ifndef OPENDRAIN_INDICATORS +# define INDICATOR_PIN_MODE PAL_MODE_OUTPUT_PUSHPULL +#else +# define INDICATOR_PIN_MODE PAL_MODE_OUTPUT_OPENDRAIN + +#endif + +#ifdef LED_NUM_LOCK_PIN + palSetLineMode(LED_NUM_LOCK_PIN, INDICATOR_PIN_MODE); +#endif +#ifdef LED_CAPS_LOCK_PIN + palSetLineMode(LED_CAPS_LOCK_PIN, INDICATOR_PIN_MODE); +#endif +#ifdef LED_SCROLL_LOCK_PIN + palSetLineMode(LED_SCROLL_LOCK_PIN, INDICATOR_PIN_MODE); +#endif +#ifdef LED_COMPOSE_PIN + palSetLineMode(LED_COMPOSE_PIN, INDICATOR_PIN_MODE); +#endif +#ifdef LED_KANA_PIN + palSetLineMode(LED_KANA_PIN, INDICATOR_PIN_MODE); +#endif +} + +bool led_update_kb(led_t led_state) { + bool res = led_update_user(led_state); + if(res) { + // writePin sets the pin high for 1 and low for 0. + // In this example the pins are inverted, setting + // it low/0 turns it on, and high/1 turns the LED off. + // This behavior depends on whether the LED is between the pin + // and VCC or the pin and GND. + writePin(LED_CAPS_LOCK_PIN, !led_state.caps_lock); + } + return res; +} diff --git a/keyboards/mode/m65s/m65s.h b/keyboards/mode/m65s/m65s.h new file mode 100644 index 000000000000..3c39f1a85e07 --- /dev/null +++ b/keyboards/mode/m65s/m65s.h @@ -0,0 +1,37 @@ +/* +Copyright 2020 Álvaro "Gondolindrim" Volpato + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +#define ___ KC_NO + +#define LAYOUT_all( \ + 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, K2D, K2E, K2F, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, K3F, \ + K40, K41, K42, 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, ___, K1E, K1F }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, ___, K2D, K2E, K2F }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, ___, K3E, K3F }, \ + { K40, K41, K42, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \ + { ___, ___, ___, ___, ___, ___, K56, ___, ___, ___, K5A, K5B, ___, K5D, K5E, K5F } \ +} diff --git a/keyboards/mode/m65s/mcuconf.h b/keyboards/mode/m65s/mcuconf.h new file mode 100644 index 000000000000..97f2ee51ee08 --- /dev/null +++ b/keyboards/mode/m65s/mcuconf.h @@ -0,0 +1,40 @@ +/* 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/acheron/austin/mcuconf.h -r platforms/chibios/GENERIC_STM32_F072XB/configs/mcuconf.h` + */ + +#pragma once + +#include_next +#undef STM32_PLLM_VALUE +#undef STM32_PLLN_VALUE +#undef STM32_PLLP_VALUE +#undef STM32_PLLQ_VALUE +#undef STM32_PPRE1 +#undef STM32_PPRE2 + +#define STM32_PLLM_VALUE 4 +#define STM32_PLLN_VALUE 168 +#define STM32_PLLP_VALUE 4 +#define STM32_PLLQ_VALUE 7 +#define STM32_PPRE1 STM32_PPRE1_DIV2 +#define STM32_PPRE2 STM32_PPRE2_DIV1 + +#undef STM32_I2C_USE_I2C1 +#define STM32_I2C_USE_I2C1 TRUE diff --git a/keyboards/mode/m65s/readme.md b/keyboards/mode/m65s/readme.md new file mode 100644 index 000000000000..92e0b8421ec7 --- /dev/null +++ b/keyboards/mode/m65s/readme.md @@ -0,0 +1,19 @@ +# Mode SixtyFive M65S + +![MODE65](https://raw.githubusercontent.com/Gondolindrim/file_hosting/main/mode_sixtyfive/Group_95_1024x1024.jpg) + +The M65S is the solderable PCB for the Mode SixtyFive keyboard, a sixty-five-percent high-end keyboard sold by [Mode Designs](https://shop.modedesigns.com/). + +* Keyboard Maintainer: [Gondolindrim](https://github.com/Gondolindrim) +* Hardware Supported: proprietary PCB using STM32F401RBT6 controller +* Hardware Availability: you can get a Mode SixtyFive as of today (August 2021) through the in-stock sales or special group buy editions at [Mode Designs](https://shop.modedesigns.com/) + +Make example for this keyboard (after setting up your build environment): + + make mode/m65s:default + +Flashing example for this keyboard: + + make mode/m65s:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/mode/m65s/rules.mk b/keyboards/mode/m65s/rules.mk new file mode 100644 index 000000000000..c603f06cad44 --- /dev/null +++ b/keyboards/mode/m65s/rules.mk @@ -0,0 +1,20 @@ +# MCU name +MCU = STM32F401 + +# 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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +EEPROM_DRIVER = i2c +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE -DDEBUG_EEPROM_OUTPUT=TRUE +STM32_BOOTLOADER_ADDRESS = 0x1FFF0000 diff --git a/keyboards/model_v/config.h b/keyboards/model_v/config.h new file mode 100644 index 000000000000..847599a369c2 --- /dev/null +++ b/keyboards/model_v/config.h @@ -0,0 +1,62 @@ +/* +Copyright 2021 Matthew Dias + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x6D64 +#define PRODUCT_ID 0x6D76 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Matthew Dias +#define PRODUCT model-v + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + +/* model-v PCB default pin-out */ +#define MATRIX_ROW_PINS { D3, D5, D6, D4 } +#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7 } + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/model_v/info.json b/keyboards/model_v/info.json new file mode 100644 index 000000000000..cdb0efd9517f --- /dev/null +++ b/keyboards/model_v/info.json @@ -0,0 +1,151 @@ +{ + "keyboard_name": "model-v", + "maintainer": "matthewdias", + "layouts": { + "LAYOUT_split": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "Q", "x": 1, "y": 0 }, + { "label": "W", "x": 2, "y": 0 }, + { "label": "E", "x": 3, "y": 0 }, + { "label": "R", "x": 4, "y": 0 }, + { "label": "T", "x": 5, "y": 0 }, + { "label": "Y", "x": 6, "y": 0 }, + { "label": "U", "x": 7, "y": 0 }, + { "label": "I", "x": 8, "y": 0 }, + { "label": "O", "x": 9, "y": 0 }, + { "label": "P", "x": 10, "y": 0 }, + { "label": "Backspace", "x": 11, "y": 0, "w": 1.75 }, + { "label": "Tab", "x": 0, "y": 1, "w": 1.25 }, + { "label": "A", "x": 1.25, "y": 1 }, + { "label": "S", "x": 2.25, "y": 1 }, + { "label": "D", "x": 3.25, "y": 1 }, + { "label": "F", "x": 4.25, "y": 1 }, + { "label": "G", "x": 5.25, "y": 1 }, + { "label": "H", "x": 6.25, "y": 1 }, + { "label": "J", "x": 7.25, "y": 1 }, + { "label": "K", "x": 8.25, "y": 1 }, + { "label": "L", "x": 9.25, "y": 1 }, + { "label": ";", "x": 10.25, "y": 1 }, + { "label": "Enter", "x": 11.25, "y": 1, "w": 1.5 }, + { "label": "Shift", "x": 0, "y": 2, "w": 1.75 }, + { "label": "Z", "x": 1.75, "y": 2 }, + { "label": "X", "x": 2.75, "y": 2 }, + { "label": "C", "x": 3.75, "y": 2 }, + { "label": "V", "x": 4.75, "y": 2 }, + { "label": "B", "x": 5.75, "y": 2 }, + { "label": "N", "x": 6.75, "y": 2 }, + { "label": "M", "x": 7.75, "y": 2 }, + { "label": "<", "x": 8.75, "y": 2 }, + { "label": ">", "x": 9.75, "y": 2 }, + { "label": "/", "x": 10.75, "y": 2 }, + { "label": "Shift", "x": 11.75, "y": 2 }, + { "label": "Ctrl", "x": 0, "y": 3, "w": 1.25 }, + { "label": "Alt", "x": 1.25, "y": 3 }, + { "label": "Meta", "x": 2.25, "y": 3, "w": 1.25 }, + { "label": "Raise", "x": 3.5, "y": 3 }, + { "x": 4.5, "y": 3, "w": 2.25 }, + { "x": 6.75, "y": 3, "w": 2 }, + { "label": "Lower", "x": 8.75, "y": 3 }, + { "label": "Meta", "x": 9.75, "y": 3 }, + { "label": "Alt", "x": 10.75, "y": 3 }, + { "label": "Ctrl", "x": 11.75, "y": 3 } + ] + }, + "LAYOUT_2x3u": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "Q", "x": 1, "y": 0 }, + { "label": "W", "x": 2, "y": 0 }, + { "label": "E", "x": 3, "y": 0 }, + { "label": "R", "x": 4, "y": 0 }, + { "label": "T", "x": 5, "y": 0 }, + { "label": "Y", "x": 6, "y": 0 }, + { "label": "U", "x": 7, "y": 0 }, + { "label": "I", "x": 8, "y": 0 }, + { "label": "O", "x": 9, "y": 0 }, + { "label": "P", "x": 10, "y": 0 }, + { "label": "Backspace", "x": 11, "y": 0, "w": 1.75 }, + { "label": "Tab", "x": 0, "y": 1, "w": 1.25 }, + { "label": "A", "x": 1.25, "y": 1 }, + { "label": "S", "x": 2.25, "y": 1 }, + { "label": "D", "x": 3.25, "y": 1 }, + { "label": "F", "x": 4.25, "y": 1 }, + { "label": "G", "x": 5.25, "y": 1 }, + { "label": "H", "x": 6.25, "y": 1 }, + { "label": "J", "x": 7.25, "y": 1 }, + { "label": "K", "x": 8.25, "y": 1 }, + { "label": "L", "x": 9.25, "y": 1 }, + { "label": ";", "x": 10.25, "y": 1 }, + { "label": "Enter", "x": 11.25, "y": 1, "w": 1.5 }, + { "label": "Shift", "x": 0, "y": 2, "w": 1.75 }, + { "label": "Z", "x": 1.75, "y": 2 }, + { "label": "X", "x": 2.75, "y": 2 }, + { "label": "C", "x": 3.75, "y": 2 }, + { "label": "V", "x": 4.75, "y": 2 }, + { "label": "B", "x": 5.75, "y": 2 }, + { "label": "N", "x": 6.75, "y": 2 }, + { "label": "M", "x": 7.75, "y": 2 }, + { "label": "<", "x": 8.75, "y": 2 }, + { "label": ">", "x": 9.75, "y": 2 }, + { "label": "/", "x": 10.75, "y": 2 }, + { "label": "Shift", "x": 11.75, "y": 2 }, + { "label": "Ctrl", "x": 0, "y": 3, "w": 1.25 }, + { "label": "Alt", "x": 1.25, "y": 3 }, + { "label": "Meta", "x": 2.25, "y": 3, "w": 1.25 }, + { "x": 3.5, "y": 3, "w": 3 }, + { "x": 6.5, "y": 3, "w": 3 }, + { "label": "Meta", "x": 9.5, "y": 3, "w": 1.25 }, + { "label": "Alt", "x": 10.75, "y": 3 }, + { "label": "Ctrl", "x": 11.75, "y": 3 } + ] + }, + "LAYOUT_bigbar": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "Q", "x": 1, "y": 0 }, + { "label": "W", "x": 2, "y": 0 }, + { "label": "E", "x": 3, "y": 0 }, + { "label": "R", "x": 4, "y": 0 }, + { "label": "T", "x": 5, "y": 0 }, + { "label": "Y", "x": 6, "y": 0 }, + { "label": "U", "x": 7, "y": 0 }, + { "label": "I", "x": 8, "y": 0 }, + { "label": "O", "x": 9, "y": 0 }, + { "label": "P", "x": 10, "y": 0 }, + { "label": "Backspace", "x": 11, "y": 0, "w": 1.75 }, + { "label": "Tab", "x": 0, "y": 1, "w": 1.25 }, + { "label": "A", "x": 1.25, "y": 1 }, + { "label": "S", "x": 2.25, "y": 1 }, + { "label": "D", "x": 3.25, "y": 1 }, + { "label": "F", "x": 4.25, "y": 1 }, + { "label": "G", "x": 5.25, "y": 1 }, + { "label": "H", "x": 6.25, "y": 1 }, + { "label": "J", "x": 7.25, "y": 1 }, + { "label": "K", "x": 8.25, "y": 1 }, + { "label": "L", "x": 9.25, "y": 1 }, + { "label": ";", "x": 10.25, "y": 1 }, + { "label": "Enter", "x": 11.25, "y": 1, "w": 1.5 }, + { "label": "Shift", "x": 0, "y": 2, "w": 1.75 }, + { "label": "Z", "x": 1.75, "y": 2 }, + { "label": "X", "x": 2.75, "y": 2 }, + { "label": "C", "x": 3.75, "y": 2 }, + { "label": "V", "x": 4.75, "y": 2 }, + { "label": "B", "x": 5.75, "y": 2 }, + { "label": "N", "x": 6.75, "y": 2 }, + { "label": "M", "x": 7.75, "y": 2 }, + { "label": "<", "x": 8.75, "y": 2 }, + { "label": ">", "x": 9.75, "y": 2 }, + { "label": "/", "x": 10.75, "y": 2 }, + { "label": "Shift", "x": 11.75, "y": 2 }, + { "label": "Ctrl", "x": 0, "y": 3, "w": 1.25 }, + { "label": "Alt", "x": 1.25, "y": 3 }, + { "label": "Meta", "x": 2.25, "y": 3, "w": 1.25 }, + { "x": 3.5, "y": 3, "w": 6.25 }, + { "label": "Meta", "x": 9.75, "y": 3 }, + { "label": "Alt", "x": 10.75, "y": 3 }, + { "label": "Ctrl", "x": 11.75, "y": 3 } + ] + } + } +} diff --git a/keyboards/model_v/keymaps/default/keymap.c b/keyboards/model_v/keymaps/default/keymap.c new file mode 100644 index 000000000000..d64a12b35fd7 --- /dev/null +++ b/keyboards/model_v/keymaps/default/keymap.c @@ -0,0 +1,41 @@ +/* +Copyright 2021 Matthew Dias + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_split( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_RSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, + KC_LCTL, KC_LALT, KC_LGUI, MO(2), KC_SPC, KC_SPC, MO(1), KC_RGUI, KC_RALT, KC_RCTL + ), + + [1] = LAYOUT_split( + KC_GRV, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_LBRC, KC_RBRC, KC_TRNS, + KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_QUOT, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_SLSH, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT_split( + KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSLS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/model_v/keymaps/via/keymap.c b/keyboards/model_v/keymaps/via/keymap.c new file mode 100644 index 000000000000..ae16e72b207d --- /dev/null +++ b/keyboards/model_v/keymaps/via/keymap.c @@ -0,0 +1,48 @@ +/* +Copyright 2021 Matthew Dias + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_split( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_RSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, + KC_LCTL, KC_LALT, KC_LGUI, MO(2), KC_SPC, KC_SPC, MO(1), KC_RGUI, KC_RALT, KC_RCTL + ), + + [1] = LAYOUT_split( + KC_GRV, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_LBRC, KC_RBRC, KC_TRNS, + KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_QUOT, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_SLSH, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT_split( + KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSLS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT_split( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSLS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/model_v/keymaps/via/rules.mk b/keyboards/model_v/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/model_v/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/model_v/model_v.c b/keyboards/model_v/model_v.c new file mode 100644 index 000000000000..a65738d97b51 --- /dev/null +++ b/keyboards/model_v/model_v.c @@ -0,0 +1,18 @@ +/* +Copyright 2021 Matthew Dias + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "model_v.h" diff --git a/keyboards/model_v/model_v.h b/keyboards/model_v/model_v.h new file mode 100644 index 000000000000..6f3a96080e57 --- /dev/null +++ b/keyboards/model_v/model_v.h @@ -0,0 +1,61 @@ +/* +Copyright 2021 Matthew Dias + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +#define LAYOUT_split( \ + 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 LAYOUT_2x3u( \ + 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, K35, K37, 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, XXX, XXX, K35, XXX, K37, XXX, K39, K3A, K3B } \ +} + +#define LAYOUT_bigbar( \ + 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, K35, 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, XXX, XXX, K35, XXX, XXX, XXX, K39, K3A, K3B } \ +} diff --git a/keyboards/model_v/readme.md b/keyboards/model_v/readme.md new file mode 100644 index 000000000000..17d12d810856 --- /dev/null +++ b/keyboards/model_v/readme.md @@ -0,0 +1,20 @@ +# model-v + +![](https://i.imgur.com/uqL3HSWl.png) + +A minivan case compatible PCB with flex cuts. + +- Keyboard Maintainer: matthewdias +- Hardware Supported: model-v pcb + +To reset the keyboard into bootloader mode, press the reset switch on the underside. + +Make example for this keyboard (after setting up your build environment): + + make model_v:default + +Flashing example for this keyboard ([using the command line](https://docs.qmk.fm/#/newbs_flashing?id=flash-your-keyboard-from-the-command-line)): + + make model_v:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/model_v/rules.mk b/keyboards/model_v/rules.mk new file mode 100644 index 000000000000..ef61685f7c09 --- /dev/null +++ b/keyboards/model_v/rules.mk @@ -0,0 +1,19 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 diff --git a/keyboards/mokey/README.md b/keyboards/mokey/README.md new file mode 100644 index 000000000000..f66e1ed71afd --- /dev/null +++ b/keyboards/mokey/README.md @@ -0,0 +1,7 @@ +# Mokey PCB + +This is a series of PCB +* Mokey63 multi-column,The chip is ATmega32U4 +* Mokey64 The chip is ATmega32U4 + + diff --git a/keyboards/mokey/ginkgo65/config.h b/keyboards/mokey/ginkgo65/config.h new file mode 100644 index 000000000000..36609892678a --- /dev/null +++ b/keyboards/mokey/ginkgo65/config.h @@ -0,0 +1,41 @@ +/* +Copyright 2021 Kyle McCreery +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x6653 +#define PRODUCT_ID 0x3365 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Mokey +#define PRODUCT ginkgo 65 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 16 + /* 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */ +#define MATRIX_ROW_PINS { F7, B7, F5, F1, B0 } +#define MATRIX_COL_PINS { C7, F6, B2, F4, B3, E6, D0, D1, D2, D3, D5, D4, D6, D7, B4, B1 } +#define UNUSED_PINS +#define DIODE_DIRECTION COL2ROW + +#define BACKLIGHT_PIN B6 +#define BACKLIGHT_LEVELS 6 +#define BACKLIGHT_CAPS_LOCK +#define BACKLIGHT_BREATHING +#define BREATHING_PERIOD 5 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 diff --git a/keyboards/mokey/ginkgo65/ginkgo65.c b/keyboards/mokey/ginkgo65/ginkgo65.c new file mode 100644 index 000000000000..4ab3aae51f13 --- /dev/null +++ b/keyboards/mokey/ginkgo65/ginkgo65.c @@ -0,0 +1,16 @@ +/* Copyright 2021 Ocean + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "ginkgo65.h" + diff --git a/keyboards/mokey/ginkgo65/ginkgo65.h b/keyboards/mokey/ginkgo65/ginkgo65.h new file mode 100644 index 000000000000..1594e5c793a5 --- /dev/null +++ b/keyboards/mokey/ginkgo65/ginkgo65.h @@ -0,0 +1,216 @@ +/* Copyright 2021 Ocean + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +/*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│ 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 │ k44 │k49 │k4A │ │k4C│k4D│k4E│ + * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 +*/ +#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, 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, k44, k49, k4A, k4C, k4D, k4E \ +) { \ + { 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, k1D, k1E, XXX }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, k2D, k2E, XXX }, \ + { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, XXX }, \ + { k40, k41, k42, XXX, k44, XXX, XXX, XXX, XXX, k49, k4A, XXX, k4C, k4D, k4E, XXX }, \ +} + +/*LAYOUT_65_ansi_blocker_split_bs + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │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 │ k44 │k49 │k4A │ │k4C│k4D│k4E│ + * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 +*/ +#define LAYOUT_65_ansi_blocker_split_bs( \ + 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, k44, 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, XXX }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, k2D, k2E, XXX }, \ + { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, XXX }, \ + { k40, k41, k42, XXX, k44, XXX, XXX, XXX, XXX, k49, k4A, XXX, k4C, k4D, k4E, XXX }, \ +} + +/*LAYOUT_65_ansi_blocker_tsangan_split_bs + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │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 │ k44 │k4A │ │k4C│k4D│k4E│ + * └─────┴───┴─────┴───────────────────────────┴─────┘ └───┴───┴───┘ + 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 +*/ +#define LAYOUT_65_ansi_blocker_tsangan_split_bs( \ + 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, k44, 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, XXX }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, k2D, k2E, XXX }, \ + { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, XXX }, \ + { k40, k41, k42, XXX, k44, XXX, XXX, XXX, XXX, XXX, k4A, XXX, k4C, k4D, k4E, XXX }, \ +} + +/*LAYOUT_65_iso_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│ K2D │k1E│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ├───┤ + * │ k20 │k21│k22│k23│k24│k25│k26│k27│k28│k29│k2A│k2B│k1D│ │k2E│ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤ + * │k30 │k31│k32│k33│k34│k35│k36│k37│k38│k39│k3A│k3B│ k3C │k3D│k3E│ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │k40 │k41 │k42 │ k44 │k49 │k4A │ │k4C│k4D│k4E│ + * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 +*/ +#define LAYOUT_65_iso_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, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k1D, k2D, k2E, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \ + k40, k41, k42, k44, k49, k4A, k4C, k4D, k4E \ +) { \ + { 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, k1D, k1E, XXX }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, k2D, k2E, XXX }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, XXX }, \ + { k40, k41, k42, XXX, k44, XXX, XXX, XXX, XXX, k49, k4A, XXX, k4C, k4D, k4E, XXX }, \ +} + +/*LAYOUT_65_iso_blocker_split_bs + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │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│ K2D │k1E│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ├───┤ + * │ k20 │k21│k22│k23│k24│k25│k26│k27│k28│k29│k2A│k2B│k1D│ │k2E│ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤ + * │k30 │k31│k32│k33│k34│k35│k36│k37│k38│k39│k3A│k3B│ k3C │k3D│k3E│ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │k40 │k41 │k42 │ k44 │k49 │k4A │ │k4C│k4D│k4E│ + * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 +*/ +#define LAYOUT_65_iso_blocker_split_bs( \ + 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, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k1D, k2D, k2E, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \ + k40, k41, k42, k44, 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, XXX }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, k2D, k2E, XXX }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, XXX }, \ + { k40, k41, k42, XXX, k44, XXX, XXX, XXX, XXX, k49, k4A, XXX, k4C, k4D, k4E, XXX }, \ +} + +/*LAYOUT_65_iso_blocker_tsangan_split_bs + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │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│ K2D │k1E│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ├───┤ + * │ k20 │k21│k22│k23│k24│k25│k26│k27│k28│k29│k2A│k2B│k1D│ │k2E│ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤ + * │k30 │k31│k32│k33│k34│k35│k36│k37│k38│k39│k3A│k3B│ k3C │k3D│k3E│ + * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬─┬───┼───┼───┤ + * │k40 │k41│k42 │ k44 │k4A │ │k4C│k4D│k4E│ + * └─────┴───┴─────┴───────────────────────────┴─────┘ └───┴───┴───┘ + 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 +*/ +#define LAYOUT_65_iso_blocker_tsangan_split_bs( \ + 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, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k1D, k2D, k2E, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \ + k40, k41, k42, k44, 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, XXX }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, k2D, k2E, XXX }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, XXX }, \ + { k40, k41, k42, XXX, k44, XXX, XXX, XXX, XXX, XXX, k4A, XXX, k4C, k4D, k4E, XXX }, \ +} + +/*LAYOUT_all + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │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 │k31│k32│k33│k34│k35│k36│k37│k38│k39│k3A│k3B│ k3C │k3D│k3E│ + * ├────┼───┴┬──┴─┬─┴───┴──┬┴───┼───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │k40 │k41 │k42 │k43 │K44 │ K46 │K49 │k4A │ │k4C│k4D│k4E│ + * └────┴────┴────┴────────┴────┴──────────┴────┴────┘ └───┴───┴───┘ + 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 +*/ +#define LAYOUT_all( \ + 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, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \ + k40, k41, k42, K43, k44, 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, XXX }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, k2D, k2E, XXX }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, XXX }, \ + { k40, k41, k42, K43, k44, XXX, K46, XXX, XXX, XXX, k4A, XXX, k4C, k4D, k4E, XXX }, \ +} diff --git a/keyboards/mokey/ginkgo65/info.json b/keyboards/mokey/ginkgo65/info.json new file mode 100644 index 000000000000..080d97feeb0d --- /dev/null +++ b/keyboards/mokey/ginkgo65/info.json @@ -0,0 +1,544 @@ +{ + "keyboard_name": "ginkgo65", + "url": "", + "maintainer": "rhmokey", + "layout_aliases": { + "LAYOUT": "LAYOUT_65_ansi_blocker" + }, + "layouts": { + "LAYOUT_65_ansi_blocker": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2@", "x":2, "y":0}, + {"label":"3#", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":7, "y":0}, + {"label":"8*", "x":8, "y":0}, + {"label":"9(", "x":9, "y":0}, + {"label":"0)", "x":10, "y":0}, + {"label":"-_", "x":11, "y":0}, + {"label":"=+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + {"label":"Insert", "x":15, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"[{", "x":11.5, "y":1}, + {"label":"]}", "x":12.5, "y":1}, + {"label":"\\|", "x":13.5, "y":1, "w":1.5}, + {"label":"Delete", "x":15, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";:", "x":10.75, "y":2}, + {"label":"'\"", "x":11.75, "y":2}, + {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + {"label":"Page Up", "x":15, "y":2}, + + {"label":"Shift", "x":0, "y":3, "w":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",<", "x":9.25, "y":3}, + {"label":".>", "x":10.25, "y":3}, + {"label":"/?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"\u2191", "x":14, "y":3}, + {"label":"Page Down", "x":15, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"GUI", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space", "x":3.75, "y":4, "w":6.25}, + {"label":"Alt", "x":10, "y":4, "w":1.25}, + {"label":"Fn", "x":11.25, "y":4, "w":1.25}, + {"label":"\u2190", "x":13, "y":4}, + {"label":"\u2193", "x":14, "y":4}, + {"label":"\u2192", "x":15, "y":4} + ] + }, + "LAYOUT_65_ansi_blocker_split_bs": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2@", "x":2, "y":0}, + {"label":"3#", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":7, "y":0}, + {"label":"8*", "x":8, "y":0}, + {"label":"9(", "x":9, "y":0}, + {"label":"0)", "x":10, "y":0}, + {"label":"-_", "x":11, "y":0}, + {"label":"=+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0}, + {"label":"Backspace", "x":14, "y":0}, + {"label":"Insert", "x":15, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"[{", "x":11.5, "y":1}, + {"label":"]}", "x":12.5, "y":1}, + {"label":"\\|", "x":13.5, "y":1, "w":1.5}, + {"label":"Delete", "x":15, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";:", "x":10.75, "y":2}, + {"label":"'\"", "x":11.75, "y":2}, + {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + {"label":"Page Up", "x":15, "y":2}, + + {"label":"Shift", "x":0, "y":3, "w":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",<", "x":9.25, "y":3}, + {"label":".>", "x":10.25, "y":3}, + {"label":"/?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"\u2191", "x":14, "y":3}, + {"label":"Page Down", "x":15, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"GUI", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space", "x":3.75, "y":4, "w":6.25}, + {"label":"Alt", "x":10, "y":4, "w":1.25}, + {"label":"Fn", "x":11.25, "y":4, "w":1.25}, + {"label":"\u2190", "x":13, "y":4}, + {"label":"\u2193", "x":14, "y":4}, + {"label":"\u2192", "x":15, "y":4} + ] + }, + "LAYOUT_65_ansi_blocker_tsangan_split_bs": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2@", "x":2, "y":0}, + {"label":"3#", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":7, "y":0}, + {"label":"8*", "x":8, "y":0}, + {"label":"9(", "x":9, "y":0}, + {"label":"0)", "x":10, "y":0}, + {"label":"-_", "x":11, "y":0}, + {"label":"=+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0}, + {"label":"Backspace", "x":14, "y":0}, + {"label":"Insert", "x":15, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"[{", "x":11.5, "y":1}, + {"label":"]}", "x":12.5, "y":1}, + {"label":"\\|", "x":13.5, "y":1, "w":1.5}, + {"label":"Delete", "x":15, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";:", "x":10.75, "y":2}, + {"label":"'\"", "x":11.75, "y":2}, + {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + {"label":"Page Up", "x":15, "y":2}, + + {"label":"Shift", "x":0, "y":3, "w":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",<", "x":9.25, "y":3}, + {"label":".>", "x":10.25, "y":3}, + {"label":"/?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"\u2191", "x":14, "y":3}, + {"label":"Page Down", "x":15, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.5}, + {"label":"GUI", "x":1.5, "y":4}, + {"label":"Alt", "x":2.5, "y":4, "w":1.5}, + {"label":"Space", "x":4, "y":4, "w":7}, + {"label":"Fn", "x":11, "y":4, "w":1.5}, + {"label":"\u2190", "x":13, "y":4}, + {"label":"\u2193", "x":14, "y":4}, + {"label":"\u2192", "x":15, "y":4} + ] + }, + "LAYOUT_65_iso_blocker":{ + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2\"", "x":2, "y":0}, + {"label":"3\u00a3", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":7, "y":0}, + {"label":"8*", "x":8, "y":0}, + {"label":"9(", "x":9, "y":0}, + {"label":"0)", "x":10, "y":0}, + {"label":"-_", "x":11, "y":0}, + {"label":"=+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + {"label":"Insert", "x":15, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"[{", "x":11.5, "y":1}, + {"label":"]}", "x":12.5, "y":1}, + {"label":"Delete", "x":15, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";:", "x":10.75, "y":2}, + {"label":"'@", "x":11.75, "y":2}, + {"label":"#~", "x":12.75, "y":2}, + {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, + {"label":"Page Up", "x":15, "y":2}, + + {"label":"Shift", "x":0, "y":3, "w":1.25}, + {"label":"\\|", "x":1.25, "y":3}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",<", "x":9.25, "y":3}, + {"label":".>", "x":10.25, "y":3}, + {"label":"/?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"\u2191", "x":14, "y":3}, + {"label":"Page Down", "x":15, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"GUI", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space", "x":3.75, "y":4, "w":6.25}, + {"label":"Alt", "x":10, "y":4, "w":1.25}, + {"label":"Fn", "x":11.25, "y":4, "w":1.25}, + {"label":"\u2190", "x":13, "y":4}, + {"label":"\u2193", "x":14, "y":4}, + {"label":"\u2192", "x":15, "y":4} + ] + }, + "LAYOUT_65_iso_blocker_split_bs":{ + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2\"", "x":2, "y":0}, + {"label":"3\u00a3", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":7, "y":0}, + {"label":"8*", "x":8, "y":0}, + {"label":"9(", "x":9, "y":0}, + {"label":"0)", "x":10, "y":0}, + {"label":"-_", "x":11, "y":0}, + {"label":"=+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0}, + {"label":"Backspace", "x":14, "y":0}, + {"label":"Insert", "x":15, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"[{", "x":11.5, "y":1}, + {"label":"]}", "x":12.5, "y":1}, + {"label":"Delete", "x":15, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";:", "x":10.75, "y":2}, + {"label":"'@", "x":11.75, "y":2}, + {"label":"#~", "x":12.75, "y":2}, + {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, + {"label":"Page Up", "x":15, "y":2}, + + {"label":"Shift", "x":0, "y":3, "w":1.25}, + {"label":"\\|", "x":1.25, "y":3}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",<", "x":9.25, "y":3}, + {"label":".>", "x":10.25, "y":3}, + {"label":"/?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"\u2191", "x":14, "y":3}, + {"label":"Page Down", "x":15, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"GUI", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space", "x":3.75, "y":4, "w":6.25}, + {"label":"Alt", "x":10, "y":4, "w":1.25}, + {"label":"Fn", "x":11.25, "y":4, "w":1.25}, + {"label":"\u2190", "x":13, "y":4}, + {"label":"\u2193", "x":14, "y":4}, + {"label":"\u2192", "x":15, "y":4} + ] + }, + "LAYOUT_65_iso_blocker_tsangan_split_bs":{ + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2\"", "x":2, "y":0}, + {"label":"3\u00a3", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":7, "y":0}, + {"label":"8*", "x":8, "y":0}, + {"label":"9(", "x":9, "y":0}, + {"label":"0)", "x":10, "y":0}, + {"label":"-_", "x":11, "y":0}, + {"label":"=+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0}, + {"label":"Backspace", "x":14, "y":0}, + {"label":"Insert", "x":15, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"[{", "x":11.5, "y":1}, + {"label":"]}", "x":12.5, "y":1}, + {"label":"Delete", "x":15, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";:", "x":10.75, "y":2}, + {"label":"'@", "x":11.75, "y":2}, + {"label":"#~", "x":12.75, "y":2}, + {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, + {"label":"Page Up", "x":15, "y":2}, + + {"label":"Shift", "x":0, "y":3, "w":1.25}, + {"label":"\\|", "x":1.25, "y":3}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",<", "x":9.25, "y":3}, + {"label":".>", "x":10.25, "y":3}, + {"label":"/?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"\u2191", "x":14, "y":3}, + {"label":"Page Down", "x":15, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.5}, + {"label":"GUI", "x":1.5, "y":4}, + {"label":"Alt", "x":2.5, "y":4, "w":1.5}, + {"label":"Space", "x":4, "y":4, "w":7}, + {"label":"Fn", "x":11, "y":4, "w":1.5}, + {"label":"\u2190", "x":13, "y":4}, + {"label":"\u2193", "x":14, "y":4}, + {"label":"\u2192", "x":15, "y":4} + ] + }, + "LAYOUT_all":{ + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2@", "x":2, "y":0}, + {"label":"3#", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":7, "y":0}, + {"label":"8*", "x":8, "y":0}, + {"label":"9(", "x":9, "y":0}, + {"label":"0)", "x":10, "y":0}, + {"label":"-_", "x":11, "y":0}, + {"label":"=+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0}, + {"label":"Backspace", "x":14, "y":0}, + {"label":"Insert", "x":15, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"[{", "x":11.5, "y":1}, + {"label":"]}", "x":12.5, "y":1}, + {"label":"\\|", "x":13.5, "y":1, "w":1.5}, + {"label":"Delete", "x":15, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";:", "x":10.75, "y":2}, + {"label":"'\"", "x":11.75, "y":2}, + {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + {"label":"Page Up", "x":15, "y":2}, + + {"label":"Shift", "x":0, "y":3, "w":1.25}, + {"label":"\\|", "x":1.25, "y":3}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",<", "x":9.25, "y":3}, + {"label":".>", "x":10.25, "y":3}, + {"label":"/?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"\u2191", "x":14, "y":3}, + {"label":"Page Down", "x":15, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"GUI", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space", "x":3.75, "y":4, "w":2.25}, + {"label":"Space", "x":6, "y":4, "w":1.25}, + {"label":"Space", "x":7.25, "y":4, "w":2.75}, + {"label":"Alt", "x":10, "y":4, "w":1.25}, + {"label":"Fn", "x":11.25, "y":4, "w":1.25}, + {"label":"\u2190", "x":13, "y":4}, + {"label":"\u2193", "x":14, "y":4}, + {"label":"\u2192", "x":15, "y":4} + ] + } + } +} diff --git a/keyboards/mokey/ginkgo65/keymaps/default/keymap.c b/keyboards/mokey/ginkgo65/keymaps/default/keymap.c new file mode 100644 index 000000000000..9ac7dc18ba9d --- /dev/null +++ b/keyboards/mokey/ginkgo65/keymaps/default/keymap.c @@ -0,0 +1,51 @@ +/* Copyright 2021 Ocean + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ + * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Bspace │Ins│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │Del│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │PgU│ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + * │ LShift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │RShift│ ↑ │PgD│ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │LCtl│LGui│LAlt│ Space │RAlt│ Fn │ │ ← │ ↓ │ → │ + * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + */ + + [0] = LAYOUT_65_ansi_blocker( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_65_ansi_blocker( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, + BL_TOGG, BL_STEP, BL_DEC, BL_INC, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; diff --git a/keyboards/mokey/ginkgo65/keymaps/via/keymap.c b/keyboards/mokey/ginkgo65/keymaps/via/keymap.c new file mode 100644 index 000000000000..28fdc1a9b256 --- /dev/null +++ b/keyboards/mokey/ginkgo65/keymaps/via/keymap.c @@ -0,0 +1,51 @@ +/* Copyright 2021 Ocean + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_65_ansi_blocker( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_65_ansi_blocker( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, + BL_TOGG, BL_STEP, BL_DEC, BL_INC, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [2] = LAYOUT_65_ansi_blocker( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [3] = LAYOUT_65_ansi_blocker( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; diff --git a/keyboards/mokey/ginkgo65/keymaps/via/rules.mk b/keyboards/mokey/ginkgo65/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/mokey/ginkgo65/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/mokey/ginkgo65/readme.md b/keyboards/mokey/ginkgo65/readme.md new file mode 100644 index 000000000000..8caa629aefe4 --- /dev/null +++ b/keyboards/mokey/ginkgo65/readme.md @@ -0,0 +1,21 @@ +# Ginkgo65 Multi PCB + +![Ginkgo65](https://raw.githubusercontent.com/rhmokey/123.github.io/main/2021/08/15/hello-world/ginkgo65.png) + +Support Atmega32u4 keyboard,With a variety of configurations + +* Keyboard Maintainer: [mokey](https://github.com/rhmokey) +* Hardware Supported: Atmega32u4 +## Bootloader +* **Physical reset button**: Short press the button on the back of the PCB to enter the Bootloader and flash the firmware + + +Make example for this keyboard (after setting up your build environment): + + make mokey/ginkgo65:default + +Flashing example for this keyboard: + + make mokey/ginkgo65: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). \ No newline at end of file diff --git a/keyboards/mokey/ginkgo65/rules.mk b/keyboards/mokey/ginkgo65/rules.mk new file mode 100644 index 000000000000..4beb736aa61f --- /dev/null +++ b/keyboards/mokey/ginkgo65/rules.mk @@ -0,0 +1,21 @@ +# 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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +LAYOUTS = 65_ansi_blocker 65_ansi_blocker_split_bs 65_iso_blocker 65_iso_blocker_split_bs diff --git a/keyboards/mokey/mokey63/config.h b/keyboards/mokey/mokey63/config.h new file mode 100644 index 000000000000..504a27414311 --- /dev/null +++ b/keyboards/mokey/mokey63/config.h @@ -0,0 +1,40 @@ +/* +Copyright 2021 Kyle McCreery +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x6653 +#define PRODUCT_ID 0x063A +#define DEVICE_VER 0x0001 +#define MANUFACTURER rhmokey +#define PRODUCT MOKEY63 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +#define MATRIX_ROW_PINS { B5, B6, B2, B3, B1 } +#define MATRIX_COL_PINS { C7, F6, F5, F4, F1, E6, D0, D1, D2, D3, D5, D4, D6, D7, B4 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + + diff --git a/keyboards/mokey/mokey63/info.json b/keyboards/mokey/mokey63/info.json new file mode 100644 index 000000000000..476667dfbc34 --- /dev/null +++ b/keyboards/mokey/mokey63/info.json @@ -0,0 +1,152 @@ +{ + "keyboard_name": "Mokey63", + "url": "", + "maintainer": "mokey", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"k00", "x":0, "y":0}, + {"label":"k01", "x":1, "y":0}, + {"label":"k02", "x":2, "y":0}, + {"label":"k03", "x":3, "y":0}, + {"label":"k04", "x":4, "y":0}, + {"label":"k05", "x":5, "y":0}, + {"label":"k06", "x":6, "y":0}, + {"label":"k07", "x":7, "y":0}, + {"label":"k08", "x":8, "y":0}, + {"label":"k09", "x":9, "y":0}, + {"label":"k0a", "x":10, "y":0}, + {"label":"k0b", "x":11, "y":0}, + {"label":"k0c", "x":12, "y":0}, + {"label":"k0e", "x":13, "y":0, "w":2}, + + {"label":"k10", "x":0, "y":1, "w":1.5}, + {"label":"k12", "x":1.5, "y":1}, + {"label":"k13", "x":2.5, "y":1}, + {"label":"k14", "x":3.5, "y":1}, + {"label":"k15", "x":4.5, "y":1}, + {"label":"k16", "x":5.5, "y":1}, + {"label":"k17", "x":6.5, "y":1}, + {"label":"k18", "x":7.5, "y":1}, + {"label":"k19", "x":8.5, "y":1}, + {"label":"k1a", "x":9.5, "y":1}, + {"label":"k1b", "x":10.5, "y":1}, + {"label":"k1c", "x":11.5, "y":1}, + {"label":"k1d", "x":12.5, "y":1}, + {"label":"k1e", "x":13.5, "y":1, "w":1.5}, + + {"label":"k20", "x":0, "y":2, "w":1.75}, + {"label":"k22", "x":1.75, "y":2}, + {"label":"k23", "x":2.75, "y":2}, + {"label":"k24", "x":3.75, "y":2}, + {"label":"k25", "x":4.75, "y":2}, + {"label":"k26", "x":5.75, "y":2}, + {"label":"k27", "x":6.75, "y":2}, + {"label":"k28", "x":7.75, "y":2}, + {"label":"k29", "x":8.75, "y":2}, + {"label":"k2a", "x":9.75, "y":2}, + {"label":"k2b", "x":10.75, "y":2}, + {"label":"k2c", "x":11.75, "y":2}, + {"label":"k2d", "x":12.75, "y":2, "w":2.25}, + + {"label":"k30", "x":0, "y":3, "w":2.25}, + {"label":"k32", "x":2, "y":3}, + {"label":"k33", "x":3, "y":3}, + {"label":"k34", "x":4, "y":3}, + {"label":"k35", "x":5, "y":3}, + {"label":"k36", "x":6, "y":3}, + {"label":"k37", "x":7, "y":3}, + {"label":"k38", "x":8, "y":3}, + {"label":"k39", "x":9, "y":3}, + {"label":"k3a", "x":10, "y":3}, + {"label":"k3c", "x":11, "y":3, "w":1.75}, + {"label":"k3d", "x":12, "y":3}, + {"label":"k3e", "x":13, "y":3}, + + {"label":"k40", "x":0, "y":4, "w":1.25}, + {"label":"k41", "x":1.25, "y":4, "w":1.25}, + {"label":"k42", "x":2.5, "y":4, "w":1.25}, + {"label":"k46", "x":3.75, "y":4, "w":6.25}, + {"label":"k4a", "x":10, "y":4}, + {"label":"k4b", "x":11, "y":4}, + {"label":"k4c", "x":12, "y":4}, + {"label":"k4d", "x":13, "y":4}, + {"label":"k4e", "x":14, "y":4} + ] + }, + "LAYOUT_division":{ + "layout": [ + {"label":"k00", "x":0, "y":0}, + {"label":"k01", "x":1, "y":0}, + {"label":"k02", "x":2, "y":0}, + {"label":"k03", "x":3, "y":0}, + {"label":"k04", "x":4, "y":0}, + {"label":"k05", "x":5, "y":0}, + {"label":"k06", "x":6, "y":0}, + {"label":"k07", "x":7, "y":0}, + {"label":"k08", "x":8, "y":0}, + {"label":"k09", "x":9, "y":0}, + {"label":"k0a", "x":10, "y":0}, + {"label":"k0b", "x":11, "y":0}, + {"label":"k0c", "x":12, "y":0}, + {"label":"k0d", "x":13, "y":0}, + {"label":"k0e", "x":14, "y":0}, + + {"label":"k10", "x":0, "y":1, "w":1.5}, + {"label":"k12", "x":1.5, "y":1}, + {"label":"k13", "x":2.5, "y":1}, + {"label":"k14", "x":3.5, "y":1}, + {"label":"k15", "x":4.5, "y":1}, + {"label":"k16", "x":5.5, "y":1}, + {"label":"k17", "x":6.5, "y":1}, + {"label":"k18", "x":7.5, "y":1}, + {"label":"k19", "x":8.5, "y":1}, + {"label":"k1a", "x":9.5, "y":1}, + {"label":"k1b", "x":10.5, "y":1}, + {"label":"k1c", "x":11.5, "y":1}, + {"label":"k1d", "x":12.5, "y":1}, + + {"label":"k20", "x":0, "y":2, "w":1.75}, + {"label":"k22", "x":1.75, "y":2}, + {"label":"k23", "x":2.75, "y":2}, + {"label":"k24", "x":3.75, "y":2}, + {"label":"k25", "x":4.75, "y":2}, + {"label":"k26", "x":5.75, "y":2}, + {"label":"k27", "x":6.75, "y":2}, + {"label":"k28", "x":7.75, "y":2}, + {"label":"k29", "x":8.75, "y":2}, + {"label":"k2a", "x":9.75, "y":2}, + {"label":"k2b", "x":10.75, "y":2}, + {"label":"k2c", "x":11.75, "y":2}, + {"label":"k1e", "x":12.75, "y":2}, + {"label":"k2d", "x":13.75, "y":1, "w": 1.25, "h": 2}, + + {"label":"k30", "x":0, "y":3, "w":2.25}, + {"label":"k32", "x":2, "y":3}, + {"label":"k33", "x":3, "y":3}, + {"label":"k34", "x":4, "y":3}, + {"label":"k35", "x":5, "y":3}, + {"label":"k36", "x":6, "y":3}, + {"label":"k37", "x":7, "y":3}, + {"label":"k38", "x":8, "y":3}, + {"label":"k39", "x":9, "y":3}, + {"label":"k3a", "x":10, "y":3}, + {"label":"k3c", "x":11, "y":3, "w":1.75}, + {"label":"k3d", "x":12, "y":3}, + {"label":"k3e", "x":13, "y":3}, + + {"label":"k40", "x":0, "y":4, "w":1.25}, + {"label":"k41", "x":1.25, "y":4, "w":1.25}, + {"label":"k43", "x":2.5, "y":4, "w":1.25}, + {"label":"k44", "x":3.75, "y":4, "w":2.25}, + {"label":"k46", "x":6, "y":4, "w":1.25}, + {"label":"k48", "x":7.25, "y":4, "w":2.75}, + {"label":"k4a", "x":10, "y":4}, + {"label":"k4b", "x":11, "y":4}, + {"label":"k4c", "x":12, "y":4}, + {"label":"k4d", "x":13, "y":4}, + {"label":"k4e", "x":14, "y":4} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/mokey/mokey63/keymaps/default/keymap.c b/keyboards/mokey/mokey63/keymaps/default/keymap.c new file mode 100644 index 000000000000..e3e69f6bb872 --- /dev/null +++ b/keyboards/mokey/mokey63/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +/* Copyright 2021 Ocean + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_division( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_GRV, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_GRV, KC_LEFT, KC_DOWN, KC_RGHT + ), +}; diff --git a/keyboards/mokey/mokey63/keymaps/via/keymap.c b/keyboards/mokey/mokey63/keymaps/via/keymap.c new file mode 100644 index 000000000000..1463d4b8eb22 --- /dev/null +++ b/keyboards/mokey/mokey63/keymaps/via/keymap.c @@ -0,0 +1,51 @@ +/* Copyright 2021 Ocean + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_division( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_GRV, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_GRV, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_division( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT_division( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT_division( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/mokey/mokey63/keymaps/via/rules.mk b/keyboards/mokey/mokey63/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/mokey/mokey63/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/mokey/mokey63/mokey63.c b/keyboards/mokey/mokey63/mokey63.c new file mode 100644 index 000000000000..ea30335a8482 --- /dev/null +++ b/keyboards/mokey/mokey63/mokey63.c @@ -0,0 +1,15 @@ +/* Copyright 2021 Ocean + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "mokey63.h" diff --git a/keyboards/mokey/mokey63/mokey63.h b/keyboards/mokey/mokey63/mokey63.h new file mode 100644 index 000000000000..d91afed3fa30 --- /dev/null +++ b/keyboards/mokey/mokey63/mokey63.h @@ -0,0 +1,75 @@ +/* Copyright 2021 Ocean + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define XXX KC_NO +/* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0e │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │10 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │1e │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │20 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2d │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤ + * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3c │3d │3e │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤ + * │40 │41 │43 │46 │4a │4b │4c │4d │4e │ + * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘ + */ +#define LAYOUT( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, 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, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3c, k3d, k3e, \ + k40, k41, k43, k46, k4a, k4b, k4c, k4d, k4e \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, KC_NO, 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, KC_NO, k3c, k3d, k3e }, \ + { k40, k41, KC_NO, k43, KC_NO, KC_NO, k46, KC_NO, KC_NO, KC_NO, k4a, k4b, k4c, k4d, k4e } \ +} + + +/* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │0e │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ + * │10 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ 2d │ + * │20 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │1e │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬──┴┬───┤ + * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3c │3d │3e │ + * ├────┬───┴┬──┴─┬─┴───┴──┬┴───┴───┼───┴──┬┴──┬┴──┬───┼───┼───┤ + * │40 │41 │43 │44 │46 │48 │4a │4b │4c │4d │4e │ + * └────┴────┴────┴────────┴────────┴──────┴───┴───┴───┴───┴───┘ +*/ +#define LAYOUT_division( \ + 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, \ + k20, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k1e, k2d, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3c, k3d, k3e, \ + k40, k41, k43, k44, k46, k48, 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, KC_NO }, \ + { k20, KC_NO, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k1e, k2d }, \ + { k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3a, KC_NO, k3c, k3d, k3e }, \ + { k40, k41, KC_NO, k43, k44, KC_NO, k46, KC_NO, k48, KC_NO, k4a, k4b, k4c, k4d, k4e } \ +} diff --git a/keyboards/mokey/mokey63/readme.md b/keyboards/mokey/mokey63/readme.md new file mode 100644 index 000000000000..461be07cbfce --- /dev/null +++ b/keyboards/mokey/mokey63/readme.md @@ -0,0 +1,21 @@ +# MOKEY 63 + +![mokey](https://rhmokey.github.io/update/index/63v1.jpg) + +63% variable multi row PCB + +* Keyboard Maintainer: [rhmokey](https://www.mokey.vip) +* Hardware Supported: Atmega32u4 +## Bootloader +* **Physical reset button**: Short press the button on the back of the PCB to enter the Bootloader and flash the firmware + + +Make example for this keyboard (after setting up your build environment): + + make mokey/mokey63:default + +Flashing example for this keyboard: + + make mokey/mokey63:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/mokey/mokey63/rules.mk b/keyboards/mokey/mokey63/rules.mk new file mode 100644 index 000000000000..74047d4dec7d --- /dev/null +++ b/keyboards/mokey/mokey63/rules.mk @@ -0,0 +1,19 @@ +# 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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/mokey/mokey64/config.h b/keyboards/mokey/mokey64/config.h new file mode 100644 index 000000000000..52345ed9733c --- /dev/null +++ b/keyboards/mokey/mokey64/config.h @@ -0,0 +1,37 @@ +/* +Copyright 2021 Kyle McCreery +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +#define VENDOR_ID 0x6653 +#define PRODUCT_ID 0x001A +#define DEVICE_VER 0x0001 + +#define MANUFACTURER rhmokey +#define PRODUCT MOKEY64 + +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +#define MATRIX_ROW_PINS { B1, B2, B3, B4, B5 } +#define MATRIX_COL_PINS { C7, F6, F5, F4, F1, E6, D0, D2, D1, D3, D5, D4, D6, D7, B6 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 diff --git a/keyboards/mokey/mokey64/info.json b/keyboards/mokey/mokey64/info.json new file mode 100644 index 000000000000..62b9c9049309 --- /dev/null +++ b/keyboards/mokey/mokey64/info.json @@ -0,0 +1,79 @@ +{ + "keyboard_name": "Mokey64", + "url": "", + "maintainer": "mokey", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"k00", "x":0, "y":0}, + {"label":"k01", "x":1, "y":0}, + {"label":"k02", "x":2, "y":0}, + {"label":"k03", "x":3, "y":0}, + {"label":"k04", "x":4, "y":0}, + {"label":"k05", "x":5, "y":0}, + {"label":"k06", "x":6, "y":0}, + {"label":"k07", "x":7, "y":0}, + {"label":"k08", "x":8, "y":0}, + {"label":"k09", "x":9, "y":0}, + {"label":"k0a", "x":10, "y":0}, + {"label":"k0b", "x":11, "y":0}, + {"label":"k0c", "x":12, "y":0}, + {"label":"k0e", "x":13, "y":0, "w":2}, + + {"label":"k10", "x":0, "y":1, "w":1.5}, + {"label":"k12", "x":1.5, "y":1}, + {"label":"k13", "x":2.5, "y":1}, + {"label":"k14", "x":3.5, "y":1}, + {"label":"k15", "x":4.5, "y":1}, + {"label":"k16", "x":5.5, "y":1}, + {"label":"k17", "x":6.5, "y":1}, + {"label":"k18", "x":7.5, "y":1}, + {"label":"k19", "x":8.5, "y":1}, + {"label":"k1a", "x":9.5, "y":1}, + {"label":"k1b", "x":10.5, "y":1}, + {"label":"k1c", "x":11.5, "y":1}, + {"label":"k1d", "x":12.5, "y":1}, + {"label":"k1e", "x":13.5, "y":1, "w":1.5}, + + {"label":"k20", "x":0, "y":2, "w":1.75}, + {"label":"k22", "x":1.75, "y":2}, + {"label":"k23", "x":2.75, "y":2}, + {"label":"k24", "x":3.75, "y":2}, + {"label":"k25", "x":4.75, "y":2}, + {"label":"k26", "x":5.75, "y":2}, + {"label":"k27", "x":6.75, "y":2}, + {"label":"k28", "x":7.75, "y":2}, + {"label":"k29", "x":8.75, "y":2}, + {"label":"k2a", "x":9.75, "y":2}, + {"label":"k2b", "x":10.75, "y":2}, + {"label":"k2c", "x":11.75, "y":2}, + {"label":"k2d", "x":12.75, "y":2, "w":2.25}, + + {"label":"k30", "x":0, "y":3, "w":2}, + {"label":"k32", "x":2, "y":3}, + {"label":"k33", "x":3, "y":3}, + {"label":"k34", "x":4, "y":3}, + {"label":"k35", "x":5, "y":3}, + {"label":"k36", "x":6, "y":3}, + {"label":"k37", "x":7, "y":3}, + {"label":"k38", "x":8, "y":3}, + {"label":"k39", "x":9, "y":3}, + {"label":"k3a", "x":10, "y":3}, + {"label":"k3b", "x":11, "y":3}, + {"label":"k3c", "x":12, "y":3}, + {"label":"k3d", "x":13, "y":3}, + {"label":"k3e", "x":14, "y":3}, + + {"label":"k40", "x":0, "y":4, "w":1.25}, + {"label":"k41", "x":1.25, "y":4, "w":1.25}, + {"label":"k43", "x":2.5, "y":4, "w":1.25}, + {"label":"k46", "x":3.75, "y":4, "w":6.25}, + {"label":"k4a", "x":10, "y":4}, + {"label":"k4b", "x":11, "y":4}, + {"label":"k4c", "x":12, "y":4}, + {"label":"k4d", "x":13, "y":4}, + {"label":"k4e", "x":14, "y":4} + ] + } + } +} diff --git a/keyboards/mokey/mokey64/keymaps/default/keymap.c b/keyboards/mokey/mokey64/keymaps/default/keymap.c new file mode 100644 index 000000000000..de38570e911a --- /dev/null +++ b/keyboards/mokey/mokey64/keymaps/default/keymap.c @@ -0,0 +1,31 @@ +/* Copyright 2021 Kyle McCreery + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_GRV, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; + + + + diff --git a/keyboards/mokey/mokey64/keymaps/via/keymap.c b/keyboards/mokey/mokey64/keymaps/via/keymap.c new file mode 100644 index 000000000000..f44f38e8eafd --- /dev/null +++ b/keyboards/mokey/mokey64/keymaps/via/keymap.c @@ -0,0 +1,49 @@ +/* Copyright 2021 Kyle McCreery + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_GRV, KC_LEFT, KC_DOWN, KC_RGHT), + + [1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + [2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + [3] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) + +}; diff --git a/keyboards/mokey/mokey64/keymaps/via/rules.mk b/keyboards/mokey/mokey64/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/mokey/mokey64/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/mokey/mokey64/mokey64.c b/keyboards/mokey/mokey64/mokey64.c new file mode 100644 index 000000000000..5ba764b6b2c6 --- /dev/null +++ b/keyboards/mokey/mokey64/mokey64.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Kyle McCreery + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "mokey64.h" \ No newline at end of file diff --git a/keyboards/mokey/mokey64/mokey64.h b/keyboards/mokey/mokey64/mokey64.h new file mode 100644 index 000000000000..8dddc4faefef --- /dev/null +++ b/keyboards/mokey/mokey64/mokey64.h @@ -0,0 +1,48 @@ +/* Copyright 2021 Kyle McCreery + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +/* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0e │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │10 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │1e │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │20 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2d │ + * ├──────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬───┬───┤ + * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │3e │ + * ├────┬──┴─┬─┴──┬┴───┴───┴───┴───┴───┴───┼───┼───┼───┼───┼───┤ + * │40 │41 │43 │ 46 │4a │4b │4c │4d │4e │ + * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘ +*/ +#define LAYOUT( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, 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, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \ + k40, k41, k43, k46, k4a, k4b, k4c, k4d, k4e \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, XXX, 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, k3d, k3e }, \ + { k40, k41, k43, XXX, XXX, XXX, k46, XXX, XXX, XXX, k4a, k4b, k4c, k4d, k4e } \ +} diff --git a/keyboards/mokey/mokey64/readme.md b/keyboards/mokey/mokey64/readme.md new file mode 100644 index 000000000000..e56d86f0db63 --- /dev/null +++ b/keyboards/mokey/mokey64/readme.md @@ -0,0 +1,22 @@ +# MOKEY 64 + +![mokey](https://rhmokey.github.io/update/index/64v13.jpg) + +Support Atmega32u4 keyboard. + +* Keyboard Maintainer: [rhmokey](https://github.com/rhmokey) +* Hardware Supported: Atmega32u4 + +## Bootloader +* **Physical reset button**: Short press the button on the back of the PCB to enter the Bootloader and flash the firmware + + +Make example for this keyboard (after setting up your build environment): + + make mokey/mokey64:default + +Flashing example for this keyboard: + + make mokey/mokey64:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/mokey/mokey64/rules.mk b/keyboards/mokey/mokey64/rules.mk new file mode 100644 index 000000000000..38bf89e4e017 --- /dev/null +++ b/keyboards/mokey/mokey64/rules.mk @@ -0,0 +1,19 @@ +# 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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/mokey/xox70/config.h b/keyboards/mokey/xox70/config.h new file mode 100644 index 000000000000..f5c08c4480c4 --- /dev/null +++ b/keyboards/mokey/xox70/config.h @@ -0,0 +1,36 @@ +/* +Copyright 2021 Kyle McCreery +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x6653 +#define PRODUCT_ID 0x3370 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Mokey +#define PRODUCT XOX 70 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 18 + +#define MATRIX_ROW_PINS { F7, B7, F5, F1, B0 } +#define MATRIX_COL_PINS { F6, C7, F4, F5, F1, B6, D0, D2, D3, D1, D7, D4, D5, D6, B4, B5, C6, B7 } +#define UNUSED_PINS + +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 diff --git a/keyboards/mokey/xox70/info.json b/keyboards/mokey/xox70/info.json new file mode 100644 index 000000000000..95089f6fc38b --- /dev/null +++ b/keyboards/mokey/xox70/info.json @@ -0,0 +1,248 @@ +{ + "keyboard_name": "xox70", + "url": "", + "maintainer": "Mokey", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"k00", "x":0, "y":0}, + {"label":"k01", "x":1, "y":0}, + {"label":"k02", "x":2, "y":0}, + {"label":"k03", "x":3, "y":0}, + {"label":"k04", "x":4, "y":0}, + {"label":"k05", "x":5, "y":0}, + {"label":"k06", "x":6, "y":0}, + {"label":"k07", "x":7, "y":0}, + {"label":"k08", "x":8, "y":0}, + {"label":"k09", "x":9, "y":0}, + {"label":"k0a", "x":10, "y":0}, + {"label":"k0b", "x":11, "y":0}, + {"label":"k0c", "x":12, "y":0}, + {"label":"k0e", "x":13, "y":0, "w":2}, + {"label":"k0f", "x":15.25, "y":0}, + {"label":"k0g", "x":16.25, "y":0}, + {"label":"k0h", "x":17.25, "y":0}, + + {"label":"k10", "x":0, "y":1, "w":1.5}, + {"label":"k12", "x":1.5, "y":1}, + {"label":"k13", "x":2.5, "y":1}, + {"label":"k14", "x":3.5, "y":1}, + {"label":"k15", "x":4.5, "y":1}, + {"label":"k16", "x":5.5, "y":1}, + {"label":"k17", "x":6.5, "y":1}, + {"label":"k18", "x":7.5, "y":1}, + {"label":"k19", "x":8.5, "y":1}, + {"label":"k1a", "x":9.5, "y":1}, + {"label":"k1b", "x":10.5, "y":1}, + {"label":"k1c", "x":11.5, "y":1}, + {"label":"k1d", "x":12.5, "y":1}, + {"label":"k1e", "x":13.5, "y":1, "w":1.5}, + {"label":"k1f", "x":15.25, "y":1}, + {"label":"k1g", "x":16.25, "y":1}, + {"label":"k1h", "x":17.25, "y":1}, + + {"label":"k20", "x":0, "y":2, "w":1.75}, + {"label":"k22", "x":1.75, "y":2}, + {"label":"k23", "x":2.75, "y":2}, + {"label":"k24", "x":3.75, "y":2}, + {"label":"k25", "x":4.75, "y":2}, + {"label":"k26", "x":5.75, "y":2}, + {"label":"k27", "x":6.75, "y":2}, + {"label":"k28", "x":7.75, "y":2}, + {"label":"k29", "x":8.75, "y":2}, + {"label":"k2a", "x":9.75, "y":2}, + {"label":"k2b", "x":10.75, "y":2}, + {"label":"k2c", "x":11.75, "y":2}, + {"label":"k2d", "x":12.75, "y":2, "w":2.25}, + + {"label":"k30", "x":0, "y":3, "w":2.25}, + {"label":"k32", "x":2.25, "y":3}, + {"label":"k33", "x":3.25, "y":3}, + {"label":"k34", "x":4.25, "y":3}, + {"label":"k35", "x":5.25, "y":3}, + {"label":"k36", "x":6.25, "y":3}, + {"label":"k37", "x":7.25, "y":3}, + {"label":"k38", "x":8.25, "y":3}, + {"label":"k39", "x":9.25, "y":3}, + {"label":"k3a", "x":10.25, "y":3}, + {"label":"k3b", "x":11.25, "y":3}, + {"label":"k3d", "x":12.25, "y":3, "w":2.75}, + {"label":"k3g", "x":16.25, "y":3}, + + {"label":"k40", "x":0, "y":4, "w":1.25}, + {"label":"k41", "x":1.25, "y":4, "w":1.25}, + {"label":"k43", "x":2.5, "y":4, "w":1.25}, + {"label":"k46", "x":3.75, "y":4, "w":6.25}, + {"label":"k4a", "x":10, "y":4, "w":1.25}, + {"label":"k4b", "x":11.25, "y":4, "w":1.25}, + {"label":"k4d", "x":12.5, "y":4, "w":1.25}, + {"label":"k4e", "x":13.75, "y":4, "w":1.25}, + {"label":"k4f", "x":15.25, "y":4}, + {"label":"k4g", "x":16.25, "y":4}, + {"label":"k4h", "x":17.25, "y":4} + ] + }, + "LAYOUT_division_backspace":{ + "layout": [ + {"label":"k00", "x":0, "y":0}, + {"label":"k01", "x":1, "y":0}, + {"label":"k02", "x":2, "y":0}, + {"label":"k03", "x":3, "y":0}, + {"label":"k04", "x":4, "y":0}, + {"label":"k05", "x":5, "y":0}, + {"label":"k06", "x":6, "y":0}, + {"label":"k07", "x":7, "y":0}, + {"label":"k08", "x":8, "y":0}, + {"label":"k09", "x":9, "y":0}, + {"label":"k0a", "x":10, "y":0}, + {"label":"k0b", "x":11, "y":0}, + {"label":"k0c", "x":12, "y":0}, + {"label":"k0d", "x":13, "y":0}, + {"label":"k0e", "x":14, "y":0}, + {"label":"k0f", "x":15.25, "y":0}, + {"label":"k0g", "x":16.25, "y":0}, + {"label":"k0h", "x":17.25, "y":0}, + + {"label":"k10", "x":0, "y":1, "w":1.5}, + {"label":"k12", "x":1.5, "y":1}, + {"label":"k13", "x":2.5, "y":1}, + {"label":"k14", "x":3.5, "y":1}, + {"label":"k15", "x":4.5, "y":1}, + {"label":"k16", "x":5.5, "y":1}, + {"label":"k17", "x":6.5, "y":1}, + {"label":"k18", "x":7.5, "y":1}, + {"label":"k19", "x":8.5, "y":1}, + {"label":"k1a", "x":9.5, "y":1}, + {"label":"k1b", "x":10.5, "y":1}, + {"label":"k1c", "x":11.5, "y":1}, + {"label":"k1d", "x":12.5, "y":1}, + {"label":"k1f", "x":15.25, "y":1}, + {"label":"k1g", "x":16.25, "y":1}, + {"label":"k1h", "x":17.25, "y":1}, + + {"label":"k20", "x":0, "y":2, "w":1.75}, + {"label":"k22", "x":1.75, "y":2}, + {"label":"k23", "x":2.75, "y":2}, + {"label":"k24", "x":3.75, "y":2}, + {"label":"k25", "x":4.75, "y":2}, + {"label":"k26", "x":5.75, "y":2}, + {"label":"k27", "x":6.75, "y":2}, + {"label":"k28", "x":7.75, "y":2}, + {"label":"k29", "x":8.75, "y":2}, + {"label":"k2a", "x":9.75, "y":2}, + {"label":"k2b", "x":10.75, "y":2}, + {"label":"k2c", "x":11.75, "y":2}, + {"label":"k1e", "x":12.75, "y":2}, + {"label":"k2d", "x":13.75, "y":1, "w":1.25, "h": 2}, + + {"label":"k30", "x":0, "y":3, "w":1.25}, + {"label":"k31", "x":1.25, "y":3}, + {"label":"k32", "x":2.25, "y":3}, + {"label":"k33", "x":3.25, "y":3}, + {"label":"k34", "x":4.25, "y":3}, + {"label":"k35", "x":5.25, "y":3}, + {"label":"k36", "x":6.25, "y":3}, + {"label":"k37", "x":7.25, "y":3}, + {"label":"k38", "x":8.25, "y":3}, + {"label":"k39", "x":9.25, "y":3}, + {"label":"k3a", "x":10.25, "y":3}, + {"label":"k3b", "x":11.25, "y":3}, + {"label":"k3d", "x":12.25, "y":3, "w":1.75}, + {"label":"k3e", "x":14, "y":3}, + {"label":"k3g", "x":16.25, "y":3}, + + {"label":"k40", "x":0, "y":4, "w":1.5}, + {"label":"k41", "x":1.25, "y":4}, + {"label":"k43", "x":2.5, "y":4, "w":1.5}, + {"label":"k46", "x":4, "y":4, "w":7}, + {"label":"k4b", "x":11, "y":4, "w":1.5}, + {"label":"k4d", "x":12.5, "y":4}, + {"label":"k4e", "x":13.75, "y":4, "w":1.5}, + {"label":"k4f", "x":15.25, "y":4}, + {"label":"k4g", "x":16.25, "y":4}, + {"label":"k4h", "x":17.25, "y":4} + ] + }, + "LAYOUT_iso":{ + "layout": [ + {"label":"k00", "x":0, "y":0}, + {"label":"k01", "x":1, "y":0}, + {"label":"k02", "x":2, "y":0}, + {"label":"k03", "x":3, "y":0}, + {"label":"k04", "x":4, "y":0}, + {"label":"k05", "x":5, "y":0}, + {"label":"k06", "x":6, "y":0}, + {"label":"k07", "x":7, "y":0}, + {"label":"k08", "x":8, "y":0}, + {"label":"k09", "x":9, "y":0}, + {"label":"k0a", "x":10, "y":0}, + {"label":"k0b", "x":11, "y":0}, + {"label":"k0c", "x":12, "y":0}, + {"label":"k0d", "x":13, "y":0}, + {"label":"k0e", "x":14, "y":0}, + {"label":"k0f", "x":15.25, "y":0}, + {"label":"k0g", "x":16.25, "y":0}, + {"label":"k0h", "x":17.25, "y":0}, + + {"label":"k10", "x":0, "y":1, "w":1.5}, + {"label":"k12", "x":1.5, "y":1}, + {"label":"k13", "x":2.5, "y":1}, + {"label":"k14", "x":3.5, "y":1}, + {"label":"k15", "x":4.5, "y":1}, + {"label":"k16", "x":5.5, "y":1}, + {"label":"k17", "x":6.5, "y":1}, + {"label":"k18", "x":7.5, "y":1}, + {"label":"k19", "x":8.5, "y":1}, + {"label":"k1a", "x":9.5, "y":1}, + {"label":"k1b", "x":10.5, "y":1}, + {"label":"k1c", "x":11.5, "y":1}, + {"label":"k1d", "x":12.5, "y":1}, + {"label":"k1f", "x":15.25, "y":1}, + {"label":"k1g", "x":16.25, "y":1}, + {"label":"k1h", "x":17.25, "y":1}, + + {"label":"k20", "x":0, "y":2, "w":1.75}, + {"label":"k22", "x":1.75, "y":2}, + {"label":"k23", "x":2.75, "y":2}, + {"label":"k24", "x":3.75, "y":2}, + {"label":"k25", "x":4.75, "y":2}, + {"label":"k26", "x":5.75, "y":2}, + {"label":"k27", "x":6.75, "y":2}, + {"label":"k28", "x":7.75, "y":2}, + {"label":"k29", "x":8.75, "y":2}, + {"label":"k2a", "x":9.75, "y":2}, + {"label":"k2b", "x":10.75, "y":2}, + {"label":"k2c", "x":11.75, "y":2}, + {"label":"k1e", "x":12.75, "y":2}, + {"label":"k2d", "x":13.75, "y":1, "w":1.25, "h": 2}, + + {"label":"k30", "x":0, "y":3, "w":1.25}, + {"label":"k31", "x":1.25, "y":3}, + {"label":"k32", "x":2.25, "y":3}, + {"label":"k33", "x":3.25, "y":3}, + {"label":"k34", "x":4.25, "y":3}, + {"label":"k35", "x":5.25, "y":3}, + {"label":"k36", "x":6.25, "y":3}, + {"label":"k37", "x":7.25, "y":3}, + {"label":"k38", "x":8.25, "y":3}, + {"label":"k39", "x":9.25, "y":3}, + {"label":"k3a", "x":10.25, "y":3}, + {"label":"k3b", "x":11.25, "y":3}, + {"label":"k3d", "x":12.25, "y":3, "w":1.75}, + {"label":"k3e", "x":14, "y":3}, + {"label":"k3g", "x":16.25, "y":3}, + + {"label":"k40", "x":0, "y":4, "w":1.5}, + {"label":"k43", "x":2.5, "y":4, "w":1.5}, + {"label":"k44", "x":4, "y":4, "w":3}, + {"label":"k46", "x":7, "y":4}, + {"label":"k48", "x":8, "y":4, "w":3}, + {"label":"k4b", "x":11, "y":4, "w":1.5}, + {"label":"k4e", "x":13.5, "y":4, "w":1.5}, + {"label":"k4f", "x":15.25, "y":4}, + {"label":"k4g", "x":16.25, "y":4}, + {"label":"k4h", "x":17.25, "y":4} + ] + } + } +} diff --git a/keyboards/mokey/xox70/keymaps/default/keymap.c b/keyboards/mokey/xox70/keymaps/default/keymap.c new file mode 100644 index 000000000000..710acc04cb41 --- /dev/null +++ b/keyboards/mokey/xox70/keymaps/default/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2021 Ocean + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + LAYOUT( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INSERT, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DELETE, KC_END, KC_PGDOWN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_GRV, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/mokey/xox70/keymaps/via/keymap.c b/keyboards/mokey/xox70/keymaps/via/keymap.c new file mode 100644 index 000000000000..66e227e333c5 --- /dev/null +++ b/keyboards/mokey/xox70/keymaps/via/keymap.c @@ -0,0 +1,51 @@ +/* Copyright 2021 Ocean + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INSERT, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DELETE, KC_END, KC_PGDOWN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_GRV, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/mokey/xox70/keymaps/via/rules.mk b/keyboards/mokey/xox70/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/mokey/xox70/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/mokey/xox70/readme.md b/keyboards/mokey/xox70/readme.md new file mode 100644 index 000000000000..fa4d6838e229 --- /dev/null +++ b/keyboards/mokey/xox70/readme.md @@ -0,0 +1,20 @@ +# xox70 PCB + +![xox70](https://raw.githubusercontent.com/rhmokey/123.github.io/main/2021/08/15/hello-world/XOX70.jpg) + +Support Atmega32u4 keyboard,With a variety of configurations + +* Keyboard Maintainer: [Mokey](https://github.com/rhmokey) + +## Bootloader +* **Physical reset button**: Short press the button on the back of the PCB to enter the Bootloader and flash the firmware + +Make example for this keyboard (after setting up your build environment): + + make mokey/xox70:default + +Flashing example for this keyboard: + + make mokey/xox70:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/mokey/xox70/rules.mk b/keyboards/mokey/xox70/rules.mk new file mode 100644 index 000000000000..b68ce96c8d3d --- /dev/null +++ b/keyboards/mokey/xox70/rules.mk @@ -0,0 +1,19 @@ +# 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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/mokey/xox70/xox70.c b/keyboards/mokey/xox70/xox70.c new file mode 100644 index 000000000000..7c46b6a54a5d --- /dev/null +++ b/keyboards/mokey/xox70/xox70.c @@ -0,0 +1,15 @@ +/* Copyright 2021 Ocean + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "xox70.h" \ No newline at end of file diff --git a/keyboards/mokey/xox70/xox70.h b/keyboards/mokey/xox70/xox70.h new file mode 100644 index 000000000000..8c54e630c5f9 --- /dev/null +++ b/keyboards/mokey/xox70/xox70.h @@ -0,0 +1,65 @@ +/* Copyright 2021 Ocean + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define xxx KC_NO + +#define LAYOUT(\ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, k0f, k0g, k0h, \ + k10, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, k1h, \ + 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, k3g, \ + k40, k41, k43, k46, k4a, k4b, k4d, k4e, k4f, k4g, k4h \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, KC_NO, k0e, k0f, k0g, k0h }, \ + { k10, KC_NO, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, k1h }, \ + { k20, KC_NO, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, KC_NO, KC_NO, KC_NO,KC_NO }, \ + { k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, KC_NO, k3d, KC_NO, KC_NO, k3g, KC_NO }, \ + { k40, k41, KC_NO, k43, KC_NO, KC_NO, k46, KC_NO, KC_NO, KC_NO, k4a, k4b, KC_NO, k4d, k4e, k4f, k4g, k4h } \ +} + +#define LAYOUT_division_backspace(\ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g, k0h, \ + k10, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1f, k1g, k1h, \ + k20, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k1e, k2d, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, k3g, \ + k40, k41, k43, k46, k4b, k4d, k4e, k4f, k4g, k4h \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g, k0h }, \ + { k10, KC_NO, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1f, k1g, k1h, KC_NO }, \ + { k20, KC_NO, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k1e, k2d, KC_NO, KC_NO, KC_NO }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, KC_NO, k3d, k3e, KC_NO, k3g, KC_NO }, \ + { k40, k41, KC_NO, k43, KC_NO, KC_NO, k46, KC_NO, KC_NO, KC_NO, KC_NO,k4b, KC_NO, k4d, k4e, k4f, k4g, k4h } \ +} + +#define LAYOUT_iso(\ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g, k0h, \ + k10, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1f, k1g, k1h, \ + k20, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k1e, k2d, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, k3g, \ + k40, k43, k44, k46, k48, k4b, k4e, k4f, k4g, k4h \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g, k0h }, \ + { k10, KC_NO, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1f, k1g, k1h, KC_NO }, \ + { k20, KC_NO, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k1e, k2d, KC_NO, KC_NO, KC_NO }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, KC_NO, k3d, k3e, KC_NO, k3g, KC_NO }, \ + { k40, KC_NO, KC_NO, k43, k44, KC_NO, k46, KC_NO, k48, KC_NO, KC_NO, k4a, KC_NO, k4d, k4e, k4f, k4g, k4h } \ +} diff --git a/keyboards/molecule/info.json b/keyboards/molecule/info.json index 516464b7a621..9f6526217064 100755 --- a/keyboards/molecule/info.json +++ b/keyboards/molecule/info.json @@ -2,214 +2,54 @@ "keyboard_name": "molecule", "url": "https://github.com/bbrfkr/keyboards/tree/master/molecule", "maintainer": "bbrfkr", - "width": 14.75, - "height": 5, "layouts": { "LAYOUT": { "layout": [ - { - "label":"E", - "x":2, - "y":0 - }, - { - "label":"I", - "x":11.75, - "y":0 - }, - { - "label":"W", - "x":1, - "y":0.25 - }, - { - "label":"O", - "x":12.75, - "y":0.25 - }, - { - "label":"R", - "x":3, - "y":0.5 - }, - { - "label":"U", - "x":10.75, - "y":0.5 - }, - { - "label":"T", - "x":4, - "y":0.75 - }, - { - "label":"Y", - "x":9.75, - "y":0.75 - }, - { - "label":"Q", - "x":0, - "y":1 - }, - { - "label":"D", - "x":2, - "y":1 - }, - { - "label":"K", - "x":11.75, - "y":1 - }, - { - "label":"P", - "x":13.75, - "y":1 - }, - { - "label":"S", - "x":1, - "y":1.25 - }, - { - "label":"L", - "x":12.75, - "y":1.25 - }, - { - "label":"F", - "x":3, - "y":1.5 - }, - { - "label":"J", - "x":10.75, - "y":1.5 - }, - { - "label":"G", - "x":4, - "y":1.75 - }, - { - "label":"H", - "x":9.75, - "y":1.75 - }, - { - "label":"A", - "x":0, - "y":2 - }, - { - "label":"C", - "x":2, - "y":2 - }, - { - "label":",", - "x":11.75, - "y":2 - }, - { - "label":";", - "x":13.75, - "y":2 - }, - { - "label":"X", - "x":1, - "y":2.25 - }, - { - "label":".", - "x":12.75, - "y":2.25 - }, - { - "label":"V", - "x":3, - "y":2.5 - }, - { - "label":"M", - "x":10.75, - "y":2.5 - }, - { - "label":"B", - "x":4, - "y":2.75 - }, - { - "label":"N", - "x":9.75, - "y":2.75 - }, - { - "label":"Z", - "x":0, - "y":3 - }, - { - "label":"Shift", - "x":2, - "y":3 - }, - { - "label":"Alt", - "x":5.25, - "y":3 - }, - { - "label":"Super", - "x":8.5, - "y":3 - }, - { - "label":"Shift", - "x":11.75, - "y":3 - }, - { - "label":"/", - "x":13.75, - "y":3 - }, - { - "label":"Ctrl", - "x":1, - "y":3.25 - }, - { - "label":"Space", - "x":6.25, - "y":3.25, - "h":1.5 - }, - { - "label":"Enter", - "x":7.5, - "y":3.25, - "h":1.5 - }, - { - "label":"Ctrl", - "x":12.75, - "y":3.25 - }, - { - "label":"Lower", - "x":5.25, - "y":4 - }, - { - "label":"Raise", - "x":8.5, - "y":4 - } + {"label":"Q", "x":0, "y":1}, + {"label":"W", "x":1, "y":0.25}, + {"label":"E", "x":2, "y":0}, + {"label":"R", "x":3, "y":0.5}, + {"label":"T", "x":4, "y":0.75}, + {"label":"Y", "x":9.75, "y":0.75}, + {"label":"U", "x":10.75, "y":0.5}, + {"label":"I", "x":11.75, "y":0}, + {"label":"O", "x":12.75, "y":0.25}, + {"label":"P", "x":13.75, "y":1}, + + {"label":"A", "x":0, "y":2}, + {"label":"S", "x":1, "y":1.25}, + {"label":"D", "x":2, "y":1}, + {"label":"F", "x":3, "y":1.5}, + {"label":"G", "x":4, "y":1.75}, + {"label":"H", "x":9.75, "y":1.75}, + {"label":"J", "x":10.75, "y":1.5}, + {"label":"K", "x":11.75, "y":1}, + {"label":"L", "x":12.75, "y":1.25}, + {"label":";", "x":13.75, "y":2}, + + {"label":"Z", "x":0, "y":3}, + {"label":"X", "x":1, "y":2.25}, + {"label":"C", "x":2, "y":2}, + {"label":"V", "x":3, "y":2.5}, + {"label":"B", "x":4, "y":2.75}, + {"label":"N", "x":9.75, "y":2.75}, + {"label":"M", "x":10.75, "y":2.5}, + {"label":",", "x":11.75, "y":2}, + {"label":".", "x":12.75, "y":2.25}, + {"label":"/", "x":13.75, "y":3}, + + {"label":"Ctrl", "x":1, "y":3.25}, + {"label":"Shift", "x":2, "y":3}, + {"label":"Alt", "x":5.25, "y":3}, + {"label":"Space", "x":6.25, "y":3.25, "h":1.5}, + {"label":"Enter", "x":7.5, "y":3.25, "h":1.5}, + {"label":"Super", "x":8.5, "y":3}, + {"label":"Shift", "x":11.75, "y":3}, + {"label":"Ctrl", "x":12.75, "y":3.25}, + + {"label":"Lower", "x":5.25, "y":4}, + {"label":"Raise", "x":8.5, "y":4} ] } } -} \ No newline at end of file +} diff --git a/keyboards/molecule/keymaps/default/keymap.c b/keyboards/molecule/keymaps/default/keymap.c index ddc01403c084..bceed5774d87 100755 --- a/keyboards/molecule/keymaps/default/keymap.c +++ b/keyboards/molecule/keymaps/default/keymap.c @@ -31,9 +31,39 @@ enum custom_keycodes { }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY_BASE] = LAYOUT(KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LCTL, KC_LSFT, MO(2), KC_LALT, KC_SPC, KC_ENT, KC_RGUI, MO(3), KC_RSFT, KC_RCTL), - [_EUCALYN_BASE] = LAYOUT(KC_Q, KC_W, KC_COMM, KC_DOT, KC_SCLN, KC_M, KC_R, KC_D, KC_Y, KC_P, KC_A, KC_O, KC_E, KC_I, KC_U, KC_G, KC_T, KC_K, KC_S, KC_N, KC_Z, KC_X, KC_C, KC_V, KC_F, KC_B, KC_H, KC_J, KC_L, KC_SLSH, KC_LCTL, KC_LSFT, MO(2), KC_LALT, KC_SPC, KC_ENT, KC_RGUI, MO(3), KC_RSFT, KC_RCTL), - [_LOWER] = LAYOUT(KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_F2, KC_F3, KC_WH_U, KC_F4, KC_F5, KC_F6, KC_F7, KC_UP, KC_F8, KC_F9, KC_F1, KC_MS_BTN2, KC_WH_D, KC_MS_BTN1, KC_F11, KC_F12, KC_LEFT, KC_DOWN, KC_RGHT, KC_F10, KC_LCTL, KC_LSFT, KC_TRNS, KC_LALT, KC_SPC, KC_ENT, KC_RGUI, MO(4), KC_RSFT, KC_RCTL), - [_RAISE] = LAYOUT(KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_ESC, KC_DEL, KC_BSPC, KC_GRV, KC_BSLS, KC_MINS, KC_EQL, KC_QUOT, KC_LCBR, KC_RCBR, KC_CAPS, KC_TAB, KC_PSCR, KC_TILD, KC_PIPE, KC_UNDS, KC_PLUS, KC_DQUO, KC_LBRC, KC_RBRC, KC_LCTL, KC_LSFT, MO(4), KC_LALT, KC_SPC, KC_ENT, KC_RGUI, KC_TRNS, KC_RSFT, KC_RCTL), - [_FN] = LAYOUT(KC_VOLU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BRIU, KC_VOLD, KC_NO, KC_NO, KC_NO, DF(0), DF(1), KC_NO, KC_NO, KC_NO, KC_BRID, KC_MUTE, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_LCTL, KC_LSFT, KC_TRNS, KC_LALT, KC_SPC, KC_ENT, KC_RGUI, KC_TRNS, KC_RSFT, KC_RCTL) + [_QWERTY_BASE] = LAYOUT( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, + KC_LCTL, KC_LSFT, KC_LALT, KC_SPC, KC_ENT, KC_RGUI, KC_RSFT, KC_RCTL, + MO(2), MO(3) + ), + [_EUCALYN_BASE] = LAYOUT( + KC_Q, KC_W, KC_COMM, KC_DOT, KC_SCLN, KC_M, KC_R, KC_D, KC_Y, KC_P, + KC_A, KC_O, KC_E, KC_I, KC_U, KC_G, KC_T, KC_K, KC_S, KC_N, + KC_Z, KC_X, KC_C, KC_V, KC_F, KC_B, KC_H, KC_J, KC_L, KC_SLSH, + KC_LCTL, KC_LSFT, KC_LALT, KC_SPC, KC_ENT, KC_RGUI, KC_RSFT, KC_RCTL, + MO(2), MO(3) + ), + [_LOWER] = LAYOUT( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_F2, KC_F3, KC_WH_U, KC_F4, KC_F5, KC_F6, KC_F7, KC_UP, KC_F8, KC_F9, + KC_F1, KC_BTN2, KC_WH_D, KC_BTN1, KC_F11, KC_F12, KC_LEFT, KC_DOWN, KC_RGHT, KC_F10, + KC_LCTL, KC_LSFT, KC_LALT, KC_SPC, KC_ENT, KC_RGUI, KC_RSFT, KC_RCTL, + KC_TRNS, MO(4) + ), + [_RAISE] = LAYOUT( + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, + KC_ESC, KC_DEL, KC_BSPC, KC_GRV, KC_BSLS, KC_MINS, KC_EQL, KC_QUOT, KC_LCBR, KC_RCBR, + KC_CAPS, KC_TAB, KC_PSCR, KC_TILD, KC_PIPE, KC_UNDS, KC_PLUS, KC_DQUO, KC_LBRC, KC_RBRC, + KC_LCTL, KC_LSFT, KC_LALT, KC_SPC, KC_ENT, KC_RGUI, KC_RSFT, KC_RCTL, + MO(4), KC_TRNS + ), + [_FN] = LAYOUT( + KC_VOLU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BRIU, + KC_VOLD, KC_NO, KC_NO, KC_NO, DF(0), DF(1), KC_NO, KC_NO, KC_NO, KC_BRID, + KC_MUTE, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_LCTL, KC_LSFT, KC_LALT, KC_SPC, KC_ENT, KC_RGUI, KC_RSFT, KC_RCTL, + KC_TRNS, KC_TRNS + ) }; diff --git a/keyboards/molecule/molecule.h b/keyboards/molecule/molecule.h index 2db7a92ade0b..a7769f89a1ad 100755 --- a/keyboards/molecule/molecule.h +++ b/keyboards/molecule/molecule.h @@ -27,10 +27,11 @@ * represents the switch matrix. */ #define LAYOUT( \ - L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \ - L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \ - L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \ - L30, L31, L32, L33, L34, R30, R31, R32, R33, R34 \ + L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \ + L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \ + L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \ + L30, L31, L33, L34, R30, R31, R33, R34, \ + L32, R32 \ ) \ { \ { L00, L01, L02, L03, L04, R00, R01, R02, R03, R04 }, \ diff --git a/keyboards/molecule/rules.mk b/keyboards/molecule/rules.mk index 9130ab8ec9bd..bfd19db6390e 100755 --- a/keyboards/molecule/rules.mk +++ b/keyboards/molecule/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 # Add trackball support diff --git a/keyboards/momoka_ergo/config.h b/keyboards/momoka_ergo/config.h new file mode 100644 index 000000000000..3c22e3fc845a --- /dev/null +++ b/keyboards/momoka_ergo/config.h @@ -0,0 +1,131 @@ +/* +Copyright 2021 StefanGrindelwald + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x0000 +#define DEVICE_VER 0x0001 +#define MANUFACTURER StefanGrindelwald +#define PRODUCT Momoka Ergo + +/* key matrix size */ +#define MATRIX_ROWS 14 +#define MATRIX_COLS 6 + +/* + * 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 { C6, D7, E6, B4, B5, B6, B7 } +#define MATRIX_COL_PINS { F7, F6, F5, F4, F1, F0 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW +#define SELECT_SOFT_SERIAL_SPEED 5 +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +#define SOFT_SERIAL_PIN D1 // or D1, D2, D3, E6 + +#define RGB_DI_PIN C7 +#define RGBLIGHT_ANIMATIONS +#define RGBLED_NUM 22 +#define RGBLED_SPLIT { 11, 11 } +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 3 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 +#define BOOTMAGIC_KEY_SALT KC_RSFT||KC_LSFT +#define BOOTMAGIC_KEY_SKIP KC_ESC +#define BOOTMAGIC_KEY_EEPROM_CLEAR KC_NO +#define OOTMAGIC_KEY_BOOTLOADER KC_RCTL||KC_LCTL +#define BOOTMAGIC_KEY_EE_HANDS_LEFT KC_T +#define BOOTMAGIC_KEY_EE_HANDS_RIGHT KC_Y +#define USE_SERIAL +#define SPLIT_USB_DETECT +#define EE_HANDS diff --git a/keyboards/momoka_ergo/info.json b/keyboards/momoka_ergo/info.json new file mode 100644 index 000000000000..058596fe55a5 --- /dev/null +++ b/keyboards/momoka_ergo/info.json @@ -0,0 +1,88 @@ +{ + "keyboard_name": "MOMOKA_ERGO", + "url": "", + "maintainer": "StefanGrindelwald", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"L05", "x":0, "y":0.375, "w":1.5}, + {"label":"L04", "x":1.5, "y":0.375}, + {"label":"L03", "x":2.5, "y":0.125}, + {"label":"L02", "x":3.5, "y":0}, + {"label":"L01", "x":4.5, "y":0.125}, + {"label":"L00", "x":5.5, "y":0.25}, + {"label":"R70", "x":12.5, "y":0.25}, + {"label":"R71", "x":13.5, "y":0.125}, + {"label":"R72", "x":14.5, "y":0}, + {"label":"R73", "x":15.5, "y":0.125}, + {"label":"R74", "x":16.5, "y":0.375}, + {"label":"R75", "x":17.5, "y":0.375, "w":1.5}, + + {"label":"L15", "x":0, "y":1.375, "w":1.5}, + {"label":"L14", "x":1.5, "y":1.375}, + {"label":"L13", "x":2.5, "y":1.125}, + {"label":"L12", "x":3.5, "y":1}, + {"label":"L11", "x":4.5, "y":1.125}, + {"label":"L10", "x":5.5, "y":1.25}, + {"label":"R80", "x":12.5, "y":1.25}, + {"label":"R81", "x":13.5, "y":1.125}, + {"label":"R82", "x":14.5, "y":1}, + {"label":"R83", "x":15.5, "y":1.125}, + {"label":"R84", "x":16.5, "y":1.375}, + {"label":"R85", "x":17.5, "y":1.375, "w":1.5}, + + {"label":"L25", "x":0, "y":2.375, "w":1.5}, + {"label":"L24", "x":1.5, "y":2.375}, + {"label":"L23", "x":2.5, "y":2.125}, + {"label":"L22", "x":3.5, "y":2}, + {"label":"L21", "x":4.5, "y":2.125}, + {"label":"L20", "x":5.5, "y":2.25}, + {"label":"R90", "x":12.5, "y":2.25}, + {"label":"R91", "x":13.5, "y":2.125}, + {"label":"R92", "x":14.5, "y":2}, + {"label":"R93", "x":15.5, "y":2.125}, + {"label":"R94", "x":16.5, "y":2.375}, + {"label":"R95", "x":17.5, "y":2.375, "w":1.5}, + + {"label":"L35", "x":0, "y":3.375, "w":1.5}, + {"label":"L34", "x":1.5, "y":3.375}, + {"label":"L33", "x":2.5, "y":3.125}, + {"label":"L32", "x":3.5, "y":3}, + {"label":"L31", "x":4.5, "y":3.125}, + {"label":"L30", "x":5.5, "y":3.25}, + {"label":"RA0", "x":12.5, "y":3.25}, + {"label":"RA1", "x":13.5, "y":3.125}, + {"label":"RA2", "x":14.5, "y":3}, + {"label":"RA3", "x":15.5, "y":3.125}, + {"label":"RA4", "x":16.5, "y":3.375}, + {"label":"RA5", "x":17.5, "y":3.375, "w":1.5}, + + {"label":"L45", "x":0.5, "y":4.375}, + {"label":"L44", "x":1.5, "y":4.375}, + {"label":"L43", "x":2.5, "y":4.125}, + {"label":"L42", "x":3.5, "y":4}, + {"label":"L41", "x":4.5, "y":4.125}, + {"label":"RB1", "x":13.5, "y":4.125}, + {"label":"RB2", "x":14.5, "y":4}, + {"label":"RB3", "x":15.5, "y":4.125}, + {"label":"RB4", "x":16.5, "y":4.375}, + {"label":"RB5", "x":17.5, "y":4.375}, + + {"label":"L51", "x":7, "y":4.875}, + {"label":"L40", "x":8, "y":4.875}, + {"label":"RB0", "x":10, "y":4.875}, + {"label":"RC1", "x":11, "y":4.875}, + + {"label":"L50", "x":8, "y":5.875}, + {"label":"RC0", "x":10, "y":5.875}, + + {"label":"L52", "x":6, "y":5.875, "h":2}, + {"label":"L61", "x":7, "y":5.875, "h":2}, + {"label":"L60", "x":8, "y":6.875}, + {"label":"RD0", "x":10, "y":6.875}, + {"label":"RD1", "x":11, "y":5.875, "h":2}, + {"label":"RC2", "x":12, "y":5.875, "h":2} + ] + } + } +} diff --git a/keyboards/momoka_ergo/keymaps/default/keymap.c b/keyboards/momoka_ergo/keymaps/default/keymap.c new file mode 100644 index 000000000000..01c01ed01383 --- /dev/null +++ b/keyboards/momoka_ergo/keymaps/default/keymap.c @@ -0,0 +1,58 @@ +/* Copyright 2021 StefanGrindelwald + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN1, + _FN2 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + MO(_FN1), KC_GRV, KC_EQL, KC_LEFT, KC_RGHT, KC_UP, KC_DOWN, KC_LBRC, KC_RBRC, MO(_FN1), + KC_LCTL, KC_LALT, KC_RGUI, KC_RCTL, + KC_HOME, KC_PGUP, + KC_BSPC, KC_DEL, KC_END, KC_PGDN, KC_ENT, KC_SPC + ), + [_FN1] = LAYOUT( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + MO(_FN2), _______, _______, _______, _______, _______, _______, _______, RGB_RMOD, RGB_MOD, RGB_TOG, MO(_FN2), + _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, RGB_VAI, RGB_VAD, RGB_SAI, RGB_SAD, _______, + _______, _______, _______, _______, + _______, RGB_HUI, + _______, _______, _______, RGB_HUD, _______, _______ + ), + [_FN2] = LAYOUT( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, RESET, _______, _______, _______, _______, RESET, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD, RGB_MOD, RGB_TOG, _______, + _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, RGB_VAI, RGB_VAD, RGB_SAI, RGB_SAD, _______, + _______, _______, _______, _______, + _______, RGB_HUI, + _______, _______, _______, RGB_HUD, _______, _______ + ) + +}; diff --git a/keyboards/momoka_ergo/keymaps/default/readme.md b/keyboards/momoka_ergo/keymaps/default/readme.md new file mode 100644 index 000000000000..390149d6bb3c --- /dev/null +++ b/keyboards/momoka_ergo/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for momoka_ergo diff --git a/keyboards/momoka_ergo/momoka_ergo.c b/keyboards/momoka_ergo/momoka_ergo.c new file mode 100644 index 000000000000..8069d7f51224 --- /dev/null +++ b/keyboards/momoka_ergo/momoka_ergo.c @@ -0,0 +1,17 @@ +/* Copyright 2021 StefanGrindelwald + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "momoka_ergo.h" diff --git a/keyboards/momoka_ergo/momoka_ergo.h b/keyboards/momoka_ergo/momoka_ergo.h new file mode 100644 index 000000000000..1bbc1b242ac2 --- /dev/null +++ b/keyboards/momoka_ergo/momoka_ergo.h @@ -0,0 +1,56 @@ +/* Copyright 2021 StefanGrindelwald + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + L05, L04, L03, L02, L01, L00, R70, R71, R72, R73, R74, R75, \ + L15, L14, L13, L12, L11, L10, R80, R81, R82, R83, R84, R85, \ + L25, L24, L23, L22, L21, L20, R90, R91, R92, R93, R94, R95, \ + L35, L34, L33, L32, L31, L30, RA0, RA1, RA2, RA3, RA4, RA5, \ + L45, L44, L43, L42, L41, RB1, RB2, RB3, RB4, RB5, \ + L51, L40, RB0, RC1, \ + L50, RC0, \ + L52, L61, L60, RD0, RD1, RC2 \ + ) \ + { \ + { L00, L01, L02, L03, L04, L05 }, \ + { L10, L11, L12, L13, L14, L15 }, \ + { L20, L21, L22, L23, L24, L25 }, \ + { L30, L31, L32, L33, L34, L35 }, \ + { L40, L41, L42, L43, L44, L45 }, \ + { L50, L51, L52, XXX, XXX, XXX }, \ + { L60, L61, XXX, XXX, XXX, XXX }, \ + { R70, R71, R72, R73, R74, R75 }, \ + { R80, R81, R82, R83, R84, R85 }, \ + { R90, R91, R92, R93, R94, R95 }, \ + { RA0, RA1, RA2, RA3, RA4, RA5 }, \ + { RB0, RB1, RB2, RB3, RB4, RB5 }, \ + { RC0, RC1, RC2, XXX, XXX, XXX }, \ + { RD0, RD1, XXX, XXX, XXX, XXX } \ + } diff --git a/keyboards/momoka_ergo/readme.md b/keyboards/momoka_ergo/readme.md new file mode 100644 index 000000000000..d0a289abaf84 --- /dev/null +++ b/keyboards/momoka_ergo/readme.md @@ -0,0 +1,29 @@ +# momoka_ergo + +![momoka_ergo](https://github.com/StefanGrindelwald/TestDemo/blob/master/Momoka_ergo.jpg?raw=true) + +The MOMOKA Ergo is a split keyboard that is based on the Ergodox standard layout. It has 35 keys and 11 RGB backlights on each part. The two parts of the keyboard is connected by a TRRS cable. + +* Keyboard Maintainer: [StefanGrindelwald](https://github.com/StefanGrindelwald) +* Hardware Supported: momoka.co/ergo +* Hardware Availability: momoka.co/ergo + +Bootloader: + +With the default keymap, you can easily use FN+Shift+D to enter the bootloader in left side and FN+shift+K in right side. Or you can just use the microswitch in the PCB. + +Make example for this keyboard (after setting up your build environment): + + make momoka_ergo:default + +Flashing example for this keyboard(Note that you need flash the both side keyboard respectively): + +For the left side: + + make momoka_ergo:default:dfu-split-left + +For the right side: + + make momoka_ergo:default:dfu-split-right + +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/momoka_ergo/rules.mk b/keyboards/momoka_ergo/rules.mk new file mode 100644 index 000000000000..a81ed50e2745 --- /dev/null +++ b/keyboards/momoka_ergo/rules.mk @@ -0,0 +1,20 @@ +# 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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +SPLIT_KEYBOARD = yes diff --git a/keyboards/monarch/info.json b/keyboards/monarch/info.json index a3c5ecabafe9..f8bc67f1c175 100644 --- a/keyboards/monarch/info.json +++ b/keyboards/monarch/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Monarch", "url": "", "maintainer": "Ramon Imbao", - "width": 16.75, - "height": 5.5, "layouts": { "LAYOUT_ansi": { "layout": [{"x":0.25, "y":0.25}, {"x":1.25, "y":0.25}, {"x":2.25, "y":0.25}, {"x":3.25, "y":0.25}, {"x":4.25, "y":0.25}, {"x":5.25, "y":0.25}, {"x":6.25, "y":0.25}, {"x":7.25, "y":0.25}, {"x":8.25, "y":0.25}, {"x":9.25, "y":0.25}, {"x":10.25, "y":0.25}, {"x":11.25, "y":0.25}, {"x":12.25, "y":0.25}, {"x":13.25, "y":0.25}, {"x":14.25, "y":0.25}, {"x":15.75, "y":0.25}, {"x":0.25, "y":1.25, "w":1.5}, {"x":1.75, "y":1.25}, {"x":2.75, "y":1.25}, {"x":3.75, "y":1.25}, {"x":4.75, "y":1.25}, {"x":5.75, "y":1.25}, {"x":6.75, "y":1.25}, {"x":7.75, "y":1.25}, {"x":8.75, "y":1.25}, {"x":9.75, "y":1.25}, {"x":10.75, "y":1.25}, {"x":11.75, "y":1.25}, {"x":12.75, "y":1.25}, {"x":13.75, "y":1.25, "w":1.5}, {"x":15.75, "y":1.75}, {"x":0.25, "y":2.25, "w":1.75}, {"x":2, "y":2.25}, {"x":3, "y":2.25}, {"x":4, "y":2.25}, {"x":5, "y":2.25}, {"x":6, "y":2.25}, {"x":7, "y":2.25}, {"x":8, "y":2.25}, {"x":9, "y":2.25}, {"x":10, "y":2.25}, {"x":11, "y":2.25}, {"x":12, "y":2.25}, {"x":13, "y":2.25, "w":2.25}, {"x":15.75, "y":2.75}, {"x":0.25, "y":3.25, "w":2.25}, {"x":2.5, "y":3.25}, {"x":3.5, "y":3.25}, {"x":4.5, "y":3.25}, {"x":5.5, "y":3.25}, {"x":6.5, "y":3.25}, {"x":7.5, "y":3.25}, {"x":8.5, "y":3.25}, {"x":9.5, "y":3.25}, {"x":10.5, "y":3.25}, {"x":11.5, "y":3.25}, {"x":12.5, "y":3.25, "w":1.75}, {"x":14.5, "y":3.5}, {"x":0.25, "y":4.25, "w":1.5}, {"x":1.75, "y":4.25}, {"x":2.75, "y":4.25, "w":1.5}, {"x":4.25, "y":4.25, "w":7}, {"x":11.25, "y":4.25, "w":1.5}, {"x":13.5, "y":4.5}, {"x":14.5, "y":4.5}, {"x":15.5, "y":4.5}] diff --git a/keyboards/monarch/rules.mk b/keyboards/monarch/rules.mk index bd08c22ee6b9..2503d9926e34 100644 --- a/keyboards/monarch/rules.mk +++ b/keyboards/monarch/rules.mk @@ -7,19 +7,17 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = yes # 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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output +SLEEP_LED_ENABLE = yes ENCODER_ENABLE = yes BACKLIGHT_DRIVER = pwm diff --git a/keyboards/monstargear/xo87/rgb/config.h b/keyboards/monstargear/xo87/rgb/config.h index 83eee83492c7..dabca04514d7 100644 --- a/keyboards/monstargear/xo87/rgb/config.h +++ b/keyboards/monstargear/xo87/rgb/config.h @@ -36,13 +36,61 @@ #define DIODE_DIRECTION ROW2COL #define RGB_DI_PIN D7 #define DRIVER_LED_TOTAL 110 -#define RGB_DISABLE_WHEN_USB_SUSPENDED true +#define RGB_DISABLE_WHEN_USB_SUSPENDED #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 100 // limits maximum brightness of LEDs to 100 out of 255. #define RGBLIGHT_LIMIT_VAL 100 // limits maximum brightness of LEDs to 100 out of 255. #define RGB_MATRIX_KEYPRESSES #define RGB_MATRIX_FRAMEBUFFER_EFFECTS #define RGBLED_NUM 110 +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH #define DEBOUNCE 5 #define LOCKING_SUPPORT_ENABLE diff --git a/keyboards/monstargear/xo87/rgb/info.json b/keyboards/monstargear/xo87/rgb/info.json index 251553d9b79d..000eb9b65e28 100644 --- a/keyboards/monstargear/xo87/rgb/info.json +++ b/keyboards/monstargear/xo87/rgb/info.json @@ -2,8 +2,6 @@ "keyboard_name": "XO87 RGB", "url": "https://www.monstargears.com/", "maintainer": "qmk", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT_tkl_ansi": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"@", "x":2, "y":1.5}, {"label":"#", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"Backspace", "x":13, "y":1.5, "w":2}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.25, "y":1.5}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":6.5, "y":2.5}, {"label":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"|", "x":13.5, "y":2.5, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, {"label":"Shift", "x":0, "y":4.5, "w":2.25}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"N", "x":7.25, "y":4.5}, {"label":"M", "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":"Shift", "x":12.25, "y":4.5, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, {"label":"Win", "x":1.25, "y":5.5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"label":"Alt", "x":10, "y":5.5, "w":1.25}, {"label":"Win", "x":11.25, "y":5.5, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.5, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}] diff --git a/keyboards/monstargear/xo87/rgb/rules.mk b/keyboards/monstargear/xo87/rgb/rules.mk index ec3bdd229929..a05363af4e65 100644 --- a/keyboards/monstargear/xo87/rgb/rules.mk +++ b/keyboards/monstargear/xo87/rgb/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = lufa-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -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 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output RGB_MATRIX_ENABLE = yes RGB_MATRIX_DRIVER = WS2812 diff --git a/keyboards/monstargear/xo87/solderable/info.json b/keyboards/monstargear/xo87/solderable/info.json index aeda0bc0289a..52a787790378 100644 --- a/keyboards/monstargear/xo87/solderable/info.json +++ b/keyboards/monstargear/xo87/solderable/info.json @@ -2,8 +2,6 @@ "keyboard_name": "XO87 Solderable", "url": "https://www.monstargears.com/", "maintainer": "qmk", - "width": 18.25, - "height": 6.25, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/monstargear/xo87/solderable/rules.mk b/keyboards/monstargear/xo87/solderable/rules.mk index 9ed17fc75022..35e7477c10c2 100644 --- a/keyboards/monstargear/xo87/solderable/rules.mk +++ b/keyboards/monstargear/xo87/solderable/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = lufa-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output BACKLIGHT_DRIVER = custom diff --git a/keyboards/montex/config.h b/keyboards/montex/config.h new file mode 100644 index 000000000000..2321ce364e68 --- /dev/null +++ b/keyboards/montex/config.h @@ -0,0 +1,64 @@ +/* Copyright 2021 NachoxMacho +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should 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 0x6964 +#define PRODUCT_ID 0x6060 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Idobao +#define PRODUCT Montex + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 5 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { D4, D6, D7, B4, B5, C6 } +#define MATRIX_COL_PINS { D5, D3, D2, D1, D0 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION ROW2COL + +/* number of backlight levels */ +#define BACKLIGHT_PIN B6 +#ifdef BACKLIGHT_PIN +#define BACKLIGHT_LEVELS 3 +#endif + +/* 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 RGB_DI_PIN B1 +#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 +#endif diff --git a/keyboards/montex/info.json b/keyboards/montex/info.json new file mode 100644 index 000000000000..c205e0027ab1 --- /dev/null +++ b/keyboards/montex/info.json @@ -0,0 +1,43 @@ +{ + "keyboard_name": "montex numpad", + "url": "https://www.idobao.net/products/ldobao-montex-pad-hot-swappable-mechanical-keyboard-kit", + "maintainer": "NachoxMacho", + "layouts": { + "LAYOUT_numpad_6x5": { + "layout": [ + { "label": "0,0", "x": 0, "y": 0}, + { "label": "0,1", "x": 1, "y": 0}, + { "label": "0,2", "x": 2, "y": 0}, + { "label": "0,3", "x": 3, "y": 0}, + { "label": "0,4", "x": 4, "y": 0}, + + { "label": "1,0", "x": 0, "y": 1.25}, + { "label": "1,1", "x": 1, "y": 1.25}, + { "label": "1,2", "x": 2, "y": 1.25}, + { "label": "1,3", "x": 3, "y": 1.25}, + { "label": "1,4", "x": 4, "y": 1.25}, + + { "label": "2,0", "x": 0, "y": 2.25}, + { "label": "2,1", "x": 1, "y": 2.25}, + { "label": "2,2", "x": 2, "y": 2.25}, + { "label": "2,3", "x": 3, "y": 2.25}, + + { "label": "3,0", "x": 0, "y": 3.25}, + { "label": "3,1", "x": 1, "y": 3.25}, + { "label": "3,2", "x": 2, "y": 3.25}, + { "label": "3,3", "x": 3, "y": 3.25}, + { "label": "3,4", "x": 4, "y": 2.25, "h": 2}, + + { "label": "4,0", "x": 0, "y": 4.25}, + { "label": "4,1", "x": 1, "y": 4.25}, + { "label": "4,2", "x": 2, "y": 4.25}, + { "label": "4,3", "x": 3, "y": 4.25}, + + { "label": "5,0", "x": 0, "y": 5.25}, + { "label": "5,1", "x": 1, "y": 5.25, "w": 2}, + { "label": "5,2", "x": 3, "y": 5.25}, + { "label": "5,3", "x": 4, "y": 4.25, "h": 2} + ] + } + } +} diff --git a/keyboards/montex/keymaps/default/keymap.c b/keyboards/montex/keymaps/default/keymap.c new file mode 100644 index 000000000000..a15c576cbbdb --- /dev/null +++ b/keyboards/montex/keymaps/default/keymap.c @@ -0,0 +1,67 @@ +/* Copyright 2021 NachoxMacho +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* 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] = { + /* + * ┌───┌───┬───┬───┬───┐ + * │ ` │Esc│Tab│MO1│Bsp│ + * ├───┼───┼───┼───┼───┤ + * │ , │Num│ / │ * │ - │ + * ├───┼───┼───┼───┼───┤ + * │Gui│ 7 │ 8 │ 9 │ │ + * ├───┼───┼───┼───┤ + │ + * │Alt│ 4 │ 5 │ 6 │ │ + * ├───┼───┼───┼───┼───┤ + * │Shi│ 1 │ 2 │ 3 │ │ + * ├───┼───┴───┼───┤Ent│ + * │Ctr│ 0 │ . │ │ + * └───┴───────┴───┴───┘ + */ + [0] = LAYOUT_numpad_6x5( + KC_GRAVE, KC_ESC, KC_TAB, MO(1), KC_BSPC, + KC_COMMA, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_LGUI, KC_P7, KC_P8, KC_P9, + KC_LALT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSHIFT, KC_P1, KC_P2, KC_P3, + KC_LCTRL, KC_P0, KC_PDOT, KC_PENT + ), + + /* + * ┌───┌───┐───┬───┬───┐ + * │Rst│ ` │Tab│MO1│Bsp│ + * ├───┼───┘───┼───┼───┤ + * │ , │Num│ / │ * │ - │ + * ├───┼───┼───┼───┼───┤ + * │Gui│Hom│ ↑ │PgU│ │ + * ├───┼───┼───┼───┤ + │ + * │Alt│ ← │ │ → │ │ + * ├───┼───┼───┼───┤───┤ + * │Shi│End│ ↓ │PgD│ │ + * ├───┼───┴───┼───┤Ent│ + * │Ctr│Insert │Del│ │ + * └───┴───────┴───┘───┘ + */ + [1] = LAYOUT_numpad_6x5( + RESET, _______, _______, _______, _______, + _______, _______, _______, _______, _______, + _______, KC_HOME, KC_UP, KC_PGUP, + _______, KC_LEFT, XXXXXXX, KC_RGHT, _______, + _______, KC_END, KC_DOWN, KC_PGDN, + _______, KC_INS, KC_DEL, _______ + ) +}; diff --git a/keyboards/montex/keymaps/via/keymap.c b/keyboards/montex/keymaps/via/keymap.c new file mode 100644 index 000000000000..eb7875dc32b2 --- /dev/null +++ b/keyboards/montex/keymaps/via/keymap.c @@ -0,0 +1,52 @@ +/* Copyright 2021 Tybera +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_numpad_6x5( + KC_GRAVE, KC_ESC, KC_TAB, MO(1), KC_BSPC, + KC_COMMA, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_LGUI, KC_P7, KC_P8, KC_P9, + KC_LALT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSHIFT, KC_P1, KC_P2, KC_P3, + KC_LCTRL, KC_P0, KC_PDOT, KC_PENT + ), + [1] = LAYOUT_numpad_6x5( + RESET, _______, _______, _______, _______, + _______, _______, _______, _______, _______, + _______, KC_HOME, KC_UP, KC_PGUP, + _______, KC_LEFT, XXXXXXX, KC_RGHT, _______, + _______, KC_END, KC_DOWN, KC_PGDN, + _______, KC_INS, KC_DEL, _______ + ), + [2] = LAYOUT_numpad_6x5( + _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______ + ), + [3] = LAYOUT_numpad_6x5( + _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______ + ) +}; diff --git a/keyboards/montex/keymaps/via/rules.mk b/keyboards/montex/keymaps/via/rules.mk new file mode 100644 index 000000000000..ca9fed0e6b53 --- /dev/null +++ b/keyboards/montex/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +LTO_ENABLE = yes +VIA_ENABLE = yes diff --git a/keyboards/montex/montex.c b/keyboards/montex/montex.c new file mode 100644 index 000000000000..4d3ecb186016 --- /dev/null +++ b/keyboards/montex/montex.c @@ -0,0 +1,17 @@ +/* Copyright 2021 NachoxMacho +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* 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 "montex.h" diff --git a/keyboards/montex/montex.h b/keyboards/montex/montex.h new file mode 100644 index 000000000000..d57097fa88b2 --- /dev/null +++ b/keyboards/montex/montex.h @@ -0,0 +1,35 @@ +/* Copyright 2021 NachoxMacho +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should 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_numpad_6x5( \ + K00, K01, K02, K03, K04, \ + K10, K11, K12, K13, K14, \ + K20, K21, K22, K23, \ + K30, K31, K32, K33, K34, \ + K40, K41, K42, K43, \ + K50, K51, K52, K53 \ +) { \ + { K00, K01, K02, K03, K04 }, \ + { K10, K11, K12, K13, K14 }, \ + { K20, K21, K22, K23, K34 }, \ + { K30, K31, K32, K33, KC_NO }, \ + { K40, K41, K42, K43, KC_NO }, \ + { K50, K51, K52, K53, KC_NO } \ +} diff --git a/keyboards/montex/readme.md b/keyboards/montex/readme.md new file mode 100644 index 000000000000..8c4a7226ce52 --- /dev/null +++ b/keyboards/montex/readme.md @@ -0,0 +1,21 @@ +# IDOBAO MONTEX + +A hotswap numpad from IDOBAO. + +## Support: + +* Keyboard Maintainer: [NachoxMacho](https://github.com/NachoxMacho) +* Hardware Supported: IDOBAO MONTEX +* Hardware Availability: [IDOBAO](https://www.idobao.net/products/ldobao-montex-pad-hot-swappable-mechanical-keyboard-kit) + + +To jump to the bootloader, the default in the repository and stock on the board is to hold the 4th key on the top row and tap the first key in the top row. +On some stock keyboard firmware, the top and second from the top row pins have been reversed so you may need to press those keys on the second row. +If none of that works, there is a reset button on the PCB underside which you can access by removing the back plate. +Then press the button labeled SW2 located between the 2 upper LEDs. + +Make example for this keyboard (after setting up your build environment): + + make montex: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/montex/rules.mk b/keyboards/montex/rules.mk new file mode 100644 index 000000000000..1f44da3ea6c9 --- /dev/null +++ b/keyboards/montex/rules.mk @@ -0,0 +1,19 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/montsinger/rebound/rev1/info.json b/keyboards/montsinger/rebound/rev1/info.json index 5865aa66a30a..4bfd500950c1 100644 --- a/keyboards/montsinger/rebound/rev1/info.json +++ b/keyboards/montsinger/rebound/rev1/info.json @@ -2,8 +2,6 @@ "keyboard": "montsinger/rebound/rev1", "url": "https://montsinger.net", "maintainer": "rossman360", - "width": 13, - "height": 4, "layouts": { "LAYOUT_ortho_4x12": { "layout": [ @@ -58,4 +56,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/montsinger/rebound/rev1/rules.mk b/keyboards/montsinger/rebound/rev1/rules.mk index 20d2a96f126e..c4aba67c9319 100644 --- a/keyboards/montsinger/rebound/rev1/rules.mk +++ b/keyboards/montsinger/rebound/rev1/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = ortho_4x12 LAYOUTS_HAS_RGB = no diff --git a/keyboards/montsinger/rebound/rev2/info.json b/keyboards/montsinger/rebound/rev2/info.json index 3c9cdbe82c6c..b732b9487b2d 100644 --- a/keyboards/montsinger/rebound/rev2/info.json +++ b/keyboards/montsinger/rebound/rev2/info.json @@ -2,8 +2,6 @@ "keyboard":"montsinger/rebound/rev2", "url": "https://montsinger.net", "maintainer": "rossman360", - "width": 13, - "height": 4, "layouts": { "LAYOUT_all": { "layout": [ @@ -125,4 +123,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/montsinger/rebound/rev2/rules.mk b/keyboards/montsinger/rebound/rev2/rules.mk index 040b2de490e2..451a263e60dc 100644 --- a/keyboards/montsinger/rebound/rev2/rules.mk +++ b/keyboards/montsinger/rebound/rev2/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes LAYOUTS = ortho_4x12 diff --git a/keyboards/montsinger/rebound/rev3/info.json b/keyboards/montsinger/rebound/rev3/info.json index bf4a540b7164..aa435c7815f0 100644 --- a/keyboards/montsinger/rebound/rev3/info.json +++ b/keyboards/montsinger/rebound/rev3/info.json @@ -2,8 +2,6 @@ "keyboard":"montsinger/rebound/rev3", "url": "https://montsinger.net", "maintainer": "rossman360", - "width": 13, - "height": 4, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/montsinger/rebound/rev3/keymaps/rossman360/keymap.c b/keyboards/montsinger/rebound/rev3/keymaps/rossman360/keymap.c index ab2b52a72dc1..207f907f6d5b 100644 --- a/keyboards/montsinger/rebound/rev3/keymaps/rossman360/keymap.c +++ b/keyboards/montsinger/rebound/rev3/keymaps/rossman360/keymap.c @@ -74,8 +74,8 @@ case _BASE: return true; } -#ifdef OLED_DRIVER_ENABLE -void oled_task_user(void) { +#ifdef OLED_ENABLE +bool oled_task_user(void) { // Host Keyboard Layer Status oled_write_P(PSTR(""), false); @@ -107,6 +107,7 @@ void oled_task_user(void) { oled_write_P(led_state.caps_lock ? PSTR("CAPS") : PSTR(" "), false); oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); + return false; } #endif diff --git a/keyboards/montsinger/rebound/rev3/keymaps/rossman360/rules.mk b/keyboards/montsinger/rebound/rev3/keymaps/rossman360/rules.mk index ca475d2e1796..59f78f834dd2 100644 --- a/keyboards/montsinger/rebound/rev3/keymaps/rossman360/rules.mk +++ b/keyboards/montsinger/rebound/rev3/keymaps/rossman360/rules.mk @@ -1,4 +1,4 @@ MOUSEKEY_ENABLE = no # Mouse keys CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -OLED_DRIVER_ENABLE = no +OLED_ENABLE = no diff --git a/keyboards/montsinger/rebound/rev3/rules.mk b/keyboards/montsinger/rebound/rev3/rules.mk index 040b2de490e2..451a263e60dc 100644 --- a/keyboards/montsinger/rebound/rev3/rules.mk +++ b/keyboards/montsinger/rebound/rev3/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes LAYOUTS = ortho_4x12 diff --git a/keyboards/montsinger/rebound/rev4/info.json b/keyboards/montsinger/rebound/rev4/info.json index 23893b6c689f..d76547a21687 100644 --- a/keyboards/montsinger/rebound/rev4/info.json +++ b/keyboards/montsinger/rebound/rev4/info.json @@ -2,8 +2,6 @@ "keyboard":"montsinger/rebound/rev4", "url": "https://montsinger.net", "maintainer": "rossman360", - "width": 13, - "height": 4, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/montsinger/rebound/rev4/keymaps/rossman360/keymap.c b/keyboards/montsinger/rebound/rev4/keymaps/rossman360/keymap.c index b6f5dc7ddc8d..d49465eea9cf 100644 --- a/keyboards/montsinger/rebound/rev4/keymaps/rossman360/keymap.c +++ b/keyboards/montsinger/rebound/rev4/keymaps/rossman360/keymap.c @@ -83,8 +83,8 @@ case _DEL: return true; } -#ifdef OLED_DRIVER_ENABLE -void oled_task_user(void) { +#ifdef OLED_ENABLE +bool oled_task_user(void) { // Host Keyboard Layer Status oled_write_P(PSTR(""), false); @@ -116,6 +116,7 @@ void oled_task_user(void) { oled_write_P(led_state.caps_lock ? PSTR("CAPS") : PSTR(" "), false); oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); + return false; } #endif diff --git a/keyboards/montsinger/rebound/rev4/keymaps/rossman360/rules.mk b/keyboards/montsinger/rebound/rev4/keymaps/rossman360/rules.mk index fa835793e75a..f1fb91cc36f4 100644 --- a/keyboards/montsinger/rebound/rev4/keymaps/rossman360/rules.mk +++ b/keyboards/montsinger/rebound/rev4/keymaps/rossman360/rules.mk @@ -1,4 +1,4 @@ MOUSEKEY_ENABLE = no CONSOLE_ENABLE = no COMMAND_ENABLE = no -OLED_DRIVER_ENABLE = no +OLED_ENABLE = no diff --git a/keyboards/montsinger/rebound/rev4/rules.mk b/keyboards/montsinger/rebound/rev4/rules.mk index a1c4c481c398..27973388b645 100644 --- a/keyboards/montsinger/rebound/rev4/rules.mk +++ b/keyboards/montsinger/rebound/rev4/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes LAYOUTS = ortho_4x12 diff --git a/keyboards/montsinger/rewind/info.json b/keyboards/montsinger/rewind/info.json index 315670994a23..ecd7c211177f 100644 --- a/keyboards/montsinger/rewind/info.json +++ b/keyboards/montsinger/rewind/info.json @@ -2,8 +2,6 @@ "keyboard":"montsinger/rewind", "url": "https://montsinger.net", "maintainer": "rossman360", - "width": 10, - "height": 5, "layouts": { "LAYOUT_ortho_5x10": { "layout": [ @@ -65,4 +63,3 @@ } } } - diff --git a/keyboards/montsinger/rewind/rules.mk b/keyboards/montsinger/rewind/rules.mk index 6a4557aabc75..e7a8c85dbbfa 100644 --- a/keyboards/montsinger/rewind/rules.mk +++ b/keyboards/montsinger/rewind/rules.mk @@ -2,26 +2,15 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/moon/info.json b/keyboards/moon/info.json index d7182ee367d2..b25f34eb0ca5 100644 --- a/keyboards/moon/info.json +++ b/keyboards/moon/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Moon", "url": "https://geekhack.org/index.php?topic=90379.0", "maintainer": "qmk", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT_all": { - "key_count": 88, "layout": [ {"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, @@ -99,7 +96,6 @@ ] }, "LAYOUT_tkl_ansi": { - "key_count": 87, "layout": [ {"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, @@ -191,7 +187,6 @@ ] }, "LAYOUT_tkl_ansi_wkl": { - "key_count": 84, "layout": [ {"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, @@ -280,7 +275,6 @@ ] }, "LAYOUT_tkl_iso": { - "key_count": 88, "layout": [ {"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, @@ -373,7 +367,6 @@ ] }, "LAYOUT_tkl_iso_wkl": { - "key_count": 85, "layout": [ {"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, @@ -464,4 +457,3 @@ } } } - diff --git a/keyboards/moon/rules.mk b/keyboards/moon/rules.mk index 2878fed9f573..8f6e7d0c2e8a 100644 --- a/keyboards/moon/rules.mk +++ b/keyboards/moon/rules.mk @@ -2,33 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# 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 = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output # custom matrix setup CUSTOM_MATRIX = yes diff --git a/keyboards/moonlander/config.h b/keyboards/moonlander/config.h index c88feea3d006..1c6cbb5c63c1 100644 --- a/keyboards/moonlander/config.h +++ b/keyboards/moonlander/config.h @@ -1,6 +1,6 @@ /* Copyright 2020 ZSA Technology Labs, Inc <@zsa> * Copyright 2020 Jack Humbert - * Copyright 2020 Christopher Courtney (@drashna) + * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -91,7 +91,55 @@ #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 175 #define RGB_MATRIX_FRAMEBUFFER_EFFECTS #define RGB_MATRIX_KEYPRESSES -#define RGB_DISABLE_WHEN_USB_SUSPENDED true +#define RGB_DISABLE_WHEN_USB_SUSPENDED +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH #define MUSIC_MAP @@ -99,8 +147,9 @@ #define DYNAMIC_KEYMAP_EEPROM_ADDR (EECONFIG_SIZE + FIRMWARE_VERSION_SIZE) #ifdef EEPROM_I2C # define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 16383 -# define DYNAMIC_KEYMAP_LAYER_COUNT 32 +# define DYNAMIC_KEYMAP_LAYER_COUNT 8 #endif +#define VIA_QMK_RGBLIGHT_ENABLE #define AUDIO_PIN A5 #define AUDIO_PIN_ALT A4 diff --git a/keyboards/moonlander/halconf.h b/keyboards/moonlander/halconf.h new file mode 100644 index 000000000000..46b53b1a7f67 --- /dev/null +++ b/keyboards/moonlander/halconf.h @@ -0,0 +1,22 @@ +/* Copyright 2021 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#define HAL_USE_I2C TRUE +#define HAL_USE_GPT TRUE +#define HAL_USE_DAC TRUE + +#include_next diff --git a/keyboards/moonlander/info.json b/keyboards/moonlander/info.json index 34f4e8a9aef4..60b560eeee21 100644 --- a/keyboards/moonlander/info.json +++ b/keyboards/moonlander/info.json @@ -2,9 +2,6 @@ "keyboard_name": "Moonlander Mark I", "url": "zsa.io/moonlander", "maintainer": "ZSA via Drashna", - "width": 17, - "height": 8, - "layouts": { "LAYOUT_moonlander": { "layout": [ diff --git a/keyboards/moonlander/keymaps/default/config.h b/keyboards/moonlander/keymaps/default/config.h index 576aae9f52f7..83ea2a1b583a 100644 --- a/keyboards/moonlander/keymaps/default/config.h +++ b/keyboards/moonlander/keymaps/default/config.h @@ -1,6 +1,6 @@ /* Copyright 2020 ZSA Technology Labs, Inc <@zsa> * Copyright 2020 Jack Humbert - * Copyright 2020 Christopher Courtney (@drashna) + * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/keyboards/moonlander/keymaps/default/keymap.c b/keyboards/moonlander/keymaps/default/keymap.c index 6d98a8607e4c..0cb7fa5d2720 100644 --- a/keyboards/moonlander/keymaps/default/keymap.c +++ b/keyboards/moonlander/keymaps/default/keymap.c @@ -1,6 +1,6 @@ /* Copyright 2020 ZSA Technology Labs, Inc <@zsa> * Copyright 2020 Jack Humbert - * Copyright 2020 Christopher Courtney (@drashna) + * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/keyboards/moonlander/keymaps/drashna/keymap.c b/keyboards/moonlander/keymaps/drashna/keymap.c index 57c69df48071..cd53b1e100fb 100644 --- a/keyboards/moonlander/keymaps/drashna/keymap.c +++ b/keyboards/moonlander/keymaps/drashna/keymap.c @@ -16,10 +16,6 @@ #include "drashna.h" -#ifndef UNICODE_ENABLE -# define UC(x) KC_NO -#endif - enum more_custom_keycodes { KC_SWAP_NUM = NEW_SAFE_RANGE }; // clang-format off @@ -32,75 +28,39 @@ enum more_custom_keycodes { KC_SWAP_NUM = NEW_SAFE_RANGE }; ) \ LAYOUT_moonlander_wrapper( \ KC_ESC, ________________NUMBER_LEFT________________, UC_FLIP, UC_TABL, ________________NUMBER_RIGHT_______________, KC_MINS, \ - KC_TAB, K01, K02, K03, K04, K05, TG_DBLO,TG_DBLO, K06, K07, K08, K09, K0A, KC_BSLS, \ - KC_C1R3, K11, K12, K13, K14, K15, TG_GAME,TG_GAME, K16, K17, K18, K19, K1A, RALT_T(K1B), \ + KC_TAB, K01, K02, K03, K04, K05, TG_DBLO, TG_DBLO, K06, K07, K08, K09, K0A, KC_BSLS, \ + KC_C1R3, K11, K12, K13, K14, K15, TG_GAME, TG_GAME, K16, K17, K18, K19, K1A, RALT_T(K1B), \ KC_MLSF, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A),KC_MRSF, \ - KC_GRV, OS_MEH, OS_HYPR, KC_LBRC, KC_RBRC, KC_NO, KC_DEL, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, UC(0x2E2E), \ + KC_GRV, OS_MEH, OS_HYPR, KC_LBRC, KC_RBRC, UC_CLUE, KC_DEL, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, UC_IRNY, \ KC_SPC, BK_LWER, OS_LALT, OS_RGUI, DL_RAIS, KC_ENT \ ) -#define LAYOUT_moonlander_base_wrapper(...) LAYOUT_moonlander_base(__VA_ARGS__) +#define LAYOUT_base_wrapper(...) LAYOUT_moonlander_base(__VA_ARGS__) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_QWERTY] = LAYOUT_moonlander_base_wrapper( + [_DEFAULT_LAYER_1] = LAYOUT_base_wrapper( _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, _________________QWERTY_L3_________________, _________________QWERTY_R3_________________ ), - [_COLEMAK] = LAYOUT_moonlander_base_wrapper( + [_DEFAULT_LAYER_2] = LAYOUT_base_wrapper( + ______________COLEMAK_MOD_DH_L1____________, ______________COLEMAK_MOD_DH_R1____________, + ______________COLEMAK_MOD_DH_L2____________, ______________COLEMAK_MOD_DH_R2____________, + ______________COLEMAK_MOD_DH_L3____________, ______________COLEMAK_MOD_DH_R3____________ + ), + [_DEFAULT_LAYER_3] = LAYOUT_base_wrapper( _________________COLEMAK_L1________________, _________________COLEMAK_R1________________, _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, _________________COLEMAK_L3________________, _________________COLEMAK_R3________________ ), - [_DVORAK] = LAYOUT_moonlander_base_wrapper( + [_DEFAULT_LAYER_4] = LAYOUT_base_wrapper( _________________DVORAK_L1_________________, _________________DVORAK_R1_________________, _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, _________________DVORAK_L3_________________, _________________DVORAK_R3_________________ ), - [_WORKMAN] = LAYOUT_moonlander_base_wrapper( - _________________WORKMAN_L1________________, _________________WORKMAN_R1________________, - _________________WORKMAN_L2________________, _________________WORKMAN_R2________________, - _________________WORKMAN_L3________________, _________________WORKMAN_R3________________ - ), - - [_NORMAN] = LAYOUT_moonlander_base_wrapper( - _________________NORMAN_L1_________________, _________________NORMAN_L1_________________, - _________________NORMAN_L2_________________, _________________NORMAN_R2_________________, - _________________NORMAN_L3_________________, _________________NORMAN_R3_________________ - ), - - [_MALTRON] = LAYOUT_moonlander_base_wrapper( - _________________MALTRON_L1________________, _________________MALTRON_R1________________, - _________________MALTRON_L2________________, _________________MALTRON_R2________________, - _________________MALTRON_L3________________, _________________MALTRON_R3________________ - ), - - [_EUCALYN] = LAYOUT_moonlander_base_wrapper( - _________________EUCALYN_L1________________, _________________EUCALYN_R1________________, - _________________EUCALYN_L2________________, _________________EUCALYN_R2________________, - _________________EUCALYN_L3________________, _________________EUCALYN_R3________________ - ), - - [_CARPLAX] = LAYOUT_moonlander_base_wrapper( - _____________CARPLAX_QFMLWY_L1_____________, _____________CARPLAX_QFMLWY_R1_____________, - _____________CARPLAX_QFMLWY_L2_____________, _____________CARPLAX_QFMLWY_R2_____________, - _____________CARPLAX_QFMLWY_L3_____________, _____________CARPLAX_QFMLWY_R3_____________ - ), - -#ifdef _MODS - [_MODS] = LAYOUT_moonlander_wrapper( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_RSFT, - _______, KC_MEH, KC_HYPR, _______, _______, _______, _______, _______, _______, _______, _______, _______, - KC_LALT, _______, _______, _______, _______, KC_RGUI - ), -#endif [_GAMEPAD] = LAYOUT_moonlander_wrapper( KC_ESC, KC_NO, KC_1, KC_2, KC_3, KC_4, HYPR(KC_Q), KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, @@ -118,6 +78,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_NO, KC_NO, KC_L, KC_J, KC_F, KC_PSCR, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_DIABLO_CLEAR, SFT_T(KC_SPACE), ALT_T(KC_Q), KC_PGDN, KC_DEL, KC_ENT ), + [_DIABLOII] = LAYOUT_moonlander_wrapper( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_GRV, KC_NO, KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, + KC_TAB, KC_A, KC_T, KC_Q, KC_I, KC_M, TG(_DIABLOII), KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_S, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_LCTL, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_N, KC_M, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_G, KC_F, KC_L, KC_V, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_G, KC_LSFT, KC_LCTL, KC_PGDN, KC_DEL, KC_ENT + ), [_LOWER] = LAYOUT_moonlander_wrapper( KC_F12, _________________FUNC_LEFT_________________, _______, _______, _________________FUNC_RIGHT________________, KC_F11, @@ -138,10 +106,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_ADJUST] = LAYOUT_moonlander_wrapper( - KC_MAKE, _________________FUNC_LEFT_________________, UC_MOD, KC_NUKE, _________________ADJUST_R1_________________, KC_RST, - VRSN, _________________ADJUST_L1_________________, _______, _______, _________________ADJUST_R1_________________, EEP_RST, - _______, _________________ADJUST_L2_________________, _______, _______, _________________ADJUST_R2_________________, RGB_IDL, - _______, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, TG_MODS, + KC_MAKE, KC_WIDE,KC_AUSSIE,KC_SCRIPT,KC_ZALGO,KC_NOMODE,_______, KC_NUKE,KC_NOMODE,KC_BLOCKS,KC_REGIONAL,_______,_______, KC_RST, + VRSN, _________________ADJUST_L1_________________, TG(_DIABLOII), _______, _________________ADJUST_R1_________________, EEP_RST, + KEYLOCK, _________________ADJUST_L2_________________, _______, _______, _________________ADJUST_R2_________________, RGB_IDL, + UC_MOD, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, TG_MODS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PAUS, _______, _______, _______, _______, _______, _______ ), @@ -214,29 +182,17 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { if (userspace_config.rgb_layer_change) { switch (get_highest_layer(layer_state|default_layer_state)) { - case _QWERTY: - rgb_matrix_layer_helper(HSV_CYAN, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); - break; - case _COLEMAK: - rgb_matrix_layer_helper(HSV_MAGENTA, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); - break; - case _DVORAK: - rgb_matrix_layer_helper(HSV_SPRINGGREEN, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); - break; - case _WORKMAN: - rgb_matrix_layer_helper(HSV_GOLDENROD, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); - break; - case _NORMAN: - rgb_matrix_layer_helper(HSV_CORAL, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); + case _DEFAULT_LAYER_1: + rgb_matrix_layer_helper(DEFAULT_LAYER_1_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); break; - case _MALTRON: - rgb_matrix_layer_helper(HSV_YELLOW, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); + case _DEFAULT_LAYER_2: + rgb_matrix_layer_helper(DEFAULT_LAYER_2_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); break; - case _EUCALYN: - rgb_matrix_layer_helper(HSV_PINK, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); + case _DEFAULT_LAYER_3: + rgb_matrix_layer_helper(DEFAULT_LAYER_3_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); break; - case _CARPLAX: - rgb_matrix_layer_helper(HSV_BLUE, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); + case _DEFAULT_LAYER_4: + rgb_matrix_layer_helper(DEFAULT_LAYER_4_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); break; case _GAMEPAD: rgb_matrix_layer_helper(HSV_ORANGE, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); diff --git a/keyboards/moonlander/keymaps/drashna/rules.mk b/keyboards/moonlander/keymaps/drashna/rules.mk index 480e9744631c..2a6d20bed54c 100644 --- a/keyboards/moonlander/keymaps/drashna/rules.mk +++ b/keyboards/moonlander/keymaps/drashna/rules.mk @@ -1,4 +1,4 @@ TAP_DANCE_ENABLE = yes -BOOTMAGIC_ENABLE = lite +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite UNICODE_ENABLE = yes UNICODEMAP_ENABLE = no diff --git a/keyboards/moonlander/keymaps/jjerrell/config.h b/keyboards/moonlander/keymaps/jjerrell/config.h new file mode 100644 index 000000000000..1fd17fbbe33f --- /dev/null +++ b/keyboards/moonlander/keymaps/jjerrell/config.h @@ -0,0 +1,27 @@ +/* Copyright 2020 ZSA Technology Labs, Inc <@zsa> + * Copyright 2020 Jack Humbert + * Copyright 2020 Christopher Courtney (@drashna) + * Copyright 2021 Jacob Jerrell <@jjerrell> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define ORYX_CONFIGURATOR + +#undef PRODUCT +#define PRODUCT Moonlander Mark I - Modified by <@jjerrell> + +#define IGNORE_MOD_TAP_INTERRUPT diff --git a/keyboards/moonlander/keymaps/jjerrell/keymap.c b/keyboards/moonlander/keymaps/jjerrell/keymap.c new file mode 100644 index 000000000000..012b77367890 --- /dev/null +++ b/keyboards/moonlander/keymaps/jjerrell/keymap.c @@ -0,0 +1,117 @@ +/** + * Copyright (C) 2021 Jerrell, Jacob <@jjerrell> + * + * This file is part of qmk_firmware. + * + * qmk_firmware is free software: you can 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. + * + * qmk_firmware is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with qmk_firmware. If not, see . + */ + +#include "jjerrell.h" + +enum moonlander_layers { + _GAME_LOWER = LAYER_SAFE_RANGE, + // _GAME_RAISE, +}; + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_WORKMAN] = LAYOUT_moonlander_mods( + __________________WORKMN_L1__________________, __________________WORKMN_R1__________________, + __________________WORKMN_L2__________________, __________________WORKMN_R2__________________, + __________________WORKMN_L3__________________, __________________WORKMN_R3__________________, + XXXXXXX, XXXXXXX, XXXXXXX, KC_LSFT, KC_RSFT, XXXXXXX, XXXXXXX, XXXXXXX + ), + + [_LOWER] = LAYOUT_moonlander_mods( + __________________LOWER_L1___________________, __________________LOWER_R1___________________, + __________________LOWER_L2___________________, __________________LOWER_R2___________________, + __________________LOWER_L3___________________, __________________LOWER_R3___________________, + XXXXXXX, XXXXXXX, XXXXXXX, KC_LSFT, KC_0, KC_DOT, KC_COMM, KC_PLUS + ), + + [_RAISE] = LAYOUT_moonlander_common( + __________________RAISE_L1___________________, __________________RAISE_R1___________________, + __________________RAISE_L2___________________, __________________RAISE_R2___________________, + __________________RAISE_L3___________________, __________________RAISE_R3___________________, + XXXXXXX, XXXXXXX, XXXXXXX, KC_LSFT, KC_RSFT, XXXXXXX, XXXXXXX, XXXXXXX + ), + + [_ADJUST] = LAYOUT_moonlander_common( + __________________ADJUST_L1__________________, __________________ADJUST_R1__________________, + __________________ADJUST_L2__________________, __________________ADJUST_R2__________________, + __________________ADJUST_L3__________________, __________________ADJUST_R3__________________, + XXXXXXX, XXXXXXX, XXXXXXX, KC_LSFT, KC_RSFT, XXXXXXX, XXXXXXX, XXXXXXX + ), + + [_SPECIAL] = LAYOUT_moonlander_common( + XXXXXXX, XXXXXXX, KC_WH_D, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, KC_WH_L, KC_WH_U, KC_WH_R, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, KC_LALT, KC_RALT, XXXXXXX, XXXXXXX, XXXXXXX + ), + + [_GAME] = LAYOUT_moonlander_gamepad( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, + KC_TAB, __________________QWERTY_L1__________________, KC_SLSH, + KC_LALT, __________________QWERTY_L2__________________, KC_BSLS, + KC_LSFT, __________________QWERTY_L3__________________, + KC_LGUI, MACRO_1, MACRO_2, MACRO_3, MACRO_4, KC_LOCK, + KC_SPC, KC_BTN2, MO(_LOWER) + ), + [_GAME_LOWER] = LAYOUT_moonlander_gamepad( + KC_GRV, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, + KC_TAB, __________________QWERTY_L1__________________, KC_SLSH, + KC_LALT, __________________QWERTY_L2__________________, KC_BSLS, + KC_LSFT, __________________QWERTY_L3__________________, + KC_LGUI, MACRO_5, MACRO_6, MACRO_7, MACRO_8, KC_LOCK, + KC_SPC, KC_BTN2, MO(_LOWER) + ) +}; +// clang-format on + +layer_state_t layer_state_set_keymap(layer_state_t state) { + ML_LED_1(0); + ML_LED_2(0); + ML_LED_3(0); + ML_LED_4(0); + ML_LED_5(0); + ML_LED_6(0); + state = update_tri_layer_state(state, _GAME, _LOWER, _GAME_LOWER); + switch (get_highest_layer(state)) { + case 1: + ML_LED_1(1); + ML_LED_4(1); + break; + case 2: + ML_LED_2(1); + ML_LED_5(1); + break; + case 3: + ML_LED_3(1); + break; + case 4: + ML_LED_4(1); + break; + case 5: + ML_LED_5(1); + break; + case 6: + ML_LED_6(1); + break; + default: + break; + } + + return state; +} diff --git a/keyboards/moonlander/keymaps/jjerrell/readme.md b/keyboards/moonlander/keymaps/jjerrell/readme.md new file mode 100644 index 000000000000..51476f8ab998 --- /dev/null +++ b/keyboards/moonlander/keymaps/jjerrell/readme.md @@ -0,0 +1,3 @@ +# Jacob Jerrell's Moonlander Keymap + +Concrete proof and acceptance of a problem. There is some not so custom Moonlander LED control in here but everything else is implemented in [my userspace](../../../../users/jjerrell/). diff --git a/keyboards/moonlander/keymaps/jjerrell/rules.mk b/keyboards/moonlander/keymaps/jjerrell/rules.mk new file mode 100644 index 000000000000..ef72559a0c1f --- /dev/null +++ b/keyboards/moonlander/keymaps/jjerrell/rules.mk @@ -0,0 +1 @@ +AUDIO_ENABLE = yes diff --git a/keyboards/moonlander/keymaps/manna-harbour_miryoku/config.h b/keyboards/moonlander/keymaps/manna-harbour_miryoku/config.h new file mode 100644 index 000000000000..6ea1541da295 --- /dev/null +++ b/keyboards/moonlander/keymaps/manna-harbour_miryoku/config.h @@ -0,0 +1,24 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . + +#pragma once + +#define XXX KC_NO + +#define LAYOUT_miryoku(\ + 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,\ + N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +LAYOUT_moonlander(\ +XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,\ +XXX, K00, K01, K02, K03, K04, XXX, XXX, K05, K06, K07, K08, K09, XXX,\ +XXX, K10, K11, K12, K13, K14, XXX, XXX, K15, K16, K17, K18, K19, XXX,\ +XXX, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, XXX,\ +XXX, XXX, XXX, XXX, K32, XXX, XXX, K37, XXX, XXX, XXX, XXX,\ + K33, K34, XXX, XXX, K35, K36\ +) diff --git a/keyboards/moonlander/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/moonlander/keymaps/manna-harbour_miryoku/keymap.c new file mode 100644 index 000000000000..7c5717a0fee0 --- /dev/null +++ b/keyboards/moonlander/keymaps/manna-harbour_miryoku/keymap.c @@ -0,0 +1,5 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/keyboards/moonlander/keymaps/via/keymap.c b/keyboards/moonlander/keymaps/via/keymap.c new file mode 100644 index 000000000000..13a299b434cd --- /dev/null +++ b/keyboards/moonlander/keymaps/via/keymap.c @@ -0,0 +1,126 @@ +/* Copyright 2020 ZSA Technology Labs, Inc <@zsa> + * Copyright 2020 Jack Humbert + * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + + +#include QMK_KEYBOARD_H +#include "version.h" + +enum layers { + BASE, // default layer + SYMB, // symbols + MDIA, // media keys +}; + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [BASE] = LAYOUT_moonlander( + KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_HYPR, KC_MEH, KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN), LGUI_T(KC_QUOT), + KC_LSFT, LCTL_T(KC_Z),KC_X,KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RCTL_T(KC_SLSH), KC_RSFT, + LT(SYMB,KC_GRV),WEBUSB_PAIR,A(KC_LSFT),KC_LEFT, KC_RGHT, LALT_T(KC_APP), RCTL_T(KC_ESC), KC_UP, KC_DOWN, KC_LBRC, KC_RBRC, MO(SYMB), + KC_SPC, KC_BSPC, KC_LGUI, KC_LALT, KC_TAB, KC_ENT + ), + + [SYMB] = LAYOUT_moonlander( + USER00, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + _______, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, _______, _______, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12, + _______, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV, _______, _______, KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, _______, + _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, _______, + _______, _______, _______, _______, _______, RGB_VAI, RGB_TOG, _______, KC_DOT, KC_0, KC_EQL, _______, + RGB_HUD, RGB_VAD, RGB_HUI, _______, _______, _______ + ), + + [MDIA] = LAYOUT_moonlander( + USER01, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, + _______, _______, _______, KC_MS_U, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, + _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, _______, _______, + _______, _______, _______, KC_BTN1, KC_BTN2, _______, _______, KC_VOLU, KC_VOLD, KC_MUTE, _______, _______, + _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_moonlander( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______ + ), + [4] = LAYOUT_moonlander( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______ + ), + [5] = LAYOUT_moonlander( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______ + ), + [6] = LAYOUT_moonlander( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______ + ), + [7] = LAYOUT_moonlander( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______ + ), +}; +// clang-format on + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case USER00: + if (record->event.pressed) { + SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); + } + return false; + case USER01: + if (record->event.pressed) { + keyboard_config.led_level ^= 1; + eeconfig_update_kb(keyboard_config.raw); + if (keyboard_config.led_level) { + layer_state_set_kb(layer_state); + } else { + ML_LED_1(false); + ML_LED_2(false); + ML_LED_3(false); + ML_LED_4(false); + ML_LED_5(false); + ML_LED_6(false); + } + } + break; + } + return true; +} diff --git a/keyboards/moonlander/keymaps/via/readme.md b/keyboards/moonlander/keymaps/via/readme.md new file mode 100644 index 000000000000..8bede7bee361 --- /dev/null +++ b/keyboards/moonlander/keymaps/via/readme.md @@ -0,0 +1,7 @@ +# VIA Keymap for the Moonlander + +This is based on the default layout for the Moonlander keyboard from ZSA Techonology Labs. + +ZSA does not provide any support for VIA (the app or firmware feature). Any and all issues should be directed to [VIA](https://github.com/the-via). + +Initial flash and reflash may make the keyboard look like it has locked up. This is because it can take a while to load the EEPROM data (the keymap), and is halted by that process until it's finished. diff --git a/keyboards/moonlander/keymaps/via/rules.mk b/keyboards/moonlander/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/moonlander/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/moonlander/matrix.c b/keyboards/moonlander/matrix.c index 566f8bb1b214..782f131a501f 100644 --- a/keyboards/moonlander/matrix.c +++ b/keyboards/moonlander/matrix.c @@ -1,6 +1,6 @@ /* Copyright 2020 ZSA Technology Labs, Inc <@zsa> * Copyright 2020 Jack Humbert - * Copyright 2020 Christopher Courtney (@drashna) + * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) * * This 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,55 +16,26 @@ * along with this program. If not, see . */ - - -#include -#include -#include -#include -#include "timer.h" -#include "wait.h" -#include "print.h" -#include "matrix.h" -#include "action.h" -#include "keycode.h" -#include #include "moonlander.h" #include "i2c_master.h" -#include "debounce.h" /* #define MATRIX_ROW_PINS { B10, B11, B12, B13, B14, B15 } outputs #define MATRIX_COL_PINS { A0, A1, A2, A3, A6, A7, B0 } inputs */ /* matrix state(1:on, 0:off) */ -static matrix_row_t matrix[MATRIX_ROWS]; -static matrix_row_t matrix_debouncing[MATRIX_ROWS]; -static matrix_row_t matrix_debouncing_right[MATRIX_COLS]; -static bool debouncing = false; -static uint16_t debouncing_time = 0; -static bool debouncing_right = false; -static uint16_t debouncing_time_right = 0; +extern matrix_row_t matrix[MATRIX_ROWS]; // debounced values +extern matrix_row_t raw_matrix[MATRIX_ROWS]; // raw values +static matrix_row_t raw_matrix_right[MATRIX_COLS]; #define ROWS_PER_HAND (MATRIX_ROWS / 2) - -#ifndef MATRIX_IO_DELAY -# define MATRIX_IO_DELAY 20 +#ifndef MOONLANDER_I2C_TIMEOUT +# define MOONLANDER_I2C_TIMEOUT 100 #endif extern bool mcp23018_leds[3]; extern bool is_launching; -__attribute__((weak)) void matrix_init_user(void) {} - -__attribute__((weak)) void matrix_scan_user(void) {} - -__attribute__((weak)) void matrix_init_kb(void) { matrix_init_user(); } - -__attribute__((weak)) void matrix_scan_kb(void) { matrix_scan_user(); } - -__attribute__((weak)) void matrix_io_delay(void) { wait_us(MATRIX_IO_DELAY); } - bool mcp23018_initd = false; static uint8_t mcp23018_reset_loop; @@ -81,14 +52,14 @@ void mcp23018_init(void) { mcp23018_tx[1] = 0b00000000; // A is output mcp23018_tx[2] = 0b00111111; // B is inputs - if (MSG_OK != i2c_transmit(MCP23018_DEFAULT_ADDRESS << 1, mcp23018_tx, 3, I2C_TIMEOUT)) { + if (MSG_OK != i2c_transmit(MCP23018_DEFAULT_ADDRESS << 1, mcp23018_tx, 3, MOONLANDER_I2C_TIMEOUT)) { dprintf("error hori\n"); } else { mcp23018_tx[0] = 0x0C; // GPPUA mcp23018_tx[1] = 0b10000000; // A is not pulled-up mcp23018_tx[2] = 0b11111111; // B is pulled-up - if (MSG_OK != i2c_transmit(MCP23018_DEFAULT_ADDRESS << 1, mcp23018_tx, 3, I2C_TIMEOUT)) { + if (MSG_OK != i2c_transmit(MCP23018_DEFAULT_ADDRESS << 1, mcp23018_tx, 3, MOONLANDER_I2C_TIMEOUT)) { dprintf("error hori\n"); } else { mcp23018_initd = is_launching = true; @@ -96,10 +67,9 @@ void mcp23018_init(void) { } } -void matrix_init(void) { +void matrix_init_custom(void) { dprintf("matrix init\n"); // debug_matrix = true; - // outputs setPinOutput(B10); setPinOutput(B11); @@ -117,21 +87,34 @@ void matrix_init(void) { setPinInputLow(A7); setPinInputLow(B0); - memset(matrix, 0, MATRIX_ROWS * sizeof(matrix_row_t)); - memset(matrix_debouncing, 0, MATRIX_ROWS * sizeof(matrix_row_t)); - memset(matrix_debouncing_right, 0, MATRIX_COLS * sizeof(matrix_row_t)); - mcp23018_init(); - - matrix_init_quantum(); } -uint8_t matrix_scan(void) { +bool matrix_scan_custom(matrix_row_t current_matrix[]) { bool changed = false; + // Try to re-init right side + if (!mcp23018_initd) { + if (++mcp23018_reset_loop == 0) { + // if (++mcp23018_reset_loop >= 1300) { + // since mcp23018_reset_loop is 8 bit - we'll try to reset once in 255 matrix scans + // this will be approx bit more frequent than once per second + print("trying to reset mcp23018\n"); + mcp23018_init(); + if (!mcp23018_initd) { + print("left side not responding\n"); + } else { + print("left side attached\n"); +#ifdef RGB_MATRIX_ENABLE + rgb_matrix_init(); +#endif + } + } + } + matrix_row_t data = 0; // actual matrix - for (uint8_t row = 0; row < ROWS_PER_HAND; row++) { + for (uint8_t row = 0; row <= ROWS_PER_HAND; row++) { // strobe row switch (row) { case 0: writePinHigh(B10); break; @@ -140,157 +123,94 @@ uint8_t matrix_scan(void) { case 3: writePinHigh(B13); break; case 4: writePinHigh(B14); break; case 5: writePinHigh(B15); break; + case 6: break; // Left hand has 6 rows } - // need wait to settle pin state - matrix_io_delay(); - - // read col data - data = ( - (readPin(A0) << 0 ) | - (readPin(A1) << 1 ) | - (readPin(A2) << 2 ) | - (readPin(A3) << 3 ) | - (readPin(A6) << 4 ) | - (readPin(A7) << 5 ) | - (readPin(B0) << 6 ) - ); - - // unstrobe row - switch (row) { - case 0: writePinLow(B10); break; - case 1: writePinLow(B11); break; - case 2: writePinLow(B12); break; - case 3: writePinLow(B13); break; - case 4: writePinLow(B14); break; - case 5: writePinLow(B15); break; - } - - if (matrix_debouncing[row] != data) { - matrix_debouncing[row] = data; - debouncing = true; - debouncing_time = timer_read(); - changed = true; - } - } - - for (uint8_t row = 0; row <= ROWS_PER_HAND; row++) { // right side - - if (!mcp23018_initd) { - if (++mcp23018_reset_loop == 0) { - // if (++mcp23018_reset_loop >= 1300) { - // since mcp23018_reset_loop is 8 bit - we'll try to reset once in 255 matrix scans - // this will be approx bit more frequent than once per second - print("trying to reset mcp23018\n"); - mcp23018_init(); - if (!mcp23018_initd) { - print("left side not responding\n"); - } else { - print("left side attached\n"); -#ifdef RGB_MATRIX_ENABLE - rgb_matrix_init(); -#endif - } + if (mcp23018_initd) { + // #define MCP23_ROW_PINS { GPB5, GBP4, GBP3, GBP2, GBP1, GBP0 } outputs + // #define MCP23_COL_PINS { GPA0, GBA1, GBA2, GBA3, GBA4, GBA5, GBA6 } inputs + + // select row + mcp23018_tx[0] = 0x12; // GPIOA + mcp23018_tx[1] = (0b01111111 & ~(1 << (row))) | ((uint8_t)!mcp23018_leds[2] << 7); // activate row + mcp23018_tx[2] = ((uint8_t)!mcp23018_leds[1] << 6) | ((uint8_t)!mcp23018_leds[0] << 7); // activate row + + if (MSG_OK != i2c_transmit(MCP23018_DEFAULT_ADDRESS << 1, mcp23018_tx, 3, MOONLANDER_I2C_TIMEOUT)) { + dprintf("error hori\n"); + mcp23018_initd = false; } - } - - // #define MCP23_ROW_PINS { GPB5, GBP4, GBP3, GBP2, GBP1, GBP0 } outputs - // #define MCP23_COL_PINS { GPA0, GBA1, GBA2, GBA3, GBA4, GBA5, GBA6 } inputs - // select row + // read col - mcp23018_tx[0] = 0x12; // GPIOA - mcp23018_tx[1] = (0b01111111 & ~(1 << (row))) | ((uint8_t)!mcp23018_leds[2] << 7); // activate row - mcp23018_tx[2] = ((uint8_t)!mcp23018_leds[1] << 6) | ((uint8_t)!mcp23018_leds[0] << 7); // activate row + mcp23018_tx[0] = 0x13; // GPIOB + if (MSG_OK != i2c_readReg(MCP23018_DEFAULT_ADDRESS << 1, mcp23018_tx[0], &mcp23018_rx[0], 1, MOONLANDER_I2C_TIMEOUT)) { + dprintf("error vert\n"); + mcp23018_initd = false; + } - if (MSG_OK != i2c_transmit(MCP23018_DEFAULT_ADDRESS << 1, mcp23018_tx, 3, I2C_TIMEOUT)) { - dprintf("error hori\n"); - mcp23018_initd = false; + data = ~(mcp23018_rx[0] & 0b00111111); + // data = 0x01; + } else { + data = 0; } - // read col - - mcp23018_tx[0] = 0x13; // GPIOB - if (MSG_OK != i2c_readReg(MCP23018_DEFAULT_ADDRESS << 1, mcp23018_tx[0], &mcp23018_rx[0], 1, I2C_TIMEOUT)) { - dprintf("error vert\n"); - mcp23018_initd = false; + if (raw_matrix_right[row] != data) { + raw_matrix_right[row] = data; + changed = true; } - data = ~(mcp23018_rx[0] & 0b00111111); - // data = 0x01; - - if (matrix_debouncing_right[row] != data) { - matrix_debouncing_right[row] = data; - debouncing_right = true; - debouncing_time_right = timer_read(); - changed = true; - } - } - if (debouncing && timer_elapsed(debouncing_time) > DEBOUNCE) { - for (int row = 0; row < ROWS_PER_HAND; row++) { - matrix[row] = matrix_debouncing[row]; - } - debouncing = false; - } + // left side + if (row < ROWS_PER_HAND) { + // i2c comm incur enough wait time + if (!mcp23018_initd) { + // need wait to settle pin state + matrix_io_delay(); + } + // read col data + data = ( + (readPin(A0) << 0 ) | + (readPin(A1) << 1 ) | + (readPin(A2) << 2 ) | + (readPin(A3) << 3 ) | + (readPin(A6) << 4 ) | + (readPin(A7) << 5 ) | + (readPin(B0) << 6 ) + ); + // unstrobe row + switch (row) { + case 0: writePinLow(B10); break; + case 1: writePinLow(B11); break; + case 2: writePinLow(B12); break; + case 3: writePinLow(B13); break; + case 4: writePinLow(B14); break; + case 5: writePinLow(B15); break; + case 6: break; + } - if (debouncing_right && timer_elapsed(debouncing_time_right) > DEBOUNCE && mcp23018_initd) { - for (int row = 0; row < ROWS_PER_HAND; row++) { - matrix[11 - row] = 0; - for (int col = 0; col < MATRIX_COLS; col++) { - matrix[11 - row] |= ((matrix_debouncing_right[6 - col] & (1 << row) ? 1 : 0) << col); + if (current_matrix[row] != data) { + current_matrix[row] = data; + changed = true; } } - debouncing_right = false; } - - matrix_scan_quantum(); - - return (uint8_t)changed; -} - -bool matrix_is_on(uint8_t row, uint8_t col) { return (matrix[row] & (1 << col)); } - -matrix_row_t matrix_get_row(uint8_t row) { return matrix[row]; } - -void matrix_print(void) { - dprintf("\nr/c 01234567\n"); - for (uint8_t row = 0; row < MATRIX_ROWS; row++) { - dprintf("%X0: ", row); - matrix_row_t data = matrix_get_row(row); - for (int col = 0; col < MATRIX_COLS; col++) { - if (data & (1 << col)) - dprintf("1"); - else - dprintf("0"); + for (uint8_t row = 0; row < ROWS_PER_HAND; row++) { + current_matrix[11 - row] = 0; + for (uint8_t col = 0; col < MATRIX_COLS; col++) { + current_matrix[11 - row] |= ((raw_matrix_right[6 - col] & (1 << row) ? 1 : 0) << col); } - dprintf("\n"); } + return changed; } // DO NOT REMOVE // Needed for proper wake/sleep void matrix_power_up(void) { bool temp_launching = is_launching; - // outputs - setPinOutput(B10); - setPinOutput(B11); - setPinOutput(B12); - setPinOutput(B13); - setPinOutput(B14); - setPinOutput(B15); - // inputs - setPinInputLow(A0); - setPinInputLow(A1); - setPinInputLow(A2); - setPinInputLow(A3); - setPinInputLow(A6); - setPinInputLow(A7); - setPinInputLow(B0); + matrix_init_custom(); - mcp23018_init(); is_launching = temp_launching; if (!is_launching) { ML_LED_1(false); diff --git a/keyboards/moonlander/mcuconf.h b/keyboards/moonlander/mcuconf.h new file mode 100644 index 000000000000..69f458a9377b --- /dev/null +++ b/keyboards/moonlander/mcuconf.h @@ -0,0 +1,39 @@ +/* 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 . + */ + +#pragma once + +#include_next "mcuconf.h" + +// for i2c expander, and ISSI +#undef STM32_I2C_USE_I2C1 +#define STM32_I2C_USE_I2C1 TRUE + +// for future hardwar +#undef STM32_I2C_USE_I2C2 +#define STM32_I2C_USE_I2C2 TRUE + +// for audio +#undef STM32_DAC_USE_DAC1_CH1 +#define STM32_DAC_USE_DAC1_CH1 TRUE +#undef STM32_DAC_USE_DAC1_CH2 +#define STM32_DAC_USE_DAC1_CH2 TRUE +#undef STM32_GPT_USE_TIM6 +#define STM32_GPT_USE_TIM6 TRUE +#undef STM32_GPT_USE_TIM7 +#define STM32_GPT_USE_TIM7 TRUE +#undef STM32_GPT_USE_TIM8 +#define STM32_GPT_USE_TIM8 TRUE diff --git a/keyboards/moonlander/moonlander.c b/keyboards/moonlander/moonlander.c index bc4047b847eb..3f9b3d40a479 100644 --- a/keyboards/moonlander/moonlander.c +++ b/keyboards/moonlander/moonlander.c @@ -1,6 +1,6 @@ /* Copyright 2020 ZSA Technology Labs, Inc <@zsa> * Copyright 2020 Jack Humbert - * Copyright 2020 Christopher Courtney (@drashna) + * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -203,7 +203,7 @@ layer_state_t layer_state_set_kb(layer_state_t state) { #ifdef RGB_MATRIX_ENABLE // clang-format off -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { /* Refer to IS31 manual for these locations * driver * | R location @@ -340,15 +340,6 @@ led_config_t g_led_config = { { } }; // clang-format on -void suspend_power_down_kb(void) { - rgb_matrix_set_suspend_state(true); - suspend_power_down_user(); -} - -void suspend_wakeup_init_kb(void) { - rgb_matrix_set_suspend_state(false); - suspend_wakeup_init_user(); -} #endif #ifdef AUDIO_ENABLE diff --git a/keyboards/moonlander/moonlander.h b/keyboards/moonlander/moonlander.h index 08bec5c070e7..8598260211a4 100644 --- a/keyboards/moonlander/moonlander.h +++ b/keyboards/moonlander/moonlander.h @@ -1,6 +1,6 @@ /* Copyright 2020 ZSA Technology Labs, Inc <@zsa> * Copyright 2020 Jack Humbert - * Copyright 2020 Christopher Courtney (@drashna) + * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/keyboards/moonlander/readme.md b/keyboards/moonlander/readme.md index 7ddfdb84a712..0ad2e4775cfa 100644 --- a/keyboards/moonlander/readme.md +++ b/keyboards/moonlander/readme.md @@ -19,7 +19,23 @@ Flashing example for this keyboard: See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). -## Oryx Configuation + +## Moonlander Customization + +### Indicator LEDs + +There are 6 functions for enabling and disabling the LEDs on the top of the boards. The functions are `ML_LED_1(bool)` through `ML_LED_6(bool)`, with the first LED being the left most LED on the left hand, and the sixth LED being the right most LED on the right side. + +By default, the Indicator LEDs are used to indicate the layer state for the keyboard. If you wish to change this (and indicate caps/num/scroll lock status instead), then define `MOONLANDER_USER_LEDS` in your `config.h` file. + + +### Oryx Configuration + +To enable the features from Oryx (ZSA's Configurator), either compile the the `default` keymap, or add `#define ORYX_CONFIGURATOR` to your `config.h` file. + +This enables the front Indicator LEDs, and the `TOGGLE_LAYER_COLOR` keycode. The `TOGGLE_LAYER_COLOR` keycode toggles the customized LED map configured on Oryx. + +### RGB Matrix Features If you're using the Smart LED (layer indication) feature from the Oryx Configurator, you want to make sure that you enable these options by adding `#define ORYX_CONFIGURATOR` to your keymap's `config.h`. diff --git a/keyboards/moonlander/rules.mk b/keyboards/moonlander/rules.mk index 8e8dbf94f4fe..87db2e43be3b 100644 --- a/keyboards/moonlander/rules.mk +++ b/keyboards/moonlander/rules.mk @@ -1,6 +1,5 @@ # MCU name MCU = STM32F303 -BOARD = QMK_PROTON_C # Bootloader selection BOOTLOADER = stm32-dfu @@ -8,21 +7,17 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = 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 = yes # Audio output -CUSTOM_MATRIX = yes -DEBOUNCE_TYPE = custom +CUSTOM_MATRIX = lite SWAP_HANDS_ENABLE = yes RGB_MATRIX_ENABLE = yes RGB_MATRIX_DRIVER = IS31FL3731 diff --git a/keyboards/mountainblocks/mb17/config.h b/keyboards/mountainblocks/mb17/config.h index c67db7a7d1b2..aef58dc5da46 100644 --- a/keyboards/mountainblocks/mb17/config.h +++ b/keyboards/mountainblocks/mb17/config.h @@ -91,59 +91,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* disable these deprecated features by default */ #define NO_ACTION_MACRO diff --git a/keyboards/mountainblocks/mb17/info.json b/keyboards/mountainblocks/mb17/info.json index 02f402184935..b3bf74cdb22a 100644 --- a/keyboards/mountainblocks/mb17/info.json +++ b/keyboards/mountainblocks/mb17/info.json @@ -2,8 +2,6 @@ "keyboard_name": "MB17", "url": "", "maintainer": "qmk", - "width": 4, - "height": 5, "layouts": { "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/mountainblocks/mb17/rules.mk b/keyboards/mountainblocks/mb17/rules.mk index 38f2485d9c1d..3c961f9c2ab9 100644 --- a/keyboards/mountainblocks/mb17/rules.mk +++ b/keyboards/mountainblocks/mb17/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/mschwingen/modelm/info.json b/keyboards/mschwingen/modelm/info.json index f4e6ed1c1409..3a34f9218000 100644 --- a/keyboards/mschwingen/modelm/info.json +++ b/keyboards/mschwingen/modelm/info.json @@ -2,8 +2,6 @@ "keyboard_name": "atmega32U4 board for IBM Model M", "url": "", "maintainer": "mschwingen", - "width": 23, - "height": 7, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/mschwingen/modelm/modelm.c b/keyboards/mschwingen/modelm/modelm.c index c1180612ad06..7dcd4ac02433 100644 --- a/keyboards/mschwingen/modelm/modelm.c +++ b/keyboards/mschwingen/modelm/modelm.c @@ -27,7 +27,7 @@ # undef sendchar static int8_t capture_sendchar(uint8_t c) { // sendchar(c); - uart_putchar(c); + uart_write(c); return 0; } #endif diff --git a/keyboards/mschwingen/modelm/post_rules.mk b/keyboards/mschwingen/modelm/post_rules.mk new file mode 100644 index 000000000000..a1c2040f4c52 --- /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 6775dfa203b6..911b5655354a 100644 --- a/keyboards/mschwingen/modelm/rules.mk +++ b/keyboards/mschwingen/modelm/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = lufa-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output CUSTOM_MATRIX = lite @@ -36,8 +33,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 cb88824577ba..a48d758e7f57 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -100,54 +99,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -165,25 +116,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - -#endif diff --git a/keyboards/mt40/info.json b/keyboards/mt40/info.json index c082a681a919..48a2b9233b0e 100644 --- a/keyboards/mt40/info.json +++ b/keyboards/mt40/info.json @@ -2,8 +2,6 @@ "keyboard_name": "MT40", "url": "", "maintainer": "qmk", - "width": 12, - "height": 4, "layouts": { "LAYOUT_planck_mit": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3, "w":2}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}] diff --git a/keyboards/mt40/mt40.h b/keyboards/mt40/mt40.h index c202d5f6c7ff..dc0de22b2871 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 . */ -#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/mt40/rules.mk b/keyboards/mt40/rules.mk index 3f4847400b1c..4c369aeccfd2 100644 --- a/keyboards/mt40/rules.mk +++ b/keyboards/mt40/rules.mk @@ -2,30 +2,19 @@ MCU = atmega32a # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid # build options -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ # nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. WS2812_DRIVER = i2c -TAP_DANCE_ENABLE = no LAYOUTS = planck_mit LAYOUTS_HAS_RGB = no diff --git a/keyboards/mt64rgb/config.h b/keyboards/mt64rgb/config.h index 8574d723600a..ea7659b47198 100644 --- a/keyboards/mt64rgb/config.h +++ b/keyboards/mt64rgb/config.h @@ -1,18 +1,18 @@ -/* Copyright 2020 MT - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ +/* Copyright 2020 MT + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ #pragma once #include "config_common.h" @@ -54,29 +54,60 @@ #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 DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -#define DISABLE_RGB_MATRIX_BAND_SAT -#define DISABLE_RGB_MATRIX_BAND_VAL -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL -#define DISABLE_RGB_MATRIX_DIGITAL_RAIN -#define DISABLE_RGB_MATRIX_TYPING_HEATMAP -#define DISABLE_RGB_MATRIX_RAINBOW_BEACON -#define DISABLE_RGB_MATRIX_ALPHAS_MODS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL + +#define DRIVER_COUNT 1 +#define DRIVER_LED_TOTAL 64 + + +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +// # define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +// # define ENABLE_RGB_MATRIX_BAND_SAT +// # define ENABLE_RGB_MATRIX_BAND_VAL +// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +// # define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +// # define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +// # define ENABLE_RGB_MATRIX_TYPING_HEATMAP +// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + #endif diff --git a/keyboards/mt64rgb/info.json b/keyboards/mt64rgb/info.json index 21fc948d7287..840863bc2444 100644 --- a/keyboards/mt64rgb/info.json +++ b/keyboards/mt64rgb/info.json @@ -2,8 +2,6 @@ "keyboard_name": "mt64rgb", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_64_ansi": { "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}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"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":2}, {"label":"Z", "x":2, "y":3}, {"label":"X", "x":3, "y":3}, {"label":"C", "x":4, "y":3}, {"label":"V", "x":5, "y":3}, {"label":"B", "x":6, "y":3}, {"label":"N", "x":7, "y":3}, {"label":"M", "x":8, "y":3}, {"label":"<", "x":9, "y":3}, {"label":">", "x":10, "y":3}, {"label":"?", "x":11, "y":3}, {"label":"Shift", "x":12, "y":3}, {"x":13, "y":3}, {"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}, {"x":10, "y":4}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}] diff --git a/keyboards/mt64rgb/mt64rgb.c b/keyboards/mt64rgb/mt64rgb.c index 73f0e562e797..f0c444e8fa5c 100644 --- a/keyboards/mt64rgb/mt64rgb.c +++ b/keyboards/mt64rgb/mt64rgb.c @@ -16,7 +16,7 @@ #include "mt64rgb.h" #ifdef RGB_MATRIX_ENABLE -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { /* Refer to IS31 manual for these locations * driver * | R location diff --git a/keyboards/mt64rgb/rules.mk b/keyboards/mt64rgb/rules.mk index b77c0d52b70a..d21e3ef1fe78 100644 --- a/keyboards/mt64rgb/rules.mk +++ b/keyboards/mt64rgb/rules.mk @@ -7,13 +7,11 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 @@ -21,7 +19,6 @@ RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow RGB_MATRIX_ENABLE = yes # Use RGB matrix RGB_MATRIX_DRIVER = IS31FL3733 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LAYOUTS = 64_ansi diff --git a/keyboards/mt84/config.h b/keyboards/mt84/config.h index 66460a9fda6a..bde8919ba7eb 100644 --- a/keyboards/mt84/config.h +++ b/keyboards/mt84/config.h @@ -1,17 +1,17 @@ /* Copyright 2020 MT <704340378@qq.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 . + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . */ #pragma once @@ -56,40 +56,70 @@ #define DRIVER_ADDR_1 0b1010000 #define DRIVER_ADDR_2 0b1011111 - + #define DRIVER_COUNT 2 #define DRIVER_1_LED_TOTAL 44 #define DRIVER_2_LED_TOTAL 40 #define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) - - - #define DISABLE_RGB_MATRIX_ALPHAS_MODS - #define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN - #define DISABLE_RGB_MATRIX_BREATHING - #define DISABLE_RGB_MATRIX_BAND_SAT - #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT - #define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT - #define DISABLE_RGB_MATRIX_RAINDROPS - #define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS - #define DISABLE_RGB_MATRIX_TYPING_HEATMAP - #define DISABLE_RGB_MATRIX_DIGITAL_RAIN - #define DISABLE_RGB_MATRIX_SOLID_REACTIVE - #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE - #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE - #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS - #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS - #define DISABLE_RGB_MATRIX_SPLASH - #define DISABLE_RGB_MATRIX_SOLID_SPLASH - #define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH + + // RGB Matrix Animation modes. Explicitly enabled + // For full list of effects, see: + // https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects + // # define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING + // # define ENABLE_RGB_MATRIX_BAND_SAT + // # define ENABLE_RGB_MATRIX_BAND_VAL + // # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT + // # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL + // # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT + // # define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN + // # define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON + // # define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL + // enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined + // # define ENABLE_RGB_MATRIX_TYPING_HEATMAP + // # define ENABLE_RGB_MATRIX_DIGITAL_RAIN + // enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE + // # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE + // # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS + // # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS + // # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + #endif #define RGB_DI_PIN B0 #ifdef RGB_DI_PIN -// define RGBLIGHT_ANIMATIONS -#define RGBLIGHT_EFFECT_STATIC_GRADIENT -#define RGBLIGHT_EFFECT_RAINBOW_SWIRL -#define RGBLIGHT_EFFECT_BREATHING + // define RGBLIGHT_ANIMATIONS +# define RGBLIGHT_EFFECT_STATIC_GRADIENT +# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +# define RGBLIGHT_EFFECT_BREATHING # define RGBLED_NUM 18 # define RGBLIGHT_HUE_STEP 8 # define RGBLIGHT_SAT_STEP 8 @@ -104,4 +134,3 @@ #define LOCKING_SUPPORT_ENABLE /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE - diff --git a/keyboards/mt84/info.json b/keyboards/mt84/info.json index f9486253cae0..aaded3096225 100644 --- a/keyboards/mt84/info.json +++ b/keyboards/mt84/info.json @@ -2,8 +2,6 @@ "keyboard_name": "mt84", "url": "", "maintainer": "qmk", - "width": 16, - "height": 6, "layouts": { "LAYOUT_75_ansi": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, {"label":"F2", "x":2, "y":0}, {"label":"F3", "x":3, "y":0}, {"label":"F4", "x":4, "y":0}, {"label":"F5", "x":5, "y":0}, {"label":"F6", "x":6, "y":0}, {"label":"F7", "x":7, "y":0}, {"label":"F8", "x":8, "y":0}, {"label":"F9", "x":9, "y":0}, {"label":"F10", "x":10, "y":0}, {"label":"F11", "x":11, "y":0}, {"label":"F12", "x":12, "y":0}, {"label":"PrtSc", "x":13, "y":0}, {"label":"Pause", "x":14, "y":0}, {"label":"Delete", "x":15, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"@", "x":2, "y":1}, {"label":"#", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"label":"Backspace", "x":13, "y":1, "w":2}, {"label":"Home", "x":15, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"Page Up", "x":15, "y":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"\"", "x":11.75, "y":3}, {"label":"Enter", "x":12.75, "y":3, "w":2.25}, {"label":"Page Down", "x":15, "y":3}, {"label":"Shift", "x":0, "y":4, "w":2.25}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"label":"\u2191", "x":14, "y":4}, {"label":"End", "x":15, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5}, {"label":"Fn", "x":11, "y":5}, {"label":"Ctrl", "x":12, "y":5}, {"label":"\u2190", "x":13, "y":5}, {"label":"\u2193", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}] diff --git a/keyboards/mt84/keymaps/default/config.h b/keyboards/mt84/keymaps/default/config.h new file mode 100644 index 000000000000..dd687cad58f3 --- /dev/null +++ b/keyboards/mt84/keymaps/default/config.h @@ -0,0 +1,19 @@ +/* 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 . + */ + +#pragma once + +#define LAYER_STATE_8BIT diff --git a/keyboards/mt84/mt84.c b/keyboards/mt84/mt84.c index d9f509e14d91..e15a1ff95189 100644 --- a/keyboards/mt84/mt84.c +++ b/keyboards/mt84/mt84.c @@ -1,22 +1,22 @@ - /* Copyright 2020 MT<704340378@qq.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 . - */ + /* Copyright 2020 MT<704340378@qq.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 . + */ #include "mt84.h" #ifdef RGB_MATRIX_ENABLE -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { /* Refer to IS31 manual for these locations * driver * | R location @@ -40,7 +40,7 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { {1, D_12, E_12, F_12}, {1, G_12, H_12, I_12}, {1, J_12, K_12, L_12}, - + {0, A_1, B_1, C_1}, {0, D_1, E_1, F_1}, {0, G_1, H_1, I_1}, @@ -72,7 +72,7 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { {1, A_7, B_7, C_7}, {1, D_7, E_7, F_7}, {1, G_7, H_7, I_7}, - + {0, A_3, B_3, C_3}, {0, D_3, E_3, F_3}, {0, G_3, H_3, I_3}, @@ -87,7 +87,7 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { {1, J_3, K_3, L_3}, {1, A_8, B_8, C_8}, {1, G_8, H_8, I_8}, - + {0, A_4, B_4, C_4}, {0, D_4, E_4, F_4}, {0, G_4, H_4, I_4}, @@ -130,7 +130,7 @@ led_config_t g_led_config = {{ { 9, 52 }, { 27, 52 }, { 43, 52 }, { 59, 52 }, { 75, 52 }, { 91, 52 }, { 107, 52 }, { 123, 52 }, { 139, 52 }, { 155, 52 }, { 171, 52 }, { 187, 52 }, { 212, 52 }, { 224, 52 }, { 2, 64 }, { 18, 64 }, { 33, 64 }, { 93, 64 }, { 150, 64 }, { 165, 64 }, { 180, 64 }, { 195, 64 }, { 210, 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, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, diff --git a/keyboards/mt84/rules.mk b/keyboards/mt84/rules.mk index b27a7c3440ac..e6ed656c12cb 100644 --- a/keyboards/mt84/rules.mk +++ b/keyboards/mt84/rules.mk @@ -7,21 +7,18 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 RGB_MATRIX_ENABLE = yes # Use RGB Matrix RGB_MATRIX_DRIVER = IS31FL3737 RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output +LTO_ENABLE = yes LAYOUTS = 75_ansi - diff --git a/keyboards/mt980/info.json b/keyboards/mt980/info.json index f71d0228564c..be89ec8fc0dd 100644 --- a/keyboards/mt980/info.json +++ b/keyboards/mt980/info.json @@ -2,11 +2,8 @@ "keyboard_name": "mt980", "url": "https://shop110310565.taobao.com", "maintainer": "walkerstop", - "width": 19.5, - "height": 6.75, "layouts": { "LAYOUT": { - "key_count": 103, "layout": [ {"label":"K50", "x":0, "y":0}, {"label":"K52", "x":1.25, "y":0}, diff --git a/keyboards/mt980/rules.mk b/keyboards/mt980/rules.mk index 02877c599129..e4c92cb7e67b 100644 --- a/keyboards/mt980/rules.mk +++ b/keyboards/mt980/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # Audio control and System control CONSOLE_ENABLE = no # 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 = yes # Enable keyboard backlight functionality AUDIO_ENABLE = no diff --git a/keyboards/mtbkeys/mtb60/hotswap/config.h b/keyboards/mtbkeys/mtb60/hotswap/config.h new file mode 100644 index 000000000000..6cfc31224388 --- /dev/null +++ b/keyboards/mtbkeys/mtb60/hotswap/config.h @@ -0,0 +1,79 @@ +/* +Copyright 2021 MTBKeys + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x0001 +#define DEVICE_VER 0x0001 +#define MANUFACTURER MTBKeys +#define PRODUCT honeyboard60 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* key matrix pinout */ +#define MATRIX_ROW_PINS { D6, D7, B4, B5, D5 } +#define MATRIX_COL_PINS { D0, D1, D2, D3, B7, B6, F7, C6, C7, F6, F4, F1, F0, F5, E6 } +#define UNUSED_PINS + +/* diode direction: COL2ROW or ROW2COL */ +#define DIODE_DIRECTION ROW2COL + +/* Pin WS2812 RGB LEDs are connected to */ +#define RGB_DI_PIN D4 + +#ifdef RGB_DI_PIN +# define RGBLED_NUM 16 +# define RGBLIGHT_HUE_STEP 8 +# define RGBLIGHT_SAT_STEP 8 +# define RGBLIGHT_VAL_STEP 8 +# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +# define RGBLIGHT_SLEEP /* Turn RGB light off when the host goes to sleep */ +# define RGBLIGHT_EFFECT_ALTERNATING +# define RGBLIGHT_EFFECT_BREATHING +# define RGBLIGHT_EFFECT_CHRISTMAS +# define RGBLIGHT_EFFECT_KNIGHT +# define RGBLIGHT_EFFECT_RAINBOW_MOOD +# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +# define RGBLIGHT_EFFECT_RGB_TEST +# define RGBLIGHT_EFFECT_SNAKE +# define RGBLIGHT_EFFECT_STATIC_GRADIENT +# define RGBLIGHT_EFFECT_TWINKLE +# define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_SWIRL /* Set default RGB */ +#endif /* RGB_DI_PIN */ + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/mtbkeys/mtb60/hotswap/hotswap.c b/keyboards/mtbkeys/mtb60/hotswap/hotswap.c new file mode 100644 index 000000000000..f23de6af541c --- /dev/null +++ b/keyboards/mtbkeys/mtb60/hotswap/hotswap.c @@ -0,0 +1,17 @@ +/* Copyright 2021 MTBKeys + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "hotswap.h" diff --git a/keyboards/mtbkeys/mtb60/hotswap/hotswap.h b/keyboards/mtbkeys/mtb60/hotswap/hotswap.h new file mode 100644 index 000000000000..7dae44b5da31 --- /dev/null +++ b/keyboards/mtbkeys/mtb60/hotswap/hotswap.h @@ -0,0 +1,33 @@ +/* Copyright 2021 MTBKeys + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + k00, k10, k20, k30, k40, k50, k60, k70, k80, k90, ka0, kb0, kc0, ke0, \ + k11, k21, k31, k41, k51, k61, k71, k81, k91, ka1, kb1, kc1, kd1, ke1, \ + k02, k22, k32, k42, k52, k62, k72, k82, k92, ka2, kb2, kc2, kd2, \ + k03, k23, k33, k43, k53, k63, k73, k83, k93, ka3, kb3, kd3, \ + k04, k14, k24, k64, ka4, kb4, kd4, ke4 \ +) { \ + { k00, k10, k20, k30, k40, k50, k60, k70, k80, k90, ka0, kb0, kc0, KC_NO, ke0 }, \ + { KC_NO, k11, k21, k31, k41, k51, k61, k71, k81, k91, ka1, kb1, kc1, kd1, ke1 }, \ + { k02, KC_NO, k22, k32, k42, k52, k62, k72, k82, k92, ka2, kb2, kc2, kd2, KC_NO }, \ + { k03, KC_NO, k23, k33, k43, k53, k63, k73, k83, k93, ka3, kb3, KC_NO, kd3, KC_NO }, \ + { k04, k14, k24, KC_NO, KC_NO, KC_NO, k64, KC_NO, KC_NO, KC_NO, ka4, kb4, kd4, KC_NO, ke4 } \ +} diff --git a/keyboards/mtbkeys/mtb60/hotswap/info.json b/keyboards/mtbkeys/mtb60/hotswap/info.json new file mode 100644 index 000000000000..5718d705074a --- /dev/null +++ b/keyboards/mtbkeys/mtb60/hotswap/info.json @@ -0,0 +1,72 @@ +{ + "keyboard_name": "MTB60", + "url": "mtbkeys.com", + "maintainer": "MTBKeys", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label": "Esc" , "x": 0, "y": 0 }, + {"label": "!" , "x": 1, "y": 0 }, + {"label": "@" , "x": 2, "y": 0 }, + {"label": "#" , "x": 3, "y": 0 }, + {"label": "$" , "x": 4, "y": 0 }, + {"label": "%" , "x": 5, "y": 0 }, + {"label": "^" , "x": 6, "y": 0 }, + {"label": "&" , "x": 7, "y": 0 }, + {"label": "*" , "x": 8, "y": 0 }, + {"label": "(" , "x": 9, "y": 0 }, + {"label": ")" , "x": 10, "y": 0 }, + {"label": "_" , "x": 11, "y": 0 }, + {"label": "+" , "x": 12, "y": 0 }, + {"label": "Back Space", "x": 13, "y": 0, "w": 2}, + {"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": "Left Shift" , "x": 0 , "y": 3, "w": 2.25}, + {"label": "Z" , "x": 2.25, "y": 3 }, + {"label": "X" , "x": 3.25, "y": 3 }, + {"label": "C" , "x": 4.25, "y": 3 }, + {"label": "V" , "x": 5.25, "y": 3 }, + {"label": "B" , "x": 6.25, "y": 3 }, + {"label": "N" , "x": 7.25, "y": 3 }, + {"label": "M" , "x": 8.25, "y": 3 }, + {"label": "<" , "x": 9.25, "y": 3 }, + {"label": ">" , "x": 10.25, "y": 3 }, + {"label": "?" , "x": 11.25, "y": 3 }, + {"label": "Right Shift", "x": 12.25, "y": 3, "w": 2.75}, + {"label": "Left Ctrl" , "x": 0 , "y": 4, "w": 1.25}, + {"label": "GUI" , "x": 1.25, "y": 4, "w": 1.25}, + {"label": "Left Alt" , "x": 2.5 , "y": 4, "w": 1.25}, + {"label": "Space" , "x": 3.75, "y": 4, "w": 6.25}, + {"label": "Right Ctrl", "x": 10 , "y": 4, "w": 1.25}, + {"label": "GUI" , "x": 11.25, "y": 4, "w": 1.25}, + {"label": "MO(1)" , "x": 12.5 , "y": 4, "w": 1.25}, + {"label": "Right Ctrl", "x": 13.75, "y": 4, "w": 1.25} + ] + } + } +} diff --git a/keyboards/mtbkeys/mtb60/hotswap/keymaps/default/keymap.c b/keyboards/mtbkeys/mtb60/hotswap/keymaps/default/keymap.c new file mode 100644 index 000000000000..648c8201f520 --- /dev/null +++ b/keyboards/mtbkeys/mtb60/hotswap/keymaps/default/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2021 MTBKeys + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, ///< Default Layer + _FN ///< Function Layer +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(_FN), KC_RCTL + ), + [_FN] = LAYOUT( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, RGB_TOG + ) +}; diff --git a/keyboards/mtbkeys/mtb60/hotswap/readme.md b/keyboards/mtbkeys/mtb60/hotswap/readme.md new file mode 100644 index 000000000000..7afa26bbd475 --- /dev/null +++ b/keyboards/mtbkeys/mtb60/hotswap/readme.md @@ -0,0 +1,26 @@ +# MTB60 (Hotswap Edition) + +## Details + +* Keyboard Maintainer: [MTBKeys](https://mtbkeys.com/) +* Hardware Supported: MTB60 PCB (Hotswap edition) +* Hardware Availability: [HB60 on MTBKeys Website](https://mtbkeys.com/) + +## Building Firmware + +Make example for this keyboard (after setting up your build environment): + + make mtbkeys/mtb60/hotswap:default + +Flashing example for this keyboard: + + make mtbkeys/mtb60/hotswap:default:flash + +## Bootloader + +Enter the bootloader in 2 ways: + +1. **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +2. **Physical reset button**: Briefly press the button on the back of the PCB + +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/mtbkeys/mtb60/hotswap/rules.mk b/keyboards/mtbkeys/mtb60/hotswap/rules.mk new file mode 100644 index 000000000000..4d962e934fdc --- /dev/null +++ b/keyboards/mtbkeys/mtb60/hotswap/rules.mk @@ -0,0 +1,19 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/mtbkeys/mtb60/solder/config.h b/keyboards/mtbkeys/mtb60/solder/config.h new file mode 100644 index 000000000000..02037e83df3e --- /dev/null +++ b/keyboards/mtbkeys/mtb60/solder/config.h @@ -0,0 +1,79 @@ +/* +Copyright 2021 MTBKeys + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x0000 +#define DEVICE_VER 0x0001 +#define MANUFACTURER MTBKeys +#define PRODUCT MTB60 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* key matrix pinout */ +#define MATRIX_ROW_PINS { D0, D1, F4, F1, D2 } +#define MATRIX_COL_PINS { E6, F0, F5, F6, F7, D5, D3, C7, C6, B6, B5, B4, D7, D6, D4 } +#define UNUSED_PINS + +/* diode direction: COL2ROW or ROW2COL */ +#define DIODE_DIRECTION ROW2COL + +/* Pin WS2812 RGB LEDs are connected to */ +#define RGB_DI_PIN B0 + +#ifdef RGB_DI_PIN +# define RGBLED_NUM 16 +# define RGBLIGHT_HUE_STEP 8 +# define RGBLIGHT_SAT_STEP 8 +# define RGBLIGHT_VAL_STEP 8 +# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +# define RGBLIGHT_SLEEP /* Turn RGB light off when the host goes to sleep */ +# define RGBLIGHT_EFFECT_ALTERNATING +# define RGBLIGHT_EFFECT_BREATHING +# define RGBLIGHT_EFFECT_CHRISTMAS +# define RGBLIGHT_EFFECT_KNIGHT +# define RGBLIGHT_EFFECT_RAINBOW_MOOD +# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +# define RGBLIGHT_EFFECT_RGB_TEST +# define RGBLIGHT_EFFECT_SNAKE +# define RGBLIGHT_EFFECT_STATIC_GRADIENT +# define RGBLIGHT_EFFECT_TWINKLE +# define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_SWIRL /* Set default RGB */ +#endif /* RGB_DI_PIN */ + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/mtbkeys/mtb60/solder/info.json b/keyboards/mtbkeys/mtb60/solder/info.json new file mode 100644 index 000000000000..e60d3eee2fe1 --- /dev/null +++ b/keyboards/mtbkeys/mtb60/solder/info.json @@ -0,0 +1,75 @@ +{ + "keyboard_name": "MTB60", + "url": "mtbkeys.com", + "maintainer": "MTBKeys", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label": "Esc" , "x": 0, "y": 0}, + {"label": "!" , "x": 1, "y": 0}, + {"label": "@" , "x": 2, "y": 0}, + {"label": "#" , "x": 3, "y": 0}, + {"label": "$" , "x": 4, "y": 0}, + {"label": "%" , "x": 5, "y": 0}, + {"label": "^" , "x": 6, "y": 0}, + {"label": "&" , "x": 7, "y": 0}, + {"label": "*" , "x": 8, "y": 0}, + {"label": "(" , "x": 9, "y": 0}, + {"label": ")" , "x": 10, "y": 0}, + {"label": "_" , "x": 11, "y": 0}, + {"label": "+" , "x": 12, "y": 0}, + {"label": "Back Space", "x": 13, "y": 0}, + {"label": "Delete" , "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": "Left Shift" , "x": 0 , "y": 3, "w": 2.25}, + {"label": "Z" , "x": 2.25, "y": 3 }, + {"label": "X" , "x": 3.25, "y": 3 }, + {"label": "C" , "x": 4.25, "y": 3 }, + {"label": "V" , "x": 5.25, "y": 3 }, + {"label": "B" , "x": 6.25, "y": 3 }, + {"label": "N" , "x": 7.25, "y": 3 }, + {"label": "M" , "x": 8.25, "y": 3 }, + {"label": "<" , "x": 9.25, "y": 3 }, + {"label": ">" , "x": 10.25, "y": 3 }, + {"label": "?" , "x": 11.25, "y": 3 }, + {"label": "Right Shift", "x": 12.25, "y": 3, "w": 2.75}, + {"label": "Left Ctrl" , "x": 0 , "y": 4, "w": 1.25}, + {"label": "GUI" , "x": 1.25, "y": 4, "w": 1.25}, + {"label": "Left Alt" , "x": 2.5 , "y": 4, "w": 1.25}, + {"label": "Space" , "x": 3.75, "y": 4, "w": 2.25}, + {"label": "Space" , "x": 6 , "y": 4, "w": 1.25}, + {"label": "Space" , "x": 7.25, "y": 4, "w": 2.75}, + {"label": "Right Ctrl", "x": 10 , "y": 4, "w": 1.25}, + {"label": "GUI" , "x": 11.25, "y": 4, "w": 1.25}, + {"label": "MO(1)" , "x": 12.5 , "y": 4, "w": 1.25}, + {"label": "Right Ctrl", "x": 13.75, "y": 4, "w": 1.25} + ] + } + } +} diff --git a/keyboards/mtbkeys/mtb60/solder/keymaps/default/keymap.c b/keyboards/mtbkeys/mtb60/solder/keymaps/default/keymap.c new file mode 100644 index 000000000000..6ed34b64325f --- /dev/null +++ b/keyboards/mtbkeys/mtb60/solder/keymaps/default/keymap.c @@ -0,0 +1,40 @@ +/* Copyright 2021 MTBKeys + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, MO(_FN), KC_RGUI, KC_RCTL + ), + [_FN] = LAYOUT( + 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, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/mtbkeys/mtb60/solder/readme.md b/keyboards/mtbkeys/mtb60/solder/readme.md new file mode 100644 index 000000000000..adaa94244faa --- /dev/null +++ b/keyboards/mtbkeys/mtb60/solder/readme.md @@ -0,0 +1,26 @@ +# MTB60 (Solder Edition) + +## Details + +* Keyboard Maintainer: [MTBKeys](https://mtbkeys.com/) +* Hardware Supported: MTB60 PCB (Solder edition) +* Hardware Availability: [HB60 on MTBKeys Website](https://mtbkeys.com/) + +## Building Firmware + +Make example for this keyboard (after setting up your build environment): + + make mtbkeys/mtb60/solder:default + +Flashing example for this keyboard: + + make mtbkeys/mtb60/solder:default:flash + +## Bootloader + +Enter the bootloader in 2 ways: + +1. **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +2. **Physical reset button**: Briefly press the button on the back of the PCB + +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/mtbkeys/mtb60/solder/rules.mk b/keyboards/mtbkeys/mtb60/solder/rules.mk new file mode 100644 index 000000000000..68dbdff654a3 --- /dev/null +++ b/keyboards/mtbkeys/mtb60/solder/rules.mk @@ -0,0 +1,19 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/mtbkeys/mtb60/solder/solder.c b/keyboards/mtbkeys/mtb60/solder/solder.c new file mode 100644 index 000000000000..9bb7f2b98e45 --- /dev/null +++ b/keyboards/mtbkeys/mtb60/solder/solder.c @@ -0,0 +1,17 @@ +/* Copyright 2021 MTBKeys + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "solder.h" diff --git a/keyboards/mtbkeys/mtb60/solder/solder.h b/keyboards/mtbkeys/mtb60/solder/solder.h new file mode 100644 index 000000000000..31756e7af75c --- /dev/null +++ b/keyboards/mtbkeys/mtb60/solder/solder.h @@ -0,0 +1,33 @@ +/* Copyright 2021 MTBKeys + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + k00, k10, k20, k30, k40, k50, k60, k70, k80, k90, ka0, kb0, kc0, kd0, ke0, \ + k11, k21, k31, k41, k51, k61, k71, k81, k91, ka1, kb1, kc1, kd1, ke1, \ + k02, k22, k32, k42, k52, k62, k72, k82, k92, ka2, kb2, kc2, kd2, \ + k03, k13, k23, k33, k43, k53, k63, k73, k83, k93, ka3, kb3, kc3, kd3, ke3, \ + k04, k14, k34, k44, k64, k84, ka4, kb4, kc4, kd4, ke4 \ +) { \ + { k00, k10, k20, k30, k40, k50, k60, k70, k80, k90, ka0, kb0, kc0, kd0, ke0 }, \ + { KC_NO, k11, k21, k31, k41, k51, k61, k71, k81, k91, ka1, kb1, kc1, kd1, ke1 }, \ + { k02, KC_NO, k22, k32, k42, k52, k62, k72, k82, k92, ka2, kb2, kc2, kd2, KC_NO }, \ + { k03, k13, k23, k33, k43, k53, k63, k73, k83, k93, ka3, kb3, kc3, kd3, ke3 }, \ + { k04, k14, KC_NO, k34, k44, KC_NO, k64, KC_NO, k84, KC_NO, ka4, kb4, kc4, kd4, ke4 } \ +} diff --git a/keyboards/murcielago/info.json b/keyboards/murcielago/info.json index 00eb326296f6..2c98d5a78cb4 100644 --- a/keyboards/murcielago/info.json +++ b/keyboards/murcielago/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Murciélago", "url": "", "maintainer": "elagil", - "width": 15, - "height": 5.75, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/murcielago/rev1/rules.mk b/keyboards/murcielago/rev1/rules.mk index 76f3014ad06a..dee112fb0771 100644 --- a/keyboards/murcielago/rev1/rules.mk +++ b/keyboards/murcielago/rev1/rules.mk @@ -2,31 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = yes # Enable split keyboard mode ENCODER_ENABLE = yes diff --git a/keyboards/mwstudio/mw65_black/config.h b/keyboards/mwstudio/mw65_black/config.h new file mode 100644 index 000000000000..9cd1aade784c --- /dev/null +++ b/keyboards/mwstudio/mw65_black/config.h @@ -0,0 +1,54 @@ +/* Copyright 2021 TW59420 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7BA1 +#define PRODUCT_ID 0x6500 +#define DEVICE_VER 0x0001 +#define MANUFACTURER MWStudio +#define PRODUCT MW65 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { D4, D7, B4, B3, B6 } +#define MATRIX_COL_PINS { B0, B1, B2, D0, D1, D2, D3, D5, C6, F7, F4, F6, F5, F1, F0 } + +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Set 0 if debouncing isn't neede */ +#define DEBOUNCE 5 + +#define RGB_DI_PIN C7 +#ifdef RGB_DI_PIN + #define RGBLED_NUM 21 + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 +#endif + +#define ENCODERS_PAD_A { E6 } +#define ENCODERS_PAD_B { D6 } diff --git a/keyboards/mwstudio/mw65_black/info.json b/keyboards/mwstudio/mw65_black/info.json new file mode 100644 index 000000000000..124515779224 --- /dev/null +++ b/keyboards/mwstudio/mw65_black/info.json @@ -0,0 +1,83 @@ +{ + "keyboard_name": "MW65_BLACK", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"ESC", "x":0, "y":0}, + {"label":"1", "x":1, "y":0}, + {"label":"2", "x":2, "y":0}, + {"label":"3", "x":3, "y":0}, + {"label":"4", "x":4, "y":0}, + {"label":"5", "x":5, "y":0}, + {"label":"6", "x":6, "y":0}, + {"label":"7", "x":7, "y":0}, + {"label":"8", "x":8, "y":0}, + {"label":"9", "x":9, "y":0}, + {"label":"0", "x":10, "y":0}, + {"label":"-", "x":11, "y":0}, + {"label":"=", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + {"label":"Delete", "x":15, "y":0}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"[", "x":11.5, "y":1}, + {"label":"]", "x":12.5, "y":1}, + {"label":"\\", "x":13.5, "y":1, "w":1.5}, + {"label":"PgUp", "x":15, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";", "x":10.75, "y":2}, + {"label":"'", "x":11.75, "y":2}, + {"label":"\\", "x":12.75, "y":2}, + {"label":"Enter", "x":13.75, "y":2, "w":1.25}, + {"label":"PgDn", "x":15, "y":2}, + + {"label":"Shift", "x":0, "y":3, "w":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",", "x":9.25, "y":3}, + {"label":".", "x":10.25, "y":3}, + {"label":"/", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"\u2191", "x":14, "y":3}, + {"label":"End", "x":15, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"Win", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"label":"Alt", "x":10, "y":4, "w":1.25}, + {"label":"Fn", "x":11.25, "y":4, "w":1.25}, + {"label":"\u2190", "x":13, "y":4}, + {"label":"\u2193", "x":14, "y":4}, + {"label":"\u2192", "x":15, "y":4} + ] + } + } +} diff --git a/keyboards/mwstudio/mw65_black/keymaps/default/keymap.c b/keyboards/mwstudio/mw65_black/keymaps/default/keymap.c new file mode 100644 index 000000000000..620a39091e70 --- /dev/null +++ b/keyboards/mwstudio/mw65_black/keymaps/default/keymap.c @@ -0,0 +1,48 @@ +/* Copyright 2021 TW59420 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, RGB_TOG, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT), + + [1] = LAYOUT( + 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, _______, _______, + RGB_TOG, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______), +}; diff --git a/keyboards/mwstudio/mw65_black/keymaps/via/keymap.c b/keyboards/mwstudio/mw65_black/keymaps/via/keymap.c new file mode 100644 index 000000000000..620a39091e70 --- /dev/null +++ b/keyboards/mwstudio/mw65_black/keymaps/via/keymap.c @@ -0,0 +1,48 @@ +/* Copyright 2021 TW59420 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, RGB_TOG, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT), + + [1] = LAYOUT( + 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, _______, _______, + RGB_TOG, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______), +}; diff --git a/keyboards/mwstudio/mw65_black/keymaps/via/rules.mk b/keyboards/mwstudio/mw65_black/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/mwstudio/mw65_black/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/mwstudio/mw65_black/mw65_black.c b/keyboards/mwstudio/mw65_black/mw65_black.c new file mode 100644 index 000000000000..e215abb8047d --- /dev/null +++ b/keyboards/mwstudio/mw65_black/mw65_black.c @@ -0,0 +1,16 @@ +/* Copyright 2021 TW59420 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "mw65_black.h" diff --git a/keyboards/mwstudio/mw65_black/mw65_black.h b/keyboards/mwstudio/mw65_black/mw65_black.h new file mode 100644 index 000000000000..be7f3e6f3c13 --- /dev/null +++ b/keyboards/mwstudio/mw65_black/mw65_black.h @@ -0,0 +1,30 @@ +/* Copyright 2021 TW59420 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "quantum.h" + +#define LAYOUT( \ + 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, K114, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, \ + K400, K401, K402, K405, K409, K410, K412, K413, K414 \ +) { \ + { 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, K114 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314 }, \ + { K400, K401, K402, K405, K409, K410, K412, K413, K414 } \ +} diff --git a/keyboards/mwstudio/mw65_black/readme.md b/keyboards/mwstudio/mw65_black/readme.md new file mode 100644 index 000000000000..412746901984 --- /dev/null +++ b/keyboards/mwstudio/mw65_black/readme.md @@ -0,0 +1,22 @@ +# MW65_BLACK + +![MW65_BLACK](https://i.imgur.com/vC93zq4.jpg?1) + +Support Atmega32u4 keyboard. + +* Keyboard Maintainer: [TW59420](https://github.com/TW59420) +* Hardware Supported: Atmega32u4 + +Make example for this keyboard (after setting up your build environment): + + make mwstudio/mw65_black:default + +Flashing example for this keyboard: + + make mwstudio/mw65_black: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 +* **Physical reset button**: Short press the button on the back of the PCB to enter the Bootloader and flash the firmware +* **Keycode in layout**: Press the key mapped to RESET if it is available diff --git a/keyboards/mwstudio/mw65_black/rules.mk b/keyboards/mwstudio/mw65_black/rules.mk new file mode 100644 index 000000000000..1a3990d307ab --- /dev/null +++ b/keyboards/mwstudio/mw65_black/rules.mk @@ -0,0 +1,20 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 +ENCODER_ENABLE = yes diff --git a/keyboards/mwstudio/mw65_rgb/config.h b/keyboards/mwstudio/mw65_rgb/config.h new file mode 100644 index 000000000000..8a320664a9a7 --- /dev/null +++ b/keyboards/mwstudio/mw65_rgb/config.h @@ -0,0 +1,61 @@ +/* Copyright 2021 TW59420 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7BA1 +#define PRODUCT_ID 0x6502 +#define DEVICE_VER 0x0001 +#define MANUFACTURER MWStudio +#define PRODUCT MW65 + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 15 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { D0, D1, D2, D3, B7, B0 } +#define MATRIX_COL_PINS { C6, B6, B5, B4, D7, D6, D4, C7, F7, F6, F5, F4, F1, F0, E6 } + +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +#define RGB_DI_PIN B3 +#ifdef RGB_DI_PIN + #define RGBLIGHT_SLEEP + + #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 + #define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS + #define DRIVER_LED_TOTAL 83 + #define RGBLED_NUM 83 + #define RGB_MATRIX_KEYPRESSES + + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 +#endif + +#define ENCODERS_PAD_A { B1 } +#define ENCODERS_PAD_B { B2 } diff --git a/keyboards/mwstudio/mw65_rgb/info.json b/keyboards/mwstudio/mw65_rgb/info.json new file mode 100644 index 000000000000..870a848b8567 --- /dev/null +++ b/keyboards/mwstudio/mw65_rgb/info.json @@ -0,0 +1,84 @@ +{ + "keyboard_name": "MW65_RGB", + "url": "", + "maintainer": "TW59420", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2@", "x":2, "y":0}, + {"label":"3#", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":7, "y":0}, + {"label":"8*", "x":8, "y":0}, + {"label":"9(", "x":9, "y":0}, + {"label":"0)", "x":10, "y":0}, + {"label":"-_", "x":11, "y":0}, + {"label":"=+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + {"label":"Encoder CCW", "x":15, "y":0, "w":0.5}, + {"label":"Delete", "x":15.5, "y":0}, + {"label":"Encoder CW", "x":16.5, "y":0, "w":0.5}, + + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"[{", "x":11.5, "y":1}, + {"label":"]}", "x":12.5, "y":1}, + {"label":"\\|", "x":13.5, "y":1, "w":1.5}, + {"label":"PgUp", "x":15, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";:", "x":10.75, "y":2}, + {"label":"'\"", "x":11.75, "y":2}, + {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + {"label":"PgDn", "x":15, "y":2}, + + {"label":"Shift", "x":0, "y":3, "w":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",<", "x":9.25, "y":3}, + {"label":".>", "x":10.25, "y":3}, + {"label":"/?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"\u2191", "x":14, "y":3}, + {"label":"End", "x":15, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"Win", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space", "x":3.75, "y":4, "w":6.25}, + {"label":"Alt", "x":10, "y":4, "w":1.25}, + {"label":"Fn", "x":11.25, "y":4, "w":1.25}, + {"label":"\u2190", "x":13, "y":4}, + {"label":"\u2193", "x":14, "y":4}, + {"label":"\u2192", "x":15, "y":4} + ] + } + } +} diff --git a/keyboards/mwstudio/mw65_rgb/keymaps/default/keymap.c b/keyboards/mwstudio/mw65_rgb/keymaps/default/keymap.c new file mode 100644 index 000000000000..7028a223c5c4 --- /dev/null +++ b/keyboards/mwstudio/mw65_rgb/keymaps/default/keymap.c @@ -0,0 +1,51 @@ +/* Copyright 2021 TW59420 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_VOLD, KC_DEL, KC_VOLU, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, RGB_TOG, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT( + 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, _______, _______, RGB_HUI, _______, + RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAI, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, RGB_SAD, + _______, _______, _______, _______, RGB_MOD, _______, RGB_SPD, RGB_VAD, RGB_SPI + ), + + [2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/mwstudio/mw65_rgb/keymaps/via/keymap.c b/keyboards/mwstudio/mw65_rgb/keymaps/via/keymap.c new file mode 100644 index 000000000000..78a17233e3ae --- /dev/null +++ b/keyboards/mwstudio/mw65_rgb/keymaps/via/keymap.c @@ -0,0 +1,128 @@ +/* Copyright 2021 TW59420 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +typedef union { + uint32_t raw; + struct { + bool top_rgb_change :1; + bool bottom_rgb_change :1; + }; +} user_config_t; + +user_config_t user_config; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_VOLD, KC_DEL, KC_VOLU, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, RGB_TOG, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT( + 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, _______, _______, RGB_HUI, _______, + RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, USER00, RGB_SAI, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, USER01, RGB_VAI, RGB_SAD, + _______, _______, _______, _______, RGB_MOD, _______, RGB_SPD, RGB_VAD, RGB_SPI + ), + + [2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; + +void keyboard_post_init_user(void) { + // Read the user config from EEPROM + user_config.raw = eeconfig_read_user(); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case USER00: + if (record->event.pressed) { + // Do something when pressed + user_config.top_rgb_change ^= 1; // Toggles the status + eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM + } else { + // Do something else when release + } + return false; // Skip all further processing of this key + case USER01: + if (record->event.pressed) { + // Do something when pressed + user_config.bottom_rgb_change ^= 1; // Toggles the status + eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM + } else { + // Do something else when release + } + return false; // Skip all further processing of this key + default: + return true; // Process all other keycodes normally + } +} + +#ifdef ENCODER_ENABLE +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + if (clockwise) { + tap_code(dynamic_keymap_get_keycode(biton32(layer_state), 4, 3)); + } else { + tap_code(dynamic_keymap_get_keycode(biton32(layer_state), 4, 4)); + } + } + return true; +} +#endif + +void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { + + if (user_config.top_rgb_change) + { + for (size_t i = 16; i < 83; i++) + { + RGB_MATRIX_INDICATOR_SET_COLOR(i, 0, 0, 0); + } + } + + if (host_keyboard_led_state().caps_lock) { + RGB_MATRIX_INDICATOR_SET_COLOR(52, 0, 255, 255); // assuming caps lock is at led #5 + } + + if (user_config.bottom_rgb_change) + { + for (size_t i = 0; i < 16; i++) + { + RGB_MATRIX_INDICATOR_SET_COLOR(i, 0, 0, 0); + } + } +} diff --git a/keyboards/mwstudio/mw65_rgb/keymaps/via/rules.mk b/keyboards/mwstudio/mw65_rgb/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/mwstudio/mw65_rgb/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/mwstudio/mw65_rgb/mw65_rgb.c b/keyboards/mwstudio/mw65_rgb/mw65_rgb.c new file mode 100644 index 000000000000..e49944f1ce2e --- /dev/null +++ b/keyboards/mwstudio/mw65_rgb/mw65_rgb.c @@ -0,0 +1,45 @@ +/* Copyright 2021 TW59420 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "mw65_rgb.h" + +#ifdef RGB_MATRIX_ENABLE +led_config_t g_led_config = { { + { 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68 }, + { 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67 }, + { 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, NO_LED, 40, 39 }, + { 25, NO_LED, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38 }, + { 24, 23, 22, NO_LED, NO_LED, NO_LED, 21, NO_LED, NO_LED, 15, 20, 19, 18, 17, 16 }, + + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 } +}, { + { 175, 45 },{ 130, 45 },{ 85, 45 }, { 50, 45 }, { 15, 45 }, { 15, 35 }, { 15, 25 }, { 15, 10 }, + { 50, 10 }, { 85, 10 }, { 130, 10 }, { 175, 10 }, { 210, 10 }, { 210, 25 }, { 210, 35 }, { 210, 45 }, + { 217, 54 }, { 203, 54 }, { 189, 54 }, { 166, 54 }, { 150, 54 }, { 95, 54 }, { 40, 54 }, { 24, 54 }, { 8, 54 }, + { 17, 42 }, { 39, 42 }, { 53, 42 }, { 67, 42 }, { 81, 42 }, { 95, 42 }, { 109, 42 }, { 123, 42 }, { 137, 42 }, { 151, 42 }, { 165, 42 }, { 184, 42 }, { 203, 42 }, { 217, 42 }, + { 217, 30 }, { 195, 30 }, { 172, 30 }, { 158, 30 }, { 144, 30 }, { 130, 30 }, { 116, 30 }, { 102, 30 }, { 88, 30 }, { 74, 30 }, { 60, 30 }, { 46, 30 }, { 32, 30 },{ 13, 30 }, + { 9, 18 }, { 25, 18 }, { 39, 18 }, { 53, 18 }, { 67, 18 }, { 81, 18 }, { 95, 18 }, { 109, 18 }, { 123, 18 }, { 137, 18 }, { 151, 18 }, { 165, 18 }, { 181, 18 }, { 199, 18 }, { 217, 18 }, + { 217, 6 }, { 196, 6 }, { 175, 6 }, { 161, 6 }, { 147, 6 }, { 133, 6 }, { 119, 6 }, { 105, 6 }, { 91, 6 }, { 77, 6 }, { 63, 6 }, { 49, 6 }, { 35, 6 }, { 21, 6 }, { 7, 6 }, +}, { + 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, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 +} }; +#endif + diff --git a/keyboards/mwstudio/mw65_rgb/mw65_rgb.h b/keyboards/mwstudio/mw65_rgb/mw65_rgb.h new file mode 100644 index 000000000000..fb769eda0839 --- /dev/null +++ b/keyboards/mwstudio/mw65_rgb/mw65_rgb.h @@ -0,0 +1,49 @@ +/* Copyright 2021 TW59420 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +/* 44 ◯ 43 + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │0E │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │1E │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2D │2E │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │3E │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │40 │41 │42 │46 │4A │4B │ │4C │4D │4E │ + * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + */ + +#define LAYOUT( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K44, K0E, K43, \ + 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, 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, XXX, K2D, K2E }, \ + { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \ + { K40, K41, K42, K43, K44, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D, K4E }, \ + { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX } \ +} diff --git a/keyboards/mwstudio/mw65_rgb/readme.md b/keyboards/mwstudio/mw65_rgb/readme.md new file mode 100644 index 000000000000..e15b5f9de9b2 --- /dev/null +++ b/keyboards/mwstudio/mw65_rgb/readme.md @@ -0,0 +1,22 @@ +# MW65_RGB + +![MW65_RGB](https://i.imgur.com/MPb8Lba.jpg?2) + +Support Atmega32u4 keyboard. + +* Keyboard Maintainer: [TW59420](https://github.com/TW59420) +* Hardware Supported: Atmega32u4 + +Make example for this keyboard (after setting up your build environment): + + make mwstudio/mw65_rgb:default + +Flashing example for this keyboard: + + make mwstudio/mw65_rgb: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 +* **Physical reset button**: Short press the button on the back of the PCB to enter the Bootloader and flash the firmware +* **Keycode in layout**: Press the key mapped to RESET if it is available diff --git a/keyboards/mwstudio/mw65_rgb/rules.mk b/keyboards/mwstudio/mw65_rgb/rules.mk new file mode 100644 index 000000000000..d6a1992a65de --- /dev/null +++ b/keyboards/mwstudio/mw65_rgb/rules.mk @@ -0,0 +1,22 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = WS2812 +ENCODER_ENABLE = yes diff --git a/keyboards/mwstudio/mw75/config.h b/keyboards/mwstudio/mw75/config.h new file mode 100644 index 000000000000..285327665372 --- /dev/null +++ b/keyboards/mwstudio/mw75/config.h @@ -0,0 +1,105 @@ +/* Copyright 2021 TW59420 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7BA1 +#define PRODUCT_ID 0x7501 +#define DEVICE_VER 0x0001 +#define MANUFACTURER MWStudio +#define PRODUCT MW75 + +/* key matrix size */ +#define MATRIX_ROWS 7 +#define MATRIX_COLS 15 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { B7, D0, D1, D2, D3, D5, B0} +#define MATRIX_COL_PINS { D4, D6, D7, B4, B5, B6, C6, C7, F7, F6, F5, F4, F1, F0, E6 } + +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 1 + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +#define RGB_DI_PIN B3 +#define RGBLIGHT_SLEEP + +#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 +#define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS +#define DRIVER_LED_TOTAL 97 +#define RGBLED_NUM 97 +#define RGB_MATRIX_KEYPRESSES + +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_FRACTAL +#define ENABLE_RGB_MATRIX_PIXEL_RAIN + +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN + +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 + +#define ENCODERS_PAD_A { B1 } +#define ENCODERS_PAD_B { B2 } diff --git a/keyboards/mwstudio/mw75/info.json b/keyboards/mwstudio/mw75/info.json new file mode 100644 index 000000000000..2eabde149592 --- /dev/null +++ b/keyboards/mwstudio/mw75/info.json @@ -0,0 +1,99 @@ +{ + "keyboard_name": "MW75", + "url": "", + "maintainer": "TW59420", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":1.5, "y":0}, + {"label":"F2", "x":2.5, "y":0}, + {"label":"F3", "x":3.5, "y":0}, + {"label":"F4", "x":4.5, "y":0}, + {"label":"F5", "x":6, "y":0}, + {"label":"F6", "x":7, "y":0}, + {"label":"F7", "x":8, "y":0}, + {"label":"F8", "x":9, "y":0}, + {"label":"F9", "x":10.5, "y":0}, + {"label":"F10", "x":11.5, "y":0}, + {"label":"F11", "x":12.5, "y":0}, + {"label":"F12", "x":13.5, "y":0}, + {"label":"Encoder CCW", "x":15, "y":0, "w":0.5}, + {"label":"Encoder Click", "x":15.5, "y":0}, + {"label":"Encoder CW", "x":16.5, "y":0, "w":0.5}, + + {"label":"`~", "x":0, "y":1.5}, + {"label":"1!", "x":1, "y":1.5}, + {"label":"2@", "x":2, "y":1.5}, + {"label":"3#", "x":3, "y":1.5}, + {"label":"4$", "x":4, "y":1.5}, + {"label":"5%", "x":5, "y":1.5}, + {"label":"6^", "x":6, "y":1.5}, + {"label":"7&", "x":7, "y":1.5}, + {"label":"8*", "x":8, "y":1.5}, + {"label":"9(", "x":9, "y":1.5}, + {"label":"0)", "x":10, "y":1.5}, + {"label":"-_", "x":11, "y":1.5}, + {"label":"=+", "x":12, "y":1.5}, + {"label":"Backspace", "x":13, "y":1.5, "w":2}, + {"label":"Delete", "x":15, "y":1.5}, + + {"label":"Tab", "x":0, "y":2.5, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.5}, + {"label":"W", "x":2.5, "y":2.5}, + {"label":"E", "x":3.5, "y":2.5}, + {"label":"R", "x":4.5, "y":2.5}, + {"label":"T", "x":5.5, "y":2.5}, + {"label":"Y", "x":6.5, "y":2.5}, + {"label":"U", "x":7.5, "y":2.5}, + {"label":"I", "x":8.5, "y":2.5}, + {"label":"O", "x":9.5, "y":2.5}, + {"label":"P", "x":10.5, "y":2.5}, + {"label":"[{", "x":11.5, "y":2.5}, + {"label":"]}", "x":12.5, "y":2.5}, + {"label":"\\|", "x":13.5, "y":2.5, "w":1.5}, + {"label":"PgUp", "x":15, "y":2.5}, + + {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, + {"label":"A", "x":1.75, "y":3.5}, + {"label":"S", "x":2.75, "y":3.5}, + {"label":"D", "x":3.75, "y":3.5}, + {"label":"F", "x":4.75, "y":3.5}, + {"label":"G", "x":5.75, "y":3.5}, + {"label":"H", "x":6.75, "y":3.5}, + {"label":"J", "x":7.75, "y":3.5}, + {"label":"K", "x":8.75, "y":3.5}, + {"label":"L", "x":9.75, "y":3.5}, + {"label":";:", "x":10.75, "y":3.5}, + {"label":"'\"", "x":11.75, "y":3.5}, + {"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, + {"label":"PgDn", "x":15, "y":3.5}, + + {"label":"Shift", "x":0, "y":4.5, "w":2.25}, + {"label":"Z", "x":2.25, "y":4.5}, + {"label":"X", "x":3.25, "y":4.5}, + {"label":"C", "x":4.25, "y":4.5}, + {"label":"V", "x":5.25, "y":4.5}, + {"label":"B", "x":6.25, "y":4.5}, + {"label":"N", "x":7.25, "y":4.5}, + {"label":"M", "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":"Shift", "x":12.25, "y":4.5, "w":1.75}, + {"label":"\u2191", "x":14, "y":4.5}, + {"label":"End", "x":15, "y":4.5}, + + {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, + {"label":"Win", "x":1.25, "y":5.5, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, + {"label":"Space", "x":3.75, "y":5.5, "w":6.25}, + {"label":"Alt", "x":10, "y":5.5, "w":1.25}, + {"label":"Fn", "x":11.25, "y":5.5, "w":1.25}, + {"label":"\u2190", "x":13, "y":5.5}, + {"label":"\u2193", "x":14, "y":5.5}, + {"label":"\u2192", "x":15, "y":5.5} + ] + } + } +} diff --git a/keyboards/mwstudio/mw75/keymaps/default/keymap.c b/keyboards/mwstudio/mw75/keymaps/default/keymap.c new file mode 100644 index 000000000000..12ac4ce74a4b --- /dev/null +++ b/keyboards/mwstudio/mw75/keymaps/default/keymap.c @@ -0,0 +1,58 @@ +/* Copyright 2021 TW59420 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_VOLD, RGB_TOG, KC_VOLU, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, + RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAI, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, RGB_SAD, + _______, _______, _______, _______, RGB_MOD, _______, RGB_SPD, RGB_VAD, RGB_SPI + ), + + [2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; diff --git a/keyboards/mwstudio/mw75/keymaps/via/keymap.c b/keyboards/mwstudio/mw75/keymaps/via/keymap.c new file mode 100644 index 000000000000..12ac4ce74a4b --- /dev/null +++ b/keyboards/mwstudio/mw75/keymaps/via/keymap.c @@ -0,0 +1,58 @@ +/* Copyright 2021 TW59420 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_VOLD, RGB_TOG, KC_VOLU, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, + RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAI, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, RGB_SAD, + _______, _______, _______, _______, RGB_MOD, _______, RGB_SPD, RGB_VAD, RGB_SPI + ), + + [2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; diff --git a/keyboards/mwstudio/mw75/keymaps/via/rules.mk b/keyboards/mwstudio/mw75/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/mwstudio/mw75/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/mwstudio/mw75/mw75.c b/keyboards/mwstudio/mw75/mw75.c new file mode 100644 index 000000000000..7e6641d5dbdc --- /dev/null +++ b/keyboards/mwstudio/mw75/mw75.c @@ -0,0 +1,47 @@ +/* Copyright 2021 TW59420 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "mw75.h" + +#ifdef RGB_MATRIX_ENABLE +led_config_t g_led_config = { { + { 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67 }, + { 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52 }, + { 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37 }, + { 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, NO_LED, 24, 23 }, + { 22, NO_LED, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9 }, + { 8, 7, 6, NO_LED, NO_LED, NO_LED, 5, NO_LED, NO_LED, NO_LED, 4, 3, 2, 1, 0 }, + { 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96 } +}, { + { 217, 60 }, { 203, 60 }, { 189, 60 }, { 166, 60 }, { 150, 60 }, { 95, 60 }, { 40, 60 }, { 24, 60 }, { 8, 60 }, + { 217, 50 }, { 203, 50 }, { 184, 50 }, { 165, 50 }, { 151, 50 }, { 137, 50 }, { 123, 50 }, { 109, 50 }, { 95, 50 }, { 81, 50 }, { 67, 50 }, { 53, 50 }, { 39, 50 }, { 17, 50 }, + { 217, 40 }, { 195, 40 }, { 172, 40 }, { 158, 40 }, { 144, 40 }, { 130, 40 }, { 116, 40 }, { 102, 40 }, { 88, 40 }, { 74, 40 }, { 60, 40 }, { 46, 40 }, { 32, 40 }, { 13, 40 }, + { 217, 30 }, { 199, 30 }, { 181, 30 }, { 165, 30 }, { 151, 30 }, { 137, 30 }, { 123, 30 }, { 109, 30 }, { 95, 30 }, { 81, 30 }, { 67, 30 }, { 53, 30 }, { 39, 30 }, { 25, 30 }, { 9, 30 }, + { 217, 20 }, { 196, 20 }, { 175, 20 }, { 161, 20 }, { 147, 20 }, { 133, 20 }, { 119, 20 }, { 105, 20 }, { 91, 20 }, { 77, 20 }, { 63, 20 }, { 49, 20 }, { 35, 20 }, { 21, 20 }, { 7, 20 }, + { 217, 5 }, { 196, 5 }, { 182, 5 }, { 168, 5 }, { 154, 5 }, { 133, 5 }, { 119, 5 }, { 105, 5 }, { 91, 5 }, { 70, 5 }, { 56, 5 }, { 42, 5 }, { 28, 5 }, { 7, 5 }, + + { 14, 14 }, { 42, 14 }, { 98, 14 }, { 154, 14 }, { 182, 14 }, { 210, 14 }, { 210, 25 }, { 210, 40 }, + { 210, 55 },{ 182, 55 },{ 126, 55 },{ 98, 55 }, { 42, 55 }, { 14, 55 }, { 14, 40 }, { 14, 25 } +}, { + 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, 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 +} }; +#endif diff --git a/keyboards/mwstudio/mw75/mw75.h b/keyboards/mwstudio/mw75/mw75.h new file mode 100644 index 000000000000..c6542fc57a29 --- /dev/null +++ b/keyboards/mwstudio/mw75/mw75.h @@ -0,0 +1,55 @@ +/* Copyright 2021 TW59420 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +/* 54 ◯ 53 + * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┐ + * │01 │ │02 │03 │04 │05 │ │06 │07 │08 │09 │ │0A │0B │0C │0D │ │0E │ + * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │1E │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2D │2E │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3D │3E │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + * │40 │42 │43 │44 │45 │46 │47 │48 │49 │4A │4B │4C │4D │4E │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │50 │51 │52 │56 │5A │5B │ │5C │5D │5E │ + * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + */ + +#define LAYOUT( \ + K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K54, K0E, K53, \ + 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, K3D, K3E, \ + K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, \ + K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E \ +) { \ + { XXX, 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, XXX, K3D, K3E }, \ + { K40, XXX, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E }, \ + { K50, K51, K52, K53, K54, XXX, K56, XXX, XXX, XXX, K5A, K5B, K5C, K5D, K5E }, \ + { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX } \ +} diff --git a/keyboards/mwstudio/mw75/readme.md b/keyboards/mwstudio/mw75/readme.md new file mode 100644 index 000000000000..ecabf568aa55 --- /dev/null +++ b/keyboards/mwstudio/mw75/readme.md @@ -0,0 +1,22 @@ +# MW75 + +![MW75](https://i.imgur.com/TdVxYNE.jpg?2) + +Support Atmega32u4 keyboard. + +* Keyboard Maintainer: [TW59420](https://github.com/TW59420) +* Hardware Supported: Atmega32u4 + +Make example for this keyboard (after setting up your build environment): + + make mwstudio/mw75:default + +Flashing example for this keyboard: + + make mwstudio/mw75: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 +* **Physical reset button**: Short press the button on the back of the PCB to enter the Bootloader and flash the firmware +* **Keycode in layout**: Press the key mapped to RESET if it is available diff --git a/keyboards/mwstudio/mw75/rules.mk b/keyboards/mwstudio/mw75/rules.mk new file mode 100644 index 000000000000..d6a1992a65de --- /dev/null +++ b/keyboards/mwstudio/mw75/rules.mk @@ -0,0 +1,22 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = WS2812 +ENCODER_ENABLE = yes diff --git a/keyboards/mwstudio/readme.md b/keyboards/mwstudio/readme.md new file mode 100644 index 000000000000..1962a97d8215 --- /dev/null +++ b/keyboards/mwstudio/readme.md @@ -0,0 +1,7 @@ +# MWStudio pcb + +This is a series of PCB +* MW75 The chip is ATmega32U4 +* MW65_RGB The chip is ATmega32U4 + + diff --git a/keyboards/mxss/config.h b/keyboards/mxss/config.h index b0aef681168c..67f5b8fa2763 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -87,53 +86,3 @@ along with this program. If not, see . * */ //#define FORCE_NKRO - -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - -#endif diff --git a/keyboards/mxss/info.json b/keyboards/mxss/info.json index 2250c5f4f736..3a0e25d86aed 100644 --- a/keyboards/mxss/info.json +++ b/keyboards/mxss/info.json @@ -2,8 +2,6 @@ "keyboard_name": "MxSS", "maintainer": "qmk", "url": "https://geekhack.org/index.php?topic=94986.0", - "height": 5, - "width": 16, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] diff --git a/keyboards/mxss/keymaps/default/keymap.c b/keyboards/mxss/keymaps/default/keymap.c index b69d91df9d0c..e74eb0d22602 100644 --- a/keyboards/mxss/keymaps/default/keymap.c +++ b/keyboards/mxss/keymaps/default/keymap.c @@ -51,19 +51,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUD, RGB_SAD, RGB_HUI ), }; - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/mxss/mxss.c b/keyboards/mxss/mxss.c index 48ea46641944..21beee232ce7 100644 --- a/keyboards/mxss/mxss.c +++ b/keyboards/mxss/mxss.c @@ -17,8 +17,8 @@ */ #include QMK_KEYBOARD_H -#include "tmk_core/common/eeprom.h" -#include "tmk_core/common/action_layer.h" +#include "eeprom.h" +#include "action_layer.h" #include "rgblight.h" #include "via.h" #include "version.h" // for QMK_BUILDDATE used in EEPROM magic @@ -39,13 +39,6 @@ void matrix_init_kb(void) { matrix_init_user(); } -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - bool process_record_kb(uint16_t keycode, keyrecord_t *record) { // Handle custom keycodes for front LED operation process_record_fled(keycode, record); diff --git a/keyboards/mxss/mxss_frontled.c b/keyboards/mxss/mxss_frontled.c index 3c4309f0702f..f5e4613dfb20 100644 --- a/keyboards/mxss/mxss_frontled.c +++ b/keyboards/mxss/mxss_frontled.c @@ -17,7 +17,7 @@ */ #include "mxss_frontled.h" -#include "tmk_core/common/eeprom.h" +#include "eeprom.h" #include "rgblight.h" #include "via.h" #include "version.h" // for QMK_BUILDDATE used in EEPROM magic diff --git a/keyboards/mxss/rgblight.c b/keyboards/mxss/rgblight.c index d2d79815cd06..b2df351c55c0 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 -# include "eeprom_stm32.h" -#endif #include "wait.h" #include "progmem.h" #include "timer.h" diff --git a/keyboards/mxss/rules.mk b/keyboards/mxss/rules.mk index 7dc98d4739b8..f6a50218c144 100644 --- a/keyboards/mxss/rules.mk +++ b/keyboards/mxss/rules.mk @@ -2,39 +2,28 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 +CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output SRC += mxss_frontled.c # Remove the common RGB light code and use my iteration instead +COMMON_VPATH += $(QUANTUM_DIR)/rgblight OPT_DEFS += -DRGBLIGHT_ENABLE -SRC += $(QUANTUM_DIR)/process_keycode/process_rgb.c SRC += rgblight.c -SRC += color.c -SRC += ws2812.c +SRC += $(QUANTUM_DIR)/color.c +WS2812_DRIVER_REQUIRED = yes CIE1931_CURVE = yes +RGB_KEYCODES_ENABLE = yes diff --git a/keyboards/mysticworks/wyvern/info.json b/keyboards/mysticworks/wyvern/info.json index ccf2e6d6e687..3e649a6cc367 100644 --- a/keyboards/mysticworks/wyvern/info.json +++ b/keyboards/mysticworks/wyvern/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Wyvern", "url": "https://mysticworks.xyz", "maintainer": "mysticworks", - "width": 20.75, - "height": 5.25, "layouts": { "LAYOUT_all": { "layout": [ @@ -474,4 +472,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/mysticworks/wyvern/rules.mk b/keyboards/mysticworks/wyvern/rules.mk index 6bd8b89327ed..bc3dfbbfa5c6 100644 --- a/keyboards/mysticworks/wyvern/rules.mk +++ b/keyboards/mysticworks/wyvern/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = qmk-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/nack/config.h b/keyboards/nack/config.h index e442a13336f4..82daf71037e5 100644 --- a/keyboards/nack/config.h +++ b/keyboards/nack/config.h @@ -1,5 +1,5 @@ /* -Copyright 2020 pastapojken +Copyright 2020 farfalleflickan This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -21,7 +21,7 @@ along with this program. If not, see . #define VENDOR_ID 0xDA12 #define PRODUCT_ID 0x6060 #define DEVICE_VER 0x0001 -#define MANUFACTURER pastapojken +#define MANUFACTURER farfalleflickan #define PRODUCT nack keyboard #define MATRIX_ROWS 4 @@ -45,15 +45,60 @@ along with this program. If not, see . #define RGB_MATRIX_HUE_STEP 10 #define RGB_MATRIX_SAT_STEP 10 #define RGB_MATRIX_VAL_STEP 10 +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + #endif #ifdef AUDIO_ENABLE - #define STARTUP_SONG SONG(NO_SOUND) #define AUDIO_PIN A5 #define AUDIO_PIN_ALT A4 - #define AUDIO_PIN_ALT_AS_NEGATIVE - /* - * Basically, change this section once pull request 6165 has been merged - * https://github.com/qmk/qmk_firmware/pull/6165 - */ + #define STARTUP_SONG SONG(NO_SOUND) + #define AUDIO_DAC_SAMPLE_MAX 4095U #endif diff --git a/keyboards/nack/info.json b/keyboards/nack/info.json index 780017f6cc54..e906bcbb9957 100644 --- a/keyboards/nack/info.json +++ b/keyboards/nack/info.json @@ -1,12 +1,69 @@ { "keyboard_name": "nack", - "url": "https://github.com/pastapojken/nack", - "maintainer": "pastapojken", - "width": 13, - "height": 4, + "url": "https://github.com/farfalleflickan/nack", + "maintainer": "farfalleflickan", + "layout_aliases": { + "LAYOUT": "LAYOUT_ortho_4x13" + }, "layouts": { - "LAYOUT": { - "layout": [{"label":"Tab", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"\u00c5", "x":11, "y":0}, {"label":"\u00a8", "x":12, "y":0}, {"label":"Esc", "x":0, "y":1}, {"label":"A", "x":1, "y":1}, {"label":"S", "x":2, "y":1}, {"label":"D", "x":3, "y":1}, {"label":"F", "x":4, "y":1}, {"label":"G", "x":5, "y":1}, {"label":"H", "x":6, "y":1}, {"label":"J", "x":7, "y":1}, {"label":"K", "x":8, "y":1}, {"label":"L", "x":9, "y":1}, {"label":"\u00d6", "x":10, "y":1}, {"label":"\u00c4", "x":11, "y":1}, {"label":"'", "x":12, "y":1}, {"label":"Shift", "x":0, "y":2}, {"label":"Z", "x":1, "y":2}, {"label":"X", "x":2, "y":2}, {"label":"C", "x":3, "y":2}, {"label":"V", "x":4, "y":2}, {"label":"B", "x":5, "y":2}, {"label":"N", "x":6, "y":2}, {"label":"M", "x":7, "y":2}, {"label":",", "x":8, "y":2}, {"label":".", "x":9, "y":2}, {"label":"", "x":10, "y":2}, {"label":"↑", "x":11, "y":2}, {"label":"backsp", "x":12, "y":2}, {"label":"Ctrl", "x":0, "y":3}, {"label":"Super", "x":1, "y":3}, {"label":"Alt", "x":2, "y":3}, {"label":"Fn", "x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"label":"Fn", "x":6, "y":3}, {"label":"", "x":7, "y":3}, {"label":"Alt Gr", "x":8, "y":3}, {"label":"Enter", "x":9, "y":3}, {"label":"←", "x":10, "y":3}, {"label":"↓", "x":11, "y":3}, {"label":"→", "x":12, "y":3}] + "LAYOUT_ortho_4x13": { + "layout": [ + {"label":"Tab", "x":0, "y":0}, + {"label":"Q", "x":1, "y":0}, + {"label":"W", "x":2, "y":0}, + {"label":"E", "x":3, "y":0}, + {"label":"R", "x":4, "y":0}, + {"label":"T", "x":5, "y":0}, + {"label":"Y", "x":6, "y":0}, + {"label":"U", "x":7, "y":0}, + {"label":"I", "x":8, "y":0}, + {"label":"O", "x":9, "y":0}, + {"label":"P", "x":10, "y":0}, + {"label":"Å", "x":11, "y":0}, + {"label":"¨", "x":12, "y":0}, + + {"label":"Esc", "x":0, "y":1}, + {"label":"A", "x":1, "y":1}, + {"label":"S", "x":2, "y":1}, + {"label":"D", "x":3, "y":1}, + {"label":"F", "x":4, "y":1}, + {"label":"G", "x":5, "y":1}, + {"label":"H", "x":6, "y":1}, + {"label":"J", "x":7, "y":1}, + {"label":"K", "x":8, "y":1}, + {"label":"L", "x":9, "y":1}, + {"label":"Ö", "x":10, "y":1}, + {"label":"Ä", "x":11, "y":1}, + {"label":"'", "x":12, "y":1}, + + {"label":"Shift", "x":0, "y":2}, + {"label":"Z", "x":1, "y":2}, + {"label":"X", "x":2, "y":2}, + {"label":"C", "x":3, "y":2}, + {"label":"V", "x":4, "y":2}, + {"label":"B", "x":5, "y":2}, + {"label":"N", "x":6, "y":2}, + {"label":"M", "x":7, "y":2}, + {"label":",", "x":8, "y":2}, + {"label":".", "x":9, "y":2}, + {"label":"-", "x":10, "y":2}, + {"label":"Up", "x":11, "y":2}, + {"label":"Backspace", "x":12, "y":2}, + + {"label":"Ctrl", "x":0, "y":3}, + {"label":"Alt", "x":1, "y":3}, + {"label":"GUI", "x":2, "y":3}, + {"label":"Fn1", "x":3, "y":3}, + {"label":"Space", "x":4, "y":3}, + {"label":"NoOp", "x":5, "y":3}, + {"label":"Fn2", "x":6, "y":3}, + {"label":"Alt Gr", "x":7, "y":3}, + {"label":"<", "x":8, "y":3}, + {"label":"Enter", "x":9, "y":3}, + {"label":"Left", "x":10, "y":3}, + {"label":"Down", "x":11, "y":3}, + {"label":"Right", "x":12, "y":3} + ] } } } diff --git a/keyboards/nack/keymaps/default/keymap.c b/keyboards/nack/keymaps/default/keymap.c index 4c3e3dacbdd4..9a76fbbddba7 100644 --- a/keyboards/nack/keymaps/default/keymap.c +++ b/keyboards/nack/keymaps/default/keymap.c @@ -1,4 +1,4 @@ -/* Copyright 2020 pastapojken +/* Copyright 2020 farfalleflickan * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -25,41 +25,41 @@ enum layer_names { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = LAYOUT( /* __________________________________________________________________________________________________________________________________________________________________________ - | \ \ \ \ \ \ \ \ \ \ \ \ \ \ */ -// | |----TAB-----|---Q--------|-----W------|-----E------|-----R------|----T-------|-----Y------|-----U------|----I-------|------O-----|----P-------|----Å-------|--( ¨^~ )---| + | \ \ \ \ \ \ \ \ \ \ \ \ \ \ */ +// | |----TAB-----|---Q--------|-----W------|-----E------|-----R------|----T-------|-----Y------|-----U------|----I-------|------O-----|----P-------|----Å-------|--( ¨^~ )---| 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, -// | |----ESC-----|---A--------|---S--------|----D-------|-----F------|-----G------|-----H------|-----J------|-----K------|-----L------|-----Ö------|-----Ä------|--( '* )----| +// | |----ESC-----|---A--------|---S--------|----D-------|-----F------|-----G------|-----H------|-----J------|-----K------|-----L------|-----Ö------|-----Ä------|--( '* )----| KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, -// | |---SHIFT----|---Z--------|---X--------|----C-------|-----V------|-----B------|-----N------|------M-----|---( ,; )---|---( .: )---|---( -_ )---|----UP------|-BACKSPACE--| +// | |---SHIFT----|---Z--------|---X--------|----C-------|-----V------|-----B------|-----N------|------M-----|---( ,; )---|---( .: )---|---( -_ )---|----UP------|-BACKSPACE--| KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_BSPC, -// | |---CTRL-----|---ALT------|---META-----|----FN_1----|----------SPACE----------|----FN_2----|----AltGr---|--( <>| )---|---ENETER---|-LEFT-------|---DOWN-----|--RIGHT-----| - KC_LCTL, KC_LALT, KC_LGUI, TT(NUM), KC_SPC, KC_NO, TT(FN), KC_RALT, KC_NUBS, KC_ENT, KC_LEFT, KC_DOWN, KC_RIGHT -// \|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________| +// | |---CTRL-----|---ALT------|---META-----|----FN_1----|----------SPACE----------|----FN_2----|----AltGr---|--( <>| )---|---ENETER---|-LEFT-------|---DOWN-----|--RIGHT-----| + KC_LCTL, KC_LALT, KC_LGUI, MO(NUM), KC_SPC, KC_NO, MO(FN), KC_RALT, KC_NUBS, KC_ENT, KC_LEFT, KC_DOWN, KC_RIGHT +// \|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________| ), [NUM] = LAYOUT( /* __________________________________________________________________________________________________________________________________________________________________________ - | \ \ \ \ \ \ \ \ \ \ \ \ \ \ */ + | \ \ \ \ \ \ \ \ \ \ \ \ \ \ */ // | |---TAB------|---( 1! )---|--( 2"@ )---|--( 3#£ )---|---( 4¤$ )--|--( 5%€ )---|---( 6& )---|--( 7/{ )---|--( 8([ )---|--( 9)] )---|--( 0=} )---|---( +?\ )--|---( ´` )---| _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, -// | |----ESC-----|-----F1-----|-----F2-----|----F3------|----F4------|----F5------|-----F6-----|-----F7------|----F8-----|-----F9-----|-----F10----|----F11-----|----F12-----| +// | |----ESC-----|-----F1-----|-----F2-----|----F3------|----F4------|----F5------|-----F6-----|-----F7------|----F8-----|-----F9-----|-----F10----|----F11-----|----F12-----| _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, -// | |---SHIFT----|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------| +// | |---SHIFT----|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------| _______, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, -// | |---CTRL-----|---ALT------|---META-----|---FN_1-----|------------|------------|----FN_2----|--AltGr-----|---( §½ )---|------------|------------|------------|------------| - _______, _______, _______, TT(FN), KC_NO, KC_NO, TO(BASE), _______, KC_GRV, KC_NO, KC_NO, KC_NO, KC_NO -// \|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________| +// | |---CTRL-----|---ALT------|---META-----|---FN_1-----|------------|------------|----FN_2----|--AltGr-----|---( §½ )---|------------|------------|------------|------------| + _______, _______, _______, MO(FN), KC_NO, KC_NO, TO(BASE), _______, KC_GRV, KC_NO, KC_NO, KC_NO, KC_NO +// \|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________| ), [FN] = LAYOUT( /* __________________________________________________________________________________________________________________________________________________________________________ - | \ \ \ \ \ \ \ \ \ \ \ \ \ \ */ -// | |-RGB TOGGLE-|-CHANGE RGB-|-RGB HUE UP-|-RGB SAT UP-|------------|------------|------------|------------|------------|------------|------------|------------|-RESET KBD--| + | \ \ \ \ \ \ \ \ \ \ \ \ \ \ */ +// | |-RGB TOGGLE-|-CHANGE RGB-|-RGB HUE UP-|-RGB SAT UP-|------------|------------|------------|------------|------------|------------|------------|------------|-RESET KBD--| RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, -// | |------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------| +// | |------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------| MU_TOG, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, -// | |------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|-RGB LIGHT +|------------| +// | |------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|-RGB LIGHT +|------------| KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_VAI, KC_NO, -// | |------------|------------|------------|---FN_1-----|------------|------------|----FN_2----|------------|------------|------------|------------|-RGB LIGHT -|------------| - KC_NO, KC_NO, KC_NO, TT(NUM), KC_NO, KC_NO, TO(BASE), KC_NO, KC_NO, KC_NO, KC_NO, RGB_VAD, KC_NO -// \|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________| +// | |------------|------------|------------|---FN_1-----|------------|------------|----FN_2----|------------|------------|------------|------------|-RGB LIGHT -|------------| + KC_NO, KC_NO, KC_NO, MO(NUM), KC_NO, KC_NO, TO(BASE), KC_NO, KC_NO, KC_NO, KC_NO, RGB_VAD, KC_NO +// \|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________| ) }; diff --git a/keyboards/nack/keymaps/farfalleflickan/keymap.c b/keyboards/nack/keymaps/farfalleflickan/keymap.c new file mode 100644 index 000000000000..6e447bee1dae --- /dev/null +++ b/keyboards/nack/keymaps/farfalleflickan/keymap.c @@ -0,0 +1,203 @@ +/* Copyright 2020 farfalleflickan + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +#include "keymap.h" + +#define ____ _______ + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + BASE, + NOGUI, + NUM, + FN +}; + +// Defines the keycodes used by our macros in process_record_user +enum custom_keycodes { + CK_LSFT = SAFE_RANGE, // Shift + CK_RALT, // AltGr + CK_BSPC_DEL, // Backspace or Del (if pressed with CK_LSFT or CK_RALT) + KK_RESET +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [BASE] = LAYOUT( +/* __________________________________________________________________________________________________________________________________________________________________________ + | \ \ \ \ \ \ \ \ \ \ \ \ \ \ */ +// | |----TAB-----|---Q--------|-----W------|-----E------|-----R------|----T-------|-----Y------|-----U------|----I-------|------O-----|----P-------|----Å-------|--( ¨^~ )---| + 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, +// | |----ESC-----|---A--------|---S--------|----D-------|-----F------|-----G------|-----H------|-----J------|-----K------|-----L------|-----Ö------|-----Ä------|--( '* )----| + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, +// | |---SHIFT----|---Z--------|---X--------|----C-------|-----V------|-----B------|-----N------|------M-----|---( ,; )---|---( .: )---|---( -_ )---|----UP------|-BACKSPACE--| + CK_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, CK_BSPC_DEL, +// | |---CTRL-----|---ALT------|---META-----|----FN_1----|----------SPACE----------|----FN_2----|----AltGr---|--( <>| )---|---ENTER----|-LEFT-------|---DOWN-----|--RIGHT-----| + KC_LCTL, KC_LALT, KC_LGUI, MO(NUM), KC_SPC, KC_NO, MO(FN), CK_RALT, KC_NUBS, KC_ENT, KC_LEFT, KC_DOWN, KC_RIGHT +// \|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________| + ), + [NOGUI] = LAYOUT( +/* __________________________________________________________________________________________________________________________________________________________________________ + | \ \ \ \ \ \ \ \ \ \ \ \ \ \ */ +// | |----TAB-----|---Q--------|-----W------|-----E------|-----R------|----T-------|-----Y------|-----U------|----I-------|------O-----|----P-------|----Å-------|--( ¨^~ )---| + 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, +// | |----ESC-----|---A--------|---S--------|----D-------|-----F------|-----G------|-----H------|-----J------|-----K------|-----L------|-----Ö------|-----Ä------|--( '* )----| + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, +// | |---SHIFT----|---Z--------|---X--------|----C-------|-----V------|-----B------|-----N------|------M-----|---( ,; )---|---( .: )---|---( -_ )---|----UP------|-BACKSPACE--| + CK_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, CK_BSPC_DEL, +// | |---CTRL-----|---ALT------|---META-----|----FN_1----|----------SPACE----------|----FN_2----|----AltGr---|--( <>| )---|---ENTER----|-LEFT-------|---DOWN-----|--RIGHT-----| + KC_LCTL, KC_LALT, KC_NO, MO(NUM), KC_SPC, KC_NO, TO(BASE), CK_RALT, KC_NUBS, KC_ENT, KC_LEFT, KC_DOWN, KC_RIGHT +// \|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________| + ), + [NUM] = LAYOUT( +/* __________________________________________________________________________________________________________________________________________________________________________ + | \ \ \ \ \ \ \ \ \ \ \ \ \ \ */ +// | |---TAB------|---( 1! )---|--( 2"@ )---|--( 3#£ )---|---( 4¤$ )--|--( 5%€ )---|---( 6& )---|--( 7/{ )---|--( 8([ )---|--( 9)] )---|--( 0=} )---|---( +?\ )--|---( ´` )---| + ____, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, +// | |----ESC-----|-----F1-----|-----F2-----|----F3------|----F4------|----F5------|-----F6-----|-----F7------|----F8-----|-----F9-----|-----F10----|----F11-----|----F12-----| + ____, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, +// | |---SHIFT----|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------| + ____, KC_P0, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, KC_P9, KC_PGUP, KC_NO, +// | |---CTRL-----|---ALT------|---META-----|---FN_1-----|------------|------------|----FN_2----|--AltGr-----|---( §½ )---|------------|------------|------------|------------| + ____, ____, ____, TO(BASE), KC_NO, KC_NO, MO(FN), ____, KC_GRV, KC_PDOT, KC_HOME, KC_PGDOWN, KC_END +// \|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________| + ), + [FN] = LAYOUT( +/* __________________________________________________________________________________________________________________________________________________________________________ + | \ \ \ \ \ \ \ \ \ \ \ \ \ \ */ +// | |-RGB TOGGLE-|-CHANGE RGB-|-RGB HUE UP-|-RGB SAT UP-|------------|------------|------------|------------|------------|------------|------------|------------|-RESET KBD--| + RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KK_RESET, +// | |------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------| + MU_TOG, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, +// | |------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|-RGB LIGHT +|------------| + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_VAI, KC_NO, +// | |------------|------------|------------|---FN_1-----|------------|------------|----FN_2----|------------|------------|------------|------------|-RGB LIGHT -|------------| + KC_NO, KC_NO, KC_NO, TO(BASE), KC_NO, KC_NO, TO(BASE), TO(NOGUI), KC_NO, KC_NO, KC_NO, RGB_VAD, KC_NO +// \|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________| + ) +}; + +// Interrupt bools +bool lshift = false, ralt = false; + +// Number of items that are saved in prev_kcs +uint8_t prev_indx = 0; +// Used to save the last 6 actual keycodes +uint16_t prev_kcs[6] = {0, 0, 0, 0, 0, 0}; + +/* +Used to add a keycode to a prev_kcs to remember it. +When full the last code gets discarded and replaced by +the new one. +*/ +void add_to_prev(uint16_t kc){ + for (int i=0; i0; i--){ + prev_kcs[i] = prev_kcs[i-1]; + } + prev_kcs[0] = kc; + } else { + prev_kcs[prev_indx] = kc; + prev_indx++; + } +} + +/* +Unregisters all codes saved in prev_kcs and resets prev_indx. +gets called on multiple occasions mainly when shift is released +and when frankenkeycodes are pressed. Prevents output of +wrong characters when really specific key combinations +that would never occur during normal usage are pressed. +*/ +void unreg_prev(void){ + if (prev_indx == 0) + return; + for (int i=0; ievent.pressed) { + unregister_code(KC_LSFT); + register_code(KC_LSFT); + lshift = true; + } else { + unreg_prev(); + unregister_code(KC_LSFT); + lshift = false; + } + return false; + break; + case CK_RALT: + if(record->event.pressed) { + unregister_code(KC_RALT); + register_code(KC_RALT); + ralt = true; + } else { + unreg_prev(); + unregister_code(KC_RALT); + ralt = false; + } + return false; + break; + case CK_BSPC_DEL: + if (ralt==true) { + RALT_NO(KC_BSPC,KC_DEL); + } else { + SHIFT_NO(KC_BSPC,KC_DEL); + } + break; + case KK_RESET: // Basically, turn off RGB before resetting + if (record->event.pressed) { + key_timer = timer_read32(); + #ifdef RGB_MATRIX_ENABLE + rgb_matrix_disable_noeeprom(); + #endif + } else { + if (timer_elapsed32(key_timer) >= 20) { + reset_keyboard(); + } + } + break; + default: + if(record->event.pressed) { + timer_timeout_keymap(); + if (lshift) + register_code(KC_LSFT); + else + unregister_code(KC_LSFT); + + if (ralt) + register_code(KC_ALGR); + else + unregister_code(KC_ALGR); + } + break; + } + return true; +} + +__attribute__((weak)) +void timer_timeout_keymap(void){ +} diff --git a/keyboards/nack/keymaps/farfalleflickan/keymap.h b/keyboards/nack/keymaps/farfalleflickan/keymap.h new file mode 100644 index 000000000000..212f45ffdb4a --- /dev/null +++ b/keyboards/nack/keymaps/farfalleflickan/keymap.h @@ -0,0 +1,116 @@ +/* Copyright 2020 farfalleflickan + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once +#include "quantum.h" + +void add_to_prev(uint16_t kc); +void unreg_prev(void); +void timer_timeout_keymap(void); +bool process_record_user(uint16_t keycode, keyrecord_t *record); + +// Normal shift status +#define SHIFT_NORM(kc1, kc2) \ +if (record->event.pressed) { \ + timer_timeout_keymap(); \ + if (lshift) { \ + register_code(KC_LSFT); \ + unregister_code(kc2); \ + register_code(kc2); \ + add_to_prev(kc2); \ + } else { \ + unregister_code(KC_LSFT); \ + unregister_code(kc1); \ + register_code(kc1); \ + } \ +} else { \ + unregister_code(kc1); \ + unregister_code(kc2); \ +} \ +return false; + +// Always shifted +#define SHIFT_ALL(kc1, kc2) \ +if (record->event.pressed) { \ + timer_timeout_keymap(); \ + register_code(KC_LSFT); \ + if (lshift) { \ + unregister_code(kc2); \ + register_code(kc2); \ + add_to_prev(kc2); \ + } else { \ + unregister_code(kc1); \ + register_code(kc1); \ + add_to_prev(kc1); \ + } \ +} else { \ + unregister_code(kc1); \ + unregister_code(kc2); \ + unreg_prev(); \ + if (lshift) \ + register_code(KC_LSFT); \ + else \ + unregister_code(KC_LSFT); \ +} \ +return false; + +// Never shifted +#define SHIFT_NO(kc1, kc2) \ +if (record->event.pressed) { \ + timer_timeout_keymap(); \ + unregister_code(KC_LSFT); \ + if (lshift) { \ + unregister_code(kc2); \ + register_code(kc2); \ + add_to_prev(kc2); \ + } else { \ + unregister_code(kc1); \ + register_code(kc1); \ + } \ +} else { \ + unregister_code(kc1); \ + unregister_code(kc2); \ + unreg_prev(); \ + if (lshift) \ + register_code(KC_LSFT); \ + else \ + unregister_code(KC_LSFT); \ +} \ +return false; + +//Never RALT +#define RALT_NO(kc1, kc2) \ +if (record->event.pressed) { \ + timer_timeout_keymap(); \ + unregister_code(KC_RALT); \ + if (ralt) { \ + unregister_code(kc2); \ + register_code(kc2); \ + add_to_prev(kc2); \ + } else { \ + unregister_code(kc1); \ + register_code(kc1); \ + } \ +} else { \ + unregister_code(kc1); \ + unregister_code(kc2); \ + unreg_prev(); \ + if (ralt) \ + register_code(KC_RALT); \ + else \ + unregister_code(KC_RALT); \ +} \ +return false; diff --git a/keyboards/nack/keymaps/farfalleflickan/readme.md b/keyboards/nack/keymaps/farfalleflickan/readme.md new file mode 100644 index 000000000000..fbe5c6f5e3cb --- /dev/null +++ b/keyboards/nack/keymaps/farfalleflickan/readme.md @@ -0,0 +1 @@ +# farfalleflickan's keymap for nack diff --git a/keyboards/nack/keymaps/pastapojken/keymap.c b/keyboards/nack/keymaps/pastapojken/keymap.c deleted file mode 100644 index 3bbcc4b368da..000000000000 --- a/keyboards/nack/keymaps/pastapojken/keymap.c +++ /dev/null @@ -1,199 +0,0 @@ -/* Copyright 2020 pastapojken - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include QMK_KEYBOARD_H -#include "keymap.h" - -#define ____ _______ - -// Defines names for use in layer keycodes and the keymap -enum layer_names { - BASE, - NUM, - FN -}; - -// Defines the keycodes used by our macros in process_record_user -enum custom_keycodes { - CK_LSFT = SAFE_RANGE, // Shift - CK_RALT, // AltGr - CK_BSPC_DEL, // Backspace or Del (if pressed with CK_LSFT or CK_RALT) - CK_UP_PGUP, // Up or PgUp (if pressed with CK_LSFT or CK_RALT) - CK_DOWN_PGDOWN, // Down or PgDown (if pressed with CK_LSFT or CK_RALT) - CK_LEFT_HOME, // Left or Home (if pressed with CK_LSFT or CK_RALT) - CK_RIGHT_END, // Right or End (if pressed with CK_LSFT or CK_RALT) - KK_RESET -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [BASE] = LAYOUT( -/* __________________________________________________________________________________________________________________________________________________________________________ - | \ \ \ \ \ \ \ \ \ \ \ \ \ \ */ -// | |----TAB-----|---Q--------|-----W------|-----E------|-----R------|----T-------|-----Y------|-----U------|----I-------|------O-----|----P-------|----Å-------|--( ¨^~ )---| - 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, -// | |----ESC-----|---A--------|---S--------|----D-------|-----F------|-----G------|-----H------|-----J------|-----K------|-----L------|-----Ö------|-----Ä------|--( '* )----| - KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, -// | |---SHIFT----|---Z--------|---X--------|----C-------|-----V------|-----B------|-----N------|------M-----|---( ,; )---|---( .: )---|---( -_ )---|----UP------|-BACKSPACE--| - CK_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, CK_UP_PGUP, CK_BSPC_DEL, -// | |---CTRL-----|---ALT------|---META-----|----FN_1----|----------SPACE----------|----FN_2----|----AltGr---|--( <>| )---|---ENETER---|-LEFT-------|---DOWN-----|--RIGHT-----| - KC_LCTL, KC_LALT, KC_LGUI, TT(NUM), KC_SPC, KC_NO, TT(FN), CK_RALT, KC_NUBS, KC_ENT, CK_LEFT_HOME,CK_DOWN_PGDOWN,CK_RIGHT_END -// \|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________| - ), - [NUM] = LAYOUT( -/* __________________________________________________________________________________________________________________________________________________________________________ - | \ \ \ \ \ \ \ \ \ \ \ \ \ \ */ -// | |---TAB------|---( 1! )---|--( 2"@ )---|--( 3#£ )---|---( 4¤$ )--|--( 5%€ )---|---( 6& )---|--( 7/{ )---|--( 8([ )---|--( 9)] )---|--( 0=} )---|---( +?\ )--|---( ´` )---| - ____, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, -// | |----ESC-----|-----F1-----|-----F2-----|----F3------|----F4------|----F5------|-----F6-----|-----F7------|----F8-----|-----F9-----|-----F10----|----F11-----|----F12-----| - ____, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, -// | |---SHIFT----|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------| - ____, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, -// | |---CTRL-----|---ALT------|---META-----|---FN_1-----|------------|------------|----FN_2----|--AltGr-----|---( §½ )---|------------|------------|------------|------------| - ____, ____, ____, TT(FN), KC_NO, KC_NO, TO(BASE), ____, KC_GRV, KC_NO, KC_NO, KC_NO, KC_NO -// \|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________| - ), - [FN] = LAYOUT( -/* __________________________________________________________________________________________________________________________________________________________________________ - | \ \ \ \ \ \ \ \ \ \ \ \ \ \ */ -// | |-RGB TOGGLE-|-CHANGE RGB-|-RGB HUE UP-|-RGB SAT UP-|------------|------------|------------|------------|------------|------------|------------|------------|-RESET KBD--| - RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KK_RESET, -// | |------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------| - MU_TOG, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, -// | |------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|-RGB LIGHT +|------------| - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_VAI, KC_NO, -// | |------------|------------|------------|---FN_1-----|------------|------------|----FN_2----|------------|------------|------------|------------|-RGB LIGHT -|------------| - KC_NO, KC_NO, KC_NO, TT(NUM), KC_NO, KC_NO, TO(BASE), KC_NO, KC_NO, KC_NO, KC_NO, RGB_VAD, KC_NO -// \|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________|____________| - ) -}; - -// Interrupt bools -bool lshift = false, ralt = false; - -// Number of items that are saved in prev_kcs -uint8_t prev_indx = 0; -// Used to save the last 6 actual keycodes -uint16_t prev_kcs[6] = {0, 0, 0, 0, 0, 0}; - -/* -Used to add a keycode to a prev_kcs to remember it. -When full the last code gets discarded and replaced by -the new one. -*/ -void add_to_prev(uint16_t kc){ - for (int i=0; i0; i--){ - prev_kcs[i] = prev_kcs[i-1]; - } - prev_kcs[0] = kc; - } else { - prev_kcs[prev_indx] = kc; - prev_indx++; - } -} - -/* -Unregisters all codes saved in prev_kcs and resets prev_indx. -gets called on multiple occasions mainly when shift is released -and when frankenkeycodes are pressed. Prevents output of -wrong characters when really specific key combinations -that would never occur during normal usage are pressed. -*/ -void unreg_prev(void){ - if (prev_indx == 0) - return; - for (int i=0; ievent.pressed) { - unregister_code(KC_LSFT); - register_code(KC_LSFT); - lshift = true; - } else { - unreg_prev(); - unregister_code(KC_LSFT); - lshift = false; - } - return false; - case CK_RALT: - if(record->event.pressed) { - unregister_code(KC_RALT); - register_code(KC_RALT); - ralt = true; - } else { - unreg_prev(); - unregister_code(KC_RALT); - ralt = false; - } - return false; - case CK_BSPC_DEL: - RALT_NO(KC_BSPC,KC_DEL); - break; - case CK_UP_PGUP: - RALT_NO(KC_UP,KC_PGUP); - break; - case CK_DOWN_PGDOWN: - RALT_NO(KC_DOWN,KC_PGDOWN); - break; - case CK_LEFT_HOME: - RALT_NO(KC_LEFT,KC_HOME); - break; - case CK_RIGHT_END: - RALT_NO(KC_RIGHT,KC_END); - break; - case KK_RESET: // Basically, turn off RGB before resetting - if (record->event.pressed) { - key_timer = timer_read32(); - #ifdef RGB_MATRIX_ENABLE - rgb_matrix_disable_noeeprom(); - #endif - } else { - if (timer_elapsed32(key_timer) >= 20) { - reset_keyboard(); - } - } - break; - default: - if(record->event.pressed) { - timer_timeout_keymap(); - if (lshift) - register_code(KC_LSFT); - else - unregister_code(KC_LSFT); - - if (ralt) - register_code(KC_ALGR); - else - unregister_code(KC_ALGR); - } - break; - } - return true; -} - -__attribute__((weak)) -void timer_timeout_keymap(void){ -} diff --git a/keyboards/nack/keymaps/pastapojken/keymap.h b/keyboards/nack/keymaps/pastapojken/keymap.h deleted file mode 100644 index aaeed707069f..000000000000 --- a/keyboards/nack/keymaps/pastapojken/keymap.h +++ /dev/null @@ -1,122 +0,0 @@ -/* Copyright 2020 pastapojken - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once -#include "quantum.h" - -#define TAPPING_TOGGLE 2 - -#ifdef AUDIO_ENABLE - #define STARTUP_SONG SONG(NO_SOUND) -#endif - -void add_to_prev(uint16_t kc); -void unreg_prev(void); -void timer_timeout_keymap(void); -bool process_record_user(uint16_t keycode, keyrecord_t *record); - -// Normal shift status -#define SHIFT_NORM(kc1, kc2) \ -if (record->event.pressed) { \ - timer_timeout_keymap(); \ - if (lshift) { \ - register_code(KC_LSFT); \ - unregister_code(kc2); \ - register_code(kc2); \ - add_to_prev(kc2); \ - } else { \ - unregister_code(KC_LSFT); \ - unregister_code(kc1); \ - register_code(kc1); \ - } \ -} else { \ - unregister_code(kc1); \ - unregister_code(kc2); \ -} \ -return false; - -// Always shifted -#define SHIFT_ALL(kc1, kc2) \ -if (record->event.pressed) { \ - timer_timeout_keymap(); \ - register_code(KC_LSFT); \ - if (lshift) { \ - unregister_code(kc2); \ - register_code(kc2); \ - add_to_prev(kc2); \ - } else { \ - unregister_code(kc1); \ - register_code(kc1); \ - add_to_prev(kc1); \ - } \ -} else { \ - unregister_code(kc1); \ - unregister_code(kc2); \ - unreg_prev(); \ - if (lshift) \ - register_code(KC_LSFT); \ - else \ - unregister_code(KC_LSFT); \ -} \ -return false; - -// Never shifted -#define SHIFT_NO(kc1, kc2) \ -if (record->event.pressed) { \ - timer_timeout_keymap(); \ - unregister_code(KC_LSFT); \ - if (lshift) { \ - unregister_code(kc2); \ - register_code(kc2); \ - add_to_prev(kc2); \ - } else { \ - unregister_code(kc1); \ - register_code(kc1); \ - } \ -} else { \ - unregister_code(kc1); \ - unregister_code(kc2); \ - unreg_prev(); \ - if (lshift) \ - register_code(KC_LSFT); \ - else \ - unregister_code(KC_LSFT); \ -} \ -return false; - -//Never RALT -#define RALT_NO(kc1, kc2) \ -if (record->event.pressed) { \ - timer_timeout_keymap(); \ - unregister_code(KC_RALT); \ - if (ralt) { \ - unregister_code(kc2); \ - register_code(kc2); \ - add_to_prev(kc2); \ - } else { \ - unregister_code(kc1); \ - register_code(kc1); \ - } \ -} else { \ - unregister_code(kc1); \ - unregister_code(kc2); \ - unreg_prev(); \ - if (ralt) \ - register_code(KC_RALT); \ - else \ - unregister_code(KC_RALT); \ -} \ -return false; diff --git a/keyboards/nack/keymaps/pastapojken/readme.md b/keyboards/nack/keymaps/pastapojken/readme.md deleted file mode 100644 index 73e1e2add9d9..000000000000 --- a/keyboards/nack/keymaps/pastapojken/readme.md +++ /dev/null @@ -1 +0,0 @@ -# pastapojken's keymap for nack diff --git a/keyboards/nack/mcuconf.h b/keyboards/nack/mcuconf.h index d2251dbaef6f..4b714b9d52e1 100644 --- a/keyboards/nack/mcuconf.h +++ b/keyboards/nack/mcuconf.h @@ -28,4 +28,3 @@ #undef STM32_SPI_USE_SPI2 #define STM32_SPI_USE_SPI2 FALSE - diff --git a/keyboards/nack/nack.c b/keyboards/nack/nack.c index 185a96fdad7d..8433e551c481 100644 --- a/keyboards/nack/nack.c +++ b/keyboards/nack/nack.c @@ -1,4 +1,4 @@ -/* Copyright 2020 pastapojken +/* Copyright 2020 farfalleflickan * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/keyboards/nack/nack.h b/keyboards/nack/nack.h index 30e310a486c6..b409d40df3db 100644 --- a/keyboards/nack/nack.h +++ b/keyboards/nack/nack.h @@ -1,4 +1,4 @@ -/* Copyright 2020 pastapojken +/* Copyright 2020 farfalleflickan * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,7 +17,7 @@ #pragma once #include "quantum.h" -#define LAYOUT( \ +#define LAYOUT_ortho_4x13( \ 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,\ diff --git a/keyboards/nack/readme.md b/keyboards/nack/readme.md index 6a1adeaf7be0..b654020c4fe3 100644 --- a/keyboards/nack/readme.md +++ b/keyboards/nack/readme.md @@ -4,9 +4,9 @@ A ISO-friendly ortholinear keyboard, 13x4 keys. See [screenshots](https://imgur.com/a/PPO18Lc). -* Keyboard Maintainer: [pastapojken](https://github.com/pastapojken) +* Keyboard Maintainer: [farfalleflickan](https://github.com/farfalleflickan) * Hardware Supported: nack PCB -* Hardware Availability: [github repo](https://github.com/pastapojken/nack) +* Hardware Availability: [github repo](https://github.com/farfalleflickan/nack) Make example for this keyboard (after setting up your build environment): diff --git a/keyboards/nack/rules.mk b/keyboards/nack/rules.mk index 35e9440695d1..4a564d221cab 100644 --- a/keyboards/nack/rules.mk +++ b/keyboards/nack/rules.mk @@ -8,21 +8,18 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = yes # Audio output RGB_MATRIX_ENABLE = yes RGB_MATRIX_DRIVER = WS2812 WS2812_DRIVER = spi -AUDIO_DRIVER = dac_additive # How to drive the 2 speakers +AUDIO_DRIVER = dac_basic # How to drive the 2 speakers UNICODE_ENABLE = yes # Unicode support diff --git a/keyboards/nafuda/info.json b/keyboards/nafuda/info.json index d5bf2b055e79..d418341d1967 100644 --- a/keyboards/nafuda/info.json +++ b/keyboards/nafuda/info.json @@ -2,8 +2,6 @@ "keyboard_name": "nafuda", "url": "https://salicylic-acid3.hatenablog.com/", "maintainer": "Salicylic_acid3", - "width": 3, - "height": 3, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/nafuda/nafuda.c b/keyboards/nafuda/nafuda.c index d2061181e73a..334b3dab27f9 100644 --- a/keyboards/nafuda/nafuda.c +++ b/keyboards/nafuda/nafuda.c @@ -1,5 +1 @@ #include "nafuda.h" - -void matrix_init_kb(void) { - matrix_init_user(); -}; diff --git a/keyboards/nafuda/rules.mk b/keyboards/nafuda/rules.mk index bdc8634648e9..612f5f554207 100644 --- a/keyboards/nafuda/rules.mk +++ b/keyboards/nafuda/rules.mk @@ -2,32 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -TAP_DANCE_ENABLE = no -OLED_DRIVER_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 - +AUDIO_ENABLE = no # Audio output +RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. +OLED_ENABLE = no diff --git a/keyboards/naiping/np64/chconf.h b/keyboards/naiping/np64/chconf.h new file mode 100644 index 000000000000..5884dd8b0bde --- /dev/null +++ b/keyboards/naiping/np64/chconf.h @@ -0,0 +1,24 @@ +/* Copyright 2021 Weirdo + * + * This program is free software: you can 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 . + */ + +#pragma once + +// Need to override the SysTick timer to use TIM3 -- this is a 16-bit timer on F303 +// so we need to change resolution and frequency to match. +#define CH_CFG_ST_RESOLUTION 16 +#define CH_CFG_ST_FREQUENCY 10000 + +#include_next diff --git a/keyboards/naiping/np64/config.h b/keyboards/naiping/np64/config.h new file mode 100644 index 000000000000..ee4bdb86753f --- /dev/null +++ b/keyboards/naiping/np64/config.h @@ -0,0 +1,52 @@ + /* Copyright 2021 Weirdo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7764 +#define PRODUCT_ID 0x7064 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Weirdo +#define PRODUCT NP64 + + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +#define MATRIX_ROW_PINS { E6, B7, F7, F4, F5 } +#define MATRIX_COL_PINS { F6, B0, F1, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, D1 } +#define DIODE_DIRECTION ROW2COL +#define DEBOUNCE 5 + + + +#define RGB_DI_PIN B1 +#define RGBLED_NUM 80 +//#define RGBLIGHT_DISABLE_KEYCODES + + + + +/* 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/naiping/np64/info.json b/keyboards/naiping/np64/info.json new file mode 100644 index 000000000000..8bf71afe0c69 --- /dev/null +++ b/keyboards/naiping/np64/info.json @@ -0,0 +1,82 @@ +{ + "keyboard_name": "np64", + "url": "", + "maintainer": "qmk", + "layout_aliases": { + "LAYOUT": "LAYOUT_64_ansi" + }, + "layouts": { + "LAYOUT_64_ansi": { + "layout": [ + {"label":"K00", "x":0, "y":0}, + {"label":"K01", "x":1, "y":0}, + {"label":"K02", "x":2, "y":0}, + {"label":"K03", "x":3, "y":0}, + {"label":"K04", "x":4, "y":0}, + {"label":"K05", "x":5, "y":0}, + {"label":"K06", "x":6, "y":0}, + {"label":"K07", "x":7, "y":0}, + {"label":"K08", "x":8, "y":0}, + {"label":"K09", "x":9, "y":0}, + {"label":"K0A", "x":10, "y":0}, + {"label":"K0B", "x":11, "y":0}, + {"label":"K0C", "x":12, "y":0}, + {"label":"K0E", "x":13, "y":0, "w":2}, + + {"label":"K10", "x":0, "y":1, "w":1.5}, + {"label":"K12", "x":1.5, "y":1}, + {"label":"K13", "x":2.5, "y":1}, + {"label":"K14", "x":3.5, "y":1}, + {"label":"K15", "x":4.5, "y":1}, + {"label":"K16", "x":5.5, "y":1}, + {"label":"K17", "x":6.5, "y":1}, + {"label":"K18", "x":7.5, "y":1}, + {"label":"K19", "x":8.5, "y":1}, + {"label":"K1A", "x":9.5, "y":1}, + {"label":"K1B", "x":10.5, "y":1}, + {"label":"K1C", "x":11.5, "y":1}, + {"label":"K1D", "x":12.5, "y":1}, + {"label":"K1E", "x":13.5, "y":1, "w":1.5}, + + {"label":"K20", "x":0, "y":2, "w":1.75}, + {"label":"K22", "x":1.75, "y":2}, + {"label":"K23", "x":2.75, "y":2}, + {"label":"K24", "x":3.75, "y":2}, + {"label":"K25", "x":4.75, "y":2}, + {"label":"K26", "x":5.75, "y":2}, + {"label":"K27", "x":6.75, "y":2}, + {"label":"K28", "x":7.75, "y":2}, + {"label":"K29", "x":8.75, "y":2}, + {"label":"K2A", "x":9.75, "y":2}, + {"label":"K2B", "x":10.75, "y":2}, + {"label":"K2C", "x":11.75, "y":2}, + {"label":"K2E", "x":12.75, "y":2, "w":2.25}, + + {"label":"K30", "x":0, "y":3, "w":2}, + {"label":"K32", "x":2, "y":3}, + {"label":"K33", "x":3, "y":3}, + {"label":"K34", "x":4, "y":3}, + {"label":"K35", "x":5, "y":3}, + {"label":"K36", "x":6, "y":3}, + {"label":"K37", "x":7, "y":3}, + {"label":"K38", "x":8, "y":3}, + {"label":"K39", "x":9, "y":3}, + {"label":"K3A", "x":10, "y":3}, + {"label":"K3B", "x":11, "y":3}, + {"label":"K3C", "x":12, "y":3}, + {"label":"K3D", "x":13, "y":3}, + {"label":"K3E", "x":14, "y":3}, + + {"label":"K40", "x":0, "y":4, "w":1.25}, + {"label":"K41", "x":1.25, "y":4, "w":1.25}, + {"label":"K42", "x":2.5, "y":4, "w":1.25}, + {"label":"K46", "x":3.75, "y":4, "w":6.25}, + {"label":"K4A", "x":10, "y":4}, + {"label":"K4B", "x":11, "y":4}, + {"label":"K4C", "x":12, "y":4}, + {"label":"K4D", "x":13, "y":4}, + {"label":"K4E", "x":14, "y":4} + ] + } + } +} diff --git a/keyboards/naiping/np64/keymaps/default/keymap.c b/keyboards/naiping/np64/keymaps/default/keymap.c new file mode 100644 index 000000000000..25f72fe664fb --- /dev/null +++ b/keyboards/naiping/np64/keymaps/default/keymap.c @@ -0,0 +1,41 @@ + /* Copyright 2021 Weirdo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + + +// [Keymaps] -----------------------------------------------------------------// +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_64_ansi( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_FN] = LAYOUT_64_ansi( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; diff --git a/keyboards/naiping/np64/keymaps/via/keymap.c b/keyboards/naiping/np64/keymaps/via/keymap.c new file mode 100644 index 000000000000..7afa15e735ee --- /dev/null +++ b/keyboards/naiping/np64/keymaps/via/keymap.c @@ -0,0 +1,54 @@ + /* Copyright 2021 Weirdo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + + +// [Keymaps] -----------------------------------------------------------------// +enum layer_names { _BASE, _FN ,_FN1 ,_FN2 }; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_64_ansi( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_FN] = LAYOUT_64_ansi( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_FN1] = LAYOUT_64_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_FN2] = LAYOUT_64_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; diff --git a/keyboards/naiping/np64/keymaps/via/rules.mk b/keyboards/naiping/np64/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/naiping/np64/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/naiping/np64/np64.c b/keyboards/naiping/np64/np64.c new file mode 100644 index 000000000000..ee4c08cd34d1 --- /dev/null +++ b/keyboards/naiping/np64/np64.c @@ -0,0 +1,16 @@ + /* Copyright 2021 Weirdo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "np64.h" diff --git a/keyboards/naiping/np64/np64.h b/keyboards/naiping/np64/np64.h new file mode 100644 index 000000000000..c2277aa2085b --- /dev/null +++ b/keyboards/naiping/np64/np64.h @@ -0,0 +1,31 @@ +/* +Copyright 2021 Weirdo +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "quantum.h" + + +#define LAYOUT_64_ansi( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, 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, K2E, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E \ +) { \ + {K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, 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, KC_NO, K2E}, \ + {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, K46, KC_NO,KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E} \ +} diff --git a/keyboards/naiping/np64/readme.md b/keyboards/naiping/np64/readme.md new file mode 100644 index 000000000000..8e85d79de3ab --- /dev/null +++ b/keyboards/naiping/np64/readme.md @@ -0,0 +1,17 @@ +# NP_64 + +![NP_64](https://i.imgur.com/DzLy87M.png) + +A 60% keyboard based on STM32f303 + +* Keyboard Maintainer: [Weirdo](https://github.com/weirdo-f) (https://weirdo-f.github.io) +* Hardware Supported: NP_64 +* Hardware Availability: Not yet + +Make example for this keyboard (after setting up your build environment): + + make naiping/np64:default + +The RST pin and GND pin on the board can be quickly shortened twice to enter DFU mode, and then the program can be written. + +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/naiping/np64/rules.mk b/keyboards/naiping/np64/rules.mk new file mode 100644 index 000000000000..fc8cf345a7c0 --- /dev/null +++ b/keyboards/naiping/np64/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = STM32F303 +BOARD = QMK_PROTON_C + +# 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 +# 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 = 64_ansi diff --git a/keyboards/naiping/nphhkb/chconf.h b/keyboards/naiping/nphhkb/chconf.h new file mode 100644 index 000000000000..5884dd8b0bde --- /dev/null +++ b/keyboards/naiping/nphhkb/chconf.h @@ -0,0 +1,24 @@ +/* Copyright 2021 Weirdo + * + * This program is free software: you can 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 . + */ + +#pragma once + +// Need to override the SysTick timer to use TIM3 -- this is a 16-bit timer on F303 +// so we need to change resolution and frequency to match. +#define CH_CFG_ST_RESOLUTION 16 +#define CH_CFG_ST_FREQUENCY 10000 + +#include_next diff --git a/keyboards/naiping/nphhkb/config.h b/keyboards/naiping/nphhkb/config.h new file mode 100644 index 000000000000..26993eeb7ff3 --- /dev/null +++ b/keyboards/naiping/nphhkb/config.h @@ -0,0 +1,52 @@ + /* Copyright 2021 Weirdo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7764 +#define PRODUCT_ID 0x7068 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Weirdo +#define PRODUCT NPhhkb + + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +#define MATRIX_COL_PINS { A4, C15, C14, A5, A6, A15, B1, B10, B12, B13, B14, B15, B6, A8, B5} +#define MATRIX_ROW_PINS { B7, B8, B9, C13, B4} +#define DIODE_DIRECTION ROW2COL +#define DEBOUNCE 5 + + + +#define RGB_DI_PIN A7 +#define RGBLED_NUM 78 +//#define RGBLIGHT_DISABLE_KEYCODES + + + + +/* 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/naiping/nphhkb/info.json b/keyboards/naiping/nphhkb/info.json new file mode 100644 index 000000000000..4975aa3a4171 --- /dev/null +++ b/keyboards/naiping/nphhkb/info.json @@ -0,0 +1,76 @@ +{ + "keyboard_name": "NP_hhkb", + "url": "", + "maintainer": "weirdo-f", + "layout_aliases": { + "LAYOUT": "LAYOUT_60_tsangan_hhkb" + }, + "layouts": { + "LAYOUT_60_tsangan_hhkb": { + "layout": [ + {"label":"K00)", "x":0, "y":0}, + {"label":"K01", "x":1, "y":0}, + {"label":"K02", "x":2, "y":0}, + {"label":"K03", "x":3, "y":0}, + {"label":"K04", "x":4, "y":0}, + {"label":"K05", "x":5, "y":0}, + {"label":"K06", "x":6, "y":0}, + {"label":"K07", "x":7, "y":0}, + {"label":"K08", "x":8, "y":0}, + {"label":"K09", "x":9, "y":0}, + {"label":"K0A", "x":10, "y":0}, + {"label":"K0B", "x":11, "y":0}, + {"label":"K0C", "x":12, "y":0}, + {"label":"K0D", "x":13, "y":0}, + {"label":"K0E ", "x":14, "y":0}, + {"label":"K10", "x":0, "y":1, "w":1.5}, + {"label":"K11", "x":1.5, "y":1}, + {"label":"K12", "x":2.5, "y":1}, + {"label":"K13", "x":3.5, "y":1}, + {"label":"K14", "x":4.5, "y":1}, + {"label":"K15", "x":5.5, "y":1}, + {"label":"K16", "x":6.5, "y":1}, + {"label":"K17", "x":7.5, "y":1}, + {"label":"K18", "x":8.5, "y":1}, + {"label":"K19", "x":9.5, "y":1}, + {"label":"K1A", "x":10.5, "y":1}, + {"label":"K1B", "x":11.5, "y":1}, + {"label":"K1C", "x":12.5, "y":1}, + {"label":"K1D", "x":13.5, "y":1, "w":1.5}, + {"label":"K20", "x":0, "y":2, "w":1.75}, + {"label":"K21", "x":1.75, "y":2}, + {"label":"K22", "x":2.75, "y":2}, + {"label":"K23", "x":3.75, "y":2}, + {"label":"K24", "x":4.75, "y":2}, + {"label":"K25", "x":5.75, "y":2}, + {"label":"K26", "x":6.75, "y":2}, + {"label":"K27", "x":7.75, "y":2}, + {"label":"K28", "x":8.75, "y":2}, + {"label":"K29", "x":9.75, "y":2}, + {"label":"K2A", "x":10.75, "y":2}, + {"label":"K2B", "x":11.75, "y":2}, + {"label":"K2D", "x":12.75, "y":2, "w":2.25}, + {"label":"K30", "x":0, "y":3, "w":2.25}, + {"label":"K31", "x":2.25, "y":3}, + {"label":"K32", "x":3.25, "y":3}, + {"label":"K33", "x":4.25, "y":3}, + {"label":"K34", "x":5.25, "y":3}, + {"label":"K35", "x":6.25, "y":3}, + {"label":"K36", "x":7.25, "y":3}, + {"label":"K37", "x":8.25, "y":3}, + {"label":"K38", "x":9.25, "y":3}, + {"label":"K39", "x":10.25, "y":3}, + {"label":"K3A", "x":11.25, "y":3}, + {"label":"K3B", "x":12.25, "y":3, "w":1.75}, + {"label":"K3D", "x":14, "y":3}, + {"label":"K40", "x":0, "y":4, "w":1.5}, + {"label":"K41", "x":1.5, "y":4}, + {"label":"K42", "x":2.5, "y":4, "w":1.5}, + {"label":"K46", "x":4, "y":4, "w":7}, + {"label":"K4A", "x":11, "y":4, "w":1.5}, + {"label":"K4B", "x":12.5, "y":4}, + {"label":"K4D", "x":13.5, "y":4, "w":1.5} + ] + } + } +} diff --git a/keyboards/naiping/nphhkb/keymaps/default/keymap.c b/keyboards/naiping/nphhkb/keymaps/default/keymap.c new file mode 100644 index 000000000000..2c4b6324be34 --- /dev/null +++ b/keyboards/naiping/nphhkb/keymaps/default/keymap.c @@ -0,0 +1,40 @@ + /* Copyright 2021 Weirdo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + + +// [Keymaps] -----------------------------------------------------------------// +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_60_tsangan_hhkb( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_TRNS, KC_LALT, KC_LCTL, KC_SPC, KC_RCTL, KC_RALT, KC_TRNS ), + + + [_FN] = LAYOUT_60_tsangan_hhkb( + 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_BSPC, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ) +}; diff --git a/keyboards/naiping/nphhkb/keymaps/via/keymap.c b/keyboards/naiping/nphhkb/keymaps/via/keymap.c new file mode 100644 index 000000000000..36128f8bba04 --- /dev/null +++ b/keyboards/naiping/nphhkb/keymaps/via/keymap.c @@ -0,0 +1,51 @@ + /* Copyright 2021 Weirdo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + + +// [Keymaps] -----------------------------------------------------------------// +enum layer_names { _BASE, _FN ,_FN1 ,_FN2 }; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_60_tsangan_hhkb( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_TRNS, KC_LALT, KC_LCTL, KC_SPC, KC_RCTL, KC_RALT, KC_TRNS ), + + + [_FN] = LAYOUT_60_tsangan_hhkb( + 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_BSPC, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), // + + [_FN1] = LAYOUT_60_tsangan_hhkb( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), + + [_FN2] = LAYOUT_60_tsangan_hhkb( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), +}; diff --git a/keyboards/naiping/nphhkb/keymaps/via/rules.mk b/keyboards/naiping/nphhkb/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/naiping/nphhkb/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/naiping/nphhkb/nphhkb.c b/keyboards/naiping/nphhkb/nphhkb.c new file mode 100644 index 000000000000..881522c0b3ad --- /dev/null +++ b/keyboards/naiping/nphhkb/nphhkb.c @@ -0,0 +1,16 @@ + /* Copyright 2021 Weirdo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "nphhkb.h" diff --git a/keyboards/naiping/nphhkb/nphhkb.h b/keyboards/naiping/nphhkb/nphhkb.h new file mode 100644 index 000000000000..96c99451b4f5 --- /dev/null +++ b/keyboards/naiping/nphhkb/nphhkb.h @@ -0,0 +1,32 @@ +/* +Copyright 2021 Weirdo +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "quantum.h" + +#define ___ KC_NO + +#define LAYOUT_60_tsangan_hhkb( \ + 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, K3D, \ + K40, K41, K42, K46, K4A, K4B, 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, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K3D, ___ }, \ + { K40, K41, K42, ___, ___, ___, K46, ___, ___, ___, K4A, K4B, ___, K4D, ___ } \ +} diff --git a/keyboards/naiping/nphhkb/readme.md b/keyboards/naiping/nphhkb/readme.md new file mode 100644 index 000000000000..47ad9dafc338 --- /dev/null +++ b/keyboards/naiping/nphhkb/readme.md @@ -0,0 +1,17 @@ +# NP_hhkb + +![NP_hhkb](https://i.imgur.com/XnA4qVU.png) + +A 60% keyboard based on STM32f303 + +* Keyboard Maintainer: [Weirdo](https://github.com/weirdo-f) (https://weirdo-f.github.io) +* Hardware Supported: NP_hhkb +* Hardware Availability: Not yet + +Make example for this keyboard (after setting up your build environment): + + make naiping/nphhkb:default + +The RST pin and GND pin on the board can be quickly shortened twice to enter DFU mode, and then the program can be written. + +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/naiping/nphhkb/rules.mk b/keyboards/naiping/nphhkb/rules.mk new file mode 100644 index 000000000000..4d12e5c46f51 --- /dev/null +++ b/keyboards/naiping/nphhkb/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = STM32F303 +BOARD = QMK_PROTON_C + +# 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 +# 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_tsangan_hhkb diff --git a/keyboards/naiping/npminila/chconf.h b/keyboards/naiping/npminila/chconf.h new file mode 100644 index 000000000000..5884dd8b0bde --- /dev/null +++ b/keyboards/naiping/npminila/chconf.h @@ -0,0 +1,24 @@ +/* Copyright 2021 Weirdo + * + * This program is free software: you can 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 . + */ + +#pragma once + +// Need to override the SysTick timer to use TIM3 -- this is a 16-bit timer on F303 +// so we need to change resolution and frequency to match. +#define CH_CFG_ST_RESOLUTION 16 +#define CH_CFG_ST_FREQUENCY 10000 + +#include_next diff --git a/keyboards/naiping/npminila/config.h b/keyboards/naiping/npminila/config.h new file mode 100644 index 000000000000..f18b36d8e7c1 --- /dev/null +++ b/keyboards/naiping/npminila/config.h @@ -0,0 +1,51 @@ + /* Copyright 2021 Weirdo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7764 +#define PRODUCT_ID 0x706D +#define DEVICE_VER 0x0001 +#define MANUFACTURER Weirdo +#define PRODUCT NPminila + + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +#define MATRIX_ROW_PINS { E6, B7, F7, F4, F5 } +#define MATRIX_COL_PINS { F6, B0, F1, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2 } +#define DIODE_DIRECTION ROW2COL +#define DEBOUNCE 5 + + +#define RGB_DI_PIN D1 +#define RGBLED_NUM 82 +//#define RGBLIGHT_DISABLE_KEYCODES + + + + +/* 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/naiping/npminila/info.json b/keyboards/naiping/npminila/info.json new file mode 100644 index 000000000000..4dbe3127d3be --- /dev/null +++ b/keyboards/naiping/npminila/info.json @@ -0,0 +1,77 @@ +{ + "keyboard_name": "NP_minila", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"K00", "x":0, "y":0}, + {"label":"K01", "x":1, "y":0}, + {"label":"K02", "x":2, "y":0}, + {"label":"K03", "x":3, "y":0}, + {"label":"K04", "x":4, "y":0}, + {"label":"K05", "x":5, "y":0}, + {"label":"K06", "x":6, "y":0}, + {"label":"K07", "x":7, "y":0}, + {"label":"K08", "x":8, "y":0}, + {"label":"K09", "x":9, "y":0}, + {"label":"K0A", "x":10, "y":0}, + {"label":"K0B", "x":11, "y":0}, + {"label":"K0C", "x":12, "y":0}, + {"label":"K0D", "x":13, "y":0, "w":2}, + {"label":"K10", "x":0, "y":1, "w":1.5}, + {"label":"K11", "x":1.5, "y":1}, + {"label":"K12", "x":2.5, "y":1}, + {"label":"K13", "x":3.5, "y":1}, + {"label":"K14", "x":4.5, "y":1}, + {"label":"K15", "x":5.5, "y":1}, + {"label":"K16", "x":6.5, "y":1}, + {"label":"K17", "x":7.5, "y":1}, + {"label":"K18", "x":8.5, "y":1}, + {"label":"K19", "x":9.5, "y":1}, + {"label":"K1A", "x":10.5, "y":1}, + {"label":"K1B", "x":11.5, "y":1}, + {"label":"K1C", "x":12.5, "y":1}, + {"label":"K1D", "x":13.5, "y":1, "w":1.5}, + {"label":"K20", "x":0, "y":2, "w":1.75}, + {"label":"K21", "x":1.75, "y":2}, + {"label":"K22", "x":2.75, "y":2}, + {"label":"K23", "x":3.75, "y":2}, + {"label":"K24", "x":4.75, "y":2}, + {"label":"K25", "x":5.75, "y":2}, + {"label":"K26", "x":6.75, "y":2}, + {"label":"K27", "x":7.75, "y":2}, + {"label":"K28", "x":8.75, "y":2}, + {"label":"K29", "x":9.75, "y":2}, + {"label":"K2A", "x":10.75, "y":2}, + {"label":"K2B", "x":11.75, "y":2}, + {"label":"K2D", "x":12.75, "y":2, "w":2.25}, + {"label":"K30", "x":0, "y":3, "w":2}, + {"label":"K31", "x":2, "y":3}, + {"label":"K32", "x":3, "y":3}, + {"label":"K33", "x":4, "y":3}, + {"label":"K34", "x":5, "y":3}, + {"label":"K35", "x":6, "y":3}, + {"label":"K36", "x":7, "y":3}, + {"label":"K37", "x":8, "y":3}, + {"label":"K38", "x":9, "y":3}, + {"label":"K39", "x":10, "y":3}, + {"label":"K3A", "x":11, "y":3}, + {"label":"K3B", "x":12, "y":3}, + {"label":"K3C", "x":13, "y":3}, + {"label":"K3D", "x":14, "y":3}, + {"label":"K40", "x":0, "y":4, "w":1.75}, + {"label":"K41", "x":1.75, "y":4, "w":1.25}, + {"label":"K42", "x":3, "y":4, "w":1.25}, + {"label":"K43", "x":4.25, "y":4, "w":1.25}, + {"label":"K46", "x":5.5, "y":4, "w":2.75}, + {"label":"K48", "x":8.25, "y":4, "w":1.25}, + {"label":"K49", "x":9.5, "y":4, "w":1.25}, + {"label":"K4A", "x":10.75, "y":4, "w":1.25}, + {"label":"K4B", "x":12, "y":4}, + {"label":"K4C", "x":13, "y":4}, + {"label":"K4D", "x":14, "y":4} + ] + } + } +} diff --git a/keyboards/naiping/npminila/keymaps/default/keymap.c b/keyboards/naiping/npminila/keymaps/default/keymap.c new file mode 100644 index 000000000000..30d6bf291e32 --- /dev/null +++ b/keyboards/naiping/npminila/keymaps/default/keymap.c @@ -0,0 +1,39 @@ + /* Copyright 2021 Weirdo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + + +// [Keymaps] -----------------------------------------------------------------// +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT(KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LWIN, KC_LALT, MO(1), KC_SPACE, MO(1), KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT), + + + [_FN] = LAYOUT(KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), // + +}; \ No newline at end of file diff --git a/keyboards/naiping/npminila/keymaps/via/keymap.c b/keyboards/naiping/npminila/keymaps/via/keymap.c new file mode 100644 index 000000000000..10ec385de9ae --- /dev/null +++ b/keyboards/naiping/npminila/keymaps/via/keymap.c @@ -0,0 +1,47 @@ + /* Copyright 2021 Weirdo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + + +// [Keymaps] -----------------------------------------------------------------// +enum layer_names { _BASE, _FN ,_FN1 ,_FN2 }; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT(KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LWIN, KC_LALT, MO(1), KC_SPACE, MO(1), KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT), + + + [_FN] = LAYOUT(KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), // + + [_FN1] = LAYOUT(KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + [_FN2] = LAYOUT(KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; diff --git a/keyboards/naiping/npminila/keymaps/via/rules.mk b/keyboards/naiping/npminila/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/naiping/npminila/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/naiping/npminila/npminila.c b/keyboards/naiping/npminila/npminila.c new file mode 100644 index 000000000000..ab9ebb45d7bd --- /dev/null +++ b/keyboards/naiping/npminila/npminila.c @@ -0,0 +1,16 @@ + /* Copyright 2021 Weirdo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "npminila.h" diff --git a/keyboards/naiping/npminila/npminila.h b/keyboards/naiping/npminila/npminila.h new file mode 100644 index 000000000000..3d0d927a0b66 --- /dev/null +++ b/keyboards/naiping/npminila/npminila.h @@ -0,0 +1,30 @@ +/* +Copyright 2021 Weirdo +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "quantum.h" + +#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, K3B, K3C, K3D, \ + K40, K41, K42, K43, K46, 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, KC_NO, K2D}, \ + {K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D}, \ + {K40, K41, K42, K43, KC_NO, KC_NO, K46, KC_NO,K48, K49, K4A, K4B, K4C, K4D} \ + } diff --git a/keyboards/naiping/npminila/readme.md b/keyboards/naiping/npminila/readme.md new file mode 100644 index 000000000000..335e12508db8 --- /dev/null +++ b/keyboards/naiping/npminila/readme.md @@ -0,0 +1,17 @@ +# NP_minila + +![NP_minila](https://i.imgur.com/Cuy5W1H.png) + +A 60% keyboard based on STM32f303 + +* Keyboard Maintainer: [Weirdo](https://weirdo-f.github.io)(https://github.com/1248314361) +* Hardware Supported: NP_minila +* Hardware Availability: Not yet + +Make example for this keyboard (after setting up your build environment): + + make naiping/npminila:default + +The RST pin and GND pin on the board can be quickly shortened twice to enter DFU mode, and then the program can be written. + +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/naiping/npminila/rules.mk b/keyboards/naiping/npminila/rules.mk new file mode 100644 index 000000000000..3ab27ec312e4 --- /dev/null +++ b/keyboards/naiping/npminila/rules.mk @@ -0,0 +1,20 @@ +# MCU name +MCU = STM32F303 +BOARD = QMK_PROTON_C + +# 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 +# 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 diff --git a/keyboards/naked48/config.h b/keyboards/naked48/config.h index cfb6bf4ffccd..fae55d19f71b 100644 --- a/keyboards/naked48/config.h +++ b/keyboards/naked48/config.h @@ -1,6 +1,5 @@ /* -Copyright 2012 Jun Wako -Copyright 2015 Jack Humbert +Copyright 2021 Salicylic_Acid This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/keyboards/naked48/info.json b/keyboards/naked48/info.json index 362fc9f5e05e..8186a6ba5b73 100644 --- a/keyboards/naked48/info.json +++ b/keyboards/naked48/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Naked48", "url": "https://salicylic-acid3.hatenablog.com/", "maintainer": "Salicylic_acid3", - "width": 14, - "height": 4, "layouts": { "LAYOUT": { "layout": [ @@ -248,4 +246,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/naked48/keymaps/default/keymap.c b/keyboards/naked48/keymaps/default/keymap.c index 616967f57b60..e145c02e320b 100644 --- a/keyboards/naked48/keymaps/default/keymap.c +++ b/keyboards/naked48/keymaps/default/keymap.c @@ -104,7 +104,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return result; } - -void matrix_init_user(void) { - -} diff --git a/keyboards/naked48/keymaps/default/rules.mk b/keyboards/naked48/keymaps/default/rules.mk new file mode 100644 index 000000000000..d29d9074a01a --- /dev/null +++ b/keyboards/naked48/keymaps/default/rules.mk @@ -0,0 +1 @@ +SPLIT_KEYBOARD = no diff --git a/keyboards/naked48/keymaps/salicylic/config.h b/keyboards/naked48/keymaps/salicylic/config.h index b6372db3b956..71a43e208c2d 100644 --- a/keyboards/naked48/keymaps/salicylic/config.h +++ b/keyboards/naked48/keymaps/salicylic/config.h @@ -31,7 +31,7 @@ # define RGB_MATRIX_KEYPRESSES // reacts to keypresses // # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses) // # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended // # define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness) // # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness) // # define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255 @@ -41,4 +41,3 @@ # define RGB_MATRIX_VAL_STEP 5 # define RGB_MATRIX_SPD_STEP 10 #endif - diff --git a/keyboards/naked48/keymaps/salicylic/keymap.c b/keyboards/naked48/keymaps/salicylic/keymap.c index 8b5e15c139c3..dddb6c043246 100644 --- a/keyboards/naked48/keymaps/salicylic/keymap.c +++ b/keyboards/naked48/keymaps/salicylic/keymap.c @@ -44,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //,-----------------------------------------------------| |-----------------------------------------------------. KC_ESC, JP_EXLM, JP_QUES, JP_LBRC, JP_RBRC, JP_TILD, KC_6, KC_7, KC_8, KC_9, JP_ASTR, JP_SLSH, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - JP_QUOT, JP_HASH, JP_DQT, JP_LPRN, JP_RPRN, JP_AT, XXXXXXX, KC_4, KC_5, KC_6, JP_MINS, JP_EQL, + JP_QUOT, JP_HASH, JP_DQUO, JP_LPRN, JP_RPRN, JP_AT, XXXXXXX, KC_4, KC_5, KC_6, JP_MINS, JP_EQL, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| JP_CIRC, JP_PERC, JP_AMPR, JP_SCLN, JP_COLN, JP_PIPE, KC_0, KC_1, KC_2, KC_3, JP_PLUS, KC_ENT, //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| @@ -78,7 +78,7 @@ SFT_T(KC_F12), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XX ) }; -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } diff --git a/keyboards/naked48/keymaps/salicylic/rules.mk b/keyboards/naked48/keymaps/salicylic/rules.mk index 370f36140feb..bdf3488cc1b1 100644 --- a/keyboards/naked48/keymaps/salicylic/rules.mk +++ b/keyboards/naked48/keymaps/salicylic/rules.mk @@ -1,3 +1,4 @@ RGBLIGHT_ENABLE = no RGB_MATRIX_ENABLE = yes +SPLIT_KEYBOARD = no diff --git a/keyboards/naked48/keymaps/salicylic_with_nafuda/keymap.c b/keyboards/naked48/keymaps/salicylic_with_nafuda/keymap.c index 5a99b8c0adc1..7566d4c00ac3 100644 --- a/keyboards/naked48/keymaps/salicylic_with_nafuda/keymap.c +++ b/keyboards/naked48/keymaps/salicylic_with_nafuda/keymap.c @@ -68,7 +68,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //,-----------------------------------------------------| |-----------------------------------------------------. |--------------------------| KC_ESC, JP_EXLM, JP_QUES, JP_LBRC, JP_RBRC, JP_TILD, KC_6, KC_7, KC_8, KC_9, JP_ASTR, JP_SLSH, TG(_MOUSE), //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------| - JP_QUOT, JP_HASH, JP_DQT, JP_LPRN, JP_RPRN, JP_AT, XXXXXXX, KC_4, KC_5, KC_6, JP_MINS, JP_EQL,LT(_ADJUST, KC_BSPC),KC_UP,TG(_BROWSER), + JP_QUOT, JP_HASH, JP_DQUO, JP_LPRN, JP_RPRN, JP_AT, XXXXXXX, KC_4, KC_5, KC_6, JP_MINS, JP_EQL,LT(_ADJUST, KC_BSPC),KC_UP,TG(_BROWSER), //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------| JP_CIRC, JP_PERC, JP_AMPR, JP_SCLN, JP_COLN, JP_PIPE, KC_0, KC_1, KC_2, KC_3, JP_PLUS, KC_ENT, KC_LEFT, KC_DOWN,KC_RIGHT, //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------------------------| @@ -101,7 +101,7 @@ SFT_T(KC_F12), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XX ) }; -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } diff --git a/keyboards/naked48/keymaps/salicylic_with_setta21/keymap.c b/keyboards/naked48/keymaps/salicylic_with_setta21/keymap.c index cbe65fe6605d..1925067d223f 100644 --- a/keyboards/naked48/keymaps/salicylic_with_setta21/keymap.c +++ b/keyboards/naked48/keymaps/salicylic_with_setta21/keymap.c @@ -47,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //,-----------------------------------------------------| |-----------------------------------------------------. |-----------------------------------------------| KC_ESC, JP_EXLM, JP_QUES, JP_LBRC, JP_RBRC, JP_TILD, KC_6, KC_7, KC_8, KC_9, JP_ASTR, JP_SLSH, MO(_LOWER),XXXXXXX,KC_LEFT,XXXXXXX,XXXXXXX, KC_ESC, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------| - JP_QUOT, JP_HASH, JP_DQT, JP_LPRN, JP_RPRN, JP_AT, XXXXXXX, KC_4, KC_5, KC_6, JP_MINS, JP_EQL, KC_DOWN,KC_DOWN, KC_UP,KC_PSLS, KC_F2, + JP_QUOT, JP_HASH, JP_DQUO, JP_LPRN, JP_RPRN, JP_AT, XXXXXXX, KC_4, KC_5, KC_6, JP_MINS, JP_EQL, KC_DOWN,KC_DOWN, KC_UP,KC_PSLS, KC_F2, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------| JP_CIRC, JP_PERC, JP_AMPR, JP_SCLN, JP_COLN, JP_PIPE, KC_0, KC_1, KC_2, KC_3, JP_PLUS, KC_ENT, MO(_RAISE),XXXXXXX,KC_RIGHT,XXXXXXX,KC_PAST, JP_EQL, //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |---------------+---------------+-------+-------| @@ -80,7 +80,7 @@ SFT_T(KC_F12), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XX ) }; -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } diff --git a/keyboards/naked48/keymaps/via/config.h b/keyboards/naked48/keymaps/via/config.h new file mode 100644 index 000000000000..fd96baa819b0 --- /dev/null +++ b/keyboards/naked48/keymaps/via/config.h @@ -0,0 +1,22 @@ +/* Copyright 2021 Salicylic_acid3 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +/* Select hand configuration */ + +#define TAPPING_FORCE_HOLD +#define TAPPING_TERM 180 diff --git a/keyboards/naked48/keymaps/via/keymap.c b/keyboards/naked48/keymaps/via/keymap.c new file mode 100644 index 000000000000..8d0c6f901bea --- /dev/null +++ b/keyboards/naked48/keymaps/via/keymap.c @@ -0,0 +1,71 @@ +/* +Copyright 2021 Salicylic_Acid + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + //,-----------------------------------------------------| |-----------------------------------------------------. + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + MO(3),KC_LCTRL, KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + //`------------------------------------------------------------------------------------------------------------' + ), + + + [1] = LAYOUT( + //,-----------------------------------------------------| |-----------------------------------------------------. + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR,KC_LPRN, KC_RPRN, KC_DEL, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______,_______,_______, + //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + //`------------------------------------------------------------------------------------------------------------' + ), + + + [2] = LAYOUT( + //,-----------------------------------------------------| |-----------------------------------------------------. + KC_TILD, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, + //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + //`------------------------------------------------------------------------------------------------------------' + ), + + + [3] = LAYOUT( /* Base */ + //,-----------------------------------------------------| |-----------------------------------------------------. + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, RGB_MOD, XXXXXXX,LCA(KC_DEL),LALT(KC_PSCR),KC_PSCR, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, + //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + _______, _______, _______, _______, _______, RESET, RESET, _______, _______, _______, _______, _______ + //`------------------------------------------------------------------------------------------------------------' + ) +}; diff --git a/keyboards/naked48/keymaps/via/rules.mk b/keyboards/naked48/keymaps/via/rules.mk new file mode 100644 index 000000000000..8712957dfaab --- /dev/null +++ b/keyboards/naked48/keymaps/via/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes + +SPLIT_KEYBOARD = no diff --git a/keyboards/naked48/keymaps/via_rgb_matrix/config.h b/keyboards/naked48/keymaps/via_rgb_matrix/config.h new file mode 100644 index 000000000000..0920b2bc3529 --- /dev/null +++ b/keyboards/naked48/keymaps/via_rgb_matrix/config.h @@ -0,0 +1,44 @@ +/* Copyright 2018 Salicylic_acid3 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +/* Select hand configuration */ + +#define TAPPING_FORCE_HOLD +#define TAPPING_TERM 180 + +#ifdef RGBLED_NUM + #undef RGBLED_NUM +#endif + +#define DRIVER_LED_TOTAL 48 + +#ifdef RGB_MATRIX_ENABLE +# define RGB_MATRIX_KEYPRESSES // reacts to keypresses +// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses) +// # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended +// # define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness) +// # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness) +// # define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255 +# define RGB_MATRIX_HUE_STEP 8 +# define RGB_MATRIX_SAT_STEP 8 +# define RGB_MATRIX_LIMIT_VAL 50 +# define RGB_MATRIX_VAL_STEP 5 +# define RGB_MATRIX_SPD_STEP 10 +#endif + diff --git a/keyboards/naked48/keymaps/via_rgb_matrix/keymap.c b/keyboards/naked48/keymaps/via_rgb_matrix/keymap.c new file mode 100644 index 000000000000..8d0c6f901bea --- /dev/null +++ b/keyboards/naked48/keymaps/via_rgb_matrix/keymap.c @@ -0,0 +1,71 @@ +/* +Copyright 2021 Salicylic_Acid + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + //,-----------------------------------------------------| |-----------------------------------------------------. + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + MO(3),KC_LCTRL, KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + //`------------------------------------------------------------------------------------------------------------' + ), + + + [1] = LAYOUT( + //,-----------------------------------------------------| |-----------------------------------------------------. + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR,KC_LPRN, KC_RPRN, KC_DEL, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______,_______,_______, + //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + //`------------------------------------------------------------------------------------------------------------' + ), + + + [2] = LAYOUT( + //,-----------------------------------------------------| |-----------------------------------------------------. + KC_TILD, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, + //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + //`------------------------------------------------------------------------------------------------------------' + ), + + + [3] = LAYOUT( /* Base */ + //,-----------------------------------------------------| |-----------------------------------------------------. + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, RGB_MOD, XXXXXXX,LCA(KC_DEL),LALT(KC_PSCR),KC_PSCR, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, + //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + _______, _______, _______, _______, _______, RESET, RESET, _______, _______, _______, _______, _______ + //`------------------------------------------------------------------------------------------------------------' + ) +}; diff --git a/keyboards/naked48/keymaps/via_rgb_matrix/rules.mk b/keyboards/naked48/keymaps/via_rgb_matrix/rules.mk new file mode 100644 index 000000000000..49bb80ca31e4 --- /dev/null +++ b/keyboards/naked48/keymaps/via_rgb_matrix/rules.mk @@ -0,0 +1,5 @@ +RGBLIGHT_ENABLE = no +RGB_MATRIX_ENABLE = yes +VIA_ENABLE = yes + +SPLIT_KEYBOARD = no diff --git a/keyboards/naked48/naked48.c b/keyboards/naked48/naked48.c index dc516e98f4ee..c2a10ed3e681 100644 --- a/keyboards/naked48/naked48.c +++ b/keyboards/naked48/naked48.c @@ -1,6 +1,18 @@ -#include "naked48.h" +/* +Copyright 2021 Salicylic_Acid + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "naked48.h" diff --git a/keyboards/naked48/naked48.h b/keyboards/naked48/naked48.h index 1c715eb24a2d..e210cf0f576b 100644 --- a/keyboards/naked48/naked48.h +++ b/keyboards/naked48/naked48.h @@ -1,3 +1,20 @@ +/* +Copyright 2021 Salicylic_Acid + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + #pragma once #include "quantum.h" diff --git a/keyboards/naked48/rev1/config.h b/keyboards/naked48/rev1/config.h index f74ce8f7ad9e..b79384a48aae 100644 --- a/keyboards/naked48/rev1/config.h +++ b/keyboards/naked48/rev1/config.h @@ -1,6 +1,5 @@ /* -Copyright 2012 Jun Wako -Copyright 2015 Jack Humbert +Copyright 2021 Salicylic_Acid This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -19,8 +18,8 @@ along with this program. If not, see . #pragma once /* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x3060 +#define VENDOR_ID 0x04D8 +#define PRODUCT_ID 0xE8BA #define DEVICE_VER 0x0001 #define MANUFACTURER Salicylic_Acid #define PRODUCT naked48 diff --git a/keyboards/naked48/rev1/rev1.c b/keyboards/naked48/rev1/rev1.c index e127232d80e6..0129b6c1a328 100644 --- a/keyboards/naked48/rev1/rev1.c +++ b/keyboards/naked48/rev1/rev1.c @@ -1,11 +1,21 @@ -#include "naked48.h" +/* +Copyright 2021 Salicylic_Acid + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -/*#ifdef SSD1306OLED -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - //led_set_user(usb_led); -} -#endif*/ +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "naked48.h" #ifdef RGB_MATRIX_ENABLE led_config_t g_led_config = { { @@ -30,7 +40,3 @@ void led_set_kb(uint8_t usb_led) { 4, 4, 4, 4, 4, 4, 4, 4 } }; #endif - -void matrix_init_kb(void) { - matrix_init_user(); -}; \ No newline at end of file diff --git a/keyboards/naked48/rev1/rev1.h b/keyboards/naked48/rev1/rev1.h index de58f8f924fe..eee5c4185fbe 100644 --- a/keyboards/naked48/rev1/rev1.h +++ b/keyboards/naked48/rev1/rev1.h @@ -1,3 +1,20 @@ +/* +Copyright 2021 Salicylic_Acid + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + #pragma once #include "naked48.h" diff --git a/keyboards/naked48/rules.mk b/keyboards/naked48/rules.mk index 293d01ea7f9f..a5f6e4d5f7ea 100644 --- a/keyboards/naked48/rules.mk +++ b/keyboards/naked48/rules.mk @@ -2,35 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # 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 +# change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration -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 = yes # Commands for debug and configuration -NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -OLED_DRIVER_ENABLE = no -# USE_I2C = yes -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output RGB_MATRIX_ENABLE = no RGB_MATRIX_DRIVER = WS2812 diff --git a/keyboards/naked60/config.h b/keyboards/naked60/config.h index cfb6bf4ffccd..fae55d19f71b 100644 --- a/keyboards/naked60/config.h +++ b/keyboards/naked60/config.h @@ -1,6 +1,5 @@ /* -Copyright 2012 Jun Wako -Copyright 2015 Jack Humbert +Copyright 2021 Salicylic_Acid This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/keyboards/naked60/info.json b/keyboards/naked60/info.json index a16bfe24d9f1..8ec020ae7261 100644 --- a/keyboards/naked60/info.json +++ b/keyboards/naked60/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Naked60", "url": "https://salicylic-acid3.hatenablog.com/", "maintainer": "Salicylic_acid3", - "width": 14, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/naked60/keymaps/default/keymap.c b/keyboards/naked60/keymaps/default/keymap.c index 9b764482ece0..3a95e73244d9 100644 --- a/keyboards/naked60/keymaps/default/keymap.c +++ b/keyboards/naked60/keymaps/default/keymap.c @@ -90,7 +90,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //`------------------------------------------------------------------------------------------------------------' ) }; - -void matrix_init_user(void) { - -} diff --git a/keyboards/naked60/keymaps/salicylic/keymap.c b/keyboards/naked60/keymaps/salicylic/keymap.c index 17172f77b97d..9be4bcb4223e 100644 --- a/keyboards/naked60/keymaps/salicylic/keymap.c +++ b/keyboards/naked60/keymaps/salicylic/keymap.c @@ -64,7 +64,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| JP_COLN, JP_EXLM, JP_QUES, JP_LBRC, JP_RBRC, JP_TILD, KC_6, KC_7, KC_8, KC_9, JP_ASTR, JP_SLSH, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - JP_QUOT, JP_HASH, JP_DQT, JP_LPRN, JP_RPRN, JP_AT, XXXXXXX, KC_4, KC_5, KC_6, JP_MINS, JP_EQL, + JP_QUOT, JP_HASH, JP_DQUO, JP_LPRN, JP_RPRN, JP_AT, XXXXXXX, KC_4, KC_5, KC_6, JP_MINS, JP_EQL, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| JP_CIRC, JP_PERC, JP_AMPR, JP_SCLN, JP_COLN, JP_PIPE, KC_0, KC_1, KC_2, KC_3, JP_PLUS, KC_ENT, //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| @@ -102,7 +102,7 @@ SFT_T(KC_F12), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XX ) }; -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } diff --git a/keyboards/naked60/keymaps/salicylic_with_nafuda/keymap.c b/keyboards/naked60/keymaps/salicylic_with_nafuda/keymap.c index 3a2cd9eb8580..8fb0ce26f112 100644 --- a/keyboards/naked60/keymaps/salicylic_with_nafuda/keymap.c +++ b/keyboards/naked60/keymaps/salicylic_with_nafuda/keymap.c @@ -77,7 +77,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------------------------| _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ //`------------------------------------------------------------------------------------------------------------' ), @@ -91,7 +91,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------------------------| _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ //`------------------------------------------------------------------------------------------------------------' ), @@ -101,7 +101,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------| JP_COLN, JP_EXLM, JP_QUES, JP_LBRC, JP_RBRC, JP_TILD, KC_6, KC_7, KC_8, KC_9, JP_ASTR, JP_SLSH,LT(_ADJUST, KC_BSPC),KC_UP,TG(_BROWSER), //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------| - JP_QUOT, JP_HASH, JP_DQT, JP_LPRN, JP_RPRN, JP_AT, XXXXXXX, KC_4, KC_5, KC_6, JP_MINS, JP_EQL, KC_LEFT, KC_DOWN,KC_RIGHT, + JP_QUOT, JP_HASH, JP_DQUO, JP_LPRN, JP_RPRN, JP_AT, XXXXXXX, KC_4, KC_5, KC_6, JP_MINS, JP_EQL, KC_LEFT, KC_DOWN,KC_RIGHT, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------------------------| JP_CIRC, JP_PERC, JP_AMPR, JP_SCLN, JP_COLN, JP_PIPE, KC_0, KC_1, KC_2, KC_3, JP_PLUS, KC_ENT, //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| @@ -119,7 +119,7 @@ LCTL_T(KC_F11), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, XX //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------------------------| SFT_T(KC_F12), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PGDN, XXXXXXX, //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ //`------------------------------------------------------------------------------------------------------------' ), @@ -138,7 +138,7 @@ SFT_T(KC_F12), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XX ) }; -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } diff --git a/keyboards/naked60/keymaps/salicylic_with_setta21/keymap.c b/keyboards/naked60/keymaps/salicylic_with_setta21/keymap.c index a1f5a6e21a64..7f50e89f3c4a 100644 --- a/keyboards/naked60/keymaps/salicylic_with_setta21/keymap.c +++ b/keyboards/naked60/keymaps/salicylic_with_setta21/keymap.c @@ -71,7 +71,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------| JP_COLN, JP_EXLM, JP_QUES, JP_LBRC, JP_RBRC, JP_TILD, KC_6, KC_7, KC_8, KC_9, JP_ASTR, JP_SLSH, KC_DOWN,KC_DOWN, KC_UP,KC_PSLS, KC_F2, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------| - JP_QUOT, JP_HASH, JP_DQT, JP_LPRN, JP_RPRN, JP_AT, XXXXXXX, KC_4, KC_5, KC_6, JP_MINS, JP_EQL, MO(_RAISE),XXXXXXX,KC_RIGHT,XXXXXXX,KC_PAST, JP_EQL, + JP_QUOT, JP_HASH, JP_DQUO, JP_LPRN, JP_RPRN, JP_AT, XXXXXXX, KC_4, KC_5, KC_6, JP_MINS, JP_EQL, MO(_RAISE),XXXXXXX,KC_RIGHT,XXXXXXX,KC_PAST, JP_EQL, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |---------------+---------------+-------+-------| JP_CIRC, JP_PERC, JP_AMPR, JP_SCLN, JP_COLN, JP_PIPE, KC_0, KC_1, KC_2, KC_3, JP_PLUS, KC_ENT, KC_PENT, KC_PPLS,KC_PMNS, KC_DEL, //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |-----------------------------------------------| @@ -89,7 +89,7 @@ LCTL_T(KC_F11), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, XX //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |---------------+---------------+--------+-------| SFT_T(KC_F12), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PGDN, XXXXXXX, JP_RPRN, SEND_SUM,SEND_AVE, KC_DEL, //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |------------------------------------------------| - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ //`------------------------------------------------------------------------------------------------------------' ), @@ -108,7 +108,7 @@ SFT_T(KC_F12), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XX ) }; -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } diff --git a/keyboards/naked60/keymaps/via/config.h b/keyboards/naked60/keymaps/via/config.h new file mode 100644 index 000000000000..32ec5281b23f --- /dev/null +++ b/keyboards/naked60/keymaps/via/config.h @@ -0,0 +1,23 @@ +/* Copyright 2021 Salicylic_acid3 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +/* Select hand configuration */ + +#define TAPPING_FORCE_HOLD +#define TAPPING_TERM 180 +#define DYNAMIC_KEYMAP_LAYER_COUNT 3 diff --git a/keyboards/naked60/keymaps/via/keymap.c b/keyboards/naked60/keymaps/via/keymap.c new file mode 100644 index 000000000000..992185871753 --- /dev/null +++ b/keyboards/naked60/keymaps/via/keymap.c @@ -0,0 +1,62 @@ +/* +Copyright 2021 Salicylic_Acid + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + //,-----------------------------------------------------| |-----------------------------------------------------. + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_LCTRL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + KC_TILD,KC_LCTRL, KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + //`------------------------------------------------------------------------------------------------------------' + ), + + [1] = LAYOUT( + //,-----------------------------------------------------| |-----------------------------------------------------. + KC_ESC, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR,KC_LPRN, KC_RPRN, KC_DEL, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS), _______, _______, _______, + //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + //`------------------------------------------------------------------------------------------------------------' + ), + + [2] = LAYOUT( + //,-----------------------------------------------------| |-----------------------------------------------------. + KC_ESC, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_TILD, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, + //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + //`------------------------------------------------------------------------------------------------------------' + ) +}; diff --git a/keyboards/naked60/keymaps/via/rules.mk b/keyboards/naked60/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/naked60/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/naked60/naked60.c b/keyboards/naked60/naked60.c index 1ff159cdb413..d1d46394f6fe 100644 --- a/keyboards/naked60/naked60.c +++ b/keyboards/naked60/naked60.c @@ -1 +1,18 @@ +/* +Copyright 2021 Salicylic_Acid + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + #include "naked60.h" diff --git a/keyboards/naked60/naked60.h b/keyboards/naked60/naked60.h index 1b736feec0b7..4952b6b076d5 100644 --- a/keyboards/naked60/naked60.h +++ b/keyboards/naked60/naked60.h @@ -1,3 +1,20 @@ +/* +Copyright 2021 Salicylic_Acid + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + #pragma once #include "quantum.h" diff --git a/keyboards/naked60/rev1/config.h b/keyboards/naked60/rev1/config.h index 710aa059b7a4..b75409501169 100644 --- a/keyboards/naked60/rev1/config.h +++ b/keyboards/naked60/rev1/config.h @@ -1,6 +1,5 @@ /* -Copyright 2012 Jun Wako -Copyright 2015 Jack Humbert +Copyright 2021 Salicylic_Acid This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -18,11 +17,10 @@ along with this program. If not, see . #pragma once - /* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x3060 -#define DEVICE_VER 0x0002 +#define VENDOR_ID 0x04D8 +#define PRODUCT_ID 0xEB5C +#define DEVICE_VER 0x0001 #define MANUFACTURER Salicylic_Acid #define PRODUCT naked60 diff --git a/keyboards/naked60/rev1/rev1.c b/keyboards/naked60/rev1/rev1.c index bce48f89c30c..d1d46394f6fe 100644 --- a/keyboards/naked60/rev1/rev1.c +++ b/keyboards/naked60/rev1/rev1.c @@ -1,5 +1,18 @@ -#include "naked60.h" +/* +Copyright 2021 Salicylic_Acid + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. -void matrix_init_kb(void) { - matrix_init_user(); -}; +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "naked60.h" diff --git a/keyboards/naked60/rev1/rev1.h b/keyboards/naked60/rev1/rev1.h index d8ee83c47055..12798022e9f4 100644 --- a/keyboards/naked60/rev1/rev1.h +++ b/keyboards/naked60/rev1/rev1.h @@ -1,3 +1,20 @@ +/* +Copyright 2021 Salicylic_Acid + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + #pragma once #include "naked60.h" diff --git a/keyboards/naked60/rules.mk b/keyboards/naked60/rules.mk index fa1b630d4221..6d1f41247d56 100644 --- a/keyboards/naked60/rules.mk +++ b/keyboards/naked60/rules.mk @@ -2,35 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # 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 +# change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -OLED_DRIVER_ENABLE = no -USE_I2C = 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 +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = yes diff --git a/keyboards/naked64/info.json b/keyboards/naked64/info.json index a704be315d7a..887f43b08700 100644 --- a/keyboards/naked64/info.json +++ b/keyboards/naked64/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Naked64", "url": "https://salicylic-acid3.hatenablog.com/", "maintainer": "Salicylic_acid3", - "width": 16.5, - "height": 5.25, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/naked64/keymaps/default/keymap.c b/keyboards/naked64/keymaps/default/keymap.c index 4460407dbac0..b71f554156ba 100644 --- a/keyboards/naked64/keymaps/default/keymap.c +++ b/keyboards/naked64/keymaps/default/keymap.c @@ -150,7 +150,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return result; } - -void matrix_init_user(void) { - -} diff --git a/keyboards/naked64/keymaps/salicylic/keymap.c b/keyboards/naked64/keymaps/salicylic/keymap.c index 06665092f8e8..40e92393daf5 100644 --- a/keyboards/naked64/keymaps/salicylic/keymap.c +++ b/keyboards/naked64/keymaps/salicylic/keymap.c @@ -100,7 +100,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| _______, JP_QUOT, JP_EXLM, JP_QUES, JP_LBRC, JP_RBRC, JP_TILD, KC_P6, KC_P7, KC_P8, KC_P9, JP_ASTR, JP_SLSH, XXXXXXX, \ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - JP_QUOT, JP_HASH, JP_DQT, JP_LPRN, JP_RPRN, JP_AT, XXXXXXX, KC_P4, KC_P5, KC_P6, JP_MINS, JP_EQL, KC_ENT, \ + JP_QUOT, JP_HASH, JP_DQUO, JP_LPRN, JP_RPRN, JP_AT, XXXXXXX, KC_P4, KC_P5, KC_P6, JP_MINS, JP_EQL, KC_ENT, \ // |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| JP_CIRC, JP_PERC, JP_AMPR, JP_SCLN, JP_COLN, JP_PIPE, KC_P0, KC_P1, KC_P2, KC_P3, JP_PLUS, KC_UP, KC_RSFT, \ // |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| diff --git a/keyboards/naked64/keymaps/salicylic_with_setta21/keymap.c b/keyboards/naked64/keymaps/salicylic_with_setta21/keymap.c index 28522c5e9d80..df80e0772bee 100644 --- a/keyboards/naked64/keymaps/salicylic_with_setta21/keymap.c +++ b/keyboards/naked64/keymaps/salicylic_with_setta21/keymap.c @@ -121,7 +121,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------| _______, JP_QUOT, JP_EXLM, JP_QUES, JP_LBRC, JP_RBRC, JP_TILD, KC_P6, KC_P7, KC_P8, KC_P9, JP_ASTR, JP_SLSH, XXXXXXX, XXXXXXX, KC_PSLS, KC_PAST, KC_PMNS, //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------| - JP_QUOT, JP_HASH, JP_DQT, JP_LPRN, JP_RPRN, JP_AT, XXXXXXX, KC_P4, KC_P5, KC_P6, JP_MINS, JP_EQL, KC_ENT, XXXXXXX, KC_UP, XXXXXXX, + JP_QUOT, JP_HASH, JP_DQUO, JP_LPRN, JP_RPRN, JP_AT, XXXXXXX, KC_P4, KC_P5, KC_P6, JP_MINS, JP_EQL, KC_ENT, XXXXXXX, KC_UP, XXXXXXX, // |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------| | JP_CIRC, JP_PERC, JP_AMPR, JP_SCLN, JP_COLN, JP_PIPE, KC_P0, KC_P1, KC_P2, KC_P3, JP_PLUS, KC_UP, KC_RSFT, KC_LEFT, KC_DOWN, KC_RGHT, KC_PPLS, // |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------| diff --git a/keyboards/naked64/rev1/rev1.c b/keyboards/naked64/rev1/rev1.c index d851f97823e8..520a869e57ba 100644 --- a/keyboards/naked64/rev1/rev1.c +++ b/keyboards/naked64/rev1/rev1.c @@ -1,5 +1 @@ #include "rev1.h" - -void matrix_init_kb(void) { - matrix_init_user(); -}; diff --git a/keyboards/naked64/rules.mk b/keyboards/naked64/rules.mk index 0d18a5650ba6..f04c5fbc476d 100644 --- a/keyboards/naked64/rules.mk +++ b/keyboards/naked64/rules.mk @@ -2,35 +2,22 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -TAP_DANCE_ENABLE = no -OLED_DRIVER_ENABLE = no +AUDIO_ENABLE = no # Audio output +RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. +OLED_ENABLE = no USE_I2C = 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 SPLIT_KEYBOARD = yes diff --git a/keyboards/namecard2x4/info.json b/keyboards/namecard2x4/info.json index 3d6c332154f5..04a431f9f37f 100644 --- a/keyboards/namecard2x4/info.json +++ b/keyboards/namecard2x4/info.json @@ -3,8 +3,6 @@ "url": "https://skyhigh-works.hatenablog.com/", "maintainer": "takashiski", "bootloader": "atmel-dfu", - "width": 4, - "height": 2, "layouts": { "LAYOUT": { "layout": [{"label":"1", "x":0, "y":0}, {"label":"2", "x":1, "y":0}, {"label":"3", "x":2, "y":0}, {"label":"4", "x":3, "y":0}, {"label":"5", "x":0, "y":1}, {"label":"6", "x":1, "y":1}, {"label":"7", "x":2, "y":1}, {"label":"8", "x":3, "y":1}] diff --git a/keyboards/namecard2x4/keymaps/brainfuck/keymap.c b/keyboards/namecard2x4/keymaps/brainfuck/keymap.c index 287e011def4a..28640db0fdd9 100644 --- a/keyboards/namecard2x4/keymaps/brainfuck/keymap.c +++ b/keyboards/namecard2x4/keymaps/brainfuck/keymap.c @@ -27,7 +27,7 @@ enum Layer const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [JP] = LAYOUT( - JP_LT,JP_GT,JP_PLUS,JP_MINS,\ + JP_LABK,JP_RABK,JP_PLUS,JP_MINS,\ LT(CONFIG,JP_DOT),JP_COMM,JP_LBRC,LT(CONFIG,JP_RBRC)\ ), [EN] = LAYOUT( diff --git a/keyboards/namecard2x4/keymaps/default/keymap.c b/keyboards/namecard2x4/keymaps/default/keymap.c index 1a0a727fc051..5858be6d6824 100644 --- a/keyboards/namecard2x4/keymaps/default/keymap.c +++ b/keyboards/namecard2x4/keymaps/default/keymap.c @@ -41,20 +41,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; - - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/namecard2x4/namecard2x4.c b/keyboards/namecard2x4/namecard2x4.c index 349923daf866..091b55c10d56 100644 --- a/keyboards/namecard2x4/namecard2x4.c +++ b/keyboards/namecard2x4/namecard2x4.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "namecard2x4.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/namecard2x4/namecard2x4.h b/keyboards/namecard2x4/namecard2x4.h index f2e27a010279..f3f6992703aa 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 . */ -#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/namecard2x4/rev1/config.h b/keyboards/namecard2x4/rev1/config.h index 73ad7cdb52d0..d743c0e339b0 100644 --- a/keyboards/namecard2x4/rev1/config.h +++ b/keyboards/namecard2x4/rev1/config.h @@ -97,54 +97,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -163,23 +115,3 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - diff --git a/keyboards/namecard2x4/rev2/config.h b/keyboards/namecard2x4/rev2/config.h index 5ed6f6b66b88..37434d41a08c 100644 --- a/keyboards/namecard2x4/rev2/config.h +++ b/keyboards/namecard2x4/rev2/config.h @@ -97,54 +97,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -163,23 +115,3 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - diff --git a/keyboards/namecard2x4/rules.mk b/keyboards/namecard2x4/rules.mk index 18c3fbbb51b9..49a10d56b7dd 100644 --- a/keyboards/namecard2x4/rules.mk +++ b/keyboards/namecard2x4/rules.mk @@ -2,34 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output -#UNICODEMAP_ENABLE = yes # for emoji user #RGBLIGHT_ENABLE = yes # uncomment if you want addressable led strips DEFAULT_FOLDER = namecard2x4/rev2 diff --git a/keyboards/navi10/info.json b/keyboards/navi10/info.json index dc92144d9df2..e3fc49fbeddb 100644 --- a/keyboards/navi10/info.json +++ b/keyboards/navi10/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Navi10", "url": "", "maintainer": "emdarcher", - "width": 3, - "height": 5, "layouts": { "LAYOUT": { "layout": [{"label":"Fn", "x":0, "y":0}, {"label":"Home", "x":1, "y":0}, {"label":"PgUp", "x":2, "y":0}, {"label":"Del", "x":0, "y":1}, {"label":"End", "x":1, "y":1}, {"label":"PgDn", "x":2, "y":1}, {"label":"Up", "x":1, "y":3}, {"label":"Left", "x":0, "y":4}, {"label":"Down", "x":1, "y":4}, {"label":"Right", "x":2, "y":4}] diff --git a/keyboards/navi10/rev0/rules.mk b/keyboards/navi10/rev0/rules.mk index 0e11c18497d5..f476c24b2596 100644 --- a/keyboards/navi10/rev0/rules.mk +++ b/keyboards/navi10/rev0/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/navi10/rev2/rules.mk b/keyboards/navi10/rev2/rules.mk index 0e11c18497d5..f476c24b2596 100644 --- a/keyboards/navi10/rev2/rules.mk +++ b/keyboards/navi10/rev2/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/navi10/rev3/rules.mk b/keyboards/navi10/rev3/rules.mk index f19b82716382..f476c24b2596 100644 --- a/keyboards/navi10/rev3/rules.mk +++ b/keyboards/navi10/rev3/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE = no # Audio output diff --git a/keyboards/ncc1701kb/info.json b/keyboards/ncc1701kb/info.json index d5a80ba0d197..396c31713682 100644 --- a/keyboards/ncc1701kb/info.json +++ b/keyboards/ncc1701kb/info.json @@ -2,8 +2,6 @@ "keyboard_name": "NCC-1701-KB", "url": "", "maintainer": "jessel92", - "width": 3, - "height": 3, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/ncc1701kb/rules.mk b/keyboards/ncc1701kb/rules.mk index 791d82b401fc..9df4420ff6f7 100644 --- a/keyboards/ncc1701kb/rules.mk +++ b/keyboards/ncc1701kb/rules.mk @@ -2,33 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# 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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI controls -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output UNICODE_ENABLE = yes # Unicode -API_SYSEX_ENABLE = yes -TAP_DANCE_ENABLE = no -ENCODER_ENABLE = yes \ No newline at end of file +ENCODER_ENABLE = yes diff --git a/keyboards/nebula12/info.json b/keyboards/nebula12/info.json index 16d04fa86a56..64ad3747a619 100755 --- a/keyboards/nebula12/info.json +++ b/keyboards/nebula12/info.json @@ -2,8 +2,6 @@ "keyboard_name": "NEBULA12", "url": "", "maintainer": "yiancar", - "width": 3, - "height": 4, "layouts": { "LAYOUT_68_ansi": { "layout": [ diff --git a/keyboards/nebula12/rules.mk b/keyboards/nebula12/rules.mk index 3a423fb78e7a..2232f6976e04 100755 --- a/keyboards/nebula12/rules.mk +++ b/keyboards/nebula12/rules.mk @@ -14,14 +14,13 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN # comment out to disable the options. # BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in RGBLIGHT_ENABLE = yes # Underglow RGB WS2812_DRIVER = spi # Underglow RGB Driver @@ -31,6 +30,6 @@ CIE1931_CURVE = yes # project specific files SRC += keyboards/wilba_tech/wt_main.c \ keyboards/wilba_tech/wt_rgb_backlight.c \ - drivers/issi/is31fl3731.c \ + drivers/led/issi/is31fl3731.c \ quantum/color.c -QUANTUM_LIB_SRC += drivers/chibios/i2c_master.c +QUANTUM_LIB_SRC += i2c_master.c diff --git a/keyboards/nebula68/info.json b/keyboards/nebula68/info.json index 2cabbd616f00..a0f0ba8aa365 100755 --- a/keyboards/nebula68/info.json +++ b/keyboards/nebula68/info.json @@ -2,8 +2,6 @@ "keyboard_name": "NEBULA68", "url": "", "maintainer": "yiancar", - "width": 17.25, - "height": 5, "layouts": { "LAYOUT_68_ansi": { "layout": [ diff --git a/keyboards/nebula68/rules.mk b/keyboards/nebula68/rules.mk index bcf1fd1a8f5e..3ff4ec2afdae 100755 --- a/keyboards/nebula68/rules.mk +++ b/keyboards/nebula68/rules.mk @@ -14,14 +14,13 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN # comment out to disable the options. # BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in RGBLIGHT_ENABLE = yes # Underglow RGB WS2812_DRIVER = pwm # Underglow RGB Driver @@ -33,6 +32,6 @@ LAYOUTS = 68_ansi # project specific files SRC += keyboards/wilba_tech/wt_main.c \ keyboards/wilba_tech/wt_rgb_backlight.c \ - drivers/issi/is31fl3733.c \ + drivers/led/issi/is31fl3733.c \ quantum/color.c -QUANTUM_LIB_SRC += drivers/chibios/i2c_master.c +QUANTUM_LIB_SRC += i2c_master.c diff --git a/keyboards/neito/config.h b/keyboards/neito/config.h new file mode 100644 index 000000000000..c638b800c45a --- /dev/null +++ b/keyboards/neito/config.h @@ -0,0 +1,58 @@ +/* Copyright 2021 Oliver Granlund + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xB9F7 // "Oliver Granlund" +#define PRODUCT_ID 0xB44C // "Neito" +#define DEVICE_VER 0x0001 +#define MANUFACTURER Oliver Granlund +#define PRODUCT Neito + +#define MATRIX_ROWS 10 +#define MATRIX_COLS 8 +#define MATRIX_ROW_PINS { E6, F0, F5, F6, C7, C6, B4, D7, D6, D4 } +#define MATRIX_COL_PINS { F4, F1, F7, B2, D1, D2, B3, B1 } + +#define DIODE_DIRECTION COL2ROW +#define ENCODERS_PAD_A { B7 } +#define ENCODERS_PAD_B { B0 } +#define ENCODER_RESOLUTION 4 +#define UNUSED_PINS + +#define LED_CAPS_LOCK_PIN B6 +#define BACKLIGHT_ON_STATE 0 + +#define BACKLIGHT_PIN B5 +#define BACKLIGHT_LEVELS 5 + +#define GRAVE_ESC_CTRL_OVERRIDE + +/* RGB Light Configuration */ + +#define RGB_DI_PIN D5 +#define RGBLIGHT_ANIMATIONS +#define RGBLED_NUM 11 +#define RGBLIGHT_LED_MAP { 4, 3, 2, 1, 0, 10, 9, 8, 7, 6, 5 } +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 +#define RGBLIGHT_LIMIT_VAL 200 + +/* Handle volume control issue with rotary encoder */ + +#define TAP_CODE_DELAY 10 diff --git a/keyboards/neito/info.json b/keyboards/neito/info.json new file mode 100644 index 000000000000..dbc5fad5252f --- /dev/null +++ b/keyboards/neito/info.json @@ -0,0 +1,84 @@ +{ + "keyboard_name": "Neito", + "url": "olli.works", + "maintainer": "Oliver Granlund", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"0,0", "x":0.62, "y":0.25}, + {"label":"1,0", "x":1.62, "y":0.25}, + {"label":"0,1", "x":2.62, "y":0.19}, + {"label":"1,1", "x":4, "y":0.44}, + {"label":"0,2", "x":5, "y":0.44}, + {"label":"1,2", "x":6, "y":0.44}, + {"label":"0,3", "x":7, "y":0.44}, + {"label":"1,3", "x":10.25, "y":0.44}, + {"label":"0,4", "x":11.25, "y":0.44}, + {"label":"1,4", "x":12.25, "y":0.44}, + {"label":"0,5", "x":13.25, "y":0.44}, + {"label":"1,5", "x":14.94, "y":0.19}, + {"label":"0,6", "x":15.94, "y":0.25}, + {"label":"1,6", "x":16.94, "y":0.25, "w":2}, + {"label":"0,7", "x":19.19, "y":0}, + + + {"label":"2,0", "x":0.43, "y":1.25, "w":1.5}, + {"label":"3,0", "x":1.93, "y":1.25}, + {"label":"2,1", "x":3.5, "y":1.44}, + {"label":"3,1", "x":4.5, "y":1.44}, + {"label":"2,2", "x":5.5, "y":1.44}, + {"label":"3,2", "x":6.5, "y":1.44}, + {"label":"2,3", "x":9.75, "y":1.44}, + {"label":"3,3", "x":10.75, "y":1.44}, + {"label":"2,4", "x":11.75, "y":1.44}, + {"label":"3,4", "x":12.75, "y":1.44}, + {"label":"2,5", "x":13.75, "y":1.44}, + {"label":"3,5", "x":15.69, "y":1.25}, + {"label":"2,6", "x":16.69, "y":1.25}, + {"label":"3,6", "x":17.94, "y":1.25, "w":1.25, "h":2}, + {"label":"2,7", "x":19.44, "y":1}, + + {"label":"4,0", "x":0.18, "y":2.25, "w":1.75}, + {"label":"5,0", "x":1.93, "y":2.25}, + {"label":"4,1", "x":3.75, "y":2.44}, + {"label":"5,1", "x":4.75, "y":2.44}, + {"label":"4,2", "x":5.75, "y":2.44}, + {"label":"5,2", "x":6.75, "y":2.44}, + {"label":"4,3", "x":10, "y":2.44}, + {"label":"5,3", "x":11, "y":2.44}, + {"label":"4,4", "x":12, "y":2.44}, + {"label":"5,4", "x":13, "y":2.44}, + {"label":"4,5", "x":14.94, "y":2.25}, + {"label":"5,5", "x":15.94, "y":2.25}, + {"label":"4,6", "x":16.94, "y":2.25}, + {"label":"4,7", "x":19.69, "y":2.0}, + + {"label":"6,0", "x":0, "y":3.25, "w":1.25}, + {"label":"8,0", "x":1.25, "y":3.25}, + {"label":"7,0", "x":2.25, "y":3.25}, + {"label":"6,1", "x":4.25, "y":3.44}, + {"label":"7,1", "x":5.25, "y":3.44}, + {"label":"6,2", "x":6.25, "y":3.44}, + {"label":"7,2", "x":7.25, "y":3.44}, + {"label":"8,3", "x":9.25, "y":3.44}, + {"label":"6,3", "x":10.25, "y":3.44}, + {"label":"7,3", "x":11.25, "y":3.44}, + {"label":"6,4", "x":12.25, "y":3.44}, + {"label":"7,4", "x":13.25, "y":3.44}, + {"label":"6,5", "x":15.44, "y":3.25}, + {"label":"6,6", "x":16.44, "y":3.25, "w":1.75}, + {"label":"7,6", "x":18.44, "y":3.5}, + + {"label":"9,0", "x":0, "y":4.25, "w":1.5}, + {"label":"8,1", "x":4.25, "y":4.44, "w":1.5}, + {"label":"8,2", "x":5.75, "y":4.44, "w":2}, + {"label":"9,2", "x":7.75, "y":4.44}, + {"label":"9,3", "x":9.75, "y":4.44, "w":2.75}, + {"label":"8,4", "x":12.5, "y":4.44, "w":1.5}, + {"label":"8,6", "x":17.44, "y":4.5}, + {"label":"9,6", "x":18.44, "y":4.5}, + {"label":"8,7", "x":19.44, "y":4.5} + ] + } + } +} diff --git a/keyboards/neito/keymaps/default/keymap.c b/keyboards/neito/keymaps/default/keymap.c new file mode 100644 index 000000000000..47e84d58387a --- /dev/null +++ b/keyboards/neito/keymaps/default/keymap.c @@ -0,0 +1,66 @@ +/* Copyright 2020 Oliver Granlund + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layers { + _DEFAULT, + _FN0, + _FN1, + _FN2, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_DEFAULT] = LAYOUT( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE, + 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_ENT, MO(_FN0), + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, MO(_FN1), + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_FN0] = LAYOUT( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [_FN1] = LAYOUT( + KC_TRNS, RGB_TOG, RGB_MOD, RGB_RMOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, + KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS, BL_TOGG, BL_DEC, BL_INC, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [_FN2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; + + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + + return true; +}; diff --git a/keyboards/neito/keymaps/olli_works/keymap.c b/keyboards/neito/keymaps/olli_works/keymap.c new file mode 100644 index 000000000000..31763e1169f0 --- /dev/null +++ b/keyboards/neito/keymaps/olli_works/keymap.c @@ -0,0 +1,66 @@ +/* Copyright 2020 Oliver Granlund + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layers { + _DEFAULT, + _MAC, + _FN1, + _FN2, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_DEFAULT] = LAYOUT( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE, + 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_ENT, TG(_MAC), + MO(_FN1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, MO(_FN2), + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_MAC] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_TRNS, + 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_ENT, KC_TRNS, + MO(_FN1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, MO(_FN2), + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LGUI, KC_LALT, KC_SPC, KC_LCTL, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_FN1] = LAYOUT( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, KC_UP, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, + KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_CAPS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [_FN2] = LAYOUT( + KC_ESC, RGB_TOG, RGB_MOD, RGB_RMOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, + KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS, BL_TOGG, BL_DEC, BL_INC, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; + + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + + return true; +}; diff --git a/keyboards/neito/keymaps/olli_works/rules.mk b/keyboards/neito/keymaps/olli_works/rules.mk new file mode 100644 index 000000000000..43061db1dd46 --- /dev/null +++ b/keyboards/neito/keymaps/olli_works/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/neito/keymaps/via/keymap.c b/keyboards/neito/keymaps/via/keymap.c new file mode 100644 index 000000000000..47e84d58387a --- /dev/null +++ b/keyboards/neito/keymaps/via/keymap.c @@ -0,0 +1,66 @@ +/* Copyright 2020 Oliver Granlund + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layers { + _DEFAULT, + _FN0, + _FN1, + _FN2, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_DEFAULT] = LAYOUT( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE, + 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_ENT, MO(_FN0), + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, MO(_FN1), + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_FN0] = LAYOUT( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [_FN1] = LAYOUT( + KC_TRNS, RGB_TOG, RGB_MOD, RGB_RMOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, + KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS, BL_TOGG, BL_DEC, BL_INC, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [_FN2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; + + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + + return true; +}; diff --git a/keyboards/neito/keymaps/via/rules.mk b/keyboards/neito/keymaps/via/rules.mk new file mode 100644 index 000000000000..43061db1dd46 --- /dev/null +++ b/keyboards/neito/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/neito/neito.c b/keyboards/neito/neito.c new file mode 100644 index 000000000000..a05831ec17e8 --- /dev/null +++ b/keyboards/neito/neito.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Oliver Granlund + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "neito.h" diff --git a/keyboards/neito/neito.h b/keyboards/neito/neito.h new file mode 100644 index 000000000000..35f1df286245 --- /dev/null +++ b/keyboards/neito/neito.h @@ -0,0 +1,37 @@ +/* Copyright 2020 Oliver Granlund + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + k00, k10, k01, k11, k02, k12, k03, k13, k04, k14, k05, k15, k06, k16, k07, \ + k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k27, \ + k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k47, \ + k60, k80, k70, k61, k71, k62, k72, k83, k63, k73, k64, k74, k65, k66, k76, \ + k90, k81, k82, k92, k93, k84, k86, k96, k87 \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07 }, \ + { k10, k11, k12, k13, k14, k15, k16, KC_NO }, \ + { k20, k21, k22, k23, k24, k25, k26, k27 }, \ + { k30, k31, k32, k33, k34, k35, k36, KC_NO }, \ + { k40, k41, k42, k43, k44, k45, k46, k47 }, \ + { k50, k51, k52, k53, k54, k55, KC_NO, KC_NO }, \ + { k60, k61, k62, k63, k64, k65, k66, KC_NO }, \ + { k70, k71, k72, k73, k74, KC_NO, k76, KC_NO }, \ + { k80, k81, k82, k83, k84, KC_NO, k86, k87 }, \ + { k90, KC_NO, k92, k93, KC_NO, KC_NO, k96, KC_NO }, \ +} diff --git a/keyboards/neito/readme.md b/keyboards/neito/readme.md new file mode 100644 index 000000000000..eec96d3341e9 --- /dev/null +++ b/keyboards/neito/readme.md @@ -0,0 +1,24 @@ +# Neito +### by Oliver Granlund + +ISO-variant of TGR Alice with a few tweaks! + +![First prototype](https://i.imgur.com/GbZAnIpl.jpg) + +![First prototypes backside](https://i.imgur.com/h7Hx6EUl.jpg) + +* Keyboard Maintainer: [Oliver Granlund](https://github.com/OlliGranlund) +* Hardware Supported: Neito PCB (ATmega32U4) +* Hardware Availability: Group Buys hosted on [https://olli.works](https://olli.works) + +Getting the board into bootloader mode: + +To be able to flash firmware onto this board, you'll need to bring the keyboard into bootloader mode. The keyboard has a debug-panel located between the keys "H" and "N". In this 2x3-panel, short the two pins which are furthest away from the atmega32u4 microcontroller. See the red arrows in the image below. + +![Reset pins](https://i.imgur.com/fN2XjY8l.jpg) + +Make example for this keyboard (after setting up your build environment): + + make neito: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/neito/rules.mk b/keyboards/neito/rules.mk new file mode 100644 index 000000000000..8638dee9e51f --- /dev/null +++ b/keyboards/neito/rules.mk @@ -0,0 +1,20 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes # We have a encoder diff --git a/keyboards/nek_type_a/info.json b/keyboards/nek_type_a/info.json index 7387fe27f95f..17e4674035a8 100644 --- a/keyboards/nek_type_a/info.json +++ b/keyboards/nek_type_a/info.json @@ -2,8 +2,6 @@ "keyboard_name": "NEK Type A", "url": "", "maintainer": "ecopoesis", - "width": 19.75, - "height": 6.25, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/nek_type_a/keymaps/default/keymap.c b/keyboards/nek_type_a/keymaps/default/keymap.c index 627aa4590067..2c7812fe0779 100644 --- a/keyboards/nek_type_a/keymaps/default/keymap.c +++ b/keyboards/nek_type_a/keymaps/default/keymap.c @@ -25,15 +25,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTRL, KC_LALT, KC_LCMD, KC_SPC, KC_SPC, KC_RCMD, KC_RALT, KC_RCTRL, KC_APP, KC_LEFT, KC_DOWN, KC_RIGHT \ ), }; - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/nek_type_a/mcp23017.h b/keyboards/nek_type_a/mcp23017.h index 41c747beab2c..df1a305571aa 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 . */ -#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.c b/keyboards/nek_type_a/nek_type_a.c index ec76a209b1ac..f7e1dd4d7bff 100644 --- a/keyboards/nek_type_a/nek_type_a.c +++ b/keyboards/nek_type_a/nek_type_a.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "nek_type_a.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/nek_type_a/nek_type_a.h b/keyboards/nek_type_a/nek_type_a.h index 9bf6028cb999..78f019c0fd6f 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 . */ -#ifndef NEK_TYPE_A_H -#define NEK_TYPE_A_H + +#pragma once #include "quantum.h" #include @@ -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 5ee6b11bc172..a93cc071cede 100644 --- a/keyboards/nek_type_a/rules.mk +++ b/keyboards/nek_type_a/rules.mk @@ -5,32 +5,21 @@ MCU = atmega32u4 F_CPU = 8000000 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +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/nemui/info.json b/keyboards/nemui/info.json index fb405069dba3..7a2f231d10e1 100644 --- a/keyboards/nemui/info.json +++ b/keyboards/nemui/info.json @@ -2,8 +2,6 @@ "keyboard_name": "nemui", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/nemui/rules.mk b/keyboards/nemui/rules.mk index bff178858fc1..7b5105d59bde 100644 --- a/keyboards/nemui/rules.mk +++ b/keyboards/nemui/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = 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 # Enter lower-power sleep mode when on the ChibiOS idle thread diff --git a/keyboards/neokeys/g67/element_hs/config.h b/keyboards/neokeys/g67/element_hs/config.h new file mode 100644 index 000000000000..3efc322d8d15 --- /dev/null +++ b/keyboards/neokeys/g67/element_hs/config.h @@ -0,0 +1,66 @@ +/* Copyright 2021 MechMerlin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4E4B // "NK" +#define PRODUCT_ID 0x5049 +#define DEVICE_VER 0x0100 +#define MANUFACTURER NEO Keys +#define PRODUCT Element G67 Hotswap + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * 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, F7 } +#define MATRIX_COL_PINS { C7, F6, F5, F4, F1, B7, D5, D1, D2, D3, D4, D0, D6, D7, B4 } + +#define DIODE_DIRECTION COL2ROW + +#if defined(RGBLIGHT_ENABLE) + #define RGB_DI_PIN F0 + #define RGBLED_NUM 77 + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 150 /* The maximum brightness level */ + #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +#define RGBLIGHT_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 +#endif diff --git a/keyboards/neokeys/g67/element_hs/element_hs.c b/keyboards/neokeys/g67/element_hs/element_hs.c new file mode 100644 index 000000000000..c5dd40fe6a9b --- /dev/null +++ b/keyboards/neokeys/g67/element_hs/element_hs.c @@ -0,0 +1,17 @@ +/* Copyright 2021 MechMerlin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "element_hs.h" diff --git a/keyboards/neokeys/g67/element_hs/element_hs.h b/keyboards/neokeys/g67/element_hs/element_hs.h new file mode 100644 index 000000000000..cfb7d67b60c1 --- /dev/null +++ b/keyboards/neokeys/g67/element_hs/element_hs.h @@ -0,0 +1,34 @@ +/* Copyright 2021 MechMerlin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_65_ansi_blocker( \ + 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, K2D, K2E, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K40, K41, K43, K46, 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, KC_NO, K2D, K2E }, \ + { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \ + { K40, K41, KC_NO, K43, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E }, \ +} + diff --git a/keyboards/neokeys/g67/element_hs/info.json b/keyboards/neokeys/g67/element_hs/info.json new file mode 100644 index 000000000000..3b20d1040246 --- /dev/null +++ b/keyboards/neokeys/g67/element_hs/info.json @@ -0,0 +1,82 @@ +{ + "keyboard_name": "NEO Keys Element Hotswap", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_65_ansi_blocker": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":15, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + {"x":15, "y":1}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":15, "y":2}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + } + } +} diff --git a/keyboards/neokeys/g67/element_hs/keymaps/default/keymap.c b/keyboards/neokeys/g67/element_hs/keymaps/default/keymap.c new file mode 100644 index 000000000000..e617a80b5236 --- /dev/null +++ b/keyboards/neokeys/g67/element_hs/keymaps/default/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2021 MechMerlin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi_blocker( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_TILD, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_ansi_blocker( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_HOME, + _______, RGB_TOG, KC_UP, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_END, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, KC_INS, KC_HOME, KC_PGUP, _______, KC_PGUP, + _______, RESET, BL_DEC, BL_TOGG, BL_INC, KC_VOLD, KC_MUTE, KC_VOLU, _______, KC_DEL, KC_END, KC_PGDN, _______, KC_PGDN, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/neokeys/g67/element_hs/keymaps/via/keymap.c b/keyboards/neokeys/g67/element_hs/keymaps/via/keymap.c new file mode 100644 index 000000000000..5fb2edac5e0c --- /dev/null +++ b/keyboards/neokeys/g67/element_hs/keymaps/via/keymap.c @@ -0,0 +1,49 @@ +/* Copyright 2021 MechMerlin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi_blocker( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_TILD, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_ansi_blocker( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_HOME, + _______, RGB_TOG, KC_UP, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_END, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, KC_INS, KC_HOME, KC_PGUP, _______, KC_PGUP, + _______, RESET, BL_DEC, BL_TOGG, BL_INC, KC_VOLD, KC_MUTE, KC_VOLU, _______, KC_DEL, KC_END, KC_PGDN, _______, KC_PGDN, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_65_ansi_blocker( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + + ), + [3] = LAYOUT_65_ansi_blocker( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/neokeys/g67/element_hs/keymaps/via/rules.mk b/keyboards/neokeys/g67/element_hs/keymaps/via/rules.mk new file mode 100644 index 000000000000..152460f30478 --- /dev/null +++ b/keyboards/neokeys/g67/element_hs/keymaps/via/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes +KEY_LOCK_ENABLE = no diff --git a/keyboards/neokeys/g67/element_hs/readme.md b/keyboards/neokeys/g67/element_hs/readme.md new file mode 100644 index 000000000000..02f63e9f9e48 --- /dev/null +++ b/keyboards/neokeys/g67/element_hs/readme.md @@ -0,0 +1,19 @@ +# Element G67 Hotswap + +A blockered 65% with per-key RGB, underglow, and USB Type C. + +* Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin) +* Hardware Supported: Element G67 Hotswap (ATmega32U4) +* Hardware Availability: [NEO Keys](https://www.neokeys.net/) + +Make example for this keyboard (after setting up your build environment): + + make neokeys/g67/element_hs:default + +Flashing example for this keyboard: + + make neokeys/g67/element_hs:default:flash + +To reset the board into bootloader mode, hold the key at the top left of the keyboard while connecting the USB cable (also erases persistent settings). + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/neokeys/g67/element_hs/rules.mk b/keyboards/neokeys/g67/element_hs/rules.mk new file mode 100644 index 000000000000..d6bcaed026d2 --- /dev/null +++ b/keyboards/neokeys/g67/element_hs/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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +KEY_LOCK_ENABLE = yes # Enable KC_LOCK support + +LAYOUTS = 65_ansi_blocker diff --git a/keyboards/neokeys/g67/hotswap/info.json b/keyboards/neokeys/g67/hotswap/info.json index 98d6654f0b57..65b364bf4462 100644 --- a/keyboards/neokeys/g67/hotswap/info.json +++ b/keyboards/neokeys/g67/hotswap/info.json @@ -2,8 +2,6 @@ "keyboard_name": "NEO Keys Palette G67 Hotswap", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_ansi_blocker": { "layout": [ diff --git a/keyboards/neokeys/g67/hotswap/rules.mk b/keyboards/neokeys/g67/hotswap/rules.mk index 0b304a6aafe7..d6bcaed026d2 100644 --- a/keyboards/neokeys/g67/hotswap/rules.mk +++ b/keyboards/neokeys/g67/hotswap/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 KEY_LOCK_ENABLE = yes # Enable KC_LOCK support diff --git a/keyboards/neokeys/g67/soldered/info.json b/keyboards/neokeys/g67/soldered/info.json index b2e9208e4fed..b7738039bd54 100644 --- a/keyboards/neokeys/g67/soldered/info.json +++ b/keyboards/neokeys/g67/soldered/info.json @@ -2,8 +2,6 @@ "keyboard_name": "NEO Keys Palette G67 Soldered", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/neokeys/g67/soldered/rules.mk b/keyboards/neokeys/g67/soldered/rules.mk index 7ddf623a2b1b..e077e487742d 100644 --- a/keyboards/neokeys/g67/soldered/rules.mk +++ b/keyboards/neokeys/g67/soldered/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LAYOUTS = 65_ansi 65_ansi_blocker 65_ansi_blocker_tsangan 65_iso 65_iso_blocker # 65_iso_blocker_tsangan diff --git a/keyboards/neopad/rev1/info.json b/keyboards/neopad/rev1/info.json index 44d5babe440d..900f280df3dd 100755 --- a/keyboards/neopad/rev1/info.json +++ b/keyboards/neopad/rev1/info.json @@ -3,8 +3,6 @@ "keyboard_folder": "neopad/rev1", "url": "https://github.com/rookiebwoy/neopad)", "maintainer": "rookiebwoy", - "width": 3, - "height": 2, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/neopad/rev1/rules.mk b/keyboards/neopad/rev1/rules.mk index 309e3d48c047..fe555840565c 100755 --- a/keyboards/neopad/rev1/rules.mk +++ b/keyboards/neopad/rev1/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = yes diff --git a/keyboards/neson_design/n6/config.h b/keyboards/neson_design/n6/config.h new file mode 100644 index 000000000000..4a9d3c56c69b --- /dev/null +++ b/keyboards/neson_design/n6/config.h @@ -0,0 +1,66 @@ +/** + * config.h + * + Copyright 2021 astro + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4E65 //'Ne' +#define PRODUCT_ID 0x4E36 //'N6' +#define DEVICE_VER 0x0001 +#define MANUFACTURER Neson Design +#define PRODUCT N6 Keyboard + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 +#define MATRIX_ROW_PINS { F0, B1, F6, F4, F1} +#define MATRIX_COL_PINS { F7, B0, E6, C7, C6, B6, B5, B4, D7, D6, D4, D5, B2, D3, D2 } +#define UNUSED_PINS +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + + +//rgb light setting +//#define RGBLIGHT_LIMIT_VAL 128 +#define RGBLED_NUM 33 +#define RGB_DI_PIN B3 +#define RGBLIGHT_ANIMATIONS +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 + +#define DRIVER_ADDR_1 0b1110100 +#define DRIVER_COUNT 1 +#define DRIVER_LED_TOTAL 32 + +#define CAPS_PIN F5 diff --git a/keyboards/neson_design/n6/info.json b/keyboards/neson_design/n6/info.json new file mode 100644 index 000000000000..ad52af32881f --- /dev/null +++ b/keyboards/neson_design/n6/info.json @@ -0,0 +1,161 @@ +{ + "keyboard_name": "n6", + "url": "", + "maintainer": "qmk", + "layout_aliases": { + "LAYOUT_65_ansi_blocker_splitbs": "LAYOUT_65_ansi_blocker_split_bs" + }, + "layouts": { + "LAYOUT_65_ansi_blocker": { + "layout": [ + { "x":0, "y":0 }, + { "x":1, "y":0 }, + { "x":2, "y":0 }, + { "x":3, "y":0 }, + { "x":4, "y":0 }, + { "x":5, "y":0 }, + { "x":6, "y":0 }, + { "x":7, "y":0 }, + { "x":8, "y":0 }, + { "x":9, "y":0 }, + { "x":10, "y":0 }, + { "x":11, "y":0 }, + { "x":12, "y":0 }, + { "x":13, "y":0, "w": 2 }, + { "x":15, "y":0 }, + + { "x":0, "y":1, "w":1.5 }, + { "x":1.5, "y":1 }, + { "x":2.5, "y":1 }, + { "x":3.5, "y":1 }, + { "x":4.5, "y":1 }, + { "x":5.5, "y":1 }, + { "x":6.5, "y":1 }, + { "x":7.5, "y":1 }, + { "x":8.5, "y":1 }, + { "x":9.5, "y":1 }, + { "x":10.5, "y":1 }, + { "x":11.5, "y":1 }, + { "x":12.5, "y":1 }, + { "x":13.5, "y":1, "w":1.5 }, + { "x":15, "y":1 }, + + { "x":0, "y":2, "w":1.75 }, + { "x":1.75, "y":2 }, + { "x":2.75, "y":2 }, + { "x":3.75, "y":2 }, + { "x":4.75, "y":2 }, + { "x":5.75, "y":2 }, + { "x":6.75, "y":2 }, + { "x":7.75, "y":2 }, + { "x":8.75, "y":2 }, + { "x":9.75, "y":2 }, + { "x":10.75, "y":2 }, + { "x":11.75, "y":2 }, + { "x":12.75, "y":2, "w":2.25 }, + { "x":15, "y":2 }, + + { "x":0, "y":3, "w":2.25 }, + { "x":2.25, "y":3 }, + { "x":3.25, "y":3 }, + { "x":4.25, "y":3 }, + { "x":5.25, "y":3 }, + { "x":6.25, "y":3 }, + { "x":7.25, "y":3 }, + { "x":8.25, "y":3 }, + { "x":9.25, "y":3 }, + { "x":10.25, "y":3 }, + { "x":11.25, "y":3 }, + { "x":12.25, "y":3, "w":1.75 }, + { "x":14, "y":3 }, + { "x":15, "y":3 }, + + { "x":0, "y":4, "w":1.25 }, + { "x":1.25, "y":4, "w":1.25 }, + { "x":2.5, "y":4, "w":1.25 }, + { "x":3.75, "y":4, "w":6.25 }, + { "x":10, "y":4, "w":1.25 }, + { "x":11.25, "y":4, "w":1.25 }, + { "x":13, "y":4 }, + { "x":14, "y":4 }, + { "x":15, "y":4 } + ] + }, + "LAYOUT_65_ansi_blocker_split_bs": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + {"x":15, "y":1}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":15, "y":2}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + } + } +} diff --git a/keyboards/neson_design/n6/keymaps/default/keymap.c b/keyboards/neson_design/n6/keymaps/default/keymap.c new file mode 100644 index 000000000000..14efed4c90f2 --- /dev/null +++ b/keyboards/neson_design/n6/keymaps/default/keymap.c @@ -0,0 +1,34 @@ +/** + Copyright 2021 astro + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi_blocker_split_bs( + 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_DEL, KC_BSPC, KC_PSCR, + 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_HOME, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, KC_END, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_RSFT, KC_UP, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_LEFT,KC_DOWN, KC_RIGHT), + + [1] = LAYOUT_65_ansi_blocker_split_bs( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,_______,KC_PSCR,_______, + RESET, RGB_TOG,RGB_MOD,_______, KC_F16, KC_F17,_______,_______,_______,_______,_______,KC_PGUP,KC_PGDN,_______,_______, + _______, _______,_______,_______,_______,_______,KC_LEFT,KC_DOWN, KC_UP,KC_RIGHT,KC_HOME, KC_END, _______,_______, + _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______, + _______,_______,_______, _______, _______,_______, _______,_______,_______), +}; diff --git a/keyboards/neson_design/n6/keymaps/via/keymap.c b/keyboards/neson_design/n6/keymaps/via/keymap.c new file mode 100644 index 000000000000..66156956d5ae --- /dev/null +++ b/keyboards/neson_design/n6/keymaps/via/keymap.c @@ -0,0 +1,48 @@ +/** + Copyright 2021 astro + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi_blocker_split_bs( + 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_DEL, KC_BSPC, KC_PSCR, + 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_HOME, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, KC_END, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_RSFT, KC_UP, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_LEFT,KC_DOWN, KC_RIGHT), + + [1] = LAYOUT_65_ansi_blocker_split_bs( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,_______,KC_PSCR,_______, + RESET, RGB_TOG,RGB_MOD,_______, KC_F16, KC_F17,_______,_______,_______,_______,_______,KC_PGUP,KC_PGDN,_______, _______, + _______, _______,_______,_______,_______,_______,KC_LEFT,KC_DOWN, KC_UP,KC_RIGHT,KC_HOME, KC_END,_______, _______, + _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______, + _______,_______,_______, _______, _______,_______, _______,_______,_______), + + [2] = LAYOUT_65_ansi_blocker_split_bs( + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______,_______,_______, _______, _______,_______, TG(0),_______,_______), + + [3] = LAYOUT_65_ansi_blocker_split_bs( + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, + _______,_______,_______, _______, _______,_______, TG(0),_______,_______), +}; diff --git a/keyboards/neson_design/n6/keymaps/via/rules.mk b/keyboards/neson_design/n6/keymaps/via/rules.mk new file mode 100644 index 000000000000..43061db1dd46 --- /dev/null +++ b/keyboards/neson_design/n6/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/neson_design/n6/n6.c b/keyboards/neson_design/n6/n6.c new file mode 100644 index 000000000000..e99467fa0c79 --- /dev/null +++ b/keyboards/neson_design/n6/n6.c @@ -0,0 +1,317 @@ +/** + * @file n6.c + * + Copyright 2021 astro + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +#include "n6.h" +#include "i2c_master.h" +#include "drivers/led/issi/is31fl3731.h" + +enum { + SELF_TESTING, + CAPS_ALERT, + NORMAL, +}; + +enum { + ST_STAGE_1, + ST_STAGE_2, + ST_STAGE_3, +}; + +// alert state update interval +#define ALERT_INTERVAL 600 +// self testing state update interval +#define ST_INTERVAL 100 +// self testing start index +#define ST_DEFAULT_INDEX 15 +// self testing stage delay +#define ST_STAGE_DELAY 10 +// self testing stage cycle count +#define ST_STAGE_COUNT 4 +// self testing stage end duration +#define ST_END_DURATION 10 + +#ifdef RGBLIGHT_ENABLE +extern rgblight_config_t rgblight_config; + +typedef struct { + uint8_t state; + uint8_t testing; + bool alert; + uint8_t index; + uint8_t delay; + uint8_t count; + bool dir; + uint8_t duration; + uint16_t ticks; +} rgb_state_t; + +static rgb_state_t rgb_state = { + .state = //NORMAL, + SELF_TESTING, + .testing = ST_STAGE_1, + .ticks = 0, + .alert = false, + .index = ST_DEFAULT_INDEX, + .delay = ST_STAGE_DELAY, + .count = ST_STAGE_COUNT, + .dir = true, + .duration = ST_END_DURATION, +}; + +static void update_ticks(void) +{ + rgb_state.ticks = timer_read(); +} + +static void self_testing(void) +{ + if (timer_elapsed(rgb_state.ticks) < ST_INTERVAL) return; + HSV hsv; + hsv.h = rgblight_config.hue; + hsv.s = rgblight_config.sat; + hsv.v = rgblight_config.val; + + RGB led = hsv_to_rgb(hsv); + switch(rgb_state.testing) { + case ST_STAGE_1: + if (rgb_state.index !=0 ) { + IS31FL3731_set_color_all(0, 0, 0); + } + + if (rgb_state.index >= 1) { + for (int i = rgb_state.index-1; i < 32-rgb_state.index+1; i++) { + IS31FL3731_set_color(i, led.r, led.g, led.b); + } + if (rgb_state.index==1) { + rgb_state.index=0; + } else { + rgb_state.index -= 2; + } + } else{ + if (rgb_state.delay > 0) { + rgb_state.delay--; + } else { + // move to stage 2 + rgb_state.index = 2; + rgb_state.testing = ST_STAGE_2; + } + } + break; + case ST_STAGE_2: { + // clear all + IS31FL3731_set_color_all(0, 0, 0); + // light left and right + IS31FL3731_set_color(0, led.r, led.g, led.b); + IS31FL3731_set_color(1, led.r, led.g, led.b); + IS31FL3731_set_color(30, led.r, led.g, led.b); + IS31FL3731_set_color(31, led.r, led.g, led.b); + if (rgb_state.dir) { + // left to right + for (int i = rgb_state.index; i < rgb_state.index+4; i++) { + IS31FL3731_set_color(i, led.r, led.g, led.b); + } + rgb_state.index += 4; + if (rgb_state.index == 30) { + rgb_state.dir = !rgb_state.dir; + rgb_state.count--; + } + } else { + // right to left + for (int i = rgb_state.index-4; i < rgb_state.index; i++) { + IS31FL3731_set_color(i, led.r, led.g, led.b); + } + rgb_state.index -= 4; + if (rgb_state.index == 2) { + rgb_state.dir = !rgb_state.dir; + rgb_state.count--; + } + } + + if (rgb_state.count == 0) { + // move to stage 3 + rgb_state.testing = ST_STAGE_3; + rgb_state.index = 0; + rgb_state.delay = ST_STAGE_DELAY; + rgb_state.duration = ST_END_DURATION; + } + } + break; + case ST_STAGE_3: + if (rgb_state.index != 16) { + IS31FL3731_set_color_all(0, 0, 0); + } + + // light left and right + + if (rgb_state.index == 16) { + if (rgb_state.duration) { + rgb_state.duration--; + } else { + if (IS_HOST_LED_ON(USB_LED_CAPS_LOCK)) { + rgb_state.state = CAPS_ALERT; + } else { + rgb_state.state = NORMAL; + rgblight_set(); + } + } + } else { + // left + for (int i = 0; i < rgb_state.index+1; i++) { + IS31FL3731_set_color(i, led.r, led.g, led.b); + } + // right + for (int i = 31; i > 31-rgb_state.index-1; i--) { + IS31FL3731_set_color(i, led.r, led.g, led.b); + } + rgb_state.index ++; + } + break; + } + + update_ticks(); +} + +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { + /* Refer to IS31 manual for these locations + * driver + * | R location + * | | G location + * | | | B location + * | | | | */ + // left CA + {0, C1_1, C3_2, C4_2}, + {0, C1_2, C2_2, C4_3}, + {0, C1_3, C2_3, C3_3}, + {0, C1_4, C2_4, C3_4}, + {0, C1_5, C2_5, C3_5}, + {0, C1_6, C2_6, C3_6}, + {0, C1_7, C2_7, C3_7}, + {0, C1_8, C2_8, C3_8}, + + {0, C9_1, C8_1, C7_1}, + {0, C9_2, C8_2, C7_2}, + {0, C9_3, C8_3, C7_3}, + {0, C9_4, C8_4, C7_4}, + {0, C9_5, C8_5, C7_5}, + {0, C9_6, C8_6, C7_6}, + {0, C9_7, C8_7, C6_6}, + {0, C9_8, C7_7, C6_7}, + // left CB + {0, C1_9, C3_10, C4_10}, + {0, C1_10, C2_10, C4_11}, + {0, C1_11, C2_11, C3_11}, + {0, C1_12, C2_12, C3_12}, + {0, C1_13, C2_13, C3_13}, + {0, C1_14, C2_14, C3_14}, + {0, C1_15, C2_15, C3_15}, + {0, C1_16, C2_16, C3_16}, + + {0, C9_9, C8_9, C7_9}, + {0, C9_10, C8_10, C7_10}, + {0, C9_11, C8_11, C7_11}, + {0, C9_12, C8_12, C7_12}, + {0, C9_13, C8_13, C7_13}, + {0, C9_14, C8_14, C7_14}, + {0, C9_15, C8_15, C6_14}, + {0, C9_16, C7_15, C6_15}, +}; +#endif + +void matrix_init_kb(void) +{ + // clear caps led + setPinOutput(CAPS_PIN); + writePinLow(CAPS_PIN); +#ifdef RGBLIGHT_ENABLE + i2c_init(); + IS31FL3731_init(DRIVER_ADDR_1); + for (int index = 0; index < DRIVER_LED_TOTAL; index++) { + IS31FL3731_set_led_control_register(index, true, true, true); + } + IS31FL3731_update_led_control_registers(DRIVER_ADDR_1, 0); + update_ticks(); +#endif + matrix_init_user(); +} + +#ifdef RGBLIGHT_ENABLE +void housekeeping_task_kb(void) +{ + if (rgb_state.state == SELF_TESTING) { + self_testing(); + } else if (rgb_state.state == CAPS_ALERT) { + //gold 0xFF, 0xD9, 0x00 + LED_TYPE led = { + .r = 0xFF, + .g = 0xD9, + .b = 0x00, + }; + if (rgb_state.alert) { + IS31FL3731_set_color_all(led.r, led.g, led.b); + ws2812_setleds(&led, 1); + } else { + led.r = 0; + led.g = 0; + led.b = 0; + IS31FL3731_set_color_all(0, 0, 0); + ws2812_setleds(&led, 1); + } + + if (timer_elapsed(rgb_state.ticks) > ALERT_INTERVAL) { + rgb_state.alert = !rgb_state.alert; + update_ticks(); + } + } + + IS31FL3731_update_pwm_buffers(DRIVER_ADDR_1,0); + + housekeeping_task_user(); +} + +void rgblight_call_driver(LED_TYPE *start_led, uint8_t num_leds) +{ + if (rgb_state.state != NORMAL) return; + + for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) { + IS31FL3731_set_color(i, start_led[i].r, start_led[i].g, start_led[i].b); + } + ws2812_setleds(start_led+DRIVER_LED_TOTAL, 1); +} +#endif + +bool led_update_kb(led_t led_state) +{ + bool res = led_update_user(led_state); + if (res) { + writePin(CAPS_PIN, led_state.caps_lock); + +#ifdef RGBLIGHT_ENABLE + if (rgb_state.state != SELF_TESTING) { + if (led_state.caps_lock) { + rgb_state.state = CAPS_ALERT; + update_ticks(); + } else { + rgb_state.state = NORMAL; + rgblight_set(); + } + } +#endif + } + return res; +} diff --git a/keyboards/neson_design/n6/n6.h b/keyboards/neson_design/n6/n6.h new file mode 100644 index 000000000000..b8f2f2e53b0c --- /dev/null +++ b/keyboards/neson_design/n6/n6.h @@ -0,0 +1,75 @@ +/** + * @file n6.h + * + Copyright 2021 astro + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define ___ KC_NO + +/* ┌───────┐ + * 2u Backspace │0E │ + * └───────┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │0E │4E │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │1E │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2D │2E │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │3E │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │40 │41 │42 │48 │49 │4A │ │4B │4C │4D │ + * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + * ┌─────┬───┬─────┬───────────────────────────┬─────┬─┬───┬───┬───┐ + * │40 │41 │42 │48 │4A │ │4B │4C │4D │ Tsangan + * └─────┴───┴─────┴───────────────────────────┴─────┘ └───┴───┴───┘ + * ┌─────┬──┬─────┬───────────────────────────┬─────┬──┬───┬───┬───┐ + * │40 │ │42 │48 │4A │ │4B │4C │4D │ WKL + * └─────┘ └─────┴───────────────────────────┴─────┘ └───┴───┴───┘ + */ + +#define LAYOUT_65_ansi_blocker( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, K4E, \ + 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, K48, K49, K4A, K4B, K4C, K4D \ +) \ +{ \ + { 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, 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, ___, ___, ___, ___, ___, K48, K49, K4A, K4B, K4C, K4D, K4E }, \ +} + +#define LAYOUT_65_ansi_blocker_split_bs( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K4E, \ + 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, 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, 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, ___, ___, ___, ___, ___, K48, K49, K4A, K4B, K4C, K4D, K4E }, \ +} diff --git a/keyboards/neson_design/n6/readme.md b/keyboards/neson_design/n6/readme.md new file mode 100644 index 000000000000..81ba05be4997 --- /dev/null +++ b/keyboards/neson_design/n6/readme.md @@ -0,0 +1,21 @@ +# Neson Design (formerly iNETT Studio) N6 + +A 65% keyboard from the Neson Design's N series. + +* Keyboard Maintainer: [astro](https://github.com/yulei) +* Hardware Supported: N6 keyboard +* Hardware Availability: Limited gb + +Make example for this keyboard (after setting up your build environment): + + make neson_design/n6:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard. +* **Physical reset button**: Briefly press the *RST* button on the back of the PCB. +* **Keycode in layout**: Press the key mapped to `RESET` if it is available. \ No newline at end of file diff --git a/keyboards/neson_design/n6/rules.mk b/keyboards/neson_design/n6/rules.mk new file mode 100644 index 000000000000..34e8cb7913a6 --- /dev/null +++ b/keyboards/neson_design/n6/rules.mk @@ -0,0 +1,21 @@ +# 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 +# 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 + +QUANTUM_LIB_SRC += i2c_master.c drivers/led/issi/is31fl3731.c +LAYOUTS = 65_ansi_blocker 65_ansi_blocker_split_bs diff --git a/keyboards/newgame40/info.json b/keyboards/newgame40/info.json index 0239614082b9..9c06fafacf93 100644 --- a/keyboards/newgame40/info.json +++ b/keyboards/newgame40/info.json @@ -2,11 +2,8 @@ "keyboard_name": "NEWGAME40", "url": "", "maintainer": "qmk", - "width": 10, - "height": 4, "layouts": { "LAYOUT_ortho_4x10": { - "key_count": 40, "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}] } } diff --git a/keyboards/newgame40/newgame40.c b/keyboards/newgame40/newgame40.c index e55b25b3d0d7..98add8ea0e5c 100644 --- a/keyboards/newgame40/newgame40.c +++ b/keyboards/newgame40/newgame40.c @@ -1,5 +1 @@ #include "newgame40.h" - -void matrix_init_kb(void) { - matrix_init_user(); -} diff --git a/keyboards/newgame40/newgame40.h b/keyboards/newgame40/newgame40.h index 6044f3765747..e6146e4f143e 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 000000000000..68229fe12b9e --- /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 148981354e1f..683b93555a4f 100644 --- a/keyboards/newgame40/rules.mk +++ b/keyboards/newgame40/rules.mk @@ -2,38 +2,22 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output UNICODE_ENABLE = yes # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID 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 - LAYOUTS = ortho_4x10 diff --git a/keyboards/nibiria/stream15/info.json b/keyboards/nibiria/stream15/info.json index 1b47d2061e12..8dbbc82a9969 100644 --- a/keyboards/nibiria/stream15/info.json +++ b/keyboards/nibiria/stream15/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Stream15", "url": "", "maintainer": "qmk", - "width": 5, - "height": 3, "layouts": { "LAYOUT_ortho_3x5": { diff --git a/keyboards/nibiria/stream15/rules.mk b/keyboards/nibiria/stream15/rules.mk index fde060ddb9f6..989088218849 100644 --- a/keyboards/nibiria/stream15/rules.mk +++ b/keyboards/nibiria/stream15/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output # Enter lower-power sleep mode when on the ChibiOS idle thread diff --git a/keyboards/nightingale_studios/hailey/info.json b/keyboards/nightingale_studios/hailey/info.json index 007f20b3551c..84cae1487e98 100644 --- a/keyboards/nightingale_studios/hailey/info.json +++ b/keyboards/nightingale_studios/hailey/info.json @@ -1,8 +1,6 @@ { "keyboard_name": "Hailey", "maintainer": "zvecr", - "width": 16.25, - "height": 6.5, "layouts": { "LAYOUT_ansi": { "layout": [{"label":"0,0", "x":0, "y":0}, {"label":"0,2", "x":1.25, "y":0}, {"label":"0,3", "x":2.25, "y":0}, {"label":"0,4", "x":3.25, "y":0}, {"label":"0,5", "x":4.25, "y":0}, {"label":"0,6", "x":5.5, "y":0}, {"label":"0,7", "x":6.5, "y":0}, {"label":"0,8", "x":7.5, "y":0}, {"label":"0,9", "x":8.5, "y":0}, {"label":"0,10", "x":9.75, "y":0}, {"label":"0,11", "x":10.75, "y":0}, {"label":"0,12", "x":11.75, "y":0}, {"label":"0,13", "x":12.75, "y":0}, {"label":"0,14", "x":14, "y":0}, {"label":"6,16", "x":15.25, "y":0}, {"label":"1,0", "x":0, "y":1.25}, {"label":"1,1", "x":1, "y":1.25}, {"label":"1,2", "x":2, "y":1.25}, {"label":"1,3", "x":3, "y":1.25}, {"label":"1,4", "x":4, "y":1.25}, {"label":"1,5", "x":5, "y":1.25}, {"label":"1,6", "x":6, "y":1.25}, {"label":"1,7", "x":7, "y":1.25}, {"label":"1,8", "x":8, "y":1.25}, {"label":"1,9", "x":9, "y":1.25}, {"label":"1,10", "x":10, "y":1.25}, {"label":"1,11", "x":11, "y":1.25}, {"label":"1,12", "x":12, "y":1.25}, {"label":"1,13", "x":13, "y":1.25, "w":2}, {"label":"1,15", "x":15.25, "y":1.25}, {"label":"2,0", "x":0, "y":2.25, "w":1.5}, {"label":"2,1", "x":1.5, "y":2.25}, {"label":"2,2", "x":2.5, "y":2.25}, {"label":"2,3", "x":3.5, "y":2.25}, {"label":"2,4", "x":4.5, "y":2.25}, {"label":"2,5", "x":5.5, "y":2.25}, {"label":"2,6", "x":6.5, "y":2.25}, {"label":"2,7", "x":7.5, "y":2.25}, {"label":"2,8", "x":8.5, "y":2.25}, {"label":"2,9", "x":9.5, "y":2.25}, {"label":"2,10", "x":10.5, "y":2.25}, {"label":"2,11", "x":11.5, "y":2.25}, {"label":"2,12", "x":12.5, "y":2.25}, {"label":"2,13", "x":13.5, "y":2.25, "w":1.5}, {"label":"2,15", "x":15.25, "y":2.25}, {"label":"3,0", "x":0, "y":3.25, "w":1.75}, {"label":"3,1", "x":1.75, "y":3.25}, {"label":"3,2", "x":2.75, "y":3.25}, {"label":"3,3", "x":3.75, "y":3.25}, {"label":"3,4", "x":4.75, "y":3.25}, {"label":"3,5", "x":5.75, "y":3.25}, {"label":"3,6", "x":6.75, "y":3.25}, {"label":"3,7", "x":7.75, "y":3.25}, {"label":"3,8", "x":8.75, "y":3.25}, {"label":"3,9", "x":9.75, "y":3.25}, {"label":"3,10", "x":10.75, "y":3.25}, {"label":"3,11", "x":11.75, "y":3.25}, {"label":"3,12", "x":12.75, "y":3.25, "w":2.25}, {"label":"3,15", "x":15.25, "y":3.25}, {"label":"4,0", "x":0, "y":4.25, "w":2.25}, {"label":"4,2", "x":2.25, "y":4.25}, {"label":"4,3", "x":3.25, "y":4.25}, {"label":"4,4", "x":4.25, "y":4.25}, {"label":"4,5", "x":5.25, "y":4.25}, {"label":"4,6", "x":6.25, "y":4.25}, {"label":"4,7", "x":7.25, "y":4.25}, {"label":"4,8", "x":8.25, "y":4.25}, {"label":"4,9", "x":9.25, "y":4.25}, {"label":"4,10", "x":10.25, "y":4.25}, {"label":"4,11", "x":11.25, "y":4.25}, {"label":"4,12", "x":12.25, "y":4.25, "w":1.75}, {"label":"4,14", "x":14.25, "y":4.5}, {"label":"5,0", "x":0, "y":5.25, "w":1.25}, {"label":"5,1", "x":1.25, "y":5.25, "w":1.25}, {"label":"5,2", "x":2.5, "y":5.25, "w":1.25}, {"label":"5,5", "x":3.75, "y":5.25, "w":6.25}, {"label":"5,9", "x":10, "y":5.25, "w":1.5}, {"label":"5,11", "x":11.5, "y":5.25, "w":1.5}, {"label":"5,12", "x":13.25, "y":5.5}, {"label":"5,14", "x":14.25, "y":5.5}, {"label":"5,15", "x":15.25, "y":5.5}] @@ -11,4 +9,4 @@ "layout": [{"label":"0,0", "x":0, "y":0}, {"label":"0,2", "x":1.25, "y":0}, {"label":"0,3", "x":2.25, "y":0}, {"label":"0,4", "x":3.25, "y":0}, {"label":"0,5", "x":4.25, "y":0}, {"label":"0,6", "x":5.5, "y":0}, {"label":"0,7", "x":6.5, "y":0}, {"label":"0,8", "x":7.5, "y":0}, {"label":"0,9", "x":8.5, "y":0}, {"label":"0,10", "x":9.75, "y":0}, {"label":"0,11", "x":10.75, "y":0}, {"label":"0,12", "x":11.75, "y":0}, {"label":"0,13", "x":12.75, "y":0}, {"label":"0,14", "x":14, "y":0}, {"label":"6,16", "x":15.25, "y":0}, {"label":"1,0", "x":0, "y":1.25}, {"label":"1,1", "x":1, "y":1.25}, {"label":"1,2", "x":2, "y":1.25}, {"label":"1,3", "x":3, "y":1.25}, {"label":"1,4", "x":4, "y":1.25}, {"label":"1,5", "x":5, "y":1.25}, {"label":"1,6", "x":6, "y":1.25}, {"label":"1,7", "x":7, "y":1.25}, {"label":"1,8", "x":8, "y":1.25}, {"label":"1,9", "x":9, "y":1.25}, {"label":"1,10", "x":10, "y":1.25}, {"label":"1,11", "x":11, "y":1.25}, {"label":"1,12", "x":12, "y":1.25}, {"label":"1,13", "x":13, "y":1.25}, {"label":"1,14", "x":14, "y":1.25}, {"label":"1,15", "x":15.25, "y":1.25}, {"label":"2,0", "x":0, "y":2.25, "w":1.5}, {"label":"2,1", "x":1.5, "y":2.25}, {"label":"2,2", "x":2.5, "y":2.25}, {"label":"2,3", "x":3.5, "y":2.25}, {"label":"2,4", "x":4.5, "y":2.25}, {"label":"2,5", "x":5.5, "y":2.25}, {"label":"2,6", "x":6.5, "y":2.25}, {"label":"2,7", "x":7.5, "y":2.25}, {"label":"2,8", "x":8.5, "y":2.25}, {"label":"2,9", "x":9.5, "y":2.25}, {"label":"2,10", "x":10.5, "y":2.25}, {"label":"2,11", "x":11.5, "y":2.25}, {"label":"2,12", "x":12.5, "y":2.25}, {"label":"2,13", "x":13.5, "y":2.25, "w":1.5}, {"label":"2,15", "x":15.25, "y":2.25}, {"label":"3,0", "x":0, "y":3.25, "w":1.75}, {"label":"3,1", "x":1.75, "y":3.25}, {"label":"3,2", "x":2.75, "y":3.25}, {"label":"3,3", "x":3.75, "y":3.25}, {"label":"3,4", "x":4.75, "y":3.25}, {"label":"3,5", "x":5.75, "y":3.25}, {"label":"3,6", "x":6.75, "y":3.25}, {"label":"3,7", "x":7.75, "y":3.25}, {"label":"3,8", "x":8.75, "y":3.25}, {"label":"3,9", "x":9.75, "y":3.25}, {"label":"3,10", "x":10.75, "y":3.25}, {"label":"3,11", "x":11.75, "y":3.25}, {"label":"3,12", "x":12.75, "y":3.25, "w":2.25}, {"label":"3,15", "x":15.25, "y":3.25}, {"label":"4,0", "x":0, "y":4.25, "w":1.25}, {"label":"4,1", "x":1.25, "y":4.25}, {"label":"4,2", "x":2.25, "y":4.25}, {"label":"4,3", "x":3.25, "y":4.25}, {"label":"4,4", "x":4.25, "y":4.25}, {"label":"4,5", "x":5.25, "y":4.25}, {"label":"4,6", "x":6.25, "y":4.25}, {"label":"4,7", "x":7.25, "y":4.25}, {"label":"4,8", "x":8.25, "y":4.25}, {"label":"4,9", "x":9.25, "y":4.25}, {"label":"4,10", "x":10.25, "y":4.25}, {"label":"4,11", "x":11.25, "y":4.25}, {"label":"4,12", "x":12.25, "y":4.25, "w":1.75}, {"label":"4,14", "x":14.25, "y":4.5}, {"label":"5,0", "x":0, "y":5.25, "w":1.25}, {"label":"5,1", "x":1.25, "y":5.25, "w":1.25}, {"label":"5,2", "x":2.5, "y":5.25, "w":1.25}, {"label":"5,5", "x":3.75, "y":5.25, "w":6.25}, {"label":"5,9", "x":10, "y":5.25, "w":1.5}, {"label":"5,11", "x":11.5, "y":5.25, "w":1.5}, {"label":"5,12", "x":13.25, "y":5.5}, {"label":"5,14", "x":14.25, "y":5.5}, {"label":"5,15", "x":15.25, "y":5.5}] } } -} \ No newline at end of file +} diff --git a/keyboards/nightingale_studios/hailey/rules.mk b/keyboards/nightingale_studios/hailey/rules.mk index 614fcdedb557..311d6f02e200 100644 --- a/keyboards/nightingale_studios/hailey/rules.mk +++ b/keyboards/nightingale_studios/hailey/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = yes diff --git a/keyboards/nightly_boards/adellein/info.json b/keyboards/nightly_boards/adellein/info.json index 64a0a0f55f64..394987dddb9e 100644 --- a/keyboards/nightly_boards/adellein/info.json +++ b/keyboards/nightly_boards/adellein/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Adellein", "url": "", "maintainer": "Neil Brian Ramirez", - "width": 16.25, - "height": 5, "layouts": { "LAYOUT_40ergo_split_ent": { "layout": [ @@ -115,4 +113,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/nightly_boards/adellein/rules.mk b/keyboards/nightly_boards/adellein/rules.mk index f78597b9168d..4e6f37df51be 100644 --- a/keyboards/nightly_boards/adellein/rules.mk +++ b/keyboards/nightly_boards/adellein/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth ENCODER_ENABLE = yes # Enable Rotary Encoders LTO_ENABLE = yes diff --git a/keyboards/nightly_boards/alter/rev1/info.json b/keyboards/nightly_boards/alter/rev1/info.json index 4d4574f9d44a..6083454b0166 100644 --- a/keyboards/nightly_boards/alter/rev1/info.json +++ b/keyboards/nightly_boards/alter/rev1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Alter", "url": "", "maintainer": "Neil Brian Ramirez", - "width": 20, - "height": 5.25, "layouts": { "LAYOUT_alice_split_bs": { "layout": [ diff --git a/keyboards/nightly_boards/alter/rev1/rules.mk b/keyboards/nightly_boards/alter/rev1/rules.mk index 740bd3b43930..7c048884c2b0 100644 --- a/keyboards/nightly_boards/alter/rev1/rules.mk +++ b/keyboards/nightly_boards/alter/rev1/rules.mk @@ -2,31 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LAYOUTS = alice_split_bs diff --git a/keyboards/nightly_boards/n2/info.json b/keyboards/nightly_boards/n2/info.json index fe2faa8c7e0f..578643647880 100644 --- a/keyboards/nightly_boards/n2/info.json +++ b/keyboards/nightly_boards/n2/info.json @@ -2,8 +2,6 @@ "keyboard_name": "[n]2", "url": "", "maintainer": "Neil Brian Ramirez", - "width": 1, - "height": 2, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0}, {"x":0, "y":1}] diff --git a/keyboards/nightly_boards/n2/rules.mk b/keyboards/nightly_boards/n2/rules.mk index 62427c9174aa..afed76d6b6d9 100644 --- a/keyboards/nightly_boards/n2/rules.mk +++ b/keyboards/nightly_boards/n2/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/nightly_boards/n40_o/info.json b/keyboards/nightly_boards/n40_o/info.json index 4f037ec058cf..6fb2a1dfa60b 100644 --- a/keyboards/nightly_boards/n40_o/info.json +++ b/keyboards/nightly_boards/n40_o/info.json @@ -2,8 +2,6 @@ "keyboard_name": "[n]40-o", "url": "", "maintainer": "Neil Brian Ramirez", - "width": 15.5, - "height": 4, "layouts": { "LAYOUT_ortho_4x13_encoders": { "layout": [ @@ -188,4 +186,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/nightly_boards/n40_o/rules.mk b/keyboards/nightly_boards/n40_o/rules.mk index 0eeb14fdc226..8f0f675b8056 100644 --- a/keyboards/nightly_boards/n40_o/rules.mk +++ b/keyboards/nightly_boards/n40_o/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 = yes # Audio output ENCODER_ENABLE = yes # Enable Rotary Encoders LTO_ENABLE = yes diff --git a/keyboards/nightly_boards/n60_s/info.json b/keyboards/nightly_boards/n60_s/info.json index bd3d08cb0c37..25513215443c 100644 --- a/keyboards/nightly_boards/n60_s/info.json +++ b/keyboards/nightly_boards/n60_s/info.json @@ -2,8 +2,6 @@ "keyboard_name": "[n]60-s", "url": "", "maintainer": "Neil Brian Ramirez", - "width": 17.25, - "height": 5, "layouts": { "LAYOUT_60_ansi_split_bs_rshift": { "layout": [ @@ -292,4 +290,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/nightly_boards/n60_s/rules.mk b/keyboards/nightly_boards/n60_s/rules.mk index 54867942bfba..6a76e6741ca9 100644 --- a/keyboards/nightly_boards/n60_s/rules.mk +++ b/keyboards/nightly_boards/n60_s/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = yes # Audio output ENCODER_ENABLE = yes # Enable Rotary Encoders LTO_ENABLE = yes diff --git a/keyboards/nightly_boards/n87/config.h b/keyboards/nightly_boards/n87/config.h index 0315119d8883..543399e71a0a 100644 --- a/keyboards/nightly_boards/n87/config.h +++ b/keyboards/nightly_boards/n87/config.h @@ -127,59 +127,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -200,26 +147,6 @@ along with this program. If not, see . #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/nightly_boards/n87/info.json b/keyboards/nightly_boards/n87/info.json index e704caed6791..7469ba864472 100644 --- a/keyboards/nightly_boards/n87/info.json +++ b/keyboards/nightly_boards/n87/info.json @@ -2,8 +2,6 @@ "keyboard_name": "[n]87", "url": "", "maintainer": "Neil Brian Ramirez", - "width": 18.25, - "height": 6.25, "layouts": { "LAYOUT_tkl_ansi_split_bs_rshift": { "layout": [ @@ -283,4 +281,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/nightly_boards/n87/rules.mk b/keyboards/nightly_boards/n87/rules.mk index b90ef02f3c52..c7fe857abdc7 100644 --- a/keyboards/nightly_boards/n87/rules.mk +++ b/keyboards/nightly_boards/n87/rules.mk @@ -2,29 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = yes # Audio output diff --git a/keyboards/nightly_boards/n9/config.h b/keyboards/nightly_boards/n9/config.h new file mode 100644 index 000000000000..b8b29099ca13 --- /dev/null +++ b/keyboards/nightly_boards/n9/config.h @@ -0,0 +1,93 @@ +/* +Copyright 2020 Neil Brian Ramirez +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xD812 +#define PRODUCT_ID 0x0012 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Neil Brian Ramirez +#define PRODUCT [n]9 + +/* key matrix size */ +#define MATRIX_ROWS 3 +#define MATRIX_COLS 3 + +/* + * 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 { F4, B1, B3 } +#define MATRIX_COL_PINS { F6, F7, D4 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +// #define BACKLIGHT_PIN F1 +// #define BACKLIGHT_BREATHING +// #define BACKLIGHT_LEVELS 3 + +#define RGB_DI_PIN F5 +#ifdef RGB_DI_PIN +#define RGBLED_NUM 8 +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 +#define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +// /*== all animations enable ==*/ +#define RGBLIGHT_ANIMATIONS +// /*== or choose animations ==*/ +// #define RGBLIGHT_EFFECT_BREATHING +// #define RGBLIGHT_EFFECT_RAINBOW_MOOD +// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL +// #define RGBLIGHT_EFFECT_SNAKE +// #define RGBLIGHT_EFFECT_KNIGHT +// #define RGBLIGHT_EFFECT_CHRISTMAS +// #define RGBLIGHT_EFFECT_STATIC_GRADIENT +// #define RGBLIGHT_EFFECT_RGB_TEST +// #define RGBLIGHT_EFFECT_ALTERNATING +// /*== customize breathing effect ==*/ +// /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +// #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +// /*==== use exp() and sin() ====*/ +// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* 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 + + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/nightly_boards/n9/info.json b/keyboards/nightly_boards/n9/info.json new file mode 100644 index 000000000000..3cc73b4829c0 --- /dev/null +++ b/keyboards/nightly_boards/n9/info.json @@ -0,0 +1,21 @@ +{ + "keyboard_name": "[n]9", + "url": "", + "maintainer": "Neil Brian Ramirez", + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "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}] + } + } +} diff --git a/keyboards/nightly_boards/n9/keymaps/default/keymap.c b/keyboards/nightly_boards/n9/keymaps/default/keymap.c new file mode 100644 index 000000000000..8687c0be98c0 --- /dev/null +++ b/keyboards/nightly_boards/n9/keymaps/default/keymap.c @@ -0,0 +1,24 @@ +/* Copyright 2020 Neil Brian Ramirez + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_1, KC_2, KC_3, + KC_4, KC_5, KC_6, + KC_7, KC_8, KC_9 + ), +}; diff --git a/keyboards/nightly_boards/n9/keymaps/via/keymap.c b/keyboards/nightly_boards/n9/keymaps/via/keymap.c new file mode 100644 index 000000000000..34c4cc26ce30 --- /dev/null +++ b/keyboards/nightly_boards/n9/keymaps/via/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2020 Neil Brian Ramirez + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_1, KC_2, KC_3, + KC_4, KC_5, KC_6, + KC_7, KC_8, KC_9 + ), + [1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS + ), +}; diff --git a/keyboards/nightly_boards/n9/keymaps/via/rules.mk b/keyboards/nightly_boards/n9/keymaps/via/rules.mk new file mode 100644 index 000000000000..43061db1dd46 --- /dev/null +++ b/keyboards/nightly_boards/n9/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/nightly_boards/n9/n9.c b/keyboards/nightly_boards/n9/n9.c new file mode 100644 index 000000000000..e6b736aa8bef --- /dev/null +++ b/keyboards/nightly_boards/n9/n9.c @@ -0,0 +1,18 @@ +/* Copyright 2020 Neil Brian Ramirez + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "n9.h" + diff --git a/keyboards/nightly_boards/n9/n9.h b/keyboards/nightly_boards/n9/n9.h new file mode 100644 index 000000000000..6b0dbdc2e678 --- /dev/null +++ b/keyboards/nightly_boards/n9/n9.h @@ -0,0 +1,29 @@ +/* Copyright 2020 Neil Brian Ramirez + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + K00, K01, K02, \ + K10, K11, K12, \ + K20, K21, K22 \ +) { \ + { K00, K01, K02 }, \ + { K10, K11, K12 }, \ + { K20, K21, K22 }, \ +} diff --git a/keyboards/nightly_boards/n9/readme.md b/keyboards/nightly_boards/n9/readme.md new file mode 100644 index 000000000000..3bf202439869 --- /dev/null +++ b/keyboards/nightly_boards/n9/readme.md @@ -0,0 +1,18 @@ +# [n]9 + +![n9](https://i.imgur.com/dDGm2g7.png) + +A 9-key pcb powered by a pro-micro + +* Keyboard Maintainer: [Neil Brian Ramirez](https://github.com/NightlyBoards) +* Hardware Supported: atmega32u4 + +Make example for this keyboard (after setting up your build environment): + + make nightly_boards/n9:default + +Flashing example for this keyboard: + + make nightly_boards/n9:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/nightly_boards/n9/rules.mk b/keyboards/nightly_boards/n9/rules.mk new file mode 100644 index 000000000000..229b4a4d97f2 --- /dev/null +++ b/keyboards/nightly_boards/n9/rules.mk @@ -0,0 +1,18 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow diff --git a/keyboards/nightly_boards/octopad/info.json b/keyboards/nightly_boards/octopad/info.json index 0e83531aea0f..0bc2cea2e6c7 100644 --- a/keyboards/nightly_boards/octopad/info.json +++ b/keyboards/nightly_boards/octopad/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Octopad", "url": "", "maintainer": "Neil Brian Ramirez", - "width": 6.5, - "height": 3.25, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/nightly_boards/octopad/rules.mk b/keyboards/nightly_boards/octopad/rules.mk index 9ac5c6d729c8..85d2cd6384b0 100644 --- a/keyboards/nightly_boards/octopad/rules.mk +++ b/keyboards/nightly_boards/octopad/rules.mk @@ -7,19 +7,16 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 LTO_ENABLE = yes # Link Time Optimization, makes the firmware smaller but some features may not work 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 = yes # Audio output ENCODER_ENABLE = yes # Enable Rotary Encoders diff --git a/keyboards/nightly_boards/ph_arisu/info.json b/keyboards/nightly_boards/ph_arisu/info.json index 62ea91fa6ba0..fc2f8e92698d 100644 --- a/keyboards/nightly_boards/ph_arisu/info.json +++ b/keyboards/nightly_boards/ph_arisu/info.json @@ -2,8 +2,6 @@ "keyboard_name": "PH Arisu", "url": "https://github.com/FateNozomi/arisu-pcb", "maintainer": "qmk", - "width": 17.8, - "height": 5.25, "layouts": { "LAYOUT": { "layout": [{"label":"0,0", "x":0, "y":0}, {"label":"1,0", "x":1, "y":0}, {"label":"0,1", "x":2, "y":0}, {"label":"1,1", "x":3, "y":0}, {"label":"0,2", "x":4, "y":0}, {"label":"1,2", "x":5, "y":0}, {"label":"0,3", "x":6, "y":0}, {"label":"1,3", "x":8.5, "y":0}, {"label":"0,4", "x":9.5, "y":0}, {"label":"1,4", "x":10.5, "y":0}, {"label":"0,5", "x":11.5, "y":0}, {"label":"1,5", "x":12.5, "y":0}, {"label":"0,6", "x":13.5, "y":0}, {"label":"1,6", "x":14.5, "y":0}, {"label":"0,7", "x":15.5, "y":0}, {"label":"2,7", "x":16.8, "y":0}, {"label":"2,0", "x":0, "y":1, "w":1.5}, {"label":"3,0", "x":1.5, "y":1}, {"label":"2,1", "x":2.5, "y":1}, {"label":"3,1", "x":3.5, "y":1}, {"label":"2,2", "x":4.5, "y":1}, {"label":"3,2", "x":5.5, "y":1}, {"label":"2,3", "x":8, "y":1}, {"label":"3,3", "x":9, "y":1}, {"label":"2,4", "x":10, "y":1}, {"label":"3,4", "x":11, "y":1}, {"label":"2,5", "x":12, "y":1}, {"label":"3,5", "x":13, "y":1}, {"label":"2,6", "x":14, "y":1}, {"label":"3,6", "x":15, "y":1, "w":1.5}, {"label":"4,7", "x":16.8, "y":1}, {"label":"4,0", "x":0, "y":2, "w":1.75}, {"label":"5,0", "x":1.75, "y":2}, {"label":"4,1", "x":2.75, "y":2}, {"label":"5,1", "x":3.75, "y":2}, {"label":"4,2", "x":4.75, "y":2}, {"label":"5,2", "x":5.75, "y":2}, {"label":"4,3", "x":8.25, "y":2}, {"label":"5,3", "x":9.25, "y":2}, {"label":"4,4", "x":10.25, "y":2}, {"label":"5,4", "x":11.25, "y":2}, {"label":"4,5", "x":12.25, "y":2}, {"label":"5,5", "x":13.25, "y":2}, {"label":"4,6", "x":14.25, "y":2, "w":2.25}, {"label":"6,7", "x":16.8, "y":2}, {"label":"6,0", "x":0, "y":3, "w":2.25}, {"label":"7,0", "x":2.25, "y":3}, {"label":"6,1", "x":3.25, "y":3}, {"label":"7,1", "x":4.25, "y":3}, {"label":"6,2", "x":5.25, "y":3}, {"label":"7,2", "x":6.25, "y":3}, {"label":"6,3", "x":8.75, "y":3}, {"label":"7,3", "x":9.75, "y":3}, {"label":"6,4", "x":10.75, "y":3}, {"label":"7,4", "x":11.75, "y":3}, {"label":"6,5", "x":12.75, "y":3}, {"label":"7,5", "x":13.75, "y":3, "w":1.75}, {"label":"7,6", "x":15.75, "y":3.25}, {"label":"8,0", "x":0, "y":4, "w":1.5}, {"label":"8,1", "x":2.75, "y":4, "w":1.5}, {"label":"8,2", "x":4.25, "y":4, "w":2}, {"label":"9,2", "x":6.25, "y":4, "w":1.25}, {"label":"9,3", "x":8.25, "y":4, "w":2.75}, {"label":"9,4", "x":11, "y":4, "w":1.5}, {"label":"8,6", "x":14.75, "y":4.25}, {"label":"9,6", "x":15.75, "y":4.25}, {"label":"8,7", "x":16.75, "y":4.25}] diff --git a/keyboards/nightly_boards/ph_arisu/rules.mk b/keyboards/nightly_boards/ph_arisu/rules.mk index bde08efba509..b97001801122 100644 --- a/keyboards/nightly_boards/ph_arisu/rules.mk +++ b/keyboards/nightly_boards/ph_arisu/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/nightmare/config.h b/keyboards/nightmare/config.h index f001d62217eb..14477ee4de99 100644 --- a/keyboards/nightmare/config.h +++ b/keyboards/nightmare/config.h @@ -121,59 +121,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -192,26 +139,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ #define BOOTMAGIC_LITE_ROW 0 #define BOOTMAGIC_LITE_COLUMN 1 diff --git a/keyboards/nightmare/info.json b/keyboards/nightmare/info.json index 14e8ac647c36..8e79676cdb9c 100644 --- a/keyboards/nightmare/info.json +++ b/keyboards/nightmare/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Nightmare", "url": "https://keyhive.xyz/shop/nightmare-pcb-and-case", "maintainer": "cfbender", - "width": 15.25, - "height": 4, "layouts": { "LAYOUT_default": { "layout": [ @@ -531,4 +529,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/nightmare/nightmare.c b/keyboards/nightmare/nightmare.c index ee0f5fc2e1cc..301a8981a8d9 100644 --- a/keyboards/nightmare/nightmare.c +++ b/keyboards/nightmare/nightmare.c @@ -14,38 +14,3 @@ * along with this program. If not, see . */ #include "nightmare.h" - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -/* - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - -*/ diff --git a/keyboards/nightmare/rules.mk b/keyboards/nightmare/rules.mk index 2b32bbee9226..00a8fa07a459 100644 --- a/keyboards/nightmare/rules.mk +++ b/keyboards/nightmare/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/nimrod/info.json b/keyboards/nimrod/info.json index 4df94c284276..340e65ff3c48 100644 --- a/keyboards/nimrod/info.json +++ b/keyboards/nimrod/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Nimrod", "url": "http://www.keyboard-layout-editor.com/#/gists/5a6b4ee1ca9738c4ed90fe95ef35fdf6", "maintainer": "Breadtamer", - "width": 12.5, - "height": 4, "layouts": { "LAYOUT_ortho_4x10": { "layout": [ diff --git a/keyboards/nimrod/rules.mk b/keyboards/nimrod/rules.mk index 05eec6a66dd8..850fe6c7b4d1 100644 --- a/keyboards/nimrod/rules.mk +++ b/keyboards/nimrod/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LAYOUTS = ortho_4x10 diff --git a/keyboards/niu_mini/info.json b/keyboards/niu_mini/info.json index 5677a01ad3f3..1c4310576ec0 100644 --- a/keyboards/niu_mini/info.json +++ b/keyboards/niu_mini/info.json @@ -2,11 +2,8 @@ "keyboard_name": "NIU Mini", "url": "", "maintainer": "qmk", - "width": 12, - "height": 4, "layouts": { "LAYOUT_ortho_4x12": { - "key_count": 48, "layout": [ {"x":0, "y":0}, {"x":1, "y":0}, @@ -60,7 +57,6 @@ }, "LAYOUT_planck_mit": { - "key_count": 47, "layout": [ {"x":0, "y":0}, {"x":1, "y":0}, diff --git a/keyboards/niu_mini/keymaps/default/keymap.c b/keyboards/niu_mini/keymaps/default/keymap.c index 1fdeb02fc746..c0f5d06c7b3b 100644 --- a/keyboards/niu_mini/keymaps/default/keymap.c +++ b/keyboards/niu_mini/keymaps/default/keymap.c @@ -56,48 +56,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) }; - - -void matrix_init_user(void) { -} - -void matrix_scan_user(void) { -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - - if (IS_LED_ON(usb_led, USB_LED_NUM_LOCK)) { - - } else { - - } - - if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) { - - } else { - - } - - if (IS_LED_ON(usb_led, USB_LED_SCROLL_LOCK)) { - - } else { - - } - - if (IS_LED_ON(usb_led, USB_LED_COMPOSE)) { - - } else { - - } - - if (IS_LED_ON(usb_led, USB_LED_KANA)) { - - } else { - - } - -} diff --git a/keyboards/niu_mini/keymaps/edvard/keymap.c b/keyboards/niu_mini/keymaps/edvard/keymap.c new file mode 100644 index 000000000000..aca4a86b0ef2 --- /dev/null +++ b/keyboards/niu_mini/keymaps/edvard/keymap.c @@ -0,0 +1,194 @@ +/* Copyright 2021 Edvard Sire + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layers { + _QWERTY, + _NUMPAD, + _ARROWS, + _SPECIAL, + _FPS, + _FIGHTING, + _MOBA, + _MOBA2, + _MOUSE +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* QWERTY + * ,--------------------------------------------------------------------------------------, + * |Esc/~ | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+-------+------+------+--------+------+--------------------| + * | Tab | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+-------+------+------+--------+------+--------------------| + * |Numpad| Z | X | C | V | B | N | M | , | . | / |Arrows| + * |------+------+------+------+-------+------+---------------+------+--------------------| + * | Ctrl | GUI | | Alt |Special| Space |RS/Enter|Mouse | | Fps | Del | + * `--------------------------------------------------------------------------------------` + */ +[_QWERTY] = LAYOUT_planck_mit( + KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + MO(1), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(2), + KC_LCTL, KC_LGUI, KC_TRNS, KC_LALT, MO(3), KC_SPC, KC_SFTENT, MO(8), KC_TRNS, TO(4), KC_DEL +), + +/* NUMPAD + * ,-----------------------------------------------------------------------------------. + * | | |Power | |RGBmoG| | | 7 | 8 | 9 | | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | Prev | Play | Next | | | 4 | 5 | 6 | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Trns | |RGBmo-|RBGmd+|RGBtog| | | 1 | 2 | 3 | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | Space | 0 | , | . | |Reset | + * `-----------------------------------------------------------------------------------' + */ +[_NUMPAD] = LAYOUT_planck_mit( + KC_NO, KC_NO, KC_PWR, KC_NO, RGB_M_G, KC_NO, KC_NO, KC_7, KC_8, KC_9, KC_NO, KC_BSPC, + KC_NO, KC_NO, KC_MPRV, KC_MPLY, KC_MNXT, KC_NO, KC_NO, KC_4, KC_5, KC_6, KC_NO, KC_NO, + KC_TRNS, KC_NO, RGB_RMOD, RGB_MOD, RGB_TOG, KC_NO, KC_NO, KC_1, KC_2, KC_3, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_SPC, KC_0, KC_COMM, KC_DOT, KC_NO, RESET +), + +/* ARROWS + * ,-----------------------------------------------------------------------------------. + * | | F1 | F2 | F3 | F4 | | | | Up | | | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | F5 | F6 | F7 | F8 | | | Left | Down |Right | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F9 | F10 | F11 | F12 | | | | | | | Trns | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |LCtrl | F13 | F14 | F15 | F16 | Left Alt | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_ARROWS] = LAYOUT_planck_mit( + KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, KC_BSPC, + KC_NO, KC_F5, KC_F6, KC_F7, KC_F8, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, + KC_NO, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, + KC_LCTL, KC_F13, KC_F14, KC_F15, KC_F16, KC_LALT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO +), + +/* SPECIAL + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | * | ( | ) | \ | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | [ | | | | & | | - | [ | ] | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | | | | = | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | Trns | Space |LShift| | | | | + * `-----------------------------------------------------------------------------------' + */ +[_SPECIAL] = LAYOUT_planck_mit( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSLS, KC_BSPC, + KC_NO, KC_LBRC, KC_NO, KC_NO, KC_NO, KC_AMPR, KC_NO, KC_MINS, KC_LBRC, KC_RBRC, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_EQL, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_SPC, KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO +), + +/* FPS + * ,-----------------------------------------------------------------------------------. + * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 |QWERTY| + * |------+------+------+------+------+-------------+------+------+------+------+------| + * |RShift| Q | W | E | R | T | Y |QWERTY| | | | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Tab | A | S | D | G | B | ` | | | | MOBA | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |LCtrl | Z | X | LAlt |LShift| Space |Enter | | | Trns |FIGHTI| + * `-----------------------------------------------------------------------------------' + */ +[_FPS] = LAYOUT_planck_mit( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, TO(0), + KC_RSFT, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, TO(0), KC_NO, KC_NO, KC_NO, KC_NO, + KC_TAB, KC_A, KC_S, KC_D, KC_G, KC_B, KC_GRV, KC_NO, KC_NO, KC_NO, TO(6), KC_NO, + KC_LCTL, KC_Z, KC_X, KC_LALT, KC_LSFT, KC_SPC, KC_ENT, KC_NO, KC_NO, KC_TRNS, TO(5) +), + +/* FIGHTING + * ,-----------------------------------------------------------------------------------. + * | Esc | | W | | | | | | | | |QWERTY| + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Tab | A | S | D | | | | J | K | L | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |LCtrl | | | | H | Space | | | | | Trns | + * `-----------------------------------------------------------------------------------' + */ +[_FIGHTING] = LAYOUT_planck_mit( + KC_ESC, KC_NO, KC_W, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(0), + KC_TAB, KC_A, KC_S, KC_D, KC_NO, KC_NO, KC_NO, KC_J, KC_K, KC_L, 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_LCTL, KC_NO, KC_NO, KC_NO, KC_H, KC_SPC, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS +), + +/* MOBA + * ,-----------------------------------------------------------------------------------. + * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | | | | |QWERTY| + * |------+------+------+------+------+-------------+------+------+------+------+------| + * |RShift| Q | W | E | R | T | Y |QWERTY| | | | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Tab | A | S | D | F | G | B | | | | Trns | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |LCtrl | Z | X | LAlt |MOBA2 | Space |Enter | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_MOBA] = LAYOUT_planck_mit( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_NO, KC_NO, KC_NO, KC_NO, TO(0), + KC_RSFT, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, TO(0), KC_NO, KC_NO, KC_NO, KC_NO, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_B, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, + KC_LCTL, KC_Z, KC_X, KC_LALT, MO(7), KC_SPC, KC_ENT, KC_NO, KC_NO, KC_NO, KC_NO + ), + +/* MOBA2 + * ,-----------------------------------------------------------------------------------. + * | | | | | | | | | | | | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | F1 | F2 | F3 | F4 | | | | | | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | Trns | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_MOBA2] = LAYOUT_planck_mit( + 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_F1, KC_F2, KC_F3, KC_F4, 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_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO +), + +/* MOBA2 + * ,-----------------------------------------------------------------------------------. + * | | | | MUp | | | | MWUp |MWDown| | | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | |MLeft |MDown |MRight| | |Mouse1|Mouse2| | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Trns | | | | + * `-----------------------------------------------------------------------------------' + */ +[_MOUSE] = LAYOUT_planck_mit( + KC_NO, KC_NO, KC_NO, KC_MS_U, KC_NO, KC_NO, KC_NO, KC_WH_U, KC_WH_D, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, KC_NO, KC_BTN1, KC_BTN2, 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_TRNS, KC_NO, KC_NO, KC_NO + ) +}; diff --git a/keyboards/niu_mini/keymaps/edvard/readme.md b/keyboards/niu_mini/keymaps/edvard/readme.md new file mode 100644 index 000000000000..32846b4a55bc --- /dev/null +++ b/keyboards/niu_mini/keymaps/edvard/readme.md @@ -0,0 +1,5 @@ +# Edvard's layout + +An efficient 40% keyboard layout + +[Writeup](https://github.com/EdvardSire/keyboard) diff --git a/keyboards/niu_mini/keymaps/tucznak/rules.mk b/keyboards/niu_mini/keymaps/tucznak/rules.mk index bf5a36886ef3..422c96962de5 100644 --- a/keyboards/niu_mini/keymaps/tucznak/rules.mk +++ b/keyboards/niu_mini/keymaps/tucznak/rules.mk @@ -1,7 +1,7 @@ # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/niu_mini/rules.mk b/keyboards/niu_mini/rules.mk index 1059ed2f7068..0a75c7cb7c43 100644 --- a/keyboards/niu_mini/rules.mk +++ b/keyboards/niu_mini/rules.mk @@ -2,35 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -API_SYSEX_ENABLE = no - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend LAYOUTS = ortho_4x12 planck_mit LAYOUTS_HAS_RGB = no diff --git a/keyboards/nix_studio/oxalys80/info.json b/keyboards/nix_studio/oxalys80/info.json index 2493d8f60137..d2fd76597046 100644 --- a/keyboards/nix_studio/oxalys80/info.json +++ b/keyboards/nix_studio/oxalys80/info.json @@ -2,8 +2,6 @@ "keyboard_name": "oxalys80", "url": "", "maintainer": "Nix Studio", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT_all": { "layout": [ @@ -200,6 +198,101 @@ {"label":"\u2192", "x":17.25, "y":5.5} ] }, + "LAYOUT_tkl_ansi_tsangan": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":2, "y":0}, + {"label":"F2", "x":3, "y":0}, + {"label":"F3", "x":4, "y":0}, + {"label":"F4", "x":5, "y":0}, + {"label":"F5", "x":6.5, "y":0}, + {"label":"F6", "x":7.5, "y":0}, + {"label":"F7", "x":8.5, "y":0}, + {"label":"F8", "x":9.5, "y":0}, + {"label":"F9", "x":11, "y":0}, + {"label":"F10", "x":12, "y":0}, + {"label":"F11", "x":13, "y":0}, + {"label":"F12", "x":14, "y":0}, + {"label":"PrtSc", "x":15.25, "y":0}, + {"label":"Scroll Lock", "x":16.25, "y":0}, + {"label":"Pause", "x":17.25, "y":0}, + + {"label":"~", "x":0, "y":1.5}, + {"label":"!", "x":1, "y":1.5}, + {"label":"@", "x":2, "y":1.5}, + {"label":"#", "x":3, "y":1.5}, + {"label":"$", "x":4, "y":1.5}, + {"label":"%", "x":5, "y":1.5}, + {"label":"^", "x":6, "y":1.5}, + {"label":"&", "x":7, "y":1.5}, + {"label":"*", "x":8, "y":1.5}, + {"label":"(", "x":9, "y":1.5}, + {"label":")", "x":10, "y":1.5}, + {"label":"_", "x":11, "y":1.5}, + {"label":"+", "x":12, "y":1.5}, + {"label":"Bksp", "x":13, "y":1.5, "w":2}, + {"label":"Insert", "x":15.25, "y":1.5}, + {"label":"Home", "x":16.25, "y":1.5}, + {"label":"PgUp", "x":17.25, "y":1.5}, + + {"label":"Tab", "x":0, "y":2.5, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.5}, + {"label":"W", "x":2.5, "y":2.5}, + {"label":"E", "x":3.5, "y":2.5}, + {"label":"R", "x":4.5, "y":2.5}, + {"label":"T", "x":5.5, "y":2.5}, + {"label":"Y", "x":6.5, "y":2.5}, + {"label":"U", "x":7.5, "y":2.5}, + {"label":"I", "x":8.5, "y":2.5}, + {"label":"O", "x":9.5, "y":2.5}, + {"label":"P", "x":10.5, "y":2.5}, + {"label":"{", "x":11.5, "y":2.5}, + {"label":"}", "x":12.5, "y":2.5}, + {"label":"|", "x":13.5, "y":2.5, "w":1.5}, + {"label":"Delete", "x":15.25, "y":2.5}, + {"label":"End", "x":16.25, "y":2.5}, + {"label":"PgDn", "x":17.25, "y":2.5}, + + {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, + {"label":"A", "x":1.75, "y":3.5}, + {"label":"S", "x":2.75, "y":3.5}, + {"label":"D", "x":3.75, "y":3.5}, + {"label":"F", "x":4.75, "y":3.5}, + {"label":"G", "x":5.75, "y":3.5}, + {"label":"H", "x":6.75, "y":3.5}, + {"label":"J", "x":7.75, "y":3.5}, + {"label":"K", "x":8.75, "y":3.5}, + {"label":"L", "x":9.75, "y":3.5}, + {"label":":", "x":10.75, "y":3.5}, + {"label":"\"", "x":11.75, "y":3.5}, + {"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, + + {"label":"Shift", "x":0, "y":4.5, "w":2.25}, + {"label":"Z", "x":2.25, "y":4.5}, + {"label":"X", "x":3.25, "y":4.5}, + {"label":"C", "x":4.25, "y":4.5}, + {"label":"V", "x":5.25, "y":4.5}, + {"label":"B", "x":6.25, "y":4.5}, + {"label":"N", "x":7.25, "y":4.5}, + {"label":"M", "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":"Shift", "x":12.25, "y":4.5, "w":2.75}, + {"label":"\u2191", "x":16.25, "y":4.5}, + + {"label":"Ctrl", "x":0, "y":5.5, "w":1.5}, + {"label":"Win", "x":1.5, "y":5.5}, + {"label":"Alt", "x":2.5, "y":5.5, "w":1.5}, + { "x":4, "y":5.5, "w":7}, + {"label":"Win", "x":11, "y":5.5, "w":1.5}, + {"label":"Menu", "x":12.5, "y":5.5}, + {"label":"Ctrl", "x":13.5, "y":5.5, "w":1.5}, + {"label":"\u2190", "x":15.25, "y":5.5}, + {"label":"\u2193", "x":16.25, "y":5.5}, + {"label":"\u2192", "x":17.25, "y":5.5} + ] + }, "LAYOUT_tkl_ansi_wkl": { "layout": [ {"label":"Esc", "x":0, "y":0}, @@ -292,6 +385,293 @@ {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5} ] + }, + "LAYOUT_tkl_iso": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":2, "y":0}, + {"label":"F2", "x":3, "y":0}, + {"label":"F3", "x":4, "y":0}, + {"label":"F4", "x":5, "y":0}, + {"label":"F5", "x":6.5, "y":0}, + {"label":"F6", "x":7.5, "y":0}, + {"label":"F7", "x":8.5, "y":0}, + {"label":"F8", "x":9.5, "y":0}, + {"label":"F9", "x":11, "y":0}, + {"label":"F10", "x":12, "y":0}, + {"label":"F11", "x":13, "y":0}, + {"label":"F12", "x":14, "y":0}, + {"label":"PrtSc", "x":15.25, "y":0}, + {"label":"Scroll Lock", "x":16.25, "y":0}, + {"label":"Pause", "x":17.25, "y":0}, + + {"label":"~", "x":0, "y":1.5}, + {"label":"!", "x":1, "y":1.5}, + {"label":"@", "x":2, "y":1.5}, + {"label":"#", "x":3, "y":1.5}, + {"label":"$", "x":4, "y":1.5}, + {"label":"%", "x":5, "y":1.5}, + {"label":"^", "x":6, "y":1.5}, + {"label":"&", "x":7, "y":1.5}, + {"label":"*", "x":8, "y":1.5}, + {"label":"(", "x":9, "y":1.5}, + {"label":")", "x":10, "y":1.5}, + {"label":"_", "x":11, "y":1.5}, + {"label":"+", "x":12, "y":1.5}, + {"label":"Bksp", "x":13, "y":1.5, "w":2}, + {"label":"Insert", "x":15.25, "y":1.5}, + {"label":"Home", "x":16.25, "y":1.5}, + {"label":"PgUp", "x":17.25, "y":1.5}, + + {"label":"Tab", "x":0, "y":2.5, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.5}, + {"label":"W", "x":2.5, "y":2.5}, + {"label":"E", "x":3.5, "y":2.5}, + {"label":"R", "x":4.5, "y":2.5}, + {"label":"T", "x":5.5, "y":2.5}, + {"label":"Y", "x":6.5, "y":2.5}, + {"label":"U", "x":7.5, "y":2.5}, + {"label":"I", "x":8.5, "y":2.5}, + {"label":"O", "x":9.5, "y":2.5}, + {"label":"P", "x":10.5, "y":2.5}, + {"label":"{", "x":11.5, "y":2.5}, + {"label":"}", "x":12.5, "y":2.5}, + {"label":"Delete", "x":15.25, "y":2.5}, + {"label":"End", "x":16.25, "y":2.5}, + {"label":"PgDn", "x":17.25, "y":2.5}, + + {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, + {"label":"A", "x":1.75, "y":3.5}, + {"label":"S", "x":2.75, "y":3.5}, + {"label":"D", "x":3.75, "y":3.5}, + {"label":"F", "x":4.75, "y":3.5}, + {"label":"G", "x":5.75, "y":3.5}, + {"label":"H", "x":6.75, "y":3.5}, + {"label":"J", "x":7.75, "y":3.5}, + {"label":"K", "x":8.75, "y":3.5}, + {"label":"L", "x":9.75, "y":3.5}, + {"label":":", "x":10.75, "y":3.5}, + {"label":"\"", "x":11.75, "y":3.5}, + {"label":"~", "x":12.75, "y":3.5}, + {"label":"Enter", "x":13.75, "y":2.5, "w":1.25, "h":2}, + + {"label":"Shift", "x":0, "y":4.5, "w":1.25}, + {"label":"NUBS", "x":1.25, "y":4.5}, + {"label":"Z", "x":2.25, "y":4.5}, + {"label":"X", "x":3.25, "y":4.5}, + {"label":"C", "x":4.25, "y":4.5}, + {"label":"V", "x":5.25, "y":4.5}, + {"label":"B", "x":6.25, "y":4.5}, + {"label":"N", "x":7.25, "y":4.5}, + {"label":"M", "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":"Shift", "x":12.25, "y":4.5, "w":2.75}, + {"label":"\u2191", "x":16.25, "y":4.5}, + + {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, + {"label":"Win", "x":1.25, "y":5.5, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, + {"label":"Space", "x":3.75, "y":5.5, "w":6.25}, + {"label":"Alt", "x":10, "y":5.5, "w":1.25}, + {"label":"Win", "x":11.25, "y":5.5, "w":1.25}, + {"label":"Menu", "x":12.5, "y":5.5, "w":1.25}, + {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25}, + {"label":"\u2190", "x":15.25, "y":5.5}, + {"label":"\u2193", "x":16.25, "y":5.5}, + {"label":"\u2192", "x":17.25, "y":5.5} + ] + }, + "LAYOUT_tkl_iso_tsangan": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":2, "y":0}, + {"label":"F2", "x":3, "y":0}, + {"label":"F3", "x":4, "y":0}, + {"label":"F4", "x":5, "y":0}, + {"label":"F5", "x":6.5, "y":0}, + {"label":"F6", "x":7.5, "y":0}, + {"label":"F7", "x":8.5, "y":0}, + {"label":"F8", "x":9.5, "y":0}, + {"label":"F9", "x":11, "y":0}, + {"label":"F10", "x":12, "y":0}, + {"label":"F11", "x":13, "y":0}, + {"label":"F12", "x":14, "y":0}, + {"label":"PrtSc", "x":15.25, "y":0}, + {"label":"Scroll Lock", "x":16.25, "y":0}, + {"label":"Pause", "x":17.25, "y":0}, + + {"label":"~", "x":0, "y":1.5}, + {"label":"!", "x":1, "y":1.5}, + {"label":"@", "x":2, "y":1.5}, + {"label":"#", "x":3, "y":1.5}, + {"label":"$", "x":4, "y":1.5}, + {"label":"%", "x":5, "y":1.5}, + {"label":"^", "x":6, "y":1.5}, + {"label":"&", "x":7, "y":1.5}, + {"label":"*", "x":8, "y":1.5}, + {"label":"(", "x":9, "y":1.5}, + {"label":")", "x":10, "y":1.5}, + {"label":"_", "x":11, "y":1.5}, + {"label":"+", "x":12, "y":1.5}, + {"label":"Bksp", "x":13, "y":1.5, "w":2}, + {"label":"Insert", "x":15.25, "y":1.5}, + {"label":"Home", "x":16.25, "y":1.5}, + {"label":"PgUp", "x":17.25, "y":1.5}, + + {"label":"Tab", "x":0, "y":2.5, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.5}, + {"label":"W", "x":2.5, "y":2.5}, + {"label":"E", "x":3.5, "y":2.5}, + {"label":"R", "x":4.5, "y":2.5}, + {"label":"T", "x":5.5, "y":2.5}, + {"label":"Y", "x":6.5, "y":2.5}, + {"label":"U", "x":7.5, "y":2.5}, + {"label":"I", "x":8.5, "y":2.5}, + {"label":"O", "x":9.5, "y":2.5}, + {"label":"P", "x":10.5, "y":2.5}, + {"label":"{", "x":11.5, "y":2.5}, + {"label":"}", "x":12.5, "y":2.5}, + {"label":"Delete", "x":15.25, "y":2.5}, + {"label":"End", "x":16.25, "y":2.5}, + {"label":"PgDn", "x":17.25, "y":2.5}, + + {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, + {"label":"A", "x":1.75, "y":3.5}, + {"label":"S", "x":2.75, "y":3.5}, + {"label":"D", "x":3.75, "y":3.5}, + {"label":"F", "x":4.75, "y":3.5}, + {"label":"G", "x":5.75, "y":3.5}, + {"label":"H", "x":6.75, "y":3.5}, + {"label":"J", "x":7.75, "y":3.5}, + {"label":"K", "x":8.75, "y":3.5}, + {"label":"L", "x":9.75, "y":3.5}, + {"label":":", "x":10.75, "y":3.5}, + {"label":"\"", "x":11.75, "y":3.5}, + {"label":"~", "x":12.75, "y":3.5}, + {"label":"Enter", "x":13.75, "y":2.5, "w":1.25, "h":2}, + + {"label":"Shift", "x":0, "y":4.5, "w":1.25}, + {"label":"NUBS", "x":1.25, "y":4.5}, + {"label":"Z", "x":2.25, "y":4.5}, + {"label":"X", "x":3.25, "y":4.5}, + {"label":"C", "x":4.25, "y":4.5}, + {"label":"V", "x":5.25, "y":4.5}, + {"label":"B", "x":6.25, "y":4.5}, + {"label":"N", "x":7.25, "y":4.5}, + {"label":"M", "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":"Shift", "x":12.25, "y":4.5, "w":2.75}, + {"label":"\u2191", "x":16.25, "y":4.5}, + + {"label":"Ctrl", "x":0, "y":5.5, "w":1.5}, + {"label":"Win", "x":1.5, "y":5.5}, + {"label":"Alt", "x":2.5, "y":5.5, "w":1.5}, + {"label":"Space", "x":4, "y":5.5, "w":7}, + {"label":"Win", "x":11, "y":5.5, "w":1.5}, + {"label":"Menu", "x":12.5, "y":5.5}, + {"label":"Ctrl", "x":13.5, "y":5.5, "w":1.5}, + {"label":"\u2190", "x":15.25, "y":5.5}, + {"label":"\u2193", "x":16.25, "y":5.5}, + {"label":"\u2192", "x":17.25, "y":5.5} + ] + }, + "LAYOUT_tkl_iso_wkl": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":2, "y":0}, + {"label":"F2", "x":3, "y":0}, + {"label":"F3", "x":4, "y":0}, + {"label":"F4", "x":5, "y":0}, + {"label":"F5", "x":6.5, "y":0}, + {"label":"F6", "x":7.5, "y":0}, + {"label":"F7", "x":8.5, "y":0}, + {"label":"F8", "x":9.5, "y":0}, + {"label":"F9", "x":11, "y":0}, + {"label":"F10", "x":12, "y":0}, + {"label":"F11", "x":13, "y":0}, + {"label":"F12", "x":14, "y":0}, + {"label":"PrtSc", "x":15.25, "y":0}, + {"label":"Scroll Lock", "x":16.25, "y":0}, + {"label":"Pause", "x":17.25, "y":0}, + + {"label":"~", "x":0, "y":1.5}, + {"label":"!", "x":1, "y":1.5}, + {"label":"@", "x":2, "y":1.5}, + {"label":"#", "x":3, "y":1.5}, + {"label":"$", "x":4, "y":1.5}, + {"label":"%", "x":5, "y":1.5}, + {"label":"^", "x":6, "y":1.5}, + {"label":"&", "x":7, "y":1.5}, + {"label":"*", "x":8, "y":1.5}, + {"label":"(", "x":9, "y":1.5}, + {"label":")", "x":10, "y":1.5}, + {"label":"_", "x":11, "y":1.5}, + {"label":"+", "x":12, "y":1.5}, + {"label":"Bksp", "x":13, "y":1.5, "w":2}, + {"label":"Insert", "x":15.25, "y":1.5}, + {"label":"Home", "x":16.25, "y":1.5}, + {"label":"PgUp", "x":17.25, "y":1.5}, + + {"label":"Tab", "x":0, "y":2.5, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.5}, + {"label":"W", "x":2.5, "y":2.5}, + {"label":"E", "x":3.5, "y":2.5}, + {"label":"R", "x":4.5, "y":2.5}, + {"label":"T", "x":5.5, "y":2.5}, + {"label":"Y", "x":6.5, "y":2.5}, + {"label":"U", "x":7.5, "y":2.5}, + {"label":"I", "x":8.5, "y":2.5}, + {"label":"O", "x":9.5, "y":2.5}, + {"label":"P", "x":10.5, "y":2.5}, + {"label":"{", "x":11.5, "y":2.5}, + {"label":"}", "x":12.5, "y":2.5}, + {"label":"Delete", "x":15.25, "y":2.5}, + {"label":"End", "x":16.25, "y":2.5}, + {"label":"PgDn", "x":17.25, "y":2.5}, + + {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, + {"label":"A", "x":1.75, "y":3.5}, + {"label":"S", "x":2.75, "y":3.5}, + {"label":"D", "x":3.75, "y":3.5}, + {"label":"F", "x":4.75, "y":3.5}, + {"label":"G", "x":5.75, "y":3.5}, + {"label":"H", "x":6.75, "y":3.5}, + {"label":"J", "x":7.75, "y":3.5}, + {"label":"K", "x":8.75, "y":3.5}, + {"label":"L", "x":9.75, "y":3.5}, + {"label":":", "x":10.75, "y":3.5}, + {"label":"\"", "x":11.75, "y":3.5}, + {"label":"~", "x":12.75, "y":3.5}, + {"label":"Enter", "x":13.75, "y":2.5, "w":1.25, "h":2}, + + {"label":"Shift", "x":0, "y":4.5, "w":1.25}, + {"label":"NUBS", "x":1.25, "y":4.5}, + {"label":"Z", "x":2.25, "y":4.5}, + {"label":"X", "x":3.25, "y":4.5}, + {"label":"C", "x":4.25, "y":4.5}, + {"label":"V", "x":5.25, "y":4.5}, + {"label":"B", "x":6.25, "y":4.5}, + {"label":"N", "x":7.25, "y":4.5}, + {"label":"M", "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":"Shift", "x":12.25, "y":4.5, "w":2.75}, + {"label":"\u2191", "x":16.25, "y":4.5}, + + {"label":"Ctrl", "x":0, "y":5.5, "w":1.5}, + {"label":"Alt", "x":2.5, "y":5.5, "w":1.5}, + {"label":"Space", "x":4, "y":5.5, "w":7}, + {"label":"Alt", "x":11, "y":5.5, "w":1.5}, + {"label":"Ctrl", "x":13.5, "y":5.5, "w":1.5}, + {"label":"\u2190", "x":15.25, "y":5.5}, + {"label":"\u2193", "x":16.25, "y":5.5}, + {"label":"\u2192", "x":17.25, "y":5.5} + ] } } } diff --git a/keyboards/nix_studio/oxalys80/keymaps/default/keymap.c b/keyboards/nix_studio/oxalys80/keymaps/default/keymap.c index 70d05e7b98ab..f2e62ec6cd6c 100644 --- a/keyboards/nix_studio/oxalys80/keymaps/default/keymap.c +++ b/keyboards/nix_studio/oxalys80/keymaps/default/keymap.c @@ -17,20 +17,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_all( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, KC_INS, KC_HOME, KC_PGUP, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_DEL, KC_END, KC_PGDN, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, - KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_TRNS, KC_UP, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_TRNS, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), - [1] = LAYOUT_all( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, BL_TOGG, BL_DEC, BL_INC, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_VOLD, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, BL_TOGG, BL_DEC, BL_INC, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_VOLD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), }; diff --git a/keyboards/nix_studio/oxalys80/keymaps/via/keymap.c b/keyboards/nix_studio/oxalys80/keymaps/via/keymap.c index a81dface97ce..9ad66c92393d 100644 --- a/keyboards/nix_studio/oxalys80/keymaps/via/keymap.c +++ b/keyboards/nix_studio/oxalys80/keymaps/via/keymap.c @@ -17,36 +17,36 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_all( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, KC_INS, KC_HOME, KC_PGUP, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, - KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_TRNS, KC_UP, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_TRNS, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), - [1] = LAYOUT_all( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, BL_TOGG, BL_DEC, BL_INC, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_VOLD, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, BL_TOGG, BL_DEC, BL_INC, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_VOLD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), - [2] = LAYOUT_all( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, BL_TOGG, BL_DEC, BL_INC, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_VOLD, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, BL_TOGG, BL_DEC, BL_INC, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_VOLD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), - [3] = LAYOUT_all( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, BL_TOGG, BL_DEC, BL_INC, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_VOLD, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, BL_TOGG, BL_DEC, BL_INC, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_VOLD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), }; diff --git a/keyboards/nix_studio/oxalys80/oxalys80.h b/keyboards/nix_studio/oxalys80/oxalys80.h index a4f36b2ac001..2a9f789b5d14 100644 --- a/keyboards/nix_studio/oxalys80/oxalys80.h +++ b/keyboards/nix_studio/oxalys80/oxalys80.h @@ -17,29 +17,185 @@ #include "quantum.h" +#define ___ KC_NO + +/* LAYOUT_all + * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ + * │00 │ │01 │11 │02 │12 │ │03 │13 │04 │14 │ │05 │15 │06 │16 │ │07 │17 │08 │ + * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ ┌───────┐ + * │20 │30 │21 │31 │22 │32 │23 │33 │24 │34 │25 │35 │26 │36 │66 │ │27 │37 │28 │ │36 │ 2u Backspace + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ └─┬─────┤ + * │40 │50 │41 │51 │42 │52 │43 │53 │44 │54 │45 │55 │46 │56 │ │47 │57 │48 │ │ │ + * 2.25u ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ ┌──┴┐76 │ ISO Enter + * LShift │60 │70 │61 │71 │62 │72 │63 │73 │64 │74 │65 │75 │76 │ │56 │ │ + * ┌────────┐ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ ┌─┴───┴────┤ + * │80 │ │80 │90 │81 │91 │82 │92 │83 │93 │84 │94 │85 │95 │86 │96 │ │97 │ │86 │ 2.75u RShift + * └────────┘ ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ ┌───┼───┼───┐ └──────────┘ + * │A0 │B0 │A1 │A3 │A5 │B5 │A6 │B6 │ │A7 │B7 │A8 │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ + * ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐ + * │A0 │B0 │A1 │A3 │B5 │A6 │B6 │ Tsangan + * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ + * ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐ + * │A0 │ │A1 │A3 │B5 │ │B6 │ WKL + * └─────┘ └─────┴───────────────────────────┴─────┘ └─────┘ + */ + // 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_all(\ - K000, K001, K011, K002, K012, K003, K013, K004, K014, K005, K015, K006, K016, K007, K017, K008, \ - K020, K030, K021, K031, K022, K032, K023, K033, K024, K034, K025, K035, K026, K036, K066, K027, K037, K028, \ - K040, K050, K041, K051, K042, K052, K043, K053, K044, K054, K045, K055, K046, K056, K047, K057, K048, \ - K060, K070, K061, K071, K062, K072, K063, K073, K064, K074, K065, K075, K076, \ - K080, K090, K081, K091, K082, K092, K083, K093, K084, K094, K085, K095, K086, K096, K097, \ - K100, K110, K101, K103, K105, K115, K106, K116, K107, K117, K108 \ + K00, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, K07, K17, K08, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K66, K27, K37, K28, \ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K46, K56, K47, K57, K48, \ + K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K76, \ + K80, K90, K81, K91, K82, K92, K83, K93, K84, K94, K85, K95, K86, K96, K97, \ + KA0, KB0, KA1, KA3, KA5, KB5, KA6, KB6, KA7, KB7, KA8 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08 }, \ + { ___, K11, K12, K13, K14, K15, K16, K17, ___ }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28 }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, ___ }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48 }, \ + { K50, K51, K52, K53, K54, K55, K56, K57, ___ }, \ + { K60, K61, K62, K63, K64, K65, K66, ___, ___ }, \ + { K70, K71, K72, K73, K74, K75, K76, ___, ___ }, \ + { K80, K81, K82, K83, K84, K85, K86, ___, ___ }, \ + { K90, K91, K92, K93, K94, K95, K96, K97, ___ }, \ + { KA0, KA1, ___, KA3, ___, KA5, KA6, KA7, KA8 }, \ + { KB0, ___, ___, ___, ___, KB5, KB6, KB7, ___ } \ +} + +#define LAYOUT_tkl_ansi(\ + K00, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, K07, K17, K08, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K27, K37, K28, \ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K46, K56, K47, K57, K48, \ + K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K76, \ + K80, K81, K91, K82, K92, K83, K93, K84, K94, K85, K95, K86, K97, \ + KA0, KB0, KA1, KA3, KA5, KB5, KA6, KB6, KA7, KB7, KA8 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08 }, \ + { ___, K11, K12, K13, K14, K15, K16, K17, ___ }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28 }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, ___ }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48 }, \ + { K50, K51, K52, K53, K54, K55, K56, K57, ___ }, \ + { K60, K61, K62, K63, K64, K65, ___, ___, ___ }, \ + { K70, K71, K72, K73, K74, K75, K76, ___, ___ }, \ + { K80, K81, K82, K83, K84, K85, K86, ___, ___ }, \ + { ___, K91, K92, K93, K94, K95, ___, K97, ___ }, \ + { KA0, KA1, ___, KA3, ___, KA5, KA6, KA7, KA8 }, \ + { KB0, ___, ___, ___, ___, KB5, KB6, KB7, ___ } \ +} + +#define LAYOUT_tkl_ansi_tsangan(\ + K00, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, K07, K17, K08, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K27, K37, K28, \ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K46, K56, K47, K57, K48, \ + K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K76, \ + K80, K81, K91, K82, K92, K83, K93, K84, K94, K85, K95, K86, K97, \ + KA0, KB0, KA1, KA3, KB5, KA6, KB6, KA7, KB7, KA8 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08 }, \ + { ___, K11, K12, K13, K14, K15, K16, K17, ___ }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28 }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, ___ }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48 }, \ + { K50, K51, K52, K53, K54, K55, K56, K57, ___ }, \ + { K60, K61, K62, K63, K64, K65, ___, ___, ___ }, \ + { K70, K71, K72, K73, K74, K75, K76, ___, ___ }, \ + { K80, K81, K82, K83, K84, K85, K86, ___, ___ }, \ + { ___, K91, K92, K93, K94, K95, ___, K97, ___ }, \ + { KA0, KA1, ___, KA3, ___, ___, KA6, KA7, KA8 }, \ + { KB0, ___, ___, ___, ___, KB5, KB6, KB7, ___ } \ +} + +#define LAYOUT_tkl_ansi_wkl(\ + K00, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, K07, K17, K08, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K27, K37, K28, \ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K46, K56, K47, K57, K48, \ + K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K76, \ + K80, K81, K91, K82, K92, K83, K93, K84, K94, K85, K95, K86, K97, \ + KA0, KA1, KA3, KB5, KB6, KA7, KB7, KA8 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08 }, \ + { ___, K11, K12, K13, K14, K15, K16, K17, ___ }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28 }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, ___ }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48 }, \ + { K50, K51, K52, K53, K54, K55, K56, K57, ___ }, \ + { K60, K61, K62, K63, K64, K65, ___, ___, ___ }, \ + { K70, K71, K72, K73, K74, K75, K76, ___, ___ }, \ + { K80, K81, K82, K83, K84, K85, K86, ___, ___ }, \ + { ___, K91, K92, K93, K94, K95, ___, K97, ___ }, \ + { KA0, KA1, ___, KA3, ___, ___, ___, KA7, KA8 }, \ + { ___, ___, ___, ___, ___, KB5, KB6, KB7, ___ } \ +} + +#define LAYOUT_tkl_iso(\ + K00, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, K07, K17, K08, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K27, K37, K28, \ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K46, K47, K57, K48, \ + K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K56, K76, \ + K80, K90, K81, K91, K82, K92, K83, K93, K84, K94, K85, K95, K86, K97, \ + KA0, KB0, KA1, KA3, KA5, KB5, KA6, KB6, KA7, KB7, KA8 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08 }, \ + { ___, K11, K12, K13, K14, K15, K16, K17, ___ }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28 }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, ___ }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48 }, \ + { K50, K51, K52, K53, K54, K55, K56, K57, ___ }, \ + { K60, K61, K62, K63, K64, K65, ___, ___, ___ }, \ + { K70, K71, K72, K73, K74, K75, K76, ___, ___ }, \ + { K80, K81, K82, K83, K84, K85, K86, ___, ___ }, \ + { K90, K91, K92, K93, K94, K95, ___, K97, ___ }, \ + { KA0, KA1, ___, KA3, ___, KA5, KA6, KA7, KA8 }, \ + { KB0, ___, ___, ___, ___, KB5, KB6, KB7, ___ } \ +} + +#define LAYOUT_tkl_iso_tsangan(\ + K00, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, K07, K17, K08, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K27, K37, K28, \ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K46, K47, K57, K48, \ + K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K56, K76, \ + K80, K90, K81, K91, K82, K92, K83, K93, K84, K94, K85, K95, K86, K97, \ + KA0, KB0, KA1, KA3, KB5, KA6, KB6, KA7, KB7, KA8 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08 }, \ + { ___, K11, K12, K13, K14, K15, K16, K17, ___ }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28 }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, ___ }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48 }, \ + { K50, K51, K52, K53, K54, K55, K56, K57, ___ }, \ + { K60, K61, K62, K63, K64, K65, ___, ___, ___ }, \ + { K70, K71, K72, K73, K74, K75, K76, ___, ___ }, \ + { K80, K81, K82, K83, K84, K85, K86, ___, ___ }, \ + { K90, K91, K92, K93, K94, K95, ___, K97, ___ }, \ + { KA0, KA1, ___, KA3, ___, ___, KA6, KA7, KA8 }, \ + { KB0, ___, ___, ___, ___, KB5, KB6, KB7, ___ } \ +} + +#define LAYOUT_tkl_iso_wkl(\ + K00, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, K07, K17, K08, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K27, K37, K28, \ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K46, K47, K57, K48, \ + K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K56, K76, \ + K80, K90, K81, K91, K82, K92, K83, K93, K84, K94, K85, K95, K86, K97, \ + KA0, KA1, KA3, KB5, KB6, KA7, KB7, KA8 \ ) { \ - { K000, K001, K002, K003, K004, K005, K006, K007, K008 }, \ - { KC_NO, K011, K012, K013, K014, K015, K016, K017, KC_NO }, \ - { K020, K021, K022, K023, K024, K025, K026, K027, K028 }, \ - { K030, K031, K032, K033, K034, K035, K036, K037, KC_NO }, \ - { K040, K041, K042, K043, K044, K045, K046, K047, K048 }, \ - { K050, K051, K052, K053, K054, K055, K056, K057, KC_NO }, \ - { K060, K061, K062, K063, K064, K065, K066, KC_NO, KC_NO }, \ - { K070, K071, K072, K073, K074, K075, K076, KC_NO, KC_NO }, \ - { K080, K081, K082, K083, K084, K085, K086, KC_NO, KC_NO }, \ - { K090, K091, K092, K093, K094, K095, K096, K097, KC_NO }, \ - { K100, K101, KC_NO, K103, KC_NO, K105, K106, K107, K108 }, \ - { K110, KC_NO, KC_NO, KC_NO, KC_NO, K115, K116, K117, KC_NO } \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08 }, \ + { ___, K11, K12, K13, K14, K15, K16, K17, ___ }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28 }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, ___ }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48 }, \ + { K50, K51, K52, K53, K54, K55, K56, K57, ___ }, \ + { K60, K61, K62, K63, K64, K65, ___, ___, ___ }, \ + { K70, K71, K72, K73, K74, K75, K76, ___, ___ }, \ + { K80, K81, K82, K83, K84, K85, K86, ___, ___ }, \ + { K90, K91, K92, K93, K94, K95, ___, K97, ___ }, \ + { KA0, KA1, ___, KA3, ___, ___, ___, KA7, KA8 }, \ + { ___, ___, ___, ___, ___, KB5, KB6, KB7, ___ } \ } diff --git a/keyboards/nix_studio/oxalys80/readme.md b/keyboards/nix_studio/oxalys80/readme.md index 44ad7e8286bb..a1b009ebe5b7 100644 --- a/keyboards/nix_studio/oxalys80/readme.md +++ b/keyboards/nix_studio/oxalys80/readme.md @@ -1,43 +1,49 @@ -oxalys80 -=== +# OXALYS80 -A QMK-powered replacement PCB for custom TKL keyboards. This PCB has the same size of the b.87 PCB, Hiney H87a, KBD8X. +A QMK-powered replacement PCB for custom TKL keyboards. This PCB has the same size of the b.87 PCB, Hiney H87a, and KBD8X. -Keyboard Maintainer: [Nix Studio](https://github.com/Nix-Studio) -Hardware Supported: oxalys80 ver. 1.0 -Hardware Availability: [Nix Studio](https://www.instagram.com/nix.studio/) +* Keyboard Maintainer: [Nix Studio](https://github.com/Nix-Studio) +* Hardware Supported: oxalys80 ver. 1.0 +* Hardware Availability: [Nix Studio](https://www.instagram.com/nix.studio/) Make example for this keyboard (after setting up your build environment): - - make nix_studio/oxalys80:default - + + make nix_studio/oxalys80:default + +Flashing example for this keyboard: + + make nix_studio/oxalys80: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). -## oxalys80 hardware information +## OXALYS80 Hardware Information + +Controller: ATmega32U4 + +### Column Pin Configuration + +| col: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | +|------|----|----|----|----|----|----|----|----|----| +| pin: | F0 | F1 | F4 | F5 | F6 | F7 | C7 | B0 | B1 | + +### Row Pin Configuration + +| row: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | +|------|----|----|----|----|----|----|----|----|----|----|----|----| +| pin: | C6 | B6 | B5 | B4 | D7 | D6 | D4 | D5 | D3 | D2 | D1 | D0 | -Controller: Atmega32u4 +The OXALYS80 PCB utilizes duplex matrix organization. - /* Column pin configuration - * col: 0 1 2 3 4 5 6 7 8 - * pin: F0 F1 F4 F5 F6 F7 C7 B0 B1 - */ - - /* Row pin configuration - * row: 0 1 2 3 4 5 6 7 8 9 10 11 - * pin: C6 B6 B5 B4 D7 D6 D4 D5 D3 D2 D1 D0 - */ - -The oxalys PCB utilizes duplex matrix organization. +### LED Pins - Caps Lock LED: E6 - Scroll Lock LED: B2 - Num Lock LED: not supported - Backlight Pin: B7 - RGB Data Pin: B3 - +* Caps Lock LED: E6 +* Scroll Lock LED: B2 +* Num Lock LED: not supported +* Backlight Pin: B7 +* RGB Data Pin: B3 +## In-switch Indicators -In-switch indicators: To connect the Caps Lock LED to the main backlight matrix, turn switch to top position on SW3. To use the Caps Lock LED as an indicator, turn switch to bottom position on SW3. To connect the Scroll Lock LED to the main backlight matrix, turn switch to left position on SW2. To use the Scroll Lock LED as an indicator, turn switch to right position on SW2. diff --git a/keyboards/nix_studio/oxalys80/rules.mk b/keyboards/nix_studio/oxalys80/rules.mk index 714ba6d38397..fded29f468ca 100644 --- a/keyboards/nix_studio/oxalys80/rules.mk +++ b/keyboards/nix_studio/oxalys80/rules.mk @@ -1,23 +1,22 @@ # MCU name MCU = atmega32u4 +# Bootloader selection BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable RGB underglow -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LTO_ENABLE = yes + +LAYOUTS = tkl_ansi tkl_iso diff --git a/keyboards/nk1/info.json b/keyboards/nk1/info.json index 3bf8d4745a35..43b1719e9421 100755 --- a/keyboards/nk1/info.json +++ b/keyboards/nk1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "NK1", "url": "www.yiancar-designs.com", "maintainer": "yiancar", - "width": 1, - "height": 1, "layouts": { "LAYOUT_ortho_1x1": { "layout": [{"x": 0, "y": 0}] diff --git a/keyboards/nk1/rules.mk b/keyboards/nk1/rules.mk index 8dd72e9a6492..c80d8822a9c8 100644 --- a/keyboards/nk1/rules.mk +++ b/keyboards/nk1/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LAYOUTS = ortho_1x1 diff --git a/keyboards/nk65/config.h b/keyboards/nk65/config.h index fa14e9ffbfdd..3268e8ebf448 100755 --- a/keyboards/nk65/config.h +++ b/keyboards/nk65/config.h @@ -148,7 +148,10 @@ along with this program. If not, see . * both 128kb and 256kb versions of F303. * Register 0x1FFFF7CC holds the size of the flash memory. */ -#define EEPROM_START_ADDRESS +#ifndef FLASHSIZE_BASE +# define FLASHSIZE_BASE ((uint32_t)0x1FFFF7CCU) /*!< FLASH Size register base address */ +#endif +#define FEE_MCU_FLASH_SIZE_IGNORE_CHECK #define FEE_MCU_FLASH_SIZE \ ({ \ uint16_t (*flash_size) = (uint16_t*)FLASHSIZE_BASE; \ diff --git a/keyboards/nk65/info.json b/keyboards/nk65/info.json index 4edb13e8c02d..3c2b438c2b17 100755 --- a/keyboards/nk65/info.json +++ b/keyboards/nk65/info.json @@ -2,11 +2,9 @@ "keyboard_name": "NK65", "url": "", "maintainer": "yiancar", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_ansi": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Home", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Page Up", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Page Down", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"label":"End", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4}, {"label":"Fn", "x":11, "y":4}, {"label":"Ctrl", "x":12, "y":4}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}] } } -} \ No newline at end of file +} diff --git a/keyboards/nk65/keymaps/default/keymap.c b/keyboards/nk65/keymaps/default/keymap.c index a793a8bf4123..b4ea68e0e8e9 100755 --- a/keyboards/nk65/keymaps/default/keymap.c +++ b/keyboards/nk65/keymaps/default/keymap.c @@ -44,15 +44,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), }; - -void matrix_init_user(void) { - //user initialization -} - -void matrix_scan_user(void) { - //user matrix -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} \ No newline at end of file diff --git a/keyboards/nk65/keymaps/via/keymap.c b/keyboards/nk65/keymaps/via/keymap.c index a793a8bf4123..b4ea68e0e8e9 100755 --- a/keyboards/nk65/keymaps/via/keymap.c +++ b/keyboards/nk65/keymaps/via/keymap.c @@ -44,15 +44,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), }; - -void matrix_init_user(void) { - //user initialization -} - -void matrix_scan_user(void) { - //user matrix -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} \ No newline at end of file diff --git a/keyboards/nk65/nk65.c b/keyboards/nk65/nk65.c index fae30ac75c9c..4ed18c114ee5 100755 --- a/keyboards/nk65/nk65.c +++ b/keyboards/nk65/nk65.c @@ -18,7 +18,7 @@ #endif #include "nk65.h" -#include "drivers/issi/is31fl3733.h" +#include "drivers/led/issi/is31fl3733.h" /* Indicator LEDS are part of the LED driver * Top LED is blue only. LED driver 2 RGB 7 Green channel diff --git a/keyboards/nk65/rules.mk b/keyboards/nk65/rules.mk index e3f02ee09bfa..ef0111ca1a68 100755 --- a/keyboards/nk65/rules.mk +++ b/keyboards/nk65/rules.mk @@ -14,14 +14,13 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN # comment out to disable the options. # BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in CIE1931_CURVE = yes @@ -31,6 +30,6 @@ LAYOUTS = 65_ansi # project specific files SRC = keyboards/wilba_tech/wt_main.c \ keyboards/wilba_tech/wt_rgb_backlight.c \ - drivers/issi/is31fl3733.c \ + drivers/led/issi/is31fl3733.c \ quantum/color.c \ - drivers/chibios/i2c_master.c + i2c_master.c diff --git a/keyboards/nk87/info.json b/keyboards/nk87/info.json index 55f658e27d4b..5603ffd52b0f 100755 --- a/keyboards/nk87/info.json +++ b/keyboards/nk87/info.json @@ -2,11 +2,9 @@ "keyboard_name": "NK87", "url": "www.yiancar-designs.com", "maintainer": "Yiancar", - "width": 18.25, - "height": 6.25, "layouts": { "LAYOUT_all": { "layout": [{"label":"0,0", "x":0, "y":0}, {"label":"0,1", "x":1.25, "y":0}, {"label":"0,2", "x":2.25, "y":0}, {"label":"0,3", "x":3.25, "y":0}, {"label":"0,4", "x":4.25, "y":0}, {"label":"0,5", "x":5.5, "y":0}, {"label":"0,6", "x":6.5, "y":0}, {"label":"0,7", "x":7.5, "y":0}, {"label":"0,8", "x":8.5, "y":0}, {"label":"0,9", "x":9.75, "y":0}, {"label":"0,10", "x":10.75, "y":0}, {"label":"0,12", "x":11.75, "y":0}, {"label":"0,12", "x":12.75, "y":0}, {"label":"0,13", "x":14, "y":0}, {"label":"0,14", "x":15.25, "y":0}, {"label":"0,15", "x":16.25, "y":0}, {"label":"0,16", "x":17.25, "y":0}, {"label":"1,0", "x":0, "y":1.25}, {"label":"1,1", "x":1, "y":1.25}, {"label":"1,2", "x":2, "y":1.25}, {"label":"1,3", "x":3, "y":1.25}, {"label":"1,4", "x":4, "y":1.25}, {"label":"1,5", "x":5, "y":1.25}, {"label":"1,6", "x":6, "y":1.25}, {"label":"1,7", "x":7, "y":1.25}, {"label":"1,8", "x":8, "y":1.25}, {"label":"1,9", "x":9, "y":1.25}, {"label":"1,10", "x":10, "y":1.25}, {"label":"1,11", "x":11, "y":1.25}, {"label":"1,12", "x":12, "y":1.25}, {"label":"1,13", "x":13, "y":1.25, "w":2}, {"label":"1,14", "x":15.25, "y":1.25}, {"label":"1,15", "x":16.25, "y":1.25}, {"label":"1,16", "x":17.25, "y":1.25}, {"label":"2,0", "x":0, "y":2.25, "w":1.5}, {"label":"2,1", "x":1.5, "y":2.25}, {"label":"2,2", "x":2.5, "y":2.25}, {"label":"2,3", "x":3.5, "y":2.25}, {"label":"2,4", "x":4.5, "y":2.25}, {"label":"2,5", "x":5.5, "y":2.25}, {"label":"2,6", "x":6.5, "y":2.25}, {"label":"2,7", "x":7.5, "y":2.25}, {"label":"2,8", "x":8.5, "y":2.25}, {"label":"2,9", "x":9.5, "y":2.25}, {"label":"2,10", "x":10.5, "y":2.25}, {"label":"2,11", "x":11.5, "y":2.25}, {"label":"2,12", "x":12.5, "y":2.25}, {"label":"3,12", "x":13.5, "y":2.25, "w":1.5}, {"label":"2,14", "x":15.25, "y":2.25}, {"label":"2,15", "x":16.25, "y":2.25}, {"label":"2,16", "x":17.25, "y":2.25}, {"label":"3,0", "x":0, "y":3.25, "w":1.75}, {"label":"3,1", "x":1.75, "y":3.25}, {"label":"3,2", "x":2.75, "y":3.25}, {"label":"3,3", "x":3.75, "y":3.25}, {"label":"3,4", "x":4.75, "y":3.25}, {"label":"3,5", "x":5.75, "y":3.25}, {"label":"3,6", "x":6.75, "y":3.25}, {"label":"3,7", "x":7.75, "y":3.25}, {"label":"3,8", "x":8.75, "y":3.25}, {"label":"3,9", "x":9.75, "y":3.25}, {"label":"3,10", "x":10.75, "y":3.25}, {"label":"3,11", "x":11.75, "y":3.25}, {"label":"3,13", "x":12.75, "y":3.25, "w":2.25}, {"label":"4,0", "x":0, "y":4.25, "w":2.25}, {"label":"4,2", "x":2.25, "y":4.25}, {"label":"4,3", "x":3.25, "y":4.25}, {"label":"4,4", "x":4.25, "y":4.25}, {"label":"4,5", "x":5.25, "y":4.25}, {"label":"4,6", "x":6.25, "y":4.25}, {"label":"4,7", "x":7.25, "y":4.25}, {"label":"4,8", "x":8.25, "y":4.25}, {"label":"4,9", "x":9.25, "y":4.25}, {"label":"4,10", "x":10.25, "y":4.25}, {"label":"4,11", "x":11.25, "y":4.25}, {"label":"4,12", "x":12.25, "y":4.25, "w":2.75}, {"label":"4,15", "x":16.25, "y":4.25}, {"label":"5,0", "x":0, "y":5.25, "w":1.5}, {"label":"5,1", "x":1.5, "y":5.25}, {"label":"5,2", "x":2.5, "y":5.25, "w":1.5}, {"label":"5,6", "x":4, "y":5.25, "w":7}, {"label":"5,11", "x":11, "y":5.25, "w":1.5}, {"label":"5,12", "x":12.5, "y":5.25}, {"label":"5,13", "x":13.5, "y":5.25, "w":1.5}, {"label":"5,14", "x":15.25, "y":5.25}, {"label":"5,15", "x":16.25, "y":5.25}, {"label":"5,16", "x":17.25, "y":5.25}] } } -} \ No newline at end of file +} diff --git a/keyboards/nk87/nk87.c b/keyboards/nk87/nk87.c index bcebbc651cbf..c90ba02ea4fb 100755 --- a/keyboards/nk87/nk87.c +++ b/keyboards/nk87/nk87.c @@ -18,7 +18,7 @@ #endif #include "nk87.h" -#include "drivers/issi/is31fl3733.h" +#include "drivers/led/issi/is31fl3733.h" /* Indicator LEDS are part of the LED driver * Top LED is blue only. LED driver 2 RGB 63 Blue channel diff --git a/keyboards/nk87/rules.mk b/keyboards/nk87/rules.mk index 71f8f3dd80ca..39271a272405 100755 --- a/keyboards/nk87/rules.mk +++ b/keyboards/nk87/rules.mk @@ -13,18 +13,15 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output CIE1931_CURVE = yes @@ -32,6 +29,6 @@ CIE1931_CURVE = yes # project specific files SRC = keyboards/wilba_tech/wt_main.c \ keyboards/wilba_tech/wt_rgb_backlight.c \ - drivers/issi/is31fl3733.c \ + drivers/led/issi/is31fl3733.c \ quantum/color.c \ - drivers/chibios/i2c_master.c + i2c_master.c diff --git a/keyboards/nknl7en/info.json b/keyboards/nknl7en/info.json index ab606e557230..c80ac22769b2 100644 --- a/keyboards/nknl7en/info.json +++ b/keyboards/nknl7en/info.json @@ -2,8 +2,6 @@ "keyboard_name": "nknl7en", "url": "https://salicylic-acid3.hatenablog.com/", "maintainer": "Salicylic_acid3", - "width": 17.25, - "height": 5.25, "layouts": { "LAYOUT": { "layout": [ @@ -63,8 +61,8 @@ {"label":"8,3", "x":11, "y":3}, {"label":"8,4", "x":12, "y":3}, {"label":"8,5", "x":13, "y":3, "w":1.75}, - {"label":"8,8", "x":16.25, "y":3}, {"label":"8,6", "x":15, "y":3.25}, + {"label":"8,8", "x":16.25, "y":3}, {"label":"4,0", "x":0, "y":4, "w":1.25}, {"label":"4,1", "x":1.25, "y":4, "w":1.25}, {"label":"4,2", "x":2.5, "y":4, "w":1.25}, @@ -79,4 +77,4 @@ {"label":"9,7", "x":16, "y":4.25}] } } -} \ No newline at end of file +} diff --git a/keyboards/nknl7en/keymaps/salicylic/keymap.c b/keyboards/nknl7en/keymaps/salicylic/keymap.c index aff4b6e36f19..e7de4e50f089 100644 --- a/keyboards/nknl7en/keymaps/salicylic/keymap.c +++ b/keyboards/nknl7en/keymaps/salicylic/keymap.c @@ -58,7 +58,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------| JP_DQUO, JP_EXLM, JP_QUES, JP_LBRC, JP_RBRC, JP_TILD, KC_P6, KC_P7, KC_P8, KC_P9, JP_ASTR, JP_SLSH, _______, _______, LALT(KC_PSCR), //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------| - JP_QUOT, JP_HASH, JP_DQT, JP_LPRN, JP_RPRN, JP_AT, XXXXXXX, KC_P4, KC_P5, KC_P6, JP_MINS, JP_EQL, _______, _______, + JP_QUOT, JP_HASH, JP_DQUO, JP_LPRN, JP_RPRN, JP_AT, XXXXXXX, KC_P4, KC_P5, KC_P6, JP_MINS, JP_EQL, _______, _______, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------| JP_CIRC, JP_PERC, JP_AMPR, JP_SCLN, JP_COLN, JP_PIPE, KC_P0, KC_P1, KC_P2, KC_P3, JP_PLUS, _______, _______, _______, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------| diff --git a/keyboards/nknl7en/rules.mk b/keyboards/nknl7en/rules.mk index abffa14b3461..d9a3e4aae73e 100644 --- a/keyboards/nknl7en/rules.mk +++ b/keyboards/nknl7en/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 SPLIT_KEYBOARD = yes diff --git a/keyboards/nknl7jp/info.json b/keyboards/nknl7jp/info.json index c0d87c8a2945..c074d9019f8d 100644 --- a/keyboards/nknl7jp/info.json +++ b/keyboards/nknl7jp/info.json @@ -2,8 +2,6 @@ "keyboard_name": "nknl7jp", "url": "https://salicylic-acid3.hatenablog.com/", "maintainer": "Salicylic_acid3", - "width": 17.25, - "height": 5.25, "layouts": { "LAYOUT": { "layout": [ @@ -80,4 +78,4 @@ {"label":"\u2192", "x":16.25, "y":4.25}] } } -} \ No newline at end of file +} diff --git a/keyboards/nknl7jp/keymaps/salicylic/keymap.c b/keyboards/nknl7jp/keymaps/salicylic/keymap.c index 2eaf185665de..65f95f0173a4 100644 --- a/keyboards/nknl7jp/keymaps/salicylic/keymap.c +++ b/keyboards/nknl7jp/keymaps/salicylic/keymap.c @@ -56,7 +56,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------| JP_DQUO, JP_EXLM, JP_QUES, JP_LBRC, JP_RBRC, JP_TILD, KC_P6, KC_P7, KC_P8, KC_P9, JP_ASTR, JP_SLSH, _______, _______, LALT(KC_PSCR), //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------| - JP_QUOT, JP_HASH, JP_DQT, JP_LPRN, JP_RPRN, JP_AT, XXXXXXX, KC_P4, KC_P5, KC_P6, JP_MINS, JP_EQL, _______, _______, + JP_QUOT, JP_HASH, JP_DQUO, JP_LPRN, JP_RPRN, JP_AT, XXXXXXX, KC_P4, KC_P5, KC_P6, JP_MINS, JP_EQL, _______, _______, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------| JP_CIRC, JP_PERC, JP_AMPR, JP_SCLN, JP_COLN, JP_PIPE, KC_P0, KC_P1, KC_P2, KC_P3, JP_PLUS, _______, _______, _______, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------| diff --git a/keyboards/nknl7jp/rules.mk b/keyboards/nknl7jp/rules.mk index abffa14b3461..d9a3e4aae73e 100644 --- a/keyboards/nknl7jp/rules.mk +++ b/keyboards/nknl7jp/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 SPLIT_KEYBOARD = yes diff --git a/keyboards/nomu30/info.json b/keyboards/nomu30/info.json index d0c186016939..8f53f003b571 100644 --- a/keyboards/nomu30/info.json +++ b/keyboards/nomu30/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Nomu30", "url": "https://keys.recompile.net/projects/nomu30/", "maintainer": "takai", - "width": 11.5, - "height": 3, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/nomu30/rev1/rules.mk b/keyboards/nomu30/rev1/rules.mk index 75a36e6868be..8bef465ca4cc 100644 --- a/keyboards/nomu30/rev1/rules.mk +++ b/keyboards/nomu30/rev1/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/nomu30/rev2/rules.mk b/keyboards/nomu30/rev2/rules.mk index 6d5fa0b071a4..199a011f725e 100644 --- a/keyboards/nomu30/rev2/rules.mk +++ b/keyboards/nomu30/rev2/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u2 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/nopunin10did/jabberwocky/config.h b/keyboards/nopunin10did/jabberwocky/config.h index b49a98ba80ae..84c3cec4514e 100644 --- a/keyboards/nopunin10did/jabberwocky/config.h +++ b/keyboards/nopunin10did/jabberwocky/config.h @@ -22,7 +22,6 @@ #define VENDOR_ID 0x4E50 // "NP" #define PRODUCT_ID 0x4A57 // "JW" #define DEVICE_VER 0x0001 -#define MANUFACTURER NoPunIn10Did #define PRODUCT Jabberwocky /* key matrix size */ diff --git a/keyboards/nopunin10did/jabberwocky/info.json b/keyboards/nopunin10did/jabberwocky/info.json index 5282a591f576..ad00dd452449 100644 --- a/keyboards/nopunin10did/jabberwocky/info.json +++ b/keyboards/nopunin10did/jabberwocky/info.json @@ -3,124 +3,122 @@ "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/nopunin10did/railroad", "maintainer": "NoPunIn10Did", "manufacturer": "NoPunIn10Did", - "width": 23.5, - "height": 7.75, "layouts": { "LAYOUT_rh_any": { "layout": [ - {"x":0.75, "y":0.25, "label":"Esc"}, - {"x":2.25, "y":0.25, "label":"F1"}, - {"x":3.25, "y":0.25, "label":"F2"}, - {"x":4, "y":0.25, "r":14, "rx":4, "ry":2.5, "label":"F3"}, - {"x":5, "y":0.125, "r":14, "rx":4, "ry":2.5, "label":"F4"}, - {"x":6, "y":0.25, "r":14, "rx":4, "ry":2.5, "label":"F5"}, - {"x":7, "y":0.375, "r":14, "rx":4, "ry":2.5, "label":"F6"}, - {"x":9.25, "y":0.375, "r":-14, "rx":13.25, "ry":2.5, "label":"F7"}, - {"x":10.25, "y":0.25, "r":-14, "rx":13.25, "ry":2.5, "label":"F8"}, - {"x":11.25, "y":0.125, "r":-14, "rx":13.25, "ry":2.5, "label":"F9"}, - {"x":12.25, "y":0.25, "r":-14, "rx":13.25, "ry":2.5, "label":"F10"}, - {"x":13, "y":0.25, "label":"F11"}, - {"x":14, "y":0.25, "label":"F12"}, - {"x":15.125,"y":0.25, "label":"Print"}, - {"x":16.125,"y":0.25, "label":"Scroll"}, - {"x":17.25, "y":0.25, "label":"Ins"}, - {"x":18.25, "y":0.25, "label":"Del"}, - {"x":19.5, "y":0.25, "label":"Home"}, - {"x":20.5, "y":0.25, "label":"End"}, - {"x":21.5, "y":0.25, "label":"PgUp"}, - {"x":22.5, "y":0.25, "label":"PgDn"}, - {"x":2, "y":1.5, "label":"Grave"}, - {"x":3, "y":1.5, "label":"1"}, - {"x":4, "y":1.5, "r":14, "rx":4, "ry":2.5, "label":"2"}, - {"x":5, "y":1.375, "r":14, "rx":4, "ry":2.5, "label":"3"}, - {"x":6, "y":1.5, "r":14, "rx":4, "ry":2.5, "label":"4"}, - {"x":7, "y":1.625, "r":14, "rx":4, "ry":2.5, "label":"5"}, - {"x":9.25, "y":1.625, "r":-14, "rx":13.25, "ry":2.5, "label":"6"}, - {"x":10.25, "y":1.5, "r":-14, "rx":13.25, "ry":2.5, "label":"7"}, - {"x":11.25, "y":1.375, "r":-14, "rx":13.25, "ry":2.5, "label":"8"}, - {"x":12.25, "y":1.5, "r":-14, "rx":13.25, "ry":2.5, "label":"9"}, - {"x":13.25, "y":1.5, "label":"0"}, - {"x":14.25, "y":1.5, "label":"Dash"}, - {"x":15.25, "y":1.5, "label":"Equals"}, - {"x":16.25, "y":1.5, "label":"Backspace"}, - {"x":17.25, "y":1.5, "label":"Split BS"}, - {"x":19.5, "y":1.5, "label":"NumLock"}, - {"x":20.5, "y":1.5, "label":"P-Div"}, - {"x":21.5, "y":1.5, "label":"P-Mult"}, - {"x":22.5, "y":1.5, "label":"Pause"}, - {"x":1.25, "y":2.5, "w":1.5, "label":"Tab"}, - {"x":2.75, "y":2.5, "label":"Q"}, - {"x":4, "y":2.5, "r":14, "rx":4, "ry":2.5, "label":"W"}, - {"x":5, "y":2.375, "r":14, "rx":4, "ry":2.5, "label":"E"}, - {"x":6, "y":2.5, "r":14, "rx":4, "ry":2.5, "label":"R"}, - {"x":7, "y":2.625, "r":14, "rx":4, "ry":2.5, "label":"T"}, - {"x":9.25, "y":2.625, "r":-14, "rx":13.25, "ry":2.5, "label":"Y"}, - {"x":10.25, "y":2.5, "r":-14, "rx":13.25, "ry":2.5, "label":"U"}, - {"x":11.25, "y":2.375, "r":-14, "rx":13.25, "ry":2.5, "label":"I"}, - {"x":12.25, "y":2.5, "r":-14, "rx":13.25, "ry":2.5, "label":"O"}, - {"x":13.5, "y":2.5, "label":"P"}, - {"x":14.5, "y":2.5, "label":"L bracket"}, - {"x":15.5, "y":2.5, "label":"R bracket"}, - {"x":16.5, "y":2.5, "w":1.5, "label":"ANSI Backslash"}, - {"x":19.5, "y":2.5, "label":"P-7"}, - {"x":20.5, "y":2.5, "label":"P-8"}, - {"x":21.5, "y":2.5, "label":"P-9"}, - {"x":22.5, "y":2.5, "label":"P-Minus"}, - {"x":0.75, "y":3.5, "w":1.75, "label":"Caps Lock"}, - {"x":2.5, "y":3.5, "label":"A"}, - {"x":4, "y":3.5, "r":14, "rx":4, "ry":2.5, "label":"S"}, - {"x":5, "y":3.375, "r":14, "rx":4, "ry":2.5, "label":"D"}, - {"x":6, "y":3.5, "r":14, "rx":4, "ry":2.5, "label":"F"}, - {"x":7, "y":3.625, "r":14, "rx":4, "ry":2.5, "label":"G"}, - {"x":9.25, "y":3.625, "r":-14, "rx":13.25, "ry":2.5, "label":"H"}, - {"x":10.25, "y":3.5, "r":-14, "rx":13.25, "ry":2.5, "label":"J"}, - {"x":11.25, "y":3.375, "r":-14, "rx":13.25, "ry":2.5, "label":"K"}, - {"x":12.25, "y":3.5, "r":-14, "rx":13.25, "ry":2.5, "label":"L"}, - {"x":13.75, "y":3.5, "label":"Semicolon"}, - {"x":14.75, "y":3.5, "label":"Quote"}, - {"x":15.75, "y":3.5, "label":"Non-US Hash"}, - {"x":16.75, "y":3.5, "w":1.25, "label":"Enter"}, - {"x":19.5, "y":3.5, "label":"P-4"}, - {"x":20.5, "y":3.5, "label":"P-5"}, - {"x":21.5, "y":3.5, "label":"P-6"}, - {"x":22.5, "y":3.5, "label":"P-Plus"}, - {"x":0, "y":4.5, "w":1.25, "label":"Left Shift"}, - {"x":1.25, "y":4.5, "label":"Non-US Backslash"}, - {"x":2.25, "y":4.5, "label":"Z"}, - {"x":4, "y":4.5, "r":14, "rx":4, "ry":2.5, "label":"X"}, - {"x":5, "y":4.375, "r":14, "rx":4, "ry":2.5, "label":"C"}, - {"x":6, "y":4.5, "r":14, "rx":4, "ry":2.5, "label":"V"}, - {"x":7, "y":4.625, "r":14, "rx":4, "ry":2.5, "label":"B"}, - {"x":8, "y":4.625, "r":14, "rx":4, "ry":2.5, "label":"Layer"}, - {"x":8.25, "y":4.625, "r":-14, "rx":13.25, "ry":2.5, "label":"Layer"}, - {"x":9.25, "y":4.625, "r":-14, "rx":13.25, "ry":2.5, "label":"N"}, - {"x":10.25, "y":4.5, "r":-14, "rx":13.25, "ry":2.5, "label":"M"}, - {"x":11.25, "y":4.375, "r":-14, "rx":13.25, "ry":2.5, "label":"Comma"}, - {"x":12.25, "y":4.5, "r":-14, "rx":13.25, "ry":2.5, "label":"Period"}, - {"x":14, "y":4.5, "label":"Slash"}, - {"x":15, "y":4.5, "label":"JIS Backslash"}, - {"x":16, "y":4.5, "w":1.25, "label":"Right Shift"}, - {"x":17.25, "y":4.5, "label":"Up"}, - {"x":19.5, "y":4.5, "label":"P-1"}, - {"x":20.5, "y":4.5, "label":"P-2"}, - {"x":21.5, "y":4.5, "label":"P-3"}, - {"x":22.5, "y":4.5, "label":"P-Enter"}, - {"x":0.5, "y":5.5, "w":1.25, "label":"Left Ctrl"}, - {"x":1.75, "y":5.5, "w":1.25, "label":"Left GUI"}, - {"x":4.5, "y":5.5, "w":1.25, "r":14, "rx":4, "ry":2.5, "label":"Left Alt"}, - {"x":5.75, "y":5.5, "w":1.25, "r":14, "rx":4, "ry":2.5, "label":"Menu"}, - {"x":7, "y":5.625, "w":2, "r":14, "rx":4, "ry":2.5, "label":"Space"}, - {"x":8.25, "y":5.625, "w":2.75, "r":-14, "rx":13.25, "ry":2.5, "label":"Space"}, - {"x":11, "y":5.5, "w":1.25, "r":-14, "rx":13.25, "ry":2.5, "label":"Right Alt"}, - {"x":13.75, "y":5.5, "w":1.25, "label":"Right GUI"}, - {"x":15, "y":5.5, "w":1.25, "label":"Right Ctrl"}, - {"x":16.25, "y":5.5, "label":"Left"}, - {"x":17.25, "y":5.5, "label":"Down"}, - {"x":18.25, "y":5.5, "label":"Right"}, - {"x":19.5, "y":5.5, "label":"P-0"}, - {"x":20.5, "y":5.5, "label":"P-00"}, - {"x":21.5, "y":5.5, "label":"P-Decimal"}, - {"x":22.5, "y":5.5, "label":"P-Enter"} + {"x":0.75, "y":0.25, "label":"Esc"}, + {"x":2.25, "y":0.25, "label":"F1"}, + {"x":3.25, "y":0.25, "label":"F2"}, + {"x":4.25, "y":0.25, "r":14, "rx":4, "ry":2.5, "label":"F3"}, + {"x":5.25, "y":0.125, "r":14, "rx":4, "ry":2.5, "label":"F4"}, + {"x":6.25, "y":0.25, "r":14, "rx":4, "ry":2.5, "label":"F5"}, + {"x":7.25, "y":0.375, "r":14, "rx":4, "ry":2.5, "label":"F6"}, + {"x":10.25, "y":0.375, "r":-14, "rx":13.25, "ry":2.5, "label":"F7"}, + {"x":11.25, "y":0.25, "r":-14, "rx":13.25, "ry":2.5, "label":"F8"}, + {"x":12.25, "y":0.125, "r":-14, "rx":13.25, "ry":2.5, "label":"F9"}, + {"x":13.25, "y":0.25, "r":-14, "rx":13.25, "ry":2.5, "label":"F10"}, + {"x":14.25, "y":0.25, "label":"F11"}, + {"x":15.25, "y":0.25, "label":"F12"}, + {"x":16.375, "y":0.25, "label":"Print"}, + {"x":17.375, "y":0.25, "label":"Scroll"}, + {"x":18.5, "y":0.25, "label":"Ins"}, + {"x":19.5, "y":0.25, "label":"Del"}, + {"x":20.75, "y":0.25, "label":"Home"}, + {"x":21.75, "y":0.25, "label":"End"}, + {"x":22.75, "y":0.25, "label":"PgUp"}, + {"x":23.75, "y":0.25, "label":"PgDn"}, + {"x":2, "y":1.5, "label":"Grave"}, + {"x":3, "y":1.5, "label":"1"}, + {"x":4.25, "y":1.5, "r":14, "rx":4, "ry":2.5, "label":"2"}, + {"x":5.25, "y":1.375, "r":14, "rx":4, "ry":2.5, "label":"3"}, + {"x":6.25, "y":1.5, "r":14, "rx":4, "ry":2.5, "label":"4"}, + {"x":7.25, "y":1.625, "r":14, "rx":4, "ry":2.5, "label":"5"}, + {"x":10.25, "y":1.625, "r":-14, "rx":13.25, "ry":2.5, "label":"6"}, + {"x":11.25, "y":1.5, "r":-14, "rx":13.25, "ry":2.5, "label":"7"}, + {"x":12.25, "y":1.375, "r":-14, "rx":13.25, "ry":2.5, "label":"8"}, + {"x":13.25, "y":1.5, "r":-14, "rx":13.25, "ry":2.5, "label":"9"}, + {"x":14.5, "y":1.5, "label":"0"}, + {"x":15.5, "y":1.5, "label":"Dash"}, + {"x":16.5, "y":1.5, "label":"Equals"}, + {"x":17.5, "y":1.5, "label":"Backspace"}, + {"x":18.5, "y":1.5, "label":"Split BS"}, + {"x":20.75, "y":1.5, "label":"NumLock"}, + {"x":21.75, "y":1.5, "label":"P-Div"}, + {"x":22.75, "y":1.5, "label":"P-Mult"}, + {"x":23.75, "y":1.5, "label":"Pause"}, + {"x":1.25, "y":2.5, "w":1.5, "label":"Tab"}, + {"x":2.75, "y":2.5, "label":"Q"}, + {"x":4.25, "y":2.5, "r":14, "rx":4, "ry":2.5, "label":"W"}, + {"x":5.25, "y":2.375, "r":14, "rx":4, "ry":2.5, "label":"E"}, + {"x":6.25, "y":2.5, "r":14, "rx":4, "ry":2.5, "label":"R"}, + {"x":7.25, "y":2.625, "r":14, "rx":4, "ry":2.5, "label":"T"}, + {"x":10.25, "y":2.625, "r":-14, "rx":13.25, "ry":2.5, "label":"y"}, + {"x":11.25, "y":2.5, "r":-14, "rx":13.25, "ry":2.5, "label":"U"}, + {"x":12.25, "y":2.375, "r":-14, "rx":13.25, "ry":2.5, "label":"I"}, + {"x":13.25, "y":2.5, "r":-14, "rx":13.25, "ry":2.5, "label":"O"}, + {"x":14.75, "y":2.5, "label":"P"}, + {"x":15.75, "y":2.5, "label":"L bracket"}, + {"x":16.75, "y":2.5, "label":"R bracket"}, + {"x":17.75, "y":2.5, "w":1.5, "label":"ANSI Backslash"}, + {"x":20.75, "y":2.5, "label":"P-7"}, + {"x":21.75, "y":2.5, "label":"P-8"}, + {"x":22.75, "y":2.5, "label":"P-9"}, + {"x":23.75, "y":2.5, "label":"P-Minus"}, + {"x":0.75, "y":3.5, "w":1.75, "label":"Caps Lock"}, + {"x":2.5, "y":3.5, "label":"A"}, + {"x":4.25, "y":3.5, "r":14, "rx":4, "ry":2.5, "label":"S"}, + {"x":5.25, "y":3.375, "r":14, "rx":4, "ry":2.5, "label":"D"}, + {"x":6.25, "y":3.5, "r":14, "rx":4, "ry":2.5, "label":"F"}, + {"x":7.25, "y":3.625, "r":14, "rx":4, "ry":2.5, "label":"G"}, + {"x":10.25, "y":3.625, "r":-14, "rx":13.25, "ry":2.5, "label":"H"}, + {"x":11.25, "y":3.5, "r":-14, "rx":13.25, "ry":2.5, "label":"J"}, + {"x":12.25, "y":3.375, "r":-14, "rx":13.25, "ry":2.5, "label":"K"}, + {"x":13.25, "y":3.5, "r":-14, "rx":13.25, "ry":2.5, "label":"L"}, + {"x":15, "y":3.5, "label":"Semicolon"}, + {"x":16, "y":3.5, "label":"Quote"}, + {"x":17, "y":3.5, "label":"Non-US Hash"}, + {"x":18, "y":3.5, "w":1.25, "label":"Enter"}, + {"x":20.75, "y":3.5, "label":"P-4"}, + {"x":21.75, "y":3.5, "label":"P-5"}, + {"x":22.75, "y":3.5, "label":"P-6"}, + {"x":23.75, "y":3.5, "label":"P-Plus"}, + {"x":0, "y":4.5, "w":1.25, "label":"Left Shift"}, + {"x":1.25, "y":4.5, "label":"Non-US Backslash"}, + {"x":2.25, "y":4.5, "label":"Z"}, + {"x":4.25, "y":4.5, "r":14, "rx":4, "ry":2.5, "label":"X"}, + {"x":5.25, "y":4.375, "r":14, "rx":4, "ry":2.5, "label":"C"}, + {"x":6.25, "y":4.5, "r":14, "rx":4, "ry":2.5, "label":"V"}, + {"x":7.25, "y":4.625, "r":14, "rx":4, "ry":2.5, "label":"B"}, + {"x":8.25, "y":4.625, "r":14, "rx":4, "ry":2.5, "label":"Layer"}, + {"x":9.25, "y":4.625, "r":-14, "rx":13.25, "ry":2.5, "label":"Layer"}, + {"x":10.25, "y":4.625, "r":-14, "rx":13.25, "ry":2.5, "label":"N"}, + {"x":11.25, "y":4.5, "r":-14, "rx":13.25, "ry":2.5, "label":"M"}, + {"x":12.25, "y":4.375, "r":-14, "rx":13.25, "ry":2.5, "label":"Comma"}, + {"x":13.25, "y":4.5, "r":-14, "rx":13.25, "ry":2.5, "label":"Period"}, + {"x":15.25, "y":4.5, "label":"Slash"}, + {"x":16.25, "y":4.5, "label":"JIS Backslash"}, + {"x":17.25, "y":4.5, "w":1.25, "label":"Right Shift"}, + {"x":18.5, "y":4.5, "label":"Up"}, + {"x":20.75, "y":4.5, "label":"P-1"}, + {"x":21.75, "y":4.5, "label":"P-2"}, + {"x":22.75, "y":4.5, "label":"P-3"}, + {"x":23.75, "y":4.5, "label":"P-Enter"}, + {"x":0.5, "y":5.5, "w":1.25, "label":"Left Ctrl"}, + {"x":1.75, "y":5.5, "w":1.25, "label":"Left GUI"}, + {"x":4.75, "y":5.5, "w":1.25, "r":14, "rx":4, "ry":2.5, "label":"Left Alt"}, + {"x":6, "y":5.5, "w":1.25, "r":14, "rx":4, "ry":2.5, "label":"Menu"}, + {"x":7.25, "y":5.625, "w":2, "r":14, "rx":4, "ry":2.5, "label":"Space"}, + {"x":9.25, "y":5.625, "w":2.75, "r":-14, "rx":13.25, "ry":2.5, "label":"Space"}, + {"x":12, "y":5.5, "w":1.25, "r":-14, "rx":13.25, "ry":2.5, "label":"Right Alt"}, + {"x":15, "y":5.5, "w":1.25, "label":"Right GUI"}, + {"x":16.25, "y":5.5, "w":1.25, "label":"Right Ctrl"}, + {"x":17.5, "y":5.5, "label":"Left"}, + {"x":18.5, "y":5.5, "label":"Down"}, + {"x":19.5, "y":5.5, "label":"Right"}, + {"x":20.75, "y":5.5, "label":"P-0"}, + {"x":21.75, "y":5.5, "label":"P-00"}, + {"x":22.75, "y":5.5, "label":"P-Decimal"}, + {"x":23.75, "y":5.5, "label":"P-Enter"} ] } } diff --git a/keyboards/nopunin10did/jabberwocky/keymaps/nopunin10did/keymap.c b/keyboards/nopunin10did/jabberwocky/keymaps/nopunin10did/keymap.c index 970cfb30fb49..0a177dec166e 100644 --- a/keyboards/nopunin10did/jabberwocky/keymaps/nopunin10did/keymap.c +++ b/keyboards/nopunin10did/jabberwocky/keymaps/nopunin10did/keymap.c @@ -25,6 +25,7 @@ #define FN_CALC LT(1,KC_CALC) #define FN_MENU LT(1,KC_MENU) #define FN_PENT LT(1,KC_PENT) +#define CTALDEL LCA(KC_DEL) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { @@ -43,6 +44,6 @@ RESET ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, KC_NLCK,XXXXXXX,XXXXXXX,XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,RESET ,XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,KC_JYEN, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, KC_CAPS,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX,KC_SLCK,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, -LSHNUBS,LSHNUBS,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,KC_BRK ,XXXXXXX,_______,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,RSHF_RO,RSHF_RO,XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX,_______, +LSHNUBS,LSHNUBS,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,KC_BRK ,CTALDEL,_______,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,RSHF_RO,RSHF_RO,XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX,_______, _______,_______, _______,_______,XXXXXXX, _______, _______, _______,_______,XXXXXXX,XXXXXXX,XXXXXXX, XXXXXXX,XXXXXXX,KC_PCMM,_______) }; diff --git a/keyboards/nopunin10did/jabberwocky/keymaps/nopunin10did/rules.mk b/keyboards/nopunin10did/jabberwocky/keymaps/nopunin10did/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/nopunin10did/jabberwocky/keymaps/nopunin10did/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/nopunin10did/jabberwocky/readme.md b/keyboards/nopunin10did/jabberwocky/readme.md index 21642490217e..d3557be61d25 100644 --- a/keyboards/nopunin10did/jabberwocky/readme.md +++ b/keyboards/nopunin10did/jabberwocky/readme.md @@ -2,7 +2,7 @@ ![Jabberwocky](https://diplomacyvariants.files.wordpress.com/2021/03/dexterous_jabberwocky.jpg) -A full-size, columnar-staggered, Alice-style keyboard. The Jabberwocky comes in two varieties currently: +A full-size, columnar-staggered, Alice-style keyboard. The Jabberwocky comes in two varieties currently: * Dexterous (with numpad on the right side, pictured above) * Sinister (with numpad on the left side) @@ -10,15 +10,16 @@ Both the Dexterous and Sinister use the same firmware. The numpad and the four For more information, join the [NoPunIn10Key Discord](https://discord.gg/sku2Y6w). -* Keyboard Maintainer: [Alex Ronke](diplomacyvariants.wordpress.com), also known as NoPunIn10Did. +* Keyboard Maintainer: [Alex Ronke](https://nopunin10did.com/), also known as NoPunIn10Did. * Hardware Supported: Dexterous Jabberwocky and Sinister Jabberwocky (2021 March) * Hardware Availability: Currently by request only -To jump the bootloader, either: -# If loaded with the default layout, use Function-Escape or Function-R *(the function buttons are the 1u keys next to B and N)* **OR** -# Use the physical reset switch near the USB port *(if provided for your version of the board)* **OR** -# Use the physical reset switch on the Elite C **OR** -# Briefly jump the Reset and Ground pins of the Elite C +To reset the board into bootloader mode, do one of the following: + +* If loaded with the default layout, use Function-Escape or Function-R *(the function buttons are the 1u keys next to B and N)* +* Use the physical reset switch near the USB port *(if provided for your version of the board)* +* Use the physical reset switch on the Elite C +* Briefly jump the Reset and Ground pins of the Elite C Make example for this keyboard (after setting up your build environment): diff --git a/keyboards/nopunin10did/jabberwocky/rules.mk b/keyboards/nopunin10did/jabberwocky/rules.mk index 89f2be85b95c..ef61685f7c09 100644 --- a/keyboards/nopunin10did/jabberwocky/rules.mk +++ b/keyboards/nopunin10did/jabberwocky/rules.mk @@ -1,22 +1,19 @@ # MCU name MCU = atmega32u4 -# Bootloader +# Bootloader selection BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/nopunin10did/railroad/rev0/info.json b/keyboards/nopunin10did/railroad/rev0/info.json index 2a07d4a295e8..3339b3f321db 100644 --- a/keyboards/nopunin10did/railroad/rev0/info.json +++ b/keyboards/nopunin10did/railroad/rev0/info.json @@ -2,8 +2,6 @@ "keyboard_name": "The Railroad", "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/nopunin10did/railroad", "maintainer": "NoPunIn10Did", - "width": 23.5, - "height": 5.25, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/nopunin10did/railroad/rev0/rules.mk b/keyboards/nopunin10did/railroad/rev0/rules.mk index 54bb17ad2651..ef61685f7c09 100644 --- a/keyboards/nopunin10did/railroad/rev0/rules.mk +++ b/keyboards/nopunin10did/railroad/rev0/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/novelpad/config.h b/keyboards/novelpad/config.h index fdee941f10ca..a7947220ffa5 100755 --- a/keyboards/novelpad/config.h +++ b/keyboards/novelpad/config.h @@ -121,59 +121,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -192,26 +139,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/novelpad/info.json b/keyboards/novelpad/info.json index 4bd648754b39..ed4a31236d6a 100644 --- a/keyboards/novelpad/info.json +++ b/keyboards/novelpad/info.json @@ -2,8 +2,6 @@ "keyboard_name": "NovelPad", "url": "", "maintainer": "qmk", - "width": 4, - "height": 5, "layouts": { "LAYOUT_ortho_5x4": { "layout": [ diff --git a/keyboards/novelpad/rules.mk b/keyboards/novelpad/rules.mk index ea58b3da060d..bc3c7202aab9 100755 --- a/keyboards/novelpad/rules.mk +++ b/keyboards/novelpad/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u2 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # 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 = no # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # In-switch LEDs AUDIO_ENABLE = no # There is no available timer or pin for audio on the NovelPad diff --git a/keyboards/noxary/220/config.h b/keyboards/noxary/220/config.h index 78da8ccbce4e..522d1beca855 100644 --- a/keyboards/noxary/220/config.h +++ b/keyboards/noxary/220/config.h @@ -94,59 +94,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -165,26 +112,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/noxary/220/info.json b/keyboards/noxary/220/info.json index 252c824aa8e4..6528c160c247 100644 --- a/keyboards/noxary/220/info.json +++ b/keyboards/noxary/220/info.json @@ -2,11 +2,9 @@ "keyboard_name": "Noxary 220", "url": "", "maintainer": "qmk", - "width": 4, - "height": 6.5, "layouts": { "LAYOUT_ortho_6x4": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":0, "y":2.5}, {"x":1, "y":2.5}, {"x":2, "y":2.5}, {"x":3, "y":2.5}, {"x":0, "y":3.5}, {"x":1, "y":3.5}, {"x":2, "y":3.5}, {"x":3, "y":3.5}, {"x":0, "y":4.5}, {"x":1, "y":4.5}, {"x":2, "y":4.5}, {"x":3, "y":4.5}, {"x":0, "y":5.5}, {"x":1, "y":5.5}, {"x":2, "y":5.5}, {"x":3, "y":5.5}] } } -} \ No newline at end of file +} diff --git a/keyboards/noxary/220/rules.mk b/keyboards/noxary/220/rules.mk index ec619bce8ccd..28d44e68d814 100644 --- a/keyboards/noxary/220/rules.mk +++ b/keyboards/noxary/220/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u2 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = ortho_6x4 diff --git a/keyboards/noxary/260/config.h b/keyboards/noxary/260/config.h index b447dec69fa6..2a9ac07bdb44 100644 --- a/keyboards/noxary/260/config.h +++ b/keyboards/noxary/260/config.h @@ -127,59 +127,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -198,26 +145,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/noxary/260/info.json b/keyboards/noxary/260/info.json index c8df665c0f76..c744bc3ec97f 100644 --- a/keyboards/noxary/260/info.json +++ b/keyboards/noxary/260/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Noxary 260", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"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}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2}, {"x":13.75, "y":2, "w":1.25}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}] @@ -25,4 +23,4 @@ "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"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}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.5}, {"x":1.5, "y":4}, {"x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"x":11, "y":4, "w":1.5}, {"x":12.5, "y":4}, {"x":13.5, "y":4, "w":1.5}] } } -} \ No newline at end of file +} diff --git a/keyboards/noxary/260/rules.mk b/keyboards/noxary/260/rules.mk index eaf2419bb4dd..285e65c53a7f 100644 --- a/keyboards/noxary/260/rules.mk +++ b/keyboards/noxary/260/rules.mk @@ -2,33 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 -EXTRAFLAGS += -flto +AUDIO_ENABLE = no # Audio output +LTO_ENABLE = yes LAYOUTS = 60_ansi 60_iso 60_hhkb 60_tsangan_hhkb diff --git a/keyboards/noxary/268/info.json b/keyboards/noxary/268/info.json index 9e9cade62f27..5e57545349eb 100644 --- a/keyboards/noxary/268/info.json +++ b/keyboards/noxary/268/info.json @@ -2,19 +2,14 @@ "keyboard_name": "Noxary 268", "url": "https://www.instagram.com/noxaryco/", "maintainer": "QMK Community", - "width": 16, - "height": 5, "layouts": { "LAYOUT_all": { - "key_count": 72, "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"1", "x":1, "y":0}, {"label":"2", "x":2, "y":0}, {"label":"3", "x":3, "y":0}, {"label":"4", "x":4, "y":0}, {"label":"5", "x":5, "y":0}, {"label":"6", "x":6, "y":0}, {"label":"7", "x":7, "y":0}, {"label":"8", "x":8, "y":0}, {"label":"9", "x":9, "y":0}, {"label":"0", "x":10, "y":0}, {"label":"- _", "x":11, "y":0}, {"label":"= +", "x":12, "y":0}, {"label":"Back Space", "x":13, "y":0}, {"label":"Back Space", "x":14, "y":0}, {"label":"` ~", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"[ {", "x":11.5, "y":1}, {"label":"] }", "x":12.5, "y":1}, {"label":"\\ |", "x":13.5, "y":1, "w":1.5}, {"label":"Delete", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":"; :", "x":10.75, "y":2}, {"label":"' \"", "x":11.75, "y":2}, {"label":"# ~", "x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.25}, {"label":"Page Up", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"label":"\\ |", "x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":", <", "x":9.25, "y":3}, {"label":". >", "x":10.25, "y":3}, {"label":"/ ?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3}, {"label":"Shift", "x":13.25, "y":3, "w":0.75}, {"label":"Up", "x":14, "y":3}, {"label":"Page Down", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"GUI", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4}, {"label":"Fn", "x":11, "y":4}, {"label":"Ctrl", "x":12, "y":4}, {"label":"Left", "x":13, "y":4}, {"label":"Down", "x":14, "y":4}, {"label":"Right", "x":15, "y":4}] }, "LAYOUT_iso": { - "key_count": 68, "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"\"", "x":2, "y":0}, {"label":"£", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"~", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"Delete", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"@", "x":11.75, "y":2}, {"label":"~", "x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, {"label":"PgUp", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"label":"|", "x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"label":"PgDn", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"GUI", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Fn", "x":11.25, "y":4, "w":1.25}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}] }, "LAYOUT_ansi": { - "key_count": 67, "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"~", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Delete", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"PgUp", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"label":"PgDn", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"GUI", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Fn", "x":11.25, "y":4, "w":1.25}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}] } } diff --git a/keyboards/noxary/268/keymaps/ansi/keymap.c b/keyboards/noxary/268/keymaps/ansi/keymap.c index ffe376b4e86d..b9b0db24786f 100644 --- a/keyboards/noxary/268/keymaps/ansi/keymap.c +++ b/keyboards/noxary/268/keymaps/ansi/keymap.c @@ -52,49 +52,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; - -void matrix_init_user(void) { -} - -void matrix_scan_user(void) { -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - void led_set_user(uint8_t usb_led) { - - if (usb_led & (1 << USB_LED_NUM_LOCK)) { - - } else { - - } - if (usb_led & (1 << USB_LED_CAPS_LOCK)) { - DDRB |= (1 << 6); - PORTB |= (1 << 6); + setPinOutput(B6); + writePinHigh(B6); } else { - DDRB &= ~(1 << 6); - PORTB &= ~(1 << 6); + setPinInput(B6); + writePinLow(B6); } - - if (usb_led & (1 << USB_LED_SCROLL_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_COMPOSE)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_KANA)) { - - } else { - - } - } diff --git a/keyboards/noxary/268/keymaps/default/keymap.c b/keyboards/noxary/268/keymaps/default/keymap.c index a76509db8b18..f4e8e5db4a2b 100644 --- a/keyboards/noxary/268/keymaps/default/keymap.c +++ b/keyboards/noxary/268/keymaps/default/keymap.c @@ -70,52 +70,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; - -void matrix_init_user(void) { -} - -void matrix_scan_user(void) { -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - void led_set_user(uint8_t usb_led) { - - if (usb_led & (1 << USB_LED_NUM_LOCK)) { - - } - else { - - } - if (usb_led & (1 << USB_LED_CAPS_LOCK)) { - DDRB |= (1 << 6); PORTB |= (1 << 6); + setPinOutput(B6); + writePinHigh(B6); } else { - DDRB &= ~(1 << 6); PORTB &= ~(1 << 6); - } - - if (usb_led & (1 << USB_LED_SCROLL_LOCK)) { - + setPinInput(B6); + writePinLow(B6); } - else { - - } - - if (usb_led & (1 << USB_LED_COMPOSE)) { - - } - else { - - } - - if (usb_led & (1 << USB_LED_KANA)) { - - } - else { - - } - } diff --git a/keyboards/noxary/268/keymaps/iso/keymap.c b/keyboards/noxary/268/keymaps/iso/keymap.c index 3d9ca2352f84..d190845360b8 100644 --- a/keyboards/noxary/268/keymaps/iso/keymap.c +++ b/keyboards/noxary/268/keymaps/iso/keymap.c @@ -52,49 +52,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; - -void matrix_init_user(void) { -} - -void matrix_scan_user(void) { -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - void led_set_user(uint8_t usb_led) { - - if (usb_led & (1 << USB_LED_NUM_LOCK)) { - - } else { - - } - if (usb_led & (1 << USB_LED_CAPS_LOCK)) { - DDRB |= (1 << 6); - PORTB |= (1 << 6); + setPinOutput(B6); + writePinHigh(B6); } else { - DDRB &= ~(1 << 6); - PORTB &= ~(1 << 6); + setPinInput(B6); + writePinLow(B6); } - - if (usb_led & (1 << USB_LED_SCROLL_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_COMPOSE)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_KANA)) { - - } else { - - } - } diff --git a/keyboards/noxary/268/rules.mk b/keyboards/noxary/268/rules.mk index 38d215225f66..b104ef80142b 100644 --- a/keyboards/noxary/268/rules.mk +++ b/keyboards/noxary/268/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/noxary/268_2/config.h b/keyboards/noxary/268_2/config.h index 960977fa0b68..c8fbdd3bf4e0 100644 --- a/keyboards/noxary/268_2/config.h +++ b/keyboards/noxary/268_2/config.h @@ -95,59 +95,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -166,26 +113,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/noxary/268_2/info.json b/keyboards/noxary/268_2/info.json index cef0f302ce66..a84442dbc172 100644 --- a/keyboards/noxary/268_2/info.json +++ b/keyboards/noxary/268_2/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Noxary 268.2", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_ansi_blocker": { "layout": [ diff --git a/keyboards/noxary/268_2/rules.mk b/keyboards/noxary/268_2/rules.mk index 0d8d93022709..99ae0f399b20 100644 --- a/keyboards/noxary/268_2/rules.mk +++ b/keyboards/noxary/268_2/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = 65_ansi_blocker diff --git a/keyboards/noxary/268_2_rgb/info.json b/keyboards/noxary/268_2_rgb/info.json index ac63e23a1893..a73302528f87 100644 --- a/keyboards/noxary/268_2_rgb/info.json +++ b/keyboards/noxary/268_2_rgb/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Noxary 268.2 RGB", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_ansi_blocker": { "layout": [ @@ -291,4 +289,3 @@ } } } - \ No newline at end of file diff --git a/keyboards/noxary/268_2_rgb/rules.mk b/keyboards/noxary/268_2_rgb/rules.mk index 62796a3999b1..07e72a97d3d5 100644 --- a/keyboards/noxary/268_2_rgb/rules.mk +++ b/keyboards/noxary/268_2_rgb/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/noxary/280/config.h b/keyboards/noxary/280/config.h index 53a6e5733a84..15de70285972 100644 --- a/keyboards/noxary/280/config.h +++ b/keyboards/noxary/280/config.h @@ -94,59 +94,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -165,26 +112,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/noxary/280/info.json b/keyboards/noxary/280/info.json index f75d276564d4..e1c87b654536 100644 --- a/keyboards/noxary/280/info.json +++ b/keyboards/noxary/280/info.json @@ -2,11 +2,9 @@ "keyboard_name": "Noxary 280", "url": "", "maintainer": "qmk", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5}, {"x":14, "y":1.5}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":13.75, "y":3.5, "w":1.25}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":1.75}, {"x":14, "y":4.5}, {"x":16.25, "y":4.5}, {"x":0, "y":5.5, "w":1.25}, {"x":1.25, "y":5.5, "w":1.25}, {"x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"x":10, "y":5.5, "w":1.25}, {"x":11.25, "y":5.5, "w":1.25}, {"x":12.5, "y":5.5, "w":1.25}, {"x":13.75, "y":5.5, "w":1.25}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}] } } -} \ No newline at end of file +} diff --git a/keyboards/noxary/280/rules.mk b/keyboards/noxary/280/rules.mk index ae01db836a16..b104ef80142b 100644 --- a/keyboards/noxary/280/rules.mk +++ b/keyboards/noxary/280/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/noxary/378/378.c b/keyboards/noxary/378/378.c new file mode 100644 index 000000000000..10835509e3e1 --- /dev/null +++ b/keyboards/noxary/378/378.c @@ -0,0 +1,18 @@ +/* +Copyright 2015 Álvaro "Gondolindrim" Volpato + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "378.h" diff --git a/keyboards/noxary/378/378.h b/keyboards/noxary/378/378.h new file mode 100644 index 000000000000..55158f3695cf --- /dev/null +++ b/keyboards/noxary/378/378.h @@ -0,0 +1,36 @@ +/* +Copyright 2015 Álvaro "Gondolindrim" Volpato + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +#define ___ KC_NO + +#define LAYOUT_all( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, K1G, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K2G, \ + 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, K3G, \ + K40, K41, K42, K43, K44, K48, 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, K2E, K2F, K2G }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, ___, K3G }, \ + { K40, K41, K42, K43, K44, ___, ___, ___, K48, ___, ___, ___, K4C, ___, K4E, K4F, K4G } \ +} diff --git a/keyboards/noxary/378/chconf.h b/keyboards/noxary/378/chconf.h new file mode 100644 index 000000000000..06279fc3872d --- /dev/null +++ b/keyboards/noxary/378/chconf.h @@ -0,0 +1,30 @@ +/* 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/acheron/arctic/chconf.h -r platforms/chibios/common/configs/chconf.h` + */ + +#pragma once + +#define CH_CFG_ST_FREQUENCY 10000 + +#define CH_CFG_OPTIMIZE_SPEED FALSE + +#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE + +#include_next diff --git a/keyboards/noxary/378/config.h b/keyboards/noxary/378/config.h new file mode 100644 index 000000000000..a159af02fd36 --- /dev/null +++ b/keyboards/noxary/378/config.h @@ -0,0 +1,71 @@ +/* +Copyright 2015 Álvaro "Gondolindrim" Volpato + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4E58 //"NX" +#define PRODUCT_ID 0x017A // 378 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Noxary +#define PRODUCT Noxary 378 + + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 17 + +#define MATRIX_COL_PINS { A7 , A3 , B9 , B8 , B7 , B6 , B5 , B4 , B3 , A15, A2 , A1 , A0 , F1 , F0 , C14 , C15 } +#define MATRIX_ROW_PINS { A10, B11, A4 , A5 , A6 } +#define DIODE_DIRECTION COL2ROW + +//#define BACKLIGHT_PIN A6 +//#define BACKLIGHT_PWM_DRIVER PWMD3 +//#define BACKLIGHT_PWM_CHANNEL 1 +//#define BACKLIGHT_PAL_MODE 1 +//#define BACKLIGHT_LEVELS 6 +//#define BACKLIGHT_BREATHING +//#define BREATHING_PERIOD 6 + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* 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 + +/* + * 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/noxary/378/info.json b/keyboards/noxary/378/info.json new file mode 100644 index 000000000000..ef165262a560 --- /dev/null +++ b/keyboards/noxary/378/info.json @@ -0,0 +1,92 @@ +{ + "keyboard_name": "Noxary 378", + "url": "", + "maintainer": "Gondolindrim", + "layouts": { + "LAYOUT_all": { + "layout": [ + { "label": "F1", "x": 0, "y": 0 }, + { "label": "F6", "x": 1, "y": 0 }, + { "label": "Esc", "x": 2.25, "y": 0 }, + { "label": "1!", "x": 3.25, "y": 0 }, + { "label": "2@", "x": 4.25, "y": 0 }, + { "label": "3#", "x": 5.25, "y": 0 }, + { "label": "4$", "x": 6.25, "y": 0 }, + { "label": "5%", "x": 7.25, "y": 0 }, + { "label": "6^", "x": 8.25, "y": 0 }, + { "label": "7&", "x": 9.25, "y": 0 }, + { "label": "8*", "x": 10.25, "y": 0 }, + { "label": "9(", "x": 11.25, "y": 0 }, + { "label": "0)", "x": 12.25, "y": 0 }, + { "label": "-_", "x": 13.25, "y": 0 }, + { "label": "=+", "x": 14.25, "y": 0 }, + { "label": "Backspace", "x": 15.25, "y": 0 }, + { "label": "Backspace", "x": 16.25, "y": 0 }, + { "label": "Print Screen", "x": 17.25, "y": 0 }, + + { "label": "F2", "x": 0, "y": 1 }, + { "label": "F7", "x": 1, "y": 1 }, + { "label": "Tab", "x": 2.25, "y": 1, "w": 1.5 }, + { "label": "Q", "x": 3.75, "y": 1 }, + { "label": "W", "x": 4.75, "y": 1 }, + { "label": "E", "x": 5.75, "y": 1 }, + { "label": "R", "x": 6.75, "y": 1 }, + { "label": "T", "x": 7.75, "y": 1 }, + { "label": "Y", "x": 8.75, "y": 1 }, + { "label": "U", "x": 9.75, "y": 1 }, + { "label": "I", "x": 10.75, "y": 1 }, + { "label": "O", "x": 11.75, "y": 1 }, + { "label": "P", "x": 12.75, "y": 1 }, + { "label": "[{", "x": 13.75, "y": 1 }, + { "label": "]}", "x": 14.75, "y": 1 }, + { "label": "\\|", "x": 15.75, "y": 1, "w": 1.5 }, + { "label": "Delete", "x": 17.25, "y": 1 }, + + { "label": "F3", "x": 0, "y": 2 }, + { "label": "F8", "x": 1, "y": 2 }, + { "label": "Caps Lock", "x": 2.25, "y": 2, "w": 1.75 }, + { "label": "A", "x": 4, "y": 2 }, + { "label": "S", "x": 5, "y": 2 }, + { "label": "D", "x": 6, "y": 2 }, + { "label": "F", "x": 7, "y": 2 }, + { "label": "G", "x": 8, "y": 2 }, + { "label": "H", "x": 9, "y": 2 }, + { "label": "J", "x": 10, "y": 2 }, + { "label": "K", "x": 11, "y": 2 }, + { "label": "L", "x": 12, "y": 2 }, + { "label": ";:", "x": 13, "y": 2 }, + { "label": "'\"", "x": 14, "y": 2 }, + { "label": "Enter", "x": 15, "y": 2, "w": 2.25 }, + { "label": "Home", "x": 17.25, "y": 2 }, + + { "label": "F4", "x": 0, "y": 3 }, + { "label": "F9", "x": 1, "y": 3 }, + { "label": "Shift", "x": 2.25, "y": 3, "w": 2.25 }, + { "label": "Z", "x": 4.5, "y": 3 }, + { "label": "X", "x": 5.5, "y": 3 }, + { "label": "C", "x": 6.5, "y": 3 }, + { "label": "V", "x": 7.5, "y": 3 }, + { "label": "B", "x": 8.5, "y": 3 }, + { "label": "N", "x": 9.5, "y": 3 }, + { "label": "M", "x": 10.5, "y": 3 }, + { "label": "<", "x": 11.5, "y": 3 }, + { "label": ">", "x": 12.5, "y": 3 }, + { "label": "?", "x": 13.5, "y": 3 }, + { "label": "Shift", "x": 14.5, "y": 3, "w": 1.75 }, + { "label": "\u2191", "x": 16.25, "y": 3 }, + { "label": "End", "x": 17.25, "y": 3 }, + + { "label": "F5", "x": 0, "y": 4 }, + { "label": "F10", "x": 1, "y": 4 }, + { "label": "Ctrl", "x": 2.25, "y": 4, "w": 1.5 }, + { "label": "GUI", "x": 3.75, "y": 4 }, + { "label": "Alt", "x": 4.75, "y": 4, "w": 1.5 }, + { "label": "Space", "x": 6.25, "y": 4, "w": 7 }, + { "label": "Alt", "x": 13.25, "y": 4, "w": 1.5 }, + { "label": "\u2190", "x": 15.25, "y": 4 }, + { "label": "\u2193", "x": 16.25, "y": 4 }, + { "label": "\u2192", "x": 17.25, "y": 4 } + ] + } + } +} diff --git a/keyboards/noxary/378/keymaps/default/keymap.c b/keyboards/noxary/378/keymaps/default/keymap.c new file mode 100755 index 000000000000..0bd9b7390dbd --- /dev/null +++ b/keyboards/noxary/378/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +/* +Copyright 2012,2013 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_F1 , KC_F6 , KC_GESC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_BSPC, KC_PSCR, + KC_F2 , KC_F7 , KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL , + KC_F3 , KC_F8 , KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_HOME, + KC_F4 , KC_F9 , KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_END , + KC_F5 , KC_F10 , KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/keyboards/noxary/378/keymaps/via/keymap.c b/keyboards/noxary/378/keymaps/via/keymap.c new file mode 100755 index 000000000000..bcbe81690335 --- /dev/null +++ b/keyboards/noxary/378/keymaps/via/keymap.c @@ -0,0 +1,48 @@ +/* +Copyright 2012,2013 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_F1 , KC_F6 , KC_GESC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_BSPC, KC_PSCR, + KC_F2 , KC_F7 , KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL , + KC_F3 , KC_F8 , KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_HOME, + KC_F4 , KC_F9 , KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_END , + KC_F5 , KC_F10 , KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/noxary/378/keymaps/via/rules.mk b/keyboards/noxary/378/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/noxary/378/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/noxary/378/mcuconf.h b/keyboards/noxary/378/mcuconf.h new file mode 100644 index 000000000000..5b2f5ef867ad --- /dev/null +++ b/keyboards/noxary/378/mcuconf.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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/acheron/arctic/mcuconf.h -r platforms/chibios/GENERIC_STM32_F072XB/configs/mcuconf.h` + */ + +#pragma once + +#include_next diff --git a/keyboards/noxary/378/readme.md b/keyboards/noxary/378/readme.md new file mode 100644 index 000000000000..b309b3106580 --- /dev/null +++ b/keyboards/noxary/378/readme.md @@ -0,0 +1,15 @@ +# Noxary 378 + +![Noxary 378](https://cdn.shopify.com/s/files/1/0071/6377/3043/products/red.left.708_900x.png) + +A customizable 65% keyboard with ten macro keys + +* Keyboard Maintainer: [Gondolindrim](https://github.com/Gondolindrim) +* Hardware Supported: proprietary NX378PCB +* Hardware Availability: [Noxary](https://noxary.co/collections/378) + +Make example for this keyboard (after setting up your build environment): + + make noxary/378: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/noxary/378/rules.mk b/keyboards/noxary/378/rules.mk new file mode 100644 index 000000000000..54ff6dde2a42 --- /dev/null +++ b/keyboards/noxary/378/rules.mk @@ -0,0 +1,22 @@ +# 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 = 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 +# 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 + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/noxary/valhalla/chconf.h b/keyboards/noxary/valhalla/chconf.h new file mode 100644 index 000000000000..06279fc3872d --- /dev/null +++ b/keyboards/noxary/valhalla/chconf.h @@ -0,0 +1,30 @@ +/* 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/acheron/arctic/chconf.h -r platforms/chibios/common/configs/chconf.h` + */ + +#pragma once + +#define CH_CFG_ST_FREQUENCY 10000 + +#define CH_CFG_OPTIMIZE_SPEED FALSE + +#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE + +#include_next diff --git a/keyboards/noxary/valhalla/config.h b/keyboards/noxary/valhalla/config.h new file mode 100644 index 000000000000..4e87afecb9a6 --- /dev/null +++ b/keyboards/noxary/valhalla/config.h @@ -0,0 +1,71 @@ +/* +Copyright 2015 Álvaro "Gondolindrim" Volpato + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4E58 //"NX" +#define PRODUCT_ID 0x5648 // "VH" for Valhalla +#define DEVICE_VER 0x0001 +#define MANUFACTURER Noxary +#define PRODUCT Valhalla + + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +#define MATRIX_COL_PINS { B12, B11, B10, B2 , B1 , B0 , A10, B9 , B8 , B7 , B6 , B5 , B4 , B3 , A15 } +#define MATRIX_ROW_PINS { A8 , A9 , B13, B14, B15 } +#define DIODE_DIRECTION COL2ROW + +//#define BACKLIGHT_PIN A6 +//#define BACKLIGHT_PWM_DRIVER PWMD3 +//#define BACKLIGHT_PWM_CHANNEL 1 +//#define BACKLIGHT_PAL_MODE 1 +//#define BACKLIGHT_LEVELS 6 +//#define BACKLIGHT_BREATHING +//#define BREATHING_PERIOD 6 + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* 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 + +/* + * 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/noxary/valhalla/keymaps/default/keymap.c b/keyboards/noxary/valhalla/keymaps/default/keymap.c new file mode 100755 index 000000000000..95c91200667f --- /dev/null +++ b/keyboards/noxary/valhalla/keymaps/default/keymap.c @@ -0,0 +1,48 @@ +/* +Copyright 2012,2013 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_GESC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_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_PGUP, + KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_PGDN, KC_DEL , + 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, KC_UP, MO(1) , + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_SPC , KC_SPC , KC_SPC , KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT +), + [1] = LAYOUT_all( + RESET , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS +), + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS +), + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS +) +}; diff --git a/keyboards/noxary/valhalla/keymaps/via/keymap.c b/keyboards/noxary/valhalla/keymaps/via/keymap.c new file mode 100755 index 000000000000..95c91200667f --- /dev/null +++ b/keyboards/noxary/valhalla/keymaps/via/keymap.c @@ -0,0 +1,48 @@ +/* +Copyright 2012,2013 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_GESC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_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_PGUP, + KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_PGDN, KC_DEL , + 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, KC_UP, MO(1) , + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_SPC , KC_SPC , KC_SPC , KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT +), + [1] = LAYOUT_all( + RESET , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS +), + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS +), + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS +) +}; diff --git a/keyboards/noxary/valhalla/keymaps/via/rules.mk b/keyboards/noxary/valhalla/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/noxary/valhalla/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/noxary/valhalla/mcuconf.h b/keyboards/noxary/valhalla/mcuconf.h new file mode 100644 index 000000000000..5b2f5ef867ad --- /dev/null +++ b/keyboards/noxary/valhalla/mcuconf.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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/acheron/arctic/mcuconf.h -r platforms/chibios/GENERIC_STM32_F072XB/configs/mcuconf.h` + */ + +#pragma once + +#include_next diff --git a/keyboards/noxary/valhalla/readme.md b/keyboards/noxary/valhalla/readme.md new file mode 100644 index 000000000000..ac053df874c0 --- /dev/null +++ b/keyboards/noxary/valhalla/readme.md @@ -0,0 +1,32 @@ +# Noxary Valhalla + +![valhalla](https://cdn.shopify.com/s/files/1/0071/6377/3043/products/BG_AngleL_a247224d-f9ca-4093-b0de-df776e34b02d_900x.jpg?v=1598742611) + +An ergonomic 65% by Noxary + +* Keyboard Maintainer: [Gondolindrim](https://github.com/Gondolindrim) +* Hardware Supported: proprietary PCB +* Hardware Availability: [Noxary](https://noxary.co/collections/valhalla). As of november 17, the group buy has ended. + + +## How to flash + +### Enter bootloader + +The DFU state in the bootloader can be accessed in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: press the button on the front of the PCB, next to caps lock, for at least five seconds +* **Keycode in layout**: Press the key mapped to `RESET` if it is available + +## Compile firmware + +Make example for this keyboard (after setting up your build environment): + + make noxary/valhalla:default + +To directly flash the PCB after it is put into a DFU state, use + + make noxary/valhalla:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/noxary/valhalla/rules.mk b/keyboards/noxary/valhalla/rules.mk new file mode 100644 index 000000000000..269626f8fadc --- /dev/null +++ b/keyboards/noxary/valhalla/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = STM32F072 + +# Bootloader selection +BOOTLOADER = stm32-dfu + +# Build options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/noxary/valhalla/valhalla.c b/keyboards/noxary/valhalla/valhalla.c new file mode 100644 index 000000000000..a8b21650913c --- /dev/null +++ b/keyboards/noxary/valhalla/valhalla.c @@ -0,0 +1,18 @@ +/* +Copyright 2015 Álvaro "Gondolindrim" Volpato + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "valhalla.h" diff --git a/keyboards/noxary/valhalla/valhalla.h b/keyboards/noxary/valhalla/valhalla.h new file mode 100644 index 000000000000..5369d9d35589 --- /dev/null +++ b/keyboards/noxary/valhalla/valhalla.h @@ -0,0 +1,36 @@ +/* +Copyright 2015 Álvaro "Gondolindrim" Volpato + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +#define ___ KC_NO + +#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, 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, 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, ___, ___, K4C, K4D, K4E } \ +} diff --git a/keyboards/noxary/vulcan/info.json b/keyboards/noxary/vulcan/info.json index 6e54519fb176..f3b5761095df 100644 --- a/keyboards/noxary/vulcan/info.json +++ b/keyboards/noxary/vulcan/info.json @@ -2,8 +2,6 @@ "keyboard_name": "vulcan", "url": "https://noxary.co/products/vulcan-pro-base", "maintainer": "ai03", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { "layout": [ @@ -72,4 +70,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/noxary/vulcan/rules.mk b/keyboards/noxary/vulcan/rules.mk index 5f1b6954ee3a..32f9b9b0a2e0 100644 --- a/keyboards/noxary/vulcan/rules.mk +++ b/keyboards/noxary/vulcan/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = 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 diff --git a/keyboards/noxary/x268/config.h b/keyboards/noxary/x268/config.h index 00a696fb7a88..5f33c18e812f 100644 --- a/keyboards/noxary/x268/config.h +++ b/keyboards/noxary/x268/config.h @@ -102,54 +102,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -168,26 +120,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/noxary/x268/info.json b/keyboards/noxary/x268/info.json index cac7559baf30..04cd126de3e9 100644 --- a/keyboards/noxary/x268/info.json +++ b/keyboards/noxary/x268/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Noxary x268", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT": { - "key_count": 71, "layout": [ {"label":"ESC", "x":0, "y":0}, {"label":"1", "x":1, "y":0}, @@ -83,4 +80,3 @@ } } } - diff --git a/keyboards/noxary/x268/rules.mk b/keyboards/noxary/x268/rules.mk index 39f832e2d729..c6f5dd9125a6 100644 --- a/keyboards/noxary/x268/rules.mk +++ b/keyboards/noxary/x268/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/noxary/x268/x268.h b/keyboards/noxary/x268/x268.h index 9961b7dfdb17..d2f63dc919e6 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 . */ -#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/np12/info.json b/keyboards/np12/info.json index 2bb513d84550..06e544244b16 100644 --- a/keyboards/np12/info.json +++ b/keyboards/np12/info.json @@ -2,8 +2,6 @@ "keyboard_name": "np12", "url": "https://github.com/nut1414/np12", "maintainer": "nut1414", - "width": 4, - "height": 4, "layouts": { "LAYOUT": { "layout": [ @@ -23,4 +21,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/np12/rules.mk b/keyboards/np12/rules.mk index 8b8bacdcf5e8..09fd3f88b7ff 100644 --- a/keyboards/np12/rules.mk +++ b/keyboards/np12/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = yes diff --git a/keyboards/nullbitsco/nibble/bitc_led.c b/keyboards/nullbitsco/common/bitc_led.c similarity index 97% rename from keyboards/nullbitsco/nibble/bitc_led.c rename to keyboards/nullbitsco/common/bitc_led.c index 60ffeea27895..64d7c7160a78 100644 --- a/keyboards/nullbitsco/nibble/bitc_led.c +++ b/keyboards/nullbitsco/common/bitc_led.c @@ -1,4 +1,4 @@ -/* Copyright 2020 Jay Greco +/* Copyright 2021 Jay Greco * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/keyboards/nullbitsco/nibble/bitc_led.h b/keyboards/nullbitsco/common/bitc_led.h similarity index 96% rename from keyboards/nullbitsco/nibble/bitc_led.h rename to keyboards/nullbitsco/common/bitc_led.h index b3552a7d1989..14cd4f15b7d0 100644 --- a/keyboards/nullbitsco/nibble/bitc_led.h +++ b/keyboards/nullbitsco/common/bitc_led.h @@ -1,4 +1,4 @@ -/* Copyright 2020 Jay Greco +/* Copyright 2021 Jay Greco * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/keyboards/nullbitsco/nibble/remote_kb.c b/keyboards/nullbitsco/common/remote_kb.c similarity index 97% rename from keyboards/nullbitsco/nibble/remote_kb.c rename to keyboards/nullbitsco/common/remote_kb.c index 7a914993f310..4dcc9f461622 100644 --- a/keyboards/nullbitsco/nibble/remote_kb.c +++ b/keyboards/nullbitsco/common/remote_kb.c @@ -1,4 +1,4 @@ -/* Copyright 2020 Jay Greco +/* Copyright 2021 Jay Greco * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -63,9 +63,7 @@ static void send_msg(uint16_t keycode, bool pressed) { msg[IDX_PRESSED] = pressed; msg[IDX_CHECKSUM] = chksum8(msg, UART_MSG_LEN-1); - for (int i=0; i. */ #pragma once -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE // Enable OLED bitmpa compression selectively. #define USE_OLED_BITMAP_COMPRESSION @@ -401,4 +401,4 @@ static const char PROGMEM tap_frames[NUM_TAP_FRAMES][NUM_OLED_BYTES] = { }, }; #endif //USE_BITMAP_COMPRESSION -#endif //OLED_DRIVER_ENABLE \ No newline at end of file +#endif //OLED_ENABLE diff --git a/keyboards/nullbitsco/nibble/keymaps/oled_bongocat/keymap.c b/keyboards/nullbitsco/nibble/keymaps/oled_bongocat/keymap.c index 1d8559627a2a..a4e484f9cf6b 100644 --- a/keyboards/nullbitsco/nibble/keymaps/oled_bongocat/keymap.c +++ b/keyboards/nullbitsco/nibble/keymaps/oled_bongocat/keymap.c @@ -17,8 +17,6 @@ */ #include QMK_KEYBOARD_H #include "animation_frames.h" -#include - enum layer_names { _BASE, @@ -88,7 +86,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { return true; } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE #define IDLE_FRAME_DURATION 200 // Idle animation iteration rate in ms oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; } @@ -97,7 +95,6 @@ uint32_t anim_timer = 0; uint32_t anim_sleep = 0; uint8_t current_idle_frame = 0; -char wpm_str[10]; bool tap_anim = false; bool tap_anim_toggle = false; @@ -158,17 +155,27 @@ static void render_anim(void) { } } -void oled_task_user(void) { +bool oled_task_user(void) { render_anim(); oled_set_cursor(0, 14); - sprintf(wpm_str, ">%04d", get_current_wpm()); - oled_write_ln(wpm_str, false); + + uint8_t n = get_current_wpm(); + char wpm_counter[6]; + wpm_counter[5] = '\0'; + wpm_counter[4] = '0' + n % 10; + wpm_counter[3] = '0' + (n /= 10) % 10; + wpm_counter[2] = '0' + n / 10 ; + wpm_counter[1] = '0'; + wpm_counter[0] = '>'; + oled_write_ln(wpm_counter, false); + + return false; } #endif // Animate tap bool process_record_user(uint16_t keycode, keyrecord_t *record) { - #ifdef OLED_DRIVER_ENABLE + #ifdef OLED_ENABLE // Check if non-mod if ((keycode >= KC_A && keycode <= KC_0) || (keycode >= KC_TAB && keycode <= KC_SLASH)) { if (record->event.pressed) { @@ -187,7 +194,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case PROG: if (record->event.pressed) { rgblight_disable_noeeprom(); - #ifdef OLED_DRIVER_ENABLE + #ifdef OLED_ENABLE oled_off(); #endif bootloader_jump(); diff --git a/keyboards/nullbitsco/nibble/keymaps/oled_bongocat/rules.mk b/keyboards/nullbitsco/nibble/keymaps/oled_bongocat/rules.mk index c7ffad546e09..db6a98385a25 100644 --- a/keyboards/nullbitsco/nibble/keymaps/oled_bongocat/rules.mk +++ b/keyboards/nullbitsco/nibble/keymaps/oled_bongocat/rules.mk @@ -1,3 +1,4 @@ -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 WPM_ENABLE = yes -VIA_ENABLE = yes \ No newline at end of file +VIA_ENABLE = yes diff --git a/keyboards/nullbitsco/nibble/keymaps/oled_status/config.h b/keyboards/nullbitsco/nibble/keymaps/oled_status/config.h index bdb970ff55eb..603bde6867ba 100644 --- a/keyboards/nullbitsco/nibble/keymaps/oled_status/config.h +++ b/keyboards/nullbitsco/nibble/keymaps/oled_status/config.h @@ -16,6 +16,6 @@ #pragma once // Referenced custom font -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE # define OLED_FONT_H "keyboards/nullbitsco/nibble/keymaps/oled_status/glcdfont.c" #endif diff --git a/keyboards/nullbitsco/nibble/keymaps/oled_status/keymap.c b/keyboards/nullbitsco/nibble/keymaps/oled_status/keymap.c index c39f42b361cf..fa72a78905bb 100644 --- a/keyboards/nullbitsco/nibble/keymaps/oled_status/keymap.c +++ b/keyboards/nullbitsco/nibble/keymaps/oled_status/keymap.c @@ -15,19 +15,17 @@ */ #include QMK_KEYBOARD_H -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE # include "oled_display.h" #endif -enum layer_names { - _MA, - _FN -}; +enum layer_names { _MA, _FN }; enum custom_keycodes { KC_CUST = SAFE_RANGE, }; +// clang-format off const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_MA] = LAYOUT_ansi( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, @@ -44,19 +42,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), }; +// clang-format on -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { oled_timer = timer_read32(); set_oled_mode(OLED_MODE_IDLE); return OLED_ROTATION_180; } -void oled_task_user(void) { - if (timer_elapsed(oled_timer) >= 3000) { +bool oled_task_user(void) { + if (timer_elapsed(oled_timer) >= 3000) { set_oled_mode(OLED_MODE_IDLE); } render_frame(); + return false; } #endif @@ -64,35 +64,35 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { // Send keystrokes to host keyboard, if connected (see readme) process_record_remote_kb(keycode, record); - switch(keycode) { + switch (keycode) { case RGB_TOG: if (record->event.pressed) { -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE process_record_keymap_oled(keycode); #endif } - break; - case KC_CUST: //custom macro + break; + case KC_CUST: // custom macro if (record->event.pressed) { } - break; + break; } return true; } - -void encoder_update_user(uint8_t index, bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (clockwise) { tap_code(KC_VOLU); -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE process_record_encoder_oled(KC_VOLU); #endif } else { tap_code(KC_VOLD); -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE process_record_encoder_oled(KC_VOLD); #endif } + return true; } void matrix_init_user(void) { diff --git a/keyboards/nullbitsco/nibble/keymaps/oled_status/oled_display.c b/keyboards/nullbitsco/nibble/keymaps/oled_status/oled_display.c index 1b132a9e62f6..c734e80cefea 100644 --- a/keyboards/nullbitsco/nibble/keymaps/oled_status/oled_display.c +++ b/keyboards/nullbitsco/nibble/keymaps/oled_status/oled_display.c @@ -13,7 +13,6 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -#include #include "quantum.h" #include "oled_display.h" @@ -62,11 +61,14 @@ void process_record_keymap_oled(uint16_t keycode) { } void render_wpm(void) { - char wpm_str[10]; - - sprintf(wpm_str, "%03d", get_current_wpm()); + uint8_t n = get_current_wpm(); + char wpm_counter[4]; + wpm_counter[3] = '\0'; + wpm_counter[2] = '0' + n % 10; + wpm_counter[1] = '0' + (n /= 10) % 10; + wpm_counter[0] = '0' + n / 10 ; oled_write_P(PSTR(" "), false); - oled_write(wpm_str, false); + oled_write(wpm_counter, false); } void render_idle(void) { diff --git a/keyboards/nullbitsco/nibble/keymaps/oled_status/rules.mk b/keyboards/nullbitsco/nibble/keymaps/oled_status/rules.mk index 51c47cff8961..0e39ada47b53 100644 --- a/keyboards/nullbitsco/nibble/keymaps/oled_status/rules.mk +++ b/keyboards/nullbitsco/nibble/keymaps/oled_status/rules.mk @@ -1,7 +1,8 @@ -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 WPM_ENABLE = yes VIA_ENABLE = yes -ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes) +ifeq ($(strip $(OLED_ENABLE)), yes) SRC += oled_display.c endif diff --git a/keyboards/nullbitsco/nibble/keymaps/snailmap/keymap.c b/keyboards/nullbitsco/nibble/keymaps/snailmap/keymap.c new file mode 100644 index 000000000000..e549f22a836a --- /dev/null +++ b/keyboards/nullbitsco/nibble/keymaps/snailmap/keymap.c @@ -0,0 +1,543 @@ +/* Copyright 2021 dogspace + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum custom_keycodes { + KC_CUST = SAFE_RANGE, +}; + +enum layer_names { + _MA, + _L1, + _L2, + _L3 +}; + +// NOTE: Default keymap layers were designed for ANSI split-space layout http://www.keyboard-layout-editor.com/#/gists/f28bd5ff4e62f69e89896df3a59671c6 +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_MA] = LAYOUT_ansi( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_MUTE, 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, LCTL(KC_F), + KC_CAPS, MO(_L2), 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_CALC, + TG(_L2), KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_WHOM, + MO(_L3), KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_L1), LCTL(KC_C), LCTL(KC_V), KC_LEFT, KC_DOWN, KC_RGHT + ), + [_L1] = LAYOUT_ansi( + KC_GRAVE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + RGB_TOG, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_UP, _______, _______, _______, _______, _______, _______, + _______, LCTL(KC_Z), KC_LCTL, KC_LSFT, _______, _______, _______, KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT, KC_END, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_PGDN, _______, _______, LCTL(KC_SLSH), _______, _______, _______, + _______, _______, _______, _______, _______, _______, LCTL(KC_X), _______, _______, _______, _______ + ), + [_L2] = LAYOUT_ansi( + KC_GRAVE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + RGB_TOG, _______, _______, _______, _______, _______, _______, KC_PAST, KC_7, KC_8, KC_9, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_PPLS, KC_4, KC_5, KC_6, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_PMNS, KC_1, KC_2, KC_3, _______, _______, _______, _______, + _______, _______, _______, _______, KC_0, KC_PSLS, _______, _______, _______, _______, _______ + ), + [_L3] = LAYOUT_ansi( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, + RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_SYSREQ, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + +#ifdef OLED_ENABLE +/*=========================================== OLED CONFIGURATION ===========================================*/ +bool oled_horizontal = true; // OLED rotation (true = horizontal, false = vertical) +bool ansi_layout = true; // ANSI or ISO layout (true = ANSI, false = ISO) +bool split_space = true; // Split spacebar (true = split spacebar, false = 6.25u or 7u spacebar) +bool three_mods_left = true; // Left mods layout (true = 3x 1.25u keys, false = 2x 1.5u keys) +bool three_mods_right = false; // Right mods layout (true = 3x 1u keys, false = 2x 1.5u keys) +bool graph_direction = true; // Graph movement (true = right to left, false = left to right) +float graph_top_wpm = 100.0; // Minimum WPM required to reach the top of the graph +int graph_refresh = 1000; // In milliseconds, determines the graph-line frequency +int icon_med_wpm = 50; // WPM required to display the medium snail +int icon_fast_wpm = 72; // WPM required to display the fast snail +// Layer names: Should be exactly 5 characters in length if vertical display, or 6 characters if horizontal +#define MA_LAYER_NAME "QWERTY" // Layer _MA name +#define L1_LAYER_NAME "ARROWS" // Layer _L1 name +#define L2_LAYER_NAME "NUMPAD" // Layer _L2 name +#define L3_LAYER_NAME "FUNCTN" // Layer _L3 name +/*================================================================================================================*/ +bool first_loop = true; +int timer = 0; +int wpm_limit = 20; +int max_wpm = -1; +int wpm_icon = -1; +int graph_lines[64]; + +// Set OLED rotation +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + if (oled_horizontal) { + return OLED_ROTATION_180; + } else { + return OLED_ROTATION_90; + } +} + +// Toggles pixel on/off, converts horizontal coordinates to vertical equivalent if necessary +static void write_pixel(int x, int y, bool onoff) { + if (oled_horizontal) { + oled_write_pixel(x, y, onoff); + } else { + oled_write_pixel(y, 127 - x, onoff); + } +} + +// Draw static background image to OLED (keyboard with no bottom row) +static void render_background(void) { + if (oled_horizontal) { + static const char PROGMEM oled_keymap_horizontal[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x84, 0x80, 0x80, 0x80, 0x80, 0x04, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x80, 0x04, + 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, + 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, + 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, + 0x80, 0x04, 0x04, 0x04, 0x04, 0x84, 0x84, 0x84, 0x84, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, + 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + oled_write_raw_P(oled_keymap_horizontal, sizeof(oled_keymap_horizontal)); + } else { + static const char PROGMEM oled_keymap_vertical[] = { + 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, + 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, + 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, + 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, + 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + oled_write_raw_P(oled_keymap_vertical, sizeof(oled_keymap_vertical)); + } +} + +// Location of OLED keyboard's top left pixel, relative to the display +static const int keymap_template[2] = {41, 0}; +// Location of key highlights top left pixels, relative to keymap_template {X, Y, Key length in px} +static int keymap_coords[MATRIX_ROWS][MATRIX_COLS][3] = { + { {12, 15, 1}, {5, 0, 1}, {10, 0, 1}, {15, 0, 1}, {20, 0, 1}, {25, 0, 1}, {30, 0, 1}, {35, 0, 1}, {40, 0, 1}, {45, 0, 1}, {50, 0, 1}, {55, 0, 1}, {60, 0, 1}, {65, 0, 1}, {70, 0, 8}, {82, 0, 1} }, + { {0, 5, 1}, {5, 5, 5}, {14, 5, 1}, {19, 5, 1}, {24, 5, 1}, {29, 5, 1}, {34, 5, 1}, {39, 5, 1}, {44, 5, 1}, {49, 5, 1}, {54, 5, 1}, {59, 5, 1}, {64, 5, 1}, {69, 5, 1}, {74, 5, 4}, {82, 5, 1} }, + { {0, 10, 1}, {5, 10, 6}, {15, 10, 1}, {20, 10, 1}, {25, 10, 1}, {30, 10, 1}, {35, 10, 1}, {40, 10, 1}, {45, 10, 1}, {50, 10, 1}, {55, 10, 1}, {60, 10, 1}, {65, 10, 1}, {0, 0, 0}, {70, 10, 8}, {82, 10, 1} }, + { {0, 15, 1}, {5, 15, 8}, {17, 15, 1}, {22, 15, 1}, {27, 15, 1}, {32, 15, 1}, {37, 15, 1}, {42, 15, 1}, {47, 15, 1}, {52, 15, 1}, {57, 15, 1}, {62, 15, 1}, {67, 15, 6}, {0, 0, 0}, {77, 15, 1}, {82, 15, 1} }, + { {0, 20, 1}, {5, 20, 2}, {11, 20, 2}, {17, 20, 2}, {0, 0, 0}, {0, 0, 0}, {23, 20, 12}, {0, 0, 0}, {0, 0, 0}, {39, 20, 3}, {56, 20, 4}, {64, 20, 4}, {72, 20, 1}, {0, 0, 0}, {77, 20, 1}, {82, 20, 1} } +}; + +// Draw the bottom row of the keyboard (based on OLED config variables), update coordinates +static void render_fn_row(void) { + // Update locations of spacebar and modifier key highlights + if ((split_space == false) && (three_mods_left == false)) { + keymap_coords[4][1][2] = 3; + keymap_coords[4][2][0] = 12; + keymap_coords[4][2][2] = 3; + keymap_coords[4][3][0] = 0; + keymap_coords[4][3][1] = 0; + keymap_coords[4][3][2] = 0; + keymap_coords[4][6][0] = 19; + keymap_coords[4][6][2] = 34; + } else if ((split_space == false) && (three_mods_left == true)) { + keymap_coords[4][6][2] = 30; + } + if ((split_space == false) && (three_mods_right == true)) { + keymap_coords[4][9][0] = 57; + keymap_coords[4][9][2] = 1; + keymap_coords[4][10][0] = 62; + keymap_coords[4][10][2] = 1; + keymap_coords[4][11][0] = 67; + keymap_coords[4][11][2] = 1; + } + // Draw modifiers + for (int i = 0; i < 16; i++) { + if (keymap_coords[4][i][2] != 0) { + for (int p = 0; p < keymap_coords[4][i][2]; p++) { + int x = keymap_template[0] + keymap_coords[4][i][0] + 2 + p; + write_pixel(x, 22, true); + } + } + } + // Draw second line for split spacebar + if (split_space == true) { + for (int i = 0; i < 6; i++) { + int x = keymap_template[0] + 46 + 2 + i; + write_pixel(x, 22, true); + } + } +} + +// Update OLED keyboard with ISO layout, update coordinates +static void render_iso(void) { + for (int i = 0; i < 6; i++) { + // Turn off ANSI enter + write_pixel(keymap_template[0] + 73 + i, keymap_template[1] + 12, false); + if (i < 4) { + // Turn off part of ANSI left shift + write_pixel(keymap_template[0] + 10 + i, keymap_template[1] + 17, false); + // Draw vertical line for ISO enter + write_pixel(keymap_template[0] + 79, keymap_template[1] + 8 + i, true); + } + } + // Update locations of shift and grave key highlights + keymap_coords[3][1][2] = 3; + keymap_coords[1][14][0] = 70; + keymap_coords[1][14][1] = 10; + keymap_coords[1][14][2] = 1; +} + +// Toggles pixels surrounding key +static void render_keymap(uint8_t key_row, uint8_t key_col, bool onoff) { + int length = keymap_coords[key_row][key_col][2] + 4; + int left = keymap_coords[key_row][key_col][0] + keymap_template[0]; + int top = keymap_coords[key_row][key_col][1] + keymap_template[1]; + int right = left + length - 1; + int bottom = top + 4; + + // Special case 1 - Draw enter key on ISO layout, return + if ((ansi_layout == false) && (key_row == 2) && (key_col == 14)) { + for (int i = 0; i < 10; i++) { + write_pixel(keymap_template[0] + 81, keymap_template[1] + 5 + i, onoff); + if (i < 5) { + write_pixel(keymap_template[0] + 74, keymap_template[1] + 5 + i, onoff); + } + if (i < 6) { + write_pixel(keymap_template[0] + 75, keymap_template[1] + 9 + i, onoff); + } + if (i < 7) { + write_pixel(keymap_template[0] + 75 + i, keymap_template[1] + 5, onoff); + write_pixel(keymap_template[0] + 75 + i, keymap_template[1] + 14, onoff); + } + } + return; + } + // Draw top and bottom walls (horizontal for px) + for (int x = 0; x < length; x++) { + write_pixel(left + x, top, onoff); + write_pixel(left + x, bottom, onoff); + } + // Draw left and right walls (vertical for 5px) + for (int y = 0; y < 5; y++) { + write_pixel(left, top + y, onoff); + write_pixel(right, top + y, onoff); + } + // Special case 2 - Draw right spacebar on split-space layout + if ((split_space == true) && (key_row == 4) && (key_col == 6)) { + int start = keymap_template[0] + 46; + int stop = keymap_template[0] + 55; + for (int x = start; x < stop; x++) { + write_pixel(x, top, onoff); + write_pixel(x, bottom, onoff); + } + for (int y = 0; y < 5; y++) { + write_pixel(start, top + y, onoff); + write_pixel(stop, top + y, onoff); + } + } +} + +// Write active layer name +static void render_layer_state(void) { + if (oled_horizontal) { + oled_set_cursor(0, 0); + } else { + oled_set_cursor(0, 15); + } + switch (get_highest_layer(layer_state)) { + case _MA: + oled_write_P(PSTR(MA_LAYER_NAME), false); + break; + case _L1: + oled_write_P(PSTR(L1_LAYER_NAME), false); + break; + case _L2: + oled_write_P(PSTR(L2_LAYER_NAME), false); + break; + case _L3: + oled_write_P(PSTR(L3_LAYER_NAME), false); + break; + default: + oled_write("ERROR", false); + break; + } +} + +// Update WPM counters +static void render_wpm_counters(int current_wpm) { + int cursorposition_cur = 2; + int cursorposition_max = 1; + if (oled_horizontal == false) { + cursorposition_cur = 13; + cursorposition_max = 14; + } + + char wpm_counter[4]; + wpm_counter[3] = '\0'; + wpm_counter[2] = '0' + current_wpm % 10; + wpm_counter[1] = '0' + (current_wpm / 10) % 10; + wpm_counter[0] = '0' + (current_wpm / 100) % 10; + oled_set_cursor(0, cursorposition_cur); + oled_write(wpm_counter, false); + + if (current_wpm > max_wpm) { + max_wpm = current_wpm; + wpm_limit = max_wpm + 20; + oled_set_cursor(0, cursorposition_max); + oled_write(wpm_counter, false); + } +} + +// Update WPM snail icon +static void render_wpm_icon(int current_wpm) { + // wpm_icon is used to prevent unnecessary redraw + if ((current_wpm < icon_med_wpm) && (wpm_icon != 0)) { + wpm_icon = 0; + } else if ((current_wpm >= icon_med_wpm) && (current_wpm < icon_fast_wpm) && (wpm_icon != 1)) { + wpm_icon = 1; + } else if ((current_wpm >= icon_fast_wpm) && (wpm_icon != 2)) { + wpm_icon = 2; + } else { + return; + } + static const char PROGMEM snails[][2][24] = { + {{0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0xA0, 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00}, + {0x40, 0x60, 0x50, 0x4E, 0x51, 0x64, 0x4A, 0x51, 0x54, 0x49, 0x41, 0x62, 0x54, 0x49, 0x46, 0x41, 0x40, 0x30, 0x09, 0x04, 0x02, 0x01, 0x00, 0x00}}, + {{0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x04, 0x98, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00}, + {0x60, 0x50, 0x54, 0x4A, 0x51, 0x64, 0x4A, 0x51, 0x55, 0x49, 0x41, 0x62, 0x54, 0x49, 0x46, 0x41, 0x21, 0x10, 0x0A, 0x08, 0x05, 0x02, 0x00, 0x00}}, + {{0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x10, 0x10, 0x10, 0x20, 0x40, 0x40, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00}, + {0x60, 0x58, 0x54, 0x62, 0x49, 0x54, 0x52, 0x51, 0x55, 0x49, 0x62, 0x52, 0x4D, 0x45, 0x46, 0x22, 0x21, 0x11, 0x10, 0x0A, 0x08, 0x05, 0x02, 0x00}} + }; + if (oled_horizontal) { + oled_set_cursor(3, 1); + oled_write_raw_P(snails[wpm_icon][0], sizeof(snails[wpm_icon][0])); + oled_set_cursor(3, 2); + oled_write_raw_P(snails[wpm_icon][1], sizeof(snails[wpm_icon][1])); + } else { + oled_set_cursor(0, 11); + oled_write_raw_P(snails[wpm_icon][0], sizeof(snails[wpm_icon][0])); + oled_set_cursor(0, 12); + oled_write_raw_P(snails[wpm_icon][1], sizeof(snails[wpm_icon][1])); + } +} + +// Update WPM graph +static void render_wpm_graph(int current_wpm) { + int line_height = ((current_wpm / graph_top_wpm) * 7); + if (line_height > 7) { + line_height = 7; + } + // Count graph line pixels, return if nothing to draw + int pixel_count = line_height; + for (int i = 0; i < 63; i++) { + pixel_count += graph_lines[i]; + } + if (pixel_count == 0) { + return; + } + // Shift array elements left or right depending on graph_direction, append new graph line + if (graph_direction) { + for (int i = 0; i < 63; i++) { + graph_lines[i] = graph_lines[i + 1]; + } + graph_lines[63] = line_height; + } else { + for (int i = 63; i > 0; i--) { + graph_lines[i] = graph_lines[i - 1]; + } + graph_lines[0] = line_height; + } + // Draw all graph lines (left to right, bottom to top) + int draw_count, arrpos; + for (int x = 1; x <= 127; x += 2) { + arrpos = x / 2; + draw_count = graph_lines[arrpos]; + for (int y = 31; y >= 25; y--) { + if (draw_count > 0) { + write_pixel(x, y, true); + draw_count--; + } else { + write_pixel(x, y, false); + } + } + } +} + +// Call OLED functions +bool oled_task_user(void) { + // Draw OLED keyboard, prevent redraw + if (first_loop) { + render_background(); + render_fn_row(); + if (ansi_layout == false) { + render_iso(); + } + first_loop = false; + } + // Get current WPM, subtract 25% for accuracy and prevent large jumps caused by simultaneous keypresses + int current_wpm = get_current_wpm(); + // Note: This will most likely be removed once QMK's WPM calculation is updated + current_wpm -= current_wpm >> 2; + if (current_wpm > wpm_limit) { + current_wpm = max_wpm; + set_current_wpm(max_wpm); + } + // Write active layer name to display + render_layer_state(); + // Update WPM counters + render_wpm_counters(current_wpm); + // Update WPM snail icon + render_wpm_icon(current_wpm); + // Update WPM graph every graph_refresh milliseconds + if (timer_elapsed(timer) > graph_refresh) { + render_wpm_graph(current_wpm); + timer = timer_read(); + } + return false; +} +#endif + +// Called by QMK during key processing +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + // Forwards keystrokes from an external input device over UART/TRRS + process_record_remote_kb(keycode, record); + + #ifdef OLED_ENABLE + // Toggle pixels surrounding key + render_keymap(record->event.key.row, record->event.key.col, record->event.pressed); + #endif + + return true; +} + +// Rotary encoder - RGB and OLED settings +void change_RGB(bool clockwise) { + // While on any layer except default: // Rotary = RGB Mode + bool shift = get_mods() & MOD_MASK_SHIFT; // Rotary + Shift = OLED Brightness + bool ctrl = get_mods() & MOD_MASK_CTRL; // Rotary + Ctrl = RGB Brightness + bool gui = get_mods() & MOD_MASK_GUI; // Rotary + Gui = RGB Saturation + bool alt = get_mods() & MOD_MASK_ALT; // Rotary + Alt = RGB Hue + + if (clockwise) { + if (shift) { + int new_brightness = oled_get_brightness() + 10; + if (new_brightness < 255) { + oled_set_brightness(new_brightness); + } else { + oled_set_brightness(255); + } + } else if (ctrl) { + rgblight_increase_val(); + } else if (gui) { + rgblight_increase_sat(); + } else if (alt) { + rgblight_increase_hue(); + } else { + rgblight_step(); + } + } else { + if (shift) { + int new_brightness = oled_get_brightness() - 10; + if (new_brightness > 0) { + oled_set_brightness(new_brightness); + } else { + oled_set_brightness(0); + } + } else if (ctrl) { + rgblight_decrease_val(); + } else if (gui) { + rgblight_decrease_sat(); + } else if (alt) { + rgblight_decrease_hue(); + } else { + rgblight_step_reverse(); + } + } +} + +// Rotary encoder behavior - Change volume on default layer, RGB/OLED on other layers +bool encoder_update_user(uint8_t index, bool clockwise) { + if (layer_state_is(0)) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else { + change_RGB(clockwise); + } + return true; +} + +// Initialize remote keyboard, if connected +void matrix_init_user(void) { + matrix_init_remote_kb(); +} + +// Scan and parse keystrokes from remote keyboard, if connected +void matrix_scan_user(void) { + matrix_scan_remote_kb(); +} diff --git a/keyboards/nullbitsco/nibble/keymaps/snailmap/readme.md b/keyboards/nullbitsco/nibble/keymaps/snailmap/readme.md new file mode 100644 index 000000000000..5ea93b01afbd --- /dev/null +++ b/keyboards/nullbitsco/nibble/keymaps/snailmap/readme.md @@ -0,0 +1,36 @@ + +# SnailMap + +![KeySnail](https://i.imgur.com/yEQJyI2h.png) + +## :snail: Display + +- Mini keyboard that highlights the currently pressed keys +- Snail icon that changes based on the current WPM +- Current and max WPM counters +- Active layer name +- WPM graph + +## :gear: Customization + +The `OLED configuration variables` can be used to easily customize the display + +``` +oled_horizontal - Horizontal or vertical orientation +ansi_layout - ANSI or ISO layout +split_space - Bottom row spacebar +three_mods_left - Left modifier keys +three_mods_right - Right modifier keys +graph_direction - Graph movement direction +graph_refresh - Frequency of graph lines +graph_top_wpm - WPM required to reach the top of the graph +icon_med_wpm - WPM required to display the medium snail +icon_fast_wpm - WPM required to display the fast snail +MA_LAYER_NAME - Layer 0 display name +L1_LAYER_NAME - Layer 1 display name +L2_LAYER_NAME - Layer 2 display name +L3_LAYER_NAME - Layer 3 display name +``` +___ + +###### *Keymap created by* [dogspace](https://github.com/dogspace) diff --git a/keyboards/nullbitsco/nibble/keymaps/snailmap/rules.mk b/keyboards/nullbitsco/nibble/keymaps/snailmap/rules.mk new file mode 100644 index 000000000000..4e0f1b619a23 --- /dev/null +++ b/keyboards/nullbitsco/nibble/keymaps/snailmap/rules.mk @@ -0,0 +1,5 @@ +OLED_ENABLE = yes +WPM_ENABLE = yes +SPACE_CADET_ENABLE = no +GRAVE_ESC_ENABLE = no +MAGIC_ENABLE = no \ No newline at end of file diff --git a/keyboards/nullbitsco/nibble/keymaps/via/keymap.c b/keyboards/nullbitsco/nibble/keymaps/via/keymap.c index 67a53f241ba1..b1c9242b9ad4 100644 --- a/keyboards/nullbitsco/nibble/keymaps/via/keymap.c +++ b/keyboards/nullbitsco/nibble/keymaps/via/keymap.c @@ -1,4 +1,4 @@ -/* Copyright 2020 Jay Greco +/* Copyright 2021 Jay Greco * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/keyboards/nullbitsco/nibble/matrix.c b/keyboards/nullbitsco/nibble/matrix.c index 8ec9da2844c4..496c5dbe322f 100644 --- a/keyboards/nullbitsco/nibble/matrix.c +++ b/keyboards/nullbitsco/nibble/matrix.c @@ -1,4 +1,4 @@ -/* Copyright 2020 Jay Greco +/* Copyright 2021 Jay Greco * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/keyboards/nullbitsco/nibble/nibble.c b/keyboards/nullbitsco/nibble/nibble.c index 409edd44a015..43918c13e645 100644 --- a/keyboards/nullbitsco/nibble/nibble.c +++ b/keyboards/nullbitsco/nibble/nibble.c @@ -1,4 +1,4 @@ -/* Copyright 2020 Jay Greco +/* Copyright 2021 Jay Greco * * This 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,7 +14,6 @@ * along with this program. If not, see . */ #include QMK_KEYBOARD_H -#include "bitc_led.h" // Use Bit-C LED to show CAPS LOCK status bool led_update_kb(led_t led_state) { diff --git a/keyboards/nullbitsco/nibble/nibble.h b/keyboards/nullbitsco/nibble/nibble.h index b974edaba5c4..58ac80445118 100644 --- a/keyboards/nullbitsco/nibble/nibble.h +++ b/keyboards/nullbitsco/nibble/nibble.h @@ -1,4 +1,4 @@ -/* Copyright 2020 Jay Greco +/* Copyright 2021 Jay Greco * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,7 +18,8 @@ #define ___ KC_NO #include "quantum.h" -#include "remote_kb.h" +#include "common/remote_kb.h" +#include "common/bitc_led.h" #define LAYOUT_all( \ K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, \ diff --git a/keyboards/nullbitsco/nibble/rules.mk b/keyboards/nullbitsco/nibble/rules.mk index ab27b7527a47..e991d0f6a9af 100644 --- a/keyboards/nullbitsco/nibble/rules.mk +++ b/keyboards/nullbitsco/nibble/rules.mk @@ -7,25 +7,22 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -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 = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes # Use rotary encoder LTO_ENABLE = yes # Link-time optimization CUSTOM_MATRIX = lite # Lite custom matrix # Project specific files SRC += matrix.c \ - bitc_led.c \ + common/bitc_led.c \ big_led.c \ - remote_kb.c + common/remote_kb.c QUANTUM_LIB_SRC += uart.c diff --git a/keyboards/nullbitsco/scramble/config.h b/keyboards/nullbitsco/scramble/config.h index 949c280263fd..811f28e6be17 100644 --- a/keyboards/nullbitsco/scramble/config.h +++ b/keyboards/nullbitsco/scramble/config.h @@ -1,5 +1,5 @@ /* -Copyright 2020 Jay Greco +Copyright 2021 Jay Greco This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/keyboards/nullbitsco/scramble/info.json b/keyboards/nullbitsco/scramble/info.json index 71d53236695c..967c9fda6480 100644 --- a/keyboards/nullbitsco/scramble/info.json +++ b/keyboards/nullbitsco/scramble/info.json @@ -2,8 +2,6 @@ "keyboard_name": "SCRAMBLE switch tester", "url": "https://nullbits.co/scramble", "maintainer": "jaygreco", - "width": 3, - "height": 2, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/nullbitsco/scramble/keymaps/default/keymap.c b/keyboards/nullbitsco/scramble/keymaps/default/keymap.c index b80214110a62..a798bd3cb803 100644 --- a/keyboards/nullbitsco/scramble/keymaps/default/keymap.c +++ b/keyboards/nullbitsco/scramble/keymaps/default/keymap.c @@ -1,5 +1,5 @@ /* -Copyright 2020 Jay Greco +Copyright 2021 Jay Greco This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/keyboards/nullbitsco/scramble/keymaps/oled/config.h b/keyboards/nullbitsco/scramble/keymaps/oled/config.h index 5bfc9cff759d..cd980b09366c 100644 --- a/keyboards/nullbitsco/scramble/keymaps/oled/config.h +++ b/keyboards/nullbitsco/scramble/keymaps/oled/config.h @@ -1,5 +1,5 @@ /* -Copyright 2020 Jay Greco +Copyright 2021 Jay Greco This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/keyboards/nullbitsco/scramble/keymaps/oled/keymap.c b/keyboards/nullbitsco/scramble/keymaps/oled/keymap.c index 2081872ac258..b1c9282253d6 100644 --- a/keyboards/nullbitsco/scramble/keymaps/oled/keymap.c +++ b/keyboards/nullbitsco/scramble/keymaps/oled/keymap.c @@ -1,5 +1,5 @@ /* -Copyright 2020 Jay Greco +Copyright 2021 Jay Greco This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE static void render_logo(void) { static const char PROGMEM nullbits_logo[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -67,8 +67,9 @@ static void render_logo(void) { oled_write_raw_P(nullbits_logo, sizeof(nullbits_logo)); } -void oled_task_user(void) { +bool oled_task_user(void) { render_logo(); + return false; } #endif diff --git a/keyboards/nullbitsco/scramble/keymaps/oled/rules.mk b/keyboards/nullbitsco/scramble/keymaps/oled/rules.mk index c582662134c4..d34d066ded93 100644 --- a/keyboards/nullbitsco/scramble/keymaps/oled/rules.mk +++ b/keyboards/nullbitsco/scramble/keymaps/oled/rules.mk @@ -1 +1,2 @@ -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/nullbitsco/scramble/keymaps/via/keymap.c b/keyboards/nullbitsco/scramble/keymaps/via/keymap.c index d5b97855a5f0..4c0ffbe2ebee 100644 --- a/keyboards/nullbitsco/scramble/keymaps/via/keymap.c +++ b/keyboards/nullbitsco/scramble/keymaps/via/keymap.c @@ -1,5 +1,5 @@ /* -Copyright 2020 Jay Greco +Copyright 2021 Jay Greco This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/keyboards/nullbitsco/scramble/rules.mk b/keyboards/nullbitsco/scramble/rules.mk index 6fc0c4598220..6c7715737d21 100644 --- a/keyboards/nullbitsco/scramble/rules.mk +++ b/keyboards/nullbitsco/scramble/rules.mk @@ -2,22 +2,19 @@ MCU = atmega328p # Bootloader selection -BOOTLOADER = USBasp +BOOTLOADER = usbasploader # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes # Use rotary encoder diff --git a/keyboards/nullbitsco/scramble/scramble.c b/keyboards/nullbitsco/scramble/scramble.c index 3e981cfbb327..f9f28d2c31bc 100644 --- a/keyboards/nullbitsco/scramble/scramble.c +++ b/keyboards/nullbitsco/scramble/scramble.c @@ -1,5 +1,5 @@ /* -Copyright 2020 Jay Greco +Copyright 2021 Jay Greco This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/keyboards/nullbitsco/scramble/scramble.h b/keyboards/nullbitsco/scramble/scramble.h index 5d3e1b010354..101645e51d25 100644 --- a/keyboards/nullbitsco/scramble/scramble.h +++ b/keyboards/nullbitsco/scramble/scramble.h @@ -1,4 +1,4 @@ -/* Copyright 2020 Jay Greco +/* Copyright 2021 Jay Greco * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/keyboards/numatreus/info.json b/keyboards/numatreus/info.json index 452d2a91508f..3006b87e473f 100644 --- a/keyboards/numatreus/info.json +++ b/keyboards/numatreus/info.json @@ -2,8 +2,6 @@ "keyboard_name": "numatreus", "url": "", "maintainer": "qmk", - "width": 13, - "height": 4.7, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0.6}, {"x":1, "y":0.35}, {"x":2, "y":0}, {"x":3, "y":0.35}, {"x":4, "y":0.7}, {"x":8, "y":0.7}, {"x":9, "y":0.35}, {"x":10, "y":0}, {"x":11, "y":0.35}, {"x":12, "y":0.6}, {"x":0, "y":1.6}, {"x":1, "y":1.35}, {"x":2, "y":1}, {"x":3, "y":1.35}, {"x":4, "y":1.7}, {"x":8, "y":1.7}, {"x":9, "y":1.35}, {"x":10, "y":1}, {"x":11, "y":1.35}, {"x":12, "y":1.6}, {"x":0, "y":2.6}, {"x":1, "y":2.35}, {"x":2, "y":2}, {"x":3, "y":2.35}, {"x":4, "y":2.7}, {"x":8, "y":2.7}, {"x":9, "y":2.35}, {"x":10, "y":2}, {"x":11, "y":2.35}, {"x":12, "y":2.6}, {"x":0, "y":3.6}, {"x":1, "y":3.35}, {"x":2, "y":3}, {"x":3, "y":3.35}, {"x":4, "y":3.7}, {"x":5, "y":2.95, "h":1.5}, {"x":7, "y":2.95, "h":1.5}, {"x":8, "y":3.7}, {"x":9, "y":3.35}, {"x":10, "y":3}, {"x":11, "y":3.35}, {"x":12, "y":3.6}] diff --git a/keyboards/numatreus/keymaps/hdbx/keymap.c b/keyboards/numatreus/keymaps/hdbx/keymap.c index 98fe4d67d8c2..44b3fffe244d 100644 --- a/keyboards/numatreus/keymaps/hdbx/keymap.c +++ b/keyboards/numatreus/keymaps/hdbx/keymap.c @@ -123,7 +123,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_EXLM, JP_AT, KC_HASH, KC_DLR, KC_PERC, KC_HOME, KC_APP, KC_INS, KC_CALC, KC_PSCR, JP_CIRC, JP_AMPR, JP_ASTR, JP_YEN, JP_PIPE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_SCLN, JP_GRV, JP_LCBR, JP_RCBR, KC_LT, KC_GT, KC_END, KC_MUTE, JP_LPRN, JP_RPRN, KC_QUES, - KC_LALT, KC_LGUI, JP_GRV, KC_DEL, _______, KC_LCTL, WN_CAPS, _______, KC_RCTL, JP_UNDS, JP_DQT, KC_RSFT + KC_LALT, KC_LGUI, JP_GRV, KC_DEL, _______, KC_LCTL, WN_CAPS, _______, KC_RCTL, JP_UNDS, JP_DQUO, KC_RSFT ), /* GAME ゲームやテンキー固定で使用するレイヤーです。AdjustレイヤーでGを押下して遷移。戻るときはtoBaseから。 diff --git a/keyboards/numatreus/post_rules.mk b/keyboards/numatreus/post_rules.mk new file mode 100644 index 000000000000..1f49875d0fe9 --- /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 f1efe4cc5eb3..6f3e6ca485e6 100644 --- a/keyboards/numatreus/rules.mk +++ b/keyboards/numatreus/rules.mk @@ -2,35 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = no # 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 -#MIDI_ENABLE = no # MIDI controls UNICODE_ENABLE = yes # Unicode -#BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID -#TAP_DANCE_ENABLE = yes 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/ocean/gin_v2/config.h b/keyboards/ocean/gin_v2/config.h new file mode 100644 index 000000000000..2f70ad3f5e1e --- /dev/null +++ b/keyboards/ocean/gin_v2/config.h @@ -0,0 +1,51 @@ +/*Copyright 2021 Ocean + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +#define VENDOR_ID 0x9624 +#define PRODUCT_ID 0x0005 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Ocean +#define PRODUCT Gin V2 + +/* key matrix size */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 8 + +/* + * 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) + * + */ +/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14*/ +#define MATRIX_ROW_PINS { D1, D0, D4, C6, D7, E6, B4, B5 } +#define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, F5, F4 } +#define UNUSED_PINS { D2, D3 } + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION ROW2COL + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + diff --git a/keyboards/ocean/gin_v2/gin_v2.c b/keyboards/ocean/gin_v2/gin_v2.c new file mode 100644 index 000000000000..3a8a32881772 --- /dev/null +++ b/keyboards/ocean/gin_v2/gin_v2.c @@ -0,0 +1,15 @@ +/* Copyright 2021 Ocean + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "gin_v2.h" diff --git a/keyboards/ocean/gin_v2/gin_v2.h b/keyboards/ocean/gin_v2/gin_v2.h new file mode 100644 index 000000000000..dd457dcc926f --- /dev/null +++ b/keyboards/ocean/gin_v2/gin_v2.h @@ -0,0 +1,37 @@ +/* Copyright 2021 Ocean + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +#define LAYOUT(\ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, K07, K27, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K47, \ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K46, K56, K67, \ + K60, K70, K61, K71, K62, K72, K63, K74, K65, K75, K66, K76 \ +) \ +{ \ + { K00, K01, K02, K03, K04, K05, K06, K07 }, \ + { K10, K11, K12, K13, K14, K15, K16, XXX }, \ + { K20, K21, K22, K23, K24, K25, K26, K27 }, \ + { K30, K31, K32, K33, K34, K35, K36, XXX }, \ + { K40, K41, K42, K43, K44, K45, K46, K47 }, \ + { K50, K51, K52, K53, K54, K55, K56, XXX }, \ + { K60, K61, K62, K63, XXX, K65, K66, K67 }, \ + { K70, K71, K72, XXX, K74, K75, K76, XXX } \ +} diff --git a/keyboards/ocean/gin_v2/info.json b/keyboards/ocean/gin_v2/info.json new file mode 100644 index 000000000000..cd9d80941971 --- /dev/null +++ b/keyboards/ocean/gin_v2/info.json @@ -0,0 +1,72 @@ +{ + "keyboard_name": "Gin V2", + "url": "", + "maintainer": "Ocean", + "layouts": { + "LAYOUT": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3.25, "y": 0}, + {"x": 4.25, "y": 0}, + {"x": 5.25, "y": 0}, + {"x": 6.25, "y": 0}, + {"x": 7.25, "y": 0}, + {"x": 8.25, "y": 0}, + {"x": 9.25, "y": 0}, + {"x": 10.25, "y": 0}, + {"x": 11.25, "y": 0}, + {"x": 12.25, "y": 0}, + {"x": 13.25, "y": 0}, + {"x": 14.25, "y": 0}, + {"x": 15.25, "y": 0}, + + {"x": 0, "y": 1}, + {"x": 1, "y": 1}, + {"x": 2, "y": 1}, + {"x": 3.25, "y": 1, "w": 1.25}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"x": 10.5, "y": 1}, + {"x": 11.5, "y": 1}, + {"x": 12.5, "y": 1}, + {"x": 13.5, "y": 1}, + {"x": 14.5, "y": 1, "w": 1.75}, + + {"x": 0, "y": 2}, + {"x": 1, "y": 2}, + {"x": 2, "y": 2}, + {"x": 3.25, "y": 2, "w": 1.75}, + {"x": 5, "y": 2}, + {"x": 6, "y": 2}, + {"x": 7, "y": 2}, + {"x": 8, "y": 2}, + {"x": 9, "y": 2}, + {"x": 10, "y": 2}, + {"x": 11, "y": 2}, + {"x": 12, "y": 2}, + {"x": 13, "y": 2}, + {"x": 14, "y": 2}, + {"x": 15, "y": 2, "w": 1.25}, + + {"x": 0, "y": 3}, + {"x": 1, "y": 3}, + {"x": 2, "y": 3}, + {"x": 3.25, "y": 3, "w": 1.25}, + {"x": 4.5, "y": 3, "w": 1.25}, + {"x": 5.75, "y": 3, "w": 1.25}, + {"x": 7, "y": 3, "w": 2.25}, + {"x": 9.25, "y": 3, "w": 2.75}, + {"x": 12, "y": 3, "w": 1.25}, + {"x": 13.25, "y": 3}, + {"x": 14.25, "y": 3}, + {"x": 15.25, "y": 3} + ] + } + } +} diff --git a/keyboards/ocean/gin_v2/keymaps/default/keymap.c b/keyboards/ocean/gin_v2/keymaps/default/keymap.c new file mode 100644 index 000000000000..5e9944969486 --- /dev/null +++ b/keyboards/ocean/gin_v2/keymaps/default/keymap.c @@ -0,0 +1,32 @@ +/* Copyright 2021 Ocean + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_P7, KC_P8, KC_P9, KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, KC_BSPC, + KC_P4, KC_P5, KC_P6, KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT, + KC_P1, KC_P2, KC_P3, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_P0, KC_PDOT, KC_PENT, KC_LCTRL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, MO(1), KC_RALT, KC_RGUI, KC_RCTRL + ), + + [1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; diff --git a/keyboards/ocean/gin_v2/keymaps/via/keymap.c b/keyboards/ocean/gin_v2/keymaps/via/keymap.c new file mode 100644 index 000000000000..dbfdd239111a --- /dev/null +++ b/keyboards/ocean/gin_v2/keymaps/via/keymap.c @@ -0,0 +1,46 @@ +/* Copyright 2021 Ocean + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_P7, KC_P8, KC_P9, KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, KC_BSPC, + KC_P4, KC_P5, KC_P6, KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT, + KC_P1, KC_P2, KC_P3, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_P0, KC_PDOT, KC_PENT, KC_LCTRL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, MO(1), KC_RALT, KC_RGUI, KC_RCTRL + ), + + [1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; diff --git a/keyboards/ocean/gin_v2/keymaps/via/rules.mk b/keyboards/ocean/gin_v2/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/ocean/gin_v2/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/ocean/gin_v2/readme.md b/keyboards/ocean/gin_v2/readme.md new file mode 100644 index 000000000000..c50aae196977 --- /dev/null +++ b/keyboards/ocean/gin_v2/readme.md @@ -0,0 +1,24 @@ +# Gin V2 + +![Gin V2](https://i.imgur.com/CQiImvuh.jpeg) + + +40% keyboard with southpaw numpad + +* Keyboard Maintainer: Ocean +* Hardware Supported: Gin V2, Pro Micro +* Hardware Availability: [Local Marketplace](https://tokopedia.com/) + +Make example for this keyboard (after setting up your build environment): + + make ocean/gin_v2:default + +Flashing example for this keyboard: + + make ocean/gin_v2:default:flash + +## Bootloader + +To Enter the bootloader you can double click reset button on board when you flash the firmware + +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/ocean/gin_v2/rules.mk b/keyboards/ocean/gin_v2/rules.mk new file mode 100644 index 000000000000..b97001801122 --- /dev/null +++ b/keyboards/ocean/gin_v2/rules.mk @@ -0,0 +1,19 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 diff --git a/keyboards/ocean/slamz/config.h b/keyboards/ocean/slamz/config.h new file mode 100644 index 000000000000..5f27a3a6d09f --- /dev/null +++ b/keyboards/ocean/slamz/config.h @@ -0,0 +1,50 @@ +/*Copyright 2021 Ocean + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +#define VENDOR_ID 0x9624 +#define PRODUCT_ID 0x0011 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Ocean +#define PRODUCT Slamz + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 10 + +/* + * 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) + * + */ +/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14*/ +#define MATRIX_ROW_PINS { D2, D1, D0, D4 } +#define MATRIX_COL_PINS { C6, D7, E6, B4, B5, B6, B2, B3, B1, F7 } + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION ROW2COL + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + diff --git a/keyboards/ocean/slamz/info.json b/keyboards/ocean/slamz/info.json new file mode 100644 index 000000000000..4d5fe17dc326 --- /dev/null +++ b/keyboards/ocean/slamz/info.json @@ -0,0 +1,10 @@ +{ + "keyboard_name": "Slamz", + "url": "", + "maintainer": "Ocean", + "layouts": { + "LAYOUT": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}] + } + } +} diff --git a/keyboards/ocean/slamz/keymaps/default/keymap.c b/keyboards/ocean/slamz/keymaps/default/keymap.c new file mode 100644 index 000000000000..2e4d592fca16 --- /dev/null +++ b/keyboards/ocean/slamz/keymaps/default/keymap.c @@ -0,0 +1,25 @@ +/* Copyright 2021 Ocean + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, + KC_LCTRL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTRL + ), +}; diff --git a/keyboards/ocean/slamz/keymaps/via/keymap.c b/keyboards/ocean/slamz/keymaps/via/keymap.c new file mode 100644 index 000000000000..1149e3305dee --- /dev/null +++ b/keyboards/ocean/slamz/keymaps/via/keymap.c @@ -0,0 +1,46 @@ +/* Copyright 2021 Ocean + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, + KC_LCTRL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTRL + ), + + [1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; diff --git a/keyboards/ocean/slamz/keymaps/via/rules.mk b/keyboards/ocean/slamz/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/ocean/slamz/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/ocean/slamz/readme.md b/keyboards/ocean/slamz/readme.md new file mode 100644 index 000000000000..edc5065913db --- /dev/null +++ b/keyboards/ocean/slamz/readme.md @@ -0,0 +1,23 @@ +# Slamz + +![Slamz](https://i.imgur.com/rWtHIfYh.jpeg) + +Split Ortholinear 4x10 + +* Keyboard Maintainer: Ocean +* Hardware Supported: Slamz, Pro Micro +* Hardware Availability: [Local Marketplace](https://tokopedia.com/) + +Make example for this keyboard (after setting up your build environment): + + make ocean/slamz:default + +Flashing example for this keyboard: + + make ocean/slamz:default:flash + +## Bootloader + +To Enter the bootloader you can double click reset button on board when you flash the firmware + +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/ocean/slamz/rules.mk b/keyboards/ocean/slamz/rules.mk new file mode 100644 index 000000000000..b97001801122 --- /dev/null +++ b/keyboards/ocean/slamz/rules.mk @@ -0,0 +1,19 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 diff --git a/keyboards/ocean/slamz/slamz.c b/keyboards/ocean/slamz/slamz.c new file mode 100644 index 000000000000..fbfca8831a46 --- /dev/null +++ b/keyboards/ocean/slamz/slamz.c @@ -0,0 +1,15 @@ +/* Copyright 2021 Ocean + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "slamz.h" diff --git a/keyboards/ocean/slamz/slamz.h b/keyboards/ocean/slamz/slamz.h new file mode 100644 index 000000000000..da990b0f56d1 --- /dev/null +++ b/keyboards/ocean/slamz/slamz.h @@ -0,0 +1,31 @@ +/* Copyright 2021 Ocean + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#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 \ +) \ +{ \ + { 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 } \ +} diff --git a/keyboards/ocean/stealth/config.h b/keyboards/ocean/stealth/config.h new file mode 100644 index 000000000000..ab1860332eff --- /dev/null +++ b/keyboards/ocean/stealth/config.h @@ -0,0 +1,51 @@ +/*Copyright 2021 Ocean + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +#define VENDOR_ID 0x9624 +#define PRODUCT_ID 0x0010 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Ocean +#define PRODUCT Stealth + +/* key matrix size */ +#define MATRIX_ROWS 1 +#define MATRIX_COLS 3 + +/* + * 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) + * + */ +/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14*/ +#define MATRIX_ROW_PINS { D1 } +#define MATRIX_COL_PINS { D0, D4, C6 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION ROW2COL + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + diff --git a/keyboards/ocean/stealth/info.json b/keyboards/ocean/stealth/info.json new file mode 100644 index 000000000000..3342319c8eb2 --- /dev/null +++ b/keyboards/ocean/stealth/info.json @@ -0,0 +1,10 @@ +{ + "keyboard_name": "Stealth", + "url": "", + "maintainer": "Ocean", + "layouts": { + "LAYOUT": { + "layout": [{"x":0, "y":0, "w":2.25}, {"x":0, "y":1, "w":1.25}, {"x":1.25, "y":1}] + } + } +} diff --git a/keyboards/ocean/stealth/keymaps/default/keymap.c b/keyboards/ocean/stealth/keymaps/default/keymap.c new file mode 100644 index 000000000000..81f4332c2776 --- /dev/null +++ b/keyboards/ocean/stealth/keymaps/default/keymap.c @@ -0,0 +1,33 @@ +/* Copyright 2021 Ocean + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_LSFT, KC_LCTL, KC_N + ), + + [1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/ocean/stealth/keymaps/via/keymap.c b/keyboards/ocean/stealth/keymaps/via/keymap.c new file mode 100644 index 000000000000..81f4332c2776 --- /dev/null +++ b/keyboards/ocean/stealth/keymaps/via/keymap.c @@ -0,0 +1,33 @@ +/* Copyright 2021 Ocean + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_LSFT, KC_LCTL, KC_N + ), + + [1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/ocean/stealth/keymaps/via/rules.mk b/keyboards/ocean/stealth/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/ocean/stealth/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/ocean/stealth/readme.md b/keyboards/ocean/stealth/readme.md new file mode 100644 index 000000000000..1f49934110bd --- /dev/null +++ b/keyboards/ocean/stealth/readme.md @@ -0,0 +1,23 @@ +# Stealth Macropad + +![Stealth](https://i.imgur.com/Pw5yOdih.jpeg) + +ssSHhh... + +* Keyboard Maintainer: Ocean +* Hardware Supported: Stealth Macropad, Pro Micro +* Hardware Availability: [Local Marketplace](https://tokopedia.com/) + +Make example for this keyboard (after setting up your build environment): + + make ocean/stealth:default + +Flashing example for this keyboard: + + make ocean/stealth:default:flash + +## Bootloader + +To Enter the bootloader you can double click reset button on board when you flash the firmware + +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/ocean/stealth/rules.mk b/keyboards/ocean/stealth/rules.mk new file mode 100644 index 000000000000..eb84d98390a9 --- /dev/null +++ b/keyboards/ocean/stealth/rules.mk @@ -0,0 +1,19 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 \ No newline at end of file diff --git a/keyboards/ocean/stealth/stealth.c b/keyboards/ocean/stealth/stealth.c new file mode 100644 index 000000000000..656701cfd202 --- /dev/null +++ b/keyboards/ocean/stealth/stealth.c @@ -0,0 +1,15 @@ +/* Copyright 2021 Ocean + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "stealth.h" diff --git a/keyboards/ocean/stealth/stealth.h b/keyboards/ocean/stealth/stealth.h new file mode 100644 index 000000000000..b86cd2f05f73 --- /dev/null +++ b/keyboards/ocean/stealth/stealth.h @@ -0,0 +1,25 @@ +/* Copyright 2021 Ocean + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define LAYOUT(\ + K00, K01, K02 \ +) \ +{ \ + { K00, K01, K02 }, \ +} diff --git a/keyboards/ocean/sus/config.h b/keyboards/ocean/sus/config.h new file mode 100644 index 000000000000..c3e2a3263a35 --- /dev/null +++ b/keyboards/ocean/sus/config.h @@ -0,0 +1,51 @@ +/*Copyright 2021 Ocean + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +#define VENDOR_ID 0x9624 +#define PRODUCT_ID 0x0009 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Ocean +#define PRODUCT Sus + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 3 + +/* + * 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) + * + */ +/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14*/ +#define MATRIX_ROW_PINS { B5, B4, E6, D7 } +#define MATRIX_COL_PINS { C6, D4, D0 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION ROW2COL + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + diff --git a/keyboards/ocean/sus/info.json b/keyboards/ocean/sus/info.json new file mode 100644 index 000000000000..3665038b6fd0 --- /dev/null +++ b/keyboards/ocean/sus/info.json @@ -0,0 +1,26 @@ +{ + "keyboard_name": "SUS", + "url": " ", + "maintainer": "Ocean", + "layouts": { + "LAYOUT_ortho_4x3": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "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":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3} + ] + } + } +} diff --git a/keyboards/ocean/sus/keymaps/default/keymap.c b/keyboards/ocean/sus/keymaps/default/keymap.c new file mode 100644 index 000000000000..9b18b6af2607 --- /dev/null +++ b/keyboards/ocean/sus/keymaps/default/keymap.c @@ -0,0 +1,45 @@ +/* Copyright 2021 Ocean + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ortho_4x3( + KC_P7, KC_P8, KC_P9, + KC_P4, KC_P5, KC_P6, + KC_P1, KC_P2, KC_P3, + KC_PENT, KC_P0, MO(1) + ), + + [1] = LAYOUT_ortho_4x3( + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT_ortho_4x3( + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT_ortho_4x3( + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/ocean/sus/keymaps/via/keymap.c b/keyboards/ocean/sus/keymaps/via/keymap.c new file mode 100644 index 000000000000..9b18b6af2607 --- /dev/null +++ b/keyboards/ocean/sus/keymaps/via/keymap.c @@ -0,0 +1,45 @@ +/* Copyright 2021 Ocean + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ortho_4x3( + KC_P7, KC_P8, KC_P9, + KC_P4, KC_P5, KC_P6, + KC_P1, KC_P2, KC_P3, + KC_PENT, KC_P0, MO(1) + ), + + [1] = LAYOUT_ortho_4x3( + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT_ortho_4x3( + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT_ortho_4x3( + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/ocean/sus/keymaps/via/rules.mk b/keyboards/ocean/sus/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/ocean/sus/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/ocean/sus/readme.md b/keyboards/ocean/sus/readme.md new file mode 100644 index 000000000000..5cc8a94590cd --- /dev/null +++ b/keyboards/ocean/sus/readme.md @@ -0,0 +1,24 @@ +# SUS Board + +![SUS](https://user-images.githubusercontent.com/30220306/126883340-47401d95-2095-4e55-ba5c-4ae7acaa430f.png) + + +A Macropad like a amogus + +* Keyboard Maintainer: Ocean +* Hardware Supported: Sus Board, Pro Micro +* Hardware Availability: Private GB + +Make example for this keyboard (after setting up your build environment): + + make ocean/sus:default + +Flashing example for this keyboard: + + make ocean/sus:default:flash + +## Bootloader + +To Enter the bootloader you can double click reset button on board when you flash the firmware + +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/ocean/sus/rules.mk b/keyboards/ocean/sus/rules.mk new file mode 100644 index 000000000000..5fb32b4674b8 --- /dev/null +++ b/keyboards/ocean/sus/rules.mk @@ -0,0 +1,19 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 \ No newline at end of file diff --git a/keyboards/ocean/sus/sus.c b/keyboards/ocean/sus/sus.c new file mode 100644 index 000000000000..d04a12bfbaad --- /dev/null +++ b/keyboards/ocean/sus/sus.c @@ -0,0 +1,15 @@ +/* Copyright 2021 Ocean + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "sus.h" diff --git a/keyboards/ocean/sus/sus.h b/keyboards/ocean/sus/sus.h new file mode 100644 index 000000000000..cba5f3cbc8e7 --- /dev/null +++ b/keyboards/ocean/sus/sus.h @@ -0,0 +1,31 @@ +/* Copyright 2021 Ocean + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define LAYOUT_ortho_4x3(\ + K00, K01, K02, \ + K10, K11, K12, \ + K20, K21, K22, \ + K30, K31, K32 \ +) \ +{ \ + { K00, K01, K02 }, \ + { K10, K11, K12 }, \ + { K20, K21, K22 }, \ + { K30, K31, K32 }, \ +} diff --git a/keyboards/ocean/wang_ergo/config.h b/keyboards/ocean/wang_ergo/config.h new file mode 100644 index 000000000000..62c9d2fca209 --- /dev/null +++ b/keyboards/ocean/wang_ergo/config.h @@ -0,0 +1,51 @@ +/*Copyright 2021 Ocean + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +#define VENDOR_ID 0x9624 +#define PRODUCT_ID 0x0008 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Ocean +#define PRODUCT Wang Ergo + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + +/* + * 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) + * + */ +/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14*/ +#define MATRIX_ROW_PINS { F4, F5, F6, F7 } +#define MATRIX_COL_PINS { D1, D0, D4, C6, D7, E6, B4, B5, B6, B2, B3, B1 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION ROW2COL + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + diff --git a/keyboards/ocean/wang_ergo/info.json b/keyboards/ocean/wang_ergo/info.json new file mode 100644 index 000000000000..5ade58c54c70 --- /dev/null +++ b/keyboards/ocean/wang_ergo/info.json @@ -0,0 +1,114 @@ +{ + "keyboard_name": "Wang Ergo", + "url": "", + "maintainer": "oceeean", + "layout_aliases": { + "LAYOUT": "LAYOUT_all" + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"Esc", "x":1, "y":0}, + {"label":"Q", "x":2, "y":0}, + {"label":"W", "x":3, "y":0}, + {"label":"E", "x":4, "y":0}, + {"label":"R", "x":5, "y":0}, + {"label":"T", "x":6, "y":0}, + {"label":"Y", "x":8, "y":0}, + {"label":"U", "x":9, "y":0}, + {"label":"I", "x":10, "y":0}, + {"label":"O", "x":11, "y":0}, + {"label":"P", "x":12, "y":0}, + {"label":"Del", "x":13, "y":0}, + {"label":"Backspace", "x":14, "y":0}, + + {"label":"Tab", "x":0.75, "y":1, "w":1.25}, + {"label":"A", "x":2, "y":1}, + {"label":"S", "x":3, "y":1}, + {"label":"D", "x":4, "y":1}, + {"label":"F", "x":5, "y":1}, + {"label":"G", "x":6, "y":1}, + {"label":"H", "x":8, "y":1}, + {"label":"J", "x":9, "y":1}, + {"label":"K", "x":10, "y":1}, + {"label":"L", "x":11, "y":1}, + {"label":";:", "x":12, "y":1}, + {"label":"Enter", "x":13, "y":1, "w":1.75}, + + {"label":"Shift", "x":0.25, "y":2, "w":1.75}, + {"label":"Z", "x":2, "y":2}, + {"label":"X", "x":3, "y":2}, + {"label":"C", "x":4, "y":2}, + {"label":"V", "x":5, "y":2}, + {"label":"B", "x":6, "y":2}, + {"label":"N", "x":8, "y":2}, + {"label":"M", "x":9, "y":2}, + {"label":",<", "x":10, "y":2}, + {"label":".>", "x":11, "y":2}, + {"label":"/?", "x":12, "y":2}, + {"label":"Fn", "x":13, "y":2, "w":1.25}, + + {"label":"Ctrl", "x":0, "y":3}, + {"label":"GUI", "x":1, "y":3}, + {"label":"Alt", "x":4, "y":3}, + {"label":"Space", "x":5, "y":3}, + {"label":"Space", "x":6, "y":3}, + {"label":"Space", "x":8, "y":3}, + {"label":"Space", "x":9, "y":3}, + {"label":"Alt", "x":10, "y":3}, + {"label":"Ctrl", "x":13, "y":3} + ] + }, + "LAYOUT_2x2u": { + "layout": [ + {"label":"Esc", "x":1, "y":0}, + {"label":"Q", "x":2, "y":0}, + {"label":"W", "x":3, "y":0}, + {"label":"E", "x":4, "y":0}, + {"label":"R", "x":5, "y":0}, + {"label":"T", "x":6, "y":0}, + {"label":"Y", "x":8, "y":0}, + {"label":"U", "x":9, "y":0}, + {"label":"I", "x":10, "y":0}, + {"label":"O", "x":11, "y":0}, + {"label":"P", "x":12, "y":0}, + {"label":"Del", "x":13, "y":0}, + {"label":"Backspace", "x":14, "y":0}, + + {"label":"Tab", "x":0.75, "y":1, "w":1.25}, + {"label":"A", "x":2, "y":1}, + {"label":"S", "x":3, "y":1}, + {"label":"D", "x":4, "y":1}, + {"label":"F", "x":5, "y":1}, + {"label":"G", "x":6, "y":1}, + {"label":"H", "x":8, "y":1}, + {"label":"J", "x":9, "y":1}, + {"label":"K", "x":10, "y":1}, + {"label":"L", "x":11, "y":1}, + {"label":";:", "x":12, "y":1}, + {"label":"Enter", "x":13, "y":1, "w":1.75}, + + {"label":"Shift", "x":0.25, "y":2, "w":1.75}, + {"label":"Z", "x":2, "y":2}, + {"label":"X", "x":3, "y":2}, + {"label":"C", "x":4, "y":2}, + {"label":"V", "x":5, "y":2}, + {"label":"B", "x":6, "y":2}, + {"label":"N", "x":8, "y":2}, + {"label":"M", "x":9, "y":2}, + {"label":",<", "x":10, "y":2}, + {"label":".>", "x":11, "y":2}, + {"label":"/?", "x":12, "y":2}, + {"label":"Fn", "x":13, "y":2, "w":1.25}, + + {"label":"Ctrl", "x":0, "y":3}, + {"label":"GUI", "x":1, "y":3}, + {"label":"Alt", "x":4, "y":3}, + {"label":"Space", "x":5, "y":3, "w":2}, + {"label":"Space", "x":8, "y":3, "w":2}, + {"label":"Alt", "x":10, "y":3}, + {"label":"Ctrl", "x":13, "y":3} + ] + } + } +} diff --git a/keyboards/ocean/wang_ergo/keymaps/default/keymap.c b/keyboards/ocean/wang_ergo/keymaps/default/keymap.c new file mode 100644 index 000000000000..a50dde256baa --- /dev/null +++ b/keyboards/ocean/wang_ergo/keymaps/default/keymap.c @@ -0,0 +1,24 @@ +/* Copyright 2021 Ocean + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RCTL + ), +}; diff --git a/keyboards/ocean/wang_ergo/keymaps/default_2x2u/keymap.c b/keyboards/ocean/wang_ergo/keymaps/default_2x2u/keymap.c new file mode 100644 index 000000000000..7177819e455f --- /dev/null +++ b/keyboards/ocean/wang_ergo/keymaps/default_2x2u/keymap.c @@ -0,0 +1,24 @@ +/* Copyright 2021 Ocean + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_2x2u( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, KC_RCTL + ), +}; diff --git a/keyboards/ocean/wang_ergo/keymaps/via/keymap.c b/keyboards/ocean/wang_ergo/keymaps/via/keymap.c new file mode 100644 index 000000000000..c13785686fb7 --- /dev/null +++ b/keyboards/ocean/wang_ergo/keymaps/via/keymap.c @@ -0,0 +1,45 @@ +/* Copyright 2021 Ocean + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RCTL + ), + + [1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; diff --git a/keyboards/ocean/wang_ergo/keymaps/via/rules.mk b/keyboards/ocean/wang_ergo/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/ocean/wang_ergo/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/ocean/wang_ergo/readme.md b/keyboards/ocean/wang_ergo/readme.md new file mode 100644 index 000000000000..716459a25e7c --- /dev/null +++ b/keyboards/ocean/wang_ergo/readme.md @@ -0,0 +1,24 @@ +# Wang Ergo + +![Wang Ergo](https://i.imgur.com/vsYWYfxh.jpeg) + + +40% ortholinear ergo keyboard + +* Keyboard Maintainer: Ocean +* Hardware Supported: Wang Ergo, Pro Micro +* Hardware Availability: [Local Marketplace](https://tokopedia.com/) + +Make example for this keyboard (after setting up your build environment): + + make ocean/wang_ergo:default + +Flashing example for this keyboard: + + make ocean/wang_ergo:default:flash + +## Bootloader + +To Enter the bootloader you can double click reset button on board when you flash the firmware + +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/ocean/wang_ergo/rules.mk b/keyboards/ocean/wang_ergo/rules.mk new file mode 100644 index 000000000000..eb84d98390a9 --- /dev/null +++ b/keyboards/ocean/wang_ergo/rules.mk @@ -0,0 +1,19 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 \ No newline at end of file diff --git a/keyboards/ocean/wang_ergo/wang_ergo.c b/keyboards/ocean/wang_ergo/wang_ergo.c new file mode 100644 index 000000000000..339c8465ec1d --- /dev/null +++ b/keyboards/ocean/wang_ergo/wang_ergo.c @@ -0,0 +1,15 @@ +/* Copyright 2021 Ocean + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "wang_ergo.h" diff --git a/keyboards/ocean/wang_ergo/wang_ergo.h b/keyboards/ocean/wang_ergo/wang_ergo.h new file mode 100644 index 000000000000..68074c299869 --- /dev/null +++ b/keyboards/ocean/wang_ergo/wang_ergo.h @@ -0,0 +1,61 @@ +/* Copyright 2021 Ocean + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +/* + * ┌───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┬───┐ + * │00 │01 │02 │03 │04 │05 │ │06 │07 │08 │09 │0A │0B │3A │ + * ┌┴───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┴──┬┘ + * │10 │11 │12 │13 │14 │15 │ │16 │17 │18 │19 │1A │1B │ + * ┌─┴────┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼────┬─┘ + * │20 │21 │22 │23 │24 │25 │ │26 │27 │28 │29 │2A │2B │ + * ┌┴──┬───┼───┴───┼───┼───┼───┤ ├───┼───┼───┼───┴───┼───┬┘ + * │30 │31 │ │33 │34 │35 │ │36 │37 │38 │ │3B │ + * └───┴───┘ └───┴───┴───┘ └───┴───┴───┘ └───┘ + * ┌───────┐ ┌───────┐ + * │35 │ │36 │ + * └───────┘ └───────┘ + */ + +#define LAYOUT_all(\ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K3A, \ + 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, K33, K34, K35, K36, K37, K38, 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, XXX, K33, K34, K35, K36, K37, K38, XXX, K3A, K3B }, \ +} + +#define LAYOUT_2x2u(\ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K3A, \ + 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, K33, K35, K36, K38, 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, XXX, K33, XXX, K35, K36, XXX, K38, XXX, K3A, K3B }, \ +} diff --git a/keyboards/ocean/wang_v2/config.h b/keyboards/ocean/wang_v2/config.h new file mode 100644 index 000000000000..f5f1e9231c0a --- /dev/null +++ b/keyboards/ocean/wang_v2/config.h @@ -0,0 +1,51 @@ +/*Copyright 2021 Ocean + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +#define VENDOR_ID 0x9624 +#define PRODUCT_ID 0x0004 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Ocean +#define PRODUCT Wang V2 + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 13 + +/* + * 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) + * + */ +/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14*/ +#define MATRIX_ROW_PINS { F4, F5, F6, F7 } +#define MATRIX_COL_PINS { D1, D0, D4, C6, D7, E6, B4, B5, B6, B2, B3, B1, D3 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION ROW2COL + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + diff --git a/keyboards/ocean/wang_v2/info.json b/keyboards/ocean/wang_v2/info.json new file mode 100644 index 000000000000..310f4489564b --- /dev/null +++ b/keyboards/ocean/wang_v2/info.json @@ -0,0 +1,10 @@ +{ + "keyboard_name": "Wang V2", + "url": "", + "maintainer": "Ocean", + "layouts": { + "LAYOUT": { + "layout": [{"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":0.75, "y":1, "w":1.25}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":12, "y":1, "w":1.75}, {"x":0.25, "y":2, "w":1.75}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2, "w":1.25}, {"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":1.25}, {"x":5, "y":3, "w":2}, {"x":7, "y":3, "w":2}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}, {"x":12, "y":3}] + } + } +} diff --git a/keyboards/ocean/wang_v2/keymaps/default/keymap.c b/keyboards/ocean/wang_v2/keymaps/default/keymap.c new file mode 100644 index 000000000000..b30e0d7a4eb3 --- /dev/null +++ b/keyboards/ocean/wang_v2/keymaps/default/keymap.c @@ -0,0 +1,45 @@ +/* Copyright 2021 Ocean + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_SPC, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + + [1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; diff --git a/keyboards/ocean/wang_v2/keymaps/via/keymap.c b/keyboards/ocean/wang_v2/keymaps/via/keymap.c new file mode 100644 index 000000000000..b30e0d7a4eb3 --- /dev/null +++ b/keyboards/ocean/wang_v2/keymaps/via/keymap.c @@ -0,0 +1,45 @@ +/* Copyright 2021 Ocean + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_SPC, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + + [1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; diff --git a/keyboards/ocean/wang_v2/keymaps/via/rules.mk b/keyboards/ocean/wang_v2/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/ocean/wang_v2/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/ocean/wang_v2/readme.md b/keyboards/ocean/wang_v2/readme.md new file mode 100644 index 000000000000..1f8056a8ee53 --- /dev/null +++ b/keyboards/ocean/wang_v2/readme.md @@ -0,0 +1,24 @@ +# Wang V2 + +![Wang V2](https://i.imgur.com/KhonJdvh.jpg) + + +40% keyboard with southpaw numpad + +* Keyboard Maintainer: Ocean +* Hardware Supported: Wang V2, Pro Micro +* Hardware Availability: [Local Marketplace](https://tokopedia.com/) + +Make example for this keyboard (after setting up your build environment): + + make ocean/wang_v2:default + +Flashing example for this keyboard: + + make ocean/wang_v2:default:flash + +## Bootloader + +To Enter the bootloader you can double click reset button on board when you flash the firmware + +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/ocean/wang_v2/rules.mk b/keyboards/ocean/wang_v2/rules.mk new file mode 100644 index 000000000000..5fb32b4674b8 --- /dev/null +++ b/keyboards/ocean/wang_v2/rules.mk @@ -0,0 +1,19 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 \ No newline at end of file diff --git a/keyboards/ocean/wang_v2/wang_v2.c b/keyboards/ocean/wang_v2/wang_v2.c new file mode 100644 index 000000000000..b04df65bae34 --- /dev/null +++ b/keyboards/ocean/wang_v2/wang_v2.c @@ -0,0 +1,15 @@ +/* Copyright 2021 Ocean + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "wang_v2.h" diff --git a/keyboards/ocean/wang_v2/wang_v2.h b/keyboards/ocean/wang_v2/wang_v2.h new file mode 100644 index 000000000000..bcac9dd690cc --- /dev/null +++ b/keyboards/ocean/wang_v2/wang_v2.h @@ -0,0 +1,31 @@ +/* Copyright 2021 Ocean + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#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, K35, 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, KC_NO, K35, K36, KC_NO, K38, K39, K3A, K3B, KC_NO }, \ +} diff --git a/keyboards/oddball/adns/adns.c b/keyboards/oddball/adns/adns.c deleted file mode 100644 index 9338808ff799..000000000000 --- a/keyboards/oddball/adns/adns.c +++ /dev/null @@ -1,219 +0,0 @@ -/* Copyright 2020 Alexander Tulloh - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "spi_master.h" -#include "quantum.h" -#include "adns9800_srom_A6.h" -#include "adns.h" - -// registers -#define REG_Product_ID 0x00 -#define REG_Revision_ID 0x01 -#define REG_Motion 0x02 -#define REG_Delta_X_L 0x03 -#define REG_Delta_X_H 0x04 -#define REG_Delta_Y_L 0x05 -#define REG_Delta_Y_H 0x06 -#define REG_SQUAL 0x07 -#define REG_Pixel_Sum 0x08 -#define REG_Maximum_Pixel 0x09 -#define REG_Minimum_Pixel 0x0a -#define REG_Shutter_Lower 0x0b -#define REG_Shutter_Upper 0x0c -#define REG_Frame_Period_Lower 0x0d -#define REG_Frame_Period_Upper 0x0e -#define REG_Configuration_I 0x0f -#define REG_Configuration_II 0x10 -#define REG_Frame_Capture 0x12 -#define REG_SROM_Enable 0x13 -#define REG_Run_Downshift 0x14 -#define REG_Rest1_Rate 0x15 -#define REG_Rest1_Downshift 0x16 -#define REG_Rest2_Rate 0x17 -#define REG_Rest2_Downshift 0x18 -#define REG_Rest3_Rate 0x19 -#define REG_Frame_Period_Max_Bound_Lower 0x1a -#define REG_Frame_Period_Max_Bound_Upper 0x1b -#define REG_Frame_Period_Min_Bound_Lower 0x1c -#define REG_Frame_Period_Min_Bound_Upper 0x1d -#define REG_Shutter_Max_Bound_Lower 0x1e -#define REG_Shutter_Max_Bound_Upper 0x1f -#define REG_LASER_CTRL0 0x20 -#define REG_Observation 0x24 -#define REG_Data_Out_Lower 0x25 -#define REG_Data_Out_Upper 0x26 -#define REG_SROM_ID 0x2a -#define REG_Lift_Detection_Thr 0x2e -#define REG_Configuration_V 0x2f -#define REG_Configuration_IV 0x39 -#define REG_Power_Up_Reset 0x3a -#define REG_Shutdown 0x3b -#define REG_Inverse_Product_ID 0x3f -#define REG_Motion_Burst 0x50 -#define REG_SROM_Load_Burst 0x62 -#define REG_Pixel_Burst 0x64 - -#define ADNS_CLOCK_SPEED 2000000 -#define MIN_CPI 200 -#define MAX_CPI 8200 -#define CPI_STEP 200 -#define CLAMP_CPI(value) value < MIN_CPI ? MIN_CPI : value > MAX_CPI ? MAX_CPI : value -#define SPI_MODE 3 -#define SPI_DIVISOR (F_CPU / ADNS_CLOCK_SPEED) -#define US_BETWEEN_WRITES 120 -#define US_BETWEEN_READS 20 -#define US_BEFORE_MOTION 100 -#define MSB1 0x80 - -extern const uint16_t adns_firmware_length; -extern const uint8_t adns_firmware_data[]; - -void adns_spi_start(void){ - spi_start(SPI_SS_PIN, false, SPI_MODE, SPI_DIVISOR); -} - -void adns_write(uint8_t reg_addr, uint8_t data){ - - adns_spi_start(); - spi_write(reg_addr | MSB1); - spi_write(data); - spi_stop(); - wait_us(US_BETWEEN_WRITES); -} - -uint8_t adns_read(uint8_t reg_addr){ - - adns_spi_start(); - spi_write(reg_addr & 0x7f ); - uint8_t data = spi_read(); - spi_stop(); - wait_us(US_BETWEEN_READS); - - return data; -} - -void adns_init() { - - setPinOutput(SPI_SS_PIN); - - spi_init(); - - // reboot - adns_write(REG_Power_Up_Reset, 0x5a); - wait_ms(50); - - // read registers and discard - adns_read(REG_Motion); - adns_read(REG_Delta_X_L); - adns_read(REG_Delta_X_H); - adns_read(REG_Delta_Y_L); - adns_read(REG_Delta_Y_H); - - // upload firmware - - // 3k firmware mode - adns_write(REG_Configuration_IV, 0x02); - - // enable initialisation - adns_write(REG_SROM_Enable, 0x1d); - - // wait a frame - wait_ms(10); - - // start SROM download - adns_write(REG_SROM_Enable, 0x18); - - // write the SROM file - - adns_spi_start(); - - spi_write(REG_SROM_Load_Burst | 0x80); - wait_us(15); - - // send all bytes of the firmware - unsigned char c; - for(int i = 0; i < adns_firmware_length; i++){ - c = (unsigned char)pgm_read_byte(adns_firmware_data + i); - spi_write(c); - wait_us(15); - } - - spi_stop(); - - wait_ms(10); - - // enable laser - uint8_t laser_ctrl0 = adns_read(REG_LASER_CTRL0); - adns_write(REG_LASER_CTRL0, laser_ctrl0 & 0xf0); -} - -config_adns_t adns_get_config(void) { - uint8_t config_1 = adns_read(REG_Configuration_I); - return (config_adns_t){ (config_1 & 0xFF) * CPI_STEP }; -} - -void adns_set_config(config_adns_t config) { - uint8_t config_1 = (CLAMP_CPI(config.cpi) / CPI_STEP) & 0xFF; - adns_write(REG_Configuration_I, config_1); -} - -static int16_t convertDeltaToInt(uint8_t high, uint8_t low){ - - // join bytes into twos compliment - uint16_t twos_comp = (high << 8) | low; - - // convert twos comp to int - if (twos_comp & 0x8000) - return -1 * (~twos_comp + 1); - - return twos_comp; -} - -report_adns_t adns_get_report(void) { - - report_adns_t report = {0, 0}; - - adns_spi_start(); - - // start burst mode - spi_write(REG_Motion_Burst & 0x7f); - - wait_us(US_BEFORE_MOTION); - - uint8_t motion = spi_read(); - - if(motion & 0x80) { - - // clear observation register - spi_read(); - - // delta registers - uint8_t delta_x_l = spi_read(); - uint8_t delta_x_h = spi_read(); - uint8_t delta_y_l = spi_read(); - uint8_t delta_y_h = spi_read(); - - report.x = convertDeltaToInt(delta_x_h, delta_x_l); - report.y = convertDeltaToInt(delta_y_h, delta_y_l); - } - - // clear residual motion - spi_write(REG_Motion & 0x7f); - - spi_stop(); - - return report; -} diff --git a/keyboards/oddball/adns/adns.h b/keyboards/oddball/adns/adns.h deleted file mode 100644 index 2f50b8f1bec0..000000000000 --- a/keyboards/oddball/adns/adns.h +++ /dev/null @@ -1,35 +0,0 @@ -/* Copyright 2020 Alexander Tulloh - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include - -typedef struct { - /* 200 - 8200 CPI supported */ - uint16_t cpi; -} config_adns_t; - -typedef struct { - int16_t x; - int16_t y; -} report_adns_t; - -void adns_init(void); -config_adns_t adns_get_config(void); -void adns_set_config(config_adns_t); -/* Reads and clears the current delta values on the ADNS sensor */ -report_adns_t adns_get_report(void); diff --git a/keyboards/oddball/adns/adns9800_srom_A6.h b/keyboards/oddball/adns/adns9800_srom_A6.h deleted file mode 100644 index f5b3abeb6297..000000000000 --- a/keyboards/oddball/adns/adns9800_srom_A6.h +++ /dev/null @@ -1,3078 +0,0 @@ -#pragma once - -#include "progmem.h" - -const uint16_t adns_firmware_length = 3070; - -const uint8_t adns_firmware_data[] PROGMEM = { -0x03, -0xa6, -0x68, -0x1e, -0x7d, -0x10, -0x7e, -0x7e, -0x5f, -0x1c, -0xb8, -0xf2, -0x47, -0x0c, -0x7b, -0x74, -0x4b, -0x14, -0x8b, -0x75, -0x66, -0x51, -0x0b, -0x8c, -0x76, -0x74, -0x4b, -0x14, -0xaa, -0xd6, -0x0f, -0x9c, -0xba, -0xf6, -0x6e, -0x3f, -0xdd, -0x38, -0xd5, -0x02, -0x80, -0x9b, -0x82, -0x6d, -0x58, -0x13, -0xa4, -0xab, -0xb5, -0xc9, -0x10, -0xa2, -0xc6, -0x0a, -0x7f, -0x5d, -0x19, -0x91, -0xa0, -0xa3, -0xce, -0xeb, -0x3e, -0xc9, -0xf1, -0x60, -0x42, -0xe7, -0x4c, -0xfb, -0x74, -0x6a, -0x56, -0x2e, -0xbf, -0xdd, -0x38, -0xd3, -0x05, -0x88, -0x92, -0xa6, -0xce, -0xff, -0x5d, -0x38, -0xd1, -0xcf, -0xef, -0x58, -0xcb, -0x65, -0x48, -0xf0, -0x35, -0x85, -0xa9, -0xb2, -0x8f, -0x5e, -0xf3, -0x80, -0x94, -0x97, -0x7e, -0x75, -0x97, -0x87, -0x73, -0x13, -0xb0, -0x8a, -0x69, -0xd4, -0x0a, -0xde, -0xc1, -0x79, -0x59, -0x36, -0xdb, -0x9d, -0xd6, -0xb8, -0x15, -0x6f, -0xce, -0x3c, -0x72, -0x32, -0x45, -0x88, -0xdf, -0x6c, -0xa5, -0x6d, -0xe8, -0x76, -0x96, -0x14, -0x74, -0x20, -0xdc, -0xf4, -0xfa, -0x37, -0x6a, -0x27, -0x32, -0xe3, -0x29, -0xbf, -0xc4, -0xc7, -0x06, -0x9d, -0x58, -0xe7, -0x87, -0x7c, -0x2e, -0x9f, -0x6e, -0x49, -0x07, -0x5d, -0x23, -0x64, -0x54, -0x83, -0x6e, -0xcb, -0xb7, -0x77, -0xf7, -0x2b, -0x6e, -0x0f, -0x2e, -0x66, -0x12, -0x60, -0x55, -0x65, -0xfc, -0x43, -0xb3, -0x58, -0x73, -0x5b, -0xe8, -0x67, -0x04, -0x43, -0x02, -0xde, -0xb3, -0x89, -0xa0, -0x6d, -0x3a, -0x27, -0x79, -0x64, -0x5b, -0x0c, -0x16, -0x9e, -0x66, -0xb1, -0x8b, -0x87, -0x0c, -0x5d, -0xf2, -0xb6, -0x3d, -0x71, -0xdf, -0x42, -0x03, -0x8a, -0x06, -0x8d, -0xef, -0x1d, -0xa8, -0x96, -0x5c, -0xed, -0x31, -0x61, -0x5c, -0xa1, -0x34, -0xf6, -0x8c, -0x08, -0x60, -0x33, -0x07, -0x00, -0x3e, -0x79, -0x95, -0x1b, -0x43, -0x7f, -0xfe, -0xb6, -0xa6, -0xd4, -0x9d, -0x76, -0x72, -0xbf, -0xad, -0xc0, -0x15, -0xe8, -0x37, -0x31, -0xa3, -0x72, -0x63, -0x52, -0x1d, -0x1c, -0x5d, -0x51, -0x1b, -0xe1, -0xa9, -0xed, -0x60, -0x32, -0x3e, -0xa9, -0x50, -0x28, -0x53, -0x06, -0x59, -0xe2, -0xfc, -0xe7, -0x02, -0x64, -0x39, -0x21, -0x56, -0x4a, -0xa5, -0x40, -0x80, -0x81, -0xd5, -0x5a, -0x60, -0x7b, -0x68, -0x84, -0xf1, -0xe0, -0xb1, -0xb6, -0x5b, -0xdf, -0xa8, -0x1d, -0x6d, -0x65, -0x20, -0xc0, -0xa2, -0xb9, -0xd9, -0xbb, -0x00, -0xa6, -0xdb, -0x8b, -0x01, -0x53, -0x91, -0xfe, -0xc4, -0x51, -0x85, -0xb0, -0x96, -0x7f, -0xfd, -0x51, -0xdd, -0x14, -0x03, -0x67, -0x2e, -0x75, -0x1c, -0x76, -0xd3, -0x6e, -0xdd, -0x99, -0x55, -0x76, -0xe5, -0xab, -0x23, -0xfc, -0x4a, -0xd5, -0xc6, -0xe8, -0x2e, -0xca, -0x8a, -0xb3, -0xf6, -0x8c, -0x6c, -0xb0, -0xe9, -0xf2, -0xe7, -0x9e, -0x69, -0x41, -0xed, -0xf1, -0x6d, -0xd2, -0x86, -0xd8, -0x7e, -0xcb, -0x5d, -0x47, -0x6c, -0x85, -0x6a, -0x23, -0xed, -0x20, -0x40, -0x93, -0xb4, -0x20, -0xc7, -0xa5, -0xc9, -0xaf, -0x03, -0x15, -0xac, -0x19, -0xe5, -0x2a, -0x36, -0xdf, -0x6d, -0xc5, -0x8c, -0x80, -0x07, -0xce, -0x92, -0x0c, -0xd8, -0x06, -0x62, -0x0f, -0xdd, -0x48, -0x46, -0x1a, -0x53, -0xc7, -0x8a, -0x8c, -0x5d, -0x5d, -0xb4, -0xa1, -0x02, -0xd3, -0xa9, -0xb8, -0xf3, -0x94, -0x8f, -0x3f, -0xe5, -0x54, -0xd4, -0x11, -0x65, -0xb2, -0x5e, -0x09, -0x0b, -0x81, -0xe3, -0x75, -0xa7, -0x89, -0x81, -0x39, -0x6c, -0x46, -0xf6, -0x06, -0x9f, -0x27, -0x3b, -0xb6, -0x2d, -0x5f, -0x1d, -0x4b, -0xd4, -0x7b, -0x1d, -0x61, -0x74, -0x89, -0xe4, -0xe3, -0xbd, -0x98, -0x1b, -0xc4, -0x51, -0x3b, -0xa4, -0xfa, -0xe0, -0x92, -0xf7, -0xbe, -0xf2, -0x4d, -0xbb, -0xff, -0xad, -0x4f, -0x6d, -0x68, -0xc2, -0x79, -0x40, -0xaa, -0x9b, -0x8f, -0x0c, -0x32, -0x4b, -0x5f, -0x3e, -0xab, -0x59, -0x98, -0xb3, -0xf5, -0x1d, -0xac, -0x5e, -0xbc, -0x78, -0xd3, -0x01, -0x6c, -0x64, -0x15, -0x2f, -0xd8, -0x71, -0xa6, -0x2d, -0x45, -0xe1, -0x22, -0x42, -0xe4, -0x4e, -0x04, -0x3c, -0x7d, -0xf4, -0x40, -0x21, -0xb4, -0x67, -0x05, -0xa8, -0xe2, -0xf3, -0x72, -0x87, -0x4c, -0x7d, -0xd9, -0x1b, -0x65, -0x97, -0xf3, -0xc2, -0xe3, -0xe4, -0xc8, -0xd2, -0xde, -0xf6, -0xef, -0xdc, -0xbb, -0x44, -0x08, -0x5e, -0xe2, -0x45, -0x27, -0x01, -0xb0, -0xf6, -0x43, -0xe7, -0x3a, -0xf6, -0xdc, -0x9d, -0xed, -0xf3, -0xc5, -0x0c, -0xb8, -0x9c, -0x98, -0x3a, -0xd8, -0x36, -0xee, -0x96, -0x72, -0x67, -0xe7, -0x81, -0x91, -0xd5, -0x05, -0x0a, -0xe0, -0x82, -0xd5, -0x8f, -0xe8, -0xf9, -0xb0, -0xc9, -0xcf, -0x93, -0xe7, -0x04, -0xc5, -0xbc, -0x2b, -0x43, -0x56, -0x7e, -0xe8, -0x67, -0x7c, -0xe5, -0xfb, -0x49, -0xad, -0x5e, -0x9f, -0x25, -0x13, -0xde, -0x6e, -0x6e, -0xe9, -0xf1, -0xec, -0x87, -0x0b, -0x59, -0x81, -0x76, -0x84, -0x76, -0xb3, -0x24, -0xaf, -0x30, -0xfd, -0x27, -0x8b, -0xab, -0xd8, -0x00, -0x8b, -0x9b, -0x0c, -0xd2, -0xb2, -0x4e, -0x5e, -0x9d, -0x1d, -0x96, -0x01, -0x00, -0x67, -0xc1, -0x5f, -0x02, -0x20, -0xfd, -0x45, -0x6a, -0x01, -0x60, -0x58, -0x45, -0xca, -0x47, -0x21, -0x90, -0x5a, -0xc4, -0x43, -0x26, -0x1a, -0xd7, -0xa5, -0x4a, -0xb2, -0x5d, -0x2b, -0x35, -0x49, -0xfb, -0xa5, -0x17, -0x92, -0x21, -0x1e, -0x93, -0x96, -0x67, -0xa2, -0x7e, -0x36, -0x7a, -0xde, -0x5f, -0xbe, -0x7a, -0x58, -0x9d, -0xf8, -0x78, -0xa3, -0xfa, -0xc8, -0xd5, -0x17, -0xf0, -0x21, -0x97, -0x8c, -0x80, -0xb5, -0x4b, -0x3b, -0xbd, -0xbb, -0x41, -0x21, -0xa8, -0x50, -0x67, -0xf7, -0xe7, -0x19, -0x80, -0x10, -0x8e, -0xce, -0x04, -0x18, -0x3f, -0x51, -0x6b, -0x77, -0xd8, -0x9e, -0x16, -0xaf, -0xec, -0xef, -0x48, -0x16, -0x4d, -0x9e, -0x85, -0x38, -0x18, -0x3e, -0xd4, -0x28, -0x87, -0x60, -0x2a, -0xf6, -0x7f, -0x09, -0x86, -0x6f, -0x9c, -0x3c, -0x3a, -0xff, -0xab, -0xd0, -0x61, -0xa2, -0x97, -0x0d, -0x71, -0x94, -0x7e, -0xfd, -0xb9, -0x80, -0x02, -0x89, -0x6a, -0xb3, -0x84, -0x6c, -0x2a, -0x77, -0x62, -0xbe, -0x0b, -0xf4, -0xaf, -0xac, -0x7b, -0x7c, -0x8e, -0xca, -0x01, -0xba, -0x71, -0x78, -0x94, -0xfd, -0xb5, -0x39, -0xa4, -0x4d, -0x2f, -0x78, -0xcf, -0xca, -0x92, -0x0c, -0x1a, -0x99, -0x48, -0x4c, -0x11, -0x96, -0xb5, -0x4e, -0x41, -0x28, -0xe4, -0xa6, -0xfe, -0x4b, -0x72, -0x91, -0xe7, -0xd4, -0xdd, -0x9f, -0x12, -0xe6, -0x29, -0x38, -0xce, -0x45, -0xae, -0x02, -0xb8, -0x24, -0xae, -0xbd, -0xe9, -0x66, -0x08, -0x62, -0xa2, -0x2c, -0x2b, -0x00, -0xe2, -0x23, -0xd9, -0xc4, -0x48, -0xe4, -0xd3, -0xac, -0xbb, -0x34, -0xc7, -0xf0, -0xe3, -0x4f, -0xb9, -0x30, -0xea, -0xa2, -0x12, -0xf1, -0x30, -0x2c, -0x36, -0xde, -0x48, -0xf2, -0xb0, -0x4c, -0x43, -0x3f, -0x2e, -0x58, -0xe4, -0x20, -0xe3, -0x58, -0xcd, -0x31, -0x22, -0xf0, -0xa2, -0x2a, -0xe6, -0x19, -0x90, -0x55, -0x86, -0xf6, -0x55, -0x79, -0xd1, -0xd7, -0x46, -0x2f, -0xc0, -0xdc, -0x99, -0xe8, -0xf3, -0x6a, -0xdf, -0x7f, -0xeb, -0x24, -0x4a, -0x1e, -0x5a, -0x75, -0xde, -0x2f, -0x5c, -0x19, -0x61, -0x03, -0x53, -0x54, -0x6a, -0x3b, -0x18, -0x70, -0xb6, -0x4f, -0xf1, -0x9c, -0x0a, -0x59, -0x9d, -0x19, -0x92, -0x65, -0x8c, -0x83, -0x14, -0x2d, -0x44, -0x8a, -0x75, -0xa9, -0xf5, -0x90, -0xd2, -0x66, -0x4e, -0xfa, -0x69, -0x0f, -0x5b, -0x0b, -0x98, -0x65, -0xc8, -0x11, -0x42, -0x59, -0x7f, -0xdd, -0x1b, -0x75, -0x17, -0x31, -0x4c, -0x75, -0x58, -0xeb, -0x58, -0x63, -0x7d, -0xf2, -0xa6, -0xc2, -0x6e, -0xb7, -0x3f, -0x3e, -0x5e, -0x47, -0xad, -0xb7, -0x04, -0xe8, -0x05, -0xf8, -0xb2, -0xcf, -0x19, -0xf3, -0xd2, -0x85, -0xfe, -0x3e, -0x3e, -0xb1, -0x62, -0x08, -0x2c, -0x10, -0x07, -0x0d, -0x73, -0x90, -0x17, -0xfa, -0x9b, -0x56, -0x02, -0x75, -0xf9, -0x51, -0xe0, -0xe9, -0x1a, -0x7b, -0x9f, -0xb3, -0xf3, -0x98, -0xb8, -0x1c, -0x9c, -0xe1, -0xd5, -0x35, -0xae, -0xc8, -0x60, -0x48, -0x11, -0x09, -0x94, -0x6b, -0xd0, -0x8b, -0x15, -0xbc, -0x05, -0x68, -0xd3, -0x54, -0x8a, -0x51, -0x39, -0x5c, -0x42, -0x76, -0xce, -0xd8, -0xad, -0x89, -0x30, -0xc9, -0x05, -0x1c, -0xcc, -0x94, -0x3f, -0x0f, -0x90, -0x6f, -0x72, -0x2d, -0x85, -0x64, -0x9a, -0xb9, -0x23, -0xf9, -0x0b, -0xc3, -0x7c, -0x39, -0x0f, -0x97, -0x07, -0x97, -0xda, -0x58, -0x48, -0x33, -0x05, -0x23, -0xb8, -0x82, -0xe8, -0xd3, -0x53, -0x89, -0xaf, -0x33, -0x80, -0x22, -0x84, -0x0c, -0x95, -0x5c, -0x67, -0xb8, -0x77, -0x0c, -0x5c, -0xa2, -0x5f, -0x3d, -0x58, -0x0f, -0x27, -0xf3, -0x2f, -0xae, -0x48, -0xbd, -0x0b, -0x6f, -0x54, -0xfb, -0x67, -0x4c, -0xea, -0x32, -0x27, -0xf1, -0xfa, -0xe2, -0xb0, -0xec, -0x0b, -0x15, -0xb4, -0x70, -0xf6, -0x5c, -0xdd, -0x71, -0x60, -0xc3, -0xc1, -0xa8, -0x32, -0x65, -0xac, -0x7a, -0x77, -0x41, -0xe5, -0xa9, -0x6b, -0x11, -0x81, -0xfa, -0x34, -0x8d, -0xfb, -0xc1, -0x80, -0x6e, -0xc4, -0x60, -0x30, -0x07, -0xd4, -0x8b, -0x67, -0xbd, -0xaa, -0x8c, -0x9c, -0x64, -0xac, -0xdb, -0x0b, -0x24, -0x8b, -0x63, -0x6f, -0xe6, -0xbc, -0xe7, -0x33, -0xa4, -0x4a, -0x4c, -0xa7, -0x9f, -0x43, -0x53, -0xd2, -0xbb, -0x8f, -0x43, -0xc7, -0x3d, -0x78, -0x68, -0x3f, -0xa5, -0x3d, -0xca, -0x69, -0x84, -0xa6, -0x97, -0x2d, -0xc0, -0x7d, -0x31, -0x34, -0x55, -0x1d, -0x07, -0xb1, -0x5f, -0x40, -0x5c, -0x93, -0xb0, -0xbc, -0x7c, -0xb0, -0xbc, -0xe7, -0x12, -0xee, -0x6b, -0x2b, -0xd3, -0x4d, -0x67, -0x70, -0x3a, -0x9a, -0xf2, -0x3c, -0x7c, -0x81, -0xfa, -0xd7, -0xd9, -0x90, -0x91, -0x81, -0xb8, -0xb1, -0xf3, -0x48, -0x6a, -0x26, -0x4f, -0x0c, -0xce, -0xb0, -0x9e, -0xfd, -0x4a, -0x3a, -0xaf, -0xac, -0x5b, -0x3f, -0xbf, -0x44, -0x5a, -0xa3, -0x19, -0x1e, -0x4b, -0xe7, -0x36, -0x6a, -0xd7, -0x20, -0xae, -0xd7, -0x7d, -0x3b, -0xe7, -0xff, -0x3a, -0x86, -0x2e, -0xd0, -0x4a, -0x3e, -0xaf, -0x9f, -0x8e, -0x01, -0xbf, -0xf8, -0x4f, -0xc1, -0xe8, -0x6f, -0x74, -0xe1, -0x45, -0xd3, -0xf7, -0x04, -0x6a, -0x4b, -0x9d, -0xec, -0x33, -0x27, -0x76, -0xd7, -0xc5, -0xe1, -0xb0, -0x3b, -0x0e, -0x23, -0xec, -0xf0, -0x86, -0xd2, -0x1a, -0xbf, -0x3d, -0x04, -0x62, -0xb3, -0x6c, -0xb2, -0xeb, -0x17, -0x05, -0xa6, -0x0a, -0x8a, -0x7e, -0x83, -0x1c, -0xb6, -0x37, -0x09, -0xc6, -0x0b, -0x70, -0x3c, -0xb5, -0x93, -0x81, -0xd8, -0x93, -0xa0, -0x5f, -0x1e, -0x08, -0xe2, -0xc6, -0xe5, -0xc9, -0x72, -0xf1, -0xf1, -0xc1, -0xed, -0xd5, -0x58, -0x93, -0x83, -0xf8, -0x65, -0x67, -0x2e, -0x0d, -0xa9, -0xf1, -0x64, -0x12, -0xe6, -0x4c, -0xea, -0x15, -0x3f, -0x8c, -0x1a, -0xb6, -0xbf, -0xf6, -0xb9, -0x52, -0x35, -0x09, -0xb0, -0xe6, -0xf7, -0xcd, -0xf1, -0xa5, -0xaa, -0x81, -0xd1, -0x81, -0x6f, -0xb4, -0xa9, -0x66, -0x1f, -0xfc, -0x48, -0xc0, -0xb6, -0xd1, -0x8b, -0x06, -0x2f, -0xf6, -0xef, -0x1f, -0x0a, -0xe6, -0xce, -0x3a, -0x4a, -0x55, -0xbf, -0x6d, -0xf9, -0x4d, -0xd4, -0x08, -0x45, -0x4b, -0xc3, -0x66, -0x19, -0x92, -0x10, -0xe1, -0x17, -0x8e, -0x28, -0x91, -0x16, -0xbf, -0x3c, -0xee, -0xa3, -0xa6, -0x99, -0x92, -0x10, -0xe1, -0xf6, -0xcc, -0xac, -0xb8, -0x65, -0x0b, -0x43, -0x66, -0xf8, -0xe3, -0xe5, -0x3f, -0x24, -0x89, -0x47, -0x5d, -0x78, -0x43, -0xd0, -0x61, -0x17, -0xbd, -0x5b, -0x64, -0x54, -0x08, -0x45, -0x59, -0x93, -0xf6, -0x95, -0x8a, -0x41, -0x51, -0x62, -0x4b, -0x51, -0x02, -0x30, -0x73, -0xc7, -0x87, -0xc5, -0x4b, -0xa2, -0x97, -0x0f, -0xe8, -0x46, -0x5f, -0x7e, -0x2a, -0xe1, -0x30, -0x20, -0xb0, -0xfa, -0xe7, -0xce, -0x61, -0x42, -0x57, -0x6e, -0x21, -0xf3, -0x7a, -0xec, -0xe3, -0x25, -0xc7, -0x25, -0xf3, -0x67, -0xa7, -0x57, -0x40, -0x00, -0x02, -0xcf, -0x1c, -0x80, -0x77, -0x67, -0xbd, -0x70, -0xa1, -0x19, -0x92, -0x31, -0x75, -0x93, -0x27, -0x27, -0xb6, -0x82, -0xe4, -0xeb, -0x1d, -0x78, -0x48, -0xe7, -0xa5, -0x5e, -0x57, -0xef, -0x64, -0x28, -0x64, -0x1b, -0xf6, -0x11, -0xb2, -0x03, -0x9d, -0xb9, -0x18, -0x02, -0x27, -0xf7, -0xbe, -0x9d, -0x55, -0xfc, -0x00, -0xd2, -0xc7, -0xae, -0xad, -0x0b, -0xc5, -0xe9, -0x42, -0x41, -0x48, -0xd8, -0x32, -0xcf, -0xf6, -0x0f, -0xf5, -0xbc, -0x97, -0xc6, -0x99, -0x47, -0x76, -0xbd, -0x89, -0x06, -0x0f, -0x63, -0x0c, -0x51, -0xd4, -0x5e, -0xea, -0x48, -0xa8, -0xa2, -0x56, -0x1c, -0x79, -0x84, -0x86, -0x40, -0x88, -0x41, -0x76, -0x55, -0xfc, -0xc2, -0xd7, -0xfd, -0xc9, -0xc7, -0x80, -0x61, -0x35, -0xa7, -0x43, -0x20, -0xf7, -0xeb, -0x6c, -0x66, -0x13, -0xb0, -0xec, -0x02, -0x75, -0x3e, -0x4b, -0xaf, -0xb9, -0x5d, -0x40, -0xda, -0xd6, -0x6e, -0x2d, -0x39, -0x54, -0xc2, -0x95, -0x35, -0x54, -0x25, -0x72, -0xe1, -0x78, -0xb8, -0xeb, -0xc1, -0x16, -0x58, -0x0f, -0x9c, -0x9b, -0xb4, -0xea, -0x37, -0xec, -0x3b, -0x11, -0xba, -0xd5, -0x8a, -0xa9, -0xe3, -0x98, -0x00, -0x51, -0x1c, -0x14, -0xe0, -0x40, -0x96, -0xe5, -0xe9, -0xf2, -0x21, -0x22, -0xb1, -0x23, -0x60, -0x78, -0xd3, -0x17, -0xf8, -0x7a, -0xa5, -0xa8, -0xba, -0x20, -0xd3, -0x15, -0x1e, -0x32, -0xe4, -0x5e, -0x15, -0x48, -0xae, -0xa9, -0xe5, -0xb8, -0x33, -0xec, -0xe8, -0xa2, -0x42, -0xac, -0xbf, -0x10, -0x84, -0x53, -0x87, -0x19, -0xb4, -0x5f, -0x76, -0x4d, -0x01, -0x9d, -0x56, -0x74, -0xd9, -0x5c, -0x97, -0xe7, -0x88, -0xea, -0x3a, -0xbf, -0xdc, -0x4c, -0x33, -0x8a, -0x16, -0xb9, -0x5b, -0xfa, -0xd8, -0x42, -0xa7, -0xbb, -0x3c, -0x04, -0x27, -0x78, -0x49, -0x81, -0x2a, -0x5a, -0x7d, -0x7c, -0x23, -0xa8, -0xba, -0xf7, -0x9a, -0x9f, -0xd2, -0x66, -0x3e, -0x38, -0x3c, -0x75, -0xf9, -0xd1, -0x30, -0x26, -0x30, -0x6e, -0x5a, -0x6e, -0xdc, -0x6a, -0x69, -0x32, -0x50, -0x33, -0x47, -0x9e, -0xa4, -0xa8, -0x64, -0x66, -0xf0, -0x8a, -0xe4, -0xfd, -0x27, -0x6f, -0x51, -0x25, -0x8b, -0x43, -0x74, -0xc9, -0x8e, -0xbd, -0x88, -0x31, -0xbe, -0xec, -0x65, -0xd2, -0xcb, -0x8d, -0x5a, -0x13, -0x48, -0x16, -0x8c, -0x61, -0x0b, -0x11, -0xf6, -0xc6, -0x66, -0xae, -0xc3, -0xcc, -0x0c, -0xd2, -0xe1, -0x9f, -0x82, -0x41, -0x3f, -0x56, -0xf9, -0x73, -0xef, -0xdc, -0x30, -0x50, -0xcf, -0xb6, -0x7f, -0xbc, -0xd0, -0xb3, -0x10, -0xab, -0x24, -0xe4, -0xec, -0xad, -0x18, -0x8c, -0x39, -0x2d, -0x30, -0x4c, -0xc5, -0x40, -0x0d, -0xf6, -0xac, -0xd6, -0x18, -0x5d, -0x96, -0xbf, -0x5f, -0x71, -0x75, -0x96, -0x22, -0x97, -0x0f, -0x02, -0x94, -0x6e, -0xa6, -0xae, -0x6d, -0x8f, -0x1e, -0xca, -0x12, -0x9b, -0x2a, -0x1c, -0xce, -0xa9, -0xee, -0xfd, -0x12, -0x8e, -0xfc, -0xed, -0x09, -0x33, -0xba, -0xf4, -0x1a, -0x15, -0xf6, -0x9d, -0x87, -0x16, -0x43, -0x7c, -0x78, -0x57, -0xe1, -0x44, -0xc9, -0xeb, -0x1f, -0x58, -0x4d, -0xc1, -0x49, -0x11, -0x5c, -0xb2, -0x11, -0xa8, -0x55, -0x16, -0xf1, -0xc6, -0x50, -0xe9, -0x87, -0x89, -0xf6, -0xcf, -0xd8, -0x9c, -0x51, -0xa7, -0xbc, -0x5b, -0x31, -0x6d, -0x4d, -0x51, -0xd0, -0x4c, -0xbc, -0x0d, -0x58, -0x2d, -0x7b, -0x88, -0x7a, -0xf9, -0x8e, -0xd6, -0x40, -0x4d, -0xbb, -0xbe, -0xc4, -0xe5, -0x07, -0xfc, -0xd9, -0x7b, -0x6d, -0xa6, -0x42, -0x57, -0x8f, -0x02, -0x94, -0x4f, -0xe4, -0x2a, -0x65, -0xe2, -0x19, -0x5a, -0x50, -0xe1, -0x25, -0x65, -0x4a, -0x60, -0xc2, -0xcd, -0xa8, -0xec, -0x05, -0x2e, -0x87, -0x7b, -0x95, -0xb7, -0x4f, -0xa0, -0x0b, -0x1b, -0x4a, -0x7f, -0x92, -0xc8, -0x90, -0xee, -0x89, -0x1e, -0x10, -0xd2, -0x85, -0xe4, -0x9f, -0x63, -0xc8, -0x12, -0xbb, -0x4e, -0xb8, -0xcf, -0x0a, -0xec, -0x18, -0x4e, -0xe6, -0x7c, -0xb3, -0x33, -0x26, -0xc7, -0x1f, -0xd2, -0x04, -0x23, -0xea, -0x07, -0x0c, -0x5f, -0x90, -0xbd, -0xa7, -0x6a, -0x0f, -0x4a, -0xd6, -0x10, -0x01, -0x3c, -0x12, -0x29, -0x2e, -0x96, -0xc0, -0x4d, -0xbb, -0xbe, -0xe5, -0xa7, -0x83, -0xd5, -0x6a, -0x3c, -0xe3, -0x5b, -0xb8, -0xf2, -0x5c, -0x6d, -0x1f, -0xa6, -0xf3, -0x12, -0x24, -0xf6, -0xd6, -0x3b, -0x10, -0x14, -0x09, -0x07, -0x82, -0xe8, -0x30, -0x6a, -0x99, -0xdc, -0x95, -0x01, -0x9c, -0xd4, -0x68, -0x3b, -0xca, -0x98, -0x12, -0xab, -0x77, -0x25, -0x15, -0x7d, -0x10, -0x32, -0x45, -0x98, -0xcd, -0x7a, -0xdf, -0x71, -0x8a, -0x75, -0xc1, -0x1c, -0xd4, -0x68, -0x25, -0xeb, -0xbb, -0x54, -0x27, -0x6f, -0x2a, -0xf7, -0xb9, -0x98, -0x03, -0x27, -0xde, -0x24, -0xa8, -0xbb, -0x98, -0xc2, -0x84, -0xff, -0x9b, -0x51, -0xd8, -0x53, -0x50, -0xda, -0xf5, -0x88, -0xaa, -0x87, -0x2f, -0xae, -0xd6, -0xea, -0x6b, -0xde, -0xc8, -0xd7, -0xa7, -0x28, -0x65, -0x81, -0xe8, -0xb2, -0x3b, -0x1d, -0x4f, -0x75, -0x8f, -0x9f, -0x7a, -0x74, -0x8e, -0xc1, -0x5f, -0x9a, -0xa8, -0x9d, -0xfa, -0x03, -0xa3, -0x71, -0x9b, -0x37, -0x6d, -0xd5, -0x0b, -0xf5, -0xe1, -0xa1, -0x1b, -0x01, -0x6a, -0xc6, -0x67, -0xaa, -0xea, -0x2c, -0x9d, -0xa4, -0xd2, -0x6e, -0xfc, -0xde, -0x2e, -0x7f, -0x94, -0x69, -0xe5, -0x4a, -0xe0, -0x01, -0x48, -0x3c, -0x6b, -0xf7, -0x1e, -0xb6, -0x0b, -0x5f, -0xf9, -0x2e, -0x07, -0xc5, -0xe8, -0xae, -0x37, -0x1b, -0xbc, -0x3c, -0xd8, -0xd5, -0x0b, -0x91, -0x9e, -0x80, -0x24, -0xf5, -0x06, -0x0c, -0x0e, -0x98, -0x07, -0x96, -0x2d, -0x19, -0xdc, -0x58, -0x93, -0xcc, -0xfb, -0x4e, -0xeb, -0xbd, -0x0f, -0xf5, -0xaf, -0x01, -0xfa, -0xf1, -0x7c, -0x43, -0x8c, -0xb8, -0x56, -0x3e, -0xbe, -0x77, -0x4e, -0x2b, -0xf7, -0xbb, -0xb7, -0x45, -0x47, -0xcd, -0xcc, -0xa6, -0x4c, -0x72, -0x7b, -0x6a, -0x2a, -0x70, -0x13, -0x07, -0xfd, -0xb8, -0x9c, -0x98, -0x3a, -0xd8, -0x23, -0x67, -0x5b, -0x34, -0xd5, -0x14, -0x0c, -0xab, -0x77, -0x1f, -0xf8, -0x3d, -0x5a, -0x9f, -0x92, -0xb7, -0x2c, -0xad, -0x31, -0xde, -0x61, -0x07, -0xb3, -0x6b, -0xf7, -0x38, -0x15, -0x95, -0x46, -0x14, -0x48, -0x53, -0x69, -0x52, -0x66, -0x07, -0x6d, -0x83, -0x71, -0x8a, -0x67, -0x25, -0x20, -0x0f, -0xfe, -0xd7, -0x02, -0xd7, -0x6e, -0x2c, -0xd2, -0x1a, -0x0a, -0x5d, -0xfd, -0x0f, -0x74, -0xe3, -0xa4, -0x36, -0x07, -0x9a, -0xdf, -0xd4, -0x79, -0xbf, -0xef, -0x59, -0xc0, -0x44, -0x52, -0x87, -0x9a, -0x6e, -0x1d, -0x0e, -0xee, -0xde, -0x2e, -0x1a, -0xa9, -0x8f, -0x3a, -0xc9, -0xba, -0xec, -0x99, -0x78, -0x2d, -0x55, -0x6b, -0x14, -0xc2, -0x06, -0xd5, -0xfc, -0x93, -0x53, -0x4d, -0x11, -0x8c, -0xf8, -0xfa, -0x79, -0x7c, -0xa6, -0x64, -0xae, -0x61, -0xb8, -0x7b, -0x94, -0x56, -0xa6, -0x39, -0x78, -0x9a, -0xe5, -0xc7, -0xdf, -0x18, -0x63, -0x23, -0x9c, -0xfa, -0x66, -0xbb, -0xb7, -0x5a, -0x27, -0x4c, -0xd1, -0xa1, -0x83, -0x22, -0xb3, -0x52, -0x49, -0x35, -0xb0, -0x22, -0x83, -0x59, -0x12, -0x00, -0x16, -0x98, -0xdd, -0xad, -0xc2, -0x94, -0xf9, -0xd3, -0x7b, -0x64, -0x7f, -0x44, -0x3e, -0x3c, -0x8b, -0x9a, -0x83, -0x9c, -0x69, -0x6b, -0xe4, -0xdf, -0x9f, -0xed, -0x54, -0x1f, -0xe5, -0x5d, -0x7a, -0x05, -0x82, -0xb3, -0xdd, -0xef, -0xfc, -0x53, -0x96, -0xb0, -0x2c, -0x5a, -0xf8, -0xdf, -0x9c, -0x8b, -0x16, -0x4e, -0xdf, -0xda, -0x4d, -0x09, -0x09, -0x69, -0x50, -0x03, -0x65, -0xd8, -0x73, -0x70, -0xe8, -0x86, -0xbf, -0xbb, -0x35, -0xce, -0xb2, -0x46, -0xcb, -0x02, -0x00, -0x5b, -0xb4, -0xe2, -0xc6, -0x8f, -0x2f, -0x98, -0xaf, -0x87, -0x4b, -0x48, -0x45, -0xed, -0xcc, -0x1d, -0xe6, -0x58, -0xd6, -0xf2, -0x50, -0x25, -0x9f, -0x52, -0xc7, -0xcb, -0x8a, -0x17, -0x9d, -0x5b, -0xe5, -0xc8, -0xd7, -0x72, -0xb7, -0x52, -0xb2, -0xc4, -0x98, -0xe3, -0x7a, -0x17, -0x3e, -0xc6, -0x60, -0xa7, -0x97, -0xb0, -0xcf, -0x18, -0x81, -0x53, -0x84, -0x4c, -0xd5, -0x17, -0x32, -0x03, -0x13, -0x39, -0x51, -0x09, -0x10, -0xe3, -0x77, -0x49, -0x4f, -0x62, -0x01, -0xbf, -0x8c, -0x9a, -0xe0, -0x41, -0x9e, -0x89, -0x74, -0x36, -0xf9, -0x96, -0x86, -0x2e, -0x96, -0x1c, -0x4a, -0xb7, -0x2b, -0x4a, -0x97, -0xbc, -0x99, -0x40, -0xa3, -0xe0, -0x3d, -0xc8, -0xad, -0x2f, -0xdf, -0x4f, -0x2c, -0xc4, -0x69, -0x82, -0x9f, -0x9b, -0x81, -0x0c, -0x61, -0x5c, -0xa5, -0x9d, -0x8c, -0x89, -0xc0, -0x2c, -0xb4, -0x4a, -0x33, -0x4e, -0xeb, -0xa2, -0x56, -0x40, -0xc0, -0xc2, -0x46, -0xaf, -0x6a, -0xfc, -0x67, -0xd1, -0x80, -0x5e, -0xc5, -0x6d, -0x84, -0x43, -0x27, -0x3f, -0x55, -0x15, -0x96, -0x6a, -0xa0, -0xa5, -0xda, -0xb7, -0xff, -0xb7, -0x75, -0x6e, -0x4c, -0x49, -0x91, -0x9d, -0x22, -0xa3, -0x46, -0xea, -0xed, -0x9a, -0x00, -0xe2, -0x32, -0xc3, -0xd6, -0xa9, -0x71, -0x20, -0x55, -0xa3, -0x19, -0xed, -0xf8, -0x4f, -0xa7, -0x12, -0x9c, -0x66, -0x87, -0xaf, -0x4e, -0xb7, -0xf0, -0xdb, -0xbf, -0xef, -0xf0, -0xf6, -0xaf, -0xea, -0xda, -0x09, -0xfe, -0xde, -0x38, -0x5c, -0xa5, -0xa2, -0xdf, -0x99, -0x45, -0xa8, -0xe4, -0xe7, -0x92, -0xac, -0x67, -0xaa, -0x4f, -0xbf, -0x77, -0x3e, -0xa2, -0x40, -0x49, -0x22, -0x4a, -0x1e, -0x3b, -0xaa, -0x70, -0x7f, -0x95, -0xaf, -0x37, -0x4b, -0xfc, -0x99, -0xe2, -0xe0, -0xba, -0xd7, -0x34, -0xce, -0x55, -0x88, -0x5b, -0x84, -0x1b, -0x57, -0xc4, -0x80, -0x03, -0x53, -0xc9, -0x2f, -0x93, -0x04, -0x4d, -0xd5, -0x96, -0xe5, -0x70, -0xa6, -0x6e, -0x63, -0x5d, -0x9d, -0x6c, -0xdb, -0x02, -0x0a, -0xa9, -0xda, -0x8b, -0x53, -0xdc, -0xd9, -0x9a, -0xc5, -0x94, -0x2c, -0x91, -0x92, -0x2a, -0xde, -0xbb, -0x8b, -0x13, -0xb9, -0x19, -0x96, -0x64, -0xcc, -0xf2, -0x64, -0x39, -0xb7, -0x75, -0x49, -0xe9, -0x86, -0xc2, -0x86, -0x62, -0xd9, -0x24, -0xd3, -0x81, -0x35, -0x49, -0xfc, -0xa0, -0xa5, -0xa0, -0x93, -0x05, -0x64, -0xb4, -0x1a, -0x57, -0xce, -0x0c, -0x90, -0x02, -0x27, -0xc5, -0x7a, -0x2b, -0x5d, -0xae, -0x3e, -0xd5, -0xdd, -0x10, -0x7c, -0x14, -0xea, -0x3a, -0x08, -0xac, -0x72, -0x4e, -0x90, -0x3d, -0x3b, -0x7c, -0x86, -0x2e, -0xeb, -0xd4, -0x06, -0x70, -0xe6, -0xc7, -0xfb, -0x5f, -0xbd, -0x18, -0xf4, -0x11, -0xa4, -0x1a, -0x93, -0xc3, -0xbe, -0xd9, -0xfb, -0x26, -0x48, -0x2f, -0x37, -0x3c, -0xd0, -0x03, -0x47, -0x1a, -0xf7, -0x62, -0x19, -0x24, -0x5c, -0xf4, -0xa8, -0x92, -0x20, -0x7a, -0xf2, -0x9e, -0x2a, -0xc5, -0x95, -0xa2, -0xfb, -0xa4, -0xea, -0x85, -0xd8, -0x56, -0xb7, -0x70, -0xd1, -0x60, -0x30, -0xa5, -0x30, -0x82, -0x70, -0xdc, -0x7a, -0x65, -0x8a, -0x36, -0x3f, -0x5b, -0x0c, -0xae, -0x54, -0x7c, -0xd3, -0x57, -0x84, -0x7b, -0x3a, -0x65, -0x18, -0x81, -0xee, -0x05, -0x9b, -0x44, -0x4d, -0xb8, -0xda, -0xa2, -0xa1, -0xc9, -0x15, -0xd3, -0x73, -0x03, -0x0e, -0x43, -0xe9, -0x8e, -0x15, -0xf9, -0xbe, -0xc6, -0xc5, -0x8a, -0xe5, -0xc0, -0x1e, -0xc2, -0x37, -0x9e, -0x2a, -0x26, -0xa5, -0xa0, -0xbd, -0x24, -0x5f, -0xb9, -0xc1, -0xab, -0x34, -0x48, -0xb9, -0x5d, -0x98, -0xb4, -0x65, -0x18, -0xf3, -0x63, -0x19, -0x44, -0x1b, -0x11, -0x16, -0xff, -0xdc, -0xf1, -0x79, -0x08, -0x86, -0x0f, -0x52, -0x98, -0x73, -0xc4, -0x92, -0x90, -0x2b, -0x47, -0x09, -0xd0, -0x43, -0x6c, -0x2f, -0x20, -0xeb, -0xdc, -0xda, -0xc5, -0x08, -0x7b, -0x94, -0x42, -0x30, -0x6a, -0xc7, -0xda, -0x8c, -0xc3, -0x76, -0xa7, -0xa5, -0xcc, -0x62, -0x13, -0x00, -0x60, -0x31, -0x58, -0x44, -0x9b, -0xf5, -0x64, -0x14, -0xf5, -0x11, -0xc5, -0x54, -0x52, -0x83, -0xd4, -0x73, -0x01, -0x16, -0x0e, -0xb3, -0x7a, -0x29, -0x69, -0x35, -0x56, -0xd4, -0xee, -0x8a, -0x17, -0xa2, -0x99, -0x24, -0x9c, -0xd7, -0x8f, -0xdb, -0x55, -0xb5, -0x3e -}; diff --git a/keyboards/oddball/config.h b/keyboards/oddball/config.h index 203b61c54ba4..4bc9c7997c2c 100644 --- a/keyboards/oddball/config.h +++ b/keyboards/oddball/config.h @@ -55,26 +55,9 @@ #define CPI_2 4000 #define CPI_3 8000 -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 + +#define ADNS9800_CS_PIN SPI_SS_PIN +#define PMW3360_CS_PIN SPI_SS_PIN diff --git a/keyboards/oddball/info.json b/keyboards/oddball/info.json index 8b38c9fa8399..ab1eb1f2e74d 100644 --- a/keyboards/oddball/info.json +++ b/keyboards/oddball/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Oddball", "url": "https://atulloh.github.io/oddball", "maintainer": "Alexander Tulloh", - "width": 14, - "height": 4.75, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/oddball/keymaps/default/config.h b/keyboards/oddball/keymaps/default/config.h deleted file mode 100644 index 7eddc070dcdc..000000000000 --- a/keyboards/oddball/keymaps/default/config.h +++ /dev/null @@ -1 +0,0 @@ -#define ADNS_9800 diff --git a/keyboards/oddball/keymaps/default/rules.mk b/keyboards/oddball/keymaps/default/rules.mk new file mode 100644 index 000000000000..84de35aeb142 --- /dev/null +++ b/keyboards/oddball/keymaps/default/rules.mk @@ -0,0 +1 @@ +POINTING_DEVICE_DRIVER = adns9800 diff --git a/keyboards/oddball/keymaps/pmw3360/config.h b/keyboards/oddball/keymaps/pmw3360/config.h deleted file mode 100644 index f9af5f391138..000000000000 --- a/keyboards/oddball/keymaps/pmw3360/config.h +++ /dev/null @@ -1 +0,0 @@ -#define PMW_3360 diff --git a/keyboards/oddball/keymaps/pmw3360/rules.mk b/keyboards/oddball/keymaps/pmw3360/rules.mk new file mode 100644 index 000000000000..fab9162dc64d --- /dev/null +++ b/keyboards/oddball/keymaps/pmw3360/rules.mk @@ -0,0 +1 @@ +POINTING_DEVICE_DRIVER = pmw3360 diff --git a/keyboards/oddball/oddball.c b/keyboards/oddball/oddball.c index 7ac6d99016b7..bbc3b3f2e4da 100644 --- a/keyboards/oddball/oddball.c +++ b/keyboards/oddball/oddball.c @@ -16,21 +16,17 @@ #include "oddball.h" #include "pointing_device.h" -#include "optical_sensor/optical_sensor.h" - -#define CLAMP_HID(value) value < -127 ? -127 : value > 127 ? 127 : value +extern const pointing_device_driver_t pointing_device_driver; static bool scroll_pressed; static bool mouse_buttons_dirty; static int8_t scroll_h; static int8_t scroll_v; -void pointing_device_init(void){ +void pointing_device_init_kb(void){ if(!is_keyboard_master()) return; - optical_sensor_init(); - // read config from EEPROM and update if needed config_oddball_t kb_config; @@ -41,21 +37,17 @@ void pointing_device_init(void){ eeconfig_update_kb(kb_config.raw); } - optical_sensor_set_config((config_optical_sensor_t){ kb_config.cpi }); + pointing_device_set_cpi(kb_config.cpi); } -void pointing_device_task(void){ - if(!is_keyboard_master()) - return; - - report_mouse_t mouse_report = pointing_device_get_report(); - report_optical_sensor_t sensor_report = optical_sensor_get_report(); - - int8_t clamped_x = CLAMP_HID(sensor_report.x); - int8_t clamped_y = CLAMP_HID(sensor_report.y); +report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report) { + if (!is_keyboard_master()) return mouse_report; - if(scroll_pressed) { + int8_t clamped_x = mouse_report.x, clamped_y = mouse_report.y; + mouse_report.x = 0; + mouse_report.y = 0; + if (scroll_pressed) { // accumulate scroll scroll_h += clamped_x; scroll_v += clamped_y; @@ -65,33 +57,21 @@ void pointing_device_task(void){ // clear accumulated scroll on assignment - if(scaled_scroll_h != 0){ + if (scaled_scroll_h != 0) { mouse_report.h = -scaled_scroll_h; - scroll_h = 0; + scroll_h = 0; } - if(scaled_scroll_v != 0){ + if (scaled_scroll_v != 0) { mouse_report.v = -scaled_scroll_v; - scroll_v = 0; + scroll_v = 0; } - } - else { + } else { mouse_report.x = -clamped_x; mouse_report.y = clamped_y; } - pointing_device_set_report(mouse_report); - - // only send report on change as even sending report with no change is treated as movement - if(mouse_buttons_dirty || - mouse_report.x != 0 || - mouse_report.y != 0 || - mouse_report.h != 0 || - mouse_report.v != 0){ - - mouse_buttons_dirty = false; - pointing_device_send(); - } + return mouse_report; } static void on_cpi_button(uint16_t cpi, keyrecord_t *record) { @@ -99,7 +79,7 @@ static void on_cpi_button(uint16_t cpi, keyrecord_t *record) { if(!record->event.pressed) return; - optical_sensor_set_config((config_optical_sensor_t){ cpi }); + pointing_device_set_cpi(cpi); config_oddball_t kb_config; kb_config.cpi = cpi; @@ -165,5 +145,5 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) { default: return true; - } + } } diff --git a/keyboards/oddball/optical_sensor/optical_sensor.h b/keyboards/oddball/optical_sensor/optical_sensor.h deleted file mode 100644 index a152d02cf1f8..000000000000 --- a/keyboards/oddball/optical_sensor/optical_sensor.h +++ /dev/null @@ -1,53 +0,0 @@ -/* Copyright 2020 Alexander Tulloh - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/* common interface for opitcal sensors */ - -#if defined ADNS_9800 - #include "../adns/adns.h" - #define config_optical_sensor_t config_adns_t - #define report_optical_sensor_t report_adns_t - #define optical_sensor_init adns_init - #define optical_sensor_get_config adns_get_config - #define optical_sensor_set_config adns_set_config - #define optical_sensor_get_report adns_get_report -#elif defined PMW_3360 - #include "../pmw/pmw.h" - #define config_optical_sensor_t config_pmw_t - #define report_optical_sensor_t report_pmw_t - #define optical_sensor_init pmw_init - #define optical_sensor_get_config pmw_get_config - #define optical_sensor_set_config pmw_set_config - #define optical_sensor_get_report pmw_get_report -#else - /* fallback stub */ - - #include - - typedef struct { - uint16_t cpi; - } config_optical_sensor_t; - - typedef struct { - int16_t x; - int16_t y; - } report_optical_sensor_t; - - #define optical_sensor_init(){ } - #define optical_sensor_get_config() (config_optical_sensor_t){ } - #define optical_sensor_set_config(config_optical_sensor_t){ } - #define optical_sensor_get_report() (report_optical_sensor_t){ } -#endif diff --git a/keyboards/oddball/pmw/pmw.c b/keyboards/oddball/pmw/pmw.c deleted file mode 100644 index 51d692702402..000000000000 --- a/keyboards/oddball/pmw/pmw.c +++ /dev/null @@ -1,226 +0,0 @@ -/* Copyright 2020 Alexander Tulloh - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "spi_master.h" -#include "quantum.h" -#include "pmw3360_srom_0x04.h" -#include "pmw.h" - -// registers -#define Product_ID 0x00 -#define Revision_ID 0x01 -#define Motion 0x02 -#define Delta_X_L 0x03 -#define Delta_X_H 0x04 -#define Delta_Y_L 0x05 -#define Delta_Y_H 0x06 -#define SQUAL 0x07 -#define Raw_Data_Sum 0x08 -#define Maximum_Raw_data 0x09 -#define Minimum_Raw_data 0x0A -#define Shutter_Lower 0x0B -#define Shutter_Upper 0x0C -#define Control 0x0D -#define Config1 0x0F -#define Config2 0x10 -#define Angle_Tune 0x11 -#define Frame_Capture 0x12 -#define SROM_Enable 0x13 -#define Run_Downshift 0x14 -#define Rest1_Rate_Lower 0x15 -#define Rest1_Rate_Upper 0x16 -#define Rest1_Downshift 0x17 -#define Rest2_Rate_Lower 0x18 -#define Rest2_Rate_Upper 0x19 -#define Rest2_Downshift 0x1A -#define Rest3_Rate_Lower 0x1B -#define Rest3_Rate_Upper 0x1C -#define Observation 0x24 -#define Data_Out_Lower 0x25 -#define Data_Out_Upper 0x26 -#define Raw_Data_Dump 0x29 -#define SROM_ID 0x2A -#define Min_SQ_Run 0x2B -#define Raw_Data_Threshold 0x2C -#define Config5 0x2F -#define Power_Up_Reset 0x3A -#define Shutdown 0x3B -#define Inverse_Product_ID 0x3F -#define LiftCutoff_Tune3 0x41 -#define Angle_Snap 0x42 -#define LiftCutoff_Tune1 0x4A -#define Motion_Burst 0x50 -#define LiftCutoff_Tune_Timeout 0x58 -#define LiftCutoff_Tune_Min_Length 0x5A -#define SROM_Load_Burst 0x62 -#define Lift_Config 0x63 -#define Raw_Data_Burst 0x64 -#define LiftCutoff_Tune2 0x65 - -#define PMW_CLOCK_SPEED 70000000 -#define MIN_CPI 100 -#define MAX_CPI 12000 -#define CPI_STEP 100 -#define CLAMP_CPI(value) value < MIN_CPI ? MIN_CPI : value > MAX_CPI ? MAX_CPI : value -#define SPI_MODE 3 -#define SPI_DIVISOR (F_CPU / PMW_CLOCK_SPEED) -#define US_BETWEEN_WRITES 180 -#define US_BETWEEN_READS 20 -#define US_BEFORE_MOTION 35 - -#define MSB1 0x80 - -extern const uint16_t pmw_firmware_length; -extern const uint8_t pmw_firmware_data[]; - -void pmw_spi_start(void){ - spi_start(SPI_SS_PIN, false, SPI_MODE, SPI_DIVISOR); -} - -void pmw_write(uint8_t reg_addr, uint8_t data){ - - pmw_spi_start(); - spi_write(reg_addr | MSB1 ); - spi_write(data); - spi_stop(); - wait_us(US_BETWEEN_WRITES); -} - -uint8_t pmw_read(uint8_t reg_addr){ - - pmw_spi_start(); - spi_write(reg_addr & 0x7f ); - uint8_t data = spi_read(); - spi_stop(); - wait_us(US_BETWEEN_READS); - - return data; -} - -void pmw_init() { - - setPinOutput(SPI_SS_PIN); - - spi_init(); - - // reboot - pmw_write(Power_Up_Reset, 0x5a); - wait_ms(50); - - // read registers and discard - pmw_read(Motion); - pmw_read(Delta_X_L); - pmw_read(Delta_X_H); - pmw_read(Delta_Y_L); - pmw_read(Delta_Y_H); - - // upload firmware - - // disable rest mode - pmw_write(Config2, 0x20); - - // enable initialisation - pmw_write(SROM_Enable, 0x1d); - - // wait a frame - wait_ms(10); - - // start SROM download - pmw_write(SROM_Enable, 0x18); - - // write the SROM file - - pmw_spi_start(); - - spi_write(SROM_Load_Burst | 0x80); - wait_us(15); - - // send all bytes of the firmware - unsigned char c; - for(int i = 0; i < pmw_firmware_length; i++){ - c = (unsigned char)pgm_read_byte(pmw_firmware_data + i); - spi_write(c); - wait_us(15); - } - - spi_stop(); - wait_us(US_BETWEEN_WRITES); - - // read id - pmw_read(SROM_ID); - - // wired mouse - pmw_write(Config2, 0x00); - - // first motion burst; write anything - pmw_write(Motion_Burst, 0xFF); - writePinLow(SPI_SS_PIN); -} - -config_pmw_t pmw_get_config(void) { - uint8_t config_1 = pmw_read(Config1); - return (config_pmw_t){ (config_1 & 0xFF) * CPI_STEP }; -} - -void pmw_set_config(config_pmw_t config) { - uint8_t config_1 = (CLAMP_CPI(config.cpi) / CPI_STEP) & 0xFF; - pmw_write(Config1, config_1); -} - -static int16_t convertDeltaToInt(uint8_t high, uint8_t low){ - - // join bytes into twos compliment - uint16_t twos_comp = (high << 8) | low; - - // convert twos comp to int - if (twos_comp & 0x8000) - return -1 * (~twos_comp + 1); - - return twos_comp; -} - -report_pmw_t pmw_get_report(void) { - - report_pmw_t report = {0, 0}; - - pmw_spi_start(); - - // start burst mode - spi_write(Motion_Burst & 0x7f); - - wait_us(US_BEFORE_MOTION); - - uint8_t motion = spi_read(); - - if(motion & 0x80) { - - // clear observation register - spi_read(); - - // delta registers - uint8_t delta_x_l = spi_read(); - uint8_t delta_x_h = spi_read(); - uint8_t delta_y_l = spi_read(); - uint8_t delta_y_h = spi_read(); - - report.x = convertDeltaToInt(delta_x_h, delta_x_l); - report.y = convertDeltaToInt(delta_y_h, delta_y_l); - } - - spi_stop(); - - return report; -} diff --git a/keyboards/oddball/pmw/pmw.h b/keyboards/oddball/pmw/pmw.h deleted file mode 100644 index cc3c9ec5eb02..000000000000 --- a/keyboards/oddball/pmw/pmw.h +++ /dev/null @@ -1,35 +0,0 @@ -/* Copyright 2020 Alexander Tulloh - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include - -typedef struct { - /* 100 - 12000 CPI supported */ - uint16_t cpi; -} config_pmw_t; - -typedef struct { - int16_t x; - int16_t y; -} report_pmw_t; - -void pmw_init(void); -config_pmw_t pmw_get_config(void); -void pmw_set_config(config_pmw_t); -/* Reads and clears the current delta values on the PMW sensor */ -report_pmw_t pmw_get_report(void); diff --git a/keyboards/oddball/pmw/pmw3360_srom_0x04.h b/keyboards/oddball/pmw/pmw3360_srom_0x04.h deleted file mode 100644 index 0dda4f1ab4ee..000000000000 --- a/keyboards/oddball/pmw/pmw3360_srom_0x04.h +++ /dev/null @@ -1,280 +0,0 @@ -#pragma once - -#include "progmem.h" - -const uint16_t pmw_firmware_length = 4094; - -const uint8_t pmw_firmware_data[] PROGMEM = { -0x01, 0x04, 0x8e, 0x96, 0x6e, 0x77, 0x3e, 0xfe, 0x7e, 0x5f, 0x1d, 0xb8, 0xf2, 0x66, 0x4e, -0xff, 0x5d, 0x19, 0xb0, 0xc2, 0x04, 0x69, 0x54, 0x2a, 0xd6, 0x2e, 0xbf, 0xdd, 0x19, 0xb0, -0xc3, 0xe5, 0x29, 0xb1, 0xe0, 0x23, 0xa5, 0xa9, 0xb1, 0xc1, 0x00, 0x82, 0x67, 0x4c, 0x1a, -0x97, 0x8d, 0x79, 0x51, 0x20, 0xc7, 0x06, 0x8e, 0x7c, 0x7c, 0x7a, 0x76, 0x4f, 0xfd, 0x59, -0x30, 0xe2, 0x46, 0x0e, 0x9e, 0xbe, 0xdf, 0x1d, 0x99, 0x91, 0xa0, 0xa5, 0xa1, 0xa9, 0xd0, -0x22, 0xc6, 0xef, 0x5c, 0x1b, 0x95, 0x89, 0x90, 0xa2, 0xa7, 0xcc, 0xfb, 0x55, 0x28, 0xb3, -0xe4, 0x4a, 0xf7, 0x6c, 0x3b, 0xf4, 0x6a, 0x56, 0x2e, 0xde, 0x1f, 0x9d, 0xb8, 0xd3, 0x05, -0x88, 0x92, 0xa6, 0xce, 0x1e, 0xbe, 0xdf, 0x1d, 0x99, 0xb0, 0xe2, 0x46, 0xef, 0x5c, 0x07, -0x11, 0x5d, 0x98, 0x0b, 0x9d, 0x94, 0x97, 0xee, 0x4e, 0x45, 0x33, 0x6b, 0x44, 0xc7, 0x29, -0x56, 0x27, 0x30, 0xc6, 0xa7, 0xd5, 0xf2, 0x56, 0xdf, 0xb4, 0x38, 0x62, 0xcb, 0xa0, 0xb6, -0xe3, 0x0f, 0x84, 0x06, 0x24, 0x05, 0x65, 0x6f, 0x76, 0x89, 0xb5, 0x77, 0x41, 0x27, 0x82, -0x66, 0x65, 0x82, 0xcc, 0xd5, 0xe6, 0x20, 0xd5, 0x27, 0x17, 0xc5, 0xf8, 0x03, 0x23, 0x7c, -0x5f, 0x64, 0xa5, 0x1d, 0xc1, 0xd6, 0x36, 0xcb, 0x4c, 0xd4, 0xdb, 0x66, 0xd7, 0x8b, 0xb1, -0x99, 0x7e, 0x6f, 0x4c, 0x36, 0x40, 0x06, 0xd6, 0xeb, 0xd7, 0xa2, 0xe4, 0xf4, 0x95, 0x51, -0x5a, 0x54, 0x96, 0xd5, 0x53, 0x44, 0xd7, 0x8c, 0xe0, 0xb9, 0x40, 0x68, 0xd2, 0x18, 0xe9, -0xdd, 0x9a, 0x23, 0x92, 0x48, 0xee, 0x7f, 0x43, 0xaf, 0xea, 0x77, 0x38, 0x84, 0x8c, 0x0a, -0x72, 0xaf, 0x69, 0xf8, 0xdd, 0xf1, 0x24, 0x83, 0xa3, 0xf8, 0x4a, 0xbf, 0xf5, 0x94, 0x13, -0xdb, 0xbb, 0xd8, 0xb4, 0xb3, 0xa0, 0xfb, 0x45, 0x50, 0x60, 0x30, 0x59, 0x12, 0x31, 0x71, -0xa2, 0xd3, 0x13, 0xe7, 0xfa, 0xe7, 0xce, 0x0f, 0x63, 0x15, 0x0b, 0x6b, 0x94, 0xbb, 0x37, -0x83, 0x26, 0x05, 0x9d, 0xfb, 0x46, 0x92, 0xfc, 0x0a, 0x15, 0xd1, 0x0d, 0x73, 0x92, 0xd6, -0x8c, 0x1b, 0x8c, 0xb8, 0x55, 0x8a, 0xce, 0xbd, 0xfe, 0x8e, 0xfc, 0xed, 0x09, 0x12, 0x83, -0x91, 0x82, 0x51, 0x31, 0x23, 0xfb, 0xb4, 0x0c, 0x76, 0xad, 0x7c, 0xd9, 0xb4, 0x4b, 0xb2, -0x67, 0x14, 0x09, 0x9c, 0x7f, 0x0c, 0x18, 0xba, 0x3b, 0xd6, 0x8e, 0x14, 0x2a, 0xe4, 0x1b, -0x52, 0x9f, 0x2b, 0x7d, 0xe1, 0xfb, 0x6a, 0x33, 0x02, 0xfa, 0xac, 0x5a, 0xf2, 0x3e, 0x88, -0x7e, 0xae, 0xd1, 0xf3, 0x78, 0xe8, 0x05, 0xd1, 0xe3, 0xdc, 0x21, 0xf6, 0xe1, 0x9a, 0xbd, -0x17, 0x0e, 0xd9, 0x46, 0x9b, 0x88, 0x03, 0xea, 0xf6, 0x66, 0xbe, 0x0e, 0x1b, 0x50, 0x49, -0x96, 0x40, 0x97, 0xf1, 0xf1, 0xe4, 0x80, 0xa6, 0x6e, 0xe8, 0x77, 0x34, 0xbf, 0x29, 0x40, -0x44, 0xc2, 0xff, 0x4e, 0x98, 0xd3, 0x9c, 0xa3, 0x32, 0x2b, 0x76, 0x51, 0x04, 0x09, 0xe7, -0xa9, 0xd1, 0xa6, 0x32, 0xb1, 0x23, 0x53, 0xe2, 0x47, 0xab, 0xd6, 0xf5, 0x69, 0x5c, 0x3e, -0x5f, 0xfa, 0xae, 0x45, 0x20, 0xe5, 0xd2, 0x44, 0xff, 0x39, 0x32, 0x6d, 0xfd, 0x27, 0x57, -0x5c, 0xfd, 0xf0, 0xde, 0xc1, 0xb5, 0x99, 0xe5, 0xf5, 0x1c, 0x77, 0x01, 0x75, 0xc5, 0x6d, -0x58, 0x92, 0xf2, 0xb2, 0x47, 0x00, 0x01, 0x26, 0x96, 0x7a, 0x30, 0xff, 0xb7, 0xf0, 0xef, -0x77, 0xc1, 0x8a, 0x5d, 0xdc, 0xc0, 0xd1, 0x29, 0x30, 0x1e, 0x77, 0x38, 0x7a, 0x94, 0xf1, -0xb8, 0x7a, 0x7e, 0xef, 0xa4, 0xd1, 0xac, 0x31, 0x4a, 0xf2, 0x5d, 0x64, 0x3d, 0xb2, 0xe2, -0xf0, 0x08, 0x99, 0xfc, 0x70, 0xee, 0x24, 0xa7, 0x7e, 0xee, 0x1e, 0x20, 0x69, 0x7d, 0x44, -0xbf, 0x87, 0x42, 0xdf, 0x88, 0x3b, 0x0c, 0xda, 0x42, 0xc9, 0x04, 0xf9, 0x45, 0x50, 0xfc, -0x83, 0x8f, 0x11, 0x6a, 0x72, 0xbc, 0x99, 0x95, 0xf0, 0xac, 0x3d, 0xa7, 0x3b, 0xcd, 0x1c, -0xe2, 0x88, 0x79, 0x37, 0x11, 0x5f, 0x39, 0x89, 0x95, 0x0a, 0x16, 0x84, 0x7a, 0xf6, 0x8a, -0xa4, 0x28, 0xe4, 0xed, 0x83, 0x80, 0x3b, 0xb1, 0x23, 0xa5, 0x03, 0x10, 0xf4, 0x66, 0xea, -0xbb, 0x0c, 0x0f, 0xc5, 0xec, 0x6c, 0x69, 0xc5, 0xd3, 0x24, 0xab, 0xd4, 0x2a, 0xb7, 0x99, -0x88, 0x76, 0x08, 0xa0, 0xa8, 0x95, 0x7c, 0xd8, 0x38, 0x6d, 0xcd, 0x59, 0x02, 0x51, 0x4b, -0xf1, 0xb5, 0x2b, 0x50, 0xe3, 0xb6, 0xbd, 0xd0, 0x72, 0xcf, 0x9e, 0xfd, 0x6e, 0xbb, 0x44, -0xc8, 0x24, 0x8a, 0x77, 0x18, 0x8a, 0x13, 0x06, 0xef, 0x97, 0x7d, 0xfa, 0x81, 0xf0, 0x31, -0xe6, 0xfa, 0x77, 0xed, 0x31, 0x06, 0x31, 0x5b, 0x54, 0x8a, 0x9f, 0x30, 0x68, 0xdb, 0xe2, -0x40, 0xf8, 0x4e, 0x73, 0xfa, 0xab, 0x74, 0x8b, 0x10, 0x58, 0x13, 0xdc, 0xd2, 0xe6, 0x78, -0xd1, 0x32, 0x2e, 0x8a, 0x9f, 0x2c, 0x58, 0x06, 0x48, 0x27, 0xc5, 0xa9, 0x5e, 0x81, 0x47, -0x89, 0x46, 0x21, 0x91, 0x03, 0x70, 0xa4, 0x3e, 0x88, 0x9c, 0xda, 0x33, 0x0a, 0xce, 0xbc, -0x8b, 0x8e, 0xcf, 0x9f, 0xd3, 0x71, 0x80, 0x43, 0xcf, 0x6b, 0xa9, 0x51, 0x83, 0x76, 0x30, -0x82, 0xc5, 0x6a, 0x85, 0x39, 0x11, 0x50, 0x1a, 0x82, 0xdc, 0x1e, 0x1c, 0xd5, 0x7d, 0xa9, -0x71, 0x99, 0x33, 0x47, 0x19, 0x97, 0xb3, 0x5a, 0xb1, 0xdf, 0xed, 0xa4, 0xf2, 0xe6, 0x26, -0x84, 0xa2, 0x28, 0x9a, 0x9e, 0xdf, 0xa6, 0x6a, 0xf4, 0xd6, 0xfc, 0x2e, 0x5b, 0x9d, 0x1a, -0x2a, 0x27, 0x68, 0xfb, 0xc1, 0x83, 0x21, 0x4b, 0x90, 0xe0, 0x36, 0xdd, 0x5b, 0x31, 0x42, -0x55, 0xa0, 0x13, 0xf7, 0xd0, 0x89, 0x53, 0x71, 0x99, 0x57, 0x09, 0x29, 0xc5, 0xf3, 0x21, -0xf8, 0x37, 0x2f, 0x40, 0xf3, 0xd4, 0xaf, 0x16, 0x08, 0x36, 0x02, 0xfc, 0x77, 0xc5, 0x8b, -0x04, 0x90, 0x56, 0xb9, 0xc9, 0x67, 0x9a, 0x99, 0xe8, 0x00, 0xd3, 0x86, 0xff, 0x97, 0x2d, -0x08, 0xe9, 0xb7, 0xb3, 0x91, 0xbc, 0xdf, 0x45, 0xc6, 0xed, 0x0f, 0x8c, 0x4c, 0x1e, 0xe6, -0x5b, 0x6e, 0x38, 0x30, 0xe4, 0xaa, 0xe3, 0x95, 0xde, 0xb9, 0xe4, 0x9a, 0xf5, 0xb2, 0x55, -0x9a, 0x87, 0x9b, 0xf6, 0x6a, 0xb2, 0xf2, 0x77, 0x9a, 0x31, 0xf4, 0x7a, 0x31, 0xd1, 0x1d, -0x04, 0xc0, 0x7c, 0x32, 0xa2, 0x9e, 0x9a, 0xf5, 0x62, 0xf8, 0x27, 0x8d, 0xbf, 0x51, 0xff, -0xd3, 0xdf, 0x64, 0x37, 0x3f, 0x2a, 0x6f, 0x76, 0x3a, 0x7d, 0x77, 0x06, 0x9e, 0x77, 0x7f, -0x5e, 0xeb, 0x32, 0x51, 0xf9, 0x16, 0x66, 0x9a, 0x09, 0xf3, 0xb0, 0x08, 0xa4, 0x70, 0x96, -0x46, 0x30, 0xff, 0xda, 0x4f, 0xe9, 0x1b, 0xed, 0x8d, 0xf8, 0x74, 0x1f, 0x31, 0x92, 0xb3, -0x73, 0x17, 0x36, 0xdb, 0x91, 0x30, 0xd6, 0x88, 0x55, 0x6b, 0x34, 0x77, 0x87, 0x7a, 0xe7, -0xee, 0x06, 0xc6, 0x1c, 0x8c, 0x19, 0x0c, 0x48, 0x46, 0x23, 0x5e, 0x9c, 0x07, 0x5c, 0xbf, -0xb4, 0x7e, 0xd6, 0x4f, 0x74, 0x9c, 0xe2, 0xc5, 0x50, 0x8b, 0xc5, 0x8b, 0x15, 0x90, 0x60, -0x62, 0x57, 0x29, 0xd0, 0x13, 0x43, 0xa1, 0x80, 0x88, 0x91, 0x00, 0x44, 0xc7, 0x4d, 0x19, -0x86, 0xcc, 0x2f, 0x2a, 0x75, 0x5a, 0xfc, 0xeb, 0x97, 0x2a, 0x70, 0xe3, 0x78, 0xd8, 0x91, -0xb0, 0x4f, 0x99, 0x07, 0xa3, 0x95, 0xea, 0x24, 0x21, 0xd5, 0xde, 0x51, 0x20, 0x93, 0x27, -0x0a, 0x30, 0x73, 0xa8, 0xff, 0x8a, 0x97, 0xe9, 0xa7, 0x6a, 0x8e, 0x0d, 0xe8, 0xf0, 0xdf, -0xec, 0xea, 0xb4, 0x6c, 0x1d, 0x39, 0x2a, 0x62, 0x2d, 0x3d, 0x5a, 0x8b, 0x65, 0xf8, 0x90, -0x05, 0x2e, 0x7e, 0x91, 0x2c, 0x78, 0xef, 0x8e, 0x7a, 0xc1, 0x2f, 0xac, 0x78, 0xee, 0xaf, -0x28, 0x45, 0x06, 0x4c, 0x26, 0xaf, 0x3b, 0xa2, 0xdb, 0xa3, 0x93, 0x06, 0xb5, 0x3c, 0xa5, -0xd8, 0xee, 0x8f, 0xaf, 0x25, 0xcc, 0x3f, 0x85, 0x68, 0x48, 0xa9, 0x62, 0xcc, 0x97, 0x8f, -0x7f, 0x2a, 0xea, 0xe0, 0x15, 0x0a, 0xad, 0x62, 0x07, 0xbd, 0x45, 0xf8, 0x41, 0xd8, 0x36, -0xcb, 0x4c, 0xdb, 0x6e, 0xe6, 0x3a, 0xe7, 0xda, 0x15, 0xe9, 0x29, 0x1e, 0x12, 0x10, 0xa0, -0x14, 0x2c, 0x0e, 0x3d, 0xf4, 0xbf, 0x39, 0x41, 0x92, 0x75, 0x0b, 0x25, 0x7b, 0xa3, 0xce, -0x39, 0x9c, 0x15, 0x64, 0xc8, 0xfa, 0x3d, 0xef, 0x73, 0x27, 0xfe, 0x26, 0x2e, 0xce, 0xda, -0x6e, 0xfd, 0x71, 0x8e, 0xdd, 0xfe, 0x76, 0xee, 0xdc, 0x12, 0x5c, 0x02, 0xc5, 0x3a, 0x4e, -0x4e, 0x4f, 0xbf, 0xca, 0x40, 0x15, 0xc7, 0x6e, 0x8d, 0x41, 0xf1, 0x10, 0xe0, 0x4f, 0x7e, -0x97, 0x7f, 0x1c, 0xae, 0x47, 0x8e, 0x6b, 0xb1, 0x25, 0x31, 0xb0, 0x73, 0xc7, 0x1b, 0x97, -0x79, 0xf9, 0x80, 0xd3, 0x66, 0x22, 0x30, 0x07, 0x74, 0x1e, 0xe4, 0xd0, 0x80, 0x21, 0xd6, -0xee, 0x6b, 0x6c, 0x4f, 0xbf, 0xf5, 0xb7, 0xd9, 0x09, 0x87, 0x2f, 0xa9, 0x14, 0xbe, 0x27, -0xd9, 0x72, 0x50, 0x01, 0xd4, 0x13, 0x73, 0xa6, 0xa7, 0x51, 0x02, 0x75, 0x25, 0xe1, 0xb3, -0x45, 0x34, 0x7d, 0xa8, 0x8e, 0xeb, 0xf3, 0x16, 0x49, 0xcb, 0x4f, 0x8c, 0xa1, 0xb9, 0x36, -0x85, 0x39, 0x75, 0x5d, 0x08, 0x00, 0xae, 0xeb, 0xf6, 0xea, 0xd7, 0x13, 0x3a, 0x21, 0x5a, -0x5f, 0x30, 0x84, 0x52, 0x26, 0x95, 0xc9, 0x14, 0xf2, 0x57, 0x55, 0x6b, 0xb1, 0x10, 0xc2, -0xe1, 0xbd, 0x3b, 0x51, 0xc0, 0xb7, 0x55, 0x4c, 0x71, 0x12, 0x26, 0xc7, 0x0d, 0xf9, 0x51, -0xa4, 0x38, 0x02, 0x05, 0x7f, 0xb8, 0xf1, 0x72, 0x4b, 0xbf, 0x71, 0x89, 0x14, 0xf3, 0x77, -0x38, 0xd9, 0x71, 0x24, 0xf3, 0x00, 0x11, 0xa1, 0xd8, 0xd4, 0x69, 0x27, 0x08, 0x37, 0x35, -0xc9, 0x11, 0x9d, 0x90, 0x1c, 0x0e, 0xe7, 0x1c, 0xff, 0x2d, 0x1e, 0xe8, 0x92, 0xe1, 0x18, -0x10, 0x95, 0x7c, 0xe0, 0x80, 0xf4, 0x96, 0x43, 0x21, 0xf9, 0x75, 0x21, 0x64, 0x38, 0xdd, -0x9f, 0x1e, 0x95, 0x16, 0xda, 0x56, 0x1d, 0x4f, 0x9a, 0x53, 0xb2, 0xe2, 0xe4, 0x18, 0xcb, -0x6b, 0x1a, 0x65, 0xeb, 0x56, 0xc6, 0x3b, 0xe5, 0xfe, 0xd8, 0x26, 0x3f, 0x3a, 0x84, 0x59, -0x72, 0x66, 0xa2, 0xf3, 0x75, 0xff, 0xfb, 0x60, 0xb3, 0x22, 0xad, 0x3f, 0x2d, 0x6b, 0xf9, -0xeb, 0xea, 0x05, 0x7c, 0xd8, 0x8f, 0x6d, 0x2c, 0x98, 0x9e, 0x2b, 0x93, 0xf1, 0x5e, 0x46, -0xf0, 0x87, 0x49, 0x29, 0x73, 0x68, 0xd7, 0x7f, 0xf9, 0xf0, 0xe5, 0x7d, 0xdb, 0x1d, 0x75, -0x19, 0xf3, 0xc4, 0x58, 0x9b, 0x17, 0x88, 0xa8, 0x92, 0xe0, 0xbe, 0xbd, 0x8b, 0x1d, 0x8d, -0x9f, 0x56, 0x76, 0xad, 0xaf, 0x29, 0xe2, 0xd9, 0xd5, 0x52, 0xf6, 0xb5, 0x56, 0x35, 0x57, -0x3a, 0xc8, 0xe1, 0x56, 0x43, 0x19, 0x94, 0xd3, 0x04, 0x9b, 0x6d, 0x35, 0xd8, 0x0b, 0x5f, -0x4d, 0x19, 0x8e, 0xec, 0xfa, 0x64, 0x91, 0x0a, 0x72, 0x20, 0x2b, 0xbc, 0x1a, 0x4a, 0xfe, -0x8b, 0xfd, 0xbb, 0xed, 0x1b, 0x23, 0xea, 0xad, 0x72, 0x82, 0xa1, 0x29, 0x99, 0x71, 0xbd, -0xf0, 0x95, 0xc1, 0x03, 0xdd, 0x7b, 0xc2, 0xb2, 0x3c, 0x28, 0x54, 0xd3, 0x68, 0xa4, 0x72, -0xc8, 0x66, 0x96, 0xe0, 0xd1, 0xd8, 0x7f, 0xf8, 0xd1, 0x26, 0x2b, 0xf7, 0xad, 0xba, 0x55, -0xca, 0x15, 0xb9, 0x32, 0xc3, 0xe5, 0x88, 0x97, 0x8e, 0x5c, 0xfb, 0x92, 0x25, 0x8b, 0xbf, -0xa2, 0x45, 0x55, 0x7a, 0xa7, 0x6f, 0x8b, 0x57, 0x5b, 0xcf, 0x0e, 0xcb, 0x1d, 0xfb, 0x20, -0x82, 0x77, 0xa8, 0x8c, 0xcc, 0x16, 0xce, 0x1d, 0xfa, 0xde, 0xcc, 0x0b, 0x62, 0xfe, 0xcc, -0xe1, 0xb7, 0xf0, 0xc3, 0x81, 0x64, 0x73, 0x40, 0xa0, 0xc2, 0x4d, 0x89, 0x11, 0x75, 0x33, -0x55, 0x33, 0x8d, 0xe8, 0x4a, 0xfd, 0xea, 0x6e, 0x30, 0x0b, 0xd7, 0x31, 0x2c, 0xde, 0x47, -0xe3, 0xbf, 0xf8, 0x55, 0x42, 0xe2, 0x7f, 0x59, 0xe5, 0x17, 0xef, 0x99, 0x34, 0x69, 0x91, -0xb1, 0x23, 0x8e, 0x20, 0x87, 0x2d, 0xa8, 0xfe, 0xd5, 0x8a, 0xf3, 0x84, 0x3a, 0xf0, 0x37, -0xe4, 0x09, 0x00, 0x54, 0xee, 0x67, 0x49, 0x93, 0xe4, 0x81, 0x70, 0xe3, 0x90, 0x4d, 0xef, -0xfe, 0x41, 0xb7, 0x99, 0x7b, 0xc1, 0x83, 0xba, 0x62, 0x12, 0x6f, 0x7d, 0xde, 0x6b, 0xaf, -0xda, 0x16, 0xf9, 0x55, 0x51, 0xee, 0xa6, 0x0c, 0x2b, 0x02, 0xa3, 0xfd, 0x8d, 0xfb, 0x30, -0x17, 0xe4, 0x6f, 0xdf, 0x36, 0x71, 0xc4, 0xca, 0x87, 0x25, 0x48, 0xb0, 0x47, 0xec, 0xea, -0xb4, 0xbf, 0xa5, 0x4d, 0x9b, 0x9f, 0x02, 0x93, 0xc4, 0xe3, 0xe4, 0xe8, 0x42, 0x2d, 0x68, -0x81, 0x15, 0x0a, 0xeb, 0x84, 0x5b, 0xd6, 0xa8, 0x74, 0xfb, 0x7d, 0x1d, 0xcb, 0x2c, 0xda, -0x46, 0x2a, 0x76, 0x62, 0xce, 0xbc, 0x5c, 0x9e, 0x8b, 0xe7, 0xcf, 0xbe, 0x78, 0xf5, 0x7c, -0xeb, 0xb3, 0x3a, 0x9c, 0xaa, 0x6f, 0xcc, 0x72, 0xd1, 0x59, 0xf2, 0x11, 0x23, 0xd6, 0x3f, -0x48, 0xd1, 0xb7, 0xce, 0xb0, 0xbf, 0xcb, 0xea, 0x80, 0xde, 0x57, 0xd4, 0x5e, 0x97, 0x2f, -0x75, 0xd1, 0x50, 0x8e, 0x80, 0x2c, 0x66, 0x79, 0xbf, 0x72, 0x4b, 0xbd, 0x8a, 0x81, 0x6c, -0xd3, 0xe1, 0x01, 0xdc, 0xd2, 0x15, 0x26, 0xc5, 0x36, 0xda, 0x2c, 0x1a, 0xc0, 0x27, 0x94, -0xed, 0xb7, 0x9b, 0x85, 0x0b, 0x5e, 0x80, 0x97, 0xc5, 0xec, 0x4f, 0xec, 0x88, 0x5d, 0x50, -0x07, 0x35, 0x47, 0xdc, 0x0b, 0x3b, 0x3d, 0xdd, 0x60, 0xaf, 0xa8, 0x5d, 0x81, 0x38, 0x24, -0x25, 0x5d, 0x5c, 0x15, 0xd1, 0xde, 0xb3, 0xab, 0xec, 0x05, 0x69, 0xef, 0x83, 0xed, 0x57, -0x54, 0xb8, 0x64, 0x64, 0x11, 0x16, 0x32, 0x69, 0xda, 0x9f, 0x2d, 0x7f, 0x36, 0xbb, 0x44, -0x5a, 0x34, 0xe8, 0x7f, 0xbf, 0x03, 0xeb, 0x00, 0x7f, 0x59, 0x68, 0x22, 0x79, 0xcf, 0x73, -0x6c, 0x2c, 0x29, 0xa7, 0xa1, 0x5f, 0x38, 0xa1, 0x1d, 0xf0, 0x20, 0x53, 0xe0, 0x1a, 0x63, -0x14, 0x58, 0x71, 0x10, 0xaa, 0x08, 0x0c, 0x3e, 0x16, 0x1a, 0x60, 0x22, 0x82, 0x7f, 0xba, -0xa4, 0x43, 0xa0, 0xd0, 0xac, 0x1b, 0xd5, 0x6b, 0x64, 0xb5, 0x14, 0x93, 0x31, 0x9e, 0x53, -0x50, 0xd0, 0x57, 0x66, 0xee, 0x5a, 0x4f, 0xfb, 0x03, 0x2a, 0x69, 0x58, 0x76, 0xf1, 0x83, -0xf7, 0x4e, 0xba, 0x8c, 0x42, 0x06, 0x60, 0x5d, 0x6d, 0xce, 0x60, 0x88, 0xae, 0xa4, 0xc3, -0xf1, 0x03, 0xa5, 0x4b, 0x98, 0xa1, 0xff, 0x67, 0xe1, 0xac, 0xa2, 0xb8, 0x62, 0xd7, 0x6f, -0xa0, 0x31, 0xb4, 0xd2, 0x77, 0xaf, 0x21, 0x10, 0x06, 0xc6, 0x9a, 0xff, 0x1d, 0x09, 0x17, -0x0e, 0x5f, 0xf1, 0xaa, 0x54, 0x34, 0x4b, 0x45, 0x8a, 0x87, 0x63, 0xa6, 0xdc, 0xf9, 0x24, -0x30, 0x67, 0xc6, 0xb2, 0xd6, 0x61, 0x33, 0x69, 0xee, 0x50, 0x61, 0x57, 0x28, 0xe7, 0x7e, -0xee, 0xec, 0x3a, 0x5a, 0x73, 0x4e, 0xa8, 0x8d, 0xe4, 0x18, 0xea, 0xec, 0x41, 0x64, 0xc8, -0xe2, 0xe8, 0x66, 0xb6, 0x2d, 0xb6, 0xfb, 0x6a, 0x6c, 0x16, 0xb3, 0xdd, 0x46, 0x43, 0xb9, -0x73, 0x00, 0x6a, 0x71, 0xed, 0x4e, 0x9d, 0x25, 0x1a, 0xc3, 0x3c, 0x4a, 0x95, 0x15, 0x99, -0x35, 0x81, 0x14, 0x02, 0xd6, 0x98, 0x9b, 0xec, 0xd8, 0x23, 0x3b, 0x84, 0x29, 0xaf, 0x0c, -0x99, 0x83, 0xa6, 0x9a, 0x34, 0x4f, 0xfa, 0xe8, 0xd0, 0x3c, 0x4b, 0xd0, 0xfb, 0xb6, 0x68, -0xb8, 0x9e, 0x8f, 0xcd, 0xf7, 0x60, 0x2d, 0x7a, 0x22, 0xe5, 0x7d, 0xab, 0x65, 0x1b, 0x95, -0xa7, 0xa8, 0x7f, 0xb6, 0x77, 0x47, 0x7b, 0x5f, 0x8b, 0x12, 0x72, 0xd0, 0xd4, 0x91, 0xef, -0xde, 0x19, 0x50, 0x3c, 0xa7, 0x8b, 0xc4, 0xa9, 0xb3, 0x23, 0xcb, 0x76, 0xe6, 0x81, 0xf0, -0xc1, 0x04, 0x8f, 0xa3, 0xb8, 0x54, 0x5b, 0x97, 0xac, 0x19, 0xff, 0x3f, 0x55, 0x27, 0x2f, -0xe0, 0x1d, 0x42, 0x9b, 0x57, 0xfc, 0x4b, 0x4e, 0x0f, 0xce, 0x98, 0xa9, 0x43, 0x57, 0x03, -0xbd, 0xe7, 0xc8, 0x94, 0xdf, 0x6e, 0x36, 0x73, 0x32, 0xb4, 0xef, 0x2e, 0x85, 0x7a, 0x6e, -0xfc, 0x6c, 0x18, 0x82, 0x75, 0x35, 0x90, 0x07, 0xf3, 0xe4, 0x9f, 0x3e, 0xdc, 0x68, 0xf3, -0xb5, 0xf3, 0x19, 0x80, 0x92, 0x06, 0x99, 0xa2, 0xe8, 0x6f, 0xff, 0x2e, 0x7f, 0xae, 0x42, -0xa4, 0x5f, 0xfb, 0xd4, 0x0e, 0x81, 0x2b, 0xc3, 0x04, 0xff, 0x2b, 0xb3, 0x74, 0x4e, 0x36, -0x5b, 0x9c, 0x15, 0x00, 0xc6, 0x47, 0x2b, 0xe8, 0x8b, 0x3d, 0xf1, 0x9c, 0x03, 0x9a, 0x58, -0x7f, 0x9b, 0x9c, 0xbf, 0x85, 0x49, 0x79, 0x35, 0x2e, 0x56, 0x7b, 0x41, 0x14, 0x39, 0x47, -0x83, 0x26, 0xaa, 0x07, 0x89, 0x98, 0x11, 0x1b, 0x86, 0xe7, 0x73, 0x7a, 0xd8, 0x7d, 0x78, -0x61, 0x53, 0xe9, 0x79, 0xf5, 0x36, 0x8d, 0x44, 0x92, 0x84, 0xf9, 0x13, 0x50, 0x58, 0x3b, -0xa4, 0x6a, 0x36, 0x65, 0x49, 0x8e, 0x3c, 0x0e, 0xf1, 0x6f, 0xd2, 0x84, 0xc4, 0x7e, 0x8e, -0x3f, 0x39, 0xae, 0x7c, 0x84, 0xf1, 0x63, 0x37, 0x8e, 0x3c, 0xcc, 0x3e, 0x44, 0x81, 0x45, -0xf1, 0x4b, 0xb9, 0xed, 0x6b, 0x36, 0x5d, 0xbb, 0x20, 0x60, 0x1a, 0x0f, 0xa3, 0xaa, 0x55, -0x77, 0x3a, 0xa9, 0xae, 0x37, 0x4d, 0xba, 0xb8, 0x86, 0x6b, 0xbc, 0x08, 0x50, 0xf6, 0xcc, -0xa4, 0xbd, 0x1d, 0x40, 0x72, 0xa5, 0x86, 0xfa, 0xe2, 0x10, 0xae, 0x3d, 0x58, 0x4b, 0x97, -0xf3, 0x43, 0x74, 0xa9, 0x9e, 0xeb, 0x21, 0xb7, 0x01, 0xa4, 0x86, 0x93, 0x97, 0xee, 0x2f, -0x4f, 0x3b, 0x86, 0xa1, 0x41, 0x6f, 0x41, 0x26, 0x90, 0x78, 0x5c, 0x7f, 0x30, 0x38, 0x4b, -0x3f, 0xaa, 0xec, 0xed, 0x5c, 0x6f, 0x0e, 0xad, 0x43, 0x87, 0xfd, 0x93, 0x35, 0xe6, 0x01, -0xef, 0x41, 0x26, 0x90, 0x99, 0x9e, 0xfb, 0x19, 0x5b, 0xad, 0xd2, 0x91, 0x8a, 0xe0, 0x46, -0xaf, 0x65, 0xfa, 0x4f, 0x84, 0xc1, 0xa1, 0x2d, 0xcf, 0x45, 0x8b, 0xd3, 0x85, 0x50, 0x55, -0x7c, 0xf9, 0x67, 0x88, 0xd4, 0x4e, 0xe9, 0xd7, 0x6b, 0x61, 0x54, 0xa1, 0xa4, 0xa6, 0xa2, -0xc2, 0xbf, 0x30, 0x9c, 0x40, 0x9f, 0x5f, 0xd7, 0x69, 0x2b, 0x24, 0x82, 0x5e, 0xd9, 0xd6, -0xa7, 0x12, 0x54, 0x1a, 0xf7, 0x55, 0x9f, 0x76, 0x50, 0xa9, 0x95, 0x84, 0xe6, 0x6b, 0x6d, -0xb5, 0x96, 0x54, 0xd6, 0xcd, 0xb3, 0xa1, 0x9b, 0x46, 0xa7, 0x94, 0x4d, 0xc4, 0x94, 0xb4, -0x98, 0xe3, 0xe1, 0xe2, 0x34, 0xd5, 0x33, 0x16, 0x07, 0x54, 0xcd, 0xb7, 0x77, 0x53, 0xdb, -0x4f, 0x4d, 0x46, 0x9d, 0xe9, 0xd4, 0x9c, 0x8a, 0x36, 0xb6, 0xb8, 0x38, 0x26, 0x6c, 0x0e, -0xff, 0x9c, 0x1b, 0x43, 0x8b, 0x80, 0xcc, 0xb9, 0x3d, 0xda, 0xc7, 0xf1, 0x8a, 0xf2, 0x6d, -0xb8, 0xd7, 0x74, 0x2f, 0x7e, 0x1e, 0xb7, 0xd3, 0x4a, 0xb4, 0xac, 0xfc, 0x79, 0x48, 0x6c, -0xbc, 0x96, 0xb6, 0x94, 0x46, 0x57, 0x2d, 0xb0, 0xa3, 0xfc, 0x1e, 0xb9, 0x52, 0x60, 0x85, -0x2d, 0x41, 0xd0, 0x43, 0x01, 0x1e, 0x1c, 0xd5, 0x7d, 0xfc, 0xf3, 0x96, 0x0d, 0xc7, 0xcb, -0x2a, 0x29, 0x9a, 0x93, 0xdd, 0x88, 0x2d, 0x37, 0x5d, 0xaa, 0xfb, 0x49, 0x68, 0xa0, 0x9c, -0x50, 0x86, 0x7f, 0x68, 0x56, 0x57, 0xf9, 0x79, 0x18, 0x39, 0xd4, 0xe0, 0x01, 0x84, 0x33, -0x61, 0xca, 0xa5, 0xd2, 0xd6, 0xe4, 0xc9, 0x8a, 0x4a, 0x23, 0x44, 0x4e, 0xbc, 0xf0, 0xdc, -0x24, 0xa1, 0xa0, 0xc4, 0xe2, 0x07, 0x3c, 0x10, 0xc4, 0xb5, 0x25, 0x4b, 0x65, 0x63, 0xf4, -0x80, 0xe7, 0xcf, 0x61, 0xb1, 0x71, 0x82, 0x21, 0x87, 0x2c, 0xf5, 0x91, 0x00, 0x32, 0x0c, -0xec, 0xa9, 0xb5, 0x9a, 0x74, 0x85, 0xe3, 0x36, 0x8f, 0x76, 0x4f, 0x9c, 0x6d, 0xce, 0xbc, -0xad, 0x0a, 0x4b, 0xed, 0x76, 0x04, 0xcb, 0xc3, 0xb9, 0x33, 0x9e, 0x01, 0x93, 0x96, 0x69, -0x7d, 0xc5, 0xa2, 0x45, 0x79, 0x9b, 0x04, 0x5c, 0x84, 0x09, 0xed, 0x88, 0x43, 0xc7, 0xab, -0x93, 0x14, 0x26, 0xa1, 0x40, 0xb5, 0xce, 0x4e, 0xbf, 0x2a, 0x42, 0x85, 0x3e, 0x2c, 0x3b, -0x54, 0xe8, 0x12, 0x1f, 0x0e, 0x97, 0x59, 0xb2, 0x27, 0x89, 0xfa, 0xf2, 0xdf, 0x8e, 0x68, -0x59, 0xdc, 0x06, 0xbc, 0xb6, 0x85, 0x0d, 0x06, 0x22, 0xec, 0xb1, 0xcb, 0xe5, 0x04, 0xe6, -0x3d, 0xb3, 0xb0, 0x41, 0x73, 0x08, 0x3f, 0x3c, 0x58, 0x86, 0x63, 0xeb, 0x50, 0xee, 0x1d, -0x2c, 0x37, 0x74, 0xa9, 0xd3, 0x18, 0xa3, 0x47, 0x6e, 0x93, 0x54, 0xad, 0x0a, 0x5d, 0xb8, -0x2a, 0x55, 0x5d, 0x78, 0xf6, 0xee, 0xbe, 0x8e, 0x3c, 0x76, 0x69, 0xb9, 0x40, 0xc2, 0x34, -0xec, 0x2a, 0xb9, 0xed, 0x7e, 0x20, 0xe4, 0x8d, 0x00, 0x38, 0xc7, 0xe6, 0x8f, 0x44, 0xa8, -0x86, 0xce, 0xeb, 0x2a, 0xe9, 0x90, 0xf1, 0x4c, 0xdf, 0x32, 0xfb, 0x73, 0x1b, 0x6d, 0x92, -0x1e, 0x95, 0xfe, 0xb4, 0xdb, 0x65, 0xdf, 0x4d, 0x23, 0x54, 0x89, 0x48, 0xbf, 0x4a, 0x2e, -0x70, 0xd6, 0xd7, 0x62, 0xb4, 0x33, 0x29, 0xb1, 0x3a, 0x33, 0x4c, 0x23, 0x6d, 0xa6, 0x76, -0xa5, 0x21, 0x63, 0x48, 0xe6, 0x90, 0x5d, 0xed, 0x90, 0x95, 0x0b, 0x7a, 0x84, 0xbe, 0xb8, -0x0d, 0x5e, 0x63, 0x0c, 0x62, 0x26, 0x4c, 0x14, 0x5a, 0xb3, 0xac, 0x23, 0xa4, 0x74, 0xa7, -0x6f, 0x33, 0x30, 0x05, 0x60, 0x01, 0x42, 0xa0, 0x28, 0xb7, 0xee, 0x19, 0x38, 0xf1, 0x64, -0x80, 0x82, 0x43, 0xe1, 0x41, 0x27, 0x1f, 0x1f, 0x90, 0x54, 0x7a, 0xd5, 0x23, 0x2e, 0xd1, -0x3d, 0xcb, 0x28, 0xba, 0x58, 0x7f, 0xdc, 0x7c, 0x91, 0x24, 0xe9, 0x28, 0x51, 0x83, 0x6e, -0xc5, 0x56, 0x21, 0x42, 0xed, 0xa0, 0x56, 0x22, 0xa1, 0x40, 0x80, 0x6b, 0xa8, 0xf7, 0x94, -0xca, 0x13, 0x6b, 0x0c, 0x39, 0xd9, 0xfd, 0xe9, 0xf3, 0x6f, 0xa6, 0x9e, 0xfc, 0x70, 0x8a, -0xb3, 0xbc, 0x59, 0x3c, 0x1e, 0x1d, 0x6c, 0xf9, 0x7c, 0xaf, 0xf9, 0x88, 0x71, 0x95, 0xeb, -0x57, 0x00, 0xbd, 0x9f, 0x8c, 0x4f, 0xe1, 0x24, 0x83, 0xc5, 0x22, 0xea, 0xfd, 0xd3, 0x0c, -0xe2, 0x17, 0x18, 0x7c, 0x6a, 0x4c, 0xde, 0x77, 0xb4, 0x53, 0x9b, 0x4c, 0x81, 0xcd, 0x23, -0x60, 0xaa, 0x0e, 0x25, 0x73, 0x9c, 0x02, 0x79, 0x32, 0x30, 0xdf, 0x74, 0xdf, 0x75, 0x19, -0xf4, 0xa5, 0x14, 0x5c, 0xf7, 0x7a, 0xa8, 0xa5, 0x91, 0x84, 0x7c, 0x60, 0x03, 0x06, 0x3b, -0xcd, 0x50, 0xb6, 0x27, 0x9c, 0xfe, 0xb1, 0xdd, 0xcc, 0xd3, 0xb0, 0x59, 0x24, 0xb2, 0xca, -0xe2, 0x1c, 0x81, 0x22, 0x9d, 0x07, 0x8f, 0x8e, 0xb9, 0xbe, 0x4e, 0xfa, 0xfc, 0x39, 0x65, -0xba, 0xbf, 0x9d, 0x12, 0x37, 0x5e, 0x97, 0x7e, 0xf3, 0x89, 0xf5, 0x5d, 0xf5, 0xe3, 0x09, -0x8c, 0x62, 0xb5, 0x20, 0x9d, 0x0c, 0x53, 0x8a, 0x68, 0x1b, 0xd2, 0x8f, 0x75, 0x17, 0x5d, -0xd4, 0xe5, 0xda, 0x75, 0x62, 0x19, 0x14, 0x6a, 0x26, 0x2d, 0xeb, 0xf8, 0xaf, 0x37, 0xf0, -0x6c, 0xa4, 0x55, 0xb1, 0xbc, 0xe2, 0x33, 0xc0, 0x9a, 0xca, 0xb0, 0x11, 0x49, 0x4f, 0x68, -0x9b, 0x3b, 0x6b, 0x3c, 0xcc, 0x13, 0xf6, 0xc7, 0x85, 0x61, 0x68, 0x42, 0xae, 0xbb, 0xdd, -0xcd, 0x45, 0x16, 0x29, 0x1d, 0xea, 0xdb, 0xc8, 0x03, 0x94, 0x3c, 0xee, 0x4f, 0x82, 0x11, -0xc3, 0xec, 0x28, 0xbd, 0x97, 0x05, 0x99, 0xde, 0xd7, 0xbb, 0x5e, 0x22, 0x1f, 0xd4, 0xeb, -0x64, 0xd9, 0x92, 0xd9, 0x85, 0xb7, 0x6a, 0x05, 0x6a, 0xe4, 0x24, 0x41, 0xf1, 0xcd, 0xf0, -0xd8, 0x3f, 0xf8, 0x9e, 0x0e, 0xcd, 0x0b, 0x7a, 0x70, 0x6b, 0x5a, 0x75, 0x0a, 0x6a, 0x33, -0x88, 0xec, 0x17, 0x75, 0x08, 0x70, 0x10, 0x2f, 0x24, 0xcf, 0xc4, 0xe9, 0x42, 0x00, 0x61, -0x94, 0xca, 0x1f, 0x3a, 0x76, 0x06, 0xfa, 0xd2, 0x48, 0x81, 0xf0, 0x77, 0x60, 0x03, 0x45, -0xd9, 0x61, 0xf4, 0xa4, 0x6f, 0x3d, 0xd9, 0x30, 0xc3, 0x04, 0x6b, 0x54, 0x2a, 0xb7, 0xec, -0x3b, 0xf4, 0x4b, 0xf5, 0x68, 0x52, 0x26, 0xce, 0xff, 0x5d, 0x19, 0x91, 0xa0, 0xa3, 0xa5, -0xa9, 0xb1, 0xe0, 0x23, 0xc4, 0x0a, 0x77, 0x4d, 0xf9, 0x51, 0x20, 0xa3, 0xa5, 0xa9, 0xb1, -0xc1, 0x00, 0x82, 0x86, 0x8e, 0x7f, 0x5d, 0x19, 0x91, 0xa0, 0xa3, 0xc4, 0xeb, 0x54, 0x0b, -0x75, 0x68, 0x52, 0x07, 0x8c, 0x9a, 0x97, 0x8d, 0x79, 0x70, 0x62, 0x46, 0xef, 0x5c, 0x1b, -0x95, 0x89, 0x71, 0x41, 0xe1, 0x21, 0xa1, 0xa1, 0xa1, 0xc0, 0x02, 0x67, 0x4c, 0x1a, 0xb6, -0xcf, 0xfd, 0x78, 0x53, 0x24, 0xab, 0xb5, 0xc9, 0xf1, 0x60, 0x23, 0xa5, 0xc8, 0x12, 0x87, -0x6d, 0x58, 0x13, 0x85, 0x88, 0x92, 0x87, 0x6d, 0x58, 0x32, 0xc7, 0x0c, 0x9a, 0x97, 0xac, -0xda, 0x36, 0xee, 0x5e, 0x3e, 0xdf, 0x1d, 0xb8, 0xf2, 0x66, 0x2f, 0xbd, 0xf8, 0x72, 0x47, -0xed, 0x58, 0x13, 0x85, 0x88, 0x92, 0x87, 0x8c, 0x7b, 0x55, 0x09, 0x90, 0xa2, 0xc6, 0xef, -0x3d, 0xf8, 0x53, 0x24, 0xab, 0xd4, 0x2a, 0xb7, 0xec, 0x5a, 0x36, 0xee, 0x5e, 0x3e, 0xdf, -0x3c, 0xfa, 0x76, 0x4f, 0xfd, 0x59, 0x30, 0xe2, 0x46, 0xef, 0x3d, 0xf8, 0x53, 0x05, 0x69, -0x31, 0xc1, 0x00, 0x82, 0x86, 0x8e, 0x7f, 0x5d, 0x19, 0xb0, 0xe2, 0x27, 0xcc, 0xfb, 0x74, -0x4b, 0x14, 0x8b, 0x94, 0x8b, 0x75, 0x68, 0x33, 0xc5, 0x08, 0x92, 0x87, 0x8c, 0x9a, 0xb6, -0xcf, 0x1c, 0xba, 0xd7, 0x0d, 0x98, 0xb2, 0xe6, 0x2f, 0xdc, 0x1b, 0x95, 0x89, 0x71, 0x60, -0x23, 0xc4, 0x0a, 0x96, 0x8f, 0x9c, 0xba, 0xf6, 0x6e, 0x3f, 0xfc, 0x5b, 0x15, 0xa8, 0xd2, -0x26, 0xaf, 0xbd, 0xf8, 0x72, 0x66, 0x2f, 0xdc, 0x1b, 0xb4, 0xcb, 0x14, 0x8b, 0x94, 0xaa, -0xb7, 0xcd, 0xf9, 0x51, 0x01, 0x80, 0x82, 0x86, 0x6f, 0x3d, 0xd9, 0x30, 0xe2, 0x27, 0xcc, -0xfb, 0x74, 0x4b, 0x14, 0xaa, 0xb7, 0xcd, 0xf9, 0x70, 0x43, 0x04, 0x6b, 0x35, 0xc9, 0xf1, -0x60, 0x23, 0xa5, 0xc8, 0xf3, 0x45, 0x08, 0x92, 0x87, 0x6d, 0x58, 0x32, 0xe6, 0x2f, 0xbd, -0xf8, 0x72, 0x66, 0x4e, 0x1e, 0xbe, 0xfe, 0x7e, 0x7e, 0x7e, 0x5f, 0x1d, 0x99, 0x91, 0xa0, -0xa3, 0xc4, 0x0a, 0x77, 0x4d, 0x18, 0x93, 0xa4, 0xab, 0xd4, 0x0b, 0x75, 0x49, 0x10, 0xa2, -0xc6, 0xef, 0x3d, 0xf8, 0x53, 0x24, 0xab, 0xb5, 0xe8, 0x33, 0xe4, 0x4a, 0x16, 0xae, 0xde, -0x1f, 0xbc, 0xdb, 0x15, 0xa8, 0xb3, 0xc5, 0x08, 0x73, 0x45, 0xe9, 0x31, 0xc1, 0xe1, 0x21, -0xa1, 0xa1, 0xa1, 0xc0, 0x02, 0x86, 0x6f, 0x5c, 0x3a, 0xd7, 0x0d, 0x98, 0x93, 0xa4, 0xca, -0x16, 0xae, 0xde, 0x1f, 0x9d, 0x99, 0xb0, 0xe2, 0x46, 0xef, 0x3d, 0xf8, 0x72, 0x47, 0x0c, -0x9a, 0xb6, 0xcf, 0xfd, 0x59, 0x11, 0xa0, 0xa3, 0xa5, 0xc8, 0xf3, 0x45, 0x08, 0x92, 0x87, -0x6d, 0x39, 0xf0, 0x43, 0x04, 0x8a, 0x96, 0xae, 0xde, 0x3e, 0xdf, 0x1d, 0x99, 0x91, 0xa0, -0xc2, 0x06, 0x6f, 0x3d, 0xf8, 0x72, 0x47, 0x0c, 0x9a, 0x97, 0x8d, 0x98, 0x93, 0x85, 0x88, -0x73, 0x45, 0xe9, 0x31, 0xe0, 0x23, 0xa5, 0xa9, 0xd0, 0x03, 0x84, 0x8a, 0x96, 0xae, 0xde, -0x1f, 0xbc, 0xdb, 0x15, 0xa8, 0xd2, 0x26, 0xce, 0xff, 0x5d, 0x19, 0x91, 0x81, 0x80, 0x82, -0x67, 0x2d, 0xd8, 0x13, 0xa4, 0xab, 0xd4, 0x0b, 0x94, 0xaa, 0xb7, 0xcd, 0xf9, 0x51, 0x20, -0xa3, 0xa5, 0xc8, 0xf3, 0x45, 0xe9, 0x50, 0x22, 0xc6, 0xef, 0x5c, 0x3a, 0xd7, 0x0d, 0x98, -0x93, 0x85, 0x88, 0x73, 0x64, 0x4a, 0xf7, 0x4d, 0xf9, 0x51, 0x20, 0xa3, 0xc4, 0x0a, 0x96, -0xae, 0xde, 0x3e, 0xfe, 0x7e, 0x7e, 0x7e, 0x5f, 0x3c, 0xfa, 0x76, 0x4f, 0xfd, 0x78, 0x72, -0x66, 0x2f, 0xbd, 0xd9, 0x30, 0xc3, 0xe5, 0x48, 0x12, 0x87, 0x8c, 0x7b, 0x55, 0x28, 0xd2, -0x07, 0x8c, 0x9a, 0x97, 0xac, 0xda, 0x17, 0x8d, 0x79, 0x51, 0x20, 0xa3, 0xc4, 0xeb, 0x54, -0x0b, 0x94, 0x8b, 0x94, 0xaa, 0xd6, 0x2e, 0xbf, 0xfc, 0x5b, 0x15, 0xa8, 0xd2, 0x26, 0xaf, -0xdc, 0x1b, 0xb4, 0xea, 0x37, 0xec, 0x3b, 0xf4, 0x6a, 0x37, 0xcd, 0x18, 0x93, 0x85, 0x69, -0x31, 0xc1, 0xe1, 0x40, 0xe3, 0x25, 0xc8, 0x12, 0x87, 0x8c, 0x9a, 0xb6, 0xcf, 0xfd, 0x59, -0x11, 0xa0, 0xc2, 0x06, 0x8e, 0x7f, 0x5d, 0x38, 0xf2, 0x47, 0x0c, 0x7b, 0x74, 0x6a, 0x37, -0xec, 0x5a, 0x36, 0xee, 0x3f, 0xfc, 0x7a, 0x76, 0x4f, 0x1c, 0x9b, 0x95, 0x89, 0x71, 0x41, -0x00, 0x63, 0x44, 0xeb, 0x54, 0x2a, 0xd6, 0x0f, 0x9c, 0xba, 0xd7, 0x0d, 0x98, 0x93, 0x85, -0x69, 0x31, 0xc1, 0x00, 0x82, 0x86, 0x8e, 0x9e, 0xbe, 0xdf, 0x3c, 0xfa, 0x57, 0x2c, 0xda, -0x36, 0xee, 0x3f, 0xfc, 0x5b, 0x15, 0x89, 0x71, 0x41, 0x00, 0x82, 0x86, 0x8e, 0x7f, 0x5d, -0x38, 0xf2, 0x47, 0xed, 0x58, 0x13, 0xa4, 0xca, 0xf7, 0x4d, 0xf9, 0x51, 0x01, 0x80, 0x63, -0x44, 0xeb, 0x54, 0x2a, 0xd6, 0x2e, 0xbf, 0xdd, 0x19, 0x91, 0xa0, 0xa3, 0xa5, 0xa9, 0xb1, -0xe0, 0x42, 0x06, 0x8e, 0x7f, 0x5d, 0x19, 0x91, 0xa0, 0xa3, 0xc4, 0x0a, 0x96, 0x8f, 0x7d, -0x78, 0x72, 0x47, 0x0c, 0x7b, 0x74, 0x6a, 0x56, 0x2e, 0xde, 0x1f, 0xbc, 0xfa, 0x57, 0x0d, -0x79, 0x51, 0x01, 0x61, 0x21, 0xa1, 0xc0, 0xe3, 0x25, 0xa9, 0xb1, 0xc1, 0xe1, 0x40, 0x02, -0x67, 0x4c, 0x1a, 0x97, 0x8d, 0x98, 0x93, 0xa4, 0xab, 0xd4, 0x2a, 0xd6, 0x0f, 0x9c, 0x9b, -0xb4, 0xcb, 0x14, 0xaa, 0xb7, 0xcd, 0xf9, 0x51, 0x20, 0xa3, 0xc4, 0xeb, 0x35, 0xc9, 0xf1, -0x60, 0x42, 0x06, 0x8e, 0x7f, 0x7c, 0x7a, 0x76, 0x6e, 0x3f, 0xfc, 0x7a, 0x76, 0x6e, 0x5e, -0x3e, 0xfe, 0x7e, 0x5f, 0x3c, 0xdb, 0x15, 0x89, 0x71, 0x41, 0xe1, 0x21, 0xc0, 0xe3, 0x44, -0xeb, 0x54, 0x2a, 0xb7, 0xcd, 0xf9, 0x70, 0x62, 0x27, 0xad, 0xd8, 0x32, 0xc7, 0x0c, 0x7b, -0x74, 0x4b, 0x14, 0xaa, 0xb7, 0xec, 0x3b, 0xd5, 0x28, 0xd2, 0x07, 0x6d, 0x39, 0xd1, 0x20, -0xc2, 0xe7, 0x4c, 0x1a, 0x97, 0x8d, 0x98, 0xb2, 0xc7, 0x0c, 0x59, 0x28, 0xf3, 0x9b }; diff --git a/keyboards/oddball/rules.mk b/keyboards/oddball/rules.mk index e9e540c3cab5..168599adc168 100644 --- a/keyboards/oddball/rules.mk +++ b/keyboards/oddball/rules.mk @@ -4,26 +4,18 @@ MCU = atmega32u4 # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = yes POINTING_DEVICE_ENABLE = yes DEFAULT_FOLDER = oddball/v1 - -SRC += spi_master.c -SRC += adns/adns.c -SRC += pmw/pmw.c diff --git a/keyboards/oddball/v1/rules.mk b/keyboards/oddball/v1/rules.mk index afd53216161b..e4320fb1252f 100644 --- a/keyboards/oddball/v1/rules.mk +++ b/keyboards/oddball/v1/rules.mk @@ -1,2 +1,2 @@ -# Teensy 2.0 +# Bootloader selection BOOTLOADER = halfkay diff --git a/keyboards/oddball/v2/rules.mk b/keyboards/oddball/v2/rules.mk index 94a167143ca2..8b8ada3d9d69 100644 --- a/keyboards/oddball/v2/rules.mk +++ b/keyboards/oddball/v2/rules.mk @@ -1,2 +1,2 @@ -# Elite C +# Bootloader selection BOOTLOADER = qmk-dfu diff --git a/keyboards/oddball/v2_1/rules.mk b/keyboards/oddball/v2_1/rules.mk index 94a167143ca2..8b8ada3d9d69 100644 --- a/keyboards/oddball/v2_1/rules.mk +++ b/keyboards/oddball/v2_1/rules.mk @@ -1,2 +1,2 @@ -# Elite C +# Bootloader selection BOOTLOADER = qmk-dfu diff --git a/keyboards/oddforge/vea/info.json b/keyboards/oddforge/vea/info.json index c067a8272240..471d04068dba 100644 --- a/keyboards/oddforge/vea/info.json +++ b/keyboards/oddforge/vea/info.json @@ -2,8 +2,6 @@ "keyboard_name": "VE.A", "url": "https://drop.com/buy/ve-a", "maintainer": "MajorKoos", - "width": 19.75, - "height": 6, "layouts": { "LAYOUT": { "layout": [{"label":"5,0", "x":2.25, "y":0}, {"label":"5,1", "x":3.25, "y":0}, {"label":"5,2", "x":4.25, "y":0}, {"label":"5,3", "x":5.25, "y":0}, {"label":"5,4", "x":6.25, "y":0}, {"label":"5,5", "x":7.25, "y":0}, {"label":"5,6", "x":8.25, "y":0}, {"label":"5,8", "x":10.75, "y":0}, {"label":"5,9", "x":11.75, "y":0}, {"label":"5,10", "x":12.75, "y":0}, {"label":"5,11", "x":13.75, "y":0}, {"label":"5,12", "x":14.75, "y":0}, {"label":"5,13", "x":15.75, "y":0}, {"label":"6,11", "x":16.75, "y":0}, {"label":"7,11", "x":17.75, "y":0}, {"label":"6,13", "x":18.75, "y":0}, {"label":"6,1", "x":0, "y":1}, {"label":"7,1", "x":1, "y":1}, {"label":"4,0", "x":2.25, "y":1}, {"label":"4,1", "x":3.25, "y":1}, {"label":"4,2", "x":4.25, "y":1}, {"label":"4,3", "x":5.25, "y":1}, {"label":"4,4", "x":6.25, "y":1}, {"label":"4,5", "x":7.25, "y":1}, {"label":"4,6", "x":8.25, "y":1}, {"label":"4,8", "x":10.75, "y":1}, {"label":"4,9", "x":11.75, "y":1}, {"label":"4,10", "x":12.75, "y":1}, {"label":"4,11", "x":13.75, "y":1}, {"label":"4,12", "x":14.75, "y":1}, {"label":"4,13", "x":15.75, "y":1}, {"label":"4,14", "x":16.75, "y":1, "w":2}, {"label":"6,10", "x":18.75, "y":1}, {"label":"6,2", "x":0, "y":2}, {"label":"7,2", "x":1, "y":2}, {"label":"3,0", "x":2.25, "y":2, "w":1.5}, {"label":"3,1", "x":3.75, "y":2}, {"label":"3,2", "x":4.75, "y":2}, {"label":"3,3", "x":5.75, "y":2}, {"label":"3,4", "x":6.75, "y":2}, {"label":"3,5", "x":7.75, "y":2}, {"label":"1,8", "x":10.25, "y":2}, {"label":"1,9", "x":11.25, "y":2}, {"label":"1,10", "x":12.25, "y":2}, {"label":"1,11", "x":13.25, "y":2}, {"label":"1,12", "x":14.25, "y":2}, {"label":"1,13", "x":15.25, "y":2}, {"label":"1,14", "x":16.25, "y":2}, {"label":"2,14", "x":17.25, "y":2, "w":1.5}, {"label":"7,10", "x":18.75, "y":2}, {"label":"6,3", "x":0, "y":3}, {"label":"7,3", "x":1, "y":3}, {"label":"2,0", "x":2.25, "y":3, "w":1.75}, {"label":"2,1", "x":4, "y":3}, {"label":"2,2", "x":5, "y":3}, {"label":"2,3", "x":6, "y":3}, {"label":"2,4", "x":7, "y":3}, {"label":"2,5", "x":8, "y":3}, {"label":"2,8", "x":10.5, "y":3}, {"label":"2,9", "x":11.5, "y":3}, {"label":"2,10", "x":12.5, "y":3}, {"label":"2,11", "x":13.5, "y":3}, {"label":"2,12", "x":14.5, "y":3}, {"label":"2,13", "x":15.5, "y":3}, {"label":"3,13", "x":16.5, "y":3, "w":2.25}, {"label":"6,12", "x":18.75, "y":3}, {"label":"6,4", "x":0, "y":4}, {"label":"7,4", "x":1, "y":4}, {"label":"1,0", "x":2.25, "y":4, "w":2.25}, {"label":"1,1", "x":4.5, "y":4}, {"label":"1,2", "x":5.5, "y":4}, {"label":"1,3", "x":6.5, "y":4}, {"label":"1,4", "x":7.5, "y":4}, {"label":"1,5", "x":8.5, "y":4}, {"label":"3,8", "x":11, "y":4}, {"label":"3,9", "x":12, "y":4}, {"label":"3,10", "x":13, "y":4}, {"label":"3,11", "x":14, "y":4}, {"label":"3,12", "x":15, "y":4}, {"label":"3,14", "x":16, "y":4, "w":1.75}, {"label":"6,8", "x":17.75, "y":4}, {"label":"7,12", "x":18.75, "y":4}, {"label":"6,5", "x":0, "y":5}, {"label":"7,5", "x":1, "y":5}, {"label":"0,0", "x":2.25, "y":5, "w":1.25}, {"label":"0,1", "x":3.5, "y":5, "w":1.25}, {"label":"0,2", "x":4.75, "y":5, "w":1.25}, {"label":"7,7", "x":6, "y":5, "w":2}, {"label":"6,6", "x":8, "y":5}, {"label":"6,14", "x":10.5, "y":5, "w":2.75}, {"label":"0,10", "x":13.25, "y":5, "w":1.25}, {"label":"0,9", "x":14.5, "y":5}, {"label":"0,8", "x":15.5, "y":5, "w":1.25}, {"label":"7,8", "x":16.75, "y":5}, {"label":"6,9", "x":17.75, "y":5}, {"label":"7,9", "x":18.75, "y":5}] diff --git a/keyboards/oddforge/vea/rules.mk b/keyboards/oddforge/vea/rules.mk index fce46039f07d..e466f73eae15 100644 --- a/keyboards/oddforge/vea/rules.mk +++ b/keyboards/oddforge/vea/rules.mk @@ -1,9 +1,11 @@ # MCU name MCU = atmega32a -BOOTLOADER = bootloadHID + +# Bootloader selection +BOOTLOADER = bootloadhid # Build Options -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 diff --git a/keyboards/odelia/info.json b/keyboards/odelia/info.json index 98076b0610ba..b20479595281 100644 --- a/keyboards/odelia/info.json +++ b/keyboards/odelia/info.json @@ -2,8 +2,6 @@ "keyboard_name": "odelia", "url": "", "maintainer": "kb-elmo", - "width": 21, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/odelia/rules.mk b/keyboards/odelia/rules.mk index 5c0d8f307c54..d2109f62500b 100644 --- a/keyboards/odelia/rules.mk +++ b/keyboards/odelia/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/ogre/ergo_single/info.json b/keyboards/ogre/ergo_single/info.json index 401e3f4889c9..ca9223545d24 100644 --- a/keyboards/ogre/ergo_single/info.json +++ b/keyboards/ogre/ergo_single/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Ogre Ergo Single", "url": "", "maintainer": "qmk", - "width": 19.5, - "height": 6.5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/ogre/ergo_single/rules.mk b/keyboards/ogre/ergo_single/rules.mk index 16b3398cdcc9..d8903ae7a250 100644 --- a/keyboards/ogre/ergo_single/rules.mk +++ b/keyboards/ogre/ergo_single/rules.mk @@ -2,30 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = no diff --git a/keyboards/ogre/ergo_split/info.json b/keyboards/ogre/ergo_split/info.json index ea2efaa933d5..eaf5c4e389e3 100644 --- a/keyboards/ogre/ergo_split/info.json +++ b/keyboards/ogre/ergo_split/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Ogre Ergo Split", "url": "", "maintainer": "qmk", - "width": 19.5, - "height": 6.5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/ogre/ergo_split/rules.mk b/keyboards/ogre/ergo_split/rules.mk index be4d9b1ca384..f9f62a1c096f 100644 --- a/keyboards/ogre/ergo_split/rules.mk +++ b/keyboards/ogre/ergo_split/rules.mk @@ -2,30 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = yes diff --git a/keyboards/ogurec/config.h b/keyboards/ogurec/config.h new file mode 100644 index 000000000000..c5605ca645b0 --- /dev/null +++ b/keyboards/ogurec/config.h @@ -0,0 +1,56 @@ +/* Copyright 2021 drhigsby + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define MANUFACTURER DrHigsby +#define PRODUCT ogurec +#define VENDOR_ID 0x0007 +#define PRODUCT_ID 0x0002 +#define DEVICE_VER 0x0001 + +/* key matrix size */ +#define MATRIX_ROWS 3 +#define MATRIX_COLS 12 + +/* + * 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) + * + */ + +/* key matrix pins */ +#define MATRIX_ROW_PINS { F6, B6, B2 } +#define MATRIX_COL_PINS { D3, D2, D1, D0, D4, C6, D7, E6, B4, B5, F4, F5 } +#define UNUSED_PINS { F7, B1, B3 } + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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/ogurec/info.json b/keyboards/ogurec/info.json new file mode 100644 index 000000000000..bc4e637b3228 --- /dev/null +++ b/keyboards/ogurec/info.json @@ -0,0 +1,86 @@ +{ + "keyboard_name": "ogurec", + "url": "http://www.keyboard-layout-editor.com/#/gists/f1bda3a87822868599cf6e3c4340f594", + "maintainer": "drhigsby", + "layouts": { + "LAYOUT_ortho_3x12": { + "layout": [ + {"label":"Q", "x":0, "y":0}, + {"label":"W", "x":1, "y":0}, + {"label":"E", "x":2, "y":0}, + {"label":"R", "x":3, "y":0}, + {"label":"T", "x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"label":"Y", "x":7, "y":0}, + {"label":"U", "x":8, "y":0}, + {"label":"I", "x":9, "y":0}, + {"label":"O", "x":10, "y":0}, + {"label":"P", "x":11, "y":0}, + {"label":"A", "x":0, "y":1}, + {"label":"S", "x":1, "y":1}, + {"label":"D", "x":2, "y":1}, + {"label":"F", "x":3, "y":1}, + {"label":"G", "x":4, "y":1}, + {"x":5, "y":1}, + {"x":6, "y":1}, + {"label":"H", "x":7, "y":1}, + {"label":"J", "x":8, "y":1}, + {"label":"K", "x":9, "y":1}, + {"label":"L", "x":10, "y":1}, + {"label":"\"", "x":11, "y":1}, + {"label":"Z", "x":0, "y":2}, + {"label":"X", "x":1, "y":2}, + {"label":"C", "x":2, "y":2}, + {"label":"V", "x":3, "y":2}, + {"label":"B", "x":4, "y":2}, + {"x":5, "y":2}, + {"x":6, "y":2}, + {"label":"N", "x":7, "y":2}, + {"label":"M", "x":8, "y":2}, + {"label":"<", "x":9, "y":2}, + {"label":">", "x":10, "y":2}, + {"label":"?", "x":11, "y":2}] + }, + + "LAYOUT_ortho_3x12_1x2uC": { + "layout": [ + {"label":"Q", "x":0, "y":0}, + {"label":"W", "x":1, "y":0}, + {"label":"E", "x":2, "y":0}, + {"label":"R", "x":3, "y":0}, + {"label":"T", "x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"label":"Y", "x":7, "y":0}, + {"label":"U", "x":8, "y":0}, + {"label":"I", "x":9, "y":0}, + {"label":"O", "x":10, "y":0}, + {"label":"P", "x":11, "y":0}, + {"label":"A", "x":0, "y":1}, + {"label":"S", "x":1, "y":1}, + {"label":"D", "x":2, "y":1}, + {"label":"F", "x":3, "y":1}, + {"label":"G", "x":4, "y":1}, + {"x":5, "y":1}, + {"x":6, "y":1}, + {"label":"H", "x":7, "y":1}, + {"label":"J", "x":8, "y":1}, + {"label":"K", "x":9, "y":1}, + {"label":"L", "x":10, "y":1}, + {"label":"\"", "x":11, "y":1}, + {"label":"Z", "x":0, "y":2}, + {"label":"X", "x":1, "y":2}, + {"label":"C", "x":2, "y":2}, + {"label":"V", "x":3, "y":2}, + {"label":"B", "x":4, "y":2}, + {"x":5, "y":2, "w":2}, + {"label":"N", "x":7, "y":2}, + {"label":"M", "x":8, "y":2}, + {"label":"<", "x":9, "y":2}, + {"label":">", "x":10, "y":2}, + {"label":"?", "x":11, "y":2}] + }, + + } +} diff --git a/keyboards/ogurec/keymaps/dack/config.h b/keyboards/ogurec/keymaps/dack/config.h new file mode 100644 index 000000000000..af5d55bf6eb9 --- /dev/null +++ b/keyboards/ogurec/keymaps/dack/config.h @@ -0,0 +1,19 @@ +/* Copyright 2021 drhigsby + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once +#define IGNORE_MOD_TAP_INTERRUPT +#define TAPPING_TERM 230 +#define TAPPING_TERM_PER_KEY diff --git a/keyboards/ogurec/keymaps/dack/keymap.c b/keyboards/ogurec/keymaps/dack/keymap.c new file mode 100644 index 000000000000..420ff3d88d0a --- /dev/null +++ b/keyboards/ogurec/keymaps/dack/keymap.c @@ -0,0 +1,97 @@ +/* Copyright 2021 drhigsby + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum custom_layers { + _BASE, + _CLOSE, + _FAR, + _FUNKY, +}; +#define CLS_SPC LT(_CLOSE, KC_SPC) +#define FAR_F LT(_FAR, KC_F) +#define FNK_D LT(_FUNKY, KC_D) +#define SFT_Z LSFT_T(KC_Z) +#define SFT_ENT RSFT_T(KC_ENT) +#define CTL_X LCTL_T(KC_X) +#define CTL_DOT RCTL_T(KC_DOT) +#define WIN_C LWIN_T(KC_C) +#define WIN_COMM RWIN_T(KC_COMM) +#define ALT_V LALT_T(KC_V) +#define ALT_M LALT_T(KC_M) +#define COPY LCTL(KC_C) +#define PASTE LCTL(KC_V) +#define CUT LCTL(KC_X) +#define UNDO LCTL(KC_Z) +#define RUS_TGL RALT(KC_LSFT) +#define LOCK LWIN(KC_L) +#define vvv KC_TRNS + +enum custom_keycodes { + TYPEDON = SAFE_RANGE +}; + +bool process_record_user(uint16_t keycode, keyrecord_t* record) { + if (record->event.pressed) { + switch (keycode) { + case TYPEDON: + SEND_STRING("[typed on an ogurec]"); + return false; + } + } + return true; +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_ortho_3x12( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, FNK_D, FAR_F, KC_G, KC_GRAVE, KC_SCOLON, KC_H, KC_J, KC_K, KC_L, KC_QUOT, + SFT_Z, CTL_X, WIN_C, ALT_V, KC_B, KC_BSPC, CLS_SPC, KC_N, ALT_M, WIN_COMM, CTL_DOT, SFT_ENT + ), + + [_CLOSE] = LAYOUT_ortho_3x12( + KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, + KC_MINUS, KC_UNDS, KC_EQL, KC_PLUS, _______, _______, vvv, _______, KC_SCOLON, KC_COLON, KC_SLSH, KC_QUES + ), + + [_FAR] = LAYOUT_ortho_3x12( + KC_ESC, TYPEDON, KC_BSLS, RUS_TGL,_______, _______, _______, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_INS, + KC_CAPS, KC_TAB, KC_PIPE, vvv, LOCK, _______, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, + UNDO, CUT, COPY, PASTE, KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR, _______, _______, _______, _______ + ), + [_FUNKY] = LAYOUT_ortho_3x12( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + _______, _______, vvv, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______ + ) + +}; + +uint16_t get_tapping_term(uint16_t keycode, keyrecord_t* record) { + switch (keycode) { + case FAR_F: + return TAPPING_TERM - 50; + case CLS_SPC: + return TAPPING_TERM - 50; + case SFT_Z: + return TAPPING_TERM - 80; + case SFT_ENT: + return TAPPING_TERM - 75; + default: + return TAPPING_TERM; + } +} diff --git a/keyboards/ogurec/keymaps/dack/readme.md b/keyboards/ogurec/keymaps/dack/readme.md new file mode 100644 index 000000000000..adffe1797f21 --- /dev/null +++ b/keyboards/ogurec/keymaps/dack/readme.md @@ -0,0 +1,3 @@ +# Dack's Ogurec Keymap + +This is Dack's personal ogurec keymap and it is for left-sided PM placement diff --git a/keyboards/ogurec/keymaps/default/config.h b/keyboards/ogurec/keymaps/default/config.h new file mode 100644 index 000000000000..9ff2d89acc80 --- /dev/null +++ b/keyboards/ogurec/keymaps/default/config.h @@ -0,0 +1,19 @@ +/* Copyright 2021 drhigsby + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#define COMBO_COUNT 7 +#define COMBO_TERM 40 diff --git a/keyboards/ogurec/keymaps/default/keymap.c b/keyboards/ogurec/keymaps/default/keymap.c new file mode 100644 index 000000000000..691f5c95a196 --- /dev/null +++ b/keyboards/ogurec/keymaps/default/keymap.c @@ -0,0 +1,76 @@ +/* Copyright 2021 drhigsby + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layers{ + _BASE, + _NUM, + _FN +}; + +enum combo_events { + combo_ESC, + combo_BACK, + combo_TAB, + combo_DELETE, + combo_ENTER, + combo_LPRN, + combo_RPRN, +}; + +const uint16_t PROGMEM esc_combo[] = {KC_Q, KC_W, COMBO_END}; +const uint16_t PROGMEM bspc_combo[] = {KC_O, KC_P, COMBO_END}; +const uint16_t PROGMEM tab_combo[] = {KC_A, KC_S, COMBO_END}; +const uint16_t PROGMEM del_combo[] = {KC_I, KC_O, COMBO_END}; +const uint16_t PROGMEM enter_combo[] = {KC_L, KC_SCLN, COMBO_END}; +const uint16_t PROGMEM lprn_combo[] = {KC_X, KC_C, COMBO_END}; +const uint16_t PROGMEM rprn_combo[] = {KC_COMM, KC_DOT, COMBO_END}; + + +combo_t key_combos[COMBO_COUNT] = { + [combo_ESC] = COMBO(esc_combo, KC_ESC), + [combo_BACK] = COMBO(bspc_combo, KC_BSPC), + [combo_TAB] = COMBO(tab_combo, KC_TAB), + [combo_DELETE] = COMBO(del_combo, KC_DEL), + [combo_ENTER] = COMBO(enter_combo, KC_ENT), + [combo_LPRN] = COMBO(lprn_combo, KC_LPRN), + [combo_RPRN] = COMBO(rprn_combo, KC_RPRN), +}; + +#define NUM MO(_NUM) +#define FN MO(_FN) +#define xxx KC_TRNS + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_ortho_3x12( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_F, KC_G, FN, KC_QUOT, KC_H, KC_J, KC_K, KC_L, KC_SCLN, + LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, NUM, KC_SPC, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH) + ), + + [_NUM] = LAYOUT_ortho_3x12( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_HOME, KC_PGUP, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_END, KC_PGDN, KC_CIRC, KC_AMPR, KC_ASTR, KC_MINS, KC_EQL, + KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_LCBR, KC_LT, KC_GT, KC_RCBR, KC_PIPE, KC_BSLS, KC_DQUO, KC_QUOT + ), + + [_FN] = LAYOUT_ortho_3x12( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, + KC_VOLD, KC_VOLU, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, KC_MUTE, KC_MRWD, KC_MFFD, xxx, xxx, xxx + ) + +}; diff --git a/keyboards/ogurec/keymaps/default/readme.md b/keyboards/ogurec/keymaps/default/readme.md new file mode 100644 index 000000000000..3be288eeebc1 --- /dev/null +++ b/keyboards/ogurec/keymaps/default/readme.md @@ -0,0 +1 @@ +# default ogurec keymap diff --git a/keyboards/anavi/macropad2/keymaps/google-meet/rules.mk b/keyboards/ogurec/keymaps/default/rules.mk similarity index 100% rename from keyboards/anavi/macropad2/keymaps/google-meet/rules.mk rename to keyboards/ogurec/keymaps/default/rules.mk diff --git a/keyboards/ogurec/left_pm/left_pm.h b/keyboards/ogurec/left_pm/left_pm.h new file mode 100644 index 000000000000..ecf87a2a49f4 --- /dev/null +++ b/keyboards/ogurec/left_pm/left_pm.h @@ -0,0 +1,49 @@ +/* Copyright 2021 drhigsby + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "ogurec.h" + +/* This a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + +#define LAYOUT_ortho_3x12( \ + k011, k010, k009, k008, k007, k006, k005, k004, k003, k002, k001, k000, \ + k111, k110, k109, k108, k107, k106, k105, k104, k103, k102, k101, k100, \ + k211, k210, k209, k208, k207, k206, k205, k204, k203, k202, k201, k200 \ +) \ +{ \ + { 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 } \ +} + +#define LAYOUT_ortho_3x12_1x2uC( \ + k011, k010, k009, k008, k007, k006, k005, k004, k003, k002, k001, k000, \ + k111, k110, k109, k108, k107, k106, k105, k104, k103, k102, k101, k100, \ + k211, k210, k209, k208, k207, k205, k204, k203, k202, k201, k200 \ +) \ +{ \ + { 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, KC_NO, k207, k208, k209, k210, k211 } \ +} diff --git a/keyboards/ogurec/left_pm/readme.md b/keyboards/ogurec/left_pm/readme.md new file mode 100644 index 000000000000..c9d0cddb3b92 --- /dev/null +++ b/keyboards/ogurec/left_pm/readme.md @@ -0,0 +1,13 @@ +# ogurec keymap for left-sided PM placement + +Make example for this keyboard (after setting up your build environment): + + make ogurec/left_pm:default + +Flashing example for this keyboard: + + make ogurec/left_pm:default:flash + +To place the keyboard into bootloader mode, solder a reset switch onto the PCB and press it OR short the GND and RST pins on the pro micro. + +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/ogurec/left_pm/rules.mk b/keyboards/ogurec/left_pm/rules.mk new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/keyboards/ogurec/ogurec.c b/keyboards/ogurec/ogurec.c new file mode 100644 index 000000000000..6b2efa56b6ec --- /dev/null +++ b/keyboards/ogurec/ogurec.c @@ -0,0 +1,16 @@ +/* Copyright 2021 drhigsby + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "ogurec.h" diff --git a/keyboards/ogurec/ogurec.h b/keyboards/ogurec/ogurec.h new file mode 100644 index 000000000000..53956aa586e6 --- /dev/null +++ b/keyboards/ogurec/ogurec.h @@ -0,0 +1,24 @@ +/* Copyright 2021 drhigsby + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#if defined(KEYBOARD_ogurec_left_pm) +# include "left_pm.h" +#elif defined(KEYBOARD_ogurec_right_pm) +# include "right_pm.h" +#endif diff --git a/keyboards/ogurec/readme.md b/keyboards/ogurec/readme.md new file mode 100644 index 000000000000..3e0ae153faf0 --- /dev/null +++ b/keyboards/ogurec/readme.md @@ -0,0 +1,27 @@ +# ogurec + +![ogurec](https://i.imgur.com/OJ5UnXT.png) + +ogurec is a reversible 12u x 3u ortholinear keyboard that offers left-sided and right-sided PM placement. + +The default ogurec keymap is for left-sided PM placement. + +When flashing ogurec with the PM soldered onto the right side, follow the second example below and use: make ogure/right_pm:default + +* Keyboard Maintainer: [H. Bond](https://github.com/drhigsby) +* Hardware Supported: ogurec (https://github.com/drhigsby/ogurec) +* Hardware Availability: open source 3DP case available here https://github.com/drhigsby (case creator: https://github.com/dpalka15) + +Make example for this keyboard (after setting up your build environment): + + make ogurec:default + make ogurec/right_pm:default + +To place the keyboard into bootloader mode, solder a reset switch onto the PCB and press it OR short the GND and RST pins on the pro micro. + +Flashing example for this keyboard: + + make ogurec:default:flash + make ogurec/right_pm:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/ogurec/right_pm/readme.md b/keyboards/ogurec/right_pm/readme.md new file mode 100644 index 000000000000..54efcecfe115 --- /dev/null +++ b/keyboards/ogurec/right_pm/readme.md @@ -0,0 +1,13 @@ +# ogurec keymap for right-sided PM placement + +Make example for this keyboard (after setting up your build environment): + + make ogurec/right_pm:default + +Flashing example for this keyboard: + + make ogurec/right_pm:default:flash + +To place the keyboard into bootloader mode, solder a reset switch onto the PCB and press it OR short the GND and RST pins on the pro micro. + +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/ogurec/right_pm/right_pm.h b/keyboards/ogurec/right_pm/right_pm.h new file mode 100644 index 000000000000..e413a835bcba --- /dev/null +++ b/keyboards/ogurec/right_pm/right_pm.h @@ -0,0 +1,49 @@ +/* Copyright 2021 drhigsby + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "ogurec.h" + +/* This a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + +#define LAYOUT_ortho_3x12( \ + 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 \ +) \ +{ \ + { 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 } \ +} + +#define LAYOUT_ortho_3x12_1x2uC( \ + 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, k207, k208, k209, k210, k211 \ +) \ +{ \ + { 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, KC_NO, k207, k208, k209, k210, k211 } \ +} diff --git a/keyboards/ogurec/right_pm/rules.mk b/keyboards/ogurec/right_pm/rules.mk new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/keyboards/ogurec/rules.mk b/keyboards/ogurec/rules.mk new file mode 100644 index 000000000000..c8ce3bb4c45a --- /dev/null +++ b/keyboards/ogurec/rules.mk @@ -0,0 +1,20 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 +DEFAULT_FOLDER = ogurec/left_pm diff --git a/keyboards/ok60/config.h b/keyboards/ok60/config.h index aafed8a407eb..faccfcc646c3 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -71,5 +70,3 @@ along with this program. If not, see . #define RGBLIGHT_HUE_STEP 8 #define RGBLIGHT_SAT_STEP 8 #define RGBLIGHT_VAL_STEP 8 - -#endif diff --git a/keyboards/ok60/info.json b/keyboards/ok60/info.json index 9c561c6b8541..8207604dda01 100644 --- a/keyboards/ok60/info.json +++ b/keyboards/ok60/info.json @@ -2,21 +2,19 @@ "keyboard_name": "OK60", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_ansi": { - "key_count": 61, "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"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}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":2.75}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}] }, "LAYOUT_60_ansi_split_bksp_rshift": { - "key_count": 63, "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"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}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}] }, "LAYOUT_60_iso": { - "key_count": 62, "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2}, {"x":13.75, "y":1, "w":1.25, "h":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":2.75}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}] }, + "LAYOUT_60_iso_split_rshift": { + "layout": [{"label":"\u00ac", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"\"", "x":2, "y":0}, {"label":"\u00a3", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"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":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"@", "x":11.75, "y":2}, {"label":"~", "x":12.75, "y":2}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"label":"|", "x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Fn", "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":"AltGr", "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}] + }, "LAYOUT_60_hhkb": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"1", "x":1, "y":0}, {"label":"2", "x":2, "y":0}, {"label":"3", "x":3, "y":0}, {"label":"4", "x":4, "y":0}, {"label":"5", "x":5, "y":0}, {"label":"6", "x":6, "y":0}, {"label":"7", "x":7, "y":0}, {"label":"8", "x":8, "y":0}, {"label":"9", "x":9, "y":0}, {"label":"0", "x":10, "y":0}, {"label":"-", "x":11, "y":0}, {"label":"=", "x":12, "y":0}, {"label":"\\", "x":13, "y":0}, {"label":"`", "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":"Backspace", "x":13.5, "y":1, "w":1.5}, {"label":"Control", "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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":",", "x":9.25, "y":3}, {"label":".", "x":10.25, "y":3}, {"label":"/", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Fn", "x":14, "y":3}, {"label":"Os", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"Os", "x":12.5, "y":4}] } diff --git a/keyboards/ok60/ok60.h b/keyboards/ok60/ok60.h index d64f951c424f..4e6aeb2c354b 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/ok60/rules.mk b/keyboards/ok60/rules.mk index f2801c94598a..7c15782a1948 100644 --- a/keyboards/ok60/rules.mk +++ b/keyboards/ok60/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -KEYBOARD_LOCK_ENABLE = yes # Allow locking of keyboard via magic key NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable the RGB backlight -# MIDI_ENABLE = YES # MIDI controls -# UNICODE_ENABLE = YES # Unicode -# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID -LAYOUTS = 60_ansi 60_ansi_split_bksp_rshift 60_iso 60_hhkb +LAYOUTS = 60_ansi 60_iso 60_hhkb diff --git a/keyboards/omnikey_bh/config.h b/keyboards/omnikey_bh/config.h index 272424cf9eae..7d170077a9ce 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/omnikey_bh/info.json b/keyboards/omnikey_bh/info.json index 50d64e143cf6..93b6aeefd813 100644 --- a/keyboards/omnikey_bh/info.json +++ b/keyboards/omnikey_bh/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Omnikey BH PCB", "url": "", "maintainer": "qmk", - "width": 25.5, - "height": 6.5, "layouts": { "LAYOUT": { - "key_count": 123, "layout": [{"label":"K000", "x":0, "y":0}, {"label":"K001", "x":1, "y":0}, {"label":"K002", "x":2.5, "y":0}, {"label":"K003", "x":4.5, "y":0}, {"label":"K004", "x":5.5, "y":0}, {"label":"K005", "x":6.5, "y":0}, {"label":"K006", "x":7.5, "y":0}, {"label":"K007", "x":9, "y":0}, {"label":"K008", "x":10, "y":0}, {"label":"K009", "x":11, "y":0}, {"label":"K010", "x":12, "y":0}, {"label":"K011", "x":13.5, "y":0}, {"label":"K012", "x":14.5, "y":0}, {"label":"K013", "x":15.5, "y":0}, {"label":"K014", "x":16.5, "y":0}, {"label":"K015", "x":18, "y":0}, {"label":"K016", "x":19, "y":0}, {"label":"K017", "x":20, "y":0}, {"label":"K100", "x":0, "y":1.5}, {"label":"K101", "x":1, "y":1.5}, {"label":"K102", "x":2.5, "y":1.5}, {"label":"K103", "x":3.5, "y":1.5}, {"label":"K104", "x":4.5, "y":1.5}, {"label":"K105", "x":5.5, "y":1.5}, {"label":"K106", "x":6.5, "y":1.5}, {"label":"K107", "x":7.5, "y":1.5}, {"label":"K108", "x":8.5, "y":1.5}, {"label":"K109", "x":9.5, "y":1.5}, {"label":"K110", "x":10.5, "y":1.5}, {"label":"K111", "x":11.5, "y":1.5}, {"label":"K112", "x":12.5, "y":1.5}, {"label":"K113", "x":13.5, "y":1.5}, {"label":"K114", "x":14.5, "y":1.5}, {"label":"K115", "x":15.5, "y":1.5, "w":2}, {"label":"K116", "x":18, "y":1.5}, {"label":"K117", "x":19, "y":1.5}, {"label":"K118", "x":20, "y":1.5}, {"label":"K119", "x":21.5, "y":1.5}, {"label":"K120", "x":22.5, "y":1.5}, {"label":"K121", "x":23.5, "y":1.5}, {"label":"K122", "x":24.5, "y":1.5}, {"label":"K200", "x":0, "y":2.5}, {"label":"K201", "x":1, "y":2.5}, {"label":"K202", "x":2.5, "y":2.5, "w":1.5}, {"label":"K203", "x":4, "y":2.5}, {"label":"K204", "x":5, "y":2.5}, {"label":"K205", "x":6, "y":2.5}, {"label":"K206", "x":7, "y":2.5}, {"label":"K207", "x":8, "y":2.5}, {"label":"K208", "x":9, "y":2.5}, {"label":"K209", "x":10, "y":2.5}, {"label":"K210", "x":11, "y":2.5}, {"label":"K211", "x":12, "y":2.5}, {"label":"K212", "x":13, "y":2.5}, {"label":"K213", "x":14, "y":2.5}, {"label":"K214", "x":15, "y":2.5}, {"label":"K215", "x":16, "y":2.5, "w":1.5}, {"label":"K216", "x":18, "y":2.5}, {"label":"K217", "x":19, "y":2.5}, {"label":"K218", "x":20, "y":2.5}, {"label":"K219", "x":21.5, "y":2.5}, {"label":"K220", "x":22.5, "y":2.5}, {"label":"K221", "x":23.5, "y":2.5}, {"label":"K222", "x":24.5, "y":2.5}, {"label":"K300", "x":0, "y":3.5}, {"label":"K301", "x":1, "y":3.5}, {"label":"K302", "x":2.5, "y":3.5, "w":1.75}, {"label":"K303", "x":4.25, "y":3.5}, {"label":"K304", "x":5.25, "y":3.5}, {"label":"K305", "x":6.25, "y":3.5}, {"label":"K306", "x":7.25, "y":3.5}, {"label":"K307", "x":8.25, "y":3.5}, {"label":"K308", "x":9.25, "y":3.5}, {"label":"K309", "x":10.25, "y":3.5}, {"label":"K310", "x":11.25, "y":3.5}, {"label":"K311", "x":12.25, "y":3.5}, {"label":"K312", "x":13.25, "y":3.5}, {"label":"K313", "x":14.25, "y":3.5}, {"label":"K314", "x":15.25, "y":3.5, "w":2.25}, {"label":"K315", "x":18, "y":3.5}, {"label":"K316", "x":19, "y":3.5}, {"label":"K317", "x":20, "y":3.5}, {"label":"K318", "x":21.5, "y":3.5}, {"label":"K319", "x":22.5, "y":3.5}, {"label":"K320", "x":23.5, "y":3.5}, {"label":"K321", "x":24.5, "y":3.5}, {"label":"K400", "x":0, "y":4.5}, {"label":"K401", "x":1, "y":4.5}, {"label":"K402", "x":2.5, "y":4.5, "w":2.25}, {"label":"K403", "x":4.75, "y":4.5}, {"label":"K404", "x":5.75, "y":4.5}, {"label":"K405", "x":6.75, "y":4.5}, {"label":"K406", "x":7.75, "y":4.5}, {"label":"K407", "x":8.75, "y":4.5}, {"label":"K408", "x":9.75, "y":4.5}, {"label":"K409", "x":10.75, "y":4.5}, {"label":"K410", "x":11.75, "y":4.5}, {"label":"K411", "x":12.75, "y":4.5}, {"label":"K412", "x":13.75, "y":4.5}, {"label":"K413", "x":14.75, "y":4.5, "w":1.75}, {"label":"K414", "x":16.5, "y":4.5}, {"label":"K415", "x":18, "y":4.5}, {"label":"K416", "x":19, "y":4.5}, {"label":"K417", "x":20, "y":4.5}, {"label":"K418", "x":21.5, "y":4.5}, {"label":"K419", "x":22.5, "y":4.5}, {"label":"K420", "x":23.5, "y":4.5}, {"label":"K421", "x":24.5, "y":4.5, "h":2}, {"label":"K500", "x":0, "y":5.5}, {"label":"K501", "x":1, "y":5.5}, {"label":"K502", "x":2.5, "y":5.5, "w":1.5}, {"label":"K503", "x":4, "y":5.5}, {"label":"K504", "x":5, "y":5.5, "w":1.5}, {"label":"K507", "x":6.5, "y":5.5, "w":7}, {"label":"K512", "x":13.5, "y":5.5}, {"label":"K513", "x":14.5, "y":5.5}, {"label":"K514", "x":15.5, "y":5.5}, {"label":"K515", "x":16.5, "y":5.5}, {"label":"K516", "x":18, "y":5.5}, {"label":"K517", "x":19, "y":5.5}, {"label":"K518", "x":20, "y":5.5}, {"label":"K519", "x":21.5, "y":5.5, "w":2}, {"label":"K520", "x":23.5, "y":5.5}] } } diff --git a/keyboards/omnikey_bh/rules.mk b/keyboards/omnikey_bh/rules.mk index 1843f1ba6831..468094fd703b 100644 --- a/keyboards/omnikey_bh/rules.mk +++ b/keyboards/omnikey_bh/rules.mk @@ -2,24 +2,16 @@ MCU = at90usb1286 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = halfkay # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 -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 diff --git a/keyboards/omnikeyish/info.json b/keyboards/omnikeyish/info.json index 4a9e86d4cd61..62a342d13e86 100644 --- a/keyboards/omnikeyish/info.json +++ b/keyboards/omnikeyish/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Omnikey-(ish)", "url": "https://github.com/henrikosorensen/keyboard_pcbs/tree/master/omnikeyish_pcb", "maintainer": "qmk", - "width": 25.6667, - "height": 7, "layouts": { "LAYOUT_all": { "layout": [ {"label":"P11", "x":0, "y":0}, {"label":"P12", "x":1, "y":0}, {"label":"Esc", "x":2.6667, "y":0}, {"label":"F1", "x":4.6667, "y":0}, {"label":"F2", "x":5.6667, "y":0}, {"label":"F3", "x":6.6667, "y":0}, {"label":"F4", "x":7.6667, "y":0}, {"label":"F5", "x":9.1667, "y":0}, {"label":"F6", "x":10.1667, "y":0}, {"label":"F7", "x":11.1667, "y":0}, {"label":"F8", "x":12.1667, "y":0}, {"label":"F9", "x":13.6667, "y":0}, {"label":"F10", "x":14.6667, "y":0}, {"label":"F11", "x":15.6667, "y":0}, {"label":"F12", "x":16.6667, "y":0}, {"label":"PrtSc", "x":18.1667, "y":0}, {"label":"Scroll Lock", "x":19.1667, "y":0}, {"label":"Pause", "x":20.1667, "y":0}, {"x":21.6667, "y":0}, {"x":22.6667, "y":0}, {"x":23.6667, "y":0}, {"x":24.6667, "y":0}, @@ -81,4 +79,4 @@ } } -} \ No newline at end of file +} diff --git a/keyboards/omnikeyish/rules.mk b/keyboards/omnikeyish/rules.mk index 6318daef7a7a..928622c50562 100644 --- a/keyboards/omnikeyish/rules.mk +++ b/keyboards/omnikeyish/rules.mk @@ -2,24 +2,16 @@ MCU = at90usb1286 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = halfkay # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control 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 - 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 diff --git a/keyboards/onekeyco/dango40/config.h b/keyboards/onekeyco/dango40/config.h new file mode 100644 index 000000000000..fceb8fb252fc --- /dev/null +++ b/keyboards/onekeyco/dango40/config.h @@ -0,0 +1,50 @@ +/* +Copyright 2021 Swiftrax + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x04D8 +#define PRODUCT_ID 0xE9B9 +#define DEVICE_VER 0x0001 +#define MANUFACTURER One Key Company +#define PRODUCT Dango40 +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 13 + +// ROWS: Top to bottom, COLS: Left to right + +#define MATRIX_ROW_PINS { F4, F1, F0, C6 } +#define MATRIX_COL_PINS { F7, F6, F5, D3, D5, D4, D6, D7, B4, B5, B6, C7, B0 } + +#define ENCODERS_PAD_A { D2 } +#define ENCODERS_PAD_B { D1 } + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/*EEPROM for via*/ +#define DYNAMIC_KEYMAP_LAYER_COUNT 5 \ No newline at end of file diff --git a/keyboards/onekeyco/dango40/dango40.c b/keyboards/onekeyco/dango40/dango40.c new file mode 100644 index 000000000000..8ca77545bf47 --- /dev/null +++ b/keyboards/onekeyco/dango40/dango40.c @@ -0,0 +1,27 @@ +/* +Copyright 2021 Swiftrax + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "dango40.h" + +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + if (clockwise) { + tap_code_delay(KC_VOLU, 10); + } else { + tap_code_delay(KC_VOLD, 10); + } + return true; +} diff --git a/keyboards/onekeyco/dango40/dango40.h b/keyboards/onekeyco/dango40/dango40.h new file mode 100644 index 000000000000..9caa624528f6 --- /dev/null +++ b/keyboards/onekeyco/dango40/dango40.h @@ -0,0 +1,33 @@ +/* +Copyright 2021 Swiftrax + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#define ___ KC_NO + +#include "quantum.h" + +#define LAYOUT_all( \ + 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, K34, K36, K37, 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, K1C, }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, }, \ + { K30, K31, K32, ___, K34, ___, K36, K37, ___, K39, K3A, K3B, ___, } \ +} diff --git a/keyboards/onekeyco/dango40/info.json b/keyboards/onekeyco/dango40/info.json new file mode 100644 index 000000000000..188cc7473dbf --- /dev/null +++ b/keyboards/onekeyco/dango40/info.json @@ -0,0 +1,263 @@ +{ + "keyboard_name":"Dango40", + "url":"https://github.com/swiftrax", + "maintainer":"Swiftrax", + "layouts":{ + "LAYOUT":{ + "layout_all":[ + { + "label":"0,0", + "x":0, + "y":0 + }, + { + "label":"0,1", + "x":1, + "y":0 + }, + { + "label":"0,2", + "x":2, + "y":0 + }, + { + "label":"0,3", + "x":3, + "y":0 + }, + { + "label":"0,4", + "x":4, + "y":0 + }, + { + "label":"0,5", + "x":5, + "y":0 + }, + { + "label":"0,6", + "x":6, + "y":0 + }, + { + "label":"0,7", + "x":7, + "y":0 + }, + { + "label":"0,8", + "x":8, + "y":0 + }, + { + "label":"0,9", + "x":9, + "y":0 + }, + { + "label":"0,10", + "x":10, + "y":0 + }, + { + "label":"0,11", + "x":11, + "y":0, + "w":1.75 + }, + { + "label":"0,12", + "x":12.75, + "y":0 + }, + { + "label":"1,0", + "x":0, + "y":1, + "w":1.25 + }, + { + "label":"1,1", + "x":1.25, + "y":1 + }, + { + "label":"1,2", + "x":2.25, + "y":1 + }, + { + "label":"1,3", + "x":3.25, + "y":1 + }, + { + "label":"1,4", + "x":4.25, + "y":1 + }, + { + "label":"1,5", + "x":5.25, + "y":1 + }, + { + "label":"1,6", + "x":6.25, + "y":1 + }, + { + "label":"1,7", + "x":7.25, + "y":1 + }, + { + "label":"1,8", + "x":8.25, + "y":1 + }, + { + "label":"1,9", + "x":9.25, + "y":1 + }, + { + "label":"1,10", + "x":10.25, + "y":1 + }, + { + "label":"1,11", + "x":11.25, + "y":1, + "w":1.5 + }, + { + "label":"1,12", + "x":12.75, + "y":1 + }, + { + "label":"2,0", + "x":0, + "y":2, + "w":1.75 + }, + { + "label":"2,1", + "x":1.75, + "y":2 + }, + { + "label":"2,2", + "x":2.75, + "y":2 + }, + { + "label":"2,3", + "x":3.75, + "y":2 + }, + { + "label":"2,4", + "x":4.75, + "y":2 + }, + { + "label":"2,5", + "x":5.75, + "y":2 + }, + { + "label":"2,6", + "x":6.75, + "y":2 + }, + { + "label":"2,7", + "x":7.75, + "y":2 + }, + { + "label":"2,8", + "x":8.75, + "y":2 + }, + { + "label":"2,9", + "x":9.75, + "y":2 + }, + { + "label":"2,10", + "x":10.75, + "y":2 + }, + { + "label":"2,11", + "x":11.75, + "y":2 + }, + { + "label":"2,12", + "x":12.75, + "y":2 + }, + { + "label":"3,0", + "x":0, + "y":3, + "w":1.25 + }, + { + "label":"3,1", + "x":1.25, + "y":3, + "w":1.5 + }, + { + "label":"3,2", + "x":2.75, + "y":3, + "w":1.25 + }, + { + "label":"3,4", + "x":4, + "y":3, + "w":2.25 + }, + { + "label":"3,6", + "x":6.25, + "y":3, + "w":2.75 + }, + { + "label":"3,7", + "x":9, + "y":3, + "w":1.25 + }, + { + "label":"3,9", + "x":10.25, + "y":3, + "w":1.25 + }, + { + "label":"3,10", + "x":11.5, + "y":3, + "w":1.25 + }, + { + "label":"3,11", + "x":12.75, + "y":3 + } + ] + } + } +} \ No newline at end of file diff --git a/keyboards/onekeyco/dango40/keymaps/default/keymap.c b/keyboards/onekeyco/dango40/keymaps/default/keymap.c new file mode 100644 index 000000000000..4bed789d0c06 --- /dev/null +++ b/keyboards/onekeyco/dango40/keymaps/default/keymap.c @@ -0,0 +1,38 @@ +/* +Copyright 2021 Swiftrax + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_GESC, KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_BSPC, KC_MUTE, + KC_TAB , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_ENT , KC_PGUP, + KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_SPC , KC_RALT, KC_RCTL, MO(1) , KC_RGHT + ), + [1] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ +), + [2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/onekeyco/dango40/keymaps/via/keymap.c b/keyboards/onekeyco/dango40/keymaps/via/keymap.c new file mode 100644 index 000000000000..5c13bcee869a --- /dev/null +++ b/keyboards/onekeyco/dango40/keymaps/via/keymap.c @@ -0,0 +1,50 @@ +/* +Copyright 2021 Swiftrax + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_GESC, KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_BSPC, KC_MUTE, + KC_TAB , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_ENT , KC_PGUP, + KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_SPC , KC_RALT, KC_RCTL, MO(1) , KC_RGHT + ), + [1] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [4] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/onekeyco/dango40/keymaps/via/rules.mk b/keyboards/onekeyco/dango40/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/onekeyco/dango40/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/onekeyco/dango40/readme.md b/keyboards/onekeyco/dango40/readme.md new file mode 100644 index 000000000000..4b12f5595708 --- /dev/null +++ b/keyboards/onekeyco/dango40/readme.md @@ -0,0 +1,18 @@ +# Dango40 + +40% keyboard + +* Keyboard Maintainer: Swiftrax +* Hardware Supported: Dango40 +* Hardware Availability: Dango40 PCB + +## Bootloader Enter the bootloader in 3 ways: + * **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard + * **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead + * **Keycode in layout**: Press the key mapped to `RESET` if it is available + +Make example for flashing this keyboard (after setting up your build environment): + + make onekeyco/dango40:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/onekeyco/dango40/rules.mk b/keyboards/onekeyco/dango40/rules.mk new file mode 100644 index 000000000000..7266cf1e5598 --- /dev/null +++ b/keyboards/onekeyco/dango40/rules.mk @@ -0,0 +1,20 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes # Enable encoder \ No newline at end of file diff --git a/keyboards/opendeck/32/info.json b/keyboards/opendeck/32/info.json index 755b4ae23c06..ad354e750676 100644 --- a/keyboards/opendeck/32/info.json +++ b/keyboards/opendeck/32/info.json @@ -1,7 +1,5 @@ { "keyboard_name": "OpenDeck 32", - "width": 8, - "height": 4, "layouts": { "LAYOUT_ortho_4x8": { "layout": [ diff --git a/keyboards/opendeck/32/rev1/config.h b/keyboards/opendeck/32/rev1/config.h index 9f8ed7427832..73967671d0e8 100644 --- a/keyboards/opendeck/32/rev1/config.h +++ b/keyboards/opendeck/32/rev1/config.h @@ -36,11 +36,58 @@ // 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 RGB_DISABLE_WHEN_USB_SUSPENDED true +#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 +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Set 0 if debouncing isn't needed #define DEBOUNCE 5 diff --git a/keyboards/opendeck/32/rev1/rev1.c b/keyboards/opendeck/32/rev1/rev1.c index 297af907e256..332dc3cc4007 100644 --- a/keyboards/opendeck/32/rev1/rev1.c +++ b/keyboards/opendeck/32/rev1/rev1.c @@ -17,7 +17,7 @@ #include "rev1.h" #ifdef RGB_MATRIX_ENABLE -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { /* Refer to IS31 manual for these locations * driver * | R location diff --git a/keyboards/opendeck/32/rev1/rules.mk b/keyboards/opendeck/32/rev1/rules.mk index 9abea17f2194..3aa4ab1cb0e4 100644 --- a/keyboards/opendeck/32/rev1/rules.mk +++ b/keyboards/opendeck/32/rev1/rules.mk @@ -10,18 +10,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output RGB_MATRIX_ENABLE = yes RGB_MATRIX_DRIVER = IS31FL3731 diff --git a/keyboards/opus/rules.mk b/keyboards/opus/rules.mk index ad6298c9fed6..a38da0ad3906 100644 --- a/keyboards/opus/rules.mk +++ b/keyboards/opus/rules.mk @@ -8,16 +8,13 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/orange75/info.json b/keyboards/orange75/info.json index e6a70c102185..3cfd040d0fbb 100644 --- a/keyboards/orange75/info.json +++ b/keyboards/orange75/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Orange75", "url": "", "maintainer": "qmk", - "width": 16, - "height": 6.25, "layouts": { "LAYOUT": { - "key_count": 82, "layout": [ {"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, diff --git a/keyboards/orange75/keymaps/default/keymap.c b/keyboards/orange75/keymaps/default/keymap.c index 37e198f99c2d..11027ca6ee76 100644 --- a/keyboards/orange75/keymaps/default/keymap.c +++ b/keyboards/orange75/keymaps/default/keymap.c @@ -52,34 +52,29 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; - -void matrix_init_user(void) { -} - -void matrix_scan_user(void) { -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - void led_set_user(uint8_t usb_led) { if (usb_led & (1 << USB_LED_NUM_LOCK)) { - DDRB |= (1 << 0); PORTB &= ~(1 << 0); + setPinOutput(B0); + writePinLow(B0); } else { - DDRB &= ~(1 << 0); PORTB &= ~(1 << 0); + setPinInput(B0); + writePinLow(B0); } if (usb_led & (1 << USB_LED_CAPS_LOCK)) { - DDRB |= (1 << 1); PORTB &= ~(1 << 1); + setPinOutput(B1); + writePinLow(B1); } else { - DDRB &= ~(1 << 1); PORTB &= ~(1 << 1); + setPinInput(B1); + writePinLow(B1); } if (usb_led & (1 << USB_LED_SCROLL_LOCK)) { - DDRB |= (1 << 2); PORTB &= ~(1 << 2); + setPinOutput(B2); + writePinLow(B2); } else { - DDRB &= ~(1 << 2); PORTB &= ~(1 << 2); + setPinInput(B2); + writePinLow(B2); } -} \ No newline at end of file +} diff --git a/keyboards/orange75/rules.mk b/keyboards/orange75/rules.mk index 08a8fc02ec51..dc3c48d6d651 100644 --- a/keyboards/orange75/rules.mk +++ b/keyboards/orange75/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 -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 = yes # Enable keyboard backlight functionality AUDIO_ENABLE = no diff --git a/keyboards/org60/config.h b/keyboards/org60/config.h index 8189bc09604d..42dbb8316932 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -72,5 +71,3 @@ along with this program. If not, see . #define LOCKING_RESYNC_ENABLE #define TAPPING_TERM 200 - -#endif diff --git a/keyboards/org60/info.json b/keyboards/org60/info.json index 9dc057398675..2327468632dd 100644 --- a/keyboards/org60/info.json +++ b/keyboards/org60/info.json @@ -2,15 +2,11 @@ "keyboard_name": "Org60", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { - "key_count": 67, "layout": [{"label":"K00", "x":0, "y":0}, {"label":"K01", "x":1, "y":0}, {"label":"K02", "x":2, "y":0}, {"label":"K03", "x":3, "y":0}, {"label":"K04", "x":4, "y":0}, {"label":"K05", "x":5, "y":0}, {"label":"K06", "x":6, "y":0}, {"label":"K07", "x":7, "y":0}, {"label":"K08", "x":8, "y":0}, {"label":"K09", "x":9, "y":0}, {"label":"K0A", "x":10, "y":0}, {"label":"K0B", "x":11, "y":0}, {"label":"K0C", "x":12, "y":0}, {"label":"K0D", "x":13, "y":0}, {"label":"K49", "x":14, "y":0}, {"label":"K10", "x":0, "y":1, "w":1.5}, {"label":"K11", "x":1.5, "y":1}, {"label":"K12", "x":2.5, "y":1}, {"label":"K13", "x":3.5, "y":1}, {"label":"K14", "x":4.5, "y":1}, {"label":"K15", "x":5.5, "y":1}, {"label":"K16", "x":6.5, "y":1}, {"label":"K17", "x":7.5, "y":1}, {"label":"K18", "x":8.5, "y":1}, {"label":"K19", "x":9.5, "y":1}, {"label":"K1A", "x":10.5, "y":1}, {"label":"K1B", "x":11.5, "y":1}, {"label":"K1C", "x":12.5, "y":1}, {"label":"K1D", "x":13.5, "y":1, "w":1.5}, {"label":"K20", "x":0, "y":2, "w":1.75}, {"label":"K21", "x":1.75, "y":2}, {"label":"K22", "x":2.75, "y":2}, {"label":"K23", "x":3.75, "y":2}, {"label":"K24", "x":4.75, "y":2}, {"label":"K25", "x":5.75, "y":2}, {"label":"K26", "x":6.75, "y":2}, {"label":"K27", "x":7.75, "y":2}, {"label":"K28", "x":8.75, "y":2}, {"label":"K29", "x":9.75, "y":2}, {"label":"K2A", "x":10.75, "y":2}, {"label":"K2B", "x":11.75, "y":2}, {"label":"K2C", "x":12.75, "y":2}, {"label":"K2D", "x":13.75, "y":2, "w":1.25}, {"label":"K30", "x":0, "y":3}, {"label":"K31", "x":1, "y":3}, {"label":"K32", "x":2, "y":3}, {"label":"K33", "x":3, "y":3}, {"label":"K34", "x":4, "y":3}, {"label":"K35", "x":5, "y":3}, {"label":"K36", "x":6, "y":3}, {"label":"K37", "x":7, "y":3}, {"label":"K38", "x":8, "y":3}, {"label":"K39", "x":9, "y":3}, {"label":"K3A", "x":10, "y":3}, {"label":"K3B", "x":11, "y":3}, {"label":"K47", "x":12, "y":3}, {"label":"K3D", "x":13, "y":3}, {"label":"K3C", "x":14, "y":3}, {"label":"K40", "x":0, "y":4, "w":1.25}, {"label":"K41", "x":1.25, "y":4, "w":1.25}, {"label":"K42", "x":2.5, "y":4, "w":1.25}, {"label":"K45", "x":3.75, "y":4, "w":6.25}, {"label":"K4A", "x":10, "y":4}, {"label":"K4B", "x":11, "y":4}, {"label":"K48", "x":12, "y":4}, {"label":"K4C", "x":13, "y":4}, {"label":"K4D", "x":14, "y":4}] }, "LAYOUT_60_ansi": { - "key_count": 61, "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}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"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/org60/keymaps/default/keymap.c b/keyboards/org60/keymaps/default/keymap.c index 1c209a72d26b..204c7634b1f1 100644 --- a/keyboards/org60/keymaps/default/keymap.c +++ b/keyboards/org60/keymaps/default/keymap.c @@ -19,8 +19,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, MO(1), KC_HOME, KC_PGDOWN,KC_END), }; - -// Loop -void matrix_scan_user(void) { - // Empty -}; diff --git a/keyboards/org60/org60.h b/keyboards/org60/org60.h index 8ee94179cb00..34a41571f813 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/org60/rules.mk b/keyboards/org60/rules.mk index f115d70bac6d..3da20a635d2e 100644 --- a/keyboards/org60/rules.mk +++ b/keyboards/org60/rules.mk @@ -2,28 +2,17 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite COMMAND_ENABLE = no # Commands for debug and configuration CONSOLE_ENABLE = no # Console for debug EXTRAKEY_ENABLE = yes # Audio control and System control -MIDI_ENABLE = no # MIDI controls MOUSEKEY_ENABLE = yes # Mouse keys NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -UNICODE_ENABLE = no # Unicode LAYOUTS = 60_ansi diff --git a/keyboards/ortho5by12/info.json b/keyboards/ortho5by12/info.json index 8f60708f635e..56a4a093720c 100644 --- a/keyboards/ortho5by12/info.json +++ b/keyboards/ortho5by12/info.json @@ -2,11 +2,8 @@ "keyboard_name": "ortho5by12", "url": "https://github.com/itsnoteasy/misc/blob/master/ortho5by12.zip", "maintainer": "itsnoteasy", - "width": 12, - "height": 5, "layouts": { "LAYOUT_ortho_5x12_1x2uC": { - "key_count": 59, "layout": [ { "w": 1, "x": 0, "y": 0 }, { "w": 1, "x": 1, "y": 0 }, @@ -69,7 +66,6 @@ { "w": 1, "x": 11, "y": 4 } ] }, "LAYOUT_ortho_5x12": { - "key_count": 60, "layout": [ { "w": 1, "x": 0, "y": 0 }, { "w": 1, "x": 1, "y": 0 }, diff --git a/keyboards/ortho5by12/rules.mk b/keyboards/ortho5by12/rules.mk index 21f96ab346b1..51ff900ac72f 100644 --- a/keyboards/ortho5by12/rules.mk +++ b/keyboards/ortho5by12/rules.mk @@ -2,31 +2,19 @@ MCU = atmega328p # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# atmega32a bootloadHID -# ATmega328P USBasp -BOOTLOADER = USBasp +BOOTLOADER = usbasploader # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS_HAS_RGB = no diff --git a/keyboards/orthocode/config.h b/keyboards/orthocode/config.h new file mode 100644 index 000000000000..823a48e368cb --- /dev/null +++ b/keyboards/orthocode/config.h @@ -0,0 +1,93 @@ +/*Copyright 2020 Jrodna + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x0000 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Jrodna +#define PRODUCT OrthoCode + + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * 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 MATRIX_COL_PINS {C4, C3, C2, C1, C0, D7, D6, A7, A4, A5, A6, A3, A2, A1, A0} +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +#define USB_MAX_POWER_CONSUMPTION 100 + +#define ENCODERS_PAD_A { D1 } +#define ENCODERS_PAD_B { D0 } +#define ENCODER_RESOLUTION 1 +#define TAP_CODE_DELAY 10 + +#define RGB_DI_PIN D5 +#ifdef RGB_DI_PIN + #define RGBLED_NUM 10 /*Change for the number of leds on the strip you attach*/ + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ + #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +// #define RGBLIGHT_ANIMATIONS +// /*== or choose animations ==*/ + #define RGBLIGHT_EFFECT_BREATHING + #define RGBLIGHT_EFFECT_RAINBOW_MOOD + #define RGBLIGHT_EFFECT_RAINBOW_SWIRL +// #define RGBLIGHT_EFFECT_SNAKE +// #define RGBLIGHT_EFFECT_KNIGHT +// #define RGBLIGHT_EFFECT_CHRISTMAS +// #define RGBLIGHT_EFFECT_STATIC_GRADIENT +// #define RGBLIGHT_EFFECT_RGB_TEST +// #define RGBLIGHT_EFFECT_ALTERNATING +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +// #define DEBOUNCE 5 +#define DEBOUNCE 0 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* 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 + +/* Bootmagic Lite key configuration */ +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/orthocode/info.json b/keyboards/orthocode/info.json new file mode 100644 index 000000000000..058ec8557977 --- /dev/null +++ b/keyboards/orthocode/info.json @@ -0,0 +1,87 @@ +{ + "keyboard_name": "OrthoCode", + "url": "https://github.com/Jrodna/OrthoCode", + "maintainer": "Jrodna", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"Rotary", "x":0.5, "y":0}, + + {"label":"Game", "x":0.5, "y":1}, + {"label":"Esc", "x":1.75, "y":1}, + {"label":"1", "x":3, "y":1}, + {"label":"2", "x":4, "y":1}, + {"label":"3", "x":5, "y":1}, + {"label":"4", "x":6, "y":1}, + {"label":"5", "x":7, "y":1}, + {"label":"6", "x":10.5, "y":1}, + {"label":"7", "x":11.5, "y":1}, + {"label":"8", "x":12.5, "y":1}, + {"label":"9", "x":13.5, "y":1}, + {"label":"0", "x":14.5, "y":1}, + {"label":"_", "x":15.5, "y":1}, + {"label":"+", "x":16.5, "y":1}, + {"label":"Home", "x":17.5, "y":1}, + + {"label":"M1", "x":0.25, "y":2}, + {"label":"Tab", "x":1.5, "y":2, "w":1.5}, + {"label":"Q", "x":3, "y":2}, + {"label":"W", "x":4, "y":2}, + {"label":"E", "x":5, "y":2}, + {"label":"R", "x":6, "y":2}, + {"label":"T", "x":7, "y":2}, + {"label":"Y", "x":10.5, "y":2}, + {"label":"U", "x":11.5, "y":2}, + {"label":"I", "x":12.5, "y":2}, + {"label":"O", "x":13.5, "y":2}, + {"label":"P", "x":14.5, "y":2}, + {"label":"|", "x":15.5, "y":2, "w":1.5}, + {"label":"Delete", "x":17, "y":2}, + {"label":"End", "x":18, "y":2}, + + {"label":"M2", "x":0, "y":3}, + {"label":"Ctrl", "x":1.25, "y":3, "w":1.75}, + {"label":"A", "x":3, "y":3}, + {"label":"S", "x":4, "y":3}, + {"label":"D", "x":5, "y":3}, + {"label":"F", "x":6, "y":3}, + {"label":"G", "x":7, "y":3}, + {"label":"H", "x":10.5, "y":3}, + {"label":"J", "x":11.5, "y":3}, + {"label":"K", "x":12.5, "y":3}, + {"label":"L", "x":13.5, "y":3}, + {"label":":", "x":14.5, "y":3}, + {"label":"\"", "x":15.5, "y":3}, + {"label":"Enter", "x":16.5, "y":3, "w":2.25}, + + {"label":"Layer", "x":0.75, "y":4, "w":2.25}, + {"label":"Z", "x":3, "y":4}, + {"label":"X", "x":4, "y":4}, + {"label":"C", "x":5, "y":4}, + {"label":"V", "x":6, "y":4}, + {"label":"B", "x":7, "y":4}, + {"label":"N", "x":10.5, "y":4}, + {"label":"M", "x":11.5, "y":4}, + {"label":"<", "x":12.5, "y":4}, + {"label":">", "x":13.5, "y":4}, + {"label":"?", "x":14.5, "y":4}, + {"label":"\u2191", "x":17, "y":4}, + + {"label":"Ctrl", "x":1.25, "y":5, "w":1.25}, + {"label":"Win", "x":2.5, "y":5, "w":1.25}, + {"label":"Alt", "x":3.75, "y":5, "w":1.25}, + {"label":"Fn", "x":5.5, "y":5, "w":1.25}, + {"label":"th1", "x":6.75, "y":5, "h":2.75}, + {"label":"th2", "x":7.75, "y":5.25, "h":2.25}, + {"label":"th3", "x":9.75, "y":5.25, "h":2.25}, + {"label":"th4", "x":10.75, "y":5, "h":2.75}, + {"label":"Fn", "x":11.75, "y":5, "w":1.25}, + {"label":"Alt", "x":13, "y":5, "w":1.25}, + {"label":"Ctrl", "x":14.25, "y":5, "w":1.25}, + {"label":"\u2190", "x":16, "y":5}, + {"label":"\u2193", "x":17, "y":5}, + {"label":"\u2192", "x":18, "y":5} + ] + } + } +} diff --git a/keyboards/orthocode/keymaps/default/keymap.c b/keyboards/orthocode/keymaps/default/keymap.c new file mode 100644 index 000000000000..ea69d013354a --- /dev/null +++ b/keyboards/orthocode/keymaps/default/keymap.c @@ -0,0 +1,175 @@ +/* Copyright 2020 Jrodna + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum custom_keycodes { + QWERTY = SAFE_RANGE, + SHIFTSPACE, + ILIKEFROG +}; + +#define KC_SHSP SHIFTSPACE +#define KC_FROG ILIKEFROG + + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + /* Rotary */ + KC__MUTE, + /* esc 1 2 3 4 5 6 7 8 9 0 - = home */ + TG(2), 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_HOME, + /* tab Q W E R T Y U I O P \ delete end */ + RGB_TOG, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, KC_DEL, KC_END, + /* caps A S D F G H J K L ; ' enter */ + RGB_MOD, 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, + /* shift Z X C V B N M , . / up */ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, + /* ctrl win alt fn th1 th2 th3 th4 fn alt ctrl left down right */ + KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_RSFT, KC_ENT, KC_BSPC, KC_SHSP, MO(1), KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT( + /* Rotary */ + KC_TRNS, + /* esc 1 2 3 4 5 6 7 8 9 0 - = home */ + TG(3), 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, + /* tab Q W E R T Y U I O P \ delete end */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, LSFT(KC_LBRC), LSFT(KC_RBRC), KC_TRNS, KC_TRNS, KC_PAUS, KC_TRNS, + /* caps A S D F G H J K L ; ' enter */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_TRNS, KC_TRNS, KC_TRNS, + /* shift Z X C V B N M , . / up */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_EQL, LSFT(KC_EQL), LSFT(KC_9), LSFT(KC_0), KC_TRNS, KC_VOLU, + /* ctrl win alt fn th1 th2 th3 th4 fn alt ctrl left down right */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_TRNS + ), + [2] = LAYOUT( + /* Rotary */ + KC_TRNS, + /* esc 1 2 3 4 5 6 7 8 9 0 - = home */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + /* tab Q W E R T Y U I O P \ delete end */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PAUS, KC_TRNS, + /* caps A S D F G H J K L ; ' enter */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RBRC, KC_TRNS, KC_TRNS, KC_TRNS, + /* shift Z X C V B N M , . / up */ + KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + /* ctrl win alt fn th1 th2 th3 th4 fn alt ctrl left down right */ + KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + + ), + [3] = LAYOUT( + /* Rotary */ + KC_FROG, + /* esc 1 2 3 4 5 6 7 8 9 0 - = home */ + TG(3), KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, + /* tab Q W E R T Y U I O P \ delete end */ + KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, + /* caps A S D F G H J K L ; ' enter */ + KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, + /* shift Z X C V B N M , . / up */ + KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, + /* ctrl win alt fn th1 th2 th3 th4 fn alt ctrl left down right */ + KC_FROG, KC_FROG, KC_FROG, MO(1), KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG + ) +}; + + + + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + static bool shiftspace_mods = false; + static int frogchar = 0; + switch (keycode) { + case SHIFTSPACE: + if (record->event.pressed) { + if(get_mods() & MOD_BIT(KC_RSFT)) { + register_code(KC_MINS); + shiftspace_mods = true; + } + else { + register_code(KC_SPC); + } + } else { + if (shiftspace_mods) { + unregister_code(KC_MINS); + shiftspace_mods = false; + } else { + unregister_code(KC_SPC); + } + } + return false; + break; + case ILIKEFROG: + if (record->event.pressed) { + switch (frogchar) + { + case 0: + SEND_STRING("I"); + break; + case 1: + SEND_STRING(" "); + break; + case 2: + SEND_STRING("L"); + break; + case 3: + SEND_STRING("i"); + break; + case 4: + SEND_STRING("k"); + break; + case 5: + SEND_STRING("e"); + break; + case 6: + SEND_STRING(" "); + break; + case 7: + SEND_STRING("F"); + break; + case 8: + SEND_STRING("r"); + break; + case 9: + SEND_STRING("o"); + break; + case 10: + SEND_STRING("g"); + break; + case 11: + SEND_STRING(" "); + break; + } + frogchar = (frogchar + 1) % 12; + } + break; + } + return true; + +} + + +#ifdef ENCODER_ENABLE +bool encoder_update_user(uint8_t index, bool clockwise) { + // Volume control + if (clockwise) { + tap_code(KC_VOLD); + } else { + tap_code(KC_VOLU); + } + return true; +} +#endif diff --git a/keyboards/orthocode/orthocode.c b/keyboards/orthocode/orthocode.c new file mode 100644 index 000000000000..8de13e2abe2a --- /dev/null +++ b/keyboards/orthocode/orthocode.c @@ -0,0 +1,16 @@ +/* Copyright 2020 Jrodna + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "orthocode.h" \ No newline at end of file diff --git a/keyboards/orthocode/orthocode.h b/keyboards/orthocode/orthocode.h new file mode 100644 index 000000000000..3abcd48c0619 --- /dev/null +++ b/keyboards/orthocode/orthocode.h @@ -0,0 +1,36 @@ +/* Copyright 2020 Jrodna + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define _x_ KC_NO + +#include "quantum.h" + +#define LAYOUT( \ + K30, \ + 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, \ + K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \ + 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, _x_ }, \ +{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, _x_, K3D, _x_ }, \ +{ _x_, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E} \ +} diff --git a/keyboards/orthocode/readme.md b/keyboards/orthocode/readme.md new file mode 100644 index 000000000000..4a2dfc01bf80 --- /dev/null +++ b/keyboards/orthocode/readme.md @@ -0,0 +1,17 @@ +# ORTHOCODE + +An ortholinear keyboard with thumb clusters that can be assembled with only through hole components, including usb type-c and compatibility for standard keysets. + +* Keyboard Maintainer: [Jrodna](https://github.com/Jrodna) +* Hardware Supported: OrthoCode, atmega32a +* Hardware Availability: [GitHub](https://github.com/Jrodna/OrthoCode) + +Make example for this keyboard (after setting up your build environment): + + make orthocode:default + +Flashing example for this keyboard: + + make orthocode: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). \ No newline at end of file diff --git a/keyboards/orthocode/rules.mk b/keyboards/orthocode/rules.mk new file mode 100644 index 000000000000..876d20b5101a --- /dev/null +++ b/keyboards/orthocode/rules.mk @@ -0,0 +1,23 @@ +# MCU name +MCU = atmega32a + +# Processor frequency +F_CPU = 16000000 + +# Bootloader selection +BOOTLOADER = usbasploader + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes # Enables the use of one or more encoders diff --git a/keyboards/orthodox/keymaps/drashna/keymap.c b/keyboards/orthodox/keymaps/drashna/keymap.c index 643a5b6b0bdd..b7d83a5f2e74 100644 --- a/keyboards/orthodox/keymaps/drashna/keymap.c +++ b/keyboards/orthodox/keymaps/drashna/keymap.c @@ -19,59 +19,34 @@ LALT_T(KC_TAB), K11, K12, K13, K14, K15, OS_LALT, OS_LGUI, OS_RALT, RAISE, K16, K17, K18, K19, K1A, RALT_T(K1B), \ KC_MLSF, CTL_T(K21), K22, K23, K24, K25, LOWER, KC_SPACE,KC_BSPC, KC_DEL, KC_ENT, RAISE, K26, K27, K28, K29, RCTL_T(K2A), KC_MRSF \ ) -#define LAYOUT_orthodox_base_wrapper(...) LAYOUT_orthodox_base(__VA_ARGS__) +#define LAYOUT_base_wrapper(...) LAYOUT_orthodox_base(__VA_ARGS__) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_DEFAULT_LAYER_1] = LAYOUT_base_wrapper( + _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, + _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, + _________________QWERTY_L3_________________, _________________QWERTY_R3_________________ + ), + + [_DEFAULT_LAYER_2] = LAYOUT_base_wrapper( + ______________COLEMAK_MOD_DH_L1____________, ______________COLEMAK_MOD_DH_R1____________, + ______________COLEMAK_MOD_DH_L2____________, ______________COLEMAK_MOD_DH_R2____________, + ______________COLEMAK_MOD_DH_L3____________, ______________COLEMAK_MOD_DH_R3____________ + ), + [_DEFAULT_LAYER_3] = LAYOUT_base_wrapper( + _________________COLEMAK_L1________________, _________________COLEMAK_R1________________, + _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, + _________________COLEMAK_L3________________, _________________COLEMAK_R3________________ + ), + + [_DEFAULT_LAYER_4] = LAYOUT_base_wrapper( + _________________DVORAK_L1_________________, _________________DVORAK_R1_________________, + _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, + _________________DVORAK_L3_________________, _________________DVORAK_R3_________________ + ), - [_QWERTY] = LAYOUT_orthodox_base_wrapper( - _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, - _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, - _________________QWERTY_L3_________________, _________________QWERTY_R3_________________ - ), - - [_COLEMAK] = LAYOUT_orthodox_base_wrapper( - _________________COLEMAK_L1________________, _________________COLEMAK_R1________________, - _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, - _________________COLEMAK_L3________________, _________________COLEMAK_R3________________ - ), - - [_DVORAK] = LAYOUT_orthodox_base_wrapper( - _________________DVORAK_L1_________________, _________________DVORAK_R1_________________, - _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, - _________________DVORAK_L3_________________, _________________DVORAK_R3_________________ - ), - - [_WORKMAN] = LAYOUT_orthodox_base_wrapper( - _________________WORKMAN_L1________________, _________________WORKMAN_R1________________, - _________________WORKMAN_L2________________, _________________WORKMAN_R2________________, - _________________WORKMAN_L3________________, _________________WORKMAN_R3________________ - ), - - [_NORMAN] = LAYOUT_orthodox_base_wrapper( - _________________NORMAN_L1_________________, _________________NORMAN_L1_________________, - _________________NORMAN_L2_________________, _________________NORMAN_R2_________________, - _________________NORMAN_L3_________________, _________________NORMAN_R3_________________ - ), - - [_MALTRON] = LAYOUT_orthodox_base_wrapper( - _________________MALTRON_L1________________, _________________MALTRON_R1________________, - _________________MALTRON_L2________________, _________________MALTRON_R2________________, - _________________MALTRON_L3________________, _________________MALTRON_R3________________ - ), - - [_EUCALYN] = LAYOUT_orthodox_base_wrapper( - _________________EUCALYN_L1________________, _________________EUCALYN_R1________________, - _________________EUCALYN_L2________________, _________________EUCALYN_R2________________, - _________________EUCALYN_L3________________, _________________EUCALYN_R3________________ - ), - - [_CARPLAX] = LAYOUT_orthodox_base_wrapper( - _____________CARPLAX_QFMLWY_L1_____________, _____________CARPLAX_QFMLWY_R1_____________, - _____________CARPLAX_QFMLWY_L2_____________, _____________CARPLAX_QFMLWY_R2_____________, - _____________CARPLAX_QFMLWY_L3_____________, _____________CARPLAX_QFMLWY_R3_____________ - ), [_LOWER] = LAYOUT_wrapper(\ KC_TILD, _________________LOWER_L1__________________, _________________LOWER_R1__________________, KC_BSPC, diff --git a/keyboards/orthodox/keymaps/drashna/rules.mk b/keyboards/orthodox/keymaps/drashna/rules.mk index 0d28c44a7169..6f72712d8443 100644 --- a/keyboards/orthodox/keymaps/drashna/rules.mk +++ b/keyboards/orthodox/keymaps/drashna/rules.mk @@ -1,4 +1,4 @@ -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) @@ -10,7 +10,6 @@ NKRO_ENABLE = yes SPACE_CADET_ENABLE = no INDICATOR_LIGHTS = yes -RGBLIGHT_TWINKLE = no RGBLIGHT_STARTUP_ANIMATION = yes diff --git a/keyboards/orthodox/keymaps/rfvizarra/keymap.c b/keyboards/orthodox/keymaps/rfvizarra/keymap.c index 4de7e39509fc..d8c836dc12a9 100644 --- a/keyboards/orthodox/keymaps/rfvizarra/keymap.c +++ b/keyboards/orthodox/keymaps/rfvizarra/keymap.c @@ -102,7 +102,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { state = update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); state = update_tri_layer_state(state, _LOWER, _NAV, _NAV2); return state; diff --git a/keyboards/orthodox/keymaps/shaymdev/config.h b/keyboards/orthodox/keymaps/shaymdev/config.h new file mode 100644 index 000000000000..749302284a29 --- /dev/null +++ b/keyboards/orthodox/keymaps/shaymdev/config.h @@ -0,0 +1,60 @@ +/* +This is the c configuration file for the keymap + +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert +Copyright 2017 Art Ortenburger + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +/* Use I2C or Serial, not both */ +#define USE_SERIAL +// #define USE_I2C + +#define EE_HANDS + +#undef RGBLED_NUM +#define RGBLED_NUM 14 +// #define RGBLIGHT_ANIMATIONS + +#define RGBLIGHT_EFFECT_BREATHING +#define RGBLIGHT_EFFECT_RAINBOW_MOOD +#define RGBLIGHT_EFFECT_RAINBOW_SWIRL +#define RGBLIGHT_EFFECT_KNIGHT + +// #define RGBLED_SPLIT { 5, 5 } +#undef RGB_DI_PIN +#define RGB_DI_PIN D3 +#define RGBLIGHT_LAYERS +#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF +#define RGBLIGHT_SLEEP + +#ifdef AUDIO_ENABLE + #define STARTUP_SONG SONG(PLANCK_SOUND) + // #define STARTUP_SONG SONG(NO_SOUND) + + #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \ + SONG(COLEMAK_SOUND), \ + SONG(DVORAK_SOUND) \ + } +#endif + +#define COMBO_COUNT 1 + +#define IGNORE_MOD_TAP_INTERRUPT +#define TAPPING_TERM 220 + diff --git a/keyboards/orthodox/keymaps/shaymdev/keymap.c b/keyboards/orthodox/keymaps/shaymdev/keymap.c new file mode 100644 index 000000000000..54ae7e397287 --- /dev/null +++ b/keyboards/orthodox/keymaps/shaymdev/keymap.c @@ -0,0 +1,196 @@ +/* +This is the keymap for the keyboard + +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert +Copyright 2017 Art Ortenburger + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum orthodox_layers +{ + _DVORAK, + _QWERTY, + _LOWER, + _RAISE, + _ADJUST, +}; + +enum combos //match combo_count in config.h +{ + EU_ENT, +}; + +const uint16_t PROGMEM eu_combo[] = {KC_E, KC_U, COMBO_END}; + +combo_t key_combos[COMBO_COUNT] = { + [EU_ENT] = COMBO_ACTION(eu_combo), +}; + +void process_combo_event(uint16_t combo_index, bool pressed) { + switch(combo_index) { + case EU_ENT: + if (pressed) { + tap_code16(KC_ENT); + } + break; + } +} + + +enum custom_keycodes { + DVORAK = SAFE_RANGE, + QWERTY, + VELOCI +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +#define TO_DV TO(_DVORAK) +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + +[_DVORAK] = LAYOUT( + KC_ESC, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, + KC_TAB, GUI_T(KC_A), ALT_T(KC_O), KC_E, KC_U, KC_I, KC_ENT, KC_LALT, KC_DEL, KC_LGUI, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, + KC_EQL, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, TT(LOWER), KC_LSFT, KC_LCTL, KC_BSPC, ALT_T(KC_SPC), TT(RAISE), KC_B, KC_M, KC_W, KC_V, KC_Z, KC_BSLS +), + +[_QWERTY] = LAYOUT( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, _______, _______, _______, _______, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, _______, _______, _______, _______, _______, _______, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT +), + +[_LOWER] = LAYOUT( + _______, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_AMPR, _______, KC_P7, KC_P8, KC_P9, KC_PMNS, _______, + _______, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_ASTR, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_PPLS, _______, + _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_GRV, _______, _______, _______, _______, _______, KC_KP_0, _______, KC_P1, KC_P2, KC_P3, KC_PENT, _______ +), + +[_RAISE] = LAYOUT( + _______, KC_PSCR, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_VOLU, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, + KC_CAPS, KC_INS, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, _______, _______, _______, KC_VOLD, KC_F4, KC_F5, KC_F6, KC_F11, XXXXXXX, + _______, KC_NLCK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_F1, KC_F2, KC_F3, KC_F12, XXXXXXX +), + +[_ADJUST] = LAYOUT( + TO_DV, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SLEP, + RGB_TOG, RGB_MOD, VLK_TOG, AU_ON, AU_OFF, AG_NORM, _______, _______, _______, _______, AG_SWAP, QWERTY, DVORAK, _______, _______, _______, + RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY +) + + +}; + +const key_override_t delete_key_override = ko_make_basic(MOD_MASK_SHIFT, KC_BSPACE, KC_DELETE); + +// This globally defines all key overrides to be used +const key_override_t **key_overrides = (const key_override_t *[]){ + &delete_key_override, + NULL // Null terminate the array of overrides! +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + set_single_persistent_default_layer(_QWERTY); + } + return false; + break; + case DVORAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_DVORAK); + } + return false; + break; +// case VELOCI: +// #ifdef VELOCIKEY_ENABLE +// velocikey_toggle(); +// return false; +// #endif +// break; + } + return true; +} + +#ifdef RGBLIGHT_ENABLE + +const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {4, 6, HSV_RED} // Light 6 LEDs, starting with LED 4 +); + +const rgblight_segment_t PROGMEM my_qwerty_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 3, HSV_CHARTREUSE} // Light 3 LEDs, starting with LED 0 +); + +const rgblight_segment_t PROGMEM my_lower_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {4, 3, HSV_BLUE} // Light LEDs 5-6 +); + +const rgblight_segment_t PROGMEM my_raise_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {7, 3, HSV_ORANGE} // Light LEDs 7-8 +); + +const rgblight_segment_t PROGMEM my_adjust_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {4, 6, HSV_GREEN} // Light 10 LEDs, starting with LED 0 +); + + +// Later layers take precedence. This array corresponds to the magic numbers used in rgblight_set_layer_state(i, onOff) +const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( + my_capslock_layer, + my_qwerty_layer, // Overrides other layers + my_lower_layer, // Overrides other layers + my_raise_layer, // Overrides other layers + my_adjust_layer // Overrides other layers +); + +void keyboard_post_init_user(void) { + // Enable the LED layers + rgblight_layers = my_rgb_layers; + rgblight_enable_noeeprom(); // Enables RGB, without saving settings + //rgblight_sethsv_noeeprom(HSV_CYAN); + //rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); + rgblight_mode_noeeprom(RGBLIGHT_MODE_RAINBOW_SWIRL); +} + +bool led_update_user(led_t led_state) { + rgblight_set_layer_state(0, led_state.caps_lock); + return true; +} + +layer_state_t default_layer_state_set_user(layer_state_t state) { + rgblight_set_layer_state(1, layer_state_cmp(state, _QWERTY)); + return state; +} + +#endif + +layer_state_t layer_state_set_user(layer_state_t state) { + state = update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); + +#ifdef RGBLIGHT_ENABLE + rgblight_set_layer_state(2, layer_state_cmp(state, _LOWER)); + rgblight_set_layer_state(3, layer_state_cmp(state, _RAISE)); + rgblight_set_layer_state(4, layer_state_cmp(state, _ADJUST)); +#endif + + return state; +} diff --git a/keyboards/orthodox/keymaps/shaymdev/rules.mk b/keyboards/orthodox/keymaps/shaymdev/rules.mk new file mode 100644 index 000000000000..c6ecb2372fbb --- /dev/null +++ b/keyboards/orthodox/keymaps/shaymdev/rules.mk @@ -0,0 +1,6 @@ +MOUSEKEY_ENABLE = no +RGBLIGHT_ENABLE = yes +VELOCIKEY_ENABLE = yes +KEY_OVERRIDE_ENABLE = yes +COMBO_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/orthodox/rev1/info.json b/keyboards/orthodox/rev1/info.json index 83180aa15e56..49ca9b31b8ac 100644 --- a/keyboards/orthodox/rev1/info.json +++ b/keyboards/orthodox/rev1/info.json @@ -1,8 +1,6 @@ { "keyboard_name": "Monkeebs Orthodox Rev.1", "maintainer": "drashna", - "width": 19, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/orthodox/rev1/rev1.c b/keyboards/orthodox/rev1/rev1.c index db8d435c33a2..49deba4dbfe5 100644 --- a/keyboards/orthodox/rev1/rev1.c +++ b/keyboards/orthodox/rev1/rev1.c @@ -21,19 +21,6 @@ along with this program. If not, see . #include "orthodox.h" -void matrix_init_kb(void) { - - //// // green led on - //// DDRD |= (1<<5); - //// PORTD &= ~(1<<5); - - //// // orange led on - //// DDRB |= (1<<0); - //// PORTB &= ~(1<<0); - - matrix_init_user(); -}; - #ifdef SWAP_HANDS_ENABLE __attribute__ ((weak)) // swap-hands action needs a matrix to define the swap diff --git a/keyboards/orthodox/rev1/rules.mk b/keyboards/orthodox/rev1/rules.mk index 8daa5f5ecb48..e0c0df2de205 100644 --- a/keyboards/orthodox/rev1/rules.mk +++ b/keyboards/orthodox/rev1/rules.mk @@ -1,11 +1,4 @@ # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina BACKLIGHT_ENABLE = no diff --git a/keyboards/orthodox/rev3/config.h b/keyboards/orthodox/rev3/config.h index 3f7a17b6bc8b..ae51281647a8 100644 --- a/keyboards/orthodox/rev3/config.h +++ b/keyboards/orthodox/rev3/config.h @@ -38,12 +38,12 @@ along with this program. If not, see . // wiring of each half //REV.3 PRO MICRO -#define MATRIX_ROW_PINS { D2, B4, B5, } +#define MATRIX_ROW_PINS { D2, B4, B5 } #define MATRIX_COL_PINS { D7, F4, F5, B6, B2, B3, B1, F7, F6 } /*/ //REV.3 TEENSY -#define MATRIX_ROW_PINS { B0, C6, C7, } +#define MATRIX_ROW_PINS { B0, C6, C7 } #define MATRIX_COL_PINS { D2, F5, F6, D6, D7, B4, B5, B6, F7 } /*/ diff --git a/keyboards/orthodox/rev3/info.json b/keyboards/orthodox/rev3/info.json index c98c9f232d7d..309769c62639 100644 --- a/keyboards/orthodox/rev3/info.json +++ b/keyboards/orthodox/rev3/info.json @@ -1,8 +1,6 @@ { "keyboard_name": "Monkeebs Orthodox Rev.3", "maintainer": "drashna", - "width": 19, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/orthodox/rev3/rev3.c b/keyboards/orthodox/rev3/rev3.c index db8d435c33a2..49deba4dbfe5 100644 --- a/keyboards/orthodox/rev3/rev3.c +++ b/keyboards/orthodox/rev3/rev3.c @@ -21,19 +21,6 @@ along with this program. If not, see . #include "orthodox.h" -void matrix_init_kb(void) { - - //// // green led on - //// DDRD |= (1<<5); - //// PORTD &= ~(1<<5); - - //// // orange led on - //// DDRB |= (1<<0); - //// PORTB &= ~(1<<0); - - matrix_init_user(); -}; - #ifdef SWAP_HANDS_ENABLE __attribute__ ((weak)) // swap-hands action needs a matrix to define the swap diff --git a/keyboards/orthodox/rev3/rules.mk b/keyboards/orthodox/rev3/rules.mk index 8daa5f5ecb48..e0c0df2de205 100644 --- a/keyboards/orthodox/rev3/rules.mk +++ b/keyboards/orthodox/rev3/rules.mk @@ -1,11 +1,4 @@ # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina BACKLIGHT_ENABLE = no diff --git a/keyboards/orthodox/rev3_teensy/config.h b/keyboards/orthodox/rev3_teensy/config.h index 37c8a7e734ed..a35c276d9502 100644 --- a/keyboards/orthodox/rev3_teensy/config.h +++ b/keyboards/orthodox/rev3_teensy/config.h @@ -38,7 +38,7 @@ along with this program. If not, see . // wiring of each half //REV.3 TEENSY -#define MATRIX_ROW_PINS { B0, C6, C7, } +#define MATRIX_ROW_PINS { B0, C6, C7 } #define MATRIX_COL_PINS { D2, F5, F6, D6, D7, B4, B5, B6, F7 } /* COL2ROW or ROW2COL */ diff --git a/keyboards/orthodox/rev3_teensy/info.json b/keyboards/orthodox/rev3_teensy/info.json index 5781c08f8e2b..a89c370396ee 100644 --- a/keyboards/orthodox/rev3_teensy/info.json +++ b/keyboards/orthodox/rev3_teensy/info.json @@ -1,8 +1,6 @@ { "keyboard_name": "Monkeebs Orthodox Rev.3 (Teensy)", "maintainer": "drashna", - "width": 19, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/orthodox/rev3_teensy/rev3_teensy.c b/keyboards/orthodox/rev3_teensy/rev3_teensy.c index db8d435c33a2..49deba4dbfe5 100644 --- a/keyboards/orthodox/rev3_teensy/rev3_teensy.c +++ b/keyboards/orthodox/rev3_teensy/rev3_teensy.c @@ -21,19 +21,6 @@ along with this program. If not, see . #include "orthodox.h" -void matrix_init_kb(void) { - - //// // green led on - //// DDRD |= (1<<5); - //// PORTD &= ~(1<<5); - - //// // orange led on - //// DDRB |= (1<<0); - //// PORTB &= ~(1<<0); - - matrix_init_user(); -}; - #ifdef SWAP_HANDS_ENABLE __attribute__ ((weak)) // swap-hands action needs a matrix to define the swap diff --git a/keyboards/orthodox/rev3_teensy/rules.mk b/keyboards/orthodox/rev3_teensy/rules.mk index cbd79cccde48..ad8482a3df73 100644 --- a/keyboards/orthodox/rev3_teensy/rules.mk +++ b/keyboards/orthodox/rev3_teensy/rules.mk @@ -1,11 +1,4 @@ # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = halfkay BACKLIGHT_ENABLE = no diff --git a/keyboards/orthodox/rules.mk b/keyboards/orthodox/rules.mk index 384938ed0565..ab6444d27779 100644 --- a/keyboards/orthodox/rules.mk +++ b/keyboards/orthodox/rules.mk @@ -5,20 +5,15 @@ MCU = atmega32u4 # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend SPLIT_KEYBOARD = yes diff --git a/keyboards/otaku_split/rev0/config.h b/keyboards/otaku_split/rev0/config.h index de1eb634ef3e..454f4866e663 100644 --- a/keyboards/otaku_split/rev0/config.h +++ b/keyboards/otaku_split/rev0/config.h @@ -123,59 +123,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -194,26 +141,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/otaku_split/rev0/info.json b/keyboards/otaku_split/rev0/info.json index b5608cb492c4..c7dc09e52304 100644 --- a/keyboards/otaku_split/rev0/info.json +++ b/keyboards/otaku_split/rev0/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Otaku split rev.0", "url": "", "maintainer": "takashiski", - "width": 17.75, - "height": 5, "layouts": { "LAYOUT": { "layout": [{"label":"\u534a\u89d2", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"\"", "x":2, "y":0}, {"label":"\u00a3", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":9.75, "y":0}, {"label":"*", "x":10.75, "y":0}, {"label":"(", "x":11.75, "y":0}, {"label":")", "x":12.75, "y":0}, {"label":"=", "x":13.75, "y":0}, {"label":"~", "x":14.75, "y":0}, {"label":"|", "x":15.75, "y":0}, {"label":"Backspace", "x":16.75, "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":"7", "x":6.5, "y":1}, {"label":"Y", "x":9.25, "y":1}, {"label":"U", "x":10.25, "y":1}, {"label":"I", "x":11.25, "y":1}, {"label":"O", "x":12.25, "y":1}, {"label":"P", "x":13.25, "y":1}, {"label":"`", "x":14.25, "y":1}, {"label":"{", "x":15.25, "y":1}, {"label":"Enter", "x":16.5, "y":1, "w":1.25, "h":2}, {"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":9.5, "y":2}, {"label":"J", "x":10.5, "y":2}, {"label":"K", "x":11.5, "y":2}, {"label":"L", "x":12.5, "y":2}, {"label":"+", "x":13.5, "y":2}, {"label":"*", "x":14.5, "y":2}, {"label":"}", "x":15.5, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"1", "x":9, "y":3}, {"label":"N", "x":10, "y":3}, {"label":"M", "x":11, "y":3}, {"label":"<", "x":12, "y":3}, {"label":">", "x":13, "y":3}, {"label":"?", "x":14, "y":3}, {"label":"_", "x":15, "y":3}, {"label":"Shift", "x":16, "y":3, "w":1.75}, {"x":0, "y":4, "w":2}, {"label":"Ctrl", "x":2, "y":4, "w":1.25}, {"label":"Alt", "x":3.25, "y":4, "w":1.25}, {"label":"\u7121\u5909\u63db", "x":4.5, "y":4}, {"label":"\u2190", "x":5.5, "y":4}, {"label":"\u2193", "x":6.5, "y":4}, {"label":"\u2191", "x":8.75, "y":4}, {"label":"\u2192", "x":9.75, "y":4}, {"label":".", "x":10.75, "y":4}, {"label":"Menu", "x":11.75, "y":4}, {"label":"\u5909\u63db", "x":12.75, "y":4, "w":1.25}, {"label":"\u30ab\u30bf\u30ab\u30ca", "x":14, "y":4, "w":1.25}, {"label":"Alt", "x":15.25, "y":4, "w":1.25}, {"label":"Ctrl", "x":16.5, "y":4, "w":1.25}] diff --git a/keyboards/otaku_split/rev0/keymaps/default/keymap.c b/keyboards/otaku_split/rev0/keymaps/default/keymap.c index 844e9c50ec8d..5bf742196cae 100644 --- a/keyboards/otaku_split/rev0/keymaps/default/keymap.c +++ b/keyboards/otaku_split/rev0/keymaps/default/keymap.c @@ -29,21 +29,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTRL, KC_LGUI,KC_LALT,KC_MHEN,KC_TAB,KC_SPC, KC_ENT,KC_BSPC,KC_HENK,KC_KANA,KC_RALT,KC_RGUI,KC_APP,KC_RCTRL ), }; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - } - return true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/otaku_split/rev0/keymaps/sample/keymap.c b/keyboards/otaku_split/rev0/keymaps/sample/keymap.c index b1df2cef0607..a309db6ff35d 100644 --- a/keyboards/otaku_split/rev0/keymaps/sample/keymap.c +++ b/keyboards/otaku_split/rev0/keymaps/sample/keymap.c @@ -65,15 +65,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/otaku_split/rev0/rev0.c b/keyboards/otaku_split/rev0/rev0.c index 75c24b584f5c..6ec80aabb6de 100644 --- a/keyboards/otaku_split/rev0/rev0.c +++ b/keyboards/otaku_split/rev0/rev0.c @@ -14,38 +14,3 @@ * along with this program. If not, see . */ #include "rev0.h" - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -/* - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - -*/ diff --git a/keyboards/otaku_split/rev0/rules.mk b/keyboards/otaku_split/rev0/rules.mk index 9cd4fea57321..03c5d011ed5a 100644 --- a/keyboards/otaku_split/rev0/rules.mk +++ b/keyboards/otaku_split/rev0/rules.mk @@ -2,31 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD=yes diff --git a/keyboards/otaku_split/rev1/config.h b/keyboards/otaku_split/rev1/config.h index c9b7ed4c4eab..7ae6155d8c3f 100644 --- a/keyboards/otaku_split/rev1/config.h +++ b/keyboards/otaku_split/rev1/config.h @@ -127,59 +127,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -198,26 +145,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/otaku_split/rev1/info.json b/keyboards/otaku_split/rev1/info.json index 9ee27337549f..9c2121e0e1ba 100644 --- a/keyboards/otaku_split/rev1/info.json +++ b/keyboards/otaku_split/rev1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "otaku split rev.1", "url": "http", "maintainer": "takashiski", - "width": 17.75, - "height": 5, "layouts": { "LAYOUT": { "layout": [{"label":"\u534a\u89d2", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"\"", "x":2, "y":0}, {"label":"\u00a3", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"Insert", "x":8.75, "y":0}, {"label":"&", "x":9.75, "y":0}, {"label":"*", "x":10.75, "y":0}, {"label":"(", "x":11.75, "y":0}, {"label":")", "x":12.75, "y":0}, {"label":"=", "x":13.75, "y":0}, {"label":"~", "x":14.75, "y":0}, {"label":"|", "x":15.75, "y":0}, {"label":"Backspace", "x":16.75, "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":"7", "x":6.5, "y":1}, {"label":"Y", "x":9.25, "y":1}, {"label":"U", "x":10.25, "y":1}, {"label":"I", "x":11.25, "y":1}, {"label":"O", "x":12.25, "y":1}, {"label":"P", "x":13.25, "y":1}, {"label":"`", "x":14.25, "y":1}, {"label":"{", "x":15.25, "y":1}, {"label":"Enter", "x":16.5, "y":1, "w":1.25, "h":2}, {"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":9.5, "y":2}, {"label":"J", "x":10.5, "y":2}, {"label":"K", "x":11.5, "y":2}, {"label":"L", "x":12.5, "y":2}, {"label":"+", "x":13.5, "y":2}, {"label":"*", "x":14.5, "y":2}, {"label":"}", "x":15.5, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"1", "x":9, "y":3}, {"label":"N", "x":10, "y":3}, {"label":"M", "x":11, "y":3}, {"label":"<", "x":12, "y":3}, {"label":">", "x":13, "y":3}, {"label":"?", "x":14, "y":3}, {"label":"_", "x":15, "y":3}, {"label":"Shift", "x":16, "y":3, "w":1.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4}, {"label":"Alt", "x":2.25, "y":4, "w":1.25}, {"label":"\u7121\u5909\u63db", "x":3.5, "y":4}, {"label":"2", "x":4.5, "y":4}, {"label":"\u2190", "x":5.5, "y":4}, {"label":"\u2193", "x":6.5, "y":4}, {"label":"\u2191", "x":8.75, "y":4}, {"label":"\u2192", "x":9.75, "y":4}, {"label":".", "x":10.75, "y":4}, {"label":"\u5909\u63db", "x":11.75, "y":4, "w":1.25}, {"label":"\u30ab\u30bf\u30ab\u30ca", "x":13, "y":4, "w":1.25}, {"label":"Alt", "x":14.25, "y":4, "w":1.25}, {"label":"Menu", "x":15.5, "y":4}, {"label":"Ctrl", "x":16.5, "y":4, "w":1.25}] diff --git a/keyboards/otaku_split/rev1/keymaps/default/keymap.c b/keyboards/otaku_split/rev1/keymaps/default/keymap.c index c708e53eb29d..a7f88b2a876c 100644 --- a/keyboards/otaku_split/rev1/keymaps/default/keymap.c +++ b/keyboards/otaku_split/rev1/keymaps/default/keymap.c @@ -37,22 +37,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTRL, KC_LGUI,KC_LALT,KC_MHEN,KC_TRNS,KC_SPC,KC_SPC, KC_TRNS,KC_ENT,KC_BSPC,KC_HENK,KC_TRNS,KC_LEFT,KC_DOWN,KC_RIGHT ) }; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - - } - return true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/otaku_split/rev1/keymaps/sample/keymap.c b/keyboards/otaku_split/rev1/keymaps/sample/keymap.c index 6875f462f4a5..b73c4fe64d13 100644 --- a/keyboards/otaku_split/rev1/keymaps/sample/keymap.c +++ b/keyboards/otaku_split/rev1/keymaps/sample/keymap.c @@ -71,15 +71,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/otaku_split/rev1/rev1.c b/keyboards/otaku_split/rev1/rev1.c index 88b42eb95d31..b63bb047aa2f 100644 --- a/keyboards/otaku_split/rev1/rev1.c +++ b/keyboards/otaku_split/rev1/rev1.c @@ -14,38 +14,3 @@ * along with this program. If not, see . */ #include "rev1.h" - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -/* - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - -*/ diff --git a/keyboards/otaku_split/rev1/rules.mk b/keyboards/otaku_split/rev1/rules.mk index 9cd4fea57321..03c5d011ed5a 100644 --- a/keyboards/otaku_split/rev1/rules.mk +++ b/keyboards/otaku_split/rev1/rules.mk @@ -2,31 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD=yes diff --git a/keyboards/owl8/config.h b/keyboards/owl8/config.h new file mode 100644 index 000000000000..d28fd9c927db --- /dev/null +++ b/keyboards/owl8/config.h @@ -0,0 +1,156 @@ +/* +Copyright 2021 yfuku + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x5946 // YF +#define PRODUCT_ID 0x0008 +#define DEVICE_VER 0x0001 +#define MANUFACTURER yfuku +#define PRODUCT owl8 + +/* key matrix size */ +#define MATRIX_ROWS 1 +#define MATRIX_COLS 16 + +/* + * 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 DIRECT_PINS { \ + { F4, F7, B3, B6, F5, F6, B1, B2, D4, C6, D7, E6, NO_PIN, NO_PIN, NO_PIN, NO_PIN } \ +} +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +//#define LED_NUM_LOCK_PIN B0 +//#define LED_CAPS_LOCK_PIN B1 +//#define LED_SCROLL_LOCK_PIN B2 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +//#define RGB_DI_PIN E2 +//#ifdef RGB_DI_PIN +//# define RGBLED_NUM 16 +//# define RGBLIGHT_HUE_STEP 8 +//# define RGBLIGHT_SAT_STEP 8 +//# define RGBLIGHT_VAL_STEP 8 +//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +//# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +//#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 + +#define ENCODERS_PAD_A { D4, D7 } +#define ENCODERS_PAD_B { C6, E6 } diff --git a/keyboards/owl8/info.json b/keyboards/owl8/info.json new file mode 100644 index 000000000000..e50484ba9080 --- /dev/null +++ b/keyboards/owl8/info.json @@ -0,0 +1,30 @@ +{ + "keyboard_name": "owl8", + "url": "", + "maintainer": "yfuku", + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2, "y":1.25}, + {"x":3, "y":1.25}, + + {"x":0, "y":2.5}, + {"x":1, "y":2.5}, + {"x":2, "y":2.5}, + {"x":3, "y":2.5}, + + {"x":0, "y":3.5}, + {"x":1, "y":3.5}, + {"x":2, "y":3.5}, + {"x":3, "y":3.5} + ] + } + } +} diff --git a/keyboards/owl8/keymaps/default/keymap.c b/keyboards/owl8/keymaps/default/keymap.c new file mode 100644 index 000000000000..e840263639d8 --- /dev/null +++ b/keyboards/owl8/keymaps/default/keymap.c @@ -0,0 +1,68 @@ +/* Copyright 2021 yfuku + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN1, + _FN2, + _FN3 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( + KC_NO, KC_NO, KC_NO, KC_NO, // for encoders + KC_NO, KC_NO, KC_NO, KC_NO, // for ext keys + MO(1), KC_BSPC, KC_SPC, KC_ENT, + KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + [_FN1] = LAYOUT( + KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, + KC_1, KC_2, KC_3, KC_4, + KC_5, KC_6, KC_7, KC_8 + ), + [_FN2] = LAYOUT( + KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, + KC_1, KC_2, KC_3, KC_4, + KC_5, KC_6, KC_7, KC_8 + ), + [_FN3] = LAYOUT( + KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, + KC_1, KC_2, KC_3, KC_4, + KC_5, KC_6, KC_7, KC_8 + ) +}; + +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_DOWN); + } else { + tap_code(KC_UP); + } + } + return true; +} diff --git a/keyboards/owl8/keymaps/default/readme.md b/keyboards/owl8/keymaps/default/readme.md new file mode 100644 index 000000000000..e0129daa2d38 --- /dev/null +++ b/keyboards/owl8/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for owl8 diff --git a/keyboards/owl8/keymaps/via/keymap.c b/keyboards/owl8/keymaps/via/keymap.c new file mode 100644 index 000000000000..6e3f6ea90bc4 --- /dev/null +++ b/keyboards/owl8/keymaps/via/keymap.c @@ -0,0 +1,123 @@ +/* Copyright 2021 yfuku + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN1, + _FN2, + _FN3 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( + KC_NO, KC_NO, KC_NO, KC_NO, // for encoders + KC_NO, KC_NO, KC_NO, KC_NO, // for ext keys + MO(1), KC_BSPC, KC_SPC, KC_ENT, + KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + [_FN1] = LAYOUT( + KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, + KC_1, KC_2, KC_3, KC_4, + KC_5, KC_6, KC_7, KC_8 + ), + [_FN2] = LAYOUT( + KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, + KC_1, KC_2, KC_3, KC_4, + KC_5, KC_6, KC_7, KC_8 + ), + [_FN3] = LAYOUT( + KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, + KC_1, KC_2, KC_3, KC_4, + KC_5, KC_6, KC_7, KC_8 + ) +}; + +keyevent_t encoder1_ccw = { + .key = (keypos_t){.row = 0, .col = 12}, + .pressed = false +}; + +keyevent_t encoder1_cw = { + .key = (keypos_t){.row = 0, .col = 13}, + .pressed = false +}; + +keyevent_t encoder2_ccw = { + .key = (keypos_t){.row = 0, .col = 14}, + .pressed = false +}; + +keyevent_t encoder2_cw = { + .key = (keypos_t){.row = 0, .col = 15}, + .pressed = false +}; + +void matrix_scan_user(void) { + if (IS_PRESSED(encoder1_ccw)) { + encoder1_ccw.pressed = false; + encoder1_ccw.time = (timer_read() | 1); + action_exec(encoder1_ccw); + } + + if (IS_PRESSED(encoder1_cw)) { + encoder1_cw.pressed = false; + encoder1_cw.time = (timer_read() | 1); + action_exec(encoder1_cw); + } + + if (IS_PRESSED(encoder2_ccw)) { + encoder2_ccw.pressed = false; + encoder2_ccw.time = (timer_read() | 1); + action_exec(encoder2_ccw); + } + + if (IS_PRESSED(encoder2_cw)) { + encoder2_cw.pressed = false; + encoder2_cw.time = (timer_read() | 1); + action_exec(encoder2_cw); + } +} + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { /* First encoder */ + if (clockwise) { + encoder1_cw.pressed = true; + encoder1_cw.time = (timer_read() | 1); + action_exec(encoder1_cw); + } else { + encoder1_ccw.pressed = true; + encoder1_ccw.time = (timer_read() | 1); + action_exec(encoder1_ccw); + } + } else if (index == 1) { + if (clockwise) { + encoder2_cw.pressed = true; + encoder2_cw.time = (timer_read() | 1); + action_exec(encoder2_cw); + } else { + encoder2_ccw.pressed = true; + encoder2_ccw.time = (timer_read() | 1); + action_exec(encoder2_ccw); + } + } + + return true; +} diff --git a/keyboards/owl8/keymaps/via/readme.md b/keyboards/owl8/keymaps/via/readme.md new file mode 100644 index 000000000000..c4fa65987c04 --- /dev/null +++ b/keyboards/owl8/keymaps/via/readme.md @@ -0,0 +1 @@ +# The via keymap for owl8 diff --git a/keyboards/owl8/keymaps/via/rules.mk b/keyboards/owl8/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/owl8/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/owl8/owl8.c b/keyboards/owl8/owl8.c new file mode 100644 index 000000000000..a31289891aae --- /dev/null +++ b/keyboards/owl8/owl8.c @@ -0,0 +1,17 @@ +/* Copyright 2021 yfuku + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "owl8.h" diff --git a/keyboards/owl8/owl8.h b/keyboards/owl8/owl8.h new file mode 100644 index 000000000000..5e561f580c04 --- /dev/null +++ b/keyboards/owl8/owl8.h @@ -0,0 +1,38 @@ +/* Copyright 2021 yfuku + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + +#define LAYOUT( \ + k012, k013, k014, k015, \ + k008, k009, k010, k011, \ + k000, k001, k002, k003, \ + k004, k005, k006, k007 \ +) \ +{ \ + {k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015 } \ +} diff --git a/keyboards/owl8/readme.md b/keyboards/owl8/readme.md new file mode 100644 index 000000000000..b40a5f35cb32 --- /dev/null +++ b/keyboards/owl8/readme.md @@ -0,0 +1,19 @@ +# owl8 + +![owl8](https://raw.githubusercontent.com/yfuku/owl8/master/images/owl8.jpg) + +macropad + +* Keyboard Maintainer: [yfuku](https://github.com/yfuku) +* Hardware Supported: owl8 PCB, Pro Micro +* Hardware Availability: https://yfuku.booth.pm/ + +Make example for this keyboard (after setting up your build environment): + + make owl8:default + +Flashing example for this keyboard: + + make owl8:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/owl8/rules.mk b/keyboards/owl8/rules.mk new file mode 100644 index 000000000000..184b0053568e --- /dev/null +++ b/keyboards/owl8/rules.mk @@ -0,0 +1,21 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +ENCODER_ENABLE = yes diff --git a/keyboards/owlab/jelly_epoch/hotswap/config.h b/keyboards/owlab/jelly_epoch/hotswap/config.h new file mode 100644 index 000000000000..eb2998de7a19 --- /dev/null +++ b/keyboards/owlab/jelly_epoch/hotswap/config.h @@ -0,0 +1,65 @@ +/* +Copyright 2021 owlab + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter*/ +#define VENDOR_ID 0x4F53 //0x4F53 OS for owl studio +#define PRODUCT_ID 0x4A4C //0x4A4C JL for jelly, 0x4A53 JS for jelly solder +#define DEVICE_VER 0x0001 +#define MANUFACTURER OwLab +#define PRODUCT Jelly Epoch + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 14 + +/* Keyboard Matrix Assignments */ +#define MATRIX_ROW_PINS { B0, B1, B2, B3, A15, B10 } +#define MATRIX_COL_PINS { A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, B11, B8, B9, C13 } + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* NKRO */ +#ifdef NKRO_ENABLE +# define FORCE_NKRO +#endif + +/* RGB Strip*/ +#define RGB_DI_PIN B15 +#ifdef RGB_DI_PIN +# define RGBLIGHT_EFFECT_ALTERNATING +# define RGBLIGHT_EFFECT_BREATHING +# define RGBLIGHT_EFFECT_CHRISTMAS +# define RGBLIGHT_EFFECT_KNIGHT +# define RGBLIGHT_EFFECT_RAINBOW_MOOD +# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +# define RGBLIGHT_EFFECT_SNAKE +# define RGBLIGHT_EFFECT_STATIC_GRADIENT +# define RGBLIGHT_EFFECT_TWINKLE +# define RGBLED_NUM 24 +# define RGBLIGHT_HUE_STEP 8 +# define RGBLIGHT_SAT_STEP 8 +# define RGBLIGHT_VAL_STEP 10 +# define RGBLIGHT_LIMIT_VAL 255 +#endif diff --git a/keyboards/owlab/jelly_epoch/hotswap/hotswap.c b/keyboards/owlab/jelly_epoch/hotswap/hotswap.c new file mode 100644 index 000000000000..55fbd3ea20f1 --- /dev/null +++ b/keyboards/owlab/jelly_epoch/hotswap/hotswap.c @@ -0,0 +1,18 @@ +/* +Copyright 2021 owlab + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "hotswap.h" diff --git a/keyboards/owlab/jelly_epoch/hotswap/hotswap.h b/keyboards/owlab/jelly_epoch/hotswap/hotswap.h new file mode 100644 index 000000000000..c9ab3643a1cb --- /dev/null +++ b/keyboards/owlab/jelly_epoch/hotswap/hotswap.h @@ -0,0 +1,38 @@ +/* +Copyright 2021 owlab + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +#define ____ KC_NO + +#define LAYOUT( \ + K000, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K412, K313, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K512, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K511, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K510, \ + K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K413, \ + K500, K501, K502, K504, K506, K507, K508, K509, K513 \ +) { \ + { K000, ____, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \ + { 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, K212, K213 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313 }, \ + { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413 }, \ + { K500, K501, K502, ____, K504, ____, K506, K507, K508, K509, K510, K511, K512, K513 } \ +} diff --git a/keyboards/owlab/jelly_epoch/hotswap/info.json b/keyboards/owlab/jelly_epoch/hotswap/info.json new file mode 100644 index 000000000000..01af496bb26b --- /dev/null +++ b/keyboards/owlab/jelly_epoch/hotswap/info.json @@ -0,0 +1,92 @@ +{ + "keyboard_name": "jelly epoch", + "url": "https://www.popkeyboard.com/products/jrrgvdsyu47wer", + "maintainer": "Owlab", + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1.25, "y":0}, + {"x":2.25, "y":0}, + {"x":3.25, "y":0}, + {"x":4.25, "y":0}, + {"x":5.5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.75, "y":0}, + {"x":10.75, "y":0}, + {"x":11.75, "y":0}, + {"x":12.75, "y":0}, + {"x":14, "y":0}, + {"x":15, "y":0}, + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2, "y":1.25}, + {"x":3, "y":1.25}, + {"x":4, "y":1.25}, + {"x":5, "y":1.25}, + {"x":6, "y":1.25}, + {"x":7, "y":1.25}, + {"x":8, "y":1.25}, + {"x":9, "y":1.25}, + {"x":10, "y":1.25}, + {"x":11, "y":1.25}, + {"x":12, "y":1.25}, + {"x":13, "y":1.25, "w":2}, + {"x":15, "y":1.25}, + {"x":0, "y":2.25, "w":1.5}, + {"x":1.5, "y":2.25}, + {"x":2.5, "y":2.25}, + {"x":3.5, "y":2.25}, + {"x":4.5, "y":2.25}, + {"x":5.5, "y":2.25}, + {"x":6.5, "y":2.25}, + {"x":7.5, "y":2.25}, + {"x":8.5, "y":2.25}, + {"x":9.5, "y":2.25}, + {"x":10.5, "y":2.25}, + {"x":11.5, "y":2.25}, + {"x":12.5, "y":2.25}, + {"x":13.5, "y":2.25, "w":1.5}, + {"x":15, "y":2.25}, + {"x":0, "y":3.25, "w":1.75}, + {"x":1.75, "y":3.25}, + {"x":2.75, "y":3.25}, + {"x":3.75, "y":3.25}, + {"x":4.75, "y":3.25}, + {"x":5.75, "y":3.25}, + {"x":6.75, "y":3.25}, + {"x":7.75, "y":3.25}, + {"x":8.75, "y":3.25}, + {"x":9.75, "y":3.25}, + {"x":10.75, "y":3.25}, + {"x":11.75, "y":3.25}, + {"x":12.75, "y":3.25, "w":2.25}, + {"x":15, "y":3.25}, + {"x":0, "y":4.25, "w":2.25}, + {"x":2.25, "y":4.25}, + {"x":3.25, "y":4.25}, + {"x":4.25, "y":4.25}, + {"x":5.25, "y":4.25}, + {"x":6.25, "y":4.25}, + {"x":7.25, "y":4.25}, + {"x":8.25, "y":4.25}, + {"x":9.25, "y":4.25}, + {"x":10.25, "y":4.25}, + {"x":11.25, "y":4.25}, + {"x":12.25, "y":4.25, "w":1.75}, + {"x":14, "y":4.25}, + {"x":0, "y":5.25, "w":1.25}, + {"x":1.25, "y":5.25, "w":1.25}, + {"x":2.5, "y":5.25, "w":1.25}, + {"x":3.75, "y":5.25, "w":6.25}, + {"x":10, "y":5.25, "w":1.25}, + {"x":11.25, "y":5.25, "w":1.25}, + {"x":13, "y":5.25}, + {"x":14, "y":5.25}, + {"x":15, "y":5.25} + ] + } + } +} diff --git a/keyboards/owlab/jelly_epoch/hotswap/keymaps/default/keymap.c b/keyboards/owlab/jelly_epoch/hotswap/keymaps/default/keymap.c new file mode 100644 index 000000000000..93d9ec204696 --- /dev/null +++ b/keyboards/owlab/jelly_epoch/hotswap/keymaps/default/keymap.c @@ -0,0 +1,37 @@ +/* +Copyright 2021 owlab + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_END, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_RMOD,RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/owlab/jelly_epoch/hotswap/keymaps/via/keymap.c b/keyboards/owlab/jelly_epoch/hotswap/keymaps/via/keymap.c new file mode 100644 index 000000000000..a78ca0a4c6a3 --- /dev/null +++ b/keyboards/owlab/jelly_epoch/hotswap/keymaps/via/keymap.c @@ -0,0 +1,53 @@ +/* +Copyright 2021 owlab + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_END, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_RMOD,RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/owlab/jelly_epoch/hotswap/keymaps/via/rules.mk b/keyboards/owlab/jelly_epoch/hotswap/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/owlab/jelly_epoch/hotswap/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/owlab/jelly_epoch/hotswap/readme.md b/keyboards/owlab/jelly_epoch/hotswap/readme.md new file mode 100644 index 000000000000..93aa42060bc7 --- /dev/null +++ b/keyboards/owlab/jelly_epoch/hotswap/readme.md @@ -0,0 +1,21 @@ +# Jelly Epoch - hotswap PCB + +![jelly](https://i.imgur.com/Hs7tFCgl.jpg) + +A 75% made by Owlab. + +* Keyboard Maintainer: [owlab](https://github.com/owlab-git), [kb-elmo](https://github.com/kb-elmo) +* Hardware Supported: Jelly Epoch hotswap PCB +* Hardware Availability: Ended groupbuy: https://www.popkeyboard.com/products/jrrgvdsyu47wer + +Make example for this keyboard (after setting up your build environment): + + make owlab/jelly_epoch/hotswap:default + +Flashing example for this keyboard: + + make owlab/jelly_epoch/hotswap:default:flash + +**Bootloader:** Press the physical reset button on the bottom side of the PCB (labeled SW1) or hold down ESC while plugging in the board. + +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/owlab/jelly_epoch/hotswap/rules.mk b/keyboards/owlab/jelly_epoch/hotswap/rules.mk new file mode 100644 index 000000000000..436695bbb41d --- /dev/null +++ b/keyboards/owlab/jelly_epoch/hotswap/rules.mk @@ -0,0 +1,19 @@ +# MCU name +MCU = STM32F303 + +# Bootloader selection +BOOTLOADER = stm32-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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/owlab/jelly_epoch/soldered/config.h b/keyboards/owlab/jelly_epoch/soldered/config.h new file mode 100644 index 000000000000..cd27b71dd48d --- /dev/null +++ b/keyboards/owlab/jelly_epoch/soldered/config.h @@ -0,0 +1,65 @@ +/* +Copyright 2021 owlab + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter*/ +#define VENDOR_ID 0x4F53 //0x4F53 OS for owl studio +#define PRODUCT_ID 0x4A53 //0x4A4C JL for jelly, 0x4A53 JS for jelly solder +#define DEVICE_VER 0x0001 +#define MANUFACTURER OwLab +#define PRODUCT Jelly Epoch + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 14 + +/* Keyboard Matrix Assignments */ +#define MATRIX_ROW_PINS { B0, B1, B2, B3, A15, B10 } +#define MATRIX_COL_PINS { A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, B11, B8, B9, C13 } + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* NKRO */ +#ifdef NKRO_ENABLE +# define FORCE_NKRO +#endif + +/* RGB Strip*/ +#define RGB_DI_PIN B15 +#ifdef RGB_DI_PIN +# define RGBLIGHT_EFFECT_ALTERNATING +# define RGBLIGHT_EFFECT_BREATHING +# define RGBLIGHT_EFFECT_CHRISTMAS +# define RGBLIGHT_EFFECT_KNIGHT +# define RGBLIGHT_EFFECT_RAINBOW_MOOD +# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +# define RGBLIGHT_EFFECT_SNAKE +# define RGBLIGHT_EFFECT_STATIC_GRADIENT +# define RGBLIGHT_EFFECT_TWINKLE +# define RGBLED_NUM 24 +# define RGBLIGHT_HUE_STEP 8 +# define RGBLIGHT_SAT_STEP 8 +# define RGBLIGHT_VAL_STEP 10 +# define RGBLIGHT_LIMIT_VAL 255 +#endif diff --git a/keyboards/owlab/jelly_epoch/soldered/info.json b/keyboards/owlab/jelly_epoch/soldered/info.json new file mode 100644 index 000000000000..357634b4818c --- /dev/null +++ b/keyboards/owlab/jelly_epoch/soldered/info.json @@ -0,0 +1,265 @@ +{ + "keyboard_name": "jelly", + "url": "https://www.popkeyboard.com/products/jrrgvdsyu47wer", + "maintainer": "Owlab", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"x":0, "y":0}, + {"x":1.25, "y":0}, + {"x":2.25, "y":0}, + {"x":3.25, "y":0}, + {"x":4.25, "y":0}, + {"x":5.5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.75, "y":0}, + {"x":10.75, "y":0}, + {"x":11.75, "y":0}, + {"x":12.75, "y":0}, + {"x":14, "y":0}, + {"x":15, "y":0}, + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2, "y":1.25}, + {"x":3, "y":1.25}, + {"x":4, "y":1.25}, + {"x":5, "y":1.25}, + {"x":6, "y":1.25}, + {"x":7, "y":1.25}, + {"x":8, "y":1.25}, + {"x":9, "y":1.25}, + {"x":10, "y":1.25}, + {"x":11, "y":1.25}, + {"x":12, "y":1.25}, + {"x":13, "y":1.25}, + {"x":14, "y":1.25}, + {"x":15, "y":1.25}, + {"x":0, "y":2.25, "w":1.5}, + {"x":1.5, "y":2.25}, + {"x":2.5, "y":2.25}, + {"x":3.5, "y":2.25}, + {"x":4.5, "y":2.25}, + {"x":5.5, "y":2.25}, + {"x":6.5, "y":2.25}, + {"x":7.5, "y":2.25}, + {"x":8.5, "y":2.25}, + {"x":9.5, "y":2.25}, + {"x":10.5, "y":2.25}, + {"x":11.5, "y":2.25}, + {"x":12.5, "y":2.25}, + {"x":13.5, "y":2.25, "w":1.5}, + {"x":15, "y":2.25}, + {"x":0, "y":3.25, "w":1.75}, + {"x":1.75, "y":3.25}, + {"x":2.75, "y":3.25}, + {"x":3.75, "y":3.25}, + {"x":4.75, "y":3.25}, + {"x":5.75, "y":3.25}, + {"x":6.75, "y":3.25}, + {"x":7.75, "y":3.25}, + {"x":8.75, "y":3.25}, + {"x":9.75, "y":3.25}, + {"x":10.75, "y":3.25}, + {"x":11.75, "y":3.25}, + {"x":12.75, "y":3.25, "w":2.25}, + {"x":15, "y":3.25}, + {"x":0, "y":4.25, "w":1.25}, + {"x":1.25, "y":4.25}, + {"x":2.25, "y":4.25}, + {"x":3.25, "y":4.25}, + {"x":4.25, "y":4.25}, + {"x":5.25, "y":4.25}, + {"x":6.25, "y":4.25}, + {"x":7.25, "y":4.25}, + {"x":8.25, "y":4.25}, + {"x":9.25, "y":4.25}, + {"x":10.25, "y":4.25}, + {"x":11.25, "y":4.25}, + {"x":12.25, "y":4.25, "w":1.75}, + {"x":14, "y":4.25}, + {"x":0, "y":5.25, "w":1.25}, + {"x":1.25, "y":5.25, "w":1.25}, + {"x":2.5, "y":5.25, "w":1.25}, + {"x":3.75, "y":5.25, "w":6.25}, + {"x":10, "y":5.25, "w":1.25}, + {"x":11.25, "y":5.25, "w":1.25}, + {"x":13, "y":5.25}, + {"x":14, "y":5.25}, + {"x":15, "y":5.25} + ] + }, + "LAYOUT_75_ansi": { + "layout": [ + {"x":0, "y":0}, + {"x":1.25, "y":0}, + {"x":2.25, "y":0}, + {"x":3.25, "y":0}, + {"x":4.25, "y":0}, + {"x":5.5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.75, "y":0}, + {"x":10.75, "y":0}, + {"x":11.75, "y":0}, + {"x":12.75, "y":0}, + {"x":14, "y":0}, + {"x":15, "y":0}, + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2, "y":1.25}, + {"x":3, "y":1.25}, + {"x":4, "y":1.25}, + {"x":5, "y":1.25}, + {"x":6, "y":1.25}, + {"x":7, "y":1.25}, + {"x":8, "y":1.25}, + {"x":9, "y":1.25}, + {"x":10, "y":1.25}, + {"x":11, "y":1.25}, + {"x":12, "y":1.25}, + {"x":13, "y":1.25, "w":2}, + {"x":15, "y":1.25}, + {"x":0, "y":2.25, "w":1.5}, + {"x":1.5, "y":2.25}, + {"x":2.5, "y":2.25}, + {"x":3.5, "y":2.25}, + {"x":4.5, "y":2.25}, + {"x":5.5, "y":2.25}, + {"x":6.5, "y":2.25}, + {"x":7.5, "y":2.25}, + {"x":8.5, "y":2.25}, + {"x":9.5, "y":2.25}, + {"x":10.5, "y":2.25}, + {"x":11.5, "y":2.25}, + {"x":12.5, "y":2.25}, + {"x":13.5, "y":2.25, "w":1.5}, + {"x":15, "y":2.25}, + {"x":0, "y":3.25, "w":1.75}, + {"x":1.75, "y":3.25}, + {"x":2.75, "y":3.25}, + {"x":3.75, "y":3.25}, + {"x":4.75, "y":3.25}, + {"x":5.75, "y":3.25}, + {"x":6.75, "y":3.25}, + {"x":7.75, "y":3.25}, + {"x":8.75, "y":3.25}, + {"x":9.75, "y":3.25}, + {"x":10.75, "y":3.25}, + {"x":11.75, "y":3.25}, + {"x":12.75, "y":3.25, "w":2.25}, + {"x":15, "y":3.25}, + {"x":0, "y":4.25, "w":2.25}, + {"x":2.25, "y":4.25}, + {"x":3.25, "y":4.25}, + {"x":4.25, "y":4.25}, + {"x":5.25, "y":4.25}, + {"x":6.25, "y":4.25}, + {"x":7.25, "y":4.25}, + {"x":8.25, "y":4.25}, + {"x":9.25, "y":4.25}, + {"x":10.25, "y":4.25}, + {"x":11.25, "y":4.25}, + {"x":12.25, "y":4.25, "w":1.75}, + {"x":14, "y":4.25}, + {"x":0, "y":5.25, "w":1.25}, + {"x":1.25, "y":5.25, "w":1.25}, + {"x":2.5, "y":5.25, "w":1.25}, + {"x":3.75, "y":5.25, "w":6.25}, + {"x":10, "y":5.25, "w":1.25}, + {"x":11.25, "y":5.25, "w":1.25}, + {"x":13, "y":5.25}, + {"x":14, "y":5.25}, + {"x":15, "y":5.25} + ] + }, + "LAYOUT_75_iso": { + "layout": [ + {"x":0, "y":0}, + {"x":1.25, "y":0}, + {"x":2.25, "y":0}, + {"x":3.25, "y":0}, + {"x":4.25, "y":0}, + {"x":5.5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.75, "y":0}, + {"x":10.75, "y":0}, + {"x":11.75, "y":0}, + {"x":12.75, "y":0}, + {"x":14, "y":0}, + {"x":15, "y":0}, + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2, "y":1.25}, + {"x":3, "y":1.25}, + {"x":4, "y":1.25}, + {"x":5, "y":1.25}, + {"x":6, "y":1.25}, + {"x":7, "y":1.25}, + {"x":8, "y":1.25}, + {"x":9, "y":1.25}, + {"x":10, "y":1.25}, + {"x":11, "y":1.25}, + {"x":12, "y":1.25}, + {"x":13, "y":1.25, "w":2}, + {"x":15, "y":1.25}, + {"x":0, "y":2.25, "w":1.5}, + {"x":1.5, "y":2.25}, + {"x":2.5, "y":2.25}, + {"x":3.5, "y":2.25}, + {"x":4.5, "y":2.25}, + {"x":5.5, "y":2.25}, + {"x":6.5, "y":2.25}, + {"x":7.5, "y":2.25}, + {"x":8.5, "y":2.25}, + {"x":9.5, "y":2.25}, + {"x":10.5, "y":2.25}, + {"x":11.5, "y":2.25}, + {"x":12.5, "y":2.25}, + {"x":15, "y":2.25}, + {"x":0, "y":3.25, "w":1.75}, + {"x":1.75, "y":3.25}, + {"x":2.75, "y":3.25}, + {"x":3.75, "y":3.25}, + {"x":4.75, "y":3.25}, + {"x":5.75, "y":3.25}, + {"x":6.75, "y":3.25}, + {"x":7.75, "y":3.25}, + {"x":8.75, "y":3.25}, + {"x":9.75, "y":3.25}, + {"x":10.75, "y":3.25}, + {"x":11.75, "y":3.25}, + {"x":12.75, "y":3.25}, + {"x":13.75, "y":2.25, "w":1.25, "h":2}, + {"x":15, "y":3.25}, + {"x":0, "y":4.25, "w":1.25}, + {"x":1.25, "y":4.25}, + {"x":2.25, "y":4.25}, + {"x":3.25, "y":4.25}, + {"x":4.25, "y":4.25}, + {"x":5.25, "y":4.25}, + {"x":6.25, "y":4.25}, + {"x":7.25, "y":4.25}, + {"x":8.25, "y":4.25}, + {"x":9.25, "y":4.25}, + {"x":10.25, "y":4.25}, + {"x":11.25, "y":4.25}, + {"x":12.25, "y":4.25, "w":1.75}, + {"x":14, "y":4.25}, + {"x":0, "y":5.25, "w":1.25}, + {"x":1.25, "y":5.25, "w":1.25}, + {"x":2.5, "y":5.25, "w":1.25}, + {"x":3.75, "y":5.25, "w":6.25}, + {"x":10, "y":5.25, "w":1.25}, + {"x":11.25, "y":5.25, "w":1.25}, + {"x":13, "y":5.25}, + {"x":14, "y":5.25}, + {"x":15, "y":5.25} + ] + } + } +} diff --git a/keyboards/owlab/jelly_epoch/soldered/keymaps/default/keymap.c b/keyboards/owlab/jelly_epoch/soldered/keymaps/default/keymap.c new file mode 100644 index 000000000000..fa024790d9ec --- /dev/null +++ b/keyboards/owlab/jelly_epoch/soldered/keymaps/default/keymap.c @@ -0,0 +1,37 @@ +/* +Copyright 2021 owlab + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_75_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_END, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_75_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_RMOD,RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/owlab/jelly_epoch/soldered/keymaps/via/keymap.c b/keyboards/owlab/jelly_epoch/soldered/keymaps/via/keymap.c new file mode 100644 index 000000000000..29bd0a08e31c --- /dev/null +++ b/keyboards/owlab/jelly_epoch/soldered/keymaps/via/keymap.c @@ -0,0 +1,53 @@ +/* +Copyright 2021 owlab + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_END, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_RMOD,RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/owlab/jelly_epoch/soldered/keymaps/via/rules.mk b/keyboards/owlab/jelly_epoch/soldered/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/owlab/jelly_epoch/soldered/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/owlab/jelly_epoch/soldered/readme.md b/keyboards/owlab/jelly_epoch/soldered/readme.md new file mode 100644 index 000000000000..1b718f890206 --- /dev/null +++ b/keyboards/owlab/jelly_epoch/soldered/readme.md @@ -0,0 +1,21 @@ +# Jelly Epoch - soldered PCB + +![jelly](https://i.imgur.com/Hs7tFCgl.jpg) + +A 75% made by Owlab. + +* Keyboard Maintainer: [owlab](https://github.com/owlab-git), [kb-elmo](https://github.com/kb-elmo) +* Hardware Supported: Jelly Epoch soldered PCB +* Hardware Availability: Ended groupbuy: https://www.popkeyboard.com/products/jrrgvdsyu47wer + +Make example for this keyboard (after setting up your build environment): + + make owlab/jelly_epoch/soldered:default + +Flashing example for this keyboard: + + make owlab/jelly_epoch/soldered:default:flash + +**Bootloader:** Press the physical reset button on the bottom side of the PCB (labeled SW1) or hold down ESC while plugging in the board. + +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/owlab/jelly_epoch/soldered/rules.mk b/keyboards/owlab/jelly_epoch/soldered/rules.mk new file mode 100644 index 000000000000..436695bbb41d --- /dev/null +++ b/keyboards/owlab/jelly_epoch/soldered/rules.mk @@ -0,0 +1,19 @@ +# MCU name +MCU = STM32F303 + +# Bootloader selection +BOOTLOADER = stm32-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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/owlab/jelly_epoch/soldered/soldered.c b/keyboards/owlab/jelly_epoch/soldered/soldered.c new file mode 100644 index 000000000000..a1af466d292c --- /dev/null +++ b/keyboards/owlab/jelly_epoch/soldered/soldered.c @@ -0,0 +1,18 @@ +/* +Copyright 2021 owlab + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "soldered.h" diff --git a/keyboards/owlab/jelly_epoch/soldered/soldered.h b/keyboards/owlab/jelly_epoch/soldered/soldered.h new file mode 100644 index 000000000000..e69e258027b0 --- /dev/null +++ b/keyboards/owlab/jelly_epoch/soldered/soldered.h @@ -0,0 +1,70 @@ +/* +Copyright 2021 owlab + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +#define ____ KC_NO + +#define LAYOUT_all( \ + K000, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K412, K413, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K213, K113, K511, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K313, K510, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K509, \ + K400, K503, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K513, \ + K500, K501, K502, K504, K505, K506, K507, K508, K512 \ +) { \ + { K000, ____, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013}, \ + { 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, K212, K213}, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313}, \ + { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413}, \ + { K500, K501, K502, K503, K504, K505, K506, K507, K508, K509, K510, K511, K512, K513} \ +} + +#define LAYOUT_75_ansi( \ + K000, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K412, K413, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K511, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K313, K510, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K509, \ + K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K513, \ + K500, K501, K502, K504, K505, K506, K507, K508, K512 \ +) { \ + { K000, ____, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013}, \ + { 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, K212, ____}, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313}, \ + { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413}, \ + { K500, K501, K502, ____, K504, ____, K506, K507, K508, K509, K510, K511, K512, K513} \ +} + +#define LAYOUT_75_iso( \ + K000, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K412, K413, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K511, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K510, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K312, K509, \ + K400, K503, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K513, \ + K500, K501, K502, K504, K505, K506, K507, K508, K512 \ +) { \ + { K000, ____, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013}, \ + { 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, K212, ____}, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313}, \ + { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413}, \ + { K500, K501, K502, K503, K504, K505, K506, K507, K508, K509, K510, K511, K512, K513} \ +} diff --git a/keyboards/owlab/suit80/ansi/ansi.c b/keyboards/owlab/suit80/ansi/ansi.c new file mode 100644 index 000000000000..7e75773f1dcb --- /dev/null +++ b/keyboards/owlab/suit80/ansi/ansi.c @@ -0,0 +1,17 @@ +/* +Copyright 2021 owlab + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "ansi.h" diff --git a/keyboards/owlab/suit80/ansi/ansi.h b/keyboards/owlab/suit80/ansi/ansi.h new file mode 100644 index 000000000000..d01296f2c1d4 --- /dev/null +++ b/keyboards/owlab/suit80/ansi/ansi.h @@ -0,0 +1,36 @@ +/* +Copyright 2021 owlab + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_ansi( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K114, K214, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K313, K314, K412, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K413, K414, K510, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, \ + K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K511, \ + K500, K501, K502, K504, K507, K508, K509, K512, K513, K514 \ +) { \ + { 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, K114 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314 }, \ + { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K414 }, \ + { K500, K501, K502, KC_NO, K504, KC_NO, KC_NO, K507, K508, K509, K510, K511, K512, K513, K514 } \ +} diff --git a/keyboards/owlab/suit80/ansi/config.h b/keyboards/owlab/suit80/ansi/config.h new file mode 100644 index 000000000000..02c44da2126e --- /dev/null +++ b/keyboards/owlab/suit80/ansi/config.h @@ -0,0 +1,46 @@ +/* +Copyright 2021 owlab + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4F53 //0x4F53 OS for owl studio +#define PRODUCT_ID 0x5355 //0x5355 SU for SUIT +#define DEVICE_VER 0x0001 +#define MANUFACTURER OwLab +#define PRODUCT SUIT80 + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 15 + +/* Keyboard Matrix Assignments */ +#define MATRIX_ROW_PINS { E6, B0, B7, D0, D1, D2 } +#define MATRIX_COL_PINS { D5, D4, D6, D7, B4, B5, B6, C6, C7, F4, F7, F6, F5, F1, F0 } + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* NKRO */ +#ifdef NKRO_ENABLE +# define FORCE_NKRO +#endif \ No newline at end of file diff --git a/keyboards/owlab/suit80/ansi/info.json b/keyboards/owlab/suit80/ansi/info.json new file mode 100644 index 000000000000..b5833c6a600a --- /dev/null +++ b/keyboards/owlab/suit80/ansi/info.json @@ -0,0 +1,98 @@ +{ + "keyboard_name": "suit80", + "url": "", + "maintainer": "Owlab", + "layouts": { + "LAYOUT_ansi": { + "layout": [ + {"x":0, "y":0}, + {"x":1.25, "y":0}, + {"x":2.25, "y":0}, + {"x":3.25, "y":0}, + {"x":4.25, "y":0}, + {"x":5.5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.75, "y":0}, + {"x":10.75, "y":0}, + {"x":11.75, "y":0}, + {"x":12.75, "y":0}, + {"x":14, "y":0}, + {"x":15.25, "y":0}, + {"x":16.25, "y":0}, + {"x":17.25, "y":0}, + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2, "y":1.25}, + {"x":3, "y":1.25}, + {"x":4, "y":1.25}, + {"x":5, "y":1.25}, + {"x":6, "y":1.25}, + {"x":7, "y":1.25}, + {"x":8, "y":1.25}, + {"x":9, "y":1.25}, + {"x":10, "y":1.25}, + {"x":11, "y":1.25}, + {"x":12, "y":1.25}, + {"x":13, "y":1.25, "w":2}, + {"x":15.25, "y":1.25}, + {"x":16.25, "y":1.25}, + {"x":17.25, "y":1.25}, + {"x":0, "y":2.25, "w":1.5}, + {"x":1.5, "y":2.25}, + {"x":2.5, "y":2.25}, + {"x":3.5, "y":2.25}, + {"x":4.5, "y":2.25}, + {"x":5.5, "y":2.25}, + {"x":6.5, "y":2.25}, + {"x":7.5, "y":2.25}, + {"x":8.5, "y":2.25}, + {"x":9.5, "y":2.25}, + {"x":10.5, "y":2.25}, + {"x":11.5, "y":2.25}, + {"x":12.5, "y":2.25}, + {"x":13.5, "y":2.25, "w":1.5}, + {"x":15.25, "y":2.25}, + {"x":16.25, "y":2.25}, + {"x":17.25, "y":2.25}, + {"x":0, "y":3.25, "w":1.75}, + {"x":1.75, "y":3.25}, + {"x":2.75, "y":3.25}, + {"x":3.75, "y":3.25}, + {"x":4.75, "y":3.25}, + {"x":5.75, "y":3.25}, + {"x":6.75, "y":3.25}, + {"x":7.75, "y":3.25}, + {"x":8.75, "y":3.25}, + {"x":9.75, "y":3.25}, + {"x":10.75, "y":3.25}, + {"x":11.75, "y":3.25}, + {"x":12.75, "y":3.25, "w":2.25}, + {"x":0, "y":4.25, "w":2.25}, + {"x":2.25, "y":4.25}, + {"x":3.25, "y":4.25}, + {"x":4.25, "y":4.25}, + {"x":5.25, "y":4.25}, + {"x":6.25, "y":4.25}, + {"x":7.25, "y":4.25}, + {"x":8.25, "y":4.25}, + {"x":9.25, "y":4.25}, + {"x":10.25, "y":4.25}, + {"x":11.25, "y":4.25}, + {"x":12.25, "y":4.25, "w":2.75}, + {"x":16.25, "y":4.25}, + {"x":0, "y":5.25, "w":1.5}, + {"x":1.5, "y":5.25}, + {"x":2.5, "y":5.25, "w":1.5}, + {"x":4, "y":5.25, "w":7}, + {"x":11, "y":5.25, "w":1.5}, + {"x":12.5, "y":5.25}, + {"x":13.5, "y":5.25, "w":1.5}, + {"x":15.25, "y":5.25}, + {"x":16.25, "y":5.25}, + {"x":17.25, "y":5.25} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/owlab/suit80/ansi/keymaps/default/keymap.c b/keyboards/owlab/suit80/ansi/keymaps/default/keymap.c new file mode 100644 index 000000000000..e9ab5f323f47 --- /dev/null +++ b/keyboards/owlab/suit80/ansi/keymaps/default/keymap.c @@ -0,0 +1,41 @@ +/* +Copyright 2021 owlab + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + + + [0] = LAYOUT_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT + ), + [1] = LAYOUT_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/owlab/suit80/ansi/keymaps/via/keymap.c b/keyboards/owlab/suit80/ansi/keymaps/via/keymap.c new file mode 100644 index 000000000000..d438aea40965 --- /dev/null +++ b/keyboards/owlab/suit80/ansi/keymaps/via/keymap.c @@ -0,0 +1,57 @@ +/* +Copyright 2021 owlab + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + + [0] = LAYOUT_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT + ), + [1] = LAYOUT_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/owlab/suit80/ansi/keymaps/via/rules.mk b/keyboards/owlab/suit80/ansi/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/owlab/suit80/ansi/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/owlab/suit80/ansi/readme.md b/keyboards/owlab/suit80/ansi/readme.md new file mode 100644 index 000000000000..7d10fe1a57d0 --- /dev/null +++ b/keyboards/owlab/suit80/ansi/readme.md @@ -0,0 +1,21 @@ +# Suit80 - ANSI PCB + +![suit80](https://i.imgur.com/0QN23oc.png) + +A 80% made by Owlab. + +* Keyboard Maintainer: [owlab](https://github.com/owlab-git) +* Hardware Supported: Suit80 ANSI PCB +* Hardware Availability: Ended groupbuy: https://www.zfrontier.com/app/flow/2Q1YEKykXmYZ + +Make example for this keyboard (after setting up your build environment): + + make owlab/suit80/ansi:default + +Flashing example for this keyboard: + + make owlab/suit80/ansi:default:flash + +**Bootloader:** Press the physical reset button on the bottom side of the PCB (labeled SW1) or hold down ESC while plugging in the board. + +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/owlab/suit80/ansi/rules.mk b/keyboards/owlab/suit80/ansi/rules.mk new file mode 100644 index 000000000000..776892f79092 --- /dev/null +++ b/keyboards/owlab/suit80/ansi/rules.mk @@ -0,0 +1,19 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 \ No newline at end of file diff --git a/keyboards/owlab/suit80/iso/config.h b/keyboards/owlab/suit80/iso/config.h new file mode 100644 index 000000000000..22968bac1585 --- /dev/null +++ b/keyboards/owlab/suit80/iso/config.h @@ -0,0 +1,46 @@ +/* +Copyright 2021 owlab + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4F53 // 0x4F53 OS for owl studio +#define PRODUCT_ID 0x5349 //0x5355 SI for SUIT ISO +#define DEVICE_VER 0x0001 +#define MANUFACTURER OwLab +#define PRODUCT SUIT80 ISO + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 15 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { E6, B0, B7, D0, D1, D2 } +#define MATRIX_COL_PINS { D5, D4, D6, D7, B4, B5, B6, C6, C7, F4, F7, F6, F5, F1, F0 } + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* NKRO */ +#ifdef NKRO_ENABLE +# define FORCE_NKRO +#endif diff --git a/keyboards/owlab/suit80/iso/info.json b/keyboards/owlab/suit80/iso/info.json new file mode 100644 index 000000000000..7c911fe361ac --- /dev/null +++ b/keyboards/owlab/suit80/iso/info.json @@ -0,0 +1,192 @@ +{ + "keyboard_name": "suit80", + "url": "", + "maintainer": "Owlab", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"x":0, "y":0}, + {"x":1.25, "y":0}, + {"x":2.25, "y":0}, + {"x":3.25, "y":0}, + {"x":4.25, "y":0}, + {"x":5.5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.75, "y":0}, + {"x":10.75, "y":0}, + {"x":11.75, "y":0}, + {"x":12.75, "y":0}, + {"x":14, "y":0}, + {"x":15.25, "y":0}, + {"x":16.25, "y":0}, + {"x":17.25, "y":0}, + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2, "y":1.25}, + {"x":3, "y":1.25}, + {"x":4, "y":1.25}, + {"x":5, "y":1.25}, + {"x":6, "y":1.25}, + {"x":7, "y":1.25}, + {"x":8, "y":1.25}, + {"x":9, "y":1.25}, + {"x":10, "y":1.25}, + {"x":11, "y":1.25}, + {"x":12, "y":1.25}, + {"x":13, "y":1.25}, + {"x":14, "y":1.25}, + {"x":15.25, "y":1.25}, + {"x":16.25, "y":1.25}, + {"x":17.25, "y":1.25}, + {"x":0, "y":2.25, "w":1.5}, + {"x":1.5, "y":2.25}, + {"x":2.5, "y":2.25}, + {"x":3.5, "y":2.25}, + {"x":4.5, "y":2.25}, + {"x":5.5, "y":2.25}, + {"x":6.5, "y":2.25}, + {"x":7.5, "y":2.25}, + {"x":8.5, "y":2.25}, + {"x":9.5, "y":2.25}, + {"x":10.5, "y":2.25}, + {"x":11.5, "y":2.25}, + {"x":12.5, "y":2.25}, + {"x":15.25, "y":2.25}, + {"x":16.25, "y":2.25}, + {"x":17.25, "y":2.25}, + {"x":0, "y":3.25, "w":1.75}, + {"x":1.75, "y":3.25}, + {"x":2.75, "y":3.25}, + {"x":3.75, "y":3.25}, + {"x":4.75, "y":3.25}, + {"x":5.75, "y":3.25}, + {"x":6.75, "y":3.25}, + {"x":7.75, "y":3.25}, + {"x":8.75, "y":3.25}, + {"x":9.75, "y":3.25}, + {"x":10.75, "y":3.25}, + {"x":11.75, "y":3.25}, + {"x":12.75, "y":3.25}, + {"x":13.75, "y":2.25, "w":1.25, "h":2}, + {"x":0, "y":4.25, "w":1.25}, + {"x":1.25, "y":4.25}, + {"x":2.25, "y":4.25}, + {"x":3.25, "y":4.25}, + {"x":4.25, "y":4.25}, + {"x":5.25, "y":4.25}, + {"x":6.25, "y":4.25}, + {"x":7.25, "y":4.25}, + {"x":8.25, "y":4.25}, + {"x":9.25, "y":4.25}, + {"x":10.25, "y":4.25}, + {"x":11.25, "y":4.25}, + {"x":12.25, "y":4.25, "w":2.75}, + {"x":16.25, "y":4.25}, + {"x":0, "y":5.25, "w":1.5}, + {"x":1.5, "y":5.25}, + {"x":2.5, "y":5.25, "w":1.5}, + {"x":4, "y":5.25, "w":7}, + {"x":11, "y":5.25, "w":1.5}, + {"x":12.5, "y":5.25}, + {"x":13.5, "y":5.25, "w":1.5}, + {"x":15.25, "y":5.25}, + {"x":16.25, "y":5.25}, + {"x":17.25, "y":5.25} + ] + }, + "LAYOUT_iso": { + "layout": [ + {"x":0, "y":0}, + {"x":1.25, "y":0}, + {"x":2.25, "y":0}, + {"x":3.25, "y":0}, + {"x":4.25, "y":0}, + {"x":5.5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.75, "y":0}, + {"x":10.75, "y":0}, + {"x":11.75, "y":0}, + {"x":12.75, "y":0}, + {"x":14, "y":0}, + {"x":15.25, "y":0}, + {"x":16.25, "y":0}, + {"x":17.25, "y":0}, + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2, "y":1.25}, + {"x":3, "y":1.25}, + {"x":4, "y":1.25}, + {"x":5, "y":1.25}, + {"x":6, "y":1.25}, + {"x":7, "y":1.25}, + {"x":8, "y":1.25}, + {"x":9, "y":1.25}, + {"x":10, "y":1.25}, + {"x":11, "y":1.25}, + {"x":12, "y":1.25}, + {"x":13, "y":1.25, "w":2}, + {"x":15.25, "y":1.25}, + {"x":16.25, "y":1.25}, + {"x":17.25, "y":1.25}, + {"x":0, "y":2.25, "w":1.5}, + {"x":1.5, "y":2.25}, + {"x":2.5, "y":2.25}, + {"x":3.5, "y":2.25}, + {"x":4.5, "y":2.25}, + {"x":5.5, "y":2.25}, + {"x":6.5, "y":2.25}, + {"x":7.5, "y":2.25}, + {"x":8.5, "y":2.25}, + {"x":9.5, "y":2.25}, + {"x":10.5, "y":2.25}, + {"x":11.5, "y":2.25}, + {"x":12.5, "y":2.25}, + {"x":15.25, "y":2.25}, + {"x":16.25, "y":2.25}, + {"x":17.25, "y":2.25}, + {"x":0, "y":3.25, "w":1.75}, + {"x":1.75, "y":3.25}, + {"x":2.75, "y":3.25}, + {"x":3.75, "y":3.25}, + {"x":4.75, "y":3.25}, + {"x":5.75, "y":3.25}, + {"x":6.75, "y":3.25}, + {"x":7.75, "y":3.25}, + {"x":8.75, "y":3.25}, + {"x":9.75, "y":3.25}, + {"x":10.75, "y":3.25}, + {"x":11.75, "y":3.25}, + {"x":12.75, "y":3.25}, + {"x":13.75, "y":2.25, "w":1.25, "h":2}, + {"x":0, "y":4.25, "w":1.25}, + {"x":1.25, "y":4.25}, + {"x":2.25, "y":4.25}, + {"x":3.25, "y":4.25}, + {"x":4.25, "y":4.25}, + {"x":5.25, "y":4.25}, + {"x":6.25, "y":4.25}, + {"x":7.25, "y":4.25}, + {"x":8.25, "y":4.25}, + {"x":9.25, "y":4.25}, + {"x":10.25, "y":4.25}, + {"x":11.25, "y":4.25}, + {"x":12.25, "y":4.25, "w":2.75}, + {"x":16.25, "y":4.25}, + {"x":0, "y":5.25, "w":1.5}, + {"x":1.5, "y":5.25}, + {"x":2.5, "y":5.25, "w":1.5}, + {"x":4, "y":5.25, "w":7}, + {"x":11, "y":5.25, "w":1.5}, + {"x":12.5, "y":5.25}, + {"x":13.5, "y":5.25, "w":1.5}, + {"x":15.25, "y":5.25}, + {"x":16.25, "y":5.25}, + {"x":17.25, "y":5.25} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/owlab/suit80/iso/iso.c b/keyboards/owlab/suit80/iso/iso.c new file mode 100644 index 000000000000..e8f326d37ec5 --- /dev/null +++ b/keyboards/owlab/suit80/iso/iso.c @@ -0,0 +1,19 @@ + + +/* +Copyright 2021 owlab + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "iso.h" diff --git a/keyboards/owlab/suit80/iso/iso.h b/keyboards/owlab/suit80/iso/iso.h new file mode 100644 index 000000000000..f50236d01a19 --- /dev/null +++ b/keyboards/owlab/suit80/iso/iso.h @@ -0,0 +1,52 @@ +/* +Copyright 2021 owlab + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_all( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K114, K214, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K213, K113, K313, K314, K412, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K413, K414, K510, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K506, K312, \ + K400, K503, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K511, \ + K500, K501, K502, K504, K507, K508, K509, K512, K513, K514 \ +) { \ + { 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, K114 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314 }, \ + { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K414 }, \ + { K500, K501, K502, K503, K504, KC_NO, K506, K507, K508, K509, K510, K511, K512, K513, K514 } \ +} + +#define LAYOUT_iso( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K114, K214, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K313, K314, K412, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K413, K414, K510, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K506, K312, \ + K400, K503, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K511, \ + K500, K501, K502, K504, K507, K508, K509, K512, K513, K514 \ +) { \ + { 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, K114 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, KC_NO, K214 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314 }, \ + { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K414 }, \ + { K500, K501, K502, K503, K504, KC_NO, K506, K507, K508, K509, K510, K511, K512, K513, K514 } \ +} diff --git a/keyboards/owlab/suit80/iso/keymaps/default/keymap.c b/keyboards/owlab/suit80/iso/keymaps/default/keymap.c new file mode 100644 index 000000000000..84cfcc4ad27b --- /dev/null +++ b/keyboards/owlab/suit80/iso/keymaps/default/keymap.c @@ -0,0 +1,41 @@ +/* +Copyright 2021 owlab + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_iso( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT + ), + [1] = LAYOUT_iso( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; + + diff --git a/keyboards/owlab/suit80/iso/keymaps/via/keymap.c b/keyboards/owlab/suit80/iso/keymaps/via/keymap.c new file mode 100644 index 000000000000..d392b797e833 --- /dev/null +++ b/keyboards/owlab/suit80/iso/keymaps/via/keymap.c @@ -0,0 +1,56 @@ +/* +Copyright 2021 owlab + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT + ), + [1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/owlab/suit80/iso/keymaps/via/rules.mk b/keyboards/owlab/suit80/iso/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/owlab/suit80/iso/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/owlab/suit80/iso/readme.md b/keyboards/owlab/suit80/iso/readme.md new file mode 100644 index 000000000000..c16dfa255df3 --- /dev/null +++ b/keyboards/owlab/suit80/iso/readme.md @@ -0,0 +1,21 @@ +# Suit80 - ISO PCB + +![suit80](https://i.imgur.com/wTUPZFB.jpg) + +A 80% made by Owlab. + +* Keyboard Maintainer: [owlab](https://github.com/owlab-git) +* Hardware Supported: Suit80 ISO PCB +* Hardware Availability: Ended groupbuy: https://www.zfrontier.com/app/flow/2Q1YEKykXmYZ + +Make example for this keyboard (after setting up your build environment): + + make owlab/suit80/iso:default + +Flashing example for this keyboard: + + make owlab/suit80/iso:default:flash + +**Bootloader:** Press the physical reset button on the bottom side of the PCB (labeled SW1) or hold down ESC while plugging in the board. + +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/owlab/suit80/iso/rules.mk b/keyboards/owlab/suit80/iso/rules.mk new file mode 100644 index 000000000000..776892f79092 --- /dev/null +++ b/keyboards/owlab/suit80/iso/rules.mk @@ -0,0 +1,19 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 \ No newline at end of file diff --git a/keyboards/owlab/voice65/hotswap/config.h b/keyboards/owlab/voice65/hotswap/config.h new file mode 100644 index 000000000000..42f97036b35f --- /dev/null +++ b/keyboards/owlab/voice65/hotswap/config.h @@ -0,0 +1,136 @@ +/* +Copyright 2021 kb-elmo + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4F53 +#define PRODUCT_ID 0x564F +#define DEVICE_VER 0x0001 +#define MANUFACTURER OwLab +#define PRODUCT Voice65 Hotswap + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* Keyboard Matrix Assignments */ +#define MATRIX_ROW_PINS { B0, B1, B2, B10, B11 } +#define MATRIX_COL_PINS { A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A15, B8, B9, B12, B13 } + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* NKRO */ +#ifdef NKRO_ENABLE +# define FORCE_NKRO +#endif + +/* RGB stripe */ +#define RGB_DI_PIN B15 +#ifdef RGB_DI_PIN +# define RGBLIGHT_EFFECT_ALTERNATING +# define RGBLIGHT_EFFECT_BREATHING +# define RGBLIGHT_EFFECT_CHRISTMAS +# define RGBLIGHT_EFFECT_KNIGHT +# define RGBLIGHT_EFFECT_RAINBOW_MOOD +# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +# define RGBLIGHT_EFFECT_SNAKE +# define RGBLIGHT_EFFECT_STATIC_GRADIENT +# define RGBLIGHT_EFFECT_TWINKLE +# define RGBLED_NUM 20 +# define RGBLIGHT_HUE_STEP 8 +# define RGBLIGHT_SAT_STEP 8 +# define RGBLIGHT_VAL_STEP 10 +# define RGBLIGHT_LIMIT_VAL 180 +# define OWL_VOLUME_RANGE 50 +#endif + +/* RGB matrix */ +#ifdef RGB_MATRIX_ENABLE +# define USE_I2CV2 +# define RGB_MATRIX_DISABLE_KEYCODES +# 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_KEYPRESSES +# define RGB_MATRIX_LED_PROCESS_LIMIT 4 +# define RGB_MATRIX_LED_FLUSH_LIMIT 26 +# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 +# define RGB_MATRIX_STARTUP_VAL 128 +# define DRIVER_ADDR_1 0b0110000 +# define DRIVER_COUNT 1 +# define DRIVER_LED_TOTAL 67 +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH +#endif + +/* Encoder */ +#define ENCODERS_PAD_A { B4 } +#define ENCODERS_PAD_B { B5 } +#define ENCODER_RESOLUTION 4 +#define TAP_CODE_DELAY 10 diff --git a/keyboards/owlab/voice65/hotswap/halconf.h b/keyboards/owlab/voice65/hotswap/halconf.h new file mode 100644 index 000000000000..f88be48211c2 --- /dev/null +++ b/keyboards/owlab/voice65/hotswap/halconf.h @@ -0,0 +1,21 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define HAL_USE_I2C TRUE + +#include_next diff --git a/keyboards/owlab/voice65/hotswap/hotswap.c b/keyboards/owlab/voice65/hotswap/hotswap.c new file mode 100644 index 000000000000..ca5ce7bb8b30 --- /dev/null +++ b/keyboards/owlab/voice65/hotswap/hotswap.c @@ -0,0 +1,449 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "hotswap.h" + +#ifdef RGB_MATRIX_ENABLE +const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { + {0, CS3_SW1, CS2_SW1, CS1_SW1}, /* RGB0-ESC ROW0*/ + {0, CS6_SW1, CS5_SW1, CS4_SW1}, /* RGB1-1 */ + {0, CS9_SW1, CS8_SW1, CS7_SW1}, /* RGB2-2 */ + {0, CS12_SW1, CS11_SW1, CS10_SW1}, /* RGB3-3 */ + {0, CS15_SW1, CS14_SW1, CS13_SW1}, /* RGB4-4 */ + {0, CS18_SW1, CS17_SW1, CS16_SW1}, /* RGB5-5 */ + {0, CS21_SW1, CS20_SW1, CS19_SW1}, /* RGB6-6 */ + {0, CS24_SW1, CS23_SW1, CS22_SW1}, /* RGB7-7 */ + {0, CS27_SW1, CS26_SW1, CS25_SW1}, /* RGB8-8 */ + {0, CS30_SW1, CS29_SW1, CS28_SW1}, /* RGB9-9 */ + {0, CS33_SW1, CS32_SW1, CS31_SW1}, /* RGB10-0 */ + {0, CS36_SW1, CS35_SW1, CS34_SW1}, /* RGB11--- */ + {0, CS39_SW1, CS38_SW1, CS37_SW1}, /* RGB12-+= */ + {0, CS36_SW6, CS35_SW6, CS34_SW6}, /* RGB13-BS */ + {0, CS27_SW7, CS26_SW7, CS25_SW7}, /* RGB14-DEL */ + {0, CS3_SW2, CS2_SW2, CS1_SW2}, /* RGB15-TAB ----ROW1*/ + {0, CS6_SW2, CS5_SW2, CS4_SW2}, /* RGB16-Q */ + {0, CS9_SW2, CS8_SW2, CS7_SW2}, /* RGB17-W */ + {0, CS12_SW2, CS11_SW2, CS10_SW2}, /* RGB18-E */ + {0, CS15_SW2, CS14_SW2, CS13_SW2}, /* RGB19-R */ + {0, CS18_SW2, CS17_SW2, CS16_SW2}, /* RGB20-T */ + {0, CS21_SW2, CS20_SW2, CS19_SW2}, /* RGB21-Y */ + {0, CS24_SW2, CS23_SW2, CS22_SW2}, /* RGB22-U */ + {0, CS27_SW2, CS26_SW2, CS25_SW2}, /* RGB23-I */ + {0, CS30_SW2, CS29_SW2, CS28_SW2}, /* RGB24-O */ + {0, CS33_SW2, CS32_SW2, CS31_SW2}, /* RGB25-P */ + {0, CS36_SW2, CS35_SW2, CS34_SW2}, /* RGB26-[ */ + {0, CS39_SW2, CS38_SW2, CS37_SW2}, /* RGB27-] */ + {0, CS39_SW6, CS38_SW6, CS37_SW6}, /* RGB28-\ */ + {0, CS30_SW7, CS29_SW7, CS28_SW7}, /* RGB29-PGUP */ + {0, CS3_SW3, CS2_SW3, CS1_SW3}, /* RGB30-CAPS---ROW2*/ + {0, CS6_SW3, CS5_SW3, CS4_SW3}, /* RGB31-A-- */ + {0, CS9_SW3, CS8_SW3, CS7_SW3}, /* RGB32-S-- */ + {0, CS12_SW3, CS11_SW3, CS10_SW3}, /* RGB33-D-- */ + {0, CS15_SW3, CS14_SW3, CS13_SW3}, /* RGB34-F-- */ + {0, CS18_SW3, CS17_SW3, CS16_SW3}, /* RGB35-G-- */ + {0, CS21_SW3, CS20_SW3, CS19_SW3}, /* RGB36-H-- */ + {0, CS24_SW3, CS23_SW3, CS22_SW3}, /* RGB37-J-- */ + {0, CS27_SW3, CS26_SW3, CS25_SW3}, /* RGB38-K-- */ + {0, CS30_SW3, CS29_SW3, CS28_SW3}, /* RGB39-L-- */ + {0, CS33_SW3, CS32_SW3, CS31_SW3}, /* RGB40-;:- */ + {0, CS36_SW3, CS35_SW3, CS34_SW3}, /* RGB41-''- */ + {0, CS39_SW3, CS38_SW3, CS37_SW3}, /* RGB42-ENTER- */ + {0, CS33_SW7, CS32_SW7, CS31_SW7}, /* RGB43-PGDN */ + {0, CS3_SW4, CS2_SW4, CS1_SW4}, /* RGB44-LSF --ROW3*/ + {0, CS6_SW4, CS5_SW4, CS4_SW4}, /* RGB45-Z -*/ + {0, CS9_SW4, CS8_SW4, CS7_SW4}, /* RGB46-X -*/ + {0, CS12_SW4, CS11_SW4, CS10_SW4}, /* RGB47-C -*/ + {0, CS15_SW4, CS14_SW4, CS13_SW4}, /* RGB48-V -*/ + {0, CS18_SW4, CS17_SW4, CS16_SW4}, /* RGB49-B -*/ + {0, CS21_SW4, CS20_SW4, CS19_SW4}, /* RGB50-N -*/ + {0, CS24_SW4, CS23_SW4, CS22_SW4}, /* RGB51-M -*/ + {0, CS27_SW4, CS26_SW4, CS25_SW4}, /* RGB52-,< -*/ + {0, CS30_SW4, CS29_SW4, CS28_SW4}, /* RGB53->. -*/ + {0, CS33_SW4, CS32_SW4, CS31_SW4}, /* RGB54-? -*/ + {0, CS36_SW4, CS35_SW4, CS34_SW4}, /* RGB55-RSF -*/ + {0, CS39_SW4, CS38_SW4, CS37_SW4}, /* RGB56-UP -*/ + {0, CS36_SW7, CS35_SW7, CS34_SW7}, /* RGB57--MO-- */ + {0, CS3_SW5, CS2_SW5, CS1_SW5}, /* RGB58-lct-- row4*/ + {0, CS6_SW5, CS5_SW5, CS4_SW5}, /* RGB59-lwin- */ + {0, CS9_SW5, CS8_SW5, CS7_SW5}, /* RGB60-lalt- */ + {0, CS18_SW5, CS17_SW5, CS16_SW5}, /* RGB61-sp- */ + {0, CS30_SW5, CS29_SW5, CS28_SW5}, /* RGB62-ralt- */ + {0, CS33_SW5, CS32_SW5, CS31_SW5}, /* RGB63-rct- */ + {0, CS36_SW5, CS35_SW5, CS34_SW5}, /* RGB64-left- */ + {0, CS39_SW5, CS38_SW5, CS37_SW5}, /* RGB65-dn- */ + {0, CS39_SW7, CS38_SW7, CS37_SW7}, /* RGB66-right- */ +}; + +led_config_t g_led_config = { { + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }, + { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 }, + { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, NO_LED, 43 }, + { 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, NO_LED, 56, 57 }, + { 58, 59, 60, NO_LED, NO_LED, 61, NO_LED, NO_LED, NO_LED, 62, 63, 64, NO_LED, 65, 66 } +}, { + { 0, 0 }, { 16, 0 }, { 32, 0 }, { 48, 0 }, { 64, 0 }, { 80, 0 }, { 96, 0 }, { 112, 0 }, { 128, 0 }, { 144, 0 }, { 160, 0 }, { 176, 0 }, { 192, 0 }, { 208, 0 }, { 224, 0 }, + { 2, 16 }, { 18, 16 }, { 34, 16 }, { 50, 16 }, { 66, 16 }, { 82, 16 }, { 98, 16 }, { 114, 16 }, { 130, 16 }, { 146, 16 }, { 162, 16 }, { 178, 16 }, { 194, 16 }, { 210, 16 }, { 224, 16 }, + { 4, 32 }, { 20, 32 }, { 36, 32 }, { 52, 32 }, { 68, 32 }, { 84, 32 }, { 100, 32 }, { 116, 32 }, { 132, 32 }, { 148, 32 }, { 164, 32 }, { 180, 32 }, { 196, 32 }, { 224, 32 }, + { 8, 48 }, { 24, 48 }, { 40, 48 }, { 56, 48 }, { 72, 48 }, { 88, 48 }, { 104, 48 }, { 120, 48 }, { 136, 48 }, { 152, 48 }, { 168, 48 }, { 184, 48 }, { 208, 48 }, { 224, 48 }, + { 2, 64 }, { 18, 64 }, { 34, 64 }, { 82, 64 }, { 146, 64 }, { 162, 64 }, { 178, 64 }, { 210, 64 }, { 224, 64 } +}, { + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, + } +}; + + +#endif + +__attribute__ ((weak)) +void rgb_matrix_indicators_user(void) +{ + if (host_keyboard_led_state().caps_lock) + { + rgb_matrix_set_color(31, 255, 255, 255); + } else { + rgb_matrix_set_color(31, 0, 0, 0); + } +} + +enum encoder_modes{ + ENCODER_MODE_ONE, + ENCODER_MODE_TWO, + ENCODER_MODE_THREE +}; + +keyboard_config_t keyboard_config; +rgblight_config_t rgblight_config; + +uint8_t pre_hue, pre_sat, pre_val; +uint8_t previous_rgb_mode = 0; +uint8_t dir_hue, dir_sat; + +bool encoder_in = false; +uint32_t encoder_timer; + +bool encoder_ani_start= false; +uint32_t encoder_ani_timer = 0; + +bool encoder_direction_start = false; +uint32_t encoder_direction_timer = 0; + + +bool lizm_restart_snake = false; +void rgblight_snake_restart(uint8_t hue, uint8_t sat, uint8_t val){ + lizm_restart_snake = true; // restart signal to local each effect + rgblight_config.hue = hue; + rgblight_config.sat = sat; + rgblight_config.val = val; +} + + +void keyboard_post_init_kb(void){ + keyboard_config.raw = eeconfig_read_kb(); + if( keyboard_config.encoder_mode_index > ENCODER_MODE_THREE ){ + keyboard_config.encoder_mode_index = ENCODER_MODE_ONE; + eeconfig_update_kb(keyboard_config.raw); + } +} + +void switch_encoder_mode(uint8_t mode){ + switch(mode){ + case ENCODER_MODE_ONE: + dir_hue = 88; + dir_sat = 255; + break; + + case ENCODER_MODE_TWO: + dir_hue = 0; + dir_sat = 240; + break; + + case ENCODER_MODE_THREE: + dir_hue = 176; + dir_sat = 255; + break; + } + rgblight_sethsv_noeeprom(dir_hue,dir_sat,pre_val); +} + + +void init_encoder_mode(uint8_t mode){ + previous_rgb_mode = rgblight_get_mode(); + pre_hue = rgblight_get_hue(); + pre_sat = rgblight_get_sat(); + pre_val = rgblight_get_val(); + encoder_in = true; + + rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); + + switch_encoder_mode(mode); +} + + +void set_encoder_mode(uint8_t mode){ + if(encoder_in == false){ + init_encoder_mode(mode); + }else{ + switch_encoder_mode(mode); + } + eeconfig_update_kb(keyboard_config.raw); + encoder_timer = timer_read32(); +} + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + if (record->event.pressed) { + switch(keycode) { + case RGB_MOD: + case RGB_RMOD: + case RGB_HUI: + case RGB_HUD: + case RGB_SAI: + case RGB_SAD: + case RGB_VAI: + case RGB_VAD: + + if(encoder_in){ + return false; + } + break; + + case KC_F13: + rgb_matrix_toggle(); + break; + + case KC_F14: + rgb_matrix_step(); + break; + + case KC_F15: + rgb_matrix_step_reverse(); + break; + + case KC_F16: + rgb_matrix_increase_hue(); //Increase the hue for effect range LEDs + break; + + case KC_F17: + rgb_matrix_decrease_hue(); //Decrease the hue for effect range LEDs + break; + + case KC_F18: + rgb_matrix_increase_sat(); //Increase the saturation for effect range LEDs + break; + + case KC_F19: + rgb_matrix_decrease_sat(); //Decrease the saturation for effect range LEDs + break; + + case KC_F20: + rgb_matrix_increase_val(); //Increase the value for effect range LEDs + break; + + case KC_F21: + rgb_matrix_decrease_val();//Decrease the value for effect range LEDs + break; + + case KC_F22: //change encoder mode upward + if(!encoder_direction_start){ + if(keyboard_config.encoder_mode_index < ENCODER_MODE_THREE){ + keyboard_config.encoder_mode_index++; + } + else{ + keyboard_config.encoder_mode_index = ENCODER_MODE_ONE; + } + set_encoder_mode(keyboard_config.encoder_mode_index); + } + return false; + case KC_F23: + if(!encoder_direction_start){ + if(keyboard_config.encoder_mode_index > ENCODER_MODE_ONE){ + keyboard_config.encoder_mode_index--; + } + else{ + keyboard_config.encoder_mode_index = ENCODER_MODE_THREE; + } + set_encoder_mode(keyboard_config.encoder_mode_index); + } + return false; + + default: + break; + } + } + return process_record_user(keycode, record); +} + + +void matrix_scan_kb(void) { + if(encoder_in){ + if(timer_elapsed32(encoder_timer) > 5000){ + rgblight_mode(previous_rgb_mode); + rgblight_sethsv(pre_hue, pre_sat, pre_val); + encoder_in = false; + } + } + + if(encoder_ani_start){ + if(timer_elapsed32(encoder_ani_timer) > VOLUME_ANIMATION_TIMER){ + encoder_ani_start = false; + rgblight_sethsv_noeeprom(0,0,0); + } + } + + if(encoder_direction_start){ + if(timer_elapsed32(encoder_direction_timer) > (VOLUME_ANIMATION_TIMER+1500)){ + rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); + rgblight_sethsv_noeeprom(dir_hue, dir_sat, pre_val); + encoder_direction_start = false; + } + } + matrix_scan_user(); +} + + +void set_volume_animation(bool increase){ + if(!encoder_ani_start){ + rgblight_snake_restart(dir_hue, dir_sat, pre_val); + } + + if(increase){ + rgblight_mode_noeeprom(17); + } else { + rgblight_mode_noeeprom(18); + } + + encoder_ani_timer = timer_read32(); + encoder_direction_timer = encoder_ani_timer; + encoder_ani_start = true; + encoder_direction_start = true; +} + + +bool encoder_update_kb(uint8_t index, bool clockwise) { + uint8_t layer_now = keyboard_config.encoder_mode_index +1; + uint16_t encoder_cw_keycode = keymap_key_to_keycode(layer_now, (keypos_t){.row=2, .col=1 }); + uint16_t encoder_ccw_keycode = keymap_key_to_keycode(layer_now, (keypos_t){.row=2, .col=2 }); + if (index == 0) { /* First encoder */ + if(encoder_in == false){ + init_encoder_mode(keyboard_config.encoder_mode_index); + } + + if (!clockwise) { + switch(encoder_cw_keycode) { + + case KC_F13: + rgb_matrix_toggle(); + break; + + case KC_F14: + rgb_matrix_step(); + break; + + case KC_F15: + rgb_matrix_step_reverse(); + break; + + case KC_F16: + rgb_matrix_increase_hue(); //Increase the hue for effect range LEDs + break; + + case KC_F17: + rgb_matrix_decrease_hue(); //Decrease the hue for effect range LEDs + break; + + case KC_F18: + rgb_matrix_increase_sat(); //Increase the saturation for effect range LEDs + break; + + case KC_F19: + rgb_matrix_decrease_sat(); //Decrease the saturation for effect range LEDs + break; + + case KC_F20: + rgb_matrix_increase_val(); //Increase the value for effect range LEDs + break; + + case KC_F21: + rgb_matrix_decrease_val();//Decrease the value for effect range LEDs + break; + + case KC_VOLU: + case KC_VOLD: + tap_code(encoder_cw_keycode); + break; + + default: + tap_code(encoder_cw_keycode); + break; + } + set_volume_animation(true); + } else { + switch(encoder_ccw_keycode) { + + case KC_F13: + rgb_matrix_toggle(); + break; + + case KC_F14: + rgb_matrix_step(); + break; + + case KC_F15: + rgb_matrix_step_reverse(); + break; + + case KC_F16: + rgb_matrix_increase_hue(); //Increase the hue for effect range LEDs + break; + + case KC_F17: + rgb_matrix_decrease_hue(); //Decrease the hue for effect range LEDs + break; + + case KC_F18: + rgb_matrix_increase_sat(); //Increase the saturation for effect range LEDs + break; + + case KC_F19: + rgb_matrix_decrease_sat(); //Decrease the saturation for effect range LEDs + break; + + case KC_F20: + rgb_matrix_increase_val(); //Increase the value for effect range LEDs + break; + + case KC_F21: + rgb_matrix_decrease_val();//Decrease the value for effect range LEDs + break; + + case KC_VOLU: + case KC_VOLD: + tap_code(encoder_ccw_keycode); + break; + + default: + tap_code(encoder_ccw_keycode); + break; + } + set_volume_animation(false); + } + encoder_timer = timer_read32(); + } + return true; +} diff --git a/keyboards/owlab/voice65/hotswap/hotswap.h b/keyboards/owlab/voice65/hotswap/hotswap.h new file mode 100644 index 000000000000..64503f9ca665 --- /dev/null +++ b/keyboards/owlab/voice65/hotswap/hotswap.h @@ -0,0 +1,46 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ____ KC_NO + +#define LAYOUT_65_ansi_blocker( \ + 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, K114, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, \ + K400, K401, K402, K405, K409, K410, K411, K413, K414 \ +) { \ + { 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, K114 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, ____, K214 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, ____, K313, K314 }, \ + { K400, K401, K402, ____, ____, K405, ____, ____, ____, K409, K410, K411, ____, K413, K414 } \ +} + +typedef union { + uint32_t raw; + struct { + uint8_t encoder_mode_index :8; + }; +} keyboard_config_t; + +extern keyboard_config_t keyboard_config; + +#define VOLUME_ANIMATION_TIMER 580 diff --git a/keyboards/owlab/voice65/hotswap/info.json b/keyboards/owlab/voice65/hotswap/info.json new file mode 100644 index 000000000000..0481d1acea70 --- /dev/null +++ b/keyboards/owlab/voice65/hotswap/info.json @@ -0,0 +1,81 @@ +{ + "keyboard_name": "voice65 hotswap", + "url": "https://www.popkeyboard.com/products/67968vn00mzx", + "maintainer": "kb-elmo", + "layout_aliases": { + "LAYOUT": "LAYOUT_65_ansi_blocker" + }, + "layouts": { + "LAYOUT_65_ansi_blocker": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":15, "y":0}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + {"x":15, "y":1}, + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":15, "y":2}, + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + } + } +} diff --git a/keyboards/owlab/voice65/hotswap/keymaps/default/keymap.c b/keyboards/owlab/voice65/hotswap/keymaps/default/keymap.c new file mode 100644 index 000000000000..7c508167bd28 --- /dev/null +++ b/keyboards/owlab/voice65/hotswap/keymaps/default/keymap.c @@ -0,0 +1,50 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// How long (in ms) to wait between animation steps for the snake mode +const uint8_t RGBLED_SNAKE_INTERVALS[] PROGMEM = {100, 35, 20}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi_blocker( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_ansi_blocker( + 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, RESET, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_RMOD,RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_HOME, + KC_TRNS, KC_VOLU, KC_VOLD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, + KC_TRNS, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_TRNS, KC_TRNS, KC_F22, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F23, KC_TRNS + ), + [2] = LAYOUT_65_ansi_blocker( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_PGUP, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_65_ansi_blocker( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_WH_U, KC_WH_D, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/owlab/voice65/hotswap/keymaps/via/keymap.c b/keyboards/owlab/voice65/hotswap/keymaps/via/keymap.c new file mode 100644 index 000000000000..96e1a60387c9 --- /dev/null +++ b/keyboards/owlab/voice65/hotswap/keymaps/via/keymap.c @@ -0,0 +1,51 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// How long (in ms) to wait between animation steps for the snake mode +const uint8_t RGBLED_SNAKE_INTERVALS[] PROGMEM = {100, 35, 20}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi_blocker( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_ansi_blocker( + 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, RESET, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_RMOD,RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_HOME, + KC_TRNS, KC_VOLU, KC_VOLD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, + KC_TRNS, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_TRNS, KC_TRNS, KC_F22, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F23, KC_TRNS + ), + [2] = LAYOUT_65_ansi_blocker( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_PGUP, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_65_ansi_blocker( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_WH_U, KC_WH_D, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; + diff --git a/keyboards/owlab/voice65/hotswap/keymaps/via/rules.mk b/keyboards/owlab/voice65/hotswap/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/owlab/voice65/hotswap/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/owlab/voice65/hotswap/mcuconf.h b/keyboards/owlab/voice65/hotswap/mcuconf.h new file mode 100644 index 000000000000..808ff765401b --- /dev/null +++ b/keyboards/owlab/voice65/hotswap/mcuconf.h @@ -0,0 +1,22 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include_next + +#undef STM32_I2C_USE_I2C1 +#define STM32_I2C_USE_I2C1 TRUE diff --git a/keyboards/owlab/voice65/hotswap/readme.md b/keyboards/owlab/voice65/hotswap/readme.md new file mode 100644 index 000000000000..3eb26792e35d --- /dev/null +++ b/keyboards/owlab/voice65/hotswap/readme.md @@ -0,0 +1,21 @@ +# Voice65 - hotswap PCB + +![voice65](https://i.imgur.com/okI07scl.jpg) + +A 65% with an LED strip and a scroll wheel + +* Keyboard Maintainer: [kb-elmo](https://github.com/kb-elmo) +* Hardware Supported: Voice65 hotswap PCB +* Hardware Availability: Ended groupbuy: https://www.popkeyboard.com/products/67968vn00mzx + +Make example for this keyboard (after setting up your build environment): + + make owlab/voice65/hotswap:default + +Flashing example for this keyboard: + + make owlab/voice65/hotswap:default:flash + +**Bootloader:** Press the physical reset button on the bottom side of the PCB (labeled SW1) or hold down ESC while plugging in the board. + +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/owlab/voice65/hotswap/rules.mk b/keyboards/owlab/voice65/hotswap/rules.mk new file mode 100644 index 000000000000..eb5b2004bdf0 --- /dev/null +++ b/keyboards/owlab/voice65/hotswap/rules.mk @@ -0,0 +1,25 @@ +# MCU name +MCU = STM32F303 + +# Bootloader selection +BOOTLOADER = stm32-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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes # Rotary encoder + +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = IS31FL3741 + +LAYOUTS = 65_ansi_blocker diff --git a/keyboards/owlab/voice65/soldered/config.h b/keyboards/owlab/voice65/soldered/config.h new file mode 100644 index 000000000000..f0c68dc25b89 --- /dev/null +++ b/keyboards/owlab/voice65/soldered/config.h @@ -0,0 +1,136 @@ +/* +Copyright 2021 kb-elmo + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4F53 +#define PRODUCT_ID 0x5657 +#define DEVICE_VER 0x0001 +#define MANUFACTURER OwLab +#define PRODUCT Voice65 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* Keyboard Matrix Assignments */ +#define MATRIX_ROW_PINS { B0, B1, B2, B10, B11 } +#define MATRIX_COL_PINS { A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A15, B8, B9, B12, B13 } + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 +/* NKRO */ +#ifdef NKRO_ENABLE +# define FORCE_NKRO +#endif + +/* RGB stripe */ +#define RGB_DI_PIN B15 +#ifdef RGB_DI_PIN +# define RGBLIGHT_EFFECT_ALTERNATING +# define RGBLIGHT_EFFECT_BREATHING +# define RGBLIGHT_EFFECT_CHRISTMAS +# define RGBLIGHT_EFFECT_KNIGHT +# define RGBLIGHT_EFFECT_RAINBOW_MOOD +# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +# define RGBLIGHT_EFFECT_SNAKE +# define RGBLIGHT_EFFECT_STATIC_GRADIENT +# define RGBLIGHT_EFFECT_TWINKLE +# define RGBLED_NUM 20 +# define RGBLIGHT_HUE_STEP 8 +# define RGBLIGHT_SAT_STEP 8 +# define RGBLIGHT_VAL_STEP 10 +# define RGBLIGHT_LIMIT_VAL 180 +# define OWL_VOLUME_RANGE 50 +#endif + +/* RGB matrix*/ +#ifdef RGB_MATRIX_ENABLE +# define USE_I2CV2 +# define RGB_MATRIX_DISABLE_KEYCODES +# 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_KEYPRESSES +# define RGB_MATRIX_LED_PROCESS_LIMIT 4 +# define RGB_MATRIX_LED_FLUSH_LIMIT 26 +# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 +# define RGB_MATRIX_STARTUP_VAL 128 +# define DRIVER_ADDR_1 0b0110000 +# define DRIVER_COUNT 1 +# define DRIVER_LED_TOTAL 71 + +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH +#endif + +/* Encoder */ +#define ENCODERS_PAD_A { B4 } +#define ENCODERS_PAD_B { B5 } +#define ENCODER_RESOLUTION 4 +#define TAP_CODE_DELAY 10 diff --git a/keyboards/owlab/voice65/soldered/halconf.h b/keyboards/owlab/voice65/soldered/halconf.h new file mode 100644 index 000000000000..f88be48211c2 --- /dev/null +++ b/keyboards/owlab/voice65/soldered/halconf.h @@ -0,0 +1,21 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define HAL_USE_I2C TRUE + +#include_next diff --git a/keyboards/owlab/voice65/soldered/info.json b/keyboards/owlab/voice65/soldered/info.json new file mode 100644 index 000000000000..ce33ffc083c7 --- /dev/null +++ b/keyboards/owlab/voice65/soldered/info.json @@ -0,0 +1,440 @@ +{ + "keyboard_name": "voice65 soldered", + "url": "https://www.popkeyboard.com/products/67968vn00mzx", + "maintainer": "kb-elmo", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15, "y":0}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + {"x":15, "y":1}, + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":15, "y":2}, + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":2.25}, + {"x":6, "y":4, "w":1.25}, + {"x":7.25, "y":4, "w":2.75}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + }, + "LAYOUT_65_ansi_blocker": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":15, "y":0}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + {"x":15, "y":1}, + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":15, "y":2}, + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + }, + "LAYOUT_65_ansi_blocker_split_bs": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15, "y":0}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + {"x":15, "y":1}, + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":15, "y":2}, + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + }, + "LAYOUT_65_ansi_blocker_tsangan": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":15, "y":0}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + {"x":15, "y":1}, + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":15, "y":2}, + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + {"x":0, "y":4, "w":1.5}, + {"x":1.5, "y":4}, + {"x":2.5, "y":4, "w":1.5}, + {"x":4, "y":4, "w":7}, + {"x":11, "y":4, "w":1.5}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + }, + "LAYOUT_65_iso_blocker": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":15, "y":0}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":15, "y":1}, + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + {"x":13.75, "y":1, "w":1.25, "h":2}, + {"x":15, "y":2}, + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + }, + "LAYOUT_65_iso_blocker_split_bs": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15, "y":0}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":15, "y":1}, + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + {"x":13.75, "y":1, "w":1.25, "h":2}, + {"x":15, "y":2}, + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + } + } +} diff --git a/keyboards/owlab/voice65/soldered/keymaps/default/keymap.c b/keyboards/owlab/voice65/soldered/keymaps/default/keymap.c new file mode 100644 index 000000000000..7c508167bd28 --- /dev/null +++ b/keyboards/owlab/voice65/soldered/keymaps/default/keymap.c @@ -0,0 +1,50 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// How long (in ms) to wait between animation steps for the snake mode +const uint8_t RGBLED_SNAKE_INTERVALS[] PROGMEM = {100, 35, 20}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi_blocker( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_ansi_blocker( + 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, RESET, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_RMOD,RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_HOME, + KC_TRNS, KC_VOLU, KC_VOLD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, + KC_TRNS, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_TRNS, KC_TRNS, KC_F22, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F23, KC_TRNS + ), + [2] = LAYOUT_65_ansi_blocker( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_PGUP, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_65_ansi_blocker( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_WH_U, KC_WH_D, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/owlab/voice65/soldered/keymaps/via/keymap.c b/keyboards/owlab/voice65/soldered/keymaps/via/keymap.c new file mode 100644 index 000000000000..7c508167bd28 --- /dev/null +++ b/keyboards/owlab/voice65/soldered/keymaps/via/keymap.c @@ -0,0 +1,50 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// How long (in ms) to wait between animation steps for the snake mode +const uint8_t RGBLED_SNAKE_INTERVALS[] PROGMEM = {100, 35, 20}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi_blocker( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_ansi_blocker( + 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, RESET, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_RMOD,RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_HOME, + KC_TRNS, KC_VOLU, KC_VOLD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, + KC_TRNS, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_TRNS, KC_TRNS, KC_F22, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F23, KC_TRNS + ), + [2] = LAYOUT_65_ansi_blocker( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_PGUP, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_65_ansi_blocker( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_WH_U, KC_WH_D, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/owlab/voice65/soldered/keymaps/via/rules.mk b/keyboards/owlab/voice65/soldered/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/owlab/voice65/soldered/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/owlab/voice65/soldered/mcuconf.h b/keyboards/owlab/voice65/soldered/mcuconf.h new file mode 100644 index 000000000000..808ff765401b --- /dev/null +++ b/keyboards/owlab/voice65/soldered/mcuconf.h @@ -0,0 +1,22 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include_next + +#undef STM32_I2C_USE_I2C1 +#define STM32_I2C_USE_I2C1 TRUE diff --git a/keyboards/owlab/voice65/soldered/readme.md b/keyboards/owlab/voice65/soldered/readme.md new file mode 100644 index 000000000000..6299c905ea83 --- /dev/null +++ b/keyboards/owlab/voice65/soldered/readme.md @@ -0,0 +1,21 @@ +# Voice65 - soldered PCB + +![voice65](https://i.imgur.com/okI07scl.jpg) + +A 65% with an LED strip and a scroll wheel + +* Keyboard Maintainer: [kb-elmo](https://github.com/kb-elmo) +* Hardware Supported: Voice65 soldered PCB +* Hardware Availability: Ended groupbuy: https://www.popkeyboard.com/products/67968vn00mzx + +Make example for this keyboard (after setting up your build environment): + + make owlab/voice65/soldered:default + +Flashing example for this keyboard: + + make owlab/voice65/soldered:default:flash + +**Bootloader:** Press the physical reset button on the bottom side of the PCB (labeled SW1) or hold down ESC while plugging in the board. + +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/owlab/voice65/soldered/rules.mk b/keyboards/owlab/voice65/soldered/rules.mk new file mode 100644 index 000000000000..89eac98cf31b --- /dev/null +++ b/keyboards/owlab/voice65/soldered/rules.mk @@ -0,0 +1,25 @@ +# MCU name +MCU = STM32F303 + +# Bootloader selection +BOOTLOADER = stm32-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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes # Rotary encoder + +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = IS31FL3741 + +LAYOUTS = 65_ansi_blocker 65_ansi_blocker_split_bs 65_ansi_blocker_tsangan 65_iso_blocker 65_iso_blocker_split_bs diff --git a/keyboards/owlab/voice65/soldered/soldered.c b/keyboards/owlab/voice65/soldered/soldered.c new file mode 100644 index 000000000000..bbd2daf2931f --- /dev/null +++ b/keyboards/owlab/voice65/soldered/soldered.c @@ -0,0 +1,454 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "soldered.h" + +#ifdef RGB_MATRIX_ENABLE +const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { + {0, CS3_SW1, CS2_SW1, CS1_SW1}, /* RGB0-ESC ROW0*/ + {0, CS6_SW1, CS5_SW1, CS4_SW1}, /* RGB1-1 */ + {0, CS9_SW1, CS8_SW1, CS7_SW1}, /* RGB2-2 */ + {0, CS12_SW1, CS11_SW1, CS10_SW1}, /* RGB3-3 */ + {0, CS15_SW1, CS14_SW1, CS13_SW1}, /* RGB4-4 */ + {0, CS18_SW1, CS17_SW1, CS16_SW1}, /* RGB5-5 */ + {0, CS21_SW1, CS20_SW1, CS19_SW1}, /* RGB6-6 */ + {0, CS24_SW1, CS23_SW1, CS22_SW1}, /* RGB7-7 */ + {0, CS27_SW1, CS26_SW1, CS25_SW1}, /* RGB8-8 */ + {0, CS30_SW1, CS29_SW1, CS28_SW1}, /* RGB9-9 */ + {0, CS33_SW1, CS32_SW1, CS31_SW1}, /* RGB10-0 */ + {0, CS36_SW1, CS35_SW1, CS34_SW1}, /* RGB11--- */ + {0, CS39_SW6, CS38_SW6, CS37_SW6}, /* RGB12-+= */ + {0, CS36_SW6, CS35_SW6, CS34_SW6}, /* RGB13-BS */ + {0, CS27_SW6, CS26_SW6, CS25_SW6}, /* RGB14-BACKSPACE SPLIT */ + {0, CS36_SW8, CS35_SW8, CS34_SW8}, /* RGB15-DEL */ + {0, CS3_SW2, CS2_SW2, CS1_SW2}, /* RGB16-TAB ----ROW1*/ + {0, CS6_SW2, CS5_SW2, CS4_SW2}, /* RGB17-Q */ + {0, CS9_SW2, CS8_SW2, CS7_SW2}, /* RGB18-W */ + {0, CS12_SW2, CS11_SW2, CS10_SW2}, /* RGB19-E */ + {0, CS15_SW2, CS14_SW2, CS13_SW2}, /* RGB20-R */ + {0, CS18_SW2, CS17_SW2, CS16_SW2}, /* RGB21-T */ + {0, CS21_SW2, CS20_SW2, CS19_SW2}, /* RGB22-Y */ + {0, CS24_SW2, CS23_SW2, CS22_SW2}, /* RGB23-U */ + {0, CS27_SW2, CS26_SW2, CS25_SW2}, /* RGB24-I */ + {0, CS30_SW2, CS29_SW2, CS28_SW2}, /* RGB25-O */ + {0, CS33_SW2, CS32_SW2, CS31_SW2}, /* RGB26-P */ + {0, CS36_SW2, CS35_SW2, CS34_SW2}, /* RGB27-[ */ + {0, CS39_SW7, CS38_SW7, CS37_SW7}, /* RGB28-] */ + {0, CS36_SW7, CS35_SW7, CS34_SW7}, /* RGB29-\ */ + {0, CS27_SW7, CS26_SW7, CS25_SW7}, /* RGB30-PGUP */ + {0, CS3_SW3, CS2_SW3, CS1_SW3}, /* RGB31-CAPS---ROW2*/ + {0, CS6_SW3, CS5_SW3, CS4_SW3}, /* RGB32-A-- */ + {0, CS9_SW3, CS8_SW3, CS7_SW3}, /* RGB33-S-- */ + {0, CS12_SW3, CS11_SW3, CS10_SW3}, /* RGB34-D-- */ + {0, CS15_SW3, CS14_SW3, CS13_SW3}, /* RGB35-F-- */ + {0, CS18_SW3, CS17_SW3, CS16_SW3}, /* RGB36-G-- */ + {0, CS21_SW3, CS20_SW3, CS19_SW3}, /* RGB37-H-- */ + {0, CS24_SW3, CS23_SW3, CS22_SW3}, /* RGB38-J-- */ + {0, CS27_SW3, CS26_SW3, CS25_SW3}, /* RGB39-K-- */ + {0, CS30_SW3, CS29_SW3, CS28_SW3}, /* RGB40-L-- */ + {0, CS33_SW3, CS32_SW3, CS31_SW3}, /* RGB41-;:- */ + {0, CS36_SW3, CS35_SW3, CS34_SW3}, /* RGB42-''- */ + {0, CS39_SW8, CS38_SW8, CS37_SW8}, /* RGB43-ENTER- */ + {0, CS27_SW8, CS26_SW8, CS25_SW8}, /* RGB44-PGDN */ + {0, CS3_SW4, CS2_SW4, CS1_SW4}, /* RGB45-LSF --ROW3*/ + {0, CS6_SW4, CS5_SW4, CS4_SW4}, /* RGB46-LSF split -*/ + {0, CS9_SW4, CS8_SW4, CS7_SW4}, /* RGB47-Z -*/ + {0, CS12_SW4, CS11_SW4, CS10_SW4}, /* RGB48-X -*/ + {0, CS15_SW4, CS14_SW4, CS13_SW4}, /* RGB49-C -*/ + {0, CS18_SW4, CS17_SW4, CS16_SW4}, /* RGB50-V -*/ + {0, CS21_SW4, CS20_SW4, CS19_SW4}, /* RGB51-B -*/ + {0, CS24_SW4, CS23_SW4, CS22_SW4}, /* RGB52-N -*/ + {0, CS27_SW4, CS26_SW4, CS25_SW4}, /* RGB53-M -*/ + {0, CS30_SW4, CS29_SW4, CS28_SW4}, /* RGB54-<, -*/ + {0, CS33_SW4, CS32_SW4, CS31_SW4}, /* RGB55->. -*/ + {0, CS36_SW4, CS35_SW4, CS34_SW4}, /* RGB56-?/ -*/ + {0, CS39_SW9, CS38_SW9, CS37_SW9}, /* RGB57-RSF -*/ + {0, CS36_SW9, CS35_SW9, CS34_SW9}, /* RGB58-UP -*/ + {0, CS27_SW9, CS26_SW9, CS25_SW9}, /* RGB59--MO-- */ + {0, CS3_SW5, CS2_SW5, CS1_SW5}, /* RGB60-lct-- row4*/ + {0, CS6_SW5, CS5_SW5, CS4_SW5}, /* RGB61-lwin- */ + {0, CS9_SW5, CS8_SW5, CS7_SW5}, /* RGB62-lalt- */ + {0, CS12_SW5, CS11_SW5, CS10_SW5}, /* RGB63-sp2.25- */ + {0, CS15_SW5, CS14_SW5, CS13_SW5}, /* RGB64-sp7U6.25U1.25U- */ + {0, CS21_SW5, CS20_SW5, CS19_SW5}, /* RGB65-sp2.75U- */ + {0, CS30_SW5, CS29_SW5, CS28_SW5}, /* RGB66-ralt- */ + {0, CS33_SW5, CS32_SW5, CS31_SW5}, /* RGB67-rctrl- */ + {0, CS36_SW5, CS35_SW5, CS34_SW5}, /* RGB68-left- */ + {0, CS39_SW5, CS38_SW5, CS37_SW5}, /* RGB69-dn- */ + {0, CS27_SW5, CS26_SW5, CS25_SW5}, /* RGB70-right- */ +}; + +led_config_t g_led_config = { { + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }, + { 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 }, + { 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 15, 44 }, + { 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59 }, + { 60, 61, 62, 63, 64, NO_LED, 65, NO_LED, NO_LED, 66, 67, 68, 69, NO_LED, 70 } +}, { + { 0, 0 }, { 15, 0 }, { 30, 0 }, { 45, 0 }, { 60, 0 }, { 75, 0 }, { 90, 0 }, { 105, 0 }, { 120, 0 }, { 135, 0 }, { 150, 0 }, { 165, 0}, { 180, 0}, { 195, 0 }, { 209, 0 }, { 224, 0 }, + { 2, 16 }, { 18, 16 }, { 34, 16 }, { 50, 16 }, { 66, 16 }, { 82, 16 }, { 98, 16 }, { 114, 16 }, { 130, 16 }, { 146, 16 }, { 162, 16 }, { 178, 16 }, { 194, 16 }, { 208, 16 }, { 224, 16 }, + { 2, 32 }, { 20, 32 }, { 36, 32 }, { 52, 32 }, { 68, 32 }, { 84, 32 }, { 100, 32 }, { 116, 32 }, { 132, 32 }, { 148, 32 }, { 164, 32 }, { 180, 32 }, { 202, 32 }, { 224, 32 }, + { 0, 48 }, { 16, 48 }, { 32, 48 }, { 48, 48 }, { 64, 48 }, { 80, 48 }, { 96, 48 }, { 112, 48 }, { 128, 48 }, { 144, 48 }, { 160, 48 }, { 176, 48 }, { 192, 48 }, { 208, 48 }, { 224, 48 }, + { 0, 64 }, { 20, 64 }, { 40, 64 }, { 60, 64 }, { 95, 64 }, { 132, 64 }, { 152, 64 }, { 172, 64 }, { 192, 64 }, { 208, 64 }, { 224, 64 } +}, { + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 + } +}; + + +#endif + +__attribute__ ((weak)) +void rgb_matrix_indicators_user(void) +{ + if (host_keyboard_led_state().caps_lock) + { + rgb_matrix_set_color(31, 255, 255, 255); + } else { + rgb_matrix_set_color(31, 0, 0, 0); + } +} + +enum encoder_modes{ + ENCODER_MODE_ONE, + ENCODER_MODE_TWO, + ENCODER_MODE_THREE +}; + +keyboard_config_t keyboard_config; +rgblight_config_t rgblight_config; + +uint8_t pre_hue, pre_sat, pre_val; +uint8_t previous_rgb_mode = 0; +uint8_t dir_hue, dir_sat; + +bool encoder_in = false; +uint32_t encoder_timer; + +bool encoder_ani_start= false; +uint32_t encoder_ani_timer = 0; + +bool encoder_direction_start = false; +uint32_t encoder_direction_timer = 0; + + +bool lizm_restart_snake = false; +void rgblight_snake_restart(uint8_t hue, uint8_t sat, uint8_t val){ + lizm_restart_snake = true; // restart signal to local each effect + rgblight_config.hue = hue; + rgblight_config.sat = sat; + rgblight_config.val = val; +} + + +void keyboard_post_init_kb(void){ + keyboard_config.raw = eeconfig_read_kb(); + if( keyboard_config.encoder_mode_index > ENCODER_MODE_THREE ){ + keyboard_config.encoder_mode_index = ENCODER_MODE_ONE; + eeconfig_update_kb(keyboard_config.raw); + } +} + +void switch_encoder_mode(uint8_t mode){ + switch(mode){ + case ENCODER_MODE_ONE: + dir_hue = 88; + dir_sat = 255; + break; + + case ENCODER_MODE_TWO: + dir_hue = 0; + dir_sat = 240; + break; + + case ENCODER_MODE_THREE: + dir_hue = 176; + dir_sat = 255; + break; + } + rgblight_sethsv_noeeprom(dir_hue,dir_sat,pre_val); +} + + +void init_encoder_mode(uint8_t mode){ + previous_rgb_mode = rgblight_get_mode(); + pre_hue = rgblight_get_hue(); + pre_sat = rgblight_get_sat(); + pre_val = rgblight_get_val(); + encoder_in = true; + + rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); + + switch_encoder_mode(mode); +} + + +void set_encoder_mode(uint8_t mode){ + if(encoder_in == false){ + init_encoder_mode(mode); + }else{ + switch_encoder_mode(mode); + } + eeconfig_update_kb(keyboard_config.raw); + encoder_timer = timer_read32(); +} + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + if (record->event.pressed) { + switch(keycode) { + case RGB_MOD: + case RGB_RMOD: + case RGB_HUI: + case RGB_HUD: + case RGB_SAI: + case RGB_SAD: + case RGB_VAI: + case RGB_VAD: + + if(encoder_in){ + return false; + } + break; + + case KC_F13: + rgb_matrix_toggle(); + break; + + case KC_F14: + rgb_matrix_step(); + break; + + case KC_F15: + rgb_matrix_step_reverse(); + break; + + case KC_F16: + rgb_matrix_increase_hue(); //Increase the hue for effect range LEDs + break; + + case KC_F17: + rgb_matrix_decrease_hue(); //Decrease the hue for effect range LEDs + break; + + case KC_F18: + rgb_matrix_increase_sat(); //Increase the saturation for effect range LEDs + break; + + case KC_F19: + rgb_matrix_decrease_sat(); //Decrease the saturation for effect range LEDs + break; + + case KC_F20: + rgb_matrix_increase_val(); //Increase the value for effect range LEDs + break; + + case KC_F21: + rgb_matrix_decrease_val();//Decrease the value for effect range LEDs + break; + + case KC_F22: //change encoder mode upward + if(!encoder_direction_start){ + if(keyboard_config.encoder_mode_index < ENCODER_MODE_THREE){ + keyboard_config.encoder_mode_index++; + } + else{ + keyboard_config.encoder_mode_index = ENCODER_MODE_ONE; + } + set_encoder_mode(keyboard_config.encoder_mode_index); + } + return false; + + case KC_F23: + if(!encoder_direction_start){ + if(keyboard_config.encoder_mode_index > ENCODER_MODE_ONE){ + keyboard_config.encoder_mode_index--; + } + else{ + keyboard_config.encoder_mode_index = ENCODER_MODE_THREE; + } + set_encoder_mode(keyboard_config.encoder_mode_index); + } + return false; + + default: + break; + } + } + return process_record_user(keycode, record); +} + + +void matrix_scan_kb(void) { + if(encoder_in){ + if(timer_elapsed32(encoder_timer) > 5000){ + rgblight_mode(previous_rgb_mode); + rgblight_sethsv(pre_hue, pre_sat, pre_val); + encoder_in = false; + } + } + + if(encoder_ani_start){ + if(timer_elapsed32(encoder_ani_timer) > VOLUME_ANIMATION_TIMER){ + encoder_ani_start = false; + rgblight_sethsv_noeeprom(0,0,0); + } + } + + if(encoder_direction_start){ + if(timer_elapsed32(encoder_direction_timer) > (VOLUME_ANIMATION_TIMER+1500)){ + rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); + rgblight_sethsv_noeeprom(dir_hue, dir_sat, pre_val); + encoder_direction_start = false; + } + } + matrix_scan_user(); +} + + +void set_volume_animation(bool increase){ + if(!encoder_ani_start){ + rgblight_snake_restart(dir_hue, dir_sat, pre_val); + } + + if(increase){ + rgblight_mode_noeeprom(17); + } else { + rgblight_mode_noeeprom(18); + } + + encoder_ani_timer = timer_read32(); + encoder_direction_timer = encoder_ani_timer; + encoder_ani_start = true; + encoder_direction_start = true; +} + + +bool encoder_update_kb(uint8_t index, bool clockwise) { + uint8_t layer_now = keyboard_config.encoder_mode_index +1; + uint16_t encoder_cw_keycode = keymap_key_to_keycode(layer_now, (keypos_t){.row=2, .col=1 }); + uint16_t encoder_ccw_keycode = keymap_key_to_keycode(layer_now, (keypos_t){.row=2, .col=2 }); + if (index == 0) { /* First encoder */ + if(encoder_in == false){ + init_encoder_mode(keyboard_config.encoder_mode_index); + } + + if (!clockwise) { + switch(encoder_cw_keycode) { + + case KC_F13: + rgb_matrix_toggle(); + break; + + case KC_F14: + rgb_matrix_step(); + break; + + case KC_F15: + rgb_matrix_step_reverse(); + break; + + case KC_F16: + rgb_matrix_increase_hue(); //Increase the hue for effect range LEDs + break; + + case KC_F17: + rgb_matrix_decrease_hue(); //Decrease the hue for effect range LEDs + break; + + case KC_F18: + rgb_matrix_increase_sat(); //Increase the saturation for effect range LEDs + break; + + case KC_F19: + rgb_matrix_decrease_sat(); //Decrease the saturation for effect range LEDs + break; + + case KC_F20: + rgb_matrix_increase_val(); //Increase the value for effect range LEDs + break; + + case KC_F21: + rgb_matrix_decrease_val();//Decrease the value for effect range LEDs + break; + + case KC_VOLU: + case KC_VOLD: + tap_code(encoder_cw_keycode); + break; + + default: + tap_code(encoder_cw_keycode); + break; + } + set_volume_animation(true); + } else { + switch(encoder_ccw_keycode) { + + case KC_F13: + rgb_matrix_toggle(); + break; + + case KC_F14: + rgb_matrix_step(); + break; + + case KC_F15: + rgb_matrix_step_reverse(); + break; + + case KC_F16: + rgb_matrix_increase_hue(); //Increase the hue for effect range LEDs + break; + + case KC_F17: + rgb_matrix_decrease_hue(); //Decrease the hue for effect range LEDs + break; + + case KC_F18: + rgb_matrix_increase_sat(); //Increase the saturation for effect range LEDs + break; + + case KC_F19: + rgb_matrix_decrease_sat(); //Decrease the saturation for effect range LEDs + break; + + case KC_F20: + rgb_matrix_increase_val(); //Increase the value for effect range LEDs + break; + + case KC_F21: + rgb_matrix_decrease_val();//Decrease the value for effect range LEDs + break; + + case KC_VOLU: + case KC_VOLD: + tap_code(encoder_ccw_keycode); + break; + + default: + tap_code(encoder_ccw_keycode); + break; + } + set_volume_animation(false); + } + encoder_timer = timer_read32(); + } + return true; +} diff --git a/keyboards/owlab/voice65/soldered/soldered.h b/keyboards/owlab/voice65/soldered/soldered.h new file mode 100644 index 000000000000..0d5005600219 --- /dev/null +++ b/keyboards/owlab/voice65/soldered/soldered.h @@ -0,0 +1,116 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ____ KC_NO + +#define LAYOUT_all( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K213, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, \ + K400, K401, K402, K403, K404, K406, K409, K410, K411, K412, K414 \ +) { \ + { 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, K114 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314 }, \ + { K400, K401, K402, K403, K404, ____, K406, ____, ____, K409, K410, K411, K412, ____, K414 } \ +} + +#define LAYOUT_65_ansi_blocker( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K213, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, \ + K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, \ + K400, K401, K402, K404, K409, K410, K411, K412, K414 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, ____ }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 }, \ + { K300, ____, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314 }, \ + { K400, K401, K402, ____, K404, ____, ____, ____, ____, K409, K410, K411, K412, ____, K414 } \ +} + +#define LAYOUT_65_ansi_blocker_split_bs( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K213, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, \ + K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, \ + K400, K401, K402, K404, K409, K410, K411, K412, K414 \ +) { \ + { 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, K114 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 }, \ + { K300, ____, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314 }, \ + { K400, K401, K402, ____, K404, ____, ____, ____, ____, K409, K410, K411, K412, ____, K414 } \ +} + +#define LAYOUT_65_ansi_blocker_tsangan( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K213, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, \ + K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, \ + K400, K401, K402, K404, K410, K411, K412, K414 \ +) { \ + { 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, K114 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 }, \ + { K300, ____, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314 }, \ + { K400, K401, K402, ____, K404, ____, ____, ____, ____, ____, K410, K411, K412, ____, K414 } \ +} + +#define LAYOUT_65_iso_blocker( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K213, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K114, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K113, K212, K214, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, \ + K400, K401, K402, K404, K409, K410, K411, K412, K414 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, ____ }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314 }, \ + { K400, K401, K402, ____, K404, ____, ____, ____, ____, K409, K410, K411, K412, ____, K414 } \ +} + +#define LAYOUT_65_iso_blocker_split_bs( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K213, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K114, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K113, K212, K214, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, \ + K400, K401, K402, K404, K409, K410, K411, K412, K414 \ +) { \ + { 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, K114 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314 }, \ + { K400, K401, K402, ____, K404, ____, ____, ____, ____, K409, K410, K411, K412, ____, K414 } \ +} + +typedef union { + uint32_t raw; + struct { + uint8_t encoder_mode_index :8; + }; +} keyboard_config_t; + +extern keyboard_config_t keyboard_config; + +#define VOLUME_ANIMATION_TIMER 580 diff --git a/keyboards/pabile/p18/info.json b/keyboards/pabile/p18/info.json index 3f215a45198b..57d734ab3d1b 100644 --- a/keyboards/pabile/p18/info.json +++ b/keyboards/pabile/p18/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Pabile 18", "url": "https://pabileonline.blogspot.com/", "maintainer": "Pabile", - "width": 5.25, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/pabile/p18/rules.mk b/keyboards/pabile/p18/rules.mk index 9f59811cce62..0f18d3072f58 100644 --- a/keyboards/pabile/p18/rules.mk +++ b/keyboards/pabile/p18/rules.mk @@ -2,32 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output UNICODE_ENABLE = yes # Unicode IOS_DEVICE_ENABLE = no # connect to IOS Device ENCODER_ENABLE = yes diff --git a/keyboards/pabile/p20/info.json b/keyboards/pabile/p20/info.json index d1a63a9439b8..67e01dca85b8 100644 --- a/keyboards/pabile/p20/info.json +++ b/keyboards/pabile/p20/info.json @@ -2,8 +2,6 @@ "keyboard_name": "P20", "url": "", "maintainer": "pabile", - "width": 4, - "height": 5, "layouts": { "LAYOUT_ortho_5x4": { "layout": [ diff --git a/keyboards/pabile/p20/ver1/rules.mk b/keyboards/pabile/p20/ver1/rules.mk index d8e01b847ff7..011d9ca0b867 100644 --- a/keyboards/pabile/p20/ver1/rules.mk +++ b/keyboards/pabile/p20/ver1/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output UNICODE_ENABLE = yes # Unicode diff --git a/keyboards/pabile/p20/ver2/rules.mk b/keyboards/pabile/p20/ver2/rules.mk index da59201fcaed..eaf175fb0c38 100644 --- a/keyboards/pabile/p20/ver2/rules.mk +++ b/keyboards/pabile/p20/ver2/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output UNICODE_ENABLE = yes # Unicode diff --git a/keyboards/pabile/p40/info.json b/keyboards/pabile/p40/info.json index d05d773282a0..8a6c1327ebc9 100644 --- a/keyboards/pabile/p40/info.json +++ b/keyboards/pabile/p40/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Pabile 40", "url": "https://pabileonline.blogspot.com/", "maintainer": "Pabile", - "width": 10.75, - "height": 4, "layouts": { "LAYOUT_ortho_4x10": { "layout": [ diff --git a/keyboards/pabile/p40/rules.mk b/keyboards/pabile/p40/rules.mk index 016fe01725ef..e5aa13866155 100644 --- a/keyboards/pabile/p40/rules.mk +++ b/keyboards/pabile/p40/rules.mk @@ -2,32 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# 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 -MIDI_ENABLE = no # MIDI controls -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output UNICODE_ENABLE = yes # Unicode IOS_DEVICE_ENABLE = no # connect to IOS Device diff --git a/keyboards/pabile/p40_ortho/info.json b/keyboards/pabile/p40_ortho/info.json index fb64234e5889..38eb5bdb7034 100644 --- a/keyboards/pabile/p40_ortho/info.json +++ b/keyboards/pabile/p40_ortho/info.json @@ -1,7 +1,5 @@ { "maintainer": "qmk", - "width": 10, - "height": 4, "layouts": { "LAYOUT_ortho_4x10": { "layout": [ diff --git a/keyboards/pabile/p40_ortho/rules.mk b/keyboards/pabile/p40_ortho/rules.mk index ba0ad23c8a45..d76b5a89ab29 100644 --- a/keyboards/pabile/p40_ortho/rules.mk +++ b/keyboards/pabile/p40_ortho/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output UNICODE_ENABLE = yes # Unicode IOS_DEVICE_ENABLE = no # connect to IOS Device diff --git a/keyboards/pabile/p42/info.json b/keyboards/pabile/p42/info.json index 77bce4bab28c..7cc34266d24b 100644 --- a/keyboards/pabile/p42/info.json +++ b/keyboards/pabile/p42/info.json @@ -2,8 +2,6 @@ "keyboard_name": "P42", "url": "https://pabileonline.blogspot.com/", "maintainer": "Pabile", - "width": 11.25, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/pabile/p42/rules.mk b/keyboards/pabile/p42/rules.mk index ba0ad23c8a45..d76b5a89ab29 100644 --- a/keyboards/pabile/p42/rules.mk +++ b/keyboards/pabile/p42/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output UNICODE_ENABLE = yes # Unicode IOS_DEVICE_ENABLE = no # connect to IOS Device diff --git a/keyboards/packrat/config.h b/keyboards/packrat/config.h new file mode 100644 index 000000000000..c69ecdafcb8e --- /dev/null +++ b/keyboards/packrat/config.h @@ -0,0 +1,59 @@ +/* Copyright 2021 drhigsby + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define MANUFACTURER DrHigsby +#define PRODUCT Packrat +#define VENDOR_ID 0x0007 +#define PRODUCT_ID 0x0004 +#define DEVICE_VER 0x0001 + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 11 + +/* + * 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) + * + */ + +/* key matrix pins */ +#define MATRIX_ROW_PINS { F7, B1, B6, B2 } +#define MATRIX_COL_PINS { D3, D2, D1, D0, D4, C6, D7, E6, B4, B5, B3 } +#define UNUSED_PINS { F6 } + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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 { F5 } +#define ENCODERS_PAD_B { F4 } diff --git a/keyboards/packrat/info.json b/keyboards/packrat/info.json new file mode 100644 index 000000000000..e4e3d869f172 --- /dev/null +++ b/keyboards/packrat/info.json @@ -0,0 +1,26 @@ +{ + "keyboard_name": "packrat", + "url": "http://www.keyboard-layout-editor.com/#/gists/43d838a3b2e0344d75dd67abfc508038", + "maintainer": "drhigsby", + "layouts": { + "LAYOUT_3uc": { + "layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "y":0}, {"label":"KNOB!", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"A", "x":0, "y":1}, {"label":"S", "x":1, "y":1}, {"label":"D", "x":2, "y":1}, {"label":"F", "x":3, "y":1}, {"label":"G", "x":4, "y":1}, {"label":"Any", "x":5, "y":1}, {"label":"H", "x":6, "y":1}, {"label":"J", "x":7, "y":1}, {"label":"K", "x":8, "y":1}, {"label":"L", "x":9, "y":1}, {"label":":", "x":10, "y":1}, {"label":"Z", "x":0, "y":2}, {"label":"X", "x":1, "y":2}, {"label":"C", "x":2, "y":2}, {"label":"V", "x":3, "y":2}, {"label":"B", "x":4, "y":2}, {"label":"Any", "x":5, "y":2}, {"label":"N", "x":6, "y":2}, {"label":"M", "x":7, "y":2}, {"label":"<", "x":8, "y":2}, {"label":">", "x":9, "y":2}, {"label":"?", "x":10, "y":2}, {"label":"Ctrl", "x":0.5, "y":3, "w":1.25}, {"label":"Alt", "x":1.75, "y":3, "w":1.25}, {"label":"Raise", "x":3, "y":3}, {"label":"", "x":4, "y":3, "w":3}, {"label":"Lower", "x":7, "y":3}, {"label":"Win", "x":8, "y":3, "w":1.25}, {"label":"Fn", "x":9.25, "y":3, "w":1.25}] + }, + + "LAYOUT_2x2uc": { + "layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "y":0}, {"label":"KNOB!", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"A", "x":0, "y":1}, {"label":"S", "x":1, "y":1}, {"label":"D", "x":2, "y":1}, {"label":"F", "x":3, "y":1}, {"label":"G", "x":4, "y":1}, {"label":"Any", "x":5, "y":1}, {"label":"H", "x":6, "y":1}, {"label":"J", "x":7, "y":1}, {"label":"K", "x":8, "y":1}, {"label":"L", "x":9, "y":1}, {"label":":", "x":10, "y":1}, {"label":"Z", "x":0, "y":2}, {"label":"X", "x":1, "y":2}, {"label":"C", "x":2, "y":2}, {"label":"V", "x":3, "y":2}, {"label":"B", "x":4, "y":2}, {"label":"Any", "x":5, "y":2}, {"label":"N", "x":6, "y":2}, {"label":"M", "x":7, "y":2}, {"label":"<", "x":8, "y":2}, {"label":">", "x":9, "y":2}, {"label":"?", "x":10, "y":2}, {"label":"Ctrl", "x":0.5, "y":3, "w":1.25}, {"label":"Alt", "x":1.75, "y":3, "w":1.25}, {"label":"", "x":3, "y":3, "w":2}, {"label":"Any", "x":5, "y":3}, {"label":"", "x":6, "y":3, "w":2}, {"label":"Win", "x":8, "y":3, "w":1.25}, {"label":"Fn", "x":9.25, "y":3, "w":1.25}] + }, + + "LAYOUT_7uc": { + "layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "y":0}, {"label":"KNOB!", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"A", "x":0, "y":1}, {"label":"S", "x":1, "y":1}, {"label":"D", "x":2, "y":1}, {"label":"F", "x":3, "y":1}, {"label":"G", "x":4, "y":1}, {"label":"Any", "x":5, "y":1}, {"label":"H", "x":6, "y":1}, {"label":"J", "x":7, "y":1}, {"label":"K", "x":8, "y":1}, {"label":"L", "x":9, "y":1}, {"label":":", "x":10, "y":1}, {"label":"Z", "x":0, "y":2}, {"label":"X", "x":1, "y":2}, {"label":"C", "x":2, "y":2}, {"label":"V", "x":3, "y":2}, {"label":"B", "x":4, "y":2}, {"label":"Any", "x":5, "y":2}, {"label":"N", "x":6, "y":2}, {"label":"M", "x":7, "y":2}, {"label":"<", "x":8, "y":2}, {"label":">", "x":9, "y":2}, {"label":"?", "x":10, "y":2}, {"label":"Ctrl", "x":0.5, "y":3, "w":1.5}, {"label":"", "x":2, "y":3, "w":7}, {"label":"Alt", "x":9, "y":3, "w":1.5}] + }, + + "LAYOUT_2x3uc": { + "layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "y":0}, {"label":"KNOB!", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"A", "x":0, "y":1}, {"label":"S", "x":1, "y":1}, {"label":"D", "x":2, "y":1}, {"label":"F", "x":3, "y":1}, {"label":"G", "x":4, "y":1}, {"label":"Any", "x":5, "y":1}, {"label":"H", "x":6, "y":1}, {"label":"J", "x":7, "y":1}, {"label":"K", "x":8, "y":1}, {"label":"L", "x":9, "y":1}, {"label":":", "x":10, "y":1}, {"label":"Z", "x":0, "y":2}, {"label":"X", "x":1, "y":2}, {"label":"C", "x":2, "y":2}, {"label":"V", "x":3, "y":2}, {"label":"B", "x":4, "y":2}, {"label":"Any", "x":5, "y":2}, {"label":"N", "x":6, "y":2}, {"label":"M", "x":7, "y":2}, {"label":"<", "x":8, "y":2}, {"label":">", "x":9, "y":2}, {"label":"?", "x":10, "y":2}, {"label":"Ctrl", "x":0.5, "y":3}, {"label":"Alt", "x":1.5, "y":3}, {"label":"", "x":2.5, "y":3, "w":3}, {"label":"", "x":5.5, "y":3, "w":3}, {"label":"Win", "x":8.5, "y":3}, {"label":"Fn", "x":9.5, "y":3}] + }, + + "LAYOUT_6uc": { + "layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "y":0}, {"label":"KNOB!", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"A", "x":0, "y":1}, {"label":"S", "x":1, "y":1}, {"label":"D", "x":2, "y":1}, {"label":"F", "x":3, "y":1}, {"label":"G", "x":4, "y":1}, {"label":"Any", "x":5, "y":1}, {"label":"H", "x":6, "y":1}, {"label":"J", "x":7, "y":1}, {"label":"K", "x":8, "y":1}, {"label":"L", "x":9, "y":1}, {"label":":", "x":10, "y":1}, {"label":"Z", "x":0, "y":2}, {"label":"X", "x":1, "y":2}, {"label":"C", "x":2, "y":2}, {"label":"V", "x":3, "y":2}, {"label":"B", "x":4, "y":2}, {"label":"Any", "x":5, "y":2}, {"label":"N", "x":6, "y":2}, {"label":"M", "x":7, "y":2}, {"label":"<", "x":8, "y":2}, {"label":">", "x":9, "y":2}, {"label":"?", "x":10, "y":2}, {"label":"Ctrl", "x":0.5, "y":3}, {"label":"Alt", "x":1.5, "y":3}, {"label":"", "x":2.5, "y":3, "w":6}, {"label":"Win", "x":8.5, "y":3}, {"label":"Fn", "x":9.5, "y":3}] + } + } +} diff --git a/keyboards/packrat/keymaps/3uc/config.h b/keyboards/packrat/keymaps/3uc/config.h new file mode 100644 index 000000000000..9ff2d89acc80 --- /dev/null +++ b/keyboards/packrat/keymaps/3uc/config.h @@ -0,0 +1,19 @@ +/* Copyright 2021 drhigsby + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#define COMBO_COUNT 7 +#define COMBO_TERM 40 diff --git a/keyboards/packrat/keymaps/3uc/keymap.c b/keyboards/packrat/keymaps/3uc/keymap.c new file mode 100644 index 000000000000..f037a47acba8 --- /dev/null +++ b/keyboards/packrat/keymaps/3uc/keymap.c @@ -0,0 +1,92 @@ +/* Copyright 2021 drhigsby + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layers{ + _BASE, + _CODE, + _MATH, + _FUNC +}; + +enum combo_events { + combo_ESC, + combo_BACK, + combo_TAB, + combo_DELETE, + combo_ENTER, + combo_LPRN, + combo_RPRN, +}; + +const uint16_t PROGMEM esc_combo[] = {KC_Q, KC_W, COMBO_END}; +const uint16_t PROGMEM bspc_combo[] = {KC_O, KC_P, COMBO_END}; +const uint16_t PROGMEM tab_combo[] = {KC_A, KC_S, COMBO_END}; +const uint16_t PROGMEM del_combo[] = {KC_I, KC_O, COMBO_END}; +const uint16_t PROGMEM enter_combo[] = {KC_L, KC_SCLN, COMBO_END}; +const uint16_t PROGMEM lprn_combo[] = {KC_X, KC_C, COMBO_END}; +const uint16_t PROGMEM rprn_combo[] = {KC_COMM, KC_DOT, COMBO_END}; + + +combo_t key_combos[COMBO_COUNT] = { + [combo_ESC] = COMBO(esc_combo, KC_ESC), + [combo_BACK] = COMBO(bspc_combo, KC_BSPC), + [combo_TAB] = COMBO(tab_combo, KC_TAB), + [combo_DELETE] = COMBO(del_combo, KC_DEL), + [combo_ENTER] = COMBO(enter_combo, KC_ENT), + [combo_LPRN] = COMBO(lprn_combo, KC_LPRN), + [combo_RPRN] = COMBO(rprn_combo, KC_RPRN), +}; + +#define BASE TO(_BASE) +#define CODE MO(_CODE) +#define MATH TG(_MATH) +#define FUNC MO(_FUNC) +#define xxx KC_TRNS + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_3uc( + KC_Q, KC_W, KC_E, KC_R, KC_T, MATH, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_HOME, KC_H, KC_J, KC_K, KC_L, KC_SCLN, + LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_END, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), + KC_LALT, KC_LCTL, CODE, KC_SPC, CODE, KC_RGUI, FUNC + ), + + [_CODE] = LAYOUT_3uc( + KC_1, KC_2, KC_3, KC_4, KC_5, xxx, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_PGUP, KC_CIRC, KC_AMPR, KC_ASTR, KC_MINS, KC_EQL, + KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, xxx, KC_PGDN, xxx, KC_PIPE, KC_BSLS, KC_DQUO, KC_QUOT, + xxx, xxx, xxx, xxx, xxx, KC_PGUP, KC_PGDN + ), + + [_MATH] = LAYOUT_3uc( + xxx, xxx, xxx, xxx, xxx, BASE, xxx, KC_P7, KC_P8, KC_P9, KC_PPLS, + xxx, xxx, xxx, xxx, xxx, xxx, xxx, KC_P4, KC_P5, KC_P6, KC_PCMM, + xxx, xxx, xxx, xxx, xxx, xxx, xxx, KC_P1, KC_P2, KC_P3, KC_PEQL, + xxx, xxx, xxx, xxx, KC_P0, KC_PDOT, KC_PENT + + ), + + [_FUNC] = LAYOUT_3uc( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, xxx, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, + xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, KC_F11, KC_F12, + xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, + xxx, xxx, xxx, xxx, xxx, xxx, xxx + ) + +}; + diff --git a/keyboards/packrat/keymaps/3uc/readme.md b/keyboards/packrat/keymaps/3uc/readme.md new file mode 100644 index 000000000000..603f82a812ad --- /dev/null +++ b/keyboards/packrat/keymaps/3uc/readme.md @@ -0,0 +1 @@ +# Centered 3uC Packrat Keymap diff --git a/keyboards/anavi/macropad2/keymaps/jitsi/rules.mk b/keyboards/packrat/keymaps/3uc/rules.mk similarity index 100% rename from keyboards/anavi/macropad2/keymaps/jitsi/rules.mk rename to keyboards/packrat/keymaps/3uc/rules.mk diff --git a/keyboards/packrat/keymaps/default/config.h b/keyboards/packrat/keymaps/default/config.h new file mode 100644 index 000000000000..9ff2d89acc80 --- /dev/null +++ b/keyboards/packrat/keymaps/default/config.h @@ -0,0 +1,19 @@ +/* Copyright 2021 drhigsby + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#define COMBO_COUNT 7 +#define COMBO_TERM 40 diff --git a/keyboards/packrat/keymaps/default/keymap.c b/keyboards/packrat/keymaps/default/keymap.c new file mode 100644 index 000000000000..74df6a73e60d --- /dev/null +++ b/keyboards/packrat/keymaps/default/keymap.c @@ -0,0 +1,81 @@ +/* Copyright 2021 drhigsby + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layers{ + _BASE, + _CODE, + _FUNC +}; + +enum combo_events { + combo_ESC, + combo_BACK, + combo_TAB, + combo_DELETE, + combo_ENTER, + combo_LPRN, + combo_RPRN, +}; + +const uint16_t PROGMEM esc_combo[] = {KC_Q, KC_W, COMBO_END}; +const uint16_t PROGMEM bspc_combo[] = {KC_O, KC_P, COMBO_END}; +const uint16_t PROGMEM tab_combo[] = {KC_A, KC_S, COMBO_END}; +const uint16_t PROGMEM del_combo[] = {KC_I, KC_O, COMBO_END}; +const uint16_t PROGMEM enter_combo[] = {KC_L, KC_SCLN, COMBO_END}; +const uint16_t PROGMEM lprn_combo[] = {KC_X, KC_C, COMBO_END}; +const uint16_t PROGMEM rprn_combo[] = {KC_COMM, KC_DOT, COMBO_END}; + + +combo_t key_combos[COMBO_COUNT] = { + [combo_ESC] = COMBO(esc_combo, KC_ESC), + [combo_BACK] = COMBO(bspc_combo, KC_BSPC), + [combo_TAB] = COMBO(tab_combo, KC_TAB), + [combo_DELETE] = COMBO(del_combo, KC_DEL), + [combo_ENTER] = COMBO(enter_combo, KC_ENT), + [combo_LPRN] = COMBO(lprn_combo, KC_LPRN), + [combo_RPRN] = COMBO(rprn_combo, KC_RPRN), +}; + +#define CODE MO(_CODE) +#define FUNC MO(_FUNC) +#define xxx KC_TRNS + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_2x3uc( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_DEL, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_HOME, KC_H, KC_J, KC_K, KC_L, KC_SCLN, + LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_END, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), + KC_LCTL, KC_LALT, CODE, KC_SPC, KC_RGUI, FUNC + ), + + [_CODE] = LAYOUT_2x3uc( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_GRV, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CAPS, KC_CIRC, KC_AMPR, KC_ASTR, KC_MINS, KC_EQL, + KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, xxx, xxx, xxx, KC_PIPE, KC_BSLS, KC_DQUO, KC_QUOT, + xxx, xxx, xxx, xxx, KC_PGUP, KC_PGDN + ), + + [_FUNC] = LAYOUT_2x3uc( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, xxx, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, + xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, KC_F11, KC_F12, + xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, + xxx, xxx, xxx, xxx, xxx, xxx + ) + +}; + diff --git a/keyboards/packrat/keymaps/default/readme.md b/keyboards/packrat/keymaps/default/readme.md new file mode 100644 index 000000000000..3e6ed27b5793 --- /dev/null +++ b/keyboards/packrat/keymaps/default/readme.md @@ -0,0 +1,3 @@ +# Default Packrat Keymap + +The default Packrat Keymap uses the 2x3uC layout. diff --git a/keyboards/anavi/macropad2/keymaps/msteams/rules.mk b/keyboards/packrat/keymaps/default/rules.mk similarity index 100% rename from keyboards/anavi/macropad2/keymaps/msteams/rules.mk rename to keyboards/packrat/keymaps/default/rules.mk diff --git a/keyboards/packrat/packrat.c b/keyboards/packrat/packrat.c new file mode 100644 index 000000000000..0f4a479956a0 --- /dev/null +++ b/keyboards/packrat/packrat.c @@ -0,0 +1,28 @@ +/* Copyright 2021 drhigsby + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "packrat.h" + +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + if (index == 0) { + if (clockwise) { + tap_code_delay(KC_VOLU, 10); + } else { + tap_code_delay(KC_VOLD, 10); + } + } + return true; +} diff --git a/keyboards/packrat/packrat.h b/keyboards/packrat/packrat.h new file mode 100644 index 000000000000..91d0af7b7ad5 --- /dev/null +++ b/keyboards/packrat/packrat.h @@ -0,0 +1,79 @@ +/* Copyright 2021 drhigsby + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_3uc( \ + 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, \ + k301, k302, k303, k305, k307, k308, k309 \ +) { \ + { 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 }, \ + { KC_NO, k301, k302, k303, KC_NO, k305, KC_NO, k307, k308, k309 } \ +} + +#define LAYOUT_2x2uc( \ + 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, \ + k301, k302, k303, k305, k307, k308, k309 \ +) { \ + { 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 }, \ + { KC_NO, k301, k302, k303, KC_NO, k305, KC_NO, k307, k308, k309 } \ +} + +#define LAYOUT_7uc( \ + 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, \ + k301, k305, k309 \ +) { \ + { 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 }, \ + { KC_NO, k301, KC_NO, KC_NO, KC_NO, k305, KC_NO, KC_NO, KC_NO, k309 } \ +} + +#define LAYOUT_2x3uc( \ + 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, \ + k301, k302, k303, k307, k308, k309 \ +) { \ + { 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 }, \ + { KC_NO, k301, k302, k303, KC_NO, KC_NO, KC_NO, k307, k308, k309 } \ +} + +#define LAYOUT_6uc( \ + 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, \ + k301, k302, k305, k308, k309 \ +) { \ + { 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 }, \ + { KC_NO, k301, k302, KC_NO, KC_NO, k305, KC_NO, KC_NO, k308, k309 } \ +} diff --git a/keyboards/packrat/readme.md b/keyboards/packrat/readme.md new file mode 100644 index 000000000000..a53377f870a3 --- /dev/null +++ b/keyboards/packrat/readme.md @@ -0,0 +1,25 @@ +# Packrat + +![Packrat](https://i.imgur.com/t6vWYIbh.jpeg) + +Full Gallery: https://imgur.com/gallery/fZklCG6 + +Packrat is an 11u wide ortholinear keyboard featuring multiple bottom row options and top-centered rotary encoder support. + +* Keyboard Maintainer: [H. Bond](https://github.com/drhigsby) +* Hardware Supported: Packrat (https://github.com/drhigsby/packrat) +* Hardware Availability: cases available at TBD / make your own + +Make example for this keyboard (after setting up your build environment): + + make packrat:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `RESET` if it is available diff --git a/keyboards/packrat/rules.mk b/keyboards/packrat/rules.mk new file mode 100644 index 000000000000..9c57acbd15d1 --- /dev/null +++ b/keyboards/packrat/rules.mk @@ -0,0 +1,21 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 +LTO_ENABLE = no # Use link time optimization +ENCODER_ENABLE = yes diff --git a/keyboards/paladin64/config.h b/keyboards/paladin64/config.h deleted file mode 100755 index fa588ee35416..000000000000 --- a/keyboards/paladin64/config.h +++ /dev/null @@ -1,116 +0,0 @@ -#ifndef CONFIG_H -#define CONFIG_H - -#include "config_common.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x6060 -#define DEVICE_VER 0x0001 -#define MANUFACTURER inachie -#define PRODUCT paladin64 - -/* key matrix size */ -#define MATRIX_ROWS 8 -#define MATRIX_COLS 8 - -#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 - - /* synchronous, odd parity, 1-bit stop, 8-bit data, sample at falling - * edge */ - /* set DDR of CLOCK as input to be slave */ - #define PS2_USART_INIT() do { \ - PS2_CLOCK_DDR &= ~(1<", "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}] - }, - - "LAYOUT_60_ansi": { - "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}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"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}] - }, - - "LAYOUT_infinity": { - "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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":6}, {"label":"Alt", "x":10, "y":4, "w":1.5}, {"label":"Win", "x":11.5, "y":4}, {"label":"Menu", "x":12.5, "y":4}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}] - }, - - "LAYOUT_aek_103": { - "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}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4, "w":1.25}, {"label":"Alt", "x":2.75, "y":4, "w":1.5}, {"x":4.25, "y":4, "w":6.5}, {"label":"Alt", "x":10.75, "y":4, "w":1.5}, {"label":"Menu", "x":12.25, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}] - }, - - "LAYOUT_iso": { - "layout": [{"label":"\u00ac", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"\"", "x":2, "y":0}, {"label":"\u00a3", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"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":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"@", "x":11.75, "y":2}, {"label":"~", "x":12.75, "y":2}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"label":"|", "x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"AltGr", "x":11, "y":4, "w":1.5}, {"label":"Menu", "x":12.5, "y":4}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}] - } - } - } \ No newline at end of file diff --git a/keyboards/paladin64/keymaps/default/keymap.c b/keyboards/paladin64/keymaps/default/keymap.c deleted file mode 100755 index 63c1f1f0b383..000000000000 --- a/keyboards/paladin64/keymaps/default/keymap.c +++ /dev/null @@ -1,90 +0,0 @@ -#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_APP, 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_APP, 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_APP, 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, KC_TRNS, RGB_MOD, KC_TRNS, RGB_TOG), - - /* AutoMouse */ - LAYOUT_all( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) - -}; - -void matrix_init_user(void) { -} - -void matrix_scan_user(void) { -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - - if (usb_led & (1 << USB_LED_NUM_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_CAPS_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_SCROLL_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_COMPOSE)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_KANA)) { - - } else { - - } - -} - diff --git a/keyboards/paladin64/paladin64.c b/keyboards/paladin64/paladin64.c deleted file mode 100755 index 5ef78d5bf77b..000000000000 --- 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 9666b089884c..000000000000 --- 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 8d62bb6b717b..000000000000 --- 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 a4fb2cf3ac73..000000000000 --- a/keyboards/paladin64/rules.mk +++ /dev/null @@ -1,31 +0,0 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = atmel-dfu - -# Build Options -# comment out to disable the options. -# -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration -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/palette1202/config.h b/keyboards/palette1202/config.h index 411e5f9165b9..e0be3bd6c74b 100644 --- a/keyboards/palette1202/config.h +++ b/keyboards/palette1202/config.h @@ -48,7 +48,7 @@ along with this program. If not, see . #define DEBOUNCE 5 /* Register custom font file */ -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE #define OLED_FONT_H "lib/glcdfont.c" #endif diff --git a/keyboards/palette1202/info.json b/keyboards/palette1202/info.json index 847948626e4c..e58f2fbb77dc 100644 --- a/keyboards/palette1202/info.json +++ b/keyboards/palette1202/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Palette1202", "url": "https://github.com/niltea/Palette1202", "maintainer": "niltea", - "width": 5, - "height": 3.5, "layouts": { "LAYOUT": { - "key_count": 14, "layout": [ { "label":"Tab", "x": 0, "y": 0.75 }, { "label":"GUI + A", "x": 1, "y": 0.25 }, diff --git a/keyboards/palette1202/keymaps/default/keymap.c b/keyboards/palette1202/keymaps/default/keymap.c index b55b39a40ff8..a1faa8558f42 100644 --- a/keyboards/palette1202/keymaps/default/keymap.c +++ b/keyboards/palette1202/keymaps/default/keymap.c @@ -14,7 +14,7 @@ * along with this program. If not, see . */ #include QMK_KEYBOARD_H -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE #include #include "lib/oled_helper.h" #endif @@ -273,8 +273,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } // OLED Display -#ifdef OLED_DRIVER_ENABLE -void oled_task_user(void) { +#ifdef OLED_ENABLE +bool oled_task_user(void) { // get layer Number uint8_t currentDefault = get_highest_layer(default_layer_state); uint8_t currentLayer = get_highest_layer(layer_state); @@ -326,5 +326,6 @@ void oled_task_user(void) { // pressed key / 4th line of the logo render_row(3, " "); } + return false; } -#endif // #ifdef OLED_DRIVER_ENABLE +#endif // #ifdef OLED_ENABLE diff --git a/keyboards/palette1202/keymaps/key-check/keymap.c b/keyboards/palette1202/keymaps/key-check/keymap.c index 207cf1c2b80d..00666007a2bd 100644 --- a/keyboards/palette1202/keymaps/key-check/keymap.c +++ b/keyboards/palette1202/keymaps/key-check/keymap.c @@ -14,7 +14,7 @@ * along with this program. If not, see . */ #include QMK_KEYBOARD_H -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE #include #include "lib/oled_helper.h" #endif @@ -141,11 +141,12 @@ bool encoder_update_user(uint8_t index, bool clockwise) { } // OLED Display -#ifdef OLED_DRIVER_ENABLE -void oled_task_user(void) { +#ifdef OLED_ENABLE +bool oled_task_user(void) { render_row(0, "TEST"); render_row(1, "test"); render_row(2, "TEST"); render_row(3, "test"); + return false; } -#endif // #ifdef OLED_DRIVER_ENABLE +#endif // #ifdef OLED_ENABLE diff --git a/keyboards/palette1202/lib/oled_helper.c b/keyboards/palette1202/lib/oled_helper.c index d4a0b2eb5f6b..5fb3cc7539c9 100644 --- a/keyboards/palette1202/lib/oled_helper.c +++ b/keyboards/palette1202/lib/oled_helper.c @@ -1,4 +1,4 @@ -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE #include QMK_KEYBOARD_H #include #include diff --git a/keyboards/palette1202/lib/oled_helper.h b/keyboards/palette1202/lib/oled_helper.h index 0d1dde461dd7..c844264c3446 100644 --- a/keyboards/palette1202/lib/oled_helper.h +++ b/keyboards/palette1202/lib/oled_helper.h @@ -1,7 +1,7 @@ #pragma once -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE void render_row(int row, const char* status); -#endif /* #ifdef OLED_DRIVER_ENABLE */ - +#endif /* #ifdef OLED_ENABLE */ + diff --git a/keyboards/palette1202/palette1202.c b/keyboards/palette1202/palette1202.c index 74ce08319e31..a193964e3e9c 100644 --- a/keyboards/palette1202/palette1202.c +++ b/keyboards/palette1202/palette1202.c @@ -16,9 +16,8 @@ #include "palette1202.h" // initialize OLED if OLED is enabled -#ifdef OLED_DRIVER_ENABLE - oled_rotation_t oled_init_user(oled_rotation_t rotation) { +#ifdef OLED_ENABLE +oled_rotation_t oled_init_kb(oled_rotation_t rotation) { return OLED_ROTATION_180; - } +} #endif - \ No newline at end of file diff --git a/keyboards/palette1202/rules.mk b/keyboards/palette1202/rules.mk index 70a2f80a5aa0..6356893920cb 100644 --- a/keyboards/palette1202/rules.mk +++ b/keyboards/palette1202/rules.mk @@ -2,34 +2,24 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes # Enable support for rotary encoders -OLED_DRIVER_ENABLE = yes # Enable support for OLED display +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enable support for OLED display # Additional code SRC += lib/oled_helper.c # Adding OLED diff --git a/keyboards/panc40/info.json b/keyboards/panc40/info.json index dc6b9e152ffe..834fef0a5dcf 100644 --- a/keyboards/panc40/info.json +++ b/keyboards/panc40/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Panc40", "url": "", "maintainer": "qmk", - "width": 12, - "height": 4, "layouts": { "LAYOUT_all": { - "key_count": 45, "layout": [ {"label":"K00", "x":0, "y":0}, {"label":"K01", "x":1, "y":0}, @@ -56,7 +53,6 @@ ] }, "LAYOUT_minorca": { - "key_count": 42, "layout": [ {"label":"K00", "x":0, "y":0}, {"label":"K01", "x":1, "y":0}, @@ -103,7 +99,6 @@ ] }, "LAYOUT_sebright": { - "key_count": 41, "layout": [ {"label":"K00", "x":0, "y":0}, {"label":"K01", "x":1, "y":0}, diff --git a/keyboards/panc40/rules.mk b/keyboards/panc40/rules.mk index 3819d14045d9..6f114436f0b8 100644 --- a/keyboards/panc40/rules.mk +++ b/keyboards/panc40/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/panc60/info.json b/keyboards/panc60/info.json index fe919e8b91d0..1d949b3be620 100644 --- a/keyboards/panc60/info.json +++ b/keyboards/panc60/info.json @@ -2,8 +2,6 @@ "keyboard_name": "panc60", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"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}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}, {"x":12, "y":3}, {"x":13, "y":3}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}] diff --git a/keyboards/panc60/rules.mk b/keyboards/panc60/rules.mk index 1c4d832054cd..1c8a2d105d36 100644 --- a/keyboards/panc60/rules.mk +++ b/keyboards/panc60/rules.mk @@ -2,17 +2,10 @@ MCU = atmega32a # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid # build options -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes EXTRAKEY_ENABLE = yes CONSOLE_ENABLE = no diff --git a/keyboards/pandora/info.json b/keyboards/pandora/info.json index 03b75b361728..ed84808c5d0e 100644 --- a/keyboards/pandora/info.json +++ b/keyboards/pandora/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Pandora", "url": "", "maintainer": "Koobaczech", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { "layout": [{"label":"0,0", "x":0, "y":0}, {"label":"0,1", "x":1, "y":0}, {"label":"0,2", "x":2, "y":0}, {"label":"0,3", "x":3, "y":0}, {"label":"0,4", "x":4, "y":0}, {"label":"0,5", "x":5, "y":0}, {"label":"0,6", "x":6, "y":0}, {"label":"0,7", "x":7, "y":0}, {"label":"0,8", "x":8, "y":0}, {"label":"0,9", "x":9, "y":0}, {"label":"0,10", "x":10, "y":0}, {"label":"0,11", "x":11, "y":0}, {"label":"0,12", "x":12, "y":0}, {"label":"0,13", "x":13, "y":0}, {"label":"0,14", "x":14, "y":0}, {"label":"1,0", "x":0, "y":1, "w":1.5}, {"label":"1,1", "x":1.5, "y":1}, {"label":"1,2", "x":2.5, "y":1}, {"label":"1,3", "x":3.5, "y":1}, {"label":"1,4", "x":4.5, "y":1}, {"label":"1,5", "x":5.5, "y":1}, {"label":"1,6", "x":6.5, "y":1}, {"label":"1,7", "x":7.5, "y":1}, {"label":"1,8", "x":8.5, "y":1}, {"label":"1,9", "x":9.5, "y":1}, {"label":"1,10", "x":10.5, "y":1}, {"label":"1,11", "x":11.5, "y":1}, {"label":"1,12", "x":12.5, "y":1}, {"label":"1,13", "x":13.5, "y":1, "w":1.5}, {"label":"2,0", "x":0, "y":2, "w":1.75}, {"label":"2,1", "x":1.75, "y":2}, {"label":"2,2", "x":2.75, "y":2}, {"label":"2,3", "x":3.75, "y":2}, {"label":"2,4", "x":4.75, "y":2}, {"label":"2,5", "x":5.75, "y":2}, {"label":"2,6", "x":6.75, "y":2}, {"label":"2,7", "x":7.75, "y":2}, {"label":"2,8", "x":8.75, "y":2}, {"label":"2,9", "x":9.75, "y":2}, {"label":"2,10", "x":10.75, "y":2}, {"label":"2,11", "x":11.75, "y":2}, {"label":"2,12", "x":12.75, "y":2}, {"label":"2,13", "x":13.75, "y":2, "w":1.25}, {"label":"3,0", "x":0, "y":3, "w":1.25}, {"label":"3,1", "x":1.25, "y":3}, {"label":"3,2", "x":2.25, "y":3}, {"label":"3,3", "x":3.25, "y":3}, {"label":"3,4", "x":4.25, "y":3}, {"label":"3,5", "x":5.25, "y":3}, {"label":"3,6", "x":6.25, "y":3}, {"label":"3,7", "x":7.25, "y":3}, {"label":"3,8", "x":8.25, "y":3}, {"label":"3,9", "x":9.25, "y":3}, {"label":"3,10", "x":10.25, "y":3}, {"label":"3,11", "x":11.25, "y":3}, {"label":"3,12", "x":12.25, "y":3, "w":1.75}, {"label":"3,13", "x":14, "y":3}, {"label":"4,0", "x":0, "y":4, "w":1.25}, {"label":"4,1", "x":1.25, "y":4, "w":1.25}, {"label":"4,2", "x":2.5, "y":4, "w":1.25}, {"label":"4,6", "x":3.75, "y":4, "w":6.25}, {"label":"4,10", "x":10, "y":4, "w":1.25}, {"label":"4,11", "x":11.25, "y":4, "w":1.25}, {"label":"4,12", "x":12.5, "y":4, "w":1.25}, {"label":"4,13", "x":13.75, "y":4, "w":1.25}] diff --git a/keyboards/pandora/keymaps/default/keymap.c b/keyboards/pandora/keymaps/default/keymap.c index eea641d19511..1878f078cef5 100644 --- a/keyboards/pandora/keymaps/default/keymap.c +++ b/keyboards/pandora/keymaps/default/keymap.c @@ -30,7 +30,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { } // Encoder click function -void dip_switch_update_user(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { /* First encoder */ case 0: @@ -39,4 +39,5 @@ void dip_switch_update_user(uint8_t index, bool active) { } break; } + return true; } diff --git a/keyboards/pandora/keymaps/via/keymap.c b/keyboards/pandora/keymaps/via/keymap.c index ae97463f6129..eb2007447b8b 100644 --- a/keyboards/pandora/keymaps/via/keymap.c +++ b/keyboards/pandora/keymaps/via/keymap.c @@ -45,7 +45,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { } // Encoder click function -void dip_switch_update_user(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { /* First encoder */ case 0: @@ -54,4 +54,5 @@ void dip_switch_update_user(uint8_t index, bool active) { } break; } + return true; } diff --git a/keyboards/pandora/rules.mk b/keyboards/pandora/rules.mk index 3d5f2f0bda53..44ae454d8a88 100644 --- a/keyboards/pandora/rules.mk +++ b/keyboards/pandora/rules.mk @@ -7,19 +7,16 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output DIP_SWITCH_ENABLE = yes ENCODER_ENABLE = yes -OLED_DRIVER_ENABLE = no # Future release +OLED_ENABLE = no # Future release diff --git a/keyboards/pdxkbc/config.h b/keyboards/pdxkbc/config.h index 414c1024a5a7..dad039633010 100644 --- a/keyboards/pdxkbc/config.h +++ b/keyboards/pdxkbc/config.h @@ -123,59 +123,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -194,26 +141,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/pdxkbc/info.json b/keyboards/pdxkbc/info.json index 6c32ea753711..21631ccc2a03 100644 --- a/keyboards/pdxkbc/info.json +++ b/keyboards/pdxkbc/info.json @@ -2,11 +2,9 @@ "keyboard_name": "pdxkbc", "url": "", "maintainer": "qmk", - "width": 2, - "height": 3, "layouts": { "LAYOUT": { "layout": [{"label":"reddit", "x":0, "y":0}, {"label":"discord", "x":1, "y":0}, {"label":"badge", "x":0, "y":1}, {"label":"hack", "x":1, "y":1}, {"label":"volu", "x":0, "y":2}, {"label":"vold", "x":1, "y":2}] } } -} \ No newline at end of file +} diff --git a/keyboards/pdxkbc/keymaps/default/keymap.c b/keyboards/pdxkbc/keymaps/default/keymap.c index feb344704982..2c208dea5d55 100644 --- a/keyboards/pdxkbc/keymaps/default/keymap.c +++ b/keyboards/pdxkbc/keymaps/default/keymap.c @@ -57,9 +57,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return true; } - -void matrix_init_user(void) {} - -void matrix_scan_user(void) {} - -void led_set_user(uint8_t usb_led) {} diff --git a/keyboards/pdxkbc/rules.mk b/keyboards/pdxkbc/rules.mk index f1d011ad6a08..182df619f905 100644 --- a/keyboards/pdxkbc/rules.mk +++ b/keyboards/pdxkbc/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/pearl/info.json b/keyboards/pearl/info.json index c86fcb9dfa7e..6b4cb0a5ac31 100644 --- a/keyboards/pearl/info.json +++ b/keyboards/pearl/info.json @@ -1,8 +1,6 @@ { "keyboard_name": "Pearl", "maintainer": "qmk", - "width": 13, - "height": 4, "layouts": { "LAYOUT_all": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"{", "x":11, "y":0}, {"label":"Backspace", "x":12, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"A", "x":1.5, "y":1}, {"label":"S", "x":2.5, "y":1}, {"label":"D", "x":3.5, "y":1}, {"label":"F", "x":4.5, "y":1}, {"label":"G", "x":5.5, "y":1}, {"label":"H", "x":6.5, "y":1}, {"label":"J", "x":7.5, "y":1}, {"label":"K", "x":8.5, "y":1}, {"label":"L", "x":9.5, "y":1}, {"label":":", "x":10.5, "y":1}, {"label":"\\", "x":11.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"Z", "x":1.75, "y":2}, {"label":"X", "x":2.75, "y":2}, {"label":"C", "x":3.75, "y":2}, {"label":"V", "x":4.75, "y":2}, {"label":"B", "x":5.75, "y":2}, {"label":"N", "x":6.75, "y":2}, {"label":"M", "x":7.75, "y":2}, {"label":"<", "x":8.75, "y":2}, {"label":">", "x":9.75, "y":2}, {"label":"?", "x":10.75, "y":2}, {"label":"Shift", "x":11.75, "y":2, "w":1.25}, {"label":"Alt", "x":1.13, "y":3}, {"label":"Ctrl", "x":2.13, "y":3, "w":1.25}, {"label":"Win", "x":3.375, "y":3, "w":1.25}, {"label":"Shift", "x":4.625, "y":3, "w":2.25}, {"x":6.875, "y":3, "w":1.25}, {"x":8.125, "y":3, "w":1.5}, {"label":"Menu", "x":9.625, "y":3}, {"label":"Fn", "x":10.63, "y":3, "w":1.25}] diff --git a/keyboards/pearl/keymaps/cijanzen/rules.mk b/keyboards/pearl/keymaps/cijanzen/rules.mk index 90be4603ab0a..c800dc98f8e9 100644 --- a/keyboards/pearl/keymaps/cijanzen/rules.mk +++ b/keyboards/pearl/keymaps/cijanzen/rules.mk @@ -1,5 +1,5 @@ # build options -BOOTMAGIC_ENABLE = full +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no EXTRAKEY_ENABLE = yes CONSOLE_ENABLE = no diff --git a/keyboards/pearl/rules.mk b/keyboards/pearl/rules.mk index 981f6b514f96..2dba9c3eb9ec 100644 --- a/keyboards/pearl/rules.mk +++ b/keyboards/pearl/rules.mk @@ -2,17 +2,10 @@ MCU = atmega32a # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid # build options -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no EXTRAKEY_ENABLE = yes CONSOLE_ENABLE = no diff --git a/keyboards/pearlboards/pandora/config.h b/keyboards/pearlboards/pandora/config.h new file mode 100644 index 000000000000..2df4bcffc852 --- /dev/null +++ b/keyboards/pearlboards/pandora/config.h @@ -0,0 +1,79 @@ +/* +Copyright 2021 Koobaczech + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x6963 +#define PRODUCT_ID 0x6963 +#define DEVICE_VER 0x0002 +#define MANUFACTURER Koobaczech +#define PRODUCT Pandora + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * 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 { B4, D7, D6, B3, B0 } +#define MATRIX_COL_PINS { D2, D1, D0, D3, D5, B5, B6, B7, D4, C6, C7, F0, F1, F4, F7 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Encoder Function */ +#define ENCODERS_PAD_A { F6 } +#define ENCODERS_PAD_B { F5 } +//#define ENCODER_DIRECTION_FLIP +#define ENCODER_RESOLUTION 1 +#define DIP_SWITCH_PINS { B2, B5 } + +/*== all animations enabled ==*/ +/* If RGBLIGHT_SLEEP defined, the RGB lighting will be switched off when the host goes to sleep */ +#define RGB_DI_PIN B1 +#ifdef RGB_DI_PIN +# define RGBLIGHT_ANIMATIONS +# define RGBLED_NUM 12 +# define RGBLIGHT_HUE_STEP 8 +# define RGBLIGHT_SAT_STEP 8 +# define RGBLIGHT_VAL_STEP 8 +# define RGBLIGHT_SLEEP +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* Indicator Led's*/ +#define LED_CAPS_LOCK_PIN E6 +#define LED_PIN_ON_STATE 0 +/* 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/pearlboards/pandora/info.json b/keyboards/pearlboards/pandora/info.json new file mode 100644 index 000000000000..9e263645535f --- /dev/null +++ b/keyboards/pearlboards/pandora/info.json @@ -0,0 +1,10 @@ +{ + "keyboard_name": "Pandora", + "url": "", + "maintainer": "Koobaczech", + "layouts": { + "LAYOUT_all": { + "layout": [{"label":"0,0", "x":0, "y":0}, {"label":"0,1", "x":1, "y":0}, {"label":"0,2", "x":2, "y":0}, {"label":"0,3", "x":3, "y":0}, {"label":"0,4", "x":4, "y":0}, {"label":"0,5", "x":5, "y":0}, {"label":"0,6", "x":6, "y":0}, {"label":"0,7", "x":7, "y":0}, {"label":"0,8", "x":8, "y":0}, {"label":"0,9", "x":9, "y":0}, {"label":"0,10", "x":10, "y":0}, {"label":"0,11", "x":11, "y":0}, {"label":"0,12", "x":12, "y":0}, {"label":"0,13", "x":13, "y":0}, {"label":"0,14", "x":14, "y":0}, {"label":"1,0", "x":0, "y":1, "w":1.5}, {"label":"1,1", "x":1.5, "y":1}, {"label":"1,2", "x":2.5, "y":1}, {"label":"1,3", "x":3.5, "y":1}, {"label":"1,4", "x":4.5, "y":1}, {"label":"1,5", "x":5.5, "y":1}, {"label":"1,6", "x":6.5, "y":1}, {"label":"1,7", "x":7.5, "y":1}, {"label":"1,8", "x":8.5, "y":1}, {"label":"1,9", "x":9.5, "y":1}, {"label":"1,10", "x":10.5, "y":1}, {"label":"1,11", "x":11.5, "y":1}, {"label":"1,12", "x":12.5, "y":1}, {"label":"1,13", "x":13.5, "y":1, "w":1.5}, {"label":"2,0", "x":0, "y":2, "w":1.75}, {"label":"2,1", "x":1.75, "y":2}, {"label":"2,2", "x":2.75, "y":2}, {"label":"2,3", "x":3.75, "y":2}, {"label":"2,4", "x":4.75, "y":2}, {"label":"2,5", "x":5.75, "y":2}, {"label":"2,6", "x":6.75, "y":2}, {"label":"2,7", "x":7.75, "y":2}, {"label":"2,8", "x":8.75, "y":2}, {"label":"2,9", "x":9.75, "y":2}, {"label":"2,10", "x":10.75, "y":2}, {"label":"2,11", "x":11.75, "y":2}, {"label":"2,12", "x":12.75, "y":2}, {"label":"2,13", "x":13.75, "y":2, "w":1.25}, {"label":"3,0", "x":0, "y":3, "w":1.25}, {"label":"3,1", "x":1.25, "y":3}, {"label":"3,2", "x":2.25, "y":3}, {"label":"3,3", "x":3.25, "y":3}, {"label":"3,4", "x":4.25, "y":3}, {"label":"3,5", "x":5.25, "y":3}, {"label":"3,6", "x":6.25, "y":3}, {"label":"3,7", "x":7.25, "y":3}, {"label":"3,8", "x":8.25, "y":3}, {"label":"3,9", "x":9.25, "y":3}, {"label":"3,10", "x":10.25, "y":3}, {"label":"3,11", "x":11.25, "y":3}, {"label":"3,12", "x":12.25, "y":3, "w":1.75}, {"label":"3,13", "x":14, "y":3}, {"label":"4,0", "x":0, "y":4, "w":1.25}, {"label":"4,1", "x":1.25, "y":4, "w":1.25}, {"label":"4,2", "x":2.5, "y":4, "w":1.25}, {"label":"4,6", "x":3.75, "y":4, "w":6.25}, {"label":"4,10", "x":10, "y":4, "w":1.25}, {"label":"4,11", "x":11.25, "y":4, "w":1.25}, {"label":"4,12", "x":12.5, "y":4, "w":1.25}, {"label":"4,13", "x":13.75, "y":4, "w":1.25}] + } + } +} diff --git a/keyboards/pearlboards/pandora/keymaps/default/keymap.c b/keyboards/pearlboards/pandora/keymaps/default/keymap.c new file mode 100644 index 000000000000..879ea04a1e74 --- /dev/null +++ b/keyboards/pearlboards/pandora/keymaps/default/keymap.c @@ -0,0 +1,84 @@ +/* +Copyright 2021 Koobaczech + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum custom_keycodes { + RGBWINGS = SAFE_RANGE, +}; + +/* Function to only light up winglets RGB. Must be done in static RGB mode */ +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case RGBWINGS: + if (record->event.pressed) { + /* Blackout these RGB components */ + tap_code16(RGB_MODE_PLAIN); + rgblight_setrgb_at(0, 0, 0, 0); + rgblight_setrgb_at(0, 0, 0, 1); + rgblight_setrgb_at(0, 0, 0, 4); + rgblight_setrgb_at(0, 0, 0, 5); + rgblight_setrgb_at(0, 0, 0, 6); + rgblight_setrgb_at(0, 0, 0, 7); + rgblight_setrgb_at(0, 0, 0, 10); + rgblight_setrgb_at(0, 0, 0, 11); + } + break; + } + return true; +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + 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_DEL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, 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_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL), + + [1] = 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_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_UP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, RGBWINGS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT) +}; + +// Encoder rotate function +bool encoder_update_user(uint8_t index, bool clockwise) { + /* First encoder */ + if (index == 0) { + if (clockwise) { + tap_code(KC_AUDIO_VOL_UP); + } else { + tap_code(KC_AUDIO_VOL_DOWN); + } + } + return true; +} +// Encoder click function +bool dip_switch_update_user(uint8_t index, bool active) { + switch (index) { + /* First encoder */ + case 0: + if (active) { + tap_code(KC_MEDIA_PLAY_PAUSE); + } + break; + } + return true; +} diff --git a/keyboards/pearlboards/pandora/keymaps/via/keymap.c b/keyboards/pearlboards/pandora/keymaps/via/keymap.c new file mode 100644 index 000000000000..55bbff96769b --- /dev/null +++ b/keyboards/pearlboards/pandora/keymaps/via/keymap.c @@ -0,0 +1,98 @@ +/* +Copyright 2021 Koobaczech + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum custom_keycodes { + RGBWINGS = SAFE_RANGE, +}; + +/* Function to only light up winglets RGB. Must be done in static RGB mode */ +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case RGBWINGS: + if (record->event.pressed) { + /* Blackout these RGB components */ + tap_code16(RGB_MODE_PLAIN); + rgblight_setrgb_at(0, 0, 0, 0); + rgblight_setrgb_at(0, 0, 0, 1); + rgblight_setrgb_at(0, 0, 0, 4); + rgblight_setrgb_at(0, 0, 0, 5); + rgblight_setrgb_at(0, 0, 0, 6); + rgblight_setrgb_at(0, 0, 0, 7); + rgblight_setrgb_at(0, 0, 0, 10); + rgblight_setrgb_at(0, 0, 0, 11); + } + break; + } + return true; +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + 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_DEL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, 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_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL), + + [1] = 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_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_UP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, RGBWINGS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT), + + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + +// Encoder rotate function +bool encoder_update_user(uint8_t index, bool clockwise) { + /* First encoder */ + if (index == 0) { + if (clockwise) { + tap_code(KC_AUDIO_VOL_UP); + } else { + tap_code(KC_AUDIO_VOL_DOWN); + } + } + return true; +} +// Encoder click function +bool dip_switch_update_user(uint8_t index, bool active) { + switch (index) { + /* First encoder */ + case 0: + if (active) { + tap_code(KC_MEDIA_PLAY_PAUSE); + } + break; + } + return true; +} diff --git a/keyboards/pearlboards/pandora/keymaps/via/rules.mk b/keyboards/pearlboards/pandora/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/pearlboards/pandora/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/pearlboards/pandora/pandora.c b/keyboards/pearlboards/pandora/pandora.c new file mode 100644 index 000000000000..78368e9687ed --- /dev/null +++ b/keyboards/pearlboards/pandora/pandora.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Koobaczech + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "pandora.h" diff --git a/keyboards/pearlboards/pandora/pandora.h b/keyboards/pearlboards/pandora/pandora.h new file mode 100644 index 000000000000..73df657bcff8 --- /dev/null +++ b/keyboards/pearlboards/pandora/pandora.h @@ -0,0 +1,38 @@ +/* Copyright 2021 Koobaczech + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * This layout covers all of the possible build layouts. Also, any + * built layouts will work without having to change anything. +*/ + +#pragma once + +#include "quantum.h" + +#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, \ + 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 } \ + } diff --git a/keyboards/pearlboards/pandora/readme.md b/keyboards/pearlboards/pandora/readme.md new file mode 100644 index 000000000000..2ac1d8acbc8b --- /dev/null +++ b/keyboards/pearlboards/pandora/readme.md @@ -0,0 +1,17 @@ +# Pandora + +![Pandora](https://i.imgur.com/fQRmwfOh.jpg) + +Pandora is an ultra premium 60 percent keyboard. The construction uses 6063 alu, pvd coated brass/stainless steel and dyed polycarbonate. The finishes include e-coating, anodizing, micro arc anodization, metal polish and fine beadblasting. Layouts are limited to a few ANSI variations such as tsangan/wkl and ISO. The keyboard also has a usb-c daugtherboard, an integrated usb hub and rotary encoder. The case has indicator lights for caps and is gasket mounted. The pcb is designed by me in house and has some super cool tricks up its sleeve as well. + +More info at www.pearlboards.net :] + +* Keyboard Maintainer: Koobaczech +* Hardware Supported: Pandora +* Availability: www.pearlboards.net + +Make example for this keyboard (after setting up your build environment): + + make pearlboards/pandora: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/pearlboards/pandora/rules.mk b/keyboards/pearlboards/pandora/rules.mk new file mode 100644 index 000000000000..d9d9ec111f62 --- /dev/null +++ b/keyboards/pearlboards/pandora/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 = 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 +# 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 +DIP_SWITCH_ENABLE = yes +ENCODER_ENABLE = yes +OLED_ENABLE = no # Future release +LTO_ENABLE = yes diff --git a/keyboards/peej/lumberjack/info.json b/keyboards/peej/lumberjack/info.json index f7d0f703f5c5..8550b996b6ec 100644 --- a/keyboards/peej/lumberjack/info.json +++ b/keyboards/peej/lumberjack/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Lumberjack", "url": "https://github.com/peej/lumberjack-keyboard", "maintainer": "Peej", - "width": 12, - "height": 5, "layouts": { "LAYOUT_ortho_5x12": { "layout": [ diff --git a/keyboards/peej/lumberjack/rules.mk b/keyboards/peej/lumberjack/rules.mk index 410124b84040..8064e4b2fcba 100644 --- a/keyboards/peej/lumberjack/rules.mk +++ b/keyboards/peej/lumberjack/rules.mk @@ -2,23 +2,20 @@ MCU = atmega328p # Bootloader selection -BOOTLOADER = USBasp +BOOTLOADER = usbasploader # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LAYOUTS = ortho_5x12 diff --git a/keyboards/peej/tripel/config.h b/keyboards/peej/tripel/config.h new file mode 100644 index 000000000000..50b0cc882983 --- /dev/null +++ b/keyboards/peej/tripel/config.h @@ -0,0 +1,38 @@ +/* +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x706A +#define PRODUCT_ID 0x0001 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Peej +#define PRODUCT Tripel + +/* key matrix size */ +#define MATRIX_ROWS 9 +#define MATRIX_COLS 8 +#define MATRIX_ROW_PINS { C6, D4, D0, B4, E6, D7, D1, D2, D3 } +#define MATRIX_COL_PINS { B5, B6, B2, B3, B1, F7, F6, F5 } +#define UNUSED_PINS { F4 } + +/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 diff --git a/keyboards/peej/tripel/info.json b/keyboards/peej/tripel/info.json new file mode 100644 index 000000000000..97d50880c426 --- /dev/null +++ b/keyboards/peej/tripel/info.json @@ -0,0 +1,80 @@ +{ + "keyboard_name": "Tripel", + "url": "https://github.com/peej/tripel-keyboard", + "maintainer": "Peej", + "layouts": { + "LAYOUT_ortho_7u": { + "layout": [ + { "x":0, "y":0 }, + { "x":1, "y":0 }, + { "x":2, "y":0 }, + { "x":3, "y":0 }, + { "x":4, "y":0 }, + { "x":5, "y":0 }, + { "x":6, "y":0 }, + { "x":7, "y":0 }, + { "x":8, "y":0 }, + { "x":9, "y":0 }, + { "x":10, "y":0 }, + { "x":11, "y":0 }, + { "x":12, "y":0 }, + { "x":13, "y":0 }, + { "x":14, "y":0 }, + { "x":0, "y":1 }, + { "x":1, "y":1 }, + { "x":2, "y":1 }, + { "x":3, "y":1 }, + { "x":4, "y":1 }, + { "x":5, "y":1 }, + { "x":6, "y":1 }, + { "x":7, "y":1 }, + { "x":8, "y":1 }, + { "x":9, "y":1 }, + { "x":10, "y":1 }, + { "x":11, "y":1 }, + { "x":12, "y":1 }, + { "x":13, "y":1 }, + { "x":14, "y":1 }, + { "x":0, "y":2 }, + { "x":1, "y":2 }, + { "x":2, "y":2 }, + { "x":3, "y":2 }, + { "x":4, "y":2 }, + { "x":5, "y":2 }, + { "x":6, "y":2 }, + { "x":7, "y":2 }, + { "x":8, "y":2 }, + { "x":9, "y":2 }, + { "x":10, "y":2 }, + { "x":11, "y":2 }, + { "x":12, "y":2 }, + { "x":13, "y":2 }, + { "x":14, "y":2 }, + { "x":0, "y":3 }, + { "x":1, "y":3 }, + { "x":2, "y":3 }, + { "x":3, "y":3 }, + { "x":4, "y":3 }, + { "x":5, "y":3 }, + { "x":6, "y":3 }, + { "x":7, "y":3 }, + { "x":8, "y":3 }, + { "x":9, "y":3 }, + { "x":10, "y":3 }, + { "x":11, "y":3 }, + { "x":12, "y":3 }, + { "x":13, "y":3 }, + { "x":14, "y":3 }, + { "x":0, "y":4 }, + { "x":1, "y":4 }, + { "x":2, "y":4 }, + { "x":3, "y":4 }, + { "x":7, "y":4, "w":7 }, + { "x":11, "y":4 }, + { "x":12, "y":4 }, + { "x":13, "y":4 }, + { "x":14, "y":4 } + ] + } + } +} diff --git a/keyboards/peej/tripel/keymaps/default/keymap.c b/keyboards/peej/tripel/keymaps/default/keymap.c new file mode 100644 index 000000000000..2b08adf773c7 --- /dev/null +++ b/keyboards/peej/tripel/keymaps/default/keymap.c @@ -0,0 +1,54 @@ +/* + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Layer shorthand +enum layer { + _BASE, + _FN, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* + * ,-----------------------------------------------------------------------------------------------------------------------. + * | Gesc | 1 | 2 | 3 | 4 | 5 | - | Num | = | 6 | 7 | 8 | 9 | 0 | Bksp | + * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| + * | Tab | Q | W | E | R | T | 7 | 8 | 9 | Y | U | I | O | P | Del | + * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| + * | Ctrl | A | S | D | F | G | 4 | 5 | 6 | H | J | K | L | ; | ' | + * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| + * | Shift | Z | X | C | V | B | 1 | 2 | 3 | N | M | , | . | / | Enter | + * |-------+-------+---------------------------------------------------------------------------------------+-------+-------| + * | Ctrl | Fn | Alt | Cmd | Space | Left | Down | Up | Right | + * `-----------------------------------------------------------------------------------------------------------------------' + */ + [_BASE] = LAYOUT_ortho_7u( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_NLCK, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_P4, KC_P5, KC_P6, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P1, KC_P2, KC_P3, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_LCTL, MO(_FN), KC_LALT, KC_LGUI, KC_SPC, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + + [_FN] = LAYOUT_ortho_7u( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, KC_F12, KC_F13, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/peej/tripel/keymaps/via/keymap.c b/keyboards/peej/tripel/keymaps/via/keymap.c new file mode 100644 index 000000000000..7c2664ee05c9 --- /dev/null +++ b/keyboards/peej/tripel/keymaps/via/keymap.c @@ -0,0 +1,50 @@ +/* Copyright 2021 Paul James + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[0] = LAYOUT_ortho_7u( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_NLCK, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_P4, KC_P5, KC_P6, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P1, KC_P2, KC_P3, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_LCTL, MO(1), KC_LALT, KC_LGUI, KC_SPC, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT +), +[1] = LAYOUT_ortho_7u( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, KC_F12, KC_F13, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ +), +[2] = LAYOUT_ortho_7u( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ +), +[3] = LAYOUT_ortho_7u( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ +) + +}; diff --git a/keyboards/peej/tripel/keymaps/via/rules.mk b/keyboards/peej/tripel/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/peej/tripel/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/peej/tripel/left/left.h b/keyboards/peej/tripel/left/left.h new file mode 100644 index 000000000000..852a503e6072 --- /dev/null +++ b/keyboards/peej/tripel/left/left.h @@ -0,0 +1,38 @@ +/* Copyright 2021 Paul James + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_ortho_7u( \ + l11, l12, l13, l14, l15, m11, m12, m13, m14, m15, r11, r12, r13, r14, r15, \ + l21, l22, l23, l24, l25, m21, m22, m23, m24, m25, r21, r22, r23, r24, r25, \ + l31, l32, l33, l34, l35, m31, m32, m33, m34, m35, r31, r32, r33, r34, r35, \ + l41, l42, l43, l44, l45, m41, m42, m43, m44, m45, r41, r42, r43, r44, r45, \ + l51, l52, l53, l54, m53, r52, r53, r54, r51 \ +) \ +{ \ + { r11, r12, r13, r14, r15, r25, r35, r45 }, \ + { r21, r22, r23, r24, r34, r44, r53, r54 }, \ + { r31, r32, r33, r43, r42, r41, r51, r52 }, \ + { l11, l12, l13, l14, l15, l25, l35, l45 }, \ + { l21, l22, l23, l24, l34, l44, l53, l54 }, \ + { l31, l32, l33, l43, l42, l41, l51, l52 }, \ + { m11, m12, m13, m14, m15, m25, m35, m45 }, \ + { m21, m22, m23, m24, m34, m44, m53, KC_NO }, \ + { m31, m32, m33, m43, m42, m41, KC_NO, KC_NO } \ +} diff --git a/keyboards/peej/tripel/left/readme.md b/keyboards/peej/tripel/left/readme.md new file mode 100644 index 000000000000..256622475732 --- /dev/null +++ b/keyboards/peej/tripel/left/readme.md @@ -0,0 +1,21 @@ +# Tripel +## Sub-100x100mm modula 60% ortholinear 7u PCB + +![tripel](https://github.com/peej/tripel-keyboard/raw/master/images/3pcbs.jpg) + +15x5 ortholinear PCB for 60% tray mount cases using only prototype sized PCBs. + +This revision is for when the Pro-Micro is mounted on the left most PCB. + +* Keyboard Maintainer: [Paul James](https://github.com/peej) +* Hardware Supported: Pro-Micro [PCB](https://github.com/peej/tripel-keyboard) + +Make example for this keyboard (after setting up your build environment): + + make peej/tripel/left:default + +Flashing example for this keyboard: + + make peej/tripel/left:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/peej/tripel/left/rules.mk b/keyboards/peej/tripel/left/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/peej/tripel/left/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/peej/tripel/middle/middle.h b/keyboards/peej/tripel/middle/middle.h new file mode 100644 index 000000000000..450eb095c358 --- /dev/null +++ b/keyboards/peej/tripel/middle/middle.h @@ -0,0 +1,38 @@ +/* Copyright 2021 Paul James + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_ortho_7u( \ + l11, l12, l13, l14, l15, m11, m12, m13, m14, m15, r11, r12, r13, r14, r15, \ + l21, l22, l23, l24, l25, m21, m22, m23, m24, m25, r21, r22, r23, r24, r25, \ + l31, l32, l33, l34, l35, m31, m32, m33, m34, m35, r31, r32, r33, r34, r35, \ + l41, l42, l43, l44, l45, m41, m42, m43, m44, m45, r41, r42, r43, r44, r45, \ + l51, l52, l53, l54, m53, r52, r53, r54, r51 \ +) \ +{ \ + { l11, l12, l13, l14, l15, l25, l35, l45 }, \ + { l21, l22, l23, l24, l34, l44, l53, l54 }, \ + { l31, l32, l33, l43, l42, l41, l51, l52 }, \ + { m11, m12, m13, m14, m15, m25, m35, m45 }, \ + { m21, m22, m23, m24, m34, m44, m53, KC_NO }, \ + { m31, m32, m33, m43, m42, m41, KC_NO, KC_NO }, \ + { r11, r12, r13, r14, r15, r25, r35, r45 }, \ + { r21, r22, r23, r24, r34, r44, r53, r54 }, \ + { r31, r32, r33, r43, r42, r41, r51, r52 } \ +} diff --git a/keyboards/peej/tripel/middle/readme.md b/keyboards/peej/tripel/middle/readme.md new file mode 100644 index 000000000000..25b11a671470 --- /dev/null +++ b/keyboards/peej/tripel/middle/readme.md @@ -0,0 +1,21 @@ +# Tripel +## Sub-100x100mm modula 60% ortholinear 7u PCB + +![tripel](https://github.com/peej/tripel-keyboard/raw/master/images/3pcbs.jpg) + +15x5 ortholinear PCB for 60% tray mount cases using only prototype sized PCBs. + +This revision is for when the Pro-Micro is mounted on the middle PCB. + +* Keyboard Maintainer: [Paul James](https://github.com/peej) +* Hardware Supported: Pro-Micro [PCB](https://github.com/peej/tripel-keyboard) + +Make example for this keyboard (after setting up your build environment): + + make peej/tripel/middle:default + +Flashing example for this keyboard: + + make peej/tripel/middle:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/peej/tripel/middle/rules.mk b/keyboards/peej/tripel/middle/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/peej/tripel/middle/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/peej/tripel/right/readme.md b/keyboards/peej/tripel/right/readme.md new file mode 100644 index 000000000000..f965a74de20b --- /dev/null +++ b/keyboards/peej/tripel/right/readme.md @@ -0,0 +1,21 @@ +# Tripel +## Sub-100x100mm modula 60% ortholinear 7u PCB + +![tripel](https://github.com/peej/tripel-keyboard/raw/master/images/3pcbs.jpg) + +15x5 ortholinear PCB for 60% tray mount cases using only prototype sized PCBs. + +This revision is for when the Pro-Micro is mounted on the right most PCB. + +* Keyboard Maintainer: [Paul James](https://github.com/peej) +* Hardware Supported: Pro-Micro [PCB](https://github.com/peej/tripel-keyboard) + +Make example for this keyboard (after setting up your build environment): + + make peej/tripel/right:default + +Flashing example for this keyboard: + + make peej/tripel/right:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/peej/tripel/right/right.h b/keyboards/peej/tripel/right/right.h new file mode 100644 index 000000000000..5fa38270c918 --- /dev/null +++ b/keyboards/peej/tripel/right/right.h @@ -0,0 +1,38 @@ +/* Copyright 2021 Paul James + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_ortho_7u( \ + l11, l12, l13, l14, l15, m11, m12, m13, m14, m15, r11, r12, r13, r14, r15, \ + l21, l22, l23, l24, l25, m21, m22, m23, m24, m25, r21, r22, r23, r24, r25, \ + l31, l32, l33, l34, l35, m31, m32, m33, m34, m35, r31, r32, r33, r34, r35, \ + l41, l42, l43, l44, l45, m41, m42, m43, m44, m45, r41, r42, r43, r44, r45, \ + l51, l52, l53, l54, m53, r52, r53, r54, r51 \ +) \ +{ \ + { m11, m12, m13, m14, m15, m25, m35, m45 }, \ + { m21, m22, m23, m24, m34, m44, m53, KC_NO }, \ + { m31, m32, m33, m43, m42, m41, KC_NO, KC_NO }, \ + { r11, r12, r13, r14, r15, r25, r35, r45 }, \ + { r21, r22, r23, r24, r34, r44, r53, r54 }, \ + { r31, r32, r33, r43, r42, r41, r51, r52 }, \ + { l11, l12, l13, l14, l15, l25, l35, l45 }, \ + { l21, l22, l23, l24, l34, l44, l53, l54 }, \ + { l31, l32, l33, l43, l42, l41, l51, l52 } \ +} diff --git a/keyboards/peej/tripel/right/rules.mk b/keyboards/peej/tripel/right/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/peej/tripel/right/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/peej/tripel/rules.mk b/keyboards/peej/tripel/rules.mk new file mode 100644 index 000000000000..58392545f485 --- /dev/null +++ b/keyboards/peej/tripel/rules.mk @@ -0,0 +1,21 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# 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 + +DEFAULT_FOLDER = peej/tripel/left diff --git a/keyboards/peiorisboards/ixora/info.json b/keyboards/peiorisboards/ixora/info.json deleted file mode 100644 index a1818632cb83..000000000000 --- a/keyboards/peiorisboards/ixora/info.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "keyboard_name": "Ixora", - "url": "", - "maintainer": "Peioris", - "width": 3, - "height": 2, - "layouts": { - "LAYOUT_full": { - "layout": [{"label":"1", "x":0, "y":0}, {"label":"2", "x":1, "y":0}, {"label":"3", "x":2, "y":0}, {"label":"Caps Lock", "x":0, "y":1}, {"label":"Num Lock", "x":1, "y":1}, {"label":"Scroll Lock", "x":2, "y":1}] - }, - "LAYOUT_blocker_right": { - "layout": [{"label":"1", "x":0, "y":0}, {"label":"2", "x":1, "y":0}, {"label":"Caps Lock", "x":0, "y":1}, {"label":"Num Lock", "x":1, "y":1}, {"label":"Scroll Lock", "x":2, "y":1}] - }, - "LAYOUT_blocker_left": { - "layout": [{"label":"2", "x":1, "y":0}, {"label":"3", "x":2, "y":0}, {"label":"Caps Lock", "x":0, "y":1}, {"label":"Num Lock", "x":1, "y":1}, {"label":"Scroll Lock", "x":2, "y":1}] - }, - "LAYOUT_arrows": { - "layout": [{"label":"\u2191", "x":1, "y":0}, {"label":"\u2190", "x":0, "y":1}, {"label":"\u2193", "x":1, "y":1}, {"label":"\u2192", "x":2, "y":1}] - } - } - } diff --git a/keyboards/peiorisboards/ixora/keymaps/default/keymap.c b/keyboards/peiorisboards/ixora/keymaps/default/keymap.c deleted file mode 100644 index 85a64685155e..000000000000 --- a/keyboards/peiorisboards/ixora/keymaps/default/keymap.c +++ /dev/null @@ -1,42 +0,0 @@ -/* Copyright 2018 Peioris - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Keymap _BL: (Base Layer) Default Layer - * ,-----------------. - * |RESET| 2 | 3 | - * |-----------------| - * |Caps |NmLk |ScLk | - * `-----------------' - */ -[0] = LAYOUT_full( - RESET, KC_2, KC_3, - KC_CAPS, KC_NLCK, KC_SLCK) -}; - -void matrix_init_user(void) { - //user initialization -} - -void matrix_scan_user(void) { - //user matrix -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} diff --git a/keyboards/peiorisboards/ixora/readme.md b/keyboards/peiorisboards/ixora/readme.md deleted file mode 100644 index 1a011ba9ad8e..000000000000 --- a/keyboards/peiorisboards/ixora/readme.md +++ /dev/null @@ -1,22 +0,0 @@ -Ixora -========= - -[Ixora](https://i.imgur.com/GqDk3XY.png) - - -Ixora is an ARM-powered 6-key macropad with a USB connector, hotswap sockets, and indicator LEDs. - -Keyboard Maintainer: [Peioris](https://github.com/coarse) -Hardware Supported: Ixora PCB -Hardware Availability: [Peioris](https://github.com/coarse) - -Make example for this keyboard (after setting up your build environment): - - make peiorisboards/ixora:default:dfu-util - -See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information. - -#### Developer's Note - -STM32F042xx chips does not allow jumping to bootloader without BOOT0 being set to high, therefore it is impossible to enter the bootloader from sending a `RESET` keycode nor using bootmagic or bootmagic lite. -The only way to enter bootloader is to hold the BOOT0 button while the keyboard is powering up or after a power reset (done by pressing the reset switch or sending a `RESET` keycode). diff --git a/keyboards/peiorisboards/ixora/rules.mk b/keyboards/peiorisboards/ixora/rules.mk deleted file mode 100644 index 0bbdadfe6071..000000000000 --- a/keyboards/peiorisboards/ixora/rules.mk +++ /dev/null @@ -1,21 +0,0 @@ -# MCU name -MCU = STM32F042 - -# Bootloader selection -BOOTLOADER = stm32-dfu - -# Build Options -# comment out to disable the options. -# -BACKLIGHT_ENABLE = no -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -NKRO_ENABLE = yes # USB Nkey Rollover -NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in - - -# Enter lower-power sleep mode when on the ChibiOS idle thread -OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/peranekofactory/tone/keymaps/default/keymap.c b/keyboards/peranekofactory/tone/keymaps/default/keymap.c new file mode 100644 index 000000000000..2f017ccb9089 --- /dev/null +++ b/keyboards/peranekofactory/tone/keymaps/default/keymap.c @@ -0,0 +1,33 @@ +/* Copyright 2021 peraneko + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + C(S(KC_E)), S(KC_TAB), KC_TAB, KC_0, + KC_LSFT, C(KC_LEFT), C(KC_RIGHT), C(KC_Z) + ) +}; + +/* Rotary encoder settings */ +bool encoder_update_user(uint8_t index, bool clockwise) { + if (clockwise) { + tap_code(KC_UP); //Rotary encoder clockwise + } else { + tap_code(KC_DOWN); //Rotary encoder Reverse clockwise + } + return true; +} diff --git a/keyboards/peranekofactory/tone/keymaps/default/readme.md b/keyboards/peranekofactory/tone/keymaps/default/readme.md new file mode 100644 index 000000000000..9d7e75024319 --- /dev/null +++ b/keyboards/peranekofactory/tone/keymaps/default/readme.md @@ -0,0 +1,2 @@ +# The default keymap for tone +For Adobe Lightroom. diff --git a/keyboards/peranekofactory/tone/readme.md b/keyboards/peranekofactory/tone/readme.md new file mode 100644 index 000000000000..db9bef04d033 --- /dev/null +++ b/keyboards/peranekofactory/tone/readme.md @@ -0,0 +1,19 @@ +# TONE + +![TONE](https://user-images.githubusercontent.com/5952961/70761947-4b101f80-1d92-11ea-86ce-3eda38e93524.jpg) + +TONE is macro_pad With RotaryEncoder. + +* Keyboard Maintainer: [peraneko](https://github.com/peraneko) +* Hardware Supported: TONE +* Hardware Availability: https://shop.yushakobo.jp/collections/keyboard-1/products/consign_tone-note + +Make example for this keyboard (after setting up your build environment): + + make peranekofactory/tone:default + +Flashing example for this keyboard: + + make peranekofactory/tone:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/peranekofactory/tone/rev1/config.h b/keyboards/peranekofactory/tone/rev1/config.h new file mode 100644 index 000000000000..54a59ed5515c --- /dev/null +++ b/keyboards/peranekofactory/tone/rev1/config.h @@ -0,0 +1,159 @@ +/* +Copyright 2021 peraneko + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x0000 +#define DEVICE_VER 0x0001 +#define MANUFACTURER PeranekoFactory +#define PRODUCT tone + +/* key matrix size */ +#define MATRIX_ROWS 1 +#define MATRIX_COLS 8 + +/* + * 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 DIRECT_PINS { \ + { D4, C6, D7, E6, F6, F7, B1, B3 } \ +} +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Rotary encoder define*/ +#define ENCODERS_PAD_A { B5 } +#define ENCODERS_PAD_B { B4 } +#define TAP_CODE_DELAY 100 + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +//#define LED_NUM_LOCK_PIN B0 +//#define LED_CAPS_LOCK_PIN B1 +//#define LED_SCROLL_LOCK_PIN B2 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +//#define RGB_DI_PIN E2 +//#ifdef RGB_DI_PIN +//# define RGBLED_NUM 16 +//# define RGBLIGHT_HUE_STEP 8 +//# define RGBLIGHT_SAT_STEP 8 +//# define RGBLIGHT_VAL_STEP 8 +//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +//# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +//#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/peranekofactory/tone/rev1/info.json b/keyboards/peranekofactory/tone/rev1/info.json new file mode 100644 index 000000000000..d877d5135e0b --- /dev/null +++ b/keyboards/peranekofactory/tone/rev1/info.json @@ -0,0 +1,10 @@ +{ + "keyboard_name": "tone", + "url": "https://shop.yushakobo.jp/collections/keyboard-1/products/consign_tone-note", + "maintainer": "PeranekoFactory", + "layouts": { + "LAYOUT": { + "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}] + } + } +} diff --git a/keyboards/peranekofactory/tone/rev1/readme.md b/keyboards/peranekofactory/tone/rev1/readme.md new file mode 100644 index 000000000000..a5d98f483f26 --- /dev/null +++ b/keyboards/peranekofactory/tone/rev1/readme.md @@ -0,0 +1,19 @@ +# TONE + +![TONE](https://user-images.githubusercontent.com/5952961/70761947-4b101f80-1d92-11ea-86ce-3eda38e93524.jpg) + +TONE is macro_pad With RotaryEncoder. + +* Keyboard Maintainer: [peraneko](https://github.com/peraneko) +* Hardware Supported: TONE +* Hardware Availability: https://shop.yushakobo.jp/collections/keyboard-1/products/consign_tone-note + +Make example for this keyboard (after setting up your build environment): + + make peranekofactory/tone/rev1:default + +Flashing example for this keyboard: + + make peranekofactory/tone/rev1:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/peranekofactory/tone/rev1/rev1.c b/keyboards/peranekofactory/tone/rev1/rev1.c new file mode 100644 index 000000000000..df99ef2e0b3a --- /dev/null +++ b/keyboards/peranekofactory/tone/rev1/rev1.c @@ -0,0 +1,17 @@ +/* Copyright 2021 peraneko + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "rev1.h" diff --git a/keyboards/peranekofactory/tone/rev1/rev1.h b/keyboards/peranekofactory/tone/rev1/rev1.h new file mode 100644 index 000000000000..47f6423391e9 --- /dev/null +++ b/keyboards/peranekofactory/tone/rev1/rev1.h @@ -0,0 +1,35 @@ +/* Copyright 2021 peraneko + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + K00, K01, K02, K03, \ + K04, K05, K06, K07 \ +) \ +{ \ + { K00, K01, K02, K03, K04, K05, K06, K07 }, \ +} diff --git a/keyboards/peranekofactory/tone/rev1/rules.mk b/keyboards/peranekofactory/tone/rev1/rules.mk new file mode 100644 index 000000000000..09fd3f88b7ff --- /dev/null +++ b/keyboards/peranekofactory/tone/rev1/rules.mk @@ -0,0 +1,20 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes diff --git a/keyboards/peranekofactory/tone/rev2/config.h b/keyboards/peranekofactory/tone/rev2/config.h new file mode 100644 index 000000000000..54a59ed5515c --- /dev/null +++ b/keyboards/peranekofactory/tone/rev2/config.h @@ -0,0 +1,159 @@ +/* +Copyright 2021 peraneko + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x0000 +#define DEVICE_VER 0x0001 +#define MANUFACTURER PeranekoFactory +#define PRODUCT tone + +/* key matrix size */ +#define MATRIX_ROWS 1 +#define MATRIX_COLS 8 + +/* + * 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 DIRECT_PINS { \ + { D4, C6, D7, E6, F6, F7, B1, B3 } \ +} +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Rotary encoder define*/ +#define ENCODERS_PAD_A { B5 } +#define ENCODERS_PAD_B { B4 } +#define TAP_CODE_DELAY 100 + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +//#define LED_NUM_LOCK_PIN B0 +//#define LED_CAPS_LOCK_PIN B1 +//#define LED_SCROLL_LOCK_PIN B2 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +//#define RGB_DI_PIN E2 +//#ifdef RGB_DI_PIN +//# define RGBLED_NUM 16 +//# define RGBLIGHT_HUE_STEP 8 +//# define RGBLIGHT_SAT_STEP 8 +//# define RGBLIGHT_VAL_STEP 8 +//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +//# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +//#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/peranekofactory/tone/rev2/info.json b/keyboards/peranekofactory/tone/rev2/info.json new file mode 100644 index 000000000000..d877d5135e0b --- /dev/null +++ b/keyboards/peranekofactory/tone/rev2/info.json @@ -0,0 +1,10 @@ +{ + "keyboard_name": "tone", + "url": "https://shop.yushakobo.jp/collections/keyboard-1/products/consign_tone-note", + "maintainer": "PeranekoFactory", + "layouts": { + "LAYOUT": { + "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}] + } + } +} diff --git a/keyboards/peranekofactory/tone/rev2/readme.md b/keyboards/peranekofactory/tone/rev2/readme.md new file mode 100644 index 000000000000..57a9a89a2d83 --- /dev/null +++ b/keyboards/peranekofactory/tone/rev2/readme.md @@ -0,0 +1,19 @@ +# TONE_rev2 + +![TONE_rev2](https://user-images.githubusercontent.com/5952961/70761947-4b101f80-1d92-11ea-86ce-3eda38e93524.jpg) + +TONE_rev2 is macro_pad With RotaryEncoder. + +* Keyboard Maintainer: [peraneko](https://github.com/peraneko) +* Hardware Supported: TONE +* Hardware Availability: https://shop.yushakobo.jp/collections/keyboard-1/products/consign_tone-note + +Make example for this keyboard (after setting up your build environment): + + make peranekofactory/tone:default + +Flashing example for this keyboard: + + make peranekofactory/tone:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/peranekofactory/tone/rev2/rev2.c b/keyboards/peranekofactory/tone/rev2/rev2.c new file mode 100644 index 000000000000..aa9511097971 --- /dev/null +++ b/keyboards/peranekofactory/tone/rev2/rev2.c @@ -0,0 +1,17 @@ +/* Copyright 2021 peraneko + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "rev2.h" diff --git a/keyboards/peranekofactory/tone/rev2/rev2.h b/keyboards/peranekofactory/tone/rev2/rev2.h new file mode 100644 index 000000000000..47f6423391e9 --- /dev/null +++ b/keyboards/peranekofactory/tone/rev2/rev2.h @@ -0,0 +1,35 @@ +/* Copyright 2021 peraneko + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + K00, K01, K02, K03, \ + K04, K05, K06, K07 \ +) \ +{ \ + { K00, K01, K02, K03, K04, K05, K06, K07 }, \ +} diff --git a/keyboards/peranekofactory/tone/rev2/rules.mk b/keyboards/peranekofactory/tone/rev2/rules.mk new file mode 100644 index 000000000000..09fd3f88b7ff --- /dev/null +++ b/keyboards/peranekofactory/tone/rev2/rules.mk @@ -0,0 +1,20 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes diff --git a/keyboards/peranekofactory/tone/rules.mk b/keyboards/peranekofactory/tone/rules.mk new file mode 100644 index 000000000000..e87862a9f6e7 --- /dev/null +++ b/keyboards/peranekofactory/tone/rules.mk @@ -0,0 +1 @@ +DEFAULT_FOLDER = peranekofactory/tone/rev2 diff --git a/keyboards/percent/booster/booster.c b/keyboards/percent/booster/booster.c index 3a298f58fff8..bbae5d6f4e36 100644 --- a/keyboards/percent/booster/booster.c +++ b/keyboards/percent/booster/booster.c @@ -14,38 +14,3 @@ * along with this program. If not, see . */ #include "booster.h" - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -/* - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - -*/ diff --git a/keyboards/percent/booster/info.json b/keyboards/percent/booster/info.json index 08d573d76d09..2f5edb1d5ff1 100644 --- a/keyboards/percent/booster/info.json +++ b/keyboards/percent/booster/info.json @@ -2,11 +2,8 @@ "keyboard_name": "booster", "url": "", "maintainer": "qmk", - "width": 4, - "height": 5, "layouts": { "LAYOUT_numpad_5x4": { - "key_count": 17, "layout": [ {"label":"K00 (D1,C7)", "x":0, "y":0}, {"label":"K01 (D1,D4)", "x":1, "y":0}, diff --git a/keyboards/percent/booster/rules.mk b/keyboards/percent/booster/rules.mk index fca9ff3cfc27..f53e944b1d7d 100644 --- a/keyboards/percent/booster/rules.mk +++ b/keyboards/percent/booster/rules.mk @@ -2,33 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 -EXTRAFLAGS += -flto +AUDIO_ENABLE = no # Audio output +LTO_ENABLE = yes LAYOUTS = numpad_5x4 diff --git a/keyboards/percent/canoe/config.h b/keyboards/percent/canoe/config.h index c349c1106c77..56793bab419c 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 . */ -#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 . #define BACKLIGHT_LEVELS 3 #define RGBLIGHT_ANIMATIONS - -#endif diff --git a/keyboards/percent/canoe/info.json b/keyboards/percent/canoe/info.json index 4f13a2786a0a..ca1bec5b8944 100644 --- a/keyboards/percent/canoe/info.json +++ b/keyboards/percent/canoe/info.json @@ -2,15 +2,11 @@ "keyboard_name": "Canoe", "maintainer": "qmk", "url": "", - "height": 6, - "width": 15, "layouts": { "LAYOUT_65_iso_blocker": { - "key_count": 68, "layout": [{"label":"K0D", "x":0, "y":0}, {"label":"K0C", "x":1, "y":0}, {"label":"K0B", "x":2, "y":0}, {"label":"K0A", "x":3, "y":0}, {"label":"K09", "x":4, "y":0}, {"label":"K08", "x":5, "y":0}, {"label":"K07", "x":6, "y":0}, {"label":"K06", "x":7, "y":0}, {"label":"K05", "x":8, "y":0}, {"label":"K04", "x":9, "y":0}, {"label":"K03", "x":10, "y":0}, {"label":"K02", "x":11, "y":0}, {"label":"K01", "x":12, "y":0}, {"label":"K00", "x":13, "y":0, "w":2}, {"label":"K0E", "x":15, "y":0}, {"label":"K1D", "x":0, "y":1, "w":1.5}, {"label":"K1C", "x":1.5, "y":1}, {"label":"K1B", "x":2.5, "y":1}, {"label":"K1A", "x":3.5, "y":1}, {"label":"K19", "x":4.5, "y":1}, {"label":"K18", "x":5.5, "y":1}, {"label":"K17", "x":6.5, "y":1}, {"label":"K16", "x":7.5, "y":1}, {"label":"K15", "x":8.5, "y":1}, {"label":"K14", "x":9.5, "y":1}, {"label":"K13", "x":10.5, "y":1}, {"label":"K12", "x":11.5, "y":1}, {"label":"K11", "x":12.5, "y":1}, {"label":"K1E", "x":15, "y":1}, {"label":"K2D", "x":0, "y":2, "w":1.75}, {"label":"K2C", "x":1.75, "y":2}, {"label":"K2B", "x":2.75, "y":2}, {"label":"K2A", "x":3.75, "y":2}, {"label":"K29", "x":4.75, "y":2}, {"label":"K28", "x":5.75, "y":2}, {"label":"K27", "x":6.75, "y":2}, {"label":"K26", "x":7.75, "y":2}, {"label":"K25", "x":8.75, "y":2}, {"label":"K24", "x":9.75, "y":2}, {"label":"K23", "x":10.75, "y":2}, {"label":"K22", "x":11.75, "y":2}, {"label":"K10", "x":12.75, "y":2}, {"label":"K21", "x":13.75, "y":1, "w":1.25, "h":2}, {"label":"K2E", "x":15, "y":2}, {"label":"K3D", "x":0, "y":3, "w":1.25}, {"label":"K4A", "x":1.25, "y":3}, {"label":"K3C", "x":2.25, "y":3}, {"label":"K3B", "x":3.25, "y":3}, {"label":"K3A", "x":4.25, "y":3}, {"label":"K39", "x":5.25, "y":3}, {"label":"K38", "x":6.25, "y":3}, {"label":"K37", "x":7.25, "y":3}, {"label":"K36", "x":8.25, "y":3}, {"label":"K35", "x":9.25, "y":3}, {"label":"K34", "x":10.25, "y":3}, {"label":"K33", "x":11.25, "y":3}, {"label":"K32", "x":12.25, "y":3, "w":1.75}, {"label":"K30", "x":14, "y":3}, {"label":"K3E", "x":15, "y":3}, {"label":"K4D", "x":0, "y":4, "w":1.25}, {"label":"K4C", "x":1.25, "y":4, "w":1.25}, {"label":"K4B", "x":2.5, "y":4, "w":1.25}, {"label":"K48", "x":3.75, "y":4, "w":6.25}, {"label":"K44", "x":10, "y":4, "w":1.25}, {"label":"K43", "x":11.25, "y":4, "w":1.25}, {"label":"K42", "x":13, "y":4}, {"label":"K40", "x":14, "y":4}, {"label":"K4E", "x":15, "y":4}] }, "LAYOUT_65_ansi_blocker": { - "key_count": 67, "layout": [{"label":"K0D", "x":0, "y":0}, {"label":"K0C", "x":1, "y":0}, {"label":"K0B", "x":2, "y":0}, {"label":"K0A", "x":3, "y":0}, {"label":"K09", "x":4, "y":0}, {"label":"K08", "x":5, "y":0}, {"label":"K07", "x":6, "y":0}, {"label":"K06", "x":7, "y":0}, {"label":"K05", "x":8, "y":0}, {"label":"K04", "x":9, "y":0}, {"label":"K03", "x":10, "y":0}, {"label":"K02", "x":11, "y":0}, {"label":"K01", "x":12, "y":0}, {"label":"K00", "x":13, "y":0, "w":2}, {"label":"K0E", "x":15, "y":0}, {"label":"K1D", "x":0, "y":1, "w":1.5}, {"label":"K1C", "x":1.5, "y":1}, {"label":"K1B", "x":2.5, "y":1}, {"label":"K1A", "x":3.5, "y":1}, {"label":"K19", "x":4.5, "y":1}, {"label":"K18", "x":5.5, "y":1}, {"label":"K17", "x":6.5, "y":1}, {"label":"K16", "x":7.5, "y":1}, {"label":"K15", "x":8.5, "y":1}, {"label":"K14", "x":9.5, "y":1}, {"label":"K13", "x":10.5, "y":1}, {"label":"K12", "x":11.5, "y":1}, {"label":"K11", "x":12.5, "y":1}, {"label":"K10", "x":13.5, "y":1, "w":1.5}, {"label":"K1E", "x":15, "y":1}, {"label":"K2D", "x":0, "y":2, "w":1.75}, {"label":"K2C", "x":1.75, "y":2}, {"label":"K2B", "x":2.75, "y":2}, {"label":"K2A", "x":3.75, "y":2}, {"label":"K29", "x":4.75, "y":2}, {"label":"K28", "x":5.75, "y":2}, {"label":"K27", "x":6.75, "y":2}, {"label":"K26", "x":7.75, "y":2}, {"label":"K25", "x":8.75, "y":2}, {"label":"K24", "x":9.75, "y":2}, {"label":"K23", "x":10.75, "y":2}, {"label":"K22", "x":11.75, "y":2}, {"label":"K21", "x":12.75, "y":2, "w":2.25}, {"label":"K2E", "x":15, "y":2}, {"label":"K3D", "x":0, "y":3, "w":2.25}, {"label":"K3C", "x":2.25, "y":3}, {"label":"K3B", "x":3.25, "y":3}, {"label":"K3A", "x":4.25, "y":3}, {"label":"K39", "x":5.25, "y":3}, {"label":"K38", "x":6.25, "y":3}, {"label":"K37", "x":7.25, "y":3}, {"label":"K36", "x":8.25, "y":3}, {"label":"K35", "x":9.25, "y":3}, {"label":"K34", "x":10.25, "y":3}, {"label":"K33", "x":11.25, "y":3}, {"label":"K32", "x":12.25, "y":3, "w":1.75}, {"label":"K30", "x":14, "y":3}, {"label":"K3E", "x":15, "y":3}, {"label":"K4D", "x":0, "y":4, "w":1.25}, {"label":"K4C", "x":1.25, "y":4, "w":1.25}, {"label":"K4B", "x":2.5, "y":4, "w":1.25}, {"label":"K48", "x":3.75, "y":4, "w":6.25}, {"label":"K44", "x":10, "y":4, "w":1.25}, {"label":"K43", "x":11.25, "y":4, "w":1.25}, {"label":"K42", "x":13, "y":4}, {"label":"K40", "x":14, "y":4}, {"label":"K4E", "x":15, "y":4}] } } diff --git a/keyboards/percent/canoe/rules.mk b/keyboards/percent/canoe/rules.mk index 628a5b88ee30..fd4f660f2d25 100644 --- a/keyboards/percent/canoe/rules.mk +++ b/keyboards/percent/canoe/rules.mk @@ -2,17 +2,10 @@ MCU = atmega32a # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid # build options -BOOTMAGIC_ENABLE = full +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no EXTRAKEY_ENABLE = yes CONSOLE_ENABLE = no diff --git a/keyboards/percent/canoe_gen2/config.h b/keyboards/percent/canoe_gen2/config.h index bac5ebb3f3ab..2188d9b41cde 100644 --- a/keyboards/percent/canoe_gen2/config.h +++ b/keyboards/percent/canoe_gen2/config.h @@ -64,4 +64,52 @@ along with this program. If not, see . #define RGB_MATRIX_STARTUP_SAT 255 #define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS #define RGB_MATRIX_STARTUP_SPD 127 -#define RGB_DISABLE_WHEN_USB_SUSPENDED true +#define RGB_DISABLE_WHEN_USB_SUSPENDED +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH diff --git a/keyboards/percent/canoe_gen2/info.json b/keyboards/percent/canoe_gen2/info.json index fc8ba3e0f9ec..b72b84beee76 100644 --- a/keyboards/percent/canoe_gen2/info.json +++ b/keyboards/percent/canoe_gen2/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Canoe Gen2", "url": "", "maintainer": "evyd13", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_ansi_blocker_split_bs": { "layout": [ @@ -159,4 +157,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/percent/canoe_gen2/keymaps/via/rules.mk b/keyboards/percent/canoe_gen2/keymaps/via/rules.mk index 1e5b99807cb7..36b7ba9cbc98 100644 --- a/keyboards/percent/canoe_gen2/keymaps/via/rules.mk +++ b/keyboards/percent/canoe_gen2/keymaps/via/rules.mk @@ -1 +1,2 @@ VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/percent/canoe_gen2/rgb_matrix_kb.inc b/keyboards/percent/canoe_gen2/rgb_matrix_kb.inc index df0a0b15c20b..94ff62b3a8cf 100644 --- a/keyboards/percent/canoe_gen2/rgb_matrix_kb.inc +++ b/keyboards/percent/canoe_gen2/rgb_matrix_kb.inc @@ -25,13 +25,13 @@ static bool indicator_static(effect_params_t* params) { HSV hsv = rgb_matrix_config.hsv; RGB rgb = hsv_to_rgb(hsv); RGB_MATRIX_USE_LIMITS(led_min, led_max); - for (uint8_t i = led_min ; i < 74; i++) { + for (uint8_t i = led_min; i < 74; i++) { rgb_matrix_set_color(i, 0x00, 0x00, 0x00); } - for (uint8_t i = 74 ; i < led_max; i++) { + for (uint8_t i = 74; i < led_max; i++) { rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); } - return led_max < DRIVER_LED_TOTAL; + return rgb_matrix_check_finished_leds(led_max); } bool effect_runner_indicator(effect_params_t* params, i_f effect_func) { @@ -47,7 +47,7 @@ bool effect_runner_indicator(effect_params_t* params, i_f effect_func) { rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); } } - return led_max < DRIVER_LED_TOTAL; + return rgb_matrix_check_finished_leds(led_max); } static HSV indicator_gradient_math(HSV hsv, uint8_t i, uint8_t time) { @@ -64,4 +64,4 @@ static HSV indicator_cycle_all_math(HSV hsv, uint8_t i, uint8_t time) { bool indicator_cycle_all(effect_params_t* params) { return effect_runner_indicator(params, &indicator_cycle_all_math); } -#endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS +#endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS diff --git a/keyboards/percent/canoe_gen2/rules.mk b/keyboards/percent/canoe_gen2/rules.mk index 6221fbcad0f8..aaff3b6ba869 100644 --- a/keyboards/percent/canoe_gen2/rules.mk +++ b/keyboards/percent/canoe_gen2/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # 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 = 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 RGB_MATRIX_ENABLE = yes RGB_MATRIX_DRIVER = WS2812 diff --git a/keyboards/percent/skog/info.json b/keyboards/percent/skog/info.json index 06fad3a741bd..de5655118a74 100644 --- a/keyboards/percent/skog/info.json +++ b/keyboards/percent/skog/info.json @@ -2,8 +2,6 @@ "keyboard_name": "skog", "url": "", "maintainer": "qmk", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5, "w":2.25}, {"x":0, "y":4.5, "w":2.25}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":1.75}, {"x":14, "y":4.5}, {"x":16.25, "y":4.5}, {"x":0, "y":5.5, "w":1.25}, {"x":1.25, "y":5.5, "w":1.25}, {"x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"x":10, "y":5.5, "w":1.25}, {"x":11.25, "y":5.5, "w":1.25}, {"x":12.5, "y":5.5, "w":1.25}, {"x":13.75, "y":5.5, "w":1.25}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}] diff --git a/keyboards/percent/skog/rules.mk b/keyboards/percent/skog/rules.mk index fbfa30d0fb89..694ad609a250 100644 --- a/keyboards/percent/skog/rules.mk +++ b/keyboards/percent/skog/rules.mk @@ -2,17 +2,10 @@ MCU = atmega32a # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid # build options -BOOTMAGIC_ENABLE = full +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no EXTRAKEY_ENABLE = yes CONSOLE_ENABLE = no @@ -20,6 +13,3 @@ COMMAND_ENABLE = yes BACKLIGHT_ENABLE = yes RGBLIGHT_ENABLE = yes WS2812_DRIVER = i2c - -# 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/percent/skog_lite/info.json b/keyboards/percent/skog_lite/info.json index a1d10f59c4d5..09bcdc438166 100644 --- a/keyboards/percent/skog_lite/info.json +++ b/keyboards/percent/skog_lite/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Skog Lite", "url": "", "maintainer": "qmk", - "width": 18.25, - "height": 6.25, "layouts": { "LAYOUT_tkl_ansi": { "layout": [ diff --git a/keyboards/percent/skog_lite/rules.mk b/keyboards/percent/skog_lite/rules.mk index 119fb7263795..dcb50e8932d2 100644 --- a/keyboards/percent/skog_lite/rules.mk +++ b/keyboards/percent/skog_lite/rules.mk @@ -2,19 +2,12 @@ MCU = atmega32a # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 diff --git a/keyboards/phantom/info.json b/keyboards/phantom/info.json index 4cea58835d81..419ce4f4918f 100644 --- a/keyboards/phantom/info.json +++ b/keyboards/phantom/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Phantom", "url": "https://deskthority.net/wiki/Phantom", "maintainer": "qmk", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT_tkl_ansi": { "layout": [ diff --git a/keyboards/phantom/rules.mk b/keyboards/phantom/rules.mk index 53d53e46cbdd..81b461a66f9c 100644 --- a/keyboards/phantom/rules.mk +++ b/keyboards/phantom/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = halfkay # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = 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 LAYOUTS = tkl_ansi tkl_iso diff --git a/keyboards/phase_studio/titan65/config.h b/keyboards/phase_studio/titan65/config.h deleted file mode 100644 index 4104c2ec2c7d..000000000000 --- a/keyboards/phase_studio/titan65/config.h +++ /dev/null @@ -1,51 +0,0 @@ -/* Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include "config_common.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x5054 -#define PRODUCT_ID 0xBB91 -#define DEVICE_VER 0x0001 -#define MANUFACTURER Phase Studio -#define PRODUCT Titan 65 - -/* key matrix size */ -#define MATRIX_ROWS 5 -#define MATRIX_COLS 16 - -/* - * 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 { B4, B5, B6, C6, F7 } -#define MATRIX_COL_PINS { B0, B1, B2, B3, B7, D0, D1, D2, D3, D5, F0, F1, C7, F4, F5, F6 } - -#define DIODE_DIRECTION COL2ROW - -#define RGB_DI_PIN E6 -#define DRIVER_LED_TOTAL 67 -#define RGB_MATRIX_KEYPRESSES // reacts to keypresses -#define RGB_DISABLE_WHEN_USB_SUSPENDED false // turn off effects when suspended -#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255 diff --git a/keyboards/phase_studio/titan65/hotswap/config.h b/keyboards/phase_studio/titan65/hotswap/config.h new file mode 100644 index 000000000000..2b8320814e2f --- /dev/null +++ b/keyboards/phase_studio/titan65/hotswap/config.h @@ -0,0 +1,51 @@ +/* Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x5054 +#define PRODUCT_ID 0xBB91 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Phase Studio +#define PRODUCT Titan 65 (hotswap) + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 16 + +/* + * 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 { B4, B5, B6, C6, F7 } +#define MATRIX_COL_PINS { B0, B1, B2, B3, B7, D0, D1, D2, D3, D5, F0, F1, C7, F4, F5, F6 } + +#define DIODE_DIRECTION COL2ROW + +#define RGB_DI_PIN E6 +#define DRIVER_LED_TOTAL 67 +#define RGB_MATRIX_KEYPRESSES // reacts to keypresses +// #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended +#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255 diff --git a/keyboards/phase_studio/titan65/hotswap/hotswap.c b/keyboards/phase_studio/titan65/hotswap/hotswap.c new file mode 100644 index 000000000000..bc96b2d323be --- /dev/null +++ b/keyboards/phase_studio/titan65/hotswap/hotswap.c @@ -0,0 +1,51 @@ +/* Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "hotswap.h" + +#ifdef RGB_MATRIX_ENABLE +led_config_t g_led_config = { + { + { 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, NO_LED, 65, 66 }, + { 51, NO_LED, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, .38, 37 }, + { 23, NO_LED, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, NO_LED, 36 }, + { NO_LED, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, NO_LED, 11, 10, 9 }, + { 0, 1, NO_LED, 2, NO_LED, NO_LED, 3, NO_LED, NO_LED, NO_LED, 4, 5, NO_LED, 6, 7, 8 } + }, { + { 2, 64 }, { 21, 64 }, { 39, 64 }, { 96, 64 }, { 150, 64 }, { 165, 64 }, { 195, 64 }, { 210, 64 }, { 224, 64 }, + { 224, 48 }, { 210, 48 }, { 189, 48 }, { 154, 48 }, { 139, 48 }, { 124, 48 }, { 109, 48 }, { 94, 48 }, { 79, 48 }, { 64, 48 }, { 49, 48 }, { 34, 48 }, { 22, 48 }, { 5, 48 }, + { 6, 32 }, { 41, 32 }, { 56, 32 }, { 71, 32 }, { 86, 32 }, { 101, 32 }, { 116, 32 }, { 131, 32 }, { 146, 32 }, { 161, 32 }, { 176, 32 }, { 181, 32 }, { 201, 32 }, { 224, 32 }, + { 224, 16 }, { 206, 16 },{ 188, 16 }, { 173, 16 }, { 158, 16 }, { 143, 16 }, { 128, 16 }, { 113, 16 }, { 98, 16 }, { 83, 16 }, { 68, 16 }, { 53, 16 }, { 38, 16 }, { 22, 16 }, { 4, 16 }, + { 0, 0 }, { 15, 0 }, { 30, 0 }, { 45, 0 }, { 60, 0 }, { 75, 0 }, { 90, 0 }, { 105, 0 }, { 120, 0 }, { 135, 0 }, { 150, 0 }, { 165, 0 }, { 180, 0 }, { 203, 0 }, { 224, 0 } + }, { + 1, 1, 1, 4, 1, 1, 1, 1, 1, + 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, + 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1 + } +}; + +void suspend_power_down_kb(void) { + rgb_matrix_set_suspend_state(true); + suspend_power_down_user(); +} + +void suspend_wakeup_init_kb(void) { + rgb_matrix_set_suspend_state(false); + suspend_wakeup_init_user(); +} +#endif diff --git a/keyboards/phase_studio/titan65/titan65.h b/keyboards/phase_studio/titan65/hotswap/hotswap.h similarity index 100% rename from keyboards/phase_studio/titan65/titan65.h rename to keyboards/phase_studio/titan65/hotswap/hotswap.h diff --git a/keyboards/phase_studio/titan65/hotswap/info.json b/keyboards/phase_studio/titan65/hotswap/info.json new file mode 100644 index 000000000000..30fee696ce61 --- /dev/null +++ b/keyboards/phase_studio/titan65/hotswap/info.json @@ -0,0 +1,78 @@ +{ + "keyboard_name": "Titan 65 (hotswap)", + "url": "", + "maintainer": "drashna", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"K00 (B4,B0)", "x":0, "y":0}, + {"label":"K01 (B4,B1)", "x":1, "y":0}, + {"label":"K02 (B4,B2)", "x":2, "y":0}, + {"label":"K03 (B4,B3)", "x":3, "y":0}, + {"label":"K04 (B4,B7)", "x":4, "y":0}, + {"label":"K05 (B4,D0)", "x":5, "y":0}, + {"label":"K06 (B4,D1)", "x":6, "y":0}, + {"label":"K07 (B4,D2)", "x":7, "y":0}, + {"label":"K08 (B4,D3)", "x":8, "y":0}, + {"label":"K09 (B4,D5)", "x":9, "y":0}, + {"label":"K0A (B4,F0)", "x":10, "y":0}, + {"label":"K0B (B4,F1)", "x":11, "y":0}, + {"label":"K0C (B4,C7)", "x":12, "y":0}, + {"label":"K0E (B4,F5)", "x":13, "y":0, "w":2}, + {"label":"K0F (B4,F6)", "x":15, "y":0}, + {"label":"K10 (B5,B0)", "x":0, "y":1, "w":1.5}, + {"label":"K12 (B5,B2)", "x":1.5, "y":1}, + {"label":"K13 (B5,B3)", "x":2.5, "y":1}, + {"label":"K14 (B5,B7)", "x":3.5, "y":1}, + {"label":"K15 (B5,D0)", "x":4.5, "y":1}, + {"label":"K16 (B5,D1)", "x":5.5, "y":1}, + {"label":"K17 (B5,D2)", "x":6.5, "y":1}, + {"label":"K18 (B5,D3)", "x":7.5, "y":1}, + {"label":"K19 (B5,D5)", "x":8.5, "y":1}, + {"label":"K1A (B5,F0)", "x":9.5, "y":1}, + {"label":"K1B (B5,F1)", "x":10.5, "y":1}, + {"label":"K1C (B5,C7)", "x":11.5, "y":1}, + {"label":"K1D (B5,F4)", "x":12.5, "y":1}, + {"label":"K1E (B5,F5)", "x":13.5, "y":1, "w":1.5}, + {"label":"K1F (B5,F6)", "x":15, "y":1}, + {"label":"K20 (B6,B0)", "x":0, "y":2, "w":1.75}, + {"label":"K22 (B6,B2)", "x":1.75, "y":2}, + {"label":"K23 (B6,B3)", "x":2.75, "y":2}, + {"label":"K24 (B6,B7)", "x":3.75, "y":2}, + {"label":"K25 (B6,D0)", "x":4.75, "y":2}, + {"label":"K26 (B6,D1)", "x":5.75, "y":2}, + {"label":"K27 (B6,D2)", "x":6.75, "y":2}, + {"label":"K28 (B6,D3)", "x":7.75, "y":2}, + {"label":"K29 (B6,D5)", "x":8.75, "y":2}, + {"label":"K2A (B6,F0)", "x":9.75, "y":2}, + {"label":"K2B (B6,F1)", "x":10.75, "y":2}, + {"label":"K2C (B6,C7)", "x":11.75, "y":2}, + {"label":"K2D (B6,F4)", "x":12.75, "y":2, "w":2.25}, + {"label":"K2F (B6,F6)", "x":15, "y":2}, + {"label":"K31 (C6,B1)", "x":0, "y":3, "w":2.25}, + {"label":"K32 (C6,B2)", "x":2.25, "y":3}, + {"label":"K33 (C6,B3)", "x":3.25, "y":3}, + {"label":"K34 (C6,B7)", "x":4.25, "y":3}, + {"label":"K35 (C6,D0)", "x":5.25, "y":3}, + {"label":"K36 (C6,D1)", "x":6.25, "y":3}, + {"label":"K37 (C6,D2)", "x":7.25, "y":3}, + {"label":"K38 (C6,D3)", "x":8.25, "y":3}, + {"label":"K39 (C6,D5)", "x":9.25, "y":3}, + {"label":"K3A (C6,F0)", "x":10.25, "y":3}, + {"label":"K3B (C6,F1)", "x":11.25, "y":3}, + {"label":"K3D (C6,F4)", "x":12.25, "y":3, "w":1.75}, + {"label":"K3E (C6,F5)", "x":14, "y":3}, + {"label":"K3F (C6,F6)", "x":15, "y":3}, + {"label":"K40 (F7,B0)", "x":0, "y":4, "w":1.25}, + {"label":"K41 (F7,B1)", "x":1.25, "y":4}, + {"label":"K42 (F7,B2)", "x":2.25, "y":4, "w":1.25}, + {"label":"K46 (F7,D1)", "x":3.5, "y":4, "w":6.25}, + {"label":"K4A (F7,F0)", "x":9.75, "y":4, "w":1.25}, + {"label":"K4B (F7,F1)", "x":11, "y":4, "w":1.25}, + {"label":"K4D (F7,F4)", "x":13, "y":4}, + {"label":"K4E (F7,F5)", "x":14, "y":4}, + {"label":"K4F (F7,F6)", "x":15, "y":4} + ] + } + } +} diff --git a/keyboards/phase_studio/titan65/keymaps/default/keymap.c b/keyboards/phase_studio/titan65/hotswap/keymaps/default/keymap.c similarity index 100% rename from keyboards/phase_studio/titan65/keymaps/default/keymap.c rename to keyboards/phase_studio/titan65/hotswap/keymaps/default/keymap.c diff --git a/keyboards/phase_studio/titan65/keymaps/via/keymap.c b/keyboards/phase_studio/titan65/hotswap/keymaps/via/keymap.c similarity index 100% rename from keyboards/phase_studio/titan65/keymaps/via/keymap.c rename to keyboards/phase_studio/titan65/hotswap/keymaps/via/keymap.c diff --git a/keyboards/phase_studio/titan65/hotswap/keymaps/via/rules.mk b/keyboards/phase_studio/titan65/hotswap/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/phase_studio/titan65/hotswap/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/phase_studio/titan65/readme.md b/keyboards/phase_studio/titan65/hotswap/readme.md similarity index 100% rename from keyboards/phase_studio/titan65/readme.md rename to keyboards/phase_studio/titan65/hotswap/readme.md diff --git a/keyboards/phase_studio/titan65/hotswap/rules.mk b/keyboards/phase_studio/titan65/hotswap/rules.mk new file mode 100644 index 000000000000..0def97ca75a8 --- /dev/null +++ b/keyboards/phase_studio/titan65/hotswap/rules.mk @@ -0,0 +1,25 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +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 +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = WS2812 + + +AUDIO_SUPPORTED = no +RGBLIGHT_SUPPORTED = no +RGB_MATRIX_SUPPORTED = yes diff --git a/keyboards/phase_studio/titan65/info.json b/keyboards/phase_studio/titan65/info.json deleted file mode 100644 index d9e613ee8763..000000000000 --- a/keyboards/phase_studio/titan65/info.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "keyboard_name": "Titan 65", - "url": "", - "maintainer": "drashna", - "width": 16, - "height": 5, - "layouts": { - "LAYOUT": { - "layout": [ - {"label":"K00 (B4,B0)", "x":0, "y":0}, - {"label":"K01 (B4,B1)", "x":1, "y":0}, - {"label":"K02 (B4,B2)", "x":2, "y":0}, - {"label":"K03 (B4,B3)", "x":3, "y":0}, - {"label":"K04 (B4,B7)", "x":4, "y":0}, - {"label":"K05 (B4,D0)", "x":5, "y":0}, - {"label":"K06 (B4,D1)", "x":6, "y":0}, - {"label":"K07 (B4,D2)", "x":7, "y":0}, - {"label":"K08 (B4,D3)", "x":8, "y":0}, - {"label":"K09 (B4,D5)", "x":9, "y":0}, - {"label":"K0A (B4,F0)", "x":10, "y":0}, - {"label":"K0B (B4,F1)", "x":11, "y":0}, - {"label":"K0C (B4,C7)", "x":12, "y":0}, - {"label":"K0E (B4,F5)", "x":13, "y":0, "w":2}, - {"label":"K0F (B4,F6)", "x":15, "y":0}, - {"label":"K10 (B5,B0)", "x":0, "y":1, "w":1.5}, - {"label":"K12 (B5,B2)", "x":1.5, "y":1}, - {"label":"K13 (B5,B3)", "x":2.5, "y":1}, - {"label":"K14 (B5,B7)", "x":3.5, "y":1}, - {"label":"K15 (B5,D0)", "x":4.5, "y":1}, - {"label":"K16 (B5,D1)", "x":5.5, "y":1}, - {"label":"K17 (B5,D2)", "x":6.5, "y":1}, - {"label":"K18 (B5,D3)", "x":7.5, "y":1}, - {"label":"K19 (B5,D5)", "x":8.5, "y":1}, - {"label":"K1A (B5,F0)", "x":9.5, "y":1}, - {"label":"K1B (B5,F1)", "x":10.5, "y":1}, - {"label":"K1C (B5,C7)", "x":11.5, "y":1}, - {"label":"K1D (B5,F4)", "x":12.5, "y":1}, - {"label":"K1E (B5,F5)", "x":13.5, "y":1, "w":1.5}, - {"label":"K1F (B5,F6)", "x":15, "y":1}, - {"label":"K20 (B6,B0)", "x":0, "y":2, "w":1.75}, - {"label":"K22 (B6,B2)", "x":1.75, "y":2}, - {"label":"K23 (B6,B3)", "x":2.75, "y":2}, - {"label":"K24 (B6,B7)", "x":3.75, "y":2}, - {"label":"K25 (B6,D0)", "x":4.75, "y":2}, - {"label":"K26 (B6,D1)", "x":5.75, "y":2}, - {"label":"K27 (B6,D2)", "x":6.75, "y":2}, - {"label":"K28 (B6,D3)", "x":7.75, "y":2}, - {"label":"K29 (B6,D5)", "x":8.75, "y":2}, - {"label":"K2A (B6,F0)", "x":9.75, "y":2}, - {"label":"K2B (B6,F1)", "x":10.75, "y":2}, - {"label":"K2C (B6,C7)", "x":11.75, "y":2}, - {"label":"K2D (B6,F4)", "x":12.75, "y":2, "w":2.25}, - {"label":"K2F (B6,F6)", "x":15, "y":2}, - {"label":"K31 (C6,B1)", "x":0, "y":3, "w":2.25}, - {"label":"K32 (C6,B2)", "x":2.25, "y":3}, - {"label":"K33 (C6,B3)", "x":3.25, "y":3}, - {"label":"K34 (C6,B7)", "x":4.25, "y":3}, - {"label":"K35 (C6,D0)", "x":5.25, "y":3}, - {"label":"K36 (C6,D1)", "x":6.25, "y":3}, - {"label":"K37 (C6,D2)", "x":7.25, "y":3}, - {"label":"K38 (C6,D3)", "x":8.25, "y":3}, - {"label":"K39 (C6,D5)", "x":9.25, "y":3}, - {"label":"K3A (C6,F0)", "x":10.25, "y":3}, - {"label":"K3B (C6,F1)", "x":11.25, "y":3}, - {"label":"K3D (C6,F4)", "x":12.25, "y":3, "w":1.75}, - {"label":"K3E (C6,F5)", "x":14, "y":3}, - {"label":"K3F (C6,F6)", "x":15, "y":3}, - {"label":"K40 (F7,B0)", "x":0, "y":4, "w":1.25}, - {"label":"K41 (F7,B1)", "x":1.25, "y":4}, - {"label":"K42 (F7,B2)", "x":2.25, "y":4, "w":1.25}, - {"label":"K46 (F7,D1)", "x":3.5, "y":4, "w":6.25}, - {"label":"K4A (F7,F0)", "x":9.75, "y":4, "w":1.25}, - {"label":"K4B (F7,F1)", "x":11, "y":4, "w":1.25}, - {"label":"K4D (F7,F4)", "x":13, "y":4}, - {"label":"K4E (F7,F5)", "x":14, "y":4}, - {"label":"K4F (F7,F6)", "x":15, "y":4} - ] - } - } -} diff --git a/keyboards/phase_studio/titan65/rules.mk b/keyboards/phase_studio/titan65/rules.mk index 02f2c7d01b40..d55ca35d7a1b 100644 --- a/keyboards/phase_studio/titan65/rules.mk +++ b/keyboards/phase_studio/titan65/rules.mk @@ -1,26 +1 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -BOOTLOADER = atmel-dfu - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -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 -RGB_MATRIX_ENABLE = yes -RGB_MATRIX_DRIVER = WS2812 - - -AUDIO_SUPPORTED = no -RGBLIGHT_SUPPORTED = no -RGB_MATRIX_SUPPORTED = yes +DEFAULT_FOLDER = phase_studio/titan65/hotswap diff --git a/keyboards/phase_studio/titan65/soldered/config.h b/keyboards/phase_studio/titan65/soldered/config.h new file mode 100644 index 000000000000..6ecde7d1f361 --- /dev/null +++ b/keyboards/phase_studio/titan65/soldered/config.h @@ -0,0 +1,45 @@ +/* Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x5054 +#define PRODUCT_ID 0xBB92 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Phase Studio +#define PRODUCT Titan 65 (soldered) + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 16 + +/* + * 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 { B6, C6, C7, F7, E6 } +#define MATRIX_COL_PINS { D3, D5, D4, D6, D7, B4, B5, F6, F5, F4, F1, F0, B0, B1, B2, B3 } + +#define DIODE_DIRECTION COL2ROW diff --git a/keyboards/phase_studio/titan65/soldered/info.json b/keyboards/phase_studio/titan65/soldered/info.json new file mode 100644 index 000000000000..96bf7c05e98d --- /dev/null +++ b/keyboards/phase_studio/titan65/soldered/info.json @@ -0,0 +1,81 @@ +{ + "keyboard_name": "Titan 65 (soldered)", + "url": "", + "maintainer": "drashna", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"K00 (B4,B0)", "x":0, "y":0}, + {"label":"K01 (B4,B1)", "x":1, "y":0}, + {"label":"K02 (B4,B2)", "x":2, "y":0}, + {"label":"K03 (B4,B3)", "x":3, "y":0}, + {"label":"K04 (B4,B7)", "x":4, "y":0}, + {"label":"K05 (B4,D0)", "x":5, "y":0}, + {"label":"K06 (B4,D1)", "x":6, "y":0}, + {"label":"K07 (B4,D2)", "x":7, "y":0}, + {"label":"K08 (B4,D3)", "x":8, "y":0}, + {"label":"K09 (B4,D5)", "x":9, "y":0}, + {"label":"K0A (B4,F0)", "x":10, "y":0}, + {"label":"K0B (B4,F1)", "x":11, "y":0}, + {"label":"K0C (B4,C7)", "x":12, "y":0}, + {"label":"K0E (B4,F5)", "x":13, "y":0}, + {"label":"K0E (B4,F5)", "x":13, "y":0}, + {"label":"K0E (B4,F5)", "x":14, "y":0}, + {"label":"K0F (B4,F6)", "x":15, "y":0}, + {"label":"K10 (B5,B0)", "x":0, "y":1, "w":1.5}, + {"label":"K12 (B5,B2)", "x":1.5, "y":1}, + {"label":"K13 (B5,B3)", "x":2.5, "y":1}, + {"label":"K14 (B5,B7)", "x":3.5, "y":1}, + {"label":"K15 (B5,D0)", "x":4.5, "y":1}, + {"label":"K16 (B5,D1)", "x":5.5, "y":1}, + {"label":"K17 (B5,D2)", "x":6.5, "y":1}, + {"label":"K18 (B5,D3)", "x":7.5, "y":1}, + {"label":"K19 (B5,D5)", "x":8.5, "y":1}, + {"label":"K1A (B5,F0)", "x":9.5, "y":1}, + {"label":"K1B (B5,F1)", "x":10.5, "y":1}, + {"label":"K1C (B5,C7)", "x":11.5, "y":1}, + {"label":"K1D (B5,F4)", "x":12.5, "y":1}, + {"label":"K1E (B5,F5)", "x":13.5, "y":1, "w":1.5}, + {"label":"K1F (B5,F6)", "x":15, "y":1}, + {"label":"K20 (B6,B0)", "x":0, "y":2, "w":1.75}, + {"label":"K22 (B6,B2)", "x":1.75, "y":2}, + {"label":"K23 (B6,B3)", "x":2.75, "y":2}, + {"label":"K24 (B6,B7)", "x":3.75, "y":2}, + {"label":"K25 (B6,D0)", "x":4.75, "y":2}, + {"label":"K26 (B6,D1)", "x":5.75, "y":2}, + {"label":"K27 (B6,D2)", "x":6.75, "y":2}, + {"label":"K28 (B6,D3)", "x":7.75, "y":2}, + {"label":"K29 (B6,D5)", "x":8.75, "y":2}, + {"label":"K2A (B6,F0)", "x":9.75, "y":2}, + {"label":"K2B (B6,F1)", "x":10.75, "y":2}, + {"label":"K2C (B6,C7)", "x":11.75, "y":2}, + {"label":"K2D (B6,F4)", "x":12.75, "y":2, "w":2.25}, + {"label":"K2F (B6,F6)", "x":15, "y":2}, + {"label":"K30 (C6,B1)", "x":0, "y":3, "w":1.25}, + {"label":"K30 (C6,B1)", "x":1.25, "y":3}, + {"label":"K32 (C6,B2)", "x":2.25, "y":3}, + {"label":"K33 (C6,B3)", "x":3.25, "y":3}, + {"label":"K34 (C6,B7)", "x":4.25, "y":3}, + {"label":"K35 (C6,D0)", "x":5.25, "y":3}, + {"label":"K36 (C6,D1)", "x":6.25, "y":3}, + {"label":"K37 (C6,D2)", "x":7.25, "y":3}, + {"label":"K38 (C6,D3)", "x":8.25, "y":3}, + {"label":"K39 (C6,D5)", "x":9.25, "y":3}, + {"label":"K3A (C6,F0)", "x":10.25, "y":3}, + {"label":"K3B (C6,F1)", "x":11.25, "y":3}, + {"label":"K3D (C6,F4)", "x":12.25, "y":3, "w":1.75}, + {"label":"K3E (C6,F5)", "x":14, "y":3}, + {"label":"K3F (C6,F6)", "x":15, "y":3}, + {"label":"K40 (F7,B0)", "x":0, "y":4, "w":1.25}, + {"label":"K41 (F7,B1)", "x":1.25, "y":4}, + {"label":"K42 (F7,B2)", "x":2.25, "y":4, "w":1.25}, + {"label":"K46 (F7,D1)", "x":3.5, "y":4, "w":6.25}, + {"label":"K4A (F7,F0)", "x":9.75, "y":4, "w":1.25}, + {"label":"K4B (F7,F1)", "x":11, "y":4, "w":1.25}, + {"label":"K4D (F7,F4)", "x":13, "y":4}, + {"label":"K4E (F7,F5)", "x":14, "y":4}, + {"label":"K4F (F7,F6)", "x":15, "y":4} + ] + } + } +} diff --git a/keyboards/phase_studio/titan65/soldered/keymaps/default/keymap.c b/keyboards/phase_studio/titan65/soldered/keymaps/default/keymap.c new file mode 100644 index 000000000000..7751c0a0dd20 --- /dev/null +++ b/keyboards/phase_studio/titan65/soldered/keymaps/default/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_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_BSPC, KC_DEL, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUBS, KC_ENT, KC_PGDN, + KC_LSFT, KC_NUHS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, LT(1, KC_END), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_all( + KC_GRV, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, + _______, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD,RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; diff --git a/keyboards/phase_studio/titan65/soldered/keymaps/via/keymap.c b/keyboards/phase_studio/titan65/soldered/keymaps/via/keymap.c new file mode 100644 index 000000000000..678dcfc91a1e --- /dev/null +++ b/keyboards/phase_studio/titan65/soldered/keymaps/via/keymap.c @@ -0,0 +1,51 @@ +/* Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_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_BSPC, KC_DEL, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUBS, KC_ENT, KC_PGDN, + KC_LSFT, KC_NUHS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, LT(1, KC_END), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_all( + KC_GRV, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, + _______, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD,RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + + [2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; diff --git a/keyboards/phase_studio/titan65/soldered/keymaps/via/rules.mk b/keyboards/phase_studio/titan65/soldered/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/phase_studio/titan65/soldered/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/phase_studio/titan65/soldered/readme.md b/keyboards/phase_studio/titan65/soldered/readme.md new file mode 100644 index 000000000000..2d09592be76c --- /dev/null +++ b/keyboards/phase_studio/titan65/soldered/readme.md @@ -0,0 +1,24 @@ +# Titan 65 + +A 65% ANSI keyboard with per key RGB + +* Keyboard Maintainer: [Drashna Jaelre](https://github.com/drashna) +* Hardware Supported: atmega32u4 based PCB +* Hardware Availability: TBD + +Make example for this keyboard (after setting up your build environment): + + make phase_studio/titan65:default + +Flashing example for this keyboard: + + make phase_studio/titan65: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 + +To enter the bootloader, hold down the top left most key when plugging in the USB cable. + +Alternatively, the default keymap has a RESET key if yo hold down the "home" (right most, second from botton) key and hit the top right most key. diff --git a/keyboards/phase_studio/titan65/soldered/rules.mk b/keyboards/phase_studio/titan65/soldered/rules.mk new file mode 100644 index 000000000000..6732257d1d42 --- /dev/null +++ b/keyboards/phase_studio/titan65/soldered/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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +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 + + +AUDIO_SUPPORTED = no +RGBLIGHT_SUPPORTED = no +RGB_MATRIX_SUPPORTED = no diff --git a/keyboards/phase_studio/titan65/soldered/soldered.c b/keyboards/phase_studio/titan65/soldered/soldered.c new file mode 100644 index 000000000000..65aee33f6b52 --- /dev/null +++ b/keyboards/phase_studio/titan65/soldered/soldered.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "soldered.h" diff --git a/keyboards/phase_studio/titan65/soldered/soldered.h b/keyboards/phase_studio/titan65/soldered/soldered.h new file mode 100644 index 000000000000..f312337970ec --- /dev/null +++ b/keyboards/phase_studio/titan65/soldered/soldered.h @@ -0,0 +1,91 @@ +/* Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ___ KC_NO + +#define LAYOUT_all( \ + 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, k2e, k2f, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, \ + k40, 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, ___, 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, k2e, k2f }, \ + { k30, ___, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f }, \ + { k40, ___, k42, k43, ___, ___, ___, k47, ___, ___, ___, k4b, k4c, k4d, k4e, k4f } \ +} + +#define LAYOUT_ansi( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, 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, k2e, k2f, \ + k30, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, \ + k40, k42, k43, k47, k4b, k4c, k4d, k4e, k4f \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, ___, 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, ___, k2e, k2f }, \ + { k30, ___, ___, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f }, \ + { k40, ___, k42, k43, ___, ___, ___, k47, ___, ___, ___, k4b, k4c, k4d, k4e, k4f } \ +} + +#define LAYOUT_ansi_split_bspc( \ + 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, k2e, k2f, \ + k30, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, \ + k40, 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, ___, 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, ___, k2e, k2f }, \ + { k30, ___, ___, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f }, \ + { k40, ___, k42, k43, ___, ___, ___, k47, ___, ___, ___, k4b, k4c, k4d, k4e, k4f } \ +} + +#define LAYOUT_iso( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0f, \ + k10, 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, k3e, k3f, \ + k40, k42, k43, k47, k4b, k4c, k4d, k4e, k4f \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, ___, k0f }, \ + { k10, ___, 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, k3e, k3f }, \ + { k40, ___, k42, k43, ___, ___, ___, k47, ___, ___, ___, k4b, k4c, k4d, k4e, k4f } \ +} + +#define LAYOUT_iso_split_bspc( \ + 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, 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, k3e, k3f, \ + k40, 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, ___, 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, k3e, k3f }, \ + { k40, ___, k42, k43, ___, ___, ___, k47, ___, ___, ___, k4b, k4c, k4d, k4e, k4f } \ +} diff --git a/keyboards/phase_studio/titan65/titan65.c b/keyboards/phase_studio/titan65/titan65.c deleted file mode 100644 index b43c1b4346cf..000000000000 --- a/keyboards/phase_studio/titan65/titan65.c +++ /dev/null @@ -1,51 +0,0 @@ -/* Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "titan65.h" - -#ifdef RGB_MATRIX_ENABLE -led_config_t g_led_config = { - { - { 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, NO_LED, 65, 66 }, - { 51, NO_LED, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, .38, 37 }, - { 23, NO_LED, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, NO_LED, 36 }, - { NO_LED, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, NO_LED, 11, 10, 9 }, - { 0, 1, NO_LED, 2, NO_LED, NO_LED, 3, NO_LED, NO_LED, NO_LED, 4, 5, NO_LED, 6, 7, 8 } - }, { - { 2, 64 }, { 21, 64 }, { 39, 64 }, { 96, 64 }, { 150, 64 }, { 165, 64 }, { 195, 64 }, { 210, 64 }, { 224, 64 }, - { 224, 48 }, { 210, 48 }, { 189, 48 }, { 154, 48 }, { 139, 48 }, { 124, 48 }, { 109, 48 }, { 94, 48 }, { 79, 48 }, { 64, 48 }, { 49, 48 }, { 34, 48 }, { 22, 48 }, { 5, 48 }, - { 6, 32 }, { 41, 32 }, { 56, 32 }, { 71, 32 }, { 86, 32 }, { 101, 32 }, { 116, 32 }, { 131, 32 }, { 146, 32 }, { 161, 32 }, { 176, 32 }, { 181, 32 }, { 201, 32 }, { 224, 32 }, - { 224, 16 }, { 206, 16 },{ 188, 16 }, { 173, 16 }, { 158, 16 }, { 143, 16 }, { 128, 16 }, { 113, 16 }, { 98, 16 }, { 83, 16 }, { 68, 16 }, { 53, 16 }, { 38, 16 }, { 22, 16 }, { 4, 16 }, - { 0, 0 }, { 15, 0 }, { 30, 0 }, { 45, 0 }, { 60, 0 }, { 75, 0 }, { 90, 0 }, { 105, 0 }, { 120, 0 }, { 135, 0 }, { 150, 0 }, { 165, 0 }, { 180, 0 }, { 203, 0 }, { 224, 0 } - }, { - 1, 1, 1, 4, 1, 1, 1, 1, 1, - 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, - 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, - 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, - 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1 - } -}; - -void suspend_power_down_kb(void) { - rgb_matrix_set_suspend_state(true); - suspend_power_down_user(); -} - -void suspend_wakeup_init_kb(void) { - rgb_matrix_set_suspend_state(false); - suspend_wakeup_init_user(); -} -#endif diff --git a/keyboards/phoenix/info.json b/keyboards/phoenix/info.json index 368567fdec1c..65cdaaa33865 100644 --- a/keyboards/phoenix/info.json +++ b/keyboards/phoenix/info.json @@ -2,9 +2,6 @@ "keyboard_name": "Phoenix", "url": "ergokb.tw", "maintainer": "ErgoKB via lschyi", - "width": 17, - "height": 8, - "layouts": { "LAYOUT_ergodox": { "layout": [ diff --git a/keyboards/phoenix/rules.mk b/keyboards/phoenix/rules.mk index 7fa379f1a162..401d19482395 100644 --- a/keyboards/phoenix/rules.mk +++ b/keyboards/phoenix/rules.mk @@ -7,16 +7,14 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend, do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE 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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output STENO_ENABLE = no SPLIT_KEYBOARD = yes diff --git a/keyboards/phrygian/ph100/chconf.h b/keyboards/phrygian/ph100/chconf.h new file mode 100644 index 000000000000..1c9cc3236421 --- /dev/null +++ b/keyboards/phrygian/ph100/chconf.h @@ -0,0 +1,61 @@ +/* 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/phrygian/ph100/chconf.h -r platforms/chibios/common/configs/chconf.h` + */ + +#pragma once + +#define CH_CFG_ST_FREQUENCY 10000 + +#define CH_CFG_USE_REGISTRY TRUE + +#define CH_CFG_USE_WAITEXIT TRUE + +#define CH_CFG_USE_CONDVARS TRUE + +#define CH_CFG_USE_MESSAGES TRUE + +#define CH_CFG_USE_MAILBOXES TRUE + +#define CH_CFG_USE_HEAP TRUE + +#define CH_CFG_USE_MEMPOOLS TRUE + +#define CH_CFG_USE_OBJ_FIFOS TRUE + +#define CH_CFG_USE_PIPES TRUE + +#define CH_CFG_USE_DYNAMIC TRUE + +#define CH_CFG_USE_FACTORY TRUE + +#define CH_CFG_FACTORY_OBJECTS_REGISTRY TRUE + +#define CH_CFG_FACTORY_GENERIC_BUFFERS TRUE + +#define CH_CFG_FACTORY_SEMAPHORES TRUE + +#define CH_CFG_FACTORY_MAILBOXES TRUE + +#define CH_CFG_FACTORY_OBJ_FIFOS TRUE + +#define CH_CFG_FACTORY_PIPES TRUE + +#include_next + diff --git a/keyboards/phrygian/ph100/config.h b/keyboards/phrygian/ph100/config.h new file mode 100644 index 000000000000..68bd430736ce --- /dev/null +++ b/keyboards/phrygian/ph100/config.h @@ -0,0 +1,43 @@ +/* Copyright 2021 Phrygian Design + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x0C61 +#define DEVICE_VER 0x0100 +#define MANUFACTURER PhrygianDesign +#define PRODUCT ph100 + +/* key matrix size */ +#define MATRIX_ROWS 10 +#define MATRIX_COLS 10 + +#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, B5, B6, B7, B8, B9 } +#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, A8, A9 } + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Define capslock and numlock */ +#define LED_NUM_LOCK_PIN B14 +#define LED_CAPS_LOCK_PIN B15 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 10 diff --git a/keyboards/phrygian/ph100/halconf.h b/keyboards/phrygian/ph100/halconf.h new file mode 100644 index 000000000000..f6be8c0ff321 --- /dev/null +++ b/keyboards/phrygian/ph100/halconf.h @@ -0,0 +1,37 @@ +/* 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/phrygian/ph100/halconf.h -r platforms/chibios/common/configs/halconf.h` + */ + +#pragma once + +#define HAL_USE_SERIAL_USB TRUE + +#define ADC_USE_WAIT FALSE + +#define ADC_USE_MUTUAL_EXCLUSION FALSE + +#define SERIAL_USB_BUFFERS_SIZE 256 + +#define SPI_USE_WAIT FALSE + +#define SPI_USE_MUTUAL_EXCLUSION FALSE + +#include_next + diff --git a/keyboards/phrygian/ph100/info.json b/keyboards/phrygian/ph100/info.json new file mode 100644 index 000000000000..054e3955e0a0 --- /dev/null +++ b/keyboards/phrygian/ph100/info.json @@ -0,0 +1,111 @@ +{ + "keyboard_name": "ph100", + "url": "https://phrygiandesign.com/products/ph100-mechanical-keyboard", + "maintainer": "phrygiandesign", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"ESCAPE", "x":0, "y":0}, + {"label":"F1", "x":2, "y":0}, + {"label":"F2", "x":3, "y":0}, + {"label":"F3", "x":4, "y":0}, + {"label":"F4", "x":5, "y":0}, + {"label":"F5", "x":6.5, "y":0}, + {"label":"F6", "x":7.5, "y":0}, + {"label":"F7", "x":8.5, "y":0}, + {"label":"F8", "x":9.5, "y":0}, + {"label":"F9", "x":11, "y":0}, + {"label":"F10", "x":12, "y":0}, + {"label":"F11", "x":13, "y":0}, + {"label":"F12", "x":14, "y":0}, + {"label":"HOME", "x":15.25, "y":0}, + {"label":"PRINT SCREEN", "x":16.25, "y":0}, + {"label":"BACKTICK", "x":0, "y":1}, + {"label":"1", "x":1, "y":1}, + {"label":"2", "x":2, "y":1}, + {"label":"3", "x":3, "y":1}, + {"label":"4", "x":4, "y":1}, + {"label":"5", "x":5, "y":1}, + {"label":"6", "x":6, "y":1}, + {"label":"7", "x":7, "y":1}, + {"label":"8", "x":8, "y":1}, + {"label":"9", "x":9, "y":1}, + {"label":"0", "x":10, "y":1}, + {"label":"MINUS", "x":11, "y":1}, + {"label":"EQUALS", "x":12, "y":1}, + {"label":"BACKSPACE", "x":13, "y":1, "w":2}, + {"label":"END", "x":15.25, "y":1}, + {"label":"PAGE UP", "x":16.25, "y":1}, + {"label":"NUM LOCK", "x":17.5, "y":1}, + {"label":"/", "x":18.5, "y":1}, + {"label":"*", "x":19.5, "y":1}, + {"label":"-", "x":20.5, "y":1}, + {"label":"TAB", "x":0, "y":2, "w":1.5}, + {"label":"Q", "x":1.5, "y":2}, + {"label":"W", "x":2.5, "y":2}, + {"label":"E", "x":3.5, "y":2}, + {"label":"R", "x":4.5, "y":2}, + {"label":"T", "x":5.5, "y":2}, + {"label":"Y", "x":6.5, "y":2}, + {"label":"U", "x":7.5, "y":2}, + {"label":"I", "x":8.5, "y":2}, + {"label":"O", "x":9.5, "y":2}, + {"label":"P", "x":10.5, "y":2}, + {"label":"LEFT BRACKET", "x":11.5, "y":2}, + {"label":"RIGHT BRACKET", "x":12.5, "y":2}, + {"label":"BACK SLASH", "x":13.5, "y":2, "w":1.5}, + {"label":"DELETE", "x":15.25, "y":2}, + {"label":"PAGE DOWN", "x":16.25, "y":2}, + {"label":"7", "x":17.5, "y":2}, + {"label":"8", "x":18.5, "y":2}, + {"label":"9", "x":19.5, "y":2}, + {"label":"+", "x":20.5, "y":2, "h":2}, + {"label":"CAPS LOCK", "x":0, "y":3, "w":1.75}, + {"label":"A", "x":1.75, "y":3}, + {"label":"S", "x":2.75, "y":3}, + {"label":"D", "x":3.75, "y":3}, + {"label":"F", "x":4.75, "y":3}, + {"label":"G", "x":5.75, "y":3}, + {"label":"H", "x":6.75, "y":3}, + {"label":"J", "x":7.75, "y":3}, + {"label":"K", "x":8.75, "y":3}, + {"label":"L", "x":9.75, "y":3}, + {"label":"SEMICOLON", "x":10.75, "y":3}, + {"label":"SINGLE TICK", "x":11.75, "y":3}, + {"label":"ENTER", "x":12.75, "y":3, "w":2.25}, + {"label":"4", "x":17.5, "y":3}, + {"label":"5", "x":18.5, "y":3}, + {"label":"6", "x":19.5, "y":3}, + {"label":"LEFT SHIFT", "x":0, "y":4, "w":2.25}, + {"label":"Z", "x":2.25, "y":4}, + {"label":"X", "x":3.25, "y":4}, + {"label":"C", "x":4.25, "y":4}, + {"label":"V", "x":5.25, "y":4}, + {"label":"B", "x":6.25, "y":4}, + {"label":"N", "x":7.25, "y":4}, + {"label":"M", "x":8.25, "y":4}, + {"label":"COMMA", "x":9.25, "y":4}, + {"label":"PERIOD", "x":10.25, "y":4}, + {"label":"FORWARD SLASH", "x":11.25, "y":4}, + {"label":"RIGHT SHIFT", "x":12.25, "y":4, "w":2.25}, + {"label":"UP ARROW", "x":15.25, "y":4}, + {"label":"1", "x":17.5, "y":4}, + {"label":"2", "x":18.5, "y":4}, + {"label":"3", "x":19.5, "y":4}, + {"label":"ENTER", "x":20.5, "y":4, "h":2}, + {"label":"LEFT CTRL", "x":0, "y":5, "w":1.25}, + {"label":"LEFT WIN", "x":1.25, "y":5, "w":1.25}, + {"label":"LEFT ALT", "x":2.5, "y":5, "w":1.25}, + {"label":"SPACEBAR", "x":3.75, "y":5, "w":6.25}, + {"label":"RIGHT ALT", "x":10, "y":5, "w":1.25}, + {"label":"RIGHT CTRL", "x":11.25, "y":5, "w":1.25}, + {"label":"FN", "x":12.5, "y":5}, + {"label":"LEFT ARROW", "x":14.25, "y":5}, + {"label":"DOWN ARROW", "x":15.25, "y":5}, + {"label":"RIGHT ARROW", "x":16.25, "y":5}, + {"label":"0", "x":17.5, "y":5, "w":2}, + {"label":".", "x":19.5, "y":5} + ] + } + } +} diff --git a/keyboards/phrygian/ph100/keymaps/default/keymap.c b/keyboards/phrygian/ph100/keymaps/default/keymap.c new file mode 100644 index 000000000000..0350aec538c9 --- /dev/null +++ b/keyboards/phrygian/ph100/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +/* Copyright 2021 Phrygian Design + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_PGUP, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_PGDN, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, KC_END, KC_P7, KC_P8, KC_P9, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_APP, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT) +}; \ No newline at end of file diff --git a/keyboards/phrygian/ph100/ph100.c b/keyboards/phrygian/ph100/ph100.c new file mode 100644 index 000000000000..45c2426961c8 --- /dev/null +++ b/keyboards/phrygian/ph100/ph100.c @@ -0,0 +1,19 @@ +/* Copyright 2021 Phrygian Design + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "ph100.h" + +//Put software here \ No newline at end of file diff --git a/keyboards/phrygian/ph100/ph100.h b/keyboards/phrygian/ph100/ph100.h new file mode 100644 index 000000000000..bd18bfd1902f --- /dev/null +++ b/keyboards/phrygian/ph100/ph100.h @@ -0,0 +1,44 @@ +/* Copyright 2021 Phrygian Design + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define XXX KC_NO + +#include "quantum.h" + +// This a shortcut to help you visually see your layout. + +#define LAYOUT(\ + K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K61, K62, K63, K64, K65, \ + K11, K12, K13, K14, K15, K16, K17, K18, K19, K20, K71, K72, K73, K74, K75, K76, K66, K67, K68, K69, \ + K21, K22, K23, K24, K25, K26, K27, K28, K29, K30, K81, K82, K83, K84, K85, K86, K77, K78, K79, \ + K31, K32, K33, K34, K35, K36, K37, K38, K39, K40, K91, K93, K95, K87, K88, K80, K70, \ + K41, K42, K43, K44, K45, K46, K47, K48, K49, K50, K92, K94, K96, K97, K89, K90, \ + K51, K52, K53, K54, K55, K56, K57, K58, K59, K60, K98, K99, K100\ +){ \ + { 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, K72, K73, K74, K75, K76, K77, K78, K79, K80 }, \ + { K81, K82, K83, K84, K85, K86, K87, K88, K89, K90 }, \ + { K91, K92, K93, K94, K95, K96, K97, K98, K99, K100 }, \ +} + diff --git a/keyboards/phrygian/ph100/readme.md b/keyboards/phrygian/ph100/readme.md new file mode 100644 index 000000000000..f6419880e6a7 --- /dev/null +++ b/keyboards/phrygian/ph100/readme.md @@ -0,0 +1,20 @@ +## Phrygian Design ph100 + +![ph100](https://cdn.shopify.com/s/files/1/0470/8814/0443/products/DSCF0064_1080x.png) + +The ph100 is a 100-key modular keyboard from Phrygian Design. + +* Keyboard Maintainer: https://github.com/phrygiandesign +* Hardware Supported: ph100 PCB +* Hardware Availability: https://phrygiandesign.com/products/ph100-mechanical-keyboard +* Keyboard support: contact@phrygiandesign.com + +Make example for this keyboard: + + make phrygian/ph100: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). + +#### Note: Booting into the STM32 USB Bootloader +The STM32F042 range of microcontrollers have problems with entering into the USB bootloader with QMK's bootloader key sequence. +To boot into the bootloader, apply power to the keyboard while holding down "SW0" on the bottom of PCB near the USB port. diff --git a/keyboards/phrygian/ph100/rules.mk b/keyboards/phrygian/ph100/rules.mk new file mode 100644 index 000000000000..a2e67043602a --- /dev/null +++ b/keyboards/phrygian/ph100/rules.mk @@ -0,0 +1,23 @@ +# MCU name +MCU = STM32F042 + +# Bootloader selection +BOOTLOADER = stm32-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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 + + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/pico/rules.mk b/keyboards/pico/rules.mk index 0d41e849439c..1ce1bdb049f4 100644 --- a/keyboards/pico/rules.mk +++ b/keyboards/pico/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. SPLIT_KEYBOARD = yes diff --git a/keyboards/picolab/frusta_fundamental/info.json b/keyboards/picolab/frusta_fundamental/info.json index c2de5b8d1a8e..bc6fb17e2125 100644 --- a/keyboards/picolab/frusta_fundamental/info.json +++ b/keyboards/picolab/frusta_fundamental/info.json @@ -2,8 +2,6 @@ "keyboard_name": "frusta_fundamental", "url": "https://picolab.hk", "maintainer": "PicoLab", - "width": 16, - "height": 5, "layouts": { "LAYOUT": { "layout": [ @@ -81,4 +79,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/picolab/frusta_fundamental/rules.mk b/keyboards/picolab/frusta_fundamental/rules.mk index d4bb32b6f15b..494137cfc17a 100644 --- a/keyboards/picolab/frusta_fundamental/rules.mk +++ b/keyboards/picolab/frusta_fundamental/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output \ No newline at end of file diff --git a/keyboards/pimentoso/paddino02/rev1/info.json b/keyboards/pimentoso/paddino02/rev1/info.json index cac61f71c1d6..8da1c8642fe0 100644 --- a/keyboards/pimentoso/paddino02/rev1/info.json +++ b/keyboards/pimentoso/paddino02/rev1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Paddino02 rev1", "url": "", "maintainer": "Pimentoso", - "width": 4, - "height": 3.75, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/pimentoso/paddino02/rev1/rules.mk b/keyboards/pimentoso/paddino02/rev1/rules.mk index c000c9ee1652..3b9d9e98e41d 100644 --- a/keyboards/pimentoso/paddino02/rev1/rules.mk +++ b/keyboards/pimentoso/paddino02/rev1/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output KEY_LOCK_ENABLE = no # Allows locking any key. diff --git a/keyboards/pimentoso/paddino02/rev2/left/info.json b/keyboards/pimentoso/paddino02/rev2/left/info.json index ab5e30619393..2468b11a7081 100644 --- a/keyboards/pimentoso/paddino02/rev2/left/info.json +++ b/keyboards/pimentoso/paddino02/rev2/left/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Paddino02 rev2 (left)", "url": "", "maintainer": "Pimentoso", - "width": 4, - "height": 3.75, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/pimentoso/paddino02/rev2/left/rules.mk b/keyboards/pimentoso/paddino02/rev2/left/rules.mk index c000c9ee1652..3b9d9e98e41d 100755 --- a/keyboards/pimentoso/paddino02/rev2/left/rules.mk +++ b/keyboards/pimentoso/paddino02/rev2/left/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output KEY_LOCK_ENABLE = no # Allows locking any key. diff --git a/keyboards/pimentoso/paddino02/rev2/right/info.json b/keyboards/pimentoso/paddino02/rev2/right/info.json index 1ad6d3223437..fde06194d954 100644 --- a/keyboards/pimentoso/paddino02/rev2/right/info.json +++ b/keyboards/pimentoso/paddino02/rev2/right/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Paddino02 rev2 (right)", "url": "", "maintainer": "Pimentoso", - "width": 4, - "height": 3.75, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/pimentoso/paddino02/rev2/right/rules.mk b/keyboards/pimentoso/paddino02/rev2/right/rules.mk index c000c9ee1652..3b9d9e98e41d 100755 --- a/keyboards/pimentoso/paddino02/rev2/right/rules.mk +++ b/keyboards/pimentoso/paddino02/rev2/right/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output KEY_LOCK_ENABLE = no # Allows locking any key. diff --git a/keyboards/pimentoso/touhoupad/config.h b/keyboards/pimentoso/touhoupad/config.h new file mode 100644 index 000000000000..8fd4e78116be --- /dev/null +++ b/keyboards/pimentoso/touhoupad/config.h @@ -0,0 +1,52 @@ +/* Copyright 2021 Michele Ferri + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xD00D +#define PRODUCT_ID 0x0031 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Pimentoso +#define PRODUCT TouhouPad rev2 + +#define MATRIX_ROWS 1 +#define MATRIX_COLS 10 + +#define MATRIX_ROW_PINS { D4 } +#define MATRIX_COL_PINS { C6,D7,E6,B4,B6,B2,B3,B1,F7,F6 } + +#define DIODE_DIRECTION COL2ROW + +#define RGB_DI_PIN F4 +#ifdef RGB_DI_PIN + #define RGBLED_NUM 12 + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ + #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ + #define RGBLIGHT_EFFECT_BREATHING + #define RGBLIGHT_EFFECT_RAINBOW_MOOD + #define RGBLIGHT_EFFECT_RAINBOW_SWIRL + #define RGBLIGHT_EFFECT_STATIC_GRADIENT + #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 + #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 + #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +#endif + +#define DEBOUNCE 5 diff --git a/keyboards/pimentoso/touhoupad/info.json b/keyboards/pimentoso/touhoupad/info.json new file mode 100644 index 000000000000..59fded1959b4 --- /dev/null +++ b/keyboards/pimentoso/touhoupad/info.json @@ -0,0 +1,24 @@ +{ + "keyboard_name": "TouhouPad", + "url": "https://github.com/Pimentoso/TouhouPad_v2", + "maintainer": "Pimentoso", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"esc", "x":5.25, "y":0}, + {"label":"enter", "x":6.25, "y":0}, + + {"label":"slow", "x":0, "y":1}, + {"label":"fire", "x":1, "y":1}, + {"label":"rapid", "x":2, "y":1}, + + {"label":"up", "x":6.25, "y":1.75}, + {"label":"left", "x":5.25, "y":2.75}, + {"label":"down", "x":6.25, "y":2.75}, + {"label":"right", "x":7.25, "y":2.75}, + + {"label":"bomb", "x":3.25, "y":3} + ] + } + } +} diff --git a/keyboards/pimentoso/touhoupad/keymaps/default/keymap.c b/keyboards/pimentoso/touhoupad/keymaps/default/keymap.c new file mode 100644 index 000000000000..f47380e4dc6a --- /dev/null +++ b/keyboards/pimentoso/touhoupad/keymaps/default/keymap.c @@ -0,0 +1,33 @@ +/* Copyright 2021 Michele Ferri + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + LAYOUT( /* Base */ + LT(1,KC_ESC), KC_ENT, + KC_LSFT, KC_Z, KC_C, + KC_UP, + KC_LEFT, KC_DOWN, KC_RGHT, + KC_X + ), + LAYOUT( /* RGB controls */ + KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, + RGB_VAI, + RGB_TOG, RGB_VAD, RGB_MOD, + KC_NO + ) +}; diff --git a/keyboards/pimentoso/touhoupad/keymaps/default/readme.md b/keyboards/pimentoso/touhoupad/keymaps/default/readme.md new file mode 100644 index 000000000000..00bf43cb990f --- /dev/null +++ b/keyboards/pimentoso/touhoupad/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for 4pack diff --git a/keyboards/pimentoso/touhoupad/readme.md b/keyboards/pimentoso/touhoupad/readme.md new file mode 100644 index 000000000000..7e122c327b7a --- /dev/null +++ b/keyboards/pimentoso/touhoupad/readme.md @@ -0,0 +1,19 @@ +# TouhouPad + +![TouhouPad](https://i.imgur.com/JeEqeEs.png) + +A 10 key gamepad specifically for playing Touhou danmaku games. + +You can find building instructions and gerber files to print the circuit board on the [project page.](https://github.com/Pimentoso/TouhouPad_v2) + +* Keyboard Maintainer: [Michele Ferri](https://github.com/Pimentoso) +* Hardware Supported: Paddino02 PCB rev1, rev2 + Arduino Pro Micro +* Hardware Availability: the PCB is open source and can be freely printed at websites such as [JLCPCB](https://jlcpcb.com/) + +Make example for this keyboard (after setting up your build environment): + + make pimentoso/touhoupad:default + +The gamepad case is completely exposed on the underside, so to enter bootloader mode, just short the RST and GND pins of the pro micro using a metal object. + +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/pimentoso/touhoupad/rules.mk b/keyboards/pimentoso/touhoupad/rules.mk new file mode 100644 index 000000000000..4d5f68b1d3fe --- /dev/null +++ b/keyboards/pimentoso/touhoupad/rules.mk @@ -0,0 +1,19 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/pimentoso/touhoupad/touhoupad.c b/keyboards/pimentoso/touhoupad/touhoupad.c new file mode 100644 index 000000000000..a7c7fa073fec --- /dev/null +++ b/keyboards/pimentoso/touhoupad/touhoupad.c @@ -0,0 +1,16 @@ +/* Copyright 2021 Michele Ferri + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "touhoupad.h" diff --git a/keyboards/pimentoso/touhoupad/touhoupad.h b/keyboards/pimentoso/touhoupad/touhoupad.h new file mode 100644 index 000000000000..8c7bfc36e131 --- /dev/null +++ b/keyboards/pimentoso/touhoupad/touhoupad.h @@ -0,0 +1,28 @@ +/* Copyright 2021 Michele Ferri + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + k09, k08, \ + k00, k01, k02, \ + k07, \ + k04, k05, k06, \ + k03 \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09 } \ +} diff --git a/keyboards/pinky/3/info.json b/keyboards/pinky/3/info.json index 92fa04f793ea..15c6742f493e 100644 --- a/keyboards/pinky/3/info.json +++ b/keyboards/pinky/3/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Pinky3", "url": "", "maintainer": "tamanishi", - "width": 16, - "height": 5.3, "layouts": { "LAYOUT_split_3x7_4": { "layout": [ diff --git a/keyboards/pinky/4/info.json b/keyboards/pinky/4/info.json index b96da61fde54..a0781224c333 100644 --- a/keyboards/pinky/4/info.json +++ b/keyboards/pinky/4/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Pinky4", "url": "", "maintainer": "tamanishi", - "width": 16, - "height": 6.3, "layouts": { "LAYOUT_split_4x7_4": { "layout": [ diff --git a/keyboards/pinky/pinky.c b/keyboards/pinky/pinky.c index 9b98ea85d3f0..aa873c7a727f 100644 --- a/keyboards/pinky/pinky.c +++ b/keyboards/pinky/pinky.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "pinky.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/pinky/pinky.h b/keyboards/pinky/pinky.h index 9cc5d8d5898f..67dfbe337018 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 . */ -#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/pinky/rules.mk b/keyboards/pinky/rules.mk index b1110356aae5..5f05f7175e7f 100644 --- a/keyboards/pinky/rules.mk +++ b/keyboards/pinky/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 = 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 SPLIT_KEYBOARD = yes diff --git a/keyboards/pisces/info.json b/keyboards/pisces/info.json index 3e295e83e1e1..749a1152d6e9 100644 --- a/keyboards/pisces/info.json +++ b/keyboards/pisces/info.json @@ -2,10 +2,8 @@ "keyboard_name": "pisces", "url": "https://github.com/knaruo/pisces", "maintainer": "knaruo", - "width": 15, - "height": 3, "layouts": { - "LAYOUT": { + "LAYOUT_split_3x6_1": { "layout": [ {"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, diff --git a/keyboards/pisces/rules.mk b/keyboards/pisces/rules.mk index 156ace1ff0bf..eea4fbefb680 100644 --- a/keyboards/pisces/rules.mk +++ b/keyboards/pisces/rules.mk @@ -7,21 +7,16 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output # Enable generic behavior for split boards SPLIT_KEYBOARD = yes - -LAYOUTS = split_3x6_1 # total 38 diff --git a/keyboards/pistachio/config.h b/keyboards/pistachio/config.h index 461a364ec92a..5ff7b3d799c0 100644 --- a/keyboards/pistachio/config.h +++ b/keyboards/pistachio/config.h @@ -29,52 +29,3 @@ along with this program. If not, see . /* key matrix size */ #define MATRIX_ROWS 12 #define MATRIX_COLS 9 - -/* - * Keyboard Matrix Assignments - * - * Change this to how you wired your keyboard - * COLS: AVR pins used for columns, left to right - * ROWS: AVR pins used for rows, top to bottom - * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) - * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) - * - */ -#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4, B5 } -#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B6, D3} -#define UNUSED_PINS - -#define USE_I2C - -/* COL2ROW, ROW2COL */ -#define DIODE_DIRECTION COL2ROW - -/* ws2812 RGB LED */ -#define RGB_DI_PIN D2 -#define RGBLIGHT_SPLIT -#define RGBLED_SPLIT { 1, 1 } -#define RGBLED_NUM 2 -#define RGBLIGHT_LAYERS -#define RGBLIGHT_HUE_STEP 10 -#define RGBLIGHT_SAT_STEP 17 - -#if defined(RGBLIGHT_ENABLE) && !defined(IOS_DEVICE_ENABLE) - #define USB_MAX_POWER_CONSUMPTION 400 -#else - #define USB_MAX_POWER_CONSUMPTION 100 -#endif - -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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 - -/* nKey Rollover */ -#define FORCE_NKRO - -/* disable these deprecated features by default */ -#define NO_ACTION_MACRO -#define NO_ACTION_FUNCTION diff --git a/keyboards/pistachio/info.json b/keyboards/pistachio/info.json index 47f953b28a32..8cdeb51ca3b8 100644 --- a/keyboards/pistachio/info.json +++ b/keyboards/pistachio/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Pistachio", "url": "", "maintainer": "rate", - "width": 19.25, - "height": 6.75, "layouts": { "LAYOUT": { "layout": [{"label":"ESC", "x":1.25, "y":0.25}, diff --git a/keyboards/pistachio/pistachio.h b/keyboards/pistachio/pistachio.h index 83196bfa7bfc..8cbb967f4938 100644 --- a/keyboards/pistachio/pistachio.h +++ b/keyboards/pistachio/pistachio.h @@ -18,40 +18,8 @@ #include "quantum.h" -/* - * ,------------------------------------------------- ---------------------------------------------------------. - * | | L00 | | L01 | L02 | L03 | L04 | | L05 | | R00 | R01 | R02 | R03 | | R04 | R05 | R06 | R07 | | - * |-------------------------------------- ---------- ---------------------------------------------------------+ - * | L10 || L11 | L12 | L13 | L14 | L15 | L16 | L17 | | R10 | R11 | R12 | R13 | R14 | R15 | R16 | R17 || R18 | - * |------------------------------------------------- ---------------------------------------------------------+ - * | L20 || L21 | L22 | L23 | L24 | L25 | L26 | | R20 | R21 | R22 | R23 | R24 | R25 | R26 | R27 || R28 | - * |--------------------------------------------- ------------------------------------------- ------+ - * | L30 || L31 | L32 | L33 | L34 | L35 | L36 | | R30 | R31 | R32 | R33 | R34 | R35 | R36 | || R37 | - * |---------------------------------------------- -------------------------------------------------------+ - * | L40 || L41 | L42 | L43 | L44 | L45 | L46 | | R40 | R41 | R42 | R43 | R44 | R45 | R46 || R47 | - * |----------------------------------------------- -----------------------------------------------------+ - * | L50 || L51 | L52 | L53 | L54 | L55 | L56 | | R50 | R51 | R52 | R53 | R54 | R55 | R56 || R57 | - * |----------------------------------------------- ---------------------------------------------------- - */ -#define LAYOUT( \ - L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, R06, R07, \ - L10, L11, L12, L13, L14, L15, L16, L17, R10, R11, R12, R13, R14, R15, R16, R17, R18, \ - L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, R28, \ - L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, R27, R37, \ - L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46, R47, \ - L50, L51, L52, L53, L54, L55, L56, R50, R51, R52, R53, R54, R55, R56, R57 \ - ) \ - { \ - { L00, L01, L02, L03, L04, L05, KC_NO, KC_NO, KC_NO }, \ - { L10, L11, L12, L13, L14, L15, L16, L17, KC_NO }, \ - { L20, L21, L22, L23, L24, L25, L26, KC_NO, KC_NO }, \ - { L30, L31, L32, L33, L34, L35, L36, KC_NO, KC_NO }, \ - { L40, L41, L42, L43, L44, L45, L46, KC_NO, KC_NO }, \ - { L50, L51, L52, L53, L54, L55, L56, KC_NO, KC_NO }, \ - { R00, R01, R02, R03, R04, R05, R06, R07, KC_NO }, \ - { R10, R11, R12, R13, R14, R15, R16, R17, R18 }, \ - { R20, R21, R22, R23, R24, R25, R26, R27, R28 }, \ - { R30, R31, R32, R33, R34, R35, R36, R37, KC_NO }, \ - { R40, R41, R42, R43, R44, R45, R46, R47, KC_NO }, \ - { R50, R51, R52, R53, R54, R55, R56, R57, KC_NO } \ - } +#if defined(KEYBOARD_pistachio_rev1) +# include "rev1.h" +#elif defined(KEYBOARD_pistachio_rev2) +# include "rev2.h" +#endif diff --git a/keyboards/pistachio/readme.md b/keyboards/pistachio/readme.md index fa073127f66a..8ff5933f4f1c 100644 --- a/keyboards/pistachio/readme.md +++ b/keyboards/pistachio/readme.md @@ -1,20 +1,17 @@ # pistachio -![pistachio](https://ratelog.net/wp-content/uploads/2020/08/Pistachio4-scaled.jpg) +![pistachio](https://ratelog.net/wp-content/uploads/2021/05/s-IMG_1835.jpg) This is a 92-key split keyboard with JIS layout and spare keys. -* Keyboard Maintainer: [rate](https://github.com/7-rate) -* Hardware Supported: pistachio PCB, Pro Micro +* Keyboard Maintainer: [rate](https://github.com/7-rate) [@7_rate](https://twitter.com/7_rate) +* Hardware Supported: pistachio PCB Rev1 Rev2, Pro Micro * Hardware Availability: [PCB & Case Data](https://github.com/7-rate/Pistachio), [Booth Shop](https://rates.booth.pm/items/2237334) Make example for this keyboard (after setting up your build environment): - make pistachio:default - -Flashing example for this keyboard: - - make pistachio:default:flash + make pistachio/rev1:default + make pistachio/rev2: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/pistachio/rev1/config.h b/keyboards/pistachio/rev1/config.h new file mode 100644 index 000000000000..24f121ef1713 --- /dev/null +++ b/keyboards/pistachio/rev1/config.h @@ -0,0 +1,67 @@ +/* +Copyright 2020 rate + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4, B5 } +#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B6, D3} +#define UNUSED_PINS + +#define USE_I2C + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* ws2812 RGB LED */ +#define RGB_DI_PIN D2 +#define RGBLIGHT_SPLIT +#define RGBLED_SPLIT { 1, 1 } +#define RGBLED_NUM 2 +#define RGBLIGHT_LAYERS +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 17 + +#if defined(RGBLIGHT_ENABLE) && !defined(IOS_DEVICE_ENABLE) + #define USB_MAX_POWER_CONSUMPTION 400 +#else + #define USB_MAX_POWER_CONSUMPTION 100 +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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 + +/* nKey Rollover */ +#define FORCE_NKRO + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/pistachio/rev1/readme.md b/keyboards/pistachio/rev1/readme.md new file mode 100644 index 000000000000..eae3776935da --- /dev/null +++ b/keyboards/pistachio/rev1/readme.md @@ -0,0 +1,17 @@ +# pistachio Rev1 + +![pistachio](https://ratelog.net/wp-content/uploads/2020/08/Pistachio4-scaled.jpg) + +This is a 92-key split keyboard with JIS layout and spare keys. + +* Keyboard Maintainer: [rate](https://github.com/7-rate) [@7_rate](https://twitter.com/7_rate) +* Hardware Supported: pistachio PCB Rev1, Pro Micro +* Hardware Availability: [PCB & Case Data](https://github.com/7-rate/Pistachio), [Booth Shop](https://rates.booth.pm/items/2237334) + +Make example for this keyboard (after setting up your build environment): + + make pistachio/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). + +[Build guide](https://ratelog.net/pistachio-build-guide/) \ No newline at end of file diff --git a/keyboards/pistachio/rev1/rev1.c b/keyboards/pistachio/rev1/rev1.c new file mode 100644 index 000000000000..5824157f53c3 --- /dev/null +++ b/keyboards/pistachio/rev1/rev1.c @@ -0,0 +1,18 @@ +/* +Copyright 2020 rate + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "rev1.h" diff --git a/keyboards/pistachio/rev1/rev1.h b/keyboards/pistachio/rev1/rev1.h new file mode 100644 index 000000000000..e42de2d2b04e --- /dev/null +++ b/keyboards/pistachio/rev1/rev1.h @@ -0,0 +1,58 @@ +/* +Copyright 2020 rate + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +/* + * ,------------------------------------------------- ---------------------------------------------------------. + * | | L00 | | L01 | L02 | L03 | L04 | | L05 | | R00 | R01 | R02 | R03 | | R04 | R05 | R06 | R07 | | + * |-------------------------------------- ---------- ---------------------------------------------------------+ + * | L10 || L11 | L12 | L13 | L14 | L15 | L16 | L17 | | R10 | R11 | R12 | R13 | R14 | R15 | R16 | R17 || R18 | + * |------------------------------------------------- ---------------------------------------------------------+ + * | L20 || L21 | L22 | L23 | L24 | L25 | L26 | | R20 | R21 | R22 | R23 | R24 | R25 | R26 | R27 || R28 | + * |--------------------------------------------- ------------------------------------------- ------+ + * | L30 || L31 | L32 | L33 | L34 | L35 | L36 | | R30 | R31 | R32 | R33 | R34 | R35 | R36 | || R37 | + * |---------------------------------------------- -------------------------------------------------------+ + * | L40 || L41 | L42 | L43 | L44 | L45 | L46 | | R40 | R41 | R42 | R43 | R44 | R45 | R46 || R47 | + * |----------------------------------------------- -----------------------------------------------------+ + * | L50 || L51 | L52 | L53 | L54 | L55 | L56 | | R50 | R51 | R52 | R53 | R54 | R55 | R56 || R57 | + * |----------------------------------------------- ---------------------------------------------------- + */ +#define LAYOUT( \ + L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, R06, R07, \ + L10, L11, L12, L13, L14, L15, L16, L17, R10, R11, R12, R13, R14, R15, R16, R17, R18, \ + L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, R28, \ + L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, R27, R37, \ + L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46, R47, \ + L50, L51, L52, L53, L54, L55, L56, R50, R51, R52, R53, R54, R55, R56, R57 \ + ) \ + { \ + { L00, L01, L02, L03, L04, L05, KC_NO, KC_NO, KC_NO }, \ + { L10, L11, L12, L13, L14, L15, L16, L17, KC_NO }, \ + { L20, L21, L22, L23, L24, L25, L26, KC_NO, KC_NO }, \ + { L30, L31, L32, L33, L34, L35, L36, KC_NO, KC_NO }, \ + { L40, L41, L42, L43, L44, L45, L46, KC_NO, KC_NO }, \ + { L50, L51, L52, L53, L54, L55, L56, KC_NO, KC_NO }, \ + { R00, R01, R02, R03, R04, R05, R06, R07, KC_NO }, \ + { R10, R11, R12, R13, R14, R15, R16, R17, R18 }, \ + { R20, R21, R22, R23, R24, R25, R26, R27, R28 }, \ + { R30, R31, R32, R33, R34, R35, R36, R37, KC_NO }, \ + { R40, R41, R42, R43, R44, R45, R46, R47, KC_NO }, \ + { R50, R51, R52, R53, R54, R55, R56, R57, KC_NO } \ + } diff --git a/keyboards/pistachio/rev1/rules.mk b/keyboards/pistachio/rev1/rules.mk new file mode 100644 index 000000000000..2f2cbd82f20e --- /dev/null +++ b/keyboards/pistachio/rev1/rules.mk @@ -0,0 +1,20 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# 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 +SPLIT_KEYBOARD = yes # Enable split keyboard diff --git a/keyboards/pistachio/rev2/config.h b/keyboards/pistachio/rev2/config.h new file mode 100644 index 000000000000..d0de2985425e --- /dev/null +++ b/keyboards/pistachio/rev2/config.h @@ -0,0 +1,71 @@ +/* +Copyright 2020 rate + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +/* + * 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 { B5, B4, E6, D7, C6, D4 } +#define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, F5, F4, D3} +#define UNUSED_PINS + +#define USE_I2C + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Split hand configration */ +#define SPLIT_HAND_MATRIX_GRID D4,D3 + +/* ws2812 RGB LED */ +#define RGB_DI_PIN D2 +#define RGBLIGHT_SPLIT +#define RGBLED_SPLIT { 38, 46 } +#define RGBLED_NUM 84 +#define RGBLIGHT_LIMIT_VAL 195 +#define RGBLIGHT_LAYERS +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 17 + +#if defined(RGBLIGHT_ENABLE) && !defined(IOS_DEVICE_ENABLE) + #define USB_MAX_POWER_CONSUMPTION 400 +#else + #define USB_MAX_POWER_CONSUMPTION 100 +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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 + +/* nKey Rollover */ +#define FORCE_NKRO + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/pistachio/rev2/readme.md b/keyboards/pistachio/rev2/readme.md new file mode 100644 index 000000000000..12d9f6598f86 --- /dev/null +++ b/keyboards/pistachio/rev2/readme.md @@ -0,0 +1,17 @@ +# pistachio Rev2 + +![pistachio](https://ratelog.net/wp-content/uploads/2021/05/s-IMG_1835.jpg) + +This is a 92-key split keyboard with JIS layout and spare keys. + +* Keyboard Maintainer: [rate](https://github.com/7-rate) [@7_rate](https://twitter.com/7_rate) +* Hardware Supported: pistachio PCB Rev2, Pro Micro, Backlight +* Hardware Availability: [PCB & Case Data](https://github.com/7-rate/Pistachio), [Booth Shop](https://rates.booth.pm/items/2237334) + +Make example for this keyboard (after setting up your build environment): + + make pistachio/rev2: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). + +[Build guide](https://ratelog.net/pistachio-build-guide/) \ No newline at end of file diff --git a/keyboards/pistachio/rev2/rev2.c b/keyboards/pistachio/rev2/rev2.c new file mode 100644 index 000000000000..c6e64a526d06 --- /dev/null +++ b/keyboards/pistachio/rev2/rev2.c @@ -0,0 +1,19 @@ +/* +Copyright 2020 rate + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + + +#include "rev2.h" diff --git a/keyboards/pistachio/rev2/rev2.h b/keyboards/pistachio/rev2/rev2.h new file mode 100644 index 000000000000..750778a30e35 --- /dev/null +++ b/keyboards/pistachio/rev2/rev2.h @@ -0,0 +1,58 @@ +/* +Copyright 2020 rate + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +/* + * ,------------------------------------------------- ---------------------------------------------------------. + * | | L00 | | L01 | L02 | L03 | L04 | | L05 | | R00 | R01 | R02 | R03 | | R04 | R05 | R06 | R07 | | + * |-------------------------------------- ---------- ---------------------------------------------------------+ + * | L10 || L11 | L12 | L13 | L14 | L15 | L16 | L17 | | R10 | R11 | R12 | R13 | R14 | R15 | R16 | R17 || R18 | + * |------------------------------------------------- ---------------------------------------------------------+ + * | L20 || L21 | L22 | L23 | L24 | L25 | L26 | | R20 | R21 | R22 | R23 | R24 | R25 | R26 | R27 || R28 | + * |--------------------------------------------- ------------------------------------------- ------+ + * | L30 || L31 | L32 | L33 | L34 | L35 | L36 | | R30 | R31 | R32 | R33 | R34 | R35 | R36 | || R37 | + * |---------------------------------------------- -------------------------------------------------------+ + * | L40 || L41 | L42 | L43 | L44 | L45 | L46 | | R40 | R41 | R42 | R43 | R44 | R45 | R46 || R47 | + * |----------------------------------------------- -----------------------------------------------------+ + * | L50 || L51 | L52 | L53 | L54 | L55 | L56 | | R50 | R51 | R52 | R53 | R54 | R55 | R56 || R57 | + * |----------------------------------------------- ---------------------------------------------------- + */ +#define LAYOUT( \ + L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, R06, R07, \ + L10, L11, L12, L13, L14, L15, L16, L17, R10, R11, R12, R13, R14, R15, R16, R17, R18, \ + L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, R28, \ + L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, R27, R37, \ + L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46, R47, \ + L50, L51, L52, L53, L54, L55, L56, R50, R51, R52, R53, R54, R55, R56, R57 \ + ) \ + { \ + { L00, L01, L02, L03, L04, L05, KC_NO, KC_NO, KC_NO }, \ + { L10, L11, L12, L13, L14, L15, L16, L17, KC_NO }, \ + { L20, L21, L22, L23, L24, L25, L26, KC_NO, KC_NO }, \ + { L30, L31, L32, L33, L34, L35, L36, KC_NO, KC_NO }, \ + { L40, L41, L42, L43, L44, L45, L46, KC_NO, KC_NO }, \ + { L50, L51, L52, L53, L54, L55, L56, KC_NO, KC_NO }, \ + { R00, R01, R02, R03, R04, R05, R06, R07, KC_NO }, \ + { R10, R11, R12, R13, R14, R15, R16, R17, R18 }, \ + { R20, R21, R22, R23, R24, R25, R26, R28, KC_NO }, \ + { R30, R31, R32, R33, R34, R35, R36, R27, R37 }, \ + { R40, R41, R42, R43, R44, R45, R46, R47, KC_NO }, \ + { R50, R51, R52, R53, R54, R55, R56, R57, KC_NO } \ + } diff --git a/keyboards/pistachio/rev2/rules.mk b/keyboards/pistachio/rev2/rules.mk new file mode 100644 index 000000000000..2f2cbd82f20e --- /dev/null +++ b/keyboards/pistachio/rev2/rules.mk @@ -0,0 +1,20 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# 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 +SPLIT_KEYBOARD = yes # Enable split keyboard diff --git a/keyboards/pistachio/rules.mk b/keyboards/pistachio/rules.mk index 1788664195ef..93ae534be943 100644 --- a/keyboards/pistachio/rules.mk +++ b/keyboards/pistachio/rules.mk @@ -1,23 +1 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -BOOTLOADER = caterina - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE = yes # 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 -SPLIT_KEYBOARD = yes # Enable split keyboard +DEFAULT_FOLDER = pistachio/rev2 \ No newline at end of file diff --git a/keyboards/pistachio_mp/config.h b/keyboards/pistachio_mp/config.h index f23530a12c2a..4da866bb7d29 100644 --- a/keyboards/pistachio_mp/config.h +++ b/keyboards/pistachio_mp/config.h @@ -20,8 +20,8 @@ along with this program. If not, see . #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0xD0C3 +#define VENDOR_ID 0x5255 +#define PRODUCT_ID 0xE212 #define DEVICE_VER 0x0001 #define MANUFACTURER rate #define PRODUCT pistachio_mp diff --git a/keyboards/pistachio_mp/info.json b/keyboards/pistachio_mp/info.json index 4514423f9031..d4e130300cd9 100644 --- a/keyboards/pistachio_mp/info.json +++ b/keyboards/pistachio_mp/info.json @@ -2,8 +2,6 @@ "keyboard_name": "pistachio_mp", "url": "", "maintainer": "rate", - "width": 4, - "height": 6.5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/pistachio_mp/keymaps/via/keymap.c b/keyboards/pistachio_mp/keymaps/via/keymap.c new file mode 100644 index 000000000000..e3592ffa6d65 --- /dev/null +++ b/keyboards/pistachio_mp/keymaps/via/keymap.c @@ -0,0 +1,76 @@ +/* Copyright 2020 rate + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE = 0, + _FN, + _RESERVE_0, + _RESERVE_1 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT( + KC_MPLY, + LT(_FN, KC_NLCK), KC_PSLS, KC_PAST, 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 + ), + /* Fn */ + [_FN] = LAYOUT( + KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, + RGB_HUI, RGB_SAI, RGB_VAI, + RGB_HUD, RGB_SAD, RGB_VAD, RGB_TOG, + KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO + ), + /* Reserve */ + [_RESERVE_0] = LAYOUT( + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS + ), + /* Reserve */ + [_RESERVE_1] = LAYOUT( + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS + ), +}; +#ifdef ENCODER_ENABLE +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + // Volume control + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } + return true; +} +#endif diff --git a/keyboards/pistachio_mp/keymaps/via/readme.md b/keyboards/pistachio_mp/keymaps/via/readme.md new file mode 100644 index 000000000000..b768049ccc07 --- /dev/null +++ b/keyboards/pistachio_mp/keymaps/via/readme.md @@ -0,0 +1 @@ +# The via keymap for pistachio_mp diff --git a/keyboards/pistachio_mp/keymaps/via/rules.mk b/keyboards/pistachio_mp/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/pistachio_mp/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/pistachio_mp/rules.mk b/keyboards/pistachio_mp/rules.mk index 5c24e15fb872..a5d0c536ebc4 100644 --- a/keyboards/pistachio_mp/rules.mk +++ b/keyboards/pistachio_mp/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = yes diff --git a/keyboards/pistachio_pro/config.h b/keyboards/pistachio_pro/config.h new file mode 100644 index 000000000000..c3cb58496287 --- /dev/null +++ b/keyboards/pistachio_pro/config.h @@ -0,0 +1,108 @@ +/* +Copyright 2021 rate + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x5255 +#define PRODUCT_ID 0xF40C +#define DEVICE_VER 0x0001 +#define MANUFACTURER rate +#define PRODUCT PistachioPro + +#define ENCODERS_PAD_A {D2} +#define ENCODERS_PAD_B {D3} + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 18 + +#define MATRIX_ROW_PINS { D4, C6, D7, B3, B4, B5 } +#define MATRIX_COL_PINS { E6, F0, F1, F4, F5, F6, F7, B6, D6 } +#define UNUSED_PINS +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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 + +/* 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). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 + +/* OLED */ +#define OLED_DISPLAY_128X64 +#define OLED_FONT_H "keyboards/pistachio_pro/lib/glcdfont.c" + +#define OLED_FONT_WIDTH 6 +#define OLED_FONT_HEIGHT 6 + +#define OLED_UPDATE_INTERVAL 1000 + +#define OLED_TIMEOUT 0 + +#define OLED_BRIGHTNESS 255 diff --git a/keyboards/pistachio_pro/info.json b/keyboards/pistachio_pro/info.json new file mode 100644 index 000000000000..c519a69e1161 --- /dev/null +++ b/keyboards/pistachio_pro/info.json @@ -0,0 +1,106 @@ +{ + "keyboard_name": "PistachioPro", + "url": "https://rates.booth.pm/items/2925303", + "maintainer": "rate", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":2, "y":0}, + {"label":"F2", "x":3, "y":0}, + {"label":"F3", "x":4, "y":0}, + {"label":"F4", "x":5, "y":0}, + {"label":"F5", "x":6.5, "y":0}, + {"label":"F6", "x":7.5, "y":0}, + {"label":"F7", "x":8.5, "y":0}, + {"label":"F8", "x":9.5, "y":0}, + {"label":"F9", "x":11, "y":0}, + {"label":"F10", "x":12, "y":0}, + {"label":"F11", "x":13, "y":0}, + {"label":"F12", "x":14, "y":0}, + {"label":"Pause", "x":17.25, "y":0}, + + {"label":"E/J", "x":0, "y":1.5}, + {"label":"!", "x":1, "y":1.5}, + {"label":"\"", "x":2, "y":1.5}, + {"label":"#", "x":3, "y":1.5}, + {"label":"$", "x":4, "y":1.5}, + {"label":"%", "x":5, "y":1.5}, + {"label":"&", "x":6, "y":1.5}, + {"label":"'", "x":7, "y":1.5}, + {"label":"(", "x":8, "y":1.5}, + {"label":")", "x":9, "y":1.5}, + {"label":"", "x":10, "y":1.5}, + {"label":"=", "x":11, "y":1.5}, + {"label":"~", "x":12, "y":1.5}, + {"label":"|", "x":13, "y":1.5}, + {"label":"BS", "x":14, "y":1.5}, + {"label":"Insert", "x":15.25, "y":1.5}, + {"label":"Home", "x":16.25, "y":1.5}, + {"label":"PgUp", "x":17.25, "y":1.5}, + + {"label":"Tab", "x":0, "y":2.5, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.5}, + {"label":"W", "x":2.5, "y":2.5}, + {"label":"E", "x":3.5, "y":2.5}, + {"label":"R", "x":4.5, "y":2.5}, + {"label":"T", "x":5.5, "y":2.5}, + {"label":"Y", "x":6.5, "y":2.5}, + {"label":"U", "x":7.5, "y":2.5}, + {"label":"I", "x":8.5, "y":2.5}, + {"label":"O", "x":9.5, "y":2.5}, + {"label":"P", "x":10.5, "y":2.5}, + {"label":"`", "x":11.5, "y":2.5}, + {"label":"{", "x":12.5, "y":2.5}, + {"label":"Delete", "x":15.25, "y":2.5}, + {"label":"End", "x":16.25, "y":2.5}, + {"label":"PgDn", "x":17.25, "y":2.5}, + + {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, + {"label":"A", "x":1.75, "y":3.5}, + {"label":"S", "x":2.75, "y":3.5}, + {"label":"D", "x":3.75, "y":3.5}, + {"label":"F", "x":4.75, "y":3.5}, + {"label":"G", "x":5.75, "y":3.5}, + {"label":"H", "x":6.75, "y":3.5}, + {"label":"J", "x":7.75, "y":3.5}, + {"label":"K", "x":8.75, "y":3.5}, + {"label":"L", "x":9.75, "y":3.5}, + {"label":"+", "x":10.75, "y":3.5}, + {"label":"*", "x":11.75, "y":3.5}, + {"label":"}", "x":12.75, "y":3.5}, + {"label":"Enter", "x":13.75, "y":2.5, "w":1.25, "h":2}, + + {"label":"Shift", "x":0, "y":4.5, "w":2.25}, + {"label":"Z", "x":2.25, "y":4.5}, + {"label":"X", "x":3.25, "y":4.5}, + {"label":"C", "x":4.25, "y":4.5}, + {"label":"V", "x":5.25, "y":4.5}, + {"label":"B", "x":6.25, "y":4.5}, + {"label":"N", "x":7.25, "y":4.5}, + {"label":"M", "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":"_", "x":12.25, "y":4.5}, + {"label":"Shift", "x":13.25, "y":4.5, "w":1.75}, + {"label":"\u2191", "x":16.25, "y":4.5}, + + {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, + {"label":"Win", "x":1.25, "y":5.5}, + {"label":"Alt", "x":2.25, "y":5.5, "w":1.25}, + {"x":3.5, "y":5.5}, + {"x":4.5, "y":5.5, "w":2.25}, + {"x":6.75, "y":5.5, "w":2.25}, + {"label":"kana", "x":9, "y":5.5, "w":1.25}, + {"x":10.25, "y":5.5, "w":1.25}, + {"label":"Alt", "x":11.5, "y":5.5, "w":1.25}, + {"label":"Menu", "x":12.75, "y":5.5}, + {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25}, + {"label":"\u2190", "x":15.25, "y":5.5}, + {"label":"\u2193", "x":16.25, "y":5.5}, + {"label":"\u2192", "x":17.25, "y":5.5} + ] + } + } +} diff --git a/keyboards/pistachio_pro/keymaps/default/keymap.c b/keyboards/pistachio_pro/keymaps/default/keymap.c new file mode 100644 index 000000000000..3fe6e8a5f522 --- /dev/null +++ b/keyboards/pistachio_pro/keymaps/default/keymap.c @@ -0,0 +1,123 @@ +/* Copyright 2021 rate + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +#include +#include "keymap_jp.h" +#include "lib/bme280.h" + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MPLY, + KC_ZKHK, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, JP_MINS, JP_CIRC, JP_YEN, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_AT, JP_LBRC, KC_DEL, KC_END, KC_PGDN, + JP_EISU, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, JP_SCLN, JP_COLN, JP_RBRC, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, JP_COMM, JP_DOT, JP_SLSH, JP_BSLS, KC_RSFT, KC_UP, + KC_LCTRL, KC_LGUI, KC_LALT, JP_MHEN, KC_SPC, KC_SPC, LT(_FN, JP_HENK), JP_KANA, KC_RALT, KC_APP, KC_RCTRL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_FN] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_7, KC_8, KC_9, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_4, KC_5, KC_6, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_1, KC_2, KC_3, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_0, JP_DOT, JP_DOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; + +/* OLED */ +const char code_to_name[60] = { + ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', + 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', + 'R', 'E', 'B', 'T', '_', '-', '=', '[', ']', '\\', '#', ';', '\'', '`', ',', '.', '/', ' ', ' ', ' ' +}; + +static void print_airstate(void) { + char airstate_str[32]; + double temp; + double press; + double hum; + + temp = bme280_getTemp(); + press = bme280_getPress(); + hum = bme280_getHum(); + + oled_write_ln_P(PSTR("\nTemp Press Hum"), false); + snprintf(airstate_str, sizeof(airstate_str), "%ddeg %dhPa %d%% \n", (int)temp, (int)press, (int)hum ); + oled_write(airstate_str, false); + + return; +} + +static keyrecord_t keylog_record; +static void print_keylog(void) { + char keylog_str[32]; + + oled_write_ln_P(PSTR("\nKeylog"), false); + snprintf(keylog_str, sizeof(keylog_str), "row:%d col:%d", keylog_record.event.key.row, keylog_record.event.key.col ); + oled_write(keylog_str, false); + + return; +} + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + return OLED_ROTATION_180; +} + +bool oled_task_user(void) { + oled_write_ln_P(PSTR(" - PistachioPro -"), false); + print_airstate(); + print_keylog(); + + return false; +} + +/* Encoder */ +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + // Volume control + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } + + return true; +} + +/* Keyboard */ +void keyboard_post_init_user(void) { + bme280_init(); +} + +void housekeeping_task_user(void) { + bme280_exec(); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (record->event.pressed) { + keylog_record = *record; + } + + return true; +} diff --git a/keyboards/pistachio_pro/keymaps/default/readme.md b/keyboards/pistachio_pro/keymaps/default/readme.md new file mode 100644 index 000000000000..bf313ec19d1c --- /dev/null +++ b/keyboards/pistachio_pro/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for pistachio_pro diff --git a/keyboards/pistachio_pro/keymaps/rate/keymap.c b/keyboards/pistachio_pro/keymaps/rate/keymap.c new file mode 100644 index 000000000000..7aa70c51d164 --- /dev/null +++ b/keyboards/pistachio_pro/keymaps/rate/keymap.c @@ -0,0 +1,125 @@ +/* Copyright 2021 rate + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +#include +#include "keymap_jp.h" +#include "lib/bme280.h" + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MPLY, + KC_ZKHK, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, JP_MINS, JP_CIRC, JP_YEN, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_AT, JP_LBRC, KC_DEL, KC_END, KC_PGDN, + KC_ENT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, JP_SCLN, JP_COLN, JP_RBRC, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, JP_COMM, JP_DOT, JP_SLSH, JP_BSLS, KC_RSFT, KC_UP, + KC_LCTRL, KC_LGUI, KC_LALT, KC_DEL, KC_SPC, KC_SPC, LT(_FN, KC_ESC), JP_KANA, KC_RALT, KC_APP, KC_RCTRL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_FN] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_7, KC_8, KC_9, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_4, KC_5, KC_6, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_1, KC_2, KC_3, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_0, JP_DOT, JP_DOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; + + + +/* OLED */ +const char code_to_name[60] = { + ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', + 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', + 'R', 'E', 'B', 'T', '_', '-', '=', '[', ']', '\\', '#', ';', '\'', '`', ',', '.', '/', ' ', ' ', ' ' +}; + +static void print_airstate(void) { + char airstate_str[32]; + double temp; + double press; + double hum; + + temp = bme280_getTemp(); + press = bme280_getPress(); + hum = bme280_getHum(); + + oled_write_ln_P(PSTR("\nTemp Press Hum"), false); + snprintf(airstate_str, sizeof(airstate_str), "%ddeg %dhPa %d%% \n", (int)temp, (int)press, (int)hum ); + oled_write(airstate_str, false); + + return; +} + +static keyrecord_t keylog_record; +static void print_keylog(void) { + char keylog_str[32]; + + oled_write_ln_P(PSTR("\nKeylog"), false); + snprintf(keylog_str, sizeof(keylog_str), "row:%d col:%d", keylog_record.event.key.row, keylog_record.event.key.col ); + oled_write(keylog_str, false); + + return; +} + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + return OLED_ROTATION_180; +} + +bool oled_task_user(void) { + oled_write_ln_P(PSTR(" - PistachioPro -"), false); + print_airstate(); + print_keylog(); + + return false; +} + +/* Encoder */ +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + // Volume control + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } + + return true; +} + +/* Keyboard */ +void keyboard_post_init_user(void) { + bme280_init(); +} + +void housekeeping_task_user(void) { + bme280_exec(); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (record->event.pressed) { + keylog_record = *record; + } + + return true; +} diff --git a/keyboards/pistachio_pro/keymaps/rate/readme.md b/keyboards/pistachio_pro/keymaps/rate/readme.md new file mode 100644 index 000000000000..c7049b67ce2e --- /dev/null +++ b/keyboards/pistachio_pro/keymaps/rate/readme.md @@ -0,0 +1 @@ +# The rate's keymap for pistachio_pro diff --git a/keyboards/pistachio_pro/keymaps/via/keymap.c b/keyboards/pistachio_pro/keymaps/via/keymap.c new file mode 100644 index 000000000000..7517b4a6e4f6 --- /dev/null +++ b/keyboards/pistachio_pro/keymaps/via/keymap.c @@ -0,0 +1,141 @@ +/* Copyright 2021 rate + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +#include +#include "keymap_jp.h" +#include "lib/bme280.h" + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN, + _RESERVE_0, + _RESERVE_1 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MPLY, + KC_ZKHK, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, JP_MINS, JP_CIRC, JP_YEN, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_AT, JP_LBRC, KC_DEL, KC_END, KC_PGDN, + JP_EISU, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, JP_SCLN, JP_COLN, JP_RBRC, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, JP_COMM, JP_DOT, JP_SLSH, JP_BSLS, KC_RSFT, KC_UP, + KC_LCTRL, KC_LGUI, KC_LALT, JP_MHEN, KC_SPC, KC_SPC, LT(_FN, JP_HENK), JP_KANA, KC_RALT, KC_APP, KC_RCTRL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_FN] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_7, KC_8, KC_9, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_4, KC_5, KC_6, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_1, KC_2, KC_3, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_0, JP_DOT, JP_DOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [_RESERVE_0] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [_RESERVE_1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; + +/* OLED */ +const char code_to_name[60] = { + ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', + 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', + 'R', 'E', 'B', 'T', '_', '-', '=', '[', ']', '\\', '#', ';', '\'', '`', ',', '.', '/', ' ', ' ', ' ' +}; + +static void print_airstate(void) { + char airstate_str[32]; + double temp; + double press; + double hum; + + temp = bme280_getTemp(); + press = bme280_getPress(); + hum = bme280_getHum(); + + oled_write_ln_P(PSTR("\nTemp Press Hum"), false); + snprintf(airstate_str, sizeof(airstate_str), "%ddeg %dhPa %d%% \n", (int)temp, (int)press, (int)hum ); + oled_write(airstate_str, false); + + return; +} + +static keyrecord_t keylog_record; +static void print_keylog(void) { + char keylog_str[32]; + + oled_write_ln_P(PSTR("\nKeylog"), false); + snprintf(keylog_str, sizeof(keylog_str), "row:%d col:%d", keylog_record.event.key.row, keylog_record.event.key.col ); + oled_write(keylog_str, false); + + return; +} + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + return OLED_ROTATION_180; +} + +bool oled_task_user(void) { + oled_write_ln_P(PSTR(" - PistachioPro -"), false); + print_airstate(); + print_keylog(); + + return false; +} + +/* Encoder */ +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + // Volume control + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } + + return true; +} + +/* Keyboard */ +void keyboard_post_init_user(void) { + bme280_init(); +} + +void housekeeping_task_user(void) { + bme280_exec(); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (record->event.pressed) { + keylog_record = *record; + } + + return true; +} diff --git a/keyboards/pistachio_pro/keymaps/via/readme.md b/keyboards/pistachio_pro/keymaps/via/readme.md new file mode 100644 index 000000000000..e2f4b9f6b281 --- /dev/null +++ b/keyboards/pistachio_pro/keymaps/via/readme.md @@ -0,0 +1 @@ +# The via keymap for pistachio_pro diff --git a/keyboards/pistachio_pro/keymaps/via/rules.mk b/keyboards/pistachio_pro/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/pistachio_pro/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/pistachio_pro/lib/bme280.c b/keyboards/pistachio_pro/lib/bme280.c new file mode 100644 index 000000000000..f3dc231dc54b --- /dev/null +++ b/keyboards/pistachio_pro/lib/bme280.c @@ -0,0 +1,255 @@ +/* Copyright 2021 rate + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include +#include "bme280.h" +#include "i2c_master.h" + +#define BME280_ADDRESS (0x76<<1) + +#define BME280_REG_CALIB00 (0x88) +#define BME280_REG_CALIB25 (0xA1) +#define BME280_REG_CALIB26 (0xE1) +#define BME280_REG_CTRL_HUM (0xF2) +#define BME280_REG_CTRL_MEAS (0xF4) +#define BME280_REG_CONFIG (0xF5) +#define BME280_REG_PRESS_MSB (0xf7) + +#define I2C_BME280_TIMEOUT (20) + +/* BME280 configurator values */ +/* [2:0] Humidity oversampling + * 000 Skipped + * 001 oversampling x1 + * 010 oversampling x2 + * 011 oversampling x4 + * 100 oversampling x8 + * 101,others oversampling x16 + */ +#define BME280_CTRL_HUM_VAL (0x01) + + +/* [7:5] Pressure oversampling + * 000 Skipped + * 001 oversampling x1 + * 010 oversampling x2 + * 011 oversampling x4 + * 100 oversampling x8 + * 101,others oversampling x16 + * [4:2] Temperature oversampling + * 000 Skipped + * 001 oversampling x1 + * 010 oversampling x2 + * 011 oversampling x4 + * 100 oversampling x8 + * 101,others oversampling x16 + * [1:0] Mode + * 00 Sleep mode + * 11 Normal mode + */ +#define BME280_CTRL_MEAS_VAL (0x27) + +/* [7:5] t_standby[ms] + * 000 0.5 + * 001 62.5 + * 010 125 + * 011 250 + * 100 500 + * 101 1000 + * 110 10 + * 111 20 + * [4:2] Filter corefficient + * 000 Filter off + * 001 2 + * 010 4 + * 011 8 + * 100,others 16 + * [0] SPI interface + * 0 4-wire + * 1 3-wire + */ +#define BME280_CONFIG_VAL (0xA0) + +static void readTrim(void); +static void readData(void); +static int32_t calibration_T(int32_t adc_T); +static uint32_t calibration_P(int32_t adc_P); +static uint32_t calibration_H(int32_t adc_H); + +static uint32_t hum_raw,temp_raw,pres_raw; +static uint16_t dig_T1; +static int16_t dig_T2, dig_T3; +static uint16_t dig_P1; +static int16_t dig_P2, dig_P3, dig_P4, dig_P5, dig_P6, dig_P7, dig_P8, dig_P9; +static uint8_t dig_H1, dig_H3; +static int16_t dig_H2, dig_H4, dig_H5; +static int8_t dig_H6; +static int32_t t_fine; + +/* Private */ +static void readTrim(void) { + uint8_t data[32]; + + i2c_readReg(BME280_ADDRESS, BME280_REG_CALIB00, &data[0], 24, I2C_BME280_TIMEOUT); + i2c_readReg(BME280_ADDRESS, BME280_REG_CALIB25, &data[25], 1, I2C_BME280_TIMEOUT); + i2c_readReg(BME280_ADDRESS, BME280_REG_CALIB26, &data[25], 7, I2C_BME280_TIMEOUT); + + dig_T1 = (data[1] << 8) | data[0]; + dig_T2 = (data[3] << 8) | data[2]; + dig_T3 = (data[5] << 8) | data[4]; + dig_P1 = (data[7] << 8) | data[6]; + dig_P2 = (data[9] << 8) | data[8]; + dig_P3 = (data[11]<< 8) | data[10]; + dig_P4 = (data[13]<< 8) | data[12]; + dig_P5 = (data[15]<< 8) | data[14]; + dig_P6 = (data[17]<< 8) | data[16]; + dig_P7 = (data[19]<< 8) | data[18]; + dig_P8 = (data[21]<< 8) | data[20]; + dig_P9 = (data[23]<< 8) | data[22]; + dig_H1 = data[24]; + dig_H2 = (data[26]<< 8) | data[25]; + dig_H3 = data[27]; + dig_H4 = (data[28]<< 4) | (0x0F & data[29]); + dig_H5 = (data[30] << 4) | ((data[29] >> 4) & 0x0F); + dig_H6 = data[31]; + + return; +} + +static void readData(void) { + uint8_t data[8]; + + i2c_readReg(BME280_ADDRESS, 0xF7, &data[0], 8, I2C_BME280_TIMEOUT); + + pres_raw = data[0]; + pres_raw = (pres_raw<<8) | data[1]; + pres_raw = (pres_raw<<4) | (data[2] >> 4); + + temp_raw = data[3]; + temp_raw = (temp_raw<<8) | data[4]; + temp_raw = (temp_raw<<4) | (data[5] >> 4); + + hum_raw = data[6]; + hum_raw = (hum_raw << 8) | data[7]; + + return; +} + +static int32_t calibration_T(int32_t adc_T) { + int32_t var1, var2, T; + var1 = ((((adc_T >> 3) - ((int32_t)dig_T1<<1))) * ((int32_t)dig_T2)) >> 11; + var2 = (((((adc_T >> 4) - ((int32_t)dig_T1)) * ((adc_T>>4) - ((int32_t)dig_T1))) >> 12) * ((int32_t)dig_T3)) >> 14; + + t_fine = var1 + var2; + T = (t_fine * 5 + 128) >> 8; + + return T; +} + +static uint32_t calibration_P(int32_t adc_P) { + int32_t var1, var2; + uint32_t P; + + var1 = (((int32_t)t_fine)>>1) - (int32_t)64000; + var2 = (((var1>>2) * (var1>>2)) >> 11) * ((int32_t)dig_P6); + var2 = var2 + ((var1*((int32_t)dig_P5))<<1); + var2 = (var2>>2)+(((int32_t)dig_P4)<<16); + var1 = (((dig_P3 * (((var1>>2)*(var1>>2)) >> 13)) >>3) + ((((int32_t)dig_P2) * var1)>>1))>>18; + var1 = ((((32768+var1))*((int32_t)dig_P1))>>15); + if (var1 == 0) { + return 0; + } + P = (((uint32_t)(((int32_t)1048576)-adc_P)-(var2>>12)))*3125; + if( P < 0x80000000 ) { + P = (P << 1) / ((uint32_t) var1); + } else { + P = (P / (uint32_t)var1) * 2; + } + var1 = (((int32_t)dig_P9) * ((int32_t)(((P>>3) * (P>>3))>>13)))>>12; + var2 = (((int32_t)(P>>2)) * ((int32_t)dig_P8))>>13; + P = (uint32_t)((int32_t)P + ((var1 + var2 + dig_P7) >> 4)); + + return P; +} + +static uint32_t calibration_H(int32_t adc_H) { + int32_t v_x1; + + v_x1 = (t_fine - ((int32_t)76800)); + v_x1 = (((((adc_H << 14) -(((int32_t)dig_H4) << 20) - (((int32_t)dig_H5) * v_x1)) + + ((int32_t)16384)) >> 15) * (((((((v_x1 * ((int32_t)dig_H6)) >> 10) * + (((v_x1 * ((int32_t)dig_H3)) >> 11) + ((int32_t) 32768))) >> 10) + (( int32_t)2097152)) * + ((int32_t) dig_H2) + 8192) >> 14)); + v_x1 = (v_x1 - (((((v_x1 >> 15) * (v_x1 >> 15)) >> 7) * ((int32_t)dig_H1)) >> 4)); + v_x1 = (v_x1 < 0 ? 0 : v_x1); + v_x1 = (v_x1 > 419430400 ? 419430400 : v_x1); + + return (uint32_t)(v_x1 >> 12); +} + +/* Public */ +void bme280_init(void) { + uint8_t ctrl_hum_reg; + uint8_t ctrl_meas_reg; + uint8_t config_reg; + + ctrl_hum_reg = BME280_CTRL_HUM_VAL; + ctrl_meas_reg = BME280_CTRL_MEAS_VAL; + config_reg = BME280_CONFIG_VAL; + + i2c_init(); + i2c_writeReg(BME280_ADDRESS, BME280_REG_CTRL_HUM, &ctrl_hum_reg, 1, I2C_BME280_TIMEOUT); + i2c_writeReg(BME280_ADDRESS, BME280_REG_CTRL_MEAS, &ctrl_meas_reg, 1, I2C_BME280_TIMEOUT); + i2c_writeReg(BME280_ADDRESS, BME280_REG_CONFIG, &config_reg, 1, I2C_BME280_TIMEOUT); + readTrim(); + + return; +} + +void bme280_exec(void) { + readData(); + + return; +} + +double bme280_getTemp(void) { + double temp_act; + int32_t temp_cal; + + temp_cal = calibration_T(temp_raw); + temp_act = (double)temp_cal / 100.0; + + return temp_act; +} + +double bme280_getPress(void) { + double press_act; + uint32_t press_cal; + + press_cal = calibration_P(pres_raw); + press_act = (double)press_cal / 100.0; + + return press_act; +} + +double bme280_getHum(void) { + double hum_act; + uint32_t hum_cal; + + hum_cal = calibration_H(hum_raw); + hum_act = (double)hum_cal / 1024.0; + + return hum_act; +} diff --git a/keyboards/pistachio_pro/lib/bme280.h b/keyboards/pistachio_pro/lib/bme280.h new file mode 100644 index 000000000000..eb503038d399 --- /dev/null +++ b/keyboards/pistachio_pro/lib/bme280.h @@ -0,0 +1,22 @@ +/* Copyright 2021 rate + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +void bme280_init(void); +void bme280_exec(void); +double bme280_getTemp(void); +double bme280_getPress(void); +double bme280_getHum(void); diff --git a/keyboards/pistachio_pro/lib/glcdfont.c b/keyboards/pistachio_pro/lib/glcdfont.c new file mode 100644 index 000000000000..41041f12bb3f --- /dev/null +++ b/keyboards/pistachio_pro/lib/glcdfont.c @@ -0,0 +1,232 @@ +// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0. +// See gfxfont.h for newer custom bitmap font info. + +#include "progmem.h" + +// Standard ASCII 5x7 font +const unsigned char font[] PROGMEM = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, +0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, +0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, +0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, +0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, +0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, +0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, +0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, +0x00, 0x18, 0x24, 0x18, 0x00, 0x00, +0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, +0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, +0x26, 0x29, 0x79, 0x29, 0x26, 0x00, +0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, +0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, +0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, +0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, +0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, +0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, +0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, +0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, +0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, +0x60, 0x60, 0x60, 0x60, 0x60, 0x00, +0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, +0x08, 0x04, 0x7E, 0x04, 0x08, 0x00, +0x10, 0x20, 0x7E, 0x20, 0x10, 0x00, +0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, +0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, +0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, +0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, +0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, +0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, +0x00, 0x07, 0x00, 0x07, 0x00, 0x00, +0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, +0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, +0x23, 0x13, 0x08, 0x64, 0x62, 0x00, +0x36, 0x49, 0x56, 0x20, 0x50, 0x00, +0x00, 0x08, 0x07, 0x03, 0x00, 0x00, +0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, +0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, +0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, +0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, +0x00, 0x80, 0x70, 0x30, 0x00, 0x00, +0x08, 0x08, 0x08, 0x08, 0x08, 0x00, +0x00, 0x00, 0x60, 0x60, 0x00, 0x00, +0x20, 0x10, 0x08, 0x04, 0x02, 0x00, +0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, +0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, +0x72, 0x49, 0x49, 0x49, 0x46, 0x00, +0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, +0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, +0x27, 0x45, 0x45, 0x45, 0x39, 0x00, +0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, +0x41, 0x21, 0x11, 0x09, 0x07, 0x00, +0x36, 0x49, 0x49, 0x49, 0x36, 0x00, +0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, +0x00, 0x00, 0x14, 0x00, 0x00, 0x00, +0x00, 0x40, 0x34, 0x00, 0x00, 0x00, +0x00, 0x08, 0x14, 0x22, 0x41, 0x00, +0x14, 0x14, 0x14, 0x14, 0x14, 0x00, +0x00, 0x41, 0x22, 0x14, 0x08, 0x00, +0x02, 0x01, 0x59, 0x09, 0x06, 0x00, +0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00, +0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, +0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, +0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, +0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, +0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, +0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, +0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, +0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, +0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, +0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, +0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, +0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, +0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, +0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, +0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, +0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, +0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, +0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, +0x26, 0x49, 0x49, 0x49, 0x32, 0x00, +0x03, 0x01, 0x7F, 0x01, 0x03, 0x00, +0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, +0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, +0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, +0x63, 0x14, 0x08, 0x14, 0x63, 0x00, +0x03, 0x04, 0x78, 0x04, 0x03, 0x00, +0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, +0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, +0x02, 0x04, 0x08, 0x10, 0x20, 0x00, +0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, +0x04, 0x02, 0x01, 0x02, 0x04, 0x00, +0x40, 0x40, 0x40, 0x40, 0x40, 0x00, +0x00, 0x03, 0x07, 0x08, 0x00, 0x00, +0x20, 0x54, 0x54, 0x78, 0x40, 0x00, +0x7F, 0x28, 0x44, 0x44, 0x38, 0x00, +0x38, 0x44, 0x44, 0x44, 0x28, 0x00, +0x38, 0x44, 0x44, 0x28, 0x7F, 0x00, +0x38, 0x54, 0x54, 0x54, 0x18, 0x00, +0x00, 0x08, 0x7E, 0x09, 0x02, 0x00, +0x18, 0x24, 0x24, 0x1C, 0x78, 0x00, +0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, +0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, +0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, +0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, +0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, +0x7C, 0x04, 0x78, 0x04, 0x78, 0x00, +0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, +0x38, 0x44, 0x44, 0x44, 0x38, 0x00, +0x7C, 0x18, 0x24, 0x24, 0x18, 0x00, +0x18, 0x24, 0x24, 0x18, 0x7C, 0x00, +0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, +0x48, 0x54, 0x54, 0x54, 0x24, 0x00, +0x04, 0x04, 0x3F, 0x44, 0x24, 0x00, +0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, +0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, +0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, +0x44, 0x28, 0x10, 0x28, 0x44, 0x00, +0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00, +0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, +0x00, 0x08, 0x36, 0x41, 0x00, 0x00, +0x00, 0x00, 0x77, 0x00, 0x00, 0x00, +0x00, 0x41, 0x36, 0x08, 0x00, 0x00, +0x02, 0x01, 0x02, 0x04, 0x02, 0x00, +0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, +0xF0, 0xF8, 0xF8, 0x18, 0x00, 0xC0, +0xF0, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, +0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, +0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, +0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, +0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80, +0x00, 0x00, 0x00, 0xE0, 0xE0, 0xC0, +0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, +0x00, 0xE0, 0xE0, 0xC0, 0xC0, 0xE0, +0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80, +0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, +0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, +0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC, +0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00, +0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, +0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00, +0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B, +0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00, +0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE, +0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xF8, 0xFC, 0xFE, +0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0x1F, 0x07, 0x01, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xFF, 0xFF, 0xFF, 0x81, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x81, +0xC3, 0xC3, 0xC3, 0x00, 0x00, 0xFF, +0xFF, 0xFF, 0x81, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x81, 0xFF, 0xFF, +0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, +0x01, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xFF, 0xFF, 0xFF, 0x01, 0x00, +0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, +0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, +0x9D, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, +0x1C, 0x9D, 0xDF, 0xDF, 0xDF, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, +0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00, +0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, +0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00, +0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20, +0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00, +0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F, +0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x03, 0x0F, 0x1F, +0x3F, 0x3F, 0x3F, 0x3F, 0x1F, 0x1F, +0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x3F, +0x3F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, +0x7F, 0x7C, 0x78, 0x78, 0x38, 0x1C, +0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x01, 0x03, 0x07, 0x07, +0x07, 0x07, 0x07, 0x07, 0x07, 0x07, +0x03, 0x01, 0x00, 0x00, 0x00, 0x00, +0x01, 0x03, 0x07, 0x07, 0x07, 0x07, +0x07, 0x07, 0x07, 0x07, 0x03, 0x01, +0x00, 0x00, 0x00, 0x07, 0x07, 0x07, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x07, 0x07, 0x07, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x07, 0x07, +0x07, 0x00, 0x00, 0x00, 0x01, 0x03, +0x07, 0x07, 0x07, 0x07, 0x07, 0x07, +0x07, 0x07, 0x03, 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, +}; diff --git a/keyboards/pistachio_pro/matrix.c b/keyboards/pistachio_pro/matrix.c new file mode 100644 index 000000000000..6cbfb6dfea18 --- /dev/null +++ b/keyboards/pistachio_pro/matrix.c @@ -0,0 +1,151 @@ +/* +Copyright 2012-2018 Jun Wako, Jack Humbert, Yiancar + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include +#include +#include "matrix.h" +#include "quantum.h" + +static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; +static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; + +static inline void setPinOutput_writeLow(pin_t pin) { + ATOMIC_BLOCK_FORCEON { + setPinOutput(pin); + writePinLow(pin); + } +} + +static inline void setPinInputHigh_atomic(pin_t pin) { + ATOMIC_BLOCK_FORCEON { setPinInputHigh(pin); } +} + +static void select_row(uint8_t row) { + setPinOutput_writeLow(row_pins[row]); +} + +static void unselect_row(uint8_t row) { + setPinInputHigh_atomic(row_pins[row]); +} + +static void unselect_rows(void) { + for (uint8_t x = 0; x < MATRIX_ROWS; x++) { + setPinInputHigh_atomic(row_pins[x]); + } +} + +static void select_col(uint8_t col) { + setPinOutput_writeLow(col_pins[col]); +} + +static void unselect_col(uint8_t col) { + setPinInputHigh_atomic(col_pins[col]); +} + +static void unselect_cols(void) { + for (uint8_t x = 0; x < MATRIX_COLS; x++) { + setPinInputHigh_atomic(col_pins[x]); + } +} + +static void init_pins(void) { + unselect_rows(); + for (uint8_t x = 0; x < MATRIX_COLS; x++) { + setPinInputHigh_atomic(col_pins[x]); + } + unselect_cols(); + for (uint8_t x = 0; x < MATRIX_ROWS; x++) { + setPinInputHigh_atomic(row_pins[x]); + } +} + +static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) { + // Store last value of row prior to reading + matrix_row_t last_row_value = current_matrix[current_row]; + + // Select row + select_row(current_row); + matrix_io_delay(); + + // For each col... + for (uint8_t col_index = 0; col_index < MATRIX_COLS / 2; col_index++) { + // Check row pin state + if (readPin(col_pins[col_index])) { + // Pin HI, clear col bit + current_matrix[current_row] &= ~(MATRIX_ROW_SHIFTER << col_index); + } else { + // Pin LO, set col bit + current_matrix[current_row] |= (MATRIX_ROW_SHIFTER << col_index); + } + } + + // Unselect row + unselect_row(current_row); + + return (last_row_value != current_matrix[current_row]); +} + +static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col) { + bool matrix_changed = false; + + // Select col + select_col(current_col); + matrix_io_delay(); + + // 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])) { + // Pin HI, clear col bit + current_matrix[row_index] &= ~(MATRIX_ROW_SHIFTER << ( current_col + MATRIX_COLS/2)); + } else { + // Pin LO, set col bit + current_matrix[row_index] |= (MATRIX_ROW_SHIFTER << ( current_col + MATRIX_COLS/2)); + } + + // 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; +} + +void matrix_init_custom(void) { + init_pins(); +} + +bool matrix_scan_custom(matrix_row_t current_matrix[]) { + bool changed = false; + + // Set row, read cols + for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) { + changed |= read_cols_on_row(current_matrix, current_row); + } + // Set col, read rows + for (uint8_t current_col = 0; current_col < (MATRIX_COLS/2); current_col++) { + changed |= read_rows_on_col(current_matrix, current_col); + } + + return (uint8_t)changed; +} diff --git a/keyboards/pistachio_pro/pistachio_pro.c b/keyboards/pistachio_pro/pistachio_pro.c new file mode 100644 index 000000000000..fda14471b728 --- /dev/null +++ b/keyboards/pistachio_pro/pistachio_pro.c @@ -0,0 +1,17 @@ +/* Copyright 2021 rate + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "pistachio_pro.h" diff --git a/keyboards/pistachio_pro/pistachio_pro.h b/keyboards/pistachio_pro/pistachio_pro.h new file mode 100644 index 000000000000..42de95ea8799 --- /dev/null +++ b/keyboards/pistachio_pro/pistachio_pro.h @@ -0,0 +1,42 @@ +/* Copyright 2021 rate + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, \ + k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k115, k116, k117, \ + 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, k313, \ + k400, k401, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, k413, \ + k500, k501, k502, k503, k504, k505, k506, k507, k508, k509, k510, k511, k512, k513 ) { \ + { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, KC_NO, KC_NO, KC_NO, KC_NO }, \ + { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k115, k116, k117 }, \ + { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, KC_NO, KC_NO }, \ + { k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, KC_NO, KC_NO, KC_NO, KC_NO }, \ + { k400, k401, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, k413, KC_NO, KC_NO, KC_NO, KC_NO }, \ + { k500, k501, k502, k503, k504, k505, k506, k507, k508, k509, k510, k511, k512, k513, KC_NO, KC_NO, KC_NO, KC_NO } \ +} diff --git a/keyboards/pistachio_pro/readme.md b/keyboards/pistachio_pro/readme.md new file mode 100644 index 000000000000..b224c874e61e --- /dev/null +++ b/keyboards/pistachio_pro/readme.md @@ -0,0 +1,21 @@ +# PistachioPro + +![PistachioPro](https://ratelog.net/wp-content/uploads/2021/07/PistachioPro-scaled.jpg) + +This is a JIS layout TKL keyboard with 89 keys, encoder and OLED. + +* Keyboard Maintainer: [rate](https://github.com/7-rate) +* Hardware Supported: PistachioPro PCB, +* Hardware Availability: [Booth Shop](https://rates.booth.pm/items/2925303) + +Make example for this keyboard (after setting up your build environment): + + make pistachio_pro:default + +Flashing example for this keyboard: + + make pistachio_pro:default:flash + +To reset the keyboard into bootloader mode, press the reset switch on the underside. + +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/pistachio_pro/rules.mk b/keyboards/pistachio_pro/rules.mk new file mode 100644 index 000000000000..762dd47f9d54 --- /dev/null +++ b/keyboards/pistachio_pro/rules.mk @@ -0,0 +1,26 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 +ENCODER_ENABLE = yes + +CUSTOM_MATRIX = lite +SRC += matrix.c +SRC += ./lib/bme280.c diff --git a/keyboards/pizzakeyboards/pizza65/info.json b/keyboards/pizzakeyboards/pizza65/info.json index 551edc70e3a5..0cd80f3f978d 100644 --- a/keyboards/pizzakeyboards/pizza65/info.json +++ b/keyboards/pizzakeyboards/pizza65/info.json @@ -2,8 +2,6 @@ "keyboard_name": "pizza65", "url": "www.keyboards.pizza", "maintainer": "mm0nte", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_ansi_blocker": { "layout": [ @@ -266,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/pizzakeyboards/pizza65/rules.mk b/keyboards/pizzakeyboards/pizza65/rules.mk index 6972c817629e..ae6ea73dd750 100644 --- a/keyboards/pizzakeyboards/pizza65/rules.mk +++ b/keyboards/pizzakeyboards/pizza65/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/pkb65/info.json b/keyboards/pkb65/info.json index 0c0877e3dc62..b09e8d83006a 100644 --- a/keyboards/pkb65/info.json +++ b/keyboards/pkb65/info.json @@ -2,8 +2,6 @@ "keyboard_name": "PKB65", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT": { "layout": [ @@ -74,4 +72,4 @@ {"label":"\u2192", "x":15, "y":4}] } } -} \ No newline at end of file +} diff --git a/keyboards/pkb65/rules.mk b/keyboards/pkb65/rules.mk index 91f48bd442d3..ef61685f7c09 100644 --- a/keyboards/pkb65/rules.mk +++ b/keyboards/pkb65/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/planck/config.h b/keyboards/planck/config.h index 71111eca215c..a86359327a6f 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -78,5 +77,3 @@ along with this program. If not, see . //#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 7f8876496382..50855147295c 100644 --- a/keyboards/planck/ez/config.h +++ b/keyboards/planck/ez/config.h @@ -1,5 +1,6 @@ -/* - * Copyright 2018 Jack Humbert +/* Copyright 2018 Jack Humbert + * Copyright 2015 ZSA Technology Labs Inc (@zsa) + * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -108,26 +109,6 @@ //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - // #define WS2812_LED_N 2 // #define RGBLED_NUM WS2812_LED_N // #define WS2812_TIM_N 2 @@ -139,19 +120,64 @@ //#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 -#define RGB_DISABLE_WHEN_USB_SUSPENDED true +#define RGB_DISABLE_WHEN_USB_SUSPENDED #define RGB_MATRIX_LED_PROCESS_LIMIT 5 #define RGB_MATRIX_LED_FLUSH_LIMIT 26 - +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH #define IGNORE_MOD_TAP_INTERRUPT diff --git a/keyboards/planck/ez/ez.c b/keyboards/planck/ez/ez.c index 8c498a552092..5c68726a0196 100644 --- a/keyboards/planck/ez/ez.c +++ b/keyboards/planck/ez/ez.c @@ -1,4 +1,6 @@ /* Copyright 2018 Jack Humbert + * Copyright 2015 ZSA Technology Labs Inc (@zsa) + * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -19,7 +21,7 @@ keyboard_config_t keyboard_config; #ifdef RGB_MATRIX_ENABLE -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { /* Refer to IS31 manual for these locations * driver * | R location diff --git a/keyboards/planck/ez/ez.h b/keyboards/planck/ez/ez.h index d11929d3ef88..19cc26eea365 100644 --- a/keyboards/planck/ez/ez.h +++ b/keyboards/planck/ez/ez.h @@ -1,4 +1,6 @@ /* Copyright 2018 Jack Humbert + * Copyright 2015 ZSA Technology Labs Inc (@zsa) + * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -39,17 +41,21 @@ } #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, KC_NO, k37, k38, k39, k3a, k3b \ -) \ -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 \ -) + k30, k31, k32, k33, k34, 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, k3a, k3b, k36 }, \ + { k06, k07, k08, k09, k0a, k0b }, \ + { k16, k17, k18, k19, k1a, k1b }, \ + { k26, k27, k28, k29, k2a, k2b }, \ + { k37, k38, k39, k33, k34, k35 } \ +} #define LAYOUT_planck_mit LAYOUT_planck_1x2uC #define LAYOUT_planck_grid LAYOUT_ortho_4x12 diff --git a/keyboards/planck/ez/glow/config.h b/keyboards/planck/ez/glow/config.h index 21a339da2893..55ce2890107b 100644 --- a/keyboards/planck/ez/glow/config.h +++ b/keyboards/planck/ez/glow/config.h @@ -1,5 +1,6 @@ -/* - * Copyright 2018 Jack Humbert +/* Copyright 2018 Jack Humbert + * Copyright 2015 ZSA Technology Labs Inc (@zsa) + * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/keyboards/planck/ez/glow/glow.c b/keyboards/planck/ez/glow/glow.c index 1813ccae093e..c6733bbe502d 100644 --- a/keyboards/planck/ez/glow/glow.c +++ b/keyboards/planck/ez/glow/glow.c @@ -1 +1,19 @@ +/* Copyright 2018 Jack Humbert + * Copyright 2015 ZSA Technology Labs Inc (@zsa) + * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #include "glow.h" diff --git a/keyboards/planck/ez/glow/glow.h b/keyboards/planck/ez/glow/glow.h index d8a01f43592f..cfc26b5e0371 100644 --- a/keyboards/planck/ez/glow/glow.h +++ b/keyboards/planck/ez/glow/glow.h @@ -1,3 +1,21 @@ +/* Copyright 2018 Jack Humbert + * Copyright 2015 ZSA Technology Labs Inc (@zsa) + * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #pragma once #include "ez.h" diff --git a/keyboards/planck/ez/halconf.h b/keyboards/planck/ez/halconf.h new file mode 100644 index 000000000000..f1044867f76c --- /dev/null +++ b/keyboards/planck/ez/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 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 . + */ +#pragma once + +#define HAL_USE_I2C TRUE +#define HAL_USE_GPT TRUE +#define HAL_USE_DAC TRUE +#define HAL_USE_PWM TRUE + +#include_next diff --git a/keyboards/planck/ez/info.json b/keyboards/planck/ez/info.json index 7444444c12f8..6c9332b052e3 100644 --- a/keyboards/planck/ez/info.json +++ b/keyboards/planck/ez/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Planck EZ", "url": "https://ergodox-ez.com/pages/planck", "maintainer": "jackhumbert", - "width": 12, - "height": 4, "layouts": { "LAYOUT_planck_1x2uC": { - "key_count": 47, "layout": [ { "x": 0, "y": 0 }, { "x": 1, "y": 0 }, @@ -58,7 +55,6 @@ ] }, "LAYOUT_ortho_4x12": { - "key_count": 48, "layout": [ { "x": 0, "y": 0 }, { "x": 1, "y": 0 }, diff --git a/keyboards/planck/ez/mcuconf.h b/keyboards/planck/ez/mcuconf.h new file mode 100644 index 000000000000..44035e782720 --- /dev/null +++ b/keyboards/planck/ez/mcuconf.h @@ -0,0 +1,41 @@ +/* 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 . + */ + +#pragma once + +#include_next "mcuconf.h" + +// for i2c expander, and ISSI +#undef STM32_I2C_USE_I2C1 +#define STM32_I2C_USE_I2C1 TRUE + +// for indicator LEDs +#undef STM32_PWM_USE_TIM3 +#define STM32_PWM_USE_TIM3 TRUE +#undef STM32_PWM_USE_TIM4 +#define STM32_PWM_USE_TIM4 TRUE + +// for audio +#undef STM32_DAC_USE_DAC1_CH1 +#define STM32_DAC_USE_DAC1_CH1 TRUE +#undef STM32_DAC_USE_DAC1_CH2 +#define STM32_DAC_USE_DAC1_CH2 TRUE +#undef STM32_GPT_USE_TIM6 +#define STM32_GPT_USE_TIM6 TRUE +#undef STM32_GPT_USE_TIM7 +#define STM32_GPT_USE_TIM7 TRUE +#undef STM32_GPT_USE_TIM8 +#define STM32_GPT_USE_TIM8 TRUE diff --git a/keyboards/planck/ez/readme.md b/keyboards/planck/ez/readme.md index 247bf7448afa..f85ab5969369 100644 --- a/keyboards/planck/ez/readme.md +++ b/keyboards/planck/ez/readme.md @@ -4,24 +4,26 @@ A variant of the Planck featuring a 2u spacebar and per-key RGB backlighting. -Keyboard Maintainer: [Jack Humbert](https://github.com/jackhumbert) +Keyboard Maintainer: [Jack Humbert](https://github.com/jackhumbert), [Drashna Jael're](https://github.com/drashna) Hardware Supported: Planck EZ -Hardware Availability: [ergodox-ez.com](https://ergodox-ez.com/pages/planck) +Hardware Availability: [ZSA](https://www.zsa.io/planck/) Make example for this keyboard (after setting up your build environment): - make planck/ez: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). - -# Planck EZ Glow + make planck/ez:oryx For the per key RGB version of this keyboard, you want to use the "glow" subdirectory. For example: - make planck/ez/glow:default + make planck/ez/glow:oryx + +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). ## Planck EZ Configuration (from Oryx) +To enable the features from Oryx (ZSA's Configurator), either compile the the `oryx` keymap, or add `#define ORYX_CONFIGURATOR` to your `config.h` file. + +This enables the front Indicator LEDs, and the `TOGGLE_LAYER_COLOR`, and `LED_LEVEL` keycodes. The `TOGGLE_LAYER_COLOR` keycode toggles the customized LED map configured on Oryx. The `LED_LEVEL` cycles through the brightness levels for the front "teeth" LEDs. + ### Indicator LEDs The two front "teeth" LED indicators are PWM controlled. If you have `ORYX_CONFIGURATOR` defined in your keymap's `config.h`, you can use the `LED_LEVEL` to cycle through preset vales (0, 25%, 50%, 75%, 100%), and will be saved to EEPROM (persistent storage) diff --git a/keyboards/planck/ez/rules.mk b/keyboards/planck/ez/rules.mk index 8d221767e943..fa431041b97b 100644 --- a/keyboards/planck/ez/rules.mk +++ b/keyboards/planck/ez/rules.mk @@ -1,6 +1,5 @@ # MCU name MCU = STM32F303 -BOARD = QMK_PROTON_C # Bootloader selection BOOTLOADER = stm32-dfu @@ -9,26 +8,22 @@ BOOTLOADER = stm32-dfu # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # Mouse keys +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 +CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # 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 +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 -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = yes # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = yes # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -API_SYSEX_ENABLE = no - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend ENCODER_ENABLE = yes RGB_MATRIX_DRIVER = IS31FL3737 LAYOUTS = ortho_4x12 planck_mit LAYOUTS_HAS_RGB = no + +RGB_MATRIX_SUPPORTED = yes +RGBLIGHT_SUPPORTED = no +BAKCLIGHT_SUPPORTED = no diff --git a/keyboards/planck/info.json b/keyboards/planck/info.json index 7e51595209e5..a4710d781f6d 100644 --- a/keyboards/planck/info.json +++ b/keyboards/planck/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Planck", "url": "https://olkb.com/planck", "maintainer": "jackhumbert", - "width": 12, - "height": 4, "layouts": { "LAYOUT_planck_1x2uC": { "layout": [ diff --git a/keyboards/planck/keymaps/ab/rules.mk b/keyboards/planck/keymaps/ab/rules.mk index c4dc26dc2b3c..4c79e946e6b1 100644 --- a/keyboards/planck/keymaps/ab/rules.mk +++ b/keyboards/planck/keymaps/ab/rules.mk @@ -42,7 +42,7 @@ # change to "no" to disable the options, or define them in the makefile.mk in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/abishalom/keymap.c b/keyboards/planck/keymaps/abishalom/keymap.c index bd53cfb7af1a..c88dced41f1b 100644 --- a/keyboards/planck/keymaps/abishalom/keymap.c +++ b/keyboards/planck/keymaps/abishalom/keymap.c @@ -221,7 +221,7 @@ uint16_t muse_counter = 0; uint8_t muse_offset = 70; uint16_t muse_tempo = 50; -bool encoder_update(bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (muse_mode) { if (IS_LAYER_ON(_RAISE)) { if (clockwise) { @@ -254,7 +254,7 @@ bool encoder_update(bool clockwise) { return true; } -void dip_switch_update_user(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: { #ifdef AUDIO_ENABLE @@ -283,6 +283,7 @@ void dip_switch_update_user(uint8_t index, bool active) { muse_mode = false; } } + return true; } void matrix_scan_user(void) { diff --git a/keyboards/planck/keymaps/adamtabrams/config.h b/keyboards/planck/keymaps/adamtabrams/config.h new file mode 100644 index 000000000000..0c275f20c51b --- /dev/null +++ b/keyboards/planck/keymaps/adamtabrams/config.h @@ -0,0 +1,39 @@ +/* Copyright (C) 2021 Adam Abrams + * + * This program is free software: you can 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 . + */ + +#pragma once + +// General Configs +#define NO_ACTION_ONESHOT +#define FORCE_NKRO +#define TAPPING_TOGGLE 3 + +// Mouse Configs +#define MK_3_SPEED +#define MK_MOMENTARY_ACCEL +#define MK_C_OFFSET_1 6 +#define MK_C_OFFSET_UNMOD 16 +#define MK_C_OFFSET_2 26 +// for MK_W lower is faster +#define MK_W_INTERVAL_UNMOD 80 + +// Tap-Hold Configs +#define TAPPING_TERM 180 +#define PERMISSIVE_HOLD +#define IGNORE_MOD_TAP_INTERRUPT +#define IGNORE_MOD_TAP_INTERRUPT_PER_KEY +#define TAPPING_FORCE_HOLD +#define TAPPING_FORCE_HOLD_PER_KEY diff --git a/keyboards/planck/keymaps/adamtabrams/keymap.c b/keyboards/planck/keymaps/adamtabrams/keymap.c new file mode 100644 index 000000000000..4b041aa2af2f --- /dev/null +++ b/keyboards/planck/keymaps/adamtabrams/keymap.c @@ -0,0 +1,279 @@ +/* Copyright 2015-2017 Jack Humbert + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +#include "muse.h" + + +enum planck_layers { + _QWERTY, + _COLEMAK, + _SIMPLE, + _NUMBER, + _ARROWS, + _CURSOR, + _SYSTEM, + _KBOARD, + _FMWARE +}; + +enum planck_keycodes { + QWERTY = SAFE_RANGE, + COLEMAK, + SIMPLE, + NORMAL +}; + +#define ARROWS TT(_ARROWS) +#define CURSOR TT(_CURSOR) +#define SYSTEM TT(_SYSTEM) +#define KBOARD MO(_KBOARD) +#define FMWARE MO(_FMWARE) + +#define NUMSPAC LT(_NUMBER, KC_SPC) +#define SHFTESC LSFT_T(KC_ESC) +#define SFTENTR SFT_T(KC_ENT) + +#define ALT__A ALT_T(KC_A) +#define ALTSCLN ALT_T(KC_SCLN) +#define ALT__O ALT_T(KC_O) +#define GUI__S GUI_T(KC_S) +#define GUI__L GUI_T(KC_L) +#define GUI__R GUI_T(KC_R) +#define GUI__I GUI_T(KC_I) +#define SFT__D SFT_T(KC_D) +#define SFT__K SFT_T(KC_K) +#define SFT__S SFT_T(KC_S) +#define SFT__E SFT_T(KC_E) +#define CTL__F CTL_T(KC_F) +#define CTL__J CTL_T(KC_J) +#define CTL__T CTL_T(KC_T) +#define CTL__N CTL_T(KC_N) + +#define ALTRGHT A(KC_RGHT) +#define ALTLEFT A(KC_LEFT) +#define CTLRGHT C(KC_RGHT) +#define CTLLEFT C(KC_LEFT) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* ## Qwerty + +| Tab | Q | W | E | R | T | Y | U | I | O | P | -_ | +| Bsp | A(A) | G(S) | S(D) | C(F) | G | H | C(J) | S(K) | G(L) | A(;) | '" | +| ! | Z | X | C | V | B | N | M | , | . | / | Enter| +| CTRL | GUI | ALT |System|Cursor|S(Esc)|N(Spc)|Arrows| Left | Down | Up | Right| + */ + +[_QWERTY] = LAYOUT_planck_grid( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, + KC_BSPC, ALT__A, GUI__S, SFT__D, CTL__F, KC_G, KC_H, CTL__J, SFT__K, GUI__L, ALTSCLN, KC_QUOT, + KC_EXLM, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_LCTL, KC_LGUI, KC_LALT, SYSTEM, CURSOR, SHFTESC, NUMSPAC, ARROWS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT +), + +/* ## Colemak + +| Tab | Q | W | F | P | B | J | L | U | Y | ; | -_ | +| Bsp | A(A) | G(R) | S(S) | C(T) | G | M | C(N) | S(E) | G(I) | A(O) | '" | +| ! | Z | X | C | D | V | K | H | , | . | / | Enter| +| CTRL | GUI | ALT |System|Cursor|S(Esc)|N(Spc)|Arrows| Left | Down | Up | Right| + */ + +[_COLEMAK] = LAYOUT_planck_grid( + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_MINS, + KC_BSPC, ALT__A, GUI__R, SFT__S, CTL__T, KC_G, KC_M, CTL__N, SFT__E, GUI__I, ALT__O, KC_QUOT, + KC_EXLM, KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_LCTL, KC_LGUI, KC_LALT, SYSTEM, CURSOR, SHFTESC, NUMSPAC, ARROWS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT +), + +/* ## Simple + +| Tab | Q | W | E | R | T | Y | U | I | O | P | Bsp | +| Esc | A | S | D | F | G | H | J | K | L | ; | '" | +| SHFT | Z | X | C | V | B | N | M | , | . | / |S(Ent)| +| CTRL | GUI | ALT |System|Cursor| Spc |N(Spc)|Arrows| Left | Down | Up | Right| + */ + +[_SIMPLE] = LAYOUT_planck_grid( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFTENTR, + KC_LCTL, KC_LGUI, KC_LALT, SYSTEM, CURSOR, KC_SPC, NUMSPAC, ARROWS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT +), + +/* ## Number + +| | \| | & | = | + | @ | % | # | * | $ | ^ | | +| | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | \` | +| | | [ | { | ( | ~ | ! | ) | } | ] | \ | | +| | | | | | | \\/ | | | | |Normal| + */ + +[_NUMBER] = LAYOUT_planck_grid( + _______, KC_PIPE, KC_AMPR, KC_EQL, KC_PLUS, KC_AT, KC_PERC, KC_HASH, KC_ASTR, KC_DLR, KC_CIRC, _______, + _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRV, + _______, XXXXXXX, KC_LBRC, KC_LCBR, KC_LPRN, KC_TILD, KC_EXLM, KC_RPRN, KC_RCBR, KC_RBRC, KC_BSLS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, NORMAL +), + + +/* ## Arrows + +| | |A(->) | | |A(<-) | | P_Up | P_Up |C(->) | | | +| | | |P_Down| | | Left | Down | Up |Right |C(<-) | | +| | | | |P_Down|A(<-) | | | | | | | +| | | | | | | | \\/ | | | |Normal| + */ + +[_ARROWS] = LAYOUT_planck_grid( + _______, _______, ALTRGHT, _______, _______, ALTLEFT, _______, KC_PGUP, KC_PGUP, CTLRGHT, _______, _______, + _______, _______, _______, KC_PGDN, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, CTLLEFT, _______, + _______, _______, _______, _______, KC_PGDN, ALTLEFT, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, NORMAL +), + +/* ## Cursor + +| | | |Wh_Dn |M_Btn2| | |Wh_Dn |Wh_Dn | | | | +| |M_Acc2|M_Acc1|Wh_Up |M_Btn1| | M_L |M_Down| M_Up | M_R | | | +| | | | |Wh_Up | | | | | | | | +| | | | | \\/ | | | | | | |Normal| + */ + +[_CURSOR] = LAYOUT_planck_grid( + _______, _______, _______, KC_WH_D, KC_BTN2, _______, _______, KC_WH_D, KC_WH_D, _______, _______, _______, + _______, KC_ACL2, KC_ACL1, KC_WH_U, KC_BTN1, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, _______, _______, + _______, _______, _______, _______, KC_WH_U, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, NORMAL +), + +/* ## System + +| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | +| | |Pr_Scn|Pr_Scn| | |Brght-| Vol- | Vol+ |Brght+| Mute | | +| | | | | | | | Mute |P_Trac|N_Trac| | Play | +|KBoard| | | \\/ | | | | |Simple|Qwerty|Colemk|Normal| + */ + +[_SYSTEM] = LAYOUT_planck_grid( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + _______, XXXXXXX, KC_PSCR, KC_PSCR, XXXXXXX, XXXXXXX, KC_BRID, KC_VOLD, KC_VOLU, KC_BRIU, KC_MUTE, _______, + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE, KC_MPRV, KC_MNXT, XXXXXXX, KC_MPLY, + KBOARD, _______, _______, _______, _______, _______, _______, _______, SIMPLE, QWERTY, COLEMAK, NORMAL +), + +/* ## KBoard + +|------| | | | | | | | | | | | +| | | | | | | Hue- | Sat- | Sat+ | Hue+ |Mode+ | | +| | | | | | | |Mode- |Brght-|Brght+| |RGB_Tg| +| \\/ | | | \\/ | | | | | | | |FMWare| + */ + +[_KBOARD] = LAYOUT_planck_grid( + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUD, RGB_SAD, RGB_SAI, RGB_HUI, RGB_MOD, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RMOD, RGB_VAD, RGB_VAI, XXXXXXX, RGB_TOG, + _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, FMWARE +), + +/* ## FMWare + +| | | |EEPROM|Reset | | | | | | | | +| | |Reset |Debug | | | | | | | | | +|------| | | | | | | | | | | | +| \\/ | | | \\/ | | | | | | | | \\/ | + */ + +[_FMWARE] = LAYOUT_planck_grid( + XXXXXXX, XXXXXXX, XXXXXXX, EEP_RST, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, RESET, DEBUG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______ +) + +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + set_single_persistent_default_layer(_QWERTY); + return true; + + case COLEMAK: + set_single_persistent_default_layer(_COLEMAK); + return true; + + case SIMPLE: + set_single_persistent_default_layer(_SIMPLE); + return true; + + case NORMAL: + layer_clear(); + return false; + } + return true; +} + +bool get_tapping_force_hold(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case SHFTESC: + case NUMSPAC: + case SFTENTR: + case ALT__A: + case ALTSCLN: + case ALT__O: + case GUI__S: + case GUI__L: + case GUI__R: + case GUI__I: + case SFT__D: + case SFT__K: + case SFT__S: + case SFT__E: + case CTL__F: + case CTL__J: + case CTL__T: + case CTL__N: + return true; + default: + return false; + } +} + +bool get_ignore_mod_tap_interrupt(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case ALT__A: + case ALTSCLN: + case ALT__O: + case GUI__S: + case GUI__L: + case GUI__R: + case GUI__I: + case SFT__D: + case SFT__K: + case SFT__S: + case SFT__E: + case CTL__F: + case CTL__J: + case CTL__T: + case CTL__N: + return true; + default: + return false; + } +} diff --git a/keyboards/planck/keymaps/adamtabrams/readme.md b/keyboards/planck/keymaps/adamtabrams/readme.md new file mode 100644 index 000000000000..6512cb7d7ab2 --- /dev/null +++ b/keyboards/planck/keymaps/adamtabrams/readme.md @@ -0,0 +1,89 @@ +## Normal - Qwerty + +|------|------|------|------|------|------|------|------|------|------|------|------| +|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:| +| Tab | Q | W | E | R | T | Y | U | I | O | P | -_ | +| Bsp | A(A) | G(S) | S(D) | C(F) | G | H | C(J) | S(K) | G(L) | A(;) | '" | +| ! | Z | X | C | V | B | N | M | , | . | / | Enter| +| CTRL | GUI | ALT |System|Cursor|S(Esc)|N(Spc)|Arrows| Left | Down | Up | Right| + +- The `N` in `N(Spc)` stands for Number layer +- Hold down a layer key to temporarily activate or tap twice to toggle on or off + +## Normal - Colemak + +|------|------|------|------|------|------|------|------|------|------|------|------| +|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:| +| Tab | Q | W | F | P | B | J | L | U | Y | ; | -_ | +| Bsp | A(A) | G(R) | S(S) | C(T) | G | M | C(N) | S(E) | G(I) | A(O) | '" | +| ! | Z | X | C | D | V | K | H | , | . | / | Enter| +| CTRL | GUI | ALT |System|Cursor|S(Esc)|N(Spc)|Arrows| Left | Down | Up | Right| + +- The `N` in `N(Spc)` stands for Number layer +- Hold down a layer key to temporarily activate or tap twice to toggle on or off + +## Normal - Simple + +|------|------|------|------|------|------|------|------|------|------|------|------| +|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:| +| Tab | Q | W | E | R | T | Y | U | I | O | P | Bsp | +| Esc | A | S | D | F | G | H | J | K | L | ; | '" | +| SHFT | Z | X | C | V | B | N | M | , | . | / |S(Ent)| +| CTRL | GUI | ALT |System|Cursor| Spc |N(Spc)|Arrows| Left | Down | Up | Right| + +- The `N` in `N(Spc)` stands for Number layer +- Hold down a layer key to temporarily activate or tap twice to toggle on or off + +## Number + +|------|------|------|------|------|------|------|------|------|------|------|------| +|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:| +| | \| | & | = | + | @ | % | # | * | $ | ^ | | +| | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | \` | +| | | [ | { | ( | ~ | ! | ) | } | ] | \ | | +| | | | | | | \\/ | | | | |Normal| + +## Arrows + +|------|------|------|------|------|------|------|------|------|------|------|------| +|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:| +| | |A(->) | | |A(<-) | | P_Up | P_Up |C(->) | | | +| | | |P_Down| | | Left | Down | Up |Right |C(<-) | | +| | | | |P_Down|A(<-) | | | | | | | +| | | | | | | | \\/ | | | |Normal| + +## Cursor + +|------|------|------|------|------|------|------|------|------|------|------|------| +|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:| +| | | |Wh_Dn |M_Btn2| | |Wh_Dn |Wh_Dn | | | | +| |M_Acc2|M_Acc1|Wh_Up |M_Btn1| | M_L |M_Down| M_Up | M_R | | | +| | | | |Wh_Up | | | | | | | | +| | | | | \\/ | | | | | | |Normal| + +## System + +|------|------|------|------|------|------|------|------|------|------|------|------| +|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:| +| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | +| | |Pr_Scn|Pr_Scn| | |Brght-| Vol- | Vol+ |Brght+| Mute | | +| | | | | | | | Mute |P_Trac|N_Trac| | Play | +|KBoard| | | \\/ | | | | |Simple|Qwerty|Colemk|Normal| + +## KBoard + +|------|------|------|------|------|------|------|------|------|------|------|------| +|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:| +|------| | | | | | | | | | | | +| | | | | | | Hue- | Sat- | Sat+ | Hue+ |Mode+ | | +| | | | | | | |Mode- |Brght-|Brght+| |RGB_Tg| +| \\/ | | | \\/ | | | | | | | |FMWare| + +## FMWare + +|------|------|------|------|------|------|------|------|------|------|------|------| +|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:| +| | | |EEPROM|Reset | | | | | | | | +| | |Reset |Debug | | | | | | | | | +|------| | | | | | | | | | | | +| \\/ | | | \\/ | | | | | | | | \\/ | diff --git a/keyboards/planck/keymaps/adamtabrams/rules.mk b/keyboards/planck/keymaps/adamtabrams/rules.mk new file mode 100644 index 000000000000..bbf6cc119e32 --- /dev/null +++ b/keyboards/planck/keymaps/adamtabrams/rules.mk @@ -0,0 +1,13 @@ +SRC += muse.c +LTO_ENABLE = yes + +MOUSEKEY_ENABLE = yes +EXTRAKEY_ENABLE = yes +NKRO_ENABLE = yes +RGBLIGHT_ENABLE = yes + +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +COMMAND_ENABLE = no +AUDIO_ENABLE = no +ENCODER_ENABLE = no +DIP_SWITCH_ENABLE = no diff --git a/keyboards/planck/keymaps/ajp10304/readme.md b/keyboards/planck/keymaps/ajp10304/readme.md index 6ea8f0061d41..c68ba49283b6 100644 --- a/keyboards/planck/keymaps/ajp10304/readme.md +++ b/keyboards/planck/keymaps/ajp10304/readme.md @@ -1,5 +1,5 @@ # AJP10304 Custom Planck Layout -# Also available for the Shark, JJ40 and Atreus50 +# Also available for the Shark, Quark, JJ40 and Atreus50 **Note:** In the tables below where there are two characters on a key, the second is the output when shift is applied. @@ -7,9 +7,7 @@ the second is the output when shift is applied. **Note:** The below tables assume a UK layout. #### Flashing -Rev <=5: `make planck:ajp10304:flash` - -Rev 6: `make planck/rev6:ajp10304:flash` +Refer to the README.md of the keyboard you want to flash. ##### Main Qwerty Layer @@ -103,7 +101,7 @@ Activated when `fn` and `raise` held together. | | | | | | | | | | | | | | :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| -| ESC | | | | | | | | BTN3 | | | | +| ESC | | | | | | W_L | W_UP | BTN3 | W_DWN| W_R | | | ACC0 | ACC1 | ACC2 | | | | | BTN1 | UP | BTN2 | | | | ACC0 | ACC1 | ACC2 | | | | | LEFT | DOWN | RIGHT| | | | | | | | | | | | | | | | diff --git a/keyboards/planck/keymaps/alexey/rules.mk b/keyboards/planck/keymaps/alexey/rules.mk index 5dda6ad67ba1..d86b02fd1ce4 100644 --- a/keyboards/planck/keymaps/alexey/rules.mk +++ b/keyboards/planck/keymaps/alexey/rules.mk @@ -4,7 +4,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/altgr/rules.mk b/keyboards/planck/keymaps/altgr/rules.mk index a722766296dc..ea9abc2a80df 100644 --- a/keyboards/planck/keymaps/altgr/rules.mk +++ b/keyboards/planck/keymaps/altgr/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically -BOOTMAGIC_ENABLE = no # virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # mouse keys(+4700) EXTRAKEY_ENABLE = no # audio control and System control(+450) CONSOLE_ENABLE = no # console for debug(+400) diff --git a/keyboards/planck/keymaps/am/keymap.c b/keyboards/planck/keymaps/am/keymap.c index c1fa3925fbbf..d521484a1cca 100644 --- a/keyboards/planck/keymaps/am/keymap.c +++ b/keyboards/planck/keymaps/am/keymap.c @@ -171,7 +171,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } diff --git a/keyboards/planck/keymaps/andylikescandy/keymap.c b/keyboards/planck/keymaps/andylikescandy/keymap.c index 295616f015a3..e873130f4684 100644 --- a/keyboards/planck/keymaps/andylikescandy/keymap.c +++ b/keyboards/planck/keymaps/andylikescandy/keymap.c @@ -133,7 +133,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TILD, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_BSPC , KC_DEL , KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_PIPE , _______, LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), _______, _______, _______, _______, _______, _______, KC_ENT , - _______, _______, _______, _______, _______, KC_SPC, KC_SPC, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END + _______, _______, _______, _______, _______, KC_SPC, KC_SPC, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END ), /* Raise @@ -151,7 +151,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC , KC_DEL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_ENT , - _______, _______, _______, _______, _______, KC_SPC, KC_SPC, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END + _______, _______, _______, _______, _______, KC_SPC, KC_SPC, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END ), /* Plover layer (http://opensteno.org) @@ -216,7 +216,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND); #endif -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } diff --git a/keyboards/planck/keymaps/angerthosenear/rules.mk b/keyboards/planck/keymaps/angerthosenear/rules.mk index 5dda6ad67ba1..d86b02fd1ce4 100644 --- a/keyboards/planck/keymaps/angerthosenear/rules.mk +++ b/keyboards/planck/keymaps/angerthosenear/rules.mk @@ -4,7 +4,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/atreus/keymap.c b/keyboards/planck/keymaps/atreus/keymap.c index c9a721a1fa7e..f89b6fecdeb8 100644 --- a/keyboards/planck/keymaps/atreus/keymap.c +++ b/keyboards/planck/keymaps/atreus/keymap.c @@ -144,7 +144,7 @@ uint16_t muse_counter = 0; uint8_t muse_offset = 70; uint16_t muse_tempo = 50; -bool encoder_update(bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (muse_mode) { if (IS_LAYER_ON(_RAISE)) { if (clockwise) { @@ -177,7 +177,7 @@ bool encoder_update(bool clockwise) { return true; } -void dip_switch_update_user(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: { #ifdef AUDIO_ENABLE @@ -206,6 +206,7 @@ void dip_switch_update_user(uint8_t index, bool active) { muse_mode = false; } } + return true; } void matrix_scan_user(void) { diff --git a/keyboards/planck/keymaps/austin/rules.mk b/keyboards/planck/keymaps/austin/rules.mk index 5dda6ad67ba1..d86b02fd1ce4 100644 --- a/keyboards/planck/keymaps/austin/rules.mk +++ b/keyboards/planck/keymaps/austin/rules.mk @@ -4,7 +4,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/aviator/config.h b/keyboards/planck/keymaps/aviator/config.h index b2b3104501a1..c0060de14160 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/basic/rules.mk b/keyboards/planck/keymaps/basic/rules.mk index a31025bc33d5..e3a405f494e9 100644 --- a/keyboards/planck/keymaps/basic/rules.mk +++ b/keyboards/planck/keymaps/basic/rules.mk @@ -4,7 +4,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/bone2planck/keymap.c b/keyboards/planck/keymaps/bone2planck/keymap.c index 18b71bfc47e4..22bd50b297e3 100644 --- a/keyboards/planck/keymaps/bone2planck/keymap.c +++ b/keyboards/planck/keymaps/bone2planck/keymap.c @@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { DE_SS, DE_J, DE_D, DE_U, DE_A, DE_X, DE_P, DE_H, DE_L, DE_M, DE_W, DE_Q , // LT(1,KC_TAB), DE_C, DE_T, DE_I, DE_E, DE_O, DE_B, DE_N, DE_R, DE_S, DE_G, LT(1,KC_ENT) , MO(1), DE_C, DE_T, DE_I, DE_E, DE_O, DE_B, DE_N, DE_R, DE_S, DE_G, LT(1,KC_ENT) , - KC_LSFT, DE_F, DE_V, DE_UE, DE_AE, DE_OE, DE_Y, DE_Z, DE_COMM, DE_DOT, DE_K, KC_LSFT , + KC_LSFT, DE_F, DE_V, DE_UDIA, DE_ADIA, DE_ODIA, DE_Y, DE_Z, DE_COMM, DE_DOT, DE_K, KC_LSFT , KC_LCTL, KC_LGUI, KC_LALT, MO(4), MO(2), KC_SPC, KC_SPC, MO(2), MO(4), KC_RALT, KC_ESC, KC_RCTL ), @@ -49,9 +49,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [1] = LAYOUT_planck_grid( - DE_RING, DE_AT, DE_UNDS, DE_LBRC, DE_RBRC, DE_CIRC, DE_EXLM, DE_LESS, DE_MORE, DE_EQL, DE_AMPR, DE_ACUT , - _______, DE_BSLS, DE_SLSH, DE_LCBR, DE_RCBR, DE_ASTR, DE_QST, DE_LPRN, DE_RPRN, DE_MINS, DE_COLN, _______ , - _______, DE_HASH, DE_TILD, DE_PIPE, DE_DLR, DE_EURO, DE_PLUS, DE_PERC, DE_DQOT, DE_QUOT, DE_SCLN, _______ , + DE_DEG, DE_AT, DE_UNDS, DE_LBRC, DE_RBRC, DE_CIRC, DE_EXLM, DE_LABK, DE_RABK, DE_EQL, DE_AMPR, DE_ACUT , + _______, DE_BSLS, DE_SLSH, DE_LCBR, DE_RCBR, DE_ASTR, DE_QUES, DE_LPRN, DE_RPRN, DE_MINS, DE_COLN, _______ , + _______, DE_HASH, DE_TILD, DE_PIPE, DE_DLR, DE_EURO, DE_PLUS, DE_PERC, DE_DQUO, DE_QUOT, DE_SCLN, _______ , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), @@ -108,8 +108,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [4] = LAYOUT_planck_grid( XXXXXXX, XXXXXXX, KC_PSCR, KC_SLCK, KC_PAUS, XXXXXXX, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F12, XXXXXXX , - KC_TAB, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, DE_SQ3, KC_F4, KC_F5, KC_F6, KC_F11, KC_ENT , - _______, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, DE_SQ2, KC_F1, KC_F2, KC_F3, KC_F10, _______ , + KC_TAB, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, DE_SUP3, KC_F4, KC_F5, KC_F6, KC_F11, KC_ENT , + _______, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, DE_SUP2, KC_F1, KC_F2, KC_F3, KC_F10, _______ , _______, _______, _______, _______, MO(5), _______, _______, MO(5), _______, _______, _______, _______ ), @@ -128,8 +128,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [5] = LAYOUT_planck_grid( XXXXXXX, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F12, XXXXXXX, KC_PSCR, KC_SLCK, KC_PAUS, XXXXXXX, XXXXXXX , - _______, DE_SQ3, KC_F4, KC_F5, KC_F6, KC_F11, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, _______ , - _______, DE_SQ2, KC_F1, KC_F2, KC_F3, KC_F10, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, _______ , + _______, DE_SUP3, KC_F4, KC_F5, KC_F6, KC_F11, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, _______ , + _______, DE_SUP2, KC_F1, KC_F2, KC_F3, KC_F10, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, _______ , _______, _______, _______, XXXXXXX, _______, _______, _______, _______, XXXXXXX, _______, _______, _______ ) }; diff --git a/keyboards/planck/keymaps/bone2planck/rules.mk b/keyboards/planck/keymaps/bone2planck/rules.mk index fc0bbe9e7494..628f1fb0a105 100644 --- a/keyboards/planck/keymaps/bone2planck/rules.mk +++ b/keyboards/planck/keymaps/bone2planck/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/buffet/config.h b/keyboards/planck/keymaps/buffet/config.h index 478b282b3113..a6567d8e565c 100644 --- a/keyboards/planck/keymaps/buffet/config.h +++ b/keyboards/planck/keymaps/buffet/config.h @@ -4,43 +4,43 @@ #define PERMISSIVE_HOLD // Disable all RGB effects -#define DISABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT -#define DISABLE_RGB_MATRIX_ALPHAS_MODS -#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -#define DISABLE_RGB_MATRIX_BREATHING -#define DISABLE_RGB_MATRIX_BAND_SAT -#define DISABLE_RGB_MATRIX_BAND_VAL -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL -#define DISABLE_RGB_MATRIX_CYCLE_ALL -#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT -#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN -#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN -#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL -#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON -#define DISABLE_RGB_MATRIX_DUAL_BEACON -#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL -#define DISABLE_RGB_MATRIX_CYCLE_SPIRAL -#define DISABLE_RGB_MATRIX_RAINBOW_BEACON -#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS -#define DISABLE_RGB_MATRIX_RAINDROPS -#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS -#define DISABLE_RGB_MATRIX_TYPING_HEATMAP -#define DISABLE_RGB_MATRIX_DIGITAL_RAIN -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -#define DISABLE_RGB_MATRIX_SPLASH -#define DISABLE_RGB_MATRIX_MULTISPLASH -#define DISABLE_RGB_MATRIX_SOLID_SPLASH -#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH +#undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#undef ENABLE_RGB_MATRIX_ALPHAS_MODS +#undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#undef ENABLE_RGB_MATRIX_BREATHING +#undef ENABLE_RGB_MATRIX_BAND_SAT +#undef ENABLE_RGB_MATRIX_BAND_VAL +#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#undef ENABLE_RGB_MATRIX_CYCLE_ALL +#undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#undef ENABLE_RGB_MATRIX_DUAL_BEACON +#undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#undef ENABLE_RGB_MATRIX_RAINBOW_BEACON +#undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#undef ENABLE_RGB_MATRIX_RAINDROPS +#undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#undef ENABLE_RGB_MATRIX_TYPING_HEATMAP +#undef ENABLE_RGB_MATRIX_DIGITAL_RAIN +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#undef ENABLE_RGB_MATRIX_SPLASH +#undef ENABLE_RGB_MATRIX_MULTISPLASH +#undef ENABLE_RGB_MATRIX_SOLID_SPLASH +#undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Most tactile encoders have detents every 4 stages #define ENCODER_RESOLUTION 4 diff --git a/keyboards/planck/keymaps/buffet/rules.mk b/keyboards/planck/keymaps/buffet/rules.mk index 7774d766577a..cda82158a2b6 100644 --- a/keyboards/planck/keymaps/buffet/rules.mk +++ b/keyboards/planck/keymaps/buffet/rules.mk @@ -1,5 +1,5 @@ AUDIO_ENABLE = no -BOOTMAGIC_ENABLE = lite +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite COMMAND_ENABLE = no MOUSEKEY_ENABLE = no diff --git a/keyboards/planck/keymaps/buhearns/rules.mk b/keyboards/planck/keymaps/buhearns/rules.mk index 5c11b51a28e9..13e6567c9841 100644 --- a/keyboards/planck/keymaps/buhearns/rules.mk +++ b/keyboards/planck/keymaps/buhearns/rules.mk @@ -1,4 +1,4 @@ -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/cbbrowne/config.h b/keyboards/planck/keymaps/cbbrowne/config.h index 4ec7d081ba8e..87953c339ecb 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 . */ -#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/cbbrowne/rules.mk b/keyboards/planck/keymaps/cbbrowne/rules.mk index 45d6837399ad..13c2530dd485 100644 --- a/keyboards/planck/keymaps/cbbrowne/rules.mk +++ b/keyboards/planck/keymaps/cbbrowne/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = no # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) @@ -14,7 +14,6 @@ AUDIO_ENABLE = no # Audio output on port C6 UNICODE_ENABLE = no # Unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -API_SYSEX_ENABLE = no # Enable SYSEX API (+5390) # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend diff --git a/keyboards/planck/keymaps/charlesrocket/keymap.c b/keyboards/planck/keymaps/charlesrocket/keymap.c index 47cb8865d78c..cec3f0186a51 100644 --- a/keyboards/planck/keymaps/charlesrocket/keymap.c +++ b/keyboards/planck/keymaps/charlesrocket/keymap.c @@ -12,8 +12,8 @@ #define KC_PC_CUT LCTL(KC_X) #define KC_PC_COPY LCTL(KC_C) #define KC_PC_PASTE LCTL(KC_V) -#define ES_LESS_MAC KC_GRAVE -#define ES_GRTR_MAC LSFT(KC_GRAVE) +#define ES_LABK_MAC KC_GRAVE +#define ES_RABK_MAC LSFT(KC_GRAVE) #define ES_BSLS_MAC ALGR(KC_6) #define NO_PIPE_ALT KC_GRAVE #define NO_BSLS_ALT KC_EQUAL @@ -139,7 +139,7 @@ uint16_t muse_counter = 0; uint8_t muse_offset = 70; uint16_t muse_tempo = 50; -bool encoder_update(bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (muse_mode) { if (IS_LAYER_ON(_RAISE)) { if (clockwise) { diff --git a/keyboards/planck/keymaps/charlie/rules.mk b/keyboards/planck/keymaps/charlie/rules.mk index 5dda6ad67ba1..d86b02fd1ce4 100644 --- a/keyboards/planck/keymaps/charlie/rules.mk +++ b/keyboards/planck/keymaps/charlie/rules.mk @@ -4,7 +4,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/circuit/rules.mk b/keyboards/planck/keymaps/circuit/rules.mk index b527d82971d2..14247d1a5c4d 100644 --- a/keyboards/planck/keymaps/circuit/rules.mk +++ b/keyboards/planck/keymaps/circuit/rules.mk @@ -3,7 +3,7 @@ # change to "no" to disable the options, or define them in the makefile.mk in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/copface/keymap.c b/keyboards/planck/keymaps/copface/keymap.c index 0754a0c742d3..b448d9c7dd27 100644 --- a/keyboards/planck/keymaps/copface/keymap.c +++ b/keyboards/planck/keymaps/copface/keymap.c @@ -85,7 +85,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_META] = LAYOUT_planck_grid( XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SRC, XXXXXXX, - XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + KC_CAPS, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F10, KC_F11, KC_F12, HK_AF9, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX ), @@ -167,6 +167,10 @@ void matrix_scan_user(void) { SEQ_ONE_KEY(KC_S) { tap_code16(G(C(S(KC_4)))); } + // Record Screen + SEQ_TWO_KEYS(KC_S, KC_S) { + tap_code16(S(G(KC_5))); + } // 1Pass browser SEQ_ONE_KEY(KC_A) { tap_code16(G(A(KC_BSLS))); @@ -187,5 +191,13 @@ void matrix_scan_user(void) { SEQ_ONE_KEY(KC_ENT) { tap_code16(S(G(A(KC_F)))); } + // Focus file tree + SEQ_ONE_KEY(KC_TAB) { + tap_code16(G(KC_1)); + } + // Caps-lock + SEQ_TWO_KEYS(KC_TAB, KC_TAB) { + tap_code16(KC_CAPS); + } } } diff --git a/keyboards/planck/keymaps/copface/rules.mk b/keyboards/planck/keymaps/copface/rules.mk index aacc6c65a89c..e259574a4e44 100644 --- a/keyboards/planck/keymaps/copface/rules.mk +++ b/keyboards/planck/keymaps/copface/rules.mk @@ -1,6 +1,6 @@ SRC += muse.c -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no CONSOLE_ENABLE = no COMMAND_ENABLE = no diff --git a/keyboards/planck/keymaps/corvec/rules.mk b/keyboards/planck/keymaps/corvec/rules.mk index c17a31a233b7..4398ea545274 100644 --- a/keyboards/planck/keymaps/corvec/rules.mk +++ b/keyboards/planck/keymaps/corvec/rules.mk @@ -1,5 +1,4 @@ AUTO_SHIFT_ENABLE = yes TAP_DANCE_ENABLE = yes -API_SYSEX_ENABLE = no CONSOLE_ENABLE = no EXTRAKEY_ENABLE = no diff --git a/keyboards/planck/keymaps/csc027/rules.mk b/keyboards/planck/keymaps/csc027/rules.mk index cf92d56749b0..d6b6894bf1ed 100644 --- a/keyboards/planck/keymaps/csc027/rules.mk +++ b/keyboards/planck/keymaps/csc027/rules.mk @@ -1,4 +1,4 @@ -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite COMMAND_ENABLE = no CONSOLE_ENABLE = no EXTRAKEY_ENABLE = no diff --git a/keyboards/planck/keymaps/daniel/rules.mk b/keyboards/planck/keymaps/daniel/rules.mk index 5dda6ad67ba1..d86b02fd1ce4 100644 --- a/keyboards/planck/keymaps/daniel/rules.mk +++ b/keyboards/planck/keymaps/daniel/rules.mk @@ -4,7 +4,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/danielhklein/rules.mk b/keyboards/planck/keymaps/danielhklein/rules.mk index 4660d443daca..e31e20009a0b 100644 --- a/keyboards/planck/keymaps/danielhklein/rules.mk +++ b/keyboards/planck/keymaps/danielhklein/rules.mk @@ -1,4 +1,4 @@ -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/david/rules.mk b/keyboards/planck/keymaps/david/rules.mk index 5dda6ad67ba1..d86b02fd1ce4 100644 --- a/keyboards/planck/keymaps/david/rules.mk +++ b/keyboards/planck/keymaps/david/rules.mk @@ -4,7 +4,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/davidrambo/keymap.c b/keyboards/planck/keymaps/davidrambo/keymap.c index b82791194421..fa524180fb44 100644 --- a/keyboards/planck/keymaps/davidrambo/keymap.c +++ b/keyboards/planck/keymaps/davidrambo/keymap.c @@ -1,19 +1,38 @@ +/* Copyright 2021 David Rambo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #include QMK_KEYBOARD_H #define A_BSPC LALT(KC_BSPC) #define A_LEFT LALT(KC_LEFT) #define A_RGHT LALT(KC_RGHT) #define C_TAB LCTL(KC_TAB) -#define GSL LGUI(S(KC_LEFT)) -#define GSR LGUI(S(KC_RGHT)) +#define CTLPGUP LCTL(KC_PGUP) // back one tab in Brave +#define CTLPGDN LCTL(KC_PGDN) // forward one tab in Brave #define G_TAB LGUI(KC_TAB) #define G_GRV LGUI(KC_GRV) #define SftEnt SFT_T(KC_ENT) #define NAV LT(2, KC_TAB) +#define RECT LCA_T(KC_DEL) // Ctrl+Alt is the basis for Rectangle WM shortcuts -#define _COLEMAK 0 -#define _SYMBOL 1 -#define _NAVIGATION 2 +enum custom_layers { + _COLEMAK, + _SYMBOL, + _NAVIGATION, +} //tapdance declarations enum { @@ -40,7 +59,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_GESC, KC_Q , KC_W , KC_F , KC_P , KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, NAV , KC_A , KC_R , KC_S , KC_T , KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, SftLck , KC_Z , KC_X , KC_C , KC_V , KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, SftEnt , - KC_DEL , KC_LGUI, KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + RECT , KC_LGUI, KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT ), /* Symbol @@ -49,7 +68,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+-------------+------+------+------+------+------| * | \| | ! | @ | # | $ | % | ^ | & | * | ( | ) | =+ | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | Home | End | ScUp | ScDn | BRMD | BRMU | -_ |Pg Up | | / | | + * | | Home | End | | | BRMD | BRMU | -_ |Pg Up | | / | | * |------+------+------+------+------+------+------+------+------+------+------+------| * | `~ | | | |Alt(Bk)| | |Pg Dn | Vol- | Vol+ | | * `-----------------------------------------------------------------------------------' @@ -58,15 +77,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LBRC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_RBRC, KC_BSLS, KC_EXLM, KC_AT , KC_HASH, KC_DLR , KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_EQL , _______, KC_HOME, KC_END , _______, _______, KC_BRMD, KC_BRMU, KC_MINS, KC_PGUP, _______, _______, _______, - KC_GRV, _______, _______, _______, A_BSPC , _______, _______, _______, KC_PGDN, KC_VOLD, KC_VOLU, KC_MUTE + _______, KC_GRV , _______, _______, _______ , _______, _______, _______, KC_PGDN, KC_VOLD, KC_VOLU, KC_MUTE ), /* Navigation*/ [_NAVIGATION] = LAYOUT_planck_grid( _______, _______, _______, _______, _______, _______, C_TAB , A_LEFT, KC_UP, A_RGHT , KC_DEL , _______, - _______, _______, _______, _______, _______, _______, GSL , KC_LEFT, KC_DOWN, KC_RGHT, GSR , _______, - _______, _______, _______, _______, _______, _______, G_TAB , KC_HOME, _______, KC_END, G_GRV , _______, + _______, _______, _______, _______, _______, _______, CTLPGUP, KC_LEFT, KC_DOWN, KC_RGHT, CTLPGDN, _______, + _______, _______, _______, _______, _______, _______, G_TAB , A_BSPC , KC_HOME, KC_END, G_GRV , _______, RESET , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) }; diff --git a/keyboards/planck/keymaps/dc/rules.mk b/keyboards/planck/keymaps/dc/rules.mk index 07da5f194420..384f8e088a36 100644 --- a/keyboards/planck/keymaps/dc/rules.mk +++ b/keyboards/planck/keymaps/dc/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/dear_vehicle_owner/keymap.c b/keyboards/planck/keymaps/dear_vehicle_owner/keymap.c index aec7bcdd7dc8..c25df20a5b87 100644 --- a/keyboards/planck/keymaps/dear_vehicle_owner/keymap.c +++ b/keyboards/planck/keymaps/dear_vehicle_owner/keymap.c @@ -263,7 +263,7 @@ uint16_t muse_counter = 0; uint8_t muse_offset = 70; uint16_t muse_tempo = 50; -bool encoder_update(bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (muse_mode) { if (IS_LAYER_ON(_RAISE)) { if (clockwise) { @@ -296,7 +296,7 @@ bool encoder_update(bool clockwise) { return true; } -void dip_switch_update_user(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: { #ifdef AUDIO_ENABLE @@ -325,6 +325,7 @@ void dip_switch_update_user(uint8_t index, bool active) { muse_mode = false; } } + return true; } void matrix_scan_user(void) { diff --git a/keyboards/planck/keymaps/default/config.h b/keyboards/planck/keymaps/default/config.h index 9020d2b9f882..464b7b29f8ce 100644 --- a/keyboards/planck/keymaps/default/config.h +++ b/keyboards/planck/keymaps/default/config.h @@ -1,13 +1,27 @@ +/* Copyright 2015-2021 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 . + */ + #pragma once #ifdef AUDIO_ENABLE - #define STARTUP_SONG SONG(PLANCK_SOUND) - // #define STARTUP_SONG SONG(NO_SOUND) +# define STARTUP_SONG SONG(PLANCK_SOUND) +// #define STARTUP_SONG SONG(NO_SOUND) - #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \ - SONG(COLEMAK_SOUND), \ - SONG(DVORAK_SOUND) \ - } +# define DEFAULT_LAYER_SONGS \ + { SONG(QWERTY_SOUND), SONG(COLEMAK_SOUND), SONG(DVORAK_SOUND) } #endif /* @@ -33,4 +47,3 @@ // Most tactile encoders have detents every 4 stages #define ENCODER_RESOLUTION 4 - diff --git a/keyboards/planck/keymaps/default/keymap.c b/keyboards/planck/keymaps/default/keymap.c index 304d320b69fd..7c787e0366a7 100644 --- a/keyboards/planck/keymaps/default/keymap.c +++ b/keyboards/planck/keymaps/default/keymap.c @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Jack Humbert +/* Copyright 2015-2021 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 @@ -256,7 +256,7 @@ uint16_t muse_counter = 0; uint8_t muse_offset = 70; uint16_t muse_tempo = 50; -bool encoder_update(bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (muse_mode) { if (IS_LAYER_ON(_RAISE)) { if (clockwise) { @@ -289,7 +289,7 @@ bool encoder_update(bool clockwise) { return true; } -void dip_switch_update_user(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: { #ifdef AUDIO_ENABLE @@ -318,6 +318,7 @@ void dip_switch_update_user(uint8_t index, bool active) { muse_mode = false; } } + return true; } void matrix_scan_user(void) { diff --git a/keyboards/planck/keymaps/deft/keymap.c b/keyboards/planck/keymaps/deft/keymap.c index 25a0a9f44603..d7d40f146bfb 100644 --- a/keyboards/planck/keymaps/deft/keymap.c +++ b/keyboards/planck/keymaps/deft/keymap.c @@ -133,6 +133,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } diff --git a/keyboards/planck/keymaps/dlaroe/rules.mk b/keyboards/planck/keymaps/dlaroe/rules.mk index 7ff90237a78d..7e80f0131226 100644 --- a/keyboards/planck/keymaps/dlaroe/rules.mk +++ b/keyboards/planck/keymaps/dlaroe/rules.mk @@ -4,7 +4,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/dr_notsokind/rules.mk b/keyboards/planck/keymaps/dr_notsokind/rules.mk index 91156b6b4659..311ee8ec111b 100644 --- a/keyboards/planck/keymaps/dr_notsokind/rules.mk +++ b/keyboards/planck/keymaps/dr_notsokind/rules.mk @@ -3,7 +3,7 @@ # change to "no" to disable the options, or define them in the makefile.mk in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/dsanchezseco/keymap.c b/keyboards/planck/keymaps/dsanchezseco/keymap.c index 9da2dce16396..901709429bd4 100644 --- a/keyboards/planck/keymaps/dsanchezseco/keymap.c +++ b/keyboards/planck/keymaps/dsanchezseco/keymap.c @@ -50,6 +50,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // eeconfig_init(); //} -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } diff --git a/keyboards/planck/keymaps/dvorak2space/rules.mk b/keyboards/planck/keymaps/dvorak2space/rules.mk index 59f9f1dff211..df48d1a71e67 100644 --- a/keyboards/planck/keymaps/dvorak2space/rules.mk +++ b/keyboards/planck/keymaps/dvorak2space/rules.mk @@ -1,5 +1,5 @@ OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) @@ -11,7 +11,6 @@ AUDIO_ENABLE = no # Audio output on port C6 UNICODE_ENABLE = no # Unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -API_SYSEX_ENABLE = no TAP_DANCE_ENABLE = yes # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE diff --git a/keyboards/planck/keymaps/dvz/config.h b/keyboards/planck/keymaps/dvz/config.h new file mode 100644 index 000000000000..5535c3ca1948 --- /dev/null +++ b/keyboards/planck/keymaps/dvz/config.h @@ -0,0 +1,73 @@ + /* Copyright 2021 Milan Düwel + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#ifdef AUDIO_ENABLE + #define STARTUP_SONG SONG(PLANCK_SOUND) + // #define STARTUP_SONG SONG(NO_SOUND) + + /*#define DEFAULT_LAYER_SONGS { + SONG(QWERTY_SOUND), \ + SONG(COLEMAK_SOUND), \ + SONG(DVORAK_SOUND) \ + }*/ + + #define PING_SOUND Q__NOTE(_A6), WD_NOTE(_E7) +#endif + +/* + * MIDI options + */ + +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ + +//#define MIDI_BASIC + +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +//#define MIDI_ADVANCED + +// Most tactile encoders have detents every 4 stages +#define ENCODER_RESOLUTION 4 + +#define COMBO_COUNT 4 + +#ifdef AUDIO_ENABLE + #define DAC_SAMPLE_MAX 65535/2 +#endif + +#define RGBLIGHT_LAYERS +#define RGBLIGHT_SAT_STEP 5 +#define RGBLIGHT_VAL_STEP 8 +#define RGBLIGHT_SLEEP +#define RGBLED_NUM 9 + +#undef RGBLIGHT_ANIMATIONS +#define RGBLIGHT_EFFECT_BREATHING +#define RGBLIGHT_EFFECT_TWINKLE +#define RGBLIGHT_EFFECT_KNIGHT +#define RGBLIGHT_EFFECT_STATIC_GRADIENT +#define RGBLIGHT_EFFECT_SNAKE +#define RGBLIGHT_EFFECT_RAINBOW_SWIRL + +#define RGBLIGHT_RAINBOW_SWIRL_RANGE 127 diff --git a/keyboards/planck/keymaps/dvz/keymap.c b/keyboards/planck/keymaps/dvz/keymap.c new file mode 100644 index 000000000000..f1d213b42cd4 --- /dev/null +++ b/keyboards/planck/keymaps/dvz/keymap.c @@ -0,0 +1,280 @@ +/* Copyright 2015-2017 Jack Humbert + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +#include "muse.h" +#include "keymap_german.h" + +enum combos { + AE, + OE, + UE, + SZ +}; + +const uint16_t PROGMEM ae_combo[] = {KC_A, KC_E, COMBO_END}; +const uint16_t PROGMEM oe_combo[] = {KC_O, KC_E, COMBO_END}; +const uint16_t PROGMEM ue_combo[] = {KC_U, KC_E, COMBO_END}; +const uint16_t PROGMEM sz_combo[] = {KC_S, DE_Z, COMBO_END}; + +combo_t key_combos[COMBO_COUNT] = { + [AE] = COMBO(ae_combo, DE_AE), + [OE] = COMBO(oe_combo, DE_OE), + [UE] = COMBO(ue_combo, DE_UE), + [SZ] = COMBO(sz_combo, DE_SS) +}; + +enum planck_layers { + _QWERTZ, + _NUMPD, + _LOWER, + _RAISE, + _ADJUST +}; + +enum planck_keycodes { + QWERTZ = SAFE_RANGE, + NUMPD, + SCROLL +}; + +bool scroll = false; + +#ifdef AUDIO_ENABLE + float ping_song[][2] = SONG(PING_SOUND); +#endif + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* QWERTZ + * ,-----------------------------------------------------------------------------------. + * | RtEnc| Q | W | E | R | T | Z | U | I | O | P | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | + | - | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | SfTab| Y | X | C | V | B | N | M | , | . | Up |SfEnt | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | GUI | NumPd| Alt | Num | Space | Sym | Del | Left | Down |Right | + * `-----------------------------------------------------------------------------------' + */ +[_QWERTZ] = LAYOUT_planck_grid( + SCROLL, KC_Q, KC_W, KC_E, KC_R, KC_T, DE_Z, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, DE_PLUS, DE_MINS, +LSFT_T(KC_TAB),DE_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_SFTENT, + KC_LCTL, KC_LGUI, NUMPD, KC_LALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT +), + +/* Numpad + * ,-----------------------------------------------------------------------------------. + * | | 7 | 8 | 9 | / | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | NLCK | 4 | 5 | 6 | - | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | 1 | 2 | 3 | + | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | . | 0 | , |NumOFF| Enter |Raise | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_NUMPD] = LAYOUT_planck_grid( + SFT_T(KC_PASTE),KC_P7, KC_P8, KC_P9, DE_SLSH, _______, _______, _______, _______, _______, _______, _______, + KC_NLCK, KC_P4, KC_P5, KC_P6, DE_MINS, _______, _______, _______, _______, _______, _______, _______, + _______, KC_P1, KC_P2, KC_P3, DE_PLUS, _______, _______, _______, _______, _______, _______, _______, + CTL_T(KC_COPY),KC_DOT, KC_P0, KC_COMM, NUMPD, KC_ENT, KC_ENT, _______, _______, _______, _______, _______ +), + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ^ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | F10 | F11 | F12 | F13 | F14 | F15 | | | |Pg Up | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | Home |Pg Dn | End | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = LAYOUT_planck_grid( + _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, _______, _______, + _______, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, _______, _______, _______, KC_PGUP, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END +), + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | | ! | " | § | $ | % | & | / | ( | ) | = | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ° | | | | | | | | ? | [ | ] | ' | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | \ | < | > | { | } | Vol+ | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | Brt- | Vol- | Brt+ | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = LAYOUT_planck_grid( + _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, DE_SLSH, DE_LPRN, DE_RPRN, DE_EQL, KC_BSPC, + KC_TILD, _______, _______, _______, _______, _______, DE_PIPE, DE_QUES, DE_LBRC, DE_RBRC, DE_QUOT, DE_HASH, + _______, _______, _______, _______, _______, DE_BSLS, DE_LABK, DE_RABK, DE_LCBR, DE_RCBR, KC_VOLU, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BRID, KC_VOLD, KC_BRIU +), + +/* Adjust (Lower + Raise) + * v------------------------RGB CONTROL--------------------v + * ,-----------------------------------------------------------------------------------. + * | | Reset|Debug | RGB |RGBMOD| HUE+ | HUE- | SAT+ | SAT- |BRGTH+|BRGTH-| Del | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |PowOff| |MUSmod|Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof|TermOn|TermOf| | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = LAYOUT_planck_grid( + _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL , + KC_POWER,_______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______, + _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +) + +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + /*case QWERTY: + if (record->event.pressed) { + print("mode just switched to qwerty and this is a huge string\n"); + set_single_persistent_default_layer(_QWERTY); + } + return false; + break; + case COLEMAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_COLEMAK); + } + return false; + break; + case DVORAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_DVORAK); + } + return false; + break;*/ + case NUMPD: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_SONG(ping_song); + #endif + if (layer_state_is(_NUMPD)) { + layer_off(_NUMPD); + } else { + layer_on(_NUMPD); + } + } + return false; + break; + case SCROLL: + if (record->event.pressed) { + scroll = true; + } else { + scroll = false; + } + default: + return true; + } +} + +void encoder_update(bool clockwise) { + if (layer_state_is(_NUMPD)){ + if (clockwise) { + tap_code(KC_RIGHT); + } else { + tap_code(KC_LEFT); + } + } else if (scroll) { //scroll fast mode + if (clockwise) { + tap_code(KC_PGDN); + } else { + tap_code(KC_PGUP); + } + } else { + if (clockwise) { + #ifdef MOUSEKEY_ENABLE + tap_code(KC_MS_WH_DOWN); + #else + tap_code(KC_PGDN); + #endif + } else { + #ifdef MOUSEKEY_ENABLE + tap_code(KC_MS_WH_UP); + #else + tap_code(KC_PGUP); + #endif + } + } +} + +void matrix_scan_user(void) { +} + +bool music_mask_user(uint16_t keycode) { + switch (keycode) { + case RAISE: + case LOWER: + return false; + default: + return true; + } +} +const rgblight_segment_t PROGMEM numbers_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {3, 4, HSV_GREEN} +); +const rgblight_segment_t PROGMEM symbols_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {2, 5, HSV_PURPLE} +); +const rgblight_segment_t PROGMEM numpad_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {5, 4, HSV_RED} // Light 4 LEDs, starting with LED 6 +); +const rgblight_segment_t PROGMEM config_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {2, 6, HSV_YELLOW} +); + +// Now define the array of layers. Later layers take precedence +const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( + numbers_layer, + symbols_layer, + numpad_layer, // Overrides other layers + config_layer +); + +void keyboard_post_init_user(void) { + // Enable the LED layers + rgblight_layers = my_rgb_layers; +} + +layer_state_t layer_state_set_user(layer_state_t state) { + if (!(layer_state_is(_NUMPD))) { + state = update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); + } + rgblight_set_layer_state(2, layer_state_cmp(state, 1)); + rgblight_set_layer_state(0, layer_state_cmp(state, 2)); + rgblight_set_layer_state(1, layer_state_cmp(state, 3)); + rgblight_set_layer_state(3, layer_state_cmp(state, 4)); + return state; +} diff --git a/keyboards/planck/keymaps/dvz/readme.md b/keyboards/planck/keymaps/dvz/readme.md new file mode 100644 index 000000000000..f4c1eb6ad81b --- /dev/null +++ b/keyboards/planck/keymaps/dvz/readme.md @@ -0,0 +1,11 @@ +# devilzmods's german Planck Layout + +- QWERTZ +- Lefthand Numpad layer (toggle) +- Standard Numbers (left) +- Symbols (right) +- Settings + +This layout feature "rolling umlauts". Typing ae, oe, ue, sz respectively gets recognized and spits out ä, ö, ü, ß. For this, your systems keyboard layout/language has to be set to DE/German + +The layout is also designed around a rotary encoder in the top left corner that switches between slow and fast scrolling in the default layer by pressing it down while turning. In the numpad layer it scrolls left/right and pressing it down holds shift to select while scrolling. diff --git a/keyboards/planck/keymaps/dvz/rules.mk b/keyboards/planck/keymaps/dvz/rules.mk new file mode 100644 index 000000000000..7216951bf964 --- /dev/null +++ b/keyboards/planck/keymaps/dvz/rules.mk @@ -0,0 +1,5 @@ +SRC += muse.c + +COMBO_ENABLE = yes +#VIA_ENABLE = yes +AUDIO_ENABLE = yes diff --git a/keyboards/planck/keymaps/dzobert/rules.mk b/keyboards/planck/keymaps/dzobert/rules.mk index 5dda6ad67ba1..d86b02fd1ce4 100644 --- a/keyboards/planck/keymaps/dzobert/rules.mk +++ b/keyboards/planck/keymaps/dzobert/rules.mk @@ -4,7 +4,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/eshesh2/keymap.c b/keyboards/planck/keymaps/eshesh2/keymap.c index 59768e15aa23..c13af1d3fccd 100644 --- a/keyboards/planck/keymaps/eshesh2/keymap.c +++ b/keyboards/planck/keymaps/eshesh2/keymap.c @@ -187,7 +187,7 @@ uint16_t muse_counter = 0; uint8_t muse_offset = 70; uint16_t muse_tempo = 50; -bool encoder_update(bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (muse_mode) { if (IS_LAYER_ON(_RAISE)) { if (clockwise) { diff --git a/keyboards/planck/keymaps/espynn/rules.mk b/keyboards/planck/keymaps/espynn/rules.mk index c4dc26dc2b3c..4c79e946e6b1 100644 --- a/keyboards/planck/keymaps/espynn/rules.mk +++ b/keyboards/planck/keymaps/espynn/rules.mk @@ -42,7 +42,7 @@ # change to "no" to disable the options, or define them in the makefile.mk in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/experimental/rules.mk b/keyboards/planck/keymaps/experimental/rules.mk index e5db05543699..0ede1a0c2d63 100644 --- a/keyboards/planck/keymaps/experimental/rules.mk +++ b/keyboards/planck/keymaps/experimental/rules.mk @@ -4,7 +4,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/fabian/keymap.c b/keyboards/planck/keymaps/fabian/keymap.c index 08ea09d8b030..9969d4337e1c 100644 --- a/keyboards/planck/keymaps/fabian/keymap.c +++ b/keyboards/planck/keymaps/fabian/keymap.c @@ -185,7 +185,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND); #endif -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } @@ -265,7 +265,7 @@ uint16_t muse_counter = 0; uint8_t muse_offset = 70; uint16_t muse_tempo = 50; -bool encoder_update(bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (muse_mode) { if (IS_LAYER_ON(_RAISE)) { if (clockwise) { @@ -291,7 +291,7 @@ bool encoder_update(bool clockwise) { } } -void dip_update(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: if (active) { diff --git a/keyboards/planck/keymaps/foreveranapple/config.h b/keyboards/planck/keymaps/foreveranapple/config.h new file mode 100644 index 000000000000..6e6d0f3ac731 --- /dev/null +++ b/keyboards/planck/keymaps/foreveranapple/config.h @@ -0,0 +1,46 @@ +/* Copyright 2015-2021 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 . + */ + +#pragma once + +#ifdef AUDIO_ENABLE +# define STARTUP_SONG SONG(PLANCK_SOUND) +// #define STARTUP_SONG SONG(NO_SOUND) + +# define DEFAULT_LAYER_SONGS \ + { SONG(QWERTY_SOUND), SONG(COLEMAK_SOUND), SONG(DVORAK_SOUND) } +#endif + +/* + * MIDI options + */ + +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ + +#define MIDI_BASIC + +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +//#define MIDI_ADVANCED + +// Most tactile encoders have detents every 4 stages +#define ENCODER_RESOLUTION 4 diff --git a/keyboards/planck/keymaps/foreveranapple/keymap.c b/keyboards/planck/keymaps/foreveranapple/keymap.c new file mode 100644 index 000000000000..3c5ab7cd0234 --- /dev/null +++ b/keyboards/planck/keymaps/foreveranapple/keymap.c @@ -0,0 +1,413 @@ +/* Copyright 2015-2021 Jack Humbert + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +#include "muse.h" + + +enum planck_layers { + _QWERTY, + _OSX, + _NIXQWERTY, + _COLEMAK, + _DVORAK, + _LOWER, + _RAISE, + _PLOVER, + _ADJUST +}; + +enum planck_keycodes { + QWERTY = SAFE_RANGE, + OSX, + NIXQWERTY, + COLEMAK, + DVORAK, + PLOVER, + BACKLIT, + EXT_PLV +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl |Brite | Alt | GUI |Raise | Space |Lower | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_QWERTY] = LAYOUT_planck_grid( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , + KC_LCTL, BACKLIT, KC_LALT, KC_LGUI, RAISE, KC_SPC, KC_SPC, LOWER, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT +), + +/* OSX - Qwerty + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | CMD |Brite | Alt | CTRL |Raise | Space |Lower | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_OSX] = LAYOUT_planck_grid( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , + KC_LGUI, BACKLIT, KC_LALT, KC_LCTL, RAISE, KC_SPC, KC_SPC, LOWER, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT +), + +/* Colemak + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Esc | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_COLEMAK] = LAYOUT_planck_grid( + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, + KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , + BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT +), + +/* Dvorak + * ,-----------------------------------------------------------------------------------. + * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Esc | A | O | E | U | I | D | H | T | N | S | / | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_DVORAK] = LAYOUT_planck_grid( + KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, + KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, + KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , + BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT +), + +/* NixQwerty + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl |Brite | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_NIXQWERTY] = LAYOUT_planck_grid( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , + KC_LCTL, BACKLIT, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT +), + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = LAYOUT_planck_grid( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY +), + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |Pg Up |Pg Dn | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = LAYOUT_planck_grid( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY +), + +/* Plover layer (http://opensteno.org) + * ,-----------------------------------------------------------------------------------. + * | # | # | # | # | # | # | # | # | # | # | # | # | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | S | T | P | H | * | * | F | P | L | T | D | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | S | K | W | R | * | * | R | B | G | S | Z | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Exit | | | A | O | | E | U | | | | + * `-----------------------------------------------------------------------------------' + */ +[_PLOVER] = LAYOUT_planck_grid( + KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 , + XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, + XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX +), + +/* Adjust (Lower + Raise) + * v------------------------RGB CONTROL--------------------v + * ,-----------------------------------------------------------------------------------. + * | | Reset|Debug | RGB |RGBMOD| HUE+ | HUE- | SAT+ | SAT- |BRGTH+|BRGTH-| Del | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | |MUSmod|Aud on|Audoff|AGnorm|AGswap|Qwerty|NixQty| OSX |Plover|Colemk| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof|TermOn|TermOf| | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = LAYOUT_planck_grid( + _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL, + _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, NIXQWERTY, OSX, PLOVER, COLEMAK, + _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, DVORAK, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +) + +}; + +#ifdef AUDIO_ENABLE + float plover_song[][2] = SONG(PLOVER_SOUND); + float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND); +#endif + +layer_state_t layer_state_set_user(layer_state_t state) { + return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + print("mode just switched to qwerty and this is a huge string\n"); + set_single_persistent_default_layer(_QWERTY); + } + return false; + break; + case OSX: + if (record->event.pressed) { + set_single_persistent_default_layer(_OSX); + #ifdef AUDIO_ENABLE + stop_all_notes(); + PLAY_SONG(plover_song); + #endif + } + return false; + break; + case NIXQWERTY: + if (record->event.pressed) { + set_single_persistent_default_layer(_NIXQWERTY); + #ifdef AUDIO_ENABLE + stop_all_notes(); + PLAY_SONG(plover_song); + #endif + } + return false; + break; + case COLEMAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_COLEMAK); + } + return false; + break; + case DVORAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_DVORAK); + } + return false; + break; + case BACKLIT: + if (record->event.pressed) { + register_code(KC_RSFT); + #ifdef BACKLIGHT_ENABLE + backlight_step(); + #endif + #ifdef KEYBOARD_planck_rev5 + writePinLow(E6); + #endif + } else { + unregister_code(KC_RSFT); + #ifdef KEYBOARD_planck_rev5 + writePinHigh(E6); + #endif + } + return false; + break; + case PLOVER: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + stop_all_notes(); + PLAY_SONG(plover_song); + #endif + layer_off(_RAISE); + layer_off(_LOWER); + layer_off(_ADJUST); + layer_on(_PLOVER); + if (!eeconfig_is_enabled()) { + eeconfig_init(); + } + keymap_config.raw = eeconfig_read_keymap(); + keymap_config.nkro = 1; + eeconfig_update_keymap(keymap_config.raw); + } + return false; + break; + case EXT_PLV: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_SONG(plover_gb_song); + #endif + layer_off(_PLOVER); + } + return false; + break; + } + return true; +} + +bool muse_mode = false; +uint8_t last_muse_note = 0; +uint16_t muse_counter = 0; +uint8_t muse_offset = 70; +uint16_t muse_tempo = 50; + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (muse_mode) { + if (IS_LAYER_ON(_RAISE)) { + if (clockwise) { + muse_offset++; + } else { + muse_offset--; + } + } else { + if (clockwise) { + muse_tempo+=1; + } else { + muse_tempo-=1; + } + } + } else { + if (clockwise) { + #ifdef MOUSEKEY_ENABLE + tap_code(KC_MS_WH_DOWN); + #else + tap_code(KC_PGDN); + #endif + } else { + #ifdef MOUSEKEY_ENABLE + tap_code(KC_MS_WH_UP); + #else + tap_code(KC_PGUP); + #endif + } + } + return true; +} + +bool dip_switch_update_user(uint8_t index, bool active) { + switch (index) { + case 0: { +#ifdef AUDIO_ENABLE + static bool play_sound = false; +#endif + if (active) { +#ifdef AUDIO_ENABLE + if (play_sound) { PLAY_SONG(plover_song); } +#endif + layer_on(_ADJUST); + } else { +#ifdef AUDIO_ENABLE + if (play_sound) { PLAY_SONG(plover_gb_song); } +#endif + layer_off(_ADJUST); + } +#ifdef AUDIO_ENABLE + play_sound = true; +#endif + break; + } + case 1: + if (active) { + muse_mode = true; + } else { + muse_mode = false; + } + } + return true; +} + +void matrix_scan_user(void) { +#ifdef AUDIO_ENABLE + if (muse_mode) { + if (muse_counter == 0) { + uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()]; + if (muse_note != last_muse_note) { + stop_note(compute_freq_for_midi_note(last_muse_note)); + play_note(compute_freq_for_midi_note(muse_note), 0xF); + last_muse_note = muse_note; + } + } + muse_counter = (muse_counter + 1) % muse_tempo; + } else { + if (muse_counter) { + stop_all_notes(); + muse_counter = 0; + } + } +#endif +} + +bool music_mask_user(uint16_t keycode) { + switch (keycode) { + case RAISE: + case LOWER: + return false; + default: + return true; + } +} diff --git a/keyboards/planck/keymaps/foreveranapple/readme.md b/keyboards/planck/keymaps/foreveranapple/readme.md new file mode 100644 index 000000000000..ddaa58ea3693 --- /dev/null +++ b/keyboards/planck/keymaps/foreveranapple/readme.md @@ -0,0 +1,3 @@ +# The Almost Default Planck Layout + +Simple changes right now, just some key shifts. Nothing major. \ No newline at end of file diff --git a/keyboards/planck/keymaps/foreveranapple/rules.mk b/keyboards/planck/keymaps/foreveranapple/rules.mk new file mode 100644 index 000000000000..87df38d49e74 --- /dev/null +++ b/keyboards/planck/keymaps/foreveranapple/rules.mk @@ -0,0 +1,2 @@ +SRC += muse.c +AUDIO_ENABLED = yes \ No newline at end of file diff --git a/keyboards/planck/keymaps/gabriel/rules.mk b/keyboards/planck/keymaps/gabriel/rules.mk index 5dda6ad67ba1..d86b02fd1ce4 100644 --- a/keyboards/planck/keymaps/gabriel/rules.mk +++ b/keyboards/planck/keymaps/gabriel/rules.mk @@ -4,7 +4,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/gitdrik/keymap.c b/keyboards/planck/keymaps/gitdrik/keymap.c index 9cc5f7517fd9..58db078281b9 100644 --- a/keyboards/planck/keymaps/gitdrik/keymap.c +++ b/keyboards/planck/keymaps/gitdrik/keymap.c @@ -137,7 +137,7 @@ uint16_t muse_counter = 0; uint8_t muse_offset = 70; uint16_t muse_tempo = 50; -bool encoder_update(bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (muse_mode) { if (IS_LAYER_ON(_RIGHT)) { if (clockwise) { @@ -170,7 +170,7 @@ bool encoder_update(bool clockwise) { return true; } -void dip_switch_update_user(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: { #ifdef AUDIO_ENABLE @@ -199,6 +199,7 @@ void dip_switch_update_user(uint8_t index, bool active) { muse_mode = false; } } + return true; } void matrix_scan_user(void) { diff --git a/keyboards/planck/keymaps/grant24/keymap.c b/keyboards/planck/keymaps/grant24/keymap.c index 7ed9a794e490..a82403d1973f 100644 --- a/keyboards/planck/keymaps/grant24/keymap.c +++ b/keyboards/planck/keymaps/grant24/keymap.c @@ -279,7 +279,7 @@ uint16_t muse_counter = 0; uint8_t muse_offset = 70; uint16_t muse_tempo = 50; -bool encoder_update(bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (muse_mode) { if (IS_LAYER_ON(_RAISE)) { if (clockwise) { @@ -312,7 +312,7 @@ bool encoder_update(bool clockwise) { return true; } -void dip_switch_update_user(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: { #ifdef AUDIO_ENABLE @@ -341,6 +341,7 @@ void dip_switch_update_user(uint8_t index, bool active) { muse_mode = false; } } + return true; } void matrix_scan_user(void) { diff --git a/keyboards/planck/keymaps/gunp/rules.mk b/keyboards/planck/keymaps/gunp/rules.mk index fa936c03dc58..40d3ef325486 100644 --- a/keyboards/planck/keymaps/gunp/rules.mk +++ b/keyboards/planck/keymaps/gunp/rules.mk @@ -1,5 +1,5 @@ # Build Options -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug diff --git a/keyboards/planck/keymaps/hiea/rules.mk b/keyboards/planck/keymaps/hiea/rules.mk index a722766296dc..ea9abc2a80df 100644 --- a/keyboards/planck/keymaps/hiea/rules.mk +++ b/keyboards/planck/keymaps/hiea/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically -BOOTMAGIC_ENABLE = no # virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # mouse keys(+4700) EXTRAKEY_ENABLE = no # audio control and System control(+450) CONSOLE_ENABLE = no # console for debug(+400) diff --git a/keyboards/planck/keymaps/hieax/rules.mk b/keyboards/planck/keymaps/hieax/rules.mk index a722766296dc..ea9abc2a80df 100644 --- a/keyboards/planck/keymaps/hieax/rules.mk +++ b/keyboards/planck/keymaps/hieax/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically -BOOTMAGIC_ENABLE = no # virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # mouse keys(+4700) EXTRAKEY_ENABLE = no # audio control and System control(+450) CONSOLE_ENABLE = no # console for debug(+400) diff --git a/keyboards/planck/keymaps/hvp/keymap.c b/keyboards/planck/keymaps/hvp/keymap.c index 1af3771ae05e..95d3646dfadf 100644 --- a/keyboards/planck/keymaps/hvp/keymap.c +++ b/keyboards/planck/keymaps/hvp/keymap.c @@ -89,7 +89,7 @@ uint16_t muse_counter = 0; uint8_t muse_offset = 70; uint16_t muse_tempo = 50; -bool encoder_update(bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (muse_mode) { if (IS_LAYER_ON(_RAISE)) { if (clockwise) { @@ -122,7 +122,7 @@ bool encoder_update(bool clockwise) { return true; } -void dip_switch_update_user(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: { #ifdef AUDIO_ENABLE @@ -151,6 +151,7 @@ void dip_switch_update_user(uint8_t index, bool active) { muse_mode = false; } } + return true; } void matrix_scan_user(void) { diff --git a/keyboards/planck/keymaps/impossible/rules.mk b/keyboards/planck/keymaps/impossible/rules.mk index 1e877943d9b8..10de3bfc0359 100644 --- a/keyboards/planck/keymaps/impossible/rules.mk +++ b/keyboards/planck/keymaps/impossible/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/ishtob/rule.mk b/keyboards/planck/keymaps/ishtob/rule.mk deleted file mode 100755 index c8ba0c919e4e..000000000000 --- a/keyboards/planck/keymaps/ishtob/rule.mk +++ /dev/null @@ -1,18 +0,0 @@ -# Build Options -# comment out to disable the options. -# -BACKLIGHT_ENABLE = no -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = yes # Console for debug -COMMAND_ENABLE = yes # Commands for debug and configuration -#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend -NKRO_ENABLE = yes # USB Nkey Rollover -CUSTOM_MATRIX = yes # Custom matrix file -AUDIO_ENABLE = yes -ENCODER_ENABLE = yes - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - diff --git a/keyboards/planck/keymaps/ishtob/rules.mk b/keyboards/planck/keymaps/ishtob/rules.mk new file mode 100644 index 000000000000..62ed57bb93b2 --- /dev/null +++ b/keyboards/planck/keymaps/ishtob/rules.mk @@ -0,0 +1,18 @@ +# Build Options +# comment out to disable the options. +# +BACKLIGHT_ENABLE = no +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 = yes # Commands for debug and configuration +#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend +NKRO_ENABLE = yes # USB Nkey Rollover +CUSTOM_MATRIX = yes # Custom matrix file +AUDIO_ENABLE = yes +ENCODER_ENABLE = yes + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + diff --git a/keyboards/planck/keymaps/jacob/rules.mk b/keyboards/planck/keymaps/jacob/rules.mk index 5dda6ad67ba1..d86b02fd1ce4 100644 --- a/keyboards/planck/keymaps/jacob/rules.mk +++ b/keyboards/planck/keymaps/jacob/rules.mk @@ -4,7 +4,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/jasperla/keymap.c b/keyboards/planck/keymaps/jasperla/keymap.c index b9eb72b073c8..f51af78b5282 100644 --- a/keyboards/planck/keymaps/jasperla/keymap.c +++ b/keyboards/planck/keymaps/jasperla/keymap.c @@ -131,6 +131,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } diff --git a/keyboards/planck/keymaps/jdelkins/config.h b/keyboards/planck/keymaps/jdelkins/config.h index e09fafc663bf..67ebf4695581 100644 --- a/keyboards/planck/keymaps/jdelkins/config.h +++ b/keyboards/planck/keymaps/jdelkins/config.h @@ -53,6 +53,9 @@ // Most tactile encoders have detents every 4 stages #define ENCODER_RESOLUTION 4 -#define AUTO_SHIFT_TIMEOUT 165 +#define AUTO_SHIFT_TIMEOUT 160 +#define AUTO_SHIFT_REPEAT +#define RGBLIGHT_LAYERS #define LEADER_TIMEOUT 400 #define LEADER_PER_KEY_TIMING +#define USB_MAX_POWER_CONSUMPTION 100 diff --git a/keyboards/planck/keymaps/jdelkins/keymap.c b/keyboards/planck/keymaps/jdelkins/keymap.c index 3d109e9e8cff..af438f704e75 100644 --- a/keyboards/planck/keymaps/jdelkins/keymap.c +++ b/keyboards/planck/keymaps/jdelkins/keymap.c @@ -122,47 +122,47 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TD(TD_LDCTL), MO(_ADJUST), MY_GUI, MY_ALT, MY_BSPC, MY_SPC, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT ), -[_GAME] = LAYOUT( +/* Same as _QWERTY but disable wutoshift */ +[_RPT] = LAYOUT( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, KC_NO, KC_LALT, RAISE, KC_SPC, KC_SPC, _______, _______, _______, _______ -), - -[_RAISE] = LAYOUT( - KC_ESC, _______, FW_WRD, KB_EOL, _______, _______, KB_COPY, KC_PGUP, _______, KC_LPRN, KC_RPRN, KC_MINS, - _______, KB_BOL, _______, KC_PGDN, _______, TD(TD_G), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, KC_BSLS, - _______, _______, KC_DEL, _______, KB_PASTE, BK_WRD, _______, _______, _______, _______, _______, KC_CALC, - _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), -/* Same as _QWERTY but disable autoshift */ -[_RPT] = LAYOUT( +[_GAME] = LAYOUT( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, KC_BSPC, KC_SPC, _______, _______, _______, _______ + _______, KC_NO, KC_LALT, RAISE, KC_SPC, KC_SPC, _______, _______, _______, _______ +), + +[_RAISE] = LAYOUT( + KC_ESC, _______, FW_WRD, KB_EOL, TG(_RPT), _______, KB_COPY, KC_PGUP, _______, KC_LPRN, KC_RPRN, KC_MINS, + KC_RCTL, KB_BOL, _______, KC_PGDN, _______, TD(TD_G), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, KC_BSLS, + _______, _______, KC_DEL, KC_CAPS, KB_PASTE, BK_WRD, _______, _______, _______, _______, _______, MY_CALC, + KC_RCTL, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END ), [_KP] = LAYOUT( - KC_NUMLOCK, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14, KC_7, KC_8, KC_9, KC_MINS, KC_EQL, + KC_ESC, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14, KC_7, KC_8, KC_9, KC_MINS, KC_EQL, _______, KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX, XXXXXXX, KC_4, KC_5, KC_6, KC_ASTR, _______, - _______, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, XXXXXXX, KC_1, KC_2, KC_3, KC_SLSH, _______, + KC_NUMLOCK, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, XXXXXXX, KC_1, KC_2, KC_3, KC_SLSH, _______, _______, _______, _______, _______, _______, _______, KC_0, KC_DOT, KC_PLUS, KC_END ), [_LOWER] = LAYOUT( - KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LBRC, KC_RBRC, KC_EQL, - _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LCBR, KC_RCBR, KC_PIPE, - _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_END, KC_MPLY, + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LCBR, KC_RCBR, KC_EQL, + _______, _______, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, _______, _______, _______, KC_LBRC, KC_RBRC, KC_PIPE, + _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, _______, _______, KC_HOME, KC_END, KC_MPLY, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT ), [_ADJUST] = LAYOUT( _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL, - _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______, - _______, RGB_TOG, KB_MAKE, KB_FLSH, KB_VRSN, KB_BOOT, _______, TG_SYS, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + KC_RCTL, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, TG(_KP), KC_BRID, KC_BRIU, KC_MUTE, + _______, RGB_TOG, KB_MAKE, KB_FLSH, KB_VRSN, KB_BOOT, _______, TG_SYS, _______, _______, _______, KC_MPLY, + KC_RCTL, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT ) /* [_ADJUST] = LAYOUT( */ @@ -174,12 +174,85 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; +/* plwnck rev6 RGB layout: + * ---------------------------------- + * | 6 5 4 3 | + * | 0 | + * | 7 8 1 2 | + * ---------------------------------- + */ + +const rgblight_segment_t PROGMEM rpt_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {1, 2, HSV_PINK}, + {7, 2, HSV_PINK} +); + +const rgblight_segment_t PROGMEM game_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {2, 2, HSV_RED}, + {6, 2, HSV_RED} +); + +const rgblight_segment_t PROGMEM raise_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {3, 4, HSV_GREEN} +); + +const rgblight_segment_t PROGMEM kp_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {1, 8, HSV_ORANGE} +); + +const rgblight_segment_t PROGMEM lower_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {3, 4, HSV_BLUE} +); + +const rgblight_segment_t PROGMEM adjust_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {1, 8, HSV_BLUE} +); + +const rgblight_segment_t PROGMEM capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {1, 1, HSV_WHITE}, + {8, 1, HSV_WHITE} +); + +const rgblight_segment_t PROGMEM numlock_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {6, 2, HSV_PURPLE} +); + +enum rgb_layer_index { + L_RPT, + L_GAME, + L_RAISE, + L_KP, + L_LOWER, + L_ADJUST, + L_CAPSLOCK, + L_NUMLOCK +}; + +const rgblight_segment_t * const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( + [L_RPT] = rpt_layer, + [L_GAME] = game_layer, + [L_RAISE] = raise_layer, + [L_KP] = kp_layer, + [L_LOWER] = lower_layer, + [L_ADJUST] = adjust_layer, + [L_CAPSLOCK] = capslock_layer, + [L_NUMLOCK] = numlock_layer +); + #ifdef AUDIO_ENABLE float plover_song[][2] = SONG(PLOVER_SOUND); float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND); #endif layer_state_t layer_state_set_keymap(layer_state_t state) { + rgblight_set_layer_state(L_RPT, layer_state_cmp(state, _RPT)); + rgblight_set_layer_state(L_GAME, layer_state_cmp(state, _GAME)); + rgblight_set_layer_state(L_RAISE, layer_state_cmp(state, _RAISE)); + rgblight_set_layer_state(L_KP, layer_state_cmp(state, _KP)); + rgblight_set_layer_state(L_LOWER, layer_state_cmp(state, _LOWER)); + rgblight_set_layer_state(L_ADJUST, layer_state_cmp(state, _ADJUST)); + rgblight_set_layer_state(L_CAPSLOCK, CAPSLOCK_ON); + rgblight_set_layer_state(L_NUMLOCK, NUMLOCK_ON && layer_state_cmp(state, _KP)); if (layer_state_cmp(state, _GAME) || layer_state_cmp(state, _RPT)) autoshift_disable(); else @@ -187,6 +260,12 @@ layer_state_t layer_state_set_keymap(layer_state_t state) { return update_tri_layer_state(state, _KP, _RAISE, _LOWER); } +bool led_update_user(led_t led_state) { + rgblight_set_layer_state(L_CAPSLOCK, led_state.caps_lock); + rgblight_set_layer_state(L_NUMLOCK, led_state.num_lock && layer_state_is(_KP)); + return true; +} + bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { bool rc = true; static bool bspc_del = false; @@ -259,7 +338,7 @@ uint16_t muse_counter = 0; uint8_t muse_offset = 70; uint16_t muse_tempo = 50; -void encoder_update(bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (muse_mode) { if (IS_LAYER_ON(_RAISE)) { if (clockwise) { @@ -289,9 +368,10 @@ void encoder_update(bool clockwise) { #endif } } + return true; } -void dip_switch_update_user(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: { #ifdef AUDIO_ENABLE @@ -320,9 +400,11 @@ void dip_switch_update_user(uint8_t index, bool active) { muse_mode = false; } } + return true; } void keyboard_post_init_keymap(void) { + rgblight_layers = my_rgb_layers; bspc_timer = 0; } @@ -409,6 +491,11 @@ void matrix_scan_keymap(void) { SEQ_ONE_KEY(KC_C) { tap_code16(C(KC_C)); } + // neovim: terminal escape + SEQ_ONE_KEY(KC_QUOT) { + tap_code16(C(KC_BSLS)); + tap_code16(C(KC_N)); + } } } diff --git a/keyboards/planck/keymaps/jeebak/rules.mk b/keyboards/planck/keymaps/jeebak/rules.mk index 1e877943d9b8..10de3bfc0359 100644 --- a/keyboards/planck/keymaps/jeebak/rules.mk +++ b/keyboards/planck/keymaps/jeebak/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/jetpacktuxedo/keymap.c b/keyboards/planck/keymaps/jetpacktuxedo/keymap.c index 3e195671a8a5..2e7d8e876b13 100644 --- a/keyboards/planck/keymaps/jetpacktuxedo/keymap.c +++ b/keyboards/planck/keymaps/jetpacktuxedo/keymap.c @@ -137,7 +137,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND); #endif -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } @@ -190,7 +190,7 @@ uint16_t muse_tempo = 20; extern float clicky_rand; -bool encoder_update(bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (is_clicky_on()) { if (IS_LAYER_ON(_RAISE)) { if (clockwise) { @@ -241,7 +241,7 @@ bool encoder_update(bool clockwise) { return true; } -void dip_update(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: if (active) { @@ -273,6 +273,7 @@ void dip_update(uint8_t index, bool active) { clicky_off(); } } + return true; } void matrix_scan_user(void) { diff --git a/keyboards/planck/keymaps/jhenahan/rules.mk b/keyboards/planck/keymaps/jhenahan/rules.mk index f8d1f0d8f302..23ce0b2fb43b 100644 --- a/keyboards/planck/keymaps/jhenahan/rules.mk +++ b/keyboards/planck/keymaps/jhenahan/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/jimmysjolund/config.h b/keyboards/planck/keymaps/jimmysjolund/config.h new file mode 100644 index 000000000000..5606510d4981 --- /dev/null +++ b/keyboards/planck/keymaps/jimmysjolund/config.h @@ -0,0 +1,49 @@ +/* Copyright 2021 Jimmy Sjölund + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#ifdef AUDIO_ENABLE + #define STARTUP_SONG SONG(PLANCK_SOUND) + // #define STARTUP_SONG SONG(NO_SOUND) + + #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \ + SONG(COLEMAK_SOUND), \ + SONG(DVORAK_SOUND) \ + } +#endif + +/* + * MIDI options + */ + +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ + +#define MIDI_BASIC + +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +//#define MIDI_ADVANCED + +// Most tactile encoders have detents every 4 stages +#define ENCODER_RESOLUTION 4 + diff --git a/keyboards/planck/keymaps/jimmysjolund/keymap.c b/keyboards/planck/keymaps/jimmysjolund/keymap.c new file mode 100644 index 000000000000..6b89b99540b6 --- /dev/null +++ b/keyboards/planck/keymaps/jimmysjolund/keymap.c @@ -0,0 +1,367 @@ +/* Copyright 2015-2017 Jack Humbert + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +#include "muse.h" + + +enum planck_layers { + _QWERTY, + _COLEMAK, + _DVORAK, + _LOWER, + _RAISE, + _PLOVER, + _ADJUST +}; + +enum planck_keycodes { + QWERTY = SAFE_RANGE, + COLEMAK, + DVORAK, + PLOVER, + BACKLIT, + EXT_PLV +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty - Original + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +/* Qwerty - jimmysjolund 2021-09-22 + * ,-----------------------------------------------------------------------------------. + * | Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Tab | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Shift | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Del | Ctrl | GUI | Alt |Lower |Raise |Enter |Space |AltGr | Down | Up |Enter | + * `-----------------------------------------------------------------------------------' + */ + +[_QWERTY] = LAYOUT_planck_grid( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_DEL, KC_LCTL, KC_LGUI, KC_LALT, LOWER, RAISE, KC_ENT, KC_SPC, KC_ALGR, KC_DOWN, KC_UP, KC_ENT +), + +/* Colemak Original + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +/* Colemak jimmysjolund + * ,-----------------------------------------------------------------------------------. + * | Esc | Q | W | F | P | G | J | L | U | Y | ; | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Tab | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Shift | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Del | Ctrl | GUI | Alt |Lower |Raise |Enter |Space |AltGr | Down | Up |Enter | + * `-----------------------------------------------------------------------------------' + */ +[_COLEMAK] = LAYOUT_planck_grid( + KC_ESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, + KC_TAB, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_DEL, KC_LCTL, KC_LGUI, KC_LALT, LOWER, RAISE, KC_ENT, KC_SPC, KC_ALGR, KC_DOWN, KC_UP, KC_ENT +), + +/* Dvorak + * ,-----------------------------------------------------------------------------------. + * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | O | E | U | I | D | H | T | N | S | / | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_DVORAK] = LAYOUT_planck_grid( + KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, + KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, + KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , + BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT +), + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |Pg Up |Pg Dn | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = LAYOUT_planck_grid( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT +), + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = LAYOUT_planck_grid( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY +), + + +/* Plover layer (http://opensteno.org) + * ,-----------------------------------------------------------------------------------. + * | # | # | # | # | # | # | # | # | # | # | # | # | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | S | T | P | H | * | * | F | P | L | T | D | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | S | K | W | R | * | * | R | B | G | S | Z | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Exit | | | A | O | | E | U | | | | + * `-----------------------------------------------------------------------------------' + */ +[_PLOVER] = LAYOUT_planck_grid( + KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 , + XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, + XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX +), + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | | Reset| | | | | | | | | | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = LAYOUT_planck_grid( + _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL , + _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______, + _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +) + +}; + +#ifdef AUDIO_ENABLE + float plover_song[][2] = SONG(PLOVER_SOUND); + float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND); +#endif + +layer_state_t layer_state_set_user(layer_state_t state) { + return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + print("mode just switched to qwerty and this is a huge string\n"); + set_single_persistent_default_layer(_QWERTY); + } + return false; + break; + case COLEMAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_COLEMAK); + } + return false; + break; + case DVORAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_DVORAK); + } + return false; + break; + case BACKLIT: + if (record->event.pressed) { + register_code(KC_RSFT); + #ifdef BACKLIGHT_ENABLE + backlight_step(); + #endif + #ifdef KEYBOARD_planck_rev5 + PORTE &= ~(1<<6); + #endif + } else { + unregister_code(KC_RSFT); + #ifdef KEYBOARD_planck_rev5 + PORTE |= (1<<6); + #endif + } + return false; + break; + case PLOVER: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + stop_all_notes(); + PLAY_SONG(plover_song); + #endif + layer_off(_RAISE); + layer_off(_LOWER); + layer_off(_ADJUST); + layer_on(_PLOVER); + if (!eeconfig_is_enabled()) { + eeconfig_init(); + } + keymap_config.raw = eeconfig_read_keymap(); + keymap_config.nkro = 1; + eeconfig_update_keymap(keymap_config.raw); + } + return false; + break; + case EXT_PLV: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_SONG(plover_gb_song); + #endif + layer_off(_PLOVER); + } + return false; + break; + } + return true; +} + +bool muse_mode = false; +uint8_t last_muse_note = 0; +uint16_t muse_counter = 0; +uint8_t muse_offset = 70; +uint16_t muse_tempo = 50; + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (muse_mode) { + if (IS_LAYER_ON(_RAISE)) { + if (clockwise) { + muse_offset++; + } else { + muse_offset--; + } + } else { + if (clockwise) { + muse_tempo+=1; + } else { + muse_tempo-=1; + } + } + } else { + if (clockwise) { + #ifdef MOUSEKEY_ENABLE + tap_code(KC_MS_WH_DOWN); + #else + tap_code(KC_PGDN); + #endif + } else { + #ifdef MOUSEKEY_ENABLE + tap_code(KC_MS_WH_UP); + #else + tap_code(KC_PGUP); + #endif + } + } + return false; +} + +bool dip_update_user(uint8_t index, bool active) { + switch (index) { + case 0: + if (active) { + #ifdef AUDIO_ENABLE + PLAY_SONG(plover_song); + #endif + layer_on(_ADJUST); + } else { + #ifdef AUDIO_ENABLE + PLAY_SONG(plover_gb_song); + #endif + layer_off(_ADJUST); + } + break; + case 1: + if (active) { + muse_mode = true; + } else { + muse_mode = false; + #ifdef AUDIO_ENABLE + stop_all_notes(); + #endif + } + } + return false; +} + +void matrix_scan_user(void) { + #ifdef AUDIO_ENABLE + if (muse_mode) { + if (muse_counter == 0) { + uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()]; + if (muse_note != last_muse_note) { + stop_note(compute_freq_for_midi_note(last_muse_note)); + play_note(compute_freq_for_midi_note(muse_note), 0xF); + last_muse_note = muse_note; + } + } + muse_counter = (muse_counter + 1) % muse_tempo; + } + #endif +} + +bool music_mask_user(uint16_t keycode) { + switch (keycode) { + case RAISE: + case LOWER: + return false; + default: + return true; + } +} diff --git a/keyboards/planck/keymaps/jimmysjolund/readme.md b/keyboards/planck/keymaps/jimmysjolund/readme.md new file mode 100644 index 000000000000..de9680b49851 --- /dev/null +++ b/keyboards/planck/keymaps/jimmysjolund/readme.md @@ -0,0 +1,2 @@ +# The Default Planck Layout + diff --git a/keyboards/planck/keymaps/jimmysjolund/rules.mk b/keyboards/planck/keymaps/jimmysjolund/rules.mk new file mode 100644 index 000000000000..dcf16bef3994 --- /dev/null +++ b/keyboards/planck/keymaps/jimmysjolund/rules.mk @@ -0,0 +1 @@ +SRC += muse.c diff --git a/keyboards/planck/keymaps/joe/rules.mk b/keyboards/planck/keymaps/joe/rules.mk index 1e877943d9b8..10de3bfc0359 100644 --- a/keyboards/planck/keymaps/joe/rules.mk +++ b/keyboards/planck/keymaps/joe/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/johannes/rules.mk b/keyboards/planck/keymaps/johannes/rules.mk index a31025bc33d5..e3a405f494e9 100644 --- a/keyboards/planck/keymaps/johannes/rules.mk +++ b/keyboards/planck/keymaps/johannes/rules.mk @@ -4,7 +4,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/jweickm/config.h b/keyboards/planck/keymaps/jweickm/config.h new file mode 100644 index 000000000000..3b34ddf832f2 --- /dev/null +++ b/keyboards/planck/keymaps/jweickm/config.h @@ -0,0 +1,69 @@ +/* + * Copyright 2018 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 . + */ +#pragma once + +#ifdef AUDIO_ENABLE + #define STARTUP_SONG SONG(PLANCK_SOUND) + // #define STARTUP_SONG SONG(NO_SOUND) + + #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \ + SONG(COLEMAK_SOUND), \ + SONG(DVORAK_SOUND), \ + SONG(WORKMAN_SOUND), \ + SONG(PLOVER_SOUND), \ + SONG(STARTUP_SOUND), \ + SONG(PREONIC_SOUND), \ + SONG(GOODBYE_SOUND), \ + } +#endif + +/* + * MIDI options + */ + +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ + +#define MIDI_BASIC + +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +//#define MIDI_ADVANCED + + +// Most tactile encoders have detents every 4 stages +#define ENCODER_RESOLUTION 4 + +// settings for HOME ROW MODS +#define TAPPING_TERM 160 // 200 ms is the default value +#define TAPPING_TERM_PER_KEY +//#define PERMISSIVE_HOLD +#define IGNORE_MOD_TAP_INTERRUPT +#define TAPPING_FORCE_HOLD_PER_KEY + +// settings for LEADER key +#define LEADER_PER_KEY_TIMING +#define LEADER_TIMEOUT 250 +#define LEADER_NO_TIMEOUT + +#define RGBLIGHT_SLEEP // RGB lighting will switch off when the host goes to sleep +#define RGBLIGHT_LAYERS diff --git a/keyboards/planck/keymaps/jweickm/keymap.c b/keyboards/planck/keymaps/jweickm/keymap.c new file mode 100644 index 000000000000..02138a876cc3 --- /dev/null +++ b/keyboards/planck/keymaps/jweickm/keymap.c @@ -0,0 +1,1131 @@ +/* Copyright 2015-2017 Jack Humbert + * Copyright 2021 Jakob Weickmann + * + This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +#include "muse.h" + +enum planck_layers { + _HRWIDECOLEMAK, + _HRWIDECOLEMAK_DE, + _GAMING, + _WIDECOLEMAK, + _LOWER, + _RAISE, + _LOWER_DE, + _RAISE_DE, + _ADJUST, + _NAV, + _VIM, + _NUM, + _MOUSE, +}; + +enum planck_keycodes { HRWIDECOLEMAK = SAFE_RANGE, GAMING, WIDECOLEMAK, TG_COLEMAK, VIM_O, VIM_V, KC_SVD_BD, KC_SVU_BU, KC_TAB_MPLY, ALT_TAB, CTL_TAB, DE_ae, DE_oe, DE_ue, DE_AE, DE_OE, DE_SZ, DE_EGRAVE, DE_EAIGU, KC_CURRENCY, KC_DE_SWITCH, LANG_SWITCH, DE_SLSH_QUST, DE_QUOT, DE_SCLN, DE_BSLS, M_ESCM, M_RGUI_SCLN, DE_DOT_RAB, DE_COMM_LAB }; + +// Tap Dance declarations +enum tap_dance_codes { + TD_PRN, // round brackets (parentheses) + TD_PRN_DE, // round brackets (parentheses) + TD_BRC, // square brackets + TD_BRC_DE, // square brackets + TD_CBR, // curly brackets + TD_CBR_DE, // curly brackets + TD_VIM_GG // single tap to scroll down, double tap to scroll up +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* _HRWIDECOLEMAK + * ,-----------------------------------------------------------------------------------. + * | G-Q | A-W | S-F | C-P |_Num-B|Vol/B+|_Num-J| C-L | S-U | A-Y | G-/ | ü | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | A | R | S | T | G | TAB | M | N | E | I | O | ' | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |_Mo-Z | X | C | D | V |Vol/B-| K | H | , | . |_Mo-/ | \ | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |C-CAPS| LEAD | BSPC |_L-ESC| LSFT | _Nav-SPC |_R-ENT|S-DEL | RALT |_Mo <-|_Mo ->| + * `-----------------------------------------------------------------------------------' + */ + [_HRWIDECOLEMAK] = LAYOUT_planck_grid( + LGUI_T(KC_Q), LALT_T(KC_W), LSFT_T(KC_F), LCTL_T(KC_P), LT(_NUM, KC_B), KC_SVU_BU, LT(_NUM, KC_J), RCTL_T(KC_L), RSFT_T(KC_U), LALT_T(KC_Y), RGUI_T(KC_SCLN), DE_ue, + KC_A, KC_R, KC_S, KC_T, KC_G, KC_TAB, KC_M, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + LT(_MOUSE, KC_Z), KC_X, KC_C, KC_D, KC_V, KC_SVD_BD, KC_K, KC_H, KC_COMM, KC_DOT, LT(_MOUSE, KC_SLSH), KC_BSLS, + LCTL_T(KC_CAPS), KC_LEAD, KC_BSPC, LT(_LOWER, KC_ESC), OSM(MOD_LSFT), LT(_NAV, KC_SPC), LT(_NAV, KC_SPC), LT(_RAISE, KC_ENT), RSFT_T(KC_DEL), KC_RALT, LT(_MOUSE, KC_LEFT), LT(_MOUSE, KC_RIGHT) + ), + + /* _HRWIDECOLEMAK_DE + * same as above, when the PC is set to German layout + * ,-----------------------------------------------------------------------------------. + * | G-Q | A-W | S-F | C-P |_Num-B|Vol/B+|_Num-J| C-L | S-U | A-Y | G-/ | ü | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | A | R | S | T | G | TAB | M | N | E | I | O | ' | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |_Mo-Z | X | C | D | V |Vol/B-| K | H | , | . |_Mo-/ | \ | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |C-CAPS| LEAD | BSPC |_L-ESC| LSFT | _Nav-SPC |_R-ENT|S-DEL | RALT |_Mo <-|_Mo ->| + * `-----------------------------------------------------------------------------------' + */ + [_HRWIDECOLEMAK_DE] = LAYOUT_planck_grid( + LGUI_T(KC_Q), LALT_T(KC_W), LSFT_T(KC_F), LCTL_T(KC_P), LT(_NUM, KC_B), KC_SVU_BU, LT(_NUM, KC_J), RCTL_T(KC_L), RSFT_T(KC_U), LALT_T(KC_Z), M_RGUI_SCLN, KC_LBRC, + KC_A, KC_R, KC_S, KC_T, KC_G, KC_TAB, KC_M, KC_N, KC_E, KC_I, KC_O, DE_QUOT, + LT(_MOUSE, KC_Y), KC_X, KC_C, KC_D, KC_V, KC_SVD_BD, KC_K, KC_H, DE_COMM_LAB, DE_DOT_RAB, DE_SLSH_QUST, DE_BSLS, + LCTL_T(KC_CAPS), KC_LEAD, KC_BSPC, LT(_LOWER_DE, KC_ESC), OSM(MOD_LSFT), LT(_NAV, KC_SPC), LT(_NAV, KC_SPC), LT(_RAISE_DE, KC_ENT), RSFT_T(KC_DEL), KC_RALT, LT(_MOUSE, KC_LEFT), LT(_MOUSE, KC_RIGHT) + ), + + /* _GAMING + * ,-----------------------------------------------------------------------------------. + * | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | F5 | F8 | F9 |Vol/B+| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | TAB | Q | W | E | R | T | Y | U | I | O | P |Vol/B-| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | LSFT | A | S | D | F | G | H | J | Z | M | ; |_CM-EN| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | LCTL | C | B | X | LALT | SPACE | ENT | RALT | ____ | ____ | !GAME| + * `-----------------------------------------------------------------------------------' + */ + [_GAMING] = LAYOUT_planck_grid( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_F5, KC_F8, KC_F9, KC_VOLU, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_VOLD, + KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_Z, KC_M, KC_SCLN, TG_COLEMAK, + KC_LCTL, KC_C, KC_B, KC_X, KC_LALT, KC_SPC, KC_SPC, KC_ENT, KC_RALT, KC_TRNS, KC_TRNS, GAMING + ), + + /* WIDECOLEMAK + * no mod taps + * ,-----------------------------------------------------------------------------------. + * | Q | W | F | P | B |Vol/B+| J | L | U | Y | / | Ü | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | A | R | S | T | G | TAB | M | N | E | I | O | ' | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Z | X | C | D | V |Vol/B-| K | H | , | . | / |!CM-EN| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |C-CAPS|G-TAB |MN-ESC|_L-BSP| LSFT | _NAV-SPC |_R-ENT|S-DEL |C-TAB |_Mo <-|_Mo ->| + * `-----------------------------------------------------------------------------------' + */ + [_WIDECOLEMAK] = LAYOUT_planck_grid( + KC_Q, KC_W, KC_F, KC_P, KC_B, KC_SVU_BU, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, DE_ue, + KC_A, KC_R, KC_S, KC_T, KC_G, KC_TAB_MPLY, KC_M, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + KC_Z, KC_X, KC_C, KC_D, KC_V, KC_SVD_BD, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, TG_COLEMAK, + LCTL_T(KC_CAPS), LGUI_T(KC_TAB), M_ESCM, LT(_LOWER_DE, KC_BSPC), OSM(MOD_LSFT), LT(_NAV, KC_SPC), LT(_NAV, KC_SPC), LT(_RAISE, KC_ENT), RSFT_T(KC_DEL), KC_LALT, LT(_MOUSE, KC_LEFT), LT(_MOUSE, KC_RIGHT) + ), + + /* _LOWER + * ,-----------------------------------------------------------------------------------. + * | ! | @ | # | $ | % | ~ | ^ | & | * | ( | ) | Ö | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | F1 | F2 | F3 | F4 | F5 | F6 | ß | _ | + | { | } | Ä | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | F7 | F8 | F9 | F10 | F11 | F12 | MPLY | / | \ | | | € | è | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |!MOUSE| ____ | ____ | ____ | ____ | ____ | ____ | Vol- | Vol+ | ↓ | ↑ | + * `-----------------------------------------------------------------------------------' + */ + [_LOWER] = LAYOUT_planck_grid( + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_TILD, KC_CIRC, KC_AMPR, KC_ASTR, TD(TD_PRN), KC_RPRN, DE_OE, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, DE_SZ, KC_UNDS, KC_PLUS, TD(TD_CBR), KC_RCBR, DE_AE, + KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MPLY, KC_SLSH, KC_NUBS, LSFT(KC_NUBS), KC_CURRENCY, DE_EGRAVE, + TG(_MOUSE), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_DOWN, KC_UP + ), + + /* _LOWER_DE + * ,-----------------------------------------------------------------------------------. + * | ! | @ | # | $ | % | ~ | ^ | & | * | ( | ) | Ö | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | F1 | F2 | F3 | F4 | F5 | F6 | ß | _ | + | { | } | Ä | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | F7 | F8 | F9 | F10 | F11 | F12 | MPLY | / | \ | | | € | ` | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |!MOUSE| ____ | ____ | ____ | ____ | ____ | ____ | Vol- | Vol+ | ↓ | ↑ | + * `-----------------------------------------------------------------------------------' + */ + [_LOWER_DE] = LAYOUT_planck_grid( + KC_EXLM, RALT(KC_Q), KC_BSLS, KC_DLR, KC_PERC, RALT(KC_RBRC), KC_GRV, KC_CIRC, KC_RCBR, TD(TD_PRN_DE), KC_LPRN, LSFT(KC_SCLN), + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, LSFT(KC_SLSH), KC_RBRC, TD(TD_CBR_DE), RALT(KC_0), LSFT(KC_QUOT), + KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MPLY, LSFT(KC_7), RALT(KC_MINS), RALT(KC_NUBS), KC_CURRENCY, KC_PLUS, + TG(_MOUSE), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_DOWN, KC_UP + ), + + /* _RAISE + * ,-----------------------------------------------------------------------------------. + * | 1 | 2 | 3 | 4 | 5 | ` | 6 | 7 | 8 | 9 | 0 | ö | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | F1 | F2 | F3 | F4 | F5 | F6 | ß | - | = | [ | ] | ä | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | F7 | F8 | F9 | F10 | F11 | F12 | MPLY | \ | , | . | / | é | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |!MOUSE| ____ | ____ | BSPC | ____ | ____ | ____ | |<< | >>| | ↓ | ↑ | + * `-----------------------------------------------------------------------------------' + */ + [_RAISE] = LAYOUT_planck_grid( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_GRV, KC_6, KC_7, KC_8, KC_9, KC_0, DE_oe, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, DE_SZ, KC_MINS, KC_EQL, TD(TD_BRC), KC_RBRC, DE_ae, + KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MPLY, KC_BSLS, KC_COMM, KC_DOT, KC_SLSH, DE_EAIGU, + TG(_MOUSE), KC_TRNS, KC_BSPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_DOWN, KC_UP + ), + + /* _RAISE_DE + * ,-----------------------------------------------------------------------------------. + * | 1 | 2 | 3 | 4 | 5 | ` | 6 | 7 | 8 | 9 | 0 | ö | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | F1 | F2 | F3 | F4 | F5 | F6 | ß | - | = | [ | ] | ä | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | F7 | F8 | F9 | F10 | F11 | F12 | MPLY | \ | , | . | / | ´ | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |!MOUSE| ____ | ____ | BSPC | ____ | ____ | ____ | |<< | >>| | ↓ | ↑ | + * `-----------------------------------------------------------------------------------' + */ + [_RAISE_DE] = LAYOUT_planck_grid( + KC_1, KC_2, KC_3, KC_4, KC_5, LSFT(KC_GRV), KC_6, KC_7, KC_8, KC_9, KC_0, KC_SCLN, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_SLSH, LSFT(KC_0), TD(TD_BRC_DE), RALT(KC_9), KC_QUOT, + KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MPLY, RALT(KC_MINS), KC_COMM, KC_DOT, DE_SLSH_QUST, KC_EQL, + TG(_MOUSE), KC_TRNS, KC_BSPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_DOWN, KC_UP + ), + + /* _ADJUST + * ,-----------------------------------------------------------------------------------. + * | A-SFT| RESET| DEBUG|RGBTOG|RGBMOD|RGBHUI|RGBHUD|RGBSAI|RGBSAD|RGBVAI|RGBVAD| DE_SW| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | A-GRV|EEPRST|MU_MOD| AU_ON|AU_OFF|AGNORM|AGSWAP|!HRWCM| !WCM | A-GRV| !LANG| !GAME| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ____ |MUV_DE|MUV_IN| MU_ON|MU_OFF| MI_ON|MI_OFF| Vol- | MPLY | Vol+ | ____ | ____ | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ |EEPRST| + * `-----------------------------------------------------------------------------------' + */ + [_ADJUST] = LAYOUT_planck_grid( + LALT(KC_LSFT), RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DE_SWITCH, + LALT(KC_GRV), EEP_RST, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, HRWIDECOLEMAK, WIDECOLEMAK, LALT(KC_GRV), LANG_SWITCH, GAMING, + KC_TRNS, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, KC_SVD_BD, KC_MPLY, KC_SVU_BU, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EEPROM_RESET + ), + + /* _NAV + * ,-----------------------------------------------------------------------------------. + * |A(TAB)| C(->)| !LANG|A(GRV)| C(<-)| >>| | HOME | -> | PGUP | COPY | PASTE| DE_SW| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |C(TAB)| TAB | ESC | ENT |VIM_GG| MPLY | <- | ↓ | ↑ | -> | END | VIM_O| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | LSFT | XXXX |S(DEL)| CAPS | VIM_V| MUTE | HOME | PGDN | LSFT | RFST | C(F) | C(F) | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | XXXX | XXXX | ____ | BSPC | ____ | ____ | ENT | DEL | ____ | ____ | DE_SW| + * `-----------------------------------------------------------------------------------' + */ + [_NAV] = LAYOUT_planck_grid( + ALT_TAB, LCTL(KC_RGHT), LANG_SWITCH, LALT(KC_GRV), LCTL(KC_LEFT), KC_MNXT, KC_HOME, KC_RIGHT, KC_PGUP, LCTL(KC_INS), LSFT(KC_INS), KC_DE_SWITCH, + CTL_TAB, KC_TAB, KC_ESC, KC_ENT, TD(TD_VIM_GG), KC_MPLY, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_END, VIM_O, + KC_LSFT, KC_NO, LSFT(KC_DEL), KC_CAPS, VIM_V, KC_MUTE, KC_HOME, KC_PGDN, KC_LSFT, KC_RSFT, LCTL(KC_F), LCTL(KC_F), + KC_NO, KC_NO, KC_TRNS, KC_BSPC, KC_TRNS, LT(_NAV, KC_SPC), LT(_NAV, KC_SPC), KC_ENT, KC_DEL, KC_TRNS, KC_TRNS, KC_DE_SWITCH + ), + + /* _VIM + * ,-----------------------------------------------------------------------------------. + * |A(TAB)| C(->)| !LANG|A(GRV)| C(<-)| >>| | HOME | -> | PGUP | COPY | PASTE| DE_SW| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |C(TAB)| TAB | ESC | ENT |VIM_GG| MPLY | <- | ↓ | ↑ | -> | END | VIM_O| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | LSFT | XXXX |S(DEL)| CAPS | VIM_V| MUTE | HOME | PGDN | LSFT | RFST | C(F) | C(F) | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | XXXX | XXXX | !VIM | BSPC | ____ | ____ | ENT | DEL | ____ | ↓ | ↑ | + * `-----------------------------------------------------------------------------------' + */ + [_VIM] = LAYOUT_planck_grid( + ALT_TAB, LCTL(KC_RGHT), LANG_SWITCH, LALT(KC_GRV), LCTL(KC_LEFT), KC_MNXT, KC_HOME, KC_RIGHT, KC_PGUP, LCTL(KC_INS), LSFT(KC_INS), KC_DE_SWITCH, + CTL_TAB, KC_TAB, KC_ESC, KC_ENT, TD(TD_VIM_GG), KC_MPLY, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_END, VIM_O, + KC_LSFT, KC_NO, LSFT(KC_DEL), KC_CAPS, VIM_V, KC_MUTE, KC_HOME, KC_PGDN, KC_LSFT, KC_RSFT, LCTL(KC_F), LCTL(KC_F), + KC_NO, KC_NO, TG(_VIM), KC_BSPC, KC_TRNS, LT(_NAV, KC_SPC), LT(_NAV, KC_SPC), KC_ENT, KC_DEL, KC_TRNS, KC_DOWN, KC_UP + ), + + /* _NUM + * ,-----------------------------------------------------------------------------------. + * | F1 | F2 | F3 | F4 | |<< |NUMLCK| >>| | 7 | 8 | 9 | - | ____ | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | F5 | F6 | F7 | F8 | Vol+ | MPLY | * | 4 | 5 | 6 | + | . | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | F9 | F10 | F11 | F12 | Vol- | MUTE | = | 1 | 2 | 3 | / | , | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ____ | ____ | ____ | ____ | ____ | ____ | 0 | . | , | = | ____ | + * `-----------------------------------------------------------------------------------' + */ + [_NUM] = LAYOUT_planck_grid( + KC_F1, KC_F2, KC_F3, KC_F4, KC_MPRV, KC_NLCK, KC_MNXT, KC_P7, KC_P8, KC_P9, KC_MINS, KC_TRNS, + KC_F5, KC_F6, KC_F7, KC_F8, KC_VOLU, KC_MPLY, KC_ASTR, KC_P4, KC_P5, KC_P6, KC_PLUS, KC_DOT, + KC_F9, KC_F10, KC_F11, KC_F12, KC_VOLD, KC_MUTE, KC_EQL, KC_P1, KC_P2, KC_P3, KC_SLSH, KC_COMM, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P0, KC_DOT, KC_COMM, KC_EQL, KC_TRNS + ), + + /* _MOUSE + * ,-----------------------------------------------------------------------------------. + * | XXXX | XXXX | MBTN4| MBTN5| XXXX | Bri+ | XXXX | MWHL↑|MAUS↑ | MWHL↑| XXXX | XXXX | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | XXXX | MBTN3| MBTN2| MBTN1| XXXX | MPLY | XXXX |MAUS<-|MAUS↓ |MAUS->| XXXX | XXXX | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | F9 | XXXX | XXXX | XXXX | XXXX | Bri- | XXXX | MWHL↓| XXXX | XXXX | ____ | XXXX | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |!MOUSE| XXXX | XXXX | ____ | XXXX | MAUS_ACCEL2 | ____ | XXXX | XXXX | ↓ | ↑ | + * `-----------------------------------------------------------------------------------' + */ + [_MOUSE] = LAYOUT_planck_grid( + KC_NO, KC_NO, KC_BTN4, KC_BTN5, KC_NO, KC_BRIU, KC_NO, KC_WH_U, KC_MS_U, KC_WH_U, KC_NO, KC_NO, + KC_NO, KC_BTN3, KC_BTN2, KC_BTN1, KC_NO, KC_MPLY, KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, KC_NO, + KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_BRID, KC_NO, KC_WH_D, KC_NO, KC_NO, KC_TRNS, KC_NO, + TG(_MOUSE), KC_NO, KC_NO, KC_TRNS, KC_NO, KC_ACL2, KC_ACL2, KC_TRNS, KC_NO, KC_NO, KC_DOWN, KC_UP + ) + +}; + +// define the tap dance functions +void dance_prn(qk_tap_dance_state_t *state, void *user_data) { + if (state->count == 1) { + tap_code16(KC_LPRN); + } else { + tap_code16(KC_LPRN); + tap_code16(KC_RPRN); + tap_code(KC_LEFT); + } +} +void dance_brc(qk_tap_dance_state_t *state, void *user_data) { + if (state->count == 1) { + tap_code(KC_LBRC); + } else { + tap_code(KC_LBRC); + tap_code(KC_RBRC); + tap_code(KC_LEFT); + } +} +void dance_cbr(qk_tap_dance_state_t *state, void *user_data) { + if (state->count == 1) { + tap_code16(KC_LCBR); + } else { + tap_code16(KC_LCBR); + tap_code16(KC_RCBR); + tap_code(KC_LEFT); + } +} +void dance_prn_de(qk_tap_dance_state_t *state, void *user_data) { + if (state->count == 1) { + tap_code16(KC_ASTR); + } else { + tap_code16(KC_ASTR); + tap_code16(KC_LPRN); + tap_code(KC_LEFT); + } +} +void dance_brc_de(qk_tap_dance_state_t *state, void *user_data) { + if (state->count == 1) { + tap_code16(RALT(KC_8)); + } else { + tap_code16(RALT(KC_8)); + tap_code16(RALT(KC_9)); + tap_code(KC_LEFT); + } +} +void dance_cbr_de(qk_tap_dance_state_t *state, void *user_data) { + if (state->count == 1) { + tap_code16(RALT(KC_7)); + } else { + tap_code16(RALT(KC_7)); + tap_code16(RALT(KC_0)); + tap_code(KC_LEFT); + } +} +void vim_gg(qk_tap_dance_state_t *state, void *user_data) { + if (state->count == 1) { + tap_code16(LCTL(KC_END)); + } else { + tap_code16(LCTL(KC_HOME)); + } +} + +qk_tap_dance_action_t tap_dance_actions[] = { + // declare tap dance actions here + [TD_PRN] = ACTION_TAP_DANCE_FN(dance_prn), [TD_BRC] = ACTION_TAP_DANCE_FN(dance_brc), [TD_CBR] = ACTION_TAP_DANCE_FN(dance_cbr), [TD_PRN_DE] = ACTION_TAP_DANCE_FN(dance_prn_de), [TD_BRC_DE] = ACTION_TAP_DANCE_FN(dance_brc_de), [TD_CBR_DE] = ACTION_TAP_DANCE_FN(dance_cbr_de), [TD_VIM_GG] = ACTION_TAP_DANCE_FN(vim_gg)}; + +float thumb_factor = 0.95; +float index_factor = 1.1; +float middle_factor = 1.2; +float ring_factor = 1.25; +float pinky_factor = 1.15; +float td_factor = 1.4; + +// define the per_key_tapping_term +uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + // thumb keys + case RSFT_T(KC_DEL): + return TAPPING_TERM * thumb_factor; + case RCTL_T(KC_TAB): + return TAPPING_TERM * thumb_factor; + case LT(_NAV, KC_LEFT): + return TAPPING_TERM * thumb_factor; + case LT(_NAV, KC_RIGHT): + return TAPPING_TERM * thumb_factor; + case LT(_LOWER, KC_BSPC): + return TAPPING_TERM * thumb_factor; + case LT(_LOWER_DE, KC_BSPC): + return TAPPING_TERM * thumb_factor; + case LT(_RAISE, KC_ENT): + return TAPPING_TERM * thumb_factor; + case LT(_RAISE_DE, KC_ENT): + return TAPPING_TERM * thumb_factor; + case LT(_NAV, KC_SPC): + return TAPPING_TERM * 1.0; + case LALT_T(KC_ESC): + return TAPPING_TERM * thumb_factor; + + // index finger keys + case LCTL_T(KC_P): + return TAPPING_TERM * index_factor; + case RCTL_T(KC_L): + return TAPPING_TERM * (index_factor + 0.1); + case LT(_NUM, KC_B): + return TAPPING_TERM * (index_factor + 0.1); + case LT(_NUM, KC_J): + return TAPPING_TERM * index_factor; + + // middle finger keys + case LSFT_T(KC_F): + return TAPPING_TERM * middle_factor; + case RSFT_T(KC_U): + return TAPPING_TERM * middle_factor; + + // ring finger keys + case LALT_T(KC_W): + return TAPPING_TERM * ring_factor; + case LALT_T(KC_Y): + return TAPPING_TERM * ring_factor; + case LGUI_T(KC_TAB): + return TAPPING_TERM * ring_factor; + + // pinky keys + case LGUI_T(KC_Q): + return TAPPING_TERM * pinky_factor; + case RGUI_T(KC_SCLN): + return TAPPING_TERM * pinky_factor; + case RGUI_T(KC_LBRC): + return TAPPING_TERM * pinky_factor; + case LT(_MOUSE, KC_Z): + return TAPPING_TERM * pinky_factor; + case LT(_MOUSE, KC_SLSH): + return TAPPING_TERM * pinky_factor; + case LCTL_T(KC_CAPS): + return TAPPING_TERM * pinky_factor; + + // tap-dance actions + case TD(TD_PRN): + return TAPPING_TERM * td_factor; + case TD(TD_BRC): + return TAPPING_TERM * td_factor; + case TD(TD_CBR): + return TAPPING_TERM * td_factor; + case TD(TD_PRN_DE): + return TAPPING_TERM * td_factor; + case TD(TD_BRC_DE): + return TAPPING_TERM * td_factor; + case TD(TD_CBR_DE): + return TAPPING_TERM * td_factor; + case TD(TD_VIM_GG): + return TAPPING_TERM * td_factor; + + default: + return TAPPING_TERM; + } +} + +// alt tab function setup +bool is_alt_tab_active = false; +bool is_ctl_tab_active = false; +bool de_layout_active = false; + +static uint16_t key_timer; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case WIDECOLEMAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_WIDECOLEMAK); + } + return false; + break; + case HRWIDECOLEMAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_HRWIDECOLEMAK); + } + return false; + break; + case GAMING: + if (record->event.pressed) { + layer_invert(_GAMING); + } + return false; + break; + case TG_COLEMAK: + if (record->event.pressed) { + tap_code(KC_ENT); + layer_invert(_WIDECOLEMAK); + } + return false; + break; + case VIM_O: + if (record->event.pressed) { + tap_code(KC_END); + tap_code(KC_ENT); + } + return false; + break; + case VIM_V: + if (record->event.pressed) { + if (get_mods() & MOD_MASK_SHIFT) { + clear_mods(); + } else { + register_mods(MOD_LSFT); + } + } + return false; + break; + case KC_SVU_BU: // increase backlight when pressing shift and vol up + if (record->event.pressed) { + if (get_mods() & MOD_MASK_SHIFT) { + register_code(KC_BRIU); + } else if (get_mods() & MOD_MASK_CTRL) { + register_code(KC_MNXT); + } else { + register_code(KC_VOLU); + } + } else { + unregister_code(KC_BRIU); + unregister_code(KC_MNXT); + unregister_code(KC_VOLU); + } + return false; + case KC_SVD_BD: // decrease backlight when pressing shift and vol up + if (record->event.pressed) { + if (get_mods() & MOD_MASK_SHIFT) { + register_code(KC_BRID); + } else if (get_mods() & MOD_MASK_CTRL) { + register_code(KC_MPRV); + } else { + register_code(KC_VOLD); + } + } else { + unregister_code(KC_BRID); + unregister_code(KC_MPRV); + unregister_code(KC_VOLD); + } + return false; + case KC_TAB_MPLY: // press tab or play/pause when ctrl is pressed + if (record->event.pressed) { + if (get_mods() & MOD_MASK_CTRL) { + register_code(KC_MPLY); + } else { + register_code(KC_TAB); + } + } else { + unregister_code(KC_MPLY); + unregister_code(KC_TAB); + } + return false; + case ALT_TAB: + if (record->event.pressed) { + if (!is_alt_tab_active) { + is_alt_tab_active = true; + add_mods(MOD_BIT(KC_LALT)); + } + register_code(KC_TAB); + } else { + unregister_code(KC_TAB); + } + break; + case CTL_TAB: + if (record->event.pressed) { + if (!is_ctl_tab_active) { + is_ctl_tab_active = true; + add_mods(MOD_BIT(KC_LCTL)); + } + register_code(KC_TAB); + } else { + unregister_code(KC_TAB); + } + break; + // the next case allows us to use alt_tab without a timer + case LT(_NAV, KC_SPC): + if (record->event.pressed) { + } else { + unregister_mods(MOD_LALT); + unregister_mods(MOD_LCTL); + is_alt_tab_active = false; + is_ctl_tab_active = false; + } + break; + case DE_ae: + if (record->event.pressed) { + uint8_t temp_mods = get_mods(); + if ((get_mods() | get_oneshot_mods()) & MOD_MASK_SHIFT) { + clear_oneshot_mods(); + clear_mods(); + add_mods(MOD_BIT(KC_LALT)); + tap_code(KC_P0); + tap_code(KC_P1); + tap_code(KC_P9); + tap_code(KC_P6); // Ä + } else { + clear_mods(); + add_mods(MOD_BIT(KC_LALT)); + tap_code(KC_P0); + tap_code(KC_P2); + tap_code(KC_P2); + tap_code(KC_P8); // ä + } + unregister_mods(MOD_LALT); + set_mods(temp_mods); + } + return false; + break; + case DE_AE: + if (record->event.pressed) { + uint8_t temp_mods = get_mods() | get_oneshot_mods(); + clear_oneshot_mods(); + clear_mods(); + add_mods(MOD_BIT(KC_LALT)); + tap_code(KC_P0); + tap_code(KC_P1); + tap_code(KC_P9); + tap_code(KC_P6); // Ä + unregister_mods(MOD_LALT); + set_mods(temp_mods); + } + return false; + break; + case DE_oe: + if (record->event.pressed) { + uint8_t temp_mods = get_mods(); + if ((get_mods() | get_oneshot_mods()) & MOD_MASK_SHIFT) { + clear_oneshot_mods(); + clear_mods(); + add_mods(MOD_BIT(KC_LALT)); + tap_code(KC_P0); + tap_code(KC_P2); + tap_code(KC_P1); + tap_code(KC_P4); // Ö + } else { + clear_mods(); + add_mods(MOD_BIT(KC_LALT)); + tap_code(KC_P0); + tap_code(KC_P2); + tap_code(KC_P4); + tap_code(KC_P6); // ö + } + unregister_mods(MOD_LALT); + set_mods(temp_mods); + } + return false; + break; + case DE_OE: + if (record->event.pressed) { + uint8_t temp_mods = get_mods() | get_oneshot_mods(); + clear_oneshot_mods(); + clear_mods(); + add_mods(MOD_BIT(KC_LALT)); + tap_code(KC_P0); + tap_code(KC_P2); + tap_code(KC_P1); + tap_code(KC_P4); // Ö + unregister_mods(MOD_LALT); + set_mods(temp_mods); + } + return false; + break; + case DE_ue: + if (record->event.pressed) { + uint8_t temp_mods = get_mods(); + if ((get_mods() | get_oneshot_mods()) & MOD_MASK_SHIFT) { + clear_oneshot_mods(); + clear_mods(); + add_mods(MOD_BIT(KC_LALT)); + tap_code(KC_P0); + tap_code(KC_P2); + tap_code(KC_P2); + tap_code(KC_P0); // Ü + } else { + clear_mods(); + add_mods(MOD_BIT(KC_LALT)); + tap_code(KC_P0); + tap_code(KC_P2); + tap_code(KC_P5); + tap_code(KC_P2); // ü + } + unregister_mods(MOD_LALT); + set_mods(temp_mods); + } + return false; + break; + case KC_DE_SWITCH: + if (record->event.pressed) { + if (de_layout_active) { + de_layout_active = false; // deactivate German overlay + set_single_persistent_default_layer(_HRWIDECOLEMAK); + } else { + de_layout_active = true; // activate German overlay + set_single_persistent_default_layer(_HRWIDECOLEMAK_DE); + } + return false; + } + break; + case LANG_SWITCH: + if (record->event.pressed) { + register_mods(MOD_LALT); + register_code(KC_LSFT); + if (de_layout_active) { + de_layout_active = false; // deactivate German overlay + set_single_persistent_default_layer(_HRWIDECOLEMAK); + } else { + de_layout_active = true; // activate German overlay + set_single_persistent_default_layer(_HRWIDECOLEMAK_DE); + } + } else { + unregister_code(KC_LSFT); + unregister_mods(MOD_LALT); + } + return false; + case DE_SZ: + if (record->event.pressed) { + uint8_t temp_mods = get_mods(); + if ((get_mods() | get_oneshot_mods()) & MOD_MASK_SHIFT) { + clear_oneshot_mods(); + clear_mods(); + add_mods(MOD_BIT(KC_LALT)); + tap_code(KC_P0); + tap_code(KC_P1); + tap_code(KC_P7); + tap_code(KC_P6); // ° + } else { + clear_mods(); + add_mods(MOD_BIT(KC_LALT)); + tap_code(KC_P0); + tap_code(KC_P2); + tap_code(KC_P2); + tap_code(KC_P3); // ß + } + unregister_mods(MOD_LALT); + set_mods(temp_mods); + } + return false; + break; + case DE_EGRAVE: + if (record->event.pressed) { + uint8_t temp_mods = get_mods(); + if ((get_mods() | get_oneshot_mods()) & MOD_MASK_SHIFT) { + clear_oneshot_mods(); + clear_mods(); + add_mods(MOD_BIT(KC_LALT)); + tap_code(KC_P0); + tap_code(KC_P2); + tap_code(KC_P0); + tap_code(KC_P0); // È + } else { + clear_mods(); + add_mods(MOD_BIT(KC_LALT)); + tap_code(KC_P0); + tap_code(KC_P2); + tap_code(KC_P3); + tap_code(KC_P2); // è + } + unregister_mods(MOD_LALT); + set_mods(temp_mods); + } + return false; + break; + case DE_EAIGU: + if (record->event.pressed) { + uint8_t temp_mods = get_mods(); + if ((get_mods() | get_oneshot_mods()) & MOD_MASK_SHIFT) { + clear_oneshot_mods(); + clear_mods(); + add_mods(MOD_BIT(KC_LALT)); + tap_code(KC_P0); + tap_code(KC_P2); + tap_code(KC_P0); + tap_code(KC_P1); // É + } else { + clear_mods(); + add_mods(MOD_BIT(KC_LALT)); + tap_code(KC_P0); + tap_code(KC_P2); + tap_code(KC_P3); + tap_code(KC_P3); // é + } + unregister_mods(MOD_LALT); + set_mods(temp_mods); + } + return false; + break; + case KC_CURRENCY: + if (record->event.pressed) { + uint8_t temp_mods = get_mods(); + if ((get_mods() | get_oneshot_mods()) & MOD_MASK_SHIFT) { + clear_oneshot_mods(); + clear_mods(); + add_mods(MOD_BIT(KC_LALT)); + tap_code(KC_P1); + tap_code(KC_P5); + tap_code(KC_P7); // ¥ + } else { + clear_mods(); + add_mods(MOD_BIT(KC_LALT)); + tap_code(KC_P0); + tap_code(KC_P1); + tap_code(KC_P2); + tap_code(KC_P8); // € + } + unregister_mods(MOD_LALT); + set_mods(temp_mods); + } + return false; + break; + case DE_SLSH_QUST: + if (record->event.pressed) { + key_timer = timer_read(); + layer_on(_MOUSE); + } else { + if (timer_elapsed(key_timer) < (TAPPING_TERM * pinky_factor)) { + layer_off(_MOUSE); + uint8_t temp_mods = get_mods() | get_oneshot_mods(); + if (temp_mods & MOD_MASK_SHIFT) { + tap_code(KC_MINS); // ? + } else { + tap_code16(KC_AMPR); // / + } + } else { + layer_off(_MOUSE); + } + } + return false; + break; + case DE_QUOT: + if (record->event.pressed) { + uint8_t temp_mods = get_mods() | get_oneshot_mods(); + if (temp_mods & MOD_MASK_SHIFT) { + register_code(KC_2); // \" + } else { + register_code16(KC_PIPE); // /' + } + } else { + unregister_code(KC_2); + unregister_code16(KC_PIPE); + } + return true; + case DE_DOT_RAB: + if (record->event.pressed) { + uint8_t temp_mods = get_mods() | get_oneshot_mods(); + if (temp_mods & MOD_MASK_SHIFT) { + register_code16(LSFT(KC_NUBS)); // > right angle bracket + } else { + register_code(KC_DOT); // . + } + } else { + unregister_code16(LSFT(KC_NUBS)); + unregister_code(KC_DOT); + } + return true; + case DE_COMM_LAB: + if (record->event.pressed) { + uint8_t temp_mods = get_mods() | get_oneshot_mods(); + if (temp_mods & MOD_MASK_SHIFT) { + clear_mods(); + clear_oneshot_mods(); + register_code16(KC_NUBS); // < left angle bracket + set_mods(temp_mods); + } else { + register_code(KC_COMM); // , + } + } else { + unregister_code16(KC_NUBS); + unregister_code(KC_COMM); + } + return true; + case DE_SCLN: + if (record->event.pressed) { + uint8_t temp_mods = get_mods() | get_oneshot_mods(); + if (temp_mods & MOD_MASK_SHIFT) { + tap_code(KC_DOT); // ; + } else { + add_mods(MOD_BIT(KC_LSFT)); + tap_code(KC_COMM); // : + del_mods(MOD_BIT(KC_LSFT)); + } + return false; + } + break; + case DE_BSLS: + if (record->event.pressed) { + uint8_t temp_mods = get_mods() | get_oneshot_mods(); + clear_mods(); + clear_oneshot_mods(); + add_mods(MOD_BIT(KC_RALT)); + if (temp_mods & MOD_MASK_SHIFT) { + register_code(KC_NUBS); // | Pipe + } else { + register_code(KC_MINS); // Backslash + } + set_mods(temp_mods); + } else { + unregister_code(KC_NUBS); + unregister_code(KC_MINS); + } + return true; + // switch multiplexing for escape, short tap for escape, long press for context menu + case M_ESCM: + if (record->event.pressed) { + key_timer = timer_read(); + } else { + if (timer_elapsed(key_timer) > TAPPING_TERM) { + tap_code(KC_APP); + } else { + tap_code(KC_ESC); + } + } + return false; + case M_RGUI_SCLN: + if (record->event.pressed) { + key_timer = timer_read(); + add_mods(MOD_BIT(KC_RGUI)); + } else { + del_mods(MOD_BIT(KC_RGUI)); + if (timer_elapsed(key_timer) < (TAPPING_TERM * pinky_factor)) { + uint8_t temp_mods = get_mods() | get_oneshot_mods(); + if (temp_mods & MOD_MASK_SHIFT) { + tap_code(KC_DOT); // ; + } else { + add_mods(MOD_BIT(KC_LSFT)); + tap_code(KC_COMM); // : + del_mods(MOD_BIT(KC_LSFT)); + } + } else { + tap_code(KC_RGUI); + } + } + return false; + break; + } + return true; +} + +bool muse_mode = false; +uint8_t last_muse_note = 0; +uint16_t muse_counter = 0; +uint8_t muse_offset = 70; +uint16_t muse_tempo = 50; + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (muse_mode) { + if (IS_LAYER_ON(_RAISE)) { + if (clockwise) { + muse_offset++; + } else { + muse_offset--; + } + } else { + if (clockwise) { + muse_tempo += 1; + } else { + muse_tempo -= 1; + } + } + } else { + if (clockwise) { +#ifdef MOUSEKEY_ENABLE + tap_code(KC_MS_WH_DOWN); +#else + tap_code(KC_PGDN); +#endif + } else { +#ifdef MOUSEKEY_ENABLE + tap_code(KC_MS_WH_UP); +#else + tap_code(KC_PGUP); +#endif + } + } + return true; +} + +bool dip_switch_update_user(uint8_t index, bool active) { + switch (index) { + case 0: { + if (active) { + layer_on(_ADJUST); + } else { + layer_off(_ADJUST); + } + break; + } + case 1: + if (active) { + muse_mode = true; + } else { + muse_mode = false; + } + } + return true; +} + + +LEADER_EXTERNS(); + +void matrix_scan_user(void) { + LEADER_DICTIONARY() { + leading = false; + leader_end(); + + SEQ_ONE_KEY(KC_F) { + // Anything you can do in a macro. + SEND_STRING("QMK is awesome."); + } + SEQ_TWO_KEYS(KC_D, KC_D) { + SEND_STRING(SS_LCTL("a") SS_LCTL("c")); + } + SEQ_THREE_KEYS(KC_D, KC_D, KC_S) { + SEND_STRING("https://start.duckduckgo.com\n"); + } + SEQ_TWO_KEYS(KC_A, KC_S) { + register_code(KC_LGUI); + register_code(KC_S); + unregister_code(KC_S); + unregister_code(KC_LGUI); + } + } +#ifdef AUDIO_ENABLE + if (muse_mode) { + if (muse_counter == 0) { + uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()]; + if (muse_note != last_muse_note) { + stop_note(compute_freq_for_midi_note(last_muse_note)); + play_note(compute_freq_for_midi_note(muse_note), 0xF); + last_muse_note = muse_note; + } + } + muse_counter = (muse_counter + 1) % muse_tempo; + } else { + if (muse_counter) { + stop_all_notes(); + muse_counter = 0; + } + } +#endif +} + +bool music_mask_user(uint16_t keycode) { + switch (keycode) { + case RAISE: + case LOWER: + return false; + default: + return true; + } +} + +bool get_tapping_force_hold(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case LSFT_T(KC_S): + return true; + case RSFT_T(KC_E): + return true; + case LSFT_T(KC_D): + return true; + case RSFT_T(KC_K): + return true; + case LSFT_T(KC_F): + return true; + case RSFT_T(KC_U): + return true; + case LT(_RAISE, KC_ENT): + return true; + case LT(_RAISE_DE, KC_ENT): + return true; + case LT(_LOWER, KC_BSPC): + return true; + case LT(_LOWER_DE, KC_BSPC): + return true; + default: + return false; + } +} + +// Set RGB to change with layer changes +#define HSV_DARKORANGE 10, 255, 255 +#define HSV_DARKPINK 150, 100, 255 +#define HSV_GRASS 57, 255, 255 +#define HSV_OCEAN 148, 255, 255 + +// Light LEDs 1 to 9 in darkorange when HRCOLEMAK is active +const rgblight_segment_t PROGMEM my_layer0_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, 10, HSV_DARKORANGE}); +// Light LEDs 1 to 9 in green when HRWIDECOLEMAK is active +const rgblight_segment_t PROGMEM my_layer1_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, 10, HSV_OCEAN}); +// Light LEDs 1 to 9 in darkorange when de_layout_active is true +const rgblight_segment_t PROGMEM my_layer2_layer[] = RGBLIGHT_LAYER_SEGMENTS({3, 4, HSV_DARKORANGE}, {0, 3, HSV_OCEAN}, {8, 3, HSV_OCEAN}); +// Light LEDs 1 to 9 in red when GAMING layer is active +const rgblight_segment_t PROGMEM my_layer3_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, 10, HSV_RED}); +// Light LEDs 1 to 9 in white when WIDECOLEMAK is active +const rgblight_segment_t PROGMEM my_layer4_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, 10, HSV_WHITE}); +// Light bottom LEDs in purple when ADJUST layer is active +const rgblight_segment_t PROGMEM my_layer5_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, 2, HSV_MAGENTA}, {7, 3, HSV_MAGENTA}); +// Light bottom LEDs in red when caps lock is active. Hard to ignore! +const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, 3, HSV_GRASS}, {7, 3, HSV_GRASS}); +// Light LEDs 1 to 9 in white when NAVIGATION is active +const rgblight_segment_t PROGMEM my_nav_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, 10, HSV_WHITE}); + +// Now define the array of layers. Later layers take precedence +const rgblight_segment_t *const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(my_layer0_layer, // hrcolemak + my_layer1_layer, // hrwidecolemak + my_layer2_layer, // de_layout + my_layer3_layer, // gaming + my_layer4_layer, // widecolemak + my_layer5_layer, // adjust + my_nav_layer, // nav + my_capslock_layer // capslock +); + +void keyboard_post_init_user(void) { + // Enable the LED layers + rgblight_layers = my_rgb_layers; +} + +bool led_update_user(led_t led_state) { + rgblight_set_layer_state(7, led_state.caps_lock); + return true; +} + +layer_state_t layer_state_set_user(layer_state_t state) { + rgblight_set_layer_state(3, layer_state_cmp(state, _GAMING)); + rgblight_set_layer_state(4, layer_state_cmp(state, _WIDECOLEMAK)); + if ((layer_state_cmp(state, _LOWER) && layer_state_cmp(state, _RAISE)) || (layer_state_cmp(state, _LOWER_DE) && layer_state_cmp(state, _RAISE_DE))) { + return state | (1UL << _ADJUST); + } else { + return state & ~(1UL << _ADJUST); + } + // state = update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); + rgblight_set_layer_state(5, layer_state_cmp(state, _ADJUST)); + // return state; +} + +layer_state_t default_layer_state_set_user(layer_state_t state) { + rgblight_set_layer_state(4, layer_state_cmp(state, _WIDECOLEMAK)); + rgblight_set_layer_state(1, layer_state_cmp(state, _HRWIDECOLEMAK)); + rgblight_set_layer_state(2, layer_state_cmp(state, _HRWIDECOLEMAK_DE)); + return state; +} diff --git a/keyboards/planck/keymaps/jweickm/readme.md b/keyboards/planck/keymaps/jweickm/readme.md new file mode 100644 index 000000000000..6628dfbdbf16 --- /dev/null +++ b/keyboards/planck/keymaps/jweickm/readme.md @@ -0,0 +1,154 @@ +# Semi-wide German/English MIT Planck Layout +Added keymap for my planck MIT. +It has a German and an English switching mode, so that it works the exact same with both OS languages. +It is a semi-wide layout, with the left hand all the way to the edge, and with one extra column in the middle used for media controls. +Home row mods implemented in the top row with individual tapping_terms for different fingers. +Mouse layer accessible through the pinkies. +Navigation layer on space. + +``` +/* _HRWIDECOLEMAK +* ,-----------------------------------------------------------------------------------. +* | G-Q | A-W | S-F | C-P |_Num-B|Vol/B+|_Num-J| C-L | S-U | A-Y | G-/ | ü | +* |------+------+------+------+------+------+------+------+------+------+------+------| +* | A | R | S | T | G | TAB | M | N | E | I | O | ' | +* |------+------+------+------+------+------+------+------+------+------+------+------| +* |_Mo-Z | X | C | D | V |Vol/B-| K | H | , | . |_Mo-/ | \ | +* |------+------+------+------+------+------+------+------+------+------+------+------| +* |C-CAPS| LEAD |MN-ESC|_L-BSP| LSFT | _Nav-SPC |_R-ENT|S-DEL | RALT |_Mo <-|_Mo ->| +* `-----------------------------------------------------------------------------------' +*/ +/* _HRWIDECOLEMAK_DE +* same as above, when the PC is set to German layout +* ,-----------------------------------------------------------------------------------. +* | G-Q | A-W | S-F | C-P |_Num-B|Vol/B+|_Num-J| C-L | S-U | A-Y | G-/ | ü | +* |------+------+------+------+------+------+------+------+------+------+------+------| +* | A | R | S | T | G | TAB | M | N | E | I | O | ' | +* |------+------+------+------+------+------+------+------+------+------+------+------| +* |_Mo-Z | X | C | D | V |Vol/B-| K | H | , | . |_Mo-/ | \ | +* |------+------+------+------+------+------+------+------+------+------+------+------| +* |C-CAPS| LEAD |MN-ESC|_L-BSP| LSFT | _Nav-SPC |_R-ENT|S-DEL | RALT |_Mo <-|_Mo ->| +* `-----------------------------------------------------------------------------------' +*/ +/* _GAMING +* ,-----------------------------------------------------------------------------------. +* | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | F5 | F8 | F9 |Vol/B+| +* |------+------+------+------+------+------+------+------+------+------+------+------| +* | TAB | Q | W | E | R | T | Y | U | I | O | P |Vol/B-| +* |------+------+------+------+------+------+------+------+------+------+------+------| +* | LSFT | A | S | D | F | G | H | J | Z | M | ; |_CM-EN| +* |------+------+------+------+------+------+------+------+------+------+------+------| +* | LCTL | C | B | X | LALT | SPACE | ENT | RALT | ____ | ____ | !GAME| +* `-----------------------------------------------------------------------------------' +*/ +/* WIDECOLEMAK +* no mod taps +* ,-----------------------------------------------------------------------------------. +* | Q | W | F | P | B |Vol/B+| J | L | U | Y | / | Ü | +* |------+------+------+------+------+------+------+------+------+------+------+------| +* | A | R | S | T | G | TAB | M | N | E | I | O | ' | +* |------+------+------+------+------+------+------+------+------+------+------+------| +* | Z | X | C | D | V |Vol/B-| K | H | , | . | / |!CM-EN| +* |------+------+------+------+------+------+------+------+------+------+------+------| +* |C-CAPS|G-TAB |MN-ESC|_L-BSP| LSFT | _NAV-SPC |_R-ENT|S-DEL |C-TAB |_Mo <-|_Mo ->| +* `-----------------------------------------------------------------------------------' +*/ +/* _LOWER +* ,-----------------------------------------------------------------------------------. +* | ! | @ | # | $ | % | ~ | ^ | & | * | ( | ) | Ö | +* |------+------+------+------+------+------+------+------+------+------+------+------| +* | F1 | F2 | F3 | F4 | F5 | F6 | ß | _ | + | { | } | Ä | +* |------+------+------+------+------+------+------+------+------+------+------+------| +* | F7 | F8 | F9 | F10 | F11 | F12 | MPLY | / | \ | | | € | è | +* |------+------+------+------+------+------+------+------+------+------+------+------| +* |!MOUSE| ____ | ____ | ____ | ____ | ____ | ____ | Vol- | Vol+ | ↓ | ↑ | +* `-----------------------------------------------------------------------------------' +*/ +/* _LOWER_DE +* ,-----------------------------------------------------------------------------------. +* | ! | @ | # | $ | % | ~ | ^ | & | * | ( | ) | Ö | +* |------+------+------+------+------+------+------+------+------+------+------+------| +* | F1 | F2 | F3 | F4 | F5 | F6 | ß | _ | + | { | } | Ä | +* |------+------+------+------+------+------+------+------+------+------+------+------| +* | F7 | F8 | F9 | F10 | F11 | F12 | MPLY | / | \ | | | € | ` | +* |------+------+------+------+------+------+------+------+------+------+------+------| +* |!MOUSE| ____ | ____ | ____ | ____ | ____ | ____ | Vol- | Vol+ | ↓ | ↑ | +* `-----------------------------------------------------------------------------------' +*/ +/* _RAISE +* ,-----------------------------------------------------------------------------------. +* | 1 | 2 | 3 | 4 | 5 | ` | 6 | 7 | 8 | 9 | 0 | ö | +* |------+------+------+------+------+------+------+------+------+------+------+------| +* | F1 | F2 | F3 | F4 | F5 | F6 | ß | - | = | [ | ] | ä | +* |------+------+------+------+------+------+------+------+------+------+------+------| +* | F7 | F8 | F9 | F10 | F11 | F12 | MPLY | \ | , | . | / | é | +* |------+------+------+------+------+------+------+------+------+------+------+------| +* |!MOUSE| ____ | ____ | BSPC | ____ | ____ | ____ | |<< | >>| | ↓ | ↑ | +* `-----------------------------------------------------------------------------------' +*/ +/* _RAISE_DE +* ,-----------------------------------------------------------------------------------. +* | 1 | 2 | 3 | 4 | 5 | ` | 6 | 7 | 8 | 9 | 0 | ö | +* |------+------+------+------+------+------+------+------+------+------+------+------| +* | F1 | F2 | F3 | F4 | F5 | F6 | ß | - | = | [ | ] | ä | +* |------+------+------+------+------+------+------+------+------+------+------+------| +* | F7 | F8 | F9 | F10 | F11 | F12 | MPLY | \ | , | . | / | ´ | +* |------+------+------+------+------+------+------+------+------+------+------+------| +* |!MOUSE| ____ | ____ | BSPC | ____ | ____ | ____ | |<< | >>| | ↓ | ↑ | +* `-----------------------------------------------------------------------------------' +*/ +/* _ADJUST +* ,-----------------------------------------------------------------------------------. +* | A-SFT| RESET| DEBUG|RGBTOG|RGBMOD|RGBHUI|RGBHUD|RGBSAI|RGBSAD|RGBVAI|RGBVAD| DE_SW| +* |------+------+------+------+------+------+------+------+------+------+------+------| +* | A-GRV|EEPRST|MU_MOD| AU_ON|AU_OFF|AGNORM|AGSWAP|!HRWCM| !WCM | A-GRV| !LANG| !GAME| +* |------+------+------+------+------+------+------+------+------+------+------+------| +* | ____ |MUV_DE|MUV_IN| MU_ON|MU_OFF| MI_ON|MI_OFF| Vol- | MPLY | Vol+ | ____ | ____ | +* |------+------+------+------+------+------+------+------+------+------+------+------| +* | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ |EEPRST| +* `-----------------------------------------------------------------------------------' +*/ +/* _NAV +* ,-----------------------------------------------------------------------------------. +* |A(TAB)| C(->)| !LANG|A(GRV)| C(<-)| >>| | HOME | -> | PGUP | COPY | PASTE| DE_SW| +* |------+------+------+------+------+------+------+------+------+------+------+------| +* |C(TAB)| TAB | ESC | ENT |VIM_GG| MPLY | <- | ↓ | ↑ | -> | END | VIM_O| +* |------+------+------+------+------+------+------+------+------+------+------+------| +* | LSFT | XXXX |S(DEL)| CAPS | VIM_V| MUTE | HOME | PGDN | LSFT | RFST | C(F) | C(F) | +* |------+------+------+------+------+------+------+------+------+------+------+------| +* | XXXX | XXXX | ____ | BSPC | ____ | ____ | ENT | DEL | ____ | ____ | DE_SW| +* `-----------------------------------------------------------------------------------' +*/ +/* _VIM +* ,-----------------------------------------------------------------------------------. +* |A(TAB)| C(->)| !LANG|A(GRV)| C(<-)| >>| | HOME | -> | PGUP | COPY | PASTE| DE_SW| +* |------+------+------+------+------+------+------+------+------+------+------+------| +* |C(TAB)| TAB | ESC | ENT |VIM_GG| MPLY | <- | ↓ | ↑ | -> | END | VIM_O| +* |------+------+------+------+------+------+------+------+------+------+------+------| +* | LSFT | XXXX |S(DEL)| CAPS | VIM_V| MUTE | HOME | PGDN | LSFT | RFST | C(F) | C(F) | +* |------+------+------+------+------+------+------+------+------+------+------+------| +* | XXXX | XXXX | !VIM | BSPC | ____ | ____ | ENT | DEL | ____ | ↓ | ↑ | +* `-----------------------------------------------------------------------------------' +*/ +/* _NUM +* ,-----------------------------------------------------------------------------------. +* | F1 | F2 | F3 | F4 | |<< |NUMLCK| >>| | 7 | 8 | 9 | - | ____ | +* |------+------+------+------+------+------+------+------+------+------+------+------| +* | F5 | F6 | F7 | F8 | Vol+ | MPLY | * | 4 | 5 | 6 | + | . | +* |------+------+------+------+------+------+------+------+------+------+------+------| +* | F9 | F10 | F11 | F12 | Vol- | MUTE | = | 1 | 2 | 3 | / | , | +* |------+------+------+------+------+------+------+------+------+------+------+------| +* | ____ | ____ | ____ | ____ | ____ | ____ | 0 | . | , | = | ____ | +* `-----------------------------------------------------------------------------------' +*/ +/* _MOUSE +* ,-----------------------------------------------------------------------------------. +* | XXXX | XXXX | MBTN4| MBTN5| XXXX | Bri+ | XXXX | MWHL↑|MAUS↑ | MWHL↑| XXXX | XXXX | +* |------+------+------+------+------+------+------+------+------+------+------+------| +* | XXXX | MBTN3| MBTN2| MBTN1| XXXX | MPLY | XXXX |MAUS<-|MAUS↓ |MAUS->| XXXX | XXXX | +* |------+------+------+------+------+------+------+------+------+------+------+------| +* | F9 | XXXX | XXXX | XXXX | XXXX | Bri- | XXXX | MWHL↓| XXXX | XXXX | ____ | XXXX | +* |------+------+------+------+------+------+------+------+------+------+------+------| +* |!MOUSE| XXXX | XXXX | ____ | XXXX | MAUS_ACCEL2 | ____ | XXXX | XXXX | ↓ | ↑ | +* `-----------------------------------------------------------------------------------' + */ diff --git a/keyboards/planck/keymaps/jweickm/rules.mk b/keyboards/planck/keymaps/jweickm/rules.mk new file mode 100644 index 000000000000..067ac4768c9d --- /dev/null +++ b/keyboards/planck/keymaps/jweickm/rules.mk @@ -0,0 +1,5 @@ +CONSOLE_ENABLE = no # Console for debug +LEADER_ENABLE = yes +TAP_DANCE_ENABLE = yes # enable tap dance functionality + +SRC += muse.c diff --git a/keyboards/planck/keymaps/kanbara/rules.mk b/keyboards/planck/keymaps/kanbara/rules.mk index 4e1e3009742b..1286dbfa86e9 100644 --- a/keyboards/planck/keymaps/kanbara/rules.mk +++ b/keyboards/planck/keymaps/kanbara/rules.mk @@ -1,4 +1,4 @@ -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no EXTRAKEY_ENABLE = yes CONSOLE_ENABLE = no diff --git a/keyboards/planck/keymaps/khord/config.h b/keyboards/planck/keymaps/khord/config.h index 055d741c62ba..819cef60c66b 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/kuatsure/config.h b/keyboards/planck/keymaps/kuatsure/config.h new file mode 100644 index 000000000000..8d832285bcd7 --- /dev/null +++ b/keyboards/planck/keymaps/kuatsure/config.h @@ -0,0 +1,33 @@ +/* Copyright 2020 kuatsure + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#ifdef AUDIO_ENABLE + #define STARTUP_SONG SONG(PLANCK_SOUND) + // #define STARTUP_SONG SONG(NO_SOUND) + + #define GAME_SOUND DVORAK_SOUND + + #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \ + SONG(GAME_SOUND) \ + } +#endif + +#define MIDI_BASIC + +// Most tactile encoders have detents every 4 stages +#define ENCODER_RESOLUTION 4 diff --git a/keyboards/planck/keymaps/kuatsure/keymap.c b/keyboards/planck/keymaps/kuatsure/keymap.c new file mode 100644 index 000000000000..6ce1049b8077 --- /dev/null +++ b/keyboards/planck/keymaps/kuatsure/keymap.c @@ -0,0 +1,318 @@ +/* Copyright 2015-2017 Jack Humbert + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +#include "muse.h" +#include "kuatsure.h" + +#define LAYOUT_planck_grid_wrapper(...) LAYOUT_planck_grid(__VA_ARGS__) + +enum planck_layers { + _QWERTY, + _GAME, + _GAME_LOWER, + _GAME_RAISE, + _MOUSE, + _LOWER, + _RAISE, + _ADJUST +}; + +enum planck_keycodes { + QWERTY = USER_SAFE_RANGE, + GAME, +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) +#define MOUSE TG(_MOUSE) +#define G_LOWER MO(_GAME_LOWER) +#define G_RAISE MO(_GAME_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Tab/M| Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc/C| A | S | D | F | G | H | J | K | L | ; | ' | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / | Ent | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Mute | Ldr | Alt | GUI |Lower | RSE | SPC | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_QWERTY] = LAYOUT_planck_grid_wrapper( + KT_MTAB, _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, KC_BSPC, + KT_CESC, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, KC_QUOT, + KT_LSFT, _________________QWERTY_L3_________________, _________________QWERTY_R3_________________, KC_ENT, + KC_MPLY, KC_LEAD, KC_LALT, KC_LGUI, LOWER, RAISE, KC_SPC, KC_SPC, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT +), + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | | ! | & | Up | | ` | | { | } | _ | | | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | Del | Left | Down | Right| ~ | = | ( | ) | + | : | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | VolD | Prev | Play | Next | VolU | - | [ | ] | | ? |Mouse | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | Home | PgDn | PgUp | End | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = LAYOUT_planck_grid_wrapper( + _______, KC_EXLM, KC_AMPR, KC_UP, _______, KC_GRV, _______, ____CRBRACES____, KC_UNDS, _______, KC_PIPE, + _______, KC_DEL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TILD, KC_EQL, _____PARENS_____, KC_PLUS, KC_COLN, KC_DQT , + _______, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, KC_MINS, ___SQBRACKETS___, _______, KC_QUES, MOUSE , + _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END +), + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | | F9 | F10 | F11 | F12 | | * | 7 | 8 | 9 | 0 | \ | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | F5 | F6 | F7 | F8 | | = | 4 | 5 | 6 | + | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F1 | F2 | F3 | F4 | | - | 1 | 2 | 3 | / | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | 0 | 0 | | | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = LAYOUT_planck_grid_wrapper( + _______, ____________FUNCTION_3____________, _______, KC_ASTR, KC_7, KC_8, KC_9, KC_0, KC_BSLS, + _______, ____________FUNCTION_2____________, _______, KC_EQL, KC_4, KC_5, KC_6, KC_PLUS, _______, + _______, ____________FUNCTION_1____________, _______, KC_MINS, KC_1, KC_2, KC_3, KC_SLASH, _______, + _______, _______, _______, _______, _______, _______, _______, KC_0, KC_0, _______, _______, _______ +), + +/* Mouse + * ,-----------------------------------------------------------------------------------. + * | | | Btn1 | mUP | Btn2 | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | mLEFT| mDWN | mRGHT| | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | Btn3 | Btn4 | Btn5 | | | | | | |Mouse | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_MOUSE] = LAYOUT_planck_grid_wrapper( + _______, _______, KC_BTN1, KC_MS_U, KC_BTN2, _______, _______, _______, _______, _______, _______, _______, + _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, _______, _______, _______, _______, _______, + _______, _______, KC_BTN3, KC_BTN4, KC_BTN5, _______, _______, _______, _______, _______, _______, MOUSE , + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | | MAKE | FLSH | | | | | | | | | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | RESET| DEBUG| | |Aud on|AudOff| Game |Mouse | | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | VRSN | | |MusMod|Mus on|MusOff| | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = LAYOUT_planck_grid_wrapper( + _______, KB_MAKE, KB_FLSH, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, + _______, RESET, DEBUG, _______, _______, AU_ON, AU_OFF, GAME, MOUSE, _______, _______, _______, + _______, KB_VRSN, _______, _______, MU_MOD, MU_ON, MU_OFF, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), + +/* Game + * + * Mostly transparent, but wanted to disable gui key. + * Also give a key to get back to qwerty layout. + * + * Disabling the `Controlled ESC` key is also plus. + * Think BDO / Monster Hunter / D2 + * + * ,-----------------------------------------------------------------------------------. + * | Tab | | | | | | | | | | | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Ctrl | | | | | | | | | | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shft | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | |Qwerty| F14 | Spc | gLWR | gRSE | ESC | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_GAME] = LAYOUT_planck_grid_wrapper( + KC_TAB, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_LCTL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, QWERTY, KC_F14, KC_SPC, G_LOWER, G_RAISE, KC_ESC, KC_ESC, _______, _______, _______, _______ +), + +/* Game Lower + * ,-----------------------------------------------------------------------------------. + * | | 1 | 2 | 3 | 4 | ` | | F9 | F10 | F11 | F12 | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | 5 | 6 | 7 | 8 | | | F5 | F6 | F7 | F8 | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | 9 | 0 | - | = | | | F1 | F2 | F3 | F4 | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_GAME_LOWER] = LAYOUT_planck_grid_wrapper( + _______, KC_1, KC_2, KC_3, KC_4, KC_GRV, _______, ____________FUNCTION_3____________, _______, + _______, KC_5, KC_6, KC_7, KC_8, _______, _______, ____________FUNCTION_2____________, _______, + _______, KC_9, KC_0, KC_MINS, KC_EQL, _______, _______, ____________FUNCTION_1____________, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), + +/* Game Raise + * ,-----------------------------------------------------------------------------------. + * | | p7 | p8 | p9 | p0 | ` | | F9 | F10 | F11 | F12 | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | p4 | p5 | p6 | p+ | | | F5 | F6 | F7 | F8 | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | p1 | p2 | p3 | pE | | | F1 | F2 | F3 | F4 | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_GAME_RAISE] = LAYOUT_planck_grid_wrapper( + _______, KC_P7, KC_P8, KC_P9, KC_P0, KC_GRV, _______, ____________FUNCTION_3____________, _______, + _______, KC_P4, KC_P5, KC_P6, KC_PPLS, _______, _______, ____________FUNCTION_2____________, _______, + _______, KC_P1, KC_P2, KC_P3, KC_PENT, _______, _______, ____________FUNCTION_1____________, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), + +}; + +#ifdef AUDIO_ENABLE + float plover_song[][2] = SONG(PLOVER_SOUND); + float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND); +#endif + +layer_state_t layer_state_set_user(layer_state_t state) { + return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); +} + +bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + print("mode just switched to qwerty and this is a huge string\n"); + set_single_persistent_default_layer(_QWERTY); + } + return false; + break; + + case GAME: + if (record->event.pressed) { + set_single_persistent_default_layer(_GAME); + } + return false; + break; + } + return true; +} + +bool muse_mode = false; +uint8_t last_muse_note = 0; +uint16_t muse_counter = 0; +uint8_t muse_offset = 70; +uint16_t muse_tempo = 50; + +void encoder_update(bool clockwise) { + if (muse_mode) { + if (IS_LAYER_ON(_RAISE)) { + if (clockwise) { + muse_offset++; + } else { + muse_offset--; + } + } else { + if (clockwise) { + muse_tempo+=1; + } else { + muse_tempo-=1; + } + } + } else { + if (clockwise) { + if (IS_LAYER_ON(_MOUSE)) { + tap_code(KC_MS_WH_UP); + } else { + tap_code(KC_VOLU); + } + } else { + if (IS_LAYER_ON(_MOUSE)) { + tap_code(KC_MS_WH_DOWN); + } else { + tap_code(KC_VOLD); + } + } + } +} + +void dip_update(uint8_t index, bool active) { + switch (index) { + case 0: + if (active) { + #ifdef AUDIO_ENABLE + PLAY_SONG(plover_song); + #endif + layer_on(_ADJUST); + } else { + #ifdef AUDIO_ENABLE + PLAY_SONG(plover_gb_song); + #endif + layer_off(_ADJUST); + } + break; + case 1: + if (active) { + muse_mode = true; + } else { + muse_mode = false; + #ifdef AUDIO_ENABLE + stop_all_notes(); + #endif + } + } +} + +void matrix_scan_keymap(void) { + #ifdef AUDIO_ENABLE + if (muse_mode) { + if (muse_counter == 0) { + uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()]; + if (muse_note != last_muse_note) { + stop_note(compute_freq_for_midi_note(last_muse_note)); + play_note(compute_freq_for_midi_note(muse_note), 0xF); + last_muse_note = muse_note; + } + } + muse_counter = (muse_counter + 1) % muse_tempo; + } + #endif +} + +bool music_mask_user(uint16_t keycode) { + switch (keycode) { + case RAISE: + case LOWER: + return false; + default: + return true; + } +} diff --git a/keyboards/planck/keymaps/kuatsure/readme.md b/keyboards/planck/keymaps/kuatsure/readme.md new file mode 100644 index 000000000000..b1e5c642308b --- /dev/null +++ b/keyboards/planck/keymaps/kuatsure/readme.md @@ -0,0 +1 @@ +# The kuatsure Planck layout - largely based on the Preonic's & Keyboard Paradise V60's layout diff --git a/keyboards/planck/keymaps/kuatsure/rules.mk b/keyboards/planck/keymaps/kuatsure/rules.mk new file mode 100644 index 000000000000..f9fba61d3ebf --- /dev/null +++ b/keyboards/planck/keymaps/kuatsure/rules.mk @@ -0,0 +1,6 @@ +SRC += muse.c + +BACKLIGHT_ENABLE = no +LEADER_ENABLE = yes +ENCODER_ENABLE = yes +MOUSEKEY_ENABLE = yes diff --git a/keyboards/planck/keymaps/kyle/rules.mk b/keyboards/planck/keymaps/kyle/rules.mk index 5dda6ad67ba1..d86b02fd1ce4 100644 --- a/keyboards/planck/keymaps/kyle/rules.mk +++ b/keyboards/planck/keymaps/kyle/rules.mk @@ -4,7 +4,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/lae3/rules.mk b/keyboards/planck/keymaps/lae3/rules.mk index 4d91a120c660..2e02b0dd7560 100644 --- a/keyboards/planck/keymaps/lae3/rules.mk +++ b/keyboards/planck/keymaps/lae3/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/leo/rules.mk b/keyboards/planck/keymaps/leo/rules.mk index 1e877943d9b8..10de3bfc0359 100644 --- a/keyboards/planck/keymaps/leo/rules.mk +++ b/keyboards/planck/keymaps/leo/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/lja83/keymap.c b/keyboards/planck/keymaps/lja83/keymap.c index d42c5b645ef1..82862a77edbd 100644 --- a/keyboards/planck/keymaps/lja83/keymap.c +++ b/keyboards/planck/keymaps/lja83/keymap.c @@ -266,7 +266,7 @@ uint16_t muse_counter = 0; uint8_t muse_offset = 70; uint16_t muse_tempo = 50; -bool encoder_update_user(uint16_t index, bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (muse_mode) { if (IS_LAYER_ON(_RAISE)) { if (clockwise) { @@ -299,7 +299,7 @@ bool encoder_update_user(uint16_t index, bool clockwise) { return true; } -void dip_switch_update_user(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: { #ifdef AUDIO_ENABLE @@ -328,6 +328,7 @@ void dip_switch_update_user(uint8_t index, bool active) { muse_mode = false; } } + return true; } void matrix_scan_user(void) { diff --git a/keyboards/planck/keymaps/lucas/keymap.c b/keyboards/planck/keymaps/lucas/keymap.c index 26ca6a5505ed..01a2af7b195a 100644 --- a/keyboards/planck/keymaps/lucas/keymap.c +++ b/keyboards/planck/keymaps/lucas/keymap.c @@ -42,8 +42,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------' */ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DE_DOT, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DE_DQOT, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, M(1), DE_MORE, DE_QST, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DE_DQUO, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, M(1), DE_RABK, DE_QUES, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), [2] = LAYOUT_planck_grid( /* Raise @@ -57,8 +57,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |LCTL |LGUI | Tab |LALT |Lower| Space | |Mute |Vol- |Vol+ | P/P | * `-----------------------------------------------------------------------' */ - KC_NO, S(DE_AE), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, S(DE_UE), S(DE_OE), KC_NO, TG(5), - KC_DEL, DE_AE, KC_NO, DE_SS, KC_NO, KC_NO, KC_NO, KC_NO, DE_UE, DE_OE, KC_NO, RALT(KC_F12), + KC_NO, S(DE_ADIA), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, S(DE_UDIA), S(DE_ODIA), KC_NO, TG(5), + KC_DEL, DE_ADIA, KC_NO, DE_SS, KC_NO, KC_NO, KC_NO, KC_NO, DE_UDIA, DE_ODIA, KC_NO, RALT(KC_F12), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MSTP, KC_MPRV, KC_MNXT, RALT(KC_F11), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY ), @@ -144,9 +144,9 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case 1: // M(1) if (record->event.pressed) { unregister_code(KC_LSFT); - register_code(DE_LESS); + register_code(DE_LABK); } else { - unregister_code(DE_LESS); + unregister_code(DE_LABK); } break; } diff --git a/keyboards/planck/keymaps/lucas/rules.mk b/keyboards/planck/keymaps/lucas/rules.mk index 1e877943d9b8..10de3bfc0359 100644 --- a/keyboards/planck/keymaps/lucas/rules.mk +++ b/keyboards/planck/keymaps/lucas/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/lukas/rules.mk b/keyboards/planck/keymaps/lukas/rules.mk index 5dda6ad67ba1..d86b02fd1ce4 100644 --- a/keyboards/planck/keymaps/lukas/rules.mk +++ b/keyboards/planck/keymaps/lukas/rules.mk @@ -4,7 +4,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/luke/rules.mk b/keyboards/planck/keymaps/luke/rules.mk index e04815e2cafb..49547d19a069 100644 --- a/keyboards/planck/keymaps/luke/rules.mk +++ b/keyboards/planck/keymaps/luke/rules.mk @@ -4,7 +4,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/max/rules.mk b/keyboards/planck/keymaps/max/rules.mk index 5dda6ad67ba1..d86b02fd1ce4 100644 --- a/keyboards/planck/keymaps/max/rules.mk +++ b/keyboards/planck/keymaps/max/rules.mk @@ -4,7 +4,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/mgalisa/keymap.c b/keyboards/planck/keymaps/mgalisa/keymap.c index e3ecc8d7c5f3..09e829564ce2 100644 --- a/keyboards/planck/keymaps/mgalisa/keymap.c +++ b/keyboards/planck/keymaps/mgalisa/keymap.c @@ -207,7 +207,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND); #endif -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } @@ -317,7 +317,7 @@ uint16_t muse_counter = 0; uint8_t muse_offset = 70; uint16_t muse_tempo = 50; -bool encoder_update(bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (muse_mode) { if (IS_LAYER_ON(_RAISE)) { if (clockwise) { @@ -350,7 +350,7 @@ bool encoder_update(bool clockwise) { return true; } -void dip_update(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: if (active) { diff --git a/keyboards/planck/keymaps/mikethetiger/keymap.c b/keyboards/planck/keymaps/mikethetiger/keymap.c index e319fd49efcd..2fe932150198 100644 --- a/keyboards/planck/keymaps/mikethetiger/keymap.c +++ b/keyboards/planck/keymaps/mikethetiger/keymap.c @@ -176,7 +176,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND); #endif -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } @@ -256,7 +256,7 @@ uint16_t muse_counter = 0; uint8_t muse_offset = 70; uint16_t muse_tempo = 50; -bool encoder_update(bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (muse_mode) { if (IS_LAYER_ON(_RAISE)) { if (clockwise) { @@ -293,7 +293,7 @@ bool encoder_update(bool clockwise) { return true; } -void dip_update(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: if (active) { @@ -318,6 +318,7 @@ void dip_update(uint8_t index, bool active) { #endif } } + return true; } void matrix_scan_user(void) { diff --git a/keyboards/planck/keymaps/mjuma/keymap.c b/keyboards/planck/keymaps/mjuma/keymap.c index 2204fb2881fc..8aaa05864f09 100644 --- a/keyboards/planck/keymaps/mjuma/keymap.c +++ b/keyboards/planck/keymaps/mjuma/keymap.c @@ -190,7 +190,7 @@ uint16_t muse_counter = 0; uint8_t muse_offset = 70; uint16_t muse_tempo = 50; -void dip_switch_update_user(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 1: if (active) { @@ -199,6 +199,7 @@ void dip_switch_update_user(uint8_t index, bool active) { muse_mode = false; } } + return true; } void matrix_scan_user(void) { diff --git a/keyboards/planck/keymaps/mnil/keymap.c b/keyboards/planck/keymaps/mnil/keymap.c index 85d84d2c65fe..74a2f576541e 100644 --- a/keyboards/planck/keymaps/mnil/keymap.c +++ b/keyboards/planck/keymaps/mnil/keymap.c @@ -29,8 +29,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_QWERTY] = LAYOUT_planck_2x2u( - KC_TRNS, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, SE_AA, - KC_TRNS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, SE_OSLH, SE_AE, + KC_TRNS, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, SE_ARNG, + KC_TRNS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, SE_ODIA, SE_ADIA, KC_TRNS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), @@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_SYMBOLS] = LAYOUT_planck_2x2u( KC_TRNS, KC_NO, SE_PIPE, SE_LBRC, SE_RBRC, KC_NO, S(KC_5), SE_QUES, SE_AT, SE_EQL, SE_DLR, KC_BSPC, KC_TRNS, SE_LCBR, SE_RCBR, SE_LPRN, SE_RPRN, KC_NO, SE_PLUS, S(KC_1), S(KC_2), S(KC_3), SE_AMPR, KC_QUOT, - KC_TRNS, M_TILD, M_CIRC, SE_LESS, SE_GRTR, KC_NO, SE_APOS, SE_SLSH, SE_BSLS, SE_ASTR, M_BTCK, KC_ENT, + KC_TRNS, M_TILD, M_CIRC, SE_LABK, SE_RABK, KC_NO, SE_QUOT, SE_SLSH, SE_BSLS, SE_ASTR, M_BTCK, KC_ENT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), diff --git a/keyboards/planck/keymaps/mollat/rules.mk b/keyboards/planck/keymaps/mollat/rules.mk index 249f422a558b..b9760d72e29a 100644 --- a/keyboards/planck/keymaps/mollat/rules.mk +++ b/keyboards/planck/keymaps/mollat/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/motform/keymap.c b/keyboards/planck/keymaps/motform/keymap.c index 6414b5db74f6..0dd046a93aac 100644 --- a/keyboards/planck/keymaps/motform/keymap.c +++ b/keyboards/planck/keymaps/motform/keymap.c @@ -51,8 +51,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_COLEMAK] = LAYOUT_planck_grid ( - KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, SE_OSLH, SE_AA, - KC_ECTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, SE_AE, + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, SE_ODIA, SE_ARNG, + KC_ECTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, SE_ADIA, KC_SFTENT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, SE_MINS, KC_SFTENT, KC_ESC, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_BSPC, RAISE, KC_RGUI, KC_RALT, KC_HYPR, KC_MEH ), @@ -70,9 +70,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_LOWER] = LAYOUT_planck_grid ( - _______, SE_PIPE_MAC, SE_APOS, SE_AT_MAC_V, SE_AMPR, _______, KC_DOWN, KC_NO, KC_RGHT, SE_GRV, SE_GRV, SE_TILD, - _______, KC_EXLM, SE_QUO2, KC_HASH, SE_QUES, KC_PERC, KC_LEFT, SE_SLSH, SE_BSLS_MAC, SE_EQL, KC_PPLS, KC_PAST, - _______, KC_NO, KC_NO, SE_LBRC, SE_RBRC, KC_NO, KC_UP, SE_LCBR_MAC, SE_RCBR_MAC, KC_NO, KC_NO, _______, + _______, SE_LCBR, SE_QUOT, SE_AT_MAC_V, SE_AMPR, _______, KC_DOWN, KC_NO, KC_RGHT, SE_GRV, SE_GRV, SE_TILD, + _______, KC_EXLM, SE_DQUO, KC_HASH, SE_QUES, KC_PERC, KC_LEFT, SE_SLSH, S(SE_LCBR), SE_EQL, KC_PPLS, KC_PAST, + _______, KC_NO, KC_NO, SE_LBRC, SE_RBRC, KC_NO, KC_UP, S(SE_LBRC), S(SE_RBRC), KC_NO, KC_NO, _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY ), @@ -89,9 +89,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_RAISE] = LAYOUT_planck_grid ( - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, - SE_CIRC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, SE_DLR_MAC_V, - _______, KC_NO, KC_NO, SE_LESS_MAC, SE_GRTR_MAC, KC_NO, KC_NO, SE_LPRN, SE_RPRN, KC_PGUP, KC_PGDN, KC_NO, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + SE_CIRC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, SE_DLR_MAC_V, + _______, KC_NO, KC_NO, SE_SECT, SE_HALF, KC_NO, KC_NO, SE_LPRN, SE_RPRN, KC_PGUP, KC_PGDN, KC_NO, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY ), @@ -116,6 +116,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } diff --git a/keyboards/planck/keymaps/msiu/keymap.c b/keyboards/planck/keymaps/msiu/keymap.c index bc067973c48d..559767f1fb08 100644 --- a/keyboards/planck/keymaps/msiu/keymap.c +++ b/keyboards/planck/keymaps/msiu/keymap.c @@ -82,7 +82,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND); #endif -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } @@ -128,7 +128,7 @@ uint16_t muse_counter = 0; uint8_t muse_offset = 70; uint16_t muse_tempo = 50; -bool encoder_update(bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (muse_mode) { if (IS_LAYER_ON(_RAISE)) { if (clockwise) { @@ -155,7 +155,7 @@ bool encoder_update(bool clockwise) { return true; } -void dip_update(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: if (active) { @@ -180,6 +180,7 @@ void dip_update(uint8_t index, bool active) { #endif } } + return true; } void matrix_scan_user(void) { diff --git a/keyboards/planck/keymaps/muzfuz/keymap.c b/keyboards/planck/keymaps/muzfuz/keymap.c index ec2de450a41d..5e21660d011b 100644 --- a/keyboards/planck/keymaps/muzfuz/keymap.c +++ b/keyboards/planck/keymaps/muzfuz/keymap.c @@ -118,7 +118,7 @@ float plover_song[][2] = SONG(PLOVER_SOUND); float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND); #endif -uint32_t layer_state_set_user(uint32_t state) +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } @@ -177,8 +177,7 @@ uint16_t muse_counter = 0; uint8_t muse_offset = 70; uint16_t muse_tempo = 50; -bool encoder_update(bool clockwise) -{ +bool encoder_update_user(uint8_t index, bool clockwise) { if (muse_mode) { if (IS_LAYER_ON(_RAISE)) @@ -230,8 +229,7 @@ bool encoder_update(bool clockwise) return true; } -void dip_update(uint8_t index, bool active) -{ +bool encoder_update_user(uint8_t index, bool clockwise) { switch (index) { case 0: @@ -263,6 +261,7 @@ void dip_update(uint8_t index, bool active) #endif } } + return true; } void matrix_scan_user(void) diff --git a/keyboards/planck/keymaps/mwpeterson/keymap.c b/keyboards/planck/keymaps/mwpeterson/keymap.c index 961b8394bccd..dbe2f246f7a5 100644 --- a/keyboards/planck/keymaps/mwpeterson/keymap.c +++ b/keyboards/planck/keymaps/mwpeterson/keymap.c @@ -258,7 +258,7 @@ void matrix_init_user(void) { set_unicode_input_mode(UC_LNX); }; -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, LOWER_LAYER, RAISE_LAYER, ADJUST_LAYER); } diff --git a/keyboards/planck/keymaps/narze/keymap.c b/keyboards/planck/keymaps/narze/keymap.c index 81cb68ecc910..b5fd3356eac7 100644 --- a/keyboards/planck/keymaps/narze/keymap.c +++ b/keyboards/planck/keymaps/narze/keymap.c @@ -37,10 +37,6 @@ enum planck_keycodes { LSFT_LPRN, }; -// Narze : Custom Macros -#define HPR_ESC ALL_T(KC_ESC) -#define SFT_ENT SFT_T(KC_ENT) - enum process_combo_event { CB_SUPERDUPER, }; @@ -49,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Qwerty * ,-----------------------------------------------------------------------------------. - * | Tab | Q | W | E | R | T | Y | U | I | O | P | - | + * | Tab | Q | W | E | R | T | Y | U | I | O | P | F19 | * |------+------+------+------+------+-------------+------+------+------+------+------| * | Hp/Ec| A | S | D | F | G | H | J | K | L | ; | ' | * |------+------+------+------+------+------|------+------+------+------+------+------| @@ -59,10 +55,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_QWERTY] = LAYOUT_planck_grid( - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_F19, HPR_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, LSFT_LPRN, LT(_DEV, KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, LT(_SUPERDUPER, KC_SLSH), SFT_ENT, - LT(_RAISE, KC_LBRC), KC_LCTL, KC_LALT, GUI_UNDS, LOWER, KC_SPC, KC_SPC, RAISE, KC_BSPC, KC_RALT, KC_RCTL, LT(_LOWER, KC_RBRC) + LT(_RAISE, KC_LBRC), KC_LCTL, KC_LALT, GUI_UNDS, LOWER, KC_SPC, KC_SPC, RAISE, KC_BSPC, ALT_COLN, KC_RCTL, LT(_LOWER, KC_RBRC) ), /* Colemak @@ -80,7 +76,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_MINS, HPR_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, LSFT_LPRN, LT(_DEV, KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, LT(_SUPERDUPER, KC_SLSH), SFT_ENT, - LT(_RAISE, KC_LBRC), KC_LCTL, KC_LALT, GUI_UNDS, LOWER, KC_SPC, KC_SPC, RAISE, KC_BSPC, KC_RALT, KC_RCTL, LT(_LOWER, KC_RBRC) + LT(_RAISE, KC_LBRC), KC_LCTL, KC_LALT, GUI_UNDS, LOWER, KC_SPC, KC_SPC, RAISE, KC_BSPC, ALT_COLN, KC_RCTL, LT(_LOWER, KC_RBRC) ), /* Qwerty on software Colemak : Useful for gaming with qwerty keymaps! */ @@ -88,7 +84,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, CM_Q, CM_W, CM_E, CM_R, CM_T, CM_Y, CM_U, CM_I, CM_O, CM_P, KC_MINS, HPR_ESC, CM_A, CM_S, CM_D, CM_F, CM_G, CM_H, CM_J, CM_K, CM_L, CM_SCLN, KC_QUOT, LSFT_LPRN, LT(_DEV, KC_Z), CM_X, CM_C, CM_V, CM_B, CM_N, CM_M, CM_COMM, CM_DOT, LT(_SUPERDUPER, CM_SLSH), SFT_ENT, - LT(_RAISE, KC_LBRC), KC_LCTL, KC_LALT, GUI_UNDS, LOWER, KC_SPC, KC_SPC, RAISE, KC_BSPC, KC_RALT, KC_RCTL, LT(_LOWER, KC_RBRC) + LT(_RAISE, KC_LBRC), KC_LCTL, KC_LALT, GUI_UNDS, LOWER, KC_SPC, KC_SPC, RAISE, KC_BSPC, ALT_COLN, KC_RCTL, LT(_LOWER, KC_RBRC) ), /* Lower diff --git a/keyboards/planck/keymaps/narze/readme.md b/keyboards/planck/keymaps/narze/readme.md index 737171bca947..86bf426d3961 100644 --- a/keyboards/planck/keymaps/narze/readme.md +++ b/keyboards/planck/keymaps/narze/readme.md @@ -2,24 +2,9 @@ ## Key features - Qwerty + [Colemak](https://colemak.com) layouts, and you can type Qwerty on software-level Colemak as well. Very useful for gaming or when your friend wanna type something but don't use Colemak. -- [(S)uper (D)uper Mode](https://github.com/jasonrudolph/keyboard#super-duper-mode) inspired by [jasonrudolph](https://github.com/jasonrudolph), with [some extensions](https://gist.github.com/narze/861e2167784842d38771) such as backspace & forward delete. +- [(S)uper (D)uper Mode](/users/narze/readme.md) - Mouse keys with Z -## (S)uper (D)uper Mode -Press `S+D` simultaneously and hold, then... -- `H/J/K/L` for Vim-like movement -- `I/O` to move between browser tabs (Not working on Windows yet) -- `A` for `Option (Alt)` -- `F/;` for `Backspace/Forward delete` -- `A` with `H/L` to move to previous/next word -- `A` with `G/;` to delete to previous/next word -- `G` for `Cmd` (Gui/Windows) -- Available for all layouts (but plover) using physical S & D keys position in qwerty -- `Spacebar` for `Shift` (it's easier when already holding A with your pinky) -- Disable with `Raise+Lower+M` -- You can edit or add more useful keys in SUPERDUPER layer -- It can be activated by holding `/` as well, but it's slower since `LT()` uses `TAPPING_TERM` of 200ms but `S+D` uses `COMBO_TERM` of only 20ms (Can be changed within config.h) - ## Build instructions - `cd /path/to/qmk_firmware` - Ensure latest libraries are loaded `make git-submodule` diff --git a/keyboards/planck/keymaps/narze/rules.mk b/keyboards/planck/keymaps/narze/rules.mk index 9b56dc18f9a9..e066906f9d7a 100644 --- a/keyboards/planck/keymaps/narze/rules.mk +++ b/keyboards/planck/keymaps/narze/rules.mk @@ -1,6 +1,6 @@ -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) COMMAND_ENABLE = yes # Commands for debug and configuration diff --git a/keyboards/planck/keymaps/navi/keymap.c b/keyboards/planck/keymaps/navi/keymap.c index db534512762a..8141607f645d 100644 --- a/keyboards/planck/keymaps/navi/keymap.c +++ b/keyboards/planck/keymaps/navi/keymap.c @@ -119,7 +119,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } @@ -170,7 +170,7 @@ uint16_t muse_counter = 0; uint8_t muse_offset = 70; uint16_t muse_tempo = 50; -bool encoder_update(bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (muse_mode) { if (IS_LAYER_ON(_RAISE)) { if (clockwise) { diff --git a/keyboards/planck/keymaps/neo2planck/keymap.c b/keyboards/planck/keymaps/neo2planck/keymap.c index d09103c1e5c5..9684dd19d011 100644 --- a/keyboards/planck/keymaps/neo2planck/keymap.c +++ b/keyboards/planck/keymaps/neo2planck/keymap.c @@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_planck_grid( KC_ESC, DE_X, DE_V, DE_L, DE_C, DE_W, DE_K, DE_H, DE_G, DE_F, DE_Q, KC_BSPC , KC_ENT, DE_U, DE_I, DE_A, DE_E, DE_O, DE_S, DE_N, DE_R, DE_T, DE_D, DE_Y , - KC_LSFT, DE_UE, DE_OE, DE_AE, DE_P, DE_Z, DE_B, DE_M, DE_COMM, DE_DOT, DE_J, KC_LSFT , + KC_LSFT, DE_UDIA, DE_ODIA, DE_ADIA, DE_P, DE_Z, DE_B, DE_M, DE_COMM, DE_DOT, DE_J, KC_LSFT , KC_LCTL , KC_RGUI, KC_LALT, MO(2), MO(1), KC_SPC, KC_SPC, MO(1), MO(2), KC_RALT, KC_BTN2, KC_RCTL ), @@ -45,9 +45,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { `-----------------------------------------------------------------------------------' */ [1] = LAYOUT_planck_grid( - _______, _______, DE_UNDS, DE_LBRC, DE_RBRC, DE_CIRC, DE_EXLM, DE_LESS, DE_MORE, DE_EQL, DE_AMPR, DE_SS , - KC_TAB, DE_BSLS, DE_SLSH, DE_LCBR, DE_RCBR, DE_ASTR, DE_QST, DE_LPRN, DE_RPRN, DE_MINS, DE_COLN, DE_AT , - _______, DE_HASH, DE_DLR, DE_PIPE, DE_TILD, DE_ACUT, DE_PLUS, DE_PERC, DE_DQOT, DE_QUOT, DE_SCLN, _______ , + _______, _______, DE_UNDS, DE_LBRC, DE_RBRC, DE_CIRC, DE_EXLM, DE_LABK, DE_RABK, DE_EQL, DE_AMPR, DE_SS , + KC_TAB, DE_BSLS, DE_SLSH, DE_LCBR, DE_RCBR, DE_ASTR, DE_QUES, DE_LPRN, DE_RPRN, DE_MINS, DE_COLN, DE_AT , + _______, DE_HASH, DE_DLR, DE_PIPE, DE_TILD, DE_ACUT, DE_PLUS, DE_PERC, DE_DQUO, DE_QUOT, DE_SCLN, _______ , _______, _______, _______, MO(3), _______, _______, _______, _______, MO(3), _______, _______, _______ ), @@ -83,8 +83,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [3] = LAYOUT_planck_grid( XXXXXXX, XXXXXXX, KC_PSCR, KC_SLCK, KC_PAUS, XXXXXXX, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F12, XXXXXXX , - KC_TAB, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, DE_SQ3, KC_F4, KC_F5, KC_F6, KC_F11, KC_ENT , - _______, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, DE_SQ2, KC_F1, KC_F2, KC_F3, KC_F10, _______ , + KC_TAB, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, DE_SUP3, KC_F4, KC_F5, KC_F6, KC_F11, KC_ENT , + _______, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, DE_SUP2, KC_F1, KC_F2, KC_F3, KC_F10, _______ , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), }; diff --git a/keyboards/planck/keymaps/neo2planck/rules.mk b/keyboards/planck/keymaps/neo2planck/rules.mk index 6846e9c164f0..bf83171565a3 100644 --- a/keyboards/planck/keymaps/neo2planck/rules.mk +++ b/keyboards/planck/keymaps/neo2planck/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/nick/keymap.c b/keyboards/planck/keymaps/nick/keymap.c index b717ccdc81d6..d75a91edb679 100644 --- a/keyboards/planck/keymaps/nick/keymap.c +++ b/keyboards/planck/keymaps/nick/keymap.c @@ -105,11 +105,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } -bool encoder_update(bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (clockwise && !IS_LAYER_ON(_RAISE)) { tap_code(KC_MS_WH_DOWN); } else if (!clockwise && !IS_LAYER_ON(_RAISE)) { diff --git a/keyboards/planck/keymaps/nico/rules.mk b/keyboards/planck/keymaps/nico/rules.mk index 1e877943d9b8..10de3bfc0359 100644 --- a/keyboards/planck/keymaps/nico/rules.mk +++ b/keyboards/planck/keymaps/nico/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/not-quite-neo/rules.mk b/keyboards/planck/keymaps/not-quite-neo/rules.mk index 5ba0cefb41bd..b4e2e5c8156d 100644 --- a/keyboards/planck/keymaps/not-quite-neo/rules.mk +++ b/keyboards/planck/keymaps/not-quite-neo/rules.mk @@ -6,13 +6,12 @@ # the appropriate keymap folder that will get included automatically # TAP_DANCE_ENABLE = no # Enable TapDance functionality -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -USB_6KRO_ENABLE = no # 6key Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality MIDI_ENABLE = no # MIDI controls AUDIO_ENABLE = no # Audio output on port C6 @@ -20,7 +19,6 @@ AUDIO_ENABLE = no # Audio output on port C6 UNICODE_ENABLE = no # Unicode (can't be used with unicodemap) UNICODEMAP_ENABLE = no # Enable extended unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - diff --git a/keyboards/planck/keymaps/orthodeluxe/rules.mk b/keyboards/planck/keymaps/orthodeluxe/rules.mk index 36e0481b67d9..bf68f645ae06 100644 --- a/keyboards/planck/keymaps/orthodeluxe/rules.mk +++ b/keyboards/planck/keymaps/orthodeluxe/rules.mk @@ -2,4 +2,4 @@ AUDIO_ENABLE = yes BACKLIGHT_ENABLE = no KEY_LOCK_ENABLE = yes MOUSEKEY_ENABLE = no -BOOTMAGIC_ENABLE = lite +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite diff --git a/keyboards/planck/keymaps/oryx/config.h b/keyboards/planck/keymaps/oryx/config.h index a9171bf538e4..e6250bb39a56 100644 --- a/keyboards/planck/keymaps/oryx/config.h +++ b/keyboards/planck/keymaps/oryx/config.h @@ -1,16 +1,39 @@ +/* Copyright 2020 ZSA Technology Inc + * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #pragma once #ifdef AUDIO_ENABLE -#define STARTUP_SONG SONG(PLANCK_SOUND) +# define STARTUP_SONG SONG(PLANCK_SOUND) #endif #define MIDI_BASIC #define ENCODER_RESOLUTION 4 -#define ORYX_CONFIGURATOR - /* Set any config.h overrides for your specific keymap here. See config.h options at https://docs.qmk.fm/#/config_options?id=the-configh-file */ +#define ORYX_CONFIGURATOR +#define USB_SUSPEND_WAKEUP_DELAY 0 +#define FIRMWARE_VERSION u8"vAxxa/ZlQEV" +#define RGB_MATRIX_STARTUP_SPD 60 + +#define PLANCK_EZ_LED_LOWER 1 +#define PLANCK_EZ_LED_RAISE 2 +#define PLANCK_EZ_LED_ADJUST 3 diff --git a/keyboards/planck/keymaps/oryx/keymap.c b/keyboards/planck/keymaps/oryx/keymap.c index 8abe417d729f..e84b9913a8a7 100644 --- a/keyboards/planck/keymaps/oryx/keymap.c +++ b/keyboards/planck/keymaps/oryx/keymap.c @@ -1,373 +1,151 @@ -#include QMK_KEYBOARD_H -#include "muse.h" -#include "eeprom.h" -#include "keymap_german.h" -#include "keymap_nordic.h" -#include "keymap_french.h" -#include "keymap_spanish.h" -#include "keymap_hungarian.h" -#include "keymap_swedish.h" -//#include "keymap_br_abnt2.h" -#include "keymap_canadian_multilingual.h" -#include "keymap_german_ch.h" - -#define KC_MAC_UNDO LGUI(KC_Z) -#define KC_MAC_CUT LGUI(KC_X) -#define KC_MAC_COPY LGUI(KC_C) -#define KC_MAC_PASTE LGUI(KC_V) -#define KC_PC_UNDO LCTL(KC_Z) -#define KC_PC_CUT LCTL(KC_X) -#define KC_PC_COPY LCTL(KC_C) -#define KC_PC_PASTE LCTL(KC_V) -#define NO_TH ALGR(KC_T) -#define NO_ETH ALGR(KC_D) +/* Copyright 2020 ZSA Technology Inc + * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ -enum planck_layers { - _QWERTY, - _COLEMAK, - _DVORAK, - _LOWER, - _RAISE, - _PLOVER, - _ADJUST -}; +#include QMK_KEYBOARD_H enum planck_keycodes { - QWERTY = EZ_SAFE_RANGE, - COLEMAK, - DVORAK, - PLOVER, - BACKLIT, - EXT_PLV, - RGB_SLD + RGB_SLD = EZ_SAFE_RANGE, }; -#define LOWER MO(_LOWER) -#define RAISE MO(_RAISE) +enum planck_layers { + _BASE, + _LOWER, + _RAISE, + _ADJUST, +}; +# define LOWER MO(_LOWER) +# define RAISE MO(_RAISE) +// clang-format off const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -/* Qwerty - * ,-----------------------------------------------------------------------------------. - * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Esc | A | S | D | F | G | H | J | K | L | ; | " | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | - * `-----------------------------------------------------------------------------------' - */ -[_QWERTY] = LAYOUT_planck_grid( - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, - KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , - BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT -), - -/* Colemak - * ,-----------------------------------------------------------------------------------. - * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Esc | A | R | S | T | D | H | N | E | I | O | " | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | - * `-----------------------------------------------------------------------------------' - */ -[_COLEMAK] = LAYOUT_planck_grid( - KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, - KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , - BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT -), - -/* Dvorak - * ,-----------------------------------------------------------------------------------. - * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Esc | A | O | E | U | I | D | H | T | N | S | / | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | - * `-----------------------------------------------------------------------------------' - */ -[_DVORAK] = LAYOUT_planck_grid( - KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, - KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, - KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , - BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT -), - -/* Lower - * ,-----------------------------------------------------------------------------------. - * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | Next | Vol- | Vol+ | Play | - * `-----------------------------------------------------------------------------------' - */ -[_LOWER] = LAYOUT_planck_grid( - KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, - KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, - _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______, - _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY -), - -/* Raise - * ,-----------------------------------------------------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |Pg Up |Pg Dn | | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | Next | Vol- | Vol+ | Play | - * `-----------------------------------------------------------------------------------' - */ -[_RAISE] = LAYOUT_planck_grid( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, - KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, - _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, - _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY -), - -/* Plover layer (http://opensteno.org) - * ,-----------------------------------------------------------------------------------. - * | # | # | # | # | # | # | # | # | # | # | # | # | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | S | T | P | H | * | * | F | P | L | T | D | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | S | K | W | R | * | * | R | B | G | S | Z | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Exit | | | A | O | | E | U | | | | - * `-----------------------------------------------------------------------------------' - */ -[_PLOVER] = LAYOUT_planck_grid( - KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 , - XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, - XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX -), - -/* Adjust (Lower + Raise) - * v------------------------RGB CONTROL--------------------v - * ,----------------------------------------------------------------------------------- - * | | Reset|Debug | RGB |RGBMOD| HUE+ | HUE- | SAT+ | SAT- |BRGTH+|BRGTH-| Del | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | - * `-----------------------------------------------------------------------------------' - */ -[_ADJUST] = LAYOUT_planck_grid( - _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL , - _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______, - _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, TOGGLE_LAYER_COLOR, LED_LEVEL, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ -) + [_BASE] = LAYOUT_planck_grid( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPACE, + KC_ESCAPE, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCOLON, KC_QUOTE, + KC_LSHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLASH, KC_ENTER, + WEBUSB_PAIR, KC_LCTRL, KC_LALT, KC_LGUI, LOWER, KC_SPACE, KC_NO, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT + ), + + [_LOWER] = LAYOUT_planck_grid( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, + KC_DELETE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NONUS_HASH, KC_NONUS_BSLASH,KC_HOME, KC_END, _______, + KC_COMMA, _______, _______, _______, _______, _______, KC_NO, _______, KC_MEDIA_NEXT_TRACK,KC_AUDIO_VOL_DOWN,KC_AUDIO_VOL_UP,KC_MEDIA_PLAY_PAUSE + ), + + [_RAISE] = LAYOUT_planck_grid( + KC_GRAVE,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINUS, KC_EQUAL, KC_LBRACKET, KC_RBRACKET, KC_BSLASH, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NONUS_HASH, KC_NONUS_BSLASH,KC_PGUP, KC_PGDOWN, _______, + _______, _______, _______, _______, _______, _______, KC_NO, _______, KC_MEDIA_NEXT_TRACK,KC_AUDIO_VOL_DOWN,KC_AUDIO_VOL_UP,KC_MEDIA_PLAY_PAUSE + ), + + [_ADJUST] = LAYOUT_planck_grid( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_DEL, _______, AU_ON, AU_OFF, AU_TOG, _______, _______, RGB_TOG, RGB_VAI, RGB_VAD, LED_LEVEL, RESET, + _______, _______, MU_ON, MU_OFF, MU_TOG, _______, _______, RGB_MOD, RGB_HUI, RGB_HUD, TOGGLE_LAYER_COLOR, _______, + _______, _______, _______, _______, _______, _______, KC_NO, _______, _______, _______, _______, _______ + ), }; - - -#ifdef AUDIO_ENABLE - float plover_song[][2] = SONG(PLOVER_SOUND); - float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND); -#endif - -layer_state_t layer_state_set_user(layer_state_t state) { - return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); -} +// clang-format on const uint8_t PROGMEM ledmap[][DRIVER_LED_TOTAL][3] = { - [0] = { {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255}, {130,255,255} }, - - [1] = { {42,255,255}, {42,255,255}, {42,255,255}, {42,255,255}, {42,255,255}, {42,255,255}, {42,255,255}, {42,255,255}, {42,255,255}, {42,255,255}, {42,255,255}, {42,255,255}, {42,255,255}, {146,224,255}, {146,224,255}, {146,224,255}, {146,224,255}, {146,224,255}, {146,224,255}, {42,255,255}, {42,255,255}, {42,255,255}, {42,255,255}, {42,255,255}, {42,255,255}, {146,224,255}, {146,224,255}, {146,224,255}, {146,224,255}, {146,224,255}, {146,224,255}, {42,255,255}, {42,255,255}, {42,255,255}, {42,255,255}, {42,255,255}, {42,255,255}, {42,255,255}, {42,255,255}, {42,255,255}, {42,255,255}, {42,255,255}, {42,255,255}, {32,255,234}, {32,255,234}, {32,255,234}, {32,255,234} }, + [0] = {{42, 255, 255}, {42, 255, 255}, {42, 255, 255}, {42, 255, 255}, {42, 255, 255}, {42, 255, 255}, {42, 255, 255}, {42, 255, 255}, {42, 255, 255}, {42, 255, 255}, {42, 255, 255}, {42, 255, 255}, {42, 255, 255}, {146, 224, 255}, {146, 224, 255}, {146, 224, 255}, {146, 224, 255}, {146, 224, 255}, {146, 224, 255}, {42, 255, 255}, {42, 255, 255}, {42, 255, 255}, {42, 255, 255}, {42, 255, 255}, {42, 255, 255}, {146, 224, 255}, {146, 224, 255}, {146, 224, 255}, {146, 224, 255}, {146, 224, 255}, {146, 224, 255}, {42, 255, 255}, {42, 255, 255}, {42, 255, 255}, {42, 255, 255}, {42, 255, 255}, {42, 255, 255}, {42, 255, 255}, {42, 255, 255}, {42, 255, 255}, {42, 255, 255}, {42, 255, 255}, {42, 255, 255}, {32, 255, 234}, {32, 255, 234}, {32, 255, 234}, {32, 255, 234}}, - [2] = { {89,255,246}, {89,255,246}, {89,255,246}, {89,255,246}, {89,255,246}, {89,255,246}, {89,255,246}, {89,255,246}, {89,255,246}, {89,255,246}, {89,255,246}, {89,255,246}, {89,255,246}, {169,120,255}, {169,120,255}, {169,120,255}, {169,120,255}, {169,120,255}, {169,120,255}, {89,255,246}, {89,255,246}, {89,255,246}, {89,255,246}, {89,255,246}, {89,255,246}, {89,255,246}, {169,120,255}, {169,120,255}, {169,120,255}, {169,120,255}, {169,120,255}, {89,255,246}, {89,255,246}, {89,255,246}, {89,255,246}, {89,255,246}, {89,255,246}, {89,255,246}, {89,255,246}, {89,255,246}, {89,255,246}, {89,255,246}, {89,255,246}, {89,255,246}, {89,255,246}, {89,255,246}, {89,255,246} }, + [1] = {{89, 255, 246}, {89, 255, 246}, {89, 255, 246}, {89, 255, 246}, {89, 255, 246}, {89, 255, 246}, {89, 255, 246}, {89, 255, 246}, {89, 255, 246}, {89, 255, 246}, {89, 255, 246}, {89, 255, 246}, {89, 255, 246}, {169, 120, 255}, {169, 120, 255}, {169, 120, 255}, {169, 120, 255}, {169, 120, 255}, {169, 120, 255}, {89, 255, 246}, {89, 255, 246}, {89, 255, 246}, {89, 255, 246}, {89, 255, 246}, {89, 255, 246}, {89, 255, 246}, {169, 120, 255}, {169, 120, 255}, {169, 120, 255}, {169, 120, 255}, {169, 120, 255}, {89, 255, 246}, {89, 255, 246}, {89, 255, 246}, {89, 255, 246}, {89, 255, 246}, {89, 255, 246}, {89, 255, 246}, {89, 255, 246}, {89, 255, 246}, {89, 255, 246}, {89, 255, 246}, {89, 255, 246}, {89, 255, 246}, {89, 255, 246}, {89, 255, 246}, {89, 255, 246}}, - [3] = { {216,255,255}, {216,255,255}, {216,255,255}, {216,255,255}, {216,255,255}, {216,255,255}, {216,255,255}, {216,255,255}, {216,255,255}, {216,255,255}, {216,255,255}, {216,255,255}, {216,255,255}, {216,255,255}, {249,228,255}, {249,228,255}, {249,228,255}, {216,255,255}, {216,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {216,255,255}, {14,255,255}, {216,255,255}, {216,255,255}, {249,228,255}, {249,228,255}, {249,228,255}, {216,255,255}, {216,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {216,255,255}, {216,255,255}, {216,255,255}, {216,255,255}, {216,255,255}, {216,255,255}, {216,255,255}, {216,255,255}, {216,255,255}, {216,255,255}, {216,255,255}, {216,255,255}, {216,255,255} }, + [2] = {{216, 255, 255}, {216, 255, 255}, {216, 255, 255}, {216, 255, 255}, {216, 255, 255}, {216, 255, 255}, {216, 255, 255}, {216, 255, 255}, {216, 255, 255}, {216, 255, 255}, {216, 255, 255}, {216, 255, 255}, {216, 255, 255}, {216, 255, 255}, {249, 228, 255}, {249, 228, 255}, {249, 228, 255}, {216, 255, 255}, {216, 255, 255}, {105, 255, 255}, {105, 255, 255}, {105, 255, 255}, {216, 255, 255}, {14, 255, 255}, {216, 255, 255}, {216, 255, 255}, {249, 228, 255}, {249, 228, 255}, {249, 228, 255}, {216, 255, 255}, {216, 255, 255}, {105, 255, 255}, {105, 255, 255}, {105, 255, 255}, {216, 255, 255}, {216, 255, 255}, {216, 255, 255}, {216, 255, 255}, {216, 255, 255}, {216, 255, 255}, {216, 255, 255}, {216, 255, 255}, {216, 255, 255}, {216, 255, 255}, {216, 255, 255}, {216, 255, 255}, {216, 255, 255}}, }; void set_layer_color(int layer) { - for (int i = 0; i < DRIVER_LED_TOTAL; i++) { - HSV hsv = { - .h = pgm_read_byte(&ledmap[layer][i][0]), - .s = pgm_read_byte(&ledmap[layer][i][1]), - .v = pgm_read_byte(&ledmap[layer][i][2]), - }; - if (!hsv.h && !hsv.s && !hsv.v) { - rgb_matrix_set_color( i, 0, 0, 0 ); - } else { - RGB rgb = hsv_to_rgb( hsv ); - float f = (float)rgb_matrix_config.hsv.v / UINT8_MAX; - rgb_matrix_set_color( i, f * rgb.r, f * rgb.g, f * rgb.b ); + for (int i = 0; i < DRIVER_LED_TOTAL; i++) { + HSV hsv = { + .h = pgm_read_byte(&ledmap[layer][i][0]), + .s = pgm_read_byte(&ledmap[layer][i][1]), + .v = pgm_read_byte(&ledmap[layer][i][2]), + }; + if (!hsv.h && !hsv.s && !hsv.v) { + rgb_matrix_set_color(i, 0, 0, 0); + } else { + RGB rgb = hsv_to_rgb(hsv); + float f = (float)rgb_matrix_config.hsv.v / UINT8_MAX; + rgb_matrix_set_color(i, f * rgb.r, f * rgb.g, f * rgb.b); + } } - } } void rgb_matrix_indicators_user(void) { - if (g_suspend_state || keyboard_config.disable_layer_led) { return; } - switch (biton32(layer_state)) { - case 0: - set_layer_color(0); - break; - case 3: - set_layer_color(1); - break; - case 4: - set_layer_color(2); - break; - case 6: - set_layer_color(3); - break; - default: - if (rgb_matrix_get_flags() == LED_FLAG_NONE) - rgb_matrix_set_color_all(0, 0, 0); - break; - } + if (g_suspend_state || keyboard_config.disable_layer_led) { + return; + } + switch (biton32(layer_state)) { + case 1: + set_layer_color(0); + break; + case 2: + set_layer_color(1); + break; + case 3: + set_layer_color(2); + break; + default: + if (rgb_matrix_get_flags() == LED_FLAG_NONE) rgb_matrix_set_color_all(0, 0, 0); + break; + } } - bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case RGB_SLD: - if (record->event.pressed) { - rgblight_mode(1); - } - return false; - case QWERTY: - if (record->event.pressed) { - print("mode just switched to qwerty and this is a huge string\n"); - set_single_persistent_default_layer(_QWERTY); - } - return false; - break; - case COLEMAK: - if (record->event.pressed) { - set_single_persistent_default_layer(_COLEMAK); - } - return false; - break; - case DVORAK: - if (record->event.pressed) { - set_single_persistent_default_layer(_DVORAK); - } - return false; - break; - case BACKLIT: - if (record->event.pressed) { - register_code(KC_RSFT); - #ifdef BACKLIGHT_ENABLE - backlight_step(); - #endif - #ifdef KEYBOARD_planck_rev5 - PORTE &= ~(1<<6); - #endif - } else { - unregister_code(KC_RSFT); - #ifdef KEYBOARD_planck_rev5 - PORTE |= (1<<6); - #endif - } - return false; - break; - case PLOVER: - if (record->event.pressed) { - #ifdef AUDIO_ENABLE - stop_all_notes(); - PLAY_SONG(plover_song); - #endif - layer_off(_RAISE); - layer_off(_LOWER); - layer_off(_ADJUST); - layer_on(_PLOVER); - if (!eeconfig_is_enabled()) { - eeconfig_init(); - } - keymap_config.raw = eeconfig_read_keymap(); - keymap_config.nkro = 1; - eeconfig_update_keymap(keymap_config.raw); - } - return false; - break; - case EXT_PLV: - if (record->event.pressed) { - #ifdef AUDIO_ENABLE - PLAY_SONG(plover_gb_song); - #endif - layer_off(_PLOVER); - } - return false; - break; - } - return true; + switch (keycode) { + case RGB_SLD: + if (record->event.pressed) { + rgblight_mode(1); + } + return false; + } + return true; } -bool muse_mode = false; -uint8_t last_muse_note = 0; -uint16_t muse_counter = 0; -uint8_t muse_offset = 70; -uint16_t muse_tempo = 50; - -bool encoder_update(bool clockwise) { - if (muse_mode) { - if (IS_LAYER_ON(_RAISE)) { - if (clockwise) { - muse_offset++; - } else { - muse_offset--; - } - } else { - if (clockwise) { - muse_tempo+=1; - } else { - muse_tempo-=1; - } - } +bool encoder_update_user(uint8_t index, bool clockwise) { + if (clockwise) { +# ifdef MOUSEKEY_ENABLE + tap_code(KC_MS_WH_DOWN); +# else + tap_code(KC_PGDN); +# endif } else { - if (clockwise) { - #ifdef MOUSEKEY_ENABLE - register_code(KC_MS_WH_DOWN); - unregister_code(KC_MS_WH_DOWN); - #else - register_code(KC_PGDN); - unregister_code(KC_PGDN); - #endif - } else { - #ifdef MOUSEKEY_ENABLE - register_code(KC_MS_WH_UP); - unregister_code(KC_MS_WH_UP); - #else - register_code(KC_PGUP); - unregister_code(KC_PGUP); - #endif - } +# ifdef MOUSEKEY_ENABLE + tap_code(KC_MS_WH_UP); +# else + tap_code(KC_PGUP); +# endif } return true; } -void matrix_scan_user(void) { -#ifdef AUDIO_ENABLE - if (muse_mode) { - if (muse_counter == 0) { - uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()]; - if (muse_note != last_muse_note) { - stop_note(compute_freq_for_midi_note(last_muse_note)); - play_note(compute_freq_for_midi_note(muse_note), 0xF); - last_muse_note = muse_note; - } - } - muse_counter = (muse_counter + 1) % muse_tempo; +bool music_mask_user(uint16_t keycode) { + switch (keycode) { + case RAISE: + case LOWER: + return false; + default: + return true; } -#endif } + +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } diff --git a/keyboards/planck/keymaps/oryx/rules.mk b/keyboards/planck/keymaps/oryx/rules.mk index 7657a3043413..1e29b5f218f7 100644 --- a/keyboards/planck/keymaps/oryx/rules.mk +++ b/keyboards/planck/keymaps/oryx/rules.mk @@ -1,6 +1,7 @@ -SRC += muse.c # Set any rules.mk overrides for your specific keymap here. # See rules at https://docs.qmk.fm/#/config_options?id=the-rulesmk-file -LTO_ENABLE = yes +CONSOLE_ENABLE = no COMMAND_ENABLE = no MOUSEKEY_ENABLE = no +WEBUSB_ENABLE = yes +ORYX_ENABLE = yes diff --git a/keyboards/planck/keymaps/pascamel/keymap.c b/keyboards/planck/keymaps/pascamel/keymap.c index 852643218c50..13553dc399da 100644 --- a/keyboards/planck/keymaps/pascamel/keymap.c +++ b/keyboards/planck/keymaps/pascamel/keymap.c @@ -118,7 +118,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND); #endif -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } @@ -157,7 +157,7 @@ uint16_t muse_counter = 0; uint8_t muse_offset = 70; uint16_t muse_tempo = 50; -bool encoder_update(bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (muse_mode) { if (IS_LAYER_ON(_RAISE)) { if (clockwise) { @@ -184,7 +184,7 @@ bool encoder_update(bool clockwise) { return true; } -void dip_update(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: if (active) { @@ -209,6 +209,7 @@ void dip_update(uint8_t index, bool active) { #endif } } + return true; } void matrix_scan_user(void) { diff --git a/keyboards/planck/keymaps/pevecyan/keymap.c b/keyboards/planck/keymaps/pevecyan/keymap.c index 2391efebb1f4..553dd84a5d2f 100644 --- a/keyboards/planck/keymaps/pevecyan/keymap.c +++ b/keyboards/planck/keymaps/pevecyan/keymap.c @@ -132,7 +132,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | | | | * `-----------------------------------------------------------------------------------' */ -[_ALTGR] = LAYOUT_planck_grid(k +[_ALTGR] = LAYOUT_planck_grid( _______, SI_BSLS, SI_PIPE, SI_EURO, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, SI_LBRC, SI_RBRC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, SI_AT, SI_LCBR, SI_RCBR, _______, SI_LABK, SI_RABK, _______, _______, @@ -168,7 +168,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND); #endif -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } @@ -178,7 +178,7 @@ uint16_t muse_counter = 0; uint8_t muse_offset = 70; uint16_t muse_tempo = 50; -bool encoder_update(bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (muse_mode) { if (IS_LAYER_ON(_RAISE)) { if (clockwise) { @@ -205,7 +205,7 @@ bool encoder_update(bool clockwise) { return true; } -void dip_update(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: if (active) { @@ -230,6 +230,7 @@ void dip_update(uint8_t index, bool active) { #endif } } + return true; } void matrix_scan_user(void) { diff --git a/keyboards/planck/keymaps/pickle_jr/keymap.c b/keyboards/planck/keymaps/pickle_jr/keymap.c index 317ebcf3991f..31853819c6e3 100644 --- a/keyboards/planck/keymaps/pickle_jr/keymap.c +++ b/keyboards/planck/keymaps/pickle_jr/keymap.c @@ -1,4 +1,4 @@ -#include QMK_KEYBOARD_H +#include QMK_KEYBOARD_H #define _QWERTY 0 #define _LOWER 1 @@ -62,7 +62,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TABCALC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, QUOCALC, KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, SCOLNAV, KC_ENT , KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, - LBRACK , KC_LCTL, KC_PSCR, KC_LGUI, KC_BSPC, LOWER, RAISE, KC_SPC, KC_RALT, VIMSAVE, KC_RCTL, RBRACK + LBRACK , KC_LCTL, KC_PSCR, KC_LGUI, KC_BSPC, LOWER, RAISE, KC_SPC, KC_RALT, VIMSAVE, KC_RCTL, RBRACK ), /* Lower @@ -181,7 +181,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND); #endif -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); }; diff --git a/keyboards/planck/keymaps/pickle_jr/rules.mk b/keyboards/planck/keymaps/pickle_jr/rules.mk index 43e0b843f047..6933bd75551a 100644 --- a/keyboards/planck/keymaps/pickle_jr/rules.mk +++ b/keyboards/planck/keymaps/pickle_jr/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/piemod/rules.mk b/keyboards/planck/keymaps/piemod/rules.mk index 0eabfdfc19e8..3126ba9dc4ad 100644 --- a/keyboards/planck/keymaps/piemod/rules.mk +++ b/keyboards/planck/keymaps/piemod/rules.mk @@ -5,7 +5,7 @@ EXTRAKEY_ENABLE = yes AUDIO_ENABLE = yes ifeq ($(MCU),at90usb1286) -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite CONSOLE_ENABLE = no COMMAND_ENABLE = no BLUETOOTH_ENABLE = no diff --git a/keyboards/planck/keymaps/pjanx/config.h b/keyboards/planck/keymaps/pjanx/config.h new file mode 100644 index 000000000000..b38db026e06c --- /dev/null +++ b/keyboards/planck/keymaps/pjanx/config.h @@ -0,0 +1,49 @@ +/* Copyright 2015-2018 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 . + */ + +#pragma once + +#ifdef AUDIO_ENABLE + #define STARTUP_SONG SONG(PLANCK_SOUND) + // #define STARTUP_SONG SONG(NO_SOUND) + + #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \ + SONG(COLEMAK_SOUND), \ + SONG(DVORAK_SOUND) \ + } +#endif + +/* + * MIDI options + */ + +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ + +#define MIDI_BASIC + +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +//#define MIDI_ADVANCED + +// Most tactile encoders have detents every 4 stages +#define ENCODER_RESOLUTION 4 + diff --git a/keyboards/planck/keymaps/pjanx/keymap.c b/keyboards/planck/keymaps/pjanx/keymap.c new file mode 100644 index 000000000000..cf2e52623d26 --- /dev/null +++ b/keyboards/planck/keymaps/pjanx/keymap.c @@ -0,0 +1,354 @@ +/* Copyright 2015-2017 Jack Humbert + * Copyright 2021 Přemysl Eric Janouch + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +#include "muse.h" + + +enum planck_layers { + _QWERTY, + _COLEMAK, + _DVORAK, + _LOWER, + _RAISE, + _PLOVER, + _ADJUST +}; + +enum planck_keycodes { + QWERTY = SAFE_RANGE, + COLEMAK, + DVORAK, + PLOVER, + BACKLIT, + EXT_PLV +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |LCtrl | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |LShift| Z | X | C | V | B | N | M | , | . | / |RShift| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Esc | Caps | LGUI | LAlt |Lower | Space |Raise | RAlt | Down | Up |Enter | + * `-----------------------------------------------------------------------------------' + */ +[_QWERTY] = LAYOUT_planck_grid( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_ESC, KC_CAPS, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_RALT, KC_DOWN, KC_UP, KC_ENT +), + +/* Colemak + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Esc | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_COLEMAK] = LAYOUT_planck_grid( + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, + KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , + BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT +), + +/* Dvorak + * ,-----------------------------------------------------------------------------------. + * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Esc | A | O | E | U | I | D | H | T | N | S | / | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_DVORAK] = LAYOUT_planck_grid( + KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, + KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, + KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , + BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT +), + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Ins | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |RCtrl | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | RGUI | | | | | | Left | Vol- | Vol+ | Right| + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = LAYOUT_planck_grid( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_INS, + KC_RCTL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME, KC_END, _______, + _______, KC_RGUI, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_VOLD, KC_VOLU, KC_RGHT +), + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |RCtrl | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | PgDn | PgUp | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | App | | | | | | Left | Vol- | Vol+ | Right| + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = LAYOUT_planck_grid( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + KC_RCTL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGDN, KC_PGUP, _______, + _______, KC_APP, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_VOLD, KC_VOLU, KC_RGHT +), + +/* Plover layer (http://opensteno.org) + * ,-----------------------------------------------------------------------------------. + * | # | # | # | # | # | # | # | # | # | # | # | # | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | S | T | P | H | * | * | F | P | L | T | D | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | S | K | W | R | * | * | R | B | G | S | Z | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Exit | | | A | O | | E | U | | | | + * `-----------------------------------------------------------------------------------' + */ +[_PLOVER] = LAYOUT_planck_grid( + KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 , + XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, + XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX +), + +/* Adjust (Lower + Raise) + * v------------------------RGB CONTROL--------------------v + * ,-----------------------------------------------------------------------------------. + * | | Reset|Debug | RGB |RGBMOD| HUE+ | HUE- | SAT+ | SAT- |BRGTH+|BRGTH-| Del | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | |MUSmod|Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof|TermOn|TermOf| | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | M1 | M2 | M3 | | | | | <- | vv | ^^ | -> | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = LAYOUT_planck_grid( + _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL , + _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______, + _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, _______, _______, _______, + KC_MS_BTN1, KC_MS_BTN2, KC_MS_BTN3, _______, _______, _______, _______, _______, KC_MS_LEFT, KC_MS_DOWN, KC_MS_UP, KC_MS_RIGHT +) + +}; + +#ifdef AUDIO_ENABLE + float plover_song[][2] = SONG(PLOVER_SOUND); + float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND); +#endif + +layer_state_t layer_state_set_user(layer_state_t state) { + return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + print("mode just switched to qwerty and this is a huge string\n"); + set_single_persistent_default_layer(_QWERTY); + } + return false; + break; + case COLEMAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_COLEMAK); + } + return false; + break; + case DVORAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_DVORAK); + } + return false; + break; + case BACKLIT: + if (record->event.pressed) { + register_code(KC_RSFT); + #ifdef BACKLIGHT_ENABLE + backlight_step(); + #endif + #ifdef KEYBOARD_planck_rev5 + writePinLow(E6); + #endif + } else { + unregister_code(KC_RSFT); + #ifdef KEYBOARD_planck_rev5 + writePinHigh(E6); + #endif + } + return false; + break; + case PLOVER: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + stop_all_notes(); + PLAY_SONG(plover_song); + #endif + layer_off(_RAISE); + layer_off(_LOWER); + layer_off(_ADJUST); + layer_on(_PLOVER); + if (!eeconfig_is_enabled()) { + eeconfig_init(); + } + keymap_config.raw = eeconfig_read_keymap(); + keymap_config.nkro = 1; + eeconfig_update_keymap(keymap_config.raw); + } + return false; + break; + case EXT_PLV: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_SONG(plover_gb_song); + #endif + layer_off(_PLOVER); + } + return false; + break; + } + return true; +} + +bool muse_mode = false; +uint8_t last_muse_note = 0; +uint16_t muse_counter = 0; +uint8_t muse_offset = 70; +uint16_t muse_tempo = 50; + +bool encoder_update(bool clockwise) { + if (muse_mode) { + if (IS_LAYER_ON(_RAISE)) { + if (clockwise) { + muse_offset++; + } else { + muse_offset--; + } + } else { + if (clockwise) { + muse_tempo+=1; + } else { + muse_tempo-=1; + } + } + } else { + if (clockwise) { + #ifdef MOUSEKEY_ENABLE + tap_code(KC_MS_WH_DOWN); + #else + tap_code(KC_PGDN); + #endif + } else { + #ifdef MOUSEKEY_ENABLE + tap_code(KC_MS_WH_UP); + #else + tap_code(KC_PGUP); + #endif + } + } + return true; +} + +bool dip_switch_update_user(uint8_t index, bool active) { + switch (index) { + case 0: { +#ifdef AUDIO_ENABLE + static bool play_sound = false; +#endif + if (active) { +#ifdef AUDIO_ENABLE + if (play_sound) { PLAY_SONG(plover_song); } +#endif + layer_on(_ADJUST); + } else { +#ifdef AUDIO_ENABLE + if (play_sound) { PLAY_SONG(plover_gb_song); } +#endif + layer_off(_ADJUST); + } +#ifdef AUDIO_ENABLE + play_sound = true; +#endif + break; + } + case 1: + if (active) { + muse_mode = true; + } else { + muse_mode = false; + } + } + return true; +} + +void matrix_scan_user(void) { +#ifdef AUDIO_ENABLE + if (muse_mode) { + if (muse_counter == 0) { + uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()]; + if (muse_note != last_muse_note) { + stop_note(compute_freq_for_midi_note(last_muse_note)); + play_note(compute_freq_for_midi_note(muse_note), 0xF); + last_muse_note = muse_note; + } + } + muse_counter = (muse_counter + 1) % muse_tempo; + } else { + if (muse_counter) { + stop_all_notes(); + muse_counter = 0; + } + } +#endif +} + +bool music_mask_user(uint16_t keycode) { + switch (keycode) { + case RAISE: + case LOWER: + return false; + default: + return true; + } +} diff --git a/keyboards/planck/keymaps/pjanx/readme.md b/keyboards/planck/keymaps/pjanx/readme.md new file mode 100644 index 000000000000..e53397847d6a --- /dev/null +++ b/keyboards/planck/keymaps/pjanx/readme.md @@ -0,0 +1,2 @@ +# Modified Default Planck Layout + diff --git a/keyboards/planck/keymaps/pjanx/rules.mk b/keyboards/planck/keymaps/pjanx/rules.mk new file mode 100644 index 000000000000..3a551bd429bc --- /dev/null +++ b/keyboards/planck/keymaps/pjanx/rules.mk @@ -0,0 +1,2 @@ +SRC += muse.c +MOUSEKEY_ENABLE = yes diff --git a/keyboards/planck/keymaps/premek/rules.mk b/keyboards/planck/keymaps/premek/rules.mk index 1e877943d9b8..10de3bfc0359 100644 --- a/keyboards/planck/keymaps/premek/rules.mk +++ b/keyboards/planck/keymaps/premek/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/priyadi/rules.mk b/keyboards/planck/keymaps/priyadi/rules.mk index 1ce96968bca4..694d38b3f8ba 100644 --- a/keyboards/planck/keymaps/priyadi/rules.mk +++ b/keyboards/planck/keymaps/priyadi/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) @@ -13,7 +13,6 @@ UNICODE_ENABLE = no # Unicode UNICODEMAP_ENABLE = yes # Unicode map BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -API_SYSEX_ENABLE = no ifeq ($(strip $(KEYBOARD)), planck/rev4) BACKLIGHT_ENABLE = yes diff --git a/keyboards/planck/keymaps/ptillemans/keymap.c b/keyboards/planck/keymaps/ptillemans/keymap.c index c163f7372738..e671fd59ca93 100644 --- a/keyboards/planck/keymaps/ptillemans/keymap.c +++ b/keyboards/planck/keymaps/ptillemans/keymap.c @@ -232,7 +232,7 @@ uint16_t muse_counter = 0; uint8_t muse_offset = 70; uint16_t muse_tempo = 50; -bool encoder_update(bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (muse_mode) { if (IS_LAYER_ON(_RAISE)) { if (clockwise) { @@ -269,7 +269,7 @@ bool encoder_update(bool clockwise) { return true; } -void dip_update(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: if (active) { @@ -294,6 +294,7 @@ void dip_update(uint8_t index, bool active) { #endif } } + return true; } void matrix_scan_user(void) { diff --git a/keyboards/planck/keymaps/pvc/config.h b/keyboards/planck/keymaps/pvc/config.h index fc7211fe6af2..0fb08540d4ba 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 . */ -#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 . #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 . /* 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 . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -#endif diff --git a/keyboards/planck/keymaps/pvc/rules.mk b/keyboards/planck/keymaps/pvc/rules.mk index 3fb98eca86aa..bbe6711f0630 100644 --- a/keyboards/planck/keymaps/pvc/rules.mk +++ b/keyboards/planck/keymaps/pvc/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = yes # Console for debug(+400) diff --git a/keyboards/planck/keymaps/raffle/keymap.c b/keyboards/planck/keymaps/raffle/keymap.c index 350a9166c1d5..52727f35b1e4 100644 --- a/keyboards/planck/keymaps/raffle/keymap.c +++ b/keyboards/planck/keymaps/raffle/keymap.c @@ -164,7 +164,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND); #endif -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } @@ -223,7 +223,7 @@ uint16_t muse_counter = 0; uint8_t muse_offset = 70; uint16_t muse_tempo = 50; -bool encoder_update(bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (muse_mode) { if (IS_LAYER_ON(_RAISE)) { if (clockwise) { @@ -250,7 +250,7 @@ bool encoder_update(bool clockwise) { return true; } -void dip_update(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: if (active) { @@ -275,6 +275,7 @@ void dip_update(uint8_t index, bool active) { #endif } } + return true; } void matrix_scan_user(void) { diff --git a/keyboards/planck/keymaps/rai-suta/rules.mk b/keyboards/planck/keymaps/rai-suta/rules.mk index 88915dcd3c62..9341788b1643 100644 --- a/keyboards/planck/keymaps/rai-suta/rules.mk +++ b/keyboards/planck/keymaps/rai-suta/rules.mk @@ -4,7 +4,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = yes # Console for debug(+400) diff --git a/keyboards/planck/keymaps/rjhilgefort/keymap.c b/keyboards/planck/keymaps/rjhilgefort/keymap.c index d832e70515e4..08e9809e907f 100644 --- a/keyboards/planck/keymaps/rjhilgefort/keymap.c +++ b/keyboards/planck/keymaps/rjhilgefort/keymap.c @@ -154,7 +154,7 @@ uint16_t muse_counter = 0; uint8_t muse_offset = 70; uint16_t muse_tempo = 50; -bool encoder_update(bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (muse_mode) { if (IS_LAYER_ON(_RAISE)) { if (clockwise) { @@ -187,7 +187,7 @@ bool encoder_update(bool clockwise) { return true; } -void dip_switch_update_user(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: { #ifdef AUDIO_ENABLE @@ -216,6 +216,7 @@ void dip_switch_update_user(uint8_t index, bool active) { muse_mode = false; } } + return true; } void matrix_scan_user(void) { diff --git a/keyboards/planck/keymaps/rodhaene/rules.mk b/keyboards/planck/keymaps/rodhaene/rules.mk index 7db994581a08..4b9265909ffe 100644 --- a/keyboards/planck/keymaps/rodhaene/rules.mk +++ b/keyboards/planck/keymaps/rodhaene/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) @@ -14,7 +14,6 @@ AUDIO_ENABLE = yes # Audio output on port C6 UNICODE_ENABLE = no # Unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -API_SYSEX_ENABLE = no # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend \ No newline at end of file diff --git a/keyboards/planck/keymaps/rootiest/config.h b/keyboards/planck/keymaps/rootiest/config.h new file mode 100644 index 000000000000..fc1fc8176118 --- /dev/null +++ b/keyboards/planck/keymaps/rootiest/config.h @@ -0,0 +1,146 @@ +/* Copyright 2021 Chris Laprade + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +/* + * USB/POWER OPTIONS + */ +// #define USB_MAX_POWER_CONSUMPTION 500 +#define USB_SUSPEND_WAKEUP_DELAY 200 +#define USB_POLLING_INTERVAL_MS 1 + +/* + * MUSIC/AUDIO options + */ +#ifdef AUDIO_ENABLE +# define AUDIO_CLICKY +# define MUSIC_MAP +# define AUDIO_VOICES +# define AUDIO_VOICE_DEFAULT something +# define AUDIO_DAC_SAMPLE_MAX 2732U + +# define DEFAULT_LAYER_SONGS \ + { SONG(QWERTY_SOUND), SONG(COLEMAK_SOUND), SONG(DVORAK_SOUND) } + +/* Plays during keyboard startup */ +# define STARTUP_SONG SONG(NO_SOUND) + +#endif + +/* + * MIDI options + */ +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ +#define MIDI_BASIC + +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +#define MIDI_ADVANCED + +/* + * ENCODER options + */ +#define ENCODER_DIRECTION_FLIP +#define ENCODER_RESOLUTION 4 // Define number of stages between detents on encoders +#define ENCODERS_PAD_A \ + { B12 } +#define ENCODERS_PAD_B \ + { B13 } + +/* + * RGB options + */ +#ifdef RGBLIGHT_ENABLE +# define RGBLIGHT_SLEEP // Allows rgb to sleep when the host/keyboard does +# define RGBLIGHT_ANIMATIONS // Enable using rgb animations +# define RGBLIGHT_LAYERS // Enable indicating layers using layered rgb assignments +# define RGBLIGHT_LAYER_BLINK // Allows rgb layers to be blinked (activate for a set amount of time) +# define RGBLIGHT_MAX_LAYERS 32 // Overides the default (8) max number of rgb layers +# define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF // Allows rgb layers to work even when rgb is toggled off +#endif + +/* + * UNICODE options + */ +#define UNICODE_SELECTED_MODES UC_WINC, UC_LNX, UC_MAC // Define the methods used for in/outputting unicode + +/* + * TAP-DANCE options + */ +#define TAPPING_TERM 250 // Default time allowed before resetting a Tap-Dance combo +#define ONESHOT_TAP_TOGGLE 5 /* Tapping this number of times holds the key until tapped once again. */ +#define ONESHOT_TIMEOUT 5000 /* Time (in ms) before the one shot key is released */ +#define TAPPING_TOGGLE 3 + +/* + * LEADER-KEY options + */ // Used for on-board chording +#define LEADER_PER_KEY_TIMING +#define LEADER_TIMEOUT 500 + +/* + * COMBO-KEY options + */ +#define COMBO_COUNT 2 +#define COMBO_TERM 300 +/* + * MACRO per-key options + */ +#define RETRO_TAPPING_PER_KEY // Control Retro-Tap individually by key +#define TAPPING_FORCE_HOLD_PER_KEY // Control Force-Hold individually by key +#define IGNORE_MOD_TAP_INTERRUPT_PER_KEY // Control Mod-Tap-Interrupt individually by key +#define PERMISSIVE_HOLD_PER_KEY // Control Permissive-Hold individually by key + +#define MK_KINETIC_SPEED // Use kinetic acceleration for mouse-keys + +// Fall-back defines to prevent compile errors if user_song_list is missing +#ifndef ZELDA_PUZZLE2 +# define ZELDA_PUZZLE2 Q__NOTE(_G5) +#endif +#ifndef SONIC_RING2 +# define SONIC_RING2 E__NOTE(_E6) +#endif +#ifndef ZELDA_CHEST2 +# define ZELDA_CHEST2 Q__NOTE(_G5) +#endif +#ifndef COIN_SOUND2 +# define COIN_SOUND2 E__NOTE(_A5) +#endif +#ifndef ONE_UP_SOUND2 +# define ONE_UP_SOUND2 Q__NOTE(_E6) +#endif +#ifndef IMPERIAL_MARCH +# define IMPERIAL_MARCH HD_NOTE(_A4) +#endif +#ifndef MARIO_GAMEOVER +# define MARIO_GAMEOVER HD_NOTE(_C5) +#endif +#ifndef LEAD_START_SOUND +# define LEAD_START_SOUND E__NOTE(_C5) +#endif +#ifndef LEAD_SUCCESS_SOUND +# define LEAD_SUCCESS_SOUND E__NOTE(_A5), HD_NOTE(_E6), +#endif +#ifndef LEAD_FAIL_SOUND +# define LEAD_FAIL_SOUND E__NOTE(_A5), HD_NOTE(_E4), +#endif diff --git a/keyboards/planck/keymaps/rootiest/keymap.c b/keyboards/planck/keymaps/rootiest/keymap.c new file mode 100644 index 000000000000..634bf2829e08 --- /dev/null +++ b/keyboards/planck/keymaps/rootiest/keymap.c @@ -0,0 +1,1928 @@ +/* Copyright 2021 Chris Laprade + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +#include "raw_hid.h" +#include "print.h" +#include "muse.h" + +/* + * Define keyboard name to be used by UI. + * This allows for using a different name + * than the one defined by QMK for your board. + */ +#define KEEB_MODEL_NAME "The Rootiest BoogieBoard" + +// Give names to the layers so they are easier to reference +enum custom_layers { + _BASE, + _QWERTY = _BASE, + _COLEMAK, + _DVORAK, + _SYMBLS, + _RAISE = _SYMBLS, + _NUMBRS, + _LOWER = _NUMBRS, + _PLOVER, + _FEATURS, + _ADJUST = _FEATURS, + _NUMPD, + _TABULA, + _MOUSY, +}; + +#define LOWER MO(_NUMBRS) +#define RAISE MO(_SYMBLS) + +// unicode hexes +#define UC_DEG UC(0x00B0) // ° +#define UC_DEGF UC(0x2109) // ℉ + +// Time (ms) to wait between frames for the wake rgb animation +#define WAKE_ANIMATION_TIMER_FREQUENCY 50 + +// Is a display connected +// #define USING_OLED_DISPLAY false + +// wait DELAY ms before unregistering media keys +#define TAP_CODE_DELAY 10 + +// Modifier remover +#define WITHOUT_MODS(...) \ + do { \ + const uint8_t _real_mods = get_mods(); \ + clear_mods(); \ + {__VA_ARGS__} set_mods(_real_mods); \ + } while (0) + +// A whole boatload of audio "songs" defined for use by the keyboard +#ifdef AUDIO_ENABLE +float planck_song[][2] = SONG(PLANCK_SOUND); +float hello_song[][2] = SONG(ONE_UP_SOUND2); +float bye_song[][2] = SONG(GOODBYE_SOUND); +float num_song[][2] = SONG(DVORAK_SOUND); +float qwerty_song[][2] = SONG(QWERTY_SOUND); +float colemak_song[][2] = SONG(COLEMAK_SOUND); +float dvorak_song[][2] = SONG(DVORAK_SOUND); +float funk_song[][2] = SONG(COLEMAK_SOUND); +float workman_song[][2] = SONG(WORKMAN_SOUND); +float term_song[][2] = SONG(TERMINAL_SOUND); +float lover_song[][2] = SONG(PLOVER_SOUND); +float ode_song[][2] = SONG(ODE_TO_JOY); +float rock_song[][2] = SONG(ROCK_A_BYE_BABY); +float clue_song[][2] = SONG(CLUEBOARD_SOUND); +float camp_song[][2] = SONG(CAMPANELLA); +float imp_march_song[][2] = SONG(IMPERIAL_MARCH); +float gameover_song[][2] = SONG(MARIO_GAMEOVER); +float puzzle_song[][2] = SONG(ZELDA_PUZZLE2); +float caps_on[][2] = SONG(CAPS_LOCK_ON_SOUND); +float caps_off[][2] = SONG(CAPS_LOCK_OFF_SOUND); +float slctl_on[][2] = SONG(SCROLL_LOCK_ON_SOUND); +float slctl_off[][2] = SONG(SCROLL_LOCK_OFF_SOUND); +float slalt_on[][2] = SONG(NUM_LOCK_ON_SOUND); +float slalt_off[][2] = SONG(NUM_LOCK_OFF_SOUND); +float leader_started[][2] = SONG(LEAD_START_SOUND); +float leader_succeed[][2] = SONG(LEAD_SUCCESS_SOUND); +float leader_fail[][2] = SONG(LEAD_FAIL_SOUND); +float plover_song[][2] = SONG(PLOVER_SOUND); +float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND); +#endif + +// Declare stored memory config +typedef union { + uint32_t raw; + struct { + bool do_wakeup_animation : 1; + uint8_t rgbcon_tracker : 8; + bool do_wakeup_audio : 1; + }; +} user_config_t; + +user_config_t user_config; + +// Initialize variable holding the binary +// representation of active modifiers. +uint8_t mod_state = 0; + +// Declare custom keycodes +enum custom_keycodes { + MO_BASE = SAFE_RANGE, + MO_SYMBLS, + MO_NUMBRS, + MO_FEATURS, + QWERTY, + COLEMAK, + DVORAK, + PLOVER, + BACKLIT, + MUSIC_ON, + MUSIC_OFF, + EXT_PLV, + MY_RGBCON, + MY_DEGREES, + ALT_TAB, + PRINT_WPM_KEY, + IRONY, + WAKE_ANI_TOG, + WAKE_AUD_TOG, + DO_RESET, + KC_PRVWD, + KC_NXTWD, + KC_LSTRT, + KC_LEND, + KC_DLINE, + KC_REDO, + KC_SAVE, + KC_SLCTALL, + KC_ALTF4, + KC_KILL, + KC_LCUT, + KC_LCOPY, + KC_NXTAB, + KC_PRVTAB, +}; + +// Declare unicode map array +enum unicode_names { BANG, SNEK }; +const uint32_t PROGMEM unicode_map[] = { + //[UCD_BANG] = 0x203D, // ‽ + //[UCD_IRONY] = 0x2E2E, // ⸮ + [SNEK] = 0x1F40D, // 🐍 +}; + +enum combo_events { ZC_COPY, XV_PASTE }; + +const uint16_t PROGMEM copy_combo[] = {KC_Z, KC_C, COMBO_END}; +const uint16_t PROGMEM paste_combo[] = {KC_X, KC_V, COMBO_END}; + +combo_t key_combos[COMBO_COUNT] = { + [ZC_COPY] = COMBO_ACTION(copy_combo), + [XV_PASTE] = COMBO_ACTION(paste_combo), +}; + +// Tap Dance key declarations +enum { + TD_DEG_DEGF, + TD_SMILEY, + TD_LSHFT_CAPS, + TD_LCTL_STICKY, + TD_LALT_STICKY, + TD_LOWER, + TD_RAISE, +}; + +// Declare available Tap-Dance states +typedef enum { + TD_NONE, + TD_SINGLE_TAP, + TD_DOUBLE_TAP, + TD_TRIPLE_TAP, + TD_DOUBLE_SINGLE_TAP, + TD_SINGLE_HOLD, + TD_DOUBLE_HOLD, + TD_TRIPLE_HOLD, + TD_UNKNOWN, +} td_state_t; + +// Tap-Dance struct +typedef struct { + bool is_press_action; + td_state_t state; +} td_tap_t; + +// Whether or not to do the wake animation+sound +bool do_wake_animation; + +// Variable to keep track of the rgb mode assigned by the RGB_CON key +static uint8_t rgbcon_tracker = 0; + +// Used by the on-board WPM tracker +char wpm_str[12]; + +// Variables used for the alt-tab key +bool is_alt_tab_active = false; +uint16_t alt_tab_timer = 0; + +// Variables used by the Irony key +#define IRONY_HOLD_DELAY 500 +uint16_t irony_pressed_time; +bool irony_active = false; +bool irony_shifted = false; +char irony_str[4] = "⸮"; +char bang_str[4] = "‽"; + +// Variables used for the rgb wakeup animation +static uint16_t wake_rgb_timer; +static uint8_t wake_rgb_count = 0; +bool waking_up = false; +bool do_wake_audio = false; + +// Muse variables +bool muse_mode = false; +bool musical_mode = false; +uint8_t last_muse_note = 0; +uint16_t muse_counter = 0; +uint8_t muse_offset = 70; +uint16_t muse_tempo = 50; + +// Used by Leader key chords +bool did_leader_succeed; +LEADER_EXTERNS(); + +// Tap-Dance stuffs, initializing functions that are coded further below +td_state_t cur_dance(qk_tap_dance_state_t* state); +void sml_finished(qk_tap_dance_state_t* state, void* user_data); +void sml_reset(qk_tap_dance_state_t* state, void* user_data); +void scap_finished(qk_tap_dance_state_t* state, void* user_data); +void scap_reset(qk_tap_dance_state_t* state, void* user_data); +void slctl_finished(qk_tap_dance_state_t* state, void* user_data); +void slctl_reset(qk_tap_dance_state_t* state, void* user_data); +void slalt_finished(qk_tap_dance_state_t* state, void* user_data); +void slalt_reset(qk_tap_dance_state_t* state, void* user_data); +bool lctl_sticky = false; +bool lalt_sticky = false; + +// This function is called when lock indicators (caps-lock led) are changed/toggled/updated +bool led_update_user(led_t led_state) { + rgblight_set_layer_state(10, led_state.caps_lock); +#ifdef AUDIO_ENABLE + static uint8_t caps_state = 0; + if (caps_state != led_state.caps_lock) { + // When the caps-lock led state changes play sounds + led_state.caps_lock ? PLAY_SONG(caps_on) : PLAY_SONG(caps_off); + caps_state = led_state.caps_lock; + } +#endif + return true; +} + +// Define key layout/layers +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Define all the layers + [_BASE] = LAYOUT_planck_mit( // + KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, // + LT(_TABULA, KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, // + TD(TD_LSHFT_CAPS), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_SFTENT, // + TD(TD_LCTL_STICKY), KC_LEAD, KC_LGUI, TD(TD_LALT_STICKY), MO(_SYMBLS), KC_SPC, MO(_NUMBRS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT), + /* + Base Layer [0] + * ,-----------------------------------------------------------------------------------. + * |Gr/ESC| Q | W | E | R | T | Y | U | I | O | P |BckSpc| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |Tabula| A | S | D | F | G | H | J | K | L | ; | ' | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |SH/CAP| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | LCtrl|Leader| OS | Alt |Symbol| Space |Number| Left | Dwn | Up | Right| + * `-----------------------------------------------------------------------------------' + */ + + [_COLEMAK] = LAYOUT_planck_mit( // + KC_GESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, // + LT(_TABULA, KC_TAB), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, // + TD(TD_LSHFT_CAPS), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_SFTENT, // + TD(TD_LCTL_STICKY), KC_LEAD, KC_LGUI, TD(TD_LALT_STICKY), MO(_SYMBLS), KC_SPC, MO(_NUMBRS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT), + /* + Colemak Layer [1] + * ,-----------------------------------------------------------------------------------. + * |Gr/ESC| Q | W | F | P | G | J | L | U | Y | ; | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |Tabula| A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |SH/CAP| Z | X | C | V | B | K | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | LCtrl|Leader| OS | Alt |Symbol| Space |Number| Left | Dwn | Up | Right| + * `-----------------------------------------------------------------------------------' + */ + + [_DVORAK] = LAYOUT_planck_mit( // + KC_GESC, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, // + LT(_TABULA, KC_TAB), KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_TRNS, KC_S, KC_SLSH, // + TD(TD_LSHFT_CAPS), KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_SFTENT, // + TD(TD_LCTL_STICKY), KC_LEAD, KC_LGUI, TD(TD_LALT_STICKY), MO(_SYMBLS), KC_SPC, MO(_NUMBRS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT), + /* Dvorak Layer [2] + * ,-----------------------------------------------------------------------------------. + * |Gr/ESC| " | , | . | P | Y | F | G | C | R | L | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |Tabula| A | O | E | U | I | D | H | T | N | S | / | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |SH/CAP| ; | Q | J | K | X | B | M | W | V | Z |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | LCtrl|Leader| OS | Alt |Symbol| Space |Number| Left | Dwn | Up | Right| + * `-----------------------------------------------------------------------------------' + */ + [_SYMBLS] = LAYOUT_planck_mit( // + KC_MPLY, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, // + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, // + KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, LSFT(KC_LCTL), LSFT(KC_LCTL), KC_HOME, KC_END, KC_TRNS, // + TG(_NUMPD), KC_TRNS, KC_TRNS, KC_TRNS, TO(_BASE), KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY), + /* + Symbols Layer [3] + * ,-----------------------------------------------------------------------------------. + * | Play | ! | @ | # | $ | % | ^ | & | * | ( | ) |BckSpc| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |Delete| F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Shift| F7 | F8 | F9 | F10 | F11 | F12 |LShLCt|LShLCt| Home | End |------| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | TG(7)|------|------|------| Base | ----- | MO(4)| Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ + + [_NUMBRS] = LAYOUT_planck_mit( // + KC_MPLY, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, // + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, // + KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, KC_TRNS, // + TG(_NUMPD), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, TO(_BASE), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY), + + /* + Numbers Layer [4] + * ,-----------------------------------------------------------------------------------. + * | Play | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 |BckSpc| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |Delete| F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Shift| F7 | F8 | F9 | F10 | F11 | F12 | # | / | PgUp | PgDwn|------| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | TG(7)|------|------|------| MO(3)| ----- | Base | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ + + [_PLOVER] = LAYOUT_planck_mit( // + KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, // + XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, // + XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, // + EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX), + /* Plover Layer [5] + * ,-----------------------------------------------------------------------------------. + * | # | # | # | # | # | # | # | # | # | # | # | # | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | S | T | P | H | * | * | F | P | L | T | D | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | S | K | W | R | * | * | R | B | G | S | Z | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Exit | | | A | O | | E | U | | | | + * `-----------------------------------------------------------------------------------' + */ + + [_FEATURS] = LAYOUT_planck_mit( // + LCTL(LALT(KC_DEL)), DO_RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, TD(TD_DEG_DEGF), TD(TD_SMILEY), KC_DEL, // + RGB_VAI, RGB_VAD, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, DF(_BASE), DF(_COLEMAK), DF(_DVORAK), TO(_PLOVER), MY_RGBCON, // + KC_TRNS, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, CK_ON, CK_OFF, KC_ENTER, // + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, TG(_MOUSY), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + /* + Special Features Layer [6] + * ,-----------------------------------------------------------------------------------. + * |C+A+DL| Reset| Debug|RGBTog|RGBMod| Hue+ | Hue- | Sat+ | Sat- |Unicod| Emoji|Delete| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |RGBVAI|RGBVAD|MU_MOD| AU_ON|AU_OFF|RALTGU|SALTGU| Base |Colemk|Dvorak|Plover|RGBCON| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |------|MUV_DE|MUV_IN| MU_ON|MU_OFF| MI_ON|MI_OFF|TERMON|TRMOFF|CLK-ON|CLKOFF|Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |------|------|------|------|------| TG(8) |------|------|------|------|------| + * `-----------------------------------------------------------------------------------' + */ + + [_NUMPD] = LAYOUT_planck_mit( // + KC_ESC, KC_HOME, KC_UP, KC_END, KC_PERC, KC_LCBR, KC_RCBR, KC_TAB, KC_P7, KC_P8, KC_P9, KC_BSPC, // + KC_TILD, KC_LEFT, KC_DOWN, KC_RGHT, KC_BSLS, KC_LBRC, KC_RBRC, KC_PSLS, KC_P4, KC_P5, KC_P6, KC_PMNS, // + KC_LSFT, KC_SLSH, KC_CUT, KC_COPY, KC_PASTE, KC_LT, KC_GT, KC_PAST, KC_P1, KC_P2, KC_P3, KC_PPLS, // + TO(_BASE), KC_LEAD, KC_LGUI, KC_LALT, KC_LCPO, KC_SPC, KC_RCPC, KC_HASH, KC_P0, KC_PDOT, KC_PENT), + /* + Numpad Layer [7] + * ,-----------------------------------------------------------------------------------. + * | Esc | Home | Up | End | % | { | } | Tab | 7 | 8 | 9 |BckSpc| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ~ | Left | Down | Right| \ | [ | ] | / | 4 | 5 | 6 | - | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Shift| / |Ctrl+X|Ctrl+C|Ctrl+V| < | > | * | 1 | 2 | 3 | + | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Base |Leader| Alt | OS |LCtl/(| Space |)/RCtl| # | 0 | . |Enter | + * `-----------------------------------------------------------------------------------' + */ + [_TABULA] = LAYOUT_planck_mit( // + KC_ESC, KC_ALTF4, VLK_TOG, PRINT_WPM_KEY, WAKE_ANI_TOG, WAKE_AUD_TOG, KC_REDO, UC_MOD, UC_M_WC, CG_TOGG, AG_TOGG, KC_DLINE, // + KC_NXTAB, KC_SLCTALL, KC_SAVE, KC_TRNS, KC_FIND, SH_TG, SH_TG, IRONY, KC_LCUT, KC_LCOPY, KC_TRNS, KC_KILL, // + KC_LSFT, KC_UNDO, KC_CUT, KC_COPY, KC_PASTE, KC_PRVWD, KC_NXTWD, TG(_MOUSY), KC_TRNS, KC_HOME, KC_END, KC_SFTENT, // + TO(_BASE), KC_LCTL, KC_LGUI, KC_LALT, KC_LSPO, ALT_TAB, KC_RSPC, KC_PRVWD, KC_BRID, KC_BRIU, KC_NXTWD), + /* Tabular Layer [8] + * ,-----------------------------------------------------------------------------------. + * | Esc |Alt+F4|Veloci| WPM |WakANI|WakAUD|Ctrl+Y|UCMode|UCWinC|CtGUTg|AltGTg| DLine| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab |Ctrl+A|Ctrl+S|------|Ctrl+F| SWAP | SWAP | ⸮^‽ |CutLin|CpyLin|------|DelLin| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Shift|Ctrl+Z|Ctrl+X|Ctrl+C|Ctrl+V|PrVWin|NxtWin| TG(8)|------| Home | End |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Base | LCtrl| Alt | OS |LSft/(| Alt+Tab |)/RSft|PrvSel|ScrBr-|ScrBr+|NxtSel| + * `-----------------------------------------------------------------------------------' + */ + + [_MOUSY] = LAYOUT_planck_mit( // + KC_ESC, KC_BTN1, KC_MS_U, KC_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, UC_MOD, UC_M_WC, CG_TOGG, AG_TOGG, KC_BSPC, // + KC_TAB, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS, KC_TRNS, IRONY, VLK_TOG, KC_TRNS, KC_TRNS, KC_TRNS, // + KC_LSFT, KC_UNDO, KC_CUT, KC_COPY, KC_PASTE, KC_PRVWD, KC_NXTWD, KC_TRNS, KC_HOME, KC_BTN3, KC_END, KC_SFTENT, // + TO(_BASE), KC_LCTL, KC_LGUI, KC_LALT, KC_BTN1, ALT_TAB, KC_BTN2, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R)}; +/* MousePad Layer [9] + * ,-----------------------------------------------------------------------------------. + * | Esc |MsBtn1| MsUp |MsBtn2|------|------|------|UCMode|UCWinC|CtGUTg|AltGTg|BckSpc| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ~ |MsLeft|MsDown|MsRigt|------|------|------| ⸮^‽ |Veloci|------|------|------| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Shift|------|Ctrl+X|Ctrl+C|Ctrl+V|------|------|------| Home |MsBtn3| End |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Base | LCtrl| Alt | OS |MsBtn1| Alt+Tab |MsBtn2|MsWhlL|MsWhlD|MsWhlU|MsWhlR| + * `-----------------------------------------------------------------------------------' + */ + +// Define RGB layers | assign leds and their values for each rgb layer +const rgblight_segment_t PROGMEM my_warning_layer[] = RGBLIGHT_LAYER_SEGMENTS({1, 9, HSV_RED}, {0, 1, HSV_RED}); +const rgblight_segment_t PROGMEM my_allgood_layer[] = RGBLIGHT_LAYER_SEGMENTS({1, 9, HSV_GREEN}, {0, 1, HSV_GREEN}); +const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS({1, 1, HSV_RED}, {8, 1, HSV_RED}); +const rgblight_segment_t PROGMEM my_number_layer[] = RGBLIGHT_LAYER_SEGMENTS({1, 1, HSV_MAGENTA}, {8, 1, HSV_MAGENTA}); +const rgblight_segment_t PROGMEM my_symbol_layer[] = RGBLIGHT_LAYER_SEGMENTS({1, 1, HSV_GREEN}, {8, 1, HSV_GREEN}); +const rgblight_segment_t PROGMEM my_tabula_layer[] = RGBLIGHT_LAYER_SEGMENTS({3, 4, HSV_CORAL}, {1, 1, HSV_CORAL}, {8, 1, HSV_CORAL}); +const rgblight_segment_t PROGMEM my_mousy_layer[] = RGBLIGHT_LAYER_SEGMENTS({3, 4, HSV_TURQUOISE}, {1, 1, HSV_TURQUOISE}, {8, 1, HSV_TURQUOISE}, {7, 1, HSV_MAGENTA}); +const rgblight_segment_t PROGMEM my_numpad_layer[] = RGBLIGHT_LAYER_SEGMENTS({3, 4, HSV_GOLD}, {1, 1, HSV_GOLD}, {8, 1, HSV_GOLD}, {7, 1, HSV_BLUE}); +const rgblight_segment_t PROGMEM my_features_layer[] = RGBLIGHT_LAYER_SEGMENTS({3, 4, HSV_BLUE}, {1, 1, HSV_BLUE}, {8, 1, HSV_BLUE}); +const rgblight_segment_t PROGMEM my_base_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, 0, HSV_BLACK}); +const rgblight_segment_t PROGMEM my_colemak_layer[] = RGBLIGHT_LAYER_SEGMENTS({1, 1, HSV_GREEN}); +const rgblight_segment_t PROGMEM my_dvorak_layer[] = RGBLIGHT_LAYER_SEGMENTS({1, 1, HSV_ORANGE}); +const rgblight_segment_t PROGMEM my_plover_layer[] = RGBLIGHT_LAYER_SEGMENTS({1, 1, HSV_GOLD}); + +// Define the array of rgb layers. Later layers take precedence +const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(my_base_layer, // Base Layer + my_colemak_layer, // Overrides previous layer + my_dvorak_layer, // Overrides previous layers + my_symbol_layer, // Overrides previous layers + my_number_layer, // ...etc my_features_layer, // Overrides layers + my_plover_layer, // + my_features_layer, // + my_numpad_layer, // + my_tabula_layer, // + my_mousy_layer, // + my_capslock_layer, // + my_warning_layer, // + my_allgood_layer); // CapsLock Layer); + +// Configure encoders +bool encoder_update_user(uint8_t index, bool clockwise) { + if (musical_mode) { + if (clockwise) { + tap_code16(MU_MOD); + } else { + tap_code16(MU_MOD); + } + } else { + if (muse_mode) { + if (IS_LAYER_ON(_RAISE)) { + if (clockwise) { + muse_offset++; + } else { + muse_offset--; + } + } else { + if (clockwise) { + muse_tempo += 1; + } else { + muse_tempo -= 1; + } + } + } else { + if (index == 0) { /* First encoder */ + uint16_t held_keycode_timer = timer_read(); + switch (biton32(layer_state)) { + case 0: // Base Layer + if ((get_mods() & MOD_MASK_GUI)) { // GUI-ed + if (clockwise) { + tap_code(KC_RIGHT); + + } else { + tap_code(KC_LEFT); + } + } else if ((get_mods() & MOD_MASK_ALT)) { // Alt-ed + if (clockwise) { + tap_code16(LALT(KC_TAB)); // Alt+Tabbing + } else { + tap_code16(LSA(KC_TAB)); + } + } else if ((get_mods() & MOD_MASK_SHIFT)) { // Shifted + const uint8_t _real_mods = get_mods(); + unregister_code16(KC_LSFT); + unregister_code16(KC_RSFT); + clear_mods(); + if (clockwise) { + tap_code16(KC_MS_WH_DOWN); + } else { + tap_code16(KC_MS_WH_UP); + } + set_mods(_real_mods); + } else if ((get_mods() & MOD_MASK_CTRL)) { // Ctrl-ed + if (clockwise) { + tap_code16(RCTL(KC_TAB)); // Ctrl+Tabbing + } else { + tap_code16(RCS(KC_TAB)); + } + } else { // Normal or unspecified modifiers + if (clockwise) { + // Volume control requires extra timer to function correctly + register_code(KC_VOLU); + while (timer_elapsed(held_keycode_timer) < TAP_CODE_DELAY) { + // no-op + } + unregister_code(KC_VOLD); + } else { + register_code(KC_VOLD); + while (timer_elapsed(held_keycode_timer) < TAP_CODE_DELAY) { + // no-op + } + unregister_code(KC_VOLU); + } + } + return false; + break; + case 3: // Symbols Layer + if (clockwise) { + tap_code(KC_WH_D); // Mouse wheeling + } else { + tap_code(KC_WH_U); + } + return false; + break; + case 4: // Numbers Layer + if (clockwise) { + tap_code(KC_WH_D); // Mouse wheeling + } else { + tap_code(KC_WH_U); + } + return false; + break; + case 6: // Features Layer + if (clockwise) { + tap_code16(KC_DOWN); + } else { + tap_code16(KC_UP); + } + default: // Any other layer + if ((get_mods() & MOD_MASK_CSAG)) { + if (clockwise) { + WITHOUT_MODS({ SEND_STRING(SS_TAP(X_RIGHT)); }); + } else { + WITHOUT_MODS({ SEND_STRING(SS_TAP(X_LEFT)); }); + } + } else { + if (clockwise) { + tap_code(KC_DOWN); // Simple Up/Down + } else { + tap_code(KC_UP); + } + } + return false; + break; + } + } else if (index == 1) { /* Second encoder (if we had one) */ + if (clockwise) { + tap_code16(LCTL(KC_LEFT)); // Ctrl+Left/Right + } else { + tap_code16(LCTL(KC_RIGHT)); + } + } + } + } + return true; +} + +// OLED CONFIGURATION +/* +static void render_logo(void) { + static const char PROGMEM qmk_logo[] = {0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00}; + + oled_write_P(qmk_logo, false); +} +*/ + +// Process Combo events +void process_combo_event(uint16_t combo_index, bool pressed) { + switch (combo_index) { + case ZC_COPY: + if (pressed) { + tap_code16(LCTL(KC_C)); + } + break; + case XV_PASTE: + if (pressed) { + tap_code16(LCTL(KC_V)); + } + break; + } +} + +// Runs every time a key is pressed or released +bool process_record_user(uint16_t keycode, keyrecord_t* record) { +#ifdef CONSOLE_ENABLE + dprintf("KL: kc: 0x%04X, col: %u, row: %u, pressed: %b, time: %u, interrupt: %b, count: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed, record->event.time, record->tap.interrupted, record->tap.count); +#endif + // Store the current modifier state in the variable for later reference + mod_state = get_mods(); + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + set_single_persistent_default_layer(_QWERTY); + PLAY_SONG(qwerty_song); + } + return false; + break; + case COLEMAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_COLEMAK); + PLAY_SONG(colemak_song); + } + return false; + break; + case DVORAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_DVORAK); + PLAY_SONG(dvorak_song); + } + return false; + break; + case PLOVER: + if (record->event.pressed) { +#ifdef AUDIO_ENABLE + stop_all_notes(); + PLAY_SONG(plover_song); +#endif + layer_off(_RAISE); + layer_off(_LOWER); + layer_off(_ADJUST); + layer_on(_PLOVER); + if (!eeconfig_is_enabled()) { + eeconfig_init(); + } + keymap_config.raw = eeconfig_read_keymap(); + keymap_config.nkro = 1; + eeconfig_update_keymap(keymap_config.raw); + } + return false; + break; + case EXT_PLV: + if (record->event.pressed) { +#ifdef AUDIO_ENABLE + PLAY_SONG(plover_gb_song); +#endif + layer_off(_PLOVER); + } + return false; + break; + case MO_SYMBLS: + if (record->event.pressed) { + layer_on(_SYMBLS); + } else { + layer_off(_SYMBLS); + } + return false; + case MO_NUMBRS: + if (record->event.pressed) { + layer_on(_NUMBRS); + } else { + layer_off(_NUMBRS); + } + return false; + case MO_FEATURS: + if (record->event.pressed) { + layer_on(_FEATURS); + } else { + layer_off(_FEATURS); + } + return false; + case MUSIC_ON: + if (record->event.pressed) { + musical_mode = true; + register_code16(MU_ON); + } else { + unregister_code16(MU_ON); + } + break; + case MUSIC_OFF: + if (record->event.pressed) { + musical_mode = false; + register_code16(MU_OFF); + } else { + unregister_code16(MU_OFF); + } + break; + case KC_PRVWD: // Control+Left + if (record->event.pressed) { + if (keymap_config.swap_lctl_lgui) { + register_mods(mod_config(MOD_LALT)); + register_code(KC_LEFT); + } else { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_LEFT); + } + } else { + if (keymap_config.swap_lctl_lgui) { + unregister_mods(mod_config(MOD_LALT)); + unregister_code(KC_LEFT); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_LEFT); + } + } + break; + case KC_NXTWD: // Control+Right + if (record->event.pressed) { + if (keymap_config.swap_lctl_lgui) { + register_mods(mod_config(MOD_LALT)); + register_code(KC_RIGHT); + } else { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_RIGHT); + } + } else { + if (keymap_config.swap_lctl_lgui) { + unregister_mods(mod_config(MOD_LALT)); + unregister_code(KC_RIGHT); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_RIGHT); + } + } + break; + case KC_PRVTAB: // Control+Shift+Tab + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_mods(mod_config(MOD_LSFT)); + register_code(KC_TAB); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_mods(mod_config(MOD_LSFT)); + unregister_code(KC_TAB); + } + break; + case KC_NXTAB: // Control+Tab + if (record->event.pressed) { + if (keymap_config.swap_lctl_lgui) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_TAB); + } else { + register_mods(mod_config(MOD_LSFT)); + register_code(KC_TAB); + } + } else { + if (keymap_config.swap_lctl_lgui) { + unregister_mods(mod_config(MOD_LALT)); + unregister_code(KC_RIGHT); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_RIGHT); + } + } + break; + case KC_LSTRT: // Basically just Home + if (record->event.pressed) { + if (keymap_config.swap_lctl_lgui) { + // CMD-arrow on Mac, but we have CTL and GUI swapped + register_mods(mod_config(MOD_LCTL)); + register_code(KC_LEFT); + } else { + register_code(KC_HOME); + } + } else { + if (keymap_config.swap_lctl_lgui) { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_LEFT); + } else { + unregister_code(KC_HOME); + } + } + break; + case KC_LEND: // Basically just End + if (record->event.pressed) { + if (keymap_config.swap_lctl_lgui) { + // CMD-arrow on Mac, but we have CTL and GUI swapped + register_mods(mod_config(MOD_LCTL)); + register_code(KC_RIGHT); + } else { + register_code(KC_END); + } + } else { + if (keymap_config.swap_lctl_lgui) { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_RIGHT); + } else { + unregister_code(KC_END); + } + } + break; + case KC_DLINE: // Control+BackSpace + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_BSPC); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_BSPC); + } + break; + case KC_COPY: // Copy: Control+C + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_C); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_C); + } + return false; + case KC_PASTE: // Paste: Control+V + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_V); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_V); + } + return false; + case KC_CUT: // Cut: Control+X + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_X); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_X); + } + return false; + break; + case KC_UNDO: // Undo: Control+Z + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_Z); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_Z); + } + return false; + case KC_REDO: // Redo: Control+Y + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_Y); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_Y); + } + break; + case KC_SAVE: // Save: Control+S + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_S); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_S); + } + return false; + case KC_FIND: // Find: Control+F + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_F); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_F); + } + return false; + case KC_SLCTALL: // Select All: Control+A + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_A); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_A); + } + return false; + case KC_KILL: // Kill: Delete Line + if (record->event.pressed) { + tap_code(KC_HOME); + register_mods(mod_config(MOD_LSFT)); + tap_code(KC_END); + unregister_mods(mod_config(MOD_LSFT)); + tap_code(KC_DELETE); + } else { + } + return false; + case KC_LCUT: // Cut Line + if (record->event.pressed) { + tap_code(KC_HOME); + register_mods(mod_config(MOD_LSFT)); + tap_code(KC_END); + unregister_mods(mod_config(MOD_LSFT)); + register_mods(mod_config(MOD_LCTL)); + tap_code(KC_X); + unregister_mods(mod_config(MOD_LCTL)); + } else { + } + return false; + case KC_LCOPY: // Copy Line + if (record->event.pressed) { + tap_code(KC_HOME); + register_mods(mod_config(MOD_LSFT)); + tap_code(KC_END); + unregister_mods(mod_config(MOD_LSFT)); + register_mods(mod_config(MOD_LCTL)); + tap_code(KC_C); + unregister_mods(mod_config(MOD_LCTL)); + tap_code(KC_END); + } else { + } + return false; + case KC_ALTF4: // Close Window: Alt+F4 + if (record->event.pressed) { + register_mods(mod_config(MOD_LALT)); + register_code(KC_F4); + } else { + unregister_mods(mod_config(MOD_LALT)); + unregister_code(KC_F4); + } + return false; + case ALT_TAB: // Change Window: Super ⭍ Alt+Tab + if (record->event.pressed) { + if (!is_alt_tab_active) { + is_alt_tab_active = true; + register_code(KC_LALT); + } + alt_tab_timer = timer_read(); + register_code(KC_TAB); +#ifdef CONSOLE_ENABLE + dprint("I've tabbed to another window!\n"); +#endif + } else { + unregister_code(KC_TAB); + } + break; + case KC_BSPC: { + // Initialize a boolean variable that keeps track + // of the delete key status: registered or not? + static bool delkey_registered; + if (record->event.pressed) { + // Detect the activation of either shift keys + if (mod_state & MOD_MASK_SHIFT) { + // First temporarily canceling both shifts so that + // shift isn't applied to the KC_DEL keycode + del_mods(MOD_MASK_SHIFT); + register_code(KC_DEL); + // Update the boolean variable to reflect the status of KC_DEL + delkey_registered = true; + // Reapplying modifier state so that the held shift key(s) + // still work even after having tapped the Backspace/Delete key. + set_mods(mod_state); + return false; + } + } else { // on release of KC_BSPC + // In case KC_DEL is still being sent even after the release of KC_BSPC + if (delkey_registered) { + unregister_code(KC_DEL); + delkey_registered = false; + return false; + } + } + } + // Let QMK process the KC_BSPC keycode as usual outside of shift + return true; + + case DO_RESET: // Reset button with LED indication + if (record->event.pressed) { + rgblight_set_effect_range(0, 9); + rgblight_sethsv_noeeprom(HSV_RED); + rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); + rgblight_blink_layer(11, 5000); + reset_keyboard(); + } + break; + case WAKE_ANI_TOG: // Toggle the Wakeup RGB animation + if (record->event.pressed) { + user_config.do_wakeup_animation ^= 1; // Toggles the status + eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM + if (user_config.do_wakeup_animation) { + print("Wake animation enabled.\n"); + PLAY_SONG(slctl_on); + + } else { + print("Wake animation disabled.\n"); + PLAY_SONG(slctl_off); + } + } + break; + case WAKE_AUD_TOG: // Toggle the wake-up music + if (record->event.pressed) { + user_config.do_wakeup_audio ^= 1; // Toggles the status + eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM + if (user_config.do_wakeup_audio) { + print("Wake music enabled.\n"); + PLAY_SONG(slctl_on); + + } else { + print("Wake music disabled.\n"); + PLAY_SONG(slctl_off); + } + } + break; + case IRONY: // Outputs Irony/Interrobang symbols + if ((get_mods() & MOD_MASK_SHIFT)) { + irony_shifted = true; + } else { + irony_shifted = false; + } + if (record->event.pressed) { + if (irony_shifted) { + send_unicode_string(bang_str); + } else { + send_unicode_string(irony_str); + } + irony_active = true; + irony_pressed_time = timer_read(); + } else { + irony_active = false; + irony_pressed_time = 0; + irony_shifted = false; + } + return false; + case TG(_NUMPD): // Toggle the NumPad layer + if (record->event.pressed) { +#ifdef AUDIO_ENABLE + PLAY_SONG(hello_song); +#endif + print("I've activated the NumPad!\n"); + } else { + } + break; + case TG(_TABULA): // Toggle the Tabula layer + if (record->event.pressed) { +#ifdef AUDIO_ENABLE + PLAY_SONG(lover_song); +#endif + print("I've activated Tabular!\n"); + } else { + } + break; + case TG(_MOUSY): // Toggle the MouseyPad layer + if (record->event.pressed) { +#ifdef AUDIO_ENABLE + PLAY_SONG(funk_song); +#endif + print("I've activated the MousePad!\n"); + } else { + } + break; + case TO(_BASE): // Return to the base layer + if (record->event.pressed) { +#ifdef AUDIO_ENABLE + PLAY_SONG(planck_song); +#endif + print("I've returned to the Base Layer!\n"); + } else { + } + break; + case PRINT_WPM_KEY: // Prints the current average words-per-minute to the console + sprintf(wpm_str, "Current WPM: %hu", get_current_wpm()); + printf("%s\n", wpm_str); + break; + + case MY_RGBCON: // Cycles through custom RGB animation presets + if (record->event.pressed) { + // when keycode RGB-CON is pressed + user_config.rgbcon_tracker = rgbcon_tracker + 1; // Toggles the status + eeconfig_update_user(user_config.raw); + switch (rgbcon_tracker) { + case 0: + rgblight_set_effect_range(0, 9); + rgblight_sethsv(HSV_BLACK); + rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT); + print("Changed RGB mode to: Disabled RGB\n"); + rgbcon_tracker++; + break; + case 1: + rgblight_set_effect_range(0, 9); + rgblight_sethsv(HSV_WHITE); + rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT); + print("Changed RGB mode to: Static White\n"); + rgbcon_tracker++; + break; + case 2: + rgblight_set_effect_range(0, 9); + rgblight_sethsv(HSV_CYAN); + rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT); + print("Changed RGB mode to: Static Cyan\n"); + rgbcon_tracker++; + break; + case 3: + rgblight_set_effect_range(0, 9); + rgblight_sethsv(HSV_WHITE); + rgblight_mode(RGBLIGHT_MODE_BREATHING); + print("Changed RGB mode to: Breathing Lights\n"); +#ifdef AUDIO_ENABLE + print("Played Marching song!\n"); + PLAY_SONG(imp_march_song); +#endif + rgbcon_tracker++; + break; + case 4: + rgblight_set_effect_range(0, 9); + rgblight_sethsv(HSV_RED); + rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL); + print("Changed RGB mode to: Rainbow Swirl\n"); + rgbcon_tracker++; + break; + case 5: + rgblight_set_effect_range(0, 9); + rgblight_sethsv(HSV_CYAN); + rgblight_mode(RGBLIGHT_MODE_RAINBOW_MOOD); + print("Changed RGB mode to: Rainbow Mood\n"); +#ifdef AUDIO_ENABLE + print("Played Game Over song!\n"); + PLAY_SONG(gameover_song); +#endif + rgbcon_tracker = 0; + break; + case 6: + rgblight_set_effect_range(0, 9); + rgblight_sethsv(HSV_BLACK); + rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT); + print("Changed RGB mode to: Disabled RGB\n"); + rgbcon_tracker = 1; + break; + } + } else { + } + break; + } + return true; +}; + +// Runs *after* a key is pressed +void post_process_record_user(uint16_t keycode, keyrecord_t* record) { + switch (keycode) { + case DEBUG: + // Blink the warning layer when the debug key is pressed + rgblight_blink_layer_repeat(debug_enable ? 11 : 12, 1500, 3); + + // Update the console with the debug mode status + if (debug_enable) { + print("Debug mode enabled.\n"); + PLAY_SONG(slctl_on); + + } else { + print("Debug mode disabled.\n"); + PLAY_SONG(slctl_off); + } + break; + } +} + +// RGB Default Layer assignments +layer_state_t default_layer_state_set_user(layer_state_t state) { + state = update_tri_layer_state(state, _SYMBLS, _NUMBRS, _FEATURS); + + // Sets the default RGB layer states + rgblight_set_layer_state(0, layer_state_cmp(state, _BASE)); + rgblight_set_layer_state(1, layer_state_cmp(state, _COLEMAK)); + rgblight_set_layer_state(2, layer_state_cmp(state, _DVORAK)); + return state; +} + +// RGB Layer assignments +layer_state_t layer_state_set_user(layer_state_t state) { + state = update_tri_layer_state(state, _SYMBLS, _NUMBRS, _FEATURS); + + // Sets the RGB layer states + rgblight_set_layer_state(5, layer_state_cmp(state, _PLOVER)); + rgblight_set_layer_state(6, layer_state_cmp(state, _FEATURS)); + rgblight_set_layer_state(3, layer_state_cmp(state, _SYMBLS)); + rgblight_set_layer_state(4, layer_state_cmp(state, _NUMBRS)); + rgblight_set_layer_state(7, layer_state_cmp(state, _NUMPD)); + rgblight_set_layer_state(8, layer_state_cmp(state, _TABULA)); + rgblight_set_layer_state(9, layer_state_cmp(state, _MOUSY)); + return state; +} + +// Runs the wakeup rgb animation + music +void rgb_wakeup_sequence(void) { + if (waking_up) { + if ((timer_elapsed(wake_rgb_timer) > WAKE_ANIMATION_TIMER_FREQUENCY)) { + if (wake_rgb_count < 1) { + rgblight_sethsv_noeeprom(HSV_OFF); + rgblight_set_effect_range(0, 9); + } else if (wake_rgb_count < 2 && wake_rgb_count > 0) { + rgblight_sethsv_noeeprom(HSV_BLACK); + rgblight_set_effect_range(0, 2); + rgblight_sethsv_noeeprom(HSV_WHITE); + rgblight_set_effect_range(2, 9); + } else if (wake_rgb_count < 3 && wake_rgb_count > 1) { + rgblight_sethsv_noeeprom(HSV_BLACK); + rgblight_set_effect_range(0, 2); + rgblight_sethsv_noeeprom(HSV_WHITE); + rgblight_set_effect_range(2, 9); + } else if (wake_rgb_count < 4 && wake_rgb_count > 2) { + rgblight_sethsv_noeeprom(HSV_BLACK); + rgblight_set_effect_range(0, 3); + rgblight_sethsv_noeeprom(HSV_WHITE); + rgblight_set_effect_range(3, 9); + } else if (wake_rgb_count < 5 && wake_rgb_count > 3) { + rgblight_sethsv_noeeprom(HSV_BLACK); + rgblight_set_effect_range(0, 4); + rgblight_sethsv_noeeprom(HSV_WHITE); + rgblight_set_effect_range(4, 9); + } else if (wake_rgb_count < 6 && wake_rgb_count > 4) { + rgblight_sethsv_noeeprom(HSV_BLACK); + rgblight_set_effect_range(0, 5); + rgblight_sethsv_noeeprom(HSV_WHITE); + rgblight_set_effect_range(5, 9); + } else if (wake_rgb_count < 7 && wake_rgb_count > 5) { + rgblight_sethsv_noeeprom(HSV_BLACK); + rgblight_set_effect_range(0, 6); + rgblight_sethsv_noeeprom(HSV_WHITE); + rgblight_set_effect_range(6, 9); + } else if (wake_rgb_count < 8 && wake_rgb_count > 6) { + rgblight_sethsv_noeeprom(HSV_BLACK); + rgblight_set_effect_range(0, 7); + rgblight_sethsv_noeeprom(HSV_WHITE); + rgblight_set_effect_range(7, 9); + } else if (wake_rgb_count < 9 && wake_rgb_count > 7) { + rgblight_sethsv_noeeprom(HSV_BLACK); + rgblight_set_effect_range(0, 8); + rgblight_sethsv_noeeprom(HSV_WHITE); + rgblight_set_effect_range(8, 9); + } else if (wake_rgb_count < 10 && wake_rgb_count > 8) { + rgblight_sethsv_noeeprom(HSV_BLACK); + rgblight_set_effect_range(0, 0); + rgblight_sethsv_noeeprom(HSV_WHITE); + rgblight_set_effect_range(0, 9); + } else if (wake_rgb_count < 11 && wake_rgb_count > 9) { + rgblight_sethsv_noeeprom(HSV_BLACK); + rgblight_set_effect_range(0, 8); + rgblight_sethsv_noeeprom(HSV_WHITE); + rgblight_set_effect_range(8, 9); + } else if (wake_rgb_count < 12 && wake_rgb_count > 10) { + rgblight_sethsv_noeeprom(HSV_BLACK); + rgblight_set_effect_range(0, 7); + rgblight_sethsv_noeeprom(HSV_WHITE); + rgblight_set_effect_range(7, 9); + } else if (wake_rgb_count < 13 && wake_rgb_count > 11) { + rgblight_sethsv_noeeprom(HSV_BLACK); + rgblight_set_effect_range(0, 6); + rgblight_sethsv_noeeprom(HSV_WHITE); + rgblight_set_effect_range(6, 9); + } else if (wake_rgb_count < 14 && wake_rgb_count > 12) { + rgblight_sethsv_noeeprom(HSV_BLACK); + rgblight_set_effect_range(0, 5); + rgblight_sethsv_noeeprom(HSV_WHITE); + rgblight_set_effect_range(5, 9); + } else if (wake_rgb_count < 15 && wake_rgb_count > 13) { + rgblight_sethsv_noeeprom(HSV_BLACK); + rgblight_set_effect_range(0, 4); + rgblight_sethsv_noeeprom(HSV_WHITE); + rgblight_set_effect_range(4, 9); + } else if (wake_rgb_count < 16 && wake_rgb_count > 14) { + rgblight_sethsv_noeeprom(HSV_BLACK); + rgblight_set_effect_range(0, 3); + rgblight_sethsv_noeeprom(HSV_WHITE); + rgblight_set_effect_range(3, 9); + } else if (wake_rgb_count < 17 && wake_rgb_count > 15) { + rgblight_sethsv_noeeprom(HSV_BLACK); + rgblight_set_effect_range(0, 2); + rgblight_sethsv_noeeprom(HSV_WHITE); + rgblight_set_effect_range(2, 9); + } else if (wake_rgb_count < 18 && wake_rgb_count > 16) { + rgblight_sethsv_noeeprom(HSV_BLACK); + rgblight_set_effect_range(0, 1); + rgblight_sethsv_noeeprom(HSV_WHITE); + rgblight_set_effect_range(1, 9); + } else if (wake_rgb_count > 17) { + // Final frame of wake-up rgb animation + rgblight_sethsv_noeeprom(HSV_BLACK); + rgblight_set_effect_range(0, 9); + waking_up = false; + print("I have awoken!\n"); +#ifdef AUDIO_ENABLE + // Play the wake-up sound *after* we finish the animation + if (do_wake_audio) { + PLAY_SONG(puzzle_song); + } +#endif + } + rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); + wake_rgb_count++; + wake_rgb_timer = timer_read(); + } + } +} + +// Spits out some unicode special characters in response to a tap-dance +void send_degree_symbol(qk_tap_dance_state_t* state, void* user_data) { + switch (state->count) { + case 4: + // ℃ + unicode_input_start(); + register_hex(0x2103); + unicode_input_finish(); + print("You pressed the Degrees key 4 times!\n"); + reset_tap_dance(state); + break; + case 3: + //℉ + unicode_input_start(); + register_hex(0x2109); + unicode_input_finish(); + print("You pressed the Degrees key 3 times!\n"); + reset_tap_dance(state); + break; + case 2: + // € + unicode_input_start(); + register_hex(0x20AC); + unicode_input_finish(); + print("You pressed the Degrees key 2 times!\n"); + reset_tap_dance(state); + break; + case 1: + // ° + unicode_input_start(); + register_hex(0x00B0); + unicode_input_finish(); + print("You pressed the Degrees key 1 time!\n"); + reset_tap_dance(state); + break; + } +} + +// Handles per-key configuration of Retro-Tapping +bool get_retro_tapping(uint16_t keycode, keyrecord_t* record) { + switch (keycode) { + default: + return false; + } +} +// Handles per-key configuration of Mod-Tap-Interrupt +bool get_ignore_mod_tap_interrupt(uint16_t keycode, keyrecord_t* record) { + switch (keycode) { + default: + return false; + } +} +// Handles per-key configuration of Tapping Force-Hold +bool get_tapping_force_hold(uint16_t keycode, keyrecord_t* record) { + switch (keycode) { + default: + return false; + } +} +// Handles per-key configuration of Permissive-Hold +bool get_permissive_hold(uint16_t keycode, keyrecord_t* record) { + switch (keycode) { + default: + return false; + } +} +/* + * The following two functions make leader keys "musical" + * by playing sound at different stages of the leader chord + */ +// Called when you tap the Leader key +void leader_start(void) { +#ifdef AUDIO_ENABLE + PLAY_SONG(leader_started); +#endif +} +// Called when either the leader sequence is completed, or the leader timeout is hit +void leader_end(void) { + if (did_leader_succeed) { +#ifdef AUDIO_ENABLE + PLAY_SONG(leader_succeed); +#endif + } else { +#ifdef AUDIO_ENABLE + PLAY_SONG(leader_fail); +#endif + } +} + +// Monitors and labels the current state of any tap-dances +td_state_t cur_dance(qk_tap_dance_state_t* state) { + if (state->count == 1) { + if (state->interrupted || !state->pressed) return TD_SINGLE_TAP; + // Key has not been interrupted, but the key is still held. Means you want to send a 'HOLD'. + else + return TD_SINGLE_HOLD; + } else if (state->count == 2) { + if (state->interrupted) + return TD_DOUBLE_SINGLE_TAP; + else if (state->pressed) + return TD_DOUBLE_HOLD; + else + return TD_DOUBLE_TAP; + } + if (state->count == 3) { + if (state->interrupted || !state->pressed) + return TD_TRIPLE_TAP; + else + return TD_TRIPLE_HOLD; + } else + return TD_UNKNOWN; +} + +// Create an instance of 'td_tap_t' for each tap dance. +static td_tap_t sml_state = {.is_press_action = true, .state = TD_NONE}; +static td_tap_t scap_state = {.is_press_action = true, .state = TD_NONE}; +static td_tap_t slctl_state = {.is_press_action = true, .state = TD_NONE}; +static td_tap_t slalt_state = {.is_press_action = true, .state = TD_NONE}; + +// Left-Shift->Sticky-Caps tap-dance finished +void scap_finished(qk_tap_dance_state_t* state, void* user_data) { + scap_state.state = cur_dance(state); + switch (scap_state.state) { + case TD_SINGLE_HOLD: + register_code(KC_LSFT); + break; + default: + if (host_keyboard_leds() & (1 << USB_LED_CAPS_LOCK)) { + tap_code(KC_CAPS); + reset_tap_dance(state); + break; + } else { + if ((state->count) >= TAPPING_TOGGLE) { + tap_code(KC_CAPS); + reset_tap_dance(state); + break; + } else { + register_code(KC_LSFT); + break; + } + } + } +} + +// Left-Shift->Sticky-Caps tap-dance reset +void scap_reset(qk_tap_dance_state_t* state, void* user_data) { + unregister_code(KC_LSHIFT); + scap_state.state = TD_NONE; +} + +// Sticky-Left-Control tap-dance finished +void slctl_finished(qk_tap_dance_state_t* state, void* user_data) { + slctl_state.state = cur_dance(state); + switch (slctl_state.state) { + case TD_SINGLE_HOLD: + register_code(KC_LCTL); + break; + default: + if (lctl_sticky) { + unregister_code(KC_LCTL); + lctl_sticky = false; + PLAY_SONG(slctl_off); + reset_tap_dance(state); + break; + } else { + if ((state->count) >= TAPPING_TOGGLE) { + register_code(KC_LCTL); + lctl_sticky = true; + PLAY_SONG(slctl_on); + reset_tap_dance(state); + break; + } else { + register_code(KC_LCTL); + reset_tap_dance(state); + break; + } + } + } +} + +// Sticky-Left-Control tap-dance reset +void slctl_reset(qk_tap_dance_state_t* state, void* user_data) { + if (!lctl_sticky) { + unregister_code(KC_LCTL); + slctl_state.state = TD_NONE; + } else { + slctl_state.state = TD_NONE; + } +} + +// Sticky-Left-Alt tap-dance finished +void slalt_finished(qk_tap_dance_state_t* state, void* user_data) { + slalt_state.state = cur_dance(state); + switch (slalt_state.state) { + case TD_SINGLE_HOLD: + register_code(KC_LALT); + break; + default: + if (lalt_sticky) { + unregister_code(KC_LALT); + lalt_sticky = false; + PLAY_SONG(slalt_off); + reset_tap_dance(state); + break; + } else { + if ((state->count) >= TAPPING_TOGGLE) { + register_code(KC_LALT); + lalt_sticky = true; + PLAY_SONG(slalt_on); + reset_tap_dance(state); + break; + } else { + register_code(KC_LALT); + reset_tap_dance(state); + break; + } + } + } +} + +// Sticky-Left-Alt tap-dance reset +void slalt_reset(qk_tap_dance_state_t* state, void* user_data) { + if (!lalt_sticky) { + unregister_code(KC_LALT); + slalt_state.state = TD_NONE; + } else { + slalt_state.state = TD_NONE; + } +} + +// Smiley key tap-dance finished +void sml_finished(qk_tap_dance_state_t* state, void* user_data) { + sml_state.state = cur_dance(state); + switch (sml_state.state) { + default: + switch (state->count) { + default: + // 👍 + send_unicode_string("👍"); + print("You pressed the Emoji key at least 11 times!\n"); + reset_tap_dance(state); + break; + case 10: + // 👎 + send_unicode_string("👎"); + print("You pressed the Emoji key 10 times!\n"); + reset_tap_dance(state); + break; + case 9: + //🍌 + send_unicode_string("🍌"); + print("You pressed the Emoji key 9 times!\n"); + reset_tap_dance(state); + break; + case 8: + // 🍑 + send_unicode_string("🍑"); + print("You pressed the Emoji key 8 times!\n"); + reset_tap_dance(state); + break; + case 7: + // 🐕 + send_unicode_string("🐕"); + print("You pressed the Emoji key 7 times!\n"); + reset_tap_dance(state); + break; + case 6: + // 🐈 + send_unicode_string("🐈"); + print("You pressed the Emoji key 6 times!\n"); + reset_tap_dance(state); + break; + case 5: + // 🐍 + send_unicode_string("🐍"); + print("You pressed the Emoji key 5 times!\n"); + reset_tap_dance(state); + break; + case 4: + //🐒 + send_unicode_string("🐒"); + print("You pressed the Emoji key 4 times!\n"); + reset_tap_dance(state); + break; + case 3: + // 💩 + send_unicode_string("💩"); + print("You pressed the Emoji key 3 times!\n"); + reset_tap_dance(state); + break; + case 2: + // 🙁 + send_unicode_string("🙁"); + print("You pressed the Emoji key 2 times!\n"); + reset_tap_dance(state); + break; + case 1: + // 🙂 + send_unicode_string("🙂"); + print("You pressed the Emoji key 1 time!\n"); + reset_tap_dance(state); + break; + } + break; + case TD_SINGLE_HOLD: + // 👍 + send_unicode_string("👍"); + print("You single-held the Emoji key!\n"); + reset_tap_dance(state); + break; + case TD_DOUBLE_HOLD: + // 👎 + send_unicode_string("👎"); + print("You double-held the Emoji key!\n"); + reset_tap_dance(state); + break; + case TD_TRIPLE_HOLD: + //🤯 + send_unicode_string("🤯"); + print("You triple-held the Emoji key!\n"); + reset_tap_dance(state); + break; + case TD_NONE: + reset_tap_dance(state); + break; + } +} +void sml_reset(qk_tap_dance_state_t* state, void* user_data) { sml_state.state = TD_NONE; } + +// Tap Dance definitions +qk_tap_dance_action_t tap_dance_actions[] = { + // Tap once for °, twice for ℉, thrice for ℃ + [TD_DEG_DEGF] = ACTION_TAP_DANCE_FN(send_degree_symbol), // + [TD_LSHFT_CAPS] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, scap_finished, scap_reset, 200), // + [TD_LCTL_STICKY] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, slctl_finished, slctl_reset, 200), // + [TD_LALT_STICKY] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, slalt_finished, slalt_reset, 200), // + [TD_SMILEY] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, sml_finished, sml_reset, 500), +}; + +// Dip-Switch controls +void dip_switch_update_user(uint8_t index, bool active) { + switch (index) { + case 0: { +#ifdef AUDIO_ENABLE + static bool play_sound = false; +#endif + if (active) { +#ifdef AUDIO_ENABLE + if (play_sound) { + PLAY_SONG(plover_song); + } +#endif + layer_on(_ADJUST); + } else { +#ifdef AUDIO_ENABLE + if (play_sound) { + PLAY_SONG(plover_gb_song); + } +#endif + layer_off(_ADJUST); + } +#ifdef AUDIO_ENABLE + play_sound = true; +#endif + break; + } + case 1: + if (active) { + muse_mode = true; + } else { + muse_mode = false; + } + } +} + +// Runs at every complete matrix scan +void matrix_scan_user(void) { + // Some code for controlling MIDI output +#ifdef AUDIO_ENABLE + if (muse_mode) { + if (muse_counter == 0) { + uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()]; + if (muse_note != last_muse_note) { + stop_note(compute_freq_for_midi_note(last_muse_note)); + play_note(compute_freq_for_midi_note(muse_note), 0xF); + last_muse_note = muse_note; + } + } + muse_counter = (muse_counter + 1) % muse_tempo; + } else { + if (muse_counter) { + stop_all_notes(); + muse_counter = 0; + } + } +#endif + // Check the shift-state and hold-time for the Irony key + if (irony_active) { + if ((get_mods() & MOD_MASK_SHIFT)) { + irony_shifted = true; + } else { + irony_shifted = false; + } + if (timer_elapsed(irony_pressed_time) >= IRONY_HOLD_DELAY) { + if (irony_shifted) { + send_unicode_string(bang_str); + } else { + send_unicode_string(irony_str); + } + } + } + + // Monitor and respond to the current Alt+Tab state + if (is_alt_tab_active) { + if (timer_elapsed(alt_tab_timer) > 1000) { + unregister_code(KC_LALT); + is_alt_tab_active = false; + } + } + // Monitor and perform leader-key chords + LEADER_DICTIONARY() { + did_leader_succeed = leading = false; + + SEQ_ONE_KEY(KC_E) { + SEND_STRING(SS_LCTL(SS_LSFT("t"))); + did_leader_succeed = true; + } + SEQ_ONE_KEY(KC_C) { + SEND_STRING(SS_LGUI("r") SS_DELAY(250) "calc\n"); + did_leader_succeed = true; + } + else SEQ_ONE_KEY(KC_V) { + SEND_STRING(SS_LCTL("v")); + did_leader_succeed = true; + } + else SEQ_TWO_KEYS(KC_E, KC_D) { + SEND_STRING(SS_LGUI("r") "cmd\n" SS_LCTL("c")); + did_leader_succeed = true; + } + else SEQ_TWO_KEYS(KC_A, KC_C) { + SEND_STRING(SS_LCTL("a") SS_LCTL("c")); + did_leader_succeed = true; + } + else SEQ_THREE_KEYS(KC_C, KC_A, KC_T) { + send_unicode_string("😸"); + did_leader_succeed = true; + } + else SEQ_THREE_KEYS(KC_B, KC_A, KC_T) { + send_unicode_string("🦇"); + did_leader_succeed = true; + } + else SEQ_THREE_KEYS(KC_D, KC_O, KC_G) { + send_unicode_string("🐶"); + did_leader_succeed = true; + } + else SEQ_FIVE_KEYS(KC_S, KC_M, KC_I, KC_L, KC_E) { + send_unicode_string("🙂"); + did_leader_succeed = true; + } + else SEQ_FOUR_KEYS(KC_H, KC_A, KC_P, KC_Y) { + send_unicode_string("🙂"); + did_leader_succeed = true; + } + else SEQ_FIVE_KEYS(KC_H, KC_A, KC_P, KC_P, KC_Y) { + send_unicode_string("🙂"); + did_leader_succeed = true; + } + else SEQ_THREE_KEYS(KC_S, KC_A, KC_D) { + send_unicode_string("🙁"); + did_leader_succeed = true; + } + else SEQ_THREE_KEYS(KC_Y, KC_E, KC_S) { + send_unicode_string("👍"); + did_leader_succeed = true; + } + else SEQ_TWO_KEYS(KC_N, KC_O) { + send_unicode_string("👎"); + did_leader_succeed = true; + } + else SEQ_THREE_KEYS(KC_W, KC_O, KC_W) { + send_unicode_string("🤯"); + did_leader_succeed = true; + } + else SEQ_THREE_KEYS(KC_P, KC_O, KC_O) { + send_unicode_string("💩"); + did_leader_succeed = true; + } + else SEQ_FOUR_KEYS(KC_P, KC_O, KC_O, KC_P) { + send_unicode_string("💩"); + did_leader_succeed = true; + } + else SEQ_FOUR_KEYS(KC_B, KC_O, KC_A, KC_T) { + send_unicode_string("⛵"); + did_leader_succeed = true; + } + leader_end(); + } + // Run the wake-up RGB animation if performing wake-up + if (do_wake_animation) { + rgb_wakeup_sequence(); + } +} + +// Music mask controls + +bool music_mask_user(uint16_t keycode) { + switch (keycode) { + case RAISE: + case LOWER: + return false; + default: + return true; + } +} + +void suspend_power_down_user(void) { + // Runs during start of system suspend + print("Going to sleep."); +} + +void suspend_wakeup_init_user(void) { + // Runs during wake from system suspend +} + +void keyboard_post_init_user(void) { + // Print welcome message to console + printf("Welcome to %s!\n", KEEB_MODEL_NAME); + // Read the user config from EEPROM + user_config.raw = eeconfig_read_user(); + do_wake_animation = user_config.do_wakeup_animation; + do_wake_audio = user_config.do_wakeup_audio; + rgbcon_tracker = user_config.rgbcon_tracker; + + // Tell the console the status of saved config + if (user_config.do_wakeup_animation) { + print("Wake animation enabled.\n"); + } else { + print("Wake animation disabled.\n"); + } + if (user_config.do_wakeup_audio) { + print("Wake music enabled.\n"); + } else { + print("Wake music disabled.\n"); + } + switch (user_config.rgbcon_tracker) { + case 2: + print("RGB mode: Static White\n"); + break; + case 3: + print("RGB mode: Static Cyan\n"); + break; + case 4: + print("RGB mode: Breathing Lights\n"); + break; + case 5: + print("RGB mode: Rainbow Swirl\n"); + break; + case 6: + print("RGB mode: Rainbow Mood\n"); + break; + default: + print("RGB mode: Disabled RGB\n"); + break; + } + + // Enable the LED layers + rgblight_enable_noeeprom(); // Enables RGB, without saving settings + rgblight_layers = my_rgb_layers; + + /* + * Initialize the LED crawl wake animation here + * To perform it on just the first wake + */ + wake_rgb_timer = timer_read(); + waking_up = true; + + // Initialize OLED display + /* + if (USING_OLED_DISPLAY) { + print("Initializing display!\n"); + render_logo(); + } + */ +} + +// EEPROM is getting reset! +void eeconfig_init_user(void) { + user_config.raw = 0; + eeconfig_update_user(user_config.raw); // Write default value to EEPROM now +} + +// Communicate 2-way with host via HID_RAW +#ifdef RAW_ENABLE +void raw_hid_receive(uint8_t* data, uint8_t length) { + // Sample code below simply echoes back to the console any data received by the raw_hid process + +# ifdef CONSOLE_ENABLE + dprint("Received USB data from host system:\n"); + dprintf("%s\n", data); +# endif +} +#endif diff --git a/keyboards/planck/keymaps/rootiest/readme.md b/keyboards/planck/keymaps/rootiest/readme.md new file mode 100644 index 000000000000..7932ce3fee3c --- /dev/null +++ b/keyboards/planck/keymaps/rootiest/readme.md @@ -0,0 +1,37 @@ + +![Layout Image](https://github.com/rootiest/rootiest.github.io/raw/main/img/rootiest-planck_legend.png) + +# The Rootiest Planck Layout + +This layout takes advantage of as many QMK features as possible for a huge complicated beast of a keyboard! + +## Features include + +- Encoder functions further extended by layers and modifiers +- Extensive use of the on-board speaker +- Extensive use of the backlight LEDs for startup animations, layer indicators, and bootloader/debug warnings, etc +- Many layers, both toggled and momentary. +- A toggled Numpad layer, with an emphasis on coding/accounting and with arrow keys on WASD +- A "Tabular" layer accessed by holding Tab with frequently used functions, including Alt+Tab via pressing Space +- A toggled Mouse-keys layer that allows full control of the mouse movement and buttons from the keyboard +- Use of Space-Cadet Shift/Ctrl keys on various layers +- Hold enter for Right-Shift +- Shift+BackSpace for Delete +- Grave-Esc in the top-left Esc key position +- Music, Terminal, MIDI, and RGB control on Functions layer +- QWERTY, COLEMAK, DVORAK, and PLOVER layers +- Special keys for common Ctrl+ combos like Ctrl+C, Ctrl+V, etc +- Special keys for Copy-Line, Cut-Line, Delete-Line, etc +- Special keys for Ctrl+Alt+Del, Alt+F4, etc +- Settings like rgb animation state and startup animation/sound are stored in the EEPROM to survive restart +- "Sticky keys" with audible indication allow most modifiers to be locked by pressing multiple times in quick succession +- Sticky-locking the Shift key toggles CapsLock instead of locking Shift +- Unicode characters and emoji can be sent via custom tap-dance keys +- Emoji and app-specific functions can be sent via leader-key chording +- VelociKey and word-per-minute tracking are also included + +See the layout here: [Keyboard Layout](http://www.keyboard-layout-editor.com/#/gists/e48e19bc251a8d07ff8475fc1a16f43b) + +To build and flash this keymap, use this command: + + qmk flash -kb planck/rev6 -km rootiest diff --git a/keyboards/planck/keymaps/rootiest/rules.mk b/keyboards/planck/keymaps/rootiest/rules.mk new file mode 100644 index 000000000000..b669d8bb7ddf --- /dev/null +++ b/keyboards/planck/keymaps/rootiest/rules.mk @@ -0,0 +1,27 @@ +SRC += muse.c +ENCODER_ENABLE = yes # Enables basic encoder support +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enables support for OLED displays +# UNICODE_ENABLE = yes # Allow inputting basic unicode characters +UNICODEMAP_ENABLE = yes # Enable use of Unicode mapping array +# UCIS_ENABLE = yes # Another method for generating Unicode characters via maps +TAP_DANCE_ENABLE = yes # Enable Tap-Dance +NKRO_ENABLE = yes # Enable N-Key rollover +MOUSEKEY_ENABLE = yes # Enable mouse emulation +EXTRAKEY_ENABLE = yes # Allows audio control and System control +RAW_ENABLE = yes # Enable bi-directional communication to host +CONSOLE_ENABLE = yes # Enable outputting debugging data/logs to terminal +WPM_ENABLE = yes # Enable on-board words-per-minute tracking +VELOCIKEY_ENABLE = yes # Enables dynamically changing rgb animation speed based on WPM +LEADER_ENABLE = yes # Enables Leader-Key +COMBO_ENABLE = yes # Enables combo keys +KEY_LOCK_ENABLE = yes # Enables using lock key to maintain holds +# LTO_ENABLE = yes # Does some optimisation to make firmware size smaller +# SWAP_HANDS_ENABLE = yes # Enables the swap hands function +# DEBOUNCE_TYPE = sym_eager_pk # Change debounce algorithm + +# NOTE: The following requires a lot of memory to include +TERMINAL_ENABLE = yes # Enables a command-line-like interface designed to communicate through a text editor with keystrokes + +# NOTE: The following is not yet available in main qmk branch +KEY_OVERRIDE_ENABLE = yes # Allows overiding modifier combos (change Shift+1 without affecting 1 or Shift's normal operation) diff --git a/keyboards/planck/keymaps/sdothum/rules.mk b/keyboards/planck/keymaps/sdothum/rules.mk index a722766296dc..ea9abc2a80df 100644 --- a/keyboards/planck/keymaps/sdothum/rules.mk +++ b/keyboards/planck/keymaps/sdothum/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically -BOOTMAGIC_ENABLE = no # virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # mouse keys(+4700) EXTRAKEY_ENABLE = no # audio control and System control(+450) CONSOLE_ENABLE = no # console for debug(+400) diff --git a/keyboards/planck/keymaps/sgoodwin/rules.mk b/keyboards/planck/keymaps/sgoodwin/rules.mk index cdcb4a887d2e..10de3bfc0359 100644 --- a/keyboards/planck/keymaps/sgoodwin/rules.mk +++ b/keyboards/planck/keymaps/sgoodwin/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) @@ -14,7 +14,6 @@ AUDIO_ENABLE = yes # Audio output on port C6 UNICODE_ENABLE = no # Unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -API_SYSEX_ENABLE = no # Disable extra stuff for ergodoxen # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend \ No newline at end of file diff --git a/keyboards/planck/keymaps/sigul/keymap.c b/keyboards/planck/keymaps/sigul/keymap.c index bdbf21b11320..622e9f29cd29 100644 --- a/keyboards/planck/keymaps/sigul/keymap.c +++ b/keyboards/planck/keymaps/sigul/keymap.c @@ -49,9 +49,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_LOWER] = LAYOUT_ortho_4x12( - IT_TILDE, IT_EXLM, IT_AT, IT_SHRP, IT_DLR, IT_PERC, IT_CRC, IT_AMPR, IT_ASTR, IT_LPRN, IT_RPRN, KC_DEL, - KC_ENT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, S(IT_MINS), IT_EQL, S(IT_EACC), IT_OACC, IT_AACC, - _______, KC_F6, KC_F7, KC_F8, KC_F9, _______, NUMPAD, S(IT_UACC), IT_PLMN, IT_LCBR, IT_RCBR, IT_PIPE, + IT_TILD, IT_EXLM, IT_AT, IT_HASH, IT_DLR, IT_PERC, IT_CIRC, IT_AMPR, IT_ASTR, IT_LPRN, IT_RPRN, KC_DEL, + KC_ENT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, S(IT_MINS), IT_EQL, S(IT_EGRV), IT_OGRV, IT_AGRV, + _______, KC_F6, KC_F7, KC_F8, KC_F9, _______, NUMPAD, S(IT_UGRV), IT_PLMN, IT_LCBR, IT_RCBR, IT_PIPE, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY ), @@ -67,8 +67,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_RAISE] = LAYOUT_ortho_4x12( - IT_GRAVE, IT_1, IT_2, IT_3, IT_4, IT_5, IT_6, IT_7, IT_8, IT_9, IT_0, _______, - _______, _______, SECRET0, SECRET1, _______, _______, _______, IT_MINS, IT_PLUS, IT_EACC, IT_IACC, IT_UACC, + IT_GRV, IT_1, IT_2, IT_3, IT_4, IT_5, IT_6, IT_7, IT_8, IT_9, IT_0, _______, + _______, _______, SECRET0, SECRET1, _______, _______, _______, IT_MINS, IT_PLUS, IT_EGRV, IT_IGRV, IT_UGRV, KC_CAPS, _______, SECRET2, SECRET3, SECRET4, _______, NUMPAD, SECRET5, _______, IT_LBRC, IT_RBRC, IT_BSLS, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END ), @@ -162,7 +162,7 @@ uint16_t muse_counter = 0; uint8_t muse_offset = 70; uint16_t muse_tempo = 50; -bool encoder_update(bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (muse_mode) { if (IS_LAYER_ON(_RAISE)) { if (clockwise) { diff --git a/keyboards/planck/keymaps/skug/keymap.c b/keyboards/planck/keymaps/skug/keymap.c index a2162d9112f1..6367d3c34695 100644 --- a/keyboards/planck/keymaps/skug/keymap.c +++ b/keyboards/planck/keymaps/skug/keymap.c @@ -39,7 +39,7 @@ enum planck_keycodes { #define ESC_LOW LT(_LOWER, KC_ESC) #define BSP_RAI LT(_RAISE, KC_BSPC) -#define LFT_CTR CTL_T(SE_APOS) +#define LFT_CTR CTL_T(SE_QUOT) #define RGT_CTR CTL_T(KC_TILD) #define UTILITY MO(_UTILITY) @@ -57,8 +57,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_DEFAULT] = LAYOUT_planck_grid( - KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , SE_AA , - UTILITY, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , SE_OSLH, SE_AE , + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , SE_ARNG, + UTILITY, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , SE_ODIA, SE_ADIA, KC_LSPO, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , SE_MINS, KC_RSPC, LFT_CTR, KC_LALT, KC_LGUI, SE_AT , ESC_LOW, KC_ENT , KC_SPC , BSP_RAI, _______, KC_ALGR, SE_ASTR, RGT_CTR ), @@ -77,7 +77,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_RAISE] = LAYOUT_planck_grid( KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_PLUS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, SE_GRTR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, SE_RABK, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), @@ -93,9 +93,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_LOWER] = LAYOUT_planck_grid( - SE_HALF, LSFT(KC_1), SE_QUO2, LSFT(KC_3), SE_BULT, LSFT(KC_5), SE_AMPR, SE_SLSH, SE_LPRN, SE_RPRN, SE_EQL , SE_QUES, + SE_HALF, LSFT(KC_1), SE_DQUO, LSFT(KC_3), SE_CURR, LSFT(KC_5), SE_AMPR, SE_SLSH, SE_LPRN, SE_RPRN, SE_EQL , SE_QUES, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, SE_LESS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, SE_LABK, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), @@ -153,7 +153,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { float s9[][2] = SONG(SONIC_RING); #endif -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } @@ -264,7 +264,7 @@ uint16_t muse_counter = 0; uint8_t muse_offset = 70; uint16_t muse_tempo = 50; -bool encoder_update(bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (muse_mode) { if (IS_LAYER_ON(_RAISE)) { if (clockwise) { @@ -291,7 +291,7 @@ bool encoder_update(bool clockwise) { return true; } -void dip_update(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: if (active) { @@ -316,6 +316,7 @@ void dip_update(uint8_t index, bool active) { #endif } } + return true; } void matrix_scan_user(void) { diff --git a/keyboards/planck/keymaps/smittey/keymap.c b/keyboards/planck/keymaps/smittey/keymap.c index 7efe5fd4d121..537b60c1032e 100644 --- a/keyboards/planck/keymaps/smittey/keymap.c +++ b/keyboards/planck/keymaps/smittey/keymap.c @@ -224,7 +224,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND); #endif -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } @@ -297,7 +297,7 @@ uint16_t muse_counter = 0; uint8_t muse_offset = 70; uint16_t muse_tempo = 50; -bool encoder_update(bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (muse_mode) { if (IS_LAYER_ON(_RAISE)) { if (clockwise) { @@ -322,7 +322,7 @@ bool encoder_update(bool clockwise) { return true; } -void dip_update(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: if (active) { @@ -347,6 +347,7 @@ void dip_update(uint8_t index, bool active) { #endif } } + return true; } void matrix_scan_user(void) { diff --git a/keyboards/planck/keymaps/snowkuma/keymap.c b/keyboards/planck/keymaps/snowkuma/keymap.c index eee8e11701f6..fef6246b4aaf 100644 --- a/keyboards/planck/keymaps/snowkuma/keymap.c +++ b/keyboards/planck/keymaps/snowkuma/keymap.c @@ -84,7 +84,7 @@ void safe_reset(qk_tap_dance_state_t *state, void *user_data) { register_code(KC_SLSH); } } -} +} void tilde_reset(qk_tap_dance_state_t *state, void *user_data) { @@ -123,7 +123,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_COLEMAK] = LAYOUT_planck_grid( Q_CTL, W_ALT, F_GUI, KC_P, KC_G, _______, _______, KC_J, KC_L, U_GUI, Y_ALT, SCL_CTL, KC_A, KC_R, KC_S, T_SFT, KC_D, _______, _______, KC_H, N_SFT, KC_E, KC_I, KC_O, - KC_Z, KC_X, KC_C, KC_V, KC_B, _______, _______, KC_K, KC_M, KC_COMM, KC_DOT, KC_QUOT, + KC_Z, KC_X, KC_C, KC_V, KC_B, _______, _______, KC_K, KC_M, KC_COMM, KC_DOT, KC_QUOT, _______, _______, _______, ESC_NUM, BSP_REG, MIN_ARR, TAB_SFT, SPC_SYM, ENT_THU, _______, _______, _______ ), @@ -173,7 +173,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Number Layer * ,-----------------------------------------------------------------------------------------------------------. - * | : | F | E | D | G | | | * | 7 | 8 | 9 | 0 | + * | : | F | E | D | G | | | * | 7 | 8 | 9 | 0 | * | | | | | | | | | | | | | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| * | # | C | B | A | + | | | . | 4 | 5 | 6 | / | @@ -289,7 +289,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND); #endif -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { state = update_tri_layer_state(state, _SYMBOL, _THUMB, _FUNCTION); state = update_tri_layer_state(state, _SYMBOL, _REGEX, _MOUSE); return state; @@ -317,7 +317,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; break; - case VIM: + case VIM: if (record->event.pressed) { SEND_STRING(SS_LGUI(" ")); SEND_STRING("macvim.app" SS_TAP(X_ENTER)); diff --git a/keyboards/planck/keymaps/snowkuma/rules.mk b/keyboards/planck/keymaps/snowkuma/rules.mk index 4a172d28681c..e7706a252dab 100644 --- a/keyboards/planck/keymaps/snowkuma/rules.mk +++ b/keyboards/planck/keymaps/snowkuma/rules.mk @@ -3,7 +3,7 @@ SRC += muse.c AUDIO_ENABLE = yes BACKLIGHT_ENABLE = no BLUETOOTH_ENABLE = no -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite COMBO_ENABLE = no COMMAND_ENABLE = no CONSOLE_ENABLE = no diff --git a/keyboards/planck/keymaps/spacebarracecar/keymap.c b/keyboards/planck/keymaps/spacebarracecar/keymap.c index 71f44c996e2d..5efced81a34b 100644 --- a/keyboards/planck/keymaps/spacebarracecar/keymap.c +++ b/keyboards/planck/keymaps/spacebarracecar/keymap.c @@ -44,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { `-----------------------------------------------------------------------------------------------------------------------' */ [_LOWER] = LAYOUT_ortho_4x12( - DE_TILD, DE_EXLM, DE_DQOT, DE_HASH, DE_DLR, DE_PERC, CU_CIRC, DE_AMPR, DE_ASTR, DE_LPRN, DE_RPRN, _______, + DE_TILD, DE_EXLM, DE_DQUO, DE_HASH, DE_DLR, DE_PERC, CU_CIRC, DE_AMPR, DE_ASTR, DE_LPRN, DE_RPRN, _______, _______, DE_AT, CTRLX, CTRLC, CTRLV, XXXXXXX, XXXXXXX, DE_UNDS, DE_PLUS, DE_LCBR, DE_RCBR, DE_PIPE, _______, DE_EURO, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DE_MINS, CU_EQL, CU_LBRC, CU_RBRC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ diff --git a/keyboards/planck/keymaps/spacebarracecar/rules.mk b/keyboards/planck/keymaps/spacebarracecar/rules.mk index bc817a140317..b65fadcd36ef 100644 --- a/keyboards/planck/keymaps/spacebarracecar/rules.mk +++ b/keyboards/planck/keymaps/spacebarracecar/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/synth_sample/keymap.c b/keyboards/planck/keymaps/synth_sample/keymap.c index 64bfde9aa9cb..0a57b7ce9af4 100644 --- a/keyboards/planck/keymaps/synth_sample/keymap.c +++ b/keyboards/planck/keymaps/synth_sample/keymap.c @@ -173,7 +173,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND); #endif -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } @@ -247,7 +247,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return true; } -bool encoder_update(bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (clockwise) { #ifdef MOUSEKEY_ENABLE register_code(KC_MS_WH_DOWN); diff --git a/keyboards/planck/keymaps/synth_wavetable/keymap.c b/keyboards/planck/keymaps/synth_wavetable/keymap.c index 1fcc977420b3..d413d6389601 100644 --- a/keyboards/planck/keymaps/synth_wavetable/keymap.c +++ b/keyboards/planck/keymaps/synth_wavetable/keymap.c @@ -173,7 +173,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND); #endif -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } @@ -308,7 +308,7 @@ uint16_t dac_value_generate(void) { return value; } -bool encoder_update(bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (clockwise) { dac_morph = (dac_morph + 1) % AUDIO_DAC_WAVETABLE_CUSTOM_LENGTH; } else { diff --git a/keyboards/planck/keymaps/tak3over/rules.mk b/keyboards/planck/keymaps/tak3over/rules.mk index 1e877943d9b8..10de3bfc0359 100644 --- a/keyboards/planck/keymaps/tak3over/rules.mk +++ b/keyboards/planck/keymaps/tak3over/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/thermal_printer/rules.mk b/keyboards/planck/keymaps/thermal_printer/rules.mk index 3c0e340d1fb5..3959624376bf 100644 --- a/keyboards/planck/keymaps/thermal_printer/rules.mk +++ b/keyboards/planck/keymaps/thermal_printer/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/tom/keymap.c b/keyboards/planck/keymaps/tom/keymap.c index ea625d165d26..66beaf33b7c9 100644 --- a/keyboards/planck/keymaps/tom/keymap.c +++ b/keyboards/planck/keymaps/tom/keymap.c @@ -116,7 +116,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND); #endif -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } @@ -139,7 +139,7 @@ uint16_t muse_counter = 0; uint8_t muse_offset = 70; uint16_t muse_tempo = 50; -bool encoder_update(bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (muse_mode) { if (IS_LAYER_ON(_RAISE)) { if (clockwise) { @@ -172,7 +172,7 @@ bool encoder_update(bool clockwise) { return true; } -void dip_update(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: if (active) { @@ -197,6 +197,7 @@ void dip_update(uint8_t index, bool active) { #endif } } + return true; } void matrix_scan_user(void) { diff --git a/keyboards/planck/keymaps/tong92/rules.mk b/keyboards/planck/keymaps/tong92/rules.mk index 88ad1e982855..f836e54d5e76 100644 --- a/keyboards/planck/keymaps/tong92/rules.mk +++ b/keyboards/planck/keymaps/tong92/rules.mk @@ -41,7 +41,7 @@ # change to "no" to disable the options, or define them in the makefile.mk in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = no # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/tylerwince/keymap.c b/keyboards/planck/keymaps/tylerwince/keymap.c index c9ba7da899f9..5cbc47b2fbba 100644 --- a/keyboards/planck/keymaps/tylerwince/keymap.c +++ b/keyboards/planck/keymaps/tylerwince/keymap.c @@ -215,7 +215,7 @@ uint16_t muse_counter = 0; uint8_t muse_offset = 70; uint16_t muse_tempo = 50; -bool encoder_update(bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (muse_mode) { if (IS_LAYER_ON(_RAISE)) { if (clockwise) { @@ -273,7 +273,7 @@ bool music_mask_user(uint16_t keycode) { return true; } } -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { palClearPad(GPIOB, 8); palClearPad(GPIOB, 9); uint8_t layer = biton32(state); diff --git a/keyboards/planck/keymaps/unagi/keymap.c b/keyboards/planck/keymaps/unagi/keymap.c index 5f4d3b88641f..1fc1814796bf 100644 --- a/keyboards/planck/keymaps/unagi/keymap.c +++ b/keyboards/planck/keymaps/unagi/keymap.c @@ -187,7 +187,7 @@ qk_tap_dance_action_t tap_dance_actions[] = { float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND); #endif -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } @@ -267,7 +267,7 @@ uint16_t muse_counter = 0; uint8_t muse_offset = 70; uint16_t muse_tempo = 50; -bool encoder_update(bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (muse_mode) { if (IS_LAYER_ON(_RAISE)) { if (clockwise) { @@ -294,7 +294,7 @@ bool encoder_update(bool clockwise) { return true; } -void dip_update(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: if (active) { @@ -319,6 +319,7 @@ void dip_update(uint8_t index, bool active) { #endif } } + return true; } void matrix_scan_user(void) { diff --git a/keyboards/planck/keymaps/vifon/rules.mk b/keyboards/planck/keymaps/vifon/rules.mk index 3f9b4544e1c5..8cc3bcfd0cdb 100644 --- a/keyboards/planck/keymaps/vifon/rules.mk +++ b/keyboards/planck/keymaps/vifon/rules.mk @@ -4,7 +4,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) @@ -16,7 +16,6 @@ AUDIO_ENABLE = no # Audio output on port C6 UNICODE_ENABLE = no # Unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -API_SYSEX_ENABLE = no # https://www.reddit.com/r/olkb/comments/5swhij/_/ddie6zq/ KEY_LOCK_ENABLE = yes # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE diff --git a/keyboards/planck/keymaps/vxid/keymap.c b/keyboards/planck/keymaps/vxid/keymap.c index 51d1daa70a09..0494056ea2cb 100644 --- a/keyboards/planck/keymaps/vxid/keymap.c +++ b/keyboards/planck/keymaps/vxid/keymap.c @@ -44,6 +44,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } diff --git a/keyboards/planck/keymaps/winternebs/keymap.c b/keyboards/planck/keymaps/winternebs/keymap.c index 259603faf505..4bb97b27ac3b 100755 --- a/keyboards/planck/keymaps/winternebs/keymap.c +++ b/keyboards/planck/keymaps/winternebs/keymap.c @@ -64,10 +64,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_WORKMAN] = LAYOUT_planck_grid( - KC_ESC, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_BSPC, - KC_TAB, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, KC_QUOT, - KC_LSFT, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , - KC_LCTL, KC_LGUI, _______, KC_LALT, LOWER, KC_SPC, KC_BSPC, ADJUST, _______, KC_LEFT, KC_DOWN, KC_RGHT + KC_ESC, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , + KC_LCTL, KC_LGUI, _______, KC_LALT, LOWER, KC_SPC, KC_BSPC, ADJUST, _______, KC_LEFT, KC_DOWN, KC_RGHT ), /* Lower @@ -149,7 +149,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return true; } -void dip_update(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: if (active) { @@ -159,4 +159,5 @@ void dip_update(uint8_t index, bool active) { } break; } + return true; } diff --git a/keyboards/planck/keymaps/yale/keymap.c b/keyboards/planck/keymaps/yale/keymap.c index 60bbc758d78e..0baa24bdb7be 100644 --- a/keyboards/planck/keymaps/yale/keymap.c +++ b/keyboards/planck/keymaps/yale/keymap.c @@ -68,9 +68,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_NAV] = LAYOUT_planck_grid( - KC_MS_ACCEL2, KC_FN1, KC_FN2, KC_FN3, KC_FN4, XXXXXXX, XXXXXXX, KC_WH_D, KC_WH_U, XXXXXXX, XXXXXXX, XXXXXXX, + KC_MS_ACCEL2, KC_NO, KC_NO, KC_NO, KC_NO, XXXXXXX, XXXXXXX, KC_WH_D, KC_WH_U, XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_ACCEL1, KC_MS_BTN4, KC_MS_BTN3, KC_MS_BTN2, KC_MS_BTN1, XXXXXXX, KC_MS_LEFT, KC_MS_DOWN, KC_MS_UP, KC_MS_RIGHT, XXXXXXX, XXXXXXX, - KC_MS_ACCEL0, KC_FN9, KC_FN10, KC_FN11, KC_FN12, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + KC_MS_ACCEL0, KC_NO, KC_NO, KC_NO, KC_NO, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX ), diff --git a/keyboards/planck/keymaps/yale/rules.mk b/keyboards/planck/keymaps/yale/rules.mk index 5dda6ad67ba1..d86b02fd1ce4 100644 --- a/keyboards/planck/keymaps/yale/rules.mk +++ b/keyboards/planck/keymaps/yale/rules.mk @@ -4,7 +4,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/keymaps/zach/rules.mk b/keyboards/planck/keymaps/zach/rules.mk index b3dfb88d74e4..544e10a456f0 100644 --- a/keyboards/planck/keymaps/zach/rules.mk +++ b/keyboards/planck/keymaps/zach/rules.mk @@ -2,17 +2,16 @@ # Max .hex size is about 28636 bytes # Build Options -# change to "no" to disable the options, or define them in the Makefile in +# change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # TAP_DANCE_ENABLE = yes # Enable TapDance functionality -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = no # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -USB_6KRO_ENABLE = no # 6key Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality MIDI_ENABLE = no # MIDI controls AUDIO_ENABLE = no # Audio output on port C6 @@ -20,7 +19,6 @@ AUDIO_ENABLE = no # Audio output on port C6 UNICODE_ENABLE = no # Unicode (can't be used with unicodemap) UNICODEMAP_ENABLE = yes # Enable extended unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - diff --git a/keyboards/planck/keymaps/zrichard/config.h b/keyboards/planck/keymaps/zrichard/config.h index fb7ebb98850d..d12c19065cee 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 . */ -#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 . /* 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 . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -#endif diff --git a/keyboards/planck/keymaps/zrichard/rules.mk b/keyboards/planck/keymaps/zrichard/rules.mk index 0475875a3b36..ef2e1203554b 100755 --- a/keyboards/planck/keymaps/zrichard/rules.mk +++ b/keyboards/planck/keymaps/zrichard/rules.mk @@ -9,7 +9,7 @@ $(warning Please disable some options in the Makefile to resolve) # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/planck/light/config.h b/keyboards/planck/light/config.h index ccf9f098437c..cc7f1fe940a9 100644 --- a/keyboards/planck/light/config.h +++ b/keyboards/planck/light/config.h @@ -1,20 +1,21 @@ -#ifndef LIGHT_CONFIG_H -#define LIGHT_CONFIG_H +#pragma once #include "config_common.h" #undef PRODUCT -#define PRODUCT Planck Light +#define PRODUCT Planck Light #define PRODUCT_ID 0xBEA2 #define DEVICE_VER 0x0001 #undef MATRIX_ROW_PINS #undef MATRIX_COL_PINS -#define MATRIX_ROW_PINS { B0, E7, F0, F1 } -#define MATRIX_COL_PINS { E6, E3, E4, D3, D4, D5, C0, A7, A6, E1, E0, D7 } +#define MATRIX_ROW_PINS \ + { B0, E7, F0, F1 } +#define MATRIX_COL_PINS \ + { E6, E3, E4, D3, D4, D5, C0, A7, A6, E1, E0, D7 } -#define AUDIO_PIN C6 +#define AUDIO_PIN C6 #define AUDIO_PIN_ALT B5 #undef BACKLIGHT_PIN @@ -32,13 +33,58 @@ // 0b1110111 AD <-> VCC // 0b1110101 AD <-> SCL // 0b1110110 AD <-> SDA -#define DRIVER_ADDR_1 0b1110100 -#define DRIVER_ADDR_2 0b1110110 +#define DRIVER_ADDR_1 0b1110100 +#define DRIVER_ADDR_2 0b1110110 -#define DRIVER_COUNT 2 +#define DRIVER_COUNT 2 #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 +#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH diff --git a/keyboards/planck/light/info.json b/keyboards/planck/light/info.json index 53d2d77ce0cc..6169a8f991a8 100644 --- a/keyboards/planck/light/info.json +++ b/keyboards/planck/light/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Planck Light", "url": "https://olkb.com/planck", "maintainer": "jackhumbert", - "width": 12, - "height": 4, "layouts": { "LAYOUT_planck_1x2uC": { - "key_count": 47, "layout": [ { "x": 0, "y": 0 }, { "x": 1, "y": 0 }, @@ -58,7 +55,6 @@ ] }, "LAYOUT_ortho_4x12": { - "key_count": 48, "layout": [ { "x": 0, "y": 0 }, { "x": 1, "y": 0 }, diff --git a/keyboards/planck/light/light.c b/keyboards/planck/light/light.c index 896ec44587c6..1967d318d48b 100644 --- a/keyboards/planck/light/light.c +++ b/keyboards/planck/light/light.c @@ -16,7 +16,7 @@ #include "light.h" -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { /* Refer to IS31 manual for these locations * driver * | R location @@ -105,11 +105,6 @@ void matrix_init_kb(void) { matrix_init_user(); } -bool process_record_kb(uint16_t keycode, keyrecord_t *record) -{ - return process_record_user(keycode, record); -} - uint8_t rgb_matrix_map_row_column_to_led_kb(uint8_t row, uint8_t column, uint8_t *led_i) { // Spacebar has 2 leds 41 & 42, so add 42 to the array here, and 41 will be added // by the default lookup code that runs after this @@ -120,11 +115,6 @@ uint8_t rgb_matrix_map_row_column_to_led_kb(uint8_t row, uint8_t column, uint8_t return 0; } -void matrix_scan_kb(void) -{ - matrix_scan_user(); -} - void suspend_power_down_kb(void) { rgb_matrix_set_suspend_state(true); diff --git a/keyboards/planck/light/light.h b/keyboards/planck/light/light.h index f014c50171e2..623ffa707d29 100644 --- a/keyboards/planck/light/light.h +++ b/keyboards/planck/light/light.h @@ -14,40 +14,35 @@ * along with this program. If not, see . */ -#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/light/rules.mk b/keyboards/planck/light/rules.mk index fc6243c3fb0a..4038cb0116eb 100644 --- a/keyboards/planck/light/rules.mk +++ b/keyboards/planck/light/rules.mk @@ -2,37 +2,24 @@ MCU = at90usb1286 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # 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 -MIDI_ENABLE = yes # MIDI controls -AUDIO_ENABLE = yes # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +MIDI_ENABLE = yes # MIDI support +AUDIO_ENABLE = yes # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. RGB_MATRIX_ENABLE = yes RGB_MATRIX_DRIVER = IS31FL3731 -API_SYSEX_ENABLE = no - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend LAYOUTS = ortho_4x12 planck_mit LAYOUTS_HAS_RGB = no diff --git a/keyboards/planck/planck.h b/keyboards/planck/planck.h index ef037f369be3..4b04dfec5149 100644 --- a/keyboards/planck/planck.h +++ b/keyboards/planck/planck.h @@ -1,28 +1,41 @@ -#ifndef PLANCK_H -#define PLANCK_H +/* Copyright 2018 Jack Humbert + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ -#include "quantum.h" +#pragma once -#define encoder_update(clockwise) encoder_update_user(uint8_t index, clockwise) +#include "quantum.h" #if defined(KEYBOARD_planck_ez) - #include "ez.h" +# include "ez.h" #elif defined(KEYBOARD_planck_light) - #include "light.h" +# include "light.h" #elif defined(KEYBOARD_planck_thk) - #include "thk.h" +# include "thk.h" #elif defined(KEYBOARD_planck_rev1) - #include "rev1.h" +# include "rev1.h" #elif defined(KEYBOARD_planck_rev2) - #include "rev2.h" +# include "rev2.h" #elif defined(KEYBOARD_planck_rev3) - #include "rev3.h" +# include "rev3.h" #elif defined(KEYBOARD_planck_rev4) - #include "rev4.h" +# include "rev4.h" #elif defined(KEYBOARD_planck_rev5) - #include "rev5.h" +# include "rev5.h" #elif defined(KEYBOARD_planck_rev6) - #include "rev6.h" -#endif // Planck revisions - -#endif +# include "rev6.h" +#elif defined(KEYBOARD_planck_rev6_drop) +# include "rev6_drop.h" +#endif // Planck revisions diff --git a/keyboards/planck/rev1/info.json b/keyboards/planck/rev1/info.json index 6291cc96da79..04c6775042f4 100644 --- a/keyboards/planck/rev1/info.json +++ b/keyboards/planck/rev1/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Planck rev 1", "url": "https://olkb.com/planck", "maintainer": "jackhumbert", - "width": 12, - "height": 4, "layouts": { "LAYOUT_planck_1x2uC": { - "key_count": 47, "layout": [ { "x": 0, "y": 0 }, { "x": 1, "y": 0 }, @@ -58,7 +55,6 @@ ] }, "LAYOUT_ortho_4x12": { - "key_count": 48, "layout": [ { "x": 0, "y": 0 }, { "x": 1, "y": 0 }, diff --git a/keyboards/planck/rev1/rules.mk b/keyboards/planck/rev1/rules.mk index 98ae26cbed0e..36a1f1f94ede 100644 --- a/keyboards/planck/rev1/rules.mk +++ b/keyboards/planck/rev1/rules.mk @@ -2,35 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # 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 -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -API_SYSEX_ENABLE = no - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend LAYOUTS = ortho_4x12 planck_mit LAYOUTS_HAS_RGB = no diff --git a/keyboards/planck/rev2/info.json b/keyboards/planck/rev2/info.json index 555e717cd4bf..42839397cb2f 100644 --- a/keyboards/planck/rev2/info.json +++ b/keyboards/planck/rev2/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Planck rev 2", "url": "https://olkb.com/planck", "maintainer": "jackhumbert", - "width": 12, - "height": 4, "layouts": { "LAYOUT_planck_1x2uC": { - "key_count": 47, "layout": [ { "x": 0, "y": 0 }, { "x": 1, "y": 0 }, @@ -58,7 +55,6 @@ ] }, "LAYOUT_ortho_4x12": { - "key_count": 48, "layout": [ { "x": 0, "y": 0 }, { "x": 1, "y": 0 }, diff --git a/keyboards/planck/rev2/rules.mk b/keyboards/planck/rev2/rules.mk index 98ae26cbed0e..36a1f1f94ede 100644 --- a/keyboards/planck/rev2/rules.mk +++ b/keyboards/planck/rev2/rules.mk @@ -2,35 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # 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 -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -API_SYSEX_ENABLE = no - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend LAYOUTS = ortho_4x12 planck_mit LAYOUTS_HAS_RGB = no diff --git a/keyboards/planck/rev3/info.json b/keyboards/planck/rev3/info.json index 7302aa2b052c..88a8741ad16e 100644 --- a/keyboards/planck/rev3/info.json +++ b/keyboards/planck/rev3/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Planck rev 3", "url": "https://olkb.com/planck", "maintainer": "jackhumbert", - "width": 12, - "height": 4, "layouts": { "LAYOUT_planck_1x2uC": { - "key_count": 47, "layout": [ { "x": 0, "y": 0 }, { "x": 1, "y": 0 }, @@ -58,7 +55,6 @@ ] }, "LAYOUT_ortho_4x12": { - "key_count": 48, "layout": [ { "x": 0, "y": 0 }, { "x": 1, "y": 0 }, diff --git a/keyboards/planck/rev3/rules.mk b/keyboards/planck/rev3/rules.mk index 98ae26cbed0e..36a1f1f94ede 100644 --- a/keyboards/planck/rev3/rules.mk +++ b/keyboards/planck/rev3/rules.mk @@ -2,35 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # 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 -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -API_SYSEX_ENABLE = no - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend LAYOUTS = ortho_4x12 planck_mit LAYOUTS_HAS_RGB = no diff --git a/keyboards/planck/rev4/info.json b/keyboards/planck/rev4/info.json index 40f8b6d023e7..5c4d9af1941b 100644 --- a/keyboards/planck/rev4/info.json +++ b/keyboards/planck/rev4/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Planck rev 4", "url": "https://olkb.com/planck", "maintainer": "jackhumbert", - "width": 12, - "height": 4, "layouts": { "LAYOUT_planck_1x2uC": { - "key_count": 47, "layout": [ { "x": 0, "y": 0 }, { "x": 1, "y": 0 }, @@ -58,7 +55,6 @@ ] }, "LAYOUT_ortho_4x12": { - "key_count": 48, "layout": [ { "x": 0, "y": 0 }, { "x": 1, "y": 0 }, diff --git a/keyboards/planck/rev4/rules.mk b/keyboards/planck/rev4/rules.mk index 8454ea0e7288..7d827cf68d9d 100644 --- a/keyboards/planck/rev4/rules.mk +++ b/keyboards/planck/rev4/rules.mk @@ -2,35 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # 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 -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = yes # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = yes # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -API_SYSEX_ENABLE = no - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend LAYOUTS = ortho_4x12 planck_mit LAYOUTS_HAS_RGB = no diff --git a/keyboards/planck/rev5/info.json b/keyboards/planck/rev5/info.json index 1f7942ec0870..f5d667a50777 100644 --- a/keyboards/planck/rev5/info.json +++ b/keyboards/planck/rev5/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Planck rev 5", "url": "https://olkb.com/planck", "maintainer": "jackhumbert", - "width": 12, - "height": 4, "layouts": { "LAYOUT_planck_1x2uC": { - "key_count": 47, "layout": [ { "x": 0, "y": 0 }, { "x": 1, "y": 0 }, @@ -58,7 +55,6 @@ ] }, "LAYOUT_ortho_4x12": { - "key_count": 48, "layout": [ { "x": 0, "y": 0 }, { "x": 1, "y": 0 }, diff --git a/keyboards/planck/rev5/rules.mk b/keyboards/planck/rev5/rules.mk index 49585725455c..aa3c5d01faa2 100644 --- a/keyboards/planck/rev5/rules.mk +++ b/keyboards/planck/rev5/rules.mk @@ -2,35 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = qmk-dfu # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # 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 -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = yes # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = yes # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -API_SYSEX_ENABLE = no - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend LAYOUTS = ortho_4x12 planck_mit LAYOUTS_HAS_RGB = no diff --git a/keyboards/planck/rev6/config.h b/keyboards/planck/rev6/config.h index 4bc8a509f66c..aa70d46a8e69 100644 --- a/keyboards/planck/rev6/config.h +++ b/keyboards/planck/rev6/config.h @@ -15,8 +15,7 @@ * along with this program. If not, see . */ -#ifndef REV6_CONFIG_H -#define REV6_CONFIG_H +#pragma once /* USB Device descriptor parameter */ #define PRODUCT_ID 0xA4F9 @@ -106,26 +105,6 @@ //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* * WS2812 Underglow Matrix options @@ -140,8 +119,4 @@ #define WS2812_DMA_STREAM STM32_DMA1_STREAM2 #define WS2812_DMA_CHANNEL 2 -#ifndef RGB_DISABLE_WHEN_USB_SUSPENDED -# define RGB_DISABLE_WHEN_USB_SUSPENDED true -#endif - -#endif +#define RGB_DISABLE_WHEN_USB_SUSPENDED diff --git a/keyboards/planck/rev6/info.json b/keyboards/planck/rev6/info.json index 0e15f4e2c81b..114a971294cb 100644 --- a/keyboards/planck/rev6/info.json +++ b/keyboards/planck/rev6/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Planck rev 6", "url": "https://olkb.com/planck", "maintainer": "jackhumbert", - "width": 12, - "height": 4, "layouts": { "LAYOUT_ortho_4x12": { - "key_count": 48, "layout": [ { "x": 0, "y": 0 }, { "x": 1, "y": 0 }, @@ -59,7 +56,6 @@ ] }, "LAYOUT_planck_1x2uC": { - "key_count": 47, "layout": [ { "x": 0, "y": 0 }, { "x": 1, "y": 0 }, @@ -111,7 +107,6 @@ ] }, "LAYOUT_planck_1x2uL": { - "key_count": 47, "layout": [ { "x": 0, "y": 0 }, { "x": 1, "y": 0 }, @@ -163,7 +158,6 @@ ] }, "LAYOUT_planck_1x2uR": { - "key_count": 47, "layout": [ { "x": 0, "y": 0 }, { "x": 1, "y": 0 }, @@ -215,7 +209,6 @@ ] }, "LAYOUT_planck_2x2u": { - "key_count": 46, "layout": [ { "x": 0, "y": 0 }, { "x": 1, "y": 0 }, diff --git a/keyboards/planck/rev6/rev6.c b/keyboards/planck/rev6/rev6.c index 4f2ff8681266..da6da110046f 100644 --- a/keyboards/planck/rev6/rev6.c +++ b/keyboards/planck/rev6/rev6.c @@ -40,31 +40,4 @@ led_config_t g_led_config = { { // 0 // 7 8 1 2 -void suspend_power_down_kb(void) { - rgb_matrix_set_suspend_state(true); - suspend_power_down_user(); -} - -void suspend_wakeup_init_kb(void) { - rgb_matrix_set_suspend_state(false); - suspend_wakeup_init_user(); -} -#endif - -void matrix_init_kb(void) { - matrix_init_user(); -} - -void matrix_scan_kb(void) { - matrix_scan_user(); -} - -#ifdef DIP_SWITCH_ENABLE -__attribute__((weak)) -void dip_update(uint8_t index, bool active) {} - -__attribute__((weak)) -void dip_switch_update_user(uint8_t index, bool active) { - dip_update(index, active); -} #endif diff --git a/keyboards/planck/rev6/rev6.h b/keyboards/planck/rev6/rev6.h index 9fd51e70fe45..9bf3603ed75e 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 . */ -#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/planck/rev6/rules.mk b/keyboards/planck/rev6/rules.mk index 7760353e3345..a5d09c22537e 100644 --- a/keyboards/planck/rev6/rules.mk +++ b/keyboards/planck/rev6/rules.mk @@ -9,23 +9,16 @@ BOOTLOADER = stm32-dfu # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # 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 -MIDI_ENABLE = no # MIDI controls AUDIO_ENABLE = yes # Audio output -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. WS2812_DRIVER = pwm -API_SYSEX_ENABLE = no - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend RGB_MATRIX_ENABLE = no RGB_MATRIX_DRIVER = WS2812 diff --git a/keyboards/planck/rev6_drop/chconf.h b/keyboards/planck/rev6_drop/chconf.h new file mode 100644 index 000000000000..e1243f23eca4 --- /dev/null +++ b/keyboards/planck/rev6_drop/chconf.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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/planck/rev6/chconf.h -r platforms/chibios/QMK_PROTON_C/configs/chconf.h` + */ + +#pragma once + +#define CH_CFG_ST_RESOLUTION 16 + +#define CH_CFG_ST_FREQUENCY 10000 + +#include_next + diff --git a/keyboards/planck/rev6_drop/config.h b/keyboards/planck/rev6_drop/config.h new file mode 100644 index 000000000000..c1baa34b721e --- /dev/null +++ b/keyboards/planck/rev6_drop/config.h @@ -0,0 +1,128 @@ +/* + * Copyright 2018 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 . + */ + +#pragma once + +/* USB Device descriptor parameter */ +#define PRODUCT_ID 0xA4F9 +#define DEVICE_VER 0x0006 +#undef MANUFACTURER +#define MANUFACTURER Drop + +#undef MATRIX_ROWS +#undef MATRIX_COLS +/* key matrix size */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 6 + +/* + * 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) + * + */ +/* Note: These are not used for arm boards. They're here purely as documentation. */ +#undef MATRIX_ROW_PINS +#undef MATRIX_COL_PINS + +#define MATRIX_ROW_PINS \ + { A10, A9, A8, B15, C13, C14, C15, A2 } +#define MATRIX_COL_PINS \ + { B11, B10, B2, B1, A7, B0 } + +#define UNUSED_PINS + +#define ENCODERS_PAD_A \ + { B12 } +#define ENCODERS_PAD_B \ + { B13 } + +#define DIP_SWITCH_PINS \ + { B14, A15, A0, B9 } + +#define MUSIC_MAP +#undef AUDIO_VOICES +#undef AUDIO_PIN +#define AUDIO_PIN A5 +#define AUDIO_PIN_ALT A4 +#define AUDIO_PIN_ALT_AS_NEGATIVE + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +// #define DEBOUNCE 6 + +/* 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 + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* + * WS2812 Underglow Matrix options + */ +#define RGB_DI_PIN A1 +#define RGBLED_NUM 9 +#define DRIVER_LED_TOTAL RGBLED_NUM + +#define WS2812_PWM_DRIVER PWMD2 +#define WS2812_PWM_CHANNEL 2 +#define WS2812_PWM_PAL_MODE 1 +#define WS2812_DMA_STREAM STM32_DMA1_STREAM2 +#define WS2812_DMA_CHANNEL 2 + +#define RGB_DISABLE_WHEN_USB_SUSPENDED diff --git a/keyboards/planck/rev6_drop/halconf.h b/keyboards/planck/rev6_drop/halconf.h new file mode 100644 index 000000000000..153eacb2127d --- /dev/null +++ b/keyboards/planck/rev6_drop/halconf.h @@ -0,0 +1,23 @@ +/* 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 . + */ +#pragma once + +#define HAL_USE_PWM TRUE +#define HAL_USE_GPT TRUE +#define HAL_USE_DAC TRUE +#define HAL_USE_I2C TRUE + +#include_next diff --git a/keyboards/planck/rev6_drop/info.json b/keyboards/planck/rev6_drop/info.json new file mode 100644 index 000000000000..114a971294cb --- /dev/null +++ b/keyboards/planck/rev6_drop/info.json @@ -0,0 +1,262 @@ +{ + "keyboard_name": "Planck rev 6", + "url": "https://olkb.com/planck", + "maintainer": "jackhumbert", + "layouts": { + "LAYOUT_ortho_4x12": { + "layout": [ + { "x": 0, "y": 0 }, + { "x": 1, "y": 0 }, + { "x": 2, "y": 0 }, + { "x": 3, "y": 0 }, + { "x": 4, "y": 0 }, + { "x": 5, "y": 0 }, + { "x": 6, "y": 0 }, + { "x": 7, "y": 0 }, + { "x": 8, "y": 0 }, + { "x": 9, "y": 0 }, + { "x": 10, "y": 0 }, + { "x": 11, "y": 0 }, + { "x": 0, "y": 1 }, + { "x": 1, "y": 1 }, + { "x": 2, "y": 1 }, + { "x": 3, "y": 1 }, + { "x": 4, "y": 1 }, + { "x": 5, "y": 1 }, + { "x": 6, "y": 1 }, + { "x": 7, "y": 1 }, + { "x": 8, "y": 1 }, + { "x": 9, "y": 1 }, + { "x": 10, "y": 1 }, + { "x": 11, "y": 1 }, + { "x": 0, "y": 2 }, + { "x": 1, "y": 2 }, + { "x": 2, "y": 2 }, + { "x": 3, "y": 2 }, + { "x": 4, "y": 2 }, + { "x": 5, "y": 2 }, + { "x": 6, "y": 2 }, + { "x": 7, "y": 2 }, + { "x": 8, "y": 2 }, + { "x": 9, "y": 2 }, + { "x": 10, "y": 2 }, + { "x": 11, "y": 2 }, + { "x": 0, "y": 3 }, + { "x": 1, "y": 3 }, + { "x": 2, "y": 3 }, + { "x": 3, "y": 3 }, + { "x": 4, "y": 3 }, + { "x": 5, "y": 3 }, + { "x": 6, "y": 3 }, + { "x": 7, "y": 3 }, + { "x": 8, "y": 3 }, + { "x": 9, "y": 3 }, + { "x": 10, "y": 3 }, + { "x": 11, "y": 3 } + ] + }, + "LAYOUT_planck_1x2uC": { + "layout": [ + { "x": 0, "y": 0 }, + { "x": 1, "y": 0 }, + { "x": 2, "y": 0 }, + { "x": 3, "y": 0 }, + { "x": 4, "y": 0 }, + { "x": 5, "y": 0 }, + { "x": 6, "y": 0 }, + { "x": 7, "y": 0 }, + { "x": 8, "y": 0 }, + { "x": 9, "y": 0 }, + { "x": 10, "y": 0 }, + { "x": 11, "y": 0 }, + { "x": 0, "y": 1 }, + { "x": 1, "y": 1 }, + { "x": 2, "y": 1 }, + { "x": 3, "y": 1 }, + { "x": 4, "y": 1 }, + { "x": 5, "y": 1 }, + { "x": 6, "y": 1 }, + { "x": 7, "y": 1 }, + { "x": 8, "y": 1 }, + { "x": 9, "y": 1 }, + { "x": 10, "y": 1 }, + { "x": 11, "y": 1 }, + { "x": 0, "y": 2 }, + { "x": 1, "y": 2 }, + { "x": 2, "y": 2 }, + { "x": 3, "y": 2 }, + { "x": 4, "y": 2 }, + { "x": 5, "y": 2 }, + { "x": 6, "y": 2 }, + { "x": 7, "y": 2 }, + { "x": 8, "y": 2 }, + { "x": 9, "y": 2 }, + { "x": 10, "y": 2 }, + { "x": 11, "y": 2 }, + { "x": 0, "y": 3 }, + { "x": 1, "y": 3 }, + { "x": 2, "y": 3 }, + { "x": 3, "y": 3 }, + { "x": 4, "y": 3 }, + { "x": 5, "y": 3, "w": 2 }, + { "x": 7, "y": 3 }, + { "x": 8, "y": 3 }, + { "x": 9, "y": 3 }, + { "x": 10, "y": 3 }, + { "x": 11, "y": 3 } + ] + }, + "LAYOUT_planck_1x2uL": { + "layout": [ + { "x": 0, "y": 0 }, + { "x": 1, "y": 0 }, + { "x": 2, "y": 0 }, + { "x": 3, "y": 0 }, + { "x": 4, "y": 0 }, + { "x": 5, "y": 0 }, + { "x": 6, "y": 0 }, + { "x": 7, "y": 0 }, + { "x": 8, "y": 0 }, + { "x": 9, "y": 0 }, + { "x": 10, "y": 0 }, + { "x": 11, "y": 0 }, + { "x": 0, "y": 1 }, + { "x": 1, "y": 1 }, + { "x": 2, "y": 1 }, + { "x": 3, "y": 1 }, + { "x": 4, "y": 1 }, + { "x": 5, "y": 1 }, + { "x": 6, "y": 1 }, + { "x": 7, "y": 1 }, + { "x": 8, "y": 1 }, + { "x": 9, "y": 1 }, + { "x": 10, "y": 1 }, + { "x": 11, "y": 1 }, + { "x": 0, "y": 2 }, + { "x": 1, "y": 2 }, + { "x": 2, "y": 2 }, + { "x": 3, "y": 2 }, + { "x": 4, "y": 2 }, + { "x": 5, "y": 2 }, + { "x": 6, "y": 2 }, + { "x": 7, "y": 2 }, + { "x": 8, "y": 2 }, + { "x": 9, "y": 2 }, + { "x": 10, "y": 2 }, + { "x": 11, "y": 2 }, + { "x": 0, "y": 3 }, + { "x": 1, "y": 3 }, + { "x": 2, "y": 3 }, + { "x": 3, "y": 3 }, + { "x": 4, "y": 3, "w": 2 }, + { "x": 6, "y": 3 }, + { "x": 7, "y": 3 }, + { "x": 8, "y": 3 }, + { "x": 9, "y": 3 }, + { "x": 10, "y": 3 }, + { "x": 11, "y": 3 } + ] + }, + "LAYOUT_planck_1x2uR": { + "layout": [ + { "x": 0, "y": 0 }, + { "x": 1, "y": 0 }, + { "x": 2, "y": 0 }, + { "x": 3, "y": 0 }, + { "x": 4, "y": 0 }, + { "x": 5, "y": 0 }, + { "x": 6, "y": 0 }, + { "x": 7, "y": 0 }, + { "x": 8, "y": 0 }, + { "x": 9, "y": 0 }, + { "x": 10, "y": 0 }, + { "x": 11, "y": 0 }, + { "x": 0, "y": 1 }, + { "x": 1, "y": 1 }, + { "x": 2, "y": 1 }, + { "x": 3, "y": 1 }, + { "x": 4, "y": 1 }, + { "x": 5, "y": 1 }, + { "x": 6, "y": 1 }, + { "x": 7, "y": 1 }, + { "x": 8, "y": 1 }, + { "x": 9, "y": 1 }, + { "x": 10, "y": 1 }, + { "x": 11, "y": 1 }, + { "x": 0, "y": 2 }, + { "x": 1, "y": 2 }, + { "x": 2, "y": 2 }, + { "x": 3, "y": 2 }, + { "x": 4, "y": 2 }, + { "x": 5, "y": 2 }, + { "x": 6, "y": 2 }, + { "x": 7, "y": 2 }, + { "x": 8, "y": 2 }, + { "x": 9, "y": 2 }, + { "x": 10, "y": 2 }, + { "x": 11, "y": 2 }, + { "x": 0, "y": 3 }, + { "x": 1, "y": 3 }, + { "x": 2, "y": 3 }, + { "x": 3, "y": 3 }, + { "x": 4, "y": 3 }, + { "x": 5, "y": 3 }, + { "x": 6, "y": 3, "w": 2 }, + { "x": 8, "y": 3 }, + { "x": 9, "y": 3 }, + { "x": 10, "y": 3 }, + { "x": 11, "y": 3 } + ] + }, + "LAYOUT_planck_2x2u": { + "layout": [ + { "x": 0, "y": 0 }, + { "x": 1, "y": 0 }, + { "x": 2, "y": 0 }, + { "x": 3, "y": 0 }, + { "x": 4, "y": 0 }, + { "x": 5, "y": 0 }, + { "x": 6, "y": 0 }, + { "x": 7, "y": 0 }, + { "x": 8, "y": 0 }, + { "x": 9, "y": 0 }, + { "x": 10, "y": 0 }, + { "x": 11, "y": 0 }, + { "x": 0, "y": 1 }, + { "x": 1, "y": 1 }, + { "x": 2, "y": 1 }, + { "x": 3, "y": 1 }, + { "x": 4, "y": 1 }, + { "x": 5, "y": 1 }, + { "x": 6, "y": 1 }, + { "x": 7, "y": 1 }, + { "x": 8, "y": 1 }, + { "x": 9, "y": 1 }, + { "x": 10, "y": 1 }, + { "x": 11, "y": 1 }, + { "x": 0, "y": 2 }, + { "x": 1, "y": 2 }, + { "x": 2, "y": 2 }, + { "x": 3, "y": 2 }, + { "x": 4, "y": 2 }, + { "x": 5, "y": 2 }, + { "x": 6, "y": 2 }, + { "x": 7, "y": 2 }, + { "x": 8, "y": 2 }, + { "x": 9, "y": 2 }, + { "x": 10, "y": 2 }, + { "x": 11, "y": 2 }, + { "x": 0, "y": 3 }, + { "x": 1, "y": 3 }, + { "x": 2, "y": 3 }, + { "x": 3, "y": 3 }, + { "x": 4, "y": 3, "w": 2 }, + { "x": 6, "y": 3, "w": 2 }, + { "x": 8, "y": 3 }, + { "x": 9, "y": 3 }, + { "x": 10, "y": 3 }, + { "x": 11, "y": 3 } + ] + } + } +} diff --git a/keyboards/planck/rev6_drop/matrix.c b/keyboards/planck/rev6_drop/matrix.c new file mode 100644 index 000000000000..49e115d029d2 --- /dev/null +++ b/keyboards/planck/rev6_drop/matrix.c @@ -0,0 +1,166 @@ +/* + * Copyright 2018 Jack Humbert + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include +#include +#include +#include "hal.h" +#include "timer.h" +#include "wait.h" +#include "debug.h" +#include "matrix.h" + +/* + * col: { B11, B10, B2, B1, A7, B0 } + * row: { A10, A9, A8, B15, C13, C14, C15, A2 } + */ +/* matrix state(1:on, 0:off) */ +static matrix_row_t matrix[MATRIX_ROWS]; +static matrix_row_t matrix_debouncing[MATRIX_COLS]; +static bool debouncing = false; +static uint16_t debouncing_time = 0; + +__attribute__((weak)) void matrix_init_user(void) {} + +__attribute__((weak)) void matrix_scan_user(void) {} + +__attribute__((weak)) void matrix_init_kb(void) { matrix_init_user(); } + +__attribute__((weak)) void matrix_scan_kb(void) { matrix_scan_user(); } + +void matrix_init(void) { + dprintf("matrix init\n"); + // debug_matrix = true; + + // actual matrix setup + palSetPadMode(GPIOB, 11, PAL_MODE_OUTPUT_PUSHPULL); + palSetPadMode(GPIOB, 10, PAL_MODE_OUTPUT_PUSHPULL); + palSetPadMode(GPIOB, 2, PAL_MODE_OUTPUT_PUSHPULL); + palSetPadMode(GPIOB, 1, PAL_MODE_OUTPUT_PUSHPULL); + palSetPadMode(GPIOA, 7, PAL_MODE_OUTPUT_PUSHPULL); + palSetPadMode(GPIOB, 0, PAL_MODE_OUTPUT_PUSHPULL); + + palSetPadMode(GPIOA, 10, PAL_MODE_INPUT_PULLDOWN); + palSetPadMode(GPIOA, 9, PAL_MODE_INPUT_PULLDOWN); + palSetPadMode(GPIOA, 8, PAL_MODE_INPUT_PULLDOWN); + palSetPadMode(GPIOB, 15, PAL_MODE_INPUT_PULLDOWN); + palSetPadMode(GPIOC, 13, PAL_MODE_INPUT_PULLDOWN); + palSetPadMode(GPIOC, 14, PAL_MODE_INPUT_PULLDOWN); + palSetPadMode(GPIOC, 15, PAL_MODE_INPUT_PULLDOWN); + palSetPadMode(GPIOA, 2, PAL_MODE_INPUT_PULLDOWN); + + memset(matrix, 0, MATRIX_ROWS * sizeof(matrix_row_t)); + memset(matrix_debouncing, 0, MATRIX_COLS * sizeof(matrix_row_t)); + + matrix_init_quantum(); +} + +uint8_t matrix_scan(void) { + // actual matrix + for (int col = 0; col < MATRIX_COLS; col++) { + matrix_row_t data = 0; + + // strobe col { B11, B10, B2, B1, A7, B0 } + switch (col) { + case 0: + palSetPad(GPIOB, 11); + break; + case 1: + palSetPad(GPIOB, 10); + break; + case 2: + palSetPad(GPIOB, 2); + break; + case 3: + palSetPad(GPIOB, 1); + break; + case 4: + palSetPad(GPIOA, 7); + break; + case 5: + palSetPad(GPIOB, 0); + break; + } + + // need wait to settle pin state + wait_us(20); + + // read row data { A10, A9, A8, B15, C13, C14, C15, A2 } + data = ((palReadPad(GPIOA, 10) << 0) | (palReadPad(GPIOA, 9) << 1) | (palReadPad(GPIOA, 8) << 2) | (palReadPad(GPIOB, 15) << 3) | (palReadPad(GPIOC, 13) << 4) | (palReadPad(GPIOC, 14) << 5) | (palReadPad(GPIOC, 15) << 6) | (palReadPad(GPIOA, 2) << 7)); + + // unstrobe col { B11, B10, B2, B1, A7, B0 } + switch (col) { + case 0: + palClearPad(GPIOB, 11); + break; + case 1: + palClearPad(GPIOB, 10); + break; + case 2: + palClearPad(GPIOB, 2); + break; + case 3: + palClearPad(GPIOB, 1); + break; + case 4: + palClearPad(GPIOA, 7); + break; + case 5: + palClearPad(GPIOB, 0); + break; + } + + if (matrix_debouncing[col] != data) { + matrix_debouncing[col] = data; + debouncing = true; + debouncing_time = timer_read(); + } + } + + if (debouncing && timer_elapsed(debouncing_time) > DEBOUNCE) { + for (int row = 0; row < MATRIX_ROWS; row++) { + matrix[row] = 0; + for (int col = 0; col < MATRIX_COLS; col++) { + matrix[row] |= ((matrix_debouncing[col] & (1 << row) ? 1 : 0) << col); + } + } + debouncing = false; + } + + matrix_scan_quantum(); + + return 1; +} + +bool matrix_is_on(uint8_t row, uint8_t col) { return (matrix[row] & (1 << col)); } + +matrix_row_t matrix_get_row(uint8_t row) { return matrix[row]; } + +void matrix_print(void) { + dprintf("\nr/c 01234567\n"); + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + dprintf("%X0: ", row); + matrix_row_t data = matrix_get_row(row); + for (int col = 0; col < MATRIX_COLS; col++) { + if (data & (1 << col)) + dprintf("1"); + else + dprintf("0"); + } + dprintf("\n"); + } +} diff --git a/keyboards/planck/rev6_drop/mcuconf.h b/keyboards/planck/rev6_drop/mcuconf.h new file mode 100644 index 000000000000..d7c29fcf65be --- /dev/null +++ b/keyboards/planck/rev6_drop/mcuconf.h @@ -0,0 +1,44 @@ +/* Copyright 2020 QMK Contributors + * + * This program is free software: you can 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 . + */ + +#include_next "mcuconf.h" + +// The SysTick timer from the normal quantum/stm32 uses TIM2 -- the WS2812 pin used +// on the Planck requires the use of TIM2 to run PWM -- rework which timers are +// allocated for PWM usage. +#undef STM32_PWM_USE_TIM2 +#define STM32_PWM_USE_TIM2 TRUE + +#undef STM32_DAC_USE_DAC1_CH1 +#define STM32_DAC_USE_DAC1_CH1 TRUE +#undef STM32_DAC_USE_DAC1_CH2 +#define STM32_DAC_USE_DAC1_CH2 TRUE +#undef STM32_GPT_USE_TIM6 +#define STM32_GPT_USE_TIM6 TRUE +#undef STM32_GPT_USE_TIM7 +#define STM32_GPT_USE_TIM7 TRUE +#undef STM32_GPT_USE_TIM8 +#define STM32_GPT_USE_TIM8 TRUE + +// As mentioned above, we need to reallocate the SysTick timer used from +// TIM2 to TIM3. +#undef STM32_ST_USE_TIMER +#define STM32_ST_USE_TIMER 3 + +// enable i2c +#undef STM32_I2C_USE_I2C1 +#define STM32_I2C_USE_I2C1 TRUE + diff --git a/keyboards/planck/rev6_drop/readme.md b/keyboards/planck/rev6_drop/readme.md new file mode 100644 index 000000000000..0ea2619acb12 --- /dev/null +++ b/keyboards/planck/rev6_drop/readme.md @@ -0,0 +1,13 @@ +# Planck + +A compact 40% (12x4) ortholinear keyboard kit made and sold by OLKB and Massdrop. A complete hardware rework of the Planck, sporting a faster and more powerful STM32 ARM Cortex-M4 microcontroller, with support for rotary encoders and three additional layouts. [More info on qmk.fm](http://qmk.fm/planck/) + +* Keyboard Maintainer: [Jack Humbert](https://github.com/jackhumbert) +* Hardware Supported: Planck PCB rev6 +* Hardware Availability: [OLKB.com](https://olkb.com), [Massdrop](https://www.massdrop.com/buy/planck-mechanical-keyboard?mode=guest_open) + +Make example for this keyboard (after setting up your build environment): + + make planck/rev6_drop: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/planck/rev6_drop/rev6_drop.c b/keyboards/planck/rev6_drop/rev6_drop.c new file mode 100644 index 000000000000..4c41af3806fd --- /dev/null +++ b/keyboards/planck/rev6_drop/rev6_drop.c @@ -0,0 +1,44 @@ +/* Copyright 2018 Jack Humbert + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "rev6_drop.h" + +#ifdef RGB_MATRIX_ENABLE +// clang-format off +led_config_t g_led_config = { { + // Key Matrix to LED Index + { NO_LED, 6, NO_LED, NO_LED, 5, NO_LED }, + { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }, + { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 0 }, + { NO_LED, 7, NO_LED, NO_LED, 2, NO_LED }, + { NO_LED, 4, NO_LED, NO_LED, 3, NO_LED }, + { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }, + { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }, + { NO_LED, 1, NO_LED, NO_LED, 8, NO_LED }, +}, { + // LED Index to Physical Position + {112, 39}, {148, 60}, {206, 53}, {206, 3}, {150, 3}, {74, 3}, {18, 3}, {18, 54}, {77, 60} +}, { + // LED Index to Flag + LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, + LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL +} }; + +// LED physical location index +// 6 5 4 3 +// 0 +// 7 8 1 2 + +#endif diff --git a/keyboards/planck/rev6_drop/rev6_drop.h b/keyboards/planck/rev6_drop/rev6_drop.h new file mode 100644 index 000000000000..bc9434a02625 --- /dev/null +++ b/keyboards/planck/rev6_drop/rev6_drop.h @@ -0,0 +1,108 @@ +/* Copyright 2018 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 . + */ +#pragma once + +#include "planck.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, 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 } \ +} + +#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 } \ +} + +#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 } \ +} + +#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 } \ +} + +#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 }, \ + { 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 } \ +} + + +#define LAYOUT LAYOUT_ortho_4x12 +#define LAYOUT_planck_mit LAYOUT_planck_1x2uC +#define LAYOUT_planck_grid LAYOUT_ortho_4x12 diff --git a/keyboards/planck/rev6_drop/rules.mk b/keyboards/planck/rev6_drop/rules.mk new file mode 100644 index 000000000000..51e32d85c8b3 --- /dev/null +++ b/keyboards/planck/rev6_drop/rules.mk @@ -0,0 +1,31 @@ +# MCU name +MCU = STM32F303 + +# Bootloader selection +BOOTLOADER = stm32-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 = yes # Commands for debug and configuration +# 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 = yes # Audio output +WS2812_DRIVER = pwm +CUSTOM_MATRIX = yes +# Do not enable RGB_MATRIX_ENABLE together with RGBLIGHT_ENABLE +RGB_MATRIX_ENABLE = no +RGB_MATRIX_DRIVER = WS2812 +ENCODER_ENABLE = yes +DIP_SWITCH_ENABLE = yes + +SRC += matrix.c + +LAYOUTS = ortho_4x12 planck_mit +LAYOUTS_HAS_RGB = no diff --git a/keyboards/planck/thk/info.json b/keyboards/planck/thk/info.json index cffc9fd3643d..70e1f0bd0714 100644 --- a/keyboards/planck/thk/info.json +++ b/keyboards/planck/thk/info.json @@ -1,54 +1,13 @@ { - "manufacturer": "OLKB", "keyboard_name": "Planck THK", "maintainer": "Erovia", - "height": 4, - "width": 12, - "bootloader": "USBasp", - "debounce": 5, - "diode_direction": "COL2ROW", - "features": { - "audio": false, - "backlight": false, - "bluetooth": false, - "bootmagic_lite": true, - "command": false, - "console": false, - "dip_switch": true, - "encoder": true, - "extrakey": true, - "mousekey": true, - "nkro": false, - "rgblight": false, - "sleep_led": false - }, - "matrix_pins": { - "cols": ["D7", "C2", "C3", "C4", "C5", "C6", "C7", "A3", "A2", "A1", "A0", "B0"], - "rows": ["A7", "A6", "A5", "A4"] - }, - "processor": "atmega32a", - "qmk_lufa_bootloader": { - "esc_input": "D5", - "esc_output": "F1", - "led": "E6", - "speaker": "C6" - }, "url": "https://olkb.com/planck", - "usb": { - "device_ver": "0x0000", - "pid": "0x25A7", - "vid": "0x03A8" - }, - "community_layouts": ["ortho_4x12", "planck_mit"], "layout_aliases": { "LAYOUT_planck_grid": "LAYOUT_ortho_4x12", "LAYOUT_planck_mit": "LAYOUT_planck_1x2uC" }, "layouts": { "LAYOUT_ortho_4x12": { - "c_macro": true, - "filename": "keyboards/planck/thk/thk.h", - "key_count": 48, "layout": [ { "label": "k00", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, { "label": "k01", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, @@ -101,9 +60,6 @@ ] }, "LAYOUT_planck_1x2uC": { - "c_macro": true, - "filename": "keyboards/planck/thk/thk.h", - "key_count": 47, "layout": [ { "label": "k00", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, { "label": "k01", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, diff --git a/keyboards/planck/thk/keymaps/thk/keymap.c b/keyboards/planck/thk/keymaps/thk/keymap.c index 948393b532b6..ae2420250e4d 100644 --- a/keyboards/planck/thk/keymaps/thk/keymap.c +++ b/keyboards/planck/thk/keymaps/thk/keymap.c @@ -213,7 +213,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { return true; } -void dip_switch_update_user(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: { if (active) { @@ -237,4 +237,5 @@ void dip_switch_update_user(uint8_t index, bool active) { SEND_STRING("This is a Planck THK"); break; } + return true; } diff --git a/keyboards/planck/thk/rules.mk b/keyboards/planck/thk/rules.mk index 8d584afa303c..2077357ba4f8 100644 --- a/keyboards/planck/thk/rules.mk +++ b/keyboards/planck/thk/rules.mk @@ -15,27 +15,25 @@ # MCU name MCU = atmega32a + # Processor frequency F_CPU = 16000000 # Bootloader selection -BOOTLOADER = USBasp +BOOTLOADER = usbasploader # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = yes DIP_SWITCH_ENABLE = yes diff --git a/keyboards/playkbtw/ca66/info.json b/keyboards/playkbtw/ca66/info.json index 906709ef1b88..1e14147de1d3 100644 --- a/keyboards/playkbtw/ca66/info.json +++ b/keyboards/playkbtw/ca66/info.json @@ -2,8 +2,6 @@ "keyboard_name": "CA66", "url": "", "maintainer": "qmk", - "width": 16.5, - "height": 5.25, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.5, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15.5, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":15.5, "y":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":15.5, "y":3}, {"x":14.25, "y":3.25}, {"x":0, "y":4, "w":1.25}, {"x":2.25, "y":4}, {"x":3.25, "y":4, "w":1.25}, {"x":4.5, "y":4, "w":2.25}, {"x":6.75, "y":4, "w":2.75}, {"x":9.5, "y":4, "w":1.25}, {"x":10.75, "y":4}, {"x":11.75, "y":4, "w":1.25}, {"x":13.25, "y":4.25}, {"x":14.25, "y":4.25}, {"x":15.25, "y":4.25}] diff --git a/keyboards/playkbtw/ca66/rules.mk b/keyboards/playkbtw/ca66/rules.mk index c3371db0f9ec..ad87f9ecc980 100644 --- a/keyboards/playkbtw/ca66/rules.mk +++ b/keyboards/playkbtw/ca66/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = lite +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 -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 = yes # Enable keyboard backlight functionality AUDIO_ENABLE = no diff --git a/keyboards/playkbtw/helen80/helen80.h b/keyboards/playkbtw/helen80/helen80.h index e1a25ea84e68..ffb6275a6110 100644 --- a/keyboards/playkbtw/helen80/helen80.h +++ b/keyboards/playkbtw/helen80/helen80.h @@ -33,6 +33,3 @@ { K40, KC_NO, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, KC_NO, K4C }, \ { K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B, K5C, K5D, K5E }, \ } - -// generated by KBFirmware JSON to QMK Parser -// https://noroadsleft.github.io/kbf_qmk_converter/ diff --git a/keyboards/playkbtw/helen80/info.json b/keyboards/playkbtw/helen80/info.json index 941ecf640e70..1112fafd218e 100644 --- a/keyboards/playkbtw/helen80/info.json +++ b/keyboards/playkbtw/helen80/info.json @@ -2,8 +2,6 @@ "keyboard_name": "helen80", "url": "", "maintainer": "yj7272098", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT_tkl_ansi": { "layout": [ @@ -35,7 +33,7 @@ {"label":"K19 (B7,C6)", "x":9, "y":1.5}, {"label":"K1A (B7,B5)", "x":10, "y":1.5}, {"label":"K1B (B7,F4)", "x":11, "y":1.5}, - {"label":"K1C (B7,F1)", "x":12, "y":1.5}, + {"label":"K1C (B7,F1)", "x":12, "y":1.5}, {"label":"K1E (B7,B0)", "x":13, "y":1.5, "w":2}, {"label":"K5B (D7,F4)", "x":15.25, "y":1.5}, {"label":"K5C (D7,F1)", "x":16.25, "y":1.5}, @@ -70,7 +68,7 @@ {"label":"K3A (F0,B5)", "x":10.75, "y":3.5}, {"label":"K3B (F0,F4)", "x":11.75, "y":3.5}, {"label":"K3C (F0,F1)", "x":12.75, "y":3.5, "w":2.25}, - {"label":"K40 (D6,D1)", "x":0, "y":4.5, "w":2.25}, + {"label":"K40 (D6,D1)", "x":0, "y":4.5, "w":2.25}, {"label":"K42 (D6,F7)", "x":2.25, "y":4.5}, {"label":"K43 (D6,F6)", "x":3.25, "y":4.5}, {"label":"K44 (D6,F5)", "x":4.25, "y":4.5}, @@ -81,7 +79,7 @@ {"label":"K49 (D6,C6)", "x":9.25, "y":4.5}, {"label":"K4A (D6,B5)", "x":10.25, "y":4.5}, {"label":"K4B (D6,F4)", "x":11.25, "y":4.5}, - {"label":"K4C (D6,F1)", "x":12.25, "y":4.5, "w":2.75}, + {"label":"K4C (D6,F1)", "x":12.25, "y":4.5, "w":2.75}, {"label":"K4E (D6,B0)", "x":16.25, "y":4.5}, {"label":"K50 (D7,D1)", "x":0, "y":5.5, "w":1.25}, {"label":"K51 (D7,D0)", "x":1.25, "y":5.5, "w":1.25}, @@ -97,5 +95,4 @@ ] } } - ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/" -} \ No newline at end of file +} diff --git a/keyboards/playkbtw/helen80/rules.mk b/keyboards/playkbtw/helen80/rules.mk index eef98a9fe024..d2789a9739ec 100644 --- a/keyboards/playkbtw/helen80/rules.mk +++ b/keyboards/playkbtw/helen80/rules.mk @@ -7,24 +7,18 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LTO_ENABLE = yes KEY_LOCK_ENABLE = no # Enable KC_LOCK support LAYOUTS = tkl_ansi - -# generated by KBFirmware JSON to QMK Parser -# https://noroadsleft.github.io/kbf_qmk_converter/ diff --git a/keyboards/playkbtw/pk60/config.h b/keyboards/playkbtw/pk60/config.h index 6084f34197c9..0a6ee47d44df 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/info.json b/keyboards/playkbtw/pk60/info.json index fdc68db63f7f..96f0c1f1c430 100644 --- a/keyboards/playkbtw/pk60/info.json +++ b/keyboards/playkbtw/pk60/info.json @@ -2,8 +2,6 @@ "keyboard_name": "pk60", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_ansi_split_bs_rshift": { "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}, {"label": "Del", "x": 13, "y": 0}, {"label": "Bs", "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": 2.25}, {"label": "Z", "x": 2.25, "y": 3}, {"label": "X", "x": 3.25, "y": 3}, {"label": "C", "x": 4.25, "y": 3}, {"label": "V", "x": 5.25, "y": 3}, {"label": "B", "x": 6.25, "y": 3}, {"label": "N", "x": 7.25, "y": 3}, {"label": "M", "x": 8.25, "y": 3}, {"label": "<", "x": 9.25, "y": 3}, {"label": ">", "x": 10.25, "y": 3}, {"label": "?", "x": 11.25, "y": 3}, {"label": "Shift", "x": 12.25, "y": 3, "w": 1.75}, {"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/playkbtw/pk60/keymaps/default/keymap.c b/keyboards/playkbtw/pk60/keymaps/default/keymap.c index d0fbc619f5bb..8c5c25e6beb5 100644 --- a/keyboards/playkbtw/pk60/keymaps/default/keymap.c +++ b/keyboards/playkbtw/pk60/keymaps/default/keymap.c @@ -20,42 +20,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -void matrix_init_user(void) { -} - -void matrix_scan_user(void) { -} - void led_set_user(uint8_t usb_led) { - - if (usb_led & (1 << USB_LED_NUM_LOCK)) { - - } else { - - } - if (usb_led & (1 << USB_LED_CAPS_LOCK)) { - DDRF |= (1 << 4); PORTF &= ~(1 << 4); - } else { - DDRF &= ~(1 << 4); PORTF &= ~(1 << 4); - } - - if (usb_led & (1 << USB_LED_SCROLL_LOCK)) { - + setPinOutput(F4); + writePinLow(F4); } else { - - } - - if (usb_led & (1 << USB_LED_COMPOSE)) { - - } else { - + setPinInput(F4); + writePinLow(F4); } - - if (usb_led & (1 << USB_LED_KANA)) { - - } else { - - } - } diff --git a/keyboards/playkbtw/pk60/pk60.h b/keyboards/playkbtw/pk60/pk60.h index 4a7a8f3bf00f..c92057c0a6e3 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/playkbtw/pk60/rules.mk b/keyboards/playkbtw/pk60/rules.mk index 948e212e68ba..70be529dc0c1 100644 --- a/keyboards/playkbtw/pk60/rules.mk +++ b/keyboards/playkbtw/pk60/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 -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 = yes # Enable keyboard backlight functionality AUDIO_ENABLE = no diff --git a/keyboards/playkbtw/pk64rgb/config.h b/keyboards/playkbtw/pk64rgb/config.h new file mode 100644 index 000000000000..0e63f9204d1d --- /dev/null +++ b/keyboards/playkbtw/pk64rgb/config.h @@ -0,0 +1,99 @@ +/* Copyright 2021 Play Keyboard + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x706B // Play Keyboard +#define PRODUCT_ID 0x3634 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Play Keyboard +#define PRODUCT Play Keyboard 64 RGB + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/* + * 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 { D7, D6, D5, D3, D2 } +#define MATRIX_COL_PINS { B5, B6, C6, C7, F7, F6, F5, F4, F1, F0, B1, B2, B3, B7 } + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +#ifdef RGB_MATRIX_ENABLE + #define RGB_MATRIX_KEYPRESSES + #define RGB_MATRIX_FRAMEBUFFER_EFFECTS + #define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS + #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 160 + #define RGB_MATRIX_LED_PROCESS_LIMIT 20 + #define RGB_MATRIX_LED_FLUSH_LIMIT 26 + #define DRIVER_ADDR_1 0b1010000 + #define DRIVER_COUNT 1 + #define DRIVER_LED_TOTAL 64 + + +#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define DISABLE_RGB_MATRIX_BAND_SAT +#define DISABLE_RGB_MATRIX_BAND_VAL +#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#endif + +#define RGB_DI_PIN B0 +#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_ALTERNATING +# define RGBLIGHT_EFFECT_TWINKLE +# define RGBLED_NUM 18 +# define RGBLIGHT_HUE_STEP 5 +# define RGBLIGHT_SAT_STEP 5 +# define RGBLIGHT_VAL_STEP 5 +# define RGBLIGHT_SLEEP +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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 + +/* VIA related config */ +#define VIA_EEPROM_LAYOUT_OPTIONS_SIZE 2 diff --git a/keyboards/playkbtw/pk64rgb/info.json b/keyboards/playkbtw/pk64rgb/info.json new file mode 100644 index 000000000000..bc973f1b4cf0 --- /dev/null +++ b/keyboards/playkbtw/pk64rgb/info.json @@ -0,0 +1,83 @@ +{ + "keyboard_name": "PK64RGB", + "url": "", + "maintainer": "yj7272098", + "layouts": { + "LAYOUT_64_ansi": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + + + {"x":0, "y":3, "w":2}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3}, + {"x":6, "y":3}, + {"x":7, "y":3}, + {"x":8, "y":3}, + {"x":9, "y":3}, + {"x":10, "y":3}, + {"x":11, "y":3}, + {"x":12, "y":3}, + {"x":13, "y":3}, + {"x":14, "y":3}, + + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4}, + {"x":11, "y":4}, + {"x":12, "y":4}, + {"x":13, "y":4}, + {"x":14, "y":4} + ] + } + } +} diff --git a/keyboards/playkbtw/pk64rgb/keymaps/default/keymap.c b/keyboards/playkbtw/pk64rgb/keymaps/default/keymap.c new file mode 100644 index 000000000000..9cfbc3c287fb --- /dev/null +++ b/keyboards/playkbtw/pk64rgb/keymaps/default/keymap.c @@ -0,0 +1,44 @@ +/* Copyright 2021 Play Keyboard + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_64_ansi( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LALT, KC_LWIN, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_64_ansi( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9 , KC_F10, KC_F11, KC_F12, _______, + _______, _______,_______,_______, _______,_______, _______, _______,_______,_______, _______,_______,_______, _______, + RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, _______, _______,_______, _______, + _______, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T, _______,_______,_______,_______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + +void rgb_matrix_indicators_user(void) { + if (layer_state_is(1)) { + rgb_matrix_set_color(77,0xFF, 0x80, 0x00); + } + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color(28, 0xFF, 0xFF, 0xFF); + } +} \ No newline at end of file diff --git a/keyboards/playkbtw/pk64rgb/keymaps/default/readme.md b/keyboards/playkbtw/pk64rgb/keymaps/default/readme.md new file mode 100644 index 000000000000..9875a6a41f71 --- /dev/null +++ b/keyboards/playkbtw/pk64rgb/keymaps/default/readme.md @@ -0,0 +1,3 @@ +# Default PK64RGB Layout + +This is the default 64_ansi layout that comes flashed on every PK64RGB. \ No newline at end of file diff --git a/keyboards/playkbtw/pk64rgb/keymaps/via/keymap.c b/keyboards/playkbtw/pk64rgb/keymaps/via/keymap.c new file mode 100644 index 000000000000..3d18f60ddb3f --- /dev/null +++ b/keyboards/playkbtw/pk64rgb/keymaps/via/keymap.c @@ -0,0 +1,55 @@ +/* Copyright 2021 Play Keyboard + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] =LAYOUT_64_ansi( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LALT, KC_LWIN, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] =LAYOUT_64_ansi( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, RGB_SAI, RGB_SAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,RGB_VAI, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, KC_TRNS, RGB_MOD, RGB_HUI, RGB_VAD, RGB_HUD), + [2] = LAYOUT_64_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [3] = LAYOUT_64_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; + +void rgb_matrix_indicators_user(void) { + if (layer_state_is(1)) { + rgb_matrix_set_color(77,0xFF, 0x80, 0x00); + } + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color(28, 0xFF, 0xFF, 0xFF); + } +} \ No newline at end of file diff --git a/keyboards/playkbtw/pk64rgb/keymaps/via/rules.mk b/keyboards/playkbtw/pk64rgb/keymaps/via/rules.mk new file mode 100644 index 000000000000..f39e053c66ea --- /dev/null +++ b/keyboards/playkbtw/pk64rgb/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +SPACE_CADET_ENABLE = no diff --git a/keyboards/playkbtw/pk64rgb/pk64rgb.c b/keyboards/playkbtw/pk64rgb/pk64rgb.c new file mode 100644 index 000000000000..bc1f63a5ba08 --- /dev/null +++ b/keyboards/playkbtw/pk64rgb/pk64rgb.c @@ -0,0 +1,117 @@ +/* Copyright 2021 Play Keyboard + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "pk64rgb.h" + +#ifdef RGB_MATRIX_ENABLE +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { + /* Refer to IS31 manual for these locations + * driver + * | R location + * | | G location + * | | | B location + * | | | | */ + + {0, A_1, B_1, C_1}, + {0, D_1, E_1, F_1}, + {0, G_1, H_1, I_1}, + {0, J_1, K_1, L_1}, + {0, A_6, B_6, C_6}, + {0, D_6, E_6, F_6}, + {0, G_6, H_6, I_6}, + {0, J_6, K_6, L_6}, + {0, A_11, B_11, C_11}, + {0, D_11, E_11, F_11}, + {0, G_11, H_11, I_11}, + {0, J_11, K_11, L_11}, + {0, A_16, B_16, C_16}, + {0, D_16, E_16, F_16}, + + {0, A_2, B_2, C_2}, + {0, D_2, E_2, F_2}, + {0, G_2, H_2, I_2}, + {0, J_2, K_2, L_2}, + {0, A_7, B_7, C_7}, + {0, D_7, E_7, F_7}, + {0, G_7, H_7, I_7}, + {0, J_7, K_7, L_7}, + {0, A_12, B_12, C_12}, + {0, D_12, E_12, F_12}, + {0, G_12, H_12, I_12}, + {0, J_12, K_12, L_12}, + {0, G_16, H_16, I_16}, + {0, J_16, K_16, L_16}, + + {0, A_3, B_3, C_3}, + {0, D_3, E_3, F_3}, + {0, G_3, H_3, I_3}, + {0, J_3, K_3, L_3}, + {0, A_8, B_8, C_8}, + {0, D_8, E_8, F_8}, + {0, G_8, H_8, I_8}, + {0, J_8, K_8, L_8}, + {0, A_13, B_13, C_13}, + {0, D_13, E_13, F_13}, + {0, G_13, H_13, I_13}, + {0, J_13, K_13, L_13}, + {0, A_15, B_15, C_15}, + + {0, A_4, B_4, C_4}, + {0, D_4, E_4, F_4}, + {0, G_4, H_4, I_4}, + {0, J_4, K_4, L_4}, + {0, A_9, B_9, C_9}, + {0, D_9, E_9, F_9}, + {0, G_9, H_9, I_9}, + {0, J_9, K_9, L_9}, + {0, A_14, B_14, C_14}, + {0, D_14, E_14, F_14}, + {0, G_14, H_14, I_14}, + {0, J_14, K_14, L_14}, + {0, D_15, E_15, F_15}, + {0, G_15, H_15, I_15}, + + {0, A_5, B_5, C_5}, + {0, D_5, E_5, F_5}, + {0, G_5, H_5, I_5}, + {0, J_5, K_5, L_5}, + {0, A_10, B_10, C_10}, + {0, D_10, E_10, F_10}, + {0, G_10, H_10, I_10}, + {0, J_10, K_10, L_10}, + {0, J_15, K_15, L_15} +}; + +led_config_t g_led_config = {{ + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 }, + { 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27 }, + { 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40}, + { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54 }, + { 55, 56, 57, 58, 59, 60, 61, 62, 63} +}, { + { 0, 0 }, { 16, 0 }, { 32, 0 }, { 48, 0 }, { 64, 0 }, { 80, 0 }, { 96, 0 }, { 112, 0 }, { 128, 0 }, { 144, 0 }, { 160, 0 }, { 176, 0 }, { 192, 0 }, { 216, 0 }, + { 4, 16 }, { 18, 16 }, { 34, 16 }, { 50, 16 }, { 66, 16 }, { 82, 16 }, { 98, 16 }, { 114, 16 }, { 130, 16 }, { 146, 16 }, { 162, 16 }, { 178, 16 }, { 194, 16 }, { 220, 16 }, + { 6, 32 }, { 20, 32 }, { 36, 32 }, { 52, 32 }, { 68, 32 }, { 84, 32 }, { 100, 32 }, { 116, 32 }, { 132, 32 }, { 148, 32 }, { 164, 32 }, { 180, 32 }, { 212, 32 }, + { 9, 48 }, { 27, 48 }, { 43, 48 }, { 59, 48 }, { 75, 48 }, { 91, 48 }, { 107, 48 }, { 123, 48 }, { 139, 48 }, { 155, 48 }, { 171, 48 }, { 187, 48 }, { 203, 48 }, { 219, 48 }, + { 2, 64 }, { 16, 64 }, { 32, 64 }, { 64, 64 }, { 114, 64 }, { 130, 64 }, { 146, 64 }, { 204, 64 }, { 224, 64 } +}, { + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 1, 1, 1, 4, 1, 1, 4, 4, 4, +}}; +#endif \ No newline at end of file diff --git a/keyboards/playkbtw/pk64rgb/pk64rgb.h b/keyboards/playkbtw/pk64rgb/pk64rgb.h new file mode 100644 index 000000000000..be0ee0a011c6 --- /dev/null +++ b/keyboards/playkbtw/pk64rgb/pk64rgb.h @@ -0,0 +1,33 @@ +/* Copyright 2021 Play Keyboard + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_64_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, K2C, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \ + K40, K41, K42, K45, K48, 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, KC_NO }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \ + { K40, K41, K42, KC_NO, KC_NO, K45, KC_NO, KC_NO, KC_NO, K48, K4A, K4B, K4C, K4D } \ +} diff --git a/keyboards/playkbtw/pk64rgb/readme.md b/keyboards/playkbtw/pk64rgb/readme.md new file mode 100644 index 000000000000..29871af7a6f0 --- /dev/null +++ b/keyboards/playkbtw/pk64rgb/readme.md @@ -0,0 +1,25 @@ +# Play Keyboard 64RGB + +![PK64RGB](https://cdn.store-assets.com/s/409567/i/25281841.png) + +A 60% RGB hotswap keyboard PCB made by Play Keyboard. + +* Keyboard Maintainer: [Barry Huang](https://github.com/yj7272098) +* Hardware Supported: Play Keyboard 64 RGB +* Hardware Availability: [Play Keyboard](http://play-keyboard.store/) + +Make example for this keyboard (after setting up your build environment): + + make playkbtw/pk64rgb:default + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `RESET` if it is available + +You can get into bootloader by pressing the reset button from the back of PCB. + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). \ No newline at end of file diff --git a/keyboards/playkbtw/pk64rgb/rules.mk b/keyboards/playkbtw/pk64rgb/rules.mk new file mode 100644 index 000000000000..eb049b994d24 --- /dev/null +++ b/keyboards/playkbtw/pk64rgb/rules.mk @@ -0,0 +1,26 @@ +# 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 +# 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 +RGB_MATRIX_ENABLE = yes # Use RGB matrix +RGB_MATRIX_DRIVER = IS31FL3733 + +AUDIO_ENABLE = no # Audio output + +LAYOUTS = 64_ansi + +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/plexus75/info.json b/keyboards/plexus75/info.json index 21b275ca37f7..cb0cb6e29513 100644 --- a/keyboards/plexus75/info.json +++ b/keyboards/plexus75/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Plexus75", "url": "", "maintainer": "npspears", - "width": 15, - "height": 5, "layouts": { "LAYOUT_2x2u": { "layout": [{"label":"=", "x":0, "y":0}, {"label":"1", "x":1, "y":0}, {"label":"2", "x":2, "y":0}, {"label":"3", "x":3, "y":0}, {"label":"4", "x":4, "y":0}, {"label":"5", "x":5, "y":0}, {"label":"[", "x":6, "y":0}, {"label":"]", "x":7, "y":0}, {"label":"`", "x":8, "y":0}, {"label":"6", "x":9, "y":0}, {"label":"7", "x":10, "y":0}, {"label":"8", "x":11, "y":0}, {"label":"9", "x":12, "y":0}, {"label":"9", "x":13, "y":0}, {"label":"-", "x":14, "y":0}, {"label":"Tab", "x":0, "y":1}, {"label":"Q", "x":1, "y":1}, {"label":"W", "x":2, "y":1}, {"label":"E", "x":3, "y":1}, {"label":"R", "x":4, "y":1}, {"label":"T", "x":5, "y":1}, {"label":"7", "x":6, "y":1}, {"label":"8", "x":7, "y":1}, {"label":"9", "x":8, "y":1}, {"label":"Y", "x":9, "y":1}, {"label":"U", "x":10, "y":1}, {"label":"I", "x":11, "y":1}, {"label":"O", "x":12, "y":1}, {"label":"P", "x":13, "y":1}, {"label":"Back Space", "x":14, "y":1}, {"label":"Esc", "x":0, "y":2}, {"label":"A", "x":1, "y":2}, {"label":"S", "x":2, "y":2}, {"label":"D", "x":3, "y":2}, {"label":"F", "x":4, "y":2}, {"label":"G", "x":5, "y":2}, {"label":"4", "x":6, "y":2}, {"label":"5", "x":7, "y":2}, {"label":"6", "x":8, "y":2}, {"label":"H", "x":9, "y":2}, {"label":"J", "x":10, "y":2}, {"label":"K", "x":11, "y":2}, {"label":"L", "x":12, "y":2}, {"label":";", "x":13, "y":2}, {"label":"'", "x":14, "y":2}, {"label":"Shift", "x":0, "y":3}, {"label":"Z", "x":1, "y":3}, {"label":"X", "x":2, "y":3}, {"label":"C", "x":3, "y":3}, {"label":"V", "x":4, "y":3}, {"label":"B", "x":5, "y":3}, {"label":"1", "x":6, "y":3}, {"label":"2", "x":7, "y":3}, {"label":"3", "x":8, "y":3}, {"label":"N", "x":9, "y":3}, {"label":"M", "x":10, "y":3}, {"label":",", "x":11, "y":3}, {"label":".", "x":12, "y":3}, {"label":"/", "x":13, "y":3}, {"label":"Return", "x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"OS", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4}, {"x":5, "y":4, "w":2}, {"x":7, "y":4}, {"x":8, "y":4, "w":2}, {"x":10, "y":4}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"OS", "x":12.5, "y":4}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}] @@ -16,7 +14,3 @@ } } } - - - - diff --git a/keyboards/plexus75/rules.mk b/keyboards/plexus75/rules.mk index 169778dfc64d..971b5947d13d 100644 --- a/keyboards/plexus75/rules.mk +++ b/keyboards/plexus75/rules.mk @@ -7,16 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output UNICODE_ENABLE = yes # Unicode diff --git a/keyboards/ploopyco/adns5050.c b/keyboards/ploopyco/adns5050.c deleted file mode 100644 index e12e56f20ca8..000000000000 --- a/keyboards/ploopyco/adns5050.c +++ /dev/null @@ -1,197 +0,0 @@ -/* Copyright 2021 Colin Lam (Ploopy Corporation) - * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) - * Copyright 2019 Sunjun Kim - * Copyright 2019 Hiroyuki Okada - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - - -#include "adns5050.h" -#include "quantum.h" -#include "wait.h" - -#ifdef CONSOLE_ENABLE -# include "print.h" -#endif - -#ifndef OPTIC_ROTATED -# define OPTIC_ROTATED false -#endif - -// Definitions for the ADNS serial line. -// These really ought to be defined in your config.h, but defaults are -// here if you're really lazy. -#ifndef ADNS_SCLK_PIN -# define ADNS_SCLK_PIN B7 -#endif - -#ifndef ADNS_SDIO_PIN -# define ADNS_SDIO_PIN C6 -#endif - -#ifndef ADNS_CS_PIN -# define ADNS_CS_PIN B4 -#endif - -#ifdef CONSOLE_ENABLE -void print_byte(uint8_t byte) { dprintf("%c%c%c%c%c%c%c%c|", (byte & 0x80 ? '1' : '0'), (byte & 0x40 ? '1' : '0'), (byte & 0x20 ? '1' : '0'), (byte & 0x10 ? '1' : '0'), (byte & 0x08 ? '1' : '0'), (byte & 0x04 ? '1' : '0'), (byte & 0x02 ? '1' : '0'), (byte & 0x01 ? '1' : '0')); } -#endif - -// Initialize the ADNS serial pins. -void adns_init(void) { - setPinOutput(ADNS_SCLK_PIN); - setPinOutput(ADNS_SDIO_PIN); - setPinOutput(ADNS_CS_PIN); -} - -// Perform a synchronization with the ADNS. -// Just as with the serial protocol, this is used by the slave to send a -// synchronization signal to the master. -void adns_sync(void) { - writePinLow(ADNS_CS_PIN); - wait_us(1); - writePinHigh(ADNS_CS_PIN); -} - -void adns_cs_select(void) { - writePinLow(ADNS_CS_PIN); -} - -void adns_cs_deselect(void) { - writePinHigh(ADNS_CS_PIN); -} - -uint8_t adns_serial_read(void) { - setPinInput(ADNS_SDIO_PIN); - uint8_t byte = 0; - - for (uint8_t i = 0; i < 8; ++i) { - writePinLow(ADNS_SCLK_PIN); - wait_us(1); - - byte = (byte << 1) | readPin(ADNS_SDIO_PIN); - - writePinHigh(ADNS_SCLK_PIN); - wait_us(1); - } - - return byte; -} - -void adns_serial_write(uint8_t data) { - setPinOutput(ADNS_SDIO_PIN); - - for (int8_t b = 7; b >= 0; b--) { - writePinLow(ADNS_SCLK_PIN); - - if (data & (1 << b)) - writePinHigh(ADNS_SDIO_PIN); - else - writePinLow(ADNS_SDIO_PIN); - - wait_us(2); - - writePinHigh(ADNS_SCLK_PIN); - } - - // tSWR. See page 15 of the ADNS spec sheet. - // Technically, this is only necessary if the next operation is an SDIO - // read. This is not guaranteed to be the case, but we're being lazy. - wait_us(4); - - // Note that tSWW is never necessary. All write operations require at - // least 32us, which exceeds tSWW, so there's never a need to wait for it. -} - -// Read a byte of data from a register on the ADNS. -// Don't forget to use the register map (as defined in the header file). -uint8_t adns_read_reg(uint8_t reg_addr) { - adns_cs_select(); - - adns_serial_write(reg_addr); - - // We don't need a minimum tSRAD here. That's because a 4ms wait time is - // already included in adns_serial_write(), so we're good. - // See page 10 and 15 of the ADNS spec sheet. - //wait_us(4); - - uint8_t byte = adns_serial_read(); - - // tSRW & tSRR. See page 15 of the ADNS spec sheet. - // Technically, this is only necessary if the next operation is an SDIO - // read or write. This is not guaranteed to be the case. - // Honestly, this wait could probably be removed. - wait_us(1); - - adns_cs_deselect(); - - return byte; -} - -void adns_write_reg(uint8_t reg_addr, uint8_t data) { - adns_cs_select(); - adns_serial_write( 0b10000000 | reg_addr ); - adns_serial_write(data); - adns_cs_deselect(); -} - -report_adns_t adns_read_burst(void) { - adns_cs_select(); - - report_adns_t data; - data.dx = 0; - data.dy = 0; - - adns_serial_write(REG_MOTION_BURST); - - // We don't need a minimum tSRAD here. That's because a 4ms wait time is - // already included in adns_serial_write(), so we're good. - // See page 10 and 15 of the ADNS spec sheet. - //wait_us(4); - - uint8_t x = adns_serial_read(); - uint8_t y = adns_serial_read(); - - // Burst mode returns a bunch of other shit that we don't really need. - // Setting CS to high ends burst mode early. - adns_cs_deselect(); - - data.dx = convert_twoscomp(x); - data.dy = convert_twoscomp(y); - - return data; -} - -// Convert a two's complement byte from an unsigned data type into a signed -// data type. -int8_t convert_twoscomp(uint8_t data) { - if ((data & 0x80) == 0x80) - return -128 + (data & 0x7F); - else - return data; -} - -// Don't forget to use the definitions for CPI in the header file. -void adns_set_cpi(uint8_t cpi) { - adns_write_reg(REG_MOUSE_CONTROL2, cpi); -} - -bool adns_check_signature(void) { - uint8_t pid = adns_read_reg(REG_PRODUCT_ID); - uint8_t rid = adns_read_reg(REG_REVISION_ID); - uint8_t pid2 = adns_read_reg(REG_PRODUCT_ID2); - - return (pid == 0x12 && rid == 0x01 && pid2 == 0x26); -} diff --git a/keyboards/ploopyco/adns5050.h b/keyboards/ploopyco/adns5050.h deleted file mode 100644 index ff8e8f78e985..000000000000 --- a/keyboards/ploopyco/adns5050.h +++ /dev/null @@ -1,79 +0,0 @@ -/* Copyright 2021 Colin Lam (Ploopy Corporation) - * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) - * Copyright 2019 Sunjun Kim - * Copyright 2019 Hiroyuki Okada - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include - -// Registers -#define REG_PRODUCT_ID 0x00 -#define REG_REVISION_ID 0x01 -#define REG_MOTION 0x02 -#define REG_DELTA_X 0x03 -#define REG_DELTA_Y 0x04 -#define REG_SQUAL 0x05 -#define REG_SHUTTER_UPPER 0x06 -#define REG_SHUTTER_LOWER 0x07 -#define REG_MAXIMUM_PIXEL 0x08 -#define REG_PIXEL_SUM 0x09 -#define REG_MINIMUM_PIXEL 0x0a -#define REG_PIXEL_GRAB 0x0b -#define REG_MOUSE_CONTROL 0x0d -#define REG_MOUSE_CONTROL2 0x19 -#define REG_LED_DC_MODE 0x22 -#define REG_CHIP_RESET 0x3a -#define REG_PRODUCT_ID2 0x3e -#define REG_INV_REV_ID 0x3f -#define REG_MOTION_BURST 0x63 - -// CPI values -#define CPI125 0x11 -#define CPI250 0x12 -#define CPI375 0x13 -#define CPI500 0x14 -#define CPI625 0x15 -#define CPI750 0x16 -#define CPI875 0x17 -#define CPI1000 0x18 -#define CPI1125 0x19 -#define CPI1250 0x1a -#define CPI1375 0x1b - -#ifdef CONSOLE_ENABLE -void print_byte(uint8_t byte); -#endif - -typedef struct { - int8_t dx; - int8_t dy; -} report_adns_t; - -// A bunch of functions to implement the ADNS5050-specific serial protocol. -// Note that the "serial.h" driver is insufficient, because it does not -// manually manipulate a serial clock signal. -void adns_init(void); -void adns_sync(void); -uint8_t adns_serial_read(void); -void adns_serial_write(uint8_t data); -uint8_t adns_read_reg(uint8_t reg_addr); -void adns_write_reg(uint8_t reg_addr, uint8_t data); -report_adns_t adns_read_burst(void); -int8_t convert_twoscomp(uint8_t data); -void adns_set_cpi(uint8_t cpi); -bool adns_check_signature(void); diff --git a/keyboards/ploopyco/mouse/config.h b/keyboards/ploopyco/mouse/config.h index db1c7d00209a..4f2103e31c09 100644 --- a/keyboards/ploopyco/mouse/config.h +++ b/keyboards/ploopyco/mouse/config.h @@ -81,3 +81,6 @@ #define RGBLIGHT_EFFECT_RAINBOW_SWIRL // #define DEBUG_LED_PIN F7 + +/* PMW3360 Settings */ +#define PMW3360_CS_PIN B0 diff --git a/keyboards/ploopyco/mouse/info.json b/keyboards/ploopyco/mouse/info.json index 79e62058f3b1..593583176dfe 100644 --- a/keyboards/ploopyco/mouse/info.json +++ b/keyboards/ploopyco/mouse/info.json @@ -2,8 +2,6 @@ "keyboard_name": "PloopyCo Mouse", "url": "www.ploopy.co", "maintainer": "drashna", - "width": 8, - "height": 3, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/ploopyco/mouse/keymaps/drashna/config.h b/keyboards/ploopyco/mouse/keymaps/drashna/config.h index 5bc704fec17e..5a220c801c67 100644 --- a/keyboards/ploopyco/mouse/keymaps/drashna/config.h +++ b/keyboards/ploopyco/mouse/keymaps/drashna/config.h @@ -20,5 +20,10 @@ #undef RGBLIGHT_LIMIT_VAL #define RGBLIGHT_LIMIT_VAL 255 -#define RGBLIGHT_ANIMATIONS +#define RGBLIGHT_EFFECT_BREATHING +#define RGBLIGHT_EFFECT_RAINBOW_MOOD +#define RGBLIGHT_EFFECT_RAINBOW_SWIRL +#define RGBLIGHT_EFFECT_SNAKE +#define RGBLIGHT_EFFECT_KNIGHT +#define RGBLIGHT_EFFECT_TWINKLE #define RGBLIGHT_SLEEP diff --git a/keyboards/ploopyco/mouse/keymaps/drashna/keymap.c b/keyboards/ploopyco/mouse/keymaps/drashna/keymap.c index 68b846f7ba98..a9b1c46fcbcd 100644 --- a/keyboards/ploopyco/mouse/keymaps/drashna/keymap.c +++ b/keyboards/ploopyco/mouse/keymaps/drashna/keymap.c @@ -29,6 +29,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { void eeconkfig_init_user(void) { rgblight_enable(); +#ifdef RGBLIGHT_EFFECT_TWINKLE rgblight_mode(RGBLIGHT_MODE_TWINKLE+5); +#else + rgblight_mode(RGBLIGHT_MODE_BREATHING+5); +#endif rgblight_sethsv(HSV_MAGENTA); } diff --git a/keyboards/ploopyco/mouse/mouse.c b/keyboards/ploopyco/mouse/mouse.c index 0bf96a20f775..25ebd1ee2dee 100644 --- a/keyboards/ploopyco/mouse/mouse.c +++ b/keyboards/ploopyco/mouse/mouse.c @@ -31,7 +31,8 @@ # define OPT_SCALE 1 // Multiplier for wheel #endif #ifndef PLOOPY_DPI_OPTIONS -# define PLOOPY_DPI_OPTIONS { 1200, 1600, 2400 } +# define PLOOPY_DPI_OPTIONS \ + { 1200, 1600, 2400 } # ifndef PLOOPY_DPI_DEFAULT # define PLOOPY_DPI_DEFAULT 1 # endif @@ -40,10 +41,10 @@ # define PLOOPY_DPI_DEFAULT 0 #endif #ifndef PLOOPY_DRAGSCROLL_DPI -# define PLOOPY_DRAGSCROLL_DPI 100 // Fixed-DPI Drag Scroll +# define PLOOPY_DRAGSCROLL_DPI 100 // Fixed-DPI Drag Scroll #endif #ifndef PLOOPY_DRAGSCROLL_MULTIPLIER -# define PLOOPY_DRAGSCROLL_MULTIPLIER 0.75 // Variable-DPI Drag Scroll +# define PLOOPY_DRAGSCROLL_MULTIPLIER 0.75 // Variable-DPI Drag Scroll #endif keyboard_config_t keyboard_config; @@ -65,13 +66,24 @@ uint8_t OptLowPin = OPT_ENC1; bool debug_encoder = false; bool is_drag_scroll = false; -__attribute__((weak)) void process_wheel_user(report_mouse_t* mouse_report, int16_t h, int16_t v) { - mouse_report->h = h; - mouse_report->v = v; +__attribute__((weak)) bool encoder_update_user(uint8_t index, bool clockwise) { return true; } + +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { + return false; + } +#ifdef MOUSEKEY_ENABLE + tap_code(clockwise ? KC_WH_U : KC_WH_D); +#else + mouse_report_t mouse_report = pointing_device_get_report(); + mouse_report.v = clockwise ? 1 : -1; + pointing_device_set_report(mouse_report); + pointing_device_send(); +#endif + return true; } -__attribute__((weak)) void process_wheel(report_mouse_t* mouse_report) { - // TODO: Replace this with interrupt driven code, polling is S L O W +void process_wheel(void) { // Lovingly ripped from the Ploopy Source // If the mouse wheel was just released, do not scroll. @@ -99,56 +111,25 @@ __attribute__((weak)) void process_wheel(report_mouse_t* mouse_report) { int dir = opt_encoder_handler(p1, p2); if (dir == 0) return; - process_wheel_user(mouse_report, mouse_report->h, (int)(mouse_report->v + (dir * OPT_SCALE))); -} - -__attribute__((weak)) void process_mouse_user(report_mouse_t* mouse_report, int16_t x, int16_t y) { - mouse_report->x = x; - mouse_report->y = y; + encoder_update_kb(0, dir == 1); } -__attribute__((weak)) void process_mouse(report_mouse_t* mouse_report) { - report_pmw_t data = pmw_read_burst(); - if (data.isOnSurface && data.isMotion) { - // Reset timer if stopped moving - if (!data.isMotion) { - if (MotionStart != 0) MotionStart = 0; - return; - } - - // Set timer if new motion - if ((MotionStart == 0) && data.isMotion) { - if (debug_mouse) dprintf("Starting motion.\n"); - MotionStart = timer_read(); - } +report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report) { + process_wheel(); - if (debug_mouse) { - dprintf("Delt] d: %d t: %u\n", abs(data.dx) + abs(data.dy), MotionStart); - } - if (debug_mouse) { - dprintf("Pre ] X: %d, Y: %d\n", data.dx, data.dy); - } -#if defined(PROFILE_LINEAR) - float scale = float(timer_elaspsed(MotionStart)) / 1000.0; - data.dx *= scale; - data.dy *= scale; -#elif defined(PROFILE_INVERSE) - // TODO + if (is_drag_scroll) { + mouse_report.h = mouse_report.x; +#ifdef PLOOPY_DRAGSCROLL_INVERT + // Invert vertical scroll direction + mouse_report.v = -mouse_report.y; #else - // no post processing + mouse_report.v = mouse_report.y; #endif - // apply multiplier - // data.dx *= mouse_multiplier; - // data.dy *= mouse_multiplier; - - // Wrap to HID size - data.dx = constrain(data.dx, -127, 127); - data.dy = constrain(data.dy, -127, 127); - if (debug_mouse) dprintf("Cons] X: %d, Y: %d\n", data.dx, data.dy); - // dprintf("Elapsed:%u, X: %f Y: %\n", i, pgm_read_byte(firmware_data+i)); - - process_mouse_user(mouse_report, data.dx, data.dy); + mouse_report.x = 0; + mouse_report.y = 0; } + + return pointing_device_task_user(mouse_report); } bool process_record_kb(uint16_t keycode, keyrecord_t* record) { @@ -169,7 +150,7 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record) { if (keycode == DPI_CONFIG && record->event.pressed) { keyboard_config.dpi_config = (keyboard_config.dpi_config + 1) % DPI_OPTION_SIZE; eeconfig_update_kb(keyboard_config.raw); - pmw_set_cpi(dpi_array[keyboard_config.dpi_config]); + pointing_device_set_cpi(dpi_array[keyboard_config.dpi_config]); } if (keycode == DRAG_SCROLL) { @@ -180,9 +161,9 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record) { is_drag_scroll ^= 1; } #ifdef PLOOPY_DRAGSCROLL_FIXED - pmw_set_cpi(is_drag_scroll ? PLOOPY_DRAGSCROLL_DPI : dpi_array[keyboard_config.dpi_config]); + pointing_device_set_cpi(is_drag_scroll ? PLOOPY_DRAGSCROLL_DPI : dpi_array[keyboard_config.dpi_config]); #else - pmw_set_cpi(is_drag_scroll ? (dpi_array[keyboard_config.dpi_config] * PLOOPY_DRAGSCROLL_MULTIPLIER) : dpi_array[keyboard_config.dpi_config]); + pointing_device_set_cpi(is_drag_scroll ? (dpi_array[keyboard_config.dpi_config] * PLOOPY_DRAGSCROLL_MULTIPLIER) : dpi_array[keyboard_config.dpi_config]); #endif } @@ -194,11 +175,7 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record) { #ifndef MOUSEKEY_ENABLE if (IS_MOUSEKEY_BUTTON(keycode)) { report_mouse_t currentReport = pointing_device_get_report(); - if (record->event.pressed) { - currentReport.buttons |= 1 << (keycode - KC_MS_BTN1); - } else { - currentReport.buttons &= ~(1 << (keycode - KC_MS_BTN1)); - } + currentReport.buttons = pointing_device_handle_buttons(currentReport.buttons, record->event.pressed, keycode - KC_MS_BTN1); pointing_device_set_report(currentReport); pointing_device_send(); } @@ -240,35 +217,12 @@ void keyboard_pre_init_kb(void) { keyboard_pre_init_user(); } -void pointing_device_init(void) { - // initialize ball sensor - pmw_spi_init(); +void pointing_device_init_kb(void) { + pointing_device_set_cpi(dpi_array[keyboard_config.dpi_config]); // initialize the scroll wheel's optical encoder opt_encoder_init(); } - -void pointing_device_task(void) { - report_mouse_t mouse_report = pointing_device_get_report(); - process_wheel(&mouse_report); - process_mouse(&mouse_report); - - if (is_drag_scroll) { - mouse_report.h = mouse_report.x; -#ifdef PLOOPY_DRAGSCROLL_INVERT - // Invert vertical scroll direction - mouse_report.v = -mouse_report.y; -#else - mouse_report.v = mouse_report.y; -#endif - mouse_report.x = 0; - mouse_report.y = 0; - } - - pointing_device_set_report(mouse_report); - pointing_device_send(); -} - void eeconfig_init_kb(void) { keyboard_config.dpi_config = PLOOPY_DPI_DEFAULT; eeconfig_update_kb(keyboard_config.raw); @@ -284,9 +238,3 @@ void matrix_init_kb(void) { } matrix_init_user(); } - -void keyboard_post_init_kb(void) { - pmw_set_cpi(dpi_array[keyboard_config.dpi_config]); - - keyboard_post_init_user(); -} diff --git a/keyboards/ploopyco/mouse/mouse.h b/keyboards/ploopyco/mouse/mouse.h index 5d49d2f2d2ed..8383049aa52c 100644 --- a/keyboards/ploopyco/mouse/mouse.h +++ b/keyboards/ploopyco/mouse/mouse.h @@ -19,11 +19,8 @@ #pragma once #include "quantum.h" -#include "spi_master.h" -#include "pmw3360.h" #include "analog.h" #include "opt_encoder.h" -#include "pointing_device.h" // Sensor defs #define OPT_ENC1 F0 @@ -31,19 +28,16 @@ #define OPT_ENC1_MUX 0 #define OPT_ENC2_MUX 4 -void process_mouse(report_mouse_t* mouse_report); -void process_mouse_user(report_mouse_t* mouse_report, int16_t x, int16_t y); -void process_wheel(report_mouse_t* mouse_report); -void process_wheel_user(report_mouse_t* mouse_report, int16_t h, int16_t v); +void process_wheel(void); #define LAYOUT(BLL, BL, BM, BR, BRR, BF, BB, BDPI) \ { {BL, BM, BR, BF, BB, BRR, BLL, BDPI}, } typedef union { - uint32_t raw; - struct { - uint8_t dpi_config; - }; + uint32_t raw; + struct { + uint8_t dpi_config; + }; } keyboard_config_t; extern keyboard_config_t keyboard_config; @@ -62,3 +56,6 @@ enum ploopy_keycodes { PLOOPY_SAFE_RANGE, #endif }; + +bool encoder_update_user(uint8_t index, bool clockwise); +bool encoder_update_kb(uint8_t index, bool clockwise); diff --git a/keyboards/ploopyco/mouse/readme.md b/keyboards/ploopyco/mouse/readme.md index e9ad915a66c6..f7f072928b76 100644 --- a/keyboards/ploopyco/mouse/readme.md +++ b/keyboards/ploopyco/mouse/readme.md @@ -1,6 +1,6 @@ # Ploopyco Mouse -![Ploopyco Mouse](https://www.ploopy.co/uploads/1/2/7/6/127652558/s905404500980887952_p10_i19_w1414.jpeg) +![Ploopyco Mouse](https://ploopy.co/wp-content/uploads/2021/06/g1.jpeg) It's a DIY, QMK Powered Mouse!!!! @@ -17,7 +17,7 @@ To jump to the bootloader, hold down "Button 4" (the "forward" button on the lef 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). -# Customzing your PloopyCo Mouse +# Customizing your PloopyCo Mouse While the defaults are designed so that it can be plugged in and used right away, there are a number of things that you may want to change. Such as adding DPI control, or to use the ball to scroll while holding a button. To allow for this sort of control, there is a callback for both the scroll wheel and the mouse sensor. diff --git a/keyboards/ploopyco/mouse/rules.mk b/keyboards/ploopyco/mouse/rules.mk index f998672f1443..3a029004d7bf 100644 --- a/keyboards/ploopyco/mouse/rules.mk +++ b/keyboards/ploopyco/mouse/rules.mk @@ -10,21 +10,21 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite 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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output POINTING_DEVICE_ENABLE = yes +POINTING_DEVICE_DRIVER = pmw3360 MOUSEKEY_ENABLE = yes # Mouse keys -QUANTUM_LIB_SRC += analog.c spi_master.c -SRC += pmw3360.c opt_encoder.c +ENCODER_ENABLE := no +OPTS_DEF += -DENCODER_ENABLE + +QUANTUM_LIB_SRC += analog.c +SRC += opt_encoder.c diff --git a/keyboards/ploopyco/pmw3360.c b/keyboards/ploopyco/pmw3360.c deleted file mode 100644 index 5f9f72a9ec86..000000000000 --- a/keyboards/ploopyco/pmw3360.c +++ /dev/null @@ -1,218 +0,0 @@ -/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) - * Copyright 2019 Sunjun Kim - * Copyright 2020 Ploopy Corporation - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "wait.h" -#include "debug.h" -#include "print.h" -#include "pmw3360.h" -#include "pmw3360_firmware.h" - -bool _inBurst = false; - -#ifndef PMW_CPI -# define PMW_CPI 1600 -#endif -#ifndef SPI_DIVISOR -# define SPI_DIVISOR 2 -#endif -#ifndef ROTATIONAL_TRANSFORM_ANGLE -# define ROTATIONAL_TRANSFORM_ANGLE 0x00 -#endif - -void print_byte(uint8_t byte) { dprintf("%c%c%c%c%c%c%c%c|", (byte & 0x80 ? '1' : '0'), (byte & 0x40 ? '1' : '0'), (byte & 0x20 ? '1' : '0'), (byte & 0x10 ? '1' : '0'), (byte & 0x08 ? '1' : '0'), (byte & 0x04 ? '1' : '0'), (byte & 0x02 ? '1' : '0'), (byte & 0x01 ? '1' : '0')); } - - -bool spi_start_adv(void) { - bool status = spi_start(SPI_SS_PIN, false, 3, SPI_DIVISOR); - wait_us(1); - return status; -} - -void spi_stop_adv(void) { - wait_us(1); - spi_stop(); -} - -spi_status_t spi_write_adv(uint8_t reg_addr, uint8_t data) { - if (reg_addr != REG_Motion_Burst) { - _inBurst = false; - } - - spi_start_adv(); - // send address of the register, with MSBit = 1 to indicate it's a write - spi_status_t status = spi_write(reg_addr | 0x80); - status = spi_write(data); - - // tSCLK-NCS for write operation - wait_us(20); - - // tSWW/tSWR (=120us) minus tSCLK-NCS. Could be shortened, but is looks like a safe lower bound - wait_us(100); - spi_stop(); - return status; -} - -uint8_t spi_read_adv(uint8_t reg_addr) { - spi_start_adv(); - // send adress of the register, with MSBit = 0 to indicate it's a read - spi_write(reg_addr & 0x7f); - - uint8_t data = spi_read(); - - // tSCLK-NCS for read operation is 120ns - wait_us(1); - - // tSRW/tSRR (=20us) minus tSCLK-NCS - wait_us(19); - - spi_stop(); - return data; -} - -void pmw_set_cpi(uint16_t cpi) { - int cpival = constrain((cpi / 100) - 1, 0, 0x77); // limits to 0--119 - - spi_start_adv(); - spi_write_adv(REG_Config1, cpival); - spi_stop(); -} - -bool pmw_spi_init(void) { - spi_init(); - _inBurst = false; - - spi_stop(); - spi_start_adv(); - spi_stop(); - - spi_write_adv(REG_Shutdown, 0xb6); // Shutdown first - wait_ms(300); - - spi_start_adv(); - wait_us(40); - spi_stop_adv(); - wait_us(40); - - spi_write_adv(REG_Power_Up_Reset, 0x5a); - wait_ms(50); - - spi_read_adv(REG_Motion); - spi_read_adv(REG_Delta_X_L); - spi_read_adv(REG_Delta_X_H); - spi_read_adv(REG_Delta_Y_L); - spi_read_adv(REG_Delta_Y_H); - - pmw_upload_firmware(); - - spi_stop_adv(); - - wait_ms(10); - pmw_set_cpi(PMW_CPI); - - wait_ms(1); - - return pmw_check_signature(); -} - -void pmw_upload_firmware(void) { - spi_write_adv(REG_Config2, 0x00); - - spi_write_adv(REG_Angle_Tune, constrain(ROTATIONAL_TRANSFORM_ANGLE, -30, 30)); - - spi_write_adv(REG_SROM_Enable, 0x1d); - - wait_ms(10); - - spi_write_adv(REG_SROM_Enable, 0x18); - - spi_start_adv(); - spi_write(REG_SROM_Load_Burst | 0x80); - wait_us(15); - - unsigned char c; - for (int i = 0; i < firmware_length; i++) { - c = (unsigned char)pgm_read_byte(firmware_data + i); - spi_write(c); - wait_us(15); - } - wait_us(200); - - spi_read_adv(REG_SROM_ID); - - spi_write_adv(REG_Config2, 0x00); - - spi_stop(); - wait_ms(10); -} - -bool pmw_check_signature(void) { - uint8_t pid = spi_read_adv(REG_Product_ID); - uint8_t iv_pid = spi_read_adv(REG_Inverse_Product_ID); - uint8_t SROM_ver = spi_read_adv(REG_SROM_ID); - return (pid == 0x42 && iv_pid == 0xBD && SROM_ver == 0x04); // signature for SROM 0x04 -} - -report_pmw_t pmw_read_burst(void) { - if (!_inBurst) { - dprintf("burst on"); - spi_write_adv(REG_Motion_Burst, 0x00); - _inBurst = true; - } - - spi_start_adv(); - spi_write(REG_Motion_Burst); - wait_us(35); // waits for tSRAD - - report_pmw_t data; - data.motion = 0; - data.dx = 0; - data.mdx = 0; - data.dy = 0; - data.mdx = 0; - - data.motion = spi_read(); - spi_write(0x00); // skip Observation - data.dx = spi_read(); - data.mdx = spi_read(); - data.dy = spi_read(); - data.mdy = spi_read(); - - spi_stop(); - - print_byte(data.motion); - print_byte(data.dx); - print_byte(data.mdx); - print_byte(data.dy); - print_byte(data.mdy); - dprintf("\n"); - - data.isMotion = (data.motion & 0x80) != 0; - data.isOnSurface = (data.motion & 0x08) == 0; - data.dx |= (data.mdx << 8); - data.dx = data.dx * -1; - data.dy |= (data.mdy << 8); - data.dy = data.dy * -1; - - spi_stop(); - - if (data.motion & 0b111) { // panic recovery, sometimes burst mode works weird. - _inBurst = false; - } - - return data; -} diff --git a/keyboards/ploopyco/pmw3360.h b/keyboards/ploopyco/pmw3360.h deleted file mode 100644 index c1d5e3badbea..000000000000 --- a/keyboards/ploopyco/pmw3360.h +++ /dev/null @@ -1,103 +0,0 @@ -/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) - * Copyright 2019 Sunjun Kim - * Copyright 2020 Ploopy Corporation - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include "spi_master.h" - -// Registers -#define REG_Product_ID 0x00 -#define REG_Revision_ID 0x01 -#define REG_Motion 0x02 -#define REG_Delta_X_L 0x03 -#define REG_Delta_X_H 0x04 -#define REG_Delta_Y_L 0x05 -#define REG_Delta_Y_H 0x06 -#define REG_SQUAL 0x07 -#define REG_Raw_Data_Sum 0x08 -#define REG_Maximum_Raw_data 0x09 -#define REG_Minimum_Raw_data 0x0A -#define REG_Shutter_Lower 0x0B -#define REG_Shutter_Upper 0x0C -#define REG_Control 0x0D -#define REG_Config1 0x0F -#define REG_Config2 0x10 -#define REG_Angle_Tune 0x11 -#define REG_Frame_Capture 0x12 -#define REG_SROM_Enable 0x13 -#define REG_Run_Downshift 0x14 -#define REG_Rest1_Rate_Lower 0x15 -#define REG_Rest1_Rate_Upper 0x16 -#define REG_Rest1_Downshift 0x17 -#define REG_Rest2_Rate_Lower 0x18 -#define REG_Rest2_Rate_Upper 0x19 -#define REG_Rest2_Downshift 0x1A -#define REG_Rest3_Rate_Lower 0x1B -#define REG_Rest3_Rate_Upper 0x1C -#define REG_Observation 0x24 -#define REG_Data_Out_Lower 0x25 -#define REG_Data_Out_Upper 0x26 -#define REG_Raw_Data_Dump 0x29 -#define REG_SROM_ID 0x2A -#define REG_Min_SQ_Run 0x2B -#define REG_Raw_Data_Threshold 0x2C -#define REG_Config5 0x2F -#define REG_Power_Up_Reset 0x3A -#define REG_Shutdown 0x3B -#define REG_Inverse_Product_ID 0x3F -#define REG_LiftCutoff_Tune3 0x41 -#define REG_Angle_Snap 0x42 -#define REG_LiftCutoff_Tune1 0x4A -#define REG_Motion_Burst 0x50 -#define REG_LiftCutoff_Tune_Timeout 0x58 -#define REG_LiftCutoff_Tune_Min_Length 0x5A -#define REG_SROM_Load_Burst 0x62 -#define REG_Lift_Config 0x63 -#define REG_Raw_Data_Burst 0x64 -#define REG_LiftCutoff_Tune2 0x65 - -#ifdef CONSOLE_ENABLE -void print_byte(uint8_t byte); -#endif - -typedef struct { - int8_t motion; - bool isMotion; // True if a motion is detected. - bool isOnSurface; // True when a chip is on a surface - int16_t dx; // displacement on x directions. Unit: Count. (CPI * Count = Inch value) - int8_t mdx; - int16_t dy; // displacement on y directions. - int8_t mdy; -} report_pmw_t; - - - -bool spi_start_adv(void); -void spi_stop_adv(void); -spi_status_t spi_write_adv(uint8_t reg_addr, uint8_t data); -uint8_t spi_read_adv(uint8_t reg_addr); -bool pmw_spi_init(void); -void pmw_set_cpi(uint16_t cpi); -void pmw_upload_firmware(void); -bool pmw_check_signature(void); -report_pmw_t pmw_read_burst(void); - - -#define degToRad(angleInDegrees) ((angleInDegrees)*M_PI / 180.0) -#define radToDeg(angleInRadians) ((angleInRadians)*180.0 / M_PI) -#define constrain(amt, low, high) ((amt) < (low) ? (low) : ((amt) > (high) ? (high) : (amt))) diff --git a/keyboards/ploopyco/pmw3360_firmware.h b/keyboards/ploopyco/pmw3360_firmware.h deleted file mode 100644 index cca5a6a4d877..000000000000 --- a/keyboards/ploopyco/pmw3360_firmware.h +++ /dev/null @@ -1,300 +0,0 @@ -/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) - * Copyright 2019 Sunjun Kim - * Copyright 2020 Ploopy Corporation - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -// clang-format off -// Firmware Blob foor PMW3360 -const uint16_t firmware_length = 4094; -// clang-format off -const uint8_t firmware_data[] PROGMEM = { // SROM 0x04 -0x01, 0x04, 0x8e, 0x96, 0x6e, 0x77, 0x3e, 0xfe, 0x7e, 0x5f, 0x1d, 0xb8, 0xf2, 0x66, 0x4e, -0xff, 0x5d, 0x19, 0xb0, 0xc2, 0x04, 0x69, 0x54, 0x2a, 0xd6, 0x2e, 0xbf, 0xdd, 0x19, 0xb0, -0xc3, 0xe5, 0x29, 0xb1, 0xe0, 0x23, 0xa5, 0xa9, 0xb1, 0xc1, 0x00, 0x82, 0x67, 0x4c, 0x1a, -0x97, 0x8d, 0x79, 0x51, 0x20, 0xc7, 0x06, 0x8e, 0x7c, 0x7c, 0x7a, 0x76, 0x4f, 0xfd, 0x59, -0x30, 0xe2, 0x46, 0x0e, 0x9e, 0xbe, 0xdf, 0x1d, 0x99, 0x91, 0xa0, 0xa5, 0xa1, 0xa9, 0xd0, -0x22, 0xc6, 0xef, 0x5c, 0x1b, 0x95, 0x89, 0x90, 0xa2, 0xa7, 0xcc, 0xfb, 0x55, 0x28, 0xb3, -0xe4, 0x4a, 0xf7, 0x6c, 0x3b, 0xf4, 0x6a, 0x56, 0x2e, 0xde, 0x1f, 0x9d, 0xb8, 0xd3, 0x05, -0x88, 0x92, 0xa6, 0xce, 0x1e, 0xbe, 0xdf, 0x1d, 0x99, 0xb0, 0xe2, 0x46, 0xef, 0x5c, 0x07, -0x11, 0x5d, 0x98, 0x0b, 0x9d, 0x94, 0x97, 0xee, 0x4e, 0x45, 0x33, 0x6b, 0x44, 0xc7, 0x29, -0x56, 0x27, 0x30, 0xc6, 0xa7, 0xd5, 0xf2, 0x56, 0xdf, 0xb4, 0x38, 0x62, 0xcb, 0xa0, 0xb6, -0xe3, 0x0f, 0x84, 0x06, 0x24, 0x05, 0x65, 0x6f, 0x76, 0x89, 0xb5, 0x77, 0x41, 0x27, 0x82, -0x66, 0x65, 0x82, 0xcc, 0xd5, 0xe6, 0x20, 0xd5, 0x27, 0x17, 0xc5, 0xf8, 0x03, 0x23, 0x7c, -0x5f, 0x64, 0xa5, 0x1d, 0xc1, 0xd6, 0x36, 0xcb, 0x4c, 0xd4, 0xdb, 0x66, 0xd7, 0x8b, 0xb1, -0x99, 0x7e, 0x6f, 0x4c, 0x36, 0x40, 0x06, 0xd6, 0xeb, 0xd7, 0xa2, 0xe4, 0xf4, 0x95, 0x51, -0x5a, 0x54, 0x96, 0xd5, 0x53, 0x44, 0xd7, 0x8c, 0xe0, 0xb9, 0x40, 0x68, 0xd2, 0x18, 0xe9, -0xdd, 0x9a, 0x23, 0x92, 0x48, 0xee, 0x7f, 0x43, 0xaf, 0xea, 0x77, 0x38, 0x84, 0x8c, 0x0a, -0x72, 0xaf, 0x69, 0xf8, 0xdd, 0xf1, 0x24, 0x83, 0xa3, 0xf8, 0x4a, 0xbf, 0xf5, 0x94, 0x13, -0xdb, 0xbb, 0xd8, 0xb4, 0xb3, 0xa0, 0xfb, 0x45, 0x50, 0x60, 0x30, 0x59, 0x12, 0x31, 0x71, -0xa2, 0xd3, 0x13, 0xe7, 0xfa, 0xe7, 0xce, 0x0f, 0x63, 0x15, 0x0b, 0x6b, 0x94, 0xbb, 0x37, -0x83, 0x26, 0x05, 0x9d, 0xfb, 0x46, 0x92, 0xfc, 0x0a, 0x15, 0xd1, 0x0d, 0x73, 0x92, 0xd6, -0x8c, 0x1b, 0x8c, 0xb8, 0x55, 0x8a, 0xce, 0xbd, 0xfe, 0x8e, 0xfc, 0xed, 0x09, 0x12, 0x83, -0x91, 0x82, 0x51, 0x31, 0x23, 0xfb, 0xb4, 0x0c, 0x76, 0xad, 0x7c, 0xd9, 0xb4, 0x4b, 0xb2, -0x67, 0x14, 0x09, 0x9c, 0x7f, 0x0c, 0x18, 0xba, 0x3b, 0xd6, 0x8e, 0x14, 0x2a, 0xe4, 0x1b, -0x52, 0x9f, 0x2b, 0x7d, 0xe1, 0xfb, 0x6a, 0x33, 0x02, 0xfa, 0xac, 0x5a, 0xf2, 0x3e, 0x88, -0x7e, 0xae, 0xd1, 0xf3, 0x78, 0xe8, 0x05, 0xd1, 0xe3, 0xdc, 0x21, 0xf6, 0xe1, 0x9a, 0xbd, -0x17, 0x0e, 0xd9, 0x46, 0x9b, 0x88, 0x03, 0xea, 0xf6, 0x66, 0xbe, 0x0e, 0x1b, 0x50, 0x49, -0x96, 0x40, 0x97, 0xf1, 0xf1, 0xe4, 0x80, 0xa6, 0x6e, 0xe8, 0x77, 0x34, 0xbf, 0x29, 0x40, -0x44, 0xc2, 0xff, 0x4e, 0x98, 0xd3, 0x9c, 0xa3, 0x32, 0x2b, 0x76, 0x51, 0x04, 0x09, 0xe7, -0xa9, 0xd1, 0xa6, 0x32, 0xb1, 0x23, 0x53, 0xe2, 0x47, 0xab, 0xd6, 0xf5, 0x69, 0x5c, 0x3e, -0x5f, 0xfa, 0xae, 0x45, 0x20, 0xe5, 0xd2, 0x44, 0xff, 0x39, 0x32, 0x6d, 0xfd, 0x27, 0x57, -0x5c, 0xfd, 0xf0, 0xde, 0xc1, 0xb5, 0x99, 0xe5, 0xf5, 0x1c, 0x77, 0x01, 0x75, 0xc5, 0x6d, -0x58, 0x92, 0xf2, 0xb2, 0x47, 0x00, 0x01, 0x26, 0x96, 0x7a, 0x30, 0xff, 0xb7, 0xf0, 0xef, -0x77, 0xc1, 0x8a, 0x5d, 0xdc, 0xc0, 0xd1, 0x29, 0x30, 0x1e, 0x77, 0x38, 0x7a, 0x94, 0xf1, -0xb8, 0x7a, 0x7e, 0xef, 0xa4, 0xd1, 0xac, 0x31, 0x4a, 0xf2, 0x5d, 0x64, 0x3d, 0xb2, 0xe2, -0xf0, 0x08, 0x99, 0xfc, 0x70, 0xee, 0x24, 0xa7, 0x7e, 0xee, 0x1e, 0x20, 0x69, 0x7d, 0x44, -0xbf, 0x87, 0x42, 0xdf, 0x88, 0x3b, 0x0c, 0xda, 0x42, 0xc9, 0x04, 0xf9, 0x45, 0x50, 0xfc, -0x83, 0x8f, 0x11, 0x6a, 0x72, 0xbc, 0x99, 0x95, 0xf0, 0xac, 0x3d, 0xa7, 0x3b, 0xcd, 0x1c, -0xe2, 0x88, 0x79, 0x37, 0x11, 0x5f, 0x39, 0x89, 0x95, 0x0a, 0x16, 0x84, 0x7a, 0xf6, 0x8a, -0xa4, 0x28, 0xe4, 0xed, 0x83, 0x80, 0x3b, 0xb1, 0x23, 0xa5, 0x03, 0x10, 0xf4, 0x66, 0xea, -0xbb, 0x0c, 0x0f, 0xc5, 0xec, 0x6c, 0x69, 0xc5, 0xd3, 0x24, 0xab, 0xd4, 0x2a, 0xb7, 0x99, -0x88, 0x76, 0x08, 0xa0, 0xa8, 0x95, 0x7c, 0xd8, 0x38, 0x6d, 0xcd, 0x59, 0x02, 0x51, 0x4b, -0xf1, 0xb5, 0x2b, 0x50, 0xe3, 0xb6, 0xbd, 0xd0, 0x72, 0xcf, 0x9e, 0xfd, 0x6e, 0xbb, 0x44, -0xc8, 0x24, 0x8a, 0x77, 0x18, 0x8a, 0x13, 0x06, 0xef, 0x97, 0x7d, 0xfa, 0x81, 0xf0, 0x31, -0xe6, 0xfa, 0x77, 0xed, 0x31, 0x06, 0x31, 0x5b, 0x54, 0x8a, 0x9f, 0x30, 0x68, 0xdb, 0xe2, -0x40, 0xf8, 0x4e, 0x73, 0xfa, 0xab, 0x74, 0x8b, 0x10, 0x58, 0x13, 0xdc, 0xd2, 0xe6, 0x78, -0xd1, 0x32, 0x2e, 0x8a, 0x9f, 0x2c, 0x58, 0x06, 0x48, 0x27, 0xc5, 0xa9, 0x5e, 0x81, 0x47, -0x89, 0x46, 0x21, 0x91, 0x03, 0x70, 0xa4, 0x3e, 0x88, 0x9c, 0xda, 0x33, 0x0a, 0xce, 0xbc, -0x8b, 0x8e, 0xcf, 0x9f, 0xd3, 0x71, 0x80, 0x43, 0xcf, 0x6b, 0xa9, 0x51, 0x83, 0x76, 0x30, -0x82, 0xc5, 0x6a, 0x85, 0x39, 0x11, 0x50, 0x1a, 0x82, 0xdc, 0x1e, 0x1c, 0xd5, 0x7d, 0xa9, -0x71, 0x99, 0x33, 0x47, 0x19, 0x97, 0xb3, 0x5a, 0xb1, 0xdf, 0xed, 0xa4, 0xf2, 0xe6, 0x26, -0x84, 0xa2, 0x28, 0x9a, 0x9e, 0xdf, 0xa6, 0x6a, 0xf4, 0xd6, 0xfc, 0x2e, 0x5b, 0x9d, 0x1a, -0x2a, 0x27, 0x68, 0xfb, 0xc1, 0x83, 0x21, 0x4b, 0x90, 0xe0, 0x36, 0xdd, 0x5b, 0x31, 0x42, -0x55, 0xa0, 0x13, 0xf7, 0xd0, 0x89, 0x53, 0x71, 0x99, 0x57, 0x09, 0x29, 0xc5, 0xf3, 0x21, -0xf8, 0x37, 0x2f, 0x40, 0xf3, 0xd4, 0xaf, 0x16, 0x08, 0x36, 0x02, 0xfc, 0x77, 0xc5, 0x8b, -0x04, 0x90, 0x56, 0xb9, 0xc9, 0x67, 0x9a, 0x99, 0xe8, 0x00, 0xd3, 0x86, 0xff, 0x97, 0x2d, -0x08, 0xe9, 0xb7, 0xb3, 0x91, 0xbc, 0xdf, 0x45, 0xc6, 0xed, 0x0f, 0x8c, 0x4c, 0x1e, 0xe6, -0x5b, 0x6e, 0x38, 0x30, 0xe4, 0xaa, 0xe3, 0x95, 0xde, 0xb9, 0xe4, 0x9a, 0xf5, 0xb2, 0x55, -0x9a, 0x87, 0x9b, 0xf6, 0x6a, 0xb2, 0xf2, 0x77, 0x9a, 0x31, 0xf4, 0x7a, 0x31, 0xd1, 0x1d, -0x04, 0xc0, 0x7c, 0x32, 0xa2, 0x9e, 0x9a, 0xf5, 0x62, 0xf8, 0x27, 0x8d, 0xbf, 0x51, 0xff, -0xd3, 0xdf, 0x64, 0x37, 0x3f, 0x2a, 0x6f, 0x76, 0x3a, 0x7d, 0x77, 0x06, 0x9e, 0x77, 0x7f, -0x5e, 0xeb, 0x32, 0x51, 0xf9, 0x16, 0x66, 0x9a, 0x09, 0xf3, 0xb0, 0x08, 0xa4, 0x70, 0x96, -0x46, 0x30, 0xff, 0xda, 0x4f, 0xe9, 0x1b, 0xed, 0x8d, 0xf8, 0x74, 0x1f, 0x31, 0x92, 0xb3, -0x73, 0x17, 0x36, 0xdb, 0x91, 0x30, 0xd6, 0x88, 0x55, 0x6b, 0x34, 0x77, 0x87, 0x7a, 0xe7, -0xee, 0x06, 0xc6, 0x1c, 0x8c, 0x19, 0x0c, 0x48, 0x46, 0x23, 0x5e, 0x9c, 0x07, 0x5c, 0xbf, -0xb4, 0x7e, 0xd6, 0x4f, 0x74, 0x9c, 0xe2, 0xc5, 0x50, 0x8b, 0xc5, 0x8b, 0x15, 0x90, 0x60, -0x62, 0x57, 0x29, 0xd0, 0x13, 0x43, 0xa1, 0x80, 0x88, 0x91, 0x00, 0x44, 0xc7, 0x4d, 0x19, -0x86, 0xcc, 0x2f, 0x2a, 0x75, 0x5a, 0xfc, 0xeb, 0x97, 0x2a, 0x70, 0xe3, 0x78, 0xd8, 0x91, -0xb0, 0x4f, 0x99, 0x07, 0xa3, 0x95, 0xea, 0x24, 0x21, 0xd5, 0xde, 0x51, 0x20, 0x93, 0x27, -0x0a, 0x30, 0x73, 0xa8, 0xff, 0x8a, 0x97, 0xe9, 0xa7, 0x6a, 0x8e, 0x0d, 0xe8, 0xf0, 0xdf, -0xec, 0xea, 0xb4, 0x6c, 0x1d, 0x39, 0x2a, 0x62, 0x2d, 0x3d, 0x5a, 0x8b, 0x65, 0xf8, 0x90, -0x05, 0x2e, 0x7e, 0x91, 0x2c, 0x78, 0xef, 0x8e, 0x7a, 0xc1, 0x2f, 0xac, 0x78, 0xee, 0xaf, -0x28, 0x45, 0x06, 0x4c, 0x26, 0xaf, 0x3b, 0xa2, 0xdb, 0xa3, 0x93, 0x06, 0xb5, 0x3c, 0xa5, -0xd8, 0xee, 0x8f, 0xaf, 0x25, 0xcc, 0x3f, 0x85, 0x68, 0x48, 0xa9, 0x62, 0xcc, 0x97, 0x8f, -0x7f, 0x2a, 0xea, 0xe0, 0x15, 0x0a, 0xad, 0x62, 0x07, 0xbd, 0x45, 0xf8, 0x41, 0xd8, 0x36, -0xcb, 0x4c, 0xdb, 0x6e, 0xe6, 0x3a, 0xe7, 0xda, 0x15, 0xe9, 0x29, 0x1e, 0x12, 0x10, 0xa0, -0x14, 0x2c, 0x0e, 0x3d, 0xf4, 0xbf, 0x39, 0x41, 0x92, 0x75, 0x0b, 0x25, 0x7b, 0xa3, 0xce, -0x39, 0x9c, 0x15, 0x64, 0xc8, 0xfa, 0x3d, 0xef, 0x73, 0x27, 0xfe, 0x26, 0x2e, 0xce, 0xda, -0x6e, 0xfd, 0x71, 0x8e, 0xdd, 0xfe, 0x76, 0xee, 0xdc, 0x12, 0x5c, 0x02, 0xc5, 0x3a, 0x4e, -0x4e, 0x4f, 0xbf, 0xca, 0x40, 0x15, 0xc7, 0x6e, 0x8d, 0x41, 0xf1, 0x10, 0xe0, 0x4f, 0x7e, -0x97, 0x7f, 0x1c, 0xae, 0x47, 0x8e, 0x6b, 0xb1, 0x25, 0x31, 0xb0, 0x73, 0xc7, 0x1b, 0x97, -0x79, 0xf9, 0x80, 0xd3, 0x66, 0x22, 0x30, 0x07, 0x74, 0x1e, 0xe4, 0xd0, 0x80, 0x21, 0xd6, -0xee, 0x6b, 0x6c, 0x4f, 0xbf, 0xf5, 0xb7, 0xd9, 0x09, 0x87, 0x2f, 0xa9, 0x14, 0xbe, 0x27, -0xd9, 0x72, 0x50, 0x01, 0xd4, 0x13, 0x73, 0xa6, 0xa7, 0x51, 0x02, 0x75, 0x25, 0xe1, 0xb3, -0x45, 0x34, 0x7d, 0xa8, 0x8e, 0xeb, 0xf3, 0x16, 0x49, 0xcb, 0x4f, 0x8c, 0xa1, 0xb9, 0x36, -0x85, 0x39, 0x75, 0x5d, 0x08, 0x00, 0xae, 0xeb, 0xf6, 0xea, 0xd7, 0x13, 0x3a, 0x21, 0x5a, -0x5f, 0x30, 0x84, 0x52, 0x26, 0x95, 0xc9, 0x14, 0xf2, 0x57, 0x55, 0x6b, 0xb1, 0x10, 0xc2, -0xe1, 0xbd, 0x3b, 0x51, 0xc0, 0xb7, 0x55, 0x4c, 0x71, 0x12, 0x26, 0xc7, 0x0d, 0xf9, 0x51, -0xa4, 0x38, 0x02, 0x05, 0x7f, 0xb8, 0xf1, 0x72, 0x4b, 0xbf, 0x71, 0x89, 0x14, 0xf3, 0x77, -0x38, 0xd9, 0x71, 0x24, 0xf3, 0x00, 0x11, 0xa1, 0xd8, 0xd4, 0x69, 0x27, 0x08, 0x37, 0x35, -0xc9, 0x11, 0x9d, 0x90, 0x1c, 0x0e, 0xe7, 0x1c, 0xff, 0x2d, 0x1e, 0xe8, 0x92, 0xe1, 0x18, -0x10, 0x95, 0x7c, 0xe0, 0x80, 0xf4, 0x96, 0x43, 0x21, 0xf9, 0x75, 0x21, 0x64, 0x38, 0xdd, -0x9f, 0x1e, 0x95, 0x16, 0xda, 0x56, 0x1d, 0x4f, 0x9a, 0x53, 0xb2, 0xe2, 0xe4, 0x18, 0xcb, -0x6b, 0x1a, 0x65, 0xeb, 0x56, 0xc6, 0x3b, 0xe5, 0xfe, 0xd8, 0x26, 0x3f, 0x3a, 0x84, 0x59, -0x72, 0x66, 0xa2, 0xf3, 0x75, 0xff, 0xfb, 0x60, 0xb3, 0x22, 0xad, 0x3f, 0x2d, 0x6b, 0xf9, -0xeb, 0xea, 0x05, 0x7c, 0xd8, 0x8f, 0x6d, 0x2c, 0x98, 0x9e, 0x2b, 0x93, 0xf1, 0x5e, 0x46, -0xf0, 0x87, 0x49, 0x29, 0x73, 0x68, 0xd7, 0x7f, 0xf9, 0xf0, 0xe5, 0x7d, 0xdb, 0x1d, 0x75, -0x19, 0xf3, 0xc4, 0x58, 0x9b, 0x17, 0x88, 0xa8, 0x92, 0xe0, 0xbe, 0xbd, 0x8b, 0x1d, 0x8d, -0x9f, 0x56, 0x76, 0xad, 0xaf, 0x29, 0xe2, 0xd9, 0xd5, 0x52, 0xf6, 0xb5, 0x56, 0x35, 0x57, -0x3a, 0xc8, 0xe1, 0x56, 0x43, 0x19, 0x94, 0xd3, 0x04, 0x9b, 0x6d, 0x35, 0xd8, 0x0b, 0x5f, -0x4d, 0x19, 0x8e, 0xec, 0xfa, 0x64, 0x91, 0x0a, 0x72, 0x20, 0x2b, 0xbc, 0x1a, 0x4a, 0xfe, -0x8b, 0xfd, 0xbb, 0xed, 0x1b, 0x23, 0xea, 0xad, 0x72, 0x82, 0xa1, 0x29, 0x99, 0x71, 0xbd, -0xf0, 0x95, 0xc1, 0x03, 0xdd, 0x7b, 0xc2, 0xb2, 0x3c, 0x28, 0x54, 0xd3, 0x68, 0xa4, 0x72, -0xc8, 0x66, 0x96, 0xe0, 0xd1, 0xd8, 0x7f, 0xf8, 0xd1, 0x26, 0x2b, 0xf7, 0xad, 0xba, 0x55, -0xca, 0x15, 0xb9, 0x32, 0xc3, 0xe5, 0x88, 0x97, 0x8e, 0x5c, 0xfb, 0x92, 0x25, 0x8b, 0xbf, -0xa2, 0x45, 0x55, 0x7a, 0xa7, 0x6f, 0x8b, 0x57, 0x5b, 0xcf, 0x0e, 0xcb, 0x1d, 0xfb, 0x20, -0x82, 0x77, 0xa8, 0x8c, 0xcc, 0x16, 0xce, 0x1d, 0xfa, 0xde, 0xcc, 0x0b, 0x62, 0xfe, 0xcc, -0xe1, 0xb7, 0xf0, 0xc3, 0x81, 0x64, 0x73, 0x40, 0xa0, 0xc2, 0x4d, 0x89, 0x11, 0x75, 0x33, -0x55, 0x33, 0x8d, 0xe8, 0x4a, 0xfd, 0xea, 0x6e, 0x30, 0x0b, 0xd7, 0x31, 0x2c, 0xde, 0x47, -0xe3, 0xbf, 0xf8, 0x55, 0x42, 0xe2, 0x7f, 0x59, 0xe5, 0x17, 0xef, 0x99, 0x34, 0x69, 0x91, -0xb1, 0x23, 0x8e, 0x20, 0x87, 0x2d, 0xa8, 0xfe, 0xd5, 0x8a, 0xf3, 0x84, 0x3a, 0xf0, 0x37, -0xe4, 0x09, 0x00, 0x54, 0xee, 0x67, 0x49, 0x93, 0xe4, 0x81, 0x70, 0xe3, 0x90, 0x4d, 0xef, -0xfe, 0x41, 0xb7, 0x99, 0x7b, 0xc1, 0x83, 0xba, 0x62, 0x12, 0x6f, 0x7d, 0xde, 0x6b, 0xaf, -0xda, 0x16, 0xf9, 0x55, 0x51, 0xee, 0xa6, 0x0c, 0x2b, 0x02, 0xa3, 0xfd, 0x8d, 0xfb, 0x30, -0x17, 0xe4, 0x6f, 0xdf, 0x36, 0x71, 0xc4, 0xca, 0x87, 0x25, 0x48, 0xb0, 0x47, 0xec, 0xea, -0xb4, 0xbf, 0xa5, 0x4d, 0x9b, 0x9f, 0x02, 0x93, 0xc4, 0xe3, 0xe4, 0xe8, 0x42, 0x2d, 0x68, -0x81, 0x15, 0x0a, 0xeb, 0x84, 0x5b, 0xd6, 0xa8, 0x74, 0xfb, 0x7d, 0x1d, 0xcb, 0x2c, 0xda, -0x46, 0x2a, 0x76, 0x62, 0xce, 0xbc, 0x5c, 0x9e, 0x8b, 0xe7, 0xcf, 0xbe, 0x78, 0xf5, 0x7c, -0xeb, 0xb3, 0x3a, 0x9c, 0xaa, 0x6f, 0xcc, 0x72, 0xd1, 0x59, 0xf2, 0x11, 0x23, 0xd6, 0x3f, -0x48, 0xd1, 0xb7, 0xce, 0xb0, 0xbf, 0xcb, 0xea, 0x80, 0xde, 0x57, 0xd4, 0x5e, 0x97, 0x2f, -0x75, 0xd1, 0x50, 0x8e, 0x80, 0x2c, 0x66, 0x79, 0xbf, 0x72, 0x4b, 0xbd, 0x8a, 0x81, 0x6c, -0xd3, 0xe1, 0x01, 0xdc, 0xd2, 0x15, 0x26, 0xc5, 0x36, 0xda, 0x2c, 0x1a, 0xc0, 0x27, 0x94, -0xed, 0xb7, 0x9b, 0x85, 0x0b, 0x5e, 0x80, 0x97, 0xc5, 0xec, 0x4f, 0xec, 0x88, 0x5d, 0x50, -0x07, 0x35, 0x47, 0xdc, 0x0b, 0x3b, 0x3d, 0xdd, 0x60, 0xaf, 0xa8, 0x5d, 0x81, 0x38, 0x24, -0x25, 0x5d, 0x5c, 0x15, 0xd1, 0xde, 0xb3, 0xab, 0xec, 0x05, 0x69, 0xef, 0x83, 0xed, 0x57, -0x54, 0xb8, 0x64, 0x64, 0x11, 0x16, 0x32, 0x69, 0xda, 0x9f, 0x2d, 0x7f, 0x36, 0xbb, 0x44, -0x5a, 0x34, 0xe8, 0x7f, 0xbf, 0x03, 0xeb, 0x00, 0x7f, 0x59, 0x68, 0x22, 0x79, 0xcf, 0x73, -0x6c, 0x2c, 0x29, 0xa7, 0xa1, 0x5f, 0x38, 0xa1, 0x1d, 0xf0, 0x20, 0x53, 0xe0, 0x1a, 0x63, -0x14, 0x58, 0x71, 0x10, 0xaa, 0x08, 0x0c, 0x3e, 0x16, 0x1a, 0x60, 0x22, 0x82, 0x7f, 0xba, -0xa4, 0x43, 0xa0, 0xd0, 0xac, 0x1b, 0xd5, 0x6b, 0x64, 0xb5, 0x14, 0x93, 0x31, 0x9e, 0x53, -0x50, 0xd0, 0x57, 0x66, 0xee, 0x5a, 0x4f, 0xfb, 0x03, 0x2a, 0x69, 0x58, 0x76, 0xf1, 0x83, -0xf7, 0x4e, 0xba, 0x8c, 0x42, 0x06, 0x60, 0x5d, 0x6d, 0xce, 0x60, 0x88, 0xae, 0xa4, 0xc3, -0xf1, 0x03, 0xa5, 0x4b, 0x98, 0xa1, 0xff, 0x67, 0xe1, 0xac, 0xa2, 0xb8, 0x62, 0xd7, 0x6f, -0xa0, 0x31, 0xb4, 0xd2, 0x77, 0xaf, 0x21, 0x10, 0x06, 0xc6, 0x9a, 0xff, 0x1d, 0x09, 0x17, -0x0e, 0x5f, 0xf1, 0xaa, 0x54, 0x34, 0x4b, 0x45, 0x8a, 0x87, 0x63, 0xa6, 0xdc, 0xf9, 0x24, -0x30, 0x67, 0xc6, 0xb2, 0xd6, 0x61, 0x33, 0x69, 0xee, 0x50, 0x61, 0x57, 0x28, 0xe7, 0x7e, -0xee, 0xec, 0x3a, 0x5a, 0x73, 0x4e, 0xa8, 0x8d, 0xe4, 0x18, 0xea, 0xec, 0x41, 0x64, 0xc8, -0xe2, 0xe8, 0x66, 0xb6, 0x2d, 0xb6, 0xfb, 0x6a, 0x6c, 0x16, 0xb3, 0xdd, 0x46, 0x43, 0xb9, -0x73, 0x00, 0x6a, 0x71, 0xed, 0x4e, 0x9d, 0x25, 0x1a, 0xc3, 0x3c, 0x4a, 0x95, 0x15, 0x99, -0x35, 0x81, 0x14, 0x02, 0xd6, 0x98, 0x9b, 0xec, 0xd8, 0x23, 0x3b, 0x84, 0x29, 0xaf, 0x0c, -0x99, 0x83, 0xa6, 0x9a, 0x34, 0x4f, 0xfa, 0xe8, 0xd0, 0x3c, 0x4b, 0xd0, 0xfb, 0xb6, 0x68, -0xb8, 0x9e, 0x8f, 0xcd, 0xf7, 0x60, 0x2d, 0x7a, 0x22, 0xe5, 0x7d, 0xab, 0x65, 0x1b, 0x95, -0xa7, 0xa8, 0x7f, 0xb6, 0x77, 0x47, 0x7b, 0x5f, 0x8b, 0x12, 0x72, 0xd0, 0xd4, 0x91, 0xef, -0xde, 0x19, 0x50, 0x3c, 0xa7, 0x8b, 0xc4, 0xa9, 0xb3, 0x23, 0xcb, 0x76, 0xe6, 0x81, 0xf0, -0xc1, 0x04, 0x8f, 0xa3, 0xb8, 0x54, 0x5b, 0x97, 0xac, 0x19, 0xff, 0x3f, 0x55, 0x27, 0x2f, -0xe0, 0x1d, 0x42, 0x9b, 0x57, 0xfc, 0x4b, 0x4e, 0x0f, 0xce, 0x98, 0xa9, 0x43, 0x57, 0x03, -0xbd, 0xe7, 0xc8, 0x94, 0xdf, 0x6e, 0x36, 0x73, 0x32, 0xb4, 0xef, 0x2e, 0x85, 0x7a, 0x6e, -0xfc, 0x6c, 0x18, 0x82, 0x75, 0x35, 0x90, 0x07, 0xf3, 0xe4, 0x9f, 0x3e, 0xdc, 0x68, 0xf3, -0xb5, 0xf3, 0x19, 0x80, 0x92, 0x06, 0x99, 0xa2, 0xe8, 0x6f, 0xff, 0x2e, 0x7f, 0xae, 0x42, -0xa4, 0x5f, 0xfb, 0xd4, 0x0e, 0x81, 0x2b, 0xc3, 0x04, 0xff, 0x2b, 0xb3, 0x74, 0x4e, 0x36, -0x5b, 0x9c, 0x15, 0x00, 0xc6, 0x47, 0x2b, 0xe8, 0x8b, 0x3d, 0xf1, 0x9c, 0x03, 0x9a, 0x58, -0x7f, 0x9b, 0x9c, 0xbf, 0x85, 0x49, 0x79, 0x35, 0x2e, 0x56, 0x7b, 0x41, 0x14, 0x39, 0x47, -0x83, 0x26, 0xaa, 0x07, 0x89, 0x98, 0x11, 0x1b, 0x86, 0xe7, 0x73, 0x7a, 0xd8, 0x7d, 0x78, -0x61, 0x53, 0xe9, 0x79, 0xf5, 0x36, 0x8d, 0x44, 0x92, 0x84, 0xf9, 0x13, 0x50, 0x58, 0x3b, -0xa4, 0x6a, 0x36, 0x65, 0x49, 0x8e, 0x3c, 0x0e, 0xf1, 0x6f, 0xd2, 0x84, 0xc4, 0x7e, 0x8e, -0x3f, 0x39, 0xae, 0x7c, 0x84, 0xf1, 0x63, 0x37, 0x8e, 0x3c, 0xcc, 0x3e, 0x44, 0x81, 0x45, -0xf1, 0x4b, 0xb9, 0xed, 0x6b, 0x36, 0x5d, 0xbb, 0x20, 0x60, 0x1a, 0x0f, 0xa3, 0xaa, 0x55, -0x77, 0x3a, 0xa9, 0xae, 0x37, 0x4d, 0xba, 0xb8, 0x86, 0x6b, 0xbc, 0x08, 0x50, 0xf6, 0xcc, -0xa4, 0xbd, 0x1d, 0x40, 0x72, 0xa5, 0x86, 0xfa, 0xe2, 0x10, 0xae, 0x3d, 0x58, 0x4b, 0x97, -0xf3, 0x43, 0x74, 0xa9, 0x9e, 0xeb, 0x21, 0xb7, 0x01, 0xa4, 0x86, 0x93, 0x97, 0xee, 0x2f, -0x4f, 0x3b, 0x86, 0xa1, 0x41, 0x6f, 0x41, 0x26, 0x90, 0x78, 0x5c, 0x7f, 0x30, 0x38, 0x4b, -0x3f, 0xaa, 0xec, 0xed, 0x5c, 0x6f, 0x0e, 0xad, 0x43, 0x87, 0xfd, 0x93, 0x35, 0xe6, 0x01, -0xef, 0x41, 0x26, 0x90, 0x99, 0x9e, 0xfb, 0x19, 0x5b, 0xad, 0xd2, 0x91, 0x8a, 0xe0, 0x46, -0xaf, 0x65, 0xfa, 0x4f, 0x84, 0xc1, 0xa1, 0x2d, 0xcf, 0x45, 0x8b, 0xd3, 0x85, 0x50, 0x55, -0x7c, 0xf9, 0x67, 0x88, 0xd4, 0x4e, 0xe9, 0xd7, 0x6b, 0x61, 0x54, 0xa1, 0xa4, 0xa6, 0xa2, -0xc2, 0xbf, 0x30, 0x9c, 0x40, 0x9f, 0x5f, 0xd7, 0x69, 0x2b, 0x24, 0x82, 0x5e, 0xd9, 0xd6, -0xa7, 0x12, 0x54, 0x1a, 0xf7, 0x55, 0x9f, 0x76, 0x50, 0xa9, 0x95, 0x84, 0xe6, 0x6b, 0x6d, -0xb5, 0x96, 0x54, 0xd6, 0xcd, 0xb3, 0xa1, 0x9b, 0x46, 0xa7, 0x94, 0x4d, 0xc4, 0x94, 0xb4, -0x98, 0xe3, 0xe1, 0xe2, 0x34, 0xd5, 0x33, 0x16, 0x07, 0x54, 0xcd, 0xb7, 0x77, 0x53, 0xdb, -0x4f, 0x4d, 0x46, 0x9d, 0xe9, 0xd4, 0x9c, 0x8a, 0x36, 0xb6, 0xb8, 0x38, 0x26, 0x6c, 0x0e, -0xff, 0x9c, 0x1b, 0x43, 0x8b, 0x80, 0xcc, 0xb9, 0x3d, 0xda, 0xc7, 0xf1, 0x8a, 0xf2, 0x6d, -0xb8, 0xd7, 0x74, 0x2f, 0x7e, 0x1e, 0xb7, 0xd3, 0x4a, 0xb4, 0xac, 0xfc, 0x79, 0x48, 0x6c, -0xbc, 0x96, 0xb6, 0x94, 0x46, 0x57, 0x2d, 0xb0, 0xa3, 0xfc, 0x1e, 0xb9, 0x52, 0x60, 0x85, -0x2d, 0x41, 0xd0, 0x43, 0x01, 0x1e, 0x1c, 0xd5, 0x7d, 0xfc, 0xf3, 0x96, 0x0d, 0xc7, 0xcb, -0x2a, 0x29, 0x9a, 0x93, 0xdd, 0x88, 0x2d, 0x37, 0x5d, 0xaa, 0xfb, 0x49, 0x68, 0xa0, 0x9c, -0x50, 0x86, 0x7f, 0x68, 0x56, 0x57, 0xf9, 0x79, 0x18, 0x39, 0xd4, 0xe0, 0x01, 0x84, 0x33, -0x61, 0xca, 0xa5, 0xd2, 0xd6, 0xe4, 0xc9, 0x8a, 0x4a, 0x23, 0x44, 0x4e, 0xbc, 0xf0, 0xdc, -0x24, 0xa1, 0xa0, 0xc4, 0xe2, 0x07, 0x3c, 0x10, 0xc4, 0xb5, 0x25, 0x4b, 0x65, 0x63, 0xf4, -0x80, 0xe7, 0xcf, 0x61, 0xb1, 0x71, 0x82, 0x21, 0x87, 0x2c, 0xf5, 0x91, 0x00, 0x32, 0x0c, -0xec, 0xa9, 0xb5, 0x9a, 0x74, 0x85, 0xe3, 0x36, 0x8f, 0x76, 0x4f, 0x9c, 0x6d, 0xce, 0xbc, -0xad, 0x0a, 0x4b, 0xed, 0x76, 0x04, 0xcb, 0xc3, 0xb9, 0x33, 0x9e, 0x01, 0x93, 0x96, 0x69, -0x7d, 0xc5, 0xa2, 0x45, 0x79, 0x9b, 0x04, 0x5c, 0x84, 0x09, 0xed, 0x88, 0x43, 0xc7, 0xab, -0x93, 0x14, 0x26, 0xa1, 0x40, 0xb5, 0xce, 0x4e, 0xbf, 0x2a, 0x42, 0x85, 0x3e, 0x2c, 0x3b, -0x54, 0xe8, 0x12, 0x1f, 0x0e, 0x97, 0x59, 0xb2, 0x27, 0x89, 0xfa, 0xf2, 0xdf, 0x8e, 0x68, -0x59, 0xdc, 0x06, 0xbc, 0xb6, 0x85, 0x0d, 0x06, 0x22, 0xec, 0xb1, 0xcb, 0xe5, 0x04, 0xe6, -0x3d, 0xb3, 0xb0, 0x41, 0x73, 0x08, 0x3f, 0x3c, 0x58, 0x86, 0x63, 0xeb, 0x50, 0xee, 0x1d, -0x2c, 0x37, 0x74, 0xa9, 0xd3, 0x18, 0xa3, 0x47, 0x6e, 0x93, 0x54, 0xad, 0x0a, 0x5d, 0xb8, -0x2a, 0x55, 0x5d, 0x78, 0xf6, 0xee, 0xbe, 0x8e, 0x3c, 0x76, 0x69, 0xb9, 0x40, 0xc2, 0x34, -0xec, 0x2a, 0xb9, 0xed, 0x7e, 0x20, 0xe4, 0x8d, 0x00, 0x38, 0xc7, 0xe6, 0x8f, 0x44, 0xa8, -0x86, 0xce, 0xeb, 0x2a, 0xe9, 0x90, 0xf1, 0x4c, 0xdf, 0x32, 0xfb, 0x73, 0x1b, 0x6d, 0x92, -0x1e, 0x95, 0xfe, 0xb4, 0xdb, 0x65, 0xdf, 0x4d, 0x23, 0x54, 0x89, 0x48, 0xbf, 0x4a, 0x2e, -0x70, 0xd6, 0xd7, 0x62, 0xb4, 0x33, 0x29, 0xb1, 0x3a, 0x33, 0x4c, 0x23, 0x6d, 0xa6, 0x76, -0xa5, 0x21, 0x63, 0x48, 0xe6, 0x90, 0x5d, 0xed, 0x90, 0x95, 0x0b, 0x7a, 0x84, 0xbe, 0xb8, -0x0d, 0x5e, 0x63, 0x0c, 0x62, 0x26, 0x4c, 0x14, 0x5a, 0xb3, 0xac, 0x23, 0xa4, 0x74, 0xa7, -0x6f, 0x33, 0x30, 0x05, 0x60, 0x01, 0x42, 0xa0, 0x28, 0xb7, 0xee, 0x19, 0x38, 0xf1, 0x64, -0x80, 0x82, 0x43, 0xe1, 0x41, 0x27, 0x1f, 0x1f, 0x90, 0x54, 0x7a, 0xd5, 0x23, 0x2e, 0xd1, -0x3d, 0xcb, 0x28, 0xba, 0x58, 0x7f, 0xdc, 0x7c, 0x91, 0x24, 0xe9, 0x28, 0x51, 0x83, 0x6e, -0xc5, 0x56, 0x21, 0x42, 0xed, 0xa0, 0x56, 0x22, 0xa1, 0x40, 0x80, 0x6b, 0xa8, 0xf7, 0x94, -0xca, 0x13, 0x6b, 0x0c, 0x39, 0xd9, 0xfd, 0xe9, 0xf3, 0x6f, 0xa6, 0x9e, 0xfc, 0x70, 0x8a, -0xb3, 0xbc, 0x59, 0x3c, 0x1e, 0x1d, 0x6c, 0xf9, 0x7c, 0xaf, 0xf9, 0x88, 0x71, 0x95, 0xeb, -0x57, 0x00, 0xbd, 0x9f, 0x8c, 0x4f, 0xe1, 0x24, 0x83, 0xc5, 0x22, 0xea, 0xfd, 0xd3, 0x0c, -0xe2, 0x17, 0x18, 0x7c, 0x6a, 0x4c, 0xde, 0x77, 0xb4, 0x53, 0x9b, 0x4c, 0x81, 0xcd, 0x23, -0x60, 0xaa, 0x0e, 0x25, 0x73, 0x9c, 0x02, 0x79, 0x32, 0x30, 0xdf, 0x74, 0xdf, 0x75, 0x19, -0xf4, 0xa5, 0x14, 0x5c, 0xf7, 0x7a, 0xa8, 0xa5, 0x91, 0x84, 0x7c, 0x60, 0x03, 0x06, 0x3b, -0xcd, 0x50, 0xb6, 0x27, 0x9c, 0xfe, 0xb1, 0xdd, 0xcc, 0xd3, 0xb0, 0x59, 0x24, 0xb2, 0xca, -0xe2, 0x1c, 0x81, 0x22, 0x9d, 0x07, 0x8f, 0x8e, 0xb9, 0xbe, 0x4e, 0xfa, 0xfc, 0x39, 0x65, -0xba, 0xbf, 0x9d, 0x12, 0x37, 0x5e, 0x97, 0x7e, 0xf3, 0x89, 0xf5, 0x5d, 0xf5, 0xe3, 0x09, -0x8c, 0x62, 0xb5, 0x20, 0x9d, 0x0c, 0x53, 0x8a, 0x68, 0x1b, 0xd2, 0x8f, 0x75, 0x17, 0x5d, -0xd4, 0xe5, 0xda, 0x75, 0x62, 0x19, 0x14, 0x6a, 0x26, 0x2d, 0xeb, 0xf8, 0xaf, 0x37, 0xf0, -0x6c, 0xa4, 0x55, 0xb1, 0xbc, 0xe2, 0x33, 0xc0, 0x9a, 0xca, 0xb0, 0x11, 0x49, 0x4f, 0x68, -0x9b, 0x3b, 0x6b, 0x3c, 0xcc, 0x13, 0xf6, 0xc7, 0x85, 0x61, 0x68, 0x42, 0xae, 0xbb, 0xdd, -0xcd, 0x45, 0x16, 0x29, 0x1d, 0xea, 0xdb, 0xc8, 0x03, 0x94, 0x3c, 0xee, 0x4f, 0x82, 0x11, -0xc3, 0xec, 0x28, 0xbd, 0x97, 0x05, 0x99, 0xde, 0xd7, 0xbb, 0x5e, 0x22, 0x1f, 0xd4, 0xeb, -0x64, 0xd9, 0x92, 0xd9, 0x85, 0xb7, 0x6a, 0x05, 0x6a, 0xe4, 0x24, 0x41, 0xf1, 0xcd, 0xf0, -0xd8, 0x3f, 0xf8, 0x9e, 0x0e, 0xcd, 0x0b, 0x7a, 0x70, 0x6b, 0x5a, 0x75, 0x0a, 0x6a, 0x33, -0x88, 0xec, 0x17, 0x75, 0x08, 0x70, 0x10, 0x2f, 0x24, 0xcf, 0xc4, 0xe9, 0x42, 0x00, 0x61, -0x94, 0xca, 0x1f, 0x3a, 0x76, 0x06, 0xfa, 0xd2, 0x48, 0x81, 0xf0, 0x77, 0x60, 0x03, 0x45, -0xd9, 0x61, 0xf4, 0xa4, 0x6f, 0x3d, 0xd9, 0x30, 0xc3, 0x04, 0x6b, 0x54, 0x2a, 0xb7, 0xec, -0x3b, 0xf4, 0x4b, 0xf5, 0x68, 0x52, 0x26, 0xce, 0xff, 0x5d, 0x19, 0x91, 0xa0, 0xa3, 0xa5, -0xa9, 0xb1, 0xe0, 0x23, 0xc4, 0x0a, 0x77, 0x4d, 0xf9, 0x51, 0x20, 0xa3, 0xa5, 0xa9, 0xb1, -0xc1, 0x00, 0x82, 0x86, 0x8e, 0x7f, 0x5d, 0x19, 0x91, 0xa0, 0xa3, 0xc4, 0xeb, 0x54, 0x0b, -0x75, 0x68, 0x52, 0x07, 0x8c, 0x9a, 0x97, 0x8d, 0x79, 0x70, 0x62, 0x46, 0xef, 0x5c, 0x1b, -0x95, 0x89, 0x71, 0x41, 0xe1, 0x21, 0xa1, 0xa1, 0xa1, 0xc0, 0x02, 0x67, 0x4c, 0x1a, 0xb6, -0xcf, 0xfd, 0x78, 0x53, 0x24, 0xab, 0xb5, 0xc9, 0xf1, 0x60, 0x23, 0xa5, 0xc8, 0x12, 0x87, -0x6d, 0x58, 0x13, 0x85, 0x88, 0x92, 0x87, 0x6d, 0x58, 0x32, 0xc7, 0x0c, 0x9a, 0x97, 0xac, -0xda, 0x36, 0xee, 0x5e, 0x3e, 0xdf, 0x1d, 0xb8, 0xf2, 0x66, 0x2f, 0xbd, 0xf8, 0x72, 0x47, -0xed, 0x58, 0x13, 0x85, 0x88, 0x92, 0x87, 0x8c, 0x7b, 0x55, 0x09, 0x90, 0xa2, 0xc6, 0xef, -0x3d, 0xf8, 0x53, 0x24, 0xab, 0xd4, 0x2a, 0xb7, 0xec, 0x5a, 0x36, 0xee, 0x5e, 0x3e, 0xdf, -0x3c, 0xfa, 0x76, 0x4f, 0xfd, 0x59, 0x30, 0xe2, 0x46, 0xef, 0x3d, 0xf8, 0x53, 0x05, 0x69, -0x31, 0xc1, 0x00, 0x82, 0x86, 0x8e, 0x7f, 0x5d, 0x19, 0xb0, 0xe2, 0x27, 0xcc, 0xfb, 0x74, -0x4b, 0x14, 0x8b, 0x94, 0x8b, 0x75, 0x68, 0x33, 0xc5, 0x08, 0x92, 0x87, 0x8c, 0x9a, 0xb6, -0xcf, 0x1c, 0xba, 0xd7, 0x0d, 0x98, 0xb2, 0xe6, 0x2f, 0xdc, 0x1b, 0x95, 0x89, 0x71, 0x60, -0x23, 0xc4, 0x0a, 0x96, 0x8f, 0x9c, 0xba, 0xf6, 0x6e, 0x3f, 0xfc, 0x5b, 0x15, 0xa8, 0xd2, -0x26, 0xaf, 0xbd, 0xf8, 0x72, 0x66, 0x2f, 0xdc, 0x1b, 0xb4, 0xcb, 0x14, 0x8b, 0x94, 0xaa, -0xb7, 0xcd, 0xf9, 0x51, 0x01, 0x80, 0x82, 0x86, 0x6f, 0x3d, 0xd9, 0x30, 0xe2, 0x27, 0xcc, -0xfb, 0x74, 0x4b, 0x14, 0xaa, 0xb7, 0xcd, 0xf9, 0x70, 0x43, 0x04, 0x6b, 0x35, 0xc9, 0xf1, -0x60, 0x23, 0xa5, 0xc8, 0xf3, 0x45, 0x08, 0x92, 0x87, 0x6d, 0x58, 0x32, 0xe6, 0x2f, 0xbd, -0xf8, 0x72, 0x66, 0x4e, 0x1e, 0xbe, 0xfe, 0x7e, 0x7e, 0x7e, 0x5f, 0x1d, 0x99, 0x91, 0xa0, -0xa3, 0xc4, 0x0a, 0x77, 0x4d, 0x18, 0x93, 0xa4, 0xab, 0xd4, 0x0b, 0x75, 0x49, 0x10, 0xa2, -0xc6, 0xef, 0x3d, 0xf8, 0x53, 0x24, 0xab, 0xb5, 0xe8, 0x33, 0xe4, 0x4a, 0x16, 0xae, 0xde, -0x1f, 0xbc, 0xdb, 0x15, 0xa8, 0xb3, 0xc5, 0x08, 0x73, 0x45, 0xe9, 0x31, 0xc1, 0xe1, 0x21, -0xa1, 0xa1, 0xa1, 0xc0, 0x02, 0x86, 0x6f, 0x5c, 0x3a, 0xd7, 0x0d, 0x98, 0x93, 0xa4, 0xca, -0x16, 0xae, 0xde, 0x1f, 0x9d, 0x99, 0xb0, 0xe2, 0x46, 0xef, 0x3d, 0xf8, 0x72, 0x47, 0x0c, -0x9a, 0xb6, 0xcf, 0xfd, 0x59, 0x11, 0xa0, 0xa3, 0xa5, 0xc8, 0xf3, 0x45, 0x08, 0x92, 0x87, -0x6d, 0x39, 0xf0, 0x43, 0x04, 0x8a, 0x96, 0xae, 0xde, 0x3e, 0xdf, 0x1d, 0x99, 0x91, 0xa0, -0xc2, 0x06, 0x6f, 0x3d, 0xf8, 0x72, 0x47, 0x0c, 0x9a, 0x97, 0x8d, 0x98, 0x93, 0x85, 0x88, -0x73, 0x45, 0xe9, 0x31, 0xe0, 0x23, 0xa5, 0xa9, 0xd0, 0x03, 0x84, 0x8a, 0x96, 0xae, 0xde, -0x1f, 0xbc, 0xdb, 0x15, 0xa8, 0xd2, 0x26, 0xce, 0xff, 0x5d, 0x19, 0x91, 0x81, 0x80, 0x82, -0x67, 0x2d, 0xd8, 0x13, 0xa4, 0xab, 0xd4, 0x0b, 0x94, 0xaa, 0xb7, 0xcd, 0xf9, 0x51, 0x20, -0xa3, 0xa5, 0xc8, 0xf3, 0x45, 0xe9, 0x50, 0x22, 0xc6, 0xef, 0x5c, 0x3a, 0xd7, 0x0d, 0x98, -0x93, 0x85, 0x88, 0x73, 0x64, 0x4a, 0xf7, 0x4d, 0xf9, 0x51, 0x20, 0xa3, 0xc4, 0x0a, 0x96, -0xae, 0xde, 0x3e, 0xfe, 0x7e, 0x7e, 0x7e, 0x5f, 0x3c, 0xfa, 0x76, 0x4f, 0xfd, 0x78, 0x72, -0x66, 0x2f, 0xbd, 0xd9, 0x30, 0xc3, 0xe5, 0x48, 0x12, 0x87, 0x8c, 0x7b, 0x55, 0x28, 0xd2, -0x07, 0x8c, 0x9a, 0x97, 0xac, 0xda, 0x17, 0x8d, 0x79, 0x51, 0x20, 0xa3, 0xc4, 0xeb, 0x54, -0x0b, 0x94, 0x8b, 0x94, 0xaa, 0xd6, 0x2e, 0xbf, 0xfc, 0x5b, 0x15, 0xa8, 0xd2, 0x26, 0xaf, -0xdc, 0x1b, 0xb4, 0xea, 0x37, 0xec, 0x3b, 0xf4, 0x6a, 0x37, 0xcd, 0x18, 0x93, 0x85, 0x69, -0x31, 0xc1, 0xe1, 0x40, 0xe3, 0x25, 0xc8, 0x12, 0x87, 0x8c, 0x9a, 0xb6, 0xcf, 0xfd, 0x59, -0x11, 0xa0, 0xc2, 0x06, 0x8e, 0x7f, 0x5d, 0x38, 0xf2, 0x47, 0x0c, 0x7b, 0x74, 0x6a, 0x37, -0xec, 0x5a, 0x36, 0xee, 0x3f, 0xfc, 0x7a, 0x76, 0x4f, 0x1c, 0x9b, 0x95, 0x89, 0x71, 0x41, -0x00, 0x63, 0x44, 0xeb, 0x54, 0x2a, 0xd6, 0x0f, 0x9c, 0xba, 0xd7, 0x0d, 0x98, 0x93, 0x85, -0x69, 0x31, 0xc1, 0x00, 0x82, 0x86, 0x8e, 0x9e, 0xbe, 0xdf, 0x3c, 0xfa, 0x57, 0x2c, 0xda, -0x36, 0xee, 0x3f, 0xfc, 0x5b, 0x15, 0x89, 0x71, 0x41, 0x00, 0x82, 0x86, 0x8e, 0x7f, 0x5d, -0x38, 0xf2, 0x47, 0xed, 0x58, 0x13, 0xa4, 0xca, 0xf7, 0x4d, 0xf9, 0x51, 0x01, 0x80, 0x63, -0x44, 0xeb, 0x54, 0x2a, 0xd6, 0x2e, 0xbf, 0xdd, 0x19, 0x91, 0xa0, 0xa3, 0xa5, 0xa9, 0xb1, -0xe0, 0x42, 0x06, 0x8e, 0x7f, 0x5d, 0x19, 0x91, 0xa0, 0xa3, 0xc4, 0x0a, 0x96, 0x8f, 0x7d, -0x78, 0x72, 0x47, 0x0c, 0x7b, 0x74, 0x6a, 0x56, 0x2e, 0xde, 0x1f, 0xbc, 0xfa, 0x57, 0x0d, -0x79, 0x51, 0x01, 0x61, 0x21, 0xa1, 0xc0, 0xe3, 0x25, 0xa9, 0xb1, 0xc1, 0xe1, 0x40, 0x02, -0x67, 0x4c, 0x1a, 0x97, 0x8d, 0x98, 0x93, 0xa4, 0xab, 0xd4, 0x2a, 0xd6, 0x0f, 0x9c, 0x9b, -0xb4, 0xcb, 0x14, 0xaa, 0xb7, 0xcd, 0xf9, 0x51, 0x20, 0xa3, 0xc4, 0xeb, 0x35, 0xc9, 0xf1, -0x60, 0x42, 0x06, 0x8e, 0x7f, 0x7c, 0x7a, 0x76, 0x6e, 0x3f, 0xfc, 0x7a, 0x76, 0x6e, 0x5e, -0x3e, 0xfe, 0x7e, 0x5f, 0x3c, 0xdb, 0x15, 0x89, 0x71, 0x41, 0xe1, 0x21, 0xc0, 0xe3, 0x44, -0xeb, 0x54, 0x2a, 0xb7, 0xcd, 0xf9, 0x70, 0x62, 0x27, 0xad, 0xd8, 0x32, 0xc7, 0x0c, 0x7b, -0x74, 0x4b, 0x14, 0xaa, 0xb7, 0xec, 0x3b, 0xd5, 0x28, 0xd2, 0x07, 0x6d, 0x39, 0xd1, 0x20, -0xc2, 0xe7, 0x4c, 0x1a, 0x97, 0x8d, 0x98, 0xb2, 0xc7, 0x0c, 0x59, 0x28, 0xf3, 0x9b }; - -// clang-format off diff --git a/keyboards/ploopyco/trackball/config.h b/keyboards/ploopyco/trackball/config.h index 43f3f5b3cca9..ccbb89d5f9c1 100644 --- a/keyboards/ploopyco/trackball/config.h +++ b/keyboards/ploopyco/trackball/config.h @@ -57,3 +57,6 @@ // If board has a debug LED, you can enable it by defining this // #define DEBUG_LED_PIN F7 + +/* PMW3360 Settings */ +#define PMW3360_CS_PIN B0 diff --git a/keyboards/ploopyco/trackball/info.json b/keyboards/ploopyco/trackball/info.json index c5e4527d8d16..d144261c964e 100644 --- a/keyboards/ploopyco/trackball/info.json +++ b/keyboards/ploopyco/trackball/info.json @@ -3,8 +3,6 @@ "url": "www.ploopy.co", "maintainer": "drashna", "manufacturer": "Ploopy Corporation", - "width": 8, - "height": 3, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/ploopyco/trackball/rules.mk b/keyboards/ploopyco/trackball/rules.mk index e1eb998fe077..6ae478b24a21 100644 --- a/keyboards/ploopyco/trackball/rules.mk +++ b/keyboards/ploopyco/trackball/rules.mk @@ -7,23 +7,23 @@ F_CPU = 8000000 # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite 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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output POINTING_DEVICE_ENABLE = yes +POINTING_DEVICE_DRIVER = pmw3360 MOUSEKEY_ENABLE = yes # Mouse keys -QUANTUM_LIB_SRC += analog.c spi_master.c -SRC += pmw3360.c opt_encoder.c +ENCODER_ENABLE := no +OPTS_DEF += -DENCODER_ENABLE + +QUANTUM_LIB_SRC += analog.c +SRC += opt_encoder.c DEFAULT_FOLDER = ploopyco/trackball/rev1_005 diff --git a/keyboards/ploopyco/trackball/trackball.c b/keyboards/ploopyco/trackball/trackball.c index 71902099796d..25b36574a5d8 100644 --- a/keyboards/ploopyco/trackball/trackball.c +++ b/keyboards/ploopyco/trackball/trackball.c @@ -31,7 +31,8 @@ # define OPT_SCALE 1 // Multiplier for wheel #endif #ifndef PLOOPY_DPI_OPTIONS -# define PLOOPY_DPI_OPTIONS { 1200, 1600, 2400 } +# define PLOOPY_DPI_OPTIONS \ + { 1200, 1600, 2400 } # ifndef PLOOPY_DPI_DEFAULT # define PLOOPY_DPI_DEFAULT 1 # endif @@ -40,10 +41,10 @@ # define PLOOPY_DPI_DEFAULT 0 #endif #ifndef PLOOPY_DRAGSCROLL_DPI -# define PLOOPY_DRAGSCROLL_DPI 100 // Fixed-DPI Drag Scroll +# define PLOOPY_DRAGSCROLL_DPI 100 // Fixed-DPI Drag Scroll #endif #ifndef PLOOPY_DRAGSCROLL_MULTIPLIER -# define PLOOPY_DRAGSCROLL_MULTIPLIER 0.75 // Variable-DPI Drag Scroll +# define PLOOPY_DRAGSCROLL_MULTIPLIER 0.75 // Variable-DPI Drag Scroll #endif keyboard_config_t keyboard_config; @@ -65,12 +66,24 @@ uint8_t OptLowPin = OPT_ENC1; bool debug_encoder = false; bool is_drag_scroll = false; -__attribute__((weak)) void process_wheel_user(report_mouse_t* mouse_report, int16_t h, int16_t v) { - mouse_report->h = h; - mouse_report->v = v; +__attribute__((weak)) bool encoder_update_user(uint8_t index, bool clockwise) { return true; } + +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { + return false; + } +#ifdef MOUSEKEY_ENABLE + tap_code(clockwise ? KC_WH_U : KC_WH_D); +#else + mouse_report_t mouse_report = pointing_device_get_report(); + mouse_report.v = clockwise ? 1 : -1; + pointing_device_set_report(mouse_report); + pointing_device_send(); +#endif + return true; } -__attribute__((weak)) void process_wheel(report_mouse_t* mouse_report) { +void process_wheel(void) { // TODO: Replace this with interrupt driven code, polling is S L O W // Lovingly ripped from the Ploopy Source @@ -99,56 +112,25 @@ __attribute__((weak)) void process_wheel(report_mouse_t* mouse_report) { int dir = opt_encoder_handler(p1, p2); if (dir == 0) return; - process_wheel_user(mouse_report, mouse_report->h, (int)(mouse_report->v + (dir * OPT_SCALE))); -} - -__attribute__((weak)) void process_mouse_user(report_mouse_t* mouse_report, int16_t x, int16_t y) { - mouse_report->x = x; - mouse_report->y = y; + encoder_update_kb(0, dir == 1); } -__attribute__((weak)) void process_mouse(report_mouse_t* mouse_report) { - report_pmw_t data = pmw_read_burst(); - if (data.isOnSurface && data.isMotion) { - // Reset timer if stopped moving - if (!data.isMotion) { - if (MotionStart != 0) MotionStart = 0; - return; - } +report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report) { + process_wheel(); - // Set timer if new motion - if ((MotionStart == 0) && data.isMotion) { - if (debug_mouse) dprintf("Starting motion.\n"); - MotionStart = timer_read(); - } - - if (debug_mouse) { - dprintf("Delt] d: %d t: %u\n", abs(data.dx) + abs(data.dy), MotionStart); - } - if (debug_mouse) { - dprintf("Pre ] X: %d, Y: %d\n", data.dx, data.dy); - } -#if defined(PROFILE_LINEAR) - float scale = float(timer_elaspsed(MotionStart)) / 1000.0; - data.dx *= scale; - data.dy *= scale; -#elif defined(PROFILE_INVERSE) - // TODO + if (is_drag_scroll) { + mouse_report.h = mouse_report.x; +#ifdef PLOOPY_DRAGSCROLL_INVERT + // Invert vertical scroll direction + mouse_report.v = -mouse_report.y; #else - // no post processing + mouse_report.v = mouse_report.y; #endif - // apply multiplier - // data.dx *= mouse_multiplier; - // data.dy *= mouse_multiplier; - - // Wrap to HID size - data.dx = constrain(data.dx, -127, 127); - data.dy = constrain(data.dy, -127, 127); - if (debug_mouse) dprintf("Cons] X: %d, Y: %d\n", data.dx, data.dy); - // dprintf("Elapsed:%u, X: %f Y: %\n", i, pgm_read_byte(firmware_data+i)); - - process_mouse_user(mouse_report, data.dx, -data.dy); + mouse_report.x = 0; + mouse_report.y = 0; } + + return pointing_device_task_user(mouse_report); } bool process_record_kb(uint16_t keycode, keyrecord_t* record) { @@ -169,7 +151,7 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record) { if (keycode == DPI_CONFIG && record->event.pressed) { keyboard_config.dpi_config = (keyboard_config.dpi_config + 1) % DPI_OPTION_SIZE; eeconfig_update_kb(keyboard_config.raw); - pmw_set_cpi(dpi_array[keyboard_config.dpi_config]); + pointing_device_set_cpi(dpi_array[keyboard_config.dpi_config]); } if (keycode == DRAG_SCROLL) { @@ -180,9 +162,9 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record) { is_drag_scroll ^= 1; } #ifdef PLOOPY_DRAGSCROLL_FIXED - pmw_set_cpi(is_drag_scroll ? PLOOPY_DRAGSCROLL_DPI : dpi_array[keyboard_config.dpi_config]); + pointing_device_set_cpi(is_drag_scroll ? PLOOPY_DRAGSCROLL_DPI : dpi_array[keyboard_config.dpi_config]); #else - pmw_set_cpi(is_drag_scroll ? (dpi_array[keyboard_config.dpi_config] * PLOOPY_DRAGSCROLL_MULTIPLIER) : dpi_array[keyboard_config.dpi_config]); + pointing_device_set_cpi(is_drag_scroll ? (dpi_array[keyboard_config.dpi_config] * PLOOPY_DRAGSCROLL_MULTIPLIER) : dpi_array[keyboard_config.dpi_config]); #endif } @@ -194,11 +176,7 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record) { #ifndef MOUSEKEY_ENABLE if (IS_MOUSEKEY_BUTTON(keycode)) { report_mouse_t currentReport = pointing_device_get_report(); - if (record->event.pressed) { - currentReport.buttons |= 1 << (keycode - KC_MS_BTN1); - } else { - currentReport.buttons &= ~(1 << (keycode - KC_MS_BTN1)); - } + currentReport.buttons = pointing_device_handle_buttons(currentReport.buttons, record->event.pressed, keycode - KC_MS_BTN1); pointing_device_set_report(currentReport); pointing_device_send(); } @@ -239,35 +217,12 @@ void keyboard_pre_init_kb(void) { keyboard_pre_init_user(); } -void pointing_device_init(void) { - // initialize ball sensor - pmw_spi_init(); +void pointing_device_init_kb(void) { + pmw3360_set_cpi(dpi_array[keyboard_config.dpi_config]); // initialize the scroll wheel's optical encoder opt_encoder_init(); } - -void pointing_device_task(void) { - report_mouse_t mouse_report = pointing_device_get_report(); - process_wheel(&mouse_report); - process_mouse(&mouse_report); - - if (is_drag_scroll) { - mouse_report.h = mouse_report.x; -#ifdef PLOOPY_DRAGSCROLL_INVERT - // Invert vertical scroll direction - mouse_report.v = -mouse_report.y; -#else - mouse_report.v = mouse_report.y; -#endif - mouse_report.x = 0; - mouse_report.y = 0; - } - - pointing_device_set_report(mouse_report); - pointing_device_send(); -} - void eeconfig_init_kb(void) { keyboard_config.dpi_config = PLOOPY_DPI_DEFAULT; eeconfig_update_kb(keyboard_config.raw); @@ -285,7 +240,7 @@ void matrix_init_kb(void) { } void keyboard_post_init_kb(void) { - pmw_set_cpi(dpi_array[keyboard_config.dpi_config]); + pointing_device_set_cpi(dpi_array[keyboard_config.dpi_config]); keyboard_post_init_user(); } diff --git a/keyboards/ploopyco/trackball/trackball.h b/keyboards/ploopyco/trackball/trackball.h index fd2bf465a511..8452a78ee7e8 100644 --- a/keyboards/ploopyco/trackball/trackball.h +++ b/keyboards/ploopyco/trackball/trackball.h @@ -19,11 +19,8 @@ #pragma once #include "quantum.h" -#include "spi_master.h" -#include "pmw3360.h" #include "analog.h" #include "opt_encoder.h" -#include "pointing_device.h" #if defined(KEYBOARD_ploopyco_trackball_rev1) # include "rev1.h" #elif defined(KEYBOARD_ploopyco_trackball_rev1_005) @@ -36,11 +33,6 @@ #define OPT_ENC1_MUX 0 #define OPT_ENC2_MUX 4 -void process_mouse(report_mouse_t* mouse_report); -void process_mouse_user(report_mouse_t* mouse_report, int16_t x, int16_t y); -void process_wheel(report_mouse_t* mouse_report); -void process_wheel_user(report_mouse_t* mouse_report, int16_t h, int16_t v); - #define LAYOUT(BL, BM, BR, BF, BB) \ { {BL, BM, BR, BF, BB}, } @@ -67,3 +59,6 @@ enum ploopy_keycodes { PLOOPY_SAFE_RANGE, #endif }; + +bool encoder_update_user(uint8_t index, bool clockwise); +bool encoder_update_kb(uint8_t index, bool clockwise); diff --git a/keyboards/ploopyco/trackball_mini/config.h b/keyboards/ploopyco/trackball_mini/config.h index f76a6eb2c1cc..52d7390ca252 100644 --- a/keyboards/ploopyco/trackball_mini/config.h +++ b/keyboards/ploopyco/trackball_mini/config.h @@ -56,3 +56,9 @@ // If board has a debug LED, you can enable it by defining this // #define DEBUG_LED_PIN F7 + +#define ADNS5050_SCLK_PIN B7 +#define ADNS5050_SDIO_PIN C6 +#define ADNS5050_CS_PIN B4 + +#define POINTING_DEVICE_ROTATION_90 diff --git a/keyboards/ploopyco/trackball_mini/info.json b/keyboards/ploopyco/trackball_mini/info.json index 7b30e0595f5f..67d62cc2b977 100644 --- a/keyboards/ploopyco/trackball_mini/info.json +++ b/keyboards/ploopyco/trackball_mini/info.json @@ -3,8 +3,6 @@ "url": "www.ploopy.co", "maintainer": "ploopyco", "manufacturer": "Ploopy Corporation", - "width": 8, - "height": 3, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/ploopyco/trackball_mini/keymaps/drag_scroll/keymap.c b/keyboards/ploopyco/trackball_mini/keymaps/drag_scroll/keymap.c index 7784bc85538a..7eb973216b9c 100644 --- a/keyboards/ploopyco/trackball_mini/keymaps/drag_scroll/keymap.c +++ b/keyboards/ploopyco/trackball_mini/keymaps/drag_scroll/keymap.c @@ -44,7 +44,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { // to only scroll in one direction, if you wanted, as well. In fact, // there is no reason that you need to send this to the mouse report. // You could have it register a key, instead. -void process_mouse_user(report_mouse_t* mouse_report, int16_t x, int16_t y) { +void process_mouse_user(report_mouse_t* mouse_report, int8_t x, int8_t y) { if (is_drag_scroll) { mouse_report->h = x; mouse_report->v = y; diff --git a/keyboards/ploopyco/trackball_mini/readme.md b/keyboards/ploopyco/trackball_mini/readme.md index 3c21a57cfde8..a3aebb06e698 100644 --- a/keyboards/ploopyco/trackball_mini/readme.md +++ b/keyboards/ploopyco/trackball_mini/readme.md @@ -56,7 +56,7 @@ Additionally, you can change the DPI/CPI or speed of the trackball by calling `a To configure/set your own array, there are two defines to use, `PLOOPY_DPI_OPTIONS` to set the array, and `PLOOPY_DPI_DEFAULT`. ```c -#define PLOOPY_DPI_OPTIONS { CPI375, CPI750, CPI1375} +#define PLOOPY_DPI_OPTIONS { 375, 750, 1375} #define PLOOPY_DPI_DEFAULT 2 ``` @@ -73,7 +73,7 @@ Nothing needs to be enabled to use this functionality. Just add the `DRAG_SCROL ### Drag Scroll Configuration * `#define PLOOPY_DRAGSCROLL_MOMENTARY` - Makes the key into a momentary key, rather than a toggle. -* `#define PLOOPY_DRAGSCROLL_DPI CPI375` - When the fixed DPI option is enabled, this sets the DPI to be used for Drag Scroll. +* `#define PLOOPY_DRAGSCROLL_DPI 375` - When the fixed DPI option is enabled, this sets the DPI to be used for Drag Scroll. * `#define PLOOPY_DRAGSCROLL_INVERT` - This reverses the direction that the scroll is performed. ## Fuse settings diff --git a/keyboards/ploopyco/trackball_mini/rules.mk b/keyboards/ploopyco/trackball_mini/rules.mk index 58fad239f4fa..6a28ddc6884b 100644 --- a/keyboards/ploopyco/trackball_mini/rules.mk +++ b/keyboards/ploopyco/trackball_mini/rules.mk @@ -1,32 +1,29 @@ # MCU name MCU = atmega32u4 -# Processor frequency -F_CPU = 16000000 - # Bootloader selection BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite 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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output POINTING_DEVICE_ENABLE = yes -MOUSEKEY_ENABLE = no # Mouse keys +POINTING_DEVICE_DRIVER = adns5050 +MOUSEKEY_ENABLE = yes # Mouse keys + +ENCODER_ENABLE := no +OPTS_DEF += -DENCODER_ENABLE QUANTUM_LIB_SRC += analog.c -SRC += adns5050.c opt_encoder.c +SRC += opt_encoder.c DEFAULT_FOLDER = ploopyco/trackball_mini/rev1_001 diff --git a/keyboards/ploopyco/trackball_mini/trackball_mini.c b/keyboards/ploopyco/trackball_mini/trackball_mini.c index b50850b54912..2b511c4eab73 100644 --- a/keyboards/ploopyco/trackball_mini/trackball_mini.c +++ b/keyboards/ploopyco/trackball_mini/trackball_mini.c @@ -37,22 +37,19 @@ # define OPT_SCALE 1 // Multiplier for wheel #endif -#define PLOOPY_DPI_OPTIONS { CPI375, CPI750, CPI1375 } +#define PLOOPY_DPI_OPTIONS \ + { 375, 750, 1375 } #define PLOOPY_DPI_DEFAULT 2 #ifndef PLOOPY_DRAGSCROLL_DPI -# define PLOOPY_DRAGSCROLL_DPI CPI375 // Fixed-DPI Drag Scroll +# define PLOOPY_DRAGSCROLL_DPI 375 // Fixed-DPI Drag Scroll #endif #ifndef PLOOPY_DRAGSCROLL_MULTIPLIER -# define PLOOPY_DRAGSCROLL_MULTIPLIER 0.75 // Variable-DPI Drag Scroll +# define PLOOPY_DRAGSCROLL_MULTIPLIER 0.75 // Variable-DPI Drag Scroll #endif -// Transformation constants for delta-X and delta-Y -const static float ADNS_X_TRANSFORM = -1.0; -const static float ADNS_Y_TRANSFORM = 1.0; - keyboard_config_t keyboard_config; -uint16_t dpi_array[] = PLOOPY_DPI_OPTIONS; +uint16_t dpi_array[] = PLOOPY_DPI_OPTIONS; #define DPI_OPTION_SIZE (sizeof(dpi_array) / sizeof(uint16_t)) // TODO: Implement libinput profiles @@ -61,28 +58,38 @@ uint16_t dpi_array[] = PLOOPY_DPI_OPTIONS; // Valid options are ACC_NONE, ACC_LINEAR, ACC_CUSTOM, ACC_QUADRATIC // Trackball State -bool is_scroll_clicked = false; -bool BurstState = false; // init burst state for Trackball module -uint16_t MotionStart = 0; // Timer for accel, 0 is resting state -uint16_t lastScroll = 0; // Previous confirmed wheel event -uint16_t lastMidClick = 0; // Stops scrollwheel from being read if it was pressed -uint8_t OptLowPin = OPT_ENC1; -bool debug_encoder = false; +bool is_scroll_clicked = false; +bool BurstState = false; // init burst state for Trackball module +uint16_t MotionStart = 0; // Timer for accel, 0 is resting state +uint16_t lastScroll = 0; // Previous confirmed wheel event +uint16_t lastMidClick = 0; // Stops scrollwheel from being read if it was pressed +uint8_t OptLowPin = OPT_ENC1; +bool debug_encoder = false; bool is_drag_scroll = false; -__attribute__((weak)) void process_wheel_user(report_mouse_t* mouse_report, int16_t h, int16_t v) { - mouse_report->h = h; - mouse_report->v = v; +__attribute__((weak)) bool encoder_update_user(uint8_t index, bool clockwise) { return true; } + +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { + return false; + } +#ifdef MOUSEKEY_ENABLE + tap_code(clockwise ? KC_WH_U : KC_WH_D); +#else + mouse_report_t mouse_report = pointing_device_get_report(); + mouse_report.v = clockwise ? 1 : -1; + pointing_device_set_report(mouse_report); + pointing_device_send(); +#endif + return true; } -__attribute__((weak)) void process_wheel(report_mouse_t* mouse_report) { +void process_wheel(void) { // If the mouse wheel was just released, do not scroll. - if (timer_elapsed(lastMidClick) < SCROLL_BUTT_DEBOUNCE) - return; + if (timer_elapsed(lastMidClick) < SCROLL_BUTT_DEBOUNCE) return; // Limit the number of scrolls per unit time. - if (timer_elapsed(lastScroll) < OPT_DEBOUNCE) - return; + if (timer_elapsed(lastScroll) < OPT_DEBOUNCE) return; // Don't scroll if the middle button is depressed. if (is_scroll_clicked) { @@ -95,41 +102,37 @@ __attribute__((weak)) void process_wheel(report_mouse_t* mouse_report) { uint16_t p1 = adc_read(OPT_ENC1_MUX); uint16_t p2 = adc_read(OPT_ENC2_MUX); - if (debug_encoder) - dprintf("OPT1: %d, OPT2: %d\n", p1, p2); + if (debug_encoder) dprintf("OPT1: %d, OPT2: %d\n", p1, p2); uint8_t dir = opt_encoder_handler(p1, p2); - if (dir == 0) - return; - - process_wheel_user(mouse_report, mouse_report->h, (int)(mouse_report->v + (dir * OPT_SCALE))); -} - -__attribute__((weak)) void process_mouse_user(report_mouse_t* mouse_report, int16_t x, int16_t y) { - mouse_report->x = x; - mouse_report->y = y; + if (dir == 0) return; + encoder_update_kb(0, dir == 1); } -__attribute__((weak)) void process_mouse(report_mouse_t* mouse_report) { - report_adns_t data = adns_read_burst(); - - if (data.dx != 0 || data.dy != 0) { - if (debug_mouse) - dprintf("Raw ] X: %d, Y: %d\n", data.dx, data.dy); +void pointing_device_init_kb(void) { + opt_encoder_init(); - // Apply delta-X and delta-Y transformations. - // x and y are swapped - // the sensor is rotated - // by 90 degrees - float xt = (float) data.dy * ADNS_X_TRANSFORM; - float yt = (float) data.dx * ADNS_Y_TRANSFORM; + // set the DPI. + pointing_device_set_cpi(dpi_array[keyboard_config.dpi_config]); +} - int16_t xti = (int16_t)xt; - int16_t yti = (int16_t)yt; +report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report) { + process_wheel(); - process_mouse_user(mouse_report, xti, yti); + if (is_drag_scroll) { + mouse_report.h = mouse_report.x; +#ifdef PLOOPY_DRAGSCROLL_INVERT + // Invert vertical scroll direction + mouse_report.v = -mouse_report.y; +#else + mouse_report.v = mouse_report.y; +#endif + mouse_report.x = 0; + mouse_report.y = 0; } + + return pointing_device_task_user(mouse_report); } bool process_record_kb(uint16_t keycode, keyrecord_t* record) { @@ -137,17 +140,16 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record) { // Update Timer to prevent accidental scrolls if ((record->event.key.col == 1) && (record->event.key.row == 0)) { - lastMidClick = timer_read(); + lastMidClick = timer_read(); is_scroll_clicked = record->event.pressed; } - if (!process_record_user(keycode, record)) - return false; + if (!process_record_user(keycode, record)) return false; if (keycode == DPI_CONFIG && record->event.pressed) { keyboard_config.dpi_config = (keyboard_config.dpi_config + 1) % DPI_OPTION_SIZE; eeconfig_update_kb(keyboard_config.raw); - adns_set_cpi(dpi_array[keyboard_config.dpi_config]); + pointing_device_set_cpi(dpi_array[keyboard_config.dpi_config]); } if (keycode == DRAG_SCROLL) { @@ -157,7 +159,7 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record) { { is_drag_scroll ^= 1; } - adns_set_cpi(is_drag_scroll ? PLOOPY_DRAGSCROLL_DPI : dpi_array[keyboard_config.dpi_config]); + pointing_device_set_cpi(is_drag_scroll ? PLOOPY_DRAGSCROLL_DPI : dpi_array[keyboard_config.dpi_config]); } /* If Mousekeys is disabled, then use handle the mouse button @@ -168,11 +170,7 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record) { #ifndef MOUSEKEY_ENABLE if (IS_MOUSEKEY_BUTTON(keycode)) { report_mouse_t currentReport = pointing_device_get_report(); - if (record->event.pressed) { - currentReport.buttons |= 1 << (keycode - KC_MS_BTN1); - } else { - currentReport.buttons &= ~(1 << (keycode - KC_MS_BTN1)); - } + currentReport.buttons = pointing_device_handle_buttons(currentReport.buttons, record->event.pressed, keycode - KC_MS_BTN1); pointing_device_set_report(currentReport); pointing_device_send(); } @@ -207,48 +205,6 @@ void keyboard_pre_init_kb(void) { keyboard_pre_init_user(); } -void pointing_device_init(void) { - adns_init(); - opt_encoder_init(); - - // reboot the adns. - // if the adns hasn't initialized yet, this is harmless. - adns_write_reg(REG_CHIP_RESET, 0x5a); - - // wait maximum time before adns is ready. - // this ensures that the adns is actuall ready after reset. - wait_ms(55); - - // read a burst from the adns and then discard it. - // gets the adns ready for write commands - // (for example, setting the dpi). - adns_read_burst(); - - // set the DPI. - adns_set_cpi(dpi_array[keyboard_config.dpi_config]); -} - -void pointing_device_task(void) { - report_mouse_t mouse_report = pointing_device_get_report(); - process_wheel(&mouse_report); - process_mouse(&mouse_report); - - if (is_drag_scroll) { - mouse_report.h = mouse_report.x; -#ifdef PLOOPY_DRAGSCROLL_INVERT - // Invert vertical scroll direction - mouse_report.v = -mouse_report.y; -#else - mouse_report.v = mouse_report.y; -#endif - mouse_report.x = 0; - mouse_report.y = 0; - } - - pointing_device_set_report(mouse_report); - pointing_device_send(); -} - void eeconfig_init_kb(void) { keyboard_config.dpi_config = PLOOPY_DPI_DEFAULT; eeconfig_update_kb(keyboard_config.raw); diff --git a/keyboards/ploopyco/trackball_mini/trackball_mini.h b/keyboards/ploopyco/trackball_mini/trackball_mini.h index a12d12a0c812..3af2a49b5e45 100644 --- a/keyboards/ploopyco/trackball_mini/trackball_mini.h +++ b/keyboards/ploopyco/trackball_mini/trackball_mini.h @@ -20,10 +20,8 @@ #pragma once #include "quantum.h" -#include "adns5050.h" #include "analog.h" #include "opt_encoder.h" -#include "pointing_device.h" // Sensor defs #define OPT_ENC1 F0 @@ -31,19 +29,16 @@ #define OPT_ENC1_MUX 0 #define OPT_ENC2_MUX 4 -void process_mouse(report_mouse_t* mouse_report); -void process_mouse_user(report_mouse_t* mouse_report, int16_t x, int16_t y); -void process_wheel(report_mouse_t* mouse_report); -void process_wheel_user(report_mouse_t* mouse_report, int16_t h, int16_t v); +void process_wheel(void); #define LAYOUT(BL, BM, BR, BF, BB) \ { {BL, BM, BR, BF, BB}, } typedef union { - uint32_t raw; - struct { - uint8_t dpi_config; - }; + uint32_t raw; + struct { + uint8_t dpi_config; + }; } keyboard_config_t; extern keyboard_config_t keyboard_config; @@ -61,3 +56,6 @@ enum ploopy_keycodes { PLOOPY_SAFE_RANGE, #endif }; + +bool encoder_update_user(uint8_t index, bool clockwise); +bool encoder_update_kb(uint8_t index, bool clockwise); diff --git a/keyboards/ploopyco/trackball_nano/config.h b/keyboards/ploopyco/trackball_nano/config.h index 7450f5574cb9..7d109db99ed3 100644 --- a/keyboards/ploopyco/trackball_nano/config.h +++ b/keyboards/ploopyco/trackball_nano/config.h @@ -45,3 +45,9 @@ a polling rate as possible. */ #define USB_POLLING_INTERVAL_MS 1 #define USB_MAX_POWER_CONSUMPTION 100 + +#define ADNS5050_SCLK_PIN B7 +#define ADNS5050_SDIO_PIN C6 +#define ADNS5050_CS_PIN B4 + +#define POINTING_DEVICE_ROTATION_90 diff --git a/keyboards/ploopyco/trackball_nano/keymaps/maddie/keymap.c b/keyboards/ploopyco/trackball_nano/keymaps/maddie/keymap.c index 6f568ecf5118..9e33db3783a2 100644 --- a/keyboards/ploopyco/trackball_nano/keymaps/maddie/keymap.c +++ b/keyboards/ploopyco/trackball_nano/keymaps/maddie/keymap.c @@ -21,14 +21,14 @@ // safe range starts at `PLOOPY_SAFE_RANGE` instead. uint8_t scroll_enabled = 0; uint8_t lock_state = 0; -int16_t delta_x = 0; -int16_t delta_y = 0; +int8_t delta_x = 0; +int8_t delta_y = 0; -void process_mouse_user(report_mouse_t *mouse_report, int16_t x, int16_t y) { - if (scroll_enabled) { - delta_x += x; +void process_mouse_user(report_mouse_t *mouse_report, int8_t x, int8_t y) { + if (scroll_enabled) { + delta_x += x; delta_y += y; - + if (delta_x > 60) { mouse_report->h = 1; delta_x = 0; @@ -44,10 +44,10 @@ void process_mouse_user(report_mouse_t *mouse_report, int16_t x, int16_t y) { mouse_report->v = 1; delta_y = 0; } - } else { - mouse_report->x = x; + } else { + mouse_report->x = x; mouse_report->y = y; - } + } } void keyboard_post_init_user(void) { @@ -62,7 +62,7 @@ bool led_update_user(led_t led_state) { scroll_timer = timer_read(); lock_count = 0; } - + if (led_state.num_lock != lock_state) { lock_count++; @@ -73,7 +73,7 @@ bool led_update_user(led_t led_state) { delta_y = 0; } } - + lock_state = led_state.num_lock; return true; } diff --git a/keyboards/ploopyco/trackball_nano/readme.md b/keyboards/ploopyco/trackball_nano/readme.md index 8a293602a8e2..0d427bfb55e4 100644 --- a/keyboards/ploopyco/trackball_nano/readme.md +++ b/keyboards/ploopyco/trackball_nano/readme.md @@ -2,7 +2,7 @@ # Ploopy Trackball Nano -![Ploopyco Trackball Nano](https://www.ploopy.co/uploads/b/113cb4122f867acc306a72a2741c5237a9b1d0db13abfe4e8e394cd466c4a311/_MG_7710_1614037372.jpg) +![Ploopyco Trackball Nano](https://ploopy.co/wp-content/uploads/2021/06/2.jpg) It's a DIY, QMK Powered Trackball...Nano! @@ -28,14 +28,14 @@ Occasionally, new revisions of the PCB will be released. Every board comes with Match the firmware that you flash onto the board with the designator on the board. -# Customzing your Ploopy Nano Trackball +# Customizing your Ploopy Nano Trackball You can change the DPI/CPI or speed of the trackball by calling `adns_set_cpi` at any time. Additionally, there is a `DPI_CONFIG` macro that will cycle through an array of options for the DPI. This is set to 375, 750, and 1375, but can be changed. 750 is the default. To configure/set your own array, there are two defines to use, `PLOOPY_DPI_OPTIONS` to set the array, and `PLOOPY_DPI_DEFAULT`. ```c -#define PLOOPY_DPI_OPTIONS { CPI375, CPI750, CPI1375} +#define PLOOPY_DPI_OPTIONS { 375, 750, 1375} #define PLOOPY_DPI_DEFAULT 1 ``` @@ -51,4 +51,4 @@ When flashing the bootloader, use the following fuse settings: |----------|-------------| | Low | `0x5E` | | High | `0x99` | -| Extended | `0xC3` | \ No newline at end of file +| Extended | `0xC3` | diff --git a/keyboards/ploopyco/trackball_nano/rev1_001/config.h b/keyboards/ploopyco/trackball_nano/rev1_001/config.h index 63780ef048c4..6d265d723376 100644 --- a/keyboards/ploopyco/trackball_nano/rev1_001/config.h +++ b/keyboards/ploopyco/trackball_nano/rev1_001/config.h @@ -29,7 +29,7 @@ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) * */ -#define DIRECT_PINS {} +#define DIRECT_PINS {{NO_PIN}} // These pins are not broken out, and cannot be used normally. // They are set as output and pulled high, by default diff --git a/keyboards/ploopyco/trackball_nano/rules.mk b/keyboards/ploopyco/trackball_nano/rules.mk index 0286194b9f19..7e680be3cbe6 100644 --- a/keyboards/ploopyco/trackball_nano/rules.mk +++ b/keyboards/ploopyco/trackball_nano/rules.mk @@ -1,32 +1,23 @@ # MCU name MCU = atmega32u4 -# Processor frequency -F_CPU = 16000000 - # Bootloader selection BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite 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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output POINTING_DEVICE_ENABLE = yes +POINTING_DEVICE_DRIVER = adns5050 MOUSEKEY_ENABLE = no # Mouse keys -QUANTUM_LIB_SRC += analog.c -SRC += adns5050.c opt_encoder.c - DEFAULT_FOLDER = ploopyco/trackball_nano/rev1_001 diff --git a/keyboards/ploopyco/trackball_nano/trackball_nano.c b/keyboards/ploopyco/trackball_nano/trackball_nano.c index 9bcfa59ef8e0..2702f6055727 100644 --- a/keyboards/ploopyco/trackball_nano/trackball_nano.c +++ b/keyboards/ploopyco/trackball_nano/trackball_nano.c @@ -37,7 +37,8 @@ #endif #ifndef PLOOPY_DPI_OPTIONS -# define PLOOPY_DPI_OPTIONS { CPI375, CPI750, CPI1375 } +# define PLOOPY_DPI_OPTIONS \ + { 375, 750, 1375 } # ifndef PLOOPY_DPI_DEFAULT # define PLOOPY_DPI_DEFAULT 2 # endif @@ -49,12 +50,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -// Transformation constants for delta-X and delta-Y -const static float ADNS_X_TRANSFORM = -1.0; -const static float ADNS_Y_TRANSFORM = 1.0; - keyboard_config_t keyboard_config; -uint16_t dpi_array[] = PLOOPY_DPI_OPTIONS; +uint16_t dpi_array[] = PLOOPY_DPI_OPTIONS; #define DPI_OPTION_SIZE (sizeof(dpi_array) / sizeof(uint16_t)) // TODO: Implement libinput profiles @@ -63,77 +60,13 @@ uint16_t dpi_array[] = PLOOPY_DPI_OPTIONS; // Valid options are ACC_NONE, ACC_LINEAR, ACC_CUSTOM, ACC_QUADRATIC // Trackball State -bool is_scroll_clicked = false; -bool BurstState = false; // init burst state for Trackball module -uint16_t MotionStart = 0; // Timer for accel, 0 is resting state -uint16_t lastScroll = 0; // Previous confirmed wheel event -uint16_t lastMidClick = 0; // Stops scrollwheel from being read if it was pressed -uint8_t OptLowPin = OPT_ENC1; -bool debug_encoder = false; - -__attribute__((weak)) void process_mouse_user(report_mouse_t* mouse_report, int16_t x, int16_t y) { - mouse_report->x = x; - mouse_report->y = y; -} - -__attribute__((weak)) void process_mouse(report_mouse_t* mouse_report) { - report_adns_t data = adns_read_burst(); - - if (data.dx != 0 || data.dy != 0) { - if (debug_mouse) - dprintf("Raw ] X: %d, Y: %d\n", data.dx, data.dy); - - // Apply delta-X and delta-Y transformations. - // x and y are swapped - // the sensor is rotated - // by 90 degrees - float xt = (float) data.dy * ADNS_X_TRANSFORM; - float yt = (float) data.dx * ADNS_Y_TRANSFORM; - - int16_t xti = (int16_t)xt; - int16_t yti = (int16_t)yt; - - process_mouse_user(mouse_report, xti, yti); - } -} - -bool process_record_kb(uint16_t keycode, keyrecord_t* record) { - xprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed); - - // Update Timer to prevent accidental scrolls - if ((record->event.key.col == 1) && (record->event.key.row == 0)) { - lastMidClick = timer_read(); - is_scroll_clicked = record->event.pressed; - } - - if (!process_record_user(keycode, record)) - return false; - - if (keycode == DPI_CONFIG && record->event.pressed) { - keyboard_config.dpi_config = (keyboard_config.dpi_config + 1) % DPI_OPTION_SIZE; - eeconfig_update_kb(keyboard_config.raw); - adns_set_cpi(dpi_array[keyboard_config.dpi_config]); - } +bool is_scroll_clicked = false; +bool BurstState = false; // init burst state for Trackball module +uint16_t MotionStart = 0; // Timer for accel, 0 is resting state -/* If Mousekeys is disabled, then use handle the mouse button - * keycodes. This makes things simpler, and allows usage of - * the keycodes in a consistent manner. But only do this if - * Mousekeys is not enable, so it's not handled twice. - */ -#ifndef MOUSEKEY_ENABLE - if (IS_MOUSEKEY_BUTTON(keycode)) { - report_mouse_t currentReport = pointing_device_get_report(); - if (record->event.pressed) { - currentReport.buttons |= 1 << (keycode - KC_MS_BTN1); - } else { - currentReport.buttons &= ~(1 << (keycode - KC_MS_BTN1)); - } - pointing_device_set_report(currentReport); - pointing_device_send(); - } -#endif - - return true; +void pointing_device_init_kb(void) { + // set the DPI. + pointing_device_set_cpi(dpi_array[keyboard_config.dpi_config]); } // Hardware Setup @@ -143,9 +76,6 @@ void keyboard_pre_init_kb(void) { // debug_mouse = true; // debug_encoder = true; - setPinInput(OPT_ENC1); - setPinInput(OPT_ENC2); - /* Ground all output pins connected to ground. This provides additional * pathways to ground. If you're messing with this, know this: driving ANY * of these pins high will cause a short. On the MCU. Ka-blooey. @@ -162,34 +92,6 @@ void keyboard_pre_init_kb(void) { keyboard_pre_init_user(); } -void pointing_device_init(void) { - adns_init(); - opt_encoder_init(); - - // reboot the adns. - // if the adns hasn't initialized yet, this is harmless. - adns_write_reg(REG_CHIP_RESET, 0x5a); - - // wait maximum time before adns is ready. - // this ensures that the adns is actuall ready after reset. - wait_ms(55); - - // read a burst from the adns and then discard it. - // gets the adns ready for write commands - // (for example, setting the dpi). - adns_read_burst(); - - // set the DPI. - adns_set_cpi(dpi_array[keyboard_config.dpi_config]); -} - -void pointing_device_task(void) { - report_mouse_t mouse_report = pointing_device_get_report(); - process_mouse(&mouse_report); - pointing_device_set_report(mouse_report); - pointing_device_send(); -} - void eeconfig_init_kb(void) { keyboard_config.dpi_config = PLOOPY_DPI_DEFAULT; eeconfig_update_kb(keyboard_config.raw); diff --git a/keyboards/ploopyco/trackball_nano/trackball_nano.h b/keyboards/ploopyco/trackball_nano/trackball_nano.h index 5692383b1ea7..88725eab686c 100644 --- a/keyboards/ploopyco/trackball_nano/trackball_nano.h +++ b/keyboards/ploopyco/trackball_nano/trackball_nano.h @@ -20,19 +20,6 @@ #pragma once #include "quantum.h" -#include "adns5050.h" -#include "analog.h" -#include "opt_encoder.h" -#include "pointing_device.h" - -// Sensor defs -#define OPT_ENC1 F0 -#define OPT_ENC2 F4 -#define OPT_ENC1_MUX 0 -#define OPT_ENC2_MUX 4 - -void process_mouse(report_mouse_t* mouse_report); -void process_mouse_user(report_mouse_t* mouse_report, int16_t x, int16_t y); #define LAYOUT(k00) {{ KC_NO }} diff --git a/keyboards/pluckey/config.h b/keyboards/pluckey/config.h new file mode 100644 index 000000000000..295fe93a8536 --- /dev/null +++ b/keyboards/pluckey/config.h @@ -0,0 +1,90 @@ +/* +Copyright 2021 floookay + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xF100 +#define PRODUCT_ID 0x91CE +#define DEVICE_VER 0x0001 +#define MANUFACTURER floookay +#define PRODUCT pluckey + +/* key matrix size */ +// Rows are doubled-up +#define MATRIX_ROWS 10 +#define MATRIX_COLS 7 + +/* + * Keyboard Matrix Assignments + * + * 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 { B4, F5, F6, B6, B5 } +#define MATRIX_COL_PINS { D1, D0, D4, C6, D7, E6, F7 } +#define UNUSED_PINS { F4, B1 } +#define DIODE_DIRECTION COL2ROW + +/* encoder support */ +#define ENCODERS_PAD_A { B3 } +#define ENCODERS_PAD_B { B2 } +#define ENCODER_RESOLUTION 2 +#define ENCODERS_PAD_A_RIGHT { B2 } +#define ENCODERS_PAD_B_RIGHT { B3 } +#define ENCODER_RESOLUTION_RIGHT 2 + +/* communication between sides */ +#define USE_SERIAL +#define SOFT_SERIAL_PIN D2 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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 + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/pluckey/info.json b/keyboards/pluckey/info.json new file mode 100644 index 000000000000..de58bee80298 --- /dev/null +++ b/keyboards/pluckey/info.json @@ -0,0 +1,160 @@ +{ + "keyboard_name": "pluckey", + "url": "https://github.com/floookay/pluckey", + "maintainer": "floookay", + "layout_aliases": { + "LAYOUT": "LAYOUT_all" + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"Esc", "x":0, "y":0.625, "w":1.5}, + {"label":"1!", "x":1.5, "y":0.625}, + {"label":"2@", "x":2.5, "y":0.125}, + {"label":"3#", "x":3.5, "y":0}, + {"label":"4$", "x":4.5, "y":0.125}, + {"label":"5%", "x":5.5, "y":0.25}, + {"label":"-_", "x":6.5, "y":0.25}, + {"label":"=+", "x":12, "y":0.25}, + {"label":"6^", "x":13, "y":0.25}, + {"label":"7&", "x":14, "y":0.125}, + {"label":"8*", "x":15, "y":0}, + {"label":"9(", "x":16, "y":0.125}, + {"label":"0)", "x":17, "y":0.625}, + {"label":"`~", "x":18, "y":0.625, "w":1.5}, + + {"label":"Tab", "x":0, "y":1.625, "w":1.5}, + {"label":"Q", "x":1.5, "y":1.625}, + {"label":"W", "x":2.5, "y":1.125}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1.125}, + {"label":"T", "x":5.5, "y":1.25}, + {"label":"[{", "x":6.5, "y":1.25}, + {"label":"]}", "x":12, "y":1.25}, + {"label":"Y", "x":13, "y":1.25}, + {"label":"U", "x":14, "y":1.125}, + {"label":"I", "x":16, "y":1.125}, + {"label":"O", "x":15, "y":1}, + {"label":"P", "x":17, "y":1.625}, + {"label":"\\|", "x":18, "y":1.625, "w":1.5}, + + {"label":"Ctrl", "x":0, "y":2.625, "w":1.5}, + {"label":"A", "x":1.5, "y":2.625}, + {"label":"S", "x":2.5, "y":2.125}, + {"label":"D", "x":3.5, "y":2}, + {"label":"F", "x":4.5, "y":2.125}, + {"label":"G", "x":5.5, "y":2.25}, + {"label":"(", "x":6.5, "y":2.25}, + {"label":")", "x":12, "y":2.25}, + {"label":"H", "x":13, "y":2.25}, + {"label":"J", "x":14, "y":2.125}, + {"label":"K", "x":16, "y":2.125}, + {"label":"L", "x":15, "y":2}, + {"label":";:", "x":17, "y":2.625}, + {"label":"'\"", "x":18, "y":2.625, "w":1.5}, + + {"label":"Shift", "x":0, "y":3.625, "w":1.5}, + {"label":"Z", "x":1.5, "y":3.625}, + {"label":"X", "x":2.5, "y":3.125}, + {"label":"C", "x":3.5, "y":3}, + {"label":"V", "x":4.5, "y":3.125}, + {"label":"B", "x":5.5, "y":3.25}, + {"label":"{", "x":6.5, "y":3.25}, + {"label":"Home", "x":7.5, "y":3.75}, + {"label":"End", "x":11, "y":3.75}, + {"label":"}", "x":12, "y":3.25}, + {"label":"N", "x":13, "y":3.25}, + {"label":"M", "x":14, "y":3.125}, + {"label":",<", "x":15, "y":3}, + {"label":".>", "x":16, "y":3.125}, + {"label":"/?", "x":17, "y":3.625}, + {"label":"Shift", "x":18, "y":3.625, "w":1.5}, + + {"label":"GUI", "x":2.5, "y":4.125}, + {"label":"Alt", "x":3.5, "y":4}, + {"label":"Lower", "x":4.5, "y":4.125}, + {"label":"Space", "x":5.75, "y":4.5, "w":1.5}, + {"label":"Backspace", "x":7.25, "y":4.75}, + {"label":"Enter", "x":11.25, "y":4.75}, + {"label":"Space", "x":12.25, "y":4.5, "w":1.5}, + {"label":"Raise", "x":14, "y":4.125}, + {"label":"Alt", "x":15, "y":4}, + {"label":"MEH", "x":16, "y":4.125} + ] + }, + "LAYOUT_ergo": { + "layout": [ + {"label":"Esc", "x":0, "y":0.625, "w":1.5}, + {"label":"1!", "x":1.5, "y":0.625}, + {"label":"2@", "x":2.5, "y":0.125}, + {"label":"3#", "x":3.5, "y":0}, + {"label":"4$", "x":4.5, "y":0.125}, + {"label":"5%", "x":5.5, "y":0.25}, + {"label":"-_", "x":6.5, "y":0.25}, + {"label":"=+", "x":12, "y":0.25}, + {"label":"6^", "x":13, "y":0.25}, + {"label":"7&", "x":14, "y":0.125}, + {"label":"8*", "x":15, "y":0}, + {"label":"9(", "x":16, "y":0.125}, + {"label":"0)", "x":17, "y":0.625}, + {"label":"`~", "x":18, "y":0.625, "w":1.5}, + + {"label":"Tab", "x":0, "y":1.625, "w":1.5}, + {"label":"Q", "x":1.5, "y":1.625}, + {"label":"W", "x":2.5, "y":1.125}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1.125}, + {"label":"T", "x":5.5, "y":1.25}, + {"label":"[{", "x":6.5, "y":1.25, "h":1.5}, + {"label":"]}", "x":12, "y":1.25, "h":1.5}, + {"label":"Y", "x":13, "y":1.25}, + {"label":"U", "x":14, "y":1.125}, + {"label":"I", "x":16, "y":1.125}, + {"label":"O", "x":15, "y":1}, + {"label":"P", "x":17, "y":1.625}, + {"label":"\\|", "x":18, "y":1.625, "w":1.5}, + + {"label":"Ctrl", "x":0, "y":2.625, "w":1.5}, + {"label":"A", "x":1.5, "y":2.625}, + {"label":"S", "x":2.5, "y":2.125}, + {"label":"D", "x":3.5, "y":2}, + {"label":"F", "x":4.5, "y":2.125}, + {"label":"G", "x":5.5, "y":2.25}, + {"label":"H", "x":13, "y":2.25}, + {"label":"J", "x":14, "y":2.125}, + {"label":"K", "x":16, "y":2.125}, + {"label":"L", "x":15, "y":2}, + {"label":";:", "x":17, "y":2.625}, + {"label":"'\"", "x":18, "y":2.625, "w":1.5}, + + {"label":"Shift", "x":0, "y":3.625, "w":1.5}, + {"label":"Z", "x":1.5, "y":3.625}, + {"label":"X", "x":2.5, "y":3.125}, + {"label":"C", "x":3.5, "y":3}, + {"label":"V", "x":4.5, "y":3.125}, + {"label":"B", "x":5.5, "y":3.25}, + {"label":"(", "x":6.5, "y":2.75, "h":1.5}, + {"label":"Home", "x":7.5, "y":3.75}, + {"label":"End", "x":11, "y":3.75}, + {"label":")", "x":12, "y":2.75, "h":1.5}, + {"label":"N", "x":13, "y":3.25}, + {"label":"M", "x":14, "y":3.125}, + {"label":",<", "x":15, "y":3}, + {"label":".>", "x":16, "y":3.125}, + {"label":"/?", "x":17, "y":3.625}, + {"label":"Shift", "x":18, "y":3.625, "w":1.5}, + + {"label":"GUI", "x":2.5, "y":4.125}, + {"label":"Alt", "x":3.5, "y":4}, + {"label":"Lower", "x":4.5, "y":4.125}, + {"label":"Space", "x":5.75, "y":4.5, "w":1.5}, + {"label":"Backspace", "x":7.25, "y":4.75}, + {"label":"Enter", "x":11.25, "y":4.75}, + {"label":"Space", "x":12.25, "y":4.5, "w":1.5}, + {"label":"Raise", "x":14, "y":4.125}, + {"label":"Alt", "x":15, "y":4}, + {"label":"MEH", "x":16, "y":4.125} + ] + } + } +} diff --git a/keyboards/pluckey/keymaps/default/keymap.c b/keyboards/pluckey/keymaps/default/keymap.c new file mode 100644 index 000000000000..787bb192b206 --- /dev/null +++ b/keyboards/pluckey/keymaps/default/keymap.c @@ -0,0 +1,77 @@ +/* Copyright 2021 floookay + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _LOWER, + _RAISE, + _ADJUST +}; + +// Defines the keycodes used by our macros in process_record_user +enum custom_keycodes { + M_ARROW +}; + +#define MO_LOW MO(_LOWER) +#define MO_RAIS MO(_RAISE) +#define MO_ADJU MO(_ADJUST) +#define MO_CURR _______ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT_all( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LPRN, KC_RPRN, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LCBR, KC_HOME, KC_END, KC_RCBR, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LGUI, KC_LALT, MO_LOW, KC_SPC, KC_BSPC, KC_ENT, KC_SPC, MO_RAIS, KC_RALT, KC_MEH + ), + [_LOWER] = LAYOUT_all( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_PSCR, + _______, _______, _______, _______, KC_PIPE, KC_UNDS, KC_LPRN, KC_RPRN, KC_PLUS, KC_PIPE, _______, _______, _______, _______, + _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_LPRN, KC_RPRN, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, + _______, _______, _______, _______, _______, _______, M_ARROW, KC_PGUP, KC_PGDN, _______, _______, _______, _______, _______, _______, _______, + _______, _______, MO_CURR, _______, KC_DEL, _______, _______, MO_ADJU, _______, _______ + ), + [_RAISE] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______, _______, _______, + _______, _______, _______, KC_VOLU, _______, _______, KC_LPRN, KC_RPRN, _______, KC_BTN4, KC_UP, KC_BTN5, _______, _______, + _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_LPRN, KC_RPRN, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, _______, + _______, _______, _______, KC_VOLD, _______, _______, M_ARROW, KC_PGUP, KC_PGDN, _______, _______, _______, KC_PGDN, _______, _______, _______, + _______, _______, MO_ADJU, _______, KC_DEL, _______, _______, MO_CURR, _______, _______ + ), + [_ADJUST] = LAYOUT_all( + KC_SLEP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_U, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_L, KC_WH_D, KC_WH_R, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, KC_CLR, _______, _______, _______, _______, _______ + ) +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case M_ARROW: + if (record->event.pressed) { + SEND_STRING("->"); + } + break; + } + return true; +} diff --git a/keyboards/pluckey/keymaps/default/readme.md b/keyboards/pluckey/keymaps/default/readme.md new file mode 100644 index 000000000000..d94d03e5887b --- /dev/null +++ b/keyboards/pluckey/keymaps/default/readme.md @@ -0,0 +1,4 @@ +# Default keymap + +![keymap](https://gist.githubusercontent.com/floookay/ea7313862e407c9b5aaea3d6ed3ce233/raw/0a37fe682f76bbaa55cbc56527e4666bedbf5761/layout.png) +[Keyboard-Layout-Editor](http://www.keyboard-layout-editor.com/#/gists/13c9d00bd0c0c9e3fe3b3d8d98672ef9) [(raw)](https://gist.github.com/floookay/13c9d00bd0c0c9e3fe3b3d8d98672ef9) diff --git a/keyboards/pluckey/keymaps/default_ergo/keymap.c b/keyboards/pluckey/keymaps/default_ergo/keymap.c new file mode 100644 index 000000000000..313b118b8ae0 --- /dev/null +++ b/keyboards/pluckey/keymaps/default_ergo/keymap.c @@ -0,0 +1,77 @@ +/* Copyright 2021 floookay + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _LOWER, + _RAISE, + _ADJUST +}; + +// Defines the keycodes used by our macros in process_record_user +enum custom_keycodes { + M_ARROW +}; + +#define MO_LOW MO(_LOWER) +#define MO_RAIS MO(_RAISE) +#define MO_ADJU MO(_ADJUST) +#define MO_CURR _______ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT_ergo( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LPRN, KC_HOME, KC_END, KC_RPRN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LGUI, KC_LALT, MO_LOW, KC_SPC, KC_BSPC, KC_ENT, KC_SPC, MO_RAIS, KC_RALT, KC_MEH + ), + [_LOWER] = LAYOUT_ergo( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_PSCR, + _______, _______, _______, _______, KC_PIPE, KC_UNDS, KC_LPRN, KC_RPRN, KC_PLUS, KC_PIPE, _______, _______, _______, _______, + _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, + _______, _______, _______, _______, _______, _______, M_ARROW, KC_PGUP, KC_PGDN, _______, _______, _______, _______, _______, _______, _______, + _______, _______, MO_CURR, _______, KC_DEL, _______, _______, MO_ADJU, _______, _______ + ), + [_RAISE] = LAYOUT_ergo( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______, _______, _______, + _______, _______, _______, KC_VOLU, _______, _______, KC_LPRN, KC_RPRN, _______, KC_BTN4, KC_UP, KC_BTN5, _______, _______, + _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, _______, + _______, _______, _______, KC_VOLD, _______, _______, M_ARROW, KC_PGUP, KC_PGDN, _______, _______, _______, KC_PGDN, _______, _______, _______, + _______, _______, MO_ADJU, _______, KC_DEL, _______, _______, MO_CURR, _______, _______ + ), + [_ADJUST] = LAYOUT_ergo( + KC_SLEP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_U, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_WH_L, KC_WH_D, KC_WH_R, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, KC_CLR, _______, _______, _______, _______, _______ + ) +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case M_ARROW: + if (record->event.pressed) { + SEND_STRING("->"); + } + break; + } + return true; +} diff --git a/keyboards/pluckey/pluckey.c b/keyboards/pluckey/pluckey.c new file mode 100644 index 000000000000..d9025726fd59 --- /dev/null +++ b/keyboards/pluckey/pluckey.c @@ -0,0 +1,38 @@ +/* Copyright 2021 floookay + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "pluckey.h" + +#ifdef ENCODER_ENABLE +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + if (index == 0) { + if (clockwise) { + tap_code_delay(KC_VOLU, 10); + } else { + tap_code_delay(KC_VOLD, 10); + } + } + else if (index == 1) { + if (clockwise) { + tap_code(KC_WH_U); + } else { + tap_code(KC_WH_D); + } + } + return true; +} +#endif diff --git a/keyboards/pluckey/pluckey.h b/keyboards/pluckey/pluckey.h new file mode 100644 index 000000000000..d7d6dc4d3af4 --- /dev/null +++ b/keyboards/pluckey/pluckey.h @@ -0,0 +1,81 @@ +/* Copyright 2021 floookay + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +/* + * ┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐ + * ┌─────┬───┤L02│L03│L04│L05│L06│ │R00│R01│R02│R03│R04├───┬─────┐ + * │L00 │L01├───┼───┼───┼───┼───┤ ┌───┐ ┌───┐ ├───┼───┼───┼───┼───┤R05│R06 │ + * ├─────┼───┤L12│L13│L14│L15│L16│ │L16│ │R10│ │R10│R11│R12│R13│R14├───┼─────┤ + * │L10 │L11├───┼───┼───┼───┼───┤ │ │ │ │ ├───┼───┼───┼───┼───┤R15│R16 │ + * ├─────┼───┤L22│L23│L24│L25│L26│ ├───┤ ├───┤ │R20│R21│R22│R23│R24├───┼─────┤ + * │L20 │L21├───┼───┼───┼───┼───┼───┐ │L36├───┐ ┌───┤R30│ ┌───┼───┼───┼───┼───┼───┤R25│R26 │ + * ├─────┼───┤L32│L33│L34│L35│L36│L41│ │ │ │ │ │ │ │R45│R30│R31│R32│R33│R34├───┼─────┤ + * │L30 │L31├───┼───┼───┼┬──┴──┬┴──┬┘ └──┬┘ ┌┘ └┐ └┬──┘ └┬──┴┬──┴──┬┼───┼───┼───┤R35│R36 │ + * └─────┴───┤L42│L43│L44││L45 │L46│ │L46│ │R40│ │R40│R41 ││R42│R43│R44├───┴─────┘ + * └───┴───┴───┘└─────┴───┘ └───┘ └───┘ └───┴─────┘└───┴───┴───┘ + */ + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT_all( \ + 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, l41, r45, r30, r31, r32, r33, r34, r35, r36, \ + l42, l43, l44, l45, l46, r40, r41, r42, r43, r44 \ +){ \ + { 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 }, \ + { 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 }, \ + { XXX, r45, r44, r43, r42, r41, r40 } \ +} + +#define LAYOUT_ergo( \ + 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, l41, r45, r30, r31, r32, r33, r34, r35, r36, \ + l42, l43, l44, l45, l46, r40, r41, r42, r43, r44 \ +){ \ + { l00, l01, l02, l03, l04, l05, l06 }, \ + { l10, l11, l12, l13, l14, l15, l16 }, \ + { l20, l21, l22, l23, l24, l25, XXX }, \ + { l30, l31, l32, l33, l34, l35, l36 }, \ + { XXX, 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, XXX }, \ + { r36, r35, r34, r33, r32, r31, r30 }, \ + { XXX, r45, r44, r43, r42, r41, r40 } \ +} diff --git a/keyboards/pluckey/readme.md b/keyboards/pluckey/readme.md new file mode 100644 index 000000000000..b0a1af99b88a --- /dev/null +++ b/keyboards/pluckey/readme.md @@ -0,0 +1,19 @@ +# Pluckey + +![pluckey](https://gist.githubusercontent.com/floookay/ea7313862e407c9b5aaea3d6ed3ce233/raw/1757078b1adf7ac4d51d74f445107bdb46e013a3/sandwich%2520angle.jpg) + +The pluckey is an ergodox like split keyboard with moderate columnal stagger and a horizontal space key. + +* Keyboard Maintainer: [floookay](https://github.com/floookay) +* Hardware Supported: pluckey pcbs with pro micro controllers +* Hardware Availability: [pcb & case files](https://github.com/floookay/pluckey) + +Make example for this keyboard (after setting up your build environment): + + make pluckey:default + +Flashing example for this keyboard: + + make pluckey:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/pluckey/rules.mk b/keyboards/pluckey/rules.mk new file mode 100644 index 000000000000..a64ecca92e85 --- /dev/null +++ b/keyboards/pluckey/rules.mk @@ -0,0 +1,21 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes +SPLIT_KEYBOARD = yes diff --git a/keyboards/plume/plume65/info.json b/keyboards/plume/plume65/info.json index 2f1a4f01f11b..f41e8eba55c8 100644 --- a/keyboards/plume/plume65/info.json +++ b/keyboards/plume/plume65/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Plume65", "url": "", "maintainer": "evyd13", - "width": 16, - "height": 5, "layouts": { "LAYOUT_iso": { "layout": [ diff --git a/keyboards/plume/plume65/rules.mk b/keyboards/plume/plume65/rules.mk index dded09bb8720..cc519c36c5ea 100644 --- a/keyboards/plume/plume65/rules.mk +++ b/keyboards/plume/plume65/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = qmk-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/plut0nium/0x3e/0x3e.c b/keyboards/plut0nium/0x3e/0x3e.c new file mode 100644 index 000000000000..2f3683d8bc80 --- /dev/null +++ b/keyboards/plut0nium/0x3e/0x3e.c @@ -0,0 +1,18 @@ +/* Copyright 2020 plut0nium + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "0x3e.h" + diff --git a/keyboards/plut0nium/0x3e/0x3e.h b/keyboards/plut0nium/0x3e/0x3e.h new file mode 100644 index 000000000000..e44530b2faa9 --- /dev/null +++ b/keyboards/plut0nium/0x3e/0x3e.h @@ -0,0 +1,36 @@ +/* Copyright 2020 plut0nium + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + k40, k41, k42, k43, k44, k45, k47, k48, k49, k4a, k4b, k4c, \ + k30, k31, k32, k33, k34, k35, k37, k38, k39, k3a, k3b, k3c, \ + k20, k21, k22, k23, k24, k25, k27, k28, k29, k2a, k2b, k2c, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c \ +) \ +{ \ + { k40, k41, k42, k43, k44, k45, KC_NO, k47, k48, k49, k4a, k4b, k4c }, \ + { k30, k31, k32, k33, k34, k35, KC_NO, k37, k38, k39, k3a, k3b, k3c }, \ + { k20, k21, k22, k23, k24, k25, KC_NO, k27, k28, k29, k2a, k2b, k2c }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c }, \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c }, \ +} + + diff --git a/keyboards/plut0nium/0x3e/config.h b/keyboards/plut0nium/0x3e/config.h new file mode 100644 index 000000000000..f61d22228f4a --- /dev/null +++ b/keyboards/plut0nium/0x3e/config.h @@ -0,0 +1,114 @@ +/* +Copyright 2020 plut0nium + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x3E01 +#define DEVICE_VER 0x0001 +#define MANUFACTURER plut0nium +#define PRODUCT 0x3E + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 13 + +/* + * Keyboard Matrix Assignments + */ +#define MATRIX_ROW_PINS { B0, B1, B2, B3, B7 } +#define MATRIX_COL_PINS { F7, F6, F5, F4, F1, F0, D5, D4, D6, D7, B4, B5, B6 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* + * Backlight + */ +#define BACKLIGHT_PIN C6 +#define BACKLIGHT_BREATHING +#define BACKLIGHT_LEVELS 6 + +/* + * RGB Underglow + */ +#define RGB_DI_PIN C7 +#ifdef RGB_DI_PIN + #define RGBLED_NUM 6 + #define RGBLIGHT_HUE_STEP 12 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 150 /* The maximum brightness level */ + #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ + #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 +/*== customize breathing effect ==*/ + /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +// #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 + /*==== use exp() and sin() ====*/ +// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is userful for the Windows task manager shortcut (ctrl+shift+esc). + */ +// #define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +// #define BOOTMAGIC_LITE_ROW 0 +// #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/plut0nium/0x3e/info.json b/keyboards/plut0nium/0x3e/info.json new file mode 100644 index 000000000000..552dc478c209 --- /dev/null +++ b/keyboards/plut0nium/0x3e/info.json @@ -0,0 +1,73 @@ +{ + "keyboard_name": "0x3E", + "url": "", + "maintainer": "plut0nium", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"Esc", "x":0, "y":0, "w":1.5}, + {"label":"1", "x":1.5, "y":0}, + {"label":"2", "x":2.5, "y":0}, + {"label":"3", "x":3.5, "y":0}, + {"label":"4", "x":4.5, "y":0}, + {"label":"5", "x":5.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":"Back Space", "x":12.5, "y":0, "w":1.5}, + {"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":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, "w":1.5}, + {"label":"Fn", "x":0, "y":2, "w":1.5}, + {"label":"A", "x":1.5, "y":2}, + {"label":"S", "x":2.5, "y":2}, + {"label":"D", "x":3.5, "y":2}, + {"label":"F", "x":4.5, "y":2}, + {"label":"G", "x":5.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":"Return", "x":12.5, "y":2, "w":1.5}, + {"label":"Shift", "x":0, "y":3, "w":1.5}, + {"label":"Z", "x":1.5, "y":3}, + {"label":"X", "x":2.5, "y":3}, + {"label":"C", "x":3.5, "y":3}, + {"label":"V", "x":4.5, "y":3}, + {"label":"B", "x":5.5, "y":3}, + {"label":"PgUp", "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.5}, + {"label":"Ctrl", "x":0, "y":4, "w":1.5}, + {"label":"Win", "x":1.5, "y":4}, + {"label":"Menu", "x":2.5, "y":4}, + {"label":"Alt", "x":3.5, "y":4}, + {"label":"Space", "x":4.5, "y":4}, + {"label":"Space", "x":5.5, "y":4}, + {"label":"PgDn", "x":6.5, "y":4}, + {"label":"Space", "x":7.5, "y":4}, + {"label":"Space", "x":8.5, "y":4}, + {"label":"AltGr", "x":9.5, "y":4}, + {"label":"[", "x":10.5, "y":4}, + {"label":"]", "x":11.5, "y":4}, + {"label":"Ctrl", "x":12.5, "y":4, "w":1.5} + ] + } + } +} diff --git a/keyboards/plut0nium/0x3e/keymaps/default/keymap.c b/keyboards/plut0nium/0x3e/keymaps/default/keymap.c new file mode 100644 index 000000000000..bca46e9910c8 --- /dev/null +++ b/keyboards/plut0nium/0x3e/keymaps/default/keymap.c @@ -0,0 +1,158 @@ +/* Copyright 2020 plut0nium + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _QWERTY, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_QWERTY] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + MO(_FN), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_PGUP, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_MENU, KC_LALT, KC_SPC, KC_SPC, KC_PGDN, KC_SPC, KC_SPC, KC_RALT, KC_LBRC, KC_RBRC, KC_RCTL + ), + [_FN] = LAYOUT( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL, + RESET, _______, KC_UP, _______, _______, _______, _______, _______, _______, KC_F11, KC_F12, _______, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, _______, KC_END, _______, _______, BL_INC, KC_MPLY, KC_VOLU, KC_MUTE, + _______, RGB_HUD, RGB_SAD, RGB_VAD, RGB_TOG, RGB_TOG, KC_HOME, BL_TOGG, BL_TOGG, BL_DEC, KC_MPRV, KC_VOLD, KC_MNXT + ) +}; + +#ifdef OLED_ENABLE +static void render_logo(void) { + static const char PROGMEM my_logo[] = { + // '0x3E_logo_32x16', 32x16px + 0xff, 0x0f, 0x07, 0xf3, 0x73, 0xb3, 0x07, 0x0f, 0xff, 0x3f, 0x3f, 0xff, 0xff, 0x3f, 0x3f, 0xff, + 0xe7, 0xe3, 0x33, 0x33, 0x03, 0x87, 0xff, 0xff, 0x03, 0x03, 0x33, 0x33, 0x33, 0xf3, 0xff, 0xff, + 0x7f, 0x78, 0x70, 0x66, 0x67, 0x67, 0x70, 0x78, 0x7f, 0x67, 0x62, 0x78, 0x78, 0x62, 0x67, 0x7f, + 0x73, 0x63, 0x67, 0x67, 0x60, 0x70, 0x7f, 0x7f, 0x60, 0x60, 0x67, 0x67, 0x67, 0x67, 0x7f, 0x7f + }; + oled_write_raw_P(my_logo, sizeof(my_logo)); +} + +#ifdef RGBLIGHT_ENABLE + +void render_rgb_status(void) { + oled_write_ln_P(PSTR("RGB"), false); + if (!rgblight_is_enabled()) { + oled_write_P(PSTR(" off\n\n\n"), false); + } + else { + static char string[4] = {0}; + oled_write_P(PSTR("M:"), false); + uint8_t n = rgblight_get_mode(); + string[3] = '\0'; + string[2] = '0' + n % 10; + string[1] = ( n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' '; + string[0] = n / 10 ? '0' + n / 10 : ' '; + oled_write(string, false); + + oled_write_P(PSTR("H:"), false); + n = rgblight_get_hue(); + string[3] = '\0'; + string[2] = '0' + n % 10; + string[1] = ( n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' '; + string[0] = n / 10 ? '0' + n / 10 : ' '; + oled_write(string, false); + + oled_write_P(PSTR("S:"), false); + n = rgblight_get_sat(); + string[3] = '\0'; + string[2] = '0' + n % 10; + string[1] = ( n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' '; + string[0] = n / 10 ? '0' + n / 10 : ' '; + oled_write(string, false); + + oled_write_P(PSTR("V:"), false); + n = rgblight_get_val()/RGBLIGHT_VAL_STEP; + string[3] = '\0'; + string[2] = '0' + n % 10; + string[1] = ( n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' '; + string[0] = n / 10 ? '0' + n / 10 : ' '; + oled_write(string, false); + } +} +#endif + + +void render_backlight_status(void) { + oled_write_ln_P(PSTR("BKL"), false); + if (!is_backlight_enabled()) { + oled_write_P(PSTR(" off"), false); + } + else { + char string[4]; + oled_write_P(PSTR("L:"), false); + uint8_t n = get_backlight_level(); + string[3] = '\0'; + string[2] = '0' + n % 10; + string[1] = ( n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' '; + string[0] = n / 10 ? '0' + n / 10 : ' '; + oled_write(string, false); + } +} + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + return OLED_ROTATION_270; // flips the display 180 degrees if offhand +} + +bool oled_task_user(void) { + render_logo(); + oled_set_cursor(0,2); // default logo is 16px high (2 lines) + + // Host Keyboard Layer Status + oled_write_P(PSTR("Layer"), false); + + switch (get_highest_layer(layer_state)) { + case _QWERTY: + oled_write_P(PSTR("QWTY\n"), false); + break; + case _FN: + oled_write_P(PSTR("FN\n"), false); + break; + default: + // Or use the write_ln shortcut over adding '\n' to the end of your string + oled_write_ln_P(PSTR("Undf"), false); + } + + // Host Keyboard LED Status + // uint8_t led_usb_state = host_keyboard_leds(); + // oled_write_P(PSTR("-----"), false); + // oled_write_P(PSTR("Stats"), false); + // oled_write_P(led_usb_state & (1<", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.25}, {"label":"Shift", "x":15.25, "y":3, "w":1.75}, {"label":"Fn", "x":17, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"Win", "x":12.5, "y":4}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}, {"label":"Caps", "x":0, "y":5.25, "w":1.25}, {"label":"Shift", "x":0, "y":6.25, "w":1.25}, {"x":1.25, "y":6.25}] + "LAYOUT_60_ansi_tsangan": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2@", "x":2, "y":0}, + {"label":"3#", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":7, "y":0}, + {"label":"8*", "x":8, "y":0}, + {"label":"9(", "x":9, "y":0}, + {"label":"0)", "x":10, "y":0}, + {"label":"-_", "x":11, "y":0}, + {"label":"=+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + + {"label":"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":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",<", "x":9.25, "y":3}, + {"label":".>", "x":10.25, "y":3}, + {"label":"/?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":2.75}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.5}, + {"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":"Alt", "x":11, "y":4, "w":1.5}, + {"label":"Win", "x":12.5, "y":4}, + {"label":"Ctrl", "x":13.5, "y":4, "w":1.5} + ] + }, + "LAYOUT_60_iso_tsangan": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2\"", "x":2, "y":0}, + {"label":"3\u00a3", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":7, "y":0}, + {"label":"8*", "x":8, "y":0}, + {"label":"9(", "x":9, "y":0}, + {"label":"0)", "x":10, "y":0}, + {"label":"-_", "x":11, "y":0}, + {"label":"=+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + + {"label":"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":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";:", "x":10.75, "y":2}, + {"label":"'@", "x":11.75, "y":2}, + {"label":"#~", "x":12.75, "y":2}, + {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, + + {"label":"Shift", "x":0, "y":3, "w":1.25}, + {"label":"\\|", "x":1.25, "y":3}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",<", "x":9.25, "y":3}, + {"label":".>", "x":10.25, "y":3}, + {"label":"/?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":2.75}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.5}, + {"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":"Alt", "x":11, "y":4, "w":1.5}, + {"label":"Win", "x":12.5, "y":4}, + {"label":"Ctrl", "x":13.5, "y":4, "w":1.5} + ] + }, + "LAYOUT_all": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2@", "x":2, "y":0}, + {"label":"3#", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":7, "y":0}, + {"label":"8*", "x":8, "y":0}, + {"label":"9(", "x":9, "y":0}, + {"label":"0)", "x":10, "y":0}, + {"label":"-_", "x":11, "y":0}, + {"label":"=+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0}, + {"label":"Backspace", "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":"#~", "x":12.75, "y":2}, + {"label":"Enter", "x":13.75, "y":2, "w":1.25}, + + {"label":"Shift", "x":0, "y":3, "w":1.25}, + {"label":"\\|", "x":1.25, "y":3}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",<", "x":9.25, "y":3}, + {"label":".>", "x":10.25, "y":3}, + {"label":"/?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"Fn", "x":14, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.5}, + {"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":"Alt", "x":11, "y":4, "w":1.5}, + {"label":"Win", "x":12.5, "y":4}, + {"label":"Ctrl", "x":13.5, "y":4, "w":1.5} + ] } } -} \ No newline at end of file +} diff --git a/keyboards/plx/keymaps/default/keymap.c b/keyboards/plx/keymaps/default/keymap.c index f454d3409657..31273405f83d 100644 --- a/keyboards/plx/keymaps/default/keymap.c +++ b/keyboards/plx/keymaps/default/keymap.c @@ -1,4 +1,4 @@ -/* Copyright 2020 Swiftrax and Basekeys.com +/* Copyright 2020 Peac Design and Basekeys.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 @@ -20,30 +20,31 @@ enum layer_names { _BASE, _FN, - _MEDIA }; + _MEDIA +}; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_BASE] = LAYOUT( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, - KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_PGUP, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL - ), + [_BASE] = LAYOUT_60_ansi_tsangan( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL + ), - [_FN] = LAYOUT( - 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, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______ - ), + [_FN] = LAYOUT_60_ansi_tsangan( + 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, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ), - [_MEDIA] = LAYOUT( - 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, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______ - ) + [_MEDIA] = LAYOUT_60_ansi_tsangan( + 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, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ) }; diff --git a/keyboards/plx/keymaps/default_all/keymap.c b/keyboards/plx/keymaps/default_all/keymap.c new file mode 100644 index 000000000000..cf460e52340a --- /dev/null +++ b/keyboards/plx/keymaps/default_all/keymap.c @@ -0,0 +1,50 @@ +/* Copyright 2020 Peac Design and Basekeys.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 . + */ + +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN, + _MEDIA +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_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_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL + ), + + [_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, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ), + + [_MEDIA] = 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, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/plx/keymaps/via/config.h b/keyboards/plx/keymaps/via/config.h new file mode 100644 index 000000000000..8effe543a07b --- /dev/null +++ b/keyboards/plx/keymaps/via/config.h @@ -0,0 +1,19 @@ +/* Copyright 2020 Peac Design and Basekeys.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 . + */ + +#pragma once + +#define DYNAMIC_KEYMAP_LAYER_COUNT 3 diff --git a/keyboards/plx/keymaps/via/keymap.c b/keyboards/plx/keymaps/via/keymap.c new file mode 100644 index 000000000000..cf460e52340a --- /dev/null +++ b/keyboards/plx/keymaps/via/keymap.c @@ -0,0 +1,50 @@ +/* Copyright 2020 Peac Design and Basekeys.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 . + */ + +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN, + _MEDIA +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_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_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL + ), + + [_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, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ), + + [_MEDIA] = 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, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/plx/keymaps/via/rules.mk b/keyboards/plx/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/plx/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/plx/plx.h b/keyboards/plx/plx.h index eb3829042d96..22d7bd021388 100644 --- a/keyboards/plx/plx.h +++ b/keyboards/plx/plx.h @@ -17,7 +17,21 @@ #include "quantum.h" -#define XXX KC_NO//readabilty +#define XXX KC_NO // readability + +/* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───────┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │0E │ │0D │ 2u Backspace + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ └─┬─────┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │ │ │ + * 2.25u ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ┌──┴┐2D │ ISO Enter + * LShift │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2D │ │2C │ │ + * ┌────────┐ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌─┴───┴────┤ + * │30 │ │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │ │3C │ 2.75u RShift + * └────────┘ ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ └──────────┘ + * │40 │41 │42 │46 │4B │4C │4D │ + * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ + */ /* This a shortcut to help you visually see your layout. * @@ -27,7 +41,37 @@ * The second converts the arguments into a two-dimensional array which * represents the switch matrix. */ -#define LAYOUT( \ +#define LAYOUT_60_ansi_tsangan( \ + 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, 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}, \ + { 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, k3C, XXX}, \ + { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, XXX, k4B, k4C, k4D} \ +} + +#define LAYOUT_60_iso_tsangan( \ + 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, k3C, \ + k40, k41, k42, k46, 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, 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, k3C, XXX}, \ + { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, XXX, k4B, k4C, k4D} \ +} + +#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, \ diff --git a/keyboards/plx/rules.mk b/keyboards/plx/rules.mk index 60a579e02e19..410c618af1e9 100644 --- a/keyboards/plx/rules.mk +++ b/keyboards/plx/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 = 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 diff --git a/keyboards/pohjolaworks/louhi/info.json b/keyboards/pohjolaworks/louhi/info.json index 0772f6534423..ce9ef6b85ea2 100644 --- a/keyboards/pohjolaworks/louhi/info.json +++ b/keyboards/pohjolaworks/louhi/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Louhi", "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/pohjolaworks/louhi", "maintainer": "ErkHal", - "width": 13, - "height": 4, "layouts": { "LAYOUT_7u_space": { "layout": [{"label":"k00", "x":0, "y":0}, {"label":"k10", "x":1, "y":0}, {"label":"k01", "x":2, "y":0}, {"label":"k11", "x":3, "y":0}, {"label":"k02", "x":4, "y":0}, {"label":"k12", "x":5, "y":0}, {"label":"k03", "x":6, "y":0}, {"label":"k13", "x":7, "y":0}, {"label":"k04", "x":8, "y":0}, {"label":"k14", "x":9, "y":0}, {"label":"k05", "x":10, "y":0}, {"label":"k15", "x":11, "y":0}, {"label":"k06", "x":12, "y":0}, {"label":"k20", "x":0, "y":1}, {"label":"k30", "x":1, "y":1}, {"label":"k21", "x":2, "y":1}, {"label":"k31", "x":3, "y":1}, {"label":"k22", "x":4, "y":1}, {"label":"k32", "x":5, "y":1}, {"label":"k23", "x":6, "y":1}, {"label":"k33", "x":7, "y":1}, {"label":"k24", "x":8, "y":1}, {"label":"k34", "x":9, "y":1}, {"label":"k25", "x":10, "y":1}, {"label":"k35", "x":11, "y":1}, {"label":"k26", "x":12, "y":1}, {"label":"k40", "x":0, "y":2}, {"label":"k50", "x":1, "y":2}, {"label":"k41", "x":2, "y":2}, {"label":"k51", "x":3, "y":2}, {"label":"k42", "x":4, "y":2}, {"label":"k52", "x":5, "y":2}, {"label":"k43", "x":6, "y":2}, {"label":"k53", "x":7, "y":2}, {"label":"k44", "x":8, "y":2}, {"label":"k54", "x":9, "y":2}, {"label":"k45", "x":10, "y":2}, {"label":"k55", "x":11, "y":2}, {"label":"k46", "x":12, "y":2}, {"label":"k60", "x":0, "y":3}, {"label":"k70", "x":1, "y":3}, {"label":"k61", "x":2, "y":3}, {"label":"k63", "x":3, "y":3, "w":7}, {"label":"k65", "x":10, "y":3}, {"label":"k75", "x":11, "y":3}, {"label":"k66", "x":12, "y":3}] diff --git a/keyboards/pohjolaworks/louhi/rules.mk b/keyboards/pohjolaworks/louhi/rules.mk index 8b8bacdcf5e8..09fd3f88b7ff 100644 --- a/keyboards/pohjolaworks/louhi/rules.mk +++ b/keyboards/pohjolaworks/louhi/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = yes diff --git a/keyboards/poker87c/config.h b/keyboards/poker87c/config.h new file mode 100644 index 000000000000..e01df80ec7ad --- /dev/null +++ b/keyboards/poker87c/config.h @@ -0,0 +1,75 @@ +/* Copyright 2021 water + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x6D66 // "mf" - mfkiiyd +#define PRODUCT_ID 0x087C // "87C" +#define DEVICE_VER 0x0001 +#define MANUFACTURER mfkiiyd +#define PRODUCT POKER-87C Hotswap + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 15 + +/* + * 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 { E6, B7, D4, F0, D6, D7 } +#define MATRIX_COL_PINS { D1, D0, F7, F6, F5, D5, D3, D2, C7, C6, B5, F4, F1, B4, B0 } + +#define DIODE_DIRECTION COL2ROW + +#define BACKLIGHT_PIN B6 +// #define BACKLIGHT_BREATHING +#define BACKLIGHT_LEVELS 3 + +#define RGB_DI_PIN E2 +#ifdef RGB_DI_PIN + #define RGBLED_NUM 95 + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 180 /* The maximum brightness level */ + #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ + #define RGBLIGHT_ANIMATIONS +// /*== or choose animations ==*/ +// #define RGBLIGHT_EFFECT_BREATHING +// #define RGBLIGHT_EFFECT_RAINBOW_MOOD +// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL +// #define RGBLIGHT_EFFECT_SNAKE +// #define RGBLIGHT_EFFECT_KNIGHT +// #define RGBLIGHT_EFFECT_CHRISTMAS +// #define RGBLIGHT_EFFECT_STATIC_GRADIENT +// #define RGBLIGHT_EFFECT_RGB_TEST +// #define RGBLIGHT_EFFECT_ALTERNATING +#endif + +#define LED_NUM_LOCK_PIN B1 +#define LED_CAPS_LOCK_PIN B3 +#define LED_SCROLL_LOCK_PIN B2 diff --git a/keyboards/poker87c/info.json b/keyboards/poker87c/info.json new file mode 100644 index 000000000000..bf7b42e47083 --- /dev/null +++ b/keyboards/poker87c/info.json @@ -0,0 +1,205 @@ +{ + "keyboard_name": "POKER-87C", + "url": "", + "maintainer": "mfkiiyd", + "layout_aliases": { + "LAYOUT": "LAYOUT_all" + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"K00 (E6,D1)", "x":0, "y":0}, + {"label":"K01 (E6,D0)", "x":2, "y":0}, + {"label":"K02 (E6,F7)", "x":3, "y":0}, + {"label":"K03 (E6,F6)", "x":4, "y":0}, + {"label":"K04 (E6,F5)", "x":5, "y":0}, + {"label":"K05 (E6,D5)", "x":6.5, "y":0}, + {"label":"K06 (E6,D3)", "x":7.5, "y":0}, + {"label":"K07 (E6,D2)", "x":8.5, "y":0}, + {"label":"K08 (E6,C7)", "x":9.5, "y":0}, + {"label":"K09 (E6,C6)", "x":11, "y":0}, + {"label":"K0A (E6,B5)", "x":12, "y":0}, + {"label":"K0B (E6,F4)", "x":13, "y":0}, + {"label":"K0C (E6,F1)", "x":14, "y":0}, + {"label":"K0D (E6,B4)", "x":15.25, "y":0}, + {"label":"K0E (E6,B0)", "x":16.25, "y":0}, + {"label":"K3D (F0,B4)", "x":17.25, "y":0}, + + {"label":"K10 (B7,D1)", "x":0, "y":1.5}, + {"label":"K11 (B7,D0)", "x":1, "y":1.5}, + {"label":"K12 (B7,F7)", "x":2, "y":1.5}, + {"label":"K13 (B7,F6)", "x":3, "y":1.5}, + {"label":"K14 (B7,F5)", "x":4, "y":1.5}, + {"label":"K15 (B7,D5)", "x":5, "y":1.5}, + {"label":"K16 (B7,D3)", "x":6, "y":1.5}, + {"label":"K17 (B7,D2)", "x":7, "y":1.5}, + {"label":"K18 (B7,C7)", "x":8, "y":1.5}, + {"label":"K19 (B7,C6)", "x":9, "y":1.5}, + {"label":"K1A (B7,B5)", "x":10, "y":1.5}, + {"label":"K1B (B7,F4)", "x":11, "y":1.5}, + {"label":"K1C (B7,F1)", "x":12, "y":1.5}, + {"label":"K1D (B7,B4)", "x":13, "y":1.5}, + {"label":"K1E (B7,B0)", "x":14, "y":1.5}, + {"label":"K5B (D7,F4)", "x":15.25, "y":1.5}, + {"label":"K5C (D7,F1)", "x":16.25, "y":1.5}, + {"label":"K3E (F0,B0)", "x":17.25, "y":1.5}, + + {"label":"K20 (D4,D1)", "x":0, "y":2.5, "w":1.5}, + {"label":"K21 (D4,D0)", "x":1.5, "y":2.5}, + {"label":"K22 (D4,F7)", "x":2.5, "y":2.5}, + {"label":"K23 (D4,F6)", "x":3.5, "y":2.5}, + {"label":"K24 (D4,F5)", "x":4.5, "y":2.5}, + {"label":"K25 (D4,D5)", "x":5.5, "y":2.5}, + {"label":"K26 (D4,D3)", "x":6.5, "y":2.5}, + {"label":"K27 (D4,D2)", "x":7.5, "y":2.5}, + {"label":"K28 (D4,C7)", "x":8.5, "y":2.5}, + {"label":"K29 (D4,C6)", "x":9.5, "y":2.5}, + {"label":"K2A (D4,B5)", "x":10.5, "y":2.5}, + {"label":"K2B (D4,F4)", "x":11.5, "y":2.5}, + {"label":"K2C (D4,F1)", "x":12.5, "y":2.5}, + {"label":"K2D (D4,B4)", "x":13.5, "y":2.5, "w":1.5}, + {"label":"K2E (D4,B0)", "x":15.25, "y":2.5}, + {"label":"K5D (D7,B4)", "x":16.25, "y":2.5}, + {"label":"K5E (D7,B0)", "x":17.25, "y":2.5}, + + {"label":"K30 (F0,D1)", "x":0, "y":3.5, "w":1.75}, + {"label":"K31 (F0,D0)", "x":1.75, "y":3.5}, + {"label":"K32 (F0,F7)", "x":2.75, "y":3.5}, + {"label":"K33 (F0,F6)", "x":3.75, "y":3.5}, + {"label":"K34 (F0,F5)", "x":4.75, "y":3.5}, + {"label":"K35 (F0,D5)", "x":5.75, "y":3.5}, + {"label":"K36 (F0,D3)", "x":6.75, "y":3.5}, + {"label":"K37 (F0,D2)", "x":7.75, "y":3.5}, + {"label":"K38 (F0,C7)", "x":8.75, "y":3.5}, + {"label":"K39 (F0,C6)", "x":9.75, "y":3.5}, + {"label":"K3A (F0,B5)", "x":10.75, "y":3.5}, + {"label":"K3B (F0,F4)", "x":11.75, "y":3.5}, + {"label":"K3C (F0,F1)", "x":12.75, "y":3.5, "w":2.25}, + + {"label":"K40 (D6,D1)", "x":0, "y":4.5, "w":1.25}, + {"label":"K41 (D6,D0)", "x":1.25, "y":4.5}, + {"label":"K42 (D6,F7)", "x":2.25, "y":4.5}, + {"label":"K43 (D6,F6)", "x":3.25, "y":4.5}, + {"label":"K44 (D6,F5)", "x":4.25, "y":4.5}, + {"label":"K45 (D6,D5)", "x":5.25, "y":4.5}, + {"label":"K46 (D6,D3)", "x":6.25, "y":4.5}, + {"label":"K47 (D6,D2)", "x":7.25, "y":4.5}, + {"label":"K48 (D6,C7)", "x":8.25, "y":4.5}, + {"label":"K49 (D6,C6)", "x":9.25, "y":4.5}, + {"label":"K4A (D6,B5)", "x":10.25, "y":4.5}, + {"label":"K4B (D6,F4)", "x":11.25, "y":4.5}, + {"label":"K4C (D6,F1)", "x":12.25, "y":4.5, "w":1.75}, + {"label":"K4D (D6,B4)", "x":14, "y":4.5}, + {"label":"K4E (D6,B0)", "x":16.25, "y":4.5}, + + {"label":"K50 (D7,D1)", "x":0, "y":5.5, "w":1.25}, + {"label":"K51 (D7,D0)", "x":1.25, "y":5.5, "w":1.25}, + {"label":"K52 (D7,F7)", "x":2.5, "y":5.5, "w":1.25}, + {"label":"K53 (D7,F6)", "x":3.75, "y":5.5, "w":6.25}, + {"label":"K54 (D7,F5)", "x":10, "y":5.5, "w":1.25}, + {"label":"K55 (D7,D5)", "x":11.25, "y":5.5, "w":1.25}, + {"label":"K56 (D7,D3)", "x":12.5, "y":5.5, "w":1.25}, + {"label":"K57 (D7,D2)", "x":13.75, "y":5.5, "w":1.25}, + {"label":"K58 (D7,C7)", "x":15.25, "y":5.5}, + {"label":"K59 (D7,C6)", "x":16.25, "y":5.5}, + {"label":"K5A (D7,B5)", "x":17.25, "y":5.5} + ] + }, + "LAYOUT_tkl_ansi": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6.5, "y": 0}, + {"x": 7.5, "y": 0}, + {"x": 8.5, "y": 0}, + {"x": 9.5, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + {"x": 15.25, "y": 0}, + {"x": 16.25, "y": 0}, + {"x": 17.25, "y": 0}, + + {"x": 0, "y": 1.5}, + {"x": 1, "y": 1.5}, + {"x": 2, "y": 1.5}, + {"x": 3, "y": 1.5}, + {"x": 4, "y": 1.5}, + {"x": 5, "y": 1.5}, + {"x": 6, "y": 1.5}, + {"x": 7, "y": 1.5}, + {"x": 8, "y": 1.5}, + {"x": 9, "y": 1.5}, + {"x": 10, "y": 1.5}, + {"x": 11, "y": 1.5}, + {"x": 12, "y": 1.5}, + {"x": 13, "y": 1.5, "w": 2}, + {"x": 15.25, "y": 1.5}, + {"x": 16.25, "y": 1.5}, + {"x": 17.25, "y": 1.5}, + + {"x": 0, "y": 2.5, "w": 1.5}, + {"x": 1.5, "y": 2.5}, + {"x": 2.5, "y": 2.5}, + {"x": 3.5, "y": 2.5}, + {"x": 4.5, "y": 2.5}, + {"x": 5.5, "y": 2.5}, + {"x": 6.5, "y": 2.5}, + {"x": 7.5, "y": 2.5}, + {"x": 8.5, "y": 2.5}, + {"x": 9.5, "y": 2.5}, + {"x": 10.5, "y": 2.5}, + {"x": 11.5, "y": 2.5}, + {"x": 12.5, "y": 2.5}, + {"x": 13.5, "y": 2.5, "w": 1.5}, + {"x": 15.25, "y": 2.5}, + {"x": 16.25, "y": 2.5}, + {"x": 17.25, "y": 2.5}, + + {"x": 0, "y": 3.5, "w": 1.75}, + {"x": 1.75, "y": 3.5}, + {"x": 2.75, "y": 3.5}, + {"x": 3.75, "y": 3.5}, + {"x": 4.75, "y": 3.5}, + {"x": 5.75, "y": 3.5}, + {"x": 6.75, "y": 3.5}, + {"x": 7.75, "y": 3.5}, + {"x": 8.75, "y": 3.5}, + {"x": 9.75, "y": 3.5}, + {"x": 10.75, "y": 3.5}, + {"x": 11.75, "y": 3.5}, + {"x": 12.75, "y": 3.5, "w": 2.25}, + + {"x": 0, "y": 4.5, "w": 2.25}, + {"x": 2.25, "y": 4.5}, + {"x": 3.25, "y": 4.5}, + {"x": 4.25, "y": 4.5}, + {"x": 5.25, "y": 4.5}, + {"x": 6.25, "y": 4.5}, + {"x": 7.25, "y": 4.5}, + {"x": 8.25, "y": 4.5}, + {"x": 9.25, "y": 4.5}, + {"x": 10.25, "y": 4.5}, + {"x": 11.25, "y": 4.5}, + {"x": 12.25, "y": 4.5, "w": 2.75}, + {"x": 16.25, "y": 4.5}, + + {"x": 0, "y": 5.5, "w": 1.25}, + {"x": 1.25, "y": 5.5, "w": 1.25}, + {"x": 2.5, "y": 5.5, "w": 1.25}, + {"x": 3.75, "y": 5.5, "w": 6.25}, + {"x": 10, "y": 5.5, "w": 1.25}, + {"x": 11.25, "y": 5.5, "w": 1.25}, + {"x": 12.5, "y": 5.5, "w": 1.25}, + {"x": 13.75, "y": 5.5, "w": 1.25}, + {"x": 15.25, "y": 5.5}, + {"x": 16.25, "y": 5.5}, + {"x": 17.25, "y": 5.5} + ] + } + } +} diff --git a/keyboards/poker87c/keymaps/default/keymap.c b/keyboards/poker87c/keymaps/default/keymap.c new file mode 100644 index 000000000000..4be088c0f684 --- /dev/null +++ b/keyboards/poker87c/keymaps/default/keymap.c @@ -0,0 +1,37 @@ +/* Copyright 2021 water + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, _______, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, _______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, _______, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_all( + _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MSTP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, RESET, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______, KC_VOLU, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT + ), + +}; diff --git a/keyboards/poker87c/keymaps/via/keymap.c b/keyboards/poker87c/keymaps/via/keymap.c new file mode 100644 index 000000000000..59c5b359b396 --- /dev/null +++ b/keyboards/poker87c/keymaps/via/keymap.c @@ -0,0 +1,52 @@ +/* Copyright 2021 water + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, _______, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, _______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, _______, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_all( + _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MSTP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, RESET, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______, KC_VOLU, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT + ), + [2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/poker87c/keymaps/via/rules.mk b/keyboards/poker87c/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/poker87c/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/poker87c/poker87c.c b/keyboards/poker87c/poker87c.c new file mode 100644 index 000000000000..6009ce112d89 --- /dev/null +++ b/keyboards/poker87c/poker87c.c @@ -0,0 +1,19 @@ +/* Copyright 2021 water + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "poker87c.h" + + diff --git a/keyboards/poker87c/poker87c.h b/keyboards/poker87c/poker87c.h new file mode 100644 index 000000000000..c8cdccf4424b --- /dev/null +++ b/keyboards/poker87c/poker87c.h @@ -0,0 +1,53 @@ +/* Copyright 2021 water + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +#define LAYOUT_all( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K3D, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K5B, K5C, K3E, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K5D, K5E, \ + 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, K4D, K4E, \ + K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A \ +) { \ + { 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 }, \ + { K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B, K5C, K5D, K5E }, \ +} + +#define LAYOUT_tkl_ansi( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K3D, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, K5B, K5C, K3E, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K5D, K5E, \ + 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, K4E, \ + K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A \ +) { \ + { 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, 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, XXX, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, XXX, K4E }, \ + { K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B, K5C, K5D, K5E }, \ +} diff --git a/keyboards/poker87c/readme.md b/keyboards/poker87c/readme.md new file mode 100644 index 000000000000..e464a03df3a9 --- /dev/null +++ b/keyboards/poker87c/readme.md @@ -0,0 +1,13 @@ +# poker87c + +An in-switch RGB LED keyboard with RGB underglow. + +* Keyboard Maintainer: [water](https://github.com/mfkiiyd) +* Hardware Supported: poker87c +* Hardware Availability: ZA03C1U2-87KEY + +Make example for this keyboard (after setting up your build environment): + + make poker87c: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/poker87c/rules.mk b/keyboards/poker87c/rules.mk new file mode 100644 index 000000000000..3f7e0e385051 --- /dev/null +++ b/keyboards/poker87c/rules.mk @@ -0,0 +1,21 @@ +# 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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +LAYOUTS = tkl_ansi diff --git a/keyboards/poker87d/config.h b/keyboards/poker87d/config.h new file mode 100644 index 000000000000..7cf87340e4e1 --- /dev/null +++ b/keyboards/poker87d/config.h @@ -0,0 +1,75 @@ +/* Copyright 2021 water + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x6D66 // "mf" - mfkiiyd +#define PRODUCT_ID 0x087D // "87D" +#define DEVICE_VER 0x0001 +#define MANUFACTURER mfkiiyd +#define PRODUCT POKER-87D Hotswap + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 15 + +/* + * 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 { E6, B7, D4, F0, D6, D7 } +#define MATRIX_COL_PINS { D1, D0, F7, F6, F5, D5, D3, D2, C7, C6, B5, F4, F1, B4, B0 } + +#define DIODE_DIRECTION COL2ROW + +#define BACKLIGHT_PIN B6 +// #define BACKLIGHT_BREATHING +#define BACKLIGHT_LEVELS 3 + +#define RGB_DI_PIN E2 +#ifdef RGB_DI_PIN + #define RGBLED_NUM 125 + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 180 /* The maximum brightness level */ + #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ + #define RGBLIGHT_ANIMATIONS +// /*== or choose animations ==*/ +// #define RGBLIGHT_EFFECT_BREATHING +// #define RGBLIGHT_EFFECT_RAINBOW_MOOD +// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL +// #define RGBLIGHT_EFFECT_SNAKE +// #define RGBLIGHT_EFFECT_KNIGHT +// #define RGBLIGHT_EFFECT_CHRISTMAS +// #define RGBLIGHT_EFFECT_STATIC_GRADIENT +// #define RGBLIGHT_EFFECT_RGB_TEST +// #define RGBLIGHT_EFFECT_ALTERNATING +#endif + +#define LED_NUM_LOCK_PIN B1 +#define LED_CAPS_LOCK_PIN B3 +#define LED_SCROLL_LOCK_PIN B2 diff --git a/keyboards/poker87d/info.json b/keyboards/poker87d/info.json new file mode 100644 index 000000000000..a0b78e5c8a7b --- /dev/null +++ b/keyboards/poker87d/info.json @@ -0,0 +1,206 @@ +{ + "keyboard_name": "POKER-87D", + "url": "", + "maintainer": "mfkiiyd", + "layout_aliases": { + "LAYOUT": "LAYOUT_all" + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"K00 (E6,D1)", "x":0, "y":0}, + {"label":"K01 (E6,D0)", "x":2, "y":0}, + {"label":"K02 (E6,F7)", "x":3, "y":0}, + {"label":"K03 (E6,F6)", "x":4, "y":0}, + {"label":"K04 (E6,F5)", "x":5, "y":0}, + {"label":"K05 (E6,D5)", "x":6.5, "y":0}, + {"label":"K06 (E6,D3)", "x":7.5, "y":0}, + {"label":"K07 (E6,D2)", "x":8.5, "y":0}, + {"label":"K08 (E6,C7)", "x":9.5, "y":0}, + {"label":"K09 (E6,C6)", "x":11, "y":0}, + {"label":"K0A (E6,B5)", "x":12, "y":0}, + {"label":"K0B (E6,F4)", "x":13, "y":0}, + {"label":"K0C (E6,F1)", "x":14, "y":0}, + {"label":"K0D (E6,B4)", "x":15.25, "y":0}, + {"label":"K0E (E6,B0)", "x":16.25, "y":0}, + {"label":"K3D (F0,B4)", "x":17.25, "y":0}, + + {"label":"K10 (B7,D1)", "x":0, "y":1.5}, + {"label":"K11 (B7,D0)", "x":1, "y":1.5}, + {"label":"K12 (B7,F7)", "x":2, "y":1.5}, + {"label":"K13 (B7,F6)", "x":3, "y":1.5}, + {"label":"K14 (B7,F5)", "x":4, "y":1.5}, + {"label":"K15 (B7,D5)", "x":5, "y":1.5}, + {"label":"K16 (B7,D3)", "x":6, "y":1.5}, + {"label":"K17 (B7,D2)", "x":7, "y":1.5}, + {"label":"K18 (B7,C7)", "x":8, "y":1.5}, + {"label":"K19 (B7,C6)", "x":9, "y":1.5}, + {"label":"K1A (B7,B5)", "x":10, "y":1.5}, + {"label":"K1B (B7,F4)", "x":11, "y":1.5}, + {"label":"K1C (B7,F1)", "x":12, "y":1.5}, + {"label":"K1D (B7,B4)", "x":13, "y":1.5}, + {"label":"K1E (B7,B0)", "x":14, "y":1.5}, + {"label":"K5B (D7,F4)", "x":15.25, "y":1.5}, + {"label":"K5C (D7,F1)", "x":16.25, "y":1.5}, + {"label":"K3E (F0,B0)", "x":17.25, "y":1.5}, + + {"label":"K20 (D4,D1)", "x":0, "y":2.5, "w":1.5}, + {"label":"K21 (D4,D0)", "x":1.5, "y":2.5}, + {"label":"K22 (D4,F7)", "x":2.5, "y":2.5}, + {"label":"K23 (D4,F6)", "x":3.5, "y":2.5}, + {"label":"K24 (D4,F5)", "x":4.5, "y":2.5}, + {"label":"K25 (D4,D5)", "x":5.5, "y":2.5}, + {"label":"K26 (D4,D3)", "x":6.5, "y":2.5}, + {"label":"K27 (D4,D2)", "x":7.5, "y":2.5}, + {"label":"K28 (D4,C7)", "x":8.5, "y":2.5}, + {"label":"K29 (D4,C6)", "x":9.5, "y":2.5}, + {"label":"K2A (D4,B5)", "x":10.5, "y":2.5}, + {"label":"K2B (D4,F4)", "x":11.5, "y":2.5}, + {"label":"K2C (D4,F1)", "x":12.5, "y":2.5, "w":1.25}, + {"label":"K2E (D4,B0)", "x":15.25, "y":2.5}, + {"label":"K5D (D7,B4)", "x":16.25, "y":2.5}, + {"label":"K5E (D7,B0)", "x":17.25, "y":2.5}, + + {"label":"K30 (F0,D1)", "x":0, "y":3.5, "w":1.75}, + {"label":"K31 (F0,D0)", "x":1.75, "y":3.5}, + {"label":"K32 (F0,F7)", "x":2.75, "y":3.5}, + {"label":"K33 (F0,F6)", "x":3.75, "y":3.5}, + {"label":"K34 (F0,F5)", "x":4.75, "y":3.5}, + {"label":"K35 (F0,D5)", "x":5.75, "y":3.5}, + {"label":"K36 (F0,D3)", "x":6.75, "y":3.5}, + {"label":"K37 (F0,D2)", "x":7.75, "y":3.5}, + {"label":"K38 (F0,C7)", "x":8.75, "y":3.5}, + {"label":"K39 (F0,C6)", "x":9.75, "y":3.5}, + {"label":"K3A (F0,B5)", "x":10.75, "y":3.5}, + {"label":"K3B (F0,F4)", "x":11.75, "y":3.5}, + {"label":"K2D (D4,B4)", "x":12.75, "y":3.5}, + {"label":"K3C (F0,F1)", "x":13.75, "y":2.5, "w":1.25, "h":2}, + + {"label":"K40 (D6,D1)", "x":0, "y":4.5, "w":1.25}, + {"label":"K41 (D6,D0)", "x":1.25, "y":4.5}, + {"label":"K42 (D6,F7)", "x":2.25, "y":4.5}, + {"label":"K43 (D6,F6)", "x":3.25, "y":4.5}, + {"label":"K44 (D6,F5)", "x":4.25, "y":4.5}, + {"label":"K45 (D6,D5)", "x":5.25, "y":4.5}, + {"label":"K46 (D6,D3)", "x":6.25, "y":4.5}, + {"label":"K47 (D6,D2)", "x":7.25, "y":4.5}, + {"label":"K48 (D6,C7)", "x":8.25, "y":4.5}, + {"label":"K49 (D6,C6)", "x":9.25, "y":4.5}, + {"label":"K4A (D6,B5)", "x":10.25, "y":4.5}, + {"label":"K4B (D6,F4)", "x":11.25, "y":4.5}, + {"label":"K4C (D6,F1)", "x":12.25, "y":4.5, "w":1.75}, + {"label":"K4D (D6,B4)", "x":14, "y":4.5}, + {"label":"K4E (D6,B0)", "x":16.25, "y":4.5}, + + {"label":"K50 (D7,D1)", "x":0, "y":5.5, "w":1.25}, + {"label":"K51 (D7,D0)", "x":1.25, "y":5.5, "w":1.25}, + {"label":"K52 (D7,F7)", "x":2.5, "y":5.5, "w":1.25}, + {"label":"K53 (D7,F6)", "x":3.75, "y":5.5, "w":6.25}, + {"label":"K54 (D7,F5)", "x":10, "y":5.5, "w":1.25}, + {"label":"K55 (D7,D5)", "x":11.25, "y":5.5, "w":1.25}, + {"label":"K56 (D7,D3)", "x":12.5, "y":5.5, "w":1.25}, + {"label":"K57 (D7,D2)", "x":13.75, "y":5.5, "w":1.25}, + {"label":"K58 (D7,C7)", "x":15.25, "y":5.5}, + {"label":"K59 (D7,C6)", "x":16.25, "y":5.5}, + {"label":"K5A (D7,B5)", "x":17.25, "y":5.5} + ] + }, + "LAYOUT_tkl_iso": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6.5, "y": 0}, + {"x": 7.5, "y": 0}, + {"x": 8.5, "y": 0}, + {"x": 9.5, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + {"x": 15.25, "y": 0}, + {"x": 16.25, "y": 0}, + {"x": 17.25, "y": 0}, + + {"x": 0, "y": 1.5}, + {"x": 1, "y": 1.5}, + {"x": 2, "y": 1.5}, + {"x": 3, "y": 1.5}, + {"x": 4, "y": 1.5}, + {"x": 5, "y": 1.5}, + {"x": 6, "y": 1.5}, + {"x": 7, "y": 1.5}, + {"x": 8, "y": 1.5}, + {"x": 9, "y": 1.5}, + {"x": 10, "y": 1.5}, + {"x": 11, "y": 1.5}, + {"x": 12, "y": 1.5}, + {"x": 13, "y": 1.5, "w": 2}, + {"x": 15.25, "y": 1.5}, + {"x": 16.25, "y": 1.5}, + {"x": 17.25, "y": 1.5}, + + {"x": 0, "y": 2.5, "w": 1.5}, + {"x": 1.5, "y": 2.5}, + {"x": 2.5, "y": 2.5}, + {"x": 3.5, "y": 2.5}, + {"x": 4.5, "y": 2.5}, + {"x": 5.5, "y": 2.5}, + {"x": 6.5, "y": 2.5}, + {"x": 7.5, "y": 2.5}, + {"x": 8.5, "y": 2.5}, + {"x": 9.5, "y": 2.5}, + {"x": 10.5, "y": 2.5}, + {"x": 11.5, "y": 2.5}, + {"x": 12.5, "y": 2.5}, + {"x": 15.25, "y": 2.5}, + {"x": 16.25, "y": 2.5}, + {"x": 17.25, "y": 2.5}, + + {"x": 0, "y": 3.5, "w": 1.75}, + {"x": 1.75, "y": 3.5}, + {"x": 2.75, "y": 3.5}, + {"x": 3.75, "y": 3.5}, + {"x": 4.75, "y": 3.5}, + {"x": 5.75, "y": 3.5}, + {"x": 6.75, "y": 3.5}, + {"x": 7.75, "y": 3.5}, + {"x": 8.75, "y": 3.5}, + {"x": 9.75, "y": 3.5}, + {"x": 10.75, "y": 3.5}, + {"x": 11.75, "y": 3.5}, + {"x": 12.75, "y": 3.5}, + {"x": 13.75, "y": 2.5, "w": 1.25, "h": 2}, + + {"x": 0, "y": 4.5, "w": 1.25}, + {"x": 1.25, "y": 4.5}, + {"x": 2.25, "y": 4.5}, + {"x": 3.25, "y": 4.5}, + {"x": 4.25, "y": 4.5}, + {"x": 5.25, "y": 4.5}, + {"x": 6.25, "y": 4.5}, + {"x": 7.25, "y": 4.5}, + {"x": 8.25, "y": 4.5}, + {"x": 9.25, "y": 4.5}, + {"x": 10.25, "y": 4.5}, + {"x": 11.25, "y": 4.5}, + {"x": 12.25, "y": 4.5, "w": 2.75}, + {"x": 16.25, "y": 4.5}, + + {"x": 0, "y": 5.5, "w": 1.25}, + {"x": 1.25, "y": 5.5, "w": 1.25}, + {"x": 2.5, "y": 5.5, "w": 1.25}, + {"x": 3.75, "y": 5.5, "w": 6.25}, + {"x": 10, "y": 5.5, "w": 1.25}, + {"x": 11.25, "y": 5.5, "w": 1.25}, + {"x": 12.5, "y": 5.5, "w": 1.25}, + {"x": 13.75, "y": 5.5, "w": 1.25}, + {"x": 15.25, "y": 5.5}, + {"x": 16.25, "y": 5.5}, + {"x": 17.25, "y": 5.5} + ] + } + } +} diff --git a/keyboards/poker87d/keymaps/default/keymap.c b/keyboards/poker87d/keymaps/default/keymap.c new file mode 100644 index 000000000000..8adc58ae11d8 --- /dev/null +++ b/keyboards/poker87d/keymaps/default/keymap.c @@ -0,0 +1,40 @@ +/* Copyright 2021 ater + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, _______, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, _______, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_all( + _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MSTP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, + _______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______, KC_VOLU, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT + ), + +}; + diff --git a/keyboards/poker87d/keymaps/via/keymap.c b/keyboards/poker87d/keymaps/via/keymap.c new file mode 100644 index 000000000000..b2eff1ce3369 --- /dev/null +++ b/keyboards/poker87d/keymaps/via/keymap.c @@ -0,0 +1,58 @@ +/* Copyright 2021 ater + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, _______, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, _______, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_all( + _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MSTP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, + _______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______, KC_VOLU, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT + ), + + [2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; + diff --git a/keyboards/poker87d/keymaps/via/rules.mk b/keyboards/poker87d/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/poker87d/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/poker87d/poker87d.c b/keyboards/poker87d/poker87d.c new file mode 100644 index 000000000000..8faf286cff08 --- /dev/null +++ b/keyboards/poker87d/poker87d.c @@ -0,0 +1,19 @@ +/* Copyright 2021 water + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "poker87d.h" + + diff --git a/keyboards/poker87d/poker87d.h b/keyboards/poker87d/poker87d.h new file mode 100644 index 000000000000..8ea11b012790 --- /dev/null +++ b/keyboards/poker87d/poker87d.h @@ -0,0 +1,53 @@ +/* Copyright 2021 water + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +#define LAYOUT_all( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K3D, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K5B, K5C, K3E, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, K5D, K5E, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K2D, K3C, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, \ + K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A \ +) { \ + { 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 }, \ + { K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B, K5C, K5D, K5E }, \ +} + +#define LAYOUT_tkl_iso( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K3D, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, K5B, K5C, K3E, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, K5D, K5E, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K2D, K3C, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4E, \ + K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A \ +) { \ + { 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, 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, XXX, K4E }, \ + { K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B, K5C, K5D, K5E }, \ +} diff --git a/keyboards/poker87d/readme.md b/keyboards/poker87d/readme.md new file mode 100644 index 000000000000..bdb4e0dede0e --- /dev/null +++ b/keyboards/poker87d/readme.md @@ -0,0 +1,13 @@ +# poker87d + +An in-switch RGB LED keyboard with RGB underglow. + +* Keyboard Maintainer: [water](https://github.com/mfkiiyd) +* Hardware Supported: poker87d +* Hardware Availability: ZA03D1U2-87KEY + +Make example for this keyboard (after setting up your build environment): + + make poker87d: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/poker87d/rules.mk b/keyboards/poker87d/rules.mk new file mode 100644 index 000000000000..79bf2104a3e0 --- /dev/null +++ b/keyboards/poker87d/rules.mk @@ -0,0 +1,21 @@ +# 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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +LAYOUTS = tkl_iso diff --git a/keyboards/polilla/info.json b/keyboards/polilla/info.json index 9299e19a8815..0287b22a52b6 100644 --- a/keyboards/polilla/info.json +++ b/keyboards/polilla/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Polilla", "url": "", "maintainer": "elagil", - "width": 16, - "height": 5.375, "layouts": { "LAYOUT": { "layout": [ @@ -312,4 +310,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/polilla/rev1/rules.mk b/keyboards/polilla/rev1/rules.mk index e6ef1737ee72..20c17d351d61 100644 --- a/keyboards/polilla/rev1/rules.mk +++ b/keyboards/polilla/rev1/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/polycarbdiet/s20/info.json b/keyboards/polycarbdiet/s20/info.json index 32407beea2ee..ff06e2a2571d 100644 --- a/keyboards/polycarbdiet/s20/info.json +++ b/keyboards/polycarbdiet/s20/info.json @@ -2,8 +2,6 @@ "keyboard_name": "S20 revA", "url": "", "maintainer": "polycarbdiet", - "width": 4, - "height": 5, "layouts": { "LAYOUT_ortho_5x4": { "layout": [ diff --git a/keyboards/polycarbdiet/s20/rules.mk b/keyboards/polycarbdiet/s20/rules.mk index 152430af9bca..443ec756493f 100644 --- a/keyboards/polycarbdiet/s20/rules.mk +++ b/keyboards/polycarbdiet/s20/rules.mk @@ -6,18 +6,15 @@ BOOTLOADER = atmel-dfu # Build Options -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LAYOUTS = ortho_5x4 numpad_5x4 diff --git a/keyboards/pom_keyboards/tnln95/info.json b/keyboards/pom_keyboards/tnln95/info.json index a8d83ac3ecfe..68d135920919 100644 --- a/keyboards/pom_keyboards/tnln95/info.json +++ b/keyboards/pom_keyboards/tnln95/info.json @@ -2,8 +2,6 @@ "keyboard_name": "tnln95", "url": "http://www.keyboard-layout-editor.com/#/gists/45aee74c726e32a063130a715fc494d3", "maintainer": "HoangNM", - "width": 21.25, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/pom_keyboards/tnln95/rules.mk b/keyboards/pom_keyboards/tnln95/rules.mk index 8d25f09aca26..3c551cf33b14 100644 --- a/keyboards/pom_keyboards/tnln95/rules.mk +++ b/keyboards/pom_keyboards/tnln95/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LTO_ENABLE = yes diff --git a/keyboards/portal_66/hotswap/config.h b/keyboards/portal_66/hotswap/config.h new file mode 100644 index 000000000000..db4c59bd44f0 --- /dev/null +++ b/keyboards/portal_66/hotswap/config.h @@ -0,0 +1,109 @@ +/* +Copyright 2021 Matthew Dias + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x504C +#define PRODUCT_ID 0x5067 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Parallel Limited +#define PRODUCT Portal 66 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 16 + +/* + * 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 { E6, B7, F7, F4, F5 } +#define MATRIX_COL_PINS { F6, B0, F1, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, D1, D0 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/portal_66/hotswap/hotswap.c b/keyboards/portal_66/hotswap/hotswap.c new file mode 100644 index 000000000000..4189a8a80c91 --- /dev/null +++ b/keyboards/portal_66/hotswap/hotswap.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Matthew Dias + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "hotswap.h" diff --git a/keyboards/portal_66/hotswap/hotswap.h b/keyboards/portal_66/hotswap/hotswap.h new file mode 100644 index 000000000000..484594b9cbae --- /dev/null +++ b/keyboards/portal_66/hotswap/hotswap.h @@ -0,0 +1,49 @@ +/* Copyright 2021 Matthew Dias + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +/* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0E │0F │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │1F │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2D │2F │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │3F │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │40 │41 │42 │46 │49 │4B │ │4C │4D │4F │ + * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + */ + +#define LAYOUT_65_ansi_blocker( \ + 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, k1D, k1F, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, k2F, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3F, \ + k40, k41, k42, k46, k49, k4B, k4C, k4D, k4F \ +) { \ + { 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, k1D, XXX, k1F }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, k2D, XXX, k2F }, \ + { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, XXX, k3F }, \ + { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, k49, XXX, k4B, k4C, k4D, XXX, k4F } \ +} diff --git a/keyboards/portal_66/hotswap/info.json b/keyboards/portal_66/hotswap/info.json new file mode 100644 index 000000000000..984134a4e746 --- /dev/null +++ b/keyboards/portal_66/hotswap/info.json @@ -0,0 +1,84 @@ +{ + "keyboard_name": "Portal 66 Hotswap", + "maintainer": "matthewdias", + "layout_aliases": { + "LAYOUT": "LAYOUT_65_ansi_blocker" + }, + "layouts": { + "LAYOUT_65_ansi_blocker": { + "layout": [ + { "x":0, "y":0 }, + { "x":1, "y":0 }, + { "x":2, "y":0 }, + { "x":3, "y":0 }, + { "x":4, "y":0 }, + { "x":5, "y":0 }, + { "x":6, "y":0 }, + { "x":7, "y":0 }, + { "x":8, "y":0 }, + { "x":9, "y":0 }, + { "x":10, "y":0 }, + { "x":11, "y":0 }, + { "x":12, "y":0 }, + { "x":13, "y":0, "w": 2 }, + { "x":15, "y":0 }, + + { "x":0, "y":1, "w":1.5 }, + { "x":1.5, "y":1 }, + { "x":2.5, "y":1 }, + { "x":3.5, "y":1 }, + { "x":4.5, "y":1 }, + { "x":5.5, "y":1 }, + { "x":6.5, "y":1 }, + { "x":7.5, "y":1 }, + { "x":8.5, "y":1 }, + { "x":9.5, "y":1 }, + { "x":10.5, "y":1 }, + { "x":11.5, "y":1 }, + { "x":12.5, "y":1 }, + { "x":13.5, "y":1, "w":1.5 }, + { "x":15, "y":1 }, + + { "x":0, "y":2, "w":1.75 }, + { "x":1.75, "y":2 }, + { "x":2.75, "y":2 }, + { "x":3.75, "y":2 }, + { "x":4.75, "y":2 }, + { "x":5.75, "y":2 }, + { "x":6.75, "y":2 }, + { "x":7.75, "y":2 }, + { "x":8.75, "y":2 }, + { "x":9.75, "y":2 }, + { "x":10.75, "y":2 }, + { "x":11.75, "y":2 }, + { "x":12.75, "y":2, "w":2.25 }, + { "x":15, "y":2 }, + + { "x":0, "y":3, "w":2.25 }, + { "x":2.25, "y":3 }, + { "x":3.25, "y":3 }, + { "x":4.25, "y":3 }, + { "x":5.25, "y":3 }, + { "x":6.25, "y":3 }, + { "x":7.25, "y":3 }, + { "x":8.25, "y":3 }, + { "x":9.25, "y":3 }, + { "x":10.25, "y":3 }, + { "x":11.25, "y":3 }, + { "x":12.25, "y":3, "w":1.75 }, + { "x":14, "y":3 }, + { "x":15, "y":3 }, + + { "x":0, "y":4, "w":1.25 }, + { "x":1.25, "y":4, "w":1.25 }, + { "x":2.5, "y":4, "w":1.25 }, + { "x":3.75, "y":4, "w":6.25 }, + { "x":10, "y":4, "w":1.25 }, + { "x":11.25, "y":4, "w":1.25 }, + { "x":13, "y":4 }, + { "x":14, "y":4 }, + { "x":15, "y":4 } + ] + } + } +} diff --git a/keyboards/portal_66/hotswap/keymaps/default/keymap.c b/keyboards/portal_66/hotswap/keymaps/default/keymap.c new file mode 100644 index 000000000000..5f9143a2ad1b --- /dev/null +++ b/keyboards/portal_66/hotswap/keymaps/default/keymap.c @@ -0,0 +1,38 @@ +/* Copyright 2021 Matthew Dias + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_65_ansi_blocker( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_LEFT, KC_DOWN, KC_RGHT + ), + [_FN] = LAYOUT_65_ansi_blocker( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/portal_66/hotswap/keymaps/default/readme.md b/keyboards/portal_66/hotswap/keymaps/default/readme.md new file mode 100644 index 000000000000..1a4e1624e39f --- /dev/null +++ b/keyboards/portal_66/hotswap/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for Portal 66 Hotswap diff --git a/keyboards/portal_66/hotswap/keymaps/via/keymap.c b/keyboards/portal_66/hotswap/keymaps/via/keymap.c new file mode 100644 index 000000000000..7f9878eae3d2 --- /dev/null +++ b/keyboards/portal_66/hotswap/keymaps/via/keymap.c @@ -0,0 +1,54 @@ +/* Copyright 2021 Matthew Dias + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layer_names { + _L0, + _L1, + _L2, + _L3 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_L0] = LAYOUT_65_ansi_blocker( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_L1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [_L1] = LAYOUT_65_ansi_blocker( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [_L2] = LAYOUT_65_ansi_blocker( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [_L3] = LAYOUT_65_ansi_blocker( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/portal_66/hotswap/keymaps/via/rules.mk b/keyboards/portal_66/hotswap/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/portal_66/hotswap/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/portal_66/hotswap/readme.md b/keyboards/portal_66/hotswap/readme.md new file mode 100644 index 000000000000..91434a11c048 --- /dev/null +++ b/keyboards/portal_66/hotswap/readme.md @@ -0,0 +1,18 @@ +# Portal 66 + +A 65% keyboard + +* Keyboard Maintainer: matthewdias +* Hardware Supported: Portal 66 Hotswap + +To reset the keyboard into bootloader mode, press the reset switch on the underside. + +Make example for this keyboard (after setting up your build environment): + + make portal_66/hotswap:default + +Flashing example for this keyboard: + + make portal_66/hotswap:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/portal_66/hotswap/rules.mk b/keyboards/portal_66/hotswap/rules.mk new file mode 100644 index 000000000000..6d7c17fed7e9 --- /dev/null +++ b/keyboards/portal_66/hotswap/rules.mk @@ -0,0 +1,21 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +LAYOUTS = 65_ansi_blocker diff --git a/keyboards/portal_66/soldered/config.h b/keyboards/portal_66/soldered/config.h new file mode 100644 index 000000000000..3a3efc80b5fd --- /dev/null +++ b/keyboards/portal_66/soldered/config.h @@ -0,0 +1,109 @@ +/* +Copyright 2021 Matthew Dias + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x504C +#define PRODUCT_ID 0x5066 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Parallel Limited +#define PRODUCT Portal 66 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 16 + +/* + * 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 { E6, B7, F7, F4, F5 } +#define MATRIX_COL_PINS { F6, B0, F1, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, D1, D0 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/portal_66/soldered/info.json b/keyboards/portal_66/soldered/info.json new file mode 100644 index 000000000000..de621a2f7035 --- /dev/null +++ b/keyboards/portal_66/soldered/info.json @@ -0,0 +1,467 @@ +{ + "keyboard_name": "Portal 66", + "maintainer": "matthewdias", + "layout_aliases": { + "LAYOUT_65_ansi_split_bs": "LAYOUT_65_ansi_blocker_split_bs", + "LAYOUT_65_ansi": "LAYOUT_65_ansi_blocker", + "LAYOUT_65_tsangan_split_bs": "LAYOUT_65_ansi_blocker_tsangan_split_bs", + "LAYOUT_65_iso": "LAYOUT_65_iso_blocker" + }, + "layouts": { + "LAYOUT_65_ansi_blocker_split_bs": { + "layout": [ + { "x":0, "y":0 }, + { "x":1, "y":0 }, + { "x":2, "y":0 }, + { "x":3, "y":0 }, + { "x":4, "y":0 }, + { "x":5, "y":0 }, + { "x":6, "y":0 }, + { "x":7, "y":0 }, + { "x":8, "y":0 }, + { "x":9, "y":0 }, + { "x":10, "y":0 }, + { "x":11, "y":0 }, + { "x":12, "y":0 }, + { "x":13, "y":0 }, + { "x":14, "y":0 }, + { "x":15, "y":0 }, + + { "x":0, "y":1, "w":1.5 }, + { "x":1.5, "y":1 }, + { "x":2.5, "y":1 }, + { "x":3.5, "y":1 }, + { "x":4.5, "y":1 }, + { "x":5.5, "y":1 }, + { "x":6.5, "y":1 }, + { "x":7.5, "y":1 }, + { "x":8.5, "y":1 }, + { "x":9.5, "y":1 }, + { "x":10.5, "y":1 }, + { "x":11.5, "y":1 }, + { "x":12.5, "y":1 }, + { "x":13.5, "y":1, "w":1.5 }, + { "x":15, "y":1 }, + + { "x":0, "y":2, "w":1.75 }, + { "x":1.75, "y":2 }, + { "x":2.75, "y":2 }, + { "x":3.75, "y":2 }, + { "x":4.75, "y":2 }, + { "x":5.75, "y":2 }, + { "x":6.75, "y":2 }, + { "x":7.75, "y":2 }, + { "x":8.75, "y":2 }, + { "x":9.75, "y":2 }, + { "x":10.75, "y":2 }, + { "x":11.75, "y":2 }, + { "x":12.75, "y":2, "w":2.25 }, + { "x":15, "y":2 }, + + { "x":0, "y":3, "w":2.25 }, + { "x":2.25, "y":3 }, + { "x":3.25, "y":3 }, + { "x":4.25, "y":3 }, + { "x":5.25, "y":3 }, + { "x":6.25, "y":3 }, + { "x":7.25, "y":3 }, + { "x":8.25, "y":3 }, + { "x":9.25, "y":3 }, + { "x":10.25, "y":3 }, + { "x":11.25, "y":3 }, + { "x":12.25, "y":3, "w":1.75 }, + { "x":14, "y":3 }, + { "x":15, "y":3 }, + + { "x":0, "y":4, "w":1.25 }, + { "x":1.25, "y":4, "w":1.25 }, + { "x":2.5, "y":4, "w":1.25 }, + { "x":3.75, "y":4, "w":6.25 }, + { "x":10, "y":4, "w":1.25 }, + { "x":11.25, "y":4, "w":1.25 }, + { "x":13, "y":4 }, + { "x":14, "y":4 }, + { "x":15, "y":4 } + ] + }, + "LAYOUT_65_ansi_blocker": { + "layout": [ + { "x":0, "y":0 }, + { "x":1, "y":0 }, + { "x":2, "y":0 }, + { "x":3, "y":0 }, + { "x":4, "y":0 }, + { "x":5, "y":0 }, + { "x":6, "y":0 }, + { "x":7, "y":0 }, + { "x":8, "y":0 }, + { "x":9, "y":0 }, + { "x":10, "y":0 }, + { "x":11, "y":0 }, + { "x":12, "y":0 }, + { "x":13, "y":0, "w": 2 }, + { "x":15, "y":0 }, + + { "x":0, "y":1, "w":1.5 }, + { "x":1.5, "y":1 }, + { "x":2.5, "y":1 }, + { "x":3.5, "y":1 }, + { "x":4.5, "y":1 }, + { "x":5.5, "y":1 }, + { "x":6.5, "y":1 }, + { "x":7.5, "y":1 }, + { "x":8.5, "y":1 }, + { "x":9.5, "y":1 }, + { "x":10.5, "y":1 }, + { "x":11.5, "y":1 }, + { "x":12.5, "y":1 }, + { "x":13.5, "y":1, "w":1.5 }, + { "x":15, "y":1 }, + + { "x":0, "y":2, "w":1.75 }, + { "x":1.75, "y":2 }, + { "x":2.75, "y":2 }, + { "x":3.75, "y":2 }, + { "x":4.75, "y":2 }, + { "x":5.75, "y":2 }, + { "x":6.75, "y":2 }, + { "x":7.75, "y":2 }, + { "x":8.75, "y":2 }, + { "x":9.75, "y":2 }, + { "x":10.75, "y":2 }, + { "x":11.75, "y":2 }, + { "x":12.75, "y":2, "w":2.25 }, + { "x":15, "y":2 }, + + { "x":0, "y":3, "w":2.25 }, + { "x":2.25, "y":3 }, + { "x":3.25, "y":3 }, + { "x":4.25, "y":3 }, + { "x":5.25, "y":3 }, + { "x":6.25, "y":3 }, + { "x":7.25, "y":3 }, + { "x":8.25, "y":3 }, + { "x":9.25, "y":3 }, + { "x":10.25, "y":3 }, + { "x":11.25, "y":3 }, + { "x":12.25, "y":3, "w":1.75 }, + { "x":14, "y":3 }, + { "x":15, "y":3 }, + + { "x":0, "y":4, "w":1.25 }, + { "x":1.25, "y":4, "w":1.25 }, + { "x":2.5, "y":4, "w":1.25 }, + { "x":3.75, "y":4, "w":6.25 }, + { "x":10, "y":4, "w":1.25 }, + { "x":11.25, "y":4, "w":1.25 }, + { "x":13, "y":4 }, + { "x":14, "y":4 }, + { "x":15, "y":4 } + ] + }, + "LAYOUT_65_ansi_blocker_tsangan_split_bs": { + "layout": [ + { "x":0, "y":0 }, + { "x":1, "y":0 }, + { "x":2, "y":0 }, + { "x":3, "y":0 }, + { "x":4, "y":0 }, + { "x":5, "y":0 }, + { "x":6, "y":0 }, + { "x":7, "y":0 }, + { "x":8, "y":0 }, + { "x":9, "y":0 }, + { "x":10, "y":0 }, + { "x":11, "y":0 }, + { "x":12, "y":0 }, + { "x":13, "y":0 }, + { "x":14, "y":0 }, + { "x":15, "y":0 }, + + { "x":0, "y":1, "w":1.5 }, + { "x":1.5, "y":1 }, + { "x":2.5, "y":1 }, + { "x":3.5, "y":1 }, + { "x":4.5, "y":1 }, + { "x":5.5, "y":1 }, + { "x":6.5, "y":1 }, + { "x":7.5, "y":1 }, + { "x":8.5, "y":1 }, + { "x":9.5, "y":1 }, + { "x":10.5, "y":1 }, + { "x":11.5, "y":1 }, + { "x":12.5, "y":1 }, + { "x":13.5, "y":1, "w":1.5 }, + { "x":15, "y":1 }, + + { "x":0, "y":2, "w":1.75 }, + { "x":1.75, "y":2 }, + { "x":2.75, "y":2 }, + { "x":3.75, "y":2 }, + { "x":4.75, "y":2 }, + { "x":5.75, "y":2 }, + { "x":6.75, "y":2 }, + { "x":7.75, "y":2 }, + { "x":8.75, "y":2 }, + { "x":9.75, "y":2 }, + { "x":10.75, "y":2 }, + { "x":11.75, "y":2 }, + { "x":12.75, "y":2, "w":2.25 }, + { "x":15, "y":2 }, + + { "x":0, "y":3, "w":2.25 }, + { "x":2.25, "y":3 }, + { "x":3.25, "y":3 }, + { "x":4.25, "y":3 }, + { "x":5.25, "y":3 }, + { "x":6.25, "y":3 }, + { "x":7.25, "y":3 }, + { "x":8.25, "y":3 }, + { "x":9.25, "y":3 }, + { "x":10.25, "y":3 }, + { "x":11.25, "y":3 }, + { "x":12.25, "y":3, "w":1.75 }, + { "x":14, "y":3 }, + { "x":15, "y":3 }, + + { "x":0, "y":4, "w":1.5 }, + { "x":1.5, "y":4, "w":1 }, + { "x":2.5, "y":4, "w":1.5 }, + { "x":4, "y":4, "w":7 }, + { "x":11, "y":4, "w":1.5 }, + { "x":13, "y":4 }, + { "x":14, "y":4 }, + { "x":15, "y":4 } + ] + }, + "LAYOUT_65_iso_blocker_split_bs": { + "layout": [ + { "x":0, "y":0 }, + { "x":1, "y":0 }, + { "x":2, "y":0 }, + { "x":3, "y":0 }, + { "x":4, "y":0 }, + { "x":5, "y":0 }, + { "x":6, "y":0 }, + { "x":7, "y":0 }, + { "x":8, "y":0 }, + { "x":9, "y":0 }, + { "x":10, "y":0 }, + { "x":11, "y":0 }, + { "x":12, "y":0 }, + { "x":13, "y":0 }, + { "x":14, "y":0 }, + { "x":15, "y":0 }, + + { "x":0, "y":1, "w":1.5 }, + { "x":1.5, "y":1 }, + { "x":2.5, "y":1 }, + { "x":3.5, "y":1 }, + { "x":4.5, "y":1 }, + { "x":5.5, "y":1 }, + { "x":6.5, "y":1 }, + { "x":7.5, "y":1 }, + { "x":8.5, "y":1 }, + { "x":9.5, "y":1 }, + { "x":10.5, "y":1 }, + { "x":11.5, "y":1 }, + { "x":12.5, "y":1 }, + { "x":15, "y":1 }, + + { "x":0, "y":2, "w":1.75 }, + { "x":1.75, "y":2 }, + { "x":2.75, "y":2 }, + { "x":3.75, "y":2 }, + { "x":4.75, "y":2 }, + { "x":5.75, "y":2 }, + { "x":6.75, "y":2 }, + { "x":7.75, "y":2 }, + { "x":8.75, "y":2 }, + { "x":9.75, "y":2 }, + { "x":10.75, "y":2 }, + { "x":11.75, "y":2 }, + { "x":12.75, "y":2 }, + { "x":13.75, "y":1, "w":1.25, "h":2 }, + { "x":15, "y":2 }, + + { "x":0, "y":3, "w":1.25 }, + { "x":1.25, "y":3 }, + { "x":2.25, "y":3 }, + { "x":3.25, "y":3 }, + { "x":4.25, "y":3 }, + { "x":5.25, "y":3 }, + { "x":6.25, "y":3 }, + { "x":7.25, "y":3 }, + { "x":8.25, "y":3 }, + { "x":9.25, "y":3 }, + { "x":10.25, "y":3 }, + { "x":11.25, "y":3 }, + { "x":12.25, "y":3, "w":1.75 }, + { "x":14, "y":3 }, + { "x":15, "y":3 }, + + { "x":0, "y":4, "w":1.25 }, + { "x":1.25, "y":4, "w":1.25 }, + { "x":2.5, "y":4, "w":1.25 }, + { "x":3.75, "y":4, "w":6.25 }, + { "x":10, "y":4, "w":1.25 }, + { "x":11.25, "y":4, "w":1.25 }, + { "x":13, "y":4 }, + { "x":14, "y":4 }, + { "x":15, "y":4 } + ] + }, + "LAYOUT_65_iso_blocker": { + "layout": [ + { "x":0, "y":0 }, + { "x":1, "y":0 }, + { "x":2, "y":0 }, + { "x":3, "y":0 }, + { "x":4, "y":0 }, + { "x":5, "y":0 }, + { "x":6, "y":0 }, + { "x":7, "y":0 }, + { "x":8, "y":0 }, + { "x":9, "y":0 }, + { "x":10, "y":0 }, + { "x":11, "y":0 }, + { "x":12, "y":0 }, + { "x":13, "y":0, "w": 2 }, + { "x":15, "y":0 }, + + { "x":0, "y":1, "w":1.5 }, + { "x":1.5, "y":1 }, + { "x":2.5, "y":1 }, + { "x":3.5, "y":1 }, + { "x":4.5, "y":1 }, + { "x":5.5, "y":1 }, + { "x":6.5, "y":1 }, + { "x":7.5, "y":1 }, + { "x":8.5, "y":1 }, + { "x":9.5, "y":1 }, + { "x":10.5, "y":1 }, + { "x":11.5, "y":1 }, + { "x":12.5, "y":1 }, + { "x":15, "y":1 }, + + { "x":0, "y":2, "w":1.75 }, + { "x":1.75, "y":2 }, + { "x":2.75, "y":2 }, + { "x":3.75, "y":2 }, + { "x":4.75, "y":2 }, + { "x":5.75, "y":2 }, + { "x":6.75, "y":2 }, + { "x":7.75, "y":2 }, + { "x":8.75, "y":2 }, + { "x":9.75, "y":2 }, + { "x":10.75, "y":2 }, + { "x":11.75, "y":2 }, + { "x":12.75, "y":2 }, + { "x":13.75, "y":1, "w":1.25, "h":2 }, + { "x":15, "y":2 }, + + { "x":0, "y":3, "w":1.25 }, + { "x":1.25, "y":3 }, + { "x":2.25, "y":3 }, + { "x":3.25, "y":3 }, + { "x":4.25, "y":3 }, + { "x":5.25, "y":3 }, + { "x":6.25, "y":3 }, + { "x":7.25, "y":3 }, + { "x":8.25, "y":3 }, + { "x":9.25, "y":3 }, + { "x":10.25, "y":3 }, + { "x":11.25, "y":3 }, + { "x":12.25, "y":3, "w":1.75 }, + { "x":14, "y":3 }, + { "x":15, "y":3 }, + + { "x":0, "y":4, "w":1.25 }, + { "x":1.25, "y":4, "w":1.25 }, + { "x":2.5, "y":4, "w":1.25 }, + { "x":3.75, "y":4, "w":6.25 }, + { "x":10, "y":4, "w":1.25 }, + { "x":11.25, "y":4, "w":1.25 }, + { "x":13, "y":4 }, + { "x":14, "y":4 }, + { "x":15, "y":4 } + ] + }, + "LAYOUT_65_iso_blocker_tsangan_split_bs": { + "layout": [ + { "x":0, "y":0 }, + { "x":1, "y":0 }, + { "x":2, "y":0 }, + { "x":3, "y":0 }, + { "x":4, "y":0 }, + { "x":5, "y":0 }, + { "x":6, "y":0 }, + { "x":7, "y":0 }, + { "x":8, "y":0 }, + { "x":9, "y":0 }, + { "x":10, "y":0 }, + { "x":11, "y":0 }, + { "x":12, "y":0 }, + { "x":13, "y":0 }, + { "x":14, "y":0 }, + { "x":15, "y":0 }, + + { "x":0, "y":1, "w":1.5 }, + { "x":1.5, "y":1 }, + { "x":2.5, "y":1 }, + { "x":3.5, "y":1 }, + { "x":4.5, "y":1 }, + { "x":5.5, "y":1 }, + { "x":6.5, "y":1 }, + { "x":7.5, "y":1 }, + { "x":8.5, "y":1 }, + { "x":9.5, "y":1 }, + { "x":10.5, "y":1 }, + { "x":11.5, "y":1 }, + { "x":12.5, "y":1 }, + { "x":15, "y":1 }, + + { "x":0, "y":2, "w":1.75 }, + { "x":1.75, "y":2 }, + { "x":2.75, "y":2 }, + { "x":3.75, "y":2 }, + { "x":4.75, "y":2 }, + { "x":5.75, "y":2 }, + { "x":6.75, "y":2 }, + { "x":7.75, "y":2 }, + { "x":8.75, "y":2 }, + { "x":9.75, "y":2 }, + { "x":10.75, "y":2 }, + { "x":11.75, "y":2 }, + { "x":12.75, "y":2 }, + { "x":13.75, "y":1, "w":1.25, "h":2 }, + { "x":15, "y":2 }, + + { "x":0, "y":3, "w":1.25 }, + { "x":1.25, "y":3 }, + { "x":2.25, "y":3 }, + { "x":3.25, "y":3 }, + { "x":4.25, "y":3 }, + { "x":5.25, "y":3 }, + { "x":6.25, "y":3 }, + { "x":7.25, "y":3 }, + { "x":8.25, "y":3 }, + { "x":9.25, "y":3 }, + { "x":10.25, "y":3 }, + { "x":11.25, "y":3 }, + { "x":12.25, "y":3, "w":1.75 }, + { "x":14, "y":3 }, + { "x":15, "y":3 }, + + { "x":0, "y":4, "w":1.5 }, + { "x":1.5, "y":4, "w":1 }, + { "x":2.5, "y":4, "w":1.5 }, + { "x":4, "y":4, "w":7 }, + { "x":11, "y":4, "w":1.5 }, + { "x":13, "y":4 }, + { "x":14, "y":4 }, + { "x":15, "y":4 } + ] + } + } +} diff --git a/keyboards/portal_66/soldered/keymaps/default/keymap.c b/keyboards/portal_66/soldered/keymaps/default/keymap.c new file mode 100644 index 000000000000..8b40550b86a3 --- /dev/null +++ b/keyboards/portal_66/soldered/keymaps/default/keymap.c @@ -0,0 +1,38 @@ +/* Copyright 2021 Matthew Dias + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_65_ansi_blocker_split_bs( + 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_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_LEFT, KC_DOWN, KC_RGHT + ), + [_FN] = LAYOUT_65_ansi_blocker_split_bs( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/portal_66/soldered/keymaps/default/readme.md b/keyboards/portal_66/soldered/keymaps/default/readme.md new file mode 100644 index 000000000000..5d87fc7fe062 --- /dev/null +++ b/keyboards/portal_66/soldered/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for Portal 66 diff --git a/keyboards/portal_66/soldered/keymaps/via/keymap.c b/keyboards/portal_66/soldered/keymaps/via/keymap.c new file mode 100644 index 000000000000..97c74de1f174 --- /dev/null +++ b/keyboards/portal_66/soldered/keymaps/via/keymap.c @@ -0,0 +1,54 @@ +/* Copyright 2021 Matthew Dias + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layer_names { + _L0, + _L1, + _L2, + _L3 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_L0] = LAYOUT_65_ansi_blocker_split_bs( + 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_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_L1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [_L1] = LAYOUT_65_ansi_blocker_split_bs( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [_L2] = LAYOUT_65_ansi_blocker_split_bs( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [_L3] = LAYOUT_65_ansi_blocker_split_bs( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/portal_66/soldered/keymaps/via/rules.mk b/keyboards/portal_66/soldered/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/portal_66/soldered/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/portal_66/soldered/readme.md b/keyboards/portal_66/soldered/readme.md new file mode 100644 index 000000000000..d6906fbc3477 --- /dev/null +++ b/keyboards/portal_66/soldered/readme.md @@ -0,0 +1,18 @@ +# Portal 66 + +A 65% keyboard + +* Keyboard Maintainer: matthewdias +* Hardware Supported: Portal 66 + +To reset the keyboard into bootloader mode, press the reset switch on the underside. + +Make example for this keyboard (after setting up your build environment): + + make portal_66/soldered:default + +Flashing example for this keyboard: + + make portal_66/soldered:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/portal_66/soldered/rules.mk b/keyboards/portal_66/soldered/rules.mk new file mode 100644 index 000000000000..f8e0c4a816f9 --- /dev/null +++ b/keyboards/portal_66/soldered/rules.mk @@ -0,0 +1,21 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +LAYOUTS = 65_ansi_blocker 65_ansi_blocker_split_bs 65_iso_blocker 65_iso_blocker_split_bs diff --git a/keyboards/portal_66/soldered/soldered.c b/keyboards/portal_66/soldered/soldered.c new file mode 100644 index 000000000000..a74cd21deaa1 --- /dev/null +++ b/keyboards/portal_66/soldered/soldered.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Matthew Dias + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "soldered.h" diff --git a/keyboards/portal_66/soldered/soldered.h b/keyboards/portal_66/soldered/soldered.h new file mode 100644 index 000000000000..b2ae9cbaac61 --- /dev/null +++ b/keyboards/portal_66/soldered/soldered.h @@ -0,0 +1,122 @@ +/* Copyright 2021 Matthew Dias + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +/* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───────┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │0E │0F │ │0E │ 2u Backspace + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ └─┬─────┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │1F │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ ┌──┴┐2D │ ISO Enter + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2D │2F │ │2C │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ └───┴────┘ + * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │3F │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │40 │41 │42 │46 │49 │4B │ │4C │4D │4F │ + * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + * ┌─────┬───┬─────┬───────────────────────────┬─────┐ + * │40 │41 │42 │46 │4B │ Tsangan + * └─────┴───┴─────┴───────────────────────────┴─────┘ + */ + +#define LAYOUT_65_ansi_blocker_split_bs( \ + 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, k2F, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3F, \ + k40, k41, k42, k46, k49, k4B, k4C, k4D, 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, k2F }, \ + { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, XXX, k3F }, \ + { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, k49, XXX, k4B, k4C, k4D, XXX, k4F } \ +} + +#define LAYOUT_65_ansi_blocker( \ + 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, k1D, k1F, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, k2F, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3F, \ + k40, k41, k42, k46, k49, k4B, k4C, k4D, k4F \ +) { \ + { 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, k1D, XXX, k1F }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, k2D, XXX, k2F }, \ + { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, XXX, k3F }, \ + { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, k49, XXX, k4B, k4C, k4D, XXX, k4F } \ +} + +#define LAYOUT_65_ansi_blocker_tsangan_split_bs( \ + 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, k2F, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3F, \ + k40, k41, k42, k46, k4B, k4C, k4D, 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, k2F }, \ + { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, XXX, k3F }, \ + { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, XXX, k4B, k4C, k4D, XXX, k4F } \ +} + +#define LAYOUT_65_iso_blocker_split_bs( \ + 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, k2C, k2D, k2F, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3F, \ + k40, k41, k42, k46, k49, k4B, k4C, k4D, 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, k2C, k2D, XXX, k2F }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, XXX, k3F }, \ + { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, k49, XXX, k4B, k4C, k4D, XXX, k4F } \ +} + +#define LAYOUT_65_iso_blocker( \ + 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, k1F, \ + k20, k21, 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, k3C, k3D, k3F, \ + k40, k41, k42, k46, k49, k4B, k4C, k4D, k4F \ +) { \ + { 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, XXX, k1F }, \ + { k20, k21, 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, k3C, k3D, XXX, k3F }, \ + { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, k49, XXX, k4B, k4C, k4D, XXX, k4F } \ +} + +#define LAYOUT_65_iso_blocker_tsangan_split_bs( \ + 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, k2C, k2D, k2F, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3F, \ + k40, k41, k42, k46, k4B, k4C, k4D, 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, k2C, k2D, XXX, k2F }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, XXX, k3F }, \ + { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, XXX, k4B, k4C, k4D, XXX, k4F } \ +} diff --git a/keyboards/pos78/info.json b/keyboards/pos78/info.json index cbe894fd9e8d..76c143055939 100644 --- a/keyboards/pos78/info.json +++ b/keyboards/pos78/info.json @@ -2,8 +2,6 @@ "keyboard_name": "pos78", "url": "https://github.com/smssmssms/pos78.git", "maintainer": "smssmssms", - "width": 13, - "height": 6, "layouts": { "LAYOUT_ortho_6x13": { "layout": [ diff --git a/keyboards/pos78/rules.mk b/keyboards/pos78/rules.mk index 5c0d8f307c54..d2109f62500b 100644 --- a/keyboards/pos78/rules.mk +++ b/keyboards/pos78/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/preonic/config.h b/keyboards/preonic/config.h index dfd0a8439a5a..8f72de909430 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -78,5 +77,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -#endif diff --git a/keyboards/preonic/info.json b/keyboards/preonic/info.json index c9c76cc21e93..e49e964577c3 100644 --- a/keyboards/preonic/info.json +++ b/keyboards/preonic/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Preonic", "url": "https://olkb.com/preonic", "maintainer": "jackhumbert", - "width": 12, - "height": 5, "layouts": { "LAYOUT_preonic_1x2uC": { "layout": [ diff --git a/keyboards/preonic/keymaps/0xdec/rules.mk b/keyboards/preonic/keymaps/0xdec/rules.mk index 0c8a6dc4110e..a68b26c24cb3 100644 --- a/keyboards/preonic/keymaps/0xdec/rules.mk +++ b/keyboards/preonic/keymaps/0xdec/rules.mk @@ -1,6 +1,6 @@ # Build Options -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/preonic/keymaps/AlexDaigre/keymap.c b/keyboards/preonic/keymaps/AlexDaigre/keymap.c index 3ea61a26ee5a..ef4707f64b73 100644 --- a/keyboards/preonic/keymaps/AlexDaigre/keymap.c +++ b/keyboards/preonic/keymaps/AlexDaigre/keymap.c @@ -276,7 +276,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { return true; } -void dip_switch_update_user(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: if (active) { @@ -292,6 +292,7 @@ void dip_switch_update_user(uint8_t index, bool active) { muse_mode = false; } } + return true; } diff --git a/keyboards/preonic/keymaps/arkag/keymap.c b/keyboards/preonic/keymaps/arkag/keymap.c index 42b875d6776b..5e50c584afcf 100644 --- a/keyboards/preonic/keymaps/arkag/keymap.c +++ b/keyboards/preonic/keymaps/arkag/keymap.c @@ -20,11 +20,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_QWERTY] = LAYOUT_preonic_grid( - M_EHYPR, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, M_EHYPR, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXXXX, KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, - KC_LCTL, KC_LGUI, KC_LALT, MEDIA, SYMBOL, KC_SPC, M_LMHYP, ARROW, FUNCT, XXXXXXX, KC_RALT, KC_LEAD), + KC_LCTL, KC_LGUI, KC_LALT, MEDIA, SYMBOL, KC_SPC, KC_LEAD, ARROW, FUNCT, XXXXXXX, KC_RALT, KC_LEAD), [_SYMBOL] = LAYOUT_preonic_grid( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/preonic/keymaps/arkag/rules.mk b/keyboards/preonic/keymaps/arkag/rules.mk index 8b04cf2aaf5d..5b87801fca60 100644 --- a/keyboards/preonic/keymaps/arkag/rules.mk +++ b/keyboards/preonic/keymaps/arkag/rules.mk @@ -1,4 +1,4 @@ -BOOTMAGIC_ENABLE = lite +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no STENO_ENABLE = no EXTRAKEY_ENABLE = yes diff --git a/keyboards/preonic/keymaps/badger/keymap.c b/keyboards/preonic/keymaps/badger/keymap.c index 495cf28c455a..761beb861fab 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 . */ // 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/keymaps/bucktooth/rules.mk b/keyboards/preonic/keymaps/bucktooth/rules.mk index 8f226afd905b..fc2652965222 100644 --- a/keyboards/preonic/keymaps/bucktooth/rules.mk +++ b/keyboards/preonic/keymaps/bucktooth/rules.mk @@ -1,6 +1,6 @@ -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/preonic/keymaps/cranium/keymap.c b/keyboards/preonic/keymaps/cranium/keymap.c index 63897d1e6d6b..2c1337d84326 100644 --- a/keyboards/preonic/keymaps/cranium/keymap.c +++ b/keyboards/preonic/keymaps/cranium/keymap.c @@ -175,7 +175,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { return true; } -void dip_update(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: if (active) { @@ -191,6 +191,7 @@ void dip_update(uint8_t index, bool active) { muse_mode = false; } } + return true; } void matrix_scan_user(void) { diff --git a/keyboards/preonic/keymaps/davidrambo/config.h b/keyboards/preonic/keymaps/davidrambo/config.h new file mode 100644 index 000000000000..c99ca8381cb1 --- /dev/null +++ b/keyboards/preonic/keymaps/davidrambo/config.h @@ -0,0 +1,20 @@ +/* Copyright 2021 David Rambo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define TAPPING_TERM 200 +#define PERMISSIVE_HOLD diff --git a/keyboards/preonic/keymaps/davidrambo/keymap.c b/keyboards/preonic/keymaps/davidrambo/keymap.c new file mode 100755 index 000000000000..322089d917cc --- /dev/null +++ b/keyboards/preonic/keymaps/davidrambo/keymap.c @@ -0,0 +1,179 @@ +/* Copyright 2021 David Rambo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +//aliases for clarity in layering +#define A_BSPC LALT(KC_BSPC) // delete whole word in Mac +#define C_BSPC LCTL(KC_BSPC) // delete whole word in PC +#define A_LEFT LALT(KC_LEFT) // move cursor whole word back in Mac +#define A_RGHT LALT(KC_RGHT) // move cursor whole word forward in Mac +#define C_RGHT LCTL(KC_RGHT) // move cursor whole word back in PC +#define C_LEFT LCTL(KC_LEFT) // move cursor whole word forward in PC +#define SftEnt SFT_T(KC_ENT) +#define BS_GUI LGUI_T(KC_BSPC) +#define BS_CTL LCTL_T(KC_BSPC) +#define RECT LCA_T(KC_DEL) // Ctrl+Alt is the basis for Rectangle WM + +// internet browser tab shortcuts and window/application swapping for Mac and Win +#define GSL LGUI(S(KC_LEFT)) // back one tab in Safari +#define GSR LGUI(S(KC_RGHT)) // forward one tab in Safari +#define CTLPGUP LCTL(KC_PGUP) // back one tab on PC +#define CTLPGDN LCTL(KC_PGDN) // forward one tab on PC +#define G_TAB LGUI(KC_TAB) // Mac: switch applications +#define G_GRV LGUI(KC_GRV) // Mac: switch between windows within an application +#define A_TAB LALT(KC_TAB) +#define C_TAB LCTL(KC_TAB) + +// navigKC_ation layers for both Mac OS X and Windows +#define NAVMAC LT(5, KC_ESC) +#define NAVPC LT(6, KC_ESC) +#define NAVQUD LT(7, KC_ESC) + +enum custom_layers { + _COLEMAK, + _PC, + _QUD, + _GAME, + _SYMBOL, + _NAVMAC, + _NAVPC, + _NAVQUD, +} + +//tapdance declarations +enum { + SFT_LCK +}; + +#define SftLck TD(SFT_LCK) /* alias for tapdance */ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Colemak + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | ESC` | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * |SftLck| Z | X | C | V | B | K | M | , | . | /? |SftEnt| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Del |PrnSc | GUI | Alt | Ctrl |BsGui | Space|Symbol| Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' +*/ + +[_COLEMAK] = LAYOUT_preonic_grid( + KC_GRV , KC_1, KC_2, KC_3, KC_4, KC_5 , KC_6, KC_7, KC_8, KC_9, KC_0, TG(1) , + KC_TAB , KC_Q, KC_W, KC_F, KC_P, KC_G , KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, + NAVMAC , KC_A, KC_R, KC_S, KC_T, KC_D , KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + SftLck , KC_Z, KC_X, KC_C, KC_V, KC_B , KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, SftEnt , + RECT , KC_RCTL, KC_LGUI, KC_LCTL, KC_LALT, BS_GUI, KC_SPC, MO(4), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + +[_PC] = LAYOUT_preonic_grid( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TO(2) , + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + NAVPC , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_DEL , KC_PSCR, KC_LCTL, KC_LALT, KC_LGUI, BS_CTL , KC_SPC , MO(4) , _______, _______, _______, _______ + ), + +[_QUD] = LAYOUT_preonic_grid( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TO(3) , + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + NAVQUD , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_DEL , KC_PSCR, KC_LGUI, KC_LALT, KC_LCTL, NAVQUD , KC_SPC, MO(4) , _______, _______, _______, _______ + ), + +[_GAME] = LAYOUT_preonic_grid( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TO(0) , + KC_TAB , KC_T , KC_Q , KC_W , KC_E , KC_R , KC_Y , KC_U , KC_I , KC_O , KC_P , _______, + KC_TAB , KC_LSFT, KC_A , KC_S , KC_D , KC_F , KC_H , KC_J , KC_K , KC_L , KC_SCLN, _______, + KC_LALT, KC_LCTL, KC_Z , KC_X , KC_C , KC_V , KC_N , KC_M , _______, _______, _______, _______, + _______, _______, _______, KC_G , KC_B , KC_SPC , KC_I , MO(4) , _______, _______, _______, _______ + ), + +/* Symbol + * ,-----------------------------------------------------------------------------------. + * | [ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | ] | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | \| | ! | @ | # | $ | % | ^ | & | * | ( | ) | =+ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | Home | End | | Play | BRMD | BRMU | -_ |Pg Up | | / | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | `~ | | | | | | | |Pg Dn | Vol- | Vol+ | | + * `-----------------------------------------------------------------------------------' + */ +[_SYMBOL] = LAYOUT_preonic_grid( + KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , + KC_LBRC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_RBRC, + KC_BSLS, KC_EXLM, KC_AT , KC_HASH, KC_DLR , KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_EQL , + _______, KC_HOME, KC_END , KC_MNXT, KC_MPLY, KC_WH_L, KC_WH_R, KC_MINS, KC_PGUP, KC_WH_D, KC_WH_U, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_PGDN, KC_VOLD, KC_VOLU, KC_MUTE + ), + +/* Navigation*/ + +[_NAVMAC] = LAYOUT_preonic_grid( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, C_TAB , A_LEFT , KC_UP , A_RGHT , KC_DEL , _______, + _______, _______, _______, _______, _______, _______,S(C_TAB), KC_LEFT, KC_DOWN, KC_RGHT, C_TAB , _______, + _______, _______, _______, _______, _______, _______, G_TAB , A_BSPC , KC_HOME, KC_END , G_GRV , _______, + RESET , _______, _______, _______, KC_RALT, _______, _______, _______, _______, _______, _______, _______ +), + +[_NAVPC] = LAYOUT_preonic_grid( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, C_TAB , C_LEFT , KC_UP , C_RGHT , KC_DEL , _______, + _______, _______, _______, _______, _______, _______, CTLPGUP, KC_LEFT, KC_DOWN, KC_RGHT, CTLPGDN, _______, + _______, _______, _______, _______, _______, _______, A_TAB , C_BSPC , KC_HOME, KC_END , G_GRV , _______, + RESET , _______, _______, KC_RALT, _______, _______, _______, _______, _______, _______, _______, _______ +), + +[_NAVQUD] = LAYOUT_preonic_grid( + _______, _______, _______, _______, _______, _______, _______, _______, KC_PSLS, KC_PAST, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_P7 , KC_P8 , KC_P9 , _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_P4 , KC_P2 , KC_P6 , _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_P1 , KC_P5 , KC_P3 , _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_PMNS, KC_PPLS, _______, _______ +) +}; + +// Shift vs capslock function. From bbaserdem's Planck keymap. +void caps_tap (qk_tap_dance_state_t *state, void *user_data) { + if (state->count == 1) { + register_code (KC_LSFT); + } else if (state->count == 2) { + unregister_code (KC_LSFT); + register_code (KC_CAPS); + } +} +void caps_tap_end (qk_tap_dance_state_t *state, void *user_data) { + if (state->count == 1) { + unregister_code (KC_LSFT); + } else { + unregister_code (KC_CAPS); + } +} + +//Tap Dance Definitions +qk_tap_dance_action_t tap_dance_actions[] = { + //Tap once for Shift, twice for Caps Lock + [SFT_LCK] = ACTION_TAP_DANCE_FN_ADVANCED( caps_tap, NULL, caps_tap_end ) +}; diff --git a/keyboards/preonic/keymaps/davidrambo/rules.mk b/keyboards/preonic/keymaps/davidrambo/rules.mk new file mode 100644 index 000000000000..6f0d3dc0bbd8 --- /dev/null +++ b/keyboards/preonic/keymaps/davidrambo/rules.mk @@ -0,0 +1,3 @@ +TAP_DANCE_ENABLE = yes +AUDIO_ENABLE = no + diff --git a/keyboards/preonic/keymaps/default/config.h b/keyboards/preonic/keymaps/default/config.h index 37858350a846..8756e5012c79 100644 --- a/keyboards/preonic/keymaps/default/config.h +++ b/keyboards/preonic/keymaps/default/config.h @@ -1,13 +1,27 @@ +/* Copyright 2015-2021 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 . + */ + #pragma once #ifdef AUDIO_ENABLE - #define STARTUP_SONG SONG(PREONIC_SOUND) - // #define STARTUP_SONG SONG(NO_SOUND) +# define STARTUP_SONG SONG(PREONIC_SOUND) +// #define STARTUP_SONG SONG(NO_SOUND) - #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \ - SONG(COLEMAK_SOUND), \ - SONG(DVORAK_SOUND) \ - } +# define DEFAULT_LAYER_SONGS \ + { SONG(QWERTY_SOUND), SONG(COLEMAK_SOUND), SONG(DVORAK_SOUND) } #endif #define MUSIC_MASK (keycode != KC_NO) diff --git a/keyboards/preonic/keymaps/default/keymap.c b/keyboards/preonic/keymaps/default/keymap.c index b70aa31c1412..f99a6953c6b9 100644 --- a/keyboards/preonic/keymaps/default/keymap.c +++ b/keyboards/preonic/keymaps/default/keymap.c @@ -1,4 +1,4 @@ -/* Copyright 2015-2017 Jack Humbert +/* Copyright 2015-2021 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 @@ -263,7 +263,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { return true; } -void dip_switch_update_user(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: if (active) { @@ -279,6 +279,7 @@ void dip_switch_update_user(uint8_t index, bool active) { muse_mode = false; } } + return true; } diff --git a/keyboards/preonic/keymaps/dlaroe/rules.mk b/keyboards/preonic/keymaps/dlaroe/rules.mk index 2b7cff4db02e..4a62771e705c 100644 --- a/keyboards/preonic/keymaps/dlaroe/rules.mk +++ b/keyboards/preonic/keymaps/dlaroe/rules.mk @@ -4,7 +4,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/preonic/keymaps/drasbeck/keymap.c b/keyboards/preonic/keymaps/drasbeck/keymap.c index 909e86a97d8f..ae4804ce3f47 100644 --- a/keyboards/preonic/keymaps/drasbeck/keymap.c +++ b/keyboards/preonic/keymaps/drasbeck/keymap.c @@ -190,7 +190,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { return true; } -void dip_switch_update_user(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: if (active) { @@ -206,6 +206,7 @@ void dip_switch_update_user(uint8_t index, bool active) { muse_mode = false; } } + return true; } diff --git a/keyboards/preonic/keymaps/dudeofawesome/rules.mk b/keyboards/preonic/keymaps/dudeofawesome/rules.mk index 4434d3de7e5d..607192459ab3 100644 --- a/keyboards/preonic/keymaps/dudeofawesome/rules.mk +++ b/keyboards/preonic/keymaps/dudeofawesome/rules.mk @@ -1,4 +1,4 @@ -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MIDI_ENABLE = no # MIDI controls AUDIO_ENABLE = yes # Audio output on port C6 UNICODE_ENABLE = no # Unicode diff --git a/keyboards/preonic/keymaps/egstad/keymap.c b/keyboards/preonic/keymaps/egstad/keymap.c index 07eda6614476..f730d911cf3a 100644 --- a/keyboards/preonic/keymaps/egstad/keymap.c +++ b/keyboards/preonic/keymaps/egstad/keymap.c @@ -73,13 +73,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,-----------------------------------------------------------------------------------------------. * | ` ESC | 1 ! | 2 @ | 3 # | 4 $ | 5 % | 6 ^ | 7 & | 8 * | 9 ( | 0 ) | -_ =+ | * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| - * | TB/RS | Q | W | E | R | T | Y | U | I | O | P | [{ }] | + * | TB/RS | Q | W | E | R | T | Y | U | I | O | P | [{ }] | * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| * | BS/LW | A | S | D | F | G | H | J | K | L | ; | ' | * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| * | SFT | Z | X | C | V | B | N | M | , | . | / | SF/RN | * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| - * | LEADR | | CTL | ALT | CMD | BSP | SP/LW | RN/RS | ← | ↑ | ↓ | → | + * | LEADR | | CTL | ALT | CMD | BSP | SP/LW | RN/RS | ← | ↑ | ↓ | → | * `----------------------------------------------------------------------------------------------- */ @@ -107,7 +107,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| * | | | | | | | | [ { | ] } | ( | ) | \ | | * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| - * | | | | | | | >|| | | << | Vol-U | Vol-D | >> | + * | | | | | | | >|| | | << | Vol-U | Vol-D | >> | * `-----------------------------------------------------------------------------------------------' */ @@ -146,7 +146,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_CAPS, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, KC_PSLS, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT, KC_COMM, _______ \ ), - + @@ -178,8 +178,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -// this function -uint32_t layer_state_set_user(uint32_t state) { +// this function +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, L_LOWER, L_RAISE, L_ADJUST); } @@ -201,8 +201,8 @@ uint32_t layer_state_set_user(uint32_t state) { * | | | | | | | | | | | | | * `-----------------------------------------------------------------------------------------------' */ -/* -[L_BLANK] = LAYOUT_preonic_grid( +/* +[L_BLANK] = LAYOUT_preonic_grid( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ diff --git a/keyboards/preonic/keymaps/elisiano/keymap.c b/keyboards/preonic/keymaps/elisiano/keymap.c index 8d3898922f66..d885d1f0287a 100644 --- a/keyboards/preonic/keymaps/elisiano/keymap.c +++ b/keyboards/preonic/keymaps/elisiano/keymap.c @@ -257,7 +257,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { return true; } -void dip_switch_update_user(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: if (active) { @@ -273,6 +273,7 @@ void dip_switch_update_user(uint8_t index, bool active) { muse_mode = false; } } + return true; } diff --git a/keyboards/preonic/keymaps/fsck/keymap.c b/keyboards/preonic/keymaps/fsck/keymap.c index 8e2747f44554..dea152360064 100644 --- a/keyboards/preonic/keymaps/fsck/keymap.c +++ b/keyboards/preonic/keymaps/fsck/keymap.c @@ -202,7 +202,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { return true; } -void dip_update(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: if (active) { @@ -221,6 +221,7 @@ void dip_update(uint8_t index, bool active) { #endif } } + return true; } void matrix_scan_user(void) { diff --git a/keyboards/preonic/keymaps/jacwib/rules.mk b/keyboards/preonic/keymaps/jacwib/rules.mk index 8f226afd905b..fc2652965222 100644 --- a/keyboards/preonic/keymaps/jacwib/rules.mk +++ b/keyboards/preonic/keymaps/jacwib/rules.mk @@ -1,6 +1,6 @@ -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/preonic/keymaps/keelhauler/keymap.c b/keyboards/preonic/keymaps/keelhauler/keymap.c index c7e0766920b3..dc0cffe094ac 100644 --- a/keyboards/preonic/keymaps/keelhauler/keymap.c +++ b/keyboards/preonic/keymaps/keelhauler/keymap.c @@ -264,7 +264,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { return true; } -void dip_switch_update_user(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: if (active) { @@ -280,6 +280,7 @@ void dip_switch_update_user(uint8_t index, bool active) { muse_mode = false; } } + return true; } diff --git a/keyboards/preonic/keymaps/kinesis/rules.mk b/keyboards/preonic/keymaps/kinesis/rules.mk index 94d02c8b773d..2f8516a96ef7 100644 --- a/keyboards/preonic/keymaps/kinesis/rules.mk +++ b/keyboards/preonic/keymaps/kinesis/rules.mk @@ -4,7 +4,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/preonic/keymaps/kjwon15/keymap.c b/keyboards/preonic/keymaps/kjwon15/keymap.c index 6f1d5f30af03..2f25cdfa8541 100644 --- a/keyboards/preonic/keymaps/kjwon15/keymap.c +++ b/keyboards/preonic/keymaps/kjwon15/keymap.c @@ -327,7 +327,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { return true; } -void dip_switch_update_user(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: if (active) { @@ -343,6 +343,7 @@ void dip_switch_update_user(uint8_t index, bool active) { muse_mode = false; } } + return true; } void matrix_scan_user(void) { diff --git a/keyboards/preonic/keymaps/kuatsure/keymap.c b/keyboards/preonic/keymaps/kuatsure/keymap.c index 907360d0cfa1..5bd7321d4984 100644 --- a/keyboards/preonic/keymaps/kuatsure/keymap.c +++ b/keyboards/preonic/keymaps/kuatsure/keymap.c @@ -17,6 +17,8 @@ #include QMK_KEYBOARD_H #include "kuatsure.h" +#define LAYOUT_preonic_grid_wrapper(...) LAYOUT_preonic_grid(__VA_ARGS__) + enum preonic_layers { _QWERTY, _GAME, diff --git a/keyboards/preonic/keymaps/laurentlaurent/keymap.c b/keyboards/preonic/keymaps/laurentlaurent/keymap.c index b1a73035b30d..62943a420c8d 100644 --- a/keyboards/preonic/keymaps/laurentlaurent/keymap.c +++ b/keyboards/preonic/keymaps/laurentlaurent/keymap.c @@ -554,7 +554,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { return true; } -void dip_switch_update_user(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: if (active) { @@ -570,6 +570,7 @@ void dip_switch_update_user(uint8_t index, bool active) { muse_mode = false; } } + return true; } void matrix_scan_user(void) { diff --git a/keyboards/preonic/keymaps/mechmaster48/config.h b/keyboards/preonic/keymaps/mechmaster48/config.h new file mode 100644 index 000000000000..208d7abdbcee --- /dev/null +++ b/keyboards/preonic/keymaps/mechmaster48/config.h @@ -0,0 +1,46 @@ +/* Copyright 2021 mechmaster48 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#ifdef AUDIO_ENABLE + #define STARTUP_SONG SONG(PREONIC_SOUND) + // #define STARTUP_SONG SONG(NO_SOUND) + + #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \ + SONG(COLEMAK_SOUND), \ + SONG(DVORAK_SOUND) \ + } +#endif + +#define MUSIC_MASK (keycode != KC_NO) + +/* + * MIDI options + */ + +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ + +#define MIDI_BASIC + +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +//#define MIDI_ADVANCED diff --git a/keyboards/preonic/keymaps/mechmaster48/keymap.c b/keyboards/preonic/keymaps/mechmaster48/keymap.c new file mode 100644 index 000000000000..ede376523811 --- /dev/null +++ b/keyboards/preonic/keymaps/mechmaster48/keymap.c @@ -0,0 +1,256 @@ +/* Copyright 2021 MechMaster48 admin@mechbox.net + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +#include "muse.h" + +enum preonic_layers { + _QWERTY, + _LOWER, + _RAISE, + _ADJUST +}; + +enum preonic_keycodes { + QWERTY = SAFE_RANGE, + LOWER, + RAISE, + BACKLIT +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Caps | A | S | D | F | G | H | J | K | L | ; | Enter| + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / | " | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | Alt | Gui | Brite |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_QWERTY] = LAYOUT_preonic_grid( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT, + KC_LCTL, KC_LALT, KC_LGUI, BACKLIT, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT +), + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = LAYOUT_preonic_grid( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME, KC_END, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY +), + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | Pg Up| Pg Dn| | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = LAYOUT_preonic_grid( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY +), + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | Reset| Debug| | | | |TermOf|TermOn| | | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | |Aud cy|Aud on|AudOff|AGnorm|AGswap|Qwerty| | | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | |Voice-|Voice+|Mus on|MusOff|MidiOn|MidOff| | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = LAYOUT_preonic_grid( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + _______, RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL, + _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, _______, _______, _______, _______, + _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +) + + +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + set_single_persistent_default_layer(_QWERTY); + } + return false; + break; + case LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case BACKLIT: + if (record->event.pressed) { + register_code(KC_RSFT); + #ifdef BACKLIGHT_ENABLE + backlight_step(); + #endif + #ifdef RGBLIGHT_ENABLE + rgblight_step(); + #endif + #ifdef __AVR__ + writePinLow(E6); + #endif + } else { + unregister_code(KC_RSFT); + #ifdef __AVR__ + writePinHigh(E6); + #endif + } + return false; + break; + } + return true; +}; + +bool muse_mode = false; +uint8_t last_muse_note = 0; +uint16_t muse_counter = 0; +uint8_t muse_offset = 70; +uint16_t muse_tempo = 50; + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (muse_mode) { + if (IS_LAYER_ON(_RAISE)) { + if (clockwise) { + muse_offset++; + } else { + muse_offset--; + } + } else { + if (clockwise) { + muse_tempo+=1; + } else { + muse_tempo-=1; + } + } + } else { + if (clockwise) { + register_code(KC_PGDN); + unregister_code(KC_PGDN); + } else { + register_code(KC_PGUP); + unregister_code(KC_PGUP); + } + } + return true; +} + +void dip_switch_update_user(uint8_t index, bool active) { + switch (index) { + case 0: + if (active) { + layer_on(_ADJUST); + } else { + layer_off(_ADJUST); + } + break; + case 1: + if (active) { + muse_mode = true; + } else { + muse_mode = false; + } + } +} + + +void matrix_scan_user(void) { +#ifdef AUDIO_ENABLE + if (muse_mode) { + if (muse_counter == 0) { + uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()]; + if (muse_note != last_muse_note) { + stop_note(compute_freq_for_midi_note(last_muse_note)); + play_note(compute_freq_for_midi_note(muse_note), 0xF); + last_muse_note = muse_note; + } + } + muse_counter = (muse_counter + 1) % muse_tempo; + } else { + if (muse_counter) { + stop_all_notes(); + muse_counter = 0; + } + } +#endif +} + +bool music_mask_user(uint16_t keycode) { + switch (keycode) { + case RAISE: + case LOWER: + return false; + default: + return true; + } +} diff --git a/keyboards/preonic/keymaps/mechmaster48/readme.md b/keyboards/preonic/keymaps/mechmaster48/readme.md new file mode 100644 index 000000000000..8e2f9c111259 --- /dev/null +++ b/keyboards/preonic/keymaps/mechmaster48/readme.md @@ -0,0 +1,14 @@ +# OLKB Preonic Rev3 layout by mechmaster48 + +- A simple layout largely based on the default with minor tweaks to fit my typing. +- The esacpe key has been moved to the top left, ctrl and alt moved to bottom left, and enter key has been moved up one space underneath delete. +- Colemak and Dvorak layers have been removed in this keymap as I do not and will not use them. + +![base layer](https://i.imgur.com/zrmDHXx.gif) +#------------------------------------------------------ +![lower layer](https://imgur.com/sDEeixE.gif) +#------------------------------------------------------ +![raise layer](https://imgur.com/bGLukr1.gif) +#------------------------------------------------------ +![adjust layer](https://imgur.com/UsB87YE.gif) +#------------------------------------------------------ diff --git a/keyboards/preonic/keymaps/mechmaster48/rules.mk b/keyboards/preonic/keymaps/mechmaster48/rules.mk new file mode 100644 index 000000000000..dcf16bef3994 --- /dev/null +++ b/keyboards/preonic/keymaps/mechmaster48/rules.mk @@ -0,0 +1 @@ +SRC += muse.c diff --git a/keyboards/preonic/keymaps/mguterl/keymap.c b/keyboards/preonic/keymaps/mguterl/keymap.c index 4e8738be2d35..87a9cd32b314 100644 --- a/keyboards/preonic/keymaps/mguterl/keymap.c +++ b/keyboards/preonic/keymaps/mguterl/keymap.c @@ -273,7 +273,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { return true; } -void dip_switch_update_user(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: if (active) { @@ -289,6 +289,7 @@ void dip_switch_update_user(uint8_t index, bool active) { muse_mode = false; } } + return true; } diff --git a/keyboards/preonic/keymaps/mikethetiger/keymap.c b/keyboards/preonic/keymaps/mikethetiger/keymap.c index e4b1f2e82a9f..36e09e55018b 100644 --- a/keyboards/preonic/keymaps/mikethetiger/keymap.c +++ b/keyboards/preonic/keymaps/mikethetiger/keymap.c @@ -242,7 +242,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { return true; } -void dip_update(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: if (active) { @@ -261,6 +261,7 @@ void dip_update(uint8_t index, bool active) { #endif } } + return true; } void matrix_scan_user(void) { diff --git a/keyboards/preonic/keymaps/muzfuz/keymap.c b/keyboards/preonic/keymaps/muzfuz/keymap.c index a728946775aa..c0c7ae07e6ed 100644 --- a/keyboards/preonic/keymaps/muzfuz/keymap.c +++ b/keyboards/preonic/keymaps/muzfuz/keymap.c @@ -197,7 +197,7 @@ uint16_t muse_counter = 0; uint8_t muse_offset = 70; uint16_t muse_tempo = 50; -bool encoder_update(bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (muse_mode) { if (IS_LAYER_ON(_RAISE)) { if (clockwise) { @@ -224,7 +224,7 @@ bool encoder_update(bool clockwise) { return true; } -void dip_update(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: if (active) { @@ -243,6 +243,7 @@ void dip_update(uint8_t index, bool active) { #endif } } + return true; } void matrix_scan_user(void) { diff --git a/keyboards/preonic/keymaps/mverteuil/keymap.c b/keyboards/preonic/keymaps/mverteuil/keymap.c index 60677701c7f0..ef0185169005 100644 --- a/keyboards/preonic/keymaps/mverteuil/keymap.c +++ b/keyboards/preonic/keymaps/mverteuil/keymap.c @@ -459,7 +459,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { return true; } -void dip_switch_update_user(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: if (active) { @@ -475,6 +475,7 @@ void dip_switch_update_user(uint8_t index, bool active) { muse_mode = false; } } + return true; } void matrix_scan_user(void) { diff --git a/keyboards/preonic/keymaps/mverteuil_2x2u/keymap.c b/keyboards/preonic/keymaps/mverteuil_2x2u/keymap.c index 290ea16387d2..4b2805854084 100644 --- a/keyboards/preonic/keymaps/mverteuil_2x2u/keymap.c +++ b/keyboards/preonic/keymaps/mverteuil_2x2u/keymap.c @@ -395,7 +395,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { return true; } -void dip_switch_update_user(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: if (active) { @@ -411,4 +411,5 @@ void dip_switch_update_user(uint8_t index, bool active) { muse_mode = false; } } + return true; } diff --git a/keyboards/preonic/keymaps/pezhore/keymap.c b/keyboards/preonic/keymaps/pezhore/keymap.c index 71d9306dc5a2..c41fb4500fb6 100644 --- a/keyboards/preonic/keymaps/pezhore/keymap.c +++ b/keyboards/preonic/keymaps/pezhore/keymap.c @@ -257,7 +257,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { return true; } -void dip_switch_update_user(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: if (active) { @@ -273,6 +273,7 @@ void dip_switch_update_user(uint8_t index, bool active) { muse_mode = false; } } + return true; } diff --git a/keyboards/preonic/keymaps/pitty/keymap.c b/keyboards/preonic/keymaps/pitty/keymap.c index 10957d8ac27a..25c648eea6d6 100644 --- a/keyboards/preonic/keymaps/pitty/keymap.c +++ b/keyboards/preonic/keymaps/pitty/keymap.c @@ -50,9 +50,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_QWERTY] = LAYOUT_preonic_grid( \ - HU_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, HU_OE, HU_UE, \ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, HU_Z, KC_U, KC_I, KC_O, KC_P, HU_OEE, \ - KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, HU_EE, HU_AA, \ + HU_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, HU_ODIA, HU_UDIA, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, HU_Z, KC_U, KC_I, KC_O, KC_P, HU_ODAC, \ + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, HU_EACU, HU_AACU, \ MT(MOD_LSFT, KC_NUBS), HU_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, HU_COMM, HU_DOT, HU_MINS, KC_RSFT, \ KC_LCTL, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_SPC, KC_ENT, KC_BSPC, KC_RALT, RAISE, KC_INS, KC_DEL \ ), @@ -72,9 +72,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_GAME] = LAYOUT_preonic_grid( \ - HU_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, HU_OE, HU_UE, \ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, HU_Z, KC_U, KC_I, KC_O, KC_P, HU_OEE, \ - KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, HU_EE, HU_AA, \ + HU_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, HU_ODIA, HU_UDIA, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, HU_Z, KC_U, KC_I, KC_O, KC_P, HU_ODAC, \ + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, HU_EACU, HU_AACU, \ KC_LSFT, HU_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, HU_COMM, HU_DOT, HU_MINS, KC_RSFT, \ KC_LCTL, KC_LGUI, KC_LALT, RAISE, KC_SPC, KC_SPC, KC_ENT, KC_BSPC, KC_RALT, LOWER, KC_INS, KC_DEL \ ), diff --git a/keyboards/preonic/keymaps/senseored/keymap.c b/keyboards/preonic/keymaps/senseored/keymap.c index c78528d8c3d0..e15250783508 100644 --- a/keyboards/preonic/keymaps/senseored/keymap.c +++ b/keyboards/preonic/keymaps/senseored/keymap.c @@ -345,7 +345,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { return true; } -void dip_switch_update_user(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: if (active) { @@ -361,10 +361,11 @@ void dip_switch_update_user(uint8_t index, bool active) { muse_mode = false; } } + return true; } -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { // if(rgblight_get_mode() == 1) { switch (biton32(state)) { case _QWERTY: diff --git a/keyboards/preonic/keymaps/seph/rules.mk b/keyboards/preonic/keymaps/seph/rules.mk index dd26cd906d3b..0869baa8d7ee 100644 --- a/keyboards/preonic/keymaps/seph/rules.mk +++ b/keyboards/preonic/keymaps/seph/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/preonic/keymaps/that_canadian/Makefile b/keyboards/preonic/keymaps/that_canadian/Makefile deleted file mode 100644 index 773e5c45dadd..000000000000 --- a/keyboards/preonic/keymaps/that_canadian/Makefile +++ /dev/null @@ -1,22 +0,0 @@ - - -# Build Options -# change to "no" to disable the options, or define them in the Makefile in -# the appropriate keymap folder that will get included automatically -# -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) -COMMAND_ENABLE = yes # 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 -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = yes # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. - -# 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/preonic/keymaps/that_canadian/rules.mk b/keyboards/preonic/keymaps/that_canadian/rules.mk new file mode 100644 index 000000000000..1c0fc5805230 --- /dev/null +++ b/keyboards/preonic/keymaps/that_canadian/rules.mk @@ -0,0 +1,22 @@ + + +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = yes # 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 +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = yes # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. + +# 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/preonic/keymaps/via/keymap.c b/keyboards/preonic/keymaps/via/keymap.c index 5df57fd3d201..fe62441049f3 100644 --- a/keyboards/preonic/keymaps/via/keymap.c +++ b/keyboards/preonic/keymaps/via/keymap.c @@ -147,7 +147,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { return true; } -void dip_switch_update_user(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: if (active) { @@ -163,6 +163,7 @@ void dip_switch_update_user(uint8_t index, bool active) { muse_mode = false; } } + return true; } diff --git a/keyboards/preonic/keymaps/xulkal/keymap.c b/keyboards/preonic/keymaps/xulkal/keymap.c index f127ea46934b..425c2bb3c617 100644 --- a/keyboards/preonic/keymaps/xulkal/keymap.c +++ b/keyboards/preonic/keymaps/xulkal/keymap.c @@ -101,7 +101,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { return true; } -void dip_update(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: if (active) { @@ -120,6 +120,7 @@ void dip_update(uint8_t index, bool active) { #endif } } + return true } void matrix_scan_user(void) { diff --git a/keyboards/preonic/keymaps/zach/rules.mk b/keyboards/preonic/keymaps/zach/rules.mk index 77efcf3832fe..8cd4f98eeb2c 100644 --- a/keyboards/preonic/keymaps/zach/rules.mk +++ b/keyboards/preonic/keymaps/zach/rules.mk @@ -2,17 +2,16 @@ # Max .hex size is about 28636 bytes # Build Options -# change to "no" to disable the options, or define them in the Makefile in +# change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # TAP_DANCE_ENABLE = yes # Enable TapDance functionality -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = no # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -USB_6KRO_ENABLE = no # 6key Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality MIDI_ENABLE = no # MIDI controls AUDIO_ENABLE = yes # Audio output on port C6 @@ -20,7 +19,6 @@ AUDIO_ENABLE = yes # Audio output on port C6 UNICODE_ENABLE = no # Unicode UNICODEMAP_ENABLE = yes # Enable extended unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - diff --git a/keyboards/preonic/preonic.h b/keyboards/preonic/preonic.h index 4f8ebcc3ee51..6b10a425abbb 100644 --- a/keyboards/preonic/preonic.h +++ b/keyboards/preonic/preonic.h @@ -1,3 +1,20 @@ +/* + * Copyright 2018 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 . + */ + #pragma once #include "quantum.h" @@ -5,16 +22,14 @@ /************************************************** ** Include headers specific to keyboard revision ** **************************************************/ -#ifdef KEYBOARD_preonic_rev1 - #include "rev1.h" -#endif - -#ifdef KEYBOARD_preonic_rev2 - #include "rev2.h" -#endif - -#ifdef KEYBOARD_preonic_rev3 - #include "rev3.h" +#if defined(KEYBOARD_preonic_rev1) +# include "rev1.h" +#elif defined(KEYBOARD_preonic_rev2) +# include "rev2.h" +#elif defined(KEYBOARD_preonic_rev3) +# include "rev3.h" +#elif defined(KEYBOARD_preonic_rev3_drop) +# include "rev3_drop.h" #endif diff --git a/keyboards/preonic/rev1/config.h b/keyboards/preonic/rev1/config.h index 76b6465909a8..a1091b10ed0c 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 . */ -#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/rev1/rules.mk b/keyboards/preonic/rev1/rules.mk index dea2bbbca908..5ebb297687ee 100644 --- a/keyboards/preonic/rev1/rules.mk +++ b/keyboards/preonic/rev1/rules.mk @@ -2,35 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls AUDIO_ENABLE = yes # Audio output -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -API_SYSEX_ENABLE = no - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend LAYOUTS = ortho_5x12 diff --git a/keyboards/preonic/rev2/config.h b/keyboards/preonic/rev2/config.h index 29fc091848db..a62fed48508e 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 . */ -#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/rev2/rules.mk b/keyboards/preonic/rev2/rules.mk index 1b72a622a238..72f421c30683 100644 --- a/keyboards/preonic/rev2/rules.mk +++ b/keyboards/preonic/rev2/rules.mk @@ -2,35 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = qmk-dfu # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls AUDIO_ENABLE = yes # Audio output -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -API_SYSEX_ENABLE = no - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend LAYOUTS = ortho_5x12 diff --git a/keyboards/preonic/rev3/config.h b/keyboards/preonic/rev3/config.h index 0e831244563e..f2c4b3c3d8cf 100644 --- a/keyboards/preonic/rev3/config.h +++ b/keyboards/preonic/rev3/config.h @@ -15,8 +15,7 @@ * along with this program. If not, see . */ -#ifndef REV3_CONFIG_H -#define REV3_CONFIG_H +#pragma once /* USB Device descriptor parameter */ #define DEVICE_VER 0x0003 @@ -93,26 +92,6 @@ //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* * WS2812 Underglow Matrix options */ @@ -127,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/preonic/rev3/info.json b/keyboards/preonic/rev3/info.json index 506c2610e111..8b7a65384e0a 100644 --- a/keyboards/preonic/rev3/info.json +++ b/keyboards/preonic/rev3/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Preonic rev. 3", "url": "https://olkb.com/preonic", "maintainer": "jackhumbert", - "width": 12, - "height": 5, "layouts": { "LAYOUT_preonic_1x2uC": { "layout": [ diff --git a/keyboards/preonic/rev3/rev3.c b/keyboards/preonic/rev3/rev3.c index ec8a56108ecc..7ccff70611bb 100644 --- a/keyboards/preonic/rev3/rev3.c +++ b/keyboards/preonic/rev3/rev3.c @@ -43,23 +43,6 @@ led_config_t g_led_config = { { // 7 8 1 2 #endif -void matrix_init_kb(void) { - matrix_init_user(); -} - -void matrix_scan_kb(void) { - matrix_scan_user(); -} - -#ifdef DIP_SWITCH_ENABLE - __attribute__((weak)) -void dip_update(uint8_t index, bool active) {} - - __attribute__((weak)) -void dip_switch_update_user(uint8_t index, bool active) { - dip_update(index, active); -} -#endif #ifdef SWAP_HANDS_ENABLE __attribute__ ((weak)) diff --git a/keyboards/preonic/rev3/rules.mk b/keyboards/preonic/rev3/rules.mk index 034ace02ad3f..8026f523f422 100644 --- a/keyboards/preonic/rev3/rules.mk +++ b/keyboards/preonic/rev3/rules.mk @@ -9,24 +9,16 @@ BOOTLOADER = stm32-dfu # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # 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 -MIDI_ENABLE = no # MIDI controls AUDIO_ENABLE = yes # Audio output -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. WS2812_DRIVER = pwm -API_SYSEX_ENABLE = no - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -#SLEEP_LED_ENABLE = yes # Do not enable RGB_MATRIX_ENABLE together with RGBLIGHT_ENABLE RGB_MATRIX_ENABLE = no diff --git a/keyboards/preonic/rev3_drop/chconf.h b/keyboards/preonic/rev3_drop/chconf.h new file mode 100644 index 000000000000..47dd995f8171 --- /dev/null +++ b/keyboards/preonic/rev3_drop/chconf.h @@ -0,0 +1,29 @@ +/* Copyright 2021 QMK Contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/preonic/rev3/chconf.h -r platforms/chibios/QMK_PROTON_C/configs/chconf.h` + */ + +#pragma once + +#define CH_CFG_ST_RESOLUTION 16 + +#define CH_CFG_ST_FREQUENCY 10000 + +#include_next + diff --git a/keyboards/preonic/rev3_drop/config.h b/keyboards/preonic/rev3_drop/config.h new file mode 100644 index 000000000000..1a0605e73903 --- /dev/null +++ b/keyboards/preonic/rev3_drop/config.h @@ -0,0 +1,110 @@ +/* + * Copyright 2018 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 . + */ + +#pragma once + +/* USB Device descriptor parameter */ +#define DEVICE_VER 0x0003 +#define PRODUCT_ID 0xA649 +#undef MANUFACTURER +#define MANUFACTURER Drop + +#undef MATRIX_ROWS +#undef MATRIX_COLS +/* key matrix size */ +#define MATRIX_ROWS 10 +#define MATRIX_COLS 6 + +#undef MATRIX_ROW_PINS +#undef MATRIX_COL_PINS +#define MATRIX_ROW_PINS { A10, A9, A8, B15, C13, C14, C15, A2, A3, A6 } +#define MATRIX_COL_PINS { B11, B10, B2, B1, A7, B0 } +#define UNUSED_PINS + +#define ENCODERS_PAD_A { B12 } +#define ENCODERS_PAD_B { B13 } + +#define DIP_SWITCH_PINS { B14, A15, A0, B9 } + +#define MUSIC_MAP +#undef AUDIO_VOICES +#undef AUDIO_PIN +#define AUDIO_PIN A5 +#define AUDIO_PIN_ALT A4 +#define AUDIO_PIN_ALT_AS_NEGATIVE + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +// #define DEBOUNCE 6 + +/* 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 + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* + * WS2812 Underglow Matrix options + */ +#define RGB_DI_PIN A1 +#define RGBLED_NUM 9 +#define RGBLIGHT_ANIMATIONS +// RGB Matrix support +#define DRIVER_LED_TOTAL RGBLED_NUM + +#define WS2812_PWM_DRIVER PWMD2 +#define WS2812_PWM_CHANNEL 2 +#define WS2812_PWM_PAL_MODE 1 +#define WS2812_DMA_STREAM STM32_DMA1_STREAM2 +#define WS2812_DMA_CHANNEL 2 diff --git a/keyboards/preonic/rev3_drop/halconf.h b/keyboards/preonic/rev3_drop/halconf.h new file mode 100644 index 000000000000..153eacb2127d --- /dev/null +++ b/keyboards/preonic/rev3_drop/halconf.h @@ -0,0 +1,23 @@ +/* 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 . + */ +#pragma once + +#define HAL_USE_PWM TRUE +#define HAL_USE_GPT TRUE +#define HAL_USE_DAC TRUE +#define HAL_USE_I2C TRUE + +#include_next diff --git a/keyboards/preonic/rev3_drop/info.json b/keyboards/preonic/rev3_drop/info.json new file mode 100644 index 000000000000..8b7a65384e0a --- /dev/null +++ b/keyboards/preonic/rev3_drop/info.json @@ -0,0 +1,342 @@ +{ + "keyboard_name": "Preonic rev. 3", + "url": "https://olkb.com/preonic", + "maintainer": "jackhumbert", + "layouts": { + "LAYOUT_preonic_1x2uC": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + + {"x": 0, "y": 1}, + {"x": 1, "y": 1}, + {"x": 2, "y": 1}, + {"x": 3, "y": 1}, + {"x": 4, "y": 1}, + {"x": 5, "y": 1}, + {"x": 6, "y": 1}, + {"x": 7, "y": 1}, + {"x": 8, "y": 1}, + {"x": 9, "y": 1}, + {"x": 10, "y": 1}, + {"x": 11, "y": 1}, + + {"x": 0, "y": 2}, + {"x": 1, "y": 2}, + {"x": 2, "y": 2}, + {"x": 3, "y": 2}, + {"x": 4, "y": 2}, + {"x": 5, "y": 2}, + {"x": 6, "y": 2}, + {"x": 7, "y": 2}, + {"x": 8, "y": 2}, + {"x": 9, "y": 2}, + {"x": 10, "y": 2}, + {"x": 11, "y": 2}, + + {"x": 0, "y": 3}, + {"x": 1, "y": 3}, + {"x": 2, "y": 3}, + {"x": 3, "y": 3}, + {"x": 4, "y": 3}, + {"x": 5, "y": 3}, + {"x": 6, "y": 3}, + {"x": 7, "y": 3}, + {"x": 8, "y": 3}, + {"x": 9, "y": 3}, + {"x": 10, "y": 3}, + {"x": 11, "y": 3}, + + {"x": 0, "y": 4}, + {"x": 1, "y": 4}, + {"x": 2, "y": 4}, + {"x": 3, "y": 4}, + {"x": 4, "y": 4}, + {"x": 5, "y": 4, "w": 2}, + {"x": 7, "y": 4}, + {"x": 8, "y": 4}, + {"x": 9, "y": 4}, + {"x": 10, "y": 4}, + {"x": 11, "y": 4} + ] + }, + "LAYOUT_preonic_1x2uR": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + + {"x": 0, "y": 1}, + {"x": 1, "y": 1}, + {"x": 2, "y": 1}, + {"x": 3, "y": 1}, + {"x": 4, "y": 1}, + {"x": 5, "y": 1}, + {"x": 6, "y": 1}, + {"x": 7, "y": 1}, + {"x": 8, "y": 1}, + {"x": 9, "y": 1}, + {"x": 10, "y": 1}, + {"x": 11, "y": 1}, + + {"x": 0, "y": 2}, + {"x": 1, "y": 2}, + {"x": 2, "y": 2}, + {"x": 3, "y": 2}, + {"x": 4, "y": 2}, + {"x": 5, "y": 2}, + {"x": 6, "y": 2}, + {"x": 7, "y": 2}, + {"x": 8, "y": 2}, + {"x": 9, "y": 2}, + {"x": 10, "y": 2}, + {"x": 11, "y": 2}, + + {"x": 0, "y": 3}, + {"x": 1, "y": 3}, + {"x": 2, "y": 3}, + {"x": 3, "y": 3}, + {"x": 4, "y": 3}, + {"x": 5, "y": 3}, + {"x": 6, "y": 3}, + {"x": 7, "y": 3}, + {"x": 8, "y": 3}, + {"x": 9, "y": 3}, + {"x": 10, "y": 3}, + {"x": 11, "y": 3}, + + {"x": 0, "y": 4}, + {"x": 1, "y": 4}, + {"x": 2, "y": 4}, + {"x": 3, "y": 4}, + {"x": 4, "y": 4}, + {"x": 5, "y": 4}, + {"x": 6, "y": 4, "w": 2}, + {"x": 8, "y": 4}, + {"x": 9, "y": 4}, + {"x": 10, "y": 4}, + {"x": 11, "y": 4} + ] + }, + "LAYOUT_preonic_1x2uL": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + + {"x": 0, "y": 1}, + {"x": 1, "y": 1}, + {"x": 2, "y": 1}, + {"x": 3, "y": 1}, + {"x": 4, "y": 1}, + {"x": 5, "y": 1}, + {"x": 6, "y": 1}, + {"x": 7, "y": 1}, + {"x": 8, "y": 1}, + {"x": 9, "y": 1}, + {"x": 10, "y": 1}, + {"x": 11, "y": 1}, + + {"x": 0, "y": 2}, + {"x": 1, "y": 2}, + {"x": 2, "y": 2}, + {"x": 3, "y": 2}, + {"x": 4, "y": 2}, + {"x": 5, "y": 2}, + {"x": 6, "y": 2}, + {"x": 7, "y": 2}, + {"x": 8, "y": 2}, + {"x": 9, "y": 2}, + {"x": 10, "y": 2}, + {"x": 11, "y": 2}, + + {"x": 0, "y": 3}, + {"x": 1, "y": 3}, + {"x": 2, "y": 3}, + {"x": 3, "y": 3}, + {"x": 4, "y": 3}, + {"x": 5, "y": 3}, + {"x": 6, "y": 3}, + {"x": 7, "y": 3}, + {"x": 8, "y": 3}, + {"x": 9, "y": 3}, + {"x": 10, "y": 3}, + {"x": 11, "y": 3}, + + {"x": 0, "y": 4}, + {"x": 1, "y": 4}, + {"x": 2, "y": 4}, + {"x": 3, "y": 4}, + {"x": 4, "y": 4, "w": 2}, + {"x": 6, "y": 4}, + {"x": 7, "y": 4}, + {"x": 8, "y": 4}, + {"x": 9, "y": 4}, + {"x": 10, "y": 4}, + {"x": 11, "y": 4} + ] + }, + "LAYOUT_preonic_2x2u": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + + {"x": 0, "y": 1}, + {"x": 1, "y": 1}, + {"x": 2, "y": 1}, + {"x": 3, "y": 1}, + {"x": 4, "y": 1}, + {"x": 5, "y": 1}, + {"x": 6, "y": 1}, + {"x": 7, "y": 1}, + {"x": 8, "y": 1}, + {"x": 9, "y": 1}, + {"x": 10, "y": 1}, + {"x": 11, "y": 1}, + + {"x": 0, "y": 2}, + {"x": 1, "y": 2}, + {"x": 2, "y": 2}, + {"x": 3, "y": 2}, + {"x": 4, "y": 2}, + {"x": 5, "y": 2}, + {"x": 6, "y": 2}, + {"x": 7, "y": 2}, + {"x": 8, "y": 2}, + {"x": 9, "y": 2}, + {"x": 10, "y": 2}, + {"x": 11, "y": 2}, + + {"x": 0, "y": 3}, + {"x": 1, "y": 3}, + {"x": 2, "y": 3}, + {"x": 3, "y": 3}, + {"x": 4, "y": 3}, + {"x": 5, "y": 3}, + {"x": 6, "y": 3}, + {"x": 7, "y": 3}, + {"x": 8, "y": 3}, + {"x": 9, "y": 3}, + {"x": 10, "y": 3}, + {"x": 11, "y": 3}, + + {"x": 0, "y": 4}, + {"x": 1, "y": 4}, + {"x": 2, "y": 4}, + {"x": 3, "y": 4}, + {"x": 4, "y": 4, "w": 2}, + {"x": 6, "y": 4, "w": 2}, + {"x": 8, "y": 4}, + {"x": 9, "y": 4}, + {"x": 10, "y": 4}, + {"x": 11, "y": 4} + ] + }, + "LAYOUT_ortho_5x12": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + + {"x": 0, "y": 1}, + {"x": 1, "y": 1}, + {"x": 2, "y": 1}, + {"x": 3, "y": 1}, + {"x": 4, "y": 1}, + {"x": 5, "y": 1}, + {"x": 6, "y": 1}, + {"x": 7, "y": 1}, + {"x": 8, "y": 1}, + {"x": 9, "y": 1}, + {"x": 10, "y": 1}, + {"x": 11, "y": 1}, + + {"x": 0, "y": 2}, + {"x": 1, "y": 2}, + {"x": 2, "y": 2}, + {"x": 3, "y": 2}, + {"x": 4, "y": 2}, + {"x": 5, "y": 2}, + {"x": 6, "y": 2}, + {"x": 7, "y": 2}, + {"x": 8, "y": 2}, + {"x": 9, "y": 2}, + {"x": 10, "y": 2}, + {"x": 11, "y": 2}, + + {"x": 0, "y": 3}, + {"x": 1, "y": 3}, + {"x": 2, "y": 3}, + {"x": 3, "y": 3}, + {"x": 4, "y": 3}, + {"x": 5, "y": 3}, + {"x": 6, "y": 3}, + {"x": 7, "y": 3}, + {"x": 8, "y": 3}, + {"x": 9, "y": 3}, + {"x": 10, "y": 3}, + {"x": 11, "y": 3}, + + {"x": 0, "y": 4}, + {"x": 1, "y": 4}, + {"x": 2, "y": 4}, + {"x": 3, "y": 4}, + {"x": 4, "y": 4}, + {"x": 5, "y": 4}, + {"x": 6, "y": 4}, + {"x": 7, "y": 4}, + {"x": 8, "y": 4}, + {"x": 9, "y": 4}, + {"x": 10, "y": 4}, + {"x": 11, "y": 4} + ] + } + } +} diff --git a/keyboards/preonic/rev3_drop/matrix.c b/keyboards/preonic/rev3_drop/matrix.c new file mode 100644 index 000000000000..07171a39e9d1 --- /dev/null +++ b/keyboards/preonic/rev3_drop/matrix.c @@ -0,0 +1,170 @@ +/* + * Copyright 2018 Jack Humbert + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include +#include +#include +#include "hal.h" +#include "timer.h" +#include "wait.h" +#include "debug.h" +#include "matrix.h" + +typedef uint16_t matrix_col_t; + +/* + * col: { B11, B10, B2, B1, A7, B0 } + * row: { A10, A9, A8, B15, C13, C14, C15, A2 } + */ +/* matrix state(1:on, 0:off) */ +static matrix_row_t matrix[MATRIX_ROWS]; +static matrix_col_t matrix_debouncing[MATRIX_COLS]; +static bool debouncing = false; +static uint16_t debouncing_time = 0; + +__attribute__((weak)) void matrix_init_user(void) {} + +__attribute__((weak)) void matrix_scan_user(void) {} + +__attribute__((weak)) void matrix_init_kb(void) { matrix_init_user(); } + +__attribute__((weak)) void matrix_scan_kb(void) { matrix_scan_user(); } + +void matrix_init(void) { + dprintf("matrix init\n"); + // debug_matrix = true; + + // actual matrix setup + palSetPadMode(GPIOB, 11, PAL_MODE_OUTPUT_PUSHPULL); + palSetPadMode(GPIOB, 10, PAL_MODE_OUTPUT_PUSHPULL); + palSetPadMode(GPIOB, 2, PAL_MODE_OUTPUT_PUSHPULL); + palSetPadMode(GPIOB, 1, PAL_MODE_OUTPUT_PUSHPULL); + palSetPadMode(GPIOA, 7, PAL_MODE_OUTPUT_PUSHPULL); + palSetPadMode(GPIOB, 0, PAL_MODE_OUTPUT_PUSHPULL); + + palSetPadMode(GPIOA, 10, PAL_MODE_INPUT_PULLDOWN); + palSetPadMode(GPIOA, 9, PAL_MODE_INPUT_PULLDOWN); + palSetPadMode(GPIOA, 8, PAL_MODE_INPUT_PULLDOWN); + palSetPadMode(GPIOB, 15, PAL_MODE_INPUT_PULLDOWN); + palSetPadMode(GPIOC, 13, PAL_MODE_INPUT_PULLDOWN); + palSetPadMode(GPIOC, 14, PAL_MODE_INPUT_PULLDOWN); + palSetPadMode(GPIOC, 15, PAL_MODE_INPUT_PULLDOWN); + palSetPadMode(GPIOA, 2, PAL_MODE_INPUT_PULLDOWN); + palSetPadMode(GPIOA, 3, PAL_MODE_INPUT_PULLDOWN); + palSetPadMode(GPIOA, 6, PAL_MODE_INPUT_PULLDOWN); + + memset(matrix, 0, MATRIX_ROWS * sizeof(matrix_row_t)); + memset(matrix_debouncing, 0, MATRIX_COLS * sizeof(matrix_col_t)); + + matrix_init_quantum(); +} + +uint8_t matrix_scan(void) { + // actual matrix + for (int col = 0; col < MATRIX_COLS; col++) { + matrix_col_t data = 0; + + // strobe col { B11, B10, B2, B1, A7, B0 } + switch (col) { + case 0: + palSetPad(GPIOB, 11); + break; + case 1: + palSetPad(GPIOB, 10); + break; + case 2: + palSetPad(GPIOB, 2); + break; + case 3: + palSetPad(GPIOB, 1); + break; + case 4: + palSetPad(GPIOA, 7); + break; + case 5: + palSetPad(GPIOB, 0); + break; + } + + // need wait to settle pin state + wait_us(20); + + // read row data { A10, A9, A8, B15, C13, C14, C15, A2 } + data = ((palReadPad(GPIOA, 10) << 0) | (palReadPad(GPIOA, 9) << 1) | (palReadPad(GPIOA, 8) << 2) | (palReadPad(GPIOB, 15) << 3) | (palReadPad(GPIOC, 13) << 4) | (palReadPad(GPIOC, 14) << 5) | (palReadPad(GPIOC, 15) << 6) | (palReadPad(GPIOA, 2) << 7) | (palReadPad(GPIOA, 3) << 8) | (palReadPad(GPIOA, 6) << 9)); + + // unstrobe col { B11, B10, B2, B1, A7, B0 } + switch (col) { + case 0: + palClearPad(GPIOB, 11); + break; + case 1: + palClearPad(GPIOB, 10); + break; + case 2: + palClearPad(GPIOB, 2); + break; + case 3: + palClearPad(GPIOB, 1); + break; + case 4: + palClearPad(GPIOA, 7); + break; + case 5: + palClearPad(GPIOB, 0); + break; + } + + if (matrix_debouncing[col] != data) { + matrix_debouncing[col] = data; + debouncing = true; + debouncing_time = timer_read(); + } + } + + if (debouncing && timer_elapsed(debouncing_time) > DEBOUNCE) { + for (int row = 0; row < MATRIX_ROWS; row++) { + matrix[row] = 0; + for (int col = 0; col < MATRIX_COLS; col++) { + matrix[row] |= ((matrix_debouncing[col] & (1 << row) ? 1 : 0) << col); + } + } + debouncing = false; + } + + matrix_scan_quantum(); + + return 1; +} + +bool matrix_is_on(uint8_t row, uint8_t col) { return (matrix[row] & (1 << col)); } + +matrix_row_t matrix_get_row(uint8_t row) { return matrix[row]; } + +void matrix_print(void) { + dprintf("\nr/c 01234567\n"); + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + dprintf("%X0: ", row); + matrix_row_t data = matrix_get_row(row); + for (int col = 0; col < MATRIX_COLS; col++) { + if (data & (1 << col)) + dprintf("1"); + else + dprintf("0"); + } + dprintf("\n"); + } +} diff --git a/keyboards/preonic/rev3_drop/mcuconf.h b/keyboards/preonic/rev3_drop/mcuconf.h new file mode 100644 index 000000000000..b51bf6708e73 --- /dev/null +++ b/keyboards/preonic/rev3_drop/mcuconf.h @@ -0,0 +1,43 @@ +/* Copyright 2020 QMK Contributors + * + * This program is free software: you can 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 . + */ + +#include_next "mcuconf.h" + +// The SysTick timer from the normal quantum/stm32 uses TIM2 -- the WS2812 pin used +// on the Planck requires the use of TIM2 to run PWM -- rework which timers are +// allocated for PWM usage. +#undef STM32_PWM_USE_TIM2 +#define STM32_PWM_USE_TIM2 TRUE + +#undef STM32_DAC_USE_DAC1_CH1 +#define STM32_DAC_USE_DAC1_CH1 TRUE +#undef STM32_DAC_USE_DAC1_CH2 +#define STM32_DAC_USE_DAC1_CH2 TRUE +#undef STM32_GPT_USE_TIM6 +#define STM32_GPT_USE_TIM6 TRUE +#undef STM32_GPT_USE_TIM7 +#define STM32_GPT_USE_TIM7 TRUE +#undef STM32_GPT_USE_TIM8 +#define STM32_GPT_USE_TIM8 TRUE + +// As mentioned above, we need to reallocate the SysTick timer used from +// TIM2 to TIM3. +#undef STM32_ST_USE_TIMER +#define STM32_ST_USE_TIMER 3 + +// enable i2c +#undef STM32_I2C_USE_I2C1 +#define STM32_I2C_USE_I2C1 TRUE \ No newline at end of file diff --git a/keyboards/preonic/rev3_drop/rev3_drop.c b/keyboards/preonic/rev3_drop/rev3_drop.c new file mode 100644 index 000000000000..0b3f452c4423 --- /dev/null +++ b/keyboards/preonic/rev3_drop/rev3_drop.c @@ -0,0 +1,61 @@ +/* Copyright 2018 Jack Humbert + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "rev3_drop.h" + +#ifdef RGB_MATRIX_ENABLE +led_config_t g_led_config = { { + // Key Matrix to LED Index + { NO_LED, 6, NO_LED, NO_LED, 5, NO_LED }, + { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }, + { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 0 }, + { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }, + { NO_LED, 4, NO_LED, NO_LED, 3, NO_LED }, + { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }, + { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }, + { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }, + { NO_LED, 7, NO_LED, NO_LED, 2, NO_LED }, + { NO_LED, 1, NO_LED, NO_LED, 8, NO_LED }, +}, { + // LED Index to Physical Position + {112, 39}, {148, 60}, {206, 53}, {206, 3}, {150, 3}, {74, 3}, {18, 3}, {18, 54}, {77, 60} +}, { + // LED Index to Flag + LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, + LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL +} }; + +// LED physical location index +// 6 5 4 3 +// 0 +// 7 8 1 2 +#endif + + +#ifdef SWAP_HANDS_ENABLE +__attribute__ ((weak)) +const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { + {{5, 4}, {4, 4}, {3, 4}, {2, 4}, {1, 4}, {0, 4}}, + {{5, 5}, {4, 5}, {3, 5}, {2, 5}, {1, 5}, {0, 5}}, + {{5, 6}, {4, 6}, {3, 6}, {2, 6}, {1, 6}, {0, 6}}, + {{5, 7}, {4, 7}, {3, 7}, {2, 7}, {1, 7}, {0, 7}}, + {{5, 0}, {4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0}}, + {{5, 1}, {4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1}}, + {{5, 2}, {4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2}}, + {{5, 3}, {4, 3}, {3, 3}, {2, 3}, {1, 3}, {0, 3}}, + {{5, 8}, {4, 8}, {3, 8}, {2, 8}, {1, 8}, {0, 8}}, + {{5, 9}, {4, 9}, {3, 9}, {2, 9}, {1, 9}, {0, 9}}, +}; +#endif diff --git a/keyboards/preonic/rev3_drop/rev3_drop.h b/keyboards/preonic/rev3_drop/rev3_drop.h new file mode 100644 index 000000000000..3cb9368757ee --- /dev/null +++ b/keyboards/preonic/rev3_drop/rev3_drop.h @@ -0,0 +1,115 @@ +/* Copyright 2018 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 . + */ + +#pragma once + +#include "preonic.h" + +// clang-format off +#define LAYOUT_preonic_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, k36, k37, k38, k39, k3a, k3b, \ + k40, k41, k42, k43, k44, k45, k47, k48, k49, k4a, k4b \ +) { \ + { k00, k01, k02, k03, k04, k05 }, \ + { k10, k11, k12, k13, k14, k15 }, \ + { k20, k21, k22, k23, k24, k25 }, \ + { k30, k31, k32, k33, k34, k35 }, \ + { k06, k07, k08, k09, k0a, k0b }, \ + { k16, k17, k18, k19, k1a, k1b }, \ + { k26, k27, k28, k29, k2a, k2b }, \ + { k36, k37, k38, k39, k3a, k3b }, \ + { k40, k41, k42, k49, k4a, k4b }, \ + { k45, k47, k48, k43, k44, k45 } \ +} + +#define LAYOUT_preonic_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, k36, k37, k38, k39, k3a, k3b, \ + k40, k41, k42, k43, k44, k45, k47, k48, k49, k4a, k4b \ + ) { \ + { k00, k01, k02, k03, k04, k05 }, \ + { k10, k11, k12, k13, k14, k15 }, \ + { k20, k21, k22, k23, k24, k25 }, \ + { k30, k31, k32, k33, k34, k35 }, \ + { k06, k07, k08, k09, k0a, k0b }, \ + { k16, k17, k18, k19, k1a, k1b }, \ + { k26, k27, k28, k29, k2a, k2b }, \ + { k36, k37, k38, k39, k3a, k3b }, \ + { k40, k41, k42, k49, k4a, k4b }, \ + { k47, k47, k48, k43, k44, k45 } \ +} + +#define LAYOUT_preonic_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, k34, k35, k36, k37, k38, k39, k3a, k3b, \ + k40, k41, k42, k43, k44, k46, k47, k48, k49, k4a, k4b \ +) { \ + { k00, k01, k02, k03, k04, k05 }, \ + { k10, k11, k12, k13, k14, k15 }, \ + { k20, k21, k22, k23, k24, k25 }, \ + { k30, k31, k32, k33, k34, k35 }, \ + { k06, k07, k08, k09, k0a, k0b }, \ + { k16, k17, k18, k19, k1a, k1b }, \ + { k26, k27, k28, k29, k2a, k2b }, \ + { k36, k37, k38, k39, k3a, k3b }, \ + { k40, k41, k42, k49, k4a, k4b }, \ + { k46, k47, k48, k43, k44, k44 } \ +} + +#define LAYOUT_preonic_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, k34, k35, k36, k37, k38, k39, k3a, k3b, \ + k40, k41, k42, k43, k44, k46, k48, k49, k4a, k4b \ +) { \ + { k00, k01, k02, k03, k04, k05 }, \ + { k10, k11, k12, k13, k14, k15 }, \ + { k20, k21, k22, k23, k24, k25 }, \ + { k30, k31, k32, k33, k34, k35 }, \ + { k06, k07, k08, k09, k0a, k0b }, \ + { k16, k17, k18, k19, k1a, k1b }, \ + { k26, k27, k28, k29, k2a, k2b }, \ + { k36, k37, k38, k39, k3a, k3b }, \ + { k40, k41, k42, k49, k4a, k4b }, \ + { k46, k46, k48, k43, k44, k44 } \ +} + +#define LAYOUT_ortho_5x12( \ + 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, k45, k46, k47, k48, k49, k4a, k4b \ +) { \ + { k00, k01, k02, k03, k04, k05 }, \ + { k10, k11, k12, k13, k14, k15 }, \ + { k20, k21, k22, k23, k24, k25 }, \ + { k30, k31, k32, k33, k34, k35 }, \ + { k06, k07, k08, k09, k0a, k0b }, \ + { k16, k17, k18, k19, k1a, k1b }, \ + { k26, k27, k28, k29, k2a, k2b }, \ + { k36, k37, k38, k39, k3a, k3b }, \ + { k40, k41, k42, k49, k4a, k4b }, \ + { k46, k47, k48, k43, k44, k45 } \ +} diff --git a/keyboards/preonic/rev3_drop/rules.mk b/keyboards/preonic/rev3_drop/rules.mk new file mode 100644 index 000000000000..ed558072878f --- /dev/null +++ b/keyboards/preonic/rev3_drop/rules.mk @@ -0,0 +1,31 @@ +# MCU name +MCU = STM32F303 + +# Bootloader selection +BOOTLOADER = stm32-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 = yes # Commands for debug and configuration +# 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 = yes # Audio output +WS2812_DRIVER = pwm +CUSTOM_MATRIX = yes +ENCODER_ENABLE = yes +DIP_SWITCH_ENABLE = yes + +# Do not enable RGB_MATRIX_ENABLE together with RGBLIGHT_ENABLE +RGB_MATRIX_ENABLE = no +RGB_MATRIX_DRIVER = WS2812 + +SRC += matrix.c + +LAYOUTS = ortho_5x12 diff --git a/keyboards/primekb/meridian/info.json b/keyboards/primekb/meridian/info.json index 3397ae500a99..4c46e325c55c 100644 --- a/keyboards/primekb/meridian/info.json +++ b/keyboards/primekb/meridian/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Meridian", "url": "https://www.primekb.com", "maintainer": "holtenc", - "width": 16.5, - "height": 5, "layouts": { "LAYOUT_unified_bs_rshift": { "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":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":"Backspace", "x":14.5, "y":0, "w":2}, {"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":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":"|", "x":15, "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":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":"Enter", "x":14.25, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"B", "x":7.75, "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":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":3.75, "y":4, "w":1.25}, {"x":5, "y":4, "w":2.25}, {"x":7.75, "y":4, "w":2.75}, {"label":"Alt", "x":10.5, "y":4, "w":1.25}, {"label":"Win", "x":12.75, "y":4, "w":1.25}, {"label":"Menu", "x":14, "y":4, "w":1.25}, {"label":"Ctrl", "x":15.25, "y":4, "w":1.25}] diff --git a/keyboards/primekb/meridian/ktr1010/config.h b/keyboards/primekb/meridian/ktr1010/config.h new file mode 100644 index 000000000000..bf91dc9715fa --- /dev/null +++ b/keyboards/primekb/meridian/ktr1010/config.h @@ -0,0 +1,51 @@ +/* +Copyright 2020 Holten Campbell + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x5052 +#define PRODUCT_ID 0x004D +#define DEVICE_VER 0x0001 +#define MANUFACTURER Prime Keyboards +#define PRODUCT Meridian + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +#define MATRIX_COL_PINS { B11, B10, B2, B1, B0, A7, B9, B8, B7, B6, B5, B4, B3, A15 } +#define MATRIX_ROW_PINS { A6, A5, A4, A3, A2 } +#define DIODE_DIRECTION COL2ROW + +#define RGB_DI_PIN B15 +#define RGBLED_NUM 3 +// Special timing definitions for KTR101 +#define WS2812_TIMING 1325 +#define WS2812_T0H 350 +#define WS2812_T1H 975 +#define WS2812_T0L 975 +#define WS2812_T1L 350 +#define WS2812_RES_US 100 + +/* 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/primekb/meridian/ktr1010/rules.mk b/keyboards/primekb/meridian/ktr1010/rules.mk new file mode 100644 index 000000000000..1bc213906fdb --- /dev/null +++ b/keyboards/primekb/meridian/ktr1010/rules.mk @@ -0,0 +1 @@ +WS2812_DRIVER = bitbang diff --git a/keyboards/primekb/meridian/readme.md b/keyboards/primekb/meridian/readme.md index 0e3339a59743..01df9c5ba3b4 100644 --- a/keyboards/primekb/meridian/readme.md +++ b/keyboards/primekb/meridian/readme.md @@ -5,8 +5,28 @@ * Keyboard Maintainer: [Holten Campbell](https://github.com/holtenc) * Hardware Supported: STM32F072CBT6 -Make example for this keyboard (after setting up your build environment): +## Compiling firmware and flashing - make primekb/meridian:default +### Enter bootloader + +The DFU state in the bootloader can be accessed in 3 ways: + +* **Bootmagic reset**: hold down the key at (0,0) in the matrix (usually Escape) and plug in the keyboard; or +* **Physical reset button**: press the button on the bottom of the PCB; or +* **Keycode in layout**: press the key mapped to `RESET` if it is available (Escape key on layer 1 in the default layout). + +### Compile firmware + +The Meridian PCB was delivered in two variants, equal in design but using different RGB LED models: one using WS2812 and another using KTR1010 LEDs. Both can be compiled using + + make primekb/meridian/ws1812:default + make primekb/meridian/ktr1010:default + +After compiling, enter bootloader in the PCB and flash the firmware using `dfu-util` or QMK Toolbox. For direct compile-and-flashing, put the PCB in DFU state and use + + make primekb/meridian/ws1812:default:flash + make primekb/meridian/ktr1010:default:flash + +VIA-supported firmwares are also available. 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/primekb/meridian/rules.mk b/keyboards/primekb/meridian/rules.mk index 74a9feb668bf..7f0100deda72 100644 --- a/keyboards/primekb/meridian/rules.mk +++ b/keyboards/primekb/meridian/rules.mk @@ -7,20 +7,16 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # 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 -WS2812_DRIVER = spi # Enter lower-power sleep mode when on the ChibiOS idle thread OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/primekb/meridian/ws2812/config.h b/keyboards/primekb/meridian/ws2812/config.h new file mode 100644 index 000000000000..082392c6bd2c --- /dev/null +++ b/keyboards/primekb/meridian/ws2812/config.h @@ -0,0 +1,48 @@ +/* +Copyright 2020 Holten Campbell + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x5052 +#define PRODUCT_ID 0x004D +#define DEVICE_VER 0x0001 +#define MANUFACTURER Prime Keyboards +#define PRODUCT Meridian + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +#define MATRIX_COL_PINS { B11, B10, B2, B1, B0, A7, B9, B8, B7, B6, B5, B4, B3, A15 } +#define MATRIX_ROW_PINS { A6, A5, A4, A3, A2 } +#define DIODE_DIRECTION COL2ROW + +#define RGB_DI_PIN B15 +#define RGBLED_NUM 3 +#define WS2812_SPI SPID2 +#define WS2812_SPI_MOSI_PAL_MODE 0 +#define WS2812_SPI_SCK_PAL_MODE 0 +#define WS2812_SPI_SCK_PIN B13 + +/* 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/primekb/meridian/ws2812/rules.mk b/keyboards/primekb/meridian/ws2812/rules.mk new file mode 100644 index 000000000000..c09c0d5fa446 --- /dev/null +++ b/keyboards/primekb/meridian/ws2812/rules.mk @@ -0,0 +1 @@ +WS2812_DRIVER = spi diff --git a/keyboards/primekb/prime_e/info.json b/keyboards/primekb/prime_e/info.json index 0cca27565cd6..ee83f1bcbcd8 100644 --- a/keyboards/primekb/prime_e/info.json +++ b/keyboards/primekb/prime_e/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Prime_E", "url": "https://www.primekb.com", "maintainer": "holtenc", - "width": 13, - "height": 4, "layouts": { "LAYOUT": { "layout": [{"x":0,"y":0,"w":1,"h":1}, {"x":1,"y":0,"w":1,"h":1}, {"x":2,"y":0,"w":1,"h":1}, {"x":3,"y":0,"w":1,"h":1}, {"x":4,"y":0,"w":1,"h":1}, {"x":5,"y":0,"w":1,"h":1}, {"x":7,"y":0,"w":1,"h":1}, {"x":8,"y":0,"w":1,"h":1}, {"x":9,"y":0,"w":1,"h":1}, {"x":10,"y":0,"w":1,"h":1}, {"x":11,"y":0,"w":1,"h":1}, {"x":12,"y":0,"w":1,"h":1}, {"x":13,"y":0,"w":1,"h":1}, diff --git a/keyboards/primekb/prime_e/keymaps/default/keymap.c b/keyboards/primekb/prime_e/keymaps/default/keymap.c index 65b2f67a3d13..08067b3132bb 100644 --- a/keyboards/primekb/prime_e/keymaps/default/keymap.c +++ b/keyboards/primekb/prime_e/keymaps/default/keymap.c @@ -57,11 +57,6 @@ void matrix_init_user(void) { writePinLow(B3); } -void matrix_scan_user(void) { - -} - - void led_set_user(uint8_t usb_led) { if (IS_LED_ON(usb_led, USB_LED_NUM_LOCK)) { writePinHigh(B2); diff --git a/keyboards/primekb/prime_e/keymaps/peott-fr/keymap.c b/keyboards/primekb/prime_e/keymaps/peott-fr/keymap.c new file mode 100644 index 000000000000..7724c2b4356a --- /dev/null +++ b/keyboards/primekb/prime_e/keymaps/peott-fr/keymap.c @@ -0,0 +1,97 @@ +/* Copyright 2021 Pierre-Emmanuel Ott + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum custom_layers { + _QWERTY, + _LEFTHAND, + _NUM, + _FUNC +}; + +#define SPC_LFT LT(_LEFTHAND, KC_SPC) +#define FN_NUM LT(_NUM, KC_MNXT) +#define BSP_FUNC LT(_FUNC, KC_BSPC) + +/* This keymap is a regular 40s keymap for most. My concessions include no numpad, and a dedicated left-hand layer. +Enter is on a layer, which seems somewhat safe! +Changes/improvements include removing all the Quantum mod functions when on the arrow layer, so that Ctrl and Shift act without ambiguity based on short or long presses. +The 3 LEDs on the board show Caps Lock/L1/L2 respectively. L3 has no LED. +*/ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QWERTY] = LAYOUT( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, + LCTL_T(KC_MPRV), LALT_T(KC_MPLY), FN_NUM, SPC_LFT, BSP_FUNC, LGUI_T(KC_DEL), RALT_T(KC_HOME), RCTL_T(KC_END) + ), + [_LEFTHAND] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_ESC, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_ENT, + KC_LSFT, KC_CALC, KC_MYCM, KC_PSCR, KC_ENT, KC_BSPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RSFT, + KC_LCTL, KC_LALT, KC_TRNS, KC_TRNS, KC_TRNS, KC_RGUI, KC_PGDN, KC_PGUP + ), + [_NUM] = LAYOUT( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_UNDS, KC_PLUS, KC_BSLS, + KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RSFT, + KC_LCTL, KC_LALT, KC_TRNS, KC_TRNS, KC_TRNS, KC_RGUI, KC_RALT, KC_RCTL + ), + [_FUNC] = LAYOUT( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_INS, KC_TRNS, KC_TRNS, + KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_RSFT, + KC_LCTL, KC_LALT, KC_TRNS, KC_TRNS, KC_TRNS, KC_RGUI, KC_RALT, KC_RCTL + ) +}; + +void matrix_init_user(void) { + // set CapsLock LED to output and low + setPinOutput(B1); + writePinLow(B1); + // set Layer 1 to output and low + setPinOutput(B2); + writePinLow(B2); + // set Layer 2 to output and low + setPinOutput(B3); + writePinLow(B3); +} + +//function to activate Caps Lock LED +bool led_update_user(led_t led_state) { + writePin(B1, led_state.caps_lock); + return false; +} + +//function for layer indicator LED +layer_state_t layer_state_set_user(layer_state_t state) +{ + if (get_highest_layer(state) == 1) { + writePinHigh(B2); + } + else { + writePinLow(B2); + } + if (get_highest_layer(state) == 2) { + writePinHigh(B3); + } + else { + writePinLow(B3); + } + return state; +} \ No newline at end of file diff --git a/keyboards/primekb/prime_e/keymaps/via/keymap.c b/keyboards/primekb/prime_e/keymaps/via/keymap.c index 46a310f3d65e..195f845cc234 100644 --- a/keyboards/primekb/prime_e/keymaps/via/keymap.c +++ b/keyboards/primekb/prime_e/keymaps/via/keymap.c @@ -85,11 +85,6 @@ void matrix_init_user(void) { writePinLow(B3); } -void matrix_scan_user(void) { - -} - - void led_set_user(uint8_t usb_led) { if (IS_LED_ON(usb_led, USB_LED_NUM_LOCK)) { writePinHigh(B2); @@ -111,7 +106,7 @@ void led_set_user(uint8_t usb_led) { } //function for layer indicator LED -uint32_t layer_state_set_user(uint32_t state) +layer_state_t layer_state_set_user(layer_state_t state) { if (biton32(state) == 1) { writePinHigh(B3); diff --git a/keyboards/primekb/prime_e/prime_e.c b/keyboards/primekb/prime_e/prime_e.c index bd51ce0087eb..8e30f3c5f473 100644 --- a/keyboards/primekb/prime_e/prime_e.c +++ b/keyboards/primekb/prime_e/prime_e.c @@ -14,9 +14,3 @@ * along with this program. If not, see . */ #include "prime_e.h" - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/primekb/prime_e/rules.mk b/keyboards/primekb/prime_e/rules.mk index f5ea0075c438..925ff94126f6 100644 --- a/keyboards/primekb/prime_e/rules.mk +++ b/keyboards/primekb/prime_e/rules.mk @@ -2,28 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output DEFAULT_FOLDER = primekb/prime_e/std diff --git a/keyboards/primekb/prime_l/info.json b/keyboards/primekb/prime_l/info.json index 8a407fd3eb2e..ac537202f35a 100644 --- a/keyboards/primekb/prime_l/info.json +++ b/keyboards/primekb/prime_l/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Prime_L", "url": "https://www.primekb.com", "maintainer": "MxBlu", - "width": 16, - "height": 5, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, {"x":15, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2, "w":1.25}, {"x":4.25, "y":2}, {"x":5.25, "y":2}, {"x":6.25, "y":2}, {"x":7.25, "y":2}, {"x":8.25, "y":2}, {"x":9.25, "y":2}, {"x":10.25, "y":2}, {"x":11.25, "y":2}, {"x":12.25, "y":2}, {"x":13.25, "y":2}, {"x":14.25, "y":2, "w":1.75}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3, "w":1.75}, {"x":4.75, "y":3}, {"x":5.75, "y":3}, {"x":6.75, "y":3}, {"x":7.75, "y":3}, {"x":8.75, "y":3}, {"x":9.75, "y":3}, {"x":10.75, "y":3}, {"x":11.75, "y":3}, {"x":12.75, "y":3}, {"x":13.75, "y":3}, {"x":14.75, "y":3, "w":1.25}, {"x":0, "y":4}, {"x":1, "y":4}, {"x":2, "y":4}, {"x":3, "y":4, "w":1.25}, {"x":4.25, "y":4, "w":1.25}, {"x":5.5, "y":4}, {"x":6.5, "y":4}, {"x":7.5, "y":4, "w":2}, {"x":9.5, "y":4, "w":2.25}, {"x":11.75, "y":4}, {"x":12.75, "y":4}, {"x":13.75, "y":4}, {"x":14.75, "y":4, "w":1.25}] diff --git a/keyboards/primekb/prime_l/rules.mk b/keyboards/primekb/prime_l/rules.mk index 7a3f60d5726a..ec8661e8aef6 100644 --- a/keyboards/primekb/prime_l/rules.mk +++ b/keyboards/primekb/prime_l/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# 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 -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output DEFAULT_FOLDER = primekb/prime_l/v1 diff --git a/keyboards/primekb/prime_l/v1/info.json b/keyboards/primekb/prime_l/v1/info.json index 8a407fd3eb2e..ac537202f35a 100644 --- a/keyboards/primekb/prime_l/v1/info.json +++ b/keyboards/primekb/prime_l/v1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Prime_L", "url": "https://www.primekb.com", "maintainer": "MxBlu", - "width": 16, - "height": 5, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, {"x":15, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2, "w":1.25}, {"x":4.25, "y":2}, {"x":5.25, "y":2}, {"x":6.25, "y":2}, {"x":7.25, "y":2}, {"x":8.25, "y":2}, {"x":9.25, "y":2}, {"x":10.25, "y":2}, {"x":11.25, "y":2}, {"x":12.25, "y":2}, {"x":13.25, "y":2}, {"x":14.25, "y":2, "w":1.75}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3, "w":1.75}, {"x":4.75, "y":3}, {"x":5.75, "y":3}, {"x":6.75, "y":3}, {"x":7.75, "y":3}, {"x":8.75, "y":3}, {"x":9.75, "y":3}, {"x":10.75, "y":3}, {"x":11.75, "y":3}, {"x":12.75, "y":3}, {"x":13.75, "y":3}, {"x":14.75, "y":3, "w":1.25}, {"x":0, "y":4}, {"x":1, "y":4}, {"x":2, "y":4}, {"x":3, "y":4, "w":1.25}, {"x":4.25, "y":4, "w":1.25}, {"x":5.5, "y":4}, {"x":6.5, "y":4}, {"x":7.5, "y":4, "w":2}, {"x":9.5, "y":4, "w":2.25}, {"x":11.75, "y":4}, {"x":12.75, "y":4}, {"x":13.75, "y":4}, {"x":14.75, "y":4, "w":1.25}] diff --git a/keyboards/primekb/prime_l/v2/info.json b/keyboards/primekb/prime_l/v2/info.json index 524c6ef181be..b8033eae306b 100644 --- a/keyboards/primekb/prime_l/v2/info.json +++ b/keyboards/primekb/prime_l/v2/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Prime_L V2", "url": "https://www.primekb.com", "maintainer": "HoltenC", - "width": 16, - "height": 5, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15, "y":0}, diff --git a/keyboards/primekb/prime_m/info.json b/keyboards/primekb/prime_m/info.json index 822823e62a90..c692690ba068 100644 --- a/keyboards/primekb/prime_m/info.json +++ b/keyboards/primekb/prime_m/info.json @@ -3,8 +3,6 @@ "keyboard_name": "Prime_M", "url": "https://www.primekb.com", "maintainer": "MxBlu", - "width": 6, - "height": 5, "layouts": { "LAYOUT_ortho_5x6": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":0, "y":4}, {"x":1, "y":4}, {"x":2, "y":4}, {"x":3, "y":4}, {"x":4, "y":4}, {"x":5, "y":4}] diff --git a/keyboards/primekb/prime_m/rules.mk b/keyboards/primekb/prime_m/rules.mk index a2e427b6714c..3ff9bc89274f 100644 --- a/keyboards/primekb/prime_m/rules.mk +++ b/keyboards/primekb/prime_m/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u2 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# 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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output -LAYOUTS = ortho_5x6 numpad_5x6 +LAYOUTS = numpad_5x6 diff --git a/keyboards/primekb/prime_o/info.json b/keyboards/primekb/prime_o/info.json index 83fc1436050a..eb548340207d 100644 --- a/keyboards/primekb/prime_o/info.json +++ b/keyboards/primekb/prime_o/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Prime_O", "url": "https://www.primekb.com", "maintainer": "MxBlu", - "width": 16, - "height": 5, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, {"x":15, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":13, "y":2}, {"x":14, "y":2}, {"x":15, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}, {"x":12, "y":3}, {"x":13, "y":3}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4}, {"x":1, "y":4}, {"x":2, "y":4}, {"x":3, "y":4}, {"x":4, "y":4}, {"x":5, "y":4}, {"x":6, "y":4}, {"x":7, "y":4}, {"x":8, "y":4}, {"x":9, "y":4}, {"x":10, "y":4}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] diff --git a/keyboards/primekb/prime_o/keymaps/default/keymap.c b/keyboards/primekb/prime_o/keymaps/default/keymap.c index a2d9e807ccbb..b3ca2b15f833 100644 --- a/keyboards/primekb/prime_o/keymaps/default/keymap.c +++ b/keyboards/primekb/prime_o/keymaps/default/keymap.c @@ -63,15 +63,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/primekb/prime_o/keymaps/reasonsandreasons/rules.mk b/keyboards/primekb/prime_o/keymaps/reasonsandreasons/rules.mk index b6c57629e9fa..645e8d523f60 100644 --- a/keyboards/primekb/prime_o/keymaps/reasonsandreasons/rules.mk +++ b/keyboards/primekb/prime_o/keymaps/reasonsandreasons/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/primekb/prime_o/keymaps/spacebarracecar/keymap.c b/keyboards/primekb/prime_o/keymaps/spacebarracecar/keymap.c index 9014fbc5b6cd..dbcc8c31a33a 100644 --- a/keyboards/primekb/prime_o/keymaps/spacebarracecar/keymap.c +++ b/keyboards/primekb/prime_o/keymaps/spacebarracecar/keymap.c @@ -51,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_LOWER] = LAYOUT( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, DE_TILD, DE_EXLM, DE_DQOT, DE_HASH, DE_DLR, DE_PERC, CU_CIRC, DE_AMPR, DE_ASTR, DE_LPRN, DE_RPRN, _______, + _______, _______, _______, _______, DE_TILD, DE_EXLM, DE_DQUO, DE_HASH, DE_DLR, DE_PERC, CU_CIRC, DE_AMPR, DE_ASTR, DE_LPRN, DE_RPRN, _______, _______, _______, _______, _______, _______, DE_AT, CTRLX, CTRLC, CTRLV, XXXXXXX, XXXXXXX, DE_UNDS, DE_PLUS, DE_LCBR, DE_RCBR, DE_PIPE, _______, _______, _______, _______, _______, DE_EURO, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DE_MINS, CU_EQL, CU_LBRC, CU_RBRC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ diff --git a/keyboards/primekb/prime_o/keymaps/spacebarracecar/rules.mk b/keyboards/primekb/prime_o/keymaps/spacebarracecar/rules.mk index f50334d5ec67..5fbd49277429 100644 --- a/keyboards/primekb/prime_o/keymaps/spacebarracecar/rules.mk +++ b/keyboards/primekb/prime_o/keymaps/spacebarracecar/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/primekb/prime_o/prime_o.c b/keyboards/primekb/prime_o/prime_o.c index d603cc6c9e4f..369347cf4c54 100644 --- a/keyboards/primekb/prime_o/prime_o.c +++ b/keyboards/primekb/prime_o/prime_o.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "prime_o.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/primekb/prime_o/prime_o.h b/keyboards/primekb/prime_o/prime_o.h index 99a80545225e..fec3392b3193 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 . */ -#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_o/rules.mk b/keyboards/primekb/prime_o/rules.mk index 7143eb4c0a49..ae0b2f6a7196 100644 --- a/keyboards/primekb/prime_o/rules.mk +++ b/keyboards/primekb/prime_o/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u2 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# 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 = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/primekb/prime_r/config.h b/keyboards/primekb/prime_r/config.h index abf559d8aa67..b73eb346a79e 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -61,5 +60,3 @@ along with this program. If not, see . #define RGBLIGHT_SAT_STEP 8 #define RGBLIGHT_VAL_STEP 8 #endif - -#endif diff --git a/keyboards/primekb/prime_r/info.json b/keyboards/primekb/prime_r/info.json index 1899df9f3acf..a9e77a5ef963 100644 --- a/keyboards/primekb/prime_r/info.json +++ b/keyboards/primekb/prime_r/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Prime_R", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT": { - "key_count": 75, "layout": [{"label":"K000", "x":0, "y":0}, {"label":"K001", "x":1, "y":0}, {"label":"K002", "x":2, "y":0}, {"label":"K003", "x":3, "y":0}, {"label":"K004", "x":4, "y":0}, {"label":"K005", "x":5, "y":0}, {"label":"K006", "x":6, "y":0}, {"label":"K007", "x":7, "y":0}, {"label":"K008", "x":8, "y":0}, {"label":"K009", "x":9, "y":0}, {"label":"K010", "x":10, "y":0}, {"label":"K011", "x":11, "y":0}, {"label":"K012", "x":12, "y":0}, {"label":"K013", "x":13, "y":0}, {"label":"K014", "x":14, "y":0}, {"label":"K015", "x":15, "y":0}, {"label":"K100", "x":0, "y":1}, {"label":"K101", "x":1, "y":1}, {"label":"K102", "x":2, "y":1}, {"label":"K103", "x":3, "y":1}, {"label":"K104", "x":4, "y":1}, {"label":"K105", "x":5, "y":1}, {"label":"K106", "x":6, "y":1}, {"label":"K107", "x":7, "y":1}, {"label":"K108", "x":8, "y":1}, {"label":"K109", "x":9, "y":1}, {"label":"K110", "x":10, "y":1}, {"label":"K111", "x":11, "y":1}, {"label":"K112", "x":12, "y":1}, {"label":"K113", "x":13, "y":1}, {"label":"K114", "x":14, "y":1}, {"label":"K115", "x":15, "y":1}, {"label":"K200", "x":0, "y":2, "w":1.25}, {"label":"K201", "x":1.25, "y":2}, {"label":"K202", "x":2.25, "y":2}, {"label":"K203", "x":3.25, "y":2}, {"label":"K204", "x":4.25, "y":2}, {"label":"K205", "x":5.25, "y":2}, {"label":"K206", "x":6.25, "y":2}, {"label":"K207", "x":7.25, "y":2}, {"label":"K208", "x":8.25, "y":2}, {"label":"K209", "x":9.25, "y":2}, {"label":"K210", "x":10.25, "y":2}, {"label":"K212", "x":11.25, "y":2, "w":1.75}, {"label":"K213", "x":13, "y":2}, {"label":"K214", "x":14, "y":2}, {"label":"K215", "x":15, "y":2}, {"label":"K300", "x":0, "y":3, "w":1.75}, {"label":"K302", "x":1.75, "y":3}, {"label":"K303", "x":2.75, "y":3}, {"label":"K304", "x":3.75, "y":3}, {"label":"K305", "x":4.75, "y":3}, {"label":"K306", "x":5.75, "y":3}, {"label":"K307", "x":6.75, "y":3}, {"label":"K308", "x":7.75, "y":3}, {"label":"K309", "x":8.75, "y":3}, {"label":"K310", "x":9.75, "y":3}, {"label":"K311", "x":10.75, "y":3}, {"label":"K312", "x":11.75, "y":3, "w":1.25}, {"label":"K313", "x":13, "y":3}, {"label":"K314", "x":14, "y":3}, {"label":"K315", "x":15, "y":3}, {"label":"K400", "x":0, "y":4, "w":1.25}, {"label":"K402", "x":1.25, "y":4, "w":1.25}, {"label":"K403", "x":2.5, "y":4}, {"label":"K404", "x":3.5, "y":4}, {"label":"K405", "x":4.5, "y":4, "w":2}, {"label":"K407", "x":6.5, "y":4, "w":2.25}, {"label":"K409", "x":8.75, "y":4}, {"label":"K410", "x":9.75, "y":4}, {"label":"K411", "x":10.75, "y":4}, {"label":"K412", "x":11.75, "y":4, "w":1.25}, {"label":"K413", "x":13, "y":4}, {"label":"K414", "x":14, "y":4}, {"label":"K415", "x":15, "y":4}] } } diff --git a/keyboards/primekb/prime_r/keymaps/default/keymap.c b/keyboards/primekb/prime_r/keymaps/default/keymap.c index afff0d7dadbf..885a37e08762 100644 --- a/keyboards/primekb/prime_r/keymaps/default/keymap.c +++ b/keyboards/primekb/prime_r/keymaps/default/keymap.c @@ -52,13 +52,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; - -void matrix_init_user(void) { -} - -void matrix_scan_user(void) { -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} diff --git a/keyboards/primekb/prime_r/prime_r.c b/keyboards/primekb/prime_r/prime_r.c index 845769dae366..3a08bed591c0 100644 --- a/keyboards/primekb/prime_r/prime_r.c +++ b/keyboards/primekb/prime_r/prime_r.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "prime_r.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/primekb/prime_r/prime_r.h b/keyboards/primekb/prime_r/prime_r.h index 8295fc336cc0..905b5c8cf8bf 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 . */ -#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/primekb/prime_r/rules.mk b/keyboards/primekb/prime_r/rules.mk index 101e1675295f..d55d0f2fdf18 100644 --- a/keyboards/primekb/prime_r/rules.mk +++ b/keyboards/primekb/prime_r/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 -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 = yes # Enable keyboard backlight functionality AUDIO_ENABLE = no diff --git a/keyboards/program_yoink/ortho/info.json b/keyboards/program_yoink/ortho/info.json index 0da81298ef2b..7d7d4ef230ad 100644 --- a/keyboards/program_yoink/ortho/info.json +++ b/keyboards/program_yoink/ortho/info.json @@ -2,8 +2,6 @@ "keyboard_name": "program_yoink", "url": "", "maintainer": "melonbred", - "width": 13.5, - "height": 4.25, "layouts": { "LAYOUT_ortho": { "layout": [ diff --git a/keyboards/program_yoink/rules.mk b/keyboards/program_yoink/rules.mk index 51bb37c86cee..c204e9fc01b1 100644 --- a/keyboards/program_yoink/rules.mk +++ b/keyboards/program_yoink/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = yes # Enable rotary encoder diff --git a/keyboards/program_yoink/staggered/info.json b/keyboards/program_yoink/staggered/info.json index 4e5eb2159a92..cc73feeb4364 100644 --- a/keyboards/program_yoink/staggered/info.json +++ b/keyboards/program_yoink/staggered/info.json @@ -2,8 +2,6 @@ "keyboard_name": "program_yoink", "url": "", "maintainer": "melonbred", - "width": 13.5, - "height": 4.25, "layouts": { "LAYOUT_default": { "layout": [ diff --git a/keyboards/projectcain/vault35/config.h b/keyboards/projectcain/vault35/config.h new file mode 100644 index 000000000000..5eccd57172aa --- /dev/null +++ b/keyboards/projectcain/vault35/config.h @@ -0,0 +1,149 @@ +/* +Copyright 2021 projectcain +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6060 +#define DEVICE_VER 0x0001 +#define MANUFACTURER projectcain +#define PRODUCT vault35 + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 11 + +/* + * 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 { B4, D4, B0, C7 } +#define MATRIX_COL_PINS { B1, D3, F0, F1, F4, F5, F6, F7, C6, B6, B5 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +//#define LED_NUM_LOCK_PIN B0 +//#define LED_CAPS_LOCK_PIN B1 +//#define LED_SCROLL_LOCK_PIN B2 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +//#define RGB_DI_PIN E2 +//#ifdef RGB_DI_PIN +//# define RGBLED_NUM 16 +//# define RGBLIGHT_HUE_STEP 8 +//# define RGBLIGHT_SAT_STEP 8 +//# define RGBLIGHT_VAL_STEP 8 +//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +//# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +//#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 \ No newline at end of file diff --git a/keyboards/projectcain/vault35/info.json b/keyboards/projectcain/vault35/info.json new file mode 100644 index 000000000000..e842e35e41a5 --- /dev/null +++ b/keyboards/projectcain/vault35/info.json @@ -0,0 +1,22 @@ +{ + "keyboard_name": "Vault 35", + "url": "", + "maintainer": "projectcain", + "layouts": { + "LAYOUT_split_4space": { + "layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "y":0}, {"label":"Y", "x":5, "y":0}, {"label":"U", "x":6, "y":0}, {"label":"I", "x":7, "y":0}, {"label":"O", "x":8, "y":0}, {"label":"P", "x":9, "y":0}, {"label":"BACK
SPACE", "x":10, "y":0}, {"label":"TAB", "x":0, "y":1, "w":1.25}, {"label":"S", "x":1.25, "y":1}, {"label":"D", "x":2.25, "y":1}, {"label":"F", "x":3.25, "y":1}, {"label":"G", "x":4.25, "y":1}, {"label":"H", "x":5.25, "y":1}, {"label":"J", "x":6.25, "y":1}, {"label":"K", "x":7.25, "y":1}, {"label":"L", "x":8.25, "y":1}, {"label":"ENTER", "x":9.25, "y":1, "w":1.75}, {"label":"SHIFT", "x":0, "y":2, "w":1.75}, {"label":"X", "x":1.75, "y":2}, {"label":"C", "x":2.75, "y":2}, {"label":"V", "x":3.75, "y":2}, {"label":"B", "x":4.75, "y":2}, {"label":"N", "x":5.75, "y":2}, {"label":"M", "x":6.75, "y":2}, {"label":"<", "x":7.75, "y":2}, {"label":">", "x":8.75, "y":2}, {"label":"SHIFT", "x":9.75, "y":2, "w":1.25}, {"label":"CTRL", "x":1.5, "y":3}, {"label":"LOWER", "x":2.5, "y":3, "w":1.25}, {"x":3.75, "y":3, "w":1.75}, {"x":5.5, "y":3, "w":1.75}, {"label":"RAISE", "x":7.25, "y":3, "w":1.25}, {"label":"ALT", "x":8.5, "y":3}] + }, + + "LAYOUT_split_3space": { + "layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "y":0}, {"label":"Y", "x":5, "y":0}, {"label":"U", "x":6, "y":0}, {"label":"I", "x":7, "y":0}, {"label":"O", "x":8, "y":0}, {"label":"P", "x":9, "y":0}, {"label":"BACK
SPACE", "x":10, "y":0}, {"label":"TAB", "x":0, "y":1, "w":1.25}, {"label":"S", "x":1.25, "y":1}, {"label":"D", "x":2.25, "y":1}, {"label":"F", "x":3.25, "y":1}, {"label":"G", "x":4.25, "y":1}, {"label":"H", "x":5.25, "y":1}, {"label":"J", "x":6.25, "y":1}, {"label":"K", "x":7.25, "y":1}, {"label":"L", "x":8.25, "y":1}, {"label":"ENTER", "x":9.25, "y":1, "w":1.75}, {"label":"SHIFT", "x":0, "y":2, "w":1.75}, {"label":"X", "x":1.75, "y":2}, {"label":"C", "x":2.75, "y":2}, {"label":"V", "x":3.75, "y":2}, {"label":"B", "x":4.75, "y":2}, {"label":"N", "x":5.75, "y":2}, {"label":"M", "x":6.75, "y":2}, {"label":"<", "x":7.75, "y":2}, {"label":">", "x":8.75, "y":2}, {"label":"SHIFT", "x":9.75, "y":2, "w":1.25}, {"label":"CTRL", "x":1.5, "y":3}, {"x":2.5, "y":3, "w":2.25}, {"label":"FN", "x":4.75, "y":3}, {"x":5.75, "y":3, "w":2.75}, {"label":"ALT", "x":8.5, "y":3}] + }, + + "LAYOUT_split_2space": { + "layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "y":0}, {"label":"Y", "x":5, "y":0}, {"label":"U", "x":6, "y":0}, {"label":"I", "x":7, "y":0}, {"label":"O", "x":8, "y":0}, {"label":"P", "x":9, "y":0}, {"label":"BACK
SPACE", "x":10, "y":0}, {"label":"TAB", "x":0, "y":1, "w":1.25}, {"label":"S", "x":1.25, "y":1}, {"label":"D", "x":2.25, "y":1}, {"label":"F", "x":3.25, "y":1}, {"label":"G", "x":4.25, "y":1}, {"label":"H", "x":5.25, "y":1}, {"label":"J", "x":6.25, "y":1}, {"label":"K", "x":7.25, "y":1}, {"label":"L", "x":8.25, "y":1}, {"label":"ENTER", "x":9.25, "y":1, "w":1.75}, {"label":"SHIFT", "x":0, "y":2, "w":1.75}, {"label":"X", "x":1.75, "y":2}, {"label":"C", "x":2.75, "y":2}, {"label":"V", "x":3.75, "y":2}, {"label":"B", "x":4.75, "y":2}, {"label":"N", "x":5.75, "y":2}, {"label":"M", "x":6.75, "y":2}, {"label":"<", "x":7.75, "y":2}, {"label":">", "x":8.75, "y":2}, {"label":"SHIFT", "x":9.75, "y":2, "w":1.25}, {"label":"CTRL", "x":1.5, "y":3}, {"x":2.5, "y":3, "w":3}, {"x":5.5, "y":3, "w":3}, {"label":"ALT", "x":8.5, "y":3}] + }, + + "LAYOUT_full_space": { + "layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "y":0}, {"label":"Y", "x":5, "y":0}, {"label":"U", "x":6, "y":0}, {"label":"I", "x":7, "y":0}, {"label":"O", "x":8, "y":0}, {"label":"P", "x":9, "y":0}, {"label":"BACK
SPACE", "x":10, "y":0}, {"label":"TAB", "x":0, "y":1, "w":1.25}, {"label":"S", "x":1.25, "y":1}, {"label":"D", "x":2.25, "y":1}, {"label":"F", "x":3.25, "y":1}, {"label":"G", "x":4.25, "y":1}, {"label":"H", "x":5.25, "y":1}, {"label":"J", "x":6.25, "y":1}, {"label":"K", "x":7.25, "y":1}, {"label":"L", "x":8.25, "y":1}, {"label":"ENTER", "x":9.25, "y":1, "w":1.75}, {"label":"SHIFT", "x":0, "y":2, "w":1.75}, {"label":"X", "x":1.75, "y":2}, {"label":"C", "x":2.75, "y":2}, {"label":"V", "x":3.75, "y":2}, {"label":"B", "x":4.75, "y":2}, {"label":"N", "x":5.75, "y":2}, {"label":"M", "x":6.75, "y":2}, {"label":"<", "x":7.75, "y":2}, {"label":">", "x":8.75, "y":2}, {"label":"SHIFT", "x":9.75, "y":2, "w":1.25}, {"label":"CTRL", "x":1.5, "y":3}, {"x":2.5, "y":3, "w":6}, {"label":"ALT", "x":8.5, "y":3}] + } + } +} diff --git a/keyboards/projectcain/vault35/keymaps/default/config.h b/keyboards/projectcain/vault35/keymaps/default/config.h new file mode 100644 index 000000000000..35f670c86b42 --- /dev/null +++ b/keyboards/projectcain/vault35/keymaps/default/config.h @@ -0,0 +1,24 @@ +/* Copyright 2021 projectcain + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define ENCODERS_PAD_A { D6 } +#define ENCODERS_PAD_B { D7 } +#define ENCODER_RESOLUTION 2 +#define COMBO_COUNT 2 +#define COMBO_TERM 50 +#define TAPPING_FORCE_HOLD diff --git a/keyboards/projectcain/vault35/keymaps/default/keymap.c b/keyboards/projectcain/vault35/keymaps/default/keymap.c new file mode 100644 index 000000000000..05fb05b76082 --- /dev/null +++ b/keyboards/projectcain/vault35/keymaps/default/keymap.c @@ -0,0 +1,66 @@ + + /* Copyright 2021 projectcain + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +enum layers{ + BASE, + NUM, + SYM, + META +}; + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [BASE] = LAYOUT_split_4space( + + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOTE, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, + LALT(KC_TAB), MO(1), SFT_T(KC_BSPC), KC_SPACE, MO(2), RESET + ), + + [NUM] = LAYOUT_split_4space( + + KC_PGUP, KC_HOME, KC_UP, KC_END, KC_WBAK, KC_PSLS, KC_7, KC_8, KC_9, KC_PMNS, KC_DEL, + KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_WFWD, KC_PAST, KC_4, KC_5, KC_6, KC_PPLS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_0, KC_1, KC_2, KC_3, KC_PDOT, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RALT(KC_F4), RALT(KC_F4) + ), + + [SYM] = LAYOUT_split_4space( + + S(KC_GRV), KC_GRV, KC_BSLS, S(KC_BSLS), KC_TRNS, KC_TRNS, S(KC_MINS), KC_EQL, KC_TRNS, C(KC_W), C(KC_T), + S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), KC_SCLN, S(KC_SCLN), + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NUMLOCK, KC_TRNS + ), + +}; + + +enum combos { + KL_SLSH, + JK_MINUS +}; + +const uint16_t PROGMEM kl_combo[] = {KC_K, KC_L, COMBO_END}; +const uint16_t PROGMEM jk_combo[] = {KC_J, KC_K, COMBO_END}; + +combo_t key_combos[COMBO_COUNT] = { + [KL_SLSH] = COMBO(kl_combo, S(KC_SLSH)), + [JK_MINUS] = COMBO(jk_combo, KC_MINUS) +}; diff --git a/keyboards/projectcain/vault35/keymaps/default/readme.md b/keyboards/projectcain/vault35/keymaps/default/readme.md new file mode 100644 index 000000000000..608072276767 --- /dev/null +++ b/keyboards/projectcain/vault35/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for vault35 diff --git a/keyboards/projectcain/vault35/keymaps/default/rules.mk b/keyboards/projectcain/vault35/keymaps/default/rules.mk new file mode 100644 index 000000000000..dca6713d4fa6 --- /dev/null +++ b/keyboards/projectcain/vault35/keymaps/default/rules.mk @@ -0,0 +1,2 @@ +ENCODER_ENABLE = yes +COMBO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/projectcain/vault35/readme.md b/keyboards/projectcain/vault35/readme.md new file mode 100644 index 000000000000..88d3ebc73ebf --- /dev/null +++ b/keyboards/projectcain/vault35/readme.md @@ -0,0 +1,21 @@ +# vault35 + +![vault35](https://i.imgur.com/yw3Fvjxh.jpg) + +This is a 30% HHKB-style variant of the vault45 with several bottom row options and rotary encoder support. + +* Keyboard Maintainer: [projectcain](https://github.com/projectcain) +* Hardware Supported: Vault 35 PCB +* Hardware Availability: mechvault.net + +To reset the keyboard into bootloader mode, short the two pads labeled "Reset" on the left side of the pcb + +Make example for this keyboard (after setting up your build environment): + + make projectcain/vault35:default + +Flashing example for this keyboard: + + make projectcain/vault35:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/projectcain/vault35/rules.mk b/keyboards/projectcain/vault35/rules.mk new file mode 100644 index 000000000000..d2109f62500b --- /dev/null +++ b/keyboards/projectcain/vault35/rules.mk @@ -0,0 +1,19 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/projectcain/vault35/vault35.c b/keyboards/projectcain/vault35/vault35.c new file mode 100644 index 000000000000..2bb1675a1f84 --- /dev/null +++ b/keyboards/projectcain/vault35/vault35.c @@ -0,0 +1,29 @@ +/* Copyright 2021 projectcain + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "vault35.h" + +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + if (index == 0) { /* First encoder */ + if (clockwise) { + tap_code(KC_PGDN); + } else { + tap_code(KC_PGUP); + } + } + return true; +} \ No newline at end of file diff --git a/keyboards/projectcain/vault35/vault35.h b/keyboards/projectcain/vault35/vault35.h new file mode 100644 index 000000000000..af5577f3142e --- /dev/null +++ b/keyboards/projectcain/vault35/vault35.h @@ -0,0 +1,80 @@ +/* Copyright 2021 projectcain + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + +#define LAYOUT_split_4space( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, \ + K301, K302, K303, K305, K306, K307 \ +) \ +{ \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, KC_NO }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, KC_NO }, \ + { KC_NO, K301, K302, K303, KC_NO, K305, K306, K307, KC_NO, KC_NO, KC_NO } \ +} + +#define LAYOUT_split_3space( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, \ + K301, K303, K304, K305, K307 \ +) \ +{ \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, KC_NO }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, KC_NO }, \ + { KC_NO, K301, KC_NO, K303, K304, K305, KC_NO, K307, KC_NO, KC_NO, KC_NO } \ +} + +#define LAYOUT_split_2space( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, \ + K301, K303, K305, K307 \ +) \ +{ \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, KC_NO }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, KC_NO }, \ + { KC_NO, K301, KC_NO, K303, KC_NO, K305, KC_NO, K307, KC_NO, KC_NO, KC_NO } \ +} + +#define LAYOUT_full_space( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, \ + K301, K304, K307 \ +) \ +{ \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, KC_NO }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, KC_NO }, \ + { KC_NO, K301, KC_NO, KC_NO, K304, KC_NO, KC_NO, K307, KC_NO, KC_NO, KC_NO } \ +} diff --git a/keyboards/projectcain/vault45/config.h b/keyboards/projectcain/vault45/config.h new file mode 100644 index 000000000000..2cbf55dd0f8a --- /dev/null +++ b/keyboards/projectcain/vault45/config.h @@ -0,0 +1,152 @@ +/* +Copyright 2021 projectcain + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6060 +#define DEVICE_VER 0x0001 +#define MANUFACTURER projectcain +#define PRODUCT vault45 + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 13 + +/* + * 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 { C6, B6, B5, C7 } +#define MATRIX_COL_PINS { B0, D5, D4, D6, D7, B4, D3, F0, F1, F4, F5, F6, F7 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +//#define LED_NUM_LOCK_PIN B0 +//#define LED_CAPS_LOCK_PIN B1 +//#define LED_SCROLL_LOCK_PIN B2 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +//#define RGB_DI_PIN E2 +//#ifdef RGB_DI_PIN +//# define RGBLED_NUM 16 +//# define RGBLIGHT_HUE_STEP 8 +//# define RGBLIGHT_SAT_STEP 8 +//# define RGBLIGHT_VAL_STEP 8 +//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +//# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +//#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/projectcain/vault45/info.json b/keyboards/projectcain/vault45/info.json new file mode 100644 index 000000000000..6f272e3bbaa4 --- /dev/null +++ b/keyboards/projectcain/vault45/info.json @@ -0,0 +1,29 @@ +{ + "keyboard_name": "Vault 45", + "url": "", + "maintainer": "projectcain", + "layout_aliases": { + "LAYOUT": "LAYOUT_all" + }, + "layouts": { + "LAYOUT_all": { + "layout": [{"label":"ESC", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"DEL", "x":11, "y":0}, {"label":"BACK
SPACE", "x":12, "y":0}, {"label":"TAB", "x":0, "y":1, "w":1.25}, {"label":"A", "x":1.25, "y":1}, {"label":"S", "x":2.25, "y":1}, {"label":"D", "x":3.25, "y":1}, {"label":"F", "x":4.25, "y":1}, {"label":"G", "x":5.25, "y":1}, {"label":"H", "x":6.25, "y":1}, {"label":"J", "x":7.25, "y":1}, {"label":"K", "x":8.25, "y":1}, {"label":"L", "x":9.25, "y":1}, {"label":":", "x":10.25, "y":1}, {"label":"ENTER", "x":11.25, "y":1, "w":1.75}, {"label":"SHIFT", "x":0, "y":2, "w":1.75}, {"label":"Z", "x":1.75, "y":2}, {"label":"X", "x":2.75, "y":2}, {"label":"C", "x":3.75, "y":2}, {"label":"V", "x":4.75, "y":2}, {"label":"B", "x":5.75, "y":2}, {"label":"N", "x":6.75, "y":2}, {"label":"M", "x":7.75, "y":2}, {"label":"<", "x":8.75, "y":2}, {"label":">", "x":9.75, "y":2}, {"label":"?", "x":10.75, "y":2}, {"label":"SHIFT", "x":11.75, "y":2, "w":1.25}, {"label":"CTRL", "x":1.25, "y":3}, {"label":"ALT", "x":2.25, "y":3, "w":1.25}, {"label":"SYS", "x":3.5, "y":3, "w":1.25}, {"x":4.75, "y":3, "w":1.25}, {"x":6, "y":3}, {"x":7, "y":3, "w":1.25}, {"label":"FN", "x":8.25, "y":3, "w":1.25}, {"label":"ALT", "x":9.5, "y":3, "w":1.25}, {"label":"CTRL", "x":10.75, "y":3}] + }, + + "LAYOUT_split_4space": { + "layout": [{"label":"ESC", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"DEL", "x":11, "y":0}, {"label":"BACK
SPACE", "x":12, "y":0}, {"label":"TAB", "x":0, "y":1, "w":1.25}, {"label":"A", "x":1.25, "y":1}, {"label":"S", "x":2.25, "y":1}, {"label":"D", "x":3.25, "y":1}, {"label":"F", "x":4.25, "y":1}, {"label":"G", "x":5.25, "y":1}, {"label":"H", "x":6.25, "y":1}, {"label":"J", "x":7.25, "y":1}, {"label":"K", "x":8.25, "y":1}, {"label":"L", "x":9.25, "y":1}, {"label":":", "x":10.25, "y":1}, {"label":"ENTER", "x":11.25, "y":1, "w":1.75}, {"label":"SHIFT", "x":0, "y":2, "w":1.75}, {"label":"Z", "x":1.75, "y":2}, {"label":"X", "x":2.75, "y":2}, {"label":"C", "x":3.75, "y":2}, {"label":"V", "x":4.75, "y":2}, {"label":"B", "x":5.75, "y":2}, {"label":"N", "x":6.75, "y":2}, {"label":"M", "x":7.75, "y":2}, {"label":"<", "x":8.75, "y":2}, {"label":">", "x":9.75, "y":2}, {"label":"?", "x":10.75, "y":2}, {"label":"SHIFT", "x":11.75, "y":2, "w":1.25}, {"label":"CTRL", "x":1.25, "y":3}, {"label":"ALT", "x":2.25, "y":3, "w":1.25}, {"label":"SYS", "x":3.5, "y":3, "w":1.25}, {"x":4.75, "y":3, "w":1.75}, {"x":6.5, "y":3, "w":1.75}, {"label":"FN", "x":8.25, "y":3, "w":1.25}, {"label":"ALT", "x":9.5, "y":3, "w":1.25}, {"label":"CTRL", "x":10.75, "y":3}] + }, + + "LAYOUT_split_3space": { + "layout": [{"label":"ESC", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"DEL", "x":11, "y":0}, {"label":"BACK
SPACE", "x":12, "y":0}, {"label":"TAB", "x":0, "y":1, "w":1.25}, {"label":"A", "x":1.25, "y":1}, {"label":"S", "x":2.25, "y":1}, {"label":"D", "x":3.25, "y":1}, {"label":"F", "x":4.25, "y":1}, {"label":"G", "x":5.25, "y":1}, {"label":"H", "x":6.25, "y":1}, {"label":"J", "x":7.25, "y":1}, {"label":"K", "x":8.25, "y":1}, {"label":"L", "x":9.25, "y":1}, {"label":":", "x":10.25, "y":1}, {"label":"ENTER", "x":11.25, "y":1, "w":1.75}, {"label":"SHIFT", "x":0, "y":2, "w":1.75}, {"label":"Z", "x":1.75, "y":2}, {"label":"X", "x":2.75, "y":2}, {"label":"C", "x":3.75, "y":2}, {"label":"V", "x":4.75, "y":2}, {"label":"B", "x":5.75, "y":2}, {"label":"N", "x":6.75, "y":2}, {"label":"M", "x":7.75, "y":2}, {"label":"<", "x":8.75, "y":2}, {"label":">", "x":9.75, "y":2}, {"label":"?", "x":10.75, "y":2}, {"label":"SHIFT", "x":11.75, "y":2, "w":1.25}, {"label":"CTRL", "x":1.25, "y":3}, {"label":"ALT", "x":2.25, "y":3, "w":1.25}, {"x":3.5, "y":3, "w":2.25}, {"x":5.75, "y":3}, {"x":6.75, "y":3, "w":2.75}, {"label":"ALT", "x":9.5, "y":3, "w":1.25}, {"label":"CTRL", "x":10.75, "y":3}] + }, + + "LAYOUT_split_2space": { + "layout": [{"label":"ESC", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"DEL", "x":11, "y":0}, {"label":"BACK
SPACE", "x":12, "y":0}, {"label":"TAB", "x":0, "y":1, "w":1.25}, {"label":"A", "x":1.25, "y":1}, {"label":"S", "x":2.25, "y":1}, {"label":"D", "x":3.25, "y":1}, {"label":"F", "x":4.25, "y":1}, {"label":"G", "x":5.25, "y":1}, {"label":"H", "x":6.25, "y":1}, {"label":"J", "x":7.25, "y":1}, {"label":"K", "x":8.25, "y":1}, {"label":"L", "x":9.25, "y":1}, {"label":":", "x":10.25, "y":1}, {"label":"ENTER", "x":11.25, "y":1, "w":1.75}, {"label":"SHIFT", "x":0, "y":2, "w":1.75}, {"label":"Z", "x":1.75, "y":2}, {"label":"X", "x":2.75, "y":2}, {"label":"C", "x":3.75, "y":2}, {"label":"V", "x":4.75, "y":2}, {"label":"B", "x":5.75, "y":2}, {"label":"N", "x":6.75, "y":2}, {"label":"M", "x":7.75, "y":2}, {"label":"<", "x":8.75, "y":2}, {"label":">", "x":9.75, "y":2}, {"label":"?", "x":10.75, "y":2}, {"label":"SHIFT", "x":11.75, "y":2, "w":1.25}, {"label":"CTRL", "x":1.25, "y":3}, {"label":"ALT", "x":2.25, "y":3, "w":1.25}, {"x":3.5, "y":3, "w":3}, {"x":6.5, "y":3, "w":3}, {"label":"ALT", "x":9.5, "y":3, "w":1.25}, {"label":"CTRL", "x":10.75, "y":3}] + }, + + "LAYOUT_full_space": { + "layout": [{"label":"ESC", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"DEL", "x":11, "y":0}, {"label":"BACK
SPACE", "x":12, "y":0}, {"label":"TAB", "x":0, "y":1, "w":1.25}, {"label":"A", "x":1.25, "y":1}, {"label":"S", "x":2.25, "y":1}, {"label":"D", "x":3.25, "y":1}, {"label":"F", "x":4.25, "y":1}, {"label":"G", "x":5.25, "y":1}, {"label":"H", "x":6.25, "y":1}, {"label":"J", "x":7.25, "y":1}, {"label":"K", "x":8.25, "y":1}, {"label":"L", "x":9.25, "y":1}, {"label":":", "x":10.25, "y":1}, {"label":"ENTER", "x":11.25, "y":1, "w":1.75}, {"label":"SHIFT", "x":0, "y":2, "w":1.75}, {"label":"Z", "x":1.75, "y":2}, {"label":"X", "x":2.75, "y":2}, {"label":"C", "x":3.75, "y":2}, {"label":"V", "x":4.75, "y":2}, {"label":"B", "x":5.75, "y":2}, {"label":"N", "x":6.75, "y":2}, {"label":"M", "x":7.75, "y":2}, {"label":"<", "x":8.75, "y":2}, {"label":">", "x":9.75, "y":2}, {"label":"?", "x":10.75, "y":2}, {"label":"SHIFT", "x":11.75, "y":2, "w":1.25}, {"label":"CTRL", "x":1.25, "y":3}, {"label":"ALT", "x":2.25, "y":3, "w":1.25}, {"x":3.5, "y":3, "w":6}, {"label":"ALT", "x":9.5, "y":3, "w":1.25}, {"label":"CTRL", "x":10.75, "y":3}] + } + } +} diff --git a/keyboards/projectcain/vault45/keymaps/default/config.h b/keyboards/projectcain/vault45/keymaps/default/config.h new file mode 100644 index 000000000000..81321715af52 --- /dev/null +++ b/keyboards/projectcain/vault45/keymaps/default/config.h @@ -0,0 +1,24 @@ + /* Copyright 2021 projectcain + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define ENCODERS_PAD_A { B3, D1 } +#define ENCODERS_PAD_B { B2, D2 } +#define ENCODER_RESOLUTION 2 +#define COMBO_COUNT 2 +#define COMBO_TERM 50 +#define TAPPING_FORCE_HOLD diff --git a/keyboards/projectcain/vault45/keymaps/default/keymap.c b/keyboards/projectcain/vault45/keymaps/default/keymap.c new file mode 100644 index 000000000000..6955320e7783 --- /dev/null +++ b/keyboards/projectcain/vault45/keymaps/default/keymap.c @@ -0,0 +1,59 @@ + /* Copyright 2021 projectcain + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * */ + +#include QMK_KEYBOARD_H +enum layers{ + BASE, + NUM, + SYM, + META +}; + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [BASE] = LAYOUT_split_4space( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_F5, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOTE, LT(SYM, KC_ENT), + RCTL_T(S(KC_9)), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, S(KC_0), + LALT(KC_TAB), LALT(KC_TAB), MO(1), SFT_T(KC_BSPC), KC_SPACE, MO(2), KC_LGUI, G(KC_TAB) + ), + + [NUM] = LAYOUT_split_4space( + KC_TRNS, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_WBAK, KC_PSLS, KC_7, KC_8, KC_9, KC_PMNS, KC_DEL, RESET, + KC_TRNS, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_WFWD, KC_PAST, KC_4, KC_5, KC_6, KC_PPLS, KC_TRNS, + KC_LBRC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_0, KC_1, KC_2, KC_3, KC_PDOT, KC_RBRC, + KC_PSCR, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, S(KC_RCTRL), RALT(KC_F4), RALT(KC_F4) + ), + + [SYM] = LAYOUT_split_4space( + RGB_TOG, S(KC_GRV), KC_GRV, KC_BSLS, S(KC_BSLS), KC_TRNS, KC_TRNS, S(KC_MINS), KC_EQL, KC_TRNS, C(KC_W), C(KC_T), KC_TRNS, + KC_TRNS, S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), KC_SCLN, S(KC_SCLN), KC_TRNS, + S(KC_LBRC), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, S(KC_RBRC), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_CAPSLOCK, KC_NUMLOCK, KC_TRNS + ), + +}; + + +enum combos { + KL_SLSH, + JK_MINUS +}; + +const uint16_t PROGMEM kl_combo[] = {KC_K, KC_L, COMBO_END}; +const uint16_t PROGMEM jk_combo[] = {KC_J, KC_K, COMBO_END}; + +combo_t key_combos[COMBO_COUNT] = { + [KL_SLSH] = COMBO(kl_combo, S(KC_SLSH)), + [JK_MINUS] = COMBO(jk_combo, KC_MINUS) +}; diff --git a/keyboards/projectcain/vault45/keymaps/default/readme.md b/keyboards/projectcain/vault45/keymaps/default/readme.md new file mode 100644 index 000000000000..ce333c3b81c9 --- /dev/null +++ b/keyboards/projectcain/vault45/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for vault45 diff --git a/keyboards/projectcain/vault45/keymaps/default/rules.mk b/keyboards/projectcain/vault45/keymaps/default/rules.mk new file mode 100644 index 000000000000..dca6713d4fa6 --- /dev/null +++ b/keyboards/projectcain/vault45/keymaps/default/rules.mk @@ -0,0 +1,2 @@ +ENCODER_ENABLE = yes +COMBO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/projectcain/vault45/readme.md b/keyboards/projectcain/vault45/readme.md new file mode 100644 index 000000000000..a84feaf22415 --- /dev/null +++ b/keyboards/projectcain/vault45/readme.md @@ -0,0 +1,21 @@ +# vault45 + +![vault45](https://i.imgur.com/SYrsbQEh.jpeg) + +This is a 40% HHKB-style keyboard inspired by the JD45 with updated bottom row options and rotary encoders. + +* Keyboard Maintainer: [projectcain](https://github.com/projectcain) +* Hardware Supported: Vault 45 PCB +* Hardware Availability: mechvault.net + +To reset the keyboard into bootloader mode, short the two pads labeled "Reset" on the left side of the pcb + +Make example for this keyboard (after setting up your build environment): + + make projectcain/vault45:default + +Flashing example for this keyboard: + + make projectcain/vault45:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/projectcain/vault45/rules.mk b/keyboards/projectcain/vault45/rules.mk new file mode 100644 index 000000000000..d2109f62500b --- /dev/null +++ b/keyboards/projectcain/vault45/rules.mk @@ -0,0 +1,19 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/projectcain/vault45/vault45.c b/keyboards/projectcain/vault45/vault45.c new file mode 100644 index 000000000000..fa82335492d7 --- /dev/null +++ b/keyboards/projectcain/vault45/vault45.c @@ -0,0 +1,35 @@ +/* Copyright 2021 projectcain + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "vault45.h" + +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + 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_DOWN); + } else { + tap_code(KC_UP); + } + } + return true; +} diff --git a/keyboards/projectcain/vault45/vault45.h b/keyboards/projectcain/vault45/vault45.h new file mode 100644 index 000000000000..b1217d6d06a8 --- /dev/null +++ b/keyboards/projectcain/vault45/vault45.h @@ -0,0 +1,90 @@ +/* Copyright 2021 projectcain + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + +#define LAYOUT_all( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K112, \ + K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \ + K301, K302, K304, K305, K306, K307, K308, K310, K311 \ +) \ +{ \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, KC_NO, K112 }, \ + { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212 }, \ + { KC_NO, K301, K302, KC_NO, K304, K305, K306, K307, K308, KC_NO, K310, K311, KC_NO } \ +} + +#define LAYOUT_split_4space( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K112, \ + K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \ + K301, K302, K304, K305, K307, K308, K310, K311 \ +) \ +{ \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, KC_NO, K112 }, \ + { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212 }, \ + { KC_NO, K301, K302, KC_NO, K304, K305, KC_NO, K307, K308, KC_NO, K310, K311, KC_NO } \ +} +#define LAYOUT_split_3space( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K112, \ + K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \ + K301, K302, K305, K306, K307, K310, K311 \ +) \ +{ \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, KC_NO, K112 }, \ + { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212 }, \ + { KC_NO, K301, K302, KC_NO, KC_NO, K305, K306, K307, KC_NO, KC_NO, K310, K311, KC_NO } \ +} +#define LAYOUT_split_2space( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K112, \ + K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \ + K301, K302, K305, K307, K310, K311 \ +) \ +{ \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, KC_NO, K112 }, \ + { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212 }, \ + { KC_NO, K301, K302, KC_NO, KC_NO, K305, KC_NO, K307, KC_NO, KC_NO, K310, K311, KC_NO } \ +} +#define LAYOUT_full_space( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K112, \ + K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \ + K301, K302, K306, K310, K311 \ +) \ +{ \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, KC_NO, K112 }, \ + { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212 }, \ + { KC_NO, K301, K302, KC_NO, KC_NO, KC_NO, K306, KC_NO, KC_NO, KC_NO, K310, K311, KC_NO } \ +} diff --git a/keyboards/projectkb/alice/info.json b/keyboards/projectkb/alice/info.json index 299612c1ace9..b4ae3103c258 100644 --- a/keyboards/projectkb/alice/info.json +++ b/keyboards/projectkb/alice/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Alice", "url": "https://store.projectkeyboard.com/", "maintainer": "qmk", - "width": 19.75, - "height": 5.25, "layouts": { "LAYOUT_alice_split_bs": { "layout": [ diff --git a/keyboards/projectkb/alice/rev1/rules.mk b/keyboards/projectkb/alice/rev1/rules.mk index 21714aab0d3c..4343a7ea3f68 100644 --- a/keyboards/projectkb/alice/rev1/rules.mk +++ b/keyboards/projectkb/alice/rev1/rules.mk @@ -7,20 +7,16 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output WS2812_DRIVER = spi diff --git a/keyboards/projectkb/alice/rev2/rules.mk b/keyboards/projectkb/alice/rev2/rules.mk index 21714aab0d3c..4343a7ea3f68 100644 --- a/keyboards/projectkb/alice/rev2/rules.mk +++ b/keyboards/projectkb/alice/rev2/rules.mk @@ -7,20 +7,16 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output WS2812_DRIVER = spi diff --git a/keyboards/projectkb/signature87/info.json b/keyboards/projectkb/signature87/info.json index a93a51ee954d..2be7e402e6f4 100644 --- a/keyboards/projectkb/signature87/info.json +++ b/keyboards/projectkb/signature87/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Signature 87", "url": "", "maintainer": "qmk", - "width": 18.25, - "height": 6.25, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":4, "y":1.25}, {"x":5, "y":1.25}, {"x":6, "y":1.25}, {"x":7, "y":1.25}, {"x":8, "y":1.25}, {"x":9, "y":1.25}, {"x":10, "y":1.25}, {"x":11, "y":1.25}, {"x":12, "y":1.25}, {"x":13, "y":1.25}, {"x":14, "y":1.25}, {"x":15.25, "y":1.25}, {"x":16.25, "y":1.25}, {"x":17.25, "y":1.25}, {"x":0, "y":2.25, "w":1.5}, {"x":1.5, "y":2.25}, {"x":2.5, "y":2.25}, {"x":3.5, "y":2.25}, {"x":4.5, "y":2.25}, {"x":5.5, "y":2.25}, {"x":6.5, "y":2.25}, {"x":7.5, "y":2.25}, {"x":8.5, "y":2.25}, {"x":9.5, "y":2.25}, {"x":10.5, "y":2.25}, {"x":11.5, "y":2.25}, {"x":12.5, "y":2.25}, {"x":13.5, "y":2.25, "w":1.5}, {"x":15.25, "y":2.25}, {"x":16.25, "y":2.25}, {"x":17.25, "y":2.25}, {"x":0, "y":3.25, "w":1.75}, {"x":1.75, "y":3.25}, {"x":2.75, "y":3.25}, {"x":3.75, "y":3.25}, {"x":4.75, "y":3.25}, {"x":5.75, "y":3.25}, {"x":6.75, "y":3.25}, {"x":7.75, "y":3.25}, {"x":8.75, "y":3.25}, {"x":9.75, "y":3.25}, {"x":10.75, "y":3.25}, {"x":11.75, "y":3.25}, {"x":12.75, "y":3.25, "w":2.25}, {"x":0, "y":4.25, "w":2.25}, {"x":2.25, "y":4.25}, {"x":3.25, "y":4.25}, {"x":4.25, "y":4.25}, {"x":5.25, "y":4.25}, {"x":6.25, "y":4.25}, {"x":7.25, "y":4.25}, {"x":8.25, "y":4.25}, {"x":9.25, "y":4.25}, {"x":10.25, "y":4.25}, {"x":11.25, "y":4.25}, {"x":12.25, "y":4.25, "w":1.75}, {"x":14, "y":4.25}, {"x":16.25, "y":4.25}, {"x":0, "y":5.25, "w":1.25}, {"x":1.25, "y":5.25, "w":1.25}, {"x":2.5, "y":5.25, "w":1.25}, {"x":3.75, "y":5.25, "w":6.25}, {"x":10, "y":5.25, "w":1.25}, {"x":11.25, "y":5.25, "w":1.25}, {"x":12.5, "y":5.25, "w":1.25}, {"x":13.75, "y":5.25, "w":1.25}, {"x":15.25, "y":5.25}, {"x":16.25, "y":5.25}, {"x":17.25, "y":5.25}] @@ -21,4 +19,4 @@ "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":4, "y":1.25}, {"x":5, "y":1.25}, {"x":6, "y":1.25}, {"x":7, "y":1.25}, {"x":8, "y":1.25}, {"x":9, "y":1.25}, {"x":10, "y":1.25}, {"x":11, "y":1.25}, {"x":12, "y":1.25}, {"x":13, "y":1.25}, {"x":14, "y":1.25}, {"x":15.25, "y":1.25}, {"x":16.25, "y":1.25}, {"x":17.25, "y":1.25}, {"x":0, "y":2.25, "w":1.5}, {"x":1.5, "y":2.25}, {"x":2.5, "y":2.25}, {"x":3.5, "y":2.25}, {"x":4.5, "y":2.25}, {"x":5.5, "y":2.25}, {"x":6.5, "y":2.25}, {"x":7.5, "y":2.25}, {"x":8.5, "y":2.25}, {"x":9.5, "y":2.25}, {"x":10.5, "y":2.25}, {"x":11.5, "y":2.25}, {"x":12.5, "y":2.25}, {"x":13.5, "y":2.25, "w":1.5}, {"x":15.25, "y":2.25}, {"x":16.25, "y":2.25}, {"x":17.25, "y":2.25}, {"x":0, "y":3.25, "w":1.75}, {"x":1.75, "y":3.25}, {"x":2.75, "y":3.25}, {"x":3.75, "y":3.25}, {"x":4.75, "y":3.25}, {"x":5.75, "y":3.25}, {"x":6.75, "y":3.25}, {"x":7.75, "y":3.25}, {"x":8.75, "y":3.25}, {"x":9.75, "y":3.25}, {"x":10.75, "y":3.25}, {"x":11.75, "y":3.25}, {"x":12.75, "y":3.25, "w":2.25}, {"x":0, "y":4.25, "w":2.25}, {"x":2.25, "y":4.25}, {"x":3.25, "y":4.25}, {"x":4.25, "y":4.25}, {"x":5.25, "y":4.25}, {"x":6.25, "y":4.25}, {"x":7.25, "y":4.25}, {"x":8.25, "y":4.25}, {"x":9.25, "y":4.25}, {"x":10.25, "y":4.25}, {"x":11.25, "y":4.25}, {"x":12.25, "y":4.25, "w":1.75}, {"x":14, "y":4.25}, {"x":16.25, "y":4.25}, {"x":0, "y":5.25, "w":1.5}, {"x":2.5, "y":5.25, "w":1.5}, {"x":4, "y":5.25, "w":7}, {"x":11, "y":5.25, "w":1.5}, {"x":13.5, "y":5.25, "w":1.5}, {"x":15.25, "y":5.25}, {"x":16.25, "y":5.25}, {"x":17.25, "y":5.25}] } } -} \ No newline at end of file +} diff --git a/keyboards/projectkb/signature87/rules.mk b/keyboards/projectkb/signature87/rules.mk index fe264da9ddac..10b635f2c4ec 100644 --- a/keyboards/projectkb/signature87/rules.mk +++ b/keyboards/projectkb/signature87/rules.mk @@ -7,12 +7,11 @@ BOOTLOADER = stm32-dfu # Build Options # comment out to disable the options. # -#BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = no diff --git a/keyboards/prototypist/j01/info.json b/keyboards/prototypist/j01/info.json index 252bffe69b9c..c93f4a9f4d58 100644 --- a/keyboards/prototypist/j01/info.json +++ b/keyboards/prototypist/j01/info.json @@ -2,8 +2,6 @@ "keyboard_name": "J-01", "url": "https://prototypist.net/", "maintainer": "Flexerm", - "width": 19, - "height": 5.25, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/prototypist/j01/rules.mk b/keyboards/prototypist/j01/rules.mk index 3de5d7ea3ab9..8fdce748c017 100644 --- a/keyboards/prototypist/j01/rules.mk +++ b/keyboards/prototypist/j01/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LTO_ENABLE = yes diff --git a/keyboards/pteron36/config.h b/keyboards/pteron36/config.h new file mode 100644 index 000000000000..d6f31514e60b --- /dev/null +++ b/keyboards/pteron36/config.h @@ -0,0 +1,167 @@ +/* +Copyright 2021 Harshit Goel + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4847 //HG +#define PRODUCT_ID 0x5054 //PT +#define DEVICE_VER 0x0001 +#define MANUFACTURER Harshit Goel +#define PRODUCT Pteron36 + +/* key matrix size */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 5 + +/* + * 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 { E6, D7, B4, B5 } +#define MATRIX_COL_PINS { F6, F7, B1, B3, B2 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION ROW2COL + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ + #define USE_SERIAL +#define SOFT_SERIAL_PIN D3 // or D1, D2, D3, E6 + +//#define LED_NUM_LOCK_PIN B0 +//#define LED_CAPS_LOCK_PIN B1 +//#define LED_SCROLL_LOCK_PIN B2 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +//#define RGB_DI_PIN E2 +//#ifdef RGB_DI_PIN +//# define RGBLED_NUM 16 +//# define RGBLIGHT_HUE_STEP 8 +//# define RGBLIGHT_SAT_STEP 8 +//# define RGBLIGHT_VAL_STEP 8 +//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +//# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +//#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 +// for via +#define DYNAMIC_KEYMAP_LAYER_COUNT 7 + +//left encoder +#define ENCODERS_PAD_A { F5 } +#define ENCODERS_PAD_B { F4 } + +//right encoder +#define ENCODERS_PAD_A_RIGHT { F4 } +#define ENCODERS_PAD_B_RIGHT { F5 } + +//RGB Underglow +#define RGB_DI_PIN B6 +#define RGBLED_NUM 10 \ No newline at end of file diff --git a/keyboards/pteron36/info.json b/keyboards/pteron36/info.json new file mode 100644 index 000000000000..e191dc616fd6 --- /dev/null +++ b/keyboards/pteron36/info.json @@ -0,0 +1,95 @@ +{ + "keyboard_name": "Pteron36", + "url": "", + "maintainer": "harshitgoel96", + "layouts": { + "LAYOUT_split_3x5_3": { + "layout": [ + {"x":0, "y":1}, + {"x":1, "y":0.5}, + {"x":2, "y":0}, + {"x":3, "y":0.5}, + {"x":4, "y":0.75}, + {"x":10, "y":0.75}, + {"x":11, "y":0.5}, + {"x":12, "y":0}, + {"x":13, "y":0.5}, + {"x":14, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":1.5}, + {"x":2, "y":1}, + {"x":3, "y":1.5}, + {"x":4, "y":1.75}, + {"x":10, "y":1.75}, + {"x":11, "y":1.5}, + {"x":12, "y":1}, + {"x":13, "y":1.5}, + {"x":14, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":2.5}, + {"x":2, "y":2}, + {"x":3, "y":2.5}, + {"x":4, "y":2.75}, + {"x":10, "y":2.75}, + {"x":11, "y":2.5}, + {"x":12, "y":2}, + {"x":13, "y":2.5}, + {"x":14, "y":3}, + + {"x":4, "y":4}, + {"x":5, "y":4}, + {"x":6, "y":4}, + {"x":8, "y":4}, + {"x":9, "y":4}, + {"x":10, "y":4} + ] + }, + "LAYOUT_split_3x5_3_encoder": { + "layout": [ + {"x":0, "y":1}, + {"x":1, "y":0.5}, + {"x":2, "y":0}, + {"x":3, "y":0.5}, + {"x":4, "y":0.75}, + {"x":10, "y":0.75}, + {"x":11, "y":0.5}, + {"x":12, "y":0}, + {"x":13, "y":0.5}, + {"x":14, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":1.5}, + {"x":2, "y":1}, + {"x":3, "y":1.5}, + {"x":4, "y":1.75}, + {"x":10, "y":1.75}, + {"x":11, "y":1.5}, + {"x":12, "y":1}, + {"x":13, "y":1.5}, + {"x":14, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":2.5}, + {"x":2, "y":2}, + {"x":3, "y":2.5}, + {"x":4, "y":2.75}, + {"label":"enc1", "x":5.5, "y":2.75}, + {"label":"enc2", "x":8.5, "y":2.75}, + {"x":10, "y":2.75}, + {"x":11, "y":2.5}, + {"x":12, "y":2}, + {"x":13, "y":2.5}, + {"x":14, "y":3}, + + {"x":4, "y":4}, + {"x":5, "y":4}, + {"x":6, "y":4}, + {"x":8, "y":4}, + {"x":9, "y":4}, + {"x":10, "y":4} + ] + } + } +} diff --git a/keyboards/pteron36/keymaps/default/keymap.c b/keyboards/pteron36/keymaps/default/keymap.c new file mode 100644 index 000000000000..14b4e5979b24 --- /dev/null +++ b/keyboards/pteron36/keymaps/default/keymap.c @@ -0,0 +1,36 @@ + /* Copyright HarshitGoel96 2020 + * With permission from mattdibi, the original maintainer of the Redox hardware. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. + +enum custom_keycodes { + _QWERTY +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_QWERTY] = LAYOUT_split_3x5_3_encoder( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, + KC_LGUI, KC_BSPC, KC_SPC, KC_SPC, KC_ENT, KC_RALT + ) +}; diff --git a/keyboards/pteron36/keymaps/via/keymap.c b/keyboards/pteron36/keymaps/via/keymap.c new file mode 100644 index 000000000000..47533efc9338 --- /dev/null +++ b/keyboards/pteron36/keymaps/via/keymap.c @@ -0,0 +1,143 @@ + /* Copyright HarshitGoel96 2020 + * With permission from mattdibi, the original maintainer of the Redox hardware. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. + +enum layer_names { + _QWERTY, + _SYMB, + _NAV, + _ADJUST, + _MOUSE, + _NUMB, + _FNR +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_QWERTY] = LAYOUT_split_3x5_3_encoder( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, + KC_LGUI, KC_BSPC, KC_SPC, KC_SPC, KC_ENT, KC_RALT + ), + + [_SYMB] = LAYOUT_split_3x5_3_encoder( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_NAV] = LAYOUT_split_3x5_3_encoder( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_ADJUST] = LAYOUT_split_3x5_3_encoder( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_MOUSE] = LAYOUT_split_3x5_3_encoder( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_NUMB] = LAYOUT_split_3x5_3_encoder( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_FNR] = LAYOUT_split_3x5_3_encoder( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) + +}; + +#ifdef OLED_ENABLE + +static void render_logo(void) { + static const char PROGMEM qmk_logo[] = { + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00 + }; + + oled_write_P(qmk_logo, false); +} +static void render_status(void){ + oled_write_P(PSTR("Layer: "), false); + + switch (get_highest_layer(layer_state)) { + case _QWERTY: + oled_write_P(PSTR("Default\n"), false); + break; + case _SYMB: + oled_write_P(PSTR("Symbol\n"), false); + break; + case _NAV: + oled_write_P(PSTR("Nav\n"), false); + break; + case _ADJUST: + oled_write_P(PSTR("Adjust\n"), false); + break; + case _MOUSE: + oled_write_P(PSTR("Mouse\n"), false); + break; + case _NUMB: + oled_write_P(PSTR("Number\n"), false); + break; + case _FNR: + oled_write_P(PSTR("FunR\n"), false); + break; + default: + // Or use the write_ln shortcut over adding '\n' to the end of your string + oled_write_ln_P(PSTR("Undefined"), false); + } + + // Host Keyboard LED Status + led_t led_state = host_keyboard_led_state(); + oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); + oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); + oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); +} +bool oled_task_user(void) { + if (is_keyboard_master()) { + render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) + } else { + render_logo(); // Renders a static logo + oled_scroll_left(); // Turns on scrolling + } + return false; +} +#endif diff --git a/keyboards/pteron36/keymaps/via/readme.md b/keyboards/pteron36/keymaps/via/readme.md new file mode 100644 index 000000000000..5bde196156b3 --- /dev/null +++ b/keyboards/pteron36/keymaps/via/readme.md @@ -0,0 +1 @@ +# Default keymap for via \ No newline at end of file diff --git a/keyboards/pteron36/keymaps/via/rules.mk b/keyboards/pteron36/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/pteron36/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/pteron36/pteron36.c b/keyboards/pteron36/pteron36.c new file mode 100644 index 000000000000..1281b5306e59 --- /dev/null +++ b/keyboards/pteron36/pteron36.c @@ -0,0 +1,70 @@ +/* Copyright 2021 Harshit Goel + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "pteron36.h" + +//common encoder setup + +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + if (index == 0) { /* First encoder */ + if (clockwise) { + tap_code(KC__VOLUP); + } else { + tap_code(KC__VOLDOWN); + } + } else if (index == 1) { /* Second encoder */ + if (clockwise) { + tap_code(KC_PGUP); + } else { + tap_code(KC_PGDN); + } + } + return true; +} +//common oled support. +#ifdef OLED_ENABLE +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } + if (is_keyboard_master()) { + oled_write_P(PSTR("Layer: "), false); + switch (get_highest_layer(layer_state)) { + case 0: + oled_write_ln_P(PSTR("Default"), false); + break; + default: + // Or use the write_ln shortcut over adding '\n' to the end of your string + oled_write_ln_P(PSTR("Undefined"), false); + } + // Host Keyboard LED Status + led_t led_state = host_keyboard_led_state(); + oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); + oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); + oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); + } else { + static const char PROGMEM qmk_logo[] = { + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00 + }; + oled_write_P(qmk_logo, false); + oled_scroll_left(); // Turns on scrolling + } + return false; +} +#endif diff --git a/keyboards/pteron36/pteron36.h b/keyboards/pteron36/pteron36.h new file mode 100644 index 000000000000..113e7270dbd1 --- /dev/null +++ b/keyboards/pteron36/pteron36.h @@ -0,0 +1,59 @@ +/* Copyright 2021 Harshit Goel + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + +#define LAYOUT_split_3x5_3( \ + L00, L01, L02,L03, L04 , R04, R03, R02, R01, R00,\ + L10, L11, L12,L13, L14 , R14, R13, R12, R11, R10,\ + L20, L21, L22,L23, L24 , R24, R23, R22, R21, R20, \ + L30, L31, L32, R32, R31, R30\ +) {\ + {L00, L01, L02,L03, L04 },\ + {L10, L11, L12,L13, L14 },\ + {L20, L21, L22,L23, L24 },\ + {L30, L31, L32, KC_NO, KC_NO },\ + {R00, R01, R02,R03, R04 },\ + {R10, R11, R12,R13, R14 },\ + {R20, R21, R22,R23, R24 },\ + {R30, R31, R32,KC_NO, KC_NO }\ +} +#define LAYOUT_split_3x5_3_encoder(\ + L00, L01, L02,L03, L04 , R04, R03, R02, R01, R00,\ + L10, L11, L12,L13, L14 , R14, R13, R12, R11, R10,\ + L20, L21, L22,L23, L24 ,L34, R34,R24, R23, R22, R21, R20, \ + L30, L31, L32, R32, R31, R30\ +){\ + {L00, L01, L02,L03, L04 },\ + {L10, L11, L12,L13, L14 },\ + {L20, L21, L22,L23, L24 },\ + {L30, L31, L32, KC_NO, L34 },\ + {R00, R01, R02,R03, R04 },\ + {R10, R11, R12,R13, R14 },\ + {R20, R21, R22,R23, R24 },\ + {R30, R31, R32,KC_NO, R34 }\ +} diff --git a/keyboards/pteron36/readme.md b/keyboards/pteron36/readme.md new file mode 100644 index 000000000000..0e430db24326 --- /dev/null +++ b/keyboards/pteron36/readme.md @@ -0,0 +1,35 @@ +# Pteron36 + +![Pteron36](https://i.imgur.com/PuXPWYfh.jpg) + +A 36-key keyboard with a bit more natural thumb cluster. + +* Keyboard Maintainer: [Harshit Goel](https://github.com/harshitgoel96) +* Hardware Supported: Pteron36 using promicro. +* Hardware Availability: Files are available in the [pteron36 repository](https://github.com/harshitgoel96/pteron36-split-keyboard/releases/tag/v1.2.0) + * The hardware is open source; you can simply send the Gerber to a PCB manufacturer and have them made. + +Make example for this keyboard (after setting up your build environment): + + make pteron36:default + +Flashing example for this keyboard: + + make pteron36: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). + +## Default Keymap and Miryoku Layout support + +The keyboard was designed with miryoku layout in mind. The default layout is very basic and does not have much use, modify the keymap as you see fit. Build keyboard with manna-harbour_miryoku as keymap, qmk should compile the firmare without any issue. + + make pteron36:manna-harbour_miryoku + +Add miryoku params as required. +Pteron36 uses community layout, hence there is no need for separate keymap folder for any keymap that support 5x3_3 layout. + +## VIA support + +The VIA keymap is working as intended. + + make pteron36:via diff --git a/keyboards/pteron36/rules.mk b/keyboards/pteron36/rules.mk new file mode 100644 index 000000000000..7811a26cdb79 --- /dev/null +++ b/keyboards/pteron36/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +OLED_ENABLE = yes # OLED display +ENCODER_ENABLE = yes # Encoder support +SPLIT_KEYBOARD = yes # Split enable + +LAYOUTS = split_3x5_3 diff --git a/keyboards/puck/info.json b/keyboards/puck/info.json index e8d03a43fd19..095f57216324 100644 --- a/keyboards/puck/info.json +++ b/keyboards/puck/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Puck", "url": "", "maintainer": "john-pettigrew", - "width": 3, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/puck/puck.h b/keyboards/puck/puck.h index 0f2a284a67f8..31fff7955529 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/puck/rules.mk b/keyboards/puck/rules.mk index 90519649efa4..c81fe1b907e0 100644 --- a/keyboards/puck/rules.mk +++ b/keyboards/puck/rules.mk @@ -2,31 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp 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 # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. - -# 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/punk75/info.json b/keyboards/punk75/info.json index 61af224316f4..8a774b94ea7b 100644 --- a/keyboards/punk75/info.json +++ b/keyboards/punk75/info.json @@ -2,8 +2,6 @@ "keyboard_name": "punk75", "url": "", "maintainer": "dsanchezseco", - "width": 15, - "height": 5, "layouts": { "LAYOUT_ortho_5x15": { "layout": [ diff --git a/keyboards/punk75/rules.mk b/keyboards/punk75/rules.mk index b9084ba5e2cd..f8ae5bf89987 100644 --- a/keyboards/punk75/rules.mk +++ b/keyboards/punk75/rules.mk @@ -5,23 +5,20 @@ MCU = atmega32a F_CPU = 16000000 # Bootloader selection -BOOTLOADER = USBasp +BOOTLOADER = usbasploader # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes # Enable rotary encoders support diff --git a/keyboards/pursuit40/info.json b/keyboards/pursuit40/info.json index 9407c775d602..42b23775262a 100644 --- a/keyboards/pursuit40/info.json +++ b/keyboards/pursuit40/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Pursuit40", "url": "https://panc.co/store/ols/products/panc40-keyboard", "maintainer": "nasp", - "width": 12, - "height": 4, "layouts": { "LAYOUT_all": { "layout": [{"label":"Tab", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"Back Space", "x":11, "y":0}, {"label":"Esc", "x":0, "y":1}, {"label":"A", "x":1, "y":1}, {"label":"S", "x":2, "y":1}, {"label":"D", "x":3, "y":1}, {"label":"F", "x":4, "y":1}, {"label":"G", "x":5, "y":1}, {"label":"H", "x":6, "y":1}, {"label":"J", "x":7, "y":1}, {"label":"K", "x":8, "y":1}, {"label":"L", "x":9, "y":1}, {"label":";", "x":10, "y":1}, {"label":"'", "x":11, "y":1}, {"label":"Shift", "x":0, "y":2}, {"label":"Z", "x":1, "y":2}, {"label":"X", "x":2, "y":2}, {"label":"C", "x":3, "y":2}, {"label":"V", "x":4, "y":2}, {"label":"B", "x":5, "y":2}, {"label":"N", "x":6, "y":2}, {"label":"M", "x":7, "y":2}, {"label":",", "x":8, "y":2}, {"label":".", "x":9, "y":2}, {"label":"/", "x":10, "y":2}, {"label":"Return", "x":11, "y":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3, "w":1.5}, {"x":2.75, "y":3, "w":1.25}, {"x":4, "y":3, "w":2}, {"x":6, "y":3, "w":2}, {"x":8, "y":3, "w":1.25}, {"x":9.25, "y":3, "w":1.5}, {"x":10.75, "y":3, "w":1.25}] diff --git a/keyboards/pursuit40/rules.mk b/keyboards/pursuit40/rules.mk index f49426d5137f..6f114436f0b8 100644 --- a/keyboards/pursuit40/rules.mk +++ b/keyboards/pursuit40/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/q4z/config.h b/keyboards/q4z/config.h new file mode 100644 index 000000000000..8a591a9a8989 --- /dev/null +++ b/keyboards/q4z/config.h @@ -0,0 +1,54 @@ +/* Copyright 2021 rjboone + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x0001 +#define PRODUCT_ID 0x0001 +#define DEVICE_VER 0x0001 +#define MANUFACTURER drmmr +#define PRODUCT q4z keyboard + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 10 + +/* + * 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 { F4, C6, D7, E6, B4 } +#define MATRIX_COL_PINS { D1, D0, D4, B6, B2, B3, B1, F7, F6, F5 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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/q4z/info.json b/keyboards/q4z/info.json new file mode 100644 index 000000000000..47fe4dd0ed1e --- /dev/null +++ b/keyboards/q4z/info.json @@ -0,0 +1,53 @@ +{ + "keyboard_name": "q4z", + "url": "", + "maintainer": "rjboone", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"K00 (F4,D1)", "x":0.5, "y":0}, + {"label":"K01 (F4,D0)", "x":1.5, "y":0}, + {"label":"K02 (F4,D4)", "x":2.5, "y":0}, + {"label":"K03 (F4,B6)", "x":3.5, "y":0}, + {"label":"K04 (F4,B2)", "x":4.5, "y":0}, + {"label":"K10 (C6,D1)", "x":0, "y":1}, + {"label":"K11 (C6,D0)", "x":1, "y":1}, + {"label":"K12 (C6,D4)", "x":2, "y":1}, + {"label":"K13 (C6,B6)", "x":3, "y":1}, + {"label":"K14 (C6,B2)", "x":4, "y":1}, + {"label":"K15 (C6,B3)", "x":5, "y":1}, + {"label":"K16 (C6,B1)", "x":6, "y":1}, + {"label":"K17 (C6,F7)", "x":7, "y":1}, + {"label":"K18 (C6,F6)", "x":8, "y":1}, + {"label":"K19 (C6,F5)", "x":9, "y":1, "w":1.25}, + {"label":"K20 (D7,D1)", "x":0, "y":2, "w":1.25}, + {"label":"K21 (D7,D0)", "x":1.25, "y":2}, + {"label":"K22 (D7,D4)", "x":2.25, "y":2}, + {"label":"K23 (D7,B6)", "x":3.25, "y":2}, + {"label":"K24 (D7,B2)", "x":4.25, "y":2}, + {"label":"K25 (D7,B3)", "x":5.25, "y":2}, + {"label":"K26 (D7,B1)", "x":6.25, "y":2}, + {"label":"K27 (D7,F7)", "x":7.25, "y":2}, + {"label":"K28 (D7,F6)", "x":8.25, "y":2}, + {"label":"K29 (D7,F5)", "x":9.25, "y":2}, + {"label":"K30 (E6,D1)", "x":0, "y":3, "w":1.75}, + {"label":"K31 (E6,D0)", "x":1.75, "y":3}, + {"label":"K32 (E6,D4)", "x":2.75, "y":3}, + {"label":"K33 (E6,B6)", "x":3.75, "y":3}, + {"label":"K34 (E6,B2)", "x":4.75, "y":3}, + {"label":"K35 (E6,B3)", "x":5.75, "y":3}, + {"label":"K36 (E6,B1)", "x":6.75, "y":3}, + {"label":"K37 (E6,F7)", "x":7.75, "y":3}, + {"label":"K38 (E6,F6)", "x":8.75, "y":3, "w":1.5}, + {"label":"K40 (B4,D1)", "x":0, "y":4}, + {"label":"K41 (B4,D0)", "x":1, "y":4}, + {"label":"K42 (B4,D4)", "x":2, "y":4}, + {"label":"K43 (B4,B6)", "x":3, "y":4, "w":2.25}, + {"label":"K44 (B4,B2)", "x":5.25, "y":4, "w":2}, + {"label":"K45 (B4,B3)", "x":7.25, "y":4}, + {"label":"K46 (B4,B1)", "x":8.25, "y":4}, + {"label":"K47 (B4,F7)", "x":9.25, "y":4} + ] + } + } +} diff --git a/keyboards/q4z/keymaps/default/config.h b/keyboards/q4z/keymaps/default/config.h new file mode 100644 index 000000000000..ac3a08778dbf --- /dev/null +++ b/keyboards/q4z/keymaps/default/config.h @@ -0,0 +1,23 @@ +/* Copyright 2021 rjboone + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#define IGNORE_MOD_TAP_INTERRUPT //helps with homerow mods + +#ifdef COMBO_ENABLE +#define COMBO_COUNT 5 +#define COMBO_TERM 200 +#endif diff --git a/keyboards/q4z/keymaps/default/keymap.c b/keyboards/q4z/keymaps/default/keymap.c new file mode 100644 index 000000000000..21d0c4ffcb4e --- /dev/null +++ b/keyboards/q4z/keymaps/default/keymap.c @@ -0,0 +1,101 @@ +/* Copyright 2021 rjboone + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layers{ + _BASE, + _NUM_SYM, + _NAV, + _GAME +}; + +enum combo_events { + COMBO_BSPC, + COMBO_NUMBAK, + COMBO_TAB, + COMBO_ESC, + COMBO_DEL, +}; + +#define KC_SF LSFT_T(KC_F) +#define KC_SJ RSFT_T(KC_J) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( + KC_1, KC_2, KC_3, KC_4, KC_5, + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_SF, KC_G, KC_H, KC_SJ, KC_K, KC_L, KC_SCLN, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, + KC_LCTL, KC_LALT, KC_LGUI, LT(_NUM_SYM, KC_ENT), KC_SPC, MO(_NAV), TG(_GAME), KC_SLSH + ), + + [_NUM_SYM] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_EQUAL, KC_MINS, + KC_LCBR, KC_LBRC, KC_LPRN, KC_UNDS, KC_RPRN, KC_RBRC, KC_RCBR, KC_SCLN, KC_QUOTE, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RSFT, KC_TRNS, KC_TRNS, KC_BSLS + ), + + [_NAV] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_GAME] = LAYOUT( + KC_1, KC_2, KC_3, KC_4, KC_5, + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_NO, KC_NO, KC_NO, KC_NO, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_NO, KC_NO, KC_NO, KC_NO, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_NO, KC_NO, KC_NO, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_ENT, KC_NO, TG(_GAME), KC_NO + ), +}; + +#ifdef COMBO_ENABLE +const uint16_t PROGMEM combo_bspc[] = {KC_O, KC_P, COMBO_END}; +const uint16_t PROGMEM combo_numbak[] = {KC_0, KC_9, COMBO_END}; +const uint16_t PROGMEM combo_tab[] = {KC_A, KC_S, COMBO_END}; +const uint16_t PROGMEM combo_esc[] = {KC_Q, KC_W, COMBO_END}; +const uint16_t PROGMEM combo_del[] = {KC_MINS, KC_EQL, COMBO_END}; + +combo_t key_combos[COMBO_COUNT] = { + [COMBO_BSPC] = COMBO(combo_bspc,KC_BSPC), + [COMBO_NUMBAK] = COMBO(combo_numbak,KC_BSPC), + [COMBO_TAB] = COMBO(combo_tab,KC_TAB), + [COMBO_ESC] = COMBO(combo_esc,KC_ESC), + [COMBO_DEL] = COMBO(combo_del,KC_DEL), + +}; +#endif + +layer_state_t layer_state_set_user(layer_state_t state) { + +#ifdef COMBO_ENABLE + switch(get_highest_layer(state)) { + case _GAME: + combo_disable(); + break; + default: + combo_enable(); + break; + } +#endif // COMBO_ENABLE + + return state; +} diff --git a/keyboards/q4z/keymaps/default/readme.md b/keyboards/q4z/keymaps/default/readme.md new file mode 100644 index 000000000000..28186f64d868 --- /dev/null +++ b/keyboards/q4z/keymaps/default/readme.md @@ -0,0 +1 @@ +# Default Q4Z Keymap diff --git a/keyboards/anavi/macropad2/keymaps/skype/rules.mk b/keyboards/q4z/keymaps/default/rules.mk similarity index 100% rename from keyboards/anavi/macropad2/keymaps/skype/rules.mk rename to keyboards/q4z/keymaps/default/rules.mk diff --git a/keyboards/q4z/keymaps/rjboone/config.h b/keyboards/q4z/keymaps/rjboone/config.h new file mode 100644 index 000000000000..9921a1917883 --- /dev/null +++ b/keyboards/q4z/keymaps/rjboone/config.h @@ -0,0 +1,25 @@ +/* Copyright 2021 rjboone + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#define IGNORE_MOD_TAP_INTERRUPT //helps with homerow mods + +#undef TAPPING_TERM +#define TAPPING_TERM 300 + +#undef COMBO_COUNT +#define COMBO_COUNT 5 +#define COMBO_TERM 50 diff --git a/keyboards/q4z/keymaps/rjboone/keymap.c b/keyboards/q4z/keymaps/rjboone/keymap.c new file mode 100644 index 000000000000..aa8a77dae679 --- /dev/null +++ b/keyboards/q4z/keymaps/rjboone/keymap.c @@ -0,0 +1,107 @@ +/* Copyright 2021 rjboone + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layers{ + _BASE, + _NUM_SYM, + _NAV, + _GAME +}; + +enum combo_events { + COMBO_BSPC, + COMBO_NUMBAK, + COMBO_TAB, + COMBO_ESC, + COMBO_DEL, +}; + +#define KC_GA LGUI_T(KC_A) +#define KC_AS LALT_T(KC_S) +#define KC_CD LCTL_T(KC_D) +#define KC_SF LSFT_T(KC_F) +#define KC_SJ RSFT_T(KC_J) +#define KC_CK RCTL_T(KC_K) +#define KC_AL RALT_T(KC_L) +#define KC_GSCLN RGUI_T(KC_SCLN) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( + KC_1, KC_2, KC_3, KC_4, KC_5, + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_SF, KC_G, KC_H, KC_SJ, KC_K, KC_L, KC_SCLN, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, + KC_LCTL, KC_LALT, KC_LGUI, LT(_NUM_SYM, KC_ENT), KC_SPC, MO(_NAV), TG(_GAME), KC_SLSH + ), + + [_NUM_SYM] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_LBRC, KC_RBRC, KC_EQL, KC_TRNS, KC_TRNS, KC_QUOT, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RSFT, KC_TRNS, KC_TRNS, KC_BSLS + ), + + [_NAV] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_GAME] = LAYOUT( + KC_1, KC_2, KC_3, KC_4, KC_5, + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_NO, KC_NO, KC_NO, KC_NO, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_NO, KC_NO, KC_NO, KC_NO, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_NO, KC_NO, KC_NO, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_ENT, KC_NO, TG(_GAME), KC_NO + ), +}; + +#ifdef COMBO_ENABLE +const uint16_t PROGMEM combo_bspc[] = {KC_O, KC_P, COMBO_END}; +const uint16_t PROGMEM combo_numbak[] = {KC_0, KC_9, COMBO_END}; +const uint16_t PROGMEM combo_tab[] = {KC_A, KC_S, COMBO_END}; +const uint16_t PROGMEM combo_esc[] = {KC_Q, KC_W, COMBO_END}; +const uint16_t PROGMEM combo_del[] = {KC_MINS, KC_EQL, COMBO_END}; + +combo_t key_combos[COMBO_COUNT] = { + [COMBO_BSPC] = COMBO(combo_bspc,KC_BSPC), + [COMBO_NUMBAK] = COMBO(combo_numbak,KC_BSPC), + [COMBO_TAB] = COMBO(combo_tab,KC_TAB), + [COMBO_ESC] = COMBO(combo_esc,KC_ESC), + [COMBO_DEL] = COMBO(combo_del,KC_DEL), + +}; +#endif + +layer_state_t layer_state_set_user(layer_state_t state) { + +#ifdef COMBO_ENABLE + switch(get_highest_layer(state)) { + case _GAME: + combo_disable(); + break; + default: + combo_enable(); + break; + } +#endif // COMBO_ENABLE + + return state; +} diff --git a/keyboards/q4z/keymaps/rjboone/readme.md b/keyboards/q4z/keymaps/rjboone/readme.md new file mode 100644 index 000000000000..29f2d31f6ff4 --- /dev/null +++ b/keyboards/q4z/keymaps/rjboone/readme.md @@ -0,0 +1 @@ +# Default Le Chiffre Keymap diff --git a/keyboards/anavi/macropad2/keymaps/zoom/rules.mk b/keyboards/q4z/keymaps/rjboone/rules.mk similarity index 100% rename from keyboards/anavi/macropad2/keymaps/zoom/rules.mk rename to keyboards/q4z/keymaps/rjboone/rules.mk diff --git a/keyboards/q4z/q4z.c b/keyboards/q4z/q4z.c new file mode 100644 index 000000000000..537f1f57800d --- /dev/null +++ b/keyboards/q4z/q4z.c @@ -0,0 +1,16 @@ +/* Copyright 2021 rjboone + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "q4z.h" diff --git a/keyboards/q4z/q4z.h b/keyboards/q4z/q4z.h new file mode 100644 index 000000000000..465178fdb130 --- /dev/null +++ b/keyboards/q4z/q4z.h @@ -0,0 +1,34 @@ +/* Copyright 2021 rjboone + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +#define LAYOUT( \ + K01, K06, K11, K16, K21, \ + K02, K07, K12, K17, K22, K26, K30, K34, K38, K41, \ + K03, K08, K13, K18, K23, K27, K31, K35, K39, K42, \ + K04, K09, K14, K19, K24, K28, K32, K36, K40, \ + K05, K10, K15, K20, K25, K29, K33, K37 \ +) { \ + { K01, K06, K11, K16, K21, XXX, XXX, XXX, XXX, XXX }, \ + { K02, K07, K12, K17, K22, K26, K30, K34, K38, K41 }, \ + { K03, K08, K13, K18, K23, K27, K31, K35, K39, K42 }, \ + { K04, K09, K14, K19, K24, K28, K32, K36, K40, XXX }, \ + { K05, K10, K15, K20, K25, K29, K33, K37, XXX, XXX } \ +} diff --git a/keyboards/q4z/readme.md b/keyboards/q4z/readme.md new file mode 100644 index 000000000000..6b3839a2cb95 --- /dev/null +++ b/keyboards/q4z/readme.md @@ -0,0 +1,20 @@ +# Q4Z + +![Q4Z](https://cdn.shopify.com/s/files/1/0501/7537/7592/products/q4n-6_470x.jpg?v=1623373518) + +Q4Z is a play on everybody's favorite 10.25u layout. With the addition of 5 number keys and a handle, +this little board is ready for whatever a raging gamer can throw it at. + +* Keyboard Maintainer: [Ryan Boone](https://github.com/rjboone) (Drmmr#0004) +* Hardware Supported: Pro Micro or equivalent +* Hardware Availability: This board is available to purchase from [P3D Store](https://p3dstore.com) + +Make example for this keyboard (after setting up your build environment): + + make q4z:default + +Flashing example for this keyboard: + + make q4z:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/q4z/rules.mk b/keyboards/q4z/rules.mk new file mode 100644 index 000000000000..ed6c62737a62 --- /dev/null +++ b/keyboards/q4z/rules.mk @@ -0,0 +1,19 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 diff --git a/keyboards/qaz/info.json b/keyboards/qaz/info.json index c8993d57eed7..bae0c72bf1b1 100644 --- a/keyboards/qaz/info.json +++ b/keyboards/qaz/info.json @@ -2,8 +2,6 @@ "keyboard_name": "qaz", "url": "", "maintainer": "tominabox1", - "width": 10.25, - "height": 4, "layouts": { "LAYOUT_split_space": { "layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "y":0}, {"label":"Y", "x":5, "y":0}, {"label":"U", "x":6, "y":0}, {"label":"I", "x":7, "y":0}, {"label":"O", "x":8, "y":0}, {"label":"P", "x":9, "y":0, "w":1.25}, {"label":"A", "x":0, "y":1, "w":1.25}, {"label":"S", "x":1.25, "y":1}, {"label":"D", "x":2.25, "y":1}, {"label":"F", "x":3.25, "y":1}, {"label":"G", "x":4.25, "y":1}, {"label":"H", "x":5.25, "y":1}, {"label":"J", "x":6.25, "y":1}, {"label":"K", "x":7.25, "y":1}, {"label":"L", "x":8.25, "y":1}, {"label":"Ent", "x":9.25, "y":1}, {"label":"Z", "x":0, "y":2, "w":1.75}, {"label":"X", "x":1.75, "y":2}, {"label":"C", "x":2.75, "y":2}, {"label":"V", "x":3.75, "y":2}, {"label":"B", "x":4.75, "y":2}, {"label":"N", "x":5.75, "y":2}, {"label":"M", "x":6.75, "y":2}, {"label":".", "x":7.75, "y":2}, {"label":"Shift","x":8.75, "y":2, "w":1.5},{"label":"Super", "x":0, "y":3}, {"label":"Meta", "x":1, "y":3}, {"label":"Alt", "x":2, "y":3}, {"label":"", "x":3, "y":3, "w":2.25}, {"label":"", "x":5.25, "y":3, "w":2}, {"label":"AltGr", "x":7.25, "y":3},{"label":"Meta", "x":8.25, "y":3},{"label":"Super", "x":9.25, "y":3}] diff --git a/keyboards/qaz/rules.mk b/keyboards/qaz/rules.mk index 760e96e1c938..1cd137b4774c 100644 --- a/keyboards/qaz/rules.mk +++ b/keyboards/qaz/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/quad_h/lb75/config.h b/keyboards/quad_h/lb75/config.h index d55432c7a937..e752dfcdd531 100644 --- a/keyboards/quad_h/lb75/config.h +++ b/keyboards/quad_h/lb75/config.h @@ -119,59 +119,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. diff --git a/keyboards/quad_h/lb75/info.json b/keyboards/quad_h/lb75/info.json index b1eebad38050..84916f1b9bd8 100644 --- a/keyboards/quad_h/lb75/info.json +++ b/keyboards/quad_h/lb75/info.json @@ -2,8 +2,6 @@ "keyboard_name": "LB75", "url": "", "maintainer": "ai03", - "width": 16, - "height": 6, "layouts": { "LAYOUT_continuous_fnrow": { "layout": [ diff --git a/keyboards/quad_h/lb75/rules.mk b/keyboards/quad_h/lb75/rules.mk index 059b04aa3416..7925b77717c9 100644 --- a/keyboards/quad_h/lb75/rules.mk +++ b/keyboards/quad_h/lb75/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/quantrik/kyuu/config.h b/keyboards/quantrik/kyuu/config.h index 720ef0e1db91..a2fc756fba50 100644 --- a/keyboards/quantrik/kyuu/config.h +++ b/keyboards/quantrik/kyuu/config.h @@ -117,59 +117,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -188,26 +135,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/quantrik/kyuu/info.json b/keyboards/quantrik/kyuu/info.json index 05c1b40b95b3..c245b8baee8d 100644 --- a/keyboards/quantrik/kyuu/info.json +++ b/keyboards/quantrik/kyuu/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Kyuu", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT": { - "key_count": 67, "layout": [ {"label":"K00 (B6,F1)", "x":0, "y":0}, {"label":"K01 (B6,F4)", "x":1, "y":0}, @@ -79,4 +76,3 @@ } } } - \ No newline at end of file diff --git a/keyboards/quantrik/kyuu/keymaps/default/keymap.c b/keyboards/quantrik/kyuu/keymaps/default/keymap.c index 5e4709b410f3..6b7adf0d1396 100644 --- a/keyboards/quantrik/kyuu/keymaps/default/keymap.c +++ b/keyboards/quantrik/kyuu/keymaps/default/keymap.c @@ -59,15 +59,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/quantrik/kyuu/kyuu.c b/keyboards/quantrik/kyuu/kyuu.c index e9a72a5749a9..7f7d2fcc82d9 100644 --- a/keyboards/quantrik/kyuu/kyuu.c +++ b/keyboards/quantrik/kyuu/kyuu.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "kyuu.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/quantrik/kyuu/rules.mk b/keyboards/quantrik/kyuu/rules.mk index 79eeb7d24c15..00a8fa07a459 100644 --- a/keyboards/quantrik/kyuu/rules.mk +++ b/keyboards/quantrik/kyuu/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/quark/info.json b/keyboards/quark/info.json index e85fbd4adb23..3a64c0128020 100644 --- a/keyboards/quark/info.json +++ b/keyboards/quark/info.json @@ -2,8 +2,6 @@ "keyboard_name": "QUARK", "url": "", "maintainer": "nasp", - "width": 12, - "height": 5, "layouts": { "LAYOUT_ortho_5x12_2x225u": { "layout": [ diff --git a/keyboards/quark/keymaps/ajp10304/keymap.c b/keyboards/quark/keymaps/ajp10304/keymap.c new file mode 100644 index 000000000000..c55e99af79b5 --- /dev/null +++ b/keyboards/quark/keymaps/ajp10304/keymap.c @@ -0,0 +1,201 @@ +/* Copyright 2021 Alan Pocklington + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "ajp10304.h" +#include "keymap_uk.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Tab | A | S | D | F | G | H | J | K | L | ;: | Enter| + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shft | Z | X | C | V | B | N | M | ,< | .> | /? | Shft | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Raise | Shift| MENU | Ctrl | Fn2 | + * `-----------------------------------------------------------------------------------' + */ +[_QWERTY] = LAYOUT_ortho_4x12( + LT(_NUMPAD, KC_ESC), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC , + MT(MOD_LSFT, KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, MT(MOD_RSFT, KC_ENT) , + KC_LSHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSHIFT , + MO(_FUNC), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_SPC, RAISE, KC_LSHIFT, KC_BTN2, KC_RCTL, MO(_FUNC2) +), + +/* Function + * ,-----------------------------------------------------------------------------------. + * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | 1! | 2" | 3£ | 4$ | 5% | 6^ | 7& | 8* | 9( | 0) | ~ |INSERT| + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| \| | `¬ | #~ | * | -_ | =+ | \| | [{ | ]} | '@ |Shift | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Mouse | MENU | Alt | Ctrl | Fn | + * `-----------------------------------------------------------------------------------' + */ +[_FUNC] = LAYOUT_ortho_4x12( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12 , + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, UK_TILD, KC_INSERT , + KC_LSHIFT, KC_NONUS_BSLASH, KC_GRAVE, KC_NONUS_HASH, KC_PAST, KC_MINS, KC_EQL, KC_BSLASH, KC_LBRC, KC_RBRC, KC_QUOT, MT(MOD_RSFT, KC_ENT) , + _______, _______, _______, _______, _______, _______, _______, MO(_MOUSE), _______, _______, _______, _______ +), + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | 1! | 2" | 3£ | 4$ | 5% | 6^ | 7& | 8* | 9( | 0) | DEL | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | ! | " | £ | $ | % | ^ | & | * | ( | ) |WrdDel|WrdBks| + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| \| | `¬ | #~ | '@ | -_ | =+ | #~ | [{ | ]} | '@ |Shift | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | |Lower | Del |Space | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = LAYOUT_ortho_4x12( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, KC_BSPC , + LSFT(KC_1), LSFT(KC_2), LSFT(KC_3), LSFT(KC_4), LSFT(KC_5), LSFT(KC_6), LSFT(KC_7), LSFT(KC_8), LSFT(KC_9), LSFT(KC_0), LCTL(KC_DEL), LCTL(KC_BSPC) , + KC_LSPO, KC_NONUS_BSLASH, KC_GRAVE, KC_NONUS_HASH, KC_QUOT, KC_MINS, KC_EQL, KC_NONUS_HASH, KC_LBRC, KC_RBRC, KC_QUOT, MT(MOD_RSFT, KC_ENT) , + _______, _______, _______, _______, _______, KC_DEL, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY +), + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | ` | |WRDSEL| [ | ] | | | PGUP | HOME |PGDOWN| |PRNTSC| + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | ` | | | ( | ) | | | HOME | UP | END | |ZOOM +| + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | { | } | | |< | LEFT | DOWN |RIGHT | >| |ZOOM -| + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Mouse| | | | | Alt | Enter|Raise | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = LAYOUT_ortho_4x12( + KC_GRV, XXXXXXX, M_WORD_SEL, KC_LBRC, KC_RBRC, XXXXXXX, XXXXXXX, KC_PGUP, KC_HOME, KC_PGDOWN, XXXXXXX, KC_PSCREEN , + KC_GRV, XXXXXXX, XXXXXXX, LSFT(KC_9), LSFT(KC_0), XXXXXXX, XXXXXXX, KC_HOME, KC_UP, KC_END, XXXXXXX, LCTL(LSFT(KC_EQL)) , + _______, XXXXXXX, XXXXXXX, LSFT(KC_LBRC), LSFT(KC_RBRC), XXXXXXX, LCTL(KC_LEFT), KC_LEFT, KC_DOWN, KC_RIGHT, LCTL(KC_RIGHT), LCTL(KC_MINS) , + MO(_MOUSE), _______, _______, _______, _______, KC_LALT, KC_ENT, _______, XXXXXXX, _______, _______, _______ +), + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | ???? | Reset|Qwerty| | | REC1 | REC2 | | | | | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | CAPS | | | | | PLAY1| PLAY2| Mute | Vol+ | Play | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | PC/MC| | | | | STOP | STOP | Prev | Vol- | Next | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = LAYOUT_ortho_4x12( + M_CUSTOM, RESET, QWERTY, BL_ON, BL_OFF, DYN_REC_START1, DYN_REC_START2, _______, _______, _______, _______, KC_DEL , + KC_CAPS, RGB_TOG, RGB_MOD, RGB_VAD, RGB_VAI, DYN_MACRO_PLAY1, DYN_MACRO_PLAY2, KC_AUDIO_MUTE, KC_AUDIO_VOL_UP, KC_MEDIA_PLAY_PAUSE, _______, _______ , + TG(_MAC), RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, DYN_REC_STOP, DYN_REC_STOP, KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK, _______, _______ , + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), + +/* Mouse + * ,-----------------------------------------------------------------------------------. + * | ESC | | | | | | | | BTN3 | | | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | ACC0 | ACC1 | ACC2 | | | | | BTN1 | UP | BTN2 | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | ACC0 | ACC1 | ACC2 | | | | | LEFT | DOWN |RIGHT | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_MOUSE] = LAYOUT_ortho_4x12( + KC_ESC , _______, _______, _______, _______, _______, _______, _______, KC_MS_BTN3, _______, _______, _______, + KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, _______, _______, _______, _______, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, _______, _______, + KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, _______, _______, _______, _______, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), + +/* Num Pad + * ,-----------------------------------------------------------------------------------. + * | ESC | | | | | |NMLOCK| 7 | 8 | 9 | / | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | | | | | | 4 | 5 | 6 | * | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | | | | 1 | 2 | 3 | + | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | | | | 0 | . | , | - | | + * `-----------------------------------------------------------------------------------' + */ +[_NUMPAD] = LAYOUT_ortho_4x12( + _______, _______, _______, _______, _______, _______, KC_NLCK, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_SLASH, _______, + _______, _______, _______, _______, _______, _______, _______, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_ASTERISK, _______, + _______, _______, _______, _______, _______, _______, _______, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_PLUS, _______, + _______, _______, _______, _______, _______, _______, _______, KC_KP_0, KC_KP_DOT, KC_COMM, KC_KP_MINUS, _______ +), + +/* Function 2 (Right hand side) + * ,-----------------------------------------------------------------------------------. + * | | |WRDSEL| | | | LNDEL| | | | | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | LNSEL| DUP | | | | |LNJOIN| | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | UNDO | CUT | COPY | PASTE| | | | | | | MODE | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_FUNC2] = LAYOUT_ortho_4x12( + _______, _______, M_WORD_SEL, _______, _______, _______, M_LINE_DEL, _______, _______, _______, _______, _______, + _______, _______, M_LINE_SEL, M_DUP, _______, _______, _______, M_JOIN, _______, _______, _______, _______, + _______, LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), _______, _______, _______, _______, _______, _______, M_MODE, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), + +[_MAC]= LAYOUT_ortho_4x12( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + MFNC, _______, _______, _______, MLWR, _______, _______, MRSE, _______, _______, _______, MFNC2 +), + +[_MLWR] = LAYOUT_ortho_4x12( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), + +[_MRSE] = LAYOUT_ortho_4x12( + _______, _______, M_WORD_SEL_MAC, _______, _______, _______, _______, _______, _______, _______, _______, _______ , + _______, _______, _______, _______, _______, _______, _______, LCTL(KC_A), _______, LCTL(KC_E), _______, LGUI(KC_EQL) , + _______, _______, _______, _______, _______, _______, LALT(KC_LEFT), _______, _______, _______, LALT(KC_RIGHT), LGUI(KC_MINS) , + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), + +[_MFNC]= LAYOUT_ortho_4x12( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ , + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, LGUI(KC_PENT) , + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ , + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), + +[_MFNC2] = LAYOUT_ortho_4x12( + _______, _______, M_WORD_SEL_MAC, _______, _______, _______, M_LINE_DEL_MAC, _______, _______, _______, _______, _______, + _______, _______, M_LINE_SEL_MAC, M_DUP_MAC, _______, _______, _______, M_JOIN_MAC, _______, _______, _______, _______, + _______, LGUI(KC_Z), LGUI(KC_X), LGUI(KC_C), LGUI(KC_V), _______, _______, _______, _______, _______, _______, M_MODE_MAC, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +) + +}; diff --git a/keyboards/quark/keymaps/ajp10304/readme.md b/keyboards/quark/keymaps/ajp10304/readme.md new file mode 100644 index 000000000000..83af702e2a79 --- /dev/null +++ b/keyboards/quark/keymaps/ajp10304/readme.md @@ -0,0 +1,117 @@ +# AJP10304 Custom Quark Layout +# Also available for the Planck, JJ40 and Atreus50 + +**Note:** In the tables below where there are two characters on a key, +the second is the output when shift is applied. + +**Note:** The below tables assume a UK layout. + +#### Flashing +Refer to the README.md of the keyboard you want to flash. + +##### Main Qwerty Layer + +* Tab: when held, operates as shift. +* Enter: when held, operates as shift. +* MENU: perform right-click + +| | | | | | | | | | | | | +| ---- |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| ----:| +| Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp | +| Tab | A | S | D | F | G | H | J | K | L | ;: | Enter| +| Shft | Z | X | C | V | B | N | M | ,< | .> | /? | Shft | +| Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Raise | Shift| MENU | Ctrl | Fn2 | + +##### Function Layer +Activated when `fn` held in the above `qwerty` layer. + +| | | | | | | | | | | | | +| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| +| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | +| 1! | 2" | 3£ | 4$ | 5% | 6^ | 7& | 8* | 9( | 0) | ~ |INSERT| +| Shift | \| | `¬ | #~ | * | -_ | =+ | \| | [{ | ]} | '@ |Shift | +| Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Mouse | MENU | Alt | Ctrl | Fn2 | + +##### Lower Layer +Activated when `Lower` is held in the above `qwerty` layer. + +* Numbers are along the top row, their shifted counterparts are on row 2. +* WrdBks: `backspace` with `ctrl` applied. I.e. delete a word. +* WrdDel: `delete` with `ctrl` applied. I.e. forward delete a word. + +| | | | | | | | | | | | | +| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| +| 1! | 2" | 3£ | 4$ | 5% | 6^ | 7& | 8* | 9( | 0) | DEL | Bksp | +| ! | " | £ | $ | % | ^ | & | * | ( | ) |WrdDel|WrdBks| +| Shift | \| | `¬ | #~ | '@ | -_ | =+ | #~ | [{ | ]} | '@ |Shift | +| | | | |Lower | Del |Space | | Next | Vol- | Vol+ | Play | + +##### Raise Layer +Activated when `Raise` is held in the above `qwerty` layer. + +* Preferred layer for typing brackets. +* Allows for cursor navigation to be used solely with the right hand. +* WRDSEL: Select the word where the cursor is. +* |< and >|: Apply `ctrl` to `left` and `right` respectively for word jumping. + +| | | | | | | | | | | | | +| :---: |:----:| :---:| :---:| :---:| :---:| :---: | :---:| :---:| :---:| :---: | :---:| +| ` | |WRDSEL| [ | ] | | | PGUP | HOME |PGDOWN| |PRNTSC| +| ` | | | ( | ) | | | HOME | UP | END | |ZOOM +| +| | | | { | } | ||<| LEFT | DOWN |RIGHT |>||ZOOM -| +| Mouse | | | | | Alt | Enter |Raise | | | | | + +##### Lower + Raise +Activated when `Lower` and `Raise` are held together in the above `qwerty` layer. + +* Audio controls in the same position as cursor keys from the `Raise` layer. +* ????: Runs a macro for outputting a text string. Do not use this store passwords. +* Reset: Enter bootloader for flashing firmware to the keyboard. +* CAPS: Toggle caps lock. +* Macro functions: Allows recording of macros. To start recording the macro, press either REC1 or REC2. +To finish the recording, press STOP. To replay the macro, press either PLAY1 or PLAY2. +* MAC: Toggle MAC OS extensions to layers. This allows MLWR to be enabled with LOWER, +MRSE with RAISE, MFNC with FUNC and MFNC2 with FUNC2 respectively. + +| | | | | | | | | | | | | +| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| +| ???? | Reset|Qwerty| | | REC1 | REC2 | | | | | Del | +| CAPS | | | | | PLAY1|PLAY2 | Mute | Vol+ | Play | | | +| MAC | | | | | STOP1|STOP2 | Prev | Vol- | Next | | | +| | | | | | | | | DYN | | | | + +##### Function 2 Layer +Activated when `fn` held in the above `qwerty` layer. +* WRDSEL: Select the word where the cursor is. +* LNDEL: Delete the line where the cursor is. +* LNSEL: Select the line where the cursor is. +* DUP: Duplicate the selected text. +* LNJOIN: Join the line where the cursor is with the following line. +* MODE: Print either `PC` or `OSX` depending on what layer mode is active. + +| | | | | | | | | | | | | +| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| +| | |WRDSEL| | | | LNDEL| | | | | | +| | | LNSEL| DUP | | | | |LNJOIN| | | | +| | UNDO | CUT | COPY | PASTE| | | | | | | MODE | +| | | | | | | | | | | | | + +##### Mouse Layer +Activated when `fn` and `raise` held together. + +| | | | | | | | | | | | | +| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| +| ESC | | | | | | W_L | W_UP | BTN3 | W_DWN| W_R | | +| ACC0 | ACC1 | ACC2 | | | | | BTN1 | UP | BTN2 | | | +| ACC0 | ACC1 | ACC2 | | | | | LEFT | DOWN | RIGHT| | | +| | | | | | | | | | | | | + +##### Number Pad Layout +Activated when holding `Esc` key. + +| | | | | | | | | | | | | +| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| +| | | | | | |NMLOCK| 7 | 8 | 9 | / | | +| | | | | | | | 4 | 5 | 6 | * | | +| | | | | | | | 1 | 2 | 3 | + | | +| | | | | | | | 0 | . | , | - | | diff --git a/keyboards/quark/keymaps/ajp10304/rules.mk b/keyboards/quark/keymaps/ajp10304/rules.mk new file mode 100644 index 000000000000..6c605daecf53 --- /dev/null +++ b/keyboards/quark/keymaps/ajp10304/rules.mk @@ -0,0 +1 @@ +MOUSEKEY_ENABLE = yes diff --git a/keyboards/quark/rules.mk b/keyboards/quark/rules.mk index 2fd5d44f995c..3494ca7190c9 100644 --- a/keyboards/quark/rules.mk +++ b/keyboards/quark/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # 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 UNICODE_ENABLE = yes # Unicode diff --git a/keyboards/qvex/lynepad/info.json b/keyboards/qvex/lynepad/info.json index 405614e9f022..46612141c17e 100644 --- a/keyboards/qvex/lynepad/info.json +++ b/keyboards/qvex/lynepad/info.json @@ -2,11 +2,9 @@ "keyboard_name": "QVEX Lynepad", "url": "https://www.tindie.com/products/qvex_tech/qvex-lynepad-macro-keypad/", "maintainer": "KemoNine", - "width": 4, - "height": 3, "layouts": { "LAYOUT": { "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}] } } - } \ No newline at end of file + } diff --git a/keyboards/qvex/lynepad/rules.mk b/keyboards/qvex/lynepad/rules.mk index 7b05cfb9b828..d775deb5b265 100644 --- a/keyboards/qvex/lynepad/rules.mk +++ b/keyboards/qvex/lynepad/rules.mk @@ -7,13 +7,11 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 diff --git a/keyboards/qwertyydox/config.h b/keyboards/qwertyydox/config.h index 386a1fae92e1..4cd214e2228e 100644 --- a/keyboards/qwertyydox/config.h +++ b/keyboards/qwertyydox/config.h @@ -122,59 +122,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - #define MOUSEKEY_DELAY 150 #define MOUSEKEY_INTERVAL 20 #define MOUSEKEY_MAX_SPEED 10 @@ -200,26 +147,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/qwertyydox/info.json b/keyboards/qwertyydox/info.json index 91c7065f11d7..53de10d3f638 100644 --- a/keyboards/qwertyydox/info.json +++ b/keyboards/qwertyydox/info.json @@ -5,11 +5,8 @@ "maintainer": "qmk", "bootloader": "caterina", "processor": "atmega32u4", - "width": 16.25, - "height": 5, "layouts": { "LAYOUT": { - "key_count": 53, "layout": [ {"label":"Tab", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, diff --git a/keyboards/qwertyydox/rev1/rev1.c b/keyboards/qwertyydox/rev1/rev1.c index 609c479eb378..520a869e57ba 100644 --- a/keyboards/qwertyydox/rev1/rev1.c +++ b/keyboards/qwertyydox/rev1/rev1.c @@ -1,22 +1 @@ #include "rev1.h" - - -#ifdef SSD1306OLED -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - led_set_user(usb_led); -} -#endif - -void matrix_init_kb(void) { - - // // green led on - // DDRD |= (1<<5); - // PORTD &= ~(1<<5); - - // // orange led on - // DDRB |= (1<<0); - // PORTB &= ~(1<<0); - - matrix_init_user(); -}; diff --git a/keyboards/qwertyydox/rules.mk b/keyboards/qwertyydox/rules.mk index 3e66c233ac4a..a74d1c6e82df 100644 --- a/keyboards/qwertyydox/rules.mk +++ b/keyboards/qwertyydox/rules.mk @@ -2,20 +2,15 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = no # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend SPLIT_KEYBOARD = yes diff --git a/keyboards/rabbit/rabbit68/config.h b/keyboards/rabbit/rabbit68/config.h index 33c14eda4107..bae66808ace4 100644 --- a/keyboards/rabbit/rabbit68/config.h +++ b/keyboards/rabbit/rabbit68/config.h @@ -117,59 +117,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -188,26 +135,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/rabbit/rabbit68/info.json b/keyboards/rabbit/rabbit68/info.json index fb24d4d10518..2f6fcf7e6363 100644 --- a/keyboards/rabbit/rabbit68/info.json +++ b/keyboards/rabbit/rabbit68/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Rabbit68", "url": "", "maintainer": "kaiec", - "width": 14, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/rabbit/rabbit68/rabbit68.c b/keyboards/rabbit/rabbit68/rabbit68.c index a9e4c6533d18..652d8417e745 100644 --- a/keyboards/rabbit/rabbit68/rabbit68.c +++ b/keyboards/rabbit/rabbit68/rabbit68.c @@ -14,38 +14,3 @@ * along with this program. If not, see . */ #include "rabbit68.h" - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -/* - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - -*/ diff --git a/keyboards/rabbit/rabbit68/rules.mk b/keyboards/rabbit/rabbit68/rules.mk index 462c0158548b..49b3ca3bf720 100644 --- a/keyboards/rabbit/rabbit68/rules.mk +++ b/keyboards/rabbit/rabbit68/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = halfkay # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/rabbit_capture_plan/info.json b/keyboards/rabbit_capture_plan/info.json index 6cf5953ac1af..4a660cf85ef4 100644 --- a/keyboards/rabbit_capture_plan/info.json +++ b/keyboards/rabbit_capture_plan/info.json @@ -2,8 +2,6 @@ "keyboard_name": "rabbit_capture_plan", "url": "https://kakunpc.booth.pm/", "maintainer": "kakunpc", - "width": 20.25, - "height": 5.25, "layouts": { "LAYOUT_all": { "layout": [ @@ -307,4 +305,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/rabbit_capture_plan/rules.mk b/keyboards/rabbit_capture_plan/rules.mk index df27d2eb1424..603bfa7c81c4 100644 --- a/keyboards/rabbit_capture_plan/rules.mk +++ b/keyboards/rabbit_capture_plan/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 SPLIT_KEYBOARD = yes -OLED_DRIVER_ENABLE = no +OLED_ENABLE = no diff --git a/keyboards/rainkeeb/info.json b/keyboards/rainkeeb/info.json index d329c8319cbd..b704d2d43b97 100644 --- a/keyboards/rainkeeb/info.json +++ b/keyboards/rainkeeb/info.json @@ -2,8 +2,6 @@ "keyboard_name": "rainkeeb", "url": "", "maintainer": "rain", - "width": 12, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/rainkeeb/keymaps/default/keymap.c b/keyboards/rainkeeb/keymaps/default/keymap.c index 3d82661f8c8c..08cf7462c314 100644 --- a/keyboards/rainkeeb/keymaps/default/keymap.c +++ b/keyboards/rainkeeb/keymaps/default/keymap.c @@ -87,7 +87,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { char wpm[10]; -void oled_task_user(void) { +bool oled_task_user(void) { sprintf(wpm, "WPM: %03d", get_current_wpm()); // Host Keyboard Layer Status @@ -113,4 +113,5 @@ void oled_task_user(void) { } oled_write_P(PSTR(" "), false); oled_write(wpm, false); + return false; } diff --git a/keyboards/rainkeeb/keymaps/via/keymap.c b/keyboards/rainkeeb/keymaps/via/keymap.c index 3d82661f8c8c..08cf7462c314 100644 --- a/keyboards/rainkeeb/keymaps/via/keymap.c +++ b/keyboards/rainkeeb/keymaps/via/keymap.c @@ -87,7 +87,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { char wpm[10]; -void oled_task_user(void) { +bool oled_task_user(void) { sprintf(wpm, "WPM: %03d", get_current_wpm()); // Host Keyboard Layer Status @@ -113,4 +113,5 @@ void oled_task_user(void) { } oled_write_P(PSTR(" "), false); oled_write(wpm, false); + return false; } diff --git a/keyboards/rainkeeb/rules.mk b/keyboards/rainkeeb/rules.mk index 0c7dd09c259d..fb745fcf5514 100644 --- a/keyboards/rainkeeb/rules.mk +++ b/keyboards/rainkeeb/rules.mk @@ -7,19 +7,19 @@ BOOTLOADER = caterina # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality AUDIO_ENABLE = no RGBLIGHT_ENABLE = no # OLED enable -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Encoder enable ENCODER_ENABLE = yes diff --git a/keyboards/ramonimbao/aelith/info.json b/keyboards/ramonimbao/aelith/info.json index 47e11dcc11cf..8dd9ddff0ad4 100644 --- a/keyboards/ramonimbao/aelith/info.json +++ b/keyboards/ramonimbao/aelith/info.json @@ -2,8 +2,6 @@ "keyboard_name": "AELITH", "url": "", "maintainer": "Ramon Imbao", - "width": 19, - "height": 5, "layouts": { "LAYOUT_alice_split_bs": { "layout": [ diff --git a/keyboards/ramonimbao/aelith/rules.mk b/keyboards/ramonimbao/aelith/rules.mk index 530426307bdf..c38048bb79a0 100644 --- a/keyboards/ramonimbao/aelith/rules.mk +++ b/keyboards/ramonimbao/aelith/rules.mk @@ -5,23 +5,20 @@ MCU = atmega32a F_CPU = 16000000 # Bootloader selection -BOOTLOADER = USBasp +BOOTLOADER = usbasploader # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 LAYOUTS = alice alice_split_bs diff --git a/keyboards/ramonimbao/chevron/info.json b/keyboards/ramonimbao/chevron/info.json index 11ed02e53b7e..b464fd9915a3 100644 --- a/keyboards/ramonimbao/chevron/info.json +++ b/keyboards/ramonimbao/chevron/info.json @@ -1,9 +1,7 @@ { "keyboard_name": "Chevron", "url": "", - "maintainer": "", - "width": 14.5, - "height": 5, + "maintainer": "ramonimbao", "layouts": { "LAYOUT_ansi": { "layout": [ diff --git a/keyboards/ramonimbao/chevron/rules.mk b/keyboards/ramonimbao/chevron/rules.mk index d9ae79985803..f99f68bef09e 100644 --- a/keyboards/ramonimbao/chevron/rules.mk +++ b/keyboards/ramonimbao/chevron/rules.mk @@ -5,22 +5,19 @@ MCU = atmega32a F_CPU = 16000000 # Bootloader selection -BOOTLOADER = USBasp +BOOTLOADER = usbasploader # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = yes diff --git a/keyboards/ramonimbao/herringbone/pro/config.h b/keyboards/ramonimbao/herringbone/pro/config.h index 25249456f99e..20f92282b031 100644 --- a/keyboards/ramonimbao/herringbone/pro/config.h +++ b/keyboards/ramonimbao/herringbone/pro/config.h @@ -48,10 +48,8 @@ along with this program. If not, see . #define DIODE_DIRECTION COL2ROW /* Encoder pin assignment */ -#define ENCODERS_PAD_A { C3 } -#define ENCODERS_PAD_B { C2 } - -#define ENCODER_DIRECTION_FLIP +#define ENCODERS_PAD_A { C2 } +#define ENCODERS_PAD_B { C3 } /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ #define DEBOUNCE 5 diff --git a/keyboards/ramonimbao/herringbone/pro/info.json b/keyboards/ramonimbao/herringbone/pro/info.json index 9b0b35fecb1d..c7846f00f268 100644 --- a/keyboards/ramonimbao/herringbone/pro/info.json +++ b/keyboards/ramonimbao/herringbone/pro/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Herringbone Pro", "url": "", "maintainer": "Ramon Imbao", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT_ansi": { "layout": [ diff --git a/keyboards/ramonimbao/herringbone/pro/keymaps/default/keymap.c b/keyboards/ramonimbao/herringbone/pro/keymaps/default/keymap.c index 1b9b60c0a403..a04192a3e490 100644 --- a/keyboards/ramonimbao/herringbone/pro/keymaps/default/keymap.c +++ b/keyboards/ramonimbao/herringbone/pro/keymaps/default/keymap.c @@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE uint32_t anim_timer = 0; uint32_t anim_sleep = 0; uint8_t current_frame = 0; @@ -80,7 +80,7 @@ static void render_pattern(void) { } } -void oled_task_user(void) { +bool oled_task_user(void) { // Render Herringbone pattern render_pattern(); oled_render(); @@ -94,5 +94,6 @@ void oled_task_user(void) { oled_set_cursor(0, 2); oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); oled_render(); + return false; } #endif diff --git a/keyboards/ramonimbao/herringbone/pro/keymaps/iso/keymap.c b/keyboards/ramonimbao/herringbone/pro/keymaps/iso/keymap.c index 1458b19c227e..6d280905dcc2 100644 --- a/keyboards/ramonimbao/herringbone/pro/keymaps/iso/keymap.c +++ b/keyboards/ramonimbao/herringbone/pro/keymaps/iso/keymap.c @@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE uint32_t anim_timer = 0; uint32_t anim_sleep = 0; uint8_t current_frame = 0; @@ -80,7 +80,7 @@ static void render_pattern(void) { } } -void oled_task_user(void) { +bool oled_task_user(void) { // Render Herringbone pattern render_pattern(); oled_render(); @@ -94,5 +94,6 @@ void oled_task_user(void) { oled_set_cursor(0, 2); oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); oled_render(); + return false; } #endif diff --git a/keyboards/ramonimbao/herringbone/pro/keymaps/via/keymap.c b/keyboards/ramonimbao/herringbone/pro/keymaps/via/keymap.c index ecc35c19abc6..fceca1a8bd3a 100644 --- a/keyboards/ramonimbao/herringbone/pro/keymaps/via/keymap.c +++ b/keyboards/ramonimbao/herringbone/pro/keymaps/via/keymap.c @@ -76,7 +76,7 @@ void matrix_scan_user(void) { } } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE uint32_t anim_timer = 0; uint32_t anim_sleep = 0; uint8_t current_frame = 0; @@ -132,7 +132,7 @@ static void render_pattern(void) { } } -void oled_task_user(void) { +bool oled_task_user(void) { // Render Herringbone pattern render_pattern(); oled_render(); @@ -146,5 +146,6 @@ void oled_task_user(void) { oled_set_cursor(0, 2); oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); oled_render(); + return false; } #endif diff --git a/keyboards/ramonimbao/herringbone/pro/rules.mk b/keyboards/ramonimbao/herringbone/pro/rules.mk index 00c2b41f9755..d6c804f6c4ef 100644 --- a/keyboards/ramonimbao/herringbone/pro/rules.mk +++ b/keyboards/ramonimbao/herringbone/pro/rules.mk @@ -5,26 +5,24 @@ MCU = atmega32a F_CPU = 16000000 # Bootloader selection -BOOTLOADER = USBasp +BOOTLOADER = usbasploader # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = yes -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 WPM_ENABLE = yes LTO_ENABLE = yes diff --git a/keyboards/ramonimbao/herringbone/v1/config.h b/keyboards/ramonimbao/herringbone/v1/config.h index 2d55f0916ccf..9944cfbd1948 100644 --- a/keyboards/ramonimbao/herringbone/v1/config.h +++ b/keyboards/ramonimbao/herringbone/v1/config.h @@ -120,59 +120,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -193,26 +140,6 @@ along with this program. If not, see . #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/ramonimbao/herringbone/v1/info.json b/keyboards/ramonimbao/herringbone/v1/info.json index 01f1e9e48d30..b5b1ea318735 100644 --- a/keyboards/ramonimbao/herringbone/v1/info.json +++ b/keyboards/ramonimbao/herringbone/v1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Herringbone", "url": "", "maintainer": "Ramon Imbao", - "width": 16.5, - "height": 6.5, "layouts": { "LAYOUT_ansi": { "layout": [ diff --git a/keyboards/ramonimbao/herringbone/v1/rules.mk b/keyboards/ramonimbao/herringbone/v1/rules.mk index 35161556f945..d9ea6f539e6e 100644 --- a/keyboards/ramonimbao/herringbone/v1/rules.mk +++ b/keyboards/ramonimbao/herringbone/v1/rules.mk @@ -5,21 +5,18 @@ MCU = atmega32a F_CPU = 16000000 # Bootloader selection -BOOTLOADER = USBasp +BOOTLOADER = usbasploader # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/ramonimbao/mona/info.json b/keyboards/ramonimbao/mona/info.json deleted file mode 100644 index 36f332935b51..000000000000 --- a/keyboards/ramonimbao/mona/info.json +++ /dev/null @@ -1,431 +0,0 @@ -{ - "keyboard_name": "Mona", - "url": "", - "maintainer": "Ramon Imbao", - "width": 15, - "height": 5, - "layouts": { - "LAYOUT_60_ansi": { - "layout": [ - {"x":0, "y":0}, - {"x":1, "y":0}, - {"x":2, "y":0}, - {"x":3, "y":0}, - {"x":4, "y":0}, - {"x":5, "y":0}, - {"x":6, "y":0}, - {"x":7, "y":0}, - {"x":8, "y":0}, - {"x":9, "y":0}, - {"x":10, "y":0}, - {"x":11, "y":0}, - {"x":12, "y":0}, - {"x":13, "y":0, "w":2}, - {"x":0, "y":1, "w":1.5}, - - {"x":1.5, "y":1}, - {"x":2.5, "y":1}, - {"x":3.5, "y":1}, - {"x":4.5, "y":1}, - {"x":5.5, "y":1}, - {"x":6.5, "y":1}, - {"x":7.5, "y":1}, - {"x":8.5, "y":1}, - {"x":9.5, "y":1}, - {"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}, - {"x":2.75, "y":2}, - {"x":3.75, "y":2}, - {"x":4.75, "y":2}, - {"x":5.75, "y":2}, - {"x":6.75, "y":2}, - {"x":7.75, "y":2}, - {"x":8.75, "y":2}, - {"x":9.75, "y":2}, - {"x":10.75, "y":2}, - {"x":11.75, "y":2}, - {"x":12.75, "y":2, "w":2.25}, - - {"x":0, "y":3, "w":2.25}, - {"x":2.25, "y":3}, - {"x":3.25, "y":3}, - {"x":4.25, "y":3}, - {"x":5.25, "y":3}, - {"x":6.25, "y":3}, - {"x":7.25, "y":3}, - {"x":8.25, "y":3}, - {"x":9.25, "y":3}, - {"x":10.25, "y":3}, - {"x":11.25, "y":3}, - {"x":12.25, "y":3, "w":2.75}, - - {"x":0, "y":4, "w":1.25}, - {"x":1.25, "y":4, "w":1.25}, - {"x":2.5, "y":4, "w":1.25}, - {"x":3.75, "y":4, "w":6.25}, - {"x":10, "y":4, "w":1.25}, - {"x":11.25, "y":4, "w":1.25}, - {"x":12.5, "y":4, "w":1.25}, - {"x":13.75, "y":4, "w":1.25} - ] - }, - "LAYOUT_60_tsangan_hhkb": { - "layout": [ - {"x":0, "y":0}, - {"x":1, "y":0}, - {"x":2, "y":0}, - {"x":3, "y":0}, - {"x":4, "y":0}, - {"x":5, "y":0}, - {"x":6, "y":0}, - {"x":7, "y":0}, - {"x":8, "y":0}, - {"x":9, "y":0}, - {"x":10, "y":0}, - {"x":11, "y":0}, - {"x":12, "y":0}, - {"x":13, "y":0}, - {"x":14, "y":0}, - - {"x":0, "y":1, "w":1.5}, - {"x":1.5, "y":1}, - {"x":2.5, "y":1}, - {"x":3.5, "y":1}, - {"x":4.5, "y":1}, - {"x":5.5, "y":1}, - {"x":6.5, "y":1}, - {"x":7.5, "y":1}, - {"x":8.5, "y":1}, - {"x":9.5, "y":1}, - {"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}, - {"x":2.75, "y":2}, - {"x":3.75, "y":2}, - {"x":4.75, "y":2}, - {"x":5.75, "y":2}, - {"x":6.75, "y":2}, - {"x":7.75, "y":2}, - {"x":8.75, "y":2}, - {"x":9.75, "y":2}, - {"x":10.75, "y":2}, - {"x":11.75, "y":2}, - {"x":12.75, "y":2, "w":2.25}, - - {"x":0, "y":3, "w":2.25}, - {"x":2.25, "y":3}, - {"x":3.25, "y":3}, - {"x":4.25, "y":3}, - {"x":5.25, "y":3}, - {"x":6.25, "y":3}, - {"x":7.25, "y":3}, - {"x":8.25, "y":3}, - {"x":9.25, "y":3}, - {"x":10.25, "y":3}, - {"x":11.25, "y":3}, - {"x":12.25, "y":3, "w":1.75}, - {"x":14, "y":3}, - - {"x":0, "y":4, "w":1.5}, - {"x":1.5, "y":4}, - {"x":2.5, "y":4, "w":1.5}, - {"x":4, "y":4, "w":7}, - {"x":11, "y":4, "w":1.5}, - {"x":12.5, "y":4}, - {"x":13.5, "y":4, "w":1.5} - ] - }, - "LAYOUT_60_iso": { - "layout": [ - {"x":0, "y":0}, - {"x":1, "y":0}, - {"x":2, "y":0}, - {"x":3, "y":0}, - {"x":4, "y":0}, - {"x":5, "y":0}, - {"x":6, "y":0}, - {"x":7, "y":0}, - {"x":8, "y":0}, - {"x":9, "y":0}, - {"x":10, "y":0}, - {"x":11, "y":0}, - {"x":12, "y":0}, - {"x":13, "y":0, "w":2}, - - {"x":0, "y":1, "w":1.5}, - {"x":1.5, "y":1}, - {"x":2.5, "y":1}, - {"x":3.5, "y":1}, - {"x":4.5, "y":1}, - {"x":5.5, "y":1}, - {"x":6.5, "y":1}, - {"x":7.5, "y":1}, - {"x":8.5, "y":1}, - {"x":9.5, "y":1}, - {"x":10.5, "y":1}, - {"x":11.5, "y":1}, - {"x":12.5, "y":1}, - {"x":13.75, "y":1, "w":1.25, "h":2}, - - {"x":0, "y":2, "w":1.75}, - {"x":1.75, "y":2}, - {"x":2.75, "y":2}, - {"x":3.75, "y":2}, - {"x":4.75, "y":2}, - {"x":5.75, "y":2}, - {"x":6.75, "y":2}, - {"x":7.75, "y":2}, - {"x":8.75, "y":2}, - {"x":9.75, "y":2}, - {"x":10.75, "y":2}, - {"x":11.75, "y":2}, - {"x":12.75, "y":2}, - - {"x":0, "y":3, "w":1.25}, - {"x":1.25, "y":3}, - {"x":2.25, "y":3}, - {"x":3.25, "y":3}, - {"x":4.25, "y":3}, - {"x":5.25, "y":3}, - {"x":6.25, "y":3}, - {"x":7.25, "y":3}, - {"x":8.25, "y":3}, - {"x":9.25, "y":3}, - {"x":10.25, "y":3}, - {"x":11.25, "y":3}, - {"x":12.25, "y":3, "w":2.75}, - - {"x":0, "y":4, "w":1.25}, - {"x":1.25, "y":4, "w":1.25}, - {"x":2.5, "y":4, "w":1.25}, - {"x":3.75, "y":4, "w":6.25}, - {"x":10, "y":4, "w":1.25}, - {"x":11.25, "y":4, "w":1.25}, - {"x":12.5, "y":4, "w":1.25}, - {"x":13.75, "y":4, "w":1.25} - ] - }, - "LAYOUT_60_iso_split_bs_rshift": { - "layout": [ - {"x":0, "y":0}, - {"x":1, "y":0}, - {"x":2, "y":0}, - {"x":3, "y":0}, - {"x":4, "y":0}, - {"x":5, "y":0}, - {"x":6, "y":0}, - {"x":7, "y":0}, - {"x":8, "y":0}, - {"x":9, "y":0}, - {"x":10, "y":0}, - {"x":11, "y":0}, - {"x":12, "y":0}, - {"x":13, "y":0}, - {"x":14, "y":0}, - - {"x":0, "y":1, "w":1.5}, - {"x":1.5, "y":1}, - {"x":2.5, "y":1}, - {"x":3.5, "y":1}, - {"x":4.5, "y":1}, - {"x":5.5, "y":1}, - {"x":6.5, "y":1}, - {"x":7.5, "y":1}, - {"x":8.5, "y":1}, - {"x":9.5, "y":1}, - {"x":10.5, "y":1}, - {"x":11.5, "y":1}, - {"x":12.5, "y":1}, - {"x":13.75, "y":1, "w":1.25, "h":2}, - - {"x":0, "y":2, "w":1.75}, - {"x":1.75, "y":2}, - {"x":2.75, "y":2}, - {"x":3.75, "y":2}, - {"x":4.75, "y":2}, - {"x":5.75, "y":2}, - {"x":6.75, "y":2}, - {"x":7.75, "y":2}, - {"x":8.75, "y":2}, - {"x":9.75, "y":2}, - {"x":10.75, "y":2}, - {"x":11.75, "y":2}, - {"x":12.75, "y":2}, - - {"x":0, "y":3, "w":1.25}, - {"x":1.25, "y":3}, - {"x":2.25, "y":3}, - {"x":3.25, "y":3}, - {"x":4.25, "y":3}, - {"x":5.25, "y":3}, - {"x":6.25, "y":3}, - {"x":7.25, "y":3}, - {"x":8.25, "y":3}, - {"x":9.25, "y":3}, - {"x":10.25, "y":3}, - {"x":11.25, "y":3}, - {"x":12.25, "y":3, "w":1.75}, - {"x":14, "y":3}, - - {"x":0, "y":4, "w":1.25}, - {"x":1.25, "y":4, "w":1.25}, - {"x":2.5, "y":4, "w":1.25}, - {"x":3.75, "y":4, "w":6.25}, - {"x":10, "y":4, "w":1.25}, - {"x":11.25, "y":4, "w":1.25}, - {"x":12.5, "y":4, "w":1.25}, - {"x":13.75, "y":4, "w":1.25} - ] - }, - "LAYOUT_60_iso_tsangan": { - "layout": [ - {"x":0, "y":0}, - {"x":1, "y":0}, - {"x":2, "y":0}, - {"x":3, "y":0}, - {"x":4, "y":0}, - {"x":5, "y":0}, - {"x":6, "y":0}, - {"x":7, "y":0}, - {"x":8, "y":0}, - {"x":9, "y":0}, - {"x":10, "y":0}, - {"x":11, "y":0}, - {"x":12, "y":0}, - {"x":13, "y":0, "w":2}, - - {"x":0, "y":1, "w":1.5}, - {"x":1.5, "y":1}, - {"x":2.5, "y":1}, - {"x":3.5, "y":1}, - {"x":4.5, "y":1}, - {"x":5.5, "y":1}, - {"x":6.5, "y":1}, - {"x":7.5, "y":1}, - {"x":8.5, "y":1}, - {"x":9.5, "y":1}, - {"x":10.5, "y":1}, - {"x":11.5, "y":1}, - {"x":12.5, "y":1}, - {"x":13.75, "y":1, "w":1.25, "h":2}, - - {"x":0, "y":2, "w":1.75}, - {"x":1.75, "y":2}, - {"x":2.75, "y":2}, - {"x":3.75, "y":2}, - {"x":4.75, "y":2}, - {"x":5.75, "y":2}, - {"x":6.75, "y":2}, - {"x":7.75, "y":2}, - {"x":8.75, "y":2}, - {"x":9.75, "y":2}, - {"x":10.75, "y":2}, - {"x":11.75, "y":2}, - {"x":12.75, "y":2}, - - {"x":0, "y":3, "w":1.25}, - {"x":1.25, "y":3}, - {"x":2.25, "y":3}, - {"x":3.25, "y":3}, - {"x":4.25, "y":3}, - {"x":5.25, "y":3}, - {"x":6.25, "y":3}, - {"x":7.25, "y":3}, - {"x":8.25, "y":3}, - {"x":9.25, "y":3}, - {"x":10.25, "y":3}, - {"x":11.25, "y":3}, - {"x":12.25, "y":3, "w":2.75}, - - {"x":0, "y":4, "w":1.5}, - {"x":1.5, "y":4}, - {"x":2.5, "y":4, "w":1.5}, - {"x":4, "y":4, "w":7}, - {"x":11, "y":4, "w":1.5}, - {"x":12.5, "y":4}, - {"x":13.5, "y":4, "w":1.5} - ] - }, - "LAYOUT_60_iso_split_bs_rshift": { - "layout": [ - {"x":0, "y":0}, - {"x":1, "y":0}, - {"x":2, "y":0}, - {"x":3, "y":0}, - {"x":4, "y":0}, - {"x":5, "y":0}, - {"x":6, "y":0}, - {"x":7, "y":0}, - {"x":8, "y":0}, - {"x":9, "y":0}, - {"x":10, "y":0}, - {"x":11, "y":0}, - {"x":12, "y":0}, - {"x":13, "y":0}, - {"x":14, "y":0}, - - {"x":0, "y":1, "w":1.5}, - {"x":1.5, "y":1}, - {"x":2.5, "y":1}, - {"x":3.5, "y":1}, - {"x":4.5, "y":1}, - {"x":5.5, "y":1}, - {"x":6.5, "y":1}, - {"x":7.5, "y":1}, - {"x":8.5, "y":1}, - {"x":9.5, "y":1}, - {"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}, - {"x":2.75, "y":2}, - {"x":3.75, "y":2}, - {"x":4.75, "y":2}, - {"x":5.75, "y":2}, - {"x":6.75, "y":2}, - {"x":7.75, "y":2}, - {"x":8.75, "y":2}, - {"x":9.75, "y":2}, - {"x":10.75, "y":2}, - {"x":11.75, "y":2}, - {"x":12.75, "y":2, "w":2.25}, - - {"x":0, "y":3, "w":1.25}, - {"x":1.25, "y":3}, - {"x":2.25, "y":3}, - {"x":3.25, "y":3}, - {"x":4.25, "y":3}, - {"x":5.25, "y":3}, - {"x":6.25, "y":3}, - {"x":7.25, "y":3}, - {"x":8.25, "y":3}, - {"x":9.25, "y":3}, - {"x":10.25, "y":3}, - {"x":11.25, "y":3}, - {"x":12.25, "y":3, "w":1.75}, - {"x":14, "y":3}, - - {"x":0, "y":4, "w":1.25}, - {"x":1.25, "y":4, "w":1.25}, - {"x":2.5, "y":4, "w":1.25}, - {"x":3.75, "y":4, "w":6.25}, - {"x":10, "y":4, "w":1.25}, - {"x":11.25, "y":4, "w":1.25}, - {"x":12.5, "y":4, "w":1.25}, - {"x":13.75, "y":4, "w":1.25} - ] - } - } -} diff --git a/keyboards/ramonimbao/mona/mona.c b/keyboards/ramonimbao/mona/mona.c deleted file mode 100644 index 486f75b74794..000000000000 --- a/keyboards/ramonimbao/mona/mona.c +++ /dev/null @@ -1,17 +0,0 @@ -/* Copyright 2020 Ramon Imbao - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "mona.h" diff --git a/keyboards/ramonimbao/mona/readme.md b/keyboards/ramonimbao/mona/readme.md deleted file mode 100644 index 57b811ef509e..000000000000 --- a/keyboards/ramonimbao/mona/readme.md +++ /dev/null @@ -1,19 +0,0 @@ -# Mona - -![Mona](https://i.imgur.com/jaRv4vW.png) - -A gummy-worm o-ring mount 60% marble keyboard. - -* Keyboard Maintainer: [Ramon Imbao](https://github.com/ramonimbao) -* Hardware Supported: ATmega32u4 -* Hardware Availability: [Erbakeys](https://www.erbakeys.com/) - -Make example for this keyboard (after setting up your build environment): - - make ramonimbao/mona:default - -Flashing example for this keyboard: - - make ramonimbao/mona:default:flash - -See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/ramonimbao/mona/rules.mk b/keyboards/ramonimbao/mona/rules.mk index 5c0d8f307c54..ba6b05956979 100644 --- a/keyboards/ramonimbao/mona/rules.mk +++ b/keyboards/ramonimbao/mona/rules.mk @@ -1,22 +1 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -BOOTLOADER = atmel-dfu - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth -AUDIO_ENABLE = no # Audio output +DEFAULT_FOLDER = ramonimbao/mona/v1_1 diff --git a/keyboards/ramonimbao/mona/config.h b/keyboards/ramonimbao/mona/v1/config.h similarity index 100% rename from keyboards/ramonimbao/mona/config.h rename to keyboards/ramonimbao/mona/v1/config.h diff --git a/keyboards/ramonimbao/mona/v1/info.json b/keyboards/ramonimbao/mona/v1/info.json new file mode 100644 index 000000000000..11b0719145ee --- /dev/null +++ b/keyboards/ramonimbao/mona/v1/info.json @@ -0,0 +1,429 @@ +{ + "keyboard_name": "Mona", + "url": "", + "maintainer": "Ramon Imbao", + "layouts": { + "LAYOUT_60_ansi": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":0, "y":1, "w":1.5}, + + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":2.75}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":12.5, "y":4, "w":1.25}, + {"x":13.75, "y":4, "w":1.25} + ] + }, + "LAYOUT_60_tsangan_hhkb": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + + {"x":0, "y":4, "w":1.5}, + {"x":1.5, "y":4}, + {"x":2.5, "y":4, "w":1.5}, + {"x":4, "y":4, "w":7}, + {"x":11, "y":4, "w":1.5}, + {"x":12.5, "y":4}, + {"x":13.5, "y":4, "w":1.5} + ] + }, + "LAYOUT_60_iso": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.75, "y":1, "w":1.25, "h":2}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":2.75}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":12.5, "y":4, "w":1.25}, + {"x":13.75, "y":4, "w":1.25} + ] + }, + "LAYOUT_60_iso_split_bs_rshift": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.75, "y":1, "w":1.25, "h":2}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":12.5, "y":4, "w":1.25}, + {"x":13.75, "y":4, "w":1.25} + ] + }, + "LAYOUT_60_iso_tsangan": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.75, "y":1, "w":1.25, "h":2}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":2.75}, + + {"x":0, "y":4, "w":1.5}, + {"x":1.5, "y":4}, + {"x":2.5, "y":4, "w":1.5}, + {"x":4, "y":4, "w":7}, + {"x":11, "y":4, "w":1.5}, + {"x":12.5, "y":4}, + {"x":13.5, "y":4, "w":1.5} + ] + }, + "LAYOUT_60_iso_split_bs_rshift": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":12.5, "y":4, "w":1.25}, + {"x":13.75, "y":4, "w":1.25} + ] + } + } +} diff --git a/keyboards/ramonimbao/mona/keymaps/default/keymap.c b/keyboards/ramonimbao/mona/v1/keymaps/default/keymap.c similarity index 100% rename from keyboards/ramonimbao/mona/keymaps/default/keymap.c rename to keyboards/ramonimbao/mona/v1/keymaps/default/keymap.c diff --git a/keyboards/ramonimbao/mona/keymaps/iso/keymap.c b/keyboards/ramonimbao/mona/v1/keymaps/iso/keymap.c similarity index 100% rename from keyboards/ramonimbao/mona/keymaps/iso/keymap.c rename to keyboards/ramonimbao/mona/v1/keymaps/iso/keymap.c diff --git a/keyboards/ramonimbao/mona/keymaps/via/keymap.c b/keyboards/ramonimbao/mona/v1/keymaps/via/keymap.c similarity index 100% rename from keyboards/ramonimbao/mona/keymaps/via/keymap.c rename to keyboards/ramonimbao/mona/v1/keymaps/via/keymap.c diff --git a/keyboards/ramonimbao/mona/v1/keymaps/via/rules.mk b/keyboards/ramonimbao/mona/v1/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/ramonimbao/mona/v1/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/ramonimbao/mona/v1/readme.md b/keyboards/ramonimbao/mona/v1/readme.md new file mode 100644 index 000000000000..8b6af0526e38 --- /dev/null +++ b/keyboards/ramonimbao/mona/v1/readme.md @@ -0,0 +1,19 @@ +# Mona + +![Mona](https://i.imgur.com/jaRv4vW.png) + +A gummy-worm o-ring mount 60% marble keyboard. + +* Keyboard Maintainer: [Ramon Imbao](https://github.com/ramonimbao) +* Hardware Supported: ATmega32u4 +* Hardware Availability: [Erbakeys](https://www.erbakeys.com/) + +Make example for this keyboard (after setting up your build environment): + + make ramonimbao/mona/v1:default + +Flashing example for this keyboard: + + make ramonimbao/mona/v1:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/ramonimbao/mona/v1/rules.mk b/keyboards/ramonimbao/mona/v1/rules.mk new file mode 100644 index 000000000000..d2109f62500b --- /dev/null +++ b/keyboards/ramonimbao/mona/v1/rules.mk @@ -0,0 +1,19 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/ramonimbao/mona/v1/v1.c b/keyboards/ramonimbao/mona/v1/v1.c new file mode 100644 index 000000000000..d55373272db2 --- /dev/null +++ b/keyboards/ramonimbao/mona/v1/v1.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Ramon Imbao + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "v1.h" diff --git a/keyboards/ramonimbao/mona/mona.h b/keyboards/ramonimbao/mona/v1/v1.h similarity index 100% rename from keyboards/ramonimbao/mona/mona.h rename to keyboards/ramonimbao/mona/v1/v1.h diff --git a/keyboards/ramonimbao/mona/v1_1/config.h b/keyboards/ramonimbao/mona/v1_1/config.h new file mode 100644 index 000000000000..de657cd8e6d4 --- /dev/null +++ b/keyboards/ramonimbao/mona/v1_1/config.h @@ -0,0 +1,62 @@ +/* +Copyright 2020 Ramon Imbao + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xB16B +#define PRODUCT_ID 0x404B +#define DEVICE_VER 0x0011 +#define MANUFACTURER Ramon Imbao +#define PRODUCT Mona + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * 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 { D1, D5, B7, F0, F1 } +#define MATRIX_COL_PINS { D0, D3, D2, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* indicator LEDs */ +#define LED_CAPS_LOCK_PIN B3 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/ramonimbao/mona/v1_1/info.json b/keyboards/ramonimbao/mona/v1_1/info.json new file mode 100644 index 000000000000..8a2e11f13c6e --- /dev/null +++ b/keyboards/ramonimbao/mona/v1_1/info.json @@ -0,0 +1,503 @@ +{ + "keyboard_name": "Mona", + "url": "", + "maintainer": "Ramon Imbao", + "layouts": { + "LAYOUT_60_ansi": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":0, "y":1, "w":1.5}, + + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":2.75}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":12.5, "y":4, "w":1.25}, + {"x":13.75, "y":4, "w":1.25} + ] + }, + "LAYOUT_60_tsangan_hhkb": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + + {"x":0, "y":4, "w":1.5}, + {"x":1.5, "y":4}, + {"x":2.5, "y":4, "w":1.5}, + {"x":4, "y":4, "w":7}, + {"x":11, "y":4, "w":1.5}, + {"x":12.5, "y":4}, + {"x":13.5, "y":4, "w":1.5} + ] + }, + "LAYOUT_60_iso": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.75, "y":1, "w":1.25, "h":2}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":2.75}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":12.5, "y":4, "w":1.25}, + {"x":13.75, "y":4, "w":1.25} + ] + }, + "LAYOUT_60_iso_split_bs_rshift": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.75, "y":1, "w":1.25, "h":2}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":12.5, "y":4, "w":1.25}, + {"x":13.75, "y":4, "w":1.25} + ] + }, + "LAYOUT_60_iso_tsangan": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.75, "y":1, "w":1.25, "h":2}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":2.75}, + + {"x":0, "y":4, "w":1.5}, + {"x":1.5, "y":4}, + {"x":2.5, "y":4, "w":1.5}, + {"x":4, "y":4, "w":7}, + {"x":11, "y":4, "w":1.5}, + {"x":12.5, "y":4}, + {"x":13.5, "y":4, "w":1.5} + ] + }, + "LAYOUT_60_iso_split_bs_rshift": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":12.5, "y":4, "w":1.25}, + {"x":13.75, "y":4, "w":1.25} + ] + }, + "LAYOUT_all": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":2.5}, + {"x":6.25, "y":4}, + {"x":7.25, "y":4, "w":2.75}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":12.5, "y":4, "w":1.25}, + {"x":13.75, "y":4, "w":1.25} + ] + } + } +} diff --git a/keyboards/ramonimbao/mona/v1_1/keymaps/default/keymap.c b/keyboards/ramonimbao/mona/v1_1/keymaps/default/keymap.c new file mode 100644 index 000000000000..5cf76c858564 --- /dev/null +++ b/keyboards/ramonimbao/mona/v1_1/keymaps/default/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2020 Ramon Imbao + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_60_ansi( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL + ), + + [1] = LAYOUT_60_ansi( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/ramonimbao/mona/v1_1/keymaps/iso/keymap.c b/keyboards/ramonimbao/mona/v1_1/keymaps/iso/keymap.c new file mode 100644 index 000000000000..704c8bf46f5b --- /dev/null +++ b/keyboards/ramonimbao/mona/v1_1/keymaps/iso/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2020 Ramon Imbao + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_60_iso( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_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_ENT, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL + ), + + [1] = LAYOUT_60_iso( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/ramonimbao/mona/v1_1/keymaps/via/keymap.c b/keyboards/ramonimbao/mona/v1_1/keymaps/via/keymap.c new file mode 100644 index 000000000000..e5a714314e51 --- /dev/null +++ b/keyboards/ramonimbao/mona/v1_1/keymaps/via/keymap.c @@ -0,0 +1,48 @@ +/* Copyright 2020 Ramon Imbao + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_NO, KC_SPC, KC_NO, KC_RALT, KC_RGUI, KC_APP, KC_RCTL + ), + + [1] = LAYOUT_all( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/ramonimbao/mona/v1_1/keymaps/via/rules.mk b/keyboards/ramonimbao/mona/v1_1/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/ramonimbao/mona/v1_1/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/ramonimbao/mona/v1_1/readme.md b/keyboards/ramonimbao/mona/v1_1/readme.md new file mode 100644 index 000000000000..b28fedd76c4b --- /dev/null +++ b/keyboards/ramonimbao/mona/v1_1/readme.md @@ -0,0 +1,20 @@ +# Mona v1.1 + +![Mona v1.1](https://i.imgur.com/VaWcIkjl.png) + +A gummy-worm o-ring mount 60% marble keyboard. Now with ALPS/MX, Caps Lock LED, and split spacebar support. + +* Keyboard Maintainer: [Ramon Imbao](https://github.com/ramonimbao) +* Hardware Supported: ATmega32u4 + +To get to the bootloader, with the USB cable plugged in, press the `RESET` button on the back of the PCB. + +Make example for this keyboard (after setting up your build environment): + + make ramonimbao/mona:default + +Flashing example for this keyboard: + + make ramonimbao/mona:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/ramonimbao/mona/v1_1/rules.mk b/keyboards/ramonimbao/mona/v1_1/rules.mk new file mode 100644 index 000000000000..d2109f62500b --- /dev/null +++ b/keyboards/ramonimbao/mona/v1_1/rules.mk @@ -0,0 +1,19 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/ramonimbao/mona/v1_1/v1_1.c b/keyboards/ramonimbao/mona/v1_1/v1_1.c new file mode 100644 index 000000000000..d6ebf980538e --- /dev/null +++ b/keyboards/ramonimbao/mona/v1_1/v1_1.c @@ -0,0 +1,17 @@ +/* Copyright 2020 Ramon Imbao + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "v1_1.h" diff --git a/keyboards/ramonimbao/mona/v1_1/v1_1.h b/keyboards/ramonimbao/mona/v1_1/v1_1.h new file mode 100644 index 000000000000..a7327c3b8098 --- /dev/null +++ b/keyboards/ramonimbao/mona/v1_1/v1_1.h @@ -0,0 +1,113 @@ +/* Copyright 2021 Ramon Imbao + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define XXX KC_NO + +#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, k1e, \ + 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, k4d, k4e \ +) { \ + { 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, XXX, k1e }, \ + { 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, XXX, k4d, k4e }, \ +} + +#define LAYOUT_60_tsangan_hhkb( \ + 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, k2d, \ + k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, \ + k40, k41, k42, k46, k4b, 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, XXX, k1e }, \ + { 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, XXX, k4b, XXX, k4d, k4e }, \ +} + +#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, k1e, \ + 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, k3d, \ + k40, k41, k42, k46, k4a, k4b, k4d, k4e \ +) { \ + { 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, XXX, k1e }, \ + { 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, XXX, k3d, XXX }, \ + { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, k4a, k4b, XXX, k4d, k4e }, \ +} + +#define LAYOUT_60_iso_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, k1e, \ + 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, k3d, k3e, \ + k40, k41, k42, k46, k4a, k4b, 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, XXX, k1e }, \ + { 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, XXX, k3d, k3e }, \ + { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, k4a, k4b, XXX, k4d, k4e }, \ +} + +#define LAYOUT_60_iso_tsangan( \ + 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, k1e, \ + 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, k3d, \ + k40, k41, k42, k46, k4b, k4d, k4e \ +) { \ + { 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, XXX, k1e }, \ + { 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, XXX, k3d, XXX }, \ + { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, XXX, k4b, XXX, k4d, k4e }, \ +} + +#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, k1e, \ + 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, k3d, k3e, \ + k40, k41, k42, k44, k46, k48, k4a, k4b, 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, XXX, k1e }, \ + { 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, XXX, k3d, k3e }, \ + { k40, k41, k42, XXX, k44, XXX, k46, XXX, k48, XXX, k4a, k4b, XXX, k4d, k4e }, \ +} diff --git a/keyboards/ramonimbao/squishy65/info.json b/keyboards/ramonimbao/squishy65/info.json index 40ba15f6f166..d85efa831fb3 100644 --- a/keyboards/ramonimbao/squishy65/info.json +++ b/keyboards/ramonimbao/squishy65/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Squishy65", "url": "", "maintainer": "Ramon Imbao", - "width": 16, - "height": 5, "layouts": { "LAYOUT_ansi": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"~", "x":13, "y":0}, {"label":"|", "x":14, "y":0}, {"label":"Home", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"Backspace", "x":13.5, "y":1, "w":1.5}, {"label":"PgUp", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"PgDn", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"label":"End", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"label":"", "x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Ctrl", "x":11.25, "y":4, "w":1.25}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}] diff --git a/keyboards/ramonimbao/squishy65/rules.mk b/keyboards/ramonimbao/squishy65/rules.mk index 1350d285e82d..9d2f9c87fcb0 100644 --- a/keyboards/ramonimbao/squishy65/rules.mk +++ b/keyboards/ramonimbao/squishy65/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output # Enter lower-power sleep mode when on the ChibiOS idle thread diff --git a/keyboards/ramonimbao/squishyfrl/info.json b/keyboards/ramonimbao/squishyfrl/info.json index 585bce4951f9..03cdda4fd990 100644 --- a/keyboards/ramonimbao/squishyfrl/info.json +++ b/keyboards/ramonimbao/squishyfrl/info.json @@ -2,8 +2,6 @@ "keyboard_name": "SquishyTKL", "url": "", "maintainer": "Ramon Imbao", - "width": 18.25, - "height": 5, "layouts": { "LAYOUT_ansi": { "layout": [ diff --git a/keyboards/ramonimbao/squishyfrl/rules.mk b/keyboards/ramonimbao/squishyfrl/rules.mk index 955c819c7933..d418fd4f3e2e 100644 --- a/keyboards/ramonimbao/squishyfrl/rules.mk +++ b/keyboards/ramonimbao/squishyfrl/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = stm32duino # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output # Enter lower-power sleep mode when on the ChibiOS idle thread diff --git a/keyboards/ramonimbao/squishytkl/info.json b/keyboards/ramonimbao/squishytkl/info.json index f845e2bedd9f..aa19c73fa830 100644 --- a/keyboards/ramonimbao/squishytkl/info.json +++ b/keyboards/ramonimbao/squishytkl/info.json @@ -2,409 +2,437 @@ "keyboard_name": "SquishyTKL", "url": "", "maintainer": "Ramon Imbao", - "width": 19.5, - "height": 6.25, "layouts": { "LAYOUT_ansi": { "layout": [ - {"x":0, "y":0.5}, - {"x":1.25, "y":0.5}, - {"x":2.25, "y":0.5}, - {"x":3.25, "y":0.5}, - {"x":4.25, "y":0.5}, - {"x":5.5, "y":0.5}, - {"x":6.5, "y":0.5}, - {"x":7.5, "y":0.5}, - {"x":8.5, "y":0.5}, - {"x":9.75, "y":0.5}, - {"x":10.75, "y":0.5}, - {"x":11.75, "y":0.5}, - {"x":12.75, "y":0.5}, - {"x":14, "y":0.5}, - {"x":15.25, "y":0.5}, - {"x":16.25, "y":0.5}, - {"x":17.25, "y":0.5}, - - {"x":0, "y":1.75}, - {"x":1, "y":1.75}, - {"x":2, "y":1.75}, - {"x":3, "y":1.75}, - {"x":4, "y":1.75}, - {"x":5, "y":1.75}, - {"x":6, "y":1.75}, - {"x":7, "y":1.75}, - {"x":8, "y":1.75}, - {"x":9, "y":1.75}, - {"x":10, "y":1.75}, - {"x":11, "y":1.75}, - {"x":12, "y":1.75}, - {"x":13, "y":1.75, "w":2}, - {"x":15.25, "y":1.75}, - {"x":16.25, "y":1.75}, - {"x":17.25, "y":1.75}, - - {"x":0, "y":2.75, "w":1.5}, - {"x":1.5, "y":2.75}, - {"x":2.5, "y":2.75}, - {"x":3.5, "y":2.75}, - {"x":4.5, "y":2.75}, - {"x":5.5, "y":2.75}, - {"x":6.5, "y":2.75}, - {"x":7.5, "y":2.75}, - {"x":8.5, "y":2.75}, - {"x":9.5, "y":2.75}, - {"x":10.5, "y":2.75}, - {"x":11.5, "y":2.75}, - {"x":12.5, "y":2.75}, - {"x":13.5, "y":2.75, "w":1.5}, - {"x":15.25, "y":2.75}, - {"x":16.25, "y":2.75}, - {"x":17.25, "y":2.75}, - - {"x":0, "y":3.75, "w":1.75}, - {"x":1.75, "y":3.75}, - {"x":2.75, "y":3.75}, - {"x":3.75, "y":3.75}, - {"x":4.75, "y":3.75}, - {"x":5.75, "y":3.75}, - {"x":6.75, "y":3.75}, - {"x":7.75, "y":3.75}, - {"x":8.75, "y":3.75}, - {"x":9.75, "y":3.75}, - {"x":10.75, "y":3.75}, - {"x":11.75, "y":3.75}, - {"x":12.75, "y":3.75, "w":2.25}, - - {"x":0, "y":4.75, "w":2.25}, - {"x":2.25, "y":4.75}, - {"x":3.25, "y":4.75}, - {"x":4.25, "y":4.75}, - {"x":5.25, "y":4.75}, - {"x":6.25, "y":4.75}, - {"x":7.25, "y":4.75}, - {"x":8.25, "y":4.75}, - {"x":9.25, "y":4.75}, - {"x":10.25, "y":4.75}, - {"x":11.25, "y":4.75}, - {"x":12.25, "y":4.75, "w":2.75}, - {"x":16.25, "y":4.75}, - - {"x":0, "y":5.75, "w":1.25}, - {"x":1.25, "y":5.75, "w":1.25}, - {"x":2.5, "y":5.75, "w":1.25}, - {"x":3.75, "y":5.75, "w":6.25}, - {"x":10, "y":5.75, "w":1.25}, - {"x":11.25, "y":5.75, "w":1.25}, - {"x":12.5, "y":5.75, "w":1.25}, - {"x":13.75, "y":5.75, "w":1.25}, - {"x":15.25, "y":5.75}, - {"x":16.25, "y":5.75}, - {"x":17.25, "y":5.75} + {"x": 0, "y": 0}, + + {"x": 1.25, "y": 0}, + {"x": 2.25, "y": 0}, + {"x": 3.25, "y": 0}, + {"x": 4.25, "y": 0}, + + {"x": 5.5, "y": 0}, + {"x": 6.5, "y": 0}, + {"x": 7.5, "y": 0}, + {"x": 8.5, "y": 0}, + + {"x": 9.75, "y": 0}, + {"x": 10.75, "y": 0}, + {"x": 11.75, "y": 0}, + {"x": 12.75, "y": 0}, + + {"x": 14, "y": 0}, + + {"x": 15.25, "y": 0}, + {"x": 16.25, "y": 0}, + {"x": 17.25, "y": 0}, + + {"x": 0, "y": 1.25}, + {"x": 1, "y": 1.25}, + {"x": 2, "y": 1.25}, + {"x": 3, "y": 1.25}, + {"x": 4, "y": 1.25}, + {"x": 5, "y": 1.25}, + {"x": 6, "y": 1.25}, + {"x": 7, "y": 1.25}, + {"x": 8, "y": 1.25}, + {"x": 9, "y": 1.25}, + {"x": 10, "y": 1.25}, + {"x": 11, "y": 1.25}, + {"x": 12, "y": 1.25}, + {"x": 13, "y": 1.25, "w": 2}, + + {"x": 15.25, "y": 1.25}, + {"x": 16.25, "y": 1.25}, + {"x": 17.25, "y": 1.25}, + + {"x": 0, "y": 2.25, "w": 1.5}, + {"x": 1.5, "y": 2.25}, + {"x": 2.5, "y": 2.25}, + {"x": 3.5, "y": 2.25}, + {"x": 4.5, "y": 2.25}, + {"x": 5.5, "y": 2.25}, + {"x": 6.5, "y": 2.25}, + {"x": 7.5, "y": 2.25}, + {"x": 8.5, "y": 2.25}, + {"x": 9.5, "y": 2.25}, + {"x": 10.5, "y": 2.25}, + {"x": 11.5, "y": 2.25}, + {"x": 12.5, "y": 2.25}, + {"x": 13.5, "y": 2.25, "w": 1.5}, + + {"x": 15.25, "y": 2.25}, + {"x": 16.25, "y": 2.25}, + {"x": 17.25, "y": 2.25}, + + {"x": 0, "y": 3.25, "w": 1.75}, + {"x": 1.75, "y": 3.25}, + {"x": 2.75, "y": 3.25}, + {"x": 3.75, "y": 3.25}, + {"x": 4.75, "y": 3.25}, + {"x": 5.75, "y": 3.25}, + {"x": 6.75, "y": 3.25}, + {"x": 7.75, "y": 3.25}, + {"x": 8.75, "y": 3.25}, + {"x": 9.75, "y": 3.25}, + {"x": 10.75, "y": 3.25}, + {"x": 11.75, "y": 3.25}, + {"x": 12.75, "y": 3.25, "w": 2.25}, + + {"x": 0, "y": 4.25, "w": 2.25}, + {"x": 2.25, "y": 4.25}, + {"x": 3.25, "y": 4.25}, + {"x": 4.25, "y": 4.25}, + {"x": 5.25, "y": 4.25}, + {"x": 6.25, "y": 4.25}, + {"x": 7.25, "y": 4.25}, + {"x": 8.25, "y": 4.25}, + {"x": 9.25, "y": 4.25}, + {"x": 10.25, "y": 4.25}, + {"x": 11.25, "y": 4.25}, + {"x": 12.25, "y": 4.25, "w": 2.75}, + + {"x": 16.25, "y": 4.25}, + + {"x": 0, "y": 5.25, "w": 1.25}, + {"x": 1.25, "y": 5.25, "w": 1.25}, + {"x": 2.5, "y": 5.25, "w": 1.25}, + {"x": 3.75, "y": 5.25, "w": 6.25}, + {"x": 10, "y": 5.25, "w": 1.25}, + {"x": 11.25, "y": 5.25, "w": 1.25}, + {"x": 12.5, "y": 5.25, "w": 1.25}, + {"x": 13.75, "y": 5.25, "w": 1.25}, + + {"x": 15.25, "y": 5.25}, + {"x": 16.25, "y": 5.25}, + {"x": 17.25, "y": 5.25} ] }, "LAYOUT_iso": { "layout": [ - {"x":0, "y":0.5}, - {"x":1.25, "y":0.5}, - {"x":2.25, "y":0.5}, - {"x":3.25, "y":0.5}, - {"x":4.25, "y":0.5}, - {"x":5.5, "y":0.5}, - {"x":6.5, "y":0.5}, - {"x":7.5, "y":0.5}, - {"x":8.5, "y":0.5}, - {"x":9.75, "y":0.5}, - {"x":10.75, "y":0.5}, - {"x":11.75, "y":0.5}, - {"x":12.75, "y":0.5}, - {"x":14, "y":0.5}, - {"x":15.25, "y":0.5}, - {"x":16.25, "y":0.5}, - {"x":17.25, "y":0.5}, - - {"x":0, "y":1.75}, - {"x":1, "y":1.75}, - {"x":2, "y":1.75}, - {"x":3, "y":1.75}, - {"x":4, "y":1.75}, - {"x":5, "y":1.75}, - {"x":6, "y":1.75}, - {"x":7, "y":1.75}, - {"x":8, "y":1.75}, - {"x":9, "y":1.75}, - {"x":10, "y":1.75}, - {"x":11, "y":1.75}, - {"x":12, "y":1.75}, - {"x":13, "y":1.75, "w":2}, - {"x":15.25, "y":1.75}, - {"x":16.25, "y":1.75}, - {"x":17.25, "y":1.75}, - - {"x":0, "y":2.75, "w":1.5}, - {"x":1.5, "y":2.75}, - {"x":2.5, "y":2.75}, - {"x":3.5, "y":2.75}, - {"x":4.5, "y":2.75}, - {"x":5.5, "y":2.75}, - {"x":6.5, "y":2.75}, - {"x":7.5, "y":2.75}, - {"x":8.5, "y":2.75}, - {"x":9.5, "y":2.75}, - {"x":10.5, "y":2.75}, - {"x":11.5, "y":2.75}, - {"x":12.5, "y":2.75}, - {"x":15.25, "y":2.75}, - {"x":16.25, "y":2.75}, - {"x":17.25, "y":2.75}, - - {"x":0, "y":3.75, "w":1.75}, - {"x":1.75, "y":3.75}, - {"x":2.75, "y":3.75}, - {"x":3.75, "y":3.75}, - {"x":4.75, "y":3.75}, - {"x":5.75, "y":3.75}, - {"x":6.75, "y":3.75}, - {"x":7.75, "y":3.75}, - {"x":8.75, "y":3.75}, - {"x":9.75, "y":3.75}, - {"x":10.75, "y":3.75}, - {"x":11.75, "y":3.75}, - {"x":12.75, "y":3.75}, - {"x":13.75, "y":2.75, "w":1.25, "h":2}, - - {"x":0, "y":4.75, "w":1.25}, - {"x":1.25, "y":4.75}, - {"x":2.25, "y":4.75}, - {"x":3.25, "y":4.75}, - {"x":4.25, "y":4.75}, - {"x":5.25, "y":4.75}, - {"x":6.25, "y":4.75}, - {"x":7.25, "y":4.75}, - {"x":8.25, "y":4.75}, - {"x":9.25, "y":4.75}, - {"x":10.25, "y":4.75}, - {"x":11.25, "y":4.75}, - {"x":12.25, "y":4.75, "w":2.75}, - {"x":16.25, "y":4.75}, - - {"x":0, "y":5.75, "w":1.25}, - {"x":1.25, "y":5.75, "w":1.25}, - {"x":2.5, "y":5.75, "w":1.25}, - {"x":3.75, "y":5.75, "w":6.25}, - {"x":10, "y":5.75, "w":1.25}, - {"x":11.25, "y":5.75, "w":1.25}, - {"x":12.5, "y":5.75, "w":1.25}, - {"x":13.75, "y":5.75, "w":1.25}, - {"x":15.25, "y":5.75}, - {"x":16.25, "y":5.75}, - {"x":17.25, "y":5.75} + {"x": 0, "y": 0}, + + {"x": 1.25, "y": 0}, + {"x": 2.25, "y": 0}, + {"x": 3.25, "y": 0}, + {"x": 4.25, "y": 0}, + + {"x": 5.5, "y": 0}, + {"x": 6.5, "y": 0}, + {"x": 7.5, "y": 0}, + {"x": 8.5, "y": 0}, + + {"x": 9.75, "y": 0}, + {"x": 10.75, "y": 0}, + {"x": 11.75, "y": 0}, + {"x": 12.75, "y": 0}, + + {"x": 14, "y": 0}, + + {"x": 15.25, "y": 0}, + {"x": 16.25, "y": 0}, + {"x": 17.25, "y": 0}, + + {"x": 0, "y": 1.25}, + {"x": 1, "y": 1.25}, + {"x": 2, "y": 1.25}, + {"x": 3, "y": 1.25}, + {"x": 4, "y": 1.25}, + {"x": 5, "y": 1.25}, + {"x": 6, "y": 1.25}, + {"x": 7, "y": 1.25}, + {"x": 8, "y": 1.25}, + {"x": 9, "y": 1.25}, + {"x": 10, "y": 1.25}, + {"x": 11, "y": 1.25}, + {"x": 12, "y": 1.25}, + {"x": 13, "y": 1.25, "w": 2}, + + {"x": 15.25, "y": 1.25}, + {"x": 16.25, "y": 1.25}, + {"x": 17.25, "y": 1.25}, + + {"x": 0, "y": 2.25, "w": 1.5}, + {"x": 1.5, "y": 2.25}, + {"x": 2.5, "y": 2.25}, + {"x": 3.5, "y": 2.25}, + {"x": 4.5, "y": 2.25}, + {"x": 5.5, "y": 2.25}, + {"x": 6.5, "y": 2.25}, + {"x": 7.5, "y": 2.25}, + {"x": 8.5, "y": 2.25}, + {"x": 9.5, "y": 2.25}, + {"x": 10.5, "y": 2.25}, + {"x": 11.5, "y": 2.25}, + {"x": 12.5, "y": 2.25}, + + {"x": 15.25, "y": 2.25}, + {"x": 16.25, "y": 2.25}, + {"x": 17.25, "y": 2.25}, + + {"x": 0, "y": 3.25, "w": 1.75}, + {"x": 1.75, "y": 3.25}, + {"x": 2.75, "y": 3.25}, + {"x": 3.75, "y": 3.25}, + {"x": 4.75, "y": 3.25}, + {"x": 5.75, "y": 3.25}, + {"x": 6.75, "y": 3.25}, + {"x": 7.75, "y": 3.25}, + {"x": 8.75, "y": 3.25}, + {"x": 9.75, "y": 3.25}, + {"x": 10.75, "y": 3.25}, + {"x": 11.75, "y": 3.25}, + {"x": 12.75, "y": 3.25}, + {"x": 13.75, "y": 2.25, "w": 1.25, "h": 2}, + + {"x": 0, "y": 4.25, "w": 1.25}, + {"x": 1.25, "y": 4.25}, + {"x": 2.25, "y": 4.25}, + {"x": 3.25, "y": 4.25}, + {"x": 4.25, "y": 4.25}, + {"x": 5.25, "y": 4.25}, + {"x": 6.25, "y": 4.25}, + {"x": 7.25, "y": 4.25}, + {"x": 8.25, "y": 4.25}, + {"x": 9.25, "y": 4.25}, + {"x": 10.25, "y": 4.25}, + {"x": 11.25, "y": 4.25}, + {"x": 12.25, "y": 4.25, "w": 2.75}, + + {"x": 16.25, "y": 4.25}, + + {"x": 0, "y": 5.25, "w": 1.25}, + {"x": 1.25, "y": 5.25, "w": 1.25}, + {"x": 2.5, "y": 5.25, "w": 1.25}, + {"x": 3.75, "y": 5.25, "w": 6.25}, + {"x": 10, "y": 5.25, "w": 1.25}, + {"x": 11.25, "y": 5.25, "w": 1.25}, + {"x": 12.5, "y": 5.25, "w": 1.25}, + {"x": 13.75, "y": 5.25, "w": 1.25}, + + {"x": 15.25, "y": 5.25}, + {"x": 16.25, "y": 5.25}, + {"x": 17.25, "y": 5.25} ] }, "LAYOUT_jis": { "layout": [ - {"x":0, "y":0}, - {"x":1.25, "y":0}, - {"x":2.25, "y":0}, - {"x":3.25, "y":0}, - {"x":4.25, "y":0}, - {"x":5.5, "y":0}, - {"x":6.5, "y":0}, - {"x":7.5, "y":0}, - {"x":8.5, "y":0}, - {"x":9.75, "y":0}, - {"x":10.75, "y":0}, - {"x":11.75, "y":0}, - {"x":12.75, "y":0}, - {"x":14, "y":0}, - {"x":15.25, "y":0}, - {"x":16.25, "y":0}, - {"x":17.25, "y":0}, - - {"x":0, "y":1.25}, - {"x":1, "y":1.25}, - {"x":2, "y":1.25}, - {"x":3, "y":1.25}, - {"x":4, "y":1.25}, - {"x":5, "y":1.25}, - {"x":6, "y":1.25}, - {"x":7, "y":1.25}, - {"x":8, "y":1.25}, - {"x":9, "y":1.25}, - {"x":10, "y":1.25}, - {"x":11, "y":1.25}, - {"x":12, "y":1.25}, - {"x":13, "y":1.25}, - {"x":14, "y":1.25}, - {"x":15.25, "y":1.25}, - {"x":16.25, "y":1.25}, - {"x":17.25, "y":1.25}, - - {"x":0, "y":2.25, "w":1.5}, - {"x":1.5, "y":2.25}, - {"x":2.5, "y":2.25}, - {"x":3.5, "y":2.25}, - {"x":4.5, "y":2.25}, - {"x":5.5, "y":2.25}, - {"x":6.5, "y":2.25}, - {"x":7.5, "y":2.25}, - {"x":8.5, "y":2.25}, - {"x":9.5, "y":2.25}, - {"x":10.5, "y":2.25}, - {"x":11.5, "y":2.25}, - {"x":12.5, "y":2.25}, - {"x":15.25, "y":2.25}, - {"x":16.25, "y":2.25}, - {"x":17.25, "y":2.25}, - - {"x":0, "y":3.25, "w":1.75}, - {"x":1.75, "y":3.25}, - {"x":2.75, "y":3.25}, - {"x":3.75, "y":3.25}, - {"x":4.75, "y":3.25}, - {"x":5.75, "y":3.25}, - {"x":6.75, "y":3.25}, - {"x":7.75, "y":3.25}, - {"x":8.75, "y":3.25}, - {"x":9.75, "y":3.25}, - {"x":10.75, "y":3.25}, - {"x":11.75, "y":3.25}, - {"x":12.75, "y":3.25}, - {"x":13.75, "y":2.25, "w":1.25, "h":2}, - - {"x":0, "y":4.25, "w":2.25}, - {"x":2.25, "y":4.25}, - {"x":3.25, "y":4.25}, - {"x":4.25, "y":4.25}, - {"x":5.25, "y":4.25}, - {"x":6.25, "y":4.25}, - {"x":7.25, "y":4.25}, - {"x":8.25, "y":4.25}, - {"x":9.25, "y":4.25}, - {"x":10.25, "y":4.25}, - {"x":11.25, "y":4.25}, - {"x":12.25, "y":4.25}, - {"x":13.25, "y":4.25, "w":1.75}, - {"x":16.25, "y":4.25}, - - {"x":0, "y":5.25, "w":1.5}, - {"x":1.5, "y":5.25}, - {"x":2.5, "y":5.25, "w":1.5}, - {"x":4, "y":5.25}, - {"x":5, "y":5.25}, - {"x":6, "y":5.25, "w":3}, - {"x":9, "y":5.25}, - {"x":10, "y":5.25}, - {"x":11, "y":5.25, "w":1.5}, - {"x":12.5, "y":5.25}, - {"x":13.5, "y":5.25, "w":1.5}, - {"x":15.25, "y":5.25}, - {"x":16.25, "y":5.25}, - {"x":17.25, "y":5.25} + {"x": 0, "y": 0}, + {"x": 1.25, "y": 0}, + {"x": 2.25, "y": 0}, + {"x": 3.25, "y": 0}, + {"x": 4.25, "y": 0}, + {"x": 5.5, "y": 0}, + {"x": 6.5, "y": 0}, + {"x": 7.5, "y": 0}, + {"x": 8.5, "y": 0}, + {"x": 9.75, "y": 0}, + {"x": 10.75, "y": 0}, + {"x": 11.75, "y": 0}, + {"x": 12.75, "y": 0}, + {"x": 14, "y": 0}, + {"x": 15.25, "y": 0}, + {"x": 16.25, "y": 0}, + {"x": 17.25, "y": 0}, + + {"x": 0, "y": 1.25}, + {"x": 1, "y": 1.25}, + {"x": 2, "y": 1.25}, + {"x": 3, "y": 1.25}, + {"x": 4, "y": 1.25}, + {"x": 5, "y": 1.25}, + {"x": 6, "y": 1.25}, + {"x": 7, "y": 1.25}, + {"x": 8, "y": 1.25}, + {"x": 9, "y": 1.25}, + {"x": 10, "y": 1.25}, + {"x": 11, "y": 1.25}, + {"x": 12, "y": 1.25}, + {"x": 13, "y": 1.25}, + {"x": 14, "y": 1.25}, + {"x": 15.25, "y": 1.25}, + {"x": 16.25, "y": 1.25}, + {"x": 17.25, "y": 1.25}, + + {"x": 0, "y": 2.25, "w": 1.5}, + {"x": 1.5, "y": 2.25}, + {"x": 2.5, "y": 2.25}, + {"x": 3.5, "y": 2.25}, + {"x": 4.5, "y": 2.25}, + {"x": 5.5, "y": 2.25}, + {"x": 6.5, "y": 2.25}, + {"x": 7.5, "y": 2.25}, + {"x": 8.5, "y": 2.25}, + {"x": 9.5, "y": 2.25}, + {"x": 10.5, "y": 2.25}, + {"x": 11.5, "y": 2.25}, + {"x": 12.5, "y": 2.25}, + {"x": 15.25, "y": 2.25}, + {"x": 16.25, "y": 2.25}, + {"x": 17.25, "y": 2.25}, + + {"x": 0, "y": 3.25, "w": 1.75}, + {"x": 1.75, "y": 3.25}, + {"x": 2.75, "y": 3.25}, + {"x": 3.75, "y": 3.25}, + {"x": 4.75, "y": 3.25}, + {"x": 5.75, "y": 3.25}, + {"x": 6.75, "y": 3.25}, + {"x": 7.75, "y": 3.25}, + {"x": 8.75, "y": 3.25}, + {"x": 9.75, "y": 3.25}, + {"x": 10.75, "y": 3.25}, + {"x": 11.75, "y": 3.25}, + {"x": 12.75, "y": 3.25}, + {"x": 13.75, "y": 2.25, "w": 1.25, "h": 2}, + + {"x": 0, "y": 4.25, "w": 2.25}, + {"x": 2.25, "y": 4.25}, + {"x": 3.25, "y": 4.25}, + {"x": 4.25, "y": 4.25}, + {"x": 5.25, "y": 4.25}, + {"x": 6.25, "y": 4.25}, + {"x": 7.25, "y": 4.25}, + {"x": 8.25, "y": 4.25}, + {"x": 9.25, "y": 4.25}, + {"x": 10.25, "y": 4.25}, + {"x": 11.25, "y": 4.25}, + {"x": 12.25, "y": 4.25}, + {"x": 13.25, "y": 4.25, "w": 1.75}, + + {"x": 16.25, "y": 4.25}, + + {"x": 0, "y": 5.25, "w": 1.5}, + {"x": 1.5, "y": 5.25}, + {"x": 2.5, "y": 5.25, "w": 1.5}, + {"x": 4, "y": 5.25}, + {"x": 5, "y": 5.25}, + {"x": 6, "y": 5.25, "w": 3}, + {"x": 9, "y": 5.25}, + {"x": 10, "y": 5.25}, + {"x": 11, "y": 5.25, "w": 1.5}, + {"x": 12.5, "y": 5.25}, + {"x": 13.5, "y": 5.25, "w": 1.5}, + + {"x": 15.25, "y": 5.25}, + {"x": 16.25, "y": 5.25}, + {"x": 17.25, "y": 5.25} ] }, "LAYOUT_all": { "layout": [ - {"x":0, "y":0.5}, - {"x":1.25, "y":0.5}, - {"x":2.25, "y":0.5}, - {"x":3.25, "y":0.5}, - {"x":4.25, "y":0.5}, - {"x":5.5, "y":0.5}, - {"x":6.5, "y":0.5}, - {"x":7.5, "y":0.5}, - {"x":8.5, "y":0.5}, - {"x":9.75, "y":0.5}, - {"x":10.75, "y":0.5}, - {"x":11.75, "y":0.5}, - {"x":12.75, "y":0.5}, - {"x":14, "y":0.5}, - {"x":15.25, "y":0.5}, - {"x":16.25, "y":0.5}, - {"x":17.25, "y":0.5}, - - {"x":0, "y":1.75}, - {"x":1, "y":1.75}, - {"x":2, "y":1.75}, - {"x":3, "y":1.75}, - {"x":4, "y":1.75}, - {"x":5, "y":1.75}, - {"x":6, "y":1.75}, - {"x":7, "y":1.75}, - {"x":8, "y":1.75}, - {"x":9, "y":1.75}, - {"x":10, "y":1.75}, - {"x":11, "y":1.75}, - {"x":12, "y":1.75}, - {"x":13, "y":1.75}, - {"x":14, "y":1.75}, - {"x":15.25, "y":1.75}, - {"x":16.25, "y":1.75}, - {"x":17.25, "y":1.75}, - - {"x":0, "y":2.75, "w":1.5}, - {"x":1.5, "y":2.75}, - {"x":2.5, "y":2.75}, - {"x":3.5, "y":2.75}, - {"x":4.5, "y":2.75}, - {"x":5.5, "y":2.75}, - {"x":6.5, "y":2.75}, - {"x":7.5, "y":2.75}, - {"x":8.5, "y":2.75}, - {"x":9.5, "y":2.75}, - {"x":10.5, "y":2.75}, - {"x":11.5, "y":2.75}, - {"x":12.5, "y":2.75}, - {"x":13.5, "y":2.75, "w":1.5}, - {"x":15.25, "y":2.75}, - {"x":16.25, "y":2.75}, - {"x":17.25, "y":2.75}, - - {"x":0, "y":3.75, "w":1.75}, - {"x":1.75, "y":3.75}, - {"x":2.75, "y":3.75}, - {"x":3.75, "y":3.75}, - {"x":4.75, "y":3.75}, - {"x":5.75, "y":3.75}, - {"x":6.75, "y":3.75}, - {"x":7.75, "y":3.75}, - {"x":8.75, "y":3.75}, - {"x":9.75, "y":3.75}, - {"x":10.75, "y":3.75}, - {"x":11.75, "y":3.75}, - {"x":12.75, "y":3.75, "w":2.25}, - - {"x":0, "y":4.75, "w":1.25}, - {"x":1.25, "y":4.75}, - {"x":2.25, "y":4.75}, - {"x":3.25, "y":4.75}, - {"x":4.25, "y":4.75}, - {"x":5.25, "y":4.75}, - {"x":6.25, "y":4.75}, - {"x":7.25, "y":4.75}, - {"x":8.25, "y":4.75}, - {"x":9.25, "y":4.75}, - {"x":10.25, "y":4.75}, - {"x":11.25, "y":4.75}, - {"x":12.25, "y":4.75, "w":1.75}, - {"x":14, "y":4.75}, - {"x":16.25, "y":4.75}, - - {"x":0, "y":5.75, "w":1.25}, - {"x":1.25, "y":5.75, "w":1.25}, - {"x":2.5, "y":5.75, "w":1.25}, - {"x":3.75, "y":5.75, "w":2.5}, - {"x":6.25, "y":5.75}, - {"x":7.25, "y":5.75, "w":2.75}, - {"x":10, "y":5.75, "w":1.25}, - {"x":11.25, "y":5.75, "w":1.25}, - {"x":12.5, "y":5.75, "w":1.25}, - {"x":13.75, "y":5.75, "w":1.25}, - {"x":15.25, "y":5.75}, - {"x":16.25, "y":5.75}, - {"x":17.25, "y":5.75}, - - {"x":18.5, "y":0}, - {"x":18.5, "y":1} + {"x": 0, "y": 0.5}, + + {"x": 1.25, "y": 0.5}, + {"x": 2.25, "y": 0.5}, + {"x": 3.25, "y": 0.5}, + {"x": 4.25, "y": 0.5}, + + {"x": 5.5, "y": 0.5}, + {"x": 6.5, "y": 0.5}, + {"x": 7.5, "y": 0.5}, + {"x": 8.5, "y": 0.5}, + + {"x": 9.75, "y": 0.5}, + {"x": 10.75, "y": 0.5}, + {"x": 11.75, "y": 0.5}, + {"x": 12.75, "y": 0.5}, + + {"x": 14, "y": 0.5}, + + {"x": 15.25, "y": 0.5}, + {"x": 16.25, "y": 0.5}, + {"x": 17.25, "y": 0.5}, + + {"x": 0, "y": 1.75}, + {"x": 1, "y": 1.75}, + {"x": 2, "y": 1.75}, + {"x": 3, "y": 1.75}, + {"x": 4, "y": 1.75}, + {"x": 5, "y": 1.75}, + {"x": 6, "y": 1.75}, + {"x": 7, "y": 1.75}, + {"x": 8, "y": 1.75}, + {"x": 9, "y": 1.75}, + {"x": 10, "y": 1.75}, + {"x": 11, "y": 1.75}, + {"x": 12, "y": 1.75}, + {"x": 13, "y": 1.75}, + {"x": 14, "y": 1.75}, + + {"x": 15.25, "y": 1.75}, + {"x": 16.25, "y": 1.75}, + {"x": 17.25, "y": 1.75}, + + {"x": 0, "y": 2.75, "w": 1.5}, + {"x": 1.5, "y": 2.75}, + {"x": 2.5, "y": 2.75}, + {"x": 3.5, "y": 2.75}, + {"x": 4.5, "y": 2.75}, + {"x": 5.5, "y": 2.75}, + {"x": 6.5, "y": 2.75}, + {"x": 7.5, "y": 2.75}, + {"x": 8.5, "y": 2.75}, + {"x": 9.5, "y": 2.75}, + {"x": 10.5, "y": 2.75}, + {"x": 11.5, "y": 2.75}, + {"x": 12.5, "y": 2.75}, + {"x": 13.5, "y": 2.75, "w": 1.5}, + + {"x": 15.25, "y": 2.75}, + {"x": 16.25, "y": 2.75}, + {"x": 17.25, "y": 2.75}, + + {"x": 0, "y": 3.75, "w": 1.75}, + {"x": 1.75, "y": 3.75}, + {"x": 2.75, "y": 3.75}, + {"x": 3.75, "y": 3.75}, + {"x": 4.75, "y": 3.75}, + {"x": 5.75, "y": 3.75}, + {"x": 6.75, "y": 3.75}, + {"x": 7.75, "y": 3.75}, + {"x": 8.75, "y": 3.75}, + {"x": 9.75, "y": 3.75}, + {"x": 10.75, "y": 3.75}, + {"x": 11.75, "y": 3.75}, + {"x": 12.75, "y": 3.75, "w": 2.25}, + + {"x": 0, "y": 4.75, "w": 1.25}, + {"x": 1.25, "y": 4.75}, + {"x": 2.25, "y": 4.75}, + {"x": 3.25, "y": 4.75}, + {"x": 4.25, "y": 4.75}, + {"x": 5.25, "y": 4.75}, + {"x": 6.25, "y": 4.75}, + {"x": 7.25, "y": 4.75}, + {"x": 8.25, "y": 4.75}, + {"x": 9.25, "y": 4.75}, + {"x": 10.25, "y": 4.75}, + {"x": 11.25, "y": 4.75}, + {"x": 12.25, "y": 4.75, "w": 1.75}, + {"x": 14, "y": 4.75}, + + {"x": 16.25, "y": 4.75}, + + {"x": 0, "y": 5.75, "w": 1.25}, + {"x": 1.25, "y": 5.75, "w": 1.25}, + {"x": 2.5, "y": 5.75, "w": 1.25}, + {"x": 3.75, "y": 5.75}, + {"x": 4.75, "y": 5.75, "w": 1.5}, + {"x": 6.25, "y": 5.75}, + {"x": 7.25, "y": 5.75, "w": 2.75}, + {"x": 10, "y": 5.75, "w": 1.25}, + {"x": 11.25, "y": 5.75, "w": 1.25}, + {"x": 12.5, "y": 5.75, "w": 1.25}, + {"x": 13.75, "y": 5.75, "w": 1.25}, + + {"x": 15.25, "y": 5.75}, + {"x": 16.25, "y": 5.75}, + {"x": 17.25, "y": 5.75}, + + {"x": 18.5, "y": 0}, + {"x": 18.5, "y": 1} ] } } diff --git a/keyboards/ramonimbao/squishytkl/keymaps/default/keymap.c b/keyboards/ramonimbao/squishytkl/keymaps/default/keymap.c index c55c4aed68a0..4abf503ddf1f 100644 --- a/keyboards/ramonimbao/squishytkl/keymaps/default/keymap.c +++ b/keyboards/ramonimbao/squishytkl/keymaps/default/keymap.c @@ -26,10 +26,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -void encoder_update_user(uint8_t index, bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (clockwise) { tap_code(KC_VOLU); } else { tap_code(KC_VOLD); } + return true; } diff --git a/keyboards/ramonimbao/squishytkl/keymaps/iso/keymap.c b/keyboards/ramonimbao/squishytkl/keymaps/iso/keymap.c index 4caf9e8b5b3b..cfa6240f54ff 100644 --- a/keyboards/ramonimbao/squishytkl/keymaps/iso/keymap.c +++ b/keyboards/ramonimbao/squishytkl/keymaps/iso/keymap.c @@ -26,10 +26,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -void encoder_update_user(uint8_t index, bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (clockwise) { tap_code(KC_VOLU); } else { tap_code(KC_VOLD); } + return true; } diff --git a/keyboards/ramonimbao/squishytkl/keymaps/jis/keymap.c b/keyboards/ramonimbao/squishytkl/keymaps/jis/keymap.c index dc0d1d5bad38..d8debc9cc04a 100644 --- a/keyboards/ramonimbao/squishytkl/keymaps/jis/keymap.c +++ b/keyboards/ramonimbao/squishytkl/keymaps/jis/keymap.c @@ -28,10 +28,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -void encoder_update_user(uint8_t index, bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (clockwise) { tap_code(KC_VOLU); } else { tap_code(KC_VOLD); } + return true; } diff --git a/keyboards/ramonimbao/squishytkl/keymaps/via/keymap.c b/keyboards/ramonimbao/squishytkl/keymaps/via/keymap.c index fa7214149ec4..f671d45c58e9 100644 --- a/keyboards/ramonimbao/squishytkl/keymaps/via/keymap.c +++ b/keyboards/ramonimbao/squishytkl/keymaps/via/keymap.c @@ -51,7 +51,7 @@ void matrix_scan_user(void) { } } -void encoder_update_user(uint8_t index, bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (clockwise) { encoder_cw.pressed = true; encoder_cw.time = (timer_read() | 1); @@ -61,4 +61,5 @@ void encoder_update_user(uint8_t index, bool clockwise) { encoder_ccw.time = (timer_read() | 1); action_exec(encoder_ccw); } + return true; } diff --git a/keyboards/ramonimbao/squishytkl/rules.mk b/keyboards/ramonimbao/squishytkl/rules.mk index df02200ecebb..75e11160dee4 100644 --- a/keyboards/ramonimbao/squishytkl/rules.mk +++ b/keyboards/ramonimbao/squishytkl/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = stm32duino # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes # Enable rotary encoder fuctionality diff --git a/keyboards/ramonimbao/squishytkl/squishytkl.h b/keyboards/ramonimbao/squishytkl/squishytkl.h index 53d91c27ed85..204d497a577d 100644 --- a/keyboards/ramonimbao/squishytkl/squishytkl.h +++ b/keyboards/ramonimbao/squishytkl/squishytkl.h @@ -30,106 +30,98 @@ #define ___ KC_NO #define LAYOUT_ansi( \ - k00, k01, k02, k03, k04, k10, k11, k12, k13, k20, k21, k22, k23, k24, k3k, k3l, k3m, \ - k85, k86, k87, k88, k89, k8a, k8b, k8c, k8d, k8e, k8f, k8g, k8h, k8i, k4k, k4l, k4m, \ - k95, k96, k97, k98, k99, k9a, k9b, k9c, k9d, k9e, k9f, k9g, k9h, k9j, k5k, k5l, k5m, \ - ka5, ka6, ka7, ka8, ka9, kaa, kab, kac, kad, kae, kaf, kag, kai, \ - kb5, kb7, kb8, kb9, kba, kbb, kbc, kbd, kbe, kbf, kbg, kbi, k6l, \ - kc5, kc6, kc7, kcd, kcf, kcg, kch, kci, k7k, k7l, k7m \ + k00, k01, k02, k03, k04, k10, k11, k12, k13, k20, k21, k22, k23, k24, k3K, k3L, k3M, \ + k85, k86, k87, k88, k89, k8A, k8B, k8C, k8D, k8E, k8F, k8G, k8H, k8I, k4K, k4L, k4M, \ + k95, k96, k97, k98, k99, k9A, k9B, k9C, k9D, k9E, k9F, k9G, k9H, k9J, k5K, k5L, k5M, \ + kA5, kA6, kA7, kA8, kA9, kAA, kAB, kAC, kAD, kAE, kAF, kAG, kAI, \ + kB5, kB7, kB8, kB9, kBA, kBB, kBC, kBD, kBE, kBF, kBG, kBI, k6O, \ + kC5, kC6, kC7, kCD, kCF, kCG, kCI, kCJ, k7N, k7O, k7P \ ) { \ - /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 */ \ - /* 0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p */ \ - /* 0 | 0 */ { k00, k01, k02, k03, k04, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \ - /* 1 | 1 */ { k10, k11, k12, k13, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \ - /* 2 | 2 */ { k20, k21, k22, k23, k24, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \ - /* 3 | 3 */ { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k3k, k3l, k3m, ___, ___, ___ }, \ - /* 4 | 4 */ { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k4k, k4l, k4m, ___, ___, ___ }, \ - /* 5 | 5 */ { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k5k, k5l, k5m, ___, ___, ___ }, \ - /* 6 | 6 */ { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k6l, ___ }, \ - /* 7 | 7 */ { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k7k, k7l, k7m }, \ - /* 8 | 8 */ { ___, ___, ___, ___, ___, k85, k86, k87, k88, k89, k8a, k8b, k8c, k8d, k8e, k8f, k8g, k8h, k8i, ___, ___, ___, ___, ___, ___, ___ }, \ - /* 9 | 9 */ { ___, ___, ___, ___, ___, k95, k96, k97, k98, k99, k9a, k9b, k9c, k9d, k9e, k9f, k9g, k9h, ___, k9j, ___, ___, ___, ___, ___, ___ }, \ - /* 10 | a */ { ___, ___, ___, ___, ___, ka5, ka6, ka7, ka8, ka9, kaa, kab, kac, kad, kae, kaf, kag, ___, kai, ___, ___, ___, ___, ___, ___, ___ }, \ - /* 11 | b */ { ___, ___, ___, ___, ___, kb5, ___, kb7, kb8, kb9, kba, kbb, kbc, kbd, kbe, kbf, kbg, ___, kbi, ___, ___, ___, ___, ___, ___, ___ }, \ - /* 12 | c */ { ___, ___, ___, ___, ___, kc5, kc6, kc7, ___, ___, ___, ___, ___, kcd, ___, kcf, kcg, ___, kch, kci, ___, ___, ___, ___, ___, ___ }, \ - /* 13 | c */ { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \ + { k00, k01, k02, k03, k04, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \ + { k10, k11, k12, k13, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \ + { k20, k21, k22, k23, k24, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \ + { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k3K, k3L, k3M, ___, ___, ___ }, \ + { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k4K, k4L, k4M, ___, ___, ___ }, \ + { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k5K, k5L, k5M, ___, ___, ___ }, \ + { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k6O, ___ }, \ + { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k7N, k7O, k7P }, \ + { ___, ___, ___, ___, ___, k85, k86, k87, k88, k89, k8A, k8B, k8C, k8D, k8E, k8F, k8G, k8H, k8I, ___, ___, ___, ___, ___, ___, ___ }, \ + { ___, ___, ___, ___, ___, k95, k96, k97, k98, k99, k9A, k9B, k9C, k9D, k9E, k9F, k9G, k9H, ___, k9J, ___, ___, ___, ___, ___, ___ }, \ + { ___, ___, ___, ___, ___, kA5, kA6, kA7, kA8, kA9, kAA, kAB, kAC, kAD, kAE, kAF, kAG, ___, kAI, ___, ___, ___, ___, ___, ___, ___ }, \ + { ___, ___, ___, ___, ___, kB5, ___, kB7, kB8, kB9, kBA, kBB, kBC, kBD, kBE, kBF, kBG, ___, kBI, ___, ___, ___, ___, ___, ___, ___ }, \ + { ___, ___, ___, ___, ___, kC5, kC6, kC7, ___, ___, ___, ___, ___, kCD, ___, kCF, kCG, ___, kCI, kCJ, ___, ___, ___, ___, ___, ___ }, \ + { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ } \ } #define LAYOUT_iso( \ - k00, k01, k02, k03, k04, k10, k11, k12, k13, k20, k21, k22, k23, k24, k3k, k3l, k3m, \ - k85, k86, k87, k88, k89, k8a, k8b, k8c, k8d, k8e, k8f, k8g, k8h, k8i, k4k, k4l, k4m, \ - k95, k96, k97, k98, k99, k9a, k9b, k9c, k9d, k9e, k9f, k9g, k9h, k5k, k5l, k5m, \ - ka5, ka6, ka7, ka8, ka9, kaa, kab, kac, kad, kae, kaf, kag, kai, k9j, \ - kb5, kb6, kb7, kb8, kb9, kba, kbb, kbc, kbd, kbe, kbf, kbg, kbi, k6l, \ - kc5, kc6, kc7, kcd, kcf, kcg, kch, kci, k7k, k7l, k7m \ + k00, k01, k02, k03, k04, k10, k11, k12, k13, k20, k21, k22, k23, k24, k3K, k3L, k3M, \ + k85, k86, k87, k88, k89, k8A, k8B, k8C, k8D, k8E, k8F, k8G, k8H, k8I, k4K, k4L, k4M, \ + k95, k96, k97, k98, k99, k9A, k9B, k9C, k9D, k9E, k9F, k9G, k9H, k5K, k5L, k5M, \ + kA5, kA6, kA7, kA8, kA9, kAA, kAB, kAC, kAD, kAE, kAF, kAG, kAI, k9J, \ + kB5, kB6, kB7, kB8, kB9, kBA, kBB, kBC, kBD, kBE, kBF, kBG, kBI, k6O, \ + kC5, kC6, kC7, kCD, kCF, kCG, kCI, kCJ, k7N, k7O, k7P \ ) { \ - /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 */ \ - /* 0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p */ \ - /* 0 | 0 */ { k00, k01, k02, k03, k04, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \ - /* 1 | 1 */ { k10, k11, k12, k13, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \ - /* 2 | 2 */ { k20, k21, k22, k23, k24, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \ - /* 3 | 3 */ { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k3k, k3l, k3m, ___, ___, ___ }, \ - /* 4 | 4 */ { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k4k, k4l, k4m, ___, ___, ___ }, \ - /* 5 | 5 */ { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k5k, k5l, k5m, ___, ___, ___ }, \ - /* 6 | 6 */ { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k6l, ___ }, \ - /* 7 | 7 */ { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k7k, k7l, k7m }, \ - /* 8 | 8 */ { ___, ___, ___, ___, ___, k85, k86, k87, k88, k89, k8a, k8b, k8c, k8d, k8e, k8f, k8g, k8h, k8i, ___, ___, ___, ___, ___, ___, ___ }, \ - /* 9 | 9 */ { ___, ___, ___, ___, ___, k95, k96, k97, k98, k99, k9a, k9b, k9c, k9d, k9e, k9f, k9g, k9h, ___, k9j, ___, ___, ___, ___, ___, ___ }, \ - /* 10 | a */ { ___, ___, ___, ___, ___, ka5, ka6, ka7, ka8, ka9, kaa, kab, kac, kad, kae, kaf, kag, ___, kai, ___, ___, ___, ___, ___, ___, ___ }, \ - /* 11 | b */ { ___, ___, ___, ___, ___, kb5, kb6, kb7, kb8, kb9, kba, kbb, kbc, kbd, kbe, kbf, kbg, ___, kbi, ___, ___, ___, ___, ___, ___, ___ }, \ - /* 12 | c */ { ___, ___, ___, ___, ___, kc5, kc6, kc7, ___, ___, ___, ___, ___, kcd, ___, kcf, kcg, ___, kch, kci, ___, ___, ___, ___, ___, ___ }, \ - /* 13 | c */ { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \ + { k00, k01, k02, k03, k04, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \ + { k10, k11, k12, k13, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \ + { k20, k21, k22, k23, k24, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \ + { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k3K, k3L, k3M, ___, ___, ___ }, \ + { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k4K, k4L, k4M, ___, ___, ___ }, \ + { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k5K, k5L, k5M, ___, ___, ___ }, \ + { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k6O, ___ }, \ + { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k7N, k7O, k7P }, \ + { ___, ___, ___, ___, ___, k85, k86, k87, k88, k89, k8A, k8B, k8C, k8D, k8E, k8F, k8G, k8H, k8I, ___, ___, ___, ___, ___, ___, ___ }, \ + { ___, ___, ___, ___, ___, k95, k96, k97, k98, k99, k9A, k9B, k9C, k9D, k9E, k9F, k9G, k9H, ___, k9J, ___, ___, ___, ___, ___, ___ }, \ + { ___, ___, ___, ___, ___, kA5, kA6, kA7, kA8, kA9, kAA, kAB, kAC, kAD, kAE, kAF, kAG, ___, kAI, ___, ___, ___, ___, ___, ___, ___ }, \ + { ___, ___, ___, ___, ___, kB5, kB6, kB7, kB8, kB9, kBA, kBB, kBC, kBD, kBE, kBF, kBG, ___, kBI, ___, ___, ___, ___, ___, ___, ___ }, \ + { ___, ___, ___, ___, ___, kC5, kC6, kC7, ___, ___, ___, ___, ___, kCD, ___, kCF, kCG, ___, kCI, kCJ, ___, ___, ___, ___, ___, ___ }, \ + { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ } \ } #define LAYOUT_jis( \ - k00, k01, k02, k03, k04, k10, k11, k12, k13, k20, k21, k22, k23, k24, k3k, k3l, k3m, \ - k85, k86, k87, k88, k89, k8a, k8b, k8c, k8d, k8e, k8f, k8g, k8h, k8i, k8j, k4k, k4l, k4m, \ - k95, k96, k97, k98, k99, k9a, k9b, k9c, k9d, k9e, k9f, k9g, k9h, k5k, k5l, k5m, \ - ka5, ka6, ka7, ka8, ka9, kaa, kab, kac, kad, kae, kaf, kag, kai, k9j, \ - kb5, kb7, kb8, kb9, kba, kbb, kbc, kbd, kbe, kbf, kbg, kbi, kbj, k6l, \ - kc5, kc6, kc7, kc8, kc9, kcd, kce, kcf, kcg, kch, kci, k7k, k7l, k7m \ + k00, k01, k02, k03, k04, k10, k11, k12, k13, k20, k21, k22, k23, k24, k3K, k3L, k3M, \ + k85, k86, k87, k88, k89, k8A, k8B, k8C, k8D, k8E, k8F, k8G, k8H, k8I, k8J, k4K, k4L, k4M, \ + k95, k96, k97, k98, k99, k9A, k9B, k9C, k9D, k9E, k9F, k9G, k9H, k5K, k5L, k5M, \ + kA5, kA6, kA7, kA8, kA9, kAA, kAB, kAC, kAD, kAE, kAF, kAG, kAI, k9J, \ + kB5, kB7, kB8, kB9, kBA, kBB, kBC, kBD, kBE, kBF, kBG, kBI, kBJ, k6O, \ + kC5, kC6, kC7, kC8, kC9, kCD, kCE, kCF, kCG, kCI, kCJ, k7N, k7O, k7P \ ) { \ - /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 */ \ - /* 0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p */ \ - /* 0 | 0 */ { k00, k01, k02, k03, k04, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \ - /* 1 | 1 */ { k10, k11, k12, k13, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \ - /* 2 | 2 */ { k20, k21, k22, k23, k24, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \ - /* 3 | 3 */ { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k3k, k3l, k3m, ___, ___, ___ }, \ - /* 4 | 4 */ { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k4k, k4l, k4m, ___, ___, ___ }, \ - /* 5 | 5 */ { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k5k, k5l, k5m, ___, ___, ___ }, \ - /* 6 | 6 */ { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k6l, ___ }, \ - /* 7 | 7 */ { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k7k, k7l, k7m }, \ - /* 8 | 8 */ { ___, ___, ___, ___, ___, k85, k86, k87, k88, k89, k8a, k8b, k8c, k8d, k8e, k8f, k8g, k8h, k8i, k8j, ___, ___, ___, ___, ___, ___ }, \ - /* 9 | 9 */ { ___, ___, ___, ___, ___, k95, k96, k97, k98, k99, k9a, k9b, k9c, k9d, k9e, k9f, k9g, k9h, ___, k9j, ___, ___, ___, ___, ___, ___ }, \ - /* 10 | a */ { ___, ___, ___, ___, ___, ka5, ka6, ka7, ka8, ka9, kaa, kab, kac, kad, kae, kaf, kag, ___, kai, ___, ___, ___, ___, ___, ___, ___ }, \ - /* 11 | b */ { ___, ___, ___, ___, ___, kb5, ___, kb7, kb8, kb9, kba, kbb, kbc, kbd, kbe, kbf, kbg, ___, kbi, kbj, ___, ___, ___, ___, ___, ___ }, \ - /* 12 | c */ { ___, ___, ___, ___, ___, kc5, kc6, kc7, kc8, kc9, ___, ___, ___, kcd, kce, kcf, kcg, ___, kch, kci, ___, ___, ___, ___, ___, ___ }, \ - /* 13 | c */ { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \ + { k00, k01, k02, k03, k04, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \ + { k10, k11, k12, k13, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \ + { k20, k21, k22, k23, k24, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \ + { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k3K, k3L, k3M, ___, ___, ___ }, \ + { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k4K, k4L, k4M, ___, ___, ___ }, \ + { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k5K, k5L, k5M, ___, ___, ___ }, \ + { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k6O, ___ }, \ + { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k7N, k7O, k7P }, \ + { ___, ___, ___, ___, ___, k85, k86, k87, k88, k89, k8A, k8B, k8C, k8D, k8E, k8F, k8G, k8H, k8I, k8J, ___, ___, ___, ___, ___, ___ }, \ + { ___, ___, ___, ___, ___, k95, k96, k97, k98, k99, k9A, k9B, k9C, k9D, k9E, k9F, k9G, k9H, ___, k9J, ___, ___, ___, ___, ___, ___ }, \ + { ___, ___, ___, ___, ___, kA5, kA6, kA7, kA8, kA9, kAA, kAB, kAC, kAD, kAE, kAF, kAG, ___, kAI, ___, ___, ___, ___, ___, ___, ___ }, \ + { ___, ___, ___, ___, ___, kB5, ___, kB7, kB8, kB9, kBA, kBB, kBC, kBD, kBE, kBF, kBG, ___, kBI, kBJ, ___, ___, ___, ___, ___, ___ }, \ + { ___, ___, ___, ___, ___, kC5, kC6, kC7, kC8, kC9, ___, ___, ___, kCD, kCE, kCF, kCG, ___, kCI, kCJ, ___, ___, ___, ___, ___, ___ }, \ + { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ } \ } #define LAYOUT_all( \ - k00, k01, k02, k03, k04, k10, k11, k12, k13, k20, k21, k22, k23, k24, k3k, k3l, k3m, \ - k85, k86, k87, k88, k89, k8a, k8b, k8c, k8d, k8e, k8f, k8g, k8h, k8i, k8j, k4k, k4l, k4m, \ - k95, k96, k97, k98, k99, k9a, k9b, k9c, k9d, k9e, k9f, k9g, k9h, k9j, k5k, k5l, k5m, \ - ka5, ka6, ka7, ka8, ka9, kaa, kab, kac, kad, kae, kaf, kag, kai, \ - kb5, kb6, kb7, kb8, kb9, kba, kbb, kbc, kbd, kbe, kbf, kbg, kbi, kbj, k6l, \ - kc5, kc6, kc7, kc8, kc9, kcd, kce, kcf, kcg, kch, kci, k7k, k7l, k7m, \ - kc0, kc1 \ + k00, k01, k02, k03, k04, k10, k11, k12, k13, k20, k21, k22, k23, k24, k3K, k3L, k3M, \ + k85, k86, k87, k88, k89, k8A, k8B, k8C, k8D, k8E, k8F, k8G, k8H, k8I, k8J, k4K, k4L, k4M, \ + k95, k96, k97, k98, k99, k9A, k9B, k9C, k9D, k9E, k9F, k9G, k9H, k9J, k5K, k5L, k5M, \ + kA5, kA6, kA7, kA8, kA9, kAA, kAB, kAC, kAD, kAE, kAF, kAG, kAI, \ + kB5, kB6, kB7, kB8, kB9, kBA, kBB, kBC, kBD, kBE, kBF, kBG, kBI, kBJ, k6O, \ + kC5, kC6, kC7, kC8, kC9, kCD, kCE, kCF, kCG, kCI, kCJ, k7N, k7O, k7P, \ + kD0, kD1 \ ) { \ - /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 */ \ - /* 0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p */ \ - /* 0 | 0 */ { k00, k01, k02, k03, k04, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \ - /* 1 | 1 */ { k10, k11, k12, k13, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \ - /* 2 | 2 */ { k20, k21, k22, k23, k24, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \ - /* 3 | 3 */ { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k3k, k3l, k3m, ___, ___, ___ }, \ - /* 4 | 4 */ { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k4k, k4l, k4m, ___, ___, ___ }, \ - /* 5 | 5 */ { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k5k, k5l, k5m, ___, ___, ___ }, \ - /* 6 | 6 */ { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k6l, ___ }, \ - /* 7 | 7 */ { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k7k, k7l, k7m }, \ - /* 8 | 8 */ { ___, ___, ___, ___, ___, k85, k86, k87, k88, k89, k8a, k8b, k8c, k8d, k8e, k8f, k8g, k8h, k8i, k8j, ___, ___, ___, ___, ___, ___ }, \ - /* 9 | 9 */ { ___, ___, ___, ___, ___, k95, k96, k97, k98, k99, k9a, k9b, k9c, k9d, k9e, k9f, k9g, k9h, ___, k9j, ___, ___, ___, ___, ___, ___ }, \ - /* 10 | a */ { ___, ___, ___, ___, ___, ka5, ka6, ka7, ka8, ka9, kaa, kab, kac, kad, kae, kaf, kag, ___, kai, ___, ___, ___, ___, ___, ___, ___ }, \ - /* 11 | b */ { ___, ___, ___, ___, ___, kb5, kb6, kb7, kb8, kb9, kba, kbb, kbc, kbd, kbe, kbf, kbg, ___, kbi, kbj, ___, ___, ___, ___, ___, ___ }, \ - /* 12 | c */ { ___, ___, ___, ___, ___, kc5, kc6, kc7, kc8, kc9, ___, ___, ___, kcd, kce, kcf, kcg, ___, kch, kci, ___, ___, ___, ___, ___, ___ }, \ - /* 13 | c */ { kc0, kc1, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \ + { k00, k01, k02, k03, k04, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \ + { k10, k11, k12, k13, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \ + { k20, k21, k22, k23, k24, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \ + { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k3K, k3L, k3M, ___, ___, ___ }, \ + { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k4K, k4L, k4M, ___, ___, ___ }, \ + { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k5K, k5L, k5M, ___, ___, ___ }, \ + { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k6O, ___ }, \ + { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, k7N, k7O, k7P }, \ + { ___, ___, ___, ___, ___, k85, k86, k87, k88, k89, k8A, k8B, k8C, k8D, k8E, k8F, k8G, k8H, k8I, k8J, ___, ___, ___, ___, ___, ___ }, \ + { ___, ___, ___, ___, ___, k95, k96, k97, k98, k99, k9A, k9B, k9C, k9D, k9E, k9F, k9G, k9H, ___, k9J, ___, ___, ___, ___, ___, ___ }, \ + { ___, ___, ___, ___, ___, kA5, kA6, kA7, kA8, kA9, kAA, kAB, kAC, kAD, kAE, kAF, kAG, ___, kAI, ___, ___, ___, ___, ___, ___, ___ }, \ + { ___, ___, ___, ___, ___, kB5, kB6, kB7, kB8, kB9, kBA, kBB, kBC, kBD, kBE, kBF, kBG, ___, kBI, kBJ, ___, ___, ___, ___, ___, ___ }, \ + { ___, ___, ___, ___, ___, kC5, kC6, kC7, kC8, kC9, ___, ___, ___, kCD, kCE, kCF, kCG, ___, kCI, kCJ, ___, ___, ___, ___, ___, ___ }, \ + { kD0, kD1, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ } \ } diff --git a/keyboards/ramonimbao/tkl_ff/config.h b/keyboards/ramonimbao/tkl_ff/config.h new file mode 100644 index 000000000000..ec73601f84c9 --- /dev/null +++ b/keyboards/ramonimbao/tkl_ff/config.h @@ -0,0 +1,152 @@ +/* +Copyright 2021 Ramon Imbao + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xB16B +#define PRODUCT_ID 0x00FF +#define DEVICE_VER 0x0001 +#define MANUFACTURER Ramon Imbao +#define PRODUCT TKL FF + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 17 + +/* + * 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 { B2, B3, B7, D6, D3, D2 } +#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D4, D5, B0, B1, D1 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +//#define LED_NUM_LOCK_PIN B0 +//#define LED_CAPS_LOCK_PIN B1 +//#define LED_SCROLL_LOCK_PIN B2 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +//#define RGB_DI_PIN E2 +//#ifdef RGB_DI_PIN +//# define RGBLED_NUM 16 +//# define RGBLIGHT_HUE_STEP 8 +//# define RGBLIGHT_SAT_STEP 8 +//# define RGBLIGHT_VAL_STEP 8 +//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +//# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +//#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/ramonimbao/tkl_ff/info.json b/keyboards/ramonimbao/tkl_ff/info.json new file mode 100644 index 000000000000..fd71d3f9909b --- /dev/null +++ b/keyboards/ramonimbao/tkl_ff/info.json @@ -0,0 +1,302 @@ +{ + "keyboard_name": "TKL FF", + "url": "", + "maintainer": "Ramon Imbao", + "layouts": { + "LAYOUT_ansi": { + "layout": [ + {"x":0, "y":0}, + {"x":1.25, "y":0}, + {"x":2.25, "y":0}, + {"x":3.25, "y":0}, + {"x":4.25, "y":0}, + {"x":5.5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.75, "y":0}, + {"x":10.75, "y":0}, + {"x":11.75, "y":0}, + {"x":12.75, "y":0}, + {"x":14, "y":0}, + {"x":15.25, "y":0}, + {"x":16.25, "y":0}, + {"x":17.25, "y":0}, + + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2, "y":1.25}, + {"x":3, "y":1.25}, + {"x":4, "y":1.25}, + {"x":5, "y":1.25}, + {"x":6, "y":1.25}, + {"x":7, "y":1.25}, + {"x":8, "y":1.25}, + {"x":9, "y":1.25}, + {"x":10, "y":1.25}, + {"x":11, "y":1.25}, + {"x":12, "y":1.25}, + {"x":13, "y":1.25, "w":2}, + {"x":15.25, "y":1.25}, + {"x":16.25, "y":1.25}, + {"x":17.25, "y":1.25}, + + {"x":0, "y":2.25, "w":1.5}, + {"x":1.5, "y":2.25}, + {"x":2.5, "y":2.25}, + {"x":3.5, "y":2.25}, + {"x":4.5, "y":2.25}, + {"x":5.5, "y":2.25}, + {"x":6.5, "y":2.25}, + {"x":7.5, "y":2.25}, + {"x":8.5, "y":2.25}, + {"x":9.5, "y":2.25}, + {"x":10.5, "y":2.25}, + {"x":11.5, "y":2.25}, + {"x":12.5, "y":2.25}, + {"x":13.5, "y":2.25, "w":1.5}, + {"x":15.25, "y":2.25}, + {"x":16.25, "y":2.25}, + {"x":17.25, "y":2.25}, + + {"x":0, "y":3.25, "w":1.75}, + {"x":1.75, "y":3.25}, + {"x":2.75, "y":3.25}, + {"x":3.75, "y":3.25}, + {"x":4.75, "y":3.25}, + {"x":5.75, "y":3.25}, + {"x":6.75, "y":3.25}, + {"x":7.75, "y":3.25}, + {"x":8.75, "y":3.25}, + {"x":9.75, "y":3.25}, + {"x":10.75, "y":3.25}, + {"x":11.75, "y":3.25}, + {"x":12.75, "y":3.25, "w":2.25}, + + {"x":0, "y":4.25, "w":2.25}, + {"x":2.25, "y":4.25}, + {"x":3.25, "y":4.25}, + {"x":4.25, "y":4.25}, + {"x":5.25, "y":4.25}, + {"x":6.25, "y":4.25}, + {"x":7.25, "y":4.25}, + {"x":8.25, "y":4.25}, + {"x":9.25, "y":4.25}, + {"x":10.25, "y":4.25}, + {"x":11.25, "y":4.25}, + {"x":12.25, "y":4.25, "w":2.75}, + {"x":16.25, "y":4.25}, + + {"x":0, "y":5.25, "w":1.25}, + {"x":1.25, "y":5.25, "w":1.25}, + {"x":2.5, "y":5.25, "w":1.25}, + {"x":3.75, "y":5.25, "w":6.25}, + {"x":10, "y":5.25, "w":1.25}, + {"x":11.25, "y":5.25, "w":1.25}, + {"x":12.5, "y":5.25, "w":1.25}, + {"x":13.75, "y":5.25, "w":1.25}, + {"x":15.25, "y":5.25}, + {"x":16.25, "y":5.25}, + {"x":17.25, "y":5.25} + ] + }, + "LAYOUT_iso": { + "layout": [ + {"x":0, "y":0}, + {"x":1.25, "y":0}, + {"x":2.25, "y":0}, + {"x":3.25, "y":0}, + {"x":4.25, "y":0}, + {"x":5.5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.75, "y":0}, + {"x":10.75, "y":0}, + {"x":11.75, "y":0}, + {"x":12.75, "y":0}, + {"x":14, "y":0}, + {"x":15.25, "y":0}, + {"x":16.25, "y":0}, + {"x":17.25, "y":0}, + + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2, "y":1.25}, + {"x":3, "y":1.25}, + {"x":4, "y":1.25}, + {"x":5, "y":1.25}, + {"x":6, "y":1.25}, + {"x":7, "y":1.25}, + {"x":8, "y":1.25}, + {"x":9, "y":1.25}, + {"x":10, "y":1.25}, + {"x":11, "y":1.25}, + {"x":12, "y":1.25}, + {"x":13, "y":1.25, "w":2}, + {"x":15.25, "y":1.25}, + {"x":16.25, "y":1.25}, + {"x":17.25, "y":1.25}, + + {"x":0, "y":2.25, "w":1.5}, + {"x":1.5, "y":2.25}, + {"x":2.5, "y":2.25}, + {"x":3.5, "y":2.25}, + {"x":4.5, "y":2.25}, + {"x":5.5, "y":2.25}, + {"x":6.5, "y":2.25}, + {"x":7.5, "y":2.25}, + {"x":8.5, "y":2.25}, + {"x":9.5, "y":2.25}, + {"x":10.5, "y":2.25}, + {"x":11.5, "y":2.25}, + {"x":12.5, "y":2.25}, + {"x":15.25, "y":2.25}, + {"x":16.25, "y":2.25}, + {"x":17.25, "y":2.25}, + + {"x":0, "y":3.25, "w":1.75}, + {"x":1.75, "y":3.25}, + {"x":2.75, "y":3.25}, + {"x":3.75, "y":3.25}, + {"x":4.75, "y":3.25}, + {"x":5.75, "y":3.25}, + {"x":6.75, "y":3.25}, + {"x":7.75, "y":3.25}, + {"x":8.75, "y":3.25}, + {"x":9.75, "y":3.25}, + {"x":10.75, "y":3.25}, + {"x":11.75, "y":3.25}, + {"x":12.75, "y":3.25}, + {"x":13.75, "y":2.25, "w":1.25, "h":2}, + + {"x":0, "y":4.25, "w":1.25}, + {"x":1.25, "y":4.25}, + {"x":2.25, "y":4.25}, + {"x":3.25, "y":4.25}, + {"x":4.25, "y":4.25}, + {"x":5.25, "y":4.25}, + {"x":6.25, "y":4.25}, + {"x":7.25, "y":4.25}, + {"x":8.25, "y":4.25}, + {"x":9.25, "y":4.25}, + {"x":10.25, "y":4.25}, + {"x":11.25, "y":4.25}, + {"x":12.25, "y":4.25, "w":2.75}, + {"x":16.25, "y":4.25}, + + {"x":0, "y":5.25, "w":1.25}, + {"x":1.25, "y":5.25, "w":1.25}, + {"x":2.5, "y":5.25, "w":1.25}, + {"x":3.75, "y":5.25, "w":6.25}, + {"x":10, "y":5.25, "w":1.25}, + {"x":11.25, "y":5.25, "w":1.25}, + {"x":12.5, "y":5.25, "w":1.25}, + {"x":13.75, "y":5.25, "w":1.25}, + {"x":15.25, "y":5.25}, + {"x":16.25, "y":5.25}, + {"x":17.25, "y":5.25} + ] + }, + "LAYOUT_all": { + "layout": [ + {"x":0, "y":0}, + {"x":1.25, "y":0}, + {"x":2.25, "y":0}, + {"x":3.25, "y":0}, + {"x":4.25, "y":0}, + {"x":5.5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.75, "y":0}, + {"x":10.75, "y":0}, + {"x":11.75, "y":0}, + {"x":12.75, "y":0}, + {"x":14, "y":0}, + {"x":15.25, "y":0}, + {"x":16.25, "y":0}, + {"x":17.25, "y":0}, + + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2, "y":1.25}, + {"x":3, "y":1.25}, + {"x":4, "y":1.25}, + {"x":5, "y":1.25}, + {"x":6, "y":1.25}, + {"x":7, "y":1.25}, + {"x":8, "y":1.25}, + {"x":9, "y":1.25}, + {"x":10, "y":1.25}, + {"x":11, "y":1.25}, + {"x":12, "y":1.25}, + {"x":13, "y":1.25}, + {"x":14, "y":1.25}, + {"x":15.25, "y":1.25}, + {"x":16.25, "y":1.25}, + {"x":17.25, "y":1.25}, + + {"x":0, "y":2.25, "w":1.5}, + {"x":1.5, "y":2.25}, + {"x":2.5, "y":2.25}, + {"x":3.5, "y":2.25}, + {"x":4.5, "y":2.25}, + {"x":5.5, "y":2.25}, + {"x":6.5, "y":2.25}, + {"x":7.5, "y":2.25}, + {"x":8.5, "y":2.25}, + {"x":9.5, "y":2.25}, + {"x":10.5, "y":2.25}, + {"x":11.5, "y":2.25}, + {"x":12.5, "y":2.25}, + {"x":13.5, "y":2.25, "w":1.5}, + {"x":15.25, "y":2.25}, + {"x":16.25, "y":2.25}, + {"x":17.25, "y":2.25}, + + {"x":0, "y":3.25, "w":1.75}, + {"x":1.75, "y":3.25}, + {"x":2.75, "y":3.25}, + {"x":3.75, "y":3.25}, + {"x":4.75, "y":3.25}, + {"x":5.75, "y":3.25}, + {"x":6.75, "y":3.25}, + {"x":7.75, "y":3.25}, + {"x":8.75, "y":3.25}, + {"x":9.75, "y":3.25}, + {"x":10.75, "y":3.25}, + {"x":11.75, "y":3.25}, + {"x":12.75, "y":3.25, "w":2.25}, + + {"x":0, "y":4.25, "w":1.25}, + {"x":1.25, "y":4.25}, + {"x":2.25, "y":4.25}, + {"x":3.25, "y":4.25}, + {"x":4.25, "y":4.25}, + {"x":5.25, "y":4.25}, + {"x":6.25, "y":4.25}, + {"x":7.25, "y":4.25}, + {"x":8.25, "y":4.25}, + {"x":9.25, "y":4.25}, + {"x":10.25, "y":4.25}, + {"x":11.25, "y":4.25}, + {"x":12.25, "y":4.25, "w":1.75}, + {"x":14, "y":4.25}, + {"x":16.25, "y":4.25}, + + {"x":0, "y":5.25, "w":1.25}, + {"x":1.25, "y":5.25, "w":1.25}, + {"x":2.5, "y":5.25, "w":1.25}, + {"x":3.75, "y":5.25, "w":6.25}, + {"x":10, "y":5.25, "w":1.25}, + {"x":11.25, "y":5.25, "w":1.25}, + {"x":12.5, "y":5.25, "w":1.25}, + {"x":13.75, "y":5.25, "w":1.25}, + {"x":15.25, "y":5.25}, + {"x":16.25, "y":5.25}, + {"x":17.25, "y":5.25} + ] + } + } +} diff --git a/keyboards/ramonimbao/tkl_ff/keymaps/default/keymap.c b/keyboards/ramonimbao/tkl_ff/keymaps/default/keymap.c new file mode 100644 index 000000000000..e44b56e55f64 --- /dev/null +++ b/keyboards/ramonimbao/tkl_ff/keymaps/default/keymap.c @@ -0,0 +1,66 @@ +/* Copyright 2021 Ramon Imbao + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; + +#ifdef RGBLIGHT_ENABLE +const rgblight_segment_t PROGMEM ll_none[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 1, HSV_OFF}, + {1, 1, HSV_OFF} +); + +const rgblight_segment_t PROGMEM ll_cl[] = RGBLIGHT_LAYER_SEGMENTS( + {1, 1, HSV_OFF} +); + +const rgblight_segment_t PROGMEM ll_sl[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 1, HSV_OFF} +); + +const rgblight_segment_t* const PROGMEM rgb_layers[] = RGBLIGHT_LAYERS_LIST(ll_none, ll_cl, ll_sl); + +void keyboard_post_init_kb(void) { + rgblight_layers = rgb_layers; + + keyboard_post_init_user(); +} + +bool led_update_kb(led_t led_state) { + bool res = led_update_user(led_state); + + if (res) { + uint8_t lock_bits = led_state.scroll_lock << 1 | led_state.caps_lock; + for (uint8_t i=0; i<3; i++) { + rgblight_set_layer_state(i, false); + } + if (lock_bits < 3) { + rgblight_set_layer_state(lock_bits, true); + } + } + + return res; +} +#endif diff --git a/keyboards/ramonimbao/tkl_ff/keymaps/iso/keymap.c b/keyboards/ramonimbao/tkl_ff/keymaps/iso/keymap.c new file mode 100644 index 000000000000..17997828df5e --- /dev/null +++ b/keyboards/ramonimbao/tkl_ff/keymaps/iso/keymap.c @@ -0,0 +1,66 @@ +/* Copyright 2021 Ramon Imbao + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_iso( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; + +#ifdef RGBLIGHT_ENABLE +const rgblight_segment_t PROGMEM ll_none[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 1, HSV_OFF}, + {1, 1, HSV_OFF} +); + +const rgblight_segment_t PROGMEM ll_cl[] = RGBLIGHT_LAYER_SEGMENTS( + {1, 1, HSV_OFF} +); + +const rgblight_segment_t PROGMEM ll_sl[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 1, HSV_OFF} +); + +const rgblight_segment_t* const PROGMEM rgb_layers[] = RGBLIGHT_LAYERS_LIST(ll_none, ll_cl, ll_sl); + +void keyboard_post_init_kb(void) { + rgblight_layers = rgb_layers; + + keyboard_post_init_user(); +} + +bool led_update_kb(led_t led_state) { + bool res = led_update_user(led_state); + + if (res) { + uint8_t lock_bits = led_state.scroll_lock << 1 | led_state.caps_lock; + for (uint8_t i=0; i<3; i++) { + rgblight_set_layer_state(i, false); + } + if (lock_bits < 3) { + rgblight_set_layer_state(lock_bits, true); + } + } + + return res; +} +#endif diff --git a/keyboards/ramonimbao/tkl_ff/keymaps/via/keymap.c b/keyboards/ramonimbao/tkl_ff/keymaps/via/keymap.c new file mode 100644 index 000000000000..298b7a1fa287 --- /dev/null +++ b/keyboards/ramonimbao/tkl_ff/keymaps/via/keymap.c @@ -0,0 +1,90 @@ +/* Copyright 2021 Ramon Imbao + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_NO, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + +#ifdef RGBLIGHT_ENABLE +const rgblight_segment_t PROGMEM ll_none[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 1, HSV_OFF}, + {1, 1, HSV_OFF} +); + +const rgblight_segment_t PROGMEM ll_cl[] = RGBLIGHT_LAYER_SEGMENTS( + {1, 1, HSV_OFF} +); + +const rgblight_segment_t PROGMEM ll_sl[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 1, HSV_OFF} +); + +const rgblight_segment_t* const PROGMEM rgb_layers[] = RGBLIGHT_LAYERS_LIST(ll_none, ll_cl, ll_sl); + +void keyboard_post_init_kb(void) { + rgblight_layers = rgb_layers; + + keyboard_post_init_user(); +} + +bool led_update_kb(led_t led_state) { + bool res = led_update_user(led_state); + + if (res) { + uint8_t lock_bits = led_state.scroll_lock << 1 | led_state.caps_lock; + for (uint8_t i=0; i<3; i++) { + rgblight_set_layer_state(i, false); + } + if (lock_bits < 3) { + rgblight_set_layer_state(lock_bits, true); + } + } + + return res; +} +#endif diff --git a/keyboards/ramonimbao/tkl_ff/keymaps/via/rules.mk b/keyboards/ramonimbao/tkl_ff/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/ramonimbao/tkl_ff/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/ramonimbao/tkl_ff/readme.md b/keyboards/ramonimbao/tkl_ff/readme.md new file mode 100644 index 000000000000..ffc11f585e2a --- /dev/null +++ b/keyboards/ramonimbao/tkl_ff/readme.md @@ -0,0 +1,20 @@ +# TKL-FF + +![TKL-FF](https://i.imgur.com/GJCo3F5l.png) + +A TKL PCB made for the Geonworks Frog keyboard that supports both F12 and F13. V2 simply adds RGB indicator LEDs. + +* Keyboard Maintainer: [Ramon Imbao](https://github.com/ramonimbao) +* Hardware Supported: ATmega32u4 + +Make example for this keyboard (after setting up your build environment): + + make ramonimbao/tkl_ff:default + +To get to the bootloader, simply press the reset button located at the back of the PCB. You can then flash new firmware onto it. + +Flashing example for this keyboard: + + make ramonimbao/tkl_ff:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/ramonimbao/tkl_ff/rules.mk b/keyboards/ramonimbao/tkl_ff/rules.mk new file mode 100644 index 000000000000..d2109f62500b --- /dev/null +++ b/keyboards/ramonimbao/tkl_ff/rules.mk @@ -0,0 +1,19 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/ramonimbao/tkl_ff/tkl_ff.c b/keyboards/ramonimbao/tkl_ff/tkl_ff.c new file mode 100644 index 000000000000..4a4b7c204ab3 --- /dev/null +++ b/keyboards/ramonimbao/tkl_ff/tkl_ff.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Ramon Imbao + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "tkl_ff.h" diff --git a/keyboards/ramonimbao/tkl_ff/tkl_ff.h b/keyboards/ramonimbao/tkl_ff/tkl_ff.h new file mode 100644 index 000000000000..2fc2a9894877 --- /dev/null +++ b/keyboards/ramonimbao/tkl_ff/tkl_ff.h @@ -0,0 +1,93 @@ +/* Copyright 2021 Ramon Imbao + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + +#define ___ KC_NO + +// ANSI layout +// Full backspace +// Full right shift +// Full left shift +// 6.25u bottom row +#define LAYOUT_ansi( \ + 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, \ + k40, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4f, \ + k50, k51, k52, k57, 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, ___, ___, ___, ___ }, \ + { k40, ___, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, ___, ___, k4f, ___ }, \ + { k50, k51, k52, ___, ___, ___, ___, k57, ___, ___, k5a, k5b, k5c, k5d, k5e, k5f, k5g }, \ +} + +// ISO layout +// Full backspace +// Full right shift +// Split left shift +// 6.25u bottom row +#define LAYOUT_iso( \ + 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, 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, k57, 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, ___, ___, ___, ___ }, \ + { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, ___, ___, k4f, ___ }, \ + { k50, k51, k52, ___, ___, ___, ___, k57, ___, ___, k5a, k5b, k5c, k5d, k5e, k5f, k5g }, \ +} + +// Layout for VIA +// Split backspace +// Split left shift +// Split right shift +// 6.25u bottom row +#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, k3d, 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, k4d, k4f, \ + k50, k51, k52, k57, 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, ___, ___, ___ }, \ + { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, ___, k4f, ___ }, \ + { k50, k51, k52, ___, ___, ___, ___, k57, ___, ___, k5a, k5b, k5c, k5d, k5e, k5f, k5g } \ +} diff --git a/keyboards/ramonimbao/tkl_ff/v2/config.h b/keyboards/ramonimbao/tkl_ff/v2/config.h new file mode 100644 index 000000000000..a35d1bc59978 --- /dev/null +++ b/keyboards/ramonimbao/tkl_ff/v2/config.h @@ -0,0 +1,52 @@ +/* Copyright 2021 Ramon Imbao + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "config_common.h" + +#undef PRODUCT_ID +#define PRODUCT_ID 0x10FF + +#define RGBLIGHT_LAYERS +#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF + +#define RGB_DI_PIN E2 +#ifdef RGB_DI_PIN +# define RGBLED_NUM 26 +# define RGBLIGHT_HUE_STEP 32 +# define RGBLIGHT_SAT_STEP 32 +# define RGBLIGHT_VAL_STEP 32 +//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +// # define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +# define RGBLIGHT_EFFECT_BREATHING +# define RGBLIGHT_EFFECT_RAINBOW_MOOD +# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +# define RGBLIGHT_EFFECT_CHRISTMAS +# define RGBLIGHT_EFFECT_STATIC_GRADIENT +# define RGBLIGHT_EFFECT_RGB_TEST +# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +#endif diff --git a/keyboards/ramonimbao/tkl_ff/v2/rules.mk b/keyboards/ramonimbao/tkl_ff/v2/rules.mk new file mode 100644 index 000000000000..84ef473c02e2 --- /dev/null +++ b/keyboards/ramonimbao/tkl_ff/v2/rules.mk @@ -0,0 +1 @@ +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow diff --git a/keyboards/ramonimbao/tkl_ff/v2/v2.c b/keyboards/ramonimbao/tkl_ff/v2/v2.c new file mode 100644 index 000000000000..de5f32e3ca69 --- /dev/null +++ b/keyboards/ramonimbao/tkl_ff/v2/v2.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Ramon Imbao + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "v2.h" diff --git a/keyboards/ramonimbao/tkl_ff/v2/v2.h b/keyboards/ramonimbao/tkl_ff/v2/v2.h new file mode 100644 index 000000000000..7c4566defb3c --- /dev/null +++ b/keyboards/ramonimbao/tkl_ff/v2/v2.h @@ -0,0 +1,18 @@ +/* Copyright 2021 Ramon Imbao + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" diff --git a/keyboards/ramonimbao/wete/info.json b/keyboards/ramonimbao/wete/info.json deleted file mode 100644 index 9828946fad56..000000000000 --- a/keyboards/ramonimbao/wete/info.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "keyboard_name": "Wete", - "url": "", - "maintainer": "Ramon Imbao", - "width": 20.25, - "height": 6.25, - "layouts": { - "LAYOUT_ansi_rhnp": { - "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4.25, "y":0}, {"x":5.75, "y":0}, {"x":6.75, "y":0}, {"x":7.75, "y":0}, {"x":8.75, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.75, "y":0}, {"x":15.75, "y":0}, {"x":16.75, "y":0}, {"x":17.75, "y":0}, {"x":19.25, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":4.25, "y":1.25}, {"x":5.25, "y":1.25}, {"x":6.25, "y":1.25}, {"x":7.25, "y":1.25}, {"x":8.25, "y":1.25}, {"x":9.25, "y":1.25}, {"x":10.25, "y":1.25}, {"x":11.25, "y":1.25}, {"x":12.25, "y":1.25}, {"x":13.25, "y":1.25}, {"x":14.25, "y":1.25}, {"x":15.25, "y":1.25}, {"x":16.25, "y":1.25}, {"x":17.25, "y":1.25, "w":2}, {"x":19.25, "y":1.25}, {"x":0, "y":2.25}, {"x":1, "y":2.25}, {"x":2, "y":2.25}, {"x":3, "y":2.25, "h":2}, {"x":4.25, "y":2.25, "w":1.5}, {"x":5.75, "y":2.25}, {"x":6.75, "y":2.25}, {"x":7.75, "y":2.25}, {"x":8.75, "y":2.25}, {"x":9.75, "y":2.25}, {"x":10.75, "y":2.25}, {"x":11.75, "y":2.25}, {"x":12.75, "y":2.25}, {"x":13.75, "y":2.25}, {"x":14.75, "y":2.25}, {"x":15.75, "y":2.25}, {"x":16.75, "y":2.25}, {"x":17.75, "y":2.25, "w":1.5}, {"x":19.25, "y":2.25}, {"x":0, "y":3.25}, {"x":1, "y":3.25}, {"x":2, "y":3.25}, {"x":4.25, "y":3.25, "w":1.75}, {"x":6, "y":3.25}, {"x":7, "y":3.25}, {"x":8, "y":3.25}, {"x":9, "y":3.25}, {"x":10, "y":3.25}, {"x":11, "y":3.25}, {"x":12, "y":3.25}, {"x":13, "y":3.25}, {"x":14, "y":3.25}, {"x":15, "y":3.25}, {"x":16, "y":3.25}, {"x":17, "y":3.25, "w":2.25}, {"x":19.25, "y":3.25}, {"x":0, "y":4.25}, {"x":1, "y":4.25}, {"x":2, "y":4.25}, {"x":3, "y":4.25, "h":2}, {"x":4.25, "y":4.25, "w":2.25}, {"x":6.5, "y":4.25}, {"x":7.5, "y":4.25}, {"x":8.5, "y":4.25}, {"x":9.5, "y":4.25}, {"x":10.5, "y":4.25}, {"x":11.5, "y":4.25}, {"x":12.5, "y":4.25}, {"x":13.5, "y":4.25}, {"x":14.5, "y":4.25}, {"x":15.5, "y":4.25}, {"x":16.5, "y":4.25, "w":1.75}, {"x":18.25, "y":4.25}, {"x":19.25, "y":4.25}, {"x":0, "y":5.25, "w":2}, {"x":2, "y":5.25}, {"x":4.25, "y":5.25, "w":1.25}, {"x":5.5, "y":5.25, "w":1.25}, {"x":6.75, "y":5.25, "w":1.25}, {"x":8, "y":5.25, "w":6.25}, {"x":14.25, "y":5.25, "w":1.25}, {"x":15.5, "y":5.25, "w":1.25}, {"x":17.25, "y":5.25}, {"x":18.25, "y":5.25}, {"x":19.25, "y":5.25}] - }, - "LAYOUT_ansi_lhnp": { - "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4.25, "y":0}, {"x":5.75, "y":0}, {"x":6.75, "y":0}, {"x":7.75, "y":0}, {"x":8.75, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.75, "y":0}, {"x":15.75, "y":0}, {"x":16.75, "y":0}, {"x":17.75, "y":0}, {"x":19.25, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":4.25, "y":1.25}, {"x":5.25, "y":1.25}, {"x":6.25, "y":1.25}, {"x":7.25, "y":1.25}, {"x":8.25, "y":1.25}, {"x":9.25, "y":1.25}, {"x":10.25, "y":1.25}, {"x":11.25, "y":1.25}, {"x":12.25, "y":1.25}, {"x":13.25, "y":1.25}, {"x":14.25, "y":1.25}, {"x":15.25, "y":1.25}, {"x":16.25, "y":1.25}, {"x":17.25, "y":1.25, "w":2}, {"x":19.25, "y":1.25}, {"x":0, "y":2.25, "h":2}, {"x":1, "y":2.25}, {"x":2, "y":2.25}, {"x":3, "y":2.25}, {"x":4.25, "y":2.25, "w":1.5}, {"x":5.75, "y":2.25}, {"x":6.75, "y":2.25}, {"x":7.75, "y":2.25}, {"x":8.75, "y":2.25}, {"x":9.75, "y":2.25}, {"x":10.75, "y":2.25}, {"x":11.75, "y":2.25}, {"x":12.75, "y":2.25}, {"x":13.75, "y":2.25}, {"x":14.75, "y":2.25}, {"x":15.75, "y":2.25}, {"x":16.75, "y":2.25}, {"x":17.75, "y":2.25, "w":1.5}, {"x":19.25, "y":2.25}, {"x":1, "y":3.25}, {"x":2, "y":3.25}, {"x":3, "y":3.25}, {"x":4.25, "y":3.25, "w":1.75}, {"x":6, "y":3.25}, {"x":7, "y":3.25}, {"x":8, "y":3.25}, {"x":9, "y":3.25}, {"x":10, "y":3.25}, {"x":11, "y":3.25}, {"x":12, "y":3.25}, {"x":13, "y":3.25}, {"x":14, "y":3.25}, {"x":15, "y":3.25}, {"x":16, "y":3.25}, {"x":17, "y":3.25, "w":2.25}, {"x":19.25, "y":3.25}, {"x":0, "y":4.25, "h":2}, {"x":1, "y":4.25}, {"x":2, "y":4.25}, {"x":3, "y":4.25}, {"x":4.25, "y":4.25, "w":2.25}, {"x":6.5, "y":4.25}, {"x":7.5, "y":4.25}, {"x":8.5, "y":4.25}, {"x":9.5, "y":4.25}, {"x":10.5, "y":4.25}, {"x":11.5, "y":4.25}, {"x":12.5, "y":4.25}, {"x":13.5, "y":4.25}, {"x":14.5, "y":4.25}, {"x":15.5, "y":4.25}, {"x":16.5, "y":4.25, "w":1.75}, {"x":18.25, "y":4.25}, {"x":19.25, "y":4.25}, {"x":1, "y":5.25}, {"x":2, "y":5.25, "w":2}, {"x":4.25, "y":5.25, "w":1.25}, {"x":5.5, "y":5.25, "w":1.25}, {"x":6.75, "y":5.25, "w":1.25}, {"x":8, "y":5.25, "w":6.25}, {"x":14.25, "y":5.25, "w":1.25}, {"x":15.5, "y":5.25, "w":1.25}, {"x":17.25, "y":5.25}, {"x":18.25, "y":5.25}, {"x":19.25, "y":5.25}] - }, - "LAYOUT_ansi_macro": { - "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4.25, "y":0}, {"x":5.75, "y":0}, {"x":6.75, "y":0}, {"x":7.75, "y":0}, {"x":8.75, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.75, "y":0}, {"x":15.75, "y":0}, {"x":16.75, "y":0}, {"x":17.75, "y":0}, {"x":19.25, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":4.25, "y":1.25}, {"x":5.25, "y":1.25}, {"x":6.25, "y":1.25}, {"x":7.25, "y":1.25}, {"x":8.25, "y":1.25}, {"x":9.25, "y":1.25}, {"x":10.25, "y":1.25}, {"x":11.25, "y":1.25}, {"x":12.25, "y":1.25}, {"x":13.25, "y":1.25}, {"x":14.25, "y":1.25}, {"x":15.25, "y":1.25}, {"x":16.25, "y":1.25}, {"x":17.25, "y":1.25, "w":2}, {"x":19.25, "y":1.25}, {"x":0, "y":2.25}, {"x":1, "y":2.25}, {"x":2, "y":2.25}, {"x":3, "y":2.25}, {"x":4.25, "y":2.25, "w":1.5}, {"x":5.75, "y":2.25}, {"x":6.75, "y":2.25}, {"x":7.75, "y":2.25}, {"x":8.75, "y":2.25}, {"x":9.75, "y":2.25}, {"x":10.75, "y":2.25}, {"x":11.75, "y":2.25}, {"x":12.75, "y":2.25}, {"x":13.75, "y":2.25}, {"x":14.75, "y":2.25}, {"x":15.75, "y":2.25}, {"x":16.75, "y":2.25}, {"x":17.75, "y":2.25, "w":1.5}, {"x":19.25, "y":2.25}, {"x":0, "y":3.25}, {"x":1, "y":3.25}, {"x":2, "y":3.25}, {"x":3, "y":3.25}, {"x":4.25, "y":3.25, "w":1.75}, {"x":6, "y":3.25}, {"x":7, "y":3.25}, {"x":8, "y":3.25}, {"x":9, "y":3.25}, {"x":10, "y":3.25}, {"x":11, "y":3.25}, {"x":12, "y":3.25}, {"x":13, "y":3.25}, {"x":14, "y":3.25}, {"x":15, "y":3.25}, {"x":16, "y":3.25}, {"x":17, "y":3.25, "w":2.25}, {"x":19.25, "y":3.25}, {"x":0, "y":4.25}, {"x":1, "y":4.25}, {"x":2, "y":4.25}, {"x":3, "y":4.25}, {"x":4.25, "y":4.25, "w":2.25}, {"x":6.5, "y":4.25}, {"x":7.5, "y":4.25}, {"x":8.5, "y":4.25}, {"x":9.5, "y":4.25}, {"x":10.5, "y":4.25}, {"x":11.5, "y":4.25}, {"x":12.5, "y":4.25}, {"x":13.5, "y":4.25}, {"x":14.5, "y":4.25}, {"x":15.5, "y":4.25}, {"x":16.5, "y":4.25, "w":1.75}, {"x":18.25, "y":4.25}, {"x":19.25, "y":4.25}, {"x":0, "y":5.25}, {"x":1, "y":5.25}, {"x":2, "y":5.25}, {"x":3, "y":5.25}, {"x":4.25, "y":5.25, "w":1.25}, {"x":5.5, "y":5.25, "w":1.25}, {"x":6.75, "y":5.25, "w":1.25}, {"x":8, "y":5.25, "w":6.25}, {"x":14.25, "y":5.25, "w":1.25}, {"x":15.5, "y":5.25, "w":1.25}, {"x":17.25, "y":5.25}, {"x":18.25, "y":5.25}, {"x":19.25, "y":5.25}] - }, - "LAYOUT_iso_rhnp": { - "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4.25, "y":0}, {"x":5.75, "y":0}, {"x":6.75, "y":0}, {"x":7.75, "y":0}, {"x":8.75, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.75, "y":0}, {"x":15.75, "y":0}, {"x":16.75, "y":0}, {"x":17.75, "y":0}, {"x":19.25, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":4.25, "y":1.25}, {"x":5.25, "y":1.25}, {"x":6.25, "y":1.25}, {"x":7.25, "y":1.25}, {"x":8.25, "y":1.25}, {"x":9.25, "y":1.25}, {"x":10.25, "y":1.25}, {"x":11.25, "y":1.25}, {"x":12.25, "y":1.25}, {"x":13.25, "y":1.25}, {"x":14.25, "y":1.25}, {"x":15.25, "y":1.25}, {"x":16.25, "y":1.25}, {"x":17.25, "y":1.25, "w":2}, {"x":19.25, "y":1.25}, {"x":0, "y":2.25}, {"x":1, "y":2.25}, {"x":2, "y":2.25}, {"x":3, "y":2.25, "h":2}, {"x":4.25, "y":2.25, "w":1.5}, {"x":5.75, "y":2.25}, {"x":6.75, "y":2.25}, {"x":7.75, "y":2.25}, {"x":8.75, "y":2.25}, {"x":9.75, "y":2.25}, {"x":10.75, "y":2.25}, {"x":11.75, "y":2.25}, {"x":12.75, "y":2.25}, {"x":13.75, "y":2.25}, {"x":14.75, "y":2.25}, {"x":15.75, "y":2.25}, {"x":16.75, "y":2.25}, {"x":18, "y":2.25, "w":1.25, "h":2}, {"x":19.25, "y":2.25}, {"x":0, "y":3.25}, {"x":1, "y":3.25}, {"x":2, "y":3.25}, {"x":4.25, "y":3.25, "w":1.75}, {"x":6, "y":3.25}, {"x":7, "y":3.25}, {"x":8, "y":3.25}, {"x":9, "y":3.25}, {"x":10, "y":3.25}, {"x":11, "y":3.25}, {"x":12, "y":3.25}, {"x":13, "y":3.25}, {"x":14, "y":3.25}, {"x":15, "y":3.25}, {"x":16, "y":3.25}, {"x":17, "y":3.25}, {"x":19.25, "y":3.25}, {"x":0, "y":4.25}, {"x":1, "y":4.25}, {"x":2, "y":4.25}, {"x":3, "y":4.25, "h":2}, {"x":4.25, "y":4.25, "w":1.25}, {"x":5.5, "y":4.25}, {"x":6.5, "y":4.25}, {"x":7.5, "y":4.25}, {"x":8.5, "y":4.25}, {"x":9.5, "y":4.25}, {"x":10.5, "y":4.25}, {"x":11.5, "y":4.25}, {"x":12.5, "y":4.25}, {"x":13.5, "y":4.25}, {"x":14.5, "y":4.25}, {"x":15.5, "y":4.25}, {"x":16.5, "y":4.25, "w":1.75}, {"x":18.25, "y":4.25}, {"x":19.25, "y":4.25}, {"x":0, "y":5.25, "w":2}, {"x":2, "y":5.25}, {"x":4.25, "y":5.25, "w":1.25}, {"x":5.5, "y":5.25, "w":1.25}, {"x":6.75, "y":5.25, "w":1.25}, {"x":8, "y":5.25, "w":6.25}, {"x":14.25, "y":5.25, "w":1.25}, {"x":15.5, "y":5.25, "w":1.25}, {"x":17.25, "y":5.25}, {"x":18.25, "y":5.25}, {"x":19.25, "y":5.25}] - }, - "LAYOUT_iso_lhnp": { - "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4.25, "y":0}, {"x":5.75, "y":0}, {"x":6.75, "y":0}, {"x":7.75, "y":0}, {"x":8.75, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.75, "y":0}, {"x":15.75, "y":0}, {"x":16.75, "y":0}, {"x":17.75, "y":0}, {"x":19.25, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":4.25, "y":1.25}, {"x":5.25, "y":1.25}, {"x":6.25, "y":1.25}, {"x":7.25, "y":1.25}, {"x":8.25, "y":1.25}, {"x":9.25, "y":1.25}, {"x":10.25, "y":1.25}, {"x":11.25, "y":1.25}, {"x":12.25, "y":1.25}, {"x":13.25, "y":1.25}, {"x":14.25, "y":1.25}, {"x":15.25, "y":1.25}, {"x":16.25, "y":1.25}, {"x":17.25, "y":1.25, "w":2}, {"x":19.25, "y":1.25}, {"x":0, "y":2.25, "h":2}, {"x":1, "y":2.25}, {"x":2, "y":2.25}, {"x":3, "y":2.25}, {"x":4.25, "y":2.25, "w":1.5}, {"x":5.75, "y":2.25}, {"x":6.75, "y":2.25}, {"x":7.75, "y":2.25}, {"x":8.75, "y":2.25}, {"x":9.75, "y":2.25}, {"x":10.75, "y":2.25}, {"x":11.75, "y":2.25}, {"x":12.75, "y":2.25}, {"x":13.75, "y":2.25}, {"x":14.75, "y":2.25}, {"x":15.75, "y":2.25}, {"x":16.75, "y":2.25}, {"x":18, "y":2.25, "w":1.25, "h":2}, {"x":19.25, "y":2.25}, {"x":1, "y":3.25}, {"x":2, "y":3.25}, {"x":3, "y":3.25}, {"x":4.25, "y":3.25, "w":1.75}, {"x":6, "y":3.25}, {"x":7, "y":3.25}, {"x":8, "y":3.25}, {"x":9, "y":3.25}, {"x":10, "y":3.25}, {"x":11, "y":3.25}, {"x":12, "y":3.25}, {"x":13, "y":3.25}, {"x":14, "y":3.25}, {"x":15, "y":3.25}, {"x":16, "y":3.25}, {"x":17, "y":3.25}, {"x":19.25, "y":3.25}, {"x":0, "y":4.25, "h":2}, {"x":1, "y":4.25}, {"x":2, "y":4.25}, {"x":3, "y":4.25}, {"x":4.25, "y":4.25, "w":1.25}, {"x":5.5, "y":4.25}, {"x":6.5, "y":4.25}, {"x":7.5, "y":4.25}, {"x":8.5, "y":4.25}, {"x":9.5, "y":4.25}, {"x":10.5, "y":4.25}, {"x":11.5, "y":4.25}, {"x":12.5, "y":4.25}, {"x":13.5, "y":4.25}, {"x":14.5, "y":4.25}, {"x":15.5, "y":4.25}, {"x":16.5, "y":4.25, "w":1.75}, {"x":18.25, "y":4.25}, {"x":19.25, "y":4.25}, {"x":1, "y":5.25}, {"x":2, "y":5.25, "w":2}, {"x":4.25, "y":5.25, "w":1.25}, {"x":5.5, "y":5.25, "w":1.25}, {"x":6.75, "y":5.25, "w":1.25}, {"x":8, "y":5.25, "w":6.25}, {"x":14.25, "y":5.25, "w":1.25}, {"x":15.5, "y":5.25, "w":1.25}, {"x":17.25, "y":5.25}, {"x":18.25, "y":5.25}, {"x":19.25, "y":5.25}] - }, - "LAYOUT_iso_macro": { - "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4.25, "y":0}, {"x":5.75, "y":0}, {"x":6.75, "y":0}, {"x":7.75, "y":0}, {"x":8.75, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.75, "y":0}, {"x":15.75, "y":0}, {"x":16.75, "y":0}, {"x":17.75, "y":0}, {"x":19.25, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":4.25, "y":1.25}, {"x":5.25, "y":1.25}, {"x":6.25, "y":1.25}, {"x":7.25, "y":1.25}, {"x":8.25, "y":1.25}, {"x":9.25, "y":1.25}, {"x":10.25, "y":1.25}, {"x":11.25, "y":1.25}, {"x":12.25, "y":1.25}, {"x":13.25, "y":1.25}, {"x":14.25, "y":1.25}, {"x":15.25, "y":1.25}, {"x":16.25, "y":1.25}, {"x":17.25, "y":1.25, "w":2}, {"x":19.25, "y":1.25}, {"x":0, "y":2.25}, {"x":1, "y":2.25}, {"x":2, "y":2.25}, {"x":3, "y":2.25}, {"x":4.25, "y":2.25, "w":1.5}, {"x":5.75, "y":2.25}, {"x":6.75, "y":2.25}, {"x":7.75, "y":2.25}, {"x":8.75, "y":2.25}, {"x":9.75, "y":2.25}, {"x":10.75, "y":2.25}, {"x":11.75, "y":2.25}, {"x":12.75, "y":2.25}, {"x":13.75, "y":2.25}, {"x":14.75, "y":2.25}, {"x":15.75, "y":2.25}, {"x":16.75, "y":2.25}, {"x":18, "y":2.25, "w":1.25, "h":2}, {"x":19.25, "y":2.25}, {"x":0, "y":3.25}, {"x":1, "y":3.25}, {"x":2, "y":3.25}, {"x":3, "y":3.25}, {"x":4.25, "y":3.25, "w":1.75}, {"x":6, "y":3.25}, {"x":7, "y":3.25}, {"x":8, "y":3.25}, {"x":9, "y":3.25}, {"x":10, "y":3.25}, {"x":11, "y":3.25}, {"x":12, "y":3.25}, {"x":13, "y":3.25}, {"x":14, "y":3.25}, {"x":15, "y":3.25}, {"x":16, "y":3.25}, {"x":17, "y":3.25}, {"x":19.25, "y":3.25}, {"x":0, "y":4.25}, {"x":1, "y":4.25}, {"x":2, "y":4.25}, {"x":3, "y":4.25}, {"x":4.25, "y":4.25, "w":1.25}, {"x":5.5, "y":4.25}, {"x":6.5, "y":4.25}, {"x":7.5, "y":4.25}, {"x":8.5, "y":4.25}, {"x":9.5, "y":4.25}, {"x":10.5, "y":4.25}, {"x":11.5, "y":4.25}, {"x":12.5, "y":4.25}, {"x":13.5, "y":4.25}, {"x":14.5, "y":4.25}, {"x":15.5, "y":4.25}, {"x":16.5, "y":4.25, "w":1.75}, {"x":18.25, "y":4.25}, {"x":19.25, "y":4.25}, {"x":0, "y":5.25}, {"x":1, "y":5.25}, {"x":2, "y":5.25}, {"x":3, "y":5.25}, {"x":4.25, "y":5.25, "w":1.25}, {"x":5.5, "y":5.25, "w":1.25}, {"x":6.75, "y":5.25, "w":1.25}, {"x":8, "y":5.25, "w":6.25}, {"x":14.25, "y":5.25, "w":1.25}, {"x":15.5, "y":5.25, "w":1.25}, {"x":17.25, "y":5.25}, {"x":18.25, "y":5.25}, {"x":19.25, "y":5.25}] - }, - "LAYOUT_jis_rhnp": { - "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4.25, "y":0}, {"x":5.75, "y":0}, {"x":6.75, "y":0}, {"x":7.75, "y":0}, {"x":8.75, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.75, "y":0}, {"x":15.75, "y":0}, {"x":16.75, "y":0}, {"x":17.75, "y":0}, {"x":19.25, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":4.25, "y":1.25}, {"x":5.25, "y":1.25}, {"x":6.25, "y":1.25}, {"x":7.25, "y":1.25}, {"x":8.25, "y":1.25}, {"x":9.25, "y":1.25}, {"x":10.25, "y":1.25}, {"x":11.25, "y":1.25}, {"x":12.25, "y":1.25}, {"x":13.25, "y":1.25}, {"x":14.25, "y":1.25}, {"x":15.25, "y":1.25}, {"x":16.25, "y":1.25}, {"x":17.25, "y":1.25}, {"x":18.25, "y":1.25}, {"x":19.25, "y":1.25}, {"x":0, "y":2.25}, {"x":1, "y":2.25}, {"x":2, "y":2.25}, {"x":3, "y":2.25, "h":2}, {"x":4.25, "y":2.25, "w":1.5}, {"x":5.75, "y":2.25}, {"x":6.75, "y":2.25}, {"x":7.75, "y":2.25}, {"x":8.75, "y":2.25}, {"x":9.75, "y":2.25}, {"x":10.75, "y":2.25}, {"x":11.75, "y":2.25}, {"x":12.75, "y":2.25}, {"x":13.75, "y":2.25}, {"x":14.75, "y":2.25}, {"x":15.75, "y":2.25}, {"x":16.75, "y":2.25}, {"x":18, "y":2.25, "w":1.25, "h":2}, {"x":19.25, "y":2.25}, {"x":0, "y":3.25}, {"x":1, "y":3.25}, {"x":2, "y":3.25}, {"x":4.25, "y":3.25, "w":1.75}, {"x":6, "y":3.25}, {"x":7, "y":3.25}, {"x":8, "y":3.25}, {"x":9, "y":3.25}, {"x":10, "y":3.25}, {"x":11, "y":3.25}, {"x":12, "y":3.25}, {"x":13, "y":3.25}, {"x":14, "y":3.25}, {"x":15, "y":3.25}, {"x":16, "y":3.25}, {"x":17, "y":3.25}, {"x":19.25, "y":3.25}, {"x":0, "y":4.25}, {"x":1, "y":4.25}, {"x":2, "y":4.25}, {"x":3, "y":4.25, "h":2}, {"x":4.25, "y":4.25, "w":2.25}, {"x":6.5, "y":4.25}, {"x":7.5, "y":4.25}, {"x":8.5, "y":4.25}, {"x":9.5, "y":4.25}, {"x":10.5, "y":4.25}, {"x":11.5, "y":4.25}, {"x":12.5, "y":4.25}, {"x":13.5, "y":4.25}, {"x":14.5, "y":4.25}, {"x":15.5, "y":4.25}, {"x":16.5, "y":4.25}, {"x":17.5, "y":4.25, "w":1.75}, {"x":19.25, "y":4.25}, {"x":0, "y":5.25, "w":2}, {"x":2, "y":5.25}, {"x":4.25, "y":5.25, "w":1.5}, {"x":5.75, "y":5.25}, {"x":6.75, "y":5.25, "w":1.5}, {"x":8.25, "y":5.25}, {"x":9.25, "y":5.25, "w":3}, {"x":12.25, "y":5.25}, {"x":13.25, "y":5.25}, {"x":14.25, "y":5.25}, {"x":15.25, "y":5.25}, {"x":16.25, "y":5.25}, {"x":17.25, "y":5.25}, {"x":18.25, "y":5.25}, {"x":19.25, "y":5.25}] - }, - "LAYOUT_jis_lhnp": { - "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4.25, "y":0}, {"x":5.75, "y":0}, {"x":6.75, "y":0}, {"x":7.75, "y":0}, {"x":8.75, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.75, "y":0}, {"x":15.75, "y":0}, {"x":16.75, "y":0}, {"x":17.75, "y":0}, {"x":19.25, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":4.25, "y":1.25}, {"x":5.25, "y":1.25}, {"x":6.25, "y":1.25}, {"x":7.25, "y":1.25}, {"x":8.25, "y":1.25}, {"x":9.25, "y":1.25}, {"x":10.25, "y":1.25}, {"x":11.25, "y":1.25}, {"x":12.25, "y":1.25}, {"x":13.25, "y":1.25}, {"x":14.25, "y":1.25}, {"x":15.25, "y":1.25}, {"x":16.25, "y":1.25}, {"x":17.25, "y":1.25}, {"x":18.25, "y":1.25}, {"x":19.25, "y":1.25}, {"x":0, "y":2.25, "h":2}, {"x":1, "y":2.25}, {"x":2, "y":2.25}, {"x":3, "y":2.25}, {"x":4.25, "y":2.25, "w":1.5}, {"x":5.75, "y":2.25}, {"x":6.75, "y":2.25}, {"x":7.75, "y":2.25}, {"x":8.75, "y":2.25}, {"x":9.75, "y":2.25}, {"x":10.75, "y":2.25}, {"x":11.75, "y":2.25}, {"x":12.75, "y":2.25}, {"x":13.75, "y":2.25}, {"x":14.75, "y":2.25}, {"x":15.75, "y":2.25}, {"x":16.75, "y":2.25}, {"x":18, "y":2.25, "w":1.25, "h":2}, {"x":19.25, "y":2.25}, {"x":1, "y":3.25}, {"x":2, "y":3.25}, {"x":3, "y":3.25}, {"x":4.25, "y":3.25, "w":1.75}, {"x":6, "y":3.25}, {"x":7, "y":3.25}, {"x":8, "y":3.25}, {"x":9, "y":3.25}, {"x":10, "y":3.25}, {"x":11, "y":3.25}, {"x":12, "y":3.25}, {"x":13, "y":3.25}, {"x":14, "y":3.25}, {"x":15, "y":3.25}, {"x":16, "y":3.25}, {"x":17, "y":3.25}, {"x":19.25, "y":3.25}, {"x":0, "y":4.25, "h":2}, {"x":1, "y":4.25}, {"x":2, "y":4.25}, {"x":3, "y":4.25}, {"x":4.25, "y":4.25, "w":2.25}, {"x":6.5, "y":4.25}, {"x":7.5, "y":4.25}, {"x":8.5, "y":4.25}, {"x":9.5, "y":4.25}, {"x":10.5, "y":4.25}, {"x":11.5, "y":4.25}, {"x":12.5, "y":4.25}, {"x":13.5, "y":4.25}, {"x":14.5, "y":4.25}, {"x":15.5, "y":4.25}, {"x":16.5, "y":4.25}, {"x":17.5, "y":4.25, "w":1.75}, {"x":19.25, "y":4.25}, {"x":1, "y":5.25}, {"x":2, "y":5.25, "w":2}, {"x":4.25, "y":5.25, "w":1.5}, {"x":5.75, "y":5.25}, {"x":6.75, "y":5.25, "w":1.5}, {"x":8.25, "y":5.25}, {"x":9.25, "y":5.25, "w":3}, {"x":12.25, "y":5.25}, {"x":13.25, "y":5.25}, {"x":14.25, "y":5.25}, {"x":15.25, "y":5.25}, {"x":16.25, "y":5.25}, {"x":17.25, "y":5.25}, {"x":18.25, "y":5.25}, {"x":19.25, "y":5.25}] - }, - "LAYOUT_jis_macro": { - "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4.25, "y":0}, {"x":5.75, "y":0}, {"x":6.75, "y":0}, {"x":7.75, "y":0}, {"x":8.75, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.75, "y":0}, {"x":15.75, "y":0}, {"x":16.75, "y":0}, {"x":17.75, "y":0}, {"x":19.25, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":4.25, "y":1.25}, {"x":5.25, "y":1.25}, {"x":6.25, "y":1.25}, {"x":7.25, "y":1.25}, {"x":8.25, "y":1.25}, {"x":9.25, "y":1.25}, {"x":10.25, "y":1.25}, {"x":11.25, "y":1.25}, {"x":12.25, "y":1.25}, {"x":13.25, "y":1.25}, {"x":14.25, "y":1.25}, {"x":15.25, "y":1.25}, {"x":16.25, "y":1.25}, {"x":17.25, "y":1.25}, {"x":18.25, "y":1.25}, {"x":19.25, "y":1.25}, {"x":0, "y":2.25}, {"x":1, "y":2.25}, {"x":2, "y":2.25}, {"x":3, "y":2.25}, {"x":4.25, "y":2.25, "w":1.5}, {"x":5.75, "y":2.25}, {"x":6.75, "y":2.25}, {"x":7.75, "y":2.25}, {"x":8.75, "y":2.25}, {"x":9.75, "y":2.25}, {"x":10.75, "y":2.25}, {"x":11.75, "y":2.25}, {"x":12.75, "y":2.25}, {"x":13.75, "y":2.25}, {"x":14.75, "y":2.25}, {"x":15.75, "y":2.25}, {"x":16.75, "y":2.25}, {"x":18, "y":2.25, "w":1.25, "h":2}, {"x":19.25, "y":2.25}, {"x":0, "y":3.25}, {"x":1, "y":3.25}, {"x":2, "y":3.25}, {"x":3, "y":3.25}, {"x":4.25, "y":3.25, "w":1.75}, {"x":6, "y":3.25}, {"x":7, "y":3.25}, {"x":8, "y":3.25}, {"x":9, "y":3.25}, {"x":10, "y":3.25}, {"x":11, "y":3.25}, {"x":12, "y":3.25}, {"x":13, "y":3.25}, {"x":14, "y":3.25}, {"x":15, "y":3.25}, {"x":16, "y":3.25}, {"x":17, "y":3.25}, {"x":19.25, "y":3.25}, {"x":0, "y":4.25}, {"x":1, "y":4.25}, {"x":2, "y":4.25}, {"x":3, "y":4.25}, {"x":4.25, "y":4.25, "w":2.25}, {"x":6.5, "y":4.25}, {"x":7.5, "y":4.25}, {"x":8.5, "y":4.25}, {"x":9.5, "y":4.25}, {"x":10.5, "y":4.25}, {"x":11.5, "y":4.25}, {"x":12.5, "y":4.25}, {"x":13.5, "y":4.25}, {"x":14.5, "y":4.25}, {"x":15.5, "y":4.25}, {"x":16.5, "y":4.25}, {"x":17.5, "y":4.25, "w":1.75}, {"x":19.25, "y":4.25}, {"x":0, "y":5.25}, {"x":1, "y":5.25}, {"x":2, "y":5.25}, {"x":3, "y":5.25}, {"x":4.25, "y":5.25, "w":1.5}, {"x":5.75, "y":5.25}, {"x":6.75, "y":5.25, "w":1.5}, {"x":8.25, "y":5.25}, {"x":9.25, "y":5.25, "w":3}, {"x":12.25, "y":5.25}, {"x":13.25, "y":5.25}, {"x":14.25, "y":5.25}, {"x":15.25, "y":5.25}, {"x":16.25, "y":5.25}, {"x":17.25, "y":5.25}, {"x":18.25, "y":5.25}, {"x":19.25, "y":5.25}] - }, - "LAYOUT_all": { - "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4.25, "y":0}, {"x":5.75, "y":0}, {"x":6.75, "y":0}, {"x":7.75, "y":0}, {"x":8.75, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.75, "y":0}, {"x":15.75, "y":0}, {"x":16.75, "y":0}, {"x":17.75, "y":0}, {"x":19.25, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":4.25, "y":1.25}, {"x":5.25, "y":1.25}, {"x":6.25, "y":1.25}, {"x":7.25, "y":1.25}, {"x":8.25, "y":1.25}, {"x":9.25, "y":1.25}, {"x":10.25, "y":1.25}, {"x":11.25, "y":1.25}, {"x":12.25, "y":1.25}, {"x":13.25, "y":1.25}, {"x":14.25, "y":1.25}, {"x":15.25, "y":1.25}, {"x":16.25, "y":1.25}, {"x":17.25, "y":1.25}, {"x":18.25, "y":1.25}, {"x":19.25, "y":1.25}, {"x":0, "y":2.25}, {"x":1, "y":2.25}, {"x":2, "y":2.25}, {"x":3, "y":2.25}, {"x":4.25, "y":2.25, "w":1.5}, {"x":5.75, "y":2.25}, {"x":6.75, "y":2.25}, {"x":7.75, "y":2.25}, {"x":8.75, "y":2.25}, {"x":9.75, "y":2.25}, {"x":10.75, "y":2.25}, {"x":11.75, "y":2.25}, {"x":12.75, "y":2.25}, {"x":13.75, "y":2.25}, {"x":14.75, "y":2.25}, {"x":15.75, "y":2.25}, {"x":16.75, "y":2.25}, {"x":17.75, "y":2.25, "w":1.5}, {"x":19.25, "y":2.25}, {"x":0, "y":3.25}, {"x":1, "y":3.25}, {"x":2, "y":3.25}, {"x":3, "y":3.25}, {"x":4.25, "y":3.25, "w":1.75}, {"x":6, "y":3.25}, {"x":7, "y":3.25}, {"x":8, "y":3.25}, {"x":9, "y":3.25}, {"x":10, "y":3.25}, {"x":11, "y":3.25}, {"x":12, "y":3.25}, {"x":13, "y":3.25}, {"x":14, "y":3.25}, {"x":15, "y":3.25}, {"x":16, "y":3.25}, {"x":17, "y":3.25, "w":2.25}, {"x":19.25, "y":3.25}, {"x":0, "y":4.25}, {"x":1, "y":4.25}, {"x":2, "y":4.25}, {"x":3, "y":4.25}, {"x":4.25, "y":4.25, "w":1.25}, {"x":5.5, "y":4.25}, {"x":6.5, "y":4.25}, {"x":7.5, "y":4.25}, {"x":8.5, "y":4.25}, {"x":9.5, "y":4.25}, {"x":10.5, "y":4.25}, {"x":11.5, "y":4.25}, {"x":12.5, "y":4.25}, {"x":13.5, "y":4.25}, {"x":14.5, "y":4.25}, {"x":15.5, "y":4.25}, {"x":16.5, "y":4.25, "w":1.75}, {"x":18.25, "y":4.25}, {"x":19.25, "y":4.25}, {"x":0, "y":5.25}, {"x":1, "y":5.25}, {"x":2, "y":5.25}, {"x":3, "y":5.25}, {"x":4.25, "y":5.25, "w":1.5}, {"x":5.75, "y":5.25}, {"x":6.75, "y":5.25, "w":1.5}, {"x":8.25, "y":5.25}, {"x":9.25, "y":5.25, "w":3}, {"x":12.25, "y":5.25}, {"x":13.25, "y":5.25}, {"x":14.25, "y":5.25}, {"x":15.25, "y":5.25}, {"x":16.25, "y":5.25}, {"x":17.25, "y":5.25}, {"x":18.25, "y":5.25}, {"x":19.25, "y":5.25}] - } - } -} diff --git a/keyboards/ramonimbao/wete/keymaps/jis/keymap.c b/keyboards/ramonimbao/wete/keymaps/jis/keymap.c deleted file mode 100644 index 14dfb1ca6d15..000000000000 --- a/keyboards/ramonimbao/wete/keymaps/jis/keymap.c +++ /dev/null @@ -1,39 +0,0 @@ -/* -Copyright 2012,2013 Jun Wako - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#include QMK_KEYBOARD_H - -#include "keymap_jp.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_jis_rhnp( - KC_INSERT, KC_PSCREEN, KC_PAUSE, KC_SLCK, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, - KC_NUMLOCK, KC_KP_SLASH, KC_KP_ASTERISK, KC_KP_MINUS, JP_ZHTG, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, JP_MINS, JP_CIRC, JP_YEN, KC_BSPC, KC_HOME, - KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_PLUS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_AT, JP_LBRC, KC_ENTER, KC_END, - KC_KP_4, KC_KP_5, KC_KP_6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, JP_SCLN, JP_COLN, JP_RBRC, KC_PGUP, - KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_ENTER, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, JP_COMM, JP_DOT, JP_SLSH, JP_BSLS, KC_RSFT, KC_PGDN, - KC_KP_0, KC_KP_DOT, KC_LCTL, KC_LGUI, KC_LALT, JP_MHEN, KC_SPC, JP_HENK, JP_KANA, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT - ), - [1] = LAYOUT_jis_rhnp( - KC_NO, KC_NO, KC_NO, KC_NO, BL_TOGG, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_NO, KC_NO, KC_NO, KC_NO, KC_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_TRNS, BL_OFF, BL_DEC, BL_INC, BL_ON - ) -}; diff --git a/keyboards/ramonimbao/wete/keymaps/via/rules.mk b/keyboards/ramonimbao/wete/keymaps/via/rules.mk deleted file mode 100644 index ee1e4ceeb4b8..000000000000 --- a/keyboards/ramonimbao/wete/keymaps/via/rules.mk +++ /dev/null @@ -1,2 +0,0 @@ -VIA_ENABLE = yes -BOOTMAGIC_ENABLE = lite diff --git a/keyboards/ramonimbao/wete/readme.md b/keyboards/ramonimbao/wete/readme.md index f0f26b78bd84..575b342b46d8 100644 --- a/keyboards/ramonimbao/wete/readme.md +++ b/keyboards/ramonimbao/wete/readme.md @@ -1,14 +1,14 @@ -# Wete +# Wete and Wete R2 -![Wete Keyboard](https://i.imgur.com/dZ4FRar.jpg) - -A southpaw full-sized keyboard. +Southpaw numpad 75% boards. * Keyboard Maintainer: [Ramon Imbao](https://github.com/ramonimbao) -* Hardware Supported: STM32F072CBT6 +* Hardware Supported: STM32F072 (R1) and ATmega32u4 (R2) -Make example for this keyboard (after setting up your build environment): +Make example for these keyboards (after setting up your build environment): - make ramonimbao/wete:default + make ramonimbao/wete/v1:default + + make ramonimbao/wete/v2: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/ramonimbao/wete/rules.mk b/keyboards/ramonimbao/wete/rules.mk index 7eb46b9ba4a4..f4a04ab47f40 100644 --- a/keyboards/ramonimbao/wete/rules.mk +++ b/keyboards/ramonimbao/wete/rules.mk @@ -1,23 +1 @@ -# MCU name -MCU = STM32F072 - -# Bootloader selection -BOOTLOADER = stm32-dfu - -# Build Options -# comment out to disable the options. -# - -#BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = yes # Console for debug -COMMAND_ENABLE = yes # Commands for debug and configuration -SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend -NKRO_ENABLE = yes # USB Nkey Rollover -CUSTOM_MATRIX = no # Custom matrix file -BACKLIGHT_ENABLE = yes -RGBLIGHT_ENABLE = yes - -# Enter lower-power sleep mode when on the ChibiOS idle thread -OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE +DEFAULT_FOLDER = ramonimbao/wete/v2 diff --git a/keyboards/ramonimbao/wete/chconf.h b/keyboards/ramonimbao/wete/v1/chconf.h similarity index 100% rename from keyboards/ramonimbao/wete/chconf.h rename to keyboards/ramonimbao/wete/v1/chconf.h diff --git a/keyboards/ramonimbao/wete/config.h b/keyboards/ramonimbao/wete/v1/config.h similarity index 100% rename from keyboards/ramonimbao/wete/config.h rename to keyboards/ramonimbao/wete/v1/config.h diff --git a/keyboards/ramonimbao/wete/halconf.h b/keyboards/ramonimbao/wete/v1/halconf.h similarity index 100% rename from keyboards/ramonimbao/wete/halconf.h rename to keyboards/ramonimbao/wete/v1/halconf.h diff --git a/keyboards/ramonimbao/wete/v1/info.json b/keyboards/ramonimbao/wete/v1/info.json new file mode 100644 index 000000000000..7886b864aba5 --- /dev/null +++ b/keyboards/ramonimbao/wete/v1/info.json @@ -0,0 +1,37 @@ +{ + "keyboard_name": "Wete", + "url": "", + "maintainer": "Ramon Imbao", + "layouts": { + "LAYOUT_ansi_rhnp": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4.25, "y":0}, {"x":5.75, "y":0}, {"x":6.75, "y":0}, {"x":7.75, "y":0}, {"x":8.75, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.75, "y":0}, {"x":15.75, "y":0}, {"x":16.75, "y":0}, {"x":17.75, "y":0}, {"x":19.25, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":4.25, "y":1.25}, {"x":5.25, "y":1.25}, {"x":6.25, "y":1.25}, {"x":7.25, "y":1.25}, {"x":8.25, "y":1.25}, {"x":9.25, "y":1.25}, {"x":10.25, "y":1.25}, {"x":11.25, "y":1.25}, {"x":12.25, "y":1.25}, {"x":13.25, "y":1.25}, {"x":14.25, "y":1.25}, {"x":15.25, "y":1.25}, {"x":16.25, "y":1.25}, {"x":17.25, "y":1.25, "w":2}, {"x":19.25, "y":1.25}, {"x":0, "y":2.25}, {"x":1, "y":2.25}, {"x":2, "y":2.25}, {"x":3, "y":2.25, "h":2}, {"x":4.25, "y":2.25, "w":1.5}, {"x":5.75, "y":2.25}, {"x":6.75, "y":2.25}, {"x":7.75, "y":2.25}, {"x":8.75, "y":2.25}, {"x":9.75, "y":2.25}, {"x":10.75, "y":2.25}, {"x":11.75, "y":2.25}, {"x":12.75, "y":2.25}, {"x":13.75, "y":2.25}, {"x":14.75, "y":2.25}, {"x":15.75, "y":2.25}, {"x":16.75, "y":2.25}, {"x":17.75, "y":2.25, "w":1.5}, {"x":19.25, "y":2.25}, {"x":0, "y":3.25}, {"x":1, "y":3.25}, {"x":2, "y":3.25}, {"x":4.25, "y":3.25, "w":1.75}, {"x":6, "y":3.25}, {"x":7, "y":3.25}, {"x":8, "y":3.25}, {"x":9, "y":3.25}, {"x":10, "y":3.25}, {"x":11, "y":3.25}, {"x":12, "y":3.25}, {"x":13, "y":3.25}, {"x":14, "y":3.25}, {"x":15, "y":3.25}, {"x":16, "y":3.25}, {"x":17, "y":3.25, "w":2.25}, {"x":19.25, "y":3.25}, {"x":0, "y":4.25}, {"x":1, "y":4.25}, {"x":2, "y":4.25}, {"x":3, "y":4.25, "h":2}, {"x":4.25, "y":4.25, "w":2.25}, {"x":6.5, "y":4.25}, {"x":7.5, "y":4.25}, {"x":8.5, "y":4.25}, {"x":9.5, "y":4.25}, {"x":10.5, "y":4.25}, {"x":11.5, "y":4.25}, {"x":12.5, "y":4.25}, {"x":13.5, "y":4.25}, {"x":14.5, "y":4.25}, {"x":15.5, "y":4.25}, {"x":16.5, "y":4.25, "w":1.75}, {"x":18.25, "y":4.25}, {"x":19.25, "y":4.25}, {"x":0, "y":5.25, "w":2}, {"x":2, "y":5.25}, {"x":4.25, "y":5.25, "w":1.25}, {"x":5.5, "y":5.25, "w":1.25}, {"x":6.75, "y":5.25, "w":1.25}, {"x":8, "y":5.25, "w":6.25}, {"x":14.25, "y":5.25, "w":1.25}, {"x":15.5, "y":5.25, "w":1.25}, {"x":17.25, "y":5.25}, {"x":18.25, "y":5.25}, {"x":19.25, "y":5.25}] + }, + "LAYOUT_ansi_lhnp": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4.25, "y":0}, {"x":5.75, "y":0}, {"x":6.75, "y":0}, {"x":7.75, "y":0}, {"x":8.75, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.75, "y":0}, {"x":15.75, "y":0}, {"x":16.75, "y":0}, {"x":17.75, "y":0}, {"x":19.25, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":4.25, "y":1.25}, {"x":5.25, "y":1.25}, {"x":6.25, "y":1.25}, {"x":7.25, "y":1.25}, {"x":8.25, "y":1.25}, {"x":9.25, "y":1.25}, {"x":10.25, "y":1.25}, {"x":11.25, "y":1.25}, {"x":12.25, "y":1.25}, {"x":13.25, "y":1.25}, {"x":14.25, "y":1.25}, {"x":15.25, "y":1.25}, {"x":16.25, "y":1.25}, {"x":17.25, "y":1.25, "w":2}, {"x":19.25, "y":1.25}, {"x":0, "y":2.25, "h":2}, {"x":1, "y":2.25}, {"x":2, "y":2.25}, {"x":3, "y":2.25}, {"x":4.25, "y":2.25, "w":1.5}, {"x":5.75, "y":2.25}, {"x":6.75, "y":2.25}, {"x":7.75, "y":2.25}, {"x":8.75, "y":2.25}, {"x":9.75, "y":2.25}, {"x":10.75, "y":2.25}, {"x":11.75, "y":2.25}, {"x":12.75, "y":2.25}, {"x":13.75, "y":2.25}, {"x":14.75, "y":2.25}, {"x":15.75, "y":2.25}, {"x":16.75, "y":2.25}, {"x":17.75, "y":2.25, "w":1.5}, {"x":19.25, "y":2.25}, {"x":1, "y":3.25}, {"x":2, "y":3.25}, {"x":3, "y":3.25}, {"x":4.25, "y":3.25, "w":1.75}, {"x":6, "y":3.25}, {"x":7, "y":3.25}, {"x":8, "y":3.25}, {"x":9, "y":3.25}, {"x":10, "y":3.25}, {"x":11, "y":3.25}, {"x":12, "y":3.25}, {"x":13, "y":3.25}, {"x":14, "y":3.25}, {"x":15, "y":3.25}, {"x":16, "y":3.25}, {"x":17, "y":3.25, "w":2.25}, {"x":19.25, "y":3.25}, {"x":0, "y":4.25, "h":2}, {"x":1, "y":4.25}, {"x":2, "y":4.25}, {"x":3, "y":4.25}, {"x":4.25, "y":4.25, "w":2.25}, {"x":6.5, "y":4.25}, {"x":7.5, "y":4.25}, {"x":8.5, "y":4.25}, {"x":9.5, "y":4.25}, {"x":10.5, "y":4.25}, {"x":11.5, "y":4.25}, {"x":12.5, "y":4.25}, {"x":13.5, "y":4.25}, {"x":14.5, "y":4.25}, {"x":15.5, "y":4.25}, {"x":16.5, "y":4.25, "w":1.75}, {"x":18.25, "y":4.25}, {"x":19.25, "y":4.25}, {"x":1, "y":5.25}, {"x":2, "y":5.25, "w":2}, {"x":4.25, "y":5.25, "w":1.25}, {"x":5.5, "y":5.25, "w":1.25}, {"x":6.75, "y":5.25, "w":1.25}, {"x":8, "y":5.25, "w":6.25}, {"x":14.25, "y":5.25, "w":1.25}, {"x":15.5, "y":5.25, "w":1.25}, {"x":17.25, "y":5.25}, {"x":18.25, "y":5.25}, {"x":19.25, "y":5.25}] + }, + "LAYOUT_ansi_macro": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4.25, "y":0}, {"x":5.75, "y":0}, {"x":6.75, "y":0}, {"x":7.75, "y":0}, {"x":8.75, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.75, "y":0}, {"x":15.75, "y":0}, {"x":16.75, "y":0}, {"x":17.75, "y":0}, {"x":19.25, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":4.25, "y":1.25}, {"x":5.25, "y":1.25}, {"x":6.25, "y":1.25}, {"x":7.25, "y":1.25}, {"x":8.25, "y":1.25}, {"x":9.25, "y":1.25}, {"x":10.25, "y":1.25}, {"x":11.25, "y":1.25}, {"x":12.25, "y":1.25}, {"x":13.25, "y":1.25}, {"x":14.25, "y":1.25}, {"x":15.25, "y":1.25}, {"x":16.25, "y":1.25}, {"x":17.25, "y":1.25, "w":2}, {"x":19.25, "y":1.25}, {"x":0, "y":2.25}, {"x":1, "y":2.25}, {"x":2, "y":2.25}, {"x":3, "y":2.25}, {"x":4.25, "y":2.25, "w":1.5}, {"x":5.75, "y":2.25}, {"x":6.75, "y":2.25}, {"x":7.75, "y":2.25}, {"x":8.75, "y":2.25}, {"x":9.75, "y":2.25}, {"x":10.75, "y":2.25}, {"x":11.75, "y":2.25}, {"x":12.75, "y":2.25}, {"x":13.75, "y":2.25}, {"x":14.75, "y":2.25}, {"x":15.75, "y":2.25}, {"x":16.75, "y":2.25}, {"x":17.75, "y":2.25, "w":1.5}, {"x":19.25, "y":2.25}, {"x":0, "y":3.25}, {"x":1, "y":3.25}, {"x":2, "y":3.25}, {"x":3, "y":3.25}, {"x":4.25, "y":3.25, "w":1.75}, {"x":6, "y":3.25}, {"x":7, "y":3.25}, {"x":8, "y":3.25}, {"x":9, "y":3.25}, {"x":10, "y":3.25}, {"x":11, "y":3.25}, {"x":12, "y":3.25}, {"x":13, "y":3.25}, {"x":14, "y":3.25}, {"x":15, "y":3.25}, {"x":16, "y":3.25}, {"x":17, "y":3.25, "w":2.25}, {"x":19.25, "y":3.25}, {"x":0, "y":4.25}, {"x":1, "y":4.25}, {"x":2, "y":4.25}, {"x":3, "y":4.25}, {"x":4.25, "y":4.25, "w":2.25}, {"x":6.5, "y":4.25}, {"x":7.5, "y":4.25}, {"x":8.5, "y":4.25}, {"x":9.5, "y":4.25}, {"x":10.5, "y":4.25}, {"x":11.5, "y":4.25}, {"x":12.5, "y":4.25}, {"x":13.5, "y":4.25}, {"x":14.5, "y":4.25}, {"x":15.5, "y":4.25}, {"x":16.5, "y":4.25, "w":1.75}, {"x":18.25, "y":4.25}, {"x":19.25, "y":4.25}, {"x":0, "y":5.25}, {"x":1, "y":5.25}, {"x":2, "y":5.25}, {"x":3, "y":5.25}, {"x":4.25, "y":5.25, "w":1.25}, {"x":5.5, "y":5.25, "w":1.25}, {"x":6.75, "y":5.25, "w":1.25}, {"x":8, "y":5.25, "w":6.25}, {"x":14.25, "y":5.25, "w":1.25}, {"x":15.5, "y":5.25, "w":1.25}, {"x":17.25, "y":5.25}, {"x":18.25, "y":5.25}, {"x":19.25, "y":5.25}] + }, + "LAYOUT_iso_rhnp": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4.25, "y":0}, {"x":5.75, "y":0}, {"x":6.75, "y":0}, {"x":7.75, "y":0}, {"x":8.75, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.75, "y":0}, {"x":15.75, "y":0}, {"x":16.75, "y":0}, {"x":17.75, "y":0}, {"x":19.25, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":4.25, "y":1.25}, {"x":5.25, "y":1.25}, {"x":6.25, "y":1.25}, {"x":7.25, "y":1.25}, {"x":8.25, "y":1.25}, {"x":9.25, "y":1.25}, {"x":10.25, "y":1.25}, {"x":11.25, "y":1.25}, {"x":12.25, "y":1.25}, {"x":13.25, "y":1.25}, {"x":14.25, "y":1.25}, {"x":15.25, "y":1.25}, {"x":16.25, "y":1.25}, {"x":17.25, "y":1.25, "w":2}, {"x":19.25, "y":1.25}, {"x":0, "y":2.25}, {"x":1, "y":2.25}, {"x":2, "y":2.25}, {"x":3, "y":2.25, "h":2}, {"x":4.25, "y":2.25, "w":1.5}, {"x":5.75, "y":2.25}, {"x":6.75, "y":2.25}, {"x":7.75, "y":2.25}, {"x":8.75, "y":2.25}, {"x":9.75, "y":2.25}, {"x":10.75, "y":2.25}, {"x":11.75, "y":2.25}, {"x":12.75, "y":2.25}, {"x":13.75, "y":2.25}, {"x":14.75, "y":2.25}, {"x":15.75, "y":2.25}, {"x":16.75, "y":2.25}, {"x":18, "y":2.25, "w":1.25, "h":2}, {"x":19.25, "y":2.25}, {"x":0, "y":3.25}, {"x":1, "y":3.25}, {"x":2, "y":3.25}, {"x":4.25, "y":3.25, "w":1.75}, {"x":6, "y":3.25}, {"x":7, "y":3.25}, {"x":8, "y":3.25}, {"x":9, "y":3.25}, {"x":10, "y":3.25}, {"x":11, "y":3.25}, {"x":12, "y":3.25}, {"x":13, "y":3.25}, {"x":14, "y":3.25}, {"x":15, "y":3.25}, {"x":16, "y":3.25}, {"x":17, "y":3.25}, {"x":19.25, "y":3.25}, {"x":0, "y":4.25}, {"x":1, "y":4.25}, {"x":2, "y":4.25}, {"x":3, "y":4.25, "h":2}, {"x":4.25, "y":4.25, "w":1.25}, {"x":5.5, "y":4.25}, {"x":6.5, "y":4.25}, {"x":7.5, "y":4.25}, {"x":8.5, "y":4.25}, {"x":9.5, "y":4.25}, {"x":10.5, "y":4.25}, {"x":11.5, "y":4.25}, {"x":12.5, "y":4.25}, {"x":13.5, "y":4.25}, {"x":14.5, "y":4.25}, {"x":15.5, "y":4.25}, {"x":16.5, "y":4.25, "w":1.75}, {"x":18.25, "y":4.25}, {"x":19.25, "y":4.25}, {"x":0, "y":5.25, "w":2}, {"x":2, "y":5.25}, {"x":4.25, "y":5.25, "w":1.25}, {"x":5.5, "y":5.25, "w":1.25}, {"x":6.75, "y":5.25, "w":1.25}, {"x":8, "y":5.25, "w":6.25}, {"x":14.25, "y":5.25, "w":1.25}, {"x":15.5, "y":5.25, "w":1.25}, {"x":17.25, "y":5.25}, {"x":18.25, "y":5.25}, {"x":19.25, "y":5.25}] + }, + "LAYOUT_iso_lhnp": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4.25, "y":0}, {"x":5.75, "y":0}, {"x":6.75, "y":0}, {"x":7.75, "y":0}, {"x":8.75, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.75, "y":0}, {"x":15.75, "y":0}, {"x":16.75, "y":0}, {"x":17.75, "y":0}, {"x":19.25, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":4.25, "y":1.25}, {"x":5.25, "y":1.25}, {"x":6.25, "y":1.25}, {"x":7.25, "y":1.25}, {"x":8.25, "y":1.25}, {"x":9.25, "y":1.25}, {"x":10.25, "y":1.25}, {"x":11.25, "y":1.25}, {"x":12.25, "y":1.25}, {"x":13.25, "y":1.25}, {"x":14.25, "y":1.25}, {"x":15.25, "y":1.25}, {"x":16.25, "y":1.25}, {"x":17.25, "y":1.25, "w":2}, {"x":19.25, "y":1.25}, {"x":0, "y":2.25, "h":2}, {"x":1, "y":2.25}, {"x":2, "y":2.25}, {"x":3, "y":2.25}, {"x":4.25, "y":2.25, "w":1.5}, {"x":5.75, "y":2.25}, {"x":6.75, "y":2.25}, {"x":7.75, "y":2.25}, {"x":8.75, "y":2.25}, {"x":9.75, "y":2.25}, {"x":10.75, "y":2.25}, {"x":11.75, "y":2.25}, {"x":12.75, "y":2.25}, {"x":13.75, "y":2.25}, {"x":14.75, "y":2.25}, {"x":15.75, "y":2.25}, {"x":16.75, "y":2.25}, {"x":18, "y":2.25, "w":1.25, "h":2}, {"x":19.25, "y":2.25}, {"x":1, "y":3.25}, {"x":2, "y":3.25}, {"x":3, "y":3.25}, {"x":4.25, "y":3.25, "w":1.75}, {"x":6, "y":3.25}, {"x":7, "y":3.25}, {"x":8, "y":3.25}, {"x":9, "y":3.25}, {"x":10, "y":3.25}, {"x":11, "y":3.25}, {"x":12, "y":3.25}, {"x":13, "y":3.25}, {"x":14, "y":3.25}, {"x":15, "y":3.25}, {"x":16, "y":3.25}, {"x":17, "y":3.25}, {"x":19.25, "y":3.25}, {"x":0, "y":4.25, "h":2}, {"x":1, "y":4.25}, {"x":2, "y":4.25}, {"x":3, "y":4.25}, {"x":4.25, "y":4.25, "w":1.25}, {"x":5.5, "y":4.25}, {"x":6.5, "y":4.25}, {"x":7.5, "y":4.25}, {"x":8.5, "y":4.25}, {"x":9.5, "y":4.25}, {"x":10.5, "y":4.25}, {"x":11.5, "y":4.25}, {"x":12.5, "y":4.25}, {"x":13.5, "y":4.25}, {"x":14.5, "y":4.25}, {"x":15.5, "y":4.25}, {"x":16.5, "y":4.25, "w":1.75}, {"x":18.25, "y":4.25}, {"x":19.25, "y":4.25}, {"x":1, "y":5.25}, {"x":2, "y":5.25, "w":2}, {"x":4.25, "y":5.25, "w":1.25}, {"x":5.5, "y":5.25, "w":1.25}, {"x":6.75, "y":5.25, "w":1.25}, {"x":8, "y":5.25, "w":6.25}, {"x":14.25, "y":5.25, "w":1.25}, {"x":15.5, "y":5.25, "w":1.25}, {"x":17.25, "y":5.25}, {"x":18.25, "y":5.25}, {"x":19.25, "y":5.25}] + }, + "LAYOUT_iso_macro": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4.25, "y":0}, {"x":5.75, "y":0}, {"x":6.75, "y":0}, {"x":7.75, "y":0}, {"x":8.75, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.75, "y":0}, {"x":15.75, "y":0}, {"x":16.75, "y":0}, {"x":17.75, "y":0}, {"x":19.25, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":4.25, "y":1.25}, {"x":5.25, "y":1.25}, {"x":6.25, "y":1.25}, {"x":7.25, "y":1.25}, {"x":8.25, "y":1.25}, {"x":9.25, "y":1.25}, {"x":10.25, "y":1.25}, {"x":11.25, "y":1.25}, {"x":12.25, "y":1.25}, {"x":13.25, "y":1.25}, {"x":14.25, "y":1.25}, {"x":15.25, "y":1.25}, {"x":16.25, "y":1.25}, {"x":17.25, "y":1.25, "w":2}, {"x":19.25, "y":1.25}, {"x":0, "y":2.25}, {"x":1, "y":2.25}, {"x":2, "y":2.25}, {"x":3, "y":2.25}, {"x":4.25, "y":2.25, "w":1.5}, {"x":5.75, "y":2.25}, {"x":6.75, "y":2.25}, {"x":7.75, "y":2.25}, {"x":8.75, "y":2.25}, {"x":9.75, "y":2.25}, {"x":10.75, "y":2.25}, {"x":11.75, "y":2.25}, {"x":12.75, "y":2.25}, {"x":13.75, "y":2.25}, {"x":14.75, "y":2.25}, {"x":15.75, "y":2.25}, {"x":16.75, "y":2.25}, {"x":18, "y":2.25, "w":1.25, "h":2}, {"x":19.25, "y":2.25}, {"x":0, "y":3.25}, {"x":1, "y":3.25}, {"x":2, "y":3.25}, {"x":3, "y":3.25}, {"x":4.25, "y":3.25, "w":1.75}, {"x":6, "y":3.25}, {"x":7, "y":3.25}, {"x":8, "y":3.25}, {"x":9, "y":3.25}, {"x":10, "y":3.25}, {"x":11, "y":3.25}, {"x":12, "y":3.25}, {"x":13, "y":3.25}, {"x":14, "y":3.25}, {"x":15, "y":3.25}, {"x":16, "y":3.25}, {"x":17, "y":3.25}, {"x":19.25, "y":3.25}, {"x":0, "y":4.25}, {"x":1, "y":4.25}, {"x":2, "y":4.25}, {"x":3, "y":4.25}, {"x":4.25, "y":4.25, "w":1.25}, {"x":5.5, "y":4.25}, {"x":6.5, "y":4.25}, {"x":7.5, "y":4.25}, {"x":8.5, "y":4.25}, {"x":9.5, "y":4.25}, {"x":10.5, "y":4.25}, {"x":11.5, "y":4.25}, {"x":12.5, "y":4.25}, {"x":13.5, "y":4.25}, {"x":14.5, "y":4.25}, {"x":15.5, "y":4.25}, {"x":16.5, "y":4.25, "w":1.75}, {"x":18.25, "y":4.25}, {"x":19.25, "y":4.25}, {"x":0, "y":5.25}, {"x":1, "y":5.25}, {"x":2, "y":5.25}, {"x":3, "y":5.25}, {"x":4.25, "y":5.25, "w":1.25}, {"x":5.5, "y":5.25, "w":1.25}, {"x":6.75, "y":5.25, "w":1.25}, {"x":8, "y":5.25, "w":6.25}, {"x":14.25, "y":5.25, "w":1.25}, {"x":15.5, "y":5.25, "w":1.25}, {"x":17.25, "y":5.25}, {"x":18.25, "y":5.25}, {"x":19.25, "y":5.25}] + }, + "LAYOUT_jis_rhnp": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4.25, "y":0}, {"x":5.75, "y":0}, {"x":6.75, "y":0}, {"x":7.75, "y":0}, {"x":8.75, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.75, "y":0}, {"x":15.75, "y":0}, {"x":16.75, "y":0}, {"x":17.75, "y":0}, {"x":19.25, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":4.25, "y":1.25}, {"x":5.25, "y":1.25}, {"x":6.25, "y":1.25}, {"x":7.25, "y":1.25}, {"x":8.25, "y":1.25}, {"x":9.25, "y":1.25}, {"x":10.25, "y":1.25}, {"x":11.25, "y":1.25}, {"x":12.25, "y":1.25}, {"x":13.25, "y":1.25}, {"x":14.25, "y":1.25}, {"x":15.25, "y":1.25}, {"x":16.25, "y":1.25}, {"x":17.25, "y":1.25}, {"x":18.25, "y":1.25}, {"x":19.25, "y":1.25}, {"x":0, "y":2.25}, {"x":1, "y":2.25}, {"x":2, "y":2.25}, {"x":3, "y":2.25, "h":2}, {"x":4.25, "y":2.25, "w":1.5}, {"x":5.75, "y":2.25}, {"x":6.75, "y":2.25}, {"x":7.75, "y":2.25}, {"x":8.75, "y":2.25}, {"x":9.75, "y":2.25}, {"x":10.75, "y":2.25}, {"x":11.75, "y":2.25}, {"x":12.75, "y":2.25}, {"x":13.75, "y":2.25}, {"x":14.75, "y":2.25}, {"x":15.75, "y":2.25}, {"x":16.75, "y":2.25}, {"x":18, "y":2.25, "w":1.25, "h":2}, {"x":19.25, "y":2.25}, {"x":0, "y":3.25}, {"x":1, "y":3.25}, {"x":2, "y":3.25}, {"x":4.25, "y":3.25, "w":1.75}, {"x":6, "y":3.25}, {"x":7, "y":3.25}, {"x":8, "y":3.25}, {"x":9, "y":3.25}, {"x":10, "y":3.25}, {"x":11, "y":3.25}, {"x":12, "y":3.25}, {"x":13, "y":3.25}, {"x":14, "y":3.25}, {"x":15, "y":3.25}, {"x":16, "y":3.25}, {"x":17, "y":3.25}, {"x":19.25, "y":3.25}, {"x":0, "y":4.25}, {"x":1, "y":4.25}, {"x":2, "y":4.25}, {"x":3, "y":4.25, "h":2}, {"x":4.25, "y":4.25, "w":2.25}, {"x":6.5, "y":4.25}, {"x":7.5, "y":4.25}, {"x":8.5, "y":4.25}, {"x":9.5, "y":4.25}, {"x":10.5, "y":4.25}, {"x":11.5, "y":4.25}, {"x":12.5, "y":4.25}, {"x":13.5, "y":4.25}, {"x":14.5, "y":4.25}, {"x":15.5, "y":4.25}, {"x":16.5, "y":4.25}, {"x":17.5, "y":4.25, "w":1.75}, {"x":19.25, "y":4.25}, {"x":0, "y":5.25, "w":2}, {"x":2, "y":5.25}, {"x":4.25, "y":5.25, "w":1.5}, {"x":5.75, "y":5.25}, {"x":6.75, "y":5.25, "w":1.5}, {"x":8.25, "y":5.25}, {"x":9.25, "y":5.25, "w":3}, {"x":12.25, "y":5.25}, {"x":13.25, "y":5.25}, {"x":14.25, "y":5.25}, {"x":15.25, "y":5.25}, {"x":16.25, "y":5.25}, {"x":17.25, "y":5.25}, {"x":18.25, "y":5.25}, {"x":19.25, "y":5.25}] + }, + "LAYOUT_jis_lhnp": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4.25, "y":0}, {"x":5.75, "y":0}, {"x":6.75, "y":0}, {"x":7.75, "y":0}, {"x":8.75, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.75, "y":0}, {"x":15.75, "y":0}, {"x":16.75, "y":0}, {"x":17.75, "y":0}, {"x":19.25, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":4.25, "y":1.25}, {"x":5.25, "y":1.25}, {"x":6.25, "y":1.25}, {"x":7.25, "y":1.25}, {"x":8.25, "y":1.25}, {"x":9.25, "y":1.25}, {"x":10.25, "y":1.25}, {"x":11.25, "y":1.25}, {"x":12.25, "y":1.25}, {"x":13.25, "y":1.25}, {"x":14.25, "y":1.25}, {"x":15.25, "y":1.25}, {"x":16.25, "y":1.25}, {"x":17.25, "y":1.25}, {"x":18.25, "y":1.25}, {"x":19.25, "y":1.25}, {"x":0, "y":2.25, "h":2}, {"x":1, "y":2.25}, {"x":2, "y":2.25}, {"x":3, "y":2.25}, {"x":4.25, "y":2.25, "w":1.5}, {"x":5.75, "y":2.25}, {"x":6.75, "y":2.25}, {"x":7.75, "y":2.25}, {"x":8.75, "y":2.25}, {"x":9.75, "y":2.25}, {"x":10.75, "y":2.25}, {"x":11.75, "y":2.25}, {"x":12.75, "y":2.25}, {"x":13.75, "y":2.25}, {"x":14.75, "y":2.25}, {"x":15.75, "y":2.25}, {"x":16.75, "y":2.25}, {"x":18, "y":2.25, "w":1.25, "h":2}, {"x":19.25, "y":2.25}, {"x":1, "y":3.25}, {"x":2, "y":3.25}, {"x":3, "y":3.25}, {"x":4.25, "y":3.25, "w":1.75}, {"x":6, "y":3.25}, {"x":7, "y":3.25}, {"x":8, "y":3.25}, {"x":9, "y":3.25}, {"x":10, "y":3.25}, {"x":11, "y":3.25}, {"x":12, "y":3.25}, {"x":13, "y":3.25}, {"x":14, "y":3.25}, {"x":15, "y":3.25}, {"x":16, "y":3.25}, {"x":17, "y":3.25}, {"x":19.25, "y":3.25}, {"x":0, "y":4.25, "h":2}, {"x":1, "y":4.25}, {"x":2, "y":4.25}, {"x":3, "y":4.25}, {"x":4.25, "y":4.25, "w":2.25}, {"x":6.5, "y":4.25}, {"x":7.5, "y":4.25}, {"x":8.5, "y":4.25}, {"x":9.5, "y":4.25}, {"x":10.5, "y":4.25}, {"x":11.5, "y":4.25}, {"x":12.5, "y":4.25}, {"x":13.5, "y":4.25}, {"x":14.5, "y":4.25}, {"x":15.5, "y":4.25}, {"x":16.5, "y":4.25}, {"x":17.5, "y":4.25, "w":1.75}, {"x":19.25, "y":4.25}, {"x":1, "y":5.25}, {"x":2, "y":5.25, "w":2}, {"x":4.25, "y":5.25, "w":1.5}, {"x":5.75, "y":5.25}, {"x":6.75, "y":5.25, "w":1.5}, {"x":8.25, "y":5.25}, {"x":9.25, "y":5.25, "w":3}, {"x":12.25, "y":5.25}, {"x":13.25, "y":5.25}, {"x":14.25, "y":5.25}, {"x":15.25, "y":5.25}, {"x":16.25, "y":5.25}, {"x":17.25, "y":5.25}, {"x":18.25, "y":5.25}, {"x":19.25, "y":5.25}] + }, + "LAYOUT_jis_macro": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4.25, "y":0}, {"x":5.75, "y":0}, {"x":6.75, "y":0}, {"x":7.75, "y":0}, {"x":8.75, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.75, "y":0}, {"x":15.75, "y":0}, {"x":16.75, "y":0}, {"x":17.75, "y":0}, {"x":19.25, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":4.25, "y":1.25}, {"x":5.25, "y":1.25}, {"x":6.25, "y":1.25}, {"x":7.25, "y":1.25}, {"x":8.25, "y":1.25}, {"x":9.25, "y":1.25}, {"x":10.25, "y":1.25}, {"x":11.25, "y":1.25}, {"x":12.25, "y":1.25}, {"x":13.25, "y":1.25}, {"x":14.25, "y":1.25}, {"x":15.25, "y":1.25}, {"x":16.25, "y":1.25}, {"x":17.25, "y":1.25}, {"x":18.25, "y":1.25}, {"x":19.25, "y":1.25}, {"x":0, "y":2.25}, {"x":1, "y":2.25}, {"x":2, "y":2.25}, {"x":3, "y":2.25}, {"x":4.25, "y":2.25, "w":1.5}, {"x":5.75, "y":2.25}, {"x":6.75, "y":2.25}, {"x":7.75, "y":2.25}, {"x":8.75, "y":2.25}, {"x":9.75, "y":2.25}, {"x":10.75, "y":2.25}, {"x":11.75, "y":2.25}, {"x":12.75, "y":2.25}, {"x":13.75, "y":2.25}, {"x":14.75, "y":2.25}, {"x":15.75, "y":2.25}, {"x":16.75, "y":2.25}, {"x":18, "y":2.25, "w":1.25, "h":2}, {"x":19.25, "y":2.25}, {"x":0, "y":3.25}, {"x":1, "y":3.25}, {"x":2, "y":3.25}, {"x":3, "y":3.25}, {"x":4.25, "y":3.25, "w":1.75}, {"x":6, "y":3.25}, {"x":7, "y":3.25}, {"x":8, "y":3.25}, {"x":9, "y":3.25}, {"x":10, "y":3.25}, {"x":11, "y":3.25}, {"x":12, "y":3.25}, {"x":13, "y":3.25}, {"x":14, "y":3.25}, {"x":15, "y":3.25}, {"x":16, "y":3.25}, {"x":17, "y":3.25}, {"x":19.25, "y":3.25}, {"x":0, "y":4.25}, {"x":1, "y":4.25}, {"x":2, "y":4.25}, {"x":3, "y":4.25}, {"x":4.25, "y":4.25, "w":2.25}, {"x":6.5, "y":4.25}, {"x":7.5, "y":4.25}, {"x":8.5, "y":4.25}, {"x":9.5, "y":4.25}, {"x":10.5, "y":4.25}, {"x":11.5, "y":4.25}, {"x":12.5, "y":4.25}, {"x":13.5, "y":4.25}, {"x":14.5, "y":4.25}, {"x":15.5, "y":4.25}, {"x":16.5, "y":4.25}, {"x":17.5, "y":4.25, "w":1.75}, {"x":19.25, "y":4.25}, {"x":0, "y":5.25}, {"x":1, "y":5.25}, {"x":2, "y":5.25}, {"x":3, "y":5.25}, {"x":4.25, "y":5.25, "w":1.5}, {"x":5.75, "y":5.25}, {"x":6.75, "y":5.25, "w":1.5}, {"x":8.25, "y":5.25}, {"x":9.25, "y":5.25, "w":3}, {"x":12.25, "y":5.25}, {"x":13.25, "y":5.25}, {"x":14.25, "y":5.25}, {"x":15.25, "y":5.25}, {"x":16.25, "y":5.25}, {"x":17.25, "y":5.25}, {"x":18.25, "y":5.25}, {"x":19.25, "y":5.25}] + }, + "LAYOUT_all": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4.25, "y":0}, {"x":5.75, "y":0}, {"x":6.75, "y":0}, {"x":7.75, "y":0}, {"x":8.75, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.75, "y":0}, {"x":15.75, "y":0}, {"x":16.75, "y":0}, {"x":17.75, "y":0}, {"x":19.25, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":4.25, "y":1.25}, {"x":5.25, "y":1.25}, {"x":6.25, "y":1.25}, {"x":7.25, "y":1.25}, {"x":8.25, "y":1.25}, {"x":9.25, "y":1.25}, {"x":10.25, "y":1.25}, {"x":11.25, "y":1.25}, {"x":12.25, "y":1.25}, {"x":13.25, "y":1.25}, {"x":14.25, "y":1.25}, {"x":15.25, "y":1.25}, {"x":16.25, "y":1.25}, {"x":17.25, "y":1.25}, {"x":18.25, "y":1.25}, {"x":19.25, "y":1.25}, {"x":0, "y":2.25}, {"x":1, "y":2.25}, {"x":2, "y":2.25}, {"x":3, "y":2.25}, {"x":4.25, "y":2.25, "w":1.5}, {"x":5.75, "y":2.25}, {"x":6.75, "y":2.25}, {"x":7.75, "y":2.25}, {"x":8.75, "y":2.25}, {"x":9.75, "y":2.25}, {"x":10.75, "y":2.25}, {"x":11.75, "y":2.25}, {"x":12.75, "y":2.25}, {"x":13.75, "y":2.25}, {"x":14.75, "y":2.25}, {"x":15.75, "y":2.25}, {"x":16.75, "y":2.25}, {"x":17.75, "y":2.25, "w":1.5}, {"x":19.25, "y":2.25}, {"x":0, "y":3.25}, {"x":1, "y":3.25}, {"x":2, "y":3.25}, {"x":3, "y":3.25}, {"x":4.25, "y":3.25, "w":1.75}, {"x":6, "y":3.25}, {"x":7, "y":3.25}, {"x":8, "y":3.25}, {"x":9, "y":3.25}, {"x":10, "y":3.25}, {"x":11, "y":3.25}, {"x":12, "y":3.25}, {"x":13, "y":3.25}, {"x":14, "y":3.25}, {"x":15, "y":3.25}, {"x":16, "y":3.25}, {"x":17, "y":3.25, "w":2.25}, {"x":19.25, "y":3.25}, {"x":0, "y":4.25}, {"x":1, "y":4.25}, {"x":2, "y":4.25}, {"x":3, "y":4.25}, {"x":4.25, "y":4.25, "w":1.25}, {"x":5.5, "y":4.25}, {"x":6.5, "y":4.25}, {"x":7.5, "y":4.25}, {"x":8.5, "y":4.25}, {"x":9.5, "y":4.25}, {"x":10.5, "y":4.25}, {"x":11.5, "y":4.25}, {"x":12.5, "y":4.25}, {"x":13.5, "y":4.25}, {"x":14.5, "y":4.25}, {"x":15.5, "y":4.25}, {"x":16.5, "y":4.25, "w":1.75}, {"x":18.25, "y":4.25}, {"x":19.25, "y":4.25}, {"x":0, "y":5.25}, {"x":1, "y":5.25}, {"x":2, "y":5.25}, {"x":3, "y":5.25}, {"x":4.25, "y":5.25, "w":1.5}, {"x":5.75, "y":5.25}, {"x":6.75, "y":5.25, "w":1.5}, {"x":8.25, "y":5.25}, {"x":9.25, "y":5.25, "w":3}, {"x":12.25, "y":5.25}, {"x":13.25, "y":5.25}, {"x":14.25, "y":5.25}, {"x":15.25, "y":5.25}, {"x":16.25, "y":5.25}, {"x":17.25, "y":5.25}, {"x":18.25, "y":5.25}, {"x":19.25, "y":5.25}] + } + } +} diff --git a/keyboards/ramonimbao/wete/keymaps/default/keymap.c b/keyboards/ramonimbao/wete/v1/keymaps/default/keymap.c similarity index 100% rename from keyboards/ramonimbao/wete/keymaps/default/keymap.c rename to keyboards/ramonimbao/wete/v1/keymaps/default/keymap.c diff --git a/keyboards/ramonimbao/wete/keymaps/iso/keymap.c b/keyboards/ramonimbao/wete/v1/keymaps/iso/keymap.c similarity index 100% rename from keyboards/ramonimbao/wete/keymaps/iso/keymap.c rename to keyboards/ramonimbao/wete/v1/keymaps/iso/keymap.c diff --git a/keyboards/ramonimbao/wete/v1/keymaps/jis/keymap.c b/keyboards/ramonimbao/wete/v1/keymaps/jis/keymap.c new file mode 100644 index 000000000000..8d65932219c4 --- /dev/null +++ b/keyboards/ramonimbao/wete/v1/keymaps/jis/keymap.c @@ -0,0 +1,39 @@ +/* +Copyright 2012,2013 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +#include "keymap_jp.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_jis_rhnp( + KC_INSERT, KC_PSCREEN, KC_PAUSE, KC_SLCK, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_NUMLOCK, KC_KP_SLASH, KC_KP_ASTERISK, KC_KP_MINUS, JP_ZKHK, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, JP_MINS, JP_CIRC, JP_YEN, KC_BSPC, KC_HOME, + KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_PLUS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_AT, JP_LBRC, KC_ENTER, KC_END, + KC_KP_4, KC_KP_5, KC_KP_6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, JP_SCLN, JP_COLN, JP_RBRC, KC_PGUP, + KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_ENTER, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, JP_COMM, JP_DOT, JP_SLSH, JP_BSLS, KC_RSFT, KC_PGDN, + KC_KP_0, KC_KP_DOT, KC_LCTL, KC_LGUI, KC_LALT, JP_MHEN, KC_SPC, JP_HENK, JP_KANA, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT + ), + [1] = LAYOUT_jis_rhnp( + KC_NO, KC_NO, KC_NO, KC_NO, BL_TOGG, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_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_TRNS, BL_OFF, BL_DEC, BL_INC, BL_ON + ) +}; diff --git a/keyboards/ramonimbao/wete/keymaps/via/config.h b/keyboards/ramonimbao/wete/v1/keymaps/via/config.h similarity index 100% rename from keyboards/ramonimbao/wete/keymaps/via/config.h rename to keyboards/ramonimbao/wete/v1/keymaps/via/config.h diff --git a/keyboards/ramonimbao/wete/keymaps/via/keymap.c b/keyboards/ramonimbao/wete/v1/keymaps/via/keymap.c similarity index 100% rename from keyboards/ramonimbao/wete/keymaps/via/keymap.c rename to keyboards/ramonimbao/wete/v1/keymaps/via/keymap.c diff --git a/keyboards/ramonimbao/wete/v1/keymaps/via/rules.mk b/keyboards/ramonimbao/wete/v1/keymaps/via/rules.mk new file mode 100644 index 000000000000..666e72557b07 --- /dev/null +++ b/keyboards/ramonimbao/wete/v1/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite diff --git a/keyboards/ramonimbao/wete/mcuconf.h b/keyboards/ramonimbao/wete/v1/mcuconf.h similarity index 100% rename from keyboards/ramonimbao/wete/mcuconf.h rename to keyboards/ramonimbao/wete/v1/mcuconf.h diff --git a/keyboards/ramonimbao/wete/v1/readme.md b/keyboards/ramonimbao/wete/v1/readme.md new file mode 100644 index 000000000000..f0f26b78bd84 --- /dev/null +++ b/keyboards/ramonimbao/wete/v1/readme.md @@ -0,0 +1,14 @@ +# Wete + +![Wete Keyboard](https://i.imgur.com/dZ4FRar.jpg) + +A southpaw full-sized keyboard. + +* Keyboard Maintainer: [Ramon Imbao](https://github.com/ramonimbao) +* Hardware Supported: STM32F072CBT6 + +Make example for this keyboard (after setting up your build environment): + + make ramonimbao/wete: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/ramonimbao/wete/v1/rules.mk b/keyboards/ramonimbao/wete/v1/rules.mk new file mode 100644 index 000000000000..39707b953cc8 --- /dev/null +++ b/keyboards/ramonimbao/wete/v1/rules.mk @@ -0,0 +1,23 @@ +# MCU name +MCU = STM32F072 + +# Bootloader selection +BOOTLOADER = stm32-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# 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 = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +SLEEP_LED_ENABLE = yes + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/ramonimbao/wete/v1/v1.c b/keyboards/ramonimbao/wete/v1/v1.c new file mode 100644 index 000000000000..b14a7dc7381f --- /dev/null +++ b/keyboards/ramonimbao/wete/v1/v1.c @@ -0,0 +1,19 @@ +#include "v1.h" + +void keyboard_pre_init_user(void) { + // Initialize indicator LED pins + setPinOutput(A14); // Num Lock + setPinOutput(A15); // Scroll Lock + setPinOutput(B3); // Caps Lock +} + +bool led_update_kb(led_t led_state) { + bool res = led_update_user(led_state); + if (res) { + writePin(A14, !led_state.num_lock); + writePin(A15, !led_state.scroll_lock); + writePin(B3, !led_state.caps_lock); + } + + return res; +} diff --git a/keyboards/ramonimbao/wete/wete.h b/keyboards/ramonimbao/wete/v1/v1.h similarity index 100% rename from keyboards/ramonimbao/wete/wete.h rename to keyboards/ramonimbao/wete/v1/v1.h diff --git a/keyboards/ramonimbao/wete/v2/config.h b/keyboards/ramonimbao/wete/v2/config.h new file mode 100644 index 000000000000..00cc6593d36d --- /dev/null +++ b/keyboards/ramonimbao/wete/v2/config.h @@ -0,0 +1,163 @@ +/* +Copyright 2021 Ramon Imbao + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xB16B +#define PRODUCT_ID 0x00B3 +#define DEVICE_VER 0x3500 +#define MANUFACTURER Ramon Imbao +#define PRODUCT Wete R2 + +/* key matrix size */ +#define MATRIX_ROWS 13 +#define MATRIX_COLS 10 + +/* + * 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 { B3, B2, B6, C6, C7, E6, F7, F6, F5, F4, F1, F0, NO_PIN } +#define MATRIX_COL_PINS { B1, B0, B7, B5, B4, D7, D6, D4, D5, D3 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Encoder pins */ +#define ENCODERS_PAD_A { D2 } +#define ENCODERS_PAD_B { D1 } + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +//#define LED_NUM_LOCK_PIN B0 +//#define LED_CAPS_LOCK_PIN B1 +//#define LED_SCROLL_LOCK_PIN B2 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +#define RGBLIGHT_LAYERS +#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF + +#define RGB_DI_PIN D0 +#ifdef RGB_DI_PIN +# define RGBLED_NUM 18 +# define RGBLIGHT_HUE_STEP 32 +# define RGBLIGHT_SAT_STEP 32 +# define RGBLIGHT_VAL_STEP 32 +//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +// # define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +# define RGBLIGHT_EFFECT_BREATHING +# define RGBLIGHT_EFFECT_RAINBOW_MOOD +# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +# define RGBLIGHT_EFFECT_CHRISTMAS +# define RGBLIGHT_EFFECT_STATIC_GRADIENT +# define RGBLIGHT_EFFECT_RGB_TEST +# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 + +// QoL improvements +#define PERMISSIVE_HOLD +#define IGNORE_MOD_TAP_INTERRUPT diff --git a/keyboards/ramonimbao/wete/v2/info.json b/keyboards/ramonimbao/wete/v2/info.json new file mode 100644 index 000000000000..8231871a1fcf --- /dev/null +++ b/keyboards/ramonimbao/wete/v2/info.json @@ -0,0 +1,350 @@ +{ + "keyboard_name": "Wete R2", + "url": "", + "maintainer": "Ramon Imbao", + "layouts": { + "LAYOUT_ansi": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4.25, "y":0}, + {"x":5.75, "y":0}, + {"x":6.75, "y":0}, + {"x":7.75, "y":0}, + {"x":8.75, "y":0}, + {"x":10.25, "y":0}, + {"x":11.25, "y":0}, + {"x":12.25, "y":0}, + {"x":13.25, "y":0}, + {"x":14.75, "y":0}, + {"x":15.75, "y":0}, + {"x":16.75, "y":0}, + {"x":17.75, "y":0}, + {"x":19.25, "y":0}, + + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2, "y":1.25}, + {"x":3, "y":1.25}, + {"x":4.25, "y":1.25}, + {"x":5.25, "y":1.25}, + {"x":6.25, "y":1.25}, + {"x":7.25, "y":1.25}, + {"x":8.25, "y":1.25}, + {"x":9.25, "y":1.25}, + {"x":10.25, "y":1.25}, + {"x":11.25, "y":1.25}, + {"x":12.25, "y":1.25}, + {"x":13.25, "y":1.25}, + {"x":14.25, "y":1.25}, + {"x":15.25, "y":1.25}, + {"x":16.25, "y":1.25}, + {"x":17.25, "y":1.25, "w":2}, + {"x":19.25, "y":1.25}, + + {"x":0, "y":2.25}, + {"x":1, "y":2.25}, + {"x":2, "y":2.25}, + {"x":3, "y":2.25, "h":2}, + {"x":4.25, "y":2.25, "w":1.5}, + {"x":5.75, "y":2.25}, + {"x":6.75, "y":2.25}, + {"x":7.75, "y":2.25}, + {"x":8.75, "y":2.25}, + {"x":9.75, "y":2.25}, + {"x":10.75, "y":2.25}, + {"x":11.75, "y":2.25}, + {"x":12.75, "y":2.25}, + {"x":13.75, "y":2.25}, + {"x":14.75, "y":2.25}, + {"x":15.75, "y":2.25}, + {"x":16.75, "y":2.25}, + {"x":17.75, "y":2.25, "w":1.5}, + {"x":19.25, "y":2.25}, + + {"x":0, "y":3.25}, + {"x":1, "y":3.25}, + {"x":2, "y":3.25}, + {"x":4.25, "y":3.25, "w":1.75}, + {"x":6, "y":3.25}, + {"x":7, "y":3.25}, + {"x":8, "y":3.25}, + {"x":9, "y":3.25}, + {"x":10, "y":3.25}, + {"x":11, "y":3.25}, + {"x":12, "y":3.25}, + {"x":13, "y":3.25}, + {"x":14, "y":3.25}, + {"x":15, "y":3.25}, + {"x":16, "y":3.25}, + {"x":17, "y":3.25, "w":2.25}, + {"x":19.25, "y":3.25}, + + {"x":0, "y":4.25}, + {"x":1, "y":4.25}, + {"x":2, "y":4.25}, + {"x":3, "y":4.25, "h":2}, + {"x":4.25, "y":4.25, "w":2.25}, + {"x":6.5, "y":4.25}, + {"x":7.5, "y":4.25}, + {"x":8.5, "y":4.25}, + {"x":9.5, "y":4.25}, + {"x":10.5, "y":4.25}, + {"x":11.5, "y":4.25}, + {"x":12.5, "y":4.25}, + {"x":13.5, "y":4.25}, + {"x":14.5, "y":4.25}, + {"x":15.5, "y":4.25}, + {"x":16.5, "y":4.25, "w":1.75}, + {"x":18.25, "y":4.25}, + {"x":19.25, "y":4.25}, + + {"x":0, "y":5.25, "w":2}, + {"x":2, "y":5.25}, + {"x":4.25, "y":5.25, "w":1.25}, + {"x":5.5, "y":5.25, "w":1.25}, + {"x":6.75, "y":5.25, "w":1.25}, + {"x":8, "y":5.25, "w":6.25}, + {"x":14.25, "y":5.25, "w":1.25}, + {"x":15.5, "y":5.25, "w":1.25}, + {"x":17.25, "y":5.25}, + {"x":18.25, "y":5.25}, + {"x":19.25, "y":5.25} + ] + }, + "LAYOUT_iso": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4.25, "y":0}, + {"x":5.75, "y":0}, + {"x":6.75, "y":0}, + {"x":7.75, "y":0}, + {"x":8.75, "y":0}, + {"x":10.25, "y":0}, + {"x":11.25, "y":0}, + {"x":12.25, "y":0}, + {"x":13.25, "y":0}, + {"x":14.75, "y":0}, + {"x":15.75, "y":0}, + {"x":16.75, "y":0}, + {"x":17.75, "y":0}, + {"x":19.25, "y":0}, + + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2, "y":1.25}, + {"x":3, "y":1.25}, + {"x":4.25, "y":1.25}, + {"x":5.25, "y":1.25}, + {"x":6.25, "y":1.25}, + {"x":7.25, "y":1.25}, + {"x":8.25, "y":1.25}, + {"x":9.25, "y":1.25}, + {"x":10.25, "y":1.25}, + {"x":11.25, "y":1.25}, + {"x":12.25, "y":1.25}, + {"x":13.25, "y":1.25}, + {"x":14.25, "y":1.25}, + {"x":15.25, "y":1.25}, + {"x":16.25, "y":1.25}, + {"x":17.25, "y":1.25, "w":2}, + {"x":19.25, "y":1.25}, + + {"x":0, "y":2.25}, + {"x":1, "y":2.25}, + {"x":2, "y":2.25}, + {"x":3, "y":2.25, "h":2}, + {"x":4.25, "y":2.25, "w":1.5}, + {"x":5.75, "y":2.25}, + {"x":6.75, "y":2.25}, + {"x":7.75, "y":2.25}, + {"x":8.75, "y":2.25}, + {"x":9.75, "y":2.25}, + {"x":10.75, "y":2.25}, + {"x":11.75, "y":2.25}, + {"x":12.75, "y":2.25}, + {"x":13.75, "y":2.25}, + {"x":14.75, "y":2.25}, + {"x":15.75, "y":2.25}, + {"x":16.75, "y":2.25}, + {"x":19.25, "y":2.25}, + + {"x":0, "y":3.25}, + {"x":1, "y":3.25}, + {"x":2, "y":3.25}, + {"x":4.25, "y":3.25, "w":1.75}, + {"x":6, "y":3.25}, + {"x":7, "y":3.25}, + {"x":8, "y":3.25}, + {"x":9, "y":3.25}, + {"x":10, "y":3.25}, + {"x":11, "y":3.25}, + {"x":12, "y":3.25}, + {"x":13, "y":3.25}, + {"x":14, "y":3.25}, + {"x":15, "y":3.25}, + {"x":16, "y":3.25}, + {"x":17, "y":3.25}, + {"x":18, "y":2.25, "w":1.25, "h":2}, + {"x":19.25, "y":3.25}, + + {"x":0, "y":4.25}, + {"x":1, "y":4.25}, + {"x":2, "y":4.25}, + {"x":3, "y":4.25, "h":2}, + {"x":4.25, "y":4.25, "w":1.25}, + {"x":5.5, "y":4.25}, + {"x":6.5, "y":4.25}, + {"x":7.5, "y":4.25}, + {"x":8.5, "y":4.25}, + {"x":9.5, "y":4.25}, + {"x":10.5, "y":4.25}, + {"x":11.5, "y":4.25}, + {"x":12.5, "y":4.25}, + {"x":13.5, "y":4.25}, + {"x":14.5, "y":4.25}, + {"x":15.5, "y":4.25}, + {"x":16.5, "y":4.25, "w":1.75}, + {"x":18.25, "y":4.25}, + {"x":19.25, "y":4.25}, + + {"x":0, "y":5.25, "w":2}, + {"x":2, "y":5.25}, + {"x":4.25, "y":5.25, "w":1.25}, + {"x":5.5, "y":5.25, "w":1.25}, + {"x":6.75, "y":5.25, "w":1.25}, + {"x":8, "y":5.25, "w":6.25}, + {"x":14.25, "y":5.25, "w":1.25}, + {"x":15.5, "y":5.25, "w":1.25}, + {"x":17.25, "y":5.25}, + {"x":18.25, "y":5.25}, + {"x":19.25, "y":5.25} + ] + }, + "LAYOUT_all": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4.25, "y":0}, + {"x":5.75, "y":0}, + {"x":6.75, "y":0}, + {"x":7.75, "y":0}, + {"x":8.75, "y":0}, + {"x":10.25, "y":0}, + {"x":11.25, "y":0}, + {"x":12.25, "y":0}, + {"x":13.25, "y":0}, + {"x":14.75, "y":0}, + {"x":15.75, "y":0}, + {"x":16.75, "y":0}, + {"x":17.75, "y":0}, + {"x":19.5, "y":0}, + + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2, "y":1.25}, + {"x":3, "y":1.25}, + {"x":4.25, "y":1.25}, + {"x":5.25, "y":1.25}, + {"x":6.25, "y":1.25}, + {"x":7.25, "y":1.25}, + {"x":8.25, "y":1.25}, + {"x":9.25, "y":1.25}, + {"x":10.25, "y":1.25}, + {"x":11.25, "y":1.25}, + {"x":12.25, "y":1.25}, + {"x":13.25, "y":1.25}, + {"x":14.25, "y":1.25}, + {"x":15.25, "y":1.25}, + {"x":16.25, "y":1.25}, + {"x":17.25, "y":1.25}, + {"x":18.25, "y":1.25}, + {"x":19.25, "y":1.25}, + + {"x":0, "y":2.25}, + {"x":1, "y":2.25}, + {"x":2, "y":2.25}, + {"x":3, "y":2.25}, + {"x":4.25, "y":2.25, "w":1.5}, + {"x":5.75, "y":2.25}, + {"x":6.75, "y":2.25}, + {"x":7.75, "y":2.25}, + {"x":8.75, "y":2.25}, + {"x":9.75, "y":2.25}, + {"x":10.75, "y":2.25}, + {"x":11.75, "y":2.25}, + {"x":12.75, "y":2.25}, + {"x":13.75, "y":2.25}, + {"x":14.75, "y":2.25}, + {"x":15.75, "y":2.25}, + {"x":16.75, "y":2.25}, + {"x":17.75, "y":2.25, "w":1.5}, + {"x":19.25, "y":2.25}, + + {"x":0, "y":3.25}, + {"x":1, "y":3.25}, + {"x":2, "y":3.25}, + {"x":3, "y":3.25}, + {"x":4.25, "y":3.25, "w":1.75}, + {"x":6, "y":3.25}, + {"x":7, "y":3.25}, + {"x":8, "y":3.25}, + {"x":9, "y":3.25}, + {"x":10, "y":3.25}, + {"x":11, "y":3.25}, + {"x":12, "y":3.25}, + {"x":13, "y":3.25}, + {"x":14, "y":3.25}, + {"x":15, "y":3.25}, + {"x":16, "y":3.25}, + {"x":17, "y":3.25, "w":2.25}, + {"x":19.25, "y":3.25}, + + {"x":0, "y":4.25}, + {"x":1, "y":4.25}, + {"x":2, "y":4.25}, + {"x":3, "y":4.25}, + {"x":4.25, "y":4.25, "w":1.25}, + {"x":5.5, "y":4.25}, + {"x":6.5, "y":4.25}, + {"x":7.5, "y":4.25}, + {"x":8.5, "y":4.25}, + {"x":9.5, "y":4.25}, + {"x":10.5, "y":4.25}, + {"x":11.5, "y":4.25}, + {"x":12.5, "y":4.25}, + {"x":13.5, "y":4.25}, + {"x":14.5, "y":4.25}, + {"x":15.5, "y":4.25}, + {"x":16.5, "y":4.25, "w":1.75}, + {"x":18.25, "y":4.25}, + {"x":19.25, "y":4.25}, + + {"x":0, "y":5.25}, + {"x":1, "y":5.25}, + {"x":2, "y":5.25}, + {"x":3, "y":5.25}, + {"x":4.25, "y":5.25, "w":1.25}, + {"x":5.5, "y":5.25, "w":1.25}, + {"x":6.75, "y":5.25, "w":1.25}, + {"x":8, "y":5.25, "w":6.25}, + {"x":14.25, "y":5.25}, + {"x":15.25, "y":5.25}, + {"x":16.25, "y":5.25}, + {"x":17.25, "y":5.25}, + {"x":18.25, "y":5.25}, + {"x":19.25, "y":5.25}, + + {"x":19, "y":0, "w":0.5}, + {"x":20.5, "y":0, "w":0.5} + ] + } + } +} diff --git a/keyboards/ramonimbao/wete/v2/keymaps/default/keymap.c b/keyboards/ramonimbao/wete/v2/keymaps/default/keymap.c new file mode 100644 index 000000000000..3fb3d02b3c80 --- /dev/null +++ b/keyboards/ramonimbao/wete/v2/keymaps/default/keymap.c @@ -0,0 +1,97 @@ +/* Copyright 2021 Ramon Imbao + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ansi( + KC_PSCR, KC_SLCK, KC_PAUS, KC_INS, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_P7, KC_P8, KC_P9, KC_PPLS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, + KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_P1, KC_P2, KC_P3, KC_PENT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_P0, KC_PDOT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), +}; + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + return true; +} + +#ifdef RGBLIGHT_ENABLE +// Can probably still be optimized, but I like it as is for clarity +const rgblight_segment_t PROGMEM ll_none[] = RGBLIGHT_LAYER_SEGMENTS( + {0,1, HSV_OFF}, + {1,1, HSV_OFF}, + {2,1, HSV_OFF} +); +const rgblight_segment_t PROGMEM ll_nl[] = RGBLIGHT_LAYER_SEGMENTS( + {1,1, HSV_OFF}, + {0,1, HSV_OFF} +); +const rgblight_segment_t PROGMEM ll_cl[] = RGBLIGHT_LAYER_SEGMENTS( + {2,1, HSV_OFF}, + {0,1, HSV_OFF} +); +const rgblight_segment_t PROGMEM ll_clnl[] = RGBLIGHT_LAYER_SEGMENTS( + {0,1, HSV_OFF} +); +const rgblight_segment_t PROGMEM ll_sl[] = RGBLIGHT_LAYER_SEGMENTS( + {2,1, HSV_OFF}, + {1,1, HSV_OFF} +); +const rgblight_segment_t PROGMEM ll_slnl[] = RGBLIGHT_LAYER_SEGMENTS( + {1,1, HSV_OFF} +); +const rgblight_segment_t PROGMEM ll_slcl[] = RGBLIGHT_LAYER_SEGMENTS( + {2,1, HSV_OFF} +); + +const rgblight_segment_t* const PROGMEM rgb_layers[] = RGBLIGHT_LAYERS_LIST( + ll_none, + ll_nl, + ll_cl, + ll_clnl, + ll_sl, + ll_slnl, + ll_slcl +); + +void keyboard_post_init_kb(void) { + rgblight_layers = rgb_layers; + + keyboard_post_init_user(); +} + +bool led_update_kb (led_t led_state) { + bool res = led_update_user(led_state); + + if (res) { + uint8_t lock_bits = led_state.scroll_lock << 2 | led_state.caps_lock << 1 | led_state.num_lock; + for (uint8_t i=0; i<7; i++) { + rgblight_set_layer_state(i, false); + } + if (lock_bits < 7) { + rgblight_set_layer_state(lock_bits, true); + } + } + + return res; +} +#endif diff --git a/keyboards/ramonimbao/wete/v2/keymaps/iso/keymap.c b/keyboards/ramonimbao/wete/v2/keymaps/iso/keymap.c new file mode 100644 index 000000000000..a90c1869fd12 --- /dev/null +++ b/keyboards/ramonimbao/wete/v2/keymaps/iso/keymap.c @@ -0,0 +1,97 @@ +/* Copyright 2021 Ramon Imbao + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_iso( + KC_PSCR, KC_SLCK, KC_PAUS, KC_INS, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_P7, KC_P8, KC_P9, KC_PPLS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_END, + KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUBS, KC_ENT, KC_PGUP, + KC_P1, KC_P2, KC_P3, KC_PENT, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_P0, KC_PDOT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), +}; + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + return true; +} + +#ifdef RGBLIGHT_ENABLE +// Can probably still be optimized, but I like it as is for clarity +const rgblight_segment_t PROGMEM ll_none[] = RGBLIGHT_LAYER_SEGMENTS( + {0,1, HSV_OFF}, + {1,1, HSV_OFF}, + {2,1, HSV_OFF} +); +const rgblight_segment_t PROGMEM ll_nl[] = RGBLIGHT_LAYER_SEGMENTS( + {1,1, HSV_OFF}, + {0,1, HSV_OFF} +); +const rgblight_segment_t PROGMEM ll_cl[] = RGBLIGHT_LAYER_SEGMENTS( + {2,1, HSV_OFF}, + {0,1, HSV_OFF} +); +const rgblight_segment_t PROGMEM ll_clnl[] = RGBLIGHT_LAYER_SEGMENTS( + {0,1, HSV_OFF} +); +const rgblight_segment_t PROGMEM ll_sl[] = RGBLIGHT_LAYER_SEGMENTS( + {2,1, HSV_OFF}, + {1,1, HSV_OFF} +); +const rgblight_segment_t PROGMEM ll_slnl[] = RGBLIGHT_LAYER_SEGMENTS( + {1,1, HSV_OFF} +); +const rgblight_segment_t PROGMEM ll_slcl[] = RGBLIGHT_LAYER_SEGMENTS( + {2,1, HSV_OFF} +); + +const rgblight_segment_t* const PROGMEM rgb_layers[] = RGBLIGHT_LAYERS_LIST( + ll_none, + ll_nl, + ll_cl, + ll_clnl, + ll_sl, + ll_slnl, + ll_slcl +); + +void keyboard_post_init_kb(void) { + rgblight_layers = rgb_layers; + + keyboard_post_init_user(); +} + +bool led_update_kb (led_t led_state) { + bool res = led_update_user(led_state); + + if (res) { + uint8_t lock_bits = led_state.scroll_lock << 2 | led_state.caps_lock << 1 | led_state.num_lock; + for (uint8_t i=0; i<7; i++) { + rgblight_set_layer_state(i, false); + } + if (lock_bits < 7) { + rgblight_set_layer_state(lock_bits, true); + } + } + + return res; +} +#endif diff --git a/keyboards/ramonimbao/wete/v2/keymaps/via/config.h b/keyboards/ramonimbao/wete/v2/keymaps/via/config.h new file mode 100644 index 000000000000..c7cec8a9d776 --- /dev/null +++ b/keyboards/ramonimbao/wete/v2/keymaps/via/config.h @@ -0,0 +1,20 @@ +/* +Copyright 2021 Ramon Imbao + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#define DYNAMIC_KEYMAP_LAYER_COUNT 2 diff --git a/keyboards/ramonimbao/wete/v2/keymaps/via/keymap.c b/keyboards/ramonimbao/wete/v2/keymaps/via/keymap.c new file mode 100644 index 000000000000..d9d5f8e8dc37 --- /dev/null +++ b/keyboards/ramonimbao/wete/v2/keymaps/via/keymap.c @@ -0,0 +1,135 @@ +/* Copyright 2021 Ramon Imbao + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_PSCR, KC_SLCK, KC_PAUS, KC_INS, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NO, KC_HOME, + KC_P7, KC_P8, KC_P9, KC_PPLS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, + KC_P4, KC_P5, KC_P6, KC_NO, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_P1, KC_P2, KC_P3, KC_PENT, KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_P0, KC_NO, KC_PDOT, KC_NO, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, + KC_VOLD, KC_VOLU + ), + [1] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______ + ), +}; + +keyevent_t encoder_ccw = { + .key = (keypos_t){.row = 12, .col = 0}, + .pressed = false +}; + +keyevent_t encoder_cw = { + .key = (keypos_t){.row = 12, .col = 1}, + .pressed = false +}; + +void matrix_scan_user(void) { + if (IS_PRESSED(encoder_ccw)) { + encoder_ccw.pressed = false; + encoder_ccw.time = (timer_read() | 1); + action_exec(encoder_ccw); + } + + if (IS_PRESSED(encoder_cw)) { + encoder_cw.pressed = false; + encoder_cw.time = (timer_read() | 1); + action_exec(encoder_cw); + } +} + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (clockwise) { + encoder_cw.pressed = true; + encoder_cw.time = (timer_read() | 1); + action_exec(encoder_cw); + } else { + encoder_ccw.pressed = true; + encoder_ccw.time = (timer_read() | 1); + action_exec(encoder_ccw); + } + return true; +} + +#ifdef RGBLIGHT_ENABLE +// Can probably still be optimized, but I like it as is for clarity +const rgblight_segment_t PROGMEM ll_none[] = RGBLIGHT_LAYER_SEGMENTS( + {0,1, HSV_OFF}, + {1,1, HSV_OFF}, + {2,1, HSV_OFF} +); +const rgblight_segment_t PROGMEM ll_nl[] = RGBLIGHT_LAYER_SEGMENTS( + {1,1, HSV_OFF}, + {0,1, HSV_OFF} +); +const rgblight_segment_t PROGMEM ll_cl[] = RGBLIGHT_LAYER_SEGMENTS( + {2,1, HSV_OFF}, + {0,1, HSV_OFF} +); +const rgblight_segment_t PROGMEM ll_clnl[] = RGBLIGHT_LAYER_SEGMENTS( + {0,1, HSV_OFF} +); +const rgblight_segment_t PROGMEM ll_sl[] = RGBLIGHT_LAYER_SEGMENTS( + {2,1, HSV_OFF}, + {1,1, HSV_OFF} +); +const rgblight_segment_t PROGMEM ll_slnl[] = RGBLIGHT_LAYER_SEGMENTS( + {1,1, HSV_OFF} +); +const rgblight_segment_t PROGMEM ll_slcl[] = RGBLIGHT_LAYER_SEGMENTS( + {2,1, HSV_OFF} +); + +const rgblight_segment_t* const PROGMEM rgb_layers[] = RGBLIGHT_LAYERS_LIST( + ll_none, + ll_nl, + ll_cl, + ll_clnl, + ll_sl, + ll_slnl, + ll_slcl +); + +void keyboard_post_init_kb(void) { + rgblight_layers = rgb_layers; + + keyboard_post_init_user(); +} + +bool led_update_kb (led_t led_state) { + bool res = led_update_user(led_state); + + if (res) { + uint8_t lock_bits = led_state.scroll_lock << 2 | led_state.caps_lock << 1 | led_state.num_lock; + for (uint8_t i=0; i<7; i++) { + rgblight_set_layer_state(i, false); + } + if (lock_bits < 7) { + rgblight_set_layer_state(lock_bits, true); + } + } + + return res; +} +#endif diff --git a/keyboards/ramonimbao/wete/v2/keymaps/via/rules.mk b/keyboards/ramonimbao/wete/v2/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/ramonimbao/wete/v2/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/ramonimbao/wete/v2/readme.md b/keyboards/ramonimbao/wete/v2/readme.md new file mode 100644 index 000000000000..3b33c9bdaa78 --- /dev/null +++ b/keyboards/ramonimbao/wete/v2/readme.md @@ -0,0 +1,26 @@ +# Wete R2 + +![Wete R2](https://i.imgur.com/WKFe7T8l.png) + +Round two of the Wete keyboard. Now uses the ATmega32u4, adds an encoder, and switches the indicator LEDs to RGB. + +* Keyboard Maintainer: [Ramon Imbao](https://github.com/ramonimbao) +* Hardware Supported: ATmega32u4 + +Make example for this keyboard (after setting up your build environment): + + make ramonimbao/wete/v2:default + +Flashing example for this keyboard: + + make ramonimbao/wete/v2:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the upper left key and plug in the keyboard +* **Physical reset button**: Briefly press the reset button on the back of the PCB. +* **Keycode in layout**: Press the key mapped to `RESET` if it is available diff --git a/keyboards/ramonimbao/wete/v2/rules.mk b/keyboards/ramonimbao/wete/v2/rules.mk new file mode 100644 index 000000000000..7747ce58dde4 --- /dev/null +++ b/keyboards/ramonimbao/wete/v2/rules.mk @@ -0,0 +1,20 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes # Rotary encoder diff --git a/keyboards/ramonimbao/wete/v2/v2.c b/keyboards/ramonimbao/wete/v2/v2.c new file mode 100644 index 000000000000..de5f32e3ca69 --- /dev/null +++ b/keyboards/ramonimbao/wete/v2/v2.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Ramon Imbao + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "v2.h" diff --git a/keyboards/ramonimbao/wete/v2/v2.h b/keyboards/ramonimbao/wete/v2/v2.h new file mode 100644 index 000000000000..75c9430c02ce --- /dev/null +++ b/keyboards/ramonimbao/wete/v2/v2.h @@ -0,0 +1,110 @@ +/* Copyright 2021 Ramon Imbao + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +void adjust_leds(void); + +#define ___ KC_NO + + +// Regular numpad layout +// Full sized backspace +// Full left shift +// ANSI enter +// 1.25 | 1.25 | 1.25 | 6.25 | 1.25 | 1.25 bottom row +#define LAYOUT_ansi( \ + k00, k10, k01, k11, k02, k12, k03, k13, k04, k05, k15, k06, k16, k17, k08, k18, k09, k19, \ + k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k27, k37, k28, k38, k39, \ + k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k56, k47, k57, k48, k49, k59, \ + k60, k70, k61, k62, k72, k63, k73, k64, k74, k65, k75, k66, k76, k67, k77, k78, k79, \ + k80, k90, k81, k91, k82, k83, k93, k84, k94, k85, k95, k86, k96, k87, k97, k98, k89, k99, \ + ka0, ka1, ka2, kb2, ka3, ka5, ka7, kb7, kb8, ka9, kb9 \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, ___, k08, k09 }, \ + { k10, k11, k12, k13, ___, k15, k16, k17, k18, k19 }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, ___ }, \ + { 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, ___, k59 }, \ + { k60, k61, k62, k63, k64, k65, k66, k67, ___, ___ }, \ + { k70, ___, k72, k73, k74, k75, k76, k77, k78, k79 }, \ + { k80, k81, k82, k83, k84, k85, k86, k87, ___, k89 }, \ + { k90, k91, ___, k93, k94, k95, k96, k97, k98, k99 }, \ + { ka0, ___, ka2, ka3, ___, ka5, ___, ka7, ___, ka9 }, \ + { ___, ___, kb2, ___, ___, ___, ___, kb7, kb8, kb9 }, \ + { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \ +} + +// Regular numpad layout +// Full sized backspace +// Split left shift +// ISO enter +// 1.25 | 1.25 | 1.25 | 6.25 | 1.25 | 1.25 bottom row +#define LAYOUT_iso( \ + k00, k10, k01, k11, k02, k12, k03, k13, k04, k05, k15, k06, k16, k17, k08, k18, k09, k19, \ + k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k27, k37, k28, k38, k39, \ + k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k56, k47, k57, k48, k59, \ + k60, k70, k61, k62, k72, k63, k73, k64, k74, k65, k75, k66, k76, k67, k77, k78, k49, k79, \ + k80, k90, k81, k91, k82, k92, k83, k93, k84, k94, k85, k95, k86, k96, k87, k97, k98, k89, k99, \ + ka0, ka1, ka2, kb2, ka3, ka5, ka7, kb7, kb8, ka9, kb9 \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, ___, k08, k09 }, \ + { k10, k11, k12, k13, ___, k15, k16, k17, k18, k19 }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, ___ }, \ + { 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, ___, k59 }, \ + { k60, k61, k62, k63, k64, k65, k66, k67, ___, ___ }, \ + { k70, ___, k72, k73, k74, k75, k76, k77, k78, k79 }, \ + { k80, k81, k82, k83, k84, k85, k86, k87, ___, k89 }, \ + { k90, k91, k92, k93, k94, k95, k96, k97, k98, k99 }, \ + { ka0, ___, ka2, ka3, ___, ka5, ___, ka7, ___, ka9 }, \ + { ___, ___, kb2, ___, ___, ___, ___, kb7, kb8, kb9 }, \ + { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \ +} + +// Macro numpad layout +// Split backspace +// Split left shift +// ANSI enter +// 1.25 | 1.25 | 1.25 | 6.25 | 1 | 1 | 1 bottom row +// Encoder keymap exposed for VIA +#define LAYOUT_all( \ + k00, k10, k01, k11, k02, k12, k03, k13, k04, k05, k15, k06, k16, k17, k08, k18, k09, k19, \ + k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k27, k37, k28, k38,k29, k39, \ + k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k56, k47, k57, k48, k49, k59, \ + k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k66, k76, k67, k77, k78, k79, \ + k80, k90, k81, k91, k82, k92, k83, k93, k84, k94, k85, k95, k86, k96, k87, k97, k98, k89, k99, \ + ka0, kb0, ka1, kb1, ka2, kb2, ka3, ka5, ka7, kb7, ka8, kb8, ka9, kb9, \ + re0, re1 \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, ___, k08, k09 }, \ + { k10, k11, k12, k13, ___, k15, k16, k17, k18, k19 }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, ___ }, \ + { 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, ___, k59 }, \ + { k60, k61, k62, k63, k64, k65, k66, k67, ___, ___ }, \ + { k70, k71, k72, k73, k74, k75, k76, k77, k78, k79 }, \ + { k80, k81, k82, k83, k84, k85, k86, k87, ___, k89 }, \ + { k90, k91, k92, k93, k94, k95, k96, k97, k98, k99 }, \ + { ka0, ka1, ka2, ka3, ___, ka5, ___, ka7, ka8, ka9 }, \ + { kb0, kb1, kb2, ___, ___, ___, ___, kb7, kb8, kb9 }, \ + { re0, re1, ___, ___, ___, ___, ___, ___, ___, ___ }, \ +} diff --git a/keyboards/ramonimbao/wete/wete.c b/keyboards/ramonimbao/wete/wete.c deleted file mode 100644 index 181183c7047e..000000000000 --- a/keyboards/ramonimbao/wete/wete.c +++ /dev/null @@ -1,19 +0,0 @@ -#include "wete.h" - -void keyboard_pre_init_user(void) { - // Initialize indicator LED pins - setPinOutput(A14); // Num Lock - setPinOutput(A15); // Scroll Lock - setPinOutput(B3); // Caps Lock -} - -bool led_update_kb(led_t led_state) { - bool res = led_update_user(led_state); - if (res) { - writePin(A14, !led_state.num_lock); - writePin(A15, !led_state.scroll_lock); - writePin(B3, !led_state.caps_lock); - } - - return res; -} diff --git a/keyboards/rart/rart45/info.json b/keyboards/rart/rart45/info.json index 3be536562bb8..e7b1f241b870 100644 --- a/keyboards/rart/rart45/info.json +++ b/keyboards/rart/rart45/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Rart45", "url": "", "maintainer": "Alabahuy", - "width": 13, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/rart/rart45/rules.mk b/keyboards/rart/rart45/rules.mk index e9a5cac276ad..f3f83c1f60ab 100644 --- a/keyboards/rart/rart45/rules.mk +++ b/keyboards/rart/rart45/rules.mk @@ -2,21 +2,18 @@ MCU = atmega328p # Bootloader selection -BOOTLOADER = USBasp +BOOTLOADER = usbasploader # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/rart/rart4x4/info.json b/keyboards/rart/rart4x4/info.json index dac31d36ff41..468962aaa622 100644 --- a/keyboards/rart/rart4x4/info.json +++ b/keyboards/rart/rart4x4/info.json @@ -2,8 +2,6 @@ "keyboard_name": "RART4X4", "url": "", "maintainer": "Alabahuy", - "width": 4, - "height": 4, "layouts": { "LAYOUT_ortho_4x4": { "layout": [ diff --git a/keyboards/rart/rart4x4/rules.mk b/keyboards/rart/rart4x4/rules.mk index 773b58600866..12d8e2968dc1 100644 --- a/keyboards/rart/rart4x4/rules.mk +++ b/keyboards/rart/rart4x4/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes diff --git a/keyboards/rart/rart67/info.json b/keyboards/rart/rart67/info.json index 8cd9046511ba..1bd24c14f81e 100644 --- a/keyboards/rart/rart67/info.json +++ b/keyboards/rart/rart67/info.json @@ -2,8 +2,6 @@ "keyboard_name": "RART67", "url": "", "maintainer": "Alabahuy", - "width": 16, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/rart/rart67/rules.mk b/keyboards/rart/rart67/rules.mk index a61e71724b74..9924c846a014 100644 --- a/keyboards/rart/rart67/rules.mk +++ b/keyboards/rart/rart67/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE = no # Audio output diff --git a/keyboards/rart/rart67m/config.h b/keyboards/rart/rart67m/config.h new file mode 100644 index 000000000000..02ee4817d9d4 --- /dev/null +++ b/keyboards/rart/rart67m/config.h @@ -0,0 +1,57 @@ +/*Copyright 2021 Alabahuy + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +#define VENDOR_ID 0x414C +#define PRODUCT_ID 0x6067 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Alabahuy +#define PRODUCT RART67M + +/* key matrix size */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 8 + +/* + * 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) + * + */ +/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14*/ +#define MATRIX_ROW_PINS { D3, D2, D4, F6, B3, B4, B2, B5 } +#define MATRIX_COL_PINS { F4, F5, C6, F7, D7, B1, E6, B6 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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 OLED_TIMEOUT 600000 diff --git a/keyboards/rart/rart67m/info.json b/keyboards/rart/rart67m/info.json new file mode 100644 index 000000000000..a8398b041d8b --- /dev/null +++ b/keyboards/rart/rart67m/info.json @@ -0,0 +1,79 @@ +{ + "keyboard_name": "RART67M", + "url": "", + "maintainer": "Alabahuy", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":15, "y":2}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + + {"x":0, "y":4, "w":1.5}, + {"x":1.5, "y":4, "w":1.5}, + {"x":3, "y":4, "w":7}, + {"x":10, "y":4, "w":1.5}, + {"x":11.5, "y":4, "w":1.5}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + } + } +} diff --git a/keyboards/rart/rart67m/keymaps/default/keymap.c b/keyboards/rart/rart67m/keymaps/default/keymap.c new file mode 100644 index 000000000000..fcb55816c87f --- /dev/null +++ b/keyboards/rart/rart67m/keymaps/default/keymap.c @@ -0,0 +1,49 @@ +/* Copyright 2021 Alabahuy + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_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_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = 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_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; \ No newline at end of file diff --git a/keyboards/rart/rart67m/keymaps/default/rules.mk b/keyboards/rart/rart67m/keymaps/default/rules.mk new file mode 100644 index 000000000000..7e2126efab6a --- /dev/null +++ b/keyboards/rart/rart67m/keymaps/default/rules.mk @@ -0,0 +1,2 @@ +WPM_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/rart/rart67m/keymaps/via/keymap.c b/keyboards/rart/rart67m/keymaps/via/keymap.c new file mode 100644 index 000000000000..fcb55816c87f --- /dev/null +++ b/keyboards/rart/rart67m/keymaps/via/keymap.c @@ -0,0 +1,49 @@ +/* Copyright 2021 Alabahuy + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_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_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = 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_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; \ No newline at end of file diff --git a/keyboards/rart/rart67m/keymaps/via/rules.mk b/keyboards/rart/rart67m/keymaps/via/rules.mk new file mode 100644 index 000000000000..2a9abbb4ddab --- /dev/null +++ b/keyboards/rart/rart67m/keymaps/via/rules.mk @@ -0,0 +1,3 @@ +WPM_ENABLE = yes +VIA_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/rart/rart67m/rart67m.c b/keyboards/rart/rart67m/rart67m.c new file mode 100644 index 000000000000..e696a5cf3e46 --- /dev/null +++ b/keyboards/rart/rart67m/rart67m.c @@ -0,0 +1,137 @@ +/* Copyright 2021 Alabahuy + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "rart67m.h" + +#define IDLE_FRAMES 5 +#define IDLE_SPEED 30 +#define TAP_FRAMES 2 +#define TAP_SPEED 40 +#define ANIM_FRAME_DURATION 200 +#define ANIM_SIZE 512 +#ifdef OLED_ENABLE +oled_rotation_t oled_init_kb(oled_rotation_t rotation) { + return OLED_ROTATION_180; +} + +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } +static uint32_t anim_timer = 0; +static uint32_t anim_sleep = 0; +static uint8_t current_idle_frame = 0; +static uint8_t current_tap_frame = 0; + + static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = { + + { + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,16,8,8,4,4,4,8,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,100,130,2,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64, + 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,56,4,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + }, + + { + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,16,8,8,4,4,4,8,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,100,130,2,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64, + 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,56,4,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8, + 7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + }, + + { + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,64,64,64,64,32,32,32,32,16,8,4,2,2,4,24,96,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,194,1,1,2,2,4,4,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,96,0,129,130,130,132,8,16,32,64,128,0,0,0,0,128,128,128,128,64,64,64,64,32, + 32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,25,6,0,0,0,0,0,0,0,24,24,24,27,3,0,64,160,34,36,20,18,18,18,11,8,8,8,8,5,5,9,9,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + }, + + { + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64, + 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8, + 7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + }, + + { + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,8,4,2,2,2,4,56,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,226,1,1,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,64,64, + 32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + } + + }; + + static const char PROGMEM prep[][ANIM_SIZE] = { + + { + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,129,128,128,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,225,26,6,9,49,53,1,138,124,0,0,128,128,128,128,64,64, + 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,24,6,5,152,153,132,195,124,65,65,64,64,32,33,34,18,17,17,17,9,8,8,8,8,4,4,4,4,4,4,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + } + + }; + + static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE] = { + + { + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,248,248,248,248,0,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,129,128,128,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,1,2,4,8,16,32,67,135,7,1,0,184,188,190,159, + 95,95,79,76,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,24,6,5,152,153,132,67,124,65,65,64,64,32,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,61,124,252,252,252,252,252,60,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1, + 1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + }, + + { + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,225,26,6,9,49,53,1,138,124,0,0,128,128,128,128,64,64,64,64,32, + 32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,0,0,0,0,0,0,0,0,1,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,4,4,4,4,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,122,122,121,121,121,121,57,49,2,2,4,4,8,8,8,136,136,135,128, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + } + + }; + + void animation_phase(void) { + + if (get_current_wpm() <=IDLE_SPEED) { + current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES; + oled_write_raw_P(idle[abs((IDLE_FRAMES-1)-current_idle_frame)], ANIM_SIZE); + } + + if (get_current_wpm() >IDLE_SPEED && get_current_wpm() =TAP_SPEED) { + current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES; + oled_write_raw_P(tap[abs((TAP_FRAMES-1)-current_tap_frame)], ANIM_SIZE); + } + } + + if (get_current_wpm() > 0) { + + oled_on(); + + if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { + anim_timer = timer_read32(); + animation_phase(); + } + + anim_sleep = timer_read32(); + } else { + if (timer_elapsed32(anim_sleep) > OLED_TIMEOUT) { + oled_off(); + } else { + if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { + anim_timer = timer_read32(); + animation_phase(); + } + } + } + return false; +} + +#endif diff --git a/keyboards/rart/rart67m/rart67m.h b/keyboards/rart/rart67m/rart67m.h new file mode 100644 index 000000000000..6547a1fa3042 --- /dev/null +++ b/keyboards/rart/rart67m/rart67m.h @@ -0,0 +1,37 @@ +/* Copyright 2021 Alabahuy + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +#define LAYOUT_all(\ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, \ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K46, K56, \ + K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K66, K76, \ + K07, K17, K27, K37, K47, K57, 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 } \ +} diff --git a/keyboards/rart/rart67m/readme.md b/keyboards/rart/rart67m/readme.md new file mode 100644 index 000000000000..b8c8c1124893 --- /dev/null +++ b/keyboards/rart/rart67m/readme.md @@ -0,0 +1,24 @@ +# RART67M + +![67M](https://user-images.githubusercontent.com/30220306/133432676-2722f5fe-4ddb-4ee4-aa6d-de70371b4a1c.png) + + +65% mechanical keyboard with arduino pro micro and oled + +* Keyboard Maintainer: Alabahuy +* Hardware Supported: Arduino Pro Micro, Oled +* Hardware Availability: Private GB + +Make example for this keyboard (after setting up your build environment): + + make rart/rart67m:default + +Flashing example for this keyboard: + + make rart/rart67m:default:flash + +## Bootloader + +To Enter the bootloader you can double click reset button on board when you flash the firmware + +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/rart/rart67m/rules.mk b/keyboards/rart/rart67m/rules.mk new file mode 100644 index 000000000000..e1d407b7fc25 --- /dev/null +++ b/keyboards/rart/rart67m/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 +UNICODE_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/rart/rart75/info.json b/keyboards/rart/rart75/info.json index 9bf7f8d86022..d045da2ac196 100644 --- a/keyboards/rart/rart75/info.json +++ b/keyboards/rart/rart75/info.json @@ -2,8 +2,6 @@ "keyboard_name": "RART75", "url": "", "maintainer": "Alabahuy", - "width": 16, - "height": 6, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/rart/rart75/rules.mk b/keyboards/rart/rart75/rules.mk index 94adcd5a483c..2f2055412dc5 100644 --- a/keyboards/rart/rart75/rules.mk +++ b/keyboards/rart/rart75/rules.mk @@ -2,31 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes diff --git a/keyboards/rart/rart75m/config.h b/keyboards/rart/rart75m/config.h new file mode 100644 index 000000000000..528082cee0a4 --- /dev/null +++ b/keyboards/rart/rart75m/config.h @@ -0,0 +1,61 @@ +/*Copyright 2021 Alabahuy + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +#define VENDOR_ID 0x414C +#define PRODUCT_ID 0x6075 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Alabahuy +#define PRODUCT 75 + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 14 + +/* + * 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) + * + */ +/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14*/ +#define MATRIX_ROW_PINS { C7, B3, B1, B0, D3, D2 } +#define MATRIX_COL_PINS { B2, D4, F0, C6, F1, D7, F4, E6, F5, B4, F6, B5, F7, B6 } +#define UNUSED_PINS + +#define ENCODERS_PAD_B { B7 } +#define ENCODERS_PAD_A { D6 } +#define ENCODER_RESOLUTION 2 //default/suggested + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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 OLED_TIMEOUT 600000 diff --git a/keyboards/rart/rart75m/info.json b/keyboards/rart/rart75m/info.json new file mode 100644 index 000000000000..29a948fb8c95 --- /dev/null +++ b/keyboards/rart/rart75m/info.json @@ -0,0 +1,99 @@ +{ + "keyboard_name": "RART75M", + "url": "", + "maintainer": "Alabahuy", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"x":1.5, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7.25, "y":0}, + {"x":8.25, "y":0}, + {"x":9.25, "y":0}, + {"x":10.25, "y":0}, + {"x":11.5, "y":0}, + {"x":12.5, "y":0}, + {"x":13.5, "y":0}, + {"x":14.5, "y":0}, + + {"x":1.5, "y":1.25}, + {"x":2.5, "y":1.25}, + {"x":3.5, "y":1.25}, + {"x":4.5, "y":1.25}, + {"x":5.5, "y":1.25}, + {"x":6.5, "y":1.25}, + {"x":7.5, "y":1.25}, + {"x":8.5, "y":1.25}, + {"x":9.5, "y":1.25}, + {"x":10.5, "y":1.25}, + {"x":11.5, "y":1.25}, + {"x":12.5, "y":1.25}, + {"x":13.5, "y":1.25}, + {"x":14.5, "y":1.25, "w":2}, + {"x":17, "y":1}, + + {"x":1.5, "y":2.25, "w":1.5}, + {"x":3, "y":2.25}, + {"x":4, "y":2.25}, + {"x":5, "y":2.25}, + {"x":6, "y":2.25}, + {"x":7, "y":2.25}, + {"x":8, "y":2.25}, + {"x":9, "y":2.25}, + {"x":10, "y":2.25}, + {"x":11, "y":2.25}, + {"x":12, "y":2.25}, + {"x":13, "y":2.25}, + {"x":14, "y":2.25}, + {"x":15, "y":2.25, "w":1.5}, + {"x":17, "y":2.25}, + + {"x":0, "y":3.25}, + {"x":1.5, "y":3.25, "w":1.75}, + {"x":3.25, "y":3.25}, + {"x":4.25, "y":3.25}, + {"x":5.25, "y":3.25}, + {"x":6.25, "y":3.25}, + {"x":7.25, "y":3.25}, + {"x":8.25, "y":3.25}, + {"x":9.25, "y":3.25}, + {"x":10.25, "y":3.25}, + {"x":11.25, "y":3.25}, + {"x":12.25, "y":3.25}, + {"x":13.25, "y":3.25}, + {"x":14.25, "y":3.25, "w":2.25}, + {"x":17, "y":3.25}, + + {"x":0, "y":4.25}, + {"x":1.5, "y":4.25, "w":2.25}, + {"x":3.75, "y":4.25}, + {"x":4.75, "y":4.25}, + {"x":5.75, "y":4.25}, + {"x":6.75, "y":4.25}, + {"x":7.75, "y":4.25}, + {"x":8.75, "y":4.25}, + {"x":9.75, "y":4.25}, + {"x":10.75, "y":4.25}, + {"x":11.75, "y":4.25}, + {"x":12.75, "y":4.25}, + {"x":13.75, "y":4.25, "w":1.75}, + {"x":15.75, "y":4.5}, + {"x":17, "y":4.25}, + + {"x":0, "y":5.25}, + {"x":1.5, "y":5.25, "w":1.25}, + {"x":2.75, "y":5.25, "w":1.25}, + {"x":4, "y":5.25, "w":1.25}, + {"x":5.25, "y":5.25, "w":6.25}, + {"x":11.5, "y":5.25, "w":1.5}, + {"x":13, "y":5.25, "w":1.5}, + {"x":14.75, "y":5.5 }, + {"x":15.75, "y":5.5 }, + {"x":16.75, "y":5.5 } + ] + } + } +} diff --git a/keyboards/rart/rart75m/keymaps/default/keymap.c b/keyboards/rart/rart75m/keymaps/default/keymap.c new file mode 100644 index 000000000000..14b05c9cdd1b --- /dev/null +++ b/keyboards/rart/rart75m/keymaps/default/keymap.c @@ -0,0 +1,53 @@ +/* Copyright 2021 Alabahuy + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, + MO(3), KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + MO(2), KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + MO(1), KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; \ No newline at end of file diff --git a/keyboards/rart/rart75m/keymaps/via/keymap.c b/keyboards/rart/rart75m/keymaps/via/keymap.c new file mode 100644 index 000000000000..2d847bc6ee5e --- /dev/null +++ b/keyboards/rart/rart75m/keymaps/via/keymap.c @@ -0,0 +1,54 @@ +/* Copyright 2021 Alabahuy + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, + MO(3), KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + MO(2), KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + MO(1), KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + +}; \ No newline at end of file diff --git a/keyboards/rart/rart75m/keymaps/via/rules.mk b/keyboards/rart/rart75m/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/rart/rart75m/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/rart/rart75m/rart75m.c b/keyboards/rart/rart75m/rart75m.c new file mode 100644 index 000000000000..87a12a9a1f78 --- /dev/null +++ b/keyboards/rart/rart75m/rart75m.c @@ -0,0 +1,62 @@ +/* Copyright 2021 Alabahuy + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "rart75m.h" + +#ifdef ENCODER_ENABLE +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + switch (index) { + case 0: + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + break; + } + return true; +} +#endif + +#ifdef OLED_ENABLE +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } + // Host Keyboard Layer Status + oled_write_P(PSTR("R A R T 7 5 M\nLayer: "), false); + + switch (get_highest_layer(layer_state)) { + case 0: + oled_write_P(PSTR("Default\n"), false); + break; + case 1: + oled_write_P(PSTR("FN\n"), false); + break; + default: + // Or use the write_ln shortcut over adding '\n' to the end of your string + oled_write_ln_P(PSTR("Undefined\n"), false); + } + + // Host Keyboard LED Status + led_t led_state = host_keyboard_led_state(); + oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); + oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); + oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); + + return false; +} + +#endif diff --git a/keyboards/rart/rart75m/rart75m.h b/keyboards/rart/rart75m/rart75m.h new file mode 100644 index 000000000000..7b45b61a68aa --- /dev/null +++ b/keyboards/rart/rart75m/rart75m.h @@ -0,0 +1,36 @@ +/* Copyright 2021 Alabahuy + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +#define LAYOUT_all(\ + 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, K1D, K5D, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K5C, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K5B, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K5A, \ + K50, K51, K52, K53, K54, K55, K56, K57, K58, K59 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, XXX }, \ + { 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 }, \ + { K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B, K5C, K5D } \ +} diff --git a/keyboards/rart/rart75m/readme.md b/keyboards/rart/rart75m/readme.md new file mode 100644 index 000000000000..ba8b2c854345 --- /dev/null +++ b/keyboards/rart/rart75m/readme.md @@ -0,0 +1,24 @@ +# RART75M + +![75](https://user-images.githubusercontent.com/30220306/127945751-b62c67f8-9840-4b82-87e7-140a22cc4a63.png) + + +75% mechanical keyboard with arduino micro, oled, encoder and 3 macro + +* Keyboard Maintainer: Alabahuy +* Hardware Supported: Arduino Micro, Oled, Encoder +* Hardware Availability: Private GB + +Make example for this keyboard (after setting up your build environment): + + make rart/rart75m:default + +Flashing example for this keyboard: + + make rart/rart75m:default:flash + +## Bootloader + +To Enter the bootloader you can double click reset button on board when you flash the firmware + +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/rart/rart75m/rules.mk b/keyboards/rart/rart75m/rules.mk new file mode 100644 index 000000000000..c3c58a913e83 --- /dev/null +++ b/keyboards/rart/rart75m/rules.mk @@ -0,0 +1,23 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 +UNICODE_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 +ENCODER_ENABLE = yes diff --git a/keyboards/rart/rartand/info.json b/keyboards/rart/rartand/info.json index 34ca66072b8e..e1f885ed468b 100644 --- a/keyboards/rart/rartand/info.json +++ b/keyboards/rart/rartand/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Rartand", "url": "", "maintainer": "Alabahuy", - "width": 15, - "height": 4, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/rart/rartand/keymaps/default/keymap.c b/keyboards/rart/rartand/keymaps/default/keymap.c index 1b3c7c6af47f..3d04ffc6f3bb 100644 --- a/keyboards/rart/rartand/keymaps/default/keymap.c +++ b/keyboards/rart/rartand/keymaps/default/keymap.c @@ -16,11 +16,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_all( + [0] = LAYOUT_all( KC_ESC, 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_LSFT, KC_SLSH, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_BSLS, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_SPC, MO(2), KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_SPC, MO(2), KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT ), [1] = LAYOUT_all( @@ -46,8 +46,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -#ifdef OLED_DRIVER_ENABLE -void oled_task_user(void) { +#ifdef OLED_ENABLE +bool oled_task_user(void) { // Host Keyboard Layer Status oled_write_P(PSTR("* R A R T A N D *\n Powered by QMK\nLayer: "), false); @@ -74,5 +74,6 @@ void oled_task_user(void) { oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); + return false; } #endif diff --git a/keyboards/rart/rartand/keymaps/via/keymap.c b/keyboards/rart/rartand/keymaps/via/keymap.c index 1b3c7c6af47f..3d04ffc6f3bb 100644 --- a/keyboards/rart/rartand/keymaps/via/keymap.c +++ b/keyboards/rart/rartand/keymaps/via/keymap.c @@ -16,11 +16,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_all( + [0] = LAYOUT_all( KC_ESC, 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_LSFT, KC_SLSH, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_BSLS, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_SPC, MO(2), KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_SPC, MO(2), KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT ), [1] = LAYOUT_all( @@ -46,8 +46,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -#ifdef OLED_DRIVER_ENABLE -void oled_task_user(void) { +#ifdef OLED_ENABLE +bool oled_task_user(void) { // Host Keyboard Layer Status oled_write_P(PSTR("* R A R T A N D *\n Powered by QMK\nLayer: "), false); @@ -74,5 +74,6 @@ void oled_task_user(void) { oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); + return false; } #endif diff --git a/keyboards/rart/rartand/rules.mk b/keyboards/rart/rartand/rules.mk index 0d494fa6bdb1..83e8a14fc948 100644 --- a/keyboards/rart/rartand/rules.mk +++ b/keyboards/rart/rartand/rules.mk @@ -2,22 +2,20 @@ MCU = atmega328p # Bootloader selection -BOOTLOADER = USBasp +BOOTLOADER = usbasploader # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/rart/rartland/config.h b/keyboards/rart/rartland/config.h new file mode 100644 index 000000000000..46f08f11a40a --- /dev/null +++ b/keyboards/rart/rartland/config.h @@ -0,0 +1,76 @@ +/*Copyright 2021 Alabahuy + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +#define VENDOR_ID 0x414C +#define PRODUCT_ID 0x6065 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Alabahuy +#define PRODUCT RARTLAND + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/* + * 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) + * + */ +/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14*/ +#define MATRIX_ROW_PINS { B4, A7, A5, A6, C3 } +#define MATRIX_COL_PINS { B0, A1, B1, A2, B2, A3, B3, A4, C7, C6, D0, C5, D1, C4 } +#define UNUSED_PINS + +#define LED_CAPS_LOCK_PIN A0 +#define LED_PIN_ON_STATE 0 + +#define ENCODERS_PAD_B { D5 } +#define ENCODERS_PAD_A { C2 } +#define ENCODER_RESOLUTION 2 //default/suggested + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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 OLED_TIMEOUT 10000 + +/* #define RGB_DI_PIN D7 */ +/* #ifdef RGB_DI_PIN */ +/* #define RGBLIGHT_ANIMATIONS */ +/* #define RGBLED_NUM 11 */ +/* #define RGBLIGHT_HUE_STEP 8 */ +/* #define RGBLIGHT_SAT_STEP 8 */ +/* #define RGBLIGHT_VAL_STEP 8 */ +/* #define RGBLIGHT_LIMIT_VAL 240 */ +/* #define RGBLIGHT_SLEEP */ +/* #endif */ + diff --git a/keyboards/rart/rartland/info.json b/keyboards/rart/rartland/info.json new file mode 100644 index 000000000000..2743457e7ae4 --- /dev/null +++ b/keyboards/rart/rartland/info.json @@ -0,0 +1,237 @@ +{ + "keyboard_name": "RARTLAND", + "url": " ", + "maintainer": "Alabahuy", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + {"x":15, "y":1}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":15, "y":2}, + + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4}, + {"x":11, "y":4}, + {"x":12, "y":4}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4}] + }, + "LAYOUT_65_ansi": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":15, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + {"x":15, "y":1}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":15, "y":2}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4}, + {"x":11, "y":4}, + {"x":12, "y":4}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + }, + "LAYOUT_65_iso": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":15, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":15, "y":1}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + {"x":13.75, "y":1, "w":1.25, "h":2}, + {"x":15, "y":2}, + + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":15, "y":3}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4}, + {"x":11, "y":4}, + {"x":12, "y":4}, + {"x":13, "y":4}, + {"x":14, "y":4}, + {"x":15, "y":4} + ] + } + } +} diff --git a/keyboards/rart/rartland/keymaps/default/keymap.c b/keyboards/rart/rartland/keymaps/default/keymap.c new file mode 100644 index 000000000000..e813d87ffde8 --- /dev/null +++ b/keyboards/rart/rartland/keymaps/default/keymap.c @@ -0,0 +1,49 @@ +/* Copyright 2021 Alabahuy + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_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_BSPC, KC_GRV, KC_INS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, MO(1), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT + ), + + [1] = 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, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/rart/rartland/keymaps/via/keymap.c b/keyboards/rart/rartland/keymaps/via/keymap.c new file mode 100644 index 000000000000..4049ae135e19 --- /dev/null +++ b/keyboards/rart/rartland/keymaps/via/keymap.c @@ -0,0 +1,49 @@ +/* Copyright 2021 Alabahuy + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_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_BSPC, KC_GRV, KC_INS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, MO(1), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT + ), + + [1] = 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, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/rart/rartland/keymaps/via/rules.mk b/keyboards/rart/rartland/keymaps/via/rules.mk new file mode 100644 index 000000000000..541a15608aeb --- /dev/null +++ b/keyboards/rart/rartland/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = no diff --git a/keyboards/rart/rartland/rartland.c b/keyboards/rart/rartland/rartland.c new file mode 100644 index 000000000000..e4a555d1282f --- /dev/null +++ b/keyboards/rart/rartland/rartland.c @@ -0,0 +1,61 @@ +/* Copyright 2021 Alabahuy + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "rartland.h" + +#ifdef ENCODER_ENABLE +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + switch (index) { + case 0: + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + break; + } + return true; +} +#endif + +#ifdef OLED_ENABLE +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } + // Host Keyboard Layer Status + oled_write_P(PSTR("R A R T L A N D\nLayer: "), false); + + switch (get_highest_layer(layer_state)) { + case 0: + oled_write_P(PSTR("Default\n"), false); + break; + case 1: + oled_write_P(PSTR("FN\n"), false); + break; + default: + // Or use the write_ln shortcut over adding '\n' to the end of your string + oled_write_ln_P(PSTR("Undefined\n"), false); + } + + // Host Keyboard LED Status + led_t led_state = host_keyboard_led_state(); + oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); + oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); + oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); + + return false; +} +#endif diff --git a/keyboards/rart/rartland/rartland.h b/keyboards/rart/rartland/rartland.h new file mode 100644 index 000000000000..5abfab87adf8 --- /dev/null +++ b/keyboards/rart/rartland/rartland.h @@ -0,0 +1,88 @@ +/* Copyright 2021 Alabahuy + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +/* + * ┌────────┐ + * 2u Backspace │0D │ + * └────────┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │1D │4D │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ ┌─────┐ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │2D │4C │ │ │ ISO + * 2.25u ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ ┌──┴┐2D │ Enter + * LShift │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │4B │ │2C │ │ + * ┌────────┐ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ └───┴────┘ + * │30 │ │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │4A │ + * └────────┘ ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤ + * │40 │41 │42 │43 │44 │45 │46 │47 │48 │49 │ + * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘ + * └────────────────(a)──────────────────┘└────(b)────┘ + * + * (a) 1.5 / 1.5 / 7 (b) + * ┌─────┬─────┬───────────────────────────┐ ┌─────┬─────┐ + * │40 │41 │43 │ │44 │46 │ 1.5 / 1.5 + * └─────┴─────┴───────────────────────────┘ └─────┴─────┘ + * ┌────┬────┐ + * │44 │45 │ 1.25 / 1.25 (0.5u gap) + * └────┴────┘ + */ + +#define LAYOUT_all( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K1D, K4D, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K2D, K4C, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K4B, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K4A, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K49 \ +) { \ + { 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 } \ +} + +#define LAYOUT_65_ansi( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K4D, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K2D, K4C, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K4B, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K4A, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K49 \ +) { \ + { 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, K3C, K3D }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D } \ +} + +#define LAYOUT_65_iso( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K4D, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K4C, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K4B, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K4A, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K49 \ +) { \ + { 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, K3C, K3D }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D } \ +} diff --git a/keyboards/rart/rartland/readme.md b/keyboards/rart/rartland/readme.md new file mode 100644 index 000000000000..47da891fb194 --- /dev/null +++ b/keyboards/rart/rartland/readme.md @@ -0,0 +1,19 @@ +# RARTLAND + +![Rartland](https://user-images.githubusercontent.com/30220306/126027953-ef785a88-400a-4a81-91c0-fbfb3635aede.png) + +A 65% keyboard that can be assembled with only through hole components, including Oled and Encoder support + +* Keyboard Maintainer: [Alabahuy](https://github.com/Alabahuy) +* Hardware Supported: Rartland, atmega32a, Mini USB, Encoder, Oled +* Hardware Availability: Private GB + +Make example for this keyboard (after setting up your build environment): + + make rart/rartland:default + +Flashing example for this keyboard: + + make rart/rartland:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/rart/rartland/rules.mk b/keyboards/rart/rartland/rules.mk new file mode 100644 index 000000000000..9ebded5ed920 --- /dev/null +++ b/keyboards/rart/rartland/rules.mk @@ -0,0 +1,28 @@ +# MCU name +MCU = atmega32a + +# Processor frequency +F_CPU = 16000000 + +# Bootloader selection +BOOTLOADER = usbasploader + +# 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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +UNICODE_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 +ENCODER_ENABLE = yes + +LAYOUTS = 65_ansi 65_iso diff --git a/keyboards/rart/rartlice/info.json b/keyboards/rart/rartlice/info.json index 065df8f080ff..cd49dbf03c4a 100644 --- a/keyboards/rart/rartlice/info.json +++ b/keyboards/rart/rartlice/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Rartlice", "url": "", "maintainer": "Alabahuy", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/rart/rartlice/keymaps/default/keymap.c b/keyboards/rart/rartlice/keymaps/default/keymap.c index 0117eeafbacd..372a856bc2ae 100644 --- a/keyboards/rart/rartlice/keymaps/default/keymap.c +++ b/keyboards/rart/rartlice/keymaps/default/keymap.c @@ -31,11 +31,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), - + }; -#ifdef OLED_DRIVER_ENABLE -void oled_task_user(void) { +#ifdef OLED_ENABLE +bool oled_task_user(void) { // Host Keyboard Layer Status oled_write_P(PSTR("R A R T L I C E\nLayer: "), false); @@ -56,5 +56,6 @@ void oled_task_user(void) { oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); + return false; } #endif diff --git a/keyboards/rart/rartlice/keymaps/via/keymap.c b/keyboards/rart/rartlice/keymaps/via/keymap.c index 0156c2fa4d62..700bb7f414e5 100644 --- a/keyboards/rart/rartlice/keymaps/via/keymap.c +++ b/keyboards/rart/rartlice/keymaps/via/keymap.c @@ -45,11 +45,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), - + }; -#ifdef OLED_DRIVER_ENABLE -void oled_task_user(void) { +#ifdef OLED_ENABLE +bool oled_task_user(void) { // Host Keyboard Layer Status oled_write_P(PSTR("* R A R T L I C E *\n Powered by QMK\nLayer: "), false); @@ -76,5 +76,6 @@ void oled_task_user(void) { oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); + return false; } #endif diff --git a/keyboards/rart/rartlice/rules.mk b/keyboards/rart/rartlice/rules.mk index 7ec4cef2cc41..f0951940b180 100644 --- a/keyboards/rart/rartlice/rules.mk +++ b/keyboards/rart/rartlice/rules.mk @@ -7,21 +7,20 @@ BOOTLOADER = stm32duino # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = yes # 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output +SLEEP_LED_ENABLE = yes WS2812_DRIVER = spi -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enter lower-power sleep mode when on the ChibiOS idle thread OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/rart/rartlite/info.json b/keyboards/rart/rartlite/info.json index 0659957dedfb..96b3d26d701c 100644 --- a/keyboards/rart/rartlite/info.json +++ b/keyboards/rart/rartlite/info.json @@ -2,8 +2,6 @@ "keyboard_name": "RART4X4", "url": "", "maintainer": "Alabahuy", - "width": 15.25, - "height": 4.25, "layouts": { "LAYOUT_right_numpad": { "layout": [ diff --git a/keyboards/rart/rartlite/rules.mk b/keyboards/rart/rartlite/rules.mk index e6a4d762d371..336adc51086c 100644 --- a/keyboards/rart/rartlite/rules.mk +++ b/keyboards/rart/rartlite/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/rart/rartpad/info.json b/keyboards/rart/rartpad/info.json index 8ec37ece0b81..48edae5122b0 100644 --- a/keyboards/rart/rartpad/info.json +++ b/keyboards/rart/rartpad/info.json @@ -2,8 +2,6 @@ "keyboard_name": "RARTPAD", "url": "", "maintainer": "Alabahuy", - "width": 5, - "height": 4, "layouts": { "LAYOUT_ortho_5x4": { "layout": [ diff --git a/keyboards/rart/rartpad/rules.mk b/keyboards/rart/rartpad/rules.mk index c05f7eb063ec..38085c86d951 100644 --- a/keyboards/rart/rartpad/rules.mk +++ b/keyboards/rart/rartpad/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 -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 diff --git a/keyboards/rect44/info.json b/keyboards/rect44/info.json index 1a1ec9ad11ea..aae5fe41deed 100644 --- a/keyboards/rect44/info.json +++ b/keyboards/rect44/info.json @@ -2,8 +2,6 @@ "keyboard_name": "rect44", "url": "", "maintainer": "koshinoya", - "width": 14, - "height": 4, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/rect44/rules.mk b/keyboards/rect44/rules.mk index 806a19af3853..4d5f68b1d3fe 100644 --- a/keyboards/rect44/rules.mk +++ b/keyboards/rect44/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/redox/info.json b/keyboards/redox/info.json index f91017365a28..e404d195e452 100644 --- a/keyboards/redox/info.json +++ b/keyboards/redox/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Redox", "url": "", "maintainer": "qmk", - "width": 18.5, - "height": 6.25, "layouts": { "LAYOUT": { "layout": [ @@ -94,4 +92,3 @@ } } } - diff --git a/keyboards/redox/keymaps/german/keymap.c b/keyboards/redox/keymaps/german/keymap.c index f94cd164a807..06928b2304d7 100644 --- a/keyboards/redox/keymaps/german/keymap.c +++ b/keyboards/redox/keymaps/german/keymap.c @@ -40,9 +40,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ KC_NAGR ,DE_1 ,DE_2 ,DE_3 ,DE_4 ,DE_5 , DE_6 ,DE_7 ,DE_8 ,DE_9 ,DE_0 ,KC_NAMI , //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ - KC_TAB ,DE_Q ,DE_W ,DE_E ,DE_R ,DE_T ,SYM_L , SYM_L ,DE_Z ,DE_U ,DE_I ,DE_O ,DE_P ,DE_UE , + KC_TAB ,DE_Q ,DE_W ,DE_E ,DE_R ,DE_T ,SYM_L , SYM_L ,DE_Z ,DE_U ,DE_I ,DE_O ,DE_P ,DE_UDIA , //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ - KC_ESC ,DE_A ,DE_S ,DE_D ,DE_F ,DE_G ,DE_ACUT , DE_PLUS ,DE_H ,DE_J ,DE_K ,DE_L ,DE_OE ,DE_AE , + KC_ESC ,DE_A ,DE_S ,DE_D ,DE_F ,DE_G ,DE_ACUT , DE_PLUS ,DE_H ,DE_J ,DE_K ,DE_L ,DE_ODIA ,DE_ADIA , //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤ KC_LSFT ,DE_Y ,DE_X ,DE_C ,DE_V ,DE_B ,KC_ADPU ,KC_PGDN , KC_HOME ,KC_ADEN ,DE_N ,DE_M ,DE_COMM ,DE_DOT ,DE_MINS ,KC_RSFT , //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤ diff --git a/keyboards/redox/keymaps/italian/keymap.c b/keyboards/redox/keymaps/italian/keymap.c index 1eb34ff10461..5059a810b949 100644 --- a/keyboards/redox/keymaps/italian/keymap.c +++ b/keyboards/redox/keymaps/italian/keymap.c @@ -34,8 +34,8 @@ enum custom_keycodes { #define KC_ADPU LT(_ADJUST, KC_PGUP) // Italian specific shortcuts -#define ALT_IACC RALT_T(IT_IACC) -#define GUI_LESS LGUI_T(IT_LESS) +#define ALT_IACC RALT_T(IT_IGRV) +#define GUI_LESS LGUI_T(IT_LABK) #define IT_SHSL RSFT_T(KC_SLSH) #define IT_GRV RALT(KC_MINS) @@ -47,11 +47,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ KC_NAGR ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_NAMI , //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ - KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,SYM_L , SYM_L ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,IT_EACC , + KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,SYM_L , SYM_L ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,IT_EGRV , //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ - KC_ESC ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,IT_LBRC , IT_RBRC ,KC_H ,KC_J ,KC_K ,KC_L ,IT_OACC ,IT_AACC , + KC_ESC ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,IT_LBRC , IT_RBRC ,KC_H ,KC_J ,KC_K ,KC_L ,IT_OGRV ,IT_AGRV , //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤ - KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_ADPU ,KC_PGDN , KC_HOME ,KC_ADEN ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,IT_UACC ,IT_SHSL , + KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_ADPU ,KC_PGDN , KC_HOME ,KC_ADEN ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,IT_UGRV ,IT_SHSL , //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤ GUI_LESS,KC_PPLS ,KC_PMNS ,KC_ALAS , KC_CTPL , KC_BSPC ,KC_DEL , KC_ENT ,KC_SPC , ALT_IACC, KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘ @@ -63,9 +63,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ _______ ,IT_EXLM ,IT_AT ,IT_LCBR ,IT_RCBR ,IT_PIPE ,_______ , _______ ,XXXXXXX ,KC_KP_7 ,KC_KP_8 ,KC_KP_9 ,XXXXXXX ,XXXXXXX , //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ - _______ ,IT_SHRP ,IT_DLR ,IT_LBRC ,IT_RBRC ,IT_GRV ,_______ , _______ ,XXXXXXX ,KC_KP_4 ,KC_KP_5 ,KC_KP_6 ,XXXXXXX ,XXXXXXX , + _______ ,IT_HASH ,IT_DLR ,IT_LBRC ,IT_RBRC ,IT_GRV ,_______ , _______ ,XXXXXXX ,KC_KP_4 ,KC_KP_5 ,KC_KP_6 ,XXXXXXX ,XXXXXXX , //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤ - _______ ,IT_PERC ,IT_CRC ,IT_LPRN ,IT_RPRN ,IT_TILD ,_______ ,_______ , _______ ,_______ ,XXXXXXX ,KC_KP_1 ,KC_KP_2 ,KC_KP_3 ,XXXXXXX ,XXXXXXX , + _______ ,IT_PERC ,IT_CIRC ,IT_LPRN ,IT_RPRN ,IT_TILD ,_______ ,_______ , _______ ,_______ ,XXXXXXX ,KC_KP_1 ,KC_KP_2 ,KC_KP_3 ,XXXXXXX ,XXXXXXX , //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤ _______ ,_______ ,_______ ,_______ , _______ , _______ ,_______ , _______ ,_______ , KC_KP_0 , KC_KP_0 ,KC_PDOT ,XXXXXXX ,XXXXXXX //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘ diff --git a/keyboards/redox/keymaps/tw1t611/keymap.c b/keyboards/redox/keymaps/tw1t611/keymap.c index 1309831b2376..3ea10a752810 100644 --- a/keyboards/redox/keymaps/tw1t611/keymap.c +++ b/keyboards/redox/keymaps/tw1t611/keymap.c @@ -11,11 +11,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ _______ ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,_______ , //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ - KC_ESC ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,_______ , _______ ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,DE_AE , + KC_ESC ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,_______ , _______ ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,DE_ADIA , //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ - KC_TAB ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,KC_BSPC , KC_DEL ,KC_H ,KC_J ,KC_K ,KC_L ,DE_EQL ,DE_OE , + KC_TAB ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,KC_BSPC , KC_DEL ,KC_H ,KC_J ,KC_K ,KC_L ,DE_EQL ,DE_ODIA , //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤ - DE_UNDS ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_LCTL ,KC_BSPC , KC_DEL ,KC_RCTL ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,DE_SS ,DE_UE , + DE_UNDS ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_LCTL ,KC_BSPC , KC_DEL ,KC_RCTL ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,DE_SS ,DE_UDIA , //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤ _______ ,_______ ,_______ ,_______ , KC_LALT , KC_SPC ,KC_LSFT , MO(MOD) ,KC_ENT , KC_LGUI , _______ ,_______ ,_______ ,_______ //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘ @@ -24,11 +24,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ KC_F12 ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11, //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ - DE_CIRC ,DE_QUOT ,DE_DQOT ,DE_LCBR ,DE_RCBR ,DE_GRV ,RGB_MOD , RESET ,DE_PERC ,DE_PLUS ,DE_MINS ,DE_ASTR ,DE_SLSH ,DE_BSLS , + DE_CIRC ,DE_QUOT ,DE_DQUO ,DE_LCBR ,DE_RCBR ,DE_GRV ,RGB_MOD , RESET ,DE_PERC ,DE_PLUS ,DE_MINS ,DE_ASTR ,DE_SLSH ,DE_BSLS , //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ - DE_TILD ,DE_EXLM ,DE_DLR ,DE_LPRN ,DE_RPRN ,DE_AMPR ,RGB_TOG , _______ ,KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT ,DE_QST ,DE_PIPE , + DE_TILD ,DE_EXLM ,DE_DLR ,DE_LPRN ,DE_RPRN ,DE_AMPR ,RGB_TOG , _______ ,KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT ,DE_QUES ,DE_PIPE , //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤ - _______ ,DE_AT ,DE_EURO ,DE_LBRC ,DE_RBRC ,_______ ,RGB_M_P ,_______ , _______ ,_______ ,DE_HASH ,DE_LESS ,DE_SCLN ,DE_COLN ,DE_MORE ,DE_PARA , + _______ ,DE_AT ,DE_EURO ,DE_LBRC ,DE_RBRC ,_______ ,RGB_M_P ,_______ , _______ ,_______ ,DE_HASH ,DE_LABK ,DE_SCLN ,DE_COLN ,DE_RABK ,DE_SECT , //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤ _______ ,_______ ,_______ ,_______ , _______ , _______ ,_______ , _______ ,_______ , _______ , _______ ,_______ ,_______ ,_______ //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘ diff --git a/keyboards/redox/redox.h b/keyboards/redox/redox.h index 2f08bddccc38..4160096b28f9 100644 --- a/keyboards/redox/redox.h +++ b/keyboards/redox/redox.h @@ -16,8 +16,10 @@ #pragma once -#ifdef KEYBOARD_redox_rev1 - #include "rev1.h" +#if defined(KEYBOARD_redox_rev1) +# include "rev1.h" +#elif defined(KEYBOARD_redox_media) +# include "media.h" #endif #include "quantum.h" diff --git a/keyboards/redox/rev1/rev1.c b/keyboards/redox/rev1/rev1.c index 2eb7c7c0e835..b1ab15df3229 100644 --- a/keyboards/redox/rev1/rev1.c +++ b/keyboards/redox/rev1/rev1.c @@ -1,22 +1 @@ #include "redox.h" - - -#ifdef SSD1306OLED -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - led_set_user(usb_led); -} -#endif - -void matrix_init_kb(void) { - - // // green led on - // DDRD |= (1<<5); - // PORTD &= ~(1<<5); - - // // orange led on - // DDRB |= (1<<0); - // PORTB &= ~(1<<0); - - matrix_init_user(); -}; diff --git a/keyboards/redox/rules.mk b/keyboards/redox/rules.mk index 20bd73632d08..827d3656e623 100644 --- a/keyboards/redox/rules.mk +++ b/keyboards/redox/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. SPLIT_KEYBOARD = yes diff --git a/keyboards/redox_media/config.h b/keyboards/redox_media/config.h new file mode 100644 index 000000000000..0d4ac16b5f43 --- /dev/null +++ b/keyboards/redox_media/config.h @@ -0,0 +1,60 @@ +/* +Copyright 2021 Shiftux + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x0000 +#define DEVICE_VER 0x0100 +#define MANUFACTURER shiftux +#define PRODUCT Redox Media + +/* key matrix size */ +// Rows are doubled-up +#define MATRIX_ROWS 12 +#define MATRIX_COLS 7 + +// wiring of each half +#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4, B5 } +#define MATRIX_COL_PINS { F6, F7, B1, B3, B2, B6, D1 } + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +// #define BACKLIGHT_LEVELS 3 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* serial.c configuration for split keyboard */ +#define SOFT_SERIAL_PIN D0 + +/* 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 { F4 } +#define ENCODERS_PAD_B { F5 } +#define ENCODER_RESOLUTION 4 diff --git a/keyboards/redox_media/info.json b/keyboards/redox_media/info.json new file mode 100644 index 000000000000..e13487e791cf --- /dev/null +++ b/keyboards/redox_media/info.json @@ -0,0 +1,89 @@ +{ + "keyboard_name": "Redox Media", + "url": "", + "maintainer": "shiftux", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"Mute", "x":5.25, "y":0.15}, + {"label":"Play", "x":12.25, "y":0.15}, + {"label":"Next", "x":13.5, "y":0}, + + {"label":"_Nav || `", "x":0, "y":1.375, "w":1.25}, + {"label":"1", "x":1.25, "y":1.375}, + {"label":"2", "x":2.25, "y":1.125}, + {"label":"3", "x":3.25, "y":1}, + {"label":"4", "x":4.25, "y":1.125}, + {"label":"5", "x":5.25, "y":1.25}, + {"label":"6", "x":12.25, "y":1.25}, + {"label":"7", "x":13.25, "y":1.125}, + {"label":"8", "x":14.25, "y":1}, + {"label":"9", "x":15.25, "y":1.125}, + {"label":"0", "x":16.25, "y":1.375}, + {"label":"_Nav || -", "x":17.25, "y":1.375, "w":1.25}, + + {"label":"Tab", "x":0, "y":2.375, "w":1.25}, + {"label":"Q", "x":1.25, "y":2.375}, + {"label":"W", "x":2.25, "y":2.125}, + {"label":"E", "x":3.25, "y":2}, + {"label":"R", "x":4.25, "y":2.125}, + {"label":"T", "x":5.25, "y":2.25}, + {"label":"MO(_SYMB)", "x":6.25, "y":1.75}, + {"label":"MO(_SYMB)", "x":11.25, "y":1.75}, + {"label":"Y", "x":12.25, "y":2.25}, + {"label":"U", "x":13.25, "y":2.125}, + {"label":"I", "x":14.25, "y":2}, + {"label":"O", "x":15.25, "y":2.125}, + {"label":"P", "x":16.25, "y":2.375}, + {"label":"=", "x":17.25, "y":2.375, "w":1.25}, + + {"label":"Esc", "x":0, "y":3.375, "w":1.25}, + {"label":"A", "x":1.25, "y":3.375}, + {"label":"S", "x":2.25, "y":3.125}, + {"label":"D", "x":3.25, "y":3}, + {"label":"F", "x":4.25, "y":3.125}, + {"label":"G", "x":5.25, "y":3.25}, + {"label":"[", "x":6.25, "y":3}, + {"label":"]", "x":11.25, "y":3}, + {"label":"H", "x":12.25, "y":3.25}, + {"label":"J", "x":13.25, "y":3.125}, + {"label":"K", "x":14.25, "y":3}, + {"label":"L", "x":15.25, "y":3.125}, + {"label":";", "x":16.25, "y":3.375}, + {"label":"'", "x":17.25, "y":3.375, "w":1.25}, + + {"label":"Shift", "x":0, "y":4.375, "w":1.25}, + {"label":"Z", "x":1.25, "y":4.375}, + {"label":"X", "x":2.25, "y":4.125}, + {"label":"C", "x":3.25, "y":4}, + {"label":"V", "x":4.25, "y":4.125}, + {"label":"B", "x":5.25, "y":4.25}, + {"label":"_Adjust/Page Up", "x":6.75, "y":4.75}, + {"label":"Page Down", "x":7.75, "y":4.75}, + {"label":"Home", "x":9.75, "y":4.75}, + {"label":"_Adjust/End", "x":10.75, "y":4.75}, + {"label":"N", "x":12.25, "y":4.25}, + {"label":"M", "x":13.25, "y":4.125}, + {"label":",", "x":14.25, "y":4}, + {"label":",", "x":15.25, "y":4.125}, + {"label":"\\", "x":16.25, "y":4.375}, + {"label":"Shift", "x":17.25, "y":4.375, "w":1.25}, + + {"label":"LGUI", "x":0.25, "y":5.375}, + {"label":"P+", "x":1.25, "y":5.375}, + {"label":"P-", "x":2.25, "y":5.125}, + {"label":"LAlt || P*", "x":3.25, "y":5}, + {"label":"LCtrl || P/", "x":5.5, "y":6.25, "w":1.25}, + {"label":"Backspace", "x":6.75, "y":5.75, "h":1.5}, + {"label":"Delete", "x":7.75, "y":5.75, "h":1.5}, + {"label":"Enter", "x":9.75, "y":5.75, "h":1.5}, + {"label":"Space", "x":10.75, "y":5.75, "h":1.5}, + {"label":"RAlt", "x":11.75, "y":6.25, "w":1.25}, + {"label":"Left", "x":14.25, "y":5}, + {"label":"Down", "x":15.25, "y":5.125}, + {"label":"Up", "x":16.25, "y":5.375}, + {"label":"Right", "x":17.25, "y":5.375} + ] + } + } +} diff --git a/keyboards/redox_media/keymaps/default/config.h b/keyboards/redox_media/keymaps/default/config.h new file mode 100644 index 000000000000..5da1f9060a7c --- /dev/null +++ b/keyboards/redox_media/keymaps/default/config.h @@ -0,0 +1,26 @@ +/* +Copyright 2021 Shiftux + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +/* Use I2C or Serial, not both */ +#define USE_SERIAL +// #define USE_I2C + +/* Select hand configuration */ +// #define MASTER_LEFT +#define EE_HANDS \ No newline at end of file diff --git a/keyboards/redox_media/keymaps/default/keymap.c b/keyboards/redox_media/keymaps/default/keymap.c new file mode 100644 index 000000000000..a8b479159f0a --- /dev/null +++ b/keyboards/redox_media/keymaps/default/keymap.c @@ -0,0 +1,69 @@ +/* +Copyright 2021 Shiftux + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _QWERTZ, // standard layer + _SYMB, // symbols layer +}; + +enum custom_keycodes { + QWERTZ = SAFE_RANGE, + SYMB, +}; + +// Shortcut to make keymap more readable +#define KC_BKSL KC_BSLASH +#define SYM_L MO(_SYMB) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_QWERTZ] = LAYOUT( + // ┌────────┐ ┌────────┬────────┐ + KC_MUTE, KC_MPLY, KC_MNXT, + //┌────────┬────────┬────────┬───┼────┬───┼────┬────────┐ ┌──┼─────┬──┼─────┬──┼─────┬────────┬────────┬────────┐ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_NUBS, KC_MINS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, + //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_EQL, KC_RBRC, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_PGDN, KC_PGUP, KC_HOME, KC_END, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤ + KC_LCTL, SYM_L, KC_LALT, KC_GRV, KC_DEL, KC_LGUI, KC_SPC, KC_ENT, KC_SPC, KC_RALT, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT + //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘ + ), + + + [_SYMB] = LAYOUT( + // ┌────────┐ ┌────────┬────────┐ + KC_MPRV, XXXXXXX, XXXXXXX, + //┌────────┬────────┬────────┬───┼────┬───┼────┬────────┐ ┌──┼─────┬──┼─────┬──┼─────┬────────┬────────┬────────┐ + RESET ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5, KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 , + //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ + XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,KC_F12 , XXXXXXX ,XXXXXXX ,XXXXXXX, KC_UP ,XXXXXXX ,XXXXXXX ,XXXXXXX , + //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ + XXXXXXX ,XXXXXXX ,KC_BSLS ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT ,XXXXXXX ,XXXXXXX , + //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤ + XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX, XXXXXXX ,XXXXXXX ,KC_TILD ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , + //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤ + XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX , XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX , XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX + //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘ + ) + +}; diff --git a/keyboards/redox_media/keymaps/default/readme.md b/keyboards/redox_media/keymaps/default/readme.md new file mode 100644 index 000000000000..53a080fd5ad5 --- /dev/null +++ b/keyboards/redox_media/keymaps/default/readme.md @@ -0,0 +1,6 @@ +# German keymap for Redox-media + +A layout for the Redox MEDIA revision. +The layout acommodates the German umlauts and the punctuation symbols +at their usual positions relative to the other alphabetic characters. +Apart from that it stays close to the default english Redox layout. diff --git a/keyboards/redox_media/readme.md b/keyboards/redox_media/readme.md new file mode 100644 index 000000000000..511c60445169 --- /dev/null +++ b/keyboards/redox_media/readme.md @@ -0,0 +1,57 @@ +# The Redox Media Keyboard + +I've taken the Redox keyboard and modified the SCAD files as well as the QMK layout to include media and scroll features: +- 3 Media buttons + - Play / Pause button + - Next track + - Mute (previous track on secondary layout) +- Volume knob +- Scroll wheel on the keyboard + +For an in-depth report see [my page](https://shiftux.org/making_projects/keyboard.html) and a [video](https://youtu.be/Cwkf7HFcUkY) about the build process, design, printing, programing and assembly. + +## IMAGE + +### The build +I've used 2 [Sparkfun Pro Micros (5V)](https://www.sparkfun.com/products/12640) and a single hand master setup providing power and serial connection via a TRS jack. + +### The pro micro and how to flash it +To try out your pro micro and setup your environment to flash such a device I recommend following [this guide](https://learn.sparkfun.com/tutorials/pro-micro--fio-v3-hookup-guide/all). It will take you through the install and setup and provides a first easy to flash program so you can test your setup quickly. + +Whenever you can't program one of the pro micros or the USB-COM port is not found on your computer, it most probably means that is is not in "bootloader mode". What you want to do is connect the GND and RST pin twice to reset the device and put it into bootloader mode (details [here](https://learn.sparkfun.com/tutorials/pro-micro--fio-v3-hookup-guide/troubleshooting-and-faq#ts-serial)). + +### Compiling and flashing + +Obviously start by [installing QMK](https://docs.qmk.fm/#/getting_started_build_tools?id=set-up-your-environment). + +- Before flashing the firmware you should make sure that it compiles. Thus assuring that your QMK setup works fine and the keyboard and keymap files are correct: +``` +qmk compile -kb redox_media -km default +``` +The generated `.hex` file is output to the QMK root. + +Once you are comfortable flashing your Pro Micros and your setup works continue with the following steps: + +- I've had the most success with using the `EE_HANDS` setting and flashing the EEPROM to the left and right halves of the keyboard respectively. To do this start with flashing the EEPROM of the 2 pro micros separately by setting the bootloader flag in the flash command (the pro micro uses the avrdude bootloader): +``` +qmk flash -kb redox/media -km media_ch -bl avrdude-split-left +qmk flash -kb redox/media -km media_ch -bl avrdude-split-right +``` +Note that you need to reset the pro micro to set it to bootloader mode before you can flash it: connect GND to RST twice in quick succession (750ms), then you have 8 seconds to upload the new eep file. + +### Adapting the keyboard layout + +Copy the `keymaps/media_ch` folder to `keymaps/media_` and adapt the `keymap.c` file in there. + +I recommend testing the key codes with the [QMK tester](https://config.qmk.fm/#/test) and then adapting the `keymap.c` file accordingly. + +Finally compile your new layout from the QMK root with: +``` +qmk compile -kb redox/media -km media_ +``` +and proceed to flashing it equivalent to the above instructions. + +### CAD files and additional resources +See [here](https://shiftux.org/making_projects/keyboard.html) for a detailed build description and video. + +You can find the CAD and SCAD files, I created here: https://github.com/shiftux/redox-media-keyboard diff --git a/keyboards/redox_media/redox_media.c b/keyboards/redox_media/redox_media.c new file mode 100644 index 000000000000..ca5a70dd490a --- /dev/null +++ b/keyboards/redox_media/redox_media.c @@ -0,0 +1,38 @@ +/* +Copyright 2021 Shiftux + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "redox_media.h" + +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { + return false; + } + if (index == 0) { /* First encoder */ + if (clockwise) { + tap_code(KC_VOLD); + } else { + tap_code(KC_VOLU); + } + } else if (index == 1) { /* Second encoder */ + if (clockwise) { + tap_code(KC_WH_D); + } else { + tap_code(KC_WH_U); + } + } + return true; +} diff --git a/keyboards/redox_media/redox_media.h b/keyboards/redox_media/redox_media.h new file mode 100644 index 000000000000..8cd13c63f2f2 --- /dev/null +++ b/keyboards/redox_media/redox_media.h @@ -0,0 +1,69 @@ +/* +Copyright 2021 Shiftux + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +/* + * ┌───┐ ┌───┐┌───┐ + * │56 │ │B6 ││B5 │ + * └───┘ └───┘└───┘ + * ┌───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┐ + * │00 │01 │02 │03 │04 │05 │ │65 │64 │63 │62 │61 │60 │ + * ├───┼───┼───┼───┼───┼───┼───┐ ┌───┼───┼───┼───┼───┼───┼───┤ + * │10 │11 │12 │13 │14 │15 │06 │ │66 │75 │74 │73 │72 │71 │70 │ + * ├───┼───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┼───┤ + * │20 │21 │22 │23 │24 │25 │16 │ │76 │85 │84 │83 │82 │81 │80 │ + * ├───┼───┼───┼───┼───┼───┼───┘ └───┼───┼───┼───┼───┼───┼───┤ + * │30 │31 │32 │33 │34 │35 │ ┌───┬───┐ ┌───┬───┐ │95 │94 │93 │92 │91 │90 │ + * ├───┼───┼───┼───┼───┴───┘ │26 │36 │ │96 │86 │ └───┴───┼───┼───┼───┼───┤ + * │40 │41 │42 │43 │ ├───┼───┤ ├───┼───┤ │A3 │A2 │A1 │A0 │ + * └───┴───┴───┴───┘ ┌────┤ │ │ │ │ ├────┐ └───┴───┴───┴───┘ + * │44 │45 │46 │ │A6 │A5 │A4 │ + * └────┴───┴───┘ └───┴───┴────┘ + * + * + */ + +// rows are doubled +// clang-format off +#define LAYOUT( \ + K56, KB6, KB5, \ + K00, K01, K02, K03, K04, K05, K65, K64, K63, K62, K61, K60, \ + K10, K11, K12, K13, K14, K15, K06, K66, K75, K74, K73, K72, K71, K70, \ + K20, K21, K22, K23, K24, K25, K16, K76, K85, K84, K83, K82, K81, K80, \ + K30, K31, K32, K33, K34, K35, K26, K36, K96, K86, K95, K94, K93, K92, K91, K90, \ + K40, K41, K42, K43, K44, K45, K46, KA6, KA5, KA4, KA3, KA2, KA1, KA0 \ +) \ +{ \ + { 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, K44, K45, K46 }, \ + { XXX, XXX, XXX, XXX, XXX, XXX, K56 }, \ +\ + { K60, K61, K62, K63, K64, K65, K66 }, \ + { K70, K71, K72, K73, K74, K75, K76 }, \ + { K80, K81, K82, K83, K84, K85, K86 }, \ + { K90, K91, K92, K93, K94, K95, K96 }, \ + { KA0, KA1, KA2, KA3, KA4, KA5, KA6 }, \ + { XXX, XXX, XXX, XXX, XXX, KB5, KB6 } \ +} diff --git a/keyboards/redox_media/rules.mk b/keyboards/redox_media/rules.mk new file mode 100644 index 000000000000..85f9d9e15771 --- /dev/null +++ b/keyboards/redox_media/rules.mk @@ -0,0 +1,26 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 +SPLIT_KEYBOARD = yes + +# Disable unsupported hardware +AUDIO_SUPPORTED = no +BACKLIGHT_SUPPORTED = no +RGBLIGHT_SUPPORTED = no diff --git a/keyboards/redox_w/info.json b/keyboards/redox_w/info.json index b7694a2bbd5e..aae795c67709 100644 --- a/keyboards/redox_w/info.json +++ b/keyboards/redox_w/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Redox Wireless", "url": "", "maintainer": "qmk", - "width": 18.5, - "height": 6.25, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/redox_w/keymaps/italian/keymap.c b/keyboards/redox_w/keymaps/italian/keymap.c index 6e23a32d4d99..e67742c6a1be 100644 --- a/keyboards/redox_w/keymaps/italian/keymap.c +++ b/keyboards/redox_w/keymaps/italian/keymap.c @@ -34,8 +34,8 @@ enum custom_keycodes { #define KC_ADPU LT(_ADJUST, KC_PGUP) // Italian specific shortcuts -#define ALT_IACC RALT_T(IT_IACC) -#define GUI_LESS LGUI_T(IT_LESS) +#define ALT_IACC RALT_T(IT_IGRV) +#define GUI_LESS LGUI_T(IT_LABK) #define IT_SHSL RSFT_T(KC_SLSH) #define IT_GRV RALT(KC_MINS) @@ -47,11 +47,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ KC_NAGR ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_NAMI , //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ - KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,SYM_L , SYM_L ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,IT_EACC , + KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,SYM_L , SYM_L ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,IT_EGRV , //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ - KC_ESC ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,IT_LBRC , IT_RBRC ,KC_H ,KC_J ,KC_K ,KC_L ,IT_OACC ,IT_AACC , + KC_ESC ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,IT_LBRC , IT_RBRC ,KC_H ,KC_J ,KC_K ,KC_L ,IT_OGRV ,IT_AGRV , //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤ - KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_ADPU ,KC_PGDN , KC_HOME ,KC_ADEN ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,IT_UACC ,IT_SHSL , + KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_ADPU ,KC_PGDN , KC_HOME ,KC_ADEN ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,IT_UGRV ,IT_SHSL , //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤ GUI_LESS,KC_PPLS ,KC_PMNS ,KC_ALAS , KC_CTPL , KC_BSPC ,KC_DEL , KC_ENT ,KC_SPC , ALT_IACC, KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘ @@ -63,9 +63,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ _______ ,IT_EXLM ,IT_AT ,IT_LCBR ,IT_RCBR ,IT_PIPE ,_______ , _______ ,XXXXXXX ,KC_KP_7 ,KC_KP_8 ,KC_KP_9 ,XXXXXXX ,XXXXXXX , //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ - _______ ,IT_SHRP ,IT_DLR ,IT_LBRC ,IT_RBRC ,IT_GRV ,_______ , _______ ,XXXXXXX ,KC_KP_4 ,KC_KP_5 ,KC_KP_6 ,XXXXXXX ,XXXXXXX , + _______ ,IT_HASH ,IT_DLR ,IT_LBRC ,IT_RBRC ,IT_GRV ,_______ , _______ ,XXXXXXX ,KC_KP_4 ,KC_KP_5 ,KC_KP_6 ,XXXXXXX ,XXXXXXX , //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤ - _______ ,IT_PERC ,IT_CRC ,IT_LPRN ,IT_RPRN ,IT_TILD ,_______ ,_______ , _______ ,_______ ,XXXXXXX ,KC_KP_1 ,KC_KP_2 ,KC_KP_3 ,XXXXXXX ,XXXXXXX , + _______ ,IT_PERC ,IT_CIRC ,IT_LPRN ,IT_RPRN ,IT_TILD ,_______ ,_______ , _______ ,_______ ,XXXXXXX ,KC_KP_1 ,KC_KP_2 ,KC_KP_3 ,XXXXXXX ,XXXXXXX , //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤ _______ ,_______ ,_______ ,_______ , _______ , _______ ,_______ , _______ ,_______ , KC_KP_0 , KC_KP_0 ,KC_PDOT ,XXXXXXX ,XXXXXXX //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘ diff --git a/keyboards/redox_w/keymaps/manna-harbour_miryoku/config.h b/keyboards/redox_w/keymaps/manna-harbour_miryoku/config.h new file mode 100644 index 000000000000..ffc0d9879873 --- /dev/null +++ b/keyboards/redox_w/keymaps/manna-harbour_miryoku/config.h @@ -0,0 +1,23 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . + +#pragma once + +#define XXX KC_NO + +#define LAYOUT_miryoku(\ + 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,\ + N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +LAYOUT(\ +XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,\ +XXX, K00, K01, K02, K03, K04, XXX, XXX, K05, K06, K07, K08, K09, XXX,\ +XXX, K10, K11, K12, K13, K14, XXX, XXX, K15, K16, K17, K18, K19, XXX,\ +XXX, K20, K21, K22, K23, K24, XXX, XXX, XXX, XXX, K25, K26, K27, K28, K29, XXX,\ +XXX, XXX, XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX, XXX, XXX\ +) diff --git a/keyboards/redox_w/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/redox_w/keymaps/manna-harbour_miryoku/keymap.c new file mode 100644 index 000000000000..7c5717a0fee0 --- /dev/null +++ b/keyboards/redox_w/keymaps/manna-harbour_miryoku/keymap.c @@ -0,0 +1,5 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/keyboards/redox_w/redox_w.c b/keyboards/redox_w/redox_w.c index a94e731b390f..5b8634453620 100644 --- a/keyboards/redox_w/redox_w.c +++ b/keyboards/redox_w/redox_w.c @@ -15,7 +15,7 @@ void matrix_init_kb(void) { led_init(); } -#ifdef ONEHAND_ENABLE +#ifdef SWAP_HANDS_ENABLE __attribute__ ((weak)) const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { {{13, 0}, {12, 0}, {11, 0}, {10, 0}, {9, 0}, {8, 0}, {7, 0}, {6, 0}, {5, 0}, {4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0}}, diff --git a/keyboards/redox_w/rules.mk b/keyboards/redox_w/rules.mk index b7084b4a1a7f..2a0e387afd81 100644 --- a/keyboards/redox_w/rules.mk +++ b/keyboards/redox_w/rules.mk @@ -2,31 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # comment out to disable the options. # -#BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration CUSTOM_MATRIX = yes # Remote matrix from the wireless bridge -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA # BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -# MIDI_ENABLE = YES # MIDI controls -UNICODE_ENABLE = YES # Unicode -# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID # # project specific files SRC += matrix.c serial_uart.c diff --git a/keyboards/redscarf_i/info.json b/keyboards/redscarf_i/info.json index 3bf1ae6934ba..ac997c3a5f27 100644 --- a/keyboards/redscarf_i/info.json +++ b/keyboards/redscarf_i/info.json @@ -2,10 +2,8 @@ "keyboard_name": "Red Scarf I", "url": "", "maintainer": "qmk, defying", - "width": 4, "layouts": { "LAYOUT_ortho_5x4": { - "key_count": 20, "layout": [ {"x":0, "y":0}, {"x":1, "y":0}, @@ -30,7 +28,6 @@ ] }, "LAYOUT_ortho_6x4": { - "key_count": 24, "layout": [ {"x":0, "y":0}, {"x":1, "y":0}, @@ -59,7 +56,6 @@ ] }, "LAYOUT_numpad_5x4": { - "key_count": 17, "layout": [ {"x":0, "y":0}, {"x":1, "y":0}, @@ -81,7 +77,6 @@ ] }, "LAYOUT_numpad_6x4": { - "key_count": 21, "layout": [ {"x":0, "y":0}, {"x":1, "y":0}, diff --git a/keyboards/redscarf_i/rules.mk b/keyboards/redscarf_i/rules.mk index 852aec83b45a..96b80642ad56 100644 --- a/keyboards/redscarf_i/rules.mk +++ b/keyboards/redscarf_i/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode +AUDIO_ENABLE = no # Audio output LAYOUTS = ortho_5x4 ortho_6x4 numpad_5x4 numpad_6x4 diff --git a/keyboards/redscarf_iiplus/verb/config.h b/keyboards/redscarf_iiplus/verb/config.h index 5659b53f9b94..c313b90a325a 100755 --- a/keyboards/redscarf_iiplus/verb/config.h +++ b/keyboards/redscarf_iiplus/verb/config.h @@ -123,59 +123,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -194,26 +141,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/redscarf_iiplus/verb/info.json b/keyboards/redscarf_iiplus/verb/info.json index 8466063fcf00..2b675a5ca8fe 100644 --- a/keyboards/redscarf_iiplus/verb/info.json +++ b/keyboards/redscarf_iiplus/verb/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Red Scarf II+ Ver.B (RS78)", "url": "", "maintainer": "qmk", - "width": 18.25, - "height": 5, "layouts": { "LAYOUT_78_ansi": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2.25, "y":0}, {"x":3.25, "y":0}, {"x":4.25, "y":0}, {"x":5.25, "y":0}, {"x":6.25, "y":0}, {"x":7.25, "y":0}, {"x":8.25, "y":0}, {"x":9.25, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.25, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2.25, "y":1, "w":1.5}, {"x":3.75, "y":1}, {"x":4.75, "y":1}, {"x":5.75, "y":1}, {"x":6.75, "y":1}, {"x":7.75, "y":1}, {"x":8.75, "y":1}, {"x":9.75, "y":1}, {"x":10.75, "y":1}, {"x":11.75, "y":1}, {"x":12.75, "y":1}, {"x":13.75, "y":1}, {"x":14.75, "y":1}, {"x":15.75, "y":1, "w":1.5}, {"x":17.25, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2.25, "y":2, "w":1.75}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":13, "y":2}, {"x":14, "y":2}, {"x":15, "y":2, "w":2.25}, {"x":17.25, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2.25, "y":3, "w":2.25}, {"x":4.5, "y":3}, {"x":5.5, "y":3}, {"x":6.5, "y":3}, {"x":7.5, "y":3}, {"x":8.5, "y":3}, {"x":9.5, "y":3}, {"x":10.5, "y":3}, {"x":11.5, "y":3}, {"x":12.5, "y":3}, {"x":13.5, "y":3}, {"x":14.5, "y":3, "w":1.75}, {"x":16.25, "y":3}, {"x":17.25, "y":3}, {"x":0, "y":4}, {"x":1, "y":4}, {"x":2.25, "y":4, "w":1.25}, {"x":3.5, "y":4, "w":1.25}, {"x":4.75, "y":4, "w":1.25}, {"x":6, "y":4, "w":6.25}, {"x":12.25, "y":4}, {"x":13.25, "y":4}, {"x":14.25, "y":4}, {"x":15.25, "y":4}, {"x":16.25, "y":4}, {"x":17.25, "y":4}] @@ -13,4 +11,4 @@ "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2.25, "y":0}, {"x":3.25, "y":0}, {"x":4.25, "y":0}, {"x":5.25, "y":0}, {"x":6.25, "y":0}, {"x":7.25, "y":0}, {"x":8.25, "y":0}, {"x":9.25, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.25, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2.25, "y":1, "w":1.5}, {"x":3.75, "y":1}, {"x":4.75, "y":1}, {"x":5.75, "y":1}, {"x":6.75, "y":1}, {"x":7.75, "y":1}, {"x":8.75, "y":1}, {"x":9.75, "y":1}, {"x":10.75, "y":1}, {"x":11.75, "y":1}, {"x":12.75, "y":1}, {"x":13.75, "y":1}, {"x":14.75, "y":1}, {"x":16, "y":1, "w":1.25, "h":2}, {"x":17.25, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2.25, "y":2, "w":1.75}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":13, "y":2}, {"x":14, "y":2}, {"x":15, "y":2}, {"x":17.25, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2.25, "y":3, "w":1.25}, {"x":3.5, "y":3}, {"x":4.5, "y":3}, {"x":5.5, "y":3}, {"x":6.5, "y":3}, {"x":7.5, "y":3}, {"x":8.5, "y":3}, {"x":9.5, "y":3}, {"x":10.5, "y":3}, {"x":11.5, "y":3}, {"x":12.5, "y":3}, {"x":13.5, "y":3}, {"x":14.5, "y":3, "w":1.75}, {"x":16.25, "y":3}, {"x":17.25, "y":3}, {"x":0, "y":4}, {"x":1, "y":4}, {"x":2.25, "y":4, "w":1.25}, {"x":3.5, "y":4, "w":1.25}, {"x":4.75, "y":4, "w":1.25}, {"x":6, "y":4, "w":6.25}, {"x":12.25, "y":4}, {"x":13.25, "y":4}, {"x":14.25, "y":4}, {"x":15.25, "y":4}, {"x":16.25, "y":4}, {"x":17.25, "y":4}] } } -} \ No newline at end of file +} diff --git a/keyboards/redscarf_iiplus/verb/rules.mk b/keyboards/redscarf_iiplus/verb/rules.mk index 7b8012db7d33..f443d3b433b0 100755 --- a/keyboards/redscarf_iiplus/verb/rules.mk +++ b/keyboards/redscarf_iiplus/verb/rules.mk @@ -2,33 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = qmk-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# 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 = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output CUSTOM_MATRIX = yes SRC += matrix.c diff --git a/keyboards/redscarf_iiplus/verc/config.h b/keyboards/redscarf_iiplus/verc/config.h index 5659b53f9b94..c313b90a325a 100755 --- a/keyboards/redscarf_iiplus/verc/config.h +++ b/keyboards/redscarf_iiplus/verc/config.h @@ -123,59 +123,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -194,26 +141,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/redscarf_iiplus/verc/info.json b/keyboards/redscarf_iiplus/verc/info.json index 210b399ba766..c3988d225bf4 100644 --- a/keyboards/redscarf_iiplus/verc/info.json +++ b/keyboards/redscarf_iiplus/verc/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Red Scarf II+ Ver.C (RS68)", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_ansi": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] @@ -13,4 +11,4 @@ "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.75, "y":1, "w":1.25, "h":2}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2}, {"x":15, "y":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] } } -} \ No newline at end of file +} diff --git a/keyboards/redscarf_iiplus/verc/rules.mk b/keyboards/redscarf_iiplus/verc/rules.mk index 45c7197560c3..724cd6f6c448 100755 --- a/keyboards/redscarf_iiplus/verc/rules.mk +++ b/keyboards/redscarf_iiplus/verc/rules.mk @@ -2,33 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = qmk-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# 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 = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output CUSTOM_MATRIX = yes SRC += matrix.c diff --git a/keyboards/redscarf_iiplus/verd/config.h b/keyboards/redscarf_iiplus/verd/config.h index abc3ae378090..94b0e88539e9 100644 --- a/keyboards/redscarf_iiplus/verd/config.h +++ b/keyboards/redscarf_iiplus/verd/config.h @@ -127,59 +127,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -198,26 +145,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/redscarf_iiplus/verd/info.json b/keyboards/redscarf_iiplus/verd/info.json index 65152a341cb6..8b2d3c2d9764 100644 --- a/keyboards/redscarf_iiplus/verd/info.json +++ b/keyboards/redscarf_iiplus/verd/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Red Scarf II+ Ver D", "url": "", "maintainer": "qmk", - "width": 19, - "height": 5, "layouts": { "LAYOUT_60_ansi_numpad_split0": { - "key_count": 79, "layout": [ {"label":"~", "x":0, "y":0}, @@ -97,7 +94,6 @@ }, "LAYOUT_60_ansi_numpad": { - "key_count": 78, "layout": [ {"label":"~", "x":0, "y":0}, diff --git a/keyboards/redscarf_iiplus/verd/rules.mk b/keyboards/redscarf_iiplus/verd/rules.mk index 648af8126d0d..6be5a7f833c7 100644 --- a/keyboards/redscarf_iiplus/verd/rules.mk +++ b/keyboards/redscarf_iiplus/verd/rules.mk @@ -2,33 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = halfkay # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration - # 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 = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output CUSTOM_MATRIX = yes SRC += matrix.c diff --git a/keyboards/retro_75/config.h b/keyboards/retro_75/config.h index 9af7af44bf4e..6ab89d7617e4 100644 --- a/keyboards/retro_75/config.h +++ b/keyboards/retro_75/config.h @@ -121,59 +121,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -192,26 +139,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/retro_75/info.json b/keyboards/retro_75/info.json index 6a6253c37580..585506ae43d1 100644 --- a/keyboards/retro_75/info.json +++ b/keyboards/retro_75/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Retro75", "url": "", "maintainer": "zvecr", - "width": 16, - "height": 6.25, "layouts": { "LAYOUT": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.5, "y":0}, {"label":"F2", "x":2.5, "y":0}, {"label":"F3", "x":3.5, "y":0}, {"label":"F4", "x":4.5, "y":0}, {"label":"F5", "x":6, "y":0}, {"label":"F6", "x":7, "y":0}, {"label":"F7", "x":8, "y":0}, {"label":"F8", "x":9, "y":0}, {"label":"F9", "x":10.5, "y":0}, {"label":"F10", "x":11.5, "y":0}, {"label":"F11", "x":12.5, "y":0}, {"label":"F12", "x":13.5, "y":0}, {"label":"Prt Sc", "x":15, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"x":13, "y":1.25, "w":2}, {"label":"Delete", "x":15, "y":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Y", "x":6.5, "y":2.25}, {"label":"U", "x":7.5, "y":2.25}, {"label":"I", "x":8.5, "y":2.25}, {"label":"O", "x":9.5, "y":2.25}, {"label":"P", "x":10.5, "y":2.25}, {"label":"{", "x":11.5, "y":2.25}, {"label":"}", "x":12.5, "y":2.25}, {"label":"|", "x":13.5, "y":2.25, "w":1.5}, {"label":"Page Up", "x":15, "y":2.25}, {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"H", "x":6.75, "y":3.25}, {"label":"J", "x":7.75, "y":3.25}, {"label":"K", "x":8.75, "y":3.25}, {"label":"L", "x":9.75, "y":3.25}, {"label":":", "x":10.75, "y":3.25}, {"label":"\"", "x":11.75, "y":3.25}, {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, {"label":"Page Down", "x":15, "y":3.25}, {"label":"Shift", "x":0, "y":4.25, "w":2.25}, {"label":"Z", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"N", "x":7.25, "y":4.25}, {"label":"M", "x":8.25, "y":4.25}, {"label":"<", "x":9.25, "y":4.25}, {"label":">", "x":10.25, "y":4.25}, {"label":"?", "x":11.25, "y":4.25}, {"label":"Shift", "x":12.25, "y":4.25, "w":1.75}, {"label":"\u2191", "x":14, "y":4.25}, {"label":"Fn", "x":15, "y":4.25}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.5}, {"label":"Alt", "x":2.25, "y":5.25, "w":1.5}, {"x":3.75, "y":5.25, "w":7}, {"label":"Alt", "x":10.75, "y":5.25, "w":1.5}, {"label":"\u2190", "x":13, "y":5.25}, {"label":"\u2193", "x":14, "y":5.25}, {"label":"\u2192", "x":15, "y":5.25}] @@ -12,4 +10,4 @@ "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.5, "y":0}, {"label":"F2", "x":2.5, "y":0}, {"label":"F3", "x":3.5, "y":0}, {"label":"F4", "x":4.5, "y":0}, {"label":"F5", "x":6, "y":0}, {"label":"F6", "x":7, "y":0}, {"label":"F7", "x":8, "y":0}, {"label":"F8", "x":9, "y":0}, {"label":"F9", "x":10.5, "y":0}, {"label":"F10", "x":11.5, "y":0}, {"label":"F11", "x":12.5, "y":0}, {"label":"F12", "x":13.5, "y":0}, {"label":"Prt Sc", "x":15, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"x":13, "y":1.25}, {"x":14, "y":1.25}, {"label":"Delete", "x":15, "y":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Y", "x":6.5, "y":2.25}, {"label":"U", "x":7.5, "y":2.25}, {"label":"I", "x":8.5, "y":2.25}, {"label":"O", "x":9.5, "y":2.25}, {"label":"P", "x":10.5, "y":2.25}, {"label":"{", "x":11.5, "y":2.25}, {"label":"}", "x":12.5, "y":2.25}, {"label":"|", "x":13.5, "y":2.25, "w":1.5}, {"label":"Page Up", "x":15, "y":2.25}, {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"H", "x":6.75, "y":3.25}, {"label":"J", "x":7.75, "y":3.25}, {"label":"K", "x":8.75, "y":3.25}, {"label":"L", "x":9.75, "y":3.25}, {"label":":", "x":10.75, "y":3.25}, {"label":"\"", "x":11.75, "y":3.25}, {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, {"label":"Page Down", "x":15, "y":3.25}, {"label":"Shift", "x":0, "y":4.25, "w":2.25}, {"label":"Z", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"N", "x":7.25, "y":4.25}, {"label":"M", "x":8.25, "y":4.25}, {"label":"<", "x":9.25, "y":4.25}, {"label":">", "x":10.25, "y":4.25}, {"label":"?", "x":11.25, "y":4.25}, {"label":"Shift", "x":12.25, "y":4.25, "w":1.75}, {"label":"\u2191", "x":14, "y":4.25}, {"label":"Fn", "x":15, "y":4.25}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.5}, {"label":"Alt", "x":2.25, "y":5.25, "w":1.5}, {"x":3.75, "y":5.25, "w":7}, {"label":"Alt", "x":10.75, "y":5.25, "w":1.5}, {"label":"\u2190", "x":13, "y":5.25}, {"label":"\u2193", "x":14, "y":5.25}, {"label":"\u2192", "x":15, "y":5.25}] } } -} \ No newline at end of file +} diff --git a/keyboards/retro_75/rules.mk b/keyboards/retro_75/rules.mk index fcea7632e06d..11a626e9d25a 100644 --- a/keyboards/retro_75/rules.mk +++ b/keyboards/retro_75/rules.mk @@ -7,17 +7,13 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/reversestudio/decadepad/info.json b/keyboards/reversestudio/decadepad/info.json index 6a2219a0f32b..0789acae2c8c 100644 --- a/keyboards/reversestudio/decadepad/info.json +++ b/keyboards/reversestudio/decadepad/info.json @@ -2,11 +2,8 @@ "keyboard_name": "DecadePad", "url": "", "maintainer": "huajijam", - "width": 6, - "height": 4, "layouts": { "LAYOUT_numpad_6x4": { - "key_count": 21, "layout": [ {"x":0, "y":0}, {"x":1, "y":0}, @@ -37,4 +34,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/reversestudio/decadepad/rules.mk b/keyboards/reversestudio/decadepad/rules.mk index 6011be9e86b3..039c85c0820d 100644 --- a/keyboards/reversestudio/decadepad/rules.mk +++ b/keyboards/reversestudio/decadepad/rules.mk @@ -2,35 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # 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 -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output UNICODE_ENABLE = yes # Unicode -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - LAYOUTS = numpad_6x4 diff --git a/keyboards/reviung33/info.json b/keyboards/reviung33/info.json index 559c2e0145f8..450a41930b90 100644 --- a/keyboards/reviung33/info.json +++ b/keyboards/reviung33/info.json @@ -2,8 +2,6 @@ "keyboard_name": "reviung33", "url": "", "maintainer": "gtips", - "width": 3, - "height": 2, "layouts": { "LAYOUT_reviung33": { "layout": [ diff --git a/keyboards/reviung33/rules.mk b/keyboards/reviung33/rules.mk index 4581b001d504..8dbcea66ea5c 100644 --- a/keyboards/reviung33/rules.mk +++ b/keyboards/reviung33/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 = 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 diff --git a/keyboards/reviung34/config.h b/keyboards/reviung34/config.h index 9a73c83e710a..0847678e86af 100755 --- a/keyboards/reviung34/config.h +++ b/keyboards/reviung34/config.h @@ -123,59 +123,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -194,26 +141,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/reviung34/info.json b/keyboards/reviung34/info.json index 5c49422060fe..ecd89d474211 100755 --- a/keyboards/reviung34/info.json +++ b/keyboards/reviung34/info.json @@ -2,8 +2,6 @@ "keyboard_name": "reviung34", "url": "", "maintainer": "gtips", - "width": 11, - "height": 4, "layouts": { "LAYOUT_reviung34": { "layout": [ diff --git a/keyboards/reviung34/reviung34.c b/keyboards/reviung34/reviung34.c index 9a10f96f56c7..00862d73e9bd 100755 --- a/keyboards/reviung34/reviung34.c +++ b/keyboards/reviung34/reviung34.c @@ -14,38 +14,3 @@ * along with this program. If not, see . */ #include "reviung34.h" - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -/* - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - -*/ diff --git a/keyboards/reviung34/rules.mk b/keyboards/reviung34/rules.mk index 085fb294fe13..54c92bab40c5 100755 --- a/keyboards/reviung34/rules.mk +++ b/keyboards/reviung34/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/reviung39/config.h b/keyboards/reviung39/config.h index 376345b74226..098497bc9f46 100644 --- a/keyboards/reviung39/config.h +++ b/keyboards/reviung39/config.h @@ -123,59 +123,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -194,26 +141,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/reviung39/info.json b/keyboards/reviung39/info.json index c75d3f05d172..725e2ff8e198 100644 --- a/keyboards/reviung39/info.json +++ b/keyboards/reviung39/info.json @@ -2,8 +2,6 @@ "keyboard_name": "reviung39", "url": "", "maintainer": "gtips", - "width": 13, - "height": 4.54, "layouts": { "LAYOUT_reviung39": { "layout": [ diff --git a/keyboards/reviung39/keymaps/default_s/keymap.c b/keyboards/reviung39/keymaps/default_s/keymap.c index 9f0d0debc299..42e2694315ed 100644 --- a/keyboards/reviung39/keymaps/default_s/keymap.c +++ b/keyboards/reviung39/keymaps/default_s/keymap.c @@ -33,21 +33,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RSFT_T(KC_ENT), LOWER, KC_SPC, RAISE ), - + [_LOWER] = LAYOUT_reviung39( _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_GRV, KC_TILD, _______, KC_ESC, KC_LGUI, KC_LALT, KC_CAPS, KC_DQUO, KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_PSCR, RSFT_T(KC_SPC), _______, KC_ENT, _______ ), - + [_RAISE] = LAYOUT_reviung39( _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, KC_ESC, KC_RGUI, KC_RALT, KC_CAPS, KC_QUOT, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_BSPC, _______ ), - + [_ADJUST] = LAYOUT_reviung39( RGB_VAI, RGB_SAI, RGB_HUI, RGB_MOD, XXXXXXX, RGB_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_SAD, RGB_HUD, RGB_RMOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, @@ -56,6 +56,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } diff --git a/keyboards/reviung39/keymaps/via/keymap.c b/keyboards/reviung39/keymaps/via/keymap.c new file mode 100644 index 000000000000..0a4a664dc2fb --- /dev/null +++ b/keyboards/reviung39/keymaps/via/keymap.c @@ -0,0 +1,54 @@ +/* Copyright 2020 @toastedmangoes + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _LOWER, + _RAISE, + _ADJUST +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_reviung39( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RSFT_T(KC_ENT), + FN_MO13, KC_SPC, FN_MO23 + ), + + [_LOWER] = LAYOUT_reviung39( + _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, + _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_GRV, KC_TILD, + _______, KC_ESC, KC_LGUI, KC_LALT, KC_CAPS, KC_DQUO, KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_PSCR, RSFT_T(KC_SPC), + _______, KC_ENT, _______ + ), + + [_RAISE] = LAYOUT_reviung39( + _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, + _______, KC_ESC, KC_RGUI, KC_RALT, KC_CAPS, KC_QUOT, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + _______, KC_BSPC, _______ + ), + + [_ADJUST] = LAYOUT_reviung39( + RGB_VAI, RGB_SAI, RGB_HUI, RGB_MOD, XXXXXXX, RGB_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + RGB_VAD, RGB_SAD, RGB_HUD, RGB_RMOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + _______, XXXXXXX, _______ + ), +}; + diff --git a/keyboards/reviung39/keymaps/via/rules.mk b/keyboards/reviung39/keymaps/via/rules.mk new file mode 100644 index 000000000000..5d85ccd10314 --- /dev/null +++ b/keyboards/reviung39/keymaps/via/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes +RGBLIGHT_ENABLE = no +LTO_ENABLE = yes diff --git a/keyboards/reviung39/reviung39.c b/keyboards/reviung39/reviung39.c index 1ea816e5ae22..0948106e9d8d 100644 --- a/keyboards/reviung39/reviung39.c +++ b/keyboards/reviung39/reviung39.c @@ -14,38 +14,3 @@ * along with this program. If not, see . */ #include "reviung39.h" - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -/* - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - -*/ diff --git a/keyboards/reviung39/rules.mk b/keyboards/reviung39/rules.mk index 085fb294fe13..54c92bab40c5 100644 --- a/keyboards/reviung39/rules.mk +++ b/keyboards/reviung39/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/reviung41/config.h b/keyboards/reviung41/config.h index f3977d9f3e27..967ca791d585 100644 --- a/keyboards/reviung41/config.h +++ b/keyboards/reviung41/config.h @@ -123,59 +123,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -194,26 +141,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/reviung41/info.json b/keyboards/reviung41/info.json index aff1660389f8..ff9e11b939e6 100644 --- a/keyboards/reviung41/info.json +++ b/keyboards/reviung41/info.json @@ -2,11 +2,8 @@ "keyboard_name": "reviung39", "url": "", "maintainer": "gtips", - "width": 13, - "height": 4.54, "layouts": { "LAYOUT_reviung41": { - "key_count": 41, "layout": [ {"label":"K00", "x":0, "y":0.54}, {"label":"K01", "x":1, "y":0.36}, diff --git a/keyboards/reviung41/rules.mk b/keyboards/reviung41/rules.mk index b68c5963b491..985e18ffdc91 100644 --- a/keyboards/reviung41/rules.mk +++ b/keyboards/reviung41/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/reviung5/config.h b/keyboards/reviung5/config.h new file mode 100644 index 000000000000..b06c5797fdbd --- /dev/null +++ b/keyboards/reviung5/config.h @@ -0,0 +1,145 @@ +/* +Copyright 2021 gtips + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x5C06 +#define PRODUCT_ID 0x4F0D +#define DEVICE_VER 0x0001 +#define MANUFACTURER gtips +#define PRODUCT reviung5 + +/* key matrix size */ +#define MATRIX_ROWS 1 +#define MATRIX_COLS 5 + +/* + * 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 \ + { F4 } +#define MATRIX_COL_PINS \ + { D4, C6, D7, E6, B4 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Encoder */ +#define ENCODERS_PAD_A \ + { D0 } +#define ENCODERS_PAD_B \ + { D1 } + +#define RGB_DI_PIN D3 +#ifdef RGB_DI_PIN +# define RGBLED_NUM 4 +# define RGBLIGHT_HUE_STEP 16 +# define RGBLIGHT_SAT_STEP 16 +# define RGBLIGHT_VAL_STEP 16 +# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/reviung5/info.json b/keyboards/reviung5/info.json new file mode 100644 index 000000000000..78d27d64e2a6 --- /dev/null +++ b/keyboards/reviung5/info.json @@ -0,0 +1,16 @@ +{ + "keyboard_name": "reviung5", + "url": "", + "maintainer": "gtips", + "layouts": { + "LAYOUT_reviung5": { + "layout": [ + {"label": "k00", "x": 0, "y": 0}, + {"label": "k01", "x": 1, "y": 0.25}, + {"label": "k02", "x": 2, "y": 0.25}, + {"label": "k03", "x": 3, "y": 0.25}, + {"label": "k04", "x": 4, "y": 0} + ] + } + } +} diff --git a/keyboards/reviung5/keymaps/default/keymap.c b/keyboards/reviung5/keymaps/default/keymap.c new file mode 100644 index 000000000000..39f6669a5267 --- /dev/null +++ b/keyboards/reviung5/keymaps/default/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2021 gtips + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _LOWER, +}; + +#define LO_VD LT(_LOWER, KC_VOLD) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT_reviung5( + LO_VD, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU + ), + [_LOWER] = LAYOUT_reviung5( + _______, RGB_HUI, RGB_MOD, RGB_TOG, KC_MUTE + ) +}; diff --git a/keyboards/reviung5/keymaps/default/readme.md b/keyboards/reviung5/keymaps/default/readme.md new file mode 100644 index 000000000000..babdce579fac --- /dev/null +++ b/keyboards/reviung5/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for reviung5 diff --git a/keyboards/reviung5/keymaps/default_lre/keymap.c b/keyboards/reviung5/keymaps/default_lre/keymap.c new file mode 100644 index 000000000000..2e732e72fe48 --- /dev/null +++ b/keyboards/reviung5/keymaps/default_lre/keymap.c @@ -0,0 +1,55 @@ +/* Copyright 2021 gtips + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _LOWER, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT_reviung5( + TG(_LOWER), KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE + ), + [_LOWER] = LAYOUT_reviung5( + _______, LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), RGB_TOG + ) +}; + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + if (IS_LAYER_ON(_LOWER)) { + tap_code16((clockwise == true) ? KC_WH_D : KC_WH_U); + } else { + tap_code((clockwise == true) ? KC_VOLD : KC_VOLU); + } + } + return true; +} + +layer_state_t layer_state_set_user(layer_state_t state) { + switch (get_highest_layer(state)) { + case _LOWER: + rgblight_setrgb (RGB_GOLD); + break; + default: // for any other layers, or the default layer + rgblight_setrgb (RGB_TEAL); + break; + } + return state; +} diff --git a/keyboards/reviung5/keymaps/default_lre/readme.md b/keyboards/reviung5/keymaps/default_lre/readme.md new file mode 100644 index 000000000000..0e3edee7b116 --- /dev/null +++ b/keyboards/reviung5/keymaps/default_lre/readme.md @@ -0,0 +1,3 @@ +# The default keymap for reviung5 + +## Use the Left Rotary Encoder diff --git a/keyboards/reviung5/keymaps/default_rre/keymap.c b/keyboards/reviung5/keymaps/default_rre/keymap.c new file mode 100644 index 000000000000..9ee41cb7e906 --- /dev/null +++ b/keyboards/reviung5/keymaps/default_rre/keymap.c @@ -0,0 +1,55 @@ +/* Copyright 2021 gtips + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _LOWER, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT_reviung5( + KC_MUTE, KC_MPRV, KC_MPLY, KC_MNXT, TG(_LOWER) + ), + [_LOWER] = LAYOUT_reviung5( + RGB_TOG, LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), _______ + ) +}; + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + if (IS_LAYER_ON(_LOWER)) { + tap_code16((clockwise == true) ? KC_WH_D : KC_WH_U); + } else { + tap_code((clockwise == true) ? KC_VOLD : KC_VOLU); + } + } + return true; +} + +layer_state_t layer_state_set_user(layer_state_t state) { + switch (get_highest_layer(state)) { + case _LOWER: + rgblight_setrgb (RGB_RED); + break; + default: // for any other layers, or the default layer + rgblight_setrgb (RGB_TEAL); + break; + } + return state; +} diff --git a/keyboards/reviung5/keymaps/default_rre/readme.md b/keyboards/reviung5/keymaps/default_rre/readme.md new file mode 100644 index 000000000000..d16e25ce503b --- /dev/null +++ b/keyboards/reviung5/keymaps/default_rre/readme.md @@ -0,0 +1,4 @@ +# The default keymap for reviung5 + +## Use the Right Rotary Encoder + diff --git a/keyboards/reviung5/readme.md b/keyboards/reviung5/readme.md new file mode 100644 index 000000000000..990645649c3a --- /dev/null +++ b/keyboards/reviung5/readme.md @@ -0,0 +1,19 @@ +# reviung5 + +![reviung5](https://github.com/gtips/reviung/blob/master/reviung5/image/reviung5-1.jpg) + +The REVIUNG5 is 5-key (or 4-key + Rotary Encoder) macropad. + +* Keyboard Maintainer: [gtips](https://github.com/gtips) +* Hardware Supported: REVIUNG5 PCB. +* Hardware Availability: [PCB & Case Data](https://github.com/gtips/reviung/tree/master/reviung5) + +Make example for this keyboard (after setting up your build environment): + + make reviung5:default + +Flashing example for this keyboard: + + make reviung5:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/reviung5/reviung5.c b/keyboards/reviung5/reviung5.c new file mode 100644 index 000000000000..a8f98f062794 --- /dev/null +++ b/keyboards/reviung5/reviung5.c @@ -0,0 +1,17 @@ +/* Copyright 2021 gtips + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "reviung5.h" diff --git a/keyboards/reviung5/reviung5.h b/keyboards/reviung5/reviung5.h new file mode 100644 index 000000000000..f5d952ba943f --- /dev/null +++ b/keyboards/reviung5/reviung5.h @@ -0,0 +1,33 @@ +/* Copyright 2021 gtips + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT_reviung5( \ + K00, K01, K02, K03, K04 \ +) { \ + { K00, K01, K02, K03, K04 } \ +} diff --git a/keyboards/reviung5/rules.mk b/keyboards/reviung5/rules.mk new file mode 100644 index 000000000000..af5c6a010f6c --- /dev/null +++ b/keyboards/reviung5/rules.mk @@ -0,0 +1,20 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes \ No newline at end of file diff --git a/keyboards/reviung61/info.json b/keyboards/reviung61/info.json index 0b038196c9ce..5a23617d5594 100644 --- a/keyboards/reviung61/info.json +++ b/keyboards/reviung61/info.json @@ -2,8 +2,6 @@ "keyboard_name": "reviung61", "url": "", "maintainer": "gtips", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_ansi": { "layout": [ diff --git a/keyboards/reviung61/rules.mk b/keyboards/reviung61/rules.mk index fc546a76d314..c9152b374d6e 100644 --- a/keyboards/reviung61/rules.mk +++ b/keyboards/reviung61/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 = 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 LAYOUTS = 60_ansi diff --git a/keyboards/rgbkb/common/common_oled.c b/keyboards/rgbkb/common/common_oled.c new file mode 100644 index 000000000000..b6ea6b20af14 --- /dev/null +++ b/keyboards/rgbkb/common/common_oled.c @@ -0,0 +1,101 @@ +/* + * ---------------------------------------------------------------------------- + * "THE BEER-WARE LICENSE" (Revision 42): + * wrote this file. As long as you retain this + * notice you can do whatever you want with this stuff. If we meet some day, and + * you think this stuff is worth it, you can buy me a beer in return. David Rauseo + * ---------------------------------------------------------------------------- + */ + +#include "common_oled.h" +#include "oled_driver.h" +#include "rgb_matrix.h" + +// for memcpy +#include +#include + +typedef struct { + bool selecting; + uint8_t selection; +} kb_menu_status_t; + +static kb_menu_status_t rgb_menu = { false, 4 }; +static bool rgb_menu_changed = false; + +void render_logo(void) { + static const char PROGMEM font_logo[] = { + 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, + 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, + 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0}; + oled_write_P(font_logo, false); +} + +void render_icon(void) { + static const char PROGMEM font_icon[] = { + 0x9b,0x9c,0x9d,0x9e,0x9f, + 0xbb,0xbc,0xbd,0xbe,0xbf, + 0xdb,0xdc,0xdd,0xde,0xdf,0 + }; + oled_write_P(font_icon, false); +} + +#define RGB_FUNCTION_COUNT 6 +typedef void (*rgb_matrix_f)(void); +const rgb_matrix_f rgb_matrix_functions[RGB_FUNCTION_COUNT][2] = { + { rgb_matrix_increase_hue, rgb_matrix_decrease_hue }, + { rgb_matrix_increase_sat, rgb_matrix_decrease_sat }, + { rgb_matrix_increase_val, rgb_matrix_decrease_val }, + { rgb_matrix_increase_speed, rgb_matrix_decrease_speed }, + { rgb_matrix_step, rgb_matrix_step_reverse }, + { rgb_matrix_toggle, rgb_matrix_toggle } +}; + +void render_rgb_menu(void) { + static char buffer[63] = {0}; + snprintf(buffer, sizeof(buffer), "Hue %3dSatrn %3dValue %3dSpeed %3dMode %3dEnbld %3d", + rgb_matrix_config.hsv.h, rgb_matrix_config.hsv.s, rgb_matrix_config.hsv.v, rgb_matrix_config.speed, rgb_matrix_config.mode, rgb_matrix_config.enable); + + if (rgb_menu.selecting) { + buffer[5 + rgb_menu.selection * 10] = '*'; + } + else { + buffer[5 + rgb_menu.selection * 10] = '>'; + } + oled_write(buffer, false); +} + +void rgb_menu_selection(void) { + if (!is_keyboard_master()) return; + rgb_menu.selecting = !rgb_menu.selecting; + rgb_menu_changed = true; +} + +void rgb_menu_action(bool clockwise) { + if (!is_keyboard_master()) return; + if (rgb_menu.selecting) { + if (!clockwise) { + rgb_menu.selection = (rgb_menu.selection - 1); + if (rgb_menu.selection >= RGB_FUNCTION_COUNT) + rgb_menu.selection = RGB_FUNCTION_COUNT - 1; + } + else { + rgb_menu.selection = (rgb_menu.selection + 1) % RGB_FUNCTION_COUNT; + } + } + else { + (*rgb_matrix_functions[rgb_menu.selection][clockwise])(); + } + rgb_menu_changed = true; +} + +void rgb_menu_update(int8_t transaction_id) { + if (!is_keyboard_master()) return; + if (!rgb_menu_changed) return; + rgb_menu_changed = false; + transaction_rpc_send(transaction_id, sizeof(kb_menu_status_t), &rgb_menu); +} + +void rgb_menu_slave_sync(uint8_t initiator2target_buffer_size, const void* initiator2target_buffer, uint8_t target2initiator_buffer_size, void* target2initiator_buffer) { + memcpy(&rgb_menu, initiator2target_buffer, sizeof(kb_menu_status_t)); +} \ No newline at end of file diff --git a/keyboards/rgbkb/common/common_oled.h b/keyboards/rgbkb/common/common_oled.h new file mode 100644 index 000000000000..a99988b2a823 --- /dev/null +++ b/keyboards/rgbkb/common/common_oled.h @@ -0,0 +1,21 @@ +/* + * ---------------------------------------------------------------------------- + * "THE BEER-WARE LICENSE" (Revision 42): + * wrote this file. As long as you retain this + * notice you can do whatever you want with this stuff. If we meet some day, and + * you think this stuff is worth it, you can buy me a beer in return. David Rauseo + * ---------------------------------------------------------------------------- + */ + +#pragma once + +#include +#include + +void render_logo(void); +void render_icon(void); +void render_rgb_menu(void); +void rgb_menu_selection(void); +void rgb_menu_action(bool clockwise); +void rgb_menu_update(int8_t transaction_id); +void rgb_menu_slave_sync(uint8_t initiator2target_buffer_size, const void* initiator2target_buffer, uint8_t target2initiator_buffer_size, void* target2initiator_buffer); \ No newline at end of file diff --git a/keyboards/rgbkb/common/glcdfont.c b/keyboards/rgbkb/common/glcdfont.c new file mode 100644 index 000000000000..320925a8f70d --- /dev/null +++ b/keyboards/rgbkb/common/glcdfont.c @@ -0,0 +1,240 @@ +/* + * ---------------------------------------------------------------------------- + * "THE BEER-WARE LICENSE" (Revision 42): + * wrote this file. As long as you retain this + * notice you can do whatever you want with this stuff. If we meet some day, and + * you think this stuff is worth it, you can buy me a beer in return. David Rauseo + * ---------------------------------------------------------------------------- + */ + +#include "progmem.h" + +// Helidox 8x6 font with RGBKB SOL Logo +// Online editor: http://teripom.x0.com/ + +static const unsigned char font[] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, + 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, + 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, + 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, + 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, + 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, + 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, + 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, + 0x00, 0x18, 0x24, 0x18, 0x00, 0x00, + 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, + 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, + 0x26, 0x29, 0x79, 0x29, 0x26, 0x00, + 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, + 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, + 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, + 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, + 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, + 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, + 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, + 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, + 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, + 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, + 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00, + 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00, + 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, + 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, + 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, + 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, + 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, + 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, + 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, + 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, + 0x23, 0x13, 0x08, 0x64, 0x62, 0x00, + 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, + 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, + 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, + 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, + 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, + 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, + 0x00, 0x80, 0x70, 0x30, 0x00, 0x00, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, + 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, + 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, + 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, + 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, + 0x72, 0x49, 0x49, 0x49, 0x46, 0x00, + 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, + 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, + 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, + 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, + 0x41, 0x21, 0x11, 0x09, 0x07, 0x00, + 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, + 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, + 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, + 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, + 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, + 0x02, 0x01, 0x59, 0x09, 0x06, 0x00, + 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00, + 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, + 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, + 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, + 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, + 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, + 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, + 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, + 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, + 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, + 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, + 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, + 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, + 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, + 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, + 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, + 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, + 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, + 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, + 0x26, 0x49, 0x49, 0x49, 0x32, 0x00, + 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00, + 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, + 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, + 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, + 0x63, 0x14, 0x08, 0x14, 0x63, 0x00, + 0x03, 0x04, 0x78, 0x04, 0x03, 0x00, + 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, + 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, + 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, + 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, + 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, + 0x00, 0x03, 0x07, 0x08, 0x00, 0x00, + 0x20, 0x54, 0x54, 0x78, 0x40, 0x00, + 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00, + 0x38, 0x44, 0x44, 0x44, 0x28, 0x00, + 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00, + 0x38, 0x54, 0x54, 0x54, 0x18, 0x00, + 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00, + 0x18, 0xA4, 0xA4, 0x9C, 0x78, 0x00, + 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, + 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, + 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, + 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, + 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, + 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00, + 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, + 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, + 0xFC, 0x18, 0x24, 0x24, 0x18, 0x00, + 0x18, 0x24, 0x24, 0x18, 0xFC, 0x00, + 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, + 0x48, 0x54, 0x54, 0x54, 0x24, 0x00, + 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00, + 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, + 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, + 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, + 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, + 0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00, + 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, + 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, + 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0x00, 0x41, 0x36, 0x08, 0x00, 0x00, + 0x02, 0x01, 0x02, 0x04, 0x02, 0x00, + 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x00, 0x00, 0x0C, 0x90, + 0xB0, 0xE0, 0x72, 0x31, 0x9B, 0xDE, + 0xCE, 0xEC, 0xEE, 0xE9, 0xE9, 0xEC, + 0xCF, 0xDA, 0x99, 0x3E, 0x62, 0xE4, + 0xC4, 0x70, 0x10, 0x10, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, + 0xC0, 0xC0, 0x80, 0x80, 0x02, 0x85, + 0x85, 0x87, 0x85, 0x89, 0x89, 0x92, + 0xEA, 0xC6, 0xC4, 0x48, 0x50, 0x60, + 0x40, 0x40, 0x40, 0x40, 0xC0, 0xE0, + 0x50, 0x28, 0x10, 0x10, 0x60, 0xC0, + 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, + 0x80, 0x80, 0x80, 0xE0, 0xF8, 0xFC, + 0xF8, 0xF0, 0x00, 0x00, 0x00, 0x00, + 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC, + 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00, + 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, + 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00, + 0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B, + 0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00, + 0x00, 0x00, 0xF0, 0xF4, 0xEC, 0xDE, + 0xDE, 0xBE, 0x3E, 0x3E, 0x3F, 0x3F, + 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x3F, + 0x3F, 0x3E, 0x3E, 0xBE, 0xDE, 0xDE, + 0xEC, 0xF4, 0xF0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x7F, 0x80, 0x80, + 0x80, 0x70, 0x0F, 0x00, 0x00, 0x80, + 0x7F, 0x00, 0x00, 0x7F, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x7F, + 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x21, 0x33, 0x3B, 0x7B, + 0xFF, 0x00, 0x7C, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x7C, 0x01, + 0xFF, 0xDE, 0x8C, 0x04, 0x0C, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x01, 0x01, 0x7F, 0x80, + 0x80, 0xBE, 0xBE, 0x80, 0x80, 0x80, + 0xC1, 0xFF, 0x80, 0x04, 0x32, 0x5E, + 0x1C, 0x3D, 0x26, 0x10, 0xC1, 0xFF, + 0x3E, 0x00, 0x00, 0x08, 0x36, 0xC1, + 0x08, 0x08, 0x14, 0x77, 0x94, 0x94, + 0x94, 0xF7, 0x94, 0xF7, 0x9C, 0x9C, + 0xFF, 0xFF, 0x1E, 0x00, 0x00, 0x00, + 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, + 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00, + 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, + 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00, + 0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20, + 0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00, + 0x00, 0x00, 0x01, 0x0F, 0x3F, 0xFF, + 0xFF, 0xFF, 0xFC, 0xE0, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0xE0, 0xFC, 0xFF, 0xFF, 0xFF, + 0x3F, 0x0F, 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, 0x06, 0x02, 0x06, + 0x4D, 0x4F, 0x8C, 0xF9, 0x73, 0x37, + 0x27, 0x2F, 0x2F, 0xAF, 0xEF, 0x6F, + 0x77, 0x17, 0x33, 0x79, 0xCC, 0x1F, + 0x31, 0x20, 0x21, 0x02, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0xE0, + 0xA0, 0xA0, 0xD0, 0x90, 0x48, 0x48, + 0x25, 0x2B, 0x11, 0x09, 0x05, 0x03, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x03, 0x02, 0x04, 0x03, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x0F, 0x1F, + 0x0F, 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, + 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, + 0xFE, 0xFC, 0x00, 0xFC, 0xFE, 0x7F, + 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; diff --git a/keyboards/rgbkb/common/touch_encoder.c b/keyboards/rgbkb/common/touch_encoder.c new file mode 100644 index 000000000000..6293739ec94f --- /dev/null +++ b/keyboards/rgbkb/common/touch_encoder.c @@ -0,0 +1,310 @@ +/* + * ---------------------------------------------------------------------------- + * "THE BEER-WARE LICENSE" (Revision 42): + * wrote this file. As long as you retain this + * notice you can do whatever you want with this stuff. If we meet some day, and + * you think this stuff is worth it, you can buy me a beer in return. Ryan Caltabiano + * ---------------------------------------------------------------------------- + */ + +#include "i2c_master.h" +#include "keyboard.h" +#include "touch_encoder.h" +#include "print.h" +#include "wait.h" +#include "timer.h" + +// for memcpy +#include +#include + +#define I2C_ADDRESS 0x1C +#define CALIBRATION_BIT 0x80 +#define OVERFLOW_BIT 0x40 +#define SLIDER_BIT 0x02 + +#ifndef TOUCH_UPDATE_INTERVAL +# define TOUCH_UPDATE_INTERVAL 33 +#endif + +enum { // QT2120 registers + QT_CHIP_ID = 0, + QT_FIRMWARE_VERSION, + QT_DETECTION_STATUS, + QT_KEY_STATUS, + QT_SLIDER_POSITION = 5, + QT_CALIBRATE, + QT_RESET, + QT_LP, + QT_TTD, + QT_ATD, + QT_DI, + QT_TRD, + QT_DHT, + QT_SLIDER_OPTION, + QT_CHARDE_TIME, + QT_KEY0_DTHR, + QT_KEY1_DTHR, + QT_KEY2_DTHR, + QT_KEY3_DTHR, + QT_KEY4_DTHR, + QT_KEY5_DTHR, + QT_KEY6_DTHR, + QT_KEY7_DTHR, + QT_KEY8_DTHR, + QT_KEY9_DTHR, + QT_KEY10_DTHR, + QT_KEY11_DTHR, + QT_KEY0_CTRL, + QT_KEY1_CTRL, + QT_KEY2_CTRL, + QT_KEY3_CTRL, + QT_KEY4_CTRL, + QT_KEY5_CTRL, + QT_KEY6_CTRL, + QT_KEY7_CTRL, + QT_KEY8_CTRL, + QT_KEY9_CTRL, + QT_KEY10_CTRL, + QT_KEY11_CTRL, + QT_KEY0_PULSE_SCALE, + QT_KEY1_PULSE_SCALE, + QT_KEY2_PULSE_SCALE, + QT_KEY3_PULSE_SCALE, + QT_KEY4_PULSE_SCALE, + QT_KEY5_PULSE_SCALE, + QT_KEY6_PULSE_SCALE, + QT_KEY7_PULSE_SCALE, + QT_KEY8_PULSE_SCALE, + QT_KEY9_PULSE_SCALE, + QT_KEY10_PULSE_SCALE, + QT_KEY11_PULSE_SCALE, + QT_KEY0_SIGNAL, + QT_KEY1_SIGNAL = 54, + QT_KEY2_SIGNAL = 56, + QT_KEY3_SIGNAL = 58, + QT_KEY4_SIGNAL = 60, + QT_KEY5_SIGNAL = 62, + QT_KEY6_SIGNAL = 64, + QT_KEY7_SIGNAL = 66, + QT_KEY8_SIGNAL = 68, + QT_KEY9_SIGNAL = 70, + QT_KEY10_SIGNAL = 72, + QT_KEY11_SIGNAL = 74, + QT_KEY0_REFERENCE = 76, + QT_KEY1_REFERENCE = 78, + QT_KEY2_REFERENCE = 80, + QT_KEY3_REFERENCE = 82, + QT_KEY4_REFERENCE = 84, + QT_KEY5_REFERENCE = 86, + QT_KEY6_REFERENCE = 88, + QT_KEY7_REFERENCE = 90, + QT_KEY8_REFERENCE = 92, + QT_KEY9_REFERENCE = 94, + QT_KEY10_REFERENCE = 96, + QT_KEY11_REFERENCE = 98, +}; + +bool touch_initialized = false; +bool touch_disabled = false; +uint8_t touch_handness = 0; +// touch_raw & touch_processed store the Detection Status, Key Status (x2), and Slider Position values +uint8_t touch_raw[4] = { 0 }; +uint8_t touch_processed[4] = { 0 }; + +uint16_t touch_timer = 0; +uint16_t touch_update_timer = 0; + +// For split transport only +typedef struct { + uint8_t position; + uint8_t taps; +} slave_touch_status_t; + +bool touch_slave_init = false; +slave_touch_status_t touch_slave_state = { 0, 0 }; + +static bool write_register8(uint8_t address, uint8_t data) { + i2c_status_t status = i2c_writeReg((I2C_ADDRESS << 1), address, &data, sizeof(data), I2C_TIMEOUT); + if (status != I2C_STATUS_SUCCESS) { + xprintf("write_register8 %d failed %d\n", address, status); + } + return status == I2C_STATUS_SUCCESS; +} + +static bool read_register(uint8_t address, uint8_t* data, uint16_t length) { + i2c_status_t status = i2c_readReg((I2C_ADDRESS << 1), address, data, length, I2C_TIMEOUT); + if (status != I2C_STATUS_SUCCESS) { + xprintf("read_register %d failed %d\n", address, status); + return false; + } + return true; +} + +void touch_encoder_init(void) { + i2c_init(); + + touch_handness = is_keyboard_left() ? 0 : 1; + + // Set QT to slider mode + touch_initialized = write_register8(QT_SLIDER_OPTION, 0x80); + touch_initialized &= write_register8(QT_TTD, 4); // Toward Drift - 20 @ 3.2s + touch_initialized &= write_register8(QT_ATD, 1); // Away Drift - 5 @ 0.8s + touch_initialized &= write_register8(QT_DI, 4); // Detection Integrator - 4 + touch_initialized &= write_register8(QT_TRD, 0); // Touch Recall - 48 + touch_encoder_calibrate(); +} + +__attribute__((weak)) bool touch_encoder_tapped_kb(uint8_t index, uint8_t section) { return touch_encoder_tapped_user(index, section); } +__attribute__((weak)) bool touch_encoder_update_kb(uint8_t index, bool clockwise) { return touch_encoder_update_user(index, clockwise); } + +__attribute__((weak)) bool touch_encoder_tapped_user(uint8_t index, uint8_t section) { return true; } +__attribute__((weak)) bool touch_encoder_update_user(uint8_t index, bool clockwise) { return true; } + +static void touch_encoder_update_tapped(void) { + // Started touching, being counter for TOUCH_TERM + if (touch_processed[0] & SLIDER_BIT) { + touch_timer = timer_read() + TOUCH_TERM; + return; + } + + // Touch held too long, bail + if (timer_expired(timer_read(), touch_timer)) return; + + uint8_t section = touch_processed[3] / (UINT8_MAX / TOUCH_SEGMENTS + 1); + xprintf("tap %d %d\n", touch_handness, section); + if (is_keyboard_master()) { + if (!touch_disabled) { + touch_encoder_tapped_kb(touch_handness, section); + } + } + else { + touch_slave_state.taps ^= (1 << section); + } +} + +static void touch_encoder_update_position_common(uint8_t* position, uint8_t raw, uint8_t index) { + int8_t delta = (*position - raw) / TOUCH_RESOLUTION; + bool clockwise = raw > *position; + if (delta == 0) return; + + // Don't store raw directly, as we want to ensure any remainder is kept and used next time this is called + *position -= delta * TOUCH_RESOLUTION; + xprintf("pos %d %d\n", index, raw); + //uint8_t u_delta = delta < 0 ? -delta : delta; + if (!touch_disabled) { + //for (uint8_t i = 0; i < u_delta; i++) + touch_encoder_update_kb(index, clockwise); + } +} + +static void touch_encoder_update_position(void) { + // If the user touchs and moves enough, expire touch_timer faster and do encoder position logic instead + if (!timer_expired(timer_read(), touch_timer)) { + if ((uint8_t)(touch_raw[3] - touch_processed[3]) <= TOUCH_DEADZONE) return; + touch_timer = timer_read(); + } + + if (is_keyboard_master()) { + touch_encoder_update_position_common(&touch_processed[3], touch_raw[3], touch_handness); + } + else { + touch_slave_state.position = touch_raw[3]; + } +} + +void touch_encoder_update_slave(slave_touch_status_t slave_state) { + if (!touch_slave_init) { + touch_slave_state = slave_state; + touch_slave_init = true; + return; + } + + if (touch_slave_state.position != slave_state.position) { + // Did a new slide event start? + uint8_t mask = (1 << 7); + if ((touch_slave_state.taps & mask) != (slave_state.taps & mask)) { + touch_slave_state.position = slave_state.position; + } + touch_encoder_update_position_common(&touch_slave_state.position, slave_state.position, !touch_handness); + } + + if (touch_slave_state.taps != slave_state.taps) { + if (!touch_disabled) { + for (uint8_t section = 0; section < TOUCH_SEGMENTS; section++) { + uint8_t mask = (1 << section); + if ((touch_slave_state.taps & mask) != (slave_state.taps & mask)) { + xprintf("tap %d %d\n", !touch_handness, section); + touch_encoder_tapped_kb(!touch_handness, section); + } + } + } + touch_slave_state.taps = slave_state.taps; + } +} + +void touch_encoder_update(int8_t transaction_id) { + if (!touch_initialized) return; +#if TOUCH_UPDATE_INTERVAL > 0 + if (!timer_expired(timer_read(), touch_update_timer)) return; + touch_update_timer = timer_read() + TOUCH_UPDATE_INTERVAL; +#endif + + read_register(QT_DETECTION_STATUS, &touch_raw[0], sizeof(touch_raw)); + touch_processed[1] = touch_raw[1]; + touch_processed[2] = touch_raw[2]; + + if (touch_raw[0] != touch_processed[0]) { + uint8_t delta = touch_raw[0] ^ touch_processed[0]; + touch_processed[0] = touch_raw[0]; + // When calibrating, normal sensor behavior is supended + if (delta & CALIBRATION_BIT) { + xprintf("calibration %d\n", touch_processed[0] >> 7 & 1); + } + if (delta & OVERFLOW_BIT) { + xprintf("overflow %d\n", touch_processed[0] >> 6 & 1); + } + if (delta & SLIDER_BIT) { + touch_processed[3] = touch_raw[3]; + if (!is_keyboard_master()) { + touch_slave_state.position = touch_raw[3]; + touch_slave_state.taps ^= (1 << 7); + } + touch_encoder_update_tapped(); + } + } + + if ((touch_raw[0] & SLIDER_BIT) && touch_processed[3] != touch_raw[3]) { + touch_encoder_update_position(); + } + + if (is_keyboard_master()) { + slave_touch_status_t slave_state; + if (transaction_rpc_exec(transaction_id, sizeof(bool), &touch_disabled, sizeof(slave_touch_status_t), &slave_state)) { + if (memcmp(&touch_slave_state, &slave_state, sizeof(slave_touch_status_t))) + touch_encoder_update_slave(slave_state); + } + } +} + +void touch_encoder_calibrate(void) { + if (!touch_initialized) return; + write_register8(QT_CALIBRATE, 0x01); +} + +bool touch_encoder_calibrating(void) { + return touch_raw[0] & CALIBRATION_BIT; +} + +void touch_encoder_toggle(void) { + touch_disabled = !touch_disabled; +} + +bool touch_encoder_toggled(void) { + return touch_disabled; +} + +void touch_encoder_slave_sync(uint8_t initiator2target_buffer_size, const void* initiator2target_buffer, uint8_t target2initiator_buffer_size, void* target2initiator_buffer) { + touch_disabled = *(bool*)initiator2target_buffer; + memcpy(target2initiator_buffer, &touch_slave_state, sizeof(slave_touch_status_t)); +} diff --git a/keyboards/rgbkb/common/touch_encoder.h b/keyboards/rgbkb/common/touch_encoder.h new file mode 100644 index 000000000000..022f619063e9 --- /dev/null +++ b/keyboards/rgbkb/common/touch_encoder.h @@ -0,0 +1,54 @@ +/* + * ---------------------------------------------------------------------------- + * "THE BEER-WARE LICENSE" (Revision 42): + * wrote this file. As long as you retain this + * notice you can do whatever you want with this stuff. If we meet some day, and + * you think this stuff is worth it, you can buy me a beer in return. Ryan Caltabiano + * ---------------------------------------------------------------------------- + */ + +#pragma once + +#include +#include + +#ifndef TOUCH_TERM +# define TOUCH_TERM 350 +#endif + +#ifndef TOUCH_SEGMENTS +# define TOUCH_SEGMENTS 3 +#elif TOUCH_SEGMENTS < 1 || TOUCH_SEGMENTS > 5 +# error TOUCH_SEGMENTS must be between 1 and 5. +#endif + +#ifndef TOUCH_DEADZONE +# define TOUCH_DEADZONE 50 +#endif + +#ifndef TOUCH_RESOLUTION +# define TOUCH_RESOLUTION 25 +#endif + +void touch_encoder_init(void); +void touch_encoder_update(int8_t transaction_id); + +void touch_encoder_calibrate(void); +bool touch_encoder_calibrating(void); + +void touch_encoder_toggle(void); +bool touch_encoder_toggled(void); + +// Called when touch encoder is tapped, weak function overridable by the kb +bool touch_encoder_tapped_kb(uint8_t index, uint8_t section); + +// Called when touch encoder is slid, weak function overridable by the kb +bool touch_encoder_update_kb(uint8_t index, bool clockwise); + +// Called when touch encoder is tapped, weak function overridable by the user +bool touch_encoder_tapped_user(uint8_t index, uint8_t section); + +// Called when touch encoder is slid, weak function overridable by the user +bool touch_encoder_update_user(uint8_t index, bool clockwise); + +void touch_encoder_slave_sync(uint8_t initiator2target_buffer_size, const void* initiator2target_buffer, uint8_t target2initiator_buffer_size, void* target2initiator_buffer); diff --git a/keyboards/rgbkb/mun/.noci b/keyboards/rgbkb/mun/.noci new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/keyboards/rgbkb/mun/config.h b/keyboards/rgbkb/mun/config.h new file mode 100644 index 000000000000..af0876861e04 --- /dev/null +++ b/keyboards/rgbkb/mun/config.h @@ -0,0 +1,154 @@ +/* + * ---------------------------------------------------------------------------- + * "THE BEER-WARE LICENSE" (Revision 42): + * wrote this file. As long as you retain this + * notice you can do whatever you want with this stuff. If we meet some day, and + * you think this stuff is worth it, you can buy me a beer in return. David Rauseo + * ---------------------------------------------------------------------------- + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x3535 +#define PRODUCT_ID 0x3505 +#define MANUFACTURER RGBKB +#define PRODUCT Mün + +#define USB_POLLING_INTERVAL_MS 1 + +/* Matrix Configuration - Rows are doubled up */ +#define MATRIX_ROWS 14 +// B1, A2 reserved for encoder / touch encoder support +#define MATRIX_ROW_PINS { A1, A3, B3, A13, B15, B1, A2 } +#define MATRIX_COLS 7 +#define MATRIX_COL_PINS { A0, B11, B0, B10, B12, B2, A8 } +#define MATRIX_IO_DELAY 5 + +#define BUSY_WAIT +#define BUSY_WAIT_INSTRUCTIONS 35 // Increase if two rows are pressed at the same time. +#define GPIO_INPUT_PIN_DELAY 10 + +/* Touchbar adjustments */ +#define TOUCH_DEADZONE 50 // width of a "button", wider inputs will be interpreted as a swipe +#define TOUCH_TERM 350 // time of a "button" touch, longer inputs will be a swipe +#define TOUCH_RESOLUTION 25 // sensitivity of swipes, lower=faster + +/* Encoder Configuration */ +#define ENCODERS_PAD_A { B8, B9 } +#define ENCODERS_PAD_B { A14, A15 } +#define TOUCH_SEGMENTS 3 + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* CRC Configuration */ +#define CRC8_OPTIMIZE_SPEED +#define CRC8_USE_TABLE + +/* Split Keyboard Configuration */ +#define EE_HANDS +#define SPLIT_USB_DETECT +// also handles the SERIAL_USART_TX_PIN define +#define SOFT_SERIAL_PIN A9 +#define SERIAL_USART_TX_PAL_MODE 7 +#define SERIAL_USART_TIMEOUT 5 +#define SERIAL_USART_DRIVER SD1 +//#define SERIAL_USART_FULL_DUPLEX - Waiting on reunification pr +#if SERIAL_USART_FULL_DUPLEX + #define SERIAL_USART_RX_PIN A10 + #define SERIAL_USART_RX_PAL_MODE 7 + // Mun connects TX to TX and RX to RX as we were planning on i2c split, so we need pin swap for full duplex + #define SERIAL_USART_PIN_SWAP + #define SERIAL_USART_SPEED (2 * 1024 * 1024) +#else + #define SERIAL_USART_SPEED (1 * 1024 * 1024) +#endif + +/* Split Transport Features */ +#define SPLIT_TRANSPORT_MIRROR +#define SPLIT_LAYER_STATE_ENABLE +#define SPLIT_LED_STATE_ENABLE +#define SPLIT_TRANSACTION_IDS_KB TOUCH_ENCODER_SYNC, RGB_MENU_SYNC + +/* RGB LED Configuration */ +#define RGB_DI_PIN B5 +#define RGBLED_NUM 98 +#define RGBLED_SPLIT { 49, 49 } +#define RGBLIGHT_ANIMATIONS + +#define DRIVER_LED_TOTAL RGBLED_NUM +#define RGB_MATRIX_SPLIT RGBLED_SPLIT +#define RGB_MATRIX_CENTER { 128, 34 } +#define RGB_MATRIX_LED_FLUSH_LIMIT 33 +#define RGB_MATRIX_LED_PROCESS_LIMIT 10 +#define RGB_MATRIX_KEYPRESSES +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define RGB_DISABLE_WHEN_USB_SUSPENDED +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + +#if RGB_UNLIMITED_POWER + #define RGBLIGHT_LIMIT_VAL 255 +#else + #define RGBLIGHT_LIMIT_VAL 127 +#endif +#define RGB_MATRIX_MAXIMUM_BRIGHTNESS RGBLIGHT_LIMIT_VAL + +#define WS2812_PWM_DRIVER PWMD3 +#define WS2812_PWM_CHANNEL 2 +#define WS2812_PWM_PAL_MODE 2 +#define WS2812_DMA_STREAM STM32_DMA1_STREAM3 +#define WS2812_DMA_CHANNEL 3 + +#define TOUCH_UPDATE_INTERVAL 33 +#define OLED_UPDATE_INTERVAL 33 +#define TAP_CODE_DELAY 5 diff --git a/keyboards/rgbkb/mun/halconf.h b/keyboards/rgbkb/mun/halconf.h new file mode 100644 index 000000000000..f5b97499dd04 --- /dev/null +++ b/keyboards/rgbkb/mun/halconf.h @@ -0,0 +1,18 @@ +/* + * ---------------------------------------------------------------------------- + * "THE BEER-WARE LICENSE" (Revision 42): + * wrote this file. As long as you retain this + * notice you can do whatever you want with this stuff. If we meet some day, and + * you think this stuff is worth it, you can buy me a beer in return. David Rauseo + * ---------------------------------------------------------------------------- + */ + +#pragma once + +#define HAL_USE_I2C TRUE + +#define HAL_USE_PWM TRUE + +#define HAL_USE_SERIAL TRUE + +#include_next diff --git a/keyboards/rgbkb/mun/keymaps/default/config.h b/keyboards/rgbkb/mun/keymaps/default/config.h new file mode 100644 index 000000000000..debd16163b69 --- /dev/null +++ b/keyboards/rgbkb/mun/keymaps/default/config.h @@ -0,0 +1,23 @@ +/* + * ---------------------------------------------------------------------------- + * "THE BEER-WARE LICENSE" (Revision 42): + * wrote this file. As long as you retain this + * notice you can do whatever you want with this stuff. If we meet some day, and + * you think this stuff is worth it, you can buy me a beer in return. David Rauseo + * ---------------------------------------------------------------------------- + */ + +#pragma once + +// No need for the single versions when multi performance isn't a problem =D +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#undef ENABLE_RGB_MATRIX_SPLASH +#undef ENABLE_RGB_MATRIX_SOLID_SPLASH + +// 20m timeout (20m * 60s * 1000mil) +// #define RGB_DISABLE_TIMEOUT 1200000 +#define RGB_DISABLE_WHEN_USB_SUSPENDED + +#define STM32_ONBOARD_EEPROM_SIZE 2048 diff --git a/keyboards/rgbkb/mun/keymaps/default/keymap.c b/keyboards/rgbkb/mun/keymaps/default/keymap.c new file mode 100644 index 000000000000..866b8a0d15aa --- /dev/null +++ b/keyboards/rgbkb/mun/keymaps/default/keymap.c @@ -0,0 +1,253 @@ +/* + * ---------------------------------------------------------------------------- + * "THE BEER-WARE LICENSE" (Revision 42): + * wrote this file. As long as you retain this + * notice you can do whatever you want with this stuff. If we meet some day, and + * you think this stuff is worth it, you can buy me a beer in return. David Rauseo + * ---------------------------------------------------------------------------- + */ + +#include QMK_KEYBOARD_H +#include "common_oled.h" + +enum keymap_layers { + _QWERTY, + _COLEMAK, + _GAME, + _FN, + _ADJUST, + _VIA1, + _VIA2, + _VIA3 +}; + +enum keymap_keycodes { + // Disables touch processing + TCH_TOG = SAFE_RANGE, + MENU_BTN, + MENU_UP, + MENU_DN +}; + +// Default Layers +#define QWERTY DF(_QWERTY) +#define COLEMAK DF(_COLEMAK) +#define GAME DF(_GAME) + +// Momentary Layers +#define FN MO(_FN) +#define ADJUST MO(_ADJUST) + +#define FN_CAPS LT(_FN, KC_CAPS) +#define FN_ESC LT(_FN, KC_ESC) + +/* This keyboard is enabled with an RGB Menu Control system. +This functionality is enabled, but still requires a little configuration based on your exact setup. +The RGB Menu will appear on the Right Half's OLED and can be controlled by the MENU keycodes: +MENU_BTN - Triggers a button action for the menu +MENU_UP - Triggers an increase action for the menu +MENU_DN - Triggers a decrease action for the menu + +To finish configuration for your board, you will want to change the default keycodes for an encoder on the right half. +Encoder press keycode should be set to MENU_BTN, Clockwise should be MENU_UP, and Counter Clockwise should be MENU_DN. +Depending on where you add an encoder to the right half will determin in the default keymap where you should put those keycodes. +*/ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* QWERTY + * .--------------------------------------------------------------. .--------------------------------------------------------------. + * | `~/ESC | 1 | 2 | 3 | 4 | 5 | - | | = | 6 | 7 | 8 | 9 | 0 | Bckspc | + * |--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + * | Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | \ | + * |--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + * | FN/Caps| A | S | D | F | G | ( | | ) | H | J | K | L | : | ' | + * |--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + * | Shift | Z | X | C | V | B | { | | } | N | M | , | . | / |Shft/Ent| + * |--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + * | Ctrl | Win | Alt | RGBTOG | Adjust | Space | Bksp | | Enter | Space | Left | Down | Up | Right | Ctrl | + * '--------+--------+--------+--------+--------+--------+--------' '--------+--------+--------+--------+--------+--------+--------' + * Encoder 1 Encoder 2 Encoder 3 Encoder 4 + * .-----------------------------------. .-----------------------------------. + * | VolUp | VolDn | VolUp | VolDn | | PgUp | PgDn | PgUp | PgDn | + * |--------+--------+--------+--------+--------. .--------+--------+--------+--------+--------| + * | VolDn | VolUp | Next | Play | Prev | Touch Encoder Touch Encoder | RgbHuI | RgbHuD | RgbMdD | RgbTog | RgbMdI | + * '--------+--------+--------+--------+--------' '--------+--------+--------+--------+--------' + */ + [_QWERTY] = LAYOUT( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLASH, + FN_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LPRN, KC_RPRN, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LCBR, KC_RCBR, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_SFTENT, + KC_LCTL, KC_LGUI, KC_LALT, RGB_TOG, ADJUST, KC_SPC, KC_DEL, KC_ENT, KC_SPC, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT,KC_RCTL, + + KC_VOLU, KC_VOLD, KC_VOLU, KC_VOLD, KC_PGDN, KC_PGUP, KC_PGDN, KC_PGUP, + KC_VOLD, KC_VOLU, KC_MNXT, KC_MPLY, KC_MPRV, RGB_HUI, RGB_HUD, RGB_RMOD,RGB_TOG, RGB_MOD + ), + + [_COLEMAK] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_Q, KC_W, KC_F, KC_P, KC_G, _______, _______, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, _______, + _______, KC_A, KC_R, KC_S, KC_T, KC_D, _______, _______, KC_H, KC_N, KC_E, KC_I, KC_O, _______, + _______, KC_Z, KC_X, KC_C, KC_V, KC_B, _______, _______, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_GAME] = LAYOUT( + _______, _______, _______, _______, _______, _______, KC_F1, KC_F5, _______, _______, _______, _______, _______, _______, + _______, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_F2, KC_F6, KC_Y, KC_U, KC_I, KC_O, KC_P, _______, + _______, KC_A, KC_S, KC_D, KC_F, KC_G, KC_F3, KC_F7, KC_H, KC_J, KC_K, KC_L, KC_SCLN, _______, + _______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_F4, KC_F8, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______, + _______, KC_NO, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_FN] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, + _______, KC_HOME, KC_UP, KC_END, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, KC_PSCR, KC_PGUP, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_PGDN, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, TCH_TOG, _______, _______, _______, _______, _______, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, + + _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_ADJUST] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, + _______, RGB_SAD, RGB_VAI, RGB_SAI, RESET, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, _______, _______, + _______, RGB_HUD, RGB_VAD, RGB_HUI, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______, + _______, RGB_SPD, _______, RGB_SPI, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, GAME, + _______, RGB_RMOD,_______, RGB_MOD, _______, _______, _______, _______, _______, KC_P0, KC_PDOT, KC_NLCK, QWERTY, COLEMAK, + + _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_VIA1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_VIA2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_VIA3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) + { + case MENU_BTN: + if (record->event.pressed) { + rgb_menu_selection(); + } + return false; + case MENU_UP: + if (record->event.pressed) { + rgb_menu_action(true); + } + return false; + case MENU_DN: + if (record->event.pressed) { + rgb_menu_action(false); + } + return false; + case TCH_TOG: + if (record->event.pressed) { + touch_encoder_toggle(); + } + return false; // Skip all further processing of this key + default: + return true; + } +} + +static void render_layer(void) { + // Host Keyboard Layer Status + oled_write_P(PSTR("Layer"), false); + switch (get_highest_layer(layer_state)) { + case _QWERTY: + oled_write_ln_P(PSTR("QWRTY"), false); + break; + case _COLEMAK: + oled_write_ln_P(PSTR("Colemk"), false); + break; + case _GAME: + oled_write_ln_P(PSTR("Game "), false); + break; + case _FN: + oled_write_ln_P(PSTR("FN "), false); + break; + case _ADJUST: + oled_write_ln_P(PSTR("Adjst"), false); + break; + default: + oled_write_ln_P(PSTR("Undef"), false); + } +} + +static void render_leds(void) +{ + // Host Keyboard LED Status + led_t led_state = host_keyboard_led_state(); + oled_write_P(led_state.num_lock ? PSTR("NUMLK") : PSTR(" "), false); + oled_write_P(led_state.caps_lock ? PSTR("CAPLK") : PSTR(" "), false); + oled_write_P(led_state.scroll_lock ? PSTR("SCRLK") : PSTR(" "), false); +} + +static void render_touch(void) +{ + // Host Touch LED Status + oled_write_P(!touch_encoder_toggled() ? PSTR("TOUCH") : PSTR(" "), false); + oled_write_P(touch_encoder_calibrating() ? PSTR("CLBRT") : PSTR(" "), false); +} + +bool oled_task_user(void) { + if (is_keyboard_left()) { + render_icon(); + oled_write_P(PSTR(" "), false); + render_layer(); + oled_write_P(PSTR(" "), false); + render_leds(); + oled_write_P(PSTR(" "), false); + render_touch(); + } + else { + render_icon(); + oled_write_P(PSTR(" "), false); + render_rgb_menu(); + } + return false; +} + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + return OLED_ROTATION_270; +} diff --git a/keyboards/rgbkb/mun/keymaps/peott-fr/config.h b/keyboards/rgbkb/mun/keymaps/peott-fr/config.h new file mode 100644 index 000000000000..9719d17437a2 --- /dev/null +++ b/keyboards/rgbkb/mun/keymaps/peott-fr/config.h @@ -0,0 +1,23 @@ +/* + * ---------------------------------------------------------------------------- + * "THE BEER-WARE LICENSE" (Revision 42): + * wrote this file. As long as you retain this + * notice you can do whatever you want with this stuff. If we meet some day, and + * you think this stuff is worth it, you can buy me a beer in return. David Rauseo + * ---------------------------------------------------------------------------- + */ + +#pragma once + +// No need for the single versions when multi performance isn't a problem =D +#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define DISABLE_RGB_MATRIX_SPLASH +#define DISABLE_RGB_MATRIX_SOLID_SPLASH + +// 20m timeout (20m * 60s * 1000mil) +// #define RGB_DISABLE_TIMEOUT 1200000 +#define RGB_DISABLE_WHEN_USB_SUSPENDED + +#define STM32_ONBOARD_EEPROM_SIZE 2048 diff --git a/keyboards/rgbkb/mun/keymaps/peott-fr/keymap.c b/keyboards/rgbkb/mun/keymaps/peott-fr/keymap.c new file mode 100644 index 000000000000..66eaa144eceb --- /dev/null +++ b/keyboards/rgbkb/mun/keymaps/peott-fr/keymap.c @@ -0,0 +1,81 @@ +/* + * ---------------------------------------------------------------------------- + * "THE BEER-WARE LICENSE" (Revision 42): + * wrote this file. As long as you retain this + * notice you can do whatever you want with this stuff. If we meet some day, and + * you think this stuff is worth it, you can buy me a beer in return. David Rauseo + * ---------------------------------------------------------------------------- + */ + +#include QMK_KEYBOARD_H +#include "common_oled.h" + +enum keymap_layers { + _BASE, + _LHAND, + _FUNC +}; + +//Layers and special keys. +#define SPC_LHND LT(_LHAND, KC_SPC) +#define BSP_FUNC LT(_FUNC, KC_BSPC) +#define DEL_FUNC LT(_FUNC, KC_DEL) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* QWERTY + * .--------------------------------------------------------------. .--------------------------------------------------------------. + * | Esc | 1 | 2 | 3 | 4 | 5 | ` | | = | 6 | 7 | 8 | 9 | 0 | - | + * |--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + * | Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | \ | + * |--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + * | LCtrl | A | S | D | F | G | Home | | End | H | J | K | L | : | ' | + * |--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + * | Shift/(| Z | X | C | V | B | Play | | Mute | N | M | , | . | / | Shift/)| + * |--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + * | LCtrl | Win | Alt | MO(3) | L2/Del | Space | Space | | Bcksp | Bcksp | Left | Down | Up | Right | Ctrl | + * '--------+--------+--------+--------+--------+--------+--------' '--------+--------+--------+--------+--------+--------+--------' + * Encoder 1 Encoder 2 Encoder 3 Encoder 4 + * .-----------------------------------. .-----------------------------------. + * | VolUp | VolDn | VolUp | VolDn | | PgUp | PgDn | PgUp | PgDn | + * |--------+--------+--------+--------+--------. .--------+--------+--------+--------+--------| + * | VolDn | VolUp | Next | Play | Prev | Touch Encoder Touch Encoder | RgbHuI | RgbHuD | RgbMdD | RgbTog | RgbMdI | + * '--------+--------+--------+--------+--------' '--------+--------+--------+--------+--------' + */ + [_BASE] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_GRV, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_HOME, KC_END, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MPLY, KC_MUTE, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, + KC_LCTL, KC_LGUI, KC_LALT, MO(3), DEL_FUNC, SPC_LHND, SPC_LHND, BSP_FUNC, BSP_FUNC, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_RCTL, + // Here we have the encoder setup. Encoder 0 clockwise, Encoder 0 counter-clockwise, Encoder 1 clockwise, Encoder 1 counter-clockwise , then right side + KC_VOLU, KC_VOLD, KC_VOLU, KC_VOLD, KC_PGDN, KC_PGUP, KC_PGDN, KC_PGUP, KC_VOLD, KC_VOLU, KC_MNXT, KC_MPLY, KC_MPRV, RGB_HUI, RGB_HUD, RGB_RMOD, RGB_TOG, RGB_MOD + ), + [_LHAND] = LAYOUT( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_PGUP, KC_PGDN, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + KC_LSFT, KC_CALC, KC_MYCM, KC_TRNS, KC_ENT, KC_BSPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_RSFT, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_TRNS, + // Encoders. + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [_FUNC] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + // Encoders. + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + // Placeholder layer! + [3] = LAYOUT( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + // Encoders. + 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 + ) +}; \ No newline at end of file diff --git a/keyboards/rgbkb/mun/keymaps/via/config.h b/keyboards/rgbkb/mun/keymaps/via/config.h new file mode 100644 index 000000000000..cfcaa9a1ed68 --- /dev/null +++ b/keyboards/rgbkb/mun/keymaps/via/config.h @@ -0,0 +1,30 @@ +/* + * ---------------------------------------------------------------------------- + * "THE BEER-WARE LICENSE" (Revision 42): + * wrote this file. As long as you retain this + * notice you can do whatever you want with this stuff. If we meet some day, and + * you think this stuff is worth it, you can buy me a beer in return. David Rauseo + * ---------------------------------------------------------------------------- + */ + +#pragma once + +// No need for the single versions when multi performance isn't a problem =D +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#undef ENABLE_RGB_MATRIX_SPLASH +#undef ENABLE_RGB_MATRIX_SOLID_SPLASH + +// 20m timeout (20m * 60s * 1000mil) +// #define RGB_DISABLE_TIMEOUT 1200000 +#define RGB_DISABLE_WHEN_USB_SUSPENDED + +#define VIA_EEPROM_LAYOUT_OPTIONS_SIZE 2 +// 224B per layer right now +#define DYNAMIC_KEYMAP_LAYER_COUNT 8 +#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 2047 + +#define VIA_QMK_RGBLIGHT_ENABLE + +#define STM32_ONBOARD_EEPROM_SIZE 2048 diff --git a/keyboards/rgbkb/mun/keymaps/via/keymap.c b/keyboards/rgbkb/mun/keymaps/via/keymap.c new file mode 100644 index 000000000000..866b8a0d15aa --- /dev/null +++ b/keyboards/rgbkb/mun/keymaps/via/keymap.c @@ -0,0 +1,253 @@ +/* + * ---------------------------------------------------------------------------- + * "THE BEER-WARE LICENSE" (Revision 42): + * wrote this file. As long as you retain this + * notice you can do whatever you want with this stuff. If we meet some day, and + * you think this stuff is worth it, you can buy me a beer in return. David Rauseo + * ---------------------------------------------------------------------------- + */ + +#include QMK_KEYBOARD_H +#include "common_oled.h" + +enum keymap_layers { + _QWERTY, + _COLEMAK, + _GAME, + _FN, + _ADJUST, + _VIA1, + _VIA2, + _VIA3 +}; + +enum keymap_keycodes { + // Disables touch processing + TCH_TOG = SAFE_RANGE, + MENU_BTN, + MENU_UP, + MENU_DN +}; + +// Default Layers +#define QWERTY DF(_QWERTY) +#define COLEMAK DF(_COLEMAK) +#define GAME DF(_GAME) + +// Momentary Layers +#define FN MO(_FN) +#define ADJUST MO(_ADJUST) + +#define FN_CAPS LT(_FN, KC_CAPS) +#define FN_ESC LT(_FN, KC_ESC) + +/* This keyboard is enabled with an RGB Menu Control system. +This functionality is enabled, but still requires a little configuration based on your exact setup. +The RGB Menu will appear on the Right Half's OLED and can be controlled by the MENU keycodes: +MENU_BTN - Triggers a button action for the menu +MENU_UP - Triggers an increase action for the menu +MENU_DN - Triggers a decrease action for the menu + +To finish configuration for your board, you will want to change the default keycodes for an encoder on the right half. +Encoder press keycode should be set to MENU_BTN, Clockwise should be MENU_UP, and Counter Clockwise should be MENU_DN. +Depending on where you add an encoder to the right half will determin in the default keymap where you should put those keycodes. +*/ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* QWERTY + * .--------------------------------------------------------------. .--------------------------------------------------------------. + * | `~/ESC | 1 | 2 | 3 | 4 | 5 | - | | = | 6 | 7 | 8 | 9 | 0 | Bckspc | + * |--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + * | Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | \ | + * |--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + * | FN/Caps| A | S | D | F | G | ( | | ) | H | J | K | L | : | ' | + * |--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + * | Shift | Z | X | C | V | B | { | | } | N | M | , | . | / |Shft/Ent| + * |--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + * | Ctrl | Win | Alt | RGBTOG | Adjust | Space | Bksp | | Enter | Space | Left | Down | Up | Right | Ctrl | + * '--------+--------+--------+--------+--------+--------+--------' '--------+--------+--------+--------+--------+--------+--------' + * Encoder 1 Encoder 2 Encoder 3 Encoder 4 + * .-----------------------------------. .-----------------------------------. + * | VolUp | VolDn | VolUp | VolDn | | PgUp | PgDn | PgUp | PgDn | + * |--------+--------+--------+--------+--------. .--------+--------+--------+--------+--------| + * | VolDn | VolUp | Next | Play | Prev | Touch Encoder Touch Encoder | RgbHuI | RgbHuD | RgbMdD | RgbTog | RgbMdI | + * '--------+--------+--------+--------+--------' '--------+--------+--------+--------+--------' + */ + [_QWERTY] = LAYOUT( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLASH, + FN_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LPRN, KC_RPRN, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LCBR, KC_RCBR, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_SFTENT, + KC_LCTL, KC_LGUI, KC_LALT, RGB_TOG, ADJUST, KC_SPC, KC_DEL, KC_ENT, KC_SPC, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT,KC_RCTL, + + KC_VOLU, KC_VOLD, KC_VOLU, KC_VOLD, KC_PGDN, KC_PGUP, KC_PGDN, KC_PGUP, + KC_VOLD, KC_VOLU, KC_MNXT, KC_MPLY, KC_MPRV, RGB_HUI, RGB_HUD, RGB_RMOD,RGB_TOG, RGB_MOD + ), + + [_COLEMAK] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_Q, KC_W, KC_F, KC_P, KC_G, _______, _______, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, _______, + _______, KC_A, KC_R, KC_S, KC_T, KC_D, _______, _______, KC_H, KC_N, KC_E, KC_I, KC_O, _______, + _______, KC_Z, KC_X, KC_C, KC_V, KC_B, _______, _______, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_GAME] = LAYOUT( + _______, _______, _______, _______, _______, _______, KC_F1, KC_F5, _______, _______, _______, _______, _______, _______, + _______, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_F2, KC_F6, KC_Y, KC_U, KC_I, KC_O, KC_P, _______, + _______, KC_A, KC_S, KC_D, KC_F, KC_G, KC_F3, KC_F7, KC_H, KC_J, KC_K, KC_L, KC_SCLN, _______, + _______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_F4, KC_F8, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______, + _______, KC_NO, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_FN] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, + _______, KC_HOME, KC_UP, KC_END, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, KC_PSCR, KC_PGUP, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_PGDN, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, TCH_TOG, _______, _______, _______, _______, _______, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, + + _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_ADJUST] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, + _______, RGB_SAD, RGB_VAI, RGB_SAI, RESET, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, _______, _______, + _______, RGB_HUD, RGB_VAD, RGB_HUI, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______, + _______, RGB_SPD, _______, RGB_SPI, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, GAME, + _______, RGB_RMOD,_______, RGB_MOD, _______, _______, _______, _______, _______, KC_P0, KC_PDOT, KC_NLCK, QWERTY, COLEMAK, + + _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_VIA1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_VIA2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_VIA3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) + { + case MENU_BTN: + if (record->event.pressed) { + rgb_menu_selection(); + } + return false; + case MENU_UP: + if (record->event.pressed) { + rgb_menu_action(true); + } + return false; + case MENU_DN: + if (record->event.pressed) { + rgb_menu_action(false); + } + return false; + case TCH_TOG: + if (record->event.pressed) { + touch_encoder_toggle(); + } + return false; // Skip all further processing of this key + default: + return true; + } +} + +static void render_layer(void) { + // Host Keyboard Layer Status + oled_write_P(PSTR("Layer"), false); + switch (get_highest_layer(layer_state)) { + case _QWERTY: + oled_write_ln_P(PSTR("QWRTY"), false); + break; + case _COLEMAK: + oled_write_ln_P(PSTR("Colemk"), false); + break; + case _GAME: + oled_write_ln_P(PSTR("Game "), false); + break; + case _FN: + oled_write_ln_P(PSTR("FN "), false); + break; + case _ADJUST: + oled_write_ln_P(PSTR("Adjst"), false); + break; + default: + oled_write_ln_P(PSTR("Undef"), false); + } +} + +static void render_leds(void) +{ + // Host Keyboard LED Status + led_t led_state = host_keyboard_led_state(); + oled_write_P(led_state.num_lock ? PSTR("NUMLK") : PSTR(" "), false); + oled_write_P(led_state.caps_lock ? PSTR("CAPLK") : PSTR(" "), false); + oled_write_P(led_state.scroll_lock ? PSTR("SCRLK") : PSTR(" "), false); +} + +static void render_touch(void) +{ + // Host Touch LED Status + oled_write_P(!touch_encoder_toggled() ? PSTR("TOUCH") : PSTR(" "), false); + oled_write_P(touch_encoder_calibrating() ? PSTR("CLBRT") : PSTR(" "), false); +} + +bool oled_task_user(void) { + if (is_keyboard_left()) { + render_icon(); + oled_write_P(PSTR(" "), false); + render_layer(); + oled_write_P(PSTR(" "), false); + render_leds(); + oled_write_P(PSTR(" "), false); + render_touch(); + } + else { + render_icon(); + oled_write_P(PSTR(" "), false); + render_rgb_menu(); + } + return false; +} + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + return OLED_ROTATION_270; +} diff --git a/keyboards/rgbkb/mun/keymaps/via/rules.mk b/keyboards/rgbkb/mun/keymaps/via/rules.mk new file mode 100644 index 000000000000..40bded399190 --- /dev/null +++ b/keyboards/rgbkb/mun/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE=yes \ No newline at end of file diff --git a/keyboards/rgbkb/mun/keymaps/xulkal2/config.h b/keyboards/rgbkb/mun/keymaps/xulkal2/config.h new file mode 100644 index 000000000000..42e60191fcc2 --- /dev/null +++ b/keyboards/rgbkb/mun/keymaps/xulkal2/config.h @@ -0,0 +1,42 @@ +/* + * ---------------------------------------------------------------------------- + * "THE BEER-WARE LICENSE" (Revision 42): + * wrote this file. As long as you retain this + * notice you can do whatever you want with this stuff. If we meet some day, and + * you think this stuff is worth it, you can buy me a beer in return. David Rauseo + * ---------------------------------------------------------------------------- + */ + +#pragma once + +// Xulkal custom stuff +#undef TAPPING_FORCE_HOLD + +#undef TAPPING_TERM +#define TAPPING_TERM 175 + +#define SPACE_CADET_MODIFIER_CARRYOVER +#define LSPO_KEYS KC_LSFT, KC_TRNS, KC_LBRC +#define RSPC_KEYS KC_RSFT, KC_TRNS, KC_RBRC +#define LCPO_KEYS KC_LCTL, KC_TRNS, KC_MINS +#define RCPC_KEYS KC_RCTL, KC_TRNS, KC_EQL + +// No need for the single versions when multi performance isn't a problem =D +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#undef ENABLE_RGB_MATRIX_SPLASH +#undef ENABLE_RGB_MATRIX_SOLID_SPLASH + +// 20m timeout (20m * 60s * 1000mil) +// #define RGB_DISABLE_TIMEOUT 1200000 +#define RGB_DISABLE_WHEN_USB_SUSPENDED +#define OLED_SCROLL_TIMEOUT 20000 +#define ONESHOT_TAP_TOGGLE 2 + +#define RGB_MATRIX_HUE_STEP 8 +#define RGB_MATRIX_SAT_STEP 8 +#define RGB_MATRIX_VAL_STEP 8 +#define RGB_MATRIX_SPD_STEP 8 + +#define ENCODER_RESOLUTION 2 diff --git a/keyboards/rgbkb/mun/keymaps/xulkal2/keymap.c b/keyboards/rgbkb/mun/keymaps/xulkal2/keymap.c new file mode 100644 index 000000000000..ae5c0c9b19b7 --- /dev/null +++ b/keyboards/rgbkb/mun/keymaps/xulkal2/keymap.c @@ -0,0 +1,249 @@ +/* + * ---------------------------------------------------------------------------- + * "THE BEER-WARE LICENSE" (Revision 42): + * wrote this file. As long as you retain this + * notice you can do whatever you want with this stuff. If we meet some day, and + * you think this stuff is worth it, you can buy me a beer in return. David Rauseo + * ---------------------------------------------------------------------------- + */ + +#include QMK_KEYBOARD_H +#include "common_oled.h" + +enum keymap_layers { + _QWERTY, + _FUNCTION, + _ADJUST +}; + +enum keymap_keycodes { + // Disables touch processing + TCH_TOG = SAFE_RANGE, + MENU_BTN, + MENU_UP, + MENU_DN, + RGB_RST +}; + +// Default Layers +#define QWERTY DF(_QWERTY) + +// Momentary Layers +#define FN OSL(_FUNCTION) +#define ADJ OSL(_ADJUST) + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* QWERTY + * .--------------------------------------------------------------. .--------------------------------------------------------------. + * | `~/ESC | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | Bckspc | + * |--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + * | Tab | Q | W | E | R | T | | | | Y | U | I | O | P | \ | + * |--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + * | Caps | A | S | D | F | G | Play | | MN BTN | H | J | K | L | : | Enter | + * |--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + * | Shft[ | Z | X | C | V | B | { | | } | N | M | , | . | / | Shft] | + * |--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + * | Ctrl- | Win | Alt | Del | Space | | ADJ | | FN | | Space | '" | Alt | App | Ctrl= | + * '--------+--------+--------+--------|--------+--------+--------' '--------+--------+--------+--------+--------+--------+--------' + * Encoder 1 Encoder 2 Encoder 3 Encoder 4 + * .-----------------------------------. .-----------------------------------. + * | VolUp | VolDn | VolUp | VolDn | | PgUp | PgDn | PgUp | PgDn | + * |--------+--------+--------+--------+--------. .--------+--------+--------+--------+--------| + * | VolDn | VolUp | Next | Play | Prev | Touch Encoder Touch Encoder | RgbHuI | RgbHuD | RgbMdD | RgbTog | RgbMdI | + * '--------+--------+--------+--------+--------' '--------+--------+--------+--------+--------' + */ + [_QWERTY] = LAYOUT( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_NO, KC_NO, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_NO, KC_NO, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_MPLY, MENU_BTN,KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LCBR, KC_RCBR, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, + KC_LCPO, KC_LGUI, KC_LALT, KC_DEL, KC_SPC, KC_NO, ADJ, FN, KC_NO, KC_SPC, KC_QUOTE,KC_RALT, KC_APP, KC_RCPC, + + KC_VOLU, KC_VOLD, KC_VOLU, KC_VOLD, MENU_DN, MENU_UP, MENU_DN, MENU_UP, + KC_VOLD, KC_VOLU, KC_MNXT, KC_MPLY, KC_MPRV, RGB_HUI, RGB_HUD, RGB_RMOD,RGB_TOG, RGB_MOD + ), + + /* Function + * .--------------------------------------------------------------. .--------------------------------------------------------------. + * | F12 | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * |--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + * | | SPDI | SAI | VAI | HUI | RGBMD | | | | | | PrtScr | ScrLck | PseBrk | | + * |--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + * | | SPDD | SAD | VAD | HUD | RGBRMD | | | | | | Ins | Home | PgUp | | + * |--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + * | | RGBRST | | | | RGBTOG | | | | | | Del | End | PgDn | | + * |--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + * | | | | | | | | | | | Play | Prev | Next | VolUp | VolDn | + * '--------+--------+--------+--------+--------+--------+--------' '--------+--------+--------+--------+--------+--------+--------' + * Encoder 1 Encoder 2 Encoder 3 Encoder 4 + * .-----------------------------------. .-----------------------------------. + * | | | | | | | | | | + * |--------+--------+--------+--------+--------. .--------+--------+--------+--------+--------| + * | | | | | | Touch Encoder Touch Encoder | | | | | | + * '--------+--------+--------+--------+--------' '--------+--------+--------+--------+--------' + */ + [_FUNCTION] = LAYOUT( + KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + _______, RGB_SPI, RGB_SAI, RGB_VAI, RGB_HUI, RGB_MOD, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, + _______, RGB_SPD, RGB_SAD, RGB_VAD, RGB_HUD, RGB_RMOD,_______, _______, _______, _______, KC_INS, KC_HOME, KC_PGUP, _______, + _______, RGB_RST, _______, _______, _______, RGB_TOG, _______, _______, _______, _______, KC_DEL, KC_END, KC_PGDN, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MPRV, KC_MNXT, KC_VOLU, KC_VOLD, + + _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + /* Adjust + * .--------------------------------------------------------------. .--------------------------------------------------------------. + * | | | | | | | | | | | NumLck | / | * | - | Del | + * |--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + * | | Home | Up | End | Reset | T_TOG | | | | | 7 | 8 | 9 | + | | + * |--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + * | | Left | Down | Right | | | | | | | 4 | 5 | 6 | + | | + * |--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + * | | | | | | EepRst | | | | | 1 | 2 | 3 | Enter | | + * |--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + * | | | | | | | | | | | | 0 | . | Enter | | + * '--------+--------+--------+--------+--------+--------+--------' '--------+--------+--------+--------+--------+--------+--------' + * Encoder 1 Encoder 2 Encoder 3 Encoder 4 + * .-----------------------------------. .-----------------------------------. + * | | | | | | | | | | + * |--------+--------+--------+--------+--------. .--------+--------+--------+--------+--------| + * | | | | | | Touch Encoder Touch Encoder | | | | | | + * '--------+--------+--------+--------+--------' '--------+--------+--------+--------+--------' + */ + [_ADJUST] = LAYOUT( + KC_GRV, _______, _______, _______, _______, _______, _______, _______, _______, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_DEL, + _______, KC_HOME, KC_UP, KC_END, RESET, TCH_TOG, _______, _______, _______, KC_KP_7, KC_KP_8, KC_KP_9, KC_PPLS, _______, + _______, KC_LEFT, KC_DOWN, KC_RIGHT,_______, _______, _______, _______, _______, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, _______, + _______, _______, _______, _______, _______, EEP_RST, _______, _______, _______, KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_KP_0, KC_PDOT, KC_PENT, _______, + + _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; +// clang-format on + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) + { + case MENU_BTN: + if (record->event.pressed) { + rgb_menu_selection(); + } + return false; + case MENU_UP: + if (record->event.pressed) { + rgb_menu_action(true); + } + return false; + case MENU_DN: + if (record->event.pressed) { + rgb_menu_action(false); + } + return false; + case RGB_RST: + if (record->event.pressed) { + eeconfig_update_rgb_matrix_default(); + } + return false; + case TCH_TOG: + if (record->event.pressed) { + touch_encoder_toggle(); + } + return false; // Skip all further processing of this key + default: + return true; + } +} + +//#define MATRIX_SCAN_DEBUG +#if !defined(MATRIX_SCAN_DEBUG) +static void render_layer(void) { + // Host Keyboard Layer Status + oled_write_P(PSTR("Layer"), false); + switch (get_highest_layer(layer_state)) { + case _QWERTY: + oled_write_ln_P(PSTR("BASE "), false); + break; + case _FUNCTION: + oled_write_ln_P(PSTR("FUNC "), false); + break; + case _ADJUST: + oled_write_ln_P(PSTR("ADJS "), false); + break; + } +} + +static void render_leds(void) +{ + // Host Keyboard LED Status + led_t led_state = host_keyboard_led_state(); + oled_write_P(led_state.num_lock ? PSTR("NUMLK") : PSTR(" "), false); + oled_write_P(led_state.caps_lock ? PSTR("CAPLK") : PSTR(" "), false); + oled_write_P(led_state.scroll_lock ? PSTR("SCRLK") : PSTR(" "), false); +} + +static void render_touch(void) +{ + // Host Touch LED Status + oled_write_P(!touch_encoder_toggled() ? PSTR("TOUCH") : PSTR(" "), false); + oled_write_P(touch_encoder_calibrating() ? PSTR("CLBRT") : PSTR(" "), false); +} +#else +static uint32_t scan_counter = 0; +static uint32_t scan_value = 0; +static uint16_t scan_timer = 1000; + +void do_counters(void) { + scan_counter++; + uint16_t now = sync_timer_read(); + if (timer_expired(now, scan_timer)) + { + scan_timer += 1000; + scan_value = (scan_value + scan_counter) / 2; + scan_counter = 0; + } +} + +void matrix_scan_user(void) { + do_counters(); +} + +void matrix_slave_scan_user(void) { + do_counters(); +} + +void render_debug_scan(void) { + static char buffer[6] = {0}; + snprintf(buffer, sizeof(buffer), "%5d", scan_value); + oled_write_ln_P(buffer, false); +} +#endif + +bool oled_task_user(void) { +#if !defined(MATRIX_SCAN_DEBUG) + if (is_keyboard_left()) { + render_layer(); + oled_write_P(PSTR(" "), false); + render_leds(); + oled_write_P(PSTR(" "), false); + render_touch(); + } + else { + render_rgb_menu(); + } +#else + oled_write_P(PSTR(" "), false); + render_debug_scan(); +#endif + oled_set_cursor(0, 12); + render_icon(); + return false; +} + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + return OLED_ROTATION_270; +} diff --git a/keyboards/rgbkb/mun/keymaps/xulkal2/rules.mk b/keyboards/rgbkb/mun/keymaps/xulkal2/rules.mk new file mode 100644 index 000000000000..a087f669da47 --- /dev/null +++ b/keyboards/rgbkb/mun/keymaps/xulkal2/rules.mk @@ -0,0 +1,3 @@ +MOUSEKEY_ENABLE = yes # using for mouse wheel up and down, more granular than page up/down + +OPT_DEFS += -DRGB_UNLIMITED_POWER \ No newline at end of file diff --git a/keyboards/rgbkb/mun/matrix.c b/keyboards/rgbkb/mun/matrix.c new file mode 100644 index 000000000000..2472d217c75d --- /dev/null +++ b/keyboards/rgbkb/mun/matrix.c @@ -0,0 +1,76 @@ +/* + * ---------------------------------------------------------------------------- + * "THE BEER-WARE LICENSE" (Revision 42): + * wrote this file. As long as you retain this + * notice you can do whatever you want with this stuff. If we meet some day, and + * you think this stuff is worth it, you can buy me a beer in return. KarlK90 + * ---------------------------------------------------------------------------- + */ + +#include "matrix.h" +#include "atomic_util.h" +#include "gpio.h" + +#define ROWS_PER_HAND (MATRIX_ROWS / 2) +static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; +static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; + +void matrix_init_pins(void) { + for (size_t i = 0; i < MATRIX_COLS; i++) { + setPinInputHigh(col_pins[i]); + } + for (size_t i = 0; i < ROWS_PER_HAND; i++) { + setPinOutput(row_pins[i]); + writePinHigh(row_pins[i]); + } +} + +void matrix_read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) { + /* Drive row pin low. */ + ATOMIC_BLOCK_FORCEON { writePinLow(row_pins[current_row]); } + matrix_output_select_delay(); + + /* Read all columns in one go, aka port scanning. */ + uint16_t porta = palReadPort(GPIOA); + uint16_t portb = palReadPort(GPIOB); + +// clang-format off + /* Order of pins on the mun is: A0, B11, B0, B10, B12, B2, A8 + Pin is active low, therefore we have to invert the result. */ + matrix_row_t cols = ~(((porta & (0x1 << 0)) >> 0) // A0 (0) + | ((portb & (0x1 << 11)) >> 10) // B11 (1) + | ((portb & (0x1 << 0)) << 2) // B0 (2) + | ((portb & (0x1 << 10)) >> 7) // B10 (3) + | ((portb & (0x1 << 12)) >> 8) // B12 (4) + | ((portb & (0x1 << 2)) << 3) // B2 (5) + | ((porta & (0x1 << 8)) >> 2)); // A8 (6) +// clang-format on + + /* Reverse the order of columns for left hand as the board is flipped. */ + // if (isLeftHand) { + // #if defined(__arm__) + // /* rbit assembly reverses bit order of 32bit registers. */ + // uint32_t temp = cols; + // __asm__("rbit %0, %1" : "=r"(temp) : "r"(temp)); + // cols = temp >> 24; + // #else + // /* RISC-V bit manipulation extension not present. Use bit-hack. + // https://graphics.stanford.edu/~seander/bithacks.html#ReverseByteWith32Bits */ + // cols = (matrix_row_t)(((cols * 0x0802LU & 0x22110LU) | (cols * 0x8020LU & 0x88440LU)) * 0x10101LU >> 16); + // #endif + // } + + current_matrix[current_row] = cols; + + /* Drive row pin high again. */ + ATOMIC_BLOCK_FORCEON { writePinHigh(row_pins[current_row]); } + matrix_output_unselect_delay(current_row, cols != 0); +} + +#if defined(BUSY_WAIT) +void matrix_output_unselect_delay(uint8_t line, bool key_pressed) { + for (int32_t i = 0; i < BUSY_WAIT_INSTRUCTIONS; i++) { + __asm__ volatile("nop" ::: "memory"); + } +} +#endif diff --git a/keyboards/rgbkb/mun/mcuconf.h b/keyboards/rgbkb/mun/mcuconf.h new file mode 100644 index 000000000000..dd6e38509c7e --- /dev/null +++ b/keyboards/rgbkb/mun/mcuconf.h @@ -0,0 +1,21 @@ +/* + * ---------------------------------------------------------------------------- + * "THE BEER-WARE LICENSE" (Revision 42): + * wrote this file. As long as you retain this + * notice you can do whatever you want with this stuff. If we meet some day, and + * you think this stuff is worth it, you can buy me a beer in return. David Rauseo + * ---------------------------------------------------------------------------- + */ + +#pragma once + +#include_next + +#undef STM32_I2C_USE_I2C1 +#define STM32_I2C_USE_I2C1 TRUE + +#undef STM32_PWM_USE_TIM3 +#define STM32_PWM_USE_TIM3 TRUE + +#undef STM32_SERIAL_USE_USART1 +#define STM32_SERIAL_USE_USART1 TRUE diff --git a/keyboards/rgbkb/mun/mun.c b/keyboards/rgbkb/mun/mun.c new file mode 100644 index 000000000000..f64de3342c7b --- /dev/null +++ b/keyboards/rgbkb/mun/mun.c @@ -0,0 +1,25 @@ +/* + * ---------------------------------------------------------------------------- + * "THE BEER-WARE LICENSE" (Revision 42): + * wrote this file. As long as you retain this + * notice you can do whatever you want with this stuff. If we meet some day, and + * you think this stuff is worth it, you can buy me a beer in return. David Rauseo + * ---------------------------------------------------------------------------- + */ + +#include "mun.h" +#include "touch_encoder.h" +#include "common_oled.h" +#include + +void keyboard_post_init_kb(void) { + touch_encoder_init(); + transaction_register_rpc(TOUCH_ENCODER_SYNC, touch_encoder_slave_sync); + transaction_register_rpc(RGB_MENU_SYNC, rgb_menu_slave_sync); + keyboard_post_init_user(); +} + +void housekeeping_task_kb(void) { + touch_encoder_update(TOUCH_ENCODER_SYNC); + rgb_menu_update(RGB_MENU_SYNC); +} diff --git a/keyboards/rgbkb/mun/mun.h b/keyboards/rgbkb/mun/mun.h new file mode 100644 index 000000000000..beb132f0ec75 --- /dev/null +++ b/keyboards/rgbkb/mun/mun.h @@ -0,0 +1,16 @@ +/* + * ---------------------------------------------------------------------------- + * "THE BEER-WARE LICENSE" (Revision 42): + * wrote this file. As long as you retain this + * notice you can do whatever you want with this stuff. If we meet some day, and + * you think this stuff is worth it, you can buy me a beer in return. David Rauseo + * ---------------------------------------------------------------------------- + */ + +#pragma once + +#if defined(KEYBOARD_rgbkb_mun_rev1) +# include "rev1.h" +#endif + +#include "quantum.h" \ No newline at end of file diff --git a/keyboards/rgbkb/mun/readme.md b/keyboards/rgbkb/mun/readme.md new file mode 100644 index 000000000000..6a18611539bf --- /dev/null +++ b/keyboards/rgbkb/mun/readme.md @@ -0,0 +1,15 @@ +# Mün + +![Mün](https://i.redd.it/zw534js2o5861.jpg) + +Mün is powered by STM32 with full QMK support. Each key has super-bright RGB backlighting and MX Kailh hotswap sockets. No soldering is required to get a fully functioning keyboard. There are an additional 14 rear-facing RGB LEDs on each side. Each half can be configured to run as master or slave with the two USB-C ports. They also support up to two rotary encoders and one OLED panel per half. + +Keyboard Maintainer: [Legonut](https://github.com/Legonut) +Hardware Supported: Mün PCB R1.0, R1.1, R1.2 +Hardware Availability: [RGBKB](https://www.rgbkb.net) + +Make example for this keyboard (after setting up your build environment): + + make rgbkb/mun: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/rgbkb/mun/rev1/config.h b/keyboards/rgbkb/mun/rev1/config.h new file mode 100644 index 000000000000..7ff0b54903ee --- /dev/null +++ b/keyboards/rgbkb/mun/rev1/config.h @@ -0,0 +1,12 @@ +/* + * ---------------------------------------------------------------------------- + * "THE BEER-WARE LICENSE" (Revision 42): + * wrote this file. As long as you retain this + * notice you can do whatever you want with this stuff. If we meet some day, and + * you think this stuff is worth it, you can buy me a beer in return. David Rauseo + * ---------------------------------------------------------------------------- + */ + +#pragma once + +#define DEVICE_VER 0x0001 diff --git a/keyboards/rgbkb/mun/rev1/info.json b/keyboards/rgbkb/mun/rev1/info.json new file mode 100644 index 000000000000..72cd7be9f0a2 --- /dev/null +++ b/keyboards/rgbkb/mun/rev1/info.json @@ -0,0 +1,99 @@ +{ + "keyboard_name": "Mun", + "url": "https://www.rgbkb.net/products/mun", + "maintainer": "Legonut", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"L00", "x":0, "y":0}, + {"label":"L01", "x":1, "y":0}, + {"label":"L02", "x":2, "y":0}, + {"label":"L03", "x":3, "y":0}, + {"label":"L04", "x":4, "y":0}, + {"label":"L05", "x":5, "y":0}, + {"label":"L06", "x":6, "y":0}, + {"label":"R00", "x":7.5, "y":0}, + {"label":"R01", "x":8.5, "y":0}, + {"label":"R02", "x":9.5, "y":0}, + {"label":"R03", "x":10.5, "y":0}, + {"label":"R04", "x":11.5, "y":0}, + {"label":"R05", "x":12.5, "y":0}, + {"label":"R06", "x":13.5, "y":0}, + {"label":"L10", "x":0, "y":1}, + {"label":"L11", "x":1, "y":1}, + {"label":"L12", "x":2, "y":1}, + {"label":"L13", "x":3, "y":1}, + {"label":"L14", "x":4, "y":1}, + {"label":"L15", "x":5, "y":1}, + {"label":"L16", "x":6, "y":1}, + {"label":"R10", "x":7.5, "y":1}, + {"label":"R11", "x":8.5, "y":1}, + {"label":"R12", "x":9.5, "y":1}, + {"label":"R13", "x":10.5, "y":1}, + {"label":"R14", "x":11.5, "y":1}, + {"label":"R15", "x":12.5, "y":1}, + {"label":"R16", "x":13.5, "y":1}, + {"label":"L20", "x":0, "y":2}, + {"label":"L21", "x":1, "y":2}, + {"label":"L22", "x":2, "y":2}, + {"label":"L23", "x":3, "y":2}, + {"label":"L24", "x":4, "y":2}, + {"label":"L25", "x":5, "y":2}, + {"label":"L26", "x":6, "y":2}, + {"label":"R20", "x":7.5, "y":2}, + {"label":"R21", "x":8.5, "y":2}, + {"label":"R22", "x":9.5, "y":2}, + {"label":"R23", "x":10.5, "y":2}, + {"label":"R24", "x":11.5, "y":2}, + {"label":"R25", "x":12.5, "y":2}, + {"label":"R26", "x":13.5, "y":2}, + {"label":"L30", "x":0, "y":3}, + {"label":"L31", "x":1, "y":3}, + {"label":"L32", "x":2, "y":3}, + {"label":"L33", "x":3, "y":3}, + {"label":"L34", "x":4, "y":3}, + {"label":"L35", "x":5, "y":3}, + {"label":"L36", "x":6, "y":3}, + {"label":"R30", "x":7.5, "y":3}, + {"label":"R21", "x":8.5, "y":3}, + {"label":"R32", "x":9.5, "y":3}, + {"label":"R33", "x":10.5, "y":3}, + {"label":"R34", "x":11.5, "y":3}, + {"label":"R35", "x":12.5, "y":3}, + {"label":"R36", "x":13.5, "y":3}, + {"label":"L40", "x":0, "y":4}, + {"label":"L41", "x":1, "y":4}, + {"label":"L42", "x":2, "y":4}, + {"label":"L43", "x":3, "y":4}, + {"label":"L44", "x":4, "y":4}, + {"label":"L45", "x":5, "y":4}, + {"label":"L46", "x":6, "y":4}, + {"label":"R40", "x":7.5, "y":4}, + {"label":"R41", "x":8.5, "y":4}, + {"label":"R42", "x":9.5, "y":4}, + {"label":"R43", "x":10.5, "y":4}, + {"label":"R44", "x":11.5, "y":4}, + {"label":"R45", "x":12.5, "y":4}, + {"label":"R46", "x":13.5, "y":4}, + {"label":"E00", "x":0, "y":5.5}, + {"label":"E01", "x":1, "y":5.5}, + {"label":"E10", "x":2, "y":5.5}, + {"label":"E11", "x":3, "y":5.5}, + {"label":"E20", "x":10.5, "y":5.5}, + {"label":"E21", "x":11.5, "y":5.5}, + {"label":"E30", "x":12.5, "y":5.5}, + {"label":"E31", "x":13.5, "y":5.5}, + {"label":"T00", "x":0, "y":6.5}, + {"label":"T01", "x":1, "y":6.5}, + {"label":"T02", "x":2, "y":6.5}, + {"label":"T03", "x":3, "y":6.5}, + {"label":"T04", "x":4, "y":6.5}, + {"label":"T10", "x":9.5, "y":6.5}, + {"label":"T11", "x":10.5, "y":6.5}, + {"label":"T12", "x":11.5, "y":6.5}, + {"label":"T13", "x":12.5, "y":6.5}, + {"label":"T14", "x":13.5, "y":6.5} + ] + } + } +} diff --git a/keyboards/rgbkb/mun/rev1/readme.md b/keyboards/rgbkb/mun/rev1/readme.md new file mode 100644 index 000000000000..6a18611539bf --- /dev/null +++ b/keyboards/rgbkb/mun/rev1/readme.md @@ -0,0 +1,15 @@ +# Mün + +![Mün](https://i.redd.it/zw534js2o5861.jpg) + +Mün is powered by STM32 with full QMK support. Each key has super-bright RGB backlighting and MX Kailh hotswap sockets. No soldering is required to get a fully functioning keyboard. There are an additional 14 rear-facing RGB LEDs on each side. Each half can be configured to run as master or slave with the two USB-C ports. They also support up to two rotary encoders and one OLED panel per half. + +Keyboard Maintainer: [Legonut](https://github.com/Legonut) +Hardware Supported: Mün PCB R1.0, R1.1, R1.2 +Hardware Availability: [RGBKB](https://www.rgbkb.net) + +Make example for this keyboard (after setting up your build environment): + + make rgbkb/mun: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/rgbkb/mun/rev1/rev1.c b/keyboards/rgbkb/mun/rev1/rev1.c new file mode 100644 index 000000000000..28ad843b527f --- /dev/null +++ b/keyboards/rgbkb/mun/rev1/rev1.c @@ -0,0 +1,122 @@ +/* + * ---------------------------------------------------------------------------- + * "THE BEER-WARE LICENSE" (Revision 42): + * wrote this file. As long as you retain this + * notice you can do whatever you want with this stuff. If we meet some day, and + * you think this stuff is worth it, you can buy me a beer in return. David Rauseo + * ---------------------------------------------------------------------------- + */ + +#include "rev1.h" + +#define NUMBER_OF_TOUCH_ENCODERS 2 +#define TOUCH_ENCODER_OPTIONS TOUCH_SEGMENTS + 2 + +#define NUMBER_OF_ENCODERS 4 +#define ENCODER_OPTIONS 2 + +typedef struct PACKED { + uint8_t r; + uint8_t c; +} encodermap_t; + +// this maps encoders and then touch encoders to their respective electrical matrix entry +// mapping is row (y) then column (x) when looking at the electrical layout +const encodermap_t encoder_map[NUMBER_OF_ENCODERS][ENCODER_OPTIONS] = +{ + { { 5, 0 }, { 5, 1 } }, // Encoder 1 matrix entries + { { 5, 2 }, { 5, 3 } }, // Encoder 2 matrix entries + { { 12, 0 }, { 12, 1 } }, // Encoder 3 matrix entries + { { 12, 2 }, { 12, 3 } }, // Encoder 4 matrix entries +}; + +const encodermap_t touch_encoder_map[NUMBER_OF_TOUCH_ENCODERS][TOUCH_ENCODER_OPTIONS] = +{ + { { 6, 0 }, { 6, 1 }, { 6, 2 }, { 6, 3 }, { 6, 4 } }, // Touch Encoder 1 matrix entries + { { 13, 0 }, { 13, 1 }, { 13, 2 }, { 13, 3 }, { 13, 4 } } // Touch Encoder 2 matrix entries +}; + +static void process_encoder_matrix(encodermap_t pos) { + action_exec((keyevent_t){ + .key = (keypos_t){.row = pos.r, .col = pos.c}, .pressed = true, .time = (timer_read() | 1) /* time should not be 0 */ + }); +#if TAP_CODE_DELAY > 0 + wait_ms(TAP_CODE_DELAY); +#endif + action_exec((keyevent_t){ + .key = (keypos_t){.row = pos.r, .col = pos.c}, .pressed = false, .time = (timer_read() | 1) /* time should not be 0 */ + }); +} + +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) + return false; + + // Mapping clockwise (typically increase) to zero, and counter clockwise (decrease) to 1 + process_encoder_matrix(encoder_map[index][clockwise ? 0 : 1]); + return false; +} + +bool touch_encoder_update_kb(uint8_t index, bool clockwise) { + if (!touch_encoder_update_user(index, clockwise)) + return false; + + // Mapping clockwise (typically increase) to zero, and counter clockwise (decrease) to 1 + process_encoder_matrix(touch_encoder_map[index][clockwise ? 0 : 1]); + return false; +} + +bool touch_encoder_tapped_kb(uint8_t index, uint8_t section) { + if (!touch_encoder_tapped_user(index, section)) + return false; + + process_encoder_matrix(touch_encoder_map[index][section + 2]); + return false; +} + +#ifdef RGB_MATRIX_ENABLE +// clang-format off +led_config_t g_led_config = { { + { 0, 1, 2, 3, 4, 5, 6 }, + { 13, 12, 11, 10, 9, 8, 7 }, + { 14, 15, 16, 17, 18, 19, 20 }, + { 27, 26, 25, 24, 23, 22, 21 }, + { 28, 29, 30, 31, 32, 33, 34 }, + { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }, + { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }, + { 49, 50, 51, 52, 53, 54, 55 }, + { 62, 61, 60, 59, 58, 57, 56 }, + { 63, 64, 65, 66, 67, 68, 69 }, + { 76, 75, 74, 73, 72, 71, 70 }, + { 77, 78, 79, 80, 81, 82, 83 }, + { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }, + { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED } +}, { + { 16, 16},{ 34, 16},{ 49, 16},{ 64, 16},{ 79, 16},{ 94, 16},{ 109, 16}, + { 109, 31},{ 94, 31},{ 79, 31},{ 64, 31},{ 49, 31},{ 34, 31},{ 16, 31}, + { 16, 46},{ 34, 46},{ 49, 46},{ 64, 46},{ 79, 46},{ 94, 46},{ 109, 46}, + { 109, 61},{ 94, 61},{ 79, 61},{ 64, 61},{ 49, 61},{ 34, 61},{ 16, 61}, + { 16, 76},{ 34, 76},{ 49, 76},{ 64, 76},{ 83, 72},{ 98, 72},{ 113, 72}, + { 97, 5},{ 91, 5},{ 86, 5},{ 80, 5},{ 75, 5},{ 69, 5},{ 63, 5},{ 58, 5},{ 52, 5},{ 46, 5},{ 41, 5},{ 35, 5},{ 30, 5},{ 24, 5}, + { 240, 16},{ 222, 16},{ 207, 16},{ 192, 16},{ 177, 16},{ 162, 16},{ 147, 16}, + { 147, 31},{ 162, 31},{ 177, 31},{ 192, 31},{ 207, 31},{ 222, 31},{ 240, 31}, + { 240, 46},{ 222, 46},{ 207, 46},{ 192, 46},{ 177, 46},{ 162, 46},{ 147, 46}, + { 147, 61},{ 162, 61},{ 177, 61},{ 192, 61},{ 207, 61},{ 222, 61},{ 240, 61}, + { 240, 76},{ 222, 76},{ 207, 76},{ 192, 76},{ 180, 72},{ 165, 72},{ 150, 72}, + { 159, 5},{ 164, 5},{ 170, 5},{ 176, 5},{ 181, 5},{ 187, 5},{ 192, 5},{ 198, 5},{ 204, 5},{ 209, 5},{ 215, 5},{ 221, 5},{ 226, 5},{ 232, 5}, +}, { + 1, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 1, + 1, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 1, + 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 1, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 1, + 1, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 1, + 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 +} }; +// clang-format on +#endif diff --git a/keyboards/rgbkb/mun/rev1/rev1.h b/keyboards/rgbkb/mun/rev1/rev1.h new file mode 100644 index 000000000000..8e7b65f45ca3 --- /dev/null +++ b/keyboards/rgbkb/mun/rev1/rev1.h @@ -0,0 +1,43 @@ +/* + * ---------------------------------------------------------------------------- + * "THE BEER-WARE LICENSE" (Revision 42): + * wrote this file. As long as you retain this + * notice you can do whatever you want with this stuff. If we meet some day, and + * you think this stuff is worth it, you can buy me a beer in return. David Rauseo + * ---------------------------------------------------------------------------- + */ + +#pragma once + +#include "mun.h" +#include "touch_encoder.h" + +// clang-format off +#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, \ + E00, E01, E10, E11, E20, E21, E30, E31, \ + T00, T01, T02, T03, T04, T10, T11, T12, T13, T14 \ +) \ +{ \ + /* Left Half */ \ + { 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 }, \ + { E00, E01, E10, E11, KC_NO, KC_NO, KC_NO }, \ + { T00, T01, T02, T03, T04, KC_NO, KC_NO }, \ + /* Right Half */ \ + { 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 }, \ + { E20, E21, E30, E31, KC_NO, KC_NO, KC_NO }, \ + { T10, T11, T12, T13, T14, KC_NO, KC_NO } \ +} +// clang-format on diff --git a/keyboards/rgbkb/mun/rev1/rules.mk b/keyboards/rgbkb/mun/rev1/rules.mk new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/keyboards/rgbkb/mun/rules.mk b/keyboards/rgbkb/mun/rules.mk new file mode 100644 index 000000000000..b37a2d9ec291 --- /dev/null +++ b/keyboards/rgbkb/mun/rules.mk @@ -0,0 +1,43 @@ +# MCU name +MCU = STM32F303 + +# Touch encoder needs +SRC += ../common/touch_encoder.c +SRC += ../common/common_oled.c +QUANTUM_LIB_SRC += i2c_master.c + +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +## (Note that for BOOTMAGIC on Teensy LC you have to use a custom .ld script.) +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # 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 +AUDIO_ENABLE = no # Audio output + +WS2812_DRIVER = pwm +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = WS2812 + +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enable the OLED Driver + +ENCODER_ENABLE = yes + +SPLIT_KEYBOARD = yes +SERIAL_DRIVER = usart +LTO_ENABLE = yes +OPT = 3 + +OPT_DEFS += -DOLED_FONT_H=\"../common/glcdfont.c\" +OPT_DEFS += -Ikeyboards/rgbkb/common + +# matrix optimisations +SRC += matrix.c + +DEFAULT_FOLDER = rgbkb/mun/rev1 diff --git a/keyboards/rgbkb/pan/config.h b/keyboards/rgbkb/pan/config.h index a1a2aae9fc8b..43c534ca929f 100644 --- a/keyboards/rgbkb/pan/config.h +++ b/keyboards/rgbkb/pan/config.h @@ -39,5 +39,54 @@ along with this program. If not, see . #define RGBLIGHT_LIMIT_VAL 120 #define USB_MAX_POWER_CONSUMPTION 500 +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ #define DEBOUNCE 5 diff --git a/keyboards/rgbkb/pan/info.json b/keyboards/rgbkb/pan/info.json index 93f8dba6c7e9..54ac24a3a4b3 100644 --- a/keyboards/rgbkb/pan/info.json +++ b/keyboards/rgbkb/pan/info.json @@ -2,8 +2,6 @@ "keyboard_name": "RGBKB Pan", "url": "https://www.rgbkb.net/collections/all/products/pan-keyboard-diy-kit", "maintainer": "Legonut", - "width": 13, - "height": 6.25, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/rgbkb/pan/keymaps/default/keymap.c b/keyboards/rgbkb/pan/keymaps/default/keymap.c index f19d36256cae..1188db837ca8 100644 --- a/keyboards/rgbkb/pan/keymaps/default/keymap.c +++ b/keyboards/rgbkb/pan/keymaps/default/keymap.c @@ -70,8 +70,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -#ifdef OLED_DRIVER_ENABLE -void oled_task_user(void) { +#ifdef OLED_ENABLE +bool oled_task_user(void) { // Host Keyboard Layer Status oled_write_P(PSTR("RGBKB Pan\n"), false); oled_write_P(PSTR("Layer: "), false); @@ -97,6 +97,8 @@ void oled_task_user(void) { led_t led_state = host_keyboard_led_state(); oled_write_P(led_state.num_lock ? PSTR("Numlock On\n") : PSTR(" \n"), false); oled_write_P(led_state.caps_lock ? PSTR("Capslock On \n") : PSTR(" \n"), false); + + return false; } #endif diff --git a/keyboards/rgbkb/pan/pan.c b/keyboards/rgbkb/pan/pan.c index bc438f2d08d0..c367550e4967 100644 --- a/keyboards/rgbkb/pan/pan.c +++ b/keyboards/rgbkb/pan/pan.c @@ -1,24 +1,70 @@ - /* Copyright 2020 RGBKB - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ +/* Copyright 2020 RGBKB + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ #include "pan.h" #include "quantum.h" #include "rgb_matrix_types.h" - #if defined RGB_MATRIX_ENABLE +# if defined(KEYBOARD_rgbkb_pan_rev1) +# include "ws2812.h" + +// LED color buffer +LED_TYPE rgb_matrix_ws2812_array[DRIVER_LED_TOTAL]; + +static void init(void) {} + +static void flush(void) { + // Assumes use of RGB_DI_PIN + ws2812_setleds(rgb_matrix_ws2812_array, DRIVER_LED_TOTAL); +} + +// Set an led in the buffer to a color +static inline void setled(int i, uint8_t r, uint8_t g, uint8_t b) { +# if defined(RGB_ENCODERS) || defined(STAGGERED_RGB_ENCODERS) + if (i == 0 || i == 1) { // if encoder LEDs, change LEDs + rgb_matrix_ws2812_array[i].r = g; + rgb_matrix_ws2812_array[i].g = b; + rgb_matrix_ws2812_array[i].b = r; + } else +# endif + { + rgb_matrix_ws2812_array[i].r = r; + rgb_matrix_ws2812_array[i].g = g; + rgb_matrix_ws2812_array[i].b = b; + } +# ifdef RGBW + convert_rgb_to_rgbw(&rgb_matrix_ws2812_array[i]); +# endif +} + +static void setled_all(uint8_t r, uint8_t g, uint8_t b) { + for (int i = 0; i < sizeof(rgb_matrix_ws2812_array) / sizeof(rgb_matrix_ws2812_array[0]); i++) { + setled(i, r, g, b); + } +} + +const rgb_matrix_driver_t rgb_matrix_driver = { + .init = init, + .flush = flush, + .set_color = setled, + .set_color_all = setled_all, +}; +# endif + +// clang-format off led_config_t g_led_config = { { { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }, { 0, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15 }, @@ -26,14 +72,14 @@ { 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40 }, { 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, NO_LED } }, { -#ifdef STAGGERED_RGB_ENCODERS +# ifdef STAGGERED_RGB_ENCODERS {0, -19},{228, -19}, {0, 0}, {14, 0}, {33, 0}, {52, 0}, {71, 0}, {90, 0}, {109, 0}, {128, 0}, {147, 0}, {166, 0}, {185, 0}, {204, 0}, {223, 0}, {209, 19}, {190, 19}, {171, 19}, {152, 19}, {133, 19}, {114, 19}, {95, 19}, {76, 19}, {57, 19}, {38, 19}, {19, 19}, {0, 19}, {0, 38}, {19, 38}, {38, 38}, {57, 38}, {76, 38}, {95, 38}, {114, 38}, {133, 38}, {152, 38}, {171, 38}, {190, 38}, {209, 38}, {223, 57}, {204, 57}, {185, 57}, {171, 57}, {147, 57}, {128, 57}, {109, 57}, {90, 57}, {71, 57}, {52, 57}, {33, 57}, {14, 57}, {0, 57}, {0, 76}, {19, 76}, {38, 76}, {57, 76}, {76, 76}, {95, 76}, {114, 76}, {133, 76}, {152, 76}, {171, 76}, {190, 76}, {209, 76}, -#elif defined RGB_ENCODERS +# elif defined RGB_ENCODERS {0, -19},{228, -19}, {0, 0}, {19, 0}, {38, 0}, {57, 0}, {76, 0}, {95, 0}, {114, 0}, {133, 0}, {152, 0}, {171, 0}, {190, 0}, {209, 0}, {209, 19}, {190, 19}, {171, 19}, {152, 19}, {133, 19}, {114, 19}, {95, 19}, {76, 19}, {57, 19}, {38, 19}, {19, 19}, {0, 19}, @@ -41,48 +87,49 @@ {209, 57}, {190, 57}, {171, 57}, {152, 57}, {133, 57}, {114, 57}, {95, 57}, {76, 57}, {57, 57}, {38, 57}, {19, 57}, {0, 57}, {0, 76}, {19, 76}, {38, 76}, {57, 76}, {76, 76}, {95, 76}, {114, 76}, {133, 76}, {152, 76}, {171, 76}, {190, 76}, {209, 76}, {0, 95},{19, 95}, //not used -#elif defined STAGGERED_LAYOUT +# elif defined STAGGERED_LAYOUT {0, 0}, {19, 0}, {38, 0}, {57, 0}, {76, 0}, {95, 0}, {114, 0}, {133, 0}, {152, 0}, {171, 0}, {190, 0}, {209, 0}, {0, 0}, {209, 19}, {190, 19}, {171, 19}, {152, 19}, {133, 19}, {114, 19}, {95, 19}, {76, 19}, {57, 19}, {38, 19}, {19, 19}, {0, 19}, {0, 38}, {19, 38}, {38, 38}, {57, 38}, {76, 38}, {95, 38}, {114, 38}, {133, 38}, {152, 38}, {171, 38}, {190, 38}, {209, 38}, {209, 57}, {190, 57}, {171, 57}, {152, 57}, {133, 57}, {114, 57}, {95, 57}, {76, 57}, {57, 57}, {38, 57}, {19, 57}, {0, 57}, {0, 0}, {0, 76}, {19, 76}, {38, 76}, {57, 76}, {76, 76}, {95, 76}, {114, 76}, {133, 76}, {152, 76}, {171, 76}, {190, 76}, {209, 76}, {0, 95},{19, 95},//not used -#else +# else {0, 0}, {19, 0}, {38, 0}, {57, 0}, {76, 0}, {95, 0}, {114, 0}, {133, 0}, {152, 0}, {171, 0}, {190, 0}, {209, 0}, {209, 19}, {190, 19}, {171, 19}, {152, 19}, {133, 19}, {114, 19}, {95, 19}, {76, 19}, {57, 19}, {38, 19}, {19, 19}, {0, 19}, {0, 38}, {19, 38}, {38, 38}, {57, 38}, {76, 38}, {95, 38}, {114, 38}, {133, 38}, {152, 38}, {171, 38}, {190, 38}, {209, 38}, {209, 57}, {190, 57}, {171, 57}, {152, 57}, {133, 57}, {114, 57}, {95, 57}, {76, 57}, {57, 57}, {38, 57}, {19, 57}, {0, 57}, {0, 76}, {19, 76}, {38, 76}, {57, 76}, {76, 76}, {95, 76}, {114, 76}, {133, 76}, {152, 76}, {171, 76}, {190, 76}, {209, 76}, {0, 0},{0, 0}, {0, 0},{0, 0},//not used -#endif +# endif }, { -#ifdef STAGGERED_RGB_ENCODERS +# ifdef STAGGERED_RGB_ENCODERS 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 -#elif defined RGB_ENCODERS +# elif defined RGB_ENCODERS 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 -#elif defined STAGGERED_LAYOUT +# elif defined STAGGERED_LAYOUT 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 -#else +# else 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 -#endif +# endif } }; +// clang-format on #endif diff --git a/keyboards/rgbkb/pan/rev1/32a/rules.mk b/keyboards/rgbkb/pan/rev1/32a/rules.mk index 321ecc5c1af7..b69598073014 100644 --- a/keyboards/rgbkb/pan/rev1/32a/rules.mk +++ b/keyboards/rgbkb/pan/rev1/32a/rules.mk @@ -5,4 +5,4 @@ MCU = atmega32a F_CPU = 16000000 # Bootloader selection -BOOTLOADER = USBasp +BOOTLOADER = usbasploader diff --git a/keyboards/rgbkb/pan/rev1/rules.mk b/keyboards/rgbkb/pan/rev1/rules.mk index 4d3c0f6679a0..667c29005929 100644 --- a/keyboards/rgbkb/pan/rev1/rules.mk +++ b/keyboards/rgbkb/pan/rev1/rules.mk @@ -1,2 +1,5 @@ # The default configuration is a atmega32a DEFAULT_FOLDER = rgbkb/pan/rev1/32a + +RGB_MATRIX_DRIVER = custom +WS2812_DRIVER_REQUIRED := yes diff --git a/keyboards/rgbkb/pan/rules.mk b/keyboards/rgbkb/pan/rules.mk index fa3ce946097d..0e90b49e5bde 100644 --- a/keyboards/rgbkb/pan/rules.mk +++ b/keyboards/rgbkb/pan/rules.mk @@ -1,22 +1,20 @@ # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output RGB_MATRIX_ENABLE = yes RGB_MATRIX_DRIVER = WS2812 WS2812_DRIVER = bitbang ENCODER_ENABLE = yes -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # RGB layout selection RGB_ENCODERS = yes # For RGB encoders, solder on both WS2811 chips diff --git a/keyboards/rgbkb/sol/config.h b/keyboards/rgbkb/sol/config.h index f42783f719d9..e81389454920 100644 --- a/keyboards/rgbkb/sol/config.h +++ b/keyboards/rgbkb/sol/config.h @@ -48,6 +48,54 @@ along with this program. If not, see . #define RGBLIGHT_LIMIT_VAL 120 #endif #define RGB_MATRIX_MAXIMUM_BRIGHTNESS RGBLIGHT_LIMIT_VAL +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH #define LED_HITS_TO_REMEMBER 5 diff --git a/keyboards/rgbkb/sol/keymaps/brianweyer/keymap.c b/keyboards/rgbkb/sol/keymaps/brianweyer/keymap.c index 2ae07984d88c..d6867ffa9ba4 100644 --- a/keyboards/rgbkb/sol/keymaps/brianweyer/keymap.c +++ b/keyboards/rgbkb/sol/keymaps/brianweyer/keymap.c @@ -196,7 +196,7 @@ void matrix_init_user(void) { // OLED Driver Logic -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { if (!is_keyboard_master()) @@ -260,11 +260,13 @@ static void render_status(void) { oled_write_P(led_usb_state & (1<. /* ws2812 RGB LED */ #define RGB_DI_PIN B7 -#define BACKLIGHT_LEDS 124 - -#ifdef FULLHAND_ENABLE - #define FULLHAND_LEDS 24 -#elif SF_ENABLE - #define FULLHAND_LEDS 38 -#else - #define FULLHAND_LEDS 0 -#endif - // Underglow / DIY Tent Glow are parallel to the top row leds, no separate define - +// Full Hand case adds 24 LEDs, Star Fighter case adds 38 LEDs +// For mirrored LED control (each MCU controls half the LEDs), total LED counts are divided in half #ifdef LED_MIRRORED - #define RGBLED_NUM ((BACKLIGHT_LEDS + FULLHAND_LEDS) / 2) + #ifdef FULLHAND_ENABLE + #define FULLHAND_LEDS 24 + #define RGBLED_NUM 74 + #elif SF_ENABLE + #define FULLHAND_LEDS 38 + #define RGBLED_NUM 81 + #else + #define FULLHAND_LEDS 0 + #define RGBLED_NUM 62 + #endif #else - #define RGBLED_NUM (BACKLIGHT_LEDS + FULLHAND_LEDS) + #ifdef FULLHAND_ENABLE + #define FULLHAND_LEDS 24 + #define RGBLED_NUM 148 + #elif SF_ENABLE + #define FULLHAND_LEDS 38 + #define RGBLED_NUM 162 + #else + #define FULLHAND_LEDS 0 + #define RGBLED_NUM 124 + #endif #endif + #define DRIVER_LED_TOTAL RGBLED_NUM #define RGB_MATRIX_CENTER { 112, 37 } @@ -54,7 +64,7 @@ along with this program. If not, see . #define ENCODERS_PAD_A { D2 } #define ENCODERS_PAD_B { D6 } #else -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE #error Extra encoders cannot be enabled at the same time as the OLED Driver as they use the same pins. #endif #define ENCODERS_PAD_A { D2, D1, B0 } diff --git a/keyboards/rgbkb/sol/rev2/info.json b/keyboards/rgbkb/sol/rev2/info.json index e252ea2e2df1..33e6625fe47e 100644 --- a/keyboards/rgbkb/sol/rev2/info.json +++ b/keyboards/rgbkb/sol/rev2/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Sol", "url": "", "maintainer": "Legonut", - "width": 17, - "height": 6.5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/rgbkb/sol/rev2/post_rules.mk b/keyboards/rgbkb/sol/rev2/post_rules.mk index ab03325c9fae..feaa2ac1f2b0 100644 --- a/keyboards/rgbkb/sol/rev2/post_rules.mk +++ b/keyboards/rgbkb/sol/rev2/post_rules.mk @@ -28,7 +28,7 @@ ifeq ($(strip $(EXTRA_ENCODERS_ENABLE)), yes) OPT_DEFS += -DEXTRA_ENCODERS_ENABLE endif -ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes) +ifeq ($(strip $(OLED_ENABLE)), yes) ifeq ($(strip $(ENCODER_ENABLE)), yes) ifneq ($(strip $(RGB_MATRIX_ENABLE)), no) ifneq ($(strip $(RGB_OLED_MENU)), no) diff --git a/keyboards/rgbkb/sol/rev2/rules.mk b/keyboards/rgbkb/sol/rev2/rules.mk index 29e211014d3f..b81a6f2f0150 100644 --- a/keyboards/rgbkb/sol/rev2/rules.mk +++ b/keyboards/rgbkb/sol/rev2/rules.mk @@ -1,10 +1,9 @@ # RGBKB Sol Rev2 Defaults # Keycode Options -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration( +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control -UNICODE_ENABLE = no # Unicode keycodes NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work # Debug Options @@ -27,8 +26,8 @@ SF_ENABLE = no # Enables the additional 38 Starfighter LEDs IOS_DEVICE_ENABLE = no # Limit max brightness to connect to IOS device (iPad,iPhone) # Misc -OLED_DRIVER_ENABLE = no # Enable the OLED Driver -EXTRA_ENCODERS_ENABLE = no # Enables 3 encoders per side (up from 1, not compatible with OLED_DRIVER_ENABLE) +OLED_ENABLE = no # Enable the OLED Driver +EXTRA_ENCODERS_ENABLE = no # Enables 3 encoders per side (up from 1, not compatible with OLED_ENABLE) SWAP_HANDS_ENABLE = no # Enable one-hand typing LTO_ENABLE = yes # Enable Link Time Optimizations greatly reducing firmware size by disabling the old Macros and Functions features diff --git a/keyboards/rgbkb/sol/rules.mk b/keyboards/rgbkb/sol/rules.mk index e3d3953df624..762b5fa8918d 100644 --- a/keyboards/rgbkb/sol/rules.mk +++ b/keyboards/rgbkb/sol/rules.mk @@ -2,13 +2,6 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = qmk-dfu # Custom local font file diff --git a/keyboards/rgbkb/zen/post_rules.mk b/keyboards/rgbkb/zen/post_rules.mk new file mode 100644 index 000000000000..3ddb449efa03 --- /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/rev1/info.json b/keyboards/rgbkb/zen/rev1/info.json index f312529edcd8..2a78ba02973c 100644 --- a/keyboards/rgbkb/zen/rev1/info.json +++ b/keyboards/rgbkb/zen/rev1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Zen", "url": "", "maintainer": "qmk", - "width": 17, - "height": 6.5, "layouts": { "LAYOUT": { "layout": [{"label":"k00", "x":0.5, "y":0}, {"label":"k01", "x":1.5, "y":0}, {"label":"k02", "x":2.5, "y":0}, {"label":"k03", "x":3.5, "y":0}, {"label":"k04", "x":4.5, "y":0}, {"label":"k05", "x":5.5, "y":0}, {"label":"k55", "x":10.5, "y":0}, {"label":"k54", "x":11.5, "y":0}, {"label":"k53", "x":12.5, "y":0}, {"label":"k52", "x":13.5, "y":0}, {"label":"k51", "x":14.5, "y":0}, {"label":"k50", "x":15.5, "y":0}, {"label":"k10", "x":0, "y":1, "w":1.5}, {"label":"k11", "x":1.5, "y":1}, {"label":"k12", "x":2.5, "y":1}, {"label":"k13", "x":3.5, "y":1}, {"label":"k14", "x":4.5, "y":1}, {"label":"k15", "x":5.5, "y":1}, {"label":"k65", "x":10.5, "y":1}, {"label":"k64", "x":11.5, "y":1}, {"label":"k63", "x":12.5, "y":1}, {"label":"k62", "x":13.5, "y":1}, {"label":"k61", "x":14.5, "y":1}, {"label":"k60", "x":15.5, "y":1, "w":1.5}, {"label":"k20", "x":0, "y":2, "w":1.5}, {"label":"k21", "x":1.5, "y":2}, {"label":"k22", "x":2.5, "y":2}, {"label":"k23", "x":3.5, "y":2}, {"label":"k24", "x":4.5, "y":2}, {"label":"k25", "x":5.5, "y":2}, {"label":"k75", "x":10.5, "y":2}, {"label":"k74", "x":11.5, "y":2}, {"label":"k73", "x":12.5, "y":2}, {"label":"k72", "x":13.5, "y":2}, {"label":"k71", "x":14.5, "y":2}, {"label":"k70", "x":15.5, "y":2, "w":1.5}, {"label":"k30", "x":0, "y":3, "w":1.5}, {"label":"k31", "x":1.5, "y":3}, {"label":"k32", "x":2.5, "y":3}, {"label":"k33", "x":3.5, "y":3}, {"label":"k34", "x":4.5, "y":3}, {"label":"k35", "x":5.5, "y":3}, {"label":"k85", "x":10.5, "y":3}, {"label":"k84", "x":11.5, "y":3}, {"label":"k83", "x":12.5, "y":3}, {"label":"k82", "x":13.5, "y":3}, {"label":"k81", "x":14.5, "y":3}, {"label":"k80", "x":15.5, "y":3, "w":1.5}, {"label":"k40", "x":0, "y":4, "w":1.5}, {"label":"k41", "x":1.5, "y":4}, {"label":"k42", "x":2.5, "y":4}, {"label":"k43", "x":3.5, "y":4}, {"label":"k44", "x":4.5, "y":4}, {"label":"k45", "x":6, "y":4.5, "h":2}, {"label":"k46", "x":7, "y":4.5, "h":2}, {"label":"k96", "x":9, "y":4.5, "h":2}, {"label":"k95", "x":10, "y":4.5, "h":2}, {"label":"k94", "x":11.5, "y":4}, {"label":"k93", "x":12.5, "y":4}, {"label":"k92", "x":13.5, "y":4}, {"label":"k91", "x":14.5, "y":4}, {"label":"k90", "x":15.5, "y":4, "w":1.5}] diff --git a/keyboards/rgbkb/zen/rev1/rev1.c b/keyboards/rgbkb/zen/rev1/rev1.c index 5f4cd32f695e..520a869e57ba 100644 --- a/keyboards/rgbkb/zen/rev1/rev1.c +++ b/keyboards/rgbkb/zen/rev1/rev1.c @@ -1,22 +1 @@ #include "rev1.h" - -#ifdef SSD1306OLED -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - led_set_user(usb_led); -} -#endif - -void matrix_init_kb(void) { - - // // green led on - // DDRD |= (1<<5); - // PORTD &= ~(1<<5); - - // // orange led on - // DDRB |= (1<<0); - // PORTB &= ~(1<<0); - - matrix_init_user(); -}; - diff --git a/keyboards/rgbkb/zen/rev1/rules.mk b/keyboards/rgbkb/zen/rev1/rules.mk index 58e9a76b2302..e69de29bb2d1 100644 --- a/keyboards/rgbkb/zen/rev1/rules.mk +++ b/keyboards/rgbkb/zen/rev1/rules.mk @@ -1 +0,0 @@ -BOOTLOADER = caterina diff --git a/keyboards/rgbkb/zen/rev2/info.json b/keyboards/rgbkb/zen/rev2/info.json index 8ed12de2b4ff..53baefe22d20 100644 --- a/keyboards/rgbkb/zen/rev2/info.json +++ b/keyboards/rgbkb/zen/rev2/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Zen", "url": "", "maintainer": "qmk", - "width": 17, - "height": 6.5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/rgbkb/zen/rev2/keymaps/default/keymap.c b/keyboards/rgbkb/zen/rev2/keymaps/default/keymap.c index f31da8bf5d23..5bc5e00d8dd6 100644 --- a/keyboards/rgbkb/zen/rev2/keymaps/default/keymap.c +++ b/keyboards/rgbkb/zen/rev2/keymaps/default/keymap.c @@ -103,7 +103,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } -#if OLED_DRIVER_ENABLE +#if OLED_ENABLE const char* layer_name_user(uint32_t layer) { switch (layer) { case _QWERTY: diff --git a/keyboards/rgbkb/zen/rev2/post_rules.mk b/keyboards/rgbkb/zen/rev2/post_rules.mk new file mode 100644 index 000000000000..2a4397e980df --- /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/rev2.c b/keyboards/rgbkb/zen/rev2/rev2.c index 28a5a9f203d2..546189027226 100644 --- a/keyboards/rgbkb/zen/rev2/rev2.c +++ b/keyboards/rgbkb/zen/rev2/rev2.c @@ -1,6 +1,6 @@ #include "rev2.h" -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE #include "split_util.h" #include "oled_driver.h" @@ -47,20 +47,23 @@ void render_status(void) { oled_write_P(led_usb_state & (1<", "x":10, "y":3}, {"label":"/?", "x":11, "y":3}, {"label":"Enter", "x":12, "y":3}, {"label":"Ctrl", "x":0, "y":4}, {"label":"Alt", "x":1, "y":4}, {"label":"Super", "x":2, "y":4}, {"label":"RGB", "x":3, "y":4}, {"label":"⇓", "x":4, "y":4}, {"x":5, "y":4}, {"x":7, "y":4}, {"label":"FN", "x":8, "y":4}, {"label":"Left", "x":9, "y":4}, {"label":"Down", "x":10, "y":4}, {"label":"Up", "x":11, "y":4}, {"label":"Right", "x":12, "y":4}] diff --git a/keyboards/rgbkb/zygomorph/rules.mk b/keyboards/rgbkb/zygomorph/rules.mk index 8a9bdf3ec41b..7cfddb685a24 100644 --- a/keyboards/rgbkb/zygomorph/rules.mk +++ b/keyboards/rgbkb/zygomorph/rules.mk @@ -2,33 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = qmk-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output RGB_MATRIX_DRIVER = WS2812 SPLIT_KEYBOARD = yes diff --git a/keyboards/ristretto/config.h b/keyboards/ristretto/config.h new file mode 100644 index 000000000000..3d5a66fbc362 --- /dev/null +++ b/keyboards/ristretto/config.h @@ -0,0 +1,50 @@ +/* Copyright 2021 Brandon Lewis + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x666B // fk +#define PRODUCT_ID 0x7273 // rs +#define DEVICE_VER 0x0001 // rev 1 +#define MANUFACTURER fruitykeeb +#define PRODUCT ristretto + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 13 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { B1, B2, B3, D3 } +#define MATRIX_COL_PINS { C7, C6, B6, B5, B4, D7, B7, F0, F1, F4, F5, F6, F7 } + +/* 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 + +#define ENCODERS_PAD_A { D4 } +#define ENCODERS_PAD_B { D6 } +#define ENCODER_RESOLUTION 4 diff --git a/keyboards/ristretto/info.json b/keyboards/ristretto/info.json new file mode 100644 index 000000000000..de01aaea4df2 --- /dev/null +++ b/keyboards/ristretto/info.json @@ -0,0 +1,63 @@ +{ + "keyboard_name": "ristretto", + "url": "https://www.fruitykeeb.xyz/product/ristretto", + "maintainer": "Fruit", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"ESC", "x":0, "y":0.25}, + {"label":"Q", "x":1, "y":0.25}, + {"label":"W", "x":2, "y":0.25}, + {"label":"E", "x":3, "y":0}, + {"label":"R", "x":4, "y":0.25}, + {"label":"T", "x":5, "y":0.25}, + {"label":"Y", "x":9, "y":0.25}, + {"label":"U", "x":10, "y":0.25}, + {"label":"I", "x":11, "y":0}, + {"label":"O", "x":12, "y":0.25}, + {"label":"P", "x":13, "y":0.25}, + {"label":"BKSP", "x":14, "y":0.25}, + + {"label":"TAB", "x":0, "y":1.25}, + {"label":"A", "x":1, "y":1.25}, + {"label":"S", "x":2, "y":1.25}, + {"label":"D", "x":3, "y":1}, + {"label":"F", "x":4, "y":1.25}, + {"label":"G", "x":5, "y":1.25}, + {"label":"H", "x":9, "y":1.25}, + {"label":"J", "x":10, "y":1.25}, + {"label":"K", "x":11, "y":1}, + {"label":"L", "x":12, "y":1.25}, + {"label":";", "x":13, "y":1.25}, + {"label":"'", "x":14, "y":1.25}, + + {"label":"LSFT", "x":0, "y":2.25}, + {"label":"Z", "x":1, "y":2.25}, + {"label":"X", "x":2, "y":2.25}, + {"label":"C", "x":3, "y":2}, + {"label":"V", "x":4, "y":2.25}, + {"label":"B", "x":5, "y":2.25}, + {"label":"N", "x":9, "y":2.25}, + {"label":"M", "x":10, "y":2.25}, + {"label":"<", "x":11, "y":2}, + {"label":">", "x":12, "y":2.25}, + {"label":"?", "x":13, "y":2.25}, + {"label":"ENTR", "x":14, "y":2.25}, + + {"label":"LCTL", "x":0, "y":3.25}, + {"label":"LGUI", "x":1, "y":3.25}, + {"label":"LALT", "x":2, "y":3.25}, + {"label":"LOWER", "x":3, "y":3, "h":1.25}, + {"label":"Enter", "x":4, "y":3.25}, + {"label":"SPACE", "x":5, "y":3.25, "w":1.5}, + {"label":"Rotary", "x":7, "y":3.25}, + {"label":"SPACE", "x":8.5, "y":3.25, "w":1.5}, + {"label":"SHIFT", "x":10, "y":3.25}, + {"label":"RAISE", "x":11, "y":3, "h":1.25}, + {"label":"RALT", "x":12, "y":3.25}, + {"label":"RGUI", "x":13, "y":3.25}, + {"label":"RCTL", "x":14, "y":3.25} + ] + } + } +} diff --git a/keyboards/ristretto/keymaps/default/keymap.c b/keyboards/ristretto/keymaps/default/keymap.c new file mode 100644 index 000000000000..e02c6ea246f6 --- /dev/null +++ b/keyboards/ristretto/keymaps/default/keymap.c @@ -0,0 +1,53 @@ +/* Copyright 2021 Brandon Lewis + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layers { + _BASE, + _RAISE, + _LOWER, + _ADJUST +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( + KC_ESC , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_BSPC , + KC_TAB , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN , KC_QUOT , + KC_LSFT , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM , KC_DOT , KC_SLSH , KC_ENT , + KC_LCTL , KC_LGUI , KC_LALT ,MO(_LOWER),KC_ENT , KC_SPC , KC_MUTE , KC_SPC , KC_RSFT ,MO(_RAISE),KC_RALT , KC_RGUI , KC_RCTRL + ), + [_RAISE] = LAYOUT( + KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_DEL , + KC_CAPS , KC_MINS , KC_EQL , KC_LBRC , KC_RBRC , KC_BSLS , KC_NO , KC_LEFT , KC_DOWN , KC_UP , KC_RGHT , KC_BSLS , + KC_TRNS , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , + KC_TRNS , KC_TRNS , KC_TRNS ,MO(_ADJUST),KC_ENT , KC_NO , KC_MPLY , KC_NO , KC_RSFT , KC_NO , KC_TRNS , KC_TRNS , KC_TRNS + ), + [_LOWER] = LAYOUT( + KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , + KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_LBRC , KC_RBRC , 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_TRNS , KC_TRNS , KC_TRNS , KC_NO , KC_ENT , KC_NO , KC_MUTE , KC_NO , KC_RSFT ,MO(_ADJUST),KC_TRNS, KC_TRNS , KC_TRNS + ), + [_ADJUST] = LAYOUT( + XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , + XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_CAPS , KC_NLCK , KC_SLCK , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , + XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , + KC_TRNS , KC_TRNS , KC_TRNS , XXXXXXX , XXXXXXX , XXXXXXX , KC_MUTE , XXXXXXX , XXXXXXX , XXXXXXX , KC_TRNS , KC_TRNS , KC_TRNS + ), +}; + +// OLED and Encoder function is located in the ristretto.c File diff --git a/keyboards/ristretto/readme.md b/keyboards/ristretto/readme.md new file mode 100644 index 000000000000..d047e70994cc --- /dev/null +++ b/keyboards/ristretto/readme.md @@ -0,0 +1,18 @@ +# Ristretto + +![Ristretto](https://i.imgur.com/VHX6ktEh.jpg) +![Ristretto-2](https://i.imgur.com/Hrc8vkph.jpg) + +An Integrated, Column Stagger, 40% Keyboard with OLED and Rotary Encoder + +* Keyboard Maintainer: [Fruit](https://github.com/Blewis308) +* Hardware Supported: Ristretto PCB, Atmega32u4 +* Hardware Availability: Through Group Buy - May 2021 + + To enter the bootloader, press the button marked "SW1" on the bottom of the PCB. + +Make example for this keyboard (after setting up your build envionment): + + make ristretto:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). \ No newline at end of file diff --git a/keyboards/ristretto/ristretto.c b/keyboards/ristretto/ristretto.c new file mode 100644 index 000000000000..b73e5043c33e --- /dev/null +++ b/keyboards/ristretto/ristretto.c @@ -0,0 +1,67 @@ +/* Copyright 2021 Brandon Lewis + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "ristretto.h" + +enum layers { + _BASE, + _RAISE, + _LOWER, + _ADJUST +}; + +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + if(index == 0) { + if (clockwise) { + tap_code(KC_VOLD); + } else { + tap_code(KC_VOLU); + } + } + return true; +} + +#ifdef OLED_ENABLE +oled_rotation_t oled_init_kb(oled_rotation_t rotation) { + return OLED_ROTATION_270; +} + +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } + oled_write_P(PSTR("\n\n"), false); + oled_write_ln_P(PSTR("LAYER"), false); + oled_write_ln_P(PSTR(""), false); + switch (get_highest_layer(layer_state)) { + case _BASE: + oled_write_P(PSTR("BASE\n"), false); + break; + case _RAISE: + oled_write_P(PSTR("RAISE\n"), false); + break; + case _LOWER: + oled_write_P(PSTR("LOWER\n"), false); + break; + case _ADJUST: + oled_write_P(PSTR("ADJ\n"), false); + break; + } + return false; +} + +#endif diff --git a/keyboards/ristretto/ristretto.h b/keyboards/ristretto/ristretto.h new file mode 100644 index 000000000000..66be57b18ba0 --- /dev/null +++ b/keyboards/ristretto/ristretto.h @@ -0,0 +1,31 @@ +/* Copyright 2021 Brandon Lewis + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + K000, K001, K002, K003, K004, K005, K007, K008, K009, K010, K011, K012, \ + K100, K101, K102, K103, K104, K105, K107, K108, K109, K110, K111, K112, \ + K200, K201, K202, K203, K204, K205, K207, K208, K209, K210, K211, K212, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312 \ +) { \ + {K000, K001, K002, K003, K004, K005, KC_NO, K007, K008, K009, K010, K011, K012}, \ + {K100, K101, K102, K103, K104, K105, KC_NO, K107, K108, K109, K110, K111, K112}, \ + {K200, K201, K202, K203, K204, K205, KC_NO, K207, K208, K209, K210, K211, K212}, \ + {K300, K301, K302, K303, K304, K305, K306 , K307, K308, K309, K310, K311, K312} \ +} diff --git a/keyboards/ristretto/rules.mk b/keyboards/ristretto/rules.mk new file mode 100644 index 000000000000..e4420fb64fe5 --- /dev/null +++ b/keyboards/ristretto/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 = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 +WAIT_FOR_USB = yes diff --git a/keyboards/rocketboard_16/config.h b/keyboards/rocketboard_16/config.h index a82514e0b4d6..cd99fcc73bc2 100644 --- a/keyboards/rocketboard_16/config.h +++ b/keyboards/rocketboard_16/config.h @@ -45,12 +45,12 @@ along with this program. If not, see . #define RGBLIGHT_ANIMATIONS #define RGB_DI_PIN A4 #define RGBLED_NUM 16 -#define RGBLIGHT_LIMIT_VAL 128 #define RGBLIGHT_VAL_STEP 8 #define RGBLIGHT_SLEEP // OLED stuff #define OLED_DISPLAY_128X64 +#define OLED_FONT_H "custom_font.h" // Allows for rotary encoder volume control #define TAP_CODE_DELAY 20 diff --git a/keyboards/rocketboard_16/custom_font.h b/keyboards/rocketboard_16/custom_font.h new file mode 100644 index 000000000000..1f41f25b7d48 --- /dev/null +++ b/keyboards/rocketboard_16/custom_font.h @@ -0,0 +1,244 @@ +/* +Copyright 2021 Seth Bonner +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "progmem.h" + +static const unsigned char PROGMEM font[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, + 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, + 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, + 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, + 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, + 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, + 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, + 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, + 0x00, 0x18, 0x24, 0x18, 0x00, 0x00, + 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, + 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, + 0x26, 0x29, 0x79, 0x29, 0x26, 0x00, + 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, + 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, + 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, + 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, + 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, + 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, + 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, + 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, + 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, + 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, + 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00, + 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00, + 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, + 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, + 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, + 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, + 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, + 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, + 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, + 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, + 0x23, 0x13, 0x08, 0x64, 0x62, 0x00, + 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, + 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, + 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, + 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, + 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, + 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, + 0x00, 0x80, 0x70, 0x30, 0x00, 0x00, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, + 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, + 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, + 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, + 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, + 0x72, 0x49, 0x49, 0x49, 0x46, 0x00, + 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, + 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, + 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, + 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, + 0x41, 0x21, 0x11, 0x09, 0x07, 0x00, + 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, + 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, + 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, + 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, + 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, + 0x02, 0x01, 0x59, 0x09, 0x06, 0x00, + 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00, + 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, + 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, + 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, + 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, + 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, + 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, + 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, + 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, + 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, + 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, + 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, + 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, + 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, + 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, + 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, + 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, + 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, + 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, + 0x26, 0x49, 0x49, 0x49, 0x32, 0x00, + 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00, + 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, + 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, + 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, + 0x63, 0x14, 0x08, 0x14, 0x63, 0x00, + 0x03, 0x04, 0x78, 0x04, 0x03, 0x00, + 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, + 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, + 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, + 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, + 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, + 0x00, 0x03, 0x07, 0x08, 0x00, 0x00, + 0x20, 0x54, 0x54, 0x78, 0x40, 0x00, + 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00, + 0x38, 0x44, 0x44, 0x44, 0x28, 0x00, + 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00, + 0x38, 0x54, 0x54, 0x54, 0x18, 0x00, + 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00, + 0x18, 0x24, 0x24, 0x1C, 0x78, 0x00, + 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, + 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, + 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, + 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, + 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, + 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00, + 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, + 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, + 0xFC, 0x18, 0x24, 0x24, 0x18, 0x00, + 0x18, 0x24, 0x24, 0x18, 0xFC, 0x00, + 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, + 0x48, 0x54, 0x54, 0x54, 0x24, 0x00, + 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00, + 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, + 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, + 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, + 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, + 0x4C, 0x10, 0x10, 0x10, 0x7C, 0x00, + 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, + 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, + 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0x00, 0x41, 0x36, 0x08, 0x00, 0x00, + 0x02, 0x01, 0x02, 0x04, 0x02, 0x00, + 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, + 0x02, 0x1E, 0xF2, 0x86, 0x84, 0x8C, + 0x98, 0xD0, 0x70, 0x60, 0x40, 0x60, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x60, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, + 0x10, 0x10, 0x10, 0x34, 0x24, 0x24, + 0x00, 0x44, 0x44, 0x48, 0x08, 0x08, + 0x10, 0x14, 0x14, 0x20, 0x24, 0x24, + 0x00, 0x0C, 0x0C, 0x70, 0x70, 0x70, + 0x00, 0x1E, 0x1E, 0x1E, 0x1E, 0x00, + 0x00, 0x60, 0x60, 0x06, 0x06, 0x00, + 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, + 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x00, 0x83, 0x83, 0x80, 0x18, 0x18, + 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, + 0xF0, 0xF0, 0xF0, 0xF0, 0x00, 0x00, + 0x38, 0x38, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0E, 0x0E, 0x0E, 0x00, + 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7E, 0x81, 0x81, 0x81, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, + 0x24, 0x26, 0x42, 0x42, 0x44, 0x24, + 0x18, 0x00, 0x00, 0x81, 0x81, 0x42, + 0x66, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x78, 0x4F, 0x61, 0x21, 0x31, + 0x19, 0x0B, 0x0E, 0x06, 0x02, 0x06, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x06, 0x02, 0x02, 0x02, + 0x02, 0x02, 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, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 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/keyboards/rocketboard_16/info.json b/keyboards/rocketboard_16/info.json index 3530a4b7163b..1ff728bfb770 100644 --- a/keyboards/rocketboard_16/info.json +++ b/keyboards/rocketboard_16/info.json @@ -2,8 +2,9 @@ "keyboard_name": "Rocketboard-16", "url": "", "maintainer": "fl3tching101", - "width": 4, - "height": 5, + "layout_aliases": { + "LAYOUT_default": "LAYOUT" + }, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/rocketboard_16/keycode_lookup.c b/keyboards/rocketboard_16/keycode_lookup.c new file mode 100644 index 000000000000..9e1c5f92afea --- /dev/null +++ b/keyboards/rocketboard_16/keycode_lookup.c @@ -0,0 +1,407 @@ +/* Copyright 2021 Seth Bonner + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "keycode_lookup.h" +#include "print.h" +#include "via.h" + +#define num_keycodes (sizeof(lookup_table)/sizeof(lookup_table[0])) +static char UNKNOWN_KEYCODE[] = "UNKNOWN"; + +int cmp(const void *v1, const void *v2) +{ + const lookup_table_t *c1 = v1; + const lookup_table_t *c2 = v2; + + return (c1->keycode - c2->keycode); +} + +/* + Returns a pointer to a string containing the string describing the keycode, such as those found here: + https://beta.docs.qmk.fm/using-qmk/simple-keycodes/keycodes + + Will return a string that says "UNKNOWN" if the keycode cannot be found. +*/ +char* translate_keycode_to_string(uint16_t code) +{ + lookup_table_t * result = NULL; + lookup_table_t target = {.key_string = "", .keycode = code}; + char * return_p; + + result = bsearch(&target, lookup_table, num_keycodes, sizeof(lookup_table_t), cmp); + + if(result != NULL) + { + return_p = result->key_string; + } + else + { + return_p = UNKNOWN_KEYCODE; + } + + return (return_p); +} + +lookup_table_t lookup_table[366] = +{ + {"KC_NO", KC_NO}, + {"KC_TRNS", KC_TRNS}, + {"KC_A", KC_A}, + {"KC_B", KC_B}, + {"KC_C", KC_C}, + {"KC_D", KC_D}, + {"KC_E", KC_E}, + {"KC_F", KC_F}, + {"KC_G", KC_G}, + {"KC_H", KC_H}, + {"KC_I", KC_I}, + {"KC_J", KC_J}, + {"KC_K", KC_K}, + {"KC_L", KC_L}, + {"KC_M", KC_M}, + {"KC_N", KC_N}, + {"KC_O", KC_O}, + {"KC_P", KC_P}, + {"KC_Q", KC_Q}, + {"KC_R", KC_R}, + {"KC_S", KC_S}, + {"KC_T", KC_T}, + {"KC_U", KC_U}, + {"KC_V", KC_V}, + {"KC_W", KC_W}, + {"KC_X", KC_X}, + {"KC_Y", KC_Y}, + {"KC_Z", KC_Z}, + {"KC_1", KC_1}, + {"KC_2", KC_2}, + {"KC_3", KC_3}, + {"KC_4", KC_4}, + {"KC_5", KC_5}, + {"KC_6", KC_6}, + {"KC_7", KC_7}, + {"KC_8", KC_8}, + {"KC_9", KC_9}, + {"KC_0", KC_0}, + {"KC_ENT", KC_ENT}, + {"KC_ESC", KC_ESC}, + {"KC_BSPC", KC_BSPC}, + {"KC_TAB", KC_TAB}, + {"KC_SPC", KC_SPC}, + {"KC_MINS", KC_MINS}, + {"KC_EQL", KC_EQL}, + {"KC_LBRC", KC_LBRC}, + {"KC_RBRC", KC_RBRC}, + {"KC_BSLS", KC_BSLS}, + {"KC_NUHS", KC_NUHS}, + {"KC_SCLN", KC_SCLN}, + {"KC_QUOT", KC_QUOT}, + {"KC_GRV", KC_GRV}, + {"KC_ZKHK", KC_ZKHK}, + {"KC_COMM", KC_COMM}, + {"KC_DOT", KC_DOT}, + {"KC_SLSH", KC_SLSH}, + {"KC_CAPS", KC_CAPS}, + {"KC_F1", KC_F1}, + {"KC_F2", KC_F2}, + {"KC_F3", KC_F3}, + {"KC_F4", KC_F4}, + {"KC_F5", KC_F5}, + {"KC_F6", KC_F6}, + {"KC_F7", KC_F7}, + {"KC_F8", KC_F8}, + {"KC_F9", KC_F9}, + {"KC_F10", KC_F10}, + {"KC_F11", KC_F11}, + {"KC_F12", KC_F12}, + {"KC_PSCR", KC_PSCR}, + {"KC_SLCK", KC_SLCK}, + {"KC_PAUS", KC_PAUS}, + {"KC_INS", KC_INS}, + {"KC_HOME", KC_HOME}, + {"KC_PGUP", KC_PGUP}, + {"KC_DEL", KC_DEL}, + {"KC_END", KC_END}, + {"KC_PGDN", KC_PGDN}, + {"KC_RGHT", KC_RGHT}, + {"KC_LEFT", KC_LEFT}, + {"KC_DOWN", KC_DOWN}, + {"KC_UP", KC_UP}, + {"KC_NLCK", KC_NLCK}, + {"KC_PSLS", KC_PSLS}, + {"KC_PAST", KC_PAST}, + {"KC_PMNS", KC_PMNS}, + {"KC_PPLS", KC_PPLS}, + {"KC_PENT", KC_PENT}, + {"KC_P1", KC_P1}, + {"KC_P2", KC_P2}, + {"KC_P3", KC_P3}, + {"KC_P4", KC_P4}, + {"KC_P5", KC_P5}, + {"KC_P6", KC_P6}, + {"KC_P7", KC_P7}, + {"KC_P8", KC_P8}, + {"KC_P9", KC_P9}, + {"KC_P0", KC_P0}, + {"KC_PDOT", KC_PDOT}, + {"KC_NUBS", KC_NUBS}, + {"KC_APP", KC_APP}, + {"KC_POWER", KC_POWER}, + {"KC_PEQL", KC_PEQL}, + {"KC_F13", KC_F13}, + {"KC_F14", KC_F14}, + {"KC_F15", KC_F15}, + {"KC_F16", KC_F16}, + {"KC_F17", KC_F17}, + {"KC_F18", KC_F18}, + {"KC_F19", KC_F19}, + {"KC_F20", KC_F20}, + {"KC_F21", KC_F21}, + {"KC_F22", KC_F22}, + {"KC_F23", KC_F23}, + {"KC_F24", KC_F24}, + {"KC_EXECUTE", KC_EXECUTE}, + {"KC_HELP", KC_HELP}, + {"KC_MENU", KC_MENU}, + {"KC_SELECT", KC_SELECT}, + {"KC_STOP", KC_STOP}, + {"KC_AGAIN", KC_AGAIN}, + {"KC_UNDO", KC_UNDO}, + {"KC_CUT", KC_CUT}, + {"KC_COPY", KC_COPY}, + {"KC_PASTE", KC_PASTE}, + {"KC_FIND", KC_FIND}, + {"KC_LCAP", KC_LCAP}, + {"KC_LNUM", KC_LNUM}, + {"KC_LSCR", KC_LSCR}, + {"KC_PCMM", KC_PCMM}, + {"KC_KP_EQUAL_AS400", KC_KP_EQUAL_AS400}, + {"KC_RO", KC_RO}, + {"KC_KANA", KC_KANA}, + {"KC_JYEN", KC_JYEN}, + {"KC_HENK", KC_HENK}, + {"KC_MHEN", KC_MHEN}, + {"KC_INT6", KC_INT6}, + {"KC_INT7", KC_INT7}, + {"KC_INT8", KC_INT8}, + {"KC_INT9", KC_INT9}, + {"KC_HAEN", KC_HAEN}, + {"KC_HANJ", KC_HANJ}, + {"KC_LANG3", KC_LANG3}, + {"KC_LANG4", KC_LANG4}, + {"KC_LANG5", KC_LANG5}, + {"KC_LANG6", KC_LANG6}, + {"KC_LANG7", KC_LANG7}, + {"KC_LANG8", KC_LANG8}, + {"KC_LANG9", KC_LANG9}, + {"KC_ERAS", KC_ERAS}, + {"KC_SYSREQ", KC_SYSREQ}, + {"KC_CANCEL", KC_CANCEL}, + {"KC_CLR", KC_CLR}, + {"KC_CLEAR", KC_CLEAR}, + {"KC_PRIOR", KC_PRIOR}, + {"KC_OUT", KC_OUT}, + {"KC_OPER", KC_OPER}, + {"KC_CLEAR_AGAIN", KC_CLEAR_AGAIN}, + {"KC_CRSEL", KC_CRSEL}, + {"KC_EXSEL", KC_EXSEL}, + {"KC_PWR", KC_PWR}, + {"KC_SLEP", KC_SLEP}, + {"KC_WAKE", KC_WAKE}, + {"KC_MUTE", KC_MUTE}, + {"KC_VOLU", KC_VOLU}, + {"KC_VOLD", KC_VOLD}, + {"KC_MNXT", KC_MNXT}, + {"KC_MPRV", KC_MPRV}, + {"KC_MSTP", KC_MSTP}, + {"KC_MPLY", KC_MPLY}, + {"KC_MSEL", KC_MSEL}, + {"KC_EJCT", KC_EJCT}, + {"KC_MAIL", KC_MAIL}, + {"KC_CALC", KC_CALC}, + {"KC_MYCM", KC_MYCM}, + {"KC_WWW_SEARCH", KC_WWW_SEARCH}, + {"KC_WWW_HOME", KC_WWW_HOME}, + {"KC_WWW_BACK", KC_WWW_BACK}, + {"KC_WWW_FORWARD", KC_WWW_FORWARD}, + {"KC_WWW_STOP", KC_WWW_STOP}, + {"KC_WWW_REFRESH", KC_WWW_REFRESH}, + {"KC_WWW_FAVORITES", KC_WWW_FAVORITES}, + {"KC_MFFD", KC_MFFD}, + {"KC_MRWD", KC_MRWD}, + {"KC_BRIU", KC_BRIU}, + {"KC_BRID", KC_BRID}, + {"KC_FN0", KC_FN0}, + {"KC_FN1", KC_FN1}, + {"KC_FN2", KC_FN2}, + {"KC_FN3", KC_FN3}, + {"KC_FN4", KC_FN4}, + {"KC_FN5", KC_FN5}, + {"KC_FN6", KC_FN6}, + {"KC_FN7", KC_FN7}, + {"KC_FN8", KC_FN8}, + {"KC_FN9", KC_FN9}, + {"KC_FN10", KC_FN10}, + {"KC_FN11", KC_FN11}, + {"KC_FN12", KC_FN12}, + {"KC_FN13", KC_FN13}, + {"KC_FN14", KC_FN14}, + {"KC_FN15", KC_FN15}, + {"KC_FN16", KC_FN16}, + {"KC_FN17", KC_FN17}, + {"KC_FN18", KC_FN18}, + {"KC_FN19", KC_FN19}, + {"KC_FN20", KC_FN20}, + {"KC_FN21", KC_FN21}, + {"KC_FN22", KC_FN22}, + {"KC_FN23", KC_FN23}, + {"KC_FN24", KC_FN24}, + {"KC_FN25", KC_FN25}, + {"KC_FN26", KC_FN26}, + {"KC_FN27", KC_FN27}, + {"KC_FN28", KC_FN28}, + {"KC_FN29", KC_FN29}, + {"KC_FN30", KC_FN30}, + {"KC_FN31", KC_FN31}, + {"KC_LCTL", KC_LCTL}, + {"KC_LSFT", KC_LSFT}, + {"KC_LALT", KC_LALT}, + {"KC_LGUI", KC_LGUI}, + {"KC_RCTL", KC_RCTL}, + {"KC_RSFT", KC_RSFT}, + {"KC_RALT", KC_RALT}, + {"KC_RGUI", KC_RGUI}, + {"KC_MS_UP", KC_MS_UP}, + {"KC_MS_DOWN", KC_MS_DOWN}, + {"KC_MS_LEFT", KC_MS_LEFT}, + {"KC_MS_RIGHT", KC_MS_RIGHT}, + {"KC_MS_BTN1", KC_MS_BTN1}, + {"KC_MS_BTN2", KC_MS_BTN2}, + {"KC_MS_BTN3", KC_MS_BTN3}, + {"KC_MS_BTN4", KC_MS_BTN4}, + {"KC_MS_BTN5", KC_MS_BTN5}, + {"KC_MS_WH_UP", KC_MS_WH_UP}, + {"KC_MS_WH_DOWN", KC_MS_WH_DOWN}, + {"KC_MS_WH_LEFT", KC_MS_WH_LEFT}, + {"KC_MS_WH_RIGHT", KC_MS_WH_RIGHT}, + {"KC_MS_ACCEL0", KC_MS_ACCEL0}, + {"KC_MS_ACCEL1", KC_MS_ACCEL1}, + {"KC_MS_ACCEL2", KC_MS_ACCEL2}, + {"KC_EXLM", KC_EXLM}, + {"KC_AT", KC_AT}, + {"KC_HASH", KC_HASH}, + {"KC_DLR", KC_DLR}, + {"KC_PERC", KC_PERC}, + {"KC_CIRC", KC_CIRC}, + {"KC_AMPR", KC_AMPR}, + {"KC_ASTR", KC_ASTR}, + {"KC_LPRN", KC_LPRN}, + {"KC_RPRN", KC_RPRN}, + {"KC_UNDS", KC_UNDS}, + {"KC_PLUS", KC_PLUS}, + {"KC_LCBR", KC_LCBR}, + {"KC_RCBR", KC_RCBR}, + {"KC_PIPE", KC_PIPE}, + {"KC_COLN", KC_COLN}, + {"KC_DQUO", KC_DQUO}, + {"KC_TILD", KC_TILD}, + {"KC_LT", KC_LT}, + {"KC_GT", KC_GT}, + {"KC_QUES", KC_QUES}, + {"RESET", RESET}, + {"DEBUG", DEBUG}, + {"MAGIC_TOGGLE_NKRO", MAGIC_TOGGLE_NKRO}, + {"KC_GESC", KC_GESC}, + {"AU_ON", AU_ON}, + {"AU_OFF", AU_OFF}, + {"AU_TOG", AU_TOG}, + {"CLICKY_TOGGLE", CLICKY_TOGGLE}, + {"CLICKY_ENABLE", CLICKY_ENABLE}, + {"CLICKY_DISABLE", CLICKY_DISABLE}, + {"CLICKY_UP", CLICKY_UP}, + {"CLICKY_DOWN", CLICKY_DOWN}, + {"CLICKY_RESET", CLICKY_RESET}, + {"MU_ON", MU_ON}, + {"MU_OFF", MU_OFF}, + {"MU_TOG", MU_TOG}, + {"MU_MOD", MU_MOD}, + {"BL_ON", BL_ON}, + {"BL_OFF", BL_OFF}, + {"BL_DEC", BL_DEC}, + {"BL_INC", BL_INC}, + {"BL_TOGG", BL_TOGG}, + {"BL_STEP", BL_STEP}, + {"BL_BRTG", BL_BRTG}, + {"RGB_TOG", RGB_TOG}, + {"RGB_MOD", RGB_MOD}, + {"RGB_RMOD", RGB_RMOD}, + {"RGB_HUI", RGB_HUI}, + {"RGB_HUD", RGB_HUD}, + {"RGB_SAI", RGB_SAI}, + {"RGB_SAD", RGB_SAD}, + {"RGB_VAI", RGB_VAI}, + {"RGB_VAD", RGB_VAD}, + {"RGB_SPI", RGB_SPI}, + {"RGB_SPD", RGB_SPD}, + {"RGB_M_P", RGB_M_P}, + {"RGB_M_B", RGB_M_B}, + {"RGB_M_R", RGB_M_R}, + {"RGB_M_SW", RGB_M_SW}, + {"RGB_M_SN", RGB_M_SN}, + {"RGB_M_K", RGB_M_K}, + {"RGB_M_X", RGB_M_X}, + {"RGB_M_G", RGB_M_G}, + {"KC_LSPO", KC_LSPO}, + {"KC_RSPC", KC_RSPC}, + {"KC_SFTENT", KC_SFTENT}, + {"KC_LCPO", KC_LCPO}, + {"KC_RCPC", KC_RCPC}, + {"KC_LAPO", KC_LAPO}, + {"KC_RAPC", KC_RAPC}, + {"FN_MO13", FN_MO13}, + {"FN_MO23", FN_MO23}, + {"MACRO00", MACRO00}, + {"MACRO01", MACRO01}, + {"MACRO02", MACRO02}, + {"MACRO03", MACRO03}, + {"MACRO04", MACRO04}, + {"MACRO05", MACRO05}, + {"MACRO06", MACRO06}, + {"MACRO07", MACRO07}, + {"MACRO08", MACRO08}, + {"MACRO09", MACRO09}, + {"MACRO10", MACRO10}, + {"MACRO11", MACRO11}, + {"MACRO12", MACRO12}, + {"MACRO13", MACRO13}, + {"MACRO14", MACRO14}, + {"MACRO15", MACRO15}, + {"USER00", USER00}, + {"USER01", USER01}, + {"USER02", USER02}, + {"USER03", USER03}, + {"USER04", USER04}, + {"USER05", USER05}, + {"USER06", USER06}, + {"USER07", USER07}, + {"USER08", USER08}, + {"USER09", USER09}, + {"USER10", USER10}, + {"USER11", USER11}, + {"USER12", USER12}, + {"USER13", USER13}, + {"USER14", USER14}, + {"USER15", USER15} +}; diff --git a/keyboards/rocketboard_16/keycode_lookup.h b/keyboards/rocketboard_16/keycode_lookup.h new file mode 100644 index 000000000000..f51dcfd52a13 --- /dev/null +++ b/keyboards/rocketboard_16/keycode_lookup.h @@ -0,0 +1,29 @@ +/* Copyright 2021 Seth Bonner + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +typedef struct +{ + char key_string[17]; + uint16_t keycode; +} lookup_table_t; + +char* translate_keycode_to_string(uint16_t code); + +extern lookup_table_t lookup_table[366]; diff --git a/keyboards/rocketboard_16/keymaps/default/keymap.c b/keyboards/rocketboard_16/keymaps/default/keymap.c index ea078cbaface..6d75d40fbdb9 100644 --- a/keyboards/rocketboard_16/keymaps/default/keymap.c +++ b/keyboards/rocketboard_16/keymaps/default/keymap.c @@ -12,29 +12,41 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include QMK_KEYBOARD_H +#include "keycode_lookup.h" +#include +#ifdef CONSOLE_ENABLE +#include "print.h" +#endif // Each layer gets a name for readability, which is then used in the keymap matrix below. // The underscores don't mean anything - you can have a layer called STUFF or any other name. // Layer names don't all need to be of the same length, obviously, and you can also skip them // entirely and just use numbers. #define _BASE 0 +#define _SPEC 1 // Special layer // Use the following format to create custom key codes to make macros out of and such -/* enum custom_keycodes { - FOO = SAFE_RANGE, + KC_EXAM = SAFE_RANGE // "Examine" key code to show the keycode of a key pressed afterwards on the OLED }; -*/ + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_BASE] = LAYOUT_default( - RGB_MODE_FORWARD, KC_NUMLOCK, - KC_KP_7, KC_KP_8, KC_KP_9, KC_DELETE, - KC_KP_4, KC_KP_5, KC_KP_6, KC_END, - KC_KP_1, KC_KP_2, KC_KP_3, KC_AUDIO_VOL_UP, - KC_KP_0, RGB_TOG, KC_AUDIO_MUTE, KC_AUDIO_VOL_DOWN - ) + [_BASE] = LAYOUT( + RGB_MOD, KC_NLCK, + KC_P7, KC_P8, KC_P9, KC_DEL, + KC_P4, KC_P5, KC_P6, KC_END, + KC_P1, KC_P2, KC_P3, KC_F13, + KC_P0, MO(1), KC_PDOT, KC_PENT + ), + [_SPEC] = LAYOUT( + RGB_RMOD, KC_MUTE, + KC_NO, KC_NO, KC_NO, KC_EXAM, + KC_NO, KC_NO, KC_NO, KC_NO, + RESET, RGB_TOG, RGB_SPI, RGB_SPD, + KC_NO, _______, KC_NO, KC_NO + ) }; bool encoder_update_user(uint8_t index, bool clockwise){ @@ -54,37 +66,324 @@ bool encoder_update_user(uint8_t index, bool clockwise){ return true; } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE + +#define ANIM_FRAMES 3 +#define ANIM_FRAME_DURATION 110 // Number of milliseconds per frame (no faster than 110ms, last line struggles) +#define BACKGROUND_FRAMES 21 +#define ROCKET_CENTER_POS 3 +#define SPLASH_DUR 100 // Measured in frames, see above for frame length (note, 231 is used as a key value later on, CTRL+F for uses of this to make sure everything is good) + +uint32_t anim_timer = 0; +uint8_t current_frame = 0; +uint8_t rocket_y_position = 3; +uint8_t rocket_pos_change = 0; +uint8_t background_frame = 0; +uint8_t splash_dur_counter = 0; +bool examine_engaged = false; +uint16_t examined_keycode = KC_NO; +char lastKeycodeString[32] = { 0 }; + +const char star_background [8] [21] = +{ + {0x88, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x00, 0x93}, + {0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8E, 0x00, 0x00}, + {0x00, 0x8F, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x8B, 0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x00}, + {0x8D, 0x00, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8B, 0x00, 0x00, 0x00, 0x00, 0x8F, 0x8B, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x8A, 0x00, 0x00, 0x8E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x8F, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x8F, 0x00, 0x89, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x8F}, + {0x00, 0x8B, 0x00, 0x00, 0x91, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x8E, 0x00, 0x00, 0x90, 0x00, 0x00, 0x8C, 0x00, 0x00}, +}; + +static void oled_write_ln_centered(const char * data, bool inverted) +{ + if(strlen(data) >= 21) // If more than 1 line of text is passed in, return without doing anything + { + return; + } + + // Character buffer to build up the string in + char line_buf[21]; + + // Amount to offset string from left side + uint8_t offset = (21 - strlen(data))/2; + + // Formatted string centering... look, it works, don't ask how... + snprintf(line_buf, 21, "%*s%s%*s\0", offset, "", data, offset, ""); // Centers data within 21 character buffer with null termination + + oled_write_ln(line_buf, inverted); +} + +// Prints the exhaust characters in an order determined by the phase for animation purposes +// startX - The x axis starting point in characters for the exhaust (3 behind the rocket) +// startY - The y axis starting point in characters for the exhaust (middle of the rocket) +// phase - The "phase" of the animation, no real rhyme or reason to the exact number, but each frame move +1 to make the animation work +static void render_exhaust(uint8_t startX, uint8_t startY, uint8_t phase) +{ + oled_set_cursor(startX, startY); + oled_write_char(0x85 + (phase % 3), false); + phase++; + oled_write_char(0x85 + (phase % 3), false); + phase++; + oled_write_char(0x85 + (phase % 3), false); +} -static void render_logo(void) { - static const char PROGMEM qmk_logo[] = { - 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, - 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, - 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00 - }; +// Renders the "stars" behind the rocket +// startY - The starting Y location (in characters) of the rocket so that stars aren't rendered on top of the rocket +static void render_stars(uint8_t startY, uint8_t phase) +{ + // Line 0 + oled_set_cursor(0, 0); + for(int i = 0; i < 21; i++) + { + oled_write_char(star_background[0][(i + phase) % 21], false); + } + // Line 1 + oled_set_cursor(0, 1); + for(int i = 0; i < 21; i++) + { + oled_write_char(star_background[1][(i + phase) % 21], false); + } + // Line 2 + oled_set_cursor(0, 2); + for(int i = 0; i < 21; i++) + { + oled_write_char(star_background[2][(i + phase) % 21], false); + } + // Line 3 + oled_set_cursor(0, 3); + for(int i = 0; i < 21; i++) + { + oled_write_char(star_background[3][(i + phase) % 21], false); + } + // Line 4 + oled_set_cursor(0, 4); + for(int i = 0; i < 21; i++) + { + oled_write_char(star_background[4][(i + phase) % 21], false); + } + // Line 5 + oled_set_cursor(0, 5); + for(int i = 0; i < 21; i++) + { + oled_write_char(star_background[5][(i + phase) % 21], false); + } + // Line 6 + oled_set_cursor(0, 6); + for(int i = 0; i < 21; i++) + { + oled_write_char(star_background[6][(i + phase) % 21], false); + } + // Line 7 + oled_set_cursor(0, 7); + for(int i = 0; i < 21; i++) + { + oled_write_char(star_background[7][(i + phase) % 21], false); + } - oled_write(qmk_logo, false); +} + +static void render_logo(uint8_t startX, uint8_t startY) +{ + oled_set_cursor(startX, startY); + oled_write_char(0x80, false); + oled_write_char(0x81, false); + oled_write_char(0x82, false); + oled_write_char(0x83, false); + oled_write_char(0x84, false); + oled_set_cursor(startX, startY + 1); + oled_write_char(0xA0, false); + oled_write_char(0xA1, false); + oled_write_char(0xA2, false); + oled_write_char(0xA3, false); + oled_write_char(0xA4, false); + oled_write_char(0xA5, false); + oled_set_cursor(startX, startY + 2); + oled_write_char(0xC0, false); + oled_write_char(0xC1, false); + oled_write_char(0xC2, false); + oled_write_char(0xC3, false); + oled_write_char(0xC4, false); } oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; } -void oled_task_user(void) { - uint8_t light_level = rgblight_get_val(); - light_level = (uint8_t)(100.0 * ((float)light_level/(float)RGBLIGHT_LIMIT_VAL)); // Convert to % - char c_light_level[3]; - itoa(light_level, c_light_level, 10); - - render_logo(); // Render the QMK logo - oled_write_ln(PSTR(""), false); // Add a newline - // Host Keyboard LED Status - led_t led_state = host_keyboard_led_state(); - oled_write(led_state.num_lock ? PSTR(" |NUM|") : PSTR(" | |"), false); - oled_write(led_state.caps_lock ? PSTR("|CAP|") : PSTR("| |"), false); - oled_write(led_state.scroll_lock ? PSTR("|SCR| ") : PSTR("| | "), false); - - oled_write_ln(PSTR(""), false); // Add a newline - oled_write(PSTR(" BKLT: "), false); - oled_write(c_light_level, false); - oled_write_ln(PSTR("% "), false); +bool oled_task_user(void) +{ + // Playing the animation + if((timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) && (splash_dur_counter < SPLASH_DUR)) + { + anim_timer = timer_read32(); // read the current timer value + current_frame = (current_frame + 1) % ANIM_FRAMES; // Frame in the exhaust animation + background_frame = (background_frame + 1) % BACKGROUND_FRAMES; // Frame in the star animation + + // Move the rocket up and down + if((rocket_pos_change / 9) == 0) + { + rocket_y_position = ROCKET_CENTER_POS; + } + else if((rocket_pos_change / 9) == 1) + { + rocket_y_position = ROCKET_CENTER_POS + 1; + } + else if((rocket_pos_change / 9) == 2) + { + rocket_y_position = ROCKET_CENTER_POS; + } + if((rocket_pos_change / 9) == 3) + { + rocket_y_position = ROCKET_CENTER_POS - 1; + } + + // Renders the scene piece by piece + render_stars(8, background_frame); // Render star background + render_exhaust(6, rocket_y_position + 1, current_frame); // Render exhaust + render_logo(9, rocket_y_position); // Render the rocket + + // Timing for rocket position change + if(rocket_pos_change < 36) + { + rocket_pos_change++; + } + else + { + rocket_pos_change = 0; + } + + splash_dur_counter++; + } + else if((splash_dur_counter >= SPLASH_DUR) && (splash_dur_counter != 231)) // Should only run once at end of splash screen duration + { + splash_dur_counter = 231; // Nice known value + oled_clear(); // Clear the screen + } + + + // After the splash screen + if(splash_dur_counter == 231) + { + uint8_t light_level = rgblight_get_val(); + light_level = (uint8_t)(100.0 * ((float)light_level/(float)RGBLIGHT_LIMIT_VAL)); // Convert to % + char c_light_level[3]; + itoa(light_level, c_light_level, 10); + + // Display lock LED statuses + led_t led_state = host_keyboard_led_state(); + if(led_state.num_lock) + { + oled_write(PSTR(" |"), false); + oled_write(PSTR("NUM"), true); + oled_write(PSTR("|"), false); + } + else + { + oled_write(PSTR(" |NUM|"), false); + } + + if(led_state.caps_lock) + { + oled_write(PSTR("|"), false); + oled_write(PSTR("CAP"), true); + oled_write(PSTR("|"), false); + } + else + { + oled_write(PSTR("|CAP|"), false); + } + + if(led_state.scroll_lock) + { + oled_write(PSTR("|"), false); + oled_write(PSTR("SCR"), true); + oled_write(PSTR("| "), false); + } + else + { + oled_write(PSTR("|SCR| "), false); + } + + // Print the examine info + if(examine_engaged == true) + { + oled_set_cursor(0, 2); + oled_write_ln(PSTR(" Keycode: "), false); + oled_write_ln_centered(lastKeycodeString, false); + } + else + { + oled_set_cursor(0, 2); + oled_write_ln(PSTR(" "), false); + oled_write_ln(PSTR(" "), false); + } + + // Print the backlight % bottom right + oled_set_cursor(11, 7); + oled_write(PSTR("BKLT: "), false); + oled_write(c_light_level, false); + oled_write(PSTR("%"), false); + + // Print the layer number in bottom left + oled_set_cursor(0, 7); + oled_write(PSTR("L: "), false); + switch (get_highest_layer(layer_state)) + { + case 0: + oled_write(PSTR("0"), false); + break; + case 1: + oled_write(PSTR("1"), false); + break; + case 2: + oled_write(PSTR("2"), false); + break; + case 3: + oled_write(PSTR("3"), false); + break; + default: + oled_write(PSTR("Und"), false); + break; + } + + + } + + return false; +} + +// Process the extra/extended keycode functionality +bool process_record_user(uint16_t keycode, keyrecord_t *record) +{ + bool ret = true; // True will allow QMK to process the key as usual after the function runs, false skips QMK processing after this function runs + + switch (keycode) + { + case KC_EXAM: + if(record->event.pressed) // On pressed, flip bool examine_engaged + { + if(examine_engaged == false) + { + examine_engaged = true; + } + else + { + examine_engaged = false; + } + ret = false; + } + else // On release do nothing + { + ret = false; + } + break; + + default: // For any key other than EX, simply let QMK process after saving away what it was + memset(lastKeycodeString, 0, sizeof(lastKeycodeString)); + memcpy(lastKeycodeString, translate_keycode_to_string(keycode), sizeof(((lookup_table_t *)0)->key_string)); + ret = true; + break; + } + + return ret; } #endif diff --git a/keyboards/rocketboard_16/keymaps/via/keymap.c b/keyboards/rocketboard_16/keymaps/via/keymap.c index ea078cbaface..6d75d40fbdb9 100644 --- a/keyboards/rocketboard_16/keymaps/via/keymap.c +++ b/keyboards/rocketboard_16/keymaps/via/keymap.c @@ -12,29 +12,41 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include QMK_KEYBOARD_H +#include "keycode_lookup.h" +#include +#ifdef CONSOLE_ENABLE +#include "print.h" +#endif // Each layer gets a name for readability, which is then used in the keymap matrix below. // The underscores don't mean anything - you can have a layer called STUFF or any other name. // Layer names don't all need to be of the same length, obviously, and you can also skip them // entirely and just use numbers. #define _BASE 0 +#define _SPEC 1 // Special layer // Use the following format to create custom key codes to make macros out of and such -/* enum custom_keycodes { - FOO = SAFE_RANGE, + KC_EXAM = SAFE_RANGE // "Examine" key code to show the keycode of a key pressed afterwards on the OLED }; -*/ + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_BASE] = LAYOUT_default( - RGB_MODE_FORWARD, KC_NUMLOCK, - KC_KP_7, KC_KP_8, KC_KP_9, KC_DELETE, - KC_KP_4, KC_KP_5, KC_KP_6, KC_END, - KC_KP_1, KC_KP_2, KC_KP_3, KC_AUDIO_VOL_UP, - KC_KP_0, RGB_TOG, KC_AUDIO_MUTE, KC_AUDIO_VOL_DOWN - ) + [_BASE] = LAYOUT( + RGB_MOD, KC_NLCK, + KC_P7, KC_P8, KC_P9, KC_DEL, + KC_P4, KC_P5, KC_P6, KC_END, + KC_P1, KC_P2, KC_P3, KC_F13, + KC_P0, MO(1), KC_PDOT, KC_PENT + ), + [_SPEC] = LAYOUT( + RGB_RMOD, KC_MUTE, + KC_NO, KC_NO, KC_NO, KC_EXAM, + KC_NO, KC_NO, KC_NO, KC_NO, + RESET, RGB_TOG, RGB_SPI, RGB_SPD, + KC_NO, _______, KC_NO, KC_NO + ) }; bool encoder_update_user(uint8_t index, bool clockwise){ @@ -54,37 +66,324 @@ bool encoder_update_user(uint8_t index, bool clockwise){ return true; } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE + +#define ANIM_FRAMES 3 +#define ANIM_FRAME_DURATION 110 // Number of milliseconds per frame (no faster than 110ms, last line struggles) +#define BACKGROUND_FRAMES 21 +#define ROCKET_CENTER_POS 3 +#define SPLASH_DUR 100 // Measured in frames, see above for frame length (note, 231 is used as a key value later on, CTRL+F for uses of this to make sure everything is good) + +uint32_t anim_timer = 0; +uint8_t current_frame = 0; +uint8_t rocket_y_position = 3; +uint8_t rocket_pos_change = 0; +uint8_t background_frame = 0; +uint8_t splash_dur_counter = 0; +bool examine_engaged = false; +uint16_t examined_keycode = KC_NO; +char lastKeycodeString[32] = { 0 }; + +const char star_background [8] [21] = +{ + {0x88, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x00, 0x93}, + {0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8E, 0x00, 0x00}, + {0x00, 0x8F, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x8B, 0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x00}, + {0x8D, 0x00, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8B, 0x00, 0x00, 0x00, 0x00, 0x8F, 0x8B, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x8A, 0x00, 0x00, 0x8E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x8F, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x8F, 0x00, 0x89, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x8F}, + {0x00, 0x8B, 0x00, 0x00, 0x91, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x8E, 0x00, 0x00, 0x90, 0x00, 0x00, 0x8C, 0x00, 0x00}, +}; + +static void oled_write_ln_centered(const char * data, bool inverted) +{ + if(strlen(data) >= 21) // If more than 1 line of text is passed in, return without doing anything + { + return; + } + + // Character buffer to build up the string in + char line_buf[21]; + + // Amount to offset string from left side + uint8_t offset = (21 - strlen(data))/2; + + // Formatted string centering... look, it works, don't ask how... + snprintf(line_buf, 21, "%*s%s%*s\0", offset, "", data, offset, ""); // Centers data within 21 character buffer with null termination + + oled_write_ln(line_buf, inverted); +} + +// Prints the exhaust characters in an order determined by the phase for animation purposes +// startX - The x axis starting point in characters for the exhaust (3 behind the rocket) +// startY - The y axis starting point in characters for the exhaust (middle of the rocket) +// phase - The "phase" of the animation, no real rhyme or reason to the exact number, but each frame move +1 to make the animation work +static void render_exhaust(uint8_t startX, uint8_t startY, uint8_t phase) +{ + oled_set_cursor(startX, startY); + oled_write_char(0x85 + (phase % 3), false); + phase++; + oled_write_char(0x85 + (phase % 3), false); + phase++; + oled_write_char(0x85 + (phase % 3), false); +} -static void render_logo(void) { - static const char PROGMEM qmk_logo[] = { - 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, - 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, - 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00 - }; +// Renders the "stars" behind the rocket +// startY - The starting Y location (in characters) of the rocket so that stars aren't rendered on top of the rocket +static void render_stars(uint8_t startY, uint8_t phase) +{ + // Line 0 + oled_set_cursor(0, 0); + for(int i = 0; i < 21; i++) + { + oled_write_char(star_background[0][(i + phase) % 21], false); + } + // Line 1 + oled_set_cursor(0, 1); + for(int i = 0; i < 21; i++) + { + oled_write_char(star_background[1][(i + phase) % 21], false); + } + // Line 2 + oled_set_cursor(0, 2); + for(int i = 0; i < 21; i++) + { + oled_write_char(star_background[2][(i + phase) % 21], false); + } + // Line 3 + oled_set_cursor(0, 3); + for(int i = 0; i < 21; i++) + { + oled_write_char(star_background[3][(i + phase) % 21], false); + } + // Line 4 + oled_set_cursor(0, 4); + for(int i = 0; i < 21; i++) + { + oled_write_char(star_background[4][(i + phase) % 21], false); + } + // Line 5 + oled_set_cursor(0, 5); + for(int i = 0; i < 21; i++) + { + oled_write_char(star_background[5][(i + phase) % 21], false); + } + // Line 6 + oled_set_cursor(0, 6); + for(int i = 0; i < 21; i++) + { + oled_write_char(star_background[6][(i + phase) % 21], false); + } + // Line 7 + oled_set_cursor(0, 7); + for(int i = 0; i < 21; i++) + { + oled_write_char(star_background[7][(i + phase) % 21], false); + } - oled_write(qmk_logo, false); +} + +static void render_logo(uint8_t startX, uint8_t startY) +{ + oled_set_cursor(startX, startY); + oled_write_char(0x80, false); + oled_write_char(0x81, false); + oled_write_char(0x82, false); + oled_write_char(0x83, false); + oled_write_char(0x84, false); + oled_set_cursor(startX, startY + 1); + oled_write_char(0xA0, false); + oled_write_char(0xA1, false); + oled_write_char(0xA2, false); + oled_write_char(0xA3, false); + oled_write_char(0xA4, false); + oled_write_char(0xA5, false); + oled_set_cursor(startX, startY + 2); + oled_write_char(0xC0, false); + oled_write_char(0xC1, false); + oled_write_char(0xC2, false); + oled_write_char(0xC3, false); + oled_write_char(0xC4, false); } oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; } -void oled_task_user(void) { - uint8_t light_level = rgblight_get_val(); - light_level = (uint8_t)(100.0 * ((float)light_level/(float)RGBLIGHT_LIMIT_VAL)); // Convert to % - char c_light_level[3]; - itoa(light_level, c_light_level, 10); - - render_logo(); // Render the QMK logo - oled_write_ln(PSTR(""), false); // Add a newline - // Host Keyboard LED Status - led_t led_state = host_keyboard_led_state(); - oled_write(led_state.num_lock ? PSTR(" |NUM|") : PSTR(" | |"), false); - oled_write(led_state.caps_lock ? PSTR("|CAP|") : PSTR("| |"), false); - oled_write(led_state.scroll_lock ? PSTR("|SCR| ") : PSTR("| | "), false); - - oled_write_ln(PSTR(""), false); // Add a newline - oled_write(PSTR(" BKLT: "), false); - oled_write(c_light_level, false); - oled_write_ln(PSTR("% "), false); +bool oled_task_user(void) +{ + // Playing the animation + if((timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) && (splash_dur_counter < SPLASH_DUR)) + { + anim_timer = timer_read32(); // read the current timer value + current_frame = (current_frame + 1) % ANIM_FRAMES; // Frame in the exhaust animation + background_frame = (background_frame + 1) % BACKGROUND_FRAMES; // Frame in the star animation + + // Move the rocket up and down + if((rocket_pos_change / 9) == 0) + { + rocket_y_position = ROCKET_CENTER_POS; + } + else if((rocket_pos_change / 9) == 1) + { + rocket_y_position = ROCKET_CENTER_POS + 1; + } + else if((rocket_pos_change / 9) == 2) + { + rocket_y_position = ROCKET_CENTER_POS; + } + if((rocket_pos_change / 9) == 3) + { + rocket_y_position = ROCKET_CENTER_POS - 1; + } + + // Renders the scene piece by piece + render_stars(8, background_frame); // Render star background + render_exhaust(6, rocket_y_position + 1, current_frame); // Render exhaust + render_logo(9, rocket_y_position); // Render the rocket + + // Timing for rocket position change + if(rocket_pos_change < 36) + { + rocket_pos_change++; + } + else + { + rocket_pos_change = 0; + } + + splash_dur_counter++; + } + else if((splash_dur_counter >= SPLASH_DUR) && (splash_dur_counter != 231)) // Should only run once at end of splash screen duration + { + splash_dur_counter = 231; // Nice known value + oled_clear(); // Clear the screen + } + + + // After the splash screen + if(splash_dur_counter == 231) + { + uint8_t light_level = rgblight_get_val(); + light_level = (uint8_t)(100.0 * ((float)light_level/(float)RGBLIGHT_LIMIT_VAL)); // Convert to % + char c_light_level[3]; + itoa(light_level, c_light_level, 10); + + // Display lock LED statuses + led_t led_state = host_keyboard_led_state(); + if(led_state.num_lock) + { + oled_write(PSTR(" |"), false); + oled_write(PSTR("NUM"), true); + oled_write(PSTR("|"), false); + } + else + { + oled_write(PSTR(" |NUM|"), false); + } + + if(led_state.caps_lock) + { + oled_write(PSTR("|"), false); + oled_write(PSTR("CAP"), true); + oled_write(PSTR("|"), false); + } + else + { + oled_write(PSTR("|CAP|"), false); + } + + if(led_state.scroll_lock) + { + oled_write(PSTR("|"), false); + oled_write(PSTR("SCR"), true); + oled_write(PSTR("| "), false); + } + else + { + oled_write(PSTR("|SCR| "), false); + } + + // Print the examine info + if(examine_engaged == true) + { + oled_set_cursor(0, 2); + oled_write_ln(PSTR(" Keycode: "), false); + oled_write_ln_centered(lastKeycodeString, false); + } + else + { + oled_set_cursor(0, 2); + oled_write_ln(PSTR(" "), false); + oled_write_ln(PSTR(" "), false); + } + + // Print the backlight % bottom right + oled_set_cursor(11, 7); + oled_write(PSTR("BKLT: "), false); + oled_write(c_light_level, false); + oled_write(PSTR("%"), false); + + // Print the layer number in bottom left + oled_set_cursor(0, 7); + oled_write(PSTR("L: "), false); + switch (get_highest_layer(layer_state)) + { + case 0: + oled_write(PSTR("0"), false); + break; + case 1: + oled_write(PSTR("1"), false); + break; + case 2: + oled_write(PSTR("2"), false); + break; + case 3: + oled_write(PSTR("3"), false); + break; + default: + oled_write(PSTR("Und"), false); + break; + } + + + } + + return false; +} + +// Process the extra/extended keycode functionality +bool process_record_user(uint16_t keycode, keyrecord_t *record) +{ + bool ret = true; // True will allow QMK to process the key as usual after the function runs, false skips QMK processing after this function runs + + switch (keycode) + { + case KC_EXAM: + if(record->event.pressed) // On pressed, flip bool examine_engaged + { + if(examine_engaged == false) + { + examine_engaged = true; + } + else + { + examine_engaged = false; + } + ret = false; + } + else // On release do nothing + { + ret = false; + } + break; + + default: // For any key other than EX, simply let QMK process after saving away what it was + memset(lastKeycodeString, 0, sizeof(lastKeycodeString)); + memcpy(lastKeycodeString, translate_keycode_to_string(keycode), sizeof(((lookup_table_t *)0)->key_string)); + ret = true; + break; + } + + return ret; } #endif diff --git a/keyboards/rocketboard_16/rocketboard_16.h b/keyboards/rocketboard_16/rocketboard_16.h index 87965906a4e6..927e21f7e614 100644 --- a/keyboards/rocketboard_16/rocketboard_16.h +++ b/keyboards/rocketboard_16/rocketboard_16.h @@ -4,7 +4,7 @@ #define KNO KC_NO -#define LAYOUT_default( \ +#define LAYOUT( \ K00, K01, \ K02, K03, K04, K05, \ K06, K07, K08, K09, \ diff --git a/keyboards/rocketboard_16/rules.mk b/keyboards/rocketboard_16/rules.mk index eedbc33d9857..ab89dda9546f 100644 --- a/keyboards/rocketboard_16/rules.mk +++ b/keyboards/rocketboard_16/rules.mk @@ -2,26 +2,39 @@ MCU = STM32F103 # Bootloader selection -BOOTLOADER = stm32duino +# BOOTLOADER = stm32duino + +# Custom loader configuration +MCU_LDSCRIPT = STM32F103xB_stm32duino_bootloader +OPT_DEFS += -DBOOTLOADER_STM32DUINO +BOARD = STM32_F103_STM32DUINO +STM32_BOOTLOADER_ADDRESS = 0x80000000 +DFU_ARGS = -d 1EAF:0003 -a 2 -R +DFU_SUFFIX_ARGS = -v 1EAF -p 0003 + +# Extra include +SRC += keycode_lookup.c # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB backlit keys -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 ENCODER_ENABLE = yes +RAW_ENABLE = yes # Enables HID RAW communication between the board and the PC + # Enter lower-power sleep mode when on the ChibiOS idle thread OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE + +LTO_ENABLE = yes diff --git a/keyboards/rominronin/katana60/rev1/info.json b/keyboards/rominronin/katana60/rev1/info.json index fa0aa93d67ba..8ac62a68e302 100644 --- a/keyboards/rominronin/katana60/rev1/info.json +++ b/keyboards/rominronin/katana60/rev1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Katana60 rev1", "url": "", "maintainer": "rominronin", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/rominronin/katana60/rev1/keymaps/default/keymap.c b/keyboards/rominronin/katana60/rev1/keymaps/default/keymap.c index 989c7c16b375..1cb925889f63 100644 --- a/keyboards/rominronin/katana60/rev1/keymaps/default/keymap.c +++ b/keyboards/rominronin/katana60/rev1/keymaps/default/keymap.c @@ -63,19 +63,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/rominronin/katana60/rev1/rules.mk b/keyboards/rominronin/katana60/rev1/rules.mk index 7b69908b1ba9..00a8fa07a459 100644 --- a/keyboards/rominronin/katana60/rev1/rules.mk +++ b/keyboards/rominronin/katana60/rev1/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/rominronin/katana60/rev2/info.json b/keyboards/rominronin/katana60/rev2/info.json index bc31ae64910b..e2ac51024ffd 100644 --- a/keyboards/rominronin/katana60/rev2/info.json +++ b/keyboards/rominronin/katana60/rev2/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Katana60 rev2", "url": "https://candykeys.com/product/katana60-pcb-V2", "maintainer": "rominronin", - "width": 15, - "height": 5, "layouts": { "LAYOUT_7u_a": { "layout": [ diff --git a/keyboards/rominronin/katana60/rev2/rules.mk b/keyboards/rominronin/katana60/rev2/rules.mk index 000f55911ad3..182df619f905 100644 --- a/keyboards/rominronin/katana60/rev2/rules.mk +++ b/keyboards/rominronin/katana60/rev2/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/roseslite/info.json b/keyboards/roseslite/info.json index 88a7ac25f387..70db000a6416 100644 --- a/keyboards/roseslite/info.json +++ b/keyboards/roseslite/info.json @@ -2,8 +2,6 @@ "keyboard_name": "roses lite", "url": "delta-design.xyz", "maintainer": "Reason6/Vk2fgav", - "width": 18, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/roseslite/rules.mk b/keyboards/roseslite/rules.mk index 32981133b2eb..ef61685f7c09 100644 --- a/keyboards/roseslite/rules.mk +++ b/keyboards/roseslite/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/rotor/config.h b/keyboards/rotor/config.h new file mode 100644 index 000000000000..9f3d8aa7d35b --- /dev/null +++ b/keyboards/rotor/config.h @@ -0,0 +1,39 @@ +/* Copyright 2021 Densus Design and Basekeys.jp + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x04D8 +#define PRODUCT_ID 0xE8BE +#define DEVICE_VER 0x0001 +#define MANUFACTURER Densus Design +#define PRODUCT Rotor + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 18 + +/* key matrix pins */ + +#define MATRIX_ROW_PINS { B7, B0, B1, B2, B3 } +#define MATRIX_COL_PINS { E6, F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, D2, D5, D3 } + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + diff --git a/keyboards/rotor/info.json b/keyboards/rotor/info.json new file mode 100644 index 000000000000..a5c86ec4bd1d --- /dev/null +++ b/keyboards/rotor/info.json @@ -0,0 +1,10 @@ +{ + "keyboard_name": "Rotor", + "url": "https://klc-playground.com/", + "maintainer": "2Moons", + "layouts": { + "LAYOUT": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"label":"Esc", "x":2.25, "y":0}, {"label":"!", "x":3.25, "y":0}, {"label":"@", "x":4.25, "y":0}, {"label":"#", "x":5.25, "y":0}, {"label":"$", "x":6.25, "y":0}, {"label":"%", "x":7.25, "y":0}, {"label":"^", "x":8.25, "y":0}, {"label":"&", "x":9.25, "y":0}, {"label":"*", "x":10.25, "y":0}, {"label":"(", "x":11.25, "y":0}, {"label":")", "x":12.25, "y":0}, {"label":"_", "x":13.25, "y":0}, {"label":"+", "x":14.25, "y":0}, {"label":"Backspace", "x":15.25, "y":0, "w":2}, {"label":"Home", "x":17.25, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"label":"Tab", "x":2.25, "y":1, "w":1.5}, {"label":"Q", "x":3.75, "y":1}, {"label":"W", "x":4.75, "y":1}, {"label":"E", "x":5.75, "y":1}, {"label":"R", "x":6.75, "y":1}, {"label":"T", "x":7.75, "y":1}, {"label":"Y", "x":8.75, "y":1}, {"label":"U", "x":9.75, "y":1}, {"label":"I", "x":10.75, "y":1}, {"label":"O", "x":11.75, "y":1}, {"label":"P", "x":12.75, "y":1}, {"label":"{", "x":13.75, "y":1}, {"label":"}", "x":14.75, "y":1}, {"label":"|", "x":15.75, "y":1, "w":1.5}, {"label":"PgUp", "x":17.25, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"label":"Caps Lock", "x":2.25, "y":2, "w":1.75}, {"label":"A", "x":4, "y":2}, {"label":"S", "x":5, "y":2}, {"label":"D", "x":6, "y":2}, {"label":"F", "x":7, "y":2}, {"label":"G", "x":8, "y":2}, {"label":"H", "x":9, "y":2}, {"label":"J", "x":10, "y":2}, {"label":"K", "x":11, "y":2}, {"label":"L", "x":12, "y":2}, {"label":":", "x":13, "y":2}, {"label":"\"", "x":14, "y":2}, {"label":"Enter", "x":15, "y":2, "w":2.25}, {"label":"PgDn", "x":17.25, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"label":"Shift", "x":2.25, "y":3, "w":2.25}, {"label":"Z", "x":4.5, "y":3}, {"label":"X", "x":5.5, "y":3}, {"label":"C", "x":6.5, "y":3}, {"label":"V", "x":7.5, "y":3}, {"label":"B", "x":8.5, "y":3}, {"label":"N", "x":9.5, "y":3}, {"label":"M", "x":10.5, "y":3}, {"label":"<", "x":11.5, "y":3}, {"label":">", "x":12.5, "y":3}, {"label":"?", "x":13.5, "y":3}, {"label":"Shift", "x":14.5, "y":3, "w":1.75}, {"label":"\u2191", "x":16.25, "y":3}, {"label":"End", "x":17.25, "y":3}, {"x":0, "y":4}, {"x":1, "y":4}, {"label":"Ctrl", "x":2.25, "y":4, "w":1.5}, {"x":3.75, "y":4}, {"label":"Alt", "x":4.75, "y":4, "w":1.5}, {"label":"7u", "x":6.25, "y":4, "w":7}, {"label":"Ctrl", "x":13.25, "y":4, "w":1.5}, {"label":"\u2190", "x":15.25, "y":4}, {"label":"\u2193", "x":16.25, "y":4}, {"label":"\u2192", "x":17.25, "y":4}] + } + } +} \ No newline at end of file diff --git a/keyboards/rotor/keymaps/default/keymap.c b/keyboards/rotor/keymaps/default/keymap.c new file mode 100644 index 000000000000..05c88d9669c0 --- /dev/null +++ b/keyboards/rotor/keymaps/default/keymap.c @@ -0,0 +1,49 @@ +/* Copyright 2021 Densus Design and Basekeys.jp + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN, + _MEDIA }; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( + KC_F1, KC_F2, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, + KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_FN] = LAYOUT( + _______, _______, 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, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_MEDIA] = LAYOUT( + _______, _______, 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, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/rotor/keymaps/default/rules.mk b/keyboards/rotor/keymaps/default/rules.mk new file mode 100644 index 000000000000..910bd64a5967 --- /dev/null +++ b/keyboards/rotor/keymaps/default/rules.mk @@ -0,0 +1,2 @@ +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no \ No newline at end of file diff --git a/keyboards/rotor/keymaps/default_all/keymap.c b/keyboards/rotor/keymaps/default_all/keymap.c new file mode 100644 index 000000000000..57ea1b84694f --- /dev/null +++ b/keyboards/rotor/keymaps/default_all/keymap.c @@ -0,0 +1,49 @@ +/* Copyright 2021 Densus Design and Basekeys.jp + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN, + _MEDIA }; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_all( + KC_F1, KC_F2, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, + KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT, KC_PGUP, + KC_F7, KC_F8, KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RGUI, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_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, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_MEDIA] = 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, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/rotor/keymaps/default_all/rules.mk b/keyboards/rotor/keymaps/default_all/rules.mk new file mode 100644 index 000000000000..910bd64a5967 --- /dev/null +++ b/keyboards/rotor/keymaps/default_all/rules.mk @@ -0,0 +1,2 @@ +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no \ No newline at end of file diff --git a/keyboards/rotor/keymaps/via/config.h b/keyboards/rotor/keymaps/via/config.h new file mode 100644 index 000000000000..18fc91cdae0b --- /dev/null +++ b/keyboards/rotor/keymaps/via/config.h @@ -0,0 +1,19 @@ +/* Copyright 2021 Densus Design and Basekeys.jp + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define DYNAMIC_KEYMAP_LAYER_COUNT 3 \ No newline at end of file diff --git a/keyboards/rotor/keymaps/via/keymap.c b/keyboards/rotor/keymaps/via/keymap.c new file mode 100644 index 000000000000..3860a50780e5 --- /dev/null +++ b/keyboards/rotor/keymaps/via/keymap.c @@ -0,0 +1,49 @@ +/* Copyright 2020 Swiftrax and Basekeys.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 . + */ + +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN, + _MEDIA }; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_all( + KC_F1, KC_F2, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, + KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT, KC_PGUP, + KC_F7, KC_F8, KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RGUI, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_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, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_MEDIA] = 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, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/rotor/keymaps/via/rules.mk b/keyboards/rotor/keymaps/via/rules.mk new file mode 100644 index 000000000000..32f462d06cac --- /dev/null +++ b/keyboards/rotor/keymaps/via/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no \ No newline at end of file diff --git a/keyboards/rotor/readme.md b/keyboards/rotor/readme.md new file mode 100644 index 000000000000..2fe7f5e494a7 --- /dev/null +++ b/keyboards/rotor/readme.md @@ -0,0 +1,19 @@ +# Rotor + +![Rotor](https://i.imgur.com/NfWdlzF.png) + +A 75 percent keyboard + +* Keyboard Maintainer: [2moons](https://github.com/2moons-jp) +* Hardware Supported: Rotor PCB, ATMEGA32U4-MU +* Hardware Availability: [Website](https://klc-playground.com/) + +Make example for this keyboard (after setting up your build environment): + + make rotor:default + +To flash firmware onto this board, you'll need to bring the PCB into bootloader mode. To enter bootloader mode, press the reset button on the back of the PCB once. The reset button is located near the left side of the board near the TAB key. + +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) + +[Build guide](https://docs.google.com/document/d/1BWUkFYRJ3aB-AY9pEW-9av5j8VWKI2Hmt8xsCFQgDg0/edit) diff --git a/keyboards/rotor/rotor.c b/keyboards/rotor/rotor.c new file mode 100644 index 000000000000..2a21ed9b4ff8 --- /dev/null +++ b/keyboards/rotor/rotor.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Densus Design and Basekeys.jp + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "rotor.h" diff --git a/keyboards/rotor/rotor.h b/keyboards/rotor/rotor.h new file mode 100644 index 000000000000..0a29bc2fe3dd --- /dev/null +++ b/keyboards/rotor/rotor.h @@ -0,0 +1,58 @@ +/* Copyright 2021 Densus Design and Basekeys.jp + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define XXX KC_NO//readabilty + +/* This a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0G, k0H, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1G, k1H, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2G, k2H, \ + k30, k31, k32, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3G, k3H, \ + k40, k41, k42, k43, k44, k48, k4D, k4E, k4G, k4H \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, XXX, k0G, k0H}, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, XXX, k1G, k1H}, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, XXX, XXX, k2G, k2H}, \ + { k30, k31, k32, XXX, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, XXX, k3G, k3H}, \ + { k40, k41, k42, k43, k44, XXX, XXX, XXX, k48, XXX, XXX, XXX, XXX, k4D, k4E, XXX, k4G, k4H} \ +} + +#define LAYOUT_all( \ + 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, k1G, k1H, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2G, k2H, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3G, k3H, \ + k40, k41, k42, k43, k44, k46, k48, k4A, k4C, k4D, k4E, k4G, k4H \ +) \ +{ \ + { 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, XXX, k1G, k1H}, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, XXX, k2G, k2H}, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, XXX, k3G, k3H}, \ + { k40, k41, k42, k43, k44, XXX, k46, XXX, k48, XXX, k4A, XXX, k4C, k4D, k4E, XXX, k4G, k4H} \ +} diff --git a/keyboards/rotor/rules.mk b/keyboards/rotor/rules.mk new file mode 100644 index 000000000000..5a4811cd656d --- /dev/null +++ b/keyboards/rotor/rules.mk @@ -0,0 +1,19 @@ +# 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 = yes # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/rotr/info.json b/keyboards/rotr/info.json index b95e8cedeece..cf3113b49695 100644 --- a/keyboards/rotr/info.json +++ b/keyboards/rotr/info.json @@ -2,8 +2,6 @@ "keyboard_name": "rotr", "url": "https://geekhack.org/index.php?topic=107104.0", "maintainer": "qmk", - "width": 3, - "height": 1, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}] diff --git a/keyboards/rotr/rules.mk b/keyboards/rotr/rules.mk index 6f93f044e985..1c8eb2f1ee37 100644 --- a/keyboards/rotr/rules.mk +++ b/keyboards/rotr/rules.mk @@ -2,30 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes # Enables Rotary Encoder support diff --git a/keyboards/rpiguy9907/southpaw66/config.h b/keyboards/rpiguy9907/southpaw66/config.h index 242b4a7c449b..b5cef39a6f18 100644 --- a/keyboards/rpiguy9907/southpaw66/config.h +++ b/keyboards/rpiguy9907/southpaw66/config.h @@ -18,8 +18,8 @@ #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x6077 +#define VENDOR_ID 0x9907 // "9907" - rpiguy9907 +#define PRODUCT_ID 0x5366 // "S" "66" #define DEVICE_VER 0x0001 #define MANUFACTURER rpiguy9907 #define PRODUCT Southpaw66 diff --git a/keyboards/rpiguy9907/southpaw66/info.json b/keyboards/rpiguy9907/southpaw66/info.json index 80d78a5d98e0..ae9e1d4c672a 100644 --- a/keyboards/rpiguy9907/southpaw66/info.json +++ b/keyboards/rpiguy9907/southpaw66/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Southpaw66", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { diff --git a/keyboards/rpiguy9907/southpaw66/rules.mk b/keyboards/rpiguy9907/southpaw66/rules.mk index 9ea17f062d9b..f232b3f03eaa 100644 --- a/keyboards/rpiguy9907/southpaw66/rules.mk +++ b/keyboards/rpiguy9907/southpaw66/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LTO_ENABLE = yes diff --git a/keyboards/rubi/info.json b/keyboards/rubi/info.json index 72b6242fcd8a..2ee76f3fdd3d 100644 --- a/keyboards/rubi/info.json +++ b/keyboards/rubi/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Rubi", "url": "https://github.com/ohchiko/qmk_firmware/tree/master/keyboards/rubi", "maintainer": "gregorio", - "width": 4, - "height": 5, "layouts": { "LAYOUT": { "layout": [ @@ -28,4 +26,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/rubi/lib/oled.c b/keyboards/rubi/lib/oled.c index d48d27323c63..9534cdd9b79b 100644 --- a/keyboards/rubi/lib/oled.c +++ b/keyboards/rubi/lib/oled.c @@ -239,7 +239,8 @@ void render_frame(void) { } } -__attribute__((weak)) void oled_task_user(void) { +bool oled_task_kb(void) { + if (!oled_task_user()) { return false; } if (timer_elapsed(oled_frame_timer) > OLED_FRAME_TIMEOUT) { oled_clear(); oled_frame_timer = timer_read(); @@ -259,9 +260,10 @@ __attribute__((weak)) void oled_task_user(void) { } else { oled_mode = OLED_MODE_DEFAULT; } + return false; } -oled_rotation_t oled_init_user(oled_rotation_t rotation) { +oled_rotation_t oled_init_kb(oled_rotation_t rotation) { oled_logo_timer = timer_read(); oled_frame_timer = timer_read(); return rotation; diff --git a/keyboards/rubi/rules.mk b/keyboards/rubi/rules.mk index 59ba4ffa1971..96a80f4c3516 100644 --- a/keyboards/rubi/rules.mk +++ b/keyboards/rubi/rules.mk @@ -7,20 +7,18 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 ENCODER_ENABLE = yes SRC += lib/oled.c \ diff --git a/keyboards/runes/vaengr/config.h b/keyboards/runes/vaengr/config.h new file mode 100644 index 000000000000..4f66a4d38d1e --- /dev/null +++ b/keyboards/runes/vaengr/config.h @@ -0,0 +1,147 @@ +/* +Copyright 2021 Vicktor + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x726E +#define PRODUCT_ID 0x7661 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Rune +#define PRODUCT Vængr + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 12 + +/* + * 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 { C7, E6, D5, B3, B7 } +#define MATRIX_COL_PINS { D4, D6, D7, B4, B5, B6, F7, F6, F5, F4, F1, F0 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +// #define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +//#define LED_NUM_LOCK_PIN B0 +//#define LED_CAPS_LOCK_PIN B1 +//#define LED_SCROLL_LOCK_PIN B2 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +// #define BACKLIGHT_PIN +// #define BACKLIGHT_LEVELS 3 +// #define BACKLIGHT_BREATHING + +#define RGB_DI_PIN D3 +// #define RGB_DI_PIN B0 +#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 3 +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 17 +#define RGBLIGHT_VAL_STEP 17 +// # define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + + +/* 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). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/runes/vaengr/info.json b/keyboards/runes/vaengr/info.json new file mode 100644 index 000000000000..53619a78685c --- /dev/null +++ b/keyboards/runes/vaengr/info.json @@ -0,0 +1,70 @@ +{ + "keyboard_name": "Runes Vængr", + "url": "https://www.runes.id", + "maintainer": "Vicktor", + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "K00", "x": 0, "y": 0}, + {"label": "K10", "x": 1, "y": 0}, + {"label": "K20", "x": 2, "y": 0}, + {"label": "K30", "x": 3, "y": 0}, + {"label": "K40", "x": 4, "y": 0}, + {"label": "K50", "x": 5, "y": 0}, + {"label": "K60", "x": 6, "y": 0}, + {"label": "K70", "x": 7, "y": 0}, + {"label": "K80", "x": 8, "y": 0}, + {"label": "K90", "x": 9, "y": 0}, + {"label": "K100", "x": 10, "y": 0}, + {"label": "K110", "x": 11, "y": 0}, + {"label": "K01", "x": 0, "y": 1}, + {"label": "K11", "x": 1, "y": 1}, + {"label": "K21", "x": 2, "y": 1}, + {"label": "K31", "x": 3, "y": 1}, + {"label": "K41", "x": 4, "y": 1}, + {"label": "K51", "x": 5, "y": 1}, + {"label": "K61", "x": 6, "y": 1}, + {"label": "K71", "x": 7, "y": 1}, + {"label": "K81", "x": 8, "y": 1}, + {"label": "K91", "x": 9, "y": 1}, + {"label": "K101", "x": 10, "y": 1}, + {"label": "K111", "x": 11, "y": 1}, + {"label": "K02", "x": 0, "y": 2}, + {"label": "K12", "x": 1, "y": 2}, + {"label": "K22", "x": 2, "y": 2}, + {"label": "K32", "x": 3, "y": 2}, + {"label": "K42", "x": 4, "y": 2}, + {"label": "K52", "x": 5, "y": 2}, + {"label": "K62", "x": 6, "y": 2}, + {"label": "K72", "x": 7, "y": 2}, + {"label": "K82", "x": 8, "y": 2}, + {"label": "K92", "x": 9, "y": 2}, + {"label": "K102", "x": 10, "y": 2}, + {"label": "K112", "x": 11, "y": 2}, + {"label": "K03", "x": 0, "y": 3}, + {"label": "K13", "x": 1, "y": 3}, + {"label": "K23", "x": 2, "y": 3}, + {"label": "K33", "x": 3, "y": 3}, + {"label": "K43", "x": 4, "y": 3}, + {"label": "K53", "x": 5, "y": 3}, + {"label": "K63", "x": 6, "y": 3}, + {"label": "K73", "x": 7, "y": 3}, + {"label": "K83", "x": 8, "y": 3}, + {"label": "K93", "x": 9, "y": 3}, + {"label": "K103", "x": 10, "y": 3}, + {"label": "K113", "x": 11, "y": 3}, + {"label": "K04", "x": 0, "y": 4}, + {"label": "K14", "x": 1, "y": 4}, + {"label": "K24", "x": 2, "y": 4}, + {"label": "K34", "x": 3, "y": 4}, + {"label": "K44", "x": 4, "y": 4}, + {"label": "K54", "x": 5, "y": 4, "w":2}, + {"label": "K74", "x": 7, "y": 4}, + {"label": "K84", "x": 8, "y": 4}, + {"label": "K94", "x": 9, "y": 4}, + {"label": "K104", "x": 10, "y": 4}, + {"label": "K114", "x": 11, "y": 4} + ] + } + } +} diff --git a/keyboards/runes/vaengr/keymaps/default/keymap.c b/keyboards/runes/vaengr/keymaps/default/keymap.c new file mode 100644 index 000000000000..5bd2f1219928 --- /dev/null +++ b/keyboards/runes/vaengr/keymaps/default/keymap.c @@ -0,0 +1,56 @@ +/* Copyright 2021 Vicktor + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _LOWER, + _RAISE, + _DOUBLE, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // /* Base */ + + [_BASE] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_ENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_GRV, MO(1), KC_SPC, MO(2), KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT), + + [_LOWER] = LAYOUT( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + KC_TRNS, KC_PGUP, KC_HOME, KC_DEL, KC_BSPC, KC_TRNS, KC_TRNS, KC_UNDS, KC_PLUS, KC_MINS, KC_EQL, KC_BSLS, + KC_TRNS, KC_PGDN, KC_END, KC_ENT, KC_TRNS, KC_TRNS, KC_TRNS, KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_PIPE, + KC_TRNS, KC_PSCR, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, KC_MSTP, KC_MPRV, KC_MNXT, KC_SLCK, KC_PAUS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + [_RAISE] = LAYOUT( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, KC_NLCK, KC_P7, KC_P8, KC_P9, KC_TRNS, + KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS, KC_PMNS, KC_P4, KC_P5, KC_P6, KC_TRNS, + KC_TRNS, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_TRNS, KC_PAST, KC_P1, KC_P2, KC_P3, KC_PPLS, + KC_TRNS, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_TRNS, KC_PSLS, KC_P0, KC_PDOT, KC_PEQL, KC_PENT, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + [_DOUBLE] = LAYOUT( + KC_SLEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, RGB_MODE_FORWARD, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; diff --git a/keyboards/runes/vaengr/keymaps/default/readme.md b/keyboards/runes/vaengr/keymaps/default/readme.md new file mode 100644 index 000000000000..3a5339cfa811 --- /dev/null +++ b/keyboards/runes/vaengr/keymaps/default/readme.md @@ -0,0 +1,13 @@ +# The default keymap for Vængr + +Layer 0 (Default): +![Layer 0](https://i.imgur.com/0g3Iw2q.png) + +Layer 1: +![Layer 1](https://i.imgur.com/i1qYu4P.png) + +Layer 2: +![Layer 2](https://i.imgur.com/oGo0Iss.png) + +Layer 3: +![Layer 3](https://i.imgur.com/tOjiGn3.png) \ No newline at end of file diff --git a/keyboards/runes/vaengr/keymaps/via/keymap.c b/keyboards/runes/vaengr/keymaps/via/keymap.c new file mode 100644 index 000000000000..5bd2f1219928 --- /dev/null +++ b/keyboards/runes/vaengr/keymaps/via/keymap.c @@ -0,0 +1,56 @@ +/* Copyright 2021 Vicktor + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _LOWER, + _RAISE, + _DOUBLE, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // /* Base */ + + [_BASE] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_ENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_GRV, MO(1), KC_SPC, MO(2), KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT), + + [_LOWER] = LAYOUT( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + KC_TRNS, KC_PGUP, KC_HOME, KC_DEL, KC_BSPC, KC_TRNS, KC_TRNS, KC_UNDS, KC_PLUS, KC_MINS, KC_EQL, KC_BSLS, + KC_TRNS, KC_PGDN, KC_END, KC_ENT, KC_TRNS, KC_TRNS, KC_TRNS, KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_PIPE, + KC_TRNS, KC_PSCR, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, KC_MSTP, KC_MPRV, KC_MNXT, KC_SLCK, KC_PAUS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + [_RAISE] = LAYOUT( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, KC_NLCK, KC_P7, KC_P8, KC_P9, KC_TRNS, + KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS, KC_PMNS, KC_P4, KC_P5, KC_P6, KC_TRNS, + KC_TRNS, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_TRNS, KC_PAST, KC_P1, KC_P2, KC_P3, KC_PPLS, + KC_TRNS, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_TRNS, KC_PSLS, KC_P0, KC_PDOT, KC_PEQL, KC_PENT, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + [_DOUBLE] = LAYOUT( + KC_SLEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, RGB_MODE_FORWARD, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; diff --git a/keyboards/runes/vaengr/keymaps/via/rules.mk b/keyboards/runes/vaengr/keymaps/via/rules.mk new file mode 100644 index 000000000000..43061db1dd46 --- /dev/null +++ b/keyboards/runes/vaengr/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/runes/vaengr/readme.md b/keyboards/runes/vaengr/readme.md new file mode 100644 index 000000000000..54e3b801761a --- /dev/null +++ b/keyboards/runes/vaengr/readme.md @@ -0,0 +1,23 @@ +# Vængr + +![Vængr](https://i.imgur.com/bwN7SzF.jpg) + +Vængr [/ˈwɛ̃ːŋɡr̩/] (Old Norse: Wings) + +5x12 hotswap ortholinear keyboard based on atmega32u4 mcu. + +* Keyboard Maintainer: [Vicktor](https://github.com/vicktorhu) +* Hardware Supported: atmega32u4 +* Hardware Availability: [Website](https://www.runes.id) -- Currently Indonesia only + +Reset the keyboard with **Lower** + **Upper** + **Del** or by pressing the reset button on the PCB. + +Make example for this keyboard (after setting up your build environment): + + make vaengr:default + +Flashing example for this keyboard: + + make vaengr:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/runes/vaengr/rules.mk b/keyboards/runes/vaengr/rules.mk new file mode 100644 index 000000000000..0c9204de9e69 --- /dev/null +++ b/keyboards/runes/vaengr/rules.mk @@ -0,0 +1,19 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 diff --git a/keyboards/runes/vaengr/vaengr.c b/keyboards/runes/vaengr/vaengr.c new file mode 100644 index 000000000000..7bea621495da --- /dev/null +++ b/keyboards/runes/vaengr/vaengr.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Vicktor + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "vaengr.h" diff --git a/keyboards/runes/vaengr/vaengr.h b/keyboards/runes/vaengr/vaengr.h new file mode 100644 index 000000000000..985867a93996 --- /dev/null +++ b/keyboards/runes/vaengr/vaengr.h @@ -0,0 +1,41 @@ +/* Copyright 2021 Vicktor + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K010, K011, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K310, K311, \ + K40, K41, K42, K43, K44, K45, K47, K48, K49, K410, K411 \ +) { \ + {K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K010, K011 }, \ + {K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111 }, \ + {K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211 }, \ + {K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K310, K311 }, \ + {K40, K41, K42, K43, K44, K45, KC_NO, K47, K48, K49, K410, K411 } \ +} diff --git a/keyboards/runner3680/3x6/info.json b/keyboards/runner3680/3x6/info.json index b9a802349f98..c54fe4610663 100644 --- a/keyboards/runner3680/3x6/info.json +++ b/keyboards/runner3680/3x6/info.json @@ -2,8 +2,6 @@ "keyboard_name": "runner3680 3x6", "url": "", "maintainer": "omkbd", - "width": 13, - "height": 3, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/runner3680/3x7/info.json b/keyboards/runner3680/3x7/info.json index 55b9e6dd027c..1a5ac8221e2c 100644 --- a/keyboards/runner3680/3x7/info.json +++ b/keyboards/runner3680/3x7/info.json @@ -2,8 +2,6 @@ "keyboard_name": "runner3680 3x7", "url": "", "maintainer": "omkbd", - "width": 15, - "height": 3, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/runner3680/3x8/info.json b/keyboards/runner3680/3x8/info.json index 55a4da4bcf91..d8e71f97e04a 100644 --- a/keyboards/runner3680/3x8/info.json +++ b/keyboards/runner3680/3x8/info.json @@ -2,8 +2,6 @@ "keyboard_name": "runner3680 3x8", "url": "", "maintainer": "omkbd", - "width": 17, - "height": 3, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/runner3680/4x6/info.json b/keyboards/runner3680/4x6/info.json index 2109d01aee60..41ea3e006172 100644 --- a/keyboards/runner3680/4x6/info.json +++ b/keyboards/runner3680/4x6/info.json @@ -2,8 +2,6 @@ "keyboard_name": "runner3680 4x6", "url": "", "maintainer": "omkbd", - "width": 13, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/runner3680/4x7/info.json b/keyboards/runner3680/4x7/info.json index f066d85534a4..43876dd57e67 100644 --- a/keyboards/runner3680/4x7/info.json +++ b/keyboards/runner3680/4x7/info.json @@ -2,8 +2,6 @@ "keyboard_name": "runner3680 4x7", "url": "", "maintainer": "omkbd", - "width": 15, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/runner3680/4x8/info.json b/keyboards/runner3680/4x8/info.json index 644049308240..4502a86404ba 100644 --- a/keyboards/runner3680/4x8/info.json +++ b/keyboards/runner3680/4x8/info.json @@ -2,8 +2,6 @@ "keyboard_name": "runner3680 4x8", "url": "", "maintainer": "omkbd", - "width": 17, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/runner3680/5x6/info.json b/keyboards/runner3680/5x6/info.json index 5840556ffd3f..02c65ec7cce9 100644 --- a/keyboards/runner3680/5x6/info.json +++ b/keyboards/runner3680/5x6/info.json @@ -2,8 +2,6 @@ "keyboard_name": "runner3680 5x6", "url": "", "maintainer": "omkbd", - "width": 13, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/runner3680/5x7/info.json b/keyboards/runner3680/5x7/info.json index 6ccb24612066..c60177d38c92 100644 --- a/keyboards/runner3680/5x7/info.json +++ b/keyboards/runner3680/5x7/info.json @@ -2,8 +2,6 @@ "keyboard_name": "runner3680 5x7", "url": "", "maintainer": "omkbd", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/runner3680/5x8/info.json b/keyboards/runner3680/5x8/info.json index 6c2f386febe9..70e3cc783366 100644 --- a/keyboards/runner3680/5x8/info.json +++ b/keyboards/runner3680/5x8/info.json @@ -2,8 +2,6 @@ "keyboard_name": "runner3680 5x8", "url": "", "maintainer": "omkbd", - "width": 17, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/runner3680/5x8/keymaps/JIS/keymap.c b/keyboards/runner3680/5x8/keymaps/JIS/keymap.c index 1b39cf08ef7e..75ff755651fa 100644 --- a/keyboards/runner3680/5x8/keymaps/JIS/keymap.c +++ b/keyboards/runner3680/5x8/keymaps/JIS/keymap.c @@ -39,7 +39,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-------------------------------------------------------' `-------------------------------------------------------' */ [_QWERTY] = LAYOUT( - RGBRST , RGB_TOG, JP_ZHTG, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, JP_CIRC, JP_YEN, + RGBRST , RGB_TOG, JP_ZKHK, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, JP_CIRC, JP_YEN, RGB_MOD, RGB_SAI, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_AT, JP_LBRC, KC_BSPC, RGB_SAI, RGB_SAD, KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, JP_COLN, JP_RBRC, KC_ENT, RGB_VAI, RGB_VAD, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, JP_BSLS, KC_UP, KC_RSFT, diff --git a/keyboards/runner3680/rules.mk b/keyboards/runner3680/rules.mk index f071b7a161da..67677c810306 100644 --- a/keyboards/runner3680/rules.mk +++ b/keyboards/runner3680/rules.mk @@ -2,33 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = yes # Enables split keyboard support diff --git a/keyboards/ryanbaekr/rb86/config.h b/keyboards/ryanbaekr/rb86/config.h new file mode 100644 index 000000000000..ec93c2b3c577 --- /dev/null +++ b/keyboards/ryanbaekr/rb86/config.h @@ -0,0 +1,96 @@ +/* +Copyright 2021 ryanbaekr + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7262 +#define PRODUCT_ID 0x0086 +#define DEVICE_VER 0x0002 +#define MANUFACTURER ryanbaekr +#define PRODUCT rb86 + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 17 + +/* + * 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, D7 } +#define MATRIX_COL_PINS { B6, B5, D5, C7, F1, F0, D3, D2, D1, D0, D4, E6, B7, C6, F4, F5, F6 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +//#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + + + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is userful for the Windows task manager shortcut (ctrl+shift+esc). + */ +// #define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/ryanbaekr/rb86/info.json b/keyboards/ryanbaekr/rb86/info.json new file mode 100644 index 000000000000..42cf9e2aa114 --- /dev/null +++ b/keyboards/ryanbaekr/rb86/info.json @@ -0,0 +1,13 @@ +{ + "keyboard_name": "rb86", + "url": "", + "maintainer": "qmk", + "layout_aliases": { + "LAYOUT_numpad_6x17": "LAYOUT" + }, + "layouts": { + "LAYOUT": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":4, "y":1.25}, {"x":5, "y":1.25}, {"x":6, "y":1.25}, {"x":7, "y":1.25}, {"x":8, "y":1.25}, {"x":9, "y":1.25}, {"x":10, "y":1.25}, {"x":11, "y":1.25}, {"x":12, "y":1.25}, {"x":13, "y":1.25, "w":2}, {"x":15.25, "y":1.25}, {"x":16.25, "y":1.25}, {"x":0, "y":2.25, "w":1.5}, {"x":1.5, "y":2.25}, {"x":2.5, "y":2.25}, {"x":3.5, "y":2.25}, {"x":4.5, "y":2.25}, {"x":5.5, "y":2.25}, {"x":6.5, "y":2.25}, {"x":7.5, "y":2.25}, {"x":8.5, "y":2.25}, {"x":9.5, "y":2.25}, {"x":10.5, "y":2.25}, {"x":11.5, "y":2.25}, {"x":12.5, "y":2.25}, {"x":13.5, "y":2.25, "w":1.5}, {"x":15.25, "y":2.25}, {"x":16.25, "y":2.25}, {"x":0, "y":3.25, "w":1.75}, {"x":1.75, "y":3.25}, {"x":2.75, "y":3.25}, {"x":3.75, "y":3.25}, {"x":4.75, "y":3.25}, {"x":5.75, "y":3.25}, {"x":6.75, "y":3.25}, {"x":7.75, "y":3.25}, {"x":8.75, "y":3.25}, {"x":9.75, "y":3.25}, {"x":10.75, "y":3.25}, {"x":11.75, "y":3.25}, {"x":12.75, "y":3.25, "w":2.25}, {"x":0, "y":4.25, "w":2.25}, {"x":2.25, "y":4.25}, {"x":3.25, "y":4.25}, {"x":4.25, "y":4.25}, {"x":5.25, "y":4.25}, {"x":6.25, "y":4.25}, {"x":7.25, "y":4.25}, {"x":8.25, "y":4.25}, {"x":9.25, "y":4.25}, {"x":10.25, "y":4.25}, {"x":11.25, "y":4.25}, {"x":12.25, "y":4.25, "w":2.75}, {"x":15.25, "y":4.25}, {"x":0, "y":5.25}, {"x":1, "y":5.25}, {"x":2, "y":5.25}, {"x":3, "y":5.25}, {"x":4, "y":5.25, "w":6.25}, {"x":10.25, "y":5.25, "w":1.25}, {"x":11.5, "y":5.25, "w":1.25}, {"x":12.75, "y":5.25, "w":1.25}, {"x":14.25, "y":5.25}, {"x":15.25, "y":5.25}, {"x":16.25, "y":5.25}] + } + } +} diff --git a/keyboards/ryanbaekr/rb86/keymaps/default/keymap.c b/keyboards/ryanbaekr/rb86/keymaps/default/keymap.c new file mode 100644 index 000000000000..41b1b88469ed --- /dev/null +++ b/keyboards/ryanbaekr/rb86/keymaps/default/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2021 ryanbaekr + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_HOME, KC_END, KC_PSCR, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, TG(1), KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_F13, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SLCK, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/ryanbaekr/rb86/keymaps/default/readme.md b/keyboards/ryanbaekr/rb86/keymaps/default/readme.md new file mode 100644 index 000000000000..81c91e2296d7 --- /dev/null +++ b/keyboards/ryanbaekr/rb86/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for rb86 diff --git a/keyboards/ryanbaekr/rb86/keymaps/via/keymap.c b/keyboards/ryanbaekr/rb86/keymaps/via/keymap.c new file mode 100644 index 000000000000..e28bfa5e6d6a --- /dev/null +++ b/keyboards/ryanbaekr/rb86/keymaps/via/keymap.c @@ -0,0 +1,54 @@ +/* Copyright 2021 ryanbaekr + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_HOME, KC_END, KC_PSCR, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, TG(1), KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_F13, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SLCK, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/ryanbaekr/rb86/keymaps/via/rules.mk b/keyboards/ryanbaekr/rb86/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/ryanbaekr/rb86/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/ryanbaekr/rb86/rb86.c b/keyboards/ryanbaekr/rb86/rb86.c new file mode 100644 index 000000000000..b3375cb4fcff --- /dev/null +++ b/keyboards/ryanbaekr/rb86/rb86.c @@ -0,0 +1,17 @@ +/* Copyright 2021 ryanbaekr + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "rb86.h" diff --git a/keyboards/ryanbaekr/rb86/rb86.h b/keyboards/ryanbaekr/rb86/rb86.h new file mode 100644 index 000000000000..29f5a82f8360 --- /dev/null +++ b/keyboards/ryanbaekr/rb86/rb86.h @@ -0,0 +1,37 @@ +/* Copyright 2021 ryanbaekr + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ____ KC_NO + +#define LAYOUT( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, \ + k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k114, k115, k116, \ + k200, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, k216, \ + k300, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, \ + k401, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k413, k415, \ + k500, k501, k502, k503, k507, k510, k512, k513, k514, k515, k516 \ +){ \ + { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016 }, \ + { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, ____, k114, k115, k116 }, \ + { k200, ____, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, k216 }, \ + { k300, ____, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, ____, ____, ____ }, \ + { ____, k401, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, ____, k413, ____, k415, ____ }, \ + { k500, k501, k502, k503, ____, ____, ____, k507, ____, ____, k510, ____, k512, k513, k514, k515, k516 } \ +} diff --git a/keyboards/ryanbaekr/rb86/readme.md b/keyboards/ryanbaekr/rb86/readme.md new file mode 100644 index 000000000000..36a8c6318341 --- /dev/null +++ b/keyboards/ryanbaekr/rb86/readme.md @@ -0,0 +1,15 @@ +# rb86 + +A diy sandwich compact TKL keyboard. + +* Keyboard Maintainer: [ryanbaekr](https://github.com/ryanbaekr) +* Hardware Supported: rb86 with Elite-C +* Hardware Availability: 2021/05/15 + +Make example for this keyboard (after setting up your build environment): + + make ryanbaekr/rb86:default + +To boot into the bootloader, hold the reset button on the Elite-C on plug in + +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/ryanbaekr/rb86/rules.mk b/keyboards/ryanbaekr/rb86/rules.mk new file mode 100644 index 000000000000..3c961f9c2ab9 --- /dev/null +++ b/keyboards/ryanbaekr/rb86/rules.mk @@ -0,0 +1,19 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# 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 = yes # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/ryloo_studio/m0110/info.json b/keyboards/ryloo_studio/m0110/info.json index 5ae15b5c6d57..10917cb3ec71 100644 --- a/keyboards/ryloo_studio/m0110/info.json +++ b/keyboards/ryloo_studio/m0110/info.json @@ -2,8 +2,6 @@ "keyboard_name": "M0110", "url": "https://drop.com/buy/ryloo-studio-hello-m0110-mechanical-keyboard-kit", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/ryloo_studio/m0110/rules.mk b/keyboards/ryloo_studio/m0110/rules.mk index ec85ce10e051..17842a62b323 100755 --- a/keyboards/ryloo_studio/m0110/rules.mk +++ b/keyboards/ryloo_studio/m0110/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LAYOUTS = 60_ansi 60_hhkb diff --git a/keyboards/sam/s80/info.json b/keyboards/sam/s80/info.json index c6dc769d532e..af109e17879d 100644 --- a/keyboards/sam/s80/info.json +++ b/keyboards/sam/s80/info.json @@ -2,8 +2,6 @@ "keyboard_name": "s80 wkl", "url": "", "maintainer": "qmk", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/sam/s80/rules.mk b/keyboards/sam/s80/rules.mk index e2f9c83102c3..1f44da3ea6c9 100644 --- a/keyboards/sam/s80/rules.mk +++ b/keyboards/sam/s80/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/sam/sg81m/config.h b/keyboards/sam/sg81m/config.h index 5e1d042b6c04..a0dca8921121 100644 --- a/keyboards/sam/sg81m/config.h +++ b/keyboards/sam/sg81m/config.h @@ -44,7 +44,7 @@ #define DIODE_DIRECTION COL2ROW -#define RGB_DI_PIN E6 //reserved pin for potential underglow rgb +#define RGB_DI_PIN E6 //reserved pin for potential underglow rgb #ifdef RGB_DI_PIN #define RGBLED_NUM 10 #define RGBLIGHT_HUE_STEP 8 @@ -65,6 +65,3 @@ // #define RGBLIGHT_EFFECT_RGB_TEST // #define RGBLIGHT_EFFECT_ALTERNATING #endif - -// generated by KBFirmware JSON to QMK Parser -// https://noroadsleft.github.io/kbf_qmk_converter/ diff --git a/keyboards/sam/sg81m/info.json b/keyboards/sam/sg81m/info.json index 4b35f4492fea..439d8562e9eb 100644 --- a/keyboards/sam/sg81m/info.json +++ b/keyboards/sam/sg81m/info.json @@ -2,10 +2,8 @@ "keyboard_name": "sam sg81m", "url": "", "maintainer": "CMMS-Freather", - "width": 18.5, - "height": 5.5, "layouts": { - "LAYOUT": { + "LAYOUT_7u_space": { "layout": [ {"label":"K00 (F0,B7)", "x":0, "y":0}, {"label":"K01 (F0,B6)", "x":1, "y":0}, @@ -89,6 +87,94 @@ {"label":"K59 (F7,D3)", "x":16.5, "y":4.25}, {"label":"K5A (F7,D4)", "x":17.5, "y":4.25} ] + + }, + "LAYOUT_6_25u_space": { + "layout": [ + {"label":"K00 (F0,B7)", "x":0, "y":0}, + {"label":"K01 (F0,B6)", "x":1, "y":0}, + {"label":"K02 (F0,B5)", "x":2, "y":0}, + {"label":"K03 (F0,B4)", "x":3, "y":0}, + {"label":"K04 (F0,C7)", "x":4, "y":0}, + {"label":"K05 (F0,C6)", "x":5, "y":0}, + {"label":"K06 (F0,D0)", "x":6, "y":0}, + {"label":"K07 (F0,D1)", "x":7, "y":0}, + {"label":"K08 (F0,D2)", "x":8, "y":0}, + {"label":"K09 (F0,D3)", "x":9, "y":0}, + {"label":"K0A (F0,D4)", "x":10, "y":0}, + {"label":"K0B (F0,D5)", "x":11, "y":0}, + {"label":"K0C (F0,D6)", "x":12, "y":0}, + {"label":"K0D (F0,D7)", "x":13, "y":0, "w":2}, + {"label":"K2D (F4,D7)", "x":15.5, "y":0}, + {"label":"K3D (F5,D7)", "x":16.5, "y":0}, + {"label":"K4D (F6,D7)", "x":17.5, "y":0}, + + {"label":"K10 (F1,B7)", "x":0, "y":1.25, "w":1.5}, + {"label":"K11 (F1,B6)", "x":1.5, "y":1.25}, + {"label":"K12 (F1,B5)", "x":2.5, "y":1.25}, + {"label":"K13 (F1,B4)", "x":3.5, "y":1.25}, + {"label":"K14 (F1,C7)", "x":4.5, "y":1.25}, + {"label":"K15 (F1,C6)", "x":5.5, "y":1.25}, + {"label":"K16 (F1,D0)", "x":6.5, "y":1.25}, + {"label":"K17 (F1,D1)", "x":7.5, "y":1.25}, + {"label":"K18 (F1,D2)", "x":8.5, "y":1.25}, + {"label":"K19 (F1,D3)", "x":9.5, "y":1.25}, + {"label":"K1A (F1,D4)", "x":10.5, "y":1.25}, + {"label":"K1B (F1,D5)", "x":11.5, "y":1.25}, + {"label":"K1C (F1,D6)", "x":12.5, "y":1.25}, + {"label":"K1D (F1,D7)", "x":13.5, "y":1.25, "w":1.5}, + {"label":"K56 (F7,D0)", "x":15.5, "y":1.25}, + {"label":"K57 (F7,D1)", "x":16.5, "y":1.25}, + {"label":"K58 (F7,D2)", "x":17.5, "y":1.25}, + + {"label":"K20 (F4,B7)", "x":0, "y":2.25, "w":1.75}, + {"label":"K21 (F4,B6)", "x":1.75, "y":2.25}, + {"label":"K22 (F4,B5)", "x":2.75, "y":2.25}, + {"label":"K23 (F4,B4)", "x":3.75, "y":2.25}, + {"label":"K24 (F4,C7)", "x":4.75, "y":2.25}, + {"label":"K25 (F4,C6)", "x":5.75, "y":2.25}, + {"label":"K26 (F4,D0)", "x":6.75, "y":2.25}, + {"label":"K27 (F4,D1)", "x":7.75, "y":2.25}, + {"label":"K28 (F4,D2)", "x":8.75, "y":2.25}, + {"label":"K29 (F4,D3)", "x":9.75, "y":2.25}, + {"label":"K2A (F4,D4)", "x":10.75, "y":2.25}, + {"label":"K2B (F4,D5)", "x":11.75, "y":2.25}, + {"label":"K2C (F4,D6)", "x":12.75, "y":2.25, "w":2.25}, + {"label":"K53 (F7,B4)", "x":15.5, "y":2.25}, + {"label":"K54 (F7,C7)", "x":16.5, "y":2.25}, + {"label":"K55 (F7,C6)", "x":17.5, "y":2.25}, + + {"label":"K30 (F5,B7)", "x":0, "y":3.25, "w":2.25}, + {"label":"K31 (F5,B6)", "x":2.25, "y":3.25}, + {"label":"K32 (F5,B5)", "x":3.25, "y":3.25}, + {"label":"K33 (F5,B4)", "x":4.25, "y":3.25}, + {"label":"K34 (F5,C7)", "x":5.25, "y":3.25}, + {"label":"K35 (F5,C6)", "x":6.25, "y":3.25}, + {"label":"K36 (F5,D0)", "x":7.25, "y":3.25}, + {"label":"K37 (F5,D1)", "x":8.25, "y":3.25}, + {"label":"K38 (F5,D2)", "x":9.25, "y":3.25}, + {"label":"K39 (F5,D3)", "x":10.25, "y":3.25}, + {"label":"K3A (F5,D4)", "x":11.25, "y":3.25}, + {"label":"K3B (F5,D5)", "x":12.25, "y":3.25, "w":1.75}, + {"label":"K3C (F5,D6)", "x":14.25, "y":3.5}, + {"label":"K50 (F7,B7)", "x":15.5, "y":3.25}, + {"label":"K51 (F7,B6)", "x":16.5, "y":3.25}, + {"label":"K52 (F7,B5)", "x":17.5, "y":3.25}, + + {"label":"K40 (F6,B7)", "x":0, "y":4.25, "w":1.25}, + {"label":"K41 (F6,B6)", "x":1.25, "y":4.25, "w":1.25}, + {"label":"K42 (F6,B5)", "x":2.5, "y":4.25, "w":1.25}, + {"label":"K45 (F6,C6)", "x":3.75, "y":4.25, "w":6.25}, + {"label":"K47 (F6,D1)", "x":10, "y":4.25}, + {"label":"K48 (F6,D2)", "x":11, "y":4.25}, + {"label":"K49 (F6,D3)", "x":12, "y":4.25}, + {"label":"K4A (F6,D4)", "x":13.25, "y":4.5}, + {"label":"K4B (F6,D5)", "x":14.25, "y":4.5}, + {"label":"K4C (F6,D6)", "x":15.25, "y":4.5}, + {"label":"K59 (F7,D3)", "x":16.5, "y":4.25}, + {"label":"K5A (F7,D4)", "x":17.5, "y":4.25} + ] + } } } diff --git a/keyboards/sam/sg81m/rules.mk b/keyboards/sam/sg81m/rules.mk index b7b60cb1f080..cafee144c6b1 100644 --- a/keyboards/sam/sg81m/rules.mk +++ b/keyboards/sam/sg81m/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/sam/sg81m/sg81m.h b/keyboards/sam/sg81m/sg81m.h index 73e69e439cd1..d128adf7464d 100644 --- a/keyboards/sam/sg81m/sg81m.h +++ b/keyboards/sam/sg81m/sg81m.h @@ -18,7 +18,7 @@ #include "quantum.h" -#define LAYOUT( \ +#define LAYOUT_7u_space( \ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, K3D, K4D, \ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K56, K57, K58, \ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K53, K54, K55, \ @@ -33,5 +33,19 @@ { K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, KC_NO, KC_NO, KC_NO }, \ } -// generated by KBFirmware JSON to QMK Parser -// https://noroadsleft.github.io/kbf_qmk_converter/ +#define LAYOUT_6_25u_space( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, K3D, K4D, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K56, K57, K58, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K53, K54, K55, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K50, K51, K52, \ + K40, K41, K42, K45, K47, K48, K49, K4A, K4B, K4C, K59, 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, 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 }, \ + { K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, KC_NO, KC_NO, KC_NO }, \ +} + +#define LAYOUT LAYOUT_7u_space diff --git a/keyboards/sanctified/dystopia/dystopia.h b/keyboards/sanctified/dystopia/dystopia.h index 5737f137cd09..6f820931265b 100644 --- a/keyboards/sanctified/dystopia/dystopia.h +++ b/keyboards/sanctified/dystopia/dystopia.h @@ -21,11 +21,11 @@ #define ___ KC_NO #define LAYOUT_split_bs( \ - 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, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D \ + K00, K01, K11, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \ + K10, K21, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K3D, \ + K20, K31, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K4D, \ + K30, K41, K32, K33, K34, K35, K36, K37, K47, K38, K39, K3A, K3B, K3C, \ + K40, K42, K44, K45, K46, K48, K49, K4A, K4B, K4C \ ) { \ { 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 }, \ diff --git a/keyboards/sanctified/dystopia/info.json b/keyboards/sanctified/dystopia/info.json index f7948e566212..f282ba1803ad 100644 --- a/keyboards/sanctified/dystopia/info.json +++ b/keyboards/sanctified/dystopia/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Dystopia", "url": "", "maintainer": "Sanctified", - "width": 17.5, - "height": 5, "layouts": { "LAYOUT_split_bs": { "layout": [ diff --git a/keyboards/sanctified/dystopia/keymaps/default/keymap.c b/keyboards/sanctified/dystopia/keymaps/default/keymap.c index 1840f981967c..2fffb86a7ac6 100644 --- a/keyboards/sanctified/dystopia/keymaps/default/keymap.c +++ b/keyboards/sanctified/dystopia/keymaps/default/keymap.c @@ -18,17 +18,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_split_bs( - KC_ESC, KC_1, 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_2, 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_CAPS, KC_Q, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_DEL, - KC_LSFT, KC_A, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGUP, - KC_LCTL, KC_Z, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_M, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN - ), + 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_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + 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, KC_UP, + KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), [1] = LAYOUT_split_bs( - KC_GRV, KC_F1, 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_F2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, - KC_LGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END - ), + 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_INS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, KC_TRNS, KC_TRNS, KC_TRNS, + KC_LGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) }; diff --git a/keyboards/sanctified/dystopia/keymaps/via/keymap.c b/keyboards/sanctified/dystopia/keymaps/via/keymap.c index 4a3a0039f29a..eb47aac864b8 100644 --- a/keyboards/sanctified/dystopia/keymaps/via/keymap.c +++ b/keyboards/sanctified/dystopia/keymaps/via/keymap.c @@ -18,31 +18,31 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_split_bs( - KC_ESC, KC_1, 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_2, 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_CAPS, KC_Q, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_DEL, - KC_LSFT, KC_A, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGUP, - KC_LCTL, KC_Z, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_M, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN - ), + 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_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + 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, KC_UP, + KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), [1] = LAYOUT_split_bs( - KC_GRV, KC_F1, 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_F2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, - KC_LGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END - ), + 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_INS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, KC_TRNS, KC_TRNS, KC_TRNS, + KC_LGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_split_bs( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), [3] = LAYOUT_split_bs( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), - [4] = LAYOUT_split_bs( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) }; diff --git a/keyboards/sanctified/dystopia/rules.mk b/keyboards/sanctified/dystopia/rules.mk index 8701c541633b..21ad32f6dcac 100644 --- a/keyboards/sanctified/dystopia/rules.mk +++ b/keyboards/sanctified/dystopia/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 LTO_ENABLE = yes # Enable link time optimization diff --git a/keyboards/satt/vision/info.json b/keyboards/satt/vision/info.json index 19ca9e856c72..8d1965bfd9e9 100644 --- a/keyboards/satt/vision/info.json +++ b/keyboards/satt/vision/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Vision", "url": "", "maintainer": "SatT", - "width": 16, - "height": 4, "layouts": { "LAYOUT": { "layout": [{"label":"PgUp", "x":0, "y":0}, {"label":"Esc", "x":1.25, "y":0}, {"label":"Q", "x":2.25, "y":0}, {"label":"W", "x":3.25, "y":0}, {"label":"E", "x":4.25, "y":0}, {"label":"R", "x":5.25, "y":0}, {"label":"T", "x":6.25, "y":0}, {"label":"Y", "x":9, "y":0}, {"label":"U", "x":10, "y":0}, {"label":"I", "x":11, "y":0}, {"label":"O", "x":12, "y":0}, {"label":"P", "x":13, "y":0}, {"label":"Back", "x":14, "y":0}, {"label":"Del", "x":15, "y":0}, {"label":"PgDn", "x":0, "y":1}, {"label":"Tab", "x":1.25, "y":1, "w":1.25}, {"label":"A", "x":2.5, "y":1}, {"label":"S", "x":3.5, "y":1}, {"label":"D", "x":4.5, "y":1}, {"label":"F", "x":5.5, "y":1}, {"label":"G", "x":6.5, "y":1}, {"label":"H", "x":9.25, "y":1}, {"label":"J", "x":10.25, "y":1}, {"label":"K", "x":11.25, "y":1}, {"label":"L", "x":12.25, "y":1}, {"label":":", "x":13.25, "y":1}, {"label":"\"", "x":14.25, "y":1, "w":1.75}, {"label":"Shift", "x":1.25, "y":2, "w":1.75}, {"label":"Z", "x":3, "y":2}, {"label":"X", "x":4, "y":2}, {"label":"C", "x":5, "y":2}, {"label":"V", "x":6, "y":2}, {"label":"B", "x":7, "y":2}, {"label":"B", "x":8.75, "y":2}, {"label":"N", "x":9.75, "y":2}, {"label":"M", "x":10.75, "y":2}, {"label":"<", "x":11.75, "y":2}, {"label":">", "x":12.75, "y":2}, {"label":"?", "x":13.75, "y":2, "w":1.25}, {"label":"Adjust", "x":15, "y":2}, {"label":"Win", "x":1.25, "y":3, "w":1.5}, {"label":"Alt", "x":3.75, "y":3, "w":1.5}, {"label":"Lower", "x":5.25, "y":3, "w":2}, {"x":7.25, "y":3}, {"label":"Raise", "x":8.75, "y":3, "w":1.75}, {"label":"Enter", "x":10.5, "y":3}, {"label":"Alt", "x":11.5, "y":3, "w":1.5}, {"label":"Ctrl", "x":14.5, "y":3, "w":1.5}] diff --git a/keyboards/satt/vision/keymaps/satt/keymap.c b/keyboards/satt/vision/keymaps/satt/keymap.c index 5735d34159a6..95296534087d 100644 --- a/keyboards/satt/vision/keymaps/satt/keymap.c +++ b/keyboards/satt/vision/keymaps/satt/keymap.c @@ -81,7 +81,7 @@ const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_PSEUDO_US] = LAYOUT( _______, _______, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, _______, _______, _______, _______, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, JIS2US, _______, - _______, KC_Z, KC_X, KC_C, KC_V, KC_B, JP_ZHTG, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, JIS2US, + _______, KC_Z, KC_X, KC_C, KC_V, KC_B, JP_ZKHK, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, JIS2US, _______, _______, P_LOWER, _______, P_RAISE, _______, _______, _______ ), diff --git a/keyboards/satt/vision/keymaps/satt/keymap_jis2us.h b/keyboards/satt/vision/keymaps/satt/keymap_jis2us.h index 916a403eb60e..0b811fd03ae2 100644 --- a/keyboards/satt/vision/keymaps/satt/keymap_jis2us.h +++ b/keyboards/satt/vision/keymaps/satt/keymap_jis2us.h @@ -40,10 +40,10 @@ const uint16_t PROGMEM keymap_jis2us[][2] = { [KC_BSLS] = { JP_YEN, JP_PIPE }, /* ] and } -> \ and | */ [KC_NUHS] = { JP_YEN, JP_PIPE }, /* ] and } -> \ and | */ [KC_SCLN] = { JP_SCLN, JP_COLN }, /* ; and + -> ; and : */ - [KC_QUOT] = { JP_QUOT, JP_DQT }, /* : and * -> ' and " */ + [KC_QUOT] = { JP_QUOT, JP_DQUO }, /* : and * -> ' and " */ [KC_GRV] = { JP_GRV, JP_TILD }, /* Han/Zen -> ` and ~ */ - [KC_COMM] = { JP_COMM, JP_LT }, /* , and < -> , and < */ - [KC_DOT] = { JP_DOT, JP_GT }, /* . and > -> . and > */ + [KC_COMM] = { JP_COMM, JP_LABK }, /* , and < -> , and < */ + [KC_DOT] = { JP_DOT, JP_RABK }, /* . and > -> . and > */ [KC_SLSH] = { JP_SLSH, JP_QUES }, /* / and ? -> / and ? */ }; // clang-format on diff --git a/keyboards/satt/vision/rules.mk b/keyboards/satt/vision/rules.mk index 5e81945580a8..a24ae4894a06 100644 --- a/keyboards/satt/vision/rules.mk +++ b/keyboards/satt/vision/rules.mk @@ -7,16 +7,14 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -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 # Enter lower-power sleep mode when on the ChibiOS idle thread diff --git a/keyboards/sauce/mild/config.h b/keyboards/sauce/mild/config.h new file mode 100644 index 000000000000..6e203a4341e3 --- /dev/null +++ b/keyboards/sauce/mild/config.h @@ -0,0 +1,58 @@ +/* Copyright 2021 Andy Yong (Sauce) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x8367 // "SC" +#define PRODUCT_ID 0x7783 // "MS" +#define DEVICE_VER 0x0001 +#define MANUFACTURER Sauce +#define PRODUCT Mild + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 17 + +/* + * 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 { C13, C14, C15, A15, F0, F1 } +#define MATRIX_COL_PINS { A10, A9, A8, B11, B10, B2, B1, B0, A7, A5, A4, A3, A2, A1, B6, B5, B4 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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 LED_CAPS_LOCK_PIN A6 +#define LED_SCROLL_LOCK_PIN B14 diff --git a/keyboards/sauce/mild/info.json b/keyboards/sauce/mild/info.json new file mode 100644 index 000000000000..d722a03d8b2f --- /dev/null +++ b/keyboards/sauce/mild/info.json @@ -0,0 +1,17 @@ +{ + "keyboard_name": "Sauce - Mild", + "url": "", + "maintainer": "Sauce", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, + {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":4, "y":1.25}, {"x":5, "y":1.25}, {"x":6, "y":1.25}, {"x":7, "y":1.25}, {"x":8, "y":1.25}, {"x":9, "y":1.25}, {"x":10, "y":1.25}, {"x":11, "y":1.25}, {"x":12, "y":1.25}, {"x":13, "y":1.25}, {"x":14, "y":1.25}, {"x":15.25, "y":1.25}, {"x":16.25, "y":1.25}, {"x":17.25, "y":1.25}, + {"x":0, "y":2.25, "w":1.5}, {"x":1.5, "y":2.25}, {"x":2.5, "y":2.25}, {"x":3.5, "y":2.25}, {"x":4.5, "y":2.25}, {"x":5.5, "y":2.25}, {"x":6.5, "y":2.25}, {"x":7.5, "y":2.25}, {"x":8.5, "y":2.25}, {"x":9.5, "y":2.25}, {"x":10.5, "y":2.25}, {"x":11.5, "y":2.25}, {"x":12.5, "y":2.25}, {"x":13.5, "y":2.25, "w":1.5}, {"x":15.25, "y":2.25}, {"x":16.25, "y":2.25}, {"x":17.25, "y":2.25}, + {"x":0, "y":3.25, "w":1.75}, {"x":1.75, "y":3.25}, {"x":2.75, "y":3.25}, {"x":3.75, "y":3.25}, {"x":4.75, "y":3.25}, {"x":5.75, "y":3.25}, {"x":6.75, "y":3.25}, {"x":7.75, "y":3.25}, {"x":8.75, "y":3.25}, {"x":9.75, "y":3.25}, {"x":10.75, "y":3.25}, {"x":11.75, "y":3.25}, {"x":12.75, "y":3.25, "w":2.25}, + {"x":0, "y":4.25, "w":1.25}, {"x":1.25, "y":4.25}, {"x":2.25, "y":4.25}, {"x":3.25, "y":4.25}, {"x":4.25, "y":4.25}, {"x":5.25, "y":4.25}, {"x":6.25, "y":4.25}, {"x":7.25, "y":4.25}, {"x":8.25, "y":4.25}, {"x":9.25, "y":4.25}, {"x":10.25, "y":4.25}, {"x":11.25, "y":4.25}, {"x":12.25, "y":4.25, "w":1.75}, {"x":14, "y":4.25}, {"x":16.25, "y":4.25}, + {"x":0, "y":5.25, "w":1.5}, {"x":2.5, "y":5.25, "w":1.5}, {"x":4, "y":5.25, "w":7}, {"x":11, "y":5.25, "w":1.5}, {"x":13.5, "y":5.25, "w":1.5}, {"x":15.25, "y":5.25}, {"x":16.25, "y":5.25}, {"x":17.25, "y":5.25} + ] + } + } +} diff --git a/keyboards/sauce/mild/keymaps/default/keymap.c b/keyboards/sauce/mild/keymaps/default/keymap.c new file mode 100644 index 000000000000..4b6f63aa117f --- /dev/null +++ b/keyboards/sauce/mild/keymaps/default/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2021 Andy Yong (Sauce) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [1] = LAYOUT_all( + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MUTE, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_VOLD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +}; diff --git a/keyboards/sauce/mild/keymaps/via/keymap.c b/keyboards/sauce/mild/keymaps/via/keymap.c new file mode 100644 index 000000000000..01f5742d0de5 --- /dev/null +++ b/keyboards/sauce/mild/keymaps/via/keymap.c @@ -0,0 +1,52 @@ +/* Copyright 2021 Andy Yong (Sauce) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [1] = LAYOUT_all( + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MUTE, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_VOLD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +}; diff --git a/keyboards/sauce/mild/keymaps/via/rules.mk b/keyboards/sauce/mild/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/sauce/mild/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/sauce/mild/mild.c b/keyboards/sauce/mild/mild.c new file mode 100644 index 000000000000..963cbede9e63 --- /dev/null +++ b/keyboards/sauce/mild/mild.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Andy Yong (Sauce) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "mild.h" diff --git a/keyboards/sauce/mild/mild.h b/keyboards/sauce/mild/mild.h new file mode 100644 index 000000000000..3dbd2630efdf --- /dev/null +++ b/keyboards/sauce/mild/mild.h @@ -0,0 +1,37 @@ +/* Copyright 2021 Andy Yong (Sauce) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ____ KC_NO + +#define LAYOUT_all( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K015, K016, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K412, K114, K115, K116, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K314, \ + K400, K501, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K413, K415, \ + K500, K503, K505, K510, K513, K514, K515, K516 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, ____, K014, K015, K016 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, ____, K314, ____, ____, ____ }, \ + { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, ____, K415, ____ }, \ + { K500, K501, ____, K503, ____, K505, ____, ____, ____, ____, K510, ____, ____, K513, K514, K515, K516 } \ +} diff --git a/keyboards/sauce/mild/readme.md b/keyboards/sauce/mild/readme.md new file mode 100644 index 000000000000..70202f19ef3e --- /dev/null +++ b/keyboards/sauce/mild/readme.md @@ -0,0 +1,17 @@ +# Sauce Mild + +Mild is a basic TKL keyboard + +* Keyboard Maintainer: [Sauce](https://github.com/andyywz) +* Hardware Supported: Mild pcb +* Hardware Availability: - + +Make example for this keyboard (after setting up your build environment): + + make sauce/mild:default + +Flashing example for this keyboard: + + make sauce/mild:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/sauce/mild/rules.mk b/keyboards/sauce/mild/rules.mk new file mode 100644 index 000000000000..08382a05d55e --- /dev/null +++ b/keyboards/sauce/mild/rules.mk @@ -0,0 +1,22 @@ +# 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 = 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 +# 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 + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/sawnsprojects/krush/krush60/readme.md b/keyboards/sawnsprojects/krush/krush60/readme.md new file mode 100644 index 000000000000..515040f9044b --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush60/readme.md @@ -0,0 +1,25 @@ +# Krush60 + +A 60% keyboard sold in several variants. + +1. [Solder](solder/): 06/2021. Atmega32u4 soldered keyboard. Sold under the name "Krush60" with krush keyboard case. Compatible with some 60% case, Singa, Bakeneko. + + **Firmware files are SPECIFIC to each board. Firmware files from one, will not work on the other.** Please use the `.hex` or `.bin` appropriate for your board. + +* Keyboard Maintainer: [SawnsProjects](https://github.com/MaiTheSan) +* Hardware Supported: Krush60, SINGA, Bakeneko, 60% traymount case +* Hardware Availability: [Mechkey.store](https://mechkey.store/) + +Make examples for this keyboard (after setting up your build environment): + + make sawnsprojects/krush/krush60/solder:default + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `RESET` if it is available + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). \ No newline at end of file diff --git a/keyboards/sawnsprojects/krush/krush60/solder/config.h b/keyboards/sawnsprojects/krush/krush60/solder/config.h new file mode 100644 index 000000000000..4cd1a1b39c29 --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush60/solder/config.h @@ -0,0 +1,61 @@ +/* Copyright 2021 SawnsProjects + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x5350 +#define PRODUCT_ID 0x6B32 +#define DEVICE_VER 0x0001 +#define MANUFACTURER SawnsProjects +#define PRODUCT Krush60 - Solder + +/* key matrix size */ +#define MATRIX_ROWS 10 +#define MATRIX_COLS 8 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { B1, B2, D1, D2, D4, D6, F6, F7, F5, F4 } +#define MATRIX_COL_PINS { C7, C6, B6, B5, B4, D7, D5, D3 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW +/* Caps Lock */ +#define LED_CAPS_LOCK_PIN F0 +#define LED_PIN_ON_STATE 0 + +#define RGB_DI_PIN F1 +#ifdef RGB_DI_PIN + #define RGBLED_NUM 20 + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 200 /* The maximum brightness level */ + #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +#define RGBLIGHT_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 +#endif \ No newline at end of file diff --git a/keyboards/sawnsprojects/krush/krush60/solder/info.json b/keyboards/sawnsprojects/krush/krush60/solder/info.json new file mode 100644 index 000000000000..79f0aed87fe6 --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush60/solder/info.json @@ -0,0 +1,1350 @@ +{ + "keyboard_name": "Krush60 Solder", + "url": "", + "maintainer": "MaiTheSan", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + + {"x":0, "y":3, "w":2}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3}, + {"x":6, "y":3}, + {"x":7, "y":3}, + {"x":8, "y":3}, + {"x":9, "y":3}, + {"x":10, "y":3}, + {"x":11, "y":3}, + {"x":12, "y":3}, + {"x":13, "y":3}, + {"x":14, "y":3}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":2.25}, + {"x":6, "y":4, "w":1.25}, + {"x":7.25, "y":4, "w":2.75}, + {"x":10, "y": 4}, + {"x":11, "y": 4}, + {"x":12, "y": 4}, + {"x":13, "y": 4}, + {"x":14, "y": 4} + ] + }, + "LAYOUT_60_ansi": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":2.75}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":12.5, "y":4, "w":1.25}, + {"x":13.75, "y":4, "w":1.25} + ] + }, + "LAYOUT_60_ansi_arrow": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3, "w":1.75}, + {"x":13, "y":3}, + {"x":14, "y":3}, + + {"x":0, "y": 4, "w": 1.25}, + {"x":1.25, "y": 4, "w": 1.25}, + {"x":2.5, "y": 4, "w": 1.25}, + {"x":3.75, "y": 4, "w": 6.25}, + {"x":10, "y": 4}, + {"x":11, "y": 4}, + {"x":12, "y": 4}, + {"x":13, "y": 4}, + {"x":14, "y": 4} + ] + }, + "LAYOUT_60_ansi_arrow_split_bs_7u_spc": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3, "w":1.75}, + {"x":13, "y":3}, + {"x":14, "y":3}, + + {"x":0, "y": 4, "w": 1.5}, + {"x":1.5, "y": 4}, + {"x":2.5, "y": 4, "w": 1.5}, + {"x":4, "y": 4, "w": 7}, + {"x":11, "y": 4}, + {"x":12, "y": 4}, + {"x":13, "y": 4}, + {"x":14, "y": 4} + ] + }, + "LAYOUT_60_ansi_split_bs": { + "layout": [ + {"x":0, "y": 0}, + {"x":1, "y": 0}, + {"x":2, "y": 0}, + {"x":3, "y": 0}, + {"x":4, "y": 0}, + {"x":5, "y": 0}, + {"x":6, "y": 0}, + {"x":7, "y": 0}, + {"x":8, "y": 0}, + {"x":9, "y": 0}, + {"x":10, "y": 0}, + {"x":11, "y": 0}, + {"x":12, "y": 0}, + {"x":13, "y": 0}, + {"x":14, "y": 0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":2.75}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":12.5, "y":4, "w":1.25}, + {"x":13.75, "y":4, "w":1.25} + ] + }, + "LAYOUT_60_ansi_split_spc": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":2.75}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":2.25}, + {"x":6, "y":4, "w":1.25}, + {"x":7.25, "y":4, "w":2.75}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":12.5, "y":4, "w":1.25}, + {"x":13.75, "y":4, "w":1.25} + ] + }, + "LAYOUT_60_ansi_split_bs_spc": { + "layout": [ + {"x":0, "y": 0}, + {"x":1, "y": 0}, + {"x":2, "y": 0}, + {"x":3, "y": 0}, + {"x":4, "y": 0}, + {"x":5, "y": 0}, + {"x":6, "y": 0}, + {"x":7, "y": 0}, + {"x":8, "y": 0}, + {"x":9, "y": 0}, + {"x":10, "y": 0}, + {"x":11, "y": 0}, + {"x":12, "y": 0}, + {"x":13, "y": 0}, + {"x":14, "y": 0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":2.75}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":2.25}, + {"x":6, "y":4, "w":1.25}, + {"x":7.25, "y":4, "w":2.75}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":12.5, "y":4, "w":1.25}, + {"x":13.75, "y":4, "w":1.25} + ] + }, + "LAYOUT_60_ansi_7u_spc": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":2.75}, + + {"x":0, "y": 4, "w": 1.5}, + {"x":1.5, "y": 4}, + {"x":2.5, "y": 4, "w": 1.5}, + {"x":4, "y": 4, "w": 7}, + {"x":11, "y": 4, "w": 1.5}, + {"x":12.5, "y": 4}, + {"x":13.5, "y": 4, "w": 1.5}, + ] + }, + "LAYOUT_60_ansi_split_bs_7u_spc": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":2.75}, + + {"x": 0, "y": 4, "w": 1.5}, + {"x": 1.5, "y": 4}, + {"x": 2.5, "y": 4, "w": 1.5}, + {"x": 4, "y": 4, "w": 7}, + {"x": 11, "y": 4, "w": 1.5}, + {"x": 12.5, "y": 4}, + {"x": 13.5, "y": 4, "w": 1.5}, + ] + }, + "LAYOUT_60_ansi_arrow_split_bs": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3, "w":1.75}, + {"x":13, "y":3}, + {"x":14, "y":3}, + + {"x":0, "y": 4, "w": 1.25}, + {"x":1.25, "y": 4, "w": 1.25}, + {"x":2.5, "y": 4, "w": 1.25}, + {"x":3.75, "y": 4, "w": 6.25}, + {"x":10, "y": 4}, + {"x":11, "y": 4}, + {"x":12, "y": 4}, + {"x":13, "y": 4}, + {"x":14, "y": 4} + ] + }, + "LAYOUT_60_ansi_arrow_split_spc": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3, "w":1.75}, + {"x":13, "y":3}, + {"x":14, "y":3}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":2.25}, + {"x":6, "y":4, "w":1.25}, + {"x":7.25, "y":4, "w":2.75}, + {"x":10, "y": 4}, + {"x":11, "y": 4}, + {"x":12, "y": 4}, + {"x":13, "y": 4}, + {"x":14, "y": 4} + ] + }, + "LAYOUT_60_ansi_arrow_split_bs_spc": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3, "w":1.75}, + {"x":13, "y":3}, + {"x":14, "y":3}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":2.25}, + {"x":6, "y":4, "w":1.25}, + {"x":7.25, "y":4, "w":2.75}, + {"x":10, "y": 4}, + {"x":11, "y": 4}, + {"x":12, "y": 4}, + {"x":13, "y": 4}, + {"x":14, "y": 4} + ] + }, + "LAYOUT_60_ansi_arrow_7u_spc": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0, "w": 2}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3, "w":1.75}, + {"x":13, "y":3}, + {"x":14, "y":3}, + + {"x":0, "y": 4, "w": 1.5}, + {"x":1.5, "y": 4}, + {"x":2.5, "y": 4, "w": 1.5}, + {"x":4, "y": 4, "w": 7}, + {"x":11, "y": 4}, + {"x":12, "y": 4}, + {"x":13, "y": 4}, + {"x":14, "y": 4} + ] + }, + "LAYOUT_60_ansi_tsangan": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0, "w": 2}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"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}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3}, + {"x": 12.25, "y": 3, "w": 1.75}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.5}, + {"x": 1.5, "y": 4}, + {"x": 2.5, "y": 4, "w": 1.5}, + {"x": 4, "y": 4, "w": 7}, + {"x": 11, "y": 4, "w": 1.5}, + {"x": 12.5, "y": 4}, + {"x": 13.5, "y": 4, "w": 1.5}, + ] + }, + "LAYOUT_60_ansi_tsangan_split_bs": { + "layout": [ + {"x": 0, "y": 0}, + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0}, + {"x": 4, "y": 0}, + {"x": 5, "y": 0}, + {"x": 6, "y": 0}, + {"x": 7, "y": 0}, + {"x": 8, "y": 0}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0}, + {"x": 11, "y": 0}, + {"x": 12, "y": 0}, + {"x": 13, "y": 0}, + {"x": 14, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1}, + {"x": 6.5, "y": 1}, + {"x": 7.5, "y": 1}, + {"x": 8.5, "y": 1}, + {"x": 9.5, "y": 1}, + {"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}, + {"x": 2.75, "y": 2}, + {"x": 3.75, "y": 2}, + {"x": 4.75, "y": 2}, + {"x": 5.75, "y": 2}, + {"x": 6.75, "y": 2}, + {"x": 7.75, "y": 2}, + {"x": 8.75, "y": 2}, + {"x": 9.75, "y": 2}, + {"x": 10.75, "y": 2}, + {"x": 11.75, "y": 2}, + {"x": 12.75, "y": 2, "w": 2.25}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3}, + {"x": 12.25, "y": 3, "w": 1.75}, + {"x": 14, "y": 3}, + + {"x": 0, "y": 4, "w": 1.5}, + {"x": 1.5, "y": 4}, + {"x": 2.5, "y": 4, "w": 1.5}, + {"x": 4, "y": 4, "w": 7}, + {"x": 11, "y": 4, "w": 1.5}, + {"x": 12.5, "y": 4}, + {"x": 13.5, "y": 4, "w": 1.5}, + ] + }, + "LAYOUT_60_iso_tsangan": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + {"x":13.75, "y":1, "w":1.25, "h":2}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3}, + {"x": 12.25, "y": 3, "w": 1.75}, + {"x": 14, "y": 3}, + + {"x":0, "y": 4, "w": 1.5}, + {"x":1.5, "y": 4}, + {"x":2.5, "y": 4, "w": 1.5}, + {"x":4, "y": 4, "w": 7}, + {"x":11, "y": 4, "w": 1.5}, + {"x":12.5, "y": 4}, + {"x":13.5, "y": 4, "w": 1.5}, + ] + }, + "LAYOUT_60_iso": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + {"x":13.75, "y":1, "w":1.25, "h":2}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":2.75}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":12.5, "y":4, "w":1.25}, + {"x":13.75, "y":4, "w":1.25} + ] + }, + "LAYOUT_60_iso_tsangan": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + {"x":13.75, "y":1, "w":1.25, "h":2}, + + {"x": 0, "y": 3, "w": 2.25}, + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3}, + {"x": 12.25, "y": 3, "w": 1.75}, + {"x": 14, "y": 3}, + + {"x":0, "y": 4, "w": 1.5}, + {"x":1.5, "y": 4}, + {"x":2.5, "y": 4, "w": 1.5}, + {"x":4, "y": 4, "w": 7}, + {"x":11, "y": 4, "w": 1.5}, + {"x":12.5, "y": 4}, + {"x":13.5, "y": 4, "w": 1.5}, + ] + }, + "LAYOUT_60_all": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + {"x":13.75, "y":1, "w":1.25, "h":2}, + + {"x":0, "y":3, "w":2}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3}, + {"x":6, "y":3}, + {"x":7, "y":3}, + {"x":8, "y":3}, + {"x":9, "y":3}, + {"x":10, "y":3}, + {"x":11, "y":3}, + {"x":12, "y":3}, + {"x":13, "y":3}, + {"x":14, "y":3}, + + {"x":0, "y": 4, "w": 1.5}, + {"x":1.5, "y": 4}, + {"x":2.5, "y": 4, "w": 1.5}, + {"x":4, "y": 4, "w": 7}, + {"x":11, "y": 4, "w": 1.5}, + {"x":12.5, "y": 4}, + {"x":13.5, "y": 4, "w": 1.5}, + ] + } + } +} diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_all/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_all/keymap.c new file mode 100644 index 000000000000..b8b48194a69a --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_all/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2021 SawnsProjects + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = 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_BSPC, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_SLSH, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_all/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_all/readme.md new file mode 100644 index 000000000000..e8ab0065f22e --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_all/readme.md @@ -0,0 +1 @@ +# The keymap for krush60 solder full layout \ No newline at end of file diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_7u/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_7u/keymap.c new file mode 100644 index 000000000000..3d454579cb1c --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_7u/keymap.c @@ -0,0 +1,37 @@ +/* Copyright 2021 SawnsProjects + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_60_ansi_7u_spc( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL + ) + [1] = LAYOUT_60_ansi_7u_spc( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; + + diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_7u/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_7u/readme.md new file mode 100644 index 000000000000..b7ec93ca7b73 --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_7u/readme.md @@ -0,0 +1 @@ +# The keymap for krush60 solder layout ansi 7U \ No newline at end of file diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow/keymap.c new file mode 100644 index 000000000000..b6fb88bb8afe --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2021 SawnsProjects + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_60_ansi_arrow( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ) + [1] = LAYOUT_60_ansi_arrow( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow/readme.md new file mode 100644 index 000000000000..561b615d2485 --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow/readme.md @@ -0,0 +1 @@ +# The keymap for krush60 solder layout ansi arrow \ No newline at end of file diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_7u/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_7u/keymap.c new file mode 100644 index 000000000000..f22e073bf5ac --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_7u/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2021 SawnsProjects + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_60_ansi_arrow_7u_spc( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ) + [1] = LAYOUT_60_ansi_arrow_7u_spc( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_7u/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_7u/readme.md new file mode 100644 index 000000000000..578753b3ae8a --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_7u/readme.md @@ -0,0 +1 @@ +# The keymap for krush60 solder layout ansi 7U arrow \ No newline at end of file diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs/keymap.c new file mode 100644 index 000000000000..8ba292cfd440 --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2021 SawnsProjects + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_60_ansi_arrow_split_bs( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ) + [1] = LAYOUT_60_ansi_arrow_split_bs( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs/readme.md new file mode 100644 index 000000000000..505c1ec9bc37 --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs/readme.md @@ -0,0 +1 @@ +# The keymap for krush60 solder layout ansi arrow split backspace \ No newline at end of file diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_7u/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_7u/keymap.c new file mode 100644 index 000000000000..56a713d56e93 --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_7u/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2021 SawnsProjects + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_60_ansi_arrow_split_bs_7u_spc( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ) + [1] = LAYOUT_60_ansi_arrow_split_bs_7u_spc( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_7u/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_7u/readme.md new file mode 100644 index 000000000000..059534d5df14 --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_7u/readme.md @@ -0,0 +1 @@ +# The keymap for krush60 solder layout ansi arrow, 7u spacebar & split backspace \ No newline at end of file diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_spc/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_spc/keymap.c new file mode 100644 index 000000000000..8673ce02d1d1 --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_spc/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2021 SawnsProjects + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_60_ansi_arrow_split_bs_spc( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ) + [1] = LAYOUT_60_ansi_arrow_split_bs_spc( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_spc/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_spc/readme.md new file mode 100644 index 000000000000..2355c409a026 --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_spc/readme.md @@ -0,0 +1 @@ +# The keymap for krush60 solder layout ansi arrow, split spacebar & split backspace \ No newline at end of file diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_spc/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_spc/keymap.c new file mode 100644 index 000000000000..1da11323e446 --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_spc/keymap.c @@ -0,0 +1,37 @@ +/* Copyright 2021 SawnsProjects + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_60_ansi_arrow_split_spc( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ) + [1] = LAYOUT_60_ansi_arrow_split_spc( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; + + diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_spc/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_spc/readme.md new file mode 100644 index 000000000000..af2fce05c2a9 --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_spc/readme.md @@ -0,0 +1 @@ +# The keymap for krush60 solder layout ansi arrow & split spacebar \ No newline at end of file diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs/keymap.c new file mode 100644 index 000000000000..ff0fd21debc5 --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2021 SawnsProjects + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_60_ansi_split_bs( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL), + + [0] = LAYOUT_60_ansi_split_bs( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs/readme.md new file mode 100644 index 000000000000..80634c350fba --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs/readme.md @@ -0,0 +1 @@ +# The keymap for krush60 solder layout split backspace \ No newline at end of file diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_7u/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_7u/keymap.c new file mode 100644 index 000000000000..431fb483fd8d --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_7u/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2021 SawnsProjects + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_60_ansi_split_bs_7u_spc( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL), + + [0] = LAYOUT_60_ansi_split_bs_7u_spc( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_7u/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_7u/readme.md new file mode 100644 index 000000000000..70b3a8617b67 --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_7u/readme.md @@ -0,0 +1 @@ +# The keymap for krush60 solder layout 7u spacebar & split backspace \ No newline at end of file diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_spc/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_spc/keymap.c new file mode 100644 index 000000000000..e3982e2507f5 --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_spc/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2021 SawnsProjects + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_60_ansi_split_bs_spc( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL), + + [1] = LAYOUT_60_ansi_split_bs_spc( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_spc/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_spc/readme.md new file mode 100644 index 000000000000..6e1981c3ce82 --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_spc/readme.md @@ -0,0 +1 @@ +# The keymap for krush60 solder layout split spacebar & split backspace \ No newline at end of file diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_spc/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_spc/keymap.c new file mode 100644 index 000000000000..abcd186ccc89 --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_spc/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2021 SawnsProjects + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_60_ansi_split_spc( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL), + + [1] = LAYOUT_60_ansi_split_spc( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_spc/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_spc/readme.md new file mode 100644 index 000000000000..80634c350fba --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_spc/readme.md @@ -0,0 +1 @@ +# The keymap for krush60 solder layout split backspace \ No newline at end of file diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan/keymap.c new file mode 100644 index 000000000000..cc8067cc9995 --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2021 SawnsProjects + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_60_ansi_tsangan( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL + ) + [1] = LAYOUT_60_ansi_tsangan( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; + diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan/readme.md new file mode 100644 index 000000000000..5bdb4a102612 --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan/readme.md @@ -0,0 +1 @@ +# The keymap for krush60 solder Tsangan \ No newline at end of file diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan_splt_bs/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan_splt_bs/keymap.c new file mode 100644 index 000000000000..9fba9e6bf344 --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan_splt_bs/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2021 REPLACE_WITH_YOUR_NAME + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_60_ansi_tsangan_split_bs( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL + ) + [1] = LAYOUT_60_ansi_tsangan_split_bs( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan_splt_bs/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan_splt_bs/readme.md new file mode 100644 index 000000000000..03c0444cc6fe --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan_splt_bs/readme.md @@ -0,0 +1 @@ +# The keymap for krush60 solder Tsangan & split backspace \ No newline at end of file diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/default/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/default/keymap.c new file mode 100644 index 000000000000..f1ef9911dd40 --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/default/keymap.c @@ -0,0 +1,40 @@ +/* Copyright 2021 REPLACE_WITH_YOUR_NAME + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │  \  │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │  Enter │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ + * │ Shift  │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │    Shift │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ + * │Ctrl│GUI │Alt │                        │ Alt│ GUI│Menu│Ctrl│ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ + */ + [0] = LAYOUT_60_ansi( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL + ) +}; diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/default/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/default/readme.md new file mode 100644 index 000000000000..88157e507eaa --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/default/readme.md @@ -0,0 +1 @@ +# The keymap default for krush60 \ No newline at end of file diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/via/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/via/keymap.c new file mode 100644 index 000000000000..6f033b17cbdc --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/via/keymap.c @@ -0,0 +1,49 @@ +/* Copyright 2021 REPLACE_WITH_YOUR_NAME + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_all( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_SLSH, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(0), KC_LEFT, KC_RALT, KC_RCTL + ), + [1] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/via/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/via/readme.md new file mode 100644 index 000000000000..8f8d7a19bda0 --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/via/readme.md @@ -0,0 +1 @@ +# The keymap VIA for krush60 \ No newline at end of file diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/via/rules.mk b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/sawnsprojects/krush/krush60/solder/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/readme.md new file mode 100644 index 000000000000..36da34d372f7 --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush60/solder/readme.md @@ -0,0 +1,15 @@ +# Krush60 solder + +![Krush60](https://cdn.discordapp.com/attachments/898507964942536715/906171092916391956/252763374_2899749087003964_8763371038132517512_n.png) + +A 60% keyboard PCB made and sold by SawnsProjects with Nuxros in [Facebook](https://www.facebook.com/groups/vnmkmarket/posts/1412997345762674). + +* Keyboard Maintainer: [Mai The San](https://github.com/MaiTheSan) +* Hardware Supported: 60% keyboard case +* Hardware Availability: [Facebook](https://www.facebook.com/groups/vnmkmarket/posts/1412997345762674) + +Make example for this keyboard (after setting up your build environment): + + make sawnsprojects/krush60/solder:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). \ No newline at end of file diff --git a/keyboards/sawnsprojects/krush/krush60/solder/rules.mk b/keyboards/sawnsprojects/krush/krush60/solder/rules.mk new file mode 100644 index 000000000000..03c4077d6302 --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush60/solder/rules.mk @@ -0,0 +1,20 @@ +# 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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow + +LAYOUTS = 60_ansi 60_ansi_arrow 60_ansi_arrow_split_bs_7u_spc diff --git a/keyboards/sawnsprojects/krush/krush60/solder/solder.c b/keyboards/sawnsprojects/krush/krush60/solder/solder.c new file mode 100644 index 000000000000..2fb9b24f8c2d --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush60/solder/solder.c @@ -0,0 +1,17 @@ +/* Copyright 2021 SawnsProjects + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "solder.h" \ No newline at end of file diff --git a/keyboards/sawnsprojects/krush/krush60/solder/solder.h b/keyboards/sawnsprojects/krush/krush60/solder/solder.h new file mode 100644 index 000000000000..ede9c074521c --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush60/solder/solder.h @@ -0,0 +1,333 @@ +/* Copyright 2021 SawnsProjects + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" +#define XXX KC_NO +//x +#define LAYOUT_all( \ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \ + K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K66, K77, \ + K80, K90, K81, K82, K92, K84, K94, K85, K86, K95, K97 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, XXX }, \ + { K10, K11, K12, K13, K14, K15, XXX, K17 }, \ + { K20, K21, K22, K23, K24, K25, K26, XXX }, \ + { K30, K31, K32, K33, K34, K35, K36, XXX }, \ + { K40, K41, K42, K43, K44, K45, K46, K47 }, \ + { K50, K51, K52, K53, K54, K55, XXX, XXX }, \ + { K60, K61, K62, K63, K64, K65, K66, XXX }, \ + { K70, K71, K72, K73, K74, K75, XXX, K77 }, \ + { K80, K81, K82, XXX, K84, K85, K86, XXX }, \ + { K90, XXX, K92, XXX, K94, K95, XXX, K97 }, \ +} + +//LAYOUT_60_ansi +//x +#define LAYOUT_60_ansi( \ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \ + K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, \ + K80, K90, K81, K92, K94, K85, K95, K97 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, XXX }, \ + { K10, K11, K12, K13, K14, K15, XXX, XXX }, \ + { K20, K21, K22, K23, K24, K25, K26, XXX }, \ + { K30, K31, K32, K33, K34, K35, K36, XXX }, \ + { K40, K41, K42, K43, K44, K45, K46, K47 }, \ + { K50, K51, K52, K53, K54, K55, XXX, XXX }, \ + { K60, K61, K62, K63, K64, K65, K66, XXX }, \ + { K70, K71, K72, K73, K74, XXX, XXX, XXX }, \ + { K80, K81, XXX, XXX, XXX, K85, XXX, XXX }, \ + { K90, XXX, K92, XXX, K94, K95, XXX, K97 }, \ +} +//LAYOUT_60_iso +//x +#define LAYOUT_60_iso(\ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \ + K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, \ + K80, K90, K81, K92, K94, K85, K95, K97 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, XXX }, \ + { K10, K11, K12, K13, K14, K15, XXX, K17 }, \ + { K20, K21, K22, K23, K24, K25, K26, XXX }, \ + { K30, K31, K32, K33, K34, K35, K36, XXX }, \ + { K40, K41, K42, K43, K44, K45, K46, K47 }, \ + { K50, K51, K52, K53, K54, K55, XXX, XXX }, \ + { K60, K61, K62, K63, K64, K65, K66, XXX }, \ + { K70, K71, K72, K73, K74, XXX, XXX, XXX }, \ + { K80, K81, XXX, XXX, XXX, K85, XXX, XXX }, \ + { K90, XXX, K92, XXX, K94, K95, XXX, K97 }, \ +} +//LAYOUT_60_ansi_split_bs +#define LAYOUT_60_ansi_split_bs( \ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \ + K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, \ + K80, K90, K81, K92, K94, K85, K95, K97 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, XXX }, \ + { K10, K11, K12, K13, K14, K15, XXX, K17 }, \ + { K20, K21, K22, K23, K24, K25, K26, XXX }, \ + { K30, K31, K32, K33, K34, K35, K36, XXX }, \ + { K40, K41, K42, K43, K44, K45, K46, K47 }, \ + { K50, K51, K52, K53, K54, K55, XXX, XXX }, \ + { K60, K61, K62, K63, K64, K65, K66, XXX }, \ + { K70, K71, K72, K73, K74, XXX, XXX, XXX }, \ + { K80, K81, XXX, XXX, XXX, K85, XXX, XXX }, \ + { K90, XXX, K92, XXX, K94, K95, XXX, K97 }, \ +} +//LAYOUT_60_ansi_split_spc +#define LAYOUT_60_ansi_split_spc( \ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \ + K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, \ + K80, K90, K81, K82, K92, K84, K94, K85, K95, K97 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, XXX }, \ + { K10, K11, K12, K13, K14, K15, XXX, XXX }, \ + { K20, K21, K22, K23, K24, K25, K26, XXX }, \ + { K30, K31, K32, K33, K34, K35, K36, XXX }, \ + { K40, K41, K42, K43, K44, K45, K46, K47 }, \ + { K50, K51, K52, K53, K54, K55, XXX, XXX }, \ + { K60, K61, K62, K63, K64, K65, K66, XXX }, \ + { K70, K71, K72, K73, K74, XXX, XXX, XXX }, \ + { K80, K81, K82, XXX, K84, K85, XXX, XXX }, \ + { K90, XXX, K92, XXX, K94, K95, XXX, K97 }, \ +} +//LAYOUT_60_ansi_split_bs_spc +#define LAYOUT_60_ansi_split_bs_spc( \ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \ + K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, \ + K80, K90, K81, K82, K92, K84, K94, K85, K95, K97 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, XXX }, \ + { K10, K11, K12, K13, K14, K15, XXX, K17 }, \ + { K20, K21, K22, K23, K24, K25, K26, XXX }, \ + { K30, K31, K32, K33, K34, K35, K36, XXX }, \ + { K40, K41, K42, K43, K44, K45, K46, K47 }, \ + { K50, K51, K52, K53, K54, K55, XXX, XXX }, \ + { K60, K61, K62, K63, K64, K65, K66, XXX }, \ + { K70, K71, K72, K73, K74, XXX, XXX, XXX }, \ + { K80, K81, K82, XXX, K84, K85, XXX, XXX }, \ + { K90, XXX, K92, XXX, K94, K95, XXX, K97 }, \ +} +//LAYOUT_60_ansi_7u_spc +#define LAYOUT_60_ansi_7u_spc( \ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \ + K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, \ + K80, K90, K81, K92, K85, K95, K97 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, XXX }, \ + { K10, K11, K12, K13, K14, K15, XXX, XXX }, \ + { K20, K21, K22, K23, K24, K25, K26, XXX }, \ + { K30, K31, K32, K33, K34, K35, K36, XXX }, \ + { K40, K41, K42, K43, K44, K45, K46, K47 }, \ + { K50, K51, K52, K53, K54, K55, XXX, XXX }, \ + { K60, K61, K62, K63, K64, K65, K66, XXX }, \ + { K70, K71, K72, K73, K74, XXX, XXX, XXX }, \ + { K80, K81, XXX, XXX, XXX, K85, XXX, XXX }, \ + { K90, XXX, K92, XXX, XXX, K95, XXX, K97 }, \ +} +//LAYOUT_60_ansi_split_7u_spc +#define LAYOUT_60_ansi_split_bs_7u_spc( \ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \ + K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, \ + K80, K90, K81, K92, K85, K95, K97 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, XXX }, \ + { K10, K11, K12, K13, K14, K15, XXX, K17 }, \ + { K20, K21, K22, K23, K24, K25, K26, XXX }, \ + { K30, K31, K32, K33, K34, K35, K36, XXX }, \ + { K40, K41, K42, K43, K44, K45, K46, K47 }, \ + { K50, K51, K52, K53, K54, K55, XXX, XXX }, \ + { K60, K61, K62, K63, K64, K65, K66, XXX }, \ + { K70, K71, K72, K73, K74, XXX, XXX, XXX }, \ + { K80, K81, XXX, XXX, XXX, K85, XXX, XXX }, \ + { K90, XXX, K92, XXX, XXX, K95, XXX, K97 }, \ +} +//LAYOUT_60_ansi_arrow_split_bs +#define LAYOUT_60_ansi_arrow_split_bs( \ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \ + K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K75, K66, K77, \ + K80, K90, K81, K92, K94, K85, K86, K95, K97 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, XXX }, \ + { K10, K11, K12, K13, K14, K15, XXX, K17 }, \ + { K20, K21, K22, K23, K24, K25, K26, XXX }, \ + { K30, K31, K32, K33, K34, K35, K36, XXX }, \ + { K40, K41, K42, K43, K44, K45, K46, K47 }, \ + { K50, K51, K52, K53, K54, K55, XXX, XXX }, \ + { K60, K61, K62, K63, K64, XXX, K66, XXX }, \ + { K70, K71, K72, K73, K74, K75, XXX, K77 }, \ + { K80, K81, XXX, XXX, XXX, K85, K86, XXX }, \ + { K90, XXX, K92, XXX, K94, K95, XXX, K97 }, \ +} +//LAYOUT_60_ansi_arrow_split_spc +#define LAYOUT_60_ansi_arrow_split_spc( \ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \ + K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K75, K66, K77, \ + K80, K90, K81, K82, K92, K84, K94, K85, K86, K95, K97 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, XXX }, \ + { K10, K11, K12, K13, K14, K15, XXX, XXX }, \ + { K20, K21, K22, K23, K24, K25, K26, XXX }, \ + { K30, K31, K32, K33, K34, K35, K36, XXX }, \ + { K40, K41, K42, K43, K44, K45, K46, K47 }, \ + { K50, K51, K52, K53, K54, K55, XXX, XXX }, \ + { K60, K61, K62, K63, K64, XXX, K66, XXX }, \ + { K70, K71, K72, K73, K74, K75, XXX, K77 }, \ + { K80, K81, K82, XXX, K84, K85, K86, XXX }, \ + { K90, XXX, K92, XXX, K94, K95, XXX, K97 }, \ +} +//LAYOUT_60_ansi_arrow_split_bs_spc +#define LAYOUT_60_ansi_arrow_split_bs_spc( \ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \ + K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K75, K66, K77, \ + K80, K90, K81, K82, K92, K84, K94, K85, K86, K95, K97 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, XXX }, \ + { K10, K11, K12, K13, K14, K15, XXX, K17 }, \ + { K20, K21, K22, K23, K24, K25, K26, XXX }, \ + { K30, K31, K32, K33, K34, K35, K36, XXX }, \ + { K40, K41, K42, K43, K44, K45, K46, K47 }, \ + { K50, K51, K52, K53, K54, K55, XXX, XXX }, \ + { K60, K61, K62, K63, K64, XXX, K66, XXX }, \ + { K70, K71, K72, K73, K74, K75, XXX, K77 }, \ + { K80, K81, K82, XXX, K84, K85, K86, XXX }, \ + { K90, XXX, K92, XXX, K94, K95, XXX, K97 }, \ +} +//LAYOUT_60_ansi_arrow_7u_spc +#define LAYOUT_60_ansi_arrow_7u_spc( \ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \ + K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K75, K66, K77, \ + K80, K90, K81, K92, K85, K86, K95, K97 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, XXX }, \ + { K10, K11, K12, K13, K14, K15, XXX, XXX }, \ + { K20, K21, K22, K23, K24, K25, K26, XXX }, \ + { K30, K31, K32, K33, K34, K35, K36, XXX }, \ + { K40, K41, K42, K43, K44, K45, K46, K47 }, \ + { K50, K51, K52, K53, K54, K55, XXX, XXX }, \ + { K60, K61, K62, K63, K64, XXX, K66, XXX }, \ + { K70, K71, K72, K73, K74, K75, XXX, K77 }, \ + { K80, K81, XXX, XXX, XXX, K85, K86, XXX }, \ + { K90, XXX, K92, XXX, XXX, K95, XXX, K97 }, \ +} +//LAYOUT_60_ansi_arrow +//x +#define LAYOUT_60_ansi_arrow( \ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \ + K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K75, K66, K77, \ + K80, K90, K81, K92, K94, K85, K86, K95, K97 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, XXX }, \ + { K10, K11, K12, K13, K14, K15, XXX, XXX }, \ + { K20, K21, K22, K23, K24, K25, K26, XXX }, \ + { K30, K31, K32, K33, K34, K35, K36, XXX }, \ + { K40, K41, K42, K43, K44, K45, K46, K47 }, \ + { K50, K51, K52, K53, K54, K55, XXX, XXX }, \ + { K60, K61, K62, K63, K64, XXX, K66, XXX }, \ + { K70, K71, K72, K73, K74, K75, XXX, K77 }, \ + { K80, K81, XXX, XXX, XXX, K85, K86, XXX }, \ + { K90, XXX, K92, XXX, K94, K95, XXX, K97 }, \ +} +//x +//LAYOUT_60_ansi_arrow_split_bs_7u_spc +#define LAYOUT_60_ansi_arrow_split_bs_7u_spc( \ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \ + K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K75, K66, K77, \ + K80, K90, K81, K92, K85, K86, K95, K97 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, XXX }, \ + { K10, K11, K12, K13, K14, K15, XXX, K17 }, \ + { K20, K21, K22, K23, K24, K25, K26, XXX }, \ + { K30, K31, K32, K33, K34, K35, K36, XXX }, \ + { K40, K41, K42, K43, K44, K45, K46, K47 }, \ + { K50, K51, K52, K53, K54, K55, XXX, XXX }, \ + { K60, K61, K62, K63, K64, XXX, K66, XXX }, \ + { K70, K71, K72, K73, K74, K75, XXX, K77 }, \ + { K80, K81, XXX, XXX, XXX, K85, K86, XXX }, \ + { K90, XXX, K92, XXX, XXX, K95, XXX, K97 }, \ +} +//LAYOUT_60_ansi_tsangan +#define LAYOUT_60_ansi_tsangan( \ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \ + K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, K77, \ + K80, K90, K81, K92, K85, K95, K97 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, XXX }, \ + { K10, K11, K12, K13, K14, K15, XXX, XXX }, \ + { K20, K21, K22, K23, K24, K25, K26, XXX }, \ + { K30, K31, K32, K33, K34, K35, K36, XXX }, \ + { K40, K41, K42, K43, K44, K45, K46, K47 }, \ + { K50, K51, K52, K53, K54, K55, XXX, XXX }, \ + { K60, K61, K62, K63, K64, K65, K66, XXX }, \ + { K70, K71, K72, K73, K74, XXX, XXX, K77 }, \ + { K80, K81, XXX, XXX, XXX, K85, XXX, XXX }, \ + { K90, XXX, K92, XXX, XXX, K95, XXX, K97 }, \ +} +//LAYOUT_60_ansi_tsangan_split_bs +#define LAYOUT_60_ansi_tsangan_split_bs( \ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \ + K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, K77, \ + K80, K90, K81, K92, K85, K95, K97 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, XXX }, \ + { K10, K11, K12, K13, K14, K15, XXX, K17 }, \ + { K20, K21, K22, K23, K24, K25, K26, XXX }, \ + { K30, K31, K32, K33, K34, K35, K36, XXX }, \ + { K40, K41, K42, K43, K44, K45, K46, K47 }, \ + { K50, K51, K52, K53, K54, K55, XXX, XXX }, \ + { K60, K61, K62, K63, K64, K65, K66, XXX }, \ + { K70, K71, K72, K73, K74, XXX, XXX, K77 }, \ + { K80, K81, XXX, XXX, XXX, K85, XXX, XXX }, \ + { K90, XXX, K92, XXX, XXX, K95, XXX, K97 }, \ +} +//LAYOUT_60_iso_tsangan +#define LAYOUT_60_iso_tsangan LAYOUT_60_ansi_tsangan +//LAYOUT_60_iso_tsangan_split_bs +#define LAYOUT_60_iso_tsangan_split_bs LAYOUT_60_ansi_tsangan_split_bs diff --git a/keyboards/sawnsprojects/krush/krush65/readme.md b/keyboards/sawnsprojects/krush/krush65/readme.md new file mode 100644 index 000000000000..34e996f0bf2e --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush65/readme.md @@ -0,0 +1,25 @@ +# Krush65 + +A 65% keyboard sold in several variants. + +1. [Solder](solder/): 06/2021. Atmega32u4 soldered keyboard. Sold under the name "Krush65" with krush keyboard case. Compatible with some KBD67 case. + + **Firmware files are SPECIFIC to each board. Firmware files from one, will not work on the other.** Please use the `.hex` or `.bin` appropriate for your board. + +* Keyboard Maintainer: [SawnsProjects](https://github.com/MaiTheSan) +* Hardware Supported: Krush65 +* Hardware Availability: [Mechkey.store](https://mechkey.store/) + +Make examples for this keyboard (after setting up your build environment): + + make sawnsprojects/krush/krush65/solder:default + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `RESET` if it is available + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). \ No newline at end of file diff --git a/keyboards/sawnsprojects/krush/krush65/solder/config.h b/keyboards/sawnsprojects/krush/krush65/solder/config.h new file mode 100644 index 000000000000..1afab16a0e76 --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush65/solder/config.h @@ -0,0 +1,69 @@ +/* Copyright 2021 SawnsProjects + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x5350 +#define PRODUCT_ID 0x6B31 +#define DEVICE_VER 0x0001 +#define MANUFACTURER SawnsProjects +#define PRODUCT Krush65 - Solder + +/* key matrix size */ +#define MATRIX_ROWS 10 +#define MATRIX_COLS 8 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { B1, B2, D1, D2, D4, D6, F6, F7, F5, F4 } +#define MATRIX_COL_PINS { C7, C6, B6, B5, B4, D7, D5, D3 } +#define UNUSED_PINS + +/* indicator */ +// #define LED_CAPS_LOCK_PIN F0 + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW +/* Caps Lock */ +#define LED_CAPS_LOCK_PIN F0 +#define LED_PIN_ON_STATE 0 + +/* rotary */ +#define ENCODERS_PAD_A { D0 } +#define ENCODERS_PAD_B { B3 } +#define ENCODER_RESOLUTION 4 + +#define RGB_DI_PIN F1 +#ifdef RGB_DI_PIN + #define RGBLED_NUM 20 + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 200 /* The maximum brightness level */ + #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +#define RGBLIGHT_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 +#endif \ No newline at end of file diff --git a/keyboards/sawnsprojects/krush/krush65/solder/encoder_actions.c b/keyboards/sawnsprojects/krush/krush65/solder/encoder_actions.c new file mode 100644 index 000000000000..039f8739b4d1 --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush65/solder/encoder_actions.c @@ -0,0 +1,58 @@ +/* Copyright 2020 Neil Brian Ramirez + * Copyright 2021 drashna jael're (@drashna) + * Copyright 2021 uybv + * Copyright 2021 SawnsProjects + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 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 . + */ + +#include "encoder_actions.h" + +#ifdef ENCODER_ENABLE + +# ifdef ENCODERS +static uint8_t encoder_state[ENCODERS] = {0}; +static keypos_t encoder_cw[ENCODERS] = ENCODERS_CW_KEY; +static keypos_t encoder_ccw[ENCODERS] = ENCODERS_CCW_KEY; +# endif + +void encoder_action_unregister(void) { +# ifdef ENCODERS + for (int index = 0; index < ENCODERS; ++index) { + if (encoder_state[index]) { + keyevent_t encoder_event = (keyevent_t) { + .key = encoder_state[index] >> 1 ? encoder_cw[index] : encoder_ccw[index], + .pressed = false, + .time = (timer_read() | 1) + }; + encoder_state[index] = 0; + action_exec(encoder_event); + } + } +# endif +} + +void encoder_action_register(uint8_t index, bool clockwise) { +# ifdef ENCODERS + keyevent_t encoder_event = (keyevent_t) { + .key = clockwise ? encoder_cw[index] : encoder_ccw[index], + .pressed = true, + .time = (timer_read() | 1) + }; + encoder_state[index] = (clockwise ^ 1) | (clockwise << 1); + action_exec(encoder_event); +# endif +} + +#endif \ No newline at end of file diff --git a/keyboards/sawnsprojects/krush/krush65/solder/encoder_actions.h b/keyboards/sawnsprojects/krush/krush65/solder/encoder_actions.h new file mode 100644 index 000000000000..098210d40c4f --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush65/solder/encoder_actions.h @@ -0,0 +1,21 @@ +/* Copyright 2020 Neil Brian Ramirez + * + * This program is free software: you can 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 . + */ + +#include "quantum.h" + +void encoder_action_unregister(void); + +void encoder_action_register(uint8_t index, bool clockwise); \ No newline at end of file diff --git a/keyboards/sawnsprojects/krush/krush65/solder/info.json b/keyboards/sawnsprojects/krush/krush65/solder/info.json new file mode 100644 index 000000000000..6c10d660e237 --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush65/solder/info.json @@ -0,0 +1,299 @@ +{ + "keyboard_name": "Krush65 Solder", + "url": "", + "maintainer": "MaiTheSan", + "layouts": { + "LAYOUT_all": { + "layout": [ + { "label": "K00 (B1,C7)", "x": 0, "y": 0 }, + { "label": "K10 (B2,C7)", "x": 1, "y": 0 }, + { "label": "K01 (B1,C6)", "x": 2, "y": 0 }, + { "label": "K11 (B2,C6)", "x": 3, "y": 0 }, + { "label": "K02 (B1,B6)", "x": 4, "y": 0 }, + { "label": "K12 (B2,B6)", "x": 5, "y": 0 }, + { "label": "K03 (B1,B5)", "x": 6, "y": 0 }, + { "label": "K13 (B2,B5)", "x": 7, "y": 0 }, + { "label": "K04 (B1,B4)", "x": 8, "y": 0 }, + { "label": "K14 (B2,B4)", "x": 9, "y": 0 }, + { "label": "K05 (B1,D7)", "x": 10, "y": 0 }, + { "label": "K15 (B2,D7)", "x": 11, "y": 0 }, + { "label": "K06 (B1,D5)", "x": 12, "y": 0 }, + { "label": "K26 (D1,D5)", "x": 13, "y": 0 }, + { "label": "K17 (B2,D3)", "x": 14, "y": 0 }, + { "label": "K07 (B1,D3)", "x": 15, "y": 0 }, + { "label": "K20 (D1,C7)", "x": 0, "y": 1, "w": 1.5 }, + { "label": "K30 (D2,C7)", "x": 1.5, "y": 1 }, + { "label": "K21 (D1,C6)", "x": 2.5, "y": 1 }, + { "label": "K31 (D2,C6)", "x": 3.5, "y": 1 }, + { "label": "K22 (D1,B6)", "x": 4.5, "y": 1 }, + { "label": "K32 (D2,B6)", "x": 5.5, "y": 1 }, + { "label": "K23 (D1,B5)", "x": 6.5, "y": 1 }, + { "label": "K33 (D2,B5)", "x": 7.5, "y": 1 }, + { "label": "K24 (D1,B4)", "x": 8.5, "y": 1 }, + { "label": "K34 (D2,B4)", "x": 9.5, "y": 1 }, + { "label": "K25 (D1,D7)", "x": 10.5, "y": 1 }, + { "label": "K35 (D2,D7)", "x": 11.5, "y": 1 }, + { "label": "K36 (D2,D5)", "x": 12.5, "y": 1 }, + { "label": "K46 (D4,D5)", "x": 13.5, "y": 1, "w": 1.5 }, + { "label": "K37 (D2,D3)", "x": 15, "y": 1 }, + { "label": "K40 (D4,C7)", "x": 0, "y": 2, "w": 1.75 }, + { "label": "K50 (D6,C7)", "x": 1.75, "y": 2 }, + { "label": "K41 (D4,C6)", "x": 2.75, "y": 2 }, + { "label": "K51 (D6,C6)", "x": 3.75, "y": 2 }, + { "label": "K42 (D4,B6)", "x": 4.75, "y": 2 }, + { "label": "K52 (D6,B6)", "x": 5.75, "y": 2 }, + { "label": "K43 (D4,B5)", "x": 6.75, "y": 2 }, + { "label": "K53 (D6,B5)", "x": 7.75, "y": 2 }, + { "label": "K44 (D4,B4)", "x": 8.75, "y": 2 }, + { "label": "K54 (D6,B4)", "x": 9.75, "y": 2 }, + { "label": "K45 (D4,D7)", "x": 10.75, "y": 2 }, + { "label": "K55 (D6,D7)", "x": 11.75, "y": 2 }, + { "label": "K47 (D4,D3)", "x": 12.75, "y": 2, "w": 2.25 }, + { "label": "K57 (D6,D3)", "x": 15, "y": 2 }, + { "label": "K60 (F6,C7)", "x": 0, "y": 3, "w": 2.25 }, + { "label": "K70 (F7,C7)", "x": 2.25, "y": 3 }, + { "label": "K61 (F6,C6)", "x": 3.25, "y": 3 }, + { "label": "K71 (F7,C6)", "x": 4.25, "y": 3 }, + { "label": "K62 (F6,B6)", "x": 5.25, "y": 3 }, + { "label": "K72 (F7,B6)", "x": 6.25, "y": 3 }, + { "label": "K63 (F6,B5)", "x": 7.25, "y": 3 }, + { "label": "K73 (F7,B5)", "x": 8.25, "y": 3 }, + { "label": "K64 (F6,B4)", "x": 9.25, "y": 3 }, + { "label": "K74 (F7,B4)", "x": 10.25, "y": 3 }, + { "label": "K65 (F6,D7)", "x": 11.25, "y": 3 }, + { "label": "K75 (F7,D7)", "x": 12.25, "y": 3, "w": 1.75 }, + { "label": "K77 (F7,D3)", "x": 14, "y": 3 }, + { "label": "K67 (F6,D3)", "x": 15, "y": 3 }, + { "label": "K80 (F5,C7)", "x": 0, "y": 4, "w": 1.25 }, + { "label": "K90 (F4,C7)", "x": 1.25, "y": 4, "w": 1.25 }, + { "label": "K81 (F5,C6)", "x": 2.5, "y": 4, "w": 1.25 }, + { "label": "K82 (F5,B6)", "x": 3.75, "y": 4, "w": 2.25 }, + { "label": "K92 (F4,B6)", "x": 6, "y": 4, "w": 1.25 }, + { "label": "K93 (F4,B5)", "x": 7.25, "y": 4, "w": 2.75 }, + { "label": "K94 (F4,B4)", "x": 10, "y": 4, "w": 1.25 }, + { "label": "K85 (F5,D7)", "x": 11.25, "y": 4, "w": 1.25 }, + { "label": "K95 (F4,D7)", "x": 13, "y": 4 }, + { "label": "K97 (F4,D3)", "x": 14, "y": 4 }, + { "label": "K87 (F5,D3)", "x": 15, "y": 4 } + ] + }, + "LAYOUT_65_ansi_blocker_split_bs_sp": { + "layout": [ + { "label": "K00 (B1,C7)", "x": 0, "y": 0 }, + { "label": "K10 (B2,C7)", "x": 1, "y": 0 }, + { "label": "K01 (B1,C6)", "x": 2, "y": 0 }, + { "label": "K11 (B2,C6)", "x": 3, "y": 0 }, + { "label": "K02 (B1,B6)", "x": 4, "y": 0 }, + { "label": "K12 (B2,B6)", "x": 5, "y": 0 }, + { "label": "K03 (B1,B5)", "x": 6, "y": 0 }, + { "label": "K13 (B2,B5)", "x": 7, "y": 0 }, + { "label": "K04 (B1,B4)", "x": 8, "y": 0 }, + { "label": "K14 (B2,B4)", "x": 9, "y": 0 }, + { "label": "K05 (B1,D7)", "x": 10, "y": 0 }, + { "label": "K15 (B2,D7)", "x": 11, "y": 0 }, + { "label": "K06 (B1,D5)", "x": 12, "y": 0 }, + { "label": "K26 (D1,D5)", "x": 13, "y": 0 }, + { "label": "K17 (B2,D3)", "x": 14, "y": 0 }, + { "label": "K07 (B1,D3)", "x": 15, "y": 0 }, + { "label": "K20 (D1,C7)", "x": 0, "y": 1, "w": 1.5 }, + { "label": "K30 (D2,C7)", "x": 1.5, "y": 1 }, + { "label": "K21 (D1,C6)", "x": 2.5, "y": 1 }, + { "label": "K31 (D2,C6)", "x": 3.5, "y": 1 }, + { "label": "K22 (D1,B6)", "x": 4.5, "y": 1 }, + { "label": "K32 (D2,B6)", "x": 5.5, "y": 1 }, + { "label": "K23 (D1,B5)", "x": 6.5, "y": 1 }, + { "label": "K33 (D2,B5)", "x": 7.5, "y": 1 }, + { "label": "K24 (D1,B4)", "x": 8.5, "y": 1 }, + { "label": "K34 (D2,B4)", "x": 9.5, "y": 1 }, + { "label": "K25 (D1,D7)", "x": 10.5, "y": 1 }, + { "label": "K35 (D2,D7)", "x": 11.5, "y": 1 }, + { "label": "K36 (D2,D5)", "x": 12.5, "y": 1 }, + { "label": "K46 (D4,D5)", "x": 13.5, "y": 1, "w": 1.5 }, + { "label": "K37 (D2,D3)", "x": 15, "y": 1 }, + { "label": "K40 (D4,C7)", "x": 0, "y": 2, "w": 1.75 }, + { "label": "K50 (D6,C7)", "x": 1.75, "y": 2 }, + { "label": "K41 (D4,C6)", "x": 2.75, "y": 2 }, + { "label": "K51 (D6,C6)", "x": 3.75, "y": 2 }, + { "label": "K42 (D4,B6)", "x": 4.75, "y": 2 }, + { "label": "K52 (D6,B6)", "x": 5.75, "y": 2 }, + { "label": "K43 (D4,B5)", "x": 6.75, "y": 2 }, + { "label": "K53 (D6,B5)", "x": 7.75, "y": 2 }, + { "label": "K44 (D4,B4)", "x": 8.75, "y": 2 }, + { "label": "K54 (D6,B4)", "x": 9.75, "y": 2 }, + { "label": "K45 (D4,D7)", "x": 10.75, "y": 2 }, + { "label": "K55 (D6,D7)", "x": 11.75, "y": 2 }, + { "label": "K47 (D4,D3)", "x": 12.75, "y": 2, "w": 2.25 }, + { "label": "K57 (D6,D3)", "x": 15, "y": 2 }, + { "label": "K60 (F6,C7)", "x": 0, "y": 3, "w": 2.25 }, + { "label": "K70 (F7,C7)", "x": 2.25, "y": 3 }, + { "label": "K61 (F6,C6)", "x": 3.25, "y": 3 }, + { "label": "K71 (F7,C6)", "x": 4.25, "y": 3 }, + { "label": "K62 (F6,B6)", "x": 5.25, "y": 3 }, + { "label": "K72 (F7,B6)", "x": 6.25, "y": 3 }, + { "label": "K63 (F6,B5)", "x": 7.25, "y": 3 }, + { "label": "K73 (F7,B5)", "x": 8.25, "y": 3 }, + { "label": "K64 (F6,B4)", "x": 9.25, "y": 3 }, + { "label": "K74 (F7,B4)", "x": 10.25, "y": 3 }, + { "label": "K65 (F6,D7)", "x": 11.25, "y": 3 }, + { "label": "K75 (F7,D7)", "x": 12.25, "y": 3, "w": 1.75 }, + { "label": "K77 (F7,D3)", "x": 14, "y": 3 }, + { "label": "K67 (F6,D3)", "x": 15, "y": 3 }, + { "label": "K80 (F5,C7)", "x": 0, "y": 4, "w": 1.25 }, + { "label": "K90 (F4,C7)", "x": 1.25, "y": 4, "w": 1.25 }, + { "label": "K81 (F5,C6)", "x": 2.5, "y": 4, "w": 1.25 }, + { "label": "K82 (F5,B6)", "x": 3.75, "y": 4, "w": 2.25 }, + { "label": "K92 (F4,B6)", "x": 6, "y": 4, "w": 1.25 }, + { "label": "K93 (F4,B5)", "x": 7.25, "y": 4, "w": 2.75 }, + { "label": "K94 (F4,B4)", "x": 10, "y": 4, "w": 1.25 }, + { "label": "K85 (F5,D7)", "x": 11.25, "y": 4, "w": 1.25 }, + { "label": "K95 (F4,D7)", "x": 13, "y": 4 }, + { "label": "K97 (F4,D3)", "x": 14, "y": 4 }, + { "label": "K87 (F5,D3)", "x": 15, "y": 4 } + ] + }, + + "LAYOUT_65_ansi_blocker": { + "layout": [ + { "label": "K00 (B1,C7)", "x": 0, "y": 0 }, + { "label": "K10 (B2,C7)", "x": 1, "y": 0 }, + { "label": "K01 (B1,C6)", "x": 2, "y": 0 }, + { "label": "K11 (B2,C6)", "x": 3, "y": 0 }, + { "label": "K02 (B1,B6)", "x": 4, "y": 0 }, + { "label": "K12 (B2,B6)", "x": 5, "y": 0 }, + { "label": "K03 (B1,B5)", "x": 6, "y": 0 }, + { "label": "K13 (B2,B5)", "x": 7, "y": 0 }, + { "label": "K04 (B1,B4)", "x": 8, "y": 0 }, + { "label": "K14 (B2,B4)", "x": 9, "y": 0 }, + { "label": "K05 (B1,D7)", "x": 10, "y": 0 }, + { "label": "K15 (B2,D7)", "x": 11, "y": 0 }, + { "label": "K06 (B1,D5)", "x": 12, "y": 0 }, + { "label": "K26 (D1,D5)", "x": 13, "y": 0, "w": 2 }, + { "label": "K07 (B1,D3)", "x": 15, "y": 0 }, + { "label": "K20 (D1,C7)", "x": 0, "y": 1, "w": 1.5 }, + { "label": "K30 (D2,C7)", "x": 1.5, "y": 1 }, + { "label": "K21 (D1,C6)", "x": 2.5, "y": 1 }, + { "label": "K31 (D2,C6)", "x": 3.5, "y": 1 }, + { "label": "K22 (D1,B6)", "x": 4.5, "y": 1 }, + { "label": "K32 (D2,B6)", "x": 5.5, "y": 1 }, + { "label": "K23 (D1,B5)", "x": 6.5, "y": 1 }, + { "label": "K33 (D2,B5)", "x": 7.5, "y": 1 }, + { "label": "K24 (D1,B4)", "x": 8.5, "y": 1 }, + { "label": "K34 (D2,B4)", "x": 9.5, "y": 1 }, + { "label": "K25 (D1,D7)", "x": 10.5, "y": 1 }, + { "label": "K35 (D2,D7)", "x": 11.5, "y": 1 }, + { "label": "K36 (D2,D5)", "x": 12.5, "y": 1 }, + { "label": "K46 (D4,D5)", "x": 13.5, "y": 1, "w": 1.5 }, + { "label": "K37 (D2,D3)", "x": 15, "y": 1 }, + { "label": "K40 (D4,C7)", "x": 0, "y": 2, "w": 1.75 }, + { "label": "K50 (D6,C7)", "x": 1.75, "y": 2 }, + { "label": "K41 (D4,C6)", "x": 2.75, "y": 2 }, + { "label": "K51 (D6,C6)", "x": 3.75, "y": 2 }, + { "label": "K42 (D4,B6)", "x": 4.75, "y": 2 }, + { "label": "K52 (D6,B6)", "x": 5.75, "y": 2 }, + { "label": "K43 (D4,B5)", "x": 6.75, "y": 2 }, + { "label": "K53 (D6,B5)", "x": 7.75, "y": 2 }, + { "label": "K44 (D4,B4)", "x": 8.75, "y": 2 }, + { "label": "K54 (D6,B4)", "x": 9.75, "y": 2 }, + { "label": "K45 (D4,D7)", "x": 10.75, "y": 2 }, + { "label": "K55 (D6,D7)", "x": 11.75, "y": 2 }, + { "label": "K47 (D4,D3)", "x": 12.75, "y": 2, "w": 2.25 }, + { "label": "K57 (D6,D3)", "x": 15, "y": 2 }, + { "label": "K60 (F6,C7)", "x": 0, "y": 3, "w": 2.25 }, + { "label": "K70 (F7,C7)", "x": 2.25, "y": 3 }, + { "label": "K61 (F6,C6)", "x": 3.25, "y": 3 }, + { "label": "K71 (F7,C6)", "x": 4.25, "y": 3 }, + { "label": "K62 (F6,B6)", "x": 5.25, "y": 3 }, + { "label": "K72 (F7,B6)", "x": 6.25, "y": 3 }, + { "label": "K63 (F6,B5)", "x": 7.25, "y": 3 }, + { "label": "K73 (F7,B5)", "x": 8.25, "y": 3 }, + { "label": "K64 (F6,B4)", "x": 9.25, "y": 3 }, + { "label": "K74 (F7,B4)", "x": 10.25, "y": 3 }, + { "label": "K65 (F6,D7)", "x": 11.25, "y": 3 }, + { "label": "K75 (F7,D7)", "x": 12.25, "y": 3, "w": 1.75 }, + { "label": "K77 (F7,D3)", "x": 14, "y": 3 }, + { "label": "K67 (F6,D3)", "x": 15, "y": 3 }, + { "label": "K80 (F5,C7)", "x": 0, "y": 4, "w": 1.25 }, + { "label": "K90 (F4,C7)", "x": 1.25, "y": 4, "w": 1.25 }, + { "label": "K81 (F5,C6)", "x": 2.5, "y": 4, "w": 1.25 }, + { "label": "K92 (F4,B6)", "x": 3.75, "y": 4, "w": 6.25 }, + { "label": "K94 (F4,B4)", "x": 10, "y": 4, "w": 1.25 }, + { "label": "K85 (F5,D7)", "x": 11.25, "y": 4, "w": 1.25 }, + { "label": "K95 (F4,D7)", "x": 13, "y": 4 }, + { "label": "K97 (F4,D3)", "x": 14, "y": 4 }, + { "label": "K87 (F5,D3)", "x": 15, "y": 4 } + ] + }, + "LAYOUT_65_ansi_blocker_split_bs": { + "layout": [ + { "label": "K00 (B1,C7)", "x": 0, "y": 0 }, + { "label": "K10 (B2,C7)", "x": 1, "y": 0 }, + { "label": "K01 (B1,C6)", "x": 2, "y": 0 }, + { "label": "K11 (B2,C6)", "x": 3, "y": 0 }, + { "label": "K02 (B1,B6)", "x": 4, "y": 0 }, + { "label": "K12 (B2,B6)", "x": 5, "y": 0 }, + { "label": "K03 (B1,B5)", "x": 6, "y": 0 }, + { "label": "K13 (B2,B5)", "x": 7, "y": 0 }, + { "label": "K04 (B1,B4)", "x": 8, "y": 0 }, + { "label": "K14 (B2,B4)", "x": 9, "y": 0 }, + { "label": "K05 (B1,D7)", "x": 10, "y": 0 }, + { "label": "K15 (B2,D7)", "x": 11, "y": 0 }, + { "label": "K06 (B1,D5)", "x": 12, "y": 0 }, + { "label": "K26 (D1,D5)", "x": 13, "y": 0 }, + { "label": "K17 (B2,D3)", "x": 14, "y": 0 }, + { "label": "K07 (B1,D3)", "x": 15, "y": 0 }, + { "label": "K20 (D1,C7)", "x": 0, "y": 1, "w": 1.5 }, + { "label": "K30 (D2,C7)", "x": 1.5, "y": 1 }, + { "label": "K21 (D1,C6)", "x": 2.5, "y": 1 }, + { "label": "K31 (D2,C6)", "x": 3.5, "y": 1 }, + { "label": "K22 (D1,B6)", "x": 4.5, "y": 1 }, + { "label": "K32 (D2,B6)", "x": 5.5, "y": 1 }, + { "label": "K23 (D1,B5)", "x": 6.5, "y": 1 }, + { "label": "K33 (D2,B5)", "x": 7.5, "y": 1 }, + { "label": "K24 (D1,B4)", "x": 8.5, "y": 1 }, + { "label": "K34 (D2,B4)", "x": 9.5, "y": 1 }, + { "label": "K25 (D1,D7)", "x": 10.5, "y": 1 }, + { "label": "K35 (D2,D7)", "x": 11.5, "y": 1 }, + { "label": "K36 (D2,D5)", "x": 12.5, "y": 1 }, + { "label": "K46 (D4,D5)", "x": 13.5, "y": 1, "w": 1.5 }, + { "label": "K37 (D2,D3)", "x": 15, "y": 1 }, + { "label": "K40 (D4,C7)", "x": 0, "y": 2, "w": 1.75 }, + { "label": "K50 (D6,C7)", "x": 1.75, "y": 2 }, + { "label": "K41 (D4,C6)", "x": 2.75, "y": 2 }, + { "label": "K51 (D6,C6)", "x": 3.75, "y": 2 }, + { "label": "K42 (D4,B6)", "x": 4.75, "y": 2 }, + { "label": "K52 (D6,B6)", "x": 5.75, "y": 2 }, + { "label": "K43 (D4,B5)", "x": 6.75, "y": 2 }, + { "label": "K53 (D6,B5)", "x": 7.75, "y": 2 }, + { "label": "K44 (D4,B4)", "x": 8.75, "y": 2 }, + { "label": "K54 (D6,B4)", "x": 9.75, "y": 2 }, + { "label": "K45 (D4,D7)", "x": 10.75, "y": 2 }, + { "label": "K55 (D6,D7)", "x": 11.75, "y": 2 }, + { "label": "K47 (D4,D3)", "x": 12.75, "y": 2, "w": 2.25 }, + { "label": "K57 (D6,D3)", "x": 15, "y": 2 }, + { "label": "K60 (F6,C7)", "x": 0, "y": 3, "w": 2.25 }, + { "label": "K70 (F7,C7)", "x": 2.25, "y": 3 }, + { "label": "K61 (F6,C6)", "x": 3.25, "y": 3 }, + { "label": "K71 (F7,C6)", "x": 4.25, "y": 3 }, + { "label": "K62 (F6,B6)", "x": 5.25, "y": 3 }, + { "label": "K72 (F7,B6)", "x": 6.25, "y": 3 }, + { "label": "K63 (F6,B5)", "x": 7.25, "y": 3 }, + { "label": "K73 (F7,B5)", "x": 8.25, "y": 3 }, + { "label": "K64 (F6,B4)", "x": 9.25, "y": 3 }, + { "label": "K74 (F7,B4)", "x": 10.25, "y": 3 }, + { "label": "K65 (F6,D7)", "x": 11.25, "y": 3 }, + { "label": "K75 (F7,D7)", "x": 12.25, "y": 3, "w": 1.75 }, + { "label": "K77 (F7,D3)", "x": 14, "y": 3 }, + { "label": "K67 (F6,D3)", "x": 15, "y": 3 }, + { "label": "K80 (F5,C7)", "x": 0, "y": 4, "w": 1.25 }, + { "label": "K90 (F4,C7)", "x": 1.25, "y": 4, "w": 1.25 }, + { "label": "K81 (F5,C6)", "x": 2.5, "y": 4, "w": 1.25 }, + { "label": "K92 (F4,B6)", "x": 3.75, "y": 4, "w": 6.25 }, + { "label": "K94 (F4,B4)", "x": 10, "y": 4, "w": 1.25 }, + { "label": "K85 (F5,D7)", "x": 11.25, "y": 4, "w": 1.25 }, + { "label": "K95 (F4,D7)", "x": 13, "y": 4 }, + { "label": "K97 (F4,D3)", "x": 14, "y": 4 }, + { "label": "K87 (F5,D3)", "x": 15, "y": 4 } + ] + } + } +} diff --git a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker/keymap.c b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker/keymap.c new file mode 100644 index 000000000000..e318957ac8c9 --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2021 SawnsProjects + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + + [0] = LAYOUT_65_ansi_blocker( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_SPC, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_65_ansi_blocker( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + +}; + diff --git a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker/readme.md b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker/readme.md new file mode 100644 index 000000000000..181cc9a013f8 --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker/readme.md @@ -0,0 +1 @@ +# The keymap for krush65 solder layout ansi blocker \ No newline at end of file diff --git a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_all/keymap.c b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_all/keymap.c new file mode 100644 index 000000000000..e74181129a59 --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_all/keymap.c @@ -0,0 +1,38 @@ +/* Copyright 2021 SawnsProjects + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + + [0] = LAYOUT_65_ansi_blocker_split_bs_sp( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, KC_PSCR, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_65_ansi_blocker_split_bs_sp( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + +}; diff --git a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_all/readme.md b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_all/readme.md new file mode 100644 index 000000000000..b6d1da89aa15 --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_all/readme.md @@ -0,0 +1 @@ +# The keymap for krush65 solder layout ansi blocker with split backspace and split spacebar \ No newline at end of file diff --git a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_bs/keymap.c b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_bs/keymap.c new file mode 100644 index 000000000000..54f2975c2715 --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_bs/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2021 SawnsProjects + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + + + [0] = LAYOUT_65_ansi_blocker_split_bs( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, KC_PSCR, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_65_ansi_blocker_split_bs( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + +}; diff --git a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_bs/readme.md b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_bs/readme.md new file mode 100644 index 000000000000..162da7a90345 --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_bs/readme.md @@ -0,0 +1 @@ +# The keymap for krush65 solder layout ansi blocker with split backspace \ No newline at end of file diff --git a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/default/keymap.c b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/default/keymap.c new file mode 100644 index 000000000000..13883d07e45e --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/default/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2021 SawnsProjects + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + + [0] = 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_BSPC, KC_GRV, KC_PSCR, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_all( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + +}; + diff --git a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/default/readme.md b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/default/readme.md new file mode 100644 index 000000000000..1f98b857ce58 --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for krush65 solder \ No newline at end of file diff --git a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/sawns/keymap.c b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/sawns/keymap.c new file mode 100644 index 000000000000..d252058bde83 --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/sawns/keymap.c @@ -0,0 +1,75 @@ +/* Copyright 2021 SawnsProjects + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + +#include QMK_KEYBOARD_H +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = 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_BSPC, KC_GRV, KC_PSCR, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_all( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; + + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + switch (get_highest_layer(layer_state)) { + case 0: + // main layer - move mouse right (CW) and left (CCW) + if (clockwise) { + tap_code_delay(KC_VOLU, 10); + } else { + tap_code_delay(KC_VOLD, 10); + } + break; + default: + // other layers - =/+ (quals/plus) (CW) and -/_ (minus/underscore) (CCW) + if (clockwise) { + tap_code16(C(KC_EQL)); + } else { + tap_code16(C(KC_MINS)); + } + break; + } + } + return false; +} \ No newline at end of file diff --git a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/sawns/readme.md b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/sawns/readme.md new file mode 100644 index 000000000000..ff710c521f08 --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/sawns/readme.md @@ -0,0 +1 @@ +#custom keymap for MikeTheSan \ No newline at end of file diff --git a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/sawns/rules.mk b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/sawns/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/sawns/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/via/keymap.c b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/via/keymap.c new file mode 100644 index 000000000000..873df5cb9fc0 --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/via/keymap.c @@ -0,0 +1,51 @@ +/* Copyright 2021 SawnsProjects + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + + [0] = 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_BSPC, KC_GRV, KC_PSCR, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_all( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; diff --git a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/via/readme.md b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/via/readme.md new file mode 100644 index 000000000000..2c88050060d5 --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/via/readme.md @@ -0,0 +1 @@ +# The VIA keymap for krush65 solder \ No newline at end of file diff --git a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/via/rules.mk b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/sawnsprojects/krush/krush65/solder/readme.md b/keyboards/sawnsprojects/krush/krush65/solder/readme.md new file mode 100644 index 000000000000..27af715eda2c --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush65/solder/readme.md @@ -0,0 +1,15 @@ +# Krush65 solder + +![Krush65](https://cdn.shopify.com/s/files/1/0299/9497/5365/files/4_-_2BS9fH2_2048x2048.jpg) + +A 65% keyboard PCB made and sold by SawnsProjects with Nuxros in [mechkey.store](https://mechkey.store/blogs/store-updates/introducing-krush-65). + +* Keyboard Maintainer: [Mai The San](https://github.com/MaiTheSan) +* Hardware Supported: Krush65 +* Hardware Availability: [Facebook](https://www.facebook.com/groups/vnmkmarket/posts/1410794482649627) + +Make example for this keyboard (after setting up your build environment): + + make sawnsprojects/krush65/solder:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). \ No newline at end of file diff --git a/keyboards/sawnsprojects/krush/krush65/solder/rules.mk b/keyboards/sawnsprojects/krush/krush65/solder/rules.mk new file mode 100644 index 000000000000..696935c92dad --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush65/solder/rules.mk @@ -0,0 +1,21 @@ +# 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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +ENCODER_ENABLE = yes + +LAYOUTS = 65_ansi_blocker 65_ansi_blocker_split_bs \ No newline at end of file diff --git a/keyboards/sawnsprojects/krush/krush65/solder/solder.c b/keyboards/sawnsprojects/krush/krush65/solder/solder.c new file mode 100644 index 000000000000..b8a7729725ca --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush65/solder/solder.c @@ -0,0 +1,53 @@ +/* Copyright 2021 SawnsProjects + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "solder.h" +#include "encoder_actions.h" + + /* Custom encoder control - handles CW/CCW turning of encoder + * Default behavior: + * main layer: + * CW: move mouse right + * CCW: move mouse left + * other layers: + * CW: = (equals/plus - increase slider in Adobe products) + * CCW: - (minus/underscore - decrease slider in adobe products) + */ +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + if (index == 0) { + switch (get_highest_layer(layer_state)) { + + case 0: + // main layer - move mouse right (CW) and left (CCW) + if (clockwise) { + tap_code_delay(KC_VOLU, 10); + } else { + tap_code_delay(KC_VOLD, 10); + } + break; + default: + // other layers - =/+ (quals/plus) (CW) and -/_ (minus/underscore) (CCW) + if (clockwise) { + tap_code16(C(KC_EQL)); + } else { + tap_code16(C(KC_MINS)); + } + break; + } + } + return true; +} \ No newline at end of file diff --git a/keyboards/sawnsprojects/krush/krush65/solder/solder.h b/keyboards/sawnsprojects/krush/krush65/solder/solder.h new file mode 100644 index 000000000000..58f6bed57b1d --- /dev/null +++ b/keyboards/sawnsprojects/krush/krush65/solder/solder.h @@ -0,0 +1,93 @@ +/* Copyright 2021 SawnsProjects + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_all( \ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, K07, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, K37, \ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, K57, \ + K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K77, K67, \ + K80, K90, K81, K82, K92, K93, K94, K85, K95, K97, K87 \ +) { \ + { 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, K46, K47 }, \ + { K50, K51, K52, K53, K54, K55, KC_NO, K57 }, \ + { K60, K61, K62, K63, K64, K65, KC_NO, K67 }, \ + { K70, K71, K72, K73, K74, K75, KC_NO, K77 }, \ + { K80, K81, K82, KC_NO, KC_NO, K85, KC_NO, K87 }, \ + { K90, KC_NO, K92, K93, K94, K95, KC_NO, K97 }, \ +} +#define LAYOUT_65_ansi_blocker( \ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K07, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, K37, \ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, K57, \ + K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K77, K67, \ + K80, K90, K81, K92, K94, K85, K95, K97, K87 \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07 }, \ + { K10, K11, K12, K13, K14, K15, KC_NO, KC_NO }, \ + { K20, K21, K22, K23, K24, K25, K26, KC_NO }, \ + { K30, K31, K32, K33, K34, K35, K36, K37 }, \ + { K40, K41, K42, K43, K44, K45, K46, K47 }, \ + { K50, K51, K52, K53, K54, K55, KC_NO, K57 }, \ + { K60, K61, K62, K63, K64, K65, KC_NO, K67 }, \ + { K70, K71, K72, K73, K74, K75, KC_NO, K77 }, \ + { K80, K81, KC_NO, KC_NO, KC_NO, K85, KC_NO, K87 }, \ + { K90, KC_NO, K92, KC_NO, K94, K95, KC_NO, K97 }, \ +} +#define LAYOUT_65_ansi_blocker_split_bs( \ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, K07, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, K37, \ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, K57, \ + K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K77, K67, \ + K80, K90, K81, K92, K94, K85, K95, K97, K87 \ +) { \ + { 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, K46, K47 }, \ + { K50, K51, K52, K53, K54, K55, KC_NO, K57 }, \ + { K60, K61, K62, K63, K64, K65, KC_NO, K67 }, \ + { K70, K71, K72, K73, K74, K75, KC_NO, K77 }, \ + { K80, K81, KC_NO, KC_NO, KC_NO, K85, KC_NO, K87 }, \ + { K90, KC_NO, K92, KC_NO, K94, K95, KC_NO, K97 }, \ +} +#define LAYOUT_65_ansi_blocker_split_bs_sp( \ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, K07, \ + K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, K37, \ + K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, K57, \ + K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K77, K67, \ + K80, K90, K81, K82, K92, K93, K94, K85, K95, K97, K87 \ +) { \ + { 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, K46, K47 }, \ + { K50, K51, K52, K53, K54, K55, KC_NO, K57 }, \ + { K60, K61, K62, K63, K64, K65, KC_NO, K67 }, \ + { K70, K71, K72, K73, K74, K75, KC_NO, K77 }, \ + { K80, K81, K82, KC_NO, KC_NO, K85, KC_NO, K87 }, \ + { K90, KC_NO, K92, K93, K94, K95, KC_NO, K97 }, \ +} + diff --git a/keyboards/sawnsprojects/satxri6key/config.h b/keyboards/sawnsprojects/satxri6key/config.h new file mode 100644 index 000000000000..bb334c7221e7 --- /dev/null +++ b/keyboards/sawnsprojects/satxri6key/config.h @@ -0,0 +1,122 @@ +/* Copyright 2021 SawnsProjects + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x5350 +#define PRODUCT_ID 0x0727 +#define DEVICE_VER 0x0001 +#define MANUFACTURER MaiTheSan +#define PRODUCT Satxri6key + +/* key matrix size */ +#define MATRIX_ROWS 2 +#define MATRIX_COLS 3 + +/* + * 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 { F7, F6 } +#define MATRIX_COL_PINS { F1, F4, F5 } + +#define DIODE_DIRECTION COL2ROW + +#define RGB_DI_PIN F0 +#ifdef RGB_DI_PIN + #define RGBLED_NUM 6 + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ + #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ + #define RGBLIGHT_ANIMATIONS +// /*== or choose animations ==*/ +// #define RGBLIGHT_EFFECT_BREATHING +// #define RGBLIGHT_EFFECT_RAINBOW_MOOD +// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL +// #define RGBLIGHT_EFFECT_SNAKE +// #define RGBLIGHT_EFFECT_KNIGHT +// #define RGBLIGHT_EFFECT_CHRISTMAS +// #define RGBLIGHT_EFFECT_STATIC_GRADIENT +// #define RGBLIGHT_EFFECT_RGB_TEST +// #define RGBLIGHT_EFFECT_ALTERNATING +#endif + +#define DRIVER_LED_TOTAL 6 +#define RGB_MATRIX_KEYPRESSES // reacts to keypresses +#define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses) +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define RGB_DISABLE_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 200 // 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_SOLID_REACTIVE_SIMPLE // Sets the default mode, if none has been set + +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_FRACTAL +#define ENABLE_RGB_MATRIX_PIXEL_RAIN + +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN + +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH diff --git a/keyboards/sawnsprojects/satxri6key/info.json b/keyboards/sawnsprojects/satxri6key/info.json new file mode 100644 index 000000000000..77897e179c21 --- /dev/null +++ b/keyboards/sawnsprojects/satxri6key/info.json @@ -0,0 +1,17 @@ +{ + "keyboard_name": "Satxri6key", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"K00 (F7,F1)", "x":0, "y":1}, + {"label":"K01 (F7,F4)", "x":1, "y":1}, + {"label":"K02 (F7,F5)", "x":2, "y":1}, + {"label":"K10 (F6,F1)", "x":0, "y":2}, + {"label":"K11 (F6,F4)", "x":1, "y":2}, + {"label":"K12 (F6,F5)", "x":2, "y":2} + ] + } + } +} diff --git a/keyboards/sawnsprojects/satxri6key/keymaps/default/keymap.c b/keyboards/sawnsprojects/satxri6key/keymaps/default/keymap.c new file mode 100644 index 000000000000..b44effb84de3 --- /dev/null +++ b/keyboards/sawnsprojects/satxri6key/keymaps/default/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2021 SawnsProjects + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + +#include QMK_KEYBOARD_H + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + + KC_ESC, KC_GRV, TO(1), + KC_Z, KC_X, KC_C ), + + [1] = LAYOUT( + + KC_TRNS, KC_TRNS, TO(0), + KC_TRNS, KC_TRNS, KC_TRNS ), + + +}; + diff --git a/keyboards/sawnsprojects/satxri6key/keymaps/default/readme.md b/keyboards/sawnsprojects/satxri6key/keymaps/default/readme.md new file mode 100644 index 000000000000..67bd9ee07220 --- /dev/null +++ b/keyboards/sawnsprojects/satxri6key/keymaps/default/readme.md @@ -0,0 +1 @@ +# Default Satxri6key Layout \ No newline at end of file diff --git a/keyboards/sawnsprojects/satxri6key/keymaps/default/rules.mk b/keyboards/sawnsprojects/satxri6key/keymaps/default/rules.mk new file mode 100644 index 000000000000..70b7f6921fa9 --- /dev/null +++ b/keyboards/sawnsprojects/satxri6key/keymaps/default/rules.mk @@ -0,0 +1,4 @@ +VIA_ENABLE = no +RGBLIGHT_ENABLE = no +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = WS2812 diff --git a/keyboards/sawnsprojects/satxri6key/keymaps/via/keymap.c b/keyboards/sawnsprojects/satxri6key/keymaps/via/keymap.c new file mode 100644 index 000000000000..0a2bdb39dc00 --- /dev/null +++ b/keyboards/sawnsprojects/satxri6key/keymaps/via/keymap.c @@ -0,0 +1,165 @@ +/* Copyright 2021 SawnsProjects + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +char wpm_str[4]; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + + KC_ESC, KC_GRV, TO(1), + KC_Z, KC_X, KC_C ), + + [1] = LAYOUT( + + KC_TRNS, KC_TRNS, TO(0), + KC_TRNS, KC_TRNS, KC_TRNS ), + [2] = LAYOUT( + + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS ), + [3] = LAYOUT( + + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS ), + + + +}; +// OLED STUFF STARTS HERE +// based on https://github.com/qmk/qmk_firmware/blob/master/keyboards/kyria/keymaps/j-inc/keymap.c + +// In your rules.mk make sure you have: +// OLED_ENABLE = yes +// WPM_ENABLE = yes + +#ifdef OLED_ENABLE +// WPM-responsive animation stuff here +# define IDLE_FRAMES 5 +# define IDLE_SPEED 20 // below this wpm value your animation will idle + +// #define PREP_FRAMES 1 // uncomment if >1 + +# define TAP_FRAMES 2 +# define TAP_SPEED 40 // above this wpm value typing animation to trigger + +# define ANIM_FRAME_DURATION 200 // how long each frame lasts in ms +// #define SLEEP_TIMER 60000 // should sleep after this period of 0 wpm, needs fixing +# define ANIM_SIZE 636 // number of bytes in array, minimize for adequate firmware size, max is 1024 + +uint32_t anim_timer = 0; +uint32_t anim_sleep = 0; +uint8_t current_idle_frame = 0; +// uint8_t current_prep_frame = 0; // uncomment if PREP_FRAMES >1 +uint8_t current_tap_frame = 0; + +// Code containing pixel art, contains: +// 5 idle frames, 1 prep frame, and 2 tap frames + +// To make your own pixel art: +// save a png/jpeg of an 128x32 image (resource: https://www.pixilart.com/draw ) +// follow this guide up to and including "CONVERT YOUR IMAGE" https://docs.splitkb.com/hc/en-us/articles/360013811280-How-do-I-convert-an-image-for-use-on-an-OLED-display- +// replace numbers in brackets with your own +// if you start getting errors when compiling make sure you didn't accedentally delete a bracket +static void render_anim(void) { + static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 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, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 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, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 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, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xc0, 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 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, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 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, 0x00, 0x00, 0x00, 0x7e, 0x82, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x60, 0x60, 0x00, 0x01, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xc0, 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 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, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 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, 0x00, 0x00, 0x1c, 0x34, 0xc4, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 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, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 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, 0x06, 0x0d, 0x31, 0xc1, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 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, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}; + static const char PROGMEM prep[][ANIM_SIZE] = {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 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, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, 0x82, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x64, 0x18, 0x04, 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x02, 0x18, 0x19, 0x00, 0x05, 0xfe, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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}}; + static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE] = { + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 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, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x64, 0x18, 0x04, 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x98, 0xc0, 0x88, 0x88, 0x8c, 0x9c, 0x1c, 0x1e, 0x0e, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 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, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, 0x82, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x02, 0x18, 0x19, 0x00, 0x05, 0xfe, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 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, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x07, 0x03, 0x03, 0x61, 0xf0, 0xf8, 0xfc, 0x60, 0x01, 0x01, 0x01, 0x3c, 0x78, 0xf8, 0xf0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + }; + + // assumes 1 frame prep stage + void animation_phase(void) { + if (get_current_wpm() <= IDLE_SPEED) { + current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES; + oled_write_raw_P(idle[abs((IDLE_FRAMES - 1) - current_idle_frame)], ANIM_SIZE); + } + if (get_current_wpm() > IDLE_SPEED && get_current_wpm() < TAP_SPEED) { + // oled_write_raw_P(prep[abs((PREP_FRAMES-1)-current_prep_frame)], ANIM_SIZE); // uncomment if IDLE_FRAMES >1 + oled_write_raw_P(prep[0], ANIM_SIZE); // remove if IDLE_FRAMES >1 + } + if (get_current_wpm() >= TAP_SPEED) { + current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES; + oled_write_raw_P(tap[abs((TAP_FRAMES - 1) - current_tap_frame)], ANIM_SIZE); + } + } + if (get_current_wpm() != 000) { + oled_on(); // not essential but turns on animation OLED with any alpha keypress + if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { + anim_timer = timer_read32(); + animation_phase(); + } + anim_sleep = timer_read32(); + } else { + if (timer_elapsed32(anim_sleep) > OLED_TIMEOUT) { + oled_off(); + } else { + if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { + anim_timer = timer_read32(); + animation_phase(); + } + } + } +} + +// Used to draw on to the oled screen +bool oled_task_user(void) { + render_anim(); // renders pixelart + + oled_set_cursor(0, 0); // sets cursor to (row, column) using charactar spacing (5 rows on 128x32 screen, anything more will overflow back to the top) + uint8_t n = get_current_wpm(); + wpm_str[3] = '\0'; + wpm_str[2] = '0' + n % 10; + wpm_str[1] = (n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' '; + wpm_str[0] = n / 10 ? '0' + n / 10 : ' '; + oled_write_P(PSTR("WPM: "), false); + oled_write(wpm_str, false); + + led_t led_state = host_keyboard_led_state(); // caps lock stuff, prints CAPS on new line if caps led is on + oled_set_cursor(0, 1); + oled_write_P(led_state.caps_lock ? PSTR("CAPS") : PSTR(" "), false); + return false; +} +#endif diff --git a/keyboards/sawnsprojects/satxri6key/keymaps/via/rules.mk b/keyboards/sawnsprojects/satxri6key/keymaps/via/rules.mk new file mode 100644 index 000000000000..3428d6af7aaa --- /dev/null +++ b/keyboards/sawnsprojects/satxri6key/keymaps/via/rules.mk @@ -0,0 +1,5 @@ +VIA_ENABLE = yes +OLED_ENABLE = no +WPM_ENABLE = no +RGBLIGHT_ENABLE = yes +LTO_ENABLE = no diff --git a/keyboards/sawnsprojects/satxri6key/readme.md b/keyboards/sawnsprojects/satxri6key/readme.md new file mode 100644 index 000000000000..12307983b90b --- /dev/null +++ b/keyboards/sawnsprojects/satxri6key/readme.md @@ -0,0 +1,15 @@ +# satxri6key + +![satxri6key](https://cdn.discordapp.com/attachments/860603126151512084/860671133778182194/20210703_051841.jpg) + +A 6% (2x3) ortholinear keyboard kit made and sold by SawnsProjects in TamHuyetTournament (Osu! Group). + +* Keyboard Maintainer: [Mai The San](https://github.com/MaiTheSan) +* Hardware Supported: Satxri6key +* Hardware Availability: [GitHub](https://github.com/MaiTheSan/Satxri6key) + +Make example for this keyboard (after setting up your build environment): + + make sawnsprojects/satxri6key: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/sawnsprojects/satxri6key/rules.mk b/keyboards/sawnsprojects/satxri6key/rules.mk new file mode 100644 index 000000000000..ed4bf3962e95 --- /dev/null +++ b/keyboards/sawnsprojects/satxri6key/rules.mk @@ -0,0 +1,18 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/sawnsprojects/satxri6key/satxri6key.c b/keyboards/sawnsprojects/satxri6key/satxri6key.c new file mode 100644 index 000000000000..a1b988de8d45 --- /dev/null +++ b/keyboards/sawnsprojects/satxri6key/satxri6key.c @@ -0,0 +1,31 @@ +/* Copyright 2021 SawnsProjects + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "satxri6key.h" +#ifdef RGB_MATRIX_ENABLE +led_config_t g_led_config = { { + //Key Matrix to LED Indexccxxz + {0, 1, 2}, + {5, 4, 3} +}, { + //LED Index to Physical Positon + {0, 0}, {112, 0}, {224, 0}, + {224, 64}, {112, 64}, {0, 64}, +}, { + 1, 1, 1, + 1, 1, 1, +} }; +#endif \ No newline at end of file diff --git a/keyboards/sawnsprojects/satxri6key/satxri6key.h b/keyboards/sawnsprojects/satxri6key/satxri6key.h new file mode 100644 index 000000000000..2f5dca0e3752 --- /dev/null +++ b/keyboards/sawnsprojects/satxri6key/satxri6key.h @@ -0,0 +1,27 @@ +/* Copyright 2021 SawnsProjects + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT(\ + K00, K01, K02,\ + K10, K11, K12\ + ) { \ + { K00, K01, K02 },\ + { K10, K11, K12 } \ +} diff --git a/keyboards/scarletbandana/info.json b/keyboards/scarletbandana/info.json index 9fb7c230ae73..c70009319419 100644 --- a/keyboards/scarletbandana/info.json +++ b/keyboards/scarletbandana/info.json @@ -2,11 +2,9 @@ "keyboard_name": "Scarlet Bandana Version IV Mark 2", "url": "", "maintainer": "qmk", - "width": 18.5, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2.5, "y":0}, {"x":3.5, "y":0}, {"x":4.5, "y":0}, {"x":5.5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":10.5, "y":0}, {"x":11.5, "y":0}, {"x":12.5, "y":0}, {"x":13.5, "y":0}, {"x":14.5, "y":0}, {"x":15.5, "y":0}, {"x":16.5, "y":0}, {"x":17.5, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2.5, "y":1, "w":1.5}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, {"x":15, "y":1}, {"x":16, "y":1, "w":1.5}, {"x":17.5, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2.5, "y":2, "w":1.75}, {"x":4.25, "y":2}, {"x":5.25, "y":2}, {"x":6.25, "y":2}, {"x":7.25, "y":2}, {"x":8.25, "y":2}, {"x":9.25, "y":2}, {"x":10.25, "y":2}, {"x":11.25, "y":2}, {"x":12.25, "y":2}, {"x":13.25, "y":2}, {"x":14.25, "y":2}, {"x":15.25, "y":2, "w":2.25}, {"x":17.5, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2.5, "y":3, "w":2.25}, {"x":4.75, "y":3}, {"x":5.75, "y":3}, {"x":6.75, "y":3}, {"x":7.75, "y":3}, {"x":8.75, "y":3}, {"x":9.75, "y":3}, {"x":10.75, "y":3}, {"x":11.75, "y":3}, {"x":12.75, "y":3}, {"x":13.75, "y":3}, {"x":14.75, "y":3, "w":1.75}, {"x":16.5, "y":3}, {"x":17.5, "y":3}, {"x":0, "y":4}, {"x":1, "y":4}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":1.25}, {"x":5, "y":4, "w":1.25}, {"x":6.25, "y":4, "w":2.25}, {"x":8.5, "y":4, "w":1.75}, {"x":10.25, "y":4, "w":2.25}, {"x":12.5, "y":4}, {"x":13.5, "y":4}, {"x":14.5, "y":4}, {"x":15.5, "y":4}, {"x":16.5, "y":4}, {"x":17.5, "y":4}] } } -} \ No newline at end of file +} diff --git a/keyboards/scarletbandana/keymaps/default/keymap.c b/keyboards/scarletbandana/keymaps/default/keymap.c index 55d8f07c1b86..3060bb76ae87 100644 --- a/keyboards/scarletbandana/keymaps/default/keymap.c +++ b/keyboards/scarletbandana/keymaps/default/keymap.c @@ -87,14 +87,6 @@ void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) { float tone_qwerty[][2] = SONG(QWERTY_SOUND); #endif -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case LOWER: @@ -167,7 +159,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/scarletbandana/rules.mk b/keyboards/scarletbandana/rules.mk index 2410b2c42c5c..2fc195a8e722 100644 --- a/keyboards/scarletbandana/rules.mk +++ b/keyboards/scarletbandana/rules.mk @@ -2,31 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE = yes # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality, also set ISSI_ENABLE below for Miera -EXTRAFLAGS += -flto +LTO_ENABLE = yes diff --git a/keyboards/scatter42/info.json b/keyboards/scatter42/info.json index a682eb61d093..5802fc5cdcfd 100644 --- a/keyboards/scatter42/info.json +++ b/keyboards/scatter42/info.json @@ -2,8 +2,6 @@ "keyboard_name": "scatter42", "url": "https://github.com/bbrfkr/keyboards/tree/master/scatter42", "maintainer": "bbrfkr", - "width": 14, - "height": 5.125, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/scatter42/rules.mk b/keyboards/scatter42/rules.mk index 29f4021bbdfd..0a94a687099f 100644 --- a/keyboards/scatter42/rules.mk +++ b/keyboards/scatter42/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 SPLIT_KEYBOARD = yes \ No newline at end of file diff --git a/keyboards/sck/gtm/info.json b/keyboards/sck/gtm/info.json index 7b6a6375cb7f..147704f65eec 100644 --- a/keyboards/sck/gtm/info.json +++ b/keyboards/sck/gtm/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Grand Theft Macro Pad", "url": "", "maintainer": "jrfhoutx", - "width": 6.5, - "height": 2, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/sck/gtm/rules.mk b/keyboards/sck/gtm/rules.mk index a6320386fa17..918c5249eb66 100644 --- a/keyboards/sck/gtm/rules.mk +++ b/keyboards/sck/gtm/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u2 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 # [Crawlpad] Custom backlighting code is used, so this should not be enabled AUDIO_ENABLE = no # [Crawlpad] This can be enabled if a speaker is connected to the expansion port. Not compatible with RGBLIGHT below diff --git a/keyboards/sck/m0116b/config.h b/keyboards/sck/m0116b/config.h index 3246ab74f44b..b01ea2d2ef7d 100644 --- a/keyboards/sck/m0116b/config.h +++ b/keyboards/sck/m0116b/config.h @@ -121,59 +121,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -192,26 +139,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ #define BOOTMAGIC_LITE_ROW 0 #define BOOTMAGIC_LITE_COLUMN 6 diff --git a/keyboards/sck/m0116b/info.json b/keyboards/sck/m0116b/info.json index e8d8fb221f02..37b3a1017670 100644 --- a/keyboards/sck/m0116b/info.json +++ b/keyboards/sck/m0116b/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Golden Delicious - M0116B", "url": "https://github.com/jrfhoutx", "maintainer": "jrfhoutx", - "width": 19.5, - "height": 6.25, "layouts": { "LAYOUT_m0116_ansi": { - "key_count": 81, "layout": [ {"label":"K06 (D1,B2)", "x":5, "y":0, "w":2}, {"label":"K10 (F0,D5)", "x":0, "y":1.25}, @@ -92,7 +89,6 @@ ] }, "LAYOUT_m0118_iso": { - "key_count": 82, "layout": [ {"label":"K06 (D1,B2)", "x":5, "y":0, "w":2}, {"label":"K10 (F0,D5)", "x":0, "y":1.25}, diff --git a/keyboards/sck/m0116b/keymaps/default/keymap.c b/keyboards/sck/m0116b/keymaps/default/keymap.c index b8ae5931f2c2..8a6f831fe6b5 100644 --- a/keyboards/sck/m0116b/keymaps/default/keymap.c +++ b/keyboards/sck/m0116b/keymaps/default/keymap.c @@ -72,14 +72,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case M0116B: @@ -94,7 +86,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; }; - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/sck/m0116b/keymaps/m0116/keymap.c b/keyboards/sck/m0116b/keymaps/m0116/keymap.c index b8ae5931f2c2..8a6f831fe6b5 100644 --- a/keyboards/sck/m0116b/keymaps/m0116/keymap.c +++ b/keyboards/sck/m0116b/keymaps/m0116/keymap.c @@ -72,14 +72,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case M0116B: @@ -94,7 +86,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; }; - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/sck/m0116b/keymaps/m0118/keymap.c b/keyboards/sck/m0116b/keymaps/m0118/keymap.c index 094d700661dc..5d718e9a7710 100644 --- a/keyboards/sck/m0116b/keymaps/m0118/keymap.c +++ b/keyboards/sck/m0116b/keymaps/m0118/keymap.c @@ -72,14 +72,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case M0116B: @@ -94,7 +86,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; }; - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/sck/m0116b/m0116b.c b/keyboards/sck/m0116b/m0116b.c index 2e0a4ae2c758..368bc3eafd4b 100644 --- a/keyboards/sck/m0116b/m0116b.c +++ b/keyboards/sck/m0116b/m0116b.c @@ -14,38 +14,3 @@ * along with this program. If not, see . */ #include "m0116b.h" - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -/* - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - -*/ diff --git a/keyboards/sck/m0116b/rules.mk b/keyboards/sck/m0116b/rules.mk index 0507ad0b13d8..60eb027a116f 100644 --- a/keyboards/sck/m0116b/rules.mk +++ b/keyboards/sck/m0116b/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/sck/neiso/config.h b/keyboards/sck/neiso/config.h index 71f50d198969..ccf4da9f1018 100644 --- a/keyboards/sck/neiso/config.h +++ b/keyboards/sck/neiso/config.h @@ -141,26 +141,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/sck/neiso/info.json b/keyboards/sck/neiso/info.json index 1484cd7f27f2..069b01a2e9ca 100644 --- a/keyboards/sck/neiso/info.json +++ b/keyboards/sck/neiso/info.json @@ -2,8 +2,6 @@ "keyboard_name": "NEISO", "url": "", "maintainer": "jrfhoutx", - "width": 9.25, - "height": 14.25, "layouts": { "LAYOUT": { "layout": [{"x":0.25, "y":0, "w":2, "h":1.25}, {"x":2.75, "y":0.25, "w":1.25, "h":2}, {"x":1.5, "y":1.5}, {"x":0, "y":1.75, "w":1.25, "h":2}, {"x":1.75, "y":2.75, "w":2, "h":1.25}] diff --git a/keyboards/sck/neiso/neiso.c b/keyboards/sck/neiso/neiso.c index 4b817bdd57df..8fe008e28bbb 100644 --- a/keyboards/sck/neiso/neiso.c +++ b/keyboards/sck/neiso/neiso.c @@ -14,17 +14,3 @@ * along with this program. If not, see . */ #include "neiso.h" - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -/* - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - -*/ diff --git a/keyboards/sck/neiso/rules.mk b/keyboards/sck/neiso/rules.mk index 8b5cc72ff89d..91c503978cb4 100644 --- a/keyboards/sck/neiso/rules.mk +++ b/keyboards/sck/neiso/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE = no # Audio output diff --git a/keyboards/sck/osa/config.h b/keyboards/sck/osa/config.h index 131ae98f8f0f..957652f286cd 100644 --- a/keyboards/sck/osa/config.h +++ b/keyboards/sck/osa/config.h @@ -127,59 +127,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -198,26 +145,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ //#define BOOTMAGIC_LITE_ROW 0 //#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/sck/osa/info.json b/keyboards/sck/osa/info.json index 3736ebeec5b3..210c302f900d 100644 --- a/keyboards/sck/osa/info.json +++ b/keyboards/sck/osa/info.json @@ -2,23 +2,17 @@ "keyboard_name": "OSA", "url": "", "maintainer": "qmk", - "width": 18.25, - "height": 5, "layouts": { "LAYOUT_default_ansi": { - "key_count": 64, "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"~", "x":1.25, "y":0}, {"label":"!", "x":2.25, "y":0}, {"label":"@", "x":3.25, "y":0}, {"label":"#", "x":4.25, "y":0}, {"label":"$", "x":5.25, "y":0}, {"label":"%", "x":6.25, "y":0}, {"label":"^", "x":7.25, "y":0}, {"label":"&", "x":10.25, "y":0}, {"label":"*", "x":11.25, "y":0}, {"label":"(", "x":12.25, "y":0}, {"label":")", "x":13.25, "y":0}, {"label":"_", "x":14.25, "y":0}, {"label":"+", "x":15.25, "y":0}, {"label":"Backspace", "x":16.25, "y":0, "w":2}, {"label":"Page Up", "x":0, "y":1}, {"label":"Tab", "x":1.25, "y":1, "w":1.5}, {"label":"Q", "x":2.75, "y":1}, {"label":"W", "x":3.75, "y":1}, {"label":"E", "x":4.75, "y":1}, {"label":"R", "x":5.75, "y":1}, {"label":"T", "x":6.75, "y":1}, {"label":"Y", "x":9.75, "y":1}, {"label":"U", "x":10.75, "y":1}, {"label":"I", "x":11.75, "y":1}, {"label":"O", "x":12.75, "y":1}, {"label":"P", "x":13.75, "y":1}, {"label":"{", "x":14.75, "y":1}, {"label":"}", "x":15.75, "y":1}, {"label":"|", "x":16.75, "y":1, "w":1.5}, {"label":"Page Down", "x":0, "y":2}, {"label":"Caps Lock", "x":1.25, "y":2, "w":1.75}, {"label":"A", "x":3, "y":2}, {"label":"S", "x":4, "y":2}, {"label":"D", "x":5, "y":2}, {"label":"F", "x":6, "y":2}, {"label":"G", "x":7, "y":2}, {"label":"H", "x":10, "y":2}, {"label":"J", "x":11, "y":2}, {"label":"K", "x":12, "y":2}, {"label":"L", "x":13, "y":2}, {"label":":", "x":14, "y":2}, {"label":"\"", "x":15, "y":2}, {"label":"Enter", "x":16, "y":2, "w":2.25}, {"label":"Shift", "x":1.25, "y":3, "w":2.25}, {"label":"Z", "x":3.5, "y":3}, {"label":"X", "x":4.5, "y":3}, {"label":"C", "x":5.5, "y":3}, {"label":"V", "x":6.5, "y":3}, {"label":"B", "x":7.5, "y":3}, {"label":"B", "x":9.5, "y":3}, {"label":"N", "x":10.5, "y":3}, {"label":"M", "x":11.5, "y":3}, {"label":"<", "x":12.5, "y":3}, {"label":">", "x":13.5, "y":3}, {"label":"?", "x":14.5, "y":3}, {"label":"Shift", "x":15.5, "y":3, "w":2.75}, {"label":"Ctrl", "x":1.25, "y":4, "w":1.5}, {"label":"Win", "x":4.25, "y":4, "w":1.5}, {"x":5.75, "y":4, "w":2.25}, {"label":"Fn", "x":8, "y":4}, {"x":9.5, "y":4, "w":2.75}, {"label":"Alt", "x":12.25, "y":4, "w":1.5}, {"label":"Ctrl", "x":16.75, "y":4, "w":1.5}] }, "LAYOUT_split_backspace": { - "key_count": 65, "layout": [{"label":"Delete", "x":0, "y":0}, {"label":"Esc", "x":1.25, "y":0}, {"label":"!", "x":2.25, "y":0}, {"label":"@", "x":3.25, "y":0}, {"label":"#", "x":4.25, "y":0}, {"label":"$", "x":5.25, "y":0}, {"label":"%", "x":6.25, "y":0}, {"label":"^", "x":7.25, "y":0}, {"label":"&", "x":10.25, "y":0}, {"label":"*", "x":11.25, "y":0}, {"label":"(", "x":12.25, "y":0}, {"label":")", "x":13.25, "y":0}, {"label":"_", "x":14.25, "y":0}, {"label":"+", "x":15.25, "y":0}, {"label":"~", "x":16.25, "y":0}, {"label":"|", "x":17.25, "y":0}, {"label":"Page Up", "x":0, "y":1}, {"label":"Tab", "x":1.25, "y":1, "w":1.5}, {"label":"Q", "x":2.75, "y":1}, {"label":"W", "x":3.75, "y":1}, {"label":"E", "x":4.75, "y":1}, {"label":"R", "x":5.75, "y":1}, {"label":"T", "x":6.75, "y":1}, {"label":"Y", "x":9.75, "y":1}, {"label":"U", "x":10.75, "y":1}, {"label":"I", "x":11.75, "y":1}, {"label":"O", "x":12.75, "y":1}, {"label":"P", "x":13.75, "y":1}, {"label":"{", "x":14.75, "y":1}, {"label":"}", "x":15.75, "y":1}, {"label":"Backspace", "x":16.75, "y":1, "w":1.5}, {"label":"Page Down", "x":0, "y":2}, {"label":"Caps Lock", "x":1.25, "y":2, "w":1.75}, {"label":"A", "x":3, "y":2}, {"label":"S", "x":4, "y":2}, {"label":"D", "x":5, "y":2}, {"label":"F", "x":6, "y":2}, {"label":"G", "x":7, "y":2}, {"label":"H", "x":10, "y":2}, {"label":"J", "x":11, "y":2}, {"label":"K", "x":12, "y":2}, {"label":"L", "x":13, "y":2}, {"label":":", "x":14, "y":2}, {"label":"\"", "x":15, "y":2}, {"label":"Enter", "x":16, "y":2, "w":2.25}, {"label":"Shift", "x":1.25, "y":3, "w":2.25}, {"label":"Z", "x":3.5, "y":3}, {"label":"X", "x":4.5, "y":3}, {"label":"C", "x":5.5, "y":3}, {"label":"V", "x":6.5, "y":3}, {"label":"B", "x":7.5, "y":3}, {"label":"B", "x":9.5, "y":3}, {"label":"N", "x":10.5, "y":3}, {"label":"M", "x":11.5, "y":3}, {"label":"<", "x":12.5, "y":3}, {"label":">", "x":13.5, "y":3}, {"label":"?", "x":14.5, "y":3}, {"label":"Shift", "x":15.5, "y":3, "w":2.75}, {"label":"Ctrl", "x":1.25, "y":4, "w":1.5}, {"label":"Win", "x":4.25, "y":4, "w":1.5}, {"x":5.75, "y":4, "w":2.25}, {"label":"Fn", "x":8, "y":4}, {"x":9.5, "y":4, "w":2.75}, {"label":"Alt", "x":12.25, "y":4, "w":1.5}, {"label":"Ctrl", "x":16.75, "y":4, "w":1.5}] }, "LAYOUT_alice": { - "key_count": 65, "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"~", "x":1.25, "y":0}, {"label":"!", "x":2.25, "y":0}, {"label":"@", "x":3.25, "y":0}, {"label":"#", "x":4.25, "y":0}, {"label":"$", "x":5.25, "y":0}, {"label":"%", "x":6.25, "y":0}, {"label":"^", "x":7.25, "y":0}, {"label":"&", "x":10.25, "y":0}, {"label":"*", "x":11.25, "y":0}, {"label":"(", "x":12.25, "y":0}, {"label":")", "x":13.25, "y":0}, {"label":"_", "x":14.25, "y":0}, {"label":"+", "x":15.25, "y":0}, {"label":"Backspace", "x":16.25, "y":0, "w":2}, {"label":"Page Up", "x":0, "y":1}, {"label":"Tab", "x":1.25, "y":1, "w":1.5}, {"label":"Q", "x":2.75, "y":1}, {"label":"W", "x":3.75, "y":1}, {"label":"E", "x":4.75, "y":1}, {"label":"R", "x":5.75, "y":1}, {"label":"T", "x":6.75, "y":1}, {"label":"Y", "x":9.75, "y":1}, {"label":"U", "x":10.75, "y":1}, {"label":"I", "x":11.75, "y":1}, {"label":"O", "x":12.75, "y":1}, {"label":"P", "x":13.75, "y":1}, {"label":"{", "x":14.75, "y":1}, {"label":"}", "x":15.75, "y":1}, {"label":"|", "x":16.75, "y":1, "w":1.5}, {"label":"Page Down", "x":0, "y":2}, {"label":"Caps Lock", "x":1.25, "y":2, "w":1.75}, {"label":"A", "x":3, "y":2}, {"label":"S", "x":4, "y":2}, {"label":"D", "x":5, "y":2}, {"label":"F", "x":6, "y":2}, {"label":"G", "x":7, "y":2}, {"label":"H", "x":10, "y":2}, {"label":"J", "x":11, "y":2}, {"label":"K", "x":12, "y":2}, {"label":"L", "x":13, "y":2}, {"label":":", "x":14, "y":2}, {"label":"\"", "x":15, "y":2}, {"label":"Enter", "x":16, "y":2, "w":2.25}, {"label":"Shift", "x":1.25, "y":3, "w":2.25}, {"label":"Z", "x":3.5, "y":3}, {"label":"X", "x":4.5, "y":3}, {"label":"C", "x":5.5, "y":3}, {"label":"V", "x":6.5, "y":3}, {"label":"B", "x":7.5, "y":3}, {"label":"B", "x":9.5, "y":3}, {"label":"N", "x":10.5, "y":3}, {"label":"M", "x":11.5, "y":3}, {"label":"<", "x":12.5, "y":3}, {"label":">", "x":13.5, "y":3}, {"label":"?", "x":14.5, "y":3}, {"label":"Shift", "x":15.5, "y":3, "w":1.75}, {"label":"Fn", "x":17.25, "y":3}, {"label":"Ctrl", "x":1.25, "y":4, "w":1.5}, {"label":"Win", "x":4.25, "y":4, "w":1.5}, {"x":5.75, "y":4, "w":2.25}, {"label":"Fn", "x":8, "y":4}, {"x":9.5, "y":4, "w":2.75}, {"label":"Alt", "x":12.25, "y":4, "w":1.5}, {"label":"Ctrl", "x":16.75, "y":4, "w":1.5}] }, "LAYOUT_alice_split_bs": { - "key_count": 66, "layout": [{"label":"Delete", "x":0, "y":0}, {"label":"Esc", "x":1.25, "y":0}, {"label":"!", "x":2.25, "y":0}, {"label":"@", "x":3.25, "y":0}, {"label":"#", "x":4.25, "y":0}, {"label":"$", "x":5.25, "y":0}, {"label":"%", "x":6.25, "y":0}, {"label":"^", "x":7.25, "y":0}, {"label":"&", "x":10.25, "y":0}, {"label":"*", "x":11.25, "y":0}, {"label":"(", "x":12.25, "y":0}, {"label":")", "x":13.25, "y":0}, {"label":"_", "x":14.25, "y":0}, {"label":"+", "x":15.25, "y":0}, {"label":"~", "x":16.25, "y":0}, {"label":"|", "x":17.25, "y":0}, {"label":"Page Up", "x":0, "y":1}, {"label":"Tab", "x":1.25, "y":1, "w":1.5}, {"label":"Q", "x":2.75, "y":1}, {"label":"W", "x":3.75, "y":1}, {"label":"E", "x":4.75, "y":1}, {"label":"R", "x":5.75, "y":1}, {"label":"T", "x":6.75, "y":1}, {"label":"Y", "x":9.75, "y":1}, {"label":"U", "x":10.75, "y":1}, {"label":"I", "x":11.75, "y":1}, {"label":"O", "x":12.75, "y":1}, {"label":"P", "x":13.75, "y":1}, {"label":"{", "x":14.75, "y":1}, {"label":"}", "x":15.75, "y":1}, {"label":"Backspace", "x":16.75, "y":1, "w":1.5}, {"label":"Page Down", "x":0, "y":2}, {"label":"Caps Lock", "x":1.25, "y":2, "w":1.75}, {"label":"A", "x":3, "y":2}, {"label":"S", "x":4, "y":2}, {"label":"D", "x":5, "y":2}, {"label":"F", "x":6, "y":2}, {"label":"G", "x":7, "y":2}, {"label":"H", "x":10, "y":2}, {"label":"J", "x":11, "y":2}, {"label":"K", "x":12, "y":2}, {"label":"L", "x":13, "y":2}, {"label":":", "x":14, "y":2}, {"label":"\"", "x":15, "y":2}, {"label":"Enter", "x":16, "y":2, "w":2.25}, {"label":"Shift", "x":1.25, "y":3, "w":2.25}, {"label":"Z", "x":3.5, "y":3}, {"label":"X", "x":4.5, "y":3}, {"label":"C", "x":5.5, "y":3}, {"label":"V", "x":6.5, "y":3}, {"label":"B", "x":7.5, "y":3}, {"label":"B", "x":9.5, "y":3}, {"label":"N", "x":10.5, "y":3}, {"label":"M", "x":11.5, "y":3}, {"label":"<", "x":12.5, "y":3}, {"label":">", "x":13.5, "y":3}, {"label":"?", "x":14.5, "y":3}, {"label":"Shift", "x":15.5, "y":3, "w":1.75}, {"label":"Fn", "x":17.25, "y":3}, {"label":"Ctrl", "x":1.25, "y":4, "w":1.5}, {"label":"Win", "x":4.25, "y":4, "w":1.5}, {"x":5.75, "y":4, "w":2.25}, {"label":"Fn", "x":8, "y":4}, {"x":9.5, "y":4, "w":2.75}, {"label":"Alt", "x":12.25, "y":4, "w":1.5}, {"label":"Ctrl", "x":16.75, "y":4, "w":1.5}] } } diff --git a/keyboards/sck/osa/keymaps/all/keymap.c b/keyboards/sck/osa/keymaps/all/keymap.c index 01bd9da259ae..5f6dfbbc8683 100644 --- a/keyboards/sck/osa/keymaps/all/keymap.c +++ b/keyboards/sck/osa/keymaps/all/keymap.c @@ -15,13 +15,6 @@ */ #include QMK_KEYBOARD_H -// Defines the keycodes used by our macros in process_record_user -//enum custom_keycodes { -// QMKBEST = SAFE_RANGE, -// QMKURL -//}; - - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap BASE: (Base Layer) Default Layer * .----.,----------------------------------------------------------------------. @@ -64,40 +57,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LALT, KC_SPC, _______, KC_SPC, KC_RALT, KC_RCTL ), }; - - - - -//bool process_record_user(uint16_t keycode, keyrecord_t *record) { -// switch (keycode) { -// case QMKBEST: -// if (record->event.pressed) { -// // when keycode QMKBEST is pressed -// SEND_STRING("QMK is the best thing ever!"); -// } else { -// // when keycode QMKBEST is released -// } -// break; -// case QMKURL: -// if (record->event.pressed) { -// // when keycode QMKURL is pressed -// SEND_STRING("https://qmk.fm/" SS_TAP(X_ENTER)); -// } else { -// // when keycode QMKURL is released -// } -// break; -// } -// return true; -//} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/sck/osa/keymaps/default/keymap.c b/keyboards/sck/osa/keymaps/default/keymap.c index d6cfddc46827..b61b8da48fd6 100644 --- a/keyboards/sck/osa/keymaps/default/keymap.c +++ b/keyboards/sck/osa/keymaps/default/keymap.c @@ -15,13 +15,6 @@ */ #include QMK_KEYBOARD_H -// Defines the keycodes used by our macros in process_record_user -//enum custom_keycodes { -// QMKBEST = SAFE_RANGE, -// QMKURL -//}; - - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap BASE: (Base Layer) Default Layer * .----.,----------------------------------------------------------------------. @@ -64,40 +57,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LALT, KC_SPC, _______, KC_SPC, KC_RALT, KC_RCTL ), }; - - - - -//bool process_record_user(uint16_t keycode, keyrecord_t *record) { -// switch (keycode) { -// case QMKBEST: -// if (record->event.pressed) { -// // when keycode QMKBEST is pressed -// SEND_STRING("QMK is the best thing ever!"); -// } else { -// // when keycode QMKBEST is released -// } -// break; -// case QMKURL: -// if (record->event.pressed) { -// // when keycode QMKURL is pressed -// SEND_STRING("https://qmk.fm/" SS_TAP(X_ENTER)); -// } else { -// // when keycode QMKURL is released -// } -// break; -// } -// return true; -//} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -//void led_set_user(uint16_t usb_led) { -// -//} diff --git a/keyboards/sck/osa/rules.mk b/keyboards/sck/osa/rules.mk index e291c08bff04..df281eb8c8f6 100644 --- a/keyboards/sck/osa/rules.mk +++ b/keyboards/sck/osa/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = alice alice_split_bs diff --git a/keyboards/scythe/config.h b/keyboards/scythe/config.h index d59b9e7f3eda..ad4d1ded4f27 100644 --- a/keyboards/scythe/config.h +++ b/keyboards/scythe/config.h @@ -101,54 +101,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -167,26 +119,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/scythe/info.json b/keyboards/scythe/info.json index 864d5ee29ddc..23151ea8413c 100644 --- a/keyboards/scythe/info.json +++ b/keyboards/scythe/info.json @@ -2,12 +2,9 @@ "keyboard_name": "Scythe", "url": "", "maintainer": "ka2hiro", - "width": 19, - "height": 5, "layouts": { "LAYOUT": { "layout": [{"label":"Esc", "x":2, "y":0}, {"label":"1", "x":3, "y":0}, {"label":"2", "x":4, "y":0}, {"label":"3", "x":5, "y":0}, {"label":"4", "x":6, "y":0}, {"label":"5", "x":7, "y":0}, {"label":"_", "x":8, "y":0}, {"label":"+", "x":9.5, "y":0}, {"label":"6", "x":10.5, "y":0}, {"label":"7", "x":11.5, "y":0}, {"label":"8", "x":12.5, "y":0}, {"label":"9", "x":13.5, "y":0}, {"label":"0", "x":14.5, "y":0}, {"label":"\\", "x":15.5, "y":0}, {"label":"Tab", "x":1.25, "y":1, "w":1.5}, {"label":"Q", "x":2.75, "y":1}, {"label":"W", "x":3.75, "y":1}, {"label":"E", "x":4.75, "y":1}, {"label":"R", "x":5.75, "y":1}, {"label":"T", "x":6.75, "y":1}, {"label":"{", "x":7.75, "y":1}, {"label":"}", "x":9.75, "y":1}, {"label":"Y", "x":10.75, "y":1}, {"label":"U", "x":11.75, "y":1}, {"label":"I", "x":12.75, "y":1}, {"label":"O", "x":13.75, "y":1}, {"label":"P", "x":14.75, "y":1}, {"label":"Backace", "x":15.75, "y":1, "w":1.5}, {"label":"Control", "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":"~", "x":7.5, "y":2}, {"label":"\"", "x":10, "y":2}, {"label":"H", "x":11, "y":2}, {"label":"J", "x":12, "y":2}, {"label":"K", "x":13, "y":2}, {"label":"L", "x":14, "y":2}, {"label":":", "x":15, "y":2}, {"label":"Return", "x":16, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"Caps", "x":7.25, "y":3}, {"label":"Del", "x":10.25, "y":3}, {"label":"N", "x":11.25, "y":3}, {"label":"M", "x":12.25, "y":3}, {"label":"<", "x":13.25, "y":3}, {"label":">", "x":14.25, "y":3}, {"label":"?", "x":15.25, "y":3}, {"label":"Shift", "x":16.25, "y":3, "w":1.75}, {"label":"Fn", "x":18, "y":3}, {"label":"", "x":2.75, "y":4, "w":1.25}, {"label":"", "x":4, "y":4, "w":1.25}, {"label":"Fn", "x":5.25, "y":4, "w":1.25}, {"x":6.5, "y":4, "w":2}, {"x":10, "y":4, "w":2}, {"label":"Fn", "x":12, "y":4, "w":1.25}, {"label":"", "x":13.25, "y":4, "w":1.25}, {"label":"", "x":14.5, "y":4, "w":1.25}] } } } - diff --git a/keyboards/scythe/rules.mk b/keyboards/scythe/rules.mk index 8efc79ef2157..061791b0ff3c 100644 --- a/keyboards/scythe/rules.mk +++ b/keyboards/scythe/rules.mk @@ -2,33 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = yes # Use shared split_common RGBLIGHT_SPLIT = yes diff --git a/keyboards/scythe/scythe.c b/keyboards/scythe/scythe.c index e8060ac278e2..c1f95e2f7084 100644 --- a/keyboards/scythe/scythe.c +++ b/keyboards/scythe/scythe.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "scythe.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/seigaiha/info.json b/keyboards/seigaiha/info.json index bd313313e015..09bc2d09d08c 100644 --- a/keyboards/seigaiha/info.json +++ b/keyboards/seigaiha/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Seigaiha", "url": "www.yiancar-designs.com", "maintainer": "Yiancar-Designs", - "width": 18.25, - "height": 5, "layouts": { "LAYOUT_alice_split_bs": { "layout": [ diff --git a/keyboards/seigaiha/rules.mk b/keyboards/seigaiha/rules.mk index f19a8ec12e14..2decccbe0350 100644 --- a/keyboards/seigaiha/rules.mk +++ b/keyboards/seigaiha/rules.mk @@ -2,23 +2,20 @@ MCU = atmega328p # Bootloader selection -BOOTLOADER = USBasp +BOOTLOADER = usbasploader # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 CUSTOM_MATRIX = lite diff --git a/keyboards/sekigon/grs_70ec/config.h b/keyboards/sekigon/grs_70ec/config.h new file mode 100644 index 000000000000..b1559fcc2f6c --- /dev/null +++ b/keyboards/sekigon/grs_70ec/config.h @@ -0,0 +1,154 @@ +/* +Copyright 2020 sekigon-gonnoc + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x70EC +#define DEVICE_VER 0x0001 +#define MANUFACTURER sekigon-gonnoc +#define PRODUCT GRS-70EC + +/* key matrix size */ +#define MATRIX_ROWS 10 +#define MATRIX_COLS 8 + +/* EC switch threshold with hysteresis */ +#define HIGH_THRESHOLD 300 +#define LOW_THRESHOLD 200 + +/* + * 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 { C6, D7, E6, B4, B5 } +#define MATRIX_COL_CHANNELS { 2, 1, 0, 3, 5, 7, 6, 4 } +#define UNUSED_PINS +#define DISCHARGE_PIN B1 +#define ANALOG_PORT F6 +#define MUX_SEL_PINS { D1, D0, D4 } + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +#define SOFT_SERIAL_PIN D3 // or D1, D2, D3, E6 +#define EE_HANDS + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +//#define RGB_DI_PIN E2 +//#ifdef RGB_DI_PIN +//# define RGBLED_NUM 16 +//# define RGBLIGHT_HUE_STEP 8 +//# define RGBLIGHT_SAT_STEP 8 +//# define RGBLIGHT_VAL_STEP 8 +//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +//# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +//#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/sekigon/grs_70ec/ec_switch_matrix.c b/keyboards/sekigon/grs_70ec/ec_switch_matrix.c new file mode 100644 index 000000000000..d1c2d85ac833 --- /dev/null +++ b/keyboards/sekigon/grs_70ec/ec_switch_matrix.c @@ -0,0 +1,151 @@ +/* Copyright 2020 sekigon-gonnoc + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "ec_switch_matrix.h" + +#include "quantum.h" +#include "analog.h" +#include "print.h" + +// pin connections +const uint8_t row_pins[] = MATRIX_ROW_PINS; +const uint8_t col_channels[] = MATRIX_COL_CHANNELS; +const uint8_t mux_sel_pins[] = MUX_SEL_PINS; + +_Static_assert(sizeof(mux_sel_pins) == 3, "invalid MUX_SEL_PINS"); + +static ecsm_config_t config; +static uint16_t ecsm_sw_value[MATRIX_ROWS][MATRIX_COLS]; + +static inline void discharge_capacitor(void) { setPinOutput(DISCHARGE_PIN); } +static inline void charge_capacitor(uint8_t row) { + setPinInput(DISCHARGE_PIN); + writePinHigh(row_pins[row]); +} + +static inline void clear_all_row_pins(void) { + for (int row = 0; row < sizeof(row_pins); row++) { + writePinLow(row_pins[row]); + } +} + +static inline void init_mux_sel(void) { + for (int idx = 0; idx < sizeof(mux_sel_pins); idx++) { + setPinOutput(mux_sel_pins[idx]); + } +} + +static inline void select_mux(uint8_t col) { + uint8_t ch = col_channels[col]; + writePin(mux_sel_pins[0], ch & 1); + writePin(mux_sel_pins[1], ch & 2); + writePin(mux_sel_pins[2], ch & 4); +} + +static inline void init_row(void) { + for (int idx = 0; idx < sizeof(row_pins); idx++) { + setPinOutput(row_pins[idx]); + writePinLow(row_pins[idx]); + } +} + +// Initialize pins +int ecsm_init(ecsm_config_t const* const ecsm_config) { + // save config + config = *ecsm_config; + + // initialize discharge pin as discharge mode + writePinLow(DISCHARGE_PIN); + setPinOutput(DISCHARGE_PIN); + + // set analog reference + analogReference(ADC_REF_POWER); + + // initialize drive lines + init_row(); + + // initialize multiplexer select pin + init_mux_sel(); + + // set discharge pin to charge mode + setPinInput(DISCHARGE_PIN); + + return 0; +} + +// Read key value of key (row, col) +uint16_t ecsm_readkey_raw(uint8_t row, uint8_t col) { + uint16_t sw_value = 0; + + discharge_capacitor(); + + select_mux(col); + + clear_all_row_pins(); + + cli(); + + charge_capacitor(row); + + sw_value = analogReadPin(ANALOG_PORT); + + sei(); + + return sw_value; +} + +// Update press/release state of key at (row, col) +bool ecsm_update_key(matrix_row_t* current_row, uint8_t col, uint16_t sw_value) { + bool current_state = (*current_row >> col) & 1; + + // press to release + if (current_state && sw_value < config.low_threshold) { + *current_row &= ~(1 << col); + return true; + } + + // release to press + if ((!current_state) && sw_value > config.high_threshold) { + *current_row |= (1 << col); + return true; + } + + return false; +} + +// Scan key values and update matrix state +bool ecsm_matrix_scan(matrix_row_t current_matrix[]) { + bool updated = false; + + for (int col = 0; col < sizeof(col_channels); col++) { + for (int row = 0; row < sizeof(row_pins); row++) { + ecsm_sw_value[row][col] = ecsm_readkey_raw(row, col); + updated |= ecsm_update_key(¤t_matrix[row], col, ecsm_sw_value[row][col]); + } + } + + return updated; +} + +// Print key values +void ecsm_print_matrix(void) { + for (int row = 0; row < sizeof(row_pins); row++) { + for (int col = 0; col < sizeof(col_channels); col++) { + xprintf("%4d", ecsm_sw_value[row][col]); + } + xprintf("\n"); + } +} diff --git a/keyboards/sekigon/grs_70ec/ec_switch_matrix.h b/keyboards/sekigon/grs_70ec/ec_switch_matrix.h new file mode 100644 index 000000000000..c690fe8e27dd --- /dev/null +++ b/keyboards/sekigon/grs_70ec/ec_switch_matrix.h @@ -0,0 +1,38 @@ +/* Copyright 2020 sekigon-gonnoc + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +// +// Scan EC switch matrix using 74HC7051 +// Define MUX_SEL_PINS, DISCHARGE_PIN, and ANALOG_PORT to compile +// + +#pragma once + +#include +#include + +#include "matrix.h" + +typedef struct { + uint16_t low_threshold; // threshold for key release + uint16_t high_threshold; // threshold for key press +} ecsm_config_t; + +int ecsm_init(ecsm_config_t const* const ecsm_config); +bool ecsm_matrix_scan(matrix_row_t current_matrix[]); +void ecsm_print_matrix(void); +uint16_t ecsm_readkey_raw(uint8_t row, uint8_t col); +bool ecsm_update_key(matrix_row_t* current_row, uint8_t col, uint16_t sw_value); diff --git a/keyboards/sekigon/grs_70ec/grs_70ec.c b/keyboards/sekigon/grs_70ec/grs_70ec.c new file mode 100644 index 000000000000..e8791c00c13c --- /dev/null +++ b/keyboards/sekigon/grs_70ec/grs_70ec.c @@ -0,0 +1,38 @@ +/* Copyright 2020 sekigon-gonnoc + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "grs_70ec.h" + +void led_on(void) { + setPinOutput(D2); + writePinHigh(D2); +} + +void led_off(void) { writePinLow(D2); } + +void keyboard_post_init_kb() { + led_on(); + + keyboard_post_init_user(); +} + +void keyboard_pre_init_kb(void) { + // Turn on extern circuit + setPinOutput(F7); + writePinHigh(F7); + + keyboard_pre_init_user(); +} diff --git a/keyboards/sekigon/grs_70ec/grs_70ec.h b/keyboards/sekigon/grs_70ec/grs_70ec.h new file mode 100644 index 000000000000..7b2b0c596ca0 --- /dev/null +++ b/keyboards/sekigon/grs_70ec/grs_70ec.h @@ -0,0 +1,49 @@ +/* Copyright 2020 sekigon-gonnoc + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +void led_on(void); +void led_off(void); + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, R07, \ + L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, R17, \ + L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, R27, \ + L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, R37, \ + L40, L42, L43, L45, L46, R40, R41, R42, R43, R45, R46, R47 \ +) { \ + { L00, L01, L02, L03, L04, L05, L06, KC_NO }, \ + { KC_NO, L11, L12, L13, L14, L15, L16, KC_NO }, \ + { KC_NO, L21, L22, L23, L24, L25, L26, KC_NO }, \ + { L30, L31, L32, L33, L34, L35, L36, KC_NO }, \ + { L40, KC_NO, L42, L43, KC_NO, L45, L46, KC_NO }, \ + { R00, R01, R02, R03, R04, R05, R06, R07 }, \ + { R10, R11, R12, R13, R14, R15, R16, R17 }, \ + { R20, R21, R22, R23, R24, R25, R26, R27 }, \ + { R30, R31, R32, R33, R34, R35, R36, R37 }, \ + { R40, R41, R42, R43, KC_NO, R45, R46, R47 } \ +} diff --git a/keyboards/sekigon/grs_70ec/info.json b/keyboards/sekigon/grs_70ec/info.json new file mode 100644 index 000000000000..93a6327a675b --- /dev/null +++ b/keyboards/sekigon/grs_70ec/info.json @@ -0,0 +1,81 @@ +{ + "keyboard_name": "grs_70ec", + "url": "https://github.com/sekigon-gonnoc/GRS-70EC-doc/", + "maintainer": "sekigon-gonnoc", + "layouts": { + "LAYOUT": { + "layout": [ + { "label": "k00", "x": 0, "y": 0 }, + { "label": "k01", "x": 1, "y": 0 }, + { "label": "k02", "x": 2, "y": 0 }, + { "label": "k03", "x": 3, "y": 0 }, + { "label": "k04", "x": 4, "y": 0 }, + { "label": "k05", "x": 5, "y": 0 }, + { "label": "k06", "x": 6, "y": 0 }, + { "label": "k50", "x": 7.75, "y": 0 }, + { "label": "k51", "x": 8.75, "y": 0 }, + { "label": "k52", "x": 9.75, "y": 0 }, + { "label": "k53", "x": 10.75, "y": 0 }, + { "label": "k54", "x": 11.75, "y": 0 }, + { "label": "k55", "x": 12.75, "y": 0 }, + { "label": "k56", "x": 13.75, "y": 0 }, + { "label": "k57", "x": 14.75, "y": 0 }, + { "label": "k11", "x": 0, "y": 1, "w": 1.5 }, + { "label": "k12", "x": 1.5, "y": 1 }, + { "label": "k13", "x": 2.5, "y": 1 }, + { "label": "k14", "x": 3.5, "y": 1 }, + { "label": "k15", "x": 4.5, "y": 1 }, + { "label": "k16", "x": 5.5, "y": 1 }, + { "label": "k60", "x": 7.25, "y": 1 }, + { "label": "k61", "x": 8.25, "y": 1 }, + { "label": "k62", "x": 9.25, "y": 1 }, + { "label": "k63", "x": 10.25, "y": 1 }, + { "label": "k64", "x": 11.25, "y": 1 }, + { "label": "k65", "x": 12.25, "y": 1 }, + { "label": "k66", "x": 13.25, "y": 1 }, + { "label": "k67", "x": 14.25, "y": 1, "w": 1.5 }, + { "label": "k21", "x": 0, "y": 2, "w": 1.75 }, + { "label": "k22", "x": 1.75, "y": 2 }, + { "label": "k23", "x": 2.75, "y": 2 }, + { "label": "k24", "x": 3.75, "y": 2 }, + { "label": "k25", "x": 4.75, "y": 2 }, + { "label": "k26", "x": 5.75, "y": 2 }, + { "label": "k70", "x": 7.5, "y": 2 }, + { "label": "k71", "x": 8.5, "y": 2 }, + { "label": "k72", "x": 9.5, "y": 2 }, + { "label": "k73", "x": 10.5, "y": 2 }, + { "label": "k74", "x": 11.5, "y": 2 }, + { "label": "k75", "x": 12.5, "y": 2 }, + { "label": "k76", "x": 13.5, "y": 2 }, + { "label": "k77", "x": 14.5, "y": 2 }, + { "label": "k30", "x": 0, "y": 3 }, + { "label": "k31", "x": 1, "y": 3 }, + { "label": "k32", "x": 2, "y": 3 }, + { "label": "k33", "x": 3, "y": 3 }, + { "label": "k34", "x": 4, "y": 3 }, + { "label": "k35", "x": 5, "y": 3 }, + { "label": "k36", "x": 6, "y": 3 }, + { "label": "k80", "x": 7.75, "y": 3 }, + { "label": "k81", "x": 8.75, "y": 3 }, + { "label": "k82", "x": 9.75, "y": 3 }, + { "label": "k83", "x": 10.75, "y": 3 }, + { "label": "k84", "x": 11.75, "y": 3 }, + { "label": "k85", "x": 12.75, "y": 3 }, + { "label": "k86", "x": 13.75, "y": 3 }, + { "label": "k87", "x": 14.75, "y": 3 }, + { "label": "k40", "x": 0, "y": 4, "w": 1.25 }, + { "label": "k42", "x": 2, "y": 4 }, + { "label": "k43", "x": 3, "y": 4, "w": 1.25 }, + { "label": "k45", "x": 4.25, "y": 4, "w": 1.25 }, + { "label": "k46", "x": 5.5, "y": 4, "w": 1.25 }, + { "label": "k90", "x": 7.5, "y": 4, "w": 1.25 }, + { "label": "k91", "x": 8.75, "y": 4, "w": 1.25 }, + { "label": "k92", "x": 10, "y": 4, "w": 1.25 }, + { "label": "k93", "x": 11.25, "y": 4 }, + { "label": "k95", "x": 12.75, "y": 4 }, + { "label": "k96", "x": 13.75, "y": 4 }, + { "label": "k97", "x": 14.75, "y": 4 } + ] + } + } +} diff --git a/keyboards/sekigon/grs_70ec/keymaps/default/keymap.c b/keyboards/sekigon/grs_70ec/keymaps/default/keymap.c new file mode 100644 index 000000000000..bbb0fe4a2c60 --- /dev/null +++ b/keyboards/sekigon/grs_70ec/keymaps/default/keymap.c @@ -0,0 +1,41 @@ +/* Copyright 2020 sekigon-gonnoc + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_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, LALT(KC_GRV), + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, LT(1,KC_SPC), LT(2,KC_ENT), KC_ENT, KC_RGUI, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, KC_DEL, + KC_TAB, S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), S(KC_9),S(KC_0), KC_LBRC, KC_RBRC, KC_PIPE, + KC_LCTL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LCBR, KC_MINS, KC_EQL, KC_RCBR,KC_COLN, KC_DQT, KC_ENT, KC_ENT, + KC_LSFT, KC_LSFT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_UNDS, KC_PLUS, KC_LBRC, KC_RBRC,KC_BSLS, KC_RSFT, KC_UP, KC_NO, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_TRNS, KC_ENT, KC_ENT, KC_RGUI, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT + ), + [2] = LAYOUT( + KC_TILD, 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_INS, KC_INS, + KC_TAB, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_LCTL, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,KC_SCLN, KC_QUOT, KC_ENT, LALT(KC_GRV), + KC_LSFT, KC_LSFT, KC_F11, KC_F12, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_TRNS, KC_ENT, KC_RGUI, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; + diff --git a/keyboards/sekigon/grs_70ec/matrix.c b/keyboards/sekigon/grs_70ec/matrix.c new file mode 100644 index 000000000000..98b234793711 --- /dev/null +++ b/keyboards/sekigon/grs_70ec/matrix.c @@ -0,0 +1,119 @@ +/* Copyright 2020 sekigon-gonnoc + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "grs_70ec.h" + +#include "ec_switch_matrix.h" +#include "matrix.h" +#include "debug.h" +#include "split_util.h" +#include "transport.h" +#include "debounce.h" + +#ifndef LOW_THRESHOLD +# define LOW_THRESHOLD 200 +#endif + +#ifndef HIGH_THRESHOLD +# define HIGH_THRESHOLD 300 +#endif + +#define ERROR_DISCONNECT_COUNT 20 + +#define ROWS_PER_HAND (MATRIX_ROWS / 2) + +/* matrix state(1:on, 0:off) */ +extern matrix_row_t raw_matrix[MATRIX_ROWS]; // raw values +extern matrix_row_t matrix[MATRIX_ROWS]; // debounced values + +// row offsets for each hand +uint8_t thisHand, thatHand; + +// user-defined overridable functions +__attribute__((weak)) void matrix_slave_scan_user(void) {} + +void matrix_init_custom(void) { + split_pre_init(); + + ecsm_config_t ecsm_config = {.low_threshold = LOW_THRESHOLD, .high_threshold = HIGH_THRESHOLD}; + + ecsm_init(&ecsm_config); + + thisHand = isLeftHand ? 0 : (ROWS_PER_HAND); + thatHand = ROWS_PER_HAND - thisHand; + + split_post_init(); +} + +bool matrix_scan_custom(matrix_row_t current_matrix[]) { + bool updated = ecsm_matrix_scan(current_matrix); + + static int cnt = 0; + if (cnt++ == 300) { + cnt = 0; + ecsm_print_matrix(); + print("\n"); + } + + return updated; +} + +bool matrix_post_scan(void) { + bool changed = false; + if (is_keyboard_master()) { + static uint8_t error_count; + + matrix_row_t slave_matrix[ROWS_PER_HAND] = {0}; + if (!transport_master(matrix + thatHand, slave_matrix)) { + error_count++; + + if (error_count > ERROR_DISCONNECT_COUNT) { + // reset other half if disconnected + dprintf("Error: disconnect split half\n"); + for (int i = 0; i < ROWS_PER_HAND; ++i) { + matrix[thatHand + i] = 0; + slave_matrix[i] = 0; + } + + changed = true; + } + } else { + error_count = 0; + + for (int i = 0; i < ROWS_PER_HAND; ++i) { + if (matrix[thatHand + i] != slave_matrix[i]) { + matrix[thatHand + i] = slave_matrix[i]; + changed = true; + } + } + } + + matrix_scan_quantum(); + } else { + transport_slave(matrix + thatHand, matrix + thisHand); + + matrix_slave_scan_user(); + } + return changed; +} + +uint8_t matrix_scan(void) { + bool changed = matrix_scan_custom(raw_matrix) || matrix_post_scan(); + + debounce(raw_matrix, matrix + thisHand, ROWS_PER_HAND, changed); + + return changed; +} diff --git a/keyboards/sekigon/grs_70ec/readme.md b/keyboards/sekigon/grs_70ec/readme.md new file mode 100644 index 000000000000..c60e7fdb9364 --- /dev/null +++ b/keyboards/sekigon/grs_70ec/readme.md @@ -0,0 +1,19 @@ +# GRS-70EC + +![grs_70ec](https://raw.githubusercontent.com/sekigon-gonnoc/GRS-70EC-doc/master/img/GRS-70EC.JPG) + +A split keyboard using electrostatic capacitive switch + +* Keyboard Maintainer: [sekigon](https://github.com/sekigon-gonnoc) +* Hardware Supported: GRS-70EC PCB, Pro Micro +* Hardware Availability: [BOOTH Shop](https://nogikes.booth.pm/items/2626903) + +Make example for this keyboard (after setting up your build environment): + + make sekigon/grs_70ec:default + +Flashing example for this keyboard: + + make sekigon/grs_70ec:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/sekigon/grs_70ec/rules.mk b/keyboards/sekigon/grs_70ec/rules.mk new file mode 100644 index 000000000000..891ba07840ca --- /dev/null +++ b/keyboards/sekigon/grs_70ec/rules.mk @@ -0,0 +1,23 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# 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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +CUSTOM_MATRIX = lite +SPLIT_KEYBOARD = yes + +SRC += analog.c ec_switch_matrix.c matrix.c diff --git a/keyboards/sendyyeah/75pixels/info.json b/keyboards/sendyyeah/75pixels/info.json index 20d158cf74ac..193beb6532d4 100644 --- a/keyboards/sendyyeah/75pixels/info.json +++ b/keyboards/sendyyeah/75pixels/info.json @@ -2,12 +2,10 @@ "keyboard_name": "beVi", "url": "https://github.com/sendyyeah/bevi", "maintainer": "sendyyeah", - "width": 15, - "height": 5, "layouts": { "LAYOUT_ortho_5x15": { "layout": [ - {"label": "Esc", "X": 0, "y": 0}, + {"label": "Esc", "x": 0, "y": 0}, {"label": "1", "x": 1, "y": 0}, {"label": "2", "x": 2, "y": 0}, {"label": "3", "x": 3, "y": 0}, @@ -22,21 +20,21 @@ {"label": "NumLock", "x": 12, "y": 0}, {"label": "/", "x": 13, "y": 0}, {"label": "*", "x": 14, "y": 0}, - {"label": "Tab", "X": 0, "y": 1}, - {"label": "Q", "X": 1, "y": 1}, - {"label": "W", "X": 2, "y": 1}, - {"label": "E", "X": 3, "y": 1}, - {"label": "R", "X": 4, "y": 1}, - {"label": "T", "X": 5, "y": 1}, - {"label": "Y", "X": 6, "y": 1}, - {"label": "U", "X": 7, "y": 1}, - {"label": "I", "X": 8, "y": 1}, - {"label": "O", "X": 9, "y": 1}, - {"label": "P", "X": 10, "y": 1}, - {"label": "|\n\\", "X": 11, "y": 1}, - {"label": "7\nHome", "X": 12, "y": 1}, - {"label": "8\nUp", "X": 13, "y": 1}, - {"label": "9\nPgUp", "X": 14, "y": 1}, + {"label": "Tab", "x": 0, "y": 1}, + {"label": "Q", "x": 1, "y": 1}, + {"label": "W", "x": 2, "y": 1}, + {"label": "E", "x": 3, "y": 1}, + {"label": "R", "x": 4, "y": 1}, + {"label": "T", "x": 5, "y": 1}, + {"label": "Y", "x": 6, "y": 1}, + {"label": "U", "x": 7, "y": 1}, + {"label": "I", "x": 8, "y": 1}, + {"label": "O", "x": 9, "y": 1}, + {"label": "P", "x": 10, "y": 1}, + {"label": "|\n\\", "x": 11, "y": 1}, + {"label": "7\nHome", "x": 12, "y": 1}, + {"label": "8\nUp", "x": 13, "y": 1}, + {"label": "9\nPgUp", "x": 14, "y": 1}, {"label": "Caps", "x": 0, "y": 2}, {"label": "A", "x": 1, "y": 2}, {"label": "S", "x": 2, "y": 2}, @@ -67,21 +65,21 @@ {"label": "1\nEnd", "x": 12, "y": 3}, {"label": "2\nDown", "x": 13, "y": 3}, {"label": "3\nPgDn", "x": 14, "y": 3}, - {"label": "Ctrl", "X": 0, "y": 4}, - {"label": "Win", "X": 1, "y": 4}, - {"label": "Alt", "X": 2, "y": 4}, - {"label": "Fn", "X": 3, "y": 4}, - {"label": "Lower", "X": 4, "y": 4}, - {"label": "Space", "X": 5, "y": 4}, - {"label": "Space", "X": 6, "y": 4}, - {"label": "Raise", "X": 7, "y": 4}, - {"label": "Alt", "X": 8, "y": 4}, - {"label": "Win", "X": 9, "y": 4}, - {"label": "Menu", "X": 10, "y": 4}, - {"label": "Ctrl", "X": 11, "y": 4}, - {"label": "0\nIns", "X": 12, "y": 4}, - {"label": ".\nDel", "X": 13, "y": 4}, - {"label": "Enter", "X": 14, "y": 4} + {"label": "Ctrl", "x": 0, "y": 4}, + {"label": "Win", "x": 1, "y": 4}, + {"label": "Alt", "x": 2, "y": 4}, + {"label": "Fn", "x": 3, "y": 4}, + {"label": "Lower", "x": 4, "y": 4}, + {"label": "Space", "x": 5, "y": 4}, + {"label": "Space", "x": 6, "y": 4}, + {"label": "Raise", "x": 7, "y": 4}, + {"label": "Alt", "x": 8, "y": 4}, + {"label": "Win", "x": 9, "y": 4}, + {"label": "Menu", "x": 10, "y": 4}, + {"label": "Ctrl", "x": 11, "y": 4}, + {"label": "0\nIns", "x": 12, "y": 4}, + {"label": ".\nDel", "x": 13, "y": 4}, + {"label": "Enter", "x": 14, "y": 4} ] } } diff --git a/keyboards/sendyyeah/75pixels/rules.mk b/keyboards/sendyyeah/75pixels/rules.mk index 50b4125b3958..bca330a6bd70 100644 --- a/keyboards/sendyyeah/75pixels/rules.mk +++ b/keyboards/sendyyeah/75pixels/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LAYOUTS = ortho_5x15 diff --git a/keyboards/sendyyeah/bevi/info.json b/keyboards/sendyyeah/bevi/info.json index 25674510e77e..05e66f3aa573 100644 --- a/keyboards/sendyyeah/bevi/info.json +++ b/keyboards/sendyyeah/bevi/info.json @@ -2,8 +2,6 @@ "keyboard_name": "beVi", "url": "https://github.com/sendyyeah/bevi", "maintainer": "sendyyeah", - "width": 19, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/sendyyeah/bevi/rules.mk b/keyboards/sendyyeah/bevi/rules.mk index 4de348c25927..0e0bda8a58a2 100644 --- a/keyboards/sendyyeah/bevi/rules.mk +++ b/keyboards/sendyyeah/bevi/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/sendyyeah/pix/info.json b/keyboards/sendyyeah/pix/info.json index f93c3aae67d2..39e016dae165 100644 --- a/keyboards/sendyyeah/pix/info.json +++ b/keyboards/sendyyeah/pix/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Pix", "url": "https://github.com/sendz/pix", "maintainer": "sendz", - "width": 5, - "height": 1, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/sendyyeah/pix/keymaps/default/keymap.c b/keyboards/sendyyeah/pix/keymaps/default/keymap.c index 720616101839..bcaf52d53be1 100644 --- a/keyboards/sendyyeah/pix/keymaps/default/keymap.c +++ b/keyboards/sendyyeah/pix/keymaps/default/keymap.c @@ -69,7 +69,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { return true; } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; @@ -174,7 +174,7 @@ void draw_brightness_icon(int key_position, int row) { oled_write_P(ICON_BRIGHTNESS_1, false); } -void oled_task_user(void) { +bool oled_task_user(void) { // Host Keyboard Layer Status static const char PROGMEM ICON_LAYER[] = {0x80, 0x81, 0x82, 0x83, 0}; static const char PROGMEM ICON_ENCODER[] = {0x84, 0x85, 0x86, 0x87, 0}; @@ -229,6 +229,7 @@ void oled_task_user(void) { break; } + return false; } #endif diff --git a/keyboards/sendyyeah/pix/keymaps/via/keymap.c b/keyboards/sendyyeah/pix/keymaps/via/keymap.c index 720616101839..bcaf52d53be1 100644 --- a/keyboards/sendyyeah/pix/keymaps/via/keymap.c +++ b/keyboards/sendyyeah/pix/keymaps/via/keymap.c @@ -69,7 +69,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { return true; } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; @@ -174,7 +174,7 @@ void draw_brightness_icon(int key_position, int row) { oled_write_P(ICON_BRIGHTNESS_1, false); } -void oled_task_user(void) { +bool oled_task_user(void) { // Host Keyboard Layer Status static const char PROGMEM ICON_LAYER[] = {0x80, 0x81, 0x82, 0x83, 0}; static const char PROGMEM ICON_ENCODER[] = {0x84, 0x85, 0x86, 0x87, 0}; @@ -229,6 +229,7 @@ void oled_task_user(void) { break; } + return false; } #endif diff --git a/keyboards/sendyyeah/pix/rules.mk b/keyboards/sendyyeah/pix/rules.mk index 956a61880b97..1e2c6686817d 100644 --- a/keyboards/sendyyeah/pix/rules.mk +++ b/keyboards/sendyyeah/pix/rules.mk @@ -7,18 +7,16 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/senselessclay/ck60/ck60.c b/keyboards/senselessclay/ck60/ck60.c new file mode 100644 index 000000000000..a2fe38aac799 --- /dev/null +++ b/keyboards/senselessclay/ck60/ck60.c @@ -0,0 +1,17 @@ +/* Copyright 2020 Hadi Iskandarani + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "ck60.h" \ No newline at end of file diff --git a/keyboards/senselessclay/ck60/ck60.h b/keyboards/senselessclay/ck60/ck60.h new file mode 100644 index 000000000000..fa83202dfa57 --- /dev/null +++ b/keyboards/senselessclay/ck60/ck60.h @@ -0,0 +1,35 @@ +/* Copyright 2020 Hadi Iskandarani + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ____ KC_NO + +#define LAYOUT( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, \ + 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, K212, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, \ + K400, K401, K402, K406, K410, K411, K412, K413 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \ + { 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, K212, ____ }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, ____ }, \ + { K400, K401, K402, ____, ____, ____, K406, ____, ____, ____, K410, K411, K412, K413 } \ +} diff --git a/keyboards/senselessclay/ck60/config.h b/keyboards/senselessclay/ck60/config.h new file mode 100644 index 000000000000..7e4a493701a6 --- /dev/null +++ b/keyboards/senselessclay/ck60/config.h @@ -0,0 +1,119 @@ +/* +Copyright 2020 Hadi Iskandarani + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4849 // HI +#define PRODUCT_ID 0x0601 // 60rgb (1) +#define DEVICE_VER 0x0000 // rev0 +#define MANUFACTURER senselessclay +#define PRODUCT ck60 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/* + * 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) + * + */ +/* rev0 */ +#define MATRIX_ROW_PINS { B3, B2, F1, F4, F5 } +#define MATRIX_COL_PINS { F0, D5, D3, D2, D1, D0, C7, C6, B6, B5, B4, D7, D6, D4 } + +//#define UNUSED_PINS { B0, B7, E6 } + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 + +/* RGB Backlighting */ +#define RGB_DI_PIN B1 +#define RGBLED_NUM 62 +#define RGBLIGHT_ANIMATIONS +#define RGBLIGHT_LIMIT_VAL 128 +#define RGBLIGHT_SLEEP +#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_SWIRL+5 \ No newline at end of file diff --git a/keyboards/senselessclay/ck60/info.json b/keyboards/senselessclay/ck60/info.json new file mode 100644 index 000000000000..e188740c3c23 --- /dev/null +++ b/keyboards/senselessclay/ck60/info.json @@ -0,0 +1,10 @@ +{ + "keyboard_name": "CK60", + "url": "https://candykeys.com", + "maintainer": "hadi", + "layouts": { + "LAYOUT": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.75, "y":1, "w":1.25, "h":2}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":2.75}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}] + } + } +} \ No newline at end of file diff --git a/keyboards/senselessclay/ck60/keymaps/default/keymap.c b/keyboards/senselessclay/ck60/keymaps/default/keymap.c new file mode 100644 index 000000000000..2ac1e069817e --- /dev/null +++ b/keyboards/senselessclay/ck60/keymaps/default/keymap.c @@ -0,0 +1,51 @@ +/* Copyright 2020 Hadi Iskandarani + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layers { + _0, + _1, + _2, + _3, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_0] = LAYOUT( + /*Base*/ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_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_ENT, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL), + [_1] = LAYOUT( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS, + KC_CAPS, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [_2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [_3] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; \ No newline at end of file diff --git a/keyboards/senselessclay/ck60/keymaps/via/keymap.c b/keyboards/senselessclay/ck60/keymaps/via/keymap.c new file mode 100644 index 000000000000..2ac1e069817e --- /dev/null +++ b/keyboards/senselessclay/ck60/keymaps/via/keymap.c @@ -0,0 +1,51 @@ +/* Copyright 2020 Hadi Iskandarani + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layers { + _0, + _1, + _2, + _3, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_0] = LAYOUT( + /*Base*/ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_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_ENT, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL), + [_1] = LAYOUT( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS, + KC_CAPS, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [_2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [_3] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; \ No newline at end of file diff --git a/keyboards/senselessclay/ck60/keymaps/via/rules.mk b/keyboards/senselessclay/ck60/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/senselessclay/ck60/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/senselessclay/ck60/readme.md b/keyboards/senselessclay/ck60/readme.md new file mode 100644 index 000000000000..32700967da2c --- /dev/null +++ b/keyboards/senselessclay/ck60/readme.md @@ -0,0 +1,19 @@ +# ck60 + +A 60% keyboard implementation based around the ATMEGA32u4 with per-key RGB. + +* Keyboard Maintainer: [hadi](https://github.com/senselessclay) +* Hardware Supported: CK60 PCB +* Hardware Availability: https://candykeys.com/ + +Make example for this keyboard (after setting up your build environment): + + make senselessclay/ck60:default + +Flashing example for this keyboard: + + make senselessclay/ck60: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). + +If you'd like to reset the board into bootloader mode for flashing using [QMK Toolbox](https://github.com/qmk/qmk_toolbox), simply press the reset button directly above the controller assembly on the bottom side of the PCB. \ No newline at end of file diff --git a/keyboards/senselessclay/ck60/rules.mk b/keyboards/senselessclay/ck60/rules.mk new file mode 100644 index 000000000000..49977ee50ac9 --- /dev/null +++ b/keyboards/senselessclay/ck60/rules.mk @@ -0,0 +1,19 @@ +# 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 +# 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 \ No newline at end of file diff --git a/keyboards/senselessclay/ck65/ck65.c b/keyboards/senselessclay/ck65/ck65.c new file mode 100644 index 000000000000..77128d9bf824 --- /dev/null +++ b/keyboards/senselessclay/ck65/ck65.c @@ -0,0 +1,17 @@ +/* Copyright 2020 Hadi Iskandarani + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "ck65.h" \ No newline at end of file diff --git a/keyboards/senselessclay/ck65/ck65.h b/keyboards/senselessclay/ck65/ck65.h new file mode 100644 index 000000000000..1d258ee34652 --- /dev/null +++ b/keyboards/senselessclay/ck65/ck65.h @@ -0,0 +1,35 @@ +/* Copyright 2020 Hadi Iskandarani + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ____ KC_NO + +#define LAYOUT( \ + 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, K114, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, \ + K400, K401, K402, K406, K409, K410, K411, K412, K413, K414 \ +) { \ + { 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, K114 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, ____, K214 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314 }, \ + { K400, K401, K402, ____, ____, ____, K406, ____, ____, K409, K410, K411, K412, K413, K414 } \ +} diff --git a/keyboards/senselessclay/ck65/config.h b/keyboards/senselessclay/ck65/config.h new file mode 100644 index 000000000000..772b2e410a2a --- /dev/null +++ b/keyboards/senselessclay/ck65/config.h @@ -0,0 +1,119 @@ +/* +Copyright 2020 Hadi Iskandarani + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4849 // HI +#define PRODUCT_ID 0x0651 // 65rgb (1) +#define DEVICE_VER 0x0000 // rev0 +#define MANUFACTURER senselessclay +#define PRODUCT ck65 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * 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) + * + */ +/* rev0 */ +#define MATRIX_ROW_PINS { B3, B2, F1, F4, F5 } +#define MATRIX_COL_PINS { F0, D5, D3, D2, D1, D0, F7, C7, C6, B6, B5, B4, D7, D6, D4 } + +//#define UNUSED_PINS { B0, B7, E6 } + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 + +/* RGB Backlighting */ +#define RGB_DI_PIN B1 +#define RGBLED_NUM 69 +#define RGBLIGHT_ANIMATIONS +#define RGBLIGHT_LIMIT_VAL 122 +#define RGBLIGHT_SLEEP +#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_SWIRL+5 \ No newline at end of file diff --git a/keyboards/senselessclay/ck65/info.json b/keyboards/senselessclay/ck65/info.json new file mode 100644 index 000000000000..fbcc95937615 --- /dev/null +++ b/keyboards/senselessclay/ck65/info.json @@ -0,0 +1,10 @@ +{ + "keyboard_name": "CK65", + "url": "https://candykeys.com", + "maintainer": "hadi", + "layouts": { + "LAYOUT": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.75, "y":1, "w":1.25, "h":2}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2}, {"x":15, "y":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] + } + } +} \ No newline at end of file diff --git a/keyboards/senselessclay/ck65/keymaps/default/keymap.c b/keyboards/senselessclay/ck65/keymaps/default/keymap.c new file mode 100644 index 000000000000..be627f899df0 --- /dev/null +++ b/keyboards/senselessclay/ck65/keymaps/default/keymap.c @@ -0,0 +1,51 @@ +/* Copyright 2020 Hadi Iskandarani + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layers { + _0, + _1, + _2, + _3, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_0] = LAYOUT( + /*Base*/ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, KC_END, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_PGUP, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT), + [_1] = LAYOUT( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, + KC_CAPS, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [_2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [_3] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; \ No newline at end of file diff --git a/keyboards/senselessclay/ck65/keymaps/via/keymap.c b/keyboards/senselessclay/ck65/keymaps/via/keymap.c new file mode 100644 index 000000000000..be627f899df0 --- /dev/null +++ b/keyboards/senselessclay/ck65/keymaps/via/keymap.c @@ -0,0 +1,51 @@ +/* Copyright 2020 Hadi Iskandarani + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layers { + _0, + _1, + _2, + _3, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_0] = LAYOUT( + /*Base*/ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, KC_END, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_PGUP, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT), + [_1] = LAYOUT( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, + KC_CAPS, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [_2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [_3] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; \ No newline at end of file diff --git a/keyboards/senselessclay/ck65/keymaps/via/rules.mk b/keyboards/senselessclay/ck65/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/senselessclay/ck65/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/senselessclay/ck65/readme.md b/keyboards/senselessclay/ck65/readme.md new file mode 100644 index 000000000000..653266a59f64 --- /dev/null +++ b/keyboards/senselessclay/ck65/readme.md @@ -0,0 +1,19 @@ +# ck65 + +A 65% keyboard implementation based around the ATMEGA32u4 with per-key RGB. + +* Keyboard Maintainer: [hadi](https://github.com/senselessclay) +* Hardware Supported: CK65 PCB +* Hardware Availability: https://candykeys.com/ + +Make example for this keyboard (after setting up your build environment): + + make senselessclay/ck65:default + +Flashing example for this keyboard: + + make senselessclay/ck65: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). + +If you'd like to reset the board into bootloader mode for flashing using [QMK Toolbox](https://github.com/qmk/qmk_toolbox), simply press the reset button directly above the controller assembly on the bottom side of the PCB. \ No newline at end of file diff --git a/keyboards/senselessclay/ck65/rules.mk b/keyboards/senselessclay/ck65/rules.mk new file mode 100644 index 000000000000..49977ee50ac9 --- /dev/null +++ b/keyboards/senselessclay/ck65/rules.mk @@ -0,0 +1,19 @@ +# 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 +# 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 \ No newline at end of file diff --git a/keyboards/senselessclay/had60/info.json b/keyboards/senselessclay/had60/info.json index daeb4411ac6d..a14c171d6969 100644 --- a/keyboards/senselessclay/had60/info.json +++ b/keyboards/senselessclay/had60/info.json @@ -2,8 +2,6 @@ "keyboard_name": "had60", "url": "https://senselessclay.com/", "maintainer": "hadi", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ @@ -78,4 +76,4 @@ ] } } - } \ No newline at end of file + } diff --git a/keyboards/senselessclay/had60/rules.mk b/keyboards/senselessclay/had60/rules.mk index af835e97058b..2fc98dbfcae9 100644 --- a/keyboards/senselessclay/had60/rules.mk +++ b/keyboards/senselessclay/had60/rules.mk @@ -5,16 +5,13 @@ MCU = atmega32u4 BOOTLOADER = atmel-dfu # Build Options -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output \ No newline at end of file diff --git a/keyboards/sentraq/number_pad/info.json b/keyboards/sentraq/number_pad/info.json index 3e17835d590e..806edcea27c1 100644 --- a/keyboards/sentraq/number_pad/info.json +++ b/keyboards/sentraq/number_pad/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Sentraq Number Pad", "maintainer": "qmk", "url": "https://sentraq.com/collections/kits/products/number-pad-rgb-kit", - "width": 4, - "height": 5, "layouts": { "LAYOUT_numpad_5x4": { - "key_count": 17, "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}, @@ -16,7 +13,6 @@ ] }, "LAYOUT_ortho_5x4": { - "key_count": 20, "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}, diff --git a/keyboards/sentraq/number_pad/keymaps/default/keymap.c b/keyboards/sentraq/number_pad/keymaps/default/keymap.c index 90c806a917bc..207f01abd5e0 100644 --- a/keyboards/sentraq/number_pad/keymaps/default/keymap.c +++ b/keyboards/sentraq/number_pad/keymaps/default/keymap.c @@ -18,13 +18,6 @@ #define _BL 0 #define _FN 1 -// Defines the keycodes used by our macros in process_record_user. -// Disabled as it isn't used in this keymap, but available for modification. -// enum custom_keycodes { -// QMKBEST = SAFE_RANGE, -// QMKURL -// }; - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_BL] = LAYOUT_numpad_5x4( /* Base Layer: Number Pad @@ -67,39 +60,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_NO, KC_NO, KC_NLCK ), }; - -// Handles macros for keycodes defined above. -// Disabled as it isn't used in this keymap, but available for modification. -// bool process_record_user(uint16_t keycode, keyrecord_t *record) { -// switch (keycode) { -// case QMKBEST: -// if (record->event.pressed) { -// // when keycode QMKBEST is pressed -// SEND_STRING("QMK is the best thing ever!"); -// } else { -// // when keycode QMKBEST is released -// } -// break; -// case QMKURL: -// if (record->event.pressed) { -// // when keycode QMKURL is pressed -// SEND_STRING("https://qmk.fm/" SS_TAP(X_ENTER)); -// } else { -// // when keycode QMKURL is released -// } -// break; -// } -// return true; -// } - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/sentraq/number_pad/number_pad.c b/keyboards/sentraq/number_pad/number_pad.c index 8c39efac58ca..f32364871491 100644 --- a/keyboards/sentraq/number_pad/number_pad.c +++ b/keyboards/sentraq/number_pad/number_pad.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "number_pad.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/sentraq/number_pad/rules.mk b/keyboards/sentraq/number_pad/rules.mk index 576ae3cf6a75..041e8e100b2f 100644 --- a/keyboards/sentraq/number_pad/rules.mk +++ b/keyboards/sentraq/number_pad/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/sentraq/s60_x/default/default.c b/keyboards/sentraq/s60_x/default/default.c index 253f5495c201..2a5bcfdd6de4 100644 --- a/keyboards/sentraq/s60_x/default/default.c +++ b/keyboards/sentraq/s60_x/default/default.c @@ -1,28 +1 @@ #include "default.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/sentraq/s60_x/default/rules.mk b/keyboards/sentraq/s60_x/default/rules.mk index 3b0123941221..d7eee7ece6e6 100644 --- a/keyboards/sentraq/s60_x/default/rules.mk +++ b/keyboards/sentraq/s60_x/default/rules.mk @@ -2,27 +2,15 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control -# 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 -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = 60_ansi 60_ansi_split_bs_rshift 60_iso 60_hhkb diff --git a/keyboards/sentraq/s60_x/info.json b/keyboards/sentraq/s60_x/info.json index 1e4514ac8ed5..6d664193c527 100644 --- a/keyboards/sentraq/s60_x/info.json +++ b/keyboards/sentraq/s60_x/info.json @@ -2,8 +2,6 @@ "keyboard_name": "S60-X", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { "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}, {"x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.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}] @@ -21,4 +19,4 @@ "layout": [{"label":"\u00ac", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"\"", "x":2, "y":0}, {"label":"\u00a3", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"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":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"@", "x":11.75, "y":2}, {"label":"~", "x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"label":"|", "x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"AltGr", "x":10, "y":4, "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}] } } -} \ No newline at end of file +} diff --git a/keyboards/sentraq/s60_x/keymaps/ansi_qwertz/rules.mk b/keyboards/sentraq/s60_x/keymaps/ansi_qwertz/rules.mk index 95d084dff118..0c19dc9db3df 100644 --- a/keyboards/sentraq/s60_x/keymaps/ansi_qwertz/rules.mk +++ b/keyboards/sentraq/s60_x/keymaps/ansi_qwertz/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = yes # Console for debug(+400) diff --git a/keyboards/sentraq/s60_x/keymaps/bluebear/rules.mk b/keyboards/sentraq/s60_x/keymaps/bluebear/rules.mk index b7c9a0479055..ca4fd4b9e994 100644 --- a/keyboards/sentraq/s60_x/keymaps/bluebear/rules.mk +++ b/keyboards/sentraq/s60_x/keymaps/bluebear/rules.mk @@ -1,4 +1,4 @@ -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = no # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/sentraq/s60_x/keymaps/dbroqua/keymap.c b/keyboards/sentraq/s60_x/keymaps/dbroqua/keymap.c index 944ba7555f57..3d4969aa1e1e 100644 --- a/keyboards/sentraq/s60_x/keymaps/dbroqua/keymap.c +++ b/keyboards/sentraq/s60_x/keymaps/dbroqua/keymap.c @@ -67,135 +67,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_SFX] = LAYOUT( ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \ ______, BL_TOGG,BL_STEP,BL_DEC, BL_INC, ______, ______, ______, ______, ______, ______, ______, ______, ______, \ - ______, F(0), F(1), ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \ - ______, ______, F(2), F(3), F(4), F(5), F(6), F(7), ______, ______, ______, ______, ______, ______, \ + ______, RGB_TOG,RGB_MOD,______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \ + ______, ______, RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD,______, ______, ______, ______, ______, ______, \ ______, ______, ______, ______, ______, ______, ______, ______ \ ) }; - -enum function_id { - RGBLED_TOGGLE, - RGBLED_STEP_MODE, - RGBLED_INCREASE_HUE, - RGBLED_DECREASE_HUE, - RGBLED_INCREASE_SAT, - RGBLED_DECREASE_SAT, - RGBLED_INCREASE_VAL, - RGBLED_DECREASE_VAL -}; - -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_FUNCTION(RGBLED_TOGGLE), - [1] = ACTION_FUNCTION(RGBLED_STEP_MODE), - [2] = ACTION_FUNCTION(RGBLED_INCREASE_HUE), - [3] = ACTION_FUNCTION(RGBLED_DECREASE_HUE), - [4] = ACTION_FUNCTION(RGBLED_INCREASE_SAT), - [5] = ACTION_FUNCTION(RGBLED_DECREASE_SAT), - [6] = ACTION_FUNCTION(RGBLED_INCREASE_VAL), - [7] = ACTION_FUNCTION(RGBLED_DECREASE_VAL) -}; - -void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { - switch (id) { - case RGBLED_TOGGLE: - if (record->event.pressed) { - #ifdef RGB_ENABLE - rgblight_toggle(); - #endif - } - break; - case RGBLED_INCREASE_HUE: - if (record->event.pressed) { - #ifdef RGB_ENABLE - rgblight_increase_hue(); - #endif - } - break; - case RGBLED_DECREASE_HUE: - if (record->event.pressed) { - #ifdef RGB_ENABLE - rgblight_decrease_hue(); - #endif - } - break; - case RGBLED_INCREASE_SAT: - if (record->event.pressed) { - #ifdef RGB_ENABLE - rgblight_increase_sat(); - #endif - } - break; - case RGBLED_DECREASE_SAT: - if (record->event.pressed) { - #ifdef RGB_ENABLE - rgblight_decrease_sat(); - #endif - } - break; - case RGBLED_INCREASE_VAL: - if (record->event.pressed) { - #ifdef RGB_ENABLE - rgblight_increase_val(); - #endif - } - break; - case RGBLED_DECREASE_VAL: - if (record->event.pressed) { - #ifdef RGB_ENABLE - rgblight_decrease_val(); - #endif - } - break; - case RGBLED_STEP_MODE: - if (record->event.pressed) { - #ifdef RGB_ENABLE - rgblight_step(); - #endif - } - break; - } -} - -void matrix_init_user(void) { -} - -void matrix_scan_user(void) { -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - - if (usb_led & (1 << USB_LED_NUM_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_CAPS_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_SCROLL_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_COMPOSE)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_KANA)) { - - } else { - - } - -} diff --git a/keyboards/sentraq/s60_x/rgb/rules.mk b/keyboards/sentraq/s60_x/rgb/rules.mk index f765aa8bbc25..e065fda601d5 100644 --- a/keyboards/sentraq/s60_x/rgb/rules.mk +++ b/keyboards/sentraq/s60_x/rgb/rules.mk @@ -2,28 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control -# 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 -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work diff --git a/keyboards/sentraq/s65_plus/config.h b/keyboards/sentraq/s65_plus/config.h index 4d4819efcedf..2f02e8e162d3 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_plus/info.json b/keyboards/sentraq/s65_plus/info.json index 1b17ddb53da1..141f7d6c63bd 100644 --- a/keyboards/sentraq/s65_plus/info.json +++ b/keyboards/sentraq/s65_plus/info.json @@ -2,11 +2,8 @@ "keyboard_name": "S65-Plus", "url": "", "maintainer": "qmk", - "width": 18, - "height": 5, "layouts": { "LAYOUT_ansi": { - "key_count": 78, "layout": [ {"label":"F1", "x":0, "y":0}, {"label":"F2", "x":1, "y":0}, @@ -89,7 +86,6 @@ ] }, "LAYOUT_iso": { - "key_count": 79, "layout": [ {"label":"F1", "x":0, "y":0}, {"label":"F2", "x":1, "y":0}, diff --git a/keyboards/sentraq/s65_plus/rules.mk b/keyboards/sentraq/s65_plus/rules.mk index c1fb6cfd2531..8ebd665151fd 100644 --- a/keyboards/sentraq/s65_plus/rules.mk +++ b/keyboards/sentraq/s65_plus/rules.mk @@ -2,27 +2,15 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable RGB light diff --git a/keyboards/sentraq/s65_x/config.h b/keyboards/sentraq/s65_x/config.h index d3c9adbf3c18..b8886bf67fa3 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/sentraq/s65_x/info.json b/keyboards/sentraq/s65_x/info.json index 9aeb7eb7dedd..20088cee893e 100644 --- a/keyboards/sentraq/s65_x/info.json +++ b/keyboards/sentraq/s65_x/info.json @@ -2,11 +2,8 @@ "keyboard_name": "S65-X PCB", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_ansi": { - "key_count": 68, "layout": [ {"label":"Esc", "x":0, "y":0}, {"label":"1", "x":1, "y":0}, @@ -79,7 +76,6 @@ ] }, "LAYOUT_65_iso": { - "key_count": 69, "layout": [ {"label":"Esc", "x":0, "y":0}, {"label":"1", "x":1, "y":0}, diff --git a/keyboards/sentraq/s65_x/rules.mk b/keyboards/sentraq/s65_x/rules.mk index a9cbd2518d08..2df72a26e99a 100644 --- a/keyboards/sentraq/s65_x/rules.mk +++ b/keyboards/sentraq/s65_x/rules.mk @@ -2,27 +2,15 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable RGB light diff --git a/keyboards/sentraq/s65_x/s65_x.c b/keyboards/sentraq/s65_x/s65_x.c index 844f5cf28bb8..09ce310b071f 100644 --- a/keyboards/sentraq/s65_x/s65_x.c +++ b/keyboards/sentraq/s65_x/s65_x.c @@ -1,18 +1 @@ #include "s65_x.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - matrix_init_user(); -}; - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - matrix_scan_user(); -}; - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - led_set_user(usb_led); -} diff --git a/keyboards/sergiopoverony/creator_pro/config.h b/keyboards/sergiopoverony/creator_pro/config.h new file mode 100644 index 000000000000..3bf7efc77dc3 --- /dev/null +++ b/keyboards/sergiopoverony/creator_pro/config.h @@ -0,0 +1,49 @@ +/* Copyright 2020-2021 SergioPoverony + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once +#include "config_common.h" + +/* vid pid */ +#define VENDOR_ID 0x8B1E +#define PRODUCT_ID 0x0C00 +#define DEVICE_VER 0x0001 +#define MANUFACTURER SergioPoverony +#define PRODUCT Creator Pro + + +/* key matrix size pins */ +#define MATRIX_ROWS 1 +#define MATRIX_COLS 9 +#define DIRECT_PINS { \ + { D1, D4, C6, D7, \ + E6, \ + B2, B3, B1, F7 } \ +} + + +/*led layout indication pins*/ +#define RED_LED D0 +#define BLUE_LED B5 +#define GREEN_LED B6 + +/* encoder pins*/ +#define ENCODERS_PAD_A { D2 } +#define ENCODERS_PAD_B { D3 } +#define ENCODER_RESOLUTION 1 + +#define UNUSED_PINS + diff --git a/keyboards/sergiopoverony/creator_pro/creator_pro.c b/keyboards/sergiopoverony/creator_pro/creator_pro.c new file mode 100644 index 000000000000..55c0497df24c --- /dev/null +++ b/keyboards/sergiopoverony/creator_pro/creator_pro.c @@ -0,0 +1,33 @@ +/* Copyright 2020-2021 SergioPoverony + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "creator_pro.h" + +void matrix_init_kb(void) { + matrix_init_user(); +/* led pins */ + setPinOutput(RED_LED); + setPinOutput(BLUE_LED); + setPinOutput(GREEN_LED); +} +void turn_off_leds(void) { + writePinLow(RED_LED); + writePinLow(BLUE_LED); + writePinLow(GREEN_LED); +} +void turn_on_led(pin_t pin) { + writePinHigh(pin); +} diff --git a/keyboards/sergiopoverony/creator_pro/creator_pro.h b/keyboards/sergiopoverony/creator_pro/creator_pro.h new file mode 100644 index 000000000000..566e94a77ad5 --- /dev/null +++ b/keyboards/sergiopoverony/creator_pro/creator_pro.h @@ -0,0 +1,33 @@ +/* Copyright 2020-2021 SergioPoverony + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once +#include "quantum.h" + +#define LAYOUT( \ +K01, K02, K03, K04, \ + K05, \ +K06, K07, K08, K09 \ +) { { \ +K01, K02, K03, K04, \ + K05, \ +K06, K07, K08, K09 \ +} } + +/*led work*/ +void turn_off_leds(void); +void turn_on_led(pin_t pin); + diff --git a/keyboards/sergiopoverony/creator_pro/info.json b/keyboards/sergiopoverony/creator_pro/info.json new file mode 100644 index 000000000000..a64615a78fd3 --- /dev/null +++ b/keyboards/sergiopoverony/creator_pro/info.json @@ -0,0 +1,20 @@ +{ + "keyboard_name": "Creator Pro", + "url": "https://github.com/sergiopoverony", + "maintainer": "SergioPoverony", + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4.5, "y":0.5}, + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1} + ] + } + } +} diff --git a/keyboards/sergiopoverony/creator_pro/keymaps/default/keymap.c b/keyboards/sergiopoverony/creator_pro/keymaps/default/keymap.c new file mode 100644 index 000000000000..d29621929b8e --- /dev/null +++ b/keyboards/sergiopoverony/creator_pro/keymaps/default/keymap.c @@ -0,0 +1,123 @@ +/* Copyright 2020-2021 SergioPoverony + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + #include QMK_KEYBOARD_H + +/* enum layers num */ +enum layer_number { + _HOME = 0, + _RED, + _BLUE, + _GREEN +}; + +/* Encoder function with layers function */ +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + switch (get_highest_layer(layer_state)) { + + case _HOME: + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + break; + + case _RED: + if (clockwise) { + tap_code(KC_MS_WH_UP); + } else { + tap_code(KC_MS_WH_DOWN); + } + break; + + case _BLUE: + if (clockwise) { + tap_code(KC_PGUP); + } else { + tap_code(KC_PGDN); + } + break; + + case _GREEN: + default: + if (clockwise) { + tap_code16(KC_LEFT); + } else { + tap_code16(KC_RIGHT); + } + break; + } + } + return true; +} + + +/* Layout */ +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_HOME] = LAYOUT( + KC_1, KC_2, KC_3, KC_4, + TO(_RED), + KC_5, KC_6, KC_7, KC_8 + ), + + [_RED] = LAYOUT( + KC_Q, KC_W, KC_E, KC_R, + TO(_BLUE), + KC_A, KC_S, KC_D, KC_F + ), + + [_BLUE] = LAYOUT( + KC_1, KC_2, KC_3, KC_4, + TO(_GREEN), + KC_5, KC_6, KC_7, KC_8 + ), + + [_GREEN] = LAYOUT( + KC_1, KC_2, KC_3, KC_4, + TO(_HOME), + KC_5, KC_6, KC_7, KC_8 + ), +}; + + +/* Select led layout */ +layer_state_t layer_state_set_user(layer_state_t state) +{ + turn_off_leds(); + + switch (get_highest_layer(state)) + { + case _HOME: + turn_on_led(RED_LED); + turn_on_led(BLUE_LED); + break; + + case _RED: + turn_on_led(RED_LED); + break; + + case _BLUE: + turn_on_led(BLUE_LED); + break; + + case _GREEN: + turn_on_led(GREEN_LED); + break; + } + return state; +}; diff --git a/keyboards/sergiopoverony/creator_pro/keymaps/default/readme.md b/keyboards/sergiopoverony/creator_pro/keymaps/default/readme.md new file mode 100644 index 000000000000..f899eb3c1348 --- /dev/null +++ b/keyboards/sergiopoverony/creator_pro/keymaps/default/readme.md @@ -0,0 +1,5 @@ +![Creator Pro Layout](https://i.imgur.com/0PmpLcM.png) + +# Default Creator Pro Layout + +This is the default layout that comes flashed on every Creator Pro. The right most key (Encoder) is the rotary and the key is binded to layer switching. \ No newline at end of file diff --git a/keyboards/sergiopoverony/creator_pro/keymaps/via/keymap.c b/keyboards/sergiopoverony/creator_pro/keymaps/via/keymap.c new file mode 100644 index 000000000000..756677246158 --- /dev/null +++ b/keyboards/sergiopoverony/creator_pro/keymaps/via/keymap.c @@ -0,0 +1,123 @@ +/* Copyright 2020-2021 SergioPoverony + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + #include QMK_KEYBOARD_H + +/* enum layers num */ +enum layer_number { + _HOME = 0, + _RED, + _BLUE, + _GREEN +}; + +/* Encoder function with layers function */ +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + switch (get_highest_layer(layer_state)) { + + case _HOME: + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + break; + + case _RED: + if (clockwise) { + tap_code(KC_MS_WH_UP); + } else { + tap_code(KC_MS_WH_DOWN); + } + break; + + case _BLUE: + if (clockwise) { + tap_code(KC_PGUP); + } else { + tap_code(KC_PGDN); + } + break; + + case _GREEN: + default: + if (clockwise) { + tap_code16(KC_LEFT); + } else { + tap_code16(KC_RIGHT); + } + break; + } + } + return true; +} + + +/* Layout */ +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_HOME] = LAYOUT( + KC_1, KC_2, KC_3, KC_4, + TO(_RED), + KC_5, KC_6, KC_7, KC_8 + ), + + [_RED] = LAYOUT( + KC_Q, KC_W, KC_E, KC_R, + TO(_BLUE), + KC_A, KC_S, KC_D, KC_F + ), + + [_BLUE] = LAYOUT( + KC_1, KC_2, KC_3, KC_4, + TO(_GREEN), + KC_5, KC_6, KC_7, KC_8 + ), + + [_GREEN] = LAYOUT( + KC_1, KC_2, KC_3, KC_4, + TO(_HOME), + KC_5, KC_6, KC_7, KC_8 + ), +}; + + +/* Select led layout */ +layer_state_t layer_state_set_user(layer_state_t state) +{ + turn_off_leds(); + + switch (get_highest_layer(state)) + { + case _HOME: + turn_on_led(RED_LED); + turn_on_led(BLUE_LED); + break; + + case _RED: + turn_on_led(RED_LED); + break; + + case _BLUE: + turn_on_led(BLUE_LED); + break; + + case _GREEN: + turn_on_led(GREEN_LED); + break; + } + return state; +}; diff --git a/keyboards/sergiopoverony/creator_pro/keymaps/via/rules.mk b/keyboards/sergiopoverony/creator_pro/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/sergiopoverony/creator_pro/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/sergiopoverony/creator_pro/readme.md b/keyboards/sergiopoverony/creator_pro/readme.md new file mode 100644 index 000000000000..601c069d9132 --- /dev/null +++ b/keyboards/sergiopoverony/creator_pro/readme.md @@ -0,0 +1,27 @@ +# Creator Pro + +![Creator Pro Layout](https://i.imgur.com/G3Yf20D.jpg) + +This Keypad has 1 rows x 9 columns of keys. It has the top/default layer that +has a few 1-8 keys as well as one dedicated encoder key for change layer. The + second layer has QWERASDF keys. Encoder have 4 function on any layer is + Volume Control, Mouse Wheel, PageUp/PageDn, Left/Righ buttons. +The keypad also includes three RGB LEDs that show active layer. +For enter the bootloader to flash new firmware need press hw reset button hole on the bottom + +Keyboard Maintainer: [SergioPoverony](https://github.com/sergiopoverony) + +Hardware: + * For enter the bootloader to flash new firmware need press hw reset button hole on the bottom + * Key switch holes cut fabrication in blank PCB + * Uses Gateron Brown switches with gray keycaps XDA profile + * Chassis is PCB with supports + * PCB fabrication + * Uses a Pro Micro wint MicroUSB connector + * Includes a reset switch accessible by a hole on the bottom + +Make example for this keyboard (after setting up your build environment): + + make sergiopoverony/creator_pro: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/sergiopoverony/creator_pro/rules.mk b/keyboards/sergiopoverony/creator_pro/rules.mk new file mode 100644 index 000000000000..c0b3029435a0 --- /dev/null +++ b/keyboards/sergiopoverony/creator_pro/rules.mk @@ -0,0 +1,20 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes diff --git a/keyboards/sets3n/kk980/config.h b/keyboards/sets3n/kk980/config.h new file mode 100644 index 000000000000..016ab0d46036 --- /dev/null +++ b/keyboards/sets3n/kk980/config.h @@ -0,0 +1,103 @@ +/* Copyright 2021 Sets3n + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x404A +#define PRODUCT_ID 0x0002 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Sets3n +#define PRODUCT kk980 + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 17 + +/* + * 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) + * + */ + +/* key matrix pins */ +#define MATRIX_ROW_PINS { B2, B3, D3, D4, D5, D6 } +#define MATRIX_COL_PINS { E6, F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, B1, B0, D0, D1 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* number of backlight levels */ + +#ifdef BACKLIGHT_PIN +#define BACKLIGHT_LEVELS 8 +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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 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 RGB_DI_PIN B7 +#ifdef RGB_DI_PIN +#define RGBLED_NUM 102 +#define RGBLIGHT_LED_MAP { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,\ + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, \ + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, \ + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, \ + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, \ + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, \ + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, \ + 96, 97, 98, 99, 100, 101, 102 } // 1 --> ScollLock 2 --> CapsLock 3 --> Bluetooth 4 --> NumLock +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 +#define RGBLIGHT_LIMIT_VAL 230 +#define RGBLIGHT_LAYERS +#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF +#endif + +#ifdef RGB_MATRIX_ENABLE +#define DRIVER_LED_TOTAL RGBLED_NUM +#define RGB_MATRIX_KEYPRESSES +#endif + +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 + diff --git a/keyboards/sets3n/kk980/info.json b/keyboards/sets3n/kk980/info.json new file mode 100644 index 000000000000..dad5530d444b --- /dev/null +++ b/keyboards/sets3n/kk980/info.json @@ -0,0 +1,115 @@ +{ + "keyboard_name": "kk980", + "url": "https://i.imgur.com/MQA6FXb.jpg", + "maintainer": "Sets3n", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"ESC", "x": 0, "y": 0}, + {"label":"F1", "x": 2, "y": 0}, + {"label":"F2", "x": 3, "y": 0}, + {"label":"F3", "x": 4, "y": 0}, + {"label":"F4", "x": 5, "y": 0}, + {"label":"F5", "x": 6.5, "y": 0}, + {"label":"F6", "x": 7.5, "y": 0}, + {"label":"F7", "x": 8.5, "y": 0}, + {"label":"F8", "x": 9.5, "y": 0}, + {"label":"F9", "x": 11, "y": 0}, + {"label":"F10", "x": 12, "y": 0}, + {"label":"F11", "x": 13, "y": 0}, + {"label":"F12", "x": 14, "y": 0}, + {"label":"DEL", "x": 15.5, "y": 0}, + {"label":"INSERT", "x": 16.5, "y": 0}, + {"label":"PGUP", "x": 17.5, "y": 0}, + {"label":"PGDN", "x": 18.5, "y": 0}, + + {"label":"`~", "x": 0, "y": 1.5}, + {"label":"1!", "x": 1, "y": 1.5}, + {"label":"2@", "x": 2, "y": 1.5}, + {"label":"3#", "x": 3, "y": 1.5}, + {"label":"4$", "x": 4, "y": 1.5}, + {"label":"5%", "x": 5, "y": 1.5}, + {"label":"6^", "x": 6, "y": 1.5}, + {"label":"7&", "x": 7, "y": 1.5}, + {"label":"8*", "x": 8, "y": 1.5}, + {"label":"9(", "x": 9, "y": 1.5}, + {"label":"0)", "x": 10, "y": 1.5}, + {"label":"-_", "x": 11, "y": 1.5}, + {"label":"+=", "x": 12, "y": 1.5}, + {"label":"BS", "x": 13, "y": 1.5, "w": 2}, + {"label":"NUML", "x": 15.5, "y": 1.5}, + {"label":"/", "x": 16.5, "y": 1.5}, + {"label":"*", "x": 17.5, "y": 1.5}, + {"label":"-", "x": 18.5, "y": 1.5}, + + {"label":"TAB", "x": 0, "y": 2.5, "w": 1.5}, + {"label":"Q", "x": 1.5, "y": 2.5}, + {"label":"W", "x": 2.5, "y": 2.5}, + {"label":"E", "x": 3.5, "y": 2.5}, + {"label":"R", "x": 4.5, "y": 2.5}, + {"label":"T", "x": 5.5, "y": 2.5}, + {"label":"Y", "x": 6.5, "y": 2.5}, + {"label":"U", "x": 7.5, "y": 2.5}, + {"label":"I", "x": 8.5, "y": 2.5}, + {"label":"O", "x": 9.5, "y": 2.5}, + {"label":"P", "x": 10.5, "y": 2.5}, + {"label":"[{", "x": 11.5, "y": 2.5}, + {"label":"]}", "x": 12.5, "y": 2.5}, + {"label":"\\|", "x": 13.5, "y": 2.5, "w": 1.5}, + {"label":"7", "x": 15.5, "y": 2.5}, + {"label":"8", "x": 16.5, "y": 2.5}, + {"label":"9", "x": 17.5, "y": 2.5}, + + {"label":"CAPS", "x": 0, "y": 3.5, "w": 1.75}, + {"label":"A", "x": 1.75, "y": 3.5}, + {"label":"S", "x": 2.75, "y": 3.5}, + {"label":"D", "x": 3.75, "y": 3.5}, + {"label":"F", "x": 4.75, "y": 3.5}, + {"label":"G", "x": 5.75, "y": 3.5}, + {"label":"H", "x": 6.75, "y": 3.5}, + {"label":"J", "x": 7.75, "y": 3.5}, + {"label":"K", "x": 8.75, "y": 3.5}, + {"label":"L", "x": 9.75, "y": 3.5}, + {"label":";:", "x": 10.75, "y": 3.5}, + {"label":"'\"", "x": 11.75, "y": 3.5}, + {"label":"RETURN", "x": 12.75, "y": 3.5, "w": 2.25}, + {"label":"4", "x": 15.5, "y": 3.5}, + {"label":"5", "x": 16.5, "y": 3.5}, + {"label":"6", "x": 17.5, "y": 3.5}, + {"label":"+", "x": 18.5, "y": 2.5, "h": 2}, + + {"label":"LSHIFT", "x": 0, "y": 4.5, "w": 2.25}, + {"label":"Z", "x": 2.25, "y": 4.5}, + {"label":"X", "x": 3.25, "y": 4.5}, + {"label":"C", "x": 4.25, "y": 4.5}, + {"label":"V", "x": 5.25, "y": 4.5}, + {"label":"B", "x": 6.25, "y": 4.5}, + {"label":"N", "x": 7.25, "y": 4.5}, + {"label":"M", "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":"RSHIFT", "x": 12.25, "y": 4.5, "w": 1.75}, + {"label":"up", "x": 14.25, "y": 4.75}, + {"label":"1", "x": 15.5, "y": 4.5}, + {"label":"2", "x": 16.5, "y": 4.5}, + {"label":"3", "x": 17.5, "y": 4.5}, + + {"label":"LCTRL", "x": 0, "y": 5.5, "w": 1.25}, + {"label":"LWIN", "x": 1.25, "y": 5.5}, + {"label":"LALT", "x": 2.25, "y": 5.5, "w": 1.25}, + {"label":"SPACE", "x": 3.5, "y": 5.5, "w": 6.25}, + {"label":"RALT", "x": 9.75, "y": 5.5}, + {"label":"FN", "x": 10.75, "y": 5.5}, + {"label":"RCTRL", "x": 11.75, "y": 5.5, "w": 1.25}, + {"label":"LEFT", "x": 13.25, "y": 5.75}, + {"label":"DOWN", "x": 14.25, "y": 5.75}, + {"label":"RIGHT", "x": 15.25, "y": 5.75}, + {"label":"0", "x": 16.5, "y": 5.5}, + {"label":".DEL", "x": 17.5, "y": 5.5}, + {"label":"ENTER", "x": 18.5, "y": 4.5, "h": 2} + + ] + } + } +} diff --git a/keyboards/sets3n/kk980/keymaps/default/keymap.c b/keyboards/sets3n/kk980/keymaps/default/keymap.c new file mode 100644 index 000000000000..f4255f450582 --- /dev/null +++ b/keyboards/sets3n/kk980/keymaps/default/keymap.c @@ -0,0 +1,92 @@ +/* Copyright 2021 Sets3n + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS, KC_PGDN, KC_PGUP, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT + ), + + [1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, BL_TOGG, BL_DEC, BL_INC, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) + +}; + + +//以下是RGB灯作为层切换指示 +const rgblight_segment_t PROGMEM my_scroll_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {1, 1, HSV_CYAN} +); + +const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {2, 1, HSV_MAGENTA}, + {56, 1, HSV_CYAN} +); + + +const rgblight_segment_t PROGMEM my_bluetooth_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {3, 1, HSV_WHITE} +); + +const rgblight_segment_t PROGMEM my_numlocak_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {4, 1, HSV_GREEN}, + {35, 1, HSV_RED} +); + +// Define the array of layers. Later layers take precedence +const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( + my_scroll_layer, + my_capslock_layer, + my_bluetooth_layer, + my_numlocak_layer +); + +void keyboard_post_init_user(void){ + //Enable the LED layers + rgblight_layers = my_rgb_layers; +} + +// Enabling and disabling lighting layers +layer_state_t layer_state_set_user(layer_state_t state) { + // Both layers will light up if both kb layers are active + rgblight_set_layer_state(0, layer_state_cmp(state, 0)); + rgblight_set_layer_state(1, layer_state_cmp(state, 1)); + rgblight_set_layer_state(3, layer_state_cmp(state, 3)); + + return state; +} + +bool led_update_user(led_t led_state) { + rgblight_set_layer_state(0, led_state.scroll_lock); + rgblight_set_layer_state(1, led_state.caps_lock); + rgblight_set_layer_state(3, led_state.num_lock); + + return true; +} + diff --git a/keyboards/sets3n/kk980/keymaps/via/keymap.c b/keyboards/sets3n/kk980/keymaps/via/keymap.c new file mode 100644 index 000000000000..f4255f450582 --- /dev/null +++ b/keyboards/sets3n/kk980/keymaps/via/keymap.c @@ -0,0 +1,92 @@ +/* Copyright 2021 Sets3n + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS, KC_PGDN, KC_PGUP, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT + ), + + [1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, BL_TOGG, BL_DEC, BL_INC, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) + +}; + + +//以下是RGB灯作为层切换指示 +const rgblight_segment_t PROGMEM my_scroll_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {1, 1, HSV_CYAN} +); + +const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {2, 1, HSV_MAGENTA}, + {56, 1, HSV_CYAN} +); + + +const rgblight_segment_t PROGMEM my_bluetooth_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {3, 1, HSV_WHITE} +); + +const rgblight_segment_t PROGMEM my_numlocak_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {4, 1, HSV_GREEN}, + {35, 1, HSV_RED} +); + +// Define the array of layers. Later layers take precedence +const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( + my_scroll_layer, + my_capslock_layer, + my_bluetooth_layer, + my_numlocak_layer +); + +void keyboard_post_init_user(void){ + //Enable the LED layers + rgblight_layers = my_rgb_layers; +} + +// Enabling and disabling lighting layers +layer_state_t layer_state_set_user(layer_state_t state) { + // Both layers will light up if both kb layers are active + rgblight_set_layer_state(0, layer_state_cmp(state, 0)); + rgblight_set_layer_state(1, layer_state_cmp(state, 1)); + rgblight_set_layer_state(3, layer_state_cmp(state, 3)); + + return state; +} + +bool led_update_user(led_t led_state) { + rgblight_set_layer_state(0, led_state.scroll_lock); + rgblight_set_layer_state(1, led_state.caps_lock); + rgblight_set_layer_state(3, led_state.num_lock); + + return true; +} + diff --git a/keyboards/sets3n/kk980/keymaps/via/rules.mk b/keyboards/sets3n/kk980/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/sets3n/kk980/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/sets3n/kk980/kk980.c b/keyboards/sets3n/kk980/kk980.c new file mode 100644 index 000000000000..d5254b3fc0ce --- /dev/null +++ b/keyboards/sets3n/kk980/kk980.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Sets3n + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "kk980.h" diff --git a/keyboards/sets3n/kk980/kk980.h b/keyboards/sets3n/kk980/kk980.h new file mode 100644 index 000000000000..c7589e8c4008 --- /dev/null +++ b/keyboards/sets3n/kk980/kk980.h @@ -0,0 +1,54 @@ +/* Copyright 2021 Sets3n + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +/* + * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ + * │00 │ │01 │02 │03 │04 │ │05 │06 │07 │08 │ │09 │0A │0B │0C │ │0D │0E │0F │0G │ + * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┬───┐ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │56 │ │1D │1E │1F │1G │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┼───┤ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │57 │ │2D │2E │2F │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ├───┼───┼───┤3G │ + * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │ │3D │3E │3F │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┘ ├───┼───┼───┼───┤ + * │40 │41 │42 │43 │44 │45 │46 │47 │48 │49 │4A │4B │┌───┐│4D │4E │4F │ │ + * ├────┬───┼───┴┬──┴───┴───┴───┴───┴───┴─┬─┴─┬─┴─┬─┴──┬───┘│4C │└───┼───┼───┤5G │ + * │50 │51 │52 │55 │58 │59 │5A │┌───┼───┼───┐│5E │5F │ │ + * └────┴───┴────┴────────────────────────┴───┴───┴────┘│5B │5C │5D │└───┴───┴───┘ + * └───┴───┴───┘ + */ + +#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, K56, K1D, K1E, K1F, K1G, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K57, K2D, K2E, K2F, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3G, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, K4F, \ + K50, K51, K52, K55, K58, K59, 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, XXX }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3G }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, K4F, XXX }, \ + { K50, K51, K52, XXX, XXX, K55, K56, K57, K58, K59, K5A, K5B, K5C, K5D, K5E, K5F, K5G } \ +} diff --git a/keyboards/sets3n/kk980/readme.md b/keyboards/sets3n/kk980/readme.md new file mode 100644 index 000000000000..0a1142e57106 --- /dev/null +++ b/keyboards/sets3n/kk980/readme.md @@ -0,0 +1,31 @@ +# kk980 + +![kk980](https://i.imgur.com/NDsBMR6.jpg) + +A hotswap 98% RGB Mechanical keyboard. + +* Keyboard Maintainer: [sets3n](https://github.com/sets3n) +* Hardware Supported: kk980 PCB +* Hardware Availability: - + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `RESET` if it is available + +## HEX + +Make example for this keyboard (after setting up your build environment): + + make sets3n/kk980:default + +## FLASH + +Flashing example for this keyboard: + + make sets3n/kk980:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/sets3n/kk980/rules.mk b/keyboards/sets3n/kk980/rules.mk new file mode 100644 index 000000000000..7b5c27fa097c --- /dev/null +++ b/keyboards/sets3n/kk980/rules.mk @@ -0,0 +1,19 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# # 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 diff --git a/keyboards/setta21/info.json b/keyboards/setta21/info.json index a1143fb03de9..46c06613a85f 100644 --- a/keyboards/setta21/info.json +++ b/keyboards/setta21/info.json @@ -1,9 +1,7 @@ { - "keyboard_name": "setta21", - "url": "https://salicylic-acid3.hatenablog.com/", - "maintainer": "Salicylic_acid3", - "width": 18.25, - "height": 6.25, + "keyboard_name": "setta21", + "url": "https://salicylic-acid3.hatenablog.com/", + "maintainer": "Salicylic_acid3", "layouts": { "LAYOUT_numpad_6x4": { "layout": [ @@ -11,23 +9,28 @@ {"label":"F2", "x":1, "y":0}, {"label":"\uff1d", "x":2, "y":0}, {"label":"Del", "x":3, "y":0}, + {"label":"Num Lock", "x":0, "y":1.25}, {"label":"/", "x":1, "y":1.25}, {"label":"*", "x":2, "y":1.25}, {"label":"-", "x":3, "y":1.25}, + {"label":"7", "x":0, "y":2.25}, {"label":"8", "x":1, "y":2.25}, {"label":"9", "x":2, "y":2.25}, - {"label":"+", "x":3, "y":2.25, "h":2}, + {"label":"4", "x":0, "y":3.25}, {"label":"5", "x":1, "y":3.25}, {"label":"6", "x":2, "y":3.25}, + {"label":"+", "x":3, "y":2.25, "h":2}, + {"label":"1", "x":0, "y":4.25}, {"label":"2", "x":1, "y":4.25}, {"label":"3", "x":2, "y":4.25}, - {"label":"Enter", "x":3, "y":4.25, "h":2}, + {"label":"0", "x":0, "y":5.25, "w":2}, - {"label":".", "x":2, "y":5.25} + {"label":".", "x":2, "y":5.25}, + {"label":"Enter", "x":3, "y":4.25, "h":2} ] } } diff --git a/keyboards/setta21/keymaps/salicylic/config.h b/keyboards/setta21/keymaps/salicylic/config.h index 44b34aa2fda8..06e23ba7a3eb 100644 --- a/keyboards/setta21/keymaps/salicylic/config.h +++ b/keyboards/setta21/keymaps/salicylic/config.h @@ -27,7 +27,7 @@ # define RGB_MATRIX_KEYPRESSES // reacts to keypresses // # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses) // # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended // # define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness) // # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness) // # define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255 @@ -37,4 +37,3 @@ # define RGB_MATRIX_VAL_STEP 5 # define RGB_MATRIX_SPD_STEP 10 #endif - diff --git a/keyboards/setta21/keymaps/salicylic/keymap.c b/keyboards/setta21/keymaps/salicylic/keymap.c index d1db2ff9a211..06fa89c9c732 100644 --- a/keyboards/setta21/keymaps/salicylic/keymap.c +++ b/keyboards/setta21/keymaps/salicylic/keymap.c @@ -9,7 +9,7 @@ extern rgblight_config_t rgblight_config; extern uint8_t is_master; -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE static uint32_t oled_timer = 0; #endif @@ -40,11 +40,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //|--------+--------+--------+--------| KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, //|--------+--------+--------+--------| - KC_P7, KC_P8, KC_P9, + KC_P7, KC_P8, KC_P9, //|--------+--------+--------+--------| KC_P4, KC_P5, KC_P6, KC_PPLS, //|--------+--------+--------+--------| - KC_P1, KC_P2, KC_P3, + KC_P1, KC_P2, KC_P3, //|--------+--------+--------+--------| LT(_ARROW, KC_P0),LT(_MACRO, KC_PDOT),KC_PENT //`-----------------------------------' @@ -56,13 +56,13 @@ LT(_ARROW, KC_P0),LT(_MACRO, KC_PDOT),KC_PENT //|--------+--------+--------+--------| XXXXXXX, _______, _______, _______, //|--------+--------+--------+--------| - XXXXXXX, KC_UP, XXXXXXX, + XXXXXXX, KC_UP, XXXXXXX, //|--------+--------+--------+--------| KC_LEFT, KC_DOWN,KC_RIGHT, _______, //|--------+--------+--------+--------| - XXXXXXX, KC_DOWN, XXXXXXX, + XXXXXXX, KC_DOWN, XXXXXXX, //|--------+--------+--------+--------| - MO(_ARROW), MO(_MACRO), _______ + MO(_ARROW), MO(_MACRO), _______ //`-----------------------------------' ), @@ -72,13 +72,13 @@ LT(_ARROW, KC_P0),LT(_MACRO, KC_PDOT),KC_PENT //|--------+--------+--------+--------| SEND_MIN,SEND_MAX,SEND_CIF,SEND_AVE, //|--------+--------+--------+--------| - KC_F7, KC_F8, KC_F9, + KC_F7, KC_F8, KC_F9, //|--------+--------+--------+--------| KC_F4, KC_F5, KC_F6,SEND_SUM, //|--------+--------+--------+--------| - KC_F11, KC_F12, KC_F3, + KC_F11, KC_F12, KC_F3, //|--------+--------+--------+--------| - _______, _______, JP_RPRN + _______, _______, JP_RPRN //`-----------------------------------' ), @@ -88,13 +88,13 @@ LT(_ARROW, KC_P0),LT(_MACRO, KC_PDOT),KC_PENT //|--------+--------+--------+--------| XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, //|--------+--------+--------+--------| - RGB_SAD, RGB_SAI, XXXXXXX, + RGB_SAD, RGB_SAI, XXXXXXX, //|--------+--------+--------+--------| RGB_HUD, RGB_HUI, XXXXXXX, RGB_TOG, //|--------+--------+--------+--------| - RGB_VAD, RGB_VAI, XXXXXXX, + RGB_VAD, RGB_VAI, XXXXXXX, //|--------+--------+--------+--------| - _______, _______, RGB_MOD + _______, _______, RGB_MOD //`-----------------------------------' ) }; @@ -109,7 +109,7 @@ int RGB_current_mode; bool process_record_user(uint16_t keycode, keyrecord_t *record) { bool result = false; if (record->event.pressed) { - #ifdef OLED_DRIVER_ENABLE + #ifdef OLED_ENABLE oled_timer = timer_read32(); #endif } @@ -163,7 +163,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return result; } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_0; } @@ -190,8 +190,9 @@ void render_status(void) { render_layer_state(); } -void oled_task_user(void) { +bool oled_task_user(void) { render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) + return false; } #endif diff --git a/keyboards/setta21/keymaps/salicylic/rules.mk b/keyboards/setta21/keymaps/salicylic/rules.mk index 2d1919296977..69864a316621 100644 --- a/keyboards/setta21/keymaps/salicylic/rules.mk +++ b/keyboards/setta21/keymaps/salicylic/rules.mk @@ -1,3 +1,4 @@ RGBLIGHT_ENABLE = no RGB_MATRIX_ENABLE = yes -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/setta21/rev1/rev1.c b/keyboards/setta21/rev1/rev1.c index 3c0823870b98..b37745277027 100644 --- a/keyboards/setta21/rev1/rev1.c +++ b/keyboards/setta21/rev1/rev1.c @@ -19,7 +19,3 @@ 4 } }; #endif - -void matrix_init_kb(void) { - matrix_init_user(); -}; diff --git a/keyboards/setta21/rules.mk b/keyboards/setta21/rules.mk index b99696bc2694..020404bb3c89 100644 --- a/keyboards/setta21/rules.mk +++ b/keyboards/setta21/rules.mk @@ -2,35 +2,22 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -TAP_DANCE_ENABLE = no -OLED_DRIVER_ENABLE = no +AUDIO_ENABLE = no # Audio output +RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. +OLED_ENABLE = no USE_I2C = 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 RGB_MATRIX_ENABLE = no RGB_MATRIX_DRIVER = WS2812 diff --git a/keyboards/shambles/info.json b/keyboards/shambles/info.json index 1f031cf7d2ba..5952442d7d16 100644 --- a/keyboards/shambles/info.json +++ b/keyboards/shambles/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Shambles TKL", "url": "", "maintainer": "OsciX", - "width": 13.25, - "height": 4.5, "layouts": { "LAYOUT": { - "key_count": 47, "layout": [{"label":"K00", "x":0, "y":0}, {"label":"K01", "x":1.5, "y":0}, {"label":"K02", "x":2.5, "y":0}, {"label":"K03", "x":3.5, "y":0}, {"label":"K04", "x":4.75, "y":0}, {"label":"K05", "x":5.75, "y":0}, {"label":"K06", "x":6.75, "y":0}, {"label":"K07", "x":8, "y":0}, {"label":"K08", "x":9, "y":0}, {"label":"K09", "x":10.25, "y":0}, {"label":"K10", "x":11.25, "y":0}, {"label":"K11", "x":12.25, "y":0}, {"label":"K12", "x":0, "y":1.5}, {"label":"K13", "x":1, "y":1.5}, {"label":"K14", "x":2, "y":1.5}, {"label":"K15", "x":3, "y":1.5}, {"label":"K16", "x":4, "y":1.5}, {"label":"K17", "x":5, "y":1.5}, {"label":"K18", "x":6, "y":1.5}, {"label":"K19", "x":7, "y":1.5}, {"label":"K20", "x":8, "y":1.5}, {"label":"K21", "x":9, "y":1.5}, {"label":"K22", "x":10.25, "y":1.25}, {"label":"K23", "x":11.25, "y":1.25}, {"label":"K24", "x":12.25, "y":1.25}, {"label":"K25", "x":0, "y":2.5}, {"label":"K26", "x":1, "y":2.5}, {"label":"K27", "x":2, "y":2.5}, {"label":"K28", "x":3, "y":2.5}, {"label":"K29", "x":4, "y":2.5}, {"label":"K30", "x":5, "y":2.5}, {"label":"K31", "x":6, "y":2.5}, {"label":"K32", "x":7, "y":2.5}, {"label":"K33", "x":8, "y":2.5}, {"label":"K34", "x":9, "y":2.5}, {"label":"K35", "x":11.25, "y":2.5}, {"label":"K36", "x":0.5, "y":3.5}, {"label":"K37", "x":1.5, "y":3.5}, {"label":"K38", "x":2.5, "y":3.5}, {"label":"K39", "x":3.5, "y":3.5}, {"label":"K40", "x":4.5, "y":3.5, "w":2}, {"label":"K41", "x":6.5, "y":3.5}, {"label":"K42", "x":7.5, "y":3.5}, {"label":"K43", "x":8.5, "y":3.5}, {"label":"K44", "x":10.25, "y":3.5}, {"label":"K45", "x":11.25, "y":3.5}, {"label":"K43", "x":12.25, "y":3.5}] } } diff --git a/keyboards/shambles/rules.mk b/keyboards/shambles/rules.mk index e6af5d3ab811..ef61685f7c09 100644 --- a/keyboards/shambles/rules.mk +++ b/keyboards/shambles/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/shiro/config.h b/keyboards/shiro/config.h index 91633eaa4ffa..52c0f361fda4 100644 --- a/keyboards/shiro/config.h +++ b/keyboards/shiro/config.h @@ -123,59 +123,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -194,26 +141,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/shiro/info.json b/keyboards/shiro/info.json index 944cdb84c531..a4be71c6d3c8 100644 --- a/keyboards/shiro/info.json +++ b/keyboards/shiro/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Shiro", "url": "https://github.com/ShinoharaTa/keyboards/blob/master/Shiro/manual/build_guide_ja.md", "maintainer": "T.Shinohara", - "width": 3, - "height": 5, "layouts": { "LAYOUT": { - "key_count": 15, "layout": [ {"x": 0, "y": 0}, {"x": 1, "y": 0}, diff --git a/keyboards/shiro/rules.mk b/keyboards/shiro/rules.mk index b828d7c361d3..1b3f48990ee1 100644 --- a/keyboards/shiro/rules.mk +++ b/keyboards/shiro/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/shiro/shiro.c b/keyboards/shiro/shiro.c index b30329d33955..3f92c54a0b65 100644 --- a/keyboards/shiro/shiro.c +++ b/keyboards/shiro/shiro.c @@ -14,38 +14,3 @@ * along with this program. If not, see . */ #include "shiro.h" - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -/* - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - -*/ diff --git a/keyboards/shk9/info.json b/keyboards/shk9/info.json index c3122bd1ee1f..529668ce0d43 100644 --- a/keyboards/shk9/info.json +++ b/keyboards/shk9/info.json @@ -2,9 +2,6 @@ "keyboard_name": "SHK9", "url": "http://superhuman.website", "maintainer": "Sam Hudson", - "width": 3, - "height": 3, - "lighting": "none", "layouts": { "LAYOUT_ortho_3x3": { "layout": [ diff --git a/keyboards/shk9/rules.mk b/keyboards/shk9/rules.mk index 8d356cbd1a71..32f9b9b0a2e0 100644 --- a/keyboards/shk9/rules.mk +++ b/keyboards/shk9/rules.mk @@ -7,18 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = 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 - -LAYOUTS = ortho_3x3 \ No newline at end of file diff --git a/keyboards/sidderskb/majbritt/rev1/info.json b/keyboards/sidderskb/majbritt/rev1/info.json index 316e17b818d4..2677edb794a6 100644 --- a/keyboards/sidderskb/majbritt/rev1/info.json +++ b/keyboards/sidderskb/majbritt/rev1/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Majbritt", "url": "", "maintainer": "qmk", - "width": 18.75, - "height": 5.5, "layouts": { "LAYOUT": { - "key_count": 67, "layout": [ {"label":"K00 (D0,F0)", "x":0.75, "y":0.25}, {"label":"K01 (D0,F1)", "x":1.75, "y":0.25}, diff --git a/keyboards/sidderskb/majbritt/rev1/rules.mk b/keyboards/sidderskb/majbritt/rev1/rules.mk index 812c710645da..182df619f905 100644 --- a/keyboards/sidderskb/majbritt/rev1/rules.mk +++ b/keyboards/sidderskb/majbritt/rev1/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/sidderskb/majbritt/rev2/info.json b/keyboards/sidderskb/majbritt/rev2/info.json index 2863ceee4ecc..3e2aa450ad05 100644 --- a/keyboards/sidderskb/majbritt/rev2/info.json +++ b/keyboards/sidderskb/majbritt/rev2/info.json @@ -1,12 +1,81 @@ { "keyboard_name": "Majbritt Rev2", - "url": "https://sidderskb.co.uk/", "maintainer": "Sleepdealr", - "width": 17.5, - "height": 5, + "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/sidderskb/majbritt/rev2/rules.mk b/keyboards/sidderskb/majbritt/rev2/rules.mk index d98e302b3684..646bb71c0bdf 100644 --- a/keyboards/sidderskb/majbritt/rev2/rules.mk +++ b/keyboards/sidderskb/majbritt/rev2/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = yes # Encoders diff --git a/keyboards/signum/3_0/3_0.c b/keyboards/signum/3_0/3_0.c new file mode 100644 index 000000000000..2775713bf60b --- /dev/null +++ b/keyboards/signum/3_0/3_0.c @@ -0,0 +1,16 @@ +/* Copyright 2021 Stan Gurenkov + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "3_0.h" diff --git a/keyboards/signum/3_0/3_0.h b/keyboards/signum/3_0/3_0.h new file mode 100644 index 000000000000..9322b44b8b02 --- /dev/null +++ b/keyboards/signum/3_0/3_0.h @@ -0,0 +1,33 @@ +/* Copyright 2021 Stan Gurenkov + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +// clang-format off +# define LAYOUT( \ + 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 \ +) { \ + { 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 } \ +} +// clang-format on +#define LAYOUT_ortho_4x12 LAYOUT diff --git a/keyboards/signum/3_0/config.h b/keyboards/signum/3_0/config.h new file mode 100644 index 000000000000..d0c3175d0f59 --- /dev/null +++ b/keyboards/signum/3_0/config.h @@ -0,0 +1,32 @@ +/* Copyright 2021 Stan Gurenkov + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6060 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Troy Fletcher +#define PRODUCT Signum30 + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW diff --git a/keyboards/signum/3_0/elitec/config.h b/keyboards/signum/3_0/elitec/config.h index f86e6748a46c..fdbfac3c93bf 100644 --- a/keyboards/signum/3_0/elitec/config.h +++ b/keyboards/signum/3_0/elitec/config.h @@ -2,29 +2,7 @@ #include "config_common.h" -/* USB Device descriptor parameter */ -#define VENDOR_ID 0xF1E7 -#define PRODUCT_ID 0x5163 -#define DEVICE_VER 0x0000 -#define MANUFACTURER troyfletcher -#define PRODUCT Signum - -/* mouse settings */ -#define MK_KINETIC_SPEED - -/* key matrix size */ -#define MATRIX_ROWS 4 -#define MATRIX_COLS 12 - /* key matrix pins */ #define MATRIX_ROW_PINS { D2, D1, F5, B5 } #define MATRIX_COL_PINS { B4, D7, D0, E6, D4, F6, F4, F7, B1, B3, C6, B2 } #define UNUSED_PINS - -#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 diff --git a/keyboards/signum/3_0/elitec/elitec.h b/keyboards/signum/3_0/elitec/elitec.h index d28d3d476975..dfb7e0116426 100644 --- a/keyboards/signum/3_0/elitec/elitec.h +++ b/keyboards/signum/3_0/elitec/elitec.h @@ -1,15 +1,3 @@ #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 \ -) { \ - { 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 } \ -} +#include "3_0.h" diff --git a/keyboards/signum/3_0/elitec/info.json b/keyboards/signum/3_0/elitec/info.json deleted file mode 100644 index 53b88d553476..000000000000 --- a/keyboards/signum/3_0/elitec/info.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "keyboard_name": "Signum 3.0", - "url": "http://troyfletcher.net/", - "maintainer": "jceb", - "width": 15, - "height": 6, - "layouts": { - "LAYOUT_ortho_4x12": { - "key_count": 48, - "layout": [ - - { "x": 0, "y": 0.5, "r": 15 }, - { "x": 1, "y": 0.5, "r": 15 }, - { "x": 2, "y": 0.25, "r": 15 }, - { "x": 3, "y": 0, "r": 15 }, - { "x": 4, "y": 0.25, "r": 15 }, - { "x": 5, "y": 0.5, "r": 15 }, - { "x": 9, "y": 0.5, "r": -15 }, - { "x": 10, "y": 0.25, "r": -15 }, - { "x": 11, "y": 0, "r": -15 }, - { "x": 12, "y": 0.25, "r": -15 }, - { "x": 13, "y": 0.5, "r": -15 }, - { "x": 14, "y": 0.5, "r": -15 }, - - { "x": 0, "y": 1.5, "r": 15 }, - { "x": 1, "y": 1.5, "r": 15 }, - { "x": 2, "y": 1.25, "r": 15 }, - { "x": 3, "y": 1, "r": 15 }, - { "x": 4, "y": 1.25, "r": 15 }, - { "x": 5, "y": 1.5, "r": 15 }, - { "x": 9, "y": 1.5, "r": -15 }, - { "x": 10, "y": 1.25, "r": -15 }, - { "x": 11, "y": 1, "r": -15 }, - { "x": 12, "y": 1.25, "r": -15 }, - { "x": 13, "y": 1.5, "r": -15 }, - { "x": 14, "y": 1.5, "r": -15 }, - - { "x": 0, "y": 2.5, "r": 15 }, - { "x": 1, "y": 2.5, "r": 15 }, - { "x": 2, "y": 2.25, "r": 15 }, - { "x": 3, "y": 2, "r": 15 }, - { "x": 4, "y": 2.25, "r": 15 }, - { "x": 5, "y": 2.5, "r": 15 }, - { "x": 9, "y": 2.5, "r": -15 }, - { "x": 10, "y": 2.25, "r": -15 }, - { "x": 11, "y": 2, "r": -15 }, - { "x": 12, "y": 2.25, "r": -15 }, - { "x": 13, "y": 2.5, "r": -15 }, - { "x": 14, "y": 2.5, "r": -15 }, - - { "x": 0, "y": 4, "r": 15 }, - { "x": 1, "y": 3.5, "r": 15 }, - { "x": 2, "y": 3.25, "r": 15 }, - { "x": 4, "y": 4.25, "r": 15, "h": 1.5 }, - { "x": 5, "y": 4, "r": 15, "h": 2 }, - { "x": 6, "y": 4.25, "r": 15, "h": 1.5 }, - { "x": 8, "y": 4.25, "r": -15, "h": 1.5 }, - { "x": 9, "y": 4, "r": -15, "h": 2 }, - { "x": 10, "y": 4.25, "r": -15, "h": 1.5 }, - { "x": 12, "y": 3.25, "r": -15 }, - { "x": 13, "y": 3.5, "r": -15 }, - { "x": 14, "y": 4, "r": -15 } - - ] - } - } -} diff --git a/keyboards/signum/3_0/elitec/readme.md b/keyboards/signum/3_0/elitec/readme.md deleted file mode 100644 index f60023f6d575..000000000000 --- a/keyboards/signum/3_0/elitec/readme.md +++ /dev/null @@ -1,14 +0,0 @@ -# Signum 3.0 - -![Signum 3.0 Top](https://i.redd.it/vl54yl36bpz11.jpg) - -An ergonomic 40% PCB. - -Keyboard Maintainer: [Troy Fletcher](http://troyfletcher.net/) -Hardware available here: [Troy Fletcher](http://troyfletcher.net/keyboard_sales.html) - -Make example for this keyboard (after setting up your build environment): - - make signum/3_0/elitec: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/signum/3_0/elitec/rules.mk b/keyboards/signum/3_0/elitec/rules.mk index 6d7266c1a2ec..e69de29bb2d1 100644 --- a/keyboards/signum/3_0/elitec/rules.mk +++ b/keyboards/signum/3_0/elitec/rules.mk @@ -1,35 +0,0 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = atmel-dfu - -# Build Options -# comment out to disable the options. -# -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -AUDIO_ENABLE = no -RGBLIGHT_ENABLE = no - -UNICODEMAP_ENABLE = no - -LAYOUTS = ortho_4x12 - -# Disable unsupported hardware -RGBLIGHT_SUPPORTED = no -AUDIO_SUPPORTED = no -BACKLIGHT_SUPPORTED = no diff --git a/keyboards/signum/3_0/info.json b/keyboards/signum/3_0/info.json new file mode 100644 index 000000000000..a3f14c480f33 --- /dev/null +++ b/keyboards/signum/3_0/info.json @@ -0,0 +1,64 @@ +{ + "keyboard_name": "Signum 3.0", + "url": "http://troyfletcher.net/", + "maintainer": "jceb", + "layouts": { + "LAYOUT_ortho_4x12": { + "layout": [ + + { "x": 0, "y": 0.5, "r": 15 }, + { "x": 1, "y": 0.5, "r": 15 }, + { "x": 2, "y": 0.25, "r": 15 }, + { "x": 3, "y": 0, "r": 15 }, + { "x": 4, "y": 0.25, "r": 15 }, + { "x": 5, "y": 0.5, "r": 15 }, + { "x": 9, "y": 0.5, "r": -15 }, + { "x": 10, "y": 0.25, "r": -15 }, + { "x": 11, "y": 0, "r": -15 }, + { "x": 12, "y": 0.25, "r": -15 }, + { "x": 13, "y": 0.5, "r": -15 }, + { "x": 14, "y": 0.5, "r": -15 }, + + { "x": 0, "y": 1.5, "r": 15 }, + { "x": 1, "y": 1.5, "r": 15 }, + { "x": 2, "y": 1.25, "r": 15 }, + { "x": 3, "y": 1, "r": 15 }, + { "x": 4, "y": 1.25, "r": 15 }, + { "x": 5, "y": 1.5, "r": 15 }, + { "x": 9, "y": 1.5, "r": -15 }, + { "x": 10, "y": 1.25, "r": -15 }, + { "x": 11, "y": 1, "r": -15 }, + { "x": 12, "y": 1.25, "r": -15 }, + { "x": 13, "y": 1.5, "r": -15 }, + { "x": 14, "y": 1.5, "r": -15 }, + + { "x": 0, "y": 2.5, "r": 15 }, + { "x": 1, "y": 2.5, "r": 15 }, + { "x": 2, "y": 2.25, "r": 15 }, + { "x": 3, "y": 2, "r": 15 }, + { "x": 4, "y": 2.25, "r": 15 }, + { "x": 5, "y": 2.5, "r": 15 }, + { "x": 9, "y": 2.5, "r": -15 }, + { "x": 10, "y": 2.25, "r": -15 }, + { "x": 11, "y": 2, "r": -15 }, + { "x": 12, "y": 2.25, "r": -15 }, + { "x": 13, "y": 2.5, "r": -15 }, + { "x": 14, "y": 2.5, "r": -15 }, + + { "x": 0, "y": 4, "r": 15 }, + { "x": 1, "y": 3.5, "r": 15 }, + { "x": 2, "y": 3.25, "r": 15 }, + { "x": 4, "y": 4.25, "r": 15, "h": 1.5 }, + { "x": 5, "y": 4, "r": 15, "h": 2 }, + { "x": 6, "y": 4.25, "r": 15, "h": 1.5 }, + { "x": 8, "y": 4.25, "r": -15, "h": 1.5 }, + { "x": 9, "y": 4, "r": -15, "h": 2 }, + { "x": 10, "y": 4.25, "r": -15, "h": 1.5 }, + { "x": 12, "y": 3.25, "r": -15 }, + { "x": 13, "y": 3.5, "r": -15 }, + { "x": 14, "y": 4, "r": -15 } + + ] + } + } +} diff --git a/keyboards/signum/3_0/elitec/keymaps/default/generate_km.py b/keyboards/signum/3_0/keymaps/default/generate_km.py similarity index 100% rename from keyboards/signum/3_0/elitec/keymaps/default/generate_km.py rename to keyboards/signum/3_0/keymaps/default/generate_km.py diff --git a/keyboards/signum/3_0/elitec/keymaps/default/keymap.c b/keyboards/signum/3_0/keymaps/default/keymap.c similarity index 100% rename from keyboards/signum/3_0/elitec/keymaps/default/keymap.c rename to keyboards/signum/3_0/keymaps/default/keymap.c diff --git a/keyboards/signum/3_0/elitec/keymaps/default/km_template.txt b/keyboards/signum/3_0/keymaps/default/km_template.txt similarity index 100% rename from keyboards/signum/3_0/elitec/keymaps/default/km_template.txt rename to keyboards/signum/3_0/keymaps/default/km_template.txt diff --git a/keyboards/signum/3_0/elitec/keymaps/default/layout.py b/keyboards/signum/3_0/keymaps/default/layout.py similarity index 100% rename from keyboards/signum/3_0/elitec/keymaps/default/layout.py rename to keyboards/signum/3_0/keymaps/default/layout.py diff --git a/keyboards/signum/3_0/elitec/keymaps/default/readme.md b/keyboards/signum/3_0/keymaps/default/readme.md similarity index 100% rename from keyboards/signum/3_0/elitec/keymaps/default/readme.md rename to keyboards/signum/3_0/keymaps/default/readme.md diff --git a/keyboards/signum/3_0/elitec/keymaps/default/rules.mk b/keyboards/signum/3_0/keymaps/default/rules.mk similarity index 100% rename from keyboards/signum/3_0/elitec/keymaps/default/rules.mk rename to keyboards/signum/3_0/keymaps/default/rules.mk diff --git a/keyboards/signum/3_0/keymaps/sgurenkov/config.h b/keyboards/signum/3_0/keymaps/sgurenkov/config.h new file mode 100644 index 000000000000..5f8d0d02b888 --- /dev/null +++ b/keyboards/signum/3_0/keymaps/sgurenkov/config.h @@ -0,0 +1,45 @@ +/* Copyright 2021 Stan Gurenkov + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#define ONESHOT_TAP_TOGGLE 2 +#define ONESHOT_TIMEOUT 5000 +#define LEADER_TIMEOUT 600 +#define LEADER_PER_KEY_TIMING 300 + +// default but used in macros +#define TAPPING_TERM 300 + +// Prevent normal rollover on alphas from accidentally triggering mods. +#define IGNORE_MOD_TAP_INTERRUPT + +// Auto Shift and Retro Shift (Auto Shift for Tap Hold). +#define AUTO_SHIFT_TIMEOUT TAPPING_TERM + +// Recommended for heavy chording. +#define QMK_KEYS_PER_SCAN 4 + +// Mouse key speed and acceleration. +#undef MOUSEKEY_DELAY +#define MOUSEKEY_DELAY 0 +#undef MOUSEKEY_INTERVAL +#define MOUSEKEY_INTERVAL 16 +#undef MOUSEKEY_WHEEL_DELAY +#define MOUSEKEY_WHEEL_DELAY 0 +#undef MOUSEKEY_MAX_SPEED +#define MOUSEKEY_MAX_SPEED 6 +#undef MOUSEKEY_TIME_TO_MAX +#define MOUSEKEY_TIME_TO_MAX 64 diff --git a/keyboards/signum/3_0/keymaps/sgurenkov/keymap.c b/keyboards/signum/3_0/keymaps/sgurenkov/keymap.c new file mode 100644 index 000000000000..f6cdcfd247fc --- /dev/null +++ b/keyboards/signum/3_0/keymaps/sgurenkov/keymap.c @@ -0,0 +1,128 @@ +/* Copyright 2021 Stan Gurenkov + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +#define M0(kc) MT(MOD_HYPR, kc) +#define M1(kc) MT(MOD_LGUI, kc) +#define M2(kc) MT(MOD_LCTL, kc) +#define M3(kc) MT(MOD_LALT, kc) +#define M4(kc) MT(MOD_LSFT, kc) +#define LTH1 LT(L_LEFT, KC_SPC) +#define LTH2 LT(L_NUM, KC_BSPC) +#define RTH1 LT(L_RIGHT, KC_SPC) +#define RTH2 LT(L_NUM, KC_ENT) +#define COPY LCMD(KC_C) +#define PASTE LCMD(KC_V) +// Layers +#define L_BASE 0 +#define L_LEFT 1 +#define L_RIGHT 2 +#define L_NUM 3 + +bool is_cmd_tab_active = false; + +enum custom_keycodes { + CMD_TAB = SAFE_RANGE, +}; +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +// L_BASE + LAYOUT( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, + KC_TAB, M4(KC_A), M3(KC_S), M2(KC_D), M1(KC_F), M0(KC_G), M0(KC_H), M1(KC_J), M2(KC_K), M3(KC_L), M4(KC_COLN), KC_QUOT, + KC_GRV, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS, + OSM(MOD_LSFT), KC_LEAD, KC_LGUI, LTH1, XXXXXXX, LTH2, RTH2, XXXXXXX, RTH1, KC_RGUI, KC_LEAD, OSM(MOD_HYPR)), + +// L_LEFT + LAYOUT( + _______, XXXXXXX, XXXXXXX, KC_EQL, KC_PERC, KC_AT, COPY, KC_UNDS, KC_HASH, RALT(KC_SPC), KC_PLUS, _______, + _______, KC_LSHIFT, KC_LALT, KC_LCTL, KC_LGUI, KC_HYPR, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_LBRC, KC_RBRC, + _______, XXXXXXX, KC_EXLM, KC_CIRC, XXXXXXX, KC_HOME, KC_END, KC_MINS, KC_LPRN, KC_RPRN, PASTE, XXXXXXX, + _______, KC_BRID, KC_BRIU, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, _______), + +// L_RIGHT + LAYOUT( + _______, XXXXXXX, XXXXXXX, KC_EQL, KC_PERC, KC_AT, COPY, KC_UNDS, KC_HASH, RALT(KC_SPC), KC_PLUS, _______, + _______, KC_AMPR, KC_ASTR, KC_DLR, LGUI(KC_GRV), XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_RSFT, KC_RBRC, + _______, XXXXXXX, KC_EXLM, KC_CIRC, XXXXXXX, KC_HOME, KC_END, KC_MINS, KC_LPRN, KC_RPRN, PASTE, XXXXXXX, + _______, KC_BRID, KC_BRIU, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, _______), + +// L_NUM + LAYOUT( + _______, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F12, KC_MINS, KC_7, KC_8, KC_9, KC_COMM, _______, + _______, M4(KC_LSFT), M3(KC_F4), M2(KC_F5), M1(KC_F6), M0(KC_F11), M0(KC_DOT), M1(KC_4), M2(KC_5), M3(KC_6), M4(KC_0), _______, + _______, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F10, KC_PLUS, KC_1, KC_2, KC_3, KC_DOT, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MEDIA_PREV_TRACK , KC_MEDIA_NEXT_TRACK, KC_MEDIA_PLAY_PAUSE), + + LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), +}; +// clang-format on +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case CMD_TAB: + if (record->event.pressed) { + register_code(KC_LCMD); + tap_code(KC_TAB); + layer_on(2); + } else { + unregister_code(KC_LCMD); + layer_off(2); + } + break; + case KC_ESC: + layer_clear(); + } + return true; +} + +LEADER_EXTERNS(); + +void matrix_scan_user(void) { + LEADER_DICTIONARY() { + leading = false; + leader_end(); + + // Cancel task CTRL+C + SEQ_ONE_KEY(KC_C) { tap_code16(C(KC_C)); } + // copy + SEQ_ONE_KEY(KC_Y) { tap_code16(G(KC_C)); } + // cut + SEQ_ONE_KEY(KC_X) { tap_code16(G(KC_X)); } + // paste + SEQ_ONE_KEY(KC_P) { tap_code16(G(KC_V)); } + // undo + SEQ_ONE_KEY(KC_U) { tap_code16(G(KC_Z)); } + // redo + SEQ_ONE_KEY(KC_R) { tap_code16(S(G(KC_Z))); } + // delete line + SEQ_TWO_KEYS(KC_D, KC_D) { + register_code(KC_LGUI); + + tap_code(KC_RIGHT); + + tap_code(KC_BSPACE); + + unregister_code(KC_LGUI); + } + // go to the beginning of the string + SEQ_ONE_KEY(KC_H) { tap_code16(G(KC_LEFT)); } + // go to the end of the string + SEQ_ONE_KEY(KC_L) { tap_code16(G(KC_RIGHT)); } + } diff --git a/keyboards/signum/3_0/keymaps/sgurenkov/rules.mk b/keyboards/signum/3_0/keymaps/sgurenkov/rules.mk new file mode 100644 index 000000000000..5c9a4b49b710 --- /dev/null +++ b/keyboards/signum/3_0/keymaps/sgurenkov/rules.mk @@ -0,0 +1,2 @@ +LEADER_ENABLE = yes +AUTO_SHIFT_ENABLE = no diff --git a/keyboards/signum/3_0/readme.md b/keyboards/signum/3_0/readme.md new file mode 100644 index 000000000000..3e937f771f7b --- /dev/null +++ b/keyboards/signum/3_0/readme.md @@ -0,0 +1,15 @@ +# Signum 3.0 + +![Signum 3.0 Top](https://i.redd.it/vl54yl36bpz11.jpg) + +An ergonomic 40% PCB. + +Keyboard Maintainer: [Troy Fletcher](http://troyfletcher.net/) +Hardware available here: [Troy Fletcher](http://troyfletcher.net/keyboard_sales.html) + +Make example for this keyboard (after setting up your build environment): + + make signum/3_0/elitec:default + make signum/3_0/teensy: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/signum/3_0/rules.mk b/keyboards/signum/3_0/rules.mk new file mode 100644 index 000000000000..85254daee4b5 --- /dev/null +++ b/keyboards/signum/3_0/rules.mk @@ -0,0 +1,26 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 + +LAYOUTS = ortho_4x12 + +# Disable unsupported hardware +RGBLIGHT_SUPPORTED = no +AUDIO_SUPPORTED = no +BACKLIGHT_SUPPORTED = no diff --git a/keyboards/signum/3_0/teensy/config.h b/keyboards/signum/3_0/teensy/config.h new file mode 100644 index 000000000000..343131fce0ac --- /dev/null +++ b/keyboards/signum/3_0/teensy/config.h @@ -0,0 +1,23 @@ +/* Copyright 2021 Stan Gurenkov + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +/* key matrix pins */ +// clang-format off +#define MATRIX_ROW_PINS { B0, B3, F6, C7 } +#define MATRIX_COL_PINS { C6, D2, B7, D3, D0, F7, F5, B6, B5, B4, D1, D7 } +#define UNUSED_PINS +// clang-format on diff --git a/keyboards/signum/3_0/teensy/rules.mk b/keyboards/signum/3_0/teensy/rules.mk new file mode 100644 index 000000000000..8b137891791f --- /dev/null +++ b/keyboards/signum/3_0/teensy/rules.mk @@ -0,0 +1 @@ + diff --git a/keyboards/signum/3_0/teensy/teensy.c b/keyboards/signum/3_0/teensy/teensy.c new file mode 100644 index 000000000000..42e993a6be2f --- /dev/null +++ b/keyboards/signum/3_0/teensy/teensy.c @@ -0,0 +1,16 @@ +/* Copyright 2021 Stan Gurenkov + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "teensy.h" diff --git a/keyboards/signum/3_0/teensy/teensy.h b/keyboards/signum/3_0/teensy/teensy.h new file mode 100644 index 000000000000..073accaa61d3 --- /dev/null +++ b/keyboards/signum/3_0/teensy/teensy.h @@ -0,0 +1,18 @@ +/* Copyright 2021 Stan Gurenkov + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "3_0.h" diff --git a/keyboards/silverbullet44/config.h b/keyboards/silverbullet44/config.h index cd78ef34185d..5b4ae5a11087 100644 --- a/keyboards/silverbullet44/config.h +++ b/keyboards/silverbullet44/config.h @@ -164,59 +164,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -237,26 +184,6 @@ along with this program. If not, see . #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/silverbullet44/info.json b/keyboards/silverbullet44/info.json index 65c54e538fc4..40e7fb832f6e 100644 --- a/keyboards/silverbullet44/info.json +++ b/keyboards/silverbullet44/info.json @@ -2,8 +2,6 @@ "keyboard_name": "SilverBullet44", "url": "https://swanmatch.booth.pm/items/1561270", "maintainer": "swanmatch", - "width": 18, - "height": 4.5, "layouts": { "LAYOUT": { "layout": [ @@ -61,4 +59,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/silverbullet44/rules.mk b/keyboards/silverbullet44/rules.mk index cdcbc76fa6cc..259ddc6ff591 100644 --- a/keyboards/silverbullet44/rules.mk +++ b/keyboards/silverbullet44/rules.mk @@ -2,34 +2,22 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow RGB_MATRIX_ENABLE = no RGB_MATRIX_DRIVER = WS2812 -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = yes # Audio output on port B6 +AUDIO_ENABLE = yes # Audio output SPLIT_KEYBOARD = yes LTO_ENABLE = yes diff --git a/keyboards/singa/info.json b/keyboards/singa/info.json index 9ef498b294b4..d65bf0c07b51 100644 --- a/keyboards/singa/info.json +++ b/keyboards/singa/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Singa", "url": "http://singakbd.com/", "maintainer": "qmk", - "width": 16, - "height": 6, "layouts": { "LAYOUT": { "layout": [{"label":"K05", "x":0, "y":0}, {"label":"K25", "x":1, "y":0}, {"label":"K35", "x":2, "y":0}, {"label":"K45", "x":3, "y":0}, {"label":"K55", "x":4, "y":0}, {"label":"K06", "x":5, "y":0}, {"label":"KA6", "x":6, "y":0}, {"label":"KA7", "x":7, "y":0}, {"label":"K07", "x":8, "y":0}, {"label":"KB5", "x":9, "y":0}, {"label":"KC5", "x":10, "y":0}, {"label":"KD5", "x":11, "y":0}, {"label":"KE5", "x":12, "y":0}, {"label":"KD1", "x":13, "y":0}, {"label":"KE1", "x":14, "y":0}, {"label":"KE2", "x":15, "y":0}, {"label":"K04", "x":0, "y":1}, {"label":"K14", "x":1, "y":1}, {"label":"K24", "x":2, "y":1}, {"label":"K34", "x":3, "y":1}, {"label":"K44", "x":4, "y":1}, {"label":"K54", "x":5, "y":1}, {"label":"K16", "x":6, "y":1}, {"label":"KB6", "x":7, "y":1}, {"label":"KB7", "x":8, "y":1}, {"label":"K17", "x":9, "y":1}, {"label":"KA4", "x":10, "y":1}, {"label":"KB4", "x":11, "y":1}, {"label":"KC4", "x":12, "y":1}, {"label":"KE4", "x":13, "y":1}, {"label":"KE4", "x":14, "y":1}, {"label":"KD0", "x":15, "y":1}, {"label":"K03", "x":0, "y":2, "w":1.5}, {"label":"K13", "x":1.5, "y":2}, {"label":"K23", "x":2.5, "y":2}, {"label":"K33", "x":3.5, "y":2}, {"label":"K43", "x":4.5, "y":2}, {"label":"K53", "x":5.5, "y":2}, {"label":"K26", "x":6.5, "y":2}, {"label":"KC6", "x":7.5, "y":2}, {"label":"KC7", "x":8.5, "y":2}, {"label":"K27", "x":9.5, "y":2}, {"label":"KA3", "x":10.5, "y":2}, {"label":"KB3", "x":11.5, "y":2}, {"label":"KC3", "x":12.5, "y":2}, {"label":"KD3", "x":13.5, "y":2, "w":1.5}, {"label":"K67", "x":15, "y":2}, {"label":"K02", "x":0, "y":3, "w":1.75}, {"label":"K12", "x":1.75, "y":3}, {"label":"K22", "x":2.75, "y":3}, {"label":"K32", "x":3.75, "y":3}, {"label":"K42", "x":4.75, "y":3}, {"label":"K52", "x":5.75, "y":3}, {"label":"K36", "x":6.75, "y":3}, {"label":"KD6", "x":7.75, "y":3}, {"label":"KD7", "x":8.75, "y":3}, {"label":"K37", "x":9.75, "y":3}, {"label":"KA2", "x":10.75, "y":3}, {"label":"KB2", "x":11.75, "y":3}, {"label":"KD2", "x":12.75, "y":3}, {"label":"KD2", "x":13.75, "y":3, "w":1.25}, {"label":"KE0", "x":15, "y":3}, {"label":"K01", "x":0, "y":4, "w":1.25}, {"label":"K01", "x":1.25, "y":4}, {"label":"K11", "x":2.25, "y":4}, {"label":"K21", "x":3.25, "y":4}, {"label":"K31", "x":4.25, "y":4}, {"label":"K41", "x":5.25, "y":4}, {"label":"K51", "x":6.25, "y":4}, {"label":"K46", "x":7.25, "y":4}, {"label":"KE6", "x":8.25, "y":4}, {"label":"KE7", "x":9.25, "y":4}, {"label":"K47", "x":10.25, "y":4}, {"label":"KA1", "x":11.25, "y":4}, {"label":"KB1", "x":12.25, "y":4, "w":1.75}, {"label":"K86", "x":14, "y":4}, {"label":"K77", "x":15, "y":4}, {"label":"K00", "x":0, "y":5, "w":1.25}, {"label":"K00", "x":1.25, "y":5, "w":1.25}, {"label":"K20", "x":2.5, "y":5, "w":1.25}, {"label":"K56", "x":3.75, "y":5, "w":1}, {"label":"K56", "x":4.75, "y":5, "w":1.25}, {"label":"K20", "x":6, "y":5, "w":1.75}, {"label":"K56", "x":7.75, "y":5, "w":1.25}, {"label":"K56", "x":9, "y":5, "w":1}, {"label":"K57", "x":10, "y":5}, {"label":"K57", "x":11, "y":5}, {"label":"K57", "x":12, "y":5}, {"label":"K66", "x":13, "y":5}, {"label":"K76", "x":14, "y":5}, {"label":"K96", "x":15, "y":5}] diff --git a/keyboards/singa/keymaps/test/config.h b/keyboards/singa/keymaps/test/config.h deleted file mode 100644 index e176ed34798c..000000000000 --- a/keyboards/singa/keymaps/test/config.h +++ /dev/null @@ -1,24 +0,0 @@ -/* Copyright 2018 amnesia0287 - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#ifndef CONFIG_USER_H -#define CONFIG_USER_H - -#include "config_common.h" - -// place overrides here - -#endif diff --git a/keyboards/singa/rules.mk b/keyboards/singa/rules.mk index 3d51be11332d..3bff3ee31b28 100644 --- a/keyboards/singa/rules.mk +++ b/keyboards/singa/rules.mk @@ -2,17 +2,10 @@ MCU = atmega32a # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid # build options -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes EXTRAKEY_ENABLE = yes CONSOLE_ENABLE = no diff --git a/keyboards/sirius/uni660/rev1/info.json b/keyboards/sirius/uni660/rev1/info.json index a3be1976c726..f3a9b244e806 100644 --- a/keyboards/sirius/uni660/rev1/info.json +++ b/keyboards/sirius/uni660/rev1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Uni660", "url": "", "maintainer": "qmk", - "width": 19, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/sirius/uni660/rev1/rules.mk b/keyboards/sirius/uni660/rev1/rules.mk index af1189024e53..f3758a132db9 100644 --- a/keyboards/sirius/uni660/rev1/rules.mk +++ b/keyboards/sirius/uni660/rev1/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = 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 UNICODE_ENABLE = yes # Unicode CUSTOM_MATRIX = yes diff --git a/keyboards/sirius/uni660/rev2/ansi/info.json b/keyboards/sirius/uni660/rev2/ansi/info.json index 24050961cd0c..630038cdd098 100644 --- a/keyboards/sirius/uni660/rev2/ansi/info.json +++ b/keyboards/sirius/uni660/rev2/ansi/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Uni660", "url": "", "maintainer": "qmk", - "width": 19, - "height": 5, "layouts": { "LAYOUT_ansi": { "layout": [ diff --git a/keyboards/sirius/uni660/rev2/iso/info.json b/keyboards/sirius/uni660/rev2/iso/info.json index 2fe2154754fd..e2d72bfb51c9 100644 --- a/keyboards/sirius/uni660/rev2/iso/info.json +++ b/keyboards/sirius/uni660/rev2/iso/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Uni660", "url": "", "maintainer": "qmk", - "width": 19, - "height": 5, "layouts": { "LAYOUT_iso": { "layout": [ diff --git a/keyboards/sirius/uni660/rev2/rules.mk b/keyboards/sirius/uni660/rev2/rules.mk index 1f897b21f791..c2e93a7f7b7f 100644 --- a/keyboards/sirius/uni660/rev2/rules.mk +++ b/keyboards/sirius/uni660/rev2/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = 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 UNICODE_ENABLE = yes # Unicode CUSTOM_MATRIX = yes diff --git a/keyboards/sirius/unigo66/info.json b/keyboards/sirius/unigo66/info.json index 7482ef5b8113..d1acdeeb0795 100644 --- a/keyboards/sirius/unigo66/info.json +++ b/keyboards/sirius/unigo66/info.json @@ -2,8 +2,6 @@ "keyboard_name": "UniGo66", "url": "https://discord.gg/GJ8bdM", "maintainer": "qmk", - "width": 17, - "height": 7, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/sirius/unigo66/rules.mk b/keyboards/sirius/unigo66/rules.mk index 7aa7afd1b806..3f72b3e52342 100644 --- a/keyboards/sirius/unigo66/rules.mk +++ b/keyboards/sirius/unigo66/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 USB_HID_ENABLE = yes diff --git a/keyboards/sixkeyboard/config.h b/keyboards/sixkeyboard/config.h index b8fcb8d7d1ed..d6505e70c7ae 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -48,45 +47,6 @@ along with this program. If not, see . /* Force NKRO Mode - If forced on, must be disabled via magic key (default = LShift+RShift+N) */ #define FORCE_NKRO -/* - * Magic key options - * These options allow the magic key functionality to be changed. This is useful - * if your keyboard/keypad is missing keys and you want magic key support. - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* remap magic keys */ -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK BSLS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -104,5 +64,3 @@ along with this program. If not, see . #define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -#endif diff --git a/keyboards/sixkeyboard/info.json b/keyboards/sixkeyboard/info.json index 55239fc6cccf..9f8ffa48793d 100644 --- a/keyboards/sixkeyboard/info.json +++ b/keyboards/sixkeyboard/info.json @@ -2,10 +2,8 @@ "keyboard_name": "Techkeys SixKeyBoard", "url": "", "maintainer": "qmk", - "width": 3, - "height": 2, "layouts": { - "LAYOUT": { + "LAYOUT_ortho_2x3": { "layout": [{"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, {"label":"k02", "x":2, "y":0}, {"label":"k10", "x":0, "y":1}, {"label":"k11", "x":1, "y":1}, {"label":"k12", "x":2, "y":1}] } } diff --git a/keyboards/sixkeyboard/keymaps/default/keymap.c b/keyboards/sixkeyboard/keymaps/default/keymap.c index 3b39892a9319..0c9b519353cf 100644 --- a/keyboards/sixkeyboard/keymaps/default/keymap.c +++ b/keyboards/sixkeyboard/keymaps/default/keymap.c @@ -3,7 +3,7 @@ #include "matrix.h" const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( + [0] = LAYOUT_ortho_2x3( KC_A, KC_B, KC_C, \ KC_D, KC_E, KC_F \ ) diff --git a/keyboards/sixkeyboard/keymaps/via/keymap.c b/keyboards/sixkeyboard/keymaps/via/keymap.c index fed341595c39..39282b9b5a50 100644 --- a/keyboards/sixkeyboard/keymaps/via/keymap.c +++ b/keyboards/sixkeyboard/keymaps/via/keymap.c @@ -17,22 +17,22 @@ #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( + [0] = LAYOUT_ortho_2x3( KC_A, KC_B, KC_C, KC_D, KC_E, KC_F ), - [1] = LAYOUT( + [1] = LAYOUT_ortho_2x3( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), - [2] = LAYOUT( + [2] = LAYOUT_ortho_2x3( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), - [3] = LAYOUT( + [3] = LAYOUT_ortho_2x3( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ) diff --git a/keyboards/sixkeyboard/rules.mk b/keyboards/sixkeyboard/rules.mk index 889ea2fd10ee..3011eda73dae 100644 --- a/keyboards/sixkeyboard/rules.mk +++ b/keyboards/sixkeyboard/rules.mk @@ -2,30 +2,20 @@ MCU = atmega16u2 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = no # 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 -MIDI_ENABLE = no # MIDI controls AUDIO_ENABLE = no -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID CUSTOM_MATRIX = yes -SRC = matrix.c +SRC += matrix.c +LAYOUTS = ortho_2x3 diff --git a/keyboards/sixkeyboard/sixkeyboard.h b/keyboards/sixkeyboard/sixkeyboard.h index e0eb896ce4dc..3f563af6d100 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 │ @@ -22,13 +9,10 @@ * │ D │ E │ F │ * └───┴───┴───┘ */ -#define LAYOUT( \ +#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/skeletn87/hotswap/config.h b/keyboards/skeletn87/hotswap/config.h index fbca48cbb584..059daa0392e0 100644 --- a/keyboards/skeletn87/hotswap/config.h +++ b/keyboards/skeletn87/hotswap/config.h @@ -39,6 +39,7 @@ along with this program. If not, see . #define DIODE_DIRECTION COL2ROW #define LED_CAPS_LOCK_PIN E6 +#define LED_PIN_ON_STATE 0 #define BACKLIGHT_PIN B7 #define BACKLIGHT_LEVELS 8 diff --git a/keyboards/skeletn87/hotswap/info.json b/keyboards/skeletn87/hotswap/info.json index 21f849b7ca27..9878d6d194a2 100644 --- a/keyboards/skeletn87/hotswap/info.json +++ b/keyboards/skeletn87/hotswap/info.json @@ -2,8 +2,6 @@ "keyboard_name": "skeletn87 hotswap", "url": "", "maintainer": "kb-elmo", - "width": 18.25, - "height": 6.25, "layouts": { "LAYOUT_tkl_ansi": { "layout": [ @@ -97,4 +95,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/skeletn87/hotswap/rules.mk b/keyboards/skeletn87/hotswap/rules.mk index 62a261230216..11f6ec6cb4b0 100644 --- a/keyboards/skeletn87/hotswap/rules.mk +++ b/keyboards/skeletn87/hotswap/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LAYOUTS = tkl_ansi \ No newline at end of file diff --git a/keyboards/skeletn87/soldered/config.h b/keyboards/skeletn87/soldered/config.h index a902bc616cb5..7580d0a43e3a 100644 --- a/keyboards/skeletn87/soldered/config.h +++ b/keyboards/skeletn87/soldered/config.h @@ -39,12 +39,13 @@ along with this program. If not, see . #define DIODE_DIRECTION COL2ROW #define LED_CAPS_LOCK_PIN E6 +#define LED_PIN_ON_STATE 0 #define BACKLIGHT_PIN B7 #define BACKLIGHT_LEVELS 8 #define BACKLIGHT_BREATHING -#define RGB_DI_PIN B3 +#define RGB_DI_PIN B2 #ifdef RGB_DI_PIN #define RGBLIGHT_ANIMATIONS #define RGBLED_NUM 10 diff --git a/keyboards/skeletn87/soldered/info.json b/keyboards/skeletn87/soldered/info.json index 929c57d85a8e..e3d8c6d99950 100644 --- a/keyboards/skeletn87/soldered/info.json +++ b/keyboards/skeletn87/soldered/info.json @@ -2,8 +2,6 @@ "keyboard_name": "skeletn87", "url": "", "maintainer": "kb-elmo", - "width": 18.25, - "height": 6.25, "layouts": { "LAYOUT_all": { "layout": [ @@ -372,4 +370,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/skeletn87/soldered/rules.mk b/keyboards/skeletn87/soldered/rules.mk index df779ca81e58..3b4490e289e4 100644 --- a/keyboards/skeletn87/soldered/rules.mk +++ b/keyboards/skeletn87/soldered/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LAYOUTS = tkl_ansi tkl_iso \ No newline at end of file diff --git a/keyboards/skergo/info.json b/keyboards/skergo/info.json index 0a2bb1efd099..8f7d481bea82 100644 --- a/keyboards/skergo/info.json +++ b/keyboards/skergo/info.json @@ -2,8 +2,6 @@ "keyboard_name": "SKErgo", "url": "https://keyz.io", "maintainer": "Keyz.io", - "width": 19.25, - "height": 6, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/skergo/rules.mk b/keyboards/skergo/rules.mk index 3076166479fc..0ed896250405 100644 --- a/keyboards/skergo/rules.mk +++ b/keyboards/skergo/rules.mk @@ -5,21 +5,18 @@ MCU = atmega32a F_CPU = 16000000 # Bootloader selection -BOOTLOADER = USBasp +BOOTLOADER = usbasploader # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/skippys_custom_pcs/roopad/config.h b/keyboards/skippys_custom_pcs/roopad/config.h new file mode 100644 index 000000000000..53a29c6158b0 --- /dev/null +++ b/keyboards/skippys_custom_pcs/roopad/config.h @@ -0,0 +1,71 @@ +/* +Copyright 2020 + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x36B6 // skippys_custom_pcs +#define PRODUCT_ID 0x0001 // RooPad +#define DEVICE_VER 0x0001 // Version 1 +#define MANUFACTURER ToastyStoemp +#define PRODUCT RooPad + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 5 + +/* + * 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) + * +*/ + +// Checked with Eagle Schematic +#define MATRIX_ROW_PINS { B5, F6, F5, F4, F1 } +#define MATRIX_COL_PINS { F0, B4, D7, D6, D4 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +#define RGB_DI_PIN B6 +#define RGBLED_NUM 21 +#define RGBLIGHT_SLEEP + +#define RGBLIGHT_EFFECT_ALTERNATING +#define RGBLIGHT_EFFECT_BREATHING +#define RGBLIGHT_EFFECT_CHRISTMAS +#define RGBLIGHT_EFFECT_KNIGHT +#define RGBLIGHT_EFFECT_RAINBOW_MOOD +#define RGBLIGHT_EFFECT_RAINBOW_SWIRL +#define RGBLIGHT_EFFECT_RGB_TEST +#define RGBLIGHT_EFFECT_SNAKE +#define RGBLIGHT_EFFECT_STATIC_GRADIENT +#define RGBLIGHT_EFFECT_TWINKLE + +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/skippys_custom_pcs/roopad/info.json b/keyboards/skippys_custom_pcs/roopad/info.json new file mode 100644 index 000000000000..e866a1cc2934 --- /dev/null +++ b/keyboards/skippys_custom_pcs/roopad/info.json @@ -0,0 +1,10 @@ +{ + "keyboard_name": "RooPad", + "url": "", + "maintainer": "ToastyStoemp", + "layouts": { + "LAYOUT": { + "layout": [{"label":"Num Lock", "x":1.5, "y":0}, {"label":"/", "x":2.5, "y":0}, {"label":"*", "x":3.5, "y":0}, {"label":"-", "x":4.5, "y":0}, {"x":0, "y":1}, {"label":"7", "x":1.5, "y":1}, {"label":"8", "x":2.5, "y":1}, {"label":"9", "x":3.5, "y":1}, {"label":"+", "x":4.5, "y":1, "h":2}, {"x":0, "y":2}, {"label":"4", "x":1.5, "y":2}, {"label":"5", "x":2.5, "y":2}, {"label":"6", "x":3.5, "y":2}, {"x":0, "y":3}, {"label":"1", "x":1.5, "y":3}, {"label":"2", "x":2.5, "y":3}, {"label":"3", "x":3.5, "y":3}, {"label":"Enter", "x":4.5, "y":3, "h":2}, {"x":0, "y":4}, {"label":"0", "x":1.5, "y":4, "w":2}, {"label":".", "x":3.5, "y":4}] + } + } +} \ No newline at end of file diff --git a/keyboards/skippys_custom_pcs/roopad/keymaps/default/keymap.c b/keyboards/skippys_custom_pcs/roopad/keymaps/default/keymap.c new file mode 100644 index 000000000000..2d8f5dce9efc --- /dev/null +++ b/keyboards/skippys_custom_pcs/roopad/keymaps/default/keymap.c @@ -0,0 +1,67 @@ +/* +Copyright 2020 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _LAYER0, + _LAYER1, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* + * ┌───┬───┬───┬───┐ + * │Num│ / │ * │ - │ + * ┌───┬─┼───┼───┼───┼───┤ + * │Cal│ │ 7 │ 8 │ 9 │ │ + * ├───┼─┼───┼───┼───┤ + │ + * │WWW│ │ 4 │ 5 │ 6 │ │ + * ├───┼─┼───┼───┼───┼───┤ + * │Mai│ │ 1 │ 2 │ 3 │ E │ + * ├───┼─┼───┴───┼───┤ N │ + * │FN │ │ 0 │ . │ T │ + * └───┴─┴───────┴───┴───┘ + */ + + [_LAYER0] = LAYOUT( + KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_CALC, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_WSCH, KC_P4, KC_P5, KC_P6, + KC_MAIL, KC_P1, KC_P2, KC_P3, KC_PENT, + MO(1), KC_P0, KC_PDOT + ), + + /* + * ┌───┬───┬───┬───┐ + * │Num│ / │ * │-BR│ + * ┌───┬─┼───┼───┼───┼───┤ + * │ │ │F7 │F8 │F9 │ │ + * ├───┼─┼───┼───┼───┤+BR│ + * │ │ │F4 │F5 │F6 │ │ + * ├───┼─┼───┼───┼───┼───┤ + * │ │ │F1 │F2 │F3 │RGB│ + * ├───┼─┼───┴───┼───┤ │ + * │FN │ │ │TOG│MOD│ + * └───┴─┴───────┴───┴───┘ + */ + + [_LAYER1] = LAYOUT( + KC_NLCK, KC_PSLS, KC_PAST, RGB_VAD, + KC_TRNS, KC_F7, KC_F8, KC_F9, RGB_VAI, + KC_TRNS, KC_F4, KC_F5, KC_F6, + KC_TRNS, KC_F1, KC_F2, KC_F3, RGB_MOD, + KC_TRNS, KC_TRNS, RGB_TOG + ) +}; diff --git a/keyboards/skippys_custom_pcs/roopad/keymaps/via/keymap.c b/keyboards/skippys_custom_pcs/roopad/keymaps/via/keymap.c new file mode 100644 index 000000000000..d4dedc9a0c5b --- /dev/null +++ b/keyboards/skippys_custom_pcs/roopad/keymaps/via/keymap.c @@ -0,0 +1,85 @@ +/* +Copyright 2020 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _LAYER0, + _LAYER1, + _LAYER2, + _LAYER3, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* + * ┌───┬───┬───┬───┐ + * │Num│ / │ * │ - │ + * ┌───┬─┼───┼───┼───┼───┤ + * │Cal│ │ 7 │ 8 │ 9 │ │ + * ├───┼─┼───┼───┼───┤ + │ + * │WWW│ │ 4 │ 5 │ 6 │ │ + * ├───┼─┼───┼───┼───┼───┤ + * │Mai│ │ 1 │ 2 │ 3 │ E │ + * ├───┼─┼───┴───┼───┤ N │ + * │FN │ │ 0 │ . │ T │ + * └───┴─┴───────┴───┴───┘ + */ + + [_LAYER0] = LAYOUT( + KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_CALC, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_WSCH, KC_P4, KC_P5, KC_P6, + KC_MAIL, KC_P1, KC_P2, KC_P3, KC_PENT, + MO(1), KC_P0, KC_PDOT + ), + + /* + * ┌───┬───┬───┬───┐ + * │Num│ / │ * │-BR│ + * ┌───┬─┼───┼───┼───┼───┤ + * │ │ │F7 │F8 │F9 │ │ + * ├───┼─┼───┼───┼───┤+BR│ + * │ │ │F4 │F5 │F6 │ │ + * ├───┼─┼───┼───┼───┼───┤ + * │ │ │F1 │F2 │F3 │RGB│ + * ├───┼─┼───┴───┼───┤ │ + * │FN │ │ │TOG│MOD│ + * └───┴─┴───────┴───┴───┘ + */ + + [_LAYER1] = LAYOUT( + KC_NLCK, KC_PSLS, KC_PAST, RGB_VAD, + KC_TRNS, KC_F7, KC_F8, KC_F9, RGB_VAI, + KC_TRNS, KC_F4, KC_F5, KC_F6, + KC_TRNS, KC_F1, KC_F2, KC_F3, RGB_MOD, + KC_TRNS, KC_TRNS, RGB_TOG + ), + + [_LAYER2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_LAYER3] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/skippys_custom_pcs/roopad/keymaps/via/rules.mk b/keyboards/skippys_custom_pcs/roopad/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/skippys_custom_pcs/roopad/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/skippys_custom_pcs/roopad/readme.md b/keyboards/skippys_custom_pcs/roopad/readme.md new file mode 100644 index 000000000000..e10cc9fb4ff0 --- /dev/null +++ b/keyboards/skippys_custom_pcs/roopad/readme.md @@ -0,0 +1,22 @@ +# Roopad + +The following is the QMK Firmware for the kuku65 Hotswap PCB. + +The PCB features: +* QMK & VIA compatibility +* Underglow + +--- + +* Keyboard Maintainer: [ToastyStoemp](https://github.com/ToastyStoemp) + +Make example for this keyboard (after setting up your build environment): + + make skippys_custom_pcs/roopad:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader Enter the bootloader in 3 ways: +* **Bootmagic reset**: Hold down the key ESC key and plug in the keyboard (Top Left most switch) +* **Physical reset button**: Briefly press the button on the back of the PCB +* **Keycode in layout**: Press the B key on layer 1 which is mapped to `RESET` diff --git a/keyboards/skippys_custom_pcs/roopad/roopad.c b/keyboards/skippys_custom_pcs/roopad/roopad.c new file mode 100644 index 000000000000..408d7d56f11c --- /dev/null +++ b/keyboards/skippys_custom_pcs/roopad/roopad.c @@ -0,0 +1,14 @@ +/* +Copyright 2020 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "roopad.h" diff --git a/keyboards/skippys_custom_pcs/roopad/roopad.h b/keyboards/skippys_custom_pcs/roopad/roopad.h new file mode 100644 index 000000000000..f5203833396c --- /dev/null +++ b/keyboards/skippys_custom_pcs/roopad/roopad.h @@ -0,0 +1,32 @@ +/* +Copyright 2020 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +/* RooPad Keymap Definitions */ +#define LAYOUT( \ + K01, K02, K03, K04, \ + K10, K11, K12, K13, K14, \ + K20, K21, K22, K23, \ + K30, K31, K32, K33, K34, \ + K40, K41, K43 \ +) { \ + { KC_NO, K01, K02, K03, K04 }, \ + { K10, K11, K12, K13, K14 }, \ + { K20, K21, K22, K23, KC_NO }, \ + { K30, K31, K32, K33, K34 }, \ + { K40, K41, KC_NO, K43, KC_NO } \ +} diff --git a/keyboards/skippys_custom_pcs/roopad/rules.mk b/keyboards/skippys_custom_pcs/roopad/rules.mk new file mode 100644 index 000000000000..87f67b6b0859 --- /dev/null +++ b/keyboards/skippys_custom_pcs/roopad/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Processor frequency +F_CPU = 8000000 + +# 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 +# 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 diff --git a/keyboards/slz40/info.json b/keyboards/slz40/info.json index 2723453c4ef4..471bba73c3c3 100644 --- a/keyboards/slz40/info.json +++ b/keyboards/slz40/info.json @@ -2,8 +2,6 @@ "keyboard_name": "slz40", "url": "https://github.com/sithlord121/slz40", "maintainer": "SithLord", - "width": 13, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/slz40/rules.mk b/keyboards/slz40/rules.mk index 5c0d8f307c54..d2109f62500b 100644 --- a/keyboards/slz40/rules.mk +++ b/keyboards/slz40/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/smallice/info.json b/keyboards/smallice/info.json index 979791db2bdc..24ce4cce2290 100644 --- a/keyboards/smallice/info.json +++ b/keyboards/smallice/info.json @@ -2,11 +2,9 @@ "keyboard_name": "smAllice", "url": "https://keyhive.xyz/shop/smallice", "maintainer": "https://github.com/Armastardo", - "width": 16.75, - "height": 4, "layouts": { "LAYOUT": { "layout": [{"label":"V+", "x":0.5, "y":0}, {"label":"Tab", "x":1.75, "y":0}, {"label":"Q", "x":2.75, "y":0}, {"label":"W", "x":3.75, "y":0}, {"label":"E", "x":4.75, "y":0}, {"label":"R", "x":5.75, "y":0}, {"label":"T", "x":6.75, "y":0}, {"label":"Y", "x":8.25, "y":0}, {"label":"U", "x":9.25, "y":0}, {"label":"I", "x":10.25, "y":0}, {"label":"O", "x":11.25, "y":0}, {"label":"P", "x":12.25, "y":0}, {"label":"[ {", "x":13.25, "y":0}, {"label":"] }", "x":14.25, "y":0}, {"label":"Bcsp", "x":15.25, "y":0}, {"label":"V-", "x":0.25, "y":1}, {"label":"Caps", "x":1.5, "y":1, "w":1.25}, {"label":"A", "x":2.75, "y":1}, {"label":"S", "x":3.75, "y":1}, {"label":"D", "x":4.75, "y":1}, {"label":"F", "x":5.75, "y":1}, {"label":"G", "x":6.75, "y":1}, {"label":"H", "x":8.75, "y":1}, {"label":"J", "x":9.75, "y":1}, {"label":"K", "x":10.75, "y":1}, {"label":"L", "x":11.75, "y":1}, {"label":": ;", "x":12.75, "y":1}, {"label":", \"", "x":13.75, "y":1}, {"label":"Enter", "x":14.75, "y":1, "w":1.75}, {"label":"V-", "x":0, "y":2}, {"label":"Shift", "x":1.25, "y":2, "w":1.75}, {"label":"Z", "x":3, "y":2}, {"label":"X", "x":4, "y":2}, {"label":"C", "x":5, "y":2}, {"label":"V", "x":6, "y":2}, {"label":"B", "x":7, "y":2}, {"label":"B", "x":8.5, "y":2}, {"label":"N", "x":9.5, "y":2}, {"label":"M", "x":10.5, "y":2}, {"label":"<", "x":11.5, "y":2}, {"label":">", "x":12.5, "y":2}, {"label":"Shift", "x":13.5, "y":2, "w":1.25}, {"label":"Up", "x":14.75, "y":2}, {"label":"?", "x":15.75, "y":2}, {"label":"Ctrl", "x":1.25, "y":3}, {"label":"Alt", "x":3, "y":3, "w":1.25}, {"x":4.25, "y":3, "w":2}, {"label":"Win", "x":6.25, "y":3}, {"x":9.5, "y":3, "w":2.75}, {"label":"Fn", "x":12.25, "y":3}, {"label":"left", "x":13.75, "y":3}, {"label":"down", "x":14.75, "y":3}, {"label":"right", "x":15.75, "y":3}] } } -} \ No newline at end of file +} diff --git a/keyboards/smallice/rules.mk b/keyboards/smallice/rules.mk index ef4ccf32fbe3..68dbdff654a3 100644 --- a/keyboards/smallice/rules.mk +++ b/keyboards/smallice/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/smallkeyboard/config.h b/keyboards/smallkeyboard/config.h new file mode 100644 index 000000000000..0a7d06f39deb --- /dev/null +++ b/keyboards/smallkeyboard/config.h @@ -0,0 +1,126 @@ +/* Copyright 2021 zhouqiong19840119 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + +#pragma once + +/* USB Device descriptor parameter */ +#include "config_common.h" +#define VENDOR_ID 0x7A71 // "zq" = zhouqiong19840119 +#define PRODUCT_ID 0x736B // "sk" = smallkeyboard +#define DEVICE_VER 0x0001 +#define MANUFACTURER zhouqiong19840119 +#define PRODUCT smallkeyboard + +/* key matrix size */ +#define MATRIX_ROWS 2 +#define MATRIX_COLS 3 + +/* + * 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 {C7, C6 } +#define MATRIX_COL_PINS {F7, F6, F5} +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION ROW2COL + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 3 + +/* disable these deprecated features by default */ +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#ifdef RGB_MATRIX_ENABLE +# define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended +# define RGB_MATRIX_KEYPRESSES +# define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +// #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +// #define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +// #define ENABLE_RGB_MATRIX_FRACTAL +#define ENABLE_RGB_MATRIX_PIXEL_RAIN + +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +// #define ENABLE_RGB_MATRIX_DIGITAL_RAIN + +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// #define ENABLE_RGB_MATRIX_SPLASH +// #define ENABLE_RGB_MATRIX_MULTISPLASH +// #define ENABLE_RGB_MATRIX_SOLID_SPLASH +// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + +// 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 0b1110100 + +#define DRIVER_COUNT 1 +#define DRIVER_LED_TOTAL 6 +#endif +//#define RGB_DI_PIN B7 +//#ifdef RGB_DI_PIN +//#define RGBLIGHT_ANIMATIONS +//#define RGBLED_NUM 8 +//#define RGBLIGHT_HUE_STEP 5 +//#define RGBLIGHT_SAT_STEP 5 +//#define RGBLIGHT_VAL_STEP 5 +//#define RGBLIGHT_SLEEP +//#endif diff --git a/keyboards/smallkeyboard/info.json b/keyboards/smallkeyboard/info.json new file mode 100644 index 000000000000..8d1d642c108b --- /dev/null +++ b/keyboards/smallkeyboard/info.json @@ -0,0 +1,17 @@ +{ + "keyboard_name": "smallkeyboard", + "url": "", + "maintainer": "zhouqiong19840119", + "layouts": { + "LAYOUT_ortho_2x3": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1} + ] + } + } +} diff --git a/keyboards/smallkeyboard/keymaps/default/keymap.c b/keyboards/smallkeyboard/keymaps/default/keymap.c new file mode 100644 index 000000000000..9ab00be05cbf --- /dev/null +++ b/keyboards/smallkeyboard/keymaps/default/keymap.c @@ -0,0 +1,28 @@ +/* Copyright 2021 zhouqiong19840119 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ortho_2x3( + KC_P1, KC_P2, MO(1), + KC_P3, KC_P4, KC_P3), + [1] = LAYOUT_ortho_2x3( + RGB_TOG, RGB_MOD, MO(1), + AU_ON, AU_OFF, MI_ON), + [2] = LAYOUT_ortho_2x3( + KC_P4, KC_P5, MO(1), + KC_P1, KC_P2, KC_P3), +}; diff --git a/keyboards/smallkeyboard/keymaps/via/keymap.c b/keyboards/smallkeyboard/keymaps/via/keymap.c new file mode 100644 index 000000000000..9ab00be05cbf --- /dev/null +++ b/keyboards/smallkeyboard/keymaps/via/keymap.c @@ -0,0 +1,28 @@ +/* Copyright 2021 zhouqiong19840119 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ortho_2x3( + KC_P1, KC_P2, MO(1), + KC_P3, KC_P4, KC_P3), + [1] = LAYOUT_ortho_2x3( + RGB_TOG, RGB_MOD, MO(1), + AU_ON, AU_OFF, MI_ON), + [2] = LAYOUT_ortho_2x3( + KC_P4, KC_P5, MO(1), + KC_P1, KC_P2, KC_P3), +}; diff --git a/keyboards/smallkeyboard/keymaps/via/rules.mk b/keyboards/smallkeyboard/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/smallkeyboard/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/smallkeyboard/readme.md b/keyboards/smallkeyboard/readme.md new file mode 100644 index 000000000000..54b4bcb53288 --- /dev/null +++ b/keyboards/smallkeyboard/readme.md @@ -0,0 +1,18 @@ +# SMALLKEYBOARD + +![](https://github.com/zhouqiong19840119/MacroKeyboard-little/blob/main/Small%20(1).jpg) + +* Keyboard Maintainer: [zhouqiong19840119](https://github.com/zhouqiong19840119) +* Hardware Availability: + +Make example for this keyboard (after setting up your build environment): + + make smallkeyboard:default + +Flashing example for this keyboard: + + make smallkeyboard:default:flash + +To reset the board into bootloader mode, hold the key at the top left of the keyboard while connecting the USB cable (also erases persistent settings). + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/smallkeyboard/rules.mk b/keyboards/smallkeyboard/rules.mk new file mode 100644 index 000000000000..aff7430d4b9a --- /dev/null +++ b/keyboards/smallkeyboard/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 = 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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = IS31FL3731 + +RGB_MATRIX_SUPPORTED = yes diff --git a/keyboards/smallkeyboard/smallkeyboard.c b/keyboards/smallkeyboard/smallkeyboard.c new file mode 100644 index 000000000000..af38cb61218d --- /dev/null +++ b/keyboards/smallkeyboard/smallkeyboard.c @@ -0,0 +1,49 @@ +/* Copyright 2021 zhouqiong19840119 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "smallkeyboard.h" + +#ifdef RGB_MATRIX_ENABLE + +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { + /* Refer to IS31 manual for these locations + * driver + * | R location + * | | G location + * | | | B location + * | | | | */ + {0, C1_3, C2_3, C3_3}, // BL1 + {0, C1_4, C2_4, C3_4}, // BL2 + {0, C1_5, C2_5, C3_5}, // BL3 + {0, C1_11, C2_11, C3_11}, // BL4 + {0, C1_12, C2_12, C3_12}, // BL5 + {0, C1_13, C2_13, C3_13}, // BL6 +}; + +led_config_t g_led_config = { + { + { 0, 1, 2}, + { 3, 4, 5}, + }, + { + { 48, 32},{ 48, 48},{ 64, 48}, + { 80, 16},{ 64, 32},{ 80, 32} + }, + { + 4, 4, 4, + 1, 1, 4 + } +}; +#endif diff --git a/keyboards/smallkeyboard/smallkeyboard.h b/keyboards/smallkeyboard/smallkeyboard.h new file mode 100644 index 000000000000..7741772be594 --- /dev/null +++ b/keyboards/smallkeyboard/smallkeyboard.h @@ -0,0 +1,26 @@ +/* Copyright 2021 zhouqiong198401189 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define LAYOUT_ortho_2x3( \ + K00, K01, K02,\ + K10, K11, K12 \ +) { \ + { K00, K01, K02 }, \ + { K10, K11, K12 } \ +} diff --git a/keyboards/smk60/info.json b/keyboards/smk60/info.json index 67903a21ab15..5aff493fd461 100644 --- a/keyboards/smk60/info.json +++ b/keyboards/smk60/info.json @@ -2,8 +2,6 @@ "keyboard_name": "SMK60", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_wkl": { "layout": [ diff --git a/keyboards/smk60/rules.mk b/keyboards/smk60/rules.mk index eee57dbbad21..e1dd0200f354 100644 --- a/keyboards/smk60/rules.mk +++ b/keyboards/smk60/rules.mk @@ -2,31 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Use RGB bottom light LAYOUTS = 60_ansi 60_hhkb 60_iso diff --git a/keyboards/snampad/config.h b/keyboards/snampad/config.h index 563796eec46c..64bb16fb40e1 100644 --- a/keyboards/snampad/config.h +++ b/keyboards/snampad/config.h @@ -117,59 +117,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -188,26 +135,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/snampad/info.json b/keyboards/snampad/info.json index 2974eab861a4..740ab15ad809 100644 --- a/keyboards/snampad/info.json +++ b/keyboards/snampad/info.json @@ -2,11 +2,8 @@ "keyboard_name": "snampad", "url": "", "maintainer": "ptillemans", - "width": 4, - "height": 6, "layouts": { "LAYOUT_numpad_6x4": { - "key_count": 21, "layout": [ {"label":"Esc", "x":0, "y":0}, {"label":"Tab", "x":1, "y":0}, diff --git a/keyboards/snampad/keymaps/default/keymap.c b/keyboards/snampad/keymaps/default/keymap.c index 6e887e52feb2..cdd3dff5979a 100644 --- a/keyboards/snampad/keymaps/default/keymap.c +++ b/keyboards/snampad/keymaps/default/keymap.c @@ -26,15 +26,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/snampad/rules.mk b/keyboards/snampad/rules.mk index e99f18fe5d7a..d38a32b76762 100644 --- a/keyboards/snampad/rules.mk +++ b/keyboards/snampad/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = numpad_6x4 diff --git a/keyboards/snampad/snampad.c b/keyboards/snampad/snampad.c index c7a94245c400..58413d0af59d 100644 --- a/keyboards/snampad/snampad.c +++ b/keyboards/snampad/snampad.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "snampad.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/sneakbox/aliceclone/info.json b/keyboards/sneakbox/aliceclone/info.json index cacef99b86ef..9fbee0c69228 100644 --- a/keyboards/sneakbox/aliceclone/info.json +++ b/keyboards/sneakbox/aliceclone/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Alice Clone", "url": "https://sneakbox.design", "maintainer": "mujimanic", - "width": 18.25, - "height": 5, "layouts": { "LAYOUT_alice_split_bs": { "layout": [ diff --git a/keyboards/sneakbox/aliceclone/rules.mk b/keyboards/sneakbox/aliceclone/rules.mk index 24bce999b780..75a731953d0b 100644 --- a/keyboards/sneakbox/aliceclone/rules.mk +++ b/keyboards/sneakbox/aliceclone/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = yes diff --git a/keyboards/sneakbox/ava/ava.c b/keyboards/sneakbox/ava/ava.c new file mode 100644 index 000000000000..c1b7c76cda3a --- /dev/null +++ b/keyboards/sneakbox/ava/ava.c @@ -0,0 +1,36 @@ +/* +Copyright 2021 Bryan Ong + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "ava.h" + +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index,clockwise)) { return false; } + if (index == 0) { /* First encoder */ + if (clockwise) { + tap_code(KC_DOWN); + } else { + tap_code(KC_UP); + } + } else if (index == 1) { /* Second encoder */ + if (clockwise) { + tap_code(KC_DOWN); + } else { + tap_code(KC_UP); + } + } + return true; +} diff --git a/keyboards/sneakbox/ava/ava.h b/keyboards/sneakbox/ava/ava.h new file mode 100644 index 000000000000..474081e97371 --- /dev/null +++ b/keyboards/sneakbox/ava/ava.h @@ -0,0 +1,59 @@ +/* +Copyright 2021 Bryan Ong + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_all LAYOUT_ava_split_bs + +#define LAYOUT_ava_split_bs( \ + K020, K000, K001, K002, K003, K004, K005, K006, K010, K011, K012, K013, K014, K015, K016, K017, \ + K040, K021, K022, K023, K024, K025, K026, K030, K031, K032, K033, K034, K035, K036, K037, \ + K060, K041, K042, K043, K044, K045, K046, K050, K051, K052, K053, K054, K055, K056, \ + K007, K061, K062, K063, K064, K065, K066, K070, K071, K072, K073, K074, K075, K076, K077, \ + K027, K047, K057, K067, K081, K083, K085, K086, K087 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007 }, \ + { K010, K011, K012, K013, K014, K015, K016, K017 }, \ + { K020, K021, K022, K023, K024, K025, K026, K027 }, \ + { K030, K031, K032, K033, K034, K035, K036, K037 }, \ + { K040, K041, K042, K043, K044, K045, K046, K047 }, \ + { K050, K051, K052, K053, K054, K055, K056, K057 }, \ + { K060, K061, K062, K063, K064, K065, K066, K067 }, \ + { K070, K071, K072, K073, K074, K075, K076, K077 }, \ + { KC_NO, K081, KC_NO, K083, KC_NO, K085, K086, K087 } \ +} + +#define LAYOUT_ava( \ + K020, K000, K001, K002, K003, K004, K005, K006, K010, K011, K012, K013, K014, K015, K017, \ + K040, K021, K022, K023, K024, K025, K026, K030, K031, K032, K033, K034, K035, K036, K037, \ + K060, K041, K042, K043, K044, K045, K046, K050, K051, K052, K053, K054, K055, K056, \ + K007, K061, K062, K063, K064, K065, K066, K070, K071, K072, K073, K074, K075, K076, K077, \ + K027, K047, K057, K067, K081, K083, K085, K086, K087 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007 }, \ + { K010, K011, K012, K013, K014, K015, KC_NO, K017 }, \ + { K020, K021, K022, K023, K024, K025, K026, K027 }, \ + { K030, K031, K032, K033, K034, K035, K036, K037 }, \ + { K040, K041, K042, K043, K044, K045, K046, K047 }, \ + { K050, K051, K052, K053, K054, K055, K056, K057 }, \ + { K060, K061, K062, K063, K064, K065, K066, K067 }, \ + { K070, K071, K072, K073, K074, K075, K076, K077 }, \ + { KC_NO, K081, KC_NO, K083, KC_NO, K085, K086, K087 } \ +} + diff --git a/keyboards/sneakbox/ava/config.h b/keyboards/sneakbox/ava/config.h new file mode 100644 index 000000000000..81fdf5b374a1 --- /dev/null +++ b/keyboards/sneakbox/ava/config.h @@ -0,0 +1,72 @@ +/* +Copyright 2021 Bryan Ong + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x5342 +#define PRODUCT_ID 0x0004 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Sneakbox +#define PRODUCT AVA + +/*Bootmagic boot button, set to topmost, leftmost key */ +#define BOOTMAGIC_LITE_ROW 2 +#define BOOTMAGIC_LITE_COLUMN 0 + +/* encoder */ +/* #define NUMBER_OF_ENCODERS 1 */ +#define ENCODERS_PAD_A { D3 } +#define ENCODERS_PAD_B { D2 } +#define ENCODER_RESOLUTION 1 + +/* key matrix size */ +#define MATRIX_ROWS 9 +#define MATRIX_COLS 8 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { F1, E6, F4, B1, F5, B2, F6, B3, B7 } +#define MATRIX_COL_PINS { F0, D0, C7, C6, B6, B5, B4, D1 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + + +#define LED_NUM_LOCK_PIN D4 +#define LED_CAPS_LOCK_PIN D6 + +#define RGB_DI_PIN F7 +#define RGBLIGHT_EFFECT_BREATHING +#define RGBLIGHT_EFFECT_RAINBOW_MOOD +#define RGBLIGHT_EFFECT_RAINBOW_SWIRL +#define RGBLIGHT_EFFECT_SNAKE +#define RGBLIGHT_EFFECT_KNIGHT +#define RGBLIGHT_EFFECT_CHRISTMAS +#define RGBLIGHT_EFFECT_STATIC_GRADIENT +#define RGBLIGHT_EFFECT_RGB_TEST +#define RGBLIGHT_EFFECT_ALTERNATING +#define RGBLIGHT_EFFECT_TWINKLE +#define RGBLED_NUM 14 +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 \ No newline at end of file diff --git a/keyboards/sneakbox/ava/info.json b/keyboards/sneakbox/ava/info.json new file mode 100644 index 000000000000..276efce01864 --- /dev/null +++ b/keyboards/sneakbox/ava/info.json @@ -0,0 +1,29 @@ +{ + "keyboard_name": "AVA", + "url": "https://sneakbox.com", + "maintainer": "mujimanic", + "layout_aliases": { + "LAYOUT_alice_split_bs": "LAYOUT_ava_split_bs", + "LAYOUT_alice": "LAYOUT_ava" + }, + "layouts": { + "LAYOUT_ava_split_bs": { + "layout": [ + {"x":0, "y":0}, {"x":1.25, "y":0}, {"x":2.25, "y":0}, {"x":3.25, "y":0}, {"x":4.25, "y":0}, {"x":5.25, "y":0}, {"x":6.25, "y":0}, {"x":7.25, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.25, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, + {"x":0, "y":1}, {"x":1.25, "y":1, "w":1.5}, {"x":2.75, "y":1}, {"x":3.75, "y":1}, {"x":4.75, "y":1}, {"x":5.75, "y":1}, {"x":6.75, "y":1}, {"x":9.75, "y":1}, {"x":10.75, "y":1}, {"x":11.75, "y":1}, {"x":12.75, "y":1}, {"x":13.75, "y":1}, {"x":14.75, "y":1}, {"x":15.75, "y":1}, {"x":16.75, "y":1, "w":1.5}, + {"x":0, "y":2}, {"x":1.25, "y":2, "w":1.75}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":13, "y":2}, {"x":14, "y":2}, {"x":15, "y":2}, {"x":16, "y":2, "w":2.25}, + {"x":0, "y":3}, {"x":1.25, "y":3, "w":2.25}, {"x":3.5, "y":3}, {"x":4.5, "y":3}, {"x":5.5, "y":3}, {"x":6.5, "y":3}, {"x":7.5, "y":3}, {"x":9.5, "y":3}, {"x":10.5, "y":3}, {"x":11.5, "y":3}, {"x":12.5, "y":3}, {"x":13.5, "y":3}, {"x":14.5, "y":3}, {"x":15.65, "y":3.25}, {"x":16.75, "y":3, "w":1.5}, + {"x":1.25, "y":4, "w":1.5}, {"x":2.75, "y":4}, {"x":5, "y":4, "w":1.5}, {"x":6.5, "y":4, "w":2.25}, {"x":9.75, "y":4, "w":2.75}, {"x":12.5, "y":4, "w":1}, {"x":14.65, "y":4.25}, {"x":15.65, "y":4.25}, {"x":16.65, "y":4.25} + ] + }, + "LAYOUT_ava": { + "layout": [ + {"x":0, "y":0}, {"x":1.25, "y":0}, {"x":2.25, "y":0}, {"x":3.25, "y":0}, {"x":4.25, "y":0}, {"x":5.25, "y":0}, {"x":6.25, "y":0}, {"x":7.25, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.25, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0, "w":2}, + {"x":0, "y":1}, {"x":1.25, "y":1, "w":1.5}, {"x":2.75, "y":1}, {"x":3.75, "y":1}, {"x":4.75, "y":1}, {"x":5.75, "y":1}, {"x":6.75, "y":1}, {"x":9.75, "y":1}, {"x":10.75, "y":1}, {"x":11.75, "y":1}, {"x":12.75, "y":1}, {"x":13.75, "y":1}, {"x":14.75, "y":1}, {"x":15.75, "y":1}, {"x":16.75, "y":1, "w":1.5}, + {"x":0, "y":2}, {"x":1.25, "y":2, "w":1.75}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":13, "y":2}, {"x":14, "y":2}, {"x":15, "y":2}, {"x":16, "y":2, "w":2.25}, + {"x":0, "y":3}, {"x":1.25, "y":3, "w":2.25}, {"x":3.5, "y":3}, {"x":4.5, "y":3}, {"x":5.5, "y":3}, {"x":6.5, "y":3}, {"x":7.5, "y":3}, {"x":9.5, "y":3}, {"x":10.5, "y":3}, {"x":11.5, "y":3}, {"x":12.5, "y":3}, {"x":13.5, "y":3}, {"x":14.5, "y":3}, {"x":15.65, "y":3.25}, {"x":16.75, "y":3, "w":1.5}, + {"x":1.25, "y":4, "w":1.5}, {"x":2.75, "y":4}, {"x":5, "y":4, "w":1.5}, {"x":6.5, "y":4, "w":2.25}, {"x":9.75, "y":4, "w":2.75}, {"x":12.5, "y":4, "w":1}, {"x":14.65, "y":4.25}, {"x":15.65, "y":4.25}, {"x":16.65, "y":4.25} + ] + } + } +} diff --git a/keyboards/sneakbox/ava/keymaps/default/keymap.c b/keyboards/sneakbox/ava/keymaps/default/keymap.c new file mode 100644 index 000000000000..3de4f41577e0 --- /dev/null +++ b/keyboards/sneakbox/ava/keymaps/default/keymap.c @@ -0,0 +1,40 @@ +/* +Copyright 2021 Bryan Ong + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_ava_split_bs( + KC_ESC, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, + KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_END, 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_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, LT(_FN, KC_SPC), KC_LEFT, KC_DOWN, KC_RGHT), + [_FN] = LAYOUT_ava_split_bs( + KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_RMOD, RGB_MOD, RGB_TOG, + KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAD, RGB_VAI, KC_TRNS, + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SAD, RGB_SAI, KC_TRNS, RGB_HUI, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; + diff --git a/keyboards/sneakbox/ava/keymaps/via/keymap.c b/keyboards/sneakbox/ava/keymaps/via/keymap.c new file mode 100644 index 000000000000..2888fc67b982 --- /dev/null +++ b/keyboards/sneakbox/ava/keymaps/via/keymap.c @@ -0,0 +1,55 @@ +/* +Copyright 2021 Bryan Ong + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN, + _L3, + _L4 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_BASE] = LAYOUT_ava_split_bs( + KC_ESC, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, + KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_END, 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_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, LT(_FN, KC_SPC), KC_LEFT, KC_DOWN, KC_RGHT), + [_FN] = LAYOUT_ava_split_bs( + KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_RMOD, RGB_MOD, RGB_TOG, + KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAD, RGB_VAI, KC_TRNS, + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SAD, RGB_SAI, KC_TRNS, RGB_HUI, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [_L3] = LAYOUT_ava_split_bs( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [_L4] = LAYOUT_ava_split_bs( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; + diff --git a/keyboards/sneakbox/ava/keymaps/via/rules.mk b/keyboards/sneakbox/ava/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/sneakbox/ava/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/sneakbox/ava/readme.md b/keyboards/sneakbox/ava/readme.md new file mode 100644 index 000000000000..8f65c143fe87 --- /dev/null +++ b/keyboards/sneakbox/ava/readme.md @@ -0,0 +1,15 @@ +# Sneakbox AVA + +![Sneakbox AVA](https://i.imgur.com/lVaAmfSh.jpg) + +An Alice-like keyboard featuring a blocked arrow cluster in place of the right shift position. The left sided nav cluster contains four keys. Optional pushbutton rotary encoder socket positioned at the top left key position. Firmware covers both soldered and hotswap versions of the PCB. + +* Keyboard Maintainer: [mujimanic](https://github.com/mujimanic) +* Hardware Supported: AVA-compatible keyboard case. This PCB is different from and is not compatible with conventional Alice keyboard cases or Arisu format cases (right sided arrow cluster + right sided nav cluster). +* Hardware Availability: [sneakbox.design](https://sneakbox.com/collections/frontpage/products/infopre-order-ava-keyboard-shell) + +Make example for this keyboard (after setting up your build environment): + + make sneakbox/ava: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/sneakbox/ava/rules.mk b/keyboards/sneakbox/ava/rules.mk new file mode 100644 index 000000000000..e429c614a3ce --- /dev/null +++ b/keyboards/sneakbox/ava/rules.mk @@ -0,0 +1,20 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes diff --git a/keyboards/sneakbox/disarray/ortho/info.json b/keyboards/sneakbox/disarray/ortho/info.json index 9caf9d3d697a..350e482177fe 100644 --- a/keyboards/sneakbox/disarray/ortho/info.json +++ b/keyboards/sneakbox/disarray/ortho/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Disarray (Ortholinear)", "url": "https://sneakbox.com", "maintainer": "mujimanic", - "width": 16, - "height": 6, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/sneakbox/disarray/ortho/rules.mk b/keyboards/sneakbox/disarray/ortho/rules.mk index fb12719ce81e..bc3e5b4e942d 100644 --- a/keyboards/sneakbox/disarray/ortho/rules.mk +++ b/keyboards/sneakbox/disarray/ortho/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = yes diff --git a/keyboards/sneakbox/disarray/staggered/info.json b/keyboards/sneakbox/disarray/staggered/info.json index fb8ae6131c7a..f08d5389bfd3 100644 --- a/keyboards/sneakbox/disarray/staggered/info.json +++ b/keyboards/sneakbox/disarray/staggered/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Disarray (Staggered)", "url": "https://sneakbox.design", "maintainer": "mujimanic", - "width": 16, - "height": 6, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/sneakbox/disarray/staggered/rules.mk b/keyboards/sneakbox/disarray/staggered/rules.mk index fb12719ce81e..bc3e5b4e942d 100644 --- a/keyboards/sneakbox/disarray/staggered/rules.mk +++ b/keyboards/sneakbox/disarray/staggered/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = yes diff --git a/keyboards/sofle/keyhive/config.h b/keyboards/sofle/keyhive/config.h new file mode 100755 index 000000000000..14303be411b3 --- /dev/null +++ b/keyboards/sofle/keyhive/config.h @@ -0,0 +1,105 @@ +/* Copyright + * 2021 solartempest + * 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 . + */ + +#pragma once +#include "config_common.h" + +// USB Device descriptor parameter + +#define VENDOR_ID 0xFC32 +#define PRODUCT_ID 0x1287 +#define DEVICE_VER 0x0002 +#define MANUFACTURER Keyhive +#define PRODUCT Sofle // VIA version for this PCB is incorrect for the bottom row + +// Key matrix size +// Rows are doubled-up. Added extra column for rotary encoder VIA mapping. +#define MATRIX_ROWS 10 +#define MATRIX_COLS 6 + +// wiring of each half +#define MATRIX_ROW_PINS \ + { C6, D7, E6, B4, B5 } +#define MATRIX_COL_PINS \ + { B6, B2, B3, B1, F7, F6 } +#define MATRIX_ROW_PINS_RIGHT \ + { C6, D7, E6, B4, B5 } +#define MATRIX_COL_PINS_RIGHT \ + { F6, F7, B1, B3, B2, B6 } + +#define DIODE_DIRECTION COL2ROW + +#define DEBOUNCE 5 + +// Encoder support +#define ENCODERS_PAD_A \ + { F5 } +#define ENCODERS_PAD_B \ + { F4 } +#define ENCODERS_PAD_A_RIGHT \ + { F4 } +#define ENCODERS_PAD_B_RIGHT \ + { F5 } +#define ENCODER_RESOLUTIONS \ + { 4, 2 } // Left encoder seems to have double-output issue but right does not. + +#define TAP_CODE_DELAY 10 + +// Communication between sides +#define SOFT_SERIAL_PIN D2 + +// OLED settings +#define OLED_TIMEOUT 80000 +#define OLED_BRIGHTNESS 90 + +#define SPLIT_WPM_ENABLE +#define SPLIT_OLED_ENABLE +#define SPLIT_TRANSPORT_MIRROR + +// Add RGB underglow +#define RGB_DI_PIN D3 +#define RGBLED_NUM 74 +#define RGBLED_SPLIT \ + { 37, 37 } + +#define RGBLIGHT_LIMIT_VAL 160 // Power draw may exceed 0.6A at max brightness with white colour. +#define RGBLIGHT_LAYERS +#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF +#define RGBLIGHT_SLEEP + +#define DRIVER_LED_TOTAL RGBLED_NUM +#define RGB_MATRIX_SPLIT RGBLED_SPLIT + +#define RGB_MATRIX_KEYPRESSES // reacts to keypresses +#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define RGB_MATRIX_KEYPRESSES // reacts to keypresses +// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses) +// # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects +#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +// # define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness) +// # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness) +#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash. + +#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_GRADIENT_LEFT_RIGHT + +#define RGB_MATRIX_HUE_STEP 8 +#define RGB_MATRIX_SAT_STEP 8 +#define RGB_MATRIX_VAL_STEP 8 +#define RGB_MATRIX_SPD_STEP 10 diff --git a/keyboards/sofle/keyhive/info.json b/keyboards/sofle/keyhive/info.json new file mode 100644 index 000000000000..e2cbf0c716ee --- /dev/null +++ b/keyboards/sofle/keyhive/info.json @@ -0,0 +1,14 @@ +{ + "keyboard_name": "Sofle", + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0.5}, {"x":1, "y":0.375}, {"x":2, "y":0.125}, {"x":3, "y":0}, {"x":4, "y":0.125}, {"x":5, "y":0.25}, {"x":10.5, "y":0.25}, {"x":11.5, "y":0.125}, {"x":12.5, "y":0}, {"x":13.5, "y":0.125}, {"x":14.5, "y":0.375}, {"x":15.5, "y":0.5}, + {"x":0, "y":1.5}, {"x":1, "y":1.375}, {"x":2, "y":1.125}, {"x":3, "y":1}, {"x":4, "y":1.125}, {"x":5, "y":1.25}, {"x":10.5, "y":1.25}, {"x":11.5, "y":1.125}, {"x":12.5, "y":1}, {"x":13.5, "y":1.125}, {"x":14.5, "y":1.375}, {"x":15.5, "y":1.5}, + {"x":0, "y":2.5}, {"x":1, "y":2.375}, {"x":2, "y":2.125}, {"x":3, "y":2}, {"x":4, "y":2.125}, {"x":5, "y":2.25}, {"x":10.5, "y":2.25}, {"x":11.5, "y":2.125}, {"x":12.5, "y":2}, {"x":13.5, "y":2.125}, {"x":14.5, "y":2.375}, {"x":15.5, "y":2.5}, + {"x":0, "y":3.5}, {"x":1, "y":3.375}, {"x":2, "y":3.125}, {"x":3, "y":3}, {"x":4, "y":3.125}, {"x":5, "y":3.25}, {"x":6, "y":2.75}, {"x":9.5, "y":2.75}, {"x":10.5, "y":3.25}, {"x":11.5, "y":3.125}, {"x":12.5, "y":3}, {"x":13.5, "y":3.125}, {"x":14.5, "y":3.375}, {"x":15.5, "y":3.5}, + {"x":1.5, "y":4.375}, {"x":2.5, "y":4.125}, {"x":3.5, "y":4.15}, {"x":4.5, "y":4.25}, {"x":6, "y":4.25, "h":1.5}, {"x":9.5, "y":4.25, "h":1.5}, {"x":11, "y":4.25}, {"x":12, "y":4.15}, {"x":13, "y":4.125}, {"x":14, "y":4.375} + ] + } + } +} diff --git a/keyboards/sofle/keyhive/keyhive.c b/keyboards/sofle/keyhive/keyhive.c new file mode 100755 index 000000000000..c7ad9887612b --- /dev/null +++ b/keyboards/sofle/keyhive/keyhive.c @@ -0,0 +1,90 @@ +/* Copyright + * 2021 solartempest + * 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 . + */ + +#include "keyhive.h" +#ifdef RGB_MATRIX_ENABLE +// Physical Layout +// Columns +// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 +// ROWS +// 12 13 22 23 32 33 33 32 23 22 13 12 0 +// 02 03 04 04 03 02 +// 11 14 21 24 31 34 34 31 24 21 14 11 1 +// 01 01 +// 10 15 20 25 30 35 35 30 25 20 15 10 2 +// +// 09 16 19 26 29 36 36 29 26 19 16 09 3 +// +// 08 17 18 27 28 28 27 18 17 08 4 +// 07 06 05 05 06 07 + +// clang-format off + +led_config_t g_led_config = { + { + { 11, 12, 21, 22, 31, 32 }, + { 10, 13, 20, 23, 30, 33 }, + { 9, 14, 19, 24, 29, 34}, + { 8, 15, 18, 25, 28, 35}, + { 7, 16, 17, 26, 27, NO_LED }, + { 47, 48, 57, 58, 67, 68}, + { 46, 49, 56, 59, 66, 69}, + { 45, 50, 55, 60, 65, 70}, + { 44, 51, 54, 61, 64, 71}, + { 43, 52, 53, 62, 63, NO_LED } + }, + { + // Left side underglow + {96, 40}, {16, 20}, {48, 10}, {80, 18}, {88, 60}, {56, 57}, {24,60}, + // Left side Matrix + {32, 57}, { 0, 48}, { 0, 36}, { 0, 24}, { 0, 12}, + {16, 12}, {16, 24}, {16, 36}, {16, 48}, {48, 55}, + {64, 57}, {32, 45}, {32, 33}, {32, 21}, {32, 9}, + {48, 7}, {48, 19}, {48, 31}, {48, 43}, {80, 59}, + {96, 64}, {64, 45}, {64, 33}, {64, 21}, {64, 9}, + {80, 10}, {80, 22}, {80, 34}, {80, 47}, + + + // Right side underglow + {128, 40}, {208, 20}, {176, 10}, {144, 18}, {136, 60}, {168, 57}, {200,60}, + // Right side Matrix + {192, 57}, {224, 48}, {224, 36}, {224, 24}, {224, 12}, + {208, 12}, {208, 24}, {208, 36}, {208, 48}, {176, 55}, + {160, 57}, {192, 45}, {192, 33}, {192, 21}, {192, 9}, + {176, 7}, {176, 19}, {176, 31}, {176, 43}, {144, 59}, + {128, 64}, {160, 45}, {160, 33}, {160, 21}, {160, 9}, + {144, 10}, {144, 22}, {144, 34}, {144, 47}, + }, + { + LED_FLAG_NONE, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + LED_FLAG_NONE, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT + } +}; +#endif diff --git a/keyboards/sofle/keyhive/keyhive.h b/keyboards/sofle/keyhive/keyhive.h new file mode 100755 index 000000000000..d8b21e16d756 --- /dev/null +++ b/keyboards/sofle/keyhive/keyhive.h @@ -0,0 +1,47 @@ +/* Copyright + * 2021 solartempest + * 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 . + */ + +#pragma once + +#include "quantum.h" + +// clang-format off +// Extra keys are added for rotary encoder support in VIA +#define LAYOUT( \ + LA1, LA2, LA3, LA4, LA5, LA6, RA6, RA5, RA4, RA3, RA2, RA1, \ + LB1, LB2, LB3, LB4, LB5, LB6, RB6, RB5, RB4, RB3, RB2, RB1, \ + LC1, LC2, LC3, LC4, LC5, LC6, RC6, RC5, RC4, RC3, RC2, RC1, \ + LD1, LD2, LD3, LD4, LD5, LD6, LE1, RE6, RD6, RD5, RD4, RD3, RD2, RD1, \ + LE2, LE3, LE4, LE5, LE6, RE5, RE4, RE3, RE2, RE1 \ + ) \ + { \ + { LA1, LA2, LA3, LA4, LA5, LA6 }, \ + { LB1, LB2, LB3, LB4, LB5, LB6 }, \ + { LC1, LC2, LC3, LC4, LC5, LC6 }, \ + { LD1, LD2, LD3, LD4, LD5, LD6 }, \ + { LE1, LE2, LE3, LE4, LE5, LE6 }, \ + { RA1, RA2, RA3, RA4, RA5, RA6 }, \ + { RB1, RB2, RB3, RB4, RB5, RB6 }, \ + { RC1, RC2, RC3, RC4, RC5, RC6 }, \ + { RD1, RD2, RD3, RD4, RD5, RD6 }, \ + { RE1, RE2, RE3, RE4, RE5, RE6 } \ + } + + +//RGB LED Conversion macro from physical array to electric array (+146 to firmware size) +// clang-format on diff --git a/keyboards/sofle/keyhive/readme.md b/keyboards/sofle/keyhive/readme.md new file mode 100755 index 000000000000..43813b856a5c --- /dev/null +++ b/keyboards/sofle/keyhive/readme.md @@ -0,0 +1,66 @@ +# Sofle Keyboard + +![SofleKeyboard version 2.1 RGB Keyhive](https://i.imgur.com/WH9OoWuh.jpg) + +Sofle is 6×4+5 keys column-staggered split keyboard. Based on Lily58, Corne and Helix keyboards. + +For detailed instructions on using VIA and flashing, please refer to the sections further down the page! + +For details about the keyboard design, refer to Josef's blog: [Sofle Keyboard - a split keyboard based on Lily58 and Crkbd](https://josef-adamcik.cz/electronics/let-me-introduce-you-sofle-keyboard-split-keyboard-based-on-lily58.html) + +Build guide: [Keyhive Sofle RGB build guide](https://github.com/keyhive/build_guides/blob/master/docs/keyboards/sofle-rgb.md) + +* Keyboard Maintainer: [Solartempest] +* Hardware Supported: SofleKeyboard V2.1 RGB PCB, ProMicro / Elite-C +* Hardware Availability: [Keyhive](https://keyhive.xyz/shop/sofle) + +# Custom Features: + +### OLED Features: +- Includes Snakey keyboard pet! Slithers according to WPM, bites, and sticks its tongue out at you! +- OLED displays current layer, lock key status, WPM, custom logo, and custom name. +- OLED shuts off on idle and when computer is sleeping. +- Includes working Luna keyboard pet. +- Includes working Bongocat (disable RGB for sufficient space). +- Includes stock OLED code as well. + +### RGB Features: +- Adds custom layer lighting with custom gradients for each layer. +- RGB underglow support and remapped to physical locations (nicer gradients and effects). +- Adds white caps lock, scroll lock, and num lock key indicators using the top row/underglow LEDs. + +### Rotary Encoder and VIA Features: +- Fully emappable left encoder controls volume up/down/mute. Right encoder PGUP/PGDOWN. +- Allows for live remapping of per-layer rotary encoder functions in VIA. +- VIA support included by default. +- This fixes the Keyhive left bottom row offset issue in VIA. You will need to import sofle.json in VIA. +- Custom macro key in VIA for Super Alt Tab, which is fully compatible with rotary encoders. +- Custom macro key in VIA for moving windows to other monitors in Windows, which is fully compatible with rotary encoders. + +### Tap and Other Features: +- Push left-shift + backspace to delete whole words. Right-shift + backspace to delete whole words in the opposite direction. +- Double tap layers to stay on a layer instead of momentary push. +- Adds key combo functionality. +- Symmetric modifiers (CMD/Super, Alt/Opt, Ctrl, Shift). + +## Using with VIA + +- After flashing, in VIA make sure to Import Keymap, which is "sofle VIA keymap.json". This will alow VIA to recognize the updated layout and custom functions. VIA will not auto-recognize the keyboard with this firmware because of the necessary customization. +- Go to Save+Load to Load Saved Layout. You can import my own layout "sofle VIA layout.json" or just use the Keymap tab to assign your own keys. Having another keyboard connected can be handy for doing this step. +- It is a good idea to Save Current Layout after you decide on your mapping. + + +Make example for this keyboard (after setting up your build environment): + + make sofle/keyhive:default + +Flashing example for this keyboard: + + make sofle/keyhive:default:flash + +Press reset button on he keyboard when asked. + +Disconnect the first half, connect the second one and repeat the process. + + +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/sofle/keyhive/rules.mk b/keyboards/sofle/keyhive/rules.mk new file mode 100755 index 000000000000..8360417f5cc2 --- /dev/null +++ b/keyboards/sofle/keyhive/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 = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 +ENCODER_ENABLE = yes +LTO_ENABLE = yes +SPLIT_KEYBOARD = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/sofle/keymaps/default/keymap.c b/keyboards/sofle/keymaps/default/keymap.c index 2360a45d47ab..6c078a1292a5 100644 --- a/keyboards/sofle/keymaps/default/keymap.c +++ b/keyboards/sofle/keymaps/default/keymap.c @@ -135,7 +135,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE static void render_logo(void) { static const char PROGMEM qmk_logo[] = { @@ -200,12 +200,13 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) { return rotation; } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { print_status_narrow(); } else { render_logo(); } + return false; } #endif diff --git a/keyboards/sofle/keymaps/default/rules.mk b/keyboards/sofle/keymaps/default/rules.mk index 6da1df16fd83..c21a769a2ec0 100644 --- a/keyboards/sofle/keymaps/default/rules.mk +++ b/keyboards/sofle/keymaps/default/rules.mk @@ -1,5 +1,6 @@ -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 ENCODER_ENABLE = yes -CONSOLE_ENABLE = yes +CONSOLE_ENABLE = no EXTRAKEY_ENABLE = yes diff --git a/keyboards/sofle/keymaps/devdev/config.h b/keyboards/sofle/keymaps/devdev/config.h index 7d597d991a15..c34da8382b9e 100644 --- a/keyboards/sofle/keymaps/devdev/config.h +++ b/keyboards/sofle/keymaps/devdev/config.h @@ -1,18 +1,18 @@ /* Copyright 2021 Dane Evans - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . -*/ + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . +*/ #pragma once @@ -29,7 +29,7 @@ #define CUSTOM_FONT -#define CUSTOM_LAYER_READ //if you remove this it causes issues - needs better guarding +#define CUSTOM_LAYER_READ //if you remove this it causes issues - needs better guarding #define TAPPING_FORCE_HOLD @@ -56,7 +56,7 @@ #ifdef RGBLIGHT_ENABLE #undef RGBLED_NUM - + //#define RGBLIGHT_ANIMATIONS //#define RGBLIGHT_EFFECT_BREATHING #define RGBLIGHT_EFFECT_RAINBOW_MOOD @@ -68,11 +68,11 @@ //#define RGBLIGHT_EFFECT_RGB_TEST //#define RGBLIGHT_EFFECT_ALTERNATING //#define RGBLIGHT_EFFECT_TWINKLE - + #define RGBLED_NUM 70 //#define RGBLED_SPLIT - #define RGBLED_SPLIT { 35, 35 } // haven't figured out how to use this yet - + #define RGBLED_SPLIT { 35, 35 } // haven't figured out how to use this yet + //#define RGBLED_NUM 30 #define RGBLIGHT_LIMIT_VAL 120 #define RGBLIGHT_HUE_STEP 10 @@ -84,11 +84,11 @@ # define RGB_MATRIX_KEYPRESSES // reacts to keypresses // # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses) // # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended # define RGB_MATRIX_FRAMEBUFFER_EFFECTS // # define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness) // # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness) -# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash. +# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash. #define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_GRADIENT_LEFT_RIGHT @@ -99,32 +99,32 @@ /* Disable the animations you don't want/need. You will need to disable a good number of these * * because they take up a lot of space. Disable until you can successfully compile your firmware. */ -// # define DISABLE_RGB_MATRIX_ALPHAS_MODS -// # define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -// # define DISABLE_RGB_MATRIX_BREATHING -// # define DISABLE_RGB_MATRIX_CYCLE_ALL -// # define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT -// # define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN -// # define DISABLE_RGB_MATRIX_CYCLE_OUT_IN -// # define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL -// # define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON -// # define DISABLE_RGB_MATRIX_DUAL_BEACON -// # define DISABLE_RGB_MATRIX_RAINBOW_BEACON -// # define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS -// # define DISABLE_RGB_MATRIX_RAINDROPS -// # define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS -// # define DISABLE_RGB_MATRIX_TYPING_HEATMAP -// # define DISABLE_RGB_MATRIX_DIGITAL_RAIN -// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE -// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -// # define DISABLE_RGB_MATRIX_SPLASH -// # define DISABLE_RGB_MATRIX_MULTISPLASH -// # define DISABLE_RGB_MATRIX_SOLID_SPLASH -// # define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH -#endif \ No newline at end of file + // # undef ENABLE_RGB_MATRIX_ALPHAS_MODS + // # undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN + // # undef ENABLE_RGB_MATRIX_BREATHING + // # undef ENABLE_RGB_MATRIX_CYCLE_ALL + // # undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT + // # undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN + // # undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN + // # undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL + // # undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON + // # undef ENABLE_RGB_MATRIX_DUAL_BEACON + // # undef ENABLE_RGB_MATRIX_RAINBOW_BEACON + // # undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS + // # undef ENABLE_RGB_MATRIX_RAINDROPS + // # undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS + // # undef ENABLE_RGB_MATRIX_TYPING_HEATMAP + // # undef ENABLE_RGB_MATRIX_DIGITAL_RAIN + // # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE + // # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE + // # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE + // # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE + // # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS + // # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS + // # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS + // # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS + // # undef ENABLE_RGB_MATRIX_SPLASH + // # undef ENABLE_RGB_MATRIX_MULTISPLASH + // # undef ENABLE_RGB_MATRIX_SOLID_SPLASH + // # undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH +#endif diff --git a/keyboards/sofle/keymaps/devdev/keymap.c b/keyboards/sofle/keymaps/devdev/keymap.c index 681e7dd6a488..b805f7f176eb 100644 --- a/keyboards/sofle/keymaps/devdev/keymap.c +++ b/keyboards/sofle/keymaps/devdev/keymap.c @@ -393,7 +393,7 @@ void keyboard_post_init_user(void) { } #endif -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE static void render_logo(void) { static const char PROGMEM qmk_logo[] = { @@ -465,12 +465,13 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) { return rotation; } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { print_status_narrow(); } else { render_logo(); } + return false; } #endif diff --git a/keyboards/sofle/keymaps/devdev/rules.mk b/keyboards/sofle/keymaps/devdev/rules.mk index 3dffb03689dc..92a293196f2f 100644 --- a/keyboards/sofle/keymaps/devdev/rules.mk +++ b/keyboards/sofle/keymaps/devdev/rules.mk @@ -4,4 +4,5 @@ CONSOLE_ENABLE = yes RGBLIGHT_ENABLE = yes ENCODER_ENABLE = yes LTO_ENABLE = yes -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/sofle/keymaps/helltm/keymap.c b/keyboards/sofle/keymaps/helltm/keymap.c index d3bdd5fa85c0..8d6289af42b1 100644 --- a/keyboards/sofle/keymaps/helltm/keymap.c +++ b/keyboards/sofle/keymaps/helltm/keymap.c @@ -1,18 +1,18 @@ - /* Copyright 2021 HellSingCoder - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ +/* Copyright 2021 HellSingCoder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ #include QMK_KEYBOARD_H @@ -25,6 +25,7 @@ enum sofle_layers { _ADJUST, }; +// clang-format off enum custom_keycodes { KC_QWERTY = SAFE_RANGE, KC_GAMING, @@ -40,23 +41,22 @@ enum custom_keycodes { KC_LAYER }; - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* - * QWERTY - * ,-----------------------------------------. ,-----------------------------------------. - * | Esc | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BS | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Tab | Q | W | E | R | T | | Y | U | I | O | P | ` | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Caps | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' | - * |------+------+------+------+------+------| play | | mute |------+------+------+------+------+------| - * |LShift| Z | X | C | V | B |-------| |-------| N | M | , | . | / | \ | - * `-----------------------------------------/ / \ \-----------------------------------------' - * | LGUI | LAlt | LAYER| LCTR | /Enter / \Space \ | [ | ] | - | = | - * | | | | |/ / \ \ | | | | | - * `----------------------------------' '------''---------------------------' - */ + /* + * QWERTY + * ,-----------------------------------------. ,-----------------------------------------. + * | Esc | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BS | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | | Y | U | I | O | P | ` | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Caps | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' | + * |------+------+------+------+------+------| play | | mute |------+------+------+------+------+------| + * |LShift| Z | X | C | V | B |-------| |-------| N | M | , | . | / | \ | + * `-----------------------------------------/ / \ \-----------------------------------------' + * | LGUI | LAlt | LAYER| LCTR | /Enter / \Space \ | [ | ] | - | = | + * | | | | |/ / \ \ | | | | | + * `----------------------------------' '------''---------------------------' + */ [_QWERTY] = LAYOUT( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC_DEL, @@ -155,54 +155,36 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) }; +// clang-format on -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE /* 32 * 32 logo */ static void render_logo(void) { - static const char PROGMEM hell_logo[] = { - 0x00, 0x80, 0xc0, 0xc0, 0x60, 0x60, 0x30, 0x30, 0x18, 0x1c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x80, - 0xe0, 0x78, 0x1e, 0x06, 0x00, 0x0c, 0x1c, 0x18, 0x30, 0x30, 0x60, 0x60, 0xc0, 0xc0, 0x80, 0x00, - 0x01, 0x03, 0x07, 0x06, 0x0c, 0x0c, 0x18, 0x18, 0x30, 0x70, 0x60, 0x00, 0xc0, 0xf0, 0x3c, 0x0f, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x60, 0x70, 0x30, 0x18, 0x18, 0x0c, 0x0c, 0x06, 0x07, 0x03, 0x01, - 0x00, 0xf8, 0xf8, 0x80, 0x80, 0x80, 0xf8, 0xf8, 0x00, 0x80, 0xc0, 0xc0, 0x40, 0xc0, 0xc0, 0x80, - 0x00, 0xf8, 0xf8, 0x00, 0xf8, 0xf8, 0x00, 0x08, 0x38, 0x08, 0x00, 0x38, 0x08, 0x30, 0x08, 0x38, - 0x00, 0x1f, 0x1f, 0x01, 0x01, 0x01, 0x1f, 0x1f, 0x00, 0x0f, 0x1f, 0x1a, 0x12, 0x1a, 0x1b, 0x0b, - 0x00, 0x1f, 0x1f, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; + static const char PROGMEM hell_logo[] = {0x00, 0x80, 0xc0, 0xc0, 0x60, 0x60, 0x30, 0x30, 0x18, 0x1c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0x78, 0x1e, 0x06, 0x00, 0x0c, 0x1c, 0x18, 0x30, 0x30, 0x60, 0x60, 0xc0, 0xc0, 0x80, 0x00, 0x01, 0x03, 0x07, 0x06, 0x0c, 0x0c, 0x18, 0x18, 0x30, 0x70, 0x60, 0x00, 0xc0, 0xf0, 0x3c, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x60, 0x70, 0x30, 0x18, 0x18, 0x0c, 0x0c, 0x06, 0x07, 0x03, 0x01, 0x00, 0xf8, 0xf8, 0x80, 0x80, 0x80, 0xf8, 0xf8, 0x00, 0x80, 0xc0, 0xc0, 0x40, 0xc0, 0xc0, 0x80, 0x00, 0xf8, 0xf8, 0x00, 0xf8, 0xf8, 0x00, 0x08, 0x38, 0x08, 0x00, 0x38, 0x08, 0x30, 0x08, 0x38, 0x00, 0x1f, 0x1f, 0x01, 0x01, 0x01, 0x1f, 0x1f, 0x00, 0x0f, 0x1f, 0x1a, 0x12, 0x1a, 0x1b, 0x0b, 0x00, 0x1f, 0x1f, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; oled_write_raw_P(hell_logo, sizeof(hell_logo)); } /* 32 * 14 os logos */ -static const char PROGMEM windows_logo[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0xbc, 0xbe, 0xbe, 0x00, - 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x0f, 0x0f, 0x00, - 0x0f, 0x0f, 0x1f, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; +static const char PROGMEM windows_logo[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0xbc, 0xbe, 0xbe, 0x00, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x0f, 0x0f, 0x00, 0x0f, 0x0f, 0x1f, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; -static const char PROGMEM mac_logo[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf0, 0xf8, 0xf8, 0xf8, - 0xf0, 0xf6, 0xfb, 0xfb, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0f, 0x1f, 0x1f, - 0x0f, 0x0f, 0x1f, 0x1f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; +static const char PROGMEM mac_logo[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf0, 0xf8, 0xf8, 0xf8, 0xf0, 0xf6, 0xfb, 0xfb, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0f, 0x1f, 0x1f, 0x0f, 0x0f, 0x1f, 0x1f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; /* Smart Backspace Delete */ -bool shift_held = false; +bool shift_held = false; static uint16_t held_shift = 0; /* KEYBOARD PET START */ /* settings */ -#define MIN_WALK_SPEED 10 -#define MIN_RUN_SPEED 40 +# define MIN_WALK_SPEED 10 +# define MIN_RUN_SPEED 40 /* advanced settings */ -#define ANIM_FRAME_DURATION 200 // how long each frame lasts in ms -#define ANIM_SIZE 96 // number of bytes in array. If you change sprites, minimize for adequate firmware size. max is 1024 +# define ANIM_FRAME_DURATION 200 // how long each frame lasts in ms +# define ANIM_SIZE 96 // number of bytes in array. If you change sprites, minimize for adequate firmware size. max is 1024 /* timers */ uint32_t anim_timer = 0; @@ -212,167 +194,101 @@ uint32_t anim_sleep = 0; uint8_t current_frame = 0; /* status variables */ -int current_wpm = 0; +int current_wpm = 0; led_t led_usb_state; bool isSneaking = false; -bool isJumping = false; +bool isJumping = false; bool showedJump = true; /* logic */ static void render_luna(int LUNA_X, int LUNA_Y) { - /* Sit */ - static const char PROGMEM sit[2][ANIM_SIZE] = { - /* 'sit1', 32x22px */ - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c, - 0x02, 0x05, 0x02, 0x24, 0x04, 0x04, 0x02, 0xa9, 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x08, 0x68, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x82, 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x0c, 0x10, 0x10, 0x20, 0x20, 0x20, 0x28, - 0x3e, 0x1c, 0x20, 0x20, 0x3e, 0x0f, 0x11, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - - /* 'sit2', 32x22px */ - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c, - 0x02, 0x05, 0x02, 0x24, 0x04, 0x04, 0x02, 0xa9, 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x90, 0x08, 0x18, 0x60, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x82, 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x0c, 0x10, 0x10, 0x20, 0x20, 0x20, 0x28, - 0x3e, 0x1c, 0x20, 0x20, 0x3e, 0x0f, 0x11, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - } - }; + static const char PROGMEM sit[2][ANIM_SIZE] = {/* 'sit1', 32x22px */ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c, 0x02, 0x05, 0x02, 0x24, 0x04, 0x04, 0x02, 0xa9, 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x08, 0x68, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x82, 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x0c, 0x10, 0x10, 0x20, 0x20, 0x20, 0x28, 0x3e, 0x1c, 0x20, 0x20, 0x3e, 0x0f, 0x11, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + + /* 'sit2', 32x22px */ + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c, 0x02, 0x05, 0x02, 0x24, 0x04, 0x04, 0x02, 0xa9, 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x90, 0x08, 0x18, 0x60, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x82, 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x0c, 0x10, 0x10, 0x20, 0x20, 0x20, 0x28, 0x3e, 0x1c, 0x20, 0x20, 0x3e, 0x0f, 0x11, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}; /* Walk */ - static const char PROGMEM walk[2][ANIM_SIZE] = { - /* 'walk1', 32x22px */ - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x90, 0x90, 0x90, 0xa0, 0xc0, 0x80, 0x80, - 0x80, 0x70, 0x08, 0x14, 0x08, 0x90, 0x10, 0x10, 0x08, 0xa4, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x18, 0xea, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1c, 0x20, 0x20, 0x3c, 0x0f, 0x11, 0x1f, 0x03, - 0x06, 0x18, 0x20, 0x20, 0x3c, 0x0c, 0x12, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - - /* 'walk2', 32x22px */ - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x20, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, - 0x00, 0xe0, 0x10, 0x28, 0x10, 0x20, 0x20, 0x20, 0x10, 0x48, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x20, 0xf8, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x30, 0xd5, 0x20, 0x1f, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x30, 0x0c, 0x02, 0x05, 0x09, 0x12, 0x1e, - 0x02, 0x1c, 0x14, 0x08, 0x10, 0x20, 0x2c, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - } - }; + static const char PROGMEM walk[2][ANIM_SIZE] = {/* 'walk1', 32x22px */ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x90, 0x90, 0x90, 0xa0, 0xc0, 0x80, 0x80, 0x80, 0x70, 0x08, 0x14, 0x08, 0x90, 0x10, 0x10, 0x08, 0xa4, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x18, 0xea, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1c, 0x20, 0x20, 0x3c, 0x0f, 0x11, 0x1f, 0x03, 0x06, 0x18, 0x20, 0x20, 0x3c, 0x0c, 0x12, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + + /* 'walk2', 32x22px */ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x20, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x28, 0x10, 0x20, 0x20, 0x20, 0x10, 0x48, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x20, 0xf8, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x30, 0xd5, 0x20, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x30, 0x0c, 0x02, 0x05, 0x09, 0x12, 0x1e, 0x02, 0x1c, 0x14, 0x08, 0x10, 0x20, 0x2c, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }}; /* Run */ - static const char PROGMEM run[2][ANIM_SIZE] = { - /* 'run1', 32x22px */ - { - 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x08, 0x08, 0xc8, 0xb0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x40, 0x40, 0x3c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0xc4, 0xa4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc8, 0x58, 0x28, 0x2a, 0x10, 0x0f, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x09, 0x04, 0x04, 0x04, 0x04, 0x02, 0x03, 0x02, 0x01, 0x01, - 0x02, 0x02, 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - - /* 'run2', 32x22px */ - { - 0x00, 0x00, 0x00, 0xe0, 0x10, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, - 0x80, 0x80, 0x78, 0x28, 0x08, 0x10, 0x20, 0x30, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0xb0, 0x50, 0x55, 0x20, 0x1f, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, - 0x02, 0x1e, 0x20, 0x20, 0x18, 0x0c, 0x14, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - } - }; + static const char PROGMEM run[2][ANIM_SIZE] = {/* 'run1', 32x22px */ + { + 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x08, 0x08, 0xc8, 0xb0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x3c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0xc4, 0xa4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc8, 0x58, 0x28, 0x2a, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x09, 0x04, 0x04, 0x04, 0x04, 0x02, 0x03, 0x02, 0x01, 0x01, 0x02, 0x02, 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + + /* 'run2', 32x22px */ + { + 0x00, 0x00, 0x00, 0xe0, 0x10, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x78, 0x28, 0x08, 0x10, 0x20, 0x30, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0xb0, 0x50, 0x55, 0x20, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x1e, 0x20, 0x20, 0x18, 0x0c, 0x14, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }}; /* Bark */ - static const char PROGMEM bark[2][ANIM_SIZE] = { - /* 'bark1', 32x22px */ - { - 0x00, 0xc0, 0x20, 0x10, 0xd0, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, - 0x3c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x80, 0xc8, 0x48, 0x28, 0x2a, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x02, - 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - - /* 'bark2', 32x22px */ - { - 0x00, 0xe0, 0x10, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, - 0x40, 0x2c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x48, 0x28, 0x2a, 0x10, 0x0f, 0x20, 0x4a, 0x09, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x02, - 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - } - }; + static const char PROGMEM bark[2][ANIM_SIZE] = {/* 'bark1', 32x22px */ + { + 0x00, 0xc0, 0x20, 0x10, 0xd0, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x3c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc8, 0x48, 0x28, 0x2a, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x02, 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + + /* 'bark2', 32x22px */ + { + 0x00, 0xe0, 0x10, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x2c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x48, 0x28, 0x2a, 0x10, 0x0f, 0x20, 0x4a, 0x09, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x02, 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }}; /* Sneak */ - static const char PROGMEM sneak[2][ANIM_SIZE] = { - /* 'sneak1', 32x22px */ - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc0, 0x40, 0x40, 0x80, 0x00, 0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1e, 0x21, 0xf0, 0x04, 0x02, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x04, - 0x04, 0x04, 0x03, 0x01, 0x00, 0x00, 0x09, 0x01, 0x80, 0x80, 0xab, 0x04, 0xf8, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1c, 0x20, 0x20, 0x3c, 0x0f, 0x11, 0x1f, 0x02, 0x06, - 0x18, 0x20, 0x20, 0x38, 0x08, 0x10, 0x18, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, - }, - - /* 'sneak2', 32x22px */ - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xe0, 0xa0, 0x20, 0x40, 0x80, 0xc0, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3e, 0x41, 0xf0, 0x04, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x02, 0x04, - 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x40, 0x55, 0x82, 0x7c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x30, 0x0c, 0x02, 0x05, 0x09, 0x12, 0x1e, 0x04, - 0x18, 0x10, 0x08, 0x10, 0x20, 0x28, 0x34, 0x06, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - } - }; + static const char PROGMEM sneak[2][ANIM_SIZE] = {/* 'sneak1', 32x22px */ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x40, 0x80, 0x00, 0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x21, 0xf0, 0x04, 0x02, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x04, 0x04, 0x04, 0x03, 0x01, 0x00, 0x00, 0x09, 0x01, 0x80, 0x80, 0xab, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1c, 0x20, 0x20, 0x3c, 0x0f, 0x11, 0x1f, 0x02, 0x06, 0x18, 0x20, 0x20, 0x38, 0x08, 0x10, 0x18, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, + }, + + /* 'sneak2', 32x22px */ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xa0, 0x20, 0x40, 0x80, 0xc0, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x41, 0xf0, 0x04, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x02, 0x04, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x40, 0x55, 0x82, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x30, 0x0c, 0x02, 0x05, 0x09, 0x12, 0x1e, 0x04, 0x18, 0x10, 0x08, 0x10, 0x20, 0x28, 0x34, 0x06, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + }}; /* animation */ void animate_luna(void) { - /* jump */ if (isJumping || !showedJump) { - /* clear */ - oled_set_cursor(LUNA_X,LUNA_Y +2); + oled_set_cursor(LUNA_X, LUNA_Y + 2); oled_write(" ", false); - oled_set_cursor(LUNA_X,LUNA_Y -1); + oled_set_cursor(LUNA_X, LUNA_Y - 1); showedJump = true; } else { - /* clear */ - oled_set_cursor(LUNA_X,LUNA_Y -1); + oled_set_cursor(LUNA_X, LUNA_Y - 1); oled_write(" ", false); - oled_set_cursor(LUNA_X,LUNA_Y); + oled_set_cursor(LUNA_X, LUNA_Y); } /* switch frame */ current_frame = (current_frame + 1) % 2; /* current status */ - if(led_usb_state.caps_lock) { + if (led_usb_state.caps_lock) { oled_write_raw_P(bark[abs(1 - current_frame)], ANIM_SIZE); - } else if(isSneaking) { + } else if (isSneaking) { oled_write_raw_P(sneak[abs(1 - current_frame)], ANIM_SIZE); - } else if(current_wpm <= MIN_WALK_SPEED) { + } else if (current_wpm <= MIN_WALK_SPEED) { oled_write_raw_P(sit[abs(1 - current_frame)], ANIM_SIZE); - } else if(current_wpm <= MIN_RUN_SPEED) { + } else if (current_wpm <= MIN_RUN_SPEED) { oled_write_raw_P(walk[abs(1 - current_frame)], ANIM_SIZE); } else { @@ -381,7 +297,7 @@ static void render_luna(int LUNA_X, int LUNA_Y) { } /* animation timer */ - if(timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { + if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { anim_timer = timer_read32(); animate_luna(); } @@ -390,10 +306,9 @@ static void render_luna(int LUNA_X, int LUNA_Y) { if (current_wpm > 0) { oled_on(); anim_sleep = timer_read32(); - } else if(timer_elapsed32(anim_sleep) > OLED_TIMEOUT) { + } else if (timer_elapsed32(anim_sleep) > OLED_TIMEOUT) { oled_off(); } - } /* KEYBOARD PET END */ @@ -403,28 +318,28 @@ static void print_logo_narrow(void) { /* wpm counter */ uint8_t n = get_current_wpm(); - char wpm_str[4]; - oled_set_cursor(0,14); + char wpm_str[4]; + oled_set_cursor(0, 14); wpm_str[3] = '\0'; wpm_str[2] = '0' + n % 10; - wpm_str[1] = '0' + ( n /= 10) % 10; + wpm_str[1] = '0' + (n /= 10) % 10; wpm_str[0] = '0' + n / 10; oled_write(wpm_str, false); - oled_set_cursor(0,15); + oled_set_cursor(0, 15); oled_write(" wpm", false); } static void print_status_narrow(void) { /* Print current mode */ - oled_set_cursor(0,0); + oled_set_cursor(0, 0); if (keymap_config.swap_lctl_lgui) { oled_write_raw_P(mac_logo, sizeof(mac_logo)); } else { oled_write_raw_P(windows_logo, sizeof(windows_logo)); } - oled_set_cursor(0,3); + oled_set_cursor(0, 3); switch (get_highest_layer(default_layer_state)) { case _QWERTY: @@ -437,12 +352,12 @@ static void print_status_narrow(void) { oled_write("UNDEF", false); } - oled_set_cursor(0,5); + oled_set_cursor(0, 5); /* Print current layer */ oled_write("LAYER", false); - oled_set_cursor(0,6); + oled_set_cursor(0, 6); switch (get_highest_layer(layer_state)) { case _QWERTY: @@ -465,25 +380,22 @@ static void print_status_narrow(void) { } /* caps lock */ - oled_set_cursor(0,8); + oled_set_cursor(0, 8); oled_write("CPSLK", led_usb_state.caps_lock); /* KEYBOARD PET RENDER START */ - render_luna(0,13); + render_luna(0, 13); /* KEYBOARD PET RENDER END */ } -oled_rotation_t oled_init_user(oled_rotation_t rotation) { - return OLED_ROTATION_270; -} - -void oled_task_user(void) { +oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; } +bool oled_task_user(void) { /* KEYBOARD PET VARIABLES START */ - current_wpm = get_current_wpm(); + current_wpm = get_current_wpm(); led_usb_state = host_keyboard_led_state(); /* KEYBOARD PET VARIABLES END */ @@ -493,6 +405,7 @@ void oled_task_user(void) { } else { print_logo_narrow(); } + return false; } #endif @@ -554,7 +467,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } break; case KC_NXTWD: - if (record->event.pressed) { + if (record->event.pressed) { if (keymap_config.swap_lctl_lgui) { register_mods(mod_config(MOD_LALT)); register_code(KC_RIGHT); @@ -575,7 +488,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case KC_LSTRT: if (record->event.pressed) { if (keymap_config.swap_lctl_lgui) { - /* CMD-arrow on Mac, but we have CTL and GUI swapped */ + /* CMD-arrow on Mac, but we have CTL and GUI swapped */ register_mods(mod_config(MOD_LCTL)); register_code(KC_LEFT); } else { @@ -655,7 +568,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; - /* Smart Backspace Delete */ + /* Smart Backspace Delete */ case KC_RSFT: case KC_LSFT: @@ -679,7 +592,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; - /* LAYER */ + /* LAYER */ case KC_LAYER: if (record->event.pressed) { @@ -687,7 +600,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (record->event.pressed) { if (get_highest_layer(default_layer_state) == _QWERTY) { set_single_persistent_default_layer(_GAMING); - } else if(get_highest_layer(default_layer_state) == _GAMING) { + } else if (get_highest_layer(default_layer_state) == _GAMING) { set_single_persistent_default_layer(_QWERTY); } } @@ -701,7 +614,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; - /* KEYBOARD PET STATUS START */ + /* KEYBOARD PET STATUS START */ case KC_LCTL: case KC_RCTL: @@ -713,30 +626,30 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { break; case KC_SPC: if (record->event.pressed) { - isJumping = true; + isJumping = true; showedJump = false; } else { isJumping = false; } break; - /* KEYBOARD PET STATUS END */ + /* KEYBOARD PET STATUS END */ } return true; } #ifdef ENCODER_ENABLE -void encoder_update_user(uint8_t index, bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { if (index == 0) { if (clockwise) { - if(shift_held) { + if (shift_held) { tap_code(KC_MNXT); } else { tap_code(KC_RIGHT); } } else { - if(shift_held) { + if (shift_held) { tap_code(KC_MPRV); } else { tap_code(KC_LEFT); @@ -744,19 +657,20 @@ void encoder_update_user(uint8_t index, bool clockwise) { } } else if (index == 1) { if (clockwise) { - if(shift_held) { + if (shift_held) { tap_code(KC_VOLU); } else { tap_code(KC_DOWN); } } else { - if(shift_held) { + if (shift_held) { tap_code(KC_VOLD); } else { tap_code(KC_UP); } } } + return true; } #endif diff --git a/keyboards/sofle/keymaps/helltm/rules.mk b/keyboards/sofle/keymaps/helltm/rules.mk index 9601ec40bcd2..b905bd94fcde 100644 --- a/keyboards/sofle/keymaps/helltm/rules.mk +++ b/keyboards/sofle/keymaps/helltm/rules.mk @@ -1,4 +1,5 @@ -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 ENCODER_ENABLE = yes CONSOLE_ENABLE = yes EXTRAKEY_ENABLE = yes diff --git a/keyboards/sofle/keymaps/j4ckofalltrades/encoder.c b/keyboards/sofle/keymaps/j4ckofalltrades/encoder.c new file mode 100644 index 000000000000..bd328739ed4e --- /dev/null +++ b/keyboards/sofle/keymaps/j4ckofalltrades/encoder.c @@ -0,0 +1,37 @@ +/* Copyright 2021 Jordan Duabe + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifdef ENCODER_ENABLE +# include QMK_KEYBOARD_H + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + if (clockwise) { + tap_code_delay(KC_VOLU, 10); + } else { + tap_code_delay(KC_VOLD, 10); + } + } else if (index == 1) { + if (clockwise) { + tap_code(KC_PGDOWN); + } else { + tap_code(KC_PGUP); + } + } + return true; +} + +#endif diff --git a/keyboards/sofle/keymaps/j4ckofalltrades/keymap.c b/keyboards/sofle/keymaps/j4ckofalltrades/keymap.c new file mode 100644 index 000000000000..e7d03161c380 --- /dev/null +++ b/keyboards/sofle/keymaps/j4ckofalltrades/keymap.c @@ -0,0 +1,85 @@ +/* Copyright 2021 Jordan Duabe + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* + * QWERTY + * ,-----------------------------------------. ,-----------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bspc | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Esc | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' | + * |------+------+------+------+------+------| TO(2) | | TO(1) |------+------+------+------+------+------| + * |LShift| Z | X | C | V | B |-------| |-------| N | M | , | . | / |RShift| + * `-----------------------------------------/ / \ \-----------------------------------------' + * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI | + * | | | | |/ / \ \ | | | | | + * `----------------------------------' '------''---------------------------' + */ + +[0] = LAYOUT( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + MT(MOD_LCTL, KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, TO(2), TO(1), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LGUI, KC_LALT, KC_LCTRL, MO(2), KC_ENT, KC_SPC, MO(1), KC_RCTRL, KC_RALT, KC_RGUI +), +/* RAISE + * ,-----------------------------------------. ,-----------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Tab | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | F12 | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Esc | ! | @ | # | $ | % |-------. ,-------| ^ | & | * | ( | ) | | | + * |------+------+------+------+------+------| TO(2) | | TO(1) |------+------+------+------+------+------| + * |LShift| = | - | + | { | } |-------| |-------| [ | ] | ; | : | \ | Shift| + * `-----------------------------------------/ / \ \-----------------------------------------' + * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI | + * | | | | |/ / \ \ | | | | | + * `----------------------------------' '------''---------------------------' + */ +[1] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_F12, + _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE, + _______, KC_EQL, KC_MINS, KC_PLUS, KC_LCBR, KC_RCBR, _______, _______, KC_LBRC, KC_RBRC, KC_SCLN, KC_COLN, KC_BSLS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), +/* LOWER + * ,----------------------------------------. ,-----------------------------------------. + * | | Pscr | Slck |Pause | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Tab | Ins | Home | PgUp | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Esc | Del | End | PgDn | | |-------. ,-------| Left | Down | Up | Right | | | + * |------+------+------+------+------+------| TO(2) | | TO(1) |------+------+------+------+------+------| + * |Shift | Undo | Cut | Copy | Paste| |-------| |-------| | | | | | | + * `-----------------------------------------/ / \ \-----------------------------------------' + * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI | + * | | | | |/ / \ \ | | | | | + * `----------------------------------' '------''---------------------------' + */ +[2] = LAYOUT( + _______, KC_PSCR, KC_SLCK, KC_PAUSE, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_INS, KC_HOME, KC_PGUP, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______, _______, + _______, KC_DEL, KC_END, KC_PGDN, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, XXXXXXX, XXXXXXX, + _______, KC_UNDO, KC_CUT, KC_COPY, KC_PASTE, XXXXXXX, _______, _______, XXXXXXX, _______, XXXXXXX, _______, XXXXXXX, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +) +}; diff --git a/keyboards/sofle/keymaps/j4ckofalltrades/oled.c b/keyboards/sofle/keymaps/j4ckofalltrades/oled.c new file mode 100644 index 000000000000..de561bd0fa08 --- /dev/null +++ b/keyboards/sofle/keymaps/j4ckofalltrades/oled.c @@ -0,0 +1,77 @@ +/* Copyright 2021 Jordan Duabe + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifdef OLED_ENABLE +# include QMK_KEYBOARD_H + +static void render_logo(void) { + static const char PROGMEM qmk_logo[] = { + 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, + 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, + 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0 + }; + + oled_write_P(qmk_logo, false); +} + +static void print_status_narrow(void) { + oled_write_P(PSTR("Sofle"), false); + oled_write_P(PSTR("\n\n\n"), false); + // Print current mode + switch (get_highest_layer(layer_state)) { + case 0: + oled_write_ln_P(PSTR("Qwrt"), false); + break; + default: + oled_write_P(PSTR("Mod\n"), false); + break; + } + oled_write_P(PSTR("\n\n"), false); + // Print current layer + oled_write_ln_P(PSTR("LAYER"), false); + switch (get_highest_layer(layer_state)) { + case 0: + oled_write_P(PSTR("Base\n"), false); + break; + case 1: + oled_write_P(PSTR("Raise"), false); + break; + case 2: + oled_write_P(PSTR("Lower"), false); + break; + default: + oled_write_ln_P(PSTR("Undef"), false); + } + oled_write_P(PSTR("\n\n"), false); +} + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + if (is_keyboard_master()) { + return OLED_ROTATION_270; + } + return rotation; +} + +bool oled_task_user(void) { + if (is_keyboard_master()) { + print_status_narrow(); + } else { + render_logo(); + } + return false; +} + +#endif diff --git a/keyboards/sofle/keymaps/j4ckofalltrades/readme.md b/keyboards/sofle/keymaps/j4ckofalltrades/readme.md new file mode 100644 index 000000000000..bb232ef6256d --- /dev/null +++ b/keyboards/sofle/keymaps/j4ckofalltrades/readme.md @@ -0,0 +1,19 @@ +![SofleKeyboard custom keymap](https://raw.githubusercontent.com/j4ckofalltrades/keebs/master/sofle/assets/soflekeyboard.png) + +# Via-compatible custom keymap for Sofle + +Modified version of default Via-compatible keymap with focus on adding a standard navigation cluster layer plus some +Vim-inspired features e.g. soft escape (Esc when held, Ctrl when tapped), using 'h', 'j', 'k', 'l' as arrow keys. + +## Layout + +View in [Keyboard Layout Editor](http://www.keyboard-layout-editor.com/#/gists/a1f6519e723ad81ca151741b53a28b80) + +## Features + +- Via support +- Mode for soft escape (`Esc` when tapped, `Ctrl` when held) +- Vim-style navigation (`h` `j` `k` `l` as arrow keys) +- Mode for standard navigation cluster +- Toggling between layers when encoders are pressed +- Left encoder controls `VOLUP`/`VOLDOWN`. Right encoder `PGUP`/`PGDN`. diff --git a/keyboards/sofle/keymaps/j4ckofalltrades/rules.mk b/keyboards/sofle/keymaps/j4ckofalltrades/rules.mk new file mode 100644 index 000000000000..dc95fd5b7770 --- /dev/null +++ b/keyboards/sofle/keymaps/j4ckofalltrades/rules.mk @@ -0,0 +1,6 @@ +CONSOLE_ENABLE = no +EXTRAKEY_ENABLE = yes +VIA_ENABLE = yes +LTO_ENABLE = yes + +SRC += oled.c encoder.c diff --git a/keyboards/sofle/keymaps/killmaster/config.h b/keyboards/sofle/keymaps/killmaster/config.h new file mode 100644 index 000000000000..2e6abe84e324 --- /dev/null +++ b/keyboards/sofle/keymaps/killmaster/config.h @@ -0,0 +1,64 @@ +/* Copyright 2021 Carlos Martins + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +/* The way how "handedness" is decided (which half is which), +see https://docs.qmk.fm/#/feature_split_keyboard?id=setting-handedness +for more options. +*/ + +#define RGB_DI_PIN D3 + +#ifdef RGB_MATRIX_ENABLE + +#define RGBLED_NUM 72 +#define DRIVER_LED_TOTAL RGBLED_NUM +#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash. +#define RGB_MATRIX_HUE_STEP 8 +#define RGB_MATRIX_SAT_STEP 8 +#define RGB_MATRIX_VAL_STEP 8 +#define RGB_MATRIX_SPD_STEP 10 +#define RGB_MATRIX_KEYPRESSES +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define RGB_MATRIX_SPLIT {36,36} +#define SPLIT_TRANSPORT_MIRROR + +#endif + +#ifdef RGBLIGHT_ENABLE +#define RGBLIGHT_SPLIT +#define RGBLED_NUM 70 +#define RGB_SPLIT {36,36} +#define RGBLIGHT_LIMIT_VAL 120 +// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +// /*== all animations enable ==*/ +// #define RGBLIGHT_ANIMATIONS +// /*== or choose animations ==*/ +// #define RGBLIGHT_EFFECT_BREATHING + //#define RGBLIGHT_EFFECT_RAINBOW_MOOD + //#define RGBLIGHT_EFFECT_RAINBOW_SWIRL +// #define RGBLIGHT_EFFECT_SNAKE +// #define RGBLIGHT_EFFECT_KNIGHT +// #define RGBLIGHT_EFFECT_CHRISTMAS + #define RGBLIGHT_EFFECT_STATIC_GRADIENT + #define RGBLIGHT_EFFECT_RGB_TEST +// #define RGBLIGHT_EFFECT_ALTERNATING +#endif + +#define MEDIA_KEY_DELAY 2 + +#define USB_POLLING_INTERVAL_MS 1 +#define QMK_KEYS_PER_SCAN 12 diff --git a/keyboards/sofle/keymaps/killmaster/keymap.c b/keyboards/sofle/keymaps/killmaster/keymap.c new file mode 100644 index 000000000000..71db0fc8536e --- /dev/null +++ b/keyboards/sofle/keymaps/killmaster/keymap.c @@ -0,0 +1,404 @@ +/* Copyright 2021 Carlos Martins + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +#include + +enum sofle_layers { + /* _M_XYZ = Mac Os, _W_XYZ = Win/Linux */ + _QWERTY, + _LOWER, + _RAISE, + _ADJUST, +}; + +enum custom_keycodes { + KC_QWERTY = SAFE_RANGE, + KC_LOWER, + KC_RAISE, + KC_ADJUST, + KC_PRVWD, + KC_NXTWD, + KC_LSTRT, + KC_LEND, + KC_DLINE +}; + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* + * QWERTY + * ,-----------------------------------------. ,-----------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | ESC | Q | W | E | R | T | | Y | U | I | O | P | Bspc | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Tab | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' | + * |------+------+------+------+------+------| | | |------+------+------+------+------+------| + * |LShift| Z | X | C | V | B |-------| |-------| N | M | , | . | / |RShift| + * `-----------------------------------------/ / \ \-----------------------------------------' + * | LGUI | LAlt | LCTR |LOWER | /Space / \Enter \ |RAISE | RCTR | RAlt | RGUI | + * | | | | |/ / \ \ | | | | | + * `----------------------------------' '------''---------------------------' + */ + +[_QWERTY] = LAYOUT( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, KC_MPLY,KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, + KC_LGUI,KC_LALT,KC_LCTRL, KC_LOWER, KC_SPC, KC_ENT, KC_RAISE, KC_RCTRL, KC_RALT, KC_RGUI +), +/* LOWER + * ,-----------------------------------------. ,-----------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | F12 | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Tab | ! | @ | # | $ | % |-------. ,-------| ^ | & | * | ( | ) | | | + * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------| + * | Shift| = | - | + | { | } |-------| |-------| [ | ] | ; | : | \ | Shift| + * `-----------------------------------------/ / \ \-----------------------------------------' + * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI | + * | | | | |/ / \ \ | | | | | + * `----------------------------------' '------''---------------------------' + */ +[_LOWER] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_F12, + _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE, + _______, KC_EQL, KC_MINS, KC_PLUS, KC_LCBR, KC_RCBR, _______, _______, KC_LBRC, KC_RBRC, KC_SCLN, KC_COLN, KC_BSLS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), +/* RAISE + * ,----------------------------------------. ,-----------------------------------------. + * | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Esc | Ins | Pscr | Menu | |RGBTog| | | PWrd | Up | NWrd | DLine| Bspc | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Tab | LAt | LCtl |LShift| | Caps |-------. ,-------| | Left | Down | Rigth| Del | Bspc | + * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------| + * |Shift | Undo | Cut | Copy | Paste| |-------| |-------| | LStr | | LEnd | | Shift| + * `-----------------------------------------/ / \ \-----------------------------------------' + * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI | + * | | | | |/ / \ \ | | | | | + * `----------------------------------' '------''---------------------------' + */ +[_RAISE] = LAYOUT( + _______, _______ , _______ , _______ , RGB_RMOD , RGB_MOD, _______, _______ , _______, _______ , _______ ,_______, + _______, KC_INS, KC_PSCR, KC_APP, XXXXXXX, RGB_TOG, KC_PGUP, KC_PRVWD, KC_UP, KC_NXTWD,KC_DLINE, KC_BSPC, + _______, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, KC_CAPS, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_DEL, KC_BSPC, + _______,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, XXXXXXX, KC_LSTRT, XXXXXXX, KC_LEND, XXXXXXX, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), +/* ADJUST + * ,-----------------------------------------. ,-----------------------------------------. + * | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | RESET| |QWERTY|COLEMAK| | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | |MACWIN| | | |-------. ,-------| | VOLDO| MUTE | VOLUP| | | + * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------| + * | | | | | | |-------| |-------| | PREV | PLAY | NEXT | | | + * `-----------------------------------------/ / \ \-----------------------------------------' + * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI | + * | | | | |/ / \ \ | | | | | + * `----------------------------------' '------''---------------------------' + */ + [_ADJUST] = LAYOUT( + XXXXXXX , XXXXXXX, XXXXXXX , XXXXXXX , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + RESET , XXXXXXX, KC_QWERTY, XXXXXXX , CG_TOGG,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX , XXXXXXX,CG_TOGG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD, KC_MUTE, KC_VOLU, XXXXXXX, XXXXXXX, + XXXXXXX , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + +#ifdef OLED_ENABLE + +static void render_logo(void) { + static const char PROGMEM bananas_logo[] = { + // 'killmaster_bananas', 128x32px + 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xe0, 0x02, 0x0e, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, + 0x00, 0x00, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x40, 0x40, 0xd8, 0xc8, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x08, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0xf8, 0xf8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x40, 0x40, 0xc0, 0x80, 0x40, 0xc0, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0xc0, 0x40, 0x00, 0x00, 0x40, 0x40, 0xf0, + 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x00, 0x00, 0x00, + 0x40, 0xc0, 0x80, 0x40, 0x40, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x0f, 0x3f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfc, 0xf8, 0xf0, 0xf0, + 0xe0, 0xc0, 0xc0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, + 0x02, 0x07, 0x0d, 0x10, 0x20, 0x20, 0x00, 0x00, 0x20, 0x20, 0x3f, 0x3f, 0x20, 0x20, 0x00, 0x00, + 0x00, 0x00, 0x1f, 0x3f, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x3f, 0x20, 0x20, 0x20, + 0x00, 0x00, 0x3f, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x1c, 0x36, 0x22, 0x22, 0x22, + 0x1f, 0x20, 0x00, 0x00, 0x10, 0x23, 0x22, 0x22, 0x26, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x1f, + 0x30, 0x20, 0x20, 0x20, 0x00, 0x00, 0x0f, 0x1f, 0x32, 0x22, 0x22, 0x32, 0x23, 0x00, 0x00, 0x00, + 0x20, 0x3f, 0x21, 0x20, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x0f, 0x0f, 0x0f, 0x1f, 0x1f, + 0x1f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3e, 0x3e, 0x1c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + oled_write_raw_P(bananas_logo, sizeof(bananas_logo)); +} + +static void print_status_narrow(void) { + // Print current mode + oled_write_P(PSTR("Sofle"), false); + oled_write_P(PSTR("\n\n\n"), false); + switch (get_highest_layer(default_layer_state)) { + case _QWERTY: + oled_write_ln_P(PSTR("QWERT"), false); + break; + default: + oled_write_P(PSTR("Undef"), false); + } + oled_write_P(PSTR("\n\n"), false); + // Print current layer + oled_write_ln_P(PSTR("Layer"), false); + switch (get_highest_layer(layer_state)) { + case _QWERTY: + oled_write_P(PSTR("Base\n"), false); + break; + case _RAISE: + oled_write_P(PSTR("Raise"), false); + break; + case _LOWER: + oled_write_P(PSTR("Lower"), false); + break; + case _ADJUST: + oled_write_P(PSTR("Adj\n"), false); + break; + default: + oled_write_ln_P(PSTR("Undef"), false); + } + oled_write_P(PSTR("\n\n"), false); +} + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + if (is_keyboard_master()) { + return OLED_ROTATION_270; + } + else { + return OLED_ROTATION_180; + } + return rotation; +} + +bool oled_task_user(void) { + if (is_keyboard_master()) { + print_status_narrow(); + } else { + render_logo(); + } + return false; +} + + + +#endif // OLED_ENABLE + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_QWERTY: + if (record->event.pressed) { + set_single_persistent_default_layer(_QWERTY); + } + return false; + case KC_LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + case KC_RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + case KC_ADJUST: + if (record->event.pressed) { + layer_on(_ADJUST); + } else { + layer_off(_ADJUST); + } + return false; + case KC_PRVWD: + if (record->event.pressed) { + if (keymap_config.swap_lctl_lgui) { + register_mods(mod_config(MOD_LALT)); + register_code(KC_LEFT); + } else { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_LEFT); + } + } else { + if (keymap_config.swap_lctl_lgui) { + unregister_mods(mod_config(MOD_LALT)); + unregister_code(KC_LEFT); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_LEFT); + } + } + break; + case KC_NXTWD: + if (record->event.pressed) { + if (keymap_config.swap_lctl_lgui) { + register_mods(mod_config(MOD_LALT)); + register_code(KC_RIGHT); + } else { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_RIGHT); + } + } else { + if (keymap_config.swap_lctl_lgui) { + unregister_mods(mod_config(MOD_LALT)); + unregister_code(KC_RIGHT); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_RIGHT); + } + } + break; + case KC_LSTRT: + if (record->event.pressed) { + if (keymap_config.swap_lctl_lgui) { + //CMD-arrow on Mac, but we have CTL and GUI swapped + register_mods(mod_config(MOD_LCTL)); + register_code(KC_LEFT); + } else { + register_code(KC_HOME); + } + } else { + if (keymap_config.swap_lctl_lgui) { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_LEFT); + } else { + unregister_code(KC_HOME); + } + } + break; + case KC_LEND: + if (record->event.pressed) { + if (keymap_config.swap_lctl_lgui) { + //CMD-arrow on Mac, but we have CTL and GUI swapped + register_mods(mod_config(MOD_LCTL)); + register_code(KC_RIGHT); + } else { + register_code(KC_END); + } + } else { + if (keymap_config.swap_lctl_lgui) { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_RIGHT); + } else { + unregister_code(KC_END); + } + } + break; + case KC_DLINE: + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_code(KC_BSPC); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_code(KC_BSPC); + } + break; + } + return true; +} + +#ifdef ENCODER_ENABLE + +bool encoder_update_user(uint8_t index, bool clockwise) { + uint8_t temp_mod = get_mods(); + uint8_t temp_osm = get_oneshot_mods(); + bool is_ctrl = (temp_mod | temp_osm) & MOD_MASK_CTRL; + bool is_shift = (temp_mod | temp_osm) & MOD_MASK_SHIFT; + + if (is_shift) { + if (index == 0) { /* First encoder */ + if (clockwise) { + rgb_matrix_increase_hue(); + } else { + rgb_matrix_decrease_hue(); + } + } else if (index == 1) { /* Second encoder */ + if (clockwise) { + rgb_matrix_decrease_sat(); + } else { + rgb_matrix_increase_sat(); + } + } + } else if (is_ctrl) { + if (index == 0) { /* First encoder */ + if (clockwise) { + rgb_matrix_increase_val(); + } else { + rgb_matrix_decrease_val(); + } + } else if (index == 1) { /* Second encoder */ + if (clockwise) { + rgb_matrix_increase_speed(); + } else { + rgb_matrix_decrease_speed(); + } + } + } else { + if (index == 1) { /* First encoder */ + if (clockwise) { + tap_code(KC_PGUP); + // tap_code(KC_MS_WH_UP); + } else { + tap_code(KC_PGDOWN); + // tap_code(KC_MS_WH_DOWN); + } + } else if (index == 0) { /* Second encoder */ + uint16_t mapped_code = 0; + if (clockwise) { + mapped_code = KC_VOLD; + } else { + mapped_code = KC_VOLU; + } + tap_code_delay(mapped_code, MEDIA_KEY_DELAY); + } + } + return true; +} + +#endif diff --git a/keyboards/sofle/keymaps/killmaster/readme.md b/keyboards/sofle/keymaps/killmaster/readme.md new file mode 100644 index 000000000000..6d6dea228c96 --- /dev/null +++ b/keyboards/sofle/keymaps/killmaster/readme.md @@ -0,0 +1,19 @@ +![SofleKeyboard default keymap](https://github.com/josefadamcik/SofleKeyboard/raw/master/Images/soflekeyboard.png) +![SofleKeyboard adjust layer](https://github.com/josefadamcik/SofleKeyboard/raw/master/Images/soflekeyboard_layout_adjust.png) + + +# Default keymap for Sofle Keyboard + +Layout in [Keyboard Layout Editor](http://www.keyboard-layout-editor.com/#/gists/76efb423a46cbbea75465cb468eef7ff) and [adjust layer](http://www.keyboard-layout-editor.com/#/gists/4bcf66f922cfd54da20ba04905d56bd4) + + +Features: + +- Symmetric modifiers (CMD/Super, Alt/Opt, Ctrl, Shift) +- Various modes, can be switched (using Adjust layer and the selected one is stored in EEPROM. +- Modes for Qwerty and Colemak support +- Modes for Mac vs Linux/Win support -> different order of modifiers and different action shortcuts on the "UPPER" layer (the red one in the image). Designed to simplify transtions when switching between operating systems often. +- The OLED on master half shows selected mode and caps lock state and is rotated. +- Left encoder controls volume up/down/mute. Right encoder PGUP/PGDOWN. + + diff --git a/keyboards/sofle/keymaps/killmaster/rules.mk b/keyboards/sofle/keymaps/killmaster/rules.mk new file mode 100644 index 000000000000..38d6114506ec --- /dev/null +++ b/keyboards/sofle/keymaps/killmaster/rules.mk @@ -0,0 +1,4 @@ +EXTRAKEY_ENABLE = yes +LTO_ENABLE = yes +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = WS2812 diff --git a/keyboards/sofle/keymaps/manna-harbour_miryoku/config.h b/keyboards/sofle/keymaps/manna-harbour_miryoku/config.h new file mode 100644 index 000000000000..8372e1016849 --- /dev/null +++ b/keyboards/sofle/keymaps/manna-harbour_miryoku/config.h @@ -0,0 +1,23 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . + +#pragma once + +#define XXX KC_NO + +#define LAYOUT_miryoku(\ + 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,\ + N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +LAYOUT(\ +XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,\ +XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX,\ +XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX,\ +XXX, K20, K21, K22, K23, K24, XXX, XXX, K25, K26, K27, K28, K29, XXX,\ + XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX\ +) diff --git a/keyboards/sofle/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/sofle/keymaps/manna-harbour_miryoku/keymap.c new file mode 100644 index 000000000000..7c5717a0fee0 --- /dev/null +++ b/keyboards/sofle/keymaps/manna-harbour_miryoku/keymap.c @@ -0,0 +1,5 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/keyboards/sofle/keymaps/rgb_default/config.h b/keyboards/sofle/keymaps/rgb_default/config.h index 7d597d991a15..c34da8382b9e 100644 --- a/keyboards/sofle/keymaps/rgb_default/config.h +++ b/keyboards/sofle/keymaps/rgb_default/config.h @@ -1,18 +1,18 @@ /* Copyright 2021 Dane Evans - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . -*/ + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . +*/ #pragma once @@ -29,7 +29,7 @@ #define CUSTOM_FONT -#define CUSTOM_LAYER_READ //if you remove this it causes issues - needs better guarding +#define CUSTOM_LAYER_READ //if you remove this it causes issues - needs better guarding #define TAPPING_FORCE_HOLD @@ -56,7 +56,7 @@ #ifdef RGBLIGHT_ENABLE #undef RGBLED_NUM - + //#define RGBLIGHT_ANIMATIONS //#define RGBLIGHT_EFFECT_BREATHING #define RGBLIGHT_EFFECT_RAINBOW_MOOD @@ -68,11 +68,11 @@ //#define RGBLIGHT_EFFECT_RGB_TEST //#define RGBLIGHT_EFFECT_ALTERNATING //#define RGBLIGHT_EFFECT_TWINKLE - + #define RGBLED_NUM 70 //#define RGBLED_SPLIT - #define RGBLED_SPLIT { 35, 35 } // haven't figured out how to use this yet - + #define RGBLED_SPLIT { 35, 35 } // haven't figured out how to use this yet + //#define RGBLED_NUM 30 #define RGBLIGHT_LIMIT_VAL 120 #define RGBLIGHT_HUE_STEP 10 @@ -84,11 +84,11 @@ # define RGB_MATRIX_KEYPRESSES // reacts to keypresses // # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses) // # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended # define RGB_MATRIX_FRAMEBUFFER_EFFECTS // # define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness) // # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness) -# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash. +# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash. #define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_GRADIENT_LEFT_RIGHT @@ -99,32 +99,32 @@ /* Disable the animations you don't want/need. You will need to disable a good number of these * * because they take up a lot of space. Disable until you can successfully compile your firmware. */ -// # define DISABLE_RGB_MATRIX_ALPHAS_MODS -// # define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -// # define DISABLE_RGB_MATRIX_BREATHING -// # define DISABLE_RGB_MATRIX_CYCLE_ALL -// # define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT -// # define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN -// # define DISABLE_RGB_MATRIX_CYCLE_OUT_IN -// # define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL -// # define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON -// # define DISABLE_RGB_MATRIX_DUAL_BEACON -// # define DISABLE_RGB_MATRIX_RAINBOW_BEACON -// # define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS -// # define DISABLE_RGB_MATRIX_RAINDROPS -// # define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS -// # define DISABLE_RGB_MATRIX_TYPING_HEATMAP -// # define DISABLE_RGB_MATRIX_DIGITAL_RAIN -// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE -// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -// # define DISABLE_RGB_MATRIX_SPLASH -// # define DISABLE_RGB_MATRIX_MULTISPLASH -// # define DISABLE_RGB_MATRIX_SOLID_SPLASH -// # define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH -#endif \ No newline at end of file + // # undef ENABLE_RGB_MATRIX_ALPHAS_MODS + // # undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN + // # undef ENABLE_RGB_MATRIX_BREATHING + // # undef ENABLE_RGB_MATRIX_CYCLE_ALL + // # undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT + // # undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN + // # undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN + // # undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL + // # undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON + // # undef ENABLE_RGB_MATRIX_DUAL_BEACON + // # undef ENABLE_RGB_MATRIX_RAINBOW_BEACON + // # undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS + // # undef ENABLE_RGB_MATRIX_RAINDROPS + // # undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS + // # undef ENABLE_RGB_MATRIX_TYPING_HEATMAP + // # undef ENABLE_RGB_MATRIX_DIGITAL_RAIN + // # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE + // # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE + // # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE + // # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE + // # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS + // # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS + // # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS + // # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS + // # undef ENABLE_RGB_MATRIX_SPLASH + // # undef ENABLE_RGB_MATRIX_MULTISPLASH + // # undef ENABLE_RGB_MATRIX_SOLID_SPLASH + // # undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH +#endif diff --git a/keyboards/sofle/keymaps/rgb_default/keymap.c b/keyboards/sofle/keymaps/rgb_default/keymap.c index bd0993c99490..30f374f29640 100644 --- a/keyboards/sofle/keymaps/rgb_default/keymap.c +++ b/keyboards/sofle/keymaps/rgb_default/keymap.c @@ -256,9 +256,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), /* NUMPAD * ,-----------------------------------------. ,-----------------------------------------. - * | trans| | | | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * | trans| | | | | | | |NumLck| | | | | * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | ` | | | | | | | | 7 | 8 | 9 | * | F12 | + * | ` | | | | | | | ^ | 7 | 8 | 9 | * | | * |------+------+------+------+------+------| |------+------+------+------+------+------| * | trans| | | | | |-------. ,-------| - | 4 | 5 | 6 | | | | * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------| @@ -270,27 +270,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_NUMPAD] = LAYOUT( //,------------------------------------------------. ,---------------------------------------------------. - _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,XXXXXXX, XXXXXXX, + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, KC_NLCK, XXXXXXX, XXXXXXX,XXXXXXX, XXXXXXX, //|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------| - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_CIRC, KC_P7, KC_P8, KC_P9, KC_ASTR, _______, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_CIRC, KC_P7, KC_P8, KC_P9, KC_ASTR, XXXXXXX, //|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------| XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_P4, KC_P5, KC_P6, KC_EQL, KC_PIPE, //|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------| - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,_______, _______,KC_PLUS, KC_P1, KC_P2, KC_P3, KC_SLSH, _______, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,_______, _______,KC_PLUS, KC_P1, KC_P2, KC_P3, KC_SLSH, _______, //|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------| - _______, OSM(MOD_MEH), _______, _______, _______, _______, _______, KC_P0, KC_PDOT, _______ + _______, OSM(MOD_MEH), _______, _______, _______, _______, _______, KC_P0, KC_PDOT, _______ // \--------+--------+--------+---------+-------| |--------+---------+--------+---------+-------/ ), /* SWITCH * ,-----------------------------------------. ,-----------------------------------------. - * | cole | qwer | low |raise | adj |numpd | | | F7 | F8 | F9 | F10 | F11 | + * | | | | | | | | | | | | | | * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | ` | | | | | | | | 7 | 8 | 9 | * | F12 | + * | qwer | cole |col_dh| low | raise| adj | |numpad| | | | |RESET | * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | trans| | | | | |-------. ,-------| - | 4 | 5 | 6 | | | | + * | | | | | | |-------. ,-------| | | | | |EEP_RST| * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------| - * | trans| | | | | |-------| |-------| + | 1 | 2 | 3 | \ | Shift| + * | SLEEP| | | | | |-------| |-------| | | | | | | * `-----------------------------------------/ / \ \-----------------------------------------' * | Bspc | WIN |LOWER | Enter| /Space / \Enter \ |SPACE | 0 | . | RAlt | * | | | | |/ / \ \ | | | | | @@ -301,13 +301,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //,------------------------------------------------. ,---------------------------------------------------. _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,XXXXXXX, XXXXXXX, //|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------| - TO(0), TO(1), TO(2), TO(3), TO(4), TO(5), KC_NO, TO(7), KC_NO, KC_NO, KC_NO, RESET, + TO(0), TO(1), TO(2), TO(3), TO(4), TO(5), TO(6), KC_NO, KC_NO, KC_NO, KC_NO, RESET, //|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------| - KC_NO, KC_NO, KC_BRIU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, EEP_RST, + KC_NO, KC_NO, KC_BRIU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, EEP_RST, //|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------| - KC_SYSTEM_SLEEP,KC_NO,KC_BRID,KC_NO,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_SYSTEM_SLEEP,KC_NO,KC_NO,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, //|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------| - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO // \--------+--------+--------+---------+-------| |--------+---------+--------+---------+-------/ ), @@ -393,7 +393,7 @@ void keyboard_post_init_user(void) { } #endif -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE static void render_logo(void) { static const char PROGMEM qmk_logo[] = { @@ -465,12 +465,13 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) { return rotation; } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { print_status_narrow(); } else { render_logo(); } + return false; } #endif diff --git a/keyboards/sofle/keymaps/rgb_default/rules.mk b/keyboards/sofle/keymaps/rgb_default/rules.mk index 3dffb03689dc..860c2122da25 100644 --- a/keyboards/sofle/keymaps/rgb_default/rules.mk +++ b/keyboards/sofle/keymaps/rgb_default/rules.mk @@ -1,7 +1,8 @@ MOUSEKEY_ENABLE = yes EXTRAKEY_ENABLE = yes -CONSOLE_ENABLE = yes +CONSOLE_ENABLE = no RGBLIGHT_ENABLE = yes ENCODER_ENABLE = yes LTO_ENABLE = yes -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/sofle/keymaps/via/config.h b/keyboards/sofle/keymaps/via/config.h index 32139d8b1c22..77ce4f259018 100644 --- a/keyboards/sofle/keymaps/via/config.h +++ b/keyboards/sofle/keymaps/via/config.h @@ -1,19 +1,19 @@ - /* Copyright 2020 Josef Adamcik - * Modification for VIA support and RGB underglow by Jens Bonk-Wiltfang - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ +/* Copyright 2020 Josef Adamcik + * Modification for VIA support and RGB underglow by Jens Bonk-Wiltfang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ #pragma once @@ -22,8 +22,21 @@ see https://docs.qmk.fm/#/feature_split_keyboard?id=setting-handedness for more options. */ -//Add RGB underglow -#define RGB_DI_PIN D3 -#define RGBLED_NUM 14 -#define RGBLED_SPLIT {7,7} -#define RGBLIGHT_ANIMATIONS \ No newline at end of file +#if defined(KEYBOARD_sofle_rev1) +// Add RGB underglow and top facing lighting +# define RGB_DI_PIN D3 +# define RGBLED_NUM 70 +# define RGBLED_SPLIT \ + { 36, 36 } +# ifdef RGB_MATRIX_ENABLE +# define DRIVER_LED_TOTAL RGBLED_NUM +# define RGB_MATRIX_SPLIT RGBLED_SPLIT +# define SPLIT_TRANSPORT_MIRROR +# else +# define RGBLIGHT_ANIMATIONS +# define RGBLIGHT_LIMIT_VAL 120 +# define RGBLIGHT_HUE_STEP 10 +# define RGBLIGHT_SAT_STEP 17 +# define RGBLIGHT_VAL_STEP 17 +# endif +#endif diff --git a/keyboards/sofle/keymaps/via/oled.c b/keyboards/sofle/keymaps/via/oled.c index 06839da17090..74f06cedc54e 100644 --- a/keyboards/sofle/keymaps/via/oled.c +++ b/keyboards/sofle/keymaps/via/oled.c @@ -1,23 +1,23 @@ /* Copyright 2020 Josef Adamcik * Modification for VIA support and RGB underglow by Jens Bonk-Wiltfang - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ //Sets up what the OLED screens display. -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE static void render_logo(void) { static const char PROGMEM qmk_logo[] = { @@ -73,12 +73,13 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) { return rotation; } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { print_status_narrow(); } else { render_logo(); } + return false; } -#endif \ No newline at end of file +#endif diff --git a/keyboards/sofle/keymaps/via/rules.mk b/keyboards/sofle/keymaps/via/rules.mk index f482499d4b3f..db254512afc1 100644 --- a/keyboards/sofle/keymaps/via/rules.mk +++ b/keyboards/sofle/keymaps/via/rules.mk @@ -1,7 +1,8 @@ -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 ENCODER_ENABLE = yes CONSOLE_ENABLE = no EXTRAKEY_ENABLE = yes VIA_ENABLE = yes LTO_ENABLE = yes -RGBLIGHT_ENABLE = yes \ No newline at end of file +RGBLIGHT_ENABLE = yes diff --git a/keyboards/sofle/rev1/config.h b/keyboards/sofle/rev1/config.h index ab0e0b39d4a0..831387e99088 100644 --- a/keyboards/sofle/rev1/config.h +++ b/keyboards/sofle/rev1/config.h @@ -36,4 +36,3 @@ #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION - diff --git a/keyboards/sofle/rev1/info.json b/keyboards/sofle/rev1/info.json index 0a495dd3bc2a..7673c485bfe3 100644 --- a/keyboards/sofle/rev1/info.json +++ b/keyboards/sofle/rev1/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Sofle", "url": "https://github.com/josefadamcik/SofleKeyboard", "maintainer": "Josef Adamcik ", - "width": 16.5, - "height": 5.25, "layouts": { "LAYOUT": { - "key_count": 60, "layout": [ {"x":0, "y":0.5}, {"x":1, "y":0.375}, {"x":2, "y":0.125}, {"x":3, "y":0}, {"x":4, "y":0.125}, {"x":5, "y":0.25}, {"x":10.5, "y":0.25}, {"x":11.5, "y":0.125}, {"x":12.5, "y":0}, {"x":13.5, "y":0.125}, {"x":14.5, "y":0.375}, {"x":15.5, "y":0.5}, {"x":0, "y":1.5}, {"x":1, "y":1.375}, {"x":2, "y":1.125}, {"x":3, "y":1}, {"x":4, "y":1.125}, {"x":5, "y":1.25}, {"x":10.5, "y":1.25}, {"x":11.5, "y":1.125}, {"x":12.5, "y":1}, {"x":13.5, "y":1.125}, {"x":14.5, "y":1.375}, {"x":15.5, "y":1.5}, diff --git a/keyboards/sofle/rev1/readme.md b/keyboards/sofle/rev1/readme.md new file mode 100644 index 000000000000..629d568e6093 --- /dev/null +++ b/keyboards/sofle/rev1/readme.md @@ -0,0 +1,27 @@ +# Sofle Keyboard + +![SofleKeyboard version 1](https://raw.githubusercontent.com/josefadamcik/SofleKeyboard/master/Images/IMG_20200126_114622.jpg) + +Sofle is 6×4+5 keys column-staggered split keyboard. Based on Lily58, Corne and Helix keyboards. + +More details about the keyboard on my blog: [Let me introduce you SofleKeyboard - a split keyboard based on Lily58 and Crkbd](https://josef-adamcik.cz/electronics/let-me-introduce-you-sofle-keyboard-split-keyboard-based-on-lily58.html) + +The current (temporary) build guide and a build log is available here: [SofleKeyboard build log/guide](https://josef-adamcik.cz/electronics/soflekeyboard-build-log-and-build-guide.html) + +* Keyboard Maintainer: [Josef Adamcik](https://josef-adamcik.cz) [Twitter:@josefadamcik](https://twitter.com/josefadamcik) +* Hardware Supported: SofleKeyboard PCB, ProMicro +* Hardware Availability: [PCB & Case Data](https://github.com/josefadamcik/SofleKeyboard) + +Make example for this keyboard (after setting up your build environment): + + make sofle:default + +Flashing example for this keyboard: + + make sofle:default:flash + +Press reset button on he keyboard when asked. + +Disconnect the first half, connect the second one and repeat the process. + +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/sofle/rev1/rev1.c b/keyboards/sofle/rev1/rev1.c index bbb014c4df74..88a28e6a409c 100644 --- a/keyboards/sofle/rev1/rev1.c +++ b/keyboards/sofle/rev1/rev1.c @@ -1 +1,87 @@ +/* Copyright 2021 Carlos Martins + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #include "sofle.h" + +#ifdef RGB_MATRIX_ENABLE + // Physical Layout + // Columns + // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 + // ROWS + // 12 13 22 23 32 33 33 32 23 22 13 12 0 + // 02 03 04 04 03 02 + // 11 14 21 24 31 34 34 31 24 21 14 11 1 + // 01 01 + // 10 15 20 25 30 35 35 30 25 20 15 10 2 + // + // 09 16 19 26 29 36 36 29 26 19 16 09 3 + // + // 08 17 18 27 28 28 27 18 17 08 4 + // 07 06 05 05 06 07 + +led_config_t g_led_config = { + { + { 11, 12, 21, 22, 31, 32 }, + { 10, 13, 20, 23, 30, 33 }, + { 9, 14, 19, 24, 29, 34}, + { 8, 15, 18, 25, 28, 35}, + { 7, 16, 17, 26, 27, NO_LED }, + { 47, 48, 57, 58, 67, 68}, + { 46, 49, 56, 59, 66, 69}, + { 45, 50, 55, 60, 65, 70}, + { 44, 51, 54, 61, 64, 71}, + { 43, 52, 53, 62, 63, NO_LED } + }, + { + // Left side underglow + {96, 40}, {16, 20}, {48, 10}, {80, 18}, {88, 60}, {56, 57}, {24,60}, + // Left side Matrix + {32, 57}, { 0, 48}, { 0, 36}, { 0, 24}, { 0, 12}, + {16, 12}, {16, 24}, {16, 36}, {16, 48}, {48, 55}, + {64, 57}, {32, 45}, {32, 33}, {32, 21}, {32, 9}, + {48, 7}, {48, 19}, {48, 31}, {48, 43}, {80, 59}, + {96, 64}, {64, 45}, {64, 33}, {64, 21}, {64, 9}, + {80, 10}, {80, 22}, {80, 34}, {80, 47}, + + + // Right side underglow + {128, 40}, {208, 20}, {176, 10}, {144, 18}, {136, 60}, {168, 57}, {200,60}, + // Right side Matrix + {192, 57}, {224, 48}, {224, 36}, {224, 24}, {224, 12}, + {208, 12}, {208, 24}, {208, 36}, {208, 48}, {176, 55}, + {160, 57}, {192, 45}, {192, 33}, {192, 21}, {192, 9}, + {176, 7}, {176, 19}, {176, 31}, {176, 43}, {144, 59}, + {128, 64}, {160, 45}, {160, 33}, {160, 21}, {160, 9}, + {144, 10}, {144, 22}, {144, 34}, {144, 47}, + }, + { + LED_FLAG_NONE, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + LED_FLAG_NONE, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT + } +}; +#endif diff --git a/keyboards/sofle/rev1/rules.mk b/keyboards/sofle/rev1/rules.mk index 2ba231d86b1e..46ec39ee4814 100644 --- a/keyboards/sofle/rev1/rules.mk +++ b/keyboards/sofle/rev1/rules.mk @@ -1,2 +1,3 @@ ENCODER_ENABLE = yes -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/sofle/rules.mk b/keyboards/sofle/rules.mk index 820061832a01..8744590a0d0b 100644 --- a/keyboards/sofle/rules.mk +++ b/keyboards/sofle/rules.mk @@ -1,4 +1,9 @@ +# MCU name MCU = atmega32u4 + +# Bootloader selection BOOTLOADER = caterina + SPLIT_KEYBOARD = yes DEFAULT_FOLDER = sofle/rev1 +SWAP_HANDS_ENABLE = yes diff --git a/keyboards/sofle/sofle.c b/keyboards/sofle/sofle.c index bbb014c4df74..3e9f45656a6a 100644 --- a/keyboards/sofle/sofle.c +++ b/keyboards/sofle/sofle.c @@ -1 +1,42 @@ #include "sofle.h" + +#ifdef SWAP_HANDS_ENABLE + +__attribute__ ((weak)) +const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = + // The LAYOUT macro could work for this, but it was harder to figure out the + // identity using it. + + // This is the identity layout. +/* +{ \ + { {0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0} }, \ + { {0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}, {5, 1} }, \ + { {0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}, {5, 2} }, \ + { {0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}, {5, 3} }, \ + { {0, 4}, {1, 4}, {2, 4}, {3, 4}, {4, 4}, {5, 4} }, \ + \ + { {0, 5}, {1, 5}, {2, 5}, {3, 5}, {4, 5}, {5, 5} }, \ + { {0, 6}, {1, 6}, {2, 6}, {3, 6}, {4, 6}, {5, 6} }, \ + { {0, 7}, {1, 7}, {2, 7}, {3, 7}, {4, 7}, {5, 7} }, \ + { {0, 8}, {1, 8}, {2, 8}, {3, 8}, {4, 8}, {5, 8} }, \ + { {0, 9}, {1, 9}, {2, 9}, {3, 9}, {4, 9}, {5, 9} }, \ +}; +*/ + + // This is the mirror, q <-> p, w <-> o, etc... +{ \ + { {0, 5}, {1, 5}, {2, 5}, {3, 5}, {4, 5}, {5, 5} }, \ + { {0, 6}, {1, 6}, {2, 6}, {3, 6}, {4, 6}, {5, 6} }, \ + { {0, 7}, {1, 7}, {2, 7}, {3, 7}, {4, 7}, {5, 7} }, \ + { {0, 8}, {1, 8}, {2, 8}, {3, 8}, {4, 8}, {5, 8} }, \ + { {0, 9}, {1, 9}, {2, 9}, {3, 9}, {4, 9}, {5, 9} }, \ + \ + { {0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0} }, \ + { {0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}, {5, 1} }, \ + { {0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}, {5, 2} }, \ + { {0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}, {5, 3} }, \ + { {0, 4}, {1, 4}, {2, 4}, {3, 4}, {4, 4}, {5, 4} }, \ +}; + +#endif diff --git a/keyboards/sofle/sofle.h b/keyboards/sofle/sofle.h index 67bd529a1bb1..90ee00bfd791 100644 --- a/keyboards/sofle/sofle.h +++ b/keyboards/sofle/sofle.h @@ -1,5 +1,7 @@ #pragma once -#ifdef KEYBOARD_sofle_rev1 - #include "rev1.h" +#if defined(KEYBOARD_sofle_rev1) +# include "rev1.h" +#elif defined(KEYBOARD_sofle_keyhive) +# include "keyhive.h" #endif diff --git a/keyboards/soup10/info.json b/keyboards/soup10/info.json index d2688fe51103..e5b52a8b9434 100644 --- a/keyboards/soup10/info.json +++ b/keyboards/soup10/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Soup10", "url": "https://github.com/Sadeeed/soup10", "maintainer": "Sadeeed", - "width": 3, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/soup10/rules.mk b/keyboards/soup10/rules.mk index df0fd4dcbace..8730274cec7c 100644 --- a/keyboards/soup10/rules.mk +++ b/keyboards/soup10/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LTO_ENABLE = yes diff --git a/keyboards/southpole/info.json b/keyboards/southpole/info.json index 4078824aeb70..9781fd35abb5 100644 --- a/keyboards/southpole/info.json +++ b/keyboards/southpole/info.json @@ -2,11 +2,8 @@ "keyboard_name": "southpole", "url": "", "maintainer": "qmk", - "width": 20.5, - "height": 5, "layouts": { "LAYOUT": { - "key_count": 84, "layout": [ {"label":"Num Lock", "x":0, "y":0}, {"label":"/", "x":1, "y":0}, diff --git a/keyboards/southpole/keymaps/default/keymap.c b/keyboards/southpole/keymaps/default/keymap.c index 78cb81f4ba65..20333f0e3f86 100644 --- a/keyboards/southpole/keymaps/default/keymap.c +++ b/keyboards/southpole/keymaps/default/keymap.c @@ -18,9 +18,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; - -void matrix_init_user(void) { -} - -void matrix_scan_user(void) { -} diff --git a/keyboards/southpole/rules.mk b/keyboards/southpole/rules.mk index 25a0059d9680..a9b1a86cc18c 100644 --- a/keyboards/southpole/rules.mk +++ b/keyboards/southpole/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = halfkay # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 -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 diff --git a/keyboards/sowbug/68keys/config.h b/keyboards/sowbug/68keys/config.h index 92d83972886f..0aad9a457470 100644 --- a/keyboards/sowbug/68keys/config.h +++ b/keyboards/sowbug/68keys/config.h @@ -48,7 +48,55 @@ // // #define BACKLIGHT_PIN rgb_matrix #define RGB_MATRIX_KEYPRESSES -#define DRIVER_LED_TOTAL 68 -#define RGBLED_NUM DRIVER_LED_TOTAL +#define RGBLED_NUM 68 +#define DRIVER_LED_TOTAL RGBLED_NUM #define RGB_MATRIX_FRAMEBUFFER_EFFECTS #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 128 +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH diff --git a/keyboards/sowbug/68keys/info.json b/keyboards/sowbug/68keys/info.json index e9db83d5687a..bd9d00197da3 100644 --- a/keyboards/sowbug/68keys/info.json +++ b/keyboards/sowbug/68keys/info.json @@ -2,8 +2,6 @@ "keyboard_name": "68keys", "url": "github.com/sowbug", "maintainer": "sowbug", - "width": 17.25, - "height": 5, "layouts": { "LAYOUT_default": { "layout": [ diff --git a/keyboards/sowbug/68keys/rules.mk b/keyboards/sowbug/68keys/rules.mk index 7dc7c6f6db4d..8f4cfb3eda69 100644 --- a/keyboards/sowbug/68keys/rules.mk +++ b/keyboards/sowbug/68keys/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = stm32duino # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output RGB_MATRIX_ENABLE = yes RGB_MATRIX_DRIVER = WS2812 diff --git a/keyboards/sowbug/ansi_tkl/config.h b/keyboards/sowbug/ansi_tkl/config.h index e2ed0edd870a..505453b72b55 100644 --- a/keyboards/sowbug/ansi_tkl/config.h +++ b/keyboards/sowbug/ansi_tkl/config.h @@ -44,11 +44,60 @@ #define RGB_DI_PIN B9 #define RGB_MATRIX_KEYPRESSES -#define DRIVER_LED_TOTAL (87) -#define RGBLED_NUM (DRIVER_LED_TOTAL) +#define RGBLED_NUM 87 +#define DRIVER_LED_TOTAL RGBLED_NUM #define RGB_MATRIX_FRAMEBUFFER_EFFECTS #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 128 +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + // Want backlighting and RGB Matrix patterns? See the note in the readme, // apply the patches, and then uncomment the line below as well as the ones // in rules.mk. diff --git a/keyboards/sowbug/ansi_tkl/info.json b/keyboards/sowbug/ansi_tkl/info.json index d86028058992..f1b7f1003425 100644 --- a/keyboards/sowbug/ansi_tkl/info.json +++ b/keyboards/sowbug/ansi_tkl/info.json @@ -2,8 +2,6 @@ "keyboard_name": "ansi_tkl", "url": "github.com/sowbug", "maintainer": "sowbug", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT_default": { "layout": [ diff --git a/keyboards/sowbug/ansi_tkl/rules.mk b/keyboards/sowbug/ansi_tkl/rules.mk index 7dc7c6f6db4d..8f4cfb3eda69 100644 --- a/keyboards/sowbug/ansi_tkl/rules.mk +++ b/keyboards/sowbug/ansi_tkl/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = stm32duino # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output RGB_MATRIX_ENABLE = yes RGB_MATRIX_DRIVER = WS2812 diff --git a/keyboards/soy20/info.json b/keyboards/soy20/info.json index ea1ab2e7f9ef..3ec8ad72e065 100644 --- a/keyboards/soy20/info.json +++ b/keyboards/soy20/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Soy20", "url": "", "maintainer": "twholt", - "width": 4, - "height": 5, "layouts": { "LAYOUT_ortho_5x4": { "layout": [ diff --git a/keyboards/soy20/rules.mk b/keyboards/soy20/rules.mk index 06f81dad8c19..267151148779 100644 --- a/keyboards/soy20/rules.mk +++ b/keyboards/soy20/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = 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 LAYOUTS = ortho_5x4 diff --git a/keyboards/space_space/config.h b/keyboards/space_space/config.h deleted file mode 100644 index 20b1180d3a1d..000000000000 --- a/keyboards/space_space/config.h +++ /dev/null @@ -1,50 +0,0 @@ -/* Copyright 2020 qpockets - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include "config_common.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x7170 -#define PRODUCT_ID 0x7373 -#define DEVICE_VER 0x3000 -#define MANUFACTURER qpockets -#define PRODUCT space_space - -/* key matrix size */ -#define MATRIX_ROWS 4 -#define MATRIX_COLS 11 - -#define MATRIX_ROW_PINS { F1, F4, F5, C7 } -#define MATRIX_COL_PINS { D4, B4, B5, B6, C6, F7, F6, F0, B0, E6, B1 } - -#define UNUSED_PINS - -/* COL2ROW, ROW2COL*/ -#define DIODE_DIRECTION COL2ROW - -/* ROTARY ENCODERS */ -#define ENCODERS_PAD_A { B3, D6 } -#define ENCODERS_PAD_B { B2, D7 } - -#define ENCODER_RESOLUTIONS { 3, 4 } -//#define ENCODER_DIRECTION_FLIP - - -#define DEBOUNCE 7 - -#define LOCKING_SUPPORT_ENABLE diff --git a/keyboards/space_space/info.json b/keyboards/space_space/info.json deleted file mode 100644 index b0dcdc8598b4..000000000000 --- a/keyboards/space_space/info.json +++ /dev/null @@ -1,92 +0,0 @@ -{ - "keyboard_name": "space_space", - "url": "", - "maintainer": "qpockets", - "width": 11.5, - "height": 4.35, - "layouts": { - "LAYOUT_default": { - "layout": [ - {"label":"Q", "x":0, "y":0}, - {"label":"W", "x":1, "y":0}, - {"label":"E", "x":2, "y":0}, - {"label":"R", "x":3, "y":0}, - {"label":"T", "x":4, "y":0}, - {"label":"Delete", "x":5, "y":0, "w":1.5}, - {"label":"Y", "x":6.5, "y":0}, - {"label":"U", "x":7.5, "y":0}, - {"label":"I", "x":8.5, "y":0}, - {"label":"O", "x":9.5, "y":0}, - {"label":"P", "x":10.5, "y":0}, - {"label":"A", "x":0, "y":1}, - {"label":"S", "x":1, "y":1}, - {"label":"D", "x":2, "y":1}, - {"label":"F", "x":3, "y":1}, - {"label":"G", "x":4, "y":1}, - {"label":"Tab", "x":5, "y":1, "w":1.5}, - {"label":"H", "x":6.5, "y":1}, - {"label":"J", "x":7.5, "y":1}, - {"label":"K", "x":8.5, "y":1}, - {"label":"L", "x":9.5, "y":1}, - {"label":"\"", "x":10.5, "y":1}, - {"label":"Z", "x":0, "y":2}, - {"label":"X", "x":1, "y":2}, - {"label":"C", "x":2, "y":2}, - {"label":"V", "x":3, "y":2}, - {"label":"B", "x":4, "y":2}, - {"label":"Shift", "x":5, "y":2, "w":1.5}, - {"label":"N", "x":6.5, "y":2}, - {"label":"M", "x":7.5, "y":2}, - {"label":"<", "x":8.5, "y":2}, - {"label":">", "x":9.5, "y":2}, - {"label":"?", "x":10.5, "y":2}, - {"label":"Ctrl", "x":1.25, "y":3.35, "w":1.25}, - {"label":"Fn", "x":2.5, "y":3.35}, - {"label":"Backspace", "x":3.5, "y":3.35, "w":2}, - {"label":"Space", "x":5.5, "y":3.35, "w":2.25}, - {"label":"Gui", "x":7.75, "y":3.35}, - {"label":"Alt", "x":8.75, "y":3.35, "w":1.25} - ] - }, - "LAYOUT_big_space": { - "layout": [ - {"label":"Q", "x":0, "y":0}, - {"label":"W", "x":1, "y":0}, - {"label":"E", "x":2, "y":0}, - {"label":"R", "x":3, "y":0}, - {"label":"T", "x":4, "y":0}, - {"label":"Delete", "x":5, "y":0, "w":1.5}, - {"label":"Y", "x":6.5, "y":0}, - {"label":"U", "x":7.5, "y":0}, - {"label":"I", "x":8.5, "y":0}, - {"label":"O", "x":9.5, "y":0}, - {"label":"P", "x":10.5, "y":0}, - {"label":"A", "x":0, "y":1}, - {"label":"S", "x":1, "y":1}, - {"label":"D", "x":2, "y":1}, - {"label":"F", "x":3, "y":1}, - {"label":"G", "x":4, "y":1}, - {"label":"Tab", "x":5, "y":1, "w":1.5}, - {"label":"H", "x":6.5, "y":1}, - {"label":"J", "x":7.5, "y":1}, - {"label":"K", "x":8.5, "y":1}, - {"label":"L", "x":9.5, "y":1}, - {"label":"\"", "x":10.5, "y":1}, - {"label":"Z", "x":0, "y":2}, - {"label":"X", "x":1, "y":2}, - {"label":"C", "x":2, "y":2}, - {"label":"V", "x":3, "y":2}, - {"label":"B", "x":4, "y":2}, - {"label":"Shift", "x":5, "y":2, "w":1.5}, - {"label":"N", "x":6.5, "y":2}, - {"label":"M", "x":7.5, "y":2}, - {"label":"<", "x":8.5, "y":2}, - {"label":">", "x":9.5, "y":2}, - {"label":"?", "x":10.5, "y":2}, - {"label":"Ctrl", "x":1.25, "y":3.35, "w":1.25}, - {"label":"Space", "x":2.5, "y":3.35, "w":6.25}, - {"label":"Alt", "x":8.75, "y":3.35, "w":1.25} - ] - } - } -} diff --git a/keyboards/space_space/keymaps/big_space/keymap.c b/keyboards/space_space/keymaps/big_space/keymap.c deleted file mode 100644 index f99925971a07..000000000000 --- a/keyboards/space_space/keymaps/big_space/keymap.c +++ /dev/null @@ -1,132 +0,0 @@ -/* Copyright 2020 qpockets - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include QMK_KEYBOARD_H - -enum layers{ - _BASE, - _SYM, - _NUM, - _NAV -}; - -enum combo_events { - COMBO_BSPC, - COMBO_ENT, - COMBO_TAB, - COMBO_ESC, - COMBO_DEL -}; -#define KC_UP_SPC LT(_SYM, KC_SPC) -#define KC_GZ LGUI_T(KC_Z) -#define KC_AA LALT_T(KC_A) -#define KC_CC LCTL_T(KC_C) -#define KC_SF LSFT_T(KC_F) -#define KC_SJ RSFT_T(KC_J) -#define KC_CCOMM RCTL_T(KC_COMM) -#define KC_AQUOT RALT_T(KC_QUOT) -#define KC_GSLSH RGUI_T(KC_SLSH) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_BASE] = LAYOUT_big_space( - KC_Q, KC_W, KC_E, KC_R, KC_T, KC_DEL, KC_Y, KC_U, KC_I, KC_O, KC_P, - KC_AA, KC_S, KC_D, KC_SF, KC_G, KC_BSPC, KC_H, KC_SJ, KC_K, KC_L, KC_AQUOT, - KC_GZ, KC_X, KC_CC, KC_V, KC_B, KC_LSFT, KC_N, KC_M, KC_CCOMM, KC_DOT, KC_GSLSH, - MO(_NAV), KC_UP_SPC, KC_RALT - ), - - [_SYM] = LAYOUT_big_space( - KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, - KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_TRNS, KC_CIRC, KC_AMPR, KC_ASTR, KC_EQUAL, KC_MINS, - KC_PIPE, KC_BSLS, KC_LPRN, KC_LBRC, KC_SCLN, KC_TRNS, KC_COLN, KC_RBRC, KC_RPRN, KC_PLUS, KC_UNDS, - KC_TRNS, KC_TRNS, KC_TRNS - ), - - [_NAV] = LAYOUT_big_space( - KC_HOME, KC_UP, KC_END, KC_PGUP, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSPC, - KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TAB, - KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_ENT, - KC_TRNS, KC_TRNS, KC_TRNS - ), -}; - -bool encoder_update_user(uint8_t index, bool clockwise) { - if (index == 1) { /* left encoder*/ - switch(get_highest_layer(layer_state)){ - - case _NAV: - if (clockwise) { - tap_code16(C(KC_TAB)); - } else { - tap_code16(C(S(KC_TAB))); - } - break; - - case _SYM: - if (clockwise) { - tap_code(KC_PGUP); - } else { - tap_code(KC_PGDN); - - } - break; - - default: - if (clockwise){ - tap_code(KC_WH_U); - } else{ - tap_code(KC_WH_D); - } - break; - } - } else if (index == 0) { /* right encoder */ - switch(get_highest_layer(layer_state)){ - - case _SYM: - if (clockwise) { - tap_code(KC_MPRV); - } else { - tap_code(KC_MNXT); - } - break; - - default: - if (clockwise){ - tap_code(KC_VOLU); - } else{ - tap_code(KC_VOLD); - } - break; - } - } - return true; -} - -#ifdef COMBO_ENABLE -const uint16_t PROGMEM combo_bspc[] = {KC_O, KC_P, COMBO_END}; -const uint16_t PROGMEM combo_ent[] = {KC_K, KC_L, COMBO_END}; -const uint16_t PROGMEM combo_tab[] = {KC_S, KC_D, COMBO_END}; -const uint16_t PROGMEM combo_esc[] = {KC_T, KC_Y, COMBO_END}; -const uint16_t PROGMEM combo_del[] = {KC_Q, KC_W, COMBO_END}; - -combo_t key_combos[COMBO_COUNT] = { - [COMBO_BSPC] = COMBO(combo_bspc,KC_BSPC), - [COMBO_ENT] = COMBO(combo_ent,KC_ENT), - [COMBO_TAB] = COMBO(combo_tab,KC_TAB), - [COMBO_ESC] = COMBO(combo_esc,KC_ESC), - [COMBO_DEL] = COMBO(combo_del,KC_DEL) -}; -#endif diff --git a/keyboards/space_space/keymaps/default/keymap.c b/keyboards/space_space/keymaps/default/keymap.c deleted file mode 100644 index 3de82fa923ac..000000000000 --- a/keyboards/space_space/keymaps/default/keymap.c +++ /dev/null @@ -1,134 +0,0 @@ -/* Copyright 2020 qpockets - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include QMK_KEYBOARD_H - -enum layers{ - _BASE, - _SYM, - _NUM, - _NAV -}; - -enum combo_events { - COMBO_BSPC, - COMBO_ENT, - COMBO_TAB, - COMBO_ESC, - COMBO_DEL -}; -#define KC_DN_BSPC LT(_NUM, KC_BSPC) -#define KC_UP_SPC LT(_SYM, KC_SPC) -#define KC_SF LSFT_T(KC_F) -#define KC_SJ RSFT_T(KC_J) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_BASE] = LAYOUT_default( - KC_Q, KC_W, KC_E, KC_R, KC_T, KC_DEL, KC_Y, KC_U, KC_I, KC_O, KC_P, - KC_A, KC_S, KC_D, KC_SF, KC_G, KC_TAB, KC_H, KC_SJ, KC_K, KC_L, KC_QUOT, - KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LSFT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, - KC_LCTL, MO(_NAV), KC_DN_BSPC, KC_UP_SPC, KC_LGUI, KC_RALT - ), - - [_SYM] = LAYOUT_default( - KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, - KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_TRNS, KC_CIRC, KC_AMPR, KC_ASTR, KC_EQUAL, KC_MINS, - KC_PIPE, KC_BSLS, KC_LPRN, KC_LBRC, KC_SCLN, KC_TRNS, KC_COLN, KC_RBRC, KC_RPRN, KC_PLUS, KC_UNDS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), - - [_NUM] = LAYOUT_default( - KC_PSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, KC_EQL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSPC, - KC_PLUS, KC_P4, KC_P5, KC_P6, KC_BSPC, KC_LSFT, KC_TRNS, KC_TRNS, KC_SCLN, KC_COLN, KC_TAB, - KC_PAST, KC_P1, KC_P2, KC_P3, KC_ENT, KC_TAB, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_ENT, - KC_P0, KC_PDOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), - - [_NAV] = LAYOUT_default( - KC_HOME, KC_UP, KC_END, KC_PGUP, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSPC, - KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TAB, - KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS, KC_LCAP, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_ENT, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), -}; - -bool encoder_update_user(uint8_t index, bool clockwise) { - if (index == 1) { /* left encoder*/ - switch(get_highest_layer(layer_state)){ - - case _NAV: - if (clockwise) { - tap_code16(C(KC_TAB)); - } else { - tap_code16(C(S(KC_TAB))); - } - break; - - case _NUM: - if (clockwise) { - tap_code(KC_PGUP); - } else { - tap_code(KC_PGDN); - - } - break; - - default: - if (clockwise){ - tap_code(KC_WH_U); - } else{ - tap_code(KC_WH_D); - } - break; - } - } else if (index == 0) { /* right encoder */ - switch(get_highest_layer(layer_state)){ - - case _SYM: - if (clockwise) { - tap_code(KC_MPRV); - } else { - tap_code(KC_MNXT); - } - break; - - default: - if (clockwise){ - tap_code(KC_VOLU); - } else{ - tap_code(KC_VOLD); - } - break; - } - } - return true; -} - -#ifdef COMBO_ENABLE -const uint16_t PROGMEM combo_bspc[] = {KC_O, KC_P, COMBO_END}; -const uint16_t PROGMEM combo_ent[] = {KC_K, KC_L, COMBO_END}; -const uint16_t PROGMEM combo_tab[] = {KC_S, KC_D, COMBO_END}; -const uint16_t PROGMEM combo_esc[] = {KC_T, KC_Y, COMBO_END}; -const uint16_t PROGMEM combo_del[] = {KC_Q, KC_W, COMBO_END}; - -combo_t key_combos[COMBO_COUNT] = { - [COMBO_BSPC] = COMBO(combo_bspc,KC_BSPC), - [COMBO_ENT] = COMBO(combo_ent,KC_ENT), - [COMBO_TAB] = COMBO(combo_tab,KC_TAB), - [COMBO_ESC] = COMBO(combo_esc,KC_ESC), - [COMBO_DEL] = COMBO(combo_del,KC_DEL) -}; -#endif diff --git a/keyboards/space_space/readme.md b/keyboards/space_space/readme.md index c0d254faac30..08fa640f222d 100644 --- a/keyboards/space_space/readme.md +++ b/keyboards/space_space/readme.md @@ -1,18 +1,18 @@ # space_space -![space_space](https://i.imgur.com/qdkG8K7l.jpg) +![space_space](https://i.imgur.com/SxjhzIMl.jpg) Give your space some space * Keyboard Maintainer: https://github.com/qpockets -* Hardware Availability: +* Hardware Availability: [p3dstore](https://p3dstore.com/products/space-space-acrylic-case?_pos=21&_sid=c75de6a78&_ss=r&variant=39907740844216) Make example for this keyboard (after setting up your build environment): - make space_space:default + make space_space/rev2:default Flashing example for this keyboard: - make space_space:default:flash + make space_space/rev2:default:flash See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/space_space/rev1/config.h b/keyboards/space_space/rev1/config.h new file mode 100644 index 000000000000..d52aad4c2b96 --- /dev/null +++ b/keyboards/space_space/rev1/config.h @@ -0,0 +1,54 @@ +/* Copyright 2020 qpockets + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7170 +#define PRODUCT_ID 0x7373 +#define DEVICE_VER 0x3000 +#define MANUFACTURER qpockets +#define PRODUCT space_space + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 11 + +#define MATRIX_ROW_PINS \ + { F1, F4, F5, C7 } +#define MATRIX_COL_PINS \ + { D4, B4, B5, B6, C6, F7, F6, F0, B0, E6, B1 } + +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* ROTARY ENCODERS */ +#define ENCODERS_PAD_A \ + { B3, D6 } +#define ENCODERS_PAD_B \ + { B2, D7 } + +#define ENCODER_RESOLUTIONS \ + { 3, 4 } +//#define ENCODER_DIRECTION_FLIP + +#define DEBOUNCE 7 + +#define LOCKING_SUPPORT_ENABLE diff --git a/keyboards/space_space/rev1/info.json b/keyboards/space_space/rev1/info.json new file mode 100644 index 000000000000..5bac73c6421a --- /dev/null +++ b/keyboards/space_space/rev1/info.json @@ -0,0 +1,90 @@ +{ + "keyboard_name": "space_space", + "url": "", + "maintainer": "qpockets", + "layouts": { + "LAYOUT_default": { + "layout": [ + {"label":"Q", "x":0, "y":0}, + {"label":"W", "x":1, "y":0}, + {"label":"E", "x":2, "y":0}, + {"label":"R", "x":3, "y":0}, + {"label":"T", "x":4, "y":0}, + {"label":"Delete", "x":5, "y":0, "w":1.5}, + {"label":"Y", "x":6.5, "y":0}, + {"label":"U", "x":7.5, "y":0}, + {"label":"I", "x":8.5, "y":0}, + {"label":"O", "x":9.5, "y":0}, + {"label":"P", "x":10.5, "y":0}, + {"label":"A", "x":0, "y":1}, + {"label":"S", "x":1, "y":1}, + {"label":"D", "x":2, "y":1}, + {"label":"F", "x":3, "y":1}, + {"label":"G", "x":4, "y":1}, + {"label":"Tab", "x":5, "y":1, "w":1.5}, + {"label":"H", "x":6.5, "y":1}, + {"label":"J", "x":7.5, "y":1}, + {"label":"K", "x":8.5, "y":1}, + {"label":"L", "x":9.5, "y":1}, + {"label":"\"", "x":10.5, "y":1}, + {"label":"Z", "x":0, "y":2}, + {"label":"X", "x":1, "y":2}, + {"label":"C", "x":2, "y":2}, + {"label":"V", "x":3, "y":2}, + {"label":"B", "x":4, "y":2}, + {"label":"Shift", "x":5, "y":2, "w":1.5}, + {"label":"N", "x":6.5, "y":2}, + {"label":"M", "x":7.5, "y":2}, + {"label":"<", "x":8.5, "y":2}, + {"label":">", "x":9.5, "y":2}, + {"label":"?", "x":10.5, "y":2}, + {"label":"Ctrl", "x":1.25, "y":3.35, "w":1.25}, + {"label":"Fn", "x":2.5, "y":3.35}, + {"label":"Backspace", "x":3.5, "y":3.35, "w":2}, + {"label":"Space", "x":5.5, "y":3.35, "w":2.25}, + {"label":"Gui", "x":7.75, "y":3.35}, + {"label":"Alt", "x":8.75, "y":3.35, "w":1.25} + ] + }, + "LAYOUT_big_space": { + "layout": [ + {"label":"Q", "x":0, "y":0}, + {"label":"W", "x":1, "y":0}, + {"label":"E", "x":2, "y":0}, + {"label":"R", "x":3, "y":0}, + {"label":"T", "x":4, "y":0}, + {"label":"Delete", "x":5, "y":0, "w":1.5}, + {"label":"Y", "x":6.5, "y":0}, + {"label":"U", "x":7.5, "y":0}, + {"label":"I", "x":8.5, "y":0}, + {"label":"O", "x":9.5, "y":0}, + {"label":"P", "x":10.5, "y":0}, + {"label":"A", "x":0, "y":1}, + {"label":"S", "x":1, "y":1}, + {"label":"D", "x":2, "y":1}, + {"label":"F", "x":3, "y":1}, + {"label":"G", "x":4, "y":1}, + {"label":"Tab", "x":5, "y":1, "w":1.5}, + {"label":"H", "x":6.5, "y":1}, + {"label":"J", "x":7.5, "y":1}, + {"label":"K", "x":8.5, "y":1}, + {"label":"L", "x":9.5, "y":1}, + {"label":"\"", "x":10.5, "y":1}, + {"label":"Z", "x":0, "y":2}, + {"label":"X", "x":1, "y":2}, + {"label":"C", "x":2, "y":2}, + {"label":"V", "x":3, "y":2}, + {"label":"B", "x":4, "y":2}, + {"label":"Shift", "x":5, "y":2, "w":1.5}, + {"label":"N", "x":6.5, "y":2}, + {"label":"M", "x":7.5, "y":2}, + {"label":"<", "x":8.5, "y":2}, + {"label":">", "x":9.5, "y":2}, + {"label":"?", "x":10.5, "y":2}, + {"label":"Ctrl", "x":1.25, "y":3.35, "w":1.25}, + {"label":"Space", "x":2.5, "y":3.35, "w":6.25}, + {"label":"Alt", "x":8.75, "y":3.35, "w":1.25} + ] + } + } +} diff --git a/keyboards/space_space/keymaps/big_space/config.h b/keyboards/space_space/rev1/keymaps/big_space/config.h similarity index 100% rename from keyboards/space_space/keymaps/big_space/config.h rename to keyboards/space_space/rev1/keymaps/big_space/config.h diff --git a/keyboards/space_space/rev1/keymaps/big_space/keymap.c b/keyboards/space_space/rev1/keymaps/big_space/keymap.c new file mode 100644 index 000000000000..62241532e885 --- /dev/null +++ b/keyboards/space_space/rev1/keymaps/big_space/keymap.c @@ -0,0 +1,130 @@ +/* Copyright 2020 qpockets + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layers{ + _BASE, + _SYM, + _NUM, + _NAV +}; + +enum combo_events { + COMBO_BSPC, + COMBO_ENT, + COMBO_TAB, + COMBO_ESC, + COMBO_DEL +}; +#define KC_UP_SPC LT(_SYM, KC_SPC) +#define KC_GZ LGUI_T(KC_Z) +#define KC_AA LALT_T(KC_A) +#define KC_CC LCTL_T(KC_C) +#define KC_SF LSFT_T(KC_F) +#define KC_SJ RSFT_T(KC_J) +#define KC_CCOMM RCTL_T(KC_COMM) +#define KC_AQUOT RALT_T(KC_QUOT) +#define KC_GSLSH RGUI_T(KC_SLSH) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_big_space( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_DEL, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_AA, KC_S, KC_D, KC_SF, KC_G, KC_BSPC, KC_H, KC_SJ, KC_K, KC_L, KC_AQUOT, + KC_GZ, KC_X, KC_CC, KC_V, KC_B, KC_LSFT, KC_N, KC_M, KC_CCOMM, KC_DOT, KC_GSLSH, + MO(_NAV), KC_UP_SPC, KC_RALT + ), + + [_SYM] = LAYOUT_big_space( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_TRNS, KC_CIRC, KC_AMPR, KC_ASTR, KC_EQUAL, KC_MINS, + KC_PIPE, KC_BSLS, KC_LPRN, KC_LBRC, KC_SCLN, KC_TRNS, KC_COLN, KC_RBRC, KC_RPRN, KC_PLUS, KC_UNDS, + KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_NAV] = LAYOUT_big_space( + KC_HOME, KC_UP, KC_END, KC_PGUP, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSPC, + KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TAB, + KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_ENT, + KC_TRNS, KC_TRNS, KC_TRNS + ), +}; + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 1) { /* left encoder*/ + switch(get_highest_layer(layer_state)){ + + case _NAV: + if (clockwise) { + tap_code16(C(KC_TAB)); + } else { + tap_code16(C(S(KC_TAB))); + } + break; + + case _SYM: + if (clockwise) { + tap_code(KC_PGUP); + } else { + tap_code(KC_PGDN); + + } + break; + + default: + if (clockwise){ + tap_code(KC_WH_U); + } else{ + tap_code(KC_WH_D); + } + break; + } + } else if (index == 0) { /* right encoder */ + switch(get_highest_layer(layer_state)){ + case _SYM: + if (clockwise) { + tap_code(KC_MPRV); + } else { + tap_code(KC_MNXT); + } + break; + + default: + if (clockwise){ + tap_code(KC_VOLU); + } else{ + tap_code(KC_VOLD); + } + break; + } + } + return true; +} + +#ifdef COMBO_ENABLE +const uint16_t PROGMEM combo_bspc[] = {KC_O, KC_P, COMBO_END}; +const uint16_t PROGMEM combo_ent[] = {KC_K, KC_L, COMBO_END}; +const uint16_t PROGMEM combo_tab[] = {KC_S, KC_D, COMBO_END}; +const uint16_t PROGMEM combo_esc[] = {KC_T, KC_Y, COMBO_END}; +const uint16_t PROGMEM combo_del[] = {KC_Q, KC_W, COMBO_END}; + +combo_t key_combos[COMBO_COUNT] = { + [COMBO_BSPC] = COMBO(combo_bspc,KC_BSPC), + [COMBO_ENT] = COMBO(combo_ent,KC_ENT), + [COMBO_TAB] = COMBO(combo_tab,KC_TAB), + [COMBO_ESC] = COMBO(combo_esc,KC_ESC), + [COMBO_DEL] = COMBO(combo_del,KC_DEL) +}; +#endif diff --git a/keyboards/space_space/keymaps/big_space/rules.mk b/keyboards/space_space/rev1/keymaps/big_space/rules.mk similarity index 100% rename from keyboards/space_space/keymaps/big_space/rules.mk rename to keyboards/space_space/rev1/keymaps/big_space/rules.mk diff --git a/keyboards/space_space/keymaps/default/config.h b/keyboards/space_space/rev1/keymaps/default/config.h similarity index 100% rename from keyboards/space_space/keymaps/default/config.h rename to keyboards/space_space/rev1/keymaps/default/config.h diff --git a/keyboards/space_space/rev1/keymaps/default/keymap.c b/keyboards/space_space/rev1/keymaps/default/keymap.c new file mode 100644 index 000000000000..6b4219b28903 --- /dev/null +++ b/keyboards/space_space/rev1/keymaps/default/keymap.c @@ -0,0 +1,132 @@ +/* Copyright 2020 qpockets + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layers{ + _BASE, + _SYM, + _NUM, + _NAV +}; + +enum combo_events { + COMBO_BSPC, + COMBO_ENT, + COMBO_TAB, + COMBO_ESC, + COMBO_DEL +}; +#define KC_DN_BSPC LT(_NUM, KC_BSPC) +#define KC_UP_SPC LT(_SYM, KC_SPC) +#define KC_SF LSFT_T(KC_F) +#define KC_SJ RSFT_T(KC_J) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_default( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_DEL, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_SF, KC_G, KC_TAB, KC_H, KC_SJ, KC_K, KC_L, KC_QUOT, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LSFT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, + KC_LCTL, MO(_NAV), KC_DN_BSPC, KC_UP_SPC, KC_LGUI, KC_RALT + ), + + [_SYM] = LAYOUT_default( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_TRNS, KC_CIRC, KC_AMPR, KC_ASTR, KC_EQUAL, KC_MINS, + KC_PIPE, KC_BSLS, KC_LPRN, KC_LBRC, KC_SCLN, KC_TRNS, KC_COLN, KC_RBRC, KC_RPRN, KC_PLUS, KC_UNDS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_NUM] = LAYOUT_default( + KC_PSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, KC_EQL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSPC, + KC_PLUS, KC_P4, KC_P5, KC_P6, KC_BSPC, KC_LSFT, KC_TRNS, KC_TRNS, KC_SCLN, KC_COLN, KC_TAB, + KC_PAST, KC_P1, KC_P2, KC_P3, KC_ENT, KC_TAB, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_ENT, + KC_P0, KC_PDOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_NAV] = LAYOUT_default( + KC_HOME, KC_UP, KC_END, KC_PGUP, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSPC, + KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TAB, + KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS, KC_LCAP, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_ENT, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 1) { /* left encoder*/ + switch(get_highest_layer(layer_state)){ + + case _NAV: + if (clockwise) { + tap_code16(C(KC_TAB)); + } else { + tap_code16(C(S(KC_TAB))); + } + break; + + case _NUM: + if (clockwise) { + tap_code(KC_PGUP); + } else { + tap_code(KC_PGDN); + + } + break; + + default: + if (clockwise){ + tap_code(KC_WH_U); + } else{ + tap_code(KC_WH_D); + } + break; + } + } else if (index == 0) { /* right encoder */ + switch(get_highest_layer(layer_state)){ + case _SYM: + if (clockwise) { + tap_code(KC_MPRV); + } else { + tap_code(KC_MNXT); + } + break; + + default: + if (clockwise){ + tap_code(KC_VOLU); + } else{ + tap_code(KC_VOLD); + } + break; + } + } + return true; +} + +#ifdef COMBO_ENABLE +const uint16_t PROGMEM combo_bspc[] = {KC_O, KC_P, COMBO_END}; +const uint16_t PROGMEM combo_ent[] = {KC_K, KC_L, COMBO_END}; +const uint16_t PROGMEM combo_tab[] = {KC_S, KC_D, COMBO_END}; +const uint16_t PROGMEM combo_esc[] = {KC_T, KC_Y, COMBO_END}; +const uint16_t PROGMEM combo_del[] = {KC_Q, KC_W, COMBO_END}; + +combo_t key_combos[COMBO_COUNT] = { + [COMBO_BSPC] = COMBO(combo_bspc,KC_BSPC), + [COMBO_ENT] = COMBO(combo_ent,KC_ENT), + [COMBO_TAB] = COMBO(combo_tab,KC_TAB), + [COMBO_ESC] = COMBO(combo_esc,KC_ESC), + [COMBO_DEL] = COMBO(combo_del,KC_DEL) +}; +#endif diff --git a/keyboards/space_space/keymaps/default/rules.mk b/keyboards/space_space/rev1/keymaps/default/rules.mk similarity index 100% rename from keyboards/space_space/keymaps/default/rules.mk rename to keyboards/space_space/rev1/keymaps/default/rules.mk diff --git a/keyboards/space_space/keymaps/readme.md b/keyboards/space_space/rev1/keymaps/readme.md similarity index 100% rename from keyboards/space_space/keymaps/readme.md rename to keyboards/space_space/rev1/keymaps/readme.md diff --git a/keyboards/space_space/rev1/readme.md b/keyboards/space_space/rev1/readme.md new file mode 100644 index 000000000000..4b170612e823 --- /dev/null +++ b/keyboards/space_space/rev1/readme.md @@ -0,0 +1,18 @@ +# space_space + +![space_space](https://i.imgur.com/qdkG8K7l.jpg) + +Give your space some space + +* Keyboard Maintainer: https://github.com/qpockets +* Hardware Availability: limited + +Make example for this keyboard (after setting up your build environment): + + make space_space/rev1:default + +Flashing example for this keyboard: + + make space_space/rev1:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/space_space/rev1/rev1.c b/keyboards/space_space/rev1/rev1.c new file mode 100644 index 000000000000..e639552cfb91 --- /dev/null +++ b/keyboards/space_space/rev1/rev1.c @@ -0,0 +1,17 @@ + +/* Copyright 2020 qpockets + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "rev1.h" diff --git a/keyboards/space_space/rev1/rev1.h b/keyboards/space_space/rev1/rev1.h new file mode 100644 index 000000000000..e56068ec42a3 --- /dev/null +++ b/keyboards/space_space/rev1/rev1.h @@ -0,0 +1,45 @@ +/* Copyright 2020 qpockets + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +#define LAYOUT_default( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K50, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K51, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K52, \ + K32, K33, K34, K36, K37, K38 \ +) { \ + {K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K50}, \ + {K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K51}, \ + {K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K52}, \ + {XXX, XXX, K32, K33, K34, XXX, K36, K37, K38, XXX, XXX} \ +} + +#define LAYOUT_big_space( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K50, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K51, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K52, \ + K32, K35, K38 \ +) { \ + {K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K50}, \ + {K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K51}, \ + {K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K52}, \ + {XXX, XXX, K32, XXX, XXX, K35, XXX, XXX, K38, XXX, XXX} \ +} diff --git a/keyboards/space_space/rev1/rules.mk b/keyboards/space_space/rev1/rules.mk new file mode 100644 index 000000000000..7764b8bfff96 --- /dev/null +++ b/keyboards/space_space/rev1/rules.mk @@ -0,0 +1,20 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 diff --git a/keyboards/space_space/rev2/config.h b/keyboards/space_space/rev2/config.h new file mode 100644 index 000000000000..bb8f04da2bc1 --- /dev/null +++ b/keyboards/space_space/rev2/config.h @@ -0,0 +1,58 @@ +/* Copyright 2021 qpockets + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7170 +#define PRODUCT_ID 0x7373 +#define DEVICE_VER 0x3002 +#define MANUFACTURER qpockets +#define PRODUCT space_space + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 11 + +#define MATRIX_ROW_PINS \ + { B1, B0, D5, B6 } +#define MATRIX_COL_PINS \ + { C6, F6, F1, F4, F5, E6, D6, B2, B5, D3, D2 } + +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* ROTARY ENCODERS */ +#define ENCODERS_PAD_A \ + { B4, C7 } +#define ENCODERS_PAD_B \ + { D7, F7 } + +#define ENCODER_RESOLUTION 3 + +#define DEBOUNCE 5 + +#define LOCKING_SUPPORT_ENABLE + +#define RGB_DI_PIN F0 +#define RGBLED_NUM 4 + +#define DRIVER_LED_TOTAL RGBLED_NUM +#define RGBLIGHT_DEFAULT_HUE 130 diff --git a/keyboards/space_space/rev2/info.json b/keyboards/space_space/rev2/info.json new file mode 100644 index 000000000000..5bac73c6421a --- /dev/null +++ b/keyboards/space_space/rev2/info.json @@ -0,0 +1,90 @@ +{ + "keyboard_name": "space_space", + "url": "", + "maintainer": "qpockets", + "layouts": { + "LAYOUT_default": { + "layout": [ + {"label":"Q", "x":0, "y":0}, + {"label":"W", "x":1, "y":0}, + {"label":"E", "x":2, "y":0}, + {"label":"R", "x":3, "y":0}, + {"label":"T", "x":4, "y":0}, + {"label":"Delete", "x":5, "y":0, "w":1.5}, + {"label":"Y", "x":6.5, "y":0}, + {"label":"U", "x":7.5, "y":0}, + {"label":"I", "x":8.5, "y":0}, + {"label":"O", "x":9.5, "y":0}, + {"label":"P", "x":10.5, "y":0}, + {"label":"A", "x":0, "y":1}, + {"label":"S", "x":1, "y":1}, + {"label":"D", "x":2, "y":1}, + {"label":"F", "x":3, "y":1}, + {"label":"G", "x":4, "y":1}, + {"label":"Tab", "x":5, "y":1, "w":1.5}, + {"label":"H", "x":6.5, "y":1}, + {"label":"J", "x":7.5, "y":1}, + {"label":"K", "x":8.5, "y":1}, + {"label":"L", "x":9.5, "y":1}, + {"label":"\"", "x":10.5, "y":1}, + {"label":"Z", "x":0, "y":2}, + {"label":"X", "x":1, "y":2}, + {"label":"C", "x":2, "y":2}, + {"label":"V", "x":3, "y":2}, + {"label":"B", "x":4, "y":2}, + {"label":"Shift", "x":5, "y":2, "w":1.5}, + {"label":"N", "x":6.5, "y":2}, + {"label":"M", "x":7.5, "y":2}, + {"label":"<", "x":8.5, "y":2}, + {"label":">", "x":9.5, "y":2}, + {"label":"?", "x":10.5, "y":2}, + {"label":"Ctrl", "x":1.25, "y":3.35, "w":1.25}, + {"label":"Fn", "x":2.5, "y":3.35}, + {"label":"Backspace", "x":3.5, "y":3.35, "w":2}, + {"label":"Space", "x":5.5, "y":3.35, "w":2.25}, + {"label":"Gui", "x":7.75, "y":3.35}, + {"label":"Alt", "x":8.75, "y":3.35, "w":1.25} + ] + }, + "LAYOUT_big_space": { + "layout": [ + {"label":"Q", "x":0, "y":0}, + {"label":"W", "x":1, "y":0}, + {"label":"E", "x":2, "y":0}, + {"label":"R", "x":3, "y":0}, + {"label":"T", "x":4, "y":0}, + {"label":"Delete", "x":5, "y":0, "w":1.5}, + {"label":"Y", "x":6.5, "y":0}, + {"label":"U", "x":7.5, "y":0}, + {"label":"I", "x":8.5, "y":0}, + {"label":"O", "x":9.5, "y":0}, + {"label":"P", "x":10.5, "y":0}, + {"label":"A", "x":0, "y":1}, + {"label":"S", "x":1, "y":1}, + {"label":"D", "x":2, "y":1}, + {"label":"F", "x":3, "y":1}, + {"label":"G", "x":4, "y":1}, + {"label":"Tab", "x":5, "y":1, "w":1.5}, + {"label":"H", "x":6.5, "y":1}, + {"label":"J", "x":7.5, "y":1}, + {"label":"K", "x":8.5, "y":1}, + {"label":"L", "x":9.5, "y":1}, + {"label":"\"", "x":10.5, "y":1}, + {"label":"Z", "x":0, "y":2}, + {"label":"X", "x":1, "y":2}, + {"label":"C", "x":2, "y":2}, + {"label":"V", "x":3, "y":2}, + {"label":"B", "x":4, "y":2}, + {"label":"Shift", "x":5, "y":2, "w":1.5}, + {"label":"N", "x":6.5, "y":2}, + {"label":"M", "x":7.5, "y":2}, + {"label":"<", "x":8.5, "y":2}, + {"label":">", "x":9.5, "y":2}, + {"label":"?", "x":10.5, "y":2}, + {"label":"Ctrl", "x":1.25, "y":3.35, "w":1.25}, + {"label":"Space", "x":2.5, "y":3.35, "w":6.25}, + {"label":"Alt", "x":8.75, "y":3.35, "w":1.25} + ] + } + } +} diff --git a/keyboards/space_space/rev2/keymaps/big_space/config.h b/keyboards/space_space/rev2/keymaps/big_space/config.h new file mode 100644 index 000000000000..ffc2124e1b53 --- /dev/null +++ b/keyboards/space_space/rev2/keymaps/big_space/config.h @@ -0,0 +1,27 @@ +/* Copyright 2021 qpockets + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +/*Modtaps*/ +#define TAPPING_TERM 175 +#define IGNORE_MOD_TAP_INTERRUPT + +/*Combos*/ +#ifdef COMBO_ENABLE +# define COMBO_COUNT 5 +# define COMBO_TERM 50 +#endif \ No newline at end of file diff --git a/keyboards/space_space/rev2/keymaps/big_space/keymap.c b/keyboards/space_space/rev2/keymaps/big_space/keymap.c new file mode 100644 index 000000000000..a272c001b4cf --- /dev/null +++ b/keyboards/space_space/rev2/keymaps/big_space/keymap.c @@ -0,0 +1,81 @@ +/* Copyright 2020 qpockets + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layers{ + _BASE, + _SYM, + _NUM, + _NAV +}; + +enum combo_events { + COMBO_BSPC, + COMBO_ENT, + COMBO_TAB, + COMBO_ESC, + COMBO_DEL +}; +#define KC_UP_SPC LT(_SYM, KC_SPC) +#define KC_GZ LGUI_T(KC_Z) +#define KC_AA LALT_T(KC_A) +#define KC_CC LCTL_T(KC_C) +#define KC_SF LSFT_T(KC_F) +#define KC_SJ RSFT_T(KC_J) +#define KC_CCOMM RCTL_T(KC_COMM) +#define KC_AQUOT RALT_T(KC_QUOT) +#define KC_GSLSH RGUI_T(KC_SLSH) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_big_space( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_DEL, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_AA, KC_S, KC_D, KC_SF, KC_G, KC_BSPC, KC_H, KC_SJ, KC_K, KC_L, KC_AQUOT, + KC_GZ, KC_X, KC_CC, KC_V, KC_B, KC_LSFT, KC_N, KC_M, KC_CCOMM, KC_DOT, KC_GSLSH, + MO(_NAV), KC_UP_SPC, KC_RALT + ), + + [_SYM] = LAYOUT_big_space( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_TRNS, KC_CIRC, KC_AMPR, KC_ASTR, KC_EQUAL, KC_MINS, + KC_PIPE, KC_BSLS, KC_LPRN, KC_LBRC, KC_SCLN, KC_TRNS, KC_COLN, KC_RBRC, KC_RPRN, KC_PLUS, KC_UNDS, + KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_NAV] = LAYOUT_big_space( + KC_HOME, KC_UP, KC_END, KC_PGUP, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSPC, + KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TAB, + KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_ENT, + KC_TRNS, KC_TRNS, KC_TRNS + ), +}; + + +#ifdef COMBO_ENABLE +const uint16_t PROGMEM combo_bspc[] = {KC_O, KC_P, COMBO_END}; +const uint16_t PROGMEM combo_ent[] = {KC_K, KC_L, COMBO_END}; +const uint16_t PROGMEM combo_tab[] = {KC_S, KC_D, COMBO_END}; +const uint16_t PROGMEM combo_esc[] = {KC_T, KC_Y, COMBO_END}; +const uint16_t PROGMEM combo_del[] = {KC_Q, KC_W, COMBO_END}; + +combo_t key_combos[COMBO_COUNT] = { + [COMBO_BSPC] = COMBO(combo_bspc,KC_BSPC), + [COMBO_ENT] = COMBO(combo_ent,KC_ENT), + [COMBO_TAB] = COMBO(combo_tab,KC_TAB), + [COMBO_ESC] = COMBO(combo_esc,KC_ESC), + [COMBO_DEL] = COMBO(combo_del,KC_DEL) +}; +#endif diff --git a/keyboards/space_space/rev2/keymaps/big_space/rules.mk b/keyboards/space_space/rev2/keymaps/big_space/rules.mk new file mode 100644 index 000000000000..ff681299e4e9 --- /dev/null +++ b/keyboards/space_space/rev2/keymaps/big_space/rules.mk @@ -0,0 +1 @@ +COMBO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/space_space/rev2/keymaps/default/config.h b/keyboards/space_space/rev2/keymaps/default/config.h new file mode 100644 index 000000000000..0b0e89fa1f75 --- /dev/null +++ b/keyboards/space_space/rev2/keymaps/default/config.h @@ -0,0 +1,27 @@ +/* Copyright 2021 qpockets + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +/*Modtaps*/ +#define TAPPING_TERM 165 +#define IGNORE_MOD_TAP_INTERRUPT + +/*Combos*/ +#ifdef COMBO_ENABLE +# define COMBO_COUNT 5 +# define COMBO_TERM 50 +#endif \ No newline at end of file diff --git a/keyboards/space_space/rev2/keymaps/default/keymap.c b/keyboards/space_space/rev2/keymaps/default/keymap.c new file mode 100644 index 000000000000..64f34c829174 --- /dev/null +++ b/keyboards/space_space/rev2/keymaps/default/keymap.c @@ -0,0 +1,77 @@ +/* Copyright 2021 qpockets + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layers{ + _BASE, + _SYM, + _NAV +}; + +enum combo_events { + COMBO_BSPC, + COMBO_ENT, + COMBO_TAB, + COMBO_ESC, + COMBO_DEL +}; +#define KC_DN_BSPC LT(_NAV, KC_BSPC) +#define KC_UP_SPC LT(_SYM, KC_SPC) +#define KC_SF LSFT_T(KC_F) +#define KC_SJ RSFT_T(KC_J) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_default( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_DEL, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_SF, KC_G, KC_TAB, KC_H, KC_SJ, KC_K, KC_L, KC_QUOT, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LSFT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, + KC_LGUI, KC_LCTL, KC_DN_BSPC, KC_UP_SPC, KC_RALT, KC_MPLY + ), + + [_SYM] = LAYOUT_default( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_TRNS, KC_CIRC, KC_AMPR, KC_ASTR, KC_EQUAL, KC_MINS, + KC_PIPE, KC_BSLS, KC_LPRN, KC_LBRC, KC_SCLN, KC_TRNS, KC_COLN, KC_RBRC, KC_RPRN, KC_PLUS, KC_UNDS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_NAV] = LAYOUT_default( + KC_TRNS, KC_HOME, KC_UP, KC_END, KC_PGUP, RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_BSPC, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN, KC_TRNS, KC_F4, KC_F5, KC_F6, KC_F7, KC_TAB, + KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_LCAP, KC_F9, KC_F10, KC_F11, KC_F12, KC_ENT, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; + + + + +#ifdef COMBO_ENABLE +const uint16_t PROGMEM combo_bspc[] = {KC_O, KC_P, COMBO_END}; +const uint16_t PROGMEM combo_ent[] = {KC_K, KC_L, COMBO_END}; +const uint16_t PROGMEM combo_tab[] = {KC_S, KC_D, COMBO_END}; +const uint16_t PROGMEM combo_esc[] = {KC_T, KC_Y, COMBO_END}; +const uint16_t PROGMEM combo_del[] = {KC_Q, KC_W, COMBO_END}; + +combo_t key_combos[COMBO_COUNT] = { + [COMBO_BSPC] = COMBO(combo_bspc,KC_BSPC), + [COMBO_ENT] = COMBO(combo_ent,KC_ENT), + [COMBO_TAB] = COMBO(combo_tab,KC_TAB), + [COMBO_ESC] = COMBO(combo_esc,KC_ESC), + [COMBO_DEL] = COMBO(combo_del,KC_DEL) +}; +#endif diff --git a/keyboards/space_space/rev2/keymaps/default/rules.mk b/keyboards/space_space/rev2/keymaps/default/rules.mk new file mode 100644 index 000000000000..ab1e438182a3 --- /dev/null +++ b/keyboards/space_space/rev2/keymaps/default/rules.mk @@ -0,0 +1 @@ +COMBO_ENABLE = yes diff --git a/keyboards/space_space/rev2/keymaps/qpockets/config.h b/keyboards/space_space/rev2/keymaps/qpockets/config.h new file mode 100644 index 000000000000..bf8c47eb3e01 --- /dev/null +++ b/keyboards/space_space/rev2/keymaps/qpockets/config.h @@ -0,0 +1,27 @@ +/* Copyright 2021 qpockets + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +/*Modtaps*/ +#define TAPPING_TERM 145 +#define IGNORE_MOD_TAP_INTERRUPT + +/*Combos*/ +#ifdef COMBO_ENABLE +# define COMBO_COUNT 5 +# define COMBO_TERM 25 +#endif diff --git a/keyboards/space_space/rev2/keymaps/qpockets/keymap.c b/keyboards/space_space/rev2/keymaps/qpockets/keymap.c new file mode 100644 index 000000000000..986e435957b4 --- /dev/null +++ b/keyboards/space_space/rev2/keymaps/qpockets/keymap.c @@ -0,0 +1,75 @@ +/* Copyright 2021 qpockets + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layers{ + _BASE, + _SYM, + _NAV +}; + +enum combo_events { + COMBO_BSPC, + COMBO_ENT, + COMBO_TAB, + COMBO_ESC, + COMBO_DEL +}; +#define KC_DN_BSPC LT(_NAV, KC_BSPC) +#define KC_UP_SPC LT(_SYM, KC_SPC) +#define KC_SF LSFT_T(KC_F) +#define KC_SJ RSFT_T(KC_J) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_default( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_DEL, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_SF, KC_G, KC_LGUI, KC_H, KC_SJ, KC_K, KC_L, KC_QUOT, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_ENT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, + KC_PSCR, KC_LCTL, KC_DN_BSPC, KC_UP_SPC, KC_RALT, KC_MPLY + ), + + [_SYM] = LAYOUT_default( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_TRNS, KC_CIRC, KC_AMPR, KC_ASTR, KC_EQUAL, KC_MINS, + KC_PIPE, KC_BSLS, KC_LPRN, KC_LBRC, KC_SCLN, KC_TRNS, KC_COLN, KC_RBRC, KC_RPRN, KC_PLUS, KC_UNDS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_NAV] = LAYOUT_default( + KC_TRNS, KC_HOME, KC_UP, KC_END, KC_PGUP, RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_BSPC, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN, KC_TRNS, KC_F5, KC_F6, KC_F7, KC_F8, KC_TAB, + KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_CAPS, KC_F9, KC_F10, KC_F11, KC_F12, KC_ENT, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; + + +#ifdef COMBO_ENABLE +const uint16_t PROGMEM combo_bspc[] = {KC_O, KC_P, COMBO_END}; +const uint16_t PROGMEM combo_ent[] = {KC_K, KC_L, COMBO_END}; +const uint16_t PROGMEM combo_tab[] = {KC_S, KC_D, COMBO_END}; +const uint16_t PROGMEM combo_esc[] = {KC_T, KC_Y, COMBO_END}; +const uint16_t PROGMEM combo_del[] = {KC_Q, KC_W, COMBO_END}; + +combo_t key_combos[COMBO_COUNT] = { + [COMBO_BSPC] = COMBO(combo_bspc,KC_BSPC), + [COMBO_ENT] = COMBO(combo_ent,KC_ENT), + [COMBO_TAB] = COMBO(combo_tab,KC_TAB), + [COMBO_ESC] = COMBO(combo_esc,KC_ESC), + [COMBO_DEL] = COMBO(combo_del,KC_DEL) +}; +#endif diff --git a/keyboards/space_space/rev2/keymaps/qpockets/rules.mk b/keyboards/space_space/rev2/keymaps/qpockets/rules.mk new file mode 100644 index 000000000000..ff681299e4e9 --- /dev/null +++ b/keyboards/space_space/rev2/keymaps/qpockets/rules.mk @@ -0,0 +1 @@ +COMBO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/space_space/rev2/readme.md b/keyboards/space_space/rev2/readme.md new file mode 100644 index 000000000000..d8391a21a607 --- /dev/null +++ b/keyboards/space_space/rev2/readme.md @@ -0,0 +1,18 @@ +# space_space + +![space_space](https://i.imgur.com/SxjhzIMh.jpg) + +Give your space some space + +* Keyboard Maintainer: https://github.com/qpockets +* Hardware Availability: https://p3dstore.com/products/space-space-acrylic-case?_pos=21&_sid=c75de6a78&_ss=r&variant=39907740844216 + +Make example for this keyboard (after setting up your build environment): + + make space_space/rev2:default + +Flashing example for this keyboard: + + make space_space/rev2:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/space_space/rev2/rev2.c b/keyboards/space_space/rev2/rev2.c new file mode 100644 index 000000000000..07b93b36aa66 --- /dev/null +++ b/keyboards/space_space/rev2/rev2.c @@ -0,0 +1,35 @@ + +/* Copyright 2021 qpockets + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "rev2.h" + +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + if (index == 1) { /* left encoder*/ + if (clockwise){ + tap_code(KC_WH_U); + } else { + tap_code(KC_WH_D); + } + } else if (index == 0) { /* right encoder */ + if (clockwise){ + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } + return true; +} diff --git a/keyboards/space_space/rev2/rev2.h b/keyboards/space_space/rev2/rev2.h new file mode 100644 index 000000000000..99362b900fb7 --- /dev/null +++ b/keyboards/space_space/rev2/rev2.h @@ -0,0 +1,49 @@ +/* Copyright 2021 qpockets + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +#define LAYOUT_default( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K50, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K51, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K52, \ + K32, K33, K34, K36, K37, K38 \ +) \ +{ \ + {K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K50}, \ + {K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K51}, \ + {K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K52}, \ + {XXX, XXX, K32, K33, K34, XXX, K36, K37, K38, XXX, XXX} \ +} \ + +#define LAYOUT_big_space( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K50, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K51, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K52, \ + K32, K35, K38 \ +) \ +{ \ + {K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K50}, \ + {K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K51}, \ + {K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K52}, \ + {XXX, XXX, K32, XXX, XXX, K35, XXX, XXX, K38, XXX, XXX} \ +} + + diff --git a/keyboards/space_space/rev2/rules.mk b/keyboards/space_space/rev2/rules.mk new file mode 100644 index 000000000000..745b27939af9 --- /dev/null +++ b/keyboards/space_space/rev2/rules.mk @@ -0,0 +1,20 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 diff --git a/keyboards/space_space/rules.mk b/keyboards/space_space/rules.mk index 831de6dc5cd8..2ca04be440ea 100644 --- a/keyboards/space_space/rules.mk +++ b/keyboards/space_space/rules.mk @@ -1,23 +1 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -BOOTLOADER = atmel-dfu - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -# 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth -AUDIO_ENABLE = no # Audio output -ENCODER_ENABLE = yes +DEFAULT_FOLDER = space_space/rev2 diff --git a/keyboards/space_space/space_space.c b/keyboards/space_space/space_space.c deleted file mode 100644 index 5fb853a0184d..000000000000 --- a/keyboards/space_space/space_space.c +++ /dev/null @@ -1,17 +0,0 @@ - -/* Copyright 2020 qpockets - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include "space_space.h" diff --git a/keyboards/space_space/space_space.h b/keyboards/space_space/space_space.h deleted file mode 100644 index 25e9a083d19e..000000000000 --- a/keyboards/space_space/space_space.h +++ /dev/null @@ -1,48 +0,0 @@ -/* Copyright 2020 qpockets - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include "quantum.h" - -#define XXX KC_NO - -#define LAYOUT_default( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K50, \ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K51, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K52, \ - K32, K33, K34, K36, K37, K38 \ -) \ -{ \ -{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K50 }, \ -{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K51 }, \ -{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K52 }, \ -{ XXX, XXX, K32, K33, K34, XXX, K36, K37, K38, XXX, XXX } \ -} - -#define LAYOUT_big_space( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K50, \ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K51, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K52, \ - K32, K35, K38 \ -) \ -{ \ -{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K50 }, \ -{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K51 }, \ -{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K52 }, \ -{ XXX, XXX, K32, XXX, XXX, K35, XXX, XXX, K38, XXX, XXX } \ -} - diff --git a/keyboards/spaceman/2_milk/info.json b/keyboards/spaceman/2_milk/info.json index 4ca2df290b54..288bc0144cdc 100644 --- a/keyboards/spaceman/2_milk/info.json +++ b/keyboards/spaceman/2_milk/info.json @@ -2,11 +2,8 @@ "keyboard_name": "2% Milk", "url": "", "maintainer": "Spaceman", - "width": 1, - "height": 2, "layouts": { "LAYOUT": { - "key_count": 2, "layout": [ {"x": 0, "y": 0 }, {"x": 0, "y": 1 }] } } diff --git a/keyboards/spaceman/2_milk/keymaps/mikethetiger/rules.mk b/keyboards/spaceman/2_milk/keymaps/mikethetiger/rules.mk index b5f038ef23fd..04ae9270ffb5 100644 --- a/keyboards/spaceman/2_milk/keymaps/mikethetiger/rules.mk +++ b/keyboards/spaceman/2_milk/keymaps/mikethetiger/rules.mk @@ -1,7 +1,7 @@ # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = yes # Console for debug(+400) diff --git a/keyboards/spaceman/2_milk/rules.mk b/keyboards/spaceman/2_milk/rules.mk index b93e8d3a4858..b91bdb2370be 100644 --- a/keyboards/spaceman/2_milk/rules.mk +++ b/keyboards/spaceman/2_milk/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control 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 - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work 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 diff --git a/keyboards/spaceman/pancake/feather/config.h b/keyboards/spaceman/pancake/feather/config.h deleted file mode 100644 index e72b25f3dbe2..000000000000 --- a/keyboards/spaceman/pancake/feather/config.h +++ /dev/null @@ -1,28 +0,0 @@ -/* Copyright 2019 Spaceman - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#pragma once -#include "config_common.h" - -/* Pancake default pinout */ -#define MATRIX_ROW_PINS { B5, D7, C6, D0 } -#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/feather/rules.mk b/keyboards/spaceman/pancake/feather/rules.mk deleted file mode 100644 index fb77e328e8c7..000000000000 --- a/keyboards/spaceman/pancake/feather/rules.mk +++ /dev/null @@ -1,37 +0,0 @@ -# MCU name -MCU = atmega32u4 - -# Processor frequency -F_CPU = 8000000 - -# Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = caterina - -# Build Options -# comment out to disable the options. -# -BLUETOOTH = AdafruitBLE -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration -MOUSEKEY_ENABLE = no # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -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 - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -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. - -LAYOUTS = ortho_4x12 planck_mit - -# Disable unsupported hardware -RGBLIGHT_SUPPORTED = no -AUDIO_SUPPORTED = no -BACKLIGHT_SUPPORTED = no diff --git a/keyboards/spaceman/pancake/info.json b/keyboards/spaceman/pancake/info.json deleted file mode 100644 index 6f88d5337c43..000000000000 --- a/keyboards/spaceman/pancake/info.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "keyboard_name": "Pancake", - "url": "", - "maintainer": "Spaceman", - "width": 12, - "height": 4, - "layouts": { - "LAYOUT_planck_mit": { - "key_count": 47, - "layout": [ - { "w": 1, "x": 0, "y": 0 }, - { "w": 1, "x": 1, "y": 0 }, - { "w": 1, "x": 2, "y": 0 }, - { "w": 1, "x": 3, "y": 0 }, - { "w": 1, "x": 4, "y": 0 }, - { "w": 1, "x": 5, "y": 0 }, - { "w": 1, "x": 6, "y": 0 }, - { "w": 1, "x": 7, "y": 0 }, - { "w": 1, "x": 8, "y": 0 }, - { "w": 1, "x": 9, "y": 0 }, - { "w": 1, "x": 10, "y": 0 }, - { "w": 1, "x": 11, "y": 0 }, - { "w": 1, "x": 0, "y": 1 }, - { "w": 1, "x": 1, "y": 1 }, - { "w": 1, "x": 2, "y": 1 }, - { "w": 1, "x": 3, "y": 1 }, - { "w": 1, "x": 4, "y": 1 }, - { "w": 1, "x": 5, "y": 1 }, - { "w": 1, "x": 6, "y": 1 }, - { "w": 1, "x": 7, "y": 1 }, - { "w": 1, "x": 8, "y": 1 }, - { "w": 1, "x": 9, "y": 1 }, - { "w": 1, "x": 10, "y": 1 }, - { "w": 1, "x": 11, "y": 1 }, - { "w": 1, "x": 0, "y": 2 }, - { "w": 1, "x": 1, "y": 2 }, - { "w": 1, "x": 2, "y": 2 }, - { "w": 1, "x": 3, "y": 2 }, - { "w": 1, "x": 4, "y": 2 }, - { "w": 1, "x": 5, "y": 2 }, - { "w": 1, "x": 6, "y": 2 }, - { "w": 1, "x": 7, "y": 2 }, - { "w": 1, "x": 8, "y": 2 }, - { "w": 1, "x": 9, "y": 2 }, - { "w": 1, "x": 10, "y": 2 }, - { "w": 1, "x": 11, "y": 2 }, - { "w": 1, "x": 0, "y": 3 }, - { "w": 1, "x": 1, "y": 3 }, - { "w": 1, "x": 2, "y": 3 }, - { "w": 1, "x": 3, "y": 3 }, - { "w": 1, "x": 4, "y": 3 }, - { "w": 2, "x": 5, "y": 3 }, - { "w": 1, "x": 7, "y": 3 }, - { "w": 1, "x": 8, "y": 3 }, - { "w": 1, "x": 9, "y": 3 }, - { "w": 1, "x": 10, "y": 3 }, - { "w": 1, "x": 11, "y": 3 } ] - }, - "LAYOUT_ortho_4x12": { - "key_count": 48, - "layout": [ - { "w": 1, "x": 0, "y": 0 }, - { "w": 1, "x": 1, "y": 0 }, - { "w": 1, "x": 2, "y": 0 }, - { "w": 1, "x": 3, "y": 0 }, - { "w": 1, "x": 4, "y": 0 }, - { "w": 1, "x": 5, "y": 0 }, - { "w": 1, "x": 6, "y": 0 }, - { "w": 1, "x": 7, "y": 0 }, - { "w": 1, "x": 8, "y": 0 }, - { "w": 1, "x": 9, "y": 0 }, - { "w": 1, "x": 10, "y": 0 }, - { "w": 1, "x": 11, "y": 0 }, - { "w": 1, "x": 0, "y": 1 }, - { "w": 1, "x": 1, "y": 1 }, - { "w": 1, "x": 2, "y": 1 }, - { "w": 1, "x": 3, "y": 1 }, - { "w": 1, "x": 4, "y": 1 }, - { "w": 1, "x": 5, "y": 1 }, - { "w": 1, "x": 6, "y": 1 }, - { "w": 1, "x": 7, "y": 1 }, - { "w": 1, "x": 8, "y": 1 }, - { "w": 1, "x": 9, "y": 1 }, - { "w": 1, "x": 10, "y": 1 }, - { "w": 1, "x": 11, "y": 1 }, - { "w": 1, "x": 0, "y": 2 }, - { "w": 1, "x": 1, "y": 2 }, - { "w": 1, "x": 2, "y": 2 }, - { "w": 1, "x": 3, "y": 2 }, - { "w": 1, "x": 4, "y": 2 }, - { "w": 1, "x": 5, "y": 2 }, - { "w": 1, "x": 6, "y": 2 }, - { "w": 1, "x": 7, "y": 2 }, - { "w": 1, "x": 8, "y": 2 }, - { "w": 1, "x": 9, "y": 2 }, - { "w": 1, "x": 10, "y": 2 }, - { "w": 1, "x": 11, "y": 2 }, - { "w": 1, "x": 0, "y": 3 }, - { "w": 1, "x": 1, "y": 3 }, - { "w": 1, "x": 2, "y": 3 }, - { "w": 1, "x": 3, "y": 3 }, - { "w": 1, "x": 4, "y": 3 }, - { "w": 1, "x": 5, "y": 3 }, - { "w": 1, "x": 6, "y": 3 }, - { "w": 1, "x": 7, "y": 3 }, - { "w": 1, "x": 8, "y": 3 }, - { "w": 1, "x": 9, "y": 3 }, - { "w": 1, "x": 10, "y": 3 }, - { "w": 1, "x": 11, "y": 3 } ] - } - } -} diff --git a/keyboards/spaceman/pancake/pancake.c b/keyboards/spaceman/pancake/pancake.c deleted file mode 100644 index d77dbfbe01e8..000000000000 --- a/keyboards/spaceman/pancake/pancake.c +++ /dev/null @@ -1,16 +0,0 @@ -/* Copyright 2019 Spaceman - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include "pancake.h" diff --git a/keyboards/spaceman/pancake/promicro/rules.mk b/keyboards/spaceman/pancake/promicro/rules.mk deleted file mode 100644 index 7287f3a0d4d5..000000000000 --- a/keyboards/spaceman/pancake/promicro/rules.mk +++ /dev/null @@ -1,33 +0,0 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = caterina - -# Build Options -# comment out to disable the options. -# -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration -MOUSEKEY_ENABLE = no # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -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 - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -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. - -LAYOUTS = ortho_4x12 planck_mit - -# Disable unsupported hardware -RGBLIGHT_SUPPORTED = no -AUDIO_SUPPORTED = no -BACKLIGHT_SUPPORTED = no diff --git a/keyboards/spaceman/pancake/readme.md b/keyboards/spaceman/pancake/readme.md deleted file mode 100644 index 34cf6382bcb4..000000000000 --- a/keyboards/spaceman/pancake/readme.md +++ /dev/null @@ -1,12 +0,0 @@ -# Pancake - -Ortho 40% Ortho Keyboard with an option for the adafruit feather - -Keyboard Maintainer: [Spaceman](https://github.com/Spaceman) -Hardware Availability: [GB](https://geekhack.org/index.php?topic=101371.0) - -Make example for this keyboard (after setting up your build environment): - - make spaceman/pancake: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/spaceman/pancake/config.h b/keyboards/spaceman/pancake/rev1/config.h similarity index 100% rename from keyboards/spaceman/pancake/config.h rename to keyboards/spaceman/pancake/rev1/config.h diff --git a/keyboards/spaceman/pancake/rev1/feather/config.h b/keyboards/spaceman/pancake/rev1/feather/config.h new file mode 100644 index 000000000000..cb80721e4622 --- /dev/null +++ b/keyboards/spaceman/pancake/rev1/feather/config.h @@ -0,0 +1,24 @@ +/* Copyright 2019 Spaceman + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once +#include "config_common.h" + +/* Pancake default pinout */ +#define MATRIX_ROW_PINS { B5, D7, C6, D0 } +#define MATRIX_COL_PINS { C7, D6, B7, B6, F0, D2, D3, F1, F4, F5, F6, F7 } +#define UNUSED_PINS + +#define VIA_HAS_BROKEN_KEYCODES diff --git a/keyboards/spaceman/pancake/rev1/feather/rules.mk b/keyboards/spaceman/pancake/rev1/feather/rules.mk new file mode 100644 index 000000000000..40e9d8613501 --- /dev/null +++ b/keyboards/spaceman/pancake/rev1/feather/rules.mk @@ -0,0 +1,30 @@ +# MCU name +MCU = atmega32u4 + +# Processor frequency +F_CPU = 8000000 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# comment out to disable the options. +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +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 + +# Disable unsupported hardware +RGBLIGHT_SUPPORTED = no +AUDIO_SUPPORTED = no +BACKLIGHT_SUPPORTED = no diff --git a/keyboards/spaceman/pancake/rev1/info.json b/keyboards/spaceman/pancake/rev1/info.json new file mode 100644 index 000000000000..7462b5bf6b7b --- /dev/null +++ b/keyboards/spaceman/pancake/rev1/info.json @@ -0,0 +1,108 @@ +{ + "keyboard_name": "Pancake", + "url": "", + "maintainer": "Spaceman", + "layouts": { + "LAYOUT_planck_mit": { + "layout": [ + { "w": 1, "x": 0, "y": 0 }, + { "w": 1, "x": 1, "y": 0 }, + { "w": 1, "x": 2, "y": 0 }, + { "w": 1, "x": 3, "y": 0 }, + { "w": 1, "x": 4, "y": 0 }, + { "w": 1, "x": 5, "y": 0 }, + { "w": 1, "x": 6, "y": 0 }, + { "w": 1, "x": 7, "y": 0 }, + { "w": 1, "x": 8, "y": 0 }, + { "w": 1, "x": 9, "y": 0 }, + { "w": 1, "x": 10, "y": 0 }, + { "w": 1, "x": 11, "y": 0 }, + { "w": 1, "x": 0, "y": 1 }, + { "w": 1, "x": 1, "y": 1 }, + { "w": 1, "x": 2, "y": 1 }, + { "w": 1, "x": 3, "y": 1 }, + { "w": 1, "x": 4, "y": 1 }, + { "w": 1, "x": 5, "y": 1 }, + { "w": 1, "x": 6, "y": 1 }, + { "w": 1, "x": 7, "y": 1 }, + { "w": 1, "x": 8, "y": 1 }, + { "w": 1, "x": 9, "y": 1 }, + { "w": 1, "x": 10, "y": 1 }, + { "w": 1, "x": 11, "y": 1 }, + { "w": 1, "x": 0, "y": 2 }, + { "w": 1, "x": 1, "y": 2 }, + { "w": 1, "x": 2, "y": 2 }, + { "w": 1, "x": 3, "y": 2 }, + { "w": 1, "x": 4, "y": 2 }, + { "w": 1, "x": 5, "y": 2 }, + { "w": 1, "x": 6, "y": 2 }, + { "w": 1, "x": 7, "y": 2 }, + { "w": 1, "x": 8, "y": 2 }, + { "w": 1, "x": 9, "y": 2 }, + { "w": 1, "x": 10, "y": 2 }, + { "w": 1, "x": 11, "y": 2 }, + { "w": 1, "x": 0, "y": 3 }, + { "w": 1, "x": 1, "y": 3 }, + { "w": 1, "x": 2, "y": 3 }, + { "w": 1, "x": 3, "y": 3 }, + { "w": 1, "x": 4, "y": 3 }, + { "w": 2, "x": 5, "y": 3 }, + { "w": 1, "x": 7, "y": 3 }, + { "w": 1, "x": 8, "y": 3 }, + { "w": 1, "x": 9, "y": 3 }, + { "w": 1, "x": 10, "y": 3 }, + { "w": 1, "x": 11, "y": 3 } ] + }, + "LAYOUT_ortho_4x12": { + "layout": [ + { "w": 1, "x": 0, "y": 0 }, + { "w": 1, "x": 1, "y": 0 }, + { "w": 1, "x": 2, "y": 0 }, + { "w": 1, "x": 3, "y": 0 }, + { "w": 1, "x": 4, "y": 0 }, + { "w": 1, "x": 5, "y": 0 }, + { "w": 1, "x": 6, "y": 0 }, + { "w": 1, "x": 7, "y": 0 }, + { "w": 1, "x": 8, "y": 0 }, + { "w": 1, "x": 9, "y": 0 }, + { "w": 1, "x": 10, "y": 0 }, + { "w": 1, "x": 11, "y": 0 }, + { "w": 1, "x": 0, "y": 1 }, + { "w": 1, "x": 1, "y": 1 }, + { "w": 1, "x": 2, "y": 1 }, + { "w": 1, "x": 3, "y": 1 }, + { "w": 1, "x": 4, "y": 1 }, + { "w": 1, "x": 5, "y": 1 }, + { "w": 1, "x": 6, "y": 1 }, + { "w": 1, "x": 7, "y": 1 }, + { "w": 1, "x": 8, "y": 1 }, + { "w": 1, "x": 9, "y": 1 }, + { "w": 1, "x": 10, "y": 1 }, + { "w": 1, "x": 11, "y": 1 }, + { "w": 1, "x": 0, "y": 2 }, + { "w": 1, "x": 1, "y": 2 }, + { "w": 1, "x": 2, "y": 2 }, + { "w": 1, "x": 3, "y": 2 }, + { "w": 1, "x": 4, "y": 2 }, + { "w": 1, "x": 5, "y": 2 }, + { "w": 1, "x": 6, "y": 2 }, + { "w": 1, "x": 7, "y": 2 }, + { "w": 1, "x": 8, "y": 2 }, + { "w": 1, "x": 9, "y": 2 }, + { "w": 1, "x": 10, "y": 2 }, + { "w": 1, "x": 11, "y": 2 }, + { "w": 1, "x": 0, "y": 3 }, + { "w": 1, "x": 1, "y": 3 }, + { "w": 1, "x": 2, "y": 3 }, + { "w": 1, "x": 3, "y": 3 }, + { "w": 1, "x": 4, "y": 3 }, + { "w": 1, "x": 5, "y": 3 }, + { "w": 1, "x": 6, "y": 3 }, + { "w": 1, "x": 7, "y": 3 }, + { "w": 1, "x": 8, "y": 3 }, + { "w": 1, "x": 9, "y": 3 }, + { "w": 1, "x": 10, "y": 3 }, + { "w": 1, "x": 11, "y": 3 } ] + } + } +} diff --git a/keyboards/spaceman/pancake/keymaps/default/keymap.c b/keyboards/spaceman/pancake/rev1/keymaps/default/keymap.c similarity index 100% rename from keyboards/spaceman/pancake/keymaps/default/keymap.c rename to keyboards/spaceman/pancake/rev1/keymaps/default/keymap.c diff --git a/keyboards/spaceman/pancake/keymaps/default/readme.md b/keyboards/spaceman/pancake/rev1/keymaps/default/readme.md similarity index 100% rename from keyboards/spaceman/pancake/keymaps/default/readme.md rename to keyboards/spaceman/pancake/rev1/keymaps/default/readme.md diff --git a/keyboards/spaceman/pancake/keymaps/via/keymap.c b/keyboards/spaceman/pancake/rev1/keymaps/via/keymap.c similarity index 100% rename from keyboards/spaceman/pancake/keymaps/via/keymap.c rename to keyboards/spaceman/pancake/rev1/keymaps/via/keymap.c diff --git a/keyboards/spaceman/pancake/rev1/keymaps/via/rules.mk b/keyboards/spaceman/pancake/rev1/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/spaceman/pancake/rev1/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/spaceman/pancake/promicro/config.h b/keyboards/spaceman/pancake/rev1/promicro/config.h similarity index 100% rename from keyboards/spaceman/pancake/promicro/config.h rename to keyboards/spaceman/pancake/rev1/promicro/config.h diff --git a/keyboards/spaceman/pancake/rev1/promicro/rules.mk b/keyboards/spaceman/pancake/rev1/promicro/rules.mk new file mode 100644 index 000000000000..e6732eceae7c --- /dev/null +++ b/keyboards/spaceman/pancake/rev1/promicro/rules.mk @@ -0,0 +1,25 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# comment out to disable the options. +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +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. + +LAYOUTS = ortho_4x12 planck_mit + +# Disable unsupported hardware +RGBLIGHT_SUPPORTED = no +AUDIO_SUPPORTED = no +BACKLIGHT_SUPPORTED = no diff --git a/keyboards/spaceman/pancake/rev1/readme.md b/keyboards/spaceman/pancake/rev1/readme.md new file mode 100644 index 000000000000..2537db9eced7 --- /dev/null +++ b/keyboards/spaceman/pancake/rev1/readme.md @@ -0,0 +1,13 @@ +# Pancake + +Ortho 40% Ortho Keyboard with an option for the adafruit feather + +* Keyboard Maintainer: [Spaceman](https://github.com/Spaceman) +* Hardware Availability: [MKUltra.Click](https://mkultra.click/group-buy-pancake-keyboard-kit) + +Make example for this keyboard (after setting up your build environment): + + make spaceman/pancake/rev1/feather:default + make spaceman/pancake/rev1/promicro: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/spaceman/pancake/rev1/rev1.c b/keyboards/spaceman/pancake/rev1/rev1.c new file mode 100644 index 000000000000..d22665329621 --- /dev/null +++ b/keyboards/spaceman/pancake/rev1/rev1.c @@ -0,0 +1,16 @@ +/* Copyright 2019 Spaceman + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "rev1.h" diff --git a/keyboards/spaceman/pancake/pancake.h b/keyboards/spaceman/pancake/rev1/rev1.h similarity index 100% rename from keyboards/spaceman/pancake/pancake.h rename to keyboards/spaceman/pancake/rev1/rev1.h diff --git a/keyboards/spaceman/pancake/rev2/config.h b/keyboards/spaceman/pancake/rev2/config.h new file mode 100644 index 000000000000..a4d3b439c4bb --- /dev/null +++ b/keyboards/spaceman/pancake/rev2/config.h @@ -0,0 +1,34 @@ +/* Copyright 2020 Spaceman + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x5342 // SB +#define PRODUCT_ID 0x5032 // P2 +#define DEVICE_VER 0x0002 +#define MANUFACTURER Spaceman +#define PRODUCT Pancake 2 + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + +#define DIODE_DIRECTION COL2ROW + +#define MATRIX_ROW_PINS { C7, C6, B6, B5 } +#define MATRIX_COL_PINS { B7, B3, B2, B1 ,B0, E6, F0, F1, F4, F5, F6, F7 } +#define UNUSED_PINS diff --git a/keyboards/spaceman/pancake/rev2/info.json b/keyboards/spaceman/pancake/rev2/info.json new file mode 100644 index 000000000000..1af0dbcdb4d2 --- /dev/null +++ b/keyboards/spaceman/pancake/rev2/info.json @@ -0,0 +1,60 @@ +{ + "keyboard_name": "Pancake 2", + "keyboard_folder": "pancake/rev2", + "url": "", + "maintainer": "Spaceman", + "layouts": { + "LAYOUT_ortho_4x12": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":7, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + {"x":12, "y":1}, + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + {"x":7, "y":2}, + {"x":8, "y":2}, + {"x":9, "y":2}, + {"x":10, "y":2}, + {"x":11, "y":2}, + {"x":12, "y":2}, + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3, "w":1.5}, + {"x":6.5, "y":3, "w":1.5}, + {"x":8, "y":3}, + {"x":9, "y":3}, + {"x":10, "y":3}, + {"x":11, "y":3}, + {"x":12, "y":3} + ] + } + } +} diff --git a/keyboards/spaceman/pancake/rev2/keymaps/default/keymap.c b/keyboards/spaceman/pancake/rev2/keymaps/default/keymap.c new file mode 100644 index 000000000000..33a27bc49166 --- /dev/null +++ b/keyboards/spaceman/pancake/rev2/keymaps/default/keymap.c @@ -0,0 +1,84 @@ + /* Copyright Spaceman 2021 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +enum layers { + _DEFAULT, + _RAISE, + _FN +}; + +#define RAISE MO(_RAISE) +#define FN MO(_FN) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Default + * ,-----------------------------------------------------------------------------------. + * | Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Tab | A | S | D | F | G | H | J | K | L | " | ; | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | Up |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | Alt | GUI | FN | Lower| Space | Del | / | Left | Down |Right | + * `-----------------------------------------------------------------------------------' + */ +[_DEFAULT] = LAYOUT_ortho_4x12( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_SCLN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_ENT , + KC_LCTL, KC_LALT, KC_LGUI, FN, RAISE, KC_SPC, KC_SPC, KC_DEL, KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT +), + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | | | | | | | - | = | | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | | | | | [ | ] | Vol- | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | Vol+ | | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = LAYOUT_ortho_4x12( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, _______, KC_BSLS, + _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, KC_VOLU, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, _______ +), + + /* FN + * ,-----------------------------------------------------------------------------------. + * | Reset| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | | | | | | | | F11 | F12 | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | TRNS | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_FN] = LAYOUT_ortho_4x12( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_F11, KC_F12, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), + + +}; diff --git a/keyboards/spaceman/pancake/rev2/keymaps/default/readme.md b/keyboards/spaceman/pancake/rev2/keymaps/default/readme.md new file mode 100644 index 000000000000..7eb8cc6d8d69 --- /dev/null +++ b/keyboards/spaceman/pancake/rev2/keymaps/default/readme.md @@ -0,0 +1,3 @@ +# Default keymap for Pancake + +designed by: Spaceman diff --git a/keyboards/spaceman/pancake/rev2/readme.md b/keyboards/spaceman/pancake/rev2/readme.md new file mode 100644 index 000000000000..e8b65c48881b --- /dev/null +++ b/keyboards/spaceman/pancake/rev2/readme.md @@ -0,0 +1,12 @@ +# Pancake 2 + +Ortho 40% Ortho Keyboard with an OLED Display + +* Keyboard Maintainer: [Spaceman](https://github.com/Spaceman) +* Hardware Availability: [MKUltra.Click](https://mkultra.click/pancake-2/) + +Make example for this keyboard (after setting up your build environment): + + make spaceman/pancake/rev2: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/spaceman/pancake/rev2/rev2.c b/keyboards/spaceman/pancake/rev2/rev2.c new file mode 100644 index 000000000000..9b186192c5bc --- /dev/null +++ b/keyboards/spaceman/pancake/rev2/rev2.c @@ -0,0 +1,59 @@ +/* Copyright 2020 Spaceman + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "rev2.h" + + +#ifdef OLED_ENABLE +oled_rotation_t oled_init_kb(oled_rotation_t rotation) { + return OLED_ROTATION_270; +} + +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } + static const char PROGMEM pancake_logo[] = { + 0x00, 0x00, 0x3e, 0x0a, 0x04, 0x00, 0x3c, 0x0a, 0x3c, 0x00, 0x3e, 0x0c, 0x18, 0x3e, 0x00, 0x3e, + 0x22, 0x22, 0x00, 0x3c, 0x0a, 0x3c, 0x00, 0x3e, 0x08, 0x36, 0x00, 0x3e, 0x2a, 0x22, 0x00, 0x00, + 0x00, 0x30, 0xc8, 0x84, 0x84, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x19, 0x1d, + 0x1d, 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x84, 0x84, 0xc8, 0x30, 0x00, + 0x00, 0x63, 0x94, 0x08, 0x08, 0x11, 0x71, 0x17, 0x13, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x62, + 0xe2, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x31, 0x08, 0x08, 0x94, 0x63, 0x00, + 0x00, 0x00, 0x03, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x06, 0x02, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00 }; + oled_write_raw_P(pancake_logo, sizeof(pancake_logo)); + // Host Keyboard Layer Status + oled_set_cursor(0, 4); + oled_write_P(PSTR("\nLAYER\n-----\n"), false); + + switch (get_highest_layer(layer_state)) { + case 0: + oled_write_P(PSTR("DEFLT\n"), false); + break; + case 2: + oled_write_P(PSTR("FUNCT\n"), false); + break; + case 1: + oled_write_P(PSTR("RAISE\n"), false); + break; + default: + // Or use the write_ln shortcut over adding '\n' to the end of your string + oled_write_ln_P(PSTR("Undefined"), false); + break; + } + return false; +} +#endif diff --git a/keyboards/spaceman/pancake/rev2/rev2.h b/keyboards/spaceman/pancake/rev2/rev2.h new file mode 100644 index 000000000000..628b1b39ac60 --- /dev/null +++ b/keyboards/spaceman/pancake/rev2/rev2.h @@ -0,0 +1,31 @@ +/* Copyright 2020 Spaceman + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#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 \ +) \ +{ \ + { 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 } \ +} diff --git a/keyboards/spaceman/pancake/rev2/rules.mk b/keyboards/spaceman/pancake/rev2/rules.mk new file mode 100644 index 000000000000..026f9a0136fb --- /dev/null +++ b/keyboards/spaceman/pancake/rev2/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 = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# 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 +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 + +LAYOUTS = ortho_4x12 diff --git a/keyboards/spaceman/yun65/info.json b/keyboards/spaceman/yun65/info.json index 68b6893b16fc..113b6983a647 100644 --- a/keyboards/spaceman/yun65/info.json +++ b/keyboards/spaceman/yun65/info.json @@ -2,8 +2,6 @@ "keyboard_name": "yun65", "url": "", "maintainer": "Spaceman", - "width": 1, - "height": 2, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/spaceman/yun65/rules.mk b/keyboards/spaceman/yun65/rules.mk index 04b00e562572..34da1b9c67a1 100644 --- a/keyboards/spaceman/yun65/rules.mk +++ b/keyboards/spaceman/yun65/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control 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 - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work 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 diff --git a/keyboards/spacetime/config.h b/keyboards/spacetime/config.h index cda5185dea94..3afcee173591 100644 --- a/keyboards/spacetime/config.h +++ b/keyboards/spacetime/config.h @@ -118,58 +118,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -188,26 +136,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/spacetime/info.json b/keyboards/spacetime/info.json index 3cb4414ed38d..8076154f8c73 100644 --- a/keyboards/spacetime/info.json +++ b/keyboards/spacetime/info.json @@ -2,11 +2,8 @@ "keyboard_name": "spacetime", "url": "https://github.com/kyleterry/spacetime-keyboard", "maintainer": "qmk", - "width": 14, - "height": 4, "layouts": { "LAYOUT": { - "key_count": 50, "layout": [ {"label":"L00", "x":0, "y":0}, {"label":"L01", "x":1, "y":0}, @@ -65,4 +62,3 @@ } } } - diff --git a/keyboards/spacetime/keymaps/default/keymap.c b/keyboards/spacetime/keymaps/default/keymap.c index 6be5d1d6d69d..ffd867ca0bc7 100644 --- a/keyboards/spacetime/keymaps/default/keymap.c +++ b/keyboards/spacetime/keymaps/default/keymap.c @@ -67,19 +67,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/spacetime/keymaps/kyleterry/keymap.c b/keyboards/spacetime/keymaps/kyleterry/keymap.c index 32fbab5e0800..d4d31dc1fd8d 100644 --- a/keyboards/spacetime/keymaps/kyleterry/keymap.c +++ b/keyboards/spacetime/keymaps/kyleterry/keymap.c @@ -94,7 +94,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } diff --git a/keyboards/spacetime/rev1/rev1.c b/keyboards/spacetime/rev1/rev1.c index 6fde622c2ff8..b9942a351127 100644 --- a/keyboards/spacetime/rev1/rev1.c +++ b/keyboards/spacetime/rev1/rev1.c @@ -14,27 +14,3 @@ * along with this program. If not, see . */ #include "rev1.h" - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - return process_record_user(keycode, record); -} - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/spacetime/rev1/rules.mk b/keyboards/spacetime/rev1/rules.mk index b595964f7efa..517f469b6d70 100644 --- a/keyboards/spacetime/rev1/rules.mk +++ b/keyboards/spacetime/rev1/rules.mk @@ -1 +1 @@ -OLED_DRIVER_ENABLE = no +OLED_ENABLE = no diff --git a/keyboards/spacetime/rev2/rev2.c b/keyboards/spacetime/rev2/rev2.c index 6b62c071e47e..3ecef1c1d889 100644 --- a/keyboards/spacetime/rev2/rev2.c +++ b/keyboards/spacetime/rev2/rev2.c @@ -22,23 +22,3 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) { return process_record_user(keycode, record); #endif } - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/spacetime/rev2/rules.mk b/keyboards/spacetime/rev2/rules.mk index c582662134c4..d34d066ded93 100644 --- a/keyboards/spacetime/rev2/rules.mk +++ b/keyboards/spacetime/rev2/rules.mk @@ -1 +1,2 @@ -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/spacetime/rules.mk b/keyboards/spacetime/rules.mk index bc48e121c37f..a052373499b5 100644 --- a/keyboards/spacetime/rules.mk +++ b/keyboards/spacetime/rules.mk @@ -2,34 +2,22 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 -OLED_DRIVER_ENABLE = no +AUDIO_ENABLE = no # Audio output +OLED_ENABLE = no # Enable generic behavior for split boards SPLIT_KEYBOARD = yes diff --git a/keyboards/spacey/config.h b/keyboards/spacey/config.h new file mode 100644 index 000000000000..58249d4f19ad --- /dev/null +++ b/keyboards/spacey/config.h @@ -0,0 +1,110 @@ +/* +Copyright 2021 vanilla + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x0000 +#define DEVICE_VER 0x0001 +#define MANUFACTURER vanilla +#define PRODUCT spacey + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + + +#define ENCODERS_PAD_A { D0 } +#define ENCODERS_PAD_B { D1 } +#define ENCODER_RESOLUTION 4 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + */ +#define MATRIX_ROW_PINS { D4, C6, F6, F5, F4 } +#define MATRIX_COL_PINS { D5, B7, B5, B4, E6, D7, C7, B3, B2, B6, F0, F1, B1, F7 } + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +//#define LED_NUM_LOCK_PIN B0 +//#define LED_CAPS_LOCK_PIN B1 +//#define LED_SCROLL_LOCK_PIN B2 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +//#define RGB_DI_PIN E2 +//#ifdef RGB_DI_PIN +//# define RGBLED_NUM 16 +//# define RGBLIGHT_HUE_STEP 8 +//# define RGBLIGHT_SAT_STEP 8 +//# define RGBLIGHT_VAL_STEP 8 +//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +//# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +//#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/spacey/info.json b/keyboards/spacey/info.json new file mode 100644 index 000000000000..94d68addf456 --- /dev/null +++ b/keyboards/spacey/info.json @@ -0,0 +1,85 @@ +{ + "keyboard_name": "spacey", + "url": "", + "maintainer": "vanilla", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"k00", "x":0, "y":0}, + {"label":"k01", "x":1, "y":0}, + {"label":"k02", "x":2, "y":0}, + {"label":"k03", "x":3, "y":0}, + {"label":"k04", "x":4, "y":0}, + {"label":"k05", "x":5, "y":0}, + {"label":"k06", "x":6, "y":0}, + {"label":"k07", "x":7, "y":0}, + {"label":"k08", "x":8, "y":0}, + {"label":"k09", "x":9, "y":0}, + {"label":"k0A", "x":10, "y":0}, + {"label":"k0B", "x":11, "y":0}, + {"label":"k0C", "x":12, "y":0}, + {"label":"k0D", "x":13, "y":0}, + + {"label":"k10", "x":0, "y":1}, + {"label":"k11", "x":1, "y":1}, + {"label":"k12", "x":2, "y":1}, + {"label":"k13", "x":3, "y":1}, + {"label":"k14", "x":4, "y":1}, + {"label":"k15", "x":5, "y":1}, + {"label":"k16", "x":6, "y":1}, + {"label":"k17", "x":7, "y":1}, + {"label":"k18", "x":8, "y":1}, + {"label":"k19", "x":9, "y":1}, + {"label":"k1A", "x":10, "y":1}, + {"label":"k1B", "x":11, "y":1}, + {"label":"k1C", "x":12, "y":1}, + {"label":"k1D", "x":13, "y":1}, + + {"label":"k20", "x":0, "y":2}, + {"label":"k21", "x":1, "y":2}, + {"label":"k22", "x":2, "y":2}, + {"label":"k23", "x":3, "y":2}, + {"label":"k24", "x":4, "y":2}, + {"label":"k25", "x":5, "y":2}, + {"label":"k26", "x":6, "y":2}, + {"label":"k27", "x":7, "y":2}, + {"label":"k28", "x":8, "y":2}, + {"label":"k29", "x":9, "y":2}, + {"label":"k2A", "x":10, "y":2}, + {"label":"k2B", "x":11, "y":2}, + {"label":"k2C", "x":12, "y":2}, + {"label":"k2D", "x":13, "y":2}, + + {"label":"k30", "x":0, "y":3}, + {"label":"k31", "x":1, "y":3}, + {"label":"k32", "x":2, "y":3}, + {"label":"k33", "x":3, "y":3}, + {"label":"k34", "x":4, "y":3}, + {"label":"k35", "x":5, "y":3}, + {"label":"k36", "x":6, "y":3}, + {"label":"k37", "x":7, "y":3}, + {"label":"k38", "x":8, "y":3}, + {"label":"k39", "x":9, "y":3}, + {"label":"k3A", "x":10, "y":3}, + {"label":"k3B", "x":11, "y":3}, + {"label":"k3C", "x":12, "y":3}, + {"label":"k3D", "x":13, "y":3}, + + {"label":"k40", "x":0, "y":4}, + {"label":"k41", "x":1, "y":4}, + {"label":"k42", "x":2, "y":4}, + {"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}, + {"label":"k4D", "x":13, "y":4} + ] + } + } +} diff --git a/keyboards/spacey/keymaps/default/keymap.c b/keyboards/spacey/keymaps/default/keymap.c new file mode 100644 index 000000000000..4d08a279e0f3 --- /dev/null +++ b/keyboards/spacey/keymaps/default/keymap.c @@ -0,0 +1,47 @@ +/* Copyright 2021 vanilla + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +#define FN MO(_FN) + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE = 0, + _FN +}; + +// Defines the keycodes used by our macros in process_record_user +enum custom_keycodes { + QMKBEST = SAFE_RANGE, + QMKURL +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CLCK,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_UP, + KC_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT,KC_SLSH,KC_RSFT, KC_LEFT, KC_DOWN, + KC_LCTL, KC_LGUI, FN, KC_MUTE, KC_LALT, KC_SPC, KC_NO, KC_BSPC, KC_DEL, KC_NO, KC_RALT, KC_RGUI, KC_RCTL, KC_RGHT + ), + [_FN] = LAYOUT( + 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_BSPC, + KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_ENT, KC_MS_U, + KC_LSFT,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_COMM,KC_DOT,KC_SLSH,KC_RSFT, KC_MS_L, KC_MS_D, + KC_LCTL, KC_LGUI, KC_NO, KC_ESC, KC_LALT, KC_SPC, KC_NO, KC_BSPC, KC_RALT, KC_NO, KC_APP, KC_RGUI, KC_RCTL, KC_MS_R + ) +}; diff --git a/keyboards/spacey/keymaps/default/readme.md b/keyboards/spacey/keymaps/default/readme.md new file mode 100644 index 000000000000..808ab68264cd --- /dev/null +++ b/keyboards/spacey/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for spacey diff --git a/keyboards/spacey/readme.md b/keyboards/spacey/readme.md new file mode 100644 index 000000000000..e61585269330 --- /dev/null +++ b/keyboards/spacey/readme.md @@ -0,0 +1,19 @@ +# spacey + +![spacey](https://i.imgur.com/Dzon2hbh.jpeg) + +Spacey, designed by Vanilla Keyboards is a 45/65% keyboard with a little personality. Hosting ortholinear alphas with traditional modifiers, diamond shaped arrows, rotary encoder, and a couple optional spacebars at the top of the board, it's a balance between functional and unique. + +* Keyboard Maintainer: [vanilla](https://github.com/vanillakeyboards) +* Hardware Supported: Elite C, Spacey PCB plates and acrylic drop_in case +* Hardware Availability: https://p3dstore.com/collections/ended-group-buys/products/spacey?variant=37742593147064 and https://keeb.io/products/elite-c-low-profile-version-usb-c-pro-micro-replacement-atmega32u4 + +Make example for this keyboard (after setting up your build environment): + + make spacey:default + +Flashing example for this keyboard: + + make spacey:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/spacey/rules.mk b/keyboards/spacey/rules.mk new file mode 100644 index 000000000000..bc3e5b4e942d --- /dev/null +++ b/keyboards/spacey/rules.mk @@ -0,0 +1,20 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes diff --git a/keyboards/spacey/spacey.c b/keyboards/spacey/spacey.c new file mode 100644 index 000000000000..32f1e4dd9c07 --- /dev/null +++ b/keyboards/spacey/spacey.c @@ -0,0 +1,29 @@ +/* Copyright 2021 vanilla + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "spacey.h" + +bool encoder_update_kb(uint8_t index, bool clockwise){ + if (!encoder_update_user(index, clockwise)) { return false; } + if (index == 0) { + if(clockwise) { + tap_code(KC_VOLD); + } else { + tap_code(KC_VOLU); + } + } + return true; +} diff --git a/keyboards/spacey/spacey.h b/keyboards/spacey/spacey.h new file mode 100644 index 000000000000..5a288fae83e4 --- /dev/null +++ b/keyboards/spacey/spacey.h @@ -0,0 +1,41 @@ +/* Copyright 2021 vanilla + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + 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, 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 } \ +} diff --git a/keyboards/sparrow62/info.json b/keyboards/sparrow62/info.json index c74c42779181..c6e1e6a008b9 100644 --- a/keyboards/sparrow62/info.json +++ b/keyboards/sparrow62/info.json @@ -2,8 +2,6 @@ "keyboard_name": "sparrow62", "url": "https://github.com/74th/sparrow62-buildguide", "maintainer": "Atsushi Morimoto (@74th)", - "width": 15, - "height": 5.5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/sparrow62/rules.mk b/keyboards/sparrow62/rules.mk index 9f762382b069..438352bcbdb8 100644 --- a/keyboards/sparrow62/rules.mk +++ b/keyboards/sparrow62/rules.mk @@ -7,16 +7,14 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -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 SPLIT_KEYBOARD = yes diff --git a/keyboards/specskeys/info.json b/keyboards/specskeys/info.json index 237b3fbccc02..41af5983182a 100644 --- a/keyboards/specskeys/info.json +++ b/keyboards/specskeys/info.json @@ -1,12 +1,106 @@ { - "keyboard_name": "specskeys", - "url": "", - "maintainer": "qmk", - "width": 18.5, - "height": 7, + "keyboard_name": "specskeys", + "url": "", + "maintainer": "qmk", + "layout_aliases": { + "LAYOUT": "LAYOUT_tkl_iso_tsangan" + }, "layouts": { - "LAYOUT": { - "layout": [{"label":"ESC", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"Druck", "x":15.5, "y":0}, {"label":"Rollen", "x":16.5, "y":0}, {"label":"Pause", "x":17.5, "y":0}, {"label":"\u00b0", "x":0, "y":2}, {"label":"!", "x":1, "y":2}, {"label":"\"", "x":2, "y":2}, {"label":"\u00a7", "x":3, "y":2}, {"label":"$", "x":4, "y":2}, {"label":"%", "x":5, "y":2}, {"label":"&", "x":6, "y":2}, {"label":"/", "x":7, "y":2}, {"label":"(", "x":8, "y":2}, {"label":")", "x":9, "y":2}, {"label":"=", "x":10, "y":2}, {"label":"?", "x":11, "y":2}, {"label":"`", "x":12, "y":2}, {"label":"\u2b60", "x":13, "y":2, "w":2}, {"label":"Einfg", "x":15.5, "y":2}, {"label":"Pos1", "x":16.5, "y":2}, {"label":"Bild", "x":17.5, "y":2}, {"label":"\u2b7e", "x":0, "y":3}, {"label":"Q", "x":1.5, "y":3}, {"label":"W", "x":2.5, "y":3}, {"label":"E", "x":3.5, "y":3}, {"label":"R", "x":4.5, "y":3}, {"label":"T", "x":5.5, "y":3}, {"label":"Z", "x":6.5, "y":3}, {"label":"U", "x":7.5, "y":3}, {"label":"I", "x":8.5, "y":3}, {"label":"O", "x":9.5, "y":3}, {"label":"P", "x":10.5, "y":3}, {"label":"\u00dc", "x":11.5, "y":3}, {"label":"*", "x":12.5, "y":3}, {"label":"\u2ba0", "x":13.75, "y":3, "w":1.25, "h":2}, {"label":"Entf", "x":15.5, "y":3}, {"label":"Ende", "x":16.5, "y":3}, {"label":"Bild", "x":17.5, "y":3}, {"x":0, "y":4, "w":1.75}, {"label":"A", "x":1.75, "y":4}, {"label":"S", "x":2.75, "y":4}, {"label":"D", "x":3.75, "y":4}, {"label":"F", "x":4.75, "y":4}, {"label":"G", "x":5.75, "y":4}, {"label":"H", "x":6.75, "y":4}, {"label":"J", "x":7.75, "y":4}, {"label":"K", "x":8.75, "y":4}, {"label":"L", "x":9.75, "y":4}, {"label":"\u00d6", "x":10.75, "y":4}, {"label":"\u00c4", "x":11.75, "y":4}, {"label":"'", "x":12.75, "y":4}, {"label":"\u21e7", "x":0, "y":5, "w":1.25}, {"label":">", "x":1.25, "y":5}, {"label":"Y", "x":2.25, "y":5}, {"label":"X", "x":3.25, "y":5}, {"label":"C", "x":4.25, "y":5}, {"label":"V", "x":5.25, "y":5}, {"label":"B", "x":6.25, "y":5}, {"label":"N", "x":7.25, "y":5}, {"label":"M", "x":8.25, "y":5}, {"label":";", "x":9.25, "y":5}, {"label":":", "x":10.25, "y":5}, {"label":"_", "x":11.25, "y":5}, {"label":"\u21e7", "x":12.25, "y":5, "w":2.75}, {"label":"\u2191", "x":16.5, "y":5}, {"label":"Strg", "x":0, "y":6, "w":1.5}, {"label":"\u2630", "x":1.5, "y":6}, {"label":"Alt", "x":2.5, "y":6, "w":1.5}, {"x":4, "y":6, "w":7}, {"label":"Alt Gr", "x":11, "y":6, "w":1.5}, {"label":"Fn", "x":12.5, "y":6}, {"label":"Strg", "x":13.5, "y":6, "w":1.5}, {"label":"\u2190", "x":15.5, "y":6}, {"label":"\u2193", "x":16.5, "y":6}, {"label":"\u2192", "x":17.5, "y":6}] + "LAYOUT_tkl_iso_tsangan": { + "layout": [ + {"label":"ESC", "x":0, "y":0}, + {"label":"F1", "x":2, "y":0}, + {"label":"F2", "x":3, "y":0}, + {"label":"F3", "x":4, "y":0}, + {"label":"F4", "x":5, "y":0}, + {"label":"F5", "x":6.5, "y":0}, + {"label":"F6", "x":7.5, "y":0}, + {"label":"F7", "x":8.5, "y":0}, + {"label":"F8", "x":9.5, "y":0}, + {"label":"F9", "x":11, "y":0}, + {"label":"F10", "x":12, "y":0}, + {"label":"F11", "x":13, "y":0}, + {"label":"F12", "x":14, "y":0}, + {"label":"Druck", "x":15.5, "y":0}, + {"label":"Rollen", "x":16.5, "y":0}, + {"label":"Pause", "x":17.5, "y":0}, + + {"label":"\u00b0", "x":0, "y":2}, + {"label":"!", "x":1, "y":2}, + {"label":"\"", "x":2, "y":2}, + {"label":"\u00a7", "x":3, "y":2}, + {"label":"$", "x":4, "y":2}, + {"label":"%", "x":5, "y":2}, + {"label":"&", "x":6, "y":2}, + {"label":"/", "x":7, "y":2}, + {"label":"(", "x":8, "y":2}, + {"label":")", "x":9, "y":2}, + {"label":"=", "x":10, "y":2}, + {"label":"?", "x":11, "y":2}, + {"label":"`", "x":12, "y":2}, + {"label":"\u2b60", "x":13, "y":2, "w":2}, + {"label":"Einfg", "x":15.5, "y":2}, + {"label":"Pos1", "x":16.5, "y":2}, + {"label":"Bild", "x":17.5, "y":2}, + + {"label":"\u2b7e", "x":0, "y":3, "w":1.5}, + {"label":"Q", "x":1.5, "y":3}, + {"label":"W", "x":2.5, "y":3}, + {"label":"E", "x":3.5, "y":3}, + {"label":"R", "x":4.5, "y":3}, + {"label":"T", "x":5.5, "y":3}, + {"label":"Z", "x":6.5, "y":3}, + {"label":"U", "x":7.5, "y":3}, + {"label":"I", "x":8.5, "y":3}, + {"label":"O", "x":9.5, "y":3}, + {"label":"P", "x":10.5, "y":3}, + {"label":"\u00dc", "x":11.5, "y":3}, + {"label":"*", "x":12.5, "y":3}, + {"label":"Entf", "x":15.5, "y":3}, + {"label":"Ende", "x":16.5, "y":3}, + {"label":"Bild", "x":17.5, "y":3}, + + {"x":0, "y":4, "w":1.75}, + {"label":"A", "x":1.75, "y":4}, + {"label":"S", "x":2.75, "y":4}, + {"label":"D", "x":3.75, "y":4}, + {"label":"F", "x":4.75, "y":4}, + {"label":"G", "x":5.75, "y":4}, + {"label":"H", "x":6.75, "y":4}, + {"label":"J", "x":7.75, "y":4}, + {"label":"K", "x":8.75, "y":4}, + {"label":"L", "x":9.75, "y":4}, + {"label":"\u00d6", "x":10.75, "y":4}, + {"label":"\u00c4", "x":11.75, "y":4}, + {"label":"'", "x":12.75, "y":4}, + {"label":"\u2ba0", "x":13.75, "y":3, "w":1.25, "h":2}, + + {"label":"\u21e7", "x":0, "y":5, "w":1.25}, + {"label":">", "x":1.25, "y":5}, + {"label":"Y", "x":2.25, "y":5}, + {"label":"X", "x":3.25, "y":5}, + {"label":"C", "x":4.25, "y":5}, + {"label":"V", "x":5.25, "y":5}, + {"label":"B", "x":6.25, "y":5}, + {"label":"N", "x":7.25, "y":5}, + {"label":"M", "x":8.25, "y":5}, + {"label":";", "x":9.25, "y":5}, + {"label":":", "x":10.25, "y":5}, + {"label":"_", "x":11.25, "y":5}, + {"label":"\u21e7", "x":12.25, "y":5, "w":2.75}, + {"label":"\u2191", "x":16.5, "y":5}, + + {"label":"Strg", "x":0, "y":6, "w":1.5}, + {"label":"\u2630", "x":1.5, "y":6}, + {"label":"Alt", "x":2.5, "y":6, "w":1.5}, + {"x":4, "y":6, "w":7}, + {"label":"Alt Gr", "x":11, "y":6, "w":1.5}, + {"label":"Fn", "x":12.5, "y":6}, + {"label":"Strg", "x":13.5, "y":6, "w":1.5}, + {"label":"\u2190", "x":15.5, "y":6}, + {"label":"\u2193", "x":16.5, "y":6}, + {"label":"\u2192", "x":17.5, "y":6} + ] } } } diff --git a/keyboards/specskeys/keymaps/default/keymap.c b/keyboards/specskeys/keymaps/default/keymap.c index cdd06eb63d82..595d4939aadd 100644 --- a/keyboards/specskeys/keymaps/default/keymap.c +++ b/keyboards/specskeys/keymaps/default/keymap.c @@ -17,22 +17,22 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* 0: Winkey */ - LAYOUT( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,KC_PAUS, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, KC_INS,KC_HOME,KC_PGUP, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC, KC_DEL, KC_END,KC_PGDN, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT,KC_NUHS, KC_ENT, - KC_LSFT,KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH,KC_RSFT, KC_UP, - KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT, MO(1),KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT - ), + LAYOUT_tkl_iso_tsangan( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), /* 2: Fn */ - LAYOUT( - KC_TRNS, BL_ON, BL_OFF,BL_STEP,BL_BRTG,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, - KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, - KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, - KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, - KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, - KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS - ) + LAYOUT_tkl_iso_tsangan( + KC_TRNS, BL_ON, BL_OFF, BL_STEP, BL_BRTG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) }; diff --git a/keyboards/specskeys/rules.mk b/keyboards/specskeys/rules.mk index b7ef81c3f27e..2c5ed67c60c8 100644 --- a/keyboards/specskeys/rules.mk +++ b/keyboards/specskeys/rules.mk @@ -10,16 +10,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/specskeys/specskeys.h b/keyboards/specskeys/specskeys.h index 744134dfcb10..68665dc478fb 100644 --- a/keyboards/specskeys/specskeys.h +++ b/keyboards/specskeys/specskeys.h @@ -26,19 +26,19 @@ * The second converts the arguments into a two-dimensional array which * represents the switch matrix. */ -#define LAYOUT( \ +#define LAYOUT_tkl_iso_tsangan( \ 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, K213, K214, K215, \ - K502, K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K212, \ - K503, K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, \ - K504, K505, K506, K507, K508, K509, K510, K512, K513, K514 \ + K501, K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K213, K214, K215, \ + K502, K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K212, \ + K503, K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, \ + K504, K505, K506, K507, K508, K509, K510, K512, K513, K514 \ ) \ { \ - { 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 }, \ - { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, KC_NO, K412 }, \ - { K500, K501, K502, K503, K504, K505, K506, K507, KC_NO, K508, K509, K510, KC_NO, K512, K513, K514 } \ -} + { 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, KC_NO, KC_NO, KC_NO, KC_NO }, \ + { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, KC_NO, K412, KC_NO }, \ + { K500, K501, K502, K503, K504, K505, K506, K507, KC_NO, K508, K509, K510, KC_NO, K512, K513, K514 } \ +} diff --git a/keyboards/spiderisland/split78/config.h b/keyboards/spiderisland/split78/config.h index e15e5d193d38..b67b3fafffcc 100644 --- a/keyboards/spiderisland/split78/config.h +++ b/keyboards/spiderisland/split78/config.h @@ -35,3 +35,5 @@ along with this program. If not, see . #define BACKLIGHT_BREATHING #define DEBOUNCE 50 + +#define I2C_START_RETRY_COUNT 1 diff --git a/keyboards/spiderisland/split78/info.json b/keyboards/spiderisland/split78/info.json index 7a96efe7623b..5506336ba236 100644 --- a/keyboards/spiderisland/split78/info.json +++ b/keyboards/spiderisland/split78/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Spider Island 78-key split", "url": "", "maintainer": "qmk", - "width": 16, - "height": 6.25, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/spiderisland/split78/rules.mk b/keyboards/spiderisland/split78/rules.mk index 664f5237d367..c5319e8410fa 100644 --- a/keyboards/spiderisland/split78/rules.mk +++ b/keyboards/spiderisland/split78/rules.mk @@ -2,18 +2,16 @@ MCU = atmega32a # Bootloader selection -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow WS2812_DRIVER = i2c diff --git a/keyboards/spiderisland/winry25tc/config.h b/keyboards/spiderisland/winry25tc/config.h new file mode 100644 index 000000000000..1e7ff4c63b2a --- /dev/null +++ b/keyboards/spiderisland/winry25tc/config.h @@ -0,0 +1,41 @@ +/* Copyright 2021 Andrzej Ressel (andrzej.ressel@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 . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x0000 +#define DEVICE_VER 0x0001 +#define MANUFACTURER SpiderIsland +#define PRODUCT Winry 25tc + +#define MATRIX_ROWS 5 +#define MATRIX_COLS 5 + +#define MATRIX_ROW_PINS { E6, F0, D6, D2, B6 } +#define MATRIX_COL_PINS { F5, C7, B7, B2, B4 } + +#define DIODE_DIRECTION COL2ROW + +#define RGB_DI_PIN D5 +#define RGBLED_NUM 40 +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 +#define RGBLIGHT_LIMIT_VAL 150 /* The maximum brightness level */ diff --git a/keyboards/spiderisland/winry25tc/info.json b/keyboards/spiderisland/winry25tc/info.json new file mode 100644 index 000000000000..8e503bc74a15 --- /dev/null +++ b/keyboards/spiderisland/winry25tc/info.json @@ -0,0 +1,36 @@ +{ + "keyboard_name": "Winry 25tc", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"K00 (E6,F5)", "x":0, "y":0}, + {"label":"K01 (E6,C7)", "x":1, "y":0}, + {"label":"K02 (E6,B7)", "x":2, "y":0}, + {"label":"K03 (E6,B2)", "x":3, "y":0}, + {"label":"K04 (E6,B4)", "x":4, "y":0}, + {"label":"K10 (F0,F5)", "x":0, "y":1}, + {"label":"K11 (F0,C7)", "x":1, "y":1}, + {"label":"K12 (F0,B7)", "x":2, "y":1}, + {"label":"K13 (F0,B2)", "x":3, "y":1}, + {"label":"K14 (F0,B4)", "x":4, "y":1}, + {"label":"K20 (D6,F5)", "x":0, "y":2}, + {"label":"K21 (D6,C7)", "x":1, "y":2}, + {"label":"K22 (D6,B7)", "x":2, "y":2}, + {"label":"K23 (D6,B2)", "x":3, "y":2}, + {"label":"K24 (D6,B4)", "x":4, "y":2}, + {"label":"K30 (D2,F5)", "x":0, "y":3}, + {"label":"K31 (D2,C7)", "x":1, "y":3}, + {"label":"K32 (D2,B7)", "x":2, "y":3}, + {"label":"K33 (D2,B2)", "x":3, "y":3}, + {"label":"K34 (D2,B4)", "x":4, "y":3}, + {"label":"K40 (B6,F5)", "x":0, "y":4}, + {"label":"K41 (B6,C7)", "x":1, "y":4}, + {"label":"K42 (B6,B7)", "x":2, "y":4}, + {"label":"K43 (B6,B2)", "x":3, "y":4}, + {"label":"K44 (B6,B4)", "x":4, "y":4} + ] + } + } +} diff --git a/keyboards/spiderisland/winry25tc/keymaps/default/keymap.c b/keyboards/spiderisland/winry25tc/keymaps/default/keymap.c new file mode 100644 index 000000000000..ec1d0f42edc9 --- /dev/null +++ b/keyboards/spiderisland/winry25tc/keymaps/default/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2021 Andrzej Ressel (andrzej.ressel@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 . + */ + +#include QMK_KEYBOARD_H + +enum my_layers { + _FIRST_LAYER, + _SECOND_LAYER +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_FIRST_LAYER] = LAYOUT( + KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_ESC, + KC_P7, KC_P8, KC_P9, KC_PPLS, RGB_TOG, + KC_P4, KC_P5, KC_P6, KC_PENT, RGB_MOD, + KC_P1, KC_P2, KC_P3, KC_UP, MO(_SECOND_LAYER), + KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_SECOND_LAYER] = LAYOUT( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, + KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, + KC_F11, KC_F12, KC_MUTE, KC_VOLD, KC_VOLU, + KC_MPLY, KC_MSTP, KC_MPRV, KC_MNXT, _______, + KC_RSFT, KC_RALT, KC_RGUI, KC_APP, KC_RCTL + ), +}; diff --git a/keyboards/spiderisland/winry25tc/readme.md b/keyboards/spiderisland/winry25tc/readme.md new file mode 100644 index 000000000000..45ba0bd5a42a --- /dev/null +++ b/keyboards/spiderisland/winry25tc/readme.md @@ -0,0 +1,14 @@ +# SpiderIsland 25-key RGB Backlight Hot Swap Mechanical Keyboard + +Keyboard from [SpiderIsland on AliExpress](https://a.aliexpress.com/_dVJsSpR). Seller provides [kbfirmware](https://kbfirmware.com/) JSON config that was converted to QMK. + +* Keyboard Maintainer: [andrzejressel](https://github.com/andrzejressel) +* Hardware Availability: https://aliexpress.com/item/1005001523579896.html + +Make example for this keyboard (after setting up your build environment): + + make spiderisland/winry25tc:default + +**Reset Key**: Located on the other side of the keyboard. + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). \ No newline at end of file diff --git a/keyboards/spiderisland/winry25tc/rules.mk b/keyboards/spiderisland/winry25tc/rules.mk new file mode 100644 index 000000000000..406e84aeb7d1 --- /dev/null +++ b/keyboards/spiderisland/winry25tc/rules.mk @@ -0,0 +1,20 @@ +# 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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow + +KEY_LOCK_ENABLE = yes # Enable KC_LOCK support diff --git a/keyboards/spiderisland/winry25tc/winry25tc.c b/keyboards/spiderisland/winry25tc/winry25tc.c new file mode 100644 index 000000000000..938dadaf8fc9 --- /dev/null +++ b/keyboards/spiderisland/winry25tc/winry25tc.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Andrzej Ressel (andrzej.ressel@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 . + */ + +#include "winry25tc.h" diff --git a/keyboards/spiderisland/winry25tc/winry25tc.h b/keyboards/spiderisland/winry25tc/winry25tc.h new file mode 100644 index 000000000000..5498dd8d6bb2 --- /dev/null +++ b/keyboards/spiderisland/winry25tc/winry25tc.h @@ -0,0 +1,33 @@ +/* Copyright 2021 Andrzej Ressel (andrzej.ressel@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 . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + 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 \ +) { \ + { 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 }, \ +} diff --git a/keyboards/splitish/info.json b/keyboards/splitish/info.json index 430095044141..96c7de53e0d8 100644 --- a/keyboards/splitish/info.json +++ b/keyboards/splitish/info.json @@ -2,8 +2,6 @@ "keyboard_name": "splitish", "url": "", "maintainer": "RSchneyer", - "width": 13, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/splitish/rules.mk b/keyboards/splitish/rules.mk index 7764619a62ed..87d72ccae7a2 100644 --- a/keyboards/splitish/rules.mk +++ b/keyboards/splitish/rules.mk @@ -2,22 +2,13 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality diff --git a/keyboards/splitkb/kyria/.noci b/keyboards/splitkb/kyria/.noci new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/keyboards/kyria/config.h b/keyboards/splitkb/kyria/config.h similarity index 100% rename from keyboards/kyria/config.h rename to keyboards/splitkb/kyria/config.h diff --git a/keyboards/splitkb/kyria/info.json b/keyboards/splitkb/kyria/info.json new file mode 100644 index 000000000000..d362e4ad72ae --- /dev/null +++ b/keyboards/splitkb/kyria/info.json @@ -0,0 +1,61 @@ +{ + "keyboard_name": "Kyria", + "url": "https://splitkb.com", + "maintainer": "splitkb.com", + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0.75}, + {"x":1, "y":0.75}, + {"x":2, "y":0.25}, + {"x":3, "y":0}, + {"x":4, "y":0.25}, + {"x":5, "y":0.5}, + {"x":10.5, "y":0.5}, + {"x":11.5, "y":0.25}, + {"x":12.5, "y":0}, + {"x":13.5, "y":0.25}, + {"x":14.5, "y":0.75}, + {"x":15.5, "y":0.75}, + {"x":0, "y":1.75}, + {"x":1, "y":1.75}, + {"x":2, "y":1.25}, + {"x":3, "y":1}, + {"x":4, "y":1.25}, + {"x":5, "y":1.5}, + {"x":10.5, "y":1.5}, + {"x":11.5, "y":1.25}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1.25}, + {"x":14.5, "y":1.75}, + {"x":15.5, "y":1.75}, + {"x":0, "y":2.75}, + {"x":1, "y":2.75}, + {"x":2, "y":2.25}, + {"x":3, "y":2}, + {"x":4, "y":2.25}, + {"x":5, "y":2.5}, + {"x":6, "y":3}, + {"x":7, "y":3.25}, + {"x":8.5, "y":3.25}, + {"x":9.5, "y":3}, + {"x":10.5, "y":2.5}, + {"x":11.5, "y":2.25}, + {"x":12.5, "y":2}, + {"x":13.5, "y":2.25}, + {"x":14.5, "y":2.75}, + {"x":15.5, "y":2.75}, + {"x":2.5, "y":3.25}, + {"x":3.5, "y":3.25}, + {"x":4.5, "y":3.5}, + {"x":5.5, "y":4}, + {"x":6.5, "y":4.25}, + {"x":9, "y":4.25}, + {"x":10, "y":4}, + {"x":11, "y":3.5}, + {"x":12, "y":3.25}, + {"x":13, "y":3.25} + ] + } + } +} diff --git a/keyboards/splitkb/kyria/keymaps/asapjockey/config.h b/keyboards/splitkb/kyria/keymaps/asapjockey/config.h new file mode 100644 index 000000000000..acb0703590a5 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/asapjockey/config.h @@ -0,0 +1,47 @@ +/* Copyright 2019 Thomas Baart + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#ifdef OLED_ENABLE + #define OLED_DISPLAY_128X64 +#endif + +#ifdef RGBLIGHT_ENABLE + #define RGBLIGHT_ANIMATIONS + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_SLEEP +#endif + +// EC11K encoders have a different resolution than other EC11 encoders. +// When using the default resolution of 4, if you notice your encoder skipping +// every other tick, lower the resolution to 2. +#define ENCODER_RESOLUTION 2 + +// The Leader key allows to flexibly assign macros to key sequences. +#define LEADER_PER_KEY_TIMING +#define LEADER_TIMEOUT 350 + +#define TAPPING_TERM 200 + +// Allows to use either side as the master. Look at the documentation for info: +// https://docs.qmk.fm/#/config_options?id=setting-handedness +#define EE_HANDS + +// Allows media codes to properly register in macros and rotary encoder code +#define TAP_CODE_DELAY 10 diff --git a/keyboards/splitkb/kyria/keymaps/asapjockey/keymap.c b/keyboards/splitkb/kyria/keymaps/asapjockey/keymap.c new file mode 100644 index 000000000000..baf46eeac6ea --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/asapjockey/keymap.c @@ -0,0 +1,314 @@ +/* Copyright 2019 Thomas Baart + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layers { + QWERTY, + LOWER, + RAISE, + NAV, + ADJUST +}; + +enum custom_keycodes { + KC_LBR = SAFE_RANGE, + KC_RBR +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* + * Base Layer: QWERTY + * + * ,-------------------------------------------. ,-------------------------------------------. + * | TAB | Q | W | E | R | T | | Y | U | I | O | P | RCTL | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | LCTL | A | S | D | F | G | | H | J | K | L | ; : | ' " | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | LSFT | Z | X | C | V | B | Del | Raise| |Adjust| Esc | N | M | , < | . > | / ? | LSFT | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | LALT | | Bspc | Lower| | Enter| Space| [ { | ] } | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [QWERTY] = LAYOUT( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_RCTL, + 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DEL, MO(RAISE), MO(ADJUST), KC_ESC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, + XXXXXXX, KC_LALT, XXXXXXX, KC_BSPC, MO(LOWER), KC_ENT, KC_SPC, KC_LBR, KC_RBR, XXXXXXX + ), +/* + * Lower Layer: Numbers, functions, symbols + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | 1 ! | 2 @ | 3 # | 4 $ | 5 % | | 6 ^ | 7 & | 8 * | 9 ( | 0 ) | | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | ! | @ | # | $ | % | | ^ | & | * | ( | ) | | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | F1 | F2 | F3 | F4 | F5 | | | | | | F6 | F7 | F8 | F9 | F10 | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | ( | ) | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [LOWER] = LAYOUT( + _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, + _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, _______, _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, + _______, _______, _______, _______, _______, _______, _______, KC_LPRN, KC_RPRN, _______ + ), +/* + * Raise Layer: Functions, Numbers + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | | F7 | F8 | F9 | | | | 7 & | 8 * | 9 ( | - _ | | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | | F4 | F5 | F6 | | | | 4 * | 5 % | 6 ^ | = + | RCTL | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | | F1 | F2 | F3 | | | | | | | | 1 ! | 2 @ | 3 # | \ | | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | 0 ) | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [RAISE] = LAYOUT( + _______, _______, KC_F7, KC_F8, KC_F9, _______, _______, KC_7, KC_8, KC_9, _______, _______, + _______, _______, KC_F4, KC_F5, KC_F6, _______, _______, KC_4, KC_5, KC_6, _______, KC_RCTL, + _______, _______, KC_F1, KC_F2, KC_F3, _______, _______, _______, _______, _______, _______, KC_1, KC_2, KC_3, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_0, _______, _______ + ), +/* + * Navigation Layer + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | | | | | | | | | Up | | | RGBTOG | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | | | | | | | | Left | Down | Right| | RGBOFF | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | | | | | | | | | | | | | | | | RGBON | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | Reset|Debug | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [ADJUST] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, RGB_TOG, + _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, RGB_HUI, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, + _______, _______, _______, _______, _______, _______, _______, RESET, DEBUG, _______ + ), +// /* +// * Layer template +// * +// * ,-------------------------------------------. ,-------------------------------------------. +// * | | | | | | | | | | | | | | +// * |--------+------+------+------+------+------| |------+------+------+------+------+--------| +// * | | | | | | | | | | | | | | +// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +// * | | | | | | | | | | | | | | | | | | +// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' +// * | | | | | | | | | | | | +// * | | | | | | | | | | | | +// * `----------------------------------' `----------------------------------' +// */ +// [_LAYERINDEX] = LAYOUT( +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +// ), +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_LBR: { + if (record->event.pressed) { + if ((get_mods() & MOD_MASK_SHIFT) == MOD_MASK_SHIFT) { + register_code(KC_9); + } else { + register_code(KC_LBRC); + } + } else { // Release the key + if ((get_mods() & MOD_MASK_SHIFT) == MOD_MASK_SHIFT) { + unregister_code(KC_9); + } else { + unregister_code(KC_LBRC); + } + } + return false; + break; + } + case KC_RBR: { + if (record->event.pressed) { + if ((get_mods() & MOD_MASK_SHIFT) == MOD_MASK_SHIFT) { + register_code(KC_0); + } else { + register_code(KC_RBRC); + } + } else { // Release the key + if ((get_mods() & MOD_MASK_SHIFT) == MOD_MASK_SHIFT) { + unregister_code(KC_0); + } else { + unregister_code(KC_RBRC); + } + } + return false; + break; + } + } + return true; +} + +LEADER_EXTERNS(); + +void matrix_scan_user(void) { + LEADER_DICTIONARY() { + leading = false; + leader_end(); + + SEQ_ONE_KEY(KC_F) { // Shift + Ctrl + F + tap_code16(S(C(KC_F))); + } + } +} + +#ifdef OLED_ENABLE +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + return OLED_ROTATION_180; +} + +static void render_kyria_logo(void) { + static const char PROGMEM kyria_logo[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,224,240,112,120, 56, 60, 28, 30, 14, 14, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 30, 28, 60, 56,120,112,240,224,192,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,192,224,240,124, 62, 31, 15, 7, 3, 1,128,192,224,240,120, 56, 60, 28, 30, 14, 14, 7, 7,135,231,127, 31,255,255, 31,127,231,135, 7, 7, 14, 14, 30, 28, 60, 56,120,240,224,192,128, 1, 3, 7, 15, 31, 62,124,240,224,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,240,252,255, 31, 7, 1, 0, 0,192,240,252,254,255,247,243,177,176, 48, 48, 48, 48, 48, 48, 48,120,254,135, 1, 0, 0,255,255, 0, 0, 1,135,254,120, 48, 48, 48, 48, 48, 48, 48,176,177,243,247,255,254,252,240,192, 0, 0, 1, 7, 31,255,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,254,255,255, 1, 1, 7, 30,120,225,129,131,131,134,134,140,140,152,152,177,183,254,248,224,255,255,224,248,254,183,177,152,152,140,140,134,134,131,131,129,225,120, 30, 7, 1, 1,255,255,254, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0,255,255, 0, 0,192,192, 48, 48, 0, 0,240,240, 0, 0, 0, 0, 0, 0,240,240, 0, 0,240,240,192,192, 48, 48, 48, 48,192,192, 0, 0, 48, 48,243,243, 0, 0, 0, 0, 0, 0, 48, 48, 48, 48, 48, 48,192,192, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,127,255,255,128,128,224,120, 30,135,129,193,193, 97, 97, 49, 49, 25, 25,141,237,127, 31, 7,255,255, 7, 31,127,237,141, 25, 25, 49, 49, 97, 97,193,193,129,135, 30,120,224,128,128,255,255,127, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0, 63, 63, 3, 3, 12, 12, 48, 48, 0, 0, 0, 0, 51, 51, 51, 51, 51, 51, 15, 15, 0, 0, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 63, 63, 48, 48, 0, 0, 12, 12, 51, 51, 51, 51, 51, 51, 63, 63, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 63,255,248,224,128, 0, 0, 3, 15, 63,127,255,239,207,141, 13, 12, 12, 12, 12, 12, 12, 12, 30,127,225,128, 0, 0,255,255, 0, 0,128,225,127, 30, 12, 12, 12, 12, 12, 12, 12, 13,141,207,239,255,127, 63, 15, 3, 0, 0,128,224,248,255, 63, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 7, 15, 62,124,248,240,224,192,128, 1, 3, 7, 15, 30, 28, 60, 56,120,112,112,224,224,225,231,254,248,255,255,248,254,231,225,224,224,112,112,120, 56, 60, 28, 30, 15, 7, 3, 1,128,192,224,240,248,124, 62, 15, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 15, 14, 30, 28, 60, 56,120,112,112,112,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,112,112,112,120, 56, 60, 28, 30, 14, 15, 7, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }; + oled_write_raw_P(kyria_logo, sizeof(kyria_logo)); +} + +static void render_qmk_logo(void) { + static const char PROGMEM qmk_logo[] = { + 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, + 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, + 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0}; + + oled_write_P(qmk_logo, false); +} + +static void render_status(void) { + // QMK Logo and version information + render_qmk_logo(); + oled_write_P(PSTR(" Kyria rev1.0\n\n"), false); + + // Host Keyboard Layer Status + oled_write_P(PSTR("Layer: "), false); + switch (get_highest_layer(layer_state)) { + case QWERTY: + oled_write_P(PSTR("Default\n"), false); + break; + case LOWER: + oled_write_P(PSTR("Lower\n"), false); + break; + case RAISE: + oled_write_P(PSTR("Raise\n"), false); + break; + case NAV: + oled_write_P(PSTR("Navigation\n"), false); + break; + case ADJUST: + oled_write_P(PSTR("Adjust\n"), false); + break; + default: + oled_write_P(PSTR("Undefined\n"), false); + } + + // Host Keyboard LED Status + led_t led_state = host_keyboard_led_state(); + oled_write_P(led_state.num_lock ? PSTR("NUMLCK ") : PSTR(" "), false); + oled_write_P(led_state.caps_lock ? PSTR("CAPLCK ") : PSTR(" "), false); + oled_write_P(led_state.scroll_lock ? PSTR("SCRLCK ") : PSTR(" "), false); +} + +bool oled_task_user(void) { + if (is_keyboard_master()) { + render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) + } else { + render_kyria_logo(); + } + return false; +} +#endif + +#ifdef ENCODER_ENABLE +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + switch (get_highest_layer(layer_state)) { + case QWERTY: + if (clockwise) { // Ctrl + I + tap_code16(C(KC_I)); + } else { // Shift + F3 + tap_code16(S(KC_F3)); + } + break; + case LOWER: + // History scrubbing. For Adobe products, hold shift while moving + // backward to go forward instead. + if (clockwise) { + tap_code16(C(KC_Y)); + } else { + tap_code16(C(KC_Z)); + } + break; + case RAISE: + if (clockwise) { // Subscript: CTRL + = + tap_code16(C(KC_EQL)); + } + break; + default: + // Nothing + break; + } + } else if (index == 1) { + switch (get_highest_layer(layer_state)) { + case QWERTY: + // Scroll by letter horizontally + if (clockwise) { + tap_code16(KC_RGHT); + } else { + tap_code16(KC_LEFT); + } + case LOWER: + // Nothing + break; + case RAISE: + // Find previous/Find next + if (clockwise) { + tap_code(KC_F3); + } else { + tap_code16(S(KC_F3)); + } + default: + // Nothing + break; + } + } + return true; +} +#endif diff --git a/keyboards/splitkb/kyria/keymaps/asapjockey/rules.mk b/keyboards/splitkb/kyria/keymaps/asapjockey/rules.mk new file mode 100644 index 000000000000..65b44a2982e9 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/asapjockey/rules.mk @@ -0,0 +1,6 @@ +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enables the use of OLED displays +ENCODER_ENABLE = yes # Enables the use of one or more encoders +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +LEADER_ENABLE = yes # Enable the Leader Key feature +MOUSEKEY_ENABLE = no diff --git a/keyboards/splitkb/kyria/keymaps/benji/config.h b/keyboards/splitkb/kyria/keymaps/benji/config.h new file mode 100644 index 000000000000..8b29f9e13692 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/benji/config.h @@ -0,0 +1,34 @@ +/* Copyright 2019 Thomas Baart + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#ifdef OLED_ENABLE + #define OLED_DISPLAY_128X64 + #define OLED_FONT_H "keyboards/splitkb/kyria/keymaps/benji/glcdfont.c" +#endif + +#ifdef RGBLIGHT_ENABLE + #define RGBLIGHT_ANIMATIONS + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 150 +#endif + +// If you are using an Elite C rev3 on the slave side, uncomment the lines below: +// #define SPLIT_USB_DETECT +// #define NO_USB_STARTUP_CHECK diff --git a/keyboards/kyria/keymaps/benji/glcdfont.c b/keyboards/splitkb/kyria/keymaps/benji/glcdfont.c similarity index 100% rename from keyboards/kyria/keymaps/benji/glcdfont.c rename to keyboards/splitkb/kyria/keymaps/benji/glcdfont.c diff --git a/keyboards/splitkb/kyria/keymaps/benji/keymap.c b/keyboards/splitkb/kyria/keymaps/benji/keymap.c new file mode 100644 index 000000000000..1ad50e5fc4fb --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/benji/keymap.c @@ -0,0 +1,248 @@ +/* Copyright 2019 Thomas Baart + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layers { + _QWERTY = 0, + _LOWER, + _RAISE, + _ADJUST +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * Base Layer: QWERTY + * + * ,-------------------------------------------. ,-------------------------------------------. + * |RAIS/ESC| Q | W | E | R | T | | Y | U | I | O | P | | \ | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * |Ctrl/BS | A | S | D | F | G | | H | J | K | L | ; : | ' " | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | LShift | Z | X | C | V | B |LShift|LShift| |LShift|LShift| N | M | , < | . > | / ? | - _ | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | GUI | Del | Enter| Space| Esc | | Enter| Space| Tab | Bksp | AltGr| + * | | | Alt | Lower| Raise| | Lower| Raise| | | | + * `----------------------------------' `----------------------------------' + */ + [_QWERTY] = LAYOUT( + LT(_RAISE, KC_ESC), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_PIPE, + MT(MOD_LCTL, KC_BSPC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LSFT, KC_LSFT, KC_LSFT, KC_LSFT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_MINS, + KC_LGUI, KC_DEL, MT(MOD_LALT, KC_ENT), LT(_LOWER, KC_SPC), KC_LGUI, LT(_LOWER, KC_ENT), LT(_RAISE, KC_SPC), KC_TAB, KC_BSPC, KC_RALT + ), + /* + * Lower Layer: Symbols + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | ! | @ | { | } | | | | | | | | | | \ | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | # | $ | ( | ) | ` | | + | - | / | * | % | ' " | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | % | ^ | [ | ] | ~ | | | | | | & | = | , | . | / ? | - _ | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | ; | = | | = | ; | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_LOWER] = LAYOUT( + _______, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, _______, _______, _______, _______, _______, KC_BSLS, + _______, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV, KC_PLUS, KC_MINS, KC_SLSH, KC_ASTR, KC_PERC, KC_QUOT, + _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, _______, _______, _______, _______, KC_AMPR, KC_EQL, KC_COMM, KC_DOT, KC_SLSH, KC_MINS, + _______, _______, _______, KC_SCLN, KC_EQL, KC_EQL, KC_SCLN, _______, _______, _______ + ), + /* + * Raise Layer: Number keys, media, navigation + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | | Prev | Play | Next | VolUp| | Left | Down | Up | Right| | | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | | | | Mute | VolDn| | | | | | MLeft| Mdown| MUp |MRight| | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | |Mbtn1 |Mbtn2 |Mbtn3 | | | Mbtn4|Mbtn5 | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_RAISE] = LAYOUT( + _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, + _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, + _______, _______, _______, _______, KC_MUTE, KC_VOLD, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, _______, _______, + _______, KC_BTN1, KC_BTN2, KC_BTN3, _______, KC_BTN4, KC_BTN5, _______, _______, _______ + ), + /* + * Adjust Layer: Function keys, RGB + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | TOG | SAI | HUI | VAI | MOD | | | | | F11 | F12 | | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | | SAD | HUD | VAD | RMOD | | | | | | | | | | | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_ADJUST] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, + _______, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_MOD, _______, _______, _______, KC_F11, KC_F12, _______, + _______, _______, RGB_SAD, RGB_HUD, RGB_VAD, RGB_RMOD,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + // /* + // * Layer template + // * + // * ,-------------------------------------------. ,-------------------------------------------. + // * | | | | | | | | | | | | | | + // * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + // * | | | | | | | | | | | | | | + // * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + // * | | | | | | | | | | | | | | | | | | + // * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + // * | | | | | | | | | | | | + // * | | | | | | | | | | | | + // * `----------------------------------' `----------------------------------' + // */ + // [_LAYERINDEX] = LAYOUT( + // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + // ), +}; + +layer_state_t layer_state_set_user(layer_state_t state) { + return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); +} + +#ifdef OLED_ENABLE +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + return OLED_ROTATION_180; +} + +static void render_kyria_logo(void) { + static const char PROGMEM kyria_logo[] = { + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,48,24,108,244,130,194,193,25,125,119,97,1,193,226,178,52,44,24,48,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,64,64,192,64,64,64,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,136,24,48,56,28,221,193,156,62,127,127,127,62,156,193,221,156,14,6,4,140,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,64,64,64,64,64,64,64,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,48,76,230,243,253,254,252,190,255,223,255,255,159,158,254,249,243,230,76,48,192,0,0,0,0,0,0,0,0,0,1,6,12,26,22,38,35,65,64,67,119,95,76,65,33,32,23,27,12,6,1,0,0,0,0,0,0,0,0,0,0,192,48,12,6,3,1,0,192,224,240,248,252,254,255,224,128,0,1,3,6,12,48,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,96,130,7,15,7,3,2,6,13,255,255,255,7,2,2,3,7,7,7,131,96,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,96,128,0,0,0,127,255,255,255,255,255,255,255,255,227,99,62,0,0,128,96,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,6,4,8,9,19,17,17,19,17,19,18,10,8,4,6,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,6,4,8,8,17,17,17,17,17,17,17,8,8,4,6,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,96,48,152,72,228,52,34,10,74,74,58,178,50,116,228,200,24,176,96,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,96,48,152,200,228,228,242,242,242,242,242,242,242,228,228,200,152,48,96,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,1,0,0,192,240,248,248,248,248,184,152,140,204,249,231,255,191,159,223,6,1,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,1,0,63,127,249,240,240,241,251,159,191,159,251,241,240,240,249,127,63,0,1,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,12,24,49,39,79,79,143,143,143,143,149,149,149,67,65,33,49,24,12,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,12,24,48,32,64,71,159,135,159,135,159,135,159,135,159,71,64,32,48,24,12,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + +// 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,224,240,112,120, 56, 60, 28, 30, 14, 14, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 30, 28, 60, 56,120,112,240,224,192,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +// 0, 0, 0, 0, 0, 0, 0,192,224,240,124, 62, 31, 15, 7, 3, 1,128,192,224,240,120, 56, 60, 28, 30, 14, 14, 7, 7,135,232,127, 31,255,255, 31,127,231,135, 7, 7, 14, 14, 30, 28, 60, 56,120,240,224,192,128, 1, 3, 7, 15, 31, 62,124,240,224,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +// 0, 0, 0, 0,240,252,255, 31, 7, 1, 0, 0,192,240,252,254,255,247,243,177,176, 48, 48, 48, 48, 48, 48, 48,120,254,135, 1, 0, 0,255,255, 0, 0, 1,135,254,120, 48, 48, 48, 48, 48, 48, 48,176,177,243,247,255,254,252,240,192, 0, 0, 1, 7, 31,255,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +// 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,254,255,255, 1, 1, 7, 30,120,225,129,131,131,134,134,140,140,152,152,177,183,254,248,224,255,255,224,248,254,183,177,152,152,140,140,134,134,131,131,129,225,120, 30, 7, 1, 1,255,255,254, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0,255,255, 0, 0,192,192, 48, 48, 0, 0,240,240, 0, 0, 0, 0, 0, 0,240,240, 0, 0,240,240,192,192, 48, 48, 48, 48,192,192, 0, 0, 48, 48,243,243, 0, 0, 0, 0, 0, 0, 48, 48, 48, 48, 48, 48,192,192, 0, 0, 0, 0, 0, +// 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,127,255,255,128,128,224,120, 30,135,129,193,193, 97, 97, 49, 49, 25, 25,141,237,127, 31, 7,255,255, 7, 31,127,237,141, 25, 25, 49, 49, 97, 97,193,193,129,135, 30,120,224,128,128,255,255,127, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0, 63, 63, 3, 3, 12, 12, 48, 48, 0, 0, 0, 0, 51, 51, 51, 51, 51, 51, 15, 15, 0, 0, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 63, 63, 48, 48, 0, 0, 12, 12, 51, 51, 51, 51, 51, 51, 63, 63, 0, 0, 0, 0, 0, +// 0, 0, 0, 0, 15, 63,255,248,224,128, 0, 0, 3, 15, 63,127,255,239,207,141, 13, 12, 12, 12, 12, 12, 12, 12, 30,127,225,128, 0, 0,255,255, 0, 0,128,225,127, 30, 12, 12, 12, 12, 12, 12, 12, 13,141,207,239,255,127, 63, 15, 3, 0, 0,128,224,248,255, 63, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +// 0, 0, 0, 0, 0, 0, 0, 3, 7, 15, 62,124,248,240,224,192,128, 1, 3, 7, 15, 30, 28, 60, 56,120,112,112,224,224,225,231,254,248,255,255,248,254,231,225,224,224,112,112,120, 56, 60, 28, 30, 15, 7, 3, 1,128,192,224,240,248,124, 62, 15, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +// 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 15, 14, 30, 28, 60, 56,120,112,112,112,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,112,112,112,120, 56, 60, 28, 30, 14, 15, 7, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }; + oled_write_raw_P(kyria_logo, sizeof(kyria_logo)); +} + +static void render_qmk_logo(void) { + static const char PROGMEM qmk_logo[] = { + 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, + 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, + 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0}; + + oled_write_P(qmk_logo, false); +} + +static void render_status(void) { + // QMK Logo and version information + //render_kyria_logo(); + render_qmk_logo(); + oled_write_P(PSTR("Kyria rev B3nJ.P0tt3r\n\n"), false); + + // Host Keyboard Layer Status + oled_write_P(PSTR("Layer: "), false); + switch (get_highest_layer(layer_state)) { + case _QWERTY: + oled_write_P(PSTR("Chandra\n"), false); + break; + case _LOWER: + oled_write_P(PSTR("Jace\n"), false); + break; + case _RAISE: + oled_write_P(PSTR("Karn\n"), false); + break; + case _ADJUST: + oled_write_P(PSTR("Teferi\n"), false); + break; + default: + oled_write_P(PSTR("Ashiok\n"), false); + } + + // Host Keyboard LED Status + led_t led_usb_state = host_keyboard_led_state(); + oled_write_P(led_usb_state.num_lock? PSTR("NUMLCK ") : PSTR(" "), false); + oled_write_P(led_usb_state.caps_lock ? PSTR("CAPLCK ") : PSTR(" "), false); + oled_write_P(led_usb_state.scroll_lock ? PSTR("SCRLCK ") : PSTR(" "), false); +} + +bool oled_task_user(void) { + if (is_keyboard_master()) { + render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) + } else { + render_kyria_logo(); + } + return false; +} +#endif + +#ifdef ENCODER_ENABLE +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + switch (get_highest_layer(layer_state)) { + case _RAISE: + // Volume control + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + break; + case _LOWER: + // Page up/Page down + if (clockwise) { + tap_code(KC_PGDN); + } else { + tap_code(KC_PGUP); + } + break; + case _QWERTY: + // Page up/Page down + if (clockwise) { + tap_code(KC_DOWN); + } else { + tap_code(KC_UP); + } + break; + default: + break; + + } + } + return true; +} +#endif diff --git a/keyboards/splitkb/kyria/keymaps/benji/readme.md b/keyboards/splitkb/kyria/keymaps/benji/readme.md new file mode 100644 index 000000000000..57ea5e817366 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/benji/readme.md @@ -0,0 +1,246 @@ +# Kyria's Default Keymap + +[insert pretty KLE visualization once the keymap is vetted] + +The default keymap contains 5 layers which allows it to include all keys found on a ISO layout TKL keyboard plus media keys. +Hardware features of the Kyria such as OLEDs, rotary encoders and underglow are also supported. + +The five different layers are the following: +1. Base layer (QWERTY, Colemak-DH or Dvorak) +2. Navigation layer +3. Symbols/Numbers layer +4. Function layer +5. Adjust layer + +## Base layer(s) +``` +Base Layer: - + +,-------------------------------------------. ,-------------------------------------------. +| Tab | - | - | - | - | - | | - | - | - | - | - | Bksp | +|--------+------+------+------+------+------| |------+------+------+------+------+--------| +|Ctrl/Esc| - | - | - | - | - | | - | - | - | - | - |Ctrl/ - | +|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +| LShift | - | - | - | - | - | [ { |CapsLk| |F-Keys| ] } | - | - | - | - | - | RShift | +`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + |Adjust| LGUI | LAlt/| Space| Nav | | Sym | Space| AltGr| RGUI | Menu | + | | | Enter| | | | | | | | | + `----------------------------------' `----------------------------------' +``` +Three different well-known keyboard layouts are provided to fill in the placeholder `-` keys: QWERTY, Colemak-DH, and Dvorak. The default layer can be changed at runtime, more info on that in the section on the [adjust layer](#adjust-layer). + +For the rest of this write-up, the base layer will be assumed to be QWERTY and will be used as a reference to describe physical keys, e.g. “B key” vs, the much more verbose, “lower inner index key”. + +``` +Base Layer: QWERTY + +,-------------------------------------------. ,-------------------------------------------. +| Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | +|--------+------+------+------+------+------| |------+------+------+------+------+--------| +|Ctrl/Esc| A | S | D | F | G | | H | J | K | L | ; : |Ctrl/' "| +|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +| LShift | Z | X | C | V | B | [ { |CapsLk| |F-keys| ] } | N | M | , < | . > | / ? | RShift | +`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + |Adjust| LGUI | LAlt/| Space| Nav | | Sym | Space| AltGr| RGUI | Menu | + | | | Enter| | | | | | | | | + `----------------------------------' `----------------------------------' +``` + +Aside from variations in the alpha cluster, the rest of the base keys remain the same and are designed to feel familiar. + +![Step-by-step animation of the transformation of an ortholinear TKL to a Kyria](https://i.imgur.com/uVDCOek.gif) + +
+After making transformations to the classic ANSI US QWERTY TKL 60% to arrive to the layout of the Kyria, as illustrated in the animation above, the result looks like this: + +``` +,-------------------------------------------. ,-------------------------------------------. +| Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | +|--------+------+------+------+------+------| |------+------+------+------+------+--------| +| Cap Lk | A | S | D | F | G | | H | J | K | L | ; : | ' " | +|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +| LShift | Z | X | C | V | B | | | | | | N | M | , < | . > | / ? | RShift | +`--------+-------------+--------------------+------+------| |------+------+--------------------+------+---------------' + | LCtrl| LGUI | LAlt | Space| | | | Space| AltGr| RGUI | Menu | + | | | | | | | | | | | | + `----------------------------------' '----------------------------------' +``` + +First thing to notice is the presence of blank keys. To fill in the blank keys above the Space keys, we can take inspiration from other split keyboards featuring an extra inner index column on each half. A common mapping for those kind of keys are the bracket keys that got removed in the fourth step of the animated transformation. The thumb keys besides Spaces is prime real estate for dedicated layer-switching keys. It doesn't matter on which side is assigned the sym-layer-switch key but it helps to keep the nav-layer-switch on the left in order to keep the arrow keys on the right side like on a classic keyboard, so we'll put nav on the left and sym on the right. We'll address the remaining blank thumb keys later. + +The base layer is starting to form but there remains some flaws. One glaring issue is the position of Control. Control is a very commonly used function but the key on which it sits right now is way too tucked in under the hand to be able to press it comfortably with either the thumb or the pinky from resting position. In fact, installing a rotary encoder there is a common move among Kyria users and I guarantee you that activating Control by holding down a rotary encoder does not spark joy. Instead, let's employ a popular trick that involves remapping the current Caps Lock key, which is positioned at a comfortable position on the keyboard, to Control. + +We can go further though; a variant of this trick makes the Control key produce Escape when tapped. This is called a “modtap”. There is no use to tapping Control by itself without chording it with another key and there is no use to holding down the Esc key so why not combine the two into a single key? + +All of this leaves us with three blank keys. + +``` +,-------------------------------------------. ,-------------------------------------------. +| Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | +|--------+------+------+------+------+------| |------+------+------+------+------+--------| +|Ctrl/Esc| A | S | D | F | G | | H | J | K | L | ; : | ' " | +|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +| LShift | Z | X | C | V | B | [ { | | | | ] } | N | M | , < | . > | / ? | RShift | +`--------+-------------+--------------------+------+------| |------+------+--------------------+------+---------------' + | | LGUI | LAlt | Space| Nav | | Sym | Space| AltGr| RGUI | Menu | + | | | | | | | | | | | | + `----------------------------------' '----------------------------------' +``` + +These keys are not easily reachable while touch typing (that is, not reachable without picking up your hand) and should thus be associated with functions that you are not likely to be typed within a stream of text. The idea is that if you have to pick up your hand to hit a key, you want it to be at a time when you are likely to be pausing your interaction with the machine, rather than in the midst of a flurry of typing. They're thus well suited for accessing the adjust layer and the function layer. We can also toss in Caps Lock even though it is an editing-type function that gets used within a stream of text because shouting in ALL-CAPS should be a deliberate action. + +``` +,-------------------------------------------. ,-------------------------------------------. +| Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | +|--------+------+------+------+------+------| |------+------+------+------+------+--------| +|Ctrl/Esc| A | S | D | F | G | | H | J | K | L | ; : | ' " | +|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +| LShift | Z | X | C | V | B | [ { |CapsLk| |F-keys| ] } | N | M | , < | . > | / ? | RShift | +`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + |Adjust| LGUI | LAlt | Space| Nav | | Sym | Space| AltGr| RGUI | Menu | + | | | | | | | | | | | | + `----------------------------------' `----------------------------------' +``` + +The next glaring issue is the absence of an Enter key on the current base layer this far. Enter is a very frequently used key so it deserves to be placed at a good spot in the keymap. The best way to insert it in the keymap with minimal changes to the current layout is to use modtaps. A tempting solution is to turn the RShift key into a RShift/Enter modtap but that can result in chat messages sent too frustratingly early when you're not used to it. Using GUI is also sub-optimal because tapping the GUI modifier actually has a use as opposed to taps of the Control or the Shift key. Pressing and releasing the GUI key by itself opens the App menu in many desktop environments. The natural choice is thus LAlt/Enter. That way, Enter is 1u away from resting thumb position and is unlikely to get accidentally activated because Alt is very rarely used in the midst of prose. + +Finally, we're one Quality-Of-Life update away from the actual base layer. Ctrl/' " not only preserves symmetry in the keymap with Ctrl/Esc but also helps balance the load between your pinkies and invites you to use both hands instead of contortions. Perhaps more importantly, it also frees you from the necessity of picking up your hand, breaking touch typing position and pressing a pinky key with your ring finger in order to execute Ctrl+A or Ctrl+Z. That becomes even more important on a board with such an aggressive pinky columnar stagger like the Kyria. + + +``` +,-------------------------------------------. ,-------------------------------------------. +| Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | +|--------+------+------+------+------+------| |------+------+------+------+------+--------| +|Ctrl/Esc| A | S | D | F | G | | H | J | K | L | ; : |Ctrl/' "| +|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +| LShift | Z | X | C | V | B | [ { |CapsLk| |F-keys| ] } | N | M | , < | . > | / ? | RShift | +`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + |Adjust| LGUI | LAlt/| Space| Nav | | Sym | Space| AltGr| RGUI | Menu | + | | | Enter| | | | | | | | | + `----------------------------------' `----------------------------------' +``` + +
+ +## Navigation layer + +``` +Nav Layer: Media, navigation + +,-------------------------------------------. ,-------------------------------------------. +| | | | | | | | PgUp | Home | ↑ | End | VolUp| Delete | +|--------+------+------+------+------+------| |------+------+------+------+------+--------| +| | GUI | Alt | Ctrl | Shift| | | PgDn | ← | ↓ | → | VolDn| Insert | +|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +| | | | | | | |ScLck | | | | Pause|M Prev|M Play|M Next|VolMut| PrtSc | +`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + | | | | | | | | | | | | + | | | | | | | | | | | | + `----------------------------------' `----------------------------------' +``` + +This is where you'll find all the keys that are generally between the main block of a classic keyboard and the numpad in addition to media controls and modifiers on easy access on the home row for fast and comfortable chording with navigation keys. + +Useful mnemonics: +- “GACS” to remember the order of the modifiers on the left-hand home row +- Scroll Lock is on the same key as Caps Lock because they're both locks +- Delete is on the same key as Backspace because they both erase characters +- Home is the leftmost position on the current line so it is above . Same logic applies for End. +- Media Previous = ⏮, Media Next = ⏭ +- Page Up, Page Down and Volume Up, Volume Down are positioned like the main Up and Down keys. + +## Sym layer +``` +Sym Layer: Numbers, symbols + +,-------------------------------------------. ,-------------------------------------------. +| ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | = | +|--------+------+------+------+------+------| |------+------+------+------+------+--------| +| ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | + | +|--------+------+------+------+------+------+-------------. ,------+-------------+------+------+------+------+--------| +| | | \ | : | ; | - | \ | | [ { | | | | ] } | # ~ | _ | , | . | / | ? | +`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + | | | | | | | | | | | | + | | | | | | | | | | | | + `----------------------------------' `----------------------------------' +``` +The top row is the unshifted num row, the home row of the layer is the shifted num row and the bottom row contains ISO keys (\ | and # ~, which are respectively `KC_NUBS` and `KC_NUHS`), the hyphen `-` and the underscore `_` on the best lower row spot because of how frequent they are and redundant symbols that are already present on the base layer but are reproduced here to avoid juggling back and forth between base, shift, and sym when typing a string of symbols. + +The layout of the first two rows needs no introduction, you're already used to them but it's worth looking into the structure of the bottom row. + +The two halves are mirrored in a sense. On the right, you can find , . / at their usual spots with the addition of Shift+/=? to the right of the / key to remove the need to press simultaneously Sym and a Shift key to access `?`. + +Now, if you look at the left side, you'll notice that the mirror of , is ;, the mirror of . is : and the mirror of / is \\. The same logic used for Shift+/=? also applies to Shift+\\=|. + +As for the ISO keys, they are positioned more or less like they would on a classic keyboard: `KC_NUBS` on the left and `KC_NUHS` on the right. + +## Function layer +``` +Function Layer: Function keys + +,-------------------------------------------. ,-------------------------------------------. +| | F9 | F10 | F11 | F12 | | | | | | | | | +|--------+------+------+------+------+------| |------+------+------+------+------+--------| +| | F5 | F6 | F7 | F8 | | | | Shift| Ctrl | Alt | GUI | | +|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +| | F1 | F2 | F3 | F4 | | | | | | | | | | | | | +`--------+------+------+--------------------+------+------| |------+------+------+------+------+----------------------' + | | | | | | | | | | | | + | | | | | | | | | | | | + `----------------------------------' `----------------------------------' +``` +In a similar fashion to the nav layer, pressing down `FKEYS` with the right thumb enables a numpad of function keys on the opposite hand and modifiers on the right-hand home row. Once again, mirror symmetry is leveraged in this keymap for the order of the right-hand modifiers. + +Since there are more than 10 function keys, the cluster of F-keys does not follow the usual 3×3+1 numpad arrangement. + + +## Adjust layer +``` +Adjust Layer: Default layer settings, RGB + +,-------------------------------------------. ,-------------------------------------------. +| | | |QWERTY| | | | | | | | | | +|--------+------+------+------+------+------| |------+------+------+------+------+--------| +| | | |Dvorak| | | | TOG | SAI | HUI | VAI | MOD | | +|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +| | | |Colmak| | | | | | | | | SAD | HUD | VAD | RMOD | | +`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + | | | | | | | | | | | | + | | | | | | | | | | | | + `----------------------------------' `----------------------------------' +``` + +Default layer settings on the left and various RGB underglow controls on the right. + +The default layer settings are lined up on the middle finger column because the home middle finger key is D on QWERTY (like the “D” in “Dvorak”) and the lower middle finger key is C on QWERTY (like the “C” in “Colemak”). I can hear you say that “QWERTY” doesn't start with “E” but Dvorak and Colemak were already aligned in a column so the QWERTY may as well join the formation. + +NOTE: The default layer settings set by those keys are *NOT* stored in EEPROM and thus do not persist through boots. If you wish to change the default layer in a non-volatile manner, either change the order of the layers in the firmware, for example like so if you want to set Dvorak as the new default: +```c +enum layers { + _DVORAK = 0, + _QWERTY, + _COLEMAK_DH, + _NAV, + _SYM, + _FUNCTION, + _ADJUST +}; +``` +or re-define the `QWERTY`, `COLEMAK` and `DVORAK` keys to point to custom keycodes starting on `SAFE_RANGE` and calling the `set_single_persistent_default_layer` function inside of `process_record_user`. + +## Hardware Features + +### Rotary Encoder +The left rotary encoder is programmed to control the volume whereas the right encoder sends PgUp or PgDn on every turn. + +### OLEDs +The OLEDs display the current layer at the top of the active layers stack, the Kyria logo and lock status (caps lock, num lock, scroll lock). + +### Underglow +The underglow LEDs should be red. + +## Going further... + +This default keymap can be used as is, unchanged, as a daily driver for your Kyria but you're invited to treat your keymap like a bonsai. At the beginning, it's just like the default keymap but from time to time, you can tweak it a little. Cut a little key here, let another combo grow there. Slowly but surely it will be a unique keymap like no other, that will fit you like a glove. + +Check out the #keymap-ideas channel on the official SplitKB Discord server for inspiration. diff --git a/keyboards/splitkb/kyria/keymaps/benji/rules.mk b/keyboards/splitkb/kyria/keymaps/benji/rules.mk new file mode 100644 index 000000000000..35f8ec90c6f7 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/benji/rules.mk @@ -0,0 +1,4 @@ +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enables the use of OLED displays +ENCODER_ENABLE = yes # Enables the use of one or more encoders +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow diff --git a/keyboards/splitkb/kyria/keymaps/cjuniet/config.h b/keyboards/splitkb/kyria/keymaps/cjuniet/config.h new file mode 100644 index 000000000000..8b63c1f58365 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/cjuniet/config.h @@ -0,0 +1,37 @@ +/* Copyright 2019 Thomas Baart + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#ifdef OLED_ENABLE + #define OLED_DISPLAY_128X64 + #define OLED_FONT_H "users/cjuniet/glcdfont.c" +#endif + +#ifdef RGBLIGHT_ENABLE + #define RGBLIGHT_ANIMATIONS + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_SLEEP +#endif + +#define EE_HANDS + +#define LEADER_PER_KEY_TIMING +#define LEADER_TIMEOUT 250 + +#define TAPPING_TOGGLE 2 diff --git a/keyboards/kyria/keymaps/cjuniet/default.json b/keyboards/splitkb/kyria/keymaps/cjuniet/default.json similarity index 100% rename from keyboards/kyria/keymaps/cjuniet/default.json rename to keyboards/splitkb/kyria/keymaps/cjuniet/default.json diff --git a/keyboards/splitkb/kyria/keymaps/cjuniet/keymap.c b/keyboards/splitkb/kyria/keymaps/cjuniet/keymap.c new file mode 100644 index 000000000000..7e485a7be8ec --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/cjuniet/keymap.c @@ -0,0 +1,128 @@ +#include QMK_KEYBOARD_H +#include "cjuniet.h" + +enum layers { + _COLEMAK = 0, + _SYMBOLS, + _NUMBERS, + _SPECIALS +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_COLEMAK] = LAYOUT( + KC_ESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS, + LCTL_T(KC_BSPC), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + LSFT_T(KC_DEL), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LAPO, LGUI_T(KC_LBRC), RGUI_T(KC_RBRC), KC_RAPC, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_MINS, + KC_TAB, KC_LGUI, TT(_SYMBOLS), LSFT_T(KC_SPC), LCTL_T(KC_ENT), RCTL_T(KC_ENT), RSFT_T(KC_SPC), TT(_NUMBERS), KC_RGUI, KC_LEAD), + [_SYMBOLS] = LAYOUT( + KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TILD, + KC_TRNS, KC_MPLY, KC_MS_L, KC_MS_U, KC_MS_R, KC_WH_U, KC_PGUP, KC_LEFT, KC_UP, KC_RGHT, KC_VOLU, KC_GRV, + KC_TRNS, KC_MUTE, KC_BTN1, KC_MS_D, KC_BTN2, KC_WH_D, KC_LT, KC_TRNS, KC_TRNS, KC_GT, KC_PGDN, KC_HOME, KC_DOWN, KC_END, KC_VOLD, KC_EQL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [_NUMBERS] = LAYOUT( + KC_TRNS, KC_MNXT, KC_F7, KC_F8, KC_F9, KC_F10, KC_PGUP, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_PMNS, + KC_TRNS, KC_MPLY, KC_F4, KC_F5, KC_F6, KC_F11, KC_TAB, KC_P4, KC_P5, KC_P6, KC_PAST, KC_PSLS, + KC_TRNS, KC_MPRV, KC_F1, KC_F2, KC_F3, KC_F12, KC_LPRN, KC_LT, KC_GT, KC_RPRN, KC_PGDN, KC_P1, KC_P2, KC_P3, KC_EQL, KC_PENT, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P0, KC_PDOT), + [_SPECIALS] = LAYOUT( + KC_TRNS, KC_NLCK, KC_CAPS, KC_SLCK, KC_LANG1, KC_LANG2, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_MOD, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, KC_TRNS, + KC_TRNS, KC_NO, RGB_SAD, RGB_HUD, RGB_VAD, RGB_RMOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; + +LEADER_EXTERNS(); + +void keyboard_post_init_user(void) { + led_t led_state = host_keyboard_led_state(); + if (!led_state.num_lock) { + tap_code(KC_NLCK); + } +} + +layer_state_t layer_state_set_user(layer_state_t state) { + return update_tri_layer_state(state, _SYMBOLS, _NUMBERS, _SPECIALS); +} + +void matrix_scan_user(void) { + LEADER_DICTIONARY() { + leading = false; + leader_end(); + + // Lock screen (macOS) + SEQ_ONE_KEY(KC_ESC) { + tap_code16(LCTL(LGUI(KC_Q))); + } + + // Escape-Shift-Z-Z (VIM) + SEQ_ONE_KEY(KC_Z) { + SEND_STRING(SS_TAP(X_ESC) SS_LSFT("zz")); + } + + // Dead grave accent (macOS) + SEQ_ONE_KEY(KC_E) { + tap_code16(LALT(KC_GRAVE)); + } + } +} + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + return OLED_ROTATION_180; +} + +static void render_kyria_logo(void) { + static const char PROGMEM kyria_logo[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,224,240,112,120, 56, 60, 28, 30, 14, 14, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 30, 28, 60, 56,120,112,240,224,192,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,192,224,240,124, 62, 31, 15, 7, 3, 1,128,192,224,240,120, 56, 60, 28, 30, 14, 14, 7, 7,135,231,127, 31,255,255, 31,127,231,135, 7, 7, 14, 14, 30, 28, 60, 56,120,240,224,192,128, 1, 3, 7, 15, 31, 62,124,240,224,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,240,252,255, 31, 7, 1, 0, 0,192,240,252,254,255,247,243,177,176, 48, 48, 48, 48, 48, 48, 48,120,254,135, 1, 0, 0,255,255, 0, 0, 1,135,254,120, 48, 48, 48, 48, 48, 48, 48,176,177,243,247,255,254,252,240,192, 0, 0, 1, 7, 31,255,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,254,255,255, 1, 1, 7, 30,120,225,129,131,131,134,134,140,140,152,152,177,183,254,248,224,255,255,224,248,254,183,177,152,152,140,140,134,134,131,131,129,225,120, 30, 7, 1, 1,255,255,254, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0,255,255, 0, 0,192,192, 48, 48, 0, 0,240,240, 0, 0, 0, 0, 0, 0,240,240, 0, 0,240,240,192,192, 48, 48, 48, 48,192,192, 0, 0, 48, 48,243,243, 0, 0, 0, 0, 0, 0, 48, 48, 48, 48, 48, 48,192,192, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,127,255,255,128,128,224,120, 30,135,129,193,193, 97, 97, 49, 49, 25, 25,141,237,127, 31, 7,255,255, 7, 31,127,237,141, 25, 25, 49, 49, 97, 97,193,193,129,135, 30,120,224,128,128,255,255,127, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0, 63, 63, 3, 3, 12, 12, 48, 48, 0, 0, 0, 0, 51, 51, 51, 51, 51, 51, 15, 15, 0, 0, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 63, 63, 48, 48, 0, 0, 12, 12, 51, 51, 51, 51, 51, 51, 63, 63, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 63,255,248,224,128, 0, 0, 3, 15, 63,127,255,239,207,141, 13, 12, 12, 12, 12, 12, 12, 12, 30,127,225,128, 0, 0,255,255, 0, 0,128,225,127, 30, 12, 12, 12, 12, 12, 12, 12, 13,141,207,239,255,127, 63, 15, 3, 0, 0,128,224,248,255, 63, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 7, 15, 62,124,248,240,224,192,128, 1, 3, 7, 15, 30, 28, 60, 56,120,112,112,224,224,225,231,254,248,255,255,248,254,231,225,224,224,112,112,120, 56, 60, 28, 30, 15, 7, 3, 1,128,192,224,240,248,124, 62, 15, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 15, 14, 30, 28, 60, 56,120,112,112,112,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,112,112,112,120, 56, 60, 28, 30, 14, 15, 7, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }; + oled_write_raw_P(kyria_logo, sizeof(kyria_logo)); +} + +static void render_qmk_logo(void) { + static const char PROGMEM qmk_logo[] = { + 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, + 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, + 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0}; + + oled_write_P(qmk_logo, false); +} + +static void render_status(void) { + render_qmk_logo(); + oled_write_ln_P(PSTR(" Chris's Kyria\n"), false); + + oled_write_P(PSTR(" "), false); + switch (get_highest_layer(layer_state)) { + case _COLEMAK: + oled_write_P(PSTR("Colemak"), false); + break; + case _SYMBOLS: + oled_write_P(PSTR("Symbols"), false); + break; + case _NUMBERS: + oled_write_P(PSTR("Numbers"), false); + break; + case _SPECIALS: + oled_write_P(PSTR("Special"), false); + break; + default: + oled_write_P(PSTR("Undefined"), false); + } + oled_write_ln_P(PSTR(" Layer\n"), false); +} + +bool oled_task_user(void) { + if (is_keyboard_master()) { + render_status(); + render_status_bar(); + } else { + render_kyria_logo(); + } + return false; +} diff --git a/keyboards/splitkb/kyria/keymaps/cjuniet/rules.mk b/keyboards/splitkb/kyria/keymaps/cjuniet/rules.mk new file mode 100644 index 000000000000..71feb286dac4 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/cjuniet/rules.mk @@ -0,0 +1,7 @@ +ENCODER_ENABLE = no +EXTRAKEY_ENABLE = yes +LEADER_ENABLE = yes +MOUSEKEY_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 +RGBLIGHT_ENABLE = no diff --git a/keyboards/splitkb/kyria/keymaps/corodiak/config.h b/keyboards/splitkb/kyria/keymaps/corodiak/config.h new file mode 100644 index 000000000000..3f031b69ffa0 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/corodiak/config.h @@ -0,0 +1,45 @@ +/* Copyright 2019 Thomas Baart + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#ifdef OLED_ENABLE + #define OLED_DISPLAY_128X64 +#endif + +#ifdef RGBLIGHT_ENABLE + #define RGBLIGHT_ANIMATIONS + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 +#endif + +// The Leader key allows to flexibly assign macros to key sequences. +#define LEADER_PER_KEY_TIMING +#define LEADER_TIMEOUT 350 + +#define TAPPING_TERM 200 + +// Turn off on slave +#define WAIT_FOR_USB + +// If you are using an Elite C rev3 on the slave side, uncomment the lines below: +#define SPLIT_USB_DETECT +#define NO_USB_STARTUP_CHECK + +// Allows to use either side as the master. Look at the documentation for info: +// https://docs.qmk.fm/#/config_options?id=setting-handedness +#define EE_HANDS diff --git a/keyboards/kyria/keymaps/corodiak/keymap.c b/keyboards/splitkb/kyria/keymaps/corodiak/keymap.c similarity index 100% rename from keyboards/kyria/keymaps/corodiak/keymap.c rename to keyboards/splitkb/kyria/keymaps/corodiak/keymap.c diff --git a/keyboards/splitkb/kyria/keymaps/corodiak/rules.mk b/keyboards/splitkb/kyria/keymaps/corodiak/rules.mk new file mode 100644 index 000000000000..59e2da986bbd --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/corodiak/rules.mk @@ -0,0 +1,5 @@ +# OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enables the use of OLED displays +# ENCODER_ENABLE = yes # Enables the use of one or more encoders +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +LEADER_ENABLE = yes # Enables the Leader shortcut funtionality diff --git a/keyboards/splitkb/kyria/keymaps/cwebster2/config.h b/keyboards/splitkb/kyria/keymaps/cwebster2/config.h new file mode 100644 index 000000000000..9a58f7751aef --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/cwebster2/config.h @@ -0,0 +1,55 @@ +/* Copyright 2020 Casey Webster + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#ifdef OLED_ENABLE + #define OLED_DISPLAY_128X64 +#endif + +#ifdef RGBLIGHT_ENABLE + //#define RGBLIGHT_ANIMATIONS + //#define RGBLIGHT_EFFECT_ALTERNATING + #define RGBLIGHT_EFFECT_BREATHING + //#define RGBLIGHT_EFFECT_CHRISTMAS + //#define RGBLIGHT_EFFECT_KNIGHT + //#define RGBLIGHT_EFFECT_RAINBOW_MOOD + //#define RGBLIGHT_EFFECT_RAINBOW_SWIRL + //#define RGBLIGHT_EFFECT_RGB_TEST + //#define RGBLIGHT_EFFECT_SNAKE + //#define RGBLIGHT_EFFECT_STATIC_GRADIENT + //#define RGBLIGHT_EFFECT_TWINKLE + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_SLEEP + #define RGBLIGHT_LIMIT_VAL 128 + #define RGBLIGHT_EFFECT_BREATHE_MAX 128 + #define RGBLIGHT_LAYERS + #define RGBLIGHT_MAX_LAYERS 16 + //#define RGBLIGHT_STARTUP_ANIMATION +#endif + +#ifdef COMBO_ENABLE + #define COMBO_COUNT 5 +#endif + +#define QMK_KEYS_PER_SCAN 4 + +#define EE_HANDS + +//#define DEBUG_MATRIX_SCAN_RATE +//#define SPLIT_MODS_ENABLE diff --git a/keyboards/splitkb/kyria/keymaps/cwebster2/keymap.c b/keyboards/splitkb/kyria/keymaps/cwebster2/keymap.c new file mode 100644 index 000000000000..1abf865010c5 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/cwebster2/keymap.c @@ -0,0 +1,411 @@ +/* Copyright 2020 Casey Webster + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +//#include "raw_hid.h" +#define RAW_EPSIZE 8 +#include + +#include "cwebster2.h" + +#ifdef WPM_ENABLE +char wpm_str[10]; +uint16_t wpm_graph_timer = 0; +#endif + +#ifdef COMBO_ENABLE +enum combos { + ZX_COPY, + CV_PASTE, + PB_PARENS, + FP_CURLY, + DV_SQUARE +}; + +const uint16_t PROGMEM copy_combo[] = { KC_Z, KC_X, COMBO_END }; +const uint16_t PROGMEM paste_combo[] = { KC_C, KC_D, COMBO_END }; +const uint16_t PROGMEM curly_combo[] = { KC_F, KC_P, COMBO_END }; +const uint16_t PROGMEM parens_combo[] = { KC_P, KC_B, COMBO_END }; +const uint16_t PROGMEM square_combo[] = { KC_D, KC_V, COMBO_END }; + +combo_t key_combos[COMBO_COUNT] = { + [ZX_COPY] = COMBO(copy_combo, LCTL_T(KC_C)), + [CV_PASTE] = COMBO(paste_combo, LCTL_T(KC_V)), + [PB_PARENS] = COMBO(parens_combo, KC_LPRN), + [FP_CURLY] = COMBO(curly_combo, KC_LCBR), + [DV_SQUARE] = COMBO(square_combo, KC_LBRC) +}; +#endif + +#define LAYOUT_kyria_base( \ + L01, L02, L03, L04, L05, R05, R04, R03, R02, R01, \ + L11, L12, L13, L14, L15, R15, R14, R13, R12, R11, \ + L21, L22, L23, L24, L25, R25, R24, R23, R22, R21, \ + L33, L34, L35, R35, R34, R33 \ + ) \ + LAYOUT_kyria_wrapper ( \ + KC_GRV, L01, L02, L03, L04, L05, R05, R04, R03, R02, R01, KC_BSLS, \ + KC_CTLBS, L11, L12, L13, L14, L15, R15, R14, R13, R12, R11, KC_QUOT, \ + KC_EQL, L21, L22, L23, L24, L25, KC_LCCL, KC_LGUI, KC_ALTCL, KC_LSFT, R25, R24, R23, R22, R21, KC_MINS, \ + SCMD_T(KC_LBRC), C_S_T(KC_MINS), L33, L34, L35, R35, R34, R33, TO(_GAME), KC_PSCR \ + ) +#define LAYOUT_kyria_base_wrapper(...) LAYOUT_kyria_base(__VA_ARGS__) + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* + * Base Layer: QWERTY + */ + [_QWERTY] = LAYOUT_kyria_base_wrapper( + /* ,-----------------------. ,-----------------------. */ + _______QWERTY_L1______, _______QWERTY_R1______, + _______QWERTY_L2______, _______QWERTY_R2______, + _______QWERTY_L3______, _______QWERTY_R3______, + _______NAKED_L___T____, _______THUMBS_R_______ + /* `---------------------' `---------------------' */ + ), + [_COLEMAK] = LAYOUT_kyria_wrapper( + /* ,-----------------------. ,-----------------------. */ + KC_GRV, _______COLEMAK_L1_____, _______COLEMAK_R1_____, KC_BSLS, + KC_CTLBS, _______COLEMAK_L2_____, _______COLEMAK_R2_____, KC_SCLN, + KC_EQL, _______COLEMAK_L3_____, KC_LCCL, KC_LGUI, KC_ALTCL, KC_LSFT, _______COLEMAK_R3_____, KC_MINS, + SCMD_T(KC_LBRC), C_S_T(KC_MINS), _______THUMBS_L_______, _______THUMBS_R_______, TO(_QWERTY), KC_PSCR + /* `---------------------' `---------------------' */ + ), + // GAME layout -- qwerty without homerow mods + [_GAME] = LAYOUT_kyria_wrapper( + /* ,-------------------------------------------. ,-------------------------------------------. */ + KC_GRV, _______COLEMAK_L1_____, _______COLEMAK_R1_____, KC_BSLS, + KC_CTLBS, KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, KC_SCLN, + KC_LSFT, _______COLEMAK_L3_____, KC_LCCL, KC_LALT, KC_ALTCL, KC_LSFT, _______COLEMAK_R3_____, KC_MINS, + KC_EQL, MO(_NUM), _______NAKED_L___T____, _______THUMBS_R_______, TO(_COLEMAK), KC_F12 + /* `----------------------------------' `----------------------------------' */ + ), + [_FN] = LAYOUT_kyria_base_wrapper( + /* ,-----------------------. ,-----------------------. */ + _______FN_______L1____, _______INACTIVE_R1____, + _______FN_______L2____, _______INACTIVE_R2____, + _______FN_______L3____, _______NAV______R2____, + _______FN________T____, _______INACTIVE__T____ + /* `---------------------' `---------------------' */ + ), + [_SYMBOLS] = LAYOUT_kyria_base_wrapper( + /* ,-----------------------. ,-----------------------. */ + _______SYM______L1____, _______INACTIVE_R1____, + _______SYM______L2____, _______INACTIVE_R2____, + _______SYM______L3____, _______INACTIVE_R3____, + _______SYM_______T____, _______INACTIVE__T____ + /* `---------------------' `---------------------' */ + ), + [_NUM] = LAYOUT_kyria_base_wrapper( + /* ,-----------------------. ,-----------------------. */ + _______NUM______L1____, _______INACTIVE_R1____, + _______NUM______L2____, _______INACTIVE_R2____, + _______NUM______L3____, _______INACTIVE_R3____, + _______NUM_______T____, _______INACTIVE__T____ + /* `---------------------' `---------------------' */ + ), + [_NAV] = LAYOUT_kyria_base_wrapper( + /* ,-----------------------. ,-----------------------. */ + _______INACTIVE_L1____, _______NAV______R1____, + _______INACTIVE_L2____, _______NAV______R2____, + _______INACTIVE_L3____, _______NAV______R3____, + _______INACTIVE__T____, _______NAV_______T____ + /* `---------------------' `---------------------' */ + ), + [_MOUSE] = LAYOUT_kyria_base_wrapper( + /* ,-----------------------. ,-----------------------. */ + _______INACTIVE_L1____, _______MOUSE____R1____, + _______INACTIVE_L2____, _______MOUSE____R2____, + _______INACTIVE_L3____, _______MOUSE____R3____, + _______INACTIVE__T____, _______MOUSE_____T____ + /* `---------------------' `---------------------' */ + ), + [_MEDIA] = LAYOUT_kyria_base_wrapper( + /* ,-----------------------. ,-----------------------. */ + _______INACTIVE_L1____, _______MEDIA____R1____, + _______INACTIVE_L2____, _______MEDIA____R2____, + _______INACTIVE_L3____, _______MEDIA____R3____, + _______INACTIVE__T____, _______MEDIA_____T____ + /* `---------------------' `---------------------' */ + ), +}; + +#ifdef RAW_ENABLE +static void send_layer_via_hid(int layer) { + uint8_t data[RAW_EPSIZE]; + data[0] = 1; + data[1] = layer; + raw_hid_send(data, sizeof(data)); + return; +} +#endif + + +#ifdef RGBLIGHT_LAYERS +const rgblight_segment_t PROGMEM my_qwerty_layer[] = RGBLIGHT_LAYER_SEGMENTS( {0, 20, HSV_RED} ); +const rgblight_segment_t PROGMEM my_colemak_layer[] = RGBLIGHT_LAYER_SEGMENTS( {0, 20, HSV_BLUE} ); +const rgblight_segment_t PROGMEM my_game_layer[] = RGBLIGHT_LAYER_SEGMENTS( {0, 20, HSV_RED} ); +const rgblight_segment_t PROGMEM my_fn_layer[] = RGBLIGHT_LAYER_SEGMENTS( {0, 20, HSV_PINK} ); +const rgblight_segment_t PROGMEM my_symbols_layer[] = RGBLIGHT_LAYER_SEGMENTS( {0, 20, HSV_GREEN} ); +const rgblight_segment_t PROGMEM my_num_layer[] = RGBLIGHT_LAYER_SEGMENTS( {0, 20, HSV_CORAL} ); +const rgblight_segment_t PROGMEM my_nav_layer[] = RGBLIGHT_LAYER_SEGMENTS( {0, 20, HSV_GOLDENROD} ); +const rgblight_segment_t PROGMEM my_mouse_layer[] = RGBLIGHT_LAYER_SEGMENTS( {0, 20, HSV_TURQUOISE} ); +const rgblight_segment_t PROGMEM my_media_layer[] = RGBLIGHT_LAYER_SEGMENTS( {0, 20, HSV_MAGENTA} ); + +const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 3, HSV_RED}, + {7, 1, HSV_RED}, + {10, 3, HSV_RED}, + {17, 1, HSV_RED} +); + +const rgblight_segment_t PROGMEM my_shift_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {3, 1, HSV_RED}, + {13, 1, HSV_RED} +); + +const rgblight_segment_t PROGMEM my_ctrl_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {4, 1, HSV_ORANGE}, + {14, 1, HSV_ORANGE} +); + +const rgblight_segment_t PROGMEM my_alt_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {5, 1, HSV_GOLD}, + {15, 1, HSV_GOLD} +); + +const rgblight_segment_t PROGMEM my_gui_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {9, 1, HSV_SPRINGGREEN}, + {19, 1, HSV_SPRINGGREEN} +); + +const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( + my_colemak_layer, + my_qwerty_layer, + my_game_layer, + my_fn_layer, + my_symbols_layer, + my_num_layer, + my_nav_layer, + my_mouse_layer, + my_media_layer, + my_capslock_layer, + my_shift_layer, + my_ctrl_layer, + my_alt_layer, + my_gui_layer +); + +void matrix_scan_keymap(void) { + uint8_t mods = mod_config(get_mods()); + rgblight_set_layer_state(10, mods & MOD_MASK_SHIFT); + rgblight_set_layer_state(11, mods & MOD_MASK_CTRL); + rgblight_set_layer_state(12, mods & MOD_MASK_ALT); + rgblight_set_layer_state(13, mods & MOD_MASK_GUI); +} +#endif + +void keyboard_post_init_user(void) { + rgblight_sethsv_noeeprom(HSV_BLUE); + keyboard_post_init_rgb(); +#ifdef RGBLIGHT_LAYERS + rgblight_layers = my_rgb_layers; +#else + rgblight_sethsv_noeeprom(HSV_BLUE); +#endif + /*debug_enable=true;*/ + /*debug_matrix=true;*/ +} + +//todo https://github.com/qmk/qmk_firmware/blob/debdc6379c7a72815df1f53e3406479381d243af/keyboards/crkbd/keymaps/soundmonster/keymap.c RGBRST + +layer_state_t layer_state_set_user(layer_state_t state) { +#ifdef RGBLIGHT_LAYERS + for (int i = _QWERTY; i < __LAST; i++) { + rgblight_set_layer_state(i, layer_state_cmp(state, i)); + } +# ifdef RAW_ENABLE + send_layer_via_hid(state); +# endif +#endif + return state; +} + +#ifdef RGBLIGHT_LAYERS +bool led_update_user(led_t led_state) { + rgblight_set_layer_state(9, led_state.caps_lock); + return true; +} +#endif + +#ifdef OLED_ENABLE +void suspend_power_down_user() { + oled_clear(); + oled_off(); +} + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + return OLED_ROTATION_180; +} + +static void render_logo(void) { + /*static const char PROGMEM qmk_logo[] = {*/ + /* 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,*/ + /* 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,*/ + /* 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0};*/ + + static const char PROGMEM logo[] = { + // canvas is 128x64. need 16 padding + // 80x32 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x60, 0xe0, 0xf0, 0xfe, 0xfe, 0xf0, 0x60, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x1c, 0x3c, 0x7c, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x7c, 0xf8, 0xe0, 0x60, 0x20, 0x10, 0x10, 0x0c, 0x0f, 0x09, 0x08, 0x00, 0x09, 0x9b, 0x5c, 0x50, 0x10, 0x20, 0x40, 0xe0, 0xf8, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0x78, 0x38, 0x38, 0x10, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x03, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x1f, 0x1f, 0x1f, 0x1f, 0x17, 0x15, 0x3d, 0xef, 0xaf, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x40, 0xa0, 0xbf, 0xff, 0x3f, 0x3f, 0x3f, 0x1f, 0x1f, 0x1f, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + oled_write_raw_P(logo, sizeof(logo)); + + oled_advance_page(false); + oled_advance_page(false); + oled_advance_page(false); + oled_advance_page(false); +// oled_write_P(qmk_logo, false); + +#ifdef COMBO_ENABLE + oled_write_P(PSTR("Combos enabled: "), false); + if (is_combo_enabled()) { + oled_write_P(PSTR("Yes\n"), false); + } else { + oled_write_P(PSTR("No\n"), false); + } +#endif + +#ifdef SPLIT_MODS_ENABLE + uint8_t mods = get_mods() | get_weak_mods(); + oled_write_P((mods & MOD_MASK_GUI) ? PSTR("GUI ") : PSTR(" "), false); + oled_write_P((mods & MOD_MASK_ALT) ? PSTR("ALT ") : PSTR(" "), false); + oled_write_P((mods & MOD_MASK_CTRL) ? PSTR("CTRL ") : PSTR(" "), false); + oled_write_P((mods & MOD_MASK_SHIFT) ? PSTR("SHFT ") : PSTR(" "), false); + oled_write_P(PSTR("\n"), false); + +#endif + +#ifdef WPM_ENABLE + // Write WPM + uint8_t n = get_current_wpm(); + wpm_str[3] = '\0'; + wpm_str[2] = '0' + n % 10; + wpm_str[1] = '0' + (n /= 10) % 10; + wpm_str[0] = '0' + n / 10 ; + //oled_write_P(PSTR("\n"), false); + oled_write_P(PSTR(" WPM: "), false); + oled_write(wpm_str, false); +#endif +} + + +static void render_status(void) { + static bool isColemak = false; + // QMK Logo and version information + oled_write_P(PSTR("Kyria rev1.3\n\n"), false); + + oled_write_P(isColemak ? PSTR("COLEMAK ") : PSTR("QWERTY "), false); + + // Host Keyboard Layer Status + switch (get_highest_layer(layer_state)) { + case _QWERTY: + oled_write_P(PSTR("Game\n"), false); + isColemak = false; + break; + case _SYMBOLS: + oled_write_P(PSTR("Shifted Sym\n"), false); + break; + case _NUM: + oled_write_P(PSTR("Numbers\n"), false); + break; + case _NAV: + oled_write_P(PSTR("Navigation\n"), false); + break; + case _FN: + oled_write_P(PSTR("Fn\n"), false); + break; + case _GAME: + oled_write_P(PSTR("Game\n"), false); + isColemak = true; + break; + case _COLEMAK: + oled_write_P(PSTR("Default\n"), false); + isColemak = true; + break; + case _MEDIA: + oled_write_P(PSTR("Media keys\n"), false); + break; + case _MOUSE: + oled_write_P(PSTR("Mouse keys\n"), false); + break; + default: + oled_write_P(PSTR("Undefined\n"), false); + } + + uint8_t mods = get_mods() | get_weak_mods(); + oled_write_P(PSTR("\n"), false); + oled_write_P((mods & MOD_MASK_GUI) ? PSTR("GUI ") : PSTR(" "), false); + oled_write_P((mods & MOD_MASK_ALT) ? PSTR("ALT ") : PSTR(" "), false); + oled_write_P((mods & MOD_MASK_CTRL) ? PSTR("CTRL ") : PSTR(" "), false); + oled_write_P((mods & MOD_MASK_SHIFT) ? PSTR("SHFT ") : PSTR(" "), false); + oled_write_P(PSTR("\n"), false); + +#define I3MASK MOD_BIT(KC_LGUI) +#define I3SMASK (MOD_BIT(KC_LGUI) | MOD_BIT(KC_LSFT)) +#define KMASK (MOD_BIT(KC_LCTL) | MOD_BIT(KC_LSFT)) + + oled_write_P((mods == I3MASK) ? PSTR("I3 ") : (mods == I3SMASK) ? PSTR("I3-SFT ") : PSTR(" "), false); + oled_write_P((mods == KMASK) ? PSTR("KITTY ") : PSTR(" "), false); + oled_write_P(PSTR("\n"), false); + + // Host Keyboard LED Status + uint8_t led_usb_state = host_keyboard_leds(); + oled_write_P(IS_LED_ON(led_usb_state, USB_LED_NUM_LOCK) ? PSTR("NUMLCK ") : PSTR(" "), false); + oled_write_P(IS_LED_ON(led_usb_state, USB_LED_CAPS_LOCK) ? PSTR("CAPLCK ") : PSTR(" "), false); + oled_write_P(IS_LED_ON(led_usb_state, USB_LED_SCROLL_LOCK) ? PSTR("SCRLCK ") : PSTR(" "), false); + +} + +bool oled_task_user(void) { + if (is_keyboard_master()) { + render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) + } else { + render_logo(); + } + return false; +} +#endif + + +#ifdef RAW_ENABLE +void raw_hid_receive(uint8_t *data, uint8_t length) { + // messages from host + // add ability to set color + raw_hid_send(data, length); +} +#endif diff --git a/keyboards/splitkb/kyria/keymaps/cwebster2/rules.mk b/keyboards/splitkb/kyria/keymaps/cwebster2/rules.mk new file mode 100644 index 000000000000..e2e6a3268903 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/cwebster2/rules.mk @@ -0,0 +1,6 @@ +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enables the use of OLED displays +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +RAW_ENABLE = no +WPM_ENABLE = no +COMBO_ENABLE = no diff --git a/keyboards/splitkb/kyria/keymaps/default/config.h b/keyboards/splitkb/kyria/keymaps/default/config.h new file mode 100644 index 000000000000..be87e7ac999b --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/default/config.h @@ -0,0 +1,32 @@ +/* Copyright 2019 Thomas Baart + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#ifdef RGBLIGHT_ENABLE +# define RGBLIGHT_ANIMATIONS +# define RGBLIGHT_HUE_STEP 8 +# define RGBLIGHT_SAT_STEP 8 +# define RGBLIGHT_VAL_STEP 8 +# define RGBLIGHT_LIMIT_VAL 150 +#endif + +// Lets you roll mod-tap keys +#define IGNORE_MOD_TAP_INTERRUPT + +// If you are using an Elite C rev3 on the slave side, uncomment the lines below: +// #define SPLIT_USB_DETECT +// #define NO_USB_STARTUP_CHECK diff --git a/keyboards/splitkb/kyria/keymaps/default/keymap.c b/keyboards/splitkb/kyria/keymaps/default/keymap.c new file mode 100644 index 000000000000..20cb279ff623 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/default/keymap.c @@ -0,0 +1,315 @@ +/* Copyright 2019 Thomas Baart + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layers { + _QWERTY = 0, + _DVORAK, + _COLEMAK_DH, + _NAV, + _SYM, + _FUNCTION, + _ADJUST, +}; + + +// Aliases for readability +#define QWERTY DF(_QWERTY) +#define COLEMAK DF(_COLEMAK_DH) +#define DVORAK DF(_DVORAK) + +#define SYM MO(_SYM) +#define NAV MO(_NAV) +#define FKEYS MO(_FUNCTION) +#define ADJUST MO(_ADJUST) + +#define CTL_ESC MT(MOD_LCTL, KC_ESC) +#define CTL_QUOT MT(MOD_RCTL, KC_QUOTE) +#define CTL_MINS MT(MOD_RCTL, KC_MINUS) +#define ALT_ENT MT(MOD_LALT, KC_ENT) + +// Note: LAlt/Enter (ALT_ENT) is not the same thing as the keyboard shortcut Alt+Enter. +// The notation `mod/tap` denotes a key that activates the modifier `mod` when held down, and +// produces the key `tap` when tapped (i.e. pressed and released). + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* + * Base Layer: QWERTY + * + * ,-------------------------------------------. ,-------------------------------------------. + * | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * |Ctrl/Esc| A | S | D | F | G | | H | J | K | L | ; : |Ctrl/' "| + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | LShift | Z | X | C | V | B | [ { |CapsLk| |F-keys| ] } | N | M | , < | . > | / ? | RShift | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * |Adjust| LGUI | LAlt/| Space| Nav | | Sym | Space| AltGr| RGUI | Menu | + * | | | Enter| | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_QWERTY] = LAYOUT( + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y, KC_U , KC_I , KC_O , KC_P , KC_BSPC, + CTL_ESC , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H, KC_J , KC_K , KC_L ,KC_SCLN,CTL_QUOT, + KC_LSFT , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_LBRC,KC_CAPS, FKEYS , KC_RBRC, KC_N, KC_M ,KC_COMM, KC_DOT ,KC_SLSH, KC_RSFT, + ADJUST , KC_LGUI, ALT_ENT, KC_SPC , NAV , SYM , KC_SPC ,KC_RALT, KC_RGUI, KC_APP + ), + +/* + * Base Layer: Dvorak + * + * ,-------------------------------------------. ,-------------------------------------------. + * | Tab | ' " | , < | . > | P | Y | | F | G | C | R | L | Bksp | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * |Ctrl/Esc| A | O | E | U | I | | D | H | T | N | S |Ctrl/- _| + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | LShift | ; : | Q | J | K | X | [ { |CapsLk| |F-keys| ] } | B | M | W | V | Z | RShift | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * |Adjust| LGUI | LAlt/| Space| Nav | | Sym | Space| AltGr| RGUI | Menu | + * | | | Enter| | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_DVORAK] = LAYOUT( + KC_TAB ,KC_QUOTE,KC_COMM, KC_DOT, KC_P , KC_Y , KC_F, KC_G , KC_C , KC_R , KC_L , KC_BSPC, + CTL_ESC , KC_A , KC_O , KC_E , KC_U , KC_I , KC_D, KC_H , KC_T , KC_N , KC_S , CTL_MINS, + KC_LSFT ,KC_SCLN, KC_Q , KC_J , KC_K , KC_X , KC_LBRC,KC_CAPS, FKEYS , KC_RBRC, KC_B, KC_M , KC_W , KC_V , KC_Z , KC_RSFT, + ADJUST, KC_LGUI, ALT_ENT, KC_SPC , NAV , SYM , KC_SPC ,KC_RALT, KC_RGUI, KC_APP + ), + +/* + * Base Layer: Colemak DH + * + * ,-------------------------------------------. ,-------------------------------------------. + * | Tab | Q | W | F | P | B | | J | L | U | Y | ; : | Bksp | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * |Ctrl/Esc| A | R | S | T | G | | M | N | E | I | O |Ctrl/' "| + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | LShift | Z | X | C | D | V | [ { |CapsLk| |F-keys| ] } | K | H | , < | . > | / ? | RShift | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * |Adjust| LGUI | LAlt/| Space| Nav | | Sym | Space| AltGr| RGUI | Menu | + * | | | Enter| | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_COLEMAK_DH] = LAYOUT( + KC_TAB , KC_Q , KC_W , KC_F , KC_P , KC_B , KC_J, KC_L , KC_U , KC_Y ,KC_SCLN, KC_BSPC, + CTL_ESC , KC_A , KC_R , KC_S , KC_T , KC_G , KC_M, KC_N , KC_E , KC_I , KC_O , CTL_QUOT, + KC_LSFT , KC_Z , KC_X , KC_C , KC_D , KC_V , KC_LBRC,KC_CAPS, FKEYS , KC_RBRC, KC_K, KC_H ,KC_COMM, KC_DOT ,KC_SLSH, KC_RSFT, + ADJUST, KC_LGUI, ALT_ENT, KC_SPC , NAV , SYM , KC_SPC ,KC_RALT, KC_RGUI, KC_APP + ), + +/* + * Nav Layer: Media, navigation + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | | | | | | | PgUp | Home | ↑ | End | VolUp| Delete | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | GUI | Alt | Ctrl | Shift| | | PgDn | ← | ↓ | → | VolDn| Insert | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | | | | | | |ScLck | | | | Pause|M Prev|M Play|M Next|VolMut| PrtSc | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_NAV] = LAYOUT( + _______, _______, _______, _______, _______, _______, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_VOLU, KC_DEL, + _______, KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_VOLD, KC_INS, + _______, _______, _______, _______, _______, _______, _______, KC_SLCK, _______, _______,KC_PAUSE, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_PSCR, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +/* + * Sym Layer: Numbers and symbols + * + * ,-------------------------------------------. ,-------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | = | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | + | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | | \ | : | ; | - | [ | { | | | | } | ] | _ | , | . | / | ? | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_SYM] = LAYOUT( + KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_EQL , + KC_TILD , KC_EXLM, KC_AT , KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PLUS, + KC_PIPE , KC_BSLS, KC_COLN, KC_SCLN, KC_MINS, KC_LBRC, KC_LCBR, _______, _______, KC_RCBR, KC_RBRC, KC_UNDS, KC_COMM, KC_DOT, KC_SLSH, KC_QUES, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +/* + * Function Layer: Function keys + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | F9 | F10 | F11 | F12 | | | | | | | | | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | F5 | F6 | F7 | F8 | | | | Shift| Ctrl | Alt | GUI | | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | F1 | F2 | F3 | F4 | | | | | | | | | | | | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_FUNCTION] = LAYOUT( + _______, KC_F9 , KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, + _______, KC_F5 , KC_F6 , KC_F7 , KC_F8 , _______, _______, KC_RSFT, KC_RCTL, KC_LALT, KC_RGUI, _______, + _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +/* + * Adjust Layer: Default layer settings, RGB + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | | |QWERTY| | | | | | | | | | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | | |Dvorak| | | | TOG | SAI | HUI | VAI | MOD | | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | | |Colmak| | | | | | | | | SAD | HUD | VAD | RMOD | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_ADJUST] = LAYOUT( + _______, _______, _______, QWERTY , _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, DVORAK , _______, _______, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_MOD, _______, + _______, _______, _______, COLEMAK, _______, _______,_______, _______, _______, _______, _______, RGB_SAD, RGB_HUD, RGB_VAD, RGB_RMOD, _______, + _______, _______, _______,_______, _______, _______, _______, _______, _______, _______ + ), + +// /* +// * Layer template +// * +// * ,-------------------------------------------. ,-------------------------------------------. +// * | | | | | | | | | | | | | | +// * |--------+------+------+------+------+------| |------+------+------+------+------+--------| +// * | | | | | | | | | | | | | | +// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +// * | | | | | | | | | | | | | | | | | | +// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' +// * | | | | | | | | | | | | +// * | | | | | | | | | | | | +// * `----------------------------------' `----------------------------------' +// */ +// [_LAYERINDEX] = LAYOUT( +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +// ), +}; + +/* The default OLED and rotary encoder code can be found at the bottom of qmk_firmware/keyboards/splitkb/kyria/rev1/rev1.c + * These default settings can be overriden by your own settings in your keymap.c + * For your convenience, here's a copy of those settings so that you can uncomment them if you wish to apply your own modifications. + * DO NOT edit the rev1.c file; instead override the weakly defined default functions by your own. + */ + +/* DELETE THIS LINE TO UNCOMMENT (1/2) +#ifdef OLED_ENABLE +oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; } + +bool oled_task_user(void) { + if (is_keyboard_master()) { + // QMK Logo and version information + // clang-format off + static const char PROGMEM qmk_logo[] = { + 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, + 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, + 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0}; + // clang-format on + + oled_write_P(qmk_logo, false); + oled_write_P(PSTR("Kyria rev1.0\n\n"), false); + + // Host Keyboard Layer Status + oled_write_P(PSTR("Layer: "), false); + switch (get_highest_layer(layer_state|default_layer_state)) { + case _QWERTY: + oled_write_P(PSTR("QWERTY\n"), false); + break; + case _DVORAK: + oled_write_P(PSTR("Dvorak\n"), false); + break; + case _COLEMAK_DH: + oled_write_P(PSTR("Colemak-DH\n"), false); + break; + case _NAV: + oled_write_P(PSTR("Nav\n"), false); + break; + case _SYM: + oled_write_P(PSTR("Sym\n"), false); + break; + case _FUNCTION: + oled_write_P(PSTR("Function\n"), false); + break; + case _ADJUST: + oled_write_P(PSTR("Adjust\n"), false); + break; + default: + oled_write_P(PSTR("Undefined\n"), false); + } + + // Write host Keyboard LED Status to OLEDs + led_t led_usb_state = host_keyboard_led_state(); + oled_write_P(led_usb_state.num_lock ? PSTR("NUMLCK ") : PSTR(" "), false); + oled_write_P(led_usb_state.caps_lock ? PSTR("CAPLCK ") : PSTR(" "), false); + oled_write_P(led_usb_state.scroll_lock ? PSTR("SCRLCK ") : PSTR(" "), false); + } else { + // clang-format off + static const char PROGMEM kyria_logo[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,224,240,112,120, 56, 60, 28, 30, 14, 14, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 30, 28, 60, 56,120,112,240,224,192,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,192,224,240,124, 62, 31, 15, 7, 3, 1,128,192,224,240,120, 56, 60, 28, 30, 14, 14, 7, 7,135,231,127, 31,255,255, 31,127,231,135, 7, 7, 14, 14, 30, 28, 60, 56,120,240,224,192,128, 1, 3, 7, 15, 31, 62,124,240,224,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,240,252,255, 31, 7, 1, 0, 0,192,240,252,254,255,247,243,177,176, 48, 48, 48, 48, 48, 48, 48,120,254,135, 1, 0, 0,255,255, 0, 0, 1,135,254,120, 48, 48, 48, 48, 48, 48, 48,176,177,243,247,255,254,252,240,192, 0, 0, 1, 7, 31,255,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,254,255,255, 1, 1, 7, 30,120,225,129,131,131,134,134,140,140,152,152,177,183,254,248,224,255,255,224,248,254,183,177,152,152,140,140,134,134,131,131,129,225,120, 30, 7, 1, 1,255,255,254, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0,255,255, 0, 0,192,192, 48, 48, 0, 0,240,240, 0, 0, 0, 0, 0, 0,240,240, 0, 0,240,240,192,192, 48, 48, 48, 48,192,192, 0, 0, 48, 48,243,243, 0, 0, 0, 0, 0, 0, 48, 48, 48, 48, 48, 48,192,192, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,127,255,255,128,128,224,120, 30,135,129,193,193, 97, 97, 49, 49, 25, 25,141,237,127, 31, 7,255,255, 7, 31,127,237,141, 25, 25, 49, 49, 97, 97,193,193,129,135, 30,120,224,128,128,255,255,127, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0, 63, 63, 3, 3, 12, 12, 48, 48, 0, 0, 0, 0, 51, 51, 51, 51, 51, 51, 15, 15, 0, 0, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 63, 63, 48, 48, 0, 0, 12, 12, 51, 51, 51, 51, 51, 51, 63, 63, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 63,255,248,224,128, 0, 0, 3, 15, 63,127,255,239,207,141, 13, 12, 12, 12, 12, 12, 12, 12, 30,127,225,128, 0, 0,255,255, 0, 0,128,225,127, 30, 12, 12, 12, 12, 12, 12, 12, 13,141,207,239,255,127, 63, 15, 3, 0, 0,128,224,248,255, 63, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 7, 15, 62,124,248,240,224,192,128, 1, 3, 7, 15, 30, 28, 60, 56,120,112,112,224,224,225,231,254,248,255,255,248,254,231,225,224,224,112,112,120, 56, 60, 28, 30, 15, 7, 3, 1,128,192,224,240,248,124, 62, 15, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 15, 14, 30, 28, 60, 56,120,112,112,112,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,112,112,112,120, 56, 60, 28, 30, 14, 15, 7, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }; + // clang-format on + oled_write_raw_P(kyria_logo, sizeof(kyria_logo)); + } + return false; +} +#endif + +#ifdef ENCODER_ENABLE +bool encoder_update_user(uint8_t index, bool clockwise) { + + if (index == 0) { + // Volume control + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else if (index == 1) { + // Page up/Page down + if (clockwise) { + tap_code(KC_PGDN); + } else { + tap_code(KC_PGUP); + } + } + return false; +} +#endif +DELETE THIS LINE TO UNCOMMENT (2/2) */ diff --git a/keyboards/splitkb/kyria/keymaps/default/readme.md b/keyboards/splitkb/kyria/keymaps/default/readme.md new file mode 100644 index 000000000000..7401609f356b --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/default/readme.md @@ -0,0 +1,249 @@ +# Kyria's Default Keymap + +![KLE render of the default Kyria keymap with QWERTY as the base layer. Layers are shown in sublegends.](https://i.ibb.co/RQZx2dY/default-kyria2.jpg) + + +The default keymap contains 5 layers which allows it to include all keys found on an ANSI layout TKL keyboard plus media keys. +Hardware features of the Kyria such as OLEDs, rotary encoders and underglow are also supported. + +The five different layers are the following: +1. Base layer (QWERTY, Colemak-DH or Dvorak) +2. Navigation layer +3. Symbols/Numbers layer +4. Function layer +5. Adjust layer + +## Base layer(s) +``` +Base Layer: - + +,-------------------------------------------. ,-------------------------------------------. +| Tab | - | - | - | - | - | | - | - | - | - | - | Bksp | +|--------+------+------+------+------+------| |------+------+------+------+------+--------| +|Ctrl/Esc| - | - | - | - | - | | - | - | - | - | - |Ctrl/ - | +|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +| LShift | - | - | - | - | - | [ { |CapsLk| |F-Keys| ] } | - | - | - | - | - | RShift | +`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + |Adjust| LGUI | LAlt/| Space| Nav | | Sym | Space| AltGr| RGUI | Menu | + | | | Enter| | | | | | | | | + `----------------------------------' `----------------------------------' +``` +Three different well-known keyboard layouts are provided to fill in the placeholder `-` keys: QWERTY, Colemak-DH, and Dvorak. The default layer can be changed at runtime, more info on that in the section on the [adjust layer](#adjust-layer). + +For the rest of this write-up, the base layer will be assumed to be QWERTY and will be used as a reference to describe physical keys, e.g. “B key” vs, the much more verbose, “lower inner index key”. + +``` +Base Layer: QWERTY + +,-------------------------------------------. ,-------------------------------------------. +| Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | +|--------+------+------+------+------+------| |------+------+------+------+------+--------| +|Ctrl/Esc| A | S | D | F | G | | H | J | K | L | ; : |Ctrl/' "| +|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +| LShift | Z | X | C | V | B | [ { |CapsLk| |F-keys| ] } | N | M | , < | . > | / ? | RShift | +`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + |Adjust| LGUI | LAlt/| Space| Nav | | Sym | Space| AltGr| RGUI | Menu | + | | | Enter| | | | | | | | | + `----------------------------------' `----------------------------------' +``` + +Aside from variations in the alpha cluster, the rest of the base keys remain the same and are designed to feel familiar. + +![Step-by-step animation of the transformation of an ortholinear TKL to a Kyria](https://i.imgur.com/uVDCOek.gif) + +
+After making transformations to the classic ANSI US QWERTY TKL 60% to arrive to the layout of the Kyria, as illustrated in the animation above, the result looks like this: + +``` +,-------------------------------------------. ,-------------------------------------------. +| Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | +|--------+------+------+------+------+------| |------+------+------+------+------+--------| +| Cap Lk | A | S | D | F | G | | H | J | K | L | ; : | ' " | +|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +| LShift | Z | X | C | V | B | | | | | | N | M | , < | . > | / ? | RShift | +`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + | LCtrl| LGUI | LAlt | Space| | | | Space| AltGr| RGUI | Menu | + | | | | | | | | | | | | + `----------------------------------' '----------------------------------' +``` + +First thing to notice is the presence of blank keys. To fill in the blank keys above the Space keys, we can take inspiration from other split keyboards featuring an extra inner index column on each half. A common mapping for those kind of keys are the bracket keys that got removed in the fourth step of the animated transformation. The thumb keys besides Spaces is prime real estate for dedicated layer-switching keys. It doesn't matter on which side is assigned the sym-layer-switch key but it helps to keep the nav-layer-switch on the left in order to keep the arrow keys on the right side like on a classic keyboard, so we'll put nav on the left and sym on the right. We'll address the remaining blank thumb keys later. + +The base layer is starting to form but there remains some flaws. One glaring issue is the position of Control. Control is a very commonly used function but the key on which it sits right now is way too tucked in under the hand to be able to press it comfortably with either the thumb or the pinky from resting position. In fact, installing a rotary encoder there is a common move among Kyria users and I guarantee you that activating Control by holding down a rotary encoder does not spark joy. Instead, let's employ a popular trick that involves remapping the current Caps Lock key, which is positioned at a comfortable position on the keyboard, to Control. + +We can go further though; a variant of this trick makes the Control key produce Escape when tapped. This is called a “modtap”. There is no use to tapping Control by itself without chording it with another key and there is no use to holding down the Esc key so why not combine the two into a single key? + +All of this leaves us with three blank keys. + +``` +,-------------------------------------------. ,-------------------------------------------. +| Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | +|--------+------+------+------+------+------| |------+------+------+------+------+--------| +|Ctrl/Esc| A | S | D | F | G | | H | J | K | L | ; : | ' " | +|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +| LShift | Z | X | C | V | B | [ { | | | | ] } | N | M | , < | . > | / ? | RShift | +`--------+-------------+--------------------+------+------| |------+------+--------------------+------+---------------' + | | LGUI | LAlt | Space| Nav | | Sym | Space| AltGr| RGUI | Menu | + | | | | | | | | | | | | + `----------------------------------' '----------------------------------' +``` + +These keys are not easily reachable while touch typing (that is, not reachable without picking up your hand) and should thus be associated with functions that you are not likely to be typed within a stream of text. The idea is that if you have to pick up your hand to hit a key, you want it to be at a time when you are likely to be pausing your interaction with the machine, rather than in the midst of a flurry of typing. They're thus well suited for accessing the adjust layer and the function layer. We can also toss in Caps Lock even though it is an editing-type function that gets used within a stream of text because shouting in ALL-CAPS should be a deliberate action. + +``` +,-------------------------------------------. ,-------------------------------------------. +| Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | +|--------+------+------+------+------+------| |------+------+------+------+------+--------| +|Ctrl/Esc| A | S | D | F | G | | H | J | K | L | ; : | ' " | +|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +| LShift | Z | X | C | V | B | [ { |CapsLk| |F-keys| ] } | N | M | , < | . > | / ? | RShift | +`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + |Adjust| LGUI | LAlt | Space| Nav | | Sym | Space| AltGr| RGUI | Menu | + | | | | | | | | | | | | + `----------------------------------' `----------------------------------' +``` + +The next glaring issue is the absence of an Enter key on the current base layer this far. Enter is a very frequently used key so it deserves to be placed at a good spot in the keymap. The best way to insert it in the keymap with minimal changes to the current layout is to use modtaps. A tempting solution is to turn the RShift key into a RShift/Enter modtap but that can result in chat messages sent too frustratingly early when you're not used to it. Using GUI is also sub-optimal because tapping the GUI modifier actually has a use as opposed to taps of the Control or the Shift key. Pressing and releasing the GUI key by itself opens the App menu in many desktop environments. The natural choice is thus LAlt/Enter. That way, Enter is 1u away from resting thumb position and is unlikely to get accidentally activated because Alt is very rarely used in the midst of prose. + +Finally, we're one Quality-Of-Life update away from the actual base layer. Ctrl/' " not only preserves symmetry in the keymap with Ctrl/Esc but also helps balance the load between your pinkies and invites you to use both hands instead of contortions. Perhaps more importantly, it also frees you from the necessity of picking up your hand, breaking touch typing position and pressing a pinky key with your ring finger in order to execute Ctrl+A or Ctrl+Z. That becomes even more important on a board with such an aggressive pinky columnar stagger like the Kyria. + + +``` +,-------------------------------------------. ,-------------------------------------------. +| Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | +|--------+------+------+------+------+------| |------+------+------+------+------+--------| +|Ctrl/Esc| A | S | D | F | G | | H | J | K | L | ; : |Ctrl/' "| +|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +| LShift | Z | X | C | V | B | [ { |CapsLk| |F-keys| ] } | N | M | , < | . > | / ? | RShift | +`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + |Adjust| LGUI | LAlt/| Space| Nav | | Sym | Space| AltGr| RGUI | Menu | + | | | Enter| | | | | | | | | + `----------------------------------' `----------------------------------' +``` + +
+ +## Navigation layer + +``` +Nav Layer: Media, navigation + +,-------------------------------------------. ,-------------------------------------------. +| | | | | | | | PgUp | Home | ↑ | End | VolUp| Delete | +|--------+------+------+------+------+------| |------+------+------+------+------+--------| +| | GUI | Alt | Ctrl | Shift| | | PgDn | ← | ↓ | → | VolDn| Insert | +|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +| | | | | | | |ScLck | | | | Pause|M Prev|M Play|M Next|VolMut| PrtSc | +`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + | | | | | | | | | | | | + | | | | | | | | | | | | + `----------------------------------' `----------------------------------' +``` + +This is where you'll find all the keys that are generally between the main block of a classic keyboard and the numpad in addition to media controls and modifiers on easy access on the home row for fast and comfortable chording with navigation keys. + +Useful mnemonics: +- “GACS” to remember the order of the modifiers on the left-hand home row +- Scroll Lock is on the same key as Caps Lock because they're both locks +- Delete is on the same key as Backspace because they both erase characters +- Home is the leftmost position on the current line so it is above . Same logic applies for End. +- Media Previous = ⏮, Media Next = ⏭ +- Page Up, Page Down and Volume Up, Volume Down are positioned like the main Up and Down keys. + +## Sym layer +``` +Sym Layer: Numbers, symbols + +,-------------------------------------------. ,-------------------------------------------. +| ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | = | +|--------+------+------+------+------+------| |------+------+------+------+------+--------| +| ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | + | +|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +| | | \ | : | ; | - | [ | { | | | | } | ] | _ | , | . | / | ? | +`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + | | | | | | | | | | | | + | | | | | | | | | | | | + `----------------------------------' `----------------------------------' +``` +The top row is the unshifted num row, the home row of the layer is the shifted num row and the bottom row contains the hyphen `-` and the underscore `_` on the best lower row spot because of how frequent they are as well as redundant symbols that are already present on the base layer but are reproduced here to avoid juggling back and forth between base, shift, and sym when typing a string of symbols. + +The layout of the first two rows needs no introduction, you're already used to them but it's worth looking into the structure of the bottom row. + +The two halves are mirrored in a sense. On the right, you can find , . / at their usual spots with the addition of Shift+/=? to the right of the / key to remove the need to press simultaneously Sym and a Shift key to access `?`. + +Now, if you look at the left side, you'll notice that the mirror of , is ;, the mirror of . is : and the mirror of / is \\. The same logic used for Shift+/=? also applies to Shift+\\=|. + +In case you wish to combine Shift with a symbol key anyways, you can hold down Shift on the base layer with your pinky, activate Sym with your right thumb and while still holding down the Shift key, tap your desired symbol key. Same thing if you need Ctrl+Digit. + +## Function layer +``` +Function Layer: Function keys + +,-------------------------------------------. ,-------------------------------------------. +| | F9 | F10 | F11 | F12 | | | | | | | | | +|--------+------+------+------+------+------| |------+------+------+------+------+--------| +| | F5 | F6 | F7 | F8 | | | | Shift| Ctrl | Alt | GUI | | +|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +| | F1 | F2 | F3 | F4 | | | | | | | | | | | | | +`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + | | | | | | | | | | | | + | | | | | | | | | | | | + `----------------------------------' `----------------------------------' +``` +In a similar fashion to the nav layer, pressing down `FKEYS` with the right thumb enables a numpad of function keys on the opposite hand and modifiers on the right-hand home row. Once again, mirror symmetry is leveraged in this keymap for the order of the right-hand modifiers. + +The Alt modifier, despite being situated on the right half of the keyboard is *not* `KC_RALT`, it is `KC_LALT`. `KC_RALT` is actually the AltGr key which generally acts very differently to the left Alt key. Keyboard shortcuts involving AltGr+F# are rare and infrequent as opposed to the much more common Alt+F# shortcuts. Consequently, `KC_LALT` was chosen for the function layer. + +Since there are more than 10 function keys, the cluster of F-keys does not follow the usual 3×3+1 numpad arrangement. + + +## Adjust layer +``` +Adjust Layer: Default layer settings, RGB + +,-------------------------------------------. ,-------------------------------------------. +| | | |QWERTY| | | | | | | | | | +|--------+------+------+------+------+------| |------+------+------+------+------+--------| +| | | |Dvorak| | | | TOG | SAI | HUI | VAI | MOD | | +|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +| | | |Colmak| | | | | | | | | SAD | HUD | VAD | RMOD | | +`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + | | | | | | | | | | | | + | | | | | | | | | | | | + `----------------------------------' `----------------------------------' +``` + +Default layer settings on the left and various RGB underglow controls on the right. + +The default layer settings are lined up on the middle finger column because the home middle finger key is D on QWERTY (like the “D” in “Dvorak”) and the lower middle finger key is C on QWERTY (like the “C” in “Colemak”). I can hear you say that “QWERTY” doesn't start with “E” but Dvorak and Colemak were already aligned in a column so the QWERTY may as well join the formation. + +NOTE: The default layer settings set by those keys are *NOT* stored in EEPROM and thus do not persist through boots. If you wish to change the default layer in a non-volatile manner, either change the order of the layers in the firmware, for example like so if you want to set Dvorak as the new default: +```c +enum layers { + _DVORAK = 0, + _QWERTY, + _COLEMAK_DH, + _NAV, + _SYM, + _FUNCTION, + _ADJUST +}; +``` +or re-define the `QWERTY`, `COLEMAK` and `DVORAK` keys to point to custom keycodes starting on `SAFE_RANGE` and calling the `set_single_persistent_default_layer` function inside of `process_record_user`. + +## Hardware Features + +### Rotary Encoder +The left rotary encoder is programmed to control the volume whereas the right encoder sends PgUp or PgDn on every turn. + +### OLEDs +The OLEDs display the current layer at the top of the active layers stack, the Kyria logo and lock status (caps lock, num lock, scroll lock). + +### Underglow +The underglow LEDs should be red. + +## Going further… + +This default keymap can be used as is, unchanged, as a daily driver for your Kyria but you're invited to treat your keymap like a bonsai. At the beginning, it's just like the default keymap but from time to time, you can tweak it a little. Cut a little key here, let another combo grow there. Slowly but surely it will be a unique keymap that will fit you like a glove. + +Check out the #keymap-ideas channel on the official SplitKB Discord server for inspiration. diff --git a/keyboards/splitkb/kyria/keymaps/default/rules.mk b/keyboards/splitkb/kyria/keymaps/default/rules.mk new file mode 100644 index 000000000000..35f8ec90c6f7 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/default/rules.mk @@ -0,0 +1,4 @@ +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enables the use of OLED displays +ENCODER_ENABLE = yes # Enables the use of one or more encoders +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow diff --git a/keyboards/splitkb/kyria/keymaps/drashna/config.h b/keyboards/splitkb/kyria/keymaps/drashna/config.h new file mode 100644 index 000000000000..8239e28cdcc4 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/drashna/config.h @@ -0,0 +1,43 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define EE_HANDS + +#ifdef OLED_ENABLE +# define OLED_DISPLAY_128X64 +#endif + +#ifdef RGBLIGHT_ENABLE +# define RGBLIGHT_SLEEP +# define RGBLIGHT_LIMIT_VAL 200 +# define RGBLIGHT_HUE_STEP 8 +# define RGBLIGHT_SAT_STEP 8 +# define RGBLIGHT_VAL_STEP 8 +# define RGBLIGHT_SPLIT +// # define RGBLIGHT_LAYERS +#endif + +#define KEYLOGGER_LENGTH 10 + +#define QMK_ESC_INPUT D4 +#define QMK_ESC_OUTPUT B2 + +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 7 +#define BOOTMAGIC_LITE_ROW_RIGHT 4 +#define BOOTMAGIC_LITE_COLUMN_RIGHT 7 diff --git a/keyboards/splitkb/kyria/keymaps/drashna/keymap.c b/keyboards/splitkb/kyria/keymaps/drashna/keymap.c new file mode 100644 index 000000000000..6c7ac34d5127 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/drashna/keymap.c @@ -0,0 +1,165 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "drashna.h" + +/* + * The `LAYOUT_kyria_base` macro is a template to allow the use of identical + * modifiers for the default layouts (eg QWERTY, Colemak, Dvorak, etc), so + * that there is no need to set them up for each layout, and modify all of + * them if I want to change them. This helps to keep consistency and ease + * of use. K## is a placeholder to pass through the individual keycodes + */ + +// clang-format off +#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) +#define LAYOUT_kyria_base( \ + K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ + K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \ + K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \ + ) \ + LAYOUT_wrapper( \ + KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_MINS, \ + LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(K1B), \ + OS_LSFT, CTL_T(K21), K22, K23, K24, K25, TG_GAME, MEH(KC_MINS), TG_DBLO, KC_CAPS, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \ + KC_MUTE, OS_LALT, KC_GRV, KC_SPC, BK_LWER, DL_RAIS, KC_ENT, OS_RGUI, UC(0x03A8), UC(0x2E2E) \ + ) +/* Re-pass though to allow templates to be used */ +#define LAYOUT_base_wrapper(...) LAYOUT_kyria_base(__VA_ARGS__) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_DEFAULT_LAYER_1] = LAYOUT_base_wrapper( + _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, + _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, + _________________QWERTY_L3_________________, _________________QWERTY_R3_________________ + ), + + [_DEFAULT_LAYER_2] = LAYOUT_base_wrapper( + ______________COLEMAK_MOD_DH_L1____________, ______________COLEMAK_MOD_DH_R1____________, + ______________COLEMAK_MOD_DH_L2____________, ______________COLEMAK_MOD_DH_R2____________, + ______________COLEMAK_MOD_DH_L3____________, ______________COLEMAK_MOD_DH_R3____________ + ), + [_DEFAULT_LAYER_3] = LAYOUT_base_wrapper( + _________________COLEMAK_L1________________, _________________COLEMAK_R1________________, + _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, + _________________COLEMAK_L3________________, _________________COLEMAK_R3________________ + ), + + [_DEFAULT_LAYER_4] = LAYOUT_base_wrapper( + _________________DVORAK_L1_________________, _________________DVORAK_R1_________________, + _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, + _________________DVORAK_L3_________________, _________________DVORAK_R3_________________ + ), + + [_GAMEPAD] = LAYOUT_wrapper( + KC_ESC, KC_K, KC_Q, KC_W, KC_E, KC_R, _______, _______, _______, _______, _______, _______, + KC_TAB, KC_G, KC_A, KC_S, KC_D, KC_F, _______, _______, _______, _______, _______, _______, + KC_LCTL, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, _______, _______, _______, LALT(KC_PSCR), _______, _______, _______, _______, _______, _______, + _______, MAGIC_TOGGLE_NKRO, KC_V, KC_SPC, KC_H, _______, _______, _______, _______, _______ + ), + + [_DIABLO] = LAYOUT_wrapper( + KC_ESC, KC_S, KC_I, KC_F, KC_M, KC_T, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, + KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_G, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_LCTL, KC_D3_1, KC_D3_2, KC_D3_3, KC_D3_4, KC_Z, KC_J, KC_L, TG_DBLO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_DIABLO_CLEAR, KC_J, KC_NO, SFT_T(KC_SPACE), ALT_T(KC_Q), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ), + [_LOWER] = LAYOUT_wrapper( + KC_F12, _________________LOWER_L1__________________, _________________LOWER_R1__________________, KC_F11, + _______, _________________LOWER_L2__________________, _________________LOWER_R2__________________, KC_PIPE, + _______, _________________LOWER_L3__________________, _______, _______, _______, _______, _________________LOWER_R3__________________, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [_RAISE] = LAYOUT_wrapper( + KC_F12, _________________RAISE_L1__________________, _________________RAISE_R1__________________, KC_F11, + _______, _________________RAISE_L2__________________, _________________RAISE_R2__________________, KC_BSLS, + _______, _________________RAISE_L3__________________, _______, _______, _______, _______, _________________RAISE_R3__________________, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [_ADJUST] = LAYOUT_wrapper( + KC_MAKE, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, KC_RESET, + VRSN, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, EEP_RST, + UC_MOD, _________________ADJUST_L3_________________, HPT_TOG, HPT_FBK, MG_NKRO, UC_MOD, _________________ADJUST_R3_________________, TG_MODS, + _______, _______, KEYLOCK, KC_NUKE, _______, _______, _______, _______, _______, _______ + ), +// [_LAYERINDEX] = LAYOUT_wrapper( +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +// ), +}; + +#ifdef ENCODER_MAP_ENABLE +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [_DEFAULT_LAYER_1] = { { KC_DOWN, KC_UP }, { KC_VOLD, KC_VOLU } }, + [_DEFAULT_LAYER_2] = { { _______, _______ }, { _______, _______ } }, + [_DEFAULT_LAYER_3] = { { _______, _______ }, { _______, _______ } }, + [_DEFAULT_LAYER_4] = { { _______, _______ }, { _______, _______ } }, + [_GAMEPAD] = { { _______, _______ }, { _______, _______ } }, + [_DIABLO] = { { _______, _______ }, { _______, _______ } }, + [_MOUSE] = { { _______, _______ }, { KC_WH_D, KC_WH_U } }, + [_MEDIA] = { { _______, _______ }, { _______, _______ } }, + [_RAISE] = { { _______, _______ }, { KC_PGDN, KC_PGUP } }, + [_LOWER] = { { RGB_MOD, RGB_RMOD}, { RGB_HUD, RGB_HUI } }, + [_ADJUST] = { { CK_DOWN, CK_UP }, { _______, _______ } }, +}; +#endif +// clang-format on + +#ifdef OLED_ENABLE +oled_rotation_t oled_init_keymap(oled_rotation_t rotation) { return OLED_ROTATION_180; } +#endif + +#ifdef ENCODER_ENABLE +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + // Volume control + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else if (index == 1) { + // Page up/Page down + if (clockwise) { + tap_code(KC_PGDN); + } else { + tap_code(KC_PGUP); + } + } + return true; +} +#endif + +#ifdef RGBLIGHT_LAYERS +const rgblight_segment_t PROGMEM shift_layers[] = RGBLIGHT_LAYER_SEGMENTS({8, 1, 120, 255, 255}, {18, 1, 120, 255, 255}); +const rgblight_segment_t PROGMEM control_layers[] = RGBLIGHT_LAYER_SEGMENTS({6, 1, 0, 255, 255}, {16, 1, 0, 255, 255}); +const rgblight_segment_t PROGMEM alt_layers[] = RGBLIGHT_LAYER_SEGMENTS({2, 1, 240, 255, 255}, {17, 1, 250, 255, 255}); +const rgblight_segment_t PROGMEM gui_layers[] = RGBLIGHT_LAYER_SEGMENTS({7, 1, 51, 255, 255}, {12, 1, 51, 255, 255}); + +const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(shift_layers, control_layers, alt_layers, gui_layers); + +void keyboard_post_init_keymap(void) { rgblight_layers = my_rgb_layers; } + +void matrix_scan_keymap(void) { + uint8_t mods = mod_config(get_mods() | get_oneshot_mods()); + rgblight_set_layer_state(0, mods & MOD_MASK_SHIFT); + rgblight_set_layer_state(1, mods & MOD_MASK_CTRL); + rgblight_set_layer_state(2, mods & MOD_MASK_ALT); + rgblight_set_layer_state(3, mods & MOD_MASK_GUI); +} +#endif diff --git a/keyboards/splitkb/kyria/keymaps/drashna/rules.mk b/keyboards/splitkb/kyria/keymaps/drashna/rules.mk new file mode 100644 index 000000000000..2f4f4d091ffe --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/drashna/rules.mk @@ -0,0 +1,20 @@ +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 +NKRO_ENABLE = yes # USB Nkey Rollover +UNICODE_ENABLE = yes # Unicode +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enables the use of OLED displays +ENCODER_ENABLE = yes # Enables the use of one or more encoders + +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +RGBLIGHT_STARTUP_ANIMATION = yes +RGB_MATRIX_ENABLE = yes +TAP_DANCE_ENABLE = yes +KEY_LOCK_ENABLE = no +WPM_ENABLE = yes +SWAP_HANDS_ENABLE = yes +LTO_ENABLE = no +CTPC = yes diff --git a/keyboards/splitkb/kyria/keymaps/ghidalgo93/config.h b/keyboards/splitkb/kyria/keymaps/ghidalgo93/config.h new file mode 100644 index 000000000000..89ec73f0a603 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/ghidalgo93/config.h @@ -0,0 +1,41 @@ +/* Copyright 2019 Thomas Baart + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#ifdef OLED_ENABLE + #define OLED_DISPLAY_128X64 +#endif + +#ifdef RGBLIGHT_ENABLE + #define RGBLIGHT_ANIMATIONS + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 +#endif + +// encoder resolution from default 4 to 2 +#define ENCODER_RESOLUTION 2 + +// If you are using an Elite C rev3 on the slave side, uncomment the lines below: +// #define SPLIT_USB_DETECT +// #define NO_USB_STARTUP_CHECK + +//allows for either side as the master. +#define EE_HANDS + + + diff --git a/keyboards/splitkb/kyria/keymaps/ghidalgo93/keymap.c b/keyboards/splitkb/kyria/keymaps/ghidalgo93/keymap.c new file mode 100644 index 000000000000..df542977a1fa --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/ghidalgo93/keymap.c @@ -0,0 +1,247 @@ +/* Copyright 2019 Thomas Baart + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + + +enum layers { + _QWERTY = 0, + _LOWER, + _RAISE, + _NAV, + _ADJUST +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* + * Base Layer: QWERTY + * + * ,-------------------------------------------. ,-------------------------------------------. + * | ESC | Q | W | E | R | T | | Y | U | I | O | P | | \ | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | Ctrl | A | S | D | F | G | | H | J | K | L | ; : | ' " | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | LShift | Z | X | C | V | B | | | | | | N | M | , < | . > | / ? | - _ | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | GUI | | Tab | Enter| | Bksp | Space| Alt | Home | End | + * | | | LCTL | Lower| | | | Raise| | | | + * `----------------------------------' `----------------------------------' + */ + [_QWERTY] = LAYOUT( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_PIPE, + 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, _______, _______, _______, _______, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_MINS, + _______, KC_LGUI , KC_LCTL, LT(_LOWER, KC_TAB), LT(_NAV, KC_ENT), KC_BSPC, LT(_RAISE, KC_SPC), KC_RALT, KC_HOME, KC_END + ), +/* + * Lower Layer: Number keys, media + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | | | | | | | | 7 | 8 | 9 | | | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | | Prev | Play | Next | VolUp| | | 4 | 5 | 6 | | | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | | | | Mute | VolDn| | | | | | 0 | 1 | 2 | 3 | | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_LOWER] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, KC_7 , KC_8 , KC_9 , _______, _______, + _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, _______, KC_4 , KC_5 , KC_6 , _______, _______, + _______, _______, _______, _______, KC_MUTE, KC_VOLD, _______, _______, _______, _______, KC_0 , KC_1 , KC_2 , KC_3 , _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +/* + * Raise Layer: Symbols + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | @ | ! | { | } | | | ` | ~ | & | * | | | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | # | $ | ( | ) | | | _ | - | = | | | ' " | | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | % | ^ | [ | ] | | | | | | | | + | \ | | | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_RAISE] = LAYOUT( + _______, KC_AT , KC_EXLM, KC_LCBR, KC_RCBR, _______, KC_GRV , KC_TILD, KC_AMPR, KC_ASTR, _______, _______, + _______, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, _______, KC_UNDS, KC_MINS, KC_EQL , KC_PIPE, KC_QUOT, _______, + _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, _______, _______, _______, _______, _______, _______, KC_PLUS, KC_BSLS, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +// /* +// * Navigation Layer +// * +// * ,-------------------------------------------. ,-------------------------------------------. +// * | | | | | | | | home |pg dn |pg up | end | | | +// * |--------+------+------+------+------+------| |------+------+------+------+------+--------| +// * | | | | | | | | left | down | up | right| | | +// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +// * | | | | | | | | | | | | | | | | | | +// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' +// * | | | | | | | | | | | | +// * | | | | | | | | | | | | +// * `----------------------------------' `----------------------------------' +// */ + [_NAV] = LAYOUT( + _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END , _______, _______, + _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +/* + * Adjust Layer: Function keys, RGB + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | | | | | | | | | | F11 | F12 | | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | | | | | | | | | | | | | | | | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_ADJUST] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_F11, KC_F12, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +// /* +// * Layer template +// * +// * ,-------------------------------------------. ,-------------------------------------------. +// * | | | | | | | | | | | | | | +// * |--------+------+------+------+------+------| |------+------+------+------+------+--------| +// * | | | | | | | | | | | | | | +// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +// * | | | | | | | | | | | | | | | | | | +// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' +// * | | | | | | | | | | | | +// * | | | | | | | | | | | | +// * `----------------------------------' `----------------------------------' +// */ +// [_LAYERINDEX] = LAYOUT( +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +// ), +}; + +layer_state_t layer_state_set_user(layer_state_t state) { + return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); +} + + +#ifdef OLED_ENABLE +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + return OLED_ROTATION_180; +} + +static void render_kyria_logo(void) { + static const char PROGMEM kyria_logo[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,224,240,112,120, 56, 60, 28, 30, 14, 14, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 30, 28, 60, 56,120,112,240,224,192,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,192,224,240,124, 62, 31, 15, 7, 3, 1,128,192,224,240,120, 56, 60, 28, 30, 14, 14, 7, 7,135,231,127, 31,255,255, 31,127,231,135, 7, 7, 14, 14, 30, 28, 60, 56,120,240,224,192,128, 1, 3, 7, 15, 31, 62,124,240,224,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,240,252,255, 31, 7, 1, 0, 0,192,240,252,254,255,247,243,177,176, 48, 48, 48, 48, 48, 48, 48,120,254,135, 1, 0, 0,255,255, 0, 0, 1,135,254,120, 48, 48, 48, 48, 48, 48, 48,176,177,243,247,255,254,252,240,192, 0, 0, 1, 7, 31,255,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,254,255,255, 1, 1, 7, 30,120,225,129,131,131,134,134,140,140,152,152,177,183,254,248,224,255,255,224,248,254,183,177,152,152,140,140,134,134,131,131,129,225,120, 30, 7, 1, 1,255,255,254, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0,255,255, 0, 0,192,192, 48, 48, 0, 0,240,240, 0, 0, 0, 0, 0, 0,240,240, 0, 0,240,240,192,192, 48, 48, 48, 48,192,192, 0, 0, 48, 48,243,243, 0, 0, 0, 0, 0, 0, 48, 48, 48, 48, 48, 48,192,192, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,127,255,255,128,128,224,120, 30,135,129,193,193, 97, 97, 49, 49, 25, 25,141,237,127, 31, 7,255,255, 7, 31,127,237,141, 25, 25, 49, 49, 97, 97,193,193,129,135, 30,120,224,128,128,255,255,127, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0, 63, 63, 3, 3, 12, 12, 48, 48, 0, 0, 0, 0, 51, 51, 51, 51, 51, 51, 15, 15, 0, 0, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 63, 63, 48, 48, 0, 0, 12, 12, 51, 51, 51, 51, 51, 51, 63, 63, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 63,255,248,224,128, 0, 0, 3, 15, 63,127,255,239,207,141, 13, 12, 12, 12, 12, 12, 12, 12, 30,127,225,128, 0, 0,255,255, 0, 0,128,225,127, 30, 12, 12, 12, 12, 12, 12, 12, 13,141,207,239,255,127, 63, 15, 3, 0, 0,128,224,248,255, 63, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 7, 15, 62,124,248,240,224,192,128, 1, 3, 7, 15, 30, 28, 60, 56,120,112,112,224,224,225,231,254,248,255,255,248,254,231,225,224,224,112,112,120, 56, 60, 28, 30, 15, 7, 3, 1,128,192,224,240,248,124, 62, 15, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 15, 14, 30, 28, 60, 56,120,112,112,112,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,112,112,112,120, 56, 60, 28, 30, 14, 15, 7, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }; + oled_write_raw_P(kyria_logo, sizeof(kyria_logo)); +} + +static void render_qmk_logo(void) { + static const char PROGMEM qmk_logo[] = { + 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, + 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, + 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0}; + + oled_write_P(qmk_logo, false); +} + +static void render_status(void) { + // QMK Logo and version information + render_qmk_logo(); + oled_write_P(PSTR("Kyria rev1.0\n\n"), false); + + // Host Keyboard Layer Status + oled_write_P(PSTR("Layer: "), false); + switch (get_highest_layer(layer_state)) { + case _QWERTY: + oled_write_P(PSTR("Default\n"), false); + break; + case _LOWER: + oled_write_P(PSTR("Lower\n"), false); + break; + case _RAISE: + oled_write_P(PSTR("Raise\n"), false); + break; + case _NAV: + oled_write_P(PSTR("Nav\n"), false); + break; + case _ADJUST: + oled_write_P(PSTR("Adjust\n"), false); + break; + default: + oled_write_P(PSTR("Undefined\n"), false); + } + + // Host Keyboard LED Status + led_t led_state = host_keyboard_led_state(); + oled_write_P(led_state.num_lock ? PSTR("NUMLCK ") : PSTR(" "), false); + oled_write_P(led_state.caps_lock ? PSTR("CAPLCK ") : PSTR(" "), false); + oled_write_P(led_state.scroll_lock ? PSTR("SCRLCK ") : PSTR(" "), false); +} + +bool oled_task_user(void) { + if (is_keyboard_master()) { + render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) + } else { + render_kyria_logo(); + } + return false; +} +#endif + +#ifdef ENCODER_ENABLE +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + // Volume control + if (clockwise) { + tap_code(KC_VOLD); + } else { + tap_code(KC_VOLU); + } + } + else if (index == 1) { + // Page up/Page down + if (clockwise) { + tap_code(KC_PGDN); + } else { + tap_code(KC_PGUP); + } + } + return true; +} +#endif diff --git a/keyboards/splitkb/kyria/keymaps/ghidalgo93/rules.mk b/keyboards/splitkb/kyria/keymaps/ghidalgo93/rules.mk new file mode 100644 index 000000000000..d5d64865bb54 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/ghidalgo93/rules.mk @@ -0,0 +1,5 @@ +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enables the use of OLED displays +ENCODER_ENABLE = yes # Enables the use of one or more encoders +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUTO_SHIFT_ENABLE = yes # Enable auto shift diff --git a/keyboards/kyria/keymaps/gotham/README.md b/keyboards/splitkb/kyria/keymaps/gotham/README.md similarity index 100% rename from keyboards/kyria/keymaps/gotham/README.md rename to keyboards/splitkb/kyria/keymaps/gotham/README.md diff --git a/keyboards/splitkb/kyria/keymaps/gotham/config.h b/keyboards/splitkb/kyria/keymaps/gotham/config.h new file mode 100644 index 000000000000..1b0ba183d016 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/gotham/config.h @@ -0,0 +1,48 @@ +/* Copyright 2019 Thomas Baart + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define EE_HANDS +#define IGNORE_MOD_TAP_INTERRUPT + +// Fix for Elite C rev3 +#define SPLIT_USB_DETECT +// Speed up slave half startup +#define SPLIT_USB_TIMEOUT 1000 + +#ifdef OLED_ENABLE +# define OLED_DISPLAY_128X64 +# define OLED_TIMEOUT 10000 +#endif + +#ifdef RGBLIGHT_ENABLE +# define RGBLIGHT_EFFECT_BREATHING +# define RGBLIGHT_EFFECT_RAINBOW_MOOD +# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +# define RGBLIGHT_EFFECT_KNIGHT +#endif + +#ifdef ENCODER_ENABLE +# define ENCODER_DIRECTION_FLIP +# define ENCODER_RESOLUTION 2 +#endif + +#ifdef THUMBSTICK_ENABLE +# define THUMBSTICK_FLIP_X +# define THUMBSTICK_PIN_X F0 +# define THUMBSTICK_PIN_Y F1 +#endif diff --git a/keyboards/kyria/keymaps/gotham/encoder_utils.c b/keyboards/splitkb/kyria/keymaps/gotham/encoder_utils.c similarity index 100% rename from keyboards/kyria/keymaps/gotham/encoder_utils.c rename to keyboards/splitkb/kyria/keymaps/gotham/encoder_utils.c diff --git a/keyboards/kyria/keymaps/gotham/encoder_utils.h b/keyboards/splitkb/kyria/keymaps/gotham/encoder_utils.h similarity index 100% rename from keyboards/kyria/keymaps/gotham/encoder_utils.h rename to keyboards/splitkb/kyria/keymaps/gotham/encoder_utils.h diff --git a/keyboards/kyria/keymaps/gotham/keycodes.h b/keyboards/splitkb/kyria/keymaps/gotham/keycodes.h similarity index 100% rename from keyboards/kyria/keymaps/gotham/keycodes.h rename to keyboards/splitkb/kyria/keymaps/gotham/keycodes.h diff --git a/keyboards/splitkb/kyria/keymaps/gotham/keymap.c b/keyboards/splitkb/kyria/keymaps/gotham/keymap.c new file mode 100644 index 000000000000..5fdeb494e671 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/gotham/keymap.c @@ -0,0 +1,130 @@ +/* Copyright 2019 Thomas Baart + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +#include "keycodes.h" + +#ifdef ENCODER_ENABLE +# include "encoder_utils.h" +#endif + +#ifdef OLED_ENABLE +# include "oled_utils.h" +#endif + +#ifdef THUMBSTICK_ENABLE +# include "thumbstick.h" +#endif + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* + * Base Layer: QWERTY +*/ + [_QWERTY] = LAYOUT( + ESC_RAISE, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, BSLS_RAISE, + KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, SFT_QUOT, + KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LGUI, KC_NO, TMB_MODE, KC_NO, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, CTL_MINS, + ENC_MODE_L, KC_LALT, LT(_LOWER, KC_SPC), LT(_RAISE, KC_TAB), KC_LSFT, KC_EQL, LT(_RAISE, KC_ENT), LT(_LOWER, KC_BSPC), KC_DEL, ENC_MODE_R + ), +/* + * Lower Layer: Symbols, Navigation + */ + [_LOWER] = LAYOUT( + _______, KC_HASH, KC_DLR, KC_LCBR, KC_RCBR, KC_PIPE, _______, _______, _______, _______, _______, KC_PIPE, + _______, KC_EXLM, KC_AT, KC_LPRN, KC_RPRN, KC_GRV, KC_PGUP, KC_LEFT, KC_UP, KC_RGHT, _______, KC_QUOT, + _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, _______, _______, _______, _______, KC_PGDN, KC_HOME, KC_DOWN, KC_END, _______, KC_MINS, + _______, _______, _______, KC_SCLN, KC_EQL, KC_EQL, KC_SCLN, _______, _______, _______ + ), +/* + * Raise Layer: Number keys, media, more symbols + */ + [_RAISE] = LAYOUT( + _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, + _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, KC_MINS, KC_PLUS, KC_ASTR, KC_SLSH, KC_PERC, _______, + _______, _______, _______, _______, KC_MUTE, KC_VOLD, _______, _______, _______, _______, KC_AMPR, KC_PIPE, KC_COMM, KC_DOT, KC_SLSH, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +/* + * Adjust Layer: Function keys, RGB + */ + [_ADJUST] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, + _______, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_MOD, _______, _______, _______, KC_F11, KC_F12, _______, + _______, _______, RGB_SAD, RGB_HUD, RGB_VAD, RGB_RMOD,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; +// clang-format on + +void matrix_init_user(void) { +#ifdef ENCODER_ENABLE + encoder_utils_init(); +#endif +} + +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { +#ifdef ENCODER_ENABLE + case ENC_MODE_L: + if (record->event.pressed) { + cycle_encoder_mode(true, false); + } + break; + case ENC_MODE_R: + if (record->event.pressed) { + cycle_encoder_mode(false, false); + } + break; +#endif +#ifdef THUMBSTICK_ENABLE + case TMB_MODE: + if (record->event.pressed) { + thumbstick_mode_cycle(false); + } +#endif + } + return true; +} + +#ifdef OLED_ENABLE +oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; } + +bool oled_task_user(void) { + render_status(); + return false; +} +#endif + +#ifdef ENCODER_ENABLE +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + encoder_action(get_encoder_mode(true), clockwise); +# ifdef OLED_ENABLE + oled_on(); +# endif + } else if (index == 1) { + encoder_action(get_encoder_mode(false), clockwise); +# ifdef OLED_ENABLE + oled_on(); +# endif + } + return true; +} +#endif diff --git a/keyboards/kyria/keymaps/gotham/oled_utils.c b/keyboards/splitkb/kyria/keymaps/gotham/oled_utils.c similarity index 100% rename from keyboards/kyria/keymaps/gotham/oled_utils.c rename to keyboards/splitkb/kyria/keymaps/gotham/oled_utils.c diff --git a/keyboards/kyria/keymaps/gotham/oled_utils.h b/keyboards/splitkb/kyria/keymaps/gotham/oled_utils.h similarity index 100% rename from keyboards/kyria/keymaps/gotham/oled_utils.h rename to keyboards/splitkb/kyria/keymaps/gotham/oled_utils.h diff --git a/keyboards/splitkb/kyria/keymaps/gotham/rules.mk b/keyboards/splitkb/kyria/keymaps/gotham/rules.mk new file mode 100644 index 000000000000..81b7123ba56d --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/gotham/rules.mk @@ -0,0 +1,22 @@ +CONSOLE_ENABLE = yes # Console for debug +ENCODER_ENABLE = yes # ENables the use of one or more encoders +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +MOUSEKEY_ENABLE = no # Mouse keys +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enables the use of OLED displays +THUMBSTICK_ENABLE = yes # Enables analog thumbstick code + +ifeq ($(strip $(ENCODER_ENABLE)), yes) + SRC += encoder_utils.c +endif + +ifeq ($(strip $(OLED_ENABLE)), yes) + SRC += oled_utils.c +endif + +ifeq ($(strip $(THUMBSTICK_ENABLE)), yes) + POINTING_DEVICE_ENABLE = yes + OPT_DEFS += -DTHUMBSTICK_ENABLE + SRC += analog.c + SRC += thumbstick.c +endif diff --git a/keyboards/kyria/keymaps/gotham/thumbstick.c b/keyboards/splitkb/kyria/keymaps/gotham/thumbstick.c similarity index 100% rename from keyboards/kyria/keymaps/gotham/thumbstick.c rename to keyboards/splitkb/kyria/keymaps/gotham/thumbstick.c diff --git a/keyboards/kyria/keymaps/gotham/thumbstick.h b/keyboards/splitkb/kyria/keymaps/gotham/thumbstick.h similarity index 100% rename from keyboards/kyria/keymaps/gotham/thumbstick.h rename to keyboards/splitkb/kyria/keymaps/gotham/thumbstick.h diff --git a/keyboards/splitkb/kyria/keymaps/j-inc/config.h b/keyboards/splitkb/kyria/keymaps/j-inc/config.h new file mode 100644 index 000000000000..dc7d9610dd3b --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/j-inc/config.h @@ -0,0 +1,45 @@ +/* Copyright 2019 Thomas Baart + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#ifdef OLED_ENABLE + #define OLED_DISPLAY_128X64 + #define OLED_TIMEOUT 300000 +#endif + +// If you are using an Elite C rev3 on the slave side, uncomment the lines below: +#define SPLIT_USB_DETECT +#define NO_USB_STARTUP_CHECK +#define SPLIT_USB_TIMEOUT 1000 + +#define MASTER_RIGHT +#define ENCODER_DIRECTION_FLIP + + +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION +#define NO_ACTION_ONESHOT +#define OLED_FONT_END 127 + + +#ifdef RGBLIGHT_ENABLE + #define RGBLIGHT_LED_MAP {0,1,2,9,8,7,4,3,5,6,19,18,17,10,11,12,15,16,14,13} // Orients Kyria LEDs to a circle around both halves. + //#define RBGLIGHT_LED_MAP {9,8,6,7,5,3,2,4,1,0,10,12,13,11,14,16,17,15,18,19} // Orients Kyria LEDs for a left half-right half columnar progression. + #define RGBLIGHT_EFFECT_RAINBOW_SWIRL + //#define RGBLIGHT_EFFECT_STATIC_GRADIENT + #define RGBLIGHT_SLEEP +#endif diff --git a/keyboards/splitkb/kyria/keymaps/j-inc/keymap.c b/keyboards/splitkb/kyria/keymaps/j-inc/keymap.c new file mode 100644 index 000000000000..af583a607fc6 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/j-inc/keymap.c @@ -0,0 +1,377 @@ +/* Copyright 2019 Thomas Baart + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +#include +bool is_alt_tab_active = false; +uint16_t alt_tab_timer = 0; + +char wpm_str[10]; + +enum layers { + _QWERTY, + _2WERTY, //pronounced "twerty," obviously + _LOWER, + _RAISE, + _ADJUST, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* + * Base Layer: QWERTY + * + * ,-------------------------------------------. ,-------------------------------------------. + * |RAIS/ESC| Q | W | E | R | T | | Y | U | I | O | P | BKSP | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * |Tab | A | S | D | F | G | | H | J | K | L | ; : | ' " | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | CTRL | Z | X | C | V | B |Enter |Ctrl | |Ctrl |(2u) | N | M | , < | . > | / ? | - _ | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | TG(1)| Alt | Win | Shift| Back | | Enter| Space| Win | Alt |TG(3) | + * | | | | Lower| space| | Lower| Raise| | | | + * `----------------------------------' `----------------------------------' + */ + [_QWERTY] = LAYOUT( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_ENT, KC_LCTL, KC_RCTL, _______, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_MINS, + TG(1), KC_LALT, KC_LGUI, KC_LSFT, KC_BSPC, LT(3, KC_ENT), LT(2, KC_SPC), KC_RGUI, KC_RALT, TG(2) + ), +/* + * This layer exists to change encoder functions. + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | | | | | | | | | | | | | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | | | | | | | | | | | | | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | | | | | | | | | | | | | | | | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_2WERTY] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_TRNS, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +/* + * Lower Layer: numpad and arrow + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | | 7 | 8 | 9 | 0 | | PGUP | | UP | | | Del + | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | CAPS | | 4 | 5 | 6 | Tab | | PGDN | Left | Down | Right| | | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | | 1 | 2 | 3 | Ent | | | | | | | LBRC | RBRC | | |\ | += | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | Tab | Ent | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_LOWER] = LAYOUT( + _______, _______, KC_7, KC_8, KC_9, KC_0, KC_PGUP, _______, KC_UP, _______, _______, KC_DEL, + KC_CAPS, _______, KC_4, KC_5, KC_6, KC_TAB, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, + KC_LSFT, KC_0, KC_1, KC_2, KC_3, KC_ENT, KC_TRNS, KC_TRNS, MO(4), _______, KC_LBRC, KC_RBRC, _______, _______, KC_BSLS, KC_EQL, + KC_TRNS, KC_TAB, KC_ENT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, _______, _______, _______ + ), +/* + * Raise Layer: F keys and media + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | | | | | | | F9 | F10 | F11 | F12 | | | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | | Prev | Play | Next | VolUp| | F5 | F6 | F7 | F8 | | | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | | | | Mute | VolDn| | | | | | F1 | F2 | F3 | F4 | | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_RAISE] = LAYOUT( + _______, _______, _______, _______, _______, _______, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, + _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, KC_F5, KC_F6, KC_F7, KC_F8, _______, _______, + _______, _______, _______, _______, KC_MUTE, KC_VOLD, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_TRNS + ), +/* + * Adjust Layer: Function keys, RGB + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | VAI | SAI | HUI | SPI | MOD | | | | | F11 | F12 | | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | VID | SAD | HUD | SPD | RMOD | | | | | | | | | | | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_ADJUST] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, + RGB_TOG, RGB_VAI, RGB_SAI, RGB_HUI, RGB_SPI, RGB_MOD, _______, _______, _______, KC_F11, KC_F12, _______, + _______, RGB_VAD, RGB_SAD, RGB_HUD, RGB_SPD, RGB_RMOD,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_TRNS, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +// /* +// * Layer template +// * +// * ,-------------------------------------------. ,-------------------------------------------. +// * | | | | | | | | | | | | | | +// * |--------+------+------+------+------+------| |------+------+------+------+------+--------| +// * | | | | | | | | | | | | | | +// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +// * | | | | | | | | | | | | | | | | | | +// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' +// * | | | | | | | | | | | | +// * | | | | | | | | | | | | +// * `----------------------------------' `----------------------------------' +// */ +// [_LAYERINDEX] = LAYOUT( +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +// ), +}; + +layer_state_t layer_state_set_user(layer_state_t state) { + return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); +} + +#ifdef OLED_ENABLE + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + return OLED_ROTATION_180; +} + +static void render_status(void) { + // Host Keyboard Layer Status + oled_write_P(PSTR("Layer: "), false); + switch (get_highest_layer(layer_state)) { + case _QWERTY: + oled_write_P(PSTR("QWERTY"), false); + break; + case _2WERTY: + oled_write_P(PSTR("2WERTY"), false); + break; + case _LOWER: + oled_write_P(PSTR("Numpad"), false); + break; + case _RAISE: + oled_write_P(PSTR("F Keys"), false); + break; + case _ADJUST: + oled_write_P(PSTR("RGB "), false); + break; + default: + oled_write_P(PSTR("Undefined"), false); + } + + //Host Keyboard LED Status + led_t led_state = host_keyboard_led_state(); + oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); + oled_write_P(led_state.caps_lock ? PSTR("CAPS ") : PSTR(" "), false); + oled_write_P(led_state.scroll_lock ? PSTR("SCRL") : PSTR(" "), false); +} + + +// WPM-responsive animation stuff here +#define IDLE_FRAMES 5 +#define IDLE_SPEED 40 // below this wpm value your animation will idle + +// #define PREP_FRAMES 1 // uncomment if >1 + +#define TAP_FRAMES 2 +#define TAP_SPEED 60 // above this wpm value typing animation to triggere + +#define ANIM_FRAME_DURATION 200 // how long each frame lasts in ms +// #define SLEEP_TIMER 60000 // should sleep after this period of 0 wpm, needs fixing +#define ANIM_SIZE 636 // number of bytes in array, minimize for adequate firmware size, max is 1024 + +uint32_t anim_timer = 0; +uint32_t anim_sleep = 0; +uint8_t current_idle_frame = 0; +// uint8_t current_prep_frame = 0; // uncomment if PREP_FRAMES >1 +uint8_t current_tap_frame = 0; + +// Images credit j-inc(/James Incandenza) and pixelbenny. Credit to obosob for initial animation approach. +static void render_anim(void) { + static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = { + { + 0, 0,126,126, 24, 60,102, 66, 0, 12, 28,112,112, 28, 12, 0,116,116, 20, 20,124,104, 0,124,124, 0,112,120, 44, 36,124,124,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 16, 8, 8, 4, 4, 4, 8, 48, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,128, + 0, 0, 0, 0,192, 96, 48, 24, 12,132,198, 98, 35, 51, 17,145,113,241,113,145, 17, 51, 35, 98,198,132, 12, 24, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,100,130, 2, 2, 2, 2, 2, 1, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 48, 48, 0,192,193,193,194, 4, 8, 16, 32, 64,128, 0, 0, 0,128,128,128,128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8,196, 4,196, 4,196, 2,194, 2,194, 1, 1, 1, 1, 0, 0, 0, + 0, 0,252, 15, 1, 0,248, 14, 31,109,140,148,148,164,166,249,224,255,224,249,166,164,148,148,140,109, 31, 14,248, 0, 1, 15,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 56, 4, 3, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 13, 1, 0, 64,160, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 8, 8, 16, 16, 16, 16, 16, 17, 15, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,170,255,255,195,191,127, 3,127,191,195,255,255,170,170, 0, 0, 0, 0, + 0, 0, 31,120,192, 0, 15, 56,124,219,152, 20, 20, 18, 50,207, 3,255, 3,207, 50, 18, 20, 20,152,219,124, 56, 15, 0,192,120, 31, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 4, 4, 8, 8, 8, 8, 8, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,130,135, 31, 7,159, 7, 28, 7,159, 7,159, 7, 2,130, 0, 0, 0, 0, + 32, 16, 16, 16, 17, 11, 14, 12, 24, 16, 49, 35, 98,102, 68, 68, 71, 71, 71, 68, 68,102, 98, 35, 49, 16, 24, 12, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 23, 0, 15, 1, 2, 1, 15, 0, 15, 2, 5, 8 + }, + { + 0, 0,126,126, 24, 60,102, 66, 0, 12, 28,112,112, 28, 12, 0,116,116, 20, 20,124,104, 0,124,124, 0,112,120, 44, 36,124,124,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 16, 8, 8, 4, 4, 4, 8, 48, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,128, + 0, 0, 0, 0,192, 96, 48, 24, 12,132,198, 98, 35, 51, 17,145,113,241,113,145, 17, 51, 35, 98,198,132, 12, 24, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,100,130, 2, 2, 2, 2, 2, 1, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 48, 48, 0,192,193,193,194, 4, 8, 16, 32, 64,128, 0, 0, 0,128,128,128,128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8,196, 4,196, 4,196, 2,194, 2,194, 1, 1, 1, 1, 0, 0, 0, + 0, 0,252, 15, 1, 0,248, 14, 31,109,140,148,148,164,166,249,224,255,224,249,166,164,148,148,140,109, 31, 14,248, 0, 1, 15,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 56, 4, 3, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 13, 1, 0, 64,160, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 8, 8, 16, 16, 16, 16, 16, 17, 15, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,170,255,255,195,191,127, 3,127,191,195,255,255,170,170, 0, 0, 0, 0, + 0, 0, 31,120,192, 0, 15, 56,124,219,152, 20, 20, 18, 50,207, 3,255, 3,207, 50, 18, 20, 20,152,219,124, 56, 15, 0,192,120, 31, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 4, 4, 8, 8, 8, 8, 8, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,130,135, 31, 7,159, 7, 28, 7,159, 7,159, 7, 2,130, 0, 0, 0, 0, + 32, 16, 16, 16, 17, 11, 14, 12, 24, 16, 49, 35, 98,102, 68, 68, 71, 71, 71, 68, 68,102, 98, 35, 49, 16, 24, 12, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 23, 0, 15, 1, 2, 1, 15, 0, 15, 2, 5, 8 + }, + { + 0, 0,126,126, 24, 60,102, 66, 0, 12, 28,112,112, 28, 12, 0,116,116, 20, 20,124,104, 0,124,124, 0,112,120, 44, 36,124,124,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 8, 4, 2, 2, 4, 24, 96,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,128, + 0, 0, 0, 0,192, 96, 48, 24, 12,132,198, 98, 35, 51, 17,145,113,241,113,145, 17, 51, 35, 98,198,132, 12, 24, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,194, 1, 1, 2, 2, 4, 4, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 96, 0,129,130,130,132, 8, 16, 32, 64,128, 0, 0, 0, 0,128,128,128,128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8,196, 4,196, 4,196, 2,194, 2,194, 1, 1, 1, 1, 0, 0, 0, + 0, 0,252, 15, 1, 0,248, 14, 31,109,140,148,148,164,166,249,224,255,224,249,166,164,148,148,140,109, 31, 14,248, 0, 1, 15,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,112, 25, 6, 0, 0, 0, 0, 0, 0, 0, 24, 24, 24, 27, 3, 0, 64,160, 34, 36, 20, 18, 18, 18, 11, 8, 8, 8, 8, 5, 5, 9, 9, 16, 16, 16, 16, 16, 17, 15, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,170,255,255,195,191,127, 3,127,191,195,255,255,170,170, 0, 0, 0, 0, + 0, 0, 31,120,192, 0, 15, 56,124,219,152, 20, 20, 18, 50,207, 3,255, 3,207, 50, 18, 20, 20,152,219,124, 56, 15, 0,192,120, 31, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 4, 4, 8, 8, 8, 8, 8, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,130,135, 31, 7,159, 7, 28, 7,159, 7,159, 7, 2,130, 0, 0, 0, 0, + 32, 16, 16, 16, 17, 11, 14, 12, 24, 16, 49, 35, 98,102, 68, 68, 71, 71, 71, 68, 68,102, 98, 35, 49, 16, 24, 12, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 23, 0, 15, 1, 2, 1, 15, 0, 15, 2, 5, 8 + }, + { + 0, 0,126,126, 24, 60,102, 66, 0, 12, 28,112,112, 28, 12, 0,116,116, 20, 20,124,104, 0,124,124, 0,112,120, 44, 36,124,124,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0,128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 4, 2, 1, 1, 2, 12, 48, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,128, + 0, 0, 0, 0,192, 96, 48, 24, 12,132,198, 98, 35, 51, 17,145,113,241,113,145, 17, 51, 35, 98,198,132, 12, 24, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30,225, 0, 0, 1, 1, 2, 2, 1, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 48, 48, 0,192,193,193,194, 4, 8, 16, 32, 64,128, 0, 0, 0,128,128,128,128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8,196, 4,196, 4,196, 2,194, 2,194, 1, 1, 1, 1, 0, 0, 0, + 0, 0,252, 15, 1, 0,248, 14, 31,109,140,148,148,164,166,249,224,255,224,249,166,164,148,148,140,109, 31, 14,248, 0, 1, 15,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,112, 12, 3, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 13, 1, 0, 64,160, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 8, 8, 16, 16, 16, 16, 16, 17, 15, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,170,255,255,195,191,127, 3,127,191,195,255,255,170,170, 0, 0, 0, 0, + 0, 0, 31,120,192, 0, 15, 56,124,219,152, 20, 20, 18, 50,207, 3,255, 3,207, 50, 18, 20, 20,152,219,124, 56, 15, 0,192,120, 31, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 4, 4, 8, 8, 8, 8, 8, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,130,135, 31, 7,159, 7, 28, 7,159, 7,159, 7, 2,130, 0, 0, 0, 0, + 32, 16, 16, 16, 17, 11, 14, 12, 24, 16, 49, 35, 98,102, 68, 68, 71, 71, 71, 68, 68,102, 98, 35, 49, 16, 24, 12, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 23, 0, 15, 1, 2, 1, 15, 0, 15, 2, 5, 8 + }, + { + 0, 0,126,126, 24, 60,102, 66, 0, 12, 28,112,112, 28, 12, 0,116,116, 20, 20,124,104, 0,124,124, 0,112,120, 44, 36,124,124,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 4, 2, 2, 2, 4, 56, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,128, + 0, 0, 0, 0,192, 96, 48, 24, 12,132,198, 98, 35, 51, 17,145,113,241,113,145, 17, 51, 35, 98,198,132, 12, 24, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,226, 1, 1, 2, 2, 2, 2, 1, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 48, 48, 0,192,193,193,194, 4, 8, 16, 32, 64,128, 0, 0, 0,128,128,128,128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8,196, 4,196, 4,196, 2,194, 2,194, 1, 1, 1, 1, 0, 0, 0, + 0, 0,252, 15, 1, 0,248, 14, 31,109,140,148,148,164,166,249,224,255,224,249,166,164,148,148,140,109, 31, 14,248, 0, 1, 15,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,112, 12, 3, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 13, 1, 0, 64,160, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 8, 8, 16, 16, 16, 16, 16, 17, 15, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,170,255,255,195,191,127, 3,127,191,195,255,255,170,170, 0, 0, 0, 0, + 0, 0, 31,120,192, 0, 15, 56,124,219,152, 20, 20, 18, 50,207, 3,255, 3,207, 50, 18, 20, 20,152,219,124, 56, 15, 0,192,120, 31, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 4, 4, 8, 8, 8, 8, 8, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,130,135, 31, 7,159, 7, 28, 7,159, 7,159, 7, 2,130, 0, 0, 0, 0, + 32, 16, 16, 16, 17, 11, 14, 12, 24, 16, 49, 35, 98,102, 68, 68, 71, 71, 71, 68, 68,102, 98, 35, 49, 16, 24, 12, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 23, 0, 15, 1, 2, 1, 15, 0, 15, 2, 5, 8 + } + }; + static const char PROGMEM prep[][ANIM_SIZE] = { + { + 0, 0,126,126, 24, 60,102, 66, 0, 12, 28,112,112, 28, 12, 0,116,116, 20, 20,124,104, 0,124,124, 0,112,120, 44, 36,124,124,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0,128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 4, 2, 1, 1, 2, 12, 48, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,128, + 0, 0, 0, 0,192, 96, 48, 24, 12,132,198, 98, 35, 51, 17,145,113,241,113,145, 17, 51, 35, 98,198,132, 12, 24, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30,225, 0, 0, 1, 1, 2, 2,129,128,128, 0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 48, 48, 0, 0, 1,225, 26, 6, 9, 49, 53, 1,138,124, 0, 0,128,128,128,128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8,196, 4,196, 4,196, 2,194, 2,194, 1, 1, 1, 1, 0, 0, 0, + 0, 0,252, 15, 1, 0,248, 14, 31,109,140,148,148,164,166,249,224,255,224,249,166,164,148,148,140,109, 31, 14,248, 0, 1, 15,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,112, 12, 3, 0, 0, 24, 6, 5,152,153,132,195,124, 65, 65, 64, 64, 32, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 4, 4, 4, 4, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,170,255,255,195,191,127, 3,127,191,195,255,255,170,170, 0, 0, 0, 0, + 0, 0, 31,120,192, 0, 15, 56,124,219,152, 20, 20, 18, 50,207, 3,255, 3,207, 50, 18, 20, 20,152,219,124, 56, 15, 0,192,120, 31, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,130,135, 31, 7,159, 7, 28, 7,159, 7,159, 7, 2,130, 0, 0, 0, 0, + 32, 16, 16, 16, 17, 11, 14, 12, 24, 16, 49, 35, 98,102, 68, 68, 71, 71, 71, 68, 68,102, 98, 35, 49, 16, 24, 12, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 23, 0, 15, 1, 2, 1, 15, 0, 15, 2, 5, 8 + } + }; + static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE] = { + { + 0, 0,126,126, 24, 60,102, 66, 0, 12, 28,112,112, 28, 12, 0,116,116, 20, 20,124,104, 0,124,124, 0,112,120, 44, 36,124,124,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0,128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 4, 2, 1, 1, 2, 12, 48, 64,128, 0, 0, 0, 0, 0, 0, 0,248,248,248,248, 0, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,128, + 0, 0, 0, 0,192, 96, 48, 24, 12,132,198, 98, 35, 51, 17,145,113,241,113,145, 17, 51, 35, 98,198,132, 12, 24, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30,225, 0, 0, 1, 1, 2, 2,129,128,128, 0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 48, 48, 0, 0, 1, 1, 2, 4, 8, 16, 32, 67,135, 7, 1, 0,184,188,190,159, 95, 95, 79, 76, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8,196, 4,196, 4,196, 2,194, 2,194, 1, 1, 1, 1, 0, 0, 0, + 0, 0,252, 15, 1, 0,248, 14, 31,109,140,148,148,164,166,249,224,255,224,249,166,164,148,148,140,109, 31, 14,248, 0, 1, 15,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,112, 12, 3, 0, 0, 24, 6, 5,152,153,132, 67,124, 65, 65, 64, 64, 32, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 8, 8, 16, 16, 16, 16, 16, 17, 15, 1, 61,124,252,252,252,252,252, 60, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,170,255,255,195,191,127, 3,127,191,195,255,255,170,170, 0, 0, 0, 0, + 0, 0, 31,120,192, 0, 15, 56,124,219,152, 20, 20, 18, 50,207, 3,255, 3,207, 50, 18, 20, 20,152,219,124, 56, 15, 0,192,120, 63, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,130,135, 31, 7,159, 7, 28, 7,159, 7,159, 7, 2,130, 0, 0, 0, 0, + 32, 16, 16, 16, 17, 11, 14, 12, 24, 16, 49, 35, 98,102, 68, 68, 71, 71, 71, 68, 68,102, 98, 35, 49, 16, 24, 12, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 23, 0, 15, 1, 2, 1, 15, 0, 15, 2, 5, 8 + }, + { + 0, 0,126,126, 24, 60,102, 66, 0, 12, 28,112,112, 28, 12, 0,116,116, 20, 20,124,104, 0,124,124, 0,112,120, 44, 36,124,124,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0,128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 4, 2, 1, 1, 2, 12, 48, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,128, + 0, 0, 0, 0,192, 96, 48, 24, 12,132,198, 98, 35, 51, 17,145,113,241,113,145, 17, 51, 35, 98,198,132, 12, 24, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30,225, 0, 0, 1, 1, 2, 2, 1, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 48, 48, 0, 0, 1,225, 26, 6, 9, 49, 53, 1,138,124, 0, 0,128,128,128,128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8,196, 4,196, 4,196, 2,194, 2,194, 1, 1, 1, 1, 0, 0, 0, + 0, 0,252, 15, 1, 0,248, 14, 31,109,140,148,148,164,166,249,224,255,224,249,166,164,148,148,140,109, 31, 14,248, 0, 1, 15,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,112, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 64,160, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 4, 4, 4, 4, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,170,255,255,195,191,127, 3,127,191,195,255,255,170,170, 0, 0, 0, 0, + 0, 0, 31,120,192, 0, 15, 56,124,219,152, 20, 20, 18, 50,207, 3,255, 3,207, 50, 18, 20, 20,152,219,124, 56, 15, 0,192,120, 31, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3,122,122,121,121,121,121, 57, 49, 2, 2, 4, 4, 8, 8, 8,136,136,135,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,130,135, 31, 7,159, 7, 28, 7,159, 7,159, 7, 2,130, 0, 0, 0, 0, + 32, 16, 16, 16, 17, 11, 14, 12, 24, 16, 49, 35, 98,102, 68, 68, 71, 71, 71, 68, 68,102, 98, 35, 49, 16, 24, 12, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,120,124,254,255, 63, 7, 0, 0, 0, 0,255,255,127,127, 63, 62, 28, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 23, 0, 15, 1, 2, 1, 15, 0, 15, 2, 5, 8 + }, + }; + + //assumes 1 frame prep stage + void animation_phase(void) { + if(get_current_wpm() <=IDLE_SPEED){ + current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES; + oled_write_raw_P(idle[abs((IDLE_FRAMES-1)-current_idle_frame)], ANIM_SIZE); + } + if(get_current_wpm() >IDLE_SPEED && get_current_wpm() 1 + oled_write_raw_P(prep[0], ANIM_SIZE); // remove if IDLE_FRAMES >1 + } + if(get_current_wpm() >=TAP_SPEED){ + current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES; + oled_write_raw_P(tap[abs((TAP_FRAMES-1)-current_tap_frame)], ANIM_SIZE); + } + } + if(get_current_wpm() != 000) { + oled_on(); // not essential but turns on animation OLED with any alpha keypress + if(timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { + anim_timer = timer_read32(); + animation_phase(); + } + anim_sleep = timer_read32(); + } else { + if(timer_elapsed32(anim_sleep) > OLED_TIMEOUT) { + oled_off(); + } else { + if(timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { + anim_timer = timer_read32(); + animation_phase(); + } + } + } +} + +// static void render_skull(void) { // Helen Tseong (http://shewolfe.co/), the original artist behind the skull, sadly only allowing use of the skull for my personal use. Her (excellent) works are copyright her, and I claim no ownership. Reach out to her for permission! +// static const char PROGMEM skull[] = { +// }; +// oled_write_raw_P(skull, 801); +// } + +bool oled_task_user(void) { + if (is_keyboard_master()) { + //render_skull(); + //oled_set_cursor(7,6); + render_status(); + // Renders the current keyboard state (layer, lock, caps, scroll, etc) + } else { + render_anim(); + oled_set_cursor(0,6); + uint8_t n = get_current_wpm(); + wpm_str[3] = '\0'; + wpm_str[2] = '0' + n % 10; + wpm_str[1] = '0' + (n /= 10) % 10; + wpm_str[0] = '0' + n / 10 ; + oled_write_P(PSTR(" WPM: "), false); + oled_write(wpm_str, false); + + } + return false; +} +#endif + +#ifdef ENCODER_ENABLE +bool encoder_update_user(uint8_t index, bool clockwise) { + switch(biton32(layer_state)){ + case 1: + if (clockwise) { + tap_code16(C(KC_TAB)); + } else { + tap_code16(S(C(KC_TAB))); + } + break; + default: + if (clockwise) { + if (!is_alt_tab_active) { + is_alt_tab_active = true; + register_code(KC_LALT); + } + alt_tab_timer = timer_read(); + tap_code16(KC_TAB); + } else { + tap_code16(S(KC_TAB)); + } + break; + } + return true; +} + +void matrix_scan_user(void) { + if (is_alt_tab_active) { + if (timer_elapsed(alt_tab_timer) > 1250) { + unregister_code(KC_LALT); + is_alt_tab_active = false; + } + } +} + +#endif diff --git a/keyboards/splitkb/kyria/keymaps/j-inc/rules.mk b/keyboards/splitkb/kyria/keymaps/j-inc/rules.mk new file mode 100644 index 000000000000..000c99502506 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/j-inc/rules.mk @@ -0,0 +1,19 @@ +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enables the use of OLED displays +ENCODER_ENABLE = yes # Enables the use of one or more encoders +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +RGBLIGHT_ANIMATIONS = yes +WPM_ENABLE = yes +MOUSEKEY_ENABLE = no + +TAP_DANCE_ENABLE = no +STENO_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +TERMINAL_ENABLE = no +GRAVE_ESC_ENABLE = no +MAGIC_ENABLE = no +SPACE_CADET_ENABLE = no +KEY_LOCK_ENABLE = no +AUDIO_ENABLE = no +CONSOLE_ENABLE = no +VELOCIKEY_ENABLE = no diff --git a/keyboards/splitkb/kyria/keymaps/jhelvy/config.h b/keyboards/splitkb/kyria/keymaps/jhelvy/config.h new file mode 100644 index 000000000000..86f3d5b5c3d9 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/jhelvy/config.h @@ -0,0 +1,33 @@ +/* Copyright 2019 Thomas Baart + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#ifdef OLED_ENABLE + #define OLED_DISPLAY_128X64 +#endif + +#define ENCODER_RESOLUTION 2 + +#define TAPPING_FORCE_HOLD +#define TAPPING_TERM 200 +#define AUTO_SHIFT_TIMEOUT 150 + +#define MOUSEKEY_DELAY 100 +#define MOUSEKEY_INTERVAL 16 +#define MOUSEKEY_MAX_SPEED 2 +#define MOUSEKEY_WHEEL_MAX_SPEED 42 +#define MOUSEKEY_WHEEL_TIME_TO_MAX 15 diff --git a/keyboards/splitkb/kyria/keymaps/jhelvy/keymap.c b/keyboards/splitkb/kyria/keymaps/jhelvy/keymap.c new file mode 100644 index 000000000000..e78e15ea3e95 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/jhelvy/keymap.c @@ -0,0 +1,203 @@ +#include QMK_KEYBOARD_H + +enum layers { + QWERTY = 0, + HOTKEYS, + TEXT, + SELECT, + NUMBERS, +}; + +enum custom_keycodes { + SIG_PROF = SAFE_RANGE, + SIG_JOHN, + R_PIPE, + R_ASSIGN, + R_COLS, + R_IN, + TEX, + E_GMAIL, + E_GWU, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[QWERTY] = LAYOUT(LALT(KC_A), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT, KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_NO, KC_NO, KC_NO, KC_NO, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, KC_LALT, KC_LCTL, KC_LGUI, MO(2), MO(4), KC_BSPC, KC_SPC, MO(1), KC_PGDN, TG(1)), + +[HOTKEYS] = LAYOUT(KC_F6, LGUI(LALT(KC_1)), LGUI(LALT(KC_2)), LCTL(KC_U), SGUI(KC_R), KC_F2, SGUI(KC_K), LCTL(KC_9), LCTL(KC_0), KC_F14, KC_F11, KC_F15, KC_F7, LGUI(LCTL(KC_A)), KC_F10, KC_LBRC, KC_RBRC, KC_F9, SIG_JOHN, LSFT(KC_TAB), KC_TAB, E_GMAIL, KC_F12, KC_F16, KC_F8, KC_ASTG, KC_NO, KC_LCBR, KC_RCBR, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, SIG_PROF, KC_F3, KC_F4, E_GWU, KC_F13, KC_F17, KC_F5, KC_NO, KC_LGUI, KC_LGUI, KC_LCTL, KC_BSPC, KC_SPC, KC_TRNS, KC_NO, KC_TRNS), + +[TEXT] = LAYOUT(LGUI(KC_BSPC), LGUI(KC_Q), LGUI(KC_W), KC_ESC, LGUI(KC_R), LGUI(KC_T), LCTL(KC_Y), LGUI(KC_LEFT), KC_UP, LGUI(KC_RGHT), KC_SCLN, R_PIPE, KC_BSPC, MO(3), LGUI(KC_S), LGUI(KC_C), LGUI(KC_V), LGUI(KC_X), KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_GRV, KC_ENT, KC_F18, LGUI(KC_A), LGUI(KC_D), KC_F1, LGUI(KC_Z), LGUI(KC_Y), KC_NO, KC_NO, KC_NO, KC_NO, KC_BSPC, LGUI(KC_F), SGUI(KC_G), LGUI(KC_G), KC_BSLS, R_ASSIGN, KC_LALT, KC_LCTL, KC_LGUI, KC_TRNS, KC_NO, KC_BSPC, KC_SPC, KC_LGUI, KC_PGUP, KC_NO), + +[SELECT] = LAYOUT(KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, SGUI(KC_LEFT), LSFT(KC_UP), SGUI(KC_RGHT), KC_NO, R_COLS, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, LSFT(KC_LEFT), LSFT(KC_DOWN), LSFT(KC_RGHT), KC_NO, R_IN, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, LALT(LSFT(KC_LEFT)), LALT(LSFT(KC_RIGHT)), KC_NO, TEX, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BSPC, KC_SPC, KC_LGUI, KC_NO, KC_NO), + +[NUMBERS] = LAYOUT(KC_NO, LGUI(KC_1), LGUI(KC_2), LGUI(KC_3), LGUI(KC_4), LGUI(KC_5), KC_EQL, KC_7, KC_8, KC_9, KC_TILD, KC_MINS, KC_NO, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_PLUS, KC_4, KC_5, KC_6, KC_COLN, KC_ENT, KC_LSPO, KC_NO, KC_NO, KC_CIRC, KC_AMPR, KC_ASTR, KC_NO, KC_NO, KC_NO, KC_NO, KC_MINS, KC_1, KC_2, KC_3, KC_SLSH, KC_PIPE, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_BSPC, KC_SPC, KC_0, KC_DOT, KC_COMM) + +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case SIG_PROF: + if (record->event.pressed) { + SEND_STRING("Cheers,\nProfessor Helveston"); + } else { + } + break; + + case SIG_JOHN: + if (record->event.pressed) { + SEND_STRING("Cheers,\nJohn"); + } else { + } + break; + + case R_PIPE: + if (record->event.pressed) { + SEND_STRING(" %>% "); + } else { + } + break; + + case R_ASSIGN: + if (record->event.pressed) { + SEND_STRING(" <- "); + } else { + } + break; + + case R_COLS: + if (record->event.pressed) { + SEND_STRING(".leftcol[\n]\n.rightcol[\n]\n"); + } else { + } + break; + + case R_IN: + if (record->event.pressed) { + SEND_STRING(" %in% "); + } else { + } + break; + + case TEX: + if (record->event.pressed) { + SEND_STRING("\\text{}"); + } else { + } + break; + + case E_GMAIL: + if (record->event.pressed) { + SEND_STRING("john.helveston@gmail.com"); + } else { + } + break; + + case E_GWU: + if (record->event.pressed) { + SEND_STRING("jph@gwu.edu"); + } else { + } + break; + + } + + return true; +}; + +#ifdef OLED_ENABLE +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + return OLED_ROTATION_180; +} + +static void render_kyria_logo(void) { + static const char PROGMEM kyria_logo[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,224,240,112,120, 56, 60, 28, 30, 14, 14, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 30, 28, 60, 56,120,112,240,224,192,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,192,224,240,124, 62, 31, 15, 7, 3, 1,128,192,224,240,120, 56, 60, 28, 30, 14, 14, 7, 7,135,231,127, 31,255,255, 31,127,231,135, 7, 7, 14, 14, 30, 28, 60, 56,120,240,224,192,128, 1, 3, 7, 15, 31, 62,124,240,224,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,240,252,255, 31, 7, 1, 0, 0,192,240,252,254,255,247,243,177,176, 48, 48, 48, 48, 48, 48, 48,120,254,135, 1, 0, 0,255,255, 0, 0, 1,135,254,120, 48, 48, 48, 48, 48, 48, 48,176,177,243,247,255,254,252,240,192, 0, 0, 1, 7, 31,255,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,254,255,255, 1, 1, 7, 30,120,225,129,131,131,134,134,140,140,152,152,177,183,254,248,224,255,255,224,248,254,183,177,152,152,140,140,134,134,131,131,129,225,120, 30, 7, 1, 1,255,255,254, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0,255,255, 0, 0,192,192, 48, 48, 0, 0,240,240, 0, 0, 0, 0, 0, 0,240,240, 0, 0,240,240,192,192, 48, 48, 48, 48,192,192, 0, 0, 48, 48,243,243, 0, 0, 0, 0, 0, 0, 48, 48, 48, 48, 48, 48,192,192, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,127,255,255,128,128,224,120, 30,135,129,193,193, 97, 97, 49, 49, 25, 25,141,237,127, 31, 7,255,255, 7, 31,127,237,141, 25, 25, 49, 49, 97, 97,193,193,129,135, 30,120,224,128,128,255,255,127, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0, 63, 63, 3, 3, 12, 12, 48, 48, 0, 0, 0, 0, 51, 51, 51, 51, 51, 51, 15, 15, 0, 0, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 63, 63, 48, 48, 0, 0, 12, 12, 51, 51, 51, 51, 51, 51, 63, 63, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 63,255,248,224,128, 0, 0, 3, 15, 63,127,255,239,207,141, 13, 12, 12, 12, 12, 12, 12, 12, 30,127,225,128, 0, 0,255,255, 0, 0,128,225,127, 30, 12, 12, 12, 12, 12, 12, 12, 13,141,207,239,255,127, 63, 15, 3, 0, 0,128,224,248,255, 63, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 7, 15, 62,124,248,240,224,192,128, 1, 3, 7, 15, 30, 28, 60, 56,120,112,112,224,224,225,231,254,248,255,255,248,254,231,225,224,224,112,112,120, 56, 60, 28, 30, 15, 7, 3, 1,128,192,224,240,248,124, 62, 15, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 15, 14, 30, 28, 60, 56,120,112,112,112,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,112,112,112,120, 56, 60, 28, 30, 14, 15, 7, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }; + oled_write_raw_P(kyria_logo, sizeof(kyria_logo)); +} + +static void render_qmk_logo(void) { + static const char PROGMEM qmk_logo[] = { + 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, + 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, + 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0}; + + oled_write_P(qmk_logo, false); +} + +static void render_status(void) { + // QMK Logo and version information + render_qmk_logo(); + oled_write_P(PSTR(" Kyria rev1.0\n\n"), false); + + // Host Keyboard Layer Status + oled_write_P(PSTR("Layer: "), false); + switch (get_highest_layer(layer_state)) { + case QWERTY: + oled_write_P(PSTR("QWERTY\n"), false); + break; + case HOTKEYS: + oled_write_P(PSTR("HOTKEYS\n"), false); + break; + case TEXT: + oled_write_P(PSTR("TEXT\n"), false); + break; + case SELECT: + oled_write_P(PSTR("SELECT\n"), false); + break; + case NUMBERS: + oled_write_P(PSTR("NUMBERS\n"), false); + break; + default: + oled_write_P(PSTR("Undefined\n"), false); + } + +} + +bool oled_task_user(void) { + if (is_keyboard_master()) { + render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) + } else { + render_kyria_logo(); + } + return false; +} +#endif + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (IS_LAYER_ON(HOTKEYS)) { + if (clockwise) { + tap_code(KC_VOLD); + } else { + tap_code(KC_VOLU); + } + } else if (IS_LAYER_ON(TEXT)) { + if (clockwise) { + tap_code(KC_MS_WH_LEFT); + } else { + tap_code(KC_MS_WH_RIGHT); + } + } else if (IS_LAYER_ON(NUMBERS)) { + if (clockwise) { + tap_code16(G(KC_MINS)); + } else { + register_code(KC_LGUI); + tap_code(KC_EQL); + unregister_code(KC_LGUI); + } + } else { + if (clockwise) { + tap_code(KC_MS_WH_UP); + } else { + tap_code(KC_MS_WH_DOWN); + } + } + return true; +} diff --git a/keyboards/splitkb/kyria/keymaps/jhelvy/rules.mk b/keyboards/splitkb/kyria/keymaps/jhelvy/rules.mk new file mode 100644 index 000000000000..a987a4ded23b --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/jhelvy/rules.mk @@ -0,0 +1,9 @@ +AUTO_SHIFT_ENABLE = yes # Autoshift by holding down a key +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enables the use of OLED displays +ENCODER_ENABLE = yes # Enables the use of one or more encoders +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +LEADER_ENABLE = no # Enable the Leader Key feature +MOUSEKEY_ENABLE = yes +EXTRAKEY_ENABLE = yes +BACKLIGHT_ENABLE = no diff --git a/keyboards/splitkb/kyria/keymaps/john-ezra/config.h b/keyboards/splitkb/kyria/keymaps/john-ezra/config.h new file mode 100644 index 000000000000..70b41675a395 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/john-ezra/config.h @@ -0,0 +1,40 @@ +/* Copyright 2021 John Ezra + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define OLED_FONT_H "keyboards/splitkb/kyria/keymaps/john-ezra/glcdfont.c" +#define OLED_FONT_END 255 +#define OLED_TIMEOUT 30000 +#define OLED_DISPLAY_128X64 + +#ifdef RGBLIGHT_ENABLE + #define RGBLIGHT_HUE_STEP 5 + #define RGBLIGHT_SAT_STEP 5 + #define RGBLIGHT_VAL_STEP 5 + #define RGBLIGHT_LIMIT_VAL 150 +#endif + +#undef DEBOUNCE +#define DEBOUNCE 1 + +#define TAPPING_TERM 125 + +#define SPLIT_WPM_ENABLE + +#define USB_POLLING_INTERVAL_MS 1 + +#define DEBUG_MATRIX_SCAN_RATE diff --git a/keyboards/splitkb/kyria/keymaps/john-ezra/glcdfont.c b/keyboards/splitkb/kyria/keymaps/john-ezra/glcdfont.c new file mode 100644 index 000000000000..86fb5d86e35d --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/john-ezra/glcdfont.c @@ -0,0 +1,276 @@ +/* Copyright 2021 John Ezra +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*/ + +#include "progmem.h" + +static const unsigned char font[] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, + 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, + 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, + 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, + 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, + 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, + 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, + 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, + 0x00, 0x18, 0x24, 0x18, 0x00, 0x00, + 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, + 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, + 0x26, 0x29, 0x79, 0x29, 0x26, 0x00, + 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, + 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, + 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, + 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, + 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, + 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, + 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, + 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, + 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, + 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, + 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00, + 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00, + 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, + 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, + 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, + 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, + 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, + 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, + 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, + 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, + 0x23, 0x13, 0x08, 0x64, 0x62, 0x00, + 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, + 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, + 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, + 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, + 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, + 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, + 0x00, 0x80, 0x70, 0x30, 0x00, 0x00, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, + 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, + 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, + 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, + 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, + 0x72, 0x49, 0x49, 0x49, 0x46, 0x00, + 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, + 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, + 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, + 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, + 0x41, 0x21, 0x11, 0x09, 0x07, 0x00, + 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, + 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, + 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, + 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, + 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, + 0x02, 0x01, 0x59, 0x09, 0x06, 0x00, + 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00, + 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, + 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, + 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, + 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, + 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, + 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, + 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, + 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, + 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, + 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, + 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, + 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, + 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, + 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, + 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, + 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, + 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, + 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, + 0x26, 0x49, 0x49, 0x49, 0x32, 0x00, + 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00, + 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, + 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, + 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, + 0x63, 0x14, 0x08, 0x14, 0x63, 0x00, + 0x03, 0x04, 0x78, 0x04, 0x03, 0x00, + 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, + 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, + 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, + 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, + 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, + 0x00, 0x03, 0x07, 0x08, 0x00, 0x00, + 0x20, 0x54, 0x54, 0x78, 0x40, 0x00, + 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00, + 0x38, 0x44, 0x44, 0x44, 0x28, 0x00, + 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00, + 0x38, 0x54, 0x54, 0x54, 0x18, 0x00, + 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00, + 0x18, 0x24, 0x24, 0x1C, 0x78, 0x00, + 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, + 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, + 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, + 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, + 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, + 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00, + 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, + 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, + 0x7C, 0x18, 0x24, 0x24, 0x18, 0x00, + 0x18, 0x24, 0x24, 0x18, 0x7C, 0x00, + 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, + 0x48, 0x54, 0x54, 0x54, 0x24, 0x00, + 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00, + 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, + 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, + 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, + 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, + 0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00, + 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, + 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, + 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0x00, 0x41, 0x36, 0x08, 0x00, 0x00, + 0x02, 0x01, 0x02, 0x04, 0x02, 0x00, + 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, + 0x00, 0xF0, 0x08, 0x24, 0x52, 0xE2, + 0x42, 0x42, 0x42, 0xE2, 0x52, 0x22, + 0x24, 0x22, 0x42, 0x82, 0x02, 0x02, + 0x22, 0x22, 0x02, 0x02, 0xFE, 0x00, + 0x00, 0xF0, 0x08, 0x04, 0x02, 0x82, + 0x42, 0x22, 0x42, 0x82, 0x02, 0x02, + 0x04, 0x82, 0x42, 0x22, 0x12, 0x22, + 0x42, 0x82, 0x02, 0x02, 0xFE, 0x00, + 0x00, 0xF0, 0x08, 0x84, 0x42, 0x42, + 0x82, 0x82, 0x42, 0x42, 0x42, 0x82, + 0x04, 0x82, 0xC2, 0xE2, 0xF2, 0xE2, + 0xC2, 0x82, 0x02, 0x02, 0xFE, 0x00, + 0x00, 0xF0, 0x08, 0x44, 0x42, 0xF2, + 0x42, 0x42, 0x42, 0xF2, 0x42, 0x42, + 0x04, 0x82, 0xE2, 0x92, 0x92, 0x92, + 0xE2, 0x82, 0x02, 0x02, 0xFE, 0x00, + 0x00, 0xF0, 0x08, 0x84, 0x82, 0x02, + 0x82, 0x02, 0x02, 0x82, 0x82, 0x02, + 0x02, 0x02, 0x82, 0x82, 0x02, 0x02, + 0xE2, 0x12, 0x12, 0xE2, 0x02, 0x62, + 0x92, 0x92, 0x22, 0x02, 0xFE, 0x00, + 0x00, 0xF0, 0x08, 0x04, 0xF2, 0x02, + 0x02, 0x02, 0xF2, 0x02, 0x82, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x22, + 0xF2, 0x02, 0x02, 0xE2, 0x12, 0x12, + 0x12, 0xE2, 0x02, 0x02, 0xFE, 0x00, + 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, 0xFE, 0x00, 0x00, 0xF0, 0x08, + 0x02, 0xFE, 0x00, 0x00, 0xF0, 0xF8, + 0x00, 0x7F, 0x40, 0x44, 0x4A, 0x47, + 0x42, 0x42, 0x42, 0x47, 0x4A, 0x44, + 0x40, 0x40, 0x40, 0x40, 0x41, 0x42, + 0x44, 0x44, 0x40, 0x40, 0x7F, 0x00, + 0x00, 0x7F, 0x40, 0x40, 0x41, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x41, 0x40, + 0x41, 0x41, 0x4F, 0x48, 0x48, 0x48, + 0x4F, 0x41, 0x41, 0x40, 0x7F, 0x00, + 0x00, 0x7F, 0x40, 0x41, 0x42, 0x42, + 0x42, 0x41, 0x41, 0x42, 0x42, 0x41, + 0x40, 0x40, 0x40, 0x4B, 0x4B, 0x4B, + 0x40, 0x40, 0x40, 0x40, 0x7F, 0x00, + 0x00, 0x7F, 0x40, 0x42, 0x42, 0x4F, + 0x42, 0x42, 0x42, 0x4F, 0x42, 0x42, + 0x40, 0x4F, 0x4F, 0x4F, 0x48, 0x4F, + 0x4F, 0x4F, 0x40, 0x40, 0x7F, 0x00, + 0x00, 0x7F, 0x40, 0x4F, 0x40, 0x4F, + 0x40, 0x4F, 0x44, 0x4A, 0x4A, 0x4F, + 0x48, 0x47, 0x48, 0x48, 0x45, 0x40, + 0x47, 0x48, 0x48, 0x47, 0x40, 0x44, + 0x48, 0x48, 0x47, 0x40, 0x7F, 0x00, + 0x00, 0x7F, 0x40, 0x40, 0x47, 0x48, + 0x47, 0x48, 0x47, 0x40, 0x4E, 0x40, + 0x4F, 0x41, 0x41, 0x4E, 0x40, 0x48, + 0x4F, 0x48, 0x40, 0x47, 0x48, 0x48, + 0x48, 0x47, 0x40, 0x40, 0x7F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x7F, 0x00, 0x00, 0x7F, 0x40, + 0x40, 0x7F, 0x00, 0x00, 0x7F, 0x7F, + 0x00, 0xF0, 0xF8, 0xDC, 0xAE, 0x1E, + 0xBE, 0xBE, 0xBE, 0x1E, 0xAE, 0xDE, + 0xDC, 0xDE, 0xBE, 0x7E, 0xFE, 0xFE, + 0xDE, 0xDE, 0xFE, 0xFE, 0xFE, 0x00, + 0x00, 0xF0, 0xF8, 0xFC, 0xFE, 0x7E, + 0xBE, 0xDE, 0xBE, 0x7E, 0xFE, 0xFE, + 0xFC, 0x7E, 0x3E, 0x1E, 0x0E, 0x1E, + 0x3E, 0x7E, 0xFE, 0xFE, 0xFE, 0x00, + 0x00, 0xF0, 0xF8, 0x7C, 0xBE, 0xBE, + 0x7E, 0x7E, 0xBE, 0xBE, 0xBE, 0x7E, + 0xFC, 0x7E, 0x3E, 0x1E, 0x0E, 0x1E, + 0x3E, 0x7E, 0xFE, 0xFE, 0xFE, 0x00, + 0x00, 0xF0, 0xF8, 0xBC, 0xBE, 0x0E, + 0xBE, 0xBE, 0xBE, 0x0E, 0xBE, 0xBE, + 0xFC, 0x7E, 0x1E, 0x6E, 0x6E, 0x6E, + 0x1E, 0x7E, 0xFE, 0xFE, 0xFE, 0x00, + 0x00, 0xF0, 0xF8, 0x7C, 0x7E, 0xFE, + 0x7E, 0xFE, 0xFE, 0x7E, 0x7E, 0xFE, + 0xFE, 0xFE, 0x7E, 0x7E, 0xFE, 0xFE, + 0x1E, 0xEE, 0xEE, 0x1E, 0xFE, 0x9E, + 0x6E, 0x6E, 0xDE, 0xFE, 0xFE, 0x00, + 0x00, 0xF0, 0xF8, 0xFC, 0x0E, 0xFE, + 0xFE, 0xFE, 0x0E, 0xFE, 0x7E, 0xFE, + 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xDE, + 0x0E, 0xFE, 0xFE, 0x1E, 0xEE, 0xEE, + 0xEE, 0x1E, 0xFE, 0xFE, 0xFE, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFE, 0xFE, 0x00, 0x00, 0xF0, 0x08, + 0xFE, 0xFE, 0x00, 0x00, 0xF0, 0xF8, + 0x00, 0x7F, 0x7F, 0x7B, 0x75, 0x78, + 0x7D, 0x7D, 0x7D, 0x78, 0x75, 0x7B, + 0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x7D, + 0x7B, 0x7B, 0x7F, 0x7F, 0x7F, 0x00, + 0x00, 0x7F, 0x7F, 0x7F, 0x7E, 0x7F, + 0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x7F, + 0x7E, 0x7E, 0x70, 0x70, 0x70, 0x70, + 0x70, 0x7E, 0x7E, 0x7F, 0x7F, 0x00, + 0x00, 0x7F, 0x7F, 0x7E, 0x7D, 0x7D, + 0x7D, 0x7E, 0x7E, 0x7D, 0x7D, 0x7E, + 0x7F, 0x7F, 0x7F, 0x74, 0x74, 0x74, + 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x00, + 0x00, 0x7F, 0x7F, 0x7D, 0x7D, 0x70, + 0x7D, 0x7D, 0x7D, 0x70, 0x7D, 0x7D, + 0x7F, 0x70, 0x70, 0x70, 0x77, 0x70, + 0x70, 0x70, 0x7F, 0x7F, 0x7F, 0x00, + 0x00, 0x7F, 0x7F, 0x70, 0x7F, 0x70, + 0x7F, 0x70, 0x7B, 0x75, 0x75, 0x70, + 0x77, 0x78, 0x77, 0x77, 0x7A, 0x7F, + 0x78, 0x77, 0x77, 0x78, 0x7F, 0x7B, + 0x77, 0x77, 0x78, 0x7F, 0x7F, 0x00, + 0x00, 0x7F, 0x7F, 0x7F, 0x78, 0x77, + 0x78, 0x77, 0x78, 0x7F, 0x71, 0x7F, + 0x70, 0x7E, 0x7E, 0x71, 0x7F, 0x77, + 0x70, 0x77, 0x7F, 0x78, 0x77, 0x77, + 0x77, 0x78, 0x7F, 0x7F, 0x7F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7F, 0x7F, 0x00, 0x00, 0x7F, 0x40, + 0x7F, 0x7F, 0x00, 0x00, 0x7F, 0x7F, +}; diff --git a/keyboards/splitkb/kyria/keymaps/john-ezra/keymap.c b/keyboards/splitkb/kyria/keymaps/john-ezra/keymap.c new file mode 100644 index 000000000000..6937007e5c41 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/john-ezra/keymap.c @@ -0,0 +1,261 @@ +/* Copyright 2021 John Ezra +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum kyria_layers { + _HNTS, + _GAME, + _NUMPAD, + _LOWER, + _RAISE, + _ADJUST +}; + +enum kyria_keycodes { + HNTS = SAFE_RANGE, + ESC_NUM, + LOWER, + RAISE, + MSS_CTL, + CPY_PST, + UNDO, + FIND +}; + +#define HNTS DF(_HNTS) +#define GAME TG(_GAME) +#define NUMPAD TG(_NUMPAD) +#define MSS_CTL MT(MOD_LCTL, C(KC_UP)) +#define BSP_CMD MT(MOD_LGUI, KC_BSPC) +#define TAB_CMD MT(MOD_LGUI, KC_TAB) +#define SFT_ENT MT(MOD_LSFT, KC_ENT) +#define ALT_ESC MT(MOD_LALT, KC_ESC) +#define ALT_TAB A(KC_TAB) +#define UNDO G(KC_Z) +#define FIND G(KC_F) + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* + * Default: HNTS + * + * ,-----------------------------------------------. ,-----------------------------------------------. + * | Find | Z | R | L | D | W | | Y | P | U | X | Q | | \ | + * |-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------| + * |Cpy/Pst| H | N | T | S | C | | B | I | E | O | A | ` ~ | + * |-------+-------+-------+-------+-------+-------+---------------. ,---------------+-------+-------+-------+-------+-------+-------| + * | Undo | K | V | M | F | G | Esc |MssnCtl| |MssnCtl| Esc | J | ; : | , < | . > | / ? | ' " | + * `-------+-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-----------------------' + * | Numpad| Enter | Lower | Space | BSPC | | Tab | Shift | Raise | Del | Caps | + * `---------------------------------------' `---------------------------------------' + */ + +[_HNTS] = LAYOUT( + FIND, KC_Z, KC_R, KC_L, KC_D, KC_W, KC_Y, KC_P, KC_U, KC_X, KC_Q, KC_BSLS, + CPY_PST, KC_H, KC_N, KC_T, KC_S, KC_C, KC_B, KC_I, KC_E, KC_O, KC_A, KC_GRV, + UNDO, KC_K, KC_V, KC_M, KC_F, KC_G, ALT_ESC, MSS_CTL, MSS_CTL, ALT_ESC, KC_J, KC_SCLN, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT, + NUMPAD, SFT_ENT, LOWER, KC_SPC, BSP_CMD, TAB_CMD, SFT_ENT, RAISE, KC_DEL, KC_CAPS +), + +/* + * Game: Gaming Layer + * + * ,-----------------------------------------------. ,-----------------------------------------------. + * | 0 | Z | R | L | D | W | | Y | P | U | X | Q | Esc | + * |-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------| + * | 1 | H | N | T | S | C | | B | I | E | O | A | Enter | + * |-------+-------+-------+-------+-------+-------+---------------. ,---------------+-------+-------+-------+-------+-------+-------| + * | 2 | K | V | M | F | G | 8 | 9 | |Default| Esc | J | ; : | , < | . > | / ? |Alt+Tab| + * `-------+-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-----------------------' + * | 3 | 4 | 5 | 6 | 7 | | Tab | Shift | Raise | Del | Caps | + * `---------------------------------------' `---------------------------------------' + */ + +[_GAME] = LAYOUT( + KC_0, KC_Z, KC_R, KC_L, KC_D, KC_W, KC_Y, KC_P, KC_U, KC_X, KC_Q, KC_ESC, + KC_1, KC_H, KC_N, KC_T, KC_S, KC_C, KC_B, KC_I, KC_E, KC_O, KC_A, KC_ENT, + KC_2, KC_K, KC_V, KC_M, KC_F, KC_G, KC_8, KC_9, GAME, ALT_ESC, KC_J, KC_SCLN, KC_COMM, KC_DOT, KC_SLSH, ALT_TAB, + KC_3, KC_4, KC_5, KC_6, KC_7, TAB_CMD, SFT_ENT, RAISE, KC_DEL, KC_CAPS +), + +/* + * Numpad + * + * ,-----------------------------------------------. ,-----------------------------------------------. + * | * | + | 7 | 8 | 9 | 0 | | | | | | | | + * |-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------| + * | / | - | 4 | 5 | 6 | ( | | | Left | Up | Down | Right | | + * |-------+-------+-------+-------+-------+-------+---------------. ,---------------+-------+-------+-------+-------+-------+-------| + * | = | . | 1 | 2 | 3 | ) | | | | | | | | | | | | + * `-------+-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-----------------------' + * | | | | | | | | | | | | + * `---------------------------------------' `---------------------------------------' + */ + +[_NUMPAD] = LAYOUT( + KC_ASTR, KC_PLUS, KC_7, KC_8, KC_9, KC_0, _______, _______, _______, _______, _______, _______, + KC_SLSH, KC_MINS, KC_4, KC_5, KC_6, KC_LPRN, _______, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, _______, + KC_EQL, KC_DOT, KC_1, KC_2, KC_3, KC_RPRN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), + +/* + * Lower: Symbols & Media + * + * ,-----------------------------------------------. ,-----------------------------------------------. + * | Tab | * | / | + | - | = | | | | { | } | @ | ! | ` | + * |-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------| + * | Enter | Left | Up | Down | Right | | | \ | ( | ) | $ | # | ~ | + * |-------+-------+-------+-------+-------+-------+---------------. ,---------------+-------+-------+-------+-------+-------+-------| + * | Esc | Vol- | Vol+ | Prev | Play | Next | | | | | | _ | [ | ] | ^ | % | & | + * `-------+-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-----------------------' + * | | | | | | | | | | | | + * `---------------------------------------' `---------------------------------------' + */ + +[_LOWER] = LAYOUT( + KC_TAB, KC_ASTR, KC_SLSH, KC_PLUS, KC_MINS, KC_EQL, KC_PIPE, KC_LCBR, KC_RCBR, KC_AT, KC_EXLM, KC_GRV, + KC_ENT, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, _______, KC_BSLS, KC_LPRN, KC_RPRN, KC_DLR, KC_HASH, KC_TILD, + KC_ESC, KC_VOLD, KC_VOLU, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, _______, _______, KC_UNDS, KC_LBRC, KC_RBRC, KC_CIRC, KC_PERC, KC_AMPR, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), + +/* + * Raise: Numbers + * + * ,-----------------------------------------------. ,-----------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 | + * |-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------| + * | | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | F12 | + * |-------+-------+-------+-------+-------+-------+---------------. ,---------------+-------+-------+-------+-------+-------+-------| + * | | | | | | | | | | | | | Left | Up | Down | Right | Esc | + * `-------+-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-----------------------' + * | | | | | | | | | | | | + * `---------------------------------------' `---------------------------------------' + */ + +[_RAISE] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_F12, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, KC_ESC, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), + +/* + * Adjust: Function Keys & RGB + * + * ,-----------------------------------------------. ,-----------------------------------------------. + * | Reset | | | | | | | | NKRO |CG SWAP| | | HNTS | + * |-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------| + * | | TOG | SAI | HUI | VAI | MOD | | |Bright+|Bright-| | | | + * |-------+-------+-------+-------+-------+-------+---------------. ,---------------+-------+-------+-------+-------+-------+-------| + * | | | SAD | HUD | VAD | RMOD | | | | | | | | | | | | + * `-------+-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-----------------------' + * | | | | | | | | | | | | + * `---------------------------------------' `---------------------------------------' + */ + +[_ADJUST] = LAYOUT( + RESET, _______, _______, _______, _______, _______, _______, NK_TOGG, CG_TOGG, _______, GAME, HNTS, + _______, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_MOD, _______, KC_BRIU, KC_BRID, _______, _______, _______, + _______, _______, RGB_SAD, RGB_HUD, RGB_VAD,RGB_RMOD,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), + +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case CPY_PST: // Hold to Copy, Hold with GUI to Cut, Tap to Paste + { + static uint16_t copy_paste_timer; + if (record->event.pressed) { + copy_paste_timer = timer_read(); + } else { + if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) { + if (get_mods() & MOD_MASK_GUI) { + tap_code16(LGUI(KC_X)); + } else { + tap_code16(LGUI(KC_C)); + } + } else { + tap_code16(LGUI(KC_V)); + } + } + } + break; + case MSS_CTL: + if (record->event.pressed && record->tap.count) { + tap_code16(C(KC_UP)); + return false; + } + break; + case UNDO: // Tap to Undo, Tap with GUI to Redo + if (get_mods() & MOD_MASK_GUI) { + if (record->event.pressed) { + tap_code(KC_Y); + } + return false; + } + break; + case FIND: // Tap to Find, Tap with GUI to Select All + if (get_mods() & MOD_MASK_GUI) { + if (record->event.pressed) { + tap_code(KC_A); + } + return false; + } + break; + } + return true; +}; + +const key_override_t ctrl_h = ko_make_basic(MOD_MASK_CTRL, KC_H, C(KC_LEFT)); //MocOS Desktop Navigation +const key_override_t ctrl_n = ko_make_basic(MOD_MASK_CTRL, KC_N, C(KC_UP)); //MocOS Desktop Navigation +const key_override_t ctrl_t = ko_make_basic(MOD_MASK_CTRL, KC_T, C(KC_DOWN)); //MocOS Desktop Navigation +const key_override_t ctrl_s = ko_make_basic(MOD_MASK_CTRL, KC_S, C(KC_RGHT)); //MocOS Desktop Navigation +const key_override_t bsp_del = ko_make_basic(MOD_MASK_SHIFT, BSP_CMD, KC_DEL); // Shift+Bksp sends Delete + +const key_override_t **key_overrides = (const key_override_t *[]){ + &ctrl_h, + &ctrl_n, + &ctrl_t, + &ctrl_s, + &bsp_del, + NULL +}; diff --git a/keyboards/splitkb/kyria/keymaps/john-ezra/oled.c b/keyboards/splitkb/kyria/keymaps/john-ezra/oled.c new file mode 100644 index 000000000000..732cca8f7b8b --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/john-ezra/oled.c @@ -0,0 +1,490 @@ +/* Copyright 2021 John Ezra +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*/ + +//Sets up what the OLED screens display. + +#include QMK_KEYBOARD_H + +int timer = 0; +char wpm_counter[5]; +int x = 31; +int currwpm = 0; +int vert_count = 0; + +//============= USER CONFIG PARAMS =============== +float max_wpm = 150.0f; //WPM value at the top of the graph window +int graph_refresh_interval = 100; //in milliseconds +int graph_area_fill_interval = 3; //determines how dense the horizontal lines under the graph line are; lower = more dense +int vert_interval = 3; //determines frequency of vertical lines under the graph line +bool vert_line = false; //determines whether to draw vertical lines +int graph_line_thickness = 2; //determines thickness of graph line in pixels +//============= END USER PARAMS =============== + +#ifdef OLED_ENABLE + oled_rotation_t oled_init_user(oled_rotation_t rotation) { + return OLED_ROTATION_180; +} + +static void render_qmk_logo(void) { + static const char PROGMEM qmk_logo[] = { + 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xf0, 0x70, 0x70, 0x7e, 0xf0, 0xf0, 0xfe, 0xf0, 0x70, 0x7e, + 0x70, 0xf0, 0xfe, 0xf0, 0xf0, 0x7e, 0x70, 0x70, 0xf0, 0xe0, 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, 0x92, 0x92, 0x92, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x92, 0x92, 0x92, 0x00, 0x00, + 0xf8, 0xfc, 0x0e, 0x06, 0x06, 0x06, 0x0e, 0xfc, 0xf8, 0x00, 0xfe, 0xfe, 0x1c, 0x38, 0x70, 0xe0, + 0x70, 0x38, 0x1c, 0xfe, 0xfe, 0x00, 0xfe, 0xfe, 0xe0, 0xf0, 0xb8, 0x1c, 0x0e, 0x06, 0x00, 0x00, + 0x00, 0xfe, 0xfe, 0xc6, 0xc6, 0xc6, 0x06, 0x00, 0xe6, 0xe6, 0x00, 0xf0, 0xf0, 0x60, 0x30, 0x30, + 0x60, 0x00, 0xf0, 0xf0, 0x30, 0x30, 0xe0, 0xc0, 0x30, 0x30, 0x30, 0xe0, 0xc0, 0x00, 0xf0, 0xf0, + 0x00, 0xc0, 0xe0, 0x70, 0xe0, 0xc0, 0x00, 0xf0, 0xf0, 0x00, 0x20, 0xb0, 0x90, 0xb0, 0xf0, 0xe0, + 0x00, 0xf0, 0xf0, 0x60, 0x30, 0x30, 0x60, 0x00, 0xc0, 0xe0, 0x30, 0x30, 0x30, 0xe0, 0xc0, 0x00, + 0x00, 0x24, 0x24, 0x24, 0xff, 0xff, 0xff, 0xfe, 0xfc, 0xf8, 0xf0, 0xf1, 0xe3, 0xe3, 0x00, 0x00, + 0x00, 0xe3, 0xe3, 0xf1, 0xf0, 0xf8, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0x24, 0x24, 0x24, 0x00, 0x00, + 0x03, 0x07, 0x0e, 0x0c, 0x0c, 0x1c, 0x1e, 0x17, 0x13, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x0f, 0x0f, 0x00, 0x01, 0x03, 0x07, 0x0e, 0x0c, 0x00, 0x00, + 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x01, 0x0f, + 0x0f, 0x07, 0x01, 0x00, 0x01, 0x07, 0x0f, 0x0f, 0x01, 0x00, 0x07, 0x0f, 0x0c, 0x04, 0x0f, 0x0f, + 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0d, 0x09, 0x09, 0x0d, 0x04, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x07, 0x3f, 0x07, 0x07, 0x3f, 0x07, 0x07, 0x3f, + 0x07, 0x07, 0x3f, 0x07, 0x07, 0x3f, 0x07, 0x07, 0x07, 0x03, 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 + }; + oled_write_raw_P(qmk_logo, sizeof(qmk_logo)); +} + +// Loop to create line by line rendering for Horizontal display +// Input is oled_render_image(how many rows tall, how many pixels wide, what to render, X pos, Y pos, Frame offset) +void oled_render_image(int lines, int px, const char render_line[][px], int X_pos, int Y_pos, int frame) { + for (uint8_t i = 0; i < lines; i++){ + oled_set_cursor(X_pos, Y_pos + i); + oled_write_raw_P(render_line[i + frame], px); + } +} + +static void render_layers(void) { + static const char PROGMEM layer_background_r1[1][38] = { + {0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x82, 0x82, 0x82, 0x42, + 0x42, 0x42, 0x22, 0x22, 0x22, 0x42, 0x42, 0x42, 0x82, 0x82, 0x82, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe} + }; + static const char PROGMEM layer_background_r2[1][38] = { + {0x00, 0xff, 0x00, 0x44, 0x44, 0x44, 0xaa, 0xaa, 0xaa, 0x11, 0x11, 0x11, 0x20, 0x20, 0x20, 0x40, + 0x40, 0x40, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x11, 0x11, 0x11, 0xaa, 0xaa, + 0xaa, 0x44, 0x44, 0x44, 0x00, 0xff} + }; + static const char PROGMEM layer_background_r3[1][38] = { + {0x00, 0xff, 0x00, 0x44, 0x44, 0x44, 0xaa, 0xaa, 0xaa, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x44, + 0x44, 0x44, 0x88, 0x88, 0x88, 0x44, 0x44, 0x44, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0xaa, 0xaa, + 0xaa, 0x44, 0x44, 0x44, 0x00, 0xff} + }; + static const char PROGMEM layer_background_r4[1][38] = { + {0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, 0x41, 0x41, 0x42, 0x42, 0x42, 0x44, + 0x44, 0x44, 0x48, 0x48, 0x48, 0x44, 0x44, 0x44, 0x42, 0x42, 0x42, 0x41, 0x41, 0x41, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f} + }; + static const char PROGMEM base[1][38] = { + {0x00, 0xff, 0x00, 0x44, 0x44, 0x44, 0xae, 0xae, 0xae, 0x1f, 0x1f, 0x1f, 0x3e, 0x3e, 0x3e, 0x7c, + 0x7c, 0x7c, 0xf8, 0xf8, 0xf8, 0x7c, 0x7c, 0x7c, 0x3e, 0x3e, 0x3e, 0x1f, 0x1f, 0x1f, 0xae, 0xae, + 0xae, 0x44, 0x44, 0x44, 0x00, 0xff} + }; + static const char PROGMEM lower[2][38] = { + {0x00, 0xff, 0x00, 0x44, 0x44, 0x44, 0xea, 0xea, 0xea, 0xf1, 0xf1, 0xf1, 0xe2, 0xe2, 0xe2, 0xc4, + 0xc4, 0xc4, 0x88, 0x88, 0x88, 0xc4, 0xc4, 0xc4, 0xe2, 0xe2, 0xe2, 0xf1, 0xf1, 0xf1, 0xea, 0xea, + 0xea, 0x44, 0x44, 0x44, 0x00, 0xff}, + {0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, 0x41, 0x41, 0x43, 0x43, 0x43, 0x47, + 0x47, 0x47, 0x4f, 0x4f, 0x4f, 0x47, 0x47, 0x47, 0x43, 0x43, 0x43, 0x41, 0x41, 0x41, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f} + }; + static const char PROGMEM raise[][38] = { + {0x00, 0xff, 0x00, 0x44, 0x44, 0x44, 0xea, 0xea, 0xea, 0xf1, 0xf1, 0xf1, 0xe0, 0xe0, 0xe0, 0xc0, + 0xc0, 0xc0, 0x80, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0xf1, 0xf1, 0xf1, 0xea, 0xea, + 0xea, 0x44, 0x44, 0x44, 0x00, 0xff}, + {0x00, 0xff, 0x00, 0x44, 0x44, 0x44, 0xaa, 0xaa, 0xaa, 0x11, 0x11, 0x11, 0x23, 0x23, 0x23, 0x47, + 0x47, 0x47, 0x8f, 0x8f, 0x8f, 0x47, 0x47, 0x47, 0x23, 0x23, 0x23, 0x11, 0x11, 0x11, 0xaa, 0xaa, + 0xaa, 0x44, 0x44, 0x44, 0x00, 0xff} + }; + static const char PROGMEM adjust[][38] = { + {0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x82, 0x82, 0x82, 0xc2, + 0xc2, 0xc2, 0xe2, 0xe2, 0xe2, 0xc2, 0xc2, 0xc2, 0x82, 0x82, 0x82, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe}, + {0x00, 0xff, 0x00, 0x44, 0x44, 0x44, 0xae, 0xae, 0xae, 0x1f, 0x1f, 0x1f, 0x3f, 0x3f, 0x3f, 0x7f, + 0x7f, 0x7f, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0x7f, 0x3f, 0x3f, 0x3f, 0x1f, 0x1f, 0x1f, 0xae, 0xae, + 0xae, 0x44, 0x44, 0x44, 0x00, 0xff} + }; + static const char PROGMEM custom[][38] = { + {0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x82, 0x82, 0x82, 0x42, + 0xc2, 0x42, 0xa2, 0x62, 0xa2, 0x42, 0xc2, 0x42, 0x82, 0x82, 0x82, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe}, + {0x00, 0xff, 0x00, 0x44, 0x44, 0x44, 0xaa, 0xee, 0xaa, 0x55, 0xbb, 0x55, 0xaa, 0x75, 0xaa, 0x55, + 0xea, 0x55, 0xaa, 0xd5, 0xaa, 0x55, 0xea, 0x55, 0xaa, 0x75, 0xaa, 0x55, 0xbb, 0x55, 0xaa, 0xee, + 0xaa, 0x44, 0x44, 0x44, 0x00, 0xff}, + {0x00, 0xff, 0x00, 0x44, 0x44, 0x44, 0xaa, 0xee, 0xaa, 0x55, 0xbb, 0x55, 0xaa, 0x77, 0xaa, 0x55, + 0xee, 0x55, 0xaa, 0xdd, 0xaa, 0x55, 0xee, 0x55, 0xaa, 0x77, 0xaa, 0x55, 0xbb, 0x55, 0xaa, 0xee, + 0xaa, 0x44, 0x44, 0x44, 0x00, 0xff}, + {0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, 0x41, 0x41, 0x42, 0x43, 0x42, 0x45, + 0x46, 0x45, 0x4a, 0x4d, 0x4a, 0x45, 0x46, 0x45, 0x42, 0x43, 0x42, 0x41, 0x41, 0x41, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f} + }; + + switch (get_highest_layer(layer_state)) { + case 0: + oled_render_image(1, 38, layer_background_r1, 15, 4, 0); + oled_render_image(1, 38, layer_background_r2, 15, 5, 0); + oled_render_image(1, 38, base, 15, 6, 0); + oled_render_image(1, 38, layer_background_r4, 15, 7, 0); + break; + case 3: + oled_render_image(2, 38, lower, 15, 6, 0); + break; + case 4: + oled_render_image(1, 38, layer_background_r1, 15, 4, 0); + oled_render_image(2, 38, raise, 15, 5, 0); + oled_render_image(1, 38, layer_background_r4, 15, 7, 0); + break; + case 5: + oled_render_image(2, 38, adjust, 15, 4, 0); + oled_render_image(1, 38, layer_background_r3, 15, 6, 0); + oled_render_image(1, 38, layer_background_r4, 15, 7, 0); + break; + default: + oled_render_image(4, 38, custom, 15, 4, 0); + break; + } +} + +void render_mod_state(uint8_t modifiers) { + static const char PROGMEM gui_off [][3]= {{0x80, 0x81, 0}, {0xa0, 0xa1, 0}}; + static const char PROGMEM gui_on [][3]= {{0xc0, 0xc1, 0}, {0xe0, 0xe1, 0}}; + static const char PROGMEM alt_off [][3]= {{0x82, 0x83, 0}, {0xa2, 0xa3, 0}}; + static const char PROGMEM alt_on [][3]= {{0xc2, 0xc3, 0}, {0xe2, 0xe3, 0}}; + static const char PROGMEM ctrl_off [][3]= {{0x84, 0x85, 0}, {0xa4, 0xa5, 0}}; + static const char PROGMEM ctrl_on [][3]= {{0xc4, 0xc5, 0}, {0xe4, 0xe5, 0}}; + static const char PROGMEM shift_off [][3]= {{0x86, 0x87, 0}, {0xa6, 0xa7, 0}}; + static const char PROGMEM shift_on [][3]= {{0xc6, 0xc7, 0}, {0xe6, 0xe7, 0}}; + + // fillers between the modifier icons bleed into the icon frames + + static const char PROGMEM off_off [][2]= {{0x9e, 0}, {0xbe, 0}}; + static const char PROGMEM on_on [][2]= {{0xdf, 0}, {0xff, 0}}; + static const char PROGMEM on_off [][2]= {{0xde, 0}, {0xfe, 0}}; + static const char PROGMEM off_on [][2]= {{0x9f, 0}, {0xbf, 0}}; + + // render icons + + if(modifiers & MOD_MASK_GUI) { + oled_set_cursor(0, 4); + oled_write_P(gui_on[0], false); + oled_set_cursor(0, 5); + oled_write_P(gui_on[1], false); + } else { + oled_set_cursor(0, 4); + oled_write_P(gui_off[0], false); + oled_set_cursor(0, 5); + oled_write_P(gui_off[1], false); + } + if(modifiers & MOD_MASK_ALT) { + oled_set_cursor(3, 4); + oled_write_P(alt_on[0], false); + oled_set_cursor(3, 5); + oled_write_P(alt_on[1], false); + } else { + oled_set_cursor(3, 4); + oled_write_P(alt_off[0], false); + oled_set_cursor(3, 5); + oled_write_P(alt_off[1], false); + } + if(modifiers & MOD_MASK_CTRL) { + oled_set_cursor(0, 6); + oled_write_P(ctrl_on[0], false); + oled_set_cursor(0, 7); + oled_write_P(ctrl_on[1], false); + } else { + oled_set_cursor(0, 6); + oled_write_P(ctrl_off[0], false); + oled_set_cursor(0, 7); + oled_write_P(ctrl_off[1], false); + } + if(modifiers & MOD_MASK_SHIFT) { + oled_set_cursor(3, 6); + oled_write_P(shift_on[0], false); + oled_set_cursor(3, 7); + oled_write_P(shift_on[1], false); + } else { + oled_set_cursor(3, 6); + oled_write_P(shift_off[0], false); + oled_set_cursor(3, 7); + oled_write_P(shift_off[1], false); + } + + // render fillers + + if ((modifiers & MOD_MASK_GUI) && (modifiers & MOD_MASK_ALT)) { + oled_set_cursor(2, 4); + oled_write_P(on_on[0], false); + oled_set_cursor(2, 5); + oled_write_P(on_on[1], false); + } else if(modifiers & MOD_MASK_GUI) { + oled_set_cursor(2, 4); + oled_write_P(on_off[0], false); + oled_set_cursor(2, 5); + oled_write_P(on_off[1], false); + } else if(modifiers & MOD_MASK_ALT) { + oled_set_cursor(2, 4); + oled_write_P(off_on[0], false); + oled_set_cursor(2, 5); + oled_write_P(off_on[1], false); + } else { + oled_set_cursor(2, 4); + oled_write_P(off_off[0], false); + oled_set_cursor(2, 5); + oled_write_P(off_off[1], false); + } + + if ((modifiers & MOD_MASK_CTRL) && (modifiers & MOD_MASK_SHIFT)) { + oled_set_cursor(2, 6); + oled_write_P(on_on[0], false); + oled_set_cursor(2, 7); + oled_write_P(on_on[1], false); + } else if(modifiers & MOD_MASK_CTRL) { + oled_set_cursor(2, 6); + oled_write_P(on_off[0], false); + oled_set_cursor(2, 7); + oled_write_P(on_off[1], false); + } else if(modifiers & MOD_MASK_SHIFT) { + oled_set_cursor(2, 6); + oled_write_P(off_on[0], false); + oled_set_cursor(2, 7); + oled_write_P(off_on[1], false); + } else { + oled_set_cursor(2, 6); + oled_write_P(off_off[0], false); + oled_set_cursor(2, 7); + oled_write_P(off_off[1], false); + } +} + +void render_bootmagic_status(void) { + static const char PROGMEM nkro_off [][3]= {{0x88, 0x89, 0}, {0xa8, 0xa9, 0}}; + static const char PROGMEM nkro_on [][3]= {{0xc8, 0xc9, 0}, {0xe8, 0xe9, 0}}; + static const char PROGMEM mac_os_off [][6]= {{0x90, 0x91, 0x92, 0x93, 0x94, 0}, {0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0}}; + static const char PROGMEM mac_os_on [][6]= {{0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0}, {0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0}}; + static const char PROGMEM windows_off [][6]= {{0x95, 0x96, 0x97, 0x98, 0x99, 0}, {0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0}}; + static const char PROGMEM windows_on [][6]= {{0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0}, {0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0}}; + + if (keymap_config.nkro) { + oled_set_cursor(5, 4); + oled_write_P(nkro_on[0], false); + oled_set_cursor(5, 5); + oled_write_P(nkro_on[1], false); + } else { + oled_set_cursor(5, 4); + oled_write_P(nkro_off[0], false); + oled_set_cursor(5, 5); + oled_write_P(nkro_off[1], false); + } + if (keymap_config.swap_lctl_lgui) { + oled_set_cursor(10, 6); + oled_write_P(windows_on[0], false); + oled_set_cursor(10, 7); + oled_write_P(windows_on[1], false); + oled_set_cursor(10, 4); + oled_write_P(mac_os_off[0], false); + oled_set_cursor(10, 5); + oled_write_P(mac_os_off[1], false); + } else { + oled_set_cursor(10, 4); + oled_write_P(mac_os_on[0], false); + oled_set_cursor(10, 5); + oled_write_P(mac_os_on[1], false); + oled_set_cursor(10, 6); + oled_write_P(windows_off[0], false); + oled_set_cursor(10, 7); + oled_write_P(windows_off[1], false); + } +} + +void render_lock_status(void) { + static const char PROGMEM caps_off [][3]= {{0x8a, 0x8b, 0}, {0xaa, 0xab, 0}}; + static const char PROGMEM caps_on [][3]= {{0xca, 0xcb, 0}, {0xea, 0xeb, 0}}; + static const char PROGMEM num_off [][3]= {{0x8c, 0x8d, 0}, {0xac, 0xad, 0}}; + static const char PROGMEM num_on [][3]= {{0xcc, 0xcd, 0}, {0xec, 0xed, 0}}; + static const char PROGMEM scrl_off [][3]= {{0x8e, 0x8f, 0}, {0xae, 0xaf, 0}}; + static const char PROGMEM scrl_on [][3]= {{0xce, 0xcf, 0}, {0xee, 0xef, 0}}; + + static const char PROGMEM off_off [][2]= {{0x9e, 0}, {0xbe, 0}}; + static const char PROGMEM on_on [][2]= {{0xdf, 0}, {0xff, 0}}; + static const char PROGMEM on_off [][2]= {{0xde, 0}, {0xfe, 0}}; + static const char PROGMEM off_on [][2]= {{0x9f, 0}, {0xbf, 0}}; + + led_t led_usb_state = host_keyboard_led_state(); + if (led_usb_state.caps_lock) { + oled_set_cursor(8, 4); + oled_write_P(caps_on[0], false); + oled_set_cursor(8, 5); + oled_write_P(caps_on[1], false); + } else { + oled_set_cursor(8, 4); + oled_write_P(caps_off[0], false); + oled_set_cursor(8, 5); + oled_write_P(caps_off[1], false); + } + if (led_usb_state.num_lock) { + oled_set_cursor(5, 6); + oled_write_P(num_on[0], false); + oled_set_cursor(5, 7); + oled_write_P(num_on[1], false); + } else { + oled_set_cursor(5, 6); + oled_write_P(num_off[0], false); + oled_set_cursor(5, 7); + oled_write_P(num_off[1], false); + } + if (led_usb_state.scroll_lock) { + oled_set_cursor(8, 6); + oled_write_P(scrl_on[0], false); + oled_set_cursor(8, 7); + oled_write_P(scrl_on[1], false); + } else { + oled_set_cursor(8, 6); + oled_write_P(scrl_off[0], false); + oled_set_cursor(8, 7); + oled_write_P(scrl_off[1], false); + } + + // render fillers + + if ((led_usb_state.caps_lock) && (keymap_config.nkro)) { + oled_set_cursor(7, 4); + oled_write_P(on_on[0], false); + oled_set_cursor(7, 5); + oled_write_P(on_on[1], false); + } else if(keymap_config.nkro) { + oled_set_cursor(7, 4); + oled_write_P(on_off[0], false); + oled_set_cursor(7, 5); + oled_write_P(on_off[1], false); + } else if(led_usb_state.caps_lock) { + oled_set_cursor(7, 4); + oled_write_P(off_on[0], false); + oled_set_cursor(7, 5); + oled_write_P(off_on[1], false); + } else { + oled_set_cursor(7, 4); + oled_write_P(off_off[0], false); + oled_set_cursor(7, 5); + oled_write_P(off_off[1], false); + } + if ((led_usb_state.num_lock) && (led_usb_state.scroll_lock)) { + oled_set_cursor(7, 6); + oled_write_P(on_on[0], false); + oled_set_cursor(7, 7); + oled_write_P(on_on[1], false); + } else if(led_usb_state.num_lock) { + oled_set_cursor(7, 6); + oled_write_P(on_off[0], false); + oled_set_cursor(7, 7); + oled_write_P(on_off[1], false); + } else if(led_usb_state.scroll_lock) { + oled_set_cursor(7, 6); + oled_write_P(off_on[0], false); + oled_set_cursor(7, 7); + oled_write_P(off_on[1], false); + } else { + oled_set_cursor(7, 6); + oled_write_P(off_off[0], false); + oled_set_cursor(7, 7); + oled_write_P(off_off[1], false); + } +} + + + +void render_wpm_graph(void) { + currwpm = get_current_wpm(); //get current WPM value + if(timer_elapsed(timer) > graph_refresh_interval){ //check if it's been long enough before refreshing graph + x = 63 - ((currwpm / max_wpm) * 63); // main calculation to plot graph line + for(int i = 0; i <= graph_line_thickness - 1; i++){ //first draw actual value line + oled_write_pixel(1, x + i, true); + } + if(vert_line){ //then fill in area below the value line + if(vert_count == vert_interval){ + vert_count = 0; + while(x <= 63){ + oled_write_pixel(1, x, true); + x++; + } + } else { + for(int i = 63; i > x; i--){ + if(i % graph_area_fill_interval == 0){ + oled_write_pixel(1, i, true); + } + } + vert_count++; + } + } else { + for(int i = 63; i > x; i--){ + if(i % graph_area_fill_interval == 0){ + oled_write_pixel(1, i, true); + } + } + } + oled_pan(false); //then move the entire graph one pixel to the right + timer = timer_read(); //refresh the timer for the next iteration + } + char buf[4]; //format current WPM value into a printable string + oled_set_cursor(14, 0); + oled_write("WPM:", false); + buf[0] = currwpm >= 100 ? ((currwpm/100) + '0') : ' '; + buf[1] = currwpm >= 10 ? (((currwpm/10) % 10) + '0') : ' '; + buf[2] = (currwpm % 10) + '0'; + buf[3] = 0; + oled_write(buf, false); +} + +void render_status_main(void) { + render_qmk_logo(); + render_layers(); + render_mod_state(get_mods()); + render_bootmagic_status(); + render_lock_status(); + +} + +void render_status_secondary(void) { + render_wpm_graph(); +} + +bool oled_task_user(void) { + if (is_keyboard_master()) { + render_status_main(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) + } else { + render_status_secondary(); + } + return false; +} + +#endif diff --git a/keyboards/splitkb/kyria/keymaps/john-ezra/readme.md b/keyboards/splitkb/kyria/keymaps/john-ezra/readme.md new file mode 100644 index 000000000000..8a3280614b40 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/john-ezra/readme.md @@ -0,0 +1,20 @@ +### This Keymap uses the nanoBoot bootloader to maximize available firmware space. + +As is, the firmware will be too large if using the standard bootloader. Removing `DEBOUNCE_TYPE = sym_eager_pk` from the `rules.mk` should get the size under the limit. + +If nanoBoot is not going to be used, delete or comment out the following from your `rules.mk`: +```make +BOOTLOADER = hid +BOOTLOADER_SIZE = 512 +PROGRAM_CMD = $(HID_BOOTLOADER_CLI) -mmcu=$(MCU) -w -v $(BUILD_DIR)/$(TARGET).hex +``` + +nanoBoot can be found here: [nanoBoot](https://github.com/sigprof/nanoBoot) I used the string-descriptors branch as it was the latest update. + +To ISP Flash nanoBoot: `avrdude -p atmega32u4 -c avrisp -U flash:w:/Users/DempseyTech/nanoBoot/nanoBoot.hex:i -P /dev/cu.usbmodem123451 -U lfuse:w:0x7F:m -U hfuse:w:0xD6:m -U efuse:w:0xC7:m` + +You will need to change the path in the CLI command to match your file structure. + +QMK Toolbox will not recognize controllers using nanoBoot, instead use the CLI to flash. + +To Flash: `qmk flash -kb splitkb/kyria/rev1 -km john-ezra -bl hid_bootloader` diff --git a/keyboards/splitkb/kyria/keymaps/john-ezra/rules.mk b/keyboards/splitkb/kyria/keymaps/john-ezra/rules.mk new file mode 100644 index 000000000000..87026b87564f --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/john-ezra/rules.mk @@ -0,0 +1,19 @@ +OLED_ENABLE = yes # Enables the use of OLED displays +OLED_DRIVER = SSD1306 +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +NKRO_ENABLE = yes # Enable N-Key Rollover +ENCODER_ENABLE = no # Disable Rotary Encoder +SPACE_CADET_ENABLE = no # Disable Space Cadet Shift +GRAVE_ESC_ENABLE = no # Disable Grave Escape +MOUSEKEY_ENABLE = no # Disable Mousekeys +WPM_ENABLE = yes # Enable WPM Counter (Works with default wpm files, but works better with vectorstorm updated wpm.c and wpm.h -> https://github.com/vectorstorm/qmk_firmware/tree/wpm_exact) +KEY_OVERRIDE_ENABLE = yes # Enable Key Overrides +CONSOLE_ENABLE = no + +DEBOUNCE_TYPE = sym_eager_pk + +BOOTLOADER = hid # This Keymap Uses nanoBoot, more info in readme +BOOTLOADER_SIZE = 512 +PROGRAM_CMD = $(HID_BOOTLOADER_CLI) -mmcu=$(MCU) -w -v $(BUILD_DIR)/$(TARGET).hex + +SRC += oled.c diff --git a/keyboards/splitkb/kyria/keymaps/kejadlen/config.h b/keyboards/splitkb/kyria/keymaps/kejadlen/config.h new file mode 100644 index 000000000000..673bcc778f16 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/kejadlen/config.h @@ -0,0 +1,47 @@ +/* Copyright 2019 Thomas Baart + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#ifdef OLED_ENABLE + #define OLED_DISPLAY_128X64 +#endif + +#ifdef RGBLIGHT_ENABLE + #define RGBLIGHT_ANIMATIONS + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_SLEEP +#endif + +// EC11K encoders have a different resolution than other EC11 encoders. +// When using the default resolution of 4, if you notice your encoder skipping +// every other tick, lower the resolution to 2. +#define ENCODER_RESOLUTION 2 + +// The Leader key allows to flexibly assign macros to key sequences. +#define LEADER_PER_KEY_TIMING +#define LEADER_TIMEOUT 350 + +#define TAPPING_TERM 200 + +// Allows to use either side as the master. Look at the documentation for info: +// https://docs.qmk.fm/#/config_options?id=setting-handedness +#define EE_HANDS + +// Allows media codes to properly register in macros and rotary encoder code +#define TAP_CODE_DELAY 10 diff --git a/keyboards/kyria/keymaps/kejadlen/keymap.c b/keyboards/splitkb/kyria/keymaps/kejadlen/keymap.c similarity index 100% rename from keyboards/kyria/keymaps/kejadlen/keymap.c rename to keyboards/splitkb/kyria/keymaps/kejadlen/keymap.c diff --git a/keyboards/splitkb/kyria/keymaps/kejadlen/rules.mk b/keyboards/splitkb/kyria/keymaps/kejadlen/rules.mk new file mode 100644 index 000000000000..e11b7e936d45 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/kejadlen/rules.mk @@ -0,0 +1,5 @@ +OLED_ENABLE = no # Enables the use of OLED displays +ENCODER_ENABLE = no # Enables the use of one or more encoders +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +LEADER_ENABLE = no # Enable the Leader Key feature +MOUSEKEY_ENABLE = no diff --git a/keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/config.h b/keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/config.h new file mode 100644 index 000000000000..495b3032c644 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/config.h @@ -0,0 +1,37 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . + +#pragma once + +#define XXX KC_NO + +#if defined MIRYOKU_MAPPING_EXTENDED_THUMBS +#define LAYOUT_miryoku( \ + 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, \ + N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ +) \ +LAYOUT( \ +XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX, \ +XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX, \ +XXX, K20, K21, K22, K23, K24, XXX, XXX, XXX, XXX, K25, K26, K27, K28, K29, XXX, \ + XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX \ +) +#else +#define LAYOUT_miryoku( \ + 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, \ + N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ +) \ +LAYOUT( \ +XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX, \ +XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX, \ +XXX, K20, K21, K22, K23, K24, XXX, XXX, XXX, XXX, K25, K26, K27, K28, K29, XXX, \ + XXX, K32, K33, K34, XXX, XXX, K35, K36, K37, XXX \ +) +#endif diff --git a/keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/keymap.c new file mode 100644 index 000000000000..7c5717a0fee0 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/keymap.c @@ -0,0 +1,5 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/keyboards/splitkb/kyria/keymaps/mattir/config.h b/keyboards/splitkb/kyria/keymaps/mattir/config.h new file mode 100644 index 000000000000..b65ceee4032d --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/mattir/config.h @@ -0,0 +1,55 @@ +/* Copyright 2019 Thomas Baart + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#ifdef OLED_ENABLE +# define OLED_DISPLAY_128X64 +# define OLED_TIMEOUT 300000 +# define OLED_UPDATE_INTERVAL 30 +#endif + +#ifdef RGBLIGHT_ENABLE +# define RGBLIGHT_LIMIT_VAL 150 +# define RGBLIGHT_ANIMATIONS +# define RGBLIGHT_HUE_STEP 8 +# define RGBLIGHT_SAT_STEP 8 +# define RGBLIGHT_VAL_STEP 8 +# define RGBLIGHT_SLEEP +#endif + +// If you are using an Elite C rev3 on the slave side, uncomment the lines below: +//#define SPLIT_USB_DETECT +//#define NO_USB_STARTUP_CHECK + +// Set the layer toggle to only need 2 clicks instead of 5 +#define TAPPING_TOGGLE 2 + +// EC11K encoders have a different resolution than other EC11 encoders. +#define ENCODER_RESOLUTION 2 + +// The Leader key allows to flexibly assign macros to key sequences. +#define LEADER_PER_KEY_TIMING +#define LEADER_TIMEOUT 350 + +#define TAPPING_TERM 200 + +// Allows to use either side as the master. Look at the documentation for info: +// https://docs.qmk.fm/#/config_options?id=setting-handedness +#define EE_HANDS + +// Allows media codes to properly register in macros and rotary encoder code +#define TAP_CODE_DELAY 10 diff --git a/keyboards/splitkb/kyria/keymaps/mattir/keymap.c b/keyboards/splitkb/kyria/keymaps/mattir/keymap.c new file mode 100644 index 000000000000..7b567cbd6077 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/mattir/keymap.c @@ -0,0 +1,293 @@ +/* Copyright 2020 Matthew Gilbert + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layers { + QWERTY = 0, + LOWER, + RAISE, + FUNCS, + RGBLED +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [QWERTY] = LAYOUT( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LEAD, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_GRV, XXXXXXX, XXXXXXX, KC_MINS, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT, + KC_MUTE, KC_LCTL, KC_LGUI, TT(RAISE), SFT_T(KC_SPC), SFT_T(KC_SPC), TT(LOWER), KC_BSPC, KC_LALT, TG(RGBLED) + ), + [LOWER] = LAYOUT( + _______, KC_EXLM, KC_AT, KC_HASH, KC_LCBR, KC_RCBR, _______, _______, _______, _______, _______, _______, + _______, KC_DLR, KC_PERC, KC_CIRC, KC_LPRN, KC_RPRN, KC_EQL, KC_PLUS, KC_MINS, KC_ASTR, KC_SLSH, _______, + TG(FUNCS), KC_AMPR, _______, _______, KC_LBRC, KC_RBRC, _______, XXXXXXX, XXXXXXX, _______, _______, _______, KC_COMM, KC_DOT, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [RAISE] = LAYOUT( + _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, + _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, + _______, _______, KC_BTN1, KC_BTN3, KC_BTN2, _______, _______, XXXXXXX, XXXXXXX, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______, _______ + ), + [FUNCS] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_PPLS, KC_P7, KC_P8, KC_P9, KC_PAST, _______, + _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_PMNS, KC_P4, KC_P5, KC_P6, KC_PSLS, _______, + TG(FUNCS), KC_F11, KC_F12, _______, _______, _______, _______, XXXXXXX, XXXXXXX, _______, KC_P0, KC_P1, KC_P2, KC_P3, KC_PDOT, KC_PEQL, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [RGBLED] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, RGB_VAI, RGB_HUI, RGB_SAI, RGB_MOD, _______, _______, _______, _______, _______, _______, + _______, _______, RGB_VAD, RGB_HUD, RGB_SAD, RGB_RMOD, _______, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, + RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, TG(RGBLED) + ), +}; + +bool is_cmd_tab_active = false; +uint16_t cmd_tab_timer = 0; + +LEADER_EXTERNS(); + +void matrix_scan_user(void) { + if (is_cmd_tab_active) { + if (timer_elapsed(cmd_tab_timer) > 1000) { + unregister_code(KC_LGUI); + is_cmd_tab_active = false; + } + } + + LEADER_DICTIONARY() { + leading = false; + leader_end(); + + SEQ_ONE_KEY(KC_A) { + tap_code16(SGUI(KC_L)); + } + SEQ_TWO_KEYS(KC_S, KC_S) { + tap_code16(SGUI(KC_5)); + } + } +} + +#ifdef OLED_ENABLE +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + return OLED_ROTATION_180; +} + +static void render_mattir_logo(void) { + static const char PROGMEM mattir_logo[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x3c, 0xfc, 0xf8, 0xe0, + 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, 0x80, 0xe0, 0xe0, 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, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x83, 0x07, + 0x1f, 0x7e, 0xf8, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf0, 0xf8, 0xfe, 0x3f, 0x1f, 0x7f, 0xff, + 0xfc, 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, 0x0f, 0xff, 0xfc, 0xf8, 0x1c, 0x0f, 0x07, 0x00, + 0x00, 0x00, 0x01, 0x07, 0x1f, 0x7e, 0xf8, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x80, 0xe0, 0xf0, 0xfc, 0x7f, 0x1f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0f, + 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 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, + 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xfe, 0xff, 0x3f, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1f, 0x7f, 0xfc, 0xf0, 0xc0, 0x00, 0x00, 0x80, + 0xe0, 0xf8, 0xfe, 0x3f, 0x0f, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x3f, 0xff, 0xfe, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, + 0xfe, 0xff, 0x7f, 0xfc, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x80, 0xe0, 0xfc, 0x7f, 0xff, 0xff, 0xe0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0xe0, 0xe0, 0xe0, + 0x00, 0x00, 0xe0, 0xfe, 0xfe, 0xfe, 0xe0, 0xe0, 0x00, 0xe0, 0xfe, 0xfe, 0xfe, 0xe0, 0x60, 0x00, + 0xe3, 0xe3, 0xe3, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0xc0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xf8, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1f, 0x3f, 0x7f, 0x1f, + 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0xff, 0xff, 0xf8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, + 0xff, 0x07, 0x00, 0x01, 0x07, 0x1f, 0x7f, 0xf8, 0xfe, 0x3f, 0x07, 0x01, 0x00, 0x03, 0xff, 0xff, + 0xfc, 0x00, 0x00, 0x00, 0x1e, 0x7f, 0xff, 0xe1, 0xc0, 0xc0, 0xc0, 0xc0, 0xe1, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0xfc, 0xff, 0x7f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0xfe, 0xff, 0xff, 0x1f, 0x7f, 0xfe, 0xf8, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x80, 0xe0, 0xf0, 0xfc, 0x7f, 0x1f, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, + 0xff, 0x3f, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0f, 0x3f, 0xff, 0xfc, 0xf0, 0xc0, 0x80, 0x00, 0xc0, + 0xf0, 0xfc, 0xfe, 0x3f, 0x0f, 0x07, 0x01, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xf0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x78, 0xff, 0xef, 0xcf, 0xce, 0xfc, 0x7c, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x3f, 0x3f, 0x3f, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x3c, 0x3f, 0x3f, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x1f, 0x3f, 0x3f, 0x1f, + 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x3f, 0x3f, 0x3c, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x39, 0x39, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + oled_write_raw_P(mattir_logo, sizeof(mattir_logo)); +} + +static void render_qmk_logo(void) { + static const char PROGMEM qmk_logo[] = { + 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, + 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, + 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0 + }; + oled_write_P(qmk_logo, false); +} + +static void render_status(void) { + // QMK Logo and version information + render_qmk_logo(); + oled_write_P(PSTR("Matt's Kyria\n\n"), false); + // Host Keyboard Layer Status + oled_write_P(PSTR("Layer: "), false); + switch (get_highest_layer(layer_state)) { + case QWERTY: + oled_write_P(PSTR("Default\n"), false); + break; + case LOWER: + oled_write_P(PSTR("Lower\n"), false); + break; + case RAISE: + oled_write_P(PSTR("Raise\n"), false); + break; + case FUNCS: + oled_write_P(PSTR("F-keys\n"), false); + break; + case RGBLED: + oled_write_P(PSTR("Underglow\n"), false); + break; + default: + oled_write_P(PSTR("No idea dog\n"), false); + } +} + +bool oled_task_user(void) { + if (is_keyboard_master()) { + render_status(); // Renders the current keyboard layer + } else { + render_mattir_logo(); + } + return false; +} +#endif + +// Layer-specific encoder knob functions +#ifdef ENCODER_ENABLE +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { // left knob + switch (get_highest_layer(layer_state)) { + case QWERTY: // Volume + if (clockwise) { + tap_code(KC_VOLD); + } else { + tap_code(KC_VOLU); + } + break; + case LOWER: // Desktop switching + if (clockwise) { + tap_code16(C(KC_RIGHT)); + } else { + tap_code16(C(KC_LEFT)); + } + break; + case RAISE: // Mousewheel L/R + if (clockwise) { + tap_code(KC_WH_L); + } else { + tap_code(KC_WH_R); + } + break; + case RGBLED: // Underglow color + if (clockwise) { + rgblight_increase_hue(); + } else { + rgblight_decrease_hue(); + } + break; + default: // No action + if (clockwise) { + tap_code(KC_NO); + } else { + tap_code(KC_NO); + } + break; + } + } else if (index == 1) { // right knob + switch (get_highest_layer(layer_state)) { + case QWERTY: // Undo / Redo + if (clockwise) { + tap_code16(LGUI(KC_Z)); + } else { + tap_code16(SGUI(KC_Z)); + } + break; + case LOWER: // App switching + if (clockwise) { + if (!is_cmd_tab_active) { + is_cmd_tab_active = true; + register_code(KC_LGUI); + } + cmd_tab_timer = timer_read(); + tap_code16(KC_TAB); + } else { + tap_code16(S(KC_TAB)); + } + break; + case RAISE: // Mouse wheel U/D + if (clockwise) { + tap_code(KC_WH_U); + } else { + tap_code(KC_WH_D); + } + break; + case RGBLED: // Underglow brightness + if (clockwise) { + rgblight_increase_val(); + } else { + rgblight_decrease_val(); + } + break; + default: // No action + if (clockwise) { + tap_code(KC_NO); + } else { + tap_code(KC_NO); + } + break; + } + } + return true; +} +#endif diff --git a/keyboards/kyria/keymaps/mattir/readme.md b/keyboards/splitkb/kyria/keymaps/mattir/readme.md similarity index 100% rename from keyboards/kyria/keymaps/mattir/readme.md rename to keyboards/splitkb/kyria/keymaps/mattir/readme.md diff --git a/keyboards/splitkb/kyria/keymaps/mattir/rules.mk b/keyboards/splitkb/kyria/keymaps/mattir/rules.mk new file mode 100644 index 000000000000..9d1a91831e29 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/mattir/rules.mk @@ -0,0 +1,5 @@ +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enables the use of OLED displays +ENCODER_ENABLE = yes # Enables the use of one or more encoders +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +LEADER_ENABLE = yes # Enables the use of the leader key diff --git a/keyboards/kyria/keymaps/mattir2/config.h b/keyboards/splitkb/kyria/keymaps/mattir2/config.h similarity index 100% rename from keyboards/kyria/keymaps/mattir2/config.h rename to keyboards/splitkb/kyria/keymaps/mattir2/config.h diff --git a/keyboards/kyria/keymaps/mattir2/keymap.c b/keyboards/splitkb/kyria/keymaps/mattir2/keymap.c similarity index 100% rename from keyboards/kyria/keymaps/mattir2/keymap.c rename to keyboards/splitkb/kyria/keymaps/mattir2/keymap.c diff --git a/keyboards/kyria/keymaps/mattir2/readme.md b/keyboards/splitkb/kyria/keymaps/mattir2/readme.md similarity index 100% rename from keyboards/kyria/keymaps/mattir2/readme.md rename to keyboards/splitkb/kyria/keymaps/mattir2/readme.md diff --git a/keyboards/splitkb/kyria/keymaps/mattir2/rules.mk b/keyboards/splitkb/kyria/keymaps/mattir2/rules.mk new file mode 100644 index 000000000000..d51a30bfeba8 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/mattir2/rules.mk @@ -0,0 +1,4 @@ +OLED_ENABLE = no # Enables the use of OLED displays +ENCODER_ENABLE = no # Enables the use of one or more encoders +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +LEADER_ENABLE = yes # Enables the use of the leader key diff --git a/keyboards/kyria/keymaps/ninjonas/README.md b/keyboards/splitkb/kyria/keymaps/ninjonas/README.md similarity index 100% rename from keyboards/kyria/keymaps/ninjonas/README.md rename to keyboards/splitkb/kyria/keymaps/ninjonas/README.md diff --git a/keyboards/splitkb/kyria/keymaps/ninjonas/config.h b/keyboards/splitkb/kyria/keymaps/ninjonas/config.h new file mode 100644 index 000000000000..11525a577a02 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/ninjonas/config.h @@ -0,0 +1,37 @@ +/* Copyright 2020 ninjonas + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define TAPPING_TERM 200 + +#ifdef OLED_ENABLE + #define OLED_DISPLAY_128X64 + #define OLED_TIMEOUT 15000 +#endif + +#ifdef RGBLIGHT_ENABLE +# define RGBLIGHT_SLEEP +# define RGBLIGHT_LIMIT_VAL 200 +# define RGBLIGHT_HUE_STEP 8 +# define RGBLIGHT_SAT_STEP 8 +# define RGBLIGHT_VAL_STEP 8 +# define RGBLIGHT_SPLIT +#endif + +// If you are using an Elite C rev3 on the slave side, uncomment the lines below: +#define SPLIT_USB_DETECT +#define SPLIT_USB_TIMEOUT 1000 diff --git a/keyboards/kyria/keymaps/ninjonas/keymap.c b/keyboards/splitkb/kyria/keymaps/ninjonas/keymap.c similarity index 100% rename from keyboards/kyria/keymaps/ninjonas/keymap.c rename to keyboards/splitkb/kyria/keymaps/ninjonas/keymap.c diff --git a/keyboards/splitkb/kyria/keymaps/ninjonas/oled.c b/keyboards/splitkb/kyria/keymaps/ninjonas/oled.c new file mode 100644 index 000000000000..813328aa0c3d --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/ninjonas/oled.c @@ -0,0 +1,210 @@ +/* Copyright 2020 ninjonas + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "ninjonas.h" + +#ifdef OLED_ENABLE +oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; } + +static void render_logo(void) { + static const char PROGMEM logo[] = { + // Converter: https://javl.github.io/image2cpp/ + // Image Dimensions: 128x64 + // Code Output Format: Plain Bytes + // Draw Mode: Vertical, 1 bit per pixel +0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0xc0, 0x00, 0x00, 0xe0, +0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x80, 0xe0, 0xe0, 0xe0, 0xe0, 0x80, 0x00, 0x00, 0xe0, 0xe0, 0xe0, +0xe0, 0x00, 0x60, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0xe0, 0x80, 0x00, 0x00, +0xc0, 0xe0, 0xe0, 0xe0, 0x20, 0x60, 0xe0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, +0xe0, 0x00, 0x00, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0xc0, 0x00, 0x00, 0x00, +0x80, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0x80, 0x00, 0xe0, 0xe0, 0xfc, 0xfe, +0xfe, 0xfe, 0xee, 0xee, 0x0e, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0x80, +0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0x80, 0x00, 0x00, +0x00, 0x00, 0x79, 0xfd, 0xfd, 0xfd, 0xec, 0xee, 0x76, 0x7f, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, +0x07, 0x3f, 0xff, 0xfc, 0xf8, 0xff, 0x7f, 0x07, 0x0f, 0x7f, 0xff, 0xf8, 0xfc, 0xff, 0x3f, 0x07, +0x00, 0x00, 0x00, 0x03, 0x1f, 0xff, 0xfe, 0xf0, 0xff, 0x7f, 0x0f, 0x07, 0x3f, 0xff, 0xfc, 0xf8, +0xff, 0x7f, 0x0f, 0x01, 0x00, 0x00, 0x01, 0x0f, 0x3f, 0xff, 0xfe, 0xf8, 0xff, 0xff, 0x1f, 0x03, +0x00, 0x00, 0x1f, 0x7f, 0x7f, 0xff, 0xf6, 0xe6, 0xe6, 0xf7, 0xf7, 0x77, 0x37, 0x17, 0x00, 0x30, +0x79, 0xfd, 0xfd, 0xfd, 0xee, 0xee, 0x76, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, +0xff, 0xff, 0x00, 0x00, 0x00, 0x3f, 0x7f, 0x7f, 0xff, 0xf1, 0xe0, 0xe0, 0xff, 0xff, 0x7f, 0x3f, +0x0e, 0x00, 0x0e, 0x3f, 0x7f, 0xff, 0xff, 0xe0, 0xe0, 0xe1, 0xff, 0x7f, 0x7f, 0x3f, 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, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, +0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x07, 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, 0x0c, 0x3c, 0xfc, 0xfc, 0xfc, 0xc0, 0x00, 0xe0, 0xfc, 0xfc, 0x7c, 0x1c, 0x00, 0xf0, 0xf8, +0xf8, 0xfc, 0xdc, 0xdc, 0xdc, 0xfc, 0xfc, 0xf8, 0xf0, 0xe0, 0x00, 0x00, 0x30, 0xb8, 0xbc, 0xbc, +0xdc, 0xdc, 0xdc, 0xfc, 0xfc, 0xf8, 0xf0, 0x00, 0x1c, 0x1c, 0xff, 0xff, 0xff, 0xff, 0x1d, 0x1d, +0x00, 0xf0, 0xf8, 0xf8, 0xfc, 0x3c, 0x1c, 0x1c, 0xfc, 0xfc, 0xf8, 0xf0, 0xc0, 0x00, 0xe0, 0xf0, +0xf8, 0xfc, 0x3c, 0x1c, 0x1c, 0x3c, 0xfc, 0xf8, 0xf8, 0xe0, 0x00, 0x00, 0x20, 0xb8, 0xbc, 0xbc, +0xbc, 0xdc, 0xdc, 0xfc, 0xfc, 0xfc, 0xf8, 0xe0, 0x00, 0x0c, 0x7c, 0xfc, 0xfc, 0xc0, 0x00, 0xe0, +0xfc, 0xfc, 0xfc, 0xfc, 0xf0, 0x80, 0x00, 0xf8, 0xfc, 0xfc, 0x3c, 0x04, 0x0c, 0x7c, 0xfc, 0xfc, +0xf0, 0x00, 0xc0, 0xfc, 0xfc, 0x7c, 0xfc, 0xf8, 0xc0, 0x00, 0xf0, 0xfc, 0xfc, 0x7c, 0x0c, 0x00, +0x00, 0x00, 0xc0, 0xc1, 0xc7, 0xff, 0xff, 0xff, 0x7f, 0x1f, 0x03, 0x00, 0x00, 0x00, 0x07, 0x0f, +0x1f, 0x1f, 0x1e, 0x1c, 0x1c, 0x1e, 0x1e, 0x0e, 0x06, 0x00, 0x00, 0x06, 0x0f, 0x1f, 0x1f, 0x1f, +0x1d, 0x1d, 0x0e, 0x1f, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x1f, 0x00, 0x00, +0x00, 0x07, 0x0f, 0x0f, 0x1f, 0x1e, 0x1c, 0x1c, 0x1f, 0x1f, 0x0f, 0x07, 0x01, 0x00, 0x03, 0x07, +0x0f, 0x1f, 0x1e, 0x1c, 0x1c, 0x1e, 0x1f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x0f, 0x1f, 0x1f, 0x1f, +0x1d, 0x1d, 0x0c, 0x0f, 0x1f, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x03, 0x1f, 0x1f, 0x1e, 0x1f, +0x0f, 0x01, 0x00, 0x07, 0x1f, 0x1f, 0x1f, 0x1f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, +0x1f, 0x1e, 0x1f, 0x1f, 0x03, 0x00, 0x03, 0x1f, 0x1f, 0x1e, 0x1f, 0x0f, 0x01, 0x00, 0x00, 0x00, +0x00, 0x80, 0xc1, 0xf1, 0xf9, 0xf9, 0xf9, 0xb8, 0xb8, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, +0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, +0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, +0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, +0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, +0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, +0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x03, 0x7c, 0xfe, 0xff, 0xff, 0xc7, 0x83, 0x83, +0xc7, 0xff, 0xff, 0xff, 0x7c, 0x00, 0x00, 0x7c, 0xff, 0xff, 0xff, 0xc7, 0x83, 0x83, 0xc7, 0xff, +0xff, 0xfe, 0x7c, 0x00, 0xc0, 0xe6, 0xf7, 0xf7, 0xf7, 0xbb, 0xbb, 0xdb, 0xff, 0xff, 0xff, 0xfe, +0x00, 0x00, 0x03, 0x1f, 0xff, 0xff, 0xf0, 0xe0, 0xfe, 0xff, 0x1f, 0x3f, 0xff, 0xfe, 0xe0, 0xf0, +0xff, 0xff, 0x1f, 0x03, 0x00, 0x01, 0x0f, 0x7f, 0xff, 0xf8, 0xc0, 0xfc, 0xff, 0x3f, 0x1f, 0xff, +0xfe, 0xf0, 0xe0, 0xff, 0xff, 0x3f, 0x07, 0x00, 0x01, 0x07, 0x3f, 0xff, 0xff, 0xf8, 0xe0, 0xfc, +0xff, 0x7f, 0x0f, 0x03, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xdb, 0x9b, 0x9b, 0xdf, 0xdf, 0xdf, 0xde, +0x1c, 0x00, 0xc0, 0xe6, 0xf7, 0xf7, 0xf7, 0xbb, 0xbb, 0xdb, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, +0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, +0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, +0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x03, 0x03, 0x03, 0x03, +0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, +0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, +0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x38, 0x38, 0x38, 0x3f, 0x3f, 0x1f, 0x0f, +0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, +0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00 + }; + oled_write_raw_P(logo, sizeof(logo)); +} + +static void render_qmk_logo(void) { + static const char PROGMEM qmk_logo[] = { + 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, + 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, + 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0}; + + oled_write_P(qmk_logo, false); +} + +void oled_white_space(void){ + oled_write_P(PSTR(" "), false); +} + +void oled_slash_separator(void){ + oled_write_P(PSTR(" / "), false); +} + +void render_layout_state(void) { + oled_write_P(PSTR("Layout: "), false); + switch (biton32(default_layer_state)) { + case _COLEMAK: + oled_write_P(PSTR("Colemak"), false); + break; + case _DVORAK: + oled_write_P(PSTR("Dvorak"), false); + break; + case _QWERTY: + oled_write_P(PSTR("Qwerty"), false); + break; + default: + oled_write_ln_P(PSTR("Undefined"), false); + } +} +#ifdef ENCODER_ENABLE +static void render_encoder_state(void) { + oled_write_P(PSTR("\nEnc: "), false); + bool lower = layer_state_is(_LOWER) & !layer_state_is(_ADJUST); + bool raise = layer_state_is(_RAISE) & !layer_state_is(_ADJUST); + bool adjust = layer_state_is(_ADJUST); + + if(lower){ + oled_write_P(PSTR("APPSW"), left_encoder_rotated); + oled_slash_separator(); + oled_write_P(PSTR("UPDN"), right_encoder_rotated); + } else if(raise){ + oled_write_P(PSTR("PGUD"), left_encoder_rotated); + oled_slash_separator(); + oled_write_P(PSTR("TABSW"), right_encoder_rotated); + } else if(adjust){ + oled_write_P(PSTR("RHUE"), left_encoder_rotated); + oled_slash_separator(); + oled_write_P(PSTR("RBRI"), right_encoder_rotated); + } else { + oled_write_P(PSTR("BRI"), left_encoder_rotated); + oled_slash_separator(); + oled_write_P(PSTR("VOL"), right_encoder_rotated); + } + + if (timer_elapsed(encoder_rotated_timer) > 200) { + left_encoder_rotated = false; + right_encoder_rotated = false; + } +} +#endif + +static void render_layer_state(void) { + oled_write_P(PSTR("\nLayer:"), false); + bool lower = layer_state_is(_LOWER) & !layer_state_is(_ADJUST); + bool raise = layer_state_is(_RAISE) & !layer_state_is(_ADJUST); + bool adjust = layer_state_is(_ADJUST); + bool numpad = layer_state_is(_NUMPAD); + + if(lower){ + oled_write_P(PSTR(" Lower "), true); + } else if(raise){ + oled_write_P(PSTR(" Raise "), true); + } else if(adjust){ + oled_write_P(PSTR(" Adjust "), true); + } else if(numpad) { + oled_write_P(PSTR(" Numpad "), true); + } else { + oled_write_P(PSTR(" Default"), false); + } +} + +void render_mod_state(uint8_t modifiers) { + oled_write_P(PSTR("\nMods: "), false); + oled_write_P(PSTR("SHF"), (modifiers & MOD_MASK_SHIFT)); + oled_white_space(); + oled_write_P(PSTR("CTL"), (modifiers & MOD_MASK_CTRL)); + oled_white_space(); + oled_write_P(PSTR("ALT"), (modifiers & MOD_MASK_ALT)); + oled_white_space(); + oled_write_P(PSTR("GUI"), (modifiers & MOD_MASK_GUI)); +} + +static void render_status(void) { + render_qmk_logo(); + render_layout_state(); + #ifdef ENCODER_ENABLE + render_encoder_state(); + #endif + render_layer_state(); + render_mod_state(get_mods()|get_oneshot_mods()); +} + +bool oled_task_user(void) { + if (is_keyboard_master()) { + render_status(); + } else { + render_logo(); + oled_scroll_left(); + } + return false; +} +#endif diff --git a/keyboards/splitkb/kyria/keymaps/ninjonas/rules.mk b/keyboards/splitkb/kyria/keymaps/ninjonas/rules.mk new file mode 100644 index 000000000000..1931861cafad --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/ninjonas/rules.mk @@ -0,0 +1,7 @@ +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enables the use of OLED displays +ENCODER_ENABLE = yes # Enables the use of one or more encoders +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +LTO_ENABLE = yes + +SRC += oled.c diff --git a/keyboards/splitkb/kyria/keymaps/pierrec83/config.h b/keyboards/splitkb/kyria/keymaps/pierrec83/config.h new file mode 100644 index 000000000000..8bd27105e632 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/pierrec83/config.h @@ -0,0 +1,65 @@ +/* Copyright 2020 Pierre Chevalier + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#ifdef OLED_ENABLE + #define OLED_DISPLAY_128X64 +#endif + +#ifdef RGBLIGHT_ENABLE + #define RGBLIGHT_ANIMATIONS + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 +#endif + +#ifdef ENCODER_ENABLE + #define ENCODER_DIRECTION_FLIP + #define ENCODER_RESOLUTION 2 +#endif + +#define TAPPING_TERM 200 +#define PERMISSIVE_HOLD +#define IGNORE_MOD_TAP_INTERRUPT +#define TAPPING_FORCE_HOLD +// Allows to use either side as the master. Look at the documentation for info: +// https://docs.qmk.fm/#/config_options?id=setting-handedness +#define EE_HANDS + +// Allows media codes to properly register in macros and rotary encoder code +#define TAP_CODE_DELAY 10 + +// If you are using an Elite C rev3 on the slave side, uncomment the lines below: +// #define SPLIT_USB_DETECT +// #define NO_USB_STARTUP_CHECK + +// Set the mouse settings to a comfortable speed/accuracy trade-off +// Assume the screen refresh rate is 60 Htz or higher +// The default is 50. This makes the mouse ~3 times faster and more accurate +#define MOUSEKEY_INTERVAL 16 +// The default is 20. Since we made the mouse about 3 times faster with the previous setting, +// give it more time to accelerate to max speed to retain precise control over short distances. +#define MOUSEKEY_TIME_TO_MAX 40 +// The default is 300. Let's try and make this as low as possible while keeping the cursor responsive +#define MOUSEKEY_DELAY 100 +// It makes sense to use the same delay for the mouseweel +#define MOUSEKEY_WHEEL_DELAY 100 +// The default is 100 +#define MOUSEKEY_WHEEL_INTERVAL 50 +// The default is 40 +#define MOUSEKEY_WHEEL_TIME_TO_MAX 100 + diff --git a/keyboards/kyria/keymaps/pierrec83/encoders.c b/keyboards/splitkb/kyria/keymaps/pierrec83/encoders.c similarity index 100% rename from keyboards/kyria/keymaps/pierrec83/encoders.c rename to keyboards/splitkb/kyria/keymaps/pierrec83/encoders.c diff --git a/keyboards/kyria/keymaps/pierrec83/keymap.c b/keyboards/splitkb/kyria/keymaps/pierrec83/keymap.c similarity index 100% rename from keyboards/kyria/keymaps/pierrec83/keymap.c rename to keyboards/splitkb/kyria/keymaps/pierrec83/keymap.c diff --git a/keyboards/kyria/keymaps/pierrec83/keymap.json b/keyboards/splitkb/kyria/keymaps/pierrec83/keymap.json similarity index 100% rename from keyboards/kyria/keymaps/pierrec83/keymap.json rename to keyboards/splitkb/kyria/keymaps/pierrec83/keymap.json diff --git a/keyboards/kyria/keymaps/pierrec83/layers.h b/keyboards/splitkb/kyria/keymaps/pierrec83/layers.h similarity index 100% rename from keyboards/kyria/keymaps/pierrec83/layers.h rename to keyboards/splitkb/kyria/keymaps/pierrec83/layers.h diff --git a/keyboards/kyria/keymaps/pierrec83/readme.md b/keyboards/splitkb/kyria/keymaps/pierrec83/readme.md similarity index 100% rename from keyboards/kyria/keymaps/pierrec83/readme.md rename to keyboards/splitkb/kyria/keymaps/pierrec83/readme.md diff --git a/keyboards/splitkb/kyria/keymaps/pierrec83/rules.mk b/keyboards/splitkb/kyria/keymaps/pierrec83/rules.mk new file mode 100644 index 000000000000..fbccedd565d6 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/pierrec83/rules.mk @@ -0,0 +1,5 @@ +OLED_ENABLE = no # Enables the use of OLED displays +ENCODER_ENABLE = yes # ENables the use of one or more encoders +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow + +SRC += encoders.c diff --git a/keyboards/splitkb/kyria/keymaps/plattfot/README.md b/keyboards/splitkb/kyria/keymaps/plattfot/README.md new file mode 100644 index 000000000000..70bb01353d71 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/plattfot/README.md @@ -0,0 +1,172 @@ +# plattfot's keymap for [Kyria](https://github.com/splitkb/kyria) + +![Keyboard](https://i.imgur.com/mcefoHnh.jpg) + +Designed to be ease of use when programming, typing in both English +and Swedish and navigating around in a tiling window manager, in my +case [sway](https://swaywm.org/). Uses the two rotary encoders (lower +left/right thumb row) as two palm buttons. + +This keymap avoids [Mod-tap](https://docs.qmk.fm/#/mod_tap) as they do +not work for me. [Kyria](https://github.com/splitkb/kyria) has enough +thumb keys to make it work without them. + +The symbols are split into two layers, one for each hand. Then the +layers are activated by the opposite thumb. Found that having all +symbols on one layer then have one thumb activate them made it awkward +to press keys with the index finger on the same hand. + +Custom feature I call the close tap (Clotap) key, I based on a code +snippet from a +[reddit post](https://www.reddit.com/r/olkb/comments/citkbx/double_key_press_modifier_qmkwould_work_like/ev9cue8). +When pressed, it will insert the closing equivivalent key and press +`←` (left arrow). For example tapping Clotap then press `(` will +result in the keypresses `()←`, if pressing `"` will result in `""←`, +if pressing `)` will result in `)←(`. Really nice to have when +programming, it is editor agnostic and saves me two keypresses (need +to press NAV+j for `←`). It also removes the need for having specific +macros for these as I had before. + + +# Base Layer: Default +``` +// ,-------------------------------------------. ,-------------------------------------------. +// | Esc | Q | W | E | R | T | | Y | U | I | O | P | Del | +// |--------+------+------+------+------+------| |------+------+------+------+------+--------| +// | Tab | A | S | D | F | G | | H | J | K | L | ; | ' | +// |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +// | LShift | Z | X | C | V | B | Lead | RAISE| | LOWER|BSpace| N | M | , | . | / | RShift | +// `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' +// | MPlay| GUI | LCtrl| Space| LALT | | RCtrl| Enter| NAV | RALT |Scroll| +// | | | | | | | | | | | Lock | +// `----------------------------------' `----------------------------------' +``` + +Setup for using the +[EurKey](https://eurkey.steffen.bruentjen.eu/layout.html) layout. As +it's annoying to have to toggle us and swedish layout which shifts +symbols around. + +AltGr is used to access the extra keys in the +[EurKey](https://eurkey.steffen.bruentjen.eu/layout.html) layout. + +## Notable features on this layer + +Left rotary encoder +- Press: play/pause +- Rotate: Volume control + +Right rotary encoder +- Press: Scroll lock +- Rotate: Page up/Page down. Used mouse scrolling at first. But + scrolling only works in the window where the mouse pointer + is. Which kind of defeated the purpose of having the scroll + on the keyboard, as I still needed to move my hand to the + mouse and then I could just use the scroll on the mouse. + +[Leader key](https://docs.qmk.fm/#/feature_leader_key) is mainly used +for jumping between workspaces. Otherwise I would need to use both +hands everytime I need to switch. With the leader key I can jump +between 1-5 with just the left hand. + +# Lower Layer: Left symbols/Right function keys +``` +// ,-------------------------------------------. ,-------------------------------------------. +// | | ! | @ | # | $ | % | | F6 | F7 | F8 | F9 | F10 | | +// |--------+------+------+------+------+------| |------+------+------+------+------+--------| +// | | | | _ | \ | - | + | | F12 | | | | | | +// |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +// | | ° | : | ( | ) | × | |ADJUST| | | |CLOTAP| | | | | | +// `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' +// | | | | | | | | | | | | +// | | | | | | | | | | | | +// `----------------------------------' `----------------------------------' +``` + +Symbols for the left hand, function keys for the right hand. + +I had the function keys at the bottom on the navigation layer. But it +was annoying when typing version strings. Hitting f1-5+f11 involved +both hands. And it turned out that my keybinding for closing a window +(Super+Shift+c) and rebooting my machine (Super+Shift+f3) ended up on +the same physical keys. + +Splitting them up like this allows me to hit all the function keys +with just one hand and I wont accidentally reboot my machine when +trying to close a window. + +## Notable features on this layer + +Left rotary encoder +- Rotate: Skip next/previous song + +Clotap on the right hand. + +Has two Eurkey specific symbols `°` and `×` on the left hand. + +# Raise Layer: Left function/Right symbols + state keys +``` +// ,-------------------------------------------. ,-------------------------------------------. +// | | F1 | F2 | F3 | F4 | F5 | | ^ | & | * | ~ | ? | | +// |--------+------+------+------+------+------| |------+------+------+------+------+--------| +// | | | | | | F11 | | = | { | } | [ | ] | ` | +// |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +// | | | | | |CLOTAP| | | |ADJUST| | … | " | < | > | / |CapsLock| +// `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' +// | Mute | | | | | | | | | |Insert| +// | | | | | | | | | | | | +// `----------------------------------' `----------------------------------' +``` + +Function keys for the left hand, symbols for the right hand. + +This layer also includes caps lock and insert. + +## Notable features on this layer + +Left rotary encoder +- Press: mute + +Right rotary encoder +- Press: Toggle insert mode +- Rotate: Scrolling between workspaces in `sway`. + +Clotap on the left hand. + +# Navigation Layer: Number keys, navigation +``` + // + // ,-------------------------------------------. ,-------------------------------------------. + // | | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | | + // |--------+------+------+------+------+------| |------+------+------+------+------+--------| + // | | | | | | | | | Left | Up | Down | Right| | + // |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + // | | | | | | | | | | | | | | | | | | + // `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + // | | | | | | | | | | | | + // | | | | | | | | | | | | + // `----------------------------------' `----------------------------------' +``` + +Access to the number and the arrow keys. Got use to the number row +after using [ErgoDox](https://www.ergodox.io/) keyboards for a few +years. Do not feel I need a numpad layer, which seems to be quite +common with small keyboards like this. + +# Adjust Layer: RGB +``` + // + // ,-------------------------------------------. ,-------------------------------------------. + // | | | | | | | | | | | | | | + // |--------+------+------+------+------+------| |------+------+------+------+------+--------| + // | | TOG | SAI | HUI | VAI | MOD | | | | | | | | + // |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + // | | | SAD | HUD | VAD | RMOD | | | | | | | | | | | | + // `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + // | | | | | | | | | | | | + // | | | | | | | | | | | | + // `----------------------------------' `----------------------------------' +``` + +Right now it only contains adjustment to the underglow. Activated by +holding down `RAISE` and `LOWER` at the same time. diff --git a/keyboards/splitkb/kyria/keymaps/plattfot/config.h b/keyboards/splitkb/kyria/keymaps/plattfot/config.h new file mode 100644 index 000000000000..bb13d365f19c --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/plattfot/config.h @@ -0,0 +1,44 @@ +/* Copyright 2019 Thomas Baart + * Copyright 2020-2021 Fredrik Salomonsson + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#ifdef OLED_ENABLE + #define OLED_DISPLAY_128X64 +#endif + +#ifdef RGBLIGHT_ENABLE + #define RGBLIGHT_ANIMATIONS + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 +#endif + +#define ENCODER_DIRECTION_FLIP +// Fixing the skipping with the EC11K encoder +#define ENCODER_RESOLUTION 2 + +#define EE_HANDS + +// The Leader key allows to flexibly assign macros to key sequences. +#define LEADER_PER_KEY_TIMING +#define LEADER_TIMEOUT 350 + +// Remove the delay for the OSL keys. Not using any other tap keys. +// Otherwise TAPPING_TERM_PER_KEY would be the way to go. +#define TAPPING_TERM 0 + diff --git a/keyboards/splitkb/kyria/keymaps/plattfot/keymap.c b/keyboards/splitkb/kyria/keymaps/plattfot/keymap.c new file mode 100644 index 000000000000..222759d60d2c --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/plattfot/keymap.c @@ -0,0 +1,481 @@ +/* Copyright 2020-2021 Fredrik Salomonsson + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +#include "version.h" + +enum custom_keycodes { + PLACEHOLDER = SAFE_RANGE, // can always be here + // New keys + CLO_TAP, // Close the next key press +}; + +// Close tap feature based on a post from drashna +// https://www.reddit.com/r/olkb/comments/citkbx/double_key_press_modifier_qmkwould_work_like/ev9cue8/ +// Will insert the closing equivalent key and move the cursor inside. +// For example clo_tap and then ( will result in (|), where | is the +// cursor. For " it will be "|" as the close equivalent key is the +// same key. +enum close_tap_modes { + CLO_DISABLED = 0b000, + CLO_PRESSED = 0b001, // Close tap key is pressed + CLO_ACTIVE = 0b010, // Close tap next keypress + CLO_USED = 0b100, // Turn off when close tap key is released +}; + +#define CLO_RELEASE(flag) flag & ~CLO_PRESSED + +static enum close_tap_modes close_tap_it = CLO_DISABLED; + +enum layers { + _DEFAULT, + _LOWER, + _RAISE, + _NAV, + _ADJUST, +}; + +#define MO_ADJT MO(_ADJUST) +#define L_RAISE OSL(_RAISE) +#define L_LOWER OSL(_LOWER) +#define L_NAV MO(_NAV) +#define EU_TDOT RSA(KC_SLSH) +#define EU_CDOT RALT(KC_EQUAL) +#define EU_DEG RALT(KC_SCLN) + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* + * Base Layer: Default + * + * ,-------------------------------------------. ,-------------------------------------------. + * | Esc | Q | W | E | R | T | | Y | U | I | O | P | Del | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | Tab | A | S | D | F | G | | H | J | K | L | ; | ' | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | LShift | Z | X | C | V | B | Lead | RAISE| | LOWER|BSpace| N | M | , | . | / | RShift | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | MPlay| GUI | LCtrl| Space| LALT | | RCtrl| Enter| NAV | RALT |Scroll| + * | | | | | | | | | | | Lock | + * `----------------------------------' `----------------------------------' + */ + [_DEFAULT] = LAYOUT( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LEAD, L_RAISE, L_LOWER, KC_BSPC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_MPLY,KC_LGUI,KC_LCTL, KC_SPACE, KC_LALT, KC_RCTL, KC_ENT, L_NAV, KC_RALT, KC_SLCK + ), + +/* + * Lower Layer: Left symbols + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | ! | @ | # | $ | % | | F6 | F7 | F8 | F9 | F10 | | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | | | _ | \ | - | + | | F12 | | | | | | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | ° | : | ( | ) | × | |ADJUST| | | |CLOTAP| | | | | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_LOWER] = LAYOUT( + _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, + _______, KC_PIPE, KC_UNDS, KC_BSLS, KC_MINS, KC_PLUS, KC_F12, _______, _______, _______, _______, _______, + _______, EU_DEG, KC_COLN, KC_LPRN, KC_RPRN, EU_CDOT, _______, MO_ADJT, _______, _______, CLO_TAP, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +/* + * Raise Layer: Right symbols + state + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | ^ | & | * | ~ | ? | | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | | | | | F11 | | = | { | } | [ | ] | ` | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | | | | |CLOTAP| | | |ADJUST| | … | " | < | > | / |CapsLock| + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | Mute | | | | | | | | | |Insert| + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_RAISE] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_CIRC, KC_AMPR, KC_ASTR, KC_TILDE,KC_QUES, _______, + _______, _______, _______, _______, _______, KC_F11, KC_EQUAL,KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_GRV, + _______, _______, _______, _______, _______, CLO_TAP, _______, _______, MO_ADJT, _______, EU_TDOT, KC_DQUO, KC_LT, KC_GT, _______, KC_CAPS, + KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS + + ), +/* + * Navigation Layer: Number/Function keys, navigation + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | | | | | | | | Left | Up | Down | Right| | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | | | | | | | | | | | | | | | | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_NAV] = LAYOUT( + _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, + _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +/* + * Adjust Layer: RGB + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | | | | | | | | | | | | | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | TOG | SAI | HUI | VAI | MOD | | | | | | | | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | | SAD | HUD | VAD | RMOD | | | | | | | | | | | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_ADJUST] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_MOD, _______, _______, _______, _______, _______, _______, + _______, _______, RGB_SAD, RGB_HUD, RGB_VAD, RGB_RMOD,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +// /* +// * Layer template +// * +// * ,-------------------------------------------. ,-------------------------------------------. +// * | | | | | | | | | | | | | | +// * |--------+------+------+------+------+------| |------+------+------+------+------+--------| +// * | | | | | | | | | | | | | | +// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +// * | | | | | | | | | | | | | | | | | | +// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' +// * | | | | | | | | | | | | +// * | | | | | | | | | | | | +// * `----------------------------------' `----------------------------------' +// */ +// [_LAYERINDEX] = LAYOUT( +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +// ), +}; +// clang-format on + +/* void keyboard_post_init_user(void) { */ +/* rgblight_setrgb(51, 135, 204); */ +/* } */ +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (record->event.pressed) { + switch (keycode) { + case CLO_TAP: + close_tap_it = close_tap_it & CLO_ACTIVE? + CLO_USED: + CLO_ACTIVE|CLO_PRESSED; + return false; + case KC_LEAD: + close_tap_it = CLO_DISABLED; + return true; + } + } else if (close_tap_it & CLO_ACTIVE && + keycode != CLO_TAP && + keycode != OSL(_RAISE) && + keycode != OSL(_LOWER) && + keycode != MO(_NAV)) { + + close_tap_it = close_tap_it & CLO_PRESSED? + close_tap_it | CLO_USED: + CLO_DISABLED; + switch(keycode) + { + case KC_LPRN: + tap_code16(KC_RPRN); + tap_code16(KC_LEFT); + break; + case KC_RPRN: + tap_code16(KC_LEFT); + tap_code16(KC_LPRN); + break; + case KC_LCBR: + tap_code16(KC_RCBR); + tap_code16(KC_LEFT); + break; + case KC_RCBR: + tap_code16(KC_LEFT); + tap_code16(KC_LCBR); + break; + case KC_LBRC: + tap_code16(KC_RBRC); + tap_code16(KC_LEFT); + break; + case KC_RBRC: + tap_code16(KC_LEFT); + tap_code16(KC_LBRC); + break; + case KC_LT: + tap_code16(KC_GT); + tap_code16(KC_LEFT); + break; + case KC_GT: + tap_code16(KC_LEFT); + tap_code16(KC_LT); + break; + default: + tap_code16(keycode); + tap_code16(KC_LEFT); + break; + } + } else { + switch (keycode) { + case CLO_TAP: + close_tap_it = close_tap_it & CLO_USED? + CLO_DISABLED: + CLO_RELEASE(close_tap_it); + } + } + + return true; +} + +//layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } + +#ifdef OLED_ENABLE +oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; } + +// clang-format off +static void render_qmk_logo(void) { + static const char PROGMEM qmk_logo[] = { + 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, + 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, + 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0}; + + oled_write_P(qmk_logo, false); +} +// clang-format on +static void render_static_info(void) { + render_qmk_logo(); + oled_write_P(PSTR("Kyria rev1.0\n"), false); + oled_write_P(PSTR("Keymap: plattfot v2\n"), false); +} + +static void render_status(void) { + // QMK Logo and version information + render_qmk_logo(); + oled_write_P(PSTR("Kyria rev1.0\n"), false); + oled_write_P(PSTR("v" QMK_VERSION "\n"), false); + + // Host Keyboard Layer Status + oled_write_P(PSTR("Layer: "), false); + switch (get_highest_layer(layer_state)) { + case _DEFAULT: + oled_write_P(PSTR("base\n"), false); + break; + case _LOWER: + oled_write_P(PSTR("<-sym/fun->\n"), false); + break; + case _RAISE: + oled_write_P(PSTR("<-fun/sym->\n"), false); + break; + case _NAV: + oled_write_P(PSTR("num/nav\n"), false); + break; + case _ADJUST: + oled_write_P(PSTR("adjust\n"), false); + break; + default: + oled_write_P(PSTR("undefined\n"), false); + } + + // Host Keyboard LED Status and Double tap + led_t led_state = host_keyboard_led_state(); + if (led_state.num_lock) { + oled_write_P(PSTR("NUMLCK "), false); + } else if (close_tap_it) { + oled_write_P(PSTR("Close "), false); + } else { + oled_write_P(PSTR(" "), false); + } + + if (led_state.caps_lock) { + oled_write_P(PSTR("CAPLCK "), false); + } else if (close_tap_it) { + oled_write_P(PSTR("Tap "), false); + } else { + oled_write_P(PSTR(" "), false); + } + + oled_write_P(led_state.scroll_lock ? PSTR("SCRLCK ") : PSTR(" "), false); +} + +bool oled_task_user(void) { + if (is_keyboard_master()) { + render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) + } else { + render_static_info(); + } + return false; +} +#endif + +#ifdef ENCODER_ENABLE +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + switch (get_highest_layer(layer_state)) { + case _LOWER: + // Skip/Prev song + if (clockwise) { + tap_code(KC_MNXT); + clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); + } else { + tap_code(KC_MPRV); + clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); + } + break; + case _NAV: + // Brightness control + if (clockwise) { + tap_code(KC_BRIU); + clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); + } else { + tap_code(KC_BRID); + clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); + } + break; + default: + // Volume control + if (clockwise) { + tap_code(KC_VOLU); + clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); + } else { + tap_code(KC_VOLD); + clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); + } + break; + } + } else if (index == 1) { + switch (get_highest_layer(layer_state)) { + case _RAISE: + // Scroll through the workspaces + if (clockwise) { + tap_code16(G(KC_GT)); + clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); + } else { + tap_code16(G(KC_LT)); + clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); + } + break; + default: + // Scrolling + if (clockwise) { + tap_code(KC_PGDN); + clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); + } else { + tap_code(KC_PGUP); + clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); + } + break; + } + } + return true; +} +#endif + +LEADER_EXTERNS(); + +void matrix_scan_user(void) { + LEADER_DICTIONARY() { + leading = false; + leader_end(); + // Sway navigation + SEQ_ONE_KEY(KC_Q) { // Jump to workspace 1 + SEND_STRING(SS_LGUI("1")); + } + SEQ_ONE_KEY(KC_W) { // Jump to workspace 2 + SEND_STRING(SS_LGUI("2")); + } + SEQ_ONE_KEY(KC_E) { // Jump to workspace 3 + SEND_STRING(SS_LGUI("3")); + } + SEQ_ONE_KEY(KC_R) { // Jump to workspace 4 + SEND_STRING(SS_LGUI("4")); + } + SEQ_ONE_KEY(KC_T) { // Jump to workspace 5 + SEND_STRING(SS_LGUI("5")); + } + + SEQ_ONE_KEY(KC_Y) { // Jump to workspace 6 + SEND_STRING(SS_LGUI("6")); + } + SEQ_ONE_KEY(KC_U) { // Jump to workspace 7 + SEND_STRING(SS_LGUI("7")); + } + SEQ_ONE_KEY(KC_I) { // Jump to workspace 8 + SEND_STRING(SS_LGUI("8")); + } + SEQ_ONE_KEY(KC_O) { // Jump to workspace 9 + SEND_STRING(SS_LGUI("9")); + } + SEQ_ONE_KEY(KC_P) { // Jump to workspace 0 + SEND_STRING(SS_LGUI("0")); + } + SEQ_ONE_KEY(KC_G) { // View scratch pad + SEND_STRING(SS_LGUI("-")); + } + + // Sway move window + SEQ_TWO_KEYS(KC_M, KC_Q) { // Move to workspace 1 + SEND_STRING(SS_LSFT(SS_LGUI("1"))); + } + SEQ_TWO_KEYS(KC_M, KC_W) { // Move to workspace 2 + SEND_STRING(SS_LSFT(SS_LGUI("2"))); + } + SEQ_TWO_KEYS(KC_M, KC_E) { // Move to workspace 3 + SEND_STRING(SS_LSFT(SS_LGUI("3"))); + } + SEQ_TWO_KEYS(KC_M, KC_R) { // Move to workspace 4 + SEND_STRING(SS_LSFT(SS_LGUI("4"))); + } + SEQ_TWO_KEYS(KC_M, KC_T) { // Move to workspace 5 + SEND_STRING(SS_LSFT(SS_LGUI("5"))); + } + + SEQ_TWO_KEYS(KC_M, KC_Y) { // Move to workspace 6 + SEND_STRING(SS_LSFT(SS_LGUI("6"))); + } + SEQ_TWO_KEYS(KC_M, KC_U) { // Move to workspace 7 + SEND_STRING(SS_LSFT(SS_LGUI("7"))); + } + SEQ_TWO_KEYS(KC_M, KC_I) { // Move to workspace 8 + SEND_STRING(SS_LSFT(SS_LGUI("8"))); + } + SEQ_TWO_KEYS(KC_M, KC_O) { // Move to workspace 9 + SEND_STRING(SS_LSFT(SS_LGUI("9"))); + } + SEQ_TWO_KEYS(KC_M, KC_P) { // Move to workspace 0 + SEND_STRING(SS_LSFT(SS_LGUI("0"))); + } + SEQ_TWO_KEYS(KC_M, KC_G) { // Move to scratch pad + SEND_STRING(SS_LSFT(SS_LGUI("-"))); + } + } +} diff --git a/keyboards/splitkb/kyria/keymaps/plattfot/rules.mk b/keyboards/splitkb/kyria/keymaps/plattfot/rules.mk new file mode 100644 index 000000000000..4d148481ca7a --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/plattfot/rules.mk @@ -0,0 +1,6 @@ +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enables the use of OLED displays +ENCODER_ENABLE = yes # Enables the use of one or more encoders +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +LEADER_ENABLE = yes # Enable the Leader Key feature +MOUSEKEY_ENABLE = no # Disable mouse, need to save space. diff --git a/keyboards/splitkb/kyria/keymaps/rmw/config.h b/keyboards/splitkb/kyria/keymaps/rmw/config.h new file mode 100644 index 000000000000..57f252263287 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/rmw/config.h @@ -0,0 +1,36 @@ +/* Copyright 2019 Thomas Baart + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define MACOSX + +#ifdef OLED_ENABLE + #define OLED_DISPLAY_128X64 +#endif + +#ifdef RGBLIGHT_ENABLE + #define RGBLIGHT_ANIMATIONS + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 +#endif + +// If you are using an Elite C rev3 on the follower side, uncomment the lines below: +// #define SPLIT_USB_DETECT +// #define NO_USB_STARTUP_CHECK + + diff --git a/keyboards/kyria/keymaps/rmw/keymap.c b/keyboards/splitkb/kyria/keymaps/rmw/keymap.c similarity index 100% rename from keyboards/kyria/keymaps/rmw/keymap.c rename to keyboards/splitkb/kyria/keymaps/rmw/keymap.c diff --git a/keyboards/kyria/keymaps/rmw/readme.md b/keyboards/splitkb/kyria/keymaps/rmw/readme.md similarity index 100% rename from keyboards/kyria/keymaps/rmw/readme.md rename to keyboards/splitkb/kyria/keymaps/rmw/readme.md diff --git a/keyboards/splitkb/kyria/keymaps/rmw/rules.mk b/keyboards/splitkb/kyria/keymaps/rmw/rules.mk new file mode 100644 index 000000000000..1e2e1ad81706 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/rmw/rules.mk @@ -0,0 +1,4 @@ +OLED_ENABLE = no # Enables the use of OLED displays +ENCODER_ENABLE = yes # Enables the use of one or more encoders +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +TAP_DANCE_ENABLE=yes # Enables Tap Dance diff --git a/keyboards/splitkb/kyria/keymaps/shinze/config.h b/keyboards/splitkb/kyria/keymaps/shinze/config.h new file mode 100644 index 000000000000..0d1e0b837136 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/shinze/config.h @@ -0,0 +1,32 @@ +/* Copyright 2019 Thomas Baart + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#ifdef OLED_ENABLE + #define OLED_DISPLAY_128X64 +#endif + +#ifdef RGBLIGHT_ENABLE + #define RGBLIGHT_ANIMATIONS + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 +#endif + +// If you are using an Elite C rev3 on the slave side, uncomment the lines below: +// #define SPLIT_USB_DETECT +// #define NO_USB_STARTUP_CHECK diff --git a/keyboards/splitkb/kyria/keymaps/shinze/keymap.c b/keyboards/splitkb/kyria/keymaps/shinze/keymap.c new file mode 100644 index 000000000000..3483410525f0 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/shinze/keymap.c @@ -0,0 +1,249 @@ +/* Copyright 2019 Thomas Baart + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +#include "keymap_bepo.h" + +enum layers { + _BEPO = 0, + _LOWER, + _RAISE, + _ADJUST +}; + +#define RESC LT(_RAISE, KC_ESC) +#define BP_EA BP_EACU +#define BP_AG BP_AGRV +#define BP_EG BP_EGRV +#define BP_DC BP_DCIR +#define BP_AP BP_QUOT +#define BP_CO BP_COMM +#define BP_DT BP_DOT +#define LS KC_LSFT +#define BP_DOL BP_DLR + +/* Bottom Row */ +#define BR01 KC_LCTL +#define BR02 KC_LALT +#define BR03 MT(MOD_LGUI, KC_ENT) +#define BR04 LT(_LOWER, KC_SPC) +#define BR05 LT(_RAISE, KC_ESC) +#define BR06 LT(_LOWER, KC_ENT) +#define BR07 LT(_RAISE, KC_SPC) +#define BR08 KC_TAB +#define BR09 KC_BSPC +#define BR10 KC_RALT + +/* Under the screen row */ +#define U1 KC_LSFT + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* + * Base Layer: BÉPO + * + * ,-------------------------------------------. ,-------------------------------------------. + * |RAIS/ESC| B | É | P | O | È | | ^ | V | D | L | J | | Z | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | W | A | U | I | E | , | | C | T | S | R | N | M | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | LShift | À | Y | X | . | K | SPC |LShift| |LShift|LShift| ’ | Q | G | H | F | Ç | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | CTRL | Alt | Enter| Space| Esc | | Enter| Space| Tab | Bksp | AltGr| + * | | | CMD | Lower| Raise| | Lower| Raise| | | | + * `----------------------------------' `----------------------------------' + */ + [_BEPO] = LAYOUT( + RESC, BP_B, BP_EA, BP_P, BP_O, BP_EG, BP_DC, BP_V, BP_D, BP_L, BP_J, BP_Z, + BP_W, BP_A, BP_U, BP_I, BP_E, BP_CO, BP_C, BP_T, BP_S, BP_R, BP_N, BP_M, + LS, BP_AG, BP_Y, BP_X, BP_DT, BP_K, KC_SPC, U1, U1, U1, BP_AP, BP_Q, BP_G, BP_H, BP_F, BP_CCED, + BR01, BR02, BR03, BR04, BR05, BR06, BR07, BR08, BR09, BR10 + ), +/* + * Lower Layer: Numbers and symbols ? + * + * ,-------------------------------------------. ,-------------------------------------------. + * | $ | " | « | » | ( | ) | | @ | + | - | / | * | = | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | # | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ° | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | % | | | | | | | | | | | | | | | | ` | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_LOWER] = LAYOUT( + BP_DOL , BP_DQUO, BP_LDAQ, BP_RDAQ, BP_LPRN, BP_RPRN, BP_AT, BP_PLUS, BP_MINS, BP_SLSH, BP_ASTR, BP_EQL, + BP_HASH, BP_1, BP_2, BP_3, BP_4, BP_5, BP_6, BP_7, BP_8, BP_9, BP_0, BP_DEG, + BP_PERC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BP_GRV, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +/* + * Raise Layer: Media + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | | | | | | | | | | | | | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | | Prev | Play | Next | VolUp| | Left | Down | Up | Right| | | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | | | | Mute | VolDn| | | | | | MLeft| Mdown| MUp |MRight| | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_RAISE] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, + _______, _______, _______, _______, KC_MUTE, KC_VOLD, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +/* + * Adjust Layer: Function keys, RGB + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | TOG | SAI | HUI | VAI | MOD | | | | | F11 | F12 | | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | | SAD | HUD | VAD | RMOD | | | | | | | | | | | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_ADJUST] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, + _______, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_MOD, _______, _______, _______, KC_F11, KC_F12, _______, + _______, _______, RGB_SAD, RGB_HUD, RGB_VAD, RGB_RMOD,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +// /* +// * Layer template +// * +// * ,-------------------------------------------. ,-------------------------------------------. +// * | | | | | | | | | | | | | | +// * |--------+------+------+------+------+------| |------+------+------+------+------+--------| +// * | | | | | | | | | | | | | | +// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +// * | | | | | | | | | | | | | | | | | | +// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' +// * | | | | | | | | | | | | +// * | | | | | | | | | | | | +// * `----------------------------------' `----------------------------------' +// */ +// [_LAYERINDEX] = LAYOUT( +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +// ), +}; + +layer_state_t layer_state_set_user(layer_state_t state) { + return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); +} + +#ifdef OLED_ENABLE +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + return OLED_ROTATION_180; +} + +static void render_kyria_logo(void) { + static const char PROGMEM kyria_logo[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,224,240,112,120, 56, 60, 28, 30, 14, 14, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 30, 28, 60, 56,120,112,240,224,192,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,192,224,240,124, 62, 31, 15, 7, 3, 1,128,192,224,240,120, 56, 60, 28, 30, 14, 14, 7, 7,135,231,127, 31,255,255, 31,127,231,135, 7, 7, 14, 14, 30, 28, 60, 56,120,240,224,192,128, 1, 3, 7, 15, 31, 62,124,240,224,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,240,252,255, 31, 7, 1, 0, 0,192,240,252,254,255,247,243,177,176, 48, 48, 48, 48, 48, 48, 48,120,254,135, 1, 0, 0,255,255, 0, 0, 1,135,254,120, 48, 48, 48, 48, 48, 48, 48,176,177,243,247,255,254,252,240,192, 0, 0, 1, 7, 31,255,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,254,255,255, 1, 1, 7, 30,120,225,129,131,131,134,134,140,140,152,152,177,183,254,248,224,255,255,224,248,254,183,177,152,152,140,140,134,134,131,131,129,225,120, 30, 7, 1, 1,255,255,254, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0,255,255, 0, 0,192,192, 48, 48, 0, 0,240,240, 0, 0, 0, 0, 0, 0,240,240, 0, 0,240,240,192,192, 48, 48, 48, 48,192,192, 0, 0, 48, 48,243,243, 0, 0, 0, 0, 0, 0, 48, 48, 48, 48, 48, 48,192,192, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,127,255,255,128,128,224,120, 30,135,129,193,193, 97, 97, 49, 49, 25, 25,141,237,127, 31, 7,255,255, 7, 31,127,237,141, 25, 25, 49, 49, 97, 97,193,193,129,135, 30,120,224,128,128,255,255,127, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0, 63, 63, 3, 3, 12, 12, 48, 48, 0, 0, 0, 0, 51, 51, 51, 51, 51, 51, 15, 15, 0, 0, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 63, 63, 48, 48, 0, 0, 12, 12, 51, 51, 51, 51, 51, 51, 63, 63, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 63,255,248,224,128, 0, 0, 3, 15, 63,127,255,239,207,141, 13, 12, 12, 12, 12, 12, 12, 12, 30,127,225,128, 0, 0,255,255, 0, 0,128,225,127, 30, 12, 12, 12, 12, 12, 12, 12, 13,141,207,239,255,127, 63, 15, 3, 0, 0,128,224,248,255, 63, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 7, 15, 62,124,248,240,224,192,128, 1, 3, 7, 15, 30, 28, 60, 56,120,112,112,224,224,225,231,254,248,255,255,248,254,231,225,224,224,112,112,120, 56, 60, 28, 30, 15, 7, 3, 1,128,192,224,240,248,124, 62, 15, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 15, 14, 30, 28, 60, 56,120,112,112,112,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,112,112,112,120, 56, 60, 28, 30, 14, 15, 7, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }; + oled_write_raw_P(kyria_logo, sizeof(kyria_logo)); +} + +static void render_qmk_logo(void) { + static const char PROGMEM qmk_logo[] = { + 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, + 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, + 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0}; + + oled_write_P(qmk_logo, false); +} + +static void render_status(void) { + // QMK Logo and version information + render_qmk_logo(); + oled_write_P(PSTR("Kyria rev1.0\n\n"), false); + + // Host Keyboard Layer Status + oled_write_P(PSTR("Layer: "), false); + switch (get_highest_layer(layer_state)) { + case _BEPO: + oled_write_P(PSTR("BEPO\n"), false); + break; + case _LOWER: + oled_write_P(PSTR("NumSym\n"), false); + break; + case _RAISE: + oled_write_P(PSTR("Media\n"), false); + break; + case _ADJUST: + oled_write_P(PSTR("Adjust\n"), false); + break; + default: + oled_write_P(PSTR("Undefined\n"), false); + } + + // Host Keyboard LED Status + uint8_t led_usb_state = host_keyboard_leds(); + oled_write_P(IS_LED_ON(led_usb_state, USB_LED_NUM_LOCK) ? PSTR("NUMLCK ") : PSTR(" "), false); + oled_write_P(IS_LED_ON(led_usb_state, USB_LED_CAPS_LOCK) ? PSTR("CAPLCK ") : PSTR(" "), false); + oled_write_P(IS_LED_ON(led_usb_state, USB_LED_SCROLL_LOCK) ? PSTR("SCRLCK ") : PSTR(" "), false); +} + +bool oled_task_user(void) { + if (is_keyboard_master()) { + render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) + } else { + render_kyria_logo(); + } + return false; +} +#endif + +#ifdef ENCODER_ENABLE +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + // Volume control + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } + else if (index == 1) { + // Page up/Page down + if (clockwise) { + tap_code(KC_PGDN); + } else { + tap_code(KC_PGUP); + } + } + return true; +} +#endif diff --git a/keyboards/splitkb/kyria/keymaps/shinze/rules.mk b/keyboards/splitkb/kyria/keymaps/shinze/rules.mk new file mode 100644 index 000000000000..35f8ec90c6f7 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/shinze/rules.mk @@ -0,0 +1,4 @@ +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enables the use of OLED displays +ENCODER_ENABLE = yes # Enables the use of one or more encoders +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow diff --git a/keyboards/splitkb/kyria/keymaps/tessachka/config.h b/keyboards/splitkb/kyria/keymaps/tessachka/config.h new file mode 100644 index 000000000000..3fc508542c51 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/tessachka/config.h @@ -0,0 +1,29 @@ +/* Copyright 2019 Thomas Baart + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#ifdef OLED_ENABLE + #define OLED_DISPLAY_128X64 +#endif + +#ifdef RGBLIGHT_ENABLE + #define RGBLIGHT_ANIMATIONS + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_SLEEP +#endif diff --git a/keyboards/splitkb/kyria/keymaps/tessachka/keymap.c b/keyboards/splitkb/kyria/keymaps/tessachka/keymap.c new file mode 100644 index 000000000000..16d2bad8a4b4 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/tessachka/keymap.c @@ -0,0 +1,242 @@ +/* Copyright 2019 Thomas Baart + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + + +enum layers { + QWERTY = 0, + LOWER, + RAISE, + ADJUST +}; + +enum custom_keycodes { + RGBRST = SAFE_RANGE, + KC_RACL +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* + * Base Layer: QWERTY + * + * ,-------------------------------------------. ,-------------------------------------------. + * | ESC | Q | W | E | R | T | | Y | U | I | O | P | BSPC | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | TAB/ADJ| A | S | D | F | G | | H | J | K | L | ; : | ENTER | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | LSHIFT | Z | X | C | V | B | | | | | | N | M | , < | . > | / ? | F16 | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | Space| | MYCM | Calc | F15 | | | + * | | | Ctrl | LAlt | Lower| | Raise| | | | | + * `----------------------------------' `----------------------------------' + */ + [QWERTY] = LAYOUT( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + LT(ADJUST,KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_F16, + XXXXXXX, XXXXXXX, KC_LCTL, KC_LALT, LT(LOWER,KC_SPC), LT(RAISE,KC_MYCM), KC_CALC, KC_F15, XXXXXXX, XXXXXXX + ), +/* + * Lower Layer: Numbers and symbols + * + * ,-------------------------------------------. ,-------------------------------------------. + * | ` | 1 ! | 2 @ | 3 # | 4 $ | 5 % | | 6 ^ | 7 & | 8 * | 9 ( | 0 ) | DEL | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | CAPS | - _ | = + | [ { | ] } | | | | | | | ' " | | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | LSHIFT | TAB | | | | | | | | | | Home | PgDn | PgUp | End | \ | | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | Space| | Space| | | | | + * | | | Ctrl | LAlt | Lower| | | | | | | + * `----------------------------------' `----------------------------------' + */ + [LOWER] = LAYOUT( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + KC_CAPS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_QUOT, KC_NO, + KC_LSFT, KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_BSLS, KC_NO, + _______, _______, _______, _______, _______, KC_SPC, KC_NO, KC_NO, _______, _______ + ), +/* + * Raise Layer: Function Keys + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | |EEPRST| | | | | | | | | | F12 | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | LSHIFT | TAB | RESET| | | | | | | | | Play | | | | | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | Space| | MYCM | Prev | Next | | | + * | | | Ctrl | LAlt | | | Raise| | | | | + * `----------------------------------' `----------------------------------' + */ + [RAISE] = LAYOUT( + KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_NO, KC_NO, EEP_RST, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12, + KC_LSFT, KC_TAB, RESET, KC_NO, KC_NO, KC_NO, _______, _______, _______, _______, KC_MPLY, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + _______, _______, _______, _______, KC_SPC , KC_MPRV, KC_MNXT, _______, _______, _______ + ), +/* + * Adjust Layer: Arrow keys, RGB + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | BTN2 | Up | BTN1 |RGBMOD|RGBTOG| | | | | | | | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | Left | Down | Right|RGBSAI|RGBHUI| | | | | | | | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | RGBRST | |RGBVAI|RGBVAD|RGBSAD|RGBHUD| | | | | | | | | | | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | WBAK | BTN3 | WFWD | | MYCM | Calc | F15 | | | + * | | | | | | | Raise| | | | | + * `----------------------------------' `----------------------------------' + */ + [ADJUST] = LAYOUT( + KC_NO, KC_BTN2, KC_UP, KC_BTN1, RGB_MOD, RGB_TOG, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, RGB_SAI, RGB_HUI, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + RGBRST, KC_NO, RGB_VAI, RGB_VAD, RGB_SAD, RGB_HUD, _______, _______, _______, _______, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + _______, _______, KC_WBAK, KC_BTN3, KC_WFWD, _______, _______, _______, _______, _______ + ), +// /* +// * Layer template +// * +// * ,-------------------------------------------. ,-------------------------------------------. +// * | | | | | | | | | | | | | | +// * |--------+------+------+------+------+------| |------+------+------+------+------+--------| +// * | | | | | | | | | | | | | | +// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +// * | | | | | | | | | | | | | | | | | | +// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' +// * | | | | | | | | | | | | +// * | | | | | | | | | | | | +// * `----------------------------------' `----------------------------------' +// */ +// [LAYERINDEX] = LAYOUT( +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +// ), +}; + +layer_state_t layer_state_set_user(layer_state_t state) { + return update_tri_layer_state(state, LOWER, RAISE, ADJUST); +} + +// bool process_record_user(uint16_t keycode, keyrecord_t *record) { +// switch (keycode) { +// case MyCustomKeycode: +// if (record->event.pressed) { +// // What to do if the button was pressed +// } else { +// // What to do if the button was released +// } +// break; +// } +// return true; +// } + +#ifdef OLED_ENABLE +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + return OLED_ROTATION_180; +} + +static void render_kyria_logo(void) { + static const char PROGMEM kyria_logo[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,224,240,112,120, 56, 60, 28, 30, 14, 14, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 30, 28, 60, 56,120,112,240,224,192,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,192,224,240,124, 62, 31, 15, 7, 3, 1,128,192,224,240,120, 56, 60, 28, 30, 14, 14, 7, 7,135,231,127, 31,255,255, 31,127,231,135, 7, 7, 14, 14, 30, 28, 60, 56,120,240,224,192,128, 1, 3, 7, 15, 31, 62,124,240,224,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,240,252,255, 31, 7, 1, 0, 0,192,240,252,254,255,247,243,177,176, 48, 48, 48, 48, 48, 48, 48,120,254,135, 1, 0, 0,255,255, 0, 0, 1,135,254,120, 48, 48, 48, 48, 48, 48, 48,176,177,243,247,255,254,252,240,192, 0, 0, 1, 7, 31,255,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,254,255,255, 1, 1, 7, 30,120,225,129,131,131,134,134,140,140,152,152,177,183,254,248,224,255,255,224,248,254,183,177,152,152,140,140,134,134,131,131,129,225,120, 30, 7, 1, 1,255,255,254, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0,255,255, 0, 0,192,192, 48, 48, 0, 0,240,240, 0, 0, 0, 0, 0, 0,240,240, 0, 0,240,240,192,192, 48, 48, 48, 48,192,192, 0, 0, 48, 48,243,243, 0, 0, 0, 0, 0, 0, 48, 48, 48, 48, 48, 48,192,192, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,127,255,255,128,128,224,120, 30,135,129,193,193, 97, 97, 49, 49, 25, 25,141,237,127, 31, 7,255,255, 7, 31,127,237,141, 25, 25, 49, 49, 97, 97,193,193,129,135, 30,120,224,128,128,255,255,127, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0, 63, 63, 3, 3, 12, 12, 48, 48, 0, 0, 0, 0, 51, 51, 51, 51, 51, 51, 15, 15, 0, 0, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 63, 63, 48, 48, 0, 0, 12, 12, 51, 51, 51, 51, 51, 51, 63, 63, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 63,255,248,224,128, 0, 0, 3, 15, 63,127,255,239,207,141, 13, 12, 12, 12, 12, 12, 12, 12, 30,127,225,128, 0, 0,255,255, 0, 0,128,225,127, 30, 12, 12, 12, 12, 12, 12, 12, 13,141,207,239,255,127, 63, 15, 3, 0, 0,128,224,248,255, 63, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 7, 15, 62,124,248,240,224,192,128, 1, 3, 7, 15, 30, 28, 60, 56,120,112,112,224,224,225,231,254,248,255,255,248,254,231,225,224,224,112,112,120, 56, 60, 28, 30, 15, 7, 3, 1,128,192,224,240,248,124, 62, 15, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 15, 14, 30, 28, 60, 56,120,112,112,112,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,112,112,112,120, 56, 60, 28, 30, 14, 15, 7, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }; + oled_write_raw_P(kyria_logo, sizeof(kyria_logo)); +} + +static void render_tessachka_logo(void) { + static const char PROGMEM Tessachka_OLED_Logo_Inverted[] = + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 64, 0, 0, 128, 128, 192, 192, 192, 192, 192, 192, 64, 0, 0, + 128, 192, 192, 192, 192, 192, 192, 192, 192, 192, 64, 0, 0, 128, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 64, 0, 0, 0, 0, 0, 0, 192, 192, 0, 0, + 0, 0, 0, 0, 0, 128, 192, 192, 192, 192, 192, 192, 192, 192, 128, 0, 0, + 192, 128, 0, 0, 0, 0, 0, 0, 0, 0, 128, 192, 0, 192, 128, 0, 0, + 0, 0, 128, 192, 192, 128, 0, 0, 0, 0, 0, 0, 0, 192, 192, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 255, 255, 255, 127, 1, 1, 1, 0, 24, 126, 255, 255, 219, + 219, 153, 153, 153, 137, 128, 128, 0, 135, 143, 159, 153, 153, 153, 153, 153, 153, + 249, 240, 224, 0, 135, 143, 159, 153, 153, 153, 153, 153, 153, 249, 240, 224, 0, + 0, 192, 240, 252, 159, 135, 135, 159, 124, 240, 192, 0, 60, 255, 255, 231, 195, + 129, 0, 0, 0, 129, 195, 195, 195, 0, 255, 255, 255, 24, 24, 24, 24, 24, + 24, 255, 255, 255, 0, 255, 255, 255, 28, 62, 127, 247, 227, 193, 128, 0, 0, + 0, 192, 240, 252, 159, 135, 135, 159, 124, 240, 192, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 3, 3, 3, 3, 1, 0, 0, + 0, 1, 3, 3, 3, 3, 3, 3, 3, 3, 1, 0, 0, 0, 1, 3, 3, + 3, 3, 3, 3, 3, 3, 1, 0, 0, 3, 3, 3, 3, 3, 3, 1, 0, + 0, 1, 3, 3, 0, 0, 1, 3, 3, 3, 3, 3, 3, 3, 3, 1, 0, + 0, 0, 1, 3, 0, 0, 0, 0, 0, 0, 3, 1, 0, 0, 0, 1, 3, + 0, 0, 0, 0, 1, 3, 3, 1, 0, 3, 3, 3, 3, 3, 3, 1, 0, + 0, 1, 3, 3, 0, 0, 0, 0, 0, 0 + }; + oled_write_raw_P(Tessachka_OLED_Logo_Inverted, sizeof(Tessachka_OLED_Logo_Inverted)); + oled_advance_page(false); + oled_advance_page(false); + oled_advance_page(false); +} + +static void render_status(void) { + // Logo and version information + render_tessachka_logo(); + oled_write_P(PSTR("Kyria rev1.0\n\n"), false); + + // Host Keyboard Layer Status + oled_write_P(PSTR("Layer: "), false); + switch (get_highest_layer(layer_state)) { + case QWERTY: + oled_write_P(PSTR("Default\n"), false); + break; + case LOWER: + oled_write_P(PSTR("Lower\n"), false); + break; + case RAISE: + oled_write_P(PSTR("Raise\n"), false); + break; + case ADJUST: + oled_write_P(PSTR("Adjust\n"), false); + break; + default: + oled_write_P(PSTR("Undefined\n"), false); + } + + // Host Keyboard LED Status + uint8_t led_usb_state = host_keyboard_leds(); + oled_write_P(IS_LED_ON(led_usb_state, USB_LED_NUM_LOCK) ? PSTR("NUMLCK ") : PSTR(" "), false); + oled_write_P(IS_LED_ON(led_usb_state, USB_LED_CAPS_LOCK) ? PSTR("CAPLCK ") : PSTR(" "), false); + oled_write_P(IS_LED_ON(led_usb_state, USB_LED_SCROLL_LOCK) ? PSTR("SCRLCK ") : PSTR(" "), false); +} + +bool oled_task_user(void) { + if (is_keyboard_master()) { + render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) + } else { + render_kyria_logo(); + } + return false; +} +#endif diff --git a/keyboards/splitkb/kyria/keymaps/tessachka/rules.mk b/keyboards/splitkb/kyria/keymaps/tessachka/rules.mk new file mode 100644 index 000000000000..e79a5604e046 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/tessachka/rules.mk @@ -0,0 +1,4 @@ +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enables the use of OLED displays +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +MOUSEKEY_ENABLE = yes diff --git a/keyboards/splitkb/kyria/keymaps/thomasbaart/config.h b/keyboards/splitkb/kyria/keymaps/thomasbaart/config.h new file mode 100644 index 000000000000..acb0703590a5 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/thomasbaart/config.h @@ -0,0 +1,47 @@ +/* Copyright 2019 Thomas Baart + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#ifdef OLED_ENABLE + #define OLED_DISPLAY_128X64 +#endif + +#ifdef RGBLIGHT_ENABLE + #define RGBLIGHT_ANIMATIONS + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_SLEEP +#endif + +// EC11K encoders have a different resolution than other EC11 encoders. +// When using the default resolution of 4, if you notice your encoder skipping +// every other tick, lower the resolution to 2. +#define ENCODER_RESOLUTION 2 + +// The Leader key allows to flexibly assign macros to key sequences. +#define LEADER_PER_KEY_TIMING +#define LEADER_TIMEOUT 350 + +#define TAPPING_TERM 200 + +// Allows to use either side as the master. Look at the documentation for info: +// https://docs.qmk.fm/#/config_options?id=setting-handedness +#define EE_HANDS + +// Allows media codes to properly register in macros and rotary encoder code +#define TAP_CODE_DELAY 10 diff --git a/keyboards/splitkb/kyria/keymaps/thomasbaart/keymap.c b/keyboards/splitkb/kyria/keymaps/thomasbaart/keymap.c new file mode 100644 index 000000000000..0a4f1887c340 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/thomasbaart/keymap.c @@ -0,0 +1,360 @@ +/* Copyright 2019 Thomas Baart + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +uint16_t copy_paste_timer; + +enum layers { + QWERTY = 0, + LOWER, + RAISE, + NAV, + ADJUST +}; + +enum custom_keycodes { + KC_CCCV = SAFE_RANGE +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* + * Base Layer: QWERTY + * + * ,-------------------------------------------. ,-------------------------------------------. + * | ESC | Q | W | E | R | T | | Y | U | I | O | P | | \ | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | LSFT | A | S | D | F | G | | H | J | K | L | ; : | ' " | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | LCTL | Z | X | C | V | B | CCCV | | | Del |Leader| N | M | , < | . > | / ? | - _ | + * `----------------------+------+------+------+------+ | |------+------+------+------+------+----------------------' + * | GUI | Alt | | Space| Enter| | Bspc | Space| | Tab | AltGr| + * | | | Lower| Shift| Alt | | | Nav | Raise| | | + * `----------------------------------' `----------------------------------' + */ + [QWERTY] = LAYOUT( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_PIPE, + KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_CCCV, XXXXXXX, KC_DEL, KC_LEAD, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_MINS, + KC_LGUI, KC_LALT, MO(LOWER), MT(MOD_LSFT, KC_SPC), MT(MOD_LALT, KC_ENT), KC_BSPC, LT(NAV, KC_SPC), MO(RAISE), KC_TAB, KC_RALT + ), +/* + * Lower Layer: Numpad, Media + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | | | VolUp| | | | / ? | 7 & | 8 * | 9 ( | - _ | | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | | Prev | Play | Next | | | * | 4 $ | 5 % | 6 ^ | , < | + | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | | | VolDn| Mute | | | | | | | 0 ) | 1 ! | 2 @ | 3 # | = + | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | Lower| | | | | Nav | Raise| | | + * `----------------------------------' `----------------------------------' + */ + [LOWER] = LAYOUT( + _______, _______, _______, KC_VOLU, _______, _______, KC_SLSH, KC_7, KC_8, KC_9, KC_MINS, _______, + _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_ASTR, KC_4, KC_5, KC_6, KC_COMM, KC_PLUS, + _______, _______, _______, KC_VOLD, KC_MUTE, _______, _______, _______, _______, _______, KC_0, KC_1, KC_2, KC_3, KC_EQL, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +/* + * Raise Layer: Symbols + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | ! | @ | { | } | | | | | _ | € | | | \ | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | # | $ | ( | ) | ` | | + | - | / | * | % | ' " | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | % | ^ | [ | ] | ~ | | | | | | & | = | , | . | / ? | - _ | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | Lower| | | | | Nav | Raise| | | + * `----------------------------------' `----------------------------------' + */ + [RAISE] = LAYOUT( + _______, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, _______, KC_UNDS, ALGR(KC_5),_______,_______,KC_BSLS, + _______, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV, KC_PLUS, KC_MINS, KC_SLSH, KC_ASTR, KC_PERC, KC_QUOT, + _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, _______, _______, _______, _______, KC_AMPR, KC_EQL, KC_COMM, KC_DOT, KC_SLSH, KC_MINS, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +/* + * Navigation Layer + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | | | | | | | PgUp | Home | Up | End | | ScrlLk | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | | | | | | | PgDn | Left | Down | Right| | CapsLk | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | | | | | | | | | | | | | | | | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | Lower| | | | | Nav | Raise| | | + * `----------------------------------' `----------------------------------' + */ + [NAV] = LAYOUT( + _______, _______, _______, _______, _______, _______, KC_PGUP, KC_HOME, KC_UP, KC_END, _______, KC_SLCK, + _______, _______, _______, _______, _______, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_CAPS, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +/* + * Adjust Layer + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | | | | | | | | F7 | F8 | F9 | F10 | | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | | SAI | HUI | VAI | | | | F4 | F5 | F6 | F11 | | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | | SAD | HUD | VAD | | | | | | | | F1 | F2 | F3 | F12 | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [ADJUST] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, _______, + _______, _______, RGB_SAI, RGB_HUI, RGB_VAI, _______, _______, KC_F4, KC_F5, KC_F6, KC_F11, _______, + _______, _______, RGB_SAD, RGB_HUD, RGB_VAD, _______, _______, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F12, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +// /* +// * Layer template +// * +// * ,-------------------------------------------. ,-------------------------------------------. +// * | | | | | | | | | | | | | | +// * |--------+------+------+------+------+------| |------+------+------+------+------+--------| +// * | | | | | | | | | | | | | | +// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +// * | | | | | | | | | | | | | | | | | | +// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' +// * | | | | | | | | | | | | +// * | | | | | | | | | | | | +// * `----------------------------------' `----------------------------------' +// */ +// [_LAYERINDEX] = LAYOUT( +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +// ), +}; + +layer_state_t layer_state_set_user(layer_state_t state) { + return update_tri_layer_state(state, LOWER, RAISE, ADJUST); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_CCCV: // One key copy/paste + if (record->event.pressed) { + copy_paste_timer = timer_read(); + } else { + if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) { // Hold, copy + tap_code16(LCTL(KC_C)); + } else { // Tap, paste + tap_code16(LCTL(KC_V)); + } + } + break; + } + return true; +} + + +bool is_alt_tab_active = false; +uint16_t alt_tab_timer = 0; + +LEADER_EXTERNS(); + +void matrix_scan_user(void) { + if (is_alt_tab_active) { + if (timer_elapsed(alt_tab_timer) > 1000) { + unregister_code(KC_LALT); + is_alt_tab_active = false; + } + } + + LEADER_DICTIONARY() { + leading = false; + leader_end(); + + SEQ_ONE_KEY(KC_C) { // Inline Code + SEND_STRING("`` " SS_TAP(X_LEFT) SS_TAP(X_LEFT)); + } + SEQ_ONE_KEY(KC_P) { // Invoke Password Manager + SEND_STRING(SS_LCTRL(SS_LALT("\\"))); + } + SEQ_ONE_KEY(KC_S) { // Windows screenshot + SEND_STRING(SS_LGUI("\nS")); + } + SEQ_TWO_KEYS(KC_F, KC_P) { // Fusion Projection prefix + SEND_STRING("[Projection] "); + } + SEQ_TWO_KEYS(KC_B, KC_B) { // Basecone invoice description + SEND_STRING("[Leveranciersnaam] [Factuurnummer]"); + } + SEQ_TWO_KEYS(KC_E, KC_S) { // Support email splitkb + SEND_STRING("support@splitkb.com"); + } + SEQ_TWO_KEYS(KC_E, KC_T) { // Email splitkb + SEND_STRING("thomas@splitkb.com"); + } + SEQ_TWO_KEYS(KC_E, KC_P) { // Email personal + SEND_STRING("mail@thomasbaart.nl"); + } + SEQ_TWO_KEYS(KC_S, KC_D) { // Splitkb documentation + SEND_STRING("https://docs.splitkb.com/"); + } + SEQ_TWO_KEYS(KC_S, KC_V) { // Splitkb VAT number + SEND_STRING("NL210593349B01"); + } + SEQ_TWO_KEYS(KC_B, KC_C) { // Discord bongocat + SEND_STRING(":bongocat:\n"); + } + SEQ_TWO_KEYS(KC_C, KC_B) { // Discord code block + SEND_STRING("```c" SS_LSFT("\n\n") "``` " SS_TAP(X_UP)); + } + SEQ_TWO_KEYS(KC_Y, KC_S) { // Greeting + SEND_STRING("Yours sincerely,\n\nThomas Baart"); + } + SEQ_THREE_KEYS(KC_M, KC_V, KC_G) { // Greeting + SEND_STRING("Met vriendelijke groet,\n\nThomas Baart"); + } + } +} + +#ifdef OLED_ENABLE +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + return OLED_ROTATION_180; +} + +static void render_kyria_logo(void) { + static const char PROGMEM kyria_logo[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,224,240,112,120, 56, 60, 28, 30, 14, 14, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 30, 28, 60, 56,120,112,240,224,192,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,192,224,240,124, 62, 31, 15, 7, 3, 1,128,192,224,240,120, 56, 60, 28, 30, 14, 14, 7, 7,135,231,127, 31,255,255, 31,127,231,135, 7, 7, 14, 14, 30, 28, 60, 56,120,240,224,192,128, 1, 3, 7, 15, 31, 62,124,240,224,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,240,252,255, 31, 7, 1, 0, 0,192,240,252,254,255,247,243,177,176, 48, 48, 48, 48, 48, 48, 48,120,254,135, 1, 0, 0,255,255, 0, 0, 1,135,254,120, 48, 48, 48, 48, 48, 48, 48,176,177,243,247,255,254,252,240,192, 0, 0, 1, 7, 31,255,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,254,255,255, 1, 1, 7, 30,120,225,129,131,131,134,134,140,140,152,152,177,183,254,248,224,255,255,224,248,254,183,177,152,152,140,140,134,134,131,131,129,225,120, 30, 7, 1, 1,255,255,254, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0,255,255, 0, 0,192,192, 48, 48, 0, 0,240,240, 0, 0, 0, 0, 0, 0,240,240, 0, 0,240,240,192,192, 48, 48, 48, 48,192,192, 0, 0, 48, 48,243,243, 0, 0, 0, 0, 0, 0, 48, 48, 48, 48, 48, 48,192,192, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,127,255,255,128,128,224,120, 30,135,129,193,193, 97, 97, 49, 49, 25, 25,141,237,127, 31, 7,255,255, 7, 31,127,237,141, 25, 25, 49, 49, 97, 97,193,193,129,135, 30,120,224,128,128,255,255,127, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0, 63, 63, 3, 3, 12, 12, 48, 48, 0, 0, 0, 0, 51, 51, 51, 51, 51, 51, 15, 15, 0, 0, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 63, 63, 48, 48, 0, 0, 12, 12, 51, 51, 51, 51, 51, 51, 63, 63, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 63,255,248,224,128, 0, 0, 3, 15, 63,127,255,239,207,141, 13, 12, 12, 12, 12, 12, 12, 12, 30,127,225,128, 0, 0,255,255, 0, 0,128,225,127, 30, 12, 12, 12, 12, 12, 12, 12, 13,141,207,239,255,127, 63, 15, 3, 0, 0,128,224,248,255, 63, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 7, 15, 62,124,248,240,224,192,128, 1, 3, 7, 15, 30, 28, 60, 56,120,112,112,224,224,225,231,254,248,255,255,248,254,231,225,224,224,112,112,120, 56, 60, 28, 30, 15, 7, 3, 1,128,192,224,240,248,124, 62, 15, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 15, 14, 30, 28, 60, 56,120,112,112,112,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,112,112,112,120, 56, 60, 28, 30, 14, 15, 7, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }; + oled_write_raw_P(kyria_logo, sizeof(kyria_logo)); +} + +static void render_qmk_logo(void) { + static const char PROGMEM qmk_logo[] = { + 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, + 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, + 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0}; + + oled_write_P(qmk_logo, false); +} + +static void render_status(void) { + // QMK Logo and version information + render_qmk_logo(); + oled_write_P(PSTR(" Kyria rev1.0\n\n"), false); + + // Host Keyboard Layer Status + oled_write_P(PSTR("Layer: "), false); + switch (get_highest_layer(layer_state)) { + case QWERTY: + oled_write_P(PSTR("Default\n"), false); + break; + case LOWER: + oled_write_P(PSTR("Lower\n"), false); + break; + case RAISE: + oled_write_P(PSTR("Raise\n"), false); + break; + case NAV: + oled_write_P(PSTR("Navigation\n"), false); + break; + case ADJUST: + oled_write_P(PSTR("Adjust\n"), false); + break; + default: + oled_write_P(PSTR("Undefined\n"), false); + } + + // Host Keyboard LED Status + uint8_t led_usb_state = host_keyboard_leds(); + oled_write_P(IS_LED_ON(led_usb_state, USB_LED_NUM_LOCK) ? PSTR("NUMLCK ") : PSTR(" "), false); + oled_write_P(IS_LED_ON(led_usb_state, USB_LED_CAPS_LOCK) ? PSTR("CAPLCK ") : PSTR(" "), false); + oled_write_P(IS_LED_ON(led_usb_state, USB_LED_SCROLL_LOCK) ? PSTR("SCRLCK ") : PSTR(" "), false); +} + +bool oled_task_user(void) { + if (is_keyboard_master()) { + render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) + } else { + render_kyria_logo(); + } + return false; +} +#endif + +#ifdef ENCODER_ENABLE +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + switch (biton32(layer_state)) { + case QWERTY: + // History scrubbing. For Adobe products, hold shift while moving + // backward to go forward instead. + if (clockwise) { + tap_code16(C(KC_Z)); + } else { + tap_code16(C(KC_Y)); + } + break; + default: + // Switch between windows on Windows with alt tab. + if (clockwise) { + if (!is_alt_tab_active) { + is_alt_tab_active = true; + register_code(KC_LALT); + } + alt_tab_timer = timer_read(); + tap_code16(KC_TAB); + } else { + tap_code16(S(KC_TAB)); + } + break; + } + } else if (index == 1) { + switch (biton32(layer_state)) { + case QWERTY: + // Scrolling with PageUp and PgDn. + if (clockwise) { + tap_code(KC_PGDN); + } else { + tap_code(KC_PGUP); + } + break; + default: + // Volume control. + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + break; + } + } + return true; +} +#endif diff --git a/keyboards/splitkb/kyria/keymaps/thomasbaart/rules.mk b/keyboards/splitkb/kyria/keymaps/thomasbaart/rules.mk new file mode 100644 index 000000000000..65b44a2982e9 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/thomasbaart/rules.mk @@ -0,0 +1,6 @@ +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enables the use of OLED displays +ENCODER_ENABLE = yes # Enables the use of one or more encoders +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +LEADER_ENABLE = yes # Enable the Leader Key feature +MOUSEKEY_ENABLE = no diff --git a/keyboards/splitkb/kyria/keymaps/via/config.h b/keyboards/splitkb/kyria/keymaps/via/config.h new file mode 100644 index 000000000000..3ca93f4fd300 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/via/config.h @@ -0,0 +1,40 @@ +/* Copyright 2019 Thomas Baart + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define LAYER_STATE_8BIT +#define DYNAMIC_KEYMAP_LAYER_COUNT 5 +#define IGNORE_MOD_TAP_INTERRUPT + +#undef LOCKING_SUPPORT_ENABLE +#undef LOCKING_RESYNC_ENABLE + +#ifdef RGBLIGHT_ENABLE +# 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_STATIC_GRADIENT + +# define RGBLIGHT_HUE_STEP 8 +# define RGBLIGHT_SAT_STEP 8 +# define RGBLIGHT_VAL_STEP 8 +# define RGBLIGHT_LIMIT_VAL 150 +#endif + +#define USB_POLLING_INTERVAL_MS 1 diff --git a/keyboards/splitkb/kyria/keymaps/via/keymap.c b/keyboards/splitkb/kyria/keymaps/via/keymap.c new file mode 100644 index 000000000000..6835652a70de --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/via/keymap.c @@ -0,0 +1,249 @@ +/* Copyright 2019 Thomas Baart + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layers { _BASE = 0, _NAV, _SYM, _FUNCTION, _ADJUST }; + +// Aliases for readability + +#define SYM MO(_SYM) +#define NAV MO(_NAV) +#define FKEYS MO(_FUNCTION) +#define ADJUST MO(_ADJUST) + +#define CTL_ESC MT(MOD_LCTL, KC_ESC) +#define CTL_QUOT MT(MOD_RCTL, KC_QUOTE) +#define CTL_MINS MT(MOD_RCTL, KC_MINUS) +#define ALT_ENT MT(MOD_LALT, KC_ENT) + +// Note: LAlt/Enter (ALT_ENT) is not the same thing as the keyboard shortcut Alt+Enter. +// The notation `mod/tap` denotes a key that activates the modifier `mod` when held down, and +// produces the key `tap` when tapped (i.e. pressed and released). + +// clang-format off +#define LAYOUT_via( \ + L00, L01, L02, L03, L04, L05, LE0, LE1, RE0, RE1, R06, R07, R08, R09, R10, R11, \ + L12, L13, L14, L15, L16, L17, R18, R19, R20, R21, R22, R23, \ + L24, L25, L26, L27, L28, L29, L30, L31, R32, R33, R34, R35, R36, R37, R38, R39, \ + L40, L41, L42, L43, L44, R45, R46, R47, R48, R49 \ +) \ +{ \ + { LE0, LE1, L05, L04, L03, L02, L01, L00 }, \ + { RE0, RE1, L17, L16, L15, L14, L13, L12 }, \ + { L31, L30, L29, L28, L27, L26, L25, L24 }, \ + { L44, L43, L42, L41, L40, KC_NO, KC_NO, KC_NO }, \ + { KC_NO, KC_NO, R06, R07, R08, R09, R10, R11 }, \ + { KC_NO, KC_NO, R18, R19, R20, R21, R22, R23 }, \ + { R32, R33, R34, R35, R36, R37, R38, R39 }, \ + { R45, R46, R47, R48, R49, KC_NO, KC_NO, KC_NO }, \ +} + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* + * Base Layer: QWERTY + * + * ,-------------------------------------------. ,-------------------------------------------. + * | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * |Ctrl/Esc| A | S | D | F | G | | H | J | K | L | ; : |Ctrl/' "| + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | LShift | Z | X | C | V | B | [ { |CapsLk| |F-keys| ] } | N | M | , < | . > | / ? | RShift | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * |Adjust| LGUI | LAlt/| Space| Nav | | Sym | Space| AltGr| RGUI | Menu | + * | | | Enter| | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_BASE] = LAYOUT_via( + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_VOLD, KC_VOLU, KC_PGDN, KC_PGUP, KC_Y, KC_U , KC_I , KC_O , KC_P , KC_BSPC, + CTL_ESC , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H, KC_J , KC_K , KC_L ,KC_SCLN,CTL_QUOT, + KC_LSFT , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_LBRC,KC_CAPS, FKEYS , KC_RBRC, KC_N, KC_M ,KC_COMM, KC_DOT ,KC_SLSH, KC_RSFT, + ADJUST , KC_LGUI, ALT_ENT, KC_SPC , NAV , SYM , KC_SPC ,KC_RALT, KC_RGUI, KC_APP + ), + +/* + * Nav Layer: Media, navigation + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | | | | | | | PgUp | Home | ↑ | End | VolUp| Delete | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | GUI | Alt | Ctrl | Shift| | | PgDn | ← | ↓ | → | VolDn| Insert | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | | | | | | |ScLck | | | | Pause|M Prev|M Play|M Next|VolMut| PrtSc | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_NAV] = LAYOUT_via( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_VOLU, KC_DEL, + _______, KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_VOLD, KC_INS, + _______, _______, _______, _______, _______, _______, _______, KC_SLCK, _______, _______,KC_PAUSE, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_PSCR, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +/* + * Sym Layer: Numbers and symbols + * + * ,-------------------------------------------. ,-------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | = | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | + | + * |--------+------+------+------+------+------+-------------. ,------+-------------+------+------+------+------+--------| + * | | | \ | : | ; | - | \ | | [ { | | | | ] } | # ~ | _ | , | . | / | ? | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_SYM] = LAYOUT_via( + KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , _______, _______, _______, _______, KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_EQL , + KC_TILD , KC_EXLM, KC_AT , KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PLUS, + KC_PIPE , KC_BSLS, KC_COLN, KC_SCLN, KC_MINS, KC_NUBS, KC_LBRC, _______, _______, KC_RBRC, KC_NUHS, KC_UNDS, KC_COMM, KC_DOT, KC_SLSH, KC_QUES, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +/* + * Function Layer: Function keys + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | F9 | F10 | F11 | F12 | | | | | | | | | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | F5 | F6 | F7 | F8 | | | | Shift| Ctrl | Alt | GUI | | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | F1 | F2 | F3 | F4 | | | | | | | | | | | | | + * `--------+------+------+--------------------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_FUNCTION] = LAYOUT_via( + _______, KC_F9 , KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_F5 , KC_F6 , KC_F7 , KC_F8 , _______, _______, KC_RSFT, KC_RCTL, KC_LALT, KC_RGUI, _______, + _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +/* + * Adjust Layer: Default layer settings, RGB + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | | |QWERTY| | | | | | | | | | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | | |Dvorak| | | | TOG | SAI | HUI | VAI | MOD | | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | | |Colmak| | | | | | | | | SAD | HUD | VAD | RMOD | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_ADJUST] = LAYOUT_via( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_MOD, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_HUD, RGB_VAD, RGB_RMOD, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + +}; +// clang-format on + +#ifdef ENCODER_ENABLE +static uint8_t encoder_state[2] = {0}; +static keypos_t encoder_ccw[2] = {{0, 0}, {0, 1}}; +static keypos_t encoder_cw[2] = {{1, 0}, {1, 1}}; + +void encoder_action_unregister(void) { + for (int index = 0; index < 2; ++index) { + if (encoder_state[index]) { + keyevent_t encoder_event = (keyevent_t){.key = encoder_state[index] >> 1 ? encoder_cw[index] : encoder_ccw[index], .pressed = false, .time = (timer_read() | 1)}; + encoder_state[index] = 0; + action_exec(encoder_event); + } + } +} + +void encoder_action_register(uint8_t index, bool clockwise) { + keyevent_t encoder_event = (keyevent_t){.key = clockwise ? encoder_cw[index] : encoder_ccw[index], .pressed = true, .time = (timer_read() | 1)}; + encoder_state[index] = (clockwise ^ 1) | (clockwise << 1); + action_exec(encoder_event); +} + +void matrix_scan_user(void) { encoder_action_unregister(); } + +bool encoder_update_user(uint8_t index, bool clockwise) { + encoder_action_register(index, clockwise); + return false; +}; +#endif + +#ifdef OLED_ENABLE +bool oled_task_user(void) { + if (is_keyboard_master()) { + // QMK Logo and version information + // clang-format off + static const char PROGMEM qmk_logo[] = { + 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, + 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, + 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0}; + // clang-format on + + oled_write_P(qmk_logo, false); + oled_write_P(PSTR("Kyria rev1.0 w/ VIA\n\n"), false); + + // Host Keyboard Layer Status + oled_write_P(PSTR("Layer: "), false); + switch (get_highest_layer(layer_state | default_layer_state)) { + case 0: + oled_write_P(PSTR("Base\n"), false); + break; + case 1: + oled_write_P(PSTR("Nav\n"), false); + break; + case 2: + oled_write_P(PSTR("Sym\n"), false); + break; + case 3: + oled_write_P(PSTR("Function\n"), false); + break; + case 4: + oled_write_P(PSTR("Adjust\n"), false); + break; + } + + // Host Keyboard LED Status + led_t led_usb_state = host_keyboard_led_state(); + oled_write_P(led_usb_state.num_lock ? PSTR("NUMLCK ") : PSTR(" "), false); + oled_write_P(led_usb_state.caps_lock ? PSTR("CAPLCK ") : PSTR(" "), false); + oled_write_P(led_usb_state.scroll_lock ? PSTR("SCRLCK ") : PSTR(" "), false); + } else { + // clang-format off + static const char PROGMEM kyria_logo[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,224,240,112,120, 56, 60, 28, 30, 14, 14, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 30, 28, 60, 56,120,112,240,224,192,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,192,224,240,124, 62, 31, 15, 7, 3, 1,128,192,224,240,120, 56, 60, 28, 30, 14, 14, 7, 7,135,231,127, 31,255,255, 31,127,231,135, 7, 7, 14, 14, 30, 28, 60, 56,120,240,224,192,128, 1, 3, 7, 15, 31, 62,124,240,224,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,240,252,255, 31, 7, 1, 0, 0,192,240,252,254,255,247,243,177,176, 48, 48, 48, 48, 48, 48, 48,120,254,135, 1, 0, 0,255,255, 0, 0, 1,135,254,120, 48, 48, 48, 48, 48, 48, 48,176,177,243,247,255,254,252,240,192, 0, 0, 1, 7, 31,255,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,254,255,255, 1, 1, 7, 30,120,225,129,131,131,134,134,140,140,152,152,177,183,254,248,224,255,255,224,248,254,183,177,152,152,140,140,134,134,131,131,129,225,120, 30, 7, 1, 1,255,255,254, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0,255,255, 0, 0,192,192, 48, 48, 0, 0,240,240, 0, 0, 0, 0, 0, 0,240,240, 0, 0,240,240,192,192, 48, 48, 48, 48,192,192, 0, 0, 48, 48,243,243, 0, 0, 0, 0, 0, 0, 48, 48, 48, 48, 48, 48,192,192, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,127,255,255,128,128,224,120, 30,135,129,193,193, 97, 97, 49, 49, 25, 25,141,237,127, 31, 7,255,255, 7, 31,127,237,141, 25, 25, 49, 49, 97, 97,193,193,129,135, 30,120,224,128,128,255,255,127, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0, 63, 63, 3, 3, 12, 12, 48, 48, 0, 0, 0, 0, 51, 51, 51, 51, 51, 51, 15, 15, 0, 0, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 63, 63, 48, 48, 0, 0, 12, 12, 51, 51, 51, 51, 51, 51, 63, 63, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 63,255,248,224,128, 0, 0, 3, 15, 63,127,255,239,207,141, 13, 12, 12, 12, 12, 12, 12, 12, 30,127,225,128, 0, 0,255,255, 0, 0,128,225,127, 30, 12, 12, 12, 12, 12, 12, 12, 13,141,207,239,255,127, 63, 15, 3, 0, 0,128,224,248,255, 63, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 7, 15, 62,124,248,240,224,192,128, 1, 3, 7, 15, 30, 28, 60, 56,120,112,112,224,224,225,231,254,248,255,255,248,254,231,225,224,224,112,112,120, 56, 60, 28, 30, 15, 7, 3, 1,128,192,224,240,248,124, 62, 15, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 15, 14, 30, 28, 60, 56,120,112,112,112,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,112,112,112,120, 56, 60, 28, 30, 14, 15, 7, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }; + // clang-format on + oled_write_raw_P(kyria_logo, sizeof(kyria_logo)); + } + return false; +} +#endif diff --git a/keyboards/splitkb/kyria/keymaps/via/rules.mk b/keyboards/splitkb/kyria/keymaps/via/rules.mk new file mode 100644 index 000000000000..9f383dfa2d73 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/via/rules.mk @@ -0,0 +1,10 @@ +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enables the use of OLED displays +ENCODER_ENABLE = yes # Enables the use of one or more encoders +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +VIA_ENABLE = yes +NKRO_ENABLE = yes +KEY_LOCK_ENABLE = no +SPACE_CADET_ENABLE = no +MAGIC_ENABLE = no +GRAVE_ESCAPE_ENABLE = no diff --git a/keyboards/splitkb/kyria/keymaps/winternebs/config.h b/keyboards/splitkb/kyria/keymaps/winternebs/config.h new file mode 100755 index 000000000000..1df48a1f4917 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/winternebs/config.h @@ -0,0 +1,31 @@ +/* Copyright 2019 Thomas Baart + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#define OLED_FONT_H "keyboards/splitkb/kyria/keymaps/winternebs/glcdfont.c" +#define OLED_FONT_END 127 +#ifdef OLED_ENABLE + #define OLED_DISPLAY_128X64 +#endif + +#define FORCE_NKRO +#define ENCODER_RESOLUTION 4 + +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION +#define NO_ACTION_ONESHOT +#define TAPPING_FORCE_HOLD +#define IGNORE_MOD_TAP_INTERRUPT diff --git a/keyboards/kyria/keymaps/winternebs/glcdfont.c b/keyboards/splitkb/kyria/keymaps/winternebs/glcdfont.c similarity index 100% rename from keyboards/kyria/keymaps/winternebs/glcdfont.c rename to keyboards/splitkb/kyria/keymaps/winternebs/glcdfont.c diff --git a/keyboards/splitkb/kyria/keymaps/winternebs/keymap.c b/keyboards/splitkb/kyria/keymaps/winternebs/keymap.c new file mode 100755 index 000000000000..4f0df9354f95 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/winternebs/keymap.c @@ -0,0 +1,733 @@ +/* Copyright 2019 Thomas Baart + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +#ifdef CONSOLE_ENABLE + #include +#endif +enum custom_keycodes { + QWERTY = SAFE_RANGE, + WORKMAN, + ADJUST, + SBKSP, + ENDW +}; + +enum layers { + _QWERTY = 0, + _WORKMAN, + _LOWER, + _RAISE, + _ADJUST +}; +#define RAISE LT(_RAISE, KC_ENT) +#define LOWER MO(_LOWER) +#define HOME_A KC_A +#define HOME_S KC_S +#define HOME_H CTL_T(KC_H) +#define HOME_T SFT_T(KC_T) +#define HOME_N SFT_T(KC_N) +#define HOME_E CTL_T(KC_E) +#define HOME_O KC_O +#define HOME_I KC_I +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* + * Base Layer: QWERTY + * + * ,-------------------------------------------. ,-------------------------------------------. + * | ESC | Q | W | E | R | T | | Y | U | I | O | P | | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | TAB | A | S | D | F | G | | H | J | K | L | ; | ' | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | CTRL | Z | X | C | V | B | | | | | | N | M | , | . | / | ENTER | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | GUI | ALT | LOWER| Space| | | SHIFT| Bksp | RAISE| | | + * `----------------------------------' `----------------------------------' + */ + [_QWERTY] = LAYOUT( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, _______, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, _______, _______, _______, _______, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_LGUI, KC_LALT, LOWER, KC_SPC, _______, KC_LSFT, KC_BSPC, RAISE, _______, _______ + ), + /* + * Workman Layer + * + * ,-------------------------------------------. ,-------------------------------------------. + * | ESC | Q | D | R | W | B | | J | F | U | P | ; | Bksp | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | TAB | A | S | H | T | G | | Y | N | E | O | I | ' | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | Z | X | M | C | V | SHIFT| Space| | | ENTER| K | L | , | . | / | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | GUI | ESC | LOWER| Space| SWAP | | SWAP | Bksp | RAISE| | | + * `----------------------------------' `----------------------------------' + */ + [_WORKMAN] = LAYOUT( + KC_ESC, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_BSPC, + KC_TAB, HOME_A, HOME_S, HOME_H, HOME_T, KC_G, KC_Y, HOME_N, HOME_E, HOME_O, HOME_I, KC_QUOT, + XXXXXXX, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_LSFT, KC_SPC, SH_MON, KC_ENT, KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH, XXXXXXX, + KC_LGUI, KC_LALT, LOWER, KC_SPC, SH_MON, SH_MON, KC_BSPC, RAISE, XXXXXXX, _______ + ), +/* + * Lower Layer: NUM/symb + * + * ,-------------------------------------------. ,-------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | DEL | $ | + | ( | ) | @ | | | | - | = | _ | * | \ | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | ! | # | { | } | ~ | | | | | | & | [ | ] | % | ^ | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * |prints| | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_LOWER] = LAYOUT( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, + KC_DEL, KC_DLR, KC_PLUS, KC_LPRN, KC_RPRN, KC_AT, KC_PIPE, KC_MINS, KC_EQL, KC_UNDS, KC_ASTR, KC_BSLS, + _______, KC_EXLM, KC_HASH, KC_LCBR, KC_RCBR, KC_TILD, _______, _______, _______, _______, KC_AMPR, KC_LBRC, KC_RBRC, KC_PERC, KC_CIRC, _______, + KC_PSCR, _______, _______, _______, _______, _______, KC_BSPC, _______, _______, _______ + ), + /* + * Raise Layer: VIM Movement + * + * ,-------------------------------------------. ,-------------------------------------------. + * | | | PgDn | | Word | Back | | Down | | PgUp | | | | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | | | Left | | | | | | End | | | | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | | | | | | | | | | | Up | Right| | | | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_RAISE] = LAYOUT( + _______, _______, KC_PGDN, _______, C(KC_RGHT), C(KC_LEFT), KC_DOWN, _______, KC_PGUP, _______, _______, _______, + _______, _______, _______, KC_LEFT, _______, _______, _______, _______, ENDW, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, KC_RGHT, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + /* + * Layer template + * + * ,-------------------------------------------. ,-------------------------------------------. + * | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | + * |--------+------+------+------+------+------| |------+------+------+------+------+--------| + * | | | | | | | | | | | | | | + * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| + * | | | | |QWERTY|WRKMAN| | | | | | | | | | | | + * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + */ + [_ADJUST] = LAYOUT( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, QWERTY, WORKMAN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +// /* +// * Layer template +// * +// * ,-------------------------------------------. ,-------------------------------------------. +// * | | | | | | | | | | | | | | +// * |--------+------+------+------+------+------| |------+------+------+------+------+--------| +// * | | | | | | | | | | | | | | +// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------| +// * | | | | | | | | | | | | | | | | | | +// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------' +// * | | | | | | | | | | | | +// * | | | | | | | | | | | | +// * `----------------------------------' `----------------------------------' +// */ +// [_LAYERINDEX] = LAYOUT( +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +// ), +}; + + +layer_state_t layer_state_set_user(layer_state_t state) { + return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); +} + +#ifdef ENCODER_ENABLE +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + // Volume control + if (clockwise) { + tap_code(KC_RGHT); + } else { + tap_code(KC_LEFT); + } + } + else if (index == 1) { + // Page up/Page down + if (clockwise) { + tap_code(KC_DOWN); + } else { + tap_code(KC_UP); + } + } + return true; +} +#endif +#ifdef OLED_ENABLE +bool left = false; +bool right = false; +bool lastl = false; +bool lastr = false; +#endif +bool bksp = false; +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + #ifdef CONSOLE_ENABLE + uprintf("KL: kc: %u, col: %u, row: %u, pressed: %u, total: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed, record->event.key.col + 10 * record->event.key.row); + #endif + #ifdef OLED_ENABLE + if(record->event.pressed){ + uint8_t n = record->event.key.col + 10 * record->event.key.row; + if (n<40) { + left = true; + } + else { + right = true; + } + } + #endif + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + set_single_persistent_default_layer(_QWERTY); + } + return false; + break; + case WORKMAN: + if (record->event.pressed) { + set_single_persistent_default_layer(_WORKMAN); + } + return false; + break; + case SBKSP: + if (record->event.pressed) { + register_code(KC_LSFT); + bksp = true; + } + else { + unregister_code(KC_LSFT); + if (bksp) { + tap_code(KC_BSPC); + } + } + return false; + break; + case ENDW: + if (record->event.pressed) { + register_code(KC_LCTL); + tap_code(KC_RGHT); + unregister_code(KC_LCTL); + tap_code(KC_LEFT); + } + } + bksp = false; + return true; + +} + +#ifdef OLED_ENABLE +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + return OLED_ROTATION_180; +} + + + +char wpm_str[10]; +// WPM-responsive animation stuff here +#define IDLE_FRAMES 2 +#define IDLE_SPEED 10 // below this wpm value your animation will idle + + +#define TAP_FRAMES 3 + +#define ANIM_FRAME_DURATION 400 // how long each frame lasts in ms +// #define SLEEP_TIMER 60000 // should sleep after this period of 0 wpm, needs fixing +#define ANIM_SIZE 896 // number of bytes in array, minimize for adequate firmware size, max is 1024 + +uint32_t anim_timer = 0; +uint32_t anim_sleep = 0; +uint8_t current_idle_frame = 0; +// uint8_t current_prep_frame = 0; // uncomment if PREP_FRAMES >1 +uint8_t current_tap_frame = 0; +// Credit to obosob for initial animation approach. +static void render_anim(void) { + static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = { + { +// 'bongo0', 128x56px +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x60, 0x20, 0x30, 0x30, 0x10, +0x18, 0x08, 0x0c, 0x04, 0x04, 0x04, 0x86, 0x82, 0xc2, 0x42, 0x22, 0x12, 0x12, 0x12, 0x12, 0x14, +0x14, 0x14, 0x14, 0x14, 0x18, 0x19, 0x19, 0x11, 0x11, 0x10, 0x10, 0x00, 0x20, 0xf0, 0x2f, 0x24, +0x66, 0xda, 0xd1, 0x11, 0x91, 0x91, 0x11, 0x11, 0x11, 0x12, 0x1e, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x20, 0x18, 0x04, 0x02, 0x01, 0x80, 0x80, 0x00, 0x40, 0x40, 0xc0, 0x40, 0x30, +0x90, 0x88, 0x44, 0x42, 0x42, 0x41, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0xf0, 0x88, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, +0x00, 0x00, 0x01, 0x03, 0x06, 0x08, 0x71, 0x81, 0x02, 0x06, 0x04, 0x08, 0x10, 0x20, 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, 0x03, 0x82, 0xe2, 0x39, 0x09, 0x05, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x39, +0x1c, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, +0xe0, 0xf0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x18, 0x20, 0x40, 0x80, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, +0x06, 0x38, 0xc0, 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, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x40, 0x20, 0x30, +0x18, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, +0x02, 0x04, 0x08, 0x08, 0x10, 0x08, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xf3, 0x06, 0x0c, 0x10, +0x20, 0x20, 0xc1, 0xff, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x01, 0x02, 0x02, 0xfa, 0x06, 0x06, 0x03, 0x03, 0x02, 0x02, 0x04, 0x18, +0xf0, 0x80, 0xc0, 0x60, 0x20, 0x10, 0x18, 0x0c, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x10, 0x10, +0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x40, +0x40, 0x40, 0x80, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x02, 0x02, 0x02, 0x03, 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, 0xf8, +0x8e, 0x03, 0x01, 0x01, 0x01, 0x03, 0x06, 0x9c, 0xf0, 0x80, 0xc0, 0x40, 0x60, 0x20, 0x30, 0x10, +0x08, 0x0d, 0x07, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x07, 0x04, 0x00, +0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, +0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x01, 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 + }, + { +// 'bongo1', 128x56px +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x40, +0x60, 0x20, 0x20, 0x20, 0x20, 0x00, 0x10, 0x10, 0x10, 0x90, 0x90, 0x90, 0x90, 0x90, 0xa0, 0xa0, +0xa0, 0xa0, 0xa0, 0xc0, 0xc0, 0xc1, 0x80, 0x80, 0x81, 0x81, 0x02, 0x06, 0x84, 0x7c, 0x5f, 0x58, +0x4c, 0x46, 0x42, 0x42, 0x42, 0x43, 0x61, 0x23, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 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, 0xa0, 0x20, 0x20, +0x30, 0x10, 0x10, 0x18, 0x08, 0x08, 0x0c, 0x04, 0x06, 0x02, 0x03, 0x01, 0x08, 0x18, 0x18, 0x28, +0x68, 0x44, 0x84, 0x84, 0x86, 0x02, 0x02, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x09, 0x07, 0x01, 0x01, 0x03, +0x06, 0x06, 0x10, 0x3c, 0x4c, 0xc8, 0x88, 0x08, 0x08, 0x18, 0x10, 0x30, 0x60, 0xc0, 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, 0x01, 0x01, +0x01, 0x01, 0x81, 0xc1, 0x21, 0x31, 0x11, 0x0d, 0x05, 0x01, 0x03, 0x02, 0x06, 0x0e, 0xc6, 0xe4, +0x04, 0x04, 0x04, 0x06, 0x02, 0x03, 0x01, 0x03, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, +0x81, 0x01, 0x01, 0x01, 0x00, 0x00, 0x07, 0x0c, 0x30, 0x40, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x1e, 0x30, 0x40, 0x80, 0x00, 0x00, 0x00, 0x01, 0x07, +0x1c, 0x70, 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, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x40, 0x20, 0x30, +0x18, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, +0x00, 0x00, 0x00, 0x02, 0x04, 0x08, 0x08, 0x08, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, +0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x02, 0x02, +0x06, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x0c, 0x04, 0x0c, 0x3c, 0x15, 0xd3, 0x72, 0x10, 0x20, +0x20, 0x20, 0x21, 0x23, 0x26, 0x24, 0x2c, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x01, 0x02, 0x02, 0xfa, 0x06, 0x06, 0x03, 0x03, 0x02, 0x02, 0x04, 0x18, +0xf0, 0x80, 0xc0, 0x60, 0x20, 0x10, 0x18, 0x0c, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x10, 0x10, +0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x40, +0x40, 0x40, 0x80, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x02, 0x02, 0x02, 0x03, 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, 0xf8, +0x8e, 0x03, 0x01, 0x01, 0x01, 0x03, 0x06, 0x9c, 0xf0, 0x80, 0xc0, 0x40, 0x60, 0x20, 0x30, 0x10, +0x08, 0x0d, 0x07, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x07, 0x04, 0x00, +0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, +0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x01, 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 + } + }; + static const char PROGMEM prep[][ANIM_SIZE] = { + { +// 'bongo2', 128x56px +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x60, 0x20, 0x30, 0x30, 0x10, +0x18, 0x08, 0x0c, 0x04, 0x04, 0x04, 0x86, 0x82, 0xc2, 0x42, 0x22, 0x12, 0x12, 0x12, 0x12, 0x14, +0x14, 0x14, 0x14, 0x14, 0x18, 0x19, 0x19, 0x11, 0x11, 0x10, 0x10, 0x00, 0x20, 0xf0, 0x2f, 0x24, +0x66, 0xda, 0xd1, 0x11, 0x91, 0x91, 0x11, 0x11, 0x11, 0x12, 0x1e, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x20, 0x18, 0x04, 0x02, 0x01, 0x80, 0x80, 0x00, 0x40, 0x40, 0xc0, 0x40, 0x30, +0x90, 0x88, 0x44, 0x42, 0x42, 0x41, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0xf0, 0x88, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, +0x00, 0x00, 0x01, 0x03, 0x06, 0x08, 0x71, 0x81, 0x02, 0x06, 0x04, 0x08, 0x10, 0x20, 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, 0xe0, 0x18, 0x08, 0x0c, 0x04, 0x04, +0x04, 0x07, 0x0a, 0x92, 0xf9, 0xc9, 0x05, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x39, +0x1c, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, +0xe0, 0xf0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x46, 0x78, 0x20, 0x20, 0x20, 0x20, 0x40, +0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, +0x06, 0x38, 0xc0, 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, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, +0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1e, 0x64, 0xc4, 0x04, 0x04, +0x00, 0x02, 0x03, 0x01, 0x00, 0x01, 0x03, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xe0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x60, 0x20, +0x30, 0x19, 0x0e, 0x38, 0xcc, 0x08, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xf3, 0x06, 0x0c, 0x10, +0x20, 0x20, 0xc1, 0xff, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0x05, 0x07, 0x0e, +0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x10, 0x10, +0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x40, +0x40, 0x40, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x83, 0x87, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x38, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 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, +0x01, 0x01, 0x03, 0x02, 0x02, 0x02, 0x03, 0x03, 0x02, 0x04, 0x04, 0x04, 0x04, 0x07, 0x04, 0x00, +0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, +0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + } + }; + static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE] = { + { + // 'bongo3', 128x56px +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x60, 0x20, 0x30, 0x30, 0x10, +0x18, 0x08, 0x0c, 0x04, 0x04, 0x04, 0x86, 0x82, 0xc2, 0x42, 0x22, 0x12, 0x12, 0x12, 0x12, 0x14, +0x14, 0x14, 0x14, 0x14, 0x18, 0x19, 0x19, 0x11, 0x11, 0x10, 0x10, 0x00, 0x20, 0xf0, 0x2f, 0x24, +0x66, 0xda, 0xd1, 0x11, 0x91, 0x91, 0x11, 0x11, 0x11, 0x12, 0x1e, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xc0, 0x20, 0x18, 0x04, 0x02, 0x01, 0x80, 0x80, 0x00, 0x40, 0x40, 0xc0, 0x40, 0x30, +0x90, 0x88, 0x44, 0x42, 0x42, 0x41, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0xf0, 0x88, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, +0x00, 0x00, 0x01, 0x03, 0x06, 0x08, 0x71, 0x81, 0x02, 0x06, 0x04, 0x08, 0x10, 0x20, 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, 0x1f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x03, 0x82, 0xe2, 0x39, 0x09, 0x05, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x39, +0x1c, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, +0xe0, 0xf0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x46, 0x78, 0x20, 0x20, 0x20, 0x20, 0x40, +0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, +0x06, 0x38, 0xc0, 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, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0xe0, 0xf8, 0xf8, 0xf0, +0xe0, 0xe0, 0xc0, 0xc0, 0x80, 0x01, 0x03, 0x1f, 0x0f, 0x07, 0x00, 0x80, 0xc0, 0x40, 0x20, 0x30, +0x18, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xe0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x60, 0x20, +0x30, 0x19, 0x0e, 0x38, 0xcc, 0x08, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xf3, 0x06, 0x0c, 0x10, +0x20, 0x20, 0xc1, 0xff, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x3f, 0x3f, 0x3f, +0x1f, 0x1f, 0x0f, 0x07, 0x01, 0x02, 0x02, 0xfa, 0x06, 0x06, 0x03, 0x03, 0x02, 0x02, 0x04, 0x18, +0xf0, 0x80, 0xc0, 0x60, 0x20, 0x10, 0x18, 0x0c, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x10, 0x10, +0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x40, +0x40, 0x40, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x83, 0x87, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x38, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x80, 0xe0, 0xf0, 0xf8, 0xf9, 0xe1, 0x81, 0x02, 0x02, 0x02, 0x03, 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, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x03, 0x02, 0x02, 0x02, 0x03, 0x03, 0x02, 0x04, 0x04, 0x04, 0x04, 0x07, 0x04, 0x00, +0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, +0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x08, 0x1c, 0x1f, 0x1f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }, + { + // 'bongo4', 128x56px +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x60, 0x20, 0x30, 0x30, 0x10, +0x18, 0x08, 0x0c, 0x04, 0x04, 0x04, 0x86, 0x82, 0xc2, 0x42, 0x22, 0x12, 0x12, 0x12, 0x12, 0x14, +0x14, 0x14, 0x14, 0x14, 0x18, 0x19, 0x19, 0x11, 0x11, 0x10, 0x10, 0x00, 0x20, 0xf0, 0x2f, 0x24, +0x66, 0xda, 0xd1, 0x11, 0x91, 0x91, 0x11, 0x11, 0x11, 0x12, 0x1e, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x20, 0x18, 0x04, 0x02, 0x01, 0x80, 0x80, 0x00, 0x40, 0x40, 0xc0, 0x40, 0x30, +0x90, 0x88, 0x44, 0x42, 0x42, 0x41, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0xf0, 0x88, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, +0x00, 0x00, 0x01, 0x03, 0x06, 0x08, 0x71, 0x81, 0x02, 0x06, 0x04, 0x08, 0x10, 0x20, 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, 0xe0, 0x18, 0x08, 0x0c, 0x04, 0x04, +0x04, 0x07, 0x0a, 0x92, 0xf9, 0xc9, 0x05, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x39, +0x1c, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, +0xe0, 0xf0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x18, 0x20, 0x40, 0x80, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, +0x06, 0x38, 0xc0, 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, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, +0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1e, 0x64, 0xc4, 0x04, 0x04, +0x00, 0x02, 0x03, 0x01, 0x00, 0x01, 0x03, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, +0x02, 0x04, 0x08, 0x08, 0x10, 0x08, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xf3, 0x06, 0x0c, 0x10, +0x20, 0x20, 0xc1, 0xff, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0x05, 0x07, 0x0e, +0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x10, 0x10, +0x10, 0x10, 0x10, 0x10, 0x20, 0xa0, 0xa0, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x40, +0x40, 0x40, 0x80, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x7c, 0x7f, 0x7f, 0x7f, 0x3f, 0x3f, 0x3e, 0x1e, 0x1e, 0x1c, 0x0c, 0x00, 0xf8, +0x8e, 0x03, 0x01, 0x01, 0x01, 0x03, 0x06, 0x9c, 0xf0, 0x80, 0xc0, 0x40, 0x60, 0x20, 0x30, 0x10, +0x08, 0x0d, 0x07, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x07, 0x04, 0x00, +0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, +0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x30, 0x38, 0x38, 0x78, 0x7c, 0x7e, 0xff, 0xff, 0xff, 0xfc, +0xf1, 0xe1, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x03, 0x07, 0x06, 0x0e, +0x1e, 0x3e, 0x3e, 0x7e, 0x7e, 0x1e, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }, + { +// 'bongo5', 128x56px +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x60, 0x20, 0x30, 0x30, 0x10, +0x18, 0x08, 0x0c, 0x04, 0x04, 0x04, 0x86, 0x82, 0xc2, 0x42, 0x22, 0x12, 0x12, 0x12, 0x12, 0x14, +0x14, 0x14, 0x14, 0x14, 0x18, 0x19, 0x19, 0x11, 0x11, 0x10, 0x10, 0x00, 0x20, 0xf0, 0x2f, 0x24, +0x66, 0xda, 0xd1, 0x11, 0x91, 0x91, 0x11, 0x11, 0x11, 0x12, 0x1e, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0xc0, 0x20, 0x18, 0x04, 0x02, 0x01, 0x80, 0x80, 0x00, 0x40, 0x40, 0xc0, 0x40, 0x30, +0x90, 0x88, 0x44, 0x42, 0x42, 0x41, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0xf0, 0x88, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, +0x00, 0x00, 0x01, 0x03, 0x06, 0x08, 0x71, 0x81, 0x02, 0x06, 0x04, 0x08, 0x10, 0x20, 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, 0x1f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x03, 0x82, 0xe2, 0x39, 0x09, 0x05, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x39, +0x1c, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, +0xe0, 0xf0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x18, 0x20, 0x40, 0x80, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, +0x06, 0x38, 0xc0, 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, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0xe0, 0xf8, 0xf8, 0xf0, +0xe0, 0xe0, 0xc0, 0xc0, 0x80, 0x01, 0x03, 0x1f, 0x0f, 0x07, 0x00, 0x80, 0xc0, 0x40, 0x20, 0x30, +0x18, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, +0x02, 0x04, 0x08, 0x08, 0x10, 0x08, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xf3, 0x06, 0x0c, 0x10, +0x20, 0x20, 0xc1, 0xff, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x3f, 0x3f, 0x3f, +0x1f, 0x1f, 0x0f, 0x07, 0x01, 0x02, 0x02, 0xfa, 0x06, 0x06, 0x03, 0x03, 0x02, 0x02, 0x04, 0x18, +0xf0, 0x80, 0xc0, 0x60, 0x20, 0x10, 0x18, 0x0c, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x10, 0x10, +0x10, 0x10, 0x10, 0x10, 0x20, 0xa0, 0xa0, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x40, +0x40, 0x40, 0x80, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x80, 0xe0, 0xf0, 0xf8, 0xf9, 0xe1, 0x81, 0x02, 0x02, 0x02, 0x03, 0x01, 0x01, +0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x7c, 0x7f, 0x7f, 0x7f, 0x3f, 0x3f, 0x3e, 0x1e, 0x1e, 0x1c, 0x0c, 0x00, 0xf8, +0x8e, 0x03, 0x01, 0x01, 0x01, 0x03, 0x06, 0x9c, 0xf0, 0x80, 0xc0, 0x40, 0x60, 0x20, 0x30, 0x10, +0x08, 0x0d, 0x07, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x07, 0x04, 0x00, +0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, +0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x08, 0x1c, 0x1f, 0x1f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x30, 0x38, 0x38, 0x78, 0x7c, 0x7e, 0xff, 0xff, 0xff, 0xfc, +0xf1, 0xe1, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x03, 0x07, 0x06, 0x0e, +0x1e, 0x3e, 0x3e, 0x7e, 0x7e, 0x1e, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + } + }; + + //assumes 1 frame prep stage + void animation_phase(void) { + if(get_current_wpm() <= IDLE_SPEED){ + current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES; + oled_write_raw_P(idle[abs((IDLE_FRAMES-1)-current_idle_frame)], ANIM_SIZE); + } + else { + // if is true 2 frames in a row make it false; + if(left && !lastl && right && !lastr) { + oled_write_raw_P(tap[2], ANIM_SIZE); + } + else if (left && !lastl) { + oled_write_raw_P(tap[0], ANIM_SIZE); + } + else if (right && !lastr) { + oled_write_raw_P(tap[1], ANIM_SIZE); + } + else { + oled_write_raw_P(prep[0], ANIM_SIZE); + left = false; + right = false; + } + lastl = left; + lastr = right; + left = false; + right = false; + } + } + if(get_current_wpm() != 000) { + oled_on(); // not essential but turns on animation OLED with any alpha keypress + if(timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { + anim_timer = timer_read32(); + animation_phase(); + } + anim_sleep = timer_read32(); + } else { + if(timer_elapsed32(anim_sleep) > OLED_TIMEOUT) { + oled_off(); + } else { + if(timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { + anim_timer = timer_read32(); + animation_phase(); + } + } + } +} +bool wpm_keycode_user(uint16_t keycode) { + return true; +} +static void render_logo(void) { + oled_set_cursor(0,0); + oled_write_P(PSTR(" play asc "), false); + oled_set_cursor(3,3); + oled_write_P(PSTR(" play asc "), false); + oled_set_cursor(6,6); + oled_write_P(PSTR(" play asc "), false); +} +bool oled_task_user(void) { + if (is_keyboard_master()) { + render_anim(); + oled_set_cursor(0,7); + uint8_t n = get_current_wpm(); + wpm_str[3] = '\0'; + wpm_str[2] = '0' + n % 10; + wpm_str[1] = '0' + (n /= 10) % 10; + wpm_str[0] = '0' + n / 10 ; + oled_write_P(PSTR("WPM: "), false); + oled_write(wpm_str, false); + oled_write_P(PSTR(" "), false); + switch (get_highest_layer(layer_state)) { + case _QWERTY: + oled_write_ln_P(PSTR("base"), false); + break; + case _LOWER: + oled_write_ln_P(PSTR("LOWER"), false); + break; + case _RAISE: + oled_write_ln_P(PSTR("RAISE"), false); + break; + case _ADJUST: + oled_write_ln_P(PSTR("ADJUST"), false); + break; + default: + oled_write_ln_P(PSTR("Undefined"), false); + } + } else { + render_logo(); + oled_scroll_left(); + + } + return false; +} +#endif diff --git a/keyboards/splitkb/kyria/keymaps/winternebs/rules.mk b/keyboards/splitkb/kyria/keymaps/winternebs/rules.mk new file mode 100755 index 000000000000..47a3988e6e27 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/winternebs/rules.mk @@ -0,0 +1,13 @@ +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enables the use of OLED displays +ENCODER_ENABLE = yes # Enables the use of one or more +NKRO_ENABLE = yes +WPM_ENABLE = yes +CONSOLE_ENABLE = no # Console for debug +AUDIO_ENABLE = no # Audio output +SPACE_CADET_ENABLE = no +EXTRAKEY_ENABLE = no +MOUSEKEY_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +SWAP_HANDS_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/splitkb/kyria/keymaps/zigotica/config.h b/keyboards/splitkb/kyria/keymaps/zigotica/config.h new file mode 100644 index 000000000000..b59e04474b68 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/zigotica/config.h @@ -0,0 +1,44 @@ +/* Copyright 2020 Sergi Meseguer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#define SPLIT_LAYER_STATE_ENABLE +#define SPLIT_LED_STATE_ENABLE +#define MASTER_RIGHT// EE_HANDS MASTER_RIGHT + +// these should work better for homerow modifiers +#define TAPPING_TERM 350 +#define PERMISSIVE_HOLD +#define IGNORE_MOD_TAP_INTERRUPT +#define TAPPING_FORCE_HOLD + +#define LEADER_PER_KEY_TIMING +#define LEADER_TIMEOUT 300 + +#ifdef OLED_ENABLE + #define OLED_DISPLAY_128X64 + #define OLED_TIMEOUT 10000 +#endif + +#ifdef ENCODER_ENABLE + // EC11K encoders have a different resolution than other EC11 encoders. + // When using the default resolution of 4, if you notice your encoder skipping + // every other tick, lower the resolution to 2. + #define ENCODER_RESOLUTION 2 + // Also, flip direction + #define ENCODER_DIRECTION_FLIP +#endif diff --git a/keyboards/splitkb/kyria/keymaps/zigotica/keymap.c b/keyboards/splitkb/kyria/keymaps/zigotica/keymap.c new file mode 100644 index 000000000000..2671f074636b --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/zigotica/keymap.c @@ -0,0 +1,58 @@ +/* Copyright 2020 Sergi Meseguer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "zigotica.h" + +#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [BASE] = LAYOUT_wrapper( + _______, _STENAI_L1, _STENAI_R1, _______, + _______, _STENAI_L2, _STENAI_R2, _______, + _______, _STENAI_L3, _______, _______, _______, _______, _STENAI_R3, _______, + _______, _______, _STENAI_LT, _______, _______, _STENAI_RT, _______, _______ + ), + + [_NUM] = LAYOUT_wrapper( + _______, ____NUM_L1, ____NUM_R1, _______, + _______, ____NUM_L2, ____NUM_R2, _______, + _______, ____NUM_L3, _______, _______, _______, _______, ____NUM_R3, _______, + _______, _______, ____NUM_LT, _______, _______, ____NUM_RT, _______, _______ + ), + + [_NAV] = LAYOUT_wrapper( + _______, ____NAV_L1, ____NAV_R1, _______, + _______, ____NAV_L2, ____NAV_R2, _______, + _______, ____NAV_L3, _______, _______, _______, _______, ____NAV_R3, _______, + _______, _______, ____NAV_LT, _______, _______, ____NAV_RT, _______, _______ + ), + + [_SYM] = LAYOUT_wrapper( + _______, ____SYM_L1, ____SYM_R1, _______, + _______, ____SYM_L2, ____SYM_R2, _______, + _______, ____SYM_L3, _______, _______, _______, _______, ____SYM_R3, _______, + _______, _______, ____SYM_LT, _______, _______, ____SYM_RT, _______, _______ + ), + + [_FN] = LAYOUT_wrapper( + _______, ____FN_L1, ____FN_R1, _______, + _______, ____FN_L2, ____FN_R2, _______, + _______, ____FN_L3, _______, _______, _______, _______, ____FN_R3, _______, + _______, _______, ____FN_LT, _______, _______, ____FN_RT, _______, _______ + ), +}; + diff --git a/keyboards/splitkb/kyria/keymaps/zigotica/oled.c b/keyboards/splitkb/kyria/keymaps/zigotica/oled.c new file mode 100644 index 000000000000..ba1415deedf1 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/zigotica/oled.c @@ -0,0 +1,87 @@ +/* Copyright 2020 Sergi Meseguer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "zigotica.h" + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + return OLED_ROTATION_180; +} + +static void render_kyria_logo(void) { + static const char PROGMEM kyria_logo[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,224,240,112,120, 56, 60, 28, 30, 14, 14, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 30, 28, 60, 56,120,112,240,224,192,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,192,224,240,124, 62, 31, 15, 7, 3, 1,128,192,224,240,120, 56, 60, 28, 30, 14, 14, 7, 7,135,231,127, 31,255,255, 31,127,231,135, 7, 7, 14, 14, 30, 28, 60, 56,120,240,224,192,128, 1, 3, 7, 15, 31, 62,124,240,224,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,240,252,255, 31, 7, 1, 0, 0,192,240,252,254,255,247,243,177,176, 48, 48, 48, 48, 48, 48, 48,120,254,135, 1, 0, 0,255,255, 0, 0, 1,135,254,120, 48, 48, 48, 48, 48, 48, 48,176,177,243,247,255,254,252,240,192, 0, 0, 1, 7, 31,255,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,254,255,255, 1, 1, 7, 30,120,225,129,131,131,134,134,140,140,152,152,177,183,254,248,224,255,255,224,248,254,183,177,152,152,140,140,134,134,131,131,129,225,120, 30, 7, 1, 1,255,255,254, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0,255,255, 0, 0,192,192, 48, 48, 0, 0,240,240, 0, 0, 0, 0, 0, 0,240,240, 0, 0,240,240,192,192, 48, 48, 48, 48,192,192, 0, 0, 48, 48,243,243, 0, 0, 0, 0, 0, 0, 48, 48, 48, 48, 48, 48,192,192, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,127,255,255,128,128,224,120, 30,135,129,193,193, 97, 97, 49, 49, 25, 25,141,237,127, 31, 7,255,255, 7, 31,127,237,141, 25, 25, 49, 49, 97, 97,193,193,129,135, 30,120,224,128,128,255,255,127, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0, 63, 63, 3, 3, 12, 12, 48, 48, 0, 0, 0, 0, 51, 51, 51, 51, 51, 51, 15, 15, 0, 0, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 63, 63, 48, 48, 0, 0, 12, 12, 51, 51, 51, 51, 51, 51, 63, 63, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 63,255,248,224,128, 0, 0, 3, 15, 63,127,255,239,207,141, 13, 12, 12, 12, 12, 12, 12, 12, 30,127,225,128, 0, 0,255,255, 0, 0,128,225,127, 30, 12, 12, 12, 12, 12, 12, 12, 13,141,207,239,255,127, 63, 15, 3, 0, 0,128,224,248,255, 63, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 7, 15, 62,124,248,240,224,192,128, 1, 3, 7, 15, 30, 28, 60, 56,120,112,112,224,224,225,231,254,248,255,255,248,254,231,225,224,224,112,112,120, 56, 60, 28, 30, 15, 7, 3, 1,128,192,224,240,248,124, 62, 15, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 15, 14, 30, 28, 60, 56,120,112,112,112,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,112,112,112,120, 56, 60, 28, 30, 14, 15, 7, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }; + oled_write_raw_P(kyria_logo, sizeof(kyria_logo)); +} + +static void render_qmk_logo(void) { + static const char PROGMEM qmk_logo[] = { + 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, + 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, + 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0}; + + oled_write_P(qmk_logo, false); +} + +static void render_status(void) { + // QMK Logo and version information + render_qmk_logo(); + oled_write_P(PSTR("Kyria v1.2\n\n"), false); + + // Host Keyboard Layer Status + oled_write_P(PSTR("Layer: "), false); + switch (get_highest_layer(layer_state)) { + case BASE: + oled_write_P(PSTR("STENAI\n"), false); + break; + case _NUM: + oled_write_P(PSTR("NUM\n"), false); + break; + case _NAV: + oled_write_P(PSTR("NAV\n"), false); + break; + case _SYM: + oled_write_P(PSTR("SYM\n"), false); + break; + case _FN: + oled_write_P(PSTR("FN\n"), false); + break; + default: + oled_write_P(PSTR("Undef\n"), false); + } + + // Host Keyboard LED Status + led_t led_state = host_keyboard_led_state(); + oled_write_P(led_state.num_lock ? PSTR("NUMLCK ") : PSTR(" "), false); + oled_write_P(led_state.caps_lock ? PSTR("CAPLCK ") : PSTR(" "), false); + oled_write_P(led_state.scroll_lock ? PSTR("SCRLCK ") : PSTR(" "), false); +} + +bool oled_task_user(void) { + if (!is_keyboard_left()) { + render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) + } else { + render_kyria_logo(); + } + return false; +} diff --git a/keyboards/splitkb/kyria/keymaps/zigotica/oled.h b/keyboards/splitkb/kyria/keymaps/zigotica/oled.h new file mode 100644 index 000000000000..2422c68f2869 --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/zigotica/oled.h @@ -0,0 +1,18 @@ +/* Copyright 2020 Sergi Meseguer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once +#include "zigotica.h" diff --git a/keyboards/splitkb/kyria/keymaps/zigotica/rules.mk b/keyboards/splitkb/kyria/keymaps/zigotica/rules.mk new file mode 100644 index 000000000000..29d98d7019bf --- /dev/null +++ b/keyboards/splitkb/kyria/keymaps/zigotica/rules.mk @@ -0,0 +1,10 @@ +OLED_ENABLE = yes +ENCODER_ENABLE = no +RGBLIGHT_ENABLE = no + +COMBO_ENABLE = yes +TAP_DANCE_ENABLE = yes +LEADER_ENABLE = no +UNICODE_ENABLE = no +MOUSEKEY_ENABLE = yes + diff --git a/keyboards/kyria/kyria.c b/keyboards/splitkb/kyria/kyria.c similarity index 99% rename from keyboards/kyria/kyria.c rename to keyboards/splitkb/kyria/kyria.c index 1692093fb25c..21ed5e84c8f9 100644 --- a/keyboards/kyria/kyria.c +++ b/keyboards/splitkb/kyria/kyria.c @@ -14,4 +14,3 @@ * along with this program. If not, see . */ #include "kyria.h" - diff --git a/keyboards/kyria/kyria.h b/keyboards/splitkb/kyria/kyria.h similarity index 96% rename from keyboards/kyria/kyria.h rename to keyboards/splitkb/kyria/kyria.h index c1db6307e20a..2b1a29815294 100644 --- a/keyboards/kyria/kyria.h +++ b/keyboards/splitkb/kyria/kyria.h @@ -17,7 +17,7 @@ #include "quantum.h" -#if defined(KEYBOARD_kyria_rev1) +#if defined(KEYBOARD_splitkb_kyria_rev1) # include "rev1.h" #endif diff --git a/keyboards/splitkb/kyria/readme.md b/keyboards/splitkb/kyria/readme.md new file mode 100644 index 000000000000..7ecf3946f7c7 --- /dev/null +++ b/keyboards/splitkb/kyria/readme.md @@ -0,0 +1,41 @@ +# Kyria + +![Kyria](https://cdn.shopify.com/s/files/1/0227/9171/6941/products/PlateCase_f1870016-98b8-43a9-8aed-3eaf073b367b_900x.jpg?v=1568934600) + +An ergonomical 40% split keyboard + +Keyboard Maintainer: [splitkb.com](https://github.com/splitkb) +Hardware Supported: Pro Micro 5V/16MHz and compatible. +Hardware Availability: [splitkb.com](https://splitkb.com) and partners. + +Make example for this keyboard (after setting up your build environment): + + make splitkb/kyria/rev1:default + make splitkb/kyria/rev1/proton_c:default + +Example of flashing this keyboard: + + make splitkb/kyria/rev1:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +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 new file mode 100644 index 000000000000..e19e8dfa9c24 --- /dev/null +++ b/keyboards/splitkb/kyria/rev1/config.h @@ -0,0 +1,97 @@ +/* +Copyright 2019 Thomas Baart + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x8D1D +#define PRODUCT_ID 0x9D9D +#define DEVICE_VER 0x0001 +#define MANUFACTURER splitKB +#define PRODUCT Kyria + +/* key matrix size */ +/* Rows are doubled up */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 8 + +// wiring +#define MATRIX_ROW_PINS \ + { B4, E6, D7, D4 } +#define MATRIX_COL_PINS \ + { B6, B2, B3, B1, F7, F6, F5, F4 } +#define UNUSED_PINS + +#define ENCODERS_PAD_A \ + { C6 } +#define ENCODERS_PAD_B \ + { B5 } +#define ENCODERS_PAD_A_RIGHT \ + { B5 } +#define ENCODERS_PAD_B_RIGHT \ + { C6 } + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ + +#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 + +#ifdef OLED_ENABLE +# define OLED_DISPLAY_128X64 +# define SPLIT_OLED_ENABLE +#endif + +/* RGB matrix support */ +#ifdef RGB_MATRIX_ENABLE +# define SPLIT_TRANSPORT_MIRROR +# define DRIVER_LED_TOTAL RGBLED_NUM // Number of LEDs +# define RGB_MATRIX_SPLIT { 10, 10 } +# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 170 +# define RGB_DISABLE_WHEN_USB_SUSPENDED +#endif diff --git a/keyboards/splitkb/kyria/rev1/proton_c/chconf.h b/keyboards/splitkb/kyria/rev1/proton_c/chconf.h new file mode 100644 index 000000000000..7ca1d3d24310 --- /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 . + */ + +#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 000000000000..99f2e11b9a3c --- /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 . + */ +#pragma once + +#define HAL_USE_I2C TRUE +#define HAL_USE_PWM TRUE +#define HAL_USE_SERIAL TRUE + +#include_next 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 000000000000..58348af390cb --- /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 . + */ +#pragma once + +#include_next + +#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 000000000000..628fabb2e530 --- /dev/null +++ b/keyboards/splitkb/kyria/rev1/proton_c/proton_c.c @@ -0,0 +1,17 @@ +/* Copyright 2019 Thomas Baart + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "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 000000000000..718f5636ff17 --- /dev/null +++ b/keyboards/splitkb/kyria/rev1/proton_c/proton_c.h @@ -0,0 +1,19 @@ +/* Copyright 2019 Thomas Baart + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "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 000000000000..9e0942398f8c --- /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.c b/keyboards/splitkb/kyria/rev1/rev1.c new file mode 100644 index 000000000000..b2641fb40e30 --- /dev/null +++ b/keyboards/splitkb/kyria/rev1/rev1.c @@ -0,0 +1,154 @@ +/* Copyright 2019 Thomas Baart + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "rev1.h" + +#ifdef SWAP_HANDS_ENABLE +// clang-format off +__attribute__ ((weak)) const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { + {{0, 4}, {1, 4}, {2, 4}, {3, 4}, {4, 4}, {5, 4}, {6, 4}, {7, 4}}, + {{0, 5}, {1, 5}, {2, 5}, {3, 5}, {4, 5}, {5, 5}, {6, 5}, {7, 5}}, + {{0, 6}, {1, 6}, {2, 6}, {3, 6}, {4, 6}, {5, 6}, {6, 6}, {7, 6}}, + {{0, 7}, {1, 7}, {2, 7}, {3, 7}, {4, 7}, {5, 7}, {6, 7}, {7, 7}}, + {{0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0}, {6, 0}, {7, 0}}, + {{0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}, {5, 1}, {6, 1}, {7, 1}}, + {{0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}, {5, 2}, {6, 2}, {7, 2}}, + {{0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}, {5, 3}, {6, 3}, {7, 3}} +}; +// clang-format on +#endif + +#ifdef RGB_MATRIX_ENABLE +/* Map physical under glow LEDs for RGB matrix support */ +led_config_t g_led_config = { { + // Key Matrix to LED Index + { NO_LED, NO_LED, NO_LED, 4, NO_LED, NO_LED, 5, 9 }, + { NO_LED, NO_LED, 3, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }, + { NO_LED, 0, NO_LED, NO_LED, NO_LED, 7, 6, 8 }, + { NO_LED, NO_LED, 1, 2, NO_LED, NO_LED, NO_LED, NO_LED }, + { NO_LED, NO_LED, NO_LED, 14, NO_LED, NO_LED, 15, 19 }, + { NO_LED, NO_LED, 13, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }, + { NO_LED, 10, NO_LED, NO_LED, NO_LED, 17, 16, 18 }, + { NO_LED, NO_LED, 11, 12, NO_LED, NO_LED, NO_LED, NO_LED }, +}, { + // LED Index to Physical Position + {91,40}, {77,56}, {63,56}, {77,24}, {63,8}, {21,8}, {21,40}, {35,40}, {7,40}, {7,8}, + {133,40}, {147,56}, {161,56}, {147,24}, {161,8}, {203,8}, {203,40}, {189,40}, {217,40}, {217,8} +}, { + // LED Index to Flag + LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, + LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, + LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, + LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL +} }; +#endif + +#ifdef OLED_ENABLE +oled_rotation_t oled_init_kb(oled_rotation_t rotation) { + return OLED_ROTATION_180; +} + +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } + if (is_keyboard_master()) { + // QMK Logo and version information + // clang-format off + static const char PROGMEM qmk_logo[] = { + 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, + 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, + 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0}; + // clang-format on + + oled_write_P(qmk_logo, false); + oled_write_P(PSTR("Kyria rev1.0\n\n"), false); + + // Host Keyboard Layer Status + oled_write_P(PSTR("Layer: "), false); + switch (get_highest_layer(layer_state | default_layer_state)) { + case 0: + oled_write_P(PSTR("QWERTY\n"), false); + break; + case 1: + oled_write_P(PSTR("Dvorak\n"), false); + break; + case 2: + oled_write_P(PSTR("Colemak-DH\n"), false); + break; + case 3: + oled_write_P(PSTR("Nav\n"), false); + break; + case 4: + oled_write_P(PSTR("Sym\n"), false); + break; + case 5: + oled_write_P(PSTR("Function\n"), false); + break; + case 6: + oled_write_P(PSTR("Adjust\n"), false); + break; + default: + oled_write_P(PSTR("Undefined\n"), false); + } + + // Host Keyboard LED Status + led_t led_usb_state = host_keyboard_led_state(); + oled_write_P(led_usb_state.num_lock ? PSTR("NUMLCK ") : PSTR(" "), false); + oled_write_P(led_usb_state.caps_lock ? PSTR("CAPLCK ") : PSTR(" "), false); + oled_write_P(led_usb_state.scroll_lock ? PSTR("SCRLCK ") : PSTR(" "), false); + } else { + // clang-format off + static const char PROGMEM kyria_logo[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,224,240,112,120, 56, 60, 28, 30, 14, 14, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 30, 28, 60, 56,120,112,240,224,192,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,192,224,240,124, 62, 31, 15, 7, 3, 1,128,192,224,240,120, 56, 60, 28, 30, 14, 14, 7, 7,135,231,127, 31,255,255, 31,127,231,135, 7, 7, 14, 14, 30, 28, 60, 56,120,240,224,192,128, 1, 3, 7, 15, 31, 62,124,240,224,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,240,252,255, 31, 7, 1, 0, 0,192,240,252,254,255,247,243,177,176, 48, 48, 48, 48, 48, 48, 48,120,254,135, 1, 0, 0,255,255, 0, 0, 1,135,254,120, 48, 48, 48, 48, 48, 48, 48,176,177,243,247,255,254,252,240,192, 0, 0, 1, 7, 31,255,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,254,255,255, 1, 1, 7, 30,120,225,129,131,131,134,134,140,140,152,152,177,183,254,248,224,255,255,224,248,254,183,177,152,152,140,140,134,134,131,131,129,225,120, 30, 7, 1, 1,255,255,254, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0,255,255, 0, 0,192,192, 48, 48, 0, 0,240,240, 0, 0, 0, 0, 0, 0,240,240, 0, 0,240,240,192,192, 48, 48, 48, 48,192,192, 0, 0, 48, 48,243,243, 0, 0, 0, 0, 0, 0, 48, 48, 48, 48, 48, 48,192,192, 0, 0, 0, 0, 0, + 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,127,255,255,128,128,224,120, 30,135,129,193,193, 97, 97, 49, 49, 25, 25,141,237,127, 31, 7,255,255, 7, 31,127,237,141, 25, 25, 49, 49, 97, 97,193,193,129,135, 30,120,224,128,128,255,255,127, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0, 63, 63, 3, 3, 12, 12, 48, 48, 0, 0, 0, 0, 51, 51, 51, 51, 51, 51, 15, 15, 0, 0, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 63, 63, 48, 48, 0, 0, 12, 12, 51, 51, 51, 51, 51, 51, 63, 63, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 63,255,248,224,128, 0, 0, 3, 15, 63,127,255,239,207,141, 13, 12, 12, 12, 12, 12, 12, 12, 30,127,225,128, 0, 0,255,255, 0, 0,128,225,127, 30, 12, 12, 12, 12, 12, 12, 12, 13,141,207,239,255,127, 63, 15, 3, 0, 0,128,224,248,255, 63, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 7, 15, 62,124,248,240,224,192,128, 1, 3, 7, 15, 30, 28, 60, 56,120,112,112,224,224,225,231,254,248,255,255,248,254,231,225,224,224,112,112,120, 56, 60, 28, 30, 15, 7, 3, 1,128,192,224,240,248,124, 62, 15, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 15, 14, 30, 28, 60, 56,120,112,112,112,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,112,112,112,120, 56, 60, 28, 30, 14, 15, 7, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }; + // clang-format on + oled_write_raw_P(kyria_logo, sizeof(kyria_logo)); + } + return false; +} +#endif + +#ifdef ENCODER_ENABLE +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { + return false; + } + + if (index == 0) { + // Volume control + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else if (index == 1) { + // Page up/Page down + if (clockwise) { + tap_code(KC_PGDN); + } else { + tap_code(KC_PGUP); + } + } + return true; +} +#endif diff --git a/keyboards/splitkb/kyria/rev1/rev1.h b/keyboards/splitkb/kyria/rev1/rev1.h new file mode 100644 index 000000000000..8a5fbeb21d2f --- /dev/null +++ b/keyboards/splitkb/kyria/rev1/rev1.h @@ -0,0 +1,70 @@ +/* Copyright 2019 Thomas Baart + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "kyria.h" +#ifdef KEYBOARD_splitkb_kyria_rev1_proton_c +# include "proton_c.h" +#endif + +/* This a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + L00, L01, L02, L03, L04, L05, R06, R07, R08, R09, R10, R11, \ + L12, L13, L14, L15, L16, L17, R18, R19, R20, R21, R22, R23, \ + L24, L25, L26, L27, L28, L29, L30, L31, R32, R33, R34, R35, R36, R37, R38, R39, \ + L40, L41, L42, L43, L44, R45, R46, R47, R48, R49 \ +) \ +{ \ + { KC_NO, KC_NO, L05, L04, L03, L02, L01, L00 }, \ + { KC_NO, KC_NO, L17, L16, L15, L14, L13, L12 }, \ + { L31, L30, L29, L28, L27, L26, L25, L24 }, \ + { L44, L43, L42, L41, L40, KC_NO, KC_NO, KC_NO }, \ + { KC_NO, KC_NO, R06, R07, R08, R09, R10, R11 }, \ + { KC_NO, KC_NO, R18, R19, R20, R21, R22, R23 }, \ + { R32, R33, R34, R35, R36, R37, R38, R39 }, \ + { R45, R46, R47, R48, R49, KC_NO, KC_NO, KC_NO }, \ +} + +#define LAYOUT_stack( \ + L00, L01, L02, L03, L04, L05, \ + L12, L13, L14, L15, L16, L17, \ + L24, L25, L26, L27, L28, L29, L30, L31, \ + L40, L41, L42, L43, L44, \ + \ + R06, R07, R08, R09, R10, R11, \ + R18, R19, R20, R21, R22, R23, \ + R32, R33, R34, R35, R36, R37, R38, R39, \ + R45, R46, R47, R48, R49 \ +) \ +{ \ + { KC_NO, KC_NO, L05, L04, L03, L02, L01, L00 }, \ + { KC_NO, KC_NO, L17, L16, L15, L14, L13, L12 }, \ + { L31, L30, L29, L28, L27, L26, L25, L24 }, \ + { L44, L43, L42, L41, L40, KC_NO, KC_NO, KC_NO }, \ + { KC_NO, KC_NO, R06, R07, R08, R09, R10, R11 }, \ + { KC_NO, KC_NO, R18, R19, R20, R21, R22, R23 }, \ + { R32, R33, R34, R35, R36, R37, R38, R39 }, \ + { R45, R46, R47, R48, R49, KC_NO, KC_NO, KC_NO }, \ +} + +#define LAYOUT_split_3x6_5 LAYOUT diff --git a/keyboards/splitkb/kyria/rev1/rules.mk b/keyboards/splitkb/kyria/rev1/rules.mk new file mode 100644 index 000000000000..cc2cbba604bc --- /dev/null +++ b/keyboards/splitkb/kyria/rev1/rules.mk @@ -0,0 +1,8 @@ +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enables the use of OLED displays +ENCODER_ENABLE = yes # ENables the use of one or more encoders +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +RGB_MATRIX_ENABLE = no # Enable keyboard RGB matrix (do not use together with RGBLIGHT_ENABLE) +RGB_MATRIX_DRIVER = WS2812 # RGB matrix driver support + +RGB_MATRIX_SUPPORTED = yes diff --git a/keyboards/splitkb/kyria/rules.mk b/keyboards/splitkb/kyria/rules.mk new file mode 100644 index 000000000000..f2df967deab1 --- /dev/null +++ b/keyboards/splitkb/kyria/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output +SPLIT_KEYBOARD = yes # Split common +LTO_ENABLE = yes + +DEFAULT_FOLDER = splitkb/kyria/rev1 diff --git a/keyboards/splitkb/zima/config.h b/keyboards/splitkb/zima/config.h index fcfa37ff351b..7e79e7f35996 100644 --- a/keyboards/splitkb/zima/config.h +++ b/keyboards/splitkb/zima/config.h @@ -20,15 +20,15 @@ along with this program. If not, see . #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0xF75B -#define DEVICE_VER 0x0001 +#define VENDOR_ID 0x8D1D +#define PRODUCT_ID 0xF75B +#define DEVICE_VER 0x0001 #define MANUFACTURER splitkb -#define PRODUCT Zima +#define PRODUCT Zima /* key matrix size */ -#define MATRIX_ROWS 4 -#define MATRIX_COLS 3 +#define MATRIX_ROWS 4 +#define MATRIX_COLS 3 /* * Keyboard Matrix Assignments @@ -37,9 +37,8 @@ along with this program. If not, see . { C6, D6, D5 }, \ { C7, F7, D4 }, \ { E6, F5, F6 }, \ - { F0, F1, F4 } \ + { F0, F1, F4 }, \ } - #define UNUSED_PINS #define ENCODERS_PAD_A { B4 } @@ -53,11 +52,11 @@ along with this program. If not, see . #define AUDIO_CLICKY #define NO_MUSIC_MODE -#define RGB_DI_PIN B5 -#define RGBLED_NUM 5 -#define RGBLIGHT_HUE_STEP 8 -#define RGBLIGHT_SAT_STEP 8 -#define RGBLIGHT_VAL_STEP 8 +#define RGB_DI_PIN B5 +#define RGBLED_NUM 5 +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ #define RGBLIGHT_EFFECT_BREATHING @@ -67,7 +66,7 @@ along with this program. If not, see . #define RGBLIGHT_EFFECT_TWINKLE /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 5 +#define DEBOUNCE 5 /* define if matrix has ghost (lacks anti-ghosting diodes) */ //#define MATRIX_HAS_GHOST @@ -77,16 +76,16 @@ along with this program. If not, see . /* Locking resynchronize hack */ // #define LOCKING_RESYNC_ENABLE -#define FB_ERM_LRA 0 -#define FB_BRAKEFACTOR 3 /* For 1x:0, 2x:1, 3x:2, 4x:3, 6x:4, 8x:5, 16x:6, Disable Braking:7 */ -#define FB_LOOPGAIN 1 /* For Low:0, Medium:1, High:2, Very High:3 */ +#define FB_ERM_LRA 0 +#define FB_BRAKEFACTOR 3 /* For 1x:0, 2x:1, 3x:2, 4x:3, 6x:4, 8x:5, 16x:6, Disable Braking:7 */ +#define FB_LOOPGAIN 1 /* For Low:0, Medium:1, High:2, Very High:3 */ /* Please refer to your datasheet for the optimal setting for your specific motor. */ -#define RATED_VOLTAGE 3 -#define V_PEAK 5 +#define RATED_VOLTAGE 3 +#define V_PEAK 5 -#define DRV_GREETING alert_750ms -#define DRV_MODE_DEFAULT buzz +#define DRV_GREETING alert_750ms +#define DRV_MODE_DEFAULT buzz // EC11K encoders have a different resolution than other EC11 encoders. // When using the default resolution of 4, if you notice your encoder skipping // every other tick, lower the resolution to 2. diff --git a/keyboards/splitkb/zima/info.json b/keyboards/splitkb/zima/info.json index de1a909c30e3..8e3ca411a5ff 100644 --- a/keyboards/splitkb/zima/info.json +++ b/keyboards/splitkb/zima/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Zima", "url": "splitkb.com", "maintainer": "splitkb.com, drashna", - "width": 3, - "height": 4, "layouts": { "LAYOUT_ortho_4x3": { "layout": [ diff --git a/keyboards/splitkb/zima/keymaps/drashna/config.h b/keyboards/splitkb/zima/keymaps/drashna/config.h index 91d657eda1c5..8d0908182e35 100644 --- a/keyboards/splitkb/zima/keymaps/drashna/config.h +++ b/keyboards/splitkb/zima/keymaps/drashna/config.h @@ -30,3 +30,8 @@ // # define OLED_LOGO_CORNE // # define OLED_LOGO_GOTHAM #define OLED_LOGO_SCIFI + +#define ENCODER_RESOLUTION 2 + +#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_TWINKLE+4 +#define RGBLIGHT_DEFAULT_HUE 213 diff --git a/keyboards/splitkb/zima/keymaps/drashna/keymap.c b/keyboards/splitkb/zima/keymaps/drashna/keymap.c index d9e1f44e2936..b3133c601b74 100644 --- a/keyboards/splitkb/zima/keymaps/drashna/keymap.c +++ b/keyboards/splitkb/zima/keymaps/drashna/keymap.c @@ -15,13 +15,13 @@ * along with this program. If not, see . */ #include QMK_KEYBOARD_H -#include #ifdef HAPTIC_ENABLE # include "haptic.h" extern haptic_config_t haptic_config; #endif +// clang-format off const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_ortho_4x3( /* Base */ KC_MUTE, TG(1), TG(2), @@ -43,12 +43,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; +#ifdef ENCODER_MAP_ENABLE +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [0] = { { KC_DOWN, KC_UP } }, + [1] = { { KC_VOLD, KC_VOLU } }, + [2] = { { RGB_MOD, RGB_RMOD} }, +}; +#endif +// clang-format on -static bool is_asleep = false; +static bool is_asleep = false; static uint32_t oled_timer; void render_oled_logo(void) { - // clang-format off + // clang-format off static const char PROGMEM qmk_logo[] = { 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, @@ -68,14 +76,12 @@ void render_user_status(void) { oled_write_P(nukem_good[0], haptic_config.enable); } -void keyboard_post_init_user(void) { - oled_scroll_set_speed(0); -} +void keyboard_post_init_user(void) { oled_scroll_set_speed(0); } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_asleep) { oled_off(); - return; + return false;; } if (timer_elapsed32(oled_timer) < 30000) { @@ -83,15 +89,35 @@ void oled_task_user(void) { oled_scroll_off(); oled_write_P(PSTR("SplitKB's Zima"), false); char layer[2] = {0}; - snprintf(layer, sizeof(layer), "%d", get_highest_layer(layer_state)); + uint8_t n = get_highest_layer(layer_state); + layer[1] = '\0'; + layer[0] = '0' + n % 10; oled_write_P(PSTR(" L:"), false); oled_write_ln(layer, false); oled_write_ln_P(PSTR("--------------"), false); if (rgblight_is_enabled()) { oled_write_P(PSTR("HSV: "), false); - char rgbs[14]; - snprintf(rgbs, sizeof(rgbs), "%3d, %3d, %3d", rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val()); - oled_write_ln(rgbs, false); + char hsv_char[4]; + n = rgblight_get_hue(); + hsv_char[3] = '\0'; + hsv_char[2] = '0' + n % 10; + hsv_char[1] = (n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' '; + hsv_char[0] = n / 10 ? '0' + n / 10 : ' '; + oled_write(hsv_char, false); + oled_write_P(PSTR(", "), false); + n = rgblight_get_sat(); + hsv_char[3] = '\0'; + hsv_char[2] = '0' + n % 10; + hsv_char[1] = (n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' '; + hsv_char[0] = n / 10 ? '0' + n / 10 : ' '; + oled_write(hsv_char, false); + oled_write_P(PSTR(", "), false); + n = rgblight_get_val(); + hsv_char[3] = '\0'; + hsv_char[2] = '0' + n % 10; + hsv_char[1] = (n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' '; + hsv_char[0] = n / 10 ? '0' + n / 10 : ' '; + oled_write_ln(hsv_char, false); } else { oled_write_ln_P(PSTR("RGB LIGHT DISABLED"), false); } @@ -105,15 +131,12 @@ void oled_task_user(void) { oled_off(); } } + return false; } -void suspend_power_down_user(void) { - is_asleep = true; -} +void suspend_power_down_user(void) { is_asleep = true; } -void suspend_wakeup_init_user(void) { - is_asleep = false; -} +void suspend_wakeup_init_user(void) { is_asleep = false; } bool process_record_user(uint16_t keycode, keyrecord_t* record) { oled_timer = timer_read32(); @@ -121,12 +144,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t* record) { return true; } - bool encoder_update_user(uint8_t index, bool clockwise) { + oled_timer = timer_read32(); if (clockwise) { - tap_code16(KC_VOLU); + tap_code_delay(KC_VOLU, 10); } else { - tap_code16(KC_VOLD); + tap_code_delay(KC_VOLD, 10); } - return true; + return false; } diff --git a/keyboards/splitkb/zima/keymaps/drashna/rules.mk b/keyboards/splitkb/zima/keymaps/drashna/rules.mk index b9a1f7f25638..b9dc0091597d 100644 --- a/keyboards/splitkb/zima/keymaps/drashna/rules.mk +++ b/keyboards/splitkb/zima/keymaps/drashna/rules.mk @@ -1,2 +1,3 @@ # is intentional. won't compile under size, otherwise. USER_NAME := not_drashna +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/splitkb/zima/keymaps/via/config.h b/keyboards/splitkb/zima/keymaps/via/config.h new file mode 100644 index 000000000000..5a0e407c95ef --- /dev/null +++ b/keyboards/splitkb/zima/keymaps/via/config.h @@ -0,0 +1,20 @@ +/* Copyright 2019 Thomas Baart + * Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define DYNAMIC_KEYMAP_LAYER_COUNT 8 diff --git a/keyboards/splitkb/zima/keymaps/via/keymap.c b/keyboards/splitkb/zima/keymaps/via/keymap.c new file mode 100644 index 000000000000..e9fb001bbe7d --- /dev/null +++ b/keyboards/splitkb/zima/keymaps/via/keymap.c @@ -0,0 +1,68 @@ +/* Copyright 2019 Thomas Baart + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT_ortho_4x3(/* Base */ + KC_MUTE, TG(1), TG(2), + KC_P7, KC_P8, KC_P9, + KC_P4, KC_P5, KC_P6, + KC_P1, KC_P2, KC_P3 + ), + [1] = LAYOUT_ortho_4x3(/* Layer 1 */ + RESET, _______, XXXXXXX, + AU_ON, AU_OFF, XXXXXXX, + CK_TOGG, XXXXXXX, CK_UP, + CK_RST, XXXXXXX, CK_DOWN + ), + [2] = LAYOUT_ortho_4x3(/* Layer 2*/ + RGB_TOG, RGB_MOD, _______, + RGB_HUI, RGB_SAI, RGB_VAI, + RGB_HUD, RGB_SAD, RGB_VAD, + HPT_TOG, HPT_FBK, HPT_CONT + ), + [3] = LAYOUT_ortho_4x3( + _______, _______, _______, + _______, _______, _______, + _______, _______, _______, + _______, _______, _______ + ), + [4] = LAYOUT_ortho_4x3( + _______, _______, _______, + _______, _______, _______, + _______, _______, _______, + _______, _______, _______ + ), + [5] = LAYOUT_ortho_4x3( + _______, _______, _______, + _______, _______, _______, + _______, _______, _______, + _______, _______, _______ + ), + [6] = LAYOUT_ortho_4x3( + _______, _______, _______, + _______, _______, _______, + _______, _______, _______, + _______, _______, _______ + ), + [7] = LAYOUT_ortho_4x3( + _______, _______, _______, + _______, _______, _______, + _______, _______, _______, + _______, _______, _______ + ), +}; diff --git a/keyboards/splitkb/zima/keymaps/via/rules.mk b/keyboards/splitkb/zima/keymaps/via/rules.mk new file mode 100644 index 000000000000..5ddd38bb0fdb --- /dev/null +++ b/keyboards/splitkb/zima/keymaps/via/rules.mk @@ -0,0 +1,6 @@ +VIA_ENABLE = yes +HAPTIC_ENABLE = no + +SPACE_CADET_ENABLE = no +GRAVE_ESC_ENABLE = no +MAGIC_ENABLE = no diff --git a/keyboards/splitkb/zima/rules.mk b/keyboards/splitkb/zima/rules.mk index 71c9dc6e8c3d..a33f7bd1364b 100644 --- a/keyboards/splitkb/zima/rules.mk +++ b/keyboards/splitkb/zima/rules.mk @@ -7,22 +7,21 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = yes # Audio output ENCODER_ENABLE = yes # ENables the use of one or more encoders -OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays -HAPTIC_ENABLE += DRV2605L # Supported but not included by defaut +OLED_ENABLE = yes +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/splitkb/zima/zima.c b/keyboards/splitkb/zima/zima.c index 74f9c84a7914..f39e3a39ebb5 100644 --- a/keyboards/splitkb/zima/zima.c +++ b/keyboards/splitkb/zima/zima.c @@ -21,7 +21,7 @@ extern haptic_config_t haptic_config; #endif -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE static bool is_asleep = false; static uint32_t oled_timer; @@ -35,12 +35,17 @@ void suspend_wakeup_init_kb(void) { suspend_wakeup_init_user(); } -__attribute__((weak)) oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; } +oled_rotation_t oled_init_kb(oled_rotation_t rotation) { + return OLED_ROTATION_180; +} -__attribute__((weak)) void oled_task_user(void) { +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } if (is_asleep) { oled_off(); - return; + return false; } if (timer_elapsed32(oled_timer) < 30000) { @@ -83,6 +88,7 @@ __attribute__((weak)) void oled_task_user(void) { oled_off(); } } + return false; } bool process_record_kb(uint16_t keycode, keyrecord_t* record) { @@ -94,7 +100,7 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record) { #ifdef ENCODER_ENABLE bool encoder_update_kb(uint8_t index, bool clockwise) { -# ifdef OLED_DRIVER_ENABLE +# ifdef OLED_ENABLE oled_timer = timer_read32(); # endif # if defined(AUDIO_ENABLE) && defined(AUDIO_CLICKY) diff --git a/keyboards/splitography/config.h b/keyboards/splitography/config.h new file mode 100644 index 000000000000..19afdec862c2 --- /dev/null +++ b/keyboards/splitography/config.h @@ -0,0 +1,55 @@ +/* Copyright 2021 Alexis Jeandeau + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define PRODUCT Splitography + +/* Key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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 + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO diff --git a/keyboards/splitography/info.json b/keyboards/splitography/info.json new file mode 100644 index 000000000000..2d07607c2916 --- /dev/null +++ b/keyboards/splitography/info.json @@ -0,0 +1,302 @@ +{ + "manufacturer": "SOFT/HRUF", + "keyboard_name": "Splitography", + "url": "https://softhruf.love/collections/writers", + "maintainer": "qmk", + "processor": "atmega32u4", + "diode_direction": "COL2ROW", + "features": { + "steno": true, + "nkro": true, + "bootmagic": true, + "mousekey": false, + "extrakey": true, + "console": false, + "audio": false, + "command": false, + "backlight": false + }, + "matrix_pins": { + "rows": ["D0", "D1", "D2", "D3"], + "cols": ["F0", "F1", "F4", "F5", "F6", "F7", "C7", "C6", "B6", "B5", "B4", "D7"] + }, + "usb": { + "vid": "0xFEED", + "pid": "0x6060", + "device_ver": "0x0001" + }, + "layouts": { + "LAYOUT": { + "layout": [ + { + "x": 0, + "y": 0, + "h": 0.6, + "matrix": [0, 0], + "label": "Esc" + }, + { + "x": 1, + "y": 0, + "h": 0.6, + "matrix": [0, 1], + "label": "Q" + }, + { + "x": 2, + "y": 0, + "h": 0.6, + "matrix": [0, 2], + "label": "W" + }, + { + "x": 3, + "y": 0, + "h": 0.6, + "matrix": [0, 3], + "label": "E" + }, + { + "x": 4, + "y": 0, + "h": 0.6, + "matrix": [0, 4], + "label": "R" + }, + { + "x": 5, + "y": 0, + "h": 0.6, + "matrix": [0, 5], + "label": "T" + }, + { + "x": 8, + "y": 0, + "h": 0.6, + "matrix": [0, 6], + "label": "Y" + }, + { + "x": 9, + "y": 0, + "h": 0.6, + "matrix": [0, 7], + "label": "U" + }, + { + "x": 10, + "y": 0, + "h": 0.6, + "matrix": [0, 8], + "label": "I" + }, + { + "x": 11, + "y": 0, + "h": 0.6, + "matrix": [0, 9], + "label": "O" + }, + { + "x": 12, + "y": 0, + "h": 0.6, + "matrix": [0, 10], + "label": "P" + }, + { + "x": 13, + "y": 0, + "h": 0.6, + "matrix": [0, 11], + "label": "Backspace" + }, + { + "x": 0, + "y": 0.6, + "matrix": [1, 0], + "label": "Alt" + }, + { + "x": 1, + "y": 0.6, + "matrix": [1, 1], + "label": "A" + }, + { + "x": 2, + "y": 0.6, + "matrix": [1, 2], + "label": "S" + }, + { + "x": 3, + "y": 0.6, + "matrix": [1, 3], + "label": "D" + }, + { + "x": 4, + "y": 0.6, + "matrix": [1, 4], + "label": "F" + }, + { + "x": 5, + "y": 0.6, + "matrix": [1, 5], + "label": "G" + }, + { + "x": 8, + "y": 0.6, + "matrix": [1, 6], + "label": "H" + }, + { + "x": 9, + "y": 0.6, + "matrix": [1, 7], + "label": "J" + }, + { + "x": 10, + "y": 0.6, + "matrix": [1, 8], + "label": "K" + }, + { + "x": 11, + "y": 0.6, + "matrix": [1, 9], + "label": "L" + }, + { + "x": 12, + "y": 0.6, + "matrix": [1, 10], + "label": ";" + }, + { + "x": 13, + "y": 0.6, + "matrix": [1, 11], + "label": "Enter" + }, + { + "x": 0, + "y": 1.6, + "h": 1.2, + "matrix": [2, 0], + "label": "Shift" + }, + { + "x": 1, + "y": 1.6, + "h": 1.2, + "matrix": [2, 1], + "label": "Z" + }, + { + "x": 2, + "y": 1.6, + "h": 1.2, + "matrix": [2, 2], + "label": "X" + }, + { + "x": 3, + "y": 1.6, + "h": 1.2, + "matrix": [2, 3], + "label": "C" + }, + { + "x": 4, + "y": 1.6, + "h": 1.2, + "matrix": [2, 4], + "label": "V" + }, + { + "x": 5, + "y": 1.6, + "h": 1.2, + "matrix": [2, 5], + "label": "B" + }, + { + "x": 8, + "y": 1.6, + "h": 1.2, + "matrix": [2, 6], + "label": "N" + }, + { + "x": 9, + "y": 1.6, + "h": 1.2, + "matrix": [2, 7], + "label": "M" + }, + { + "x": 10, + "y": 1.6, + "h": 1.2, + "matrix": [2, 8], + "label": "," + }, + { + "x": 11, + "y": 1.6, + "h": 1.2, + "matrix": [2, 9], + "label": "c" + }, + { + "x": 12, + "y": 1.6, + "h": 1.2, + "matrix": [2, 10], + "label": "/" + }, + { + "x": 13, + "y": 1.6, + "h": 1.2, + "matrix": [2, 11], + "label": "Super" + }, + { + "x": 3.5, + "y": 3, + "h": 1.2, + "matrix": [3, 4], + "label": "Orange" + }, + { + "x": 4.5, + "y": 3, + "h": 1.2, + "matrix": [3, 5], + "label": "Blue" + }, + { + "x": 8.5, + "y": 3, + "h": 1.2, + "matrix": [3, 6], + "label": "Space" + }, + { + "x": 9.5, + "y": 3, + "h": 1.2, + "matrix": [3, 7], + "label": "Ctrl" + } + ] + } + } +} diff --git a/keyboards/splitography/keymaps/default/keymap.c b/keyboards/splitography/keymaps/default/keymap.c new file mode 100644 index 000000000000..91304c5507bc --- /dev/null +++ b/keyboards/splitography/keymaps/default/keymap.c @@ -0,0 +1,291 @@ +/* Copyright 2021 Alexis Jeandeau + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +#include "keymap_steno.h" + +enum keyboard_layers { + _QWERTY = 0, + _GEMINI, + _PLOVER, + _BLUE, + _ORANGE, + _GREEN, + _NUM, + _END_LAYERS, +}; + +enum keyboard_keycodes { + QWERTY = SAFE_RANGE, + QWERTY1, + QWERTY2, + GEMINI, + PLOVER, + BLUE, + ORANGE, +}; + +#define COPY LCTL(KC_C) +#define CUT LCTL(KC_X) +#define PASTE LCTL(KC_V) +#define UNDO LCTL(KC_Z) +#define TG_NUM TG(_NUM) + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // ...................................................................... Qwerty + // + // http://www.keyboard-layout-editor.com/#/gists/1b04ce6be0cee6e5d2998b2a8efb8b09 + + // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ + // │ Esc │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ Bksp │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Alt │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ Enter│ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Shift│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ GUI │ + // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘ + // │Orange│ Blue │ Space│ Ctrl │ + // └──────┴──────┴──────┴──────┘ + + [_QWERTY] = LAYOUT( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_LALT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT , + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LGUI, + ORANGE, BLUE, KC_SPC, KC_LCTL + ), + + // .................................................................. Blue Layer + // + // http://www.keyboard-layout-editor.com/#/gists/054b8bc0e31971bb962ea1c781232e0b + + // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ + // │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Alt │ Stop │ Prev │ Play │ Next │ +Vol │ │ │ │ [ │ ] │ ' │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Shift│ Undo │ Cut │ Copy │ Paste│ -Vol │ Mute │ │ │ - │ = │ GUI │ + // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘ + // │Orange│ f() │ Del │ Ctrl │ + // └──────┴──────┴──────┴──────┘ + + [_BLUE] = LAYOUT( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXXXX, + KC_LALT, KC_MSTP, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, XXXXXXX, XXXXXXX, XXXXXXX, KC_LBRC, KC_RBRC, KC_QUOT, + KC_LSFT, UNDO, CUT, COPY, PASTE, KC_VOLD, KC_MUTE, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL, KC_LGUI, + ORANGE, _______, KC_DEL, KC_LCTL + ), + + // ................................................................ Orange Layer + // + // http://www.keyboard-layout-editor.com/#/gists/83ccc7c3faa78b1f67f6fef65063a248 + + // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ + // │Plover│ F1 │ F2 │ F3 │ F4 │ │ App │ PrScr│ScrLck│ Pause│ │ │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Alt │ F5 │ F6 │ F7 │ F8 │ │ │Insert│ Home │ PgUp │ │ │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Shift│ F9 │ F10 │ F11 │ F12 │ │ │ Del │ End │ PgDn │ \ │ GUI │ + // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘ + // │ f() │ Blue │ Tab │ Ctrl │ + // └──────┴──────┴──────┴──────┘ + + [_ORANGE] = LAYOUT( + PLOVER, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, KC_APP, KC_PSCR, KC_SLCK, KC_PAUS, XXXXXXX, XXXXXXX, + KC_LALT, KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX, XXXXXXX, KC_INS, KC_HOME, KC_PGUP, XXXXXXX, XXXXXXX, + KC_LSFT, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, KC_DEL, KC_END, KC_PGDN, KC_BSLS, KC_LGUI, + _______, BLUE, KC_TAB, KC_LCTL + ), + + // ................................................................. Green Layer + // + // http://www.keyboard-layout-editor.com/#/gists/bc7902f1eada4d7d34d3445aa1eccdab + + // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ + // │Gemini│ │ │ │ │Scroll│ / │ 7 │ 8 │ 9 │ - │ │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Alt │ Home │ Up │ End │ PgUp │ Caps │ * │ 4 │ 5 │ 6 │ + │ Enter│ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Shift│ Left │ Down │ Right│ PgDn │ Num │ 0 │ 1 │ 2 │ 3 │ │ GUI │ + // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘ + // │ f() │ f() │ -- │ Ctrl │ + // └──────┴──────┴──────┴──────┘ + + [_GREEN] = LAYOUT( + GEMINI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SLCK, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_MINS, XXXXXXX, + KC_LALT, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_CAPS, KC_PAST, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_ENT , + KC_LSFT, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, TG_NUM, KC_P0, KC_P1, KC_P2, KC_P3, XXXXXXX, KC_LGUI, + _______, _______, XXXXXXX, KC_LCTL + ), + + // ................................................................... Num Layer + // + // http://www.keyboard-layout-editor.com/#/gists/bc7902f1eada4d7d34d3445aa1eccdab + + // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ + // │ │ │ │ │ │ │ / │ 7 │ 8 │ 9 │ - │ │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Alt │ Home │ Up │ End │ PgUp │ │ * │ 4 │ 5 │ 6 │ + │ Enter│ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Shift│ Left │ Down │ Right│ PgDn │ f() │ 0 │ 1 │ 2 │ 3 │ │ GUI │ + // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘ + // │ -- │ -- │ -- │ Ctrl │ + // └──────┴──────┴──────┴──────┘ + + [_NUM] = LAYOUT( + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, XXXXXXX, + KC_LALT, KC_HOME, KC_UP, KC_END, KC_PGUP, XXXXXXX, KC_PAST, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_ENT , + KC_LSFT, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, QWERTY, KC_P0, KC_P1, KC_P2, KC_P3, XXXXXXX, KC_LGUI, + XXXXXXX, XXXXXXX, XXXXXXX, KC_LCTL + ), + + // ...................................................................... Plover + // + // http://www.keyboard-layout-editor.com/#/gists/27b8f8649393a8ba4071ba946a9306f4 + + // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ + // │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │Qwerty│ S │ T │ P │ H │ * │ * │ F │ P │ L │ T │ D │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │Qwerty│ S │ K │ W │ R │ * │ * │ R │ B │ G │ S │ Z │ + // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘ + // │ A │ O │ E │ U │ + // └──────┴──────┴──────┴──────┘ + + [_PLOVER] = LAYOUT( + KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 , + QWERTY1, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, + QWERTY2, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_C, KC_V, KC_N, KC_M + ), + + // ...................................................................... Gemini + // + // http://www.keyboard-layout-editor.com/#/gists/27b8f8649393a8ba4071ba946a9306f4 + + // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ + // │ # │ # │ # │ # │ # │ # │ # │ # │ # │ # │ # │ # │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │Qwerty│ S │ T │ P │ H │ * │ * │ F │ P │ L │ T │ D │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │Qwerty│ S │ K │ W │ R │ * │ * │ R │ B │ G │ S │ Z │ + // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘ + // │ A │ O │ E │ U │ + // └──────┴──────┴──────┴──────┘ + + [_GEMINI] = LAYOUT( + STN_N1, STN_N2, STN_N3, STN_N4, STN_N5, STN_N6, STN_N7, STN_N8, STN_N9, STN_NA, STN_NB, STN_NC , + QWERTY1, STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR , + QWERTY2, STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR , + STN_A, STN_O, STN_E, STN_U + ), +}; +// clang-format on + +// ..................................................................... Keymaps + +#define QWERTY_1 1 +#define QWERTY_2 2 +#define QWERTY_12 3 +static uint8_t qwerty_n = 0; + +void qwerty(void) { + qwerty_n = 0; + layer_move(0); + set_single_persistent_default_layer(_QWERTY); +} + +void plover(keyrecord_t *record) { + if (record->event.pressed) { + layer_move(0); + layer_on(_PLOVER); + if (!eeconfig_is_enabled()) { + eeconfig_init(); + } + keymap_config.raw = eeconfig_read_keymap(); + keymap_config.nkro = 1; + eeconfig_update_keymap(keymap_config.raw); + } +} + +void gemini(void) { + layer_move(0); + layer_on(_GEMINI); +} + +// ........................................................... User Keycode Trap + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + qwerty(); + } + return false; + case QWERTY1: + if (record->event.pressed) { + qwerty_n = qwerty_n | QWERTY_1; + if (qwerty_n == QWERTY_12) { + qwerty(); + } + } else { + qwerty_n = qwerty_n & ~QWERTY_1; + } + return false; + case QWERTY2: + if (record->event.pressed) { + qwerty_n = qwerty_n | QWERTY_2; + if (qwerty_n == QWERTY_12) { + qwerty(); + } + } else { + qwerty_n = qwerty_n & ~QWERTY_2; + } + return false; + case BLUE: + if (record->event.pressed) { + layer_on(_BLUE); + update_tri_layer(_BLUE, _ORANGE, _GREEN); + } else { + layer_off(_BLUE); + update_tri_layer(_BLUE, _ORANGE, _GREEN); + } + return false; + case ORANGE: + if (record->event.pressed) { + layer_on(_ORANGE); + update_tri_layer(_BLUE, _ORANGE, _GREEN); + } else { + layer_off(_ORANGE); + update_tri_layer(_BLUE, _ORANGE, _GREEN); + } + return false; + case PLOVER: + plover(record); + return false; + case GEMINI: + if (record->event.pressed) { + gemini(); + } + return false; + } + return true; +} + +// Initialize the steno protocol +void eeconfig_init_user(void) { + steno_set_mode(STENO_MODE_BOLT); // or STENO_MODE_GEMINI +} diff --git a/keyboards/splitography/keymaps/default/readme.md b/keyboards/splitography/keymaps/default/readme.md new file mode 100644 index 000000000000..b136d85efbcf --- /dev/null +++ b/keyboards/splitography/keymaps/default/readme.md @@ -0,0 +1,14 @@ +# [Guide](https://softhruf.love/pages/guides) + +[Splitography quick start video](https://www.youtube.com/watch?v=ru4cRQ2s_v0) + +A short video guide on how to set up the SOFT/HRUF Splitography, a mechanical keyboard intended for use with [Plover](https://www.openstenoproject.org/plover/). + +Here is a reference card for the standard keyboard layout: + +![Reference card](https://i.imgur.com/ywe8jXR.png) + +* While holding down a colored thumb key, the matching colored functions/characters on the remaining keys can be pressed. +* Bottom edge keys are accessed by holding down both keys. +* Numlock locks in the Numpad layer. +* Alt and Shift pressed simultaneously to return to the standard layout. diff --git a/keyboards/splitography/keymaps/default_with_ctl_shft_alt_switched/keymap.c b/keyboards/splitography/keymaps/default_with_ctl_shft_alt_switched/keymap.c new file mode 100644 index 000000000000..5297af4c7604 --- /dev/null +++ b/keyboards/splitography/keymaps/default_with_ctl_shft_alt_switched/keymap.c @@ -0,0 +1,291 @@ +/* Copyright 2021 Alexis Jeandeau + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +#include "keymap_steno.h" + +enum keyboard_layers { + _QWERTY = 0, + _TXBOLT, + _PLOVER, + _BLUE, + _ORANGE, + _GREEN, + _NUM, + _END_LAYERS, +}; + +enum keyboard_keycodes { + QWERTY = SAFE_RANGE, + QWERTY1, + QWERTY2, + TXBOLT, + PLOVER, + BLUE, + ORANGE, +}; + +#define COPY LCTL(KC_C) +#define CUT LCTL(KC_X) +#define PASTE LCTL(KC_V) +#define UNDO LCTL(KC_Z) +#define TG_NUM TG(_NUM) + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // ...................................................................... Qwerty + // + // http://www.keyboard-layout-editor.com/#/gists/1b04ce6be0cee6e5d2998b2a8efb8b09 + + // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ + // │ Esc │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ Bksp │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Ctrl │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ Enter│ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Alt │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ GUI │ + // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘ + // │Orange│ Blue │ Space│ Shift│ + // └──────┴──────┴──────┴──────┘ + + [_QWERTY] = LAYOUT( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT , + KC_LALT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LGUI, + ORANGE, BLUE, KC_SPC, KC_LSFT + ), + + // .................................................................. Blue Layer + // + // http://www.keyboard-layout-editor.com/#/gists/054b8bc0e31971bb962ea1c781232e0b + + // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ + // │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Ctrl │ Stop │ Prev │ Play │ Next │ +Vol │ │ │ │ [ │ ] │ ' │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Alt │ Undo │ Cut │ Copy │ Paste│ -Vol │ Mute │ │ │ - │ = │ GUI │ + // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘ + // │Orange│ f() │ Del │ Shift│ + // └──────┴──────┴──────┴──────┘ + + [_BLUE] = LAYOUT( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXXXX, + KC_LCTL, KC_MSTP, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, XXXXXXX, XXXXXXX, XXXXXXX, KC_LBRC, KC_RBRC, KC_QUOT, + KC_LALT, UNDO, CUT, COPY, PASTE, KC_VOLD, KC_MUTE, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL, KC_LGUI, + ORANGE, _______, KC_DEL, KC_LSFT + ), + + // ................................................................ Orange Layer + // + // http://www.keyboard-layout-editor.com/#/gists/83ccc7c3faa78b1f67f6fef65063a248 + + // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ + // │Plover│ F1 │ F2 │ F3 │ F4 │ │ App │ PrScr│ScrLck│ Pause│ │ │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Ctrl │ F5 │ F6 │ F7 │ F8 │ │ │Insert│ Home │ PgUp │ │ │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Alt │ F9 │ F10 │ F11 │ F12 │ │ │ Del │ End │ PgDn │ \ │ GUI │ + // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘ + // │ f() │ Blue │ Tab │ Shift│ + // └──────┴──────┴──────┴──────┘ + + [_ORANGE] = LAYOUT( + PLOVER, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, KC_APP, KC_PSCR, KC_SLCK, KC_PAUS, XXXXXXX, XXXXXXX, + KC_LCTL, KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX, XXXXXXX, KC_INS, KC_HOME, KC_PGUP, XXXXXXX, XXXXXXX, + KC_LALT, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, KC_DEL, KC_END, KC_PGDN, KC_BSLS, KC_LGUI, + _______, BLUE, KC_TAB, KC_LSFT + ), + + // ................................................................. Green Layer + // + // http://www.keyboard-layout-editor.com/#/gists/bc7902f1eada4d7d34d3445aa1eccdab + + // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ + // │TxBolt│ │ │ │ │Scroll│ / │ 7 │ 8 │ 9 │ - │ │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Ctrl │ Home │ Up │ End │ PgUp │ Caps │ * │ 4 │ 5 │ 6 │ + │ Enter│ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Alt │ Left │ Down │ Right│ PgDn │ Num │ 0 │ 1 │ 2 │ 3 │ │ GUI │ + // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘ + // │ f() │ f() │ -- │ Shift│ + // └──────┴──────┴──────┴──────┘ + + [_GREEN] = LAYOUT( + TXBOLT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SLCK, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_MINS, XXXXXXX, + KC_LCTL, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_CAPS, KC_PAST, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_ENT , + KC_LALT, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, TG_NUM, KC_P0, KC_P1, KC_P2, KC_P3, XXXXXXX, KC_LGUI, + _______, _______, XXXXXXX, KC_LSFT + ), + + // ................................................................... Num Layer + // + // http://www.keyboard-layout-editor.com/#/gists/bc7902f1eada4d7d34d3445aa1eccdab + + // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ + // │ │ │ │ │ │ │ / │ 7 │ 8 │ 9 │ - │ │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Ctrl │ Home │ Up │ End │ PgUp │ │ * │ 4 │ 5 │ 6 │ + │ Enter│ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Alt │ Left │ Down │ Right│ PgDn │ f() │ 0 │ 1 │ 2 │ 3 │ │ GUI │ + // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘ + // │ -- │ -- │ -- │ Shift│ + // └──────┴──────┴──────┴──────┘ + + [_NUM] = LAYOUT( + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, XXXXXXX, + KC_LCTL, KC_HOME, KC_UP, KC_END, KC_PGUP, XXXXXXX, KC_PAST, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_ENT , + KC_LALT, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, QWERTY, KC_P0, KC_P1, KC_P2, KC_P3, XXXXXXX, KC_LGUI, + XXXXXXX, XXXXXXX, XXXXXXX, KC_LSFT + ), + + // ...................................................................... Plover + // + // http://www.keyboard-layout-editor.com/#/gists/27b8f8649393a8ba4071ba946a9306f4 + + // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ + // │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │Qwerty│ S │ T │ P │ H │ * │ * │ F │ P │ L │ T │ D │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │Qwerty│ S │ K │ W │ R │ * │ * │ R │ B │ G │ S │ Z │ + // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘ + // │ A │ O │ E │ U │ + // └──────┴──────┴──────┴──────┘ + + [_PLOVER] = LAYOUT( + KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 , + QWERTY1, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, + QWERTY2, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_C, KC_V, KC_N, KC_M + ), + + // ...................................................................... TxBolt + // + // http://www.keyboard-layout-editor.com/#/gists/27b8f8649393a8ba4071ba946a9306f4 + + // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ + // │ # │ # │ # │ # │ # │ # │ # │ # │ # │ # │ # │ # │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │Qwerty│ S │ T │ P │ H │ * │ * │ F │ P │ L │ T │ D │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │Qwerty│ S │ K │ W │ R │ * │ * │ R │ B │ G │ S │ Z │ + // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘ + // │ A │ O │ E │ U │ + // └──────┴──────┴──────┴──────┘ + + [_TXBOLT] = LAYOUT( + STN_N1, STN_N2, STN_N3, STN_N4, STN_N5, STN_N6, STN_N7, STN_N8, STN_N9, STN_NA, STN_NB, STN_NC , + QWERTY1, STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR , + QWERTY2, STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR , + STN_A, STN_O, STN_E, STN_U + ), +}; +// clang-format on + +// ..................................................................... Keymaps + +#define QWERTY_1 1 +#define QWERTY_2 2 +#define QWERTY_12 3 +static uint8_t qwerty_n = 0; + +void qwerty(void) { + qwerty_n = 0; + layer_move(0); + set_single_persistent_default_layer(_QWERTY); +} + +void plover(keyrecord_t *record) { + if (record->event.pressed) { + layer_move(0); + layer_on(_PLOVER); + if (!eeconfig_is_enabled()) { + eeconfig_init(); + } + keymap_config.raw = eeconfig_read_keymap(); + keymap_config.nkro = 1; + eeconfig_update_keymap(keymap_config.raw); + } +} + +void txbolt(void) { + layer_move(0); + layer_on(_TXBOLT); +} + +// ........................................................... User Keycode Trap + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + qwerty(); + } + return false; + case QWERTY1: + if (record->event.pressed) { + qwerty_n = qwerty_n | QWERTY_1; + if (qwerty_n == QWERTY_12) { + qwerty(); + } + } else { + qwerty_n = qwerty_n & ~QWERTY_1; + } + return false; + case QWERTY2: + if (record->event.pressed) { + qwerty_n = qwerty_n | QWERTY_2; + if (qwerty_n == QWERTY_12) { + qwerty(); + } + } else { + qwerty_n = qwerty_n & ~QWERTY_2; + } + return false; + case BLUE: + if (record->event.pressed) { + layer_on(_BLUE); + update_tri_layer(_BLUE, _ORANGE, _GREEN); + } else { + layer_off(_BLUE); + update_tri_layer(_BLUE, _ORANGE, _GREEN); + } + return false; + case ORANGE: + if (record->event.pressed) { + layer_on(_ORANGE); + update_tri_layer(_BLUE, _ORANGE, _GREEN); + } else { + layer_off(_ORANGE); + update_tri_layer(_BLUE, _ORANGE, _GREEN); + } + return false; + case PLOVER: + plover(record); + return false; + case TXBOLT: + if (record->event.pressed) { + txbolt(); + } + return false; + } + return true; +} + +// Initialize the steno protocol +void eeconfig_init_user(void) { + steno_set_mode(STENO_MODE_BOLT); // or STENO_MODE_GEMINI +} diff --git a/keyboards/splitography/keymaps/dvorak/keymap.c b/keyboards/splitography/keymaps/dvorak/keymap.c new file mode 100644 index 000000000000..d8cd6ae8f3e9 --- /dev/null +++ b/keyboards/splitography/keymaps/dvorak/keymap.c @@ -0,0 +1,291 @@ +/* Copyright 2021 Alexis Jeandeau + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +#include "keymap_steno.h" + +enum keyboard_layers { + _DVORAK = 0, + _TXBOLT, + _PLOVER, + _BLUE, + _ORANGE, + _GREEN, + _NUM, + _END_LAYERS, +}; + +enum keyboard_keycodes { + DVORAK = SAFE_RANGE, + DVORAK1, + DVORAK2, + TXBOLT, + PLOVER, + BLUE, + ORANGE, +}; + +#define COPY LCTL(KC_C) +#define CUT LCTL(KC_X) +#define PASTE LCTL(KC_V) +#define UNDO LCTL(KC_Z) +#define TG_NUM TG(_NUM) + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // ...................................................................... Dvorak + // + // http://www.keyboard-layout-editor.com/#/gists/1b04ce6be0cee6e5d2998b2a8efb8b09 + + // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ + // │ Esc │ " │ , │ . │ P │ Y │ F │ G │ C │ R │ L │ Bksp │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Alt │ A │ O │ E │ U │ I │ D │ H │ T │ N │ S │ Enter│ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Shift│ ; │ Q │ J │ K │ X │ B │ M │ W │ V │ Z │ GUI │ + // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘ + // │Orange│ Blue │ Space│ Ctrl │ + // └──────┴──────┴──────┴──────┘ + + [_DVORAK] = LAYOUT( + KC_ESC, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, + KC_LALT, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_ENT , + KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_LGUI, + ORANGE, BLUE, KC_SPC, KC_LCTL + ), + + // .................................................................. Blue Layer + //XXXXXXX, + // http://www.keyboard-layout-editor.com/#/gists/054b8bc0e31971bb962ea1c781232e0b + + // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ + // │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Alt │ Stop │ Prev │ Play │ Next │ +Vol │ │ │ │ [ │ ] │ / │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Shift│ Undo │ Cut │ Copy │ Paste│ -Vol │ Mute │ │ │ - │ = │ GUI │ + // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘ + // │Orange│ f() │ Del │ Ctrl │ + // └──────┴──────┴──────┴──────┘ + + [_BLUE] = LAYOUT( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXXXX, + KC_LALT, KC_MSTP, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, XXXXXXX, XXXXXXX, XXXXXXX, KC_LBRC, KC_RBRC, KC_SLSH, + KC_LSFT, UNDO, CUT, COPY, PASTE, KC_VOLD, KC_MUTE, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL, KC_LGUI, + ORANGE, _______, KC_DEL, KC_LCTL + ), + + // ................................................................ Orange Layer + // + // http://www.keyboard-layout-editor.com/#/gists/83ccc7c3faa78b1f67f6fef65063a248 + + // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ + // │Plover│ F1 │ F2 │ F3 │ F4 │ │ App │ PrScr│ScrLck│ Pause│ │ │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Alt │ F5 │ F6 │ F7 │ F8 │ │ │Insert│ Home │ PgUp │ │ │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Shift│ F9 │ F10 │ F11 │ F12 │ │ │ Del │ End │ PgDn │ \ │ GUI │ + // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘ + // │ f() │ Blue │ Tab │ Ctrl │ + // └──────┴──────┴──────┴──────┘ + + [_ORANGE] = LAYOUT( + PLOVER, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, KC_APP, KC_PSCR, KC_SLCK, KC_PAUS, XXXXXXX, XXXXXXX, + KC_LALT, KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX, XXXXXXX, KC_INS, KC_HOME, KC_PGUP, XXXXXXX, XXXXXXX, + KC_LSFT, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, KC_DEL, KC_END, KC_PGDN, KC_BSLS, KC_LGUI, + _______, BLUE, KC_TAB, KC_LCTL + ), + + // ................................................................. Green Layer + // + // http://www.keyboard-layout-editor.com/#/gists/bc7902f1eada4d7d34d3445aa1eccdab + + // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ + // │TxBolt│ │ │ │ │Scroll│ / │ 7 │ 8 │ 9 │ - │ │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Alt │ Home │ Up │ End │ PgUp │ Caps │ * │ 4 │ 5 │ 6 │ + │ Enter│ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Shift│ Left │ Down │ Right│ PgDn │ Num │ 0 │ 1 │ 2 │ 3 │ │ GUI │ + // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘ + // │ f() │ f() │ -- │ Ctrl │ + // └──────┴──────┴──────┴──────┘ + + [_GREEN] = LAYOUT( + TXBOLT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SLCK, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_MINS, XXXXXXX, + KC_LALT, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_CAPS, KC_PAST, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_ENT , + KC_LSFT, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, TG_NUM, KC_P0, KC_P1, KC_P2, KC_P3, XXXXXXX, KC_LGUI, + _______, _______, XXXXXXX, KC_LCTL + ), + + // ................................................................... Num Layer + // + // http://www.keyboard-layout-editor.com/#/gists/bc7902f1eada4d7d34d3445aa1eccdab + + // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ + // │ │ │ │ │ │ │ / │ 7 │ 8 │ 9 │ - │ │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Alt │ Home │ Up │ End │ PgUp │ │ * │ 4 │ 5 │ 6 │ + │ Enter│ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Shift│ Left │ Down │ Right│ PgDn │ f() │ 0 │ 1 │ 2 │ 3 │ │ GUI │ + // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘ + // │ -- │ -- │ -- │ Ctrl │ + // └──────┴──────┴──────┴──────┘ + + [_NUM] = LAYOUT( + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, XXXXXXX, + KC_LALT, KC_HOME, KC_UP, KC_END, KC_PGUP, XXXXXXX, KC_PAST, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_ENT , + KC_LSFT, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, DVORAK, KC_P0, KC_P1, KC_P2, KC_P3, XXXXXXX, KC_LGUI, + XXXXXXX, XXXXXXX, XXXXXXX, KC_LCTL + ), + + // ...................................................................... Plover + // + // http://www.keyboard-layout-editor.com/#/gists/27b8f8649393a8ba4071ba946a9306f4 + + // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ + // │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │Dvorak│ S │ T │ P │ H │ * │ * │ F │ P │ L │ T │ D │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │Dvorak│ S │ K │ W │ R │ * │ * │ R │ B │ G │ S │ Z │ + // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘ + // │ A │ O │ E │ U │ + // └──────┴──────┴──────┴──────┘ + + [_PLOVER] = LAYOUT( + KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 , + DVORAK1, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, + DVORAK2, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_C, KC_V, KC_N, KC_M + ), + + // ...................................................................... TxBolt + // + // http://www.keyboard-layout-editor.com/#/gists/27b8f8649393a8ba4071ba946a9306f4 + + // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ + // │ # │ # │ # │ # │ # │ # │ # │ # │ # │ # │ # │ # │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │Dvorak│ S │ T │ P │ H │ * │ * │ F │ P │ L │ T │ D │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │Dvorak│ S │ K │ W │ R │ * │ * │ R │ B │ G │ S │ Z │ + // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘ + // │ A │ O │ E │ U │ + // └──────┴──────┴──────┴──────┘ + + [_TXBOLT] = LAYOUT( + STN_N1, STN_N2, STN_N3, STN_N4, STN_N5, STN_N6, STN_N7, STN_N8, STN_N9, STN_NA, STN_NB, STN_NC , + DVORAK1, STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR , + DVORAK2, STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR , + STN_A, STN_O, STN_E, STN_U + ), +}; +// clang-format on + +// ..................................................................... Keymaps + +#define DVORAK_1 1 +#define DVORAK_2 2 +#define DVORAK_12 3 +static uint8_t dvorak_n = 0; + +void dvorak(void) { + dvorak_n = 0; + layer_move(0); + set_single_persistent_default_layer(_DVORAK); +} + +void plover(keyrecord_t *record) { + if (record->event.pressed) { + layer_move(0); + layer_on(_PLOVER); + if (!eeconfig_is_enabled()) { + eeconfig_init(); + } + keymap_config.raw = eeconfig_read_keymap(); + keymap_config.nkro = 1; + eeconfig_update_keymap(keymap_config.raw); + } +} + +void txbolt(void) { + layer_move(0); + layer_on(_TXBOLT); +} + +// ........................................................... User Keycode Trap + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case DVORAK: + if (record->event.pressed) { + dvorak(); + } + return false; + case DVORAK1: + if (record->event.pressed) { + dvorak_n = dvorak_n | DVORAK_1; + if (dvorak_n == DVORAK_12) { + dvorak(); + } + } else { + dvorak_n = dvorak_n & ~DVORAK_1; + } + return false; + case DVORAK2: + if (record->event.pressed) { + dvorak_n = dvorak_n | DVORAK_2; + if (dvorak_n == DVORAK_12) { + dvorak(); + } + } else { + dvorak_n = dvorak_n & ~DVORAK_2; + } + return false; + case BLUE: + if (record->event.pressed) { + layer_on(_BLUE); + update_tri_layer(_BLUE, _ORANGE, _GREEN); + } else { + layer_off(_BLUE); + update_tri_layer(_BLUE, _ORANGE, _GREEN); + } + return false; + case ORANGE: + if (record->event.pressed) { + layer_on(_ORANGE); + update_tri_layer(_BLUE, _ORANGE, _GREEN); + } else { + layer_off(_ORANGE); + update_tri_layer(_BLUE, _ORANGE, _GREEN); + } + return false; + case PLOVER: + plover(record); + return false; + case TXBOLT: + if (record->event.pressed) { + txbolt(); + } + return false; + } + return true; +} + +// Initialize the steno protocol +void eeconfig_init_user(void) { + steno_set_mode(STENO_MODE_BOLT); // or STENO_MODE_GEMINI +} diff --git a/keyboards/splitography/keymaps/jeandeaual/keymap.c b/keyboards/splitography/keymaps/jeandeaual/keymap.c new file mode 100644 index 000000000000..6679d835f2f2 --- /dev/null +++ b/keyboards/splitography/keymaps/jeandeaual/keymap.c @@ -0,0 +1,293 @@ +/* Copyright 2021 Alexis Jeandeau + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +#include "keymap_steno.h" + +enum keyboard_layers { + _GEMINI = 0, + _QWERTY, + _DVORAK, + _BLUE, + _ORANGE, + _GREEN, + _NUM, + _END_LAYERS, +}; + +enum keyboard_keycodes { + QWERTY = SAFE_RANGE, + DVORAK, + BASE, + BASE1, + BASE2, + GEMINI, + BLUE, + ORANGE, +}; + +#define COPY LCTL(KC_C) +#define CUT LCTL(KC_X) +#define PASTE LCTL(KC_V) +#define UNDO LCTL(KC_Z) +#define TG_NUM TG(_NUM) + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // ...................................................................... GeminiPR + // + // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ + // │ # │ # │ # │ # │ # │ # │ # │ # │ # │ # │ # │ # │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Base │ S │ T │ P │ H │ * │ * │ F │ P │ L │ T │ D │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Base │ S │ K │ W │ R │ * │ * │ R │ B │ G │ S │ Z │ + // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘ + // │ A │ O │ E │ U │ + // └──────┴──────┴──────┴──────┘ + + [_GEMINI] = LAYOUT( + STN_N1, STN_N2, STN_N3, STN_N4, STN_N5, STN_N6, STN_N7, STN_N8, STN_N9, STN_NA, STN_NB, STN_NC , + BASE1, STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR , + BASE2, STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR , + STN_A, STN_O, STN_E, STN_U + ), + + // ...................................................................... Qwerty + // + // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ + // │ Esc │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ Bksp │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Ctrl │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ Enter│ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Shift│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ GUI │ + // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘ + // │Orange│ Blue │ Space│ Alt │ + // └──────┴──────┴──────┴──────┘ + + [_QWERTY] = LAYOUT( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT , + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LGUI, + ORANGE, BLUE, KC_SPC, KC_LALT + ), + + // ...................................................................... Dvorak + // + // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ + // │ Esc │ " │ , │ . │ P │ Y │ F │ G │ C │ R │ L │ Bksp │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Ctrl │ A │ O │ E │ U │ I │ D │ H │ T │ N │ S │ Enter│ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Shift│ ; │ Q │ J │ K │ X │ B │ M │ W │ V │ Z │ GUI │ + // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘ + // │Orange│ Blue │ Space│ Alt │ + // └──────┴──────┴──────┴──────┘ + + [_DVORAK] = LAYOUT( + KC_ESC, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, + KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_ENT , + KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_LGUI, + ORANGE, BLUE, KC_SPC, KC_LALT + ), + + // .................................................................. Blue Layer + // + // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ + // │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Ctrl │ Stop │ Prev │ Play │ Next │ +Vol │ │ │ │ [ │ ] │ ' │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Shift│ Undo │ Cut │ Copy │ Paste│ -Vol │ Mute │ │ │ - │ = │ GUI │ + // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘ + // │Orange│ f() │ Del │ Alt │ + // └──────┴──────┴──────┴──────┘ + + [_BLUE] = LAYOUT( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXXXX, + KC_LCTL, KC_MSTP, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, XXXXXXX, XXXXXXX, XXXXXXX, KC_LBRC, KC_RBRC, KC_QUOT, + KC_LSFT, UNDO, CUT, COPY, PASTE, KC_VOLD, KC_MUTE, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL, KC_LGUI, + ORANGE, _______, KC_DEL, KC_LALT + ), + + // ................................................................ Orange Layer + // + // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ + // │ │ F1 │ F2 │ F3 │ F4 │ │ App │ PrScr│ScrLck│ Pause│ │ │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Ctrl │ F5 │ F6 │ F7 │ F8 │ │ │Insert│ Home │ PgUp │ │ │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Shift│ F9 │ F10 │ F11 │ F12 │ │ │ Del │ End │ PgDn │ \ │ GUI │ + // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘ + // │ f() │ Blue │ Tab │ Alt │ + // └──────┴──────┴──────┴──────┘ + + [_ORANGE] = LAYOUT( + XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, KC_APP, KC_PSCR, KC_SLCK, KC_PAUS, XXXXXXX, XXXXXXX, + KC_LCTL, KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX, XXXXXXX, KC_INS, KC_HOME, KC_PGUP, XXXXXXX, XXXXXXX, + KC_LSFT, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, KC_DEL, KC_END, KC_PGDN, KC_BSLS, KC_LGUI, + _______, BLUE, KC_TAB, KC_LALT + ), + + // ................................................................. Green Layer + // + // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ + // │Gemini│QWERTY│Dvorak│ │ │Scroll│ / │ 7 │ 8 │ 9 │ - │ │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Ctrl │ Home │ Up │ End │ PgUp │ Caps │ * │ 4 │ 5 │ 6 │ + │ Enter│ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Shift│ Left │ Down │ Right│ PgDn │ Num │ 0 │ 1 │ 2 │ 3 │ │ GUI │ + // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘ + // │ f() │ f() │ -- │ Alt │ + // └──────┴──────┴──────┴──────┘ + + [_GREEN] = LAYOUT( + GEMINI, QWERTY, DVORAK, XXXXXXX, XXXXXXX, KC_SLCK, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_MINS, XXXXXXX, + KC_LCTL, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_CAPS, KC_PAST, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_ENT , + KC_LSFT, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, TG_NUM, KC_P0, KC_P1, KC_P2, KC_P3, XXXXXXX, KC_LGUI, + _______, _______, XXXXXXX, KC_LALT + ), + + // ................................................................... Num Layer + // + // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ + // │ │ │ │ │ │ │ / │ 7 │ 8 │ 9 │ - │ │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Ctrl │ Home │ Up │ End │ PgUp │ │ * │ 4 │ 5 │ 6 │ + │ Enter│ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Shift│ Left │ Down │ Right│ PgDn │ f() │ 0 │ 1 │ 2 │ 3 │ │ GUI │ + // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘ + // │ -- │ -- │ -- │ Alt │ + // └──────┴──────┴──────┴──────┘ + + [_NUM] = LAYOUT( + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, XXXXXXX, + KC_LCTL, KC_HOME, KC_UP, KC_END, KC_PGUP, XXXXXXX, KC_PAST, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_ENT , + KC_LSFT, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, BASE, KC_P0, KC_P1, KC_P2, KC_P3, XXXXXXX, KC_LGUI, + XXXXXXX, XXXXXXX, XXXXXXX, KC_LALT + ), +}; +// clang-format on + +// ..................................................................... Keymaps + +#define BASE_1 1 +#define BASE_2 2 +#define BASE_12 3 +static uint8_t base_n = 0; + +void (*base_layer)(void) = NULL; + +void qwerty(void) { + base_layer = qwerty; + base_n = 0; + layer_move(0); + set_single_persistent_default_layer(_QWERTY); +} + +void dvorak(void) { + base_layer = dvorak; + base_n = 0; + layer_move(0); + set_single_persistent_default_layer(_DVORAK); +} + +void gemini(void) { + layer_move(0); + set_single_persistent_default_layer(_GEMINI); +} + +// ........................................................... User Keycode Trap + +bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + qwerty(); + } + return false; + case DVORAK: + if (record->event.pressed) { + dvorak(); + } + return false; + case KC_QUOT: + if ((base_layer != dvorak) || (biton32(layer_state) != _BLUE)) { + break; + } + if (record->event.pressed) { + register_code(KC_SLSH); + } else { + unregister_code(KC_SLSH); + } + return false; + case BASE: + if (record->event.pressed) { + base_layer(); + } + return false; + case BASE1: + if (record->event.pressed) { + base_n = base_n | BASE_1; + if (base_n == BASE_12) { + base_layer(); + } + } else { + base_n = base_n & ~BASE_1; + } + return false; + case BASE2: + if (record->event.pressed) { + base_n = base_n | BASE_2; + if (base_n == BASE_12) { + base_layer(); + } + } else { + base_n = base_n & ~BASE_2; + } + return false; + case BLUE: + if (record->event.pressed) { + layer_on(_BLUE); + update_tri_layer(_BLUE, _ORANGE, _GREEN); + } else { + layer_off(_BLUE); + update_tri_layer(_BLUE, _ORANGE, _GREEN); + } + return false; + case ORANGE: + if (record->event.pressed) { + layer_on(_ORANGE); + update_tri_layer(_BLUE, _ORANGE, _GREEN); + } else { + layer_off(_ORANGE); + update_tri_layer(_BLUE, _ORANGE, _GREEN); + } + return false; + case GEMINI: + if (record->event.pressed) { + gemini(); + } + return false; + } + return true; +} + +// Initialize the steno protocol +void eeconfig_init_user(void) { + steno_set_mode(STENO_MODE_GEMINI); // or STENO_MODE_BOLT + base_layer = dvorak; +} diff --git a/keyboards/splitography/keymaps/jeandeaual/readme.md b/keyboards/splitography/keymaps/jeandeaual/readme.md new file mode 100644 index 000000000000..8e786b7fc581 --- /dev/null +++ b/keyboards/splitography/keymaps/jeandeaual/readme.md @@ -0,0 +1,7 @@ +# Differences with the [default layout](../default) + +* Alt and Ctrl are shifted. +* Use Gemini PR instead of TX Bolt. +* The Plover layer has been removed. +* QWERTY and Dvorak like in the [multi layout](../multi). +* The default layer is set to the steno (Gemini PR) layout. diff --git a/keyboards/splitography/keymaps/multi/keymap.c b/keyboards/splitography/keymaps/multi/keymap.c new file mode 100644 index 000000000000..af1cc1a8014c --- /dev/null +++ b/keyboards/splitography/keymaps/multi/keymap.c @@ -0,0 +1,411 @@ +/* Copyright 2021 Alexis Jeandeau + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +#include "keymap_steno.h" + +enum keyboard_layers { + _QWERTY = 0, + _DVORAK, + _COLEMAK, + _WORKMAN, + _TXBOLT, + _PLOVER, + _BLUE, + _ORANGE, + _GREEN, + _NUM, + _END_LAYERS, +}; + +enum keyboard_keycodes { + QWERTY = SAFE_RANGE, + DVORAK, + COLEMAK, + WORKMAN, + BASE, + BASE1, + BASE2, + TXBOLT, + PLOVER, + BLUE, + ORANGE, +}; + +#define COPY LCTL(KC_C) +#define CUT LCTL(KC_X) +#define PASTE LCTL(KC_V) +#define UNDO LCTL(KC_Z) +#define TG_NUM TG(_NUM) + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // ...................................................................... Qwerty + // + // http://www.keyboard-layout-editor.com/#/gists/1b04ce6be0cee6e5d2998b2a8efb8b09 + + // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ + // │ Esc │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ Bksp │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Alt │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ Enter│ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Shift│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ GUI │ + // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘ + // │Orange│ Blue │ Space│ Ctrl │ + // └──────┴──────┴──────┴──────┘ + + [_QWERTY] = LAYOUT( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_LALT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT , + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LGUI, + ORANGE, BLUE, KC_SPC, KC_LCTL + ), + + // ...................................................................... Dvorak + // + // http://www.keyboard-layout-editor.com/#/gists/1b04ce6be0cee6e5d2998b2a8efb8b09 + + // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ + // │ Esc │ " │ , │ . │ P │ Y │ F │ G │ C │ R │ L │ Bksp │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Alt │ A │ O │ E │ U │ I │ D │ H │ T │ N │ S │ Enter│ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Shift│ ; │ Q │ J │ K │ X │ B │ M │ W │ V │ Z │ GUI │ + // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘ + // │Orange│ Blue │ Space│ Ctrl │ + // └──────┴──────┴──────┴──────┘ + + [_DVORAK] = LAYOUT( + KC_ESC, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, + KC_LALT, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_ENT , + KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_LGUI, + ORANGE, BLUE, KC_SPC, KC_LCTL + ), + + // ..................................................................... Colemak + + // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ + // │ Esc │ Q │ W │ F │ P │ G │ J │ L │ U │ Y │ ; │ Bksp │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Alt │ A │ R │ S │ T │ D │ H │ N │ E │ I │ O │ Enter│ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Shift│ Z │ X │ C │ V │ B │ K │ M │ , │ . │ / │ GUI │ + // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘ + // │Orange│ Blue │ Space│ Ctrl │ + // └──────┴──────┴──────┴──────┘ + + [_COLEMAK] = LAYOUT( + KC_ESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, + KC_LALT, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_ENT , + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LGUI, + ORANGE, BLUE, KC_SPC, KC_LCTL + ), + + // ..................................................................... Workman + + // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ + // │ Esc │ Q │ D │ R │ W │ B │ J │ F │ U │ P │ ; │ Bksp │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Alt │ A │ S │ H │ T │ G │ Y │ N │ E │ O │ I │ Enter│ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Shift│ Z │ X │ M │ C │ V │ K │ L │ , │ . │ / │ GUI │ + // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘ + // │Orange│ Blue │ Space│ Ctrl │ + // └──────┴──────┴──────┴──────┘ + + [_WORKMAN] = LAYOUT( + KC_ESC, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_BSPC, + KC_LALT, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, KC_ENT , + KC_LSFT, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH, KC_LGUI, + ORANGE, BLUE, KC_SPC, KC_LCTL + ), + + // .................................................................. Blue Layer + // + // http://www.keyboard-layout-editor.com/#/gists/054b8bc0e31971bb962ea1c781232e0b + + // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ + // │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Alt │ Stop │ Prev │ Play │ Next │ +Vol │ │ │ │ [ │ ] │ ' │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Shift│ Undo │ Cut │ Copy │ Paste│ -Vol │ Mute │ │ │ - │ = │ GUI │ + // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘ + // │Orange│ f() │ Del │ Ctrl │ + // └──────┴──────┴──────┴──────┘ + + [_BLUE] = LAYOUT( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXXXX, + KC_LALT, KC_MSTP, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, XXXXXXX, XXXXXXX, XXXXXXX, KC_LBRC, KC_RBRC, KC_QUOT, + KC_LSFT, UNDO, CUT, COPY, PASTE, KC_VOLD, KC_MUTE, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL, KC_LGUI, + ORANGE, _______, KC_DEL, KC_LCTL + ), + + // ................................................................ Orange Layer + // + // http://www.keyboard-layout-editor.com/#/gists/83ccc7c3faa78b1f67f6fef65063a248 + + // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ + // │Plover│ F1 │ F2 │ F3 │ F4 │ │ App │ PrScr│ScrLck│ Pause│ │ │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Alt │ F5 │ F6 │ F7 │ F8 │ │ │Insert│ Home │ PgUp │ │ │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Shift│ F9 │ F10 │ F11 │ F12 │ │ │ Del │ End │ PgDn │ \ │ GUI │ + // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘ + // │ f() │ Blue │ Tab │ Ctrl │ + // └──────┴──────┴──────┴──────┘ + + [_ORANGE] = LAYOUT( + PLOVER, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, KC_APP, KC_PSCR, KC_SLCK, KC_PAUS, XXXXXXX, XXXXXXX, + KC_LALT, KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX, XXXXXXX, KC_INS, KC_HOME, KC_PGUP, XXXXXXX, XXXXXXX, + KC_LSFT, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, KC_DEL, KC_END, KC_PGDN, KC_BSLS, KC_LGUI, + _______, BLUE, KC_TAB, KC_LCTL + ), + + // ................................................................. Green Layer + // + // http://www.keyboard-layout-editor.com/#/gists/bc7902f1eada4d7d34d3445aa1eccdab + + // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ + // │TxBolt│QWERTY│Dvorak│Colemk│Workmn│Scroll│ / │ 7 │ 8 │ 9 │ - │ │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Alt │ Home │ Up │ End │ PgUp │ Caps │ * │ 4 │ 5 │ 6 │ + │ Enter│ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Shift│ Left │ Down │ Right│ PgDn │ Num │ 0 │ 1 │ 2 │ 3 │ │ GUI │ + // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘ + // │ f() │ f() │ -- │ Ctrl │ + // └──────┴──────┴──────┴──────┘ + + [_GREEN] = LAYOUT( + TXBOLT, QWERTY, DVORAK, COLEMAK, WORKMAN, KC_SLCK, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_MINS, XXXXXXX, + KC_LALT, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_CAPS, KC_PAST, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_ENT , + KC_LSFT, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, TG_NUM, KC_P0, KC_P1, KC_P2, KC_P3, XXXXXXX, KC_LGUI, + _______, _______, XXXXXXX, KC_LCTL + ), + + // ................................................................... Num Layer + // + // http://www.keyboard-layout-editor.com/#/gists/bc7902f1eada4d7d34d3445aa1eccdab + + // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ + // │ │ │ │ │ │ │ / │ 7 │ 8 │ 9 │ - │ │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Alt │ Home │ Up │ End │ PgUp │ │ * │ 4 │ 5 │ 6 │ + │ Enter│ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Shift│ Left │ Down │ Right│ PgDn │ f() │ 0 │ 1 │ 2 │ 3 │ │ GUI │ + // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘ + // │ -- │ -- │ -- │ Ctrl │ + // └──────┴──────┴──────┴──────┘ + + [_NUM] = LAYOUT( + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, XXXXXXX, + KC_LALT, KC_HOME, KC_UP, KC_END, KC_PGUP, XXXXXXX, KC_PAST, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_ENT , + KC_LSFT, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, BASE, KC_P0, KC_P1, KC_P2, KC_P3, XXXXXXX, KC_LGUI, + XXXXXXX, XXXXXXX, XXXXXXX, KC_LCTL + ), + + // ...................................................................... Plover + // + // http://www.keyboard-layout-editor.com/#/gists/27b8f8649393a8ba4071ba946a9306f4 + + // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ + // │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ 1 │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Base │ S │ T │ P │ H │ * │ * │ F │ P │ L │ T │ D │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Base │ S │ K │ W │ R │ * │ * │ R │ B │ G │ S │ Z │ + // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘ + // │ A │ O │ E │ U │ + // └──────┴──────┴──────┴──────┘ + + [_PLOVER] = LAYOUT( + KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 , + BASE1, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, + BASE2, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_C, KC_V, KC_N, KC_M + ), + + // ...................................................................... TxBolt + // + // http://www.keyboard-layout-editor.com/#/gists/27b8f8649393a8ba4071ba946a9306f4 + + // ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ + // │ # │ # │ # │ # │ # │ # │ # │ # │ # │ # │ # │ # │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Base │ S │ T │ P │ H │ * │ * │ F │ P │ L │ T │ D │ + // ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ + // │ Base │ S │ K │ W │ R │ * │ * │ R │ B │ G │ S │ Z │ + // └──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘ + // │ A │ O │ E │ U │ + // └──────┴──────┴──────┴──────┘ + + [_TXBOLT] = LAYOUT( + STN_N1, STN_N2, STN_N3, STN_N4, STN_N5, STN_N6, STN_N7, STN_N8, STN_N9, STN_NA, STN_NB, STN_NC , + BASE1, STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR , + BASE2, STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR , + STN_A, STN_O, STN_E, STN_U + ), +}; +// clang-format on + +// ..................................................................... Keymaps + +#define BASE_1 1 +#define BASE_2 2 +#define BASE_12 3 +static uint8_t base_n = 0; + +void (*base_layer)(void) = NULL; + +void qwerty(void) { + base_layer = qwerty; + base_n = 0; + layer_move(0); + set_single_persistent_default_layer(_QWERTY); +} + +void dvorak(void) { + base_layer = dvorak; + base_n = 0; + layer_move(0); + set_single_persistent_default_layer(_DVORAK); +} + +void colemak(void) { + base_layer = colemak; + base_n = 0; + layer_move(0); + set_single_persistent_default_layer(_COLEMAK); +} + +void workman(void) { + base_layer = workman; + base_n = 0; + layer_move(0); + set_single_persistent_default_layer(_WORKMAN); +} + +void plover(keyrecord_t *record) { + if (record->event.pressed) { + layer_move(0); + layer_on(_PLOVER); + if (!eeconfig_is_enabled()) { + eeconfig_init(); + } + keymap_config.raw = eeconfig_read_keymap(); + keymap_config.nkro = 1; + eeconfig_update_keymap(keymap_config.raw); + } +} + +void txbolt(void) { + layer_move(0); + layer_on(_TXBOLT); +} + +// ........................................................... User Keycode Trap + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + qwerty(); + } + return false; + case DVORAK: + if (record->event.pressed) { + dvorak(); + } + return false; + case KC_QUOT: + if ((base_layer != dvorak) || (biton32(layer_state) != _BLUE)) { + break; + } + if (record->event.pressed) { + register_code(KC_SLSH); + } else { + unregister_code(KC_SLSH); + } + return false; + case COLEMAK: + if (record->event.pressed) { + colemak(); + } + return false; + case WORKMAN: + if (record->event.pressed) { + workman(); + } + return false; + case BASE: + if (record->event.pressed) { + base_layer(); + } + return false; + case BASE1: + if (record->event.pressed) { + base_n = base_n | BASE_1; + if (base_n == BASE_12) { + base_layer(); + } + } else { + base_n = base_n & ~BASE_1; + } + return false; + case BASE2: + if (record->event.pressed) { + base_n = base_n | BASE_2; + if (base_n == BASE_12) { + base_layer(); + } + } else { + base_n = base_n & ~BASE_2; + } + return false; + case BLUE: + if (record->event.pressed) { + layer_on(_BLUE); + update_tri_layer(_BLUE, _ORANGE, _GREEN); + } else { + layer_off(_BLUE); + update_tri_layer(_BLUE, _ORANGE, _GREEN); + } + return false; + case ORANGE: + if (record->event.pressed) { + layer_on(_ORANGE); + update_tri_layer(_BLUE, _ORANGE, _GREEN); + } else { + layer_off(_ORANGE); + update_tri_layer(_BLUE, _ORANGE, _GREEN); + } + return false; + case PLOVER: + plover(record); + return false; + case TXBOLT: + if (record->event.pressed) { + txbolt(); + } + return false; + } + return true; +} + +// Initialize the steno protocol +void eeconfig_init_user(void) { + steno_set_mode(STENO_MODE_BOLT); // or STENO_MODE_BOLT +} diff --git a/keyboards/splitography/keymaps/multi/readme.md b/keyboards/splitography/keymaps/multi/readme.md new file mode 100644 index 000000000000..2eb7d8f98c60 --- /dev/null +++ b/keyboards/splitography/keymaps/multi/readme.md @@ -0,0 +1,15 @@ +# Differences with the [default layout](../default) + +* QWERTY, Dvorak, Colemak and Workman are available by pressing Orange + Blue + one of the top left keys: + +``` +┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ +│TxBolt│QWERTY│Dvorak│Colemk│Workmn│Scroll│ / │ 7 │ 8 │ 9 │ - │ │ +├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ +│ Alt │ Home │ Up │ End │ PgUp │ Caps │ * │ 4 │ 5 │ 6 │ + │ Enter│ +├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤ +│ Shift│ Left │ Down │ Right│ PgDn │ Num │ 0 │ 1 │ 2 │ 3 │ │ GUI │ +└──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┴──────┴──────┴──────┘ + │ f() │ f() │ -- │ Ctrl │ + └──────┴──────┴──────┴──────┘ +``` diff --git a/keyboards/splitography/readme.md b/keyboards/splitography/readme.md new file mode 100644 index 000000000000..eeb9b2f40d43 --- /dev/null +++ b/keyboards/splitography/readme.md @@ -0,0 +1,42 @@ +# Splitography + +![Splitography](https://i.imgur.com/NlmR4Gc.jpeg) + +A *pay what you will* compact keyboard intended for use with [Plover](https://www.openstenoproject.org/), free and open source stenography software. This is a low-cost keyboard with minimal packaging and design, and arrives fully assembled, ready to use. + +* Keyboard Maintainer: [The QMK Community](https://github.com/qmk) +* Hardware Supported: Splitography +* Hardware Availability: [softhruf.love](https://softhruf.love/collections/writers) + +Make example for this keyboard (after setting up your build environment): + + make splitography:default + +Flashing example for this keyboard: + + make splitography:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard. +* **Physical reset button**: Briefly press the button on the back of the PCB. +* **Keycode in layout**: Press the key mapped to `RESET` if it is available. + +## [Guide](https://softhruf.love/pages/guides) + +[Splitography quick start video](https://www.youtube.com/watch?v=ru4cRQ2s_v0) + +A short video guide on how to set up the SOFT/HRUF Splitography, a mechanical keyboard intended for use with [Plover](https://www.openstenoproject.org/plover/). + +Here is a reference card for the standard keyboard layout: + +![Reference card](https://i.imgur.com/ywe8jXR.png) + +* While holding down a colored thumb key, the matching colored functions/characters on the remaining keys can be pressed. +* Bottom edge keys are accessed by holding down both keys. +* Numlock locks in the Numpad layer. +* Alt and Shift pressed simultaneously to return to the standard layout. diff --git a/keyboards/splitography/rules.mk b/keyboards/splitography/rules.mk new file mode 100644 index 000000000000..e8326bcf0998 --- /dev/null +++ b/keyboards/splitography/rules.mk @@ -0,0 +1,5 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu diff --git a/keyboards/splitography/splitography.c b/keyboards/splitography/splitography.c new file mode 100644 index 000000000000..4fe3452ef2ae --- /dev/null +++ b/keyboards/splitography/splitography.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Alexis Jeandeau + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "splitography.h" diff --git a/keyboards/splitography/splitography.h b/keyboards/splitography/splitography.h new file mode 100644 index 000000000000..cfef33363da3 --- /dev/null +++ b/keyboards/splitography/splitography.h @@ -0,0 +1,33 @@ +/* Copyright 2021 Alexis Jeandeau + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +// clang-format off +#define LAYOUT( \ + L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ + L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ + L34, L35, R30, R31 \ +) \ +{ \ + { L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05 }, \ + { L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15 }, \ + { L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25 }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, L34, L35, R30, R31, KC_NO, KC_NO, KC_NO, KC_NO } \ +} diff --git a/keyboards/splitreus62/info.json b/keyboards/splitreus62/info.json index b6f32b4d272d..a9f9b540a969 100644 --- a/keyboards/splitreus62/info.json +++ b/keyboards/splitreus62/info.json @@ -2,8 +2,6 @@ "keyboard_name": "splitreus62", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5.7, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0.6}, {"x":1, "y":0.6}, {"x":2, "y":0.35}, {"x":3, "y":0}, {"x":4, "y":0.35}, {"x":5, "y":0.7}, {"x":9, "y":0.7}, {"x":10, "y":0.35}, {"x":11, "y":0}, {"x":12, "y":0.35}, {"x":13, "y":0.6}, {"x":14, "y":0.6}, {"x":0, "y":1.6}, {"x":1, "y":1.6}, {"x":2, "y":1.35}, {"x":3, "y":1}, {"x":4, "y":1.35}, {"x":5, "y":1.7}, {"x":9, "y":1.7}, {"x":10, "y":1.35}, {"x":11, "y":1}, {"x":12, "y":1.35}, {"x":13, "y":1.6}, {"x":14, "y":1.6}, {"x":0, "y":2.6}, {"x":1, "y":2.6}, {"x":2, "y":2.35}, {"x":3, "y":2}, {"x":4, "y":2.35}, {"x":5, "y":2.7}, {"x":9, "y":2.7}, {"x":10, "y":2.35}, {"x":11, "y":2}, {"x":12, "y":2.35}, {"x":13, "y":2.6}, {"x":14, "y":2.6}, {"x":0, "y":3.6}, {"x":1, "y":3.6}, {"x":2, "y":3.35}, {"x":3, "y":3}, {"x":4, "y":3.35}, {"x":5, "y":3.7}, {"x":9, "y":3.7}, {"x":10, "y":3.35}, {"x":11, "y":3}, {"x":12, "y":3.35}, {"x":13, "y":3.6}, {"x":14, "y":3.6}, {"x":0, "y":4.6}, {"x":1, "y":4.6}, {"x":2, "y":4.35}, {"x":3, "y":4}, {"x":4, "y":4.35}, {"x":5, "y":4.7}, {"x":6, "y":3.95, "h":1.5}, {"x":8, "y":3.95, "h":1.5}, {"x":9, "y":4.7}, {"x":10, "y":4.35}, {"x":11, "y":4}, {"x":12, "y":4.35}, {"x":13, "y":4.6}, {"x":14, "y":4.6}] diff --git a/keyboards/splitreus62/rules.mk b/keyboards/splitreus62/rules.mk index ce1ec3b87205..04b622983057 100644 --- a/keyboards/splitreus62/rules.mk +++ b/keyboards/splitreus62/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI controls -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode +AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = yes diff --git a/keyboards/splitty/info.json b/keyboards/splitty/info.json index 2b87f2f9f1ab..1cccfa124b49 100644 --- a/keyboards/splitty/info.json +++ b/keyboards/splitty/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Splitty", "url": "https://git.ni.fr.eu.org/splitty.git/about/", "maintainer": "schodet", - "width": 14, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/splitty/rules.mk b/keyboards/splitty/rules.mk index 56572fe8ad1e..81783a558939 100644 --- a/keyboards/splitty/rules.mk +++ b/keyboards/splitty/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = yes diff --git a/keyboards/squiggle/rev1/info.json b/keyboards/squiggle/rev1/info.json index 2e89d3b62728..754164e5d79d 100644 --- a/keyboards/squiggle/rev1/info.json +++ b/keyboards/squiggle/rev1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "squiggle", "url": "https://github.com/ibnuda/squiggle", "maintainer": "Ibnu D. Aji", - "width": 10, - "height": 6, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/squiggle/rev1/rules.mk b/keyboards/squiggle/rev1/rules.mk index 71d218e25edf..273495e19231 100644 --- a/keyboards/squiggle/rev1/rules.mk +++ b/keyboards/squiggle/rev1/rules.mk @@ -1,21 +1,18 @@ # MCU name MCU = atmega32u4 +# Bootloader selection BOOTLOADER = caterina -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = yes diff --git a/keyboards/standaside/config.h b/keyboards/standaside/config.h index 23ae52d7cf9c..797a463a15ee 100644 --- a/keyboards/standaside/config.h +++ b/keyboards/standaside/config.h @@ -84,54 +84,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -150,23 +102,3 @@ //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - diff --git a/keyboards/standaside/info.json b/keyboards/standaside/info.json index b3be6c39eeaf..797a3419b743 100644 --- a/keyboards/standaside/info.json +++ b/keyboards/standaside/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Stand Aside", "url": "", "maintainer": "fateeverywhere", - "width": 16, - "height": 4, "layouts": { "LAYOUT_ortho_4x16": { "layout": [ diff --git a/keyboards/standaside/rules.mk b/keyboards/standaside/rules.mk index b0bcf9c14719..702e7eccd0c5 100644 --- a/keyboards/standaside/rules.mk +++ b/keyboards/standaside/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable RGB underlighting support diff --git a/keyboards/standaside/standaside.c b/keyboards/standaside/standaside.c index 904e92d335cc..9f445ec0440c 100644 --- a/keyboards/standaside/standaside.c +++ b/keyboards/standaside/standaside.c @@ -1,14 +1 @@ - #include "standaside.h" -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/standaside/standaside.h b/keyboards/standaside/standaside.h index b6616963979d..9601f1257cfa 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/staryu/info.json b/keyboards/staryu/info.json deleted file mode 100644 index baac7dfc296b..000000000000 --- a/keyboards/staryu/info.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "keyboard_name": "staryu", - "url": "", - "maintainer": "qmk", - "width": 3, - "height": 2, - "layouts": { - "LAYOUT": { - "layout": [{"x":1, "y":0}, {"x":2, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}] - } - } -} diff --git a/keyboards/staryu/readme.md b/keyboards/staryu/readme.md deleted file mode 100644 index 1b2f9e8f531c..000000000000 --- a/keyboards/staryu/readme.md +++ /dev/null @@ -1,15 +0,0 @@ -# Staryu - -![Staryu](https://i.imgur.com/obcCpZN.jpg) - -A 5 key macropad, designed by Kai and sold by KPRepublic. - -Keyboard Maintainer: QMK Community -Hardware Supported: Staryu (only the non-lite version has been tested) -Hardware Availability: [AliExpress](https://www.aliexpress.com/item/Staryu-Mini-Macro-Pad-custom-keyboard-by-tkg-kai-Mini-macro-pad-mechanical-keyboard-5-keys/32817560746.html) - -Make example for this keyboard (after setting up your build environment): - - make staryu:default - -See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. diff --git a/keyboards/staryu/rules.mk b/keyboards/staryu/rules.mk deleted file mode 100755 index 83b6ceaece68..000000000000 --- a/keyboards/staryu/rules.mk +++ /dev/null @@ -1,31 +0,0 @@ -# MCU name -MCU = atmega32u2 - -# Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = lufa-dfu - -# Build Options -# comment out to disable the options. -# -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration -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 = no # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 diff --git a/keyboards/steal_this_keyboard/info.json b/keyboards/steal_this_keyboard/info.json index 4c2be48e92cc..7a4eabdb5575 100644 --- a/keyboards/steal_this_keyboard/info.json +++ b/keyboards/steal_this_keyboard/info.json @@ -2,10 +2,8 @@ "keyboard_name": "steal this keyboard", "url": "https://github.com/obosob/steal_this_keyboard", "maintainer": "@obosob", - "width": 12, - "height": 4.75, "layouts": { - "LAYOUT": { + "LAYOUT_split_3x5_2": { "layout": [ {"x": 0, "y": 0.93}, {"x": 1, "y": 0.31}, diff --git a/keyboards/steal_this_keyboard/rules.mk b/keyboards/steal_this_keyboard/rules.mk index ce4d52156d31..0a6c85b75fe0 100644 --- a/keyboards/steal_this_keyboard/rules.mk +++ b/keyboards/steal_this_keyboard/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow UNICODE_ENABLE = yes # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = yes # Use shared split_common code diff --git a/keyboards/stella/info.json b/keyboards/stella/info.json index d5a585bbe10a..da36b6b26481 100644 --- a/keyboards/stella/info.json +++ b/keyboards/stella/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Stella", "url": "", "maintainer": "VGS", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/stella/rules.mk b/keyboards/stella/rules.mk index 6ffd641e7d2f..c86e25e74e5a 100644 --- a/keyboards/stella/rules.mk +++ b/keyboards/stella/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LAYOUTS = tkl_ansi tkl_iso diff --git a/keyboards/stratos/config.h b/keyboards/stratos/config.h new file mode 100644 index 000000000000..09aac207afe4 --- /dev/null +++ b/keyboards/stratos/config.h @@ -0,0 +1,54 @@ +/* +Copyright 2021 kb-elmo + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xD5D0 +#define PRODUCT_ID 0x992D +#define DEVICE_VER 0x0001 +#define MANUFACTURER eggyolk +#define PRODUCT stratos + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/* Keyboard Matrix Assignments */ +#define MATRIX_ROW_PINS { B1, B2, B3, F0, F1 } +#define MATRIX_COL_PINS { F4, F7, F5, F6, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* RGB LEDs */ +#ifdef RGBLIGHT_ENABLE +#define RGB_DI_PIN D2 +#define RGBLED_NUM 14 +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 +#define RGBLIGHT_LIMIT_VAL 200 +#define RGBLIGHT_SLEEP +#define RGBLIGHT_ANIMATIONS +#endif diff --git a/keyboards/stratos/info.json b/keyboards/stratos/info.json new file mode 100644 index 000000000000..0ddffc759252 --- /dev/null +++ b/keyboards/stratos/info.json @@ -0,0 +1,606 @@ +{ + "keyboard_name": "stratos", + "url": "", + "maintainer": "kb-elmo", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":2.25}, + {"x":6, "y":4, "w":1.25}, + {"x":7.25, "y":4, "w":2.75}, + {"x":10, "y":4}, + {"x":11, "y":4}, + {"x":12, "y":4}, + {"x":13, "y":4}, + {"x":14, "y":4} + ] + }, + "LAYOUT_60_ansi": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":2.75}, + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":12.5, "y":4, "w":1.25}, + {"x":13.75, "y":4, "w":1.25} + ] + }, + "LAYOUT_60_ansi_split_bs_rshift": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":12.5, "y":4, "w":1.25}, + {"x":13.75, "y":4, "w":1.25} + ] + }, + "LAYOUT_60_ansi_tsangan": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":2.75}, + {"x":0, "y":4, "w":1.5}, + {"x":1.5, "y":4}, + {"x":2.5, "y":4, "w":1.5}, + {"x":4, "y":4, "w":7}, + {"x":11, "y":4, "w":1.5}, + {"x":12.5, "y":4}, + {"x":13.5, "y":4, "w":1.5} + ] + }, + "LAYOUT_60_tsangan_hhkb": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":0, "y":4, "w":1.5}, + {"x":1.5, "y":4}, + {"x":2.5, "y":4, "w":1.5}, + {"x":4, "y":4, "w":7}, + {"x":11, "y":4, "w":1.5}, + {"x":12.5, "y":4}, + {"x":13.5, "y":4, "w":1.5} + ] + }, + "LAYOUT_60_ansi_arrow": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"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}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3, "w":1.75}, + {"x":13, "y":3}, + {"x":14, "y":3}, + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4}, + {"x":11, "y":4}, + {"x":12, "y":4}, + {"x":13, "y":4}, + {"x":14, "y":4} + ] + }, + "LAYOUT_60_iso": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + {"x":13.75, "y":1, "w":1.25, "h":2}, + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":2.75}, + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":12.5, "y":4, "w":1.25}, + {"x":13.75, "y":4, "w":1.25} + ] + }, + "LAYOUT_60_iso_split_bs_rshift": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + {"x":13.75, "y":1, "w":1.25, "h":2}, + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":1.75}, + {"x":14, "y":3}, + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":12.5, "y":4, "w":1.25}, + {"x":13.75, "y":4, "w":1.25} + ] + }, + "LAYOUT_60_iso_tsangan": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2}, + {"x":13.75, "y":1, "w":1.25, "h":2}, + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":2.75}, + {"x":0, "y":4, "w":1.5}, + {"x":1.5, "y":4}, + {"x":2.5, "y":4, "w":1.5}, + {"x":4, "y":4, "w":7}, + {"x":11, "y":4, "w":1.5}, + {"x":12.5, "y":4}, + {"x":13.5, "y":4, "w":1.5} + ] + } + } +} diff --git a/keyboards/stratos/keymaps/ansi_arrows/keymap.c b/keyboards/stratos/keymaps/ansi_arrows/keymap.c new file mode 100644 index 000000000000..5c11d70656b7 --- /dev/null +++ b/keyboards/stratos/keymaps/ansi_arrows/keymap.c @@ -0,0 +1,33 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_60_ansi_arrow( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_60_ansi_arrow( + 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_HOME, KC_UP, KC_END, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPRV, KC_MNXT, KC_MPLY, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/stratos/keymaps/ansi_split_bs_rshift/keymap.c b/keyboards/stratos/keymaps/ansi_split_bs_rshift/keymap.c new file mode 100644 index 000000000000..3c9fa24614ca --- /dev/null +++ b/keyboards/stratos/keymaps/ansi_split_bs_rshift/keymap.c @@ -0,0 +1,33 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_60_ansi_split_bs_rshift( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL + ), + [1] = LAYOUT_60_ansi_split_bs_rshift( + 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_HOME, KC_UP, KC_END, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPRV, KC_MNXT, KC_MPLY, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/stratos/keymaps/default/keymap.c b/keyboards/stratos/keymaps/default/keymap.c new file mode 100644 index 000000000000..3531e43b2c2b --- /dev/null +++ b/keyboards/stratos/keymaps/default/keymap.c @@ -0,0 +1,33 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_60_ansi( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL + ), + [1] = LAYOUT_60_ansi( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, + KC_TRNS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPRV, KC_MNXT, KC_MPLY, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/stratos/keymaps/iso/keymap.c b/keyboards/stratos/keymaps/iso/keymap.c new file mode 100644 index 000000000000..57af44ea4ba3 --- /dev/null +++ b/keyboards/stratos/keymaps/iso/keymap.c @@ -0,0 +1,33 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_60_iso( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL + ), + [1] = LAYOUT_60_iso( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, + KC_TRNS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPRV, KC_MNXT, KC_MPLY, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/stratos/keymaps/iso_split_bs_rshift/keymap.c b/keyboards/stratos/keymaps/iso_split_bs_rshift/keymap.c new file mode 100644 index 000000000000..a83b54a376a0 --- /dev/null +++ b/keyboards/stratos/keymaps/iso_split_bs_rshift/keymap.c @@ -0,0 +1,33 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_60_iso_split_bs_rshift( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL + ), + [1] = LAYOUT_60_iso_split_bs_rshift( + 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_HOME, KC_UP, KC_END, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPRV, KC_MNXT, KC_MPLY, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/stratos/keymaps/iso_tsangan/keymap.c b/keyboards/stratos/keymaps/iso_tsangan/keymap.c new file mode 100644 index 000000000000..5fa190419074 --- /dev/null +++ b/keyboards/stratos/keymaps/iso_tsangan/keymap.c @@ -0,0 +1,33 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_60_iso_tsangan( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL + ), + [1] = LAYOUT_60_iso_tsangan( + 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_HOME, KC_UP, KC_END, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPRV, KC_MNXT, KC_MPLY, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/stratos/keymaps/tsangan/keymap.c b/keyboards/stratos/keymaps/tsangan/keymap.c new file mode 100644 index 000000000000..8808cf0d4dc1 --- /dev/null +++ b/keyboards/stratos/keymaps/tsangan/keymap.c @@ -0,0 +1,33 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_60_ansi_tsangan( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL + ), + [1] = LAYOUT_60_ansi_tsangan( + 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_HOME, KC_UP, KC_END, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPRV, KC_MNXT, KC_MPLY, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/stratos/keymaps/tsangan_hhkb/keymap.c b/keyboards/stratos/keymaps/tsangan_hhkb/keymap.c new file mode 100644 index 000000000000..d8b6c552fcf8 --- /dev/null +++ b/keyboards/stratos/keymaps/tsangan_hhkb/keymap.c @@ -0,0 +1,33 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_60_tsangan_hhkb( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, KC_RCTL + ), + [1] = LAYOUT_60_tsangan_hhkb( + 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_HOME, KC_UP, KC_END, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPRV, KC_MNXT, KC_MPLY, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/stratos/keymaps/via/keymap.c b/keyboards/stratos/keymaps/via/keymap.c new file mode 100644 index 000000000000..7321955fdd14 --- /dev/null +++ b/keyboards/stratos/keymaps/via/keymap.c @@ -0,0 +1,47 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RALT, KC_RGUI, KC_APP, KC_RCTL + ), + [1] = 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_HOME, KC_UP, KC_END, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPRV, KC_MNXT, KC_MPLY, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/stratos/keymaps/via/rules.mk b/keyboards/stratos/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/stratos/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/stratos/readme.md b/keyboards/stratos/readme.md new file mode 100644 index 000000000000..abffae3e4a18 --- /dev/null +++ b/keyboards/stratos/readme.md @@ -0,0 +1,21 @@ +# Stratos + +![stratos](https://i.imgur.com/cIT710dl.png) + +Stacked acrylic keyboard with a custom PCB made by eggyolk05 + +* Keyboard Maintainer: [kb-elmo](https://github.com/kb-elmo) +* Hardware Supported: Stratos60 PCB +* Hardware Availability: https://geekhack.org/index.php?topic=111357 + +Make example for this keyboard (after setting up your build environment): + + make stratos:default + +Flashing example for this keyboard: + + make stratos:default:flash + +**Bootloader:** Press the physical reset button on the bottom side of the PCB (labeled SW1) or hold down ESC while plugging in the board. + +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/stratos/rules.mk b/keyboards/stratos/rules.mk new file mode 100644 index 000000000000..872dad5b5110 --- /dev/null +++ b/keyboards/stratos/rules.mk @@ -0,0 +1,21 @@ +# 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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +LAYOUTS = 60_ansi 60_ansi_arrow 60_ansi_tsangan 60_tsangan_hhkb 60_ansi_split_bs_rshift 60_iso 60_iso_split_bs_rshift 60_iso_tsangan diff --git a/keyboards/stratos/stratos.c b/keyboards/stratos/stratos.c new file mode 100644 index 000000000000..5de05cbc9dba --- /dev/null +++ b/keyboards/stratos/stratos.c @@ -0,0 +1,17 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "stratos.h" diff --git a/keyboards/stratos/stratos.h b/keyboards/stratos/stratos.h new file mode 100644 index 000000000000..478874b6e8c8 --- /dev/null +++ b/keyboards/stratos/stratos.h @@ -0,0 +1,147 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ____ KC_NO + +#define LAYOUT_all( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k113, \ + k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k212, \ + k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k213, \ + k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, \ + k400, k401, k402, k404, k406, k408, k409, k410, k411, k412, k413 \ +) { \ + { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013 }, \ + { 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, k212, k213 }, \ + { k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313 }, \ + { k400, k401, k402, ____, k404, ____, k406, ____, k408, k409, k410, k411, k412, k413 } \ +} + +#define LAYOUT_60_ansi( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, \ + k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k212, \ + k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k213, \ + k300, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, \ + k400, k401, k402, k406, k409, k411, k412, k413 \ +) { \ + { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013 }, \ + { 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, ____, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, ____ }, \ + { k400, k401, k402, ____, ____, ____, k406, ____, ____, k409, ____, k411, k412, k413 } \ +} + +#define LAYOUT_60_ansi_split_bs_rshift( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k113, \ + k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k212, \ + k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k213, \ + k300, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, \ + k400, k401, k402, k406, k409, k411, k412, k413 \ +) { \ + { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013 }, \ + { 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, k212, k213 }, \ + { k300, ____, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313 }, \ + { k400, k401, k402, ____, ____, ____, k406, ____, ____, k409, ____, k411, k412, k413 } \ +} + +#define LAYOUT_60_ansi_tsangan( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, \ + k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k212, \ + k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k213, \ + k300, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, \ + k400, k401, k402, k406, k411, k412, k413 \ +) { \ + { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013 }, \ + { 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, ____, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, ____ }, \ + { k400, k401, k402, ____, ____, ____, k406, ____, ____, ____, ____, k411, k412, k413 } \ +} + +#define LAYOUT_60_tsangan_hhkb( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k113, \ + k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k212, \ + k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k213, \ + k300, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, \ + k400, k401, k402, k406, k411, k412, k413 \ +) { \ + { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013 }, \ + { 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, k212, k213 }, \ + { k300, ____, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313 }, \ + { k400, k401, k402, ____, ____, ____, k406, ____, ____, ____, ____, k411, k412, k413 } \ +} + +#define LAYOUT_60_ansi_arrow( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, \ + k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k212, \ + k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k213, \ + k300, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, \ + k400, k401, k402, k406, k409, k410, k411, k412, k413 \ +) { \ + { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013 }, \ + { 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, ____, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313 }, \ + { k400, k401, k402, ____, ____, ____, k406, ____, ____, k409, k410, k411, k412, k413 } \ +} + +#define LAYOUT_60_iso( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, \ + 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, k312, \ + k400, k401, k402, k406, k409, k411, k412, k413 \ +) { \ + { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013 }, \ + { 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, k312, ____ }, \ + { k400, k401, k402, ____, ____, ____, k406, ____, ____, k409, ____, k411, k412, k413 } \ +} + +#define LAYOUT_60_iso_split_bs_rshift( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k113, \ + 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, k312, k313, \ + k400, k401, k402, k406, k409, k411, k412, k413 \ +) { \ + { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013 }, \ + { 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, k212, k213 }, \ + { k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313 }, \ + { k400, k401, k402, ____, ____, ____, k406, ____, ____, k409, ____, k411, k412, k413 } \ +} + +#define LAYOUT_60_iso_tsangan( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, \ + 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, k312, \ + k400, k401, k402, k406, k411, k412, k413 \ +) { \ + { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013 }, \ + { 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, k312, ____ }, \ + { k400, k401, k402, ____, ____, ____, k406, ____, ____, ____, ____, k411, k412, k413 } \ +} diff --git a/keyboards/studiokestra/bourgeau/bourgeau.c b/keyboards/studiokestra/bourgeau/bourgeau.c new file mode 100644 index 000000000000..87368df5096a --- /dev/null +++ b/keyboards/studiokestra/bourgeau/bourgeau.c @@ -0,0 +1,18 @@ +/* +Copyright 2021 Studio Kestra + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "bourgeau.h" diff --git a/keyboards/studiokestra/bourgeau/bourgeau.h b/keyboards/studiokestra/bourgeau/bourgeau.h new file mode 100644 index 000000000000..32a848eca772 --- /dev/null +++ b/keyboards/studiokestra/bourgeau/bourgeau.h @@ -0,0 +1,46 @@ +/* +Copyright 2021 Studio Kestra + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +/* This a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT_all( \ + 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, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, \ + K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K314, K315, \ + K400, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K413, K414, K415, \ + K500, K501, K502, K506, K510, 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, KC_NO, K114, K115 }, \ + { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \ + { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO, K314, K315 }, \ + { K400, KC_NO, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, K413, K414, K415 }, \ + { K500, K501, K502, KC_NO, KC_NO, KC_NO, K506, KC_NO, KC_NO, KC_NO, K510, KC_NO, K512, K513, K514, K515 } \ +} + diff --git a/keyboards/studiokestra/bourgeau/config.h b/keyboards/studiokestra/bourgeau/config.h new file mode 100644 index 000000000000..744149c34eb1 --- /dev/null +++ b/keyboards/studiokestra/bourgeau/config.h @@ -0,0 +1,83 @@ +/* +Copyright 2021 Studio Kestra + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7C10 +#define PRODUCT_ID 0x7501 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Studio Kestra +#define PRODUCT Bourgeau + +#define MATRIX_ROWS 6 +#define MATRIX_COLS 16 + +#define MATRIX_ROW_PINS { D4, D6, D7, D5, B1, F0 } +#define MATRIX_COL_PINS { E6, B0, D2, D1, D0, D3, B6, F1, F4, F5, F6, F7, C7, C6, B5, B4 } + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + + +#define RGB_DI_PIN B7 +#ifdef RGB_DI_PIN + #define RGBLED_NUM 24 + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ + #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +#define RGBLIGHT_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 +// /*== customize breathing effect ==*/ +// /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ + #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +// /*==== use exp() and sin() ====*/ +// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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 + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/studiokestra/bourgeau/info.json b/keyboards/studiokestra/bourgeau/info.json new file mode 100644 index 000000000000..8fd62f65184a --- /dev/null +++ b/keyboards/studiokestra/bourgeau/info.json @@ -0,0 +1,94 @@ +{ + "keyboard_name": "Bourgeau", + "url": "https://studiokestra.ca/bourgeau/", + "maintainer": "Studio Kestra", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":1, "y":0}, + {"label":"F2", "x":2, "y":0}, + {"label":"F3", "x":3, "y":0}, + {"label":"F4", "x":4, "y":0}, + {"label":"F5", "x":5, "y":0}, + {"label":"F6", "x":6, "y":0}, + {"label":"F7", "x":7, "y":0}, + {"label":"F8", "x":8, "y":0}, + {"label":"F9", "x":9, "y":0}, + {"label":"F10", "x":10, "y":0}, + {"label":"F11", "x":11, "y":0}, + {"label":"F12", "x":12, "y":0}, + {"label":"PrtSc", "x":13, "y":0}, + {"label":"Insert", "x":14, "y":0}, + {"label":"Delete", "x":15, "y":0}, + {"label":"~", "x":0, "y":1}, + {"label":"!", "x":1, "y":1}, + {"label":"@", "x":2, "y":1}, + {"label":"#", "x":3, "y":1}, + {"label":"$", "x":4, "y":1}, + {"label":"%", "x":5, "y":1}, + {"label":"^", "x":6, "y":1}, + {"label":"&", "x":7, "y":1}, + {"label":"*", "x":8, "y":1}, + {"label":"(", "x":9, "y":1}, + {"label":")", "x":10, "y":1}, + {"label":"_", "x":11, "y":1}, + {"label":"+", "x":12, "y":1}, + {"label":"Backspace", "x":13, "y":1, "w":2}, + {"label":"Home", "x":15, "y":1}, + {"label":"Tab", "x":0, "y":2, "w":1.5}, + {"label":"Q", "x":1.5, "y":2}, + {"label":"W", "x":2.5, "y":2}, + {"label":"E", "x":3.5, "y":2}, + {"label":"R", "x":4.5, "y":2}, + {"label":"T", "x":5.5, "y":2}, + {"label":"Y", "x":6.5, "y":2}, + {"label":"U", "x":7.5, "y":2}, + {"label":"I", "x":8.5, "y":2}, + {"label":"O", "x":9.5, "y":2}, + {"label":"P", "x":10.5, "y":2}, + {"label":"{", "x":11.5, "y":2}, + {"label":"}", "x":12.5, "y":2}, + {"label":"|", "x":13.5, "y":2, "w":1.5}, + {"label":"PgUp", "x":15, "y":2}, + {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, + {"label":"A", "x":1.75, "y":3}, + {"label":"S", "x":2.75, "y":3}, + {"label":"D", "x":3.75, "y":3}, + {"label":"F", "x":4.75, "y":3}, + {"label":"G", "x":5.75, "y":3}, + {"label":"H", "x":6.75, "y":3}, + {"label":"J", "x":7.75, "y":3}, + {"label":"K", "x":8.75, "y":3}, + {"label":"L", "x":9.75, "y":3}, + {"label":":", "x":10.75, "y":3}, + {"label":"\"", "x":11.75, "y":3}, + {"label":"Enter", "x":12.75, "y":3, "w":2.25}, + {"label":"PgDn", "x":15, "y":3}, + {"label":"Shift", "x":0, "y":4, "w":2.25}, + {"label":"Z", "x":2.25, "y":4}, + {"label":"X", "x":3.25, "y":4}, + {"label":"C", "x":4.25, "y":4}, + {"label":"V", "x":5.25, "y":4}, + {"label":"B", "x":6.25, "y":4}, + {"label":"N", "x":7.25, "y":4}, + {"label":"M", "x":8.25, "y":4}, + {"label":"<", "x":9.25, "y":4}, + {"label":">", "x":10.25, "y":4}, + {"label":"?", "x":11.25, "y":4}, + {"label":"Shift", "x":12.25, "y":4, "w":1.75}, + {"label":"\u2191", "x":14, "y":4}, + {"label":"End", "x":15, "y":4}, + {"label":"Ctrl", "x":0, "y":5, "w":1.25}, + {"label":"Win", "x":1.25, "y":5, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5, "w":1.25}, + {"x":3.75, "y":5, "w":6.25}, + {"label":"Fn", "x":10, "y":5, "w":1.5}, + {"label":"Ctrl", "x":11.5, "y":5, "w":1.5}, + {"label":"\u2190", "x":13, "y":5}, + {"label":"\u2193", "x":14, "y":5}, + {"label":"\u2192", "x":15, "y":5} + ] + } + } +} diff --git a/keyboards/studiokestra/bourgeau/keymaps/default/keymap.c b/keyboards/studiokestra/bourgeau/keymaps/default/keymap.c new file mode 100644 index 000000000000..31d7d70a09b8 --- /dev/null +++ b/keyboards/studiokestra/bourgeau/keymaps/default/keymap.c @@ -0,0 +1,43 @@ +/* +Copyright 2021 Studio Kestra + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_all( /* Base */ + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_INS, KC_DEL, + KC_GRAVE,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT + ), + [_FN] = LAYOUT_all( /* FN */ + RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + diff --git a/keyboards/studiokestra/bourgeau/keymaps/default/readme.md b/keyboards/studiokestra/bourgeau/keymaps/default/readme.md new file mode 100644 index 000000000000..cbed849589e6 --- /dev/null +++ b/keyboards/studiokestra/bourgeau/keymaps/default/readme.md @@ -0,0 +1,3 @@ +# The default keymap for Bourgeau + +Default key configuration. \ No newline at end of file diff --git a/keyboards/studiokestra/bourgeau/keymaps/via/keymap.c b/keyboards/studiokestra/bourgeau/keymaps/via/keymap.c new file mode 100644 index 000000000000..d0491c30a9ab --- /dev/null +++ b/keyboards/studiokestra/bourgeau/keymaps/via/keymap.c @@ -0,0 +1,54 @@ +/* +Copyright 2021 Studio Kestra + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_INS, KC_DEL, + KC_GRAVE,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT + ), + [1] = LAYOUT_all( /* FN */ + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_all( /* Layer 3 */ + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_all( /* Layer 3 */ + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/studiokestra/bourgeau/keymaps/via/readme.md b/keyboards/studiokestra/bourgeau/keymaps/via/readme.md new file mode 100644 index 000000000000..bf2bc20a627a --- /dev/null +++ b/keyboards/studiokestra/bourgeau/keymaps/via/readme.md @@ -0,0 +1,3 @@ +# The via keymap for Bourgeau + +For via configurator use \ No newline at end of file diff --git a/keyboards/studiokestra/bourgeau/keymaps/via/rules.mk b/keyboards/studiokestra/bourgeau/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/studiokestra/bourgeau/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/studiokestra/bourgeau/readme.md b/keyboards/studiokestra/bourgeau/readme.md new file mode 100644 index 000000000000..16f87618e0ef --- /dev/null +++ b/keyboards/studiokestra/bourgeau/readme.md @@ -0,0 +1,23 @@ +# Bourgeau + +Compact 75% universal hotswap PCB with USB-C that supports a fixed 6.25U bottom row layout. + +* Keyboard Maintainer: [Studio Kestra](https://github.com/studiokestra/) +* Hardware Supported: PLA75 +* Hardware Availability: [RNDKBD.com](https://rndkbd.com/) + +## Bootload Sequence + +There are 3 ways to put the board in bootloader mode: + +- Hold the top-left key (typically `Esc`) while plugging in the USB cable, OR +- While the PCB is plugged into the PC, press the physical `RESET` button on the back of the board, OR +- With the default layout, toggle Layer 1 and press the `ESC` key. + +## Compiling Firmware + +Make example for this keyboard (after setting up your build environment): + + make studiokestra/bourgeau: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/studiokestra/bourgeau/rules.mk b/keyboards/studiokestra/bourgeau/rules.mk new file mode 100644 index 000000000000..7cd63143048b --- /dev/null +++ b/keyboards/studiokestra/bourgeau/rules.mk @@ -0,0 +1,19 @@ +# 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 = yes # Commands for debug and configuration +# 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 diff --git a/keyboards/studiokestra/cascade/info.json b/keyboards/studiokestra/cascade/info.json index 760c85d5bcff..5bbc25f1e5a3 100644 --- a/keyboards/studiokestra/cascade/info.json +++ b/keyboards/studiokestra/cascade/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Cascade", "url": "https://studiokestra.ca/cascade/", "maintainer": "Studio Kestra", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/studiokestra/cascade/rules.mk b/keyboards/studiokestra/cascade/rules.mk index 76528fcf978d..7cd63143048b 100644 --- a/keyboards/studiokestra/cascade/rules.mk +++ b/keyboards/studiokestra/cascade/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # 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 diff --git a/keyboards/studiokestra/galatea/config.h b/keyboards/studiokestra/galatea/config.h new file mode 100644 index 000000000000..e9a6b80b148c --- /dev/null +++ b/keyboards/studiokestra/galatea/config.h @@ -0,0 +1,77 @@ +/* +Copyright 2021 Studio Kestra + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7C10 +#define MANUFACTURER Studio Kestra +#define PRODUCT Galatea + +#define MATRIX_ROWS 12 +#define MATRIX_COLS 9 + +#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, B2, D5 } +#define MATRIX_ROW_PINS { D1, D0, B0, B7, E6, B3, B6, C6, D6, D7, B4, D3 } +#define DIODE_DIRECTION COL2ROW + +#define LED_CAPS_LOCK_PIN B5 +#define LED_SCROLL_LOCK_PIN D2 +#define LED_PIN_ON_STATE 0 + +#if defined(KEYBOARD_studiokestra_galatea_rev2) + #define RGB_DI_PIN D4 + #define RGBLED_NUM 24 + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ + #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ + #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 +// /*== customize breathing effect ==*/ +// /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ + #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +// /*==== use exp() and sin() ====*/ +// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/studiokestra/galatea/galatea.c b/keyboards/studiokestra/galatea/galatea.c new file mode 100644 index 000000000000..30e7939159fc --- /dev/null +++ b/keyboards/studiokestra/galatea/galatea.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Studio Kestra + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "galatea.h" diff --git a/keyboards/studiokestra/galatea/galatea.h b/keyboards/studiokestra/galatea/galatea.h new file mode 100644 index 000000000000..a1f2aa77b53a --- /dev/null +++ b/keyboards/studiokestra/galatea/galatea.h @@ -0,0 +1,25 @@ +/* Copyright 2021 Studio Kestra + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#if defined(KEYBOARD_studiokestra_galatea_rev1) + #include "rev1.h" +#elif defined(KEYBOARD_studiokestra_galatea_rev2) + #include "rev2.h" +#endif diff --git a/keyboards/studiokestra/galatea/keymaps/default/keymap.c b/keyboards/studiokestra/galatea/keymaps/default/keymap.c new file mode 100644 index 000000000000..8224c9875134 --- /dev/null +++ b/keyboards/studiokestra/galatea/keymaps/default/keymap.c @@ -0,0 +1,42 @@ + /* Copyright 2021 Studio Kestra + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_BASE] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTRL, KC_LEFT, KC_DOWN, KC_RIGHT ), + + [_FN] = LAYOUT_all( + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), +}; \ No newline at end of file diff --git a/keyboards/studiokestra/galatea/keymaps/default/readme.md b/keyboards/studiokestra/galatea/keymaps/default/readme.md new file mode 100644 index 000000000000..1dbd94b7bf37 --- /dev/null +++ b/keyboards/studiokestra/galatea/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for Galatea diff --git a/keyboards/studiokestra/galatea/keymaps/via/keymap.c b/keyboards/studiokestra/galatea/keymaps/via/keymap.c new file mode 100644 index 000000000000..6d49b79bef34 --- /dev/null +++ b/keyboards/studiokestra/galatea/keymaps/via/keymap.c @@ -0,0 +1,51 @@ + /* Copyright 2021 Studio Kestra + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN1, + _FN2 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_BASE] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTRL, KC_LEFT, KC_DOWN, KC_RIGHT ), + + [_FN1] = LAYOUT_all( + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), + + [_FN2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ) +}; diff --git a/keyboards/studiokestra/galatea/keymaps/via/readme.md b/keyboards/studiokestra/galatea/keymaps/via/readme.md new file mode 100644 index 000000000000..a54a78203e33 --- /dev/null +++ b/keyboards/studiokestra/galatea/keymaps/via/readme.md @@ -0,0 +1 @@ +# Studio Kestra's Galatea keymap for VIA diff --git a/keyboards/studiokestra/galatea/keymaps/via/rules.mk b/keyboards/studiokestra/galatea/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/studiokestra/galatea/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/studiokestra/galatea/readme.md b/keyboards/studiokestra/galatea/readme.md new file mode 100644 index 000000000000..1268c596bf7d --- /dev/null +++ b/keyboards/studiokestra/galatea/readme.md @@ -0,0 +1,27 @@ +# Galatea + +TKL H87/88c compatible PCB with support for the most common layouts. + +* Keyboard Maintainer: [Studio Kestra](https://github.com/studiokestra/) +* Hardware Supported: [studiokestra.ca/galatea](https://studiokestra.ca/galatea/) +* Hardware Availability: In-Stock Sale (Dec 2021) +* Rev1 firmware is used for Galatea PCBs with no RGB underglow. +* Rev2 firmware is used for Galatea PCBs with RGB underglow. + +## Bootload Sequence + +There are 3 ways to put the board in bootloader mode: + +- Hold the top-left key (typically `Esc`) while plugging in the USB cable, OR +- While the PCB is plugged into the PC, press the physical `RESET` button on the back of the board, OR +- With the default layout, toggle Layer 1 and press the `R` key. + +## Compiling Firmware + +Make example for this keyboard (after setting up your build environment): + + make studiokestra/galatea/rev1:default + +If no revision is specified, it will build rev1 firmware by 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/studiokestra/galatea/rev1/config.h b/keyboards/studiokestra/galatea/rev1/config.h new file mode 100644 index 000000000000..9f8fb44f9a99 --- /dev/null +++ b/keyboards/studiokestra/galatea/rev1/config.h @@ -0,0 +1,21 @@ +/* +Copyright 2021 Studio Kestra + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#define PRODUCT_ID 0x8801 +#define DEVICE_VER 0x0001 diff --git a/keyboards/studiokestra/galatea/rev1/info.json b/keyboards/studiokestra/galatea/rev1/info.json new file mode 100644 index 000000000000..46e07d7a4301 --- /dev/null +++ b/keyboards/studiokestra/galatea/rev1/info.json @@ -0,0 +1,101 @@ +{ + "keyboard_name": "Galatea", + "url": "https://studiokestra.ca/galatea", + "maintainer": "Studio Kestra", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":1.25, "y":0}, + {"label":"F2", "x":2.25, "y":0}, + {"label":"F3", "x":3.25, "y":0}, + {"label":"F4", "x":4.25, "y":0}, + {"label":"F5", "x":5.5, "y":0}, + {"label":"F6", "x":6.5, "y":0}, + {"label":"F7", "x":7.5, "y":0}, + {"label":"F8", "x":8.5, "y":0}, + {"label":"F9", "x":9.75, "y":0}, + {"label":"F10", "x":10.75, "y":0}, + {"label":"F11", "x":11.75, "y":0}, + {"label":"F12", "x":12.75, "y":0}, + {"label":"F13", "x":14, "y":0}, + {"label":"PrtSc", "x":15.25, "y":0}, + {"label":"Scroll Lock", "x":16.25, "y":0}, + {"label":"Pause", "x":17.25, "y":0}, + {"label":"~", "x":0, "y":1.25}, + {"label":"!", "x":1, "y":1.25}, + {"label":"@", "x":2, "y":1.25}, + {"label":"#", "x":3, "y":1.25}, + {"label":"$", "x":4, "y":1.25}, + {"label":"%", "x":5, "y":1.25}, + {"label":"^", "x":6, "y":1.25}, + {"label":"&", "x":7, "y":1.25}, + {"label":"*", "x":8, "y":1.25}, + {"label":"(", "x":9, "y":1.25}, + {"label":")", "x":10, "y":1.25}, + {"label":"_", "x":11, "y":1.25}, + {"label":"+", "x":12, "y":1.25}, + {"label":"|", "x":13, "y":1.25}, + {"label":"Delete", "x":14, "y":1.25}, + {"label":"Insert", "x":15.25, "y":1.25}, + {"label":"Home", "x":16.25, "y":1.25}, + {"label":"PgUp", "x":17.25, "y":1.25}, + {"label":"Tab", "x":0, "y":2.25, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.25}, + {"label":"W", "x":2.5, "y":2.25}, + {"label":"E", "x":3.5, "y":2.25}, + {"label":"R", "x":4.5, "y":2.25}, + {"label":"T", "x":5.5, "y":2.25}, + {"label":"Y", "x":6.5, "y":2.25}, + {"label":"U", "x":7.5, "y":2.25}, + {"label":"I", "x":8.5, "y":2.25}, + {"label":"O", "x":9.5, "y":2.25}, + {"label":"P", "x":10.5, "y":2.25}, + {"label":"{", "x":11.5, "y":2.25}, + {"label":"}", "x":12.5, "y":2.25}, + {"label":"Backspace", "x":13.5, "y":2.25, "w":1.5}, + {"label":"Delete", "x":15.25, "y":2.25}, + {"label":"End", "x":16.25, "y":2.25}, + {"label":"PgDn", "x":17.25, "y":2.25}, + {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, + {"label":"A", "x":1.75, "y":3.25}, + {"label":"S", "x":2.75, "y":3.25}, + {"label":"D", "x":3.75, "y":3.25}, + {"label":"F", "x":4.75, "y":3.25}, + {"label":"G", "x":5.75, "y":3.25}, + {"label":"H", "x":6.75, "y":3.25}, + {"label":"J", "x":7.75, "y":3.25}, + {"label":"K", "x":8.75, "y":3.25}, + {"label":"L", "x":9.75, "y":3.25}, + {"label":":", "x":10.75, "y":3.25}, + {"label":"\"", "x":11.75, "y":3.25}, + {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, + {"label":"Shift", "x":0, "y":4.25, "w":1.25}, + {"label":"|", "x":1.25, "y":4.25}, + {"label":"Z", "x":2.25, "y":4.25}, + {"label":"X", "x":3.25, "y":4.25}, + {"label":"C", "x":4.25, "y":4.25}, + {"label":"V", "x":5.25, "y":4.25}, + {"label":"B", "x":6.25, "y":4.25}, + {"label":"N", "x":7.25, "y":4.25}, + {"label":"M", "x":8.25, "y":4.25}, + {"label":"<", "x":9.25, "y":4.25}, + {"label":">", "x":10.25, "y":4.25}, + {"label":"?", "x":11.25, "y":4.25}, + {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, + {"label":"\u2191", "x":16.25, "y":4.25}, + {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, + {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, + {"x":3.75, "y":5.25, "w":6.25}, + {"label":"Alt", "x":10, "y":5.25, "w":1.25}, + {"label":"Win", "x":11.25, "y":5.25, "w":1.25}, + {"label":"Menu", "x":12.5, "y":5.25, "w":1.25}, + {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, + {"label":"\u2190", "x":15.25, "y":5.25}, + {"label":"\u2193", "x":16.25, "y":5.25}, + {"label":"\u2192", "x":17.25, "y":5.25} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/studiokestra/galatea/rev1/rev1.c b/keyboards/studiokestra/galatea/rev1/rev1.c new file mode 100644 index 000000000000..f34f9f92002c --- /dev/null +++ b/keyboards/studiokestra/galatea/rev1/rev1.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Studio Kestra + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "rev1.h" diff --git a/keyboards/studiokestra/galatea/rev1/rev1.h b/keyboards/studiokestra/galatea/rev1/rev1.h new file mode 100644 index 000000000000..d3937112926a --- /dev/null +++ b/keyboards/studiokestra/galatea/rev1/rev1.h @@ -0,0 +1,49 @@ +/* Copyright 2021 Studio Kestra + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT_all(\ + k0000, k0100, k0001, k0002, k0102, k0003, k0103, k0004, k0104, k0005, k0105, k0006, k0106, k0007, k0107, k0008, k0108, \ + k0200, k0300, k0201, k0301, k0202, k0302, k0203, k0303, k0204, k0304, k0205, k0305, k0206, k0306, k0207, k0307, k0208, k0308, \ + k0400, k0500, k0401, k0501, k0402, k0502, k0403, k0503, k0404, k0504, k0405, k0505, k0406, k0407, k0507, k0408, k0508, \ + k0600, k0700, k0601, k0701, k0602, k0702, k0603, k0703, k0604, k0704, k0605, k0705, k0606, \ + k0800, k0900, k0801, k0901, k0802, k0902, k0803, k0903, k0804, k0904, k0805, k0905, k0806, k0807, k0808, \ + k1000, k1100, k1001, k1003, k1005, k1105, k1006, k1007, k1107, k1008, k1108 \ +) { \ + { k0000, k0001, k0002, k0003, k0004, k0005, k0006, k0007, k0008 }, \ + { k0100, KC_NO, k0102, k0103, k0104, k0105, k0106, k0107, k0108 }, \ + { k0200, k0201, k0202, k0203, k0204, k0205, k0206, k0207, k0208 }, \ + { k0300, k0301, k0302, k0303, k0304, k0305, k0306, k0307, k0308 }, \ + { k0400, k0401, k0402, k0403, k0404, k0405, k0406, k0407, k0408 }, \ + { k0500, k0501, k0502, k0503, k0504, k0505, KC_NO, k0507, k0508 }, \ + { k0600, k0601, k0602, k0603, k0604, k0605, k0606, KC_NO, KC_NO }, \ + { k0700, k0701, k0702, k0703, k0704, k0705, KC_NO, KC_NO, KC_NO }, \ + { k0800, k0801, k0802, k0803, k0804, k0805, k0806, k0807, k0808 }, \ + { k0900, k0901, k0902, k0903, k0904, k0905, KC_NO, KC_NO, KC_NO }, \ + { k1000, k1001, KC_NO, k1003, KC_NO, k1005, k1006, k1007, k1008 }, \ + { k1100, KC_NO, KC_NO, KC_NO, KC_NO, k1105, KC_NO, k1107, k1108 } \ +} diff --git a/keyboards/studiokestra/galatea/rev1/rules.mk b/keyboards/studiokestra/galatea/rev1/rules.mk new file mode 100644 index 000000000000..74047d4dec7d --- /dev/null +++ b/keyboards/studiokestra/galatea/rev1/rules.mk @@ -0,0 +1,19 @@ +# 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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/studiokestra/galatea/rev2/config.h b/keyboards/studiokestra/galatea/rev2/config.h new file mode 100644 index 000000000000..4e0170a0f933 --- /dev/null +++ b/keyboards/studiokestra/galatea/rev2/config.h @@ -0,0 +1,21 @@ +/* +Copyright 2021 Studio Kestra + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#define PRODUCT_ID 0x8802 +#define DEVICE_VER 0x0002 diff --git a/keyboards/studiokestra/galatea/rev2/info.json b/keyboards/studiokestra/galatea/rev2/info.json new file mode 100644 index 000000000000..46e07d7a4301 --- /dev/null +++ b/keyboards/studiokestra/galatea/rev2/info.json @@ -0,0 +1,101 @@ +{ + "keyboard_name": "Galatea", + "url": "https://studiokestra.ca/galatea", + "maintainer": "Studio Kestra", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":1.25, "y":0}, + {"label":"F2", "x":2.25, "y":0}, + {"label":"F3", "x":3.25, "y":0}, + {"label":"F4", "x":4.25, "y":0}, + {"label":"F5", "x":5.5, "y":0}, + {"label":"F6", "x":6.5, "y":0}, + {"label":"F7", "x":7.5, "y":0}, + {"label":"F8", "x":8.5, "y":0}, + {"label":"F9", "x":9.75, "y":0}, + {"label":"F10", "x":10.75, "y":0}, + {"label":"F11", "x":11.75, "y":0}, + {"label":"F12", "x":12.75, "y":0}, + {"label":"F13", "x":14, "y":0}, + {"label":"PrtSc", "x":15.25, "y":0}, + {"label":"Scroll Lock", "x":16.25, "y":0}, + {"label":"Pause", "x":17.25, "y":0}, + {"label":"~", "x":0, "y":1.25}, + {"label":"!", "x":1, "y":1.25}, + {"label":"@", "x":2, "y":1.25}, + {"label":"#", "x":3, "y":1.25}, + {"label":"$", "x":4, "y":1.25}, + {"label":"%", "x":5, "y":1.25}, + {"label":"^", "x":6, "y":1.25}, + {"label":"&", "x":7, "y":1.25}, + {"label":"*", "x":8, "y":1.25}, + {"label":"(", "x":9, "y":1.25}, + {"label":")", "x":10, "y":1.25}, + {"label":"_", "x":11, "y":1.25}, + {"label":"+", "x":12, "y":1.25}, + {"label":"|", "x":13, "y":1.25}, + {"label":"Delete", "x":14, "y":1.25}, + {"label":"Insert", "x":15.25, "y":1.25}, + {"label":"Home", "x":16.25, "y":1.25}, + {"label":"PgUp", "x":17.25, "y":1.25}, + {"label":"Tab", "x":0, "y":2.25, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.25}, + {"label":"W", "x":2.5, "y":2.25}, + {"label":"E", "x":3.5, "y":2.25}, + {"label":"R", "x":4.5, "y":2.25}, + {"label":"T", "x":5.5, "y":2.25}, + {"label":"Y", "x":6.5, "y":2.25}, + {"label":"U", "x":7.5, "y":2.25}, + {"label":"I", "x":8.5, "y":2.25}, + {"label":"O", "x":9.5, "y":2.25}, + {"label":"P", "x":10.5, "y":2.25}, + {"label":"{", "x":11.5, "y":2.25}, + {"label":"}", "x":12.5, "y":2.25}, + {"label":"Backspace", "x":13.5, "y":2.25, "w":1.5}, + {"label":"Delete", "x":15.25, "y":2.25}, + {"label":"End", "x":16.25, "y":2.25}, + {"label":"PgDn", "x":17.25, "y":2.25}, + {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, + {"label":"A", "x":1.75, "y":3.25}, + {"label":"S", "x":2.75, "y":3.25}, + {"label":"D", "x":3.75, "y":3.25}, + {"label":"F", "x":4.75, "y":3.25}, + {"label":"G", "x":5.75, "y":3.25}, + {"label":"H", "x":6.75, "y":3.25}, + {"label":"J", "x":7.75, "y":3.25}, + {"label":"K", "x":8.75, "y":3.25}, + {"label":"L", "x":9.75, "y":3.25}, + {"label":":", "x":10.75, "y":3.25}, + {"label":"\"", "x":11.75, "y":3.25}, + {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, + {"label":"Shift", "x":0, "y":4.25, "w":1.25}, + {"label":"|", "x":1.25, "y":4.25}, + {"label":"Z", "x":2.25, "y":4.25}, + {"label":"X", "x":3.25, "y":4.25}, + {"label":"C", "x":4.25, "y":4.25}, + {"label":"V", "x":5.25, "y":4.25}, + {"label":"B", "x":6.25, "y":4.25}, + {"label":"N", "x":7.25, "y":4.25}, + {"label":"M", "x":8.25, "y":4.25}, + {"label":"<", "x":9.25, "y":4.25}, + {"label":">", "x":10.25, "y":4.25}, + {"label":"?", "x":11.25, "y":4.25}, + {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, + {"label":"\u2191", "x":16.25, "y":4.25}, + {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, + {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, + {"x":3.75, "y":5.25, "w":6.25}, + {"label":"Alt", "x":10, "y":5.25, "w":1.25}, + {"label":"Win", "x":11.25, "y":5.25, "w":1.25}, + {"label":"Menu", "x":12.5, "y":5.25, "w":1.25}, + {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, + {"label":"\u2190", "x":15.25, "y":5.25}, + {"label":"\u2193", "x":16.25, "y":5.25}, + {"label":"\u2192", "x":17.25, "y":5.25} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/studiokestra/galatea/rev2/rev2.c b/keyboards/studiokestra/galatea/rev2/rev2.c new file mode 100644 index 000000000000..5e7125b0b61f --- /dev/null +++ b/keyboards/studiokestra/galatea/rev2/rev2.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Studio Kestra + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "rev2.h" diff --git a/keyboards/studiokestra/galatea/rev2/rev2.h b/keyboards/studiokestra/galatea/rev2/rev2.h new file mode 100644 index 000000000000..d3937112926a --- /dev/null +++ b/keyboards/studiokestra/galatea/rev2/rev2.h @@ -0,0 +1,49 @@ +/* Copyright 2021 Studio Kestra + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT_all(\ + k0000, k0100, k0001, k0002, k0102, k0003, k0103, k0004, k0104, k0005, k0105, k0006, k0106, k0007, k0107, k0008, k0108, \ + k0200, k0300, k0201, k0301, k0202, k0302, k0203, k0303, k0204, k0304, k0205, k0305, k0206, k0306, k0207, k0307, k0208, k0308, \ + k0400, k0500, k0401, k0501, k0402, k0502, k0403, k0503, k0404, k0504, k0405, k0505, k0406, k0407, k0507, k0408, k0508, \ + k0600, k0700, k0601, k0701, k0602, k0702, k0603, k0703, k0604, k0704, k0605, k0705, k0606, \ + k0800, k0900, k0801, k0901, k0802, k0902, k0803, k0903, k0804, k0904, k0805, k0905, k0806, k0807, k0808, \ + k1000, k1100, k1001, k1003, k1005, k1105, k1006, k1007, k1107, k1008, k1108 \ +) { \ + { k0000, k0001, k0002, k0003, k0004, k0005, k0006, k0007, k0008 }, \ + { k0100, KC_NO, k0102, k0103, k0104, k0105, k0106, k0107, k0108 }, \ + { k0200, k0201, k0202, k0203, k0204, k0205, k0206, k0207, k0208 }, \ + { k0300, k0301, k0302, k0303, k0304, k0305, k0306, k0307, k0308 }, \ + { k0400, k0401, k0402, k0403, k0404, k0405, k0406, k0407, k0408 }, \ + { k0500, k0501, k0502, k0503, k0504, k0505, KC_NO, k0507, k0508 }, \ + { k0600, k0601, k0602, k0603, k0604, k0605, k0606, KC_NO, KC_NO }, \ + { k0700, k0701, k0702, k0703, k0704, k0705, KC_NO, KC_NO, KC_NO }, \ + { k0800, k0801, k0802, k0803, k0804, k0805, k0806, k0807, k0808 }, \ + { k0900, k0901, k0902, k0903, k0904, k0905, KC_NO, KC_NO, KC_NO }, \ + { k1000, k1001, KC_NO, k1003, KC_NO, k1005, k1006, k1007, k1008 }, \ + { k1100, KC_NO, KC_NO, KC_NO, KC_NO, k1105, KC_NO, k1107, k1108 } \ +} diff --git a/keyboards/studiokestra/galatea/rev2/rules.mk b/keyboards/studiokestra/galatea/rev2/rules.mk new file mode 100644 index 000000000000..afed76d6b6d9 --- /dev/null +++ b/keyboards/studiokestra/galatea/rev2/rules.mk @@ -0,0 +1,19 @@ +# 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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/studiokestra/galatea/rules.mk b/keyboards/studiokestra/galatea/rules.mk new file mode 100644 index 000000000000..c60419c59e68 --- /dev/null +++ b/keyboards/studiokestra/galatea/rules.mk @@ -0,0 +1 @@ +DEFAULT_FOLDER = studiokestra/galatea/rev1 diff --git a/keyboards/studiokestra/nue/info.json b/keyboards/studiokestra/nue/info.json index 457acd8d9c27..9abe8f3e5c85 100644 --- a/keyboards/studiokestra/nue/info.json +++ b/keyboards/studiokestra/nue/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Nue", "url": "https://studiokestra.ca/nue", "maintainer": "Studio Kestra", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/studiokestra/nue/rules.mk b/keyboards/studiokestra/nue/rules.mk index 59fb880c7ae1..21bda2a32242 100644 --- a/keyboards/studiokestra/nue/rules.mk +++ b/keyboards/studiokestra/nue/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/subatomic/config.h b/keyboards/subatomic/config.h index b19339ad6cb4..47fcc72fd2c4 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -75,5 +74,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -#endif diff --git a/keyboards/subatomic/info.json b/keyboards/subatomic/info.json index 7c09d96002cb..b4a18c348773 100644 --- a/keyboards/subatomic/info.json +++ b/keyboards/subatomic/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Subatomic", "url": "", "maintainer": "qmk", - "width": 14, - "height": 5, "layouts": { "LAYOUT_ortho_5x14": { - "key_count": 70, "layout": [ {"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, @@ -82,7 +79,6 @@ }, "LAYOUT_ortho_5x14_1x2uC": { - "key_count": 69, "layout": [ {"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, @@ -157,7 +153,6 @@ }, "LAYOUT_ortho_5x14_2x2u": { - "key_count": 68, "layout": [ {"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, diff --git a/keyboards/subatomic/rules.mk b/keyboards/subatomic/rules.mk index 0d77351f3263..0aa294528e30 100644 --- a/keyboards/subatomic/rules.mk +++ b/keyboards/subatomic/rules.mk @@ -2,32 +2,19 @@ MCU = at90usb1286 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = yes # MIDI controls -AUDIO_ENABLE = no # Audio output -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +MIDI_ENABLE = yes # MIDI support +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -API_SYSEX_ENABLE = no - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend diff --git a/keyboards/suihankey/alpha/alpha.c b/keyboards/suihankey/alpha/alpha.c index 3d2d1de77905..1c2936e1574a 100644 --- a/keyboards/suihankey/alpha/alpha.c +++ b/keyboards/suihankey/alpha/alpha.c @@ -14,38 +14,3 @@ * along with this program. If not, see . */ #include "alpha.h" - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -/* - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - -*/ diff --git a/keyboards/suihankey/alpha/config.h b/keyboards/suihankey/alpha/config.h index ff0498abb440..b11478adfcbc 100644 --- a/keyboards/suihankey/alpha/config.h +++ b/keyboards/suihankey/alpha/config.h @@ -118,59 +118,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -189,26 +136,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/suihankey/alpha/info.json b/keyboards/suihankey/alpha/info.json index 3d914662ff03..70029e17c9ee 100644 --- a/keyboards/suihankey/alpha/info.json +++ b/keyboards/suihankey/alpha/info.json @@ -2,8 +2,6 @@ "keyboard_name": "suihankey", "url": "https://kakunpc.booth.pm/", "maintainer": "kakunpc", - "width": 6.4, - "height": 4.85, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/suihankey/alpha/keymaps/default/keymap.c b/keyboards/suihankey/alpha/keymaps/default/keymap.c index e7c7da4b8bd3..b682f0f15d70 100644 --- a/keyboards/suihankey/alpha/keymaps/default/keymap.c +++ b/keyboards/suihankey/alpha/keymaps/default/keymap.c @@ -55,24 +55,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} - -#ifdef OLED_DRIVER_ENABLE -void oled_task_user(void) { +#ifdef OLED_ENABLE +bool oled_task_user(void) { oled_write_P(PSTR("Layer: "), false); switch (biton32(layer_state)) { case BASE: @@ -96,5 +80,7 @@ void oled_task_user(void) { oled_write_P(IS_HOST_LED_ON(USB_LED_NUM_LOCK) ? PSTR("NUMLCK ") : PSTR(" "), false); oled_write_P(IS_HOST_LED_ON(USB_LED_CAPS_LOCK) ? PSTR("CAPLCK ") : PSTR(" "), false); oled_write_P(IS_HOST_LED_ON(USB_LED_SCROLL_LOCK) ? PSTR("SCRLCK ") : PSTR(" "), false); + + return false; } #endif diff --git a/keyboards/suihankey/rev1/config.h b/keyboards/suihankey/rev1/config.h index 889cb0cad219..b2801cd86220 100644 --- a/keyboards/suihankey/rev1/config.h +++ b/keyboards/suihankey/rev1/config.h @@ -118,59 +118,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -189,26 +136,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/suihankey/rev1/info.json b/keyboards/suihankey/rev1/info.json index 3d914662ff03..70029e17c9ee 100644 --- a/keyboards/suihankey/rev1/info.json +++ b/keyboards/suihankey/rev1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "suihankey", "url": "https://kakunpc.booth.pm/", "maintainer": "kakunpc", - "width": 6.4, - "height": 4.85, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/suihankey/rev1/keymaps/default/keymap.c b/keyboards/suihankey/rev1/keymaps/default/keymap.c index e7c7da4b8bd3..b682f0f15d70 100644 --- a/keyboards/suihankey/rev1/keymaps/default/keymap.c +++ b/keyboards/suihankey/rev1/keymaps/default/keymap.c @@ -55,24 +55,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} - -#ifdef OLED_DRIVER_ENABLE -void oled_task_user(void) { +#ifdef OLED_ENABLE +bool oled_task_user(void) { oled_write_P(PSTR("Layer: "), false); switch (biton32(layer_state)) { case BASE: @@ -96,5 +80,7 @@ void oled_task_user(void) { oled_write_P(IS_HOST_LED_ON(USB_LED_NUM_LOCK) ? PSTR("NUMLCK ") : PSTR(" "), false); oled_write_P(IS_HOST_LED_ON(USB_LED_CAPS_LOCK) ? PSTR("CAPLCK ") : PSTR(" "), false); oled_write_P(IS_HOST_LED_ON(USB_LED_SCROLL_LOCK) ? PSTR("SCRLCK ") : PSTR(" "), false); + + return false; } #endif diff --git a/keyboards/suihankey/rev1/rev1.c b/keyboards/suihankey/rev1/rev1.c index f97e6caed426..40ff30e62029 100644 --- a/keyboards/suihankey/rev1/rev1.c +++ b/keyboards/suihankey/rev1/rev1.c @@ -14,38 +14,3 @@ * along with this program. If not, see . */ #include "rev1.h" - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -/* - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - -*/ diff --git a/keyboards/suihankey/rules.mk b/keyboards/suihankey/rules.mk index 706d6464e25e..bd11c32366ff 100644 --- a/keyboards/suihankey/rules.mk +++ b/keyboards/suihankey/rules.mk @@ -2,34 +2,23 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 -OLED_DRIVER_ENABLE = yes +AUDIO_ENABLE = no # Audio output +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 SPLIT_KEYBOARD = no DEFAULT_FOLDER = suihankey/rev1 diff --git a/keyboards/suihankey/split/alpha/alpha.c b/keyboards/suihankey/split/alpha/alpha.c index 3d2d1de77905..1c2936e1574a 100644 --- a/keyboards/suihankey/split/alpha/alpha.c +++ b/keyboards/suihankey/split/alpha/alpha.c @@ -14,38 +14,3 @@ * along with this program. If not, see . */ #include "alpha.h" - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -/* - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - -*/ diff --git a/keyboards/suihankey/split/alpha/config.h b/keyboards/suihankey/split/alpha/config.h index b0e4311bef77..ae5acdbd4bbd 100644 --- a/keyboards/suihankey/split/alpha/config.h +++ b/keyboards/suihankey/split/alpha/config.h @@ -118,59 +118,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -189,26 +136,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/suihankey/split/info.json b/keyboards/suihankey/split/info.json index e95f2bd9cece..2f40949f6b5c 100644 --- a/keyboards/suihankey/split/info.json +++ b/keyboards/suihankey/split/info.json @@ -2,8 +2,6 @@ "keyboard_name": "suihankey_split", "url": "https://kakunpc.booth.pm/", "maintainer": "kakunpc", - "width": 13.2, - "height": 4.85, "layouts": { "LAYOUT_split_3x5_3": { "layout": [ diff --git a/keyboards/suihankey/split/keymaps/default/keymap.c b/keyboards/suihankey/split/keymaps/default/keymap.c index e844db9ed571..a48072d9f27c 100644 --- a/keyboards/suihankey/split/keymaps/default/keymap.c +++ b/keyboards/suihankey/split/keymaps/default/keymap.c @@ -54,19 +54,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO ), }; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/suihankey/split/rev1/config.h b/keyboards/suihankey/split/rev1/config.h index 362816327cbf..6b7dd2bac90d 100644 --- a/keyboards/suihankey/split/rev1/config.h +++ b/keyboards/suihankey/split/rev1/config.h @@ -118,59 +118,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -189,26 +136,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/suihankey/split/rev1/rev1.c b/keyboards/suihankey/split/rev1/rev1.c index f97e6caed426..40ff30e62029 100644 --- a/keyboards/suihankey/split/rev1/rev1.c +++ b/keyboards/suihankey/split/rev1/rev1.c @@ -14,38 +14,3 @@ * along with this program. If not, see . */ #include "rev1.h" - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -/* - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - -*/ diff --git a/keyboards/suihankey/split/rules.mk b/keyboards/suihankey/split/rules.mk index b5d2dc8e8104..f0bdf744eebe 100644 --- a/keyboards/suihankey/split/rules.mk +++ b/keyboards/suihankey/split/rules.mk @@ -1,4 +1,4 @@ -OLED_DRIVER_ENABLE = no +OLED_ENABLE = no SPLIT_KEYBOARD = yes DEFAULT_FOLDER = suihankey/split/rev1 diff --git a/keyboards/superuser/ext/config.h b/keyboards/superuser/ext/config.h new file mode 100644 index 000000000000..77583a582583 --- /dev/null +++ b/keyboards/superuser/ext/config.h @@ -0,0 +1,54 @@ +/* +Copyright 2021 superuser + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x5355 +#define PRODUCT_ID 0x4558 +#define DEVICE_VER 0x0001 +#define MANUFACTURER superuser +#define PRODUCT ext + + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 19 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 } +#define MATRIX_COL_PINS { B2, B1, F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, E6, B0, B3} +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +#define LED_CAPS_LOCK_PIN B7 diff --git a/keyboards/superuser/ext/ext.c b/keyboards/superuser/ext/ext.c new file mode 100644 index 000000000000..0715f7d808a5 --- /dev/null +++ b/keyboards/superuser/ext/ext.c @@ -0,0 +1,16 @@ +/* Copyright 2021 superuser + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "ext.h" diff --git a/keyboards/superuser/ext/ext.h b/keyboards/superuser/ext/ext.h new file mode 100644 index 000000000000..3bed0782d2db --- /dev/null +++ b/keyboards/superuser/ext/ext.h @@ -0,0 +1,104 @@ +/* Copyright 2021 superuser + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define ___ KC_NO + +/* + * ┌───┬───┐┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐┌───┬───┬───┐ ┌───────┐ + * │00 │01 ││02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │0E │0F │2E ││0G │0H │0I │ │0F │ 2u Backspace + * ├───┼───┤├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤├───┼───┼───┤ └─┬─────┤ + * │10 │11 ││12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │1E │1F ││1G │1H │1I │ │ │ + * 2.25u ├───┼───┤├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤└───┴───┴───┘ ┌──┴┐2F │ ISO Enter + * LShift │20 │21 ││22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2D │2F │ │1F │ │ + * ┌────────┐ ├───┼───┤├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ ┌─┴───┴────┤ + * │32 │ │30 │31 ││32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │3E │3F │ │3H │ │3E │ 2.75u RShift + * └────────┘ ├───┼───┤├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤┌───┼───┼───┐ └──────────┘ + * │40 │41 ││42 │43 │44 │48 │4D │4E │4F ││4G │4H │4I │ + * └───┴───┘└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘└───┴───┴───┘ + */ + +#define LAYOUT_all(\ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K2E, 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, K2C, K2D, K2F, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3H, \ + K40, K41, K42, K43, K44, K48, K4D, K4E, K4F, K4G, K4H, K4I \ +) { \ + { 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, K1D, K1E, K1F, K1G, K1H, K1I }, \ + { 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, ___, K3H, ___ }, \ + { K40, K41, K42, K43, K44, ___, ___, ___, K48, ___, ___, ___, ___, K4D, K4E, K4F, K4G, K4H, K4I } \ +} + +#define LAYOUT_ansi(\ + 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, K1D, K1E, K1F, K1G, K1H, K1I, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2F, \ + K30, K31, K32, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3H, \ + K40, K41, K42, K43, K44, K48, K4D, K4E, K4F, K4G, K4H, K4I \ +) { \ + { 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, K1D, K1E, K1F, K1G, K1H, K1I }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, ___, K2F, ___, ___, ___ }, \ + { K30, K31, K32, ___, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, ___, ___, K3H, ___ }, \ + { K40, K41, K42, K43, K44, ___, ___, ___, K48, ___, ___, ___, ___, K4D, K4E, K4F, K4G, K4H, K4I } \ +} + +#define LAYOUT_ansi_split_bs_rshift(\ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K2E, 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, K2C, K2D, K2F, \ + K30, K31, K32, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3H, \ + K40, K41, K42, K43, K44, K48, K4D, K4E, K4F, K4G, K4H, K4I \ +) { \ + { 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, K1D, K1E, K1F, K1G, K1H, K1I }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, ___, ___, ___ }, \ + { K30, K31, K32, ___, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, ___, K3H, ___ }, \ + { K40, K41, K42, K43, K44, ___, ___, ___, K48, ___, ___, ___, ___, K4D, K4E, K4F, K4G, K4H, K4I } \ +} + +#define LAYOUT_iso(\ + 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, K1D, K1E, K1G, K1H, K1I, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K1F, K2F, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3H, \ + K40, K41, K42, K43, K44, K48, K4D, K4E, K4F, K4G, K4H, K4I \ +) { \ + { 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, K1D, K1E, K1F, K1G, K1H, K1I }, \ + { K20, K21, 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, K3C, K3D, K3E, ___, ___, K3H, ___ }, \ + { K40, K41, K42, K43, K44, ___, ___, ___, K48, ___, ___, ___, ___, K4D, K4E, K4F, K4G, K4H, K4I } \ +} + +#define LAYOUT_iso_split_bs_rshift(\ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K2E, K0G, K0H, K0I, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1G, K1H, K1I, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K1F, K2F, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3H, \ + K40, K41, K42, K43, K44, K48, K4D, K4E, K4F, K4G, K4H, K4I \ +) { \ + { 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, K1D, K1E, K1F, K1G, K1H, K1I }, \ + { 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, ___, K3H, ___ }, \ + { K40, K41, K42, K43, K44, ___, ___, ___, K48, ___, ___, ___, ___, K4D, K4E, K4F, K4G, K4H, K4I } \ +} diff --git a/keyboards/superuser/ext/info.json b/keyboards/superuser/ext/info.json new file mode 100644 index 000000000000..c19fc3a91334 --- /dev/null +++ b/keyboards/superuser/ext/info.json @@ -0,0 +1,459 @@ +{ + "keyboard_name": "ext", + "url": "", + "maintainer": "kaylanm", + "layout_aliases": { + "LAYOUT_tkl": "LAYOUT_all" + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"F1", "x":0, "y":0}, + {"label":"F2", "x":1, "y":0}, + {"label":"`~", "x":2.25, "y":0}, + {"label":"1!", "x":3.25, "y":0}, + {"label":"2@", "x":4.25, "y":0}, + {"label":"3#", "x":5.25, "y":0}, + {"label":"4$", "x":6.25, "y":0}, + {"label":"5%", "x":7.25, "y":0}, + {"label":"6^", "x":8.25, "y":0}, + {"label":"7&", "x":9.25, "y":0}, + {"label":"8*", "x":10.25, "y":0}, + {"label":"9(", "x":11.25, "y":0}, + {"label":"0)", "x":12.25, "y":0}, + {"label":"-_", "x":13.25, "y":0}, + {"label":"=+", "x":14.25, "y":0}, + {"label":"Bksp", "x":15.25, "y":0}, + {"label":"Bksp", "x":16.25, "y":0}, + {"label":"Insert", "x":17.5, "y":0}, + {"label":"Home", "x":18.5, "y":0}, + {"label":"PgUp", "x":19.5, "y":0}, + + {"label":"F3", "x":0, "y":1}, + {"label":"F4", "x":1, "y":1}, + {"label":"Tab", "x":2.25, "y":1, "w":1.5}, + {"label":"Q", "x":3.75, "y":1}, + {"label":"W", "x":4.75, "y":1}, + {"label":"E", "x":5.75, "y":1}, + {"label":"R", "x":6.75, "y":1}, + {"label":"T", "x":7.75, "y":1}, + {"label":"Y", "x":8.75, "y":1}, + {"label":"U", "x":9.75, "y":1}, + {"label":"I", "x":10.75, "y":1}, + {"label":"O", "x":11.75, "y":1}, + {"label":"P", "x":12.75, "y":1}, + {"label":"[{", "x":13.75, "y":1}, + {"label":"]}", "x":14.75, "y":1}, + {"label":"\\|", "x":15.75, "y":1, "w":1.5}, + {"label":"Delete", "x":17.5, "y":1}, + {"label":"End", "x":18.5, "y":1}, + {"label":"PgDn", "x":19.5, "y":1}, + + {"label":"F5", "x":0, "y":2}, + {"label":"F6", "x":1, "y":2}, + {"label":"Caps Lock", "x":2.25, "y":2, "w":1.75}, + {"label":"A", "x":4, "y":2}, + {"label":"S", "x":5, "y":2}, + {"label":"D", "x":6, "y":2}, + {"label":"F", "x":7, "y":2}, + {"label":"G", "x":8, "y":2}, + {"label":"H", "x":9, "y":2}, + {"label":"J", "x":10, "y":2}, + {"label":"K", "x":11, "y":2}, + {"label":"L", "x":12, "y":2}, + {"label":";:", "x":13, "y":2}, + {"label":"'\"", "x":14, "y":2}, + {"label":"Enter", "x":15, "y":2, "w":2.25}, + + {"label":"F7", "x":0, "y":3}, + {"label":"F8", "x":1, "y":3}, + {"label":"Shift", "x":2.25, "y":3, "w":1.25}, + {"label":"\\|", "x":3.5, "y":3}, + {"label":"Z", "x":4.5, "y":3}, + {"label":"X", "x":5.5, "y":3}, + {"label":"C", "x":6.5, "y":3}, + {"label":"V", "x":7.5, "y":3}, + {"label":"B", "x":8.5, "y":3}, + {"label":"N", "x":9.5, "y":3}, + {"label":"M", "x":10.5, "y":3}, + {"label":",<", "x":11.5, "y":3}, + {"label":".>", "x":12.5, "y":3}, + {"label":"/?", "x":13.5, "y":3}, + {"label":"Shift", "x":14.5, "y":3, "w":1.75}, + {"label":"Fn", "x":16.25, "y":3}, + {"label":"\u2191", "x":18.5, "y":3}, + + {"label":"F9", "x":0, "y":4}, + {"label":"F10", "x":1, "y":4}, + {"label":"Ctrl", "x":2.25, "y":4, "w":1.5}, + {"label":"Win", "x":3.75, "y":4}, + {"label":"Alt", "x":4.75, "y":4, "w":1.5}, + {"label":"Space", "x":6.25, "y":4, "w":7}, + {"label":"Alt", "x":13.25, "y":4, "w":1.5}, + {"label":"Win", "x":14.75, "y":4}, + {"label":"Ctrl", "x":15.75, "y":4, "w":1.5}, + {"label":"\u2190", "x":17.5, "y":4}, + {"label":"\u2193", "x":18.5, "y":4}, + {"label":"\u2192", "x":19.5, "y":4} + ] + }, + "LAYOUT_ansi": { + "layout": [ + {"label":"F1", "x":0, "y":0}, + {"label":"F2", "x":1, "y":0}, + {"label":"`~", "x":2.25, "y":0}, + {"label":"1!", "x":3.25, "y":0}, + {"label":"2@", "x":4.25, "y":0}, + {"label":"3#", "x":5.25, "y":0}, + {"label":"4$", "x":6.25, "y":0}, + {"label":"5%", "x":7.25, "y":0}, + {"label":"6^", "x":8.25, "y":0}, + {"label":"7&", "x":9.25, "y":0}, + {"label":"8*", "x":10.25, "y":0}, + {"label":"9(", "x":11.25, "y":0}, + {"label":"0)", "x":12.25, "y":0}, + {"label":"-_", "x":13.25, "y":0}, + {"label":"=+", "x":14.25, "y":0}, + {"label":"Bksp", "x":15.25, "y":0, "w":2}, + {"label":"Insert", "x":17.5, "y":0}, + {"label":"Home", "x":18.5, "y":0}, + {"label":"PgUp", "x":19.5, "y":0}, + + {"label":"F3", "x":0, "y":1}, + {"label":"F4", "x":1, "y":1}, + {"label":"Tab", "x":2.25, "y":1, "w":1.5}, + {"label":"Q", "x":3.75, "y":1}, + {"label":"W", "x":4.75, "y":1}, + {"label":"E", "x":5.75, "y":1}, + {"label":"R", "x":6.75, "y":1}, + {"label":"T", "x":7.75, "y":1}, + {"label":"Y", "x":8.75, "y":1}, + {"label":"U", "x":9.75, "y":1}, + {"label":"I", "x":10.75, "y":1}, + {"label":"O", "x":11.75, "y":1}, + {"label":"P", "x":12.75, "y":1}, + {"label":"[{", "x":13.75, "y":1}, + {"label":"]}", "x":14.75, "y":1}, + {"label":"\\|", "x":15.75, "y":1, "w":1.5}, + {"label":"Delete", "x":17.5, "y":1}, + {"label":"End", "x":18.5, "y":1}, + {"label":"PgDn", "x":19.5, "y":1}, + + {"label":"F5", "x":0, "y":2}, + {"label":"F6", "x":1, "y":2}, + {"label":"Caps Lock", "x":2.25, "y":2, "w":1.75}, + {"label":"A", "x":4, "y":2}, + {"label":"S", "x":5, "y":2}, + {"label":"D", "x":6, "y":2}, + {"label":"F", "x":7, "y":2}, + {"label":"G", "x":8, "y":2}, + {"label":"H", "x":9, "y":2}, + {"label":"J", "x":10, "y":2}, + {"label":"K", "x":11, "y":2}, + {"label":"L", "x":12, "y":2}, + {"label":";:", "x":13, "y":2}, + {"label":"'\"", "x":14, "y":2}, + {"label":"Enter", "x":15, "y":2, "w":2.25}, + + {"label":"F7", "x":0, "y":3}, + {"label":"F8", "x":1, "y":3}, + {"label":"Shift", "x":2.25, "y":3, "w":2.25}, + {"label":"Z", "x":4.5, "y":3}, + {"label":"X", "x":5.5, "y":3}, + {"label":"C", "x":6.5, "y":3}, + {"label":"V", "x":7.5, "y":3}, + {"label":"B", "x":8.5, "y":3}, + {"label":"N", "x":9.5, "y":3}, + {"label":"M", "x":10.5, "y":3}, + {"label":",<", "x":11.5, "y":3}, + {"label":".>", "x":12.5, "y":3}, + {"label":"/?", "x":13.5, "y":3}, + {"label":"Shift", "x":14.5, "y":3, "w":2.75}, + {"label":"\u2191", "x":18.5, "y":3}, + + {"label":"F9", "x":0, "y":4}, + {"label":"F10", "x":1, "y":4}, + {"label":"Ctrl", "x":2.25, "y":4, "w":1.5}, + {"label":"Win", "x":3.75, "y":4}, + {"label":"Alt", "x":4.75, "y":4, "w":1.5}, + {"label":"Space", "x":6.25, "y":4, "w":7}, + {"label":"Alt", "x":13.25, "y":4, "w":1.5}, + {"label":"Win", "x":14.75, "y":4}, + {"label":"Ctrl", "x":15.75, "y":4, "w":1.5}, + {"label":"\u2190", "x":17.5, "y":4}, + {"label":"\u2193", "x":18.5, "y":4}, + {"label":"\u2192", "x":19.5, "y":4} + ] + }, + "LAYOUT_ansi_split_bs_rshift": { + "layout": [ + {"label":"F1", "x":0, "y":0}, + {"label":"F2", "x":1, "y":0}, + {"label":"`~", "x":2.25, "y":0}, + {"label":"1!", "x":3.25, "y":0}, + {"label":"2@", "x":4.25, "y":0}, + {"label":"3#", "x":5.25, "y":0}, + {"label":"4$", "x":6.25, "y":0}, + {"label":"5%", "x":7.25, "y":0}, + {"label":"6^", "x":8.25, "y":0}, + {"label":"7&", "x":9.25, "y":0}, + {"label":"8*", "x":10.25, "y":0}, + {"label":"9(", "x":11.25, "y":0}, + {"label":"0)", "x":12.25, "y":0}, + {"label":"-_", "x":13.25, "y":0}, + {"label":"=+", "x":14.25, "y":0}, + {"label":"Bksp", "x":15.25, "y":0}, + {"label":"Bksp", "x":16.25, "y":0}, + {"label":"Insert", "x":17.5, "y":0}, + {"label":"Home", "x":18.5, "y":0}, + {"label":"PgUp", "x":19.5, "y":0}, + + {"label":"F3", "x":0, "y":1}, + {"label":"F4", "x":1, "y":1}, + {"label":"Tab", "x":2.25, "y":1, "w":1.5}, + {"label":"Q", "x":3.75, "y":1}, + {"label":"W", "x":4.75, "y":1}, + {"label":"E", "x":5.75, "y":1}, + {"label":"R", "x":6.75, "y":1}, + {"label":"T", "x":7.75, "y":1}, + {"label":"Y", "x":8.75, "y":1}, + {"label":"U", "x":9.75, "y":1}, + {"label":"I", "x":10.75, "y":1}, + {"label":"O", "x":11.75, "y":1}, + {"label":"P", "x":12.75, "y":1}, + {"label":"[{", "x":13.75, "y":1}, + {"label":"]}", "x":14.75, "y":1}, + {"label":"\\|", "x":15.75, "y":1, "w":1.5}, + {"label":"Delete", "x":17.5, "y":1}, + {"label":"End", "x":18.5, "y":1}, + {"label":"PgDn", "x":19.5, "y":1}, + + {"label":"F5", "x":0, "y":2}, + {"label":"F6", "x":1, "y":2}, + {"label":"Caps Lock", "x":2.25, "y":2, "w":1.75}, + {"label":"A", "x":4, "y":2}, + {"label":"S", "x":5, "y":2}, + {"label":"D", "x":6, "y":2}, + {"label":"F", "x":7, "y":2}, + {"label":"G", "x":8, "y":2}, + {"label":"H", "x":9, "y":2}, + {"label":"J", "x":10, "y":2}, + {"label":"K", "x":11, "y":2}, + {"label":"L", "x":12, "y":2}, + {"label":";:", "x":13, "y":2}, + {"label":"'\"", "x":14, "y":2}, + {"label":"Enter", "x":15, "y":2, "w":2.25}, + + {"label":"F7", "x":0, "y":3}, + {"label":"F8", "x":1, "y":3}, + {"label":"Shift", "x":2.25, "y":3, "w":2.25}, + {"label":"Z", "x":4.5, "y":3}, + {"label":"X", "x":5.5, "y":3}, + {"label":"C", "x":6.5, "y":3}, + {"label":"V", "x":7.5, "y":3}, + {"label":"B", "x":8.5, "y":3}, + {"label":"N", "x":9.5, "y":3}, + {"label":"M", "x":10.5, "y":3}, + {"label":",<", "x":11.5, "y":3}, + {"label":".>", "x":12.5, "y":3}, + {"label":"/?", "x":13.5, "y":3}, + {"label":"Shift", "x":14.5, "y":3, "w":1.75}, + {"label":"Fn", "x":16.25, "y":3}, + {"label":"\u2191", "x":18.5, "y":3}, + + {"label":"F9", "x":0, "y":4}, + {"label":"F10", "x":1, "y":4}, + {"label":"Ctrl", "x":2.25, "y":4, "w":1.5}, + {"label":"Win", "x":3.75, "y":4}, + {"label":"Alt", "x":4.75, "y":4, "w":1.5}, + {"label":"Space", "x":6.25, "y":4, "w":7}, + {"label":"Alt", "x":13.25, "y":4, "w":1.5}, + {"label":"Win", "x":14.75, "y":4}, + {"label":"Ctrl", "x":15.75, "y":4, "w":1.5}, + {"label":"\u2190", "x":17.5, "y":4}, + {"label":"\u2193", "x":18.5, "y":4}, + {"label":"\u2192", "x":19.5, "y":4} + ] + }, + "LAYOUT_iso": { + "layout": [ + {"label":"F1", "x":0, "y":0}, + {"label":"F2", "x":1, "y":0}, + {"label":"`\u00ac", "x":2.25, "y":0}, + {"label":"1!", "x":3.25, "y":0}, + {"label":"2\"", "x":4.25, "y":0}, + {"label":"3\u00a3", "x":5.25, "y":0}, + {"label":"4$", "x":6.25, "y":0}, + {"label":"5%", "x":7.25, "y":0}, + {"label":"6^", "x":8.25, "y":0}, + {"label":"7&", "x":9.25, "y":0}, + {"label":"8*", "x":10.25, "y":0}, + {"label":"9(", "x":11.25, "y":0}, + {"label":"0)", "x":12.25, "y":0}, + {"label":"-_", "x":13.25, "y":0}, + {"label":"=+", "x":14.25, "y":0}, + {"label":"Bksp", "x":15.25, "y":0, "w":2}, + {"label":"Insert", "x":17.5, "y":0}, + {"label":"Home", "x":18.5, "y":0}, + {"label":"PgUp", "x":19.5, "y":0}, + + {"label":"F3", "x":0, "y":1}, + {"label":"F4", "x":1, "y":1}, + {"label":"Tab", "x":2.25, "y":1, "w":1.5}, + {"label":"Q", "x":3.75, "y":1}, + {"label":"W", "x":4.75, "y":1}, + {"label":"E", "x":5.75, "y":1}, + {"label":"R", "x":6.75, "y":1}, + {"label":"T", "x":7.75, "y":1}, + {"label":"Y", "x":8.75, "y":1}, + {"label":"U", "x":9.75, "y":1}, + {"label":"I", "x":10.75, "y":1}, + {"label":"O", "x":11.75, "y":1}, + {"label":"P", "x":12.75, "y":1}, + {"label":"[{", "x":13.75, "y":1}, + {"label":"]}", "x":14.75, "y":1}, + {"label":"Delete", "x":17.5, "y":1}, + {"label":"End", "x":18.5, "y":1}, + {"label":"PgDn", "x":19.5, "y":1}, + + {"label":"F5", "x":0, "y":2}, + {"label":"F6", "x":1, "y":2}, + {"label":"Caps Lock", "x":2.25, "y":2, "w":1.75}, + {"label":"A", "x":4, "y":2}, + {"label":"S", "x":5, "y":2}, + {"label":"D", "x":6, "y":2}, + {"label":"F", "x":7, "y":2}, + {"label":"G", "x":8, "y":2}, + {"label":"H", "x":9, "y":2}, + {"label":"J", "x":10, "y":2}, + {"label":"K", "x":11, "y":2}, + {"label":"L", "x":12, "y":2}, + {"label":";:", "x":13, "y":2}, + {"label":"'@", "x":14, "y":2}, + {"label":"#~", "x":15, "y":2}, + {"label":"Enter", "x":16, "y":1, "w":1.25, "h":2}, + + {"label":"F7", "x":0, "y":3}, + {"label":"F8", "x":1, "y":3}, + {"label":"Shift", "x":2.25, "y":3, "w":1.25}, + {"label":"\\|", "x":3.5, "y":3}, + {"label":"Z", "x":4.5, "y":3}, + {"label":"X", "x":5.5, "y":3}, + {"label":"C", "x":6.5, "y":3}, + {"label":"V", "x":7.5, "y":3}, + {"label":"B", "x":8.5, "y":3}, + {"label":"N", "x":9.5, "y":3}, + {"label":"M", "x":10.5, "y":3}, + {"label":",<", "x":11.5, "y":3}, + {"label":".>", "x":12.5, "y":3}, + {"label":"/?", "x":13.5, "y":3}, + {"label":"Shift", "x":14.5, "y":3, "w":2.75}, + {"label":"\u2191", "x":18.5, "y":3}, + + {"label":"F9", "x":0, "y":4}, + {"label":"F10", "x":1, "y":4}, + {"label":"Ctrl", "x":2.25, "y":4, "w":1.5}, + {"label":"Win", "x":3.75, "y":4}, + {"label":"Alt", "x":4.75, "y":4, "w":1.5}, + {"label":"Space", "x":6.25, "y":4, "w":7}, + {"label":"Alt", "x":13.25, "y":4, "w":1.5}, + {"label":"Win", "x":14.75, "y":4}, + {"label":"Ctrl", "x":15.75, "y":4, "w":1.5}, + {"label":"\u2190", "x":17.5, "y":4}, + {"label":"\u2193", "x":18.5, "y":4}, + {"label":"\u2192", "x":19.5, "y":4} + ] + }, + "LAYOUT_iso_split_bs_rshift": { + "layout": [ + {"label":"F1", "x":0, "y":0}, + {"label":"F2", "x":1, "y":0}, + {"label":"`\u00ac", "x":2.25, "y":0}, + {"label":"1!", "x":3.25, "y":0}, + {"label":"2\"", "x":4.25, "y":0}, + {"label":"3\u00a3", "x":5.25, "y":0}, + {"label":"4$", "x":6.25, "y":0}, + {"label":"5%", "x":7.25, "y":0}, + {"label":"6^", "x":8.25, "y":0}, + {"label":"7&", "x":9.25, "y":0}, + {"label":"8*", "x":10.25, "y":0}, + {"label":"9(", "x":11.25, "y":0}, + {"label":"0)", "x":12.25, "y":0}, + {"label":"-_", "x":13.25, "y":0}, + {"label":"=+", "x":14.25, "y":0}, + {"label":"Bksp", "x":15.25, "y":0}, + {"label":"Bksp", "x":16.25, "y":0}, + {"label":"Insert", "x":17.5, "y":0}, + {"label":"Home", "x":18.5, "y":0}, + {"label":"PgUp", "x":19.5, "y":0}, + + {"label":"F3", "x":0, "y":1}, + {"label":"F4", "x":1, "y":1}, + {"label":"Tab", "x":2.25, "y":1, "w":1.5}, + {"label":"Q", "x":3.75, "y":1}, + {"label":"W", "x":4.75, "y":1}, + {"label":"E", "x":5.75, "y":1}, + {"label":"R", "x":6.75, "y":1}, + {"label":"T", "x":7.75, "y":1}, + {"label":"Y", "x":8.75, "y":1}, + {"label":"U", "x":9.75, "y":1}, + {"label":"I", "x":10.75, "y":1}, + {"label":"O", "x":11.75, "y":1}, + {"label":"P", "x":12.75, "y":1}, + {"label":"[{", "x":13.75, "y":1}, + {"label":"]}", "x":14.75, "y":1}, + {"label":"Delete", "x":17.5, "y":1}, + {"label":"End", "x":18.5, "y":1}, + {"label":"PgDn", "x":19.5, "y":1}, + + {"label":"F5", "x":0, "y":2}, + {"label":"F6", "x":1, "y":2}, + {"label":"Caps Lock", "x":2.25, "y":2, "w":1.75}, + {"label":"A", "x":4, "y":2}, + {"label":"S", "x":5, "y":2}, + {"label":"D", "x":6, "y":2}, + {"label":"F", "x":7, "y":2}, + {"label":"G", "x":8, "y":2}, + {"label":"H", "x":9, "y":2}, + {"label":"J", "x":10, "y":2}, + {"label":"K", "x":11, "y":2}, + {"label":"L", "x":12, "y":2}, + {"label":";:", "x":13, "y":2}, + {"label":"'@", "x":14, "y":2}, + {"label":"#~", "x":15, "y":2}, + {"label":"Enter", "x":16, "y":1, "w":1.25, "h":2}, + + {"label":"F7", "x":0, "y":3}, + {"label":"F8", "x":1, "y":3}, + {"label":"Shift", "x":2.25, "y":3, "w":1.25}, + {"label":"\\|", "x":3.5, "y":3}, + {"label":"Z", "x":4.5, "y":3}, + {"label":"X", "x":5.5, "y":3}, + {"label":"C", "x":6.5, "y":3}, + {"label":"V", "x":7.5, "y":3}, + {"label":"B", "x":8.5, "y":3}, + {"label":"N", "x":9.5, "y":3}, + {"label":"M", "x":10.5, "y":3}, + {"label":",<", "x":11.5, "y":3}, + {"label":".>", "x":12.5, "y":3}, + {"label":"/?", "x":13.5, "y":3}, + {"label":"Shift", "x":14.5, "y":3, "w":1.75}, + {"label":"Fn", "x":16.25, "y":3}, + {"label":"\u2191", "x":18.5, "y":3}, + + {"label":"F9", "x":0, "y":4}, + {"label":"F10", "x":1, "y":4}, + {"label":"Ctrl", "x":2.25, "y":4, "w":1.5}, + {"label":"Win", "x":3.75, "y":4}, + {"label":"Alt", "x":4.75, "y":4, "w":1.5}, + {"label":"Space", "x":6.25, "y":4, "w":7}, + {"label":"Alt", "x":13.25, "y":4, "w":1.5}, + {"label":"Win", "x":14.75, "y":4}, + {"label":"Ctrl", "x":15.75, "y":4, "w":1.5}, + {"label":"\u2190", "x":17.5, "y":4}, + {"label":"\u2193", "x":18.5, "y":4}, + {"label":"\u2192", "x":19.5, "y":4} + ] + } + } +} diff --git a/keyboards/superuser/ext/keymaps/default/keymap.c b/keyboards/superuser/ext/keymaps/default/keymap.c new file mode 100644 index 000000000000..85a9bb91f6bd --- /dev/null +++ b/keyboards/superuser/ext/keymaps/default/keymap.c @@ -0,0 +1,33 @@ +/* Copyright 2021 superuser + + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_all( + KC_F1, KC_F2, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_F7, KC_F8, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, + KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; diff --git a/keyboards/superuser/ext/keymaps/default/readme.md b/keyboards/superuser/ext/keymaps/default/readme.md new file mode 100644 index 000000000000..846c97d3bec9 --- /dev/null +++ b/keyboards/superuser/ext/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for ext diff --git a/keyboards/superuser/ext/keymaps/via/keymap.c b/keyboards/superuser/ext/keymaps/via/keymap.c new file mode 100644 index 000000000000..78b258d526b8 --- /dev/null +++ b/keyboards/superuser/ext/keymaps/via/keymap.c @@ -0,0 +1,49 @@ +/* Copyright 2021 superuser + + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_all( + KC_F1, KC_F2, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_F7, KC_F8, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, + KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +}; + diff --git a/keyboards/superuser/ext/keymaps/via/readme.md b/keyboards/superuser/ext/keymaps/via/readme.md new file mode 100644 index 000000000000..f17cd8212afb --- /dev/null +++ b/keyboards/superuser/ext/keymaps/via/readme.md @@ -0,0 +1 @@ +# The default VIA keymap for ext diff --git a/keyboards/superuser/ext/keymaps/via/rules.mk b/keyboards/superuser/ext/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/superuser/ext/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/superuser/ext/readme.md b/keyboards/superuser/ext/readme.md new file mode 100644 index 000000000000..3abd75faf8e3 --- /dev/null +++ b/keyboards/superuser/ext/readme.md @@ -0,0 +1,17 @@ +# superuser ext + +An EXT TKL PCB supporting 7u bottom row only. + +* Keyboard Maintainer: [kaylanm](https://github.com/kaylanm) +* Hardware Supported: superuser ext +* Hardware Availability: Group buy + +Make example for this keyboard (after setting up your build environment): + + make superuser/ext: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). + +## hardware information + +One LED only, in caps lock. diff --git a/keyboards/superuser/ext/rules.mk b/keyboards/superuser/ext/rules.mk new file mode 100644 index 000000000000..77e4f16a2016 --- /dev/null +++ b/keyboards/superuser/ext/rules.mk @@ -0,0 +1,20 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = qmk-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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +LTO_ENABLE = yes diff --git a/keyboards/superuser/frl/config.h b/keyboards/superuser/frl/config.h new file mode 100644 index 000000000000..47ff3decf75e --- /dev/null +++ b/keyboards/superuser/frl/config.h @@ -0,0 +1,54 @@ +/* +Copyright 2021 superuser + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x5355 +#define PRODUCT_ID 0x4652 +#define DEVICE_VER 0x0001 +#define MANUFACTURER superuser +#define PRODUCT frl + + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 17 + +/* + * 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 { D0, D1, D2, D3, D5 } +#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, E6, B0, B3} +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +#define LED_CAPS_LOCK_PIN B7 diff --git a/keyboards/superuser/frl/frl.c b/keyboards/superuser/frl/frl.c new file mode 100644 index 000000000000..4ccf168cfa13 --- /dev/null +++ b/keyboards/superuser/frl/frl.c @@ -0,0 +1,16 @@ +/* Copyright 2021 superuser + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "frl.h" diff --git a/keyboards/superuser/frl/frl.h b/keyboards/superuser/frl/frl.h new file mode 100644 index 000000000000..9d1af5068ee4 --- /dev/null +++ b/keyboards/superuser/frl/frl.h @@ -0,0 +1,32 @@ +/* Copyright 2021 superuser + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define LAYOUT_tkl(\ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K312, K114, K115, K116, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, \ + K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K415, \ + K500, K501, K502, K506, K511, K512, K513, K514, K515, K516 \ +) { \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, KC_NO, KC_NO, KC_NO }, \ + { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, KC_NO, K415, KC_NO }, \ + { K500, K501, K502, KC_NO, KC_NO, KC_NO, K506, KC_NO, KC_NO, KC_NO, KC_NO, K511, K512, K513, K514, K515, K516 } \ +} diff --git a/keyboards/superuser/frl/info.json b/keyboards/superuser/frl/info.json new file mode 100644 index 000000000000..d565bcde3844 --- /dev/null +++ b/keyboards/superuser/frl/info.json @@ -0,0 +1,10 @@ +{ + "keyboard_name": "frl", + "url": "", + "maintainer": "superuser", + "layouts": { + "LAYOUT_tkl": { + "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}, {"label":"Bksp", "x":13, "y":0}, {"label":"Bksp", "x":14, "y":0}, {"label":"Insert", "x":15.25, "y":0}, {"label":"Home", "x":16.25, "y":0}, {"label":"PgUp", "x":17.25, "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":"Delete", "x":15.25, "y":1}, {"label":"End", "x":16.25, "y":1}, {"label":"PgDn", "x":17.25, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"label":"|", "x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Fn", "x":14, "y":3}, {"label":"\u2191", "x":16.25, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"Win", "x":12.5, "y":4}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}, {"label":"\u2190", "x":15.25, "y":4}, {"label":"\u2193", "x":16.25, "y":4}, {"label":"\u2192", "x":17.25, "y":4}] + } + } +} diff --git a/keyboards/superuser/frl/keymaps/default/keymap.c b/keyboards/superuser/frl/keymaps/default/keymap.c new file mode 100644 index 000000000000..5dd6d1f1ab50 --- /dev/null +++ b/keyboards/superuser/frl/keymaps/default/keymap.c @@ -0,0 +1,33 @@ +/* Copyright 2021 superuser + + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_tkl( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [1] = LAYOUT_tkl( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; diff --git a/keyboards/superuser/frl/keymaps/default/readme.md b/keyboards/superuser/frl/keymaps/default/readme.md new file mode 100644 index 000000000000..806f56f8321b --- /dev/null +++ b/keyboards/superuser/frl/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for frl diff --git a/keyboards/superuser/frl/keymaps/via/keymap.c b/keyboards/superuser/frl/keymaps/via/keymap.c new file mode 100644 index 000000000000..3f9f3377aca2 --- /dev/null +++ b/keyboards/superuser/frl/keymaps/via/keymap.c @@ -0,0 +1,49 @@ +/* Copyright 2021 superuser + + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_tkl( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [1] = LAYOUT_tkl( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + [2] = LAYOUT_tkl( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + [3] = LAYOUT_tkl( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +}; + diff --git a/keyboards/superuser/frl/keymaps/via/readme.md b/keyboards/superuser/frl/keymaps/via/readme.md new file mode 100644 index 000000000000..e4b8616e1290 --- /dev/null +++ b/keyboards/superuser/frl/keymaps/via/readme.md @@ -0,0 +1 @@ +# The default VIA keymap for frl diff --git a/keyboards/superuser/frl/keymaps/via/rules.mk b/keyboards/superuser/frl/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/superuser/frl/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/superuser/frl/readme.md b/keyboards/superuser/frl/readme.md new file mode 100644 index 000000000000..59c9733ebd91 --- /dev/null +++ b/keyboards/superuser/frl/readme.md @@ -0,0 +1,17 @@ +# superuser frl + +An FRL TKL PCB supporting 7u bottom row only. + +* Keyboard Maintainer: superuser +* Hardware Supported: superuser frl +* Hardware Availability: Group buy + +Make example for this keyboard (after setting up your build environment): + + make superuser/frl: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). + +## hardware information + +One LED only, in caps lock. diff --git a/keyboards/superuser/frl/rules.mk b/keyboards/superuser/frl/rules.mk new file mode 100644 index 000000000000..77e4f16a2016 --- /dev/null +++ b/keyboards/superuser/frl/rules.mk @@ -0,0 +1,20 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = qmk-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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +LTO_ENABLE = yes diff --git a/keyboards/superuser/tkl/config.h b/keyboards/superuser/tkl/config.h new file mode 100644 index 000000000000..e60435e6c090 --- /dev/null +++ b/keyboards/superuser/tkl/config.h @@ -0,0 +1,54 @@ +/* +Copyright 2021 superuser + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x5355 +#define PRODUCT_ID 0x544B +#define DEVICE_VER 0x0001 +#define MANUFACTURER superuser +#define PRODUCT tkl + + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 17 + +/* + * 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 { B2, D0, D1, D2, D3, D5 } +#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, E6, B0, B3} +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +#define LED_CAPS_LOCK_PIN B7 diff --git a/keyboards/superuser/tkl/info.json b/keyboards/superuser/tkl/info.json new file mode 100644 index 000000000000..4ffe5281767b --- /dev/null +++ b/keyboards/superuser/tkl/info.json @@ -0,0 +1,494 @@ +{ + "keyboard_name": "tkl", + "url": "", + "maintainer": "kaylanm", + "layout_aliases": { + "LAYOUT_tkl": "LAYOUT_all" + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":2, "y":0}, + {"label":"F2", "x":3, "y":0}, + {"label":"F3", "x":4, "y":0}, + {"label":"F4", "x":5, "y":0}, + {"label":"F5", "x":6.5, "y":0}, + {"label":"F6", "x":7.5, "y":0}, + {"label":"F7", "x":8.5, "y":0}, + {"label":"F8", "x":9.5, "y":0}, + {"label":"F9", "x":11, "y":0}, + {"label":"F10", "x":12, "y":0}, + {"label":"F11", "x":13, "y":0}, + {"label":"F12", "x":14, "y":0}, + {"label":"PrtSc", "x":15.25, "y":0}, + {"label":"Scroll Lock", "x":16.25, "y":0}, + {"label":"Pause", "x":17.25, "y":0}, + + {"label":"`~", "x":0, "y":1.25}, + {"label":"1!", "x":1, "y":1.25}, + {"label":"2@", "x":2, "y":1.25}, + {"label":"3#", "x":3, "y":1.25}, + {"label":"4$", "x":4, "y":1.25}, + {"label":"5%", "x":5, "y":1.25}, + {"label":"6^", "x":6, "y":1.25}, + {"label":"7&", "x":7, "y":1.25}, + {"label":"8*", "x":8, "y":1.25}, + {"label":"9(", "x":9, "y":1.25}, + {"label":"0)", "x":10, "y":1.25}, + {"label":"-_", "x":11, "y":1.25}, + {"label":"=+", "x":12, "y":1.25}, + {"label":"Bksp", "x":13, "y":1.25}, + {"label":"Bksp", "x":14, "y":1.25}, + {"label":"Insert", "x":15.25, "y":1.25}, + {"label":"Home", "x":16.25, "y":1.25}, + {"label":"PgUp", "x":17.25, "y":1.25}, + + {"label":"Tab", "x":0, "y":2.25, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.25}, + {"label":"W", "x":2.5, "y":2.25}, + {"label":"E", "x":3.5, "y":2.25}, + {"label":"R", "x":4.5, "y":2.25}, + {"label":"T", "x":5.5, "y":2.25}, + {"label":"Y", "x":6.5, "y":2.25}, + {"label":"U", "x":7.5, "y":2.25}, + {"label":"I", "x":8.5, "y":2.25}, + {"label":"O", "x":9.5, "y":2.25}, + {"label":"P", "x":10.5, "y":2.25}, + {"label":"[{", "x":11.5, "y":2.25}, + {"label":"]}", "x":12.5, "y":2.25}, + {"label":"\\|", "x":13.5, "y":2.25, "w":1.5}, + {"label":"Delete", "x":15.25, "y":2.25}, + {"label":"End", "x":16.25, "y":2.25}, + {"label":"PgDn", "x":17.25, "y":2.25}, + + {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, + {"label":"A", "x":1.75, "y":3.25}, + {"label":"S", "x":2.75, "y":3.25}, + {"label":"D", "x":3.75, "y":3.25}, + {"label":"F", "x":4.75, "y":3.25}, + {"label":"G", "x":5.75, "y":3.25}, + {"label":"H", "x":6.75, "y":3.25}, + {"label":"J", "x":7.75, "y":3.25}, + {"label":"K", "x":8.75, "y":3.25}, + {"label":"L", "x":9.75, "y":3.25}, + {"label":";:", "x":10.75, "y":3.25}, + {"label":"'\"", "x":11.75, "y":3.25}, + {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, + + {"label":"Shift", "x":0, "y":4.25, "w":1.25}, + {"label":"\\|", "x":1.25, "y":4.25}, + {"label":"Z", "x":2.25, "y":4.25}, + {"label":"X", "x":3.25, "y":4.25}, + {"label":"C", "x":4.25, "y":4.25}, + {"label":"V", "x":5.25, "y":4.25}, + {"label":"B", "x":6.25, "y":4.25}, + {"label":"N", "x":7.25, "y":4.25}, + {"label":"M", "x":8.25, "y":4.25}, + {"label":",<", "x":9.25, "y":4.25}, + {"label":".>", "x":10.25, "y":4.25}, + {"label":"/?", "x":11.25, "y":4.25}, + {"label":"Shift", "x":12.25, "y":4.25, "w":1.75}, + {"label":"Fn", "x":14, "y":4.25}, + {"label":"\u2191", "x":16.25, "y":4.25}, + + {"label":"Ctrl", "x":0, "y":5.25, "w":1.5}, + {"label":"Win", "x":1.5, "y":5.25}, + {"label":"Alt", "x":2.5, "y":5.25, "w":1.5}, + {"label":"Space", "x":4, "y":5.25, "w":7}, + {"label":"Alt", "x":11, "y":5.25, "w":1.5}, + {"label":"Win", "x":12.5, "y":5.25}, + {"label":"Ctrl", "x":13.5, "y":5.25, "w":1.5}, + {"label":"\u2190", "x":15.25, "y":5.25}, + {"label":"\u2193", "x":16.25, "y":5.25}, + {"label":"\u2192", "x":17.25, "y":5.25} + ] + }, + "LAYOUT_tkl_ansi_tsangan": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":2, "y":0}, + {"label":"F2", "x":3, "y":0}, + {"label":"F3", "x":4, "y":0}, + {"label":"F4", "x":5, "y":0}, + {"label":"F5", "x":6.5, "y":0}, + {"label":"F6", "x":7.5, "y":0}, + {"label":"F7", "x":8.5, "y":0}, + {"label":"F8", "x":9.5, "y":0}, + {"label":"F9", "x":11, "y":0}, + {"label":"F10", "x":12, "y":0}, + {"label":"F11", "x":13, "y":0}, + {"label":"F12", "x":14, "y":0}, + {"label":"PrtSc", "x":15.25, "y":0}, + {"label":"Scroll Lock", "x":16.25, "y":0}, + {"label":"Pause", "x":17.25, "y":0}, + + {"label":"`~", "x":0, "y":1.25}, + {"label":"1!", "x":1, "y":1.25}, + {"label":"2@", "x":2, "y":1.25}, + {"label":"3#", "x":3, "y":1.25}, + {"label":"4$", "x":4, "y":1.25}, + {"label":"5%", "x":5, "y":1.25}, + {"label":"6^", "x":6, "y":1.25}, + {"label":"7&", "x":7, "y":1.25}, + {"label":"8*", "x":8, "y":1.25}, + {"label":"9(", "x":9, "y":1.25}, + {"label":"0)", "x":10, "y":1.25}, + {"label":"-_", "x":11, "y":1.25}, + {"label":"=+", "x":12, "y":1.25}, + {"label":"Bksp", "x":13, "y":1.25, "w":2}, + {"label":"Insert", "x":15.25, "y":1.25}, + {"label":"Home", "x":16.25, "y":1.25}, + {"label":"PgUp", "x":17.25, "y":1.25}, + + {"label":"Tab", "x":0, "y":2.25, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.25}, + {"label":"W", "x":2.5, "y":2.25}, + {"label":"E", "x":3.5, "y":2.25}, + {"label":"R", "x":4.5, "y":2.25}, + {"label":"T", "x":5.5, "y":2.25}, + {"label":"Y", "x":6.5, "y":2.25}, + {"label":"U", "x":7.5, "y":2.25}, + {"label":"I", "x":8.5, "y":2.25}, + {"label":"O", "x":9.5, "y":2.25}, + {"label":"P", "x":10.5, "y":2.25}, + {"label":"[{", "x":11.5, "y":2.25}, + {"label":"]}", "x":12.5, "y":2.25}, + {"label":"\\|", "x":13.5, "y":2.25, "w":1.5}, + {"label":"Delete", "x":15.25, "y":2.25}, + {"label":"End", "x":16.25, "y":2.25}, + {"label":"PgDn", "x":17.25, "y":2.25}, + + {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, + {"label":"A", "x":1.75, "y":3.25}, + {"label":"S", "x":2.75, "y":3.25}, + {"label":"D", "x":3.75, "y":3.25}, + {"label":"F", "x":4.75, "y":3.25}, + {"label":"G", "x":5.75, "y":3.25}, + {"label":"H", "x":6.75, "y":3.25}, + {"label":"J", "x":7.75, "y":3.25}, + {"label":"K", "x":8.75, "y":3.25}, + {"label":"L", "x":9.75, "y":3.25}, + {"label":";:", "x":10.75, "y":3.25}, + {"label":"'\"", "x":11.75, "y":3.25}, + {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, + + {"label":"Shift", "x":0, "y":4.25, "w":2.25}, + {"label":"Z", "x":2.25, "y":4.25}, + {"label":"X", "x":3.25, "y":4.25}, + {"label":"C", "x":4.25, "y":4.25}, + {"label":"V", "x":5.25, "y":4.25}, + {"label":"B", "x":6.25, "y":4.25}, + {"label":"N", "x":7.25, "y":4.25}, + {"label":"M", "x":8.25, "y":4.25}, + {"label":",<", "x":9.25, "y":4.25}, + {"label":".>", "x":10.25, "y":4.25}, + {"label":"/?", "x":11.25, "y":4.25}, + {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, + {"label":"\u2191", "x":16.25, "y":4.25}, + + {"label":"Ctrl", "x":0, "y":5.25, "w":1.5}, + {"label":"Win", "x":1.5, "y":5.25}, + {"label":"Alt", "x":2.5, "y":5.25, "w":1.5}, + {"label":"Space", "x":4, "y":5.25, "w":7}, + {"label":"Alt", "x":11, "y":5.25, "w":1.5}, + {"label":"Win", "x":12.5, "y":5.25}, + {"label":"Ctrl", "x":13.5, "y":5.25, "w":1.5}, + {"label":"\u2190", "x":15.25, "y":5.25}, + {"label":"\u2193", "x":16.25, "y":5.25}, + {"label":"\u2192", "x":17.25, "y":5.25} + ] + }, + "LAYOUT_tkl_ansi_tsangan_split_bs_rshift": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":2, "y":0}, + {"label":"F2", "x":3, "y":0}, + {"label":"F3", "x":4, "y":0}, + {"label":"F4", "x":5, "y":0}, + {"label":"F5", "x":6.5, "y":0}, + {"label":"F6", "x":7.5, "y":0}, + {"label":"F7", "x":8.5, "y":0}, + {"label":"F8", "x":9.5, "y":0}, + {"label":"F9", "x":11, "y":0}, + {"label":"F10", "x":12, "y":0}, + {"label":"F11", "x":13, "y":0}, + {"label":"F12", "x":14, "y":0}, + {"label":"PrtSc", "x":15.25, "y":0}, + {"label":"Scroll Lock", "x":16.25, "y":0}, + {"label":"Pause", "x":17.25, "y":0}, + + {"label":"`~", "x":0, "y":1.25}, + {"label":"1!", "x":1, "y":1.25}, + {"label":"2@", "x":2, "y":1.25}, + {"label":"3#", "x":3, "y":1.25}, + {"label":"4$", "x":4, "y":1.25}, + {"label":"5%", "x":5, "y":1.25}, + {"label":"6^", "x":6, "y":1.25}, + {"label":"7&", "x":7, "y":1.25}, + {"label":"8*", "x":8, "y":1.25}, + {"label":"9(", "x":9, "y":1.25}, + {"label":"0)", "x":10, "y":1.25}, + {"label":"-_", "x":11, "y":1.25}, + {"label":"=+", "x":12, "y":1.25}, + {"label":"Bksp", "x":13, "y":1.25}, + {"label":"Bksp", "x":14, "y":1.25}, + {"label":"Insert", "x":15.25, "y":1.25}, + {"label":"Home", "x":16.25, "y":1.25}, + {"label":"PgUp", "x":17.25, "y":1.25}, + + {"label":"Tab", "x":0, "y":2.25, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.25}, + {"label":"W", "x":2.5, "y":2.25}, + {"label":"E", "x":3.5, "y":2.25}, + {"label":"R", "x":4.5, "y":2.25}, + {"label":"T", "x":5.5, "y":2.25}, + {"label":"Y", "x":6.5, "y":2.25}, + {"label":"U", "x":7.5, "y":2.25}, + {"label":"I", "x":8.5, "y":2.25}, + {"label":"O", "x":9.5, "y":2.25}, + {"label":"P", "x":10.5, "y":2.25}, + {"label":"[{", "x":11.5, "y":2.25}, + {"label":"]}", "x":12.5, "y":2.25}, + {"label":"\\|", "x":13.5, "y":2.25, "w":1.5}, + {"label":"Delete", "x":15.25, "y":2.25}, + {"label":"End", "x":16.25, "y":2.25}, + {"label":"PgDn", "x":17.25, "y":2.25}, + + {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, + {"label":"A", "x":1.75, "y":3.25}, + {"label":"S", "x":2.75, "y":3.25}, + {"label":"D", "x":3.75, "y":3.25}, + {"label":"F", "x":4.75, "y":3.25}, + {"label":"G", "x":5.75, "y":3.25}, + {"label":"H", "x":6.75, "y":3.25}, + {"label":"J", "x":7.75, "y":3.25}, + {"label":"K", "x":8.75, "y":3.25}, + {"label":"L", "x":9.75, "y":3.25}, + {"label":";:", "x":10.75, "y":3.25}, + {"label":"'\"", "x":11.75, "y":3.25}, + {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, + + {"label":"Shift", "x":0, "y":4.25, "w":2.25}, + {"label":"Z", "x":2.25, "y":4.25}, + {"label":"X", "x":3.25, "y":4.25}, + {"label":"C", "x":4.25, "y":4.25}, + {"label":"V", "x":5.25, "y":4.25}, + {"label":"B", "x":6.25, "y":4.25}, + {"label":"N", "x":7.25, "y":4.25}, + {"label":"M", "x":8.25, "y":4.25}, + {"label":",<", "x":9.25, "y":4.25}, + {"label":".>", "x":10.25, "y":4.25}, + {"label":"/?", "x":11.25, "y":4.25}, + {"label":"Shift", "x":12.25, "y":4.25, "w":1.75}, + {"label":"Fn", "x":14, "y":4.25}, + {"label":"\u2191", "x":16.25, "y":4.25}, + + {"label":"Ctrl", "x":0, "y":5.25, "w":1.5}, + {"label":"Win", "x":1.5, "y":5.25}, + {"label":"Alt", "x":2.5, "y":5.25, "w":1.5}, + {"label":"Space", "x":4, "y":5.25, "w":7}, + {"label":"Alt", "x":11, "y":5.25, "w":1.5}, + {"label":"Win", "x":12.5, "y":5.25}, + {"label":"Ctrl", "x":13.5, "y":5.25, "w":1.5}, + {"label":"\u2190", "x":15.25, "y":5.25}, + {"label":"\u2193", "x":16.25, "y":5.25}, + {"label":"\u2192", "x":17.25, "y":5.25} + ] + }, + "LAYOUT_tkl_iso_tsangan": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":2, "y":0}, + {"label":"F2", "x":3, "y":0}, + {"label":"F3", "x":4, "y":0}, + {"label":"F4", "x":5, "y":0}, + {"label":"F5", "x":6.5, "y":0}, + {"label":"F6", "x":7.5, "y":0}, + {"label":"F7", "x":8.5, "y":0}, + {"label":"F8", "x":9.5, "y":0}, + {"label":"F9", "x":11, "y":0}, + {"label":"F10", "x":12, "y":0}, + {"label":"F11", "x":13, "y":0}, + {"label":"F12", "x":14, "y":0}, + {"label":"PrtSc", "x":15.25, "y":0}, + {"label":"Scroll Lock", "x":16.25, "y":0}, + {"label":"Pause", "x":17.25, "y":0}, + + {"label":"`\u00ac", "x":0, "y":1.25}, + {"label":"1!", "x":1, "y":1.25}, + {"label":"2\"", "x":2, "y":1.25}, + {"label":"3\u00a3", "x":3, "y":1.25}, + {"label":"4$", "x":4, "y":1.25}, + {"label":"5%", "x":5, "y":1.25}, + {"label":"6^", "x":6, "y":1.25}, + {"label":"7&", "x":7, "y":1.25}, + {"label":"8*", "x":8, "y":1.25}, + {"label":"9(", "x":9, "y":1.25}, + {"label":"0)", "x":10, "y":1.25}, + {"label":"-_", "x":11, "y":1.25}, + {"label":"=+", "x":12, "y":1.25}, + {"label":"Bksp", "x":13, "y":1.25, "w":2}, + {"label":"Insert", "x":15.25, "y":1.25}, + {"label":"Home", "x":16.25, "y":1.25}, + {"label":"PgUp", "x":17.25, "y":1.25}, + + {"label":"Tab", "x":0, "y":2.25, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.25}, + {"label":"W", "x":2.5, "y":2.25}, + {"label":"E", "x":3.5, "y":2.25}, + {"label":"R", "x":4.5, "y":2.25}, + {"label":"T", "x":5.5, "y":2.25}, + {"label":"Y", "x":6.5, "y":2.25}, + {"label":"U", "x":7.5, "y":2.25}, + {"label":"I", "x":8.5, "y":2.25}, + {"label":"O", "x":9.5, "y":2.25}, + {"label":"P", "x":10.5, "y":2.25}, + {"label":"[{", "x":11.5, "y":2.25}, + {"label":"]}", "x":12.5, "y":2.25}, + {"label":"Delete", "x":15.25, "y":2.25}, + {"label":"End", "x":16.25, "y":2.25}, + {"label":"PgDn", "x":17.25, "y":2.25}, + + {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, + {"label":"A", "x":1.75, "y":3.25}, + {"label":"S", "x":2.75, "y":3.25}, + {"label":"D", "x":3.75, "y":3.25}, + {"label":"F", "x":4.75, "y":3.25}, + {"label":"G", "x":5.75, "y":3.25}, + {"label":"H", "x":6.75, "y":3.25}, + {"label":"J", "x":7.75, "y":3.25}, + {"label":"K", "x":8.75, "y":3.25}, + {"label":"L", "x":9.75, "y":3.25}, + {"label":";:", "x":10.75, "y":3.25}, + {"label":"'@", "x":11.75, "y":3.25}, + {"label":"#~", "x":12.75, "y":3.25}, + {"label":"Enter", "x":13.75, "y":2.25, "w":1.25, "h":2}, + + {"label":"Shift", "x":0, "y":4.25, "w":1.25}, + {"label":"\\|", "x":1.25, "y":4.25}, + {"label":"Z", "x":2.25, "y":4.25}, + {"label":"X", "x":3.25, "y":4.25}, + {"label":"C", "x":4.25, "y":4.25}, + {"label":"V", "x":5.25, "y":4.25}, + {"label":"B", "x":6.25, "y":4.25}, + {"label":"N", "x":7.25, "y":4.25}, + {"label":"M", "x":8.25, "y":4.25}, + {"label":",<", "x":9.25, "y":4.25}, + {"label":".>", "x":10.25, "y":4.25}, + {"label":"/?", "x":11.25, "y":4.25}, + {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, + {"label":"\u2191", "x":16.25, "y":4.25}, + + {"label":"Ctrl", "x":0, "y":5.25, "w":1.5}, + {"label":"Win", "x":1.5, "y":5.25}, + {"label":"Alt", "x":2.5, "y":5.25, "w":1.5}, + {"label":"Space", "x":4, "y":5.25, "w":7}, + {"label":"Alt", "x":11, "y":5.25, "w":1.5}, + {"label":"Win", "x":12.5, "y":5.25}, + {"label":"Ctrl", "x":13.5, "y":5.25, "w":1.5}, + {"label":"\u2190", "x":15.25, "y":5.25}, + {"label":"\u2193", "x":16.25, "y":5.25}, + {"label":"\u2192", "x":17.25, "y":5.25} + ] + }, + "LAYOUT_tkl_iso_tsangan_split_bs_rshift": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":2, "y":0}, + {"label":"F2", "x":3, "y":0}, + {"label":"F3", "x":4, "y":0}, + {"label":"F4", "x":5, "y":0}, + {"label":"F5", "x":6.5, "y":0}, + {"label":"F6", "x":7.5, "y":0}, + {"label":"F7", "x":8.5, "y":0}, + {"label":"F8", "x":9.5, "y":0}, + {"label":"F9", "x":11, "y":0}, + {"label":"F10", "x":12, "y":0}, + {"label":"F11", "x":13, "y":0}, + {"label":"F12", "x":14, "y":0}, + {"label":"PrtSc", "x":15.25, "y":0}, + {"label":"Scroll Lock", "x":16.25, "y":0}, + {"label":"Pause", "x":17.25, "y":0}, + + {"label":"`\u00ac", "x":0, "y":1.25}, + {"label":"1!", "x":1, "y":1.25}, + {"label":"2\"", "x":2, "y":1.25}, + {"label":"3\u00a3", "x":3, "y":1.25}, + {"label":"4$", "x":4, "y":1.25}, + {"label":"5%", "x":5, "y":1.25}, + {"label":"6^", "x":6, "y":1.25}, + {"label":"7&", "x":7, "y":1.25}, + {"label":"8*", "x":8, "y":1.25}, + {"label":"9(", "x":9, "y":1.25}, + {"label":"0)", "x":10, "y":1.25}, + {"label":"-_", "x":11, "y":1.25}, + {"label":"=+", "x":12, "y":1.25}, + {"label":"Bksp", "x":13, "y":1.25}, + {"label":"Bksp", "x":14, "y":1.25}, + {"label":"Insert", "x":15.25, "y":1.25}, + {"label":"Home", "x":16.25, "y":1.25}, + {"label":"PgUp", "x":17.25, "y":1.25}, + + {"label":"Tab", "x":0, "y":2.25, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.25}, + {"label":"W", "x":2.5, "y":2.25}, + {"label":"E", "x":3.5, "y":2.25}, + {"label":"R", "x":4.5, "y":2.25}, + {"label":"T", "x":5.5, "y":2.25}, + {"label":"Y", "x":6.5, "y":2.25}, + {"label":"U", "x":7.5, "y":2.25}, + {"label":"I", "x":8.5, "y":2.25}, + {"label":"O", "x":9.5, "y":2.25}, + {"label":"P", "x":10.5, "y":2.25}, + {"label":"[{", "x":11.5, "y":2.25}, + {"label":"]}", "x":12.5, "y":2.25}, + {"label":"Delete", "x":15.25, "y":2.25}, + {"label":"End", "x":16.25, "y":2.25}, + {"label":"PgDn", "x":17.25, "y":2.25}, + + {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, + {"label":"A", "x":1.75, "y":3.25}, + {"label":"S", "x":2.75, "y":3.25}, + {"label":"D", "x":3.75, "y":3.25}, + {"label":"F", "x":4.75, "y":3.25}, + {"label":"G", "x":5.75, "y":3.25}, + {"label":"H", "x":6.75, "y":3.25}, + {"label":"J", "x":7.75, "y":3.25}, + {"label":"K", "x":8.75, "y":3.25}, + {"label":"L", "x":9.75, "y":3.25}, + {"label":";:", "x":10.75, "y":3.25}, + {"label":"'@", "x":11.75, "y":3.25}, + {"label":"#~", "x":12.75, "y":3.25}, + {"label":"Enter", "x":13.75, "y":2.25, "w":1.25, "h":2}, + + {"label":"Shift", "x":0, "y":4.25, "w":1.25}, + {"label":"\\|", "x":1.25, "y":4.25}, + {"label":"Z", "x":2.25, "y":4.25}, + {"label":"X", "x":3.25, "y":4.25}, + {"label":"C", "x":4.25, "y":4.25}, + {"label":"V", "x":5.25, "y":4.25}, + {"label":"B", "x":6.25, "y":4.25}, + {"label":"N", "x":7.25, "y":4.25}, + {"label":"M", "x":8.25, "y":4.25}, + {"label":",<", "x":9.25, "y":4.25}, + {"label":".>", "x":10.25, "y":4.25}, + {"label":"/?", "x":11.25, "y":4.25}, + {"label":"Shift", "x":12.25, "y":4.25, "w":1.75}, + {"label":"Fn", "x":14, "y":4.25}, + {"label":"\u2191", "x":16.25, "y":4.25}, + + {"label":"Ctrl", "x":0, "y":5.25, "w":1.5}, + {"label":"Win", "x":1.5, "y":5.25}, + {"label":"Alt", "x":2.5, "y":5.25, "w":1.5}, + {"label":"Space", "x":4, "y":5.25, "w":7}, + {"label":"Alt", "x":11, "y":5.25, "w":1.5}, + {"label":"Win", "x":12.5, "y":5.25}, + {"label":"Ctrl", "x":13.5, "y":5.25, "w":1.5}, + {"label":"\u2190", "x":15.25, "y":5.25}, + {"label":"\u2193", "x":16.25, "y":5.25}, + {"label":"\u2192", "x":17.25, "y":5.25} + ] + } + } +} diff --git a/keyboards/superuser/tkl/keymaps/default/keymap.c b/keyboards/superuser/tkl/keymaps/default/keymap.c new file mode 100644 index 000000000000..b0ab538247cd --- /dev/null +++ b/keyboards/superuser/tkl/keymaps/default/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2021 superuser + + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; diff --git a/keyboards/superuser/tkl/keymaps/default/readme.md b/keyboards/superuser/tkl/keymaps/default/readme.md new file mode 100644 index 000000000000..4b2def123669 --- /dev/null +++ b/keyboards/superuser/tkl/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for tkl diff --git a/keyboards/superuser/tkl/keymaps/via/keymap.c b/keyboards/superuser/tkl/keymaps/via/keymap.c new file mode 100644 index 000000000000..a2bea4e6e112 --- /dev/null +++ b/keyboards/superuser/tkl/keymaps/via/keymap.c @@ -0,0 +1,53 @@ +/* Copyright 2021 superuser + + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +}; + diff --git a/keyboards/superuser/tkl/keymaps/via/readme.md b/keyboards/superuser/tkl/keymaps/via/readme.md new file mode 100644 index 000000000000..89f15e18a458 --- /dev/null +++ b/keyboards/superuser/tkl/keymaps/via/readme.md @@ -0,0 +1 @@ +# The default VIA keymap for tkl diff --git a/keyboards/superuser/tkl/keymaps/via/rules.mk b/keyboards/superuser/tkl/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/superuser/tkl/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/superuser/tkl/readme.md b/keyboards/superuser/tkl/readme.md new file mode 100644 index 000000000000..1c9ad5b3cc4b --- /dev/null +++ b/keyboards/superuser/tkl/readme.md @@ -0,0 +1,17 @@ +# superuser tkl + +An F12 TKL PCB supporting 7u bottom row only. + +* Keyboard Maintainer: [kaylanm](https://github.com/kaylanm) +* Hardware Supported: superuser tkl +* Hardware Availability: Group buy + +Make example for this keyboard (after setting up your build environment): + + make superuser/tkl: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). + +## hardware information + +One LED only, in caps lock. diff --git a/keyboards/superuser/tkl/rules.mk b/keyboards/superuser/tkl/rules.mk new file mode 100644 index 000000000000..77e4f16a2016 --- /dev/null +++ b/keyboards/superuser/tkl/rules.mk @@ -0,0 +1,20 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = qmk-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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +LTO_ENABLE = yes diff --git a/keyboards/superuser/tkl/tkl.c b/keyboards/superuser/tkl/tkl.c new file mode 100644 index 000000000000..b59a26f44e10 --- /dev/null +++ b/keyboards/superuser/tkl/tkl.c @@ -0,0 +1,16 @@ +/* Copyright 2021 superuser + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "tkl.h" diff --git a/keyboards/superuser/tkl/tkl.h b/keyboards/superuser/tkl/tkl.h new file mode 100644 index 000000000000..e84cd597375b --- /dev/null +++ b/keyboards/superuser/tkl/tkl.h @@ -0,0 +1,116 @@ +/* Copyright 2021 superuser + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define ___ KC_NO +/* + * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ + * │00 │ │02 │03 │04 │05 │ │06 │07 │08 │09 │ │0A │0B │0C │0D │ │0E │0F │0G │ + * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ ┌───────┐ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │3C │ │1E │1F │1G │ │1D │ 2u Backspace + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ └─┬─────┤ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2D │ │2E │2F │2G │ │ │ + * 2.25u ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ ┌──┴┐3D │ ISO Enter + * LShift │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3D │ │2D │ │ + * ┌────────┐ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ ┌─┴───┴────┤ + * │40 │ │40 │41 │42 │43 │44 │45 │46 │47 │48 │49 │4A │4B │4C │4D │ │4F │ │4C │ 2.75u RShift + * └────────┘ ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───┐ └──────────┘ + * │50 │51 │52 │56 │5B │5C │5D │ │5E │5F │5G │ + * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘ + */ + +#define LAYOUT_all(\ + 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, K3C, 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, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4F, \ + K50, K51, K52, K56, 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, K3D, ___, ___, ___ }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, ___, K4F, ___ }, \ + { K50, K51, K52, ___, ___, ___, K56, ___, ___, ___, ___, K5B, K5C, K5D, K5E, K5F, K5G } \ +} + +#define LAYOUT_tkl_ansi_tsangan( \ + 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, K56, 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, ___, ___, ___, K56, ___, ___, ___, ___, K5B, K5C, K5D, K5E, K5F, K5G } \ +} + +#define LAYOUT_tkl_ansi_tsangan_split_bs_rshift( \ + 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, K3C, 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, K4D, K4F, \ + K50, K51, K52, K56, 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, K3D, ___, ___, ___ }, \ + { K40, ___, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, ___, K4F, ___ }, \ + { K50, K51, K52, ___, ___, ___, K56, ___, ___, ___, ___, K5B, K5C, K5D, K5E, K5F, K5G } \ +} + +#define LAYOUT_tkl_iso_tsangan( \ + 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, K2D, K3D, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4F, \ + K50, K51, K52, K56, 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, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, ___, ___, K4F, ___ }, \ + { K50, K51, K52, ___, ___, ___, K56, ___, ___, ___, ___, K5B, K5C, K5D, K5E, K5F, K5G } \ +} + +#define LAYOUT_tkl_iso_tsangan_split_bs_rshift( \ + 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, K3C, 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, K2D, K3D, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4F, \ + K50, K51, K52, K56, 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, K3D, ___, ___, ___ }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, ___, K4F, ___ }, \ + { K50, K51, K52, ___, ___, ___, K56, ___, ___, ___, ___, K5B, K5C, K5D, K5E, K5F, K5G } \ +} diff --git a/keyboards/swiftrax/retropad/info.json b/keyboards/swiftrax/retropad/info.json index 9637c7b3f73f..6148e95edb38 100644 --- a/keyboards/swiftrax/retropad/info.json +++ b/keyboards/swiftrax/retropad/info.json @@ -2,11 +2,9 @@ "keyboard_name": "Retropad", "url": "https://github.com/swiftrax", "maintainer": "swiftrax", - "width": 2, - "height": 3.5, "layouts": { "LAYOUT": { "layout": [{"label":"0,1", "x":0.5, "y":0}, {"label":"1,0", "x":0, "y":1.5}, {"label":"1,1", "x":1, "y":1.5}, {"label":"2,0", "x":0, "y":2.5}, {"label":"2,1", "x":1, "y":2.5}] } } -} \ No newline at end of file +} diff --git a/keyboards/swiftrax/retropad/rules.mk b/keyboards/swiftrax/retropad/rules.mk index 8771c701de78..cfb22f94b2d6 100644 --- a/keyboards/swiftrax/retropad/rules.mk +++ b/keyboards/swiftrax/retropad/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = yes diff --git a/keyboards/switchplate/southpaw_65/config.h b/keyboards/switchplate/southpaw_65/config.h index 6b7952283d4a..7512e0e2b381 100644 --- a/keyboards/switchplate/southpaw_65/config.h +++ b/keyboards/switchplate/southpaw_65/config.h @@ -112,58 +112,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -182,26 +130,6 @@ //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/switchplate/southpaw_65/info.json b/keyboards/switchplate/southpaw_65/info.json index e00f3a48072c..ab8916ed3c11 100644 --- a/keyboards/switchplate/southpaw_65/info.json +++ b/keyboards/switchplate/southpaw_65/info.json @@ -2,19 +2,14 @@ "keyboard_name": "Southpaw Extended 65%", "url": "https://geekhack.org/index.php?topic=92344.0", "maintainer": "qmk", - "width": 20, - "height": 5, "layouts": { "LAYOUT_all": { - "key_count": 91, "layout": [{"label":"Num Lock", "x":0, "y":0}, {"label":"/", "x":1, "y":0}, {"label":"*", "x":2, "y":0}, {"label":"-", "x":3, "y":0}, {"label":"Esc", "x":4, "y":0}, {"label":"!", "x":5, "y":0}, {"label":"@", "x":6, "y":0}, {"label":"#", "x":7, "y":0}, {"label":"$", "x":8, "y":0}, {"label":"%", "x":9, "y":0}, {"label":"^", "x":10, "y":0}, {"label":"&", "x":11, "y":0}, {"label":"*", "x":12, "y":0}, {"label":"(", "x":13, "y":0}, {"label":")", "x":14, "y":0}, {"label":"_", "x":15, "y":0}, {"label":"+", "x":16, "y":0}, {"label":"Backspace", "x":17, "y":0}, {"label":"Backspace", "x":18, "y":0}, {"label":"Home", "x":19, "y":0}, {"label":"7", "x":0, "y":1}, {"label":"8", "x":1, "y":1}, {"label":"9", "x":2, "y":1}, {"label":"+", "x":3, "y":1}, {"label":"Tab", "x":4, "y":1, "w":1.5}, {"label":"Q", "x":5.5, "y":1}, {"label":"W", "x":6.5, "y":1}, {"label":"E", "x":7.5, "y":1}, {"label":"R", "x":8.5, "y":1}, {"label":"T", "x":9.5, "y":1}, {"label":"Y", "x":10.5, "y":1}, {"label":"U", "x":11.5, "y":1}, {"label":"I", "x":12.5, "y":1}, {"label":"O", "x":13.5, "y":1}, {"label":"P", "x":14.5, "y":1}, {"label":"{", "x":15.5, "y":1}, {"label":"}", "x":16.5, "y":1}, {"label":"|", "x":17.5, "y":1, "w":1.5}, {"label":"End", "x":19, "y":1}, {"label":"4", "x":0, "y":2}, {"label":"5", "x":1, "y":2}, {"label":"6", "x":2, "y":2}, {"label":"+", "x":3, "y":2}, {"label":"Caps Lock", "x":4, "y":2, "w":1.75}, {"label":"A", "x":5.75, "y":2}, {"label":"S", "x":6.75, "y":2}, {"label":"D", "x":7.75, "y":2}, {"label":"F", "x":8.75, "y":2}, {"label":"G", "x":9.75, "y":2}, {"label":"H", "x":10.75, "y":2}, {"label":"J", "x":11.75, "y":2}, {"label":"K", "x":12.75, "y":2}, {"label":"L", "x":13.75, "y":2}, {"label":":", "x":14.75, "y":2}, {"label":"\"", "x":15.75, "y":2}, {"label":"~", "x":16.75, "y":2}, {"label":"Enter", "x":17.75, "y":2, "w":1.25}, {"label":"Page Up", "x":19, "y":2}, {"label":"1", "x":0, "y":3}, {"label":"2", "x":1, "y":3}, {"label":"3", "x":2, "y":3}, {"label":"Num Enter", "x":3, "y":3}, {"label":"LShift", "x":4, "y":3, "w":1.25}, {"label":"|", "x":5.25, "y":3}, {"label":"Z", "x":6.25, "y":3}, {"label":"X", "x":7.25, "y":3}, {"label":"C", "x":8.25, "y":3}, {"label":"V", "x":9.25, "y":3}, {"label":"B", "x":10.25, "y":3}, {"label":"N", "x":11.25, "y":3}, {"label":"M", "x":12.25, "y":3}, {"label":"<", "x":13.25, "y":3}, {"label":">", "x":14.25, "y":3}, {"label":"?", "x":15.25, "y":3}, {"label":"RShift", "x":16.25, "y":3, "w":1.75}, {"label":"Up", "x":18, "y":3}, {"label":"Page Down", "x":19, "y":3}, {"label":"0", "x":0, "y":4}, {"label":"0", "x":1, "y":4}, {"label":".", "x":2, "y":4}, {"label":"Num Enter", "x":3, "y":4}, {"label":"LCtrl", "x":4, "y":4, "w":1.25}, {"label":"Win", "x":5.25, "y":4, "w":1.25}, {"label":"LAlt", "x":6.5, "y":4, "w":1.25}, {"label":"Space", "x":7.75, "y":4, "w":6.25}, {"label":"RAlt", "x":14, "y":4}, {"label":"RCtrl", "x":15, "y":4}, {"label":"Fn0", "x":16, "y":4}, {"label":"Left", "x":17, "y":4}, {"label":"Down", "x":18, "y":4}, {"label":"Right", "x":19, "y":4}] }, "LAYOUT_ansi": { - "key_count": 85, "layout": [{"label":"Num Lock", "x":0, "y":0}, {"label":"/", "x":1, "y":0}, {"label":"*", "x":2, "y":0}, {"label":"-", "x":3, "y":0}, {"label":"Esc", "x":4, "y":0}, {"label":"!", "x":5, "y":0}, {"label":"@", "x":6, "y":0}, {"label":"#", "x":7, "y":0}, {"label":"$", "x":8, "y":0}, {"label":"%", "x":9, "y":0}, {"label":"^", "x":10, "y":0}, {"label":"&", "x":11, "y":0}, {"label":"*", "x":12, "y":0}, {"label":"(", "x":13, "y":0}, {"label":")", "x":14, "y":0}, {"label":"_", "x":15, "y":0}, {"label":"+", "x":16, "y":0}, {"label":"Backspace", "x":17, "y":0, "w":2}, {"label":"Home", "x":19, "y":0}, {"label":"7", "x":0, "y":1}, {"label":"8", "x":1, "y":1}, {"label":"9", "x":2, "y":1}, {"label":"+", "x":3, "y":1, "h":2}, {"label":"Tab", "x":4, "y":1, "w":1.5}, {"label":"Q", "x":5.5, "y":1}, {"label":"W", "x":6.5, "y":1}, {"label":"E", "x":7.5, "y":1}, {"label":"R", "x":8.5, "y":1}, {"label":"T", "x":9.5, "y":1}, {"label":"Y", "x":10.5, "y":1}, {"label":"U", "x":11.5, "y":1}, {"label":"I", "x":12.5, "y":1}, {"label":"O", "x":13.5, "y":1}, {"label":"P", "x":14.5, "y":1}, {"label":"{", "x":15.5, "y":1}, {"label":"}", "x":16.5, "y":1}, {"label":"|", "x":17.5, "y":1, "w":1.5}, {"label":"End", "x":19, "y":1}, {"label":"4", "x":0, "y":2}, {"label":"5", "x":1, "y":2}, {"label":"6", "x":2, "y":2}, {"label":"Caps Lock", "x":4, "y":2, "w":1.75}, {"label":"A", "x":5.75, "y":2}, {"label":"S", "x":6.75, "y":2}, {"label":"D", "x":7.75, "y":2}, {"label":"F", "x":8.75, "y":2}, {"label":"G", "x":9.75, "y":2}, {"label":"H", "x":10.75, "y":2}, {"label":"J", "x":11.75, "y":2}, {"label":"K", "x":12.75, "y":2}, {"label":"L", "x":13.75, "y":2}, {"label":":", "x":14.75, "y":2}, {"label":"\"", "x":15.75, "y":2}, {"label":"Enter", "x":16.75, "y":2, "w":2.25}, {"label":"Page Up", "x":19, "y":2}, {"label":"1", "x":0, "y":3}, {"label":"2", "x":1, "y":3}, {"label":"3", "x":2, "y":3}, {"label":"Num Enter", "x":3, "y":3, "h":2}, {"label":"LShift", "x":4, "y":3, "w":2.25}, {"label":"Z", "x":6.25, "y":3}, {"label":"X", "x":7.25, "y":3}, {"label":"C", "x":8.25, "y":3}, {"label":"V", "x":9.25, "y":3}, {"label":"B", "x":10.25, "y":3}, {"label":"N", "x":11.25, "y":3}, {"label":"M", "x":12.25, "y":3}, {"label":"<", "x":13.25, "y":3}, {"label":">", "x":14.25, "y":3}, {"label":"?", "x":15.25, "y":3}, {"label":"RShift", "x":16.25, "y":3, "w":1.75}, {"label":"Up", "x":18, "y":3}, {"label":"Page Down", "x":19, "y":3}, {"label":"0", "x":0, "y":4, "w":2}, {"label":".", "x":2, "y":4}, {"label":"LCtrl", "x":4, "y":4, "w":1.25}, {"label":"Win", "x":5.25, "y":4, "w":1.25}, {"label":"LAlt", "x":6.5, "y":4, "w":1.25}, {"label":"Space", "x":7.75, "y":4, "w":6.25}, {"label":"RAlt", "x":14, "y":4}, {"label":"RCtrl", "x":15, "y":4}, {"label":"Fn0", "x":16, "y":4}, {"label":"Left", "x":17, "y":4}, {"label":"Down", "x":18, "y":4}, {"label":"Right", "x":19, "y":4}] }, "LAYOUT_iso": { - "key_count": 86, "layout": [{"label":"Num Lock", "x":0, "y":0}, {"label":"/", "x":1, "y":0}, {"label":"*", "x":2, "y":0}, {"label":"-", "x":3, "y":0}, {"label":"Esc", "x":4, "y":0}, {"label":"!", "x":5, "y":0}, {"label":"@", "x":6, "y":0}, {"label":"#", "x":7, "y":0}, {"label":"$", "x":8, "y":0}, {"label":"%", "x":9, "y":0}, {"label":"^", "x":10, "y":0}, {"label":"&", "x":11, "y":0}, {"label":"*", "x":12, "y":0}, {"label":"(", "x":13, "y":0}, {"label":")", "x":14, "y":0}, {"label":"_", "x":15, "y":0}, {"label":"+", "x":16, "y":0}, {"label":"Backspace", "x":17, "y":0, "w":2}, {"label":"Home", "x":19, "y":0}, {"label":"7", "x":0, "y":1}, {"label":"8", "x":1, "y":1}, {"label":"9", "x":2, "y":1}, {"label":"+", "x":3, "y":1, "h":2}, {"label":"Tab", "x":4, "y":1, "w":1.5}, {"label":"Q", "x":5.5, "y":1}, {"label":"W", "x":6.5, "y":1}, {"label":"E", "x":7.5, "y":1}, {"label":"R", "x":8.5, "y":1}, {"label":"T", "x":9.5, "y":1}, {"label":"Y", "x":10.5, "y":1}, {"label":"U", "x":11.5, "y":1}, {"label":"I", "x":12.5, "y":1}, {"label":"O", "x":13.5, "y":1}, {"label":"P", "x":14.5, "y":1}, {"label":"{", "x":15.5, "y":1}, {"label":"}", "x":16.5, "y":1}, {"label":"End", "x":19, "y":1}, {"label":"4", "x":0, "y":2}, {"label":"5", "x":1, "y":2}, {"label":"6", "x":2, "y":2}, {"label":"Caps Lock", "x":4, "y":2, "w":1.75}, {"label":"A", "x":5.75, "y":2}, {"label":"S", "x":6.75, "y":2}, {"label":"D", "x":7.75, "y":2}, {"label":"F", "x":8.75, "y":2}, {"label":"G", "x":9.75, "y":2}, {"label":"H", "x":10.75, "y":2}, {"label":"J", "x":11.75, "y":2}, {"label":"K", "x":12.75, "y":2}, {"label":"L", "x":13.75, "y":2}, {"label":":", "x":14.75, "y":2}, {"label":"\"", "x":15.75, "y":2}, {"label":"~", "x":16.75, "y":2}, {"label":"Enter", "x":17.75, "y":1, "w":1.25, "h":2}, {"label":"Page Up", "x":19, "y":2}, {"label":"1", "x":0, "y":3}, {"label":"2", "x":1, "y":3}, {"label":"3", "x":2, "y":3}, {"label":"Num Enter", "x":3, "y":3, "h":2}, {"label":"LShift", "x":4, "y":3, "w":1.25}, {"label":"|", "x":5.25, "y":3}, {"label":"Z", "x":6.25, "y":3}, {"label":"X", "x":7.25, "y":3}, {"label":"C", "x":8.25, "y":3}, {"label":"V", "x":9.25, "y":3}, {"label":"B", "x":10.25, "y":3}, {"label":"N", "x":11.25, "y":3}, {"label":"M", "x":12.25, "y":3}, {"label":"<", "x":13.25, "y":3}, {"label":">", "x":14.25, "y":3}, {"label":"?", "x":15.25, "y":3}, {"label":"RShift", "x":16.25, "y":3, "w":1.75}, {"label":"Up", "x":18, "y":3}, {"label":"Page Down", "x":19, "y":3}, {"label":"0", "x":0, "y":4, "w":2}, {"label":".", "x":2, "y":4}, {"label":"LCtrl", "x":4, "y":4, "w":1.25}, {"label":"Win", "x":5.25, "y":4, "w":1.25}, {"label":"LAlt", "x":6.5, "y":4, "w":1.25}, {"label":"Space", "x":7.75, "y":4, "w":6.25}, {"label":"RAlt", "x":14, "y":4}, {"label":"RCtrl", "x":15, "y":4}, {"label":"Fn0", "x":16, "y":4}, {"label":"Left", "x":17, "y":4}, {"label":"Down", "x":18, "y":4}, {"label":"Right", "x":19, "y":4}] } } diff --git a/keyboards/switchplate/southpaw_65/rules.mk b/keyboards/switchplate/southpaw_65/rules.mk index 2a9da62ac035..c5c851f313ac 100644 --- a/keyboards/switchplate/southpaw_65/rules.mk +++ b/keyboards/switchplate/southpaw_65/rules.mk @@ -2,33 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LTO_ENABLE = yes # custom matrix setup diff --git a/keyboards/switchplate/southpaw_fullsize/config.h b/keyboards/switchplate/southpaw_fullsize/config.h index c319b54ce189..c15cb1d0be03 100644 --- a/keyboards/switchplate/southpaw_fullsize/config.h +++ b/keyboards/switchplate/southpaw_fullsize/config.h @@ -62,59 +62,6 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. diff --git a/keyboards/switchplate/southpaw_fullsize/info.json b/keyboards/switchplate/southpaw_fullsize/info.json index d4823f108549..3c02cfdc1ad6 100644 --- a/keyboards/switchplate/southpaw_fullsize/info.json +++ b/keyboards/switchplate/southpaw_fullsize/info.json @@ -2,8 +2,6 @@ "keyboard_name": "southpaw_fullsize", "url": "", "maintainer": "ai03", - "width": 22.5, - "height": 6.25, "layouts": { "LAYOUT_all": { "layout": [ @@ -239,4 +237,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/switchplate/southpaw_fullsize/rules.mk b/keyboards/switchplate/southpaw_fullsize/rules.mk index bd1eea3033d1..5343f3ea91b4 100644 --- a/keyboards/switchplate/southpaw_fullsize/rules.mk +++ b/keyboards/switchplate/southpaw_fullsize/rules.mk @@ -2,29 +2,18 @@ MCU = at90usb1286 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/switchplate/switchplate910/info.json b/keyboards/switchplate/switchplate910/info.json index bbdcd3da0004..748bd71c79a7 100644 --- a/keyboards/switchplate/switchplate910/info.json +++ b/keyboards/switchplate/switchplate910/info.json @@ -2,8 +2,6 @@ "keyboard_name": "southpaw910", "url": "", "maintainer": "MxBluE", - "width": 22.5, - "height": 6.25, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/switchplate/switchplate910/rules.mk b/keyboards/switchplate/switchplate910/rules.mk index 6e53d4cab232..9acbf8bee1c0 100644 --- a/keyboards/switchplate/switchplate910/rules.mk +++ b/keyboards/switchplate/switchplate910/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/sx60/i2cmaster.h b/keyboards/sx60/i2cmaster.h deleted file mode 100644 index 3917b9e6c006..000000000000 --- a/keyboards/sx60/i2cmaster.h +++ /dev/null @@ -1,178 +0,0 @@ -#ifndef _I2CMASTER_H -#define _I2CMASTER_H 1 -/************************************************************************* -* Title: C include file for the I2C master interface -* (i2cmaster.S or twimaster.c) -* Author: Peter Fleury http://jump.to/fleury -* File: $Id: i2cmaster.h,v 1.10 2005/03/06 22:39:57 Peter Exp $ -* Software: AVR-GCC 3.4.3 / avr-libc 1.2.3 -* Target: any AVR device -* Usage: see Doxygen manual -**************************************************************************/ - -#ifdef DOXYGEN -/** - @defgroup pfleury_ic2master I2C Master library - @code #include @endcode - - @brief I2C (TWI) Master Software Library - - Basic routines for communicating with I2C slave devices. This single master - implementation is limited to one bus master on the I2C bus. - - This I2c library is implemented as a compact assembler software implementation of the I2C protocol - which runs on any AVR (i2cmaster.S) and as a TWI hardware interface for all AVR with built-in TWI hardware (twimaster.c). - Since the API for these two implementations is exactly the same, an application can be linked either against the - software I2C implementation or the hardware I2C implementation. - - Use 4.7k pull-up resistor on the SDA and SCL pin. - - Adapt the SCL and SDA port and pin definitions and eventually the delay routine in the module - i2cmaster.S to your target when using the software I2C implementation ! - - Adjust the CPU clock frequence F_CPU in twimaster.c or in the Makfile when using the TWI hardware implementaion. - - @note - The module i2cmaster.S is based on the Atmel Application Note AVR300, corrected and adapted - to GNU assembler and AVR-GCC C call interface. - Replaced the incorrect quarter period delays found in AVR300 with - half period delays. - - @author Peter Fleury pfleury@gmx.ch http://jump.to/fleury - - @par API Usage Example - The following code shows typical usage of this library, see example test_i2cmaster.c - - @code - - #include - - - #define Dev24C02 0xA2 // device address of EEPROM 24C02, see datasheet - - int main(void) - { - unsigned char ret; - - i2c_init(); // initialize I2C library - - // write 0x75 to EEPROM address 5 (Byte Write) - i2c_start_wait(Dev24C02+I2C_WRITE); // set device address and write mode - i2c_write(0x05); // write address = 5 - i2c_write(0x75); // write value 0x75 to EEPROM - i2c_stop(); // set stop conditon = release bus - - - // read previously written value back from EEPROM address 5 - i2c_start_wait(Dev24C02+I2C_WRITE); // set device address and write mode - - i2c_write(0x05); // write address = 5 - i2c_rep_start(Dev24C02+I2C_READ); // set device address and read mode - - ret = i2c_readNak(); // read one byte from EEPROM - i2c_stop(); - - for(;;); - } - @endcode - -*/ -#endif /* DOXYGEN */ - -/**@{*/ - -#if (__GNUC__ * 100 + __GNUC_MINOR__) < 304 -#error "This library requires AVR-GCC 3.4 or later, update to newer AVR-GCC compiler !" -#endif - -#include - -/** defines the data direction (reading from I2C device) in i2c_start(),i2c_rep_start() */ -#define I2C_READ 1 - -/** defines the data direction (writing to I2C device) in i2c_start(),i2c_rep_start() */ -#define I2C_WRITE 0 - - -/** - @brief initialize the I2C master interace. Need to be called only once - @param void - @return none - */ -extern void i2c_init(void); - - -/** - @brief Terminates the data transfer and releases the I2C bus - @param void - @return none - */ -extern void i2c_stop(void); - - -/** - @brief Issues a start condition and sends address and transfer direction - - @param addr address and transfer direction of I2C device - @retval 0 device accessible - @retval 1 failed to access device - */ -extern unsigned char i2c_start(unsigned char addr); - - -/** - @brief Issues a repeated start condition and sends address and transfer direction - - @param addr address and transfer direction of I2C device - @retval 0 device accessible - @retval 1 failed to access device - */ -extern unsigned char i2c_rep_start(unsigned char addr); - - -/** - @brief Issues a start condition and sends address and transfer direction - - If device is busy, use ack polling to wait until device ready - @param addr address and transfer direction of I2C device - @return none - */ -extern void i2c_start_wait(unsigned char addr); - - -/** - @brief Send one byte to I2C device - @param data byte to be transfered - @retval 0 write successful - @retval 1 write failed - */ -extern unsigned char i2c_write(unsigned char data); - - -/** - @brief read one byte from the I2C device, request more data from device - @return byte read from I2C device - */ -extern unsigned char i2c_readAck(void); - -/** - @brief read one byte from the I2C device, read is followed by a stop condition - @return byte read from I2C device - */ -extern unsigned char i2c_readNak(void); - -/** - @brief read one byte from the I2C device - - Implemented as a macro, which calls either i2c_readAck or i2c_readNak - - @param ack 1 send ack, request more data from device
- 0 send nak, read is followed by a stop condition - @return byte read from I2C device - */ -extern unsigned char i2c_read(unsigned char ack); -#define i2c_read(ack) (ack) ? i2c_readAck() : i2c_readNak(); - - -/**@}*/ -#endif diff --git a/keyboards/sx60/info.json b/keyboards/sx60/info.json index 3ac6af4a3fd7..2e710b3c5ac2 100644 --- a/keyboards/sx60/info.json +++ b/keyboards/sx60/info.json @@ -2,8 +2,6 @@ "keyboard_name": "SX60", "url": "", "maintainer": "https://github.com/amnobis", - "width": 16.25, - "height": 5, "layouts": { "LAYOUT": { "layout": [{"label":"Esc", "x":1.25, "y":0}, {"label":"1!", "x":2.25, "y":0}, {"label":"2@", "x":3.25, "y":0}, {"label":"3#", "x":4.25, "y":0}, {"label":"4$", "x":5.25, "y":0}, {"label":"5%", "x":6.25, "y":0}, {"label":"6^", "x":7.25, "y":0}, {"label":"7&", "x":9.25, "y":0}, {"label":"8*", "x":10.25, "y":0}, {"label":"9(", "x":11.25, "y":0}, {"label":"0)", "x":12.25, "y":0}, {"label":"-_", "x":13.25, "y":0}, {"label":"=+", "x":14.25, "y":0}, {"label":"\\|", "x":15.25, "y":0, "w":1}, {"label":"`~", "x":16.25, "y":0, "w":1}, {"label":"M1", "x":0, "y":1, "w":1}, {"label":"Tab", "x":1.25, "y":1, "w":1.5}, {"label":"Q", "x":2.75, "y":1}, {"label":"W", "x":3.75, "y":1}, {"label":"E", "x":4.75, "y":1}, {"label":"R", "x":5.75, "y":1}, {"label":"T", "x":6.75, "y":1}, {"label":"Y", "x":8.75, "y":1}, {"label":"U", "x":9.75, "y":1}, {"label":"I", "x":10.75, "y":1}, {"label":"O", "x":11.75, "y":1}, {"label":"P", "x":12.75, "y":1}, {"label":"{", "x":13.75, "y":1}, {"label":"}", "x":14.75, "y":1}, {"label":"Backspace", "x":15.75, "y":1, "w":1.5}, {"label":"M2", "x":0, "y":2, "w":1}, {"label":"Caps Lock", "x":1.25, "y":2, "w":1.75}, {"label":"A", "x":3, "y":2}, {"label":"S", "x":4, "y":2}, {"label":"D", "x":5, "y":2}, {"label":"F", "x":6, "y":2}, {"label":"G", "x":7, "y":2}, {"label":"H", "x":9, "y":2}, {"label":"J", "x":10, "y":2}, {"label":"K", "x":11, "y":2}, {"label":"L", "x":12, "y":2}, {"label":":", "x":13, "y":2}, {"label":"\"", "x":14, "y":2}, {"label":"ANSIEnter", "x":15, "y":2, "w":1}, {"label":"ISOEnter", "x":16, "y":2, "w":1.25}, {"label":"M3", "x":0, "y":3, "w":1}, {"label":"Shift", "x":1.25, "y":3, "w":1.25}, {"label":"\\|", "x":2.5, "y":3, "w":1}, {"label":"Z", "x":3.5, "y":3}, {"label":"X", "x":4.5, "y":3}, {"label":"C", "x":5.5, "y":3}, {"label":"V", "x":6.5, "y":3}, {"label":"B", "x":7.5, "y":3}, {"label":"N", "x":9.5, "y":3}, {"label":"M", "x":10.5, "y":3}, {"label":"<", "x":11.5, "y":3}, {"label":">", "x":12.5, "y":3}, {"label":"?", "x":13.5, "y":3}, {"label":"Shift", "x":14.5, "y":3, "w":1.75}, {"label":"Fn", "x":16.25, "y":3, "w":1}, {"label":"M4", "x":0, "y":4, "w":1}, {"label":"Ctrl", "x":1.25, "y":4, "w":1.25}, {"label":"Win", "x":2.5, "y":4, "w":1.25}, {"label":"Alt", "x":3.75, "y":4, "w":1.25}, {"x":5, "y":4, "w":2}, {"x":7, "y":4, "w":1}, {"x":9, "y":4, "w":2.75}, {"label":"Alt", "x":11.75, "y":4, "w":1.25}, {"label":"Win", "x":13, "y":4, "w":1.25}, {"label":"Menu", "x":14.25, "y":4, "w":1}, {"label":"Ctrl", "x":15.25, "y":4, "w":1}, {"label":"Fn2", "x":16.25, "y":4, "w":1}] diff --git a/keyboards/sx60/matrix.c b/keyboards/sx60/matrix.c index 6fa0dd145650..b7dc25425ded 100644 --- a/keyboards/sx60/matrix.c +++ b/keyboards/sx60/matrix.c @@ -243,15 +243,11 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) /* if there was an error */ return 0; } else { - uint16_t data = 0; - mcp23018_status = i2c_start(I2C_ADDR_WRITE); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(GPIOA); if (mcp23018_status) goto out; - mcp23018_status = i2c_start(I2C_ADDR_READ); if (mcp23018_status) goto out; - data = i2c_readNak(); - data = ~data; - out: - i2c_stop(); - current_matrix[current_row] |= (data << 8); + uint8_t data = 0; + mcp23018_status = i2c_readReg(I2C_ADDR, GPIOA, &data, 1, I2C_TIMEOUT); + if (!mcp23018_status) { + current_matrix[current_row] |= (~((uint16_t)data) << 8); + } } /* For each col... */ @@ -278,11 +274,8 @@ static void select_row(uint8_t row) /* set active row low : 0 set active row output : 1 set other rows hi-Z : 1 */ - mcp23018_status = i2c_start(I2C_ADDR_WRITE); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(GPIOB); if (mcp23018_status) goto out; - mcp23018_status = i2c_write(0xFF & ~(1< #include -#include "i2cmaster.h" +#include "i2c_master.h" #include -#define CPU_PRESCALE(n) (CLKPR = 0x80, CLKPR = (n)) -#define CPU_16MHz 0x00 - /* I2C aliases and register addresses (see "mcp23018.md") */ -#define I2C_ADDR 0b0100000 -#define I2C_ADDR_WRITE ( (I2C_ADDR<<1) | I2C_WRITE ) -#define I2C_ADDR_READ ( (I2C_ADDR<<1) | I2C_READ ) +#define I2C_ADDR (0b0100000 << 1) +#define I2C_TIMEOUT 100 #define IODIRA 0x00 /* i/o direction register */ #define IODIRB 0x01 #define GPPUA 0x0C /* GPIO pull-up resistor register */ @@ -27,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/sx60/twimaster.c b/keyboards/sx60/twimaster.c deleted file mode 100644 index 30d8c24bf01c..000000000000 --- a/keyboards/sx60/twimaster.c +++ /dev/null @@ -1,207 +0,0 @@ -/************************************************************************* -* Title: I2C master library using hardware TWI interface -* Author: Peter Fleury http://jump.to/fleury -* File: $Id: twimaster.c,v 1.3 2005/07/02 11:14:21 Peter Exp $ -* Software: AVR-GCC 3.4.3 / avr-libc 1.2.3 -* Target: any AVR device with hardware TWI -* Usage: API compatible with I2C Software Library i2cmaster.h -**************************************************************************/ -#include -#include - -#include - -/* define CPU frequency in Hz here if not defined in Makefile */ -#ifndef F_CPU -#define F_CPU 16000000UL -#endif - -/* I2C clock in Hz */ -#define SCL_CLOCK 400000L - - -/************************************************************************* - Initialization of the I2C bus interface. Need to be called only once -*************************************************************************/ -void i2c_init(void) -{ - /* initialize TWI clock - * minimal values in Bit Rate Register (TWBR) and minimal Prescaler - * bits in the TWI Status Register should give us maximal possible - * I2C bus speed - about 444 kHz - * - * for more details, see 20.5.2 in ATmega16/32 secification - */ - - TWSR = 0; /* no prescaler */ - TWBR = 10; /* must be >= 10 for stable operation */ - -}/* i2c_init */ - - -/************************************************************************* - Issues a start condition and sends address and transfer direction. - return 0 = device accessible, 1= failed to access device -*************************************************************************/ -unsigned char i2c_start(unsigned char address) -{ - uint8_t twst; - - /* send START condition */ - TWCR = (1<. + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7170 +#define PRODUCT_ID 0x5359 +#define DEVICE_VER 0x0001 +#define MANUFACTURER drmmr +#define PRODUCT synapse + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + +#define MATRIX_ROW_PINS \ + { E6, B0, F4, F1 } +#define MATRIX_COL_PINS \ + { F0, D4, F5, B1, B2, B3, B7, D0, D1, D2, D3, B6 } + +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* ROTARY ENCODERS */ +#define ENCODERS_PAD_A \ + { D7, C7 } +#define ENCODERS_PAD_B \ + { D6, C6 } + +#define ENCODER_RESOLUTION 4 + +#define DEBOUNCE 5 + +#define LOCKING_SUPPORT_ENABLE + +//#define RGB_DI_PIN D5 +//#define RGBLED_NUM 4 + +//#define DRIVER_LED_TOTAL RGBLED_NUM +//#define RGBLIGHT_DEFAULT_HUE 130 diff --git a/keyboards/synapse/info.json b/keyboards/synapse/info.json new file mode 100644 index 000000000000..c7b8611256df --- /dev/null +++ b/keyboards/synapse/info.json @@ -0,0 +1,96 @@ +{ + "keyboard_name": "synapse", + "url": "", + "maintainer": "qpockets", + "layouts": { + "LAYOUT_default": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":0, "y":1, "w":1.25}, + {"x":1.25, "y":1}, + {"x":2.25, "y":1}, + {"x":3.25, "y":1}, + {"x":4.25, "y":1}, + {"x":5.25, "y":1}, + {"x":6.25, "y":1}, + {"x":7.25, "y":1}, + {"x":8.25, "y":1}, + {"x":9.25, "y":1}, + {"x":10.25, "y":1, "w":1.75}, + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2, "w":1.25}, + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3, "w":3}, + {"x":6, "y":3, "w":3}, + {"x":9, "y":3}, + {"x":10, "y":3}, + {"x":11, "y":3} + ] + }, + "LAYOUT_7u_space": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":0, "y":1, "w":1.25}, + {"x":1.25, "y":1}, + {"x":2.25, "y":1}, + {"x":3.25, "y":1}, + {"x":4.25, "y":1}, + {"x":5.25, "y":1}, + {"x":6.25, "y":1}, + {"x":7.25, "y":1}, + {"x":8.25, "y":1}, + {"x":9.25, "y":1}, + {"x":10.25, "y":1, "w":1.75}, + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2, "w":1.25}, + {"x":0, "y":3}, + {"x":1, "y":3, "w":1.5}, + {"x":2.5, "y":3, "w":7}, + {"x":9.5, "y":3, "w":1.5}, + {"x":11, "y":3} + ] + } + } +} diff --git a/keyboards/synapse/keymaps/7u_space/config.h b/keyboards/synapse/keymaps/7u_space/config.h new file mode 100644 index 000000000000..0b0e89fa1f75 --- /dev/null +++ b/keyboards/synapse/keymaps/7u_space/config.h @@ -0,0 +1,27 @@ +/* Copyright 2021 qpockets + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +/*Modtaps*/ +#define TAPPING_TERM 165 +#define IGNORE_MOD_TAP_INTERRUPT + +/*Combos*/ +#ifdef COMBO_ENABLE +# define COMBO_COUNT 5 +# define COMBO_TERM 50 +#endif \ No newline at end of file diff --git a/keyboards/synapse/keymaps/7u_space/keymap.c b/keyboards/synapse/keymaps/7u_space/keymap.c new file mode 100644 index 000000000000..00ec4b30c17d --- /dev/null +++ b/keyboards/synapse/keymaps/7u_space/keymap.c @@ -0,0 +1,77 @@ +/* Copyright 2021 qpockets + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layers{ + _BASE, + _SYM, + _NAV +}; + +enum combo_events { + COMBO_BSPC, + COMBO_ENT, + COMBO_TAB, + COMBO_ESC, + COMBO_DEL +}; +#define KC_DN_CTL LT(_NAV, KC_LCTL) +#define KC_UP_SPC LT(_SYM, KC_SPC) +#define KC_SF LSFT_T(KC_F) +#define KC_SJ RSFT_T(KC_J) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_7u_space( + KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_SF, KC_G, KC_H, KC_SJ, KC_K, KC_L, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, + KC_LGUI, KC_DN_CTL, KC_UP_SPC, KC_RALT, KC_RGUI + ), + + [_SYM] = LAYOUT_7u_space( + KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, + KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_EQUAL, KC_MINS, + KC_TRNS, KC_PIPE, KC_BSLS, KC_LPRN, KC_LBRC, KC_SCLN, KC_COLN, KC_RBRC, KC_RPRN, KC_PLUS, KC_UNDS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_NAV] = LAYOUT_7u_space( + RESET, KC_TRNS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_F1, KC_F2, KC_F3, KC_F4, KC_BSPC, KC_TRNS, + KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN, KC_F4, KC_F5, KC_F6, KC_F7, KC_TAB, + KC_LCAP, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_ENT, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; + + + + +#ifdef COMBO_ENABLE +const uint16_t PROGMEM combo_bspc[] = {KC_O, KC_P, COMBO_END}; +const uint16_t PROGMEM combo_ent[] = {KC_K, KC_L, COMBO_END}; +const uint16_t PROGMEM combo_tab[] = {KC_S, KC_D, COMBO_END}; +const uint16_t PROGMEM combo_esc[] = {KC_T, KC_Y, COMBO_END}; +const uint16_t PROGMEM combo_del[] = {KC_Q, KC_W, COMBO_END}; + +combo_t key_combos[COMBO_COUNT] = { + [COMBO_BSPC] = COMBO(combo_bspc,KC_BSPC), + [COMBO_ENT] = COMBO(combo_ent,KC_ENT), + [COMBO_TAB] = COMBO(combo_tab,KC_TAB), + [COMBO_ESC] = COMBO(combo_esc,KC_ESC), + [COMBO_DEL] = COMBO(combo_del,KC_DEL) +}; +#endif diff --git a/keyboards/synapse/keymaps/7u_space/rules.mk b/keyboards/synapse/keymaps/7u_space/rules.mk new file mode 100644 index 000000000000..ab1e438182a3 --- /dev/null +++ b/keyboards/synapse/keymaps/7u_space/rules.mk @@ -0,0 +1 @@ +COMBO_ENABLE = yes diff --git a/keyboards/synapse/keymaps/default/config.h b/keyboards/synapse/keymaps/default/config.h new file mode 100644 index 000000000000..0b0e89fa1f75 --- /dev/null +++ b/keyboards/synapse/keymaps/default/config.h @@ -0,0 +1,27 @@ +/* Copyright 2021 qpockets + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +/*Modtaps*/ +#define TAPPING_TERM 165 +#define IGNORE_MOD_TAP_INTERRUPT + +/*Combos*/ +#ifdef COMBO_ENABLE +# define COMBO_COUNT 5 +# define COMBO_TERM 50 +#endif \ No newline at end of file diff --git a/keyboards/synapse/keymaps/default/keymap.c b/keyboards/synapse/keymaps/default/keymap.c new file mode 100644 index 000000000000..85ca4c628eba --- /dev/null +++ b/keyboards/synapse/keymaps/default/keymap.c @@ -0,0 +1,77 @@ +/* Copyright 2021 qpockets + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layers{ + _BASE, + _SYM, + _NAV +}; + +enum combo_events { + COMBO_BSPC, + COMBO_ENT, + COMBO_TAB, + COMBO_ESC, + COMBO_DEL +}; +#define KC_DN_BSPC LT(_NAV, KC_BSPC) +#define KC_UP_SPC LT(_SYM, KC_SPC) +#define KC_SF LSFT_T(KC_F) +#define KC_SJ RSFT_T(KC_J) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_default( + KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_SF, KC_G, KC_H, KC_SJ, KC_K, KC_L, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, + KC_LALT, KC_LGUI, KC_LCTL, KC_DN_BSPC, KC_UP_SPC, KC_RALT, KC_RGUI, KC_RCTL + ), + + [_SYM] = LAYOUT_default( + KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, + KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_EQUAL, KC_MINS, + KC_TRNS, KC_PIPE, KC_BSLS, KC_LPRN, KC_LBRC, KC_SCLN, KC_COLN, KC_RBRC, KC_RPRN, KC_PLUS, KC_UNDS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_NAV] = LAYOUT_default( + RESET, KC_TRNS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_F1, KC_F2, KC_F3, KC_F4, KC_BSPC, KC_TRNS, + KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN, KC_F4, KC_F5, KC_F6, KC_F7, KC_TAB, + KC_LCAP, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_ENT, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +}; + + + + +#ifdef COMBO_ENABLE +const uint16_t PROGMEM combo_bspc[] = {KC_O, KC_P, COMBO_END}; +const uint16_t PROGMEM combo_ent[] = {KC_K, KC_L, COMBO_END}; +const uint16_t PROGMEM combo_tab[] = {KC_S, KC_D, COMBO_END}; +const uint16_t PROGMEM combo_esc[] = {KC_T, KC_Y, COMBO_END}; +const uint16_t PROGMEM combo_del[] = {KC_Q, KC_W, COMBO_END}; + +combo_t key_combos[COMBO_COUNT] = { + [COMBO_BSPC] = COMBO(combo_bspc,KC_BSPC), + [COMBO_ENT] = COMBO(combo_ent,KC_ENT), + [COMBO_TAB] = COMBO(combo_tab,KC_TAB), + [COMBO_ESC] = COMBO(combo_esc,KC_ESC), + [COMBO_DEL] = COMBO(combo_del,KC_DEL) +}; +#endif diff --git a/keyboards/synapse/keymaps/default/rules.mk b/keyboards/synapse/keymaps/default/rules.mk new file mode 100644 index 000000000000..ab1e438182a3 --- /dev/null +++ b/keyboards/synapse/keymaps/default/rules.mk @@ -0,0 +1 @@ +COMBO_ENABLE = yes diff --git a/keyboards/synapse/readme.md b/keyboards/synapse/readme.md new file mode 100644 index 000000000000..1e4642881f1d --- /dev/null +++ b/keyboards/synapse/readme.md @@ -0,0 +1,27 @@ +# synapse + +![synapse](https://i.imgur.com/OQNNPBhh.jpg) + +Stagger PCB for Cervello! + +* Keyboard Maintainer: https://github.com/qpockets +* Hardware Availability: [P3D Store](https://p3dstore.com/products/cervello-acrylic-keyboard-case-and-pcb-group-buy?_pos=4&_sid=fd078da46&_ss=r&variant=40398412677304) Group Buy + +Make example for this keyboard (after setting up your build environment): + + make synapse:default + +Flashing example for this keyboard: + + make synapse:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `RESET` if it is available +* diff --git a/keyboards/synapse/rules.mk b/keyboards/synapse/rules.mk new file mode 100644 index 000000000000..745b27939af9 --- /dev/null +++ b/keyboards/synapse/rules.mk @@ -0,0 +1,20 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 diff --git a/keyboards/synapse/synapse.c b/keyboards/synapse/synapse.c new file mode 100644 index 000000000000..ac9c50ceb1b1 --- /dev/null +++ b/keyboards/synapse/synapse.c @@ -0,0 +1,34 @@ +/* Copyright 2021 qpockets + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "synapse.h" + +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + if (index == 1) { /* left encoder*/ + if (clockwise){ + tap_code(KC_WH_U); + } else { + tap_code(KC_WH_D); + } + } else if (index == 0) { /* right encoder */ + if (clockwise){ + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } + return true; +} diff --git a/keyboards/synapse/synapse.h b/keyboards/synapse/synapse.h new file mode 100644 index 000000000000..a126e450ecfb --- /dev/null +++ b/keyboards/synapse/synapse.h @@ -0,0 +1,48 @@ +/* Copyright 2021 qpockets + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +#define LAYOUT_default( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K50, K60, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K51, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K52, \ + K30, K31, K32, K33, K36, K38, K39, K53 \ +) \ +{ \ + {K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K50, K60}, \ + {K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K51, XXX}, \ + {K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K52, XXX}, \ + {K30, K31, K32, K33, XXX, XXX, K36, XXX, K38, K39, K53, XXX} \ +} \ + +#define LAYOUT_7u_space( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K50, K60, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K51, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K52, \ + K30, K31, K33, K39, K53 \ +) \ +{ \ + {K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K50, K60}, \ + {K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K51, XXX}, \ + {K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K52, XXX}, \ + {K30, K31, XXX, K33, XXX, XXX, XXX, XXX, XXX, K39, K53, XXX} \ +} + diff --git a/keyboards/tada68/info.json b/keyboards/tada68/info.json index 32047fcf11db..e84b560d7633 100644 --- a/keyboards/tada68/info.json +++ b/keyboards/tada68/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Tada68", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_ansi": { - "key_count": 68, "layout": [ {"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, @@ -83,7 +80,6 @@ ] }, "LAYOUT_65_iso": { - "key_count": 69, "layout": [ {"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, @@ -161,7 +157,6 @@ ] }, "LAYOUT_ansi_split_enter": { - "key_count": 69, "layout": [ {"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, diff --git a/keyboards/tada68/keymaps/abishalom/rules.mk b/keyboards/tada68/keymaps/abishalom/rules.mk index 1112b40d7b1a..f125bbcdf305 100644 --- a/keyboards/tada68/keymaps/abishalom/rules.mk +++ b/keyboards/tada68/keymaps/abishalom/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 diff --git a/keyboards/tada68/keymaps/ardakilic/rules.mk b/keyboards/tada68/keymaps/ardakilic/rules.mk index 53644093d6c4..14367f2f8a3f 100644 --- a/keyboards/tada68/keymaps/ardakilic/rules.mk +++ b/keyboards/tada68/keymaps/ardakilic/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/tada68/keymaps/bazooka/rules.mk b/keyboards/tada68/keymaps/bazooka/rules.mk index b2789a78a7da..697e093edd8c 100644 --- a/keyboards/tada68/keymaps/bazooka/rules.mk +++ b/keyboards/tada68/keymaps/bazooka/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/tada68/keymaps/cheese/rules.mk b/keyboards/tada68/keymaps/cheese/rules.mk index b2789a78a7da..697e093edd8c 100644 --- a/keyboards/tada68/keymaps/cheese/rules.mk +++ b/keyboards/tada68/keymaps/cheese/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/tada68/keymaps/dlg/rules.mk b/keyboards/tada68/keymaps/dlg/rules.mk index 2e0f1a661631..e381f2fdda63 100644 --- a/keyboards/tada68/keymaps/dlg/rules.mk +++ b/keyboards/tada68/keymaps/dlg/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/tada68/keymaps/emdarcher/keymap.c b/keyboards/tada68/keymaps/emdarcher/keymap.c index 642b4d8faae7..d6ac2f7bc12b 100755 --- a/keyboards/tada68/keymaps/emdarcher/keymap.c +++ b/keyboards/tada68/keymaps/emdarcher/keymap.c @@ -5,7 +5,7 @@ #define _CL 2 #define _ML 3 -#define KC_X0 LT(_CL, KC_CAPS) +#define KC_X0 LT(_CL, KC_CAPS) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap _BL: (Base Layer) Default Layer @@ -62,7 +62,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //layer state control -uint32_t layer_state_set_user(uint32_t state){ +layer_state_t layer_state_set_user(layer_state_t state){ //switch to _ML if both _FL and _CL are activated return update_tri_layer_state(state, _FL, _CL, _ML); } diff --git a/keyboards/tada68/keymaps/fakb/rules.mk b/keyboards/tada68/keymaps/fakb/rules.mk index 47fd29663ba9..043515605f4f 100644 --- a/keyboards/tada68/keymaps/fakb/rules.mk +++ b/keyboards/tada68/keymaps/fakb/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/tada68/keymaps/fezzant/rules.mk b/keyboards/tada68/keymaps/fezzant/rules.mk index 7b32f0a66442..705fc39e23f4 100644 --- a/keyboards/tada68/keymaps/fezzant/rules.mk +++ b/keyboards/tada68/keymaps/fezzant/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/tada68/keymaps/iso-nor/rules.mk b/keyboards/tada68/keymaps/iso-nor/rules.mk index 5cbbc3453683..00ecf0184fe1 100644 --- a/keyboards/tada68/keymaps/iso-nor/rules.mk +++ b/keyboards/tada68/keymaps/iso-nor/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 diff --git a/keyboards/tada68/keymaps/iso-uk/rules.mk b/keyboards/tada68/keymaps/iso-uk/rules.mk index 5cbbc3453683..00ecf0184fe1 100644 --- a/keyboards/tada68/keymaps/iso-uk/rules.mk +++ b/keyboards/tada68/keymaps/iso-uk/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 diff --git a/keyboards/tada68/keymaps/isoish/rules.mk b/keyboards/tada68/keymaps/isoish/rules.mk index 53644093d6c4..14367f2f8a3f 100644 --- a/keyboards/tada68/keymaps/isoish/rules.mk +++ b/keyboards/tada68/keymaps/isoish/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/tada68/keymaps/kbp-v60/rules.mk b/keyboards/tada68/keymaps/kbp-v60/rules.mk index 53644093d6c4..14367f2f8a3f 100644 --- a/keyboards/tada68/keymaps/kbp-v60/rules.mk +++ b/keyboards/tada68/keymaps/kbp-v60/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/tada68/keymaps/mattdicarlo/rules.mk b/keyboards/tada68/keymaps/mattdicarlo/rules.mk index 739b739971fb..9f973f158bbb 100644 --- a/keyboards/tada68/keymaps/mattdicarlo/rules.mk +++ b/keyboards/tada68/keymaps/mattdicarlo/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/tada68/keymaps/mattgemmell/rules.mk b/keyboards/tada68/keymaps/mattgemmell/rules.mk index 020d12635d3b..5425d055f1ca 100644 --- a/keyboards/tada68/keymaps/mattgemmell/rules.mk +++ b/keyboards/tada68/keymaps/mattgemmell/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/tada68/keymaps/mlechner/rules.mk b/keyboards/tada68/keymaps/mlechner/rules.mk index 53644093d6c4..14367f2f8a3f 100644 --- a/keyboards/tada68/keymaps/mlechner/rules.mk +++ b/keyboards/tada68/keymaps/mlechner/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/tada68/keymaps/mtdjr/rules.mk b/keyboards/tada68/keymaps/mtdjr/rules.mk index 53644093d6c4..14367f2f8a3f 100644 --- a/keyboards/tada68/keymaps/mtdjr/rules.mk +++ b/keyboards/tada68/keymaps/mtdjr/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/tada68/keymaps/onelivesleft/rules.mk b/keyboards/tada68/keymaps/onelivesleft/rules.mk index 53644093d6c4..14367f2f8a3f 100644 --- a/keyboards/tada68/keymaps/onelivesleft/rules.mk +++ b/keyboards/tada68/keymaps/onelivesleft/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/tada68/keymaps/pascamel/rules.mk b/keyboards/tada68/keymaps/pascamel/rules.mk index 53644093d6c4..14367f2f8a3f 100644 --- a/keyboards/tada68/keymaps/pascamel/rules.mk +++ b/keyboards/tada68/keymaps/pascamel/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/tada68/keymaps/raylas/rules.mk b/keyboards/tada68/keymaps/raylas/rules.mk index 53644093d6c4..14367f2f8a3f 100644 --- a/keyboards/tada68/keymaps/raylas/rules.mk +++ b/keyboards/tada68/keymaps/raylas/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/tada68/keymaps/rbong/rules.mk b/keyboards/tada68/keymaps/rbong/rules.mk index b2789a78a7da..697e093edd8c 100644 --- a/keyboards/tada68/keymaps/rbong/rules.mk +++ b/keyboards/tada68/keymaps/rbong/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/tada68/keymaps/rgb/rules.mk b/keyboards/tada68/keymaps/rgb/rules.mk index 247c9861651c..7cffca44fad7 100644 --- a/keyboards/tada68/keymaps/rgb/rules.mk +++ b/keyboards/tada68/keymaps/rgb/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 diff --git a/keyboards/tada68/keymaps/rys/rules.mk b/keyboards/tada68/keymaps/rys/rules.mk index eb868df074d4..48aa308d5412 100644 --- a/keyboards/tada68/keymaps/rys/rules.mk +++ b/keyboards/tada68/keymaps/rys/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/tada68/keymaps/sm0g/rules.mk b/keyboards/tada68/keymaps/sm0g/rules.mk index 0826db755461..7f95d4bd8481 100644 --- a/keyboards/tada68/keymaps/sm0g/rules.mk +++ b/keyboards/tada68/keymaps/sm0g/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/tada68/keymaps/stephengrier/rules.mk b/keyboards/tada68/keymaps/stephengrier/rules.mk index 53644093d6c4..14367f2f8a3f 100644 --- a/keyboards/tada68/keymaps/stephengrier/rules.mk +++ b/keyboards/tada68/keymaps/stephengrier/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/tada68/keymaps/trashcat/rules.mk b/keyboards/tada68/keymaps/trashcat/rules.mk index 488111732c9d..e0ec1dc43fc8 100644 --- a/keyboards/tada68/keymaps/trashcat/rules.mk +++ b/keyboards/tada68/keymaps/trashcat/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/tada68/keymaps/tshack/rules.mk b/keyboards/tada68/keymaps/tshack/rules.mk index 1a3bda460372..ef343bd7eb4f 100644 --- a/keyboards/tada68/keymaps/tshack/rules.mk +++ b/keyboards/tada68/keymaps/tshack/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/tada68/keymaps/unix/rules.mk b/keyboards/tada68/keymaps/unix/rules.mk index 316106c034d2..bcb15ec5ed92 100644 --- a/keyboards/tada68/keymaps/unix/rules.mk +++ b/keyboards/tada68/keymaps/unix/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/tada68/keymaps/wamsm_tada/rules.mk b/keyboards/tada68/keymaps/wamsm_tada/rules.mk index 53644093d6c4..14367f2f8a3f 100644 --- a/keyboards/tada68/keymaps/wamsm_tada/rules.mk +++ b/keyboards/tada68/keymaps/wamsm_tada/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/tada68/rules.mk b/keyboards/tada68/rules.mk index 47fdba5554d9..c7012e0679ee 100755 --- a/keyboards/tada68/rules.mk +++ b/keyboards/tada68/rules.mk @@ -2,13 +2,6 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = lufa-ms # This board uses the older unsafe 6k version of lufa-ms @@ -17,20 +10,15 @@ BOOTLOADER_SIZE = 6144 # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# 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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode +AUDIO_ENABLE = no # Audio output LAYOUTS = 65_ansi 65_iso diff --git a/keyboards/takashicompany/center_enter/center_enter.c b/keyboards/takashicompany/center_enter/center_enter.c new file mode 100644 index 000000000000..4973e6a643e5 --- /dev/null +++ b/keyboards/takashicompany/center_enter/center_enter.c @@ -0,0 +1,17 @@ +/* Copyright 2021 takashicompany + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "center_enter.h" diff --git a/keyboards/takashicompany/center_enter/center_enter.h b/keyboards/takashicompany/center_enter/center_enter.h new file mode 100644 index 000000000000..0bd576f43288 --- /dev/null +++ b/keyboards/takashicompany/center_enter/center_enter.h @@ -0,0 +1,37 @@ +/* Copyright 2021 takashicompany + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + k00, k01, k02, k03, k04, k05, 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 \ +) { \ + { k00, k01, k02, k03, k04, k05, KC_NO, 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 } \ +} diff --git a/keyboards/takashicompany/center_enter/config.h b/keyboards/takashicompany/center_enter/config.h new file mode 100644 index 000000000000..94868bde1e76 --- /dev/null +++ b/keyboards/takashicompany/center_enter/config.h @@ -0,0 +1,153 @@ +/* +Copyright 2021 takashicompany + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7463 // tc = takashicompany +#define PRODUCT_ID 0x0012 +#define DEVICE_VER 0x0001 +#define MANUFACTURER takashicompany +#define PRODUCT Center x Enter + +/* key matrix size */ +#define MATRIX_ROWS 3 +#define MATRIX_COLS 12 + +/* + * 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 { E6, B4, B5 } +#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, D7, B2, B6, D0, D4, C6} +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +#define ENCODER_RESOLUTION 1 +#define ENCODERS_PAD_A { D2 } +#define ENCODERS_PAD_B { D1 } + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +//#define LED_NUM_LOCK_PIN B0 +//#define LED_CAPS_LOCK_PIN B1 +//#define LED_SCROLL_LOCK_PIN B2 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +#define RGB_DI_PIN D3 +#ifdef RGB_DI_PIN +# define RGBLED_NUM 16 +# define RGBLIGHT_HUE_STEP 8 +# define RGBLIGHT_SAT_STEP 8 +# define RGBLIGHT_VAL_STEP 8 +# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +# 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 +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/takashicompany/center_enter/info.json b/keyboards/takashicompany/center_enter/info.json new file mode 100644 index 000000000000..f0f3af1f390e --- /dev/null +++ b/keyboards/takashicompany/center_enter/info.json @@ -0,0 +1,191 @@ +{ + "keyboard_name": "Center x Enter", + "url": "", + "maintainer": "takashicompany", + "layouts": { + "LAYOUT": { + "layout": [ + { + "label": "201", + "x": 0, + "y": 0, + "w": 1.5 + }, + { + "label": "1", + "x": 1.5, + "y": 0 + }, + { + "label": "2", + "x": 2.5, + "y": 0 + }, + { + "label": "3", + "x": 3.5, + "y": 0 + }, + { + "label": "4", + "x": 4.5, + "y": 0 + }, + { + "label": "5", + "x": 5.5, + "y": 0 + }, + { + "label": "901", + "x": 6.75, + "y": 0, + "w": 1.25, + "h": 2 + }, + { + "label": "6", + "x": 8, + "y": 0 + }, + { + "label": "7", + "x": 9, + "y": 0 + }, + { + "label": "8", + "x": 10, + "y": 0 + }, + { + "label": "9", + "x": 11, + "y": 0 + }, + { + "label": "10", + "x": 12, + "y": 0 + }, + { + "label": "301", + "x": 0, + "y": 1, + "w": 1.75 + }, + { + "label": "11", + "x": 1.75, + "y": 1 + }, + { + "label": "12", + "x": 2.75, + "y": 1 + }, + { + "label": "13", + "x": 3.75, + "y": 1 + }, + { + "label": "14", + "x": 4.75, + "y": 1 + }, + { + "label": "15", + "x": 5.75, + "y": 1 + }, + { + "label": "16", + "x": 8, + "y": 1 + }, + { + "label": "17", + "x": 9, + "y": 1 + }, + { + "label": "18", + "x": 10, + "y": 1 + }, + { + "label": "19", + "x": 11, + "y": 1 + }, + { + "label": "20", + "x": 12, + "y": 1 + }, + { + "label": "401", + "x": 0, + "y": 2, + "w": 2 + }, + { + "label": "21", + "x": 2, + "y": 2 + }, + { + "label": "22", + "x": 3, + "y": 2 + }, + { + "label": "23", + "x": 4, + "y": 2 + }, + { + "label": "24", + "x": 5, + "y": 2 + }, + { + "label": "25", + "x": 6, + "y": 2 + }, + { + "label": "31", + "x": 7, + "y": 2 + }, + { + "label": "26", + "x": 8, + "y": 2 + }, + { + "label": "27", + "x": 9, + "y": 2 + }, + { + "label": "28", + "x": 10, + "y": 2 + }, + { + "label": "29", + "x": 11, + "y": 2 + }, + { + "label": "30", + "x": 12, + "y": 2 + } + ] + } + } +} \ No newline at end of file diff --git a/keyboards/takashicompany/center_enter/keymaps/default/keymap.c b/keyboards/takashicompany/center_enter/keymaps/default/keymap.c new file mode 100644 index 000000000000..1003d0558cfb --- /dev/null +++ b/keyboards/takashicompany/center_enter/keymaps/default/keymap.c @@ -0,0 +1,97 @@ +/* Copyright 2021 takashicompany + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines the keycodes used by our macros in process_record_user +enum custom_keycodes { + SWITCH_LANG +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT( + KC_TAB, LT(2, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, ALT_T(KC_P), + KC_LCTL, KC_A, KC_S, LT(2, KC_D), KC_F, KC_G, SWITCH_LANG, KC_H, KC_J, LT(2, KC_K), KC_L, KC_ENT, + KC_LSFT, KC_Z, GUI_T(KC_X), ALT_T(KC_C), LT(1, KC_V), KC_B, KC_SPC, KC_N, LT(1, KC_M), KC_COMM, CTL_T(KC_DOT), KC_BSPC + ), + + LAYOUT( + KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_TRNS, KC_EQL, KC_LBRC, KC_SLSH, KC_MINS, KC_RO, KC_TRNS, KC_SCLN, KC_QUOT, KC_RBRC, KC_NUHS, KC_JYEN, + KC_TRNS, KC_LSFT, KC_LGUI, KC_LALT, KC_LANG2, KC_LSFT, KC_TRNS, KC_SPC, KC_LANG1, KC_TRNS, KC_TRNS, KC_DEL + ), + + LAYOUT( + KC_TRNS, KC_ESC, KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, + KC_TRNS, KC_LCTL, KC_TRNS, KC_QUES, KC_EXLM, KC_NO, KC_TRNS, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, + KC_TRNS, KC_LSFT, KC_LGUI, KC_LALT, KC_LANG2, KC_TRNS, KC_TRNS, KC_TRNS, KC_LANG1, KC_NO, MO(3), KC_DEL + ), + + LAYOUT( + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, + KC_TRNS, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, + KC_TRNS, RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T, RGB_M_T, KC_TRNS, KC_F11, KC_F12, KC_CAPS, KC_NO, KC_NO + ), + + LAYOUT( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ), +}; + +bool is_lang1 = false; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case SWITCH_LANG: + if (record->event.pressed) { + + if (is_lang1) { + register_code(KC_LANG1); + is_lang1 = false; + } + else { + register_code(KC_LANG2); + is_lang1 = true; + } + } + break; + case KC_LANG1: + if (record->event.pressed) { + is_lang1 = false; + } + break; + + case KC_LANG2: + if (record->event.pressed) { + is_lang1 = true; + } + break; + } + return true; +} + +bool encoder_update_user(uint8_t index, bool clockwise) { + + if (clockwise) { + tap_code(KC_MS_WH_UP); + } else { + tap_code(KC_MS_WH_DOWN); + } + + return true; +} diff --git a/keyboards/takashicompany/center_enter/keymaps/via/config.h b/keyboards/takashicompany/center_enter/keymaps/via/config.h new file mode 100644 index 000000000000..ec7c614382d1 --- /dev/null +++ b/keyboards/takashicompany/center_enter/keymaps/via/config.h @@ -0,0 +1 @@ +#define DYNAMIC_KEYMAP_LAYER_COUNT 8 \ No newline at end of file diff --git a/keyboards/takashicompany/center_enter/keymaps/via/keymap.c b/keyboards/takashicompany/center_enter/keymaps/via/keymap.c new file mode 100644 index 000000000000..cc11ca18a817 --- /dev/null +++ b/keyboards/takashicompany/center_enter/keymaps/via/keymap.c @@ -0,0 +1,91 @@ +/* Copyright 2021 takashicompany + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines the keycodes used by our macros in process_record_user +enum custom_keycodes { + SWITCH_LANG +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT( + KC_TAB, LT(2, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, ALT_T(KC_P), + KC_LCTL, KC_A, KC_S, LT(2, KC_D), KC_F, KC_G, SWITCH_LANG, KC_H, KC_J, LT(2, KC_K), KC_L, KC_ENT, + KC_LSFT, KC_Z, GUI_T(KC_X), ALT_T(KC_C), LT(1, KC_V), KC_B, KC_SPC, KC_N, LT(1, KC_M), KC_COMM, CTL_T(KC_DOT), KC_BSPC + ), + + LAYOUT( + KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_TRNS, KC_EQL, KC_LBRC, KC_SLSH, KC_MINS, KC_RO, KC_TRNS, KC_SCLN, KC_QUOT, KC_RBRC, KC_NUHS, KC_JYEN, + KC_TRNS, KC_LSFT, KC_LGUI, KC_LALT, KC_LANG2, KC_LSFT, KC_TRNS, KC_SPC, KC_LANG1, KC_TRNS, KC_TRNS, KC_DEL + ), + + LAYOUT( + KC_TRNS, KC_ESC, KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, + KC_TRNS, KC_LCTL, KC_TRNS, KC_QUES, KC_EXLM, KC_NO, KC_TRNS, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, + KC_TRNS, KC_LSFT, KC_LGUI, KC_LALT, KC_LANG2, KC_TRNS, KC_TRNS, KC_TRNS, KC_LANG1, KC_NO, MO(3), KC_DEL + ), + + LAYOUT( + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, + KC_TRNS, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, + KC_TRNS, RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T, RGB_M_T, KC_TRNS, KC_F11, KC_F12, KC_CAPS, KC_NO, KC_NO + ) +}; + +bool is_lang1 = false; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case SWITCH_LANG: + if (record->event.pressed) { + + if (is_lang1) { + register_code(KC_LANG1); + is_lang1 = false; + } + else { + register_code(KC_LANG2); + is_lang1 = true; + } + } + break; + case KC_LANG1: + if (record->event.pressed) { + is_lang1 = false; + } + break; + + case KC_LANG2: + if (record->event.pressed) { + is_lang1 = true; + } + break; + } + return true; +} + +bool encoder_update_user(uint8_t index, bool clockwise) { + + if (clockwise) { + tap_code(KC_MS_WH_UP); + } else { + tap_code(KC_MS_WH_DOWN); + } + + return true; +} diff --git a/keyboards/takashicompany/center_enter/keymaps/via/rules.mk b/keyboards/takashicompany/center_enter/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/takashicompany/center_enter/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/takashicompany/center_enter/readme.md b/keyboards/takashicompany/center_enter/readme.md new file mode 100644 index 000000000000..d8db5cc7eb36 --- /dev/null +++ b/keyboards/takashicompany/center_enter/readme.md @@ -0,0 +1,29 @@ +# Center x Enter + +![image](https://raw.githubusercontent.com/takashicompany/center-enter/master/images/qmk.jpg) + +A 30% keyboard with the enter key placed in the center. +Option to install a rotary encoder is also available. +VIA (Remap) is also supported. + +* Keyboard Maintainer: [takashicompany](https://github.com/takashicompany) +* Hardware Supported: Center x Enter PCB, Pro Micro +* Hardware Availability: https://github.com/takashicompany/center-enter + +Make example for this keyboard (after setting up your build environment): + + make takashicompany/center_enter:default + +Flashing example for this keyboard: + + make takashicompany/center_enter:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `RESET` if it is available diff --git a/keyboards/takashicompany/center_enter/rules.mk b/keyboards/takashicompany/center_enter/rules.mk new file mode 100644 index 000000000000..25550958e777 --- /dev/null +++ b/keyboards/takashicompany/center_enter/rules.mk @@ -0,0 +1,21 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +ENCODER_ENABLE = yes diff --git a/keyboards/takashicompany/compacx/compacx.c b/keyboards/takashicompany/compacx/compacx.c new file mode 100644 index 000000000000..cf23638920cd --- /dev/null +++ b/keyboards/takashicompany/compacx/compacx.c @@ -0,0 +1,28 @@ +/* Copyright 2021 takashicompany + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "compacx.h" + +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + if (!clockwise) { + tap_code(KC_MS_WH_UP); + } else { + tap_code(KC_MS_WH_DOWN); + } + + return true; +} diff --git a/keyboards/takashicompany/compacx/compacx.h b/keyboards/takashicompany/compacx/compacx.h new file mode 100644 index 000000000000..61447abeb8f5 --- /dev/null +++ b/keyboards/takashicompany/compacx/compacx.h @@ -0,0 +1,46 @@ +/* Copyright 2021 takashicompany + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + l001, l002, l003, l004, l005, l006, l007, l008, r001, r002, r003, r004, r005, r006, r007, r008, \ + l201, l009, l010, l011, l012, l013, l901, r201, r009, r010, r011, r012, r013, r901, \ + l301, l014, l015, l016, l017, l018, r301, r014, r015, r016, r017, r018, \ + l401, l019, l020, l021, l022, l023, l024, r401, r019, r020, r021, r022, r023, r024, \ + l025, l101, l102, l026, l103, l104, l027, r025, r101, r102, r026, r103, r104, r027 \ +) { \ + { l001, l002, l003, l004, l005, l006, l007 }, \ + { l201, l009, l010, l011, l012, l013, l008 }, \ + { l301, l014, l015, l016, l017, l018, l901 }, \ + { l401, l019, l020, l021, l022, l023, l024 }, \ + { l025, l101, l102, l026, l103, l104, l027 }, \ + { r001, r002, r003, r004, r005, r006, r007 }, \ + { r201, r009, r010, r011, r012, r013, r008 }, \ + { r301, r014, r015, r016, r017, r018, r901 }, \ + { r401, r019, r020, r021, r022, r023, r024 }, \ + { r025, r101, r102, r026, r103, r104, r027 } \ +} diff --git a/keyboards/takashicompany/compacx/config.h b/keyboards/takashicompany/compacx/config.h new file mode 100644 index 000000000000..5428482ed3b9 --- /dev/null +++ b/keyboards/takashicompany/compacx/config.h @@ -0,0 +1,149 @@ +/* +Copyright 2021 takashicompany + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7463 // tc = takashicompany +#define PRODUCT_ID 0x0014 +#define DEVICE_VER 0x0001 +#define MANUFACTURER takashicompany +#define PRODUCT Compacx + +/* key matrix size */ +#define MATRIX_ROWS 5 * 2 +#define MATRIX_COLS 7 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS { D1, D0, D4, C6, D7 } +#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +#define ENCODER_RESOLUTION 4 +#define ENCODERS_PAD_A { E6, B6 } +#define ENCODERS_PAD_B { B4, B5 } + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +#define SOFT_SERIAL_PIN D2 // or D1, D2, D3, E6 + +//#define LED_NUM_LOCK_PIN B0 +//#define LED_CAPS_LOCK_PIN B1 +//#define LED_SCROLL_LOCK_PIN B2 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +#define RGB_DI_PIN D3 +#ifdef RGB_DI_PIN +# define RGBLED_NUM 12 +# define RGBLED_SPLIT {6, 6} +# define RGBLIGHT_HUE_STEP 8 +# define RGBLIGHT_SAT_STEP 8 +# define RGBLIGHT_VAL_STEP 8 +# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +#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 +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/takashicompany/compacx/info.json b/keyboards/takashicompany/compacx/info.json new file mode 100644 index 000000000000..431579feb167 --- /dev/null +++ b/keyboards/takashicompany/compacx/info.json @@ -0,0 +1,309 @@ +{ + "keyboard_name": "Compacx", + "url": "https://github.com/takashicompany/compacx", + "maintainer": "takashicompany", + "layouts": { + "LAYOUT": { + "layout": [ + { + "x": 0, + "y": 0 + }, + { + "x": 1, + "y": 0 + }, + { + "x": 2, + "y": 0 + }, + { + "x": 3, + "y": 0 + }, + { + "x": 4, + "y": 0 + }, + { + "x": 5, + "y": 0 + }, + { + "x": 6, + "y": 0 + }, + { + "x": 7, + "y": 0 + }, + { + "x": 9, + "y": 0 + }, + { + "x": 10, + "y": 0 + }, + { + "x": 11, + "y": 0 + }, + { + "x": 12, + "y": 0 + }, + { + "x": 13, + "y": 0 + }, + { + "x": 14, + "y": 0 + }, + { + "x": 15, + "y": 0 + }, + { + "x": 16, + "y": 0 + }, + { + "x": 0, + "y": 1, + "w": 1.5 + }, + { + "x": 1.5, + "y": 1 + }, + { + "x": 2.5, + "y": 1 + }, + { + "x": 3.5, + "y": 1 + }, + { + "x": 4.5, + "y": 1 + }, + { + "x": 5.5, + "y": 1 + }, + { + "x": 6.75, + "y": 1, + "w": 1.25, + "h": 2 + }, + { + "x": 9, + "y": 1, + "w": 1.5 + }, + { + "x": 10.5, + "y": 1 + }, + { + "x": 11.5, + "y": 1 + }, + { + "x": 12.5, + "y": 1 + }, + { + "x": 13.5, + "y": 1 + }, + { + "x": 14.5, + "y": 1 + }, + { + "x": 15.75, + "y": 1, + "w": 1.25, + "h": 2 + }, + { + "x": 0, + "y": 2, + "w": 1.75 + }, + { + "x": 1.75, + "y": 2 + }, + { + "x": 2.75, + "y": 2 + }, + { + "x": 3.75, + "y": 2 + }, + { + "x": 4.75, + "y": 2 + }, + { + "x": 5.75, + "y": 2 + }, + { + "x": 9, + "y": 2, + "w": 1.75 + }, + { + "x": 10.75, + "y": 2 + }, + { + "x": 11.75, + "y": 2 + }, + { + "x": 12.75, + "y": 2 + }, + { + "x": 13.75, + "y": 2 + }, + { + "x": 14.75, + "y": 2 + }, + { + "x": 0, + "y": 3, + "w": 2 + }, + { + "x": 2, + "y": 3 + }, + { + "x": 3, + "y": 3 + }, + { + "x": 4, + "y": 3 + }, + { + "x": 5, + "y": 3 + }, + { + "x": 6, + "y": 3 + }, + { + "x": 7, + "y": 3 + }, + { + "x": 9, + "y": 3, + "w": 2 + }, + { + "x": 11, + "y": 3 + }, + { + "x": 12, + "y": 3 + }, + { + "x": 13, + "y": 3 + }, + { + "x": 14, + "y": 3 + }, + { + "x": 15, + "y": 3 + }, + { + "x": 16, + "y": 3 + }, + { + "x": 0, + "y": 4 + }, + { + "x": 1, + "y": 4, + "w": 1.25 + }, + { + "x": 2.25, + "y": 4, + "w": 1.25 + }, + { + "x": 3.5, + "y": 4 + }, + { + "x": 4.5, + "y": 4, + "w": 1.25 + }, + { + "x": 5.75, + "y": 4, + "w": 1.25 + }, + { + "x": 7, + "y": 4 + }, + { + "x": 9, + "y": 4 + }, + { + "x": 10, + "y": 4, + "w": 1.25 + }, + { + "x": 11.25, + "y": 4, + "w": 1.25 + }, + { + "x": 12.5, + "y": 4 + }, + { + "x": 13.5, + "y": 4, + "w": 1.25 + }, + { + "x": 14.75, + "y": 4, + "w": 1.25 + }, + { + "x": 16, + "y": 4 + } + ] + } + } +} \ No newline at end of file diff --git a/keyboards/takashicompany/compacx/keymaps/default/keymap.c b/keyboards/takashicompany/compacx/keymaps/default/keymap.c new file mode 100644 index 000000000000..068f621ff817 --- /dev/null +++ b/keyboards/takashicompany/compacx/keymaps/default/keymap.c @@ -0,0 +1,68 @@ +/* Copyright 2021 takashicompany + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_BSPC, KC_ESC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_JYEN, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_ENT, KC_TAB, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_ENT, + KC_CAPS, KC_A, KC_S, LT(2, KC_D), KC_F, KC_G, KC_RCTL, KC_H, KC_J, KC_K, KC_L, KC_SCLN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DEL, KC_RSFT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, + TG(2), LT(3 ,KC_PSCR), KC_LCTL, KC_LGUI, LSFT_T(KC_TAB), LALT_T(KC_LANG2), KC_SPC, KC_SPC, LT(1, KC_LANG1), KC_RALT, KC_RGUI, KC_RCTL, MO(3), KC_DEL + ), + + LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_TRNS, + KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SCLN, KC_QUOT, KC_NUHS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + LAYOUT( + KC_TRNS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PCMM, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, + KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PEQL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_P0, KC_PDOT, KC_PENT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + LAYOUT( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_TRNS, KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, + KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, + KC_TRNS, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T, RGB_M_T, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; + diff --git a/keyboards/takashicompany/compacx/keymaps/via/config.h b/keyboards/takashicompany/compacx/keymaps/via/config.h new file mode 100644 index 000000000000..d04cb9a0d269 --- /dev/null +++ b/keyboards/takashicompany/compacx/keymaps/via/config.h @@ -0,0 +1,18 @@ +/* Copyright 2021 takashicompany + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#define DYNAMIC_KEYMAP_LAYER_COUNT 6 \ No newline at end of file diff --git a/keyboards/takashicompany/compacx/keymaps/via/keymap.c b/keyboards/takashicompany/compacx/keymaps/via/keymap.c new file mode 100644 index 000000000000..068f621ff817 --- /dev/null +++ b/keyboards/takashicompany/compacx/keymaps/via/keymap.c @@ -0,0 +1,68 @@ +/* Copyright 2021 takashicompany + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_BSPC, KC_ESC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_JYEN, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_ENT, KC_TAB, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_ENT, + KC_CAPS, KC_A, KC_S, LT(2, KC_D), KC_F, KC_G, KC_RCTL, KC_H, KC_J, KC_K, KC_L, KC_SCLN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DEL, KC_RSFT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, + TG(2), LT(3 ,KC_PSCR), KC_LCTL, KC_LGUI, LSFT_T(KC_TAB), LALT_T(KC_LANG2), KC_SPC, KC_SPC, LT(1, KC_LANG1), KC_RALT, KC_RGUI, KC_RCTL, MO(3), KC_DEL + ), + + LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_TRNS, + KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SCLN, KC_QUOT, KC_NUHS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + LAYOUT( + KC_TRNS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PCMM, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, + KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PEQL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_P0, KC_PDOT, KC_PENT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + LAYOUT( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_TRNS, KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, + KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, + KC_TRNS, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T, RGB_M_T, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; + diff --git a/keyboards/takashicompany/compacx/keymaps/via/rules.mk b/keyboards/takashicompany/compacx/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/takashicompany/compacx/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/takashicompany/compacx/readme.md b/keyboards/takashicompany/compacx/readme.md new file mode 100644 index 000000000000..ac5cfee16933 --- /dev/null +++ b/keyboards/takashicompany/compacx/readme.md @@ -0,0 +1,29 @@ +# Compacx + +![image](https://github.com/takashicompany/compacx/blob/master/images/qmk.jpg?raw=true) + +"Compacx" is a 35-key keyboard with an ISO enter key. +It is the perfect size for a macro pad or a one-handed gaming keyboard. +It can also be used as a split keyboard by combining two units. + +* Keyboard Maintainer: [takashicompany](https://github.com/takashicompany) +* Hardware Supported: PCB, Pro Micro +* Hardware Availability: https://github.com/takashicompany/compacx + +Make example for this keyboard (after setting up your build environment): + + make takashicompany/compacx:default + +Flashing example for this keyboard: + + make takashicompany/compacx:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `RESET` if it is available diff --git a/keyboards/takashicompany/compacx/rules.mk b/keyboards/takashicompany/compacx/rules.mk new file mode 100644 index 000000000000..f23f08f399f8 --- /dev/null +++ b/keyboards/takashicompany/compacx/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +SPLIT_KEYBOARD=yes +ENCODER_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/takashicompany/dogtag/config.h b/keyboards/takashicompany/dogtag/config.h new file mode 100644 index 000000000000..542a44ce6228 --- /dev/null +++ b/keyboards/takashicompany/dogtag/config.h @@ -0,0 +1,152 @@ +/* +Copyright 2021 takashicompany + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7463 // tc = takashicompany +#define PRODUCT_ID 0x0018 +#define DEVICE_VER 0x0001 +#define MANUFACTURER takashicompany +#define PRODUCT DogTag + +/* key matrix size */ +#define MATRIX_ROWS 2 * 2 +#define MATRIX_COLS 5 + +/* + * 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 { B2, B6 } +#define MATRIX_COL_PINS { F4, F5, F6, F7, B1 } +#define MATRIX_ROW_PINS_RIGHT { B2, B6 } +#define MATRIX_COL_PINS_RIGHT { B1, F7, F6, F5, F4 } + +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +#define ENCODER_RESOLUTION 1 +#define ENCODERS_PAD_A { D4 } +#define ENCODERS_PAD_B { C6 } + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +#define SOFT_SERIAL_PIN D2 // or D1, D2, D3, E6 + +//#define LED_NUM_LOCK_PIN B0 +//#define LED_CAPS_LOCK_PIN B1 +//#define LED_SCROLL_LOCK_PIN B2 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +#define RGB_DI_PIN D3 +#ifdef RGB_DI_PIN +# define RGBLED_NUM 3 * 2 +# define RGBLED_SPLIT {3, 3} +# define RGBLIGHT_HUE_STEP 8 +# define RGBLIGHT_SAT_STEP 8 +# define RGBLIGHT_VAL_STEP 8 +# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +#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 +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/takashicompany/dogtag/dogtag.c b/keyboards/takashicompany/dogtag/dogtag.c new file mode 100644 index 000000000000..459ca9d3f8b7 --- /dev/null +++ b/keyboards/takashicompany/dogtag/dogtag.c @@ -0,0 +1,28 @@ +/* Copyright 2021 takashicompany + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "dogtag.h" + +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + if (clockwise) { + tap_code(KC_MS_WH_DOWN); + } else { + tap_code(KC_MS_WH_UP); + } + + return true; +} diff --git a/keyboards/takashicompany/dogtag/dogtag.h b/keyboards/takashicompany/dogtag/dogtag.h new file mode 100644 index 000000000000..f2b7f5f60145 --- /dev/null +++ b/keyboards/takashicompany/dogtag/dogtag.h @@ -0,0 +1,37 @@ +/* Copyright 2021 takashicompany + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + l01, l02, l03, l04, r01, r02, r03, r04,\ + l05, l06, l07, l08, l09, r05, r06, r07, r08, r09 \ +) { \ + { l01, l02, l03, l04, KC_NO }, \ + { l05, l06, l07, l08, l09 }, \ + { KC_NO, r01, r02, r03, r04,}, \ + { r05, r06, r07, r08, r09 } \ +} diff --git a/keyboards/takashicompany/dogtag/info.json b/keyboards/takashicompany/dogtag/info.json new file mode 100644 index 000000000000..9dad380b7012 --- /dev/null +++ b/keyboards/takashicompany/dogtag/info.json @@ -0,0 +1,83 @@ +{ + "keyboard_name": "DogTag", + "url": "https://github.com/takashicompany/dogtag", + "maintainer": "takashicompany", + "layouts": { + "LAYOUT": { + "layout": [ + { + "x": 0, + "y": 0 + }, + { + "x": 1, + "y": 0 + }, + { + "x": 2, + "y": 0 + }, + { + "x": 3, + "y": 0 + }, + { + "x": 7, + "y": 0 + }, + { + "x": 8, + "y": 0 + }, + { + "x": 9, + "y": 0 + }, + { + "x": 10, + "y": 0 + }, + { + "x": 0, + "y": 1 + }, + { + "x": 1, + "y": 1 + }, + { + "x": 2, + "y": 1 + }, + { + "x": 3, + "y": 1 + }, + { + "x": 7, + "y": 1 + }, + { + "x": 8, + "y": 1 + }, + { + "x": 9, + "y": 1 + }, + { + "x": 10, + "y": 1 + }, + { + "x": 4, + "y": 2 + }, + { + "x": 6, + "y": 2 + } + ] + } + } +} \ No newline at end of file diff --git a/keyboards/takashicompany/dogtag/keymaps/default/keymap.c b/keyboards/takashicompany/dogtag/keymaps/default/keymap.c new file mode 100644 index 000000000000..790d1b8126a4 --- /dev/null +++ b/keyboards/takashicompany/dogtag/keymaps/default/keymap.c @@ -0,0 +1,30 @@ +/* Copyright 2021 takashicompany + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT( + LT(1, KC_ESC), KC_Q, KC_W, KC_E, KC_Y, KC_U, KC_I, KC_O, + KC_LSFT, KC_A, KC_S, KC_D, KC_SPC, KC_TAB, KC_H, KC_J, KC_K, KC_L + ), + + LAYOUT( + KC_TRNS, RGB_MOD, RGB_HUI, RGB_SAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_M_P, RGB_M_K, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) + +}; diff --git a/keyboards/takashicompany/dogtag/keymaps/via/config.h b/keyboards/takashicompany/dogtag/keymaps/via/config.h new file mode 100644 index 000000000000..2ae708b32d46 --- /dev/null +++ b/keyboards/takashicompany/dogtag/keymaps/via/config.h @@ -0,0 +1,20 @@ +/* +Copyright 2021 takashicompany + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#define DYNAMIC_KEYMAP_LAYER_COUNT 16 \ No newline at end of file diff --git a/keyboards/takashicompany/dogtag/keymaps/via/keymap.c b/keyboards/takashicompany/dogtag/keymaps/via/keymap.c new file mode 100644 index 000000000000..790d1b8126a4 --- /dev/null +++ b/keyboards/takashicompany/dogtag/keymaps/via/keymap.c @@ -0,0 +1,30 @@ +/* Copyright 2021 takashicompany + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT( + LT(1, KC_ESC), KC_Q, KC_W, KC_E, KC_Y, KC_U, KC_I, KC_O, + KC_LSFT, KC_A, KC_S, KC_D, KC_SPC, KC_TAB, KC_H, KC_J, KC_K, KC_L + ), + + LAYOUT( + KC_TRNS, RGB_MOD, RGB_HUI, RGB_SAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_M_P, RGB_M_K, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) + +}; diff --git a/keyboards/takashicompany/dogtag/keymaps/via/rules.mk b/keyboards/takashicompany/dogtag/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/takashicompany/dogtag/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/takashicompany/dogtag/readme.md b/keyboards/takashicompany/dogtag/readme.md new file mode 100644 index 000000000000..a68ea6f53bec --- /dev/null +++ b/keyboards/takashicompany/dogtag/readme.md @@ -0,0 +1,37 @@ +# DogTag + +![dogtag](https://github.com/takashicompany/dogtag/blob/master/images/qmk.jpg?raw=true) + +DogTag is a compact macro pad with 9 keys. +It is assembled from a PCB no larger than 100mm x 100mm. +It is reversible and can be used as a split macro pad by connecting two units with a TRRS cable. +Other features include a rotary encoder and MX sockets for hot-swapping of keyswitches. +LED underglow is also available. + +DogTagは9キーのコンパクトなマクロパッドです。 +100mm x 100mm 以内のPCBから組み立てます。 +リバーシブルに対応しており、2台をTRRSケーブルで接続することで分割型のマクロパッドとしても使用できます。 +その他にもロータリーエンコーダの搭載やMXソケットによるキースイッチの付け替え(ホットスワップ)も可能です。 +LEDによるアンダーグロウも可能です。 + +* Keyboard Maintainer: [takashicompany](https://github.com/takashicompany) +* Hardware Supported: PCB, Pro Micro +* Hardware Availability: https://github.com/takashicompany/dogtag + +Make example for this keyboard (after setting up your build environment): + + make takashicompany/dogtag:default + +Flashing example for this keyboard: + + make takashicompany/dogtag:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `RESET` if it is available diff --git a/keyboards/takashicompany/dogtag/rules.mk b/keyboards/takashicompany/dogtag/rules.mk new file mode 100644 index 000000000000..4b979d2ad3f0 --- /dev/null +++ b/keyboards/takashicompany/dogtag/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +ENCODER_ENABLE = yes +SPLIT_KEYBOARD = yes diff --git a/keyboards/takashicompany/endzone34/config.h b/keyboards/takashicompany/endzone34/config.h new file mode 100644 index 000000000000..ff6697623b54 --- /dev/null +++ b/keyboards/takashicompany/endzone34/config.h @@ -0,0 +1,151 @@ +/* +Copyright 2021 takashicompany + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7463 // tc = takashicompany +#define PRODUCT_ID 0x0006 +#define DEVICE_VER 0x0001 +#define MANUFACTURER takashicompany +#define PRODUCT EndZone34 + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 10 + +/* + * 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 { B3, B2, B6, B5 } +#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, D4, C6, D7, E6, B4 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +//#define LED_NUM_LOCK_PIN B0 +//#define LED_CAPS_LOCK_PIN B1 +//#define LED_SCROLL_LOCK_PIN B2 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +#define RGB_DI_PIN D3 +#ifdef RGB_DI_PIN + #define RGBLED_NUM 9 + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ + #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +#define RGBLIGHT_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 +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/takashicompany/endzone34/endzone34.c b/keyboards/takashicompany/endzone34/endzone34.c new file mode 100644 index 000000000000..f96c6b3f353d --- /dev/null +++ b/keyboards/takashicompany/endzone34/endzone34.c @@ -0,0 +1,67 @@ +/* Copyright 2021 takashicompany + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "endzone34.h" + +oled_rotation_t oled_init_kb(oled_rotation_t rotation) { + return OLED_ROTATION_270; +} + +//Variable that stores the number of times the key was pressed +static uint16_t press_count = 0; + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + + // Increment the counter when a key is pressed + if (record->event.pressed) { + press_count++; + } + + return process_record_user(keycode, record); +} + +#ifdef OLED_ENABLE +bool oled_task_kb(void) { + + if (!oled_task_user()) { return false; } + + static const char PROGMEM my_logo[] = { + 0x00, 0x00, 0x00, 0xff, 0x01, 0x01, 0x39, 0x29, 0x29, 0x29, 0x29, 0x29, 0xe9, 0x0f, 0x00, 0x00, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xf8, 0x08, 0xf8, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x80, 0x80, 0xbf, 0xa0, 0xa0, 0xa7, 0xa5, 0xa5, 0xa5, 0xa5, 0x25, 0x25, 0x3c, 0x00, 0x1f, + 0x20, 0x3e, 0x02, 0x3e, 0x20, 0x1f, 0x20, 0x2e, 0x2a, 0x2e, 0x20, 0x1f, 0x00, 0x00, 0x00, 0x00, + 0x87, 0x44, 0x24, 0x14, 0x0c, 0x00, 0xc0, 0xa0, 0x90, 0x88, 0x87, 0x00, 0xe0, 0x10, 0xd0, 0x50, + 0xd0, 0x10, 0xe0, 0x10, 0xd0, 0x50, 0xd0, 0x10, 0xe0, 0x10, 0xd0, 0x50, 0x50, 0x10, 0xf0, 0x00, + 0x07, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x07, 0x00, 0x03, 0x04, 0x05, 0x05, + 0x05, 0x04, 0x03, 0x04, 0x07, 0x00, 0x07, 0x04, 0x03, 0x04, 0x05, 0x05, 0x05, 0x05, 0x07, 0x00 + }; + + oled_write_raw_P(my_logo, sizeof(my_logo)); + oled_set_cursor(0, 5); + + oled_write_ln_P(PSTR("Layer"), false); + oled_write_ln(get_u8_str(get_highest_layer(layer_state), ' '), false); + + oled_write_ln_P(PSTR(" "), false); + oled_write_ln_P(PSTR(" "), false); + + oled_write_ln_P(PSTR("Count"), false); + oled_write_ln(get_u16_str(press_count, ' '), false); + + return false; + +} +#endif diff --git a/keyboards/takashicompany/endzone34/endzone34.h b/keyboards/takashicompany/endzone34/endzone34.h new file mode 100644 index 000000000000..f3e5c88b6357 --- /dev/null +++ b/keyboards/takashicompany/endzone34/endzone34.h @@ -0,0 +1,39 @@ +/* Copyright 2021 takashicompany + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + 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 \ +) { \ + { 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 }, \ + { KC_NO, KC_NO, KC_NO, k31, k32, k33, k34, KC_NO, KC_NO, KC_NO } \ +} diff --git a/keyboards/takashicompany/endzone34/info.json b/keyboards/takashicompany/endzone34/info.json new file mode 100644 index 000000000000..a70799b39b35 --- /dev/null +++ b/keyboards/takashicompany/endzone34/info.json @@ -0,0 +1,48 @@ +{ + "keyboard_name": "EndZone34", + "url": "https://github.com/takashicompany/endzone34", + "maintainer": "takashicompany", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"Q", "x":0, "y":0.5}, + {"label":"W", "x":1, "y":0}, + {"label":"E", "x":2, "y":0}, + {"label":"R", "x":3, "y":0}, + {"label":"T", "x":4, "y":0}, + {"label":"Y", "x":7, "y":0}, + {"label":"U", "x":8, "y":0}, + {"label":"I", "x":9, "y":0}, + {"label":"O", "x":10, "y":0}, + {"label":"P", "x":11, "y":0.5}, + + {"label":"A", "x":0, "y":1.5}, + {"label":"S", "x":1, "y":1}, + {"label":"D", "x":2, "y":1}, + {"label":"F", "x":3, "y":1}, + {"label":"G", "x":4, "y":1}, + {"label":"H", "x":7, "y":1}, + {"label":"J", "x":8, "y":1}, + {"label":"K", "x":9, "y":1}, + {"label":"L", "x":10, "y":1}, + {"label":"Enter", "x":11, "y":1.5}, + + {"label":"Z", "x":0, "y":2.5}, + {"label":"X", "x":1, "y":2}, + {"label":"C", "x":2, "y":2}, + {"label":"V", "x":3, "y":2}, + {"label":"B", "x":4, "y":2}, + {"label":"N", "x":7, "y":2}, + {"label":"M", "x":8, "y":2}, + {"label":", ", "x":9, "y":2}, + {"label":".", "x":10, "y":2}, + {"label":"Back Space", "x":11, "y":2.5}, + + {"label":"⇓", "x":4, "y":3}, + {"label":"Tab", "x":5, "y":3}, + {"label":"Space", "x":6, "y":3}, + {"label":"⇑", "x":7, "y":3} + ] + } + } +} diff --git a/keyboards/takashicompany/endzone34/keymaps/default/keymap.c b/keyboards/takashicompany/endzone34/keymaps/default/keymap.c new file mode 100644 index 000000000000..7c30fb231ee5 --- /dev/null +++ b/keyboards/takashicompany/endzone34/keymaps/default/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2021 takashicompany + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT( + LT(2, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, LT(2, KC_D), KC_F, KC_G, KC_H, KC_J, LT(2, KC_K), KC_L, KC_ENT, + SFT_T(KC_Z), GUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, CTL_T(KC_DOT), KC_BSPC, + ALT_T(KC_LANG2), SFT_T(KC_TAB), KC_SPC, LT(1, KC_LANG1)), + + LAYOUT( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + CTL_T(KC_EQL), KC_LBRC, KC_SLSH, KC_MINS, KC_RO, KC_SCLN, KC_QUOT, KC_RBRC, KC_NUHS, KC_JYEN, + KC_LSFT, KC_LGUI, KC_LALT, KC_LANG2, KC_LSFT, KC_SPC, KC_LANG1, KC_TRNS, KC_TRNS, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + LAYOUT( + KC_ESC, KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, + KC_LCTL, KC_TRNS, KC_QUES, KC_EXLM, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, + KC_LSFT, KC_LGUI, KC_LALT, KC_LANG2, KC_TRNS, KC_TRNS, KC_LANG1, KC_NO, MO(3), KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + LAYOUT( + RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, + RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, + RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T, RGB_M_T, KC_F11, KC_F12, KC_CAPS, KC_NO, KC_NO, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; diff --git a/keyboards/takashicompany/endzone34/keymaps/via/config.h b/keyboards/takashicompany/endzone34/keymaps/via/config.h new file mode 100644 index 000000000000..ed834d1aefbb --- /dev/null +++ b/keyboards/takashicompany/endzone34/keymaps/via/config.h @@ -0,0 +1,20 @@ +/* +Copyright 2021 takashicompany + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#define DYNAMIC_KEYMAP_LAYER_COUNT 8 \ No newline at end of file diff --git a/keyboards/takashicompany/endzone34/keymaps/via/keymap.c b/keyboards/takashicompany/endzone34/keymaps/via/keymap.c new file mode 100644 index 000000000000..336dce2f5458 --- /dev/null +++ b/keyboards/takashicompany/endzone34/keymaps/via/keymap.c @@ -0,0 +1,67 @@ +/* Copyright 2021 takashicompany + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT( + LT(2, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, LT(2, KC_D), KC_F, KC_G, KC_H, KC_J, LT(2, KC_K), KC_L, KC_ENT, + SFT_T(KC_Z), GUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, CTL_T(KC_DOT), KC_BSPC, + ALT_T(KC_LANG2), SFT_T(KC_TAB), KC_SPC, LT(1, KC_LANG1)), + + LAYOUT( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + CTL_T(KC_EQL), KC_LBRC, KC_SLSH, KC_MINS, KC_RO, KC_SCLN, KC_QUOT, KC_RBRC, KC_NUHS, KC_JYEN, + KC_LSFT, KC_LGUI, KC_LALT, KC_LANG2, KC_LSFT, KC_SPC, KC_LANG1, KC_TRNS, KC_TRNS, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + LAYOUT( + KC_ESC, KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, + KC_LCTL, KC_TRNS, KC_QUES, KC_EXLM, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, + KC_LSFT, KC_LGUI, KC_LALT, KC_LANG2, KC_TRNS, KC_TRNS, KC_LANG1, KC_NO, MO(3), KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + LAYOUT( + RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, + RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, + RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T, RGB_M_T, KC_F11, KC_F12, KC_CAPS, KC_NO, KC_NO, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + + LAYOUT( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO), + + LAYOUT( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO), + + LAYOUT( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO), + + LAYOUT( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO) +}; diff --git a/keyboards/takashicompany/endzone34/keymaps/via/rules.mk b/keyboards/takashicompany/endzone34/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/takashicompany/endzone34/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/takashicompany/endzone34/readme.md b/keyboards/takashicompany/endzone34/readme.md new file mode 100644 index 000000000000..c4844f7f6835 --- /dev/null +++ b/keyboards/takashicompany/endzone34/readme.md @@ -0,0 +1,20 @@ +# EndZone34 + +![endzone34](https://github.com/takashicompany/endzone34/blob/master/images/main_qmk.jpg?raw=true) + +A simple yet fun to use 30% keyboard. +Also supports MX sockets and OLED. + +* Keyboard Maintainer: [takashicompany](https://github.com/takashicompany) +* Hardware Supported: EndZone34 PCB, Pro Micro +* Hardware Availability: https://github.com/takashicompany/endzone34 + +Make example for this keyboard (after setting up your build environment): + + make takashicompany/endzone34:default + +Flashing example for this keyboard: + + make takashicompany/endzone34:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/takashicompany/endzone34/rules.mk b/keyboards/takashicompany/endzone34/rules.mk new file mode 100644 index 000000000000..1da7f836e1af --- /dev/null +++ b/keyboards/takashicompany/endzone34/rules.mk @@ -0,0 +1,21 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/takashicompany/heavy_left/config.h b/keyboards/takashicompany/heavy_left/config.h new file mode 100644 index 000000000000..e7f37f251c85 --- /dev/null +++ b/keyboards/takashicompany/heavy_left/config.h @@ -0,0 +1,145 @@ +/* +Copyright 2021 takashicompany + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7463 // tc = takashicompany +#define PRODUCT_ID 0x0015 +#define DEVICE_VER 0x0001 +#define MANUFACTURER takashicompany +#define PRODUCT Heavy Left + +/* key matrix size */ +#define MATRIX_ROWS 5 * 2 +#define MATRIX_COLS 10 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4 } +#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B6, D1, D0 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +#define SOFT_SERIAL_PIN D2 // or D1, D2, D3, E6 + +//#define LED_NUM_LOCK_PIN B0 +//#define LED_CAPS_LOCK_PIN B1 +//#define LED_SCROLL_LOCK_PIN B2 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +#define RGB_DI_PIN D3 +#ifdef RGB_DI_PIN +# define RGBLED_NUM 6 * 2 +# define RGBLED_SPLIT {6, 6} +# define RGBLIGHT_HUE_STEP 8 +# define RGBLIGHT_SAT_STEP 8 +# define RGBLIGHT_VAL_STEP 8 +# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +#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 +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/takashicompany/heavy_left/heavy_left.c b/keyboards/takashicompany/heavy_left/heavy_left.c new file mode 100644 index 000000000000..2af6d3fe6167 --- /dev/null +++ b/keyboards/takashicompany/heavy_left/heavy_left.c @@ -0,0 +1,17 @@ +/* Copyright 2021 takashicompany + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "heavy_left.h" diff --git a/keyboards/takashicompany/heavy_left/heavy_left.h b/keyboards/takashicompany/heavy_left/heavy_left.h new file mode 100644 index 000000000000..a54f88b30394 --- /dev/null +++ b/keyboards/takashicompany/heavy_left/heavy_left.h @@ -0,0 +1,46 @@ +/* Copyright 2021 takashicompany + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + l06, l07, l08, l09, l00, l01, l02, l03, l04, l05, r00, r01, r02, r03, r04, r05, r06, r07, r08, r09, \ + l16, l17, l18, l19, l10, l11, l12, l13, l14, l15, r10, r11, r12, r13, r14, r15, r16, r17, r18, \ + l26, l27, l28, l29, l20, l21, l22, l23, l24, l25, r20, r21, r22, r23, r24, r25, r26, r27, \ + l36, l37, l38, l39, l30, l31, l32, l33, l34, l35, r30, r31, r32, r33, r34, r35, r36, r37, r38, \ + l46, l47, l48, l49, l40, l41, l42, l43, l44, l45, r40, r41, r42, r43, r44, r45, r46, r47, r48 \ +) { \ + { l00, l01, l02, l03, l04, l05, l06, l07, l08, l09 }, \ + { l10, l11, l12, l13, l14, l15, l16, l17, l18, l19 }, \ + { l20, l21, l22, l23, l24, l25, l26, l27, l28, l29 }, \ + { l30, l31, l32, l33, l34, l35, l36, l37, l38, l39 }, \ + { l40, l41, l42, l43, l44, l45, l46, l47, l48, l49 }, \ + { r00, r01, r02, r03, r04, r05, r06, r07, r09, KC_NO }, \ + { r10, r11, r12, r13, r14, r15, r16, r08, r18, KC_NO }, \ + { r20, r21, r22, r23, r24, r25, r26, r17, r27, KC_NO }, \ + { r30, r31, r32, r33, r34, r35, r36, r37, r38, KC_NO }, \ + { r40, r41, r42, r43, r44, r45, r46, r47, r48, KC_NO } \ +} diff --git a/keyboards/takashicompany/heavy_left/info.json b/keyboards/takashicompany/heavy_left/info.json new file mode 100644 index 000000000000..878618e63d65 --- /dev/null +++ b/keyboards/takashicompany/heavy_left/info.json @@ -0,0 +1,496 @@ +{ + "keyboard_name": "heavy_left", + "url": "", + "maintainer": "takashicompany", + "layouts": { + "LAYOUT": { + "layout": [ + { + "label": "24", + "x": 0, + "y": 0 + }, + { + "label": "25", + "x": 1, + "y": 0 + }, + { + "label": "26", + "x": 2, + "y": 0 + }, + { + "label": "27", + "x": 3, + "y": 0 + }, + { + "label": "1", + "x": 4.25, + "y": 0 + }, + { + "label": "2", + "x": 5.25, + "y": 0 + }, + { + "label": "3", + "x": 6.25, + "y": 0 + }, + { + "label": "4", + "x": 7.25, + "y": 0 + }, + { + "label": "5", + "x": 8.25, + "y": 0 + }, + { + "label": "6", + "x": 9.25, + "y": 0 + }, + { + "label": "44", + "x": 10.75, + "y": 0 + }, + { + "label": "45", + "x": 11.75, + "y": 0 + }, + { + "label": "46", + "x": 12.75, + "y": 0 + }, + { + "label": "47", + "x": 13.75, + "y": 0 + }, + { + "label": "48", + "x": 14.75, + "y": 0 + }, + { + "label": "49", + "x": 15.75, + "y": 0 + }, + { + "label": "50", + "x": 16.75, + "y": 0 + }, + { + "label": "51", + "x": 17.75, + "y": 0 + }, + { + "label": "52", + "x": 18.75, + "y": 0 + }, + { + "label": "82", + "x": 20, + "y": 0 + }, + { + "label": "28", + "x": 0, + "y": 1 + }, + { + "label": "29", + "x": 1, + "y": 1 + }, + { + "label": "30", + "x": 2, + "y": 1 + }, + { + "label": "31", + "x": 3, + "y": 1 + }, + { + "label": "201", + "x": 4.25, + "y": 1, + "w": 1.5 + }, + { + "label": "7", + "x": 5.75, + "y": 1 + }, + { + "label": "8", + "x": 6.75, + "y": 1 + }, + { + "label": "9", + "x": 7.75, + "y": 1 + }, + { + "label": "10", + "x": 8.75, + "y": 1 + }, + { + "label": "11", + "x": 9.75, + "y": 1 + }, + { + "label": "53", + "x": 11.25, + "y": 1 + }, + { + "label": "54", + "x": 12.25, + "y": 1 + }, + { + "label": "55", + "x": 13.25, + "y": 1 + }, + { + "label": "56", + "x": 14.25, + "y": 1 + }, + { + "label": "57", + "x": 15.25, + "y": 1 + }, + { + "label": "58", + "x": 16.25, + "y": 1 + }, + { + "label": "59", + "x": 17.25, + "y": 1 + }, + { + "label": "901", + "x": 18.5, + "y": 1, + "w": 1.25, + "h": 2 + }, + { + "label": "83", + "x": 20, + "y": 1 + }, + { + "label": "32", + "x": 0, + "y": 2 + }, + { + "label": "33", + "x": 1, + "y": 2 + }, + { + "label": "34", + "x": 2, + "y": 2 + }, + { + "label": "35", + "x": 3, + "y": 2 + }, + { + "label": "301", + "x": 4.25, + "y": 2, + "w": 1.75 + }, + { + "label": "12", + "x": 6, + "y": 2 + }, + { + "label": "13", + "x": 7, + "y": 2 + }, + { + "label": "14", + "x": 8, + "y": 2 + }, + { + "label": "15", + "x": 9, + "y": 2 + }, + { + "label": "16", + "x": 10, + "y": 2 + }, + { + "label": "60", + "x": 11.5, + "y": 2 + }, + { + "label": "61", + "x": 12.5, + "y": 2 + }, + { + "label": "62", + "x": 13.5, + "y": 2 + }, + { + "label": "63", + "x": 14.5, + "y": 2 + }, + { + "label": "64", + "x": 15.5, + "y": 2 + }, + { + "label": "65", + "x": 16.5, + "y": 2 + }, + { + "label": "66", + "x": 17.5, + "y": 2 + }, + { + "label": "84", + "x": 20, + "y": 2 + }, + { + "label": "36", + "x": 0, + "y": 3 + }, + { + "label": "37", + "x": 1, + "y": 3 + }, + { + "label": "38", + "x": 2, + "y": 3 + }, + { + "label": "39", + "x": 3, + "y": 3 + }, + { + "label": "601", + "x": 4.25, + "y": 3, + "w": 2.25 + }, + { + "label": "17", + "x": 6.5, + "y": 3 + }, + { + "label": "18", + "x": 7.5, + "y": 3 + }, + { + "label": "19", + "x": 8.5, + "y": 3 + }, + { + "label": "20", + "x": 9.5, + "y": 3 + }, + { + "label": "21", + "x": 10.5, + "y": 3 + }, + { + "label": "67", + "x": 11.75, + "y": 3 + }, + { + "label": "68", + "x": 12.75, + "y": 3 + }, + { + "label": "69", + "x": 13.75, + "y": 3 + }, + { + "label": "70", + "x": 14.75, + "y": 3 + }, + { + "label": "71", + "x": 15.75, + "y": 3 + }, + { + "label": "72", + "x": 16.75, + "y": 3 + }, + { + "label": "73", + "x": 17.75, + "y": 3 + }, + { + "label": "74", + "x": 18.75, + "y": 3 + }, + { + "label": "85", + "x": 20, + "y": 3 + }, + { + "label": "40", + "x": 0, + "y": 4 + }, + { + "label": "41", + "x": 1, + "y": 4 + }, + { + "label": "42", + "x": 2, + "y": 4 + }, + { + "label": "43", + "x": 3, + "y": 4 + }, + { + "label": "101", + "x": 4.25, + "y": 4, + "w": 1.25 + }, + { + "label": "22", + "x": 5.5, + "y": 4 + }, + { + "label": "102", + "x": 6.5, + "y": 4, + "w": 1.25 + }, + { + "label": "23", + "x": 7.75, + "y": 4 + }, + { + "label": "103", + "x": 8.75, + "y": 4, + "w": 1.25 + }, + { + "label": "104", + "x": 10, + "y": 4, + "w": 1.25 + }, + { + "label": "75", + "x": 11.5, + "y": 4 + }, + { + "label": "105", + "x": 12.5, + "y": 4, + "w": 1.25 + }, + { + "label": "76", + "x": 13.75, + "y": 4 + }, + { + "label": "77", + "x": 14.75, + "y": 4 + }, + { + "label": "78", + "x": 15.75, + "y": 4 + }, + { + "label": "79", + "x": 16.75, + "y": 4 + }, + { + "label": "80", + "x": 17.75, + "y": 4 + }, + { + "label": "81", + "x": 18.75, + "y": 4 + }, + { + "label": "86", + "x": 20, + "y": 4 + } + ] + } + } +} \ No newline at end of file diff --git a/keyboards/takashicompany/heavy_left/keymaps/default/keymap.c b/keyboards/takashicompany/heavy_left/keymaps/default/keymap.c new file mode 100644 index 000000000000..31ac47c047d5 --- /dev/null +++ b/keyboards/takashicompany/heavy_left/keymaps/default/keymap.c @@ -0,0 +1,53 @@ +/* Copyright 2021 takashicompany + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +#include "keymap_jp.h" + +// Defines the keycodes used by our macros in process_record_user +enum custom_keycodes { + KC_00 = SAFE_RANGE +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT( + KC_ESC, KC_PSLS, KC_PAST, KC_PMNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_JYEN, KC_BSPC, KC_DEL, + KC_P7, KC_P8, KC_P9, KC_PPLS, 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_ENT, KC_HOME, + KC_P4, KC_P5, KC_P6, KC_PCMM, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_END, + KC_P1, KC_P2, KC_P3, KC_PEQL, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, JP_BSLS, KC_UP, KC_RSFT, KC_PGUP, + KC_P0, KC_00, KC_PDOT, KC_PENT, KC_TILD, KC_LCTL, KC_LGUI, KC_LALT, KC_LANG2, KC_SPC, KC_SPC, KC_LANG1, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, MO(1) + ), + + LAYOUT( + KC_NLCK, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T, RGB_M_T, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_00: + if (record->event.pressed) { + SEND_STRING("00"); + } + return false; + } + return true; +} \ No newline at end of file diff --git a/keyboards/takashicompany/heavy_left/keymaps/via/keymap.c b/keyboards/takashicompany/heavy_left/keymaps/via/keymap.c new file mode 100644 index 000000000000..796d27914daa --- /dev/null +++ b/keyboards/takashicompany/heavy_left/keymaps/via/keymap.c @@ -0,0 +1,69 @@ +/* Copyright 2021 takashicompany + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +#include "keymap_jp.h" + +// Defines the keycodes used by our macros in process_record_user +enum custom_keycodes { + KC_00 = USER00, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT( + KC_ESC, KC_PSLS, KC_PAST, KC_PMNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_JYEN, KC_BSPC, KC_DEL, + KC_P7, KC_P8, KC_P9, KC_PPLS, 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_ENT, KC_HOME, + KC_P4, KC_P5, KC_P6, KC_PCMM, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_END, + KC_P1, KC_P2, KC_P3, KC_PEQL, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, JP_BSLS, KC_UP, KC_RSFT, KC_PGUP, + KC_P0, KC_00, KC_PDOT, KC_PENT, KC_TILD, KC_LCTL, KC_LGUI, KC_LALT, KC_LANG2, KC_SPC, KC_SPC, KC_LANG1, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, MO(1) + ), + + LAYOUT( + KC_NLCK, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T, RGB_M_T, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) + +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_00: + if (record->event.pressed) { + SEND_STRING("00"); + } + return false; + } + return true; +} \ No newline at end of file diff --git a/keyboards/takashicompany/heavy_left/keymaps/via/rules.mk b/keyboards/takashicompany/heavy_left/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/takashicompany/heavy_left/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/takashicompany/heavy_left/readme.md b/keyboards/takashicompany/heavy_left/readme.md new file mode 100644 index 000000000000..4cd0e1b0cc56 --- /dev/null +++ b/keyboards/takashicompany/heavy_left/readme.md @@ -0,0 +1,33 @@ +# heavy_left + +![heavy_left](https://github.com/takashicompany/heavy_left/blob/master/images/qmk.jpg) + +This is a 95-key split type Japanese keyboard. +It has a numeric keypad on the left hand side, which can be used not only for entering numbers but also as a dedicated macro pad. +It also supports key switch replacement with MX sockets and LED underglow. + +95キーの分割型の日本語配列のキーボードです。 +左手側にテンキーが備え付けられており、数字の入力だけでなく専用のマクロパッドとしても使用が可能です。 +MXソケットによるキースイッチの付替えや、LEDによるアンダーグロウにも対応しています。 + +* Keyboard Maintainer: [takashicompany](https://github.com/yourusername) +* Hardware Supported: PCB, Pro Micro +* Hardware Availability: https://github.com/takashicompany/heavy_left + +Make example for this keyboard (after setting up your build environment): + + make takashicompany/heavy_left:default + +Flashing example for this keyboard: + + make takashicompany/heavy_left:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `RESET` if it is available diff --git a/keyboards/takashicompany/heavy_left/rules.mk b/keyboards/takashicompany/heavy_left/rules.mk new file mode 100644 index 000000000000..33b30e2335e3 --- /dev/null +++ b/keyboards/takashicompany/heavy_left/rules.mk @@ -0,0 +1,21 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +SPLIT_KEYBOARD=yes \ No newline at end of file diff --git a/keyboards/takashicompany/qoolee/config.h b/keyboards/takashicompany/qoolee/config.h new file mode 100644 index 000000000000..99c8ce01428e --- /dev/null +++ b/keyboards/takashicompany/qoolee/config.h @@ -0,0 +1,153 @@ +/* +Copyright 2021 takashicompany + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7463 // tc = takashicompany +#define PRODUCT_ID 0x0013 +#define DEVICE_VER 0x0001 +#define MANUFACTURER takashicompany +#define PRODUCT QooLee + +/* key matrix size */ +#define MATRIX_ROWS 3 +#define MATRIX_COLS 12 + +/* + * 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 { E6, B4, B5 } +#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B6, D0, D4, C6, D7} +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +#define ENCODER_RESOLUTION 1 +#define ENCODERS_PAD_A { D2 } +#define ENCODERS_PAD_B { D1 } + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +//#define LED_NUM_LOCK_PIN B0 +//#define LED_CAPS_LOCK_PIN B1 +//#define LED_SCROLL_LOCK_PIN B2 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +#define RGB_DI_PIN D3 +#ifdef RGB_DI_PIN +# define RGBLED_NUM 16 +# define RGBLIGHT_HUE_STEP 8 +# define RGBLIGHT_SAT_STEP 8 +# define RGBLIGHT_VAL_STEP 8 +# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +# 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 +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 \ No newline at end of file diff --git a/keyboards/takashicompany/qoolee/info.json b/keyboards/takashicompany/qoolee/info.json new file mode 100644 index 000000000000..b2245a91c719 --- /dev/null +++ b/keyboards/takashicompany/qoolee/info.json @@ -0,0 +1,156 @@ +{ + "keyboard_name": "QooLee", + "url": "https://github.com/takashicompany/qoolee", + "maintainer": "takachicompany", + "layouts": { + "LAYOUT": { + "layout": [ + { + "x": 0, + "y": 0, + "w": 1.5 + }, + { + "x": 1.5, + "y": 0 + }, + { + "x": 2.5, + "y": 0 + }, + { + "x": 3.5, + "y": 0 + }, + { + "x": 4.5, + "y": 0 + }, + { + "x": 5.5, + "y": 0 + }, + { + "x": 6.5, + "y": 0 + }, + { + "x": 7.5, + "y": 0 + }, + { + "x": 8.5, + "y": 0 + }, + { + "x": 9.5, + "y": 0 + }, + { + "x": 10.5, + "y": 0 + }, + { + "x": 11.75, + "y": 0, + "w": 1.25, + "h": 2 + }, + { + "x": 0, + "y": 1, + "w": 1.75 + }, + { + "x": 1.75, + "y": 1 + }, + { + "x": 2.75, + "y": 1 + }, + { + "x": 3.75, + "y": 1 + }, + { + "x": 4.75, + "y": 1 + }, + { + "x": 5.75, + "y": 1 + }, + { + "x": 6.75, + "y": 1 + }, + { + "x": 7.75, + "y": 1 + }, + { + "x": 8.75, + "y": 1 + }, + { + "x": 9.75, + "y": 1 + }, + { + "x": 10.75, + "y": 1 + }, + { + "x": 0, + "y": 2, + "w": 2 + }, + { + "x": 2, + "y": 2 + }, + { + "x": 3, + "y": 2 + }, + { + "x": 4, + "y": 2 + }, + { + "x": 5, + "y": 2 + }, + { + "x": 6, + "y": 2 + }, + { + "x": 7, + "y": 2 + }, + { + "x": 8, + "y": 2 + }, + { + "x": 9, + "y": 2 + }, + { + "x": 10, + "y": 2 + }, + { + "x": 11, + "y": 2 + }, + { + "x": 12, + "y": 2 + } + ] + } + } +} \ No newline at end of file diff --git a/keyboards/takashicompany/qoolee/keymaps/default/keymap.c b/keyboards/takashicompany/qoolee/keymaps/default/keymap.c new file mode 100644 index 000000000000..64d6ff7aea58 --- /dev/null +++ b/keyboards/takashicompany/qoolee/keymaps/default/keymap.c @@ -0,0 +1,79 @@ +/* Copyright 2021 takashicompany + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT( + KC_TAB, LT(2, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, GUI_T(KC_O), ALT_T(KC_P), + KC_LCTL, KC_A, KC_S, LT(2, KC_D), KC_F, KC_G, KC_H, KC_J, LT(2, KC_K), KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_Z, GUI_T(KC_X), ALT_T(KC_C), LT(1, KC_V), KC_B, KC_N, LT(1, KC_M), KC_COMM, CTL_T(KC_DOT), KC_SLSH, KC_BSPC + ), + + LAYOUT( + KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_TRNS, KC_EQL, KC_LBRC, KC_SLSH, KC_MINS, KC_RO, KC_SCLN, KC_QUOT, KC_RBRC, KC_NUHS, KC_JYEN, KC_TRNS, + KC_TRNS, KC_LSFT, KC_LGUI, KC_LALT, KC_LANG2, KC_LSFT, KC_SPC, KC_LANG1, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS + ), + + LAYOUT( + KC_TRNS, KC_ESC, KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, + KC_TRNS, KC_LCTL, LALT(KC_C), KC_QUES, KC_EXLM, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_TRNS, + KC_TRNS, KC_LSFT, KC_LGUI, KC_LALT, KC_LANG2, KC_TRNS, KC_TRNS, KC_LANG1, KC_NO, MO(3), KC_DEL, KC_TRNS + ), + + LAYOUT( + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, + KC_TRNS, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS, + KC_TRNS, RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T, RGB_M_T, KC_F11, KC_F12, KC_CAPS, KC_NO, KC_NO, KC_TRNS + ), + + LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; + +bool encoder_update_user(uint8_t index, bool clockwise) { + + if (clockwise) { + tap_code(KC_MS_WH_UP); + } else { + tap_code(KC_MS_WH_DOWN); + } + + return true; +} + diff --git a/keyboards/takashicompany/qoolee/keymaps/via/config.h b/keyboards/takashicompany/qoolee/keymaps/via/config.h new file mode 100644 index 000000000000..ed834d1aefbb --- /dev/null +++ b/keyboards/takashicompany/qoolee/keymaps/via/config.h @@ -0,0 +1,20 @@ +/* +Copyright 2021 takashicompany + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#define DYNAMIC_KEYMAP_LAYER_COUNT 8 \ No newline at end of file diff --git a/keyboards/takashicompany/qoolee/keymaps/via/keymap.c b/keyboards/takashicompany/qoolee/keymaps/via/keymap.c new file mode 100644 index 000000000000..64d6ff7aea58 --- /dev/null +++ b/keyboards/takashicompany/qoolee/keymaps/via/keymap.c @@ -0,0 +1,79 @@ +/* Copyright 2021 takashicompany + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + LAYOUT( + KC_TAB, LT(2, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, GUI_T(KC_O), ALT_T(KC_P), + KC_LCTL, KC_A, KC_S, LT(2, KC_D), KC_F, KC_G, KC_H, KC_J, LT(2, KC_K), KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_Z, GUI_T(KC_X), ALT_T(KC_C), LT(1, KC_V), KC_B, KC_N, LT(1, KC_M), KC_COMM, CTL_T(KC_DOT), KC_SLSH, KC_BSPC + ), + + LAYOUT( + KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_TRNS, KC_EQL, KC_LBRC, KC_SLSH, KC_MINS, KC_RO, KC_SCLN, KC_QUOT, KC_RBRC, KC_NUHS, KC_JYEN, KC_TRNS, + KC_TRNS, KC_LSFT, KC_LGUI, KC_LALT, KC_LANG2, KC_LSFT, KC_SPC, KC_LANG1, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS + ), + + LAYOUT( + KC_TRNS, KC_ESC, KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, + KC_TRNS, KC_LCTL, LALT(KC_C), KC_QUES, KC_EXLM, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_TRNS, + KC_TRNS, KC_LSFT, KC_LGUI, KC_LALT, KC_LANG2, KC_TRNS, KC_TRNS, KC_LANG1, KC_NO, MO(3), KC_DEL, KC_TRNS + ), + + LAYOUT( + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, + KC_TRNS, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS, + KC_TRNS, RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T, RGB_M_T, KC_F11, KC_F12, KC_CAPS, KC_NO, KC_NO, KC_TRNS + ), + + LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; + +bool encoder_update_user(uint8_t index, bool clockwise) { + + if (clockwise) { + tap_code(KC_MS_WH_UP); + } else { + tap_code(KC_MS_WH_DOWN); + } + + return true; +} + diff --git a/keyboards/takashicompany/qoolee/keymaps/via/rules.mk b/keyboards/takashicompany/qoolee/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/takashicompany/qoolee/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/takashicompany/qoolee/qoolee.c b/keyboards/takashicompany/qoolee/qoolee.c new file mode 100644 index 000000000000..5a86c3c5bfab --- /dev/null +++ b/keyboards/takashicompany/qoolee/qoolee.c @@ -0,0 +1,17 @@ +/* Copyright 2021 takashicompany + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "qoolee.h" diff --git a/keyboards/takashicompany/qoolee/qoolee.h b/keyboards/takashicompany/qoolee/qoolee.h new file mode 100644 index 000000000000..986e7e3ec390 --- /dev/null +++ b/keyboards/takashicompany/qoolee/qoolee.h @@ -0,0 +1,37 @@ +/* Copyright 2021 takashicompany + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + k00, k01, k02, k03, k04, k05, 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 \ +) { \ + { k00, k01, k02, k03, k04, k05, k07, k08, k09, k0a, k0b, KC_NO }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b } \ +} diff --git a/keyboards/takashicompany/qoolee/readme.md b/keyboards/takashicompany/qoolee/readme.md new file mode 100644 index 000000000000..35ee431c1cad --- /dev/null +++ b/keyboards/takashicompany/qoolee/readme.md @@ -0,0 +1,30 @@ +# qoolee + +![qoolee](https://github.com/takashicompany/qoolee/raw/master/images/qmk.jpg?raw=true) + +QooLee is a keyboard with a 30% layout with ISO Enter. +It can also be equipped with a rotary encoder. +It supports hot-swapping of keyswitches with MX sockets and mounting of LEDs. +VIA (Remap) firmware is also available. + +* Keyboard Maintainer: [takashicompany](https://github.com/takashicompany) +* Hardware Supported: PCB, Pro Micro +* Hardware Availability: https://github.com/takashicompany/qoolee + +Make example for this keyboard (after setting up your build environment): + + make takashicomoany/qoolee:default + +Flashing example for this keyboard: + + make takashicompany/qoolee:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `RESET` if it is available diff --git a/keyboards/takashicompany/qoolee/rules.mk b/keyboards/takashicompany/qoolee/rules.mk new file mode 100644 index 000000000000..f398eb02eb43 --- /dev/null +++ b/keyboards/takashicompany/qoolee/rules.mk @@ -0,0 +1,21 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +ENCODER_ENABLE = yes \ No newline at end of file diff --git a/keyboards/taleguers/taleguers75/info.json b/keyboards/taleguers/taleguers75/info.json index 634a96b6611f..6f429c226a80 100644 --- a/keyboards/taleguers/taleguers75/info.json +++ b/keyboards/taleguers/taleguers75/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Taleguers75", "url": "", "maintainer": "borlopjim", - "width": 16.5, - "height": 6.5, "layouts": { "LAYOUT": { "layout": [{ @@ -424,4 +422,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/taleguers/taleguers75/rules.mk b/keyboards/taleguers/taleguers75/rules.mk index 928f9ba59a9f..22ce985232a4 100644 --- a/keyboards/taleguers/taleguers75/rules.mk +++ b/keyboards/taleguers/taleguers75/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes diff --git a/keyboards/tanuki/config.h b/keyboards/tanuki/config.h index f73ffa79a2f6..4680753dd491 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -76,5 +75,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -#endif diff --git a/keyboards/tanuki/info.json b/keyboards/tanuki/info.json index c2480a1747e3..c3a34c38fd57 100644 --- a/keyboards/tanuki/info.json +++ b/keyboards/tanuki/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Tanuki", "url": "", "maintainer": "qmk", - "width": 12.25, - "height": 4, "layouts": { "LAYOUT": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"Back Space", "x":11, "y":0, "w":1.25}, {"label":"Tab", "x":0, "y":1, "w":1.25}, {"label":"A", "x":1.25, "y":1}, {"label":"S", "x":2.25, "y":1}, {"label":"D", "x":3.25, "y":1}, {"label":"F", "x":4.25, "y":1}, {"label":"G", "x":5.25, "y":1}, {"label":"H", "x":6.25, "y":1}, {"label":"J", "x":7.25, "y":1}, {"label":"K", "x":8.25, "y":1}, {"label":"L", "x":9.25, "y":1}, {"label":":", "x":10.25, "y":1}, {"label":"Game", "x":11.25, "y":1}, {"label":"Shift", "x":0.25, "y":2, "w":1.5}, {"label":"Z", "x":1.75, "y":2}, {"label":"X", "x":2.75, "y":2}, {"label":"C", "x":3.75, "y":2}, {"label":"V", "x":4.75, "y":2}, {"label":"B", "x":5.75, "y":2}, {"label":"N", "x":6.75, "y":2}, {"label":"M", "x":7.75, "y":2}, {"label":"\"", "x":8.75, "y":2}, {"label":"?", "x":9.75, "y":2}, {"label":"Enter", "x":10.75, "y":2, "w":1.25}, {"label":"Ctrl", "x":1.25, "y":3, "w":1.25}, {"label":"Alt", "x":2.5, "y":3}, {"label":"<", "x":3.5, "y":3}, {"x":4.5, "y":3, "w":2}, {"x":6.5, "y":3, "w":2}, {"label":">", "x":8.5, "y":3}, {"label":"GUI", "x":9.5, "y":3, "w":1.25}] diff --git a/keyboards/tanuki/keymaps/tucznak/rules.mk b/keyboards/tanuki/keymaps/tucznak/rules.mk index 5c5263eae781..627c89394955 100644 --- a/keyboards/tanuki/keymaps/tucznak/rules.mk +++ b/keyboards/tanuki/keymaps/tucznak/rules.mk @@ -4,7 +4,7 @@ BOOTLOADER = qmk-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/tanuki/rules.mk b/keyboards/tanuki/rules.mk index f8a4ecec3f16..7b17aed2477a 100644 --- a/keyboards/tanuki/rules.mk +++ b/keyboards/tanuki/rules.mk @@ -2,19 +2,12 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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,8 +15,4 @@ COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work RGBLIGHT_ENABLE =yes # Enable keyboard underlight functionality BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls AUDIO_ENABLE = no -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -TAP_DANCE_ENABLE = no diff --git a/keyboards/tanuki/tanuki.c b/keyboards/tanuki/tanuki.c index 573e20061114..97f744664073 100644 --- a/keyboards/tanuki/tanuki.c +++ b/keyboards/tanuki/tanuki.c @@ -2,9 +2,3 @@ #include "rgblight.h" #include "config.h" #include "rgblight.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - -}; diff --git a/keyboards/tau4/keymaps/default/keymap.c b/keyboards/tau4/keymaps/default/keymap.c index f5585ce2a0c5..6c1b2342a29e 100755 --- a/keyboards/tau4/keymaps/default/keymap.c +++ b/keyboards/tau4/keymaps/default/keymap.c @@ -113,7 +113,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE static void render_status(void) { oled_write_P(PSTR("Tau.4 v1.0\n\n"), false); @@ -140,7 +140,8 @@ static void render_status(void) { } } -void oled_task_user(void) { +bool oled_task_user(void) { render_status(); + return false; } #endif diff --git a/keyboards/tau4/rules.mk b/keyboards/tau4/rules.mk index 712646abc55b..b2bfe5a1f54a 100755 --- a/keyboards/tau4/rules.mk +++ b/keyboards/tau4/rules.mk @@ -7,21 +7,19 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes # Rotary Encoder support -OLED_DRIVER_ENABLE = yes # OLED display support +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # OLED display support # EEPROM_DRIVER ?= i2c # Driver for external EEPROM chip # This is currently not working due to QMK not officially supporting the chip used on the Tau4, I am working on a fix. diff --git a/keyboards/team0110/p1800fl/config.h b/keyboards/team0110/p1800fl/config.h new file mode 100644 index 000000000000..75e63c75cee2 --- /dev/null +++ b/keyboards/team0110/p1800fl/config.h @@ -0,0 +1,83 @@ +/* +Copyright 2020 marhalloweenvt + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x3EAE +#define DEVICE_VER 0x0001 +#define MANUFACTURER team0110 +#define PRODUCT p1800fl + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 15 + +/* + * 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 { B6, B5, B4, D7, D6, D4 } +#define MATRIX_COL_PINS { C7, F7, F6, F5, F4, F1, F0, E6, B0, B1, B2, B3, D0, D1, D2} +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +#define BACKLIGHT_PIN B7 +#define BACKLIGHT_BREATHING +#define BACKLIGHT_LEVELS 5 + +/* RGB Lighting */ +#define RGB_DI_PIN C6 +#ifdef RGB_DI_PIN +# define RGBLIGHT_ANIMATIONS +# define RGBLED_NUM 8 +# define RGBLIGHT_HUE_STEP 8 +# define RGBLIGHT_SAT_STEP 8 +# define RGBLIGHT_VAL_STEP 8 +# define RGBLIGHT_LIMIT_VAL 255 +# define RGBLIGHT_SLEEP +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 0 \ No newline at end of file diff --git a/keyboards/team0110/p1800fl/info.json b/keyboards/team0110/p1800fl/info.json new file mode 100644 index 000000000000..c49ec2ef5c6a --- /dev/null +++ b/keyboards/team0110/p1800fl/info.json @@ -0,0 +1,97 @@ +{ + "keyboard_name": "p1800fl", + "url": "http://team0110.store/", + "maintainer": "team0110", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"!", "x":1, "y":0}, + {"label":"@", "x":2, "y":0}, + {"label":"#", "x":3, "y":0}, + {"label":"$", "x":4, "y":0}, + {"label":"%", "x":5, "y":0}, + {"label":"^", "x":6, "y":0}, + {"label":"&", "x":7, "y":0}, + {"label":"*", "x":8, "y":0}, + {"label":"(", "x":9, "y":0}, + {"label":")", "x":10, "y":0}, + {"label":"_", "x":11, "y":0}, + {"label":"+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0}, + {"label":"Backspace", "x":14, "y":0}, + {"label":"Num Lock", "x":15.5, "y":0}, + {"label":"/", "x":16.5, "y":0}, + {"label":"*", "x":17.5, "y":0}, + {"label":"-", "x":18.5, "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":"7", "x":15.5, "y":1}, + {"label":"8", "x":16.5, "y":1}, + {"label":"9", "x":17.5, "y":1}, + {"label":"+", "x":18.5, "y":1}, + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":":", "x":10.75, "y":2}, + {"label":"\"", "x":11.75, "y":2}, + {"label":"Enter", "x":12.75, "y":2}, + {"label":"Enter", "x":13.75, "y":2, "w":1.25}, + {"label":"4", "x":15.5, "y":2}, + {"label":"5", "x":16.5, "y":2}, + {"label":"6", "x":17.5, "y":2}, + {"label":"+", "x":18.5, "y":2}, + {"label":"Shift", "x":0, "y":3, "w":1.25}, + {"label":"Shift", "x":1.25, "y":3}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"Up", "x":14.25, "y":3.25}, + {"label":"1", "x":15.5, "y":3}, + {"label":"2", "x":16.5, "y":3}, + {"label":"3", "x":17.5, "y":3}, + {"label":"Enter", "x":18.5, "y":3}, + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"Win", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"6.25x", "x":3.75, "y":4, "w":6.25}, + {"label":"Ctrl", "x":10, "y":4}, + {"label":"Win", "x":11, "y":4}, + {"label":"Alt", "x":12, "y":4}, + {"label":"Left", "x":13.25, "y":4.25}, + {"label":"Down", "x":14.25, "y":4.25}, + {"label":"Right", "x":15.25, "y":4.25}, + {"label":"0", "x":16.5, "y":4}, + {"label":".", "x":17.5, "y":4}, + {"label":"Enter", "x":18.5, "y":4} + ] + } + } +} diff --git a/keyboards/team0110/p1800fl/keymaps/default/keymap.c b/keyboards/team0110/p1800fl/keymaps/default/keymap.c new file mode 100644 index 000000000000..e0a3ad35c1b0 --- /dev/null +++ b/keyboards/team0110/p1800fl/keymaps/default/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2020 marhalloweenvt + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [0] = LAYOUT( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PEQL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT + ), + [1] = LAYOUT( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, KC_PSCR, KC_SLCK, KC_PAUS, _______, + _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, KC_INS, KC_HOME, KC_PGUP, _______, + _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, KC_END, KC_PGDOWN, _______, + _______, _______, BL_TOGG, BL_BRTG, BL_INC, BL_DEC, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLU, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/handwired/p1800fl/keymaps/default/readme.md b/keyboards/team0110/p1800fl/keymaps/default/readme.md similarity index 100% rename from keyboards/handwired/p1800fl/keymaps/default/readme.md rename to keyboards/team0110/p1800fl/keymaps/default/readme.md diff --git a/keyboards/team0110/p1800fl/keymaps/via/keymap.c b/keyboards/team0110/p1800fl/keymaps/via/keymap.c new file mode 100644 index 000000000000..9cd55ff54c3f --- /dev/null +++ b/keyboards/team0110/p1800fl/keymaps/via/keymap.c @@ -0,0 +1,48 @@ +/* Copyright 2020 marhalloweenvt + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [0] = LAYOUT( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PEQL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT + ), + [1] = LAYOUT( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, KC_PSCR, KC_SLCK, KC_PAUS, _______, + _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, KC_INS, KC_HOME, KC_PGUP, _______, + _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, KC_END, KC_PGDOWN, _______, + _______, _______, BL_TOGG, BL_BRTG, BL_INC, BL_DEC, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLU, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, _______, _______, _______, _______ + ), + [2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/team0110/p1800fl/keymaps/via/readme.md b/keyboards/team0110/p1800fl/keymaps/via/readme.md new file mode 100644 index 000000000000..fabc3229f37b --- /dev/null +++ b/keyboards/team0110/p1800fl/keymaps/via/readme.md @@ -0,0 +1 @@ +# The default VIA keymap for p1800fl diff --git a/keyboards/team0110/p1800fl/keymaps/via/rules.mk b/keyboards/team0110/p1800fl/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/team0110/p1800fl/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/handwired/p1800fl/p1800fl.c b/keyboards/team0110/p1800fl/p1800fl.c similarity index 100% rename from keyboards/handwired/p1800fl/p1800fl.c rename to keyboards/team0110/p1800fl/p1800fl.c diff --git a/keyboards/handwired/p1800fl/p1800fl.h b/keyboards/team0110/p1800fl/p1800fl.h similarity index 100% rename from keyboards/handwired/p1800fl/p1800fl.h rename to keyboards/team0110/p1800fl/p1800fl.h diff --git a/keyboards/team0110/p1800fl/readme.md b/keyboards/team0110/p1800fl/readme.md new file mode 100644 index 000000000000..a9f50ddb76c3 --- /dev/null +++ b/keyboards/team0110/p1800fl/readme.md @@ -0,0 +1,15 @@ +# p1800fl + +![p1800fl](https://i.imgur.com/GQd28rNh.jpg) + +A 1800 Frow-less keyboard project from our team. + +* Keyboard Maintainer: [team0110](https://github.com/team0110) +* Hardware Supported: p1800fl PCB +* Hardware Availability: http://team0110.store/ + +Make example for this keyboard (after setting up your build environment): + + make team0110/p1800fl: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/team0110/p1800fl/rules.mk b/keyboards/team0110/p1800fl/rules.mk new file mode 100644 index 000000000000..1f44da3ea6c9 --- /dev/null +++ b/keyboards/team0110/p1800fl/rules.mk @@ -0,0 +1,19 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/technika/info.json b/keyboards/technika/info.json index 27d397c0a242..c78d31193f30 100644 --- a/keyboards/technika/info.json +++ b/keyboards/technika/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Technika", "url": "", "maintainer": "Gondolindrim", - "height": 4, - "width": 14, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/technika/rules.mk b/keyboards/technika/rules.mk index 50e88b591e9f..112db7a3c2a2 100644 --- a/keyboards/technika/rules.mk +++ b/keyboards/technika/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # 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 ENCODER_ENABLE = no diff --git a/keyboards/teleport/numpad/config.h b/keyboards/teleport/numpad/config.h new file mode 100644 index 000000000000..f3573483b700 --- /dev/null +++ b/keyboards/teleport/numpad/config.h @@ -0,0 +1,39 @@ +/* +Copyright 2021 Moritz Plattner +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7470 //"tp" +#define PRODUCT_ID 0x0001 +#define DEVICE_VER 0x0001 +#define MANUFACTURER tlprt +#define PRODUCT NumPad + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 4 + +/* Keyboard Matrix Assignments */ +#define MATRIX_ROW_PINS { D7, D4, D6, B4, B5 } +#define MATRIX_COL_PINS { F6, F5, F7, F4 } +#define UNUSED_PINS { B0, B1, B2, B3, B6, B7, D0, D1, D2, D3, D5, F0, F1, E6, C6, C7 } + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 diff --git a/keyboards/teleport/numpad/info.json b/keyboards/teleport/numpad/info.json new file mode 100644 index 000000000000..a05b7440bafc --- /dev/null +++ b/keyboards/teleport/numpad/info.json @@ -0,0 +1,27 @@ +{ + "keyboard_name": "tlprt_NumPad", + "maintainer": "ebastler", + "layouts": { + "LAYOUT_numpad_5x4": { + "layout": [ + {"label":"Num Lock", "x":0, "y":0}, + {"label":"/", "x":1, "y":0}, + {"label":"*", "x":2, "y":0}, + {"label":"-", "x":3, "y":0}, + {"label":"7", "x":0, "y":1}, + {"label":"8", "x":1, "y":1}, + {"label":"9", "x":2, "y":1}, + {"label":"4", "x":0, "y":2}, + {"label":"5", "x":1, "y":2}, + {"label":"6", "x":2, "y":2}, + {"label":"+", "x":3, "y":1, "h":2}, + {"label":"1", "x":0, "y":3}, + {"label":"2", "x":1, "y":3}, + {"label":"3", "x":2, "y":3}, + {"label":"0", "x":0, "y":4, "w":2}, + {"label":",", "x":2, "y":4}, + {"label":"Enter", "x":3, "y":3, "h":2} + ] + } + } +} diff --git a/keyboards/teleport/numpad/keymaps/default/keymap.c b/keyboards/teleport/numpad/keymaps/default/keymap.c new file mode 100644 index 000000000000..539a046ee850 --- /dev/null +++ b/keyboards/teleport/numpad/keymaps/default/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2021 Moritz Plattner + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_numpad_5x4( + LT(1, KC_NLCK), KC_PSLS, KC_PAST, 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 + ), + + [1] = LAYOUT_numpad_5x4( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, RESET + ), +}; diff --git a/keyboards/teleport/numpad/keymaps/via/keymap.c b/keyboards/teleport/numpad/keymaps/via/keymap.c new file mode 100644 index 000000000000..8eea06c76eee --- /dev/null +++ b/keyboards/teleport/numpad/keymaps/via/keymap.c @@ -0,0 +1,51 @@ +/* Copyright 2021 Moritz Plattner + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_numpad_5x4( + LT(1, KC_NLCK), KC_PSLS, KC_PAST, 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 + ), + + [1] = LAYOUT_numpad_5x4( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, RESET + ), + + [2] = LAYOUT_numpad_5x4( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, RESET + ), + + [3] = LAYOUT_numpad_5x4( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, RESET + ), +}; diff --git a/keyboards/teleport/numpad/keymaps/via/rules.mk b/keyboards/teleport/numpad/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/teleport/numpad/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/teleport/numpad/numpad.c b/keyboards/teleport/numpad/numpad.c new file mode 100644 index 000000000000..375e240589a0 --- /dev/null +++ b/keyboards/teleport/numpad/numpad.c @@ -0,0 +1,16 @@ +/* Copyright 2021 Moritz Plattner + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "numpad.h" diff --git a/keyboards/teleport/numpad/numpad.h b/keyboards/teleport/numpad/numpad.h new file mode 100644 index 000000000000..9c7413cd8e90 --- /dev/null +++ b/keyboards/teleport/numpad/numpad.h @@ -0,0 +1,33 @@ +/* Copyright 2021 Moritz Plattner + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_numpad_5x4( \ + K00, K01, K02, K03, \ + K10, K11, K12, \ + K20, K21, K22, K13, \ + K30, K31, K32, \ + K40, K41, K42 \ +) { \ + { K00, K01, K02, K03 }, \ + { K10, K11, K12, K13 }, \ + { K20, K21, K22, KC_NO }, \ + { K30, K31, K32, KC_NO }, \ + { K40, K41, K42, KC_NO }, \ +} diff --git a/keyboards/teleport/numpad/readme.md b/keyboards/teleport/numpad/readme.md new file mode 100644 index 000000000000..aebde6f16017 --- /dev/null +++ b/keyboards/teleport/numpad/readme.md @@ -0,0 +1,20 @@ +# The Teleport NumPad + +* Keyboard Maintainer: [ebastler](https://github.com/ebastler) +* Hardware Supported: Teleport NumPad +* Hardware Availability: [TheTeleport.de](https://www.theteleport.de/) + +Make example for this keyboard (after setting up your build environment): + + make teleport/numpad:default + +Flash example for this keyboard: + + make teleport/numpad:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader Enter the bootloader in 3 ways: +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (In this case NumLock) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB +* **Keycode in layout**: Press the key mapped to `RESET` (With the default keymap, hold NumLock, then press Enter) \ No newline at end of file diff --git a/keyboards/teleport/numpad/rules.mk b/keyboards/teleport/numpad/rules.mk new file mode 100644 index 000000000000..ca0153d1faee --- /dev/null +++ b/keyboards/teleport/numpad/rules.mk @@ -0,0 +1,20 @@ +# 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 +# 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 + +LAYOUTS = numpad_5x4 diff --git a/keyboards/telophase/info.json b/keyboards/telophase/info.json index 3a9d52818c29..b31460fa227b 100644 --- a/keyboards/telophase/info.json +++ b/keyboards/telophase/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Telophase", "url": "", "maintainer": "qmk", - "width": 13, - "height": 4, "layouts": { "LAYOUT_ortho_4x12": { "layout": [ diff --git a/keyboards/telophase/rules.mk b/keyboards/telophase/rules.mk index d475836b7bdf..39d09d007cc9 100644 --- a/keyboards/telophase/rules.mk +++ b/keyboards/telophase/rules.mk @@ -7,17 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output CUSTOM_MATRIX = lite diff --git a/keyboards/tempo_turtle/bradpad/info.json b/keyboards/tempo_turtle/bradpad/info.json index 37125e64e42a..d32cc2c665fe 100644 --- a/keyboards/tempo_turtle/bradpad/info.json +++ b/keyboards/tempo_turtle/bradpad/info.json @@ -2,8 +2,6 @@ "keyboard_name": "bradpad", "url": "https://tempoturtle.com", "maintainer": "wxyangf", - "width": 4, - "height": 5, "diode_direction": "ROW2COL", "matrix_pins":{ "rows":["B7", "D5", "C7", "D2", "D3"], diff --git a/keyboards/tempo_turtle/bradpad/rules.mk b/keyboards/tempo_turtle/bradpad/rules.mk index c0685cf30498..aeb2c9089a7e 100644 --- a/keyboards/tempo_turtle/bradpad/rules.mk +++ b/keyboards/tempo_turtle/bradpad/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output UNICODE_ENABLE = yes diff --git a/keyboards/tender/macrowo_pad/info.json b/keyboards/tender/macrowo_pad/info.json index fcfc2931e9c8..727de47839b7 100644 --- a/keyboards/tender/macrowo_pad/info.json +++ b/keyboards/tender/macrowo_pad/info.json @@ -2,11 +2,9 @@ "keyboard_name": "Macrowo_Pad", "url": "https//www.github.com/swiftrax", "maintainer": "swiftrax", - "width": 11.5, - "height": 3, "layouts": { "LAYOUT": { "layout": [{"label":"0,1", "x":1, "y":0}, {"label":"0,3", "x":3.25, "y":0}, {"label":"0,6", "x":7.25, "y":0}, {"label":"0,8", "x":9.5, "y":0}, {"label":"0,0", "x":0, "y":0.5}, {"label":"0,2", "x":2, "y":0.5}, {"label":"0,7", "x":8.5, "y":0.5}, {"label":"0,9", "x":10.5, "y":0.5}, {"label":"0,4", "x":3.75, "y":1}, {"label":"0,5", "x":6.75, "y":1}, {"label":"1,4", "x":5.25, "y":1.25}, {"label":"1,0", "x":0, "y":1.5}, {"label":"1,2", "x":2, "y":1.5}, {"label":"1,7", "x":8.5, "y":1.5}, {"label":"1,9", "x":10.5, "y":1.5}, {"label":"1,1", "x":1, "y":2}, {"label":"1,3", "x":4.25, "y":2}, {"label":"1,5", "x":6.25, "y":2}, {"label":"1,8", "x":9.5, "y":2}] } } -} \ No newline at end of file +} diff --git a/keyboards/tender/macrowo_pad/keymaps/default/keymap.c b/keyboards/tender/macrowo_pad/keymaps/default/keymap.c index f3ee17995312..685fbd7e04dd 100644 --- a/keyboards/tender/macrowo_pad/keymaps/default/keymap.c +++ b/keyboards/tender/macrowo_pad/keymaps/default/keymap.c @@ -39,18 +39,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT( SAY_OWO, SAY_OWO, SAY_OWO, SAY_OWO, SAY_OWO, SAY_OWO, SAY_OWO, SAY_OWO, SAY_OWO, SAY_OWO, SAY_OWO, SAY_OWO, SAY_OWO, SAY_OWO, SAY_OWO, SAY_OWO, SAY_OWO, SAY_OWO, SAY_OWO), - + [1] = LAYOUT( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) }; -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { - return OLED_ROTATION_270; + return OLED_ROTATION_270; } -void oled_task_user(void) { +bool oled_task_user(void) { oled_write_P(PSTR("OWO\nWhat's\nthis?"), false); + return false; } #endif diff --git a/keyboards/tender/macrowo_pad/keymaps/default/rules.mk b/keyboards/tender/macrowo_pad/keymaps/default/rules.mk index b898ed17970f..fd3d5d7e560f 100644 --- a/keyboards/tender/macrowo_pad/keymaps/default/rules.mk +++ b/keyboards/tender/macrowo_pad/keymaps/default/rules.mk @@ -1 +1,2 @@ -OLED_DRIVER_ENABLE = yes # Enable Support for SSD1306 or SH1106 OLED Displays; Communicating over I2C \ No newline at end of file +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enable Support for SSD1306 or SH1106 OLED Displays; Communicating over I2C diff --git a/keyboards/tender/macrowo_pad/keymaps/via/keymap.c b/keyboards/tender/macrowo_pad/keymaps/via/keymap.c index 9f527fd9e27e..e4e2c131ed58 100644 --- a/keyboards/tender/macrowo_pad/keymaps/via/keymap.c +++ b/keyboards/tender/macrowo_pad/keymaps/via/keymap.c @@ -39,7 +39,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT( SAY_OWO, SAY_OWO, SAY_OWO, SAY_OWO, SAY_OWO, SAY_OWO, SAY_OWO, SAY_OWO, SAY_OWO, SAY_OWO, SAY_OWO, SAY_OWO, SAY_OWO, SAY_OWO, SAY_OWO, SAY_OWO, SAY_OWO, SAY_OWO, SAY_OWO), - + [1] = LAYOUT( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), @@ -53,12 +53,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) }; -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { - return OLED_ROTATION_270; + return OLED_ROTATION_270; } -void oled_task_user(void) { +bool oled_task_user(void) { oled_write_P(PSTR("OWO\nWhat's\nthis?"), false); + return false; } #endif diff --git a/keyboards/tender/macrowo_pad/keymaps/via/rules.mk b/keyboards/tender/macrowo_pad/keymaps/via/rules.mk index 0d102b41e2f9..d3ac2585b9ea 100644 --- a/keyboards/tender/macrowo_pad/keymaps/via/rules.mk +++ b/keyboards/tender/macrowo_pad/keymaps/via/rules.mk @@ -1,2 +1,3 @@ VIA_ENABLE = yes -OLED_DRIVER_ENABLE = yes # Enable Support for SSD1306 or SH1106 OLED Displays; Communicating over I2C +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enable Support for SSD1306 or SH1106 OLED Displays; Communicating over I2C diff --git a/keyboards/tender/macrowo_pad/rules.mk b/keyboards/tender/macrowo_pad/rules.mk index 9d5d7c8ce981..8474335ac17d 100644 --- a/keyboards/tender/macrowo_pad/rules.mk +++ b/keyboards/tender/macrowo_pad/rules.mk @@ -7,17 +7,12 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = no # Enable support for EC11 Rotary Encoder diff --git a/keyboards/tenki/info.json b/keyboards/tenki/info.json index 6c37a45605c5..7d87abba5ac8 100644 --- a/keyboards/tenki/info.json +++ b/keyboards/tenki/info.json @@ -2,8 +2,6 @@ "keyboard_name": "TENKI", "url": "https://tokopedia.com/pixlup", "maintainer": "eriqadams", - "width": 4, - "height": 5, "layouts": { "LAYOUT_ortho_5x4": { "layout": [{"label":"Num Lock", "x":0, "y":0}, {"label":"/", "x":1, "y":0}, {"label":"*", "x":2, "y":0}, {"label":"-", "x":3, "y":0}, {"label":"7", "x":0, "y":1}, {"label":"8", "x":1, "y":1}, {"label":"9", "x":2, "y":1}, {"label":"+", "x":3, "y":1}, {"label":"4", "x":0, "y":2}, {"label":"5", "x":1, "y":2}, {"label":"6", "x":2, "y":2}, {"label":"Bspc", "x":3, "y":2}, {"label":"1", "x":0, "y":3}, {"label":"2", "x":1, "y":3}, {"label":"3", "x":2, "y":3}, {"label":"=", "x":3, "y":3}, {"label":"0", "x":0, "y":4}, {"label":"PrtScr", "x":1, "y":4}, {"label":".", "x":2, "y":4}, {"label":"Enter", "x":3, "y":4}] diff --git a/keyboards/tenki/rules.mk b/keyboards/tenki/rules.mk index e96881cc03f2..d1daab3f4b47 100644 --- a/keyboards/tenki/rules.mk +++ b/keyboards/tenki/rules.mk @@ -2,23 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID BOOTLOADER = caterina # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 -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 diff --git a/keyboards/terrazzo/config.h b/keyboards/terrazzo/config.h index 985110d16b6e..43720fa78f9a 100644 --- a/keyboards/terrazzo/config.h +++ b/keyboards/terrazzo/config.h @@ -83,35 +83,39 @@ so there is only one configuration. */ #ifdef LED_MATRIX_ENABLE -#define LED_DRIVER_ADDR_1 0x74 +#define LED_DRIVER_ADDR_1 0x74 #define LED_DRIVER_COUNT 1 #define DRIVER_LED_TOTAL 105 #define LED_MATRIX_ROWS 15 #define LED_MATRIX_COLS 7 #define LED_MATRIX_MAXIMUM_BRIGHTNESS 20 -#define LED_DISABLE_WHEN_USB_SUSPENDED true - -#define DISABLE_LED_MATRIX_ALPHAS_MODS -#define DISABLE_LED_MATRIX_BREATHING -#define DISABLE_LED_MATRIX_BAND -#define DISABLE_LED_MATRIX_BAND_PINWHEEL -#define DISABLE_LED_MATRIX_BAND_SPIRAL -#define DISABLE_LED_MATRIX_CYCLE_LEFT_RIGHT -#define DISABLE_LED_MATRIX_CYCLE_UP_DOWN -#define DISABLE_LED_MATRIX_CYCLE_OUT_IN -#define DISABLE_LED_MATRIX_DUAL_BEACON -#define DISABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLE -#define DISABLE_LED_MATRIX_SOLID_REACTIVE_WIDE -#define DISABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE -#define DISABLE_LED_MATRIX_SOLID_REACTIVE_CROSS -#define DISABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS -#define DISABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS -#define DISABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS -#define DISABLE_LED_MATRIX_SOLID_SPLASH -#define DISABLE_LED_MATRIX_SOLID_MULTISPLASH -#define DISABLE_LED_MATRIX_WAVE_LEFT_RIGHT -#define DISABLE_LED_MATRIX_WAVE_UP_DOWN - +#define LED_DISABLE_WHEN_USB_SUSPENDED + +// LED Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_led_matrix?id=led-matrix-effects +// # define ENABLE_LED_MATRIX_ALPHAS_MODS +// # define ENABLE_LED_MATRIX_BREATHING +// # define ENABLE_LED_MATRIX_BAND +// # define ENABLE_LED_MATRIX_BAND_PINWHEEL +// # define ENABLE_LED_MATRIX_BAND_SPIRAL +// # define ENABLE_LED_MATRIX_CYCLE_LEFT_RIGHT +// # define ENABLE_LED_MATRIX_CYCLE_UP_DOWN +// # define ENABLE_LED_MATRIX_CYCLE_OUT_IN +// # define ENABLE_LED_MATRIX_DUAL_BEACON +// # if defined(LED_MATRIX_KEYREACTIVE_ENABLED) +// # define ENABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLE +// # define ENABLE_LED_MATRIX_SOLID_REACTIVE_WIDE +// # define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE +// # define ENABLE_LED_MATRIX_SOLID_REACTIVE_CROSS +// # define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS +// # define ENABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS +// # define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS +// # define ENABLE_LED_MATRIX_SPLASH +// # define ENABLE_LED_MATRIX_MULTISPLASH +// # endif +// # define ENABLE_LED_MATRIX_WAVE_LEFT_RIGHT +// # define ENABLE_LED_MATRIX_WAVE_UP_DOWN #endif /* Terrazzo animations */ diff --git a/keyboards/terrazzo/info.json b/keyboards/terrazzo/info.json index d41a81c5d25c..7efb3d711137 100644 --- a/keyboards/terrazzo/info.json +++ b/keyboards/terrazzo/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Terrazzo", "url": "", "maintainer": "MsMustard", - "width": 14.5, - "height": 4, "layouts": { "LAYOUT": { "layout": [ @@ -38,4 +36,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/terrazzo/rules.mk b/keyboards/terrazzo/rules.mk index 719c6cb1fcdb..4b594bb9bb3e 100644 --- a/keyboards/terrazzo/rules.mk +++ b/keyboards/terrazzo/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = 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 LED_MATRIX_ENABLE = yes LED_MATRIX_DRIVER = IS31FL3731 diff --git a/keyboards/terrazzo/terrazzo.c b/keyboards/terrazzo/terrazzo.c index e6ba1f6c39b1..731efec20c01 100644 --- a/keyboards/terrazzo/terrazzo.c +++ b/keyboards/terrazzo/terrazzo.c @@ -21,7 +21,7 @@ #include "print.h" #include "quantum.h" -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { /* Refer to IS31 manual for these locations * https://cdn-learn.adafruit.com/downloads/pdf/adafruit-15x7-7x15-charlieplex-led-matrix-charliewing-featherwing.pdf */ diff --git a/keyboards/tetris/info.json b/keyboards/tetris/info.json index c58e9be52f42..6b59e2b5c0ce 100644 --- a/keyboards/tetris/info.json +++ b/keyboards/tetris/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Tetris", "url": "", "maintainer": "qmk", - "width": 12, - "height": 5, "layouts": { "LAYOUT_planck_mit": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3, "w":2}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}, {"x":0, "y":4}, {"x":1, "y":4}, {"x":10, "y":4}, {"x":11, "y":4}] diff --git a/keyboards/tetris/rules.mk b/keyboards/tetris/rules.mk index ca5a1133380d..7f5d2646bfc8 100755 --- a/keyboards/tetris/rules.mk +++ b/keyboards/tetris/rules.mk @@ -2,27 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = qmk-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 = 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 = yes RGBLIGHT_ENABLE = yes -EXTRAFLAGS = -flto +LTO_ENABLE = yes ENCODER_ENABLE = yes diff --git a/keyboards/tetris/tetris.h b/keyboards/tetris/tetris.h index f5d13e5c2f8e..56f4ecbfc728 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/tg4x/config.h b/keyboards/tg4x/config.h index ca42b76ea06e..87636d837193 100644 --- a/keyboards/tg4x/config.h +++ b/keyboards/tg4x/config.h @@ -123,59 +123,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -194,26 +141,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/tg4x/info.json b/keyboards/tg4x/info.json index 13b23c1c31fc..adf05c1aa453 100644 --- a/keyboards/tg4x/info.json +++ b/keyboards/tg4x/info.json @@ -2,11 +2,9 @@ "keyboard_name": "TG4x", "url": "", "maintainer": "qmk", - "width": 13, - "height": 4, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":0, "y":1, "w":1.25}, {"x":1.25, "y":1}, {"x":2.25, "y":1}, {"x":3.25, "y":1}, {"x":4.25, "y":1}, {"x":5.25, "y":1}, {"x":6.25, "y":1}, {"x":7.25, "y":1}, {"x":8.25, "y":1}, {"x":9.25, "y":1}, {"x":10.25, "y":1}, {"x":11.25, "y":1, "w":1.75}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2, "w":1.25}, {"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":2.25}, {"x":6, "y":3, "w":2.75}, {"x":8.75, "y":3, "w":1.25}, {"x":10, "y":3}, {"x":11, "y":3}, {"x":12, "y":3}] } } -} \ No newline at end of file +} diff --git a/keyboards/tg4x/rules.mk b/keyboards/tg4x/rules.mk index 967eab5b7d0e..437a0da9792f 100644 --- a/keyboards/tg4x/rules.mk +++ b/keyboards/tg4x/rules.mk @@ -2,31 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LTO_ENABLE = yes diff --git a/keyboards/tg4x/tg4x.c b/keyboards/tg4x/tg4x.c index 9452d4d956e3..fa7a970d5eb6 100644 --- a/keyboards/tg4x/tg4x.c +++ b/keyboards/tg4x/tg4x.c @@ -14,38 +14,3 @@ * along with this program. If not, see . */ #include "tg4x.h" - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -/* - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - -*/ diff --git a/keyboards/tgr/910/config.h b/keyboards/tgr/910/config.h index 7ba412be355a..f9a233c1b250 100644 --- a/keyboards/tgr/910/config.h +++ b/keyboards/tgr/910/config.h @@ -47,10 +47,6 @@ along with this program. If not, see . #define RGBLIGHT_ANIMATIONS -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/tgr/910/info.json b/keyboards/tgr/910/info.json index b503478618aa..32d09d21932e 100644 --- a/keyboards/tgr/910/info.json +++ b/keyboards/tgr/910/info.json @@ -2,8 +2,6 @@ "keyboard_name": "TGR-910", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2}, {"x":13.75, "y":2, "w":1.25}, {"x":15, "y":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":2.25}, {"x":6, "y":4, "w":1.25}, {"x":7.25, "y":4, "w":2.75}, {"x":10, "y":4}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] diff --git a/keyboards/tgr/910/rules.mk b/keyboards/tgr/910/rules.mk index 981f6b514f96..2dba9c3eb9ec 100644 --- a/keyboards/tgr/910/rules.mk +++ b/keyboards/tgr/910/rules.mk @@ -2,17 +2,10 @@ MCU = atmega32a # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid # build options -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no EXTRAKEY_ENABLE = yes CONSOLE_ENABLE = no diff --git a/keyboards/tgr/910ce/info.json b/keyboards/tgr/910ce/info.json index ecc9a98e34e7..55ce67b28336 100644 --- a/keyboards/tgr/910ce/info.json +++ b/keyboards/tgr/910ce/info.json @@ -2,8 +2,6 @@ "keyboard_name": "TGR 910 CE", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2}, {"x":13.75, "y":2, "w":1.25}, {"x":15, "y":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":2.75}, {"x":6.5, "y":4, "w":1.25}, {"x":7.75, "y":4, "w":2.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] diff --git a/keyboards/tgr/910ce/rules.mk b/keyboards/tgr/910ce/rules.mk index 743a70733170..998da74985e3 100644 --- a/keyboards/tgr/910ce/rules.mk +++ b/keyboards/tgr/910ce/rules.mk @@ -2,19 +2,12 @@ MCU = atmega32a # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 @@ -23,4 +16,4 @@ BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow WS2812_DRIVER = i2c -LAYOUTS = 65_ansi_blocker 65_iso_blocker \ No newline at end of file +LAYOUTS = 65_ansi_blocker 65_iso_blocker diff --git a/keyboards/tgr/alice/info.json b/keyboards/tgr/alice/info.json index 13377293c31d..7e92a9ceda4d 100644 --- a/keyboards/tgr/alice/info.json +++ b/keyboards/tgr/alice/info.json @@ -2,11 +2,8 @@ "keyboard_name": "TGR Alice", "url": "", "maintainer": "Felipe Coury", - "width": 17.75, - "height": 5, "layouts": { "LAYOUT_alice_split_bs": { - "key_count": 66, "layout": [ {"label":"K63", "x":0, "y":0}, {"label":"K00", "x":1.25, "y":0}, diff --git a/keyboards/tgr/alice/rules.mk b/keyboards/tgr/alice/rules.mk index 39af20ef99d9..2a437c3c13fa 100644 --- a/keyboards/tgr/alice/rules.mk +++ b/keyboards/tgr/alice/rules.mk @@ -2,17 +2,10 @@ MCU = atmega32a # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid # build options -BOOTMAGIC_ENABLE = full +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no EXTRAKEY_ENABLE = yes CONSOLE_ENABLE = no diff --git a/keyboards/tgr/jane/info.json b/keyboards/tgr/jane/info.json deleted file mode 100644 index 000fda24f97f..000000000000 --- a/keyboards/tgr/jane/info.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "keyboard_name": "TGR Jane v2", - "url": "", - "maintainer": "qmk", - "width": 18.25, - "height": 6.5, - "layouts": { - "LAYOUT_all": { - "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5}, {"x":14, "y":1.5}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":13.75, "y":3.5, "w":1.25}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":1.75}, {"x":14, "y":4.5}, {"x":16.25, "y":4.5}, {"x":0, "y":5.5, "w":1.25}, {"x":1.25, "y":5.5}, {"x":2.25, "y":5.5}, {"x":3.25, "y":5.5, "w":1.25}, {"x":4.5, "y":5.5, "w":1.25}, {"x":5.75, "y":5.5, "w":1.25}, {"x":7, "y":5.5, "w":1.25}, {"x":8.25, "y":5.5, "w":1.25}, {"x":9.5, "y":5.5, "w":1.25}, {"x":10.75, "y":5.5}, {"x":11.75, "y":5.5}, {"x":12.75, "y":5.5}, {"x":13.75, "y":5.5, "w":1.25}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}] - }, - - "LAYOUT_tkl_ansi": { - "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5, "w":2.25}, {"x":0, "y":4.5, "w":2.25}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":0, "y":5.5, "w":1.25}, {"x":1.25, "y":5.5, "w":1.25}, {"x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"x":10, "y":5.5, "w":1.25}, {"x":11.25, "y":5.5, "w":1.25}, {"x":12.5, "y":5.5, "w":1.25}, {"x":13.75, "y":5.5, "w":1.25}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}] - }, - - "LAYOUT_tkl_ansi_tsangan": { - "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":4, "y":1.25}, {"x":5, "y":1.25}, {"x":6, "y":1.25}, {"x":7, "y":1.25}, {"x":8, "y":1.25}, {"x":9, "y":1.25}, {"x":10, "y":1.25}, {"x":11, "y":1.25}, {"x":12, "y":1.25}, {"x":13, "y":1.25, "w":2}, {"x":15.25, "y":1.25}, {"x":16.25, "y":1.25}, {"x":17.25, "y":1.25}, {"x":0, "y":2.25, "w":1.5}, {"x":1.5, "y":2.25}, {"x":2.5, "y":2.25}, {"x":3.5, "y":2.25}, {"x":4.5, "y":2.25}, {"x":5.5, "y":2.25}, {"x":6.5, "y":2.25}, {"x":7.5, "y":2.25}, {"x":8.5, "y":2.25}, {"x":9.5, "y":2.25}, {"x":10.5, "y":2.25}, {"x":11.5, "y":2.25}, {"x":12.5, "y":2.25}, {"x":13.5, "y":2.25, "w":1.5}, {"x":15.25, "y":2.25}, {"x":16.25, "y":2.25}, {"x":17.25, "y":2.25}, {"x":0, "y":3.25, "w":1.75}, {"x":1.75, "y":3.25}, {"x":2.75, "y":3.25}, {"x":3.75, "y":3.25}, {"x":4.75, "y":3.25}, {"x":5.75, "y":3.25}, {"x":6.75, "y":3.25}, {"x":7.75, "y":3.25}, {"x":8.75, "y":3.25}, {"x":9.75, "y":3.25}, {"x":10.75, "y":3.25}, {"x":11.75, "y":3.25}, {"x":12.75, "y":3.25, "w":2.25}, {"x":0, "y":4.25, "w":2.25}, {"x":2.25, "y":4.25}, {"x":3.25, "y":4.25}, {"x":4.25, "y":4.25}, {"x":5.25, "y":4.25}, {"x":6.25, "y":4.25}, {"x":7.25, "y":4.25}, {"x":8.25, "y":4.25}, {"x":9.25, "y":4.25}, {"x":10.25, "y":4.25}, {"x":11.25, "y":4.25}, {"x":12.25, "y":4.25, "w":1.75}, {"x":14, "y":4.25}, {"x":16.25, "y":4.25}, {"x":0, "y":5.25, "w":1.5}, {"x":1.5, "y":5.25}, {"x":2.5, "y":5.25, "w":1.5}, {"x":4, "y":5.25, "w":7}, {"x":11, "y":5.25, "w":1.5}, {"x":12.5, "y":5.25}, {"x":13.5, "y":5.25, "w":1.5}, {"x":15.25, "y":5.25}, {"x":16.25, "y":5.25}, {"x":17.25, "y":5.25}] - }, - - "LAYOUT_tkl_iso": { - "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":13.75, "y":2.5, "w":1.25, "h":2}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":0, "y":5.5, "w":1.25}, {"x":1.25, "y":5.5, "w":1.25}, {"x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"x":10, "y":5.5, "w":1.25}, {"x":11.25, "y":5.5, "w":1.25}, {"x":12.5, "y":5.5, "w":1.25}, {"x":13.75, "y":5.5, "w":1.25}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}] - }, - - "LAYOUT_tkl_iso_tsangan": { - "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":4, "y":1.25}, {"x":5, "y":1.25}, {"x":6, "y":1.25}, {"x":7, "y":1.25}, {"x":8, "y":1.25}, {"x":9, "y":1.25}, {"x":10, "y":1.25}, {"x":11, "y":1.25}, {"x":12, "y":1.25}, {"x":13, "y":1.25, "w":2}, {"x":15.25, "y":1.25}, {"x":16.25, "y":1.25}, {"x":17.25, "y":1.25}, {"x":0, "y":2.25, "w":1.5}, {"x":1.5, "y":2.25}, {"x":2.5, "y":2.25}, {"x":3.5, "y":2.25}, {"x":4.5, "y":2.25}, {"x":5.5, "y":2.25}, {"x":6.5, "y":2.25}, {"x":7.5, "y":2.25}, {"x":8.5, "y":2.25}, {"x":9.5, "y":2.25}, {"x":10.5, "y":2.25}, {"x":11.5, "y":2.25}, {"x":12.5, "y":2.25}, {"x":13.75, "y":2.25, "w":1.25, "h":2}, {"x":15.25, "y":2.25}, {"x":16.25, "y":2.25}, {"x":17.25, "y":2.25}, {"x":0, "y":3.25, "w":1.75}, {"x":1.75, "y":3.25}, {"x":2.75, "y":3.25}, {"x":3.75, "y":3.25}, {"x":4.75, "y":3.25}, {"x":5.75, "y":3.25}, {"x":6.75, "y":3.25}, {"x":7.75, "y":3.25}, {"x":8.75, "y":3.25}, {"x":9.75, "y":3.25}, {"x":10.75, "y":3.25}, {"x":11.75, "y":3.25}, {"x":12.75, "y":3.25}, {"x":0, "y":4.25, "w":1.25}, {"x":1.25, "y":4.25}, {"x":2.25, "y":4.25}, {"x":3.25, "y":4.25}, {"x":4.25, "y":4.25}, {"x":5.25, "y":4.25}, {"x":6.25, "y":4.25}, {"x":7.25, "y":4.25}, {"x":8.25, "y":4.25}, {"x":9.25, "y":4.25}, {"x":10.25, "y":4.25}, {"x":11.25, "y":4.25}, {"x":12.25, "y":4.25, "w":1.75}, {"x":14, "y":4.25}, {"x":16.25, "y":4.25}, {"x":0, "y":5.25, "w":1.5}, {"x":1.5, "y":5.25}, {"x":2.5, "y":5.25, "w":1.5}, {"x":4, "y":5.25, "w":7}, {"x":11, "y":5.25, "w":1.5}, {"x":12.5, "y":5.25}, {"x":13.5, "y":5.25, "w":1.5}, {"x":15.25, "y":5.25}, {"x":16.25, "y":5.25}, {"x":17.25, "y":5.25}] - } - } -} diff --git a/keyboards/tgr/jane/jane.c b/keyboards/tgr/jane/jane.c deleted file mode 100644 index d4cdebaa2590..000000000000 --- a/keyboards/tgr/jane/jane.c +++ /dev/null @@ -1,17 +0,0 @@ -/* Copyright 2019 MechMerlin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "jane.h" diff --git a/keyboards/tgr/jane/rules.mk b/keyboards/tgr/jane/rules.mk deleted file mode 100644 index 75ab2bc5bf8a..000000000000 --- a/keyboards/tgr/jane/rules.mk +++ /dev/null @@ -1,24 +0,0 @@ -# MCU name -MCU = atmega32a - -# Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = bootloadHID - -# build options -BOOTMAGIC_ENABLE = no -MOUSEKEY_ENABLE = yes -EXTRAKEY_ENABLE = yes -CONSOLE_ENABLE = no -COMMAND_ENABLE = yes -BACKLIGHT_ENABLE = yes -RGBLIGHT_ENABLE = no -WS2812_DRIVER = i2c - -LAYOUTS = tkl_ansi tkl_iso diff --git a/keyboards/tgr/jane/config.h b/keyboards/tgr/jane/v2/config.h similarity index 100% rename from keyboards/tgr/jane/config.h rename to keyboards/tgr/jane/v2/config.h diff --git a/keyboards/tgr/jane/v2/info.json b/keyboards/tgr/jane/v2/info.json new file mode 100644 index 000000000000..0f0955c3f97c --- /dev/null +++ b/keyboards/tgr/jane/v2/info.json @@ -0,0 +1,26 @@ +{ + "keyboard_name": "TGR Jane v2", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_all": { + "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5}, {"x":14, "y":1.5}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":13.75, "y":3.5, "w":1.25}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":1.75}, {"x":14, "y":4.5}, {"x":16.25, "y":4.5}, {"x":0, "y":5.5, "w":1.25}, {"x":1.25, "y":5.5}, {"x":2.25, "y":5.5}, {"x":3.25, "y":5.5, "w":1.25}, {"x":4.5, "y":5.5, "w":1.25}, {"x":5.75, "y":5.5, "w":1.25}, {"x":7, "y":5.5, "w":1.25}, {"x":8.25, "y":5.5, "w":1.25}, {"x":9.5, "y":5.5, "w":1.25}, {"x":10.75, "y":5.5}, {"x":11.75, "y":5.5}, {"x":12.75, "y":5.5}, {"x":13.75, "y":5.5, "w":1.25}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}] + }, + + "LAYOUT_tkl_ansi": { + "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5, "w":2.25}, {"x":0, "y":4.5, "w":2.25}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":0, "y":5.5, "w":1.25}, {"x":1.25, "y":5.5, "w":1.25}, {"x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"x":10, "y":5.5, "w":1.25}, {"x":11.25, "y":5.5, "w":1.25}, {"x":12.5, "y":5.5, "w":1.25}, {"x":13.75, "y":5.5, "w":1.25}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}] + }, + + "LAYOUT_tkl_ansi_tsangan": { + "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":4, "y":1.25}, {"x":5, "y":1.25}, {"x":6, "y":1.25}, {"x":7, "y":1.25}, {"x":8, "y":1.25}, {"x":9, "y":1.25}, {"x":10, "y":1.25}, {"x":11, "y":1.25}, {"x":12, "y":1.25}, {"x":13, "y":1.25, "w":2}, {"x":15.25, "y":1.25}, {"x":16.25, "y":1.25}, {"x":17.25, "y":1.25}, {"x":0, "y":2.25, "w":1.5}, {"x":1.5, "y":2.25}, {"x":2.5, "y":2.25}, {"x":3.5, "y":2.25}, {"x":4.5, "y":2.25}, {"x":5.5, "y":2.25}, {"x":6.5, "y":2.25}, {"x":7.5, "y":2.25}, {"x":8.5, "y":2.25}, {"x":9.5, "y":2.25}, {"x":10.5, "y":2.25}, {"x":11.5, "y":2.25}, {"x":12.5, "y":2.25}, {"x":13.5, "y":2.25, "w":1.5}, {"x":15.25, "y":2.25}, {"x":16.25, "y":2.25}, {"x":17.25, "y":2.25}, {"x":0, "y":3.25, "w":1.75}, {"x":1.75, "y":3.25}, {"x":2.75, "y":3.25}, {"x":3.75, "y":3.25}, {"x":4.75, "y":3.25}, {"x":5.75, "y":3.25}, {"x":6.75, "y":3.25}, {"x":7.75, "y":3.25}, {"x":8.75, "y":3.25}, {"x":9.75, "y":3.25}, {"x":10.75, "y":3.25}, {"x":11.75, "y":3.25}, {"x":12.75, "y":3.25, "w":2.25}, {"x":0, "y":4.25, "w":2.25}, {"x":2.25, "y":4.25}, {"x":3.25, "y":4.25}, {"x":4.25, "y":4.25}, {"x":5.25, "y":4.25}, {"x":6.25, "y":4.25}, {"x":7.25, "y":4.25}, {"x":8.25, "y":4.25}, {"x":9.25, "y":4.25}, {"x":10.25, "y":4.25}, {"x":11.25, "y":4.25}, {"x":12.25, "y":4.25, "w":1.75}, {"x":14, "y":4.25}, {"x":16.25, "y":4.25}, {"x":0, "y":5.25, "w":1.5}, {"x":1.5, "y":5.25}, {"x":2.5, "y":5.25, "w":1.5}, {"x":4, "y":5.25, "w":7}, {"x":11, "y":5.25, "w":1.5}, {"x":12.5, "y":5.25}, {"x":13.5, "y":5.25, "w":1.5}, {"x":15.25, "y":5.25}, {"x":16.25, "y":5.25}, {"x":17.25, "y":5.25}] + }, + + "LAYOUT_tkl_iso": { + "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":13.75, "y":2.5, "w":1.25, "h":2}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":0, "y":5.5, "w":1.25}, {"x":1.25, "y":5.5, "w":1.25}, {"x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"x":10, "y":5.5, "w":1.25}, {"x":11.25, "y":5.5, "w":1.25}, {"x":12.5, "y":5.5, "w":1.25}, {"x":13.75, "y":5.5, "w":1.25}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}] + }, + + "LAYOUT_tkl_iso_tsangan": { + "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":4, "y":1.25}, {"x":5, "y":1.25}, {"x":6, "y":1.25}, {"x":7, "y":1.25}, {"x":8, "y":1.25}, {"x":9, "y":1.25}, {"x":10, "y":1.25}, {"x":11, "y":1.25}, {"x":12, "y":1.25}, {"x":13, "y":1.25, "w":2}, {"x":15.25, "y":1.25}, {"x":16.25, "y":1.25}, {"x":17.25, "y":1.25}, {"x":0, "y":2.25, "w":1.5}, {"x":1.5, "y":2.25}, {"x":2.5, "y":2.25}, {"x":3.5, "y":2.25}, {"x":4.5, "y":2.25}, {"x":5.5, "y":2.25}, {"x":6.5, "y":2.25}, {"x":7.5, "y":2.25}, {"x":8.5, "y":2.25}, {"x":9.5, "y":2.25}, {"x":10.5, "y":2.25}, {"x":11.5, "y":2.25}, {"x":12.5, "y":2.25}, {"x":13.75, "y":2.25, "w":1.25, "h":2}, {"x":15.25, "y":2.25}, {"x":16.25, "y":2.25}, {"x":17.25, "y":2.25}, {"x":0, "y":3.25, "w":1.75}, {"x":1.75, "y":3.25}, {"x":2.75, "y":3.25}, {"x":3.75, "y":3.25}, {"x":4.75, "y":3.25}, {"x":5.75, "y":3.25}, {"x":6.75, "y":3.25}, {"x":7.75, "y":3.25}, {"x":8.75, "y":3.25}, {"x":9.75, "y":3.25}, {"x":10.75, "y":3.25}, {"x":11.75, "y":3.25}, {"x":12.75, "y":3.25}, {"x":0, "y":4.25, "w":1.25}, {"x":1.25, "y":4.25}, {"x":2.25, "y":4.25}, {"x":3.25, "y":4.25}, {"x":4.25, "y":4.25}, {"x":5.25, "y":4.25}, {"x":6.25, "y":4.25}, {"x":7.25, "y":4.25}, {"x":8.25, "y":4.25}, {"x":9.25, "y":4.25}, {"x":10.25, "y":4.25}, {"x":11.25, "y":4.25}, {"x":12.25, "y":4.25, "w":1.75}, {"x":14, "y":4.25}, {"x":16.25, "y":4.25}, {"x":0, "y":5.25, "w":1.5}, {"x":1.5, "y":5.25}, {"x":2.5, "y":5.25, "w":1.5}, {"x":4, "y":5.25, "w":7}, {"x":11, "y":5.25, "w":1.5}, {"x":12.5, "y":5.25}, {"x":13.5, "y":5.25, "w":1.5}, {"x":15.25, "y":5.25}, {"x":16.25, "y":5.25}, {"x":17.25, "y":5.25}] + } + } +} diff --git a/keyboards/tgr/jane/keymaps/default/config.h b/keyboards/tgr/jane/v2/keymaps/default/config.h similarity index 100% rename from keyboards/tgr/jane/keymaps/default/config.h rename to keyboards/tgr/jane/v2/keymaps/default/config.h diff --git a/keyboards/tgr/jane/keymaps/default/keymap.c b/keyboards/tgr/jane/v2/keymaps/default/keymap.c similarity index 100% rename from keyboards/tgr/jane/keymaps/default/keymap.c rename to keyboards/tgr/jane/v2/keymaps/default/keymap.c diff --git a/keyboards/tgr/jane/keymaps/default/readme.md b/keyboards/tgr/jane/v2/keymaps/default/readme.md similarity index 100% rename from keyboards/tgr/jane/keymaps/default/readme.md rename to keyboards/tgr/jane/v2/keymaps/default/readme.md diff --git a/keyboards/tgr/jane/keymaps/via/config.h b/keyboards/tgr/jane/v2/keymaps/via/config.h similarity index 100% rename from keyboards/tgr/jane/keymaps/via/config.h rename to keyboards/tgr/jane/v2/keymaps/via/config.h diff --git a/keyboards/tgr/jane/keymaps/via/keymap.c b/keyboards/tgr/jane/v2/keymaps/via/keymap.c similarity index 100% rename from keyboards/tgr/jane/keymaps/via/keymap.c rename to keyboards/tgr/jane/v2/keymaps/via/keymap.c diff --git a/keyboards/tgr/jane/v2/keymaps/via/rules.mk b/keyboards/tgr/jane/v2/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/tgr/jane/v2/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/tgr/jane/readme.md b/keyboards/tgr/jane/v2/readme.md similarity index 100% rename from keyboards/tgr/jane/readme.md rename to keyboards/tgr/jane/v2/readme.md diff --git a/keyboards/tgr/jane/v2/rules.mk b/keyboards/tgr/jane/v2/rules.mk new file mode 100644 index 000000000000..9d035a031a95 --- /dev/null +++ b/keyboards/tgr/jane/v2/rules.mk @@ -0,0 +1,17 @@ +# MCU name +MCU = atmega32a + +# Bootloader selection +BOOTLOADER = bootloadhid + +# build options +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes +EXTRAKEY_ENABLE = yes +CONSOLE_ENABLE = no +COMMAND_ENABLE = yes +BACKLIGHT_ENABLE = yes +RGBLIGHT_ENABLE = no +WS2812_DRIVER = i2c + +LAYOUTS = tkl_ansi tkl_iso diff --git a/keyboards/tgr/jane/v2/v2.c b/keyboards/tgr/jane/v2/v2.c new file mode 100644 index 000000000000..3d987485166a --- /dev/null +++ b/keyboards/tgr/jane/v2/v2.c @@ -0,0 +1,17 @@ +/* Copyright 2019 MechMerlin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "v2.h" diff --git a/keyboards/tgr/jane/jane.h b/keyboards/tgr/jane/v2/v2.h similarity index 100% rename from keyboards/tgr/jane/jane.h rename to keyboards/tgr/jane/v2/v2.h diff --git a/keyboards/tgr/jane/v2ce/config.h b/keyboards/tgr/jane/v2ce/config.h new file mode 100644 index 000000000000..e6f6e99e7d06 --- /dev/null +++ b/keyboards/tgr/jane/v2ce/config.h @@ -0,0 +1,42 @@ +/* Copyright 2021 MechMerlin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +#define VENDOR_ID 0x5447 // TG +#define PRODUCT_ID 0x4A43 // JC +#define DEVICE_VER 0x0200 +#define MANUFACTURER TGR +#define PRODUCT Jane + +#define MATRIX_ROWS 8 +#define MATRIX_COLS 15 + +// 0 1 2 3 4 5 6 7 8 9 A B C D E +#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, B5, B6, B7 } +#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2, D7 } +#define UNUSED_PINS + +#define DIODE_DIRECTION COL2ROW +#define DEBOUNCE 5 + +#define BACKLIGHT_PIN D4 +#define BACKLIGHT_LEVELS 3 + +#define LED_CAPS_LOCK_PIN D1 +#define LED_NUM_LOCK_PIN D6 diff --git a/keyboards/tgr/jane/v2ce/info.json b/keyboards/tgr/jane/v2ce/info.json new file mode 100644 index 000000000000..6d977555d79c --- /dev/null +++ b/keyboards/tgr/jane/v2ce/info.json @@ -0,0 +1,28 @@ +{ + "keyboard_name": "TGR Jane v2 CE", + "url": "", + "maintainer": "qmk", + "width": 18.25, + "height": 6.5, + "layouts": { + "LAYOUT_all_f13": { + "layout": [{"x":0, "y":0}, {"x":1.25, "y":0}, {"x":2.25, "y":0}, {"x":3.25, "y":0}, {"x":4.25, "y":0}, {"x":5.5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.75, "y":0}, {"x":10.75, "y":0}, {"x":11.75, "y":0}, {"x":12.75, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5}, {"x":14, "y":1.5}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":13.75, "y":3.5, "w":1.25}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":1.75}, {"x":14, "y":4.5}, {"x":16.25, "y":4.5}, {"x":0, "y":5.5, "w":1.25}, {"x":1.25, "y":5.5}, {"x":2.25, "y":5.5}, {"x":3.25, "y":5.5, "w":1.25}, {"x":4.5, "y":5.5, "w":1.25}, {"x":5.75, "y":5.5, "w":1.25}, {"x":7, "y":5.5, "w":1.25}, {"x":8.25, "y":5.5, "w":1.25}, {"x":9.5, "y":5.5, "w":1.25}, {"x":10.75, "y":5.5}, {"x":11.75, "y":5.5}, {"x":12.75, "y":5.5}, {"x":13.75, "y":5.5, "w":1.25}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}] + }, + + "LAYOUT_tkl_f13_ansi": { + "layout": [{"x":0, "y":0}, {"x":1.25, "y":0}, {"x":2.25, "y":0}, {"x":3.25, "y":0}, {"x":4.25, "y":0}, {"x":5.5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.75, "y":0}, {"x":10.75, "y":0}, {"x":11.75, "y":0}, {"x":12.75, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5, "w":2.25}, {"x":0, "y":4.5, "w":2.25}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":0, "y":5.5, "w":1.25}, {"x":1.25, "y":5.5, "w":1.25}, {"x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"x":10, "y":5.5, "w":1.25}, {"x":11.25, "y":5.5, "w":1.25}, {"x":12.5, "y":5.5, "w":1.25}, {"x":13.75, "y":5.5, "w":1.25}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}] + }, + + "LAYOUT_tkl_f13_ansi_tsangan": { + "layout": [{"x":0, "y":0}, {"x":1.25, "y":0}, {"x":2.25, "y":0}, {"x":3.25, "y":0}, {"x":4.25, "y":0}, {"x":5.5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.75, "y":0}, {"x":10.75, "y":0}, {"x":11.75, "y":0}, {"x":12.75, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5, "w":2.25}, {"x":0, "y":4.5, "w":2.25}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":1.75}, {"x":14, "y":4.5}, {"x":16.25, "y":4.5}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5}, {"x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":7}, {"x":11, "y":5.5, "w":1.5}, {"x":12.5, "y":5.5}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}] + }, + + "LAYOUT_tkl_f13_iso": { + "layout": [{"x":0, "y":0}, {"x":1.25, "y":0}, {"x":2.25, "y":0}, {"x":3.25, "y":0}, {"x":4.25, "y":0}, {"x":5.5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.75, "y":0}, {"x":10.75, "y":0}, {"x":11.75, "y":0}, {"x":12.75, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.75, "y":2.5, "w":1.25, "h":2}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":0, "y":5.5, "w":1.25}, {"x":1.25, "y":5.5, "w":1.25}, {"x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"x":10, "y":5.5, "w":1.25}, {"x":11.25, "y":5.5, "w":1.25}, {"x":12.5, "y":5.5, "w":1.25}, {"x":13.75, "y":5.5, "w":1.25}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}] + }, + + "LAYOUT_tkl_f13_iso_tsangan": { + "layout": [{"x":0, "y":0}, {"x":1.25, "y":0}, {"x":2.25, "y":0}, {"x":3.25, "y":0}, {"x":4.25, "y":0}, {"x":5.5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.75, "y":0}, {"x":10.75, "y":0}, {"x":11.75, "y":0}, {"x":12.75, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.75, "y":2.5, "w":1.25, "h":2}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":1.75}, {"x":14, "y":4.5}, {"x":16.25, "y":4.5}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5}, {"x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":7}, {"x":11, "y":5.5, "w":1.5}, {"x":12.5, "y":5.5}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}] + } + } +} diff --git a/keyboards/tgr/jane/v2ce/keymaps/default/keymap.c b/keyboards/tgr/jane/v2ce/keymaps/default/keymap.c new file mode 100644 index 000000000000..bace43c6fd13 --- /dev/null +++ b/keyboards/tgr/jane/v2ce/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +/* Copyright 2019 MechMerlin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_tkl_f13_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR,KC_SLCK,KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, KC_INS ,KC_HOME,KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_DEL ,KC_END ,KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_APP,KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT) +}; diff --git a/keyboards/tgr/jane/v2ce/keymaps/default/readme.md b/keyboards/tgr/jane/v2ce/keymaps/default/readme.md new file mode 100644 index 000000000000..983182da2470 --- /dev/null +++ b/keyboards/tgr/jane/v2ce/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for Jane \ No newline at end of file diff --git a/keyboards/tgr/jane/v2ce/keymaps/via/config.h b/keyboards/tgr/jane/v2ce/keymaps/via/config.h new file mode 100644 index 000000000000..6e6f025fbbc4 --- /dev/null +++ b/keyboards/tgr/jane/v2ce/keymaps/via/config.h @@ -0,0 +1,19 @@ +/* Copyright 2021 MechMerlin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define DYNAMIC_KEYMAP_LAYER_COUNT 3 diff --git a/keyboards/tgr/jane/v2ce/keymaps/via/keymap.c b/keyboards/tgr/jane/v2ce/keymaps/via/keymap.c new file mode 100644 index 000000000000..1bf4a8c72d35 --- /dev/null +++ b/keyboards/tgr/jane/v2ce/keymaps/via/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2021 MechMerlin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_tkl_f13_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR,KC_SLCK,KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, KC_INS ,KC_HOME,KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_DEL ,KC_END ,KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_APP,KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT), + +[1] = LAYOUT_tkl_f13_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS), + +[2] = LAYOUT_tkl_f13_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS), +}; diff --git a/keyboards/tgr/jane/v2ce/keymaps/via/rules.mk b/keyboards/tgr/jane/v2ce/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/tgr/jane/v2ce/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/tgr/jane/v2ce/readme.md b/keyboards/tgr/jane/v2ce/readme.md new file mode 100644 index 000000000000..20e949caa575 --- /dev/null +++ b/keyboards/tgr/jane/v2ce/readme.md @@ -0,0 +1,19 @@ +# Jane v2 CE + +TKL Custom Keyboard with F13 key + +* Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin) +* Hardware Supported: TGR Jane CE (Pontoporia CE) PCB v1.2 +* Hardware Availability: [Geekhack Group Buy](https://geekhack.org/index.php?topic=100415.0) + +Make example for this keyboard (after setting up your build environment): + + make tgr/jane/v2ce:default + +Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid)) + + make tgr/jane/v2ce:default:flash + +**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard. + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/tgr/jane/v2ce/rules.mk b/keyboards/tgr/jane/v2ce/rules.mk new file mode 100644 index 000000000000..3bed2fa6baa7 --- /dev/null +++ b/keyboards/tgr/jane/v2ce/rules.mk @@ -0,0 +1,17 @@ +# MCU name +MCU = atmega32a + +# Bootloader selection +BOOTLOADER = bootloadHID + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +WS2812_DRIVER = i2c diff --git a/keyboards/tgr/jane/v2ce/v2ce.c b/keyboards/tgr/jane/v2ce/v2ce.c new file mode 100644 index 000000000000..6d478efce921 --- /dev/null +++ b/keyboards/tgr/jane/v2ce/v2ce.c @@ -0,0 +1,17 @@ +/* Copyright 2021 MechMerlin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "v2ce.h" diff --git a/keyboards/tgr/jane/v2ce/v2ce.h b/keyboards/tgr/jane/v2ce/v2ce.h new file mode 100644 index 000000000000..766a9e028ae9 --- /dev/null +++ b/keyboards/tgr/jane/v2ce/v2ce.h @@ -0,0 +1,113 @@ +/* Copyright 2021 MechMerlin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#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_all_f13( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k6A, k0D, k0E, k6B, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k6C, k6D, k6E, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k7C, k7D, k7E, \ + 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, k2E, \ + k50, k51, k52, k53, k54, k55, k57, k58, k59, k5A, k5B, k5C, k5D, k5E, k3E, 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 }, \ + { k50, k51, k52, k53, k54, k55, KC_NO, k57, k58, k59, k5A, k5B, k5C, k5D, k5E }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k6A, k6B, k6C, k6D, k6E }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k7C, k7D, k7E }, \ +} + + +#define LAYOUT_tkl_f13_ansi( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k6A, k0D, k0E, k6B, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k6C, k6D, k6E, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k7C, k7D, k7E, \ + 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, k2E, \ + k50, k51, k52, k55, k58, k59, k5A, k5D, k5E, k3E, 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, k2C, k2D, k2E }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, KC_NO, k3D, k3E }, \ + { k40, KC_NO, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, KC_NO, k4E }, \ + { k50, k51, k52, KC_NO, KC_NO, k55, KC_NO, KC_NO, k58, k59, k5A, KC_NO, KC_NO, k5D, k5E }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k6A, k6B, k6C, k6D, k6E }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k7C, k7D, k7E }, \ +} + +#define LAYOUT_tkl_f13_ansi_tsangan( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k6A, k0D, k0E, k6B, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k6C, k6D, k6E, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k7C, k7D, k7E, \ + 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, k4D, k2E, \ + k50, k51, k52, k55, k58, k59, k5A, k5E, k3E, 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, k2C, k2D, k2E }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, KC_NO, k3D, k3E }, \ + { k40, KC_NO, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E }, \ + { k50, k51, k52, KC_NO, KC_NO, k55, KC_NO, KC_NO, k58, k59, k5A, KC_NO, KC_NO, KC_NO, k5E }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k6A, k6B, k6C, k6D, k6E }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k7C, k7D, k7E }, \ +} + +#define LAYOUT_tkl_f13_iso( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k6A, k0D, k0E, k6B, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k6C, k6D, k6E, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k7C, k7D, k7E, \ + 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, k2E, \ + k50, k51, k52, k55, k58, k59, k5A, k5D, k5E, k3E, 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, k2C, KC_NO, 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, KC_NO, k4E }, \ + { k50, k51, k52, KC_NO, KC_NO, k55, KC_NO, KC_NO, k58, k59, k5A, KC_NO, KC_NO, k5D, k5E }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k6A, k6B, k6C, k6D, k6E }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k7C, k7D, k7E }, \ +} + +#define LAYOUT_tkl_f13_iso_tsangan( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k6A, k0D, k0E, k6B, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k6C, k6D, k6E, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k7C, k7D, k7E, \ + 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, k2E, \ + k50, k51, k52, k55, k58, k59, k5A, k5E, k3E, 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, k2C, KC_NO, 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, KC_NO, KC_NO, k55, KC_NO, KC_NO, k58, k59, k5A, KC_NO, KC_NO, KC_NO, k5E }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k6A, k6B, k6C, k6D, k6E }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k7C, k7D, k7E }, \ +} diff --git a/keyboards/tgr/tris/config.h b/keyboards/tgr/tris/config.h index 16e862a222be..131add14cdde 100644 --- a/keyboards/tgr/tris/config.h +++ b/keyboards/tgr/tris/config.h @@ -42,10 +42,6 @@ along with this program. If not, see . #define RGBLED_NUM 6 #define RGBLIGHT_ANIMATIONS -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/tgr/tris/info.json b/keyboards/tgr/tris/info.json index 401bd6e30817..c4288ac14b13 100644 --- a/keyboards/tgr/tris/info.json +++ b/keyboards/tgr/tris/info.json @@ -2,8 +2,6 @@ "keyboard_name": "TGR Tris", "url": "", "maintainer": "halfenergized", - "width": 4, - "height": 6, "layouts": { "LAYOUT_ortho_6x4": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":0, "y":2.25}, {"x":1, "y":2.25}, {"x":2, "y":2.25}, {"x":3, "y":2.25}, {"x":0, "y":3.25}, {"x":1, "y":3.25}, {"x":2, "y":3.25}, {"x":3, "y":3.25}, {"x":0, "y":4.25}, {"x":1, "y":4.25}, {"x":2, "y":4.25}, {"x":3, "y":4.25}, {"x":0, "y":5.25}, {"x":1, "y":5.25}, {"x":2, "y":5.25}, {"x":3, "y":5.25}] diff --git a/keyboards/tgr/tris/rules.mk b/keyboards/tgr/tris/rules.mk index 358ab6dcc8c8..27c5fcfa047e 100644 --- a/keyboards/tgr/tris/rules.mk +++ b/keyboards/tgr/tris/rules.mk @@ -2,19 +2,12 @@ MCU = atmega32a # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no EXTRAKEY_ENABLE = yes CONSOLE_ENABLE = no diff --git a/keyboards/the_royal/liminal/info.json b/keyboards/the_royal/liminal/info.json index 501158e8845b..b42337a74021 100644 --- a/keyboards/the_royal/liminal/info.json +++ b/keyboards/the_royal/liminal/info.json @@ -2,11 +2,8 @@ "keyboard_name": "liminal", "url": "", "maintainer": "TheRoyalSweatshirt", - "width": 15, - "height": 4, "layouts": { "LAYOUT_base_kit_all": { - "key_count": 52, "layout": [ {"label":"k01", "x":0, "y":0, "w":1}, {"label":"k02", "x":1, "y":0, "w":1.5}, @@ -64,5 +61,3 @@ } } } - - diff --git a/keyboards/the_royal/liminal/rules.mk b/keyboards/the_royal/liminal/rules.mk index bb00fdfa0887..d31761c89937 100644 --- a/keyboards/the_royal/liminal/rules.mk +++ b/keyboards/the_royal/liminal/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u2 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # - change yes to no to disable -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/the_royal/schwann/info.json b/keyboards/the_royal/schwann/info.json index 56db56e91dab..96814fb1eef7 100644 --- a/keyboards/the_royal/schwann/info.json +++ b/keyboards/the_royal/schwann/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Schwann's PCB", "url": "https://github.com/TheRoyalSweatshirt/The_Royal_Projects/tree/schwann/PCBs/Schwann_PCB", "maintainer": "TheRoyalSweatshirt", - "width": 12, - "height": 4, "layouts": { "LAYOUT_mit": { - "key_count": 45, "layout": [ {"label":"TAB", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, @@ -57,7 +54,6 @@ }, "LAYOUT_full_ortho": { - "key_count": 46, "layout": [ {"label":"TAB", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, @@ -109,7 +105,6 @@ }, "LAYOUT_big_boy": { - "key_count": 39, "layout": [ {"label":"TAB", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, diff --git a/keyboards/the_royal/schwann/rules.mk b/keyboards/the_royal/schwann/rules.mk index 9317699f51d2..dbf200266613 100644 --- a/keyboards/the_royal/schwann/rules.mk +++ b/keyboards/the_royal/schwann/rules.mk @@ -2,31 +2,17 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp - BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 - +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/the_ruler/config.h b/keyboards/the_ruler/config.h index 2932dd465163..bcb7441140c9 100644 --- a/keyboards/the_ruler/config.h +++ b/keyboards/the_ruler/config.h @@ -81,54 +81,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. diff --git a/keyboards/the_ruler/info.json b/keyboards/the_ruler/info.json index 98190af48727..5f2b9fba8f54 100644 --- a/keyboards/the_ruler/info.json +++ b/keyboards/the_ruler/info.json @@ -2,8 +2,6 @@ "keyboard_name": "The Ruler", "url": "", "maintainer": "qmk", - "width": 7, - "height": 1, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0, "w":2}] diff --git a/keyboards/the_ruler/rules.mk b/keyboards/the_ruler/rules.mk index bfcc09261582..e79a3c30910f 100644 --- a/keyboards/the_ruler/rules.mk +++ b/keyboards/the_ruler/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. diff --git a/keyboards/the_ruler/the_ruler.c b/keyboards/the_ruler/the_ruler.c index 9686379eb8b2..29a8248924dc 100644 --- a/keyboards/the_ruler/the_ruler.c +++ b/keyboards/the_ruler/the_ruler.c @@ -1,22 +1 @@ #include "the_ruler.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} \ No newline at end of file diff --git a/keyboards/the_uni/info.json b/keyboards/the_uni/info.json index 86e2d5cdb73e..a8b5a1b5cc22 100644 --- a/keyboards/the_uni/info.json +++ b/keyboards/the_uni/info.json @@ -2,8 +2,6 @@ "keyboard_name": "The Uni", "url": "https://www.stenokeyboards.com", "maintainer": "qmk", - "width": 13, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/the_uni/keymaps/default/keymap.c b/keyboards/the_uni/keymaps/default/keymap.c index 01674d948699..492c7a3c9422 100644 --- a/keyboards/the_uni/keymaps/default/keymap.c +++ b/keyboards/the_uni/keymaps/default/keymap.c @@ -19,59 +19,18 @@ along with this program. If not, see . #include "keymap_steno.h" enum uni_layers { -/* - _QWERTY, - _CHOOSE, -*/ - _PLOVER, -}; - -/* -enum uni_keycodes { - PLOVER, - QWERTY + _PLOVER, }; -*/ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* - [_QWERTY] = LAYOUT( - KC_Q, KC_W, KC_E, KC_R, LT(_CHOOSE, KC_T), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, - KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - KC_1, KC_C, KC_V, KC_N, KC_M, KC_2), - [_CHOOSE] = LAYOUT( - _______, _______, _______, _______, _______, PLOVER, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______), -*/ - [_PLOVER] = LAYOUT( - STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR , - STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR , - STN_N1, STN_A, STN_O, STN_E, STN_U, STN_N2), + [_PLOVER] = LAYOUT( + STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR , + STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR , + STN_N1, STN_A, STN_O, STN_E, STN_U, STN_N2), }; -/* -switch (keycode) { - bool process_record_user(uint16_t keycode, keyrecord_t *record) { - case PLOVER: - if (!record->event.pressed) { - layer_on(_PLOVER); - } - return false; - break; - case QWERTY: - if (!record->event.pressed) { - layer_on(_QWERTY); - } - return false; - break; - } - return true; - } -*/ - void matrix_init_user() { - steno_set_mode(STENO_MODE_GEMINI); // or STENO_MODE_BOLT + steno_set_mode(STENO_MODE_GEMINI); // or STENO_MODE_BOLT } diff --git a/keyboards/the_uni/keymaps/qwerty/keymap.c b/keyboards/the_uni/keymaps/qwerty/keymap.c index 3eaac57f3dff..b2f03a361353 100644 --- a/keyboards/the_uni/keymaps/qwerty/keymap.c +++ b/keyboards/the_uni/keymaps/qwerty/keymap.c @@ -16,62 +16,15 @@ along with this program. If not, see . */ #include QMK_KEYBOARD_H -//#include "keymap_steno.h" enum uni_layers { - _QWERTY, -/* - _CHOOSE, - _PLOVER, -*/ + _QWERTY, }; -/* -enum uni_keycodes { - PLOVER, - QWERTY -}; -*/ - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT( - KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, - KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - KC_1, KC_C, KC_V, KC_N, KC_M, KC_2), -/* - - [_CHOOSE] = LAYOUT( - _______, _______, _______, _______, _______, PLOVER, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______), - [_PLOVER] = LAYOUT( - STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR , - STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR , - STN_N1, STN_A, STN_O, STN_E, STN_U, STN_N2), -*/ + [_QWERTY] = LAYOUT( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_1, KC_C, KC_V, KC_N, KC_M, KC_2), }; - -/* -switch (keycode) { - bool process_record_user(uint16_t keycode, keyrecord_t *record) { - case PLOVER: - if (!record->event.pressed) { - layer_on(_PLOVER); - } - return false; - break; - case QWERTY: - if (!record->event.pressed) { - layer_on(_QWERTY); - } - return false; - break; - } - return true; - } -*/ - - void matrix_init_user() { - //steno_set_mode(STENO_MODE_GEMINI); // or STENO_MODE_BOLT - } diff --git a/keyboards/the_uni/config.h b/keyboards/the_uni/pro_micro/config.h similarity index 100% rename from keyboards/the_uni/config.h rename to keyboards/the_uni/pro_micro/config.h diff --git a/keyboards/the_uni/pro_micro/pro_micro.c b/keyboards/the_uni/pro_micro/pro_micro.c new file mode 100644 index 000000000000..3d5b3b23bb47 --- /dev/null +++ b/keyboards/the_uni/pro_micro/pro_micro.c @@ -0,0 +1,18 @@ +/* +Copyright 2021 Peter C. Park + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "pro_micro.h" diff --git a/keyboards/the_uni/the_uni.h b/keyboards/the_uni/pro_micro/pro_micro.h similarity index 100% rename from keyboards/the_uni/the_uni.h rename to keyboards/the_uni/pro_micro/pro_micro.h diff --git a/keyboards/the_uni/pro_micro/readme.md b/keyboards/the_uni/pro_micro/readme.md new file mode 100644 index 000000000000..d6b623156162 --- /dev/null +++ b/keyboards/the_uni/pro_micro/readme.md @@ -0,0 +1,20 @@ +# The Uni + +- Keyboard Maintainer: [Peter](https://github.com/petercpark) +- Link to Keyboard Files: [The_Uni](https://github.com/petercpark/The_Uni) +- Hardware Supported: + - The Uni v1 and v2 (pro_micro) +- Hardware Availability: [https://www.stenokeyboards.com](https://www.stenokeyboards.com) + +# Bootloader + +Enter the bootloader by: + +* **Physical reset button**: On the Uni v3, briefly press the button on the back of the PCB. +* **Reset Pads**: Uni v1 and v2 have pins/pads you must short instead (RST to GND). + +Make examples for this keyboard (after setting up your build environment): + + make the_uni/pro_micro: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/the_uni/pro_micro/rules.mk b/keyboards/the_uni/pro_micro/rules.mk new file mode 100644 index 000000000000..620851a63b71 --- /dev/null +++ b/keyboards/the_uni/pro_micro/rules.mk @@ -0,0 +1,20 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = no # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 +STENO_ENABLE = yes diff --git a/keyboards/the_uni/readme.md b/keyboards/the_uni/readme.md index 730ea2483d1a..cd1c99e43575 100644 --- a/keyboards/the_uni/readme.md +++ b/keyboards/the_uni/readme.md @@ -1,19 +1,31 @@ # The Uni -![The Uni](https://raw.githubusercontent.com/petercpark/The_Uni/main/Pics/layout.png) -![The Uni Closeup](https://github.com/petercpark/The_Uni/blob/main/Pics/close-up-uni.jpg?raw=true) +​ +![Layout](https://docs.stenokeyboards.com/images/uni-layout.png) +![The Uni v2](https://github.com/petercpark/The_Uni/blob/main/Pics/uni%20v2/uni-v2.JPG?raw=true) A compact unibody split ortholinear keyboard made specifically for stenography. -- Keyboard Maintainer: [Peter C. Park](https://github.com/petercpark) -- Link to Keyboard Files: [The_Uni](https://github.com/petercpark/The_Uni) -- Hardware Supported: The Uni v1 and v2 (pro micro or equivalent) -- Hardware Availability: [website](https://www.stenokeyboards.com) +- Keyboard Maintainer: [Peter](https://github.com/petercpark) +- Link to Keyboard Files (pro_micro version): [https://github.com/petercpark/The_Uni](https://github.com/petercpark/The_Uni) +- Hardware Supported: -Make example for this keyboard (after setting up your build environment): + - The Uni v1 and v2 (pro_micro) + - The Uni v3 (usb_c) - make the_uni:default +- Hardware Availability: [https://www.stenokeyboards.com](https://www.stenokeyboards.com) -To enter the bootloader, short the rst and gnd pins with a conductive material such as a tweezer or a wire. Uni v2 will have reset pads next to the pro micro so you can short these pads to reset the pro micro. +# Bootloader + +Enter the bootloader by: + +* **Physical reset button**: On the Uni v3, briefly press the button on the back of the PCB. +* **Reset Pads**: Uni v1 and v2 have pins/pads you must short instead (RST to GND). + +Make examples for this keyboard (after setting up your build environment): + + make the_uni/pro_micro:default + + make the_uni/usb_c: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/the_uni/rules.mk b/keyboards/the_uni/rules.mk deleted file mode 100644 index 1422818bbb7d..000000000000 --- a/keyboards/the_uni/rules.mk +++ /dev/null @@ -1,21 +0,0 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader -BOOTLOADER = atmel-dfu - - -# Build Options -# comment out to disable the options. -# -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration -CONSOLE_ENABLE = no # 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 -RGBLIGHT_ENABLE = no -FORCE_NKRO = yes -EXTRAKEY_ENABLE = no -MOUSEKEY_ENABLE = no # Mouse keys -STENO_ENABLE = yes diff --git a/keyboards/the_uni/the_uni.c b/keyboards/the_uni/the_uni.c deleted file mode 100644 index b99b06830c63..000000000000 --- a/keyboards/the_uni/the_uni.c +++ /dev/null @@ -1,18 +0,0 @@ -/* -Copyright 2021 Peter C. Park - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#include "the_uni.h" diff --git a/keyboards/the_uni/usb_c/config.h b/keyboards/the_uni/usb_c/config.h new file mode 100644 index 000000000000..3110c0d82181 --- /dev/null +++ b/keyboards/the_uni/usb_c/config.h @@ -0,0 +1,52 @@ +/* +Copyright 2021 Peter C. Park + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x9000 +#define PRODUCT_ID 0x0001 +#define DEVICE_VER 0x0002 +#define MANUFACTURER stenokeyboards +#define PRODUCT The Uni + +/* key matrix size */ +#define MATRIX_ROWS 3 +#define MATRIX_COLS 11 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { B7, D6, C7 } +#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, D5, D3, D2, D1, D0, D4 } +#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 + + +/*force the nkro if it does not work*/ +#define FORCE_NKRO diff --git a/keyboards/the_uni/usb_c/readme.md b/keyboards/the_uni/usb_c/readme.md new file mode 100644 index 000000000000..23895db39fb6 --- /dev/null +++ b/keyboards/the_uni/usb_c/readme.md @@ -0,0 +1,20 @@ +# The Uni v3 Firmware + +- Keyboard Maintainer: [Peter](https://github.com/petercpark) +- Link to Keyboard Files: Not Available +- Hardware Supported: + - The Uni v3 (usb_c) +- Hardware Availability: [https://www.stenokeyboards.com](https://www.stenokeyboards.com) + +## Bootloader + +Enter the bootloader by: + +* **Physical reset button**: On the Uni v3, briefly press the button on the back of the PCB. +* **Reset Pads**: Uni v1 and v2 have pins/pads you must short instead (RST to GND). + +Make examples for this keyboard (after setting up your build environment): + + make the_uni/usb_c: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/the_uni/usb_c/rules.mk b/keyboards/the_uni/usb_c/rules.mk new file mode 100644 index 000000000000..c2f000e885dc --- /dev/null +++ b/keyboards/the_uni/usb_c/rules.mk @@ -0,0 +1,20 @@ +# 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 = no # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 +STENO_ENABLE = yes diff --git a/keyboards/the_uni/usb_c/usb_c.c b/keyboards/the_uni/usb_c/usb_c.c new file mode 100644 index 000000000000..e690d0a886d3 --- /dev/null +++ b/keyboards/the_uni/usb_c/usb_c.c @@ -0,0 +1,18 @@ +/* +Copyright 2021 Peter C. Park + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "usb_c.h" diff --git a/keyboards/the_uni/usb_c/usb_c.h b/keyboards/the_uni/usb_c/usb_c.h new file mode 100644 index 000000000000..9371c3a241d6 --- /dev/null +++ b/keyboards/the_uni/usb_c/usb_c.h @@ -0,0 +1,30 @@ +/* +Copyright 2021 Peter C. Park + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, \ + K202, K203, K204, K205, K206, K207 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110 }, \ + { KC_NO, KC_NO, K202, K203, K204, K205, K206, K207, KC_NO, KC_NO, KC_NO } \ +} diff --git a/keyboards/thedogkeyboard/config.h b/keyboards/thedogkeyboard/config.h index 1447d2903298..099c157cffe1 100644 --- a/keyboards/thedogkeyboard/config.h +++ b/keyboards/thedogkeyboard/config.h @@ -118,59 +118,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -189,26 +136,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/thedogkeyboard/info.json b/keyboards/thedogkeyboard/info.json index 517aae221b7c..df6cc6ffdcc5 100644 --- a/keyboards/thedogkeyboard/info.json +++ b/keyboards/thedogkeyboard/info.json @@ -2,8 +2,6 @@ "keyboard_name": "TheDogKeyboard", "url": "https://kakunpc.booth.pm/", "maintainer": "kakunpc", - "width": 22.5, - "height": 6.5, "layouts": { "LAYOUT_all": { "layout": [{"label":"1", "x":0, "y":0}, {"label":"7", "x":2, "y":0}, {"label":"13", "x":3, "y":0}, {"label":"19", "x":4, "y":0}, {"label":"24", "x":5, "y":0}, {"label":"29", "x":6.5, "y":0}, {"label":"35", "x":7.5, "y":0}, {"label":"40", "x":8.5, "y":0}, {"label":"45", "x":9.5, "y":0}, {"label":"50", "x":11, "y":0}, {"label":"56", "x":12, "y":0}, {"label":"62", "x":13, "y":0}, {"label":"66", "x":14, "y":0}, {"label":"70", "x":15.25, "y":0}, {"label":"76", "x":16.25, "y":0}, {"label":"82", "x":17.25, "y":0}, {"label":"2", "x":0, "y":1.5}, {"label":"8", "x":1, "y":1.5}, {"label":"14", "x":2, "y":1.5}, {"label":"20", "x":3, "y":1.5}, {"label":"25", "x":4, "y":1.5}, {"label":"30", "x":5, "y":1.5}, {"label":"36", "x":6, "y":1.5}, {"label":"41", "x":7, "y":1.5}, {"label":"46", "x":8, "y":1.5}, {"label":"51", "x":9, "y":1.5}, {"label":"57", "x":10, "y":1.5}, {"label":"63", "x":11, "y":1.5}, {"label":"67", "x":12, "y":1.5}, {"label":"71", "x":13, "y":1.5, "w":2}, {"label":"77", "x":15.25, "y":1.5}, {"label":"84", "x":16.25, "y":1.5}, {"label":"83", "x":17.25, "y":1.5}, {"label":"88", "x":18.5, "y":1.5}, {"label":"93", "x":19.5, "y":1.5}, {"label":"97", "x":20.5, "y":1.5}, {"label":"102", "x":21.5, "y":1.5}, {"label":"3", "x":0, "y":2.5, "w":1.5}, {"label":"9", "x":1.5, "y":2.5}, {"label":"15", "x":2.5, "y":2.5}, {"label":"21", "x":3.5, "y":2.5}, {"label":"26", "x":4.5, "y":2.5}, {"label":"31", "x":5.5, "y":2.5}, {"label":"37", "x":6.5, "y":2.5}, {"label":"42", "x":7.5, "y":2.5}, {"label":"47", "x":8.5, "y":2.5}, {"label":"52", "x":9.5, "y":2.5}, {"label":"58", "x":10.5, "y":2.5}, {"label":"64", "x":11.5, "y":2.5}, {"label":"68", "x":12.5, "y":2.5}, {"label":"72", "x":13.5, "y":2.5, "w":1.5}, {"label":"78", "x":15.25, "y":2.5}, {"label":"86", "x":16.25, "y":2.5}, {"label":"85", "x":17.25, "y":2.5}, {"label":"89", "x":18.5, "y":2.5}, {"label":"94", "x":19.5, "y":2.5}, {"label":"98", "x":20.5, "y":2.5}, {"label":"103", "x":21.5, "y":2.5}, {"label":"4", "x":0, "y":3.5, "w":1.75}, {"label":"10", "x":1.75, "y":3.5}, {"label":"16", "x":2.75, "y":3.5}, {"label":"22", "x":3.75, "y":3.5}, {"label":"27", "x":4.75, "y":3.5}, {"label":"32", "x":5.75, "y":3.5}, {"label":"38", "x":6.75, "y":3.5}, {"label":"43", "x":7.75, "y":3.5}, {"label":"48", "x":8.75, "y":3.5}, {"label":"53", "x":9.75, "y":3.5}, {"label":"59", "x":10.75, "y":3.5}, {"label":"65", "x":11.75, "y":3.5}, {"label":"73", "x":12.75, "y":3.5, "w":2.25}, {"label":"90", "x":18.5, "y":3.5}, {"label":"95", "x":19.5, "y":3.5}, {"label":"99", "x":20.5, "y":3.5}, {"label":"110", "x":21.5, "y":3.5}, {"label":"5", "x":0, "y":4.5, "w":2.25}, {"label":"11", "x":2.25, "y":4.5}, {"label":"17", "x":3.25, "y":4.5}, {"label":"23", "x":4.25, "y":4.5}, {"label":"28", "x":5.25, "y":4.5}, {"label":"33", "x":6.25, "y":4.5}, {"label":"39", "x":7.25, "y":4.5}, {"label":"44", "x":8.25, "y":4.5}, {"label":"49", "x":9.25, "y":4.5}, {"label":"54", "x":10.25, "y":4.5}, {"label":"60", "x":11.25, "y":4.5}, {"label":"74", "x":12.25, "y":4.5, "w":2.75}, {"label":"87", "x":16.25, "y":4.5}, {"label":"91", "x":18.5, "y":4.5}, {"label":"96", "x":19.5, "y":4.5}, {"label":"100", "x":20.5, "y":4.5}, {"label":"104", "x":21.5, "y":4.5}, {"label":"6", "x":0, "y":5.5, "w":1.25}, {"label":"12", "x":1.25, "y":5.5, "w":1.25}, {"label":"18", "x":2.5, "y":5.5, "w":1.25}, {"label":"105", "x":3.75, "y":5.5, "w":1.25}, {"label":"106", "x":5, "y":5.5, "w":1.25}, {"label":"34", "x":6.25, "y":5.5, "w":1.25}, {"label":"107", "x":7.5, "y":5.5, "w":1.25}, {"label":"108", "x":8.75, "y":5.5, "w":1.25}, {"label":"55", "x":10, "y":5.5, "w":1.25}, {"label":"61", "x":11.25, "y":5.5, "w":1.25}, {"label":"69", "x":12.5, "y":5.5, "w":1.25}, {"label":"75", "x":13.75, "y":5.5, "w":1.25}, {"label":"79", "x":15.25, "y":5.5}, {"label":"80", "x":16.25, "y":5.5}, {"label":"81", "x":17.25, "y":5.5}, {"label":"92", "x":18.5, "y":5.5}, {"label":"109", "x":19.5, "y":5.5}, {"label":"101", "x":20.5, "y":5.5}, {"label":"111", "x":21.5, "y":5.5}] diff --git a/keyboards/thedogkeyboard/rules.mk b/keyboards/thedogkeyboard/rules.mk index 1f8491e8d22d..8670ce72ae6a 100644 --- a/keyboards/thedogkeyboard/rules.mk +++ b/keyboards/thedogkeyboard/rules.mk @@ -2,32 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output CUSTOM_MATRIX = yes SRC += matrix.c diff --git a/keyboards/themadnoodle/ncc1701kb/v2/info.json b/keyboards/themadnoodle/ncc1701kb/v2/info.json index b0b82d532aec..ee62dbafc9dc 100644 --- a/keyboards/themadnoodle/ncc1701kb/v2/info.json +++ b/keyboards/themadnoodle/ncc1701kb/v2/info.json @@ -2,8 +2,6 @@ "keyboard_name": "NCC-1701-KB v2", "url": "instagram.com/the_mad_noodle", "maintainer": "The-Mad-Noodle", - "width": 3, - "height": 3, "layouts": { "LAYOUT_ortho_3x3": { "layout": [ diff --git a/keyboards/themadnoodle/ncc1701kb/v2/rules.mk b/keyboards/themadnoodle/ncc1701kb/v2/rules.mk index 960f1d7a6461..b153fa3f9e3d 100644 --- a/keyboards/themadnoodle/ncc1701kb/v2/rules.mk +++ b/keyboards/themadnoodle/ncc1701kb/v2/rules.mk @@ -2,33 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# 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 -MIDI_ENABLE = no # MIDI controls -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output UNICODE_ENABLE = yes # Unicode -API_SYSEX_ENABLE = yes -TAP_DANCE_ENABLE = no ENCODER_ENABLE = yes diff --git a/keyboards/themadnoodle/noodlepad/info.json b/keyboards/themadnoodle/noodlepad/info.json index 9e75cb6354d0..5ffcc68677b7 100644 --- a/keyboards/themadnoodle/noodlepad/info.json +++ b/keyboards/themadnoodle/noodlepad/info.json @@ -2,8 +2,6 @@ "keyboard_name": "NoodlePad", "url": "instagram.com/the_mad_noodle", "maintainer": "The-Mad-Noodle", - "width": 3, - "height": 3, "layouts": { "LAYOUT_ortho_3x3": { "layout": [ diff --git a/keyboards/themadnoodle/noodlepad/rules.mk b/keyboards/themadnoodle/noodlepad/rules.mk index 960f1d7a6461..b153fa3f9e3d 100644 --- a/keyboards/themadnoodle/noodlepad/rules.mk +++ b/keyboards/themadnoodle/noodlepad/rules.mk @@ -2,33 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# 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 -MIDI_ENABLE = no # MIDI controls -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output UNICODE_ENABLE = yes # Unicode -API_SYSEX_ENABLE = yes -TAP_DANCE_ENABLE = no ENCODER_ENABLE = yes diff --git a/keyboards/thevankeyboards/bananasplit/info.json b/keyboards/thevankeyboards/bananasplit/info.json index 6741c6cdb0ce..44ebb41b27ea 100644 --- a/keyboards/thevankeyboards/bananasplit/info.json +++ b/keyboards/thevankeyboards/bananasplit/info.json @@ -2,8 +2,6 @@ "keyboard_name": "bananasplit", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_base": { "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}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"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":2.75}, {"x":6.5, "y":4, "w":1.25}, {"x":7.75, "y":4, "w":2.25}, {"label":"Alt", "x":10, "y":4}, {"x":11, "y":4}, {"label":"Win", "x":12, "y":4}, {"label":"Menu", "x":13, "y":4}, {"label":"Ctrl", "x":14, "y":4}] @@ -29,4 +27,4 @@ "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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"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":2.75}, {"x":6.5, "y":4, "w":1.25}, {"x":7.75, "y":4, "w":2.25}, {"label":"Alt", "x":10, "y":4}, {"x":11, "y":4}, {"label":"Win", "x":12, "y":4}, {"label":"Menu", "x":13, "y":4}, {"label":"Ctrl", "x":14, "y":4}] } } -} \ No newline at end of file +} diff --git a/keyboards/thevankeyboards/bananasplit/keymaps/0010/rules.mk b/keyboards/thevankeyboards/bananasplit/keymaps/0010/rules.mk index 9da4bf91a571..d924278d3f96 100644 --- a/keyboards/thevankeyboards/bananasplit/keymaps/0010/rules.mk +++ b/keyboards/thevankeyboards/bananasplit/keymaps/0010/rules.mk @@ -18,7 +18,6 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -# BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) # MOUSEKEY_ENABLE = yes # Mouse keys(+4700) # EXTRAKEY_ENABLE = yes # Audio control and System control(+450) # CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/thevankeyboards/bananasplit/keymaps/coloneljesus/rules.mk b/keyboards/thevankeyboards/bananasplit/keymaps/coloneljesus/rules.mk index 9da4bf91a571..d924278d3f96 100644 --- a/keyboards/thevankeyboards/bananasplit/keymaps/coloneljesus/rules.mk +++ b/keyboards/thevankeyboards/bananasplit/keymaps/coloneljesus/rules.mk @@ -18,7 +18,6 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -# BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) # MOUSEKEY_ENABLE = yes # Mouse keys(+4700) # EXTRAKEY_ENABLE = yes # Audio control and System control(+450) # CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/thevankeyboards/bananasplit/keymaps/kamon/rules.mk b/keyboards/thevankeyboards/bananasplit/keymaps/kamon/rules.mk index 9da4bf91a571..d924278d3f96 100644 --- a/keyboards/thevankeyboards/bananasplit/keymaps/kamon/rules.mk +++ b/keyboards/thevankeyboards/bananasplit/keymaps/kamon/rules.mk @@ -18,7 +18,6 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -# BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) # MOUSEKEY_ENABLE = yes # Mouse keys(+4700) # EXTRAKEY_ENABLE = yes # Audio control and System control(+450) # CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/thevankeyboards/bananasplit/rules.mk b/keyboards/thevankeyboards/bananasplit/rules.mk index 9d62db53f983..095eec2fa004 100644 --- a/keyboards/thevankeyboards/bananasplit/rules.mk +++ b/keyboards/thevankeyboards/bananasplit/rules.mk @@ -2,19 +2,12 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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/thevankeyboards/caravan/info.json b/keyboards/thevankeyboards/caravan/info.json index 51b016d807ca..3b3ac4865d43 100644 --- a/keyboards/thevankeyboards/caravan/info.json +++ b/keyboards/thevankeyboards/caravan/info.json @@ -2,8 +2,6 @@ "keyboard_name": "TheVanKeyboards Caravan", "url": "", "maintainer": "qmk", - "width": 13.75, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/thevankeyboards/caravan/rules.mk b/keyboards/thevankeyboards/caravan/rules.mk index 4bdaec4db873..0741a01a9863 100644 --- a/keyboards/thevankeyboards/caravan/rules.mk +++ b/keyboards/thevankeyboards/caravan/rules.mk @@ -2,26 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = yes # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/thevankeyboards/jetvan/rules.mk b/keyboards/thevankeyboards/jetvan/rules.mk index 61f1127e1ec1..22e9a1a41375 100644 --- a/keyboards/thevankeyboards/jetvan/rules.mk +++ b/keyboards/thevankeyboards/jetvan/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # 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 diff --git a/keyboards/thevankeyboards/minivan/info.json b/keyboards/thevankeyboards/minivan/info.json index 355701feec69..3ed0e4472ddb 100644 --- a/keyboards/thevankeyboards/minivan/info.json +++ b/keyboards/thevankeyboards/minivan/info.json @@ -2,8 +2,6 @@ "keyboard_name": "tv44", "url": "", "maintainer": "qmk", - "width": 12.75, - "height": 4, "layouts": { "LAYOUT": { "layout": [{"label":"Tab", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"|", "x":11, "y":0, "w":1.75}, {"label":"Caps Lock", "x":0, "y":1, "w":1.25}, {"label":"A", "x":1.25, "y":1}, {"label":"S", "x":2.25, "y":1}, {"label":"D", "x":3.25, "y":1}, {"label":"F", "x":4.25, "y":1}, {"label":"G", "x":5.25, "y":1}, {"label":"H", "x":6.25, "y":1}, {"label":"J", "x":7.25, "y":1}, {"label":"K", "x":8.25, "y":1}, {"label":"L", "x":9.25, "y":1}, {"label":":", "x":10.25, "y":1}, {"label":"\"", "x":11.25, "y":1, "w":1.5}, {"label":"Shift", "x":0, "y":2, "w":1.75}, {"label":"Z", "x":1.75, "y":2}, {"label":"X", "x":2.75, "y":2}, {"label":"C", "x":3.75, "y":2}, {"label":"V", "x":4.75, "y":2}, {"label":"B", "x":5.75, "y":2}, {"label":"N", "x":6.75, "y":2}, {"label":"M", "x":7.75, "y":2}, {"label":"<", "x":8.75, "y":2}, {"label":">", "x":9.75, "y":2}, {"label":"?", "x":10.75, "y":2}, {"x":11.75, "y":2}, {"label":"Ctrl", "x":0, "y":3, "w":1.25}, {"label":"Win", "x":1.25, "y":3, "w":1.5}, {"label":"Alt", "x":2.75, "y":3, "w":1.25}, {"x":4, "y":3, "w":2.25}, {"x":6.25, "y":3, "w":2}, {"label":"Alt", "x":8.25, "y":3, "w":1.25}, {"label":"Win", "x":9.5, "y":3, "w":1.5}, {"label":"Menu", "x":11, "y":3, "w":1.75}] diff --git a/keyboards/thevankeyboards/minivan/keymaps/belak/rules.mk b/keyboards/thevankeyboards/minivan/keymaps/belak/rules.mk index f9d8b0eb0995..8f7132775912 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/belak/rules.mk +++ b/keyboards/thevankeyboards/minivan/keymaps/belak/rules.mk @@ -1,4 +1,3 @@ -#BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) MOUSEKEY_ENABLE = no # Mouse keys(+4700) #EXTRAKEY_ENABLE = yes # Audio control and System control(+450) #CONSOLE_ENABLE = yes # Console for debug(+400) diff --git a/keyboards/thevankeyboards/minivan/keymaps/danbee/rules.mk b/keyboards/thevankeyboards/minivan/keymaps/danbee/rules.mk index b1434f75c84b..0a5b666e8557 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/danbee/rules.mk +++ b/keyboards/thevankeyboards/minivan/keymaps/danbee/rules.mk @@ -1,2 +1 @@ MOUSEKEY_ENABLE = no -KEYBOARD_LOCK_ENABLE = yes diff --git a/keyboards/thevankeyboards/minivan/keymaps/jeebak/rules.mk b/keyboards/thevankeyboards/minivan/keymaps/jeebak/rules.mk index 7a331cd530cf..93e7cd8bb74f 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/jeebak/rules.mk +++ b/keyboards/thevankeyboards/minivan/keymaps/jeebak/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/thevankeyboards/minivan/keymaps/jetpacktuxedo/keymap.c b/keyboards/thevankeyboards/minivan/keymaps/jetpacktuxedo/keymap.c index f9bb64e05f29..0c1ea9dd0993 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/jetpacktuxedo/keymap.c +++ b/keyboards/thevankeyboards/minivan/keymaps/jetpacktuxedo/keymap.c @@ -56,7 +56,7 @@ void keyboard_post_init_user(void) { #endif //RGBLIGHT_ENABLE } -uint32_t layer_state_set_user(uint32_t state){ +layer_state_t layer_state_set_user(layer_state_t state){ #ifdef RGBLIGHT_ENABLE uint8_t led0r = 0; uint8_t led0g = 0; uint8_t led0b = 0; uint8_t led1r = 0; uint8_t led1g = 0; uint8_t led1b = 0; diff --git a/keyboards/thevankeyboards/minivan/keymaps/jetpacktuxedo/rules.mk b/keyboards/thevankeyboards/minivan/keymaps/jetpacktuxedo/rules.mk index 4a27701076f1..04cff0238a3a 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/jetpacktuxedo/rules.mk +++ b/keyboards/thevankeyboards/minivan/keymaps/jetpacktuxedo/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_hebrew.c b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_hebrew.c new file mode 100644 index 000000000000..cac77aac601b --- /dev/null +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_hebrew.c @@ -0,0 +1,291 @@ +/* + * License (GPL): + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + + * Author: © 2021 by Jos Boersema + * + */ + +// --------------------------------------v--------------------------------------- +// Configuration: +// --------------------------------------v--------------------------------------- + +// See the user configuration file: ./base_hebrew.h + +// --------------------------------------^--------------------------------------- +// Below here no more comfortable configuration options..... +// --------------------------------------^--------------------------------------- + + /* ⬇ */ + + /* Layer _..._BASE: default BASE layer (Hebrew) + * + * - Dual use keys create a delay in the key (tap/hold keys), therefore + * space is not dual use (most used key), neither is hyphen. + */ + +// Process user configuration wrt ‛Default’ or ‛Alternative’ spot for this layout. +# if defined(BASE_HEBREW__DEF_BASE) + [ _DEF_BASE ] = LAYOUT_redefined ( +# elif defined(BASE_HEBREW__ALT_BASE) + [ _ALT_BASE ] = LAYOUT_redefined ( +# endif + +/* + Layer _..._BASE (LeTteRs, standard Hebrew as in Israel) + ➡ This is a simple hebrew layout. Notice the letter ק is displaced from normal, + to retain compatibility with Dvorak-English for ,<.>. There are no niqqud + available, because it is far too many unique symbols in Unicode, and it is + rarely used. + + HEBREW_ISRAEL + | Right hand + index>middl>ring> pinky>pinky2> // Keys by finger + -o- <|> ... //-o- BASE access + Esc /; ׳ ק ר א | ט ו ן ם פ Bksp + Tab+LCtl ש ד ג/RLM כ₪ ע | י ח ל/LRM ך ף: ,״ //Right-Left-Mark + LSht+_PAD ז ס ב ה נ | מ צ ת< ץ> .? RSht+_FUN //<>os side flip? + +_MOV⁵ | +_RAR⁶ + --------------------------------------------------------------------------------------- + Left+LAlt Del;_ACC _..._NSY(_DRA) Enter+_MOV| Space _..._NSY(_DRA) LGUI Right;_RAR + hold hold₍₁,₂٭₎ hold | hold₍₁,₂٭₎ hold // switch type + hold₍₂₎ ^-┃-----------------------+--------^ ┃ // ₁₎ both = _DRA + ┗━━━_BON━━━╋┅───────────┄┄┄«or»┄┄┄─+─────────┅┛ // ₂₎ both = _BON + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> // Keys by number + ^³ ^⁴ // Optional more keys + … … + + HEBREW_QWERTY + | Right hand + index>middl>ring> pinky>pinky2> // Keys by finger + -o- <|> ... //-o- BASE access + Esc ת• ץ• ק ר א | ט ו ן ם׳ פ״ Bksp + Tab+LCtl ש ד ג/RLM כ₪ ע | י ח ל/LRM ך ף: '" //Right-Left-Mark + LSht+_PAD ז ס ב ה נ | מ צ ,< .> /? RSht+_FUN + +_MOV⁵ | +_RAR⁶ + --------------------------------------------------------------------------------------- + Left+LAlt Del;_ACC _..._NSY(_DRA) Enter+_MOV| Space _..._NSY(_DRA) LGUI Right;_RAR + hold hold₍₁,₂٭₎ hold | hold₍₁,₂٭₎ hold // switch type + hold₍₂₎ ^-┃-----------------------+--------^ ┃ // ₁₎ both = _DRA + ┗━━━_BON━━━╋┅───────────┄┄┄«or»┄┄┄─+─────────┅┛ // ₂₎ both = _BON + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> // Keys by number + ^³ ^⁴ // Optional more keys + … … + + HEBREW_DVORAK + | Right hand + index>middl>ring> pinky>pinky2> // Keys by finger + -o- <|> ... //-o- BASE access + Esc '" ,< .> ר א | ט ו ן ם׳ פ״ Bksp + Tab+LCtl ש ד ג/RLM כ₪ ע | י ח ל/LRM ך ף ־ //Right-Left-Mark + LSht+_PAD ז: ס ב ה נ | מ צ ת ץ ק• RSht+_FUN + +_MOV⁵ | +_RAR⁶ + --------------------------------------------------------------------------------------- + Left+LAlt Del;_ACC _..._NSY(_DRA) Enter+_MOV| Space _..._NSY(_DRA) LGUI Right;_RAR + hold hold₍₁,₂٭₎ hold | hold₍₁,₂٭₎ hold // switch type + hold₍₂₎ ^-┃-----------------------+--------^ ┃ // ₁₎ both = _DRA + ┗━━━_BON━━━╋┅───────────┄┄┄«or»┄┄┄─+─────────┅┛ // ₂₎ both = _BON + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> // Keys by number + ^³ ^⁴ // Optional more keys + … … + + + ₁) Dual hold for _DRA, single hold for _..._NSY. Marked by: ^--…--^ + ₂) Hold key “<2” with either٭ key “<3” or “3>” for _BON, single hold “<2” for _ACC. Marked: ┗━━…━━┛ + ³) 'South paw' hardware configuration + ⁴) 'Arrow' hardware configuration + ³ ⁴) There are two more optional hardware keys, to make it easier to compile for + a 12x12x12x11 or 12x12x12x12 layouts. + ⁵) Left Shift when pressed with another key. Medium long: to toggle _PAD. Long: toggle _MOV. + ⁶) Right shift when pressed with another key. medium long: to toggle _FUN. Long: toggle _RAR. + ⁷) Letters marked with • are displaced from standard hebrew layout. +*/ +// +// , inde> , midd> , ring> , pink> , pink2> , +// -*!- , , , , , <|,> , , , , , , + KC_ESC + +# if defined(HEBREW_ISRAEL) + , XP_HEB_AA , XP_HEB_AB , XP_HEB_AC +# elif defined(HEBREW_QWERTY) + , XP_HEB_AA , XP_HEB_AB , XP_HEB_AC +# elif defined(HEBREW_DVORAK) + , KC_QUOT , KC_COMM , KC_DOT +# endif // HEBREW_DVORAK/QWERTY + , XP_HEB_AD , XP_HEB_AE , XP_HEB_AF , XP_HEB_AG , XP_HEB_AH , XP_HEB_AI , XP_HEB_AJ , KC_BSPC , + LCTL_T ( KC_TAB ) , XP_HEB_BA , XP_HEB_BB , XP_HEB_BC , XP_HEB_BD , XP_HEB_BE , XP_HEB_BF , XP_HEB_BG , XP_HEB_BH , XP_HEB_BI , XP_HEB_BJ +// ^^^^^^^^^ Different in Qwerty (done in macros) with ':' + +# if defined(HEBREW_ISRAEL) + , XP_HEB_BK , // ," +# elif defined(HEBREW_QWERTY) + , KC_QUOT , // '" +# elif defined(HEBREW_DVORAK) + , XP_HEB_MQF , // ־ +# endif // HEBREW_* + + CHOLTAP_LSHFT , XP_HEB_CA , XP_HEB_CB , XP_HEB_CC , XP_HEB_CD , XP_HEB_CE , XP_HEB_CF , XP_HEB_CG + +# if defined(HEBREW_ISRAEL) + , XP_HEB_CH , XP_HEB_CI , XP_HEB_CJ +# elif defined(HEBREW_QWERTY) + , KC_COMM , KC_DOT , KC_SLSH +# elif defined(HEBREW_DVORAK) + , XP_HEB_CH , XP_HEB_CI , XP_HEB_CJ +# endif // HEBREW_* + , CHOLTAP_RSHFT , +// ----------------------------------------------------------------------------------------------------------------- + LALT_T ( KC_LEFT ) + +# ifdef TRANSMINIVAN_LEFTSIDE + , MO ( _PAD ) +# endif + +# ifdef MORE_KEY__COMMAND + , MORE_key1_BASE +# endif + +# ifdef SWITCH_HOLD_ACC_NSY + , DUO_HOLD , CHOLTAP_ACCE +# else + , CHOLTAP_ACCE , DUO_HOLD +# endif + + , LEFTCENTER_THUMB + +# ifdef TRANSMINIVAN_MIDLEFT + , TRANS_MIDLEFT +# endif + + , RIGHTCENTER_THUMB , DUO_HOLD , KC__YGUI + +# ifdef TRANSMINIVAN_RIGHTSIDE + , MO ( _FUN ) +# endif + +# ifdef MORE_KEY__ARROW + , MORE_key2 +# endif + + , CHOLTAP_LAYR +// , , , <|,> , , , +// <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1> + + ), + + /* ⬆⬇ */ + + /* Layer _..._NSY: Numbers and symbols. + * Off hand Number input (-.Bksp ent (shft)tab). + */ + // KC_TILD does not work there, because of a limitation with shifted keys (nov 2019). + +// Process user configuration wrt ‛Default’ or ‛Alternative’ spot for this layout. +# if defined(BASE_HEBREW__DEF_BASE) + [ _DEF_NSY ] = LAYOUT_redefined ( +# elif defined(BASE_HEBREW__ALT_BASE) + [ _ALT_NSY ] = LAYOUT_redefined ( +# endif + +/* + Layer _..._NSY (Numbers and SYmbols) + ➡ The brace type symbols are *not* reversed as on standard hebrew boards (I find it confusing). + + HEBREW_ISRAEL & HEBREW_QWERTY + index>middl>ring>pin>pink2> + -*- <|> //(toggle) Access on _FUN + BASE ! @ # $ % | ^ & * ( ) Del + Tab+LCtl 1! 2@ 3# 4$ 5% | 6^ 7& 8* 9( 0) `~+RCtl + -+LSht [{ ]} -_ \| =+ | + | ־ { } ~+RSht + ^ // Only difference with Qwerty + --------------------------------------------------------------------------- + Left+LAlt ___ ___ Ent | . ___ LGUI Right+RAlt + -*- <|> -*- //(hold) Access on _..._BASE + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> + … … + + HEBREW_DVORAK (Same as standard Dvorak) + index>middl>ring>pin>pink2> + -*- <|> //(toggle) Access on _FUN + BASE ! @ # $ % | ^ & * ( ) Del + Tab+LCtl 1! 2@ 3# 4$ 5% | 6^ 7& 8* 9( 0) `~+RCtl + -+LSht [{ ]} /? \| =+ | + | ? { } ~+RSht + --------------------------------------------------------------------------- + Left+LAlt ___ ___ Ent | . ___ LGUI Right+RAlt + -*- <|> -*- //(hold) Access on _..._BASE + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> + … … +*/ +// +// +// , index> , middl> , ring> , pinky> , pink2> , +// , -*- , , , , <|,> , , , , , , + CTO_BASE , KC_EXLM , KC_AT , KC_HASH , KC_DLR , KC_PERC , KC_CIRC , KC_AMPR , KC_ASTR , KC_LPRN , KC_RPRN , KC_DEL , + LCTL_T ( KC_TAB ) , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , RCTL_T ( KC_GRV ) , + LSFT_DASH , KC_LBRC , KC_RBRC + +# if defined(HEBREW_ISRAEL) + , KC_MINUS // allows -_, with Maqaf on mirror place right +# elif defined(HEBREW_QWERTY) + , KC_MINUS // same as HEBREW_ISRAEL +# elif defined(HEBREW_DVORAK) + , KC_SLSH +# endif // HEBREW_* + + , KC_BSLS , KC_EQL , KC_PLUS , KC_PIPE + + +# if defined(HEBREW_ISRAEL) + , XP_HEB_MQF // '־' Maqaf +# elif defined(HEBREW_QWERTY) + , XP_HEB_MQF // +# elif defined(HEBREW_DVORAK) + , KC_QUES +# endif // HEBREW_* + , KC_LCBR , KC_RCBR , RSFT_TILDE , +// --------------------------------------------------------------------------------------------------------------------------------------------- + LALT_T ( KC_LEFT ) + +# ifdef TRANSMINIVAN_LEFTSIDE + , TRANS_LEFT +# endif + +# ifdef MORE_KEY__COMMAND + , MORE_key1 +# endif + + , _______ , _______ , KC_ENT + +# ifdef TRANSMINIVAN_MIDLEFT + , TRANS_MIDLEFT +# endif + , KC_DOT , DUO_HOLD , KC__YGUI + +# ifdef TRANSMINIVAN_RIGHTSIDE + , TRANS_RIGHT +# endif + +# ifdef MORE_KEY__ARROW + , MORE_key2 +# endif + + , RALT_T ( KC_RIGHT ) +// , , -*- , <|,> , -*- , , +// <1 ± ± , <2 , <3 , <4 |, 4> , 3> , 2> , ± ± 1> + + ), + + + /* ⬆⬇ */ diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_hebrew.h b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_hebrew.h new file mode 100644 index 000000000000..f5604b8f1ea6 --- /dev/null +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_hebrew.h @@ -0,0 +1,52 @@ +/* + * License (GPL): + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + + * Author: © 2021 by Jos Boersema + * + */ + +#pragma once + +// --------------------------------------v--------------------------------------- +// Configuration: +// --------------------------------------v--------------------------------------- + + /* Harmonize layout with a Latin layout + * + * See base_hebrew.md for design objectives. + */ + #define HEBREW_ISRAEL // Close to standard Israeli hebrew. +//#define HEBREW_QWERTY // Harmonize punctuation symbols with Qwerty. +//#define HEBREW_DVORAK // Harmonize punctuation symbols with Dvorak. + +// --------------------------------------^--------------------------------------- +// Below here no more comfortable configuration options..... +// --------------------------------------^--------------------------------------- + + /* Redefine a layer in this file + * + * _Activate_ one or more of the below BASESFILE_LAYER_..., to redefine the layer + * in this file. The version in ./keymap.c will be ignored. Keep in mind to use + * transparent keys (_______) for “hold” layer switch keys on the BASE map, for + * your new layer. + */ +// #define BASESFILE_LAYER_ACC +// #define BASESFILE_LAYER_DRA +// #define BASESFILE_LAYER_BON +// #define BASESFILE_LAYER_PAD +// #define BASESFILE_LAYER_MOV +// #define BASESFILE_LAYER_RAR +// #define BASESFILE_LAYER_FUN diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_hebrew.md b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_hebrew.md new file mode 100644 index 000000000000..0e7adc40c8fc --- /dev/null +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_hebrew.md @@ -0,0 +1,198 @@ +# Minifan layout + +Compiled for: Hebrew +==================== + +This file details the compile version `#define BASE_HEBREW__DEF_BASE, +BASE_HEBREW__ALT_BASE`. This is a basic Hebrew layout, without niqqud. + +Only the most common symbols are implemented. Hebrew symbols are all +done in Unicode. + +See also ![./readme.md](./readme.md) chapter 7 _Language support_. + +Parenthesis/braces/etc direction seems to be dealt with at the computer +side, depending on the surrounding symbols. The keyboard is printing +these symbols unchanged from what they are in standard Latin layouts, +and are represented that way in the manual. + +Options +======= + +You can compile the hebrew to be like a common Israeli layout, or to harmonize the +punctuation symbols with either Dvorak or Qwerty. See the configuration file +![./base_hebrew.h](./base_hebrew.h) + +☞ Israeli Hebrew + +As close to a simple standard hebrew layout as possible. +A little larger memory cost than the other options. No `'"` ASCII quotes symbols, +but proper ׳ and ״ (in Unicode). + +☞ Qwerty with Hebrew + +The letters ת, ץ get displaced from the standard hebrew layout. +Numerical layer is the same as standard Qwerty, except the symbol +`_` symbol becomes `־` (Maqaf). No `;` symbol. + +☞ Qwerty derivatives with Hebrew + +It is adviced to use Qwerty with Hebrew in this case, and adjust by hand +coding if needed. “Workman” should harmonize the same as Qwerty. +Colemak displaces the “;:” key relative to Qwerty, therefore you may +like to change the “:” shifted symbol (by hand). The obscurity of this +use case gets extreme, there will not be options for this. + +☞ Dvorak with Hebrew + +The letter ק gets displaced from the standard hebrew layout. +Numerical layer is the same as standard Dvorak. No `;` symbol. + + +Flash memory cost +----------------- + +This layout adds several dozen new Unicode symbols, which takes up a certain +amount of additional space in keyboard memory. If you end up going over +the limit, you may need to change your compilation software setup, and/or +you can look into the “Eviscerations” chapters in ![./user_config.h](./user_config.h) + +Hebrew keymaps +-------------- + +──────────Hebrew Israel──────── + +![Minivan layout Image BASEdef-alt](http://socialism.nl/misc/minivan/minivan_base_layer_hebrew-israel_ve.jpg) +Layer: `..._BASE` + +![Minivan layout Image NSYdef-alt](http://socialism.nl/misc/minivan/minivan_nsy_layer_hebrew-israel_vd.jpg) +Layer: `..._NSY` + +──────────in common──────────── + +(…) + +──────────Hebrew Qwerty──────── + +![Minivan layout Image BASEdef-alt](http://socialism.nl/misc/minivan/minivan_base_layer_hebrew-qwerty_ve.jpg) +Layer: `..._BASE` + +![Minivan layout Image NSYdef-alt](http://socialism.nl/misc/minivan/minivan_nsy_layer_hebrew-israel_vd.jpg) +Layer: `..._NSY` + +──────────in common──────────── + +(…) + +──────────Hebrew Dvorak──────── + +![Minivan layout Image BASEdef-alt](http://socialism.nl/misc/minivan/minivan_base_layer_hebrew-dvorak_ve.jpg) +Layer: `..._BASE` + +![Minivan layout Image NSYdef-alt](http://socialism.nl/misc/minivan/minivan_nsy_layer_dvorak_vc.jpg) +Layer: `..._NSY` (Same as Dvorak.) + +──────────in common──────────── + +(…) + +For more about the other layers, see ➡ ![readme.md](./readme.md) ⬅ + +![Minivan illustration Overview layers by key, Hebrew](http://socialism.nl/misc/minivan/minivan-all-layers-clear-visualization-by-key_hebrew_2000_vk.jpg) + +Layers (text) +============= + +(The “x” padding was necessary to undo the direction of these characters being reversed. +This layout might still not be represenetd correctly on your system. See the graphics instead.) + + HEBREW_ISRAEL + | Right hand + index>middl>ring> pinky>pinky2> // Keys by finger + -o- <|> ... //-o- BASE access + Escxxxxxxxx/;xxxx׳xxxxxקxxxxxרxxxxxאxxxxx|xטxxxxxוxxxxxןxxxxxםxxxxxפxxxxxxxxxxBksp + Tab+LCtlxxxשxxxxxדxxxxxג/RLMxכx₪xxxעxxxxx|xיxxxxxחxxxxxל/LRMxךxxxxxף:xxxxxxxxxxx,״ //Right-Left-Mark + LSht+_PADxxזxxxxxסxxxxxבxxxxxהxxxxxנxxxxx|xמxxxxxצxxxxxתxxxx.?xxxxRSht+_FUN //<>os side flip? + +_MOV⁵ | +_RAR⁶ + --------------------------------------------------------------------------------------- + + HEBREW_QWERTY + | Right hand + index>middl>ring> pinky>pinky2> // Keys by finger + -o- <|> ... //-o- BASE access + Escxxxxxxxxת•xxxxץ•xxxxקxxxxxרxxxxxאxxxxx|xטxxxxxוxxxxxןxxxxxםx׳xxxפx״xxxxxxxxBksp + Tab+LCtlxxxשxxxxxדxxxxxג/RLMxכx₪xxxעxxxxx|xיxxxxxחxxxxxל/LRMxךxxxxxף:xxxxxxxxxxx'" //Right-Left-Mark + LSht+_PADxxזxxxxxסxxxxxבxxxxxהxxxxxנxxxxx|xמxxxxxצxxxxx,xxxx/?xxxxRSht+_FUN + +_MOV⁵ | +_RAR⁶ + --------------------------------------------------------------------------------------- + (…) + + HEBREW_DVORAK + Layer _..._BASE (LeTteRs, standard Hebrew) + | Right hand + index>middl>ring> pinky>pinky2> // Keys by finger + -o- <|> ... //-o- BASE access + Escxxxxxxxx'"xxxx,xxxxרxxxxxאxxxxx|xטxxxxxוxxxxxןxxxxxםx׳xxxפx״xxxxxxxxBksp + Tab+LCtlxxxשxxxxxדxxxxxג/RLMxכx₪xxxעxxxxx|xיxxxxxחxxxxxל/LRMxךxxxxxףxxxxxxxxxxxxx־ //Right/Left-Mark + LSht+_PADxxז:xxxxסxxxxxבxxxxxהxxxxxנxxxxx|xמxxxxxצxxxxxתxxxxxץxxxxxק•xxxxRSht+_FUN + +_MOV⁵ | +_RAR⁶ + --------------------------------------------------------------------------------------- + Left+LAlt Del;_ACC _DEF_NSY(_DRA) Enter+_MOV| Space _DEF_NSY(_DRA) RGUI Right;_RAR + hold hold₍₁,₂٭₎ hold | hold₍₁,₂٭₎ hold // switch type + hold₍₂₎ ^-┃-----------------------+--------^ ┃ // ₁₎ both = _DRA + ┗━━━_BON━━━╋┅───────────┄┄┄«or»┄┄┄─+─────────┅┛ // ₂₎ both = _BON + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> // Keys by number + ^³ ^⁴ // Optional more keys + (LGUI) (_MOV) + + + ₁) Dual hold for _DRA, single hold for _DEF_NSY. Marked by: ^--…--^ + ₂) Hold key “<2” with either٭ key “<3” or “3>” for _BON, single hold “<2” for _ACC. Marked: ┗━━…━━┛ + ₃) 'South paw' hardware configuration. Configurable, default shown. + ₄) 'Arrow' hardware configuration Configurable, default shown. + ₃ ₄) There are two more optional hardware keys, to make it easier to compile for + a 12x12x12x11 or 12x12x12x12 layouts. + ₅) Left Shift when pressed with another key. Medium long: to toggle _PAD. Long: toggle _MOV. + ₆) Right shift when pressed with another key. medium long: to toggle _FUN. Long: toggle _RAR. + ⁷) Letters marked with • are displaced from standard hebrew layout. + +Remarks: The left modifiers have a slight delay in combination with an outside pointer device (mouse, stylus). +It seems this will be difficult to fix, because it is spread over two devices. To avoid the +±0.2 second delay, activate a layer where the modifiers are direct (`_PAD`), using the layer toggle on left shift. + +The two keys with ';' (Del;`_ACC`, Right;`_RAR`) do not auto-repeat on double tap, like QMK normal layer-tap keys. +There is an uncluttered _Delete_ on `_PAD`, an uncluttered _Right_ arrow on the `_MOV` layer. + +Holding both `_DEF_NSY` keys left and right of the "split space bar" (enter, space) results in layer `_DRA`. + +Holding either one of the just above mentioned `_DEF_NSY` layer keys (<3 and 3>), with the `_ACC` layer key +(on <2) results in layer `_BON`. + +- - - + + Layer _..._NSY (Numbers and SYmbols) + + HEBREW_ISRAEL & HEBREW_QWERTY (_ becomes ־ Maqaf) + index>middl>ring>pin>pink2> + -*- <|> //(toggle) Access on _FUN + BASExxxxx!xxxxx@xxxxx#xxxxx$xxxxx%xxxxx|x^xxxxx&xxxxx*xxxxx(xxxx)xxxxxxxDel + Tab+LCtlx1!xxxx2@xxxx3#xxxx4$xxxx5%xxxx|x6^xxxx7&xxxx8*xxxx9(xxx0)xx`~+RCtl + -+LShtxxx[{xxxx]}xxxx-_xxxx\|xxxx=+xxxx|x+xxxxx|xxxxx־xxxxx{xxxxx}xxx~+RSht + ^ // Only difference with Qwerty + --------------------------------------------------------------------------- + Left+LAlt ___ ___ Ent | . ___ RGUI Right+RAlt + -*- <|> -*- //(hold) Access on _DEF_BASE + <1 ± <2 <3 <4 | 4> 3> 2> ± 1> + ^ ^ + (LGUI) (_MOV) + + + HEBREW_DVORAK (Same as standard Dvorak) + index>middl>ring>pin>pink2> + -*- <|> //(toggle) Access on _FUN + BASE ! @ # $ % | ^ & * ( ) Del + Tab+LCtl 1! 2@ 3# 4$ 5% | 6^ 7& 8* 9( 0) `~+RCtl + -+LSht [{ ]} /? \| =+ | + | ? { } ~+RSht + --------------------------------------------------------------------------- + (…) +- - - diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_numpad.h b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_numpad.h index 86baf95a5958..d4440721ff6a 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_numpad.h +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_numpad.h @@ -18,6 +18,8 @@ along with this program. If not, see . * */ +#pragma once + // --------------------------------------v--------------------------------------- // Configuration: // --------------------------------------v--------------------------------------- diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty_basearrow.h b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty_basearrow.h index 74aa563b42f2..386a6e593a90 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty_basearrow.h +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/base_qwerty_basearrow.h @@ -18,6 +18,8 @@ along with this program. If not, see . * */ +#pragma once + // --------------------------------------v--------------------------------------- // Configuration: // --------------------------------------v--------------------------------------- diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/config.h b/keyboards/thevankeyboards/minivan/keymaps/josjoha/config.h index 809842278484..9db4d596de65 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/josjoha/config.h +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/config.h @@ -24,7 +24,7 @@ along with this program. If not, see . // place overrides here // Some defines meant to decrease the firmware size. The firmware is otherwise over the maximum (atmega32u4) -//# ifndef LINK_TIME_OPTIMIZATION_ENABLE +//# ifndef LTO_ENABLE //Disable old style macro handling: MACRO() & action_get_macro //# define NO_ACTION_MACRO // This saves 320 bytes //disable calling of action_function() from the fn_actions array (deprecated) @@ -40,7 +40,7 @@ along with this program. If not, see . // Attempts to reduce firmware size: - //#define LINK_TIME_OPTIMIZATION_ENABLE // Did not decrease firmware size when tested on 26 Jan 2020 + //#define LTO_ENABLE // Did not decrease firmware size when tested on 26 Jan 2020 //#define NO_DEBUG //disable debugging (already defined) //#define NO_PRINT JJdisable printing/debugging using hid_listen (already defined) //#define NO_ACTION_LAYER //disable layers (obviously need layers) diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/keymap.c b/keyboards/thevankeyboards/minivan/keymaps/josjoha/keymap.c index 09a9b7d93da1..057561a47331 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/josjoha/keymap.c +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/keymap.c @@ -146,7 +146,7 @@ bool led_middle_on = TRUE; // Set to off later, if startup setting is off. bool isolate_trigger = FALSE; // detects if _FUN layer move was pressed, and no other key (no normal use of Shift). bool capslock; // keeps track of capslock state bool numlock; // keeps track of numlock state -layer_state_t state_recall; // We are calling the function set_led_colors_ from this file as well. +//layer_state_t state_recall; // We are calling the function set_led_colors_ from this file as well. // speed measuring bool speed_measure = SPEED_INIT_VALUE; // feature activated or not on startup uint32_t speed_counttime; // counts the time @@ -289,8 +289,8 @@ void speed_led (int speed) { // do this in one place to handle left/right leds being off here void isolate_rgblight_set () { -# ifdef RGBLIGHT_ENABLE +# ifdef RGBLIGHT_ENABLE if (!leds_on) { // left/right leds are off // overwrite previously colors uint8_t led0r = 0; uint8_t led0g = 0; uint8_t led0b = 0; @@ -305,8 +305,8 @@ void isolate_rgblight_set () { setrgb(led2r, led2g, led2b, (LED_TYPE *)&led[2]); // Led 2 } rgblight_set (); - # endif + } @@ -335,7 +335,7 @@ void indicate_fun_stay (void) { // _RAR layer leds -// It is a function because this is called when the Base layer OTHER_BASE key is pressed +// It is a function because this is also called when the Base layer OTHER_BASE key is pressed void indicate_base (void) { # ifdef RGBLIGHT_ENABLE @@ -614,6 +614,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { # include "./base_numpad.c" // Numbers pad # endif +// * Hebrew * +# if defined(BASE_HEBREW__DEF_BASE) || defined(BASE_HEBREW__ALT_BASE) +# include "./base_hebrew.c" // Hebrew +# endif + // // ⬇ insert your ./base_YOUR_KEYMAP.c #include here: diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/minifan_config_compact.h b/keyboards/thevankeyboards/minivan/keymaps/josjoha/minifan_config_compact.h index 89d426b14050..932acf2a8273 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/josjoha/minifan_config_compact.h +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/minifan_config_compact.h @@ -14,25 +14,29 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . - * © 2020,2021 by Jos Boersema +* © 2020,2021 by Jos Boersema */ +#pragma once + /* * If MINIFAN_CONFIG_COMPACT in ./user_config.h ⬇ */ //#define BASE_QWERTY__DEF_BASE //#define BASE_QWERTY__ALT_BASE -//#define BASE_QWERTY_BASEARROW__DEF_BASE -//#define BASE_QWERTY_BASEARROW__ALT_BASE +//#define BASE_QWERTY_BASEARROW__DEF_BASE // ➡ base_qwerty_basearrow.h +//#define BASE_QWERTY_BASEARROW__ALT_BASE // ➡ base_qwerty_basearrow.h #define BASE_DVORAK__DEF_BASE //#define BASE_DVORAK__ALT_BASE - #define BASE_DVORAK_DESCRAMBLE__ALT_BASE +//#define BASE_DVORAK_DESCRAMBLE__ALT_BASE //#define BASE_COLEMAK__DEF_BASE //#define BASE_COLEMAK__ALT_BASE //#define BASE_WORKMAN__DEF_BASE //#define BASE_WORKMAN__ALT_BASE -//#define BASE_NUMPAD__ALT_BASE +//#define BASE_NUMPAD__ALT_BASE // ➡ base_numpad.h +//#define BASE_HEBREW__DEF_BASE // ➡ base_hebrew.h + #define BASE_HEBREW__ALT_BASE // ➡ base_hebrew.h //#define MINIFAN_SINGLE_LAYOUT @@ -66,7 +70,7 @@ along with this program. If not, see . #define ARROWS_TRIANGLE //#define VI_SWITCHERYDOO -//#define NUMPAD_COMMON_SQUARE + #define NUMPAD_COMMON_SQUARE #define SPEED_COUNTDOWN 25 #define SPEED_HUE_STEP 8 @@ -100,5 +104,5 @@ along with this program. If not, see . #define FULL_DRA_4THROW #define FULL_BON_4THROW - #define LEDS_OFF_BASE_DEF - #define LEDS_OFF_BASE_ALT +//#define LEDS_OFF_BASE_DEF +//#define LEDS_OFF_BASE_ALT diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/readme.md b/keyboards/thevankeyboards/minivan/keymaps/josjoha/readme.md index 1d2ad90feae5..a535a6f1f98b 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/josjoha/readme.md +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/readme.md @@ -3,7 +3,7 @@ A 40% keyboard made first by TheVan Keyboards _https://thevankeyboards.com_ now taken over by TKC _https://thekey.company_ -![Minivan layout all](http://socialism.nl/misc/minivan/minivan-all-layers-visualization_vc.jpg) +![Minivan layout all](http://socialism.nl/misc/minivan/minivan-all-layers-visualization_vd.jpg) Table of Contents ================= @@ -22,6 +22,8 @@ Table of Contents 3.1.6 Workman 3.2 Special layouts 3.2.1 Numbers pad + 3.3 Non-Latin languages + 3.3.1 Hebrew 4 The common system 4.1 Layer access 4.2 Layout in graphics @@ -108,7 +110,7 @@ the western European group of languages, native from the keyboard. This keymap might not function as expected if you want to use a different keyboard language setting in your operating system. -See also chapter 6 _Language support_. +See also chapter 7 _Language support_. 2 'make' example ================ @@ -195,6 +197,17 @@ with a normal layout on ‛Default’. How this works is explained below. For the readme about the Numpad version, see ➡ ![base_numpad.md](./base_numpad.md) ⬅ +3.3 Non-Latin languages +======================= + +3.3.1 Hebrew +------------ + +![Minivan layout impression](http://socialism.nl/misc/minivan/minivan_keycapview_hebrew_vc.jpg) + +For the readme about the Hebrew version, see ➡ ![base_hebrew.md](./base_hebrew.md) ⬅ + + 4 The common system =================== @@ -1053,7 +1066,9 @@ You can remove the layers `_ACC`, `_DRA` and/or `_BON` (see You can remove a set of symbols from one or more of Unicode layers, such as not having box drawing characters on `_BON`, or no sub-script -numbers on `_DRA`. +numbers on `_DRA` (see ![./user_config.h](./user_config.h) under +`Eviscerations ②/②` ) ⬅ + 12 Key associations =================== diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/rules.mk b/keyboards/thevankeyboards/minivan/keymaps/josjoha/rules.mk index e6998240e0b4..e04cfe17ddba 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/josjoha/rules.mk +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/rules.mk @@ -3,7 +3,7 @@ # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_hebrew.h b/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_hebrew.h new file mode 100644 index 000000000000..881a80884bbb --- /dev/null +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_hebrew.h @@ -0,0 +1,116 @@ +/* + * License (GPL): + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + + * Author: © 2021 by Jos Boersema + * + */ + +#pragma once + +/* An amount of Unicode #defines + * - hebrew + */ + + // +#define HB_ALEF 0x05D0 // 'HB' for 'Hebrew', "ALEF" for Alef : א +#define HB_BET 0x05D1 // " , "BET" for Bet : ב +#define HB_GIMEL 0x05D2 // " , "GIMEL" for Gimel : ג +#define HB_DALET 0x05D3 // " , "DALET" for Daled : ד +#define HB_HE 0x05D4 // " , "HE" for He : ה +#define HB_VAV 0x05D5 // " , "VAV" for Vav : ו +#define HB_ZAYIN 0x05D6 // " , "ZAYIN" for Zayin : ז +#define HB_GET 0x05D7 // " , "HET" for Het : ח +#define HB_TET 0x05D8 // " , "TET" for Tet : ט +#define HB_YOD 0x05D9 // " , "YOD" for Yod : י +#define HB_KAFS 0x05DA // " , "KAFS" for Kaf sofiet : ך +#define HB_KAF 0x05DB // " , "KAF" for Kaf : כ +#define HB_LAMED 0x05DC // " , "LAMED" for Lamed : ל +#define HB_MEMS 0x05DD // " , "MEMS" for Mem sofiet : ם +#define HB_MEM 0x05DE // " , "MEM" for Mem : מ +#define HB_NUNS 0x05DF // " , "NUNS" for Nun sofiet : ן +#define HB_NUN 0x05E0 // " , "NUN" for Nun : נ +#define HB_SAMEG 0x05E1 // " , "SAMEG" for Sameg : ס +#define HB_AYIN 0x05E2 // " , "AYIN" for Ayin : ע +#define HB_PES 0x05E3 // " , "PES" for Pe sofiet : ף +#define HB_PE 0x05E4 // " , "PE" for Pe : פ +#define HB_TSDIS 0x05E5 // " , "TSDIS" for Tsadi sofiet: ץ +#define HB_TSADI 0x05E6 // " , "TSADI" for Tsadi : צ +#define HB_QOF 0x05E7 // " , "QOF" for Qof : ק +#define HB_RESH 0x05E8 // " , "RESH" for Resh : ר +#define HB_SHIN 0x05E9 // " , "SHIN" for Shin : ש +#define HB_TAV 0x05EA // " , "TAV" for Tav : ת +#define HB_MAQAF 0x05be // " , "MAQAF" for Maqaf : ־ + +// Yiddish digraphs: +//#define HB_D_VAV 0x05F0 // " , "D_VAV" for double Van : װ +//#define HB_VAVYD 0x05F1 // " , "VAVYD" for Vav Yod : ױ +//#define HB_D_YOD 0x05F2 // " , "D_YOD" for double Yod : ײ + +// special +#define HB_RLM 0x200F // " , "RLM" for Right-Left-Mark: +#define HB_LRM 0x200E // " , "LRM" for Left-Right-Mark: + + +// The below are displacing symbols on other layers, some of which are quite obscure +// and end up being unused. They are compiled based on a #define. +// These where reported as symbols present on hebrew keyboards: +// U+05F3 : HEBREW PUNCTUATION GERESH +// U+20AC : EURO SIGN +// U+20AA : NEW SHEQEL SIGN {shekel} +// U+00B0 : DEGREE SIGN +// U+05AB : HEBREW ACCENT OLE +// U+05BD : HEBREW POINT METEG {siluq} +// U+00D7 : MULTIPLICATION SIGN {z notation Cartesian product} +// U+200E : LEFT-TO-RIGHT MARK [LRM] +// U+200F : RIGHT-TO-LEFT MARK [RLM] +// U+05BE : HEBREW PUNCTUATION MAQAF +// U+2013 : EN DASH +// U+05C2 : HEBREW POINT SIN DOT +// U+05C1 : HEBREW POINT SHIN DOT +// U+05B8 : HEBREW POINT QAMATS +// U+05F0 : HEBREW LIGATURE YIDDISH DOUBLE VAV {tsvey vovn} +// U+05B9 : HEBREW POINT HOLAM +// U+05B7 : HEBREW POINT PATAH +// U+05B2 : HEBREW POINT HATAF PATAH +// U+05F1 : HEBREW LIGATURE YIDDISH VAV YOD +// U+05F2 : HEBREW LIGATURE YIDDISH DOUBLE YOD {tsvey yudn} +// U+05B4 : HEBREW POINT HIRIQ +// U+201D : RIGHT DOUBLE QUOTATION MARK {double comma quotation mark} +// U+201E : DOUBLE LOW-9 QUOTATION MARK {low double comma quotation mark} +// U+05F4 : HEBREW PUNCTUATION GERSHAYIM +// U+05B6 : HEBREW POINT SEGOL +// U+05B1 : HEBREW POINT HATAF SEGOL +// U+05B5 : HEBREW POINT TSERE +// U+2019 : RIGHT SINGLE QUOTATION MARK {single comma quotation mark} +// U+201A : SINGLE LOW-9 QUOTATION MARK {low single comma quotation mark} +// U+00F7 : DIVISION SIGN {obelus} +// U+05BA : HEBREW POINT HOLAM HASER FOR VAV +// U+200D : ZERO WIDTH JOINER [ZWJ] +// U+201C : LEFT DOUBLE QUOTATION MARK {double turned comma quotation mark} +// U+201D : RIGHT DOUBLE QUOTATION MARK {double comma quotation mark} +// U+034F : COMBINING GRAPHEME JOINER [CGJ] +// U+05C6 : HEBREW PUNCTUATION NUN HAFUKHA +// U+200C : ZERO WIDTH NON-JOINER [ZWNJ] +// U+2018 : LEFT SINGLE QUOTATION MARK {single turned comma quotation mark} +// U+2019 : RIGHT SINGLE QUOTATION MARK {single comma quotation mark} +// Note: many modifiers probably only work with a hebrew language setting on the computer +// operating system. As Unicode, it would print a disconnected diacretical symbol. + +// Geresh +#define HB_GERSH 0x05F3 // " , "GERSH" for Geresh : +#define HB_GRSHM 0x05F4 // " , "GRSHM" for Gershayim : +// Currency +#define HB_SHEKL 0x20AA // " , "SHEKL" for shekel : diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_macros.c b/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_macros.c index d711c86f9bbd..cfcf765a08d0 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_macros.c +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_macros.c @@ -24,6 +24,7 @@ along with this program. If not, see . #include "./unicode_macros.h" #include "./unicode_weurope.h" +#include "./unicode_hebrew.h" // Definition of ƒ (Dutch currency symbol). // Best changed in user_config.h, if you like a Euro symbol instead. @@ -174,109 +175,150 @@ enum custom_keycodes { // The _ACC layer, additional Unicode. # ifndef REMOVE_ACC // This cuts out the whole _ACC layer. - XP_ACC_AA , - XP_ACC_AB , - XP_ACC_AC , - XP_ACC_AD , - XP_ACC_AE , - XP_ACC_AF , - XP_ACC_AG , - XP_ACC_AH , - XP_ACC_AI , - XP_ACC_AJ , - XP_ACC_BA , - XP_ACC_BB , - XP_ACC_BC , - XP_ACC_BD , - XP_ACC_BE , - XP_ACC_BF , - XP_ACC_BG , - XP_ACC_BH , - XP_ACC_BI , - XP_ACC_BJ , - XP_ACC_BK , - XP_ACC_CA , - XP_ACC_CB , - XP_ACC_CC , - XP_ACC_CD , - XP_ACC_CE , - XP_ACC_CF , - XP_ACC_CG , - XP_ACC_CH , - XP_ACC_CI , - XP_ACC_CJ , + XP_ACC_AA, + XP_ACC_AB, + XP_ACC_AC, + XP_ACC_AD, + XP_ACC_AE, + XP_ACC_AF, + XP_ACC_AG, + XP_ACC_AH, + XP_ACC_AI, + XP_ACC_AJ, + XP_ACC_BA, + XP_ACC_BB, + XP_ACC_BC, + XP_ACC_BD, + XP_ACC_BE, + XP_ACC_BF, + XP_ACC_BG, + XP_ACC_BH, + XP_ACC_BI, + XP_ACC_BJ, + XP_ACC_BK, + XP_ACC_CA, + XP_ACC_CB, + XP_ACC_CC, + XP_ACC_CD, + XP_ACC_CE, + XP_ACC_CF, + XP_ACC_CG, + XP_ACC_CH, + XP_ACC_CI, + XP_ACC_CJ, # endif // REMOVE_ACC # ifndef REMOVE_DRA // This cuts out the whole _DRA layer // The _DRA layer, additional Unicode. - XP_DRA_AA , - XP_DRA_AB , - XP_DRA_AC , - XP_DRA_AD , - XP_DRA_AE , - XP_DRA_AF , - XP_DRA_AG , - XP_DRA_AH , - XP_DRA_AI , - XP_DRA_AJ , - XP_DRA_BA , - XP_DRA_BB , - XP_DRA_BC , - XP_DRA_BD , - XP_DRA_BE , - XP_DRA_BF , - XP_DRA_BG , - XP_DRA_BH , - XP_DRA_BI , - XP_DRA_BJ ,// XP_DRA_BK , // no 'BK' key definition on this layer - XP_DRA_CA , - XP_DRA_CB , - XP_DRA_CC , - XP_DRA_CD , - XP_DRA_CE , - XP_DRA_CF , + XP_DRA_AA, + XP_DRA_AB, + XP_DRA_AC, + XP_DRA_AD, + XP_DRA_AE, + XP_DRA_AF, + XP_DRA_AG, + XP_DRA_AH, + XP_DRA_AI, + XP_DRA_AJ, + XP_DRA_BA, + XP_DRA_BB, + XP_DRA_BC, + XP_DRA_BD, + XP_DRA_BE, + XP_DRA_BF, + XP_DRA_BG, + XP_DRA_BH, + XP_DRA_BI, + XP_DRA_BJ,// XP_DRA_BK , // no 'BK' key definition on this layer + XP_DRA_CA, + XP_DRA_CB, + XP_DRA_CC, + XP_DRA_CD, + XP_DRA_CE, + XP_DRA_CF, # endif // REMOVE_DRA - XP_DRA_CG , // Needed for ☑ on Unicode tester key in _RAR + XP_DRA_CG, // Needed for ☑ on Unicode tester key in _RAR # ifndef REMOVE_DRA // This cuts out the whole _DRA layer - XP_DRA_CH , - XP_DRA_CI , - XP_DRA_CJ , + XP_DRA_CH, + XP_DRA_CI, + XP_DRA_CJ, # endif // REMOVE_DRA // The _BON layer, additional Unicode. # ifndef REMOVE_BON // Removes this layer entirely, if set. - XP_BON_AA , - XP_BON_AB , - XP_BON_AC , - XP_BON_AD , - XP_BON_AE , - XP_BON_AF , - XP_BON_AG , - XP_BON_AH , - XP_BON_AI , - XP_BON_AJ , - XP_BON_BA , - XP_BON_BB , - XP_BON_BC , - XP_BON_BD , - XP_BON_BE , - XP_BON_BF , - XP_BON_BG , - XP_BON_BH , - XP_BON_BI , - XP_BON_BJ , - XP_BON_BK , - XP_BON_CA , - XP_BON_CB , - XP_BON_CC , - XP_BON_CD , - XP_BON_CE , - XP_BON_CF , - XP_BON_CG , - XP_BON_CH , - XP_BON_CI , - XP_BON_CJ , + XP_BON_AA, + XP_BON_AB, + XP_BON_AC, + XP_BON_AD, + XP_BON_AE, + XP_BON_AF, + XP_BON_AG, + XP_BON_AH, + XP_BON_AI, + XP_BON_AJ, + XP_BON_BA, + XP_BON_BB, + XP_BON_BC, + XP_BON_BD, + XP_BON_BE, + XP_BON_BF, + XP_BON_BG, + XP_BON_BH, + XP_BON_BI, + XP_BON_BJ, + XP_BON_BK, + XP_BON_CA, + XP_BON_CB, + XP_BON_CC, + XP_BON_CD, + XP_BON_CE, + XP_BON_CF, + XP_BON_CG, + XP_BON_CH, + XP_BON_CI, + XP_BON_CJ, # endif // REMOVE_BON + +// Hebrew +# if defined(BASE_HEBREW__DEF_BASE) || defined(BASE_HEBREW__ALT_BASE) + XP_HEB_AA, + XP_HEB_AB, + XP_HEB_AC, + XP_HEB_AD, + XP_HEB_AE, + XP_HEB_AF, + XP_HEB_AG, + XP_HEB_AH, + XP_HEB_AI, + XP_HEB_AJ, + XP_HEB_BA, + XP_HEB_BB, + XP_HEB_BC, + XP_HEB_BD, + XP_HEB_BE, + XP_HEB_BF, + XP_HEB_BG, + XP_HEB_BH, + XP_HEB_BI, + XP_HEB_BJ, +# if defined(HEBREW_ISRAEL) + XP_HEB_BK, // +# endif + XP_HEB_CA, + XP_HEB_CB, + XP_HEB_CC, + XP_HEB_CD, + XP_HEB_CE, + XP_HEB_CF, + XP_HEB_CG, +# if defined(HEBREW_ISRAEL) || defined(HEBREW_DVORAK) + XP_HEB_CH, + XP_HEB_CI, + XP_HEB_CJ, +# endif + XP_HEB_MQF, // ־ +# endif //BASE_HEBREW__* + }; // Pre-existing function, called for every key up and down. @@ -1244,12 +1286,17 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case LEDS_ON: // Toggles left/right leds on or off if (record->event.pressed) { // key down + +# ifdef RGBLIGHT_ENABLE if (leds_on == FALSE) { leds_on = TRUE; }else{ leds_on = FALSE; } + set_led_colors_ (state_recall); // Update leds } +# endif + break; # ifdef LEDS_OFF_BASE_DEF // This messes with led effect on/off, so we need to track the state of this setting now. @@ -1652,11 +1699,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case XP_DRA_AA: // because '", the opening „“ at the ‛open’ of the keyboard (left/up) if (record->event.pressed) { // key down -# ifdef FULL_DRA_4THROW unicode_hex2output (CS_DQUHR, CS_DQUL);// “ „ -# else - unicode_hex2output_single (CS_DQUHR);// “ -# endif } break; @@ -1664,11 +1707,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case XP_DRA_AB: // because to the right of opening “, ≤ on < if (record->event.pressed) { // key down -# ifdef FULL_DRA_4THROW unicode_hex2output (CS_DQUH, CS_ELTHAN);// ” ≤ -# else - unicode_hex2output_single (CS_DQUH);// ” -# endif } break; @@ -1676,11 +1715,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case XP_DRA_AC: // because this is where the £ is on an English keyboard, on 'any' money symbols ¤; ≥ on > if (record->event.pressed) { // key down -# ifdef FULL_DRA_4THROW unicode_hex2output (CS_POUND, CS_EGTHAN);// £ ≥ -# else - unicode_hex2output_single (CS_POUND);// £ -# endif } break; @@ -1690,6 +1725,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { # ifdef FULL_DRA_4THROW unicode_hex2output (CS_NONE, CS_CENT);// ∅ ¢ +# else + unicode_hex2output_single (CS_NONE);// ∅ ¢ # endif } @@ -1710,11 +1747,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case XP_DRA_AF: // Because left of 🙂, on top of ★ if (record->event.pressed) { // key down -# ifdef FULL_DRA_4THROW unicode_hex2output (CS_FLEUR, CS_HEART);// ❦ ♥ -# else - unicode_hex2output_single (CS_HEART);// ♥ -# endif } break; @@ -1722,9 +1755,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case XP_DRA_AG: // because 😊 ⍨ if (record->event.pressed) { // key down -# ifdef FULL_DRA_4THROW unicode_hex2output (CS_SMIL, CS_SAD_);// 🙂 🙁 -# endif } break; @@ -1732,9 +1763,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case XP_DRA_AH: // because «no reason», next to 😊 (emoticons) if (record->event.pressed) { // key down -# ifdef FULL_DRA_4THROW unicode_hex2output (CS_THUP, CS_THDN);// 👍 👎 -# endif } break; @@ -2343,6 +2372,299 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { break; # endif // REMOVE_BON + +// Hebrew +# if defined(BASE_HEBREW__DEF_BASE) || defined(BASE_HEBREW__ALT_BASE) +// The layout follows a standard hebrew keyboard, with the exception +// of ק, which is displaced by “.>” copied from the Dvorak layout. + + // HEBREW_DVORAK + // These letters on the upper left follow Dvorak layout. + // The reason is space on the device: these are not macros. + // Also: typing compatibility between Dvorak and Hebrew + // for these similar/same symbols: ,<.>. Idealy these symbols + // should be the hebrew variation, if space allows it. + +# if defined(HEBREW_ISRAEL) + + case XP_HEB_AA: // + if (record->event.pressed) { // key down + // These shifts-up seem to work on GNU/Debian/Linux, otherwise it prints ':' + if (shift_ison) send_string ( SS_UP(X_RSFT) SS_UP(X_LSFT) ";" ); // moved here from on standard hebrew + else send_string ("/");// + } break; + + case XP_HEB_AB: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_GERSH);// ׳ + } + break; + + case XP_HEB_AC: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_QOF);// ק + } + break; + +# elif defined(HEBREW_QWERTY) + + case XP_HEB_AA: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_TAV);// ת + } + break; + + case XP_HEB_AB: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_TSDIS);// ץ + } + break; + + case XP_HEB_AC: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_QOF);// ק + } + break; + +# endif // #HEBREW_* + + case XP_HEB_AD: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_RESH);// ר + } + break; + + case XP_HEB_AE: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_ALEF);// א + + } + break; + + case XP_HEB_AF: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_TET);// ט + } + break; + + case XP_HEB_AG: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_VAV);// ו + } + break; + + case XP_HEB_AH: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_NUNS);// ן + } + break; + + case XP_HEB_AI: + if (record->event.pressed) { // key down + +# if defined(HEBREW_ISRAEL) + // The logic is that it mirrors '", “„, ”≤, ‛’ in Dvorak Base and other layers. + // Therefore the little and ring fingers are used. Mirroring ━─ and ┄┅ on DRA_ + // layer, the outside on the keyboard is “big/fat”, the inside is “small/thin”, + // like something protected in a shell. Hence: ……׳״ + unicode_hex2output_single (HB_MEMS);// ם // ׳ is located elsewhere +# elif defined(HEBREW_QWERTY) || defined(HEBREW_DVORAK) + unicode_hex2output (HB_MEMS, HB_GERSH);// ם׳ +# endif + + } + break; + + case XP_HEB_AJ: // + if (record->event.pressed) { // key down + +# if defined(HEBREW_ISRAEL) + unicode_hex2output_single (HB_PE);// פ // ״ is located elsewhere +# elif defined(HEBREW_QWERTY) || defined(HEBREW_DVORAK) + unicode_hex2output (HB_PE, HB_GRSHM);// פ״ +# endif + + } + break; + + // ------------------------- row 3 + case XP_HEB_BA: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_SHIN);// ש + } + break; + + case XP_HEB_BB: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_DALET);// ד + } + break; + + case XP_HEB_BC: //Right-left-mark to the first free strong homerow finger on the left (middle) + if (record->event.pressed) { // key down + unicode_hex2output (HB_GIMEL, HB_RLM);// ג {RLM} + } + break; + + case XP_HEB_BD: // The logic is that כ is the same key as 4 on another layer, which connects + // with $, and other currencies in the same region (ƒ£). + if (record->event.pressed) { // key down + unicode_hex2output (HB_KAF, HB_SHEKL);// כ₪ + } + break; + + case XP_HEB_BE: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_AYIN);// ע + } + break; + + case XP_HEB_BF: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_YOD);// י + } + break; + + case XP_HEB_BG: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_GET);// ח + } + break; + + case XP_HEB_BH: // + if (record->event.pressed) { // key down + unicode_hex2output (HB_LAMED, HB_LRM);// ל {LRM} + } + break; + + case XP_HEB_BI: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_KAFS);// ך + } + break; + + case XP_HEB_BJ: // + if (record->event.pressed) { // key down + +# if defined(HEBREW_ISRAEL) || defined(HEBREW_QWERTY) + if (shift_ison) send_string (":"); // : (the hebrew eqquivalent is apparently almost never used, and this saves space) + else unicode_hex2output_single (HB_PES);// ף +# elif defined(HEBREW_DVORAK) + unicode_hex2output_single (HB_PES);// ף +# endif + + } + break; + +# if defined(HEBREW_ISRAEL) + case XP_HEB_BK: // + if (record->event.pressed) { // key down + if (shift_ison) unicode_hex2output_single (HB_GRSHM);// ״ + else send_string (","); // comma + } + break; +# endif + + case XP_HEB_MQF: // ־ Maqaf + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_MAQAF);// ־ + } + break; + + // ------------------------- row 2 + case XP_HEB_CA: // + if (record->event.pressed) { // key down +// Hebrew harmonization + ':' +# if defined(HEBREW_ISRAEL) || defined(HEBREW_QWERTY) + unicode_hex2output_single (HB_ZAYIN);// ז +# elif defined(HEBREW_DVORAK) + if (shift_ison) send_string (":"); // + else unicode_hex2output_single (HB_ZAYIN);// ז +# endif + } + break; + + case XP_HEB_CB: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_SAMEG);// ס + } + break; + + case XP_HEB_CC: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_BET);// ב + } + break; + + case XP_HEB_CD: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_HE);// ה + } + break; + + case XP_HEB_CE: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_NUN);// נ + } + break; + + case XP_HEB_CF: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_MEM);// מ + } + break; + + case XP_HEB_CG: // + if (record->event.pressed) { // key down + unicode_hex2output_single (HB_TSADI);// צ + } + break; + +# if defined(HEBREW_ISRAEL) || defined(HEBREW_DVORAK) + case XP_HEB_CH: // + if (record->event.pressed) { // key down + +# if defined(HEBREW_ISRAEL) + if (shift_ison) send_string ("<"); // + else unicode_hex2output_single (HB_TAV);// ת +# else // HEBREW_DVORAK + unicode_hex2output_single (HB_TAV);// ת +# endif + + } + break; + + case XP_HEB_CI: // + if (record->event.pressed) { // key down + +# if defined(HEBREW_ISRAEL) + if (shift_ison) send_string (">"); // + else unicode_hex2output_single (HB_TSDIS);// ץ +# else // HEBREW_DVORAK + unicode_hex2output_single (HB_TSDIS);// ץ +# endif + + } + break; + + case XP_HEB_CJ: // anomaly + if (record->event.pressed) { // key down + +# if defined(HEBREW_ISRAEL) + if (shift_ison) send_string ("?"); // + else send_string ("."); // +# else // HEBREW_DVORAK + unicode_hex2output_single (HB_QOF);// ק +# endif + + } + break; +# endif // HEBREW_* + + // HB_D_VAV, + // HB_VAVYD, + // HB_D_YOD, +# endif // Hebrew Base layer } return true; diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_macros.h b/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_macros.h index 5969525ca90a..354331591100 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_macros.h +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_macros.h @@ -30,6 +30,7 @@ static uint16_t key_timer; // Used in _DDL to differentiate layer switching in h short duo_press_nsy_dra = 0; // This remembers how many of the duo-press keys are being pressed: _NSY / _DRA layers short duo_press_acc_bon = 0; // This remembers how many of the duo-press keys are being pressed: _ACC / _BON layers +layer_state_t state_recall; // Also used when leds on/off is pressed void deactivate_all_but (int layer); void activate_this_layer (int layer); @@ -40,5 +41,6 @@ void speed_led (int speed); void indicate_fun_stay (void); int write_number (long int input, short divide10); void isolate_rgblight_set (void); +void set_led_colors_ (layer_state_t state); diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_weurope.h b/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_weurope.h index 56a50b80c525..f4a5bdab72bb 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_weurope.h +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/unicode_weurope.h @@ -18,6 +18,8 @@ along with this program. If not, see . * */ +#pragma once + /* An amount of Unicode #defines * - western european accented characters * - various punctuation symbols, different number formats, math symbols, other symbols. diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/user_config.h b/keyboards/thevankeyboards/minivan/keymaps/josjoha/user_config.h index 293fd15a0630..6552c9a49f8b 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/josjoha/user_config.h +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/user_config.h @@ -18,6 +18,7 @@ along with this program. If not, see . * */ +#pragma once // ------------------------------------- ⬇ -------------------------------------- // Configuration: @@ -47,6 +48,7 @@ along with this program. If not, see . • Colemak • Workman • Numpad + • Hebrew -2- ➡ Eviscerations ( ① / ② ) ⬅ • Single layout @@ -146,6 +148,7 @@ along with this program. If not, see . // _Activate_ one of these two, _remove_ the other. //#define BASE_QWERTY_BASEARROW__DEF_BASE // _Activate_ if you want Qwerty with Base arrows on the ‛Default’ spot //#define BASE_QWERTY_BASEARROW__ALT_BASE // _Activate_ if you want Qwerty with Base arrows on the ‛Alternate’ spot + // ➡ ➡ ➡ This Base layer has configuration options at the top of its file. See ./ base_qwerty_basearrow.h // // • Dvorak // (a regular Dvorak layout) @@ -174,7 +177,14 @@ along with this program. If not, see . // (a numerical keypad, one for left hand and one for right hand) // _Activate_ to get Numpad on Alternate. There is no option for Numpad on ‛Default’ base. #define BASE_NUMPAD__ALT_BASE // _Activate_ if you want Numpad on the ‛Alternate’ spot - // ➡ ➡ ➡ This Base layer has configuration options at the top of its file. See ./base_numpad.c + // ➡ ➡ ➡ This Base layer has configuration options at the top of its file. See ./base_numpad.h + // + // • Hebrew + // (a simple Hebrew layout) + // _Activate_ one of these two, _remove_ the other. +//#define BASE_HEBREW__DEF_BASE // _Activate_ if you want Hebrew on the ‛Default’ spot +//#define BASE_HEBREW__ALT_BASE // _Activate_ if you want Hebrew on the ‛Alternate’ spot + // ➡ ➡ ➡ This Base layer has configuration options at the top of its file. See ./base_hebrew.h // /* -2- ➡ Eviscerations ( ① / ② ) ⬅ */ @@ -517,12 +527,12 @@ along with this program. If not, see . // Thinned out 2nd row: LSht ━ ─ ° • … ☐ ☑ ☑ ¿¡ ┄ ┅ RSht // #define FULL_DRA_4THROW // _Activate_ to have symbols on all unshifted + shifted positions on _DRA, 4th row. - // Affected 4th row: „ ≤ ≥ ∅ ¢ ƒ ❦ 🙂 🙁 👍 👎 ⁽ ₍ ⁾ ₎ + // Affected 4th row: ¢ ƒ ⁽ ₍ ⁾ ₎ // Full 4th row: BASE “„ ”≤ £≥ ∅ ¢ ±ƒ ❦ ♥ 🙂🙁 👍👎 ⁽₍ ⁾₎ Bkspc - // Thinned out 4th row: BASE “ ” £ ± ♥ Bkspc + // Thinned out 4th row: BASE “„ ”≤ £≥ ∅ ± ❦ ♥ 🙂🙁 👍👎 Bkspc // #define FULL_BON_4THROW // _Activate_ to have symbols on all unshifted + shifted positions on _BON, 4th row. - // Affected 4th row: 🛠 ¤ ∑ ‱ ٭ 😊 ⍨ ⃰ ⁻ ⁺ 🄯 © + // Affected 4th row: 🛠 ¤ ∑ ‱ ٭ 😊 ⍨ ⃰ ⁻ ⁺ 🄯 © ⃰ √ ⁻⁺ // Full 4th row: BASE ‛🛠 ’⬆ ¤ 🄯 ∑ © ‰‱ ★٭ 😊⍨ × ⃰ √ ⁻⁺ Bkspc // Thinned out 4th row: BASE ‛ ’⬆ ‰ ★ × Bkspc // @@ -559,7 +569,11 @@ along with this program. If not, see . # endif // * Qwerty Base Arrow * # if defined(BASE_QWERTY_BASEARROW__DEF_BASE) || defined(BASE_QWERTY_BASEARROW__ALT_BASE) -# include "./base_qwerty_basearrow.h" // Your Keymap header/configuration file. +# include "./base_qwerty_basearrow.h" // qwerty base arrow, header +# endif +// * Hebrew * +# if defined(BASE_HEBREW__DEF_BASE) || defined(BASE_HEBREW__ALT_BASE) +# include "./base_hebrew.h" // Hebrew header # endif // // ⬇ insert your ./base_YOUR_KEYMAP.h #include here: diff --git a/keyboards/thevankeyboards/minivan/keymaps/king/rules.mk b/keyboards/thevankeyboards/minivan/keymaps/king/rules.mk index 9865184abb8d..5ae757f3c526 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/king/rules.mk +++ b/keyboards/thevankeyboards/minivan/keymaps/king/rules.mk @@ -2,5 +2,5 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/thevankeyboards/minivan/keymaps/like_jis/rules.mk b/keyboards/thevankeyboards/minivan/keymaps/like_jis/rules.mk index 07f71d6dbb1d..14e9b007635e 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/like_jis/rules.mk +++ b/keyboards/thevankeyboards/minivan/keymaps/like_jis/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = no # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/thevankeyboards/minivan/keymaps/mikethetiger/rules.mk b/keyboards/thevankeyboards/minivan/keymaps/mikethetiger/rules.mk index 7a331cd530cf..93e7cd8bb74f 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/mikethetiger/rules.mk +++ b/keyboards/thevankeyboards/minivan/keymaps/mikethetiger/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/thevankeyboards/minivan/keymaps/mjt/rules.mk b/keyboards/thevankeyboards/minivan/keymaps/mjt/rules.mk index 8e22f3051daf..0a249a33524d 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/mjt/rules.mk +++ b/keyboards/thevankeyboards/minivan/keymaps/mjt/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = yes # Console for debug(+400) diff --git a/keyboards/thevankeyboards/minivan/keymaps/smt/rules.mk b/keyboards/thevankeyboards/minivan/keymaps/smt/rules.mk index 7a331cd530cf..93e7cd8bb74f 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/smt/rules.mk +++ b/keyboards/thevankeyboards/minivan/keymaps/smt/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/thevankeyboards/minivan/keymaps/tong92/rules.mk b/keyboards/thevankeyboards/minivan/keymaps/tong92/rules.mk index f5556c8fcbae..850f2d3de60c 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/tong92/rules.mk +++ b/keyboards/thevankeyboards/minivan/keymaps/tong92/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = no # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/thevankeyboards/minivan/keymaps/via/keymap.json b/keyboards/thevankeyboards/minivan/keymaps/via/keymap.json index 1e9ef8810307..54ceb5c342d3 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/via/keymap.json +++ b/keyboards/thevankeyboards/minivan/keymaps/via/keymap.json @@ -7,5 +7,14 @@ ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"] - ] + ], + "config": { + "features": { + "via": true, + "lto": true + }, + "dynamic_keymap": { + "layer_count": 4 + } + } } diff --git a/keyboards/thevankeyboards/minivan/keymaps/xyverz/rules.mk b/keyboards/thevankeyboards/minivan/keymaps/xyverz/rules.mk index 7a331cd530cf..93e7cd8bb74f 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/xyverz/rules.mk +++ b/keyboards/thevankeyboards/minivan/keymaps/xyverz/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/thevankeyboards/minivan/rules.mk b/keyboards/thevankeyboards/minivan/rules.mk index 82a739c6931d..ca3fd332c464 100644 --- a/keyboards/thevankeyboards/minivan/rules.mk +++ b/keyboards/thevankeyboards/minivan/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable support for RGB LEDs diff --git a/keyboards/thevankeyboards/roadkit/config.h b/keyboards/thevankeyboards/roadkit/config.h index 815dd715b447..4572f5e2b90a 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -86,54 +85,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -151,5 +102,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -#endif diff --git a/keyboards/thevankeyboards/roadkit/info.json b/keyboards/thevankeyboards/roadkit/info.json index 839ac73fbf4b..eefa2b34687e 100644 --- a/keyboards/thevankeyboards/roadkit/info.json +++ b/keyboards/thevankeyboards/roadkit/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Roadkit", "url": "", "maintainer": "qmk", - "width": 4, - "height": 4, "layouts": { "LAYOUT_numpad_4x4": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0, "h":2}, {"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":2, "h":2}, {"x":0, "y":3, "w":2}, {"x":2, "y":3}] diff --git a/keyboards/thevankeyboards/roadkit/keymaps/flipphone/rules.mk b/keyboards/thevankeyboards/roadkit/keymaps/flipphone/rules.mk index 7a331cd530cf..93e7cd8bb74f 100644 --- a/keyboards/thevankeyboards/roadkit/keymaps/flipphone/rules.mk +++ b/keyboards/thevankeyboards/roadkit/keymaps/flipphone/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/thevankeyboards/roadkit/keymaps/khord/rules.mk b/keyboards/thevankeyboards/roadkit/keymaps/khord/rules.mk index 676e9a6e0adc..f6dfc2483b85 100644 --- a/keyboards/thevankeyboards/roadkit/keymaps/khord/rules.mk +++ b/keyboards/thevankeyboards/roadkit/keymaps/khord/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/thevankeyboards/roadkit/keymaps/mjt/rules.mk b/keyboards/thevankeyboards/roadkit/keymaps/mjt/rules.mk index 7a331cd530cf..93e7cd8bb74f 100644 --- a/keyboards/thevankeyboards/roadkit/keymaps/mjt/rules.mk +++ b/keyboards/thevankeyboards/roadkit/keymaps/mjt/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/thevankeyboards/roadkit/keymaps/singles/rules.mk b/keyboards/thevankeyboards/roadkit/keymaps/singles/rules.mk index 7a331cd530cf..93e7cd8bb74f 100644 --- a/keyboards/thevankeyboards/roadkit/keymaps/singles/rules.mk +++ b/keyboards/thevankeyboards/roadkit/keymaps/singles/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/thevankeyboards/roadkit/keymaps/singlesBrent/rules.mk b/keyboards/thevankeyboards/roadkit/keymaps/singlesBrent/rules.mk index 38fa7790bd95..3f07fbafcec6 100644 --- a/keyboards/thevankeyboards/roadkit/keymaps/singlesBrent/rules.mk +++ b/keyboards/thevankeyboards/roadkit/keymaps/singlesBrent/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/thevankeyboards/roadkit/keymaps/wavebeem-gamepad/rules.mk b/keyboards/thevankeyboards/roadkit/keymaps/wavebeem-gamepad/rules.mk index d8284e6bd591..825ca3688179 100644 --- a/keyboards/thevankeyboards/roadkit/keymaps/wavebeem-gamepad/rules.mk +++ b/keyboards/thevankeyboards/roadkit/keymaps/wavebeem-gamepad/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/thevankeyboards/roadkit/roadkit.c b/keyboards/thevankeyboards/roadkit/roadkit.c index 26e0c51ec5ef..0f3d7f691698 100644 --- a/keyboards/thevankeyboards/roadkit/roadkit.c +++ b/keyboards/thevankeyboards/roadkit/roadkit.c @@ -1,28 +1 @@ #include "roadkit.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/thevankeyboards/roadkit/roadkit.h b/keyboards/thevankeyboards/roadkit/roadkit.h index 62cfabc5eba7..f367c88ff499 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/thevankeyboards/roadkit/rules.mk b/keyboards/thevankeyboards/roadkit/rules.mk index 760337e1800b..19bc476ef27b 100644 --- a/keyboards/thevankeyboards/roadkit/rules.mk +++ b/keyboards/thevankeyboards/roadkit/rules.mk @@ -2,31 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output LAYOUTS = numpad_4x4 ortho_4x4 diff --git a/keyboards/tiger910/config.h b/keyboards/tiger910/config.h new file mode 100644 index 000000000000..4f2541739a64 --- /dev/null +++ b/keyboards/tiger910/config.h @@ -0,0 +1,49 @@ +/* +Copyright 2021 Weirdo + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7764 +#define PRODUCT_ID 0x5447 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Weirdo +#define PRODUCT tiger910 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 16 + +#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4 } +#define MATRIX_COL_PINS { B5, B6, B7, C0, C1, C2, C3, C4, C5, C6, C7, D0, D1, D2, D3, D4 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION ROW2COL + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* 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/tiger910/info.json b/keyboards/tiger910/info.json new file mode 100644 index 000000000000..1c4e706e3728 --- /dev/null +++ b/keyboards/tiger910/info.json @@ -0,0 +1,77 @@ +{ + "keyboard_name": "tiger910", + "url": "", + "maintainer": "Weirdo", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"K00 (B0,B5)", "x":0, "y":0}, + {"label":"K01 (B0,B6)", "x":1, "y":0}, + {"label":"K02 (B0,B7)", "x":2, "y":0}, + {"label":"K03 (B0,C0)", "x":3, "y":0}, + {"label":"K04 (B0,C1)", "x":4, "y":0}, + {"label":"K05 (B0,C2)", "x":5, "y":0}, + {"label":"K06 (B0,C3)", "x":6, "y":0}, + {"label":"K07 (B0,C4)", "x":7, "y":0}, + {"label":"K08 (B0,C5)", "x":8, "y":0}, + {"label":"K09 (B0,C6)", "x":9, "y":0}, + {"label":"K0A (B0,C7)", "x":10, "y":0}, + {"label":"K0B (B0,D0)", "x":11, "y":0}, + {"label":"K0C (B0,D1)", "x":12, "y":0}, + {"label":"K0E (B0,D3)", "x":13, "y":0, "w":2}, + {"label":"K10 (B1,B5)", "x":0, "y":1, "w":1.5}, + {"label":"K11 (B1,B6)", "x":1.5, "y":1}, + {"label":"K12 (B1,B7)", "x":2.5, "y":1}, + {"label":"K13 (B1,C0)", "x":3.5, "y":1}, + {"label":"K14 (B1,C1)", "x":4.5, "y":1}, + {"label":"K15 (B1,C2)", "x":5.5, "y":1}, + {"label":"K16 (B1,C3)", "x":6.5, "y":1}, + {"label":"K17 (B1,C4)", "x":7.5, "y":1}, + {"label":"K18 (B1,C5)", "x":8.5, "y":1}, + {"label":"K19 (B1,C6)", "x":9.5, "y":1}, + {"label":"K1A (B1,C7)", "x":10.5, "y":1}, + {"label":"K1B (B1,D0)", "x":11.5, "y":1}, + {"label":"K1C (B1,D1)", "x":12.5, "y":1}, + {"label":"K1E (B1,D3)", "x":13.5, "y":1, "w":1.5}, + {"label":"K1F (B1,D4)", "x":15, "y":1}, + {"label":"K20 (B2,B5)", "x":0, "y":2, "w":1.75}, + {"label":"K21 (B2,B6)", "x":1.75, "y":2}, + {"label":"K22 (B2,B7)", "x":2.75, "y":2}, + {"label":"K23 (B2,C0)", "x":3.75, "y":2}, + {"label":"K24 (B2,C1)", "x":4.75, "y":2}, + {"label":"K25 (B2,C2)", "x":5.75, "y":2}, + {"label":"K26 (B2,C3)", "x":6.75, "y":2}, + {"label":"K27 (B2,C4)", "x":7.75, "y":2}, + {"label":"K28 (B2,C5)", "x":8.75, "y":2}, + {"label":"K29 (B2,C6)", "x":9.75, "y":2}, + {"label":"K2A (B2,C7)", "x":10.75, "y":2}, + {"label":"K2B (B2,D0)", "x":11.75, "y":2}, + {"label":"K2D (B2,D2)", "x":12.75, "y":2, "w":2.25}, + {"label":"K2F (B2,D4)", "x":15, "y":2}, + {"label":"K30 (B3,B5)", "x":0, "y":3, "w":2.25}, + {"label":"K32 (B3,B7)", "x":2.25, "y":3}, + {"label":"K33 (B3,C0)", "x":3.25, "y":3}, + {"label":"K34 (B3,C1)", "x":4.25, "y":3}, + {"label":"K35 (B3,C2)", "x":5.25, "y":3}, + {"label":"K36 (B3,C3)", "x":6.25, "y":3}, + {"label":"K37 (B3,C4)", "x":7.25, "y":3}, + {"label":"K38 (B3,C5)", "x":8.25, "y":3}, + {"label":"K39 (B3,C6)", "x":9.25, "y":3}, + {"label":"K3A (B3,C7)", "x":10.25, "y":3}, + {"label":"K3B (B3,D0)", "x":11.25, "y":3}, + {"label":"K3C (B3,D1)", "x":12.25, "y":3, "w":1.75}, + {"label":"K3E (B3,D3)", "x":14, "y":3}, + {"label":"K3F (B3,D4)", "x":15, "y":3}, + {"label":"K40 (B4,B5)", "x":0, "y":4, "w":1.5}, + {"label":"K41 (B4,B6)", "x":1.5, "y":4}, + {"label":"K42 (B4,B7)", "x":2.5, "y":4, "w":1.5}, + {"label":"K46 (B4,C3)", "x":4, "y":4, "w":7}, + {"label":"K4B (B4,D0)", "x":11, "y":4, "w":1.5}, + {"label":"K4C (B4,D1)", "x":13, "y":4}, + {"label":"K4E (B4,D3)", "x":14, "y":4}, + {"label":"K4F (B4,D4)", "x":15, "y":4} + ] + } + } + ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/" +} diff --git a/keyboards/tiger910/keymaps/default/keymap.c b/keyboards/tiger910/keymaps/default/keymap.c new file mode 100644 index 000000000000..5896a6913c53 --- /dev/null +++ b/keyboards/tiger910/keymaps/default/keymap.c @@ -0,0 +1,28 @@ +/* Copyright 2021 Weirdo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_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_SPC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_SPC, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_SPC, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + +}; + diff --git a/keyboards/tiger910/keymaps/via/keymap.c b/keyboards/tiger910/keymaps/via/keymap.c new file mode 100644 index 000000000000..051796e3def5 --- /dev/null +++ b/keyboards/tiger910/keymaps/via/keymap.c @@ -0,0 +1,53 @@ +/* Copyright 2021 Weirdo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_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_SPC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_SPC, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_SPC, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_SPC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_SPC, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_SPC, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [2] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_SPC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_SPC, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_SPC, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + + [3] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_SPC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_SPC, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_SPC, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + +}; + diff --git a/keyboards/tiger910/keymaps/via/rules.mk b/keyboards/tiger910/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/tiger910/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/tiger910/readme.md b/keyboards/tiger910/readme.md new file mode 100644 index 000000000000..ed14a307d357 --- /dev/null +++ b/keyboards/tiger910/readme.md @@ -0,0 +1,15 @@ +# Tiger910 + +![Tiger910](https://www.hualigs.cn/image/60272570d2764.jpg) + +A 65% keyboard + +* Keyboard Maintainer: [Weirdo](https://weirdo-f.github.io)(https://github.com/1248314361) +* Hardware Supported: Tiger910 +* Hardware Availability: Not yet + +Make example for this keyboard (after setting up your build environment): + + make tiger910: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/tiger910/rules.mk b/keyboards/tiger910/rules.mk new file mode 100644 index 000000000000..0ce9fdda81c6 --- /dev/null +++ b/keyboards/tiger910/rules.mk @@ -0,0 +1,20 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# 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 = yes # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +SLEEP_LED_ENABLE = yes diff --git a/keyboards/tiger910/tiger910.c b/keyboards/tiger910/tiger910.c new file mode 100644 index 000000000000..d0964d9be90c --- /dev/null +++ b/keyboards/tiger910/tiger910.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Weirdo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "tiger910.h" diff --git a/keyboards/tiger910/tiger910.h b/keyboards/tiger910/tiger910.h new file mode 100644 index 000000000000..529c12fc5ee1 --- /dev/null +++ b/keyboards/tiger910/tiger910.h @@ -0,0 +1,33 @@ +/* Copyright 2021 Weirdo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + 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, K1E, K1F, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2F, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, K3F, \ + K40, K41, K42, K46, K4B, K4C, K4E, K4F \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, K0E, KC_NO }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KC_NO, K1E, K1F }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, KC_NO, K2F }, \ + { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KC_NO, K3E, K3F }, \ + { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, KC_NO, K4B, K4C, KC_NO, K4E, K4F }, \ +} diff --git a/keyboards/tkc/candybar/lefty/config.h b/keyboards/tkc/candybar/lefty/config.h index 0f789a7b6649..ba5c0b0778a6 100644 --- a/keyboards/tkc/candybar/lefty/config.h +++ b/keyboards/tkc/candybar/lefty/config.h @@ -80,26 +80,6 @@ //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - // #define WS2812_LED_N 2 // #define RGBLED_NUM WS2812_LED_N // #define WS2812_TIM_N 2 diff --git a/keyboards/tkc/candybar/lefty/info.json b/keyboards/tkc/candybar/lefty/info.json index 1ef3dcd54a88..553ce6d0217a 100644 --- a/keyboards/tkc/candybar/lefty/info.json +++ b/keyboards/tkc/candybar/lefty/info.json @@ -2,8 +2,6 @@ "keyboard_name": "TKC Candybar", "url": "", "maintainer": "terrymathews", - "width": 17, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/tkc/candybar/lefty/lefty.c b/keyboards/tkc/candybar/lefty/lefty.c index 920811b83360..6bda3805c7ed 100644 --- a/keyboards/tkc/candybar/lefty/lefty.c +++ b/keyboards/tkc/candybar/lefty/lefty.c @@ -15,7 +15,3 @@ */ #include "lefty.h" - -void matrix_init_kb(void) { - matrix_init_user(); -} diff --git a/keyboards/tkc/candybar/lefty/rules.mk b/keyboards/tkc/candybar/lefty/rules.mk index 8e05f0643ca9..9f2ae0857006 100644 --- a/keyboards/tkc/candybar/lefty/rules.mk +++ b/keyboards/tkc/candybar/lefty/rules.mk @@ -7,15 +7,14 @@ BOOTLOADER = stm32-dfu # Build Options # comment out to disable the options. # -# EXTRAFLAGS+=-flto +# LTO_ENABLE = yes LTO_ENABLE = yes BACKLIGHT_ENABLE = no -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover AUDIO_ENABLE = no RGBLIGHT_ENABLE = no diff --git a/keyboards/tkc/candybar/righty/config.h b/keyboards/tkc/candybar/righty/config.h index 4c269c2997fd..47e3985ff3f2 100644 --- a/keyboards/tkc/candybar/righty/config.h +++ b/keyboards/tkc/candybar/righty/config.h @@ -80,26 +80,6 @@ //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - // #define WS2812_LED_N 2 // #define RGBLED_NUM WS2812_LED_N // #define WS2812_TIM_N 2 diff --git a/keyboards/tkc/candybar/righty/info.json b/keyboards/tkc/candybar/righty/info.json index 81dc4f8ec56f..8e54afb4312d 100644 --- a/keyboards/tkc/candybar/righty/info.json +++ b/keyboards/tkc/candybar/righty/info.json @@ -2,8 +2,6 @@ "keyboard_name": "TKC Candybar", "url": "", "maintainer": "terrymathews", - "width": 17, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/tkc/candybar/righty/rules.mk b/keyboards/tkc/candybar/righty/rules.mk index 8e05f0643ca9..9f2ae0857006 100644 --- a/keyboards/tkc/candybar/righty/rules.mk +++ b/keyboards/tkc/candybar/righty/rules.mk @@ -7,15 +7,14 @@ BOOTLOADER = stm32-dfu # Build Options # comment out to disable the options. # -# EXTRAFLAGS+=-flto +# LTO_ENABLE = yes LTO_ENABLE = yes BACKLIGHT_ENABLE = no -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover AUDIO_ENABLE = no RGBLIGHT_ENABLE = no diff --git a/keyboards/tkc/godspeed75/config.h b/keyboards/tkc/godspeed75/config.h index 93604a9a6fbb..f50d4c638c36 100644 --- a/keyboards/tkc/godspeed75/config.h +++ b/keyboards/tkc/godspeed75/config.h @@ -80,26 +80,6 @@ //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - #define RGB_DI_PIN A13 #define RGBLED_NUM 14 #define RGBLIGHT_ANIMATIONS diff --git a/keyboards/tkc/godspeed75/info.json b/keyboards/tkc/godspeed75/info.json index 84c9df16431c..8a4415e903c3 100644 --- a/keyboards/tkc/godspeed75/info.json +++ b/keyboards/tkc/godspeed75/info.json @@ -2,11 +2,9 @@ "keyboard_name": "TKC GodSpeed75", "url": "", "maintainer": "terrymathews", - "width": 16, - "height": 6, "layouts": { "LAYOUT": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, {"label":"F2", "x":2, "y":0}, {"label":"F3", "x":3, "y":0}, {"label":"F4", "x":4, "y":0}, {"label":"F5", "x":5, "y":0}, {"label":"F6", "x":6, "y":0}, {"label":"F7", "x":7, "y":0}, {"label":"F8", "x":8, "y":0}, {"label":"F9", "x":9, "y":0}, {"label":"F10", "x":10, "y":0}, {"label":"F11", "x":11, "y":0}, {"label":"F12", "x":12, "y":0}, {"label":"PrtSc", "x":13, "y":0}, {"label":"Scroll Lock", "x":14, "y":0}, {"label":"Pause", "x":15, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"@", "x":2, "y":1}, {"label":"#", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"x":13, "y":1}, {"label":"BkSp", "x":14, "y":1}, {"label":"PgUp", "x":15, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"PgDn", "x":15, "y":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"\"", "x":11.75, "y":3}, {"label":"Enter", "x":12.75, "y":3, "w":2.25}, {"label":"Insert", "x":15, "y":3}, {"label":"Shift", "x":0, "y":4, "w":2.25}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"label":"\u2191", "x":14, "y":4}, {"label":"Delete", "x":15, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.5}, {"label":"Alt", "x":2.25, "y":5, "w":1.25}, {"x":3.5, "y":5, "w":6.25}, {"label":"MO(1)", "x":9.75, "y":5, "w":1.25}, {"label":"Ctrl", "x":11, "y":5, "w":1.25}, {"label":"\u2190", "x":13, "y":5}, {"label":"\u2193", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}] } } -} \ No newline at end of file +} diff --git a/keyboards/tkc/godspeed75/rules.mk b/keyboards/tkc/godspeed75/rules.mk index 12ce2905dcd7..6fb3239da9db 100644 --- a/keyboards/tkc/godspeed75/rules.mk +++ b/keyboards/tkc/godspeed75/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output # Enter lower-power sleep mode when on the ChibiOS idle thread diff --git a/keyboards/tkc/m0lly/info.json b/keyboards/tkc/m0lly/info.json index d7a64a0e625c..fab1f500d03f 100644 --- a/keyboards/tkc/m0lly/info.json +++ b/keyboards/tkc/m0lly/info.json @@ -2,8 +2,6 @@ "keyboard_name": "TKC M0LLY", "url": "", "maintainer": "qmk", - "width": 19.5, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/tkc/m0lly/keymaps/default/keymap.c b/keyboards/tkc/m0lly/keymaps/default/keymap.c index 03f07aff40b7..bb065fa239dd 100644 --- a/keyboards/tkc/m0lly/keymaps/default/keymap.c +++ b/keyboards/tkc/m0lly/keymaps/default/keymap.c @@ -67,8 +67,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -#ifdef OLED_DRIVER_ENABLE -void oled_task_user(void) { +#ifdef OLED_ENABLE +bool oled_task_user(void) { oled_write_P(PSTR("M0lly\n"),false); // Layer status @@ -91,5 +91,7 @@ void oled_task_user(void) { oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); + + return false; } -#endif \ No newline at end of file +#endif diff --git a/keyboards/tkc/m0lly/keymaps/via/keymap.c b/keyboards/tkc/m0lly/keymaps/via/keymap.c index 4dd35169d4aa..40f75b45792d 100644 --- a/keyboards/tkc/m0lly/keymaps/via/keymap.c +++ b/keyboards/tkc/m0lly/keymaps/via/keymap.c @@ -85,8 +85,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -#ifdef OLED_DRIVER_ENABLE -void oled_task_user(void) { +#ifdef OLED_ENABLE +bool oled_task_user(void) { oled_write_P(PSTR("M0lly\n"),false); // Layer Status @@ -115,5 +115,7 @@ void oled_task_user(void) { oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); + + return false; } #endif diff --git a/keyboards/tkc/m0lly/rules.mk b/keyboards/tkc/m0lly/rules.mk index 01afbdd12f5a..d6332a0035f1 100644 --- a/keyboards/tkc/m0lly/rules.mk +++ b/keyboards/tkc/m0lly/rules.mk @@ -7,17 +7,15 @@ BOOTLOADER = qmk-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/tkc/osav2/config.h b/keyboards/tkc/osav2/config.h index aaac1a0a900a..5622621e2b8a 100644 --- a/keyboards/tkc/osav2/config.h +++ b/keyboards/tkc/osav2/config.h @@ -123,59 +123,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -194,26 +141,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ //#define BOOTMAGIC_LITE_ROW 0 //#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/tkc/osav2/info.json b/keyboards/tkc/osav2/info.json index 5a615521261c..21c45805ce6e 100644 --- a/keyboards/tkc/osav2/info.json +++ b/keyboards/tkc/osav2/info.json @@ -2,8 +2,6 @@ "keyboard_name": "TKC OSA v2", "url": "", "maintainer": "qmk", - "width": 18.25, - "height": 5, "layouts": { "LAYOUT_default_ansi": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"~", "x":1.25, "y":0}, {"label":"!", "x":2.25, "y":0}, {"label":"@", "x":3.25, "y":0}, {"label":"#", "x":4.25, "y":0}, {"label":"$", "x":5.25, "y":0}, {"label":"%", "x":6.25, "y":0}, {"label":"^", "x":7.25, "y":0}, {"label":"&", "x":10.25, "y":0}, {"label":"*", "x":11.25, "y":0}, {"label":"(", "x":12.25, "y":0}, {"label":")", "x":13.25, "y":0}, {"label":"_", "x":14.25, "y":0}, {"label":"+", "x":15.25, "y":0}, {"label":"Backspace", "x":16.25, "y":0, "w":2}, {"label":"Page Up", "x":0, "y":1}, {"label":"Tab", "x":1.25, "y":1, "w":1.5}, {"label":"Q", "x":2.75, "y":1}, {"label":"W", "x":3.75, "y":1}, {"label":"E", "x":4.75, "y":1}, {"label":"R", "x":5.75, "y":1}, {"label":"T", "x":6.75, "y":1}, {"label":"Y", "x":9.75, "y":1}, {"label":"U", "x":10.75, "y":1}, {"label":"I", "x":11.75, "y":1}, {"label":"O", "x":12.75, "y":1}, {"label":"P", "x":13.75, "y":1}, {"label":"{", "x":14.75, "y":1}, {"label":"}", "x":15.75, "y":1}, {"label":"|", "x":16.75, "y":1, "w":1.5}, {"label":"Page Down", "x":0, "y":2}, {"label":"Caps Lock", "x":1.25, "y":2, "w":1.75}, {"label":"A", "x":3, "y":2}, {"label":"S", "x":4, "y":2}, {"label":"D", "x":5, "y":2}, {"label":"F", "x":6, "y":2}, {"label":"G", "x":7, "y":2}, {"label":"H", "x":10, "y":2}, {"label":"J", "x":11, "y":2}, {"label":"K", "x":12, "y":2}, {"label":"L", "x":13, "y":2}, {"label":":", "x":14, "y":2}, {"label":"\"", "x":15, "y":2}, {"label":"Enter", "x":16, "y":2, "w":2.25}, {"label":"Shift", "x":1.25, "y":3, "w":2.25}, {"label":"Z", "x":3.5, "y":3}, {"label":"X", "x":4.5, "y":3}, {"label":"C", "x":5.5, "y":3}, {"label":"V", "x":6.5, "y":3}, {"label":"B", "x":7.5, "y":3}, {"label":"B", "x":9.5, "y":3}, {"label":"N", "x":10.5, "y":3}, {"label":"M", "x":11.5, "y":3}, {"label":"<", "x":12.5, "y":3}, {"label":">", "x":13.5, "y":3}, {"label":"?", "x":14.5, "y":3}, {"label":"Shift", "x":15.5, "y":3, "w":2.75}, {"label":"Ctrl", "x":1.25, "y":4, "w":1.5}, {"label":"Win", "x":4.25, "y":4, "w":1.5}, {"x":5.75, "y":4, "w":2.25}, {"label":"Fn", "x":8, "y":4}, {"x":9.5, "y":4, "w":2.75}, {"label":"Alt", "x":12.25, "y":4, "w":1.5}, {"label":"Ctrl", "x":16.75, "y":4, "w":1.5}] diff --git a/keyboards/tkc/osav2/rules.mk b/keyboards/tkc/osav2/rules.mk index 7185a632cfb9..19c8bbfffc15 100644 --- a/keyboards/tkc/osav2/rules.mk +++ b/keyboards/tkc/osav2/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LTO_ENABLE = yes # Reduces compile size diff --git a/keyboards/tkc/portico/config.h b/keyboards/tkc/portico/config.h index 4a7da833f79c..35d615a023a4 100644 --- a/keyboards/tkc/portico/config.h +++ b/keyboards/tkc/portico/config.h @@ -45,24 +45,24 @@ along with this program. If not, see . # define RGB_MATRIX_LED_FLUSH_LIMIT 26 # define DEBOUNCE 3 # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended # define RGB_MATRIX_KEYPRESSES -# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -# define DISABLE_RGB_MATRIX_BAND_SAT -# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -# define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -# define DISABLE_RGB_MATRIX_SPLASH -# define DISABLE_RGB_MATRIX_MULTISPLASH -# define DISABLE_RGB_MATRIX_SOLID_SPLASH -# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH -# define DISABLE_RGB_MATRIX_DIGITAL_RAIN +# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# undef ENABLE_RGB_MATRIX_BAND_SAT +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# undef ENABLE_RGB_MATRIX_SPLASH +# undef ENABLE_RGB_MATRIX_MULTISPLASH +# undef ENABLE_RGB_MATRIX_SOLID_SPLASH +# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH +# undef ENABLE_RGB_MATRIX_DIGITAL_RAIN # define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 # define DRIVER_ADDR_1 0x74 # define DRIVER_ADDR_2 0x77 @@ -70,4 +70,62 @@ along with this program. If not, see . # define DRIVER_1_LED_TOTAL 36 # define DRIVER_2_LED_TOTAL 31 # define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) + +#else +// IS31FL3731 driver +#define DRIVER_COUNT 2 +#define DRIVER_LED_TOTAL 67 + +#define RGB_BACKLIGHT_ENABLED 1 + +// This conditionally compiles the backlight code for Dawn60 specifics +#define RGB_BACKLIGHT_PORTICO + +// disable backlight when USB suspended (PC sleep/hibernate/shutdown) +#define RGB_BACKLIGHT_DISABLE_WHEN_USB_SUSPENDED 1 + +// disable backlight after timeout in minutes, 0 = no timeout +#define RGB_BACKLIGHT_DISABLE_AFTER_TIMEOUT 0 + +// the default brightness +#define RGB_BACKLIGHT_BRIGHTNESS 255 + +// the default effect (RGB test) +#define RGB_BACKLIGHT_EFFECT 255 + +// the default effect speed (0-3) +#define RGB_BACKLIGHT_EFFECT_SPEED 0 + +// the default color1 and color2 +#define RGB_BACKLIGHT_COLOR_1 { .h = 0, .s = 255 } +#define RGB_BACKLIGHT_COLOR_2 { .h = 127, .s = 255 } + +#define RGB_BACKLIGHT_USE_SPLIT_BACKSPACE 0 +#define RGB_BACKLIGHT_USE_SPLIT_LEFT_SHIFT 0 +#define RGB_BACKLIGHT_USE_SPLIT_RIGHT_SHIFT 0 +#define RGB_BACKLIGHT_USE_7U_SPACEBAR 0 +#define RGB_BACKLIGHT_USE_ISO_ENTER 0 +#define RGB_BACKLIGHT_DISABLE_HHKB_BLOCKER_LEDS 0 +#define RGB_BACKLIGHT_CAPS_LOCK_INDICATOR { .color = { .h = 0, .s = 0 }, .index = 255 } +#define RGB_BACKLIGHT_LAYER_1_INDICATOR { .color = { .h = 0, .s = 0 }, .index = 255 } +#define RGB_BACKLIGHT_LAYER_2_INDICATOR { .color = { .h = 0, .s = 0 }, .index = 255 } +#define RGB_BACKLIGHT_LAYER_3_INDICATOR { .color = { .h = 0, .s = 0 }, .index = 255 } + +// These define which keys in the matrix are alphas/mods +// Used for backlight effects so colors are different for +// alphas vs. mods +// Each value is for a row, bit 0 is column 0 +// Alpha=0 Mod=1 +#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_0 0b0110000000000001 +#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_1 0b0110000000000001 +#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_2 0b0111000000000001 +#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_3 0b0111000000000001 +#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_4 0b1111111111111111 + +// Backlight config starts after VIA's EEPROM usage, +// dynamic keymaps start after this. +#define VIA_EEPROM_CUSTOM_CONFIG_SIZE 31 + +// VIA lighting is handled by the keyboard-level code +#define VIA_CUSTOM_LIGHTING_ENABLE #endif diff --git a/keyboards/tkc/portico/info.json b/keyboards/tkc/portico/info.json index 59a5e420dac2..4fd61be67433 100644 --- a/keyboards/tkc/portico/info.json +++ b/keyboards/tkc/portico/info.json @@ -2,8 +2,6 @@ "keyboard_name": "TKC Portico", "url": "", "maintainer": "TerryMathews", - "width": 16, - "height": 5, "layout_aliases": { "LAYOUT_all": "LAYOUT_65_ansi_blocker", }, diff --git a/keyboards/tkc/portico/keymaps/default/keymap.c b/keyboards/tkc/portico/keymaps/default/keymap.c index bbc68c3b9356..34420670117e 100644 --- a/keyboards/tkc/portico/keymaps/default/keymap.c +++ b/keyboards/tkc/portico/keymaps/default/keymap.c @@ -17,6 +17,14 @@ along with this program. If not, see . #include QMK_KEYBOARD_H +// RGB-specific keys: +// EF_INC, EF_DEC, // next/previous backlight effect +// H1_INC, H1_DEC, // Color 1 hue increase/decrease +// S1_INC, S1_DEC, // Color 1 saturation increase/decrease +// H2_INC, H2_DEC, // Color 2 hue increase/decrease +// S2_INC, S2_DEC, // Color 2 saturation increase/decrease +// BR_INC, BR_DEC, // backlight brightness increase/decrease + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_65_ansi_blocker( KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, @@ -25,13 +33,23 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), +#ifdef RGB_BACKLIGHT_PORTICO + [1] = LAYOUT_65_ansi_blocker( + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME, + _______, EF_INC, EF_DEC, BR_INC, BR_DEC, H1_INC, H1_DEC, S1_INC, S1_DEC, _______, KC_PSCR, KC_SLCK, KC_PAUS, RESET, KC_PGUP, + KC_CAPS, _______, _______, _______, _______, H2_INC, H2_DEC, S2_INC, S2_DEC, _______, _______, _______, _______, KC_PGDN, + KC_LSFT, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, KC_VOLU, KC_MUTE, + _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT + ), +#else [1] = LAYOUT_65_ansi_blocker( KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, KC_PSCR, KC_SLCK, KC_PAUS, RESET, KC_PGUP, - KC_CAPS, RGB_SPI, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, KC_PGDN, + KC_CAPS, RGB_SPI, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGDN, KC_LSFT, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, KC_VOLU, KC_MUTE, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT ), +#endif [2] = LAYOUT_65_ansi_blocker( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/tkc/portico/keymaps/via/keymap.c b/keyboards/tkc/portico/keymaps/via/keymap.c index bbc68c3b9356..34420670117e 100644 --- a/keyboards/tkc/portico/keymaps/via/keymap.c +++ b/keyboards/tkc/portico/keymaps/via/keymap.c @@ -17,6 +17,14 @@ along with this program. If not, see . #include QMK_KEYBOARD_H +// RGB-specific keys: +// EF_INC, EF_DEC, // next/previous backlight effect +// H1_INC, H1_DEC, // Color 1 hue increase/decrease +// S1_INC, S1_DEC, // Color 1 saturation increase/decrease +// H2_INC, H2_DEC, // Color 2 hue increase/decrease +// S2_INC, S2_DEC, // Color 2 saturation increase/decrease +// BR_INC, BR_DEC, // backlight brightness increase/decrease + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_65_ansi_blocker( KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, @@ -25,13 +33,23 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), +#ifdef RGB_BACKLIGHT_PORTICO + [1] = LAYOUT_65_ansi_blocker( + KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME, + _______, EF_INC, EF_DEC, BR_INC, BR_DEC, H1_INC, H1_DEC, S1_INC, S1_DEC, _______, KC_PSCR, KC_SLCK, KC_PAUS, RESET, KC_PGUP, + KC_CAPS, _______, _______, _______, _______, H2_INC, H2_DEC, S2_INC, S2_DEC, _______, _______, _______, _______, KC_PGDN, + KC_LSFT, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, KC_VOLU, KC_MUTE, + _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT + ), +#else [1] = LAYOUT_65_ansi_blocker( KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, KC_PSCR, KC_SLCK, KC_PAUS, RESET, KC_PGUP, - KC_CAPS, RGB_SPI, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, KC_PGDN, + KC_CAPS, RGB_SPI, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGDN, KC_LSFT, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, KC_VOLU, KC_MUTE, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT ), +#endif [2] = LAYOUT_65_ansi_blocker( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/tkc/portico/portico.c b/keyboards/tkc/portico/portico.c index e4fd7410786a..0e2b4b2499af 100644 --- a/keyboards/tkc/portico/portico.c +++ b/keyboards/tkc/portico/portico.c @@ -19,7 +19,7 @@ along with this program. If not, see . #ifdef RGB_MATRIX_ENABLE -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { { 0, C2_1, C3_1, C4_1 }, { 0, C1_1, C3_2, C4_2 }, { 0, C1_2, C2_2, C4_3 }, @@ -136,4 +136,4 @@ void rgb_matrix_indicators_kb(void) { rgb_matrix_driver.flush(); } } -#endif +#endif \ No newline at end of file diff --git a/keyboards/tkc/portico/portico.h b/keyboards/tkc/portico/portico.h index 7add429432e5..71b28074ddb5 100644 --- a/keyboards/tkc/portico/portico.h +++ b/keyboards/tkc/portico/portico.h @@ -18,6 +18,10 @@ along with this program. If not, see . #pragma once #include "quantum.h" +#ifdef RGB_BACKLIGHT_PORTICO +#include "keyboards/wilba_tech/wt_rgb_backlight_keycodes.h" +#include "via.h" +#endif #define XXX KC_NO diff --git a/keyboards/tkc/portico/rules.mk b/keyboards/tkc/portico/rules.mk index 1cbcd95d6ab0..9b2d85b75911 100644 --- a/keyboards/tkc/portico/rules.mk +++ b/keyboards/tkc/portico/rules.mk @@ -7,20 +7,26 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = 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 -RGB_MATRIX_ENABLE = yes # Use RGB matrix +RGB_MATRIX_ENABLE = no RGB_MATRIX_DRIVER = IS31FL3731 +CIE1931_CURVE = yes + +# project specific files +SRC += keyboards/wilba_tech/wt_main.c \ + keyboards/wilba_tech/wt_rgb_backlight.c \ + quantum/color.c \ + drivers/led/issi/is31fl3731.c + +QUANTUM_LIB_SRC += i2c_master.c LAYOUTS = 65_ansi_blocker diff --git a/keyboards/tkc/tkc1800/config.h b/keyboards/tkc/tkc1800/config.h index 82d599c55f71..02fccd82ff3f 100644 --- a/keyboards/tkc/tkc1800/config.h +++ b/keyboards/tkc/tkc1800/config.h @@ -96,54 +96,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -161,23 +113,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 diff --git a/keyboards/tkc/tkc1800/info.json b/keyboards/tkc/tkc1800/info.json index 3e3ab1484d80..deac3447f1ec 100644 --- a/keyboards/tkc/tkc1800/info.json +++ b/keyboards/tkc/tkc1800/info.json @@ -2,11 +2,8 @@ "keyboard_name": "TKC1800", "url": "", "maintainer": "qmk", - "width": 19.5, - "height": 7.25, "layouts": { "LAYOUT": { - "key_count": 107, "layout": [ { "label": "Esc", "x": 0, "y": 0 }, { "label": "F1", "x": 1.25, "y": 0 }, diff --git a/keyboards/tkc/tkc1800/keymaps/default/keymap.c b/keyboards/tkc/tkc1800/keymaps/default/keymap.c index 4f4c7f8e9cdc..29a19e680d42 100644 --- a/keyboards/tkc/tkc1800/keymaps/default/keymap.c +++ b/keyboards/tkc/tkc1800/keymaps/default/keymap.c @@ -13,7 +13,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ - + #include QMK_KEYBOARD_H //Layers @@ -79,8 +79,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -#ifdef OLED_DRIVER_ENABLE -void oled_task_user(void) { +#ifdef OLED_ENABLE +bool oled_task_user(void) { oled_write_P(PSTR("TKC1800\n"),false); // Host Keyboard Layer Status oled_write_P(PSTR("Layer: "), false); @@ -102,5 +102,7 @@ void oled_task_user(void) { oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); + + return false; } -#endif \ No newline at end of file +#endif diff --git a/keyboards/tkc/tkc1800/keymaps/smt/keymap.c b/keyboards/tkc/tkc1800/keymaps/smt/keymap.c index 9b6ad80d3a63..9eceaa5bda5b 100644 --- a/keyboards/tkc/tkc1800/keymaps/smt/keymap.c +++ b/keyboards/tkc/tkc1800/keymaps/smt/keymap.c @@ -144,8 +144,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return true; } -#ifdef OLED_DRIVER_ENABLE -void oled_task_user(void) { +#ifdef OLED_ENABLE +bool oled_task_user(void) { oled_write_P(PSTR("TKC1800\n"),false); // Host Keyboard Layer Status oled_write_P(PSTR("Layer: "), false); @@ -173,5 +173,7 @@ void oled_task_user(void) { oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); + + return false; } -#endif \ No newline at end of file +#endif diff --git a/keyboards/tkc/tkc1800/keymaps/via/keymap.c b/keyboards/tkc/tkc1800/keymaps/via/keymap.c index 55c2874c6291..74ab1149f668 100644 --- a/keyboards/tkc/tkc1800/keymaps/via/keymap.c +++ b/keyboards/tkc/tkc1800/keymaps/via/keymap.c @@ -97,8 +97,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -#ifdef OLED_DRIVER_ENABLE -void oled_task_user(void) { +#ifdef OLED_ENABLE +bool oled_task_user(void) { oled_write_P(PSTR("TKC1800\n"),false); // Host Keyboard Layer Status oled_write_P(PSTR("Layer: "), false); @@ -126,5 +126,7 @@ void oled_task_user(void) { oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); + + return false; } -#endif \ No newline at end of file +#endif diff --git a/keyboards/tkc/tkc1800/keymaps/wkl/keymap.c b/keyboards/tkc/tkc1800/keymaps/wkl/keymap.c index 3c65b61d1178..9349af7bcd20 100644 --- a/keyboards/tkc/tkc1800/keymaps/wkl/keymap.c +++ b/keyboards/tkc/tkc1800/keymaps/wkl/keymap.c @@ -13,7 +13,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ - + #include QMK_KEYBOARD_H //Layers @@ -61,8 +61,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -#ifdef OLED_DRIVER_ENABLE -void oled_task_user(void) { +#ifdef OLED_ENABLE +bool oled_task_user(void) { oled_write_P(PSTR("TKC1800\n"),false); // Host Keyboard Layer Status oled_write_P(PSTR("Layer: "), false); @@ -84,5 +84,7 @@ void oled_task_user(void) { oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); + + return false; } -#endif \ No newline at end of file +#endif diff --git a/keyboards/tkc/tkc1800/keymaps/yanfali/keymap.c b/keyboards/tkc/tkc1800/keymaps/yanfali/keymap.c index bbffc2d20b0d..2ebfe33c3daa 100644 --- a/keyboards/tkc/tkc1800/keymaps/yanfali/keymap.c +++ b/keyboards/tkc/tkc1800/keymaps/yanfali/keymap.c @@ -13,7 +13,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ - + #include QMK_KEYBOARD_H //Layers @@ -61,8 +61,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -#ifdef OLED_DRIVER_ENABLE -void oled_task_user(void) { +#ifdef OLED_ENABLE +bool oled_task_user(void) { oled_write_P(PSTR("TKC1800\n"),false); // Host Keyboard Layer Status oled_write_P(PSTR("Layer: "), false); @@ -84,5 +84,7 @@ void oled_task_user(void) { oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); + + return false; } -#endif \ No newline at end of file +#endif diff --git a/keyboards/tkc/tkc1800/keymaps/yanfali/rules.mk b/keyboards/tkc/tkc1800/keymaps/yanfali/rules.mk index b595964f7efa..517f469b6d70 100644 --- a/keyboards/tkc/tkc1800/keymaps/yanfali/rules.mk +++ b/keyboards/tkc/tkc1800/keymaps/yanfali/rules.mk @@ -1 +1 @@ -OLED_DRIVER_ENABLE = no +OLED_ENABLE = no diff --git a/keyboards/tkc/tkc1800/rules.mk b/keyboards/tkc/tkc1800/rules.mk index fa90e99807d2..219025cddd47 100644 --- a/keyboards/tkc/tkc1800/rules.mk +++ b/keyboards/tkc/tkc1800/rules.mk @@ -2,32 +2,21 @@ MCU = at90usb1286 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = qmk-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 -OLED_DRIVER_ENABLE = yes \ No newline at end of file +AUDIO_ENABLE = no # Audio output +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 diff --git a/keyboards/tkc/tkl_ab87/info.json b/keyboards/tkc/tkl_ab87/info.json index 478c064fbf2f..02142bd755d7 100644 --- a/keyboards/tkc/tkl_ab87/info.json +++ b/keyboards/tkc/tkl_ab87/info.json @@ -2,8 +2,6 @@ "keyboard_name": "TKC TKL A/B87", "url": "", "maintainer": "TerryMathews", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT_all": { "layout": [ @@ -100,4 +98,4 @@ {"label":"\u2192", "x":17.25, "y":5.5}] } } -} \ No newline at end of file +} diff --git a/keyboards/tkc/tkl_ab87/rules.mk b/keyboards/tkc/tkl_ab87/rules.mk index 1d60cf3c2880..7925b77717c9 100644 --- a/keyboards/tkc/tkl_ab87/rules.mk +++ b/keyboards/tkc/tkl_ab87/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/tkw/grandiceps/config.h b/keyboards/tkw/grandiceps/config.h index 93b6fd02f156..e51c9ab2235e 100644 --- a/keyboards/tkw/grandiceps/config.h +++ b/keyboards/tkw/grandiceps/config.h @@ -17,19 +17,17 @@ #include "config_common.h" - /* USB Device descriptor parameter */ #define VENDOR_ID 0xFEED #define PRODUCT_ID 0x7812 #define DEVICE_VER 0x0001 +#define MANUFACTURER tkw #define PRODUCT Grandiceps Split /* key matrix size */ #define MATRIX_ROWS 10 #define MATRIX_COLS 6 - - #define MATRIX_COL_PINS { B0, A7, A3, A5, A4, A2 } #define MATRIX_ROW_PINS { B12, A6, B13, B9, B8 } #define MATRIX_COL_PINS_RIGHT { B0, A7, A3, A5, A4, A2 } @@ -61,7 +59,6 @@ /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ #define DEBOUNCE 5 - /* disable these deprecated features by default */ #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION diff --git a/keyboards/tkw/grandiceps/info.json b/keyboards/tkw/grandiceps/info.json index 97fb2855dbba..7a4324ffdc01 100644 --- a/keyboards/tkw/grandiceps/info.json +++ b/keyboards/tkw/grandiceps/info.json @@ -2,9 +2,7 @@ "keyboard_name": "grandiceps", "url": "https://github.com/vattern/grandiceps", "maintainer": "vattern", - "manufacturer": "TKW", - "width": 16.5, - "height": 5.25, + "manufacturer": "tkw", "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/tkw/grandiceps/keymaps/default/keymap.c b/keyboards/tkw/grandiceps/keymaps/default/keymap.c index 53a2fd85cc11..e3de33616e38 100644 --- a/keyboards/tkw/grandiceps/keymaps/default/keymap.c +++ b/keyboards/tkw/grandiceps/keymaps/default/keymap.c @@ -35,7 +35,8 @@ enum custom_keycodes { KC_NXTWD, KC_LSTRT, KC_LEND, - KC_DLINE + KC_DLINE, + KC_TEAMS }; @@ -61,7 +62,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 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_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, XXXXXXX,KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, KC_TEAMS,KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_LGUI,KC_LALT,KC_LCTRL, KC_LOWER, KC_SPC, KC_ENT, KC_RAISE, KC_RCTRL, KC_RALT, KC_RGUI ), /* @@ -103,7 +104,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_LOWER] = LAYOUT( _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_F12, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_NUBS, _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE, _______, KC_EQL, KC_MINS, KC_PLUS, KC_LCBR, KC_RCBR, _______, _______, KC_LBRC, KC_RBRC, KC_SCLN, KC_COLN, KC_BSLS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ @@ -311,11 +312,23 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { unregister_code(KC_Z); } return false; + + case KC_TEAMS: + if (record->event.pressed) { + register_mods(mod_config(MOD_LCTL)); + register_mods(mod_config(MOD_LSFT)); + register_code(KC_M); + } else { + unregister_mods(mod_config(MOD_LCTL)); + unregister_mods(mod_config(MOD_LSFT)); + unregister_code(KC_M); + } + return false; } return true; } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE static void render_logo(void) { static const char PROGMEM my_logo[] = { // 'protea', 128x32px @@ -403,12 +416,13 @@ static void print_status_narrow(void) { oled_write_P(PSTR("\n\n"), false); } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { print_status_narrow(); } else { render_logo(); } + return false; } oled_rotation_t oled_init_user(oled_rotation_t rotation) { @@ -447,7 +461,7 @@ bool encoder_update_user(uint8_t index, bool clockwise){ switch (get_highest_layer(layer_state)) { case _QWERTY: // Scrolling with PageUp and PgDn. - if (clockwise) { + if (!clockwise) { tap_code16(KC_PGDN); } else { tap_code16(KC_PGUP); @@ -462,6 +476,7 @@ bool encoder_update_user(uint8_t index, bool clockwise){ break; } } + return true; } #endif diff --git a/keyboards/tkw/grandiceps/readme.md b/keyboards/tkw/grandiceps/readme.md index 894f1c8d7aad..57a6dac28d5a 100644 --- a/keyboards/tkw/grandiceps/readme.md +++ b/keyboards/tkw/grandiceps/readme.md @@ -8,12 +8,26 @@ ARM split keyboard with RGB underglow and encoders. * Hardware Supported: f411 blackpill * Hardware Availability: [grandiceps](https://github.com/vattern/grandiceps) +There are two versions of the Grandiceps. Please use the appropriate firmware for your board. + +* Revision 2 has I2C eeprom and support for a Pimoroni trackball. + Make example for this keyboard (after setting up your build environment): make tkw/grandiceps:default + make tkw/grandiceps/rev2:default Flashing example for this keyboard: make tkw/grandiceps:default:flash + make tkw/grandiceps/rev2:default:flash See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset buttons**: Hold down the BOOT0 button and then briefly press the NRST button on the BlackPill PCB. +* **Keycode in layout**: Press the key mapped to `RESET` if it is available diff --git a/keyboards/tkw/grandiceps/rev2/config.h b/keyboards/tkw/grandiceps/rev2/config.h new file mode 100644 index 000000000000..98b762087e84 --- /dev/null +++ b/keyboards/tkw/grandiceps/rev2/config.h @@ -0,0 +1,24 @@ +/* Copyright 2021 Thys de Wet + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#undef DEVICE_VER +#define DEVICE_VER 0x0002 +#undef PRODUCT +#define PRODUCT Grandiceps Split rev2 + +#define SPLIT_HAND_PIN B3 +#define EEPROM_I2C_24LC64 diff --git a/keyboards/tkw/grandiceps/rev2/rules.mk b/keyboards/tkw/grandiceps/rev2/rules.mk new file mode 100644 index 000000000000..3e82c4507efc --- /dev/null +++ b/keyboards/tkw/grandiceps/rev2/rules.mk @@ -0,0 +1,4 @@ +EEPROM_DRIVER = i2c + +POINTING_DEVICE_ENABLE = yes +POINTING_DEVICE_DRIVER = pimoroni_trackball diff --git a/keyboards/tkw/grandiceps/rules.mk b/keyboards/tkw/grandiceps/rules.mk index ca3435a19fc9..934e5830b8b3 100644 --- a/keyboards/tkw/grandiceps/rules.mk +++ b/keyboards/tkw/grandiceps/rules.mk @@ -7,24 +7,22 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow ENCODER_ENABLE = yes # Enable rotary encoder support -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output KEYBOARD_SHARED_EP = yes # Free up some extra endpoints - needed if console+mouse+extra SPLIT_KEYBOARD = yes SERIAL_DRIVER = usart -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 WS2812_DRIVER = pwm OPT_DEFS += -DSTM32_DMA_REQUIRED=TRUE diff --git a/keyboards/tkw/stoutgat/v1/info.json b/keyboards/tkw/stoutgat/v1/info.json index f66a54152d25..d649a48b5b87 100644 --- a/keyboards/tkw/stoutgat/v1/info.json +++ b/keyboards/tkw/stoutgat/v1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "stoutgat", "url": "https://github.com/vattern/stoutgat", "maintainer": "vattern", - "width": 16, - "height": 6, "layouts": { "LAYOUT_encoder": { "layout": [ diff --git a/keyboards/tkw/stoutgat/v1/rules.mk b/keyboards/tkw/stoutgat/v1/rules.mk index a9b6c4fc3012..528499439e65 100644 --- a/keyboards/tkw/stoutgat/v1/rules.mk +++ b/keyboards/tkw/stoutgat/v1/rules.mk @@ -5,23 +5,20 @@ MCU = atmega32a F_CPU = 16000000 # Bootloader selection -BOOTLOADER = USBasp +BOOTLOADER = usbasploader # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 ENCODER_ENABLE = yes LAYOUTS = 65_iso 65_ansi diff --git a/keyboards/tkw/stoutgat/v2/info.json b/keyboards/tkw/stoutgat/v2/info.json index 1138af0782de..6946e3e0bc24 100644 --- a/keyboards/tkw/stoutgat/v2/info.json +++ b/keyboards/tkw/stoutgat/v2/info.json @@ -2,8 +2,6 @@ "keyboard_name": "stoutgat/v2", "url": "https://github.com/vattern/stoutgatv2", "maintainer": "vattern", - "width": 17.25, - "height": 5, "layouts": { "LAYOUT_encoder": { "layout": [ diff --git a/keyboards/tkw/stoutgat/v2/rules.mk b/keyboards/tkw/stoutgat/v2/rules.mk index 587a17780a63..2a4380aa4e54 100644 --- a/keyboards/tkw/stoutgat/v2/rules.mk +++ b/keyboards/tkw/stoutgat/v2/rules.mk @@ -1,20 +1,17 @@ # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite KEYBOARD_SHARED_EP = yes # Free up some extra endpoints - needed if console+mouse+extra 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 RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow ENCODER_ENABLE = yes # Enable rotary encoder support -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output WS2812_DRIVER = pwm diff --git a/keyboards/tmo50/config.h b/keyboards/tmo50/config.h index 33d32eb0c307..4547fcf63ef5 100644 --- a/keyboards/tmo50/config.h +++ b/keyboards/tmo50/config.h @@ -111,54 +111,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -176,23 +128,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 diff --git a/keyboards/tmo50/info.json b/keyboards/tmo50/info.json index 751e766555be..c51636fb5ec5 100644 --- a/keyboards/tmo50/info.json +++ b/keyboards/tmo50/info.json @@ -2,8 +2,6 @@ "keyboard_name": "TMO50", "url": "", "maintainer": "funderburker", - "width": 15.25, - "height": 4, "layouts": { "LAYOUT_all": { "layout": [{"label":"", "x":0, "y":0}, {"label":"", "x":1.25, "y":0}, {"label":"", "x":2.25, "y":0}, {"label":"", "x":3.25, "y":0}, {"label":"", "x":4.25, "y":0}, {"label":"", "x":5.25, "y":0}, {"label":"", "x":6.25, "y":0}, {"label":"", "x":7.25, "y":0}, {"label":"", "x":8.25, "y":0}, {"label":"", "x":9.25, "y":0}, {"label":"", "x":10.25, "y":0}, {"label":"", "x":11.25, "y":0}, {"label":"", "x":12.25, "y":0}, {"label":"", "x":13.25, "y":0}, {"label":"", "x":14.25, "y":0}, {"x":0, "y":1}, {"label":"Ctrl", "x":1.25, "y":1, "w":1.25}, {"label":"", "x":2.5, "y":1}, {"label":"", "x":3.5, "y":1}, {"label":"", "x":4.5, "y":1}, {"label":"", "x":5.5, "y":1}, {"label":"", "x":6.5, "y":1}, {"label":"", "x":7.5, "y":1}, {"label":"", "x":8.5, "y":1}, {"label":"", "x":9.5, "y":1}, {"label":"", "x":10.5, "y":1}, {"label":"", "x":11.5, "y":1}, {"label":"", "x":12.5, "y":1}, {"label":"Enter", "x":13.5, "y":1, "w":1.75}, {"x":0, "y":2}, {"label":"Shift", "x":1.25, "y":2, "w":1.75}, {"label":"", "x":3, "y":2}, {"label":"", "x":4, "y":2}, {"label":"", "x":5, "y":2}, {"label":"", "x":6, "y":2}, {"label":"b", "x":7, "y":2}, {"label":"", "x":8, "y":2}, {"label":"m", "x":9, "y":2}, {"label":"", "x":10, "y":2}, {"label":"", "x":11, "y":2}, {"label":"", "x":12, "y":2}, {"label":"Shift", "x":13, "y":2, "w":1.25}, {"label":"", "x":14.25, "y":2}, {"x":0, "y":3}, {"label":"Alt", "x":2.75, "y":3}, {"label":"Win", "x":3.75, "y":3, "w":1.5}, {"label":"", "x":5.25, "y":3, "w":2.25}, {"label":"", "x":7.5, "y":3, "w":2.75}, {"label":"AltGr", "x":10.25, "y":3, "w":1.5}, {"label":"L3", "x":11.75, "y":3}] diff --git a/keyboards/tmo50/rules.mk b/keyboards/tmo50/rules.mk index 2809f82b4d42..07e72a97d3d5 100644 --- a/keyboards/tmo50/rules.mk +++ b/keyboards/tmo50/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/tmo50/tmo50.c b/keyboards/tmo50/tmo50.c index bad4319f11e7..80eb286f45c7 100644 --- a/keyboards/tmo50/tmo50.c +++ b/keyboards/tmo50/tmo50.c @@ -31,26 +31,6 @@ void matrix_init_kb(void) { matrix_init_user(); } -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} - layer_state_t layer_state_set_kb(layer_state_t state) { state = layer_state_set_user(state); diff --git a/keyboards/toad/config.h b/keyboards/toad/config.h index e4391437b668..793e740fa3e5 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/toad/info.json b/keyboards/toad/info.json index 17a37147ec89..5ef32af5c7d2 100644 --- a/keyboards/toad/info.json +++ b/keyboards/toad/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Toad", "url": "", "maintainer": "qmk", - "width": 15, - "height": 6.5, "layouts": { "LAYOUT_all": { - "key_count": 78, "layout": [ {"label":"K000", "x":0, "y":0}, {"label":"K001", "x":2, "y":0}, @@ -90,7 +87,6 @@ }, "LAYOUT_ansi_wk": { - "key_count": 74, "layout": [ {"label":"K000", "x":0, "y":0}, {"label":"K001", "x":2, "y":0}, @@ -170,7 +166,6 @@ }, "LAYOUT_ansi_wkl": { - "key_count": 71, "layout": [ {"label":"K000", "x":0, "y":0}, {"label":"K001", "x":2, "y":0}, @@ -247,7 +242,6 @@ }, "LAYOUT_iso_wk": { - "key_count": 75, "layout": [ {"label":"K000", "x":0, "y":0}, {"label":"K001", "x":2, "y":0}, @@ -328,7 +322,6 @@ }, "LAYOUT_iso_wkl": { - "key_count": 72, "layout": [ {"label":"K000", "x":0, "y":0}, {"label":"K001", "x":2, "y":0}, @@ -406,4 +399,3 @@ } } } - diff --git a/keyboards/toad/rules.mk b/keyboards/toad/rules.mk index 94733eeaf02c..84ae4b490b9f 100644 --- a/keyboards/toad/rules.mk +++ b/keyboards/toad/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -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 diff --git a/keyboards/tokyo60/info.json b/keyboards/tokyo60/info.json deleted file mode 100644 index 10d1bf093f15..000000000000 --- a/keyboards/tokyo60/info.json +++ /dev/null @@ -1,320 +0,0 @@ -{ - "keyboard_name": "Tokyo60", - "url": "https://tokyokeyboard.com/", - "maintainer": "qmk", - "width": 15, - "height": 5, - "layouts": { - "LAYOUT_60_hhkb": { - "layout": [{ - "label": "Esc", - "x": 0, - "y": 0 - }, - { - "label": "!", - "x": 1, - "y": 0 - }, - { - "label": "@", - "x": 2, - "y": 0 - }, - { - "label": "#", - "x": 3, - "y": 0 - }, - { - "label": "$", - "x": 4, - "y": 0 - }, - { - "label": "%", - "x": 5, - "y": 0 - }, - { - "label": "^", - "x": 6, - "y": 0 - }, - { - "label": "&", - "x": 7, - "y": 0 - }, - { - "label": "*", - "x": 8, - "y": 0 - }, - { - "label": "(", - "x": 9, - "y": 0 - }, - { - "label": ")", - "x": 10, - "y": 0 - }, - { - "label": "_", - "x": 11, - "y": 0 - }, - { - "label": "+", - "x": 12, - "y": 0 - }, - { - "label": "|", - "x": 13, - "y": 0 - }, - { - "label": "~", - "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": "Delete", - "x": 13.5, - "y": 1, - "w": 1.5 - }, - { - "label": "Control", - "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": 2.25 - }, - { - "label": "Z", - "x": 2.25, - "y": 3 - }, - { - "label": "X", - "x": 3.25, - "y": 3 - }, - { - "label": "C", - "x": 4.25, - "y": 3 - }, - { - "label": "V", - "x": 5.25, - "y": 3 - }, - { - "label": "B", - "x": 6.25, - "y": 3 - }, - { - "label": "N", - "x": 7.25, - "y": 3 - }, - { - "label": "M", - "x": 8.25, - "y": 3 - }, - { - "label": "<", - "x": 9.25, - "y": 3 - }, - { - "label": ">", - "x": 10.25, - "y": 3 - }, - { - "label": "?", - "x": 11.25, - "y": 3 - }, - { - "label": "Shift", - "x": 12.25, - "y": 3, - "w": 1.75 - }, - { - "label": "Fn", - "x": 14, - "y": 3 - }, - { - "label": "Os", - "x": 1.5, - "y": 4 - }, - { - "label": "Alt", - "x": 2.5, - "y": 4, - "w": 1.5 - }, - { - "x": 4, - "y": 4, - "w": 7 - }, - { - "label": "Alt", - "x": 11, - "y": 4, - "w": 1.5 - }, - { - "label": "Os", - "x": 12.5, - "y": 4 - } - ] - } - } -} \ No newline at end of file diff --git a/keyboards/tokyo60/readme.md b/keyboards/tokyo60/readme.md deleted file mode 100644 index 11d4d353c34d..000000000000 --- a/keyboards/tokyo60/readme.md +++ /dev/null @@ -1,15 +0,0 @@ -# Tokyo60 - -![Tokyo60](http://tokyokeyboard.com/wp-content/uploads/2018/02/AI7B4543_copy_page_20180215141449-1200x800.jpg) - -Minimal hacker style mechanical keyboard designed in Tokyo. Full aluminum hi-pro construction with integrated top-plate. Cherry MX compatible. More Info at [Tokyo Keyboard](http://tokyokeyboard.com). - -* Keyboard Maintainer: [Tokyo Keyboard](http://tokyokeyboard.com) -* Hardware Supported: Tokyo60 Rev.1 -* Hardware Availability: [Drop](https://drop.com/buy/massdrop-x-tokyo-keyboard-tokyo60-keyboard-kit?mode=guest_open) - -Make example for this keyboard (after setting up your build environment): - - make tokyo60: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/tokyo60/rules.mk b/keyboards/tokyo60/rules.mk deleted file mode 100644 index fa639b1cab3e..000000000000 --- a/keyboards/tokyo60/rules.mk +++ /dev/null @@ -1,33 +0,0 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = atmel-dfu - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration -MOUSEKEY_ENABLE = no # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -# 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 -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = yes # Commands for debug and configuration -NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = yes # Enable RGB light - -LAYOUTS = 60_hhkb diff --git a/keyboards/tokyo60/tokyo60.c b/keyboards/tokyo60/tokyo60.c deleted file mode 100644 index 2126bb612d42..000000000000 --- a/keyboards/tokyo60/tokyo60.c +++ /dev/null @@ -1,18 +0,0 @@ -#include "tokyo60.h" - -void matrix_init_kb(void) { - // Keyboard start-up code goes here - // Runs once when the firmware starts up - matrix_init_user(); - led_init_ports(); -}; - -void matrix_scan_kb(void) { - // Looping keyboard code goes here - // This runs every cycle (a lot) - matrix_scan_user(); -}; - -void led_init_ports(void) { - /* LEDs on */ -} diff --git a/keyboards/tokyokeyboard/alix40/config.h b/keyboards/tokyokeyboard/alix40/config.h index 113412e95a67..f4b4e6e5ab84 100644 --- a/keyboards/tokyokeyboard/alix40/config.h +++ b/keyboards/tokyokeyboard/alix40/config.h @@ -65,9 +65,6 @@ along with this program. If not, see . #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/info.json b/keyboards/tokyokeyboard/alix40/info.json index d2f3ccb91bbd..66a578bef3ae 100644 --- a/keyboards/tokyokeyboard/alix40/info.json +++ b/keyboards/tokyokeyboard/alix40/info.json @@ -2,8 +2,6 @@ "keyboard_name": "alix40", "url": "https://tokyokeyboard.com/", "maintainer": "qmk", - "width": 12, - "height": 4, "layouts": { "LAYOUT_40_alix": { "layout": [{ diff --git a/keyboards/tokyokeyboard/alix40/rules.mk b/keyboards/tokyokeyboard/alix40/rules.mk index 66097b63e72a..8f13178d52b7 100644 --- a/keyboards/tokyokeyboard/alix40/rules.mk +++ b/keyboards/tokyokeyboard/alix40/rules.mk @@ -10,17 +10,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality 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/tokyo60/config.h b/keyboards/tokyokeyboard/tokyo60/config.h similarity index 100% rename from keyboards/tokyo60/config.h rename to keyboards/tokyokeyboard/tokyo60/config.h diff --git a/keyboards/tokyokeyboard/tokyo60/info.json b/keyboards/tokyokeyboard/tokyo60/info.json new file mode 100644 index 000000000000..3f6b120c17a1 --- /dev/null +++ b/keyboards/tokyokeyboard/tokyo60/info.json @@ -0,0 +1,318 @@ +{ + "keyboard_name": "Tokyo60", + "url": "https://tokyokeyboard.com/", + "maintainer": "qmk", + "layouts": { + "LAYOUT_60_hhkb": { + "layout": [{ + "label": "Esc", + "x": 0, + "y": 0 + }, + { + "label": "!", + "x": 1, + "y": 0 + }, + { + "label": "@", + "x": 2, + "y": 0 + }, + { + "label": "#", + "x": 3, + "y": 0 + }, + { + "label": "$", + "x": 4, + "y": 0 + }, + { + "label": "%", + "x": 5, + "y": 0 + }, + { + "label": "^", + "x": 6, + "y": 0 + }, + { + "label": "&", + "x": 7, + "y": 0 + }, + { + "label": "*", + "x": 8, + "y": 0 + }, + { + "label": "(", + "x": 9, + "y": 0 + }, + { + "label": ")", + "x": 10, + "y": 0 + }, + { + "label": "_", + "x": 11, + "y": 0 + }, + { + "label": "+", + "x": 12, + "y": 0 + }, + { + "label": "|", + "x": 13, + "y": 0 + }, + { + "label": "~", + "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": "Delete", + "x": 13.5, + "y": 1, + "w": 1.5 + }, + { + "label": "Control", + "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": 2.25 + }, + { + "label": "Z", + "x": 2.25, + "y": 3 + }, + { + "label": "X", + "x": 3.25, + "y": 3 + }, + { + "label": "C", + "x": 4.25, + "y": 3 + }, + { + "label": "V", + "x": 5.25, + "y": 3 + }, + { + "label": "B", + "x": 6.25, + "y": 3 + }, + { + "label": "N", + "x": 7.25, + "y": 3 + }, + { + "label": "M", + "x": 8.25, + "y": 3 + }, + { + "label": "<", + "x": 9.25, + "y": 3 + }, + { + "label": ">", + "x": 10.25, + "y": 3 + }, + { + "label": "?", + "x": 11.25, + "y": 3 + }, + { + "label": "Shift", + "x": 12.25, + "y": 3, + "w": 1.75 + }, + { + "label": "Fn", + "x": 14, + "y": 3 + }, + { + "label": "Os", + "x": 1.5, + "y": 4 + }, + { + "label": "Alt", + "x": 2.5, + "y": 4, + "w": 1.5 + }, + { + "x": 4, + "y": 4, + "w": 7 + }, + { + "label": "Alt", + "x": 11, + "y": 4, + "w": 1.5 + }, + { + "label": "Os", + "x": 12.5, + "y": 4 + } + ] + } + } +} diff --git a/keyboards/tokyo60/keymaps/default/config.h b/keyboards/tokyokeyboard/tokyo60/keymaps/default/config.h similarity index 100% rename from keyboards/tokyo60/keymaps/default/config.h rename to keyboards/tokyokeyboard/tokyo60/keymaps/default/config.h diff --git a/keyboards/tokyo60/keymaps/default/keymap.c b/keyboards/tokyokeyboard/tokyo60/keymaps/default/keymap.c similarity index 100% rename from keyboards/tokyo60/keymaps/default/keymap.c rename to keyboards/tokyokeyboard/tokyo60/keymaps/default/keymap.c diff --git a/keyboards/tokyo60/keymaps/swappedBottomRow/config.h b/keyboards/tokyokeyboard/tokyo60/keymaps/swappedBottomRow/config.h similarity index 100% rename from keyboards/tokyo60/keymaps/swappedBottomRow/config.h rename to keyboards/tokyokeyboard/tokyo60/keymaps/swappedBottomRow/config.h diff --git a/keyboards/tokyo60/keymaps/swappedBottomRow/keymap.c b/keyboards/tokyokeyboard/tokyo60/keymaps/swappedBottomRow/keymap.c similarity index 100% rename from keyboards/tokyo60/keymaps/swappedBottomRow/keymap.c rename to keyboards/tokyokeyboard/tokyo60/keymaps/swappedBottomRow/keymap.c diff --git a/keyboards/tokyo60/keymaps/via/keymap.c b/keyboards/tokyokeyboard/tokyo60/keymaps/via/keymap.c similarity index 100% rename from keyboards/tokyo60/keymaps/via/keymap.c rename to keyboards/tokyokeyboard/tokyo60/keymaps/via/keymap.c diff --git a/keyboards/tokyokeyboard/tokyo60/keymaps/via/rules.mk b/keyboards/tokyokeyboard/tokyo60/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/tokyokeyboard/tokyo60/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/tokyokeyboard/tokyo60/readme.md b/keyboards/tokyokeyboard/tokyo60/readme.md new file mode 100644 index 000000000000..4d4f53ef0499 --- /dev/null +++ b/keyboards/tokyokeyboard/tokyo60/readme.md @@ -0,0 +1,15 @@ +# Tokyo60 + +![Tokyo60](https://i2.wp.com/tokyokeyboard.com/wp-content/uploads/2018/02/AI7B4543_copy_page_20180215141449-1200x800.jpg) + +Minimal hacker style mechanical keyboard designed in Tokyo. Full aluminum hi-pro construction with integrated top-plate. Cherry MX compatible. More Info at [Tokyo Keyboard](http://tokyokeyboard.com). + +* Keyboard Maintainer: [Tokyo Keyboard](https://tokyokeyboard.com) +* Hardware Supported: Tokyo60 Rev.1 - 4 +* Hardware Availability: [Drop](https://drop.com/buy/massdrop-x-tokyo-keyboard-tokyo60-keyboard-kit?mode=guest_open) + +Make example for this keyboard (after setting up your build environment): + + make tokyokeyboard/tokyo60: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/tokyokeyboard/tokyo60/rules.mk b/keyboards/tokyokeyboard/tokyo60/rules.mk new file mode 100644 index 000000000000..eb84b0e2492c --- /dev/null +++ b/keyboards/tokyokeyboard/tokyo60/rules.mk @@ -0,0 +1,21 @@ +# 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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +AUDIO_ENABLE = no # Audio output +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable RGB light + +LAYOUTS = 60_hhkb diff --git a/keyboards/tokyokeyboard/tokyo60/tokyo60.c b/keyboards/tokyokeyboard/tokyo60/tokyo60.c new file mode 100644 index 000000000000..67113700a5d9 --- /dev/null +++ b/keyboards/tokyokeyboard/tokyo60/tokyo60.c @@ -0,0 +1 @@ +#include "tokyo60.h" diff --git a/keyboards/tokyo60/tokyo60.h b/keyboards/tokyokeyboard/tokyo60/tokyo60.h similarity index 100% rename from keyboards/tokyo60/tokyo60.h rename to keyboards/tokyokeyboard/tokyo60/tokyo60.h diff --git a/keyboards/torn/bongocat.c b/keyboards/torn/bongocat.c index 593cd5d4ae6a..21322c9536e8 100644 --- a/keyboards/torn/bongocat.c +++ b/keyboards/torn/bongocat.c @@ -16,7 +16,7 @@ */ #include QMK_KEYBOARD_H -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE #define ARRAY_SIZE(array) (sizeof(array) / sizeof(array[0])) @@ -34,7 +34,10 @@ static bool show_logo = true; __attribute__((weak)) extern const char PROGMEM bongocat_logo[]; -void oled_task_user(void) { +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } // clang-format off static const char PROGMEM idle[][FRAME_SIZE] = { @@ -347,7 +350,7 @@ void oled_task_user(void) { oled_off(); anim_timer = 0; show_logo = true; - return; + return false; } if (timer_elapsed32(anim_timer) > FRAME_DURATION) { @@ -369,6 +372,7 @@ void oled_task_user(void) { } current_frame++; } + return false; } bool process_record_kb(uint16_t keycode, keyrecord_t *record) { diff --git a/keyboards/torn/info.json b/keyboards/torn/info.json index 340eb73597dc..8c3542757037 100644 --- a/keyboards/torn/info.json +++ b/keyboards/torn/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Torn / Split Through Hole", "url": "https://github.com/rtitmuss/torn", "maintainer": "rtitmuss", - "width": 15, - "height": 4.55, "layouts": { "LAYOUT_split_3x6_4": { "layout": [ diff --git a/keyboards/torn/keymaps/manna-harbour_miryoku/config.h b/keyboards/torn/keymaps/manna-harbour_miryoku/config.h new file mode 100644 index 000000000000..89a67474ca4c --- /dev/null +++ b/keyboards/torn/keymaps/manna-harbour_miryoku/config.h @@ -0,0 +1,20 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . + +#pragma once + +#define LAYOUT_miryoku( \ + 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, \ + N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ +) \ +LAYOUT_split_3x6_4( \ +KC_NO, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, KC_NO, \ +KC_NO, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, KC_NO, \ +KC_NO, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, KC_NO, \ + KC_NO, K32, K33, K34, K35, K36, K37, KC_NO \ +) diff --git a/keyboards/torn/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/torn/keymaps/manna-harbour_miryoku/keymap.c new file mode 100644 index 000000000000..7c5717a0fee0 --- /dev/null +++ b/keyboards/torn/keymaps/manna-harbour_miryoku/keymap.c @@ -0,0 +1,5 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/keyboards/torn/rules.mk b/keyboards/torn/rules.mk index 62f9d839321f..280eaf8da54e 100644 --- a/keyboards/torn/rules.mk +++ b/keyboards/torn/rules.mk @@ -2,27 +2,24 @@ MCU = atmega328p # Bootloader selection -BOOTLOADER = USBasp +BOOTLOADER = usbasploader # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow ENCODER_ENABLE = yes # Enable rotary encoder -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 WPM_ENABLE = yes CUSTOM_MATRIX = lite -LAYOUTS = split_3x6_4 - SRC += matrix.c \ bongocat.c \ mcp23018.c \ diff --git a/keyboards/touchpad/info.json b/keyboards/touchpad/info.json index 625bbffd8e04..d8d0fab16817 100644 --- a/keyboards/touchpad/info.json +++ b/keyboards/touchpad/info.json @@ -2,8 +2,6 @@ "keyboard_name": "touchpad", "url": "", "maintainer": "qmk", - "width": 6, - "height": 6, "layouts": { "LAYOUT_ortho_6x6": { "layout": [ @@ -16,4 +14,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/touchpad/rules.mk b/keyboards/touchpad/rules.mk index 14aac23d4963..d6cc1b092745 100644 --- a/keyboards/touchpad/rules.mk +++ b/keyboards/touchpad/rules.mk @@ -2,35 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # 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 -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -API_SYSEX_ENABLE = no CUSTOM_MATRIX = yes -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - SRC += matrix.c i2c_master.c diff --git a/keyboards/tr60w/info.json b/keyboards/tr60w/info.json index c4dbc9085ae9..629fb97b9446 100644 --- a/keyboards/tr60w/info.json +++ b/keyboards/tr60w/info.json @@ -2,8 +2,6 @@ "keyboard_name": "TR60W", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_tsangan_hhkb": { "layout": [ diff --git a/keyboards/tr60w/rules.mk b/keyboards/tr60w/rules.mk index 86b60bd1ef14..1f44da3ea6c9 100644 --- a/keyboards/tr60w/rules.mk +++ b/keyboards/tr60w/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/trashman/ketch/info.json b/keyboards/trashman/ketch/info.json index bb69106b3d0b..2fa70b05bea1 100644 --- a/keyboards/trashman/ketch/info.json +++ b/keyboards/trashman/ketch/info.json @@ -2,8 +2,6 @@ "keyboard_name": "ketch", "url": "https://trashman.wiki/pcbs/ketch", "maintainer": "jetpacktuxedo", - "width": 12.75, - "height": 4, "layouts": { "LAYOUT": { "layout": [ @@ -50,4 +48,3 @@ } } } - diff --git a/keyboards/trashman/ketch/rules.mk b/keyboards/trashman/ketch/rules.mk index eeb3847805d8..98f469b27d97 100644 --- a/keyboards/trashman/ketch/rules.mk +++ b/keyboards/trashman/ketch/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/treadstone32/info.json b/keyboards/treadstone32/info.json index 2ac18be86e2b..d9c1069b38de 100644 --- a/keyboards/treadstone32/info.json +++ b/keyboards/treadstone32/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Treadstone32", "url": "https://github.com/marksard/Keyboards", "maintainer": "marksard", - "width": 10.5, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/treadstone32/lite/rules.mk b/keyboards/treadstone32/lite/rules.mk index 4bdc53c1108b..6ded83e74b11 100644 --- a/keyboards/treadstone32/lite/rules.mk +++ b/keyboards/treadstone32/lite/rules.mk @@ -1,9 +1,2 @@ # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina diff --git a/keyboards/treadstone32/rev1/rules.mk b/keyboards/treadstone32/rev1/rules.mk index 4d55309168fb..bddd4e389e44 100644 --- a/keyboards/treadstone32/rev1/rules.mk +++ b/keyboards/treadstone32/rev1/rules.mk @@ -1,9 +1,2 @@ # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu diff --git a/keyboards/treadstone32/rules.mk b/keyboards/treadstone32/rules.mk index ef45032dae1a..11c1d342f22b 100644 --- a/keyboards/treadstone32/rules.mk +++ b/keyboards/treadstone32/rules.mk @@ -4,17 +4,14 @@ MCU = atmega32u4 # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = no # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. LEADER_ENABLE = no diff --git a/keyboards/treadstone48/common/oled_helper.c b/keyboards/treadstone48/common/oled_helper.c index 18d8681a4ffb..68adbe83a80e 100644 --- a/keyboards/treadstone48/common/oled_helper.c +++ b/keyboards/treadstone48/common/oled_helper.c @@ -1,4 +1,4 @@ -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE #include QMK_KEYBOARD_H #include #include diff --git a/keyboards/treadstone48/common/oled_helper.h b/keyboards/treadstone48/common/oled_helper.h index 69ab70560689..56c2a5b2367a 100644 --- a/keyboards/treadstone48/common/oled_helper.h +++ b/keyboards/treadstone48/common/oled_helper.h @@ -1,4 +1,4 @@ -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE void render_logo(void); void update_key_status(uint16_t keycode, keyrecord_t *record); diff --git a/keyboards/treadstone48/keymaps/default/keymap.c b/keyboards/treadstone48/keymaps/default/keymap.c index 41f8f399f1ee..f1b37364b52e 100644 --- a/keyboards/treadstone48/keymaps/default/keymap.c +++ b/keyboards/treadstone48/keymaps/default/keymap.c @@ -103,7 +103,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #define L_ADJUST (1<<_ADJUST) #define L_ADJUST_TRI (L_ADJUST|L_RAISE|L_LOWER) -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE #include #include @@ -167,13 +167,14 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) { return rotation; } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { render_status(); } else { render_logo(); } + return false; } #else diff --git a/keyboards/treadstone48/keymaps/default/rules.mk b/keyboards/treadstone48/keymaps/default/rules.mk index 26bacb0cfe21..23c4ae9542cf 100644 --- a/keyboards/treadstone48/keymaps/default/rules.mk +++ b/keyboards/treadstone48/keymaps/default/rules.mk @@ -1,7 +1,8 @@ MOUSEKEY_ENABLE = yes # Mouse keys RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 LTO_ENABLE = yes # If you want to change the display of OLED, you need to change here diff --git a/keyboards/treadstone48/keymaps/like_jis/keymap.c b/keyboards/treadstone48/keymaps/like_jis/keymap.c index bbc6351bc246..1e90a2416e7a 100644 --- a/keyboards/treadstone48/keymaps/like_jis/keymap.c +++ b/keyboards/treadstone48/keymaps/like_jis/keymap.c @@ -103,7 +103,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #define L_ADJUST (1<<_ADJUST) #define L_ADJUST_TRI (L_ADJUST|L_RAISE|L_LOWER) -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE #include #include @@ -167,13 +167,14 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) { return rotation; } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { render_status(); } else { render_logo(); } + return false; } #else diff --git a/keyboards/treadstone48/keymaps/like_jis/rules.mk b/keyboards/treadstone48/keymaps/like_jis/rules.mk index 26bacb0cfe21..23c4ae9542cf 100644 --- a/keyboards/treadstone48/keymaps/like_jis/rules.mk +++ b/keyboards/treadstone48/keymaps/like_jis/rules.mk @@ -1,7 +1,8 @@ MOUSEKEY_ENABLE = yes # Mouse keys RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 LTO_ENABLE = yes # If you want to change the display of OLED, you need to change here diff --git a/keyboards/treadstone48/rev1/config.h b/keyboards/treadstone48/rev1/config.h index e16622df96e7..ad9de636d0ec 100644 --- a/keyboards/treadstone48/rev1/config.h +++ b/keyboards/treadstone48/rev1/config.h @@ -127,59 +127,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -200,26 +147,6 @@ along with this program. If not, see . #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/treadstone48/rev1/info.json b/keyboards/treadstone48/rev1/info.json index df9e7591b509..8b90429d0061 100644 --- a/keyboards/treadstone48/rev1/info.json +++ b/keyboards/treadstone48/rev1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Treadstone48", "url": "https://github.com/marksard/Keyboards", "maintainer": "marksard", - "width": 14.75, - "height": 4, "layouts": { "LAYOUT_base": { "layout": [ diff --git a/keyboards/treadstone48/rev1/keymaps/like_jis_rs/keymap.c b/keyboards/treadstone48/rev1/keymaps/like_jis_rs/keymap.c index 171e0345565b..e1f083588130 100644 --- a/keyboards/treadstone48/rev1/keymaps/like_jis_rs/keymap.c +++ b/keyboards/treadstone48/rev1/keymaps/like_jis_rs/keymap.c @@ -153,7 +153,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #define L_ADJUST (1<<_ADJUST) #define L_ADJUST_TRI (L_ADJUST|L_RAISE|L_LOWER) -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE #include #include @@ -219,13 +219,14 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) { return rotation; } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { render_status(); } else { render_logo(); } + return false; } #else diff --git a/keyboards/treadstone48/rev1/keymaps/like_jis_rs/rules.mk b/keyboards/treadstone48/rev1/keymaps/like_jis_rs/rules.mk index 7380582ca128..fafe992d6f9a 100644 --- a/keyboards/treadstone48/rev1/keymaps/like_jis_rs/rules.mk +++ b/keyboards/treadstone48/rev1/keymaps/like_jis_rs/rules.mk @@ -1,7 +1,8 @@ MOUSEKEY_ENABLE = yes # Mouse keys RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 LTO_ENABLE = yes # If you use connection the Rhymestone, please enable RS_EXTRA_LED diff --git a/keyboards/treadstone48/rev2/config.h b/keyboards/treadstone48/rev2/config.h index ae1d92dcbee9..6df1467d8cd8 100644 --- a/keyboards/treadstone48/rev2/config.h +++ b/keyboards/treadstone48/rev2/config.h @@ -121,59 +121,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -193,25 +140,6 @@ along with this program. If not, see . /* disable these deprecated features by default */ #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 diff --git a/keyboards/treadstone48/rev2/info.json b/keyboards/treadstone48/rev2/info.json index 991a83019960..73527155e82f 100644 --- a/keyboards/treadstone48/rev2/info.json +++ b/keyboards/treadstone48/rev2/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Treadstone48", "url": "https://github.com/marksard/Keyboards", "maintainer": "marksard", - "width": 14.75, - "height": 4, "layouts": { "LAYOUT_base": { "layout": [ diff --git a/keyboards/treadstone48/rules.mk b/keyboards/treadstone48/rules.mk index 262ad0a61ef3..0f42bc4602b2 100644 --- a/keyboards/treadstone48/rules.mk +++ b/keyboards/treadstone48/rules.mk @@ -2,36 +2,25 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite EXTRAKEY_ENABLE = no # 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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = yes MOUSEKEY_ENABLE = yes # Mouse keys -TAP_DANCE_ENABLE = no RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 DEFAULT_FOLDER = treadstone48/rev1 diff --git a/keyboards/treasure/type9/config.h b/keyboards/treasure/type9/config.h index eae8cdc559e2..cc629e3e4558 100644 --- a/keyboards/treasure/type9/config.h +++ b/keyboards/treasure/type9/config.h @@ -99,54 +99,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -165,23 +117,3 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - diff --git a/keyboards/treasure/type9/info.json b/keyboards/treasure/type9/info.json index 7e7b1d0bdac3..2f8b7c82b270 100644 --- a/keyboards/treasure/type9/info.json +++ b/keyboards/treasure/type9/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Type-9", "url": "", "maintainer": "qmk", - "width": 3, - "height": 3, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "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}] diff --git a/keyboards/treasure/type9/keymaps/default/keymap.c b/keyboards/treasure/type9/keymaps/default/keymap.c index 300d5b1e4ca4..7d224217112c 100644 --- a/keyboards/treasure/type9/keymaps/default/keymap.c +++ b/keyboards/treasure/type9/keymaps/default/keymap.c @@ -50,15 +50,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/treasure/type9/rules.mk b/keyboards/treasure/type9/rules.mk index eb8aef7e742e..322fcc907114 100644 --- a/keyboards/treasure/type9/rules.mk +++ b/keyboards/treasure/type9/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/treasure/type9/type9.c b/keyboards/treasure/type9/type9.c index 58a9c8f52de5..466f294672ee 100644 --- a/keyboards/treasure/type9/type9.c +++ b/keyboards/treasure/type9/type9.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "type9.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/treasure/type9/type9.h b/keyboards/treasure/type9/type9.h index 4e3c235d11b0..6034416f16ec 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 . */ -#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/treasure/type9s2/config.h b/keyboards/treasure/type9s2/config.h new file mode 100644 index 000000000000..a9d73f961f5c --- /dev/null +++ b/keyboards/treasure/type9s2/config.h @@ -0,0 +1,50 @@ +/* Copyright 2021 Treasure + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x5452 +#define PRODUCT_ID 0x5492 +#define DEVICE_VER 0x0001 +#define MANUFACTURER TREASURE +#define PRODUCT TYPE-9 Series II + +/* key matrix size */ +#define MATRIX_ROWS 3 +#define MATRIX_COLS 3 + +/* Keyboard Matrix Assignments*/ +#define MATRIX_ROW_PINS { B4, B5, D2 } +#define MATRIX_COL_PINS { B2, B3, C5 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +#define BACKLIGHT_PIN B7 + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +#define BACKLIGHT_LEVELS 3 + diff --git a/keyboards/treasure/type9s2/info.json b/keyboards/treasure/type9s2/info.json new file mode 100644 index 000000000000..68b47f46ef33 --- /dev/null +++ b/keyboards/treasure/type9s2/info.json @@ -0,0 +1,20 @@ +{ + "keyboard_name": "Treasure TYPE-9 Series II", + "url": "http://treasuretypes.com", + "maintainer": "Treasure", + "layouts": { + "LAYOUT_ortho_3x3": { + "layout": [ + {"label": "7", "x": 0, "y": 0}, + {"label": "8", "x": 1, "y": 0}, + {"label": "9", "x": 2, "y": 0}, + {"label": "4", "x": 0, "y": 1}, + {"label": "5", "x": 1, "y": 1}, + {"label": "6", "x": 2, "y": 1}, + {"label": "1", "x": 0, "y": 2}, + {"label": "2", "x": 1, "y": 2}, + {"label": "3", "x": 2, "y": 2} + ] + } + } +} diff --git a/keyboards/treasure/type9s2/keymaps/default/keymap.c b/keyboards/treasure/type9s2/keymaps/default/keymap.c new file mode 100644 index 000000000000..35e789a95d42 --- /dev/null +++ b/keyboards/treasure/type9s2/keymaps/default/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2021 Treasure + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ortho_3x3( + MO(1), KC_MPLY, BL_STEP, + KC_VOLD, KC_MUTE, KC_VOLU, + KC_KP_1, KC_KP_2, KC_KP_3 + ), + + [1] = LAYOUT_ortho_3x3( + _______, _______, MO(2), + _______, _______, _______, + _______, _______, _______ + ), + + [2] = LAYOUT_ortho_3x3( + _______, _______, _______, + _______, _______, _______, + _______, _______, MO(3) + ), + + [3] = LAYOUT_ortho_3x3( + _______, _______, _______, + _______, _______, _______, + RESET, _______, _______ + ) +}; diff --git a/keyboards/treasure/type9s2/keymaps/default/readme.md b/keyboards/treasure/type9s2/keymaps/default/readme.md new file mode 100644 index 000000000000..76778b088be1 --- /dev/null +++ b/keyboards/treasure/type9s2/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for Type-9 Series II diff --git a/keyboards/treasure/type9s2/keymaps/via/keymap.c b/keyboards/treasure/type9s2/keymaps/via/keymap.c new file mode 100644 index 000000000000..a3e959a9fc3b --- /dev/null +++ b/keyboards/treasure/type9s2/keymaps/via/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2021 Treasure + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ortho_3x3( + KC_KP_7, KC_KP_8, KC_KP_9, + KC_KP_4, LT(1, KC_KP_5), KC_KP_6, + KC_KP_1, KC_KP_2, KC_KP_3 + ), + + [1] = LAYOUT_ortho_3x3( + _______, _______, _______, + _______, _______, _______, + _______, _______, _______ + ), + + [2] = LAYOUT_ortho_3x3( + _______, _______, _______, + _______, _______, _______, + _______, _______, _______ + ), + + [3] = LAYOUT_ortho_3x3( + _______, _______, _______, + _______, _______, _______, + _______, _______, _______ + ) +}; diff --git a/keyboards/treasure/type9s2/keymaps/via/readme.md b/keyboards/treasure/type9s2/keymaps/via/readme.md new file mode 100644 index 000000000000..76778b088be1 --- /dev/null +++ b/keyboards/treasure/type9s2/keymaps/via/readme.md @@ -0,0 +1 @@ +# The default keymap for Type-9 Series II diff --git a/keyboards/treasure/type9s2/keymaps/via/rules.mk b/keyboards/treasure/type9s2/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/treasure/type9s2/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/treasure/type9s2/readme.md b/keyboards/treasure/type9s2/readme.md new file mode 100644 index 000000000000..2985778f4f09 --- /dev/null +++ b/keyboards/treasure/type9s2/readme.md @@ -0,0 +1,17 @@ +# Treasure TYPE-9 Series II + +![TYPE9SII](https://i.imgur.com/lohJ0Dal.png) + +Treasure TYPE-9 Series II is a 3x3 Macropad. + +* Keyboard Maintainer: [Treasure](https://github.com/TreasureTypes) +* Hardware Supported: Treasure TYPE-9 Series II PCB +* Hardware Availability: [Treasure Store](http://treasuretypes.com) + +To place the keyboard into bootloader mode in order to flash it, use the reset button on the PCB. + +Make example for this keyboard (after setting up your build environment): + + make treasure/type9s2: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/treasure/type9s2/rules.mk b/keyboards/treasure/type9s2/rules.mk new file mode 100644 index 000000000000..81e4f9317964 --- /dev/null +++ b/keyboards/treasure/type9s2/rules.mk @@ -0,0 +1,20 @@ +# MCU name +MCU = atmega32u2 + +# 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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +LTO_ENABLE = yes diff --git a/keyboards/treasure/type9s2/type9s2.c b/keyboards/treasure/type9s2/type9s2.c new file mode 100644 index 000000000000..f5c86e0006ab --- /dev/null +++ b/keyboards/treasure/type9s2/type9s2.c @@ -0,0 +1,16 @@ +/* Copyright 2021 Treasure + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "type9s2.h" diff --git a/keyboards/treasure/type9s2/type9s2.h b/keyboards/treasure/type9s2/type9s2.h new file mode 100644 index 000000000000..1a18416bc1a8 --- /dev/null +++ b/keyboards/treasure/type9s2/type9s2.h @@ -0,0 +1,29 @@ +/* Copyright 2021 Treasure + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT_ortho_3x3( \ + K00, K01, K02, \ + K10, K11, K12, \ + K20, K21, K22 \ +) { \ + { K00, K01, K02 }, \ + { K10, K11, K12 }, \ + { K20, K21, K22 } \ +} diff --git a/keyboards/tronguylabs/m122_3270/blackpill/config.h b/keyboards/tronguylabs/m122_3270/blackpill/config.h new file mode 100644 index 000000000000..53c3ad73e42a --- /dev/null +++ b/keyboards/tronguylabs/m122_3270/blackpill/config.h @@ -0,0 +1,27 @@ +/* Copyright 2021 James R. Maynard III + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +// Blackpill pin assignments: reversed the rows from the Teensy version for easier PCB layout +// DO NOT USE the following pins: A9 (has pulldown on it), A11/A12 (USB lines), B2 (external pulldown) +// C13 has an LED, and C13/C14/C15 are best used as inputs (with DIODE_DIRECTION set to ROW2COL, the +// rows are inputs). Note that every usable I/O pin is used. +#define MATRIX_COL_PINS { B0, B1, B10, B12, B13, B14, B15, A8, A7, A10, A6, A5, A15, B3, B4, B5, B6, B7, B8, B9 } +#define MATRIX_ROW_PINS { C13, C14, C15, A0, A1, A2, A3, A4 } + +// The BlackPill version is version 2 +#define DEVICE_VER 0x0002 diff --git a/keyboards/tronguylabs/m122_3270/blackpill/readme.md b/keyboards/tronguylabs/m122_3270/blackpill/readme.md new file mode 100644 index 000000000000..1e47a447a3d3 --- /dev/null +++ b/keyboards/tronguylabs/m122_3270/blackpill/readme.md @@ -0,0 +1,3 @@ +# BlackPill controller for m122-3270 + +This directory contains the BlackPill-specific definitions for the M122-3270 keyboard. diff --git a/keyboards/tronguylabs/m122_3270/blackpill/rules.mk b/keyboards/tronguylabs/m122_3270/blackpill/rules.mk new file mode 100644 index 000000000000..26cebb382bd9 --- /dev/null +++ b/keyboards/tronguylabs/m122_3270/blackpill/rules.mk @@ -0,0 +1,19 @@ +# MCU name +MCU = STM32F411 + +# Bootloader selection +BOOTLOADER = stm32-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# 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 diff --git a/keyboards/tronguylabs/m122_3270/bluepill/chconf.h b/keyboards/tronguylabs/m122_3270/bluepill/chconf.h new file mode 100644 index 000000000000..c7a982aedd00 --- /dev/null +++ b/keyboards/tronguylabs/m122_3270/bluepill/chconf.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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/handwired/onekey/bluepill/chconf.h -r platforms/chibios/common/configs/chconf.h` + */ + +#pragma once + +#define CH_CFG_ST_TIMEDELTA 0 + +#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE + +#include_next + diff --git a/keyboards/tronguylabs/m122_3270/bluepill/config.h b/keyboards/tronguylabs/m122_3270/bluepill/config.h new file mode 100644 index 000000000000..f59eaaacb6ff --- /dev/null +++ b/keyboards/tronguylabs/m122_3270/bluepill/config.h @@ -0,0 +1,29 @@ +/* Copyright 2021 James R. Maynard III + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +// place overrides below + +// Blackpill pin assignments: reversed the rows from the Teensy version for easier PCB layout +// DO NOT USE the following pins: A9 (has pulldown on it), A11/A12 (USB lines), B2 (external pulldown) +// C13 has an LED, and C13/C14/C15 are best used as inputs (with DIODE_DIRECTION set to ROW2COL, the +// rows are inputs). Note that every usable I/O pin is used. +#define MATRIX_COL_PINS { B1, B10, B11, B12, B13, B14, B15, A8, B0, A10, A7, A6, A15, B3, B4, B5, B6, B7, B8, B9 } +#define MATRIX_ROW_PINS { C13, C14, C15, A1, A2, A3, A4, A5 } + +// The BluePill version is version 3 +#define DEVICE_VER 0x0003 diff --git a/keyboards/tronguylabs/m122_3270/bluepill/readme.md b/keyboards/tronguylabs/m122_3270/bluepill/readme.md new file mode 100644 index 000000000000..a8d92432d471 --- /dev/null +++ b/keyboards/tronguylabs/m122_3270/bluepill/readme.md @@ -0,0 +1,2 @@ +# BluePill controller for m122-3270 +This directory contains the BluePill-specific definitions for the M122-3270 keyboard. diff --git a/keyboards/tronguylabs/m122_3270/bluepill/rules.mk b/keyboards/tronguylabs/m122_3270/bluepill/rules.mk new file mode 100644 index 000000000000..023c22cd2c91 --- /dev/null +++ b/keyboards/tronguylabs/m122_3270/bluepill/rules.mk @@ -0,0 +1,7 @@ +# Overrides for the Bluepill version + +# MCU name +MCU = STM32F103 + +# Bootloader selection +BOOTLOADER = stm32duino diff --git a/keyboards/tronguylabs/m122_3270/config.h b/keyboards/tronguylabs/m122_3270/config.h new file mode 100644 index 000000000000..98359e6cc46b --- /dev/null +++ b/keyboards/tronguylabs/m122_3270/config.h @@ -0,0 +1,37 @@ +/* Copyright 2021 James R. Maynard III + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +#define VENDOR_ID 0x1209 +#define PRODUCT_ID 0x3270 +#define MANUFACTURER IBM +#define PRODUCT Model M PC/3270 122 key + +// Both controllers draw 100 mA or less +#define USB_MAX_POWER_CONSUMPTION 100 + +/* key matrix size */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 20 + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION ROW2COL + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 15 diff --git a/keyboards/tronguylabs/m122_3270/info.json b/keyboards/tronguylabs/m122_3270/info.json new file mode 100644 index 000000000000..cddc24ea9c50 --- /dev/null +++ b/keyboards/tronguylabs/m122_3270/info.json @@ -0,0 +1,155 @@ +{ + "keyboard_name": "IBM Model M PC/3270 122 key", + "maintainer": "jmaynard", + "layouts": { + "LAYOUT": { + "layout": [ + {"x": 3.25, "y": 0}, + {"x": 4.25, "y": 0}, + {"x": 5.25, "y": 0}, + {"x": 6.25, "y": 0}, + {"x": 7.25, "y": 0}, + {"x": 8.25, "y": 0}, + {"x": 9.25, "y": 0}, + {"x": 10.25, "y": 0}, + {"x": 11.25, "y": 0}, + {"x": 12.25, "y": 0}, + {"x": 13.25, "y": 0}, + {"x": 14.25, "y": 0}, + + {"x": 3.25, "y": 1}, + {"x": 4.25, "y": 1}, + {"x": 5.25, "y": 1}, + {"x": 6.25, "y": 1}, + {"x": 7.25, "y": 1}, + {"x": 8.25, "y": 1}, + {"x": 9.25, "y": 1}, + {"x": 10.25, "y": 1}, + {"x": 11.25, "y": 1}, + {"x": 12.25, "y": 1}, + {"x": 13.25, "y": 1}, + {"x": 14.25, "y": 1}, + + {"x": 0, "y": 3}, + {"x": 1, "y": 3}, + + {"x": 2.25, "y": 3}, + {"x": 3.25, "y": 3}, + {"x": 4.25, "y": 3}, + {"x": 5.25, "y": 3}, + {"x": 6.25, "y": 3}, + {"x": 7.25, "y": 3}, + {"x": 8.25, "y": 3}, + {"x": 9.25, "y": 3}, + {"x": 10.25, "y": 3}, + {"x": 11.25, "y": 3}, + {"x": 12.25, "y": 3}, + {"x": 13.25, "y": 3}, + {"x": 14.25, "y": 3}, + {"x": 15.25, "y": 3, "w": 2}, + + {"x": 17.5, "y": 3}, + {"x": 18.5, "y": 3}, + {"x": 19.5, "y": 3}, + + {"x": 20.75, "y": 3}, + {"x": 21.75, "y": 3}, + {"x": 22.75, "y": 3}, + {"x": 23.75, "y": 3}, + + {"x": 0, "y": 4}, + {"x": 1, "y": 4}, + + {"x": 2.25, "y": 4, "w": 1.5}, + {"x": 3.75, "y": 4}, + {"x": 4.75, "y": 4}, + {"x": 5.75, "y": 4}, + {"x": 6.75, "y": 4}, + {"x": 7.75, "y": 4}, + {"x": 8.75, "y": 4}, + {"x": 9.75, "y": 4}, + {"x": 10.75, "y": 4}, + {"x": 11.75, "y": 4}, + {"x": 12.75, "y": 4}, + {"x": 13.75, "y": 4}, + {"x": 14.75, "y": 4}, + {"x": 16, "y": 4, "w": 1.25, "h": 2}, + + {"x": 17.5, "y": 4}, + {"x": 18.5, "y": 4}, + {"x": 19.5, "y": 4}, + + {"x": 20.75, "y": 4}, + {"x": 21.75, "y": 4}, + {"x": 22.75, "y": 4}, + {"x": 23.75, "y": 4}, + + {"x": 0, "y": 5}, + {"x": 1, "y": 5}, + + {"x": 2.25, "y": 5, "w": 1.75}, + {"x": 4, "y": 5}, + {"x": 5, "y": 5}, + {"x": 6, "y": 5}, + {"x": 7, "y": 5}, + {"x": 8, "y": 5}, + {"x": 9, "y": 5}, + {"x": 10, "y": 5}, + {"x": 11, "y": 5}, + {"x": 12, "y": 5}, + {"x": 13, "y": 5}, + {"x": 14, "y": 5}, + {"x": 15, "y": 5}, + + {"x": 18.5, "y": 5}, + + {"x": 20.75, "y": 5}, + {"x": 21.75, "y": 5}, + {"x": 22.75, "y": 5}, + {"x": 23.75, "y": 5}, + + {"x": 0, "y": 6}, + {"x": 1, "y": 6}, + + {"x": 2.25, "y": 6, "w": 1.25}, + {"x": 3.5, "y": 6}, + {"x": 4.5, "y": 6}, + {"x": 5.5, "y": 6}, + {"x": 6.5, "y": 6}, + {"x": 7.5, "y": 6}, + {"x": 8.5, "y": 6}, + {"x": 9.5, "y": 6}, + {"x": 10.5, "y": 6}, + {"x": 11.5, "y": 6}, + {"x": 12.5, "y": 6}, + {"x": 13.5, "y": 6}, + {"x": 14.5, "y": 6, "w": 2.75}, + + {"x": 17.5, "y": 6}, + {"x": 18.5, "y": 6}, + {"x": 19.5, "y": 6}, + + {"x": 20.75, "y": 6}, + {"x": 21.75, "y": 6}, + {"x": 22.75, "y": 6}, + {"x": 23.75, "y": 6, "h": 2}, + + {"x": 0, "y": 7}, + {"x": 1, "y": 7}, + + {"x": 2.25, "y": 7, "w": 1.5}, + + {"x": 4.75, "y": 7, "w": 1.5}, + {"x": 6.25, "y": 7, "w": 7}, + {"x": 13.25, "y": 7, "w": 1.5}, + + {"x": 15.75, "y": 7, "w": 1.5}, + + {"x": 18.5, "y": 7}, + + {"x": 20.75, "y": 7, "w": 2}, + {"x": 22.75, "y": 7} + ] + } + } +} diff --git a/keyboards/tronguylabs/m122_3270/keymaps/default/keymap.c b/keyboards/tronguylabs/m122_3270/keymaps/default/keymap.c new file mode 100644 index 000000000000..b32eb33ec69a --- /dev/null +++ b/keyboards/tronguylabs/m122_3270/keymaps/default/keymap.c @@ -0,0 +1,214 @@ +/* Copyright 2021 James R. Maynard III + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum custom_keycodes { + JM_DOT = SAFE_RANGE, // . both shifted and unshifted + JM_COMM, // , both shifted and unshifted + JM_GRLS, // < and > on one key + JM_CBRC, // { and } on one key + JM_CENT, // cent sign and ! on one key + JM_DPA1, // DUP/PA1, + JM_FPA2, // FldMk/PA2, + JM_JUMP, // JUMP/PA3, + JM_DEL, // Delete + JM_NSLC // NumLock/ScrollLock on one key +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // PC/3270 layout: PC legends (blue) + [0] = LAYOUT( + KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, + 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_NO, KC_NO, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NO, KC_PGUP, KC_PGDN, KC_ESC, JM_NSLC, KC_PAST, KC_PSLS, + KC_NO, KC_PAUS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, KC_END, KC_INS, KC_DEL, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_NO, KC_NO, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_UP, KC_P4, KC_P5, KC_P6, KC_PMNS, + KC_PSCR, KC_NO, KC_LSFT, JM_GRLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_LEFT, KC_HOME, KC_RIGHT, KC_P1, KC_P2, KC_P3, KC_PENT, + MO(2), KC_LGUI, KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_DOWN, KC_P0, KC_PDOT + ), + + // PC/3270 layout: 3270 legends (black), with x3270 keycodes + [1] = LAYOUT( + A(KC_F1), A(KC_F2), A(KC_F3), A(KC_F4), A(KC_F5), A(KC_F6), A(KC_F7), A(KC_F8), A(KC_F9), A(KC_F10), A(KC_F11), A(KC_F12), + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + + A(KC_A), A(KC_C), KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, JM_DPA1, JM_FPA2, JM_JUMP, KC_ESC, JM_NSLC, KC_PCMM, KC_SPC, + KC_CRSEL, KC_PAUS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JM_CENT, KC_BSLS, S(KC_ENT), S(KC_TAB), KC_INS, JM_DEL, KC_P7, KC_P8, KC_P9, KC_TAB, + KC_EXSEL, A(KC_E), KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, JM_CBRC, KC_UP, KC_P4, KC_P5, KC_P6, KC_PMNS, + A(KC_B), C(KC_C), KC_LSFT, JM_GRLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, JM_COMM, JM_DOT, KC_SLSH, KC_RSFT, KC_LEFT, A(KC_H), KC_RIGHT, KC_P1, KC_P2, KC_P3, KC_PENT, + MO(2), KC_LGUI, A(KC_R), KC_LALT, KC_SPC, KC_RALT, KC_ENT, KC_DOWN, KC_P0, KC_PDOT + ), + + // Function layer, accessed by the Zoom key + [2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + + DF(0), DF(1), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, MO(3), _______, _______, _______, _______, _______ + ), + + // Firmware layer, accessed by the Zoom/Space key pair (hold both down) + [3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, EEP_RST, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + +bool left_shift_down = false; +bool right_shift_down = false; +bool left_alt_down = false; +bool right_alt_down = false; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_LSHIFT: + left_shift_down = record->event.pressed; + break; + case KC_RSHIFT: + right_shift_down = record->event.pressed; + break; + case KC_LALT: + left_alt_down = record->event.pressed; + break; + case KC_RALT: + right_alt_down = record->event.pressed; + break; + case JM_GRLS: + if (left_shift_down || right_shift_down) { + if(record->event.pressed) { + SEND_STRING(">"); + } + } else { + if(record->event.pressed) { + SEND_STRING("<"); + } + } + return false; + case JM_CBRC: + if (left_shift_down || right_shift_down) { + if (record->event.pressed) { + SEND_STRING("}"); + } + } else { + if(record->event.pressed) { + SEND_STRING("{"); + } + } + return false; + case JM_CENT: + if (left_shift_down || right_shift_down) { + if (record->event.pressed) { + SEND_STRING("!"); + } + } else { // This assumes that the Linux Compose has been set to Scroll Lock + if (record->event.pressed) { + tap_code16(KC_SLCK); + SEND_STRING("c/"); + } + } + return false; + case JM_COMM: + if (record->event.pressed){ + SEND_STRING(","); + } + return false; + case JM_DOT: + if (record->event.pressed) { + SEND_STRING("."); + } + return false; + case JM_DPA1: + if (left_shift_down || right_shift_down) { + if (record->event.pressed) { + tap_code16(C(KC_D)); + } + return false; + } else { + if(record->event.pressed) { + tap_code16(A(KC_1)); + } + return false; + } + break; + case JM_FPA2: + if (left_shift_down || right_shift_down) { + if (record->event.pressed) { + tap_code16(C(KC_F)); + } + return false; + } else { + if(record->event.pressed) { + tap_code16(A(KC_2)); + } + return false; + } + break; + case JM_JUMP: + if (record->event.pressed) { + if (left_alt_down || right_alt_down) { + SEND_STRING("3"); + } + } + return false; + case JM_DEL: + if (record->event.pressed) { + if (left_alt_down || right_alt_down) { + unregister_code(KC_LALT); + unregister_code(KC_RALT); + tap_code16(C(KC_W)); + if (left_alt_down) { + register_code(KC_LALT); + } + if (right_alt_down) { + register_code(KC_RALT); + } + } else { + tap_code16(KC_DEL); + } + } + return false; + case JM_NSLC: + if (left_shift_down || right_shift_down) { + if (record->event.pressed) { + register_code(KC_NLCK); + } + else { + unregister_code(KC_NLCK); + } + } else { + if (record->event.pressed) { + register_code(KC_SLCK); + } + else { + unregister_code(KC_SLCK); + } + } + return false; + } + + return true; +} diff --git a/keyboards/tronguylabs/m122_3270/keymaps/default/readme.md b/keyboards/tronguylabs/m122_3270/keymaps/default/readme.md new file mode 100644 index 000000000000..cab833dd30c7 --- /dev/null +++ b/keyboards/tronguylabs/m122_3270/keymaps/default/readme.md @@ -0,0 +1,35 @@ +# Default keymap for m122-3270 + +This keymap is intended to make the PC/3270 122-key IBM keyboard work as closely as possible to the standard +PC/3270 keyboard's (part number 1397000) original mapping. Two layers are defined: layer 0 is the PC layout, +using the blue legends on the PC/3270 keys (as shipped by Unicomp; I don't have the original keycaps, and I +know there are a few differences), while layer 1 is the 3270 layout, with keycodes selected to make the `x3270` +suite do the right thing with each key as pressed. The idea here is, eventually, to get `x3270` to +automatically shift the keyboard to layer 1 when it gains focus. + +When layer 0 is active, the upper left key of the 10-key pad is Escape, the Reset and Enter keys are Control, and +the comma and dot keys act like normal PC keys (< and >, repectively, when shifted). The Ctrl key (bottom right +of the left-side 10-key cluster) is always the left GUI key. PA2 and Jump/PA3 are PgUp and PgDn, respectively, +and the backtab key is End. The Rule/Home key is Home. The key next to the Escape key is Scroll Lock when unshifted, +and Num Lock when shifted. + +When layer 1 is active, the keys do their labeled functions. The only keys that don't do anything are CrSel, +ExSel, and Jump, though only a few of the alternate functions (on the front of the keys) work: left/right/delete +word and PA3. The rest aren't emulated by x3270. Many of the keys that have function in PC mode will *not* have +that same function in 3270 mode, since x3270 uses different keystrokes to accomplish the same function. + +To manually switch to layer 1, hold the Zoom key (the one on the far lower left of the keyboard) and press Clear +(the one at the top right of that same block of 10 keys); to switch back to layer 0, hold the Zoom key and hit +Attn (the one at the top left of that block of 10). Holding the Zoom key and the spacebar gets you to keys that +control QMK itself: Zoom-space-R resets to the bootloader, Zoom-space-E erases the EEPROM (which currently does +nothing), and Zoom-space-D turns the debugger on and off. + +Note that you need to set your Linux system to use the Scroll Lock key as the Compose key in order to get the +cent sign to register as intended, and add the following lines to a file in your home directory named `.x3270pro` +to make Dup and Field Mark work: +``` +x3270.keymap.m122: #override \ + CtrlF: FieldMark()\n\ + CtrlD: Dup() +``` +You need to then invoke `x3270` with the parameter `-keymap m122` to activate those definitions. diff --git a/keyboards/tronguylabs/m122_3270/m122_3270.c b/keyboards/tronguylabs/m122_3270/m122_3270.c new file mode 100644 index 000000000000..397d495c2350 --- /dev/null +++ b/keyboards/tronguylabs/m122_3270/m122_3270.c @@ -0,0 +1,17 @@ +/* Copyright 2021 James R. Maynard III + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "m122_3270.h" diff --git a/keyboards/tronguylabs/m122_3270/m122_3270.h b/keyboards/tronguylabs/m122_3270/m122_3270.h new file mode 100644 index 000000000000..c18020ebcd29 --- /dev/null +++ b/keyboards/tronguylabs/m122_3270/m122_3270.h @@ -0,0 +1,40 @@ +/* Copyright 2021 James R. Maynard III + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +#define LAYOUT( \ + k09, k19, k1A, k29, k39, k3A, k49, k59, k5A, k69, k79, k7A, \ + k0A, k0B, k1B, k2A, k2B, k3B, k4A, k4B, k5B, k6A, k6B, k7B, \ + k31, k32, k34, k24, k25, k26, k27, k37, k38, k28, k2C, k2D, k2E, k3E, k3C, k3F, k3G, k3H, k2G, k2F, k2H, k2I, k20, \ + k21, k41, k42, k44, k45, k46, k47, k57, k58, k48, k4C, k4D, k4E, k5E, k5C, k6F, k1G, k5G, k4G, k4F, k4H, k4I, k40, \ + k51, k52, k62, k14, k15, k16, k17, k07, k08, k18, k1C, k1D, k1E, k0E, k6E, k0G, k1F, k1H, k1I, k10, \ + k11, k12, k73, k74, k64, k65, k66, k67, k77, k78, k68, k6C, k6D, k7E, k63, k60, k0J, k1J, k61, k6H, k6I, k7J, \ + k02, k01, k00, k70, k71, k03, k72, k0F, k7H, k7I \ +) { \ + { k00, k01, k02, k03, XXX, XXX, XXX, k07, k08, k09, k0A, k0B, XXX, XXX, k0E, k0F, k0G, XXX, XXX, k0J }, \ + { k10, k11, k12, XXX, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H, k1I, k1J }, \ + { k20, k21, XXX, XXX, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, k2G, k2H, k2I, XXX }, \ + { XXX, k31, k32, XXX, k34, XXX, XXX, k37, k38, k39, k3A, k3B, k3C, XXX, k3E, k3F, k3G, k3H, XXX, XXX }, \ + { k40, k41, k42, XXX, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, k4G, k4H, k4I, XXX }, \ + { XXX, k51, k52, XXX, XXX, XXX, XXX, k57, k58, k59, k5A, k5B, k5C, XXX, k5E, XXX, k5G, XXX, XXX, XXX }, \ + { k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k6A, k6B, k6C, k6D, k6E, k6F, XXX, k6H, k6I, XXX }, \ + { k70, k71, k72, k73, k74, XXX, XXX, k77, k78, k79, k7A, k7B, XXX, XXX, k7E, XXX, XXX, k7H, k7I, k7J } \ +} diff --git a/keyboards/tronguylabs/m122_3270/readme.md b/keyboards/tronguylabs/m122_3270/readme.md new file mode 100644 index 000000000000..1dd1580bcd3e --- /dev/null +++ b/keyboards/tronguylabs/m122_3270/readme.md @@ -0,0 +1,22 @@ +# m122-3270 + +![IBM Model M 122 key](https://i.imgur.com/Oo3Ozqzh.jpg) + +This is a replacement controller for the IBM Model M 122 key terminal keyboard running on a STM32F411 BlackPill, intended to act as closely to the 3270 keyboard's functioning as possible while still being usable on a PC. + +* Keyboard Maintainer: [Jay Maynard](https://github.com/jmaynard) +* Hardware Supported: BlackPill STM32F411, Teensy++ 2.0 +* Hardware Availability: [BlackPill](https://www.adafruit.com/product/4877), [Teensy](https://www.pjrc.com/store/teensypp.html) + +Make example for this keyboard (after setting up your build environment): + + make tronguylabs/m122_3270/blackpill:default + make tronguylabs/m122_3270/teensy: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). + +A schematic and Gerber files are publicly available for those wishing to have carrier boards made +professionally instead of handwiring things. The M122 matrix connectors plug right into it. It can +be found at https://github.com/jmaynard/tronguylabs-m122-blackpill. + +This is derived from Luke Stanley's handwired/ibm122m keyboard, with my own keymapping and rework of the I/O for the BlackPill. There's also a version for the Teensy++ 2.0, since that was my original design and I still use one on one board, even though I switched to the BlackPill for future-proofing. The Teensy++ 2.0 is not recommended for new designs. diff --git a/keyboards/tronguylabs/m122_3270/teensy/config.h b/keyboards/tronguylabs/m122_3270/teensy/config.h new file mode 100644 index 000000000000..33590b40641e --- /dev/null +++ b/keyboards/tronguylabs/m122_3270/teensy/config.h @@ -0,0 +1,25 @@ +/* Copyright 2021 James R. Maynard III + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +// Teensy pin assignments: I'm wiring things a bit more straightforwardly, and +// avoiding the LED on PD6 +#define MATRIX_COL_PINS { B5, B6, B7, D0, D1, D2, D3, D4, D5, D7, E0, E1, C0, C1, C2, C3, C4, C5, C6, C7 } +#define MATRIX_ROW_PINS { F0, F1, F2, F3, F4, F5, F6, F7 } + +// The Teensy version is version 1 +#define DEVICE_VER 0x0001 diff --git a/keyboards/tronguylabs/m122_3270/teensy/readme.md b/keyboards/tronguylabs/m122_3270/teensy/readme.md new file mode 100644 index 000000000000..43357ea6102d --- /dev/null +++ b/keyboards/tronguylabs/m122_3270/teensy/readme.md @@ -0,0 +1,3 @@ +# Teensy controller for m122-3270 + +This directory contains the Teensy++ 2.0-specific definitions for the M122-3270 keyboard. diff --git a/keyboards/tronguylabs/m122_3270/teensy/rules.mk b/keyboards/tronguylabs/m122_3270/teensy/rules.mk new file mode 100644 index 000000000000..a52a6a71dafe --- /dev/null +++ b/keyboards/tronguylabs/m122_3270/teensy/rules.mk @@ -0,0 +1,19 @@ +# MCU name +MCU = at90usb1286 + +# Bootloader selection +BOOTLOADER = halfkay + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# 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 diff --git a/keyboards/tszaboo/ortho4exent/info.json b/keyboards/tszaboo/ortho4exent/info.json index a0c69526d718..4fe1e18f518b 100644 --- a/keyboards/tszaboo/ortho4exent/info.json +++ b/keyboards/tszaboo/ortho4exent/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Ortho4exent", "url": "https://github.com/tszaboo/Ortho4Exent", "maintainer": "tszaboo", - "width": 16, - "height": 5, "layouts": { "LAYOUT": { "layout": [ @@ -83,4 +81,3 @@ } } } - diff --git a/keyboards/tszaboo/ortho4exent/rules.mk b/keyboards/tszaboo/ortho4exent/rules.mk index e1756f2c4a3f..941124181beb 100644 --- a/keyboards/tszaboo/ortho4exent/rules.mk +++ b/keyboards/tszaboo/ortho4exent/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # 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 LTO_ENABLE = yes diff --git a/keyboards/tunks/ergo33/info.json b/keyboards/tunks/ergo33/info.json index c921484fab35..ccfc26e1f008 100644 --- a/keyboards/tunks/ergo33/info.json +++ b/keyboards/tunks/ergo33/info.json @@ -1,8 +1,6 @@ { "keyboard_name": "Ergo33", "url": "https://github.com/kulmajaba/tunks-keyboard", - "width": 9, - "height": 6, "layouts": { "LAYOUT": { "layout": [ @@ -15,4 +13,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/tunks/ergo33/rules.mk b/keyboards/tunks/ergo33/rules.mk index fcd2cf52be47..636759778cda 100644 --- a/keyboards/tunks/ergo33/rules.mk +++ b/keyboards/tunks/ergo33/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite EXTRAKEY_ENABLE = yes # Audio control and System control MOUSEKEY_ENABLE = yes # Mouse keys COMMAND_ENABLE = no # Commands for debug and configuration CONSOLE_ENABLE = no # Console for debug -# 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes # Rotary encoders diff --git a/keyboards/tw40/info.json b/keyboards/tw40/info.json index 1162928362d6..13f45e642e91 100644 --- a/keyboards/tw40/info.json +++ b/keyboards/tw40/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Training Wheel 40", "url": "https://p3dstore.com/products/tw40-gb", "maintainer": "KnoblesseOblige", - "width": 14, - "height": 4, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/tw40/keymaps/via/keymap.c b/keyboards/tw40/keymaps/via/keymap.c new file mode 100644 index 000000000000..ffa7470bc1b6 --- /dev/null +++ b/keyboards/tw40/keymaps/via/keymap.c @@ -0,0 +1,47 @@ +/* Copyright 2020 KnoblesseOblige + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [0] = LAYOUT_all( + 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, MO(2), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, MO(1), KC_SPC, KC_LALT, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT + + ), + [1] = 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_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSLS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LSFT, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = 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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, RGB_M_K, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + + ) + +}; diff --git a/keyboards/tw40/keymaps/via/rules.mk b/keyboards/tw40/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/tw40/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/tw40/rules.mk b/keyboards/tw40/rules.mk index ef4ccf32fbe3..68dbdff654a3 100644 --- a/keyboards/tw40/rules.mk +++ b/keyboards/tw40/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/txuu/config.h b/keyboards/txuu/config.h new file mode 100644 index 000000000000..202777a965ef --- /dev/null +++ b/keyboards/txuu/config.h @@ -0,0 +1,63 @@ +/* +Copyright 2021 Matthew Dias + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x6D64 +#define PRODUCT_ID 0x2809 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Matthew Dias +#define PRODUCT txuu + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 16 + +/* m3n3van PCB default pin-out */ +#define MATRIX_ROW_PINS { B1, B0, F7, F4, F1 } +#define MATRIX_COL_PINS { F0, F5, F6, D0, D1, D2, D3, D5, D4, D6, D7, B4, B5, B6, C6, C7 } +#define UNUSED_PINS { } + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/txuu/info.json b/keyboards/txuu/info.json new file mode 100644 index 000000000000..20efca697855 --- /dev/null +++ b/keyboards/txuu/info.json @@ -0,0 +1,81 @@ +{ + "keyboard_name": "Txuu", + "maintainer": "matthewdias", + "layout_aliases": { + "LAYOUT": "LAYOUT_65_ansi_blocker_split_bs" + }, + "layouts": { + "LAYOUT_65_ansi_blocker_split_bs": { + "layout": [ + {"label":"0,0", "x":0, "y":0}, + {"label":"0,1", "x":1, "y":0}, + {"label":"0,2", "x":2, "y":0}, + {"label":"0,3", "x":3, "y":0}, + {"label":"0,4", "x":4, "y":0}, + {"label":"0,5", "x":5, "y":0}, + {"label":"0,6", "x":6, "y":0}, + {"label":"0,7", "x":7, "y":0}, + {"label":"0,8", "x":8, "y":0}, + {"label":"0,9", "x":9, "y":0}, + {"label":"0,10", "x":10, "y":0}, + {"label":"0,11", "x":11, "y":0}, + {"label":"0,12", "x":12, "y":0}, + {"label":"0,13", "x":13, "y":0}, + {"label":"0,14", "x":14, "y":0}, + {"label":"0,15", "x":15, "y":0}, + {"label":"1,0", "x":0, "y":1, "w":1.5}, + {"label":"1,1", "x":1.5, "y":1}, + {"label":"1,2", "x":2.5, "y":1}, + {"label":"1,3", "x":3.5, "y":1}, + {"label":"1,4", "x":4.5, "y":1}, + {"label":"1,5", "x":5.5, "y":1}, + {"label":"1,6", "x":6.5, "y":1}, + {"label":"1,7", "x":7.5, "y":1}, + {"label":"1,8", "x":8.5, "y":1}, + {"label":"1,9", "x":9.5, "y":1}, + {"label":"1,10", "x":10.5, "y":1}, + {"label":"1,11", "x":11.5, "y":1}, + {"label":"1,12", "x":12.5, "y":1}, + {"label":"1,14", "x":13.5, "y":1, "w":1.5}, + {"label":"1,15", "x":15, "y":1}, + {"label":"2,0", "x":0, "y":2, "w":1.75}, + {"label":"2,1", "x":1.75, "y":2}, + {"label":"2,2", "x":2.75, "y":2}, + {"label":"2,3", "x":3.75, "y":2}, + {"label":"2,4", "x":4.75, "y":2}, + {"label":"2,5", "x":5.75, "y":2}, + {"label":"2,6", "x":6.75, "y":2}, + {"label":"2,7", "x":7.75, "y":2}, + {"label":"2,8", "x":8.75, "y":2}, + {"label":"2,9", "x":9.75, "y":2}, + {"label":"2,10", "x":10.75, "y":2}, + {"label":"2,11", "x":11.75, "y":2}, + {"label":"2,13", "x":12.75, "y":2, "w":2.25}, + {"label":"2,15", "x":15, "y":2}, + {"label":"3,0", "x":0, "y":3, "w":2.25}, + {"label":"3,2", "x":2.25, "y":3}, + {"label":"3,3", "x":3.25, "y":3}, + {"label":"3,4", "x":4.25, "y":3}, + {"label":"3,5", "x":5.25, "y":3}, + {"label":"3,6", "x":6.25, "y":3}, + {"label":"3,7", "x":7.25, "y":3}, + {"label":"3,8", "x":8.25, "y":3}, + {"label":"3,9", "x":9.25, "y":3}, + {"label":"3,10", "x":10.25, "y":3}, + {"label":"3,11", "x":11.25, "y":3}, + {"label":"3,12", "x":12.25, "y":3, "w":1.75}, + {"label":"3,14", "x":14, "y":3}, + {"label":"3,15", "x":15, "y":3}, + {"label":"4,0", "x":0, "y":4, "w":1.25}, + {"label":"4,1", "x":1.25, "y":4, "w":1.25}, + {"label":"4,3", "x":2.5, "y":4, "w":1.25}, + {"label":"4,6", "x":3.75, "y":4, "w":6.25}, + {"label":"4,10", "x":10, "y":4, "w":1.25}, + {"label":"4,11", "x":11.25, "y":4, "w":1.25}, + {"label":"4,13", "x":13, "y":4}, + {"label":"4,14", "x":14, "y":4}, + {"label":"4,15", "x":15, "y":4} + ] + } + } +} diff --git a/keyboards/txuu/keymaps/default/keymap.c b/keyboards/txuu/keymaps/default/keymap.c new file mode 100644 index 000000000000..2e0ed852b1c9 --- /dev/null +++ b/keyboards/txuu/keymaps/default/keymap.c @@ -0,0 +1,36 @@ +/* +Copyright 2021 Matthew Dias + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, KC_TRNS, + KC_CAPS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/txuu/keymaps/via/keymap.c b/keyboards/txuu/keymaps/via/keymap.c new file mode 100644 index 000000000000..b4318cd5dd8d --- /dev/null +++ b/keyboards/txuu/keymaps/via/keymap.c @@ -0,0 +1,44 @@ +/* +Copyright 2021 Matthew Dias + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, KC_TRNS, + KC_CAPS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/txuu/keymaps/via/rules.mk b/keyboards/txuu/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/txuu/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/txuu/readme.md b/keyboards/txuu/readme.md new file mode 100644 index 000000000000..1800d8a8ca9e --- /dev/null +++ b/keyboards/txuu/readme.md @@ -0,0 +1,18 @@ +# txuu + +A 65% PCB + +- Keyboard Maintainer: matthewdias +- Hardware Supported: txuu PCB, Unified Daughterboard + +To reset the keyboard into bootloader mode, press the reset switch on the underside. + +Make example for this keyboard (after setting up your build environment): + + make txuu:default + +Flashing example for this keyboard ([using the command line](https://docs.qmk.fm/#/newbs_flashing?id=flash-your-keyboard-from-the-command-line)): + + make txuu:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/txuu/rules.mk b/keyboards/txuu/rules.mk new file mode 100644 index 000000000000..ef61685f7c09 --- /dev/null +++ b/keyboards/txuu/rules.mk @@ -0,0 +1,19 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 diff --git a/keyboards/txuu/txuu.c b/keyboards/txuu/txuu.c new file mode 100644 index 000000000000..81c4b440ad25 --- /dev/null +++ b/keyboards/txuu/txuu.c @@ -0,0 +1,18 @@ +/* +Copyright 2021 Matthew Dias + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "txuu.h" diff --git a/keyboards/txuu/txuu.h b/keyboards/txuu/txuu.h new file mode 100644 index 000000000000..6ba459804b92 --- /dev/null +++ b/keyboards/txuu/txuu.h @@ -0,0 +1,37 @@ +/* +Copyright 2021 Matthew Dias + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +#define LAYOUT_65_ansi_blocker_split_bs( \ + 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, K2D, K2F, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, K3F, \ + K40, K41, K43, K46, K4A, K4B, 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, K2D, XXX, K2F }, \ + { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, XXX, K3E, K3F }, \ + { K40, K41, XXX, K43, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, XXX, K4D, K4E, K4F } \ +} diff --git a/keyboards/ua62/config.h b/keyboards/ua62/config.h index 2b1ab31dceab..492bba93e8ff 100644 --- a/keyboards/ua62/config.h +++ b/keyboards/ua62/config.h @@ -122,59 +122,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -193,26 +140,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/ua62/info.json b/keyboards/ua62/info.json index f50ec854ff8e..4090b43d1110 100644 --- a/keyboards/ua62/info.json +++ b/keyboards/ua62/info.json @@ -2,8 +2,6 @@ "keyboard_name": "ua62", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5.7, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0.6}, {"x":1, "y":0.6}, {"x":2, "y":0.35}, {"x":3, "y":0}, {"x":4, "y":0.35}, {"x":5, "y":0.7}, {"x":9, "y":0.7}, {"x":10, "y":0.35}, {"x":11, "y":0}, {"x":12, "y":0.35}, {"x":13, "y":0.6}, {"x":14, "y":0.6}, {"x":0, "y":1.6}, {"x":1, "y":1.6}, {"x":2, "y":1.35}, {"x":3, "y":1}, {"x":4, "y":1.35}, {"x":5, "y":1.7}, {"x":9, "y":1.7}, {"x":10, "y":1.35}, {"x":11, "y":1}, {"x":12, "y":1.35}, {"x":13, "y":1.6}, {"x":14, "y":1.6}, {"x":0, "y":2.6}, {"x":1, "y":2.6}, {"x":2, "y":2.35}, {"x":3, "y":2}, {"x":4, "y":2.35}, {"x":5, "y":2.7}, {"x":9, "y":2.7}, {"x":10, "y":2.35}, {"x":11, "y":2}, {"x":12, "y":2.35}, {"x":13, "y":2.6}, {"x":14, "y":2.6}, {"x":0, "y":3.6}, {"x":1, "y":3.6}, {"x":2, "y":3.35}, {"x":3, "y":3}, {"x":4, "y":3.35}, {"x":5, "y":3.7}, {"x":9, "y":3.7}, {"x":10, "y":3.35}, {"x":11, "y":3}, {"x":12, "y":3.35}, {"x":13, "y":3.6}, {"x":14, "y":3.6}, {"x":0, "y":4.6}, {"x":1, "y":4.6}, {"x":2, "y":4.35}, {"x":3, "y":4}, {"x":4, "y":4.35}, {"x":5, "y":4.7}, {"x":6, "y":3.95, "h":1.5}, {"x":8, "y":3.95, "h":1.5}, {"x":9, "y":4.7}, {"x":10, "y":4.35}, {"x":11, "y":4}, {"x":12, "y":4.35}, {"x":13, "y":4.6}, {"x":14, "y":4.6}] diff --git a/keyboards/ua62/rules.mk b/keyboards/ua62/rules.mk index b28e458b7665..3c961f9c2ab9 100644 --- a/keyboards/ua62/rules.mk +++ b/keyboards/ua62/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/uk78/config.h b/keyboards/uk78/config.h index 272e8401e6de..4ac138a9b5fb 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 . */ -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -63,5 +62,3 @@ along with this program. If not, see . #define RGBLIGHT_SAT_STEP 8 #define RGBLIGHT_VAL_STEP 8 #endif - -#endif diff --git a/keyboards/uk78/info.json b/keyboards/uk78/info.json index ecc278800afe..0d7c103d6a1c 100644 --- a/keyboards/uk78/info.json +++ b/keyboards/uk78/info.json @@ -2,20 +2,15 @@ "keyboard_name": "UK78", "url": "", "maintainer": "qmk", - "width": 19, - "height": 5, "layouts": { "LAYOUT_all": { - "key_count": 87, "layout": [{"label":"K000", "x":0, "y":0}, {"label":"K001", "x":1, "y":0}, {"label":"K002", "x":2, "y":0}, {"label":"K003", "x":3, "y":0}, {"label":"K004", "x":4, "y":0}, {"label":"K005", "x":5, "y":0}, {"label":"K006", "x":6, "y":0}, {"label":"K007", "x":7, "y":0}, {"label":"K008", "x":8, "y":0}, {"label":"K009", "x":9, "y":0}, {"label":"K010", "x":10, "y":0}, {"label":"K011", "x":11, "y":0}, {"label":"K012", "x":12, "y":0}, {"label":"K013", "x":13, "y":0}, {"label":"K014", "x":14, "y":0}, {"label":"K015", "x":15, "y":0}, {"label":"K016", "x":16, "y":0}, {"label":"K017", "x":17, "y":0}, {"label":"K018", "x":18, "y":0}, {"label":"K100", "x":0, "y":1, "w":1.5}, {"label":"K101", "x":1.5, "y":1}, {"label":"K102", "x":2.5, "y":1}, {"label":"K103", "x":3.5, "y":1}, {"label":"K104", "x":4.5, "y":1}, {"label":"K105", "x":5.5, "y":1}, {"label":"K106", "x":6.5, "y":1}, {"label":"K107", "x":7.5, "y":1}, {"label":"K108", "x":8.5, "y":1}, {"label":"K109", "x":9.5, "y":1}, {"label":"K110", "x":10.5, "y":1}, {"label":"K111", "x":11.5, "y":1}, {"label":"K112", "x":12.5, "y":1}, {"label":"K114", "x":13.5, "y":1, "w":1.5}, {"label":"K115", "x":15, "y":1}, {"label":"K116", "x":16, "y":1}, {"label":"K117", "x":17, "y":1}, {"label":"K118", "x":18, "y":1}, {"label":"K200", "x":0, "y":2, "w":1.75}, {"label":"K201", "x":1.75, "y":2}, {"label":"K202", "x":2.75, "y":2}, {"label":"K203", "x":3.75, "y":2}, {"label":"K204", "x":4.75, "y":2}, {"label":"K205", "x":5.75, "y":2}, {"label":"K206", "x":6.75, "y":2}, {"label":"K207", "x":7.75, "y":2}, {"label":"K208", "x":8.75, "y":2}, {"label":"K209", "x":9.75, "y":2}, {"label":"K210", "x":10.75, "y":2}, {"label":"K211", "x":11.75, "y":2}, {"label":"K212", "x":12.75, "y":2}, {"label":"K214", "x":13.75, "y":2, "w":1.25}, {"label":"K215", "x":15, "y":2}, {"label":"K216", "x":16, "y":2}, {"label":"K217", "x":17, "y":2}, {"label":"K218", "x":18, "y":2}, {"label":"K300", "x":0, "y":3, "w":1.25}, {"label":"K301", "x":1.25, "y":3}, {"label":"K302", "x":2.25, "y":3}, {"label":"K303", "x":3.25, "y":3}, {"label":"K304", "x":4.25, "y":3}, {"label":"K305", "x":5.25, "y":3}, {"label":"K306", "x":6.25, "y":3}, {"label":"K307", "x":7.25, "y":3}, {"label":"K308", "x":8.25, "y":3}, {"label":"K309", "x":9.25, "y":3}, {"label":"K310", "x":10.25, "y":3}, {"label":"K311", "x":11.25, "y":3}, {"label":"K312", "x":12.25, "y":3}, {"label":"K313", "x":13.25, "y":3, "w":0.75}, {"label":"K314", "x":14, "y":3}, {"label":"K315", "x":15, "y":3}, {"label":"K316", "x":16, "y":3}, {"label":"K317", "x":17, "y":3}, {"label":"K318", "x":18, "y":3}, {"label":"K400", "x":0, "y":4, "w":1.25}, {"label":"K401", "x":1.25, "y":4, "w":1.25}, {"label":"K402", "x":2.5, "y":4, "w":1.25}, {"label":"K406", "x":3.75, "y":4, "w":6.25}, {"label":"K410", "x":10, "y":4}, {"label":"K411", "x":11, "y":4}, {"label":"K412", "x":12, "y":4}, {"label":"K413", "x":13, "y":4}, {"label":"K414", "x":14, "y":4}, {"label":"K415", "x":15, "y":4}, {"label":"K416", "x":16, "y":4}, {"label":"K417", "x":17, "y":4}, {"label":"K418", "x":18, "y":4}] }, "LAYOUT_ansi": { - "key_count": 83, "layout": [{"label":"K000", "x":0, "y":0}, {"label":"K001", "x":1, "y":0}, {"label":"K002", "x":2, "y":0}, {"label":"K003", "x":3, "y":0}, {"label":"K004", "x":4, "y":0}, {"label":"K005", "x":5, "y":0}, {"label":"K006", "x":6, "y":0}, {"label":"K007", "x":7, "y":0}, {"label":"K008", "x":8, "y":0}, {"label":"K009", "x":9, "y":0}, {"label":"K010", "x":10, "y":0}, {"label":"K011", "x":11, "y":0}, {"label":"K012", "x":12, "y":0}, {"label":"K013", "x":13, "y":0}, {"label":"K014", "x":14, "y":0}, {"label":"K015", "x":15, "y":0}, {"label":"K016", "x":16, "y":0}, {"label":"K017", "x":17, "y":0}, {"label":"K018", "x":18, "y":0}, {"label":"K100", "x":0, "y":1, "w":1.5}, {"label":"K101", "x":1.5, "y":1}, {"label":"K102", "x":2.5, "y":1}, {"label":"K103", "x":3.5, "y":1}, {"label":"K104", "x":4.5, "y":1}, {"label":"K105", "x":5.5, "y":1}, {"label":"K106", "x":6.5, "y":1}, {"label":"K107", "x":7.5, "y":1}, {"label":"K108", "x":8.5, "y":1}, {"label":"K109", "x":9.5, "y":1}, {"label":"K110", "x":10.5, "y":1}, {"label":"K111", "x":11.5, "y":1}, {"label":"K112", "x":12.5, "y":1}, {"label":"K114", "x":13.5, "y":1, "w":1.5}, {"label":"K115", "x":15, "y":1}, {"label":"K116", "x":16, "y":1}, {"label":"K117", "x":17, "y":1}, {"label":"K118", "x":18, "y":1}, {"label":"K200", "x":0, "y":2, "w":1.75}, {"label":"K201", "x":1.75, "y":2}, {"label":"K202", "x":2.75, "y":2}, {"label":"K203", "x":3.75, "y":2}, {"label":"K204", "x":4.75, "y":2}, {"label":"K205", "x":5.75, "y":2}, {"label":"K206", "x":6.75, "y":2}, {"label":"K207", "x":7.75, "y":2}, {"label":"K208", "x":8.75, "y":2}, {"label":"K209", "x":9.75, "y":2}, {"label":"K210", "x":10.75, "y":2}, {"label":"K211", "x":11.75, "y":2}, {"label":"K214", "x":12.75, "y":2, "w":2.25}, {"label":"K215", "x":15, "y":2}, {"label":"K216", "x":16, "y":2}, {"label":"K217", "x":17, "y":2}, {"label":"K218", "x":18, "y":2}, {"label":"K300", "x":0, "y":3, "w":2.25}, {"label":"K302", "x":2.25, "y":3}, {"label":"K303", "x":3.25, "y":3}, {"label":"K304", "x":4.25, "y":3}, {"label":"K305", "x":5.25, "y":3}, {"label":"K306", "x":6.25, "y":3}, {"label":"K307", "x":7.25, "y":3}, {"label":"K308", "x":8.25, "y":3}, {"label":"K309", "x":9.25, "y":3}, {"label":"K310", "x":10.25, "y":3}, {"label":"K311", "x":11.25, "y":3}, {"label":"K312", "x":12.25, "y":3, "w":1.75}, {"label":"K314", "x":14, "y":3}, {"label":"K315", "x":15, "y":3}, {"label":"K316", "x":16, "y":3}, {"label":"K317", "x":17, "y":3}, {"label":"K318", "x":18, "y":3}, {"label":"K400", "x":0, "y":4, "w":1.25}, {"label":"K401", "x":1.25, "y":4, "w":1.25}, {"label":"K402", "x":2.5, "y":4, "w":1.25}, {"label":"K406", "x":3.75, "y":4, "w":6.25}, {"label":"K410", "x":10, "y":4, "w":1.5}, {"label":"K412", "x":11.5, "y":4, "w":1.5}, {"label":"K413", "x":13, "y":4}, {"label":"K414", "x":14, "y":4}, {"label":"K415", "x":15, "y":4}, {"label":"K416", "x":16, "y":4}, {"label":"K417", "x":17, "y":4}, {"label":"K418", "x":18, "y":4}] }, "LAYOUT_iso": { - "key_count": 84, "layout": [{"label":"K000", "x":0, "y":0}, {"label":"K001", "x":1, "y":0}, {"label":"K002", "x":2, "y":0}, {"label":"K003", "x":3, "y":0}, {"label":"K004", "x":4, "y":0}, {"label":"K005", "x":5, "y":0}, {"label":"K006", "x":6, "y":0}, {"label":"K007", "x":7, "y":0}, {"label":"K008", "x":8, "y":0}, {"label":"K009", "x":9, "y":0}, {"label":"K010", "x":10, "y":0}, {"label":"K011", "x":11, "y":0}, {"label":"K012", "x":12, "y":0}, {"label":"K013", "x":13, "y":0}, {"label":"K014", "x":14, "y":0}, {"label":"K015", "x":15, "y":0}, {"label":"K016", "x":16, "y":0}, {"label":"K017", "x":17, "y":0}, {"label":"K018", "x":18, "y":0}, {"label":"K100", "x":0, "y":1, "w":1.5}, {"label":"K101", "x":1.5, "y":1}, {"label":"K102", "x":2.5, "y":1}, {"label":"K103", "x":3.5, "y":1}, {"label":"K104", "x":4.5, "y":1}, {"label":"K105", "x":5.5, "y":1}, {"label":"K106", "x":6.5, "y":1}, {"label":"K107", "x":7.5, "y":1}, {"label":"K108", "x":8.5, "y":1}, {"label":"K109", "x":9.5, "y":1}, {"label":"K110", "x":10.5, "y":1}, {"label":"K111", "x":11.5, "y":1}, {"label":"K112", "x":12.5, "y":1}, {"label":"K114", "x":13.75, "y":1, "w":1.25, "h":2}, {"label":"K115", "x":15, "y":1}, {"label":"K116", "x":16, "y":1}, {"label":"K117", "x":17, "y":1}, {"label":"K118", "x":18, "y":1}, {"label":"K200", "x":0, "y":2, "w":1.75}, {"label":"K201", "x":1.75, "y":2}, {"label":"K202", "x":2.75, "y":2}, {"label":"K203", "x":3.75, "y":2}, {"label":"K204", "x":4.75, "y":2}, {"label":"K205", "x":5.75, "y":2}, {"label":"K206", "x":6.75, "y":2}, {"label":"K207", "x":7.75, "y":2}, {"label":"K208", "x":8.75, "y":2}, {"label":"K209", "x":9.75, "y":2}, {"label":"K210", "x":10.75, "y":2}, {"label":"K211", "x":11.75, "y":2}, {"label":"K212", "x":12.75, "y":2}, {"label":"K215", "x":15, "y":2}, {"label":"K216", "x":16, "y":2}, {"label":"K217", "x":17, "y":2}, {"label":"K218", "x":18, "y":2}, {"label":"K300", "x":0, "y":3, "w":1.25}, {"label":"K301", "x":1.25, "y":3}, {"label":"K302", "x":2.25, "y":3}, {"label":"K303", "x":3.25, "y":3}, {"label":"K304", "x":4.25, "y":3}, {"label":"K305", "x":5.25, "y":3}, {"label":"K306", "x":6.25, "y":3}, {"label":"K307", "x":7.25, "y":3}, {"label":"K308", "x":8.25, "y":3}, {"label":"K309", "x":9.25, "y":3}, {"label":"K310", "x":10.25, "y":3}, {"label":"K311", "x":11.25, "y":3}, {"label":"K312", "x":12.25, "y":3, "w":1.75}, {"label":"K314", "x":14, "y":3}, {"label":"K315", "x":15, "y":3}, {"label":"K316", "x":16, "y":3}, {"label":"K317", "x":17, "y":3}, {"label":"K318", "x":18, "y":3}, {"label":"K400", "x":0, "y":4, "w":1.25}, {"label":"K401", "x":1.25, "y":4, "w":1.25}, {"label":"K402", "x":2.5, "y":4, "w":1.25}, {"label":"K406", "x":3.75, "y":4, "w":6.25}, {"label":"K410", "x":10, "y":4, "w":1.5}, {"label":"K412", "x":11.5, "y":4, "w":1.5}, {"label":"K413", "x":13, "y":4}, {"label":"K414", "x":14, "y":4}, {"label":"K415", "x":15, "y":4}, {"label":"K416", "x":16, "y":4}, {"label":"K417", "x":17, "y":4}, {"label":"K418", "x":18, "y":4}] } } -} \ No newline at end of file +} diff --git a/keyboards/uk78/keymaps/default/keymap.c b/keyboards/uk78/keymaps/default/keymap.c index 18791f95734e..c23cca1b844c 100644 --- a/keyboards/uk78/keymaps/default/keymap.c +++ b/keyboards/uk78/keymaps/default/keymap.c @@ -75,48 +75,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; - -void matrix_init_user(void) { -} - -void matrix_scan_user(void) { -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - void led_set_user(uint8_t usb_led) { - - if (usb_led & (1 << USB_LED_NUM_LOCK)) { - - } else { - - } - if (usb_led & (1 << USB_LED_CAPS_LOCK)) { - DDRA |= (1 << 3); - PORTA |= (1 << 3); + setPinOutput(A3); + writePinHigh(A3); } else { - DDRA &= ~(1 << 3); - PORTA &= ~(1 << 3); + setPinInput(A3); + writePinLow(A3); } - - if (usb_led & (1 << USB_LED_SCROLL_LOCK)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_COMPOSE)) { - - } else { - - } - - if (usb_led & (1 << USB_LED_KANA)) { - - } else { - - } -} \ No newline at end of file +} diff --git a/keyboards/uk78/rules.mk b/keyboards/uk78/rules.mk index 7bcfa4ef146a..6b87f676be62 100644 --- a/keyboards/uk78/rules.mk +++ b/keyboards/uk78/rules.mk @@ -2,24 +2,16 @@ MCU = at90usb1286 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 = 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 = yes # Enable keyboard backlight functionality AUDIO_ENABLE = no diff --git a/keyboards/uk78/uk78.h b/keyboards/uk78/uk78.h index 32c72d8fde9e..46e53e7b3194 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/underscore33/rev1/info.json b/keyboards/underscore33/rev1/info.json index 5418340dc075..dff483d85f7f 100644 --- a/keyboards/underscore33/rev1/info.json +++ b/keyboards/underscore33/rev1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "underscore33", "url": "", "maintainer": "tominabox1", - "width": 10, - "height": 4, "layouts": { "LAYOUT_33_big_space": { "layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "y":0}, {"label":"Y", "x":5, "y":0}, {"label":"U", "x":6, "y":0}, {"label":"I", "x":7, "y":0}, {"label":"O", "x":8, "y":0}, {"label":"P", "x":9, "y":0},{"label":"A", "x":0, "y":1}, {"label":"S", "x":1, "y":1}, {"label":"D", "x":2, "y":1}, {"label":"F", "x":3, "y":1}, {"label":"G", "x":4, "y":1}, {"label":"H", "x":5, "y":1}, {"label":"J", "x":6, "y":1}, {"label":"K", "x":7, "y":1}, {"label":"L", "x":8, "y":1}, {"label":";", "x":9, "y":1}, {"label":"Z", "x":0, "y":2}, {"label":"X", "x":1, "y":2}, {"label":"C", "x":2, "y":2}, {"label":"V", "x":3, "y":2}, {"label":"B", "x":4, "y":2}, {"label":"N", "x":5, "y":2}, {"label":"M", "x":6, "y":2}, {"label":"<", "x":7, "y":2}, {"label":">", "x":8, "y":2}, {"label":"?", "x":9, "y":2}, {"label":"", "x":0.65, "y":3, "w":1.25}, {"label":"", "x":1.9, "y":3, "w":6.25}, {"label":"", "x":8.15, "y":3, "w":1.25}] diff --git a/keyboards/underscore33/rev1/rules.mk b/keyboards/underscore33/rev1/rules.mk index 32981133b2eb..ef61685f7c09 100644 --- a/keyboards/underscore33/rev1/rules.mk +++ b/keyboards/underscore33/rev1/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/underscore33/rev2/info.json b/keyboards/underscore33/rev2/info.json index 567270ec72de..b2c89ba34438 100644 --- a/keyboards/underscore33/rev2/info.json +++ b/keyboards/underscore33/rev2/info.json @@ -2,8 +2,6 @@ "keyboard_name": "underscore33", "url": "", "maintainer": "tominabox1", - "width": 10, - "height": 4, "layouts": { "LAYOUT_33_big_space": { "layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "y":0}, {"label":"Y", "x":5, "y":0}, {"label":"U", "x":6, "y":0}, {"label":"I", "x":7, "y":0}, {"label":"O", "x":8, "y":0}, {"label":"P", "x":9, "y":0},{"label":"A", "x":0, "y":1}, {"label":"S", "x":1, "y":1}, {"label":"D", "x":2, "y":1}, {"label":"F", "x":3, "y":1}, {"label":"G", "x":4, "y":1}, {"label":"H", "x":5, "y":1}, {"label":"J", "x":6, "y":1}, {"label":"K", "x":7, "y":1}, {"label":"L", "x":8, "y":1}, {"label":";", "x":9, "y":1}, {"label":"Z", "x":0, "y":2}, {"label":"X", "x":1, "y":2}, {"label":"C", "x":2, "y":2}, {"label":"V", "x":3, "y":2}, {"label":"B", "x":4, "y":2}, {"label":"N", "x":5, "y":2}, {"label":"M", "x":6, "y":2}, {"label":"<", "x":7, "y":2}, {"label":">", "x":8, "y":2}, {"label":"?", "x":9, "y":2}, {"label":"", "x":0.65, "y":3, "w":1.25}, {"label":"", "x":1.9, "y":3, "w":6.25}, {"label":"", "x":8.15, "y":3, "w":1.25}] diff --git a/keyboards/underscore33/rev2/rules.mk b/keyboards/underscore33/rev2/rules.mk index d226af58edc6..9acc1897c716 100644 --- a/keyboards/underscore33/rev2/rules.mk +++ b/keyboards/underscore33/rev2/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/ungodly/launch_pad/config.h b/keyboards/ungodly/launch_pad/config.h index c4da09760158..cf639a4f28ec 100644 --- a/keyboards/ungodly/launch_pad/config.h +++ b/keyboards/ungodly/launch_pad/config.h @@ -18,55 +18,105 @@ #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0x5544 // "UD" = Ungodly Design -#define PRODUCT_ID 0x4C50 // "LP" = Launch Pad -#define DEVICE_VER 0x9999 -#define MANUFACTURER Ungodly Design -#define PRODUCT Launch Pad +#define VENDOR_ID 0x5544 // "UD" = Ungodly Design +#define PRODUCT_ID 0x4C50 // "LP" = Launch Pad +#define DEVICE_VER 0x9999 +#define MANUFACTURER Ungodly Design +#define PRODUCT Launch Pad /* key matrix size */ #define MATRIX_ROWS 5 #define MATRIX_COLS 4 /* Keyboard Matrix Assignments */ -#define MATRIX_ROW_PINS { D4, D6, D7, B4, B5 } -#define MATRIX_COL_PINS { B0, B1, B2, B3 } +#define MATRIX_ROW_PINS \ + { D4, D6, D7, B4, B5 } +#define MATRIX_COL_PINS \ + { B0, B1, B2, B3 } /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW /* Rotary Encoder Assignment */ -#define ENCODERS_PAD_A { C6 } -#define ENCODERS_PAD_B { B6 } +#define ENCODERS_PAD_A \ + { C6 } +#define ENCODERS_PAD_B \ + { B6 } #define ENCODER_RESOLUTION 2 /* Midi Slider */ #define SLIDER_PIN F6 +#define MIDI_ADVANCED /* RGB Matrix configuration */ -#ifdef RGB_MATRIX_ENABLE -# define RGB_MATRIX_KEYPRESSES -#endif - #define RGB_DI_PIN F7 -#ifdef RGB_DI_PIN +#ifdef RGB_MATRIX_ENABLE # define RGBLED_NUM 22 -# define RGBLIGHT_HUE_STEP 8 -# define RGBLIGHT_SAT_STEP 8 -# define RGBLIGHT_VAL_STEP 8 -# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ -# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ -/*== all animations enable ==*/ -# define RGBLIGHT_ANIMATIONS -// RGB Matrix -# ifdef RGB_MATRIX_ENABLE -# define DRIVER_LED_TOTAL RGBLED_NUM -# endif +# define DRIVER_LED_TOTAL RGBLED_NUM +# define RGB_MATRIX_KEYPRESSES // reacts to keypresses +// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses) +// # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended +# define RGB_MATRIX_FRAMEBUFFER_EFFECTS +// # define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness) +// # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness) +# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 50 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash. +# define RGB_MATRIX_HUE_STEP 8 +# define RGB_MATRIX_SAT_STEP 8 +# define RGB_MATRIX_VAL_STEP 8 +# define RGB_MATRIX_SPD_STEP 10 +# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_PINWHEEL // default mode + +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +// # define ENABLE_RGB_MATRIX_ALPHAS_MODS +// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +// # define ENABLE_RGB_MATRIX_BREATHING +// # define ENABLE_RGB_MATRIX_BAND_SAT +// # define ENABLE_RGB_MATRIX_BAND_VAL +// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +// # define ENABLE_RGB_MATRIX_CYCLE_ALL +// # define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +// # define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +// # define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +// # define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +// # define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +// # define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +// # define ENABLE_RGB_MATRIX_DUAL_BEACON +// # define ENABLE_RGB_MATRIX_RAINBOW_BEACON +// # define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +// # define ENABLE_RGB_MATRIX_RAINDROPS +// # define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +// # define ENABLE_RGB_MATRIX_HUE_BREATHING +// # define ENABLE_RGB_MATRIX_HUE_PENDULUM +// # define ENABLE_RGB_MATRIX_HUE_WAVE +// # define ENABLE_RGB_MATRIX_PIXEL_RAIN +// # define ENABLE_RGB_MATRIX_PIXEL_FLOW +// # define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +// # define ENABLE_RGB_MATRIX_TYPING_HEATMAP +// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// # define ENABLE_RGB_MATRIX_SPLASH +// # define ENABLE_RGB_MATRIX_MULTISPLASH +// # define ENABLE_RGB_MATRIX_SOLID_SPLASH +// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + #endif /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ #define DEBOUNCE 5 - -#define LOCKING_RESYNC_ENABLE - -#define MIDI_ADVANCED diff --git a/keyboards/ungodly/launch_pad/info.json b/keyboards/ungodly/launch_pad/info.json index b766c0721172..767fef5e4481 100644 --- a/keyboards/ungodly/launch_pad/info.json +++ b/keyboards/ungodly/launch_pad/info.json @@ -1,37 +1,35 @@ { - "keyboard_name": "Launch Pad", - "url": "", - "maintainer": "luis-godinez", - "width": 4, - "height": 5, - "layouts": { - "LAYOUT_ortho_5x4": { - "layout": [ - {"x":0, "y":0}, - {"x":1, "y":0}, - {"x":2, "y":0}, - {"x":3, "y":0}, + "keyboard_name": "Launch Pad", + "url": "https://ungodly.design/products/launch-pad", + "maintainer": "Ungodly Design", + "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":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":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":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} - ] - } + {"x":0, "y":4}, + {"x":1, "y":4}, + {"x":2, "y":4}, + {"x":3, "y":4} + ] } + } } diff --git a/keyboards/ungodly/launch_pad/keymaps/default/keymap.c b/keyboards/ungodly/launch_pad/keymaps/default/keymap.c index 880b225d4365..43e0e72bdc1f 100644 --- a/keyboards/ungodly/launch_pad/keymaps/default/keymap.c +++ b/keyboards/ungodly/launch_pad/keymaps/default/keymap.c @@ -17,242 +17,279 @@ #include "analog.h" #include "qmk_midi.h" -// Each layer gets a name for readability, which is then used in the keymap matrix below. -// The underscores don't mean anything - you can have a layer called STUFF or any other name. -// Layer names don't all need to be of the same length, obviously, and you can also skip them -// entirely and just use numbers. -enum layers { -_BL = 0, -_NV, -_FN +/* Force Numlock on */ +void matrix_init_user (void) { + if (!host_keyboard_led_state().num_lock) { + tap_code(KC_NUMLOCK); + } +} + +/* Custom Layer Up/Down Keystrokes */ +enum custom_keycodes { + KC_LUP = SAFE_RANGE, //cycle layers in up direction + KC_LDN //cycle layers in down direction }; +#define HIGHEST_LAYER 2 //replace X with your highest layer +static uint8_t current_layer = 0; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_LUP: + if(record->event.pressed) { + if (current_layer == HIGHEST_LAYER){ + current_layer=0; + } else { + current_layer++; + } + layer_clear(); + layer_on(current_layer); + } + return false; + case KC_LDN: + if(record->event.pressed) { + if (current_layer == 0){ + current_layer=HIGHEST_LAYER; + } else { + current_layer--; + } + layer_clear(); + layer_on(current_layer); + } + return false; + default: + return true; + } +} const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap _BL: (Base Layer) Default Numpad Layer * ,-------------------. - * | NV | / | * |BK/FN| + * |LAYR| / | * |BACK | * |----|----|----|-----| * | 7 | 8 | 9 | - | * |----|----|----|-----| * | 4 | 5 | 6 | + | * |----|----|----|-----| - * | 1 | 2 | 3 | | - * |----|----|----| En | - * | 0 | . | | + * | 1 | 2 | 3 | En | + * |----|----|----|-----| + * | 0 | 0 | . | En | * `--------------------' */ - [_BL] = LAYOUT_ortho_5x4( - TG(_NV), KC_PSLS, KC_PAST, LT(_FN, KC_BSPC), - KC_7, KC_8, KC_9, KC_PMNS, - KC_4, KC_5, KC_6, KC_PPLS, - KC_1, KC_2, KC_3, KC_PENT, - KC_0, KC_0, KC_DOT, KC_PENT + [0] = LAYOUT_ortho_5x4( + KC_LUP, KC_PSLS, KC_PAST, LT(2, KC_BSPC), + KC_P7, KC_P8, KC_P9, KC_PMNS, + KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_P1, KC_P2, KC_P3, KC_PENT, + KC_P0, KC_P0, KC_PDOT, KC_PENT ), /* Keymap _NV: Navigation layer - * ,-------------------. - * |INS |HOME|PGUP| | - * |----|----|----|----| - * |DEL |END |PGDN| | - * |----|----|----|----| - * | | UP | | | - * |----|----|----|----| - * |LEFT|DOWN|RIGH| | - * |----|----|----| | - * | | | | - * `-------------------' - */ - [_NV] = LAYOUT_ortho_5x4( - KC_INS, KC_HOME, KC_PGUP, TG(_NV), - KC_DEL, KC_END, KC_PGDN, XXXXXXX, - XXXXXXX, KC_UP, XXXXXXX, XXXXXXX, - KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX - ), +* ,-------------------. +* |LAYR| | |NUM | +* |----|----|----|----| +* |HOME| UP |PGUP| | +* |----|----|----|----| +* |LEFT| |RIGH| | +* |----|----|----|----| +* |END |DOWN|PGDN| En | +* |----|----|----|----| +* |INS |INS |DEL | En | +* `-------------------' +*/ +[1] = LAYOUT_ortho_5x4( + KC_LUP, KC_NUMLOCK, XXXXXXX, XXXXXXX, + KC_HOME, KC_UP, KC_PGUP, XXXXXXX, + KC_LEFT, XXXXXXX, KC_RGHT, XXXXXXX, + KC_END, KC_DOWN, KC_PGDN, KC_PENT, + KC_INS, KC_INS, KC_DEL, KC_PENT +), /* Keymap _FN: RGB Function Layer * ,-------------------. - * |RMOD|RGBP|RTOG| FN | + * |LAYR| | |RTOG| * |----|----|----|----| - * |HUD |HUI | | | + * |HUD |HUI | |RGBP| * |----|----|----|----| - * |SAD |SAI | | | + * |SAD |SAI | |RMOD| * |----|----|----|----| * |VAD |VAS | | | - * |----|----|----| | - * |RST | | | | + * |----|----|----|----| + * |RST |RST | | | * `-------------------' */ - [_FN] = LAYOUT_ortho_5x4( - RGB_MOD, RGB_M_P, RGB_TOG, _______, - RGB_HUD, RGB_HUI, XXXXXXX, XXXXXXX, - RGB_SAD, RGB_SAI, XXXXXXX, XXXXXXX, + [2] = LAYOUT_ortho_5x4( + KC_LUP, XXXXXXX, XXXXXXX, RGB_TOG, + RGB_HUD, RGB_HUI, XXXXXXX, RGB_M_P, + RGB_SAD, RGB_SAI, XXXXXXX, RGB_MOD, RGB_VAD, RGB_VAI, XXXXXXX, XXXXXXX, - RESET, XXXXXXX, XXXXXXX, XXXXXXX + RESET, RESET, XXXXXXX, XXXXXXX ), }; +// (Optional) Rotary Encoder, Volume Control bool encoder_update_user(uint8_t index, bool clockwise) { if (clockwise) { tap_code(KC_VOLU); } else { tap_code(KC_VOLD); } - return true; + return true; } +// Potentiometer Slider, MIDI Control uint8_t divisor = 0; - -void slider(void) { - if (divisor++) { // only run the slider function 1/256 times it's called - return; - } - - midi_send_cc(&midi_device, 2, 0x3E, 0x7F - (analogReadPin(SLIDER_PIN) >> 3)); +void slider(void){ + if (divisor++) { // only run the slider function 1/256 times it's called + return; + } + midi_send_cc(&midi_device, 2, 0x3E, 0x7F - (analogReadPin(SLIDER_PIN) >> 3)); } void matrix_scan_user(void) { - slider(); + slider(); } // 0.91" OLED, 128x32 resolution -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { - return OLED_ROTATION_180; // flips the display 270 degrees + return OLED_ROTATION_180; } -#define ANIM_SIZE 636 // number of bytes in array, minimize for adequate firmware size, max is 1024 - -layer_state_t layer_state_set_user(layer_state_t state) { - - static const char PROGMEM gui_layers[][ANIM_SIZE] = { - { - // Home Screen - // 'layer_bl', 128x32px - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, - 0x80, 0x80, 0xc0, 0x40, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x20, 0x50, 0x50, 0x90, - 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x10, 0x10, 0xf0, 0x10, 0x10, 0x08, 0x08, 0x08, 0x04, 0x04, - 0x04, 0xfc, 0xfc, 0xfc, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0xfc, 0x7c, 0x7e, 0x7e, 0x7f, - 0x81, 0x81, 0x81, 0x81, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff, - 0xff, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0x01, 0x01, 0x01, 0xf9, 0x01, 0xf9, 0x01, - 0xf9, 0x01, 0xf9, 0x01, 0x01, 0x01, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe6, - 0xe6, 0xe6, 0xe6, 0xe6, 0xff, 0x8c, 0x52, 0x52, 0x52, 0xde, 0x84, 0x08, 0x84, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04, - 0x05, 0x05, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x02, 0x04, 0x04, 0x07, 0x04, 0x04, 0x08, 0x08, 0x08, 0x10, 0x10, - 0x10, 0x1f, 0x1f, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x20, 0x20, 0x40, - 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, - 0x7f, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x40, 0x40, 0x40, 0x4a, 0x44, 0x4a, 0x40, - 0x4f, 0x40, 0x4f, 0x40, 0x40, 0x40, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x9c, - 0x9c, 0x9c, 0x9c, 0x1c, 0xff, 0x31, 0x4a, 0x4a, 0x4a, 0x7b, 0x10, 0x21, 0x10, 0x21, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }, - { - // Navigation Screen - // 'layer_nav', 128x32px - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x40, - 0x40, 0x80, 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, 0xd0, 0x20, 0x50, 0x50, 0x90, - 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0xc8, 0x28, 0x28, 0x28, 0xc8, 0x10, - 0xb0, 0x10, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, - 0x20, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0xa1, 0x09, 0xe1, - 0xf3, 0x29, 0x05, 0x85, 0xe5, 0xe5, 0xc5, 0x89, 0x92, 0xe4, 0x08, 0xf0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x44, - 0x44, 0x22, 0xe2, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04, - 0x05, 0x05, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x09, 0x0b, 0x0b, 0x0b, 0x09, 0x04, - 0x06, 0x04, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, - 0x02, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x42, 0x48, 0x43, - 0x66, 0x4e, 0x53, 0x51, 0x51, 0x53, 0x53, 0x49, 0x24, 0x13, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x91, - 0x91, 0x52, 0x53, 0x34, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x03, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }, - { - // RGB Screen - // 'layer_rgb', 128x32px - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x9c, 0x80, 0x80, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, - 0x80, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x20, 0x50, 0x50, 0x90, - 0x10, 0x10, 0x20, 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, - 0x80, 0x80, 0x80, 0x00, 0x00, 0xe0, 0x19, 0x04, 0x62, 0x11, 0x09, 0x04, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x02, 0x04, 0x19, 0x10, 0x10, 0xf0, 0x00, 0x00, 0xf0, 0x00, 0xf0, 0xe0, 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, 0xc7, 0x24, 0x04, - 0x07, 0xe4, 0x24, 0x24, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04, - 0x05, 0x05, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x88, 0x30, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x80, 0x40, 0x60, 0x30, 0x98, 0x08, 0x08, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x0f, 0x07, 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, 0xc1, 0x22, 0x24, - 0x24, 0xc4, 0x44, 0x22, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1d, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x02, 0x02, - 0x02, 0x03, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - } - }; +static void render_rocket_logo(void) { + static const char PROGMEM rocket_logo[]={ + // Rocket Screen + // 'home', 128x32px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0x80, 0x80, 0xc0, 0x40, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x20, 0x50, 0x50, 0x90, + 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x10, 0x10, 0xf0, 0x10, 0x10, 0x08, 0x08, 0x08, 0x04, 0x04, + 0x04, 0xfc, 0xfc, 0xfc, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0xfc, 0x7c, 0x7e, 0x7e, 0x7f, + 0x81, 0x81, 0x81, 0x81, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff, + 0xff, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0x01, 0x01, 0x01, 0xf9, 0x01, 0xf9, 0x01, + 0xf9, 0x01, 0xf9, 0x01, 0x01, 0x01, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe6, + 0xe6, 0xe6, 0xe6, 0xe6, 0xff, 0x8c, 0x52, 0x52, 0x52, 0xde, 0x84, 0x08, 0x84, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04, + 0x05, 0x05, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x01, 0x01, 0x01, 0x02, 0x04, 0x04, 0x07, 0x04, 0x04, 0x08, 0x08, 0x08, 0x10, 0x10, + 0x10, 0x1f, 0x1f, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x20, 0x20, 0x40, + 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, + 0x7f, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x40, 0x40, 0x40, 0x4a, 0x44, 0x4a, 0x40, + 0x4f, 0x40, 0x4f, 0x40, 0x40, 0x40, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x9c, + 0x9c, 0x9c, 0x9c, 0x1c, 0xff, 0x31, 0x4a, 0x4a, 0x4a, 0x7b, 0x10, 0x21, 0x10, 0x21, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + oled_write_raw_P(rocket_logo, sizeof(rocket_logo)); +} +static void render_nav_logo(void) { + static const char PROGMEM nav_logo[]={ + // Navigation Screen + // 'navigation', 128x32px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x40, + 0x40, 0x80, 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, 0xd0, 0x20, 0x50, 0x50, 0x90, + 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0xc8, 0x28, 0x28, 0x28, 0xc8, 0x10, + 0xb0, 0x10, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, + 0x20, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0xa1, 0x09, 0xe1, + 0xf3, 0x29, 0x05, 0x85, 0xe5, 0xe5, 0xc5, 0x89, 0x92, 0xe4, 0x08, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x44, + 0x44, 0x22, 0xe2, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04, + 0x05, 0x05, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x09, 0x0b, 0x0b, 0x0b, 0x09, 0x04, + 0x06, 0x04, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, + 0x02, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x42, 0x48, 0x43, + 0x66, 0x4e, 0x53, 0x51, 0x51, 0x53, 0x53, 0x49, 0x24, 0x13, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x91, + 0x91, 0x52, 0x53, 0x34, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x03, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + oled_write_raw_P(nav_logo, sizeof(nav_logo)); +} +static void render_light_logo(void) { + static const char PROGMEM light_logo[]={ + // RGB Screen + // 'rgb', 128x32px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x9c, 0x80, 0x80, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, + 0x80, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x20, 0x50, 0x50, 0x90, + 0x10, 0x10, 0x20, 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, + 0x80, 0x80, 0x80, 0x00, 0x00, 0xe0, 0x19, 0x04, 0x62, 0x11, 0x09, 0x04, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x01, 0x02, 0x04, 0x19, 0x10, 0x10, 0xf0, 0x00, 0x00, 0xf0, 0x00, 0xf0, 0xe0, 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, 0xc7, 0x24, 0x04, + 0x07, 0xe4, 0x24, 0x24, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04, + 0x05, 0x05, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x88, 0x30, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x80, 0x40, 0x60, 0x30, 0x98, 0x08, 0x08, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x0f, 0x07, 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, 0xc1, 0x22, 0x24, + 0x24, 0xc4, 0x44, 0x22, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1d, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x02, 0x02, + 0x02, 0x03, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + oled_write_raw_P(light_logo, sizeof(light_logo)); +} - switch (get_highest_layer(state)) { - case _BL: - oled_write_raw_P(gui_layers[0], sizeof(gui_layers[0]) ); +bool oled_task_user(void) { + switch (get_highest_layer(layer_state)) { + case 0: + render_rocket_logo(); break; - case _NV: - oled_write_raw_P(gui_layers[1], sizeof(gui_layers[1]) ); + case 1: + render_nav_logo(); break; - case _FN: - oled_write_raw_P(gui_layers[2], sizeof(gui_layers[2]) ); + case 2: + render_light_logo(); break; default: // Or use the write_ln shortcut over adding '\n' to the end of your string oled_write_ln_P(PSTR(" UND"), false); break; } - return state; + return false; } - #endif diff --git a/keyboards/ungodly/launch_pad/keymaps/via/keymap.c b/keyboards/ungodly/launch_pad/keymaps/via/keymap.c new file mode 100644 index 000000000000..0854715befa3 --- /dev/null +++ b/keyboards/ungodly/launch_pad/keymaps/via/keymap.c @@ -0,0 +1,294 @@ +/* Copyright 2020 Ungodly Design + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +#include "analog.h" +#include "qmk_midi.h" + +/* Force Numlock on */ +void matrix_init_user (void) { + if (!host_keyboard_led_state().num_lock) { + tap_code(KC_NUMLOCK); + } +} + +/* Custom Layer Up/Down Keystrokes */ +enum custom_keycodes { + KC_LUP = SAFE_RANGE, //cycle layers in up direction + KC_LDN //cycle layers in down direction +}; +#define HIGHEST_LAYER 2 //replace X with your highest layer +static uint8_t current_layer = 0; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_LUP: + if(record->event.pressed) { + if (current_layer == HIGHEST_LAYER){ + current_layer=0; + } else { + current_layer++; + } + layer_clear(); + layer_on(current_layer); + } + return false; + case KC_LDN: + if(record->event.pressed) { + if (current_layer == 0){ + current_layer=HIGHEST_LAYER; + } else { + current_layer--; + } + layer_clear(); + layer_on(current_layer); + } + return false; + default: + return true; + } +} + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap _BL: (Base Layer) Default Numpad Layer + * ,-------------------. + * |LAYR| / | * |BACK | + * |----|----|----|-----| + * | 7 | 8 | 9 | - | + * |----|----|----|-----| + * | 4 | 5 | 6 | + | + * |----|----|----|-----| + * | 1 | 2 | 3 | En | + * |----|----|----|-----| + * | 0 | 0 | . | En | + * `--------------------' + */ + [0] = LAYOUT_ortho_5x4( + KC_LUP, KC_PSLS, KC_PAST, LT(2, KC_BSPC), + KC_P7, KC_P8, KC_P9, KC_PMNS, + KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_P1, KC_P2, KC_P3, KC_PENT, + KC_P0, KC_P0, KC_PDOT, KC_PENT + ), + +/* Keymap _NV: Navigation layer +* ,-------------------. +* |LAYR| | |NUM | +* |----|----|----|----| +* |HOME| UP |PGUP| | +* |----|----|----|----| +* |LEFT| |RIGH| | +* |----|----|----|----| +* |END |DOWN|PGDN| En | +* |----|----|----|----| +* |INS |INS |DEL | En | +* `-------------------' +*/ +[1] = LAYOUT_ortho_5x4( + KC_LUP, KC_NUMLOCK, XXXXXXX, XXXXXXX, + KC_HOME, KC_UP, KC_PGUP, XXXXXXX, + KC_LEFT, XXXXXXX, KC_RGHT, XXXXXXX, + KC_END, KC_DOWN, KC_PGDN, KC_PENT, + KC_INS, KC_INS, KC_DEL, KC_PENT +), + +/* Keymap _FN: RGB Function Layer + * ,-------------------. + * |LAYR| | |RTOG| + * |----|----|----|----| + * |HUD |HUI | |RGBP| + * |----|----|----|----| + * |SAD |SAI | |RMOD| + * |----|----|----|----| + * |VAD |VAS | | | + * |----|----|----|----| + * |RST |RST | | | + * `-------------------' + */ + [2] = LAYOUT_ortho_5x4( + KC_LUP, XXXXXXX, XXXXXXX, RGB_TOG, + RGB_HUD, RGB_HUI, XXXXXXX, RGB_M_P, + RGB_SAD, RGB_SAI, XXXXXXX, RGB_MOD, + RGB_VAD, RGB_VAI, XXXXXXX, XXXXXXX, + RESET, RESET, XXXXXXX, XXXXXXX + ), +}; + +// (Optional) Rotary Encoder, Volume Control +bool encoder_update_user(uint8_t index, bool clockwise) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + return true; +} + +// Potentiometer Slider, MIDI Control +uint8_t divisor = 0; +void slider(void){ + if (divisor++) { // only run the slider function 1/256 times it's called + return; + } + midi_send_cc(&midi_device, 2, 0x3E, 0x7F - (analogReadPin(SLIDER_PIN) >> 3)); +} + +void matrix_scan_user(void) { + slider(); +} + +// 0.91" OLED, 128x32 resolution +#ifdef OLED_ENABLE +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + return OLED_ROTATION_180; +} + +static void render_rocket_logo(void) { + static const char PROGMEM rocket_logo[]={ + // Rocket Screen + // 'home', 128x32px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0x80, 0x80, 0xc0, 0x40, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x20, 0x50, 0x50, 0x90, + 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x10, 0x10, 0xf0, 0x10, 0x10, 0x08, 0x08, 0x08, 0x04, 0x04, + 0x04, 0xfc, 0xfc, 0xfc, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0xfc, 0x7c, 0x7e, 0x7e, 0x7f, + 0x81, 0x81, 0x81, 0x81, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff, + 0xff, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0x01, 0x01, 0x01, 0xf9, 0x01, 0xf9, 0x01, + 0xf9, 0x01, 0xf9, 0x01, 0x01, 0x01, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe6, + 0xe6, 0xe6, 0xe6, 0xe6, 0xff, 0x8c, 0x52, 0x52, 0x52, 0xde, 0x84, 0x08, 0x84, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04, + 0x05, 0x05, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x01, 0x01, 0x01, 0x02, 0x04, 0x04, 0x07, 0x04, 0x04, 0x08, 0x08, 0x08, 0x10, 0x10, + 0x10, 0x1f, 0x1f, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x20, 0x20, 0x40, + 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, + 0x7f, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x40, 0x40, 0x40, 0x4a, 0x44, 0x4a, 0x40, + 0x4f, 0x40, 0x4f, 0x40, 0x40, 0x40, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x9c, + 0x9c, 0x9c, 0x9c, 0x1c, 0xff, 0x31, 0x4a, 0x4a, 0x4a, 0x7b, 0x10, 0x21, 0x10, 0x21, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + oled_write_raw_P(rocket_logo, sizeof(rocket_logo)); +} +static void render_nav_logo(void) { + static const char PROGMEM nav_logo[]={ + // Navigation Screen + // 'navigation', 128x32px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x40, + 0x40, 0x80, 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, 0xd0, 0x20, 0x50, 0x50, 0x90, + 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0xc8, 0x28, 0x28, 0x28, 0xc8, 0x10, + 0xb0, 0x10, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, + 0x20, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0xa1, 0x09, 0xe1, + 0xf3, 0x29, 0x05, 0x85, 0xe5, 0xe5, 0xc5, 0x89, 0x92, 0xe4, 0x08, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x44, + 0x44, 0x22, 0xe2, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04, + 0x05, 0x05, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x09, 0x0b, 0x0b, 0x0b, 0x09, 0x04, + 0x06, 0x04, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, + 0x02, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x42, 0x48, 0x43, + 0x66, 0x4e, 0x53, 0x51, 0x51, 0x53, 0x53, 0x49, 0x24, 0x13, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x91, + 0x91, 0x52, 0x53, 0x34, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x03, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + oled_write_raw_P(nav_logo, sizeof(nav_logo)); +} +static void render_light_logo(void) { + static const char PROGMEM light_logo[]={ + // RGB Screen + // 'rgb', 128x32px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x9c, 0x80, 0x80, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, + 0x80, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x20, 0x50, 0x50, 0x90, + 0x10, 0x10, 0x20, 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, + 0x80, 0x80, 0x80, 0x00, 0x00, 0xe0, 0x19, 0x04, 0x62, 0x11, 0x09, 0x04, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x01, 0x02, 0x04, 0x19, 0x10, 0x10, 0xf0, 0x00, 0x00, 0xf0, 0x00, 0xf0, 0xe0, 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, 0xc7, 0x24, 0x04, + 0x07, 0xe4, 0x24, 0x24, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04, + 0x05, 0x05, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x88, 0x30, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x80, 0x40, 0x60, 0x30, 0x98, 0x08, 0x08, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x0f, 0x07, 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, 0xc1, 0x22, 0x24, + 0x24, 0xc4, 0x44, 0x22, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1d, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x02, 0x02, + 0x02, 0x03, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + oled_write_raw_P(light_logo, sizeof(light_logo)); +} + +bool oled_task_user(void) { + switch (get_highest_layer(layer_state)) { + case 0: + render_rocket_logo(); + break; + case 1: + render_nav_logo(); + break; + case 2: + render_light_logo(); + break; + default: + // Or use the write_ln shortcut over adding '\n' to the end of your string + oled_write_ln_P(PSTR(" UND"), false); + break; + } + return false; +} +#endif diff --git a/keyboards/ungodly/launch_pad/keymaps/via/rules.mk b/keyboards/ungodly/launch_pad/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/ungodly/launch_pad/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/ungodly/launch_pad/keymaps/warzone/keymap.c b/keyboards/ungodly/launch_pad/keymaps/warzone/keymap.c new file mode 100644 index 000000000000..63f142d913df --- /dev/null +++ b/keyboards/ungodly/launch_pad/keymaps/warzone/keymap.c @@ -0,0 +1,270 @@ +/* Copyright 2020 Ungodly Design + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +#include "analog.h" +#include "qmk_midi.h" + +/* Force Numlock on */ +void matrix_init_user (void) { + if (!host_keyboard_led_state().num_lock) { + tap_code(KC_NUMLOCK); + } +} + +// Tap Dance declarations +enum { + TD_ESC_TAB, + TD_NUMLOCK_L1, + TD_3_L0 +}; + +// Tap Dance definitions +qk_tap_dance_action_t tap_dance_actions[] = { + // Tap once for Escape, twice for Number 4 (armor plates in warzone) + [TD_ESC_TAB] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_TAB), + [TD_3_L0] = ACTION_TAP_DANCE_LAYER_TOGGLE(KC_3, 1), + [TD_NUMLOCK_L1] = ACTION_TAP_DANCE_LAYER_TOGGLE(KC_NUMLOCK, 1), +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: (Base Layer) Default Numpad Layer + * ,-------------------. + * | NV | / | * |BK/FN| + * |----|----|----|-----| + * | 7 | 8 | 9 | - | + * |----|----|----|-----| + * | 4 | 5 | 6 | + | + * |----|----|----|-----| + * | 1 | 2 | 3 | En | + * |----|----|----|-----| + * | 0 | 0 | . | En | + * `--------------------' + */ + [0] = LAYOUT_ortho_5x4( + TD(TD_NUMLOCK_L1), KC_PSLS, KC_PAST, LT(2, KC_BSPC), + KC_P7, KC_P8, KC_P9, KC_PMNS, + KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_P1, KC_P2, KC_P3, KC_PENT, + KC_P0, KC_P0, KC_PDOT, KC_PENT + ), + /* Keymap _WAR: (Warzone Layer) Default Numpad Layer for COD Warzone N00BS + * ,-------------------. + * | R | F | V | Spc | + * |----|----|----|-----| + * | E | D | C | Alt | + * |----|----|----|-----| + * | W | S | X | 4 | + * |----|----|----|-----| + * | Q | A | Z | 3 | + * |----|----|----|-----| + * | Esc|Ctrl|Shift| M | + * `--------------------' + */ + [1] = LAYOUT_ortho_5x4( + KC_R, KC_F, KC_V, KC_SPACE, + KC_E, KC_D, KC_C, KC_LALT, + KC_W, KC_S, KC_X, KC_4, + KC_Q, KC_A, KC_Z, TD(TD_3_L0), + TD(TD_ESC_TAB), KC_LCTRL, KC_LSHIFT, KC_M + ), + /* Keymap _FN: RGB Function Layer + * ,-------------------. + * |LAYR| | |RTOG| + * |----|----|----|----| + * |HUD |HUI | |RGBP| + * |----|----|----|----| + * |SAD |SAI | |RMOD| + * |----|----|----|----| + * |VAD |VAS | | | + * |----|----|----|----| + * |RST |RST | | | + * `-------------------' + */ + [2] = LAYOUT_ortho_5x4( + KC_LUP, XXXXXXX, XXXXXXX, RGB_TOG, + RGB_HUD, RGB_HUI, XXXXXXX, RGB_M_P, + RGB_SAD, RGB_SAI, XXXXXXX, RGB_MOD, + RGB_VAD, RGB_VAI, XXXXXXX, XXXXXXX, + RESET, RESET, XXXXXXX, XXXXXXX + ), +}; + +// (Optional) Rotary Encoder, Volume Control +bool encoder_update_user(uint8_t index, bool clockwise) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + return true; +} + +// Potentiometer Slider, MIDI Control +uint8_t divisor = 0; +void slider(void){ + if (divisor++) { // only run the slider function 1/256 times it's called + return; + } + midi_send_cc(&midi_device, 2, 0x3E, 0x7F - (analogReadPin(SLIDER_PIN) >> 3)); +} + +void matrix_scan_user(void) { + slider(); +} + +// 0.91" OLED, 128x32 resolution +#ifdef OLED_ENABLE +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + return OLED_ROTATION_180; +} + +static void render_rocket_logo(void) { + static const char PROGMEM rocket_logo[]={ + // Rocket Screen + // 'home', 128x32px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0x80, 0x80, 0xc0, 0x40, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x20, 0x50, 0x50, 0x90, + 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x10, 0x10, 0xf0, 0x10, 0x10, 0x08, 0x08, 0x08, 0x04, 0x04, + 0x04, 0xfc, 0xfc, 0xfc, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0xfc, 0x7c, 0x7e, 0x7e, 0x7f, + 0x81, 0x81, 0x81, 0x81, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff, + 0xff, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0x01, 0x01, 0x01, 0xf9, 0x01, 0xf9, 0x01, + 0xf9, 0x01, 0xf9, 0x01, 0x01, 0x01, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe6, + 0xe6, 0xe6, 0xe6, 0xe6, 0xff, 0x8c, 0x52, 0x52, 0x52, 0xde, 0x84, 0x08, 0x84, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04, + 0x05, 0x05, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x01, 0x01, 0x01, 0x02, 0x04, 0x04, 0x07, 0x04, 0x04, 0x08, 0x08, 0x08, 0x10, 0x10, + 0x10, 0x1f, 0x1f, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x20, 0x20, 0x40, + 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, + 0x7f, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x40, 0x40, 0x40, 0x4a, 0x44, 0x4a, 0x40, + 0x4f, 0x40, 0x4f, 0x40, 0x40, 0x40, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x9c, + 0x9c, 0x9c, 0x9c, 0x1c, 0xff, 0x31, 0x4a, 0x4a, 0x4a, 0x7b, 0x10, 0x21, 0x10, 0x21, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + oled_write_raw_P(rocket_logo, sizeof(rocket_logo)); +} +static void render_warzone_logo(void) { + static const char PROGMEM warzone_logo[]={ + // Home Screen + // 'warzone_bit', 128x32px + 0x00, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xe0, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0xe0, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xfe, + 0xfc, 0xf0, 0x00, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x7f, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x80, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xc0, 0xc0, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf8, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xe0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0xf8, 0xfe, 0xff, 0xff, 0xff, 0x7f, 0x1f, + 0x07, 0x01, 0x00, 0x00, 0x00, 0x03, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xf0, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x1f, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, + 0xff, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x80, 0xe0, 0xf8, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x07, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x03, 0x03, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x03, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x00, + 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x01, 0x0f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, + 0x00, 0x03, 0x1f, 0x3f, 0x3f, 0x7f, 0x7f, 0x7f, 0x7e, 0x7e, 0x7e, 0x7f, 0x7f, 0x7f, 0x3f, 0x3f, + 0x1f, 0x07, 0x00, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, + 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x1f, 0x3f, 0x3f, 0x7f, 0x7f, 0x7f, 0x7e, 0x7e, 0x7e, 0x7f, 0x7f, + 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x01, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, + 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x07, 0x7f, 0x7f, + 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x0f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7e, 0x00 + }; + oled_write_raw_P(warzone_logo, sizeof(warzone_logo)); +} +static void render_light_logo(void) { + static const char PROGMEM light_logo[]={ + // RGB Screen + // 'rgb', 128x32px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x9c, 0x80, 0x80, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, + 0x80, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x20, 0x50, 0x50, 0x90, + 0x10, 0x10, 0x20, 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, + 0x80, 0x80, 0x80, 0x00, 0x00, 0xe0, 0x19, 0x04, 0x62, 0x11, 0x09, 0x04, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x01, 0x02, 0x04, 0x19, 0x10, 0x10, 0xf0, 0x00, 0x00, 0xf0, 0x00, 0xf0, 0xe0, 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, 0xc7, 0x24, 0x04, + 0x07, 0xe4, 0x24, 0x24, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04, + 0x05, 0x05, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x88, 0x30, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x80, 0x40, 0x60, 0x30, 0x98, 0x08, 0x08, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x0f, 0x07, 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, 0xc1, 0x22, 0x24, + 0x24, 0xc4, 0x44, 0x22, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1d, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x02, 0x02, + 0x02, 0x03, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + oled_write_raw_P(light_logo, sizeof(light_logo)); +} + +bool oled_task_user(void) { + switch (get_highest_layer(layer_state)) { + case 0: + render_rocket_logo(); + break; + case 1: + render_warzone_logo(); + break; + case 2: + render_light_logo(); + break; + default: + // Or use the write_ln shortcut over adding '\n' to the end of your string + oled_write_ln_P(PSTR(" UND"), false); + break; + } + return false; +} +#endif diff --git a/keyboards/ungodly/launch_pad/keymaps/warzone/rules.mk b/keyboards/ungodly/launch_pad/keymaps/warzone/rules.mk new file mode 100644 index 000000000000..791d5ab50213 --- /dev/null +++ b/keyboards/ungodly/launch_pad/keymaps/warzone/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +TAP_DANCE_ENABLE = yes diff --git a/keyboards/ungodly/launch_pad/launch_pad.c b/keyboards/ungodly/launch_pad/launch_pad.c index fde6ed20acba..e5ec112f9bcb 100644 --- a/keyboards/ungodly/launch_pad/launch_pad.c +++ b/keyboards/ungodly/launch_pad/launch_pad.c @@ -42,20 +42,3 @@ led_config_t g_led_config = { { 2, 2 } }; #endif - -void eeconfig_init_kb(void) { -#ifdef RGBLIGHT_ENABLE - rgblight_enable(); // Enable RGB by default - rgblight_sethsv(0, 255, 255); // Set default HSV - red hue, full saturation, full brightness -# ifdef RGBLIGHT_ANIMATIONS - rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL + 2); // set to RGB_RAINBOW_SWIRL by default -# endif -#endif - -#ifdef RGB_MATRIX_ENABLE - rgb_matrix_enable(); // Enable RGB by default -#endif - - eeconfig_update_kb(0); - eeconfig_init_user(); -} diff --git a/keyboards/ungodly/launch_pad/readme.md b/keyboards/ungodly/launch_pad/readme.md index 89e4b6413dde..5a449bcab44f 100644 --- a/keyboards/ungodly/launch_pad/readme.md +++ b/keyboards/ungodly/launch_pad/readme.md @@ -22,11 +22,9 @@ Numpad Layout | 5x4 Layout ![Numpad](https://i.imgur.com/4XvqCBHl.jpg) | ![5x4](https://i.imgur.com/mwtGnPSl.jpg) -|Reset Bootloader| | -|---|---| -|Use tweezers to short the two bottom pins of the J-Link pinout.|![Numpad](https://i.imgur.com/ArSIcK0.pngl)| -* Keyboard Maintainer: [Luis Godinez](https://github.com/luis-Godinez) + +* Keyboard Maintainer: [Luis Godinez](https://github.com/luis-godinez) * Hardware Supported: Launch Pad PCB * Hardware Availability: [Ungodly.Design](https://ungodly.design/products/launch-pad-pcb) @@ -35,3 +33,59 @@ Make example for this keyboard (after setting up your build environment): make ungodly/launch_pad: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). + +# Firmware +- [v1.0](https://github.com/luis-godinez/qmk_firmware/releases/tag/launch_pad) + +# Reset Bootloader + + + + + + +
Use tweezers to short the two bottom pins of the J-Link pinout.
+ +# Midi Setup + + + + + + + + + + +
WindowsMac
+
    +
  • Midi Mixer
  • +
      +
    • Download the latest version of Midi Mixer
    • +
    • Run the exe to install the application.
    • Launch the MIDI Mixer application.
    • +
    • Navigate to the "Profiles" tab and select the "Ungodly Design Launch Pad" preset.
    • +
    • Navigate to the "Groups" tab and select the audio source you would like to control. +
      Midi Mixer
    • +
    • Optionally, Navigate to the "Settings" tab and enable/disable "Logarithmic volume curve".
    • +
    +
+
+ +
+ +# Custom OLED Displays + +Layer | Graphic +:----:|:----: +home | ![home](https://i.imgur.com/tK3u7ZU.png) +nav | ![nav](https://i.imgur.com/J0FNZfR.png) +rgb | ![rgb](https://i.imgur.com/XK6r6KL.png) + +* These instructions require compiling your own firmware. [Ensure that your build environenment is setup](https://beta.docs.qmk.fm/tutorial/newbs_getting_started). +* Use [QMK Logo Editor](https://joric.github.io/qle/) to create your own LCD graphics. +* Copy the generated output into your keymap ([sample code](https://github.com/qmk/qmk_firmware/blob/master/keyboards/ungodly/launch_pad/keymaps/default/keymap.c)) + * Note: By default, the LCD is configured as a vertical display with a 180 degree rotation. You may need to change the `OLED_ROTATION` value in the `keymap.c` to achieve your desired effect. +* Compile the firmware and flash it to your launch pad. diff --git a/keyboards/ungodly/launch_pad/rules.mk b/keyboards/ungodly/launch_pad/rules.mk index 298ee450cb19..ff99146edd63 100644 --- a/keyboards/ungodly/launch_pad/rules.mk +++ b/keyboards/ungodly/launch_pad/rules.mk @@ -7,21 +7,19 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output MIDI_ENABLE = yes -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 ENCODER_ENABLE = yes RGB_MATRIX_ENABLE = yes RGB_MATRIX_DRIVER = WS2812 diff --git a/keyboards/ungodly/nines/info.json b/keyboards/ungodly/nines/info.json index 4a3c542441fc..fc93e94a1d02 100644 --- a/keyboards/ungodly/nines/info.json +++ b/keyboards/ungodly/nines/info.json @@ -2,8 +2,6 @@ "keyboard_name": "The Nines", "url": "https://www.qlavier.com/", "maintainer": "Ungodly Design", - "width": 3, - "height": 3, "layouts": { "LAYOUT_ortho_3x3": { "layout": [ diff --git a/keyboards/ungodly/nines/rules.mk b/keyboards/ungodly/nines/rules.mk index c8cbaf06bf67..807f593d7e97 100644 --- a/keyboards/ungodly/nines/rules.mk +++ b/keyboards/ungodly/nines/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes # Rotary encoder support diff --git a/keyboards/unicomp/classic_ultracl_post_2013/info.json b/keyboards/unicomp/classic_ultracl_post_2013/info.json new file mode 100644 index 000000000000..08f4d5ebf7ad --- /dev/null +++ b/keyboards/unicomp/classic_ultracl_post_2013/info.json @@ -0,0 +1,16 @@ +{ + "keyboard_name": "unicomp/classic_ultracl_post_2013", + "url": "https://github.com/purdeaandrei/overnumpad_controller_1xb", + "maintainer": "purdeaandrei", + "layouts": { + "LAYOUT_all": { + "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5}, {"x":14, "y":1.5}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":13.75, "y":3.5, "w":1.25}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":21.5, "y":3.5}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5}, {"x":13.25, "y":4.5, "w":1.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5}, {"x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5}, {"x":5, "y":5.5, "w":4.75}, {"x":9.75, "y":5.5, "w":1.25}, {"x":11, "y":5.5, "w":1.5}, {"x":12.5, "y":5.5}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5}, {"x":19.5, "y":5.5}, {"x":20.5, "y":5.5}, {"x":21.5, "y":5.5}] + }, + "LAYOUT_ansi": { + "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5, "h":2}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5, "w":2.25}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":0, "y":4.5, "w":2.25}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5, "h":2}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5}, {"x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":5.75}, {"x":9.75, "y":5.5, "w":1.25}, {"x":11, "y":5.5, "w":1.5}, {"x":12.5, "y":5.5}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5, "w":2}, {"x":20.5, "y":5.5}] + }, + "LAYOUT_iso": { + "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.75, "y":2.5, "w":1.25, "h":2}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5, "h":2}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5, "h":2}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5}, {"x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":5.75}, {"x":9.75, "y":5.5, "w":1.25}, {"x":11, "y":5.5, "w":1.5}, {"x":12.5, "y":5.5}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5, "w":2}, {"x":20.5, "y":5.5}] + } + } +} diff --git a/keyboards/unicomp/classic_ultracl_post_2013/keymaps/default/keymap.c b/keyboards/unicomp/classic_ultracl_post_2013/keymaps/default/keymap.c new file mode 100644 index 000000000000..4ef39ed7b4e5 --- /dev/null +++ b/keyboards/unicomp/classic_ultracl_post_2013/keymaps/default/keymap.c @@ -0,0 +1,33 @@ +/* Copyright 2020 Purdea Andrei + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL,KC_BSPC,KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT,KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTRL, KC_LGUI, KC_LALT, KC_NO, KC_SPC, KC_RGUI, KC_RALT, KC_APP, KC_RCTRL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_P0, KC_PDOT, KC_PENT + ) +}; diff --git a/keyboards/unicomp/classic_ultracl_post_2013/keymaps/default/readme.md b/keyboards/unicomp/classic_ultracl_post_2013/keymaps/default/readme.md new file mode 100644 index 000000000000..7ac6e45ce708 --- /dev/null +++ b/keyboards/unicomp/classic_ultracl_post_2013/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for unicomp/classic_ultracl_post_2013/$(CONTROLLER) diff --git a/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/config.h b/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/config.h new file mode 100644 index 000000000000..feb2e32d5709 --- /dev/null +++ b/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/config.h @@ -0,0 +1,75 @@ +/* Copyright 2020 Purdea Andrei + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x16C0 +#define PRODUCT_ID 0x27DB +#define DEVICE_VER 0x0001 +#define MANUFACTURER Unicomp/Purdea Andrei +#define PRODUCT Unicomp Spacesaver M +#define SERIAL_NUMBER "purdea.ro:overnumpad_controller" + +/* key matrix size */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 16 + +/* + * 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) + * + */ + +// All pins in order from left-to-right, as seen on the keyboard: +// C3, C2, C1, C0, A3, A4, A5, A6, A7, C4, C5, B0, B1, B10, B12, B13, B14, B15, C6, C7, C8, C9, A8, A9, A10, +// On this chip A10, B10 have stronger pull-ups, so it's better to avoid them if possible. + +// On this keyboard the right-most pin is not used, so that is A10. +// On this keyboard the right-most 8 pins (excluding the unused pin) are routed on the bottom. + +#define MATRIX_COL_PINS { C3, C2, C1, C0, A3, A4, A5, A6, A7, C4, C5, B0, B1, B10, B12, B13 } +#define MATRIX_ROW_PINS { B14, B15, C6, C7, C8, C9, A8, A9 } +//#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION ROW2COL + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +#define MATRIX_HAS_GHOST + +#define STM32_HSECLK 16000000 + +#define SOLENOID_PIN B5 +#define HAPTIC_ENABLE_PIN C13 +#define SOLENOID_DEFAULT_DWELL 4 +#define SOLENOID_MIN_DWELL 4 +#define HAPTIC_OFF_IN_LOW_POWER 1 +#define NO_HAPTIC_MOD + +#define LED_NUM_LOCK_PIN C12 +#define LED_CAPS_LOCK_PIN C11 +#define LED_SCROLL_LOCK_PIN C10 +#define LED_ON_STATE 1 diff --git a/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/overnumpad_1xb.c b/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/overnumpad_1xb.c new file mode 100644 index 000000000000..cb5ec3dc124e --- /dev/null +++ b/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/overnumpad_1xb.c @@ -0,0 +1,24 @@ +/* Copyright 2020 Purdea Andrei + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "overnumpad_1xb.h" + +void keyboard_post_init_kb(void) +{ + //debug_enable=true; + //debug_matrix=true; +} + diff --git a/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/overnumpad_1xb.h b/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/overnumpad_1xb.h new file mode 100644 index 000000000000..a62e8cfbab21 --- /dev/null +++ b/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/overnumpad_1xb.h @@ -0,0 +1,88 @@ +/* Copyright 2020 Purdea Andrei + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + +#define LAYOUT_all( \ + k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ + k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_bsp_hidden, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ + k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_backsl, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ + k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_nuhs,k_return, kp_4, kp_5, kp_6, kp_plus_hidden, \ + k_lshift,k_nubs,k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift_hidden, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ + k_lctrl, k_lwin, k_lalt, k_code, k_space, k_1_d, k_6_4, k_rmenu, k_rctrl, k_left, k_down, k_right, kp_0_hidden, kp_0, kp_dot, kp_enter_hidden \ +) \ +{ \ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ + /* 0 */ { k_esc, k_pause, k_f3, k_f1, k_ins, k_3, k_4, k_6, k_f5, k_f7, k_f9, k_f11, k_prscr, k_right, k_scrl, KC_NO }, \ + /* 1 */ { k_tab, KC_NO, k_del, k_pgdn, KC_NO, k_e, k_t, k_u, k_backspace, k_minus, k_down, k_end, k_home, k_1_d, KC_NO, k_caps }, \ + /* 2 */ { k_1, k_bsp_hidden, kp_nl, k_pgup, k_code, k_i, k_r, k_y, k_equals, k_9, k_0, kp_mult, kp_div, k_up, k_lwin, KC_NO }, \ + /* 3 */ { k_q, k_lshift, kp_9, k_2, KC_NO, k_k, k_f, k_h, k_squarebrcl, k_o, k_semicolon, kp_8, kp_7, KC_NO, KC_NO, k_lctrl }, \ + /* 4 */ { k_a, KC_NO, kp_6, k_w, k_lalt, k_d, k_g, k_j, k_backsl, k_squarebrop, k_singlequote, kp_5, kp_4, k_rshift_hidden, kp_plus_hidden, KC_NO }, \ + /* 5 */ { k_z, k_rshift, kp_dot, k_x, KC_NO, k_cm, k_b, k_m, k_return, k_period, k_p, kp_0, kp_1, KC_NO, kp_0_hidden, k_rctrl }, \ + /* 6 */ { k_nubs, KC_NO, kp_3, k_s, k_6_4, k_c, k_v, k_n, k_left, k_l, k_fwslash, kp_2, kp_plus, k_nuhs, kp_enter_hidden, KC_NO }, \ + /* 7 */ { k_tild, KC_NO, kp_minus, k_f2, k_f4, k_8, k_5, k_7, k_f6, k_f8, k_f10, k_f12, k_rmenu, k_space, kp_enter, KC_NO } \ +} + +#define LAYOUT_ansi( \ + k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ + k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ + k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_backsl, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ + k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_return, kp_4, kp_5, kp_6, \ + k_lshift, k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ + k_lctrl, k_lwin, k_lalt, k_space, k_1_d, k_6_4, k_rmenu, k_rctrl, k_left, k_down, k_right, kp_0, kp_dot \ +) \ +{ \ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ + /* 0 */ { k_esc, k_pause, k_f3, k_f1, k_ins, k_3, k_4, k_6, k_f5, k_f7, k_f9, k_f11, k_prscr, k_right, k_scrl, KC_NO }, \ + /* 1 */ { k_tab, KC_NO, k_del, k_pgdn, KC_NO, k_e, k_t, k_u, k_backspace, k_minus, k_down, k_end, k_home, k_1_d, KC_NO, k_caps }, \ + /* 2 */ { k_1, KC_NO, kp_nl, k_pgup, KC_NO, k_i, k_r, k_y, k_equals, k_9, k_0, kp_mult, kp_div, k_up, k_lwin, KC_NO }, \ + /* 3 */ { k_q, k_lshift, kp_9, k_2, KC_NO, k_k, k_f, k_h, k_squarebrcl, k_o, k_semicolon, kp_8, kp_7, KC_NO, KC_NO, k_lctrl }, \ + /* 4 */ { k_a, KC_NO, kp_6, k_w, k_lalt, k_d, k_g, k_j, k_backsl, k_squarebrop, k_singlequote, kp_5, kp_4, KC_NO, KC_NO, KC_NO }, \ + /* 5 */ { k_z, k_rshift, kp_dot, k_x, KC_NO, k_cm, k_b, k_m, k_return, k_period, k_p, kp_0, kp_1, KC_NO, KC_NO, k_rctrl }, \ + /* 6 */ { KC_NO, KC_NO, kp_3, k_s, k_6_4, k_c, k_v, k_n, k_left, k_l, k_fwslash, kp_2, kp_plus, KC_NO, KC_NO, KC_NO }, \ + /* 7 */ { k_tild, KC_NO, kp_minus, k_f2, k_f4, k_8, k_5, k_7, k_f6, k_f8, k_f10, k_f12, k_rmenu, k_space, kp_enter, KC_NO } \ +} + +#define LAYOUT_iso( \ + k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ + k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ + k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_return, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ + k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_nuhs, kp_4, kp_5, kp_6, \ + k_lshift,k_nubs,k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ + k_lctrl, k_lwin, k_lalt, k_space, k_1_d, k_6_4, k_rmenu, k_rctrl, k_left, k_down, k_right, kp_0, kp_dot \ +) \ +{ \ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ + /* 0 */ { k_esc, k_pause, k_f3, k_f1, k_ins, k_3, k_4, k_6, k_f5, k_f7, k_f9, k_f11, k_prscr, k_right, k_scrl, KC_NO }, \ + /* 1 */ { k_tab, KC_NO, k_del, k_pgdn, KC_NO, k_e, k_t, k_u, k_backspace, k_minus, k_down, k_end, k_home, k_1_d, KC_NO, k_caps }, \ + /* 2 */ { k_1, KC_NO, kp_nl, k_pgup, KC_NO, k_i, k_r, k_y, k_equals, k_9, k_0, kp_mult, kp_div, k_up, k_lwin, KC_NO }, \ + /* 3 */ { k_q, k_lshift, kp_9, k_2, KC_NO, k_k, k_f, k_h, k_squarebrcl, k_o, k_semicolon, kp_8, kp_7, KC_NO, KC_NO, k_lctrl }, \ + /* 4 */ { k_a, KC_NO, kp_6, k_w, k_lalt, k_d, k_g, k_j, KC_NO, k_squarebrop, k_singlequote, kp_5, kp_4, KC_NO, KC_NO, KC_NO }, \ + /* 5 */ { k_z, k_rshift, kp_dot, k_x, KC_NO, k_cm, k_b, k_m, k_return, k_period, k_p, kp_0, kp_1, KC_NO, KC_NO, k_rctrl }, \ + /* 6 */ { k_nubs, KC_NO, kp_3, k_s, k_6_4, k_c, k_v, k_n, k_left, k_l, k_fwslash, kp_2, kp_plus, k_nuhs, KC_NO, KC_NO }, \ + /* 7 */ { k_tild, KC_NO, kp_minus, k_f2, k_f4, k_8, k_5, k_7, k_f6, k_f8, k_f10, k_f12, k_rmenu, k_space, kp_enter, KC_NO } \ +} diff --git a/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/readme.md b/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/readme.md new file mode 100644 index 000000000000..fe8fc769e499 --- /dev/null +++ b/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/readme.md @@ -0,0 +1,28 @@ +# unicomp/classic_ultracl_post_2013/overnumpad_1xb + +![unicomp/classic_ultracl_post_2013/overnumpad_1xb](https://www.pckeyboard.com/mm5/graphics/00000001/UB4ZPHA_800x343.jpg) + +Will support the following Unicomp Classic and Ultra Classic keyboards: + * 104-key ANSI and 105-key ISO keyboards with post-2013 bottom row are supported. + * It will likely also support 103-key ANSI or 104-key ISO keyboard variants (not tested) (these are the keyboards with no menu key) + * At this point in time it's unclear if it supports 101-key keyboard variants built after 2013. + +* Keyboard Maintainer: [Purdea Andrei](https://github.com/purdeaandrei) +* Hardware Supported: OverNumpad controller v1.Xb +* Hardware Availability: + * [controller](https://github.com/purdeaandrei/overnumpad_controller_1xb) + * [keyboard](https://www.pckeyboard.com/) + +To place the keyboard into bootloader mode in order to flash it, hold the ESC key while plugging the board in. +It's possible to make this feature not work, by flashing the wrong firmware onto the keyboard. +If that happens, open up the keyboard, and press the RST&PROG button to enter bootloader mode. + +Make example for this keyboard (after setting up your build environment): + + make unicomp/classic_ultracl_post_2013/overnumpad_1xb:default + +Flashing example for this keyboard: + + make unicomp/classic_ultracl_post_2013/overnumpad_1xb:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/rules.mk b/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/rules.mk new file mode 100644 index 000000000000..ed6597e5b253 --- /dev/null +++ b/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = STM32F446 # STM32F446RET6 + +# Bootloader selection +BOOTLOADER = stm32-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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +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 = yes +HAPTIC_DRIVER = SOLENOID diff --git a/keyboards/unicomp/classic_ultracl_pre_2013/info.json b/keyboards/unicomp/classic_ultracl_pre_2013/info.json new file mode 100644 index 000000000000..bedbca4f3651 --- /dev/null +++ b/keyboards/unicomp/classic_ultracl_pre_2013/info.json @@ -0,0 +1,16 @@ +{ + "keyboard_name": "unicomp/classic_ultracl_pre_2013", + "url": "https://github.com/purdeaandrei/overnumpad_controller_1xb", + "maintainer": "purdeaandrei", + "layouts": { + "LAYOUT_all": { + "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5}, {"x":14, "y":1.5}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":13.75, "y":3.5, "w":1.25}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":21.5, "y":3.5}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5}, {"x":13.25, "y":4.5, "w":1.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5, "w":1.25}, {"x":2.75, "y":5.5, "w":1.25}, {"x":4, "y":5.5}, {"x":5, "y":5.5, "w":4.75}, {"x":9.75, "y":5.5, "w":1.25}, {"x":11, "y":5.5, "w":1.25}, {"x":12.25, "y":5.5, "w":1.25}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5}, {"x":19.5, "y":5.5}, {"x":20.5, "y":5.5}, {"x":21.5, "y":5.5}] + }, + "LAYOUT_fullsize_ansi": { + "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5, "h":2}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5, "w":2.25}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":0, "y":4.5, "w":2.25}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5, "h":2}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5, "w":1.25}, {"x":2.75, "y":5.5, "w":1.25}, {"x":4, "y":5.5, "w":5.75}, {"x":9.75, "y":5.5, "w":1.25}, {"x":11, "y":5.5, "w":1.25}, {"x":12.25, "y":5.5, "w":1.25}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5, "w":2}, {"x":20.5, "y":5.5}] + }, + "LAYOUT_fullsize_iso": { + "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5, "h":2}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":13.75, "y":2.5, "w":1.25, "h":2}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5, "h":2}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5, "w":1.25}, {"x":2.75, "y":5.5, "w":1.25}, {"x":4, "y":5.5, "w":5.75}, {"x":9.75, "y":5.5, "w":1.25}, {"x":11, "y":5.5, "w":1.25}, {"x":12.25, "y":5.5, "w":1.25}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5, "w":2}, {"x":20.5, "y":5.5}] + } + } +} diff --git a/keyboards/unicomp/classic_ultracl_pre_2013/keymaps/default/keymap.c b/keyboards/unicomp/classic_ultracl_pre_2013/keymaps/default/keymap.c new file mode 100644 index 000000000000..6755ee3684b4 --- /dev/null +++ b/keyboards/unicomp/classic_ultracl_pre_2013/keymaps/default/keymap.c @@ -0,0 +1,33 @@ +/* Copyright 2020 Purdea Andrei + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL,KC_BSPC,KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT,KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTRL, KC_LGUI, KC_LALT, KC_NO, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTRL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_P0, KC_PDOT, KC_PENT + ) +}; diff --git a/keyboards/unicomp/classic_ultracl_pre_2013/keymaps/default/readme.md b/keyboards/unicomp/classic_ultracl_pre_2013/keymaps/default/readme.md new file mode 100644 index 000000000000..f9a7d214fa9d --- /dev/null +++ b/keyboards/unicomp/classic_ultracl_pre_2013/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for unicomp/classic_ultracl_pre_2013/$(CONTROLLER) diff --git a/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/config.h b/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/config.h new file mode 100644 index 000000000000..feb2e32d5709 --- /dev/null +++ b/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/config.h @@ -0,0 +1,75 @@ +/* Copyright 2020 Purdea Andrei + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x16C0 +#define PRODUCT_ID 0x27DB +#define DEVICE_VER 0x0001 +#define MANUFACTURER Unicomp/Purdea Andrei +#define PRODUCT Unicomp Spacesaver M +#define SERIAL_NUMBER "purdea.ro:overnumpad_controller" + +/* key matrix size */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 16 + +/* + * 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) + * + */ + +// All pins in order from left-to-right, as seen on the keyboard: +// C3, C2, C1, C0, A3, A4, A5, A6, A7, C4, C5, B0, B1, B10, B12, B13, B14, B15, C6, C7, C8, C9, A8, A9, A10, +// On this chip A10, B10 have stronger pull-ups, so it's better to avoid them if possible. + +// On this keyboard the right-most pin is not used, so that is A10. +// On this keyboard the right-most 8 pins (excluding the unused pin) are routed on the bottom. + +#define MATRIX_COL_PINS { C3, C2, C1, C0, A3, A4, A5, A6, A7, C4, C5, B0, B1, B10, B12, B13 } +#define MATRIX_ROW_PINS { B14, B15, C6, C7, C8, C9, A8, A9 } +//#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION ROW2COL + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +#define MATRIX_HAS_GHOST + +#define STM32_HSECLK 16000000 + +#define SOLENOID_PIN B5 +#define HAPTIC_ENABLE_PIN C13 +#define SOLENOID_DEFAULT_DWELL 4 +#define SOLENOID_MIN_DWELL 4 +#define HAPTIC_OFF_IN_LOW_POWER 1 +#define NO_HAPTIC_MOD + +#define LED_NUM_LOCK_PIN C12 +#define LED_CAPS_LOCK_PIN C11 +#define LED_SCROLL_LOCK_PIN C10 +#define LED_ON_STATE 1 diff --git a/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/overnumpad_1xb.c b/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/overnumpad_1xb.c new file mode 100644 index 000000000000..cb5ec3dc124e --- /dev/null +++ b/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/overnumpad_1xb.c @@ -0,0 +1,24 @@ +/* Copyright 2020 Purdea Andrei + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "overnumpad_1xb.h" + +void keyboard_post_init_kb(void) +{ + //debug_enable=true; + //debug_matrix=true; +} + diff --git a/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/overnumpad_1xb.h b/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/overnumpad_1xb.h new file mode 100644 index 000000000000..a939e986dd30 --- /dev/null +++ b/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/overnumpad_1xb.h @@ -0,0 +1,88 @@ +/* Copyright 2020 Purdea Andrei + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + +#define LAYOUT_all( \ + k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ + k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_bsp_hidden, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ + k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_backsl, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ + k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_nuhs,k_return, kp_4, kp_5, kp_6, kp_plus_hidden, \ + k_lshift,k_nubs,k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift_hidden, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ + k_lctrl, k_lwin, k_lalt, k_code, k_space, k_6_4, k_1_d, k_rmenu, k_rctrl, k_left, k_down, k_right, kp_0_hidden, kp_0, kp_dot, kp_enter_hidden \ +) \ +{ \ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ + /* 0 */ { k_esc, k_pause, k_f3, k_f1, k_ins, k_3, k_4, k_6, k_f5, k_f7, k_f9, k_f11, k_prscr, k_right, k_scrl, KC_NO }, \ + /* 1 */ { k_tab, KC_NO, k_del, k_pgdn, KC_NO, k_e, k_t, k_u, k_backspace, k_minus, k_down, k_end, k_home, k_1_d, KC_NO, k_caps }, \ + /* 2 */ { k_1, k_bsp_hidden, kp_nl, k_pgup, k_code, k_i, k_r, k_y, k_equals, k_9, k_0, kp_mult, kp_div, k_up, k_lwin, KC_NO }, \ + /* 3 */ { k_q, k_lshift, kp_9, k_2, KC_NO, k_k, k_f, k_h, k_squarebrcl, k_o, k_semicolon, kp_8, kp_7, KC_NO, KC_NO, k_lctrl }, \ + /* 4 */ { k_a, KC_NO, kp_6, k_w, k_lalt, k_d, k_g, k_j, k_backsl, k_squarebrop, k_singlequote, kp_5, kp_4, k_rshift_hidden, kp_plus_hidden, KC_NO }, \ + /* 5 */ { k_z, k_rshift, kp_dot, k_x, KC_NO, k_cm, k_b, k_m, k_return, k_period, k_p, kp_0, kp_1, KC_NO, kp_0_hidden, k_rctrl }, \ + /* 6 */ { k_nubs, KC_NO, kp_3, k_s, k_6_4, k_c, k_v, k_n, k_left, k_l, k_fwslash, kp_2, kp_plus, k_nuhs, kp_enter_hidden, KC_NO }, \ + /* 7 */ { k_tild, KC_NO, kp_minus, k_f2, k_f4, k_8, k_5, k_7, k_f6, k_f8, k_f10, k_f12, k_rmenu, k_space, kp_enter, KC_NO } \ +} + +#define LAYOUT_fullsize_ansi( \ + k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ + k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ + k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_backsl, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ + k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_return, kp_4, kp_5, kp_6, \ + k_lshift, k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ + k_lctrl, k_lwin, k_lalt, k_space, k_6_4, k_1_d, k_rmenu, k_rctrl, k_left, k_down, k_right, kp_0, kp_dot \ +) \ +{ \ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ + /* 0 */ { k_esc, k_pause, k_f3, k_f1, k_ins, k_3, k_4, k_6, k_f5, k_f7, k_f9, k_f11, k_prscr, k_right, k_scrl, KC_NO }, \ + /* 1 */ { k_tab, KC_NO, k_del, k_pgdn, KC_NO, k_e, k_t, k_u, k_backspace, k_minus, k_down, k_end, k_home, k_1_d, KC_NO, k_caps }, \ + /* 2 */ { k_1, KC_NO, kp_nl, k_pgup, KC_NO, k_i, k_r, k_y, k_equals, k_9, k_0, kp_mult, kp_div, k_up, k_lwin, KC_NO }, \ + /* 3 */ { k_q, k_lshift, kp_9, k_2, KC_NO, k_k, k_f, k_h, k_squarebrcl, k_o, k_semicolon, kp_8, kp_7, KC_NO, KC_NO, k_lctrl }, \ + /* 4 */ { k_a, KC_NO, kp_6, k_w, k_lalt, k_d, k_g, k_j, k_backsl, k_squarebrop, k_singlequote, kp_5, kp_4, KC_NO, KC_NO, KC_NO }, \ + /* 5 */ { k_z, k_rshift, kp_dot, k_x, KC_NO, k_cm, k_b, k_m, k_return, k_period, k_p, kp_0, kp_1, KC_NO, KC_NO, k_rctrl }, \ + /* 6 */ { KC_NO, KC_NO, kp_3, k_s, k_6_4, k_c, k_v, k_n, k_left, k_l, k_fwslash, kp_2, kp_plus, KC_NO, KC_NO, KC_NO }, \ + /* 7 */ { k_tild, KC_NO, kp_minus, k_f2, k_f4, k_8, k_5, k_7, k_f6, k_f8, k_f10, k_f12, k_rmenu, k_space, kp_enter, KC_NO } \ +} + +#define LAYOUT_fullsize_iso( \ + k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ + k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ + k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ + k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_nuhs,k_return, kp_4, kp_5, kp_6, \ + k_lshift,k_nubs,k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ + k_lctrl, k_lwin, k_lalt, k_space, k_6_4, k_1_d, k_rmenu, k_rctrl, k_left, k_down, k_right, kp_0, kp_dot \ +) \ +{ \ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ + /* 0 */ { k_esc, k_pause, k_f3, k_f1, k_ins, k_3, k_4, k_6, k_f5, k_f7, k_f9, k_f11, k_prscr, k_right, k_scrl, KC_NO }, \ + /* 1 */ { k_tab, KC_NO, k_del, k_pgdn, KC_NO, k_e, k_t, k_u, k_backspace, k_minus, k_down, k_end, k_home, k_1_d, KC_NO, k_caps }, \ + /* 2 */ { k_1, KC_NO, kp_nl, k_pgup, KC_NO, k_i, k_r, k_y, k_equals, k_9, k_0, kp_mult, kp_div, k_up, k_lwin, KC_NO }, \ + /* 3 */ { k_q, k_lshift, kp_9, k_2, KC_NO, k_k, k_f, k_h, k_squarebrcl, k_o, k_semicolon, kp_8, kp_7, KC_NO, KC_NO, k_lctrl }, \ + /* 4 */ { k_a, KC_NO, kp_6, k_w, k_lalt, k_d, k_g, k_j, KC_NO, k_squarebrop, k_singlequote, kp_5, kp_4, KC_NO, KC_NO, KC_NO }, \ + /* 5 */ { k_z, k_rshift, kp_dot, k_x, KC_NO, k_cm, k_b, k_m, k_return, k_period, k_p, kp_0, kp_1, KC_NO, KC_NO, k_rctrl }, \ + /* 6 */ { k_nubs, KC_NO, kp_3, k_s, k_6_4, k_c, k_v, k_n, k_left, k_l, k_fwslash, kp_2, kp_plus, k_nuhs, KC_NO, KC_NO }, \ + /* 7 */ { k_tild, KC_NO, kp_minus, k_f2, k_f4, k_8, k_5, k_7, k_f6, k_f8, k_f10, k_f12, k_rmenu, k_space, kp_enter, KC_NO } \ +} diff --git a/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/readme.md b/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/readme.md new file mode 100644 index 000000000000..c25024b4772e --- /dev/null +++ b/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/readme.md @@ -0,0 +1,26 @@ +# unicomp/classic_ultracl_pre_2013/overnumpad_1xb + +![unicomp/classic_ultracl_pre_2013/overnumpad_1xb](https://www.pckeyboard.com/mm5/graphics/00000001/UB4ZPHA_800x343.jpg) + +Will support the following Unicomp Classic and Ultra Classic keyboards: + * 104-key ANSI and 105-key ISO keyboards with post-2013 bottom row are supported. + +* Keyboard Maintainer: [Purdea Andrei](https://github.com/purdeaandrei) +* Hardware Supported: OverNumpad controller v1.Xb +* Hardware Availability: + * [controller](https://github.com/purdeaandrei/overnumpad_controller_1xb) + * [keyboard](https://www.pckeyboard.com/) + +To place the keyboard into bootloader mode in order to flash it, hold the ESC key while plugging the board in. +It's possible to make this feature not work, by flashing the wrong firmware onto the keyboard. +If that happens, open up the keyboard, and press the RST&PROG button to enter bootloader mode. + +Make example for this keyboard (after setting up your build environment): + + make unicomp/classic_ultracl_pre_2013/overnumpad_1xb:default + +Flashing example for this keyboard: + + make unicomp/classic_ultracl_pre_2013/overnumpad_1xb:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/rules.mk b/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/rules.mk new file mode 100644 index 000000000000..a3205a7aab20 --- /dev/null +++ b/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/rules.mk @@ -0,0 +1,26 @@ +# MCU name +MCU = STM32F446 # STM32F446RET6 + +# Bootloader selection +BOOTLOADER = stm32-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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +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 = yes +HAPTIC_DRIVER = SOLENOID + +LAYOUTS = fullsize_ansi fullsize_iso diff --git a/keyboards/unicomp/spacesaver_m_post_2013/info.json b/keyboards/unicomp/spacesaver_m_post_2013/info.json new file mode 100644 index 000000000000..766a93e6c617 --- /dev/null +++ b/keyboards/unicomp/spacesaver_m_post_2013/info.json @@ -0,0 +1,16 @@ +{ + "keyboard_name": "unicomp/spacesaver_m_post_2013", + "url": "https://github.com/purdeaandrei/overnumpad_controller_1xb", + "maintainer": "purdeaandrei", + "layouts": { + "LAYOUT_all": { + "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5}, {"x":14, "y":1.5}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":13.75, "y":3.5, "w":1.25}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":21.5, "y":3.5}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5}, {"x":13.25, "y":4.5, "w":1.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5}, {"x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5}, {"x":5, "y":5.5, "w":4.75}, {"x":9.75, "y":5.5, "w":1.25}, {"x":11, "y":5.5, "w":1.5}, {"x":12.5, "y":5.5}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5}, {"x":19.5, "y":5.5}, {"x":20.5, "y":5.5}, {"x":21.5, "y":5.5}] + }, + "LAYOUT_ansi": { + "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5, "w":2.25}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":21.5, "y":3.5}, {"x":0, "y":4.5, "w":2.25}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5, "h":2}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5}, {"x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":5.75}, {"x":9.75, "y":5.5, "w":1.25}, {"x":11, "y":5.5, "w":1.5}, {"x":12.5, "y":5.5}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5, "w":2}, {"x":20.5, "y":5.5}] + }, + "LAYOUT_iso": { + "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.75, "y":2.5, "w":1.25, "h":2}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":21.5, "y":3.5}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5, "h":2}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5}, {"x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":5.75}, {"x":9.75, "y":5.5, "w":1.25}, {"x":11, "y":5.5, "w":1.5}, {"x":12.5, "y":5.5}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5, "w":2}, {"x":20.5, "y":5.5}] + } + } +} diff --git a/keyboards/unicomp/spacesaver_m_post_2013/keymaps/default/keymap.c b/keyboards/unicomp/spacesaver_m_post_2013/keymaps/default/keymap.c new file mode 100644 index 000000000000..08a9be07f5ac --- /dev/null +++ b/keyboards/unicomp/spacesaver_m_post_2013/keymaps/default/keymap.c @@ -0,0 +1,42 @@ +/* Copyright 2020 Purdea Andrei + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT_all( + KC_ESC, KC_F14,KC_F15,LCTL(KC_UP),KC_F9, KC_F5, KC_F6,KC_MPRV,KC_MPLY, KC_MNXT,KC_MUTE,KC_VOLD,KC_VOLU, KC_F13, KC_F14, KC_F15, + KC_NUBS,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL,KC_BSPC,KC_BSPC, KC_EJCT, KC_HOME, KC_PGUP, KC_NLCK, KC_PEQL, KC_PSLS, KC_PAST, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PMNS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT,KC_GRV, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTRL, KC_LALT, KC_LGUI, KC_NO, KC_SPC, KC_RGUI, KC_RALT, MO(_FN), KC_RCTRL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_P0, KC_PDOT, KC_PENT + ), + [_FN] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_NUBS,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL,KC_BSPC,KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_EQL, KC_PSLS, KC_PAST, + KC_TAB, KC_Q, KC_W,EEPROM_RESET,RESET,KC_T,KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PMNS, + KC_CAPS, KC_A, KC_S,DEBUG, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT,KC_GRV, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTRL, KC_LALT, KC_LGUI, KC_NO, KC_SPC, KC_RGUI, KC_RALT, MO(_FN), KC_RCTRL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_P0, KC_PDOT, KC_PENT + ) +}; diff --git a/keyboards/unicomp/spacesaver_m_post_2013/keymaps/default/readme.md b/keyboards/unicomp/spacesaver_m_post_2013/keymaps/default/readme.md new file mode 100644 index 000000000000..5e44dade2638 --- /dev/null +++ b/keyboards/unicomp/spacesaver_m_post_2013/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for unicomp/spacesaver_m_post_2013/$(CONTROLLER) diff --git a/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/config.h b/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/config.h new file mode 100644 index 000000000000..597d287b077c --- /dev/null +++ b/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/config.h @@ -0,0 +1,74 @@ +/* Copyright 2020 Purdea Andrei + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x16C0 +#define PRODUCT_ID 0x27DB +#define DEVICE_VER 0x0001 +#define MANUFACTURER Unicomp/Purdea Andrei +#define PRODUCT Unicomp Spacesaver M +#define SERIAL_NUMBER "purdea.ro:overnumpad_controller" + +/* key matrix size */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 16 + +/* + * 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) + * + */ + +// All pins in order from left-to-right, as seen on the keyboard: +// C3, C2, C1, C0, A3, A4, A5, A6, A7, C4, C5, B0, B1, B10, B12, B13, B14, B15, C6, C7, C8, C9, A8, A9, A10, +// On this chip A10, B10 have stronger pull-ups, so it's better to avoid them if possible. + +// On this keyboard the right-most pin is not used, so that is A10. +// On this keyboard the right-most 8 pins (excluding the unused pin) are routed on the bottom. + +#define MATRIX_COL_PINS { C3, C2, C1, C0, A3, A4, A5, A6, A7, C4, C5, B0, B1, B10, B12, B13 } +#define MATRIX_ROW_PINS { B14, B15, C6, C7, C8, C9, A8, A9 } +//#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION ROW2COL + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +#define MATRIX_HAS_GHOST + +#define STM32_HSECLK 16000000 + +#define SOLENOID_PIN B5 +#define HAPTIC_ENABLE_PIN C13 +#define SOLENOID_DEFAULT_DWELL 4 +#define SOLENOID_MIN_DWELL 4 +#define HAPTIC_OFF_IN_LOW_POWER 1 +#define NO_HAPTIC_MOD + +#define LED_CAPS_LOCK_PIN C12 +#define LED_ON_STATE 1 +// C11 and C10 are also leds, but C11 is not used in this keyboard, and C10 is configured in ${keyboard}.c diff --git a/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/overnumpad_1xb.c b/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/overnumpad_1xb.c new file mode 100644 index 000000000000..eda367804d0f --- /dev/null +++ b/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/overnumpad_1xb.c @@ -0,0 +1,42 @@ +/* Copyright 2020 Purdea Andrei + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "overnumpad_1xb.h" + +void keyboard_post_init_kb(void) +{ + // Led pins: + // C12 is the left-most led, normally Num Lock, but on Spacesaver M it's Caps Lock. Configured in config.h + setPinOutput(C11); // middle led, always off on Spacesaver M + writePin(C11, 0); + setPinOutput(C10); // right-most led, normally Scroll Lock, but on Spacesaver M indicates function layer + + //debug_enable=true; + //debug_matrix=true; +} + + +layer_state_t layer_state_set_kb(layer_state_t state) { + switch (get_highest_layer(state)) { + case 0: + writePin(C10, 0); + break; + default: + writePin(C10, 1); + break; + } + return layer_state_set_user(state); +} diff --git a/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/overnumpad_1xb.h b/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/overnumpad_1xb.h new file mode 100644 index 000000000000..faffbcd4ec57 --- /dev/null +++ b/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/overnumpad_1xb.h @@ -0,0 +1,88 @@ +/* Copyright 2020 Purdea Andrei + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + +#define LAYOUT_all( \ + k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ + k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_bsp_hidden, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ + k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_backsl, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ + k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_nuhs,k_return, kp_4, kp_5, kp_6, kp_plus_hidden, \ + k_lshift,k_nubs,k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift_hidden, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ + k_lctrl, k_lwin, k_lalt, k_code, k_space, k_1_d, k_6_4, k_rmenu, k_rctrl, k_left, k_down, k_right, kp_0_hidden, kp_0, kp_dot, kp_enter_hidden \ +) \ +{ \ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ + /* 0 */ { k_esc, k_pause, k_f3, k_f1, k_ins, k_3, k_4, k_6, k_f5, k_f7, k_f9, k_f11, k_prscr, k_right, k_scrl, KC_NO }, \ + /* 1 */ { k_tab, KC_NO, k_del, k_pgdn, KC_NO, k_e, k_t, k_u, k_backspace, k_minus, k_down, k_end, k_home, k_1_d, KC_NO, k_caps }, \ + /* 2 */ { k_1, k_bsp_hidden, kp_nl, k_pgup, k_code, k_i, k_r, k_y, k_equals, k_9, k_0, kp_mult, kp_div, k_up, k_lwin, KC_NO }, \ + /* 3 */ { k_q, k_lshift, kp_9, k_2, KC_NO, k_k, k_f, k_h, k_squarebrcl, k_o, k_semicolon, kp_8, kp_7, KC_NO, KC_NO, k_lctrl }, \ + /* 4 */ { k_a, KC_NO, kp_6, k_w, k_lalt, k_d, k_g, k_j, k_backsl, k_squarebrop, k_singlequote, kp_5, kp_4, k_rshift_hidden, kp_plus_hidden, KC_NO }, \ + /* 5 */ { k_z, k_rshift, kp_dot, k_x, KC_NO, k_cm, k_b, k_m, k_return, k_period, k_p, kp_0, kp_1, KC_NO, kp_0_hidden, k_rctrl }, \ + /* 6 */ { k_nubs, KC_NO, kp_3, k_s, k_6_4, k_c, k_v, k_n, k_left, k_l, k_fwslash, kp_2, kp_plus, k_nuhs, kp_enter_hidden, KC_NO }, \ + /* 7 */ { k_tild, KC_NO, kp_minus, k_f2, k_f4, k_8, k_5, k_7, k_f6, k_f8, k_f10, k_f12, k_rmenu, k_space, kp_enter, KC_NO } \ +} + +#define LAYOUT_ansi( \ + k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ + k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ + k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_backsl, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ + k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_return, kp_4, kp_5, kp_6, kp_plus_hidden, \ + k_lshift, k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ + k_lctrl, k_lwin, k_lalt, k_space, k_1_d, k_6_4, k_rmenu, k_rctrl, k_left, k_down, k_right, kp_0, kp_dot \ +) \ +{ \ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ + /* 0 */ { k_esc, k_pause, k_f3, k_f1, k_ins, k_3, k_4, k_6, k_f5, k_f7, k_f9, k_f11, k_prscr, k_right, k_scrl, KC_NO }, \ + /* 1 */ { k_tab, KC_NO, k_del, k_pgdn, KC_NO, k_e, k_t, k_u, k_backspace, k_minus, k_down, k_end, k_home, k_1_d, KC_NO, k_caps }, \ + /* 2 */ { k_1, KC_NO, kp_nl, k_pgup, KC_NO, k_i, k_r, k_y, k_equals, k_9, k_0, kp_mult, kp_div, k_up, k_lwin, KC_NO }, \ + /* 3 */ { k_q, k_lshift, kp_9, k_2, KC_NO, k_k, k_f, k_h, k_squarebrcl, k_o, k_semicolon, kp_8, kp_7, KC_NO, KC_NO, k_lctrl }, \ + /* 4 */ { k_a, KC_NO, kp_6, k_w, k_lalt, k_d, k_g, k_j, k_backsl, k_squarebrop, k_singlequote, kp_5, kp_4, KC_NO, kp_plus_hidden, KC_NO }, \ + /* 5 */ { k_z, k_rshift, kp_dot, k_x, KC_NO, k_cm, k_b, k_m, k_return, k_period, k_p, kp_0, kp_1, KC_NO, KC_NO, k_rctrl }, \ + /* 6 */ { KC_NO, KC_NO, kp_3, k_s, k_6_4, k_c, k_v, k_n, k_left, k_l, k_fwslash, kp_2, kp_plus, KC_NO, KC_NO, KC_NO }, \ + /* 7 */ { k_tild, KC_NO, kp_minus, k_f2, k_f4, k_8, k_5, k_7, k_f6, k_f8, k_f10, k_f12, k_rmenu, k_space, kp_enter, KC_NO } \ +} + +#define LAYOUT_iso( \ + k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ + k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ + k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_return, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ + k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_nuhs, kp_4, kp_5, kp_6, kp_plus_hidden, \ + k_lshift,k_nubs,k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ + k_lctrl, k_lwin, k_lalt, k_space, k_1_d, k_6_4, k_rmenu, k_rctrl, k_left, k_down, k_right, kp_0, kp_dot \ +) \ +{ \ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ + /* 0 */ { k_esc, k_pause, k_f3, k_f1, k_ins, k_3, k_4, k_6, k_f5, k_f7, k_f9, k_f11, k_prscr, k_right, k_scrl, KC_NO }, \ + /* 1 */ { k_tab, KC_NO, k_del, k_pgdn, KC_NO, k_e, k_t, k_u, k_backspace, k_minus, k_down, k_end, k_home, k_1_d, KC_NO, k_caps }, \ + /* 2 */ { k_1, KC_NO, kp_nl, k_pgup, KC_NO, k_i, k_r, k_y, k_equals, k_9, k_0, kp_mult, kp_div, k_up, k_lwin, KC_NO }, \ + /* 3 */ { k_q, k_lshift, kp_9, k_2, KC_NO, k_k, k_f, k_h, k_squarebrcl, k_o, k_semicolon, kp_8, kp_7, KC_NO, KC_NO, k_lctrl }, \ + /* 4 */ { k_a, KC_NO, kp_6, k_w, k_lalt, k_d, k_g, k_j, KC_NO, k_squarebrop, k_singlequote, kp_5, kp_4, KC_NO, kp_plus_hidden, KC_NO }, \ + /* 5 */ { k_z, k_rshift, kp_dot, k_x, KC_NO, k_cm, k_b, k_m, k_return, k_period, k_p, kp_0, kp_1, KC_NO, KC_NO, k_rctrl }, \ + /* 6 */ { k_nubs, KC_NO, kp_3, k_s, k_6_4, k_c, k_v, k_n, k_left, k_l, k_fwslash, kp_2, kp_plus, k_nuhs, KC_NO, KC_NO }, \ + /* 7 */ { k_tild, KC_NO, kp_minus, k_f2, k_f4, k_8, k_5, k_7, k_f6, k_f8, k_f10, k_f12, k_rmenu, k_space, kp_enter, KC_NO } \ +} diff --git a/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/readme.md b/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/readme.md new file mode 100644 index 000000000000..0292269247f9 --- /dev/null +++ b/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/readme.md @@ -0,0 +1,25 @@ +# unicomp/spacesaver_m_post_2013/overnumpad_1xb + +![unicomp/spacesaver_m_post_2013/overnumpad_1xb](https://www.pckeyboard.com/mm5/graphics/00000001/UB4ZPHA_800x343.jpg) + +Initially will support part number U242S6A, remains to be seen how compatible it is with other part numbers. + +* Keyboard Maintainer: [Purdea Andrei](https://github.com/purdeaandrei) +* Hardware Supported: OverNumpad controller v1.Xb +* Hardware Availability: TODO + * [controller](https://github.com/purdeaandrei/overnumpad_controller_1xb) + * [keyboard](https://www.pckeyboard.com/) + +To place the keyboard into bootloader mode in order to flash it, hold the ESC key while plugging the board in. +It's possible to make this feature not work, by flashing the wrong firmware onto the keyboard. +If that happens, open up the keyboard, and press the RST&PROG button to enter bootloader mode. + +Make example for this keyboard (after setting up your build environment): + + make unicomp/spacesaver_m_post_2013/overnumpad_1xb:default + +Flashing example for this keyboard: + + make unicomp/spacesaver_m_post_2013/overnumpad_1xb:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/rules.mk b/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/rules.mk new file mode 100644 index 000000000000..ed6597e5b253 --- /dev/null +++ b/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = STM32F446 # STM32F446RET6 + +# Bootloader selection +BOOTLOADER = stm32-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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +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 = yes +HAPTIC_DRIVER = SOLENOID diff --git a/keyboards/unicomp/spacesaver_m_pre_2013/info.json b/keyboards/unicomp/spacesaver_m_pre_2013/info.json new file mode 100644 index 000000000000..e912d82ead51 --- /dev/null +++ b/keyboards/unicomp/spacesaver_m_pre_2013/info.json @@ -0,0 +1,16 @@ +{ + "keyboard_name": "unicomp/spacesaver_m_pre_2013", + "url": "https://github.com/purdeaandrei/overnumpad_controller_1xb", + "maintainer": "purdeaandrei", + "layouts": { + "LAYOUT_all": { + "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5}, {"x":14, "y":1.5}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":13.75, "y":3.5, "w":1.25}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":21.5, "y":3.5}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5}, {"x":13.25, "y":4.5, "w":1.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5, "w":1.25}, {"x":2.75, "y":5.5, "w":1.25}, {"x":4, "y":5.5}, {"x":5, "y":5.5, "w":4.75}, {"x":9.75, "y":5.5, "w":1.25}, {"x":11, "y":5.5, "w":1.25}, {"x":12.25, "y":5.5, "w":1.25}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5}, {"x":19.5, "y":5.5}, {"x":20.5, "y":5.5}, {"x":21.5, "y":5.5}] + }, + "LAYOUT_ansi": { + "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5, "w":2.25}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":21.5, "y":3.5}, {"x":0, "y":4.5, "w":2.25}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5, "h":2}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5, "w":1.25}, {"x":2.75, "y":5.5, "w":1.25}, {"x":4, "y":5.5, "w":5.75}, {"x":9.75, "y":5.5, "w":1.25}, {"x":11, "y":5.5, "w":1.25}, {"x":12.25, "y":5.5, "w":1.25}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5, "w":2}, {"x":20.5, "y":5.5}] + }, + "LAYOUT_iso": { + "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.5, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.75, "y":2.5, "w":1.25, "h":2}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":21.5, "y":3.5}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5, "h":2}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5, "w":1.25}, {"x":2.75, "y":5.5, "w":1.25}, {"x":4, "y":5.5, "w":5.75}, {"x":9.75, "y":5.5, "w":1.25}, {"x":11, "y":5.5, "w":1.25}, {"x":12.25, "y":5.5, "w":1.25}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}, {"x":18.5, "y":5.5, "w":2}, {"x":20.5, "y":5.5}] + } + } +} diff --git a/keyboards/unicomp/spacesaver_m_pre_2013/keymaps/default/keymap.c b/keyboards/unicomp/spacesaver_m_pre_2013/keymaps/default/keymap.c new file mode 100644 index 000000000000..08a9be07f5ac --- /dev/null +++ b/keyboards/unicomp/spacesaver_m_pre_2013/keymaps/default/keymap.c @@ -0,0 +1,42 @@ +/* Copyright 2020 Purdea Andrei + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT_all( + KC_ESC, KC_F14,KC_F15,LCTL(KC_UP),KC_F9, KC_F5, KC_F6,KC_MPRV,KC_MPLY, KC_MNXT,KC_MUTE,KC_VOLD,KC_VOLU, KC_F13, KC_F14, KC_F15, + KC_NUBS,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL,KC_BSPC,KC_BSPC, KC_EJCT, KC_HOME, KC_PGUP, KC_NLCK, KC_PEQL, KC_PSLS, KC_PAST, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PMNS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT,KC_GRV, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTRL, KC_LALT, KC_LGUI, KC_NO, KC_SPC, KC_RGUI, KC_RALT, MO(_FN), KC_RCTRL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_P0, KC_PDOT, KC_PENT + ), + [_FN] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_NUBS,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL,KC_BSPC,KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_EQL, KC_PSLS, KC_PAST, + KC_TAB, KC_Q, KC_W,EEPROM_RESET,RESET,KC_T,KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PMNS, + KC_CAPS, KC_A, KC_S,DEBUG, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT,KC_GRV, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTRL, KC_LALT, KC_LGUI, KC_NO, KC_SPC, KC_RGUI, KC_RALT, MO(_FN), KC_RCTRL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_P0, KC_PDOT, KC_PENT + ) +}; diff --git a/keyboards/unicomp/spacesaver_m_pre_2013/keymaps/default/readme.md b/keyboards/unicomp/spacesaver_m_pre_2013/keymaps/default/readme.md new file mode 100644 index 000000000000..f19d75c9360c --- /dev/null +++ b/keyboards/unicomp/spacesaver_m_pre_2013/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for unicomp/spacesaver_m_pre_2013/$(CONTROLLER) diff --git a/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/config.h b/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/config.h new file mode 100644 index 000000000000..7bd5b224dff1 --- /dev/null +++ b/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/config.h @@ -0,0 +1,75 @@ +/* Copyright 2020 Purdea Andrei + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x16C0 +#define PRODUCT_ID 0x27DB +#define DEVICE_VER 0x0001 +#define MANUFACTURER Unicomp/Purdea Andrei +#define PRODUCT Unicomp Spacesaver M +#define DESCRIPTION QMK firmware for the Unicomp Spacesaver M keyboard with a replacement Overnumpad controller +#define SERIAL_NUMBER "purdea.ro:overnumpad_controller" + +/* key matrix size */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 16 + +/* + * 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) + * + */ + +// All pins in order from left-to-right, as seen on the keyboard: +// C3, C2, C1, C0, A3, A4, A5, A6, A7, C4, C5, B0, B1, B10, B12, B13, B14, B15, C6, C7, C8, C9, A8, A9, A10, +// On this chip A10, B10 have stronger pull-ups, so it's better to avoid them if possible. + +// On this keyboard the right-most pin is not used, so that is A10. +// On this keyboard the right-most 8 pins (excluding the unused pin) are routed on the bottom. + +#define MATRIX_COL_PINS { C3, C2, C1, C0, A3, A4, A5, A6, A7, C4, C5, B0, B1, B10, B12, B13 } +#define MATRIX_ROW_PINS { B14, B15, C6, C7, C8, C9, A8, A9 } +//#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION ROW2COL + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +#define MATRIX_HAS_GHOST + +#define STM32_HSECLK 16000000 + +#define SOLENOID_PIN B5 +#define HAPTIC_ENABLE_PIN C13 +#define SOLENOID_DEFAULT_DWELL 4 +#define SOLENOID_MIN_DWELL 4 +#define HAPTIC_OFF_IN_LOW_POWER 1 +#define NO_HAPTIC_MOD + +#define LED_CAPS_LOCK_PIN C12 +#define LED_ON_STATE 1 +// C11 and C10 are also leds, but C11 is not used in this keyboard, and C10 is configured in ${keyboard}.c diff --git a/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/overnumpad_1xb.c b/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/overnumpad_1xb.c new file mode 100644 index 000000000000..b7e3fd9632e2 --- /dev/null +++ b/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/overnumpad_1xb.c @@ -0,0 +1,41 @@ +/* Copyright 2020 Purdea Andrei + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "overnumpad_1xb.h" + +void keyboard_post_init_kb(void) +{ + // Led pins: + // C12 is the left-most led, normally Num Lock, but on Spacesaver M it's Caps Lock. Configured in config.h + setPinOutput(C11); // middle led, always off on Spacesaver M + writePin(C11, 0); + setPinOutput(C10); // right-most led, normally Scroll Lock, but on Spacesaver M indicates function layer + + //debug_enable=true; + //debug_matrix=true; +} + +layer_state_t layer_state_set_kb(layer_state_t state) { + switch (get_highest_layer(state)) { + case 0: + writePin(C10, 0); + break; + default: + writePin(C10, 1); + break; + } + return layer_state_set_user(state); +} diff --git a/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/overnumpad_1xb.h b/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/overnumpad_1xb.h new file mode 100644 index 000000000000..0938d456d10f --- /dev/null +++ b/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/overnumpad_1xb.h @@ -0,0 +1,88 @@ +/* Copyright 2020 Purdea Andrei + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + +#define LAYOUT_all( \ + k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ + k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_bsp_hidden, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ + k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_backsl, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ + k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_nuhs,k_return, kp_4, kp_5, kp_6, kp_plus_hidden, \ + k_lshift,k_nubs,k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift_hidden, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ + k_lctrl, k_lwin, k_lalt, k_code, k_space, k_6_4, k_1_d, k_rmenu, k_rctrl, k_left, k_down, k_right, kp_0_hidden, kp_0, kp_dot, kp_enter_hidden \ +) \ +{ \ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ + /* 0 */ { k_esc, k_pause, k_f3, k_f1, k_ins, k_3, k_4, k_6, k_f5, k_f7, k_f9, k_f11, k_prscr, k_right, k_scrl, KC_NO }, \ + /* 1 */ { k_tab, KC_NO, k_del, k_pgdn, KC_NO, k_e, k_t, k_u, k_backspace, k_minus, k_down, k_end, k_home, k_1_d, KC_NO, k_caps }, \ + /* 2 */ { k_1, k_bsp_hidden, kp_nl, k_pgup, k_code, k_i, k_r, k_y, k_equals, k_9, k_0, kp_mult, kp_div, k_up, k_lwin, KC_NO }, \ + /* 3 */ { k_q, k_lshift, kp_9, k_2, KC_NO, k_k, k_f, k_h, k_squarebrcl, k_o, k_semicolon, kp_8, kp_7, KC_NO, KC_NO, k_lctrl }, \ + /* 4 */ { k_a, KC_NO, kp_6, k_w, k_lalt, k_d, k_g, k_j, k_backsl, k_squarebrop, k_singlequote, kp_5, kp_4, k_rshift_hidden, kp_plus_hidden, KC_NO }, \ + /* 5 */ { k_z, k_rshift, kp_dot, k_x, KC_NO, k_cm, k_b, k_m, k_return, k_period, k_p, kp_0, kp_1, KC_NO, kp_0_hidden, k_rctrl }, \ + /* 6 */ { k_nubs, KC_NO, kp_3, k_s, k_6_4, k_c, k_v, k_n, k_left, k_l, k_fwslash, kp_2, kp_plus, k_nuhs, kp_enter_hidden, KC_NO }, \ + /* 7 */ { k_tild, KC_NO, kp_minus, k_f2, k_f4, k_8, k_5, k_7, k_f6, k_f8, k_f10, k_f12, k_rmenu, k_space, kp_enter, KC_NO } \ +} + +#define LAYOUT_ansi( \ + k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ + k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ + k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_backsl, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ + k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_return, kp_4, kp_5, kp_6, kp_plus_hidden, \ + k_lshift, k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ + k_lctrl, k_lwin, k_lalt, k_space, k_6_4, k_1_d, k_rmenu, k_rctrl, k_left, k_down, k_right, kp_0, kp_dot \ +) \ +{ \ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ + /* 0 */ { k_esc, k_pause, k_f3, k_f1, k_ins, k_3, k_4, k_6, k_f5, k_f7, k_f9, k_f11, k_prscr, k_right, k_scrl, KC_NO }, \ + /* 1 */ { k_tab, KC_NO, k_del, k_pgdn, KC_NO, k_e, k_t, k_u, k_backspace, k_minus, k_down, k_end, k_home, k_1_d, KC_NO, k_caps }, \ + /* 2 */ { k_1, KC_NO, kp_nl, k_pgup, KC_NO, k_i, k_r, k_y, k_equals, k_9, k_0, kp_mult, kp_div, k_up, k_lwin, KC_NO }, \ + /* 3 */ { k_q, k_lshift, kp_9, k_2, KC_NO, k_k, k_f, k_h, k_squarebrcl, k_o, k_semicolon, kp_8, kp_7, KC_NO, KC_NO, k_lctrl }, \ + /* 4 */ { k_a, KC_NO, kp_6, k_w, k_lalt, k_d, k_g, k_j, k_backsl, k_squarebrop, k_singlequote, kp_5, kp_4, KC_NO, kp_plus_hidden, KC_NO }, \ + /* 5 */ { k_z, k_rshift, kp_dot, k_x, KC_NO, k_cm, k_b, k_m, k_return, k_period, k_p, kp_0, kp_1, KC_NO, KC_NO, k_rctrl }, \ + /* 6 */ { KC_NO, KC_NO, kp_3, k_s, k_6_4, k_c, k_v, k_n, k_left, k_l, k_fwslash, kp_2, kp_plus, KC_NO, KC_NO, KC_NO }, \ + /* 7 */ { k_tild, KC_NO, kp_minus, k_f2, k_f4, k_8, k_5, k_7, k_f6, k_f8, k_f10, k_f12, k_rmenu, k_space, kp_enter, KC_NO } \ +} + +#define LAYOUT_iso( \ + k_esc, k_f1, k_f2, k_f3, k_f4, k_f5, k_f6, k_f7, k_f8, k_f9, k_f10, k_f11, k_f12, k_prscr, k_scrl, k_pause, \ + k_tild, k_1, k_2, k_3, k_4, k_5, k_6, k_7, k_8, k_9, k_0, k_minus, k_equals, k_backspace, k_ins, k_home, k_pgup, kp_nl, kp_div, kp_mult, kp_minus, \ + k_tab, k_q, k_w, k_e, k_r, k_t, k_y, k_u, k_i, k_o, k_p, k_squarebrop, k_squarebrcl, k_return, k_del, k_end, k_pgdn, kp_7, kp_8, kp_9, kp_plus, \ + k_caps, k_a, k_s, k_d, k_f, k_g, k_h, k_j, k_k, k_l, k_semicolon, k_singlequote, k_nuhs, kp_4, kp_5, kp_6, kp_plus_hidden, \ + k_lshift,k_nubs,k_z, k_x, k_c, k_v, k_b, k_n, k_m, k_cm,k_period, k_fwslash, k_rshift, k_up, kp_1, kp_2, kp_3, kp_enter, \ + k_lctrl, k_lwin, k_lalt, k_space, k_6_4, k_1_d, k_rmenu, k_rctrl, k_left, k_down, k_right, kp_0, kp_dot \ +) \ +{ \ + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ + /* 0 */ { k_esc, k_pause, k_f3, k_f1, k_ins, k_3, k_4, k_6, k_f5, k_f7, k_f9, k_f11, k_prscr, k_right, k_scrl, KC_NO }, \ + /* 1 */ { k_tab, KC_NO, k_del, k_pgdn, KC_NO, k_e, k_t, k_u, k_backspace, k_minus, k_down, k_end, k_home, k_1_d, KC_NO, k_caps }, \ + /* 2 */ { k_1, KC_NO, kp_nl, k_pgup, KC_NO, k_i, k_r, k_y, k_equals, k_9, k_0, kp_mult, kp_div, k_up, k_lwin, KC_NO }, \ + /* 3 */ { k_q, k_lshift, kp_9, k_2, KC_NO, k_k, k_f, k_h, k_squarebrcl, k_o, k_semicolon, kp_8, kp_7, KC_NO, KC_NO, k_lctrl }, \ + /* 4 */ { k_a, KC_NO, kp_6, k_w, k_lalt, k_d, k_g, k_j, KC_NO, k_squarebrop, k_singlequote, kp_5, kp_4, KC_NO, kp_plus_hidden, KC_NO }, \ + /* 5 */ { k_z, k_rshift, kp_dot, k_x, KC_NO, k_cm, k_b, k_m, k_return, k_period, k_p, kp_0, kp_1, KC_NO, KC_NO, k_rctrl }, \ + /* 6 */ { k_nubs, KC_NO, kp_3, k_s, k_6_4, k_c, k_v, k_n, k_left, k_l, k_fwslash, kp_2, kp_plus, k_nuhs, KC_NO, KC_NO }, \ + /* 7 */ { k_tild, KC_NO, kp_minus, k_f2, k_f4, k_8, k_5, k_7, k_f6, k_f8, k_f10, k_f12, k_rmenu, k_space, kp_enter, KC_NO } \ +} diff --git a/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/readme.md b/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/readme.md new file mode 100644 index 000000000000..8cf749ae53a3 --- /dev/null +++ b/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/readme.md @@ -0,0 +1,25 @@ +# unicomp/spacesaver_m_pre_2013/overnumpad_1xb + +![unicomp/spacesaver_m_pre_2013/overnumpad_1xb](https://www.pckeyboard.com/mm5/graphics/00000001/UB4ZPHA_800x343.jpg) + +Support Unicomp Spacesaver M keyboards with pre-2013 bottom row. + +* Keyboard Maintainer: [Purdea Andrei](https://github.com/purdeaandrei) +* Hardware Supported: OverNumpad controller v1.Xb +* Hardware Availability: + * [controller](https://github.com/purdeaandrei/overnumpad_controller_1xb) + * [keyboard](https://www.pckeyboard.com/) + +To place the keyboard into bootloader mode in order to flash it, hold the ESC key while plugging the board in. +It's possible to make this feature not work, by flashing the wrong firmware onto the keyboard. +If that happens, open up the keyboard, and press the RST&PROG button to enter bootloader mode. + +Make example for this keyboard (after setting up your build environment): + + make unicomp/spacesaver_m_pre_2013/overnumpad_1xb:default + +Flashing example for this keyboard: + + make unicomp/spacesaver_m_pre_2013/overnumpad_1xb:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/rules.mk b/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/rules.mk new file mode 100644 index 000000000000..ed6597e5b253 --- /dev/null +++ b/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/rules.mk @@ -0,0 +1,24 @@ +# MCU name +MCU = STM32F446 # STM32F446RET6 + +# Bootloader selection +BOOTLOADER = stm32-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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +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 = yes +HAPTIC_DRIVER = SOLENOID diff --git a/keyboards/unikorn/info.json b/keyboards/unikorn/info.json index 71088d204799..a93ca4920594 100644 --- a/keyboards/unikorn/info.json +++ b/keyboards/unikorn/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Unikorn 60", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"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}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2}, {"x":13.75, "y":2, "w":1.25}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":2.25}, {"x":6, "y":4, "w":1.25}, {"x":7.25, "y":4, "w":2.75}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}] @@ -17,4 +15,4 @@ "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"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}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.5}, {"x":1.5, "y":4}, {"x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"x":11, "y":4, "w":1.5}, {"x":12.5, "y":4}, {"x":13.5, "y":4, "w":1.5}] } } -} \ No newline at end of file +} diff --git a/keyboards/unikorn/rules.mk b/keyboards/unikorn/rules.mk index 93bb0a56eb7e..4c4a33355eef 100644 --- a/keyboards/unikorn/rules.mk +++ b/keyboards/unikorn/rules.mk @@ -2,17 +2,10 @@ MCU = atmega32a # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid # build options -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes EXTRAKEY_ENABLE = yes CONSOLE_ENABLE = no diff --git a/keyboards/unison/keymaps/via/rules.mk b/keyboards/unison/keymaps/via/rules.mk index 6f7de6391069..a5832e84aee5 100644 --- a/keyboards/unison/keymaps/via/rules.mk +++ b/keyboards/unison/keymaps/via/rules.mk @@ -1,5 +1,5 @@ MOUSEKEY_ENABLE = yes AUDIO_ENABLE = yes -BOOTMAGIC_ENABLE = lite +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite VIA_ENABLE = yes diff --git a/keyboards/unison/v04/info.json b/keyboards/unison/v04/info.json index d0edf50406cf..31b3f1e93b33 100644 --- a/keyboards/unison/v04/info.json +++ b/keyboards/unison/v04/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Unison", "url": "https://github.com/jpskenn/Unison", "maintainer": "jpskenn", - "width": 17, - "height": 5.5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/unison/v04/rules.mk b/keyboards/unison/v04/rules.mk index 9a3ab3decc9e..bbe709bda922 100644 --- a/keyboards/unison/v04/rules.mk +++ b/keyboards/unison/v04/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = no # Rotary Encoder diff --git a/keyboards/uno/info.json b/keyboards/uno/info.json index e3ae1c243de0..d426f9e42687 100644 --- a/keyboards/uno/info.json +++ b/keyboards/uno/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Uno", "url": "https://www.reddit.com/r/mechmarket/comments/gyijm7/gb_uno/", "maintainer": "Snipeye", - "width": 1, - "height": 1, "layouts": { "LAYOUT": { "layout": [ {"x": 0, "y": 0 }] diff --git a/keyboards/uno/rules.mk b/keyboards/uno/rules.mk index d23e95512672..df5ec72db4a0 100644 --- a/keyboards/uno/rules.mk +++ b/keyboards/uno/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/uranuma/config.h b/keyboards/uranuma/config.h index ea5b66fb3113..c5acad4882f1 100644 --- a/keyboards/uranuma/config.h +++ b/keyboards/uranuma/config.h @@ -108,59 +108,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -179,26 +126,6 @@ //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/uranuma/info.json b/keyboards/uranuma/info.json index 8c4f5cb48e76..ffdef726a0ea 100644 --- a/keyboards/uranuma/info.json +++ b/keyboards/uranuma/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Uranuma", "url": "", "maintainer": "yohewi", - "width": 13, - "height": 5.7, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/uranuma/rules.mk b/keyboards/uranuma/rules.mk index 8f3b2c52f66f..f97bc174edc0 100644 --- a/keyboards/uranuma/rules.mk +++ b/keyboards/uranuma/rules.mk @@ -2,33 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output -#COMBO_ENABLE = yes #SRC += .nicola.c \ diff --git a/keyboards/ut472/info.json b/keyboards/ut472/info.json index 40f769ae2ad2..fe60c5b7f7f9 100644 --- a/keyboards/ut472/info.json +++ b/keyboards/ut472/info.json @@ -2,11 +2,8 @@ "keyboard_name": "UT47.2", "url": "", "maintainer": "qmk", - "width": 12.5, - "height": 4, "layouts": { "LAYOUT": { - "key_count": 47, "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"Backspace", "x":11, "y":0, "w":1.5}, {"label":"LT(3) / Tab", "x":0, "y":1, "w":1.25}, {"label":"A", "x":1.25, "y":1}, {"label":"S", "x":2.25, "y":1}, {"label":"D", "x":3.25, "y":1}, {"label":"F", "x":4.25, "y":1}, {"label":"G", "x":5.25, "y":1}, {"label":"H", "x":6.25, "y":1}, {"label":"J", "x":7.25, "y":1}, {"label":"K", "x":8.25, "y":1}, {"label":"L", "x":9.25, "y":1}, {"label":":", "x":10.25, "y":1}, {"label":"\"", "x":11.25, "y":1, "w":1.25}, {"label":"Shift", "x":0, "y":2, "w":1.5}, {"label":"Z", "x":1.5, "y":2}, {"label":"X", "x":2.5, "y":2}, {"label":"C", "x":3.5, "y":2}, {"label":"V", "x":4.5, "y":2}, {"label":"B", "x":5.5, "y":2}, {"label":"N", "x":6.5, "y":2}, {"label":"M", "x":7.5, "y":2}, {"label":"<", "x":8.5, "y":2}, {"label":">", "x":9.5, "y":2}, {"label":"?", "x":10.5, "y":2}, {"label":"Shift / Enter", "x":11.5, "y":2}, {"label":"Ctrl", "x":0, "y":3}, {"label":"Alt", "x":1, "y":3}, {"label":"GUI", "x":2, "y":3}, {"label":"Menu", "x":3, "y":3}, {"label":"MO(2)", "x":4, "y":3, "w":1.25}, {"x":5.25, "y":3, "w":2}, {"label":"MO(1)", "x":7.25, "y":3, "w":1.25}, {"label":"\u2190", "x":8.5, "y":3}, {"label":"\u2193", "x":9.5, "y":3}, {"label":"\u2191", "x":10.5, "y":3}, {"label":"\u2192", "x":11.5, "y":3}] } } diff --git a/keyboards/ut472/keymaps/hvp/config.h b/keyboards/ut472/keymaps/hvp/config.h index 53fc5b76fb4d..ea23adfab5f2 100644 --- a/keyboards/ut472/keymaps/hvp/config.h +++ b/keyboards/ut472/keymaps/hvp/config.h @@ -15,6 +15,6 @@ */ #pragma once -#define TAPPING_TERM 150 -#define PERMISSIVE_HOLD +#define TAPPING_TERM 200 +#define TAPPING_TERM_PER_KEY #define IGNORE_MOD_TAP_INTERRUPT \ No newline at end of file diff --git a/keyboards/ut472/keymaps/hvp/keymap.c b/keyboards/ut472/keymaps/hvp/keymap.c index ec88e242348b..80d2d036bd72 100644 --- a/keyboards/ut472/keymaps/hvp/keymap.c +++ b/keyboards/ut472/keymaps/hvp/keymap.c @@ -17,43 +17,51 @@ #include "hvp.c" #define LT3_ESC LT(3, KC_ESC) -#define LT4_TAB LT(4, KC_TAB) -#define D_NAVI MT(MOD_LCTL | MOD_LSFT, KC_D) - +#define LT4_TAB LT(5, KC_TAB) +#define LT2 LT(2, KC_LEFT_CURLY_BRACE) +#define LT1 LT(1, KC_RIGHT_CURLY_BRACE) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -LAYOUT( - LT4_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, - LT3_ESC, KC_A, KC_S, KC_D, LT(3,KC_F), LT(4,KC_G), KC_H, KC_J, KC_K, KC_L, TD(TD1), TD(TD2), - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, TD(TD3), KC_SFTENT, - KC_LCTL, KC_APP, KC_LGUI, KC_LALT, MO(2), KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT +[0] = LAYOUT( + LT4_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + LT3_ESC, LG_A, LA_S, LS_D, LC_F, LT(4,KC_G), RC_H, RS_J, RA_K, RG_L, TD(TD1), TD(TD2), + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, TD(TD3), KC_SFTENT, + KC_LCPO, KC_RPRN, KC_LGUI, KC_LALT, LT2, KC_SPC, LT1, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT ), -LAYOUT( /* Right */ - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, - KC_DELETE, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, - _______, _______, _______, _______, _______, _______, _______, KC_UNDERSCORE, KC_PLUS, KC_LEFT_CURLY_BRACE, KC_RIGHT_CURLY_BRACE, KC_PIPE, - _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END +[1] = LAYOUT( /* Right */ + KC_TILDE, KC_EXCLAIM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_DELETE, KC_LGUI, KC_LALT, KC_LSFT, KC_LCTL, XXXXXXX, KC_MINS, KC_EQL, KC_LCBR, KC_RCBR, KC_PIPE, KC_GRV, + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDS, KC_PLUS, KC_LBRC, KC_RBRC, KC_BSLS, KC_TILD, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), -LAYOUT( /* Left */ - KC_TILDE, KC_EXCLAIM, KC_AT, KC_HASH, KC_DOLLAR, KC_PERCENT, KC_CIRCUMFLEX, KC_AMPERSAND, KC_ASTERISK, KC_LEFT_PAREN, KC_RIGHT_PAREN, KC_BSPC, - KC_DELETE, _______, _______, _______, _______, _______, _______, KC_UNDERSCORE, KC_PLUS, KC_LEFT_CURLY_BRACE, KC_RIGHT_CURLY_BRACE, KC_PIPE, - _______, _______, _______, _______, _______, _______, _______, _______, KC_EQL, KC_LBRC, KC_RBRC, _______, - _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END +[2] = LAYOUT( /* Left */ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_DELETE, KC_LGUI, KC_LALT, KC_LSFT, KC_LCTL, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, XXXXXXX, XXXXXXX, + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_PGDN, KC_PGUP, KC_END, XXXXXXX, XXXXXXX, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), -LAYOUT( /* Esc */ +[3] = LAYOUT( /* Esc */ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, - _______, _______, _______, D_NAVI, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, KC_PSCR, - _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______, + _______, KC_LGUI, KC_LALT, KC_LSFT, KC_LCTL, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, KC_PSCR, + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_MPLY, KC_MSTP, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT ), -LAYOUT( /* Tab */ - _______, RGB_TOG, RGB_MOD, RGB_RMOD, _______, _______, _______, KC_7, KC_8, KC_9, KC_0, _______, - _______, RGB_M_P, RGB_HUD, RGB_HUI, _______, _______, _______, KC_4, KC_5, KC_6, _______, _______, - KC_PSCR, _______, RGB_SAD, RGB_SAI, _______, _______, KC_0, KC_1, KC_2, KC_3, _______, _______, - RESET, _______, RGB_VAD, RGB_VAI, _______, _______, _______, _______, _______, _______, _______ + +[4] = LAYOUT( /* G */ + _______, LGUI(KC_1), LGUI(KC_2), LGUI(KC_3), LGUI(KC_4), LGUI(KC_5), LGUI(KC_6), LGUI(KC_7), KC_7, KC_8, KC_9, KC_BSPC, + _______, _______, _______, _______, _______, _______, _______, XXXXXXX, KC_4, KC_5, KC_6, KC_0, + _______, _______, _______, _______, _______, _______, XXXXXXX, KC_0, KC_1, KC_2, KC_3, _______, + RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), + +[5] = LAYOUT( /* Tab */ + _______, G(S(KC_1)), G(S(KC_2)), G(S(KC_3)), G(S(KC_4)), G(S(KC_5)), G(S(KC_6)), G(S(KC_7)), G(S(KC_8)), G(S(KC_9)), G(S(KC_0)), _______, + RGB_TOG, RGB_MOD, RGB_M_P, RGB_HUD, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, + KC_PSCR, _______, RGB_RMOD, RGB_SAD, RGB_SAI, _______, _______, _______, _______, _______, _______, KC_CAPS, + RESET, _______, RGB_VAD, RGB_VAI, _______, _______, _______, _______, _______, _______, KC_NLCK ), -}; \ No newline at end of file +}; diff --git a/keyboards/ut472/keymaps/stefanopace/config.h b/keyboards/ut472/keymaps/stefanopace/config.h index 792ddbc7daf8..d16927d3c9c6 100644 --- a/keyboards/ut472/keymaps/stefanopace/config.h +++ b/keyboards/ut472/keymaps/stefanopace/config.h @@ -18,3 +18,4 @@ #define TAPPING_TOGGLE 3 #define TAPPING_TERM 175 +#define PERMISSIVE_HOLD diff --git a/keyboards/ut472/keymaps/stefanopace/keymap.c b/keyboards/ut472/keymaps/stefanopace/keymap.c index b9411b33d533..7cc3b7008222 100644 --- a/keyboards/ut472/keymaps/stefanopace/keymap.c +++ b/keyboards/ut472/keymaps/stefanopace/keymap.c @@ -58,7 +58,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * Holding F or J activates Symbols layer * Holding / acts as Shift * Double tap on ' acts as " - * Doulbe tap on Menu activates CapsLock + * Double tap on Menu activates CapsLock * * Nav and Num layers are togglable with triple tapping on relative keys while holding them will activate layers momentarily. * @@ -177,9 +177,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `----------------------------------------------------------------------------' */ [_FN] = LAYOUT( - _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F10, XXXXXXX, - KC_PSCR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F4, KC_F5, KC_F6, KC_F11, XXXXXXX, - KC_SLCK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F12, XXXXXXX, - KC_INS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + _______, RGB_TOG, RGB_RMOD, RGB_MOD, RGB_HUD, RGB_HUI, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F10, XXXXXXX, + KC_PSCR, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, RGB_SPD, RGB_SPI, KC_F4, KC_F5, KC_F6, KC_F11, XXXXXXX, + KC_SLCK, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, RGB_M_K, KC_F7, KC_F8, KC_F9, KC_F12, XXXXXXX, + KC_INS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX ), }; diff --git a/keyboards/ut472/keymaps/stefanopace/rules.mk b/keyboards/ut472/keymaps/stefanopace/rules.mk index f9d9cd4656de..d941780558b1 100644 --- a/keyboards/ut472/keymaps/stefanopace/rules.mk +++ b/keyboards/ut472/keymaps/stefanopace/rules.mk @@ -4,4 +4,4 @@ MOUSEKEY_ENABLE = no EXTRAKEY_ENABLE = no BACKLIGHT_ENABLE = no -RGBLIGHT_ENABLE = no +RGBLIGHT_ENABLE = yes diff --git a/keyboards/ut472/keymaps/tucznak/rules.mk b/keyboards/ut472/keymaps/tucznak/rules.mk index 1c04eb7a22e5..d394c719f8aa 100644 --- a/keyboards/ut472/keymaps/tucznak/rules.mk +++ b/keyboards/ut472/keymaps/tucznak/rules.mk @@ -1,7 +1,7 @@ # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/ut472/rules.mk b/keyboards/ut472/rules.mk index a100637b472b..88ccac059008 100644 --- a/keyboards/ut472/rules.mk +++ b/keyboards/ut472/rules.mk @@ -2,31 +2,18 @@ MCU = atmega32u2 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes -TAP_DANCE_ENABLE = no # Enable tap dance feature diff --git a/keyboards/ut472/ut472.c b/keyboards/ut472/ut472.c index c0686d661aaf..637922171a86 100644 --- a/keyboards/ut472/ut472.c +++ b/keyboards/ut472/ut472.c @@ -1,13 +1 @@ #include "ut472.h" - -void matrix_init_kb(void) { - // Keyboard start-up code goes here - // Runs once when the firmware starts up - matrix_init_user(); -}; - -void matrix_scan_kb(void) { - // Looping keyboard code goes here - // This runs every cycle (a lot) - matrix_scan_user(); -}; diff --git a/keyboards/utd80/info.json b/keyboards/utd80/info.json index 701bf1fcf78f..360ccf4f8773 100644 --- a/keyboards/utd80/info.json +++ b/keyboards/utd80/info.json @@ -2,14 +2,9 @@ "keyboard_name": "UTD80", "url": "", "maintainer": "qmk", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT_tkl_ansi_wkl": { "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5, "w":2.25}, {"x":0, "y":4.5, "w":2.25}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":0, "y":5.5, "w":1.5}, {"x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":7}, {"x":11, "y":5.5, "w":1.5}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}] } } } - - - diff --git a/keyboards/utd80/rules.mk b/keyboards/utd80/rules.mk index f77a4ad18096..f69544424314 100644 --- a/keyboards/utd80/rules.mk +++ b/keyboards/utd80/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/uzu42/info.json b/keyboards/uzu42/info.json index 817d764fbd8e..a4903077cae2 100644 --- a/keyboards/uzu42/info.json +++ b/keyboards/uzu42/info.json @@ -2,8 +2,6 @@ "keyboard_name": "uzu42", "url": "https://github.com/nrtkbb/Keyboards/tree/master/uzu42", "maintainer": "nrtkbb", - "width": 13, - "height": 4.43, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/uzu42/keymaps/default/keymap.c b/keyboards/uzu42/keymaps/default/keymap.c index 393f7c3eae62..fbed8b0638f2 100644 --- a/keyboards/uzu42/keymaps/default/keymap.c +++ b/keyboards/uzu42/keymaps/default/keymap.c @@ -105,8 +105,8 @@ void matrix_init_user(void) { #endif } -//SSD1306 OLED update loop, make sure to enable OLED_DRIVER_ENABLE=yes in rules.mk -#ifdef OLED_DRIVER_ENABLE +//SSD1306 OLED update loop, make sure to enable OLED_ENABLE=yes in rules.mk +#ifdef OLED_ENABLE #define L_BASE 0 #define L_LOWER (1 << 1) @@ -197,7 +197,7 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) { return rotation; } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_keyboard_master()) { // If you want to change the display of OLED, you need to change here oled_write_ln(read_layer_state(), false); @@ -209,12 +209,13 @@ void oled_task_user(void) { } else { oled_write(read_logo(), false); } + return false; } -#endif // OLED_DRIVER_ENABLE +#endif // OLED_ENABLE bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (record->event.pressed) { -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE set_keylog(keycode, record); #endif // set_timelog(); diff --git a/keyboards/uzu42/rules.mk b/keyboards/uzu42/rules.mk index 600e0c94c838..d8dcf19a636a 100644 --- a/keyboards/uzu42/rules.mk +++ b/keyboards/uzu42/rules.mk @@ -2,34 +2,22 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -OLED_DRIVER_ENABLE = no # OLED display +AUDIO_ENABLE = no # Audio output +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. +OLED_ENABLE = no # OLED display SPLIT_KEYBOARD = yes DEFAULT_FOLDER = uzu42/rev1 diff --git a/keyboards/uzu42/uzu42.c b/keyboards/uzu42/uzu42.c index 0eb8c5f3aa35..df71734f7b88 100644 --- a/keyboards/uzu42/uzu42.c +++ b/keyboards/uzu42/uzu42.c @@ -1,5 +1 @@ #include "uzu42.h" - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - return process_record_user(keycode, record); -} diff --git a/keyboards/v4n4g0rth0n/config.h b/keyboards/v4n4g0rth0n/config.h new file mode 100644 index 000000000000..e023875feb65 --- /dev/null +++ b/keyboards/v4n4g0rth0n/config.h @@ -0,0 +1,46 @@ +/* +Copyright 2021 jpuerto + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xB33F +#define PRODUCT_ID 0x58E4 +#define MANUFACTURER s8erdude +#define PRODUCT v4n4g0rth0n + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 12 + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +// TOP, MID, BOT +// B4, D7, D6 +#define LED_NUM_LOCK_PIN B4 +#define LED_CAPS_LOCK_PIN D7 +#define LED_SCROLL_LOCK_PIN D6 diff --git a/keyboards/v4n4g0rth0n/info.json b/keyboards/v4n4g0rth0n/info.json new file mode 100644 index 000000000000..ee44b90798f3 --- /dev/null +++ b/keyboards/v4n4g0rth0n/info.json @@ -0,0 +1,64 @@ +{ + "keyboard_name": "v4n4g0rth0n", + "url": "https://github.com/jpuerto96/v4n4g0rth0n", + "maintainer": "jpuerto96 (s8erdude)", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"1", "x":0.5, "y":0}, + {"label":"2", "x":1.5, "y":0}, + {"label":"3", "x":2.5, "y":0}, + {"label":"4", "x":3.5, "y":0}, + {"label":"5", "x":4.5, "y":0}, + {"label":"6", "x":5.5, "y":0}, + {"label":"Tab", "x":0, "y":1}, + + {"label":"Q", "x":1, "y":1}, + {"label":"W", "x":2, "y":1}, + {"label":"E", "x":3, "y":1}, + {"label":"R", "x":4, "y":1}, + {"label":"T", "x":5, "y":1}, + {"label":"Y", "x":6.75, "y":1}, + {"label":"U", "x":7.75, "y":1}, + {"label":"I", "x":8.75, "y":1}, + {"label":"O", "x":9.75, "y":1}, + {"label":"P", "x":10.75, "y":1}, + {"label":"Back Space", "x":11.75, "y":1}, + + {"label":"Esc", "x":0, "y":2}, + {"label":"A", "x":1, "y":2}, + {"label":"S", "x":2, "y":2}, + {"label":"D", "x":3, "y":2}, + {"label":"F", "x":4, "y":2}, + {"label":"G", "x":5, "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":"Shift", "x":0, "y":3}, + {"label":"Z", "x":1, "y":3}, + {"label":"X", "x":2, "y":3}, + {"label":"C", "x":3, "y":3}, + {"label":"V", "x":4, "y":3}, + {"label":"B", "x":5, "y":3}, + {"label":"N", "x":6.75, "y":3}, + {"label":"M", "x":7.75, "y":3}, + {"label":",", "x":8.75, "y":3}, + {"label":".", "x":9.75, "y":3}, + {"label":"↑", "x":10.75, "y":3}, + {"label":"Return", "x":11.75, "y":3}, + + {"label":"Gui", "x":0, "y":4}, + {"label":"Ctrl", "x":1, "y":4}, + {"label":"Alt", "x":2, "y":4}, + {"label":"Space", "x":3, "y":4, "w":3}, + {"label":"Enter", "x":6.75, "y":4, "w":3}, + {"label":"←", "x":9.75, "y":4}, + {"label":"↓", "x":10.75, "y":4}, + {"label":"→", "x":11.75, "y":4}] + } + } +} diff --git a/keyboards/v4n4g0rth0n/readme.md b/keyboards/v4n4g0rth0n/readme.md new file mode 100644 index 000000000000..dd44c95e8217 --- /dev/null +++ b/keyboards/v4n4g0rth0n/readme.md @@ -0,0 +1,17 @@ +# v4n4g0rth0n + +Drop in ortholinear PCB replacement for V4N4G0N + +* Keyboard Maintainer: [jpuerto](https://github.com/jpuerto96) +* Hardware Supported: Only supports v4n4g0rth0n PCB +* Hardware Availability: [GitHub](https://github.com/jpuerto96/v4n4g0rth0n) + +Make example for this keyboard (after setting up your build environment): + + make v4n4g0rth0n/v1:default + +Flashing example for this keyboard: + + make v4n4g0rth0n/v1:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/v4n4g0rth0n/v1/config.h b/keyboards/v4n4g0rth0n/v1/config.h new file mode 100644 index 000000000000..dd72cf650035 --- /dev/null +++ b/keyboards/v4n4g0rth0n/v1/config.h @@ -0,0 +1,23 @@ +/* +Copyright 2021 jpuerto + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#define DEVICE_VER 0x0001 + +#define MATRIX_ROW_PINS { C7, C6, B6, B5, B7} +#define MATRIX_COL_PINS { D3, D2, D1, D0, D5, F7, F6, E6, F5, F4, F1, F0} diff --git a/keyboards/v4n4g0rth0n/v1/keymaps/default/keymap.c b/keyboards/v4n4g0rth0n/v1/keymaps/default/keymap.c new file mode 100644 index 000000000000..a1c547e8840d --- /dev/null +++ b/keyboards/v4n4g0rth0n/v1/keymaps/default/keymap.c @@ -0,0 +1,48 @@ +/* Copyright 2021 jpuerto + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _NUM, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [_BASE] = LAYOUT( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LCAP, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_SLSH, + KC_LGUI, MO(_NUM), MO(_FN), KC_SPC, KC_ENT, KC_LEFT, KC_DOWN, KC_RIGHT + ), + [_NUM] = LAYOUT( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, + KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_LCTL, RESET, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_SLSH, + RESET, KC_TRNS, KC_TRNS, KC_SPC, KC_ENT, KC_LEFT, KC_DOWN, KC_RIGHT + ), + [_FN] = LAYOUT( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, + KC_TAB, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_LCTL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_MINS, KC_EQL, KC_LCBR, KC_RCBR, KC_PIPE, KC_GRV, + KC_LSFT, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_UNDS, KC_PLUS, KC_LBRC, KC_RBRC, KC_BSLS, KC_TILD, + RESET, KC_TRNS, KC_TRNS, KC_SPC, KC_ENT, KC_LEFT, KC_DOWN, KC_RIGHT + ) +}; diff --git a/keyboards/v4n4g0rth0n/v1/readme.md b/keyboards/v4n4g0rth0n/v1/readme.md new file mode 100644 index 000000000000..957511705a83 --- /dev/null +++ b/keyboards/v4n4g0rth0n/v1/readme.md @@ -0,0 +1 @@ +Revision 1 of this PCB that does not support a slider. diff --git a/keyboards/v4n4g0rth0n/v1/rules.mk b/keyboards/v4n4g0rth0n/v1/rules.mk new file mode 100644 index 000000000000..e860310e1744 --- /dev/null +++ b/keyboards/v4n4g0rth0n/v1/rules.mk @@ -0,0 +1,19 @@ +# 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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/v4n4g0rth0n/v2/config.h b/keyboards/v4n4g0rth0n/v2/config.h new file mode 100644 index 000000000000..6e78e7357323 --- /dev/null +++ b/keyboards/v4n4g0rth0n/v2/config.h @@ -0,0 +1,23 @@ +/* +Copyright 2021 jpuerto + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#define DEVICE_VER 0x0002 + +#define MATRIX_ROW_PINS { C7, C6, B6, B5, B7} +#define MATRIX_COL_PINS { D3, D2, D1, D0, D5, F7, F6, E6, F5, F4, F1, B0} diff --git a/keyboards/v4n4g0rth0n/v2/keymaps/default/keymap.c b/keyboards/v4n4g0rth0n/v2/keymaps/default/keymap.c new file mode 100644 index 000000000000..11616b2e7b8a --- /dev/null +++ b/keyboards/v4n4g0rth0n/v2/keymaps/default/keymap.c @@ -0,0 +1,86 @@ +/* Copyright 2021 jpuerto + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +#include "analog.h" +int16_t max_pot_val = 1023; +int16_t max_ticks = 20; +int16_t pot_oldVal = 0; +int16_t pot_val = 0; +bool moving = false; +#define POT_TOLERANCE 50 +#define POT_PIN F0 +#include "print.h" + + +void matrix_init_user(void) { + analogReference(ADC_REF_POWER); +} + +void matrix_scan_user(void){ + pot_val = (analogReadPin(POT_PIN)); + + // If there is a big enough change, then we need to do something + if (abs(pot_val - pot_oldVal) > POT_TOLERANCE) { + moving = true; + pot_oldVal = pot_val; + } + else{ + if (moving){ + // Do some fancy conversion to get 'absolute' position to num tap_codes to send + // Reset moving to 0 so that we don't get multiple attempts to do this + int num_ticks = ((float)pot_val/max_pot_val)*max_ticks; + for (int i = 0; i. + */ + +#include "v4n4g0rth0n.h" diff --git a/keyboards/v4n4g0rth0n/v4n4g0rth0n.h b/keyboards/v4n4g0rth0n/v4n4g0rth0n.h new file mode 100644 index 000000000000..7c8edfeb1255 --- /dev/null +++ b/keyboards/v4n4g0rth0n/v4n4g0rth0n.h @@ -0,0 +1,43 @@ +/* Copyright 2021 jpuerto + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + k00, k01, k02, k03, k04, k05, \ + 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, k44, k47, k49, k4A, k4B \ +) { \ + { k00, k01, k02, k03, k04, k05, XXX, XXX, XXX, XXX, XXX, XXX }, \ + { 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, XXX, k44, XXX, XXX, k47, XXX, k49, k4A, k4B } \ +} diff --git a/keyboards/v60_type_r/config.h b/keyboards/v60_type_r/config.h index 38758d4ad3b9..c013bb99314f 100644 --- a/keyboards/v60_type_r/config.h +++ b/keyboards/v60_type_r/config.h @@ -100,54 +100,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -165,23 +117,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 diff --git a/keyboards/v60_type_r/info.json b/keyboards/v60_type_r/info.json index fe5be6055fb5..ee5a2f81cdba 100644 --- a/keyboards/v60_type_r/info.json +++ b/keyboards/v60_type_r/info.json @@ -2,8 +2,6 @@ "keyboard_name": "V60 Type R", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"~", "x":13, "y":0}, {"label":"Del", "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}, {"label":"Fn", "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/v60_type_r/keymaps/default/keymap.c b/keyboards/v60_type_r/keymaps/default/keymap.c index 352400815e25..a002a46a8c10 100644 --- a/keyboards/v60_type_r/keymaps/default/keymap.c +++ b/keyboards/v60_type_r/keymaps/default/keymap.c @@ -62,7 +62,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), }; - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/v60_type_r/keymaps/iso/keymap.c b/keyboards/v60_type_r/keymaps/iso/keymap.c index 74aee86ed59a..17feaec3dbdc 100644 --- a/keyboards/v60_type_r/keymaps/iso/keymap.c +++ b/keyboards/v60_type_r/keymaps/iso/keymap.c @@ -48,7 +48,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/v60_type_r/rules.mk b/keyboards/v60_type_r/rules.mk index 666022724503..23f414063666 100644 --- a/keyboards/v60_type_r/rules.mk +++ b/keyboards/v60_type_r/rules.mk @@ -2,34 +2,22 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable the RGB Underglow RGBLIGHT_CUSTOM_DRIVER = yes -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LTO_ENABLE = yes diff --git a/keyboards/vagrant_10/info.json b/keyboards/vagrant_10/info.json index badf84a7b832..9d1a788b27e3 100644 --- a/keyboards/vagrant_10/info.json +++ b/keyboards/vagrant_10/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Vagrant-10", "url": "https://github.com/Sho-Keebs/Vagrant-10", "maintainer": "Shanduur", - "width": 3, - "height": 4, "layouts": { "LAYOUT": { "layout": [{"x":1, "y":0, "w":2}, {"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":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}] diff --git a/keyboards/vagrant_10/rules.mk b/keyboards/vagrant_10/rules.mk index e4ffb10d0494..b97001801122 100755 --- a/keyboards/vagrant_10/rules.mk +++ b/keyboards/vagrant_10/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/viktus/sp111/info.json b/keyboards/viktus/sp111/info.json index 0061062f56f7..ea4fe82e1ddf 100644 --- a/keyboards/viktus/sp111/info.json +++ b/keyboards/viktus/sp111/info.json @@ -2,8 +2,6 @@ "keyboard_name": "SP-111", "url": "https://thekey.company/products/sp-111", "maintainer": "blindassassin111", - "width": 22.5, - "height": 6.75, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/viktus/sp111/rules.mk b/keyboards/viktus/sp111/rules.mk index 6aab680742ca..ad7fd89b27ab 100644 --- a/keyboards/viktus/sp111/rules.mk +++ b/keyboards/viktus/sp111/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LTO_ENABLE = yes # Smaller (and slightly faster) firmware diff --git a/keyboards/viktus/sp_mini/config.h b/keyboards/viktus/sp_mini/config.h new file mode 100644 index 000000000000..06b8c2f51a82 --- /dev/null +++ b/keyboards/viktus/sp_mini/config.h @@ -0,0 +1,99 @@ +/* +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x5644 +#define PRODUCT_ID 0x534D +#define DEVICE_VER 0x0001 +#define MANUFACTURER Viktus_Design +#define PRODUCT SP_Mini + +/* key matrix size */ +// Rows are doubled-up +#define MATRIX_ROWS 10 +#define MATRIX_COLS 8 + + +// wiring of each half +#define MATRIX_ROW_PINS { F0, B5, B4, D7, D6 } +#define MATRIX_COL_PINS { B6, C6, C7, D4, D2, D3, D5 } // no B7 on left hand +#define MATRIX_ROW_PINS_RIGHT { F0, B5, B4, D7, D6 } +#define MATRIX_COL_PINS_RIGHT { B6, C6, C7, D4, D2, D3, D5, B7 } + + +#define DIODE_DIRECTION COL2ROW + +/* Split Defines */ +#define SPLIT_USB_DETECT +#define MASTER_LEFT +#define USE_I2C + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + + +/* ws2812 RGB LED */ +#define RGB_DI_PIN E6 +#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_SPLIT +#define RGBLED_NUM 24 // Number of LEDs +#define RGBLED_SPLIT { 12, 12 } + + + +#define ENCODERS_PAD_A {F4} +#define ENCODERS_PAD_B {F1} +//#define ENCODERS_PAD_A_RIGHT {F4} +//#define ENCODERS_PAD_B_RIGHT {F1} + +#define ENCODER_RESOLUTIONS { 8, 8 } + +/* + * 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/viktus/sp_mini/info.json b/keyboards/viktus/sp_mini/info.json new file mode 100644 index 000000000000..5c3cc4c5de6b --- /dev/null +++ b/keyboards/viktus/sp_mini/info.json @@ -0,0 +1,83 @@ +{ + "keyboard_name": "sp_mini", + "url": "", + "maintainer": "jrfhoutx", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"x":0, "y":0}, + {"x":1.25, "y":0}, + {"x":2.25, "y":0}, + {"x":3.25, "y":0}, + {"x":4.25, "y":0}, + {"x":5.25, "y":0}, + {"x":6.25, "y":0}, + {"x":7.75, "y":0}, + {"x":8.75, "y":0}, + {"x":9.75, "y":0}, + {"x":10.75, "y":0}, + {"x":11.75, "y":0}, + {"x":12.75, "y":0}, + {"x":13.75, "y":0}, + {"x":15, "y":0}, + + {"x":0, "y":1.25}, + {"label":"Esc", "x":1.25, "y":1.25}, + {"label":"Q", "x":2.25, "y":1.25}, + {"label":"W", "x":3.25, "y":1.25}, + {"label":"E", "x":4.25, "y":1.25}, + {"label":"R", "x":5.25, "y":1.25}, + {"label":"T", "x":6.25, "y":1.25}, + {"label":"Y", "x":7.75, "y":1.25}, + {"label":"U", "x":8.75, "y":1.25}, + {"label":"I", "x":9.75, "y":1.25}, + {"label":"O", "x":10.75, "y":1.25}, + {"label":"P", "x":11.75, "y":1.25}, + {"label":"Delete", "x":12.75, "y":1.25}, + {"label":"Back", "x":13.75, "y":1.25}, + {"x":15, "y":1.25}, + + {"x":0, "y":2.25}, + {"label":"Tab", "x":1.25, "y":2.25, "w":1.25}, + {"label":"A", "x":2.5, "y":2.25}, + {"label":"S", "x":3.5, "y":2.25}, + {"label":"D", "x":4.5, "y":2.25}, + {"label":"F", "x":5.5, "y":2.25}, + {"label":"G", "x":6.5, "y":2.25}, + {"label":"H", "x":8, "y":2.25}, + {"label":"J", "x":9, "y":2.25}, + {"label":"K", "x":10, "y":2.25}, + {"label":"L", "x":11, "y":2.25}, + {"label":"\"", "x":12, "y":2.25}, + {"label":"Enter", "x":13, "y":2.25, "w":1.75}, + {"x":15, "y":2.25}, + + {"x":0, "y":3.25}, + {"label":"Shift", "x":1.25, "y":3.25, "w":1.75}, + {"label":"Z", "x":3, "y":3.25}, + {"label":"X", "x":4, "y":3.25}, + {"label":"C", "x":5, "y":3.25}, + {"label":"V", "x":6, "y":3.25}, + {"label":"B", "x":7, "y":3.25}, + {"label":"N", "x":8.5, "y":3.25}, + {"label":"M", "x":9.5, "y":3.25}, + {"label":"<", "x":10.5, "y":3.25}, + {"label":">", "x":11.5, "y":3.25}, + {"label":"Shift", "x":12.5, "y":3.25, "w":1.25}, + {"label":"\u2191", "x":14, "y":3.5}, + + {"x":0, "y":4.25}, + {"label":"Ctrl", "x":1.25, "y":4.25, "w":1.25}, + {"label":"LAlt", "x":2.5, "y":4.25}, + {"label":"LGUI", "x":3.5, "y":4.25}, + {"label":"Fn1", "x":4.5, "y":4.25, "w":1.25}, + {"label":"SPFn1", "x":5.75, "y":4.25, "w":2}, + {"label":"BSFn2", "x":8.25, "y":4.25, "w":2.25}, + {"label":"Alt", "x":10.5, "y":4.25, "w":1.25}, + {"label":"Fn2", "x":11.75, "y":4.25}, + {"label":"\u2190", "x":13, "y":4.5}, + {"label":"\u2193", "x":14, "y":4.5}, + {"label":"\u2192", "x":15, "y":4.5}] + } + } +} diff --git a/keyboards/viktus/sp_mini/keymaps/default/keymap.c b/keyboards/viktus/sp_mini/keymaps/default/keymap.c new file mode 100644 index 000000000000..e01b6083d7d6 --- /dev/null +++ b/keyboards/viktus/sp_mini/keymaps/default/keymap.c @@ -0,0 +1,128 @@ + /* Copyright 2021 jrfhoutx + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. + + +enum custom_layers { + _BASE, + _FN1, + _FN2, + _FN3, +}; + +enum custom_keycodes { + QWERTY = SAFE_RANGE, +}; + +#define KC_FN1 MO(_FN1) +#define KC_FN2 MO(_FN2) +#define SPFN1 LT(_FN1, KC_SPACE) +#define BSFN2 LT(_FN2, KC_BSPC) + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_F24, _______, _______, + MO(1), KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_BSPC, _______, + MO(2), KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT, _______, + _______, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, + _______, KC_LCTL, KC_LALT, KC_LGUI, KC_FN1, SPFN1, BSFN2, KC_RALT, KC_FN2, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_FN1] = LAYOUT_all( + _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, _______, + _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, KC_VOLU, KC_LBRC, KC_RBRC, KC_4, KC_5, KC_6, KC_SCLN, _______, _______, + _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, KC_VOLD, KC_LCBR, KC_RCBR, KC_1, KC_2, KC_3, _______, KC_UP, + _______, _______, _______, _______, _______, _______, KC_DEL, KC_0, _______, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_FN2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_UNDS, KC_PLUS, _______, + _______, _______, _______, _______, KC_INS, KC_PGUP, KC_HOME, _______, _______, _______, _______, KC_COLN, _______, _______, + _______, _______, _______, _______, KC_DEL, KC_PGDN, KC_END, _______, _______, _______, _______, _______, KC_UP, + _______, _______, _______, _______, _______, KC_DEL, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_FN3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_F24, _______, _______, + MO(1), KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_BSPC, _______, + MO(2), KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT, _______, + _______, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, + _______, KC_LCTL, KC_LALT, KC_LGUI, KC_FN1, SPFN1, BSFN2, KC_RALT, KC_FN2, KC_LEFT, KC_DOWN, KC_RGHT + ) + +}; + +void keyboard_pre_init_user(void) { + setPinOutput(F5); // initialize F5 for LED + setPinOutput(F6); // initialize F6 for LED + setPinOutput(F7); // initialize F7 for LED + +} + +layer_state_t layer_state_set_user(layer_state_t state) { + writePinLow(F5); + writePinLow(F6); + writePinLow(F7); + switch (get_highest_layer(state)) { + case _FN1: + writePinHigh(F5); + break; + case _FN2: + writePinHigh(F6); + break; + case _FN3: // replace 'XXXX' with the layer or function name + writePinHigh(F7); + break; + case KC_F24: + writePinHigh(F7); + writePinHigh(F5); + writePinHigh(F6); + break; + } + return state; +} + + +bool spongebob_mode = false; +bool spongebob_case = false; +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (spongebob_mode) { + switch(keycode) { + case KC_A...KC_Z: + if (record->event.pressed) { + (spongebob_case ^= 1) == 0 ? tap_code16(S(keycode)) : tap_code(keycode); + return false; break; + } + } + } + switch(keycode) { + case KC_F24: + if (record->event.pressed) { + spongebob_mode ^= 1; + } + return false; break; + } + return true; +} diff --git a/keyboards/viktus/sp_mini/keymaps/peott-fr/keymap.c b/keyboards/viktus/sp_mini/keymaps/peott-fr/keymap.c new file mode 100644 index 000000000000..93d65c93a217 --- /dev/null +++ b/keyboards/viktus/sp_mini/keymaps/peott-fr/keymap.c @@ -0,0 +1,117 @@ + /* Copyright 2021 peott + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Layers by name +enum custom_layers { + _BASE, + _LHAND, + _RHAND, + _NUM +}; + +// Layers defined by function +#define LHAND LT(_LHAND,KC_SPC) +#define RHAND LT(_RHAND,KC_BSPC) +#define NUM TG(_NUM) +// Keycodes for cleaner code +#define L_CTRL LCTL_T(KC_MPRV) +#define L_ALT LALT_T(KC_MNXT) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_all( + KC_MPLY, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, + KC_TRNS, 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, NUM, + KC_TRNS, 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_DEL, + KC_TRNS, KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, + KC_TRNS, L_CTRL, KC_LGUI, L_ALT, KC_NO, LHAND, RHAND, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_LHAND] = LAYOUT_all( + RESET, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, + KC_HOME, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, + KC_PGUP, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_ENT, KC_TRNS, + KC_PGDN, KC_LSFT, KC_CALC, KC_MYCM, KC_TRNS, KC_ENT, KC_BSPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RSPC, KC_TRNS, + KC_END, KC_LCTL, KC_TRNS, KC_LALT, KC_TRNS, KC_TRNS, KC_TRNS, KC_RALT, KC_RCTL, KC_TRNS, KC_TRNS, KC_TRNS + ), + [_RHAND] = LAYOUT_all( + 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_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, + KC_NO, KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_UNDS, KC_PLUS, KC_NO, KC_PIPE, + KC_NO, KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_RSPC, 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 + ), + [_NUM] = LAYOUT_all( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_NO, KC_NO, KC_NO, KC_F13, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_NO, KC_NO, KC_NO, NUM, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_P4, KC_P5, KC_P6, KC_PCMM, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_P1, KC_P2, KC_P3, KC_PEQL, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_P0, KC_PDOT, KC_PENT, KC_NO, KC_NO, KC_NO + ) +}; + +void keyboard_pre_init_user(void) { + setPinOutput(F5); // initialize F5 for LED + setPinOutput(F6); // initialize F6 for LED + setPinOutput(F7); // initialize F7 for LED +} + +layer_state_t layer_state_set_user(layer_state_t state) { + writePinLow(F5); + writePinLow(F6); + writePinLow(F7); + switch (get_highest_layer(state)) { + case _LHAND: + writePinHigh(F5); + break; + case _RHAND: + writePinHigh(F6); + break; + case _NUM: // replace 'XXXX' with the layer or function name + writePinHigh(F7); + break; + case KC_F13: + writePinHigh(F7); + writePinHigh(F5); + writePinHigh(F6); + break; + } + return state; +} + +bool spongebob_mode = false; +bool spongebob_case = false; +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (spongebob_mode) { + switch(keycode) { + case KC_A...KC_Z: + if (record->event.pressed) { + (spongebob_case ^= 1) == 0 ? tap_code16(S(keycode)) : tap_code(keycode); + return false; break; + } + } + } + switch(keycode) { + case KC_F13: + if (record->event.pressed) { + spongebob_mode ^= 1; + } + return false; break; + } + return true; +} + + diff --git a/keyboards/viktus/sp_mini/keymaps/via/keymap.c b/keyboards/viktus/sp_mini/keymaps/via/keymap.c new file mode 100644 index 000000000000..e1242d5b9cf4 --- /dev/null +++ b/keyboards/viktus/sp_mini/keymaps/via/keymap.c @@ -0,0 +1,136 @@ + /* Copyright 2021 jrfhoutx + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. + + +enum custom_layers { + _BASE, + _FN1, + _FN2, + _FN3, +}; + +enum custom_keycodes { + QWERTY = SAFE_RANGE, +}; + +#define KC_FN1 MO(_FN1) +#define KC_FN2 MO(_FN2) +#define SPFN1 LT(_FN1, KC_SPACE) +#define BSFN2 LT(_FN2, KC_BSPC) + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + MO(1), KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_BSPC, _______, + MO(2), KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT, _______, + _______, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, + _______, KC_LCTL, KC_LALT, KC_LGUI, KC_FN1, SPFN1, BSFN2, KC_RALT, KC_FN2, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_FN1] = LAYOUT_all( + _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, _______, + _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, KC_VOLU, KC_LBRC, KC_RBRC, KC_4, KC_5, KC_6, KC_SCLN, _______, _______, + _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, KC_VOLD, KC_LCBR, KC_RCBR, KC_1, KC_2, KC_3, _______, KC_UP, + _______, _______, _______, _______, _______, _______, KC_DEL, KC_0, _______, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_FN2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_UNDS, KC_PLUS, _______, + _______, _______, _______, _______, KC_INS, KC_PGUP, KC_HOME, _______, _______, _______, _______, KC_COLN, _______, _______, + _______, _______, _______, _______, KC_DEL, KC_PGDN, KC_END, _______, _______, _______, _______, _______, KC_UP, + _______, _______, _______, _______, _______, KC_DEL, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_FN3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_F24, _______, _______, + MO(1), KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_BSPC, _______, + MO(2), KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT, _______, + _______, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, + _______, KC_LCTL, KC_LALT, KC_LGUI, KC_FN1, SPFN1, BSFN2, KC_RALT, KC_FN2, KC_LEFT, KC_DOWN, KC_RGHT + ) + +}; + +void keyboard_pre_init_user(void) { + setPinOutput(F5); // initialize F5 for LED + setPinOutput(F6); // initialize F6 for LED + setPinOutput(F7); // initialize F7 for LED + +} + +layer_state_t layer_state_set_user(layer_state_t state) { + switch (get_highest_layer(state)) { + case _FN1: + writePinHigh(F5); + writePinLow(F6); + writePinLow(F7); + break; + case _FN2: + writePinHigh(F6); + writePinLow(F5); + writePinLow(F7); + break; + case _FN3: // replace 'XXXX' with the layer or function name + writePinHigh(F7); + writePinLow(F5); + writePinLow(F6); + break; + case KC_F24: + writePinHigh(F7); + writePinHigh(F5); + writePinHigh(F6); + break; + default: + writePinLow(F5); + writePinLow(F6); + writePinLow(F7); + break; + } + return state; +} + + +bool spongebob_mode = false; +bool spongebob_case = false; +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (spongebob_mode) { + switch(keycode) { + case KC_A...KC_Z: + if (record->event.pressed) { + (spongebob_case ^= 1) == 0 ? tap_code16(S(keycode)) : tap_code(keycode); + return false; break; + } + } + } + switch(keycode) { + case USER00: + if (record->event.pressed) { + spongebob_mode ^= 1; + } + return false; break; + } + return true; +} diff --git a/keyboards/viktus/sp_mini/keymaps/via/rules.mk b/keyboards/viktus/sp_mini/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/viktus/sp_mini/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/viktus/sp_mini/readme.md b/keyboards/viktus/sp_mini/readme.md new file mode 100644 index 000000000000..339977be6dc0 --- /dev/null +++ b/keyboards/viktus/sp_mini/readme.md @@ -0,0 +1,21 @@ +# sp_mini + +![sp_mini](https://i.imgur.com/ayX0wnXh.jpg) + +The SP Mini is a 40% version of the SP-111 created in a collaboration of OneCreativeMind and BlindAssassin111 (Viktus owner). All design done by BlindAssassin111. The layout includes an F Row, left macro column, and arrows. Rotary encoders are supported in the top left and right positions. The board also features three through hole LED indicators and RGB underglow. + +The SP Mini has dual ATMEGA32U4 controllers linked with USB Type C. Each PCB half has a single reset button and a standard AVR ISP header. + +* Keyboard Maintainer: [jrfhoutx](https://github.com/jrfhoutx) +* Hardware Supported: SP Mini FE (Founder's Edition), SP Mini LC (Low Cal) +* Hardware Availability: Viktus Designs, LLC. + +Make example for this keyboard (after setting up your build environment): + + make viktus/sp_mini:default + +Flashing example for this keyboard: + + make viktus/sp_mini:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/viktus/sp_mini/rules.mk b/keyboards/viktus/sp_mini/rules.mk new file mode 100644 index 000000000000..f6f7bcddaebc --- /dev/null +++ b/keyboards/viktus/sp_mini/rules.mk @@ -0,0 +1,21 @@ +# 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 +# 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 +SPLIT_KEYBOARD = yes +ENCODER_ENABLE = yes diff --git a/keyboards/viktus/sp_mini/sp_mini.c b/keyboards/viktus/sp_mini/sp_mini.c new file mode 100644 index 000000000000..c2ccc6db2ff5 --- /dev/null +++ b/keyboards/viktus/sp_mini/sp_mini.c @@ -0,0 +1,45 @@ + /* Copyright 2021 jrfhoutx + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "sp_mini.h" + +void keyboard_pre_init_kb(void) { + // enable built in pullups to avoid timeouts when right hand not connected + setPinInputHigh(D0); + setPinInputHigh(D1); + + keyboard_pre_init_user(); +} + +#ifdef ENCODER_ENABLE +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + 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_VOLU); + } else { + tap_code(KC_VOLD); + } + } + return true; +} +#endif diff --git a/keyboards/viktus/sp_mini/sp_mini.h b/keyboards/viktus/sp_mini/sp_mini.h new file mode 100644 index 000000000000..6474a4f71ee7 --- /dev/null +++ b/keyboards/viktus/sp_mini/sp_mini.h @@ -0,0 +1,41 @@ + /* Copyright 2021 jrfhoutx + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ___ KC_NO + +#define LAYOUT_all( \ + L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, R07, \ + L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, R17, \ + L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R26, R27, \ + L30, L31, L32, L33, L34, L35, L36, R31, R32, R33, R34, R35, R36, \ + L40, L41, L42, L43, L44, L45, R42, R43, R44, R45, R46, R47 \ + ) \ + { \ + { 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, ___ }, \ + { R00, R01, R02, R03, R04, R05, R06, R07}, \ + { R10, R11, R12, R13, R14, R15, R16, R17}, \ + { R20, R21, R22, R23, R24, ___, R26, R27}, \ + { ___, R31, R32, R33, R34, R35, R36, ___}, \ + { ___, ___, R42, R43, R44, R45, R46, R47} \ +} diff --git a/keyboards/viktus/styrka/info.json b/keyboards/viktus/styrka/info.json index 649cbfc15154..f3d828a1a67d 100644 --- a/keyboards/viktus/styrka/info.json +++ b/keyboards/viktus/styrka/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Styrka", "url": "https", "maintainer": "jrfhoutx", - "width": 18.25, - "height": 5, "layouts": { "LAYOUT_default": { "layout": [{"label":"F1", "x":0, "y":0}, {"label":"MO(1)", "x":1, "y":0}, {"label":"~", "x":2.25, "y":0}, {"label":"!", "x":3.25, "y":0}, {"label":"@", "x":4.25, "y":0}, {"label":"#", "x":5.25, "y":0}, {"label":"$", "x":6.25, "y":0}, {"label":"%", "x":7.25, "y":0}, {"label":"^", "x":8.25, "y":0}, {"label":"&", "x":9.25, "y":0}, {"label":"*", "x":10.25, "y":0}, {"label":"(", "x":11.25, "y":0}, {"label":")", "x":12.25, "y":0}, {"label":"_", "x":13.25, "y":0}, {"label":"+", "x":14.25, "y":0}, {"label":"Backspace", "x":15.25, "y":0, "w":2}, {"label":"Insert", "x":17.25, "y":0}, {"label":"F3", "x":0, "y":1}, {"label":"F4", "x":1, "y":1}, {"label":"Tab", "x":2.25, "y":1, "w":1.5}, {"label":"Q", "x":3.75, "y":1}, {"label":"W", "x":4.75, "y":1}, {"label":"E", "x":5.75, "y":1}, {"label":"R", "x":6.75, "y":1}, {"label":"T", "x":7.75, "y":1}, {"label":"Y", "x":8.75, "y":1}, {"label":"U", "x":9.75, "y":1}, {"label":"I", "x":10.75, "y":1}, {"label":"O", "x":11.75, "y":1}, {"label":"P", "x":12.75, "y":1}, {"label":"{", "x":13.75, "y":1}, {"label":"}", "x":14.75, "y":1}, {"label":"|", "x":15.75, "y":1, "w":1.5}, {"label":"Delete", "x":17.25, "y":1}, {"label":"F5", "x":0, "y":2}, {"label":"F6", "x":1, "y":2}, {"label":"Caps Lock", "x":2.25, "y":2, "w":1.75}, {"label":"A", "x":4, "y":2}, {"label":"S", "x":5, "y":2}, {"label":"D", "x":6, "y":2}, {"label":"F", "x":7, "y":2}, {"label":"G", "x":8, "y":2}, {"label":"H", "x":9, "y":2}, {"label":"J", "x":10, "y":2}, {"label":"K", "x":11, "y":2}, {"label":"L", "x":12, "y":2}, {"label":":", "x":13, "y":2}, {"label":"\"", "x":14, "y":2}, {"label":"Enter", "x":15, "y":2, "w":2.25}, {"label":"PgUp", "x":17.25, "y":2}, {"label":"F7", "x":0, "y":3}, {"label":"F8", "x":1, "y":3}, {"label":"Shift", "x":2.25, "y":3, "w":2.25}, {"label":"Z", "x":4.5, "y":3}, {"label":"X", "x":5.5, "y":3}, {"label":"C", "x":6.5, "y":3}, {"label":"V", "x":7.5, "y":3}, {"label":"B", "x":8.5, "y":3}, {"label":"N", "x":9.5, "y":3}, {"label":"M", "x":10.5, "y":3}, {"label":"<", "x":11.5, "y":3}, {"label":">", "x":12.5, "y":3}, {"label":"?", "x":13.5, "y":3}, {"label":"Shift", "x":14.5, "y":3, "w":1.75}, {"label":"\u2191", "x":16.25, "y":3}, {"label":"PgDn", "x":17.25, "y":3}, {"label":"F9", "x":0, "y":4}, {"label":"F10", "x":1, "y":4}, {"label":"Ctrl", "x":2.25, "y":4, "w":1.25}, {"label":"Win", "x":3.5, "y":4, "w":1.25}, {"label":"Alt", "x":4.75, "y":4, "w":1.25}, {"x":6, "y":4, "w":6.25}, {"label":"Alt", "x":12.25, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.25}, {"label":"\u2190", "x":15.25, "y":4}, {"label":"\u2193", "x":16.25, "y":4}, {"label":"\u2192", "x":17.25, "y":4}] diff --git a/keyboards/viktus/styrka/rules.mk b/keyboards/viktus/styrka/rules.mk index 612d7e4ccb77..3b1d550b6087 100644 --- a/keyboards/viktus/styrka/rules.mk +++ b/keyboards/viktus/styrka/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/vinta/config.h b/keyboards/vinta/config.h deleted file mode 100644 index 5aaa3089d44d..000000000000 --- a/keyboards/vinta/config.h +++ /dev/null @@ -1,64 +0,0 @@ -#pragma once - -#include "config_common.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x0C61 -#define DEVICE_VER 0x00C6 -#define MANUFACTURER PeiorisBoards -#define PRODUCT Vinta R1 - -/* key matrix size */ -#define MATRIX_ROWS 5 -#define MATRIX_COLS 16 - -#define MATRIX_ROW_PINS { A10, A9, B0, A7, A6 } -#define MATRIX_COL_PINS { A5, A4, A3, A2, A1, A0, F1, F0, B7, B6, B5, B4, B3, A15, A14, A13 } - -/* COL2ROW, ROW2COL*/ -#define DIODE_DIRECTION COL2ROW - -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 0 - -/* define if matrix has ghost (lacks anti-ghosting diodes) */ -//#define MATRIX_HAS_GHOST - -/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. - * This is userful for the Windows task manager shortcut (ctrl+shift+esc). - */ -// #define GRAVE_ESC_CTRL_OVERRIDE - -/* - * Force NKRO - * - * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved - * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the - * makefile for this to work.) - * - * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) - * until the next keyboard reset. - * - * NKRO may prevent your keystrokes from being detected in the BIOS, but it is - * fully operational during normal computer usage. - * - * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) - * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by - * bootmagic, NKRO mode will always be enabled until it is toggled again during a - * power-up. - * - */ -//#define FORCE_NKRO - -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ diff --git a/keyboards/vinta/info.json b/keyboards/vinta/info.json deleted file mode 100644 index 5b6b9fa3705d..000000000000 --- a/keyboards/vinta/info.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "keyboard_name": "vinta", - "url": "", - "maintainer": "Peioris", - "width": 16, - "height": 5, - "layouts": { - "LAYOUT_69_ansi": { - "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"~", "x":13, "y":0}, {"label":"|", "x":14, "y":0}, {"label":"Del", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"PgUp", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"PgDn", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"label":"End", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4}, {"label":"Reset", "x":11, "y":4}, {"label":"Ctrl", "x":12, "y":4}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}] - }, - "LAYOUT_68_tada": { - "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"~", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Del", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"PgUp", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"label":"PgDn", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4}, {"label":"Menu", "x":11, "y":4}, {"label":"Ctrl", "x":12, "y":4}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}] - }, - "LAYOUT_65_ansi_blocker": { - "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"~", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Del", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"PgUp", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"label":"PgDn", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Ctrl", "x":11.25, "y":4, "w":1.25}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}] - } - } -} diff --git a/keyboards/vinta/keymaps/default/keymap.c b/keyboards/vinta/keymaps/default/keymap.c deleted file mode 100644 index 80499d73fc9e..000000000000 --- a/keyboards/vinta/keymaps/default/keymap.c +++ /dev/null @@ -1,51 +0,0 @@ -/* Copyright 2018 Peioris - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Keymap _BL: (Base Layer) Default Layer - * ,----------------------------------------------------------------. - * |Esc | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \ | ` |Del | - * |----------------------------------------------------------------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| Bspc|PgUp| - * |----------------------------------------------------------------| - * |CAPS | A| S| D| F| G| H| J| K| L| ;| '|Return |PgDn| - * |----------------------------------------------------------------| - * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up|End | - * |----------------------------------------------------------------| - * |Ctrl|Win |Alt | Space |Alt|RST|Ctrl|Lef|Dow|Rig | - * `----------------------------------------------------------------' - */ -[0] = LAYOUT_69_ansi( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, KC_DEL,\ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGUP,\ - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,\ - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, \ - KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT, RESET, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), -}; - -void matrix_init_user(void) { - //user initialization -} - -void matrix_scan_user(void) { - //user matrix -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} diff --git a/keyboards/vinta/readme.md b/keyboards/vinta/readme.md deleted file mode 100644 index a55395197e46..000000000000 --- a/keyboards/vinta/readme.md +++ /dev/null @@ -1,22 +0,0 @@ -Vinta -========= - -[Vinta](https://i.imgur.com/huX3lff.jpg) - - -This is an ARM-powered 65% keyboard PCB with USB Mini B connector and breakout for optional RGB underglow. - -Keyboard Maintainer: [Peioris](http://peioris.space/) and on [GitHub](https://github.com/coarse) -Hardware Supported: Vinta with STM32F042K6T6 -Hardware Availability: Private Groupbuy (will post on Reddit once QMK has RGB underglow working) - -Make example for this keyboard (after setting up your build environment): - - make vinta:default - -See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. - -#### Developer's Note - -STM32F042xx chips does not allow jumping to bootloader without BOOT0 being set to high, therefore it is impossible to enter the bootloader from sending a `RESET` keycode nor using bootmagic or bootmagic lite. -The only way to enter bootloader is to hold the BOOT0 button while the keyboard is powering up or after a power reset (done by pressing the reset switch or sending a `RESET` keycode). \ No newline at end of file diff --git a/keyboards/vinta/rules.mk b/keyboards/vinta/rules.mk deleted file mode 100644 index 6addb0805376..000000000000 --- a/keyboards/vinta/rules.mk +++ /dev/null @@ -1,23 +0,0 @@ -# MCU name -MCU = STM32F042 - -# Bootloader selection -BOOTLOADER = stm32-dfu - -# Build Options -# comment out to disable the options. -# -BACKLIGHT_ENABLE = no -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -NKRO_ENABLE = yes # USB Nkey Rollover -NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in - -LAYOUTS = 65_ansi_blocker - - -# Enter lower-power sleep mode when on the ChibiOS idle thread -OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/vinta/vinta.c b/keyboards/vinta/vinta.c deleted file mode 100644 index 112e44fb8e6e..000000000000 --- a/keyboards/vinta/vinta.c +++ /dev/null @@ -1,18 +0,0 @@ -#include "vinta.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - - return process_record_user(keycode, record); -} diff --git a/keyboards/vinta/vinta.h b/keyboards/vinta/vinta.h deleted file mode 100644 index 03a815c0659c..000000000000 --- a/keyboards/vinta/vinta.h +++ /dev/null @@ -1,55 +0,0 @@ -#ifndef VINTA_H -#define VINTA_H - -#define XXX KC_NO - -#include "quantum.h" - -// 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 } \ -} - -#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 } \ -} - -#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 } \ -} - -#endif diff --git a/keyboards/vision_division/Potential Layouts.txt b/keyboards/vision_division/Potential Layouts.txt deleted file mode 100644 index f715ac8c65cd..000000000000 --- a/keyboards/vision_division/Potential Layouts.txt +++ /dev/null @@ -1,84 +0,0 @@ -/* Numeric Max / Numeric Normal - Full Grid - * .-----------------------------------. .--------------------------------------------------------------_--------------------------------------------------------------. .-----------------------------------. - * | | | | | | | | | | | | | | | | | | | | | | | | | - * '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' - * .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. - * | | | | | | | | | | | | | | | | | | | | | | | | | - * |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------| - * | | | | | | | | | | | | | | | | | | | | | | | | | - * |--------+--------+--------+--------| o |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------| - * | | | | | o | | | | | | | | | | | | | | | | | | | | - * |--------+--------+--------+--------| o |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------| - * | | | | | | | | | | | | | | | | | | | | | | | | | - * |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------| - * | | | | | | | | | | | | | | | | | | | | | | | | | - * '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' - */ - -//* Numeric Max / Homing Normal - Full Grid - * .-----------------------------------. .--------------------------------------------------------------_--------------------------------------------------------------. .--------------------------. - * | | | | | | | | | | | | | | | | | | | | | | | | - * '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '--------------------------' - * .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .--------------------------. - * | | | | | | | | | | | | | | | | | | | | | | | | - * |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------| - * | | | | | | | | | | | | | | | | | | | | | | | | - * |--------+--------+--------+--------| o |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------| - * | | | | | o | | | | | | | | | | | | | | | | | | | - * |--------+--------+--------+--------| o |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------| - * | | | | | | | | | | | | | | | | | | | | | | | | - * |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------| - * | | | | | | | | | | | | | | | | | | | | | | | | - * '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '--------------------------' - */ - -//* Numeric Max / Homing Normal - Traditional - * .-----------------------------------. .-----------------------------------. .-----------------_-----------------. .-----------------------------------. .--------------------------. - * | | | | | | | | | | | | | | | | | | | | | | | | - * '-----------------------------------' '-----------------------------------' '-----------------------------------' '-----------------------------------' '--------------------------' - * .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .--------------------------. - * | | | | | | | | | | | | | | | | | | | | | | | | - * |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------| - * | | | | | | | | | | | | | | | | | | | | | | | | - * |--------+--------+--------+ | o |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| '--------+--------+--------' - * | | | | | o | | | | | | | | | | | | | | | - * |--------+--------+--------+--------| o |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| .--------. - * | | | | | | | | | | | | | | | | | | | | - * |--------+--------+--------+ | |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| .--------+--------+--------. - * | | | | | | | | | | | | | | | | | | | | | | - * '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '--------------------------' - */ - -/* Numeric Max / Numeric Normal - * .-----------------------------------. .--------------------------------------------------------------_--------------------------------------------------------------. .-----------------------------------. - * | | | | | | | | | | | | | | | | | | | | | | | | | - * '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' - * .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. - * | | | | | | 1U / 2U | | | | | | | | | | | 1U / 2U | | | | | | - * |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------| - * | 1U | | | 1U | | | | | | | | | | | | | | | | | 1U | | | 1U | - * | / +--------+--------+ / | o |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | / +--------+--------+ / | - * | 2U | | | 2U | o | 1U / 2U | | | | | | | | | | | | | 2U | | | 2U | - * |--------+--------+--------+--------| o |-----------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------| - * | | | | | | 1U / 2U | | | | | | | | | | | 1U / 2U | | | | | | - * | '--------+--------' | |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | '--------+--------' | - * | 1U / 2UH / 2UV | 1U / 2UH / 2UV | | | | | | | | 1U / 2U | | | | | | | | 1U / 2UH / 2UV | 1U / 2UH / 2UV | - * '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' - */ - -/* Numeric Max / Numeric Max - * .-----------------------------------. .-----------------------------------------------------------------------_-----------------------------------------------------------------------. .-----------------------------------. - * | | | | | | | | | | | | | | | | | | | | | | | | | | | - * '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' - * .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. - * | | | | | | 1U / 2U | | | | | | | | | | | | | 1U / 2U | | | | | | - * |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------| - * | 1U | | | 1U | | | | | | | | | | | | | | | | | | | 1U | | | 1U | - * | / +--------+--------+ / | o |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | / +--------+--------+ / | - * | 2U | | | 2U | o | 1U / 2U | | | | | | | | | | | | | | | 2U | | | 2U | - * |--------+--------+--------+--------| o |-----------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------| - * | | | | | | 1U / 2U | | | | | | | | | | | | | 1U / 2U | | | | | | - * | '--------+--------' | |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| | '--------+--------' | - * | 1U / 2UH / 2UV | 1U / 2UH / 2UV | | | | | | | | 1U / 2U | 1U / 2U | | | | | | | | 1U / 2UH / 2UV | 1U / 2UH / 2UV | - * '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' - */ diff --git a/keyboards/vision_division/config.h b/keyboards/vision_division/config.h deleted file mode 100644 index 249431b87429..000000000000 --- a/keyboards/vision_division/config.h +++ /dev/null @@ -1,141 +0,0 @@ -/* -Copyright 2012 Jun Wako - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#ifndef CONFIG_H -#define CONFIG_H - -#include "config_common.h" - -// Due to the configurability of this keyboard, matrix sizes are determined in the keymap's config.h - -/* COL2ROW or ROW2COL */ -#define DIODE_DIRECTION ROW2COL - -#define BACKLIGHT_PIN B7 -#define BACKLIGHT_BREATHING -#define BACKLIGHT_LEVELS 3 - -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 0 - -#define MATRIX_MASKED - -/* define if matrix has ghost (lacks anti-ghosting diodes) */ -//#define MATRIX_HAS_GHOST - -/* number of backlight levels */ - -/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ -#define LOCKING_SUPPORT_ENABLE -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE - -/* - * Force NKRO - * - * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved - * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the - * makefile for this to work.) - * - * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) - * until the next keyboard reset. - * - * NKRO may prevent your keystrokes from being detected in the BIOS, but it is - * fully operational during normal computer usage. - * - * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) - * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by - * bootmagic, NKRO mode will always be enabled until it is toggled again during a - * power-up. - * - */ -//#define FORCE_NKRO - -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - -/* - * Feature disable options - * These options are also useful to firmware size reduction. - */ - -/* disable debug print */ -// #ifndef NO_DEBUG -// # define NO_DEBUG -// #endif - -/* disable print */ -// #ifndef NO_PRINT -// # define NO_PRINT -// #endif - -/* Only print user print statements */ -// #define USER_PRINT - -/* disable action features */ -//#define NO_ACTION_LAYER -//#define NO_ACTION_TAPPING -//#define NO_ACTION_ONESHOT -//#define NO_ACTION_MACRO -//#define NO_ACTION_FUNCTION - -#endif diff --git a/keyboards/vision_division/keymaps/default/config.h b/keyboards/vision_division/keymaps/default/config.h deleted file mode 100644 index 7af43fb6b492..000000000000 --- a/keyboards/vision_division/keymaps/default/config.h +++ /dev/null @@ -1,77 +0,0 @@ -#pragma once - -// place overrides here - -#include "matrix_types.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define DEVICE_VER 0x0001 -#define MANUFACTURER IBNobody - -#define MATRIX_ROWS 6 -#define MATRIX_ROW_PINS { C2, C3, F4, F5, F6, F7 } - -// !!! MAKE SURE THAT THE LEFT/RIGHT PCB DEFINES MATCH ON ALL OF THESE COLUMNS - -// **LEFT** **RIGHT** -#define PRODUCT_ID GET_PID( NUMERIC_NORMAL, NUMERIC_MAX_TEENSY) -#define MATRIX_COLS GET_MATRIX_COLS( NUMERIC_NORMAL, NUMERIC_MAX_TEENSY) -#define MATRIX_COL_PINS GET_MATRIX_COL_PINS( NUMERIC_NORMAL, NUMERIC_MAX_TEENSY) - -#define LAYOUT(MATRIX_LAYER, \ - k101, k102, k103, k104, k105, k106, k107, k108, k109, k10A, k111, k112, k113, k114, k115, k116, k117, k118, k119, k11A, k11B, k11C, \ - k201, k202, k203, k204, k205, k206, k207, k208, k209, k20A, k211, k212, k213, k214, k215, k216, k217, k218, k219, k21A, k21B, k21C, \ - k301, k302, k303, k304, k305, k306, k307, k308, k309, k30A, k311, k312, k313, k314, k315, k316, k317, k318, k319, k31A, k31B, k31C, \ - k401, k402, k403, k404, k405, k406, k407, k408, k409, k40A, k411, k412, k413, k414, k415, k416, k417, k418, k419, k41A, k41B, k41C, \ - k501, k502, k503, k504, k505, k506, k507, k508, k509, k50A, k511, k512, k513, k514, k515, k516, k517, k518, k519, k51A, k51B, k51C, \ - k601, k602, k603, k604, k605, k606, k607, k608, k609, k60A, k611, k612, k613, k614, k615, k616, k617, k618, k619, k61A, k61B, k61C \ -) \ -LAYOUT_MASTER(MATRIX_LAYER, NUMERIC_NORMAL, NUMERIC_MAX_TEENSY, \ - k101, k102, k103, k104, k105, k106, k107, k108, k109, k10A, KC_NO, KC_NO, k111, k112, k113, k114, k115, k116, k117, k118, k119, k11A, k11B, k11C, \ - k201, k202, k203, k204, k205, k206, k207, k208, k209, k20A, KC_NO, KC_NO, k211, k212, k213, k214, k215, k216, k217, k218, k219, k21A, k21B, k21C, \ - k301, k302, k303, k304, k305, k306, k307, k308, k309, k30A, KC_NO, KC_NO, k311, k312, k313, k314, k315, k316, k317, k318, k319, k31A, k31B, k31C, \ - k401, k402, k403, k404, k405, k406, k407, k408, k409, k40A, KC_NO, KC_NO, k411, k412, k413, k414, k415, k416, k417, k418, k419, k41A, k41B, k41C, \ - k501, k502, k503, k504, k505, k506, k507, k508, k509, k50A, KC_NO, KC_NO, k511, k512, k513, k514, k515, k516, k517, k518, k519, k51A, k51B, k51C, \ - k601, k602, k603, k604, k605, k606, k607, k608, k609, k60A, KC_NO, KC_NO, k611, k612, k613, k614, k615, k616, k617, k618, k619, k61A, k61B, k61C \ -) - -// Example Keymap Macros - -/* -#define LAYOUT(MATRIX_LAYER, \ - k101, k102, k103, k104, k105, k106, k107, k108, k109, k10A, k10B, k10C, k111, k112, k113, k114, k115, k116, k117, k118, k119, k11A, k11B, k11C, \ - k201, k202, k203, k204, k205, k206, k207, k208, k209, k20A, k20B, k20C, k211, k212, k213, k214, k215, k216, k217, k218, k219, k21A, k21B, k21C, \ - k301, k302, k303, k304, k305, k306, k307, k308, k309, k30A, k30B, k30C, k311, k312, k313, k314, k315, k316, k317, k318, k319, k31A, k31B, k31C, \ - k401, k402, k403, k404, k405, k406, k407, k408, k409, k40A, k40B, k40C, k411, k412, k413, k414, k415, k416, k417, k418, k419, k41A, k41B, k41C, \ - k501, k502, k503, k504, k505, k506, k507, k508, k509, k50A, k50B, k50C, k511, k512, k513, k514, k515, k516, k517, k518, k519, k51A, k51B, k51C, \ - k601, k602, k603, k604, k605, k606, k607, k608, k609, k60A, k60B, k60C, k611, k612, k613, k614, k615, k616, k617, k618, k619, k61A, k61B, k61C \ -) \ -LAYOUT_MASTER(MATRIX_LAYER, NUMERIC_MAX_TEENSY, NUMERIC_MAX, \ - k101, k102, k103, k104, k105, k106, k107, k108, k109, k10A, k10B, k10C, k111, k112, k113, k114, k115, k116, k117, k118, k119, k11A, k11B, k11C, \ - k201, k202, k203, k204, k205, k206, k207, k208, k209, k20A, k20B, k20C, k211, k212, k213, k214, k215, k216, k217, k218, k219, k21A, k21B, k21C, \ - k301, k302, k303, k304, k305, k306, k307, k308, k309, k30A, k30B, k30C, k311, k312, k313, k314, k315, k316, k317, k318, k319, k31A, k31B, k31C, \ - k401, k402, k403, k404, k405, k406, k407, k408, k409, k40A, k40B, k40C, k411, k412, k413, k414, k415, k416, k417, k418, k419, k41A, k41B, k41C, \ - k501, k502, k503, k504, k505, k506, k507, k508, k509, k50A, k50B, k50C, k511, k512, k513, k514, k515, k516, k517, k518, k519, k51A, k51B, k51C, \ - k601, k602, k603, k604, k605, k606, k607, k608, k609, k60A, k60B, k60C, k611, k612, k613, k614, k615, k616, k617, k618, k619, k61A, k61B, k61C \ -) -*/ - -/* -#define LAYOUT(MATRIX_LAYER, \ - k101, k102, k103, k104, k105, k106, k107, k108, k109, k10A, k111, k112, k113, k114, k115, k116, k117, k118, k119, k11A, k11B, \ - k201, k202, k203, k204, k205, k206, k207, k208, k209, k20A, k211, k212, k213, k214, k215, k216, k217, k218, k219, k21A, k21B, \ - k301, k302, k303, k304, k305, k306, k307, k308, k309, k30A, k311, k312, k313, k314, k315, k316, k317, k318, k319, k31A, k31B, \ - k401, k402, k403, k404, k405, k406, k407, k408, k409, k40A, k411, k412, k413, k414, k415, k416, k417, k418, k419, k41A, k41B, \ - k501, k502, k503, k504, k505, k506, k507, k508, k509, k50A, k511, k512, k513, k514, k515, k516, k517, k518, k519, k51A, k51B, \ - k601, k602, k603, k604, k605, k606, k607, k608, k609, k60A, k611, k612, k613, k614, k615, k616, k617, k618, k619, k61A, k61B \ -) \ -LAYOUT_MASTER(MATRIX_LAYER, NUMERIC_NORMAL, HOMING_MAX_TEENSY, \ - k101, k102, k103, k104, k105, k106, k107, k108, k109, k10A, KC_NO, KC_NO, k111, k112, k113, k114, k115, k116, k117, k118, k119, k11A, k11B, KC_NO, \ - k201, k202, k203, k204, k205, k206, k207, k208, k209, k20A, KC_NO, KC_NO, k211, k212, k213, k214, k215, k216, k217, k218, k219, k21A, k21B, KC_NO, \ - k301, k302, k303, k304, k305, k306, k307, k308, k309, k30A, KC_NO, KC_NO, k311, k312, k313, k314, k315, k316, k317, k318, k319, k31A, k31B, KC_NO, \ - k401, k402, k403, k404, k405, k406, k407, k408, k409, k40A, KC_NO, KC_NO, k411, k412, k413, k414, k415, k416, k417, k418, k419, k41A, k41B, KC_NO, \ - k501, k502, k503, k504, k505, k506, k507, k508, k509, k50A, KC_NO, KC_NO, k511, k512, k513, k514, k515, k516, k517, k518, k519, k51A, k51B, KC_NO, \ - k601, k602, k603, k604, k605, k606, k607, k608, k609, k60A, KC_NO, KC_NO, k611, k612, k613, k614, k615, k616, k617, k618, k619, k61A, k61B, KC_NO \ -) -*/ diff --git a/keyboards/vision_division/keymaps/default/keymap.c b/keyboards/vision_division/keymaps/default/keymap.c deleted file mode 100644 index 47c00ac374c8..000000000000 --- a/keyboards/vision_division/keymaps/default/keymap.c +++ /dev/null @@ -1,367 +0,0 @@ -#include QMK_KEYBOARD_H -#include "led.h" - -enum keyboard_layers { - LAYER_QWERTY = 0, - LAYER_UPPER, - LAYER_LOWER, - LAYER_FUNCTION, - LAYER_MOUSE, - LAYER_ADJUST, -}; - -enum custom_keycodes { - M_CP_CT = SAFE_RANGE, - M_UPPER, - M_LOWER, - M_MOUSE, - TIMBR_1, - TIMBR_2, - TIMBR_3, - TIMBR_4, - TMPO_UP, - TMPO_DN, - TMPO_DF -}; - -#define SC_UNDO LCTL(KC_Z) -#define SC_REDO LCTL(KC_Y) -#define SC_CUT LCTL(KC_X) -#define SC_COPY LCTL(KC_C) -#define SC_PSTE LCTL(KC_V) -#define SC_SELA LCTL(KC_A) -#define SC_SAVE LCTL(KC_S) -#define SC_OPEN LCTL(KC_O) -#define SC_ACLS LALT(KC_F4) -#define SC_CCLS LCTL(KC_F4) - -#define OS_SHFT OSM(MOD_LSFT) - -#define ________________ _______, _______ -#define XXXXXXXXXXXXXXXX XXXXXXX, XXXXXXX - -const matrix_row_t matrix_mask[MATRIX_ROWS] = -{ -// 1098765432109876543210987654321 - 0b0000000001111111101111011111111, - 0b0000000001111111111111111111111, - 0b0000000001111111111111111111111, - 0b0000000001111111111111111111111, - 0b0000000001010111111111111111111, - 0b0000000001111101111111101011111, -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = -{ -/* LAYER = LAYER_QWERTY - .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. - | VOL DN | MUTE | VOL UP | BACKLT | | F1 | F2 | F3 | F4 | XXXXXX | F5 | F6 | F7 | F8 | XXXXXX | F9 | F10 | F11 | F12 | | PRINT | SCR LK | PAUSE | FN | - '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' - .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. - | NUM LK | KP / | KP * | KP - | | ESC | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | = | BACKSP | | INS | HOME | PG UP | XXXXXX | - |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------|--------|--------+--------| - | KP 7 | KP 8 | KP 9 | KP + | | TAB | TAB | Q | W | E | R | T | Y | U | I | O | P | - | \ | | DEL | END | PG DN | XXXXXX | - |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| o |--------|--------|--------+--------| - | KP 4 | KP 5 | KP 6 | KP + | | CAP LK | BACKSP | A | S | D | F | G | H | J | K | L | ; | ' | ENTER | o | CP/CT | UNDO | PASTE | XXXXXX | - |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| o |--------|--------|--------+--------| - | KP 1 | KP 2 | KP 3 | KP Ent | | LSHIFT | LSHIFT | Z | X | C | V | B | N | M | , | . | / | RSHIFT | RSHIFT | | XXXXXX | UP | XXXXXX | XXXXXX | - |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------|--------|--------+--------| - | KP 0 | KP , | KP . | KP Ent | | LCTRL | XXXXXX | LWIN | XXXXXX | LALT | UPPER | SPACE . SPACE | LOWER | OSHIFT | RALT | APP | XXXXXX | RCTRL | | LEFT | DOWN | RIGHT | XXXXXX | - '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' -*/ -KEYMAP(LAYER_QWERTY, \ - KC_VOLD, KC_MUTE, KC_VOLU, BL_STEP, KC_F1 , KC_F2 , KC_F3 , KC_F4 , XXXXXXX, KC_F5 , KC_F6 , KC_F7 , KC_F8 , XXXXXXX, KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_PSCR, KC_SLCK, KC_PAUS, XXXXXXX , \ - KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_ESC , KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_EQL , KC_BSPC, KC_INS , KC_HOME, KC_PGUP, XXXXXXX , \ - KC_KP_7, KC_KP_8, KC_KP_9, KC_PPLS, KC_TAB , KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_MINS, KC_BSLS, KC_DEL , KC_END , KC_PGDN, XXXXXXX , \ - KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, KC_CAPS, KC_BSPC, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , M_CP_CT, SC_UNDO, SC_PSTE, XXXXXXX , \ - KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, KC_LSFT, KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_RSFT, XXXXXXX, KC_UP , XXXXXXX, XXXXXXX , \ - KC_KP_0, KC_PCMM, KC_PDOT, KC_PENT, KC_LCTL, XXXXXXX, KC_LGUI, XXXXXXX, KC_LALT, M_UPPER, KC_SPC , KC_SPC , M_LOWER, OS_SHFT, KC_RALT, KC_APP , XXXXXXX, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX \ -), -/* LAYER = LAYER_LOWER - .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. - | ______ | ______ | ______ | ______ | | F13 | F14 | F15 | F16 | XXXXXX | F17 | F18 | F19 | F20 | XXXXXX | F21 | F22 | F23 | F24 | | ______ | ______ | ______ | ______ | - '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' - .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. - | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | - |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------|--------|--------+--------| - | ______ | ______ | ______ | ______ | | ______ | ______ | $ | { | [ | ( | % | # | ) | ] | } | @ | ______ | ______ | | ______ | ______ | ______ | ______ | - |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| o |--------|--------|--------+--------| - | ______ | ______ | ______ | ______ | | ______ | ______ | ^ | * | + | - | / | \ | _ | ' | " | ` | ______ | ______ | o | ______ | ______ | ______ | ______ | - |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| o |--------|--------|--------+--------| - | ______ | ______ | ______ | ______ | | ______ | ______ | | | & | ! | ~ | ; | : | = | < | > | ? | ______ | ______ | | ______ | ______ | ______ | ______ | - |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------|--------|--------+--------| - | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | ______ | ______ | ______ . ______ | LOWER | ______ | ______ | ______ | XXXXXX | ______ | | ______ | ______ | ______ | ______ | - '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' -*/ -KEYMAP(LAYER_LOWER, \ - _______, _______, _______, _______, KC_F13 , KC_F14 , KC_F15 , KC_F16 , XXXXXXX, KC_F17 , KC_F18 , KC_F19 , KC_F20 , XXXXXXX, KC_F21 , KC_F22 , KC_F23 , KC_F24 , _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, KC_DLR , KC_LCBR, KC_LBRC, KC_LPRN, KC_PERC, KC_HASH, KC_RPRN, KC_RBRC, KC_RCBR, KC_AT , _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, KC_CIRC, KC_ASTR, KC_PLUS, KC_MINS, KC_SLSH, KC_BSLS, KC_UNDS, KC_QUOT, KC_DQT , KC_GRV , _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, KC_PIPE, KC_AMPR, KC_EXLM, KC_TILD, KC_SCLN, KC_COLN, KC_EQL , KC_LT , KC_GT , KC_QUES, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, M_LOWER, _______, _______, _______, XXXXXXX, _______, _______, _______, _______, _______ \ -), -/* LAYER = LAYER_UPPER - .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. - | ______ | ______ | ______ | ______ | | F13 | F14 | F15 | F16 | XXXXXX | F17 | F18 | F19 | F20 | XXXXXX | F21 | F22 | F23 | F24 | | ______ | ______ | ______ | ______ | - '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' - .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. - | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | - |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------|--------|--------+--------| - | ______ | ______ | ______ | ______ | | ______ | ______ | F1 | F2 | F3 | F4 | NUM LK | KP / | KP 7 | KP 8 | KP 9 | KP - | ______ | ______ | | ______ | ______ | ______ | ______ | - |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| o |--------|--------|--------+--------| - | ______ | ______ | ______ | ______ | | ______ | ______ | F5 | F6 | F7 | F8 | CAP LK | KP * | KP 4 | KP 5 | KP 6 | KP + | ______ | ______ | o | ______ | ______ | ______ | ______ | - |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| o |--------|--------|--------+--------| - | ______ | ______ | ______ | ______ | | ______ | ______ | F9 | F10 | F11 | F12 | SCR LK | KP 0 | KP 1 | KP 2 | KP 3 | KP Ent | ______ | ______ | | ______ | ______ | ______ | ______ | - |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------|--------|--------+--------| - | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | ______ | UPPER | KP 0 . KP 0 | ______ | RALT | KP . | KP Ent | XXXXXX | ______ | | ______ | ______ | ______ | ______ | - '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' -*/ -KEYMAP(LAYER_UPPER, \ - _______, _______, _______, _______, KC_F13 , KC_F14 , KC_F15 , KC_F16 , XXXXXXX, KC_F17 , KC_F18 , KC_F19 , KC_F20 , XXXXXXX, KC_F21 , KC_F22 , KC_F23 , KC_F24 , _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_NLCK, KC_PSLS, KC_KP_7, KC_KP_8, KC_KP_9, KC_PMNS, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_CAPS, KC_PAST, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_SLCK, KC_KP_0, KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, M_UPPER, KC_KP_0, KC_KP_0, _______, KC_RALT, KC_PDOT, KC_PENT, XXXXXXX, _______, _______, _______, _______, _______ \ -), -/* LAYER = LAYER_MOUSE - .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. - | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | - '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' - .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. - | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | | MS AC0 | MS WHU | MS AC2 | MS BT1 | - |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------|--------|--------+--------| - | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | | MS WHL | MS WHD | MS WHU | MS BT2 | - |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| o |--------|--------|--------+--------| - | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | o | MS BT1 | MS BT2 | MS BT3 | MS BT3 | - |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| o |--------|--------|--------+--------| - | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | | XXXXXX | MS U | XXXXXX | MS BT4 | - |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------|--------|--------+--------| - | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | ______ | ______ | ______ . ______ | ______ | ______ | ______ | ______ | ______ | ______ | | MS L | MS D | MS R | MS BT5 | - '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' -*/ -KEYMAP(LAYER_MOUSE, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_ACL0, KC_WH_U, KC_ACL2, KC_BTN1, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_L, KC_WH_D, KC_WH_U, KC_BTN2, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN3, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, KC_MS_U, XXXXXXX, KC_BTN4, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN5 \ -), -/* LAYER = LAYER_ADJUST - .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. - | VOICE- | AUDIO | VOICE+ | MUSIC | | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | | XXXXXX | XXXXXX | XXXXXX | XXXXXX | - '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' - .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. - | XXXXXX | XXXXXX | XXXXXX | XXXXXX | | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | | XXXXXX | XXXXXX | XXXXXX | XXXXXX | - |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------|--------|--------+--------| - | XXXXXX | XXXXXX | XXXXXX | XXXXXX | | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | | XXXXXX | XXXXXX | XXXXXX | XXXXXX | - |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| o |--------|--------|--------+--------| - | XXXXXX | XXXXXX | XXXXXX | XXXXXX | | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | o | XXXXXX | XXXXXX | XXXXXX | XXXXXX | - |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| o |--------|--------|--------+--------| - | XXXXXX | XXXXXX | XXXXXX | XXXXXX | | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | RESET | XXXXXX | MOUSE | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | | XXXXXX | XXXXXX | XXXXXX | XXXXXX | - |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------|--------|--------+--------| - | XXXXXX | XXXXXX | XXXXXX | XXXXXX | | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | UPPER | XXXXXX . XXXXXX | LOWER | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | | XXXXXX | XXXXXX | XXXXXX | XXXXXX | - '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' -*/ -KEYMAP(LAYER_ADJUST, \ - MUV_DE , AU_TOG , MUV_IN , MU_TOG , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET , XXXXXXX, M_MOUSE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_UPPER, XXXXXXX, XXXXXXX, M_LOWER, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \ -), -}; - -#ifdef AUDIO_ENABLE - -float tone_my_startup[][2] = SONG(ODE_TO_JOY); -float tone_my_goodbye[][2] = SONG(ROCK_A_BYE_BABY); - -float tone_qwerty[][2] = SONG(QWERTY_SOUND); -float tone_dvorak[][2] = SONG(DVORAK_SOUND); -float tone_colemak[][2] = SONG(COLEMAK_SOUND); - -float tone_audio_on[][2] = SONG(CLOSE_ENCOUNTERS_5_NOTE); -float tone_music_on[][2] = SONG(DOE_A_DEER); -float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); - -float tone_caps_on[][2] = SONG(CAPS_LOCK_ON_SOUND); -float tone_caps_off[][2] = SONG(CAPS_LOCK_OFF_SOUND); -float tone_numlk_on[][2] = SONG(NUM_LOCK_ON_SOUND); -float tone_numlk_off[][2] = SONG(NUM_LOCK_OFF_SOUND); -float tone_scroll_on[][2] = SONG(SCROLL_LOCK_ON_SOUND); -float tone_scroll_off[][2] = SONG(SCROLL_LOCK_OFF_SOUND); - -#endif /* AUDIO_ENABLE */ - -void persistent_default_layer_set(uint16_t default_layer) -{ - eeconfig_update_default_layer(default_layer); - default_layer_set(default_layer); -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch(keycode) { - case M_CP_CT: - if (record->event.pressed) { - register_code(KC_LCTL); - if (record->tap.count == 1) { - register_code(KC_C); - unregister_code(KC_C); - } else if (record->tap.count == 2) { - register_code(KC_X); - unregister_code(KC_X); - } - unregister_code(KC_LCTL); - } - return false; - - case M_UPPER: - if (record->event.pressed) { - layer_on(LAYER_UPPER); - breathing_period_set(2); - breathing_pulse(); - update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); - } else { - layer_off(LAYER_UPPER); - update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); - } - return false; - - case M_LOWER: - if (record->event.pressed) { - layer_on(LAYER_LOWER); - breathing_period_set(2); - breathing_pulse(); - update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); - } else { - layer_off(LAYER_LOWER); - update_tri_layer(LAYER_LOWER, LAYER_UPPER, LAYER_ADJUST); - } - return false; - -#ifdef MOUSEKEY_ENABLE - case M_MOUSE: - if (record->event.pressed) { - layer_invert(LAYER_MOUSE); - } - return false; -#endif /* MOUSEKEY_ENABLE */ - -#ifdef AUDIO_ENABLE - case TIMBR_1: - if (record->event.pressed) set_timbre(TIMBRE_12); - return false; - case TIMBR_2: - if (record->event.pressed) set_timbre(TIMBRE_25); - return false; - case TIMBR_3: - if (record->event.pressed) set_timbre(TIMBRE_50); - return false; - case TIMBR_4: - if (record->event.pressed) set_timbre(TIMBRE_75); - return false; - case TMPO_UP: - if (record->event.pressed) increase_tempo(10); - return false; - case TMPO_DN: - if (record->event.pressed) decrease_tempo(10); - return false; - case TMPO_DF: - if (record->event.pressed) { - set_timbre(TIMBRE_DEFAULT); - set_tempo(TEMPO_DEFAULT); - } - return false; -#endif /* AUDIO_ENABLE */ - - default: - return true; - } - return true; -}; - -#ifdef AUDIO_ENABLE - -void matrix_init_user(void) -{ - set_voice(default_voice); - startup_user(); - println("Matrix Init"); -} - -void led_set_user(uint8_t usb_led) -{ - static uint8_t old_usb_led = 0; - - _delay_ms(10); // gets rid of tick - - if (!is_playing_notes()) - { - if ((usb_led & (1<. #define PRODUCT Vitamins included #include "config_common.h" - -#ifndef NO_ACTION_MACRO - #define NO_ACTION_MACRO -#endif -#ifndef NO_ACTION_FUNCTION - #define NO_ACTION_FUNCTION -#endif -#ifndef NO_DEBUG - #define NO_DEBUG -#endif // !NO_DEBUG -#if !defined(NO_PRINT) && !defined(CONSOLE_ENABLE) - #define NO_PRINT -#endif // !NO_PRINT diff --git a/keyboards/vitamins_included/info.json b/keyboards/vitamins_included/info.json index 598688a210aa..ee7dadead4bd 100644 --- a/keyboards/vitamins_included/info.json +++ b/keyboards/vitamins_included/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Vitamins Included", "url": "", "maintainer": "Duckle29", - "width": 13, - "height": 4, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":12, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}, {"x":12, "y":3}] diff --git a/keyboards/vitamins_included/keymaps/via/config.h b/keyboards/vitamins_included/keymaps/via/config.h new file mode 100644 index 000000000000..847858e1266b --- /dev/null +++ b/keyboards/vitamins_included/keymaps/via/config.h @@ -0,0 +1,22 @@ +/* +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert +Copyright 2019 Mikkel Jeppesen + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +# define NO_MUSIC_MODE diff --git a/keyboards/vitamins_included/keymaps/via/rules.mk b/keyboards/vitamins_included/keymaps/via/rules.mk index 036bd6d1c3ec..1e5b99807cb7 100644 --- a/keyboards/vitamins_included/keymaps/via/rules.mk +++ b/keyboards/vitamins_included/keymaps/via/rules.mk @@ -1 +1 @@ -VIA_ENABLE = yes \ No newline at end of file +VIA_ENABLE = yes diff --git a/keyboards/vitamins_included/rev1/rev1.c b/keyboards/vitamins_included/rev1/rev1.c index 56fbb878708f..520a869e57ba 100644 --- a/keyboards/vitamins_included/rev1/rev1.c +++ b/keyboards/vitamins_included/rev1/rev1.c @@ -1,13 +1 @@ #include "rev1.h" - - -#ifdef SSD1306OLED -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - led_set_user(usb_led); -} -#endif - -void matrix_init_kb(void) { - matrix_init_user(); -}; diff --git a/keyboards/vitamins_included/rev1/rules.mk b/keyboards/vitamins_included/rev1/rules.mk index 8b96b5ca43b6..6e9beefafecd 100644 --- a/keyboards/vitamins_included/rev1/rules.mk +++ b/keyboards/vitamins_included/rev1/rules.mk @@ -1,11 +1,4 @@ # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina SPLIT_KEYBOARD = yes diff --git a/keyboards/vitamins_included/rev2/config.h b/keyboards/vitamins_included/rev2/config.h index 8bf640f0bb01..bab387ce6882 100644 --- a/keyboards/vitamins_included/rev2/config.h +++ b/keyboards/vitamins_included/rev2/config.h @@ -47,11 +47,6 @@ along with this program. If not, see . /* 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 - /* ws2812 RGB LED */ #define RGB_DI_PIN F0 @@ -61,7 +56,7 @@ along with this program. If not, see . /* Audio settings */ #ifdef AUDIO_ENABLE - #define AUDIO_PIN C6 // Define this to enable the buzzer +# define AUDIO_PIN C6 // Define this to enable the buzzer #endif #define QMK_ESC_OUTPUT F1 // usually COL diff --git a/keyboards/vitamins_included/rev2/rev2.c b/keyboards/vitamins_included/rev2/rev2.c index 7bdeebb03c53..15b47089e8f2 100644 --- a/keyboards/vitamins_included/rev2/rev2.c +++ b/keyboards/vitamins_included/rev2/rev2.c @@ -1,13 +1,5 @@ #include "rev2.h" - -#ifdef SSD1306OLED -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - led_set_user(usb_led); -} -#endif - bool is_keyboard_left(void) { #if defined(MASTER_LEFT) return is_keyboard_master(); @@ -25,7 +17,3 @@ bool is_keyboard_left(void) { return is_keyboard_master(); } - -void matrix_init_kb(void) { - matrix_init_user(); -}; diff --git a/keyboards/vitamins_included/rev2/rules.mk b/keyboards/vitamins_included/rev2/rules.mk index 3d4caba9cae0..05167eb3b9aa 100644 --- a/keyboards/vitamins_included/rev2/rules.mk +++ b/keyboards/vitamins_included/rev2/rules.mk @@ -1,11 +1,4 @@ # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = qmk-dfu SPLIT_KEYBOARD = yes diff --git a/keyboards/vitamins_included/rules.mk b/keyboards/vitamins_included/rules.mk index c95ae27ecf42..2187f156d34d 100644 --- a/keyboards/vitamins_included/rules.mk +++ b/keyboards/vitamins_included/rules.mk @@ -5,21 +5,16 @@ MCU = atmega32u4 # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -AUDIO_ENABLE = yes # Audio output on port C6 +AUDIO_ENABLE = yes # Audio output BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite COMMAND_ENABLE = no # Commands for debug and configuration CONSOLE_ENABLE = no # Console for debug DEBUG_ENABLE = no # Enable more debug info EXTRAKEY_ENABLE = yes # Audio control and System control -MIDI_ENABLE = no # MIDI controls MOUSEKEY_ENABLE = no # Mouse keys NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -UNICODE_ENABLE = no # Unicode -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend LAYOUTS = ortho_4x12 diff --git a/keyboards/vitamins_included/vitamins_included.c b/keyboards/vitamins_included/vitamins_included.c index 078f93e0e6ec..e83c81633c8d 100644 --- a/keyboards/vitamins_included/vitamins_included.c +++ b/keyboards/vitamins_included/vitamins_included.c @@ -1,6 +1,6 @@ #include QMK_KEYBOARD_H -#ifdef ONEHAND_ENABLE +#ifdef SWAP_HANDS_ENABLE __attribute__ ((weak)) const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { diff --git a/keyboards/vn66/info.json b/keyboards/vn66/info.json index c2fe2a39f52f..a1063ce99327 100644 --- a/keyboards/vn66/info.json +++ b/keyboards/vn66/info.json @@ -2,8 +2,6 @@ "keyboard_name": "vn66", "url": "fb.com/groups/VietNamMechKey/", "maintainer": "qmk", - "width": 19.25, - "height": 5.25, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/vn66/rules.mk b/keyboards/vn66/rules.mk index c765aa74c4a9..13cbe7730b9d 100644 --- a/keyboards/vn66/rules.mk +++ b/keyboards/vn66/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes diff --git a/keyboards/waldo/info.json b/keyboards/waldo/info.json index 11fa5182ed58..06f0c023144f 100644 --- a/keyboards/waldo/info.json +++ b/keyboards/waldo/info.json @@ -1,7 +1,5 @@ { "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"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}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2}, {"x":13.75, "y":2, "w":1.25}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":2.25}, {"x":6, "y":4, "w":1.25}, {"x":7.25, "y":4, "w":2.75}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}] 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 19a485296eb0..000000000000 --- 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/waldo/rules.mk b/keyboards/waldo/rules.mk index db9db239d395..cfafae6e3545 100644 --- a/keyboards/waldo/rules.mk +++ b/keyboards/waldo/rules.mk @@ -2,32 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # 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 = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -API_SYSEX_ENABLE = no - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend diff --git a/keyboards/wallaby/config.h b/keyboards/wallaby/config.h index 98377098f84b..3c0d446418e9 100644 --- a/keyboards/wallaby/config.h +++ b/keyboards/wallaby/config.h @@ -121,59 +121,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -194,26 +141,6 @@ along with this program. If not, see . #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/wallaby/info.json b/keyboards/wallaby/info.json index 47987f0c4a9a..6ff20c91f43d 100644 --- a/keyboards/wallaby/info.json +++ b/keyboards/wallaby/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Wallaby", "url": "https://github.com/kkatano/wallaby", "maintainer": "Koichi Katano", - "width": 18.26, - "height": 6.47, "layouts": { "LAYOUT_tkl_ansi": { - "key_count": 87, "layout": [ {"label":"1", "x":0, "y":0}, {"label":"2", "x":2, "y":0}, @@ -98,4 +95,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/wallaby/rules.mk b/keyboards/wallaby/rules.mk index 653fcdb380b5..4c93938dcf56 100644 --- a/keyboards/wallaby/rules.mk +++ b/keyboards/wallaby/rules.mk @@ -2,31 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = tkl_ansi diff --git a/keyboards/walletburner/cajal/info.json b/keyboards/walletburner/cajal/info.json index c1aea2f472d7..5539c501a4ea 100644 --- a/keyboards/walletburner/cajal/info.json +++ b/keyboards/walletburner/cajal/info.json @@ -2,8 +2,6 @@ "keyboard_name": "cajal", "url": "https://qmk.fm/keyboards/", "maintainer": "worldspawn00", - "width": 14.25, - "height": 4.25, "layouts": { "LAYOUT_stagger": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"[", "x":11, "y":0}, {"label":"Back Space", "x":12, "y":0}, {"label":"RGB", "x":13.25, "y":0.5}, {"label":"", "x":0, "y":1, "w":1.25}, {"label":"A", "x":1.25, "y":1}, {"label":"S", "x":2.25, "y":1}, {"label":"D", "x":3.25, "y":1}, {"label":"F", "x":4.25, "y":1}, {"label":"G", "x":5.25, "y":1}, {"label":"H", "x":6.25, "y":1}, {"label":"J", "x":7.25, "y":1}, {"label":"K", "x":8.25, "y":1}, {"label":"L", "x":9.25, "y":1}, {"label":"'", "x":10.25, "y":1}, {"label":"Return", "x":11.25, "y":1, "w":1.75}, {"label":"Shift", "x":0, "y":2, "w":1.75}, {"label":"Z", "x":1.75, "y":2}, {"label":"X", "x":2.75, "y":2}, {"label":"C", "x":3.75, "y":2}, {"label":"V", "x":4.75, "y":2}, {"label":"B", "x":5.75, "y":2}, {"label":"N", "x":6.75, "y":2}, {"label":"M", "x":7.75, "y":2}, {"label":",", "x":8.75, "y":2}, {"label":".", "x":9.75, "y":2}, {"label":"/", "x":10.75, "y":2, "w":1.25}, {"label":"↑", "x":12.25, "y":2.25}, {"label":"Ctrl", "x":0, "y":3, "w":1.25}, {"label":"Alt", "x":1.25, "y":3}, {"label":"Super", "x":2.25, "y":3, "w":1.25}, {"x":3.5, "y":3, "w":2.25}, {"x":5.75, "y":3, "w":2.75}, {"label":"Ctrl", "x":8.5, "y":3, "w":1.25}, {"label":"Del", "x":9.75, "y":3, "w":1.25}, {"label":"←", "x":11.25, "y":3.25}, {"label":"↓", "x":12.25, "y":3.25}, {"label":"→", "x":13.25, "y":3.25}] diff --git a/keyboards/walletburner/cajal/rules.mk b/keyboards/walletburner/cajal/rules.mk index 173b00fee0fe..6712416751d6 100644 --- a/keyboards/walletburner/cajal/rules.mk +++ b/keyboards/walletburner/cajal/rules.mk @@ -7,12 +7,11 @@ BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 -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 diff --git a/keyboards/walletburner/neuron/info.json b/keyboards/walletburner/neuron/info.json index 9c0b4e2ef25b..de73dacf4e2f 100644 --- a/keyboards/walletburner/neuron/info.json +++ b/keyboards/walletburner/neuron/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Neuron", "url": "https://qmk.fm/keyboards/", "maintainer": "worldspawn00", - "width": 12, - "height": 4, "layouts": { "LAYOUT": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"Back
Space", "x":11, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.25}, {"label":"A", "x":1.25, "y":1}, {"label":"S", "x":2.25, "y":1}, {"label":"D", "x":3.25, "y":1}, {"label":"F", "x":4.25, "y":1}, {"label":"G", "x":5.25, "y":1}, {"label":"H", "x":6.25, "y":1}, {"label":"J", "x":7.25, "y":1}, {"label":"K", "x":8.25, "y":1}, {"label":"L", "x":9.25, "y":1}, {"label":"Enter", "x":10.25, "y":1, "w":1.75}, {"label":"Shift", "x":0, "y":2, "w":1.75}, {"label":"Z", "x":1.75, "y":2}, {"label":"X", "x":2.75, "y":2}, {"label":"C", "x":3.75, "y":2}, {"label":"V", "x":4.75, "y":2}, {"label":"B", "x":5.75, "y":2}, {"label":"N", "x":6.75, "y":2}, {"label":"M", "x":7.75, "y":2}, {"label":"<", "x":8.75, "y":2}, {"label":"Shift", "x":9.75, "y":2, "w":1.25}, {"label":"Fn", "x":11, "y":2}, {"label":"Hyper", "x":1, "y":3, "w":1.25}, {"label":"Super", "x":2.25, "y":3, "w":1.25}, {"x":3.5, "y":3, "w":1.75}, {"x":5.25, "y":3}, {"x":6.25, "y":3, "w":2.25}, {"label":"Meta", "x":8.5, "y":3, "w":1.25}, {"label":"Super", "x":9.75, "y":3, "w":1.25}] diff --git a/keyboards/walletburner/neuron/rules.mk b/keyboards/walletburner/neuron/rules.mk index f748617307d3..c4c04f02606c 100644 --- a/keyboards/walletburner/neuron/rules.mk +++ b/keyboards/walletburner/neuron/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -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 diff --git a/keyboards/wanten/config.h b/keyboards/wanten/config.h new file mode 100644 index 000000000000..ed6294f73fae --- /dev/null +++ b/keyboards/wanten/config.h @@ -0,0 +1,161 @@ +/* +Copyright 2021 qpockets + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7170 //qp +#define PRODUCT_ID 0x7774 //wt +#define DEVICE_VER 0x0001 +#define MANUFACTURER qpockets +#define PRODUCT wanten + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + +/* + * 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 { F0, F7, B3, D5 } +#define MATRIX_COL_PINS { F4, F1, B5, B6, C6, C7, D4, E6, D2, B1, B2, D3 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* ROTARY ENCODERS */ +#define ENCODERS_PAD_A { F5, D6 } +#define ENCODERS_PAD_B { F6, D7 } + +#define ENCODER_RESOLUTION 4 +//#define ENCODER_DIRECTION_FLIP + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 4 + +/*nothing below here is needed for wanten unless enabling RGB. the correct RGB_DI_PIN is defined, the rest is up to you o7 */ + +//#define RGB_DI_PIN B0 +//#ifdef RGB_DI_PIN +//# define RGBLED_NUM 16 +//# define RGBLIGHT_HUE_STEP 8 +//# define RGBLIGHT_SAT_STEP 8 +//# define RGBLIGHT_VAL_STEP 8 +//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +//# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +//#endif + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +//#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +//#define LED_NUM_LOCK_PIN B0 +//#define LED_CAPS_LOCK_PIN B1 +//#define LED_SCROLL_LOCK_PIN B2 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +//#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +//#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/wanten/info.json b/keyboards/wanten/info.json new file mode 100644 index 000000000000..e6837615826d --- /dev/null +++ b/keyboards/wanten/info.json @@ -0,0 +1,152 @@ +{ + "keyboard_name": "wanten", + "url": "", + "maintainer": "qpockets", + "layouts": { + "LAYOUT_default": { + "layout": [ + {"label":"Play", "x":0, "y":0}, + {"label":"q", "x":1, "y":0}, + {"label":"w", "x":2, "y":0}, + {"label":"e", "x":3, "y":0}, + {"label":"r", "x":4, "y":0}, + {"label":"t", "x":5, "y":0}, + {"label":"Del", "x":6, "y":0, "w":1.75}, + {"label":"y", "x":7.75, "y":0}, + {"label":"u", "x":8.75, "y":0}, + {"label":"i", "x":9.75, "y":0}, + {"label":"o", "x":10.75, "y":0}, + {"label":"p", "x":11.75, "y":0}, + {"label":"Next", "x":0, "y":1}, + {"label":"a", "x":1, "y":1}, + {"label":"s", "x":2, "y":1}, + {"label":"d", "x":3, "y":1}, + {"label":"f", "x":4, "y":1}, + {"label":"g", "x":5, "y":1}, + {"label":"Tab", "x":6, "y":1, "w":1.75}, + {"label":"h", "x":7.75, "y":1}, + {"label":"j", "x":8.75, "y":1}, + {"label":"k", "x":9.75, "y":1}, + {"label":"l", "x":10.75, "y":1}, + {"label":"\"", "x":11.75, "y":1}, + {"label":"Prev", "x":0, "y":2}, + {"label":"z", "x":1, "y":2}, + {"label":"x", "x":2, "y":2}, + {"label":"c", "x":3, "y":2}, + {"label":"v", "x":4, "y":2}, + {"label":"b", "x":5, "y":2}, + {"label":"Shift", "x":6, "y":2, "w":1.75}, + {"label":"n", "x":7.75, "y":2}, + {"label":"m", "x":8.75, "y":2}, + {"label":"<", "x":9.75, "y":2}, + {"label":">", "x":10.75, "y":2}, + {"label":"?", "x":11.75, "y":2}, + {"label":"LCtrl", "x":0, "y":3, "w":1.25}, + {"label":"LGui", "x":1.25, "y":3, "w":1.25}, + {"label":"LAlt", "x":2.5, "y":3, "w":1.25}, + {"label":"Back", "x":3.75, "y":3, "w":3}, + {"label":"Space", "x":6.75, "y":3, "w":3}, + {"label":"RCtrl", "x":9.75, "y":3}, + {"label":"RGui", "x":10.75, "y":3}, + {"label":"RAlt", "x":11.75, "y":3} + ] + }, + + "LAYOUT_2u_bars": { + "layout": [ + {"label":"Play", "x":0, "y":0}, + {"label":"q", "x":1, "y":0}, + {"label":"w", "x":2, "y":0}, + {"label":"e", "x":3, "y":0}, + {"label":"r", "x":4, "y":0}, + {"label":"t", "x":5, "y":0}, + {"label":"Del", "x":6, "y":0, "w":1.75}, + {"label":"y", "x":7.75, "y":0}, + {"label":"u", "x":8.75, "y":0}, + {"label":"i", "x":9.75, "y":0}, + {"label":"o", "x":10.75, "y":0}, + {"label":"p", "x":11.75, "y":0}, + {"label":"Next", "x":0, "y":1}, + {"label":"a", "x":1, "y":1}, + {"label":"s", "x":2, "y":1}, + {"label":"d", "x":3, "y":1}, + {"label":"f", "x":4, "y":1}, + {"label":"g", "x":5, "y":1}, + {"label":"Tab", "x":6, "y":1, "w":1.75}, + {"label":"h", "x":7.75, "y":1}, + {"label":"j", "x":8.75, "y":1}, + {"label":"k", "x":9.75, "y":1}, + {"label":"l", "x":10.75, "y":1}, + {"label":"\"", "x":11.75, "y":1}, + {"label":"Prev", "x":0, "y":2}, + {"label":"z", "x":1, "y":2}, + {"label":"x", "x":2, "y":2}, + {"label":"c", "x":3, "y":2}, + {"label":"v", "x":4, "y":2}, + {"label":"b", "x":5, "y":2}, + {"label":"Shift", "x":6, "y":2, "w":1.75}, + {"label":"n", "x":7.75, "y":2}, + {"label":"m", "x":8.75, "y":2}, + {"label":"<", "x":9.75, "y":2}, + {"label":">", "x":10.75, "y":2}, + {"label":"?", "x":11.75, "y":2}, + {"label":"PSCR", "x":0, "y":3, "w":1.25}, + {"label":"LAlt", "x":1.25, "y":3, "w":1.25}, + {"label":"LGui", "x":2.5, "y":3, "w":1.25}, + {"label":"LCtl", "x":3.75, "y":3}, + {"label":"Back", "x":4.75, "y":3, "w":2}, + {"label":"Space", "x":6.75, "y":3, "w":2.25}, + {"label":"RCtrl", "x":9, "y":3}, + {"label":"RGui", "x":10, "y":3, "w":1.25}, + {"label":"RAlt", "x":11.25, "y":3, "w":1.5} + ] + }, + + "LAYOUT_625_bar": { + "layout": [ + {"label":"Play", "x":0, "y":0}, + {"label":"q", "x":1, "y":0}, + {"label":"w", "x":2, "y":0}, + {"label":"e", "x":3, "y":0}, + {"label":"r", "x":4, "y":0}, + {"label":"t", "x":5, "y":0}, + {"label":"Del", "x":6, "y":0, "w":1.75}, + {"label":"y", "x":7.75, "y":0}, + {"label":"u", "x":8.75, "y":0}, + {"label":"i", "x":9.75, "y":0}, + {"label":"o", "x":10.75, "y":0}, + {"label":"p", "x":11.75, "y":0}, + {"label":"Next", "x":0, "y":1}, + {"label":"a", "x":1, "y":1}, + {"label":"s", "x":2, "y":1}, + {"label":"d", "x":3, "y":1}, + {"label":"f", "x":4, "y":1}, + {"label":"g", "x":5, "y":1}, + {"label":"Tab", "x":6, "y":1, "w":1.75}, + {"label":"h", "x":7.75, "y":1}, + {"label":"j", "x":8.75, "y":1}, + {"label":"k", "x":9.75, "y":1}, + {"label":"l", "x":10.75, "y":1}, + {"label":"\"", "x":11.75, "y":1}, + {"label":"Prev", "x":0, "y":2}, + {"label":"z", "x":1, "y":2}, + {"label":"x", "x":2, "y":2}, + {"label":"c", "x":3, "y":2}, + {"label":"v", "x":4, "y":2}, + {"label":"b", "x":5, "y":2}, + {"label":"Shift", "x":6, "y":2, "w":1.75}, + {"label":"n", "x":7.75, "y":2}, + {"label":"m", "x":8.75, "y":2}, + {"label":"<", "x":9.75, "y":2}, + {"label":">", "x":10.75, "y":2}, + {"label":"?", "x":11.75, "y":2}, + {"label":"LAlt", "x":0, "y":3, "w":1.25}, + {"label":"LGui", "x":1.25, "y":3, "w":1.25}, + {"label":"LCtrl", "x":2.5, "y":3, "w":1.25}, + {"label":"Space", "x":3.75, "y":3, "w":6.25}, + {"label":"RAlt", "x":10, "y":3, "w":1.25}, + {"label":"RCtrl", "x":11.25, "y":3, "w":1.5} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/wanten/keymaps/2u_bars/config.h b/keyboards/wanten/keymaps/2u_bars/config.h new file mode 100644 index 000000000000..51e54382af50 --- /dev/null +++ b/keyboards/wanten/keymaps/2u_bars/config.h @@ -0,0 +1,27 @@ +/* Copyright 2021 qpockets + + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +/*Modtaps*/ +#define TAPPING_TERM 145 +#define IGNORE_MOD_TAP_INTERRUPT + +/*Combos*/ +#ifdef COMBO_ENABLE +# define COMBO_COUNT 5 +# define COMBO_TERM 25 +#endif diff --git a/keyboards/wanten/keymaps/2u_bars/keymap.c b/keyboards/wanten/keymaps/2u_bars/keymap.c new file mode 100644 index 000000000000..5e2dd8aa098a --- /dev/null +++ b/keyboards/wanten/keymaps/2u_bars/keymap.c @@ -0,0 +1,104 @@ +/* Copyright 2021 qpockets + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layers{ + _BASE, + _GAME, + _SYM, + _NAV + +}; + +enum combo_events { + COMBO_BSPC, + COMBO_ENT, + COMBO_TAB, + COMBO_ESC, + COMBO_DEL +}; +#define KC_DN_BSPC LT(_NAV, KC_BSPC) +#define KC_UP_SPC LT(_SYM, KC_SPC) +#define KC_GUP_BSPC LT(_SYM, KC_BSPC) +#define KC_SF LSFT_T(KC_F) +#define KC_SJ RSFT_T(KC_J) +#define SNIP S(G(KC_S)) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_2u_bars( + KC_MPLY, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_DEL, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_MNXT, KC_A, KC_S, KC_D, KC_SF, KC_G, KC_RGUI, KC_H, KC_SJ, KC_K, KC_L, KC_QUOT, + KC_MPRV, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_ENT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, + SNIP, KC_LGUI, KC_LCTL, KC_LCTL, KC_DN_BSPC, KC_UP_SPC, KC_RALT, TG(_GAME), KC_MUTE + ), + + [_GAME] = LAYOUT_2u_bars( + KC_TRNS, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_ESC, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSFT, KC_H, KC_SJ, KC_K, KC_L, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_ENT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, + KC_LCTRL, KC_LGUI, KC_LALT, KC_ESC, KC_SPC, KC_GUP_BSPC, KC_RALT, KC_TRNS, KC_BSPC + ), + + [_SYM] = LAYOUT_2u_bars( + KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_TRNS, KC_CIRC, KC_AMPR, KC_ASTR, KC_EQUAL, KC_MINS, + KC_TRNS, KC_PIPE, KC_BSLS, KC_LPRN, KC_LBRC, KC_SCLN, KC_TRNS, KC_COLN, KC_RBRC, KC_RPRN, KC_PLUS, KC_UNDS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_NAV] = LAYOUT_2u_bars( + KC_TRNS, KC_TRNS, KC_HOME, KC_UP, KC_END, KC_PGUP, RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_BSPC, + KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN, KC_TRNS, KC_F5, KC_F6, KC_F7, KC_F8, KC_TAB, + KC_TRNS, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_CAPS, KC_F9, KC_F10, KC_F11, KC_F12, KC_ENT, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + +}; + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { /* left encoder */ + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else if (index == 1) { /* center encoder */ + if (clockwise) { + tap_code(KC_WH_U); + } else { + tap_code(KC_WH_D); + } + } + return true; +} + +#ifdef COMBO_ENABLE +const uint16_t PROGMEM combo_bspc[] = {KC_O, KC_P, COMBO_END}; +const uint16_t PROGMEM combo_ent[] = {KC_K, KC_L, COMBO_END}; +const uint16_t PROGMEM combo_tab[] = {KC_S, KC_D, COMBO_END}; +const uint16_t PROGMEM combo_esc[] = {KC_T, KC_Y, COMBO_END}; +const uint16_t PROGMEM combo_del[] = {KC_Q, KC_W, COMBO_END}; + +combo_t key_combos[COMBO_COUNT] = { + [COMBO_BSPC] = COMBO(combo_bspc,KC_BSPC), + [COMBO_ENT] = COMBO(combo_ent,KC_ENT), + [COMBO_TAB] = COMBO(combo_tab,KC_TAB), + [COMBO_ESC] = COMBO(combo_esc,KC_ESC), + [COMBO_DEL] = COMBO(combo_del,KC_DEL) +}; +#endif + diff --git a/keyboards/wanten/keymaps/2u_bars/rules.mk b/keyboards/wanten/keymaps/2u_bars/rules.mk new file mode 100644 index 000000000000..ab1e438182a3 --- /dev/null +++ b/keyboards/wanten/keymaps/2u_bars/rules.mk @@ -0,0 +1 @@ +COMBO_ENABLE = yes diff --git a/keyboards/wanten/keymaps/625_bar/config.h b/keyboards/wanten/keymaps/625_bar/config.h new file mode 100644 index 000000000000..51e54382af50 --- /dev/null +++ b/keyboards/wanten/keymaps/625_bar/config.h @@ -0,0 +1,27 @@ +/* Copyright 2021 qpockets + + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +/*Modtaps*/ +#define TAPPING_TERM 145 +#define IGNORE_MOD_TAP_INTERRUPT + +/*Combos*/ +#ifdef COMBO_ENABLE +# define COMBO_COUNT 5 +# define COMBO_TERM 25 +#endif diff --git a/keyboards/wanten/keymaps/625_bar/keymap.c b/keyboards/wanten/keymaps/625_bar/keymap.c new file mode 100644 index 000000000000..b1cc213d1ba5 --- /dev/null +++ b/keyboards/wanten/keymaps/625_bar/keymap.c @@ -0,0 +1,104 @@ +/* Copyright 2021 qpockets + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layers{ + _BASE, + _GAME, + _SYM, + _NAV + +}; + +enum combo_events { + COMBO_BSPC, + COMBO_ENT, + COMBO_TAB, + COMBO_ESC, + COMBO_DEL +}; +#define KC_DZ LT(_NAV, KC_Z) +#define KC_UP_SPC LT(_SYM, KC_SPC) +//#define KC_GUP_BSPC LT(_SYM, KC_BSPC) +#define KC_SF LSFT_T(KC_F) +#define KC_SJ RSFT_T(KC_J) +#define SNIP S(G(KC_S)) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_625_bar( + KC_MPLY, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_DEL, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_MNXT, KC_A, KC_S, KC_D, KC_SF, KC_G, KC_RGUI, KC_H, KC_SJ, KC_K, KC_L, KC_QUOT, + KC_MPRV, KC_DZ, KC_X, KC_C, KC_V, KC_B, KC_ENT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, + SNIP, KC_LGUI, KC_LCTL, KC_UP_SPC, KC_RALT, TG(_GAME) + ), + + [_GAME] = LAYOUT_625_bar( + KC_TRNS, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_ESC, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSFT, KC_H, KC_SJ, KC_K, KC_L, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_ENT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, + KC_LCTRL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_TRNS + ), + + [_SYM] = LAYOUT_625_bar( + KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_TRNS, KC_CIRC, KC_AMPR, KC_ASTR, KC_EQUAL, KC_MINS, + KC_TRNS, KC_PIPE, KC_BSLS, KC_LPRN, KC_LBRC, KC_SCLN, KC_TRNS, KC_COLN, KC_RBRC, KC_RPRN, KC_PLUS, KC_UNDS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_NAV] = LAYOUT_625_bar( + KC_TRNS, KC_TRNS, KC_HOME, KC_UP, KC_END, KC_PGUP, RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_BSPC, + KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN, KC_TRNS, KC_F5, KC_F6, KC_F7, KC_F8, KC_TAB, + KC_TRNS, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_CAPS, KC_F9, KC_F10, KC_F11, KC_F12, KC_ENT, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + +}; + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { /* left encoder */ + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else if (index == 1) { /* center encoder */ + if (clockwise) { + tap_code(KC_WH_D); + } else { + tap_code(KC_WH_U); + } + } + return true; +} + +#ifdef COMBO_ENABLE +const uint16_t PROGMEM combo_bspc[] = {KC_O, KC_P, COMBO_END}; +const uint16_t PROGMEM combo_ent[] = {KC_K, KC_L, COMBO_END}; +const uint16_t PROGMEM combo_tab[] = {KC_S, KC_D, COMBO_END}; +const uint16_t PROGMEM combo_esc[] = {KC_T, KC_Y, COMBO_END}; +const uint16_t PROGMEM combo_del[] = {KC_Q, KC_W, COMBO_END}; + +combo_t key_combos[COMBO_COUNT] = { + [COMBO_BSPC] = COMBO(combo_bspc,KC_BSPC), + [COMBO_ENT] = COMBO(combo_ent,KC_ENT), + [COMBO_TAB] = COMBO(combo_tab,KC_TAB), + [COMBO_ESC] = COMBO(combo_esc,KC_ESC), + [COMBO_DEL] = COMBO(combo_del,KC_DEL) +}; +#endif + diff --git a/keyboards/wanten/keymaps/625_bar/rules.mk b/keyboards/wanten/keymaps/625_bar/rules.mk new file mode 100644 index 000000000000..ab1e438182a3 --- /dev/null +++ b/keyboards/wanten/keymaps/625_bar/rules.mk @@ -0,0 +1 @@ +COMBO_ENABLE = yes diff --git a/keyboards/wanten/keymaps/default/config.h b/keyboards/wanten/keymaps/default/config.h new file mode 100644 index 000000000000..51e54382af50 --- /dev/null +++ b/keyboards/wanten/keymaps/default/config.h @@ -0,0 +1,27 @@ +/* Copyright 2021 qpockets + + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +/*Modtaps*/ +#define TAPPING_TERM 145 +#define IGNORE_MOD_TAP_INTERRUPT + +/*Combos*/ +#ifdef COMBO_ENABLE +# define COMBO_COUNT 5 +# define COMBO_TERM 25 +#endif diff --git a/keyboards/wanten/keymaps/default/keymap.c b/keyboards/wanten/keymaps/default/keymap.c new file mode 100644 index 000000000000..f0cec2cc45d9 --- /dev/null +++ b/keyboards/wanten/keymaps/default/keymap.c @@ -0,0 +1,104 @@ +/* Copyright 2021 qpockets + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layers{ + _BASE, + _GAME, + _SYM, + _NAV + +}; + +enum combo_events { + COMBO_BSPC, + COMBO_ENT, + COMBO_TAB, + COMBO_ESC, + COMBO_DEL +}; +#define KC_DN_BSPC LT(_NAV, KC_BSPC) +#define KC_UP_SPC LT(_SYM, KC_SPC) +#define KC_GUP_BSPC LT(_SYM, KC_BSPC) +#define KC_SF LSFT_T(KC_F) +#define KC_SJ RSFT_T(KC_J) +#define SNIP S(G(KC_S)) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_default( + KC_MPLY, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_DEL, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_MNXT, KC_A, KC_S, KC_D, KC_SF, KC_G, KC_RGUI, KC_H, KC_SJ, KC_K, KC_L, KC_QUOT, + KC_MPRV, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_ENT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, + SNIP, KC_LGUI, KC_LCTL, KC_DN_BSPC, KC_UP_SPC, KC_RALT, TG(_GAME), KC_MUTE + ), + + [_GAME] = LAYOUT_default( + KC_TRNS, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_ESC, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSFT, KC_H, KC_SJ, KC_K, KC_L, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_ENT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, + KC_LCTRL, KC_LGUI, KC_LALT, KC_SPC, KC_GUP_BSPC, KC_RALT, KC_TRNS, KC_BSPC + ), + + [_SYM] = LAYOUT_default( + KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_TRNS, KC_CIRC, KC_AMPR, KC_ASTR, KC_EQUAL, KC_MINS, + KC_TRNS, KC_PIPE, KC_BSLS, KC_LPRN, KC_LBRC, KC_SCLN, KC_TRNS, KC_COLN, KC_RBRC, KC_RPRN, KC_PLUS, KC_UNDS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_NAV] = LAYOUT_default( + KC_TRNS, KC_TRNS, KC_HOME, KC_UP, KC_END, KC_PGUP, RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_BSPC, + KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN, KC_TRNS, KC_F5, KC_F6, KC_F7, KC_F8, KC_TAB, + KC_TRNS, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_CAPS, KC_F9, KC_F10, KC_F11, KC_F12, KC_ENT, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + +}; + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { /* left encoder */ + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else if (index == 1) { /* center encoder */ + if (clockwise) { + tap_code(KC_WH_U); + } else { + tap_code(KC_WH_D); + } + } + return true; +} + +#ifdef COMBO_ENABLE +const uint16_t PROGMEM combo_bspc[] = {KC_O, KC_P, COMBO_END}; +const uint16_t PROGMEM combo_ent[] = {KC_K, KC_L, COMBO_END}; +const uint16_t PROGMEM combo_tab[] = {KC_S, KC_D, COMBO_END}; +const uint16_t PROGMEM combo_esc[] = {KC_T, KC_Y, COMBO_END}; +const uint16_t PROGMEM combo_del[] = {KC_Q, KC_W, COMBO_END}; + +combo_t key_combos[COMBO_COUNT] = { + [COMBO_BSPC] = COMBO(combo_bspc,KC_BSPC), + [COMBO_ENT] = COMBO(combo_ent,KC_ENT), + [COMBO_TAB] = COMBO(combo_tab,KC_TAB), + [COMBO_ESC] = COMBO(combo_esc,KC_ESC), + [COMBO_DEL] = COMBO(combo_del,KC_DEL) +}; +#endif + diff --git a/keyboards/wanten/keymaps/default/readme.md b/keyboards/wanten/keymaps/default/readme.md new file mode 100644 index 000000000000..5a2b63c0bb4c --- /dev/null +++ b/keyboards/wanten/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for wanten diff --git a/keyboards/wanten/keymaps/default/rules.mk b/keyboards/wanten/keymaps/default/rules.mk new file mode 100644 index 000000000000..ab1e438182a3 --- /dev/null +++ b/keyboards/wanten/keymaps/default/rules.mk @@ -0,0 +1 @@ +COMBO_ENABLE = yes diff --git a/keyboards/wanten/readme.md b/keyboards/wanten/readme.md new file mode 100644 index 000000000000..90dd1ae132cf --- /dev/null +++ b/keyboards/wanten/readme.md @@ -0,0 +1,27 @@ +# wanten + +![wanten](https://i.imgur.com/d7o1Edf.png) + +an ortho drop in PCB for Van cases + +* Keyboard Maintainer: [qpockets](https://github.com/qpockets) +* Hardware Supported: V1 wanten PCB +* Hardware Availability: [pocketspace discord server](https://discord.gg/fKbTxraHc6) + +Make example for this keyboard (after setting up your build environment): + + make wanten:default + +Flashing example for this keyboard: + + make wanten:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (top left key or encoder) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB +* **Keycode in layout**: Press the key mapped to `RESET` if it is available diff --git a/keyboards/wanten/rules.mk b/keyboards/wanten/rules.mk new file mode 100644 index 000000000000..c1fc20c8a519 --- /dev/null +++ b/keyboards/wanten/rules.mk @@ -0,0 +1,20 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 \ No newline at end of file diff --git a/keyboards/wanten/wanten.c b/keyboards/wanten/wanten.c new file mode 100644 index 000000000000..15f3e64cb8d5 --- /dev/null +++ b/keyboards/wanten/wanten.c @@ -0,0 +1,17 @@ +/* Copyright 2021 qpockets + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "wanten.h" diff --git a/keyboards/wanten/wanten.h b/keyboards/wanten/wanten.h new file mode 100644 index 000000000000..e6db44fea6e6 --- /dev/null +++ b/keyboards/wanten/wanten.h @@ -0,0 +1,65 @@ +/* Copyright 2021 qpockets + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define XXX KC_NO + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT_default( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k50, k51, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k60, k61, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k70, k71, \ + k30, k31, k32, k35, k37, k39, k80, k81 \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k50, k51, }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k60, k61, }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k70, k71, }, \ + { k30, k31, k32, XXX, XXX, k35, XXX, k37, XXX, k39, k80, k81, } \ +} + +#define LAYOUT_625_bar( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k50, k51, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k60, k61, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k70, k71, \ + k30, k31, k32, k36, k39, k81 \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k50, k51, }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k60, k61, }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k70, k71, }, \ + { k30, k31, k32, XXX, XXX, XXX, k36, XXX, XXX, k39, XXX, k81, } \ +} + +#define LAYOUT_2u_bars( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k50, k51, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k60, k61, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k70, k71, \ + k30, k31, k32, k34, k35, k37, k38, k39, k81 \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k50, k51, }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k60, k61, }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k70, k71, }, \ + { k30, k31, k32, XXX, k34, k35, XXX, k37, k38, k39, XXX, k81, } \ +} diff --git a/keyboards/wekey/polaris/config.h b/keyboards/wekey/polaris/config.h new file mode 100644 index 000000000000..621d30df5a5a --- /dev/null +++ b/keyboards/wekey/polaris/config.h @@ -0,0 +1,152 @@ +/* +Copyright 2021 @wekey + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x5559 +#define PRODUCT_ID 0x0002 +#define DEVICE_VER 0x0001 +#define MANUFACTURER @wekey +#define PRODUCT Polaris + +/* key matrix size */ +#define MATRIX_ROWS 10 +#define MATRIX_COLS 8 + +/* + * 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 { F4, F1, F0, B7, F7, D5, C6, C7, F5, F6 } +#define MATRIX_COL_PINS { E6, B4, B5, B6, D0, D1, D2, D3 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +// #define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +//#define LED_NUM_LOCK_PIN B0 +//#define LED_CAPS_LOCK_PIN B1 +//#define LED_SCROLL_LOCK_PIN B2 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +//#define RGB_DI_PIN E2 +//#ifdef RGB_DI_PIN +//# define RGBLED_NUM 16 +//# define RGBLIGHT_HUE_STEP 8 +//# define RGBLIGHT_SAT_STEP 8 +//# define RGBLIGHT_VAL_STEP 8 +//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +//# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +//#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/wekey/polaris/info.json b/keyboards/wekey/polaris/info.json new file mode 100644 index 000000000000..01626101c2a7 --- /dev/null +++ b/keyboards/wekey/polaris/info.json @@ -0,0 +1,275 @@ +{ + "keyboard_name": "Polaris", + "url": "", + "maintainer": "@wekey.dev", + "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}, + {"label":"Backspace", "x":13, "y":0}, + {"label":"Delete", "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}, + {"label":"|", "x":1.25, "y":3}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"Print Screen", "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":2.25}, + {"x":6, "y":4, "w":1.25}, + {"x":7.25, "y":4, "w":2.75}, + {"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} + ] + }, + "LAYOUT_60_ansi": { + "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}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + {"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":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":2.75}, + {"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} + ] + }, + "LAYOUT_60_ansi_split_bs_rshift": { + "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}, + {"label":"Backspace", "x":13, "y":0}, + {"label":"Delete", "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":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"Print Screen", "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} + ] + }, + "LAYOUT_60_tsangan_hhkb": { + "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}, + {"label":"Backspace", "x":13, "y":0}, + {"label":"Delete", "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":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"Print Screen", "x":14, "y":3}, + {"label":"Ctrl", "x":0, "y":4, "w":1.5}, + {"label":"Win", "x":1.5, "y":4}, + {"label":"Alt", "x":2.5, "y":4, "w":1.5}, + {"x":4, "y":4, "w":7}, + {"label":"Alt", "x":11, "y":4, "w":1.5}, + {"label":"Win", "x":12.5, "y":4}, + {"label":"Ctrl", "x":13.5, "y":4, "w":1.5} + ] + } + } +} diff --git a/keyboards/wekey/polaris/keymaps/default/keymap.c b/keyboards/wekey/polaris/keymaps/default/keymap.c new file mode 100644 index 000000000000..65902ae583e8 --- /dev/null +++ b/keyboards/wekey/polaris/keymaps/default/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2019 Ryota Goto + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_all( /* Base */ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + MO(1), 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_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL + ), + [_FN] = LAYOUT_all( /* FN */ + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_BSPC, + _______, _______, KC_PGUP, _______, _______, _______, _______, _______, KC_UP, _______, KC_MPRV, KC_MPLY, KC_MNXT, BL_STEP, + _______, KC_HOME, KC_PGDN, KC_END, _______, KC_VOLD, KC_VOLU, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, + _______, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, KC_PSCR, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + diff --git a/keyboards/wekey/polaris/keymaps/default/readme.md b/keyboards/wekey/polaris/keymaps/default/readme.md new file mode 100644 index 000000000000..ec7f3154a4f8 --- /dev/null +++ b/keyboards/wekey/polaris/keymaps/default/readme.md @@ -0,0 +1,3 @@ +# The default keymap for Polaris + +Fits just about everything on two layers. \ No newline at end of file diff --git a/keyboards/wekey/polaris/keymaps/via/keymap.c b/keyboards/wekey/polaris/keymaps/via/keymap.c new file mode 100644 index 000000000000..67c5cd37eabc --- /dev/null +++ b/keyboards/wekey/polaris/keymaps/via/keymap.c @@ -0,0 +1,55 @@ +/* Copyright 2019 Ryota Goto + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _FN, + _EXTRA_ONE, + _EXTRA_TWO +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_all( /* Base */ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + MO(1), 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_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RALT, KC_RGUI, KC_RCTL + ), + [_FN] = LAYOUT_all( /* FN */ + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_BSPC, + _______, _______, _______, KC_PGUP, _______, _______, _______, _______, KC_UP, _______, _______, _______, _______, BL_STEP, + _______, _______, KC_HOME, KC_PGDN, KC_END, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, + _______, _______, KC_VOLD, KC_MUTE, KC_VOLU, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, KC_PSCR, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [_EXTRA_ONE] = LAYOUT_all( /* Layer 3 */ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [_EXTRA_TWO] = LAYOUT_all( /* Layer 3 */ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + diff --git a/keyboards/wekey/polaris/keymaps/via/readme.md b/keyboards/wekey/polaris/keymaps/via/readme.md new file mode 100644 index 000000000000..6e4d2c7446c6 --- /dev/null +++ b/keyboards/wekey/polaris/keymaps/via/readme.md @@ -0,0 +1,3 @@ +# The via keymap for Polaris + +For via configurator use \ No newline at end of file diff --git a/keyboards/wekey/polaris/keymaps/via/rules.mk b/keyboards/wekey/polaris/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/wekey/polaris/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/wekey/polaris/polaris.c b/keyboards/wekey/polaris/polaris.c new file mode 100644 index 000000000000..413c56460e26 --- /dev/null +++ b/keyboards/wekey/polaris/polaris.c @@ -0,0 +1,17 @@ +/* Copyright 2021 @wekey + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "polaris.h" diff --git a/keyboards/wekey/polaris/polaris.h b/keyboards/wekey/polaris/polaris.h new file mode 100644 index 000000000000..88968607f6ce --- /dev/null +++ b/keyboards/wekey/polaris/polaris.h @@ -0,0 +1,109 @@ +/* Copyright 2021 @wekey + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ___ KC_NO + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT_all( \ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, K07, \ + K20, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K27, \ + K40, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K46, K56, \ + K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K66, K76, \ + K80, K90, K81, K82, K83, K84, K85, K95, K86, K96 \ +) \ +{ \ + { K00, K01, K02, K03, K04, K05, K06, K07 }, \ + { K10, K11, K12, K13, K14, K15, K16, ___ }, \ + { K20, K21, K22, K23, K24, K25, K26, K27 }, \ + { ___, K31, K32, K33, K34, K35, K36, ___ }, \ + { K40, K41, K42, K43, K44, K45, K46, ___ }, \ + { ___, K51, K52, K53, K54, K55, K56, ___ }, \ + { K60, K61, K62, K63, K64, K65, K66, ___ }, \ + { K70, K71, K72, K73, K74, K75, K76, ___ }, \ + { K80, K81, K82, K83, K84, K85, K86, ___ }, \ + { K90, ___, ___, ___, ___, K95, K96, ___ } \ +} + +#define LAYOUT_60_ansi( \ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, \ + K20, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K27, \ + K40, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K46, K56, \ + K60, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K66, \ + K80, K90, K81, K83, K85, K95, K86, K96 \ +) \ +{ \ + { K00, K01, K02, K03, K04, K05, K06, ___ }, \ + { K10, K11, K12, K13, K14, K15, K16, ___ }, \ + { K20, K21, K22, K23, K24, K25, K26, K27 }, \ + { ___, K31, K32, K33, K34, K35, K36, ___ }, \ + { K40, K41, K42, K43, K44, K45, K46, ___ }, \ + { ___, K51, K52, K53, K54, K55, K56, ___ }, \ + { K60, K61, K62, K63, K64, K65, K66, ___ }, \ + { ___, K71, K72, K73, K74, K75, ___, ___ }, \ + { K80, K81, ___, K83, ___, K85, K86, ___ }, \ + { K90, ___, ___, ___, ___, K95, K96, ___ } \ +} + +#define LAYOUT_60_ansi_split_bs_rshift( \ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, K07, \ + K20, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K27, \ + K40, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K46, K56, \ + K60, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K66, K76, \ + K80, K90, K81, K83, K85, K95, K86, K96 \ +) \ +{ \ + { K00, K01, K02, K03, K04, K05, K06, K07 }, \ + { K10, K11, K12, K13, K14, K15, K16, ___ }, \ + { K20, K21, K22, K23, K24, K25, K26, K27 }, \ + { ___, K31, K32, K33, K34, K35, K36, ___ }, \ + { K40, K41, K42, K43, K44, K45, K46, ___ }, \ + { ___, K51, K52, K53, K54, K55, K56, ___ }, \ + { K60, K61, K62, K63, K64, K65, K66, ___ }, \ + { ___, K71, K72, K73, K74, K75, K76, ___ }, \ + { K80, K81, ___, K83, ___, K85, K86, ___ }, \ + { K90, ___, ___, ___, ___, K95, K96, ___ } \ +} + +#define LAYOUT_60_tsangan_hhkb( \ + K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, K07, \ + K20, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K27, \ + K40, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K46, K56, \ + K60, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K66, K76, \ + K80, K90, K81, K83, K95, K86, K96 \ +) \ +{ \ + { K00, K01, K02, K03, K04, K05, K06, K07 }, \ + { K10, K11, K12, K13, K14, K15, K16, ___ }, \ + { K20, K21, K22, K23, K24, K25, K26, K27 }, \ + { ___, K31, K32, K33, K34, K35, K36, ___ }, \ + { K40, K41, K42, K43, K44, K45, K46, ___ }, \ + { ___, K51, K52, K53, K54, K55, K56, ___ }, \ + { K60, K61, K62, K63, K64, K65, K66, ___ }, \ + { ___, K71, K72, K73, K74, K75, K76, ___ }, \ + { K80, K81, ___, K83, ___, ___, K86, ___ }, \ + { K90, ___, ___, ___, ___, K95, K96, ___ } \ +} diff --git a/keyboards/wekey/polaris/readme.md b/keyboards/wekey/polaris/readme.md new file mode 100644 index 000000000000..40fcf65bb66e --- /dev/null +++ b/keyboards/wekey/polaris/readme.md @@ -0,0 +1,27 @@ +# polaris + +![polaris](https://i.imgur.com/bENjPiKh.jpg) + +A customizable pcb for Polaris. + +* Keyboard Maintainer: [@wekey](https://github.com/wekey-dev) +* Hardware Supported: Polaris case +* Hardware Availability: custom pcb group buys + +Make example for this keyboard (after setting up your build environment): + + make polaris:default + +Flashing example for this keyboard: + + make polaris:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `RESET` if it is available diff --git a/keyboards/wekey/polaris/rules.mk b/keyboards/wekey/polaris/rules.mk new file mode 100644 index 000000000000..620372bc5e44 --- /dev/null +++ b/keyboards/wekey/polaris/rules.mk @@ -0,0 +1,22 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 + +DEBOUNCE_TYPE = sym_defer_pk +LAYOUTS = 60_ansi 60_ansi_split_bs_rshift 60_tsangan_hhkb diff --git a/keyboards/wekey/we27/config.h b/keyboards/wekey/we27/config.h new file mode 100644 index 000000000000..851e85aabbb5 --- /dev/null +++ b/keyboards/wekey/we27/config.h @@ -0,0 +1,231 @@ +/* +Copyright 2021 @wekey + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x5559 +#define PRODUCT_ID 0x0001 +#define DEVICE_VER 0x0001 +#define MANUFACTURER @wekey +#define PRODUCT We27 + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 5 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS { F1, D7, B4, B5, B6, F6 } +#define MATRIX_COL_PINS { F4, F5, C7, D6, D4 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +// #define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +#ifdef RGB_MATRIX_ENABLE +// The pin connected to the data pin of the LEDs +#define RGB_DI_PIN C6 +// The number of LEDs connected +#define DRIVER_LED_TOTAL 27 + +#define RGB_MATRIX_KEYPRESSES // reacts to keypresses +#define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses) +#define RGB_MATRIX_STARTUP_HUE 108 // Sets the default hue value, if none has been set +#define RGB_MATRIX_STARTUP_SAT 255 // Sets the default saturation value, if none has been set +#define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS // Sets the default brightness value, if none has been set +#define RGB_MATRIX_STARTUP_SPD 127 // Sets the default animation speed, if none has been set +#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR // Sets the default mode, if none has been set + +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +// # define ENABLE_RGB_MATRIX_ALPHAS_MODS +// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +// # define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +// # define ENABLE_RGB_MATRIX_BREATHING +// # define ENABLE_RGB_MATRIX_BAND_SAT +// # define ENABLE_RGB_MATRIX_BAND_VAL +// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +// # define ENABLE_RGB_MATRIX_CYCLE_ALL +// # define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +// # define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +// # define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +// # define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +// # define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +// # define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +// # define ENABLE_RGB_MATRIX_DUAL_BEACON +// # define ENABLE_RGB_MATRIX_RAINBOW_BEACON +// # define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +// # define ENABLE_RGB_MATRIX_RAINDROPS +// # define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +// # define ENABLE_RGB_MATRIX_HUE_BREATHING +// # define ENABLE_RGB_MATRIX_HUE_PENDULUM +// # define ENABLE_RGB_MATRIX_HUE_WAVE +// # define ENABLE_RGB_MATRIX_PIXEL_RAIN +// # define ENABLE_RGB_MATRIX_PIXEL_FLOW +// # define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +// # define ENABLE_RGB_MATRIX_TYPING_HEATMAP +// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// # define ENABLE_RGB_MATRIX_SPLASH +// # define ENABLE_RGB_MATRIX_MULTISPLASH +// # define ENABLE_RGB_MATRIX_SOLID_SPLASH +// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + +#endif + +#ifdef ENCODER_ENABLE +#define ENCODERS_PAD_A { D3 } +# define ENCODERS_PAD_B \ + { D2 } +# define ENCODER_RESOLUTION 2 + +# define ENCODERS 1 +# define ENCODERS_CW_KEY \ + { \ + { 4, 5 } \ + } +#define ENCODERS_CCW_KEY { { 4, 3 } } +#endif + +//#define LED_NUM_LOCK_PIN B0 +//#define LED_CAPS_LOCK_PIN B1 +//#define LED_SCROLL_LOCK_PIN B2 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +//#define RGB_DI_PIN E2 +//#ifdef RGB_DI_PIN +//# define RGBLED_NUM 16 +//# define RGBLIGHT_HUE_STEP 8 +//# define RGBLIGHT_SAT_STEP 8 +//# define RGBLIGHT_VAL_STEP 8 +//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +//# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +//#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/wekey/we27/encoder_actions.c b/keyboards/wekey/we27/encoder_actions.c new file mode 100644 index 000000000000..0f32ac2723ad --- /dev/null +++ b/keyboards/wekey/we27/encoder_actions.c @@ -0,0 +1,57 @@ +/* Copyright 2020 Neil Brian Ramirez + * Copyright 2021 drashna jael're (@drashna) + * Copyright 2021 uybv + * + * This program is free software: you can 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 . + */ + +#include "encoder_actions.h" + +#ifdef ENCODER_ENABLE + +# ifdef ENCODERS +static uint8_t encoder_state[ENCODERS] = {0}; +static keypos_t encoder_cw[ENCODERS] = ENCODERS_CW_KEY; +static keypos_t encoder_ccw[ENCODERS] = ENCODERS_CCW_KEY; +# endif + +void encoder_action_unregister(void) { +# ifdef ENCODERS + for (int index = 0; index < ENCODERS; ++index) { + if (encoder_state[index]) { + keyevent_t encoder_event = (keyevent_t) { + .key = encoder_state[index] >> 1 ? encoder_cw[index] : encoder_ccw[index], + .pressed = false, + .time = (timer_read() | 1) + }; + encoder_state[index] = 0; + action_exec(encoder_event); + } + } +# endif +} + +void encoder_action_register(uint8_t index, bool clockwise) { +# ifdef ENCODERS + keyevent_t encoder_event = (keyevent_t) { + .key = clockwise ? encoder_cw[index] : encoder_ccw[index], + .pressed = true, + .time = (timer_read() | 1) + }; + encoder_state[index] = (clockwise ^ 1) | (clockwise << 1); + action_exec(encoder_event); +# endif +} + +#endif diff --git a/keyboards/wekey/we27/encoder_actions.h b/keyboards/wekey/we27/encoder_actions.h new file mode 100644 index 000000000000..2484af52ae18 --- /dev/null +++ b/keyboards/wekey/we27/encoder_actions.h @@ -0,0 +1,21 @@ +/* Copyright 2020 Neil Brian Ramirez + * + * This program is free software: you can 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 . + */ + +#include "quantum.h" + +void encoder_action_unregister(void); + +void encoder_action_register(uint8_t index, bool clockwise); diff --git a/keyboards/wekey/we27/info.json b/keyboards/wekey/we27/info.json new file mode 100644 index 000000000000..8e1a8595a065 --- /dev/null +++ b/keyboards/wekey/we27/info.json @@ -0,0 +1,27 @@ +{ + "keyboard_name": "we27", + "url": "", + "maintainer": "@wekey.dev", + "layouts": { + "LAYOUT_numpad_6x5": { + "layout": [ + {"label":"ESC", "x":0, "y":0}, {"label":"PRTSC", "x":1, "y":0}, {"label":"F5", "x":2, "y":0}, {"label":"F11", "x":3, "y":0}, {"label":"MUTE", "x":4, "y":0}, + {"label":"NLCK", "x":0, "y":1.5}, {"label":"DEL", "x":1, "y":1.5}, {"label":"/", "x":2, "y":1.5}, {"label":"*", "x":3, "y":1.5}, {"label":"-", "x":4, "y":1.5}, + {"label":"HOME", "x":0, "y":2.5}, {"label":"7", "x":1, "y":2.5}, {"label":"8", "x":2, "y":2.5}, {"label":"9", "x":3, "y":2.5}, + {"label":"END", "x":0, "y":3.5}, {"label":"4", "x":1, "y":3.5}, {"label":"5", "x":2, "y":3.5}, {"label":"6", "x":3, "y":3.5}, {"label":"+", "x":4, "y":2.5, "h":2}, + {"label":"ANY", "x":0, "y":4.5}, {"label":"1", "x":1, "y":4.5}, {"label":"2", "x":2, "y":4.5}, {"label":"3", "x":3, "y":4.5}, + {"label":"FN", "x":0, "y":5.5}, {"label":"0", "x":1, "y":5.5, "w":2}, {"label":".", "x":3, "y":5.5}, {"label":"ENTER", "x":4, "y":4.5, "h":2} + ] + }, + "LAYOUT_numpad_6x5_encoder": { + "layout": [ + {"label":"ESC", "x":0, "y":0.75}, {"label":"PRTSC", "x":1, "y":0.75}, {"label":"F5", "x":2, "y":0.75}, {"label":"F11", "x":3, "y":0.75}, {"label":"MUTE", "x":4, "y":0.75}, {"label":"VOLD", "x":3.75, "y":0, "w":0.75, "h":0.75}, {"label":"VOLU", "x":4.5, "y":0, "w":0.75, "h":0.75}, + {"label":"NLCK", "x":0, "y":2.25}, {"label":"DEL", "x":1, "y":2.25}, {"label":"/", "x":2, "y":2.25}, {"label":"*", "x":3, "y":2.25}, {"label":"-", "x":4, "y":2.25}, + {"label":"HOME", "x":0, "y":3.25}, {"label":"7", "x":1, "y":3.25}, {"label":"8", "x":2, "y":3.25}, {"label":"9", "x":3, "y":3.25}, + {"label":"END", "x":0, "y":4.25}, {"label":"4", "x":1, "y":4.25}, {"label":"5", "x":2, "y":4.25}, {"label":"6", "x":3, "y":4.25}, {"label":"+", "x":4, "y":3.25, "h":2}, + {"label":"ANY", "x":0, "y":5.25}, {"label":"1", "x":1, "y":5.25}, {"label":"2", "x":2, "y":5.25}, {"label":"3", "x":3, "y":5.25}, + {"label":"FN", "x":0, "y":6.25}, {"label":"0", "x":1, "y":6.25, "w":2}, {"label":".", "x":3, "y":6.25}, {"label":"ENTER", "x":4, "y":5.25, "h":2} + ] + } + } +} diff --git a/keyboards/wekey/we27/keymaps/default/keymap.c b/keyboards/wekey/we27/keymaps/default/keymap.c new file mode 100644 index 000000000000..fdaafa7d82af --- /dev/null +++ b/keyboards/wekey/we27/keymaps/default/keymap.c @@ -0,0 +1,52 @@ +/* Copyright 2021 @wekey + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [0] = LAYOUT_numpad_6x5_encoder( + KC_ESC , KC_PWR , KC_SLEP, KC_F11 , KC_MUTE, KC_VOLD, KC_VOLU, + KC_NLCK, KC_BSPC, KC_PSLS, KC_PAST, KC_PMNS, + RGB_MOD, KC_P7 , KC_P8 , KC_P9 , + RGB_RMOD, KC_P4 , KC_P5 , KC_P6 , KC_PPLS, + RGB_TOG, KC_P1 , KC_P2 , KC_P3 , + MO(1) , KC_P0 , KC_PDOT, KC_PENT + ), + [1] = LAYOUT_numpad_6x5_encoder( + _______, _______, _______, _______, KC_MPLY, KC_MPRV, KC_MNXT, + _______, _______, _______, _______, _______, + RGB_SPI, RGB_HUI, RGB_SAI, RGB_VAI, + RGB_SPD, RGB_HUD, RGB_SAD, RGB_VAD, _______, + _______, _______, _______, _______, + _______, _______, _______, RESET + ), + [2] = LAYOUT_numpad_6x5_encoder( + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______ + ), + [3] = LAYOUT_numpad_6x5_encoder( + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______ + ) +}; diff --git a/keyboards/wekey/we27/keymaps/default/readme.md b/keyboards/wekey/we27/keymaps/default/readme.md new file mode 100644 index 000000000000..8ad307a9c3aa --- /dev/null +++ b/keyboards/wekey/we27/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for we27 diff --git a/keyboards/wekey/we27/keymaps/via/keymap.c b/keyboards/wekey/we27/keymaps/via/keymap.c new file mode 100644 index 000000000000..fdaafa7d82af --- /dev/null +++ b/keyboards/wekey/we27/keymaps/via/keymap.c @@ -0,0 +1,52 @@ +/* Copyright 2021 @wekey + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [0] = LAYOUT_numpad_6x5_encoder( + KC_ESC , KC_PWR , KC_SLEP, KC_F11 , KC_MUTE, KC_VOLD, KC_VOLU, + KC_NLCK, KC_BSPC, KC_PSLS, KC_PAST, KC_PMNS, + RGB_MOD, KC_P7 , KC_P8 , KC_P9 , + RGB_RMOD, KC_P4 , KC_P5 , KC_P6 , KC_PPLS, + RGB_TOG, KC_P1 , KC_P2 , KC_P3 , + MO(1) , KC_P0 , KC_PDOT, KC_PENT + ), + [1] = LAYOUT_numpad_6x5_encoder( + _______, _______, _______, _______, KC_MPLY, KC_MPRV, KC_MNXT, + _______, _______, _______, _______, _______, + RGB_SPI, RGB_HUI, RGB_SAI, RGB_VAI, + RGB_SPD, RGB_HUD, RGB_SAD, RGB_VAD, _______, + _______, _______, _______, _______, + _______, _______, _______, RESET + ), + [2] = LAYOUT_numpad_6x5_encoder( + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______ + ), + [3] = LAYOUT_numpad_6x5_encoder( + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______ + ) +}; diff --git a/keyboards/wekey/we27/keymaps/via/readme.md b/keyboards/wekey/we27/keymaps/via/readme.md new file mode 100644 index 000000000000..8ad307a9c3aa --- /dev/null +++ b/keyboards/wekey/we27/keymaps/via/readme.md @@ -0,0 +1 @@ +# The default keymap for we27 diff --git a/keyboards/wekey/we27/keymaps/via/rules.mk b/keyboards/wekey/we27/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/wekey/we27/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/wekey/we27/readme.md b/keyboards/wekey/we27/readme.md new file mode 100644 index 000000000000..3212f9505f8d --- /dev/null +++ b/keyboards/wekey/we27/readme.md @@ -0,0 +1,19 @@ +# we27 + +![we27](https://i.imgur.com/DvZ3EBah.jpg) + +A customizable 20% hot-swap, RGB numpad and encoder. + +* Keyboard Maintainer: [@wekey](https://github.com/wekey-dev) +* Hardware Supported: WE27 PCB rev1 +* Hardware Availability: custom pcb group buys + +Make example for this keyboard (after setting up your build environment): + + make wekey/we27:default + +Flashing example for this keyboard: + + make wekey/we27:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/wekey/we27/rgb_matrix_kb.inc b/keyboards/wekey/we27/rgb_matrix_kb.inc new file mode 100644 index 000000000000..a7eeffbbe935 --- /dev/null +++ b/keyboards/wekey/we27/rgb_matrix_kb.inc @@ -0,0 +1,27 @@ + +//RGB_MATRIX_EFFECT(SOLID_REACTIVE_WIDE2) +RGB_MATRIX_EFFECT(SOLID_REACTIVE_MULTIWIDE2) +//RGB_MATRIX_EFFECT(SOLID_REACTIVE_NEXUS2) +//RGB_MATRIX_EFFECT(SOLID_REACTIVE_MULTINEXUS2) + +#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS + +static HSV SOLID_REACTIVE_WIDE_math2(HSV hsv, int16_t dx, int16_t dy, uint8_t dist, uint16_t tick) { + uint16_t effect = tick - dist > 255 || dist > 32 ? 255 : tick - dist; + hsv.v = qadd8(hsv.v, 255 - effect); + return hsv; +} + +static HSV SOLID_REACTIVE_NEXUS_math2(HSV hsv, int16_t dx, int16_t dy, uint8_t dist, uint16_t tick) { + uint16_t effect = tick - dist > 255 || ((dx > 8 || dx < -8) && (dy > 8 || dy < -8)) ? 255 : tick - dist; + hsv.v = qadd8(hsv.v, 255 - effect); + hsv.h = rgb_matrix_config.hsv.h + dy / 4; + return hsv; +} + +bool SOLID_REACTIVE_WIDE2(effect_params_t* params) { return effect_runner_reactive_splash(qsub8(g_last_hit_tracker.count, 1), params, &SOLID_REACTIVE_WIDE_math2); } +bool SOLID_REACTIVE_MULTIWIDE2(effect_params_t* params) { return effect_runner_reactive_splash(0, params, &SOLID_REACTIVE_WIDE_math2); } +bool SOLID_REACTIVE_NEXUS2(effect_params_t* params) { return effect_runner_reactive_splash(qsub8(g_last_hit_tracker.count, 1), params, &SOLID_REACTIVE_NEXUS_math2); } +bool SOLID_REACTIVE_MULTINEXUS2(effect_params_t* params) { return effect_runner_reactive_splash(0, params, &SOLID_REACTIVE_NEXUS_math2); } + +#endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS diff --git a/keyboards/wekey/we27/rules.mk b/keyboards/wekey/we27/rules.mk new file mode 100644 index 000000000000..74f33d542359 --- /dev/null +++ b/keyboards/wekey/we27/rules.mk @@ -0,0 +1,29 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes +RGB_MATRIX_ENABLE = yes # Use RGB matrix +RGB_MATRIX_DRIVER = WS2812 + +DEBOUNCE_TYPE = sym_defer_pk +RGB_MATRIX_CUSTOM_KB = yes + +SRC += encoder_actions.c + +LAYOUTS = numpad_6x5 diff --git a/keyboards/wekey/we27/we27.c b/keyboards/wekey/we27/we27.c new file mode 100644 index 000000000000..2765e6f3bd1e --- /dev/null +++ b/keyboards/wekey/we27/we27.c @@ -0,0 +1,58 @@ +/* Copyright 2021 @wekey + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "we27.h" +#include "encoder_actions.h" + +#ifdef RGB_MATRIX_ENABLE + +#define __ NO_LED + +led_config_t g_led_config = { { + { 0, 1, 2, 3, 4 }, + { 9, 8, 7, 6, 5 }, + { 10, 11, 12, 13, 14 }, + { 18, 17, 16, 15, __ }, + { 19, 20, 21, 22, 23 }, + { 26, 25, __, 24, __ } +}, { + {0,1},{56,1},{112,1},{168,1},{224,1}, + {0,16},{56,16},{112,16},{168,16},{224,16}, + {0,28},{56,28},{112,28},{168,28},{224,28}, + {0,40},{56,40},{112,40},{168,40}, + {0,52},{56,52},{112,52},{168,52},{224,52}, + {0,64},{56,64},{168,64} +}, { + 1, 1, 1, 1, 1, + 1, 1, 4, 4, 4, + 1, 4, 4, 4, 4, + 1, 4, 4, 4, + 1, 4, 4, 4, 4, + 1, 4, 4 +} }; + +#endif + +void matrix_scan_kb(void) { + encoder_action_unregister(); + matrix_scan_user(); +} + +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + encoder_action_register(index, clockwise); + return true; +}; diff --git a/keyboards/wekey/we27/we27.h b/keyboards/wekey/we27/we27.h new file mode 100644 index 000000000000..5542a52d2fe3 --- /dev/null +++ b/keyboards/wekey/we27/we27.h @@ -0,0 +1,53 @@ +/* Copyright 2021 @wekey + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ___ KC_NO + +#define LAYOUT_numpad_6x5( \ + K00, K01, K02, K03, K04, \ + K10, K11, K12, K13, K14, \ + K20, K21, K22, K23, \ + K30, K31, K32, K33, K24, \ + K40, K41, K42, K43, \ + K50, K51, K53, K44 \ +) { \ + { K00, K01, K02, K03, K04 }, \ + { K10, K11, K12, K13, K14 }, \ + { K20, K21, K22, K23, K24 }, \ + { K30, K31, K32, K33, ___ }, \ + { K40, K41, K42, K43, K44 }, \ + { K50, K51, ___, K53, ___ } \ +} + +#define LAYOUT_numpad_6x5_encoder( \ + K00, K01, K02, K03, K04, K34, K54, \ + K10, K11, K12, K13, K14, \ + K20, K21, K22, K23, \ + K30, K31, K32, K33, K24, \ + K40, K41, K42, K43, \ + K50, K51, K53, K44 \ +) { \ + { 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, ___, K53, K54 } \ +} diff --git a/keyboards/westfoxtrot/aanzee/aanzee.h b/keyboards/westfoxtrot/aanzee/aanzee.h index aa1b9165606e..1cfa1784fb9b 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 . */ -#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/aanzee/info.json b/keyboards/westfoxtrot/aanzee/info.json index 96d0c1c36c32..972a37fb552a 100644 --- a/keyboards/westfoxtrot/aanzee/info.json +++ b/keyboards/westfoxtrot/aanzee/info.json @@ -2,15 +2,11 @@ "keyboard_name": "aanzee", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT_ansi": { - "key_count": 68, "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"label":"Home", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"PgUp", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"PgDn", "x":15, "y":2}, {"label":"\u21e7 Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"label":"Fn", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}] }, "LAYOUT_iso": { - "key_count": 68, "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Home", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"x":13.75, "y":1, "w":1.25, "h":2}, {"label":"PgUp", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"x":12.75, "y":2}, {"label":"PgDn", "x":15, "y":2}, {"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}, {"label":"\u2191", "x":14, "y":3}, {"label":"Fn", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}] } } diff --git a/keyboards/westfoxtrot/aanzee/keymaps/default/keymap.c b/keyboards/westfoxtrot/aanzee/keymaps/default/keymap.c index e2b75bc860b8..8809523b62e4 100644 --- a/keyboards/westfoxtrot/aanzee/keymaps/default/keymap.c +++ b/keyboards/westfoxtrot/aanzee/keymaps/default/keymap.c @@ -34,15 +34,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \ _______,_______,_______, _______, _______,_______,_______,_______, _______) }; - - void matrix_init_user(void) { - //user initialization - } - - void matrix_scan_user(void) { - //user matrix - } - - bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; - } diff --git a/keyboards/westfoxtrot/aanzee/keymaps/iso-default/keymap.c b/keyboards/westfoxtrot/aanzee/keymaps/iso-default/keymap.c index 4ea02795805d..c3cf7e0df098 100644 --- a/keyboards/westfoxtrot/aanzee/keymaps/iso-default/keymap.c +++ b/keyboards/westfoxtrot/aanzee/keymaps/iso-default/keymap.c @@ -34,15 +34,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \ _______,_______,_______, _______, _______,_______,_______,_______,_______) }; - - void matrix_init_user(void) { - //user initialization - } - - void matrix_scan_user(void) { - //user matrix - } - - bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; - } diff --git a/keyboards/westfoxtrot/aanzee/keymaps/via/keymap.c b/keyboards/westfoxtrot/aanzee/keymaps/via/keymap.c index 1ac5c77fff17..1d1e2252bb28 100644 --- a/keyboards/westfoxtrot/aanzee/keymaps/via/keymap.c +++ b/keyboards/westfoxtrot/aanzee/keymaps/via/keymap.c @@ -34,15 +34,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \ _______,_______,_______, _______, _______,_______ ,_______,_______, _______) }; - - void matrix_init_user(void) { - //user initialization - } - - void matrix_scan_user(void) { - //user matrix - } - - bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; - } diff --git a/keyboards/westfoxtrot/aanzee/rules.mk b/keyboards/westfoxtrot/aanzee/rules.mk index b1f66767d427..8107a9534d34 100644 --- a/keyboards/westfoxtrot/aanzee/rules.mk +++ b/keyboards/westfoxtrot/aanzee/rules.mk @@ -2,19 +2,12 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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,8 +15,5 @@ COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls AUDIO_ENABLE = no -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID diff --git a/keyboards/westfoxtrot/cyclops/config.h b/keyboards/westfoxtrot/cyclops/config.h index 9757c6c21f3d..ce5d3bbbc1e0 100644 --- a/keyboards/westfoxtrot/cyclops/config.h +++ b/keyboards/westfoxtrot/cyclops/config.h @@ -86,54 +86,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -152,26 +104,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/westfoxtrot/cyclops/cyclops.c b/keyboards/westfoxtrot/cyclops/cyclops.c index aea51e6b3496..f28d626e4439 100644 --- a/keyboards/westfoxtrot/cyclops/cyclops.c +++ b/keyboards/westfoxtrot/cyclops/cyclops.c @@ -14,30 +14,3 @@ * along with this program. If not, see . */ #include "cyclops.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} \ No newline at end of file diff --git a/keyboards/westfoxtrot/cyclops/cyclops.h b/keyboards/westfoxtrot/cyclops/cyclops.h index d82c56744cdc..50744929de37 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 . */ -#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/westfoxtrot/cyclops/info.json b/keyboards/westfoxtrot/cyclops/info.json index 1eb77b740e84..0184e74112e9 100644 --- a/keyboards/westfoxtrot/cyclops/info.json +++ b/keyboards/westfoxtrot/cyclops/info.json @@ -2,8 +2,6 @@ "keyboard_name": "cyclops", "url": "", "maintainer": "qmk", - "width": 16.5, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/westfoxtrot/cyclops/keymaps/default/keymap.c b/keyboards/westfoxtrot/cyclops/keymaps/default/keymap.c index c850b9da061b..b693bcebade9 100644 --- a/keyboards/westfoxtrot/cyclops/keymaps/default/keymap.c +++ b/keyboards/westfoxtrot/cyclops/keymaps/default/keymap.c @@ -35,19 +35,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______), }; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/westfoxtrot/cyclops/rules.mk b/keyboards/westfoxtrot/cyclops/rules.mk index 7be886618e8c..aaabf221f9e2 100644 --- a/keyboards/westfoxtrot/cyclops/rules.mk +++ b/keyboards/westfoxtrot/cyclops/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# 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 on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/westfoxtrot/cypher/rev1/info.json b/keyboards/westfoxtrot/cypher/rev1/info.json index ddf4e9d5a81c..31a5369c813d 100644 --- a/keyboards/westfoxtrot/cypher/rev1/info.json +++ b/keyboards/westfoxtrot/cypher/rev1/info.json @@ -1,7 +1,5 @@ { "keyboard_name": "Cypher", - "width": 19.5, - "height": 5, "layouts": { "LAYOUT_ansi": { "layout": [ diff --git a/keyboards/westfoxtrot/cypher/rev1/keymaps/kwer/keymap.c b/keyboards/westfoxtrot/cypher/rev1/keymaps/kwer/keymap.c index 2d7bf2a5e218..c0df375a77b5 100644 --- a/keyboards/westfoxtrot/cypher/rev1/keymaps/kwer/keymap.c +++ b/keyboards/westfoxtrot/cypher/rev1/keymaps/kwer/keymap.c @@ -28,14 +28,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_DL] = LAYOUT_iso ( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, DE_SS, DE_ACUT, KC_BSPC, _______, KC_NLCK, KC_PSCR,KC_PSLS,KC_PAST, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, DE_Z, KC_U, KC_I, KC_O, KC_P, DE_UE, DE_PLUS, KC_P7, KC_P8, KC_P9, KC_PMNS, - SPECIAL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, DE_OE, DE_AE, DE_HASH, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, - KC_LSFT, DE_LESS, DE_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, DE_MINS, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, DE_Z, KC_U, KC_I, KC_O, KC_P, DE_UDIA, DE_PLUS, KC_P7, KC_P8, KC_P9, KC_PMNS, + SPECIAL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, DE_ODIA,DE_ADIA, DE_HASH, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, DE_LABK, DE_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, DE_MINS, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, KC_LCTL, _______, KC_LALT, KC_SPC, _______, KC_RALT, TG(_LE), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_NO ), [_FN] = LAYOUT_iso ( - DE_RING, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, _______, _______, _______, _______, + DE_DEG, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/westfoxtrot/cypher/rev1/rules.mk b/keyboards/westfoxtrot/cypher/rev1/rules.mk index b4d51c2af6a7..f09123151867 100644 --- a/keyboards/westfoxtrot/cypher/rev1/rules.mk +++ b/keyboards/westfoxtrot/cypher/rev1/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# 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 = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/westfoxtrot/cypher/rev5/info.json b/keyboards/westfoxtrot/cypher/rev5/info.json index 50f51651cd6d..80d5960be322 100644 --- a/keyboards/westfoxtrot/cypher/rev5/info.json +++ b/keyboards/westfoxtrot/cypher/rev5/info.json @@ -1,7 +1,5 @@ { "keyboard_name": "Cypher", - "width": 19.5, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/westfoxtrot/cypher/rev5/rules.mk b/keyboards/westfoxtrot/cypher/rev5/rules.mk index 57c2f68995ea..5ec08379da1d 100644 --- a/keyboards/westfoxtrot/cypher/rev5/rules.mk +++ b/keyboards/westfoxtrot/cypher/rev5/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# 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 = yes # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/westfoxtrot/prophet/info.json b/keyboards/westfoxtrot/prophet/info.json index fa4c5a9e5499..a4a16e7d2ead 100644 --- a/keyboards/westfoxtrot/prophet/info.json +++ b/keyboards/westfoxtrot/prophet/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Prophet", "url": "", "maintainer": "westfoxtrot", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/westfoxtrot/prophet/rules.mk b/keyboards/westfoxtrot/prophet/rules.mk index 7079a796619b..719f5bfafd96 100644 --- a/keyboards/westfoxtrot/prophet/rules.mk +++ b/keyboards/westfoxtrot/prophet/rules.mk @@ -7,14 +7,13 @@ BOOTLOADER = stm32-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover -CUSTOM_MATRIX = no # Custom matrix file +SLEEP_LED_ENABLE = yes BACKLIGHT_ENABLE = no RGBLIGHT_ENABLE = no diff --git a/keyboards/whale/sk/v3/info.json b/keyboards/whale/sk/v3/info.json index 66f37f58ad08..b0a07088b132 100644 --- a/keyboards/whale/sk/v3/info.json +++ b/keyboards/whale/sk/v3/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Splite Keyboard v3", "url": "https://github.com/ncwhale/Keyboard_Design/tree/master/Splite-Keyboard-v3", "maintainer": "ncwhale", - "width": 20, - "height": 8, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/whale/sk/v3/rules.mk b/keyboards/whale/sk/v3/rules.mk index cbb4c8dc5c97..89c53108174e 100644 --- a/keyboards/whale/sk/v3/rules.mk +++ b/keyboards/whale/sk/v3/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 SPLIT_KEYBOARD = yes diff --git a/keyboards/wheatfield/blocked65/info.json b/keyboards/wheatfield/blocked65/info.json index 75e15f524b44..aea7165abc0e 100644 --- a/keyboards/wheatfield/blocked65/info.json +++ b/keyboards/wheatfield/blocked65/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Wheatfield blocked 65% keyboard", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_ansi_blocker": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"PrScr", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Del", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"PgUp", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"label":"PgDn", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Fn", "x":10, "y":4, "w":1.25}, {"label":"Alt", "x":11.25, "y":4, "w":1.25}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}] diff --git a/keyboards/wheatfield/blocked65/rules.mk b/keyboards/wheatfield/blocked65/rules.mk index 7151e5e5efe0..bacfedbfe196 100644 --- a/keyboards/wheatfield/blocked65/rules.mk +++ b/keyboards/wheatfield/blocked65/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI controls -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode +AUDIO_ENABLE = no # Audio output LAYOUTS = 65_ansi_blocker diff --git a/keyboards/wheatfield/split75/config.h b/keyboards/wheatfield/split75/config.h index 4646dac463be..63c9492c317e 100644 --- a/keyboards/wheatfield/split75/config.h +++ b/keyboards/wheatfield/split75/config.h @@ -10,6 +10,10 @@ #define MATRIX_ROWS 8 #define MATRIX_COLS 14 +#define LED_NUM_LOCK_PIN D0 +#define LED_CAPS_LOCK_PIN D1 +#define LED_SCROLL_LOCK_PIN D6 + #define RGBLED_NUM 8 #define RGBLIGHT_ANIMATIONS #define RGBLIGHT_SLEEP diff --git a/keyboards/wheatfield/split75/info.json b/keyboards/wheatfield/split75/info.json index 1524f212450e..72c118d4b1c8 100644 --- a/keyboards/wheatfield/split75/info.json +++ b/keyboards/wheatfield/split75/info.json @@ -2,11 +2,9 @@ "keyboard_name": "split75", "url": "", "maintainer": "Michael L. Walker", - "width": 19.25, - "height": 6, "layouts": { "LAYOUT": { "layout": [{"label":"ESC", "x":2.25, "y":0}, {"label":"F1", "x":3.25, "y":0}, {"label":"F2", "x":4.25, "y":0}, {"label":"F3", "x":5.25, "y":0}, {"label":"F4", "x":6.25, "y":0}, {"label":"F5", "x":7.25, "y":0}, {"label":"F6", "x":8.25, "y":0}, {"label":"F7", "x":10.25, "y":0}, {"label":"F8", "x":11.25, "y":0}, {"label":"F9", "x":12.25, "y":0}, {"label":"F10", "x":13.25, "y":0}, {"label":"F11", "x":14.25, "y":0}, {"label":"F12", "x":15.25, "y":0}, {"label":"Prt", "x":16.25, "y":0}, {"label":"Ins", "x":17.25, "y":0}, {"label":"Del", "x":18.25, "y":0}, {"label":"8", "x":0, "y":1}, {"label":"9", "x":1, "y":1}, {"label":"~", "x":2.25, "y":1}, {"label":"!", "x":3.25, "y":1}, {"label":"@", "x":4.25, "y":1}, {"label":"#", "x":5.25, "y":1}, {"label":"$", "x":6.25, "y":1}, {"label":"%", "x":7.25, "y":1}, {"label":"^", "x":8.25, "y":1}, {"label":"&", "x":10.25, "y":1}, {"label":"*", "x":11.25, "y":1}, {"label":"(", "x":12.25, "y":1}, {"label":")", "x":13.25, "y":1}, {"label":"_", "x":14.25, "y":1}, {"label":"+", "x":15.25, "y":1}, {"label":"Backspace", "x":16.25, "y":1, "w":2}, {"label":"Home", "x":18.25, "y":1}, {"label":"6", "x":0, "y":2}, {"label":"7", "x":1, "y":2}, {"label":"Tab", "x":2.25, "y":2, "w":1.5}, {"label":"Q", "x":3.75, "y":2}, {"label":"W", "x":4.75, "y":2}, {"label":"E", "x":5.75, "y":2}, {"label":"R", "x":6.75, "y":2}, {"label":"T", "x":7.75, "y":2}, {"label":"Y", "x":9.75, "y":2}, {"label":"U", "x":10.75, "y":2}, {"label":"I", "x":11.75, "y":2}, {"label":"O", "x":12.75, "y":2}, {"label":"P", "x":13.75, "y":2}, {"label":"{", "x":14.75, "y":2}, {"label":"}", "x":15.75, "y":2}, {"label":"|", "x":16.75, "y":2, "w":1.5}, {"label":"PgUp", "x":18.25, "y":2}, {"label":"4", "x":0, "y":3}, {"label":"5", "x":1, "y":3}, {"label":"Caps Lock", "x":2.25, "y":3, "w":1.75}, {"label":"A", "x":4, "y":3}, {"label":"S", "x":5, "y":3}, {"label":"D", "x":6, "y":3}, {"label":"F", "x":7, "y":3}, {"label":"G", "x":8, "y":3}, {"label":"H", "x":10, "y":3}, {"label":"J", "x":11, "y":3}, {"label":"K", "x":12, "y":3}, {"label":"L", "x":13, "y":3}, {"label":":", "x":14, "y":3}, {"label":"\"", "x":15, "y":3}, {"label":"Enter", "x":16, "y":3, "w":2.25}, {"label":"PgDn", "x":18.25, "y":3}, {"label":"2", "x":0, "y":4}, {"label":"3", "x":1, "y":4}, {"label":"Shift", "x":2.25, "y":4, "w":2.25}, {"label":"Z", "x":4.5, "y":4}, {"label":"X", "x":5.5, "y":4}, {"label":"C", "x":6.5, "y":4}, {"label":"V", "x":7.5, "y":4}, {"label":"B", "x":8.5, "y":4}, {"label":"N", "x":10.5, "y":4}, {"label":"M", "x":11.5, "y":4}, {"label":"<", "x":12.5, "y":4}, {"label":">", "x":13.5, "y":4}, {"label":"?", "x":14.5, "y":4}, {"label":"Shift", "x":15.5, "y":4, "w":1.75}, {"label":"\u2191", "x":17.25, "y":4}, {"label":"End", "x":18.25, "y":4}, {"label":"0", "x":0, "y":5}, {"label":"1", "x":1, "y":5}, {"label":"Ctrl", "x":2.25, "y":5, "w":1.25}, {"label":"Win", "x":3.5, "y":5, "w":1.25}, {"label":"Alt", "x":4.75, "y":5, "w":1.25}, {"x":6, "y":5, "w":2}, {"x":8, "y":5}, {"x":10, "y":5, "w":2.75}, {"label":"Alt", "x":12.75, "y":5, "w":1.25}, {"label":"Fn", "x":14, "y":5}, {"label":"Ctrl", "x":15, "y":5, "w":1.25}, {"label":"\u2190", "x":16.25, "y":5}, {"label":"\u2193", "x":17.25, "y":5}, {"label":"\u2192", "x":18.25, "y":5}] } } -} \ No newline at end of file +} diff --git a/keyboards/wheatfield/split75/rules.mk b/keyboards/wheatfield/split75/rules.mk index a13911595a32..4aed5ab58675 100644 --- a/keyboards/wheatfield/split75/rules.mk +++ b/keyboards/wheatfield/split75/rules.mk @@ -2,19 +2,12 @@ MCU = atmega32a # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 diff --git a/keyboards/wheatfield/split75/split75.c b/keyboards/wheatfield/split75/split75.c index 3ed45629280a..b8a3fe6c28b8 100644 --- a/keyboards/wheatfield/split75/split75.c +++ b/keyboards/wheatfield/split75/split75.c @@ -1,25 +1 @@ #include "split75.h" - -#include "i2c_master.h" - - -void keyboard_pre_init_kb(void) { - led_init_ports(); - keyboard_pre_init_user(); -} - -void led_init_ports(void) { - setPinOutput(NUMLOCK_LED_PIN); - setPinOutput(CAPSLOCK_LED_PIN); - setPinOutput(SCROLLLOCK_LED_PIN); -} - -bool led_update_kb(led_t led_state) { - bool res = led_update_user(led_state); - if(res) { - writePin(NUMLOCK_LED_PIN, led_state.num_lock); - writePin(CAPSLOCK_LED_PIN, led_state.caps_lock); - writePin(SCROLLLOCK_LED_PIN, led_state.scroll_lock); - } - return res; -} diff --git a/keyboards/wheatfield/split75/split75.h b/keyboards/wheatfield/split75/split75.h index 9a84c129d729..93da3e7b83fe 100644 --- a/keyboards/wheatfield/split75/split75.h +++ b/keyboards/wheatfield/split75/split75.h @@ -45,7 +45,3 @@ { K06, K16, K26, K36, K46, KC_NO, KC_NO, KC_NO, K86, K96, KC_NO, K116, K126, K136 }, \ { K07, K17, K27, K37, K47, KC_NO, KC_NO, KC_NO, K87, K97, K107, K117, K127, K137 } \ } - -#define NUMLOCK_LED_PIN D0 -#define CAPSLOCK_LED_PIN D1 -#define SCROLLLOCK_LED_PIN D6 diff --git a/keyboards/whitefox/config.h b/keyboards/whitefox/config.h index 4d7a460d266a..d2b6639a3065 100644 --- a/keyboards/whitefox/config.h +++ b/keyboards/whitefox/config.h @@ -62,6 +62,19 @@ along with this program. If not, see . #define LED_BRIGHTNESS_LO 100 #define LED_BRIGHTNESS_HI 255 +/* LED matrix driver */ +#define LED_DRIVER_ADDR_1 0x74 +#define LED_DRIVER_COUNT 1 +#define DRIVER_LED_TOTAL 71 +#define LED_DISABLE_WHEN_USB_SUSPENDED + +/* i2c (for LED matrix) */ +#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_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 ca338399d31b..000000000000 --- 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/info.json b/keyboards/whitefox/info.json index 715f728104d4..a920d7c12986 100644 --- a/keyboards/whitefox/info.json +++ b/keyboards/whitefox/info.json @@ -1,8 +1,6 @@ { "keyboard_name": "Whitefox", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/whitefox/keymaps/billypython/rules.mk b/keyboards/whitefox/keymaps/billypython/rules.mk index 133c7af542f6..4bb1fdfaf722 100644 --- a/keyboards/whitefox/keymaps/billypython/rules.mk +++ b/keyboards/whitefox/keymaps/billypython/rules.mk @@ -1,5 +1,5 @@ BACKLIGHT_ENABLE = no -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite COMMAND_ENABLE = yes CONSOLE_ENABLE = yes TAP_DANCE_ENABLE = yes diff --git a/keyboards/whitefox/keymaps/kim-kim/keymap.c b/keyboards/whitefox/keymaps/kim-kim/keymap.c index a2540675828c..baaa13687366 100644 --- a/keyboards/whitefox/keymaps/kim-kim/keymap.c +++ b/keyboards/whitefox/keymaps/kim-kim/keymap.c @@ -51,18 +51,3 @@ const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______,_______,_______, _______, _______,_______,_______, KC_HOME,_______,KC_END \ ), }; - -/* Give numbers some descriptive names */ -#define ACTION_LEDS_ALL 1 -#define ACTION_LEDS_GAME 2 - -const uint16_t fn_actions[] = { - [2] = ACTION_FUNCTION(ACTION_LEDS_ALL), - [3] = ACTION_FUNCTION(ACTION_LEDS_GAME), - - [4] = ACTION_USAGE_CONSUMER(0x1B4), - [5] = ACTION_USAGE_CONSUMER(0x196), - [6] = ACTION_USAGE_CONSUMER(0x1A6), - [7] = ACTION_USAGE_CONSUMER(0x1A0), - -}; diff --git a/keyboards/whitefox/keymaps/konstantin/rules.mk b/keyboards/whitefox/keymaps/konstantin/rules.mk index 111c0faba6c5..db238f1d04ea 100644 --- a/keyboards/whitefox/keymaps/konstantin/rules.mk +++ b/keyboards/whitefox/keymaps/konstantin/rules.mk @@ -1,5 +1,5 @@ # Generic features -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite COMMAND_ENABLE = yes CONSOLE_ENABLE = yes EXTRAKEY_ENABLE = yes diff --git a/keyboards/whitefox/keymaps/matt3o/keymap.c b/keyboards/whitefox/keymaps/matt3o/keymap.c index f6987fe1aafc..bb84196684cb 100644 --- a/keyboards/whitefox/keymaps/matt3o/keymap.c +++ b/keyboards/whitefox/keymaps/matt3o/keymap.c @@ -16,6 +16,13 @@ along with this program. If not, see . */ #include QMK_KEYBOARD_H +enum custom_keycodes { + AL_FILE = SAFE_RANGE, + AL_WWW, + AL_HELP, + AL_CMD +}; + const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Layer 0: Default Layer * ,---------------------------------------------------------------. @@ -45,25 +52,44 @@ const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_HOME,KC_PGDN,KC_END \ ), [2] = LAYOUT( \ - KC_SLEP,KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, KC_P9, KC_P0, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_FN2, \ - KC_TRNS,KC_TRNS,KC_FN5 ,KC_FN6 ,KC_TRNS,KC_FN7 ,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PSCR,KC_TRNS,KC_TRNS,KC_TRNS, KC_FN3, \ - KC_CAPS,KC_TRNS,KC_TRNS,KC_TRNS,KC_FN4 ,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,\ + KC_SLEP,KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, KC_P9, KC_P0, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_NO, \ + KC_TRNS,KC_TRNS,AL_WWW ,AL_HELP ,KC_TRNS,AL_CMD ,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PSCR,KC_TRNS,KC_TRNS,KC_TRNS, KC_NO, \ + KC_CAPS,KC_TRNS,KC_TRNS,KC_TRNS,AL_FILE ,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,\ KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_CALC,KC_TRNS,KC_TRNS,KC_TRNS,KC_MAIL,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,\ KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS \ ), }; -/* Give numbers some descriptive names */ -#define ACTION_LEDS_ALL 1 -#define ACTION_LEDS_GAME 2 - -const uint16_t fn_actions[] = { - [2] = ACTION_FUNCTION(ACTION_LEDS_ALL), - [3] = ACTION_FUNCTION(ACTION_LEDS_GAME), - - [4] = ACTION_USAGE_CONSUMER(0x1B4), - [5] = ACTION_USAGE_CONSUMER(0x196), - [6] = ACTION_USAGE_CONSUMER(0x1A6), - [7] = ACTION_USAGE_CONSUMER(0x1A0), - -}; +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case AL_FILE: + if (record->event.pressed) { + host_consumer_send(0x1B4); // AL File Browser + } else { + host_consumer_send(0); + } + return false; + case AL_WWW: + if (record->event.pressed) { + host_consumer_send(0x196); // AL Internet Browser + } else { + host_consumer_send(0); + } + return false; + case AL_HELP: + if (record->event.pressed) { + host_consumer_send(0x1A6); // AL Integrated Help Center + } else { + host_consumer_send(0); + } + return false; + case AL_CMD: + if (record->event.pressed) { + host_consumer_send(0x1A0); // AL Command Line Processor/Run + } else { + host_consumer_send(0); + } + return false; + } + return true; +} diff --git a/keyboards/whitefox/keymaps/mattrighetti/rules.mk b/keyboards/whitefox/keymaps/mattrighetti/rules.mk index ceb1c92ec364..7a421cc9ae5a 100644 --- a/keyboards/whitefox/keymaps/mattrighetti/rules.mk +++ b/keyboards/whitefox/keymaps/mattrighetti/rules.mk @@ -1,4 +1,4 @@ -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite # Keyboard-specific features BACKLIGHT_ENABLE = no diff --git a/keyboards/whitefox/rules.mk b/keyboards/whitefox/rules.mk index 771804369c33..e270ec7ccd43 100644 --- a/keyboards/whitefox/rules.mk +++ b/keyboards/whitefox/rules.mk @@ -6,35 +6,26 @@ BOOTLOADER = kiibohd # Board: it should exist either in /os/hal/boards/ # or /boards -# - BOARD = -# - PJRC_TEENSY_LC for Teensy LC -# - PJRC_TEENSY_3 for Teensy 3.0 -# - PJRC_TEENSY_3_1 for Teensy 3.1 or 3.2 -# - MCHCK_K20 for Infinity KB +# This board was copied from PJRC_TEENSY_3_1. The only difference should be a +# hack to ensure the watchdog has started before trying to disable it, and an +# override to disable restart of USB driver after returning from suspend. BOARD = IC_TEENSY_3_1 # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output -BACKLIGHT_DRIVER = custom -VISUALIZER_ENABLE = yes -LED_DRIVER = is31fl3731c -LED_WIDTH = 16 -LED_HEIGHT = 5 +LED_MATRIX_ENABLE = yes +LED_MATRIX_DRIVER = IS31FL3731 LAYOUTS = 65_ansi 65_ansi_blocker 65_ansi_blocker_split_bs 65_iso 65_iso_blocker 65_iso_blocker_split_bs diff --git a/keyboards/whitefox/visualizer.c b/keyboards/whitefox/visualizer.c deleted file mode 100644 index 3846e9278962..000000000000 --- 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 . - */ - -#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/whitefox/whitefox.c b/keyboards/whitefox/whitefox.c index ea083c6e09ca..99c59f7732a6 100644 --- a/keyboards/whitefox/whitefox.c +++ b/keyboards/whitefox/whitefox.c @@ -16,3 +16,79 @@ along with this program. If not, see . */ #include "whitefox.h" + +#ifdef LED_MATRIX_ENABLE +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { +// The numbers in the comments are the led numbers DXX on the PCB +/* Refer to IS31 manual for these locations + * driver + * | LED address + * | | */ +// 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 + { 0, C1_1 }, { 0, C1_2 }, { 0, C1_3 }, { 0, C1_4 }, { 0, C1_5 }, { 0, C1_6 }, { 0, C1_7 }, { 0, C1_8 }, { 0, C2_1 }, { 0, C2_2 }, { 0, C2_3 }, { 0, C2_4 }, { 0, C2_5 }, { 0, C2_6 }, { 0, C2_7 }, { 0, C2_8 }, +// 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 + { 0, C3_1 }, { 0, C3_2 }, { 0, C3_3 }, { 0, C3_4 }, { 0, C3_5 }, { 0, C3_6 }, { 0, C3_7 }, { 0, C3_8 }, { 0, C4_1 }, { 0, C4_2 }, { 0, C4_3 }, { 0, C4_4 }, { 0, C4_5 }, { 0, C4_6 }, { 0, C4_7 }, +// 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 + { 0, C4_8 }, { 0, C5_1 }, { 0, C5_2 }, { 0, C5_3 }, { 0, C5_4 }, { 0, C5_5 }, { 0, C5_6 }, { 0, C5_7 }, { 0, C5_8 }, { 0, C6_1 }, { 0, C6_2 }, { 0, C6_3 }, { 0, C6_4 }, { 0, C6_5 }, { 0, C6_6 }, +// 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 + { 0, C6_7 }, { 0, C6_8 }, { 0, C7_1 }, { 0, C7_2 }, { 0, C7_3 }, { 0, C7_4 }, { 0, C7_5 }, { 0, C7_6 }, { 0, C7_7 }, { 0, C7_8 }, { 0, C8_1 }, { 0, C8_2 }, { 0, C8_3 }, { 0, C8_4 }, { 0, C8_5 }, +// 62 63 64 65 66 67 68 69 70 71 + { 0, C8_6 }, { 0, C8_7 }, { 0, C8_8 }, { 0, C9_1 }, { 0, C9_2 }, { 0, C9_3 }, { 0, C9_4 }, { 0, C9_5 }, { 0, C9_6 }, { 0, C9_7 }, +}; + +led_config_t g_led_config = { + { + // Key Matrix to LED Index + { 0, 1, 2, 3, 4, 5, 6, 7, 8 }, + { 9, 10, 11, 12, 13, 14, 15, 16, 17 }, + { 18, 19, 20, 21, 22, 23, 24, 25, 26 }, + { 27, 28, 29, 30, 31, 32, 33, 34, 35 }, + { 36, 37, 38, 39, 40, 41, 42, 43, 44 }, + { 45, 46, 47, 48, 49, 50, 51, 52, 53 }, + { 54, 55, 56, 57, 58, 59, 60, 61, 62 }, + { 63, 64, 65, 66, 67, 68, 69, 70, NO_LED }, + }, { + // LED Index to Physical Position + { 0, 0 }, { 15, 0 }, { 30, 0 }, { 45, 0 }, { 60, 0 }, { 75, 0 }, { 90, 0 }, { 105, 0 }, { 119, 0 }, { 134, 0 }, { 149, 0 }, { 164, 0 }, { 179, 0 }, { 194, 0 }, { 209, 0 }, { 224, 0 }, + { 4, 16 }, { 22, 16 }, { 37, 16 }, { 52, 16 }, { 67, 16 }, { 82, 16 }, { 97, 16 }, { 112, 16 }, { 127, 16 }, { 142, 16 }, { 157, 16 }, { 172, 16 }, { 187, 16 }, { 205, 16 }, { 224, 16 }, + { 6, 32 }, { 26, 32 }, { 41, 32 }, { 56, 32 }, { 71, 32 }, { 86, 32 }, { 101, 32 }, { 116, 32 }, { 131, 32 }, { 146, 32 }, { 161, 32 }, { 175, 32 }, { 190, 32 }, { 207, 32 }, { 224, 32 }, + { 2, 48 }, { 19, 48 }, { 34, 48 }, { 49, 48 }, { 63, 48 }, { 78, 48 }, { 93, 48 }, { 108, 48 }, { 123, 48 }, { 138, 48 }, { 153, 48 }, { 168, 48 }, { 189, 48 }, { 209, 48 }, { 224, 48 }, + { 2, 64 }, { 21, 64 }, { 39, 64 }, { 95, 64 }, { 149, 64 }, { 164, 64 }, { 179, 64 }, { 194, 64 }, { 209, 64 }, { 224, 64 } + }, { + // LED Index to Flag + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + } +}; +#endif + +void keyboard_pre_init_kb(void) { +#ifdef LED_MATRIX_ENABLE + // Turn on LED controller + setPinOutput(B16); + writePinHigh(B16); +#endif + keyboard_pre_init_user(); +} + +void matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + +#ifdef LED_MATRIX_ENABLE + /* + * Since K20x is stuck with a 32 byte EEPROM (see tmk_core/common/chibios/eeprom_teensy.c), + * and neither led_matrix_eeconfig.speed or .flags fit in this boundary, just force their values to default on boot. + */ +# if !defined(LED_MATRIX_STARTUP_SPD) +# define LED_MATRIX_STARTUP_SPD UINT8_MAX / 2 +# endif + led_matrix_set_speed(LED_MATRIX_STARTUP_SPD), + led_matrix_set_flags(LED_FLAG_ALL); +#endif + + matrix_init_user(); +} diff --git a/keyboards/wilba_tech/rama_works_kara/info.json b/keyboards/wilba_tech/rama_works_kara/info.json index c064f9c29827..876e3b128744 100644 --- a/keyboards/wilba_tech/rama_works_kara/info.json +++ b/keyboards/wilba_tech/rama_works_kara/info.json @@ -2,11 +2,9 @@ "keyboard_name": "RAMA WORKS KARA", "url": "http://rama.works", "maintainer": "Wilba", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_hhkb": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"|", "x":13, "y":0}, {"label":"~", "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":"Delete", "x":13.5, "y":1, "w":1.5}, {"label":"Control", "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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Fn", "x":14, "y":3}, {"label":"Os", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"Os", "x":12.5, "y":4}] } } -} \ No newline at end of file +} diff --git a/keyboards/wilba_tech/rama_works_kara/rules.mk b/keyboards/wilba_tech/rama_works_kara/rules.mk index 8af9101d35cd..527ad0d681f5 100644 --- a/keyboards/wilba_tech/rama_works_kara/rules.mk +++ b/keyboards/wilba_tech/rama_works_kara/rules.mk @@ -12,18 +12,15 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output CIE1931_CURVE = yes @@ -34,5 +31,5 @@ LAYOUTS = 60_hhkb SRC = keyboards/wilba_tech/wt_main.c \ keyboards/wilba_tech/wt_rgb_backlight.c \ quantum/color.c \ - drivers/issi/is31fl3731.c \ - drivers/avr/i2c_master.c + drivers/led/issi/is31fl3731.c \ + i2c_master.c diff --git a/keyboards/wilba_tech/rama_works_koyu/info.json b/keyboards/wilba_tech/rama_works_koyu/info.json index 377ee0333ef0..089d19c85743 100644 --- a/keyboards/wilba_tech/rama_works_koyu/info.json +++ b/keyboards/wilba_tech/rama_works_koyu/info.json @@ -2,11 +2,9 @@ "keyboard_name": "RAMA WORKS KOYU", "url": "http://rama.works", "maintainer": "Wilba", - "width": 16, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"PrtSc", "x":13, "y":0}, {"label":"Pause", "x":14, "y":0}, {"label":"Num Lock", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Insert", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Home", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"label":"/", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Ctrl", "x":11, "y":4, "w":1.5}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}] } } -} \ No newline at end of file +} diff --git a/keyboards/wilba_tech/rama_works_koyu/rules.mk b/keyboards/wilba_tech/rama_works_koyu/rules.mk index 809ab26d0ed3..0f7497d2e5f7 100644 --- a/keyboards/wilba_tech/rama_works_koyu/rules.mk +++ b/keyboards/wilba_tech/rama_works_koyu/rules.mk @@ -2,13 +2,6 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Do not put the microcontroller into power saving mode @@ -20,27 +13,21 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = 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 -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - CIE1931_CURVE = yes # project specific files SRC = keyboards/wilba_tech/wt_main.c \ keyboards/wilba_tech/wt_rgb_backlight.c \ quantum/color.c \ - drivers/issi/is31fl3731.c \ - drivers/avr/i2c_master.c + drivers/led/issi/is31fl3731.c \ + i2c_master.c diff --git a/keyboards/wilba_tech/rama_works_m10_b/config.h b/keyboards/wilba_tech/rama_works_m10_b/config.h index 083ff35e8f76..d30cf7fe84e4 100644 --- a/keyboards/wilba_tech/rama_works_m10_b/config.h +++ b/keyboards/wilba_tech/rama_works_m10_b/config.h @@ -90,54 +90,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -156,24 +108,4 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - #define DYNAMIC_KEYMAP_LAYER_COUNT 10 diff --git a/keyboards/wilba_tech/rama_works_m10_b/info.json b/keyboards/wilba_tech/rama_works_m10_b/info.json index 22b6506d6e61..cd271120221d 100644 --- a/keyboards/wilba_tech/rama_works_m10_b/info.json +++ b/keyboards/wilba_tech/rama_works_m10_b/info.json @@ -2,8 +2,6 @@ "keyboard_name": "RAMA WORKS M10-B", "url": "http://rama.works", "maintainer": "Wilba", - "width": 3, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/wilba_tech/rama_works_m10_b/keymaps/knops/keymap.c b/keyboards/wilba_tech/rama_works_m10_b/keymaps/knops/keymap.c index b90ca686fbf0..d58606495457 100644 --- a/keyboards/wilba_tech/rama_works_m10_b/keymaps/knops/keymap.c +++ b/keyboards/wilba_tech/rama_works_m10_b/keymaps/knops/keymap.c @@ -23,14 +23,8 @@ void set_led_state(int ledId, bool state) { } -void led_init_ports() -{ -} - void led_set_layer(int layer) { - led_init_ports(); - led_set_layer(0); /*KNOPS_SIMPLELED_STATES*/ 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 d55ad598cad2..c23a4d003cf6 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 . */ -#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_m10_b/rules.mk b/keyboards/wilba_tech/rama_works_m10_b/rules.mk index 8b7a0c7f0be2..f7a09acb8235 100644 --- a/keyboards/wilba_tech/rama_works_m10_b/rules.mk +++ b/keyboards/wilba_tech/rama_works_m10_b/rules.mk @@ -2,29 +2,17 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/wilba_tech/rama_works_m10_c/info.json b/keyboards/wilba_tech/rama_works_m10_c/info.json index 95439938e578..c41f5720c350 100644 --- a/keyboards/wilba_tech/rama_works_m10_c/info.json +++ b/keyboards/wilba_tech/rama_works_m10_c/info.json @@ -2,11 +2,9 @@ "keyboard_name": "RAMA WORKS M10-C", "url": "http://rama.works", "maintainer": "Wilba", - "width": 3, - "height": 4, "layouts": { "LAYOUT": { "layout": [{"label":"0,0", "x":0, "y":0}, {"label":"0,1", "x":1, "y":0}, {"label":"0,2", "x":2, "y":0}, {"label":"0,3", "x":0, "y":1}, {"label":"0,4", "x":1, "y":1}, {"label":"0,5", "x":2, "y":1}, {"label":"0,6", "x":0, "y":2}, {"label":"0,7", "x":1, "y":2}, {"label":"0,8", "x":2, "y":2}, {"label":"0,9", "x":1, "y":3, "w":2}] } } -} \ No newline at end of file +} diff --git a/keyboards/wilba_tech/rama_works_m10_c/rules.mk b/keyboards/wilba_tech/rama_works_m10_c/rules.mk index 9f4cc186edea..5725ff737f97 100644 --- a/keyboards/wilba_tech/rama_works_m10_c/rules.mk +++ b/keyboards/wilba_tech/rama_works_m10_c/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output CIE1931_CURVE = yes @@ -31,5 +28,5 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN SRC = keyboards/wilba_tech/wt_main.c \ keyboards/wilba_tech/wt_rgb_backlight.c \ quantum/color.c \ - drivers/issi/is31fl3731.c \ - drivers/avr/i2c_master.c + drivers/led/issi/is31fl3731.c \ + i2c_master.c diff --git a/keyboards/wilba_tech/rama_works_m50_a/info.json b/keyboards/wilba_tech/rama_works_m50_a/info.json index af32a6943fd4..52a0ae7ca8a1 100644 --- a/keyboards/wilba_tech/rama_works_m50_a/info.json +++ b/keyboards/wilba_tech/rama_works_m50_a/info.json @@ -2,11 +2,9 @@ "keyboard_name": "RAMA WORKS M50-A", "url": "http://rama.works", "maintainer": "Wilba", - "width": 13.25, - "height": 4, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0}, {"x":1.25, "y":0}, {"x":2.25, "y":0}, {"x":3.25, "y":0}, {"x":4.25, "y":0}, {"x":5.25, "y":0}, {"x":6.25, "y":0}, {"x":7.25, "y":0}, {"x":8.25, "y":0}, {"x":9.25, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":0, "y":1}, {"x":1.25, "y":1}, {"x":2.25, "y":1}, {"x":3.25, "y":1}, {"x":4.25, "y":1}, {"x":5.25, "y":1}, {"x":6.25, "y":1}, {"x":7.25, "y":1}, {"x":8.25, "y":1}, {"x":9.25, "y":1}, {"x":10.25, "y":1}, {"x":11.25, "y":1}, {"x":12.25, "y":1}, {"x":0, "y":2}, {"x":1.25, "y":2}, {"x":2.25, "y":2}, {"x":3.25, "y":2}, {"x":4.25, "y":2}, {"x":5.25, "y":2}, {"x":6.25, "y":2}, {"x":7.25, "y":2}, {"x":8.25, "y":2}, {"x":9.25, "y":2}, {"x":10.25, "y":2}, {"x":11.25, "y":2}, {"x":12.25, "y":2}, {"x":0, "y":3}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3, "w":2}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3}] } } -} \ No newline at end of file +} diff --git a/keyboards/wilba_tech/rama_works_m50_a/rules.mk b/keyboards/wilba_tech/rama_works_m50_a/rules.mk index 9f4cc186edea..5725ff737f97 100644 --- a/keyboards/wilba_tech/rama_works_m50_a/rules.mk +++ b/keyboards/wilba_tech/rama_works_m50_a/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output CIE1931_CURVE = yes @@ -31,5 +28,5 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN SRC = keyboards/wilba_tech/wt_main.c \ keyboards/wilba_tech/wt_rgb_backlight.c \ quantum/color.c \ - drivers/issi/is31fl3731.c \ - drivers/avr/i2c_master.c + drivers/led/issi/is31fl3731.c \ + i2c_master.c diff --git a/keyboards/wilba_tech/rama_works_m50_ax/info.json b/keyboards/wilba_tech/rama_works_m50_ax/info.json index 2e1341e94d3b..4574ad8d9860 100644 --- a/keyboards/wilba_tech/rama_works_m50_ax/info.json +++ b/keyboards/wilba_tech/rama_works_m50_ax/info.json @@ -2,11 +2,9 @@ "keyboard_name": "RAMA WORKS M50-AX", "url": "http://rama.works", "maintainer": "Wilba", - "width": 13.25, - "height": 4, "layouts": { "LAYOUT": { "layout": [{"label":"0,0", "x":0, "y":0}, {"label":"0,1", "x":1.25, "y":0}, {"label":"0,2", "x":2.25, "y":0}, {"label":"0,3", "x":3.25, "y":0}, {"label":"0,4", "x":4.25, "y":0}, {"label":"0,5", "x":5.25, "y":0}, {"label":"0,6", "x":6.25, "y":0}, {"label":"0,7", "x":7.25, "y":0}, {"label":"0,8", "x":8.25, "y":0}, {"label":"0,9", "x":9.25, "y":0}, {"label":"0,10", "x":10.25, "y":0}, {"label":"0,11", "x":11.25, "y":0}, {"label":"0,12", "x":12.25, "y":0}, {"label":"1,0", "x":0, "y":1}, {"label":"1,1", "x":1.25, "y":1}, {"label":"1,2", "x":2.25, "y":1}, {"label":"1,3", "x":3.25, "y":1}, {"label":"1,4", "x":4.25, "y":1}, {"label":"1,5", "x":5.25, "y":1}, {"label":"1,6", "x":6.25, "y":1}, {"label":"1,7", "x":7.25, "y":1}, {"label":"1,8", "x":8.25, "y":1}, {"label":"1,9", "x":9.25, "y":1}, {"label":"1,10", "x":10.25, "y":1}, {"label":"1,11", "x":11.25, "y":1}, {"label":"1,12", "x":12.25, "y":1}, {"label":"2,0", "x":0, "y":2}, {"label":"2,1", "x":1.25, "y":2}, {"label":"2,2", "x":2.25, "y":2}, {"label":"2,3", "x":3.25, "y":2}, {"label":"2,4", "x":4.25, "y":2}, {"label":"2,5", "x":5.25, "y":2}, {"label":"2,6", "x":6.25, "y":2}, {"label":"2,7", "x":7.25, "y":2}, {"label":"2,8", "x":8.25, "y":2}, {"label":"2,9", "x":9.25, "y":2}, {"label":"2,10", "x":10.25, "y":2}, {"label":"2,11", "x":11.25, "y":2}, {"label":"2,12", "x":12.25, "y":2}, {"label":"3,0", "x":0, "y":3}, {"label":"3,1", "x":1.25, "y":3}, {"label":"3,2", "x":2.25, "y":3}, {"label":"3,3", "x":3.25, "y":3}, {"label":"3,4", "x":4.25, "y":3}, {"label":"3,5", "x":5.25, "y":3}, {"label":"3,6", "x":6.25, "y":3}, {"label":"3,7", "x":7.25, "y":3}, {"label":"3,8", "x":8.25, "y":3}, {"label":"3,9", "x":9.25, "y":3}, {"label":"3,10", "x":10.25, "y":3}, {"label":"3,11", "x":11.25, "y":3}, {"label":"3,12", "x":12.25, "y":3}] } } -} \ No newline at end of file +} diff --git a/keyboards/wilba_tech/rama_works_m50_ax/rules.mk b/keyboards/wilba_tech/rama_works_m50_ax/rules.mk index 04e644cbc92e..faa383259f46 100644 --- a/keyboards/wilba_tech/rama_works_m50_ax/rules.mk +++ b/keyboards/wilba_tech/rama_works_m50_ax/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output \ No newline at end of file diff --git a/keyboards/wilba_tech/rama_works_m60_a/info.json b/keyboards/wilba_tech/rama_works_m60_a/info.json index cc8918556ed5..733ffac7919c 100644 --- a/keyboards/wilba_tech/rama_works_m60_a/info.json +++ b/keyboards/wilba_tech/rama_works_m60_a/info.json @@ -2,11 +2,9 @@ "keyboard_name": "RAMA WORKS M60-A", "url": "http://rama.works", "maintainer": "Wilba", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_hhkb": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"|", "x":13, "y":0}, {"label":"~", "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":"Delete", "x":13.5, "y":1, "w":1.5}, {"label":"Control", "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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Fn", "x":14, "y":3}, {"label":"Os", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"Os", "x":12.5, "y":4}] } } -} \ No newline at end of file +} diff --git a/keyboards/wilba_tech/rama_works_m60_a/rules.mk b/keyboards/wilba_tech/rama_works_m60_a/rules.mk index 7e76a962a23d..115ce6d71f7e 100644 --- a/keyboards/wilba_tech/rama_works_m60_a/rules.mk +++ b/keyboards/wilba_tech/rama_works_m60_a/rules.mk @@ -2,13 +2,6 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Do not put the microcontroller into power saving mode @@ -20,22 +13,16 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = 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 -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - CIE1931_CURVE = yes LAYOUTS = 60_hhkb @@ -44,5 +31,5 @@ LAYOUTS = 60_hhkb SRC = keyboards/wilba_tech/wt_main.c \ keyboards/wilba_tech/wt_rgb_backlight.c \ quantum/color.c \ - drivers/issi/is31fl3731.c \ - drivers/avr/i2c_master.c + drivers/led/issi/is31fl3731.c \ + i2c_master.c diff --git a/keyboards/wilba_tech/rama_works_m65_b/info.json b/keyboards/wilba_tech/rama_works_m65_b/info.json index fd712fafec43..15955c862237 100644 --- a/keyboards/wilba_tech/rama_works_m65_b/info.json +++ b/keyboards/wilba_tech/rama_works_m65_b/info.json @@ -2,11 +2,9 @@ "keyboard_name": "RAMA WORKS M65-B", "url": "http://rama.works", "maintainer": "Wilba", - "width": 16, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"PrtSc", "x":13, "y":0}, {"label":"Pause", "x":14, "y":0}, {"label":"Num Lock", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Insert", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Home", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"label":"/", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Ctrl", "x":11, "y":4, "w":1.5}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}] } } -} \ No newline at end of file +} diff --git a/keyboards/wilba_tech/rama_works_m65_b/rules.mk b/keyboards/wilba_tech/rama_works_m65_b/rules.mk index 9f4cc186edea..5725ff737f97 100644 --- a/keyboards/wilba_tech/rama_works_m65_b/rules.mk +++ b/keyboards/wilba_tech/rama_works_m65_b/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output CIE1931_CURVE = yes @@ -31,5 +28,5 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN SRC = keyboards/wilba_tech/wt_main.c \ keyboards/wilba_tech/wt_rgb_backlight.c \ quantum/color.c \ - drivers/issi/is31fl3731.c \ - drivers/avr/i2c_master.c + drivers/led/issi/is31fl3731.c \ + i2c_master.c diff --git a/keyboards/wilba_tech/rama_works_m65_bx/info.json b/keyboards/wilba_tech/rama_works_m65_bx/info.json index 2da84248e7f3..8d4a78d6b65e 100644 --- a/keyboards/wilba_tech/rama_works_m65_bx/info.json +++ b/keyboards/wilba_tech/rama_works_m65_bx/info.json @@ -2,11 +2,9 @@ "keyboard_name": "RAMA WORKS M65-BX", "url": "http://rama.works", "maintainer": "Wilba", - "width": 16, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"PrtSc", "x":13, "y":0}, {"label":"Pause", "x":14, "y":0}, {"label":"Num Lock", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Insert", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Home", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"label":"/", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Ctrl", "x":11, "y":4, "w":1.5}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}] } } -} \ No newline at end of file +} diff --git a/keyboards/wilba_tech/rama_works_m65_bx/rules.mk b/keyboards/wilba_tech/rama_works_m65_bx/rules.mk index 9f4cc186edea..5725ff737f97 100644 --- a/keyboards/wilba_tech/rama_works_m65_bx/rules.mk +++ b/keyboards/wilba_tech/rama_works_m65_bx/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output CIE1931_CURVE = yes @@ -31,5 +28,5 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN SRC = keyboards/wilba_tech/wt_main.c \ keyboards/wilba_tech/wt_rgb_backlight.c \ quantum/color.c \ - drivers/issi/is31fl3731.c \ - drivers/avr/i2c_master.c + drivers/led/issi/is31fl3731.c \ + i2c_master.c diff --git a/keyboards/wilba_tech/rama_works_m6_a/info.json b/keyboards/wilba_tech/rama_works_m6_a/info.json index cbc8cffe4b2e..aa68318729c3 100644 --- a/keyboards/wilba_tech/rama_works_m6_a/info.json +++ b/keyboards/wilba_tech/rama_works_m6_a/info.json @@ -2,8 +2,6 @@ "keyboard_name": "RAMA WORKS M6-A", "url": "http://rama.works", "maintainer": "Wilba", - "width": 3, - "height": 2, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/wilba_tech/rama_works_m6_a/keymaps/knops/keymap.c b/keyboards/wilba_tech/rama_works_m6_a/keymaps/knops/keymap.c index d687fe851666..bb2d104ee4d8 100644 --- a/keyboards/wilba_tech/rama_works_m6_a/keymaps/knops/keymap.c +++ b/keyboards/wilba_tech/rama_works_m6_a/keymaps/knops/keymap.c @@ -60,7 +60,7 @@ void set_led_state(int ledId, bool state) } } -void led_init_ports() +void led_init_ports_user(void) { // Switch #1 DDRD |= (1 << 6); @@ -95,7 +95,7 @@ void led_set_layer(int layer) void matrix_init_user(void) { - led_init_ports(); + led_init_ports_user(); led_set_layer(0); 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 d3c7bad3323c..0a38581450c7 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 . */ -#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/wilba_tech/rama_works_m6_a/rules.mk b/keyboards/wilba_tech/rama_works_m6_a/rules.mk index 6a60c5423bc8..5da6531e9460 100644 --- a/keyboards/wilba_tech/rama_works_m6_a/rules.mk +++ b/keyboards/wilba_tech/rama_works_m6_a/rules.mk @@ -2,13 +2,6 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Do not put the microcontroller into power saving mode @@ -19,18 +12,12 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = 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 -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. - -# 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/wilba_tech/rama_works_m6_b/info.json b/keyboards/wilba_tech/rama_works_m6_b/info.json index 66c36126789f..62b8f6d28245 100644 --- a/keyboards/wilba_tech/rama_works_m6_b/info.json +++ b/keyboards/wilba_tech/rama_works_m6_b/info.json @@ -2,8 +2,6 @@ "keyboard_name": "RAMA WORKS M6-B", "url": "http://rama.works", "maintainer": "Wilba", - "width": 3, - "height": 2, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/wilba_tech/rama_works_m6_b/rules.mk b/keyboards/wilba_tech/rama_works_m6_b/rules.mk index 51d1a0c8053a..abd82b8ddf95 100644 --- a/keyboards/wilba_tech/rama_works_m6_b/rules.mk +++ b/keyboards/wilba_tech/rama_works_m6_b/rules.mk @@ -2,13 +2,6 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Do not put the microcontroller into power saving mode @@ -19,27 +12,21 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = 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 -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - CIE1931_CURVE = yes # project specific files SRC = keyboards/wilba_tech/wt_main.c \ keyboards/wilba_tech/wt_rgb_backlight.c \ quantum/color.c \ - drivers/issi/is31fl3218.c \ - drivers/avr/i2c_master.c + drivers/led/issi/is31fl3218.c \ + i2c_master.c diff --git a/keyboards/wilba_tech/rama_works_u80_a/config.h b/keyboards/wilba_tech/rama_works_u80_a/config.h index 91922d7a825b..2bc32a700687 100644 --- a/keyboards/wilba_tech/rama_works_u80_a/config.h +++ b/keyboards/wilba_tech/rama_works_u80_a/config.h @@ -89,54 +89,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -155,26 +107,6 @@ //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - // IS31FL3731 driver #define DRIVER_COUNT 3 #define DRIVER_LED_TOTAL 108 diff --git a/keyboards/wilba_tech/rama_works_u80_a/info.json b/keyboards/wilba_tech/rama_works_u80_a/info.json index d85a26d1bb64..41d0a46be5c9 100644 --- a/keyboards/wilba_tech/rama_works_u80_a/info.json +++ b/keyboards/wilba_tech/rama_works_u80_a/info.json @@ -2,8 +2,6 @@ "keyboard_name": "RAMA WORKS U80-A", "url": "http://rama.works", "maintainer": "Wilba", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT_all": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"@", "x":2, "y":1.5}, {"label":"#", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"Backspace", "x":13, "y":1.5, "w":2}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.25, "y":1.5}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":6.5, "y":2.5}, {"label":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"|", "x":13.5, "y":2.5, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, {"label":"Shift", "x":0, "y":4.5, "w":2.25}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"N", "x":7.25, "y":4.5}, {"label":"M", "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":"Shift", "x":12.25, "y":4.5, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.5}, {"label":"Win", "x":1.5, "y":5.5}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":7}, {"label":"Alt", "x":11, "y":5.5, "w":1.5}, {"label":"Win", "x":12.5, "y":5.5}, {"label":"Ctrl", "x":13.5, "y":5.5, "w":1.5}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}] diff --git a/keyboards/wilba_tech/rama_works_u80_a/rules.mk b/keyboards/wilba_tech/rama_works_u80_a/rules.mk index 735d2a24ae4e..852d2fadc6d8 100644 --- a/keyboards/wilba_tech/rama_works_u80_a/rules.mk +++ b/keyboards/wilba_tech/rama_works_u80_a/rules.mk @@ -2,37 +2,25 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output CIE1931_CURVE = yes # project specific files SRC = keyboards/wilba_tech/wt_main.c \ keyboards/wilba_tech/wt_rgb_backlight.c \ quantum/color.c \ - drivers/issi/is31fl3731.c \ - drivers/avr/i2c_master.c + drivers/led/issi/is31fl3731.c \ + i2c_master.c diff --git a/keyboards/wilba_tech/wt60_a/config.h b/keyboards/wilba_tech/wt60_a/config.h index 82ab424635cc..587c9b9ae797 100644 --- a/keyboards/wilba_tech/wt60_a/config.h +++ b/keyboards/wilba_tech/wt60_a/config.h @@ -89,54 +89,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -155,26 +107,6 @@ //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - // enable the mono backlight #define MONO_BACKLIGHT_ENABLED 1 diff --git a/keyboards/wilba_tech/wt60_a/info.json b/keyboards/wilba_tech/wt60_a/info.json index 09bdcaf05fda..236bb3007c98 100644 --- a/keyboards/wilba_tech/wt60_a/info.json +++ b/keyboards/wilba_tech/wt60_a/info.json @@ -2,8 +2,6 @@ "keyboard_name": "wilba.tech WT60-A", "url": "https://wilba.tech", "maintainer": "Wilba", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_ansi": { "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}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"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}] @@ -12,4 +10,4 @@ "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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"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}] } } -} \ No newline at end of file +} diff --git a/keyboards/wilba_tech/wt60_a/rules.mk b/keyboards/wilba_tech/wt60_a/rules.mk index a0f923a2f3ba..0c45ca13d025 100644 --- a/keyboards/wilba_tech/wt60_a/rules.mk +++ b/keyboards/wilba_tech/wt60_a/rules.mk @@ -2,36 +2,24 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output # project specific files -SRC = drivers/issi/is31fl3736.c \ - drivers/avr/i2c_master.c \ +SRC = drivers/led/issi/is31fl3736.c \ + i2c_master.c \ quantum/color.c \ keyboards/wilba_tech/wt_mono_backlight.c \ keyboards/wilba_tech/wt_main.c diff --git a/keyboards/wilba_tech/wt60_b/info.json b/keyboards/wilba_tech/wt60_b/info.json index 5d01aaa53a3b..ef827d982e66 100644 --- a/keyboards/wilba_tech/wt60_b/info.json +++ b/keyboards/wilba_tech/wt60_b/info.json @@ -2,11 +2,9 @@ "keyboard_name": "wilba.tech WT60-B", "url": "https://wilba.tech", "maintainer": "Wilba", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"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}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.5}, {"x":1.5, "y":4}, {"x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"x":11, "y":4, "w":1.5}, {"x":12.5, "y":4}, {"x":13.5, "y":4, "w":1.5}] } } -} \ No newline at end of file +} diff --git a/keyboards/wilba_tech/wt60_b/rules.mk b/keyboards/wilba_tech/wt60_b/rules.mk index 50faab968ca1..120c819f8edc 100644 --- a/keyboards/wilba_tech/wt60_b/rules.mk +++ b/keyboards/wilba_tech/wt60_b/rules.mk @@ -2,13 +2,6 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Do not put the microcontroller into power saving mode @@ -20,27 +13,21 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = 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 -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - CIE1931_CURVE = yes # project specific files SRC = keyboards/wilba_tech/wt_main.c \ keyboards/wilba_tech/wt_rgb_backlight.c \ quantum/color.c \ - drivers/issi/is31fl3731.c \ - drivers/avr/i2c_master.c + drivers/led/issi/is31fl3731.c \ + i2c_master.c diff --git a/keyboards/wilba_tech/wt60_bx/info.json b/keyboards/wilba_tech/wt60_bx/info.json index 3d85f0d57c77..474d4920a370 100644 --- a/keyboards/wilba_tech/wt60_bx/info.json +++ b/keyboards/wilba_tech/wt60_bx/info.json @@ -2,11 +2,9 @@ "keyboard_name": "wilba.tech WT60-BX", "url": "https://wilba.tech", "maintainer": "Wilba", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"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}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.5}, {"x":1.5, "y":4}, {"x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"x":11, "y":4, "w":1.5}, {"x":12.5, "y":4}, {"x":13.5, "y":4, "w":1.5}] } } -} \ No newline at end of file +} diff --git a/keyboards/wilba_tech/wt60_bx/rules.mk b/keyboards/wilba_tech/wt60_bx/rules.mk index 50faab968ca1..120c819f8edc 100644 --- a/keyboards/wilba_tech/wt60_bx/rules.mk +++ b/keyboards/wilba_tech/wt60_bx/rules.mk @@ -2,13 +2,6 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Do not put the microcontroller into power saving mode @@ -20,27 +13,21 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = 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 -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - CIE1931_CURVE = yes # project specific files SRC = keyboards/wilba_tech/wt_main.c \ keyboards/wilba_tech/wt_rgb_backlight.c \ quantum/color.c \ - drivers/issi/is31fl3731.c \ - drivers/avr/i2c_master.c + drivers/led/issi/is31fl3731.c \ + i2c_master.c diff --git a/keyboards/wilba_tech/wt60_c/info.json b/keyboards/wilba_tech/wt60_c/info.json index 9567d517e820..1bff919466e4 100644 --- a/keyboards/wilba_tech/wt60_c/info.json +++ b/keyboards/wilba_tech/wt60_c/info.json @@ -2,11 +2,9 @@ "keyboard_name": "wilba.tech WT60-C", "url": "https://wilba.tech", "maintainer": "Wilba", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"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}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.5}, {"x":1.5, "y":4}, {"x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"x":11, "y":4, "w":1.5}, {"x":12.5, "y":4}, {"x":13.5, "y":4, "w":1.5}] } } -} \ No newline at end of file +} diff --git a/keyboards/wilba_tech/wt60_c/rules.mk b/keyboards/wilba_tech/wt60_c/rules.mk index 50faab968ca1..120c819f8edc 100644 --- a/keyboards/wilba_tech/wt60_c/rules.mk +++ b/keyboards/wilba_tech/wt60_c/rules.mk @@ -2,13 +2,6 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Do not put the microcontroller into power saving mode @@ -20,27 +13,21 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = 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 -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - CIE1931_CURVE = yes # project specific files SRC = keyboards/wilba_tech/wt_main.c \ keyboards/wilba_tech/wt_rgb_backlight.c \ quantum/color.c \ - drivers/issi/is31fl3731.c \ - drivers/avr/i2c_master.c + drivers/led/issi/is31fl3731.c \ + i2c_master.c diff --git a/keyboards/wilba_tech/wt60_d/config.h b/keyboards/wilba_tech/wt60_d/config.h index 578b3a554a20..e6d367f4b1ce 100644 --- a/keyboards/wilba_tech/wt60_d/config.h +++ b/keyboards/wilba_tech/wt60_d/config.h @@ -89,54 +89,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -154,23 +106,3 @@ //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 diff --git a/keyboards/wilba_tech/wt60_d/info.json b/keyboards/wilba_tech/wt60_d/info.json index d8ae260e51cb..0f7a2723f8e0 100644 --- a/keyboards/wilba_tech/wt60_d/info.json +++ b/keyboards/wilba_tech/wt60_d/info.json @@ -2,11 +2,9 @@ "keyboard_name": "wilba.tech WT60-D", "url": "https://wilba.tech", "maintainer": "Wilba", - "width": 15, - "height": 5, "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}, {"label":"\\", "x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"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}] } } -} \ No newline at end of file +} diff --git a/keyboards/wilba_tech/wt60_d/rules.mk b/keyboards/wilba_tech/wt60_d/rules.mk index 05abcb68fb9f..f7a09acb8235 100644 --- a/keyboards/wilba_tech/wt60_d/rules.mk +++ b/keyboards/wilba_tech/wt60_d/rules.mk @@ -2,29 +2,17 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/wilba_tech/wt60_g/info.json b/keyboards/wilba_tech/wt60_g/info.json index 2b1570d912ed..f4cb1ea8e30e 100644 --- a/keyboards/wilba_tech/wt60_g/info.json +++ b/keyboards/wilba_tech/wt60_g/info.json @@ -2,11 +2,9 @@ "keyboard_name": "wilba.tech WT60-G", "url": "https://wilba.tech", "maintainer": "Wilba", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"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}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}] } } -} \ No newline at end of file +} diff --git a/keyboards/wilba_tech/wt60_g/rules.mk b/keyboards/wilba_tech/wt60_g/rules.mk index 04e644cbc92e..faa383259f46 100644 --- a/keyboards/wilba_tech/wt60_g/rules.mk +++ b/keyboards/wilba_tech/wt60_g/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output \ No newline at end of file diff --git a/keyboards/wilba_tech/wt60_g2/info.json b/keyboards/wilba_tech/wt60_g2/info.json index 4a43cd206790..faae3c49dcf3 100644 --- a/keyboards/wilba_tech/wt60_g2/info.json +++ b/keyboards/wilba_tech/wt60_g2/info.json @@ -2,8 +2,6 @@ "keyboard_name": "wilba.tech WT60-G2", "url": "https://wilba.tech", "maintainer": "Wilba", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"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}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.5}, {"x":1.5, "y":4}, {"x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"x":11, "y":4, "w":1.5}, {"x":12.5, "y":4}, {"x":13.5, "y":4, "w":1.5}] diff --git a/keyboards/wilba_tech/wt60_g2/rules.mk b/keyboards/wilba_tech/wt60_g2/rules.mk index 04e644cbc92e..faa383259f46 100644 --- a/keyboards/wilba_tech/wt60_g2/rules.mk +++ b/keyboards/wilba_tech/wt60_g2/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output \ No newline at end of file diff --git a/keyboards/wilba_tech/wt60_h1/info.json b/keyboards/wilba_tech/wt60_h1/info.json index d179d9e135cf..324dc84fb732 100644 --- a/keyboards/wilba_tech/wt60_h1/info.json +++ b/keyboards/wilba_tech/wt60_h1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "wilba.tech WT60-H1", "url": "https://wilba.tech", "maintainer": "Wilba", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_tsangan_hhkb": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"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}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.5}, {"x":1.5, "y":4}, {"x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"x":11, "y":4, "w":1.5}, {"x":12.5, "y":4}, {"x":13.5, "y":4, "w":1.5}] diff --git a/keyboards/wilba_tech/wt60_h1/rules.mk b/keyboards/wilba_tech/wt60_h1/rules.mk index 7e56f6e1b407..7efe6e918078 100644 --- a/keyboards/wilba_tech/wt60_h1/rules.mk +++ b/keyboards/wilba_tech/wt60_h1/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LAYOUTS = 60_tsangan_hhkb diff --git a/keyboards/wilba_tech/wt60_h2/info.json b/keyboards/wilba_tech/wt60_h2/info.json index f31a62e73b4b..ce5a70862682 100644 --- a/keyboards/wilba_tech/wt60_h2/info.json +++ b/keyboards/wilba_tech/wt60_h2/info.json @@ -2,11 +2,9 @@ "keyboard_name": "wilba.tech WT60-H2", "url": "https://wilba.tech", "maintainer": "Wilba", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"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}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.5}, {"x":1.5, "y":4}, {"x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"x":11, "y":4, "w":1.5}, {"x":12.5, "y":4}, {"x":13.5, "y":4, "w":1.5}] } } -} \ No newline at end of file +} diff --git a/keyboards/wilba_tech/wt60_h2/rules.mk b/keyboards/wilba_tech/wt60_h2/rules.mk index 219b57ecf76f..c3849a52bf1e 100644 --- a/keyboards/wilba_tech/wt60_h2/rules.mk +++ b/keyboards/wilba_tech/wt60_h2/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/wilba_tech/wt60_h3/info.json b/keyboards/wilba_tech/wt60_h3/info.json index 854a288b947a..ce151468439d 100644 --- a/keyboards/wilba_tech/wt60_h3/info.json +++ b/keyboards/wilba_tech/wt60_h3/info.json @@ -2,8 +2,6 @@ "keyboard_name": "wilba.tech WT60-H3", "url": "https://wilba.tech", "maintainer": "Wilba", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.75, "y":1, "w":1.25, "h":2}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.5}, {"x":1.5, "y":4}, {"x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"x":11, "y":4, "w":1.5}, {"x":12.5, "y":4}, {"x":13.5, "y":4, "w":1.5}] diff --git a/keyboards/wilba_tech/wt60_h3/rules.mk b/keyboards/wilba_tech/wt60_h3/rules.mk index 219b57ecf76f..c3849a52bf1e 100644 --- a/keyboards/wilba_tech/wt60_h3/rules.mk +++ b/keyboards/wilba_tech/wt60_h3/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/wilba_tech/wt60_xt/config.h b/keyboards/wilba_tech/wt60_xt/config.h index 5914e59fd14f..43f3f70db80f 100644 --- a/keyboards/wilba_tech/wt60_xt/config.h +++ b/keyboards/wilba_tech/wt60_xt/config.h @@ -92,54 +92,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -157,23 +109,3 @@ //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 diff --git a/keyboards/wilba_tech/wt60_xt/info.json b/keyboards/wilba_tech/wt60_xt/info.json index ed4a2ce01600..ee08d4c6c331 100644 --- a/keyboards/wilba_tech/wt60_xt/info.json +++ b/keyboards/wilba_tech/wt60_xt/info.json @@ -2,8 +2,6 @@ "keyboard_name": "wilba.tech WT60-XT", "url": "https://wilba.tech", "maintainer": "Wilba", - "width": 17.25, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2.25, "y":0}, {"x":3.25, "y":0}, {"x":4.25, "y":0}, {"x":5.25, "y":0}, {"x":6.25, "y":0}, {"x":7.25, "y":0}, {"x":8.25, "y":0}, {"x":9.25, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.25, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2.25, "y":1, "w":1.5}, {"x":3.75, "y":1}, {"x":4.75, "y":1}, {"x":5.75, "y":1}, {"x":6.75, "y":1}, {"x":7.75, "y":1}, {"x":8.75, "y":1}, {"x":9.75, "y":1}, {"x":10.75, "y":1}, {"x":11.75, "y":1}, {"x":12.75, "y":1}, {"x":13.75, "y":1}, {"x":14.75, "y":1}, {"x":15.75, "y":1, "w":1.5}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2.25, "y":2, "w":1.75}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":13, "y":2}, {"x":14, "y":2}, {"x":15, "y":2, "w":2.25}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2.25, "y":3, "w":1.25}, {"x":3.5, "y":3}, {"x":4.5, "y":3}, {"x":5.5, "y":3}, {"x":6.5, "y":3}, {"x":7.5, "y":3}, {"x":8.5, "y":3}, {"x":9.5, "y":3}, {"x":10.5, "y":3}, {"x":11.5, "y":3}, {"x":12.5, "y":3}, {"x":13.5, "y":3}, {"x":14.5, "y":3, "w":1.75}, {"x":16.25, "y":3}, {"x":0, "y":4}, {"x":1, "y":4}, {"x":2.25, "y":4, "w":1.25}, {"x":3.5, "y":4, "w":1.25}, {"x":4.75, "y":4, "w":1.25}, {"x":6, "y":4, "w":6.25}, {"x":12.25, "y":4, "w":1.25}, {"x":13.5, "y":4, "w":1.25}, {"x":14.75, "y":4, "w":1.25}, {"x":16, "y":4, "w":1.25}] diff --git a/keyboards/wilba_tech/wt60_xt/rules.mk b/keyboards/wilba_tech/wt60_xt/rules.mk index 0e522ba5bfa1..d3be1a955dc7 100644 --- a/keyboards/wilba_tech/wt60_xt/rules.mk +++ b/keyboards/wilba_tech/wt60_xt/rules.mk @@ -2,29 +2,17 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = yes # Audio output on port C6 +AUDIO_ENABLE = yes # Audio output diff --git a/keyboards/wilba_tech/wt65_a/config.h b/keyboards/wilba_tech/wt65_a/config.h index 69979d5fd47f..4eca9b3ba0f2 100644 --- a/keyboards/wilba_tech/wt65_a/config.h +++ b/keyboards/wilba_tech/wt65_a/config.h @@ -89,54 +89,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -155,26 +107,6 @@ //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - // enable the mono backlight #define MONO_BACKLIGHT_ENABLED 1 diff --git a/keyboards/wilba_tech/wt65_a/info.json b/keyboards/wilba_tech/wt65_a/info.json index dc474f9d4e80..ee2c95e1df44 100644 --- a/keyboards/wilba_tech/wt65_a/info.json +++ b/keyboards/wilba_tech/wt65_a/info.json @@ -2,11 +2,9 @@ "keyboard_name": "wilba.tech WT65-A", "url": "https://wilba.tech", "maintainer": "Wilba", - "width": 16, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"|", "x":13, "y":0}, {"label":"Del", "x":14, "y":0}, {"label":"Home", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"Backspace", "x":13.5, "y":1, "w":1.5}, {"label":"PgUp", "x":15, "y":1}, {"label":"Control", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"PgDn", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"label":"End", "x":15, "y":3}, {"label":"Fn", "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":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}] } } -} \ No newline at end of file +} diff --git a/keyboards/wilba_tech/wt65_a/rules.mk b/keyboards/wilba_tech/wt65_a/rules.mk index a0f923a2f3ba..0c45ca13d025 100644 --- a/keyboards/wilba_tech/wt65_a/rules.mk +++ b/keyboards/wilba_tech/wt65_a/rules.mk @@ -2,36 +2,24 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output # project specific files -SRC = drivers/issi/is31fl3736.c \ - drivers/avr/i2c_master.c \ +SRC = drivers/led/issi/is31fl3736.c \ + i2c_master.c \ quantum/color.c \ keyboards/wilba_tech/wt_mono_backlight.c \ keyboards/wilba_tech/wt_main.c diff --git a/keyboards/wilba_tech/wt65_b/config.h b/keyboards/wilba_tech/wt65_b/config.h index 15a8dba7e86a..7db0552ce6c8 100644 --- a/keyboards/wilba_tech/wt65_b/config.h +++ b/keyboards/wilba_tech/wt65_b/config.h @@ -89,54 +89,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -155,26 +107,6 @@ //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - // enable the mono backlight #define MONO_BACKLIGHT_ENABLED 1 diff --git a/keyboards/wilba_tech/wt65_b/info.json b/keyboards/wilba_tech/wt65_b/info.json index 618210ad1c15..5a8ddab113bf 100644 --- a/keyboards/wilba_tech/wt65_b/info.json +++ b/keyboards/wilba_tech/wt65_b/info.json @@ -2,11 +2,9 @@ "keyboard_name": "wilba.tech WT65-B", "url": "https://wilba.tech", "maintainer": "Wilba", - "width": 16, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"|", "x":13, "y":0}, {"label":"Del", "x":14, "y":0}, {"label":"Home", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"Backspace", "x":13.5, "y":1, "w":1.5}, {"label":"End", "x":15, "y":1}, {"label":"Control", "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":"PgUp", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Up", "x":14, "y":3}, {"label":"PgDn", "x":15, "y":3}, {"label":"Win", "x":0, "y":4, "w":1.5}, {"label":"Alt", "x":2.25, "y":4, "w":1.5}, {"x":3.75, "y":4, "w":7}, {"label":"Fn", "x":10.75, "y":4, "w":1.5}, {"label":"Left", "x":13, "y":4}, {"label":"Down", "x":14, "y":4}, {"label":"Right", "x":15, "y":4}] } } -} \ No newline at end of file +} diff --git a/keyboards/wilba_tech/wt65_b/rules.mk b/keyboards/wilba_tech/wt65_b/rules.mk index a0f923a2f3ba..0c45ca13d025 100644 --- a/keyboards/wilba_tech/wt65_b/rules.mk +++ b/keyboards/wilba_tech/wt65_b/rules.mk @@ -2,36 +2,24 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output # project specific files -SRC = drivers/issi/is31fl3736.c \ - drivers/avr/i2c_master.c \ +SRC = drivers/led/issi/is31fl3736.c \ + i2c_master.c \ quantum/color.c \ keyboards/wilba_tech/wt_mono_backlight.c \ keyboards/wilba_tech/wt_main.c diff --git a/keyboards/wilba_tech/wt65_f/info.json b/keyboards/wilba_tech/wt65_f/info.json index c319b0f86b5b..b80896288740 100644 --- a/keyboards/wilba_tech/wt65_f/info.json +++ b/keyboards/wilba_tech/wt65_f/info.json @@ -2,8 +2,6 @@ "keyboard_name": "wilba.tech WT65-F", "url": "https://wilba.tech", "maintainer": "Wilba", - "width": 16, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] diff --git a/keyboards/wilba_tech/wt65_f/rules.mk b/keyboards/wilba_tech/wt65_f/rules.mk index 04e644cbc92e..faa383259f46 100644 --- a/keyboards/wilba_tech/wt65_f/rules.mk +++ b/keyboards/wilba_tech/wt65_f/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output \ No newline at end of file diff --git a/keyboards/wilba_tech/wt65_fx/info.json b/keyboards/wilba_tech/wt65_fx/info.json index af2ec54a3631..90bd79fe7670 100644 --- a/keyboards/wilba_tech/wt65_fx/info.json +++ b/keyboards/wilba_tech/wt65_fx/info.json @@ -2,11 +2,9 @@ "keyboard_name": "wilba.tech WT65-FX", "url": "https://wilba.tech", "maintainer": "Wilba", - "width": 16, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] } } -} \ No newline at end of file +} diff --git a/keyboards/wilba_tech/wt65_fx/rules.mk b/keyboards/wilba_tech/wt65_fx/rules.mk index 04e644cbc92e..faa383259f46 100644 --- a/keyboards/wilba_tech/wt65_fx/rules.mk +++ b/keyboards/wilba_tech/wt65_fx/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output \ No newline at end of file diff --git a/keyboards/wilba_tech/wt65_g/info.json b/keyboards/wilba_tech/wt65_g/info.json index c88ac4da1b2f..423512dba17e 100644 --- a/keyboards/wilba_tech/wt65_g/info.json +++ b/keyboards/wilba_tech/wt65_g/info.json @@ -2,11 +2,9 @@ "keyboard_name": "wilba.tech WT65-G", "url": "https://wilba.tech", "maintainer": "Wilba", - "width": 16, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] } } -} \ No newline at end of file +} diff --git a/keyboards/wilba_tech/wt65_g/rules.mk b/keyboards/wilba_tech/wt65_g/rules.mk index 04e644cbc92e..faa383259f46 100644 --- a/keyboards/wilba_tech/wt65_g/rules.mk +++ b/keyboards/wilba_tech/wt65_g/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output \ No newline at end of file diff --git a/keyboards/wilba_tech/wt65_g2/info.json b/keyboards/wilba_tech/wt65_g2/info.json index 6ccc6b24795e..44661ba66c4d 100644 --- a/keyboards/wilba_tech/wt65_g2/info.json +++ b/keyboards/wilba_tech/wt65_g2/info.json @@ -2,8 +2,6 @@ "keyboard_name": "wilba.tech WT65-G2", "url": "https://wilba.tech", "maintainer": "Wilba", - "width": 16, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.5}, {"x":2.25, "y":4, "w":1.5}, {"x":3.75, "y":4, "w":7}, {"x":10.75, "y":4, "w":1.5}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] diff --git a/keyboards/wilba_tech/wt65_g2/rules.mk b/keyboards/wilba_tech/wt65_g2/rules.mk index 04e644cbc92e..faa383259f46 100644 --- a/keyboards/wilba_tech/wt65_g2/rules.mk +++ b/keyboards/wilba_tech/wt65_g2/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output \ No newline at end of file diff --git a/keyboards/wilba_tech/wt65_h1/info.json b/keyboards/wilba_tech/wt65_h1/info.json index 813848d31f02..f7be0ab15830 100644 --- a/keyboards/wilba_tech/wt65_h1/info.json +++ b/keyboards/wilba_tech/wt65_h1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "wilba.tech WT65-H1", "url": "https://wilba.tech", "maintainer": "Wilba", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_ansi_blocker_tsangan": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.5}, {"x":1.5, "y":4}, {"x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"x":11, "y":4, "w":1.5}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] diff --git a/keyboards/wilba_tech/wt65_h1/rules.mk b/keyboards/wilba_tech/wt65_h1/rules.mk index 7dcc056ae1c9..a7b4bb6cfb37 100644 --- a/keyboards/wilba_tech/wt65_h1/rules.mk +++ b/keyboards/wilba_tech/wt65_h1/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LAYOUTS = 65_ansi_blocker_tsangan diff --git a/keyboards/wilba_tech/wt65_xt/info.json b/keyboards/wilba_tech/wt65_xt/info.json index 5f921e6976dd..e0cad3da71a5 100644 --- a/keyboards/wilba_tech/wt65_xt/info.json +++ b/keyboards/wilba_tech/wt65_xt/info.json @@ -2,8 +2,6 @@ "keyboard_name": "wilba.tech WT65-XT", "url": "https://wilba.tech", "maintainer": "Wilba", - "width": 18.5, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2.5, "y":0}, {"x":3.5, "y":0}, {"x":4.5, "y":0}, {"x":5.5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":10.5, "y":0}, {"x":11.5, "y":0}, {"x":12.5, "y":0}, {"x":13.5, "y":0}, {"x":14.5, "y":0}, {"x":15.5, "y":0, "w":2}, {"x":17.5, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2.5, "y":1, "w":1.5}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, {"x":15, "y":1}, {"x":16, "y":1, "w":1.5}, {"x":17.5, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2.5, "y":2, "w":1.25}, {"x":4.25, "y":2}, {"x":5.25, "y":2}, {"x":6.25, "y":2}, {"x":7.25, "y":2}, {"x":8.25, "y":2}, {"x":9.25, "y":2}, {"x":10.25, "y":2}, {"x":11.25, "y":2}, {"x":12.25, "y":2}, {"x":13.25, "y":2}, {"x":14.25, "y":2}, {"x":15.25, "y":2, "w":2.25}, {"x":17.5, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2.5, "y":3, "w":2.25}, {"x":4.75, "y":3}, {"x":5.75, "y":3}, {"x":6.75, "y":3}, {"x":7.75, "y":3}, {"x":8.75, "y":3}, {"x":9.75, "y":3}, {"x":10.75, "y":3}, {"x":11.75, "y":3}, {"x":12.75, "y":3}, {"x":13.75, "y":3}, {"x":14.75, "y":3, "w":1.75}, {"x":16.5, "y":3}, {"x":17.5, "y":3}, {"x":0, "y":4}, {"x":1, "y":4}, {"x":2.5, "y":4, "w":1.5}, {"x":4, "y":4}, {"x":5, "y":4, "w":1.5}, {"x":6.5, "y":4, "w":7}, {"x":13.5, "y":4, "w":1.5}, {"x":15.5, "y":4}, {"x":16.5, "y":4}, {"x":17.5, "y":4}] diff --git a/keyboards/wilba_tech/wt65_xt/rules.mk b/keyboards/wilba_tech/wt65_xt/rules.mk index 04e644cbc92e..faa383259f46 100644 --- a/keyboards/wilba_tech/wt65_xt/rules.mk +++ b/keyboards/wilba_tech/wt65_xt/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output \ No newline at end of file diff --git a/keyboards/wilba_tech/wt65_xtx/info.json b/keyboards/wilba_tech/wt65_xtx/info.json index ae1ccf0ebc87..8a1d4f68d2af 100644 --- a/keyboards/wilba_tech/wt65_xtx/info.json +++ b/keyboards/wilba_tech/wt65_xtx/info.json @@ -2,11 +2,9 @@ "keyboard_name": "wilba.tech WT65-XTX", "url": "https://wilba.tech", "maintainer": "Wilba", - "width": 18.5, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2.5, "y":0}, {"x":3.5, "y":0}, {"x":4.5, "y":0}, {"x":5.5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":10.5, "y":0}, {"x":11.5, "y":0}, {"x":12.5, "y":0}, {"x":13.5, "y":0}, {"x":14.5, "y":0}, {"x":15.5, "y":0}, {"x":16.5, "y":0}, {"x":17.5, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2.5, "y":1, "w":1.5}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, {"x":15, "y":1}, {"x":16, "y":1, "w":1.5}, {"x":17.5, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2.5, "y":2, "w":1.25}, {"x":4.25, "y":2}, {"x":5.25, "y":2}, {"x":6.25, "y":2}, {"x":7.25, "y":2}, {"x":8.25, "y":2}, {"x":9.25, "y":2}, {"x":10.25, "y":2}, {"x":11.25, "y":2}, {"x":12.25, "y":2}, {"x":13.25, "y":2}, {"x":14.25, "y":2}, {"x":15.25, "y":2, "w":2.25}, {"x":17.5, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2.5, "y":3, "w":2.25}, {"x":4.75, "y":3}, {"x":5.75, "y":3}, {"x":6.75, "y":3}, {"x":7.75, "y":3}, {"x":8.75, "y":3}, {"x":9.75, "y":3}, {"x":10.75, "y":3}, {"x":11.75, "y":3}, {"x":12.75, "y":3}, {"x":13.75, "y":3}, {"x":14.75, "y":3, "w":1.75}, {"x":16.5, "y":3}, {"x":17.5, "y":3}, {"x":0, "y":4}, {"x":1, "y":4}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":1.25}, {"x":5, "y":4, "w":1.25}, {"x":6.25, "y":4, "w":6.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}, {"x":15.5, "y":4}, {"x":16.5, "y":4}, {"x":17.5, "y":4}] } } -} \ No newline at end of file +} diff --git a/keyboards/wilba_tech/wt65_xtx/rules.mk b/keyboards/wilba_tech/wt65_xtx/rules.mk index 04e644cbc92e..faa383259f46 100644 --- a/keyboards/wilba_tech/wt65_xtx/rules.mk +++ b/keyboards/wilba_tech/wt65_xtx/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output \ No newline at end of file diff --git a/keyboards/wilba_tech/wt69_a/config.h b/keyboards/wilba_tech/wt69_a/config.h index b96fc2c9fa3c..d8184a8d2e7b 100644 --- a/keyboards/wilba_tech/wt69_a/config.h +++ b/keyboards/wilba_tech/wt69_a/config.h @@ -89,54 +89,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -154,23 +106,3 @@ //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 diff --git a/keyboards/wilba_tech/wt69_a/info.json b/keyboards/wilba_tech/wt69_a/info.json index 8bf5acfc2418..0ed3bbdbb69d 100644 --- a/keyboards/wilba_tech/wt69_a/info.json +++ b/keyboards/wilba_tech/wt69_a/info.json @@ -2,8 +2,6 @@ "keyboard_name": "wilba.tech WT69-A", "url": "https://wilba.tech", "maintainer": "Wilba", - "width": 18.25, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"label":"F1", "x":0, "y":0}, {"label":"F2", "x":1, "y":0}, {"label":"Esc", "x":2.25, "y":0}, {"label":"!", "x":3.25, "y":0}, {"label":"@", "x":4.25, "y":0}, {"label":"#", "x":5.25, "y":0}, {"label":"$", "x":6.25, "y":0}, {"label":"%", "x":7.25, "y":0}, {"label":"^", "x":8.25, "y":0}, {"label":"&", "x":9.25, "y":0}, {"label":"*", "x":10.25, "y":0}, {"label":"(", "x":11.25, "y":0}, {"label":")", "x":12.25, "y":0}, {"label":"_", "x":13.25, "y":0}, {"label":"+", "x":14.25, "y":0}, {"label":"BkSp", "x":15.25, "y":0}, {"label":"BkSp", "x":16.25, "y":0}, {"label":"Home", "x":17.25, "y":0}, {"label":"F3", "x":0, "y":1}, {"label":"F4", "x":1, "y":1}, {"label":"Tab", "x":2.25, "y":1, "w":1.5}, {"label":"Q", "x":3.75, "y":1}, {"label":"W", "x":4.75, "y":1}, {"label":"E", "x":5.75, "y":1}, {"label":"R", "x":6.75, "y":1}, {"label":"T", "x":7.75, "y":1}, {"label":"Y", "x":8.75, "y":1}, {"label":"U", "x":9.75, "y":1}, {"label":"I", "x":10.75, "y":1}, {"label":"O", "x":11.75, "y":1}, {"label":"P", "x":12.75, "y":1}, {"label":"{", "x":13.75, "y":1}, {"label":"}", "x":14.75, "y":1}, {"label":"|", "x":15.75, "y":1, "w":1.5}, {"label":"PgUp", "x":17.25, "y":1}, {"label":"F5", "x":0, "y":2}, {"label":"F6", "x":1, "y":2}, {"label":"Caps Lock", "x":2.25, "y":2, "w":1.75}, {"label":"A", "x":4, "y":2}, {"label":"S", "x":5, "y":2}, {"label":"D", "x":6, "y":2}, {"label":"F", "x":7, "y":2}, {"label":"G", "x":8, "y":2}, {"label":"H", "x":9, "y":2}, {"label":"J", "x":10, "y":2}, {"label":"K", "x":11, "y":2}, {"label":"L", "x":12, "y":2}, {"label":":", "x":13, "y":2}, {"label":"\"", "x":14, "y":2}, {"label":"Enter", "x":15, "y":2, "w":2.25}, {"label":"PgDn", "x":17.25, "y":2}, {"label":"F7", "x":0, "y":3}, {"label":"F8", "x":1, "y":3}, {"label":"Shift", "x":2.25, "y":3, "w":2.25}, {"label":"Z", "x":4.5, "y":3}, {"label":"X", "x":5.5, "y":3}, {"label":"C", "x":6.5, "y":3}, {"label":"V", "x":7.5, "y":3}, {"label":"B", "x":8.5, "y":3}, {"label":"N", "x":9.5, "y":3}, {"label":"M", "x":10.5, "y":3}, {"label":"<", "x":11.5, "y":3}, {"label":">", "x":12.5, "y":3}, {"label":"?", "x":13.5, "y":3}, {"label":"Shift", "x":14.5, "y":3, "w":1.75}, {"label":"\u2191", "x":16.25, "y":3}, {"label":"End", "x":17.25, "y":3}, {"label":"F9", "x":0, "y":4}, {"label":"F10", "x":1, "y":4}, {"label":"Control", "x":2.25, "y":4, "w":1.5}, {"label":"Win", "x":3.75, "y":4}, {"label":"Alt", "x":4.75, "y":4, "w":1.5}, {"x":6.25, "y":4, "w":7}, {"label":"Fn", "x":13.25, "y":4, "w":1.5}, {"label":"\u2190", "x":15.25, "y":4}, {"label":"\u2193", "x":16.25, "y":4}, {"label":"\u2192", "x":17.25, "y":4}] diff --git a/keyboards/wilba_tech/wt69_a/rules.mk b/keyboards/wilba_tech/wt69_a/rules.mk index 98e4472d1888..e9a5597eb5e5 100644 --- a/keyboards/wilba_tech/wt69_a/rules.mk +++ b/keyboards/wilba_tech/wt69_a/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output # project specific files SRC = keyboards/wilba_tech/wt_main.c diff --git a/keyboards/wilba_tech/wt70_jb/info.json b/keyboards/wilba_tech/wt70_jb/info.json index bfe4f68d5874..24769f1043f6 100644 --- a/keyboards/wilba_tech/wt70_jb/info.json +++ b/keyboards/wilba_tech/wt70_jb/info.json @@ -2,11 +2,9 @@ "keyboard_name": "wilba.tech WT70-JB", "url": "https://wilba.tech", "maintainer": "Wilba", - "width": 18.5, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.5, "y":0}, {"x":16.5, "y":0}, {"x":17.5, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15.5, "y":1}, {"x":16.5, "y":1}, {"x":17.5, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":16.5, "y":3}, {"x":0, "y":4, "w":1.5}, {"x":1.5, "y":4}, {"x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"x":11, "y":4, "w":1.5}, {"x":12.5, "y":4}, {"x":13.5, "y":4, "w":1.5}, {"x":15.5, "y":4}, {"x":16.5, "y":4}, {"x":17.5, "y":4}] } } -} \ No newline at end of file +} diff --git a/keyboards/wilba_tech/wt70_jb/rules.mk b/keyboards/wilba_tech/wt70_jb/rules.mk index 3d0797115999..899b51464ae0 100644 --- a/keyboards/wilba_tech/wt70_jb/rules.mk +++ b/keyboards/wilba_tech/wt70_jb/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output \ No newline at end of file diff --git a/keyboards/wilba_tech/wt75_a/config.h b/keyboards/wilba_tech/wt75_a/config.h index 23fa8eb46311..479cdda00d67 100644 --- a/keyboards/wilba_tech/wt75_a/config.h +++ b/keyboards/wilba_tech/wt75_a/config.h @@ -89,54 +89,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -155,26 +107,6 @@ //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - // enable the mono backlight #define MONO_BACKLIGHT_ENABLED 1 diff --git a/keyboards/wilba_tech/wt75_a/info.json b/keyboards/wilba_tech/wt75_a/info.json index a7386a830634..c54371256aad 100644 --- a/keyboards/wilba_tech/wt75_a/info.json +++ b/keyboards/wilba_tech/wt75_a/info.json @@ -2,11 +2,9 @@ "keyboard_name": "wilba.tech WT75-A", "url": "https://wilba.tech", "maintainer": "Wilba", - "width": 16, - "height": 6, "layouts": { "LAYOUT_all": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.5, "y":0}, {"label":"F2", "x":2.5, "y":0}, {"label":"F3", "x":3.5, "y":0}, {"label":"F4", "x":4.5, "y":0}, {"label":"F5", "x":5.75, "y":0}, {"label":"F6", "x":6.75, "y":0}, {"label":"F7", "x":7.75, "y":0}, {"label":"F8", "x":8.75, "y":0}, {"label":"F9", "x":10, "y":0}, {"label":"F10", "x":11, "y":0}, {"label":"F11", "x":12, "y":0}, {"label":"F12", "x":13, "y":0}, {"label":"Del", "x":15, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"label":"Bksp", "x":13, "y":1.25}, {"label":"Bksp", "x":14, "y":1.25}, {"label":"Home", "x":15, "y":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Y", "x":6.5, "y":2.25}, {"label":"U", "x":7.5, "y":2.25}, {"label":"I", "x":8.5, "y":2.25}, {"label":"O", "x":9.5, "y":2.25}, {"label":"P", "x":10.5, "y":2.25}, {"label":"{", "x":11.5, "y":2.25}, {"label":"}", "x":12.5, "y":2.25}, {"label":"|", "x":13.5, "y":2.25, "w":1.5}, {"label":"PgUp", "x":15, "y":2.25}, {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"H", "x":6.75, "y":3.25}, {"label":"J", "x":7.75, "y":3.25}, {"label":"K", "x":8.75, "y":3.25}, {"label":"L", "x":9.75, "y":3.25}, {"label":":", "x":10.75, "y":3.25}, {"label":"\"", "x":11.75, "y":3.25}, {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, {"label":"PgDn", "x":15, "y":3.25}, {"label":"Shift", "x":0, "y":4.25, "w":2.25}, {"label":"Z", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"N", "x":7.25, "y":4.25}, {"label":"M", "x":8.25, "y":4.25}, {"label":"<", "x":9.25, "y":4.25}, {"label":">", "x":10.25, "y":4.25}, {"label":"?", "x":11.25, "y":4.25}, {"label":"Shift", "x":12.25, "y":4.25, "w":1.75}, {"label":"\u2191", "x":14, "y":4.25}, {"label":"End", "x":15, "y":4.25}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, {"label":"6.25U", "x":3.75, "y":5.25, "w":6.25}, {"label":"Alt", "x":10, "y":5.25, "w":1.25}, {"label":"Win", "x":11.25, "y":5.25, "w":1.25}, {"label":"\u2190", "x":13, "y":5.25}, {"label":"\u2193", "x":14, "y":5.25}, {"label":"\u2192", "x":15, "y":5.25}] } } -} \ No newline at end of file +} diff --git a/keyboards/wilba_tech/wt75_a/rules.mk b/keyboards/wilba_tech/wt75_a/rules.mk index a0f923a2f3ba..0c45ca13d025 100644 --- a/keyboards/wilba_tech/wt75_a/rules.mk +++ b/keyboards/wilba_tech/wt75_a/rules.mk @@ -2,36 +2,24 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output # project specific files -SRC = drivers/issi/is31fl3736.c \ - drivers/avr/i2c_master.c \ +SRC = drivers/led/issi/is31fl3736.c \ + i2c_master.c \ quantum/color.c \ keyboards/wilba_tech/wt_mono_backlight.c \ keyboards/wilba_tech/wt_main.c diff --git a/keyboards/wilba_tech/wt75_b/config.h b/keyboards/wilba_tech/wt75_b/config.h index f703d7e0cfd5..e6365c4ef3e0 100644 --- a/keyboards/wilba_tech/wt75_b/config.h +++ b/keyboards/wilba_tech/wt75_b/config.h @@ -89,54 +89,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -155,26 +107,6 @@ //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - // enable the mono backlight #define MONO_BACKLIGHT_ENABLED 1 diff --git a/keyboards/wilba_tech/wt75_b/info.json b/keyboards/wilba_tech/wt75_b/info.json index 3aa604b34186..85b6bbe11eb8 100644 --- a/keyboards/wilba_tech/wt75_b/info.json +++ b/keyboards/wilba_tech/wt75_b/info.json @@ -2,12 +2,9 @@ "keyboard_name": "wilba.tech WT75-B", "url": "https://wilba.tech", "maintainer": "Wilba", - "width": 16, - "height": 6, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.5}, {"x":1.5, "y":2}, {"x":2.5, "y":2}, {"x":3.5, "y":2}, {"x":4.5, "y":2}, {"x":5.5, "y":2}, {"x":6.5, "y":2}, {"x":7.5, "y":2}, {"x":8.5, "y":2}, {"x":9.5, "y":2}, {"x":10.5, "y":2}, {"x":11.5, "y":2}, {"x":12.5, "y":2}, {"x":13.5, "y":2, "w":1.5}, {"x":15, "y":2}, {"x":0, "y":3, "w":1.75}, {"x":1.75, "y":3}, {"x":2.75, "y":3}, {"x":3.75, "y":3}, {"x":4.75, "y":3}, {"x":5.75, "y":3}, {"x":6.75, "y":3}, {"x":7.75, "y":3}, {"x":8.75, "y":3}, {"x":9.75, "y":3}, {"x":10.75, "y":3}, {"x":11.75, "y":3}, {"x":12.75, "y":3, "w":2.25}, {"x":15, "y":3}, {"x":0, "y":4, "w":2.25}, {"x":2.25, "y":4}, {"x":3.25, "y":4}, {"x":4.25, "y":4}, {"x":5.25, "y":4}, {"x":6.25, "y":4}, {"x":7.25, "y":4}, {"x":8.25, "y":4}, {"x":9.25, "y":4}, {"x":10.25, "y":4}, {"x":11.25, "y":4}, {"x":12.25, "y":4, "w":1.75}, {"x":14, "y":4}, {"x":15, "y":4}, {"x":0, "y":5, "w":1.25}, {"x":1.25, "y":5, "w":1.25}, {"x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"x":10, "y":5, "w":1.25}, {"x":11.25, "y":5, "w":1.25}, {"x":13, "y":5}, {"x":14, "y":5}, {"x":15, "y":5}] } } } - diff --git a/keyboards/wilba_tech/wt75_b/rules.mk b/keyboards/wilba_tech/wt75_b/rules.mk index a0f923a2f3ba..0c45ca13d025 100644 --- a/keyboards/wilba_tech/wt75_b/rules.mk +++ b/keyboards/wilba_tech/wt75_b/rules.mk @@ -2,36 +2,24 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output # project specific files -SRC = drivers/issi/is31fl3736.c \ - drivers/avr/i2c_master.c \ +SRC = drivers/led/issi/is31fl3736.c \ + i2c_master.c \ quantum/color.c \ keyboards/wilba_tech/wt_mono_backlight.c \ keyboards/wilba_tech/wt_main.c diff --git a/keyboards/wilba_tech/wt75_c/config.h b/keyboards/wilba_tech/wt75_c/config.h index 00fbfbd8ad87..bbc4757e06e3 100644 --- a/keyboards/wilba_tech/wt75_c/config.h +++ b/keyboards/wilba_tech/wt75_c/config.h @@ -89,54 +89,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -155,26 +107,6 @@ //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - // enable the mono backlight #define MONO_BACKLIGHT_ENABLED 1 diff --git a/keyboards/wilba_tech/wt75_c/info.json b/keyboards/wilba_tech/wt75_c/info.json index bf63b2d00fa7..4cada976d307 100644 --- a/keyboards/wilba_tech/wt75_c/info.json +++ b/keyboards/wilba_tech/wt75_c/info.json @@ -2,11 +2,9 @@ "keyboard_name": "wilba.tech WT75-A", "url": "https://wilba.tech", "maintainer": "Wilba", - "width": 16.25, - "height": 6.5, "layouts": { "LAYOUT_all": { "layout": [{"label":"0", "x":0, "y":0}, {"label":"1", "x":1.25, "y":0}, {"label":"2", "x":2.25, "y":0}, {"label":"3", "x":3.25, "y":0}, {"label":"4", "x":4.25, "y":0}, {"label":"5", "x":5.5, "y":0}, {"label":"6", "x":6.5, "y":0}, {"label":"7", "x":7.5, "y":0}, {"label":"8", "x":8.5, "y":0}, {"label":"9", "x":9.75, "y":0}, {"label":"10", "x":10.75, "y":0}, {"label":"11", "x":11.75, "y":0}, {"label":"12", "x":12.75, "y":0}, {"label":"13", "x":14, "y":0}, {"label":"14", "x":0, "y":1.25}, {"label":"15", "x":1, "y":1.25}, {"label":"16", "x":2, "y":1.25}, {"label":"17", "x":3, "y":1.25}, {"label":"18", "x":4, "y":1.25}, {"label":"19", "x":5, "y":1.25}, {"label":"20", "x":6, "y":1.25}, {"label":"21", "x":7, "y":1.25}, {"label":"22", "x":8, "y":1.25}, {"label":"23", "x":9, "y":1.25}, {"label":"24", "x":10, "y":1.25}, {"label":"25", "x":11, "y":1.25}, {"label":"26", "x":12, "y":1.25}, {"label":"27", "x":13, "y":1.25}, {"label":"28", "x":14, "y":1.25}, {"label":"29", "x":15.25, "y":1.25}, {"label":"30", "x":0, "y":2.25, "w":1.5}, {"label":"31", "x":1.5, "y":2.25}, {"label":"32", "x":2.5, "y":2.25}, {"label":"33", "x":3.5, "y":2.25}, {"label":"34", "x":4.5, "y":2.25}, {"label":"35", "x":5.5, "y":2.25}, {"label":"36", "x":6.5, "y":2.25}, {"label":"37", "x":7.5, "y":2.25}, {"label":"38", "x":8.5, "y":2.25}, {"label":"39", "x":9.5, "y":2.25}, {"label":"40", "x":10.5, "y":2.25}, {"label":"41", "x":11.5, "y":2.25}, {"label":"42", "x":12.5, "y":2.25}, {"label":"43", "x":13.5, "y":2.25, "w":1.5}, {"label":"44", "x":15.25, "y":2.25}, {"label":"45", "x":0, "y":3.25, "w":1.75}, {"label":"46", "x":1.75, "y":3.25}, {"label":"47", "x":2.75, "y":3.25}, {"label":"48", "x":3.75, "y":3.25}, {"label":"49", "x":4.75, "y":3.25}, {"label":"50", "x":5.75, "y":3.25}, {"label":"51", "x":6.75, "y":3.25}, {"label":"52", "x":7.75, "y":3.25}, {"label":"53", "x":8.75, "y":3.25}, {"label":"54", "x":9.75, "y":3.25}, {"label":"55", "x":10.75, "y":3.25}, {"label":"56", "x":11.75, "y":3.25}, {"label":"57", "x":12.75, "y":3.25, "w":2.25}, {"label":"58", "x":15.25, "y":3.25}, {"label":"59", "x":0, "y":4.25, "w":2.25}, {"label":"60", "x":2.25, "y":4.25}, {"label":"61", "x":3.25, "y":4.25}, {"label":"62", "x":4.25, "y":4.25}, {"label":"63", "x":5.25, "y":4.25}, {"label":"64", "x":6.25, "y":4.25}, {"label":"65", "x":7.25, "y":4.25}, {"label":"66", "x":8.25, "y":4.25}, {"label":"67", "x":9.25, "y":4.25}, {"label":"68", "x":10.25, "y":4.25}, {"label":"69", "x":11.25, "y":4.25}, {"label":"70", "x":12.25, "y":4.25, "w":1.75}, {"label":"71", "x":14.25, "y":4.5}, {"label":"72", "x":0, "y":5.25, "w":1.5}, {"label":"73", "x":1.5, "y":5.25}, {"label":"74", "x":2.5, "y":5.25, "w":1.5}, {"label":"75", "x":4, "y":5.25, "w":6}, {"label":"76", "x":10, "y":5.25, "w":1.5}, {"label":"77", "x":11.5, "y":5.25, "w":1.5}, {"label":"78", "x":13.25, "y":5.5}, {"label":"79", "x":14.25, "y":5.5}, {"label":"80", "x":15.25, "y":5.5}] } } -} \ No newline at end of file +} diff --git a/keyboards/wilba_tech/wt75_c/rules.mk b/keyboards/wilba_tech/wt75_c/rules.mk index a0f923a2f3ba..0c45ca13d025 100644 --- a/keyboards/wilba_tech/wt75_c/rules.mk +++ b/keyboards/wilba_tech/wt75_c/rules.mk @@ -2,36 +2,24 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output # project specific files -SRC = drivers/issi/is31fl3736.c \ - drivers/avr/i2c_master.c \ +SRC = drivers/led/issi/is31fl3736.c \ + i2c_master.c \ quantum/color.c \ keyboards/wilba_tech/wt_mono_backlight.c \ keyboards/wilba_tech/wt_main.c diff --git a/keyboards/wilba_tech/wt80_a/config.h b/keyboards/wilba_tech/wt80_a/config.h index 0fe4972fe11e..a09bcaebad48 100644 --- a/keyboards/wilba_tech/wt80_a/config.h +++ b/keyboards/wilba_tech/wt80_a/config.h @@ -89,54 +89,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -155,26 +107,6 @@ //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - // enable the mono backlight #define MONO_BACKLIGHT_ENABLED 1 diff --git a/keyboards/wilba_tech/wt80_a/info.json b/keyboards/wilba_tech/wt80_a/info.json index 6c3ec9e31395..f568dd5d1739 100644 --- a/keyboards/wilba_tech/wt80_a/info.json +++ b/keyboards/wilba_tech/wt80_a/info.json @@ -2,8 +2,6 @@ "keyboard_name": "wilba.tech WT80-A", "url": "https://wilba.tech", "maintainer": "Wilba", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT_all": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"@", "x":2, "y":1.5}, {"label":"#", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"Backspace", "x":13, "y":1.5}, {"x":14, "y":1.5}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.25, "y":1.5}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":6.5, "y":2.5}, {"label":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"|", "x":13.5, "y":2.5, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, {"label":"Shift", "x":0, "y":4.5, "w":2.25}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"N", "x":7.25, "y":4.5}, {"label":"M", "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":"Shift", "x":12.25, "y":4.5, "w":1.75}, {"x":14, "y":4.5}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, {"label":"Win", "x":1.25, "y":5.5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"label":"Alt", "x":10, "y":5.5, "w":1.25}, {"label":"Win", "x":11.25, "y":5.5, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.5, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}] diff --git a/keyboards/wilba_tech/wt80_a/rules.mk b/keyboards/wilba_tech/wt80_a/rules.mk index a0f923a2f3ba..0c45ca13d025 100644 --- a/keyboards/wilba_tech/wt80_a/rules.mk +++ b/keyboards/wilba_tech/wt80_a/rules.mk @@ -2,36 +2,24 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output # project specific files -SRC = drivers/issi/is31fl3736.c \ - drivers/avr/i2c_master.c \ +SRC = drivers/led/issi/is31fl3736.c \ + i2c_master.c \ quantum/color.c \ keyboards/wilba_tech/wt_mono_backlight.c \ keyboards/wilba_tech/wt_main.c diff --git a/keyboards/wilba_tech/wt80_bc/info.json b/keyboards/wilba_tech/wt80_bc/info.json index 34bee2dc1469..79fe198ad13a 100644 --- a/keyboards/wilba_tech/wt80_bc/info.json +++ b/keyboards/wilba_tech/wt80_bc/info.json @@ -2,8 +2,6 @@ "keyboard_name": "wilba.tech WT80-BC", "url": "https://wilba.tech", "maintainer": "Wilba", - "width": 18.25, - "height": 6.25, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":4, "y":1.25}, {"x":5, "y":1.25}, {"x":6, "y":1.25}, {"x":7, "y":1.25}, {"x":8, "y":1.25}, {"x":9, "y":1.25}, {"x":10, "y":1.25}, {"x":11, "y":1.25}, {"x":12, "y":1.25}, {"x":13, "y":1.25, "w":2}, {"x":15.25, "y":1.25}, {"x":16.25, "y":1.25}, {"x":17.25, "y":1.25}, {"x":0, "y":2.25, "w":1.5}, {"x":1.5, "y":2.25}, {"x":2.5, "y":2.25}, {"x":3.5, "y":2.25}, {"x":4.5, "y":2.25}, {"x":5.5, "y":2.25}, {"x":6.5, "y":2.25}, {"x":7.5, "y":2.25}, {"x":8.5, "y":2.25}, {"x":9.5, "y":2.25}, {"x":10.5, "y":2.25}, {"x":11.5, "y":2.25}, {"x":12.5, "y":2.25}, {"x":13.5, "y":2.25, "w":1.5}, {"x":15.25, "y":2.25}, {"x":16.25, "y":2.25}, {"x":17.25, "y":2.25}, {"x":0, "y":3.25, "w":1.75}, {"x":1.75, "y":3.25}, {"x":2.75, "y":3.25}, {"x":3.75, "y":3.25}, {"x":4.75, "y":3.25}, {"x":5.75, "y":3.25}, {"x":6.75, "y":3.25}, {"x":7.75, "y":3.25}, {"x":8.75, "y":3.25}, {"x":9.75, "y":3.25}, {"x":10.75, "y":3.25}, {"x":11.75, "y":3.25}, {"x":12.75, "y":3.25, "w":2.25}, {"x":0, "y":4.25, "w":2.25}, {"x":2.25, "y":4.25}, {"x":3.25, "y":4.25}, {"x":4.25, "y":4.25}, {"x":5.25, "y":4.25}, {"x":6.25, "y":4.25}, {"x":7.25, "y":4.25}, {"x":8.25, "y":4.25}, {"x":9.25, "y":4.25}, {"x":10.25, "y":4.25}, {"x":11.25, "y":4.25}, {"x":12.25, "y":4.25, "w":2.75}, {"x":16.25, "y":4.25}, {"x":0, "y":5.25, "w":1.5}, {"x":1.5, "y":5.25}, {"x":2.5, "y":5.25, "w":1.5}, {"x":4, "y":5.25, "w":7}, {"x":11, "y":5.25, "w":1.5}, {"x":12.5, "y":5.25}, {"x":13.5, "y":5.25, "w":1.5}, {"x":15.25, "y":5.25}, {"x":16.25, "y":5.25}, {"x":17.25, "y":5.25}] diff --git a/keyboards/wilba_tech/wt80_bc/rules.mk b/keyboards/wilba_tech/wt80_bc/rules.mk index 0b6b9254a37f..75a21e462087 100644 --- a/keyboards/wilba_tech/wt80_bc/rules.mk +++ b/keyboards/wilba_tech/wt80_bc/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output # project specific files SRC = keyboards/wilba_tech/wt_main.c diff --git a/keyboards/wilba_tech/wt80_g/info.json b/keyboards/wilba_tech/wt80_g/info.json index 1d407c24f773..36ac36d9ab08 100644 --- a/keyboards/wilba_tech/wt80_g/info.json +++ b/keyboards/wilba_tech/wt80_g/info.json @@ -2,11 +2,9 @@ "keyboard_name": "wilba.tech WT80-G", "url": "https://wilba.tech", "maintainer": "Wilba", - "width": 18.25, - "height": 6.25, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":4, "y":1.25}, {"x":5, "y":1.25}, {"x":6, "y":1.25}, {"x":7, "y":1.25}, {"x":8, "y":1.25}, {"x":9, "y":1.25}, {"x":10, "y":1.25}, {"x":11, "y":1.25}, {"x":12, "y":1.25}, {"x":13, "y":1.25}, {"x":14, "y":1.25}, {"x":15.25, "y":1.25}, {"x":16.25, "y":1.25}, {"x":17.25, "y":1.25}, {"x":0, "y":2.25, "w":1.5}, {"x":1.5, "y":2.25}, {"x":2.5, "y":2.25}, {"x":3.5, "y":2.25}, {"x":4.5, "y":2.25}, {"x":5.5, "y":2.25}, {"x":6.5, "y":2.25}, {"x":7.5, "y":2.25}, {"x":8.5, "y":2.25}, {"x":9.5, "y":2.25}, {"x":10.5, "y":2.25}, {"x":11.5, "y":2.25}, {"x":12.5, "y":2.25}, {"x":13.5, "y":2.25, "w":1.5}, {"x":15.25, "y":2.25}, {"x":16.25, "y":2.25}, {"x":17.25, "y":2.25}, {"x":0, "y":3.25, "w":1.75}, {"x":1.75, "y":3.25}, {"x":2.75, "y":3.25}, {"x":3.75, "y":3.25}, {"x":4.75, "y":3.25}, {"x":5.75, "y":3.25}, {"x":6.75, "y":3.25}, {"x":7.75, "y":3.25}, {"x":8.75, "y":3.25}, {"x":9.75, "y":3.25}, {"x":10.75, "y":3.25}, {"x":11.75, "y":3.25}, {"x":12.75, "y":3.25, "w":2.25}, {"x":0, "y":4.25, "w":1.25}, {"x":1.25, "y":4.25}, {"x":2.25, "y":4.25}, {"x":3.25, "y":4.25}, {"x":4.25, "y":4.25}, {"x":5.25, "y":4.25}, {"x":6.25, "y":4.25}, {"x":7.25, "y":4.25}, {"x":8.25, "y":4.25}, {"x":9.25, "y":4.25}, {"x":10.25, "y":4.25}, {"x":11.25, "y":4.25}, {"x":12.25, "y":4.25, "w":1.75}, {"x":14, "y":4.25}, {"x":16.25, "y":4.25}, {"x":0, "y":5.25, "w":1.25}, {"x":1.25, "y":5.25, "w":1.25}, {"x":2.5, "y":5.25, "w":1.25}, {"x":3.75, "y":5.25, "w":6.25}, {"x":10, "y":5.25, "w":1.25}, {"x":11.25, "y":5.25, "w":1.25}, {"x":12.5, "y":5.25, "w":1.25}, {"x":13.75, "y":5.25, "w":1.25}, {"x":15.25, "y":5.25}, {"x":16.25, "y":5.25}, {"x":17.25, "y":5.25}] } } -} \ No newline at end of file +} diff --git a/keyboards/wilba_tech/wt80_g/rules.mk b/keyboards/wilba_tech/wt80_g/rules.mk index 04e644cbc92e..faa383259f46 100644 --- a/keyboards/wilba_tech/wt80_g/rules.mk +++ b/keyboards/wilba_tech/wt80_g/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output \ No newline at end of file diff --git a/keyboards/wilba_tech/wt8_a/info.json b/keyboards/wilba_tech/wt8_a/info.json index d33663c71532..5358a5869f0a 100644 --- a/keyboards/wilba_tech/wt8_a/info.json +++ b/keyboards/wilba_tech/wt8_a/info.json @@ -2,11 +2,9 @@ "keyboard_name": "wilba.tech WT8-A", "url": "https://wilba.tech", "maintainer": "Wilba", - "width": 4, - "height": 2, "layouts": { "LAYOUT": { "layout": [{"label":"x", "x":0, "y":0}, {"label":"x", "x":1, "y":0}, {"label":"x", "x":2, "y":0}, {"label":"x", "x":3, "y":0}, {"label":"x", "x":0, "y":1}, {"label":"x", "x":1, "y":1}, {"label":"x", "x":2, "y":1}, {"label":"x", "x":3, "y":1}] } } -} \ No newline at end of file +} diff --git a/keyboards/wilba_tech/wt8_a/rules.mk b/keyboards/wilba_tech/wt8_a/rules.mk index 98e4472d1888..e9a5597eb5e5 100644 --- a/keyboards/wilba_tech/wt8_a/rules.mk +++ b/keyboards/wilba_tech/wt8_a/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output # project specific files SRC = keyboards/wilba_tech/wt_main.c diff --git a/keyboards/wilba_tech/wt_main.c b/keyboards/wilba_tech/wt_main.c index d5e136e06b74..a8ad795446d4 100644 --- a/keyboards/wilba_tech/wt_main.c +++ b/keyboards/wilba_tech/wt_main.c @@ -27,7 +27,7 @@ #include "via.h" #ifndef VIA_ENABLE -#include "tmk_core/common/eeprom.h" +#include "eeprom.h" #include "version.h" // for QMK_BUILDDATE used in EEPROM magic #endif diff --git a/keyboards/wilba_tech/wt_mono_backlight.c b/keyboards/wilba_tech/wt_mono_backlight.c index fbc3102e8c4a..5e2fde810c05 100644 --- a/keyboards/wilba_tech/wt_mono_backlight.c +++ b/keyboards/wilba_tech/wt_mono_backlight.c @@ -20,11 +20,11 @@ #include "wt_rgb_backlight_keycodes.h" // reuse these for now #include -#include "drivers/avr/i2c_master.h" +#include "i2c_master.h" #include "progmem.h" #include "quantum/color.h" -#include "tmk_core/common/eeprom.h" +#include "eeprom.h" #include "via.h" // uses EEPROM address, lighting value IDs #define MONO_BACKLIGHT_CONFIG_EEPROM_ADDR (VIA_EEPROM_CUSTOM_CONFIG_ADDR) @@ -33,7 +33,7 @@ #error VIA_EEPROM_CUSTOM_CONFIG_SIZE was not defined to store backlight_config struct #endif -#include "drivers/issi/is31fl3736.h" +#include "drivers/led/issi/is31fl3736.h" #define ISSI_ADDR_DEFAULT 0x50 diff --git a/keyboards/wilba_tech/wt_rgb_backlight.c b/keyboards/wilba_tech/wt_rgb_backlight.c index 306f8186e090..cc34a90c7548 100644 --- a/keyboards/wilba_tech/wt_rgb_backlight.c +++ b/keyboards/wilba_tech/wt_rgb_backlight.c @@ -30,6 +30,7 @@ defined(RGB_BACKLIGHT_NEBULA68) || \ defined(RGB_BACKLIGHT_U80_A) || \ defined(RGB_BACKLIGHT_DAWN60) || \ + defined(RGB_BACKLIGHT_PORTICO) || \ defined(RGB_BACKLIGHT_WT60_B) || \ defined(RGB_BACKLIGHT_WT60_BX) || \ defined(RGB_BACKLIGHT_WT60_C) || \ @@ -53,11 +54,11 @@ #if !defined(RGB_BACKLIGHT_HS60) && !defined(RGB_BACKLIGHT_NK65) && !defined(RGB_BACKLIGHT_NK87) && !defined(RGB_BACKLIGHT_NEBULA68) && !defined(RGB_BACKLIGHT_NEBULA12) && !defined (RGB_BACKLIGHT_KW_MEGA) #include -#include "drivers/avr/i2c_master.h" +#include "i2c_master.h" #else #include #include -#include "drivers/chibios/i2c_master.h" +#include "i2c_master.h" #endif #if defined(RGB_BACKLIGHT_DAWN60) @@ -67,7 +68,7 @@ LED_TYPE g_ws2812_leds[WS2812_LED_TOTAL]; #include "progmem.h" #include "quantum/color.h" -#include "tmk_core/common/eeprom.h" +#include "eeprom.h" #include "via.h" // uses EEPROM address, lighting value IDs #define RGB_BACKLIGHT_CONFIG_EEPROM_ADDR (VIA_EEPROM_CUSTOM_CONFIG_ADDR) @@ -77,23 +78,25 @@ LED_TYPE g_ws2812_leds[WS2812_LED_TOTAL]; #endif #if defined(RGB_BACKLIGHT_M6_B) -#include "drivers/issi/is31fl3218.h" +#include "drivers/led/issi/is31fl3218.h" #define BACKLIGHT_LED_COUNT 6 #elif defined(RGB_BACKLIGHT_HS60) -#include "drivers/issi/is31fl3733.h" +#include "drivers/led/issi/is31fl3733.h" #define BACKLIGHT_LED_COUNT 64 #elif defined(RGB_BACKLIGHT_NK65) || defined(RGB_BACKLIGHT_NEBULA68) || defined(RGB_BACKLIGHT_KW_MEGA) -#include "drivers/issi/is31fl3733.h" +#include "drivers/led/issi/is31fl3733.h" #define BACKLIGHT_LED_COUNT 69 #elif defined(RGB_BACKLIGHT_NK87) -#include "drivers/issi/is31fl3733.h" +#include "drivers/led/issi/is31fl3733.h" #define BACKLIGHT_LED_COUNT 128 #else -#include "drivers/issi/is31fl3731.h" +#include "drivers/led/issi/is31fl3731.h" #if defined(RGB_BACKLIGHT_U80_A) #define BACKLIGHT_LED_COUNT 108 #elif defined(RGB_BACKLIGHT_DAWN60) #define BACKLIGHT_LED_COUNT 84 //64 + 20 +#elif defined(RGB_BACKLIGHT_PORTICO) +#define BACKLIGHT_LED_COUNT 67 //36 + 31 #elif defined(RGB_BACKLIGHT_NEBULA12) #define BACKLIGHT_LED_COUNT 16 #elif defined(RGB_BACKLIGHT_M10_C) @@ -155,7 +158,7 @@ uint32_t g_any_key_hit = 0; // ADDR_2 is not needed. it is here as a dummy #define ISSI_ADDR_1 0x50 -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { /* Refer to IS31 manual for these locations * driver * | R location @@ -236,7 +239,7 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { #define ISSI_ADDR_1 0x50 #define ISSI_ADDR_2 0x52 -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { /* Refer to IS31 manual for these locations * driver * | R location @@ -379,7 +382,7 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { // set to 0 for write, 1 for read (as per I2C protocol) #define ISSI_ADDR_1 0x74 -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { /* Refer to IS31 manual for these locations * driver * | R location @@ -411,7 +414,7 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { #define ISSI_ADDR_2 0x76 // 11101[10] <- SDA #define ISSI_ADDR_3 0x75 // 11101[01] <- SCL -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { /* Refer to IS31 manual for these locations * driver * | R location @@ -538,7 +541,7 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { #define ISSI_ADDR_1 0x74 #define ISSI_ADDR_2 0x76 -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { /* Refer to IS31 manual for these locations * driver * | R location @@ -613,6 +616,91 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { {1, C9_15, C8_15, C6_14}, //D15 {1, C9_16, C7_15, C6_15} //D16 }; +#elif defined(RGB_BACKLIGHT_PORTICO) +// This is a 7-bit address, that gets left-shifted and bit 0 +// set to 0 for write, 1 for read (as per I2C protocol) +#define ISSI_ADDR_1 0x74 +#define ISSI_ADDR_2 0x77 + +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { +/* Refer to IS31 manual for these locations + * driver + * | R location + * | | G location + * | | | B location + * | | | | */ + { 0, C2_1, C3_1, C4_1 }, + { 0, C1_1, C3_2, C4_2 }, + { 0, C1_2, C2_2, C4_3 }, + { 0, C1_3, C2_3, C3_3 }, + { 0, C1_4, C2_4, C3_4 }, + { 0, C1_5, C2_5, C3_5 }, + { 0, C1_6, C2_6, C3_6 }, + { 0, C1_7, C2_7, C3_7 }, + { 0, C1_8, C2_8, C3_8 }, + { 1, C2_1, C3_1, C4_1 }, + { 1, C1_1, C3_2, C4_2 }, + { 1, C1_2, C2_2, C4_3 }, + { 1, C1_3, C2_3, C3_3 }, + { 1, C1_4, C2_4, C3_4 }, + { 1, C1_5, C2_5, C3_5 }, + + { 0, C9_1, C8_1, C7_1 }, + { 0, C9_2, C8_2, C7_2 }, + { 0, C9_3, C8_3, C7_3 }, + { 0, C9_4, C8_4, C7_4 }, + { 0, C9_5, C8_5, C7_5 }, + { 0, C9_6, C8_6, C7_6 }, + { 0, C9_7, C8_7, C6_6 }, + { 0, C9_8, C7_7, C6_7 }, + { 0, C8_8, C7_8, C6_8 }, + { 1, C9_1, C8_1, C7_1 }, + { 1, C9_2, C8_2, C7_2 }, + { 1, C9_3, C8_3, C7_3 }, + { 1, C9_4, C8_4, C7_4 }, + { 1, C9_5, C8_5, C7_5 }, + { 1, C9_6, C8_6, C7_6 }, + + { 0, C1_9, C3_10, C4_10 }, + { 0, C1_10, C2_10, C4_11 }, + { 0, C1_11, C2_11, C3_11 }, + { 0, C1_12, C2_12, C3_12 }, + { 0, C1_13, C2_13, C3_13 }, + { 0, C1_14, C2_14, C3_14 }, + { 0, C1_15, C2_15, C3_15 }, + { 0, C1_16, C2_16, C3_16 }, + { 1, C1_10, C2_10, C4_11 }, + { 1, C1_11, C2_11, C3_11 }, + { 1, C1_12, C2_12, C3_12 }, + { 1, C1_13, C2_13, C3_13 }, + { 1, C1_14, C2_14, C3_14 }, + { 1, C9_7, C8_7, C6_6 }, + + { 0, C2_9, C3_9, C4_9 }, + { 0, C9_12, C8_12, C7_12 }, + { 0, C9_13, C8_13, C7_13 }, + { 0, C9_14, C8_14, C7_14 }, + { 0, C9_15, C8_15, C6_14 }, + { 0, C9_16, C7_15, C6_15 }, + { 1, C2_9, C3_9, C4_9 }, + { 1, C1_9, C3_10, C4_10 }, + { 1, C9_9, C8_9, C7_9 }, + { 1, C9_10, C8_10, C7_10 }, + { 1, C9_11, C8_11, C7_11 }, + { 1, C9_14, C8_14, C7_14 }, + { 1, C1_15, C2_15, C3_15 }, + { 1, C1_16, C2_16, C3_16 }, + + { 0, C9_9, C8_9, C7_9 }, + { 0, C9_10, C8_10, C7_10 }, + { 0, C9_11, C8_11, C7_11 }, + { 0, C8_16, C7_16, C6_16 }, + { 1, C9_12, C8_12, C7_12 }, + { 1, C9_13, C8_13, C7_13 }, + { 1, C9_15, C8_15, C6_14 }, + { 1, C9_16, C7_15, C6_15 }, + { 1, C8_16, C7_16, C6_16 } +}; #elif defined(RGB_BACKLIGHT_M6_B) // Driver has fixed mapping of index to the red, green and blue LEDs #elif defined(RGB_BACKLIGHT_M10_C) @@ -621,7 +709,7 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { #define ISSI_ADDR_1 0x74 #define ISSI_ADDR_2 -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { {0, C1_9, C3_10, C4_10}, // LB1 {0, C1_10, C2_10, C4_11}, // LB2 {0, C1_11, C2_11, C3_11}, // LB3 @@ -641,7 +729,7 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { #define ISSI_ADDR_1 0x74 #define ISSI_ADDR_2 0x76 -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { /* Refer to IS31 manual for these locations * driver * | R location @@ -776,7 +864,8 @@ const Point g_map_led_to_point[BACKLIGHT_LED_COUNT] PROGMEM = { // LC0..LC17 {112,64}, {100,48}, {84,48}, {68,48}, {52,48}, {36,48}, {64,60}, {44,60}, {24,64}, {108,32}, {92,32}, {76,32}, {60,32}, {44,32}, {28,32}, {255,255}, {10,48}, {4,64}, - // LD0..LD17 + // LD0..LD1762 + {124,32}, {140,32}, {156,32}, {172,32}, {188,32}, {214,32}, {180,48}, {202,48}, {224,48}, {116,48}, {132,48}, {148,48}, {164,48}, {255,255}, {160,60}, {180,64}, {208,64}, {255,255} }; @@ -1156,6 +1245,21 @@ const Point g_map_led_to_point_polar[BACKLIGHT_LED_COUNT] PROGMEM = { //11 - 20 {234,255}, {222,255}, {213,255}, {197,255}, {180,255}, {167,255}, {152,255}, {147,255}, {128,255}, {101,255} }; +#elif defined(RGB_BACKLIGHT_PORTICO) +const Point g_map_led_to_point[BACKLIGHT_LED_COUNT] PROGMEM = { + { 0, 0 }, { 15, 0 }, { 30, 0 }, { 45, 0 }, { 60, 0 }, { 75, 0 }, { 90, 0 }, { 105, 0 }, { 120, 0 }, { 135, 0 }, { 150, 0 }, { 165, 0 }, { 180, 0 }, { 203, 0 }, { 224, 0 }, + { 4, 16 }, { 23, 16 }, { 38, 16 }, { 53, 16 }, { 68, 16 }, { 83, 16 }, { 98, 16 }, { 113, 16 }, { 128, 16 }, { 143, 16 }, { 158, 16 }, { 173, 16 }, { 188, 16 }, { 206, 16 }, { 224, 16 }, + { 6, 32 }, { 26, 32 }, { 41, 32 }, { 56, 32 }, { 71, 32 }, { 86, 32 }, { 101, 32 }, { 116, 32 }, { 131, 32 }, { 146, 32 }, { 161, 32 }, { 176, 32 }, { 201, 32 }, { 224, 32 }, + { 9, 48 }, { 34, 48 }, { 49, 48 }, { 64, 48 }, { 79, 48 }, { 94, 48 }, { 109, 48 }, { 124, 48 }, { 139, 48 }, { 154, 48 }, { 169, 48 }, { 189, 48 }, { 210, 48 }, { 224, 48 }, + { 2, 64 }, { 21, 64 }, { 39, 64 }, { 96, 64 }, { 152, 64 }, { 171, 64 }, { 195, 64 }, { 210, 64 }, { 224, 64 }, +}; +const Point g_map_led_to_point_polar[BACKLIGHT_LED_COUNT] PROGMEM = { + { 138, 240 }, { 140, 210 }, { 142, 181 }, { 145, 153 }, { 149, 126 }, { 156, 101 }, { 166, 80 }, { 182, 67 }, { 200, 68 }, { 216, 81 }, { 226, 102 }, { 232, 128 }, { 236, 155 }, { 240, 199 }, { 243, 240 }, //Done through here TM 052421 143PM + { 133, 225 }, { 134, 186 }, { 136, 156 }, { 138, 126 }, { 141, 96 }, { 147, 68 }, { 161, 44 }, { 193, 33 }, { 222, 47 }, { 235, 72 }, { 240, 100 }, { 244, 130 }, { 246, 160 }, { 247, 196 }, { 248, 233 }, //Done through here TM 052421 235PM + { 127, 218 }, { 127, 177 }, { 127, 146 }, { 127, 115 }, { 127, 84 }, { 127, 54 }, { 127, 23 }, { 0, 8 }, { 0, 39 }, { 0, 70 }, { 0, 101 }, { 0, 132 }, { 0, 183 }, { 0, 231 }, + { 121, 215 }, { 119, 164 }, { 117, 134 }, { 114, 104 }, { 109, 76 }, { 98, 50 }, { 71, 34 }, { 37, 41 }, { 22, 65 }, { 15, 93 }, { 11, 122 }, { 8, 162 }, { 7, 205 }, { 6, 233 }, + { 116, 236 }, { 113, 199 }, { 110, 164 }, { 82, 74 }, { 27, 106 }, { 20, 138 }, { 15, 183 }, { 13, 212 }, { 11, 240 } +}; #elif defined(RGB_BACKLIGHT_M50_A) const Point g_map_led_to_point[BACKLIGHT_LED_COUNT] PROGMEM = { // LA0..LA17 @@ -1198,7 +1302,7 @@ void map_led_to_point( uint8_t index, Point *point ) point->x = pgm_read_byte(addr); point->y = pgm_read_byte(addr+1); -#if defined(RGB_BACKLIGHT_M6_B) || defined(RGB_BACKLIGHT_M10_C) || defined(RGB_BACKLIGHT_HS60) || defined(RGB_BACKLIGHT_NK65) || \ +#if defined(RGB_BACKLIGHT_M6_B) || defined(RGB_BACKLIGHT_M10_C) || defined(RGB_BACKLIGHT_HS60) || defined(RGB_BACKLIGHT_NK65) || defined(RGB_BACKLIGHT_PORTICO) || \ defined(RGB_BACKLIGHT_NK87) || defined(RGB_BACKLIGHT_NEBULA68) || defined(RGB_BACKLIGHT_NEBULA12) || defined(RGB_BACKLIGHT_KW_MEGA) return; #endif @@ -1474,6 +1578,14 @@ const uint8_t g_map_row_column_to_led[MATRIX_ROWS][MATRIX_COLS] PROGMEM = { { 31+15, 31+5 , 31+4 , 31+3 , 31+2 , 31+1 , 47+9 , 47+10, 47+11, 47+12, 255 ,47+6 , 47+7 , 15+16}, { 31+16, 31+8 , 31+7 , 255 , 255 , 31+6 , 255 , 255 , 255 , 47+13, 47+14, 47+15, 47+16, 47+8 } }; +#elif defined(RGB_BACKLIGHT_PORTICO) +const uint8_t g_map_row_column_to_led[MATRIX_ROWS][MATRIX_COLS] PROGMEM = { + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }, + { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 }, + { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 255, 43 }, + { 44, 255, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57 }, + { 58, 59, 60, 255, 255, 255, 61, 255, 255, 255, 62, 63, 64, 65, 66 } +}; #elif defined(RGB_BACKLIGHT_M50_A) // LA15, LA14, LA13, LA12, LA11, LA10, LA9, LB1, LB2, LB3, LB4, LB5, LB6 // LA16, LA6, LA5, LA4, LA3, LA2, LA1, LB9, LB10, LB11, LB12, LB13, LB14 @@ -1546,6 +1658,8 @@ void backlight_set_color( int index, uint8_t red, uint8_t green, uint8_t blue ) IS31FL3218_set_color( index, red, green, blue ); #elif defined(RGB_BACKLIGHT_HS60) || defined(RGB_BACKLIGHT_NK65) || defined(RGB_BACKLIGHT_NEBULA68) || defined(RGB_BACKLIGHT_KW_MEGA) IS31FL3733_set_color( index, red, green, blue ); +#elif defined (RGB_BACKLIGHT_PORTICO) + IS31FL3731_set_color( index, red, green, blue ); #elif defined(RGB_BACKLIGHT_NK87) // This is done to avoid indicator LEDs being set if (( index != 63+64-1 ) && ( index != 48+64-1 )) { @@ -1574,6 +1688,11 @@ void backlight_set_color_all( uint8_t red, uint8_t green, uint8_t blue ) for (int i = 0; i < BACKLIGHT_LED_COUNT; i++) { IS31FL3733_set_color(i, red, green, blue); } +#elif defined (RGB_BACKLIGHT_PORTICO) + // This is done to avoid indicator LEDs being set + for (int i = 0; i < BACKLIGHT_LED_COUNT; i++) { + IS31FL3731_set_color(i, red, green, blue); + } #elif defined(RGB_BACKLIGHT_NK87) // This is done to avoid indicator LEDs being set for (int i = 0; i < BACKLIGHT_LED_COUNT; i++) { @@ -1639,6 +1758,7 @@ void backlight_timer_disable(void) { TIMSK3 &= ~_BV(OCIE3A); } + #elif defined(RGB_BACKLIGHT_NEBULA12) //STM32, use GPT with TIM3. Enable in halconf.h static void gpt_backlight_timer_task(GPTDriver *gptp); // Timer setup at 200Khz, callback at 10k ticks = 20Hz @@ -1661,6 +1781,7 @@ void backlight_timer_disable(void) { gptStopTimer(&GPTD3); } + #else //STM32, use GPT with TIM4. Enable in halconf.h static void gpt_backlight_timer_task(GPTDriver *gptp); // Timer setup at 200Khz, callback at 10k ticks = 20Hz @@ -2851,6 +2972,8 @@ void backlight_init_drivers(void) ( index == 54+17 ) ); #elif defined(RGB_BACKLIGHT_M10_C) bool enabled = true; +#elif defined(RGB_BACKLIGHT_PORTICO) + bool enabled = true; #endif // This only caches it for later IS31FL3731_set_led_control_register( index, enabled, enabled, enabled ); @@ -3121,5 +3244,3 @@ void backlight_debug_led( bool state ) } } #endif // defined(RGB_DEBUGGING_ONLY) - - diff --git a/keyboards/wilba_tech/zeal60/info.json b/keyboards/wilba_tech/zeal60/info.json index dac59e64ff47..1ce2a2d9ac37 100644 --- a/keyboards/wilba_tech/zeal60/info.json +++ b/keyboards/wilba_tech/zeal60/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Zeal60", "url": "https://zealpc.net", "maintainer": "Wilba", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_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}] @@ -21,4 +19,4 @@ "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"|", "x":13, "y":0}, {"label":"~", "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":"Delete", "x":13.5, "y":1, "w":1.5}, {"label":"Control", "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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Fn", "x":14, "y":3}, {"label":"Os", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"Os", "x":12.5, "y":4}] } } -} \ No newline at end of file +} diff --git a/keyboards/wilba_tech/zeal60/keymaps/sethBarberee/rules.mk b/keyboards/wilba_tech/zeal60/keymaps/sethBarberee/rules.mk index 21b93c5954f1..0158bb397a99 100644 --- a/keyboards/wilba_tech/zeal60/keymaps/sethBarberee/rules.mk +++ b/keyboards/wilba_tech/zeal60/keymaps/sethBarberee/rules.mk @@ -1,2 +1,2 @@ -BOOTMAGIC_ENABLE = lite +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite VIA_ENABLE = yes diff --git a/keyboards/wilba_tech/zeal60/keymaps/tusing/Makefile b/keyboards/wilba_tech/zeal60/keymaps/tusing/rules.mk similarity index 100% rename from keyboards/wilba_tech/zeal60/keymaps/tusing/Makefile rename to keyboards/wilba_tech/zeal60/keymaps/tusing/rules.mk diff --git a/keyboards/wilba_tech/zeal60/rules.mk b/keyboards/wilba_tech/zeal60/rules.mk index 172ebaf6b5ef..5655b293d9f0 100644 --- a/keyboards/wilba_tech/zeal60/rules.mk +++ b/keyboards/wilba_tech/zeal60/rules.mk @@ -2,13 +2,6 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Do not put the microcontroller into power saving mode @@ -20,22 +13,16 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = 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 -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - CIE1931_CURVE = yes LAYOUTS = 60_ansi 60_iso 60_hhkb 60_ansi_split_bs_rshift @@ -44,5 +31,5 @@ LAYOUTS = 60_ansi 60_iso 60_hhkb 60_ansi_split_bs_rshift SRC = keyboards/wilba_tech/wt_main.c \ keyboards/wilba_tech/wt_rgb_backlight.c \ quantum/color.c \ - drivers/issi/is31fl3731.c \ - drivers/avr/i2c_master.c + drivers/led/issi/is31fl3731.c \ + i2c_master.c diff --git a/keyboards/wilba_tech/zeal65/info.json b/keyboards/wilba_tech/zeal65/info.json index 7d037598f758..3028c6e31b70 100644 --- a/keyboards/wilba_tech/zeal65/info.json +++ b/keyboards/wilba_tech/zeal65/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Zeal65", "url": "https://zealpc.net", "maintainer": "Wilba", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_all": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"|", "x":13, "y":0}, {"label":"Del", "x":14, "y":0}, {"label":"Home", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"Backspace", "x":13.5, "y":1, "w":1.5}, {"label":"PgUp", "x":15, "y":1}, {"label":"Control", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"PgDn", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"label":"End", "x":15, "y":3}, {"label":"Win", "x":0, "y":4, "w":1.5}, {"label":"Alt", "x":1.5, "y":4, "w":1.5}, {"x":3, "y":4, "w":7}, {"label":"Fn2", "x":10, "y":4, "w":1.5}, {"label":"Fn1", "x":11.5, "y":4, "w":1.5}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}] @@ -12,4 +10,4 @@ "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Home", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"PgUp", "x":15, "y":1}, {"label":"Control", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"PgDn", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"label":"End", "x":15, "y":3}, {"label":"Win", "x":0, "y":4, "w":1.5}, {"label":"Alt", "x":1.5, "y":4, "w":1.5}, {"x":3, "y":4, "w":7}, {"label":"Fn2", "x":10, "y":4, "w":1.5}, {"label":"Fn1", "x":11.5, "y":4, "w":1.5}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}] } } -} \ No newline at end of file +} diff --git a/keyboards/wilba_tech/zeal65/rules.mk b/keyboards/wilba_tech/zeal65/rules.mk index fcf3d0763724..13a2dc4593af 100644 --- a/keyboards/wilba_tech/zeal65/rules.mk +++ b/keyboards/wilba_tech/zeal65/rules.mk @@ -2,13 +2,6 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Do not put the microcontroller into power saving mode @@ -20,27 +13,21 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = 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 -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - CIE1931_CURVE = yes # project specific files SRC = keyboards/wilba_tech/wt_main.c \ keyboards/wilba_tech/wt_rgb_backlight.c \ quantum/color.c \ - drivers/issi/is31fl3731.c \ - drivers/avr/i2c_master.c + drivers/led/issi/is31fl3731.c \ + i2c_master.c diff --git a/keyboards/wings42/config.h b/keyboards/wings42/config.h new file mode 100644 index 000000000000..cfb6bf4ffccd --- /dev/null +++ b/keyboards/wings42/config.h @@ -0,0 +1,21 @@ +/* +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" diff --git a/keyboards/wings42/readme.md b/keyboards/wings42/readme.md new file mode 100644 index 000000000000..fc71d58ab696 --- /dev/null +++ b/keyboards/wings42/readme.md @@ -0,0 +1,19 @@ +# wings42 + +![wings42](https://raw.githubusercontent.com/yfuku/wings42/main/images/wings42.jpg) + +A split keyboard with 3x6 vertically staggered keys and 3 thumb keys. + +* Keyboard Maintainer: [yfuku](https://github.com/yfuku) +* Hardware Supported: wings42 PCB, Pro Micro +* Hardware Availability: https://yfuku.booth.pm/ + +Make example for this keyboard (after setting up your build environment): + + make wings42:default + +Flashing example for this keyboard: + + make wings42:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/wings42/rev1/config.h b/keyboards/wings42/rev1/config.h new file mode 100644 index 000000000000..cfb427492153 --- /dev/null +++ b/keyboards/wings42/rev1/config.h @@ -0,0 +1,152 @@ +/* +Copyright 2021 yfuku + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x5946 // YF +#define PRODUCT_ID 0x0003 +#define DEVICE_VER 0x0001 +#define MANUFACTURER yfuku +#define PRODUCT wings42 + +/* key matrix size */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 6 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS { D4, C6, D7, E6 } +#define MATRIX_COL_PINS { B3, B1, F7, F6, F5, F4 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +#define SOFT_SERIAL_PIN D2 // or D1, D2, D3, E6 + +//#define LED_NUM_LOCK_PIN B0 +//#define LED_CAPS_LOCK_PIN B1 +//#define LED_SCROLL_LOCK_PIN B2 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +//#define RGB_DI_PIN E2 +//#ifdef RGB_DI_PIN +//# define RGBLED_NUM 16 +//# define RGBLIGHT_HUE_STEP 8 +//# define RGBLIGHT_SAT_STEP 8 +//# define RGBLIGHT_VAL_STEP 8 +//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +//# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +//#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/wings42/rev1/keymaps/default/keymap.c b/keyboards/wings42/rev1/keymaps/default/keymap.c new file mode 100644 index 000000000000..442ba5ed9f21 --- /dev/null +++ b/keyboards/wings42/rev1/keymaps/default/keymap.c @@ -0,0 +1,81 @@ +/* Copyright 2021 yfuku + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layer_number { + _QWERTY = 0, + _RAISE, + _LOWER, + _ADJUST, +}; + +#define KC_G_TAB LGUI_T(KC_TAB) +#define KC_G_BS LGUI_T(KC_BSPC) +#define KC_L_SPC LT(_LOWER, KC_SPC) +#define KC_R_ENT LT(_RAISE, KC_ENT) +#define KC_S_JA LSFT_T(KC_LANG1) +#define KC_S_EN LSFT_T(KC_LANG2) +#define KC_A_DEL ALT_T(KC_DEL) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QWERTY] = LAYOUT_split_3x6_3( + //,--------+--------+---------+--------+---------+--------. ,--------+---------+--------+---------+--------+--------. + KC_ESC , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_MINS, + //|--------+--------+---------+--------+---------+--------| |--------+---------+--------+---------+--------+--------| + KC_G_TAB, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_G_BS , + //|--------+--------+---------+--------+---------+--------| |--------+---------+--------+---------+--------+--------| + KC_LCTL, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RCTL, + //`--------+--------+---------+--------+---------+--------/ \--------+---------+--------+---------+--------+--------' + KC_A_DEL, KC_S_EN ,KC_L_SPC, KC_R_ENT, KC_S_JA , KC_A_DEL + // `+--------+---------+--------' `--------+---------+--------+' + ), + + [_RAISE] = LAYOUT_split_3x6_3( + //,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------. + _______, KC_BSLS, KC_CIRC, KC_EXLM, KC_AMPR, KC_PIPE, KC_AT , KC_EQL , KC_PLUS, KC_ASTR, KC_PERC, KC_MINS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_LPRN, KC_HASH, KC_DLR , KC_DQT , KC_QUOT, KC_TILD, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, KC_GRV , KC_RPRN, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, _______, _______, _______, KC_LCBR, KC_LBRC, KC_RBRC, KC_RCBR, _______, _______, _______, _______, + //`--------+--------+--------+--------+--------+--------/ \--------+--------+--------+--------+--------+--------' + _______, _______, _______, _______, _______, RESET + // `+--------+--------+--------' `--------+---------+--------+' + ), + + [_LOWER] = LAYOUT_split_3x6_3( + //,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------. + KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , _______, KC_EQL , KC_PLUS, KC_ASTR, KC_PERC, KC_MINS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , _______, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , _______, _______, KC_COMM, KC_DOT , KC_SLSH, _______, + //`--------+--------+--------+--------+--------+--------/ \--------+--------+--------+--------+--------+--------' + RESET , _______, _______, _______, _______, _______ + // `+--------+--------+--------' `--------+--------+--------+' + ), + + [_ADJUST] = LAYOUT_split_3x6_3( + //,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------. + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //`--------+--------+--------+--------+--------+--------/ \--------+--------+--------+--------+--------+--------' + _______, _______, _______, _______, _______, _______ + // `+--------+--------+--------' `--------+--------+--------+' + ), +}; diff --git a/keyboards/wings42/rev1/keymaps/default/readme.md b/keyboards/wings42/rev1/keymaps/default/readme.md new file mode 100644 index 000000000000..d99098ad0c37 --- /dev/null +++ b/keyboards/wings42/rev1/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for wings42 diff --git a/keyboards/wings42/rev1/keymaps/via/keymap.c b/keyboards/wings42/rev1/keymaps/via/keymap.c new file mode 100644 index 000000000000..442ba5ed9f21 --- /dev/null +++ b/keyboards/wings42/rev1/keymaps/via/keymap.c @@ -0,0 +1,81 @@ +/* Copyright 2021 yfuku + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layer_number { + _QWERTY = 0, + _RAISE, + _LOWER, + _ADJUST, +}; + +#define KC_G_TAB LGUI_T(KC_TAB) +#define KC_G_BS LGUI_T(KC_BSPC) +#define KC_L_SPC LT(_LOWER, KC_SPC) +#define KC_R_ENT LT(_RAISE, KC_ENT) +#define KC_S_JA LSFT_T(KC_LANG1) +#define KC_S_EN LSFT_T(KC_LANG2) +#define KC_A_DEL ALT_T(KC_DEL) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QWERTY] = LAYOUT_split_3x6_3( + //,--------+--------+---------+--------+---------+--------. ,--------+---------+--------+---------+--------+--------. + KC_ESC , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_MINS, + //|--------+--------+---------+--------+---------+--------| |--------+---------+--------+---------+--------+--------| + KC_G_TAB, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_G_BS , + //|--------+--------+---------+--------+---------+--------| |--------+---------+--------+---------+--------+--------| + KC_LCTL, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RCTL, + //`--------+--------+---------+--------+---------+--------/ \--------+---------+--------+---------+--------+--------' + KC_A_DEL, KC_S_EN ,KC_L_SPC, KC_R_ENT, KC_S_JA , KC_A_DEL + // `+--------+---------+--------' `--------+---------+--------+' + ), + + [_RAISE] = LAYOUT_split_3x6_3( + //,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------. + _______, KC_BSLS, KC_CIRC, KC_EXLM, KC_AMPR, KC_PIPE, KC_AT , KC_EQL , KC_PLUS, KC_ASTR, KC_PERC, KC_MINS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_LPRN, KC_HASH, KC_DLR , KC_DQT , KC_QUOT, KC_TILD, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, KC_GRV , KC_RPRN, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, _______, _______, _______, KC_LCBR, KC_LBRC, KC_RBRC, KC_RCBR, _______, _______, _______, _______, + //`--------+--------+--------+--------+--------+--------/ \--------+--------+--------+--------+--------+--------' + _______, _______, _______, _______, _______, RESET + // `+--------+--------+--------' `--------+---------+--------+' + ), + + [_LOWER] = LAYOUT_split_3x6_3( + //,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------. + KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , _______, KC_EQL , KC_PLUS, KC_ASTR, KC_PERC, KC_MINS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , _______, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , _______, _______, KC_COMM, KC_DOT , KC_SLSH, _______, + //`--------+--------+--------+--------+--------+--------/ \--------+--------+--------+--------+--------+--------' + RESET , _______, _______, _______, _______, _______ + // `+--------+--------+--------' `--------+--------+--------+' + ), + + [_ADJUST] = LAYOUT_split_3x6_3( + //,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------. + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //`--------+--------+--------+--------+--------+--------/ \--------+--------+--------+--------+--------+--------' + _______, _______, _______, _______, _______, _______ + // `+--------+--------+--------' `--------+--------+--------+' + ), +}; diff --git a/keyboards/wings42/rev1/keymaps/via/rules.mk b/keyboards/wings42/rev1/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/wings42/rev1/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/wings42/rev1/readme.md b/keyboards/wings42/rev1/readme.md new file mode 100644 index 000000000000..158372feb4cb --- /dev/null +++ b/keyboards/wings42/rev1/readme.md @@ -0,0 +1,21 @@ +# wings42 + +![wings42](https://raw.githubusercontent.com/yfuku/wings42/main/images/wings42.jpg) + +A split keyboard with 3x6 vertically staggered keys and 3 thumb keys. + +* Keyboard Maintainer: [yfuku](https://github.com/yfuku) +* Hardware Supported: wings42 PCB, Pro Micro +* Hardware Availability: https://yfuku.booth.pm/ + +Make example for this keyboard (after setting up your build environment): + + make wings42:default + +Flashing example for this keyboard: + + make wings42: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). + +A build guide for this keyboard can be found here: [wings42 build guide](https://yfuku.com/wings42/buildguide/) diff --git a/keyboards/wings42/rev1/rev1.c b/keyboards/wings42/rev1/rev1.c new file mode 100644 index 000000000000..dccf24c7466b --- /dev/null +++ b/keyboards/wings42/rev1/rev1.c @@ -0,0 +1,17 @@ +/* Copyright 2021 yfuku + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "rev1.h" diff --git a/keyboards/wings42/rev1/rev1.h b/keyboards/wings42/rev1/rev1.h new file mode 100644 index 000000000000..cd6e35a711df --- /dev/null +++ b/keyboards/wings42/rev1/rev1.h @@ -0,0 +1,44 @@ +/* Copyright 2021 yfuku + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT_split_3x6_3( \ + L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ + L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ + L30, L31, L32, R30, R31, R32 \ + ) \ + { \ + { L00, L01, L02, L03, L04, L05 }, \ + { L10, L11, L12, L13, L14, L15 }, \ + { L20, L21, L22, L23, L24, L25 }, \ + { KC_NO, KC_NO, KC_NO, L30, L31, L32 }, \ + { R05, R04, R03, R02, R01, R00 }, \ + { R15, R14, R13, R12, R11, R10 }, \ + { R25, R24, R23, R22, R21, R20 }, \ + { KC_NO, KC_NO, KC_NO, R32, R31, R30 } \ + } diff --git a/keyboards/wings42/rev1/rules.mk b/keyboards/wings42/rev1/rules.mk new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/keyboards/wings42/rev1_extkeys/config.h b/keyboards/wings42/rev1_extkeys/config.h new file mode 100644 index 000000000000..f0f04eca59e2 --- /dev/null +++ b/keyboards/wings42/rev1_extkeys/config.h @@ -0,0 +1,152 @@ +/* +Copyright 2021 yfuku + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x5946 // YF +#define PRODUCT_ID 0x0004 +#define DEVICE_VER 0x0001 +#define MANUFACTURER yfuku +#define PRODUCT wings42 extkeys + +/* key matrix size */ +#define MATRIX_ROWS 12 +#define MATRIX_COLS 8 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * + */ +#define MATRIX_ROW_PINS { D4, C6, D7, E6, B2, B4 } +#define MATRIX_COL_PINS { B3, B1, F7, F6, F5, F4, B6, B5 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +#define SOFT_SERIAL_PIN D2 // or D1, D2, D3, E6 + +//#define LED_NUM_LOCK_PIN B0 +//#define LED_CAPS_LOCK_PIN B1 +//#define LED_SCROLL_LOCK_PIN B2 +//#define LED_COMPOSE_PIN B3 +//#define LED_KANA_PIN B4 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +//#define RGB_DI_PIN E2 +//#ifdef RGB_DI_PIN +//# define RGBLED_NUM 16 +//# define RGBLIGHT_HUE_STEP 8 +//# define RGBLIGHT_SAT_STEP 8 +//# define RGBLIGHT_VAL_STEP 8 +//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +//# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +//# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +//#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/wings42/rev1_extkeys/keymaps/default/keymap.c b/keyboards/wings42/rev1_extkeys/keymaps/default/keymap.c new file mode 100644 index 000000000000..64a2b00c3146 --- /dev/null +++ b/keyboards/wings42/rev1_extkeys/keymaps/default/keymap.c @@ -0,0 +1,81 @@ +/* Copyright 2021 yfuku + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layer_number { + _QWERTY = 0, + _RAISE, + _LOWER, + _ADJUST, +}; + +#define KC_G_TAB LGUI_T(KC_TAB) +#define KC_G_BS LGUI_T(KC_BSPC) +#define KC_L_SPC LT(_LOWER, KC_SPC) +#define KC_R_ENT LT(_RAISE, KC_ENT) +#define KC_S_JA LSFT_T(KC_LANG1) +#define KC_S_EN LSFT_T(KC_LANG2) +#define KC_A_DEL ALT_T(KC_DEL) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QWERTY] = LAYOUT( + //,--------+--------+---------+--------+---------+--------. ,--------+---------+--------+---------+--------+--------. + KC_ESC , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_MINS, + //|--------+--------+---------+--------+---------+--------| |--------+---------+--------+---------+--------+--------| + KC_G_TAB, KC_A , KC_S , KC_D , KC_F , KC_G , KC_DEL, KC_DEL, KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_G_BS , + //|--------+--------+---------+--------+---------+--------| |--------+---------+--------+---------+--------+--------| + KC_LCTL, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_BSPC, KC_BSPC, KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RCTL, + //`--------+--------+---------+--------+---------+--------/ \--------+---------+--------+---------+--------+--------' + KC_A_DEL, KC_S_EN ,KC_L_SPC, KC_R_ENT, KC_S_JA , KC_A_DEL + // `+--------+---------+--------' `--------+---------+--------+' + ), + + [_RAISE] = LAYOUT( + //,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------. + _______, KC_BSLS, KC_CIRC, KC_EXLM, KC_AMPR, KC_PIPE, KC_AT , KC_EQL , KC_PLUS, KC_ASTR, KC_PERC, KC_MINS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_LPRN, KC_HASH, KC_DLR , KC_DQT , KC_QUOT, KC_TILD, _______, _______, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, KC_GRV , KC_RPRN, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, _______, _______, _______, KC_LCBR, KC_LBRC, _______, _______, KC_RBRC, KC_RCBR, _______, _______, _______, _______, + //`--------+--------+--------+--------+--------+--------/ \--------+--------+--------+--------+--------+--------' + _______, _______, _______, _______, _______, RESET + // `+--------+--------+--------' `--------+---------+--------+' + ), + + [_LOWER] = LAYOUT( + //,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------. + KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , _______, KC_EQL , KC_PLUS, KC_ASTR, KC_PERC, KC_MINS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , _______, _______, KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , _______, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , _______, _______, _______, _______, KC_COMM, KC_DOT , KC_SLSH, _______, + //`--------+--------+--------+--------+--------+--------/ \--------+--------+--------+--------+--------+--------' + RESET , _______, _______, _______, _______, _______ + // `+--------+--------+--------' `--------+--------+--------+' + ), + + [_ADJUST] = LAYOUT( + //,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------. + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //`--------+--------+--------+--------+--------+--------/ \--------+--------+--------+--------+--------+--------' + _______, _______, _______, _______, _______, _______ + // `+--------+--------+--------' `--------+--------+--------+' + ), +}; diff --git a/keyboards/wings42/rev1_extkeys/keymaps/default/readme.md b/keyboards/wings42/rev1_extkeys/keymaps/default/readme.md new file mode 100644 index 000000000000..d99098ad0c37 --- /dev/null +++ b/keyboards/wings42/rev1_extkeys/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for wings42 diff --git a/keyboards/wings42/rev1_extkeys/keymaps/via/keymap.c b/keyboards/wings42/rev1_extkeys/keymaps/via/keymap.c new file mode 100644 index 000000000000..97c77e182bf8 --- /dev/null +++ b/keyboards/wings42/rev1_extkeys/keymaps/via/keymap.c @@ -0,0 +1,81 @@ +/* Copyright 2021 yfuku + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum layer_number { + _QWERTY = 0, + _RAISE, + _LOWER, + _ADJUST, +}; + +#define KC_G_TAB LGUI_T(KC_TAB) +#define KC_G_BS LGUI_T(KC_BSPC) +#define KC_L_SPC LT(_LOWER, KC_SPC) +#define KC_R_ENT LT(_RAISE, KC_ENT) +#define KC_S_JA LSFT_T(KC_LANG1) +#define KC_S_EN LSFT_T(KC_LANG2) +#define KC_A_DEL ALT_T(KC_DEL) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QWERTY] = LAYOUT( \ + //,--------+--------+---------+--------+---------+--------. ,--------+---------+--------+---------+--------+--------. + KC_ESC , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_MINS, + //|--------+--------+---------+--------+---------+--------| |--------+---------+--------+---------+--------+--------| + KC_G_TAB, KC_A , KC_S , KC_D , KC_F , KC_G , KC_DEL, KC_DEL, KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_G_BS , + //|--------+--------+---------+--------+---------+--------| |--------+---------+--------+---------+--------+--------| + KC_LCTL, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_BSPC, KC_BSPC, KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RCTL, + //`--------+--------+---------+--------+---------+--------/ \--------+---------+--------+---------+--------+--------' + KC_A_DEL, KC_S_EN ,KC_L_SPC, KC_R_ENT, KC_S_JA , KC_A_DEL + // `+--------+---------+--------' `--------+---------+--------+' + ), + + [_RAISE] = LAYOUT( \ + //,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------. + _______, KC_BSLS, KC_CIRC, KC_EXLM, KC_AMPR, KC_PIPE, KC_AT , KC_EQL , KC_PLUS, KC_ASTR, KC_PERC, KC_MINS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_LPRN, KC_HASH, KC_DLR , KC_DQT , KC_QUOT, KC_TILD, _______, _______, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, KC_GRV , KC_RPRN, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, _______, _______, _______, KC_LCBR, KC_LBRC, _______, _______, KC_RBRC, KC_RCBR, _______, _______, _______, _______, + //`--------+--------+--------+--------+--------+--------/ \--------+--------+--------+--------+--------+--------' + _______, _______, _______, _______, _______, RESET + // `+--------+--------+--------' `--------+---------+--------+' + ), + + [_LOWER] = LAYOUT( \ + //,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------. + KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , _______, KC_EQL , KC_PLUS, KC_ASTR, KC_PERC, KC_MINS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , _______, _______, KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , _______, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , _______, _______, _______, _______, KC_COMM, KC_DOT , KC_SLSH, _______, + //`--------+--------+--------+--------+--------+--------/ \--------+--------+--------+--------+--------+--------' + RESET , _______, _______, _______, _______, _______ + // `+--------+--------+--------' `--------+--------+--------+' + ), + + [_ADJUST] = LAYOUT( \ + //,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------. + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //`--------+--------+--------+--------+--------+--------/ \--------+--------+--------+--------+--------+--------' + _______, _______, _______, _______, _______, _______ + // `+--------+--------+--------' `--------+--------+--------+' + ), +}; diff --git a/keyboards/wings42/rev1_extkeys/keymaps/via/rules.mk b/keyboards/wings42/rev1_extkeys/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/wings42/rev1_extkeys/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/wings42/rev1_extkeys/readme.md b/keyboards/wings42/rev1_extkeys/readme.md new file mode 100644 index 000000000000..7be464a141f5 --- /dev/null +++ b/keyboards/wings42/rev1_extkeys/readme.md @@ -0,0 +1,21 @@ +# wings42 + +![wings42](https://raw.githubusercontent.com/yfuku/wings42/main/images/wings42.jpg) + +A split keyboard with 3x6 vertically staggered keys and 3 thumb keys. + +* Keyboard Maintainer: [yfuku](https://github.com/yfuku) +* Hardware Supported: wings42 PCB, Pro Micro +* Hardware Availability: https://yfuku.booth.pm/ + +Make example for this keyboard (after setting up your build environment): + + make make wings42/rev1_extkeys:default + +Flashing example for this keyboard: + + make make wings42/rev1_extkeys: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). + +A build guide for this keyboard can be found here: [wings42 build guide](https://yfuku.com/wings42/buildguide/) diff --git a/keyboards/wings42/rev1_extkeys/rev1_extkeys.c b/keyboards/wings42/rev1_extkeys/rev1_extkeys.c new file mode 100644 index 000000000000..3d0d203704d0 --- /dev/null +++ b/keyboards/wings42/rev1_extkeys/rev1_extkeys.c @@ -0,0 +1,17 @@ +/* Copyright 2021 yfuku + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "rev1_extkeys.h" diff --git a/keyboards/wings42/rev1_extkeys/rev1_extkeys.h b/keyboards/wings42/rev1_extkeys/rev1_extkeys.h new file mode 100644 index 000000000000..2ad58047f14d --- /dev/null +++ b/keyboards/wings42/rev1_extkeys/rev1_extkeys.h @@ -0,0 +1,48 @@ +/* Copyright 2021 yfuku + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ + L10, L11, L12, L13, L14, L15, E01, E03, R10, R11, R12, R13, R14, R15, \ + L20, L21, L22, L23, L24, L25, E02, E04, R20, R21, R22, R23, R24, R25, \ + L30, L31, L32, R30, R31, R32 \ + ) \ + { \ + { L00, L01, L02, L03, L04, L05, KC_NO, KC_NO }, \ + { L10, L11, L12, L13, L14, L15, KC_NO, KC_NO }, \ + { L20, L21, L22, L23, L24, L25, KC_NO, KC_NO }, \ + { KC_NO, KC_NO, KC_NO, L30, L31, L32, KC_NO, KC_NO }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, E02, KC_NO }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, E01 }, \ + { R05, R04, R03, R02, R01, R00, KC_NO, KC_NO }, \ + { R15, R14, R13, R12, R11, R10, KC_NO, KC_NO }, \ + { R25, R24, R23, R22, R21, R20, KC_NO, KC_NO }, \ + { KC_NO, KC_NO, KC_NO, R32, R31, R30, KC_NO, KC_NO }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, E04, KC_NO}, \ + { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, E03} \ + } diff --git a/keyboards/wings42/rev1_extkeys/rules.mk b/keyboards/wings42/rev1_extkeys/rules.mk new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/keyboards/wings42/rules.mk b/keyboards/wings42/rules.mk new file mode 100644 index 000000000000..da9a18a28cfb --- /dev/null +++ b/keyboards/wings42/rules.mk @@ -0,0 +1,23 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +SPLIT_KEYBOARD = yes + +DEFAULT_FOLDER = wings42/rev1 diff --git a/keyboards/wings42/wings42.c b/keyboards/wings42/wings42.c new file mode 100644 index 000000000000..824b6cfbb631 --- /dev/null +++ b/keyboards/wings42/wings42.c @@ -0,0 +1,17 @@ +/* Copyright 2021 yfuku + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "wings42.h" diff --git a/keyboards/wings42/wings42.h b/keyboards/wings42/wings42.h new file mode 100644 index 000000000000..07c882340915 --- /dev/null +++ b/keyboards/wings42/wings42.h @@ -0,0 +1,26 @@ +/* Copyright 2021 yfuku + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#ifdef KEYBOARD_wings42_rev1 +# include "rev1.h" +#endif +#ifdef KEYBOARD_wings42_rev1_extkeys +# include "rev1_extkeys.h" +#endif diff --git a/keyboards/winkeyless/b87/b87.c b/keyboards/winkeyless/b87/b87.c new file mode 100644 index 000000000000..46c5ad2bf06b --- /dev/null +++ b/keyboards/winkeyless/b87/b87.c @@ -0,0 +1,19 @@ +/* Copyright 2021 Joah Nelson (Jels) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +// not much here + +#include "b87.h" diff --git a/keyboards/winkeyless/b87/b87.h b/keyboards/winkeyless/b87/b87.h new file mode 100644 index 000000000000..27ece3857541 --- /dev/null +++ b/keyboards/winkeyless/b87/b87.h @@ -0,0 +1,40 @@ +/* Copyright 2021 Joah Nelson (Jels) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ___ KC_NO + + +#define LAYOUT_all( \ + K00, K02, K03, K04, K05, K60, K66, K76, K70, K07, K08, K09, K0A, K49, K4A, K3A, \ + K10, K11, K12, K13, K14, K15, K61, K67, K77, K71, K16, K17, K18, K19, K1A, K59, K5A, K7B, \ + K20, K21, K22, K23, K24, K25, K62, K68, K78, K72, K26, K27, K28, K29, K7E, K7D, K7C, \ + K30, K31, K32, K33, K34, K35, K63, K69, K79, K73, K36, K37, K38, K39, \ + K40, K53, K41, K42, K43, K44, K45, K64, K6A, K7A, K74, K46, K47, K48, K6C, \ + K50, K51, K52, K65, K75, K56, K57, K58, K6E, K6D, K6B \ +){ \ + {K00, ___, K02, K03, K04, K05, ___, 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, ___, ___, ___, ___, ___}, \ + {K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, ___, ___, ___, ___}, \ + {K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, ___, ___, ___, ___}, \ + {K50, K51, K52, K53, ___, ___, K56, K57, K58, K59, K5A, ___, ___, ___, ___}, \ + {K60, K61, K62, K63, K64, K65, K66, K67, K68, K69, K6A, K6B, K6C, K6D, K6E}, \ + {K70, K71, K72, K73, K74, K75, K76, K77, K78, K79, K7A, K7B, K7C, K7D, K7E} \ +} diff --git a/keyboards/winkeyless/b87/config.h b/keyboards/winkeyless/b87/config.h new file mode 100644 index 000000000000..0598ee700b9a --- /dev/null +++ b/keyboards/winkeyless/b87/config.h @@ -0,0 +1,56 @@ +/* Copyright 2021 Joah Nelson (Jels) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor paramater */ +#define VENDOR_ID 0x20A0 // +#define PRODUCT_ID 0x0B87 // B87 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Winkeyless +#define PRODUCT B87 // QMK PORT + +/* Define Matrix size */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 15 + +/*Define Matrix Pins */ +#define MATRIX_ROW_PINS {B5, B4, B3, B2, B1, B0, B6, B7} +#define MATRIX_COL_PINS {A0, A1, A2, A3, A4, A5, C5, C4, C3, C2, D7, C6, C7, A7, A6} + +#define RGBLED_NUM 20 // Number of LEDs +// RGB effects +#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 + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +#define BACKLIGHT_PIN D4 +#define BACKLIGHT_LEVELS 3 + +#define LED_CAPS_LOCK_PIN D1 +#define LED_SCROLL_LOCK_PIN D6 diff --git a/keyboards/winkeyless/b87/info.json b/keyboards/winkeyless/b87/info.json new file mode 100644 index 000000000000..93721d707831 --- /dev/null +++ b/keyboards/winkeyless/b87/info.json @@ -0,0 +1,102 @@ +{ + "keyboard_name": "B87", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_all": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "F1", "x": 2, "y": 0 }, + { "label": "F2", "x": 3, "y": 0 }, + { "label": "F3", "x": 4, "y": 0 }, + { "label": "F4", "x": 5, "y": 0 }, + { "label": "F5", "x": 6.5, "y": 0 }, + { "label": "F6", "x": 7.5, "y": 0 }, + { "label": "F7", "x": 8.5, "y": 0 }, + { "label": "F8", "x": 9.5, "y": 0 }, + { "label": "F9", "x": 11, "y": 0 }, + { "label": "F10", "x": 12, "y": 0 }, + { "label": "F11", "x": 13, "y": 0 }, + { "label": "F12", "x": 14, "y": 0 }, + { "label": "PrtSc", "x": 15.25, "y": 0 }, + { "label": "Scroll Lock", "x": 16.25, "y": 0 }, + { "label": "Pause", "x": 17.25, "y": 0 }, + { "label": "~", "x": 0, "y": 1.25 }, + { "label": "!", "x": 1, "y": 1.25 }, + { "label": "@", "x": 2, "y": 1.25 }, + { "label": "#", "x": 3, "y": 1.25 }, + { "label": "$", "x": 4, "y": 1.25 }, + { "label": "%", "x": 5, "y": 1.25 }, + { "label": "^", "x": 6, "y": 1.25 }, + { "label": "&", "x": 7, "y": 1.25 }, + { "label": "*", "x": 8, "y": 1.25 }, + { "label": "(", "x": 9, "y": 1.25 }, + { "label": ")", "x": 10, "y": 1.25 }, + { "label": "_", "x": 11, "y": 1.25 }, + { "label": "+", "x": 12, "y": 1.25 }, + { "x": 13, "y": 1.25 }, + { "label": "Bksp", "x": 14, "y": 1.25 }, + { "label": "Insert", "x": 15.25, "y": 1.25 }, + { "label": "Home", "x": 16.25, "y": 1.25 }, + { "label": "PgUp", "x": 17.25, "y": 1.25 }, + { "label": "Tab", "x": 0, "y": 2.25, "w": 1.5 }, + { "label": "Q", "x": 1.5, "y": 2.25 }, + { "label": "W", "x": 2.5, "y": 2.25 }, + { "label": "E", "x": 3.5, "y": 2.25 }, + { "label": "R", "x": 4.5, "y": 2.25 }, + { "label": "T", "x": 5.5, "y": 2.25 }, + { "label": "Y", "x": 6.5, "y": 2.25 }, + { "label": "U", "x": 7.5, "y": 2.25 }, + { "label": "I", "x": 8.5, "y": 2.25 }, + { "label": "O", "x": 9.5, "y": 2.25 }, + { "label": "P", "x": 10.5, "y": 2.25 }, + { "label": "{", "x": 11.5, "y": 2.25 }, + { "label": "}", "x": 12.5, "y": 2.25 }, + { "label": "|", "x": 13.5, "y": 2.25, "w": 1.5 }, + { "label": "Delete", "x": 15.25, "y": 2.25 }, + { "label": "End", "x": 16.25, "y": 2.25 }, + { "label": "PgDn", "x": 17.25, "y": 2.25 }, + { "label": "Caps Lock", "x": 0, "y": 3.25, "w": 1.75 }, + { "label": "A", "x": 1.75, "y": 3.25 }, + { "label": "S", "x": 2.75, "y": 3.25 }, + { "label": "D", "x": 3.75, "y": 3.25 }, + { "label": "F", "x": 4.75, "y": 3.25 }, + { "label": "G", "x": 5.75, "y": 3.25 }, + { "label": "H", "x": 6.75, "y": 3.25 }, + { "label": "J", "x": 7.75, "y": 3.25 }, + { "label": "K", "x": 8.75, "y": 3.25 }, + { "label": "L", "x": 9.75, "y": 3.25 }, + { "label": ":", "x": 10.75, "y": 3.25 }, + { "label": "\"", "x": 11.75, "y": 3.25 }, + { "x": 12.75, "y": 3.25 }, + { "label": "Enter", "x": 13.75, "y": 3.25, "w": 1.25 }, + { "label": "Shift", "x": 0, "y": 4.25, "w": 1.25 }, + { "x": 1.25, "y": 4.25 }, + { "label": "Z", "x": 2.25, "y": 4.25 }, + { "label": "X", "x": 3.25, "y": 4.25 }, + { "label": "C", "x": 4.25, "y": 4.25 }, + { "label": "V", "x": 5.25, "y": 4.25 }, + { "label": "B", "x": 6.25, "y": 4.25 }, + { "label": "N", "x": 7.25, "y": 4.25 }, + { "label": "M", "x": 8.25, "y": 4.25 }, + { "label": "<", "x": 9.25, "y": 4.25 }, + { "label": ">", "x": 10.25, "y": 4.25 }, + { "label": "?", "x": 11.25, "y": 4.25 }, + { "label": "Shift", "x": 12.25, "y": 4.25, "w": 1.75 }, + { "x": 14, "y": 4.25 }, + { "label": "\u2191", "x": 16.25, "y": 4.25 }, + { "label": "Ctrl", "x": 0, "y": 5.25, "w": 1.25 }, + { "label": "Win", "x": 1.25, "y": 5.25, "w": 1.25 }, + { "label": "Alt", "x": 2.5, "y": 5.25, "w": 1.25 }, + { "x": 3.75, "y": 5.25, "w": 6.25 }, + { "label": "Alt", "x": 10, "y": 5.25, "w": 1.25 }, + { "label": "Win", "x": 11.25, "y": 5.25, "w": 1.25 }, + { "label": "Menu", "x": 12.5, "y": 5.25, "w": 1.25 }, + { "label": "Ctrl", "x": 13.75, "y": 5.25, "w": 1.25 }, + { "label": "\u2190", "x": 15.25, "y": 5.25 }, + { "label": "\u2193", "x": 16.25, "y": 5.25 }, + { "label": "\u2192", "x": 17.25, "y": 5.25 } + ] + } + } +} diff --git a/keyboards/winkeyless/b87/keymaps/default/keymap.c b/keyboards/winkeyless/b87/keymaps/default/keymap.c new file mode 100644 index 000000000000..4b48b09fe85a --- /dev/null +++ b/keyboards/winkeyless/b87/keymaps/default/keymap.c @@ -0,0 +1,55 @@ +/* Copyright 2021 Joah Nelson (Jels) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +//base layer +[0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT +), +[1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +[2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS +), +[3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/winkeyless/b87/keymaps/via/config.h b/keyboards/winkeyless/b87/keymaps/via/config.h new file mode 100644 index 000000000000..ce14d287499a --- /dev/null +++ b/keyboards/winkeyless/b87/keymaps/via/config.h @@ -0,0 +1,19 @@ +/* Copyright 2021 Joah Nelson (Jels) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define DYNAMIC_KEYMAP_LAYER_COUNT 3 diff --git a/keyboards/winkeyless/b87/keymaps/via/keymap.c b/keyboards/winkeyless/b87/keymaps/via/keymap.c new file mode 100644 index 000000000000..2dc289018077 --- /dev/null +++ b/keyboards/winkeyless/b87/keymaps/via/keymap.c @@ -0,0 +1,46 @@ +/* Copyright 2021 Joah Nelson (Jels) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +//base layer +[0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT +), +[1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), +[2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS +) +}; \ No newline at end of file diff --git a/keyboards/winkeyless/b87/keymaps/via/rules.mk b/keyboards/winkeyless/b87/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/winkeyless/b87/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/winkeyless/b87/readme.md b/keyboards/winkeyless/b87/readme.md new file mode 100644 index 000000000000..ea617f7c8951 --- /dev/null +++ b/keyboards/winkeyless/b87/readme.md @@ -0,0 +1,23 @@ +# B87 + +A TKL keyboard with RGB underglow. + +QMK Firmware is not the official firmware for the B.mini. + +* Keyboard Maintainer: QMK Community +* Hardware Supported: B87 PCB +* Hardware Availability: + +Make example for this keyboard (after setting up your build environment): + + make winkeyless/b87:default + +Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid)) + + make winkeyless/b87:default:flash + +This firmware can also be flashed onto the KBDFans KBD75 Round 1 Bootmapper Client boards sold during the 2017 and early 2018 timeframe. + +**Reset Key**: Hold down the top left most key located at `K00`, commonly programmed as Escape while plugging in the keyboard. + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/winkeyless/b87/rules.mk b/keyboards/winkeyless/b87/rules.mk new file mode 100644 index 000000000000..47f85799f586 --- /dev/null +++ b/keyboards/winkeyless/b87/rules.mk @@ -0,0 +1,18 @@ +# MCU name +MCU = atmega32a + +# Bootloader selection +BOOTLOADER = bootloadhid + +# 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 +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +WS2812_DRIVER = i2c diff --git a/keyboards/winkeyless/bface/info.json b/keyboards/winkeyless/bface/info.json index f5ecf173d384..3d48c55f6b5d 100644 --- a/keyboards/winkeyless/bface/info.json +++ b/keyboards/winkeyless/bface/info.json @@ -2,8 +2,6 @@ "keyboard_name": "b.face", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_ansi": { "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}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"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/winkeyless/bface/keymaps/p3lim/README.md b/keyboards/winkeyless/bface/keymaps/p3lim/README.md index 81f99ec966ba..94e84e7f2210 100644 --- a/keyboards/winkeyless/bface/keymaps/p3lim/README.md +++ b/keyboards/winkeyless/bface/keymaps/p3lim/README.md @@ -2,13 +2,20 @@ ![](https://user-images.githubusercontent.com/26496/61170794-bf8a2c80-a56e-11e9-893f-f1766e7a9a04.png) -My layout using the winkeyless b.face X2 PCB. The keys indicated with a gray color was not supported by the layout so a custom one was made. +My layout using the winkeyless b.face X2 PCB. ### Building & Flashing -- Hold LCTRL while connecting to put in flashing mode -- Follow instructions in the main _bface_ directory +- Set up QMK + - `pip install --user qmk` + - `qmk setup` +- Add udev rules if on Linux + - Follow the docs: +- Build and flash + - `qmk flash -kb winkeyless/bface -km p3lim` +- Hold bottom-left key while connecting to put in flashing mode ### Layout notes +The keys indicated with a gray color in the image above was not supported by the layout so a custom matrix was made. The two additional keys were on pins 22+41 and 22+42, C3+B1 and C3+B2, which is mapped to col 10 row 1 and col 10 row 2 in the matrix. diff --git a/keyboards/winkeyless/bface/keymaps/p3lim/keymap.c b/keyboards/winkeyless/bface/keymaps/p3lim/keymap.c index 0ec124529172..f702810f9c2a 100644 --- a/keyboards/winkeyless/bface/keymaps/p3lim/keymap.c +++ b/keyboards/winkeyless/bface/keymaps/p3lim/keymap.c @@ -1,5 +1,5 @@ /* -Copyright 2019 Adrian L Lange +Copyright 2019-2021 Adrian L Lange This 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,7 +16,6 @@ along with this program. If not, see . */ #include QMK_KEYBOARD_H -#include "quantum.h" #define LAYOUT_p3lim(\ K04, K14, K24, K34, K44, K54, K16, KB6, KB7, K17, KA4, KB4, KC4, KE4, \ @@ -37,13 +36,13 @@ along with this program. If not, see . enum my_keycodes { C_ESC0 = SAFE_RANGE, // layer 0 esc - C_ESC1 // layer 1 esc + C_ESC1, // layer 1 esc + C_NO1, // æ, requires RCTL to be a compose key in software + C_NO2, // ø, requires RCTL to be a compose key in software + C_NO3 // å, requires RCTL to be a compose key in software }; // use compiler macros for simpler stuff -#define C_NO1 RALT(KC_QUOT) -#define C_NO2 RALT(KC_SCLN) -#define C_NO3 RALT(KC_LBRC) #define C_KVM1 LCA(KC_1) #define C_KVM2 LCA(KC_2) #define C_KVM3 LCA(KC_3) @@ -77,7 +76,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |-----------------------------------------------------------------------------------------+ * | Caps | Home| Up | End | PgUp| | | | | | | | | | * |---------------------------------------------------------------------------------| | - * | | Left| Down|Right| PgDn| | | | | | | | | | + * | | Left| Down|Right| PgDn|PrtSc| | | | | | | | | * |-----------------------------------------------------------------------------------------+ * | | KVM1| KVM2| KVM3| KVM4| | | | | | | | | * |-----------------------------------------------------------------------------------------+ @@ -87,7 +86,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [1] = LAYOUT_p3lim( C_ESC1, 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_CAPS, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, _______, _______, _______, _______, _______, _______, _______, - _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_PSCR, _______, _______, _______, _______, _______, _______, _______, _______, _______, C_KVM1, C_KVM2, C_KVM3, C_KVM4, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_NO, _______, _______ ), @@ -123,32 +122,65 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ }; +static bool grave_esc_shifted = false; + bool process_record_user(uint16_t keycode, keyrecord_t *record){ + const uint8_t mods = get_mods(); + uint8_t shifted = mods & MOD_MASK_SHIFT; + switch(keycode){ case C_ESC0: // layer 0 if(record->event.pressed){ - if(get_mods() & MOD_MASK_SHIFT) - register_code(KC_GRAVE); - else - register_code(KC_ESCAPE); - } else { - if(get_mods() & MOD_MASK_SHIFT) - unregister_code(KC_GRAVE); - else - unregister_code(KC_ESCAPE); - } + grave_esc_shifted = shifted; + register_code(shifted ? KC_GRAVE : KC_ESCAPE); + } else + unregister_code(grave_esc_shifted ? KC_GRAVE : KC_ESCAPE); return false; case C_ESC1: // layer 1 if(record->event.pressed){ - if(get_mods() & MOD_MASK_SHIFT) - register_code(KC_ESCAPE); - else - register_code(KC_GRAVE); - } else { - if(get_mods() & MOD_MASK_SHIFT) - unregister_code(KC_ESCAPE); - else - unregister_code(KC_GRAVE); + grave_esc_shifted = shifted; + register_code(shifted ? KC_ESCAPE : KC_GRAVE); + } else + unregister_code(grave_esc_shifted ? KC_ESCAPE : KC_GRAVE); + return false; + case C_NO1: // æ + if(record->event.pressed){ + // we use shift for A and E to make it capitalized, no need to handle it here + tap_code(KC_RCTL); + tap_code(KC_A); + tap_code(KC_E); + } + return false; + case C_NO2: // ø + // the "/" symbol can't be shifted, so we have to deal with that + if(record->event.pressed){ + if(shifted){ + unregister_code(KC_LSFT); // reset the shift state, I always use LSFT personally + tap_code(KC_RCTL); + tap_code(KC_SLSH); + tap_code16(S(KC_O)); + register_code(KC_LSFT); // enable the shift state again to keep state consistent + } else { + tap_code(KC_RCTL); + tap_code(KC_SLSH); + tap_code(KC_O); + } + } + return false; + case C_NO3: // å + // the "o" symbol can't be shifted, so we have to deal with that + if(record->event.pressed){ + if(shifted){ + unregister_code(KC_LSFT); // reset the shift state, I always use LSFT personally + tap_code(KC_RCTL); + tap_code(KC_O); + tap_code16(S(KC_A)); + register_code(KC_LSFT); // enable the shift state again to keep state consistent + } else { + tap_code(KC_RCTL); + tap_code(KC_O); + tap_code(KC_A); + } } return false; } diff --git a/keyboards/winkeyless/bface/keymaps/p3lim/rules.mk b/keyboards/winkeyless/bface/keymaps/p3lim/rules.mk new file mode 100644 index 000000000000..e0ed6f0c2d6f --- /dev/null +++ b/keyboards/winkeyless/bface/keymaps/p3lim/rules.mk @@ -0,0 +1 @@ +RGBLIGHT_ENABLE = no diff --git a/keyboards/winkeyless/bface/rules.mk b/keyboards/winkeyless/bface/rules.mk index 3d51be11332d..3bff3ee31b28 100644 --- a/keyboards/winkeyless/bface/rules.mk +++ b/keyboards/winkeyless/bface/rules.mk @@ -2,17 +2,10 @@ MCU = atmega32a # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid # build options -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes EXTRAKEY_ENABLE = yes CONSOLE_ENABLE = no diff --git a/keyboards/winkeyless/bmini/info.json b/keyboards/winkeyless/bmini/info.json index ab4d01c02308..f4ff17f9e141 100644 --- a/keyboards/winkeyless/bmini/info.json +++ b/keyboards/winkeyless/bmini/info.json @@ -2,15 +2,11 @@ "keyboard_name": "B.mini", "url": "", "maintainer": "qmk", - "width": 16, - "height": 6, "layouts": { "LAYOUT": { - "key_count": 84, "layout": [{"label":"K05", "x":0, "y":0}, {"label":"K25", "x":1, "y":0}, {"label":"K35", "x":2, "y":0}, {"label":"K45", "x":3, "y":0}, {"label":"K55", "x":4, "y":0}, {"label":"K06", "x":5, "y":0}, {"label":"KA6", "x":6, "y":0}, {"label":"KA7", "x":7, "y":0}, {"label":"K07", "x":8, "y":0}, {"label":"KB5", "x":9, "y":0}, {"label":"KC5", "x":10, "y":0}, {"label":"KD5", "x":11, "y":0}, {"label":"KE5", "x":12, "y":0}, {"label":"KD1", "x":13, "y":0}, {"label":"KE1", "x":14, "y":0}, {"label":"KE2", "x":15, "y":0}, {"label":"K04", "x":0, "y":1}, {"label":"K14", "x":1, "y":1}, {"label":"K24", "x":2, "y":1}, {"label":"K34", "x":3, "y":1}, {"label":"K44", "x":4, "y":1}, {"label":"K54", "x":5, "y":1}, {"label":"K16", "x":6, "y":1}, {"label":"KB6", "x":7, "y":1}, {"label":"KB7", "x":8, "y":1}, {"label":"K17", "x":9, "y":1}, {"label":"KA4", "x":10, "y":1}, {"label":"KB4", "x":11, "y":1}, {"label":"KC4", "x":12, "y":1}, {"label":"KE4", "x":13, "y":1, "w":2}, {"label":"KD0", "x":15, "y":1}, {"label":"K03", "x":0, "y":2, "w":1.5}, {"label":"K13", "x":1.5, "y":2}, {"label":"K23", "x":2.5, "y":2}, {"label":"K33", "x":3.5, "y":2}, {"label":"K43", "x":4.5, "y":2}, {"label":"K53", "x":5.5, "y":2}, {"label":"K26", "x":6.5, "y":2}, {"label":"KC6", "x":7.5, "y":2}, {"label":"KC7", "x":8.5, "y":2}, {"label":"K27", "x":9.5, "y":2}, {"label":"KA3", "x":10.5, "y":2}, {"label":"KB3", "x":11.5, "y":2}, {"label":"KC3", "x":12.5, "y":2}, {"label":"KD3", "x":13.5, "y":2, "w":1.5}, {"label":"K67", "x":15, "y":2}, {"label":"K02", "x":0, "y":3, "w":1.75}, {"label":"K12", "x":1.75, "y":3}, {"label":"K22", "x":2.75, "y":3}, {"label":"K32", "x":3.75, "y":3}, {"label":"K42", "x":4.75, "y":3}, {"label":"K52", "x":5.75, "y":3}, {"label":"K36", "x":6.75, "y":3}, {"label":"KD6", "x":7.75, "y":3}, {"label":"KD7", "x":8.75, "y":3}, {"label":"K37", "x":9.75, "y":3}, {"label":"KA2", "x":10.75, "y":3}, {"label":"KB2", "x":11.75, "y":3}, {"label":"KD2", "x":12.75, "y":3, "w":2.25}, {"label":"KE0", "x":15, "y":3}, {"label":"K01", "x":0, "y":4, "w":2.25}, {"label":"K11", "x":2.25, "y":4}, {"label":"K21", "x":3.25, "y":4}, {"label":"K31", "x":4.25, "y":4}, {"label":"K41", "x":5.25, "y":4}, {"label":"K51", "x":6.25, "y":4}, {"label":"K46", "x":7.25, "y":4}, {"label":"KE6", "x":8.25, "y":4}, {"label":"KE7", "x":9.25, "y":4}, {"label":"K47", "x":10.25, "y":4}, {"label":"KA1", "x":11.25, "y":4}, {"label":"KB1", "x":12.25, "y":4, "w":1.75}, {"label":"K86", "x":14, "y":4}, {"label":"K77", "x":15, "y":4}, {"label":"K00", "x":0, "y":5, "w":1.25}, {"label":"K10", "x":1.25, "y":5, "w":1.25}, {"label":"K20", "x":2.5, "y":5, "w":1.25}, {"label":"K56", "x":3.75, "y":5, "w":6.25}, {"label":"K57", "x":10, "y":5}, {"label":"KB0", "x":11, "y":5}, {"label":"KC0", "x":12, "y":5}, {"label":"K66", "x":13, "y":5}, {"label":"K76", "x":14, "y":5}, {"label":"K96", "x":15, "y":5}] }, "LAYOUT_splitbs": { - "key_count": 85, "layout": [{"label":"K05", "x":0, "y":0}, {"label":"K25", "x":1, "y":0}, {"label":"K35", "x":2, "y":0}, {"label":"K45", "x":3, "y":0}, {"label":"K55", "x":4, "y":0}, {"label":"K06", "x":5, "y":0}, {"label":"KA6", "x":6, "y":0}, {"label":"KA7", "x":7, "y":0}, {"label":"K07", "x":8, "y":0}, {"label":"KB5", "x":9, "y":0}, {"label":"KC5", "x":10, "y":0}, {"label":"KD5", "x":11, "y":0}, {"label":"KE5", "x":12, "y":0}, {"label":"KD1", "x":13, "y":0}, {"label":"KE1", "x":14, "y":0}, {"label":"KE2", "x":15, "y":0}, {"label":"K04", "x":0, "y":1}, {"label":"K14", "x":1, "y":1}, {"label":"K24", "x":2, "y":1}, {"label":"K34", "x":3, "y":1}, {"label":"K44", "x":4, "y":1}, {"label":"K54", "x":5, "y":1}, {"label":"K16", "x":6, "y":1}, {"label":"KB6", "x":7, "y":1}, {"label":"KB7", "x":8, "y":1}, {"label":"K17", "x":9, "y":1}, {"label":"KA4", "x":10, "y":1}, {"label":"KB4", "x":11, "y":1}, {"label":"KC4", "x":12, "y":1}, {"label":"KE4", "x":13, "y":1}, {"label":"KD4", "x":14, "y":1}, {"label":"KD0", "x":15, "y":1}, {"label":"K03", "x":0, "y":2, "w":1.5}, {"label":"K13", "x":1.5, "y":2}, {"label":"K23", "x":2.5, "y":2}, {"label":"K33", "x":3.5, "y":2}, {"label":"K43", "x":4.5, "y":2}, {"label":"K53", "x":5.5, "y":2}, {"label":"K26", "x":6.5, "y":2}, {"label":"KC6", "x":7.5, "y":2}, {"label":"KC7", "x":8.5, "y":2}, {"label":"K27", "x":9.5, "y":2}, {"label":"KA3", "x":10.5, "y":2}, {"label":"KB3", "x":11.5, "y":2}, {"label":"KC3", "x":12.5, "y":2}, {"label":"KD3", "x":13.5, "y":2, "w":1.5}, {"label":"K67", "x":15, "y":2}, {"label":"K02", "x":0, "y":3, "w":1.75}, {"label":"K12", "x":1.75, "y":3}, {"label":"K22", "x":2.75, "y":3}, {"label":"K32", "x":3.75, "y":3}, {"label":"K42", "x":4.75, "y":3}, {"label":"K52", "x":5.75, "y":3}, {"label":"K36", "x":6.75, "y":3}, {"label":"KD6", "x":7.75, "y":3}, {"label":"KD7", "x":8.75, "y":3}, {"label":"K37", "x":9.75, "y":3}, {"label":"KA2", "x":10.75, "y":3}, {"label":"KB2", "x":11.75, "y":3}, {"label":"KD2", "x":12.75, "y":3, "w":2.25}, {"label":"KE0", "x":15, "y":3}, {"label":"K01", "x":0, "y":4, "w":2.25}, {"label":"K11", "x":2.25, "y":4}, {"label":"K21", "x":3.25, "y":4}, {"label":"K31", "x":4.25, "y":4}, {"label":"K41", "x":5.25, "y":4}, {"label":"K51", "x":6.25, "y":4}, {"label":"K46", "x":7.25, "y":4}, {"label":"KE6", "x":8.25, "y":4}, {"label":"KE7", "x":9.25, "y":4}, {"label":"K47", "x":10.25, "y":4}, {"label":"KA1", "x":11.25, "y":4}, {"label":"KB1", "x":12.25, "y":4, "w":1.75}, {"label":"K86", "x":14, "y":4}, {"label":"K77", "x":15, "y":4}, {"label":"K00", "x":0, "y":5, "w":1.25}, {"label":"K10", "x":1.25, "y":5, "w":1.25}, {"label":"K20", "x":2.5, "y":5, "w":1.25}, {"label":"K56", "x":3.75, "y":5, "w":6.25}, {"label":"K57", "x":10, "y":5}, {"label":"KB0", "x":11, "y":5}, {"label":"KC0", "x":12, "y":5}, {"label":"K66", "x":13, "y":5}, {"label":"K76", "x":14, "y":5}, {"label":"K96", "x":15, "y":5}] } } diff --git a/keyboards/winkeyless/bmini/rules.mk b/keyboards/winkeyless/bmini/rules.mk index 20f0222c11fb..694ad609a250 100644 --- a/keyboards/winkeyless/bmini/rules.mk +++ b/keyboards/winkeyless/bmini/rules.mk @@ -2,17 +2,10 @@ MCU = atmega32a # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid # build options -BOOTMAGIC_ENABLE = full +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no EXTRAKEY_ENABLE = yes CONSOLE_ENABLE = no diff --git a/keyboards/winkeyless/bminiex/info.json b/keyboards/winkeyless/bminiex/info.json index 319248f344c7..57f9cce278e6 100644 --- a/keyboards/winkeyless/bminiex/info.json +++ b/keyboards/winkeyless/bminiex/info.json @@ -2,8 +2,6 @@ "keyboard_name": "winkeyless.kr B.mini EX", "url": "https://winkeyless.kr/product/b-mini-ex-x2-pcb/", "maintainer": "qmk", - "width": 20.25, - "height": 6.25, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/winkeyless/bminiex/rules.mk b/keyboards/winkeyless/bminiex/rules.mk index fa7336cd87f0..5a51fc476ed6 100644 --- a/keyboards/winkeyless/bminiex/rules.mk +++ b/keyboards/winkeyless/bminiex/rules.mk @@ -2,17 +2,10 @@ MCU = atmega32a # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid # build options -BOOTMAGIC_ENABLE = full +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes EXTRAKEY_ENABLE = yes CONSOLE_ENABLE = no @@ -21,7 +14,3 @@ COMMAND_ENABLE = no BACKLIGHT_ENABLE = yes RGBLIGHT_ENABLE = yes WS2812_DRIVER = i2c -TAP_DANCE_ENABLE = no - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend diff --git a/keyboards/wolf/kuku65/config.h b/keyboards/wolf/kuku65/config.h new file mode 100644 index 000000000000..7c5afed524d8 --- /dev/null +++ b/keyboards/wolf/kuku65/config.h @@ -0,0 +1,56 @@ +/* +Copyright 2020 + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x5453 // TS - ToastyStoemp +#define PRODUCT_ID 0x0052 // kuku65 +#define DEVICE_VER 0x0001 // Version 1 +#define MANUFACTURER ToastyStoemp +#define PRODUCT kuku65 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * 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) + * +*/ + +// Checked with Eagle Schematic +#define MATRIX_ROW_PINS { B3, B2, B1, B0, B7 } +#define MATRIX_COL_PINS { D0, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, D1 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/wolf/kuku65/info.json b/keyboards/wolf/kuku65/info.json new file mode 100644 index 000000000000..1cd162aa3257 --- /dev/null +++ b/keyboards/wolf/kuku65/info.json @@ -0,0 +1,288 @@ +{ + "keyboard_name": "kuku65", + "url": "", + "maintainer": "ToastyStoemp", + "layouts": { + "LAYOUT": { + "layout": [ + { + "x": 0, + "y": 0 + }, + { + "x": 1, + "y": 0 + }, + { + "x": 2, + "y": 0 + }, + { + "x": 3, + "y": 0 + }, + { + "x": 4, + "y": 0 + }, + { + "x": 5, + "y": 0 + }, + { + "x": 6, + "y": 0 + }, + { + "x": 7, + "y": 0 + }, + { + "x": 8, + "y": 0 + }, + { + "x": 9, + "y": 0 + }, + { + "x": 10, + "y": 0 + }, + { + "x": 11, + "y": 0 + }, + { + "x": 12, + "y": 0 + }, + { + "x": 13, + "y": 0, + "w": 2 + }, + { + "x": 0, + "y": 1, + "w": 1.5 + }, + { + "x": 1.5, + "y": 1 + }, + { + "x": 2.5, + "y": 1 + }, + { + "x": 3.5, + "y": 1 + }, + { + "x": 4.5, + "y": 1 + }, + { + "x": 5.5, + "y": 1 + }, + { + "x": 6.5, + "y": 1 + }, + { + "x": 7.5, + "y": 1 + }, + { + "x": 8.5, + "y": 1 + }, + { + "x": 9.5, + "y": 1 + }, + { + "x": 10.5, + "y": 1 + }, + { + "x": 11.5, + "y": 1 + }, + { + "x": 12.5, + "y": 1 + }, + { + "x": 13.5, + "y": 1, + "w": 1.5 + }, + { + "x": 15, + "y": 1 + }, + { + "x": 0, + "y": 2, + "w": 1.75 + }, + { + "x": 1.75, + "y": 2 + }, + { + "x": 2.75, + "y": 2 + }, + { + "x": 3.75, + "y": 2 + }, + { + "x": 4.75, + "y": 2 + }, + { + "x": 5.75, + "y": 2 + }, + { + "x": 6.75, + "y": 2 + }, + { + "x": 7.75, + "y": 2 + }, + { + "x": 8.75, + "y": 2 + }, + { + "x": 9.75, + "y": 2 + }, + { + "x": 10.75, + "y": 2 + }, + { + "x": 11.75, + "y": 2 + }, + { + "x": 12.75, + "y": 2, + "w": 2.25 + }, + { + "x": 15, + "y": 2 + }, + { + "x": 0, + "y": 3, + "w": 2.25 + }, + { + "x": 2.25, + "y": 3 + }, + { + "x": 3.25, + "y": 3 + }, + { + "x": 4.25, + "y": 3 + }, + { + "x": 5.25, + "y": 3 + }, + { + "x": 6.25, + "y": 3 + }, + { + "x": 7.25, + "y": 3 + }, + { + "x": 8.25, + "y": 3 + }, + { + "x": 9.25, + "y": 3 + }, + { + "x": 10.25, + "y": 3 + }, + { + "x": 11.25, + "y": 3 + }, + { + "x": 12.25, + "y": 3, + "w": 1.75 + }, + { + "x": 14, + "y": 3 + }, + { + "x": 15, + "y": 3 + }, + { + "x": 0, + "y": 4, + "w": 1.25 + }, + { + "x": 1.25, + "y": 4, + "w": 1.25 + }, + { + "x": 2.5, + "y": 4, + "w": 1.25 + }, + { + "x": 3.75, + "y": 4, + "w": 6.25 + }, + { + "x": 10, + "y": 4, + "w": 1.25 + }, + { + "x": 11.25, + "y": 4, + "w": 1.25 + }, + { + "x": 13, + "y": 4 + }, + { + "x": 14, + "y": 4 + }, + { + "x": 15, + "y": 4 + } + ] + } + } +} diff --git a/keyboards/wolf/kuku65/keymaps/default/keymap.c b/keyboards/wolf/kuku65/keymaps/default/keymap.c new file mode 100644 index 000000000000..11d9f26ff5df --- /dev/null +++ b/keyboards/wolf/kuku65/keymaps/default/keymap.c @@ -0,0 +1,67 @@ +/* +Copyright 2020 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _LAYER0, + _LAYER1, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ + * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│Hom│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │PgU│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + * │ Ctrl │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │PgD│ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │Ctrl│GUI │Alt │ │Alt │FN │ │ ← │ ↓ │ → │ + * └────┴────┴────┴────────────────────────┴────┴────┴─┴───┴───┴───┘ + */ + + [_LAYER0] = LAYOUT( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_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_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ + * │ ` │ F1│ F2│ F3│ F4│ F5│ F6│ F7│ F8│ F9│F10│F11│F12│ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + * │ │ │ │ │ │Res│ │ │ │ │ │ │ V+│ V0│ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │ │ │ │ │ │ │ │ PT│ V-│ NT│ + * └────┴────┴────┴────────────────────────┴────┴────┴─┴───┴───┴───┘ + */ + + [_LAYER1] = LAYOUT( + 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_AUDIO_VOL_UP, KC_AUDIO_MUTE, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK + ) +}; diff --git a/keyboards/wolf/kuku65/keymaps/via/keymap.c b/keyboards/wolf/kuku65/keymaps/via/keymap.c new file mode 100644 index 000000000000..44618f676b79 --- /dev/null +++ b/keyboards/wolf/kuku65/keymaps/via/keymap.c @@ -0,0 +1,85 @@ +/* +Copyright 2020 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _LAYER0, + _LAYER1, + _LAYER2, + _LAYER3, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ + * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│Hom│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │PgU│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + * │ Ctrl │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │PgD│ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │Ctrl│GUI │Alt │ │Alt │FN │ │ ← │ ↓ │ → │ + * └────┴────┴────┴────────────────────────┴────┴────┴─┴───┴───┴───┘ + */ + + [_LAYER0] = LAYOUT( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_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_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ + * │ ` │ F1│ F2│ F3│ F4│ F5│ F6│ F7│ F8│ F9│F10│F11│F12│ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + * │ │ │ │ │ │Res│ │ │ │ │ │ │ V+│ V0│ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │ │ │ │ │ │ │ │ PT│ V-│ NT│ + * └────┴────┴────┴────────────────────────┴────┴────┴─┴───┴───┴───┘ + */ + + [_LAYER1] = LAYOUT( + 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_AUDIO_VOL_UP, KC_AUDIO_MUTE, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK + ), + + [_LAYER2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [_LAYER3] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/wolf/kuku65/keymaps/via/rules.mk b/keyboards/wolf/kuku65/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/wolf/kuku65/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/wolf/kuku65/kuku65.c b/keyboards/wolf/kuku65/kuku65.c new file mode 100644 index 000000000000..9c1be8cb83f7 --- /dev/null +++ b/keyboards/wolf/kuku65/kuku65.c @@ -0,0 +1,14 @@ +/* +Copyright 2020 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "kuku65.h" diff --git a/keyboards/wolf/kuku65/kuku65.h b/keyboards/wolf/kuku65/kuku65.h new file mode 100644 index 000000000000..d8ad847274df --- /dev/null +++ b/keyboards/wolf/kuku65/kuku65.h @@ -0,0 +1,32 @@ +/* +Copyright 2020 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +/* kuku65 Keymap Definitions */ +#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, 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, 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, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, K49, K4A, KC_NO, K4C, K4D, K4E } \ +} diff --git a/keyboards/wolf/kuku65/readme.md b/keyboards/wolf/kuku65/readme.md new file mode 100644 index 000000000000..34c4f3342281 --- /dev/null +++ b/keyboards/wolf/kuku65/readme.md @@ -0,0 +1,22 @@ +# kuku65 + +The following is the QMK Firmware for the kuku65 Hotswap PCB. + +The PCB features: +* QMK & VIA compatibility +* Hotswap + +--- + +* Keyboard Maintainer: [ToastyStoemp](https://github.com/ToastyStoemp) + +Make example for this keyboard (after setting up your build environment): + + make wolf/kuku65:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader Enter the bootloader in 3 ways: +* **Bootmagic reset**: Hold down the key ESC key and plug in the keyboard (Top Left most switch) +* **Physical reset button**: Briefly press the button on the back of the PCB +* **Keycode in layout**: Press the B key on layer 1 which is mapped to `RESET` diff --git a/keyboards/wolf/kuku65/rules.mk b/keyboards/wolf/kuku65/rules.mk new file mode 100644 index 000000000000..9b942e9feff4 --- /dev/null +++ b/keyboards/wolf/kuku65/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Processor frequency +F_CPU = 8000000 + +# 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 +# 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 diff --git a/keyboards/wolf/ts60/config.h b/keyboards/wolf/ts60/config.h new file mode 100644 index 000000000000..8074f6fc580a --- /dev/null +++ b/keyboards/wolf/ts60/config.h @@ -0,0 +1,78 @@ +/* +Copyright 2020 + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x5453 // TS - ToastyStoemp +#define PRODUCT_ID 0x0050 // TS60 +#define DEVICE_VER 0x0001 // Version 1 +#define MANUFACTURER ToastyStoemp +#define PRODUCT TS60 + +/* key matrix size */ +#define MATRIX_ROWS 10 +#define MATRIX_COLS 8 + +/* + * 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) + * +*/ + +// Checked with Eagle Schematic +#define MATRIX_ROW_PINS { D2, D3, D6, D4, F6, F7, F5, F0, F4, F1 } +#define MATRIX_COL_PINS { D1, D5, C7, C6, B6, B5, B4, D7} +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + + +/* Define RGB Underglow */ +#define RGB_DI_PIN D0 +#define RGBLED_NUM 16 +#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_SLEEP +#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_SWIRL + +/* Define Per Key Backlight */ +#define BACKLIGHT_PIN B7 +#define BACKLIGHT_LEVELS 6 +#define BACKLIGHT_DEFAULT_LEVEL 6 + +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION \ No newline at end of file diff --git a/keyboards/wolf/ts60/info.json b/keyboards/wolf/ts60/info.json new file mode 100644 index 000000000000..d7d3bfe49766 --- /dev/null +++ b/keyboards/wolf/ts60/info.json @@ -0,0 +1,273 @@ +{ + "keyboard_name": "TS60", + "url": "https://www.vwolf.be/", + "maintainer": "ToastyStoemp", + "layouts": { + "LAYOUT": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"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}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}, {"x":12, "y":3}, {"x":13, "y":3}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":2.25}, {"x":6, "y":4, "w":1.25}, {"x":7.25, "y":4, "w":2.75}, {"x":10, "y":4}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}] + }, + "LAYOUT_60_ansi": { + "layout": [ + { + "x": 0, + "y": 0 + }, + { + "x": 1, + "y": 0 + }, + { + "x": 2, + "y": 0 + }, + { + "x": 3, + "y": 0 + }, + { + "x": 4, + "y": 0 + }, + { + "x": 5, + "y": 0 + }, + { + "x": 6, + "y": 0 + }, + { + "x": 7, + "y": 0 + }, + { + "x": 8, + "y": 0 + }, + { + "x": 9, + "y": 0 + }, + { + "x": 10, + "y": 0 + }, + { + "x": 11, + "y": 0 + }, + { + "x": 12, + "y": 0 + }, + { + "x": 13, + "y": 0, + "w": 2 + }, + { + "x": 0, + "y": 1, + "w": 1.5 + }, + { + "x": 1.5, + "y": 1 + }, + { + "x": 2.5, + "y": 1 + }, + { + "x": 3.5, + "y": 1 + }, + { + "x": 4.5, + "y": 1 + }, + { + "x": 5.5, + "y": 1 + }, + { + "x": 6.5, + "y": 1 + }, + { + "x": 7.5, + "y": 1 + }, + { + "x": 8.5, + "y": 1 + }, + { + "x": 9.5, + "y": 1 + }, + { + "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 + }, + { + "x": 2.75, + "y": 2 + }, + { + "x": 3.75, + "y": 2 + }, + { + "x": 4.75, + "y": 2 + }, + { + "x": 5.75, + "y": 2 + }, + { + "x": 6.75, + "y": 2 + }, + { + "x": 7.75, + "y": 2 + }, + { + "x": 8.75, + "y": 2 + }, + { + "x": 9.75, + "y": 2 + }, + { + "x": 10.75, + "y": 2 + }, + { + "x": 11.75, + "y": 2 + }, + { + "x": 12.75, + "y": 2, + "w": 2.25 + }, + { + "x": 0, + "y": 3, + "w": 2.25 + }, + { + "x": 2.25, + "y": 3 + }, + { + "x": 3.25, + "y": 3 + }, + { + "x": 4.25, + "y": 3 + }, + { + "x": 5.25, + "y": 3 + }, + { + "x": 6.25, + "y": 3 + }, + { + "x": 7.25, + "y": 3 + }, + { + "x": 8.25, + "y": 3 + }, + { + "x": 9.25, + "y": 3 + }, + { + "x": 10.25, + "y": 3 + }, + { + "x": 11.25, + "y": 3 + }, + { + "x": 12.25, + "y": 3, + "w": 2.75 + }, + { + "x": 0, + "y": 4, + "w": 1.25 + }, + { + "x": 1.25, + "y": 4, + "w": 1.25 + }, + { + "x": 2.5, + "y": 4, + "w": 1.25 + }, + { + "x": 3.75, + "y": 4, + "w": 6.25 + }, + { + "x": 10, + "y": 4, + "w": 1.25 + }, + { + "x": 11.25, + "y": 4, + "w": 1.25 + }, + { + "x": 12.5, + "y": 4, + "w": 1.25 + }, + { + "x": 13.75, + "y": 4, + "w": 1.25 + } + ] + } + } +} \ No newline at end of file diff --git a/keyboards/wolf/ts60/keymaps/default/keymap.c b/keyboards/wolf/ts60/keymaps/default/keymap.c new file mode 100644 index 000000000000..fa2ac4696482 --- /dev/null +++ b/keyboards/wolf/ts60/keymaps/default/keymap.c @@ -0,0 +1,39 @@ +/* +Copyright 2020 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _LAYER0, + _LAYER1, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_LAYER0] = LAYOUT_60_ansi( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL + ), + + [_LAYER1] = LAYOUT_60_ansi( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + _______, RGB_TOG, KC_UP, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, RESET, + _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/wolf/ts60/keymaps/via/keymap.c b/keyboards/wolf/ts60/keymaps/via/keymap.c new file mode 100644 index 000000000000..9d1b9aab625d --- /dev/null +++ b/keyboards/wolf/ts60/keymaps/via/keymap.c @@ -0,0 +1,58 @@ +/* +Copyright 2020 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + _LAYER0, + _LAYER1, + _LAYER2, + _LAYER3, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_LAYER0] = LAYOUT_60_ansi( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL + ), + + [_LAYER1] = LAYOUT_60_ansi( + KC_GRV , KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + _______, RGB_TOG, KC_UP, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, RESET, + _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_LAYER2] = LAYOUT_60_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_LAYER3] = LAYOUT_60_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ) + +}; \ No newline at end of file diff --git a/keyboards/wolf/ts60/keymaps/via/rules.mk b/keyboards/wolf/ts60/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/wolf/ts60/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/wolf/ts60/readme.md b/keyboards/wolf/ts60/readme.md new file mode 100644 index 000000000000..6883617cb180 --- /dev/null +++ b/keyboards/wolf/ts60/readme.md @@ -0,0 +1,25 @@ +# Wolf - TS 60 + +The following is the QMK Firmware for the TS60 PCB. + +The PCB features: +* QMK & VIA compatibility +* RGB underglow +* Per-Key LEDs + +--- + +* Keyboard Maintainer: [ToastyStoemp](https://github.com/ToastyStoemp) +* Hardware Supported: TF60 ANSI SOLDER + + +Make example for this keyboard (after setting up your build environment): + + make wolf/ts60:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader Enter the bootloader in 3 ways: +* **Bootmagic reset**: Hold down the key ESC key and plug in the keyboard (Top Left most switch) +* **Physical reset button**: Briefly press the button on the back of the PCB +* **Keycode in layout**: Press the Enter key on layer 1 which is mapped to `RESET` \ No newline at end of file diff --git a/keyboards/wolf/ts60/rules.mk b/keyboards/wolf/ts60/rules.mk new file mode 100644 index 000000000000..108859583016 --- /dev/null +++ b/keyboards/wolf/ts60/rules.mk @@ -0,0 +1,25 @@ +# MCU name +MCU = atmega32u4 + +# Processor frequency +F_CPU = 8000000 + +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + + +LAYOUTS = 60_ansi diff --git a/keyboards/wolf/ts60/ts60.c b/keyboards/wolf/ts60/ts60.c new file mode 100644 index 000000000000..199c79c9469b --- /dev/null +++ b/keyboards/wolf/ts60/ts60.c @@ -0,0 +1,14 @@ +/* +Copyright 2020 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "ts60.h" diff --git a/keyboards/wolf/ts60/ts60.h b/keyboards/wolf/ts60/ts60.h new file mode 100644 index 000000000000..a402d954830f --- /dev/null +++ b/keyboards/wolf/ts60/ts60.h @@ -0,0 +1,82 @@ +/* +Copyright 2020 +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "quantum.h" + +/* LAYOUT + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │0e │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ + * │10 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │1e │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │20 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2d │ + * ├───┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬───┬───┤ + * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │3e │ + * ├───┴┬──┴─┬─┴──┬┴───┴───┼───┴┬──┴───┴───┼───┼───┼───┼───┼───┤ + * │40 │41 │42 │44 │46 │48 │4a │4b │4c │4d │4e │ + * └────┴────┴────┴────────┴────┴──────────┴───┴───┴───┴───┴───┘ +*/ +#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, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3a, K3b, K3c, K3d, K3e, \ + K40, K41, K42, K44, K46, K48, K4a, K4b, K4c, K4d, K4e \ +) { \ + { K00, K02, K04, K06, K08, K0a, K0c, K0d }, \ + { K01, K03, K05, K07, K09, K0b, KC_NO, K0e }, \ + { K10, K12, K14, K16, K18, K1a, K1c, K1d }, \ + { KC_NO, K13, K15, K17, K19, K1b, KC_NO, K1e }, \ + { K20, K22, K24, K26, K28, K2a, K2c, K2d }, \ + { KC_NO, K23, K25, K27, K29, K2b, KC_NO, K2e }, \ + { K30, K32, K34, K36, K38, K3a, K3c, K3d }, \ + { K31, K33, K35, K37, K39, K3b, KC_NO, K3e }, \ + { K40, K42, K44, K46, K48, K4a, K4c, K4d }, \ + { K41, KC_NO, KC_NO, KC_NO, KC_NO, K4b, KC_NO, K4e } \ +} + +/* LAYOUT_60_ansi + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0e │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │10 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │1e │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │20 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2d │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ + * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3d │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ + * │40 │41 │42 │46 │4a │4b │4d │4e │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ + */ + #define LAYOUT_60_ansi( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0a, K0b, K0c, 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, K32, K33, K34, K35, K36, K37, K38, K39, K3a, K3b, K3d, \ + K40, K41, K42, K46, K4a, K4b, K4d, K4e \ + ) { \ + { K00, K02, K04, K06, K08, K0a, K0c, K0e }, \ + { K01, K03, K05, K07, K09, K0b, KC_NO, KC_NO }, \ + { K10, K12, K14, K16, K18, K1a, K1c, K1d }, \ + { KC_NO, K13, K15, K17, K19, K1b, KC_NO, K1e }, \ + { K20, K22, K24, K26, K28, K2a, K2c, KC_NO }, \ + { KC_NO, K23, K25, K27, K29, K2b, KC_NO, K2d }, \ + { K30, K32, K34, K36, K38, K3a, KC_NO, K3d }, \ + { KC_NO, K33, K35, K37, K39, K3b, KC_NO, KC_NO }, \ + { K40, K42, KC_NO, K46, KC_NO, K4a, KC_NO, K4d }, \ + { K41, KC_NO, KC_NO, KC_NO, KC_NO, K4b, KC_NO, K4e } \ +} + diff --git a/keyboards/wolfmarkclub/wm1/info.json b/keyboards/wolfmarkclub/wm1/info.json index 651d0d5e97c0..85befd1ec4f6 100644 --- a/keyboards/wolfmarkclub/wm1/info.json +++ b/keyboards/wolfmarkclub/wm1/info.json @@ -2,11 +2,9 @@ "keyboard_name": "Wolfmark Club WM1", "url": "", "maintainer": "qmk", - "width": 18.25, - "height": 5.25, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":8.75, "y":0}, {"x":9.75, "y":0}, {"x":10.75, "y":0}, {"x":11.75, "y":0}, {"x":12.75, "y":0}, {"x":13.75, "y":0}, {"x":14.75, "y":0}, {"x":15.75, "y":0}, {"x":17, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":8.25, "y":1}, {"x":9.25, "y":1}, {"x":10.25, "y":1}, {"x":11.25, "y":1}, {"x":12.25, "y":1}, {"x":13.25, "y":1}, {"x":14.25, "y":1}, {"x":15.25, "y":1, "w":1.5}, {"x":17, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":8.5, "y":2}, {"x":9.5, "y":2}, {"x":10.5, "y":2}, {"x":11.5, "y":2}, {"x":12.5, "y":2}, {"x":13.5, "y":2}, {"x":14.5, "y":2, "w":2.25}, {"x":17, "y":2}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}, {"x":12, "y":3}, {"x":13, "y":3}, {"x":14, "y":3, "w":1.75}, {"x":16.25, "y":3.25}, {"x":0, "y":4, "w":1.5}, {"x":3, "y":4, "w":1.5}, {"x":4.5, "y":4, "w":2}, {"x":6.5, "y":4}, {"x":8, "y":4, "w":2.75}, {"x":10.75, "y":4, "w":1.5}, {"x":13.25, "y":4, "w":1.5}, {"x":15.25, "y":4.25}, {"x":16.25, "y":4.25}, {"x":17.25, "y":4.25}] } } -} \ No newline at end of file +} diff --git a/keyboards/wolfmarkclub/wm1/rules.mk b/keyboards/wolfmarkclub/wm1/rules.mk index 85aa84f69ad6..5ef6a2e7fb8c 100644 --- a/keyboards/wolfmarkclub/wm1/rules.mk +++ b/keyboards/wolfmarkclub/wm1/rules.mk @@ -10,21 +10,17 @@ PROGRAM_CMD = echo 'CLI flashing not supported' >&2 # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = yes # 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 -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output +SLEEP_LED_ENABLE = yes LTO_ENABLE = yes # Enter lower-power sleep mode when on the ChibiOS idle thread diff --git a/keyboards/work_louder/loop/config.h b/keyboards/work_louder/loop/config.h index 011fe4f321a5..b40c1207fef5 100644 --- a/keyboards/work_louder/loop/config.h +++ b/keyboards/work_louder/loop/config.h @@ -24,7 +24,7 @@ along with this program. If not, see . #define PRODUCT_ID 0x1DF8 #define DEVICE_VER 0x0001 #define MANUFACTURER Work Louder -#define PRODUCT loop +#define PRODUCT Loop Pad /* key matrix size */ #define MATRIX_ROWS 2 @@ -40,7 +40,8 @@ along with this program. If not, see . * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) * */ -#define MATRIX_ROW_PINS { F5 } +#define MATRIX_ROW_PINS \ + { F5, NO_PIN } #define MATRIX_COL_PINS { B3, B2, B1, D6, D7, B4, B5, B6, C6, C7, F7, F6 } #define UNUSED_PINS @@ -63,20 +64,21 @@ along with this program. If not, see . //# define RGBLIGHT_HUE_STEP 8 //# define RGBLIGHT_SAT_STEP 8 //# define RGBLIGHT_VAL_STEP 8 -//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ -# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ -/*== all animations enable ==*/ -# define RGBLIGHT_ANIMATIONS +#define RGBLIGHT_LIMIT_VAL 120 /* The maximum brightness level */ +#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ /*== or choose animations ==*/ -//# define RGBLIGHT_EFFECT_BREATHING -//# define RGBLIGHT_EFFECT_RAINBOW_MOOD -//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL -//# define RGBLIGHT_EFFECT_SNAKE -//# define RGBLIGHT_EFFECT_KNIGHT -//# define RGBLIGHT_EFFECT_CHRISTMAS -//# define RGBLIGHT_EFFECT_STATIC_GRADIENT -//# define RGBLIGHT_EFFECT_RGB_TEST -//# define RGBLIGHT_EFFECT_ALTERNATING +#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_TWINKLE + +#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_STATIC_LIGHT +#define RGBLIGHT_DEFAULT_HUE 36 /*== customize breathing effect ==*/ /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ //# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 @@ -87,7 +89,59 @@ along with this program. If not, see . #define RGB_DI_PIN F1 #define DRIVER_LED_TOTAL 9 +#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120 #define RGB_MATRIX_DISABLE_KEYCODES +#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT // Sets the default mode, if none has been set +#define RGB_DISABLE_WHEN_USB_SUSPENDED + +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ #define DEBOUNCE 5 diff --git a/keyboards/work_louder/loop/info.json b/keyboards/work_louder/loop/info.json index 35ab8f93a878..6e5f76c7f434 100644 --- a/keyboards/work_louder/loop/info.json +++ b/keyboards/work_louder/loop/info.json @@ -2,8 +2,6 @@ "keyboard_name": "loop", "url": "", "maintainer": "Work Louder", - "width": 12, - "height": 1, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/work_louder/loop/keymaps/default/keymap.c b/keyboards/work_louder/loop/keymaps/default/keymap.c index 25ecb15a4865..a2e35d967044 100644 --- a/keyboards/work_louder/loop/keymaps/default/keymap.c +++ b/keyboards/work_louder/loop/keymaps/default/keymap.c @@ -15,10 +15,8 @@ */ #include QMK_KEYBOARD_H - - +// clang-format off const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Base */ [0] = LAYOUT( KC_MUTE, KC_MPLY, R_M_TOG, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, MO(1) ), @@ -29,9 +27,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { RESET, _______, R_M_TOG, R_M_MOD, R_M_HUI, R_M_HUD, R_M_SAI, R_M_SAD, R_M_VAI, R_M_VAD, _______, _______ ) }; +// clang-format on - -// void encoder_update_user(uint8_t index, bool clockwise) { +// bool encoder_update_user(uint8_t index, bool clockwise) { // if (index == 0) { // if (clockwise) { // tap_code(KC_VOLD); @@ -51,4 +49,5 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // rgb_matrix_step(); // } // } +// return false; // } diff --git a/keyboards/work_louder/loop/keymaps/via/keymap.c b/keyboards/work_louder/loop/keymaps/via/keymap.c index 134bce65dfaa..22113e836e35 100644 --- a/keyboards/work_louder/loop/keymaps/via/keymap.c +++ b/keyboards/work_louder/loop/keymaps/via/keymap.c @@ -15,11 +15,19 @@ */ #include QMK_KEYBOARD_H +#define LAYOUT_via( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ + k00_a, k00_b, k01_a, k01_b, k02_a, k02_b \ +) { \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \ + { k00_a, k00_b, k01_a, k01_b, k02_a, k02_b } \ +} + +// clang-format off const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Base */ [0] = LAYOUT_via( KC_MUTE, KC_MPLY, R_M_TOG, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, MO(1), - KC_VOLD, KC_VOLD, KC_MPRV, KC_MNXT, R_M_MOD, R_M_RMOD + KC_VOLU, KC_VOLD, KC_MNXT, KC_MPRV, R_M_MOD, R_M_RMOD ), [1] = LAYOUT_via( RESET, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, MO(2), _______, diff --git a/keyboards/work_louder/loop/keymaps/via/rules.mk b/keyboards/work_louder/loop/keymaps/via/rules.mk index 36b7ba9cbc98..6098ef3ad8fa 100644 --- a/keyboards/work_louder/loop/keymaps/via/rules.mk +++ b/keyboards/work_louder/loop/keymaps/via/rules.mk @@ -1,2 +1,4 @@ VIA_ENABLE = yes LTO_ENABLE = yes + +SRC += encoder_actions.c diff --git a/keyboards/work_louder/loop/loop.c b/keyboards/work_louder/loop/loop.c index 3551995317de..5c0d108d192b 100644 --- a/keyboards/work_louder/loop/loop.c +++ b/keyboards/work_louder/loop/loop.c @@ -43,14 +43,15 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { #endif #ifdef RGB_MATRIX_ENABLE +// clang-format off led_config_t g_led_config = { { { NO_LED, NO_LED, NO_LED, 8, 7, 6, 5, 4, 3, 2, 1, 0 } }, { - { 36, 32 }, { 55, 32 }, { 74, 32 }, { 93, 32 }, { 112, 32 }, { 131, 32 }, { 150, 32 }, { 169, 32 }, { 188, 32 } + {188, 32}, {169, 32}, {150, 32}, {131, 32}, {112, 32}, {93, 32}, {74, 32}, {55, 32}, {36, 32} }, { 4, 4, 4, 4, 4, 4, 4, 4, 4 } }; - +// clang-format on #endif diff --git a/keyboards/work_louder/loop/loop.h b/keyboards/work_louder/loop/loop.h index acad9d7b3c3a..cfc58146d1c8 100644 --- a/keyboards/work_louder/loop/loop.h +++ b/keyboards/work_louder/loop/loop.h @@ -33,11 +33,3 @@ ) { \ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b } \ } - -#define LAYOUT_via( \ - k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ - k00_a, k00_b, k01_a, k01_b, k02_a, k02_b \ -) { \ - { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \ - { k00_a, k00_b, k01_a, k01_b, k02_a, k02_b } \ -} diff --git a/keyboards/work_louder/loop/rules.mk b/keyboards/work_louder/loop/rules.mk index 4df169834cca..fcc7cd96a710 100644 --- a/keyboards/work_louder/loop/rules.mk +++ b/keyboards/work_louder/loop/rules.mk @@ -7,21 +7,21 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes +LTO_ENABLE = yes + RGB_MATRIX_ENABLE = yes RGB_MATRIX_DRIVER = WS2812 +LTO_ENABLE = yes -SRC += encoder_actions.c rgb_functions.c +SRC += rgb_functions.c diff --git a/keyboards/work_louder/nano/config.h b/keyboards/work_louder/nano/config.h index 4c897b7e51bd..ac12c8719985 100644 --- a/keyboards/work_louder/nano/config.h +++ b/keyboards/work_louder/nano/config.h @@ -24,15 +24,11 @@ along with this program. If not, see . #define PRODUCT_ID 0xE6EF #define DEVICE_VER 0x0001 #define MANUFACTURER Work Louder -#define PRODUCT nano +#define PRODUCT Nano Pad /* key matrix size */ -#define MATRIX_ROWS 1 -#ifdef VIA_ENABLE -# define MATRIX_COLS 5 -#else -# define MATRIX_COLS 3 -#endif +#define MATRIX_ROWS 1 +#define MATRIX_COLS 5 /* * Keyboard Matrix Assignments @@ -44,13 +40,13 @@ along with this program. If not, see . * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) * */ -#define MATRIX_ROW_PINS { F7 } -#define MATRIX_COL_PINS { B5, B6, C6 } -#define UNUSED_PINS +#define MATRIX_ROW_PINS \ + { F7 } +#define MATRIX_COL_PINS \ + { B5, B6, C6, NO_PIN, NO_PIN } /* COL2ROW, ROW2COL */ -#define DIODE_DIRECTION COL2ROW - +#define DIODE_DIRECTION COL2ROW //#define LED_NUM_LOCK_PIN B0 //#define LED_CAPS_LOCK_PIN B1 @@ -62,25 +58,26 @@ along with this program. If not, see . //#define BACKLIGHT_LEVELS 3 //#define BACKLIGHT_BREATHING -#define RGBLIGHT_DI_PIN C7 -# define RGBLED_NUM 6 +#define RGBLIGHT_DI_PIN C7 +#define RGBLED_NUM 6 //# define RGBLIGHT_HUE_STEP 8 //# define RGBLIGHT_SAT_STEP 8 //# define RGBLIGHT_VAL_STEP 8 -//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ -# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ -/*== all animations enable ==*/ -# define RGBLIGHT_ANIMATIONS +#define RGBLIGHT_LIMIT_VAL 120 /* The maximum brightness level */ +#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ /*== or choose animations ==*/ -//# define RGBLIGHT_EFFECT_BREATHING -//# define RGBLIGHT_EFFECT_RAINBOW_MOOD -//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL -//# define RGBLIGHT_EFFECT_SNAKE -//# define RGBLIGHT_EFFECT_KNIGHT -//# define RGBLIGHT_EFFECT_CHRISTMAS -//# define RGBLIGHT_EFFECT_STATIC_GRADIENT -//# define RGBLIGHT_EFFECT_RGB_TEST -//# define RGBLIGHT_EFFECT_ALTERNATING +#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_TWINKLE +#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_STATIC_LIGHT +#define RGBLIGHT_DEFAULT_HUE 170 + /*== customize breathing effect ==*/ /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ //# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 @@ -89,9 +86,60 @@ along with this program. If not, see . //# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 //#endif -#define RGB_DI_PIN F6 -#define DRIVER_LED_TOTAL 2 +#define RGB_DI_PIN F6 +#define DRIVER_LED_TOTAL 2 +#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120 #define RGB_MATRIX_DISABLE_KEYCODES +#define RGB_DISABLE_WHEN_USB_SUSPENDED + +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ #define DEBOUNCE 5 @@ -151,14 +199,21 @@ along with this program. If not, see . #define NO_ACTION_FUNCTION /* Bootmagic Lite key configuration */ -#define BOOTMAGIC_LITE_ROW 0 -#define BOOTMAGIC_LITE_COLUMN 3 - +#define BOOTMAGIC_LITE_ROW 0 +#define BOOTMAGIC_LITE_COLUMN 2 -#define ENCODERS_PAD_A { D7 } -#define ENCODERS_PAD_B { B4 } +#define ENCODERS_PAD_A \ + { D7 } +#define ENCODERS_PAD_B \ + { B4 } #define ENCODERS 1 -#define ENCODERS_CW_KEY { { 3, 0 } } -#define ENCODERS_CCW_KEY { { 4, 0 } } +#define ENCODERS_CW_KEY \ + { \ + { 3, 0 } \ + } +#define ENCODERS_CCW_KEY \ + { \ + { 4, 0 } \ + } diff --git a/keyboards/work_louder/nano/info.json b/keyboards/work_louder/nano/info.json index 37d25531f4fb..4c2104859773 100644 --- a/keyboards/work_louder/nano/info.json +++ b/keyboards/work_louder/nano/info.json @@ -2,8 +2,6 @@ "keyboard_name": "nano", "url": "", "maintainer": "Work Louder", - "width": 3, - "height": 1, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/work_louder/nano/keymaps/default/keymap.c b/keyboards/work_louder/nano/keymaps/default/keymap.c index e1b4bbcb982a..d4647657e492 100644 --- a/keyboards/work_louder/nano/keymaps/default/keymap.c +++ b/keyboards/work_louder/nano/keymaps/default/keymap.c @@ -15,23 +15,16 @@ */ #include QMK_KEYBOARD_H - - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Base */ - [0] = LAYOUT( - KC_PSCR, KC_LSFT, MO(1) - ), - [1] = LAYOUT( - RESET, KC_LCTL, _______ - ) -}; - + [0] = LAYOUT(KC_PSCR, KC_LSFT, MO(1)), + [1] = LAYOUT(RESET, KC_LCTL, _______)}; -// void encoder_update_user(uint8_t index, bool clockwise) { +// bool encoder_update_user(uint8_t index, bool clockwise) { // if (clockwise) { // tap_code(KC_PGDN); // } else { // tap_code(KC_PGUP); // } +// return false; // } diff --git a/keyboards/work_louder/nano/keymaps/via/keymap.c b/keyboards/work_louder/nano/keymaps/via/keymap.c index 84a54a4aac6e..7461172e07d6 100644 --- a/keyboards/work_louder/nano/keymaps/via/keymap.c +++ b/keyboards/work_louder/nano/keymaps/via/keymap.c @@ -16,6 +16,13 @@ #include QMK_KEYBOARD_H +#define LAYOUT_via( \ + k00, k01, k02, \ + k00_a, k00_b \ +) { \ + { k00, k01, k02, k00_a, k00_b } \ +} + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Base */ diff --git a/keyboards/work_louder/nano/keymaps/via/rules.mk b/keyboards/work_louder/nano/keymaps/via/rules.mk index 36b7ba9cbc98..6098ef3ad8fa 100644 --- a/keyboards/work_louder/nano/keymaps/via/rules.mk +++ b/keyboards/work_louder/nano/keymaps/via/rules.mk @@ -1,2 +1,4 @@ VIA_ENABLE = yes LTO_ENABLE = yes + +SRC += encoder_actions.c diff --git a/keyboards/work_louder/nano/nano.h b/keyboards/work_louder/nano/nano.h index 6f7463e6a478..6230d75ab775 100644 --- a/keyboards/work_louder/nano/nano.h +++ b/keyboards/work_louder/nano/nano.h @@ -33,10 +33,3 @@ ) { \ { k00, k01, k02 } \ } - -#define LAYOUT_via( \ - k00, k01, k02, \ - k00_a, k00_b \ -) { \ - { k00, k01, k02, k00_a, k00_b } \ -} diff --git a/keyboards/work_louder/nano/rules.mk b/keyboards/work_louder/nano/rules.mk index fc478334b746..5ece239d2b32 100644 --- a/keyboards/work_louder/nano/rules.mk +++ b/keyboards/work_louder/nano/rules.mk @@ -7,21 +7,20 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes +LTO_ENABLE = yes + RGB_MATRIX_ENABLE = yes RGB_MATRIX_DRIVER = WS2812 -SRC += encoder_actions.c rgb_functions.c +SRC += rgb_functions.c diff --git a/keyboards/work_louder/rgb_functions.c b/keyboards/work_louder/rgb_functions.c index 5a2043f9b408..c9106b397604 100644 --- a/keyboards/work_louder/rgb_functions.c +++ b/keyboards/work_louder/rgb_functions.c @@ -17,13 +17,160 @@ #include QMK_KEYBOARD_H #include "rgb_functions.h" -#if defined(RGBLIGHT_ENABLE) && defined(RGB_MATRIX_EANBLE) -# undef RGB_DI_PIN -# define RGBLIGHT_DI_PIN -# include "ws2812.c" +#ifdef RGBLIGHT_ENABLE +# include "ws2812.h" +# include +# include +# include + +# define pinmask(pin) (_BV((pin)&0xF)) + +/* + * Forward declare internal functions + * + * The functions take a byte-array and send to the data output as WS2812 bitstream. + * The length is the number of bytes to send - three per LED. + */ + +static inline void ws2812_sendarray_mask(uint8_t *data, uint16_t datlen, uint8_t masklo, uint8_t maskhi); + +/* + This routine writes an array of bytes with RGB values to the Dataout pin + using the fast 800kHz clockless WS2811/2812 protocol. +*/ + +// Timing in ns +# define w_zeropulse 350 +# define w_onepulse 900 +# define w_totalperiod 1250 + +// Fixed cycles used by the inner loop +# define w_fixedlow 2 +# define w_fixedhigh 4 +# define w_fixedtotal 8 + +// Insert NOPs to match the timing, if possible +# define w_zerocycles (((F_CPU / 1000) * w_zeropulse) / 1000000) +# define w_onecycles (((F_CPU / 1000) * w_onepulse + 500000) / 1000000) +# define w_totalcycles (((F_CPU / 1000) * w_totalperiod + 500000) / 1000000) + +// w1_nops - nops between rising edge and falling edge - low +# if w_zerocycles >= w_fixedlow +# define w1_nops (w_zerocycles - w_fixedlow) +# else +# define w1_nops 0 +# endif + +// w2_nops - nops between fe low and fe high +# if w_onecycles >= (w_fixedhigh + w1_nops) +# define w2_nops (w_onecycles - w_fixedhigh - w1_nops) +# else +# define w2_nops 0 +# endif + +// w3_nops - nops to complete loop +# if w_totalcycles >= (w_fixedtotal + w1_nops + w2_nops) +# define w3_nops (w_totalcycles - w_fixedtotal - w1_nops - w2_nops) +# else +# define w3_nops 0 +# endif + +// The only critical timing parameter is the minimum pulse length of the "0" +// Warn or throw error if this timing can not be met with current F_CPU settings. +# define w_lowtime ((w1_nops + w_fixedlow) * 1000000) / (F_CPU / 1000) +# if w_lowtime > 550 +# error "Light_ws2812: Sorry, the clock speed is too low. Did you set F_CPU correctly?" +# elif w_lowtime > 450 +# warning "Light_ws2812: The timing is critical and may only work on WS2812B, not on WS2812(S)." +# warning "Please consider a higher clockspeed, if possible" +# endif + +# define w_nop1 "nop \n\t" +# define w_nop2 "rjmp .+0 \n\t" +# define w_nop4 w_nop2 w_nop2 +# define w_nop8 w_nop4 w_nop4 +# define w_nop16 w_nop8 w_nop8 + +static inline void ws2812_sendarray_mask(uint8_t *data, uint16_t datlen, uint8_t masklo, uint8_t maskhi) { + uint8_t curbyte, ctr, sreg_prev; + + sreg_prev = SREG; + cli(); + + while (datlen--) { + curbyte = (*data++); + + asm volatile(" ldi %0,8 \n\t" + "loop%=: \n\t" + " out %2,%3 \n\t" // '1' [01] '0' [01] - re +# if (w1_nops & 1) + w_nop1 +# endif +# if (w1_nops & 2) + w_nop2 +# endif +# if (w1_nops & 4) + w_nop4 +# endif +# if (w1_nops & 8) + w_nop8 +# endif +# if (w1_nops & 16) + w_nop16 +# endif + " sbrs %1,7 \n\t" // '1' [03] '0' [02] + " out %2,%4 \n\t" // '1' [--] '0' [03] - fe-low + " lsl %1 \n\t" // '1' [04] '0' [04] +# if (w2_nops & 1) + w_nop1 +# endif +# if (w2_nops & 2) + w_nop2 +# endif +# if (w2_nops & 4) + w_nop4 +# endif +# if (w2_nops & 8) + w_nop8 +# endif +# if (w2_nops & 16) + w_nop16 +# endif + " out %2,%4 \n\t" // '1' [+1] '0' [+1] - fe-high +# if (w3_nops & 1) + w_nop1 +# endif +# if (w3_nops & 2) + w_nop2 +# endif +# if (w3_nops & 4) + w_nop4 +# endif +# if (w3_nops & 8) + w_nop8 +# endif +# if (w3_nops & 16) + w_nop16 +# endif + + " dec %0 \n\t" // '1' [+2] '0' [+2] + " brne loop%=\n\t" // '1' [+3] '0' [+4] + : "=&d"(ctr) + : "r"(curbyte), "I"(_SFR_IO_ADDR(PORTx_ADDRESS(RGBLIGHT_DI_PIN))), "r"(maskhi), "r"(masklo)); + } + + SREG = sreg_prev; +} void rgblight_call_driver(LED_TYPE *start_led, uint8_t num_leds) { - ws2812_setleds(start_led, num_leds); + DDRx_ADDRESS(RGBLIGHT_DI_PIN) |= pinmask(RGBLIGHT_DI_PIN); + + uint8_t masklo = ~(pinmask(RGBLIGHT_DI_PIN)) & PORTx_ADDRESS(RGBLIGHT_DI_PIN); + uint8_t maskhi = pinmask(RGBLIGHT_DI_PIN) | PORTx_ADDRESS(RGBLIGHT_DI_PIN); + + ws2812_sendarray_mask((uint8_t *)start_led, num_leds * sizeof(LED_TYPE), masklo, maskhi); + + _delay_us(WS2812_TRST_US); } #endif diff --git a/keyboards/work_louder/work_board/config.h b/keyboards/work_louder/work_board/config.h index 2ccc1be4c4cf..78444e744f80 100644 --- a/keyboards/work_louder/work_board/config.h +++ b/keyboards/work_louder/work_board/config.h @@ -27,8 +27,8 @@ along with this program. If not, see . #define PRODUCT Work Board /* key matrix size */ -#define MATRIX_ROWS 4 -#define MATRIX_COLS 13 +#define MATRIX_ROWS 4 +#define MATRIX_COLS 13 /* * Keyboard Matrix Assignments @@ -40,42 +40,35 @@ along with this program. If not, see . * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) * */ -#define MATRIX_ROW_PINS { F0, F1, F4, F5 } -#define MATRIX_COL_PINS { D3, D5, D4, D6, D7, B4, B5, B6, C6, C7, F7, F6, E6 } +#define MATRIX_ROW_PINS \ + { F0, F1, F4, F5 } +#define MATRIX_COL_PINS \ + { D3, D5, D4, D6, D7, B4, B5, B6, C6, C7, F7, F6, E6 } #define UNUSED_PINS /* COL2ROW, ROW2COL */ -#define DIODE_DIRECTION COL2ROW +#define DIODE_DIRECTION COL2ROW -#define LED_NUM_LOCK_PIN B2 -#define LED_CAPS_LOCK_PIN B3 -#define LED_SCROLL_LOCK_PIN B7 -//#define LED_COMPOSE_PIN B3 -//#define LED_KANA_PIN B4 - -//#define BACKLIGHT_PIN B7 -//#define BACKLIGHT_LEVELS 3 -//#define BACKLIGHT_BREATHING - -#define RGBLIGHT_DI_PIN D2 -# define RGBLED_NUM 26 +#define RGBLIGHT_DI_PIN D2 +#define RGBLED_NUM 26 //# define RGBLIGHT_HUE_STEP 8 //# define RGBLIGHT_SAT_STEP 8 //# define RGBLIGHT_VAL_STEP 8 -# define RGBLIGHT_LIMIT_VAL 100 /* The maximum brightness level */ -# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ -/*== all animations enable ==*/ -# define RGBLIGHT_ANIMATIONS +#define RGBLIGHT_LIMIT_VAL 120 /* The maximum brightness level */ +#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ /*== or choose animations ==*/ -//# define RGBLIGHT_EFFECT_BREATHING -//# define RGBLIGHT_EFFECT_RAINBOW_MOOD -//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL -//# define RGBLIGHT_EFFECT_SNAKE -//# define RGBLIGHT_EFFECT_KNIGHT -//# define RGBLIGHT_EFFECT_CHRISTMAS -//# define RGBLIGHT_EFFECT_STATIC_GRADIENT -//# define RGBLIGHT_EFFECT_RGB_TEST -//# define RGBLIGHT_EFFECT_ALTERNATING +#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_TWINKLE + +#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_STATIC_GRADIENT + 9 +#define RGBLIGHT_DEFAULT_HUE 213 /*== customize breathing effect ==*/ /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ //# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 @@ -84,10 +77,60 @@ along with this program. If not, see . //# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 //#endif -#define RGB_DI_PIN D0 -#define DRIVER_LED_TOTAL 50 -#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 100 +#define RGB_DI_PIN D1 +#define DRIVER_LED_TOTAL 49 +#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120 #define RGB_MATRIX_DISABLE_KEYCODES +#define RGB_DISABLE_WHEN_USB_SUSPENDED + +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ #define DEBOUNCE 5 @@ -146,14 +189,24 @@ along with this program. If not, see . #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION -#define ENCODERS_PAD_A { B0 } -#define ENCODERS_PAD_B { B1 } +#define ENCODERS_PAD_A \ + { B0 } +#define ENCODERS_PAD_B \ + { B1 } #define ENCODERS 1 -#define ENCODERS_CW_KEY { { 12, 1 } } -#define ENCODERS_CCW_KEY { { 12, 2 } } +#define ENCODERS_CW_KEY \ + { \ + { 12, 1 } \ + } +#define ENCODERS_CCW_KEY \ + { \ + { 12, 2 } \ + } /* Bootmagic Lite key configuration */ //#define BOOTMAGIC_LITE_ROW 0 //#define BOOTMAGIC_LITE_COLUMN 0 + +#define VIA_EEPROM_LAYOUT_OPTIONS_DEFAULT 0x1 diff --git a/keyboards/work_louder/work_board/info.json b/keyboards/work_louder/work_board/info.json index a3313cd7bc3a..7ee3f576e762 100644 --- a/keyboards/work_louder/work_board/info.json +++ b/keyboards/work_louder/work_board/info.json @@ -2,8 +2,6 @@ "keyboard_name": "work board", "url": "", "maintainer": "Work Louder", - "width": 13, - "height": 4, "layouts": { "LAYOUT_2u_space": { "layout": [ diff --git a/keyboards/work_louder/work_board/keymaps/default/keymap.c b/keyboards/work_louder/work_board/keymaps/default/keymap.c index a3415d1e1e8e..01c96ecedbe2 100644 --- a/keyboards/work_louder/work_board/keymaps/default/keymap.c +++ b/keyboards/work_louder/work_board/keymaps/default/keymap.c @@ -42,9 +42,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Qwerty * ,-----------------------------------------------------------------------------------. - * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * | Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * | Tab | A | S | D | F | G | H | J | K | L | ; | " | * |------+------+------+------+------+------+------+------+------+------+------+------| * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | * |------+------+------+------+------+------+------+------+------+------+------+------| @@ -52,17 +52,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_QWERTY] = LAYOUT( - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, TD(ENC_TAP), - KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, TD(ENC_TAP), + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT ), /* Colemak * ,-----------------------------------------------------------------------------------. - * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | + * | Esc | Q | W | F | P | G | J | L | U | Y | ; | Bksp | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Esc | A | R | S | T | D | H | N | E | I | O | " | + * | Tab | A | R | S | T | D | H | N | E | I | O | " | * |------+------+------+------+------+------+------+------+------+------+------+------| * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | * |------+------+------+------+------+------+------+------+------+------+------+------| @@ -70,17 +70,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_COLEMAK] = LAYOUT( - KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, _______, - KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + KC_ESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, _______, + KC_TAB, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT ), /* Dvorak * ,-----------------------------------------------------------------------------------. - * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp | + * | Esc | " | , | . | P | Y | F | G | C | R | L | Bksp | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Esc | A | O | E | U | I | D | H | T | N | S | / | + * | Tab | A | O | E | U | I | D | H | T | N | S | / | * |------+------+------+------+------+------+------+------+------+------+------+------| * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | * |------+------+------+------+------+------+------+------+------+------+------+------| @@ -88,8 +88,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_DVORAK] = LAYOUT( - KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, _______, - KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, + KC_ESC, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, _______, + KC_TAB, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT ), diff --git a/keyboards/work_louder/work_board/keymaps/drashna/config.h b/keyboards/work_louder/work_board/keymaps/drashna/config.h new file mode 100644 index 000000000000..5ea4dc7e4836 --- /dev/null +++ b/keyboards/work_louder/work_board/keymaps/drashna/config.h @@ -0,0 +1,17 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once diff --git a/keyboards/work_louder/work_board/keymaps/drashna/keymap.c b/keyboards/work_louder/work_board/keymaps/drashna/keymap.c new file mode 100644 index 000000000000..3bbb81bf04eb --- /dev/null +++ b/keyboards/work_louder/work_board/keymaps/drashna/keymap.c @@ -0,0 +1,217 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "drashna.h" + +#define PLNK_1 SP_LWER +#define PLNK_2 BK_LWER +#define PLNK_3 DL_RAIS +#define PLNK_4 ET_RAIS + +/* + * The `LAYOUT_ortho_4x12_base` macro is a template to allow the use of identical + * modifiers for the default layouts (eg QWERTY, Colemak, Dvorak, etc), so + * that there is no need to set them up for each layout, and modify all of + * them if I want to change them. This helps to keep consistency and ease + * of use. K## is a placeholder to pass through the individual keycodes + */ +// clang-format off +#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) +#define LAYOUT_base( \ + K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ + K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \ + K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \ + ) \ + LAYOUT_wrapper( \ + KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_DEL, KC_MUTE, \ + LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(K1B), \ + KC_MLSF, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A), KC_ENT, \ + OS_LSFT, OS_LCTL, OS_LALT, OS_LGUI, PLNK_1, PLNK_2, PLNK_3, PLNK_4, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ + ) +#define LAYOUT_base_wrapper(...) LAYOUT_base(__VA_ARGS__) + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_DEFAULT_LAYER_1] = LAYOUT_base_wrapper( + _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, + _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, + _________________QWERTY_L3_________________, _________________QWERTY_R3_________________ + ), + + [_DEFAULT_LAYER_2] = LAYOUT_base_wrapper( + ______________COLEMAK_MOD_DH_L1____________, ______________COLEMAK_MOD_DH_R1____________, + ______________COLEMAK_MOD_DH_L2____________, ______________COLEMAK_MOD_DH_R2____________, + ______________COLEMAK_MOD_DH_L3____________, ______________COLEMAK_MOD_DH_R3____________ + ), + [_DEFAULT_LAYER_3] = LAYOUT_base_wrapper( + _________________COLEMAK_L1________________, _________________COLEMAK_R1________________, + _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, + _________________COLEMAK_L3________________, _________________COLEMAK_R3________________ + ), + + [_DEFAULT_LAYER_4] = LAYOUT_base_wrapper( + _________________DVORAK_L1_________________, _________________DVORAK_R1_________________, + _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, + _________________DVORAK_L3_________________, _________________DVORAK_R3_________________ + ), + + [_LOWER] = LAYOUT_wrapper( + KC_TILD, _________________LOWER_L1__________________, _________________LOWER_R1__________________, KC_BSPC, _______, + KC_DEL, _________________LOWER_L2__________________, _________________LOWER_R2__________________, KC_PIPE, + _______, _________________LOWER_L3__________________, _________________LOWER_R3__________________, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_RAISE] = LAYOUT_wrapper( + KC_GRV, _________________RAISE_L1__________________, _________________RAISE_R1__________________, KC_BSPC, _______, + KC_DEL, _________________RAISE_L2__________________, _________________RAISE_R2__________________, KC_BSLS, + _______, _________________RAISE_L3__________________, _________________RAISE_R3__________________, _______, + _______, _______, _______, _______, _______, _______, _______, _________________RAISE_R3__________________ + ), + + [_ADJUST] = LAYOUT_wrapper( + KC_MAKE, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, KC_RST, _______, + VRSN, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, EEP_RST, + _______, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, RGB_IDL, + KEYLOCK, _______, _______, _______, _______, KC_NUKE, _______, _______, _______, _______, _______, TG_MODS + ) + +}; + +#ifdef ENCODER_ENABLE +# ifdef ENCODER_MAP_ENABLE +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [_DEFAULT_LAYER_1] = { { KC_DOWN, KC_UP } }, + [_DEFAULT_LAYER_2] = { { _______, _______ } }, + [_DEFAULT_LAYER_3] = { { _______, _______ } }, + [_DEFAULT_LAYER_4] = { { _______, _______ } }, + [_GAMEPAD] = { { _______, _______ } }, + [_DIABLO] = { { _______, _______ } }, + [_MOUSE] = { { KC_WH_D, KC_WH_U } }, + [_MEDIA] = { { _______, _______ } }, + [_RAISE] = { { KC_VOLD, KC_VOLU } }, + [_LOWER] = { { RGB_MOD, RGB_RMOD} }, + [_ADJUST] = { { CK_DOWN, CK_UP } }, +}; +// clang-format on +# else +bool encoder_update_user(uint8_t index, bool clockwise) { + switch (get_highest_layer(layer_state)) { + case _RAISE: + clockwise ? rgblight_step() : rgblight_step_reverse(); + break; + case _LOWER: + clockwise ? rgb_matrix_step() : rgb_matrix_step_reverse(); + break; + default: + clockwise ? tap_code(KC_VOLU) : tap_code(KC_VOLD); + break; + } + return false; +} +# endif // ENCODER_ENABLE + +#endif + +void rgb_matrix_indicators_user(void) {} + +void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { + uint8_t this_mod = get_mods(); + uint8_t this_led = host_keyboard_leds(); + uint8_t this_osm = get_oneshot_mods(); +#define THUMB_LED 6 +#define RGB_MATRIX_INDICATOR_SET_COLOR_wrapper(...) RGB_MATRIX_INDICATOR_SET_COLOR(__VA_ARGS__) + if (!userspace_config.rgb_layer_change) { + switch (get_highest_layer(layer_state | default_layer_state)) { + case _GAMEPAD: + rgb_matrix_layer_helper(HSV_ORANGE, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); + break; + case _DIABLO: + rgb_matrix_layer_helper(HSV_RED, 1, rgb_matrix_config.speed * 8, LED_FLAG_MODIFIER, led_min, led_max); + break; + case _RAISE: + rgb_matrix_layer_helper(HSV_YELLOW, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); + break; + case _LOWER: + rgb_matrix_layer_helper(HSV_GREEN, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); + break; + case _ADJUST: + rgb_matrix_layer_helper(HSV_RED, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); + break; + case _DEFAULT_LAYER_1: + rgb_matrix_layer_helper(DEFAULT_LAYER_1_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); + break; + case _DEFAULT_LAYER_2: + rgb_matrix_layer_helper(DEFAULT_LAYER_2_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); + break; + case _DEFAULT_LAYER_3: + rgb_matrix_layer_helper(DEFAULT_LAYER_3_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); + break; + case _DEFAULT_LAYER_4: + rgb_matrix_layer_helper(DEFAULT_LAYER_4_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); + break; + } + } + + extern bool host_driver_disabled; + if (host_driver_disabled) { + RGB_MATRIX_INDICATOR_SET_COLOR_wrapper(THUMB_LED, RGB_OFF); + } else { + switch (get_highest_layer(default_layer_state)) { + case _DEFAULT_LAYER_1: + RGB_MATRIX_INDICATOR_SET_COLOR_wrapper(THUMB_LED, DEFAULT_LAYER_1_RGB); + break; + case _DEFAULT_LAYER_2: + RGB_MATRIX_INDICATOR_SET_COLOR_wrapper(THUMB_LED, DEFAULT_LAYER_2_RGB); + break; + case _DEFAULT_LAYER_3: + RGB_MATRIX_INDICATOR_SET_COLOR_wrapper(THUMB_LED, DEFAULT_LAYER_3_RGB); + break; + case _DEFAULT_LAYER_4: + RGB_MATRIX_INDICATOR_SET_COLOR_wrapper(THUMB_LED, DEFAULT_LAYER_4_RGB); + break; + } + } + + if ((this_mod | this_osm) & MOD_MASK_SHIFT || this_led & (1 << USB_LED_CAPS_LOCK)) { + if (!layer_state_is(_ADJUST)) { + RGB_MATRIX_INDICATOR_SET_COLOR(12, 0x00, 0xFF, 0x00); + RGB_MATRIX_INDICATOR_SET_COLOR(13, 0x00, 0xFF, 0x00); + } + RGB_MATRIX_INDICATOR_SET_COLOR(24, 0x00, 0xFF, 0x00); + } + if ((this_mod | this_osm) & MOD_MASK_CTRL) { + RGB_MATRIX_INDICATOR_SET_COLOR(11, 0xFF, 0x00, 0x00); + RGB_MATRIX_INDICATOR_SET_COLOR(23, 0xFF, 0x00, 0x00); + RGB_MATRIX_INDICATOR_SET_COLOR(14, 0xFF, 0x00, 0x00); + } + if ((this_mod | this_osm) & MOD_MASK_GUI) { + RGB_MATRIX_INDICATOR_SET_COLOR(9, 0xFF, 0xD9, 0x00); + } + if ((this_mod | this_osm) & MOD_MASK_ALT) { + RGB_MATRIX_INDICATOR_SET_COLOR(10, 0x00, 0x00, 0xFF); + RGB_MATRIX_INDICATOR_SET_COLOR(25, 0x00, 0x00, 0xFF); + RGB_MATRIX_INDICATOR_SET_COLOR(36, 0x00, 0x00, 0xFF); + } + if (layer_state_is(_LOWER)) { + RGB_MATRIX_INDICATOR_SET_COLOR(7, 0x00, 0xFF, 0x00); + RGB_MATRIX_INDICATOR_SET_COLOR(8, 0x00, 0xFF, 0x00); + } + if (layer_state_is(_RAISE)) { + RGB_MATRIX_INDICATOR_SET_COLOR(4, 0xFF, 0xFF, 0x00); + RGB_MATRIX_INDICATOR_SET_COLOR(5, 0xFF, 0xFF, 0x00); + } +} diff --git a/keyboards/work_louder/work_board/keymaps/drashna/rules.mk b/keyboards/work_louder/work_board/keymaps/drashna/rules.mk new file mode 100644 index 000000000000..363f2d0edb58 --- /dev/null +++ b/keyboards/work_louder/work_board/keymaps/drashna/rules.mk @@ -0,0 +1,6 @@ +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +EXTRAKEY_ENABLE = yes +TAP_DANCE_ENABLE = no +NKRO_ENABLE = yes +RGBLIGHT_STARTUP_ANIMATION = yes +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/work_louder/work_board/keymaps/via/keymap.c b/keyboards/work_louder/work_board/keymaps/via/keymap.c index 6bdc75ac22dc..5675adf2edfe 100644 --- a/keyboards/work_louder/work_board/keymaps/via/keymap.c +++ b/keyboards/work_louder/work_board/keymaps/via/keymap.c @@ -27,14 +27,28 @@ enum tap_dances { ENC_TAP, }; -#define LOWER KC_FN13 -#define RAISE KC_FN23 +#define LOWER FN_MO13 +#define RAISE FN_MO23 +#define LAYOUT_via( \ + 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, k0c_a, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k0c_b, \ + k30, k31, k32, k33, k34, k35, k36, k37, 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, k0c_a }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k0c_b }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, ___ } \ +} + +// clang-format off const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_QWERTY] = LAYOUT_via( - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, USER09, - KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_VOLD, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , KC_VOLU, + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, USER09, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_VOLU, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , KC_VOLD, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT ), @@ -59,7 +73,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) }; - +// clang-format on void dance_enc_finished(qk_tap_dance_state_t *state, void *user_data) { if (state->count == 1) { @@ -93,3 +107,23 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } + +layer_state_t layer_state_set_user(layer_state_t state) { + writePinLow(B2); + writePinLow(B3); + writePinLow(B7); + + switch (get_highest_layer(state)) { + case 1: + writePinHigh(B2); + break; + case 2: + writePinHigh(B3); + break; + case 3: + writePinHigh(B7); + break; + } + + return state; +} diff --git a/keyboards/work_louder/work_board/keymaps/via/rules.mk b/keyboards/work_louder/work_board/keymaps/via/rules.mk index 791d5ab50213..7964f4279c7e 100644 --- a/keyboards/work_louder/work_board/keymaps/via/rules.mk +++ b/keyboards/work_louder/work_board/keymaps/via/rules.mk @@ -1,2 +1,4 @@ VIA_ENABLE = yes TAP_DANCE_ENABLE = yes + +SRC += encoder_actions.c diff --git a/keyboards/work_louder/work_board/rules.mk b/keyboards/work_louder/work_board/rules.mk index 0731edd415ab..5ece239d2b32 100644 --- a/keyboards/work_louder/work_board/rules.mk +++ b/keyboards/work_louder/work_board/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes LTO_ENABLE = yes @@ -26,4 +23,4 @@ LTO_ENABLE = yes RGB_MATRIX_ENABLE = yes RGB_MATRIX_DRIVER = WS2812 -SRC += encoder_actions.c rgb_functions.c +SRC += rgb_functions.c diff --git a/keyboards/work_louder/work_board/work_board.c b/keyboards/work_louder/work_board/work_board.c index 32d36e940669..7a8edc1a9ea5 100644 --- a/keyboards/work_louder/work_board/work_board.c +++ b/keyboards/work_louder/work_board/work_board.c @@ -18,7 +18,9 @@ #if !defined(VIA_ENABLE) && defined(ENCODER_ENABLE) bool encoder_update_kb(uint8_t index, bool clockwise) { - if (!encoder_update_user(index, clockwise)) { return false; } + if (!encoder_update_user(index, clockwise)) { + return false; + } if (clockwise) { tap_code(KC_VOLD); } else { @@ -28,13 +30,18 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { } #endif -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE # ifdef RGB_MATRIX_ENABLE # error Cannot run OLED and Per Key RGB at the same time due to pin conflicts # endif -__attribute__((weak)) oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_90; } +oled_rotation_t oled_init_kb(oled_rotation_t rotation) { + return OLED_ROTATION_90; +} -__attribute__((weak)) void oled_task_user(void) { +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } oled_write_P(PSTR("LAYER"), false); oled_write_P(PSTR("Lower"), layer_state_is(3)); oled_write_P(PSTR("Raise"), layer_state_is(4)); @@ -68,26 +75,61 @@ __attribute__((weak)) void oled_task_user(void) { oled_write_P(logo[0][1], !keymap_config.swap_lctl_lgui); oled_write_P(logo[1][1], keymap_config.swap_lctl_lgui); oled_write_P(PSTR(" NKRO"), keymap_config.nkro); + + return false; } #endif - #ifdef RGB_MATRIX_ENABLE +// clang-format off led_config_t g_led_config = { { - { 49, 48, 47, 46, 45, 43, 42, 41, 40, 39, 38, 37}, - { 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36 }, - { 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13 }, - { 0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12 }, + { 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48 }, + { 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25 }, + { 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24 }, + { 12, 11, 10, 9, 8, 7, 5, 4, 3, 2, 1, 0} }, { - { 223, 63 }, { 203, 63 }, { 183, 63 }, { 162, 63 }, { 142, 63 }, { 122, 63 }, { 101, 63 }, { 81, 63 }, { 61, 63 }, { 40, 63 }, { 20, 63 }, { 0, 63 }, + { 223, 63 }, { 203, 63 }, { 183, 63 }, { 162, 63 }, { 142, 63 }, { 122, 63 }, { 112, 63 }, { 101, 63 }, { 81, 63 }, { 61, 63 }, { 40, 63 }, { 20, 63 }, { 0, 63 }, { 0, 42 }, { 20, 42 }, { 40, 42 }, { 61, 42 }, { 81, 42 }, { 101, 42 }, { 122, 42 }, { 142, 42 }, { 162, 42 }, { 183, 42 }, { 203, 42 }, { 223, 42 }, { 223, 21 }, { 203, 21 }, { 183, 21 }, { 162, 21 }, { 142, 21 }, { 122, 21 }, { 101, 21 }, { 81, 21 }, { 61, 21 }, { 40, 21 }, { 20, 21 }, { 0, 21 }, - { 0, 0 }, { 20, 0 }, { 40, 0 }, { 61, 0 }, { 81, 0 }, { 101, 0 }, { 122, 0 }, { 132, 0 }, { 142, 0 }, { 162, 0 }, { 183, 0 }, { 203, 0 }, { 223, 0 }, + { 0, 0 }, { 20, 0 }, { 40, 0 }, { 61, 0 }, { 81, 0 }, { 101, 0 }, { 122, 0 }, { 142, 0 }, { 162, 0 }, { 183, 0 }, { 203, 0 }, { 223, 0 } }, { + 1, 1, 1, 1, 1, 4,4,4, 1, 1, 1, 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, - 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, - 1, 1, 1, 1, 1, 4,4,4, 1, 1, 1, 1, 1 + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1 } }; +// clang-format on + +__attribute__((weak)) void rgb_matrix_indicators_user(void) { +# ifdef VIA_ENABLE + static bool layout_2u = false; + static uint16_t timer = 0; + if (timer_elapsed(timer) > 500) { + timer = timer_read(); + layout_2u = (bool)via_get_layout_options(); + } + if (layout_2u) { + rgb_matrix_set_color(5, 0, 0, 0); + rgb_matrix_set_color(7, 0, 0, 0); + } else { + rgb_matrix_set_color(6, 0, 0, 0); + } +# else + rgb_matrix_set_color(5, 0, 0, 0); + rgb_matrix_set_color(7, 0, 0, 0); +# endif +} + +void keyboard_pre_init_kb(void) { + setPinOutput(B2); + setPinOutput(B3); + setPinOutput(B7); + + writePinLow(B2); + writePinLow(B3); + writePinLow(B7); + + keyboard_pre_init_user(); +} #endif diff --git a/keyboards/work_louder/work_board/work_board.h b/keyboards/work_louder/work_board/work_board.h index 25a881a19c3b..f1bc74b704bc 100644 --- a/keyboards/work_louder/work_board/work_board.h +++ b/keyboards/work_louder/work_board/work_board.h @@ -55,29 +55,3 @@ { 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_2u_space_via( \ - 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, k0c_a, \ - k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k0c_b, \ - k30, k31, k32, k33, k34, k35, k37, 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, k0c_a }, \ - { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k0c_b }, \ - { k30, k31, k32, k33, k34, k35, ___, k37, k38, k39, k3a, k3b, ___ } \ -} - -#define LAYOUT_via( \ - 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, k0c_a, \ - k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k0c_b, \ - k30, k31, k32, k33, k34, k35, k36, k37, 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, k0c_a }, \ - { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k0c_b }, \ - { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, ___ } \ -} diff --git a/keyboards/wsk/alpha9/info.json b/keyboards/wsk/alpha9/info.json index 1ffa66389dd1..7ee04515e1b8 100644 --- a/keyboards/wsk/alpha9/info.json +++ b/keyboards/wsk/alpha9/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Alpha9", "url": "", "maintainer": "Worldspawn00", - "width": 13, - "height": 3, "layouts": { "LAYOUT": { "layout": [{"label":"7", "x":0, "y":0}, {"label":"8", "x":1, "y":0}, {"label":"9", "x":2, "y":0}, {"label":"Q", "x":3.5, "y":0}, {"label":"W", "x":4.5, "y":0}, {"label":"E", "x":5.5, "y":0}, {"label":"R", "x":6.5, "y":0}, {"label":"T", "x":7.5, "y":0}, {"label":"Y", "x":8.5, "y":0}, {"label":"U", "x":9.5, "y":0}, {"label":"I", "x":10.5, "y":0}, {"label":"O", "x":11.5, "y":0}, {"label":"P", "x":12.5, "y":0}, {"label":"4", "x":0, "y":1}, {"label":"5", "x":1, "y":1}, {"label":"6", "x":2, "y":1}, {"label":"A", "x":3.5, "y":1}, {"label":"S", "x":4.5, "y":1}, {"label":"D", "x":5.5, "y":1}, {"label":"F", "x":6.5, "y":1}, {"label":"G", "x":7.5, "y":1}, {"label":"H", "x":8.5, "y":1}, {"label":"J", "x":9.5, "y":1}, {"label":"K", "x":10.5, "y":1}, {"label":"L", "x":11.5, "y":1}, {"label":"Enter", "x":12.5, "y":1}, {"label":"1", "x":0, "y":2}, {"label":"2", "x":1, "y":2}, {"label":"3", "x":2, "y":2}, {"label":"Z", "x":4, "y":2}, {"label":"X", "x":5, "y":2}, {"label":"C", "x":6, "y":2}, {"label":"V", "x":7, "y":2}, {"x":8, "y":2, "w":2}, {"label":"B", "x":10, "y":2}, {"label":"N", "x":11, "y":2}, {"label":"M", "x":12, "y":2}] diff --git a/keyboards/wsk/alpha9/rules.mk b/keyboards/wsk/alpha9/rules.mk index 676a400f7d40..1cd137b4774c 100644 --- a/keyboards/wsk/alpha9/rules.mk +++ b/keyboards/wsk/alpha9/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/wsk/g4m3ralpha/info.json b/keyboards/wsk/g4m3ralpha/info.json index c55bc0226243..532bbf37b0a7 100644 --- a/keyboards/wsk/g4m3ralpha/info.json +++ b/keyboards/wsk/g4m3ralpha/info.json @@ -2,8 +2,6 @@ "keyboard_name": "G4M3R Alpha", "url": "", "maintainer": "Worldspawn00", - "width": 10, - "height": 4, "layouts": { "LAYOUT": { "layout": [{"label":"!", "x":0.5, "y":0}, {"label":"@", "x":1.5, "y":0}, {"label":"#", "x":2.5, "y":0}, {"label":"$", "x":3.5, "y":0}, {"label":"%", "x":4.5, "y":0}, {"label":"Q", "x":0, "y":1}, {"label":"W", "x":1, "y":1}, {"label":"E", "x":2, "y":1}, {"label":"R", "x":3, "y":1}, {"label":"T", "x":4, "y":1}, {"label":"Y", "x":5, "y":1}, {"label":"U", "x":6, "y":1}, {"label":"I", "x":7, "y":1}, {"label":"O", "x":8, "y":1}, {"label":"P", "x":9, "y":1}, {"label":"A", "x":0, "y":2}, {"label":"S", "x":1, "y":2}, {"label":"D", "x":2, "y":2}, {"label":"F", "x":3, "y":2}, {"label":"G", "x":4, "y":2}, {"label":"H", "x":5, "y":2}, {"label":"J", "x":6, "y":2}, {"label":"K", "x":7, "y":2}, {"label":"L", "x":8, "y":2}, {"label":"Enter", "x":9, "y":2}, {"label":"Z", "x":0.5, "y":3}, {"label":"X", "x":1.5, "y":3}, {"label":"C", "x":2.5, "y":3}, {"label":"V", "x":3.5, "y":3}, {"x":4.5, "y":3, "w":2}, {"label":"B", "x":6.5, "y":3}, {"label":"N", "x":7.5, "y":3}, {"label":"M", "x":8.5, "y":3}] diff --git a/keyboards/wsk/g4m3ralpha/rules.mk b/keyboards/wsk/g4m3ralpha/rules.mk index 676a400f7d40..1cd137b4774c 100644 --- a/keyboards/wsk/g4m3ralpha/rules.mk +++ b/keyboards/wsk/g4m3ralpha/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/wsk/gothic50/info.json b/keyboards/wsk/gothic50/info.json index 4d2274466b3c..f30c860c5c3a 100644 --- a/keyboards/wsk/gothic50/info.json +++ b/keyboards/wsk/gothic50/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Gothic50", "url": "https://qmk.fm/keyboards", "maintainer": "worldspawn00", - "width": 16.5, - "height": 4.25, "layouts": { "LAYOUT": { "layout": [{"label":"Tab", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":8.25, "y":0}, {"label":"U", "x":9.25, "y":0}, {"label":"I", "x":10.25, "y":0}, {"label":"O", "x":11.25, "y":0}, {"label":"P", "x":12.25, "y":0}, {"label":"{", "x":13.25, "y":0}, {"label":"}", "x":14.25, "y":0}, {"x":15.5, "y":0}, {"label":"Caps Lock", "x":0, "y":1, "w":1.25}, {"label":"A", "x":1.25, "y":1}, {"label":"S", "x":2.25, "y":1}, {"label":"D", "x":3.25, "y":1}, {"label":"F", "x":4.25, "y":1}, {"label":"G", "x":5.25, "y":1}, {"label":"H", "x":8.5, "y":1}, {"label":"J", "x":9.5, "y":1}, {"label":"K", "x":10.5, "y":1}, {"label":"L", "x":11.5, "y":1}, {"label":":", "x":12.5, "y":1}, {"label":"Enter", "x":13.5, "y":1, "w":1.75}, {"x":15.5, "y":1}, {"label":"Shift", "x":0, "y":2, "w":1.75}, {"label":"Z", "x":1.75, "y":2}, {"label":"X", "x":2.75, "y":2}, {"label":"C", "x":3.75, "y":2}, {"label":"V", "x":4.75, "y":2}, {"label":"B", "x":5.75, "y":2}, {"x":8, "y":2}, {"label":"N", "x":9, "y":2}, {"label":"M", "x":10, "y":2}, {"label":"<", "x":11, "y":2}, {"label":">", "x":12, "y":2}, {"label":"?", "x":13, "y":2}, {"x":15.5, "y":2}, {"x":14.25, "y":2.25}, {"label":"Ctrl", "x":0, "y":3, "w":1.25}, {"label":"Win", "x":1.25, "y":3, "w":1.25}, {"label":"Alt", "x":3.25, "y":3, "w":1.25}, {"x":4.5, "y":3}, {"x":5.5, "y":3, "w":1.25}, {"x":8, "y":3, "w":1.75}, {"label":"Alt", "x":9.75, "y":3}, {"label":"Win", "x":10.75, "y":3, "w":1.25}, {"x":13.25, "y":3.25}, {"x":14.25, "y":3.25}, {"x":15.25, "y":3.25}] diff --git a/keyboards/wsk/gothic50/rules.mk b/keyboards/wsk/gothic50/rules.mk index 268690e3c669..09cd43ea2291 100644 --- a/keyboards/wsk/gothic50/rules.mk +++ b/keyboards/wsk/gothic50/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/wsk/gothic70/info.json b/keyboards/wsk/gothic70/info.json index 230f0ecdde54..2a38432225e7 100644 --- a/keyboards/wsk/gothic70/info.json +++ b/keyboards/wsk/gothic70/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Gothic70", "url": "https://qmk.fm/keyboards", "maintainer": "worldspawn00", - "width": 18, - "height": 5.25, "layouts": { "LAYOUT": { "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":8.75, "y":0}, {"label":"*", "x":9.75, "y":0}, {"label":"(", "x":10.75, "y":0}, {"label":")", "x":11.75, "y":0}, {"label":"_", "x":12.75, "y":0}, {"label":"+", "x":13.75, "y":0}, {"label":"BS", "x":14.75, "y":0}, {"x":15.75, "y":0}, {"x":17, "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":8.25, "y":1}, {"label":"U", "x":9.25, "y":1}, {"label":"I", "x":10.25, "y":1}, {"label":"O", "x":11.25, "y":1}, {"label":"P", "x":12.25, "y":1}, {"label":"{", "x":13.25, "y":1}, {"label":"}", "x":14.25, "y":1}, {"label":"|", "x":15.25, "y":1, "w":1.5}, {"x":17, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":8.5, "y":2}, {"label":"J", "x":9.5, "y":2}, {"label":"K", "x":10.5, "y":2}, {"label":"L", "x":11.5, "y":2}, {"label":":", "x":12.5, "y":2}, {"label":"\"", "x":13.5, "y":2}, {"label":"Enter", "x":14.5, "y":2, "w":2.25}, {"x":17, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"x":8, "y":3}, {"label":"N", "x":9, "y":3}, {"label":"M", "x":10, "y":3}, {"label":"<", "x":11, "y":3}, {"label":">", "x":12, "y":3}, {"label":"?", "x":13, "y":3}, {"label":"Shift", "x":14, "y":3, "w":1.75}, {"x":16, "y":3.25}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":3, "y":4, "w":1.5}, {"x":4.5, "y":4, "w":2.25}, {"x":6.75, "y":4}, {"x":8.5, "y":4, "w":2.75}, {"label":"Alt", "x":11.25, "y":4, "w":1.5}, {"label":"Win", "x":13.5, "y":4, "w":1.25}, {"x":15, "y":4.25}, {"x":16, "y":4.25}, {"x":17, "y":4.25}] diff --git a/keyboards/wsk/gothic70/rules.mk b/keyboards/wsk/gothic70/rules.mk index 268690e3c669..09cd43ea2291 100644 --- a/keyboards/wsk/gothic70/rules.mk +++ b/keyboards/wsk/gothic70/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/wsk/houndstooth/info.json b/keyboards/wsk/houndstooth/info.json index 97c57adc8eb5..7ea46e5f55a4 100644 --- a/keyboards/wsk/houndstooth/info.json +++ b/keyboards/wsk/houndstooth/info.json @@ -2,11 +2,9 @@ "keyboard_name": "Houndstooth", "url": "https://qmk.fm/keyboards", "maintainer": "worldspawn00", - "width": 12.5, - "height": 4, "layouts": { "LAYOUT": { "layout": [{"label":"Tab", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6.5, "y":0}, {"label":"U", "x":7.5, "y":0}, {"label":"I", "x":8.5, "y":0}, {"label":"O", "x":9.5, "y":0}, {"label":"P", "x":10.5, "y":0}, {"label":"Back Space", "x":11.5, "y":0}, {"label":"Esc", "x":0, "y":1}, {"label":"A", "x":1, "y":1}, {"label":"S", "x":2, "y":1}, {"label":"D", "x":3, "y":1}, {"label":"F", "x":4, "y":1}, {"label":"G", "x":5, "y":1}, {"label":"H", "x":6.5, "y":1}, {"label":"J", "x":7.5, "y":1}, {"label":"K", "x":8.5, "y":1}, {"label":"L", "x":9.5, "y":1}, {"label":";", "x":10.5, "y":1}, {"label":"'", "x":11.5, "y":1}, {"label":"Shift", "x":0, "y":2}, {"label":"Z", "x":1, "y":2}, {"label":"X", "x":2, "y":2}, {"label":"C", "x":3, "y":2}, {"label":"V", "x":4, "y":2}, {"label":"B", "x":5, "y":2}, {"label":"N", "x":6.5, "y":2}, {"label":"M", "x":7.5, "y":2}, {"label":",", "x":8.5, "y":2}, {"label":".", "x":9.5, "y":2}, {"label":"/", "x":10.5, "y":2}, {"label":"Return", "x":11.5, "y":2}, {"x":0, "y":3}, {"label":"Ctrl", "x":1, "y":3}, {"label":"Alt", "x":2, "y":3}, {"label":"Super", "x":3, "y":3}, {"label":"⇓", "x":4, "y":3}, {"x":5, "y":3}, {"x":6.5, "y":3}, {"label":"⇑", "x":7.5, "y":3}, {"label":"←", "x":8.5, "y":3}, {"label":"↓", "x":9.5, "y":3}, {"label":"↑", "x":10.5, "y":3}, {"label":"→", "x":11.5, "y":3}] } } -} \ No newline at end of file +} diff --git a/keyboards/wsk/houndstooth/rules.mk b/keyboards/wsk/houndstooth/rules.mk index b1bdf25e3d38..538b6244a126 100644 --- a/keyboards/wsk/houndstooth/rules.mk +++ b/keyboards/wsk/houndstooth/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 -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 diff --git a/keyboards/wsk/jerkin/info.json b/keyboards/wsk/jerkin/info.json index 528fa0f0d92a..0e5b43306851 100644 --- a/keyboards/wsk/jerkin/info.json +++ b/keyboards/wsk/jerkin/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Jerkin", "url": "https://qmk.fm/keyboards", "maintainer": "worldspawn00", - "width": 15.25, - "height": 3, "layouts": { "LAYOUT": { "layout": [{"label":"Esc", "x":0.5, "y":0}, {"label":"Q", "x":1.5, "y":0}, {"label":"W", "x":2.5, "y":0}, {"label":"E", "x":3.5, "y":0}, {"label":"R", "x":4.5, "y":0}, {"label":"T", "x":5.5, "y":0}, {"label":"Y", "x":7.75, "y":0}, {"label":"U", "x":8.75, "y":0}, {"label":"I", "x":9.75, "y":0}, {"label":"O", "x":10.75, "y":0}, {"label":"P", "x":11.75, "y":0}, {"label":"{", "x":12.75, "y":0}, {"label":"Back
Space", "x":13.75, "y":0}, {"label":"Tab", "x":0.25, "y":1, "w":1.25}, {"label":"A", "x":1.5, "y":1}, {"label":"S", "x":2.5, "y":1}, {"label":"D", "x":3.5, "y":1}, {"label":"F", "x":4.5, "y":1}, {"label":"G", "x":5.5, "y":1}, {"label":"H", "x":8.25, "y":1}, {"label":"J", "x":9.25, "y":1}, {"label":"K", "x":10.25, "y":1}, {"label":"L", "x":11.25, "y":1}, {"label":"\"", "x":12.25, "y":1}, {"label":"Enter", "x":13.25, "y":1, "w":1.75}, {"label":"Shift", "x":0, "y":2, "w":1.75}, {"label":"Z", "x":1.75, "y":2}, {"label":"X", "x":2.75, "y":2}, {"label":"C", "x":3.75, "y":2}, {"label":"V", "x":4.75, "y":2}, {"label":"B", "x":5.75, "y":2}, {"x":8, "y":2}, {"label":"N", "x":9, "y":2}, {"label":"M", "x":10, "y":2}, {"label":"<", "x":11, "y":2}, {"label":">", "x":12, "y":2}, {"label":"?", "x":13, "y":2}, {"label":"Shift", "x":14, "y":2, "w":1.25}] diff --git a/keyboards/wsk/jerkin/rules.mk b/keyboards/wsk/jerkin/rules.mk index 7a4212cd73a4..34bf1a29d621 100644 --- a/keyboards/wsk/jerkin/rules.mk +++ b/keyboards/wsk/jerkin/rules.mk @@ -2,28 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -# 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 = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow diff --git a/keyboards/wsk/kodachi50/info.json b/keyboards/wsk/kodachi50/info.json index 5f1222dec42b..423098c5cc30 100644 --- a/keyboards/wsk/kodachi50/info.json +++ b/keyboards/wsk/kodachi50/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Kodachi50", "url": "https://qmk.fm/keyboards", "maintainer": "worldspawn00", - "width": 15, - "height": 4, "layouts": { "LAYOUT": { "layout": [{"label":"Tab", "x":0, "y":0, "w":1.5}, {"label":"Q", "x":1.5, "y":0}, {"label":"W", "x":2.5, "y":0}, {"label":"E", "x":3.5, "y":0}, {"label":"R", "x":4.5, "y":0}, {"label":"T", "x":5.5, "y":0}, {"label":"{", "x":6.5, "y":0}, {"label":"}", "x":7.5, "y":0}, {"label":"Y", "x":8.5, "y":0}, {"label":"U", "x":9.5, "y":0}, {"label":"I", "x":10.5, "y":0}, {"label":"O", "x":11.5, "y":0}, {"label":"P", "x":12.5, "y":0}, {"label":"Backspace", "x":13.5, "y":0, "w":1.5}, {"label":"Caps Lock", "x":0, "y":1, "w":1.25}, {"label":"A", "x":1.25, "y":1}, {"label":"S", "x":2.25, "y":1}, {"label":"D", "x":3.25, "y":1}, {"label":"F", "x":4.25, "y":1}, {"label":"G", "x":5.25, "y":1}, {"label":"|", "x":6.25, "y":1, "w":1.25}, {"label":"Alt", "x":7.5, "y":1, "w":1.25}, {"label":"H", "x":8.75, "y":1}, {"label":"J", "x":9.75, "y":1}, {"label":"K", "x":10.75, "y":1}, {"label":"L", "x":11.75, "y":1}, {"label":"\"", "x":12.75, "y":1}, {"label":"Enter", "x":13.75, "y":1, "w":1.25}, {"label":"Shift", "x":0, "y":2}, {"label":"Z", "x":1, "y":2}, {"label":"X", "x":2, "y":2}, {"label":"C", "x":3, "y":2}, {"label":"V", "x":4, "y":2}, {"label":"B", "x":5, "y":2}, {"label":"~", "x":6, "y":2}, {"label":"_", "x":7, "y":2}, {"label":"+", "x":8, "y":2}, {"label":"N", "x":9, "y":2}, {"label":"M", "x":10, "y":2}, {"label":"<", "x":11, "y":2}, {"label":">", "x":12, "y":2}, {"label":"?", "x":13, "y":2}, {"label":":", "x":14, "y":2}, {"label":"Ctrl", "x":0, "y":3, "w":1.25}, {"label":"Win", "x":1.25, "y":3, "w":1.25}, {"label":"Alt", "x":2.5, "y":3, "w":1.25}, {"x":3.75, "y":3, "w":2.75}, {"x":6.5, "y":3}, {"x":7.5, "y":3, "w":2.25}, {"label":"Win", "x":9.75, "y":3, "w":1.25}, {"label":"Left", "x":11, "y":3}, {"label":"Down", "x":12, "y":3}, {"label":"Up", "x":13, "y":3}, {"label":"Right", "x":14, "y":3}] diff --git a/keyboards/wsk/kodachi50/rules.mk b/keyboards/wsk/kodachi50/rules.mk index 9de501227485..e5e3cec4c340 100644 --- a/keyboards/wsk/kodachi50/rules.mk +++ b/keyboards/wsk/kodachi50/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 -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 diff --git a/keyboards/wsk/pain27/info.json b/keyboards/wsk/pain27/info.json index 07eecacb6a93..f8bc4f46f145 100644 --- a/keyboards/wsk/pain27/info.json +++ b/keyboards/wsk/pain27/info.json @@ -2,11 +2,9 @@ "keyboard_name": "Pain27v2", "url": "https://qmk.fm/keyboards", "maintainer": "worldspawn00", - "width": 11, - "height": 4, "layouts": { "LAYOUT": { "layout": [{"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"A", "x":1.25, "y":1}, {"label":"S", "x":2.25, "y":1}, {"label":"D", "x":3.25, "y":1}, {"label":"F", "x":4.25, "y":1}, {"label":"G", "x":5.25, "y":1}, {"label":"H", "x":6.25, "y":1}, {"label":"J", "x":7.25, "y":1}, {"label":"K", "x":8.25, "y":1}, {"label":"L", "x":9.25, "y":1}, {"label":"Z", "x":1.75, "y":2}, {"label":"X", "x":2.75, "y":2}, {"label":"C", "x":3.75, "y":2}, {"label":"V", "x":4.75, "y":2}, {"label":"B", "x":5.75, "y":2}, {"label":"N", "x":6.75, "y":2}, {"label":"M", "x":7.75, "y":2}, {"x":3.25, "y":3, "w":6.25}] } } -} \ No newline at end of file +} diff --git a/keyboards/wsk/pain27/rules.mk b/keyboards/wsk/pain27/rules.mk index e939ba823959..8f6f9b6b5f63 100644 --- a/keyboards/wsk/pain27/rules.mk +++ b/keyboards/wsk/pain27/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) +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 -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 diff --git a/keyboards/wsk/sl40/info.json b/keyboards/wsk/sl40/info.json index 15b2822b643e..f70b3f8d515f 100644 --- a/keyboards/wsk/sl40/info.json +++ b/keyboards/wsk/sl40/info.json @@ -2,15 +2,12 @@ "keyboard_name": "SL40", "url": "https://qmk.fm/keyboards", "maintainer": "worldspawn00", - "width": 14, - "height": 4, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":0, "y":1, "w":1.25}, {"x":1.25, "y":1}, {"x":2.25, "y":1}, {"x":3.25, "y":1}, {"x":4.25, "y":1}, {"x":5.25, "y":1}, {"x":6.25, "y":1}, {"x":7.25, "y":1}, {"x":8.25, "y":1}, {"x":9.25, "y":1}, {"x":10.25, "y":1}, {"x":11.25, "y":1}, {"x":12.25, "y":1, "w":1.75}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2, "w":1.25}, {"x":12, "y":2}, {"x":13, "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":10, "y":3}, {"x":11, "y":3}, {"x":12, "y":3}, {"x":13, "y":3}] }, "LAYOUT_all": { - "layout": [{"label":"Esc", "x":0, "y":1}, {"label":"Q", "x":1, "y":1}, {"label":"W", "x":2, "y":1}, {"label":"E", "x":3, "y":1}, {"label":"R", "x":4, "y":1},{"label":"T", "x":5, "y":1}, {"label":"Y", "x":6, "y":1}, {"label":"U", "x":7, "y":1}, {"label":"I", "x":8, "y":1}, {"label":"O", "x":9, "y":1}, {"label":"P", "x":10, "y":1}, {"label":"{", "x":11, "y":1}, {"label":"}", "x":12, "y":1}, {"label":"BS", "x":13, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.25}, {"label":"A", "x":1.25, "y":2}, {"label":"S", "x":2.25, "y":2}, {"label":"D", "x":3.25, "y":2}, {"label":"F", "x":4.25, "y":2}, {"label":"G", "x":5.25, "y":2}, {"label":"H", "x":6.25, "y":2}, {"label":"J", "x":7.25, "y":2}, {"label":"K", "x":8.25, "y":2}, {"label":"L", "x":9.25, "y":2}, {"label":":", "x":10.25, "y":2}, {"label":"\"", "x":11.25, "y":2}, {"label":"Enter", "x":12.25, "y":2, "w":1.75}, {"label":"Shift", "x":0, "y":3, "w":1.75}, {"label":"Z", "x":1.75, "y":3}, {"label":"X", "x":2.75, "y":3}, {"label":"C", "x":3.75, "y":3}, {"label":"V", "x":4.75, "y":3}, {"label":"B", "x":5.75, "y":3}, {"label":"N", "x":6.75, "y":3}, {"label":"M", "x":7.75, "y":3}, {"label":"<", "x":8.75, "y":3}, {"label":">", "x":9.75, "y":3}, {"label":"?", "x":10.75, "y":3}, {"x":11.75, "y":3}, {"label":"Shift", "x":12.75, "y":3, "w":1.25}, {"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}, {"x":4.75, "y":4, "w":2.25}, {"x":7, "y":4, "w":2}, {"x":9, "y":4}, {"label":"Alt", "x":10, "y":4}, {"label":"Win", "x":11, "y":4}, {"label":"Menu", "x":12, "y":4}, {"label":"Ctrl", "x":13, "y":4}] + "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0},{"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"{", "x":11, "y":0}, {"label":"}", "x":12, "y":0}, {"label":"BS", "x":13, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.25}, {"label":"A", "x":1.25, "y":1}, {"label":"S", "x":2.25, "y":1}, {"label":"D", "x":3.25, "y":1}, {"label":"F", "x":4.25, "y":1}, {"label":"G", "x":5.25, "y":1}, {"label":"H", "x":6.25, "y":1}, {"label":"J", "x":7.25, "y":1}, {"label":"K", "x":8.25, "y":1}, {"label":"L", "x":9.25, "y":1}, {"label":":", "x":10.25, "y":1}, {"label":"\"", "x":11.25, "y":1}, {"label":"Enter", "x":12.25, "y":1, "w":1.75}, {"label":"Shift", "x":0, "y":2, "w":1.75}, {"label":"Z", "x":1.75, "y":2}, {"label":"X", "x":2.75, "y":2}, {"label":"C", "x":3.75, "y":2}, {"label":"V", "x":4.75, "y":2}, {"label":"B", "x":5.75, "y":2}, {"label":"N", "x":6.75, "y":2}, {"label":"M", "x":7.75, "y":2}, {"label":"<", "x":8.75, "y":2}, {"label":">", "x":9.75, "y":2}, {"label":"?", "x":10.75, "y":2}, {"x":11.75, "y":2}, {"label":"Shift", "x":12.75, "y":2, "w":1.25}, {"label":"Ctrl", "x":0, "y":3, "w":1.25}, {"label":"Win", "x":1.25, "y":3, "w":1.25}, {"label":"Alt", "x":2.5, "y":3, "w":1.25}, {"x":3.75, "y":3}, {"x":4.75, "y":3, "w":2.25}, {"x":7, "y":3, "w":2}, {"x":9, "y":3}, {"label":"Alt", "x":10, "y":3}, {"label":"Win", "x":11, "y":3}, {"label":"Menu", "x":12, "y":3}, {"label":"Ctrl", "x":13, "y":3}] } } } - diff --git a/keyboards/wsk/sl40/rules.mk b/keyboards/wsk/sl40/rules.mk index 9de501227485..e5e3cec4c340 100644 --- a/keyboards/wsk/sl40/rules.mk +++ b/keyboards/wsk/sl40/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 -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 diff --git a/keyboards/wsk/tkl30/info.json b/keyboards/wsk/tkl30/info.json index e19c678c6b12..7d6878351469 100644 --- a/keyboards/wsk/tkl30/info.json +++ b/keyboards/wsk/tkl30/info.json @@ -2,8 +2,6 @@ "keyboard_name": "TKL30", "url": "https://qmk.fm/keyboards", "maintainer": "worldspawn00", - "width": 18.25, - "height": 3.25, "layouts": { "LAYOUT": { "layout": [{"label":"Tab", "x":0, "y":0.25, "w":1.5}, {"label":"Q", "x":1.5, "y":0.25}, {"label":"W", "x":2.5, "y":0.25}, {"label":"E", "x":3.5, "y":0.25}, {"label":"R", "x":4.5, "y":0.25}, {"label":"T", "x":5.5, "y":0.25}, {"label":"Y", "x":6.5, "y":0.25}, {"label":"U", "x":7.5, "y":0.25}, {"label":"I", "x":8.5, "y":0.25}, {"label":"O", "x":9.5, "y":0.25}, {"label":"P", "x":10.5, "y":0.25}, {"label":"{", "x":11.5, "y":0.25}, {"label":"}", "x":12.5, "y":0.25}, {"label":"|", "x":13.5, "y":0.25, "w":1.5}, {"label":"Ctrl", "x":0, "y":1.25, "w":1.75}, {"label":"A", "x":1.75, "y":1.25}, {"label":"S", "x":2.75, "y":1.25}, {"label":"D", "x":3.75, "y":1.25}, {"label":"F", "x":4.75, "y":1.25}, {"label":"G", "x":5.75, "y":1.25}, {"label":"H", "x":6.75, "y":1.25}, {"label":"J", "x":7.75, "y":1.25}, {"label":"K", "x":8.75, "y":1.25}, {"label":"L", "x":9.75, "y":1.25}, {"label":":", "x":10.75, "y":1.25}, {"label":"\"", "x":11.75, "y":1.25}, {"label":"Enter", "x":12.75, "y":1.25, "w":2.25}, {"label":"\u2191", "x":16.25, "y":1.25}, {"label":"Shift", "x":0, "y":2.25, "w":1.25}, {"label":"Alt", "x":1.25, "y":2.25}, {"label":"Z", "x":2.25, "y":2.25}, {"label":"X", "x":3.25, "y":2.25}, {"label":"C", "x":4.25, "y":2.25}, {"label":"V", "x":5.25, "y":2.25}, {"x":6.25, "y":2.25, "w":2}, {"label":"B", "x":8.25, "y":2.25}, {"label":"N", "x":9.25, "y":2.25}, {"label":"M", "x":10.25, "y":2.25}, {"label":"<", "x":11.25, "y":2.25}, {"label":">", "x":12.25, "y":2.25}, {"label":"Fn", "x":13.25, "y":2.25, "w":1.75}, {"label":"\u2190", "x":15.25, "y":2.25}, {"label":"\u2193", "x":16.25, "y":2.25}, {"label":"\u2192", "x":17.25, "y":2.25}] diff --git a/keyboards/wsk/tkl30/rules.mk b/keyboards/wsk/tkl30/rules.mk index 689894be2824..b97001801122 100644 --- a/keyboards/wsk/tkl30/rules.mk +++ b/keyboards/wsk/tkl30/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/wuque/ikki68/info.json b/keyboards/wuque/ikki68/info.json index 914d26e82b0a..05507cd4547a 100644 --- a/keyboards/wuque/ikki68/info.json +++ b/keyboards/wuque/ikki68/info.json @@ -2,8 +2,6 @@ "keyboard_name": "ikki68", "url": "https://ikki68.com/", "maintainer": "qmk", - "width": 17.5, - "height": 5, "layouts": { "LAYOUT_68_ansi": { "layout": [ diff --git a/keyboards/wuque/ikki68/rules.mk b/keyboards/wuque/ikki68/rules.mk index bb9bbe201771..408551a727b8 100644 --- a/keyboards/wuque/ikki68/rules.mk +++ b/keyboards/wuque/ikki68/rules.mk @@ -9,18 +9,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LAYOUTS = 68_ansi diff --git a/keyboards/wuque/ikki68_aurora/config.h b/keyboards/wuque/ikki68_aurora/config.h new file mode 100644 index 000000000000..1981ac22e72c --- /dev/null +++ b/keyboards/wuque/ikki68_aurora/config.h @@ -0,0 +1,72 @@ +/* +Copyright 2021 wuquestudio + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x706B +#define PRODUCT_ID 0x0011 +#define DEVICE_VER 0x0001 +#define MANUFACTURER wuque studio +#define PRODUCT ikki68 Aurora + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 16 + +#define MATRIX_ROW_PINS { B7, B3, B2, B1, B0 } +#define MATRIX_COL_PINS { D5, D3, D2, D1, D0, F0, F1, E6, B5, B4, D7, D6, D4, F4, F5, F6 } + +#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 LED_CAPS_LOCK_PIN F7 +#define LED_PIN_ON_STATE 0 + + +#define RGB_DI_PIN E2 +#ifdef RGB_DI_PIN + #define RGBLED_NUM 20 + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 200 /* The maximum brightness level */ + #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*======= RGB function=======*/ +/*== all animations enable ==*/ + #define RGBLIGHT_ANIMATIONS +// /*== or choose animations ==*/ +// #define RGBLIGHT_EFFECT_BREATHING +// #define RGBLIGHT_EFFECT_RAINBOW_MOOD +// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL +// #define RGBLIGHT_EFFECT_SNAKE +// #define RGBLIGHT_EFFECT_KNIGHT +// #define RGBLIGHT_EFFECT_CHRISTMAS +// #define RGBLIGHT_EFFECT_STATIC_GRADIENT +// #define RGBLIGHT_EFFECT_RGB_TEST +// #define RGBLIGHT_EFFECT_ALTERNATING +#endif diff --git a/keyboards/wuque/ikki68_aurora/ikki68_aurora.c b/keyboards/wuque/ikki68_aurora/ikki68_aurora.c new file mode 100644 index 000000000000..8e4e4e5889d2 --- /dev/null +++ b/keyboards/wuque/ikki68_aurora/ikki68_aurora.c @@ -0,0 +1,17 @@ +/* Copyright 2021 wuquestudio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "ikki68_aurora.h" diff --git a/keyboards/wuque/ikki68_aurora/ikki68_aurora.h b/keyboards/wuque/ikki68_aurora/ikki68_aurora.h new file mode 100644 index 000000000000..ad08c7b14844 --- /dev/null +++ b/keyboards/wuque/ikki68_aurora/ikki68_aurora.h @@ -0,0 +1,215 @@ +/* Copyright 2021 wuquestudio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + + +/* Standard Arrangement + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │2d │ │0e │0f │ ISO + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┤ ┌─────┐ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │ │1e │1f │ │1d │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┘ ┌──┴┐ │ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │ │2c │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ └───┴────┘ + * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │ │3e │ + * ├────┼───┴┬──┴─┬─┴───┴──┬┴───┼───┴───┴──┬┴───┼───┴┬────┬┴─┬─┴─┼───┼───┐ + * │40 │41 │42 │44 │46 │48 │4a │4b │4c │ │4d │4e │4f │ + * └────┴────┴────┴────────┴────┴──────────┴────┴────┴────┘ └───┴───┴───┘ + */ +#define LAYOUT_all( \ + 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, K3A, K3B, K3C, K3D, K3E, \ + K40, K41, K42, 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, 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, KC_NO, KC_NO }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, KC_NO }, \ + { K40, K41, K42, KC_NO, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, K4B, K4C, K4D, K4E, K4F }, \ +} + + +/* LAYOUT_68_ansi + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │ │0e │0f │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │ │1e │1f │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┘ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐ + * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │ │3e │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬──┬─┴─┼───┼───┐ + * │40 │41 │42 │46 │4a │4b │4c │ │4d │4e │4f │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┘ └───┴───┴───┘ + */ +#define LAYOUT_68_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, K1E, K1F, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, \ + K40, K41, K42, K46, K4A, 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, K1E, K1F }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, KC_NO, KC_NO }, \ + { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KC_NO, K3E, KC_NO }, \ + { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E, K4F }, \ +} + + +/* LAYOUT_68_ansi_split_lshift + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │ │0e │0f │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │ │1e │1f │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┘ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐ + * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │ │3e │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬──┬─┴─┼───┼───┐ + * │40 │41 │42 │46 │4a │4b │4c │ │4d │4e │4f │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┘ └───┴───┴───┘ + */ +#define LAYOUT_68_ansi_split_lshift( \ + 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, K3A, K3B, K3C, K3E, \ + K40, K41, K42, K46, K4A, 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, K1E, K1F }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, KC_NO, KC_NO }, \ + { K30, k31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KC_NO, K3E, KC_NO }, \ + { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E, K4F }, \ +} + + +/* LAYOUT_68_ansi_split_rshift + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │ │0e │0f │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │ │1e │1f │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┘ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ + * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │ │3e │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴─┬─┴─┼───┼───┐ + * │40 │41 │42 │46 │4a │4b │4c │ │4d │4e │4f │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┘ └───┴───┴───┘ + */ +#define LAYOUT_68_ansi_split_rshift( \ + 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, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K40, K41, K42, K46, K4A, 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, K1E, K1F }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, KC_NO, KC_NO }, \ + { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, KC_NO }, \ + { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E, K4F }, \ +} + + +/* LAYOUT_68_ansi_split_bs + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │2d │ │0e │0f │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │ │1e │1f │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┘ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐ + * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │ │3e │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬──┬─┴─┼───┼───┐ + * │40 │41 │42 │46 │4a │4b │4c │ │4d │4e │4f │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┘ └───┴───┴───┘ + */ +#define LAYOUT_68_ansi_split_bs( \ + 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, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, \ + K40, K41, K42, K46, K4A, 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, K1E, K1F }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO, KC_NO }, \ + { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KC_NO, K3E, KC_NO }, \ + { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E, K4F }, \ +} + + +/* LAYOUT_68_iso + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │ │0e │0f │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │ │1e │1f │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ └───┴───┘ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───┐ + * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │ │3e │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬──┬─┴─┼───┼───┐ + * │40 │41 │42 │46 │4a │4b │4c │ │4d │4e │4f │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┘ └───┴───┴───┘ + */ +#define LAYOUT_68_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, K1E, K1F, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K1D, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, \ + K40, K41, K42, K46, K4A, 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, K1E, K1F }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, KC_NO, KC_NO }, \ + { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KC_NO, K3E, KC_NO }, \ + { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E, K4F }, \ +} + + +/* LAYOUT_68_ansi_split_space + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │ │0e │0f │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │ │1e │1f │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┘ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐ + * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │ │3e │ + * ├────┬───┴┬──┴─┬─┴───┴──┬┴───┼───┴───┴──┬┴───┼───┴┬────┬──┬─┴─┼───┼───┐ + * │40 │41 │42 │44 │46 │48 │4a │4b │4c │ │4d │4e │4f │ + * └────┴────┴────┴────────┴────┴──────────┴────┴────┴────┘ └───┴───┴───┘ + */ +#define LAYOUT_68_ansi_split_space( \ + 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, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, \ + K40, K41, K42, 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, 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, KC_NO, KC_NO, KC_NO }, \ + { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KC_NO, K3E, KC_NO }, \ + { K40, K41, K42, KC_NO, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, K4B, K4C, K4D, K4E, K4F }, \ +} diff --git a/keyboards/wuque/ikki68_aurora/info.json b/keyboards/wuque/ikki68_aurora/info.json new file mode 100644 index 000000000000..d29ab48433ef --- /dev/null +++ b/keyboards/wuque/ikki68_aurora/info.json @@ -0,0 +1,549 @@ +{ + "keyboard_name": "ikki68_aurora", + "url": "https://ikki68.com/", + "maintainer": "qmk", + "layouts": { + "LAYOUT_68_ansi": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "1", "x": 1, "y": 0 }, + { "label": "2", "x": 2, "y": 0 }, + { "label": "3", "x": 3, "y": 0 }, + { "label": "4", "x": 4, "y": 0 }, + { "label": "5", "x": 5, "y": 0 }, + { "label": "6", "x": 6, "y": 0 }, + { "label": "7", "x": 7, "y": 0 }, + { "label": "8", "x": 8, "y": 0 }, + { "label": "9", "x": 9, "y": 0 }, + { "label": "0", "x": 10, "y": 0 }, + { "label": "-", "x": 11, "y": 0 }, + { "label": "=", "x": 12, "y": 0 }, + { "label": "Backspace", "x": 13, "y": 0, "w": 2 }, + { "label": "Insert", "x": 15.25, "y": 0 }, + { "label": "PageUp", "x": 16.25, "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": "Delete", "x": 15.25, "y": 1 }, + { "label": "PageDown", "x": 16.25, "y": 1 }, + + { "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 }, + { "label": "A", "x": 1.75, "y": 2 }, + { "label": "S", "x": 2.75, "y": 2 }, + { "label": "D", "x": 3.75, "y": 2 }, + { "label": "F", "x": 4.75, "y": 2 }, + { "label": "G", "x": 5.75, "y": 2 }, + { "label": "H", "x": 6.75, "y": 2 }, + { "label": "J", "x": 7.75, "y": 2 }, + { "label": "K", "x": 8.75, "y": 2 }, + { "label": "L", "x": 9.75, "y": 2 }, + { "label": ";", "x": 10.75, "y": 2 }, + { "label": "'", "x": 11.75, "y": 2 }, + { "label": "Enter", "x": 12.75, "y": 2, "w": 2.25 }, + + { "label": "Shift", "x": 0, "y": 3, "w": 2.25 }, + { "label": "Z", "x": 2.25, "y": 3 }, + { "label": "X", "x": 3.25, "y": 3 }, + { "label": "C", "x": 4.25, "y": 3 }, + { "label": "V", "x": 5.25, "y": 3 }, + { "label": "B", "x": 6.25, "y": 3 }, + { "label": "N", "x": 7.25, "y": 3 }, + { "label": "M", "x": 8.25, "y": 3 }, + { "label": ",", "x": 9.25, "y": 3 }, + { "label": ".", "x": 10.25, "y": 3 }, + { "label": "/", "x": 11.25, "y": 3 }, + { "label": "Shift", "x": 12.25, "y": 3, "w": 2.75 }, + { "label": "\u2191", "x": 15.25, "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": "Ctrl", "x": 11.25, "y": 4, "w": 1.25 }, + { "label": "Menu", "x": 12.5, "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_all": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "1", "x": 1, "y": 0 }, + { "label": "2", "x": 2, "y": 0 }, + { "label": "3", "x": 3, "y": 0 }, + { "label": "4", "x": 4, "y": 0 }, + { "label": "5", "x": 5, "y": 0 }, + { "label": "6", "x": 6, "y": 0 }, + { "label": "7", "x": 7, "y": 0 }, + { "label": "8", "x": 8, "y": 0 }, + { "label": "9", "x": 9, "y": 0 }, + { "label": "0", "x": 10, "y": 0 }, + { "label": "-", "x": 11, "y": 0 }, + { "label": "=", "x": 12, "y": 0 }, + { "label": "Backspace", "x": 13, "y": 0 }, + { "label": "Backspace", "x": 14, "y": 0 }, + { "label": "Insert", "x": 15.25, "y": 0 }, + { "label": "PageUp", "x": 16.25, "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": "Delete", "x": 15.25, "y": 1 }, + { "label": "PageDown", "x": 16.25, "y": 1 }, + + { "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 }, + { "label": "A", "x": 1.75, "y": 2 }, + { "label": "S", "x": 2.75, "y": 2 }, + { "label": "D", "x": 3.75, "y": 2 }, + { "label": "F", "x": 4.75, "y": 2 }, + { "label": "G", "x": 5.75, "y": 2 }, + { "label": "H", "x": 6.75, "y": 2 }, + { "label": "J", "x": 7.75, "y": 2 }, + { "label": "K", "x": 8.75, "y": 2 }, + { "label": "L", "x": 9.75, "y": 2 }, + { "label": ";", "x": 10.75, "y": 2 }, + { "label": "'", "x": 11.75, "y": 2 }, + { "label": "Enter", "x": 12.75, "y": 2, "w": 2.25 }, + + { "label": "Shift1", "x": 0, "y": 3, "w": 1.25 }, + { "label": "Shift2", "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": "Shift1", "x": 12.25, "y": 3, "w": 1.75 }, + { "label": "Shift2", "x": 14, "y": 3}, + { "label": "\u2191", "x": 15.25, "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": 2.25 }, + { "x": 6, "y": 4, "w": 1.25 }, + { "x": 7.25, "y": 4, "w": 2.75 }, + { "label": "Alt", "x": 10, "y": 4, "w": 1.25 }, + { "label": "Ctrl", "x": 11.25, "y": 4, "w": 1.25 }, + { "label": "Menu", "x": 12.5, "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_68_ansi_split_lshift": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "1", "x": 1, "y": 0 }, + { "label": "2", "x": 2, "y": 0 }, + { "label": "3", "x": 3, "y": 0 }, + { "label": "4", "x": 4, "y": 0 }, + { "label": "5", "x": 5, "y": 0 }, + { "label": "6", "x": 6, "y": 0 }, + { "label": "7", "x": 7, "y": 0 }, + { "label": "8", "x": 8, "y": 0 }, + { "label": "9", "x": 9, "y": 0 }, + { "label": "0", "x": 10, "y": 0 }, + { "label": "-", "x": 11, "y": 0 }, + { "label": "=", "x": 12, "y": 0 }, + { "label": "Backspace", "x": 13, "y": 0, "w": 2 }, + { "label": "Insert", "x": 15.25, "y": 0 }, + { "label": "PageUp", "x": 16.25, "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": "Delete", "x": 15.25, "y": 1 }, + { "label": "PageDown", "x": 16.25, "y": 1 }, + + { "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 }, + { "label": "A", "x": 1.75, "y": 2 }, + { "label": "S", "x": 2.75, "y": 2 }, + { "label": "D", "x": 3.75, "y": 2 }, + { "label": "F", "x": 4.75, "y": 2 }, + { "label": "G", "x": 5.75, "y": 2 }, + { "label": "H", "x": 6.75, "y": 2 }, + { "label": "J", "x": 7.75, "y": 2 }, + { "label": "K", "x": 8.75, "y": 2 }, + { "label": "L", "x": 9.75, "y": 2 }, + { "label": ";", "x": 10.75, "y": 2 }, + { "label": "'", "x": 11.75, "y": 2 }, + { "label": "Enter", "x": 12.75, "y": 2, "w": 2.25 }, + + { "label": "Shift1", "x": 0, "y": 3, "w": 1.25 }, + { "label": "Shift2", "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": 2.75 }, + { "label": "\u2191", "x": 15.25, "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": "Ctrl", "x": 11.25, "y": 4, "w": 1.25 }, + { "label": "Menu", "x": 12.5, "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_68_ansi_split_rshift": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "1", "x": 1, "y": 0 }, + { "label": "2", "x": 2, "y": 0 }, + { "label": "3", "x": 3, "y": 0 }, + { "label": "4", "x": 4, "y": 0 }, + { "label": "5", "x": 5, "y": 0 }, + { "label": "6", "x": 6, "y": 0 }, + { "label": "7", "x": 7, "y": 0 }, + { "label": "8", "x": 8, "y": 0 }, + { "label": "9", "x": 9, "y": 0 }, + { "label": "0", "x": 10, "y": 0 }, + { "label": "-", "x": 11, "y": 0 }, + { "label": "=", "x": 12, "y": 0 }, + { "label": "Backspace", "x": 13, "y": 0, "w": 2 }, + { "label": "Insert", "x": 15.25, "y": 0 }, + { "label": "PageUp", "x": 16.25, "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": "Delete", "x": 15.25, "y": 1 }, + { "label": "PageDown", "x": 16.25, "y": 1 }, + + { "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 }, + { "label": "A", "x": 1.75, "y": 2 }, + { "label": "S", "x": 2.75, "y": 2 }, + { "label": "D", "x": 3.75, "y": 2 }, + { "label": "F", "x": 4.75, "y": 2 }, + { "label": "G", "x": 5.75, "y": 2 }, + { "label": "H", "x": 6.75, "y": 2 }, + { "label": "J", "x": 7.75, "y": 2 }, + { "label": "K", "x": 8.75, "y": 2 }, + { "label": "L", "x": 9.75, "y": 2 }, + { "label": ";", "x": 10.75, "y": 2 }, + { "label": "'", "x": 11.75, "y": 2 }, + { "label": "Enter", "x": 12.75, "y": 2, "w": 2.25 }, + + { "label": "Shift", "x": 0, "y": 3, "w": 2.25 }, + { "label": "Z", "x": 2.25, "y": 3 }, + { "label": "X", "x": 3.25, "y": 3 }, + { "label": "C", "x": 4.25, "y": 3 }, + { "label": "V", "x": 5.25, "y": 3 }, + { "label": "B", "x": 6.25, "y": 3 }, + { "label": "N", "x": 7.25, "y": 3 }, + { "label": "M", "x": 8.25, "y": 3 }, + { "label": ",", "x": 9.25, "y": 3 }, + { "label": ".", "x": 10.25, "y": 3 }, + { "label": "/", "x": 11.25, "y": 3 }, + { "label": "Shift1", "x": 12.25, "y": 3, "w": 1.75 }, + { "label": "Shift2", "x": 14, "y": 3}, + { "label": "\u2191", "x": 15.25, "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": "Ctrl", "x": 11.25, "y": 4, "w": 1.25 }, + { "label": "Menu", "x": 12.5, "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_68_ansi_split_bs": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "1", "x": 1, "y": 0 }, + { "label": "2", "x": 2, "y": 0 }, + { "label": "3", "x": 3, "y": 0 }, + { "label": "4", "x": 4, "y": 0 }, + { "label": "5", "x": 5, "y": 0 }, + { "label": "6", "x": 6, "y": 0 }, + { "label": "7", "x": 7, "y": 0 }, + { "label": "8", "x": 8, "y": 0 }, + { "label": "9", "x": 9, "y": 0 }, + { "label": "0", "x": 10, "y": 0 }, + { "label": "-", "x": 11, "y": 0 }, + { "label": "=", "x": 12, "y": 0 }, + { "label": "Backspace1", "x": 13, "y": 0}, + { "label": "Backspace2", "x": 14, "y": 0}, + { "label": "Insert", "x": 15.25, "y": 0 }, + { "label": "PageUp", "x": 16.25, "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": "Delete", "x": 15.25, "y": 1 }, + { "label": "PageDown", "x": 16.25, "y": 1 }, + + { "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 }, + { "label": "A", "x": 1.75, "y": 2 }, + { "label": "S", "x": 2.75, "y": 2 }, + { "label": "D", "x": 3.75, "y": 2 }, + { "label": "F", "x": 4.75, "y": 2 }, + { "label": "G", "x": 5.75, "y": 2 }, + { "label": "H", "x": 6.75, "y": 2 }, + { "label": "J", "x": 7.75, "y": 2 }, + { "label": "K", "x": 8.75, "y": 2 }, + { "label": "L", "x": 9.75, "y": 2 }, + { "label": ";", "x": 10.75, "y": 2 }, + { "label": "'", "x": 11.75, "y": 2 }, + { "label": "Enter", "x": 12.75, "y": 2, "w": 2.25 }, + + { "label": "Shift", "x": 0, "y": 3, "w": 2.25 }, + { "label": "Z", "x": 2.25, "y": 3 }, + { "label": "X", "x": 3.25, "y": 3 }, + { "label": "C", "x": 4.25, "y": 3 }, + { "label": "V", "x": 5.25, "y": 3 }, + { "label": "B", "x": 6.25, "y": 3 }, + { "label": "N", "x": 7.25, "y": 3 }, + { "label": "M", "x": 8.25, "y": 3 }, + { "label": ",", "x": 9.25, "y": 3 }, + { "label": ".", "x": 10.25, "y": 3 }, + { "label": "/", "x": 11.25, "y": 3 }, + { "label": "Shift", "x": 12.25, "y": 3, "w": 2.75 }, + { "label": "\u2191", "x": 15.25, "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": "Ctrl", "x": 11.25, "y": 4, "w": 1.25 }, + { "label": "Menu", "x": 12.5, "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_68_iso": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "1", "x": 1, "y": 0 }, + { "label": "2", "x": 2, "y": 0 }, + { "label": "3", "x": 3, "y": 0 }, + { "label": "4", "x": 4, "y": 0 }, + { "label": "5", "x": 5, "y": 0 }, + { "label": "6", "x": 6, "y": 0 }, + { "label": "7", "x": 7, "y": 0 }, + { "label": "8", "x": 8, "y": 0 }, + { "label": "9", "x": 9, "y": 0 }, + { "label": "0", "x": 10, "y": 0 }, + { "label": "-", "x": 11, "y": 0 }, + { "label": "=", "x": 12, "y": 0 }, + { "label": "Backspace", "x": 13, "y": 0, "w": 2 }, + { "label": "Insert", "x": 15.25, "y": 0 }, + { "label": "PageUp", "x": 16.25, "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": "Delete", "x": 15.25, "y": 1 }, + { "label": "PageDown", "x": 16.25, "y": 1 }, + + { "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 }, + { "label": "A", "x": 1.75, "y": 2 }, + { "label": "S", "x": 2.75, "y": 2 }, + { "label": "D", "x": 3.75, "y": 2 }, + { "label": "F", "x": 4.75, "y": 2 }, + { "label": "G", "x": 5.75, "y": 2 }, + { "label": "H", "x": 6.75, "y": 2 }, + { "label": "J", "x": 7.75, "y": 2 }, + { "label": "K", "x": 8.75, "y": 2 }, + { "label": "L", "x": 9.75, "y": 2 }, + { "label": ";", "x": 10.75, "y": 2 }, + { "label": "'", "x": 11.75, "y": 2 }, + { "label": "\\", "x": 12.75,"y": 2 }, + { "label": "ISO", "x": 13.75, "y": 1, "w": 1.25, "h": 2 }, + + { "label": "Shift", "x": 0, "y": 3, "w": 2.25 }, + { "label": "Z", "x": 2.25, "y": 3 }, + { "label": "X", "x": 3.25, "y": 3 }, + { "label": "C", "x": 4.25, "y": 3 }, + { "label": "V", "x": 5.25, "y": 3 }, + { "label": "B", "x": 6.25, "y": 3 }, + { "label": "N", "x": 7.25, "y": 3 }, + { "label": "M", "x": 8.25, "y": 3 }, + { "label": ",", "x": 9.25, "y": 3 }, + { "label": ".", "x": 10.25, "y": 3 }, + { "label": "/", "x": 11.25, "y": 3 }, + { "label": "Shift", "x": 12.25, "y": 3, "w": 2.75 }, + { "label": "\u2191", "x": 15.25, "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": "Ctrl", "x": 11.25, "y": 4, "w": 1.25 }, + { "label": "Menu", "x": 12.5, "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_68_ansi_split_space": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "1", "x": 1, "y": 0 }, + { "label": "2", "x": 2, "y": 0 }, + { "label": "3", "x": 3, "y": 0 }, + { "label": "4", "x": 4, "y": 0 }, + { "label": "5", "x": 5, "y": 0 }, + { "label": "6", "x": 6, "y": 0 }, + { "label": "7", "x": 7, "y": 0 }, + { "label": "8", "x": 8, "y": 0 }, + { "label": "9", "x": 9, "y": 0 }, + { "label": "0", "x": 10, "y": 0 }, + { "label": "-", "x": 11, "y": 0 }, + { "label": "=", "x": 12, "y": 0 }, + { "label": "Backspace", "x": 13, "y": 0, "w": 2 }, + { "label": "Insert", "x": 15.25, "y": 0 }, + { "label": "PageUp", "x": 16.25, "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": "Delete", "x": 15.25, "y": 1 }, + { "label": "PageDown", "x": 16.25, "y": 1 }, + + { "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 }, + { "label": "A", "x": 1.75, "y": 2 }, + { "label": "S", "x": 2.75, "y": 2 }, + { "label": "D", "x": 3.75, "y": 2 }, + { "label": "F", "x": 4.75, "y": 2 }, + { "label": "G", "x": 5.75, "y": 2 }, + { "label": "H", "x": 6.75, "y": 2 }, + { "label": "J", "x": 7.75, "y": 2 }, + { "label": "K", "x": 8.75, "y": 2 }, + { "label": "L", "x": 9.75, "y": 2 }, + { "label": ";", "x": 10.75, "y": 2 }, + { "label": "'", "x": 11.75, "y": 2 }, + { "label": "Enter", "x": 12.75, "y": 2, "w": 2.25 }, + + { "label": "Shift", "x": 0, "y": 3, "w": 2.25 }, + { "label": "Z", "x": 2.25, "y": 3 }, + { "label": "X", "x": 3.25, "y": 3 }, + { "label": "C", "x": 4.25, "y": 3 }, + { "label": "V", "x": 5.25, "y": 3 }, + { "label": "B", "x": 6.25, "y": 3 }, + { "label": "N", "x": 7.25, "y": 3 }, + { "label": "M", "x": 8.25, "y": 3 }, + { "label": ",", "x": 9.25, "y": 3 }, + { "label": ".", "x": 10.25, "y": 3 }, + { "label": "/", "x": 11.25, "y": 3 }, + { "label": "Shift", "x": 12.25, "y": 3, "w": 2.75 }, + { "label": "\u2191", "x": 15.25, "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": 2.25 }, + { "x": 6, "y": 4, "w": 1.25 }, + { "x": 7.25, "y": 4, "w": 2.75 }, + { "label": "Alt", "x": 10, "y": 4, "w": 1.25 }, + { "label": "Ctrl", "x": 11.25, "y": 4, "w": 1.25 }, + { "label": "Menu", "x": 12.5, "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 } + ] + } + } +} diff --git a/keyboards/wuque/ikki68_aurora/keymaps/68_ansi/keymap.c b/keyboards/wuque/ikki68_aurora/keymaps/68_ansi/keymap.c new file mode 100644 index 000000000000..cf20b434f0da --- /dev/null +++ b/keyboards/wuque/ikki68_aurora/keymaps/68_ansi/keymap.c @@ -0,0 +1,48 @@ +/* Copyright 2021 wuquestudio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_68_ansi( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_68_ansi( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RESET, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_68_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_68_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/wuque/ikki68_aurora/keymaps/68_ansi/readme.md b/keyboards/wuque/ikki68_aurora/keymaps/68_ansi/readme.md new file mode 100644 index 000000000000..4984cb517521 --- /dev/null +++ b/keyboards/wuque/ikki68_aurora/keymaps/68_ansi/readme.md @@ -0,0 +1 @@ +# The 68_ansi keymap for ikki68_aurora diff --git a/keyboards/wuque/ikki68_aurora/keymaps/68_ansi/rules.mk b/keyboards/wuque/ikki68_aurora/keymaps/68_ansi/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/wuque/ikki68_aurora/keymaps/68_ansi/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/wuque/ikki68_aurora/keymaps/68_iso/keymap.c b/keyboards/wuque/ikki68_aurora/keymaps/68_iso/keymap.c new file mode 100644 index 000000000000..46e0caff961f --- /dev/null +++ b/keyboards/wuque/ikki68_aurora/keymaps/68_iso/keymap.c @@ -0,0 +1,48 @@ +/* Copyright 2021 wuquestudio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_68_iso( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, 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_DEL, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_68_iso( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RESET, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_68_iso( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_68_iso( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/wuque/ikki68_aurora/keymaps/68_iso/readme.md b/keyboards/wuque/ikki68_aurora/keymaps/68_iso/readme.md new file mode 100644 index 000000000000..18cae3812892 --- /dev/null +++ b/keyboards/wuque/ikki68_aurora/keymaps/68_iso/readme.md @@ -0,0 +1 @@ +# The 68_iso for ikki68_aurora diff --git a/keyboards/wuque/ikki68_aurora/keymaps/68_iso/rules.mk b/keyboards/wuque/ikki68_aurora/keymaps/68_iso/rules.mk new file mode 100644 index 000000000000..43061db1dd46 --- /dev/null +++ b/keyboards/wuque/ikki68_aurora/keymaps/68_iso/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/wuque/ikki68_aurora/keymaps/68_split_bs/keymap.c b/keyboards/wuque/ikki68_aurora/keymaps/68_split_bs/keymap.c new file mode 100644 index 000000000000..d32851fc823a --- /dev/null +++ b/keyboards/wuque/ikki68_aurora/keymaps/68_split_bs/keymap.c @@ -0,0 +1,48 @@ +/* Copyright 2021 wuquestudio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_68_ansi_split_bs( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_68_ansi_split_bs( + 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, _______, _______, _______, RESET, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_68_ansi_split_bs( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_68_ansi_split_bs( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/wuque/ikki68_aurora/keymaps/68_split_bs/readme.md b/keyboards/wuque/ikki68_aurora/keymaps/68_split_bs/readme.md new file mode 100644 index 000000000000..759043af0f80 --- /dev/null +++ b/keyboards/wuque/ikki68_aurora/keymaps/68_split_bs/readme.md @@ -0,0 +1 @@ +# The 68_split_bs keymap for ikki68_aurora diff --git a/keyboards/wuque/ikki68_aurora/keymaps/68_split_bs/rules.mk b/keyboards/wuque/ikki68_aurora/keymaps/68_split_bs/rules.mk new file mode 100644 index 000000000000..43061db1dd46 --- /dev/null +++ b/keyboards/wuque/ikki68_aurora/keymaps/68_split_bs/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/wuque/ikki68_aurora/keymaps/68_split_lshift/keymap.c b/keyboards/wuque/ikki68_aurora/keymaps/68_split_lshift/keymap.c new file mode 100644 index 000000000000..671f262c2e6d --- /dev/null +++ b/keyboards/wuque/ikki68_aurora/keymaps/68_split_lshift/keymap.c @@ -0,0 +1,48 @@ +/* Copyright 2021 wuquestudio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_68_ansi_split_lshift( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_68_ansi_split_lshift( + 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, _______, _______, RESET, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_68_ansi_split_lshift( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_68_ansi_split_lshift( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/wuque/ikki68_aurora/keymaps/68_split_lshift/readme.md b/keyboards/wuque/ikki68_aurora/keymaps/68_split_lshift/readme.md new file mode 100644 index 000000000000..b299bdb229d7 --- /dev/null +++ b/keyboards/wuque/ikki68_aurora/keymaps/68_split_lshift/readme.md @@ -0,0 +1 @@ +# The 68_split_lshift keymap for ikki68_aurora diff --git a/keyboards/wuque/ikki68_aurora/keymaps/68_split_lshift/rules.mk b/keyboards/wuque/ikki68_aurora/keymaps/68_split_lshift/rules.mk new file mode 100644 index 000000000000..43061db1dd46 --- /dev/null +++ b/keyboards/wuque/ikki68_aurora/keymaps/68_split_lshift/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/wuque/ikki68_aurora/keymaps/68_split_rshift/keymap.c b/keyboards/wuque/ikki68_aurora/keymaps/68_split_rshift/keymap.c new file mode 100644 index 000000000000..ae575674b7bb --- /dev/null +++ b/keyboards/wuque/ikki68_aurora/keymaps/68_split_rshift/keymap.c @@ -0,0 +1,48 @@ +/* Copyright 2021 wuquestudio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_68_ansi_split_rshift( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_68_ansi_split_rshift( + 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, _______, _______, RESET, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_68_ansi_split_rshift( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_68_ansi_split_rshift( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/wuque/ikki68_aurora/keymaps/68_split_rshift/readme.md b/keyboards/wuque/ikki68_aurora/keymaps/68_split_rshift/readme.md new file mode 100644 index 000000000000..ce8eada8c5e4 --- /dev/null +++ b/keyboards/wuque/ikki68_aurora/keymaps/68_split_rshift/readme.md @@ -0,0 +1 @@ +# The 68_split_rshift keymap for ikki68_aurora diff --git a/keyboards/wuque/ikki68_aurora/keymaps/68_split_rshift/rules.mk b/keyboards/wuque/ikki68_aurora/keymaps/68_split_rshift/rules.mk new file mode 100644 index 000000000000..43061db1dd46 --- /dev/null +++ b/keyboards/wuque/ikki68_aurora/keymaps/68_split_rshift/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/wuque/ikki68_aurora/keymaps/68_split_space/keymap.c b/keyboards/wuque/ikki68_aurora/keymaps/68_split_space/keymap.c new file mode 100644 index 000000000000..cafcfde31597 --- /dev/null +++ b/keyboards/wuque/ikki68_aurora/keymaps/68_split_space/keymap.c @@ -0,0 +1,48 @@ +/* Copyright 2021 wuquestudio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_68_ansi_split_space( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_68_ansi_split_space( + 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, _______, _______, RESET, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_68_ansi_split_space( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_68_ansi_split_space( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/wuque/ikki68_aurora/keymaps/68_split_space/readme.md b/keyboards/wuque/ikki68_aurora/keymaps/68_split_space/readme.md new file mode 100644 index 000000000000..71178dcc3317 --- /dev/null +++ b/keyboards/wuque/ikki68_aurora/keymaps/68_split_space/readme.md @@ -0,0 +1 @@ +# The 68_split_space keymap for ikki68_aurora diff --git a/keyboards/wuque/ikki68_aurora/keymaps/68_split_space/rules.mk b/keyboards/wuque/ikki68_aurora/keymaps/68_split_space/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/wuque/ikki68_aurora/keymaps/68_split_space/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/wuque/ikki68_aurora/keymaps/default/keymap.c b/keyboards/wuque/ikki68_aurora/keymaps/default/keymap.c new file mode 100644 index 000000000000..3e05333a284e --- /dev/null +++ b/keyboards/wuque/ikki68_aurora/keymaps/default/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2021 wuquestudio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_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_BSPC, KC_BSPC, KC_INS, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = 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, _______, _______, _______, RESET, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/wuque/ikki68_aurora/keymaps/default/readme.md b/keyboards/wuque/ikki68_aurora/keymaps/default/readme.md new file mode 100644 index 000000000000..7539e469b412 --- /dev/null +++ b/keyboards/wuque/ikki68_aurora/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for ikki68_aurora diff --git a/keyboards/wuque/ikki68_aurora/keymaps/via/keymap.c b/keyboards/wuque/ikki68_aurora/keymaps/via/keymap.c new file mode 100644 index 000000000000..fec80fca15f8 --- /dev/null +++ b/keyboards/wuque/ikki68_aurora/keymaps/via/keymap.c @@ -0,0 +1,48 @@ +/* Copyright 2021 wuquestudio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_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_BSPC, KC_BSPC, KC_INS, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = 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, _______, _______, _______, RESET, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/wuque/ikki68_aurora/keymaps/via/readme.md b/keyboards/wuque/ikki68_aurora/keymaps/via/readme.md new file mode 100644 index 000000000000..0470b32e6779 --- /dev/null +++ b/keyboards/wuque/ikki68_aurora/keymaps/via/readme.md @@ -0,0 +1 @@ +# The via keymap for ikki68_aurora diff --git a/keyboards/wuque/ikki68_aurora/keymaps/via/rules.mk b/keyboards/wuque/ikki68_aurora/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/wuque/ikki68_aurora/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/wuque/ikki68_aurora/readme.md b/keyboards/wuque/ikki68_aurora/readme.md new file mode 100644 index 000000000000..98674d0d728f --- /dev/null +++ b/keyboards/wuque/ikki68_aurora/readme.md @@ -0,0 +1,26 @@ +# ikki68_aurora + +![ikki68_aurora](https://cdn.shopify.com/s/files/1/0403/9809/4489/products/GMK_Mizu_FK5225_2021-Jan-28_01-50-51AM-000_CustomizedView25613364763.jpg?v=1611994134) +​ +Hope this kit is the same as ikki, every rebirth will be stronger +More Info at[wuquestudio](https://shop.wuquestudio.com/). +​ +* Keyboard Maintainer: [wuquestudio](https://shop.wuquestudio.com) +* Hardware Supported: ikki68 aurora Standard +* Hardware Availability: [wuquestudio](http://aurora.wuquestudio.com/) +​ +Make example for this keyboard (after setting up your build environment): + + make wuque/ikki68_aurora:default + +Flashing example for this keyboard: + + make wuque/ikki68_aurora:default:flash + +To reset the board into bootloader mode, do one of the following: + +* Under the **space1** key short the pins on the PCB as shown [here]( https://media.discordapp.net/attachments/768892137205923850/862663262180999218/image0.jpg?width=2520&height=910) +* In the case of the default keymap, use the key combination Fn + PageUp +* Hold the Esc key while connecting the USB cable (also erases persistent settings) + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/wuque/ikki68_aurora/rules.mk b/keyboards/wuque/ikki68_aurora/rules.mk new file mode 100644 index 000000000000..efc8a2c515c1 --- /dev/null +++ b/keyboards/wuque/ikki68_aurora/rules.mk @@ -0,0 +1,21 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 + +LAYOUT = 68_ansi 68_iso diff --git a/keyboards/wuque/mammoth20x/config.h b/keyboards/wuque/mammoth20x/config.h new file mode 100644 index 000000000000..a29ab2cb218c --- /dev/null +++ b/keyboards/wuque/mammoth20x/config.h @@ -0,0 +1,54 @@ +/* +Copyright 2021 wuquestudio + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xB06B +#define PRODUCT_ID 0x0005 +#define DEVICE_VER 0x0001 +#define MANUFACTURER wuque studio +#define PRODUCT mammoth20x + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 4 + +#define MATRIX_ROW_PINS { D5, F0, F1, F4, F5, F6 } +#define MATRIX_COL_PINS { B0, B1, E6, F7 } + +#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 + +/* Enable encoder */ +#define ENCODERS_PAD_A { D3 } +#define ENCODERS_PAD_B { D2 } + +#define ENCODERS 1 +// Note: array is { col, row ) +#define ENCODERS_CW_KEY { { 3, 2 } } +#define ENCODERS_CCW_KEY { { 3, 4 } } diff --git a/keyboards/wuque/mammoth20x/info.json b/keyboards/wuque/mammoth20x/info.json new file mode 100644 index 000000000000..4b53405c191d --- /dev/null +++ b/keyboards/wuque/mammoth20x/info.json @@ -0,0 +1,42 @@ +{ + "keyboard_name": "mammoth20x", + "url": "https://shop.wuquestudio.com/", + "maintainer": "spbgzh", + "layout_aliases": { + "LAYOUT_default": "LAYOUT" + }, + "layouts": { + "LAYOUT": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "Pause", "x": 1, "y": 0 }, + { "label": "Delete", "x": 2, "y": 0 }, + { "label": "LeftEncode", "x": 3, "y": 0, "w": 0.5 }, + { "label": "EncoderClick", "x": 3.5, "y": 0 }, + { "label": "RightEncode", "x": 4.5, "y": 0, "w" : 0.5 }, + + { "label": "Num", "x": 0, "y": 1 }, + { "label": "/", "x": 1, "y": 1 }, + { "label": "*", "x": 2, "y": 1 }, + { "label": "-", "x": 3, "y": 1 }, + + { "label": "7", "x": 0, "y": 2 }, + { "label": "8", "x": 1, "y": 2 }, + { "label": "9", "x": 2, "y": 2 }, + + { "label": "4", "x": 0, "y": 3 }, + { "label": "5", "x": 1, "y": 3 }, + { "label": "6", "x": 2, "y": 3 }, + { "label": "+", "x": 3, "y": 2, "h": 2 }, + + { "label": "1", "x": 0, "y": 4 }, + { "label": "2", "x": 1, "y": 4 }, + { "label": "3", "x": 2, "y": 4 }, + + { "label": "0", "x": 0, "y": 5, "w": 2 }, + { "label": ".", "x": 2, "y": 5 }, + { "label": "Enter", "x": 3, "y": 4,"h":2 } + ] + } + } +} diff --git a/keyboards/wuque/mammoth20x/keymaps/default/keymap.c b/keyboards/wuque/mammoth20x/keymaps/default/keymap.c new file mode 100644 index 000000000000..e19b3bc172f1 --- /dev/null +++ b/keyboards/wuque/mammoth20x/keymaps/default/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2021 wuquestudio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_PAUS, KC_DEL, KC_VOLU, KC_MUTE, KC_VOLD, + KC_LNUM, KC_PSLS, KC_PAST, 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 + ), + [1] = LAYOUT( + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, + _______, _______, _______ + ), +}; diff --git a/keyboards/wuque/mammoth20x/keymaps/default/readme.md b/keyboards/wuque/mammoth20x/keymaps/default/readme.md new file mode 100644 index 000000000000..5bad9b4558a5 --- /dev/null +++ b/keyboards/wuque/mammoth20x/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for mammoth20x diff --git a/keyboards/wuque/mammoth20x/keymaps/via/keymap.c b/keyboards/wuque/mammoth20x/keymaps/via/keymap.c new file mode 100644 index 000000000000..c8f7c1bb8548 --- /dev/null +++ b/keyboards/wuque/mammoth20x/keymaps/via/keymap.c @@ -0,0 +1,52 @@ +/* Copyright 2021 wuquestudio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_PAUS, KC_DEL, KC_VOLU, KC_MUTE, KC_VOLD, + KC_LNUM, KC_PSLS, KC_PAST, 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 + ), + [1] = LAYOUT( + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, + _______, _______, _______ + ), + [2] = LAYOUT( + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, + _______, _______, _______ + ), + [3] = LAYOUT( + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, + _______, _______, _______ + ), +}; diff --git a/keyboards/wuque/mammoth20x/keymaps/via/readme.md b/keyboards/wuque/mammoth20x/keymaps/via/readme.md new file mode 100644 index 000000000000..fcd4ba857fb9 --- /dev/null +++ b/keyboards/wuque/mammoth20x/keymaps/via/readme.md @@ -0,0 +1 @@ +# The via keymap for mammoth20x diff --git a/keyboards/wuque/mammoth20x/keymaps/via/rules.mk b/keyboards/wuque/mammoth20x/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/wuque/mammoth20x/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/wuque/mammoth20x/mammoth20x.c b/keyboards/wuque/mammoth20x/mammoth20x.c new file mode 100644 index 000000000000..da6ccecd3be5 --- /dev/null +++ b/keyboards/wuque/mammoth20x/mammoth20x.c @@ -0,0 +1,59 @@ +/* Copyright 2021 wuquestudio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "mammoth20x.h" + + +static uint8_t encoder_state[ENCODERS] = {0}; +static keypos_t encoder_cw[ENCODERS] = ENCODERS_CW_KEY; +static keypos_t encoder_ccw[ENCODERS] = ENCODERS_CCW_KEY; + +void encoder_action_unregister(void) +{ + for (int index = 0; index < ENCODERS; ++index) + { + if (encoder_state[index]) + { + keyevent_t encoder_event = (keyevent_t){ + .key = encoder_state[index] >> 1 ? encoder_cw[index] : encoder_ccw[index], + .pressed = false, + .time = (timer_read() | 1)}; + encoder_state[index] = 0; + action_exec(encoder_event); + } + } +} +void encoder_action_register(uint8_t index, bool clockwise) +{ + keyevent_t encoder_event = (keyevent_t){ + .key = clockwise ? encoder_cw[index] : encoder_ccw[index], + .pressed = true, + .time = (timer_read() | 1)}; + encoder_state[index] = (clockwise ^ 1) | (clockwise << 1); + action_exec(encoder_event); +} + +void matrix_scan_kb(void) +{ + encoder_action_unregister(); + matrix_scan_user(); +} + +bool encoder_update_kb(uint8_t index, bool clockwise) +{ + encoder_action_register(index, clockwise); + return true; +}; diff --git a/keyboards/wuque/mammoth20x/mammoth20x.h b/keyboards/wuque/mammoth20x/mammoth20x.h new file mode 100644 index 000000000000..408788bf6051 --- /dev/null +++ b/keyboards/wuque/mammoth20x/mammoth20x.h @@ -0,0 +1,35 @@ +/* Copyright 2021 wuquestudio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define LAYOUT( \ + K00, K01, K02, K23, K03, K43, \ + K10, K11, K12, K13, \ + K20, K21, K22, \ + K30, K31, K32, K33, \ + K40, K41, K42, \ + K50, K52, K53 \ +) { \ + { K00, K01, K02, K03 }, \ + { K10, K11, K12, K13 }, \ + { K20, K21, K22, K23 }, \ + { K30, K31, K32, K33 }, \ + { K40, K41, K42, K43 }, \ + { K50, KC_NO, K52, K53 }, \ +} diff --git a/keyboards/wuque/mammoth20x/readme.md b/keyboards/wuque/mammoth20x/readme.md new file mode 100644 index 000000000000..d98175e9bf94 --- /dev/null +++ b/keyboards/wuque/mammoth20x/readme.md @@ -0,0 +1,22 @@ +# mammoth20x + +More info at [Wuque Studio](https://shop.wuquestudio.com/). + +* Keyboard Maintainer: [spbgzh](https://github.com/spbgzh) +* Hardware Supported: mammoth20x Standard +* Hardware Availability: [Wuque Studio](https://shop.wuquestudio.com/) + +Make example for this keyboard (after setting up your build environment): + + make wuque/mammoth20x:default + +Flashing example for this keyboard: + + make wuque/mammoth20x:default:flash + +To reset the board into bootloader mode, do one of the following: + +* Tap the Reset switch mounted on the PCB +* Hold the Esc key while connecting the USB cable (also erases persistent settings) + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/wuque/mammoth20x/rules.mk b/keyboards/wuque/mammoth20x/rules.mk new file mode 100644 index 000000000000..d649d4d5b456 --- /dev/null +++ b/keyboards/wuque/mammoth20x/rules.mk @@ -0,0 +1,21 @@ +# 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 +# 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 # Enable Encoder diff --git a/keyboards/wuque/mammoth75x/config.h b/keyboards/wuque/mammoth75x/config.h new file mode 100644 index 000000000000..019a70f50d97 --- /dev/null +++ b/keyboards/wuque/mammoth75x/config.h @@ -0,0 +1,57 @@ +/* +Copyright 2021 wuquestudio + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xA06B +#define PRODUCT_ID 0x0004 +#define DEVICE_VER 0x0001 +#define MANUFACTURER wuque studio +#define PRODUCT mammoth75x + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 16 + +#define MATRIX_ROW_PINS { B0, C7, D2, F7, D1, D0 } +#define MATRIX_COL_PINS { D3, D5, D4, D6, D7, B4, B5, E6, F0, F1, F4, F5, F6, C6, B7, B3 } + +#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 + +/* Enable encoder */ +#define ENCODERS_PAD_A { B2 } +#define ENCODERS_PAD_B { B1 } + +#define ENCODERS 1 +// Note: array is { col, row ) +#define ENCODERS_CW_KEY { { 5, 5 } } +#define ENCODERS_CCW_KEY { { 3, 5 } } + +#define LED_CAPS_LOCK_PIN B6 +#define LED_PIN_ON_STATE 0 diff --git a/keyboards/wuque/mammoth75x/info.json b/keyboards/wuque/mammoth75x/info.json new file mode 100644 index 000000000000..4e65f8353729 --- /dev/null +++ b/keyboards/wuque/mammoth75x/info.json @@ -0,0 +1,571 @@ +{ + "keyboard_name": "mammoth75x", + "url": "https://shop.wuquestudio.com/", + "maintainer": "spbgzh", + "layouts": { + "LAYOUT_all": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "F1", "x": 1.5, "y": 0 }, + { "label": "F2", "x": 2.5, "y": 0 }, + { "label": "F3", "x": 3.5, "y": 0 }, + { "label": "F4", "x": 4.5, "y": 0 }, + { "label": "F5", "x": 6, "y": 0 }, + { "label": "F6", "x": 7, "y": 0 }, + { "label": "F7", "x": 8, "y": 0 }, + { "label": "F8", "x": 9, "y": 0 }, + { "label": "F9", "x": 10.5, "y": 0 }, + { "label": "F10", "x": 11.5, "y": 0 }, + { "label": "F11", "x": 12.5, "y": 0 }, + { "label": "F12", "x": 13.5, "y": 0 }, + { "label": "Delete", "x": 15, "y": 0 }, + { "label": "EncoderRotateL", "x": 15.25, "y": 1.25, "w": 0.25 }, + { "label": "EncoderClick", "x": 15.75, "y": 1.25 }, + { "label": "EncoderRotateR", "x": 16.75, "y": 1.25, "w": 0.25 }, + + { "label": "~", "x": 0, "y": 1.25 }, + { "label": "1", "x": 1, "y": 1.25 }, + { "label": "2", "x": 2, "y": 1.25 }, + { "label": "3", "x": 3, "y": 1.25 }, + { "label": "4", "x": 4, "y": 1.25 }, + { "label": "5", "x": 5, "y": 1.25 }, + { "label": "6", "x": 6, "y": 1.25 }, + { "label": "7", "x": 7, "y": 1.25 }, + { "label": "8", "x": 8, "y": 1.25 }, + { "label": "9", "x": 9, "y": 1.25 }, + { "label": "0", "x": 10, "y": 1.25 }, + { "label": "-", "x": 11, "y": 1.25 }, + { "label": "=", "x": 12, "y": 1.25 }, + { "label": "Backspace", "x": 13, "y": 1.25 }, + + { "label": "Tab", "x": 0, "y": 2.25, "w": 1.5 }, + { "label": "Q", "x": 1.5, "y": 2.25 }, + { "label": "W", "x": 2.5, "y": 2.25 }, + { "label": "E", "x": 3.5, "y": 2.25 }, + { "label": "R", "x": 4.5, "y": 2.25 }, + { "label": "T", "x": 5.5, "y": 2.25 }, + { "label": "Y", "x": 6.5, "y": 2.25 }, + { "label": "U", "x": 7.5, "y": 2.25 }, + { "label": "I", "x": 8.5, "y": 2.25 }, + { "label": "O", "x": 9.5, "y": 2.25 }, + { "label": "P", "x": 10.5, "y": 2.25 }, + { "label": "[", "x": 11.5, "y": 2.25 }, + { "label": "]", "x": 12.5, "y": 2.25 }, + { "label": "\\", "x": 13.5,"y": 2.25, "w": 1.5 }, + { "label": "Home", "x": 15.25, "y": 2.25 }, + { "label": "PageUp", "x": 16.25, "y": 2.25 }, + + { "label": "Caps Lock", "x": 0, "y": 3.25, "w": 1.75 }, + { "label": "A", "x": 1.75, "y": 3.25 }, + { "label": "S", "x": 2.75, "y": 3.25 }, + { "label": "D", "x": 3.75, "y": 3.25 }, + { "label": "F", "x": 4.75, "y": 3.25 }, + { "label": "G", "x": 5.75, "y": 3.25 }, + { "label": "H", "x": 6.75, "y": 3.25 }, + { "label": "J", "x": 7.75, "y": 3.25 }, + { "label": "K", "x": 8.75, "y": 3.25 }, + { "label": "L", "x": 9.75, "y": 3.25 }, + { "label": ";", "x": 10.75, "y": 3.25 }, + { "label": "'", "x": 11.75, "y": 3.25 }, + { "label": "Enter", "x": 12.75, "y": 3.25, "w": 2.25 }, + { "label": "Backspace1", "x": 14, "y": 1.25 }, + { "label": "End", "x": 15.25, "y": 3.25 }, + { "label": "PageDown", "x": 16.25, "y": 3.25 }, + + { "label": "Shift1", "x": 0, "y": 4.25, "w": 1.25 }, + { "label": "Shift2", "x": 1.25, "y": 4.25 }, + { "label": "Z", "x": 2.25, "y": 4.25 }, + { "label": "X", "x": 3.25, "y": 4.25 }, + { "label": "C", "x": 4.25, "y": 4.25 }, + { "label": "V", "x": 5.25, "y": 4.25 }, + { "label": "B", "x": 6.25, "y": 4.25 }, + { "label": "N", "x": 7.25, "y": 4.25 }, + { "label": "M", "x": 8.25, "y": 4.25 }, + { "label": ",", "x": 9.25, "y": 4.25 }, + { "label": ".", "x": 10.25, "y": 4.25 }, + { "label": "/", "x": 11.25, "y": 4.25 }, + { "label": "Shift1", "x": 12.25, "y": 4.25, "w": 1.75 }, + { "label": "Shift2", "x": 14, "y": 4.25 }, + { "label": "\u2191", "x": 15.25, "y": 4.25 }, + + { "label": "Ctrl", "x": 0, "y": 5.25, "w": 1.25 }, + { "label": "Win", "x": 1.25, "y": 5.25, "w": 1.25 }, + { "label": "Alt", "x": 2.5, "y": 5.25, "w": 1.25 }, + { "label": "Space","x": 3.75, "y": 5.25, "w": 2.25 }, + { "label": "Space","x": 6, "y": 5.25, "w": 1.25 }, + { "label": "Space","x": 7.25, "y": 5.25, "w": 2.75 }, + { "label": "Alt", "x": 10, "y": 5.25, "w": 1.25 }, + { "label": "Ctrl", "x": 11.25, "y": 5.25, "w": 1.25 }, + { "label": "Menu", "x": 12.5, "y": 5.25, "w": 1.25 }, + { "label": "\u2190", "x": 14.25, "y": 5.25 }, + { "label": "\u2193", "x": 15.25, "y": 5.25 }, + { "label": "\u2192", "x": 16.25, "y": 5.25 } + ] + }, + "LAYOUT_75_ansi": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "F1", "x": 1.5, "y": 0 }, + { "label": "F2", "x": 2.5, "y": 0 }, + { "label": "F3", "x": 3.5, "y": 0 }, + { "label": "F4", "x": 4.5, "y": 0 }, + { "label": "F5", "x": 6, "y": 0 }, + { "label": "F6", "x": 7, "y": 0 }, + { "label": "F7", "x": 8, "y": 0 }, + { "label": "F8", "x": 9, "y": 0 }, + { "label": "F9", "x": 10.5, "y": 0 }, + { "label": "F10", "x": 11.5, "y": 0 }, + { "label": "F11", "x": 12.5, "y": 0 }, + { "label": "F12", "x": 13.5, "y": 0 }, + { "label": "Delete", "x": 15, "y": 0 }, + { "label": "EncoderClick", "x": 15.75, "y": 1.25 }, + + { "label": "~", "x": 0, "y": 1.25 }, + { "label": "1", "x": 1, "y": 1.25 }, + { "label": "2", "x": 2, "y": 1.25 }, + { "label": "3", "x": 3, "y": 1.25 }, + { "label": "4", "x": 4, "y": 1.25 }, + { "label": "5", "x": 5, "y": 1.25 }, + { "label": "6", "x": 6, "y": 1.25 }, + { "label": "7", "x": 7, "y": 1.25 }, + { "label": "8", "x": 8, "y": 1.25 }, + { "label": "9", "x": 9, "y": 1.25 }, + { "label": "0", "x": 10, "y": 1.25 }, + { "label": "-", "x": 11, "y": 1.25 }, + { "label": "=", "x": 12, "y": 1.25 }, + { "label": "Backspace", "x": 13, "y": 1.25, "w":2}, + + { "label": "Tab", "x": 0, "y": 2.25, "w": 1.5 }, + { "label": "Q", "x": 1.5, "y": 2.25 }, + { "label": "W", "x": 2.5, "y": 2.25 }, + { "label": "E", "x": 3.5, "y": 2.25 }, + { "label": "R", "x": 4.5, "y": 2.25 }, + { "label": "T", "x": 5.5, "y": 2.25 }, + { "label": "Y", "x": 6.5, "y": 2.25 }, + { "label": "U", "x": 7.5, "y": 2.25 }, + { "label": "I", "x": 8.5, "y": 2.25 }, + { "label": "O", "x": 9.5, "y": 2.25 }, + { "label": "P", "x": 10.5, "y": 2.25 }, + { "label": "[", "x": 11.5, "y": 2.25 }, + { "label": "]", "x": 12.5, "y": 2.25 }, + { "label": "\\", "x": 13.5,"y": 2.25, "w": 1.5 }, + { "label": "Home", "x": 15.25, "y": 2.25 }, + { "label": "PageUp", "x": 16.25, "y": 2.25 }, + + { "label": "Caps Lock", "x": 0, "y": 3.25, "w": 1.75 }, + { "label": "A", "x": 1.75, "y": 3.25 }, + { "label": "S", "x": 2.75, "y": 3.25 }, + { "label": "D", "x": 3.75, "y": 3.25 }, + { "label": "F", "x": 4.75, "y": 3.25 }, + { "label": "G", "x": 5.75, "y": 3.25 }, + { "label": "H", "x": 6.75, "y": 3.25 }, + { "label": "J", "x": 7.75, "y": 3.25 }, + { "label": "K", "x": 8.75, "y": 3.25 }, + { "label": "L", "x": 9.75, "y": 3.25 }, + { "label": ";", "x": 10.75, "y": 3.25 }, + { "label": "'", "x": 11.75, "y": 3.25 }, + { "label": "Enter", "x": 12.75, "y": 3.25, "w": 2.25 }, + { "label": "End", "x": 15.25, "y": 3.25 }, + { "label": "PageDown", "x": 16.25, "y": 3.25 }, + + { "label": "Shift", "x": 0, "y": 4.25, "w": 2.25 }, + { "label": "Z", "x": 2.25, "y": 4.25 }, + { "label": "X", "x": 3.25, "y": 4.25 }, + { "label": "C", "x": 4.25, "y": 4.25 }, + { "label": "V", "x": 5.25, "y": 4.25 }, + { "label": "B", "x": 6.25, "y": 4.25 }, + { "label": "N", "x": 7.25, "y": 4.25 }, + { "label": "M", "x": 8.25, "y": 4.25 }, + { "label": ",", "x": 9.25, "y": 4.25 }, + { "label": ".", "x": 10.25, "y": 4.25 }, + { "label": "/", "x": 11.25, "y": 4.25 }, + { "label": "Shift", "x": 12.25, "y": 4.25, "w": 2.75 }, + { "label": "\u2191", "x": 15.25, "y": 4.25 }, + + { "label": "Ctrl", "x": 0, "y": 5.25, "w": 1.25 }, + { "label": "Win", "x": 1.25, "y": 5.25, "w": 1.25 }, + { "label": "Alt", "x": 2.5, "y": 5.25, "w": 1.25 }, + { "label": "Space","x": 3.75, "y": 5.25, "w": 6.25 }, + { "label": "Alt", "x": 10, "y": 5.25, "w": 1.25 }, + { "label": "Ctrl", "x": 11.25, "y": 5.25, "w": 1.25 }, + { "label": "Menu", "x": 12.5, "y": 5.25, "w": 1.25 }, + { "label": "\u2190", "x": 14.25, "y": 5.25 }, + { "label": "\u2193", "x": 15.25, "y": 5.25 }, + { "label": "\u2192", "x": 16.25, "y": 5.25 } + ] + }, + "LAYOUT_75_ansi_split_lshift": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "F1", "x": 1.5, "y": 0 }, + { "label": "F2", "x": 2.5, "y": 0 }, + { "label": "F3", "x": 3.5, "y": 0 }, + { "label": "F4", "x": 4.5, "y": 0 }, + { "label": "F5", "x": 6, "y": 0 }, + { "label": "F6", "x": 7, "y": 0 }, + { "label": "F7", "x": 8, "y": 0 }, + { "label": "F8", "x": 9, "y": 0 }, + { "label": "F9", "x": 10.5, "y": 0 }, + { "label": "F10", "x": 11.5, "y": 0 }, + { "label": "F11", "x": 12.5, "y": 0 }, + { "label": "F12", "x": 13.5, "y": 0 }, + { "label": "Delete", "x": 15, "y": 0 }, + { "label": "EncoderClick", "x": 15.75, "y": 1.25 }, + + { "label": "~", "x": 0, "y": 1.25 }, + { "label": "1", "x": 1, "y": 1.25 }, + { "label": "2", "x": 2, "y": 1.25 }, + { "label": "3", "x": 3, "y": 1.25 }, + { "label": "4", "x": 4, "y": 1.25 }, + { "label": "5", "x": 5, "y": 1.25 }, + { "label": "6", "x": 6, "y": 1.25 }, + { "label": "7", "x": 7, "y": 1.25 }, + { "label": "8", "x": 8, "y": 1.25 }, + { "label": "9", "x": 9, "y": 1.25 }, + { "label": "0", "x": 10, "y": 1.25 }, + { "label": "-", "x": 11, "y": 1.25 }, + { "label": "=", "x": 12, "y": 1.25 }, + { "label": "Backspace", "x": 13, "y": 1.25, "w":2}, + + { "label": "Tab", "x": 0, "y": 2.25, "w": 1.5 }, + { "label": "Q", "x": 1.5, "y": 2.25 }, + { "label": "W", "x": 2.5, "y": 2.25 }, + { "label": "E", "x": 3.5, "y": 2.25 }, + { "label": "R", "x": 4.5, "y": 2.25 }, + { "label": "T", "x": 5.5, "y": 2.25 }, + { "label": "Y", "x": 6.5, "y": 2.25 }, + { "label": "U", "x": 7.5, "y": 2.25 }, + { "label": "I", "x": 8.5, "y": 2.25 }, + { "label": "O", "x": 9.5, "y": 2.25 }, + { "label": "P", "x": 10.5, "y": 2.25 }, + { "label": "[", "x": 11.5, "y": 2.25 }, + { "label": "]", "x": 12.5, "y": 2.25 }, + { "label": "\\", "x": 13.5,"y": 2.25, "w": 1.5 }, + { "label": "Home", "x": 15.25, "y": 2.25 }, + { "label": "PageUp", "x": 16.25, "y": 2.25 }, + + { "label": "Caps Lock", "x": 0, "y": 3.25, "w": 1.75 }, + { "label": "A", "x": 1.75, "y": 3.25 }, + { "label": "S", "x": 2.75, "y": 3.25 }, + { "label": "D", "x": 3.75, "y": 3.25 }, + { "label": "F", "x": 4.75, "y": 3.25 }, + { "label": "G", "x": 5.75, "y": 3.25 }, + { "label": "H", "x": 6.75, "y": 3.25 }, + { "label": "J", "x": 7.75, "y": 3.25 }, + { "label": "K", "x": 8.75, "y": 3.25 }, + { "label": "L", "x": 9.75, "y": 3.25 }, + { "label": ";", "x": 10.75, "y": 3.25 }, + { "label": "'", "x": 11.75, "y": 3.25 }, + { "label": "Enter", "x": 12.75, "y": 3.25, "w": 2.25 }, + { "label": "End", "x": 15.25, "y": 3.25 }, + { "label": "PageDown", "x": 16.25, "y": 3.25 }, + + { "label": "Shift1", "x": 0, "y": 4.25, "w": 1.25 }, + { "label": "Shift2", "x": 1.25, "y": 4.25 }, + { "label": "Z", "x": 2.25, "y": 4.25 }, + { "label": "X", "x": 3.25, "y": 4.25 }, + { "label": "C", "x": 4.25, "y": 4.25 }, + { "label": "V", "x": 5.25, "y": 4.25 }, + { "label": "B", "x": 6.25, "y": 4.25 }, + { "label": "N", "x": 7.25, "y": 4.25 }, + { "label": "M", "x": 8.25, "y": 4.25 }, + { "label": ",", "x": 9.25, "y": 4.25 }, + { "label": ".", "x": 10.25, "y": 4.25 }, + { "label": "/", "x": 11.25, "y": 4.25 }, + { "label": "Shift", "x": 12.25, "y": 4.25, "w": 2.75 }, + { "label": "\u2191", "x": 15.25, "y": 4.25 }, + + { "label": "Ctrl", "x": 0, "y": 5.25, "w": 1.25 }, + { "label": "Win", "x": 1.25, "y": 5.25, "w": 1.25 }, + { "label": "Alt", "x": 2.5, "y": 5.25, "w": 1.25 }, + { "label": "Space","x": 3.75, "y": 5.25, "w": 6.25 }, + { "label": "Alt", "x": 10, "y": 5.25, "w": 1.25 }, + { "label": "Ctrl", "x": 11.25, "y": 5.25, "w": 1.25 }, + { "label": "Menu", "x": 12.5, "y": 5.25, "w": 1.25 }, + { "label": "\u2190", "x": 14.25, "y": 5.25 }, + { "label": "\u2193", "x": 15.25, "y": 5.25 }, + { "label": "\u2192", "x": 16.25, "y": 5.25 } + ] + }, + "LAYOUT_75_ansi_split_rshift": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "F1", "x": 1.5, "y": 0 }, + { "label": "F2", "x": 2.5, "y": 0 }, + { "label": "F3", "x": 3.5, "y": 0 }, + { "label": "F4", "x": 4.5, "y": 0 }, + { "label": "F5", "x": 6, "y": 0 }, + { "label": "F6", "x": 7, "y": 0 }, + { "label": "F7", "x": 8, "y": 0 }, + { "label": "F8", "x": 9, "y": 0 }, + { "label": "F9", "x": 10.5, "y": 0 }, + { "label": "F10", "x": 11.5, "y": 0 }, + { "label": "F11", "x": 12.5, "y": 0 }, + { "label": "F12", "x": 13.5, "y": 0 }, + { "label": "Delete", "x": 15, "y": 0 }, + { "label": "EncoderClick", "x": 15.75, "y": 1.25 }, + + { "label": "~", "x": 0, "y": 1.25 }, + { "label": "1", "x": 1, "y": 1.25 }, + { "label": "2", "x": 2, "y": 1.25 }, + { "label": "3", "x": 3, "y": 1.25 }, + { "label": "4", "x": 4, "y": 1.25 }, + { "label": "5", "x": 5, "y": 1.25 }, + { "label": "6", "x": 6, "y": 1.25 }, + { "label": "7", "x": 7, "y": 1.25 }, + { "label": "8", "x": 8, "y": 1.25 }, + { "label": "9", "x": 9, "y": 1.25 }, + { "label": "0", "x": 10, "y": 1.25 }, + { "label": "-", "x": 11, "y": 1.25 }, + { "label": "=", "x": 12, "y": 1.25 }, + { "label": "Backspace", "x": 13, "y": 1.25, "w":2}, + + { "label": "Tab", "x": 0, "y": 2.25, "w": 1.5 }, + { "label": "Q", "x": 1.5, "y": 2.25 }, + { "label": "W", "x": 2.5, "y": 2.25 }, + { "label": "E", "x": 3.5, "y": 2.25 }, + { "label": "R", "x": 4.5, "y": 2.25 }, + { "label": "T", "x": 5.5, "y": 2.25 }, + { "label": "Y", "x": 6.5, "y": 2.25 }, + { "label": "U", "x": 7.5, "y": 2.25 }, + { "label": "I", "x": 8.5, "y": 2.25 }, + { "label": "O", "x": 9.5, "y": 2.25 }, + { "label": "P", "x": 10.5, "y": 2.25 }, + { "label": "[", "x": 11.5, "y": 2.25 }, + { "label": "]", "x": 12.5, "y": 2.25 }, + { "label": "\\", "x": 13.5,"y": 2.25, "w": 1.5 }, + { "label": "Home", "x": 15.25, "y": 2.25 }, + { "label": "PageUp", "x": 16.25, "y": 2.25 }, + + { "label": "Caps Lock", "x": 0, "y": 3.25, "w": 1.75 }, + { "label": "A", "x": 1.75, "y": 3.25 }, + { "label": "S", "x": 2.75, "y": 3.25 }, + { "label": "D", "x": 3.75, "y": 3.25 }, + { "label": "F", "x": 4.75, "y": 3.25 }, + { "label": "G", "x": 5.75, "y": 3.25 }, + { "label": "H", "x": 6.75, "y": 3.25 }, + { "label": "J", "x": 7.75, "y": 3.25 }, + { "label": "K", "x": 8.75, "y": 3.25 }, + { "label": "L", "x": 9.75, "y": 3.25 }, + { "label": ";", "x": 10.75, "y": 3.25 }, + { "label": "'", "x": 11.75, "y": 3.25 }, + { "label": "Enter", "x": 12.75, "y": 3.25, "w": 2.25 }, + { "label": "End", "x": 15.25, "y": 3.25 }, + { "label": "PageDown", "x": 16.25, "y": 3.25 }, + + { "label": "Shift", "x": 0, "y": 4.25, "w": 2.25 }, + { "label": "Z", "x": 2.25, "y": 4.25 }, + { "label": "X", "x": 3.25, "y": 4.25 }, + { "label": "C", "x": 4.25, "y": 4.25 }, + { "label": "V", "x": 5.25, "y": 4.25 }, + { "label": "B", "x": 6.25, "y": 4.25 }, + { "label": "N", "x": 7.25, "y": 4.25 }, + { "label": "M", "x": 8.25, "y": 4.25 }, + { "label": ",", "x": 9.25, "y": 4.25 }, + { "label": ".", "x": 10.25, "y": 4.25 }, + { "label": "/", "x": 11.25, "y": 4.25 }, + { "label": "Shift1", "x": 12.25, "y": 4.25, "w": 1.75 }, + { "label": "Shift2", "x": 14, "y": 4.25 }, + { "label": "\u2191", "x": 15.25, "y": 4.25 }, + + { "label": "Ctrl", "x": 0, "y": 5.25, "w": 1.25 }, + { "label": "Win", "x": 1.25, "y": 5.25, "w": 1.25 }, + { "label": "Alt", "x": 2.5, "y": 5.25, "w": 1.25 }, + { "label": "Space","x": 3.75, "y": 5.25, "w": 6.25 }, + { "label": "Alt", "x": 10, "y": 5.25, "w": 1.25 }, + { "label": "Ctrl", "x": 11.25, "y": 5.25, "w": 1.25 }, + { "label": "Menu", "x": 12.5, "y": 5.25, "w": 1.25 }, + { "label": "\u2190", "x": 14.25, "y": 5.25 }, + { "label": "\u2193", "x": 15.25, "y": 5.25 }, + { "label": "\u2192", "x": 16.25, "y": 5.25 } + ] + }, + "LAYOUT_75_ansi_split_bs": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "F1", "x": 1.5, "y": 0 }, + { "label": "F2", "x": 2.5, "y": 0 }, + { "label": "F3", "x": 3.5, "y": 0 }, + { "label": "F4", "x": 4.5, "y": 0 }, + { "label": "F5", "x": 6, "y": 0 }, + { "label": "F6", "x": 7, "y": 0 }, + { "label": "F7", "x": 8, "y": 0 }, + { "label": "F8", "x": 9, "y": 0 }, + { "label": "F9", "x": 10.5, "y": 0 }, + { "label": "F10", "x": 11.5, "y": 0 }, + { "label": "F11", "x": 12.5, "y": 0 }, + { "label": "F12", "x": 13.5, "y": 0 }, + { "label": "Delete", "x": 15, "y": 0 }, + { "label": "EncoderClick", "x": 15.75, "y": 1.25 }, + + { "label": "~", "x": 0, "y": 1.25 }, + { "label": "1", "x": 1, "y": 1.25 }, + { "label": "2", "x": 2, "y": 1.25 }, + { "label": "3", "x": 3, "y": 1.25 }, + { "label": "4", "x": 4, "y": 1.25 }, + { "label": "5", "x": 5, "y": 1.25 }, + { "label": "6", "x": 6, "y": 1.25 }, + { "label": "7", "x": 7, "y": 1.25 }, + { "label": "8", "x": 8, "y": 1.25 }, + { "label": "9", "x": 9, "y": 1.25 }, + { "label": "0", "x": 10, "y": 1.25 }, + { "label": "-", "x": 11, "y": 1.25 }, + { "label": "=", "x": 12, "y": 1.25 }, + { "label": "Backspace", "x": 13, "y": 1.25}, + + { "label": "Tab", "x": 0, "y": 2.25, "w": 1.5 }, + { "label": "Q", "x": 1.5, "y": 2.25 }, + { "label": "W", "x": 2.5, "y": 2.25 }, + { "label": "E", "x": 3.5, "y": 2.25 }, + { "label": "R", "x": 4.5, "y": 2.25 }, + { "label": "T", "x": 5.5, "y": 2.25 }, + { "label": "Y", "x": 6.5, "y": 2.25 }, + { "label": "U", "x": 7.5, "y": 2.25 }, + { "label": "I", "x": 8.5, "y": 2.25 }, + { "label": "O", "x": 9.5, "y": 2.25 }, + { "label": "P", "x": 10.5, "y": 2.25 }, + { "label": "[", "x": 11.5, "y": 2.25 }, + { "label": "]", "x": 12.5, "y": 2.25 }, + { "label": "\\", "x": 13.5,"y": 2.25, "w": 1.5 }, + { "label": "Home", "x": 15.25, "y": 2.25 }, + { "label": "PageUp", "x": 16.25, "y": 2.25 }, + + { "label": "Caps Lock", "x": 0, "y": 3.25, "w": 1.75 }, + { "label": "A", "x": 1.75, "y": 3.25 }, + { "label": "S", "x": 2.75, "y": 3.25 }, + { "label": "D", "x": 3.75, "y": 3.25 }, + { "label": "F", "x": 4.75, "y": 3.25 }, + { "label": "G", "x": 5.75, "y": 3.25 }, + { "label": "H", "x": 6.75, "y": 3.25 }, + { "label": "J", "x": 7.75, "y": 3.25 }, + { "label": "K", "x": 8.75, "y": 3.25 }, + { "label": "L", "x": 9.75, "y": 3.25 }, + { "label": ";", "x": 10.75, "y": 3.25 }, + { "label": "'", "x": 11.75, "y": 3.25 }, + { "label": "Enter", "x": 12.75, "y": 3.25, "w": 2.25 }, + { "label": "Backspace1", "x": 14, "y": 1.25 }, + { "label": "End", "x": 15.25, "y": 3.25 }, + { "label": "PageDown", "x": 16.25, "y": 3.25 }, + + { "label": "Shift", "x": 0, "y": 4.25, "w": 2.25 }, + { "label": "Z", "x": 2.25, "y": 4.25 }, + { "label": "X", "x": 3.25, "y": 4.25 }, + { "label": "C", "x": 4.25, "y": 4.25 }, + { "label": "V", "x": 5.25, "y": 4.25 }, + { "label": "B", "x": 6.25, "y": 4.25 }, + { "label": "N", "x": 7.25, "y": 4.25 }, + { "label": "M", "x": 8.25, "y": 4.25 }, + { "label": ",", "x": 9.25, "y": 4.25 }, + { "label": ".", "x": 10.25, "y": 4.25 }, + { "label": "/", "x": 11.25, "y": 4.25 }, + { "label": "Shift", "x": 12.25, "y": 4.25, "w": 2.75 }, + { "label": "\u2191", "x": 15.25, "y": 4.25 }, + + { "label": "Ctrl", "x": 0, "y": 5.25, "w": 1.25 }, + { "label": "Win", "x": 1.25, "y": 5.25, "w": 1.25 }, + { "label": "Alt", "x": 2.5, "y": 5.25, "w": 1.25 }, + { "label": "Space","x": 3.75, "y": 5.25, "w": 6.25 }, + { "label": "Alt", "x": 10, "y": 5.25, "w": 1.25 }, + { "label": "Ctrl", "x": 11.25, "y": 5.25, "w": 1.25 }, + { "label": "Menu", "x": 12.5, "y": 5.25, "w": 1.25 }, + { "label": "\u2190", "x": 14.25, "y": 5.25 }, + { "label": "\u2193", "x": 15.25, "y": 5.25 }, + { "label": "\u2192", "x": 16.25, "y": 5.25 } + ] + }, + "LAYOUT_75_ansi_split_space": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "F1", "x": 1.5, "y": 0 }, + { "label": "F2", "x": 2.5, "y": 0 }, + { "label": "F3", "x": 3.5, "y": 0 }, + { "label": "F4", "x": 4.5, "y": 0 }, + { "label": "F5", "x": 6, "y": 0 }, + { "label": "F6", "x": 7, "y": 0 }, + { "label": "F7", "x": 8, "y": 0 }, + { "label": "F8", "x": 9, "y": 0 }, + { "label": "F9", "x": 10.5, "y": 0 }, + { "label": "F10", "x": 11.5, "y": 0 }, + { "label": "F11", "x": 12.5, "y": 0 }, + { "label": "F12", "x": 13.5, "y": 0 }, + { "label": "Delete", "x": 15, "y": 0 }, + { "label": "EncoderClick", "x": 15.75, "y": 1.25 }, + + { "label": "~", "x": 0, "y": 1.25 }, + { "label": "1", "x": 1, "y": 1.25 }, + { "label": "2", "x": 2, "y": 1.25 }, + { "label": "3", "x": 3, "y": 1.25 }, + { "label": "4", "x": 4, "y": 1.25 }, + { "label": "5", "x": 5, "y": 1.25 }, + { "label": "6", "x": 6, "y": 1.25 }, + { "label": "7", "x": 7, "y": 1.25 }, + { "label": "8", "x": 8, "y": 1.25 }, + { "label": "9", "x": 9, "y": 1.25 }, + { "label": "0", "x": 10, "y": 1.25 }, + { "label": "-", "x": 11, "y": 1.25 }, + { "label": "=", "x": 12, "y": 1.25 }, + { "label": "Backspace", "x": 13, "y": 1.25, "w":2}, + + { "label": "Tab", "x": 0, "y": 2.25, "w": 1.5 }, + { "label": "Q", "x": 1.5, "y": 2.25 }, + { "label": "W", "x": 2.5, "y": 2.25 }, + { "label": "E", "x": 3.5, "y": 2.25 }, + { "label": "R", "x": 4.5, "y": 2.25 }, + { "label": "T", "x": 5.5, "y": 2.25 }, + { "label": "Y", "x": 6.5, "y": 2.25 }, + { "label": "U", "x": 7.5, "y": 2.25 }, + { "label": "I", "x": 8.5, "y": 2.25 }, + { "label": "O", "x": 9.5, "y": 2.25 }, + { "label": "P", "x": 10.5, "y": 2.25 }, + { "label": "[", "x": 11.5, "y": 2.25 }, + { "label": "]", "x": 12.5, "y": 2.25 }, + { "label": "\\", "x": 13.5,"y": 2.25, "w": 1.5 }, + { "label": "Home", "x": 15.25, "y": 2.25 }, + { "label": "PageUp", "x": 16.25, "y": 2.25 }, + + { "label": "Caps Lock", "x": 0, "y": 3.25, "w": 1.75 }, + { "label": "A", "x": 1.75, "y": 3.25 }, + { "label": "S", "x": 2.75, "y": 3.25 }, + { "label": "D", "x": 3.75, "y": 3.25 }, + { "label": "F", "x": 4.75, "y": 3.25 }, + { "label": "G", "x": 5.75, "y": 3.25 }, + { "label": "H", "x": 6.75, "y": 3.25 }, + { "label": "J", "x": 7.75, "y": 3.25 }, + { "label": "K", "x": 8.75, "y": 3.25 }, + { "label": "L", "x": 9.75, "y": 3.25 }, + { "label": ";", "x": 10.75, "y": 3.25 }, + { "label": "'", "x": 11.75, "y": 3.25 }, + { "label": "Enter", "x": 12.75, "y": 3.25, "w": 2.25 }, + { "label": "End", "x": 15.25, "y": 3.25 }, + { "label": "PageDown", "x": 16.25, "y": 3.25 }, + + { "label": "Shift", "x": 0, "y": 4.25, "w": 2.25 }, + { "label": "Z", "x": 2.25, "y": 4.25 }, + { "label": "X", "x": 3.25, "y": 4.25 }, + { "label": "C", "x": 4.25, "y": 4.25 }, + { "label": "V", "x": 5.25, "y": 4.25 }, + { "label": "B", "x": 6.25, "y": 4.25 }, + { "label": "N", "x": 7.25, "y": 4.25 }, + { "label": "M", "x": 8.25, "y": 4.25 }, + { "label": ",", "x": 9.25, "y": 4.25 }, + { "label": ".", "x": 10.25, "y": 4.25 }, + { "label": "/", "x": 11.25, "y": 4.25 }, + { "label": "Shift", "x": 12.25, "y": 4.25, "w": 2.75 }, + { "label": "\u2191", "x": 15.25, "y": 4.25 }, + + { "label": "Ctrl", "x": 0, "y": 5.25, "w": 1.25 }, + { "label": "Win", "x": 1.25, "y": 5.25, "w": 1.25 }, + { "label": "Alt", "x": 2.5, "y": 5.25, "w": 1.25 }, + { "label": "Space","x": 3.75, "y": 5.25, "w": 2.25 }, + { "label": "Space","x": 6, "y": 5.25, "w": 1.25 }, + { "label": "Space","x": 7.25, "y": 5.25, "w": 2.75 }, + { "label": "Alt", "x": 10, "y": 5.25, "w": 1.25 }, + { "label": "Ctrl", "x": 11.25, "y": 5.25, "w": 1.25 }, + { "label": "Menu", "x": 12.5, "y": 5.25, "w": 1.25 }, + { "label": "\u2190", "x": 14.25, "y": 5.25 }, + { "label": "\u2193", "x": 15.25, "y": 5.25 }, + { "label": "\u2192", "x": 16.25, "y": 5.25 } + ] + } + } +} diff --git a/keyboards/wuque/mammoth75x/keymaps/75_ansi/keymap.c b/keyboards/wuque/mammoth75x/keymaps/75_ansi/keymap.c new file mode 100644 index 000000000000..a35038348ea8 --- /dev/null +++ b/keyboards/wuque/mammoth75x/keymaps/75_ansi/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2021 wuquestudio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_75_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_MUTE, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_INS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_END, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_75_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/wuque/mammoth75x/keymaps/75_ansi/readme.md b/keyboards/wuque/mammoth75x/keymaps/75_ansi/readme.md new file mode 100644 index 000000000000..b6b384197aff --- /dev/null +++ b/keyboards/wuque/mammoth75x/keymaps/75_ansi/readme.md @@ -0,0 +1 @@ +# The 75_ansi keymap for mammoth75x diff --git a/keyboards/wuque/mammoth75x/keymaps/75_split_bs/keymap.c b/keyboards/wuque/mammoth75x/keymaps/75_split_bs/keymap.c new file mode 100644 index 000000000000..c1717e6d2218 --- /dev/null +++ b/keyboards/wuque/mammoth75x/keymaps/75_split_bs/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2021 wuquestudio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_75_ansi_split_bs( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_MUTE, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_INS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_BSPC, KC_END, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_75_ansi_split_bs( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/wuque/mammoth75x/keymaps/75_split_bs/readme.md b/keyboards/wuque/mammoth75x/keymaps/75_split_bs/readme.md new file mode 100644 index 000000000000..ef0bf98c57f8 --- /dev/null +++ b/keyboards/wuque/mammoth75x/keymaps/75_split_bs/readme.md @@ -0,0 +1 @@ +# The 75_split_bs keymap for mammoth75x diff --git a/keyboards/wuque/mammoth75x/keymaps/75_split_lshift/keymap.c b/keyboards/wuque/mammoth75x/keymaps/75_split_lshift/keymap.c new file mode 100644 index 000000000000..611e1a2642c6 --- /dev/null +++ b/keyboards/wuque/mammoth75x/keymaps/75_split_lshift/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2021 wuquestudio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_75_ansi_split_lshift( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_MUTE, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_INS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_END, KC_PGDN, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_75_ansi_split_lshift( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/wuque/mammoth75x/keymaps/75_split_lshift/readme.md b/keyboards/wuque/mammoth75x/keymaps/75_split_lshift/readme.md new file mode 100644 index 000000000000..cd6640f912b3 --- /dev/null +++ b/keyboards/wuque/mammoth75x/keymaps/75_split_lshift/readme.md @@ -0,0 +1 @@ +# The 75_split_lshift keymap for mammoth75x diff --git a/keyboards/wuque/mammoth75x/keymaps/75_split_rshift/keymap.c b/keyboards/wuque/mammoth75x/keymaps/75_split_rshift/keymap.c new file mode 100644 index 000000000000..1debfe81b74c --- /dev/null +++ b/keyboards/wuque/mammoth75x/keymaps/75_split_rshift/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2021 wuquestudio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_75_ansi_split_rshift( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_MUTE, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_INS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_END, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_75_ansi_split_rshift( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/wuque/mammoth75x/keymaps/75_split_rshift/readme.md b/keyboards/wuque/mammoth75x/keymaps/75_split_rshift/readme.md new file mode 100644 index 000000000000..cd6640f912b3 --- /dev/null +++ b/keyboards/wuque/mammoth75x/keymaps/75_split_rshift/readme.md @@ -0,0 +1 @@ +# The 75_split_lshift keymap for mammoth75x diff --git a/keyboards/wuque/mammoth75x/keymaps/75_split_space/keymap.c b/keyboards/wuque/mammoth75x/keymaps/75_split_space/keymap.c new file mode 100644 index 000000000000..2182216060c8 --- /dev/null +++ b/keyboards/wuque/mammoth75x/keymaps/75_split_space/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2021 wuquestudio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_75_ansi_split_space( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_MUTE, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_INS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_END, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_75_ansi_split_space( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/wuque/mammoth75x/keymaps/75_split_space/readme.md b/keyboards/wuque/mammoth75x/keymaps/75_split_space/readme.md new file mode 100644 index 000000000000..c2057660f9f5 --- /dev/null +++ b/keyboards/wuque/mammoth75x/keymaps/75_split_space/readme.md @@ -0,0 +1 @@ +# The 75_split_space keymap for mammoth75x diff --git a/keyboards/wuque/mammoth75x/keymaps/default/keymap.c b/keyboards/wuque/mammoth75x/keymaps/default/keymap.c new file mode 100644 index 000000000000..9f998a3dd6ba --- /dev/null +++ b/keyboards/wuque/mammoth75x/keymaps/default/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2021 wuquestudio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_VOLD, KC_MUTE,KC_VOLU, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_INS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_BSPC, KC_END, KC_PGDN, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/wuque/mammoth75x/keymaps/default/readme.md b/keyboards/wuque/mammoth75x/keymaps/default/readme.md new file mode 100644 index 000000000000..73cba9c7b900 --- /dev/null +++ b/keyboards/wuque/mammoth75x/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for mammoth75x diff --git a/keyboards/wuque/mammoth75x/keymaps/via/keymap.c b/keyboards/wuque/mammoth75x/keymaps/via/keymap.c new file mode 100644 index 000000000000..d35ff6bccc2a --- /dev/null +++ b/keyboards/wuque/mammoth75x/keymaps/via/keymap.c @@ -0,0 +1,52 @@ +/* Copyright 2021 wuquestudio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_VOLD, KC_MUTE,KC_VOLU, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_INS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_BSPC, KC_END, KC_PGDN, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/wuque/mammoth75x/keymaps/via/readme.md b/keyboards/wuque/mammoth75x/keymaps/via/readme.md new file mode 100644 index 000000000000..e6ea1cf87d99 --- /dev/null +++ b/keyboards/wuque/mammoth75x/keymaps/via/readme.md @@ -0,0 +1 @@ +# The via keymap for mammoth75x diff --git a/keyboards/wuque/mammoth75x/keymaps/via/rules.mk b/keyboards/wuque/mammoth75x/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/wuque/mammoth75x/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/wuque/mammoth75x/mammoth75x.c b/keyboards/wuque/mammoth75x/mammoth75x.c new file mode 100644 index 000000000000..6f14657f8899 --- /dev/null +++ b/keyboards/wuque/mammoth75x/mammoth75x.c @@ -0,0 +1,67 @@ +/* Copyright 2021 wuquestudio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "mammoth75x.h" + +#ifdef VIA_ENABLE +static uint8_t encoder_state[ENCODERS] = {0}; +static keypos_t encoder_cw[ENCODERS] = ENCODERS_CW_KEY; +static keypos_t encoder_ccw[ENCODERS] = ENCODERS_CCW_KEY; + +void encoder_action_unregister(void) +{ + for (int index = 0; index < ENCODERS; ++index) + { + if (encoder_state[index]) + { + keyevent_t encoder_event = (keyevent_t){ + .key = encoder_state[index] >> 1 ? encoder_cw[index] : encoder_ccw[index], + .pressed = false, + .time = (timer_read() | 1)}; + encoder_state[index] = 0; + action_exec(encoder_event); + } + } +} +void encoder_action_register(uint8_t index, bool clockwise) +{ + keyevent_t encoder_event = (keyevent_t){ + .key = clockwise ? encoder_cw[index] : encoder_ccw[index], + .pressed = true, + .time = (timer_read() | 1)}; + encoder_state[index] = (clockwise ^ 1) | (clockwise << 1); + action_exec(encoder_event); +} + +void matrix_scan_kb(void) +{ + encoder_action_unregister(); + matrix_scan_user(); +} + +bool encoder_update_kb(uint8_t index, bool clockwise) +{ + encoder_action_register(index, clockwise); + return true; +}; +#else +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + tap_code_delay(clockwise ? KC_VOLU : KC_VOLD, 10); + return true; +} +#endif + diff --git a/keyboards/wuque/mammoth75x/mammoth75x.h b/keyboards/wuque/mammoth75x/mammoth75x.h new file mode 100644 index 000000000000..a3ab71caa168 --- /dev/null +++ b/keyboards/wuque/mammoth75x/mammoth75x.h @@ -0,0 +1,223 @@ +/* Copyright 2021 wuquestudio + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + + +/* Standard Arrangement + * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ + * │00 ││01 │02 │03 │04 ││05 │06 │07 │08 ││09 │0a │0b │0c ││0d │ + * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ◯ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │3d │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ┌───┬───┐ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2d │ │2e │2f │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ├───┼───┤ + * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │ │3e │3f │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ └───┴───┘ + * │40 │41 │42 │43 │44 │45 │46 │47 │48 │49 │4a │4b │4c │4d │ ┌───┐ + * ├────┼───┴┬──┴─┬─┴───┴──┬┴───┼───┴───┴──┬┴───┼───┴┬────┬┴───┘ │4e │ + * │50 │51 │52 │54 │56 │58 │5a │5b │5c │ ┌───┼───┼───┐ + * └────┴────┴────┴────────┴────┴──────────┴────┴────┴────┘ │5d │5e │5f │ + * └───┴───┴───┘ + */ +#define LAYOUT_all( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K53, K0E, K55, \ + 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, 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, \ + K50, K51, K52, K54, K56, K58, K5A, K5B, K5C, K5D, K5E, K5F \ +) { \ + { K00, 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, KC_NO, KC_NO }, \ + { 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, KC_NO }, \ + { K50, K51, K52, K53, K54, K55, K56, KC_NO, K58, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F }, \ +} + + +/* LAYOUT_75_ansi + * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ + * │00 ││01 │02 │03 │04 ││05 │06 │07 │08 ││09 │0a │0b │0c ││0d │ + * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ◯ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ┌───┬───┐ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2d │ │2e │2f │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ├───┼───┤ + * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │ │3e │3f │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ └───┴───┘ + * │40 │42 │43 │44 │45 │46 │47 │48 │49 │4a │4b │4c │ ┌───┐ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┘ │4e │ + * │50 │51 │52 │56 │5a │5b │5c │ ┌───┼───┼───┐ + * └────┴────┴────┴────────────────────────┴────┴────┴────┘ │5d │5e │5f │ + * └───┴───┴───┘ + */ +#define LAYOUT_75_ansi( \ + 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, K2E, K2F, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, K3F, \ + K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4E, \ + K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E, K5F \ +) { \ + { K00, 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, KC_NO, KC_NO }, \ + { 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, KC_NO, K3E, K3F }, \ + { K40, KC_NO, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, KC_NO, K4E, KC_NO }, \ + { K50, K51, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F }, \ +} + + +/* LAYOUT_75_ansi_split_lshift + * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ + * │00 ││01 │02 │03 │04 ││05 │06 │07 │08 ││09 │0a │0b │0c ││0d │ + * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ◯ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ┌───┬───┐ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2d │ │2e │2f │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ├───┼───┤ + * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │ │3e │3f │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ └───┴───┘ + * │40 │41 │42 │43 │44 │45 │46 │47 │48 │49 │4a │4b │4c │ ┌───┐ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┘ │4e │ + * │50 │51 │52 │56 │5a │5b │5c │ ┌───┼───┼───┐ + * └────┴────┴────┴────────────────────────┴────┴────┴────┘ │5d │5e │5f │ + * └───┴───┴───┘ + */ +#define LAYOUT_75_ansi_split_lshift( \ + 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, K2E, K2F, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, K3F, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4E, \ + K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E, K5F \ +) { \ + { K00, 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, KC_NO, KC_NO }, \ + { 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, KC_NO, K3E, K3F }, \ + { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, KC_NO, K4E, KC_NO }, \ + { K50, K51, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F }, \ +} + + +/* LAYOUT_75_ansi_split_rshift + * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ + * │00 ││01 │02 │03 │04 ││05 │06 │07 │08 ││09 │0a │0b │0c ││0d │ + * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ◯ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ┌───┬───┐ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2d │ │2e │2f │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ├───┼───┤ + * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │ │3e │3f │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ └───┴───┘ + * │40 │42 │43 │44 │45 │46 │47 │48 │49 │4a │4b │4c │4d │ ┌───┐ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┘ │4e │ + * │50 │51 │52 │56 │5a │5b │5c │ ┌───┼───┼───┐ + * └────┴────┴────┴────────────────────────┴────┴────┴────┘ │5d │5e │5f │ + * └───┴───┴───┘ + */ +#define LAYOUT_75_ansi_split_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, K2C, K2D, K2E, K2F, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, K3F, \ + K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, \ + K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E, K5F \ +) { \ + { K00, 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, KC_NO, KC_NO }, \ + { 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, KC_NO, K3E, K3F }, \ + { K40, KC_NO, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, KC_NO }, \ + { K50, K51, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F }, \ +} + + +/* LAYOUT_75_ansi_split_bs + * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ + * │00 ││01 │02 │03 │04 ││05 │06 │07 │08 ││09 │0a │0b │0c ││0d │ + * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ◯ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │3d │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ┌───┬───┐ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2d │ │2e │2f │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ├───┼───┤ + * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │ │3e │3f │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ └───┴───┘ + * │40 │42 │43 │44 │45 │46 │47 │48 │49 │4a │4b │4c │ ┌───┐ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┘ │4e │ + * │50 │51 │52 │56 │5a │5b │5c │ ┌───┼───┼───┐ + * └────┴────┴────┴────────────────────────┴────┴────┴────┘ │5d │5e │5f │ + * └───┴───┴───┘ + */ +#define LAYOUT_75_ansi_split_bs( \ + 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, K2E, K2F, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, \ + K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4E, \ + K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E, K5F \ +) { \ + { K00, 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, KC_NO, KC_NO }, \ + { 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, KC_NO, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, KC_NO, K4E, KC_NO }, \ + { K50, K51, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F }, \ +} + + +/* LAYOUT_75_ansi_split_space + * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ + * │00 ││01 │02 │03 │04 ││05 │06 │07 │08 ││09 │0a │0b │0c ││0d │ + * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ◯ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ┌───┬───┐ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2d │ │2e │2f │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ├───┼───┤ + * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │ │3e │3f │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ └───┴───┘ + * │40 │42 │43 │44 │45 │46 │47 │48 │49 │4a │4b │4c │ ┌───┐ + * ├────┬───┴┬──┴─┬─┴───┴──┬┴───┼───┴───┴──┬┴───┼───┴┬────┬────┘ │4e │ + * │50 │51 │52 │54 │56 │58 │5a │5b │5c │ ┌───┼───┼───┐ + * └────┴────┴────┴────────┴────┴──────────┴────┴────┴────┘ │5d │5e │5f │ + * └───┴───┴───┘ + */ +#define LAYOUT_75_ansi_split_space( \ + 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, K2E, K2F, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, K3F, \ + K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4E, \ + K50, K51, K52, K54, K56, K58, K5A, K5B, K5C, K5D, K5E, K5F \ +) { \ + { K00, 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, KC_NO, KC_NO }, \ + { 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, KC_NO, K3E, K3F }, \ + { K40, KC_NO, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, KC_NO, K4E, KC_NO }, \ + { K50, K51, K52, KC_NO, K54, KC_NO, K56, KC_NO, K58, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F }, \ +} diff --git a/keyboards/wuque/mammoth75x/readme.md b/keyboards/wuque/mammoth75x/readme.md new file mode 100644 index 000000000000..9528552fb17e --- /dev/null +++ b/keyboards/wuque/mammoth75x/readme.md @@ -0,0 +1,25 @@ +# mammoth75x +​ +![mammoth75x](https://i.imgur.com/mhIKh2P.jpeg) +​ +More Info at [wuquestudio](https://shop.wuquestudio.com/). +​ +* Keyboard Maintainer: [spbgzh](https://github.com/spbgzh) +* Hardware Supported: mammoth75x Standard +* Hardware Availability: [mammoth75x](https://shop.wuquestudio.com/) +​ +Make example for this keyboard (after setting up your build environment): + + make wuque/mammoth75x:default + +Flashing example for this keyboard: + + make wuque/mammoth75x:default:flash + +To reset the board into bootloader mode, do one of the following: + +* Tap the Reset switch mounted on the PCB +* In the case of the default keymap, use the key combination Fn + PageUp +* Hold the Esc key while connecting the USB cable (also erases persistent settings) + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/wuque/mammoth75x/rules.mk b/keyboards/wuque/mammoth75x/rules.mk new file mode 100644 index 000000000000..2b64882f0f9b --- /dev/null +++ b/keyboards/wuque/mammoth75x/rules.mk @@ -0,0 +1,20 @@ +# 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 +# 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 # Enable Encoder diff --git a/keyboards/wuque/serneity65/config.h b/keyboards/wuque/serneity65/config.h new file mode 100644 index 000000000000..e13aa8950490 --- /dev/null +++ b/keyboards/wuque/serneity65/config.h @@ -0,0 +1,50 @@ +/* Copyright 2021 wuque + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x906B +#define PRODUCT_ID 0x0003 +#define DEVICE_VER 0x0001 +#define MANUFACTURER wuque +#define PRODUCT serneity65 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +#define MATRIX_ROW_PINS { B0, F0, B1, D2, D3 } +#define MATRIX_COL_PINS { B6, B5, D5, D4, D6, B4, D7, F1, F4, F5, F6, F7, C7, E6, B7 } + +#define DIODE_DIRECTION COL2ROW + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* Enable encoder */ +#define ENCODERS_PAD_A { B2 } +#define ENCODERS_PAD_B { B3 } + +#define ENCODERS 1 +// Note: array is { col, row ) +#define ENCODERS_CW_KEY { { 3, 4 } } +#define ENCODERS_CCW_KEY { { 5, 4 } } + +#define LED_CAPS_LOCK_PIN C6 +#define LED_PIN_ON_STATE 0 diff --git a/keyboards/wuque/serneity65/info.json b/keyboards/wuque/serneity65/info.json new file mode 100644 index 000000000000..211ad12278dc --- /dev/null +++ b/keyboards/wuque/serneity65/info.json @@ -0,0 +1,387 @@ +{ + "keyboard_name": "serneity65", + "url": "https://wuque.com/", + "maintainer": "qmk", + "layouts": { + "LAYOUT_all": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "1", "x": 1, "y": 0 }, + { "label": "2", "x": 2, "y": 0 }, + { "label": "3", "x": 3, "y": 0 }, + { "label": "4", "x": 4, "y": 0 }, + { "label": "5", "x": 5, "y": 0 }, + { "label": "6", "x": 6, "y": 0 }, + { "label": "7", "x": 7, "y": 0 }, + { "label": "8", "x": 8, "y": 0 }, + { "label": "9", "x": 9, "y": 0 }, + { "label": "0", "x": 10, "y": 0 }, + { "label": "-", "x": 11, "y": 0 }, + { "label": "=", "x": 12, "y": 0 }, + { "label": "Backspace", "x": 13, "y": 0 }, + { "label": "EncoderRotateL", "x": 15, "y": 0, "w": 0.5 }, + { "label": "EncoderClick", "x": 15.5, "y": 0 }, + { "label": "EncoderRotateR", "x": 16.5, "y": 0, "w": 0.5 }, + + { "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": "Backspace", "x": 14, "y": 0 }, + { "label": "PageUp", "x": 15, "y": 2 }, + + { "label": "Shift1", "x": 0, "y": 3, "w": 1.25 }, + { "label": "Shift2", "x": 1.25, "y": 3 }, + { "label": "Z", "x": 2.25, "y": 3 }, + { "label": "X", "x": 3.25, "y": 3 }, + { "label": "C", "x": 4.25, "y": 3 }, + { "label": "V", "x": 5.25, "y": 3 }, + { "label": "B", "x": 6.25, "y": 3 }, + { "label": "N", "x": 7.25, "y": 3 }, + { "label": "M", "x": 8.25, "y": 3 }, + { "label": ",", "x": 9.25, "y": 3 }, + { "label": ".", "x": 10.25, "y": 3 }, + { "label": "/", "x": 11.25, "y": 3 }, + { "label": "Shift", "x": 12.25, "y": 3, "w": 1.75 }, + { "label": "\u2191", "x": 14, "y": 3 }, + { "label": "End", "x": 15, "y": 3 }, + + { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 1.25, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 2.5, "y": 4, "w": 1.25 }, + { "x": 3.75, "y": 4, "w": 2.25 }, + { "x": 6, "y": 4, "w": 1.25 }, + { "x": 7.25, "y": 4, "w": 2.75 }, + { "label": "Alt", "x": 10, "y": 4, "w": 1.25 }, + { "label": "Fn", "x": 11.25, "y": 4, "w": 1.25 }, + { "label": "\u2190", "x": 13, "y": 4 }, + { "label": "\u2193", "x": 14, "y": 4 }, + { "label": "\u2192", "x": 15, "y": 4 } + ] + }, + "LAYOUT_65_ansi": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "1", "x": 1, "y": 0 }, + { "label": "2", "x": 2, "y": 0 }, + { "label": "3", "x": 3, "y": 0 }, + { "label": "4", "x": 4, "y": 0 }, + { "label": "5", "x": 5, "y": 0 }, + { "label": "6", "x": 6, "y": 0 }, + { "label": "7", "x": 7, "y": 0 }, + { "label": "8", "x": 8, "y": 0 }, + { "label": "9", "x": 9, "y": 0 }, + { "label": "0", "x": 10, "y": 0 }, + { "label": "-", "x": 11, "y": 0 }, + { "label": "=", "x": 12, "y": 0 }, + { "label": "Backspace", "x": 13, "y": 0, "w": 2 }, + { "label": "Encode", "x": 15.5, "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": "PageUp", "x": 15, "y": 2 }, + + { "label": "Shift", "x": 0, "y": 3, "w": 2.25 }, + { "label": "Z", "x": 2.25, "y": 3 }, + { "label": "X", "x": 3.25, "y": 3 }, + { "label": "C", "x": 4.25, "y": 3 }, + { "label": "V", "x": 5.25, "y": 3 }, + { "label": "B", "x": 6.25, "y": 3 }, + { "label": "N", "x": 7.25, "y": 3 }, + { "label": "M", "x": 8.25, "y": 3 }, + { "label": ",", "x": 9.25, "y": 3 }, + { "label": ".", "x": 10.25, "y": 3 }, + { "label": "/", "x": 11.25, "y": 3 }, + { "label": "Shift", "x": 12.25, "y": 3, "w": 1.75 }, + { "label": "\u2191", "x": 14, "y": 3 }, + { "label": "End", "x": 15, "y": 3 }, + + { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 1.25, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 2.5, "y": 4, "w": 1.25 }, + { "x": 3.75, "y": 4, "w": 6.25 }, + { "label": "Alt", "x": 10, "y": 4, "w": 1.25 }, + { "label": "Fn", "x": 11.25, "y": 4, "w": 1.25 }, + { "label": "\u2190", "x": 13, "y": 4 }, + { "label": "\u2193", "x": 14, "y": 4 }, + { "label": "\u2192", "x": 15, "y": 4 } + ] + }, + "LAYOUT_65_ansi_split_bs": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "1", "x": 1, "y": 0 }, + { "label": "2", "x": 2, "y": 0 }, + { "label": "3", "x": 3, "y": 0 }, + { "label": "4", "x": 4, "y": 0 }, + { "label": "5", "x": 5, "y": 0 }, + { "label": "6", "x": 6, "y": 0 }, + { "label": "7", "x": 7, "y": 0 }, + { "label": "8", "x": 8, "y": 0 }, + { "label": "9", "x": 9, "y": 0 }, + { "label": "0", "x": 10, "y": 0 }, + { "label": "-", "x": 11, "y": 0 }, + { "label": "=", "x": 12, "y": 0 }, + { "label": "Backspace", "x": 13, "y": 0 }, + { "label": "Encode", "x": 15.5, "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": "Backspace", "x": 14, "y": 0 }, + { "label": "PageUp", "x": 15, "y": 2 }, + + { "label": "Shift", "x": 0, "y": 3, "w": 2.25 }, + { "label": "Z", "x": 2.25, "y": 3 }, + { "label": "X", "x": 3.25, "y": 3 }, + { "label": "C", "x": 4.25, "y": 3 }, + { "label": "V", "x": 5.25, "y": 3 }, + { "label": "B", "x": 6.25, "y": 3 }, + { "label": "N", "x": 7.25, "y": 3 }, + { "label": "M", "x": 8.25, "y": 3 }, + { "label": ",", "x": 9.25, "y": 3 }, + { "label": ".", "x": 10.25, "y": 3 }, + { "label": "/", "x": 11.25, "y": 3 }, + { "label": "Shift", "x": 12.25, "y": 3, "w": 1.75 }, + { "label": "\u2191", "x": 14, "y": 3 }, + { "label": "End", "x": 15, "y": 3 }, + + { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 1.25, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 2.5, "y": 4, "w": 1.25 }, + { "x": 3.75, "y": 4, "w": 6.25 }, + { "label": "Alt", "x": 10, "y": 4, "w": 1.25 }, + { "label": "Fn", "x": 11.25, "y": 4, "w": 1.25 }, + { "label": "\u2190", "x": 13, "y": 4 }, + { "label": "\u2193", "x": 14, "y": 4 }, + { "label": "\u2192", "x": 15, "y": 4 } + ] + }, + "LAYOUT_65_ansi_split_lshift": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "1", "x": 1, "y": 0 }, + { "label": "2", "x": 2, "y": 0 }, + { "label": "3", "x": 3, "y": 0 }, + { "label": "4", "x": 4, "y": 0 }, + { "label": "5", "x": 5, "y": 0 }, + { "label": "6", "x": 6, "y": 0 }, + { "label": "7", "x": 7, "y": 0 }, + { "label": "8", "x": 8, "y": 0 }, + { "label": "9", "x": 9, "y": 0 }, + { "label": "0", "x": 10, "y": 0 }, + { "label": "-", "x": 11, "y": 0 }, + { "label": "=", "x": 12, "y": 0 }, + { "label": "Backspace", "x": 13, "y": 0, "w": 2 }, + { "label": "Encode", "x": 15.5, "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": "PageUp", "x": 15, "y": 2 }, + + { "label": "Shift1", "x": 0, "y": 3, "w": 1.25 }, + { "label": "Shift2", "x": 1.25, "y": 3 }, + { "label": "Z", "x": 2.25, "y": 3 }, + { "label": "X", "x": 3.25, "y": 3 }, + { "label": "C", "x": 4.25, "y": 3 }, + { "label": "V", "x": 5.25, "y": 3 }, + { "label": "B", "x": 6.25, "y": 3 }, + { "label": "N", "x": 7.25, "y": 3 }, + { "label": "M", "x": 8.25, "y": 3 }, + { "label": ",", "x": 9.25, "y": 3 }, + { "label": ".", "x": 10.25, "y": 3 }, + { "label": "/", "x": 11.25, "y": 3 }, + { "label": "Shift", "x": 12.25, "y": 3, "w": 1.75 }, + { "label": "\u2191", "x": 14, "y": 3 }, + { "label": "End", "x": 15, "y": 3 }, + + { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 1.25, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 2.5, "y": 4, "w": 1.25 }, + { "x": 3.75, "y": 4, "w": 6.25 }, + { "label": "Alt", "x": 10, "y": 4, "w": 1.25 }, + { "label": "Fn", "x": 11.25, "y": 4, "w": 1.25 }, + { "label": "\u2190", "x": 13, "y": 4 }, + { "label": "\u2193", "x": 14, "y": 4 }, + { "label": "\u2192", "x": 15, "y": 4 } + ] + }, + "LAYOUT_65_split_space": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "1", "x": 1, "y": 0 }, + { "label": "2", "x": 2, "y": 0 }, + { "label": "3", "x": 3, "y": 0 }, + { "label": "4", "x": 4, "y": 0 }, + { "label": "5", "x": 5, "y": 0 }, + { "label": "6", "x": 6, "y": 0 }, + { "label": "7", "x": 7, "y": 0 }, + { "label": "8", "x": 8, "y": 0 }, + { "label": "9", "x": 9, "y": 0 }, + { "label": "0", "x": 10, "y": 0 }, + { "label": "-", "x": 11, "y": 0 }, + { "label": "=", "x": 12, "y": 0 }, + { "label": "Backspace", "x": 13, "y": 0, "w": 2 }, + { "label": "Encode", "x": 15.5, "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": "PageUp", "x": 15, "y": 2 }, + + { "label": "Shift", "x": 0, "y": 3, "w": 2.25 }, + { "label": "Z", "x": 2.25, "y": 3 }, + { "label": "X", "x": 3.25, "y": 3 }, + { "label": "C", "x": 4.25, "y": 3 }, + { "label": "V", "x": 5.25, "y": 3 }, + { "label": "B", "x": 6.25, "y": 3 }, + { "label": "N", "x": 7.25, "y": 3 }, + { "label": "M", "x": 8.25, "y": 3 }, + { "label": ",", "x": 9.25, "y": 3 }, + { "label": ".", "x": 10.25, "y": 3 }, + { "label": "/", "x": 11.25, "y": 3 }, + { "label": "Shift", "x": 12.25, "y": 3, "w": 1.75 }, + { "label": "\u2191", "x": 14, "y": 3 }, + { "label": "End", "x": 15, "y": 3 }, + + { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 }, + { "label": "Win", "x": 1.25, "y": 4, "w": 1.25 }, + { "label": "Alt", "x": 2.5, "y": 4, "w": 1.25 }, + { "x": 3.75, "y": 4, "w": 2.25 }, + { "x": 6, "y": 4, "w": 1.25 }, + { "x": 7.25, "y": 4, "w": 2.75 }, + { "label": "Alt", "x": 10, "y": 4, "w": 1.25 }, + { "label": "Fn", "x": 11.25, "y": 4, "w": 1.25 }, + { "label": "\u2190", "x": 13, "y": 4 }, + { "label": "\u2193", "x": 14, "y": 4 }, + { "label": "\u2192", "x": 15, "y": 4 } + ] + } + } +} diff --git a/keyboards/wuque/serneity65/keymaps/65_ansi/keymap.c b/keyboards/wuque/serneity65/keymaps/65_ansi/keymap.c new file mode 100644 index 000000000000..3d2393e145de --- /dev/null +++ b/keyboards/wuque/serneity65/keymaps/65_ansi/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2021 wuque + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_ansi( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_MPLY, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/wuque/serneity65/keymaps/65_ansi/readme.md b/keyboards/wuque/serneity65/keymaps/65_ansi/readme.md new file mode 100644 index 000000000000..42b2423f597c --- /dev/null +++ b/keyboards/wuque/serneity65/keymaps/65_ansi/readme.md @@ -0,0 +1 @@ +# The 65_ansi keymap for serneity65 diff --git a/keyboards/wuque/serneity65/keymaps/65_split_bs/keymap.c b/keyboards/wuque/serneity65/keymaps/65_split_bs/keymap.c new file mode 100644 index 000000000000..e204574319bb --- /dev/null +++ b/keyboards/wuque/serneity65/keymaps/65_split_bs/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2021 wuque + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi_split_bs( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_BSPC, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_ansi_split_bs( + 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_MPLY, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +}; diff --git a/keyboards/wuque/serneity65/keymaps/65_split_bs/readme.md b/keyboards/wuque/serneity65/keymaps/65_split_bs/readme.md new file mode 100644 index 000000000000..121b75811038 --- /dev/null +++ b/keyboards/wuque/serneity65/keymaps/65_split_bs/readme.md @@ -0,0 +1 @@ +# The 65_split_bs keymap for serneity65 diff --git a/keyboards/wuque/serneity65/keymaps/65_split_lshift/keymap.c b/keyboards/wuque/serneity65/keymaps/65_split_lshift/keymap.c new file mode 100644 index 000000000000..ef99b56fce04 --- /dev/null +++ b/keyboards/wuque/serneity65/keymaps/65_split_lshift/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2021 wuque + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi_split_lshift( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_ansi_split_lshift( + 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_MPLY, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/wuque/serneity65/keymaps/65_split_lshift/readme.md b/keyboards/wuque/serneity65/keymaps/65_split_lshift/readme.md new file mode 100644 index 000000000000..f5895d138b6c --- /dev/null +++ b/keyboards/wuque/serneity65/keymaps/65_split_lshift/readme.md @@ -0,0 +1 @@ +# The 65_split_lshift keymap for serneity65 diff --git a/keyboards/wuque/serneity65/keymaps/65_split_space/keymap.c b/keyboards/wuque/serneity65/keymaps/65_split_space/keymap.c new file mode 100644 index 000000000000..fbbfd244c009 --- /dev/null +++ b/keyboards/wuque/serneity65/keymaps/65_split_space/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2021 wuque + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_split_space( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_split_space( + 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_MPLY, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/wuque/serneity65/keymaps/65_split_space/readme.md b/keyboards/wuque/serneity65/keymaps/65_split_space/readme.md new file mode 100644 index 000000000000..2f76503194fe --- /dev/null +++ b/keyboards/wuque/serneity65/keymaps/65_split_space/readme.md @@ -0,0 +1 @@ +# The 65_split_space keymap for serneity65 diff --git a/keyboards/wuque/serneity65/keymaps/default/keymap.c b/keyboards/wuque/serneity65/keymaps/default/keymap.c new file mode 100644 index 000000000000..23928ddea5b5 --- /dev/null +++ b/keyboards/wuque/serneity65/keymaps/default/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2021 wuque + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_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_BSPC, KC_VOLD, KC_MUTE, KC_VOLU, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_BSPC, KC_PGUP, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = 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_MPRV, KC_MPLY, KC_MNXT, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/wuque/serneity65/keymaps/default/readme.md b/keyboards/wuque/serneity65/keymaps/default/readme.md new file mode 100644 index 000000000000..83e06cf6e8b7 --- /dev/null +++ b/keyboards/wuque/serneity65/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for serneity65 diff --git a/keyboards/wuque/serneity65/keymaps/via/keymap.c b/keyboards/wuque/serneity65/keymaps/via/keymap.c new file mode 100644 index 000000000000..435e02009007 --- /dev/null +++ b/keyboards/wuque/serneity65/keymaps/via/keymap.c @@ -0,0 +1,48 @@ +/* Copyright 2021 wuque + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_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_BSPC, KC_VOLD, KC_MUTE, KC_VOLU, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_BSPC, KC_PGUP, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = 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_MPRV, KC_MPLY, KC_MNXT, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/wuque/serneity65/keymaps/via/readme.md b/keyboards/wuque/serneity65/keymaps/via/readme.md new file mode 100644 index 000000000000..87ee7a006b93 --- /dev/null +++ b/keyboards/wuque/serneity65/keymaps/via/readme.md @@ -0,0 +1 @@ +# The via keymap for serneity65 diff --git a/keyboards/wuque/serneity65/keymaps/via/rules.mk b/keyboards/wuque/serneity65/keymaps/via/rules.mk new file mode 100644 index 000000000000..43061db1dd46 --- /dev/null +++ b/keyboards/wuque/serneity65/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/wuque/serneity65/readme.md b/keyboards/wuque/serneity65/readme.md new file mode 100644 index 000000000000..11d18bacbb6f --- /dev/null +++ b/keyboards/wuque/serneity65/readme.md @@ -0,0 +1,24 @@ +# serneity65 + +More Info at [serneity65](https://shop.wuquestudio.com/) +​ +* Keyboard Maintainer: [spbgzh](https://github.com/spbgzh) +* Hardware Supported: zoom65 Standard +* Hardware Availability: [serneity65](https://shop.wuquestudio.com/) +​ +Make example for this keyboard (after setting up your build environment): + + + make wuque/serneity65:default + +Flashing example for this keyboard: + + make wuque/serneity65:default:flash + +To reset the board into bootloader mode, do one of the following: + +* Tap the Reset switch mounted on the PCB +* In the case of the default keymap, use the key combination Fn + End +* Hold the Esc key while connecting the USB cable (also erases persistent settings) + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/wuque/serneity65/rules.mk b/keyboards/wuque/serneity65/rules.mk new file mode 100644 index 000000000000..531546e1dbf2 --- /dev/null +++ b/keyboards/wuque/serneity65/rules.mk @@ -0,0 +1,22 @@ +# 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 +# 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 # Enable Encoder + +LAYOUT = 65_ansi diff --git a/keyboards/wuque/serneity65/serneity65.c b/keyboards/wuque/serneity65/serneity65.c new file mode 100644 index 000000000000..6a7c64157f87 --- /dev/null +++ b/keyboards/wuque/serneity65/serneity65.c @@ -0,0 +1,71 @@ +/* Copyright 2021 wuque + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "serneity65.h" + +#ifdef VIA_ENABLE +static uint8_t encoder_state[ENCODERS] = {0}; +static keypos_t encoder_cw[ENCODERS] = ENCODERS_CW_KEY; +static keypos_t encoder_ccw[ENCODERS] = ENCODERS_CCW_KEY; + +void encoder_action_unregister(void) +{ + for (int index = 0; index < ENCODERS; ++index) + { + if (encoder_state[index]) + { + keyevent_t encoder_event = (keyevent_t){ + .key = encoder_state[index] >> 1 ? encoder_cw[index] : encoder_ccw[index], + .pressed = false, + .time = (timer_read() | 1)}; + encoder_state[index] = 0; + action_exec(encoder_event); + } + } +} +void encoder_action_register(uint8_t index, bool clockwise) +{ + keyevent_t encoder_event = (keyevent_t){ + .key = clockwise ? encoder_cw[index] : encoder_ccw[index], + .pressed = true, + .time = (timer_read() | 1)}; + encoder_state[index] = (clockwise ^ 1) | (clockwise << 1); + action_exec(encoder_event); +} + +void matrix_scan_kb(void) +{ + encoder_action_unregister(); + matrix_scan_user(); +} + +bool encoder_update_kb(uint8_t index, bool clockwise) +{ + encoder_action_register(index, clockwise); + return true; +}; +#else +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); + } + } + return true; +} +#endif diff --git a/keyboards/wuque/serneity65/serneity65.h b/keyboards/wuque/serneity65/serneity65.h new file mode 100644 index 000000000000..a0da92c99e75 --- /dev/null +++ b/keyboards/wuque/serneity65/serneity65.h @@ -0,0 +1,159 @@ +/* Copyright 2021 wuque + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + + +/* Standard Arrangement + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │2d │ ◯ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┐ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2e │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │3e │ + * ├────┼───┴┬──┴─┬─┴───┴──┬┴───┼───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │40 │41 │42 │44 │46 │48 │4a │4b │ │4c │4d │4e │ + * └────┴────┴────┴────────┴────┴──────────┴────┴────┘ └───┴───┴───┘ + */ +#define LAYOUT_all( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K43, K0E, K45, \ + 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, K2E, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K40, K41, K42, K44, K46, K48, 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, KC_NO }, \ + { 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, KC_NO, K48, KC_NO, K4A, K4B, K4C, K4D, K4E }, \ +} + + +/* LAYOUT_65_ansi + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │ ◯ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┐ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2e │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │3e │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │40 │41 │42 │46 │4a │4b │ │4c │4d │4e │ + * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + */ +#define LAYOUT_65_ansi( \ + 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, K2E, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K40, K41, K42, K46, 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, KC_NO }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, K2E }, \ + { 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, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E }, \ +} + + +/* LAYOUT_65_ansi_split_bs + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │2d │ ◯ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┐ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2e │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │3e │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │40 │41 │42 │46 │4a │4b │ │4c │4d │4e │ + * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + */ +#define LAYOUT_65_ansi_split_bs( \ + 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, K2E, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K40, K41, K42, K46, 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, KC_NO }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \ + { 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, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E }, \ +} + + +/* LAYOUT_65_ansi_split_lshift + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │ ◯ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┐ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2e │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │3e │ + * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │40 │41 │42 │46 │4a │4b │ │4c │4d │4e │ + * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + */ +#define LAYOUT_65_ansi_split_lshift( \ + 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, K2E, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K40, K41, K42, K46, 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, KC_NO }, \ + { 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, 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 }, \ +} + + +/* LAYOUT_65_split_space + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │ ◯ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┐ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2e │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │3e │ + * ├────┬───┴┬──┴─┬─┴───┴──┬┴───┼───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + * │40 │41 │42 │44 │46 │48 │4a │4b │ │4c │4d │4e │ + * └────┴────┴────┴────────┴────┴──────────┴────┴────┘ └───┴───┴───┘ + */ +#define LAYOUT_65_split_space( \ + 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, K2E, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K40, K41, K42, K44, K46, K48, 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, KC_NO }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, K2E }, \ + { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \ + { K40, K41, K42, KC_NO, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, K4B, K4C, K4D, K4E }, \ +} diff --git a/keyboards/x16/config.h b/keyboards/x16/config.h index 2711566b9533..7dda59b948ed 100644 --- a/keyboards/x16/config.h +++ b/keyboards/x16/config.h @@ -118,59 +118,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -189,26 +136,6 @@ //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/x16/info.json b/keyboards/x16/info.json index 0d42b99ef440..742777648d16 100644 --- a/keyboards/x16/info.json +++ b/keyboards/x16/info.json @@ -2,8 +2,6 @@ "keyboard_name": "x16", "url": "", "maintainer": "yinxianwei", - "width": 4, - "height": 4, "layouts": { "LAYOUT_ortho_4x4": { "layout": [ @@ -30,4 +28,3 @@ } } } - diff --git a/keyboards/x16/rules.mk b/keyboards/x16/rules.mk index bf4c2e9070b3..7f1a6c824391 100644 --- a/keyboards/x16/rules.mk +++ b/keyboards/x16/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/xbows/knight/config.h b/keyboards/xbows/knight/config.h index fbe150439834..dfd477cbc92d 100644 --- a/keyboards/xbows/knight/config.h +++ b/keyboards/xbows/knight/config.h @@ -1,44 +1,104 @@ +/* Copyright 2021 Shulin Huang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ #pragma once + #include "config_common.h" -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x1225 -#define DEVICE_VER 0x0001 -#define MANUFACTURER X-BOWS -#define PRODUCT KNIGHT -/* key matrix size */ -// Rows are doubled-up -#define MATRIX_ROWS 12 -#define MATRIX_COLS 15 +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x1225 +#define DEVICE_VER 0x0001 +#define MANUFACTURER X-BOWS +#define PRODUCT KNIGHT -// wiring of each half -#define MATRIX_ROW_PINS { D2, E6, E2, F7, F6, F5 } -#define MATRIX_COL_PINS { B0, B1, B2, B3, F4, F1, C6, B6, B5, B4, D7, D6, D4, D5, D3} -/* COL2ROW or ROW2COL */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 15 +#define MATRIX_ROW_PINS { F7, F6, F5, F4, F1, F0 } +#define MATRIX_COL_PINS { B0, B1, B2, B3, B7, D2, D3, D5, D4, D6, D7, B4, B5, B6, C6 } #define DIODE_DIRECTION COL2ROW +#define DEBOUNCE 3 -/* define if matrix has ghost */ -//#define MATRIX_HAS_GHOST +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION -#define LED_NUM_LOCK_PIN D1 -#define LED_CAPS_LOCK_PIN C7 -#define LED_PIN_ON_STATE 0 +#ifdef RGB_MATRIX_ENABLE +# define RGB_MATRIX_LED_PROCESS_LIMIT 18 +# define RGB_MATRIX_LED_FLUSH_LIMIT 16 +# 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_KEYPRESSES +# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 +# define RGB_MATRIX_CENTER \ + { 92, 33 } -/* number of backlight levels */ -// #define BACKLIGHT_LEVELS 3 -#define BACKLIGHT_PIN B7 -#ifdef BACKLIGHT_PIN -#define BACKLIGHT_BREATHING -#define BACKLIGHT_LEVELS 3 -#endif -/* Set 0 if debouncing isn't needed */ -#define DEBOUNCE 5 - -/* serial.c configuration for split keyboard */ -#define SOFT_SERIAL_PIN D0 -/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ -#define SPLIT_HAND_PIN F0 -#define LOCKING_SUPPORT_ENABLE -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH +# define DRIVER_ADDR_1 0b1110100 +# define DRIVER_ADDR_2 0b1110110 +# define DRIVER_ADDR_3 0b1110101 +# define DRIVER_COUNT 3 +# define DRIVER_1_LED_TOTAL 36 +# define DRIVER_2_LED_TOTAL 35 +# define DRIVER_3_LED_TOTAL 15 +# define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL + DRIVER_3_LED_TOTAL) +#endif diff --git a/keyboards/xbows/knight/info.json b/keyboards/xbows/knight/info.json index 63ff8d293eac..dca3ea1ed14c 100644 --- a/keyboards/xbows/knight/info.json +++ b/keyboards/xbows/knight/info.json @@ -1,9 +1,7 @@ { - "keyboard_name": "knight", + "keyboard_name": "KNIGHT", "url": "", - "maintainer": "xbows", - "width": 23, - "height": 6.5, + "maintainer": "xbows-qmk", "layouts": { "LAYOUT": { "layout": [ @@ -22,10 +20,7 @@ {"label":"F12", "x":12.75, "y":0}, {"label":"Delete", "x":14, "y":0, "w":2}, {"label":"Print Screen", "x":16, "y":0, "w":2}, - {"label":"Esc", "x":19, "y":0}, - {"label":"Tab", "x":20, "y":0}, - {"label":"Backspace", "x":21, "y":0}, - {"label":"Fn", "x":22, "y":0}, + {"label":"~", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"@", "x":2, "y":1.5}, @@ -40,10 +35,7 @@ {"label":"_", "x":14, "y":1.5}, {"label":"+", "x":15, "y":1.5}, {"label":"Backspace", "x":16, "y":1.5, "w":2}, - {"label":"Num Lock", "x":19, "y":1.5}, - {"label":"/", "x":20, "y":1.5}, - {"label":"*", "x":21, "y":1.5}, - {"label":"-", "x":22, "y":1.5}, + {"label":"Tab", "x":0, "y":2.5}, {"label":"Q", "x":1, "y":2.5}, {"label":"W", "x":2, "y":2.5}, @@ -59,17 +51,14 @@ {"label":"}", "x":15, "y":2.5}, {"label":"|", "x":16, "y":2.5}, {"label":"Page Up", "x":17, "y":2.5}, - {"label":"7", "x":19, "y":2.5}, - {"label":"8", "x":20, "y":2.5}, - {"label":"9", "x":21, "y":2.5}, - {"label":"+", "x":22, "y":2.5}, + {"label":"Caps Lock", "x":0, "y":3.5}, {"label":"A", "x":1, "y":3.5}, {"label":"S", "x":2, "y":3.5}, {"label":"D", "x":3, "y":3.5}, {"label":"F", "x":4, "y":3.5}, {"label":"G", "x":5, "y":3.5}, - {"label":"Backspace", "x":6, "y":3.5, "w":3}, + {"label":"Backspace", "x":6.75, "y":3.5, "w":1.5}, {"label":"H", "x":9, "y":3.5}, {"label":"J", "x":10, "y":3.5}, {"label":"K", "x":11, "y":3.5}, @@ -78,17 +67,14 @@ {"label":"\"", "x":14, "y":3.5}, {"label":"Enter", "x":15, "y":3.5, "w":2}, {"label":"Page Down", "x":17, "y":3.5}, - {"label":"4", "x":19, "y":3.5}, - {"label":"5", "x":20, "y":3.5}, - {"label":"6", "x":21, "y":3.5}, - {"label":"+", "x":22, "y":3.5}, + {"label":"Shift", "x":0, "y":4.5}, {"label":"Z", "x":1, "y":4.5}, {"label":"X", "x":2, "y":4.5}, {"label":"C", "x":3, "y":4.5}, {"label":"V", "x":4, "y":4.5}, {"label":"B", "x":5, "y":4.5}, - {"label":"Enter", "x":6, "y":4.5, "w":3}, + {"label":"Enter", "x":6.5, "y":4.5, "w":2}, {"label":"N", "x":9, "y":4.5}, {"label":"M", "x":10, "y":4.5}, {"label":"<", "x":11, "y":4.5}, @@ -96,10 +82,7 @@ {"label":"?", "x":13, "y":4.5}, {"label":"Shift", "x":14, "y":4.5}, {"label":"Up", "x":16, "y":4.5}, - {"label":"1", "x":19, "y":4.5}, - {"label":"2", "x":20, "y":4.5}, - {"label":"3", "x":21, "y":4.5}, - {"label":"Enter", "x":22, "y":4.5, "h":2}, + {"label":"Ctrl", "x":0, "y":5.5}, {"label":"Win", "x":1, "y":5.5}, {"label":"Alt", "x":2, "y":5.5, "w":2}, @@ -112,9 +95,8 @@ {"label":"Ctrl", "x":14, "y":5.5}, {"label":"Left", "x":15, "y":5.5}, {"label":"Down", "x":16, "y":5.5}, - {"label":"Right", "x":17, "y":5.5}, - {"label":"0", "x":19, "y":5.5, "w":2}, - {"label":".", "x":21, "y":5.5} + {"label":"Right", "x":17, "y":5.5} + ] } } diff --git a/keyboards/xbows/knight/keymaps/default/config.h b/keyboards/xbows/knight/keymaps/default/config.h new file mode 100644 index 000000000000..fcd14ee048e6 --- /dev/null +++ b/keyboards/xbows/knight/keymaps/default/config.h @@ -0,0 +1,43 @@ +/* Copyright 2021 Shulin Huang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#ifdef RGB_MATRIX_ENABLE +# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT // Sets the default mode, if none has been set +# undef ENABLE_RGB_MATRIX_SOLID_COLOR // Static single hue, no speed support +# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes +# undef ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right +# undef ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAT // Single hue spinning spiral fades saturation +# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in +# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard + +# undef ENABLE_RGB_MATRIX_DIGITAL_RAIN // That famous computer simulation +# undef ENABLE_RGB_MATRIX_TYPING_HEATMAP // How hot is your WPM! + +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out +// # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out +// # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out +// # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out +// # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out +//# undef ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out +// # undef ENABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out +// # undef ENABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out +//# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out + +#endif diff --git a/keyboards/xbows/knight/keymaps/default/keymap.c b/keyboards/xbows/knight/keymaps/default/keymap.c index c7db8f3ca912..bde212f105c9 100644 --- a/keyboards/xbows/knight/keymaps/default/keymap.c +++ b/keyboards/xbows/knight/keymaps/default/keymap.c @@ -1,18 +1,49 @@ +/* Copyright 2021 Shulin Huang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap VANILLA: (Base Layer) Default Layer + * + * |---------------------------------------------------------------------------------------------------------------------------------| + * | Esc | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Delete | Prtsc | + * |---------------------------------------------------------------------------------------------------------------------------------| + * | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Backspace | + * |---------------------------------------------------------------------------------------------------------------------------------| + * | Tab | Q | W | E | R | T | | Y | U | I | O | P | [ | ] | \ | PgUp | + * |---------------------------------------------------------------------------------------------------------------------------------| + * | Ctl | A | S | D | F | G | Bksp | H | J | K | L | ; | '" | Enter | PgDn | + * |---------------------------------------------------------------------------------------------------------------------------------| + * |Shift| Z | X | C | V | B | Enter | N | M | , | . | /? | Shift| | Up | + * |---------------------------------------------------------------------------------------------------------------------------------| + * |Ctrl | GUI | Alter | Space | Ctrl | Shift | Space | Alter | FN | Ctrl | Lft | Dn | Rig | + * |---------------------------------------------------------------------------------------------------------------------------------| + */ [0] = LAYOUT( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_PSCR, KC_ESC , KC_TAB, KC_BSPC, MO(1), - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_EQL, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, KC_P7, KC_P8, KC_P9, KC_PMNS, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_BSPC,KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, KC_P4, KC_P5, KC_P6, KC_PPLS, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_ENT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_ENT, - KC_LCTL, KC_LGUI, KC_LALT,KC_SPC, KC_LCTL, KC_LSFT,KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT), + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_PSCR, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_BSPC, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_ENT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LCTL, KC_LSFT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), [1] = LAYOUT( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_PSCR, RESET, KC_TAB, KC_BSPC,KC_TRNS, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK,KC_PSLS,KC_PAST,KC_EQL, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, KC_P7, KC_P8, KC_P9, KC_PMNS, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, BL_STEP,KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, KC_P4, KC_P5, KC_P6, KC_PPLS, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, RESET, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_ENT, - KC_LCTL, KC_LGUI, KC_SPC,KC_LALT, KC_LCTL, KC_LSFT,KC_SPC, KC_RALT, KC_TRNS,KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_0, KC_PDOT) + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_MYCM, KC_MSEL, KC_MAIL, NK_TOGG, EEP_RST, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NLCK, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, + KC_TRNS, RGB_SPD, RGB_VAD, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, KC_TRNS, KC_MUTE, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MPRV, KC_VOLD, KC_MNXT) }; diff --git a/keyboards/xbows/knight/keymaps/via/config.h b/keyboards/xbows/knight/keymaps/via/config.h new file mode 100644 index 000000000000..cf06e7d07db1 --- /dev/null +++ b/keyboards/xbows/knight/keymaps/via/config.h @@ -0,0 +1,63 @@ +/* Copyright 2021 Shulin Huang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#ifdef RGB_MATRIX_ENABLE +# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT // Sets the default mode, if none has been set +# undef ENABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue +# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes +# undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Static gradient left to right, speed controls how much gradient changes +//# undef ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation +# undef ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right +# undef ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades saturation +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness +//# undef ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient +//# undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right +# undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom +//# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in +# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in +# undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradent Chevron shapped scrolling left to right +# undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard +# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard +# undef ENABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard +//# undef ENABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard +# undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard +# undef ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue +# undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation +//# undef ENABLE_RGB_MATRIX_HUE_BREATHING // Hue shifts up a slight ammount at the same time, then shifts back +# undef ENABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight ammount in a wave to the right, then back to the left +//# undef ENABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight ammount and then back down in a wave to the right + +# undef ENABLE_RGB_MATRIX_DIGITAL_RAIN // That famous computer simulation +# undef ENABLE_RGB_MATRIX_TYPING_HEATMAP // How hot is your WPM! + +//# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out +//# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out +//# undef ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out +# undef ENABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out +# undef ENABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out +//# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out + +#endif diff --git a/keyboards/xbows/knight/keymaps/via/keymap.c b/keyboards/xbows/knight/keymaps/via/keymap.c new file mode 100644 index 000000000000..dabbc6c9b3e6 --- /dev/null +++ b/keyboards/xbows/knight/keymaps/via/keymap.c @@ -0,0 +1,63 @@ +/* Copyright 2021 Shulin Huang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap VANILLA: (Base Layer) Default Layer + * + * |---------------------------------------------------------------------------------------------------------------------------------| + * | Esc | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Delete | Prtsc | + * |---------------------------------------------------------------------------------------------------------------------------------| + * | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Backspace | + * |---------------------------------------------------------------------------------------------------------------------------------| + * | Tab | Q | W | E | R | T | | Y | U | I | O | P | [ | ] | \ | PgUp | + * |---------------------------------------------------------------------------------------------------------------------------------| + * | Ctl | A | S | D | F | G | Bksp | H | J | K | L | ; | '" | Enter | PgDn | + * |---------------------------------------------------------------------------------------------------------------------------------| + * |Shift| Z | X | C | V | B | Enter | N | M | , | . | /? | Shift| | Up | + * |---------------------------------------------------------------------------------------------------------------------------------| + * |Ctrl | GUI | Alter | Space | Ctrl | Shift | Space | Alter | FN | Ctrl | Lft | Dn | Rig | + * |---------------------------------------------------------------------------------------------------------------------------------| + */ + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_PSCR, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_BSPC, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_ENT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LCTL, KC_LSFT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + [1] = LAYOUT( + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_MYCM, KC_MSEL, KC_MAIL, NK_TOGG, EEP_RST, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NLCK, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, + KC_TRNS, RGB_SPD, RGB_VAD, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, KC_TRNS, KC_MUTE, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MPRV, KC_VOLD, KC_MNXT), + [2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [3] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; diff --git a/keyboards/xbows/knight/keymaps/via/rules.mk b/keyboards/xbows/knight/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/xbows/knight/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/xbows/knight/knight.c b/keyboards/xbows/knight/knight.c index cb79d9d584df..8c2fd9dfa20f 100644 --- a/keyboards/xbows/knight/knight.c +++ b/keyboards/xbows/knight/knight.c @@ -1 +1,145 @@ -#include "knight.h" +/* Copyright 2021 Shulin Huang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #include "knight.h" + #ifdef RGB_MATRIX_ENABLE + const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { + + {0, C1_3, C2_3, C3_3}, // L01 + {0, C1_4, C2_4, C3_4}, // L02 + {0, C1_5, C2_5, C3_5}, // L03 + {0, C1_6, C2_6, C3_6}, // L04 + {0, C1_7, C2_7, C3_7}, // L05 + {0, C1_8, C2_8, C3_8}, // L06 + {1, C1_3, C2_3, C3_3}, // L07 + {1, C1_4, C2_4, C3_4}, // L08 + {1, C1_5, C2_5, C3_5}, // L09 + {1, C1_6, C2_6, C3_6}, // L10 + {1, C1_7, C2_7, C3_7}, // L11 + {1, C1_8, C2_8, C3_8}, // L12 + {2, C1_3, C2_3, C3_3}, // L13 + {2, C1_4, C2_4, C3_4}, // L14 + {2, C1_5, C2_5, C3_5}, // L15 + + {0, C6_1, C5_1, C4_1}, // L16 + {0, C6_2, C5_2, C4_2}, // L17 + {0, C6_3, C5_3, C4_3}, // L18 + {0, C6_6, C5_6, C4_6}, // L19 + {0, C6_7, C5_7, C4_7}, // L20 + {0, C6_8, C5_8, C4_8}, // L21 + {1, C6_2, C5_2, C4_2}, // L22 + {1, C6_3, C5_3, C4_3}, // L23 + {1, C6_6, C5_6, C4_6}, // L24 + {1, C6_7, C5_7, C4_7}, // L25 + {1, C6_8, C5_8, C4_8}, // L26 + {2, C6_1, C5_1, C4_1}, // L27 + {2, C6_2, C5_2, C4_2}, // L28 + {2, C6_3, C5_3, C4_3}, // L29 + + {0, C9_1, C8_1, C7_1}, // L30 + {0, C9_2, C8_2, C7_2}, // L31 + {0, C9_3, C8_3, C7_3}, // L32 + {0, C9_4, C8_4, C7_4}, // L33 + {0, C9_5, C8_5, C7_5}, // L34 + {0, C9_6, C8_6, C7_6}, // L35 + {2, C6_8, C5_8, C4_8}, // L44 + {1, C9_1, C8_1, C7_1}, // L36 + {1, C9_2, C8_2, C7_2}, // L37 + {1, C9_3, C8_3, C7_3}, // L38 + {1, C9_4, C8_4, C7_4}, // L39 + {1, C9_5, C8_5, C7_5}, // L40 + {1, C9_6, C8_6, C7_6}, // L41 + {2, C6_6, C5_6, C4_6}, // L42 + {2, C6_7, C5_7, C4_7}, // L43 + + + {0, C1_11, C2_11, C3_11}, // L45 + {0, C1_12, C2_12, C3_12}, // L46 + {0, C1_13, C2_13, C3_13}, // L47 + {0, C1_14, C2_14, C3_14}, // L48 + {0, C1_15, C2_15, C3_15}, // L49 + {0, C1_16, C2_16, C3_16}, // L50 + {1, C9_9, C8_9, C7_9}, // L51 + {1, C1_11, C2_11, C3_11}, // L52 + {1, C1_12, C2_12, C3_12}, // L53 + {1, C1_13, C2_13, C3_13}, // L54 + {1, C1_14, C2_14, C3_14}, // L55 + {1, C1_15, C2_15, C3_15}, // L56 + {1, C1_16, C2_16, C3_16}, // L57 + {2, C9_4, C8_4, C7_4}, // L58 + {2, C9_5, C8_5, C7_5}, // L59 + + {0, C6_9, C5_9, C4_9}, // L60 + {0, C6_10, C5_10, C4_10}, // L61 + {0, C6_11, C5_11, C4_11}, // L62 + {0, C6_14, C5_14, C4_14}, // L63 + {0, C6_15, C5_15, C4_15}, // L64 + {0, C6_16, C5_16, C4_16}, // L65 + {1, C9_10, C8_10, C7_10}, // L66 + {1, C6_9, C5_9, C4_9}, // L67 + {1, C6_10, C5_10, C4_10}, // L68 + {1, C6_11, C5_11, C4_11}, // L69 + {1, C6_14, C5_14, C4_14}, // L70 + {1, C6_15, C5_15, C4_15}, // L71 + {1, C6_16, C5_16, C4_16}, // L72 + {2, C9_6, C8_6, C7_6}, // L73 + + {0, C9_9, C8_9, C7_9}, // L74 + {0, C9_10, C8_10, C7_10}, // L75 + {0, C9_11, C8_11, C7_11}, // L76 + {0, C9_12, C8_12, C7_12}, // L77 + {0, C9_13, C8_13, C7_13}, // L78 + {0, C9_14, C8_14, C7_14}, // L79 + {1, C9_11, C8_11, C7_11}, // L80 + {1, C9_12, C8_12, C7_12}, // L81 + {1, C9_13, C8_13, C7_13}, // L82 + {1, C9_14, C8_14, C7_14}, // L83 + {2, C1_6, C2_6, C3_6}, // L84 + {2, C1_7, C2_7, C3_7}, // L85 + {2, C1_8, C2_8, C3_8}, // L86 + }; + + led_config_t g_led_config = { { + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }, + { 15, 16, 17, 18, 19, 20, NO_LED, 21, 22, 23, 24, 25, 26, 27, 28 }, + { 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43 }, + { 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58 }, + { 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, NO_LED }, + { 73, 74, 75, NO_LED, 76, 77, 78, 79, NO_LED, 80, 81, 82, 83, 84, 85 } + }, { + {0,0}, {16,0}, {30,0}, {43,0}, {56,0}, {72,0}, {85,0}, {99,0}, {112,0}, {128,0}, {141,0}, {154,0}, {167,0}, {190,0}, {216,0}, + {0,13}, {16,13}, {32,12}, {49,14}, {66,16}, {82,20}, {102,20}, {118,16}, {134,14}, {150,12}, {167,13}, {184,13}, {197,13}, {216,13}, + {0,26}, {15,26}, {31,23}, {47,24}, {63,28}, {78,30}, {224,26}, {105,30}, {120,28}, {136,24}, {152,23}, {168,26}, {184,26}, {197,26}, {210,26}, + {0,37}, {15,37}, {30,33}, {45,35}, {60,37}, {75,40}, {92,43}, {108,40}, {124,37}, {138,35}, {153,33}, {168,37}, {184,37}, {203,37}, {224,37}, + {0,48}, {14,48}, {29,44}, {43,46}, {57,48}, {72,50}, {92,53}, {112,50}, {126,48}, {141,46}, {155,44}, {169,48}, {184,48}, {210,48}, + {0,58}, {14,58}, {34,58}, {61,61}, {83,64}, {100,64}, {122,61}, {149,58}, {170,58}, {184,58}, {197,58}, {210,58}, {224,58} + }, { + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1 + } }; + + + + __attribute__ ((weak)) void rgb_matrix_indicators_user(void) { + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color(44, 0xFF, 0xFF, 0xFF); + } +} + +#endif diff --git a/keyboards/xbows/knight/knight.h b/keyboards/xbows/knight/knight.h index 952d5a3114c4..a6497119ba27 100644 --- a/keyboards/xbows/knight/knight.h +++ b/keyboards/xbows/knight/knight.h @@ -1,35 +1,33 @@ +/* Copyright 2021 Shulin Huang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ #pragma once - #include "quantum.h" - - -#ifdef USE_I2C -#include -#ifdef __AVR__ - #include - #include -#endif -#endif - #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, K111, K112, K113, K114, K115, K116, K117, K118, \ - K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, 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, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K415, K416, K417, K518, \ - K500, K501, K502, K503, K505, K506, K507, K509, K510, K511, K512, K513, K514, K516, K517 \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \ + K100, K101, K102, K103, K104, K105, K107, K108, K109, K110, K111, K112, K113, K114, \ + K200, K201, K202, K203, K204, K205, K207, K208, K209, K210, K211, K212, K213, K214, K206, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, \ + K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, \ + K500, K501, K502, K504, K505, K506, K507, K509, K510, K511, K512, K513, K514 \ ) \ { \ - { 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, KC_NO, K111, K112, K113, K114 }, \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \ + { K100, K101, K102, K103, K104, K105, KC_NO,K107, K108, K109, K110, K111, K112, K113, K114 }, \ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 }, \ { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314 }, \ - { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, KC_NO }, \ - { K500, K501, K502, K503, KC_NO,K505, K506, K507, KC_NO,K509, K510, K511, K512, K513, K514 }, \ - { K015, K016, K017, K018 }, \ - { K115, K116, K117, K118 }, \ - { K215, K216, K217, K218 }, \ - { K315, K316, K317, K318 }, \ - { K415, K416, K417, KC_NO }, \ - { KC_NO,K516, K517, K518 } \ + { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, KC_NO}, \ + { K500, K501, K502, KC_NO,K504, K505, K506, K507, KC_NO,K509, K510, K511, K512, K513, K514 } \ } diff --git a/keyboards/xbows/knight/readme.md b/keyboards/xbows/knight/readme.md index 063ff7a2e6a7..c66538594a06 100644 --- a/keyboards/xbows/knight/readme.md +++ b/keyboards/xbows/knight/readme.md @@ -1,15 +1,29 @@ # KNIGHT -![KNIGHT](https://ftp.bmp.ovh/imgs/2019/10/5f357cd665dd4b04.png) +![KNIGHT](https://cdn.shopify.com/s/files/1/0014/7623/1237/products/BestSeller_2_1024x1024@2x.png?v=1615697870) -KNIGHT, a split87 and pad Mechanical Keyboard. -X-BOWS Knight, the first ergonomic mechanical keyboard with magnetic connection of detachable numeric keypad on both sides. Revolutionary seamless integrated aluminum alloy body. Original spherical OEM keycaps. +KNIGHT, A 86 Keys Ergonomic Mechanical Keyboard with RGB backlight. -Keyboard Maintainer: X-BOWS -Hardware Supported: X-BOWS Knight -Hardware Availability: [X-BOWS](https://x-bows.com/) +If you spend your work days in front of a computer, you have likely felt some discomfort after a long day of typing. While spending less time on our computers would be the ideal remedy for this problem, that is not a realistic solution for most people. X-Bows was designed to limit the stress on your hands and wrists while also providing a productive and stylish typing experience. + + +X-Bows was designed with three criteria in mind: +* Enhancing the comfort and ergonomics of the keyboard +* Limiting the learning curve for our new layout +* Creating an attractive design + + +* Keyboard Maintainer: X-BOWS +* Hardware Supported: X-BOWS KNIGHT +* Hardware Availability: [X-BOWS](https://x-bows.com/) Make example for this keyboard (after setting up your build environment): make xbows/knight:default + make xbows/knight:via + +Flashing example for this keyboard: + + make xbows/knight:default:flash + make xbows/knight:via:flash See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/xbows/knight/rules.mk b/keyboards/xbows/knight/rules.mk index 4c6080129709..0cf59b45dd3e 100644 --- a/keyboards/xbows/knight/rules.mk +++ b/keyboards/xbows/knight/rules.mk @@ -2,31 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +COMMAND_ENABLE = no # Commands for debug and configuration # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 -RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -SPLIT_KEYBOARD = yes +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 +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = IS31FL3731 diff --git a/keyboards/xbows/knight_plus/config.h b/keyboards/xbows/knight_plus/config.h new file mode 100644 index 000000000000..ee71bb6baff4 --- /dev/null +++ b/keyboards/xbows/knight_plus/config.h @@ -0,0 +1,104 @@ +/* Copyright 2021 Shulin Huang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "config_common.h" + +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x1227 +#define DEVICE_VER 0x0001 +#define MANUFACTURER X-BOWS +#define PRODUCT KNIGHT_PLUS + +#define MATRIX_ROWS 6 +#define MATRIX_COLS 15 +#define MATRIX_ROW_PINS { F7, F6, F5, F4, F1, F0 } +#define MATRIX_COL_PINS { B0, B1, B2, B3, B7, D2, D3, D5, D4, D6, D7, B4, B5, B6, C6 } +#define DIODE_DIRECTION COL2ROW +#define DEBOUNCE 3 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +#ifdef RGB_MATRIX_ENABLE +# define RGB_MATRIX_LED_PROCESS_LIMIT 18 +# define RGB_MATRIX_LED_FLUSH_LIMIT 16 +# define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects +# define RGB_MATRIX_KEYPRESSES +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended +# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 +# define RGB_MATRIX_CENTER \ + { 92, 43 } + +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + +# define DRIVER_ADDR_1 0b1110100 +# define DRIVER_ADDR_2 0b1110110 +# define DRIVER_ADDR_3 0b1110101 +# define DRIVER_COUNT 3 +# define DRIVER_1_LED_TOTAL 36 +# define DRIVER_2_LED_TOTAL 35 +# define DRIVER_3_LED_TOTAL 15 +# define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL + DRIVER_3_LED_TOTAL) +#endif diff --git a/keyboards/xbows/knight_plus/info.json b/keyboards/xbows/knight_plus/info.json new file mode 100644 index 000000000000..7b6521510f9d --- /dev/null +++ b/keyboards/xbows/knight_plus/info.json @@ -0,0 +1,103 @@ +{ + "keyboard_name": "KNIGHT_PLUS", + "url": "", + "maintainer": "xbows-qmk", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":1.25, "y":0}, + {"label":"F2", "x":2.25, "y":0}, + {"label":"F3", "x":3.25, "y":0}, + {"label":"F4", "x":4.25, "y":0}, + {"label":"F5", "x":5.5, "y":0}, + {"label":"F6", "x":6.5, "y":0}, + {"label":"F7", "x":7.5, "y":0}, + {"label":"F8", "x":8.5, "y":0}, + {"label":"F9", "x":9.75, "y":0}, + {"label":"F10", "x":10.75, "y":0}, + {"label":"F11", "x":11.75, "y":0}, + {"label":"F12", "x":12.75, "y":0}, + {"label":"Delete", "x":14, "y":0, "w":2}, + {"label":"Print Screen", "x":16, "y":0, "w":2}, + + {"label":"~", "x":0, "y":1.5}, + {"label":"!", "x":1, "y":1.5}, + {"label":"@", "x":2, "y":1.5}, + {"label":"#", "x":3, "y":1.5}, + {"label":"$", "x":4, "y":1.5}, + {"label":"%", "x":5, "y":1.5}, + {"label":"^", "x":9, "y":1.5}, + {"label":"&", "x":10, "y":1.5}, + {"label":"*", "x":11, "y":1.5}, + {"label":"(", "x":12, "y":1.5}, + {"label":")", "x":13, "y":1.5}, + {"label":"_", "x":14, "y":1.5}, + {"label":"+", "x":15, "y":1.5}, + {"label":"Backspace", "x":16, "y":1.5, "w":2}, + + {"label":"Tab", "x":0, "y":2.5}, + {"label":"Q", "x":1, "y":2.5}, + {"label":"W", "x":2, "y":2.5}, + {"label":"E", "x":3, "y":2.5}, + {"label":"R", "x":4, "y":2.5}, + {"label":"T", "x":5, "y":2.5}, + {"label":"Y", "x":9, "y":2.5}, + {"label":"U", "x":10, "y":2.5}, + {"label":"I", "x":11, "y":2.5}, + {"label":"O", "x":12, "y":2.5}, + {"label":"P", "x":13, "y":2.5}, + {"label":"{", "x":14, "y":2.5}, + {"label":"}", "x":15, "y":2.5}, + {"label":"|", "x":16, "y":2.5}, + {"label":"Page Up", "x":17, "y":2.5}, + + {"label":"Caps Lock", "x":0, "y":3.5}, + {"label":"A", "x":1, "y":3.5}, + {"label":"S", "x":2, "y":3.5}, + {"label":"D", "x":3, "y":3.5}, + {"label":"F", "x":4, "y":3.5}, + {"label":"G", "x":5, "y":3.5}, + {"label":"Backspace", "x":6.75, "y":3.5, "w":1.5}, + {"label":"H", "x":9, "y":3.5}, + {"label":"J", "x":10, "y":3.5}, + {"label":"K", "x":11, "y":3.5}, + {"label":"L", "x":12, "y":3.5}, + {"label":":", "x":13, "y":3.5}, + {"label":"\"", "x":14, "y":3.5}, + {"label":"Enter", "x":15, "y":3.5, "w":2}, + {"label":"Page Down", "x":17, "y":3.5}, + + {"label":"Shift", "x":0, "y":4.5}, + {"label":"Z", "x":1, "y":4.5}, + {"label":"X", "x":2, "y":4.5}, + {"label":"C", "x":3, "y":4.5}, + {"label":"V", "x":4, "y":4.5}, + {"label":"B", "x":5, "y":4.5}, + {"label":"Enter", "x":6.5, "y":4.5, "w":2}, + {"label":"N", "x":9, "y":4.5}, + {"label":"M", "x":10, "y":4.5}, + {"label":"<", "x":11, "y":4.5}, + {"label":">", "x":12, "y":4.5}, + {"label":"?", "x":13, "y":4.5}, + {"label":"Shift", "x":14, "y":4.5}, + {"label":"Up", "x":16, "y":4.5}, + + {"label":"Ctrl", "x":0, "y":5.5}, + {"label":"Win", "x":1, "y":5.5}, + {"label":"Alt", "x":2, "y":5.5, "w":2}, + {"label":"Space", "x":4, "y":5.5, "w":2}, + {"label":"Ctrl", "x":6, "y":5.5, "w":1.5}, + {"label":"Shift", "x":7.5, "y":5.5, "w":1.5}, + {"label":"Space", "x":9, "y":5.5, "w":2}, + {"label":"Alt", "x":11, "y":5.5, "w":2}, + {"label":"Fn", "x":13, "y":5.5}, + {"label":"Ctrl", "x":14, "y":5.5}, + {"label":"Left", "x":15, "y":5.5}, + {"label":"Down", "x":16, "y":5.5}, + {"label":"Right", "x":17, "y":5.5} + + ] + } + } +} diff --git a/keyboards/xbows/knight_plus/keymaps/default/config.h b/keyboards/xbows/knight_plus/keymaps/default/config.h new file mode 100644 index 000000000000..fcd14ee048e6 --- /dev/null +++ b/keyboards/xbows/knight_plus/keymaps/default/config.h @@ -0,0 +1,43 @@ +/* Copyright 2021 Shulin Huang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#ifdef RGB_MATRIX_ENABLE +# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT // Sets the default mode, if none has been set +# undef ENABLE_RGB_MATRIX_SOLID_COLOR // Static single hue, no speed support +# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes +# undef ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right +# undef ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAT // Single hue spinning spiral fades saturation +# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in +# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard + +# undef ENABLE_RGB_MATRIX_DIGITAL_RAIN // That famous computer simulation +# undef ENABLE_RGB_MATRIX_TYPING_HEATMAP // How hot is your WPM! + +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out +// # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out +// # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out +// # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out +// # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out +//# undef ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out +// # undef ENABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out +// # undef ENABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out +//# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out + +#endif diff --git a/keyboards/xbows/knight_plus/keymaps/default/keymap.c b/keyboards/xbows/knight_plus/keymaps/default/keymap.c new file mode 100644 index 000000000000..a1941677e411 --- /dev/null +++ b/keyboards/xbows/knight_plus/keymaps/default/keymap.c @@ -0,0 +1,49 @@ +/* Copyright 2021 Shulin Huang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap VANILLA: (Base Layer) Default Layer + * + * |---------------------------------------------------------------------------------------------------------------------------------| + * | Esc | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Delete | Prtsc | + * |---------------------------------------------------------------------------------------------------------------------------------| + * | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Backspace | + * |---------------------------------------------------------------------------------------------------------------------------------| + * | Tab | Q | W | E | R | T | | Y | U | I | O | P | [ | ] | \ | PgUp | + * |---------------------------------------------------------------------------------------------------------------------------------| + * | Ctl | A | S | D | F | G | Bksp | H | J | K | L | ; | '" | Enter | PgDn | + * |---------------------------------------------------------------------------------------------------------------------------------| + * |Shift| Z | X | C | V | B | Enter | N | M | , | . | /? | Shift| | Up | + * |---------------------------------------------------------------------------------------------------------------------------------| + * |Ctrl | GUI | Alter | Space | Ctrl | Shift | Space | Alter | FN | Ctrl | Lft | Dn | Rig | + * |---------------------------------------------------------------------------------------------------------------------------------| + */ + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_PSCR, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_BSPC, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_ENT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LCTL, KC_LSFT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + [1] = LAYOUT( + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_MYCM, KC_MSEL, KC_MAIL, NK_TOGG, EEP_RST, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NLCK, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, + KC_TRNS, RGB_SPD, RGB_VAD, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, KC_TRNS, KC_MUTE, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MPRV, KC_VOLD, KC_MNXT) +}; diff --git a/keyboards/xbows/knight_plus/keymaps/via/config.h b/keyboards/xbows/knight_plus/keymaps/via/config.h new file mode 100644 index 000000000000..cf06e7d07db1 --- /dev/null +++ b/keyboards/xbows/knight_plus/keymaps/via/config.h @@ -0,0 +1,63 @@ +/* Copyright 2021 Shulin Huang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#ifdef RGB_MATRIX_ENABLE +# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT // Sets the default mode, if none has been set +# undef ENABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue +# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes +# undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Static gradient left to right, speed controls how much gradient changes +//# undef ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation +# undef ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right +# undef ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades saturation +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness +//# undef ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient +//# undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right +# undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom +//# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in +# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in +# undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradent Chevron shapped scrolling left to right +# undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard +# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard +# undef ENABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard +//# undef ENABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard +# undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard +# undef ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue +# undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation +//# undef ENABLE_RGB_MATRIX_HUE_BREATHING // Hue shifts up a slight ammount at the same time, then shifts back +# undef ENABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight ammount in a wave to the right, then back to the left +//# undef ENABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight ammount and then back down in a wave to the right + +# undef ENABLE_RGB_MATRIX_DIGITAL_RAIN // That famous computer simulation +# undef ENABLE_RGB_MATRIX_TYPING_HEATMAP // How hot is your WPM! + +//# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out +//# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out +//# undef ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out +# undef ENABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out +# undef ENABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out +//# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out + +#endif diff --git a/keyboards/xbows/knight_plus/keymaps/via/keymap.c b/keyboards/xbows/knight_plus/keymaps/via/keymap.c new file mode 100644 index 000000000000..dcd9ec687b7e --- /dev/null +++ b/keyboards/xbows/knight_plus/keymaps/via/keymap.c @@ -0,0 +1,63 @@ +/* Copyright 2021 Shulin Huang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap VANILLA: (Base Layer) Default Layer + * + * |---------------------------------------------------------------------------------------------------------------------------------| + * | Esc | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Delete | Prtsc | + * |---------------------------------------------------------------------------------------------------------------------------------| + * | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Backspace | + * |---------------------------------------------------------------------------------------------------------------------------------| + * | Tab | Q | W | E | R | T | | Y | U | I | O | P | [ | ] | \ | PgUp | + * |---------------------------------------------------------------------------------------------------------------------------------| + * | Ctl | A | S | D | F | G | Bksp | H | J | K | L | ; | '" | Enter | PgDn | + * |---------------------------------------------------------------------------------------------------------------------------------| + * |Shift| Z | X | C | V | B | Enter | N | M | , | . | /? | Shift| | Up | + * |---------------------------------------------------------------------------------------------------------------------------------| + * |Ctrl | GUI | Alter | Space | Ctrl | Shift | Space | Alter | FN | Ctrl | Lft | Dn | Rig | + * |---------------------------------------------------------------------------------------------------------------------------------| + */ + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_PSCR, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_BSPC, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_ENT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LCTL, KC_LSFT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + [1] = LAYOUT( + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_MYCM, KC_MSEL, KC_MAIL, NK_TOGG, EEP_RST, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NLCK, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, + KC_TRNS, RGB_SPD, RGB_VAD, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, KC_TRNS, KC_MUTE, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MPRV, KC_VOLD, KC_MNXT), + [2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [3] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; diff --git a/keyboards/xbows/knight_plus/keymaps/via/rules.mk b/keyboards/xbows/knight_plus/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/xbows/knight_plus/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/xbows/knight_plus/knight_plus.c b/keyboards/xbows/knight_plus/knight_plus.c new file mode 100644 index 000000000000..ede23dc63d92 --- /dev/null +++ b/keyboards/xbows/knight_plus/knight_plus.c @@ -0,0 +1,145 @@ +/* Copyright 2021 Shulin Huang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #include "knight_plus.h" + #ifdef RGB_MATRIX_ENABLE + const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { + + {0, C1_3, C2_3, C3_3}, // L01 + {0, C1_4, C2_4, C3_4}, // L02 + {0, C1_5, C2_5, C3_5}, // L03 + {0, C1_6, C2_6, C3_6}, // L04 + {0, C1_7, C2_7, C3_7}, // L05 + {0, C1_8, C2_8, C3_8}, // L06 + {1, C1_3, C2_3, C3_3}, // L07 + {1, C1_4, C2_4, C3_4}, // L08 + {1, C1_5, C2_5, C3_5}, // L09 + {1, C1_6, C2_6, C3_6}, // L10 + {1, C1_7, C2_7, C3_7}, // L11 + {1, C1_8, C2_8, C3_8}, // L12 + {2, C1_3, C2_3, C3_3}, // L13 + {2, C1_4, C2_4, C3_4}, // L14 + {2, C1_5, C2_5, C3_5}, // L15 + + {0, C6_1, C5_1, C4_1}, // L16 + {0, C6_2, C5_2, C4_2}, // L17 + {0, C6_3, C5_3, C4_3}, // L18 + {0, C6_6, C5_6, C4_6}, // L19 + {0, C6_7, C5_7, C4_7}, // L20 + {0, C6_8, C5_8, C4_8}, // L21 + {1, C6_2, C5_2, C4_2}, // L22 + {1, C6_3, C5_3, C4_3}, // L23 + {1, C6_6, C5_6, C4_6}, // L24 + {1, C6_7, C5_7, C4_7}, // L25 + {1, C6_8, C5_8, C4_8}, // L26 + {2, C6_1, C5_1, C4_1}, // L27 + {2, C6_2, C5_2, C4_2}, // L28 + {2, C6_3, C5_3, C4_3}, // L29 + + {0, C9_1, C8_1, C7_1}, // L30 + {0, C9_2, C8_2, C7_2}, // L31 + {0, C9_3, C8_3, C7_3}, // L32 + {0, C9_4, C8_4, C7_4}, // L33 + {0, C9_5, C8_5, C7_5}, // L34 + {0, C9_6, C8_6, C7_6}, // L35 + {1, C9_1, C8_1, C7_1}, // L36 + {1, C9_2, C8_2, C7_2}, // L37 + {1, C9_3, C8_3, C7_3}, // L38 + {1, C9_4, C8_4, C7_4}, // L39 + {1, C9_5, C8_5, C7_5}, // L40 + {1, C9_6, C8_6, C7_6}, // L41 + {2, C6_6, C5_6, C4_6}, // L42 + {2, C6_7, C5_7, C4_7}, // L43 + {2, C6_8, C5_8, C4_8}, // L44 + + + {0, C1_11, C2_11, C3_11}, // L45 + {0, C1_12, C2_12, C3_12}, // L46 + {0, C1_13, C2_13, C3_13}, // L47 + {0, C1_14, C2_14, C3_14}, // L48 + {0, C1_15, C2_15, C3_15}, // L49 + {0, C1_16, C2_16, C3_16}, // L50 + {1, C9_9, C8_9, C7_9}, // L51 + {1, C1_11, C2_11, C3_11}, // L52 + {1, C1_12, C2_12, C3_12}, // L53 + {1, C1_13, C2_13, C3_13}, // L54 + {1, C1_14, C2_14, C3_14}, // L55 + {1, C1_15, C2_15, C3_15}, // L56 + {1, C1_16, C2_16, C3_16}, // L57 + {2, C9_4, C8_4, C7_4}, // L58 + {2, C9_5, C8_5, C7_5}, // L59 + + {0, C6_9, C5_9, C4_9}, // L60 + {0, C6_10, C5_10, C4_10}, // L61 + {0, C6_11, C5_11, C4_11}, // L62 + {0, C6_14, C5_14, C4_14}, // L63 + {0, C6_15, C5_15, C4_15}, // L64 + {0, C6_16, C5_16, C4_16}, // L65 + {1, C9_10, C8_10, C7_10}, // L66 + {1, C6_9, C5_9, C4_9}, // L67 + {1, C6_10, C5_10, C4_10}, // L68 + {1, C6_11, C5_11, C4_11}, // L69 + {1, C6_14, C5_14, C4_14}, // L70 + {1, C6_15, C5_15, C4_15}, // L71 + {1, C6_16, C5_16, C4_16}, // L72 + {2, C9_6, C8_6, C7_6}, // L73 + + {0, C9_9, C8_9, C7_9}, // L74 + {0, C9_10, C8_10, C7_10}, // L75 + {0, C9_11, C8_11, C7_11}, // L76 + {0, C9_12, C8_12, C7_12}, // L77 + {0, C9_13, C8_13, C7_13}, // L78 + {0, C9_14, C8_14, C7_14}, // L79 + {1, C9_11, C8_11, C7_11}, // L80 + {1, C9_12, C8_12, C7_12}, // L81 + {1, C9_13, C8_13, C7_13}, // L82 + {1, C9_14, C8_14, C7_14}, // L83 + {2, C1_6, C2_6, C3_6}, // L84 + {2, C1_7, C2_7, C3_7}, // L85 + {2, C1_8, C2_8, C3_8}, // L86 + }; + + led_config_t g_led_config = { { + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }, + { 15, 16, 17, 18, 19, 20, NO_LED, 21, 22, 23, 24, 25, 26, 27, 28 }, + { 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43 }, + { 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58 }, + { 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, NO_LED }, + { 73, 74, 75, NO_LED, 76, 77, 78, 79, NO_LED, 80, 81, 82, 83, 84, 85 } + }, { + {0,0}, {16,0}, {30,0}, {43,0}, {56,0}, {72,0}, {85,0}, {99,0}, {112,0}, {128,0}, {141,0}, {154,0}, {167,0}, {190,0}, {216,0}, + {0,13}, {16,13}, {32,12}, {49,14}, {66,16}, {82,20}, {102,20}, {118,16}, {134,14}, {150,12}, {167,13}, {184,13}, {197,13}, {216,13}, + {0,26}, {15,26}, {31,23}, {47,24}, {63,28}, {78,30}, {105,30}, {120,28}, {136,24}, {152,23}, {168,26}, {184,26}, {197,26}, {210,26}, {224,26}, + {0,37}, {15,37}, {30,33}, {45,35}, {60,37}, {75,40}, {92,43}, {108,40}, {124,37}, {138,35}, {153,33}, {168,37}, {184,37}, {203,37}, {224,37}, + {0,48}, {14,48}, {29,44}, {43,46}, {57,48}, {72,50}, {92,53}, {112,50}, {126,48}, {141,46}, {155,44}, {169,48}, {184,48}, {210,48}, + {0,58}, {14,58}, {34,58}, {61,61}, {83,64}, {100,64}, {122,61}, {149,58}, {170,58}, {184,58}, {197,58}, {210,58}, {224,58} + }, { + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1 + } }; + + + + __attribute__ ((weak)) void rgb_matrix_indicators_user(void) { + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color(44, 0xFF, 0xFF, 0xFF); + } +} + +#endif diff --git a/keyboards/xbows/knight_plus/knight_plus.h b/keyboards/xbows/knight_plus/knight_plus.h new file mode 100644 index 000000000000..735c3d051e95 --- /dev/null +++ b/keyboards/xbows/knight_plus/knight_plus.h @@ -0,0 +1,33 @@ +/* Copyright 2021 Shulin Huang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once +#include "quantum.h" +#define LAYOUT( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \ + K100, K101, K102, K103, K104, K105, K107, K108, K109, K110, K111, K112, K113, K114, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, \ + K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, \ + K500, K501, K502, K504, K505, K506, K507, K509, K510, K511, K512, K513, K514 \ +) \ + { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \ + { K100, K101, K102, K103, K104, K105, KC_NO,K107, K108, K109, K110, K111, K112, K113, K114 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314 }, \ + { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, KC_NO}, \ + { K500, K501, K502, KC_NO,K504, K505, K506, K507, KC_NO,K509, K510, K511, K512, K513, K514 } \ +} diff --git a/keyboards/xbows/knight_plus/readme.md b/keyboards/xbows/knight_plus/readme.md new file mode 100644 index 000000000000..4a7a75827d03 --- /dev/null +++ b/keyboards/xbows/knight_plus/readme.md @@ -0,0 +1,29 @@ +# KNIGHT_PLUS +![KNIGHT_PLUS](https://cdn.shopifycdn.net/s/files/1/0014/7623/1237/products/BestSeller_8_1024x1024@2x.png?v=1616165816) + +Knight_Plus is an Ergonomic Mechanical keyboard suite redesigned by X-Bow that includes both the main keyboard and the numpad. + +If you spend your work days in front of a computer, you have likely felt some discomfort after a long day of typing. While spending less time on our computers would be the ideal remedy for this problem, that is not a realistic solution for most people. X-Bows was designed to limit the stress on your hands and wrists while also providing a productive and stylish typing experience. + + +X-Bows was designed with three criteria in mind: +* Enhancing the comfort and ergonomics of the keyboard +* Limiting the learning curve for our new layout +* Creating an attractive design + + +* Keyboard Maintainer: X-BOWS +* Hardware Supported: X-BOWS Knight_Plus +* Hardware Availability: [X-BOWS](https://x-bows.com/) + +Make example for this keyboard (after setting up your build environment): + + make xbows/knight_plus:default + make xbows/knight_plus:via + +Flashing example for this keyboard: + + make xbows/knight_plus:default:flash + make xbows/knight_plus:via:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/xbows/knight_plus/rules.mk b/keyboards/xbows/knight_plus/rules.mk new file mode 100644 index 000000000000..0cf59b45dd3e --- /dev/null +++ b/keyboards/xbows/knight_plus/rules.mk @@ -0,0 +1,21 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = IS31FL3731 diff --git a/keyboards/xbows/nature/config.h b/keyboards/xbows/nature/config.h index c1ff793352e0..922e479a500f 100644 --- a/keyboards/xbows/nature/config.h +++ b/keyboards/xbows/nature/config.h @@ -28,31 +28,72 @@ #define MATRIX_ROW_PINS { F7, F6, F5, F4, F1, F0 } #define MATRIX_COL_PINS { B0, B1, B2, B3, B7, D2, D3, D5, D4, D6, D7, B4, B5, B6, C6 } #define DIODE_DIRECTION COL2ROW - #define DEBOUNCE 3 +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + #ifdef RGB_MATRIX_ENABLE # define RGB_MATRIX_LED_PROCESS_LIMIT 18 # define RGB_MATRIX_LED_FLUSH_LIMIT 16 # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended -# define RGB_MATRIX_KEYPRESSES +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended +// # define RGB_MATRIX_KEYPRESSES # define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 -# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -# define DISABLE_RGB_MATRIX_BAND_SAT -# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -# define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -# define DISABLE_RGB_MATRIX_SPLASH -# define DISABLE_RGB_MATRIX_MULTISPLASH -# define DISABLE_RGB_MATRIX_SOLID_SPLASH -# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH -# define DISABLE_RGB_MATRIX_DIGITAL_RAIN +# define RGB_MATRIX_CENTER \ + { 92, 33 } + +# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT // Sets the default mode, if none has been set + +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +// # define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +// # define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +// # define ENABLE_RGB_MATRIX_HUE_BREATHING +// # define ENABLE_RGB_MATRIX_HUE_PENDULUM +// # define ENABLE_RGB_MATRIX_HUE_WAVE +// # define ENABLE_RGB_MATRIX_PIXEL_RAIN +// # define ENABLE_RGB_MATRIX_PIXEL_FLOW +// # define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// # define ENABLE_RGB_MATRIX_SPLASH +// # define ENABLE_RGB_MATRIX_MULTISPLASH +// # define ENABLE_RGB_MATRIX_SOLID_SPLASH +// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH # define DRIVER_ADDR_1 0b1110100 # define DRIVER_ADDR_2 0b1110110 diff --git a/keyboards/xbows/nature/info.json b/keyboards/xbows/nature/info.json index a9d4c4c7b794..62e2c1f6d96a 100644 --- a/keyboards/xbows/nature/info.json +++ b/keyboards/xbows/nature/info.json @@ -2,8 +2,6 @@ "keyboard_name": "NATURE", "url": "", "maintainer": "xbows-qmk", - "width": 18, - "height": 6.5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/xbows/nature/keymaps/via/keymap.c b/keyboards/xbows/nature/keymaps/via/keymap.c new file mode 100644 index 000000000000..dabbc6c9b3e6 --- /dev/null +++ b/keyboards/xbows/nature/keymaps/via/keymap.c @@ -0,0 +1,63 @@ +/* Copyright 2021 Shulin Huang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap VANILLA: (Base Layer) Default Layer + * + * |---------------------------------------------------------------------------------------------------------------------------------| + * | Esc | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Delete | Prtsc | + * |---------------------------------------------------------------------------------------------------------------------------------| + * | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Backspace | + * |---------------------------------------------------------------------------------------------------------------------------------| + * | Tab | Q | W | E | R | T | | Y | U | I | O | P | [ | ] | \ | PgUp | + * |---------------------------------------------------------------------------------------------------------------------------------| + * | Ctl | A | S | D | F | G | Bksp | H | J | K | L | ; | '" | Enter | PgDn | + * |---------------------------------------------------------------------------------------------------------------------------------| + * |Shift| Z | X | C | V | B | Enter | N | M | , | . | /? | Shift| | Up | + * |---------------------------------------------------------------------------------------------------------------------------------| + * |Ctrl | GUI | Alter | Space | Ctrl | Shift | Space | Alter | FN | Ctrl | Lft | Dn | Rig | + * |---------------------------------------------------------------------------------------------------------------------------------| + */ + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_PSCR, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_BSPC, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_ENT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LCTL, KC_LSFT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + [1] = LAYOUT( + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_MYCM, KC_MSEL, KC_MAIL, NK_TOGG, EEP_RST, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NLCK, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, + KC_TRNS, RGB_SPD, RGB_VAD, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, KC_TRNS, KC_MUTE, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MPRV, KC_VOLD, KC_MNXT), + [2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [3] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; diff --git a/keyboards/xbows/nature/keymaps/via/rules.mk b/keyboards/xbows/nature/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/xbows/nature/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/xbows/nature/nature.c b/keyboards/xbows/nature/nature.c index f1b0615845c1..80d695fecf8b 100644 --- a/keyboards/xbows/nature/nature.c +++ b/keyboards/xbows/nature/nature.c @@ -15,7 +15,7 @@ */ #include "nature.h" #ifdef RGB_MATRIX_ENABLE - const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { + const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { {0, C1_3, C2_3, C3_3}, // L01 {0, C1_4, C2_4, C3_4}, // L02 diff --git a/keyboards/xbows/nature/rules.mk b/keyboards/xbows/nature/rules.mk index 71883128e91d..45a7eae53d0d 100644 --- a/keyboards/xbows/nature/rules.mk +++ b/keyboards/xbows/nature/rules.mk @@ -7,18 +7,16 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # 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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output +SLEEP_LED_ENABLE = yes RGB_MATRIX_ENABLE = yes RGB_MATRIX_DRIVER = IS31FL3731 diff --git a/keyboards/xbows/numpad/config.h b/keyboards/xbows/numpad/config.h new file mode 100644 index 000000000000..59616eba3b87 --- /dev/null +++ b/keyboards/xbows/numpad/config.h @@ -0,0 +1,99 @@ +/* Copyright 2021 Shulin Huang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "config_common.h" + +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x1228 +#define DEVICE_VER 0x0001 +#define MANUFACTURER X-BOWS +#define PRODUCT NUMPAD + +#define MATRIX_ROWS 6 +#define MATRIX_COLS 4 +#define MATRIX_ROW_PINS { B5, B4, C6, B6, D7, B3 } +#define MATRIX_COL_PINS { D4, D6, B2, B1 } +#define DIODE_DIRECTION COL2ROW +#define DEBOUNCE 3 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +#ifdef RGB_MATRIX_ENABLE +# define RGB_MATRIX_LED_PROCESS_LIMIT 18 +# define RGB_MATRIX_LED_FLUSH_LIMIT 16 +# 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_KEYPRESSES +# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 +# define RGB_MATRIX_CENTER \ + { 30, 32 } + +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + +# define DRIVER_ADDR_1 0b1110111 +# define DRIVER_COUNT 1 +# define DRIVER_LED_TOTAL 22 +#endif diff --git a/keyboards/xbows/numpad/info.json b/keyboards/xbows/numpad/info.json new file mode 100644 index 000000000000..f4be5f56d150 --- /dev/null +++ b/keyboards/xbows/numpad/info.json @@ -0,0 +1,39 @@ +{ + "keyboard_name": "NUMPAD", + "url": "", + "maintainer": "xbows-qmk", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"Tab", "x":1, "y":0}, + {"label":"Backspace", "x":2, "y":0}, + {"label":"Fn", "x":3, "y":0}, + + {"label":"Num Lock", "x":0, "y":1.5}, + {"label":"/", "x":1, "y":1.5}, + {"label":"*", "x":2, "y":1.5}, + {"label":"=", "x":3, "y":1.5}, + + {"label":"7", "x":0, "y":2.5}, + {"label":"8", "x":1, "y":2.5}, + {"label":"9", "x":2, "y":2.5}, + {"label":"-", "x":3, "y":2.5}, + + {"label":"4", "x":0, "y":3.5}, + {"label":"5", "x":1, "y":3.5}, + {"label":"6", "x":2, "y":3.5}, + {"label":"+", "x":3, "y":3.5}, + + {"label":"1", "x":0, "y":4.5}, + {"label":"2", "x":1, "y":4.5}, + {"label":"3", "x":2, "y":4.5}, + {"label":"Enter", "x":3, "y":4.5, "h":2}, + + {"label":"0", "x":0, "y":5.5, "w":2}, + {"label":".", "x":2, "y":5.5} + + ] + } + } +} diff --git a/keyboards/xbows/numpad/keymaps/default/config.h b/keyboards/xbows/numpad/keymaps/default/config.h new file mode 100644 index 000000000000..3e3358e344d6 --- /dev/null +++ b/keyboards/xbows/numpad/keymaps/default/config.h @@ -0,0 +1,44 @@ +/* Copyright 2021 Shulin Huang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + + #ifdef RGB_MATRIX_ENABLE + # define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT // Sets the default mode, if none has been set + +# undef ENABLE_RGB_MATRIX_SOLID_COLOR // Static single hue, no speed support +# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes +# undef ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right +# undef ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAT // Single hue spinning spiral fades saturation +# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in +# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard + +# undef ENABLE_RGB_MATRIX_DIGITAL_RAIN // That famous computer simulation +# undef ENABLE_RGB_MATRIX_TYPING_HEATMAP // How hot is your WPM! + +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out +// # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out +// # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out +// # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out +// # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out +//# undef ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out +// # undef ENABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out +// # undef ENABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out +//# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out + +#endif diff --git a/keyboards/xbows/numpad/keymaps/default/keymap.c b/keyboards/xbows/numpad/keymaps/default/keymap.c new file mode 100644 index 000000000000..b2b4da7fb5b2 --- /dev/null +++ b/keyboards/xbows/numpad/keymaps/default/keymap.c @@ -0,0 +1,49 @@ +/* Copyright 2021 Shulin Huang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap VANILLA: (Base Layer) Default Layer + * + * |-------------------------------| + * | Esc | Tab | BS | Fn | + * |-------------------------------| + * | NUM | / | * | = | + * |-------------------------------| + * | 7 | 8 | 9 | - | + * |-------------------------------| + * | 4 | 5 | 6 | + | + * |-------------------------------| + * | 1 | 2 | 3 | ENTER | + * |-------------------------------| + * | 0 | . | + * |-----------------------| + */ + [0] = LAYOUT( + KC_ESC , KC_TAB, KC_BSPC, MO(1), + KC_NLCK, KC_PSLS, KC_PAST, KC_EQL, + KC_P7, KC_P8, KC_P9, KC_PMNS, + KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_P1, KC_P2, KC_P3, KC_PENT, + KC_P0, KC_PDOT), + [1] = LAYOUT( + RESET, EEP_RST, KC_TRNS, KC_TRNS, + KC_CALC, KC_MYCM, KC_MSEL, KC_MAIL, + RGB_MOD, RGB_VAI, RGB_HUI, KC_VOLD, + RGB_SPD, RGB_TOG, RGB_SPI, KC_VOLU, + KC_TRNS, RGB_VAD, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS) +}; diff --git a/keyboards/xbows/numpad/keymaps/via/config.h b/keyboards/xbows/numpad/keymaps/via/config.h new file mode 100644 index 000000000000..cf06e7d07db1 --- /dev/null +++ b/keyboards/xbows/numpad/keymaps/via/config.h @@ -0,0 +1,63 @@ +/* Copyright 2021 Shulin Huang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#ifdef RGB_MATRIX_ENABLE +# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT // Sets the default mode, if none has been set +# undef ENABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue +# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes +# undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Static gradient left to right, speed controls how much gradient changes +//# undef ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation +# undef ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right +# undef ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades saturation +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness +//# undef ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient +//# undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right +# undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom +//# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in +# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in +# undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradent Chevron shapped scrolling left to right +# undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard +# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard +# undef ENABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard +//# undef ENABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard +# undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard +# undef ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue +# undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation +//# undef ENABLE_RGB_MATRIX_HUE_BREATHING // Hue shifts up a slight ammount at the same time, then shifts back +# undef ENABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight ammount in a wave to the right, then back to the left +//# undef ENABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight ammount and then back down in a wave to the right + +# undef ENABLE_RGB_MATRIX_DIGITAL_RAIN // That famous computer simulation +# undef ENABLE_RGB_MATRIX_TYPING_HEATMAP // How hot is your WPM! + +//# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out +//# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out +//# undef ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out +# undef ENABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out +# undef ENABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out +//# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out + +#endif diff --git a/keyboards/xbows/numpad/keymaps/via/keymap.c b/keyboards/xbows/numpad/keymaps/via/keymap.c new file mode 100644 index 000000000000..6b122cc5d071 --- /dev/null +++ b/keyboards/xbows/numpad/keymaps/via/keymap.c @@ -0,0 +1,63 @@ +/* Copyright 2021 Shulin Huang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap VANILLA: (Base Layer) Default Layer + * + * |-------------------------------| + * | Esc | Tab | BS | Fn | + * |-------------------------------| + * | NUM | / | * | = | + * |-------------------------------| + * | 7 | 8 | 9 | - | + * |-------------------------------| + * | 4 | 5 | 6 | + | + * |-------------------------------| + * | 1 | 2 | 3 | ENTER | + * |-------------------------------| + * | 0 | . | + * |-----------------------| + */ + [0] = LAYOUT( + KC_ESC , KC_TAB, KC_BSPC, MO(1), + KC_NLCK, KC_PSLS, KC_PAST, KC_EQL, + KC_P7, KC_P8, KC_P9, KC_PMNS, + KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_P1, KC_P2, KC_P3, KC_PENT, + KC_P0, KC_PDOT), + [1] = LAYOUT( + RESET, EEP_RST, KC_TRNS, KC_TRNS, + KC_CALC, KC_MYCM, KC_MSEL, KC_MAIL, + RGB_MOD, RGB_VAI, RGB_HUI, KC_VOLD, + RGB_SPD, RGB_TOG, RGB_SPI, KC_VOLU, + KC_TRNS, RGB_VAD, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS), + [2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS), + [3] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS) +}; diff --git a/keyboards/xbows/numpad/keymaps/via/rules.mk b/keyboards/xbows/numpad/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/xbows/numpad/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/xbows/numpad/numpad.c b/keyboards/xbows/numpad/numpad.c new file mode 100644 index 000000000000..bbc2a1e98a25 --- /dev/null +++ b/keyboards/xbows/numpad/numpad.c @@ -0,0 +1,80 @@ +/* Copyright 2021 Shulin Huang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #include "numpad.h" + #ifdef RGB_MATRIX_ENABLE + const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { + + {0, C3_3, C2_3, C1_3}, // L01 + {0, C3_4, C2_4, C1_4}, // L02 + {0, C9_5, C8_5, C7_5}, // L03 + {0, C9_6, C8_6, C7_6}, // L04 + + {0, C6_1, C5_1, C4_1}, // L05 + {0, C6_2, C5_2, C4_2}, // L06 + {0, C6_3, C5_3, C4_3}, // L07 + {0, C6_6, C5_6, C4_6}, // L08 + + {0, C9_1, C8_1, C7_1}, // L09 + {0, C9_2, C8_2, C7_2}, // L10 + {0, C9_3, C8_3, C7_3}, // L11 + {0, C9_4, C8_4, C7_4}, // L12 + + {0, C3_11, C2_11, C1_11}, // L13 + {0, C3_12, C2_12, C1_12}, // L14 + {0, C3_13, C2_13, C1_13}, // L15 + {0, C3_14, C2_14, C1_14}, // L16 + + {0, C6_9, C5_9, C4_9}, // L17 + {0, C6_10, C5_10, C4_10}, // L18 + {0, C6_11, C5_11, C4_11}, // L19 + {0, C6_14, C5_14, C4_14}, // L20 + + {0, C6_16, C5_16, C4_16}, // L21 + {0, C6_15, C5_15, C4_15}, // L22 + + }; + + led_config_t g_led_config = { { + { 0, 1, 2, 3 }, + { 4, 5, 6, 7 }, + { 8, 9, 10, 11 }, + { 12, 13, 14, 15 }, + { 16, 17, 18, 19 }, + { 20, NO_LED, 21, NO_LED} + }, { + {0,0}, {20,0}, {40,0}, {60,0}, + {0,13}, {20,13}, {40,13}, {60,13}, + {0,25}, {20,25}, {40,25}, {60,25}, + {0,38}, {20,38}, {40,38}, {60,38}, + {0,50}, {20,50}, {40,50}, {60,57}, + {10,63}, {40,63} + }, { + 4, 4, 4, 4, + 4, 4, 4, 4, + 4, 4, 4, 4, + 4, 4, 4, 4, + 4, 4, 4, 4, + 4, 4, + } }; + + + __attribute__ ((weak)) void rgb_matrix_indicators_user(void) { + if (host_keyboard_led_state().num_lock) { + rgb_matrix_set_color(4, 0xFF, 0xFF, 0xFF); + } +} + +#endif diff --git a/keyboards/xbows/numpad/numpad.h b/keyboards/xbows/numpad/numpad.h new file mode 100644 index 000000000000..c160bff757db --- /dev/null +++ b/keyboards/xbows/numpad/numpad.h @@ -0,0 +1,33 @@ +/* Copyright 2021 Shulin Huang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once +#include "quantum.h" +#define LAYOUT( \ + K000, K001, K002, K003, \ + K100, K101, K102, K103, \ + K200, K201, K202, K203, \ + K300, K301, K302, K303, \ + K400, K401, K402, K403, \ + K500, K502 \ +) \ + { \ + { K000, K001, K002, K003 }, \ + { K100, K101, K102, K103 }, \ + { K200, K201, K202, K203 }, \ + { K300, K301, K302, K303 }, \ + { K400, K401, K402, K403 }, \ + { K500, KC_NO,K502, KC_NO} \ +} diff --git a/keyboards/xbows/numpad/readme.md b/keyboards/xbows/numpad/readme.md new file mode 100644 index 000000000000..804042afff84 --- /dev/null +++ b/keyboards/xbows/numpad/readme.md @@ -0,0 +1,29 @@ +# NUMPAD +![NUMPAD](https://cdn.shopifycdn.net/s/files/1/0014/7623/1237/products/BestSeller_8_1024x1024@2x.png?v=1616165816) + +Knight-Plus is an Ergonomic Mechanical keyboard suite redesigned by X-Bow that includes both the main keyboard and the numpad. + +If you spend your work days in front of a computer, you have likely felt some discomfort after a long day of typing. While spending less time on our computers would be the ideal remedy for this problem, that is not a realistic solution for most people. X-Bows was designed to limit the stress on your hands and wrists while also providing a productive and stylish typing experience. + + +X-Bows was designed with three criteria in mind: +* Enhancing the comfort and ergonomics of the keyboard +* Limiting the learning curve for our new layout +* Creating an attractive design + + +* Keyboard Maintainer: X-BOWS +* Hardware Supported: X-BOWS Numpad +* Hardware Availability: [X-BOWS](https://x-bows.com/) + +Make example for this keyboard (after setting up your build environment): + + make xbows/numpad:default + make xbows/numpad:via + +Flashing example for this keyboard: + + make xbows/numpad:default:flash + make xbows/numpad:via:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/xbows/numpad/rules.mk b/keyboards/xbows/numpad/rules.mk new file mode 100644 index 000000000000..0cf59b45dd3e --- /dev/null +++ b/keyboards/xbows/numpad/rules.mk @@ -0,0 +1,21 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = IS31FL3731 diff --git a/keyboards/xbows/ranger/config.h b/keyboards/xbows/ranger/config.h new file mode 100644 index 000000000000..1447a26d032d --- /dev/null +++ b/keyboards/xbows/ranger/config.h @@ -0,0 +1,104 @@ +/* Copyright 2021 Shulin Huang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "config_common.h" + +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x1229 +#define DEVICE_VER 0x0001 +#define MANUFACTURER X-BOWS +#define PRODUCT Ranger + +#define MATRIX_ROWS 6 +#define MATRIX_COLS 16 +#define MATRIX_ROW_PINS { C7, B6, B4, C6, B5, D6 } +#define MATRIX_COL_PINS { B7, B3, B2, B1, B0, E6, F0, F1, F4, F5, D7, F6, F7, D4, D5, D3 } +#define DIODE_DIRECTION COL2ROW +#define DEBOUNCE 3 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +#ifdef RGB_MATRIX_ENABLE +# define RGB_MATRIX_LED_PROCESS_LIMIT 18 +# define RGB_MATRIX_LED_FLUSH_LIMIT 16 +# 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_KEYPRESSES +# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 +# define RGB_MATRIX_CENTER { 103, 32 } + +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + +# define DRIVER_ADDR_1 0b1110100 +# define DRIVER_ADDR_2 0b1110101 +# define DRIVER_ADDR_3 0b1110110 +# define DRIVER_COUNT 3 +# define DRIVER_1_LED_TOTAL 36 +# define DRIVER_2_LED_TOTAL 36 +# define DRIVER_3_LED_TOTAL 15 +# define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL + DRIVER_3_LED_TOTAL) + +#endif diff --git a/keyboards/xbows/ranger/info.json b/keyboards/xbows/ranger/info.json new file mode 100644 index 000000000000..8f0e3d113504 --- /dev/null +++ b/keyboards/xbows/ranger/info.json @@ -0,0 +1,106 @@ +{ + "keyboard_name": "Ranger", + "url": "", + "maintainer": "xbows-qmk", + "layout_aliases": { + "LAYOUT": "LAYOUT_tkl_ansi" + }, + "layouts": { + "LAYOUT_tkl_ansi": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":2, "y":0}, + {"label":"F2", "x":3, "y":0}, + {"label":"F3", "x":4, "y":0}, + {"label":"F4", "x":5, "y":0}, + {"label":"F5", "x":6.5, "y":0}, + {"label":"F6", "x":7.5, "y":0}, + {"label":"F7", "x":8.5, "y":0}, + {"label":"F8", "x":9.5, "y":0}, + {"label":"F9", "x":11, "y":0}, + {"label":"F10", "x":12, "y":0}, + {"label":"F11", "x":13, "y":0}, + {"label":"F12", "x":14, "y":0}, + {"label":"PrtSc", "x":15.25, "y":0}, + {"label":"Scroll Lock", "x":16.25, "y":0}, + {"label":"Pause", "x":17.25, "y":0}, + + {"label":"~", "x":0, "y":1.5}, + {"label":"!", "x":1, "y":1.5}, + {"label":"@", "x":2, "y":1.5}, + {"label":"#", "x":3, "y":1.5}, + {"label":"$", "x":4, "y":1.5}, + {"label":"%", "x":5, "y":1.5}, + {"label":"^", "x":6, "y":1.5}, + {"label":"&", "x":7, "y":1.5}, + {"label":"*", "x":8, "y":1.5}, + {"label":"(", "x":9, "y":1.5}, + {"label":")", "x":10, "y":1.5}, + {"label":"_", "x":11, "y":1.5}, + {"label":"+", "x":12, "y":1.5}, + {"label":"Bksp", "x":13, "y":1.5, "w":2}, + {"label":"Insert", "x":15.25, "y":1.5}, + {"label":"Home", "x":16.25, "y":1.5}, + {"label":"PgUp", "x":17.25, "y":1.5}, + + {"label":"Tab", "x":0, "y":2.5, "w":1.5}, + {"label":"Q", "x":1.5, "y":2.5}, + {"label":"W", "x":2.5, "y":2.5}, + {"label":"E", "x":3.5, "y":2.5}, + {"label":"R", "x":4.5, "y":2.5}, + {"label":"T", "x":5.5, "y":2.5}, + {"label":"Y", "x":6.5, "y":2.5}, + {"label":"U", "x":7.5, "y":2.5}, + {"label":"I", "x":8.5, "y":2.5}, + {"label":"O", "x":9.5, "y":2.5}, + {"label":"P", "x":10.5, "y":2.5}, + {"label":"{", "x":11.5, "y":2.5}, + {"label":"}", "x":12.5, "y":2.5}, + {"label":"|", "x":13.5, "y":2.5, "w":1.5}, + {"label":"Delete", "x":15.25, "y":2.5}, + {"label":"End", "x":16.25, "y":2.5}, + {"label":"PgDn", "x":17.25, "y":2.5}, + + {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, + {"label":"A", "x":1.75, "y":3.5}, + {"label":"S", "x":2.75, "y":3.5}, + {"label":"D", "x":3.75, "y":3.5}, + {"label":"F", "x":4.75, "y":3.5}, + {"label":"G", "x":5.75, "y":3.5}, + {"label":"H", "x":6.75, "y":3.5}, + {"label":"J", "x":7.75, "y":3.5}, + {"label":"K", "x":8.75, "y":3.5}, + {"label":"L", "x":9.75, "y":3.5}, + {"label":":", "x":10.75, "y":3.5}, + {"label":"\"", "x":11.75, "y":3.5}, + {"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, + + {"label":"Shift", "x":0, "y":4.5, "w":2.25}, + {"label":"Z", "x":2.25, "y":4.5}, + {"label":"X", "x":3.25, "y":4.5}, + {"label":"C", "x":4.25, "y":4.5}, + {"label":"V", "x":5.25, "y":4.5}, + {"label":"B", "x":6.25, "y":4.5}, + {"label":"N", "x":7.25, "y":4.5}, + {"label":"M", "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":"Shift", "x":12.25, "y":4.5, "w":2.75}, + {"label":"Up", "x":16.25, "y":4.5}, + + {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, + {"label":"Win", "x":1.25, "y":5.5, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, + {"label":"Space", "x":3.75, "y":5.5, "w":6.25}, + {"label":"Alt", "x":10, "y":5.5, "w":1.25}, + {"label":"Fn", "x":11.25, "y":5.5, "w":1.25}, + {"label":"Menu", "x":12.5, "y":5.5, "w":1.25}, + {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25}, + {"label":"Left", "x":15.25, "y":5.5}, + {"label":"Down", "x":16.25, "y":5.5}, + {"label":"Right", "x":17.25, "y":5.5} + ] + } + } +} diff --git a/keyboards/xbows/ranger/keymaps/default/config.h b/keyboards/xbows/ranger/keymaps/default/config.h new file mode 100644 index 000000000000..2e662068f639 --- /dev/null +++ b/keyboards/xbows/ranger/keymaps/default/config.h @@ -0,0 +1,44 @@ +/* Copyright 2021 Shulin Huang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#ifdef RGB_MATRIX_ENABLE +# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT // Sets the default mode, if none has been set + +# undef ENABLE_RGB_MATRIX_SOLID_COLOR // Static single hue, no speed support +# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes +# undef ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right +# undef ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAT // Single hue spinning spiral fades saturation +# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in +# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard + +# undef ENABLE_RGB_MATRIX_DIGITAL_RAIN // That famous computer simulation +# undef ENABLE_RGB_MATRIX_TYPING_HEATMAP // How hot is your WPM! + +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out +// # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out +// # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out +// # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out +// # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out +//# undef ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out +// # undef ENABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out +// # undef ENABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out +//# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out + +#endif diff --git a/keyboards/xbows/ranger/keymaps/default/keymap.c b/keyboards/xbows/ranger/keymaps/default/keymap.c new file mode 100644 index 000000000000..27b0cf3f8b6e --- /dev/null +++ b/keyboards/xbows/ranger/keymaps/default/keymap.c @@ -0,0 +1,49 @@ +/* Copyright 2021 Shulin Huang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap VANILLA: (Base Layer) Default Layer + * + * |---------------------------------------------------------------------------------------------------------------------------------------------------------------| + * | Esc | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Print |S-Lock|Pause + * |---------------------------------------------------------------------------------------------------------------------------------------------------------------| + * | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Backspace| Insert| Home |PgUp + * |---------------------------------------------------------------------------------------------------------------------------------------------------------------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | Delete| End |PgDn + * |---------------------------------------------------------------------------------------------------------------------------------------------------------------| + * | Caps | A | S | D | F | G | H | J | K | L | ; | '" | Enter | + * |---------------------------------------------------------------------------------------------------------------------------------------------------------------| + * | Shift | Z | X | C | V | B | N | M | , | . | /? | Shift | | Up | + * |---------------------------------------------------------------------------------------------------------------------------------------------------------------| + * | Ctrl | GUI |Alter| Space | Alter| Fn | menu | Ctrl | Left | Down |Right + * |---------------------------------------------------------------------------------------------------------------------------------------------------------------| + */ + [0] = LAYOUT_tkl_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9,KC_F10,KC_F11,KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL, KC_BSPC , KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN ,KC_QUOT, KC_ENT , + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT , KC_UP, + KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT, MO(1) , KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + [1] = LAYOUT_tkl_ansi( + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_MYCM, KC_MSEL, KC_MAIL, NK_TOGG, EEP_RST, KC_NLCK, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_SPD, RGB_VAD, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MPRV, KC_VOLD, KC_MNXT) +}; diff --git a/keyboards/xbows/ranger/keymaps/via/config.h b/keyboards/xbows/ranger/keymaps/via/config.h new file mode 100644 index 000000000000..cf06e7d07db1 --- /dev/null +++ b/keyboards/xbows/ranger/keymaps/via/config.h @@ -0,0 +1,63 @@ +/* Copyright 2021 Shulin Huang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#ifdef RGB_MATRIX_ENABLE +# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT // Sets the default mode, if none has been set +# undef ENABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue +# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes +# undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Static gradient left to right, speed controls how much gradient changes +//# undef ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation +# undef ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right +# undef ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades saturation +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness +//# undef ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient +//# undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right +# undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom +//# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in +# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in +# undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradent Chevron shapped scrolling left to right +# undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard +# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard +# undef ENABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard +//# undef ENABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard +# undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard +# undef ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue +# undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation +//# undef ENABLE_RGB_MATRIX_HUE_BREATHING // Hue shifts up a slight ammount at the same time, then shifts back +# undef ENABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight ammount in a wave to the right, then back to the left +//# undef ENABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight ammount and then back down in a wave to the right + +# undef ENABLE_RGB_MATRIX_DIGITAL_RAIN // That famous computer simulation +# undef ENABLE_RGB_MATRIX_TYPING_HEATMAP // How hot is your WPM! + +//# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out +//# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out +//# undef ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out +# undef ENABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out +# undef ENABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out +//# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out + +#endif diff --git a/keyboards/xbows/ranger/keymaps/via/keymap.c b/keyboards/xbows/ranger/keymaps/via/keymap.c new file mode 100644 index 000000000000..e38c05861ad6 --- /dev/null +++ b/keyboards/xbows/ranger/keymaps/via/keymap.c @@ -0,0 +1,63 @@ +/* Copyright 2021 Shulin Huang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap VANILLA: (Base Layer) Default Layer + * + * |---------------------------------------------------------------------------------------------------------------------------------------------------------------| + * | Esc | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Print |S-Lock|Pause + * |---------------------------------------------------------------------------------------------------------------------------------------------------------------| + * | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Backspace| Insert| Home |PgUp + * |---------------------------------------------------------------------------------------------------------------------------------------------------------------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | Delete| End |PgDn + * |---------------------------------------------------------------------------------------------------------------------------------------------------------------| + * | Caps | A | S | D | F | G | H | J | K | L | ; | '" | Enter | + * |---------------------------------------------------------------------------------------------------------------------------------------------------------------| + * | Shift | Z | X | C | V | B | N | M | , | . | /? | Shift | | Up | + * |---------------------------------------------------------------------------------------------------------------------------------------------------------------| + * | Ctrl | GUI |Alter| Space | Alter | Fn | menu | Ctrl | Left | Down |Right + * |---------------------------------------------------------------------------------------------------------------------------------------------------------------| + */ + [0] = LAYOUT_tkl_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9,KC_F10,KC_F11,KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL, KC_BSPC , KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN ,KC_QUOT, KC_ENT , + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT , KC_UP, + KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT, MO(1) , KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + [1] = LAYOUT_tkl_ansi( + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_MYCM, KC_MSEL, KC_MAIL, NK_TOGG, EEP_RST, KC_NLCK, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_SPD, RGB_VAD, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MPRV, KC_VOLD, KC_MNXT), + [2] = LAYOUT_tkl_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [3] = LAYOUT_tkl_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; diff --git a/keyboards/xbows/ranger/keymaps/via/rules.mk b/keyboards/xbows/ranger/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/xbows/ranger/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/xbows/ranger/ranger.c b/keyboards/xbows/ranger/ranger.c new file mode 100644 index 000000000000..9a09918967e0 --- /dev/null +++ b/keyboards/xbows/ranger/ranger.c @@ -0,0 +1,146 @@ +/* Copyright 2021 Shulin Huang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #include "ranger.h" + #ifdef RGB_MATRIX_ENABLE +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { + + {0, C3_3, C2_3, C1_3}, // L01 + {0, C3_4, C2_4, C1_4}, // L02 + {0, C3_5, C2_5, C1_5}, // L03 + {0, C3_6, C2_6, C1_6}, // L04 + {0, C3_7, C2_7, C1_7}, // L05 + {0, C3_8, C2_8, C1_8}, // L06 + {1, C3_3, C2_3, C1_3}, // L07 + {1, C3_4, C2_4, C1_4}, // L08 + {1, C3_5, C2_5, C1_5}, // L09 + {1, C3_6, C2_6, C1_6}, // L10 + {1, C3_7, C2_7, C1_7}, // L11 + {1, C3_8, C2_8, C1_8}, // L12 + {2, C3_4, C2_4, C1_4}, // L13 + {2, C3_5, C2_5, C1_5}, // L14 + {2, C3_6, C2_6, C1_6}, // L15 + {2, C3_7, C2_7, C1_7}, // L16 + + {0, C6_1, C5_1, C4_1}, // L17 + {0, C6_2, C5_2, C4_2}, // L18 + {0, C6_3, C5_3, C4_3}, // L19 + {0, C6_6, C5_6, C4_6}, // L20 + {0, C6_7, C5_7, C4_7}, // L21 + {0, C6_8, C5_8, C4_8}, // L22 + {1, C6_1, C5_1, C4_1}, // L23 + {1, C6_2, C5_2, C4_2}, // L24 + {1, C6_3, C5_3, C4_3}, // L25 + {1, C6_6, C5_6, C4_6}, // L26 + {1, C6_7, C5_7, C4_7}, // L27 + {1, C6_8, C5_8, C4_8}, // L28 + {2, C6_1, C5_1, C4_1}, // L29 + {2, C6_3, C5_3, C4_3}, // L31 + {2, C6_6, C5_6, C4_6}, // L32 + {2, C6_7, C5_7, C4_7}, // L33 + + {0, C9_1, C8_1, C7_1}, // L34 + {0, C9_2, C8_2, C7_2}, // L35 + {0, C9_3, C8_3, C7_3}, // L36 + {0, C9_4, C8_4, C7_4}, // L37 + {0, C9_5, C8_5, C7_5}, // L38 + {0, C9_6, C8_6, C7_6}, // L39 + {1, C9_1, C8_1, C7_1}, // L40 + {1, C9_2, C8_2, C7_2}, // L41 + {1, C9_3, C8_3, C7_3}, // L42 + {1, C9_4, C8_4, C7_4}, // L43 + {1, C9_5, C8_5, C7_5}, // L44 + {1, C9_6, C8_6, C7_6}, // L45 + {2, C9_1, C8_1, C7_1}, // L46 + {2, C9_3, C8_3, C7_3}, // L48 + {2, C9_4, C8_4, C7_4}, // L49 + {2, C9_6, C8_6, C7_6}, // L50 + + {0, C3_11, C2_11, C1_11}, // L51 + {0, C3_12, C2_12, C1_12}, // L52 + {0, C3_13, C2_13, C1_13}, // L53 + {0, C3_14, C2_14, C1_14}, // L54 + {0, C3_15, C2_15, C1_15}, // L55 + {0, C3_16, C2_16, C1_16}, // L56 + {1, C3_11, C2_11, C1_11}, // L57 + {1, C3_12, C2_12, C1_12}, // L58 + {1, C3_13, C2_13, C1_13}, // L59 + {1, C3_14, C2_14, C1_14}, // L60 + {1, C3_15, C2_15, C1_15}, // L61 + {1, C3_16, C2_16, C1_16}, // L62 + {2, C3_14, C2_14, C1_14}, // L63 + {2, C6_2, C5_2, C4_2}, // L30 + + {0, C6_9, C5_9, C4_9}, // L64 + {0, C6_10, C5_10, C4_10}, // L65 + {0, C6_11, C5_11, C4_11}, // L66 + {0, C6_14, C5_14, C4_14}, // L67 + {0, C6_15, C5_15, C4_15}, // L68 + {0, C6_16, C5_16, C4_16}, // L69 + {1, C6_10, C5_10, C4_10}, // L70 + {1, C6_11, C5_11, C4_11}, // L71 + {1, C6_14, C5_14, C4_14}, // L72 + {1, C6_15, C5_15, C4_15}, // L73 + {1, C6_16, C5_16, C4_16}, // L74 + {2, C3_15, C2_15, C1_15}, // L75 + {2, C9_2, C8_2, C7_2}, // L47 + {2, C9_14, C8_14, C7_14}, // L76 + + {0, C9_9, C8_9, C7_9}, // L77 + {0, C9_10, C8_10, C7_10}, // L78 + {0, C9_11, C8_11, C7_11}, // L79 + {1, C6_9, C5_9, C4_9}, // L80 + {1, C9_13, C8_13, C7_13}, // L81 + {1, C9_14, C8_14, C7_14}, // L82 + {2, C9_9, C8_9, C7_9}, // L83 + {2, C9_10, C8_10, C7_10}, // L84 + {2, C9_11, C8_11, C7_11}, // L85 + {2, C9_12, C8_12, C7_12}, // L86 + {2, C9_13, C8_13, C7_13}, // L87 +}; + +// clang-format off +led_config_t g_led_config = { { + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }, + { 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 }, + { 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47 }, + { 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, NO_LED, NO_LED }, + { 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, NO_LED, 73, 74, 75, NO_LED }, + { 76, 77, 78, NO_LED, NO_LED, 79, NO_LED, NO_LED, NO_LED, 80, 81, 82, 83, 84, 85, 86 } + }, { + {0,0}, {24,0}, {36,0}, {48,0}, {60,0}, {78,0}, {90,0}, {102,0}, {114,0}, {132,0}, {144,0}, {156,0}, {168,0}, {182,0}, {194,0}, {206,0}, + {0,15}, {12,15}, {24,15}, {36,15}, {48,15}, {60,15}, {72,15}, {84,15}, {96,15}, {108,15}, {120,15}, {132,15}, {144,15}, {182,15}, {194,15},{206,15}, + {3,27}, {18,27}, {30,27}, {42,27}, {54,27}, {66,27}, {78,27}, {90,27}, {102,27}, {114,27}, {126,27}, {138,27}, {150,27}, {182,27}, {194,27},{206,27}, + {4,39}, {20,39}, {32,39}, {44,39}, {56,39}, {68,39}, {80,39}, {92,39}, {104,39}, {116,39}, {128,39}, {140,39}, {162,39}, {162,15}, + {6,51}, {26,51}, {38,51}, {50,51}, {62,51}, {74,51}, {86,51}, {98,51}, {110,51}, {122,51}, {134,51}, {155,51}, {165,27}, {210,51}, + {1,63}, {16,63}, {31,63}, {64,63}, {121,63},{136,63}, {151,63}, {166,63},{182,63}, {194,63}, {206,63} + }, { + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 + } +}; +// clang-format on + +__attribute__((weak)) void rgb_matrix_indicators_user(void) { + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color(48, 0xFF, 0xFF, 0xFF); + } +} + +#endif diff --git a/keyboards/xbows/ranger/ranger.h b/keyboards/xbows/ranger/ranger.h new file mode 100644 index 000000000000..9fd2bf7148ea --- /dev/null +++ b/keyboards/xbows/ranger/ranger.h @@ -0,0 +1,33 @@ +/* Copyright 2021 Shulin Huang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once +#include "quantum.h" +#define LAYOUT_tkl_ansi( \ + 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, K313, K113, K114, K115, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K413, K213, K214, K215, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, \ + K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K412, K414, \ + K500, K501, K502, K505, 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, K313, KC_NO,KC_NO}, \ + { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410,KC_NO, K412, K413, K414, KC_NO}, \ + { K500, K501, K502, KC_NO,KC_NO,K505, KC_NO,KC_NO,KC_NO,K509, K510, K511, K512, K513, K514, K515 } \ +} diff --git a/keyboards/xbows/ranger/readme.md b/keyboards/xbows/ranger/readme.md new file mode 100644 index 000000000000..61b9955b459e --- /dev/null +++ b/keyboards/xbows/ranger/readme.md @@ -0,0 +1,29 @@ +# Ranger +![Ranger](https://img.alicdn.com/i3/16731204/O1CN015gRK1R1KlTSHEuHDo_!!16731204.jpg) + +Ranger, A 87 keys keyboard with RGB backlight. + +* Keyboard Maintainer: X-BOWS +* Hardware Supported: X-BOWS Ranger +* Hardware Availability: [X-BOWS](https://x-bows.com/) + +Enter the bootloader in 3 ways: +* Software reset on Fn + ESC +* Bootmagic reset: hold down the top left key (usually escape) and plugin the keyboard +* Physical reset button: There is a button on the back of the PCB, please press it briefly. + +Flash new firmware in 2 ways: +* Use the QMK toolbox:https://github.com/qmk/qmk_toolbox/releases +* Use the QMK MSYS:https://msys.qmk.fm/ + +Make example for this keyboard (after setting up your build environment): + + make xbows/ranger:default + make xbows/ranger:via + +Flashing example for this keyboard: + + make xbows/ranger:default:flash + make xbows/ranger:via:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/xbows/ranger/rules.mk b/keyboards/xbows/ranger/rules.mk new file mode 100644 index 000000000000..0cf59b45dd3e --- /dev/null +++ b/keyboards/xbows/ranger/rules.mk @@ -0,0 +1,21 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = IS31FL3731 diff --git a/keyboards/xbows/woody/config.h b/keyboards/xbows/woody/config.h index 7f396d0008f5..9d04eb84c477 100644 --- a/keyboards/xbows/woody/config.h +++ b/keyboards/xbows/woody/config.h @@ -16,28 +16,63 @@ #define RGB_MATRIX_LED_FLUSH_LIMIT 26 #define DEBOUNCE 3 #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended #define RGB_MATRIX_KEYPRESSES #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 -#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -#define DISABLE_RGB_MATRIX_BAND_SAT -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -#define DISABLE_RGB_MATRIX_SPLASH -#define DISABLE_RGB_MATRIX_MULTISPLASH -#define DISABLE_RGB_MATRIX_SOLID_SPLASH -#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH -#define DISABLE_RGB_MATRIX_DIGITAL_RAIN -#define DRIVER_ADDR_1 0b1110100 -#define DRIVER_ADDR_2 0b1110110 -#define DRIVER_COUNT 2 -#define DRIVER_1_LED_TOTAL 35 -#define DRIVER_2_LED_TOTAL 32 -#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) -#endif \ No newline at end of file + +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +// # define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// # define ENABLE_RGB_MATRIX_SPLASH +// # define ENABLE_RGB_MATRIX_MULTISPLASH +// # define ENABLE_RGB_MATRIX_SOLID_SPLASH +// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + +# define DRIVER_ADDR_1 0b1110100 +# define DRIVER_ADDR_2 0b1110110 +# define DRIVER_COUNT 2 +# define DRIVER_1_LED_TOTAL 35 +# define DRIVER_2_LED_TOTAL 32 +# define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) +#endif diff --git a/keyboards/xbows/woody/info.json b/keyboards/xbows/woody/info.json index 498267783b46..4e4e77a4baa2 100644 --- a/keyboards/xbows/woody/info.json +++ b/keyboards/xbows/woody/info.json @@ -2,8 +2,6 @@ "keyboard_name": "WOO-DY", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":6.25}, {"x":10.25, "y":4, "w":1.5}, {"x":11.75, "y":4, "w":1.25}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] diff --git a/keyboards/xbows/woody/rules.mk b/keyboards/xbows/woody/rules.mk index a1a6e78db0b6..895331abbdf9 100644 --- a/keyboards/xbows/woody/rules.mk +++ b/keyboards/xbows/woody/rules.mk @@ -3,13 +3,12 @@ MCU = atmega32u4 # Bootloader selection BOOTLOADER = atmel-dfu -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite BACKLIGHT_ENABLE = no 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 AUDIO_ENABLE = no RGB_MATRIX_ENABLE = yes # Use RGB matrix diff --git a/keyboards/xbows/woody/woody.c b/keyboards/xbows/woody/woody.c index 9821f5f65504..41601d39a98b 100644 --- a/keyboards/xbows/woody/woody.c +++ b/keyboards/xbows/woody/woody.c @@ -1,6 +1,6 @@ #include "woody.h" #ifdef RGB_MATRIX_ENABLE -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { {0, C8_8, C7_8, C6_8}, // LA17 {0, C9_8, C7_7, C6_7}, // LA16 @@ -97,15 +97,6 @@ led_config_t g_led_config = { { } }; #endif -void matrix_init_kb(void) { - matrix_init_user(); -} -void matrix_scan_kb(void) { - matrix_scan_user(); -} -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - return process_record_user(keycode, record); -} void suspend_power_down_kb(void) { rgb_matrix_set_suspend_state(true); diff --git a/keyboards/xd002/info.json b/keyboards/xd002/info.json deleted file mode 100644 index 101952ec35c5..000000000000 --- a/keyboards/xd002/info.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "keyboard_name": "xd002", - "url": "https://kprepublic.com/products/xd002-xiudi-2-custom-mechanical-keyboard-2-keys-underglow-and-switch-rgb-pcb-programmed-hot-swappable-macro-key-aluminum-case", - "maintainer": "zvecr", - "width": 2, - "height": 1, - "layouts": { - "LAYOUT": { - "key_count": 2, - "layout": [ - {"x":0, "y":0}, - {"x":1, "y":0} - ] - } - } -} diff --git a/keyboards/xd002/keymaps/multilayer_rgb/keymap.c b/keyboards/xd002/keymaps/multilayer_rgb/keymap.c deleted file mode 100644 index 01a96119e58c..000000000000 --- a/keyboards/xd002/keymaps/multilayer_rgb/keymap.c +++ /dev/null @@ -1,173 +0,0 @@ -/* Copyright 2020 elmo-space - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include QMK_KEYBOARD_H -#include "rgblite.h" - -// Defines names for use in layer keycodes and the keymap -enum layer_names { - _BASE, - _FUNC, -}; - -// set your keycodes here -#define layer1_left KC_PAUS -#define layer1_right KC_MPLY -#define layer2_left KC_MPRV -#define layer2_right KC_MNXT - - -enum custom_keycodes { - LEFT1 = SAFE_RANGE, - RIGHT1, - LEFT2, - RIGHT2 -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_BASE] = LAYOUT( - LEFT1, RIGHT1 - ), - [_FUNC] = LAYOUT( - LEFT2, RIGHT2 - ) -}; - -static bool key1_down = false; -static bool key2_down = false; -static char layer_switched = 0; // this prevents the individual keys getting triggered after a layerchange - -bool process_record_user(uint16_t keycode, keyrecord_t *record) -{ - switch (keycode) - { - case LEFT1: - if (record->event.pressed) - { - if (key2_down) - { - layer_on(1); - layer_switched = 2; - return false; - break; - } - key1_down = true; - } - else { - if (layer_switched > 0) { - --layer_switched; - key1_down = false; - } - else { - tap_code(layer1_left); - key1_down = false; - } - } - return false; - break; - case RIGHT1: - if (record->event.pressed) - { - if (key1_down) - { - layer_on(1); - layer_switched = 2; - return false; - break; - } - key2_down = true; - } - else { - if (layer_switched > 0) { - --layer_switched; - key2_down = false; - } - else { - tap_code(layer1_right); - key2_down = false; - } - } - return false; - break; - case LEFT2: - if (record->event.pressed) - { - if (key2_down) - { - layer_off(1); - layer_switched = 2; - return false; - break; - } - key1_down = true; - } - else { - if (layer_switched > 0) { - --layer_switched; - key1_down = false; - } - else { - tap_code(layer2_left); - key1_down = false; - } - } - return false; - break; - case RIGHT2: - if (record->event.pressed) - { - if (key1_down) - { - layer_off(1); - layer_switched = 2; - return false; - break; - } - key2_down = true; - } - else { - if (layer_switched > 0) { - --layer_switched; - key2_down = false; - } - else { - tap_code(layer2_right); - key2_down = false; - } - } - return false; - break; - } - return true; -}; - -// layer colors -layer_state_t layer_state_set_user(layer_state_t state) { - switch (get_highest_layer(state)) { - case _FUNC: - rgblight_setrgb_red(); - break; - default: // for any other layers, or the default layer - rgblight_setrgb_green(); - break; - } - return state; -} - -// default color -void keyboard_post_init_user(void) { - rgblight_setrgb_green(); -} diff --git a/keyboards/xd002/keymaps/multilayer_rgb/rgblite.h b/keyboards/xd002/keymaps/multilayer_rgb/rgblite.h deleted file mode 100644 index ddc61d5f4341..000000000000 --- a/keyboards/xd002/keymaps/multilayer_rgb/rgblite.h +++ /dev/null @@ -1,9 +0,0 @@ -#pragma once - -#include "ws2812.h" -#include "rgblight_list.h" - -static inline void rgblight_setrgb(uint8_t _r, uint8_t _g, uint8_t _b) { - LED_TYPE leds[RGBLED_NUM] = {{.r = _r, .g = _g, .b = _b}, {.r = _r, .g = _g, .b = _b}}; - ws2812_setleds(leds, RGBLED_NUM); -} diff --git a/keyboards/xd002/keymaps/rgb_lite/keymap.c b/keyboards/xd002/keymaps/rgb_lite/keymap.c deleted file mode 100644 index ed9185e3b527..000000000000 --- a/keyboards/xd002/keymaps/rgb_lite/keymap.c +++ /dev/null @@ -1,31 +0,0 @@ -#include QMK_KEYBOARD_H -#include "rgblite.h" - -// Defines the keycodes used by our macros in process_record_user -enum custom_keycodes { - QMKURL = SAFE_RANGE, -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( - RGB_HUI, QMKURL - ) -}; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - if (record->event.pressed) { - switch (keycode) { - case RGB_HUI: - rgblight_increase_hue(); - break; - case QMKURL: - SEND_STRING("https://qmk.fm/" SS_TAP(X_ENTER)); - break; - } - } - return true; -} - -void keyboard_post_init_user(void) { - rgblight_increase_hue(); -} diff --git a/keyboards/xd002/keymaps/rgb_lite/rgblite.h b/keyboards/xd002/keymaps/rgb_lite/rgblite.h deleted file mode 100644 index ca98484b8180..000000000000 --- a/keyboards/xd002/keymaps/rgb_lite/rgblite.h +++ /dev/null @@ -1,26 +0,0 @@ -#pragma once - -#include "ws2812.h" -#include "rgblight_list.h" - -static inline void rgblight_setrgb(uint8_t _r, uint8_t _g, uint8_t _b) { - LED_TYPE leds[RGBLED_NUM] = {{.r = _r, .g = _g, .b = _b}, {.r = _r, .g = _g, .b = _b}}; - ws2812_setleds(leds, RGBLED_NUM); -} - -static void rgblight_increase_hue(void) { - static uint8_t state = 0; - - state = (state + 1) % 3; - switch (state) { - case 1: - rgblight_setrgb_red(); - break; - case 2: - rgblight_setrgb_blue(); - break; - default: - rgblight_setrgb_green(); - break; - } -} diff --git a/keyboards/xd002/keymaps/tap_dance/config.h b/keyboards/xd002/keymaps/tap_dance/config.h deleted file mode 100644 index b86e862d30d3..000000000000 --- a/keyboards/xd002/keymaps/tap_dance/config.h +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -#define TAPPING_TERM 500 diff --git a/keyboards/xd002/readme.md b/keyboards/xd002/readme.md deleted file mode 100644 index 6358bc754e4c..000000000000 --- a/keyboards/xd002/readme.md +++ /dev/null @@ -1,49 +0,0 @@ -# xd002 - -![xd002](https://cdn.shopify.com/s/files/1/2711/4238/products/xd002_1024x1024.jpg?v=1522134411) - -2% Custom mechanical keyboard. ATtiny85 powered, with 2*WS2812 LEDs, and the micronucleus bootloader. - -**Note**: Due to limited firmware space, a _**lot**_ of features have to be disabled to get a functioning QMK based keyboard. - -* Keyboard Maintainer: [zvecr](https://github.com/zvecr) -* Hardware Supported: xd002 -* Hardware Availability: [kprepublic](https://kprepublic.com/products/xd002-xiudi-2-custom-mechanical-keyboard-2-keys-underglow-and-switch-rgb-pcb-programmed-hot-swappable-macro-key-aluminum-case) - -Make example for this keyboard (after setting up your build environment): - - make xd002:default - -See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). - -## Flashing -### Prerequisites - -```bash -git clone https://github.com/micronucleus/micronucleus.git -cd micronucleus/commandline/ -sudo make install -``` - -On Linux, you’ll need proper privileges to access the MCU. You can either use sudo when flashing firmware, or place [these files](https://github.com/micronucleus/micronucleus/blob/master/commandline/49-micronucleus.rules) in /etc/udev/rules.d/. Once added run the following: - -```bash -sudo udevadm control --reload-rules -sudo udevadm trigger -``` - -### Instructions - -**Reset Key**: Hold down key nearest to the USB socket while plugging in the keyboard. - -```bash -make xd002:default:flash - -# or directly with... -micronucleus --run -``` - -### Recovery - -* [Original Firmware](https://github.com/xiudi/Attiny85_vusb_pad_test) -* [Bootloader Repair](https://digistump.com/wiki/digispark/tutorials/proisp) diff --git a/keyboards/xd002/rules.mk b/keyboards/xd002/rules.mk deleted file mode 100644 index 595743a30336..000000000000 --- a/keyboards/xd002/rules.mk +++ /dev/null @@ -1,32 +0,0 @@ -# MCU name -MCU = attiny85 - -# Bootloader selection -BOOTLOADER = micronucleus -OPT_DEFS += -DBOOTLOADER_SIZE=1862 -PROGRAM_CMD = micronucleus --run $(BUILD_DIR)/$(TARGET).hex - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration -MOUSEKEY_ENABLE = no # Mouse keys -EXTRAKEY_ENABLE = no # 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 = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 - -# Save as much space as we can... -LTO_ENABLE = yes -GRAVE_ESC_ENABLE = no -MAGIC_ENABLE = no -SPACE_CADET_ENABLE = no diff --git a/keyboards/xd004/info.json b/keyboards/xd004/info.json deleted file mode 100644 index 6f7082a14b01..000000000000 --- a/keyboards/xd004/info.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "keyboard_name": "XD004", - "maintainer": "qmk", - "width": 4, - "height": 1, - "layouts": { - "LAYOUT_all": { - "layout": [{"label":"L", "x":0, "y":0}, {"label":"O", "x":1, "y":0}, {"label":"V", "x":2, "y":0}, {"label":"E", "x":3, "y":0}] - } - } -} diff --git a/keyboards/xd004/keymaps/default/keymap.c b/keyboards/xd004/keymaps/default/keymap.c deleted file mode 100644 index e82ce5e97365..000000000000 --- a/keyboards/xd004/keymaps/default/keymap.c +++ /dev/null @@ -1,13 +0,0 @@ -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - // 0: Base Layer - LAYOUT_all(KC_L, KC_O, KC_V, KC_E), - -}; - -// Loop -void matrix_scan_user(void){ - // Empty -}; diff --git a/keyboards/xd004/keymaps/system_and_media/readme.md b/keyboards/xd004/keymaps/system_and_media/readme.md deleted file mode 100644 index d684d463c6cd..000000000000 --- a/keyboards/xd004/keymaps/system_and_media/readme.md +++ /dev/null @@ -1,9 +0,0 @@ -# Slightly more advanced keymap for XD004 PCB - -A somehow more useful keymap, allowing one to move across virtual desktops on Windows, etc. - -It also has a 'Super Alt-F4' key for Windows that, when tapped does Alt-F4, unless two consecutive taps are less than 300ms apart, in which case the second tap becomes Enter. This allows you to close all apps doing taps, and then when the System shutdown window arrives you do a second quick tap and it will type enter, thus shutting down the computer. - -## Build - -To build the keymap, simply run `make xd004:system_and_media`. diff --git a/keyboards/xd004/readme.md b/keyboards/xd004/readme.md deleted file mode 100644 index 8f858a84111e..000000000000 --- a/keyboards/xd004/readme.md +++ /dev/null @@ -1,30 +0,0 @@ -XD004 -== - -4-keys board - -![Top View of a XD004 board](https://ae01.alicdn.com/kf/HTB1_G9IX21H3KVjSZFHq6zKppXa0/xd004-xiudi-4-Custom-Mechanical-Keyboard-4-keys-switch-leds-PCB-programmed-hot-swappable-macro-key.jpg) - -Keyboard Maintainer: QMK Community -Hardware Supported: XD004 PCB v1.0 -Hardware Availability: [KPRepublic](https://kprepublic.com/products/xd004-xiudi-4-custom-mechanical-keyboard-4-keys-switch-leds-pcb-programmed-hot-swappable-macro-key-silver-case-micro-port) - -To put this board in DFU (firmware update) mode, bridge the last two pins (#5 & 6) of the 6-pin "J2" header on the opposite edge of the board to the USB port" -``` -----+ - J2 | -[o] | -(o) | -(o) | -(o) | -(o)-+-\ (These -(o)-+-/ two) - | -----+ -``` - -To build with a default keymap (not useful at all, have a look at other keymaps): - -```make xd004/v1: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/xd004/v1/rules.mk b/keyboards/xd004/v1/rules.mk deleted file mode 100644 index e9afff93cf4f..000000000000 --- a/keyboards/xd004/v1/rules.mk +++ /dev/null @@ -1,32 +0,0 @@ -# MCU name -MCU = atmega16u2 - -# Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = atmel-dfu - -# Build Options -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration -MOUSEKEY_ENABLE = no # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -SPACE_CADET_ENABLE = no -# Saves about 5% of space: -LTO_ENABLE = yes - -#LAYOUTS = ortho_1x4 diff --git a/keyboards/xd004/xd004.c b/keyboards/xd004/xd004.c deleted file mode 100644 index 37a1dca14402..000000000000 --- a/keyboards/xd004/xd004.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "xd004.h" - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/xd60/info.json b/keyboards/xd60/info.json deleted file mode 100644 index dbe9a79880a8..000000000000 --- a/keyboards/xd60/info.json +++ /dev/null @@ -1,164 +0,0 @@ -{ - "keyboard_name": "XD60", - "maintainer": "qmk", - "width": 15, - "height": 5, - "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}, {"x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.25}, {"label":"Shift", "x":0, "y":3}, {"x":1, "y":3}, {"label":"Z", "x":2, "y":3}, {"label":"X", "x":3, "y":3}, {"label":"C", "x":4, "y":3}, {"label":"V", "x":5, "y":3}, {"label":"B", "x":6, "y":3}, {"label":"N", "x":7, "y":3}, {"label":"M", "x":8, "y":3}, {"label":"<", "x":9, "y":3}, {"label":">", "x":10, "y":3}, {"label":"?", "x":11, "y":3}, {"label":"Shift", "x":12, "y":3}, {"x":13, "y":3}, {"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}, {"label":"Win", "x":11, "y":4}, {"label":"Menu", "x":12, "y":4}, {"label":"Ctrl", "x":13, "y":4}, {"x":14, "y":4}] - }, - - "LAYOUT_60_ansi": { - "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}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"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}] - }, - - "LAYOUT_60_ansi_split_bs_rshift": { - "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}, - {"label":"BS", "x":13, "y":0, "w":1}, - {"label":"BS", "x":14, "y":0, "w":1}, - - {"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":2.25}, - {"label":"Z", "x":2.25, "y":3}, - {"label":"X", "x":3.25, "y":3}, - {"label":"C", "x":4.25, "y":3}, - {"label":"V", "x":5.25, "y":3}, - {"label":"B", "x":6.25, "y":3}, - {"label":"N", "x":7.25, "y":3}, - {"label":"M", "x":8.25, "y":3}, - {"label":"<", "x":9.25, "y":3}, - {"label":">", "x":10.25, "y":3}, - {"label":"?", "x":11.25, "y":3}, - {"label":"Shift", "x":12.25, "y":3, "w":1.75}, - {"label":"FN", "x":14, "y":3, "w":1}, - - {"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} - ] - }, - - "LAYOUT_60_iso": { - "layout": [{"label":"\u00ac", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"\"", "x":2, "y":0}, {"label":"\u00a3", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"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":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"@", "x":11.75, "y":2}, {"label":"~", "x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"label":"|", "x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"GUI", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"label":"Space", "x":3.75, "y":4, "w":6.25}, {"label":"AltGr", "x":10, "y":4, "w":1.25}, {"label":"GUI", "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}] - }, - - "LAYOUT_60_iso_split_bs_rshift": { - "layout": [ - {"label":"\u00ac", "x":0, "y":0}, - {"label":"!", "x":1, "y":0}, - {"label":"\"", "x":2, "y":0}, - {"label":"\u00a3", "x":3, "y":0}, - {"label":"$", "x":4, "y":0}, - {"label":"%", "x":5, "y":0}, - {"label":"^", "x":6, "y":0}, - {"label":"&", "x":7, "y":0}, - {"label":"*", "x":8, "y":0}, - {"label":"(", "x":9, "y":0}, - {"label":")", "x":10, "y":0}, - {"label":"_", "x":11, "y":0}, - {"label":"+", "x":12, "y":0}, - {"label":"BS", "x":13, "y":0, "w":1}, - {"label":"BS", "x":14, "y":0, "w":1}, - - {"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":"Caps Lock", "x":0, "y":2, "w":1.75}, - {"label":"A", "x":1.75, "y":2}, - {"label":"S", "x":2.75, "y":2}, - {"label":"D", "x":3.75, "y":2}, - {"label":"F", "x":4.75, "y":2}, - {"label":"G", "x":5.75, "y":2}, - {"label":"H", "x":6.75, "y":2}, - {"label":"J", "x":7.75, "y":2}, - {"label":"K", "x":8.75, "y":2}, - {"label":"L", "x":9.75, "y":2}, - {"label":":", "x":10.75, "y":2}, - {"label":"@", "x":11.75, "y":2}, - {"label":"~", "x":12.75, "y":2}, - {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, - - {"label":"Shift", "x":0, "y":3, "w":1.25}, - {"label":"|", "x":1.25, "y":3}, - {"label":"Z", "x":2.25, "y":3}, - {"label":"X", "x":3.25, "y":3}, - {"label":"C", "x":4.25, "y":3}, - {"label":"V", "x":5.25, "y":3}, - {"label":"B", "x":6.25, "y":3}, - {"label":"N", "x":7.25, "y":3}, - {"label":"M", "x":8.25, "y":3}, - {"label":"<", "x":9.25, "y":3}, - {"label":">", "x":10.25, "y":3}, - {"label":"?", "x":11.25, "y":3}, - {"label":"Shift", "x":12.25, "y":3, "w":1.75}, - {"label":"FN", "x":14, "y":3, "w":1}, - - {"label":"Ctrl", "x":0, "y":4, "w":1.25}, - {"label":"GUI", "x":1.25, "y":4, "w":1.25}, - {"label":"Alt", "x":2.5, "y":4, "w":1.25}, - {"label":"Space", "x":3.75, "y":4, "w":6.25}, - {"label":"AltGr", "x":10, "y":4, "w":1.25}, - {"label":"GUI", "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/xd60/keymaps/Jos/README.md b/keyboards/xd60/keymaps/Jos/README.md deleted file mode 100644 index b4382acfeb3d..000000000000 --- a/keyboards/xd60/keymaps/Jos/README.md +++ /dev/null @@ -1,22 +0,0 @@ -# Jos's Layout - -Custom layout with various options. Designed to be used with the Canadian Multilingual software layout. - -## Layout -This is the physical layout of my xd60, for reference. See the keymap file for actual software layout. -![Keyboard Layout (Physical appearence)](https://i.imgur.com/qzOmqyq.png "Physical Layout") - -## Features -**Caps Lock** is **Escape** and the **Window key** is a **Function** key that still acts like the **Window** key in conjuction with `w`, `s`, `d`, `l`, `t`, `e`, `h`, and `SPACE`. - -There are a few `#define` lines at the beginning of the keymap file that enable the following options if not commented: -- `ISOLIKE_ALT_ENTER`: `RALT` + `ENT` is the same as `RALT`+`BSLS`. For logical placement of `{` and `}` (the former being `RALT`+`BSLS`) with ANSI enter on a ISO-based layout. -- `TWO_SFT_CAPS`: Both shifts together → Caps Lock. -- `APP_IS_RALT_RCTRL`: Menu would be between `RCTRL` and `RALT`, so now `RALT` + `RCTRL` → `APP`. -- `HELD_ESC_IS_SHIFT`: Holding `ESC` → `SHIFT`. It always register shift when pressing `ESC`. Useful for VIM. -- `BSPC_BLOCKS_DEL`: If `BSPC` is held, we disable `DEL`. To avoid acidental presses of `DEL` with split backspace key. -- `ALT_MINSEQL_IS_ALT_78`: Pressing `ALT+MINS/EQL` will act like `ALT+7/8`. Will yield `{}` instead of `½¬` in Canadian Multilingual Layout. Diminished finger stretching. - - -# Build -To build, simply run `make xd60:Jos` diff --git a/keyboards/xd60/keymaps/birkir/keymap.c b/keyboards/xd60/keymaps/birkir/keymap.c deleted file mode 100644 index 56044505489e..000000000000 --- a/keyboards/xd60/keymaps/birkir/keymap.c +++ /dev/null @@ -1,66 +0,0 @@ -#include QMK_KEYBOARD_H -#include "action_layer.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - // 0: Base Layer - 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_BSPC, KC_GRV, \ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \ - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT, \ - KC_LSFT, KC_SLSH, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_NO, KC_RSFT, KC_UP, TG(2), \ - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT - ), - - // 1: Function Layer - LAYOUT_all( - KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, BL_DEC, BL_INC, KC_F13, KC_F14, \ - KC_NO, KC_WH_U, KC_UP, KC_WH_D, KC_BSPC,KC_HOME,KC_CALC,KC_NO, KC_INS, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_DEL, \ - KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT,KC_DEL, KC_END, KC_PGDN,KC_NO, KC_NO, KC_NO, KC_HOME, KC_PGUP, KC_NO, KC_ENT, \ - KC_LSFT, KC_NO, KC_NO, KC_APP, BL_STEP,KC_NO, KC_NO, KC_VOLD,KC_VOLU,KC_MUTE, KC_END, KC_PGDN, KC_RSFT, KC_PGUP, TG(2), \ - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, MO(1), KC_HOME, KC_PGDOWN,KC_END - ), - - // 2: Cool Layer - LAYOUT_all( - RESET, BL_DEC, BL_INC, BL_ON, BL_OFF, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, RGB_MODE_PLAIN, KC_TRNS, \ - KC_NO, KC_WH_U, KC_UP, KC_WH_D, KC_BSPC,KC_HOME,KC_CALC,KC_NO, KC_INS, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_DEL, \ - KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT,KC_DEL, KC_END, KC_PGDN,KC_NO, KC_NO, KC_NO, KC_HOME, KC_PGUP, KC_NO, KC_ENT, \ - KC_LSFT, KC_NO, KC_NO, KC_APP, BL_STEP,KC_NO, KC_NO, KC_VOLD,KC_VOLU,KC_MUTE, KC_END, KC_PGDN, KC_RSFT, KC_PGUP, TG(2), \ - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, MO(1), KC_HOME, KC_PGDOWN,KC_END - ) -}; - -bool edit = false; -uint32_t mode; -uint16_t hue; -uint8_t sat; -uint8_t val; - -uint32_t layer_state_set_user(uint32_t state) { - - if (state == 0 && edit == true) { - mode = rgblight_get_mode(); - hue = rgblight_get_hue(); - sat = rgblight_get_sat(); - val = rgblight_get_val(); - edit = false; - } - - switch (biton32(state)) { - case 1: - rgblight_mode(1); - rgblight_setrgb(0xD3, 0x7F, 0xED); - break; - case 2: - rgblight_mode(1); - rgblight_setrgb(0xFF, 0x00, 0x00); - edit = true; - break; - default: - rgblight_mode(mode); - rgblight_sethsv(hue, sat, val); - break; - } - return state; -} diff --git a/keyboards/xd60/keymaps/birkir/readme.md b/keyboards/xd60/keymaps/birkir/readme.md deleted file mode 100644 index 670b6bb31424..000000000000 --- a/keyboards/xd60/keymaps/birkir/readme.md +++ /dev/null @@ -1,45 +0,0 @@ -# Birkir's Keymap for XIUDI's 60% XD60 PCB - -Custom layout with some custom layers. Mac friendly. - -## Layout -![Birkir's Layout](https://i.imgur.com/I69AYG1.png) - -### Layer 0 -Base layer as shown on layout above - -### Layer 1 -Active while pressing and holding `MENU` - -RGB is purple while active - -- `ESC` is `~` - -### Layer 2 -Toggled on and off with `FN` - -RGB is red while active - -RGB settings are persisted for layer 0 when done. - - - `1` Backlight DEC - - `2` Backlight INC - - `3` Backlight OFF - - `4` Backlight ON - - `5` RGB Toggle - - `6` RGB Mode - - `7` RGB Hue DEC (-) - - `8` RGB Hue INC (+) - - `9` RGB Saturation DEC (-) - - `0` RGB Saturation INC (+) - - `-/_` RGB Brightness DEC (-) - - `+/=` RGB Brightness INC (+) - - `BACKSPACE` RGB Mode set to PLAIN - -## TODO - -- Mac shortcuts on Layer 1 -- More dynamic keyboard configuration on Layer 2 - -## Build -To build the default keymap, simply run `make xd60:birkir`. diff --git a/keyboards/xd60/keymaps/default/keymap.c b/keyboards/xd60/keymaps/default/keymap.c deleted file mode 100644 index 9233f99ba9fb..000000000000 --- a/keyboards/xd60/keymaps/default/keymap.c +++ /dev/null @@ -1,26 +0,0 @@ -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - // 0: Base Layer - 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_BSPC, KC_GRV, \ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \ - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT, \ - KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, \ - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT), - - // 1: Function Layer - LAYOUT_all( - RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14, \ - KC_NO, KC_WH_U, KC_UP, KC_WH_D, KC_BSPC,KC_HOME,KC_CALC,KC_NO, KC_INS, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_DEL, \ - KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT,KC_DEL, KC_END, KC_PGDN,KC_NO, KC_NO, KC_NO, KC_HOME, KC_PGUP, KC_NO, KC_ENT, \ - KC_LSFT, KC_NO, KC_NO, KC_APP, BL_STEP,KC_NO, KC_NO, KC_VOLD,KC_VOLU,KC_MUTE, KC_END, KC_PGDN, KC_RSFT, KC_PGUP, KC_INS, \ - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, MO(1), KC_HOME, KC_PGDOWN,KC_END), - -}; - -// Loop -void matrix_scan_user(void) { - // Empty -}; diff --git a/keyboards/xd60/keymaps/default/readme.md b/keyboards/xd60/keymaps/default/readme.md deleted file mode 100644 index 7d6bc75365ce..000000000000 --- a/keyboards/xd60/keymaps/default/readme.md +++ /dev/null @@ -1,13 +0,0 @@ -# Default Keymap for XIUDI's 60% XD60 PCB - -![Default Keymap for XD60](https://img.alicdn.com/imgextra/i1/1713761720/TB2K0gTalPxQeBjy1XcXXXHzVXa_!!1713761720.png) - -## Additional Notes -Default Keymap for XD60 as indicated on the original sale page. - -## Build - -To build the default keymap, simply run: - - make xd60/rev2:default # XD60 rev2 - make xd60/rev3:default # XD60 rev3 diff --git a/keyboards/xd60/keymaps/edulpn/readme.md b/keyboards/xd60/keymaps/edulpn/readme.md deleted file mode 100644 index 14f7da063d14..000000000000 --- a/keyboards/xd60/keymaps/edulpn/readme.md +++ /dev/null @@ -1,9 +0,0 @@ -# Edulpn Keymap for the XD60 PCB - -## Additional Notes -60% Keymap for XD60 with GH60 ANSI layout (based on Supercoffe's keymap) + customized Fn layer. - -![Edulpn Keymap for the XD60 PCB](https://i.imgur.com/PoL5qcr.png) - -## Build -To build the default keymap, simply run `make xd60:edulpn`. diff --git a/keyboards/xd60/keymaps/edulpn64/readme.md b/keyboards/xd60/keymaps/edulpn64/readme.md deleted file mode 100644 index a3208564a0db..000000000000 --- a/keyboards/xd60/keymaps/edulpn64/readme.md +++ /dev/null @@ -1,9 +0,0 @@ -# Edulpn64 Keymap for XIUDI's 60% XD60 PCB - -![Edulpn64 Keymap for XD60](https://dl2.pushbulletusercontent.com/K6bdlBlP5ix7jdMAr8QKes4johmpUfPI/image.png) - -## Additional Notes -This keymap uses the Default XD60 base layer, but follows the GK64 function layer (one of my XD60 boards use GK64 keycaps). - -## Build -To build the default keymap, simply run `make xd60:edulpn64`. diff --git a/keyboards/xd60/keymaps/iso/keymap.c b/keyboards/xd60/keymaps/iso/keymap.c deleted file mode 100644 index 0f4694ca6319..000000000000 --- a/keyboards/xd60/keymaps/iso/keymap.c +++ /dev/null @@ -1,33 +0,0 @@ -#include QMK_KEYBOARD_H - -enum layer_names { - _BL, - _FL, -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - //,: Base Layer - [_BL] = LAYOUT_60_iso( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, - KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL - ), - - //,: Function Layer - [_FL] = LAYOUT_60_iso( - RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, - XXXXXXX, KC_VOLD, KC_MUTE, KC_VOLU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_TOGG, BL_DEC, BL_INC, - XXXXXXX, KC_MPLY, KC_MSTP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_ENT, - KC_LSFT, RGB_TOG, RGB_MOD, KC_CUT, KC_COPY, KC_PSTE, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_RSFT, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL - ) - -}; - -// Loop -void matrix_scan_user(void) { - // Empty -}; diff --git a/keyboards/xd60/keymaps/iso/readme.md b/keyboards/xd60/keymaps/iso/readme.md deleted file mode 100644 index 84374fa1858d..000000000000 --- a/keyboards/xd60/keymaps/iso/readme.md +++ /dev/null @@ -1,20 +0,0 @@ -# iso Keymap for XIUDI's 60% XD60 PCB - -iso Keymap for XD60. - -## Keymap - -### Base Layer - -![Layer 0](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/xd60/keymaps/iso/layer0.png) - -### Function Layer - -![Layer 1](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/xd60/keymaps/iso/layer1.png) - -## Build - -To build the default keymap, simply run: - - make xd60/rev2:iso # XD60 rev2 - make xd60/rev3:iso # XD60 rev3 diff --git a/keyboards/xd60/keymaps/kmontag42/readme.md b/keyboards/xd60/keymaps/kmontag42/readme.md deleted file mode 100644 index a23f6a8bec79..000000000000 --- a/keyboards/xd60/keymaps/kmontag42/readme.md +++ /dev/null @@ -1,18 +0,0 @@ -# KMontag42's XD60/XD64 Keymap and Layout - -[![Built with Spacemacs](https://cdn.rawgit.com/syl20bnr/spacemacs/442d025779da2f62fc86c2082703697714db6514/assets/spacemacs-badge.svg)](http://spacemacs.org) - -## Additional Notes -This layout is WIP for me as I use my shiny new keyboard more and more. I will work to keep this updated. - -## Notable features -* Arrows only on the bottom row -** i prefer vim style movement, so this works well for me -* Layer based RGB lighting -** i use rgb lights to determine what layer is currently active -* Maximum key usage -** unless someone tells me otherwise, I believe this is the maximum number of keys the board can support without PCB modding -* I use emacs, which could account for some of the oddities in my layout and macros - -## Build -To build the default keymap, simply run `make xd60:kmontag42`. diff --git a/keyboards/xd60/keymaps/krusli/readme.md b/keyboards/xd60/keymaps/krusli/readme.md deleted file mode 100644 index 34f46e026ca2..000000000000 --- a/keyboards/xd60/keymaps/krusli/readme.md +++ /dev/null @@ -1,7 +0,0 @@ -# krusli's Keymap for XIUDI's 60% XD60 PCB - -## Additional Notes -Keymap for the XD60 (ANSI) with 2.25u left shift, split right shift. HHKB-like function layer. - -## Build -To build this keymap, simply run `make xd60:krusli` on the top-level directory for QMK. diff --git a/keyboards/xd60/keymaps/melka/readme.md b/keyboards/xd60/keymaps/melka/readme.md deleted file mode 100644 index b9d9065da787..000000000000 --- a/keyboards/xd60/keymaps/melka/readme.md +++ /dev/null @@ -1,21 +0,0 @@ -# melka's keymap for XIUDI's 60% XD60 rev3 PCB - -## Additional Notes -Custom Keymap for XD60 rev3. French Mac layout. - -## Security Note -This keymap includes macros for entering passwords. - -While it is possible to use macros to send passwords, credit card numbers, -and other sensitive information it is a supremely bad idea to do so. Anyone who gets a hold -of your keyboard will be able to access that information by opening a text editor. - -Use this functionnality at your own risk. - -To define your password, rename passwd_template.h file to passwd.h and edit the defines inside. - -## Build - -To build this keymap, simply run: - - make xd60/rev3:melka # XD60 rev3 diff --git a/keyboards/xd60/keymaps/petesmom/README.md b/keyboards/xd60/keymaps/petesmom/README.md deleted file mode 100644 index dceb402d722b..000000000000 --- a/keyboards/xd60/keymaps/petesmom/README.md +++ /dev/null @@ -1,26 +0,0 @@ -# pete's mom Layout - -Customized xd60 keymap based on yuuki's but a step sideways with Mac support. For Pete on his 40th - -## Programming Instructions - -Change the layout in `keymap.c` then run `make xd60-petesmom`. The compiled file will be located in `.build/xd60_petesmom.hex` relative to the project root. To flash it onto your keyboard, use whatever program works on your OS. I personally use `dfu-programmer`, and run: - -* `sudo dfu-programmer atmega32u4 erase` -* `sudo dfu-programmer atmega32u4 flash .build/xd60-petesmom.hex` -* `sudo dfu-programmer atmega32u4 start` - -## Layout - -See `keymap.c` for the details, but here are the important features: - -| Key | Function | -| -------------------------- | ---------------------------------- | -| ESC | ESC when pressed alone but acts as ~ when pressed with Shift or LGUI down | -| FN + ESC | Grave | -| Right Shift | When tapped generates / | -| FN + HJKL | Arrow Keys | -| FN + C | ^ | -| FN + V | & | -| FN + , . RShift | Mac Vol - + Mute | -| FN + P [ ] \ | Mac Play/Pause, Prev Track, Next Track, Stop | diff --git a/keyboards/xd60/keymaps/semicolonsnet/readme.md b/keyboards/xd60/keymaps/semicolonsnet/readme.md deleted file mode 100644 index b8a3ac4fff4f..000000000000 --- a/keyboards/xd60/keymaps/semicolonsnet/readme.md +++ /dev/null @@ -1,13 +0,0 @@ -# Semicolonsnet Keymap for XIUDI's 60% XD60 PCB - -![Semicolonsnet Keymap for XD60](https://i.imgur.com/VZygOqK.png) - -## Additional Notes -Custom Keymap for XD60 - uses a META key and lots of shortcut keys that are later software controlled - -## Build - -To build the default keymap, simply run: - - make xd60/rev2:default # XD60 rev2 - make xd60/rev3:default # XD60 rev3 \ No newline at end of file diff --git a/keyboards/xd60/keymaps/shura30/keymap.c b/keyboards/xd60/keymaps/shura30/keymap.c deleted file mode 100755 index 61ce36310555..000000000000 --- a/keyboards/xd60/keymaps/shura30/keymap.c +++ /dev/null @@ -1,78 +0,0 @@ -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_all( - 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_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_NO, - LT(1,KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, - KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_RSFT, KC_PSCR, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_APP, KC_NO, TT(1), KC_RCTL), - - [1] = LAYOUT_all( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_DEL, - KC_TAB, KC_INS, KC_DEL, KC_UP, KC_PGUP, KC_PGDN, KC_NO, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, KC_NO, KC_NO, KC_NO, KC_NO, - KC_TRNS, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_NO, KC_NO, KC_NO, KC_ENT, - KC_LSFT, KC_PSCR, KC_NO, KC_HOME, KC_END, KC_NO, KC_NO, KC_NO, KC_MS_BTN3, KC_NO, KC_NO, KC_NO, KC_NO, KC_RSFT, MO(2), - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_APP, KC_NO, KC_TRNS, KC_RCTL), - - [2] = LAYOUT_all( - 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, RESET, - KC_NO, BL_TOGG, BL_STEP, BL_ON, BL_OFF, BL_INC, BL_DEC, BL_BRTG, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_NO, RGB_TOG, RGB_MOD, RGB_RMOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, KC_NO, KC_NO, - KC_NO, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, RGB_M_K, RGB_M_X, RGB_M_G, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO) -}; - -const rgblight_segment_t PROGMEM my_0_layer[] = RGBLIGHT_LAYER_SEGMENTS( - {0, 6, HSV_CYAN}, - {6, 6, HSV_BLUE} -); - -const rgblight_segment_t PROGMEM my_1_layer[] = RGBLIGHT_LAYER_SEGMENTS( - {1, 4, HSV_GREEN}, - {7, 4, HSV_GREEN} -); -const rgblight_segment_t PROGMEM my_2_layer[] = RGBLIGHT_LAYER_SEGMENTS( - {1, 4, HSV_PURPLE}, - {7, 4, HSV_PURPLE} -); - -const rgblight_segment_t PROGMEM my_caps_layer[] = RGBLIGHT_LAYER_SEGMENTS( - {0, 1, HSV_RED}, - {5, 1, HSV_RED}, - {6, 1, HSV_RED}, - {11, 1, HSV_RED} -); - -// Now define the array of layers. Later layers take precedence -const rgblight_segment_t* const PROGMEM my_layers[] = RGBLIGHT_LAYERS_LIST( - my_0_layer, - my_1_layer, - my_2_layer, - my_caps_layer -); - -void keyboard_post_init_user(void) { - // Enable the LED layers - rgblight_layers = my_layers; - layer_state_set_user(layer_state); -}; - -layer_state_t layer_state_set_user(layer_state_t state) { - rgblight_set_layer_state(0, layer_state_cmp(state, 0)); - rgblight_set_layer_state(1, layer_state_cmp(state, 1)); - rgblight_set_layer_state(2, layer_state_cmp(state, 2)); - return state; -}; - - bool led_update_user(led_t led_state) { - rgblight_set_layer_state(3, led_state.caps_lock); - return true; -}; - -/* // EEPROM Reset Function -void eeconfig_init_user(void) { - backlight_enable(); // Enable backlight by default - rgblight_enable(); // Enable RGB by default - rgblight_sethsv(HSV_BLUE); // Set it to orange by default -}; */ diff --git a/keyboards/xd60/keymaps/shura30/readme.md b/keyboards/xd60/keymaps/shura30/readme.md deleted file mode 100755 index 8e58ad3d9810..000000000000 --- a/keyboards/xd60/keymaps/shura30/readme.md +++ /dev/null @@ -1,33 +0,0 @@ -# shura30's keymap for XIUDI's 60% XD60 PCB rev3 - -3 layers in ISO: - -- 0 for ISO querty with split backspace and split right shift -- 1 for arrows and mouse -- 2 for backlight - - -![Keyboard Layout (Physical appearence)](https://i.imgur.com/Zgc4Fv6.jpg "physical layout") - - -## Additional Notes - -RGB lighting enabled and goes to sleep with the host, each layer has its own color including capslock layer: - -- 0 = cyan/blue -- caps = red -- 1 = green -- 2 = purple - -tapping toggle has been defined to 3 in the separate config.h - -via has been enabled, waiting for official support on their end - -## Build - -To build the keymap, simply run: - - make xd60/rev3:shura30 # XD60 rev3 - - -![Keyboard Layout (Physical appearence)](https://i.imgur.com/CSRPjbX.png "physical layout") diff --git a/keyboards/xd60/keymaps/styr/readme.md b/keyboards/xd60/keymaps/styr/readme.md deleted file mode 100644 index 8d9edf7c48ce..000000000000 --- a/keyboards/xd60/keymaps/styr/readme.md +++ /dev/null @@ -1,7 +0,0 @@ -# Keyboard Layout by Styr - -## Additional Notes -Default Keymap for XD60 as indicated on the original sale page. - -## Build -To build the default keymap, simply run `make xd60/rev3:styr`. diff --git a/keyboards/xd60/keymaps/supercoffee/readme.md b/keyboards/xd60/keymaps/supercoffee/readme.md deleted file mode 100644 index ccfdca8b255a..000000000000 --- a/keyboards/xd60/keymaps/supercoffee/readme.md +++ /dev/null @@ -1,9 +0,0 @@ -# Supercoffee Keymap for DeskCandy 60% XD60 PCB - -![Supercoffee Keymap for XD60](https://i.imgur.com/SPg4wXw.jpg) - -## Additional Notes -60% Keymap for XD60 with GH60 ANSI layout. Arrow keys mapped to WASD in function layer. - -## Build -To build the default keymap, simply run `make xd60:supercoffee`. diff --git a/keyboards/xd60/keymaps/yuuki/README.md b/keyboards/xd60/keymaps/yuuki/README.md deleted file mode 100644 index ebb2f8c1c98c..000000000000 --- a/keyboards/xd60/keymaps/yuuki/README.md +++ /dev/null @@ -1,31 +0,0 @@ -# yuuki's Layout - -Customized xd60 keymap with inspirations from HHKB and the layout I used on my Vortex Core (a 40% keyboard). - -## Programming Instructions - -Change the layout in `keymap.c` then run `make xd60:yuuki`. The compiled file will be located in `.build/xd60_yuuki.hex` relative to the project root. To flash it onto your keyboard, use whatever program works on your OS. I personally use `dfu-programmer`, and run: - -* reset keyboard by pressing the reset button on the back of the PCB -* `sudo dfu-programmer atmega32u4 erase` -* `sudo dfu-programmer atmega32u4 flash .build/xd60_yuuki.hex` -* `sudo dfu-programmer atmega32u4 start` - -## Layout - -![Keyboard Layout](https://github.com/cideM/cidem.github.io/blob/master/keyboard-layout.png "Layout") - -Upper row is default layer, bottom row is function layer. I Didn't include the symbols, such as @,# or $, as their placement is just as you'd expect it. - -## Summary of Changes - -| Key | Function | -| -------------------------- | ---------------------------------- | -| Capslock | Forward Slash when tapped and Left Control when held | -| Left Control | Temporarily activate function layer | -| FN + ESC | Grave | -| Space Cadet Shift | Left Shift tapped writes ( and Right Shift tapped writes ) | -| FN + HJKL | Arrow Keys | -| Rightmost key in second row from bottom | Temporarily activate function layer | -| FN + C | ^ | -| FN + V | & (both for convenience as I use these keys a lot with VIM navigation and I find them hard reach) | diff --git a/keyboards/xd60/readme.md b/keyboards/xd60/readme.md deleted file mode 100644 index f4926d01a55b..000000000000 --- a/keyboards/xd60/readme.md +++ /dev/null @@ -1,17 +0,0 @@ -# XD60 - -Compact 60% with arrows. - -![Top View of a pair of XD60 Keyboard](https://i.imgur.com/3Jq2743.jpg) - -* Keyboard Maintainer: QMK Community -* Hardware Supported: XD60 PCB rev2 & rev3 -* Hardware Availability: [Drop.com](https://www.drop.com/buy/xd60-xd64-custom-mechanical-keyboard-kit?mode=guest_open), [KPRepublic on AliExpress](https://www.aliexpress.com/item/32814945677.html) -* Schematic Availability: Public Domain [on EasyEDA](https://easyeda.com/langzisanshao/xd60) - -Make example for this keyboard (after setting up your build environment): - - make xd60/rev2:default # rev2 - make xd60/rev3:default # rev3 - -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/xd60/rev2/rules.mk b/keyboards/xd60/rev2/rules.mk deleted file mode 100644 index a06ac2e2c704..000000000000 --- a/keyboards/xd60/rev2/rules.mk +++ /dev/null @@ -1,29 +0,0 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = atmel-dfu - -# Build Options -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - -LAYOUTS = 60_ansi 60_ansi_split_bs_rshift 60_iso 60_iso_split_bs_rshift diff --git a/keyboards/xd60/rev3/rules.mk b/keyboards/xd60/rev3/rules.mk deleted file mode 100644 index a06ac2e2c704..000000000000 --- a/keyboards/xd60/rev3/rules.mk +++ /dev/null @@ -1,29 +0,0 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = atmel-dfu - -# Build Options -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - -LAYOUTS = 60_ansi 60_ansi_split_bs_rshift 60_iso 60_iso_split_bs_rshift diff --git a/keyboards/xd68/info.json b/keyboards/xd68/info.json deleted file mode 100644 index a2ee19d7db2b..000000000000 --- a/keyboards/xd68/info.json +++ /dev/null @@ -1,229 +0,0 @@ -{ - "keyboard_name": "xd68", - "url": "", - "maintainer": "qmk", - "width": 16, - "height": 5, - "layouts": { - "LAYOUT_65_ansi": { - "key_count": 68, - "layout": [ - {"label":"Esc", "x":0, "y":0}, - {"label":"1", "x":1, "y":0}, - {"label":"2", "x":2, "y":0}, - {"label":"3", "x":3, "y":0}, - {"label":"4", "x":4, "y":0}, - {"label":"5", "x":5, "y":0}, - {"label":"6", "x":6, "y":0}, - {"label":"7", "x":7, "y":0}, - {"label":"8", "x":8, "y":0}, - {"label":"9", "x":9, "y":0}, - {"label":"0", "x":10, "y":0}, - {"label":"-", "x":11, "y":0}, - {"label":"=", "x":12, "y":0}, - {"label":"Backspace", "x":13, "y":0, "w":2}, - {"label":"Home", "x":15, "y":0}, - {"label":"Tab", "x":0, "y":1, "w":1.5}, - {"label":"Q", "x":1.5, "y":1}, - {"label":"W", "x":2.5, "y":1}, - {"label":"E", "x":3.5, "y":1}, - {"label":"R", "x":4.5, "y":1}, - {"label":"T", "x":5.5, "y":1}, - {"label":"Y", "x":6.5, "y":1}, - {"label":"U", "x":7.5, "y":1}, - {"label":"I", "x":8.5, "y":1}, - {"label":"O", "x":9.5, "y":1}, - {"label":"P", "x":10.5, "y":1}, - {"label":"[", "x":11.5, "y":1}, - {"label":"]", "x":12.5, "y":1}, - {"label":"\\", "x":13.5, "y":1, "w":1.5}, - {"label":"Page Up", "x":15, "y":1}, - {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, - {"label":"A", "x":1.75, "y":2}, - {"label":"S", "x":2.75, "y":2}, - {"label":"D", "x":3.75, "y":2}, - {"label":"F", "x":4.75, "y":2}, - {"label":"G", "x":5.75, "y":2}, - {"label":"H", "x":6.75, "y":2}, - {"label":"J", "x":7.75, "y":2}, - {"label":"K", "x":8.75, "y":2}, - {"label":"L", "x":9.75, "y":2}, - {"label":";", "x":10.75, "y":2}, - {"label":"'", "x":11.75, "y":2}, - {"label":"Enter", "x":12.75, "y":2, "w":2.25}, - {"label":"Page Down", "x":15, "y":2}, - {"label":"Shift", "x":0, "y":3, "w":2.25}, - {"label":"Z", "x":2.25, "y":3}, - {"label":"X", "x":3.25, "y":3}, - {"label":"C", "x":4.25, "y":3}, - {"label":"V", "x":5.25, "y":3}, - {"label":"B", "x":6.25, "y":3}, - {"label":"N", "x":7.25, "y":3}, - {"label":"M", "x":8.25, "y":3}, - {"label":",", "x":9.25, "y":3}, - {"label":".", "x":10.25, "y":3}, - {"label":"/", "x":11.25, "y":3}, - {"label":"Shift", "x":12.25, "y":3, "w":1.75}, - {"label":"Up", "x":14, "y":3}, - {"label":"End", "x":15, "y":3}, - {"label":"Ctrl", "x":0, "y":4, "w":1.25}, - {"label":"GUI", "x":1.25, "y":4, "w":1.25}, - {"label":"Alt", "x":2.5, "y":4, "w":1.25}, - {"label":"Space", "x":3.75, "y":4, "w":6.25}, - {"label":"Menu", "x":10, "y":4}, - {"label":"Ctrl", "x":11, "y":4}, - {"label":"Fn", "x":12, "y":4}, - {"label":"Left", "x":13, "y":4}, - {"label":"Down", "x":14, "y":4}, - {"label":"Right", "x":15, "y":4} - ] - }, - "LAYOUT_65_ansi_split_bs": { - "layout": [ - {"label":"Esc", "x":0, "y":0}, - {"label":"1", "x":1, "y":0}, - {"label":"2", "x":2, "y":0}, - {"label":"3", "x":3, "y":0}, - {"label":"4", "x":4, "y":0}, - {"label":"5", "x":5, "y":0}, - {"label":"6", "x":6, "y":0}, - {"label":"7", "x":7, "y":0}, - {"label":"8", "x":8, "y":0}, - {"label":"9", "x":9, "y":0}, - {"label":"0", "x":10, "y":0}, - {"label":"-", "x":11, "y":0}, - {"label":"=", "x":12, "y":0}, - {"label":"Grave.", "x":13, "y":0}, - {"label":"Backspace", "x":14, "y":0}, - {"label":"Home", "x":15, "y":0}, - {"label":"Tab", "x":0, "y":1, "w":1.5}, - {"label":"Q", "x":1.5, "y":1}, - {"label":"W", "x":2.5, "y":1}, - {"label":"E", "x":3.5, "y":1}, - {"label":"R", "x":4.5, "y":1}, - {"label":"T", "x":5.5, "y":1}, - {"label":"Y", "x":6.5, "y":1}, - {"label":"U", "x":7.5, "y":1}, - {"label":"I", "x":8.5, "y":1}, - {"label":"O", "x":9.5, "y":1}, - {"label":"P", "x":10.5, "y":1}, - {"label":"[", "x":11.5, "y":1}, - {"label":"]", "x":12.5, "y":1}, - {"label":"\\", "x":13.5, "y":1, "w":1.5}, - {"label":"Page Up", "x":15, "y":1}, - {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, - {"label":"A", "x":1.75, "y":2}, - {"label":"S", "x":2.75, "y":2}, - {"label":"D", "x":3.75, "y":2}, - {"label":"F", "x":4.75, "y":2}, - {"label":"G", "x":5.75, "y":2}, - {"label":"H", "x":6.75, "y":2}, - {"label":"J", "x":7.75, "y":2}, - {"label":"K", "x":8.75, "y":2}, - {"label":"L", "x":9.75, "y":2}, - {"label":";", "x":10.75, "y":2}, - {"label":"'", "x":11.75, "y":2}, - {"label":"Enter", "x":12.75, "y":2, "w":2.25}, - {"label":"Page Down", "x":15, "y":2}, - {"label":"Shift", "x":0, "y":3, "w":2.25}, - {"label":"Z", "x":2.25, "y":3}, - {"label":"X", "x":3.25, "y":3}, - {"label":"C", "x":4.25, "y":3}, - {"label":"V", "x":5.25, "y":3}, - {"label":"B", "x":6.25, "y":3}, - {"label":"N", "x":7.25, "y":3}, - {"label":"M", "x":8.25, "y":3}, - {"label":",", "x":9.25, "y":3}, - {"label":".", "x":10.25, "y":3}, - {"label":"/", "x":11.25, "y":3}, - {"label":"Shift", "x":12.25, "y":3, "w":1.75}, - {"label":"Up", "x":14, "y":3}, - {"label":"End", "x":15, "y":3}, - {"label":"Ctrl", "x":0, "y":4, "w":1.25}, - {"label":"GUI", "x":1.25, "y":4, "w":1.25}, - {"label":"Alt", "x":2.5, "y":4, "w":1.25}, - {"label":"Space", "x":3.75, "y":4, "w":6.25}, - {"label":"Menu", "x":10, "y":4}, - {"label":"Ctrl", "x":11, "y":4}, - {"label":"Fn", "x":12, "y":4}, - {"label":"Left", "x":13, "y":4}, - {"label":"Down", "x":14, "y":4}, - {"label":"Right", "x":15, "y":4} - ] - }, - "LAYOUT_65_iso": { - "key_count": 69, - "layout": [ - {"label":"Esc", "x":0, "y":0}, - {"label":"1", "x":1, "y":0}, - {"label":"2", "x":2, "y":0}, - {"label":"3", "x":3, "y":0}, - {"label":"4", "x":4, "y":0}, - {"label":"5", "x":5, "y":0}, - {"label":"6", "x":6, "y":0}, - {"label":"7", "x":7, "y":0}, - {"label":"8", "x":8, "y":0}, - {"label":"9", "x":9, "y":0}, - {"label":"0", "x":10, "y":0}, - {"label":"-", "x":11, "y":0}, - {"label":"=", "x":12, "y":0}, - {"label":"Backspace", "x":13, "y":0, "w":2}, - {"label":"Home", "x":15, "y":0}, - {"label":"Tab", "x":0, "y":1, "w":1.5}, - {"label":"Q", "x":1.5, "y":1}, - {"label":"W", "x":2.5, "y":1}, - {"label":"E", "x":3.5, "y":1}, - {"label":"R", "x":4.5, "y":1}, - {"label":"T", "x":5.5, "y":1}, - {"label":"Y", "x":6.5, "y":1}, - {"label":"U", "x":7.5, "y":1}, - {"label":"I", "x":8.5, "y":1}, - {"label":"O", "x":9.5, "y":1}, - {"label":"P", "x":10.5, "y":1}, - {"label":"[", "x":11.5, "y":1}, - {"label":"]", "x":12.5, "y":1}, - {"label":"PgUp", "x":15, "y":1}, - {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, - {"label":"A", "x":1.75, "y":2}, - {"label":"S", "x":2.75, "y":2}, - {"label":"D", "x":3.75, "y":2}, - {"label":"F", "x":4.75, "y":2}, - {"label":"G", "x":5.75, "y":2}, - {"label":"H", "x":6.75, "y":2}, - {"label":"J", "x":7.75, "y":2}, - {"label":"K", "x":8.75, "y":2}, - {"label":"L", "x":9.75, "y":2}, - {"label":";", "x":10.75, "y":2}, - {"label":"'", "x":11.75, "y":2}, - {"label":"#", "x":12.75, "y":2}, - {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, - {"label":"PgDn", "x":15, "y":2}, - {"label":"Shift", "x":0, "y":3, "w":1.25}, - {"label":"\\", "x":1.25, "y":3}, - {"label":"Z", "x":2.25, "y":3}, - {"label":"X", "x":3.25, "y":3}, - {"label":"C", "x":4.25, "y":3}, - {"label":"V", "x":5.25, "y":3}, - {"label":"B", "x":6.25, "y":3}, - {"label":"N", "x":7.25, "y":3}, - {"label":"M", "x":8.25, "y":3}, - {"label":",", "x":9.25, "y":3}, - {"label":".", "x":10.25, "y":3}, - {"label":"/", "x":11.25, "y":3}, - {"label":"Shift", "x":12.25, "y":3, "w":1.75}, - {"label":"Up", "x":14, "y":3}, - {"label":"End", "x":15, "y":3}, - {"label":"Ctrl", "x":0, "y":4, "w":1.25}, - {"label":"GUI", "x":1.25, "y":4, "w":1.25}, - {"label":"Alt", "x":2.5, "y":4, "w":1.25}, - {"label":"Space", "x":3.75, "y":4, "w":6.25}, - {"label":"Menu", "x":10, "y":4}, - {"label":"Ctrl", "x":11, "y":4}, - {"label":"Fn", "x":12, "y":4}, - {"label":"Left", "x":13, "y":4}, - {"label":"Down", "x":14, "y":4}, - {"label":"Right", "x":15, "y":4} - ] - } - } -} diff --git a/keyboards/xd68/keymaps/default/readme.md b/keyboards/xd68/keymaps/default/readme.md deleted file mode 100644 index f26e1bd63f7b..000000000000 --- a/keyboards/xd68/keymaps/default/readme.md +++ /dev/null @@ -1,5 +0,0 @@ -# XD68 layout for Default ANSI - -``` -make xd68:default -``` diff --git a/keyboards/xd68/keymaps/default_iso/readme.md b/keyboards/xd68/keymaps/default_iso/readme.md deleted file mode 100644 index d61877e77eb3..000000000000 --- a/keyboards/xd68/keymaps/default_iso/readme.md +++ /dev/null @@ -1,5 +0,0 @@ -# XD68 layout for Default ISO - -``` -make xd68:default_iso -``` diff --git a/keyboards/xd68/readme.md b/keyboards/xd68/readme.md deleted file mode 100644 index a62d9c7c56db..000000000000 --- a/keyboards/xd68/readme.md +++ /dev/null @@ -1,53 +0,0 @@ -# XD68 - -![Kitteh](https://i.imgur.com/qkA5Of5.jpg) - -65% board with USB-C, RGB underglow and backlight. Powered by ATM32U4. - -![Top View of XD68 Keyboard](https://i.imgur.com/OLkQQ17.jpg) - -* Keyboard Maintainer: QMK Community -* Hardware Supported: XD68 -* Hardware Availability: [KPRepublic on AliExpress](http://kprepublic.com/products/xiudi-xd68-pcb-65-custom-mechanical-keyboard-support-tkg-tools-underglow-rgb-pcb-programmed-kle-lots-of-layouts) - -Make example for this keyboard (after setting up your build environment): - - make xd68:default - make xd68:default_iso # default ISO UK layout - -## Layouts - -### ANSI - -``` -,----------------------------------------------------------------. -|Esc | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |Home| -|----------------------------------------------------------------| -|Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ |PgUp| -|----------------------------------------------------------------| -|CAPS | A| S| D| F| G| H| J| K| L| ;| '|Return |PgDn| -|----------------------------------------------------------------| -|Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up|End | -|----------------------------------------------------------------| -|Ctrl|Win |Alt | Space |App|Ctrl|FN |Lef|Dow|Rig | -`----------------------------------------------------------------' -``` - -### ISO-UK - -``` -,----------------------------------------------------------------. -|Esc | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |Home| -|----------------------------------------------------------------| -|Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| |PgUp| -|------------------------------------------------------- -----| -|CAPS | A| S| D| F| G| H| J| K| L| ;| '| #|Entr|PgDn| -|----------------------------------------------------------------| -|Shift| \ | Z| X| C| V| B| N| M| ,| .| /|Rshift|Up|End | -|----------------------------------------------------------------| -|Ctrl|Win |Alt | Space |Alt| FN|Ctrl|Lef|Dow|Rig | -`----------------------------------------------------------------' -``` - -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/xd68/rules.mk b/keyboards/xd68/rules.mk deleted file mode 100644 index 49653923d6a4..000000000000 --- a/keyboards/xd68/rules.mk +++ /dev/null @@ -1,33 +0,0 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = atmel-dfu - -# QMK Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE = yes # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode - -LAYOUTS = 65_ansi 65_ansi_split_bs 65_iso diff --git a/keyboards/xd75/info.json b/keyboards/xd75/info.json deleted file mode 100644 index 66b18c500f03..000000000000 --- a/keyboards/xd75/info.json +++ /dev/null @@ -1,92 +0,0 @@ -{ - "keyboard_name": "XD75", - "url": "", - "maintainer": "qmk", - "width": 15, - "height": 5, - "layouts": { - "LAYOUT_ortho_5x15": { - "layout": [ - {"x":0, "y":0}, - {"x":1, "y":0}, - {"x":2, "y":0}, - {"x":3, "y":0}, - {"x":4, "y":0}, - {"x":5, "y":0}, - {"x":6, "y":0}, - {"x":7, "y":0}, - {"x":8, "y":0}, - {"x":9, "y":0}, - {"x":10, "y":0}, - {"x":11, "y":0}, - {"x":12, "y":0}, - {"x":13, "y":0}, - {"x":14, "y":0}, - - {"x":0, "y":1}, - {"x":1, "y":1}, - {"x":2, "y":1}, - {"x":3, "y":1}, - {"x":4, "y":1}, - {"x":5, "y":1}, - {"x":6, "y":1}, - {"x":7, "y":1}, - {"x":8, "y":1}, - {"x":9, "y":1}, - {"x":10, "y":1}, - {"x":11, "y":1}, - {"x":12, "y":1}, - {"x":13, "y":1}, - {"x":14, "y":1}, - - {"x":0, "y":2}, - {"x":1, "y":2}, - {"x":2, "y":2}, - {"x":3, "y":2}, - {"x":4, "y":2}, - {"x":5, "y":2}, - {"x":6, "y":2}, - {"x":7, "y":2}, - {"x":8, "y":2}, - {"x":9, "y":2}, - {"x":10, "y":2}, - {"x":11, "y":2}, - {"x":12, "y":2}, - {"x":13, "y":2}, - {"x":14, "y":2}, - - {"x":0, "y":3}, - {"x":1, "y":3}, - {"x":2, "y":3}, - {"x":3, "y":3}, - {"x":4, "y":3}, - {"x":5, "y":3}, - {"x":6, "y":3}, - {"x":7, "y":3}, - {"x":8, "y":3}, - {"x":9, "y":3}, - {"x":10, "y":3}, - {"x":11, "y":3}, - {"x":12, "y":3}, - {"x":13, "y":3}, - {"x":14, "y":3}, - - {"x":0, "y":4}, - {"x":1, "y":4}, - {"x":2, "y":4}, - {"x":3, "y":4}, - {"x":4, "y":4}, - {"x":5, "y":4}, - {"x":6, "y":4}, - {"x":7, "y":4}, - {"x":8, "y":4}, - {"x":9, "y":4}, - {"x":10, "y":4}, - {"x":11, "y":4}, - {"x":12, "y":4}, - {"x":13, "y":4}, - {"x":14, "y":4} - ] - } - } -} diff --git a/keyboards/xd75/keymaps/4sstylz/rules.mk b/keyboards/xd75/keymaps/4sstylz/rules.mk deleted file mode 100644 index 0a9e12512c97..000000000000 --- a/keyboards/xd75/keymaps/4sstylz/rules.mk +++ /dev/null @@ -1,30 +0,0 @@ -# Copyright 2013 Jun Wako -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -COMBO_ENABLE = yes # Enable combo for special function when using multiple keys at once. -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. - -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration -MOUSEKEY_ENABLE = no # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -MIDI_ENABLE = no # MIDI support -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend diff --git a/keyboards/xd75/keymaps/arpinfidel/keymap.c b/keyboards/xd75/keymaps/arpinfidel/keymap.c deleted file mode 100644 index d6681e786a73..000000000000 --- a/keyboards/xd75/keymaps/arpinfidel/keymap.c +++ /dev/null @@ -1,114 +0,0 @@ -/* Copyright 2017 Wunder - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include QMK_KEYBOARD_H - -// Layer shorthand -#define _QW 0 -#define _FN 1 - -enum my_kc { - A_BL_TG = SAFE_RANGE - // , A_BL_Y - // , A_BL_N -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -/* QWERTY - * .--------------------------------------------------------------------------------------------------------------------------------------. - * | ESC | 1 | 2 | 3 | 4 | 5 | - | ` | = | 6 | 7 | 8 | 9 | 0 | BSPC | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| - * | TAB | Q | W | E | R | T | [ | ] | \ | Y | U | I | O | P | ' | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------| - * | CAP LK | A | S | D | F | G | UP | DEL | DOWN | H | J | K | L | ; | ENTER | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------| - * | LSHIFT | Z | X | C | V | B | HOME | PG UP | END | N | M | , | . | / | RSHIFT | - * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+-----------------+--------+--------| - * | LCTRL | FN | LGUI | LALT | SPACE | SPACE | FN | PG DN | FN | BSPC | BSPC | RALT | RGUI | FN | RCTRL | - * '--------------------------------------------------------------------------------------------------------------------------------------' - */ - - [_QW] = LAYOUT_ortho_5x15( /* QWERTY */ - KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_MINS, KC_GRV , KC_EQL , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_BSPC, - KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_LBRC, KC_RBRC, KC_BSLS, KC_Y , KC_U , KC_I , KC_O , KC_P , KC_QUOT, - KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_UP , KC_DEL , KC_DOWN, KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_ENT, - KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_HOME, KC_PGUP, KC_END , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, - KC_LCTL, TT(_FN), KC_LGUI, KC_LALT, KC_SPC , KC_SPC , TT(_FN), KC_PGDN, TT(_FN), KC_BSPC, KC_BSPC, KC_RALT, KC_RGUI, TT(_FN), KC_RCTL - ), - -/* FUNCTION - * .--------------------------------------------------------------------------------------------------------------------------------------. - * | F1 | F2 | F3 | F4 | F5 | F6 | | | | F7 | F8 | F9 | F10 | F11 | F12 | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | MS W U | | MS 2 | MS UP | MS 1 | MS 3 | RGB HD | | RGB HI | [ | ] | UP | | = | \ | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | MS W D | | MS L | MS DN | MS R | | RGB SD | | RGB SI | - | LEFT | DOWN | RIGHT | | | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | | | | | | RGB VD | BL TG | RGB VI | | | | | | | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | FN | RGB TG | | MS W L | MS W R | | RESET | | MS 1 | MS 2 | RGB RMD| RGB MD | FN | | - * '--------------------------------------------------------------------------------------------------------------------------------------' - */ - - [_FN] = LAYOUT_ortho_5x15( /* FUNCTION */ - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, RGB_HUD, _______, RGB_HUI, KC_F7, KC_F8, KC_F9, KC_F10 , KC_F11 , KC_F12, - KC_WH_U, _______, KC_BTN2, KC_MS_U, KC_BTN1, KC_BTN3, RGB_SAD, _______, RGB_SAI, KC_LBRC, KC_RBRC, KC_UP , _______ , KC_EQL , KC_BSLS, - KC_WH_D, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, RGB_VAD, _______, RGB_VAI, KC_MINS, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, - _______, _______, _______, _______, _______, _______, RGB_RMOD,A_BL_TG, RGB_MOD, _______, _______, _______, _______ , _______, _______, - _______, TT(_FN), RGB_TOG, _______, KC_WH_L, KC_WH_R, TT(_FN), RESET , TT(_FN), KC_BTN1, KC_BTN2, _______, _______ , TT(_FN), _______ - ) -}; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case A_BL_TG: - if (record->event.pressed) { - // toggle keycaps leds (f5 pin) - PORTF ^= (1 << 5); - } - return false; - - // case A_BL_Y: - // if (record->event.pressed) { - // keycaps_led_on(); - // } - // return false; - - // case A_BL_N: - // if (record->event.pressed) { - // keycaps_led_off(); - // } - // return false; - - default: - return true; - } -} - -// Runs whenever there is a layer state change. -uint32_t layer_state_set_user(uint32_t state) { - uint8_t layer = biton32(state); - - gp100_led_off(); - gp103_led_off(); - - // turns on gp100 (top left led) for odd layers - if (layer & (1<<0)) gp100_led_on(); - // turns on gp103 (top mid led) for layers 2, 6, ... - if (layer & (1<<1)) gp103_led_on(); - - return state; -} \ No newline at end of file diff --git a/keyboards/xd75/keymaps/arpinfidel/rules.mk b/keyboards/xd75/keymaps/arpinfidel/rules.mk deleted file mode 100644 index a83220d58112..000000000000 --- a/keyboards/xd75/keymaps/arpinfidel/rules.mk +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright 2013 Jun Wako -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -BOOTMAGIC_ENABLE = no diff --git a/keyboards/xd75/keymaps/bbaserdem/readme.md b/keyboards/xd75/keymaps/bbaserdem/readme.md deleted file mode 100644 index f96c8ea976c7..000000000000 --- a/keyboards/xd75/keymaps/bbaserdem/readme.md +++ /dev/null @@ -1,14 +0,0 @@ -# XD75RE Setup - -(WIP) F keyboard for turkish, using unicode. - -* Write down keymap in userspace -* Figure out LED indicators - -# Make - -Take the board into reset mode, then -``` -make xd75:bbaserdem:dfu -``` -Either sudo it or set permissions in udev. diff --git a/keyboards/xd75/keymaps/billypython/rules.mk b/keyboards/xd75/keymaps/billypython/rules.mk deleted file mode 100644 index c935bbac1161..000000000000 --- a/keyboards/xd75/keymaps/billypython/rules.mk +++ /dev/null @@ -1,15 +0,0 @@ -AUDIO_ENABLE = no -BACKLIGHT_ENABLE = no -BLUETOOTH_ENABLE = no -BOOTMAGIC_ENABLE = no -COMMAND_ENABLE = yes -CONSOLE_ENABLE = yes -EXTRAKEY_ENABLE = yes -MIDI_ENABLE = no -MOUSEKEY_ENABLE = yes -NKRO_ENABLE = yes -RGBLIGHT_ENABLE = no -SLEEP_LED_ENABLE = no -TAP_DANCE_ENABLE = no -UNICODE_ENABLE = yes -VISUALIZER_ENABLE = no diff --git a/keyboards/xd75/keymaps/buzzlighter1/readme.md b/keyboards/xd75/keymaps/buzzlighter1/readme.md deleted file mode 100644 index 947acca10150..000000000000 --- a/keyboards/xd75/keymaps/buzzlighter1/readme.md +++ /dev/null @@ -1,54 +0,0 @@ -# XD75 with 7U spacebar for EN-RU gamers - * Standard QWERTY made for gamers with a Russian alternative input. - * The keys for extra letters in RU alphabet are where they are expected. - * Full 2x4 nav cluster. - * Volume/mute control are on base layer, Win key is on function layer. - * FN_CAPS provides fast F-keys access while gaming. Lefthanded Numpad operation. - * NKRO is on (forced). - -## Layout -```c -/* QWERTY - * .--------------------------------------------------------------------------------------------------------------------------------------. - * | GESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Del | BACKSP | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| - * | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | Mute | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------| - * | FN(CPS)| A | S | D | F | G | H | J | K | L | ; | ' | Vol- | Vol+ | ENTER | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------| - * | LSHIFT | Z | X | C | V | B | N | M | , | . | / | Home | PGUP | UP | PGDWN | - * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+-----------------+--------+--------| - * | LCTRL | Del | ENTER | LALT | SPACE | End | LEFT | DOWN | RIGHT | - * '--------------------------------------------------------------------------------------------------------------------------------------' - */ -``` -```c -/* FUNCTION - * .--------------------------------------------------------------------------------------------------------------------------------------. - * | XXXXXXX| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | _______| _______| - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | _______| P7 | P8 | P9 | + | P* | XXXXXXX| PR SCR | SCR LK | PAUSE | XXXXXXX| BL_DEC | BL_INC | RGB HD | RGB HI | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | _______| P4 | P5 | P6 | NumLk | CALC | XXXXXXX| POWER | XXXXXXX| RESET | XXXXXXX| BL_BRTG| BL_STEP| RGB SD | RGB SI | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | _______| P1 | P2 | P3 | - | P/ | XXXXXXX| OS | PLAY | PREV | NXT | BL_OFF | BL_ON | RGB VD | RGB VI | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | _______| P0 | P. | PENT | SPACE | BL_TOGG| RGB TG | RGB RMD| RGB MD | - * '--------------------------------------------------------------------------------------------------------------------------------------' - */ -``` -## LEDs -Top left LED - Function layer active. -Mid left LED - CapsLock active. - -## Compile - -go to qmk top directory. -``` -$ cd qmk_firmware -``` - -build -``` -$ make xd75:buzzlighter1 -``` \ No newline at end of file diff --git a/keyboards/xd75/keymaps/buzzlighter1/rules.mk b/keyboards/xd75/keymaps/buzzlighter1/rules.mk deleted file mode 100644 index 69a0eb5373da..000000000000 --- a/keyboards/xd75/keymaps/buzzlighter1/rules.mk +++ /dev/null @@ -1,4 +0,0 @@ - -BOOTMAGIC_ENABLE = lite -BACKLIGHT_ENABLE = yes -RGBLIGHT_ENABLE = no diff --git a/keyboards/xd75/keymaps/c4software_bepo/keymap.c b/keyboards/xd75/keymaps/c4software_bepo/keymap.c deleted file mode 100644 index 4571033c0bf3..000000000000 --- a/keyboards/xd75/keymaps/c4software_bepo/keymap.c +++ /dev/null @@ -1,68 +0,0 @@ -/* Copyright 2017 Valentin Brosseau - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include QMK_KEYBOARD_H -#include "keymap_bepo.h" - -// Layer shorthand -#define _BP 0 -#define _FN 1 - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -/* Native BepoDev for compatible computer - * .--------------------------------------------------------------------------------------------------------------------------------------. - * | ESC | " | < | > | ( | ) | % | VOL- | VOL+ | @ | + | - | / | * | = | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| - * | TAB | B | E_ACUT | P | O | $ | E_GRAV | DEL | E_CIRC | V | D | L | J | Z | C_CEDIL| - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------| - * | RALT | A | U | I | E | , | BACKSP | ENTER | C | T | S | R | N | M | W | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------| - * | LSHIFT | A_GRAV | Y | X | . | K | BACKSP | ENTER | ’ | Q | G | H | F | UP | RSHIFT | - * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+-----------------+--------+--------| - * | LALT | LCTRL | FN | LGUI | SPACE | SPACE | RALT | RALT | SPACE | SPACE | RGUI | FN | LEFT | DOWN | RIGHT | - * '--------------------------------------------------------------------------------------------------------------------------------------' - */ - - [_BP] = LAYOUT_ortho_5x15( /* BepoDev */ - KC_ESC, BP_DQOT, BP_LGIL, BP_RGIL, BP_LPRN, BP_RPRN, BP_PERCENT, KC_VOLD, KC_VOLU, BP_AT, BP_PLUS, BP_MINUS, BP_SLASH, BP_ASTR, BP_EQUAL, - KC_TAB, BP_B, BP_E_ACUTE, BP_P, BP_O, BP_DOLLAR, BP_E_GRAVE, KC_DEL, BP_DCRC, BP_V, BP_D, BP_L, BP_J, BP_Z, BP_CCED, - KC_RALT, BP_A, BP_U, BP_I, BP_E, BP_COMMA, KC_BSPC, KC_ENT, BP_C, BP_T, BP_S, BP_R, BP_N, BP_M, BP_W, - KC_LSFT, BP_A_GRAVE, BP_Y, BP_X, BP_DOT, BP_K, KC_BSPC, KC_ENT, BP_APOS, BP_Q, BP_G, BP_H, BP_F, KC_UP, KC_RSFT, - KC_LALT, KC_LCTL, MO(_FN), KC_LGUI, KC_SPC, KC_SPC, KC_RALT, KC_RALT, KC_SPC, KC_SPC, KC_RGUI, MO(_FN), KC_LEFT, KC_DOWN, KC_RGHT - ), - -/* FUNCTION - * .--------------------------------------------------------------------------------------------------------------------------------------. - * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | P/ | P* | F9 | F10 | F11 | F12 | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | | | | | | | | P7 | P8 | P9 | - | RGB_TOG| RGB_MOD| RGB_HUI| - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | PREV | PLAY | NEXT | STOP | | | | P4 | P5 | P6 | + | RGB_SAI| RGB_SAD| RGB_VAI| - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | VOL- | MUTE | VOL+ | | | | | P1 | P2 | P3 | ENT | RGB_VAD| Home | RGB_HUD| - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | RESET | | FN | | | | | | P0 | P0 | . | FN | | End | | - * '--------------------------------------------------------------------------------------------------------------------------------------' - */ - - [_FN] = LAYOUT_ortho_5x15( /* FUNCTION */ - KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_SLSH, KC_ASTR, KC_F9, KC_F10, KC_F11, KC_F12, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_MINS, RGB_TOG, RGB_MOD, RGB_HUI, - KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP, KC_TRNS, KC_TRNS, KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PLUS, RGB_SAI, RGB_SAD, RGB_VAI, - KC_TRNS, KC_VOLD, KC_MUTE, KC_VOLU, KC_APP, KC_TRNS, KC_TRNS, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_ENT, RGB_VAD, KC_HOME, RGB_HUD, - RESET, KC_TRNS, MO(_FN), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_0, KC_KP_0, KC_PDOT, MO(_FN), KC_TRNS, KC_END, KC_TRNS - ) -}; diff --git a/keyboards/xd75/keymaps/cbbrowne/keymap.c b/keyboards/xd75/keymaps/cbbrowne/keymap.c deleted file mode 100644 index 6c356ac80340..000000000000 --- a/keyboards/xd75/keymaps/cbbrowne/keymap.c +++ /dev/null @@ -1,310 +0,0 @@ -/* Copyright 2017 Christopher B Browne - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include QMK_KEYBOARD_H - -/* Fillers to make layering more clear */ -#define ___T___ KC_TRNS - -/* Layer shorthand */ - -enum layers { - _QWERTY = 0, /* Qwerty mapping */ - _LOWER, /* Lower layer, where top line has symbols !@#$%^&*() */ - _RAISE, /* Raised layer, where top line has digits 1234567890 */ - _ADJUST, /* Special Adjust layer coming via tri-placement */ - _FUNCTION /* Function key layer */ -}; - - -/* Macros need to be uniquely identified; using an enum to do this - automatically - */ - -enum macro_id { - M_LED = 0, - M_USERNAME, - M_RANDDIGIT, - M_RANDLETTER, - M_VERSION, - MACRO_UPPER, - MACRO_LOWER, -}; - -/* I want some short forms for keycodes so that they fit into - limited-width cells */ - -#define M_LOWER M(MACRO_LOWER) -#define M_UPPER M(MACRO_UPPER) -#define ROT_LED M(M_LED) /* Rotate LED */ -#define QWERTY DF(_QWERTY) /* Switch to QWERTY layout */ -#define QCENT2 DF(_QCENT2) /* Switch to QWERTY-with-centre layout */ -#define USERNAME M(M_USERNAME) /* shortcut for username */ -#define RANDDIG M(M_RANDDIGIT) -#define RANDALP M(M_RANDLETTER) -#define CTLENTER MT(MOD_RCTL, KC_ENT) -#define SHIFTQUOTE MT(MOD_RSFT, KC_QUOT) -#define ALTRIGHT MT(MOD_LALT, KC_RGHT) -#define MVERSION M(M_VERSION) -#define ALTSLASH LALT(KC_SLSH) -#define FUNCTION MO(_FUNCTION) -#define MRAISE MO(_RAISE) -#define MLOWER MO(_LOWER) -#define ALTPLUS ALT_T(KC_PLUS) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -/* QWERTY - MIT ENHANCED / GRID COMPATIBLE - * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. - * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | XXXXXX . BACKSP | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| - * | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | DEL | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| - * | ESC | A | S | D | F | G | H | J | K | L | ; | ' | XXXXXX . ENTER | PG UP | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| - * | LSHIFT | Z | X | C | V | B | N | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN | - * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| - * | BRITE | LCTRL | LALT | LGUI | RAISE | XXXXXX . SPACE | LOWER | RGUI | RALT | RCTRL | FN | LEFT | DOWN | RIGHT | - * '--------------------------------------------------------------------------------------------------------------------------------------' - */ - - /* layout for centred keypad + qwerty... - -|ESC| 1 | 2 | 3 | 4 | 5 | ? | ? | ? | ? | 6 | 7 | 8 | 9 | 0 | -|TAB| q | w | e | r | t | ? | ? | ? | ? | y | u | i | o | p | -|CTL| a | s | d | f | g | ? | ? | ? | ? | h | j | k | l | ; | -|SHF| z | x | c | v | b | ? | ? | ? | ? | n | m | , | . | / | -|ALT|LED| | | | | | | | | | | | | | - - -keys needing to be assigned: -51 - KC_TAB - tab - - ROT_LED - rotate LED -15 - KC_LALT - Left ALT -53,55 - M_RAISE - switch to RAISE layer -5b - M_LOWER - switch to LOWER layer -56,59,5a - KC_SPC - space -5c - KC_LEFT - famous arrows -5d - KC_DOWN - famous arrows -5e - KC_UP - famous arrows -5f - KC_RIGHT - famous arrows -3f - KC_ENT - enter - - KC_GRV - leftwards quote -4f - KC_QUOT - rightwards quote -1f - KC_BSPC - backspace -11 - KC_ESC -19 - KC_GRV - ` - raised -19 - KC_TILD - ~ - lowered - - */ - -[_QWERTY] = LAYOUT_ortho_5x15( /* QWERTY, with keypad in the centre */ - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_EQL, KC_MINS, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC , - KC_LALT, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_7, KC_8, KC_EQL, KC_Y, KC_U, KC_I, KC_O, KC_P, ALTPLUS , - KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LBRC, KC_RBRC,KC_MINS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, CTLENTER , - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_PGUP, KC_EQL, KC_BSLS, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SHIFTQUOTE , - KC_TAB, FUNCTION, MRAISE, FUNCTION, MRAISE, KC_SPC,KC_PGDN, KC_MINS, KC_SPC, KC_SPC, MLOWER, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT -), - -/* LOWER - * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. - * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX . | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| - * | | ! | @ | # | $ | % | ^ | & | * | ( | ) | | | | INS | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| - * | | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | XXXXXX . | | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| - * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | | XXXXXX . | | | - * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| - * | | | | | | XXXXXX . | | | | | | | | | - * '--------------------------------------------------------------------------------------------------------------------------------------' - */ - -[_LOWER] = LAYOUT_ortho_5x15( /* LOWERED */ - ___T___, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, KC_TILD, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11 , - ___T___, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_INS , - ___T___, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE , - _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, ___T___, ___T___, _______ , - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - -/* RAISED - * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. - * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX . | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| - * | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | | | | INS | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| - * | | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | XXXXXX . | | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| - * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | | XXXXXX . | | | - * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| - * | | | | | | XXXXXX . | | | | | | | | | - * '--------------------------------------------------------------------------------------------------------------------------------------' - */ - -[_RAISE] = LAYOUT_ortho_5x15 ( /* RAISED */ - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, MVERSION, _______, KC_GRV, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ___T___ , - KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, USERNAME, _______, KC_7, KC_8, KC_LCBR, KC_RCBR, _______, _______, KC_INS , - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, RANDDIG, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, ___T___, ___T___ , - KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RANDALP, _______, _______, _______, _______, ___T___, ___T___, _______, _______ , - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ -), - -/* FUNCTION - * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. - * | NUM LK | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX . | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| - * | SCR LK | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | F21 | F22 | F23 | F24 | PAUSE | PR SCR | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| - * | CAP LK | MS BT5 | MS BT4 | MS BT3 | MS BT2 | SLOW M | FAST M | NEXT | VOL+ | VOL- | PLAY | | XXXXXX | | WHEEL+ | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| - * | RGB TG | RGB MD | RGB HI | RGB HD | RGB SI | RGB SD | RGB VI | RGB VD | BL TOG | BL INC | BL DEC | XXXXXX | | MOUS U | WHEEL- | - * |--------+--------+--------+--------+--------+-- 2u -----------+--------+--------+--------+--------+-----------------+--------+--------| - * | RESET | | QWERTY | COLEMK | DVORAK | XXXXXX . MS BT1 | | | | | | MOUS L | MOUS D | MOUS R | - * '--------------------------------------------------------------------------------------------------------------------------------------' - */ - -[_FUNCTION] = LAYOUT_ortho_5x15( /* FUNCTION */ - KC_NLCK, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RESET, RESET, - KC_SLCK, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_PAUS, KC_PSCR , - KC_CAPS, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_ACL0, KC_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, ___T___, ___T___, KC_WH_U , - RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, BL_TOGG, BL_INC, BL_DEC, ___T___, ___T___, KC_MS_U, KC_WH_D , - RESET , _______, DF(_QWERTY), DF(_QWERTY), DF(_QWERTY), KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R - ) -}; - -/* This bit of logic seeds a wee linear congruential random number generator */ -/* lots of prime numbers everywhere... */ -static uint16_t random_value = 157; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - uint8_t clockbyte=0; - clockbyte = TCNT1 % 256; - uint8_t rval; - /* MACRODOWN only works in this function */ - switch(id) { - case 0: - if (record->event.pressed) { - register_code(KC_RSFT); -#ifdef BACKLIGHT_ENABLE - backlight_step(); -#endif - } else { - unregister_code(KC_RSFT); - } - break; - case M_USERNAME: - if (record->event.pressed) { - SEND_STRING("cbbrowne"); - } - break; - case M_VERSION: - if (record->event.pressed) { - SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP); - } - break; - case M_RANDDIGIT: - /* Generate, based on random number generator, a keystroke for - a numeric digit chosen at random */ - random_value = ((random_value + randadd) * randmul) % randmod; - if (record->event.pressed) { - /* Here, we mix the LCRNG with low bits from one of the system - clocks via XOR in the theory that this may be more random - than either separately */ - rval = (random_value ^ clockbyte) % 10; - /* Note that KC_1 thru KC_0 are a contiguous range */ - register_code (KC_1 + rval); - unregister_code (KC_1 + rval); - } - break; - case M_RANDLETTER: - /* Generate, based on random number generator, a keystroke for - a letter chosen at random */ - /* Here, we mix the LCRNG with low bits from one of the system - clocks via XOR in the theory that this may be more random - than either separately */ - random_value = ((random_value + randadd) * randmul) % randmod; - if (record->event.pressed) { - rval = (random_value ^ clockbyte) % 26; - register_code (KC_A + rval); - unregister_code (KC_A + rval); - } - break; - case MACRO_UPPER: - if (record->event.pressed) - { - layer_on(_RAISE); -#ifdef BACKLIGHT_ENABLE - breathing_period_set(2); - breathing_pulse(); -#endif - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } - else - { - layer_off(_RAISE); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } - break; - case MACRO_LOWER: - if (record->event.pressed) - { - layer_on(_LOWER); -#ifdef BACKLIGHT_ENABLE - breathing_period_set(2); - breathing_pulse(); -#endif - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } - else - { - layer_off(_LOWER); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } - break; - } - return MACRO_NONE; -}; - -void matrix_init_user(void) { - rgblight_enable(); - rgblight_mode(1); - rgblight_sethsv(325,255,255); -} - -uint32_t layer_state_set_user(uint32_t state) { - switch(biton32(state)) { - case _QWERTY: - rgblight_sethsv_white(); - break; - case _LOWER: - rgblight_sethsv_blue(); - break; - case _RAISE: - rgblight_sethsv_green(); - break; - case _ADJUST: - rgblight_sethsv_orange(); - break; - case _FUNCTION: - rgblight_sethsv_red(); - break; - default: - rgblight_sethsv(325,255,255); - break; - } - return state; -} diff --git a/keyboards/xd75/keymaps/cbbrowne/rules.mk b/keyboards/xd75/keymaps/cbbrowne/rules.mk deleted file mode 100644 index eb2f87063486..000000000000 --- a/keyboards/xd75/keymaps/cbbrowne/rules.mk +++ /dev/null @@ -1,20 +0,0 @@ -# Build Options -# change to "no" to disable the options, or define them in the Makefile in -# the appropriate keymap folder that will get included automatically -# -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = no # Mouse keys(+4700) -EXTRAKEY_ENABLE = no # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) -COMMAND_ENABLE = yes # 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 -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. -API_SYSEX_ENABLE = no # Enable SYSEX API (+5390) - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend diff --git a/keyboards/xd75/keymaps/clanghans/readme.md b/keyboards/xd75/keymaps/clanghans/readme.md deleted file mode 100755 index bce20f613368..000000000000 --- a/keyboards/xd75/keymaps/clanghans/readme.md +++ /dev/null @@ -1,11 +0,0 @@ -# xd75 from Chris Langhans - -- qwerty layer -- special function layer with num pad and shortcuts - -* Build/Flash - qmk setup - qmk compile -kb xd75 -km clanghans - qmk flash -kb xd75 -km clanghans - - Hit 'Raise'+'PgUp' for entering bootloader mode diff --git a/keyboards/xd75/keymaps/colinta/readme.md b/keyboards/xd75/keymaps/colinta/readme.md deleted file mode 100644 index e3f59d681fa5..000000000000 --- a/keyboards/xd75/keymaps/colinta/readme.md +++ /dev/null @@ -1,64 +0,0 @@ -# colinta's keymap for XD75 - -``` -make xd75:colinta:dfu -``` - -The default layout is a Colemak keyboard with "one-shot" keys assigned to the modifier keys. - - .--------------------------------------------------------------------------------------------------------------------------------------. - | ESC | 1 | 2 | 3 | 4 | 5 | DYN_M1 | DYN_M2 | DEL | 6 | 7 | 8 | 9 | 0 | - | - |--------+-/F1----+-/F2----+-/F3----+-/F4----+-/F5----+--------+--------+--------+-/F6----+-/F7----+-/F8----+-/F9----+-/F10---+--------| - | TAB | Q | W | F | P | G | MACRO | (FN) | BKSP | J | L | U | Y | ; | = | - |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------| - | SHIFT | A | R | S | T | D | [ | ] | ENTER | H | N | E | I | O | ' | - |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------| - | CTRL | Z | X | C | V | B | HOME | END | PG UP | K | M | , | . | / | \ | - |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+-----------------+--------+--------| - | VOL- | PLAY | VOL+ | ALT | GUI | SPACE | PG DN | MENU | ESC | LEFT | DOWN | UP | RIGHT | - '--/RRND----/MUTE----/FFWD-------------------------------------------------------------------------------------------------------------' - - -I've implemented my own "tap/hold" feature, identical in spirit to "Space Cadet", but generic. Tapping "1" sends a 1, but press and hold to send "F1". Or, tap "VOL-" to turn the volume down, but press and hold to rewind. - -The function layer is only to switch to Qwerty (so other people can use this keyboard - also turns off sticky keys) and to start recording keypresses. - -I implemented "stop recording" in a unique way; starting a macro recording sends the keyboard layer to one that has all the macro keys assigned to `DYN_REC_STOP`, and restores the layer to the default when recording is stopped. - -I wish Dynamic Macros supported more, because I'd like to record a third macro in the MACRO slot instead of hardcoding it. I'm using these to store some passwords. - -## Regarding "secrets.h" - -The macros I'm using are sensitive, I'm comfortable having them hardcoded onto my keyboard (no SSN or private GPG keys), but not suitable for public viewing. So I've put them in a header file that is excluded from the project, and I can include this file using a compiler flag. - -If you would *also* like to take advantage of this feature, you'll first want to make sure your "secrets" file isn't included in the repo. Open `.git/info/exclude` and add `secrets.h` to that file, below the comments. - -###### .git/info/exclude -``` -# git ls-files --others --exclude-from=.git/info/exclude -# Lines that start with '#' are comments. -# For a project mostly in C, the following would be a good set of -# exclude patterns (uncomment them if you want to use them): -# *.[oa] -# *~ -/keyboards/xd75/keymaps/colinta/secrets.h -``` - -Then you can create this file and add your macro strings to it: - -``` -$EDITOR keyboards/xd75/keymaps/colinta/secrets.h -``` - -###### secrets.h -``` -#define SENDSTRING_MM0 "abcd1234" -#define SENDSTRING_MM1 "shhhhh secret" -#define SENDSTRING_MM2 "stop saying pickle rick" -``` - -To include the feature at compile time, include the flag `IS_COLINTA` like so: - -``` -make xd75:colinta:dfu EXTRAFLAGS=-DIS_COLINTA -``` diff --git a/keyboards/xd75/keymaps/davidrambo/keymap.c b/keyboards/xd75/keymaps/davidrambo/keymap.c deleted file mode 100644 index 7be197a81c71..000000000000 --- a/keyboards/xd75/keymaps/davidrambo/keymap.c +++ /dev/null @@ -1,158 +0,0 @@ -#include QMK_KEYBOARD_H - -//aliases for clarity in layering -#define A_BSPC LALT(KC_BSPC) // delete whole word in Mac -#define C_BSPC LCTL(KC_BSPC) // delete whole word in PC -#define A_LEFT LALT(KC_LEFT) -#define A_RGHT LALT(KC_RGHT) -#define C_RGHT LCTL(KC_RGHT) -#define C_LEFT LCTL(KC_LEFT) -#define SftEnt SFT_T(KC_ENT) -#define BS_GUI LGUI_T(KC_BSPC) -#define BS_CTL LCTL_T(KC_BSPC) - -// internet browser tab shortcuts and window/application swapping for Mac and Win -#define GSL LGUI(S(KC_LEFT)) // back one tab in Safari -#define GSR LGUI(S(KC_RGHT)) // forward one tab in Safari -#define CTLPGDN LCTL(KC_PGDN) // back one tab on Windows -#define CTLPGUP LCTL(KC_PGUP) // forward one tab on Windows -#define G_TAB LGUI(KC_TAB) // Mac: switch applications -#define G_GRV LGUI(KC_GRV) // Mac: switch between windows within an application -#define A_TAB LALT(KC_TAB) -#define C_TAB LCTL(KC_TAB) - -// navigation layers for both Mac OS X and Windows -#define NAV LT(4, KC_TAB) -#define NAVPC LT(5, KC_TAB) - -// Layer shorthand -#define _COLEMAK 0 -#define _PC 1 -#define _GAME 2 // Gaming layer -#define _SYMBOL 3 // Function keys, numbers, symbols, Backlighting -#define _NAV 4 // Navigation Layer on Mac -#define _NAVPC 5 // Navigation Layer on Win - -// tapdance declarations -enum { - SFT_LCK -}; - -// alias for tapdance -#define SftLck TD(SFT_LCK) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -/* COLEMAK - * .--------------------------------------------------------------------------------------------------------------------------------------. - * | `~ | 1 | 2 | 3 | 4 | 5 | -_ | PC | =+ | 6 | 7 | 8 | 9 | 0 | BACKSP | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| - * | ESC/`~ | Q | W | F | P | G | [ | \| | ] | J | L | U | Y | ; | BACKSP | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------| - * | NAVTAB | A | S | D | F | G | PgUp |PlayPaus| ENTER | H | N | E | I | O | ' | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------| - * |SFT/CAPS| Z | X | C | V | B | PgDn | UP | ENTER | K | M | , | . | / | SftEnt | - * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+-----------------+--------+--------| - * | DEL | LGUI | LCTRL | LALT | LGUI | BKSPC | LEFT | DOWN | RIGHT | SPACE | SYMBOL | RGUI | RALT | RCTRL | BL | - * '--------------------------------------------------------------------------------------------------------------------------------------' - */ - - [_COLEMAK] = LAYOUT_ortho_5x15( /* COLEMAK */ - KC_GRV , KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, TG(1) , KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, - KC_GESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_LBRC, KC_BSLS, KC_RBRC, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, - NAV , KC_A, KC_R, KC_S, KC_T, KC_D, KC_PGUP, KC_ESC , KC_ENT , KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, - SftLck , KC_Z, KC_X, KC_C, KC_V, KC_B, KC_PGDN, KC_UP , KC_ENT , KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, SftEnt , - KC_DEL , KC_LGUI, KC_LCTL, KC_LALT, KC_LGUI, BS_GUI, KC_LEFT, KC_DOWN, KC_RGHT, KC_SPC, MO(3) , KC_RGUI, KC_RALT, KC_RCTL, BL_STEP - ), - -// Windows Layer: essentially swaps Control and GUI - - [_PC] = LAYOUT_ortho_5x15( /* WINDOWS */ - _______, _______, _______, _______, _______, _______, _______, TG(2) , _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - NAVPC , _______, _______, _______, _______, _______, _______, KC_MPLY, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, KC_LCTL, KC_LGUI, _______, KC_LCTL, BS_CTL , _______, _______, _______, _______, _______, KC_RCTL, KC_RALT, KC_RGUI, _______ - ), - - [_GAME] = LAYOUT_ortho_5x15( /* Gaming Layer */ - _______, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_F10 , KC_F11 , KC_F12 , _______, _______, _______, _______, _______, TO(0) , - KC_ESC , KC_T , KC_Q , KC_W , KC_E , KC_R , KC_F7 , KC_F8 , KC_F9 , KC_Y , KC_U , KC_I , KC_O , KC_P , _______, - KC_TAB , KC_LSFT, KC_A , KC_S , KC_D , KC_F , KC_F4 , KC_F5 , KC_F6 , KC_H , KC_J , KC_K , KC_L , KC_SCLN, _______, - KC_LALT, KC_LCTL, KC_Z , KC_X , KC_C , KC_V , KC_F1 , KC_F2 , KC_F3 , KC_N , KC_M , _______, _______, _______, KC_ENT , - _______, _______, _______, KC_G , KC_B , KC_SPC , KC_I , KC_M , _______, _______, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, _______ - ), - -/* SYMBOL - * .--------------------------------------------------------------------------------------------------------------------------------------. - * | F12 | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | [{ | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | }] | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | ! | @ | # | $ | % | | | | ^ | & | * | ( | ) | = | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | HOME | END | BL_OFF | BL_ON | | | | | | -_ | | | | | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | | | | | | | | | | | | | | | - * '--------------------------------------------------------------------------------------------------------------------------------------' - */ - - [_SYMBOL] = LAYOUT_ortho_5x15( /* SYMBOL */ - KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , _______, _______, _______, KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , - KC_LBRC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , _______, _______, _______, KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_RBRC, - _______, KC_EXLM, KC_AT , KC_HASH, KC_DLR , KC_PERC, _______, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_EQL , - _______, KC_HOME, KC_END , BL_OFF , BL_ON , KC_F11 , _______, _______, _______, KC_F12 , KC_MINS, _______, _______, _______, _______, - _______, _______, _______, _______, _______, A_BSPC , _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - - - [_NAV] = LAYOUT_ortho_5x15( /* NAVIGATION for Mac */ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, C_TAB , A_LEFT, KC_UP, A_RGHT , KC_DEL , _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, GSL , KC_LEFT, KC_DOWN, KC_RGHT, GSR , _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, G_TAB , A_BSPC , KC_HOME, KC_END , G_GRV , _______, - RESET , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - - [_NAVPC] = LAYOUT_ortho_5x15( /* NAVIGATION FOR WINDOWS: replaces Alt with Control, GUI with Alt, and browser tab shortcuts*/ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, C_TAB , C_LEFT, KC_UP, C_RGHT , KC_DEL , _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, CTLPGUP, KC_LEFT, KC_DOWN, KC_RGHT, CTLPGDN, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, A_TAB , C_BSPC , KC_HOME, KC_END , _______, _______, - RESET , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ) -}; - -// Shift vs capslock function. From bbaserdem's Planck keymap. -void caps_tap (qk_tap_dance_state_t *state, void *user_data) { - if (state->count == 1) { - register_code (KC_LSFT); - } else if (state->count == 2) { - unregister_code (KC_LSFT); - register_code (KC_CAPS); - } -} -void caps_tap_end (qk_tap_dance_state_t *state, void *user_data) { - if (state->count == 1) { - unregister_code (KC_LSFT); - } else { - unregister_code (KC_CAPS); - } -} - -//Tap Dance Definitions -qk_tap_dance_action_t tap_dance_actions[] = { - //Tap once for Shift, twice for Caps Lock - [SFT_LCK] = ACTION_TAP_DANCE_FN_ADVANCED( caps_tap, NULL, caps_tap_end ) -}; - -/* Template for future layers - [_LAYER_NAME] = { - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, - } -}; -*/ diff --git a/keyboards/xd75/keymaps/davidrambo/readme.md b/keyboards/xd75/keymaps/davidrambo/readme.md deleted file mode 100644 index a53abc8afc87..000000000000 --- a/keyboards/xd75/keymaps/davidrambo/readme.md +++ /dev/null @@ -1,7 +0,0 @@ -# XD75 - -This is a Colemak layout for XD75 with both Mac and Windows layers. -These two layers share momentary toggle access to a "Symbol" layer, which is modeled after my Planck layout (see planck/keymaps/davidrambo). -Each of the base Colemak layers have their own Navigation layers for the right hand to use arrows and shortcuts for both text editing and web browsing. - -The rules.mk file overrides the XD75's "BACKLIGHT_ENABLE" with YES and also adds tap dance functionality. \ No newline at end of file diff --git a/keyboards/xd75/keymaps/developper_bepo/keymap.c b/keyboards/xd75/keymaps/developper_bepo/keymap.c deleted file mode 100644 index 7fedb7fb63e5..000000000000 --- a/keyboards/xd75/keymaps/developper_bepo/keymap.c +++ /dev/null @@ -1,72 +0,0 @@ -/* Copyright 2017 Quentin Lebastard - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include QMK_KEYBOARD_H -#include "keymap_bepo.h" - -// Layer shorthand -#define _BP 0 -#define _FN 1 - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -/* - * .--------------------------------------------------------------------------------------------------------------------------------------. - * | $ | " | { | } | ( | ) | VOL- | MUTE | VOL+ | + | - | / | * | = | % | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| - * | TAB | B | E_ACUT | P | O | E_GRAV | | | | ^ | V | D | L | J | Z | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------| - * | ESC | A | U | I | E | , | HOME | | END | C | T | S | R | N | M | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------| - * | LSHIFT | W | Y | X | . | K | PAGE UP| | PAGE D | ? | Q | G | H | F | RSHIFT | - * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+-----------------+--------+--------| - * | LCTRL | LGUI | ALT | | _ |ENTER/FN| DEL | | BACKSP |SPACE/FN| _ | ALT | ALT | RGUI | LCTRL | - * '--------------------------------------------------------------------------------------------------------------------------------------' - */ - - [_BP] = LAYOUT_ortho_5x15( /* BepoDev */ - BP_DOLLAR, BP_DQOT, BP_LCBR, BP_RCBR, BP_LPRN, BP_RPRN, KC_VOLD, KC_MUTE, KC_VOLU, BP_PLUS, BP_MINUS,BP_SLASH,BP_ASTR, BP_EQL, BP_PERC, - KC_TAB, BP_B, BP_E_ACUTE, BP_P, BP_O, BP_E_GRAVE, KC_KP_7, KC_KP_8, KC_KP_9, BP_DCRC, BP_V, BP_D, BP_L, BP_J, BP_Z, - KC_ESC, BP_A, BP_U, BP_I, BP_E, BP_COMMA, KC_HOME, KC_KP_5, KC_END, BP_C, BP_T, BP_S, BP_R, BP_N, BP_M, - KC_LSFT, BP_W, BP_Y, BP_X, BP_DOT, BP_K, KC_PGUP, KC_END, KC_PGDOWN, BP_APOS, BP_Q, BP_G, BP_H, BP_F, KC_RSFT, - KC_LCTL, KC_LGUI, KC_RALT, KC_LGUI, BP_UNDS, LT(_FN,KC_ENT), KC_DEL, KC_KP_0, KC_BSPC, LT(_FN,KC_SPC), BP_UNDS, KC_RALT, KC_RALT, KC_RGUI, KC_LCTL - ), - - -/* FUNCTION - * .--------------------------------------------------------------------------------------------------------------------------------------. - * | F1 | F2 | F3 | F4 | F5 | F6 | PREV | PAUSE | NEXT | F7 | F8 | F9 | F10 | F11 | F12 | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | | | \ | [ | ] | & | | | | | LEFT | DOWN | UP | RIGHT | | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | | | | | | | | | | < | > | @ | | | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | | | _ | MO(_FN)| | | | | MO(_FN)| _ | | | | RESET | - * '--------------------------------------------------------------------------------------------------------------------------------------' - */ - - - [_FN] = LAYOUT_ortho_5x15( /* FUNCTION */ - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MPRV, KC_MPLY, KC_MNXT, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, - _______, S(BP_DQOT), S(BP_LGIL), S(BP_RGIL), S(BP_LPRN), S(BP_RPRN), _______, _______, _______, S(BP_AT), S(BP_PLUS), S(BP_MINUS), S(BP_SLASH), S(BP_ASTR), S(BP_EQL), - _______, RALT(BP_B), BP_BSLS, BP_LBRC, BP_RBRC, RALT(BP_P), _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, _______, - _______, BP_BSLS, _______, _______, _______, _______, _______, _______, _______, _______, BP_LESS, BP_GRTR, BP_AT , _______, _______, - _______, _______, _______, _______, _______, LT(_FN,KC_ENT), _______, _______, _______, LT(_FN,KC_SPC), _______, _______, _______, _______, RESET - ) - -}; diff --git a/keyboards/xd75/keymaps/developper_bepo/readme.md b/keyboards/xd75/keymaps/developper_bepo/readme.md deleted file mode 100644 index 7954a683a0a2..000000000000 --- a/keyboards/xd75/keymaps/developper_bepo/readme.md +++ /dev/null @@ -1,13 +0,0 @@ -# developper_bepo Custom Keyboard - -Layout for Bépo Software development - -* Improved access to frequently used keys in software development -* Modified layout for english input -* Easy access to layers with space and enter key - -Keyboard maintainer: [Quentin Lebastard](https://github.com/lebastaq) - -Make example for this keyboard (after setting up your build environment): - - make xd75:developper_bepo diff --git a/keyboards/xd75/keymaps/fabian/rules.mk b/keyboards/xd75/keymaps/fabian/rules.mk deleted file mode 100644 index 39b003deee0f..000000000000 --- a/keyboards/xd75/keymaps/fabian/rules.mk +++ /dev/null @@ -1,34 +0,0 @@ -# Copyright 2013 Jun Wako -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - - -# QMK Build Options -# change to "no" to disable the options, or define them in the Makefile in -# the appropriate keymap folder that will get included automatically -# -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) -COMMAND_ENABLE = yes # 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 -MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config) -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - diff --git a/keyboards/xd75/keymaps/french/keymap.c b/keyboards/xd75/keymaps/french/keymap.c deleted file mode 100644 index f8de0763cc32..000000000000 --- a/keyboards/xd75/keymaps/french/keymap.c +++ /dev/null @@ -1,56 +0,0 @@ -#include "keymap_french.c" -#include QMK_KEYBOARD_H - - -// Layer shorthand -#define _AZ 0 -#define _FN 1 - - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -/* AZERTY - * .--------------------------------------------------------------------------------------------------------------------------------------. - * | ESC | & | é | " | ' | ( | - | è | _ | ç | à | ) | = | INSERT | BACKSP | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| - * | TAB | a | z | e | r | t | y | u | i | o | p | ^ | $ | ENTER | PG UP | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------| - * | CAP LK | q | s | d | f | g | h | j | k | l | m | ù | * | ENTER | PG DN | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------| - * | LSHIFT | w | x | c | v | b | n | , | ; | : | ! | < | LSHIFT | UP | DEL | - * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+-----------------+--------+--------| - * | LCTRL | CMD | ALT | FN | SPACE | SPACE | SPACE | SPACE | ALGR | MENU | HOME | END | LEFT | DOWN | RIGHT | - * '--------------------------------------------------------------------------------------------------------------------------------------' - */ - - [_AZ] = LAYOUT_ortho_5x15( /* AZERTY */ - FR_ESC, FR_AMP, FR_EACU, FR_QUOT, FR_APOS, FR_LPAR, FR_MINS, FR_EGRV, FR_UNDS, FR_CCED, FR_AGRV, FR_RPAR, FR_EQUA, FR_INST, FR_BSPC, - FR_TAB, FR_A, FR_Z, FR_E, FR_R, FR_T, FR_Y, FR_U, FR_I, FR_O, FR_P, FR_HAT, FR_DLR, FR_ENTR, FR_PGUP, - FR_CAPL, FR_Q, FR_S, FR_D, FR_F, FR_G, FR_H, FR_J, FR_K, FR_L, FR_M, FR_UGRV, FR_AST, FR_ENTR, FR_PGDN, - FR_LSFT, FR_W, FR_X, FR_C, FR_V, FR_B, FR_N, FR_COMM, FR_SCLN, FR_COLN, FR_EXCL, FR_LESS, FR_RSFT, FR_UP, FR_DEL, - FR_LCTR, FR_LCMD, FR_LALT, MO(_FN), FR_SPAC, FR_SPAC, FR_SPAC, FR_SPAC, FR_ALGR, FR_MENU, FR_HOME, FR_END, FR_LEFT, FR_DOWN, FR_RIGT - ), - - -/* FUNCTION - * .--------------------------------------------------------------------------------------------------------------------------------------. - * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | PRINT | LED | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | PREV | PLAY | NEXT | | | | | NUM LCK| 7 | 8 | 9 | * | | LED+ | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | VOL- | MUTE | VOL+ | | | | | | 4 | 5 | 6 | - | | LED- | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | | | | | | | | | 1 | 2 | 3 | + | | LEDMAX | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | RESET | | | FN | | | | | | | 0 | . | PENT | | LEDLVL | - * '--------------------------------------------------------------------------------------------------------------------------------------' - */ - - [_FN] = LAYOUT_ortho_5x15( /* FUNCTION */ - FR_EMPT, FR_F1, FR_F2, FR_F3, FR_F4, FR_F5, FR_F6, FR_F7, FR_F8, FR_F9, FR_F10, FR_F11, FR_F12, FR_PSCR, BL_TOGG, - FR_EMPT, FR_MPRV, FR_MPLY, FR_MNXT, FR_EMPT, FR_EMPT, FR_EMPT, FR_EMPT, FR_NUML, FR_7, FR_8, FR_9, FR_MULT, FR_EMPT, BL_INC, - FR_EMPT, FR_MVDN, FR_MUTE, FR_MVUP, FR_EMPT, FR_EMPT, FR_EMPT, FR_EMPT, FR_EMPT, FR_4, FR_5, FR_6, FR_MOIN, FR_EMPT, BL_DEC, - FR_EMPT, FR_EMPT, FR_EMPT, FR_EMPT, FR_EMPT, FR_EMPT, FR_EMPT, FR_EMPT, FR_EMPT, FR_1, FR_2, FR_3, FR_PLUS, FR_EMPT, BL_ON, - RESET, FR_EMPT, FR_EMPT, FR_TRANS, FR_EMPT, FR_EMPT, FR_EMPT, FR_EMPT, FR_EMPT, FR_EMPT, FR_0, FR_DOT, FR_ENTK, FR_EMPT, BL_STEP - ) -}; diff --git a/keyboards/xd75/keymaps/french/readme.md b/keyboards/xd75/keymaps/french/readme.md deleted file mode 100644 index 8c5330290ee9..000000000000 --- a/keyboards/xd75/keymaps/french/readme.md +++ /dev/null @@ -1,20 +0,0 @@ -# Clavier AZERTY français - -![Disposition Clavier](https://i.imgur.com/tH9TVBc.png) - - -# Configuration du clavier - -Ce clavier AZERTY est basé sur le fichier keymap_french.c de correspondance QWERTY - AZERTY. - -Ce fichier est composé de trois énumérations (layout français, touches de contrôle, touches multimédias) correspondant aux keycodes sous la forme d'hexa. - -Il peut être utilisé pour toute autre configuration de clavier juste en incluant ce fichier dans son propre keymap.c. - -La touche de fonction permet elle d'avoir accès aux différentes touches multimédias ainsi qu'au pavé numérique. Mais aussi si le clavier est équipé de led, à différents modes d'éclairage. - -# Compilation - -``` -make xd75:french:dfu -``` diff --git a/keyboards/xd75/keymaps/germanized/config.h b/keyboards/xd75/keymaps/germanized/config.h deleted file mode 100644 index 65ab6a0dcba4..000000000000 --- a/keyboards/xd75/keymaps/germanized/config.h +++ /dev/null @@ -1,117 +0,0 @@ -/* Copyright 2018 Kolja Brauns - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -// place overrides here - -//Tap-Toggle -#define TAPPING_TOGGLE 3 - -//Tap Dancing -#define TAPPING_TERM 200 - -// normal characters -#define DE_Z KC_Y -#define DE_Y KC_Z - -#define DE_A KC_A -#define DE_B KC_B -#define DE_C KC_C -#define DE_D KC_D -#define DE_E KC_E -#define DE_F KC_F -#define DE_G KC_G -#define DE_H KC_H -#define DE_I KC_I -#define DE_J KC_J -#define DE_K KC_K -#define DE_L KC_L -#define DE_M KC_M -#define DE_N KC_N -#define DE_O KC_O -#define DE_P KC_P -#define DE_Q KC_Q -#define DE_R KC_R -#define DE_S KC_S -#define DE_T KC_T -#define DE_U KC_U -#define DE_V KC_V -#define DE_W KC_W -#define DE_X KC_X - -#define DE_0 KC_0 -#define DE_1 KC_1 -#define DE_2 KC_2 -#define DE_3 KC_3 -#define DE_4 KC_4 -#define DE_5 KC_5 -#define DE_6 KC_6 -#define DE_7 KC_7 -#define DE_8 KC_8 -#define DE_9 KC_9 - -#define DE_DOT KC_DOT -#define DE_COMM KC_COMM - -#define DE_SS KC_MINS -#define DE_AE KC_QUOT -#define DE_UE KC_LBRC -#define DE_OE KC_SCLN - -#define DE_CIRC KC_GRAVE // accent circumflex ^ and ring ° -#define DE_ACUT KC_EQL // accent acute ´ and grave ` -#define DE_PLUS KC_RBRC // + and * and ~ -#define DE_HASH KC_BSLS // # and ' -#define DE_LESS KC_NUBS // < and > and | -#define DE_MINS KC_SLSH // - and _ - -// shifted characters -#define DE_RING LSFT(DE_CIRC) // ° -#define DE_EXLM LSFT(KC_1) // ! -#define DE_DQOT LSFT(KC_2) // " -#define DE_PARA LSFT(KC_3) // § -#define DE_DLR LSFT(KC_4) // $ -#define DE_PERC LSFT(KC_5) // % -#define DE_AMPR LSFT(KC_6) // & -#define DE_SLSH LSFT(KC_7) // / -#define DE_LPRN LSFT(KC_8) // ( -#define DE_RPRN LSFT(KC_9) // ) -#define DE_EQL LSFT(KC_0) // = -#define DE_QST LSFT(DE_SS) // ? -#define DE_GRV LSFT(DE_ACUT) // ` -#define DE_ASTR LSFT(DE_PLUS) // * -#define DE_QUOT LSFT(DE_HASH) // ' -#define DE_MORE LSFT(DE_LESS) // > -#define DE_COLN LSFT(KC_DOT) // : -#define DE_SCLN LSFT(KC_COMM) // ; -#define DE_UNDS LSFT(DE_MINS) // _ - -// Alt Gr-ed characters -#define DE_SQ2 ALGR(KC_2) // ² -#define DE_SQ3 ALGR(KC_3) // ³ -#define DE_LCBR ALGR(KC_7) // { -#define DE_LBRC ALGR(KC_8) // [ -#define DE_RBRC ALGR(KC_9) // ] -#define DE_RCBR ALGR(KC_0) // } -#define DE_BSLS ALGR(DE_SS) // backslash -#define DE_AT ALGR(KC_Q) // @ -#define DE_EURO ALGR(KC_E) // € -#define DE_TILD ALGR(DE_PLUS) // ~ -#define DE_PIPE ALGR(DE_LESS) // | - -// Launchy -#define ALT_SPC LALT(KC_SPC) diff --git a/keyboards/xd75/keymaps/germanized/keymap.c b/keyboards/xd75/keymaps/germanized/keymap.c deleted file mode 100644 index 77346d1865f2..000000000000 --- a/keyboards/xd75/keymaps/germanized/keymap.c +++ /dev/null @@ -1,86 +0,0 @@ -/* Copyright 2017 Kolja Brauns -*/ -#include QMK_KEYBOARD_H - -#ifndef KEYMAP_GERMAN -#define KEYMAP_GERMAN - -#include "keymap.h" - -#endif - -//Tap Dance Declarations -enum { - TD_ESC_RUPT = 0 -}; - -enum { - TD_TAB = 1 -}; - -//Tap Dance Definitions -qk_tap_dance_action_t tap_dance_actions[] = { - //Tap once for Esc, twice Ctrl+Alt+Del - [TD_ESC_RUPT] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, LALT(LCTL(KC_DEL))), - [TD_TAB] = ACTION_TAP_DANCE_DOUBLE(KC_LCTL, LGUI(KC_TAB)) -// Other declarations would go here, separated by commas, if you have them -}; - -//In Layer declaration, add tap dance item in place of a key code - - -// Layer shorthand -#define _QWZ 0 -#define _FNC 1 - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - - /* QWZ - * .-----------------------------------------------------------------------------------------------------------------------. - * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | ß | ´ | BckSpc| Esc | - * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| - * | Tab | Q | W | E | R | T | Z | U | I | O | P | Ü | + | | PgUp | - * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| Enter |-------| - * | Ctrl/ | A | S | D | F | G | H | J | K | L | Ö | Ä | # | | PgDn | - * | GUITab| | | | | | | | | | | | | | | - * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| - * | LShift| Y | X | C | V | B | N | M | , | . | - | ^ | Home/ | Up | End | - * | | | | | | | | | | | | | RShift| | | - * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| - * | LCtrl | LAlt | MO(1)/| Space | Backspace | MO(1)/|AltGr/ | Win | < | Del | Left | Down | Right | - * | | | Enter | | | TO(1) |Pause | | | | | | | - * °-----------------------------------------------------------------------------------------------------------------------° - */ - - [_QWZ] = LAYOUT_ortho_5x15( - TD(TD_ESC_RUPT), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, DE_SS, DE_ACUT, KC_BSPC, KC_ESC, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, DE_Z, KC_U, KC_I, KC_O, KC_P, DE_UE, DE_PLUS, KC_NO, KC_PGUP, - TD(TD_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, DE_OE, DE_AE, DE_HASH, KC_ENT, KC_PGDN, - KC_LSFT, DE_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, DE_MINS, DE_CIRC, MT(MOD_RSFT, KC_HOME), KC_UP, KC_END, - KC_LCTL, KC_LALT, LT(1, KC_ENT), KC_SPC, KC_NO, KC_BSPC, KC_NO, TT(1), MT(MOD_RALT, KC_PAUS), KC_RGUI, DE_LESS, KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT - ), - - /* FNC - * .-----------------------------------------------------------------------------------------------------------------------. - * | Reset | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | _____ | _____ | - * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| - * | _____ | _____ | _____ |Bright+| _____ | _____ | _____ | _____ | _____ | Up | PrtSc | _____ | _____ | _____ | _____ | - * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| - * | _____ | _____ | _____ |RGB Tog|RGB Mod| _____ | _____ | _____ | Left | Down | Right | _____ | _____ | Play | _____ | - * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| - * | CpsLck| _____ | _____ |Bright-| _____ | _____ | _____ | _____ | _____ | _____ | _____ | _____ | _____ | VolUp | Mute | - * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| - * | TO(0) | _____ | _____ | _____ | _____ | _____ | _____ | _____ | _____ | _____ | _____ | _____ | Prev | VolDn | Next | - * °-----------------------------------------------------------------------------------------------------------------------° -*/ - [_FNC] = LAYOUT_ortho_5x15( - RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_PSCR, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS, - KC_CAPS, KC_TRNS, KC_TRNS, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MUTE, - TO(0), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT - ) - -}; - diff --git a/keyboards/xd75/keymaps/germanized/rules.mk b/keyboards/xd75/keymaps/germanized/rules.mk deleted file mode 100644 index ab81a5360980..000000000000 --- a/keyboards/xd75/keymaps/germanized/rules.mk +++ /dev/null @@ -1,35 +0,0 @@ -# Copyright 2013 Jun Wako -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - - -# QMK Build Options -# change to "no" to disable the options, or define them in the Makefile in -# the appropriate keymap folder that will get included automatically -# -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = no # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) -COMMAND_ENABLE = yes # 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 -MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config) -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -TAP_DANCE_ENABLE = yes # Enable Tap Dancing - diff --git a/keyboards/xd75/keymaps/markus/keymap.c b/keyboards/xd75/keymaps/markus/keymap.c deleted file mode 100644 index ab818318e76c..000000000000 --- a/keyboards/xd75/keymaps/markus/keymap.c +++ /dev/null @@ -1,215 +0,0 @@ -/* Copyright 2019 Markus Weimar - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include QMK_KEYBOARD_H -#include "keymap_german.h" - -#define ________ KC_TRNS -#define ___xx___ KC_NO - -enum my_layers { - _QWZ, - _QWY, - _GAM, - _FN1, - _FN2, - _FN3, -}; - -enum my_keycodes { - QWERTZ = SAFE_RANGE, - QWERTY, - GAMING, - FN1, - FN2, - FN3 -}; - -enum my_ucis { - UNI_LNX, - UNI_MAC, - UNI_WIN, -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -/* QWERTZ - * .--------------------------------------------------------------------------------------------------------------------------------------. - * | 1 ! | 2 " | 3 § | 4 $ | 5 % | 6 & | Mute | Vol- | Vol+ | 7 / | 8 ( | 9 ) | 0 = | ẞ ? | Ü | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | Esc | Q | W | E | R | T | Home | Play | End | Z | U | I | O | P | Ä | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | LShift | A | S | D | F | G | Pg Up | Up | Pg Dn | H | J | K | L | Ö | RShift | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | LCtrl | Y | X | C | V | B | Left | Down | Right | N | M | , ; | . : | - _ | RCtrl | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | Caps | Fn3 | LGUI | LAlt | Fn2 | Fn1 | Tab | Del | Enter | Space | Bksp | LAlt | LGUI | Fn3 | Ins | - * '--------------------------------------------------------------------------------------------------------------------------------------' - */ -[_QWZ] = LAYOUT_ortho_5x15( -DE_1, DE_2, DE_3, DE_4, DE_5, DE_6, KC_MUTE, KC_VOLD, KC_VOLU, DE_7, DE_8, DE_9, DE_0, DE_SS, DE_UE, -KC_ESC, DE_Q, DE_W, DE_E, DE_R, DE_T, KC_HOME, KC_MPLY, KC_END, DE_Z, DE_U, DE_I, DE_O, DE_P, DE_AE, -KC_LSFT, DE_A, DE_S, DE_D, DE_F, DE_G, KC_PGUP, KC_UP, KC_PGDN, DE_H, DE_J, DE_K, DE_L, DE_OE, KC_RSFT, -KC_LCTL, DE_Y, DE_X, DE_C, DE_V, DE_B, KC_LEFT, KC_DOWN, KC_RIGHT, DE_N, DE_M, DE_COMM, DE_DOT, DE_MINS, KC_RCTL, -KC_CAPS, MO(_FN3), KC_LGUI, KC_LALT, MO(_FN2), MO(_FN1), KC_TAB, KC_DEL, KC_ENT, KC_SPC, KC_BSPC, KC_LALT, KC_LGUI, MO(_FN3), KC_INS -), - -/* QWERTY - * .--------------------------------------------------------------------------------------------------------------------------------------. - * | | | | | | | | | | | | | | | | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | | | | | | | | | Y | | | | | | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | | | | | | | | | | | | | | | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | Z | | | | | | | | | | | | | | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | | | | | | | | | | | | | | | - * '--------------------------------------------------------------------------------------------------------------------------------------' - */ -[_QWY] = LAYOUT_ortho_5x15( -DE_1, DE_2, DE_3, DE_4, DE_5, DE_6, KC_MUTE, KC_VOLD, KC_VOLU, DE_7, DE_8, DE_9, DE_0, DE_SS, DE_UE, -KC_ESC, DE_Q, DE_W, DE_E, DE_R, DE_T, KC_HOME, KC_MPLY, KC_END, DE_Y, DE_U, DE_I, DE_O, DE_P, DE_AE, -KC_LSFT, DE_A, DE_S, DE_D, DE_F, DE_G, KC_PGUP, KC_UP, KC_PGDN, DE_H, DE_J, DE_K, DE_L, DE_OE, KC_RSFT, -KC_LCTL, DE_Z, DE_X, DE_C, DE_V, DE_B, KC_LEFT, KC_DOWN, KC_RIGHT, DE_N, DE_M, DE_COMM, DE_DOT, DE_MINS, KC_RCTL, -KC_CAPS, MO(_FN3), KC_LGUI, KC_LALT, MO(_FN2), MO(_FN1), KC_TAB, KC_DEL, KC_ENT, KC_SPC, KC_BSPC, KC_LALT, KC_LGUI, MO(_FN3), KC_INS -), - -/* GAMING - * .--------------------------------------------------------------------------------------------------------------------------------------. - * | | | | | | | | | | | | | | | | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | | | | | | | | | Y | | | | | | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | | | | | | | | | | | | | | | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | Z | | | | | | | | | | | | | | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | Fn2 | | | | Space | | | | | | | | | | | - * '--------------------------------------------------------------------------------------------------------------------------------------' - */ -[_GAM] = LAYOUT_ortho_5x15( -DE_1, DE_2, DE_3, DE_4, DE_5, DE_6, KC_MUTE, KC_VOLD, KC_VOLU, DE_7, DE_8, DE_9, DE_0, DE_SS, DE_UE, -KC_ESC, DE_Q, DE_W, DE_E, DE_R, DE_T, KC_HOME, KC_MPLY, KC_END, DE_Y, DE_U, DE_I, DE_O, DE_P, DE_AE, -KC_LSFT, DE_A, DE_S, DE_D, DE_F, DE_G, KC_PGUP, KC_UP, KC_PGDN, DE_H, DE_J, DE_K, DE_L, DE_OE, KC_RSFT, -KC_LCTL, DE_Z, DE_X, DE_C, DE_V, DE_B, KC_LEFT, KC_DOWN, KC_RIGHT, DE_N, DE_M, DE_COMM, DE_DOT, DE_MINS, KC_RCTL, -MO(_FN2), MO(_FN3), KC_LGUI, KC_LALT, KC_SPC, MO(_FN1), KC_TAB, KC_DEL, KC_ENT, KC_SPC, KC_BSPC, KC_LALT, KC_LGUI, MO(_FN3), KC_INS -), - -/* FN1 - * .--------------------------------------------------------------------------------------------------------------------------------------. - * | F1 | F2 | F3 | F4 | F5 | F6 | Prev | Play | Next | F7 | F8 | F9 | F10 | F11 | F12 | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | @ | ~ | € | ´ | ` | | | | \ | { | } | + | * | | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | " | ' | ‚ | ‘ | ’ | | | | | | [ | ] | ! | ? | | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | ° | ^ | „ | “ | ” | | | | # | < | > | … | – EN | | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | | | | | | | | | | | | | | | - * '--------------------------------------------------------------------------------------------------------------------------------------' - */ -[_FN1] = LAYOUT_ortho_5x15( -KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MPRV, KC_MPLY, KC_MNXT, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, -________, DE_AT, DE_TILD, DE_EURO, DE_ACUT, DE_GRV, ________, ___xx___, ________, DE_BSLS, DE_LCBR, DE_RCBR, DE_PLUS, DE_ASTR, ___xx___, -________, DE_DQOT, DE_QUOT, UC(L'‚'), UC(L'‘'), UC(L'’'), ________, ________, ________, DE_PIPE, DE_LBRC, DE_RBRC, DE_EXLM, DE_QST, ________, -________, DE_RING, DE_CIRC, UC(L'„'), UC(L'“'), UC(L'”'), ________, ________, ________, DE_HASH, DE_LESS, DE_MORE, UC(L'…'), UC(L'–'), ________, -___xx___, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________ -), - -/* FN2 - * .--------------------------------------------------------------------------------------------------------------------------------------. - * | | | | | % | ( | ) | P/ | P* | P- | Print | Scroll | Pause | ẞ | − MNS | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | | Mute | Vol- | Vol+ | Bspc | P7 | P8 | P9 | P+ | WH_U | MS_U | WH_D | × | ÷ | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | App | ACL2 | ACL1 | ACL0 | Space | P4 | P5 | P6 | WH_L | MS_L | MS_D | MS_R | WH_R | | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | | Prev | Play | Next | Tab | P1 | P2 | P3 | PEnter | BTN1 | BTN2 | BTN3 | — EM | | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | Fn2 | | | | | PEnter | P0 | . : | P, | BTN1 | BTN2 | BTN3 | | | | - * '--------------------------------------------------------------------------------------------------------------------------------------' - */ -[_FN2] = LAYOUT_ortho_5x15( -___xx___, ___xx___, ___xx___, ___xx___, DE_PERC, DE_LPRN, DE_RPRN, KC_PSLS, KC_PAST, KC_PMNS, KC_PSCR, KC_LSCR, KC_PAUS, UC(L'ẞ'), UC(L'−'), -________, ___xx___, KC_MUTE, KC_VOLD, KC_VOLU, KC_BSPC, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_WH_U, KC_MS_U, KC_WH_D, UC(L'×'), UC(L'÷'), -________, KC_APP, KC_ACL2, KC_ACL1, KC_ACL0, KC_SPC, KC_P4, KC_P5, KC_P6, KC_WH_L, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_R, ________, -________, ___xx___, KC_MPRV, KC_MPLY, KC_MNXT, KC_TAB, KC_P1, KC_P2, KC_P3, KC_PENT, KC_BTN1, KC_BTN2, KC_BTN3, UC(L'—'), ________, -MO(_FN2), ________, ________, ________, ________, KC_PENT, KC_P0, DE_DOT, KC_PDOT, KC_BTN1, KC_BTN2, KC_BTN3, ________, ________, ________ -), - -/* FN3 - * .--------------------------------------------------------------------------------------------------------------------------------------. - * | F13 | F14 | F15 | F16 | F17 | F18 | U LNX | U WIN | U MAC | F19 | F20 | F21 | F22 | F23 | F24 | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | QWERTZ | QWERTY | GAMING | | | L TOG | L MP | L MOD | | Pg Up | Up | Pg Dn | | | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | | | › | ‹ | | L HUI | L SAI | L VAI | Home | Left | Down | Right | End | | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | | | » | « | | L HUD | L SAD | L VAD | NumSp | ThinSp | NaNbSp | NbSp | NbHyph | | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | | | | | | | Reset | | | | | | | | - * '--------------------------------------------------------------------------------------------------------------------------------------' - */ -[_FN3] = LAYOUT_ortho_5x15( -KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, UNI_LNX, UNI_WIN, UNI_MAC, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, -________, QWERTZ, QWERTY, GAMING, ___xx___, ___xx___, RGB_TOG, RGB_M_P, RGB_MOD, ___xx___, KC_PGUP, KC_UP, KC_PGDN, ___xx___, ___xx___, -________, ___xx___, ___xx___, UC(L'›'), UC(L'‹'), ___xx___, RGB_HUI, RGB_SAI, RGB_VAI, KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT, KC_END, ________, -________, ___xx___, ___xx___, UC(L'»'), UC(L'«'), ___xx___, RGB_HUD, RGB_SAD, RGB_VAD, UC(L' '), UC(L' '), UC(L' '), UC(L' '), UC(L'‑'), ________, -___xx___, ________, ________, ________, ________, ________, ________, RESET, ________, ________, ________, ________, ________, ________, ________ -) - -}; - -void matrix_init_user(){ - set_unicode_input_mode(UC_LNX); -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch(keycode) { - case QWERTZ: - if (record->event.pressed) { - set_single_persistent_default_layer(_QWZ); - } - return false; - break; - case QWERTY: - if (record->event.pressed) { - set_single_persistent_default_layer(_QWY); - } - return false; - break; - case GAMING: - if (record->event.pressed) { - set_single_persistent_default_layer(_GAM); - } - return false; - break; - case UNI_LNX: - set_unicode_input_mode(UC_LNX); - return false; - break; - case UNI_WIN: - set_unicode_input_mode(UC_WINC); - return false; - break; - case UNI_MAC: - set_unicode_input_mode(UC_OSX); - return false; - break; - } - return true; -} diff --git a/keyboards/xd75/keymaps/markus/rules.mk b/keyboards/xd75/keymaps/markus/rules.mk deleted file mode 100644 index 22befc53496a..000000000000 --- a/keyboards/xd75/keymaps/markus/rules.mk +++ /dev/null @@ -1,13 +0,0 @@ -BOOTMAGIC_ENABLE = no -MOUSEKEY_ENABLE = yes -EXTRAKEY_ENABLE = yes -CONSOLE_ENABLE = no -COMMAND_ENABLE = no -NKRO_ENABLE = yes -BACKLIGHT_ENABLE = no -MIDI_ENABLE = no -AUDIO_ENABLE = no -UNICODE_ENABLE = yes -BLUETOOTH_ENABLE = no -RGBLIGHT_ENABLE = yes -SLEEP_LED_ENABLE = no diff --git a/keyboards/xd75/keymaps/pitty/keymap.c b/keyboards/xd75/keymaps/pitty/keymap.c deleted file mode 100644 index 955ae59ed5b3..000000000000 --- a/keyboards/xd75/keymaps/pitty/keymap.c +++ /dev/null @@ -1,148 +0,0 @@ -/* Copyright 2017 Wunder - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include QMK_KEYBOARD_H -#include "keymap_hungarian.h" - -enum XD75_layers { - _QWERTY, - _GAME, - _LOWER, - _RAISE -}; - - -// Defines the keycodes used by our macros in process_record_user -enum custom_keycodes { - QWERTY = SAFE_RANGE, - GAME, - LOWER, - RAISE, -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - -/* Qwerty - * ,--------------------------------------------------------------------------------------------------------. - * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Ö | Ü | Ó | | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | TAB | Q | W | E | R | T | Z | U | I | O | P | Ő | Ú | | | - * |------+------+------+------+------+-------------+------+------+------+------+------+------+------+------| - * | Esc | A | S | D | F | G | H | J | K | L | É | Á | Ű | | | - * |------+------+------+------+------+------|------+------+------+------+------+------+------+------+------| - * | Shift| Y | X | C | V | B | N | M | , | . | - | Shift| | | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | Ctrl | GUI | ALt |Lower | Space | Enter| Bksp |AltGr | Raise| | | | | | - * `--------------------------------------------------------------------------------------------------------' - */ -[_QWERTY] = LAYOUT_ortho_5x15( \ - HU_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, HU_OE, HU_UE, HU_OO, KC_INS, KC_PGUP, \ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, HU_Z, KC_U, KC_I, KC_O, KC_P, HU_OEE, HU_UU, KC_DEL, KC_PGDN, \ - KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, HU_EE, HU_AA, HU_UEE, _______, KC_HOME, \ - MT(MOD_LSFT, KC_NUBS), HU_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, HU_COMM, HU_DOT, HU_MINS, KC_RSFT, HU_EQL, KC_UP, KC_END, \ - KC_LCTL, KC_LGUI, KC_LALT, TT(_LOWER), KC_SPC, _______, KC_ENT, KC_BSPC, KC_RALT, TT(_RAISE), _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT \ -), - - -/* Game - * ,--------------------------------------------------------------------------------------------------------. - * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Ö | Ü | Ó | | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | TAB | Q | W | E | R | T | Z | U | I | O | P | Ő | Ú | | | - * |------+------+------+------+------+-------------+------+------+------+------+------+------+------+------| - * | Esc | A | S | D | F | G | H | J | K | L | É | Á | Ű | | | - * |------+------+------+------+------+------|------+------+------+------+------+------+------+------+------| - * | Shift| Y | X | C | V | B | N | M | , | . | - | Shift| | | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | Ctrl | GUI | ALt |Raise | Space | Enter| Bksp |AltGr | Lower| | | | | | - * `--------------------------------------------------------------------------------------------------------' - */ -[_GAME] = LAYOUT_ortho_5x15( \ - HU_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, HU_OE, HU_UE, HU_OO, KC_INS, KC_PGUP, \ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, HU_Z, KC_U, KC_I, KC_O, KC_P, HU_OEE, HU_UU, KC_DEL, KC_PGDN, \ - KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, HU_EE, HU_AA, HU_UEE, _______, KC_HOME, \ - KC_LSFT, HU_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, HU_COMM, HU_DOT, HU_MINS, KC_RSFT, HU_EQL, KC_UP, KC_END, \ - KC_LCTL, KC_LGUI, KC_LALT, TT(_RAISE), KC_SPC, _______, KC_ENT, KC_BSPC, KC_RALT, TT(_LOWER), _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT \ -), - - -/* Lower - * ,--------------------------------------------------------------------------------------------------------. - * | | | | | | | | 7 | 8 | 9 | + | | | | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | Up | | | | | 4 | 5 | 6 | - | | | | | - * |------+------+------+------+------+-------------+------+------+------+------+------+------+------+------| - * | | Left | Down | Right| | | | 1 | 2 | 3 | * | | | | | - * |------+------+------+------+------+------|------+------+------+------+------+------+------+------+------| - * | | | |Lnxcpy|Lnxpst| | | 0 | | | / | = | | | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | Home |PageDn|PageUp| End | | | | - * `--------------------------------------------------------------------------------------------------------' - */ -[_LOWER] = LAYOUT_ortho_5x15( \ - _______, _______, _______, _______, _______, _______, _______, HU_7, HU_8, HU_9, HU_PLUS, _______, _______, _______, _______, \ - _______, _______, KC_UP, _______, _______, _______, _______, HU_4, HU_5, HU_6, HU_MINS, _______, _______, _______, _______, \ - _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, HU_1, HU_2, HU_3, HU_ASTR, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, HU_0, _______, _______, HU_SLSH, HU_EQL, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TO(_GAME), TO(_QWERTY), _______, _______, _______ \ -), - -/* Raise - * ,--------------------------------------------------------------------------------------------------------. - * | F12 | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | | | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | Up | | | | | | | | | | | | | - * |------+------+------+------+------+-------------+------+------+------+------+------+------+------+------| - * | | Left | Down | Right| | | | | | | | | | | | - * |------+------+------+------+------+------|------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | | | | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | Home |PageDn|PageUp| End | | | | - * `--------------------------------------------------------------------------------------------------------' - */ -[_RAISE] = LAYOUT_ortho_5x15( \ - _______, 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_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TO(_GAME), TO(_QWERTY), _______, _______, _______ \ -), - - - -}; - - - -layer_state_t layer_state_set_user(layer_state_t state) { - switch (get_highest_layer(state)) { - case _RAISE: - rgblight_setrgb (0xC3, 0xFF, 0xFF); - rgblight_mode(5); - break; - case _LOWER: - rgblight_setrgb (0xFF, 0xFF, 0xFF); - rgblight_mode(5); - break; - case _GAME: - rgblight_mode(8); - break; - default: // for any other layers, or the default layer - rgblight_mode(14); - break; - } - return state; -} diff --git a/keyboards/xd75/keymaps/revok75/rules.mk b/keyboards/xd75/keymaps/revok75/rules.mk deleted file mode 100644 index 21ba8f74b8c5..000000000000 --- a/keyboards/xd75/keymaps/revok75/rules.mk +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright 2013 Jun Wako -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -BOOTMAGIC_ENABLE = full -BACKLIGHT_ENABLE = yes -RGBLIGHT_ENABLE = yes diff --git a/keyboards/xd75/keymaps/scheiklp/readme.md b/keyboards/xd75/keymaps/scheiklp/readme.md deleted file mode 100644 index 58c65f0884db..000000000000 --- a/keyboards/xd75/keymaps/scheiklp/readme.md +++ /dev/null @@ -1,9 +0,0 @@ -# KOY Layout for the xd75 pcb board -Compile the layout -```bash -qmk compile -kb xd75 -km scheiklp -``` -and flash it to the board -```bash -qmk flash -kb xd75 -km scheiklp -``` diff --git a/keyboards/xd75/keymaps/scheiklp/rules.mk b/keyboards/xd75/keymaps/scheiklp/rules.mk deleted file mode 100644 index 6e07de471ace..000000000000 --- a/keyboards/xd75/keymaps/scheiklp/rules.mk +++ /dev/null @@ -1,6 +0,0 @@ -BOOTMAGIC_ENABLE = no -COMMAND_ENABLE = no -RGBLIGHT_ENABLE = no -DYNAMIC_MACRO_ENABLE = yes -AUTO_SHIFT_ENABLE = yes -KEY_LOCK_ENABLE = yes diff --git a/keyboards/xd75/keymaps/skewwhiffy/keymap.c b/keyboards/xd75/keymaps/skewwhiffy/keymap.c deleted file mode 100644 index ab0213862c97..000000000000 --- a/keyboards/xd75/keymaps/skewwhiffy/keymap.c +++ /dev/null @@ -1,233 +0,0 @@ -/* Copyright 2017 Kenny Hung - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include QMK_KEYBOARD_H -#include "keymap_uk.h" - -// Layer shorthand -enum Layers { - cm, // colemak - dv, // dvorak - qw, // qwerty - nbl, // numbers left - nbr, // numbers right - syl, // symbols left - syr, // symbols right - nal, // navigation left - nar // navigation right -}; - -// Layer buttons -#define _Z_SFT SFT_T(UK_Z) -#define _SCLSH SFT_T(UK_SCLN) -#define _SLSH SFT_T(UK_SLSH) - -#define _X_NB LT(nbl, UK_X) -#define _Q_NB LT(nbl, UK_Q) -#define _DOT_NB LT(nbr, UK_DOT) -#define _V_NB LT(nbr, UK_V) -#define __NBL LT(nbl, _______) -#define __NBR LT(nbr, _______) - -#define _C_SY LT(syl, UK_C) -#define _J_SY LT(syl, UK_J) -#define _W_SY LT(syr, UK_W) -#define _COM_SY LT(syr, UK_COMM) -#define __SYL LT(syl, _______) -#define __SYR LT(syr, _______) - -#define _V_NAL LT(nal, UK_V) -#define _K_NAL LT(nal, UK_K) -#define _M_NAR LT(nar, UK_M) -#define __NAL LT(nal, _______) -#define __NAR LT(nar, _______) - -// Custom hotkeys -#define _TERM LCTL(UK_QUOT) // Hotkey for terminal -#define _S_TAB S(UK_TAB) -#define _C_LEFT LCTL(UK_LEFT) -#define _C_RGHT LCTL(UK_RGHT) -#define _A_LEFT LALT(UK_LEFT) -#define _A_RGHT LALT(UK_RGHT) - -enum custom_keycodes { - IJ_OMN = SAFE_RANGE // IntelliJ Omnibox -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -/* Colemak - * .--------------------------------------------------------------------------------------------------------------------------------------. - * | | | | | | | | | | | | | | | | - * |--------------------------------------------------------------------------------------------------------------------------------------| - * | Q | W | F | P | G | | | | | | J | L | U | Y | ; | - * |--------------------------------------------------------------------------------------------------------------------------------------| - * | A | R | S | T | D | | | | | | H | N | E | I | O | - * |--------------------------------------------------------------------------------------------------------------------------------------| - * | Z | X | C | V | B | | | UP | | | K | M | , | . | / | - * | SHIFT | NUMBER | SYMBOL | NAV | | | | | | | | NAV | SYMBOL | FUNC | SHIFT | - * |--------------------------------------------------------------------------------------------------------------------------------------| - * | LSHIFT | LCTRL | LALT | LGUI | SPACE | ENT | LEFT | DOWN | RIGHT | DEL | BKSPC | RGUI | RALT | RCTRL | RSHIFT | - * .--------------------------------------------------------------------------------------------------------------------------------------. - */ - [cm] = LAYOUT_ortho_5x15( \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - UK_Q, UK_W, UK_F, UK_P, UK_G, _______, _______, _______, _______, _______, UK_J, UK_L, UK_U, UK_Y, UK_SCLN, \ - UK_A, UK_R, UK_S, UK_T, UK_D, _______, _______, _______, _______, _______, UK_H, UK_N, UK_E, UK_I, UK_O , \ - _Z_SFT, _X_NB, _C_SY, _V_NAL, UK_B, _______, _______, UK_UP, _______, _______, UK_K, _M_NAR, _COM_SY, _DOT_NB, _SLSH , \ - UK_LSFT, UK_LCTL, UK_LALT, UK_LGUI, UK_SPC, UK_ENT, UK_LEFT, UK_DOWN, UK_RGHT, UK_DEL, UK_BSPC, UK_RGUI, UK_RALT, UK_RCTL, UK_RSFT \ - ), - -/* Dvorak - * .--------------------------------------------------------------------------------------------------------------------------------------. - * | | | | | | | | | | | | | | | | - * |--------------------------------------------------------------------------------------------------------------------------------------| - * | ' | , | . | P | Y | | | | | | F | G | C | R | L | - * |--------------------------------------------------------------------------------------------------------------------------------------| - * | A | O | E | U | I | | | | | | D | H | T | N | S | - * |--------------------------------------------------------------------------------------------------------------------------------------| - * | ; | Q | J | K | X | | | | | | B | M | W | V | Z | - * | SHIFT | NUMBER | SYMBOL | NAV | | | | | | | | NAV | SYMBOL | FUNC | SHIFT | - * |--------------------------------------------------------------------------------------------------------------------------------------| - * | | | | | | | | | | | | | | | | - * |--------------------------------------------------------------------------------------------------------------------------------------| - */ - [dv] = LAYOUT_ortho_5x15( \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - UK_QUOT, UK_COMM, UK_DOT, UK_P, UK_Y, _______, _______, _______, _______, _______, UK_F, UK_G, UK_C, UK_R, UK_L , \ - UK_A, UK_O, UK_E, UK_U, UK_I, _______, _______, _______, _______, _______, UK_D, UK_H, UK_T, UK_N, UK_S , \ - _SCLSH, _Q_NB, _J_SY, _K_NAL, UK_X, _______, _______, _______, _______, _______, UK_B, _M_NAR, _W_SY, _V_NB, _Z_SFT , \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ - ), - -/* QWERTY _QW - * .--------------------------------------------------------------------------------------------------------------------------------------. - * | | | | | | | | | | | | | | | | - * |--------------------------------------------------------------------------------------------------------------------------------------| - * | Q | W | E | R | T | | | | | | Y | U | I | O | P | - * |--------------------------------------------------------------------------------------------------------------------------------------| - * | A | S | D | F | G | | | | | | H | J | K | L | ; | - * |--------------------------------------------------------------------------------------------------------------------------------------| - * | Z | X | C | V | B | | | | | | N | M | , | . | / | - * | SHIFT | NUMBER | SYMBOL | NAV | | | | | | | | NAV | SYMBOL | FUNC | SHIFT | - * |--------------------------------------------------------------------------------------------------------------------------------------| - * | | | | | | | | | | | | | | | | - * |--------------------------------------------------------------------------------------------------------------------------------------| - * | LSHIFT | LCTRL | LALT | LGUI | SPACE | ENT | | | | DEL | BKSPC | RGUI | RALT | RCTRL | RSHIFT | - * .--------------------------------------------------------------------------------------------------------------------------------------. - */ - [qw] = LAYOUT_ortho_5x15( \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - UK_Q, UK_W, UK_E, UK_R, UK_T, _______, _______, _______, _______, _______, UK_Y, UK_U, UK_I, UK_O, UK_P , \ - UK_A, UK_S, UK_D, UK_F, UK_G, _______, _______, _______, _______, _______, UK_H, UK_J, UK_K, UK_L, UK_SCLN, \ - _Z_SFT, _X_NB, _C_SY, _V_NAL, UK_B, _______, _______, _______, _______, _______, UK_N, _M_NAR, _COM_SY, _DOT_NB, _SLSH , \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ - ), - -/* Numbers _NB - * .--------------------------------------------------------------------------------------------------------------------------------------. - * | | | | | | | | | | | | | | | | - * |-----------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| - * | | F7 | F8 | F9 | F10 | | | | | | | 7 | 8 | 9 | | - * |-----------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | F4 | F5 | F6 | F11 | | | | | | | 4 | 5 | 6 | | - * |-----------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------| - * | | F1 | F2 | F3 | F12 | | | | | | 0 | 1 | 2 | 3 | . | - * |-----------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------+--------| - * | | | | | | | | | | | | | | | | - * '--------------------------------------------------------------------------------------------------------------------------------------' - */ - [nbl] = LAYOUT_ortho_5x15( \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, UK_F7, UK_F8, UK_F9, UK_F10, _______, _______, _______, _______, _______, _______, UK_7, UK_8, UK_9, _______, \ - _______, UK_F4, UK_F5, UK_F6, UK_F11, _______, _______, _______, _______, _______, _______, UK_4, UK_5, UK_6, _______, \ - _______, __NBL, UK_F2, UK_F3, UK_F12, _______, _______, _______, _______, _______, UK_0, UK_1, UK_2, UK_3, UK_DOT, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ - ), - [nbr] = LAYOUT_ortho_5x15( \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, UK_F7, UK_F8, UK_F9, UK_F10, _______, _______, _______, _______, _______, _______, UK_7, UK_8, UK_9, _______, \ - _______, UK_F4, UK_F5, UK_F6, UK_F11, _______, _______, _______, _______, _______, _______, UK_4, UK_5, UK_6, _______, \ - _______, UK_F1, UK_F2, UK_F3, UK_F12, _______, _______, _______, _______, _______, UK_0, UK_1, UK_2, __NBR, UK_DOT , \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ - ), - - /* Symbols _SY - * .--------------------------------------------------------------------------------------------------------------------------------------. - * | | | | | | | | | | | | | | | | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | ! | £ | _ | - | ~ | | | | | | \ | { | } | / | # | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | $ | % | + | = | | | | | | | " | ( | ) | ' | @ | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | ^ | & | * | | | | | | | | | < | [ | ] | > | ` | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | | | | | | | | | | | | | | | - * '--------------------------------------------------------------------------------------------------------------------------------------' - */ - [syl] = LAYOUT_ortho_5x15( \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - UK_EXLM, UK_PND, UK_UNDS, UK_MINS, UK_TILD, _______, _______, _______, _______, _______, UK_BSLS, UK_LCBR, UK_RCBR, UK_SLSH, UK_HASH, \ - UK_DLR, UK_PERC, UK_PLUS, UK_EQL, _______, _______, _______, _______, _______, _______, UK_DQUO, UK_LPRN, UK_RPRN, UK_QUOT, UK_AT , \ - UK_CIRC, UK_AMPR, __SYL, UK_PIPE, _______, _______, _______, _______, _______, _______, UK_LABK, UK_LBRC, UK_RBRC, UK_RABK, UK_GRV , \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ - ), - [syr] = LAYOUT_ortho_5x15( \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - UK_EXLM, UK_PND, UK_UNDS, UK_MINS, UK_TILD, _______, _______, _______, _______, _______, UK_BSLS, UK_LCBR, UK_RCBR, UK_SLSH, UK_HASH, \ - UK_DLR, UK_PERC, UK_PLUS, UK_EQL, _______, _______, _______, _______, _______, _______, UK_DQUO, UK_LPRN, UK_RPRN, UK_QUOT, UK_AT , \ - UK_CIRC, UK_AMPR, UK_ASTR, UK_PIPE, _______, _______, _______, _______, _______, _______, UK_LABK, UK_LBRC, __SYR, UK_RABK, UK_GRV , \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ - ), -/* - * Navigation _NA - * .--------------------------------------------------------------------------------------------------------------------------------------. - * | RESET | COLEMA | DVORAK | QWERTY | | RGB_TG | | | | | | | | | | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | Esc | Ctrl L | Up | Ctrl R | | RGB HD | RGB HI | | | | | PtSn | ScLk | Pause | | - * +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | Tab | Left | Down | Right | | RGB SD | RGB SI | | | | | Insert | Home | PgUp | Term | - * +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | ShTab | Alt L | Shift | Alt R | | RGB VD | RGB VI | | | | | ScLk | End | PgDn | | - * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | | | | | | RGB RMD| RGB MD | | | | | | | | | - * '--------------------------------------------------------------------------------------------------------------------------------------' - */ - [nal] = LAYOUT_ortho_5x15( \ - RESET, DF(cm), DF(dv), DF(qw), _______, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - UK_ESC, _C_LEFT, UK_UP , _C_RGHT, _______, RGB_HUD, RGB_HUI, _______, _______, _______, _______, UK_PSCR, UK_SLCK, UK_PAUS, _______, \ - UK_TAB, UK_LEFT, UK_DOWN, UK_RGHT, _______, RGB_SAD, RGB_SAI, _______, _______, _______, _______, UK_INS, UK_HOME, UK_PGUP, _TERM , \ - _S_TAB, _A_LEFT, IJ_OMN, __NAL, _______, RGB_VAD, RGB_VAI, _______, _______, _______, _______, UK_SLCK, UK_END, UK_PGDN, _______, \ - _______, _______, _______, _______, _______, RGB_RMOD,RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______ \ - ), - [nar] = LAYOUT_ortho_5x15( \ - RESET, DF(cm), DF(dv), DF(qw), _______, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - UK_ESC, _C_LEFT, UK_UP , _C_RGHT, _______, RGB_HUD, RGB_HUI, _______, _______, _______, _______, UK_PSCR, UK_SLCK, UK_PAUS, _______, \ - UK_TAB, UK_LEFT, UK_DOWN, UK_RGHT, _______, RGB_SAD, RGB_SAI, _______, _______, _______, _______, UK_INS, UK_HOME, UK_PGUP, _TERM , \ - _S_TAB, _A_LEFT, IJ_OMN, _A_RGHT, _______, RGB_VAD, RGB_VAI, _______, _______, _______, _______, __NAR, UK_END, UK_PGDN, _______, \ - _______, _______, _______, _______, _______, RGB_RMOD,RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______ \ - ) -}; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - if (record->event.pressed) { - switch(keycode) { - case IJ_OMN: - SEND_STRING(SS_TAP(X_LSHIFT)SS_TAP(X_LSHIFT)); - return false; - } - } - return true; -} diff --git a/keyboards/xd75/keymaps/tdl-jturner/keymap.c b/keyboards/xd75/keymaps/tdl-jturner/keymap.c deleted file mode 100644 index 0c51289b6d55..000000000000 --- a/keyboards/xd75/keymaps/tdl-jturner/keymap.c +++ /dev/null @@ -1,312 +0,0 @@ -/* Copyright 2018 Josh Turner (/u/tdl-jturner) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include QMK_KEYBOARD_H - -enum xd75_layers { - _QWERTY, - _COLEMAK, - _LYMD, - _LYFK, - _LYMED, - _LYNUM, - _LYNAV, - _LYMOS, - _LYSYS, - _LYLT -}; - -enum xd75_keycodes { - HELP = SAFE_RANGE, - KC_BSDEL, - KC_FBSLH, - KC_DOTQ, - KC_CPIPE, - COLEMAK, - QWERTY, - KC_LYDEF -}; - -//Tap Dance Declarations -enum { - TD_LOCK_SLEEP, - TD_ABK, - TD_BRC, - TD_CBR, -}; - -//Tap Dance Definitions -qk_tap_dance_action_t tap_dance_actions[] = { - //Tap once for Esc, twice for Caps Lock - [TD_LOCK_SLEEP] = ACTION_TAP_DANCE_DOUBLE(LGUI(KC_L), KC_SLEP), - [TD_ABK] = ACTION_TAP_DANCE_DOUBLE(KC_LABK,KC_RABK), - [TD_BRC] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC,KC_RBRC), - [TD_CBR] = ACTION_TAP_DANCE_DOUBLE(KC_LCBR,KC_RCBR) -// Other declarations would go here, separated by commas, if you have them -}; - -//remaps for pretty layouts -#define ________ KC_TRNS -#define ___XX___ KC_NO - - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - //QWERY - Base Layer - [_QWERTY] = LAYOUT_ortho_5x15( - KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 ,________ ,________,________, KC_6 , KC_7 , KC_8 , KC_9 , KC_0 ,KC_MINUS, - KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T ,________ ,________,________, KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_BSDEL, //Custom shift Codes. Backspace ^ Delete -LT(_LYMD,KC_ESC), KC_A , KC_S , KC_D , KC_F , KC_G ,________ ,________,________, KC_H , KC_J , KC_K , KC_L ,KC_SCLN ,KC_QUOT, - KC_LSPO, KC_Z , KC_X , KC_C , KC_V , KC_B ,________ ,________,________, KC_N , KC_M ,KC_CPIPE,KC_DOTQ ,KC_FBSLH,KC_RSPC, // Custom Shift Codes. ,^| .^? /^| - KC_MEH ,KC_LCTL ,KC_LGUI ,KC_LALT ,MO(_LYNUM), KC_SPC ,________ ,________,________, KC_ENT ,MO(_LYNAV),TD(TD_CBR) ,TD(TD_BRC),TD(TD_ABK),TD(TD_LOCK_SLEEP) - - ), - - //_COLEMAK - Colemak Layout - Identical to qwerty layer except for the layout changes - [_COLEMAK] = LAYOUT_ortho_5x15( - KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 ,________ ,________,________, KC_6 , KC_7 , KC_8 , KC_9 , KC_0 ,KC_MINUS, - KC_TAB , KC_Q , KC_W , KC_F , KC_P , KC_G ,________ ,________,________, KC_J , KC_L , KC_U , KC_Y ,KC_SCLN ,KC_BSDEL, //Custom shift Codes. Backspace ^ Delete -LT(_LYMD,KC_ESC), KC_A , KC_R , KC_S , KC_T , KC_D ,________ ,________,________, KC_H , KC_N , KC_E , KC_I , KC_O ,KC_QUOT, - KC_LSPO, KC_Z , KC_X , KC_C , KC_V , KC_B ,________ ,________,________, KC_K , KC_M ,KC_CPIPE,KC_DOTQ ,KC_FBSLH,KC_RSPC, // Custom Shift Codes. ,^| .^? /^| - KC_MEH ,KC_LCTL ,KC_LGUI ,KC_LALT ,MO(_LYNUM), KC_SPC ,________ ,________,________, KC_ENT ,MO(_LYNAV),TD(TD_CBR) ,TD(TD_BRC),TD(TD_ABK),TD(TD_LOCK_SLEEP) - - ), - - // Decision Layer - [_LYMD] = - LAYOUT_ortho_5x15( - ________,________ ,________ ,________ ,________,________,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___, - ________,MO(_LYFK) ,MO(_LYMED),________ ,________,________,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,________, - ________,MO(_LYNUM),MO(_LYNAV),________ ,________,________,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___, - ________,MO(_LYMOS),MO(_LYSYS),MO(_LYLT) ,________,________,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___, - ________,________ ,________ ,________ ,________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,___XX___ - ), - - //F Keys - [_LYFK] = - LAYOUT_ortho_5x15( - ________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___, - KC_LYDEF,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,KC_F7 ,KC_F8 ,KC_F9 ,KC_F12 ,________, - ________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,KC_F4 ,KC_F5 ,KC_F6 ,KC_F11 ,___XX___, - ________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,KC_F1 ,KC_F2 ,KC_F3 ,KC_F10 ,___XX___, - ________,________,________,________,________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,___XX___ - ), -//Media Keys -[_LYMED] = - LAYOUT_ortho_5x15( - ________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___, - KC_LYDEF,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,___XX___,KC_VOLU ,___XX___,___XX___,________, - ________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,KC_MPRV ,KC_MUTE ,KC_MNXT ,___XX___,___XX___, - ________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,___XX___,KC_VOLD ,___XX___,KC_MSTP ,___XX___, - ________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,KC_MPLY ,___XX___,___XX___,___XX___,___XX___ - ), -//Num Keys -[_LYNUM] = - LAYOUT_ortho_5x15( - ________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,KC_PEQL ,KC_PSLS ,KC_PAST ,KC_PMNS ,___XX___, - KC_LYDEF,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,KC_7 ,KC_8 ,KC_9 ,KC_MINUS,________, - ________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,KC_4 ,KC_5 ,KC_6 ,KC_PPLS ,KC_PSLS, - ________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,KC_1 ,KC_2 ,KC_3 ,KC_PENT ,KC_PAST, - ________,________,________,________,________,________,________,________,________,________,KC_0 ,KC_0 ,KC_PDOT ,KC_PEQL ,___XX___ - ), -//Navigation Keys -[_LYNAV] = - LAYOUT_ortho_5x15( - ________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___, - KC_LYDEF,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,KC_HOME ,KC_UP ,KC_PGUP ,KC_PSCR ,________, - ________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,KC_LEFT ,KC_F5 ,KC_RIGHT,KC_SLCK ,___XX___, - ________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,KC_END ,KC_DOWN ,KC_PGDN ,KC_PAUS ,___XX___, - ________,________,________,________,________,________,________,________,________,________,________,KC_INS ,KC_DEL ,___XX___,___XX___ - ), - //Mouse Keys - [_LYMOS] = - LAYOUT_ortho_5x15( - ________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___, - KC_LYDEF,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,___XX___,KC_MS_U ,KC_WH_U ,KC_ACL2 ,________, - _______,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,KC_MS_L ,KC_ACL0 ,KC_MS_R ,KC_ACL1 ,___XX___, - ________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,___XX___,KC_MS_D ,KC_WH_D ,KC_BTN2 ,___XX___, - ________,________,________,________,________,________,________,________,________,________,KC_BTN1 ,KC_BTN3 ,KC_BTN4 ,___XX___,___XX___ - ), - //Systen Keys - [_LYSYS] = - LAYOUT_ortho_5x15( - ________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___, - KC_LYDEF,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,________, - ________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,___XX___,QWERTY ,COLEMAK ,___XX___,RESET, - ________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___, - ________,________,________,________,________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,___XX___ - ), - -// Light Control -[_LYLT] = - LAYOUT_ortho_5x15( - ________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___, - KC_LYDEF,________,________,________,________,________,___XX___,___XX___,___XX___,RGB_HUD ,RGB_HUI ,RGB_SAD ,RGB_SAI ,RGB_VAD ,RGB_VAI, - ________,________,________,________,________,________,___XX___,___XX___,___XX___,RGB_TOG ,RGB_RMOD,RGB_MOD ,___XX___,___XX___,___XX___, - ________,________,________,________,________,________,___XX___,___XX___,___XX___,BL_TOGG ,BL_DEC ,BL_INC ,BL_BRTG ,___XX___,___XX___, - ________,________,________,________,________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,___XX___ - ) -}; - -//Define layer colors -#define rgblight_setrgb_user_base() rgblight_sethsv(325,255,255) -#define rgblight_setrgb_user_LYFK() rgblight_sethsv_red() -#define rgblight_setrgb_user_LYMED() rgblight_sethsv_blue() -#define rgblight_setrgb_user_LYNUM() rgblight_sethsv_purple() -#define rgblight_setrgb_user_LYNAV() rgblight_sethsv_cyan() -#define rgblight_setrgb_user_LYMOS() rgblight_sethsv_orange() -#define rgblight_setrgb_user_LYSYS() rgblight_sethsv_green() -#define rgblight_setrgb_user_LYLT() rgblight_sethsv_yellow() -#define rgblight_setrgb_user_LYMD() rgblight_sethsv_white() - -//initialize rgb -void matrix_init_user(void) { - rgblight_enable(); - rgblight_mode(1); - rgblight_setrgb_user_base(); -} - -//Set a color based on the layer -uint32_t layer_state_set_user(uint32_t state) { - switch(biton32(state)) { - case _LYFK: - rgblight_setrgb_user_LYFK(); - break; - case _LYMED: - rgblight_setrgb_user_LYMED(); - break; - case _LYNUM: - rgblight_setrgb_user_LYNUM(); - break; - case _LYNAV: - rgblight_setrgb_user_LYNAV(); - break; - case _LYMOS: - rgblight_setrgb_user_LYMOS(); - break; - case _LYSYS: - rgblight_setrgb_user_LYSYS(); - break; - case _LYLT: - rgblight_setrgb_user_LYLT(); - break; - case _LYMD: - rgblight_setrgb_user_LYMD(); - break; - default: - rgblight_setrgb_user_base(); - break; - } - return state; -} - - -//Const for shift -const uint8_t shift = MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT); - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - - switch(keycode) { - case KC_LYDEF: - layer_clear(); - return false; - break; - case QWERTY: - if (record->event.pressed) { - set_single_persistent_default_layer(_QWERTY); - } - return false; - break; - case COLEMAK: - if (record->event.pressed) { - set_single_persistent_default_layer(_COLEMAK); - } - return false; - break; - case KC_BSDEL: - if (record->event.pressed) { - if (keyboard_report->mods & shift) { - if (keyboard_report->mods & MOD_BIT(KC_LSFT)) { - unregister_code(KC_LSHIFT); - } - else { - unregister_code(KC_RSHIFT); - } - register_code(KC_DEL); - } - else { - register_code(KC_BSPC); - } - } - else { - unregister_code(KC_DEL); - unregister_code (KC_BSPC); - } - return false; - break; - case KC_FBSLH: - if (record->event.pressed) { - if (keyboard_report->mods & shift) { - if (keyboard_report->mods & MOD_BIT(KC_LSFT)) { - unregister_code(KC_LSHIFT); - } - else { - unregister_code(KC_RSHIFT); - } - register_code(KC_BSLASH); - } - else { - register_code(KC_SLSH); - } - } - else { - unregister_code(KC_BSLASH); - unregister_code (KC_SLSH); - } - return false; - break; - case KC_DOTQ: - if (record->event.pressed) { - if (keyboard_report->mods & shift) { - register_code(KC_SLSH); // shifted slash = ? - } - else { - register_code(KC_DOT); - } - } - else { - unregister_code(KC_SLSH); // shifted slash = ? - unregister_code (KC_DOT); - } - return false; - break; - case KC_CPIPE: - if (record->event.pressed) { - if (keyboard_report->mods & shift) { - register_code(KC_BSLS); - } - else { - register_code(KC_COMM); - } - } - else { - unregister_code(KC_BSLS); - unregister_code (KC_COMM); - } - return false; - break; - } - return true; -}; diff --git a/keyboards/xd75/keymaps/tdl-jturner/readme.md b/keyboards/xd75/keymaps/tdl-jturner/readme.md deleted file mode 100644 index 835ef09fb23e..000000000000 --- a/keyboards/xd75/keymaps/tdl-jturner/readme.md +++ /dev/null @@ -1,12 +0,0 @@ -/u/tdl-jturner - XD75 Layout -=== - -Keyboard Layout Editor: [Link](http://www.keyboard-layout-editor.com/#/gists/b2b23097ef70fd9170e266e4cbc06c02) - -Make Command: make xd75:tdl-jturner - -Notes: -* Based on Qwerty -* Tweaks for DBA & Programming including tap dance braces on lower right, custom shift codes, and F5 access on Nav layer -* Layers are all based on layer control on the left and the right is a 10 key pattern -* Layers include Functions, Media, Numpad, Navigation, Mouse, System, and Lighting diff --git a/keyboards/xd75/readme.md b/keyboards/xd75/readme.md deleted file mode 100644 index 65da5cc02a58..000000000000 --- a/keyboards/xd75/readme.md +++ /dev/null @@ -1,57 +0,0 @@ -# XD75 - -![XD75](https://cdn.shopify.com/s/files/1/2711/4238/products/HTB1MzOISXXXXXXgXpXXq6xXFXXXO_1024x1024.jpg) - -The XD75 is a 15x5 full-grid ortholinear keyboard manufactured by XIUDI. Available in two different versions: XD75Re with hot swap switch sockets and XD75Am with Alps+MX Stem support that needs soldering. - -This port of the QMK firmware is my first shot at using QMK, so if you see any features done wrong (or just plain missing), feel free to fix them and put in a pull request! - -* Keyboard Maintainer: [The QMK Community](https://github.com/qmk) -* Hardware Supported: XD75Re, XD75Am -* Hardware Availability: [KPrepublic](https://kprepublic.com/products/xd75re-xd75am-xd75-xiudi-60-custom-keyboard-pcb), [AliExpress](https://www.aliexpress.com/item/xd75re-Custom-Mechanical-Keyboard-75-keys-TKG-TOOLS-Underglow-RGB-PCB-GH60-60-programmed-gh60-kle/32818745981.html) - -Make example for this keyboard (after setting up your build environment): - - make xd75:default - -Flashing example for this keyboard: - - make xd75: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). - -## LED Control - -There are 3 individual LEDs that can be turned on and off. The functions are named according to how they're labeled on the PCB. - -TODO: it would be nice to have PWM support on these LEDs for fade-in/fade-out effects. - -```c -capslock_led_on(); -gp100_led_on(); -gp103_led_on(); - -bool led_update_user(led_t led_state) { - if (led_state.caps_lock) { - capslock_led_on(); - } else { - capslock_led_off(); - } - - if (some_custom_state) { - gp100_led_on(); - } else { - gp100_led_off(); - } - - return false; -} -``` - -For the curious: - -``` -CAPSLOCK_LED B2 -GP103_LED F4 -GP100_LED F7 -``` diff --git a/keyboards/xd75/rules.mk b/keyboards/xd75/rules.mk deleted file mode 100644 index 97d0f379fb93..000000000000 --- a/keyboards/xd75/rules.mk +++ /dev/null @@ -1,24 +0,0 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -BOOTLOADER = atmel-dfu - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth -AUDIO_ENABLE = no # Audio output - -LAYOUTS = ortho_5x15 diff --git a/keyboards/xd84/config.h b/keyboards/xd84/config.h deleted file mode 100644 index 5253848e809f..000000000000 --- a/keyboards/xd84/config.h +++ /dev/null @@ -1,211 +0,0 @@ -/* 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 . - */ - -#pragma once - -#include "config_common.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x7844 // "XD" -#define PRODUCT_ID 0x8484 -#define DEVICE_VER 0x0001 -#define MANUFACTURER KPrepublic -#define PRODUCT XD84 - -/* key matrix size */ -#define MATRIX_ROWS 6 -#define MATRIX_COLS 15 - -/* - * 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 { D0, D5 } -//#define MATRIX_COL_PINS { F1, F0, B0 } -//#define UNUSED_PINS - -/* COL2ROW, ROW2COL */ -//#define DIODE_DIRECTION COL2ROW - -#define LED_CAPS_LOCK_PIN B6 -#define LED_PIN_ON_STATE 0 - -#define BACKLIGHT_PIN B5 -#define BACKLIGHT_LEVELS 10 -#define BACKLIGHT_ON_STATE 0 -// #define BACKLIGHT_BREATHING - -#define RGB_DI_PIN C7 -#define RGBLED_NUM 7 -#define RGBLIGHT_ANIMATIONS -// #ifdef RGB_DI_PIN -// #define RGBLIGHT_HUE_STEP 8 -// #define RGBLIGHT_SAT_STEP 8 -// #define RGBLIGHT_VAL_STEP 8 -// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ -// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ -// /*== all animations enable ==*/ -// #define RGBLIGHT_ANIMATIONS -// /*== or choose animations ==*/ -// #define RGBLIGHT_EFFECT_BREATHING -// #define RGBLIGHT_EFFECT_RAINBOW_MOOD -// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL -// #define RGBLIGHT_EFFECT_SNAKE -// #define RGBLIGHT_EFFECT_KNIGHT -// #define RGBLIGHT_EFFECT_CHRISTMAS -// #define RGBLIGHT_EFFECT_STATIC_GRADIENT -// #define RGBLIGHT_EFFECT_RGB_TEST -// #define RGBLIGHT_EFFECT_ALTERNATING -// #endif - -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 5 - -/* define if matrix has ghost (lacks anti-ghosting diodes) */ -//#define MATRIX_HAS_GHOST - -/* number of backlight levels */ - -/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ -#define LOCKING_SUPPORT_ENABLE -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE - -/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. - * This is userful for the Windows task manager shortcut (ctrl+shift+esc). - */ -// #define GRAVE_ESC_CTRL_OVERRIDE - -/* - * Force NKRO - * - * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved - * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the - * makefile for this to work.) - * - * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) - * until the next keyboard reset. - * - * NKRO may prevent your keystrokes from being detected in the BIOS, but it is - * fully operational during normal computer usage. - * - * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) - * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by - * bootmagic, NKRO mode will always be enabled until it is toggled again during a - * power-up. - * - */ -//#define FORCE_NKRO - -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - -/* - * Feature disable options - * These options are also useful to firmware size reduction. - */ - -/* disable debug print */ -//#define NO_DEBUG - -/* disable print */ -//#define NO_PRINT - -/* disable action features */ -//#define NO_ACTION_LAYER -//#define NO_ACTION_TAPPING -//#define NO_ACTION_ONESHOT -//#define NO_ACTION_MACRO -//#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - -/* Bootmagic Lite key configuration */ -// #define BOOTMAGIC_LITE_ROW 0 -// #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/xd84/info.json b/keyboards/xd84/info.json deleted file mode 100644 index 3647da0e9a37..000000000000 --- a/keyboards/xd84/info.json +++ /dev/null @@ -1,188 +0,0 @@ -{ - "keyboard_name": "XD84", - "url": "", - "maintainer": "qmk", - "width": 16, - "height": 6, - "layouts": { - "LAYOUT_75_ansi": { - "key_count": 84, - "layout": [ - {"label":"Esc", "x":0, "y":0}, - {"label":"F1", "x":1, "y":0}, - {"label":"F2", "x":2, "y":0}, - {"label":"F3", "x":3, "y":0}, - {"label":"F4", "x":4, "y":0}, - {"label":"F5", "x":5, "y":0}, - {"label":"F6", "x":6, "y":0}, - {"label":"F7", "x":7, "y":0}, - {"label":"F8", "x":8, "y":0}, - {"label":"F9", "x":9, "y":0}, - {"label":"F10", "x":10, "y":0}, - {"label":"F11", "x":11, "y":0}, - {"label":"F12", "x":12, "y":0}, - {"label":"PrtSc", "x":13, "y":0}, - {"label":"Pause", "x":14, "y":0}, - {"label":"Delete", "x":15, "y":0}, - {"label":"~", "x":0, "y":1}, - {"label":"1", "x":1, "y":1}, - {"label":"2", "x":2, "y":1}, - {"label":"3", "x":3, "y":1}, - {"label":"4", "x":4, "y":1}, - {"label":"5", "x":5, "y":1}, - {"label":"6", "x":6, "y":1}, - {"label":"7", "x":7, "y":1}, - {"label":"8", "x":8, "y":1}, - {"label":"9", "x":9, "y":1}, - {"label":"0", "x":10, "y":1}, - {"label":"_", "x":11, "y":1}, - {"label":"+", "x":12, "y":1}, - {"label":"Backspace", "x":13, "y":1, "w":2}, - {"label":"Home", "x":15, "y":1}, - {"label":"Tab", "x":0, "y":2, "w":1.5}, - {"label":"Q", "x":1.5, "y":2}, - {"label":"W", "x":2.5, "y":2}, - {"label":"E", "x":3.5, "y":2}, - {"label":"R", "x":4.5, "y":2}, - {"label":"T", "x":5.5, "y":2}, - {"label":"Y", "x":6.5, "y":2}, - {"label":"U", "x":7.5, "y":2}, - {"label":"I", "x":8.5, "y":2}, - {"label":"O", "x":9.5, "y":2}, - {"label":"P", "x":10.5, "y":2}, - {"label":"{", "x":11.5, "y":2}, - {"label":"}", "x":12.5, "y":2}, - {"label":"|", "x":13.5, "y":2, "w":1.5}, - {"label":"Page Up", "x":15, "y":2}, - {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, - {"label":"A", "x":1.75, "y":3}, - {"label":"S", "x":2.75, "y":3}, - {"label":"D", "x":3.75, "y":3}, - {"label":"F", "x":4.75, "y":3}, - {"label":"G", "x":5.75, "y":3}, - {"label":"H", "x":6.75, "y":3}, - {"label":"J", "x":7.75, "y":3}, - {"label":"K", "x":8.75, "y":3}, - {"label":"L", "x":9.75, "y":3}, - {"label":":", "x":10.75, "y":3}, - {"label":"\"", "x":11.75, "y":3}, - {"label":"Enter", "x":12.75, "y":3, "w":2.25}, - {"label":"Page Down", "x":15, "y":3}, - {"label":"Shift", "x":0, "y":4, "w":2.25}, - {"label":"Z", "x":2.25, "y":4}, - {"label":"X", "x":3.25, "y":4}, - {"label":"C", "x":4.25, "y":4}, - {"label":"V", "x":5.25, "y":4}, - {"label":"B", "x":6.25, "y":4}, - {"label":"N", "x":7.25, "y":4}, - {"label":"M", "x":8.25, "y":4}, - {"label":"<", "x":9.25, "y":4}, - {"label":">", "x":10.25, "y":4}, - {"label":"?", "x":11.25, "y":4}, - {"label":"Shift", "x":12.25, "y":4, "w":1.75}, - {"label":"Up", "x":14, "y":4}, - {"label":"End", "x":15, "y":4}, - {"label":"Ctrl", "x":0, "y":5, "w":1.25}, - {"label":"Win", "x":1.25, "y":5, "w":1.25}, - {"label":"Alt", "x":2.5, "y":5, "w":1.25}, - {"label":"Space", "x":3.75, "y":5, "w":6.25}, - {"label":"Alt", "x":10, "y":5}, - {"label":"Fn", "x":11, "y":5}, - {"label":"Ctrl", "x":12, "y":5}, - {"label":"Left", "x":13, "y":5}, - {"label":"Down", "x":14, "y":5}, - {"label":"Right", "x":15, "y":5} - ] - }, - "LAYOUT_75_iso": { - "key_count": 85, - "layout": [ - {"label":"Esc", "x":0, "y":0}, - {"label":"F1", "x":1, "y":0}, - {"label":"F2", "x":2, "y":0}, - {"label":"F3", "x":3, "y":0}, - {"label":"F4", "x":4, "y":0}, - {"label":"F5", "x":5, "y":0}, - {"label":"F6", "x":6, "y":0}, - {"label":"F7", "x":7, "y":0}, - {"label":"F8", "x":8, "y":0}, - {"label":"F9", "x":9, "y":0}, - {"label":"F10", "x":10, "y":0}, - {"label":"F11", "x":11, "y":0}, - {"label":"F12", "x":12, "y":0}, - {"label":"PrtSc", "x":13, "y":0}, - {"label":"Pause", "x":14, "y":0}, - {"label":"Delete", "x":15, "y":0}, - {"label":"~", "x":0, "y":1}, - {"label":"1", "x":1, "y":1}, - {"label":"2", "x":2, "y":1}, - {"label":"3", "x":3, "y":1}, - {"label":"4", "x":4, "y":1}, - {"label":"5", "x":5, "y":1}, - {"label":"6", "x":6, "y":1}, - {"label":"7", "x":7, "y":1}, - {"label":"8", "x":8, "y":1}, - {"label":"9", "x":9, "y":1}, - {"label":"0", "x":10, "y":1}, - {"label":"_", "x":11, "y":1}, - {"label":"+", "x":12, "y":1}, - {"label":"Backspace", "x":13, "y":1, "w":2}, - {"label":"Home", "x":15, "y":1}, - {"label":"Tab", "x":0, "y":2, "w":1.5}, - {"label":"Q", "x":1.5, "y":2}, - {"label":"W", "x":2.5, "y":2}, - {"label":"E", "x":3.5, "y":2}, - {"label":"R", "x":4.5, "y":2}, - {"label":"T", "x":5.5, "y":2}, - {"label":"Y", "x":6.5, "y":2}, - {"label":"U", "x":7.5, "y":2}, - {"label":"I", "x":8.5, "y":2}, - {"label":"O", "x":9.5, "y":2}, - {"label":"P", "x":10.5, "y":2}, - {"label":"{", "x":11.5, "y":2}, - {"label":"}", "x":12.5, "y":2}, - {"label":"Page Up", "x":15, "y":2}, - {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, - {"label":"A", "x":1.75, "y":3}, - {"label":"S", "x":2.75, "y":3}, - {"label":"D", "x":3.75, "y":3}, - {"label":"F", "x":4.75, "y":3}, - {"label":"G", "x":5.75, "y":3}, - {"label":"H", "x":6.75, "y":3}, - {"label":"J", "x":7.75, "y":3}, - {"label":"K", "x":8.75, "y":3}, - {"label":"L", "x":9.75, "y":3}, - {"label":":", "x":10.75, "y":3}, - {"label":"@", "x":11.75, "y":3}, - {"label":"~", "x":12.75, "y":3}, - {"label":"Enter", "x":13.75, "y":2, "w":1.25, "h":2}, - {"label":"Page Down", "x":15, "y":3}, - {"label":"Shift", "x":0, "y":4, "w":1.25}, - {"label":"|", "x":1.25, "y":4}, - {"label":"Z", "x":2.25, "y":4}, - {"label":"X", "x":3.25, "y":4}, - {"label":"C", "x":4.25, "y":4}, - {"label":"V", "x":5.25, "y":4}, - {"label":"B", "x":6.25, "y":4}, - {"label":"N", "x":7.25, "y":4}, - {"label":"M", "x":8.25, "y":4}, - {"label":"<", "x":9.25, "y":4}, - {"label":">", "x":10.25, "y":4}, - {"label":"?", "x":11.25, "y":4}, - {"label":"Shift", "x":12.25, "y":4, "w":1.75}, - {"label":"Up", "x":14, "y":4}, - {"label":"End", "x":15, "y":4}, - {"label":"Ctrl", "x":0, "y":5, "w":1.25}, - {"label":"Win", "x":1.25, "y":5, "w":1.25}, - {"label":"Alt", "x":2.5, "y":5, "w":1.25}, - {"label":"Space", "x":3.75, "y":5, "w":6.25}, - {"label":"Alt", "x":10, "y":5}, - {"label":"Fn", "x":11, "y":5}, - {"label":"Ctrl", "x":12, "y":5}, - {"label":"Left", "x":13, "y":5}, - {"label":"Down", "x":14, "y":5}, - {"label":"Right", "x":15, "y":5} - ] - } - } -} diff --git a/keyboards/xd84/readme.md b/keyboards/xd84/readme.md deleted file mode 100644 index b8d9c5dbb807..000000000000 --- a/keyboards/xd84/readme.md +++ /dev/null @@ -1,23 +0,0 @@ -# XD84 - -![XD84](https://cdn.shopify.com/s/files/1/2711/4238/products/HTB17eeJSXXXXXbIXFXXq6xXFXXXp_1024x1024.jpg?v=1515505994) - -Keyboard with 84 Keys & RGB LED Underglow -- Designed by Xiudi -- Up to 87 keys - - iso and ansi support -- Uses Kimera core - -Keyboard Maintainer: QMK Community -Hardware Supported: XD84 -Hardware Availability: [KPrepublic](https://kprepublic.com/products/xd84-xiudi-70-custom-keyboard-pcb) - -Make example for this keyboard (after setting up your build environment): - - make xd84:default - -Install examples: - - make xd84: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/xd84/rules.mk b/keyboards/xd84/rules.mk deleted file mode 100644 index 3ec65b8ec2fe..000000000000 --- a/keyboards/xd84/rules.mk +++ /dev/null @@ -1,41 +0,0 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = atmel-dfu - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration -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 = no # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 -LTO_ENABLE = yes - -# custom matrix setup -CUSTOM_MATRIX = lite - -VPATH += drivers/gpio -SRC += pca9555.c matrix.c -QUANTUM_LIB_SRC += i2c_master.c - -LAYOUTS = 75_ansi 75_iso diff --git a/keyboards/xd84pro/info.json b/keyboards/xd84pro/info.json deleted file mode 100644 index 807f73181f7d..000000000000 --- a/keyboards/xd84pro/info.json +++ /dev/null @@ -1,277 +0,0 @@ -{ - "keyboard_name": "XD84 Pro", - "url": "", - "maintainer": "qmk", - "width": 16, - "height": 6, - "layouts": { - "LAYOUT_all": { - "layout": [ - {"label":"Esc", "x":0, "y":0}, - {"label":"F1", "x":1, "y":0}, - {"label":"F2", "x":2, "y":0}, - {"label":"F3", "x":3, "y":0}, - {"label":"F4", "x":4, "y":0}, - {"label":"F5", "x":5, "y":0}, - {"label":"F6", "x":6, "y":0}, - {"label":"F7", "x":7, "y":0}, - {"label":"F8", "x":8, "y":0}, - {"label":"F9", "x":9, "y":0}, - {"label":"F10", "x":10, "y":0}, - {"label":"F11", "x":11, "y":0}, - {"label":"F12", "x":12, "y":0}, - {"label":"PrtSc", "x":13, "y":0}, - {"label":"Pause", "x":14, "y":0}, - {"label":"Delete", "x":15, "y":0}, - {"label":"~", "x":0, "y":1}, - {"label":"1", "x":1, "y":1}, - {"label":"2", "x":2, "y":1}, - {"label":"3", "x":3, "y":1}, - {"label":"4", "x":4, "y":1}, - {"label":"5", "x":5, "y":1}, - {"label":"6", "x":6, "y":1}, - {"label":"7", "x":7, "y":1}, - {"label":"8", "x":8, "y":1}, - {"label":"9", "x":9, "y":1}, - {"label":"0", "x":10, "y":1}, - {"label":"_", "x":11, "y":1}, - {"label":"+", "x":12, "y":1}, - {"label":"Backspace", "x":13, "y":1}, - {"label":"Backspace", "x":14, "y":1}, - {"label":"Home", "x":15, "y":1}, - {"label":"Tab", "x":0, "y":2, "w":1.5}, - {"label":"Q", "x":1.5, "y":2}, - {"label":"W", "x":2.5, "y":2}, - {"label":"E", "x":3.5, "y":2}, - {"label":"R", "x":4.5, "y":2}, - {"label":"T", "x":5.5, "y":2}, - {"label":"Y", "x":6.5, "y":2}, - {"label":"U", "x":7.5, "y":2}, - {"label":"I", "x":8.5, "y":2}, - {"label":"O", "x":9.5, "y":2}, - {"label":"P", "x":10.5, "y":2}, - {"label":"{", "x":11.5, "y":2}, - {"label":"}", "x":12.5, "y":2}, - {"label":"|", "x":13.5, "y":2, "w":1.5}, - {"label":"Page Up", "x":15, "y":2}, - {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, - {"label":"A", "x":1.75, "y":3}, - {"label":"S", "x":2.75, "y":3}, - {"label":"D", "x":3.75, "y":3}, - {"label":"F", "x":4.75, "y":3}, - {"label":"G", "x":5.75, "y":3}, - {"label":"H", "x":6.75, "y":3}, - {"label":"J", "x":7.75, "y":3}, - {"label":"K", "x":8.75, "y":3}, - {"label":"L", "x":9.75, "y":3}, - {"label":":", "x":10.75, "y":3}, - {"label":"\"", "x":11.75, "y":3}, - {"label":"\\", "x":12.75, "y":3}, - {"label":"Enter", "x":13.75, "y":3, "w":1.25}, - {"label":"Page Down", "x":15, "y":3}, - {"label":"Shift", "x":0, "y":4, "w":1.25}, - {"label":"Shift", "x":1.25, "y":4}, - {"label":"Z", "x":2.25, "y":4}, - {"label":"X", "x":3.25, "y":4}, - {"label":"C", "x":4.25, "y":4}, - {"label":"V", "x":5.25, "y":4}, - {"label":"B", "x":6.25, "y":4}, - {"label":"N", "x":7.25, "y":4}, - {"label":"M", "x":8.25, "y":4}, - {"label":"<", "x":9.25, "y":4}, - {"label":">", "x":10.25, "y":4}, - {"label":"?", "x":11.25, "y":4}, - {"label":"Shift", "x":12.25, "y":4, "w":1.75}, - {"label":"Up", "x":14, "y":4}, - {"label":"End", "x":15, "y":4}, - {"label":"Ctrl", "x":0, "y":5, "w":1.25}, - {"label":"Win", "x":1.25, "y":5, "w":1.25}, - {"label":"Alt", "x":2.5, "y":5, "w":1.25}, - {"label":"Space", "x":3.75, "y":5, "w":6.25}, - {"label":"Alt", "x":10, "y":5}, - {"label":"Fn", "x":11, "y":5}, - {"label":"Ctrl", "x":12, "y":5}, - {"label":"Left", "x":13, "y":5}, - {"label":"Down", "x":14, "y":5}, - {"label":"Right", "x":15, "y":5} - ] - }, - "LAYOUT_75_ansi": { - "layout": [ - {"label":"Esc", "x":0, "y":0}, - {"label":"F1", "x":1, "y":0}, - {"label":"F2", "x":2, "y":0}, - {"label":"F3", "x":3, "y":0}, - {"label":"F4", "x":4, "y":0}, - {"label":"F5", "x":5, "y":0}, - {"label":"F6", "x":6, "y":0}, - {"label":"F7", "x":7, "y":0}, - {"label":"F8", "x":8, "y":0}, - {"label":"F9", "x":9, "y":0}, - {"label":"F10", "x":10, "y":0}, - {"label":"F11", "x":11, "y":0}, - {"label":"F12", "x":12, "y":0}, - {"label":"PrtSc", "x":13, "y":0}, - {"label":"Pause", "x":14, "y":0}, - {"label":"Delete", "x":15, "y":0}, - {"label":"~", "x":0, "y":1}, - {"label":"1", "x":1, "y":1}, - {"label":"2", "x":2, "y":1}, - {"label":"3", "x":3, "y":1}, - {"label":"4", "x":4, "y":1}, - {"label":"5", "x":5, "y":1}, - {"label":"6", "x":6, "y":1}, - {"label":"7", "x":7, "y":1}, - {"label":"8", "x":8, "y":1}, - {"label":"9", "x":9, "y":1}, - {"label":"0", "x":10, "y":1}, - {"label":"_", "x":11, "y":1}, - {"label":"+", "x":12, "y":1}, - {"label":"Backspace", "x":13, "y":1, "w":2}, - {"label":"Home", "x":15, "y":1}, - {"label":"Tab", "x":0, "y":2, "w":1.5}, - {"label":"Q", "x":1.5, "y":2}, - {"label":"W", "x":2.5, "y":2}, - {"label":"E", "x":3.5, "y":2}, - {"label":"R", "x":4.5, "y":2}, - {"label":"T", "x":5.5, "y":2}, - {"label":"Y", "x":6.5, "y":2}, - {"label":"U", "x":7.5, "y":2}, - {"label":"I", "x":8.5, "y":2}, - {"label":"O", "x":9.5, "y":2}, - {"label":"P", "x":10.5, "y":2}, - {"label":"{", "x":11.5, "y":2}, - {"label":"}", "x":12.5, "y":2}, - {"label":"|", "x":13.5, "y":2, "w":1.5}, - {"label":"Page Up", "x":15, "y":2}, - {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, - {"label":"A", "x":1.75, "y":3}, - {"label":"S", "x":2.75, "y":3}, - {"label":"D", "x":3.75, "y":3}, - {"label":"F", "x":4.75, "y":3}, - {"label":"G", "x":5.75, "y":3}, - {"label":"H", "x":6.75, "y":3}, - {"label":"J", "x":7.75, "y":3}, - {"label":"K", "x":8.75, "y":3}, - {"label":"L", "x":9.75, "y":3}, - {"label":":", "x":10.75, "y":3}, - {"label":"\"", "x":11.75, "y":3}, - {"label":"Enter", "x":12.75, "y":3, "w":2.25}, - {"label":"Page Down", "x":15, "y":3}, - {"label":"Shift", "x":0, "y":4, "w":2.25}, - {"label":"Z", "x":2.25, "y":4}, - {"label":"X", "x":3.25, "y":4}, - {"label":"C", "x":4.25, "y":4}, - {"label":"V", "x":5.25, "y":4}, - {"label":"B", "x":6.25, "y":4}, - {"label":"N", "x":7.25, "y":4}, - {"label":"M", "x":8.25, "y":4}, - {"label":"<", "x":9.25, "y":4}, - {"label":">", "x":10.25, "y":4}, - {"label":"?", "x":11.25, "y":4}, - {"label":"Shift", "x":12.25, "y":4, "w":1.75}, - {"label":"Up", "x":14, "y":4}, - {"label":"End", "x":15, "y":4}, - {"label":"Ctrl", "x":0, "y":5, "w":1.25}, - {"label":"Win", "x":1.25, "y":5, "w":1.25}, - {"label":"Alt", "x":2.5, "y":5, "w":1.25}, - {"label":"Space", "x":3.75, "y":5, "w":6.25}, - {"label":"Alt", "x":10, "y":5}, - {"label":"Fn", "x":11, "y":5}, - {"label":"Ctrl", "x":12, "y":5}, - {"label":"Left", "x":13, "y":5}, - {"label":"Down", "x":14, "y":5}, - {"label":"Right", "x":15, "y":5} - ] - }, - "LAYOUT_75_iso": { - "layout": [ - {"label":"Esc", "x":0, "y":0}, - {"label":"F1", "x":1, "y":0}, - {"label":"F2", "x":2, "y":0}, - {"label":"F3", "x":3, "y":0}, - {"label":"F4", "x":4, "y":0}, - {"label":"F5", "x":5, "y":0}, - {"label":"F6", "x":6, "y":0}, - {"label":"F7", "x":7, "y":0}, - {"label":"F8", "x":8, "y":0}, - {"label":"F9", "x":9, "y":0}, - {"label":"F10", "x":10, "y":0}, - {"label":"F11", "x":11, "y":0}, - {"label":"F12", "x":12, "y":0}, - {"label":"PrtSc", "x":13, "y":0}, - {"label":"Pause", "x":14, "y":0}, - {"label":"Delete", "x":15, "y":0}, - {"label":"~", "x":0, "y":1}, - {"label":"1", "x":1, "y":1}, - {"label":"2", "x":2, "y":1}, - {"label":"3", "x":3, "y":1}, - {"label":"4", "x":4, "y":1}, - {"label":"5", "x":5, "y":1}, - {"label":"6", "x":6, "y":1}, - {"label":"7", "x":7, "y":1}, - {"label":"8", "x":8, "y":1}, - {"label":"9", "x":9, "y":1}, - {"label":"0", "x":10, "y":1}, - {"label":"_", "x":11, "y":1}, - {"label":"+", "x":12, "y":1}, - {"label":"Backspace", "x":13, "y":1, "w":2}, - {"label":"Home", "x":15, "y":1}, - {"label":"Tab", "x":0, "y":2, "w":1.5}, - {"label":"Q", "x":1.5, "y":2}, - {"label":"W", "x":2.5, "y":2}, - {"label":"E", "x":3.5, "y":2}, - {"label":"R", "x":4.5, "y":2}, - {"label":"T", "x":5.5, "y":2}, - {"label":"Y", "x":6.5, "y":2}, - {"label":"U", "x":7.5, "y":2}, - {"label":"I", "x":8.5, "y":2}, - {"label":"O", "x":9.5, "y":2}, - {"label":"P", "x":10.5, "y":2}, - {"label":"{", "x":11.5, "y":2}, - {"label":"}", "x":12.5, "y":2}, - {"label":"Page Up", "x":15, "y":2}, - {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, - {"label":"A", "x":1.75, "y":3}, - {"label":"S", "x":2.75, "y":3}, - {"label":"D", "x":3.75, "y":3}, - {"label":"F", "x":4.75, "y":3}, - {"label":"G", "x":5.75, "y":3}, - {"label":"H", "x":6.75, "y":3}, - {"label":"J", "x":7.75, "y":3}, - {"label":"K", "x":8.75, "y":3}, - {"label":"L", "x":9.75, "y":3}, - {"label":":", "x":10.75, "y":3}, - {"label":"@", "x":11.75, "y":3}, - {"label":"~", "x":12.75, "y":3}, - {"label":"Enter", "x":13.75, "y":2, "w":1.25, "h":2}, - {"label":"Page Down", "x":15, "y":3}, - {"label":"Shift", "x":0, "y":4, "w":1.25}, - {"label":"|", "x":1.25, "y":4}, - {"label":"Z", "x":2.25, "y":4}, - {"label":"X", "x":3.25, "y":4}, - {"label":"C", "x":4.25, "y":4}, - {"label":"V", "x":5.25, "y":4}, - {"label":"B", "x":6.25, "y":4}, - {"label":"N", "x":7.25, "y":4}, - {"label":"M", "x":8.25, "y":4}, - {"label":"<", "x":9.25, "y":4}, - {"label":">", "x":10.25, "y":4}, - {"label":"?", "x":11.25, "y":4}, - {"label":"Shift", "x":12.25, "y":4, "w":1.75}, - {"label":"Up", "x":14, "y":4}, - {"label":"End", "x":15, "y":4}, - {"label":"Ctrl", "x":0, "y":5, "w":1.25}, - {"label":"Win", "x":1.25, "y":5, "w":1.25}, - {"label":"Alt", "x":2.5, "y":5, "w":1.25}, - {"label":"Space", "x":3.75, "y":5, "w":6.25}, - {"label":"Alt", "x":10, "y":5}, - {"label":"Fn", "x":11, "y":5}, - {"label":"Ctrl", "x":12, "y":5}, - {"label":"Left", "x":13, "y":5}, - {"label":"Down", "x":14, "y":5}, - {"label":"Right", "x":15, "y":5} - ] - } - } -} diff --git a/keyboards/xd84pro/readme.md b/keyboards/xd84pro/readme.md deleted file mode 100644 index 76e83c6c5d10..000000000000 --- a/keyboards/xd84pro/readme.md +++ /dev/null @@ -1,24 +0,0 @@ -# XD84 Pro - -![XD84 Pro](https://cdn.shopify.com/s/files/1/2711/4238/products/Hf5d4a9571a524cb78870def7403f5acc5.jpg?v=1574416288) - -Keyboard with 84 Keys, RGB LED Underglow, and USB-C Connection -- Designed by Xiudi -- Up to 87 keys - - iso and ansi support - -The silkscreen printing on the PCB refers to this as the "XD84 v2.0". - -* Keyboard Maintainer: QMK Community -* Hardware Supported: XD84 Pro -* Hardware Availability: [KPrepublic](https://kprepublic.com/products/xd84pro-xd84-pro-custom-mechanical-keyboard-kit-75-supports-tkg-tools-support-underglow-rgb-pcb-programmed-gh84-kle-type-c) - -Make example for this keyboard (after setting up your build environment): - - make xd84pro:default - -Flashing example for this keyboard: - - make xd84pro:default:flash - -See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/xd84pro/rules.mk b/keyboards/xd84pro/rules.mk deleted file mode 100644 index 1c94b3a7663a..000000000000 --- a/keyboards/xd84pro/rules.mk +++ /dev/null @@ -1,24 +0,0 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -BOOTLOADER = atmel-dfu - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration -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 = yes # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth -AUDIO_ENABLE = no # Audio output - -LAYOUTS = 75_ansi 75_iso diff --git a/keyboards/xd87/config.h b/keyboards/xd87/config.h deleted file mode 100644 index aa07e3225ce9..000000000000 --- a/keyboards/xd87/config.h +++ /dev/null @@ -1,193 +0,0 @@ -/* -Copyright 2018 Alexander Fougner - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -#include "config_common.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x7844 // "XD" -#define PRODUCT_ID 0x8787 -#define DEVICE_VER 0x0001 -#define MANUFACTURER KP Republic -#define PRODUCT XD87 TKL - -/* key matrix size */ -#define MATRIX_ROWS 6 -#define MATRIX_COLS 17 - -/* - * 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 { D1, B0, B1, C7, D3, D5 } - -#define MATRIX_COL_PINS { E6, F0, F1, F4, F5, F6, F7, B5, B6, C6, D4, D6, D7, B4, B2, B3, D2 } -#define UNUSED_PINS - -/* COL2ROW, ROW2COL*/ -#define DIODE_DIRECTION COL2ROW - -#define LED_CAPS_LOCK_PIN E2 -#define LED_PIN_ON_STATE 0 - -#define BACKLIGHT_PIN D0 -// #define BACKLIGHT_BREATHING -#define BACKLIGHT_LEVELS 3 -#define BACKLIGHT_ON_STATE 0 - -#define RGB_DI_PIN B7 -#ifdef RGB_DI_PIN -#define RGBLIGHT_ANIMATIONS -#define RGBLED_NUM 14 -#define RGBLIGHT_HUE_STEP 8 -#define RGBLIGHT_SAT_STEP 8 -#define RGBLIGHT_VAL_STEP 8 -#endif - -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 5 - -/* define if matrix has ghost (lacks anti-ghosting diodes) */ -//#define MATRIX_HAS_GHOST - -/* number of backlight levels */ - -/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ -#define LOCKING_SUPPORT_ENABLE -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE - -/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. - * This is userful for the Windows task manager shortcut (ctrl+shift+esc). - */ -// #define GRAVE_ESC_CTRL_OVERRIDE - -/* - * Force NKRO - * - * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved - * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the - * makefile for this to work.) - * - * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) - * until the next keyboard reset. - * - * NKRO may prevent your keystrokes from being detected in the BIOS, but it is - * fully operational during normal computer usage. - * - * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) - * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by - * bootmagic, NKRO mode will always be enabled until it is toggled again during a - * power-up. - * - */ -//#define FORCE_NKRO - -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - -/* - * Feature disable options - * These options are also useful to firmware size reduction. - */ - -/* disable debug print */ -//#define NO_DEBUG - -/* disable print */ -//#define NO_PRINT - -/* disable action features */ -//#define NO_ACTION_LAYER -//#define NO_ACTION_TAPPING -//#define NO_ACTION_ONESHOT -//#define NO_ACTION_MACRO -//#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - diff --git a/keyboards/xd87/info.json b/keyboards/xd87/info.json deleted file mode 100644 index 8a6b2dd2f0b8..000000000000 --- a/keyboards/xd87/info.json +++ /dev/null @@ -1,291 +0,0 @@ -{ - "keyboard_name": "XD87", - "url": "https://kprepublic.com/products/hot-swappable-xd87-hs-xd87-custom-mechanical-keyboard-kit80-supports-tkg-tools-support-underglow-rgb-pcb-programmed-gh80-kle", - "maintainer": "qmk", - "width": 18.25, - "height": 6.25, - "layouts": { - "LAYOUT_all": { - "layout": [ - { "label": "K00", "x": 0, "y": 0 }, - { "label": "K01", "x": 1, "y": 0 }, - { "label": "K02", "x": 2, "y": 0 }, - { "label": "K03", "x": 3, "y": 0 }, - { "label": "K04", "x": 4, "y": 0 }, - { "label": "K05", "x": 5, "y": 0 }, - { "label": "K06", "x": 6.5, "y": 0 }, - { "label": "K07", "x": 7.5, "y": 0 }, - { "label": "K08", "x": 8.5, "y": 0 }, - { "label": "K09", "x": 9.5, "y": 0 }, - { "label": "K0A", "x": 11, "y": 0 }, - { "label": "K0B", "x": 12, "y": 0 }, - { "label": "K0C", "x": 13, "y": 0 }, - { "label": "K0D", "x": 14, "y": 0 }, - { "label": "K0E", "x": 15.25, "y": 0 }, - { "label": "K0F", "x": 16.25, "y": 0 }, - { "label": "K0G", "x": 17.25, "y": 0 }, - { "label": "K10", "x": 0, "y": 1.25 }, - { "label": "K11", "x": 1, "y": 1.25 }, - { "label": "K12", "x": 2, "y": 1.25 }, - { "label": "K13", "x": 3, "y": 1.25 }, - { "label": "K14", "x": 4, "y": 1.25 }, - { "label": "K15", "x": 5, "y": 1.25 }, - { "label": "K16", "x": 6, "y": 1.25 }, - { "label": "K17", "x": 7, "y": 1.25 }, - { "label": "K18", "x": 8, "y": 1.25 }, - { "label": "K19", "x": 9, "y": 1.25 }, - { "label": "K1A", "x": 10, "y": 1.25 }, - { "label": "K1B", "x": 11, "y": 1.25 }, - { "label": "K1C", "x": 12, "y": 1.25 }, - { "label": "K1D", "x": 13, "y": 1.25 }, - { "label": "K3E", "x": 14, "y": 1.25 }, - { "label": "K1E", "x": 15.25, "y": 1.25 }, - { "label": "K1F", "x": 16.25, "y": 1.25 }, - { "label": "K1G", "x": 17.25, "y": 1.25 }, - { "label": "K20", "x": 0, "y": 2.25, "w": 1.5 }, - { "label": "K21", "x": 1.5, "y": 2.25 }, - { "label": "K22", "x": 2.5, "y": 2.25 }, - { "label": "K23", "x": 3.5, "y": 2.25 }, - { "label": "K24", "x": 4.5, "y": 2.25 }, - { "label": "K25", "x": 5.5, "y": 2.25 }, - { "label": "K26", "x": 6.5, "y": 2.25 }, - { "label": "K27", "x": 7.5, "y": 2.25 }, - { "label": "K28", "x": 8.5, "y": 2.25 }, - { "label": "K29", "x": 9.5, "y": 2.25 }, - { "label": "K2A", "x": 10.5, "y": 2.25 }, - { "label": "K2B", "x": 11.5, "y": 2.25 }, - { "label": "K2C", "x": 12.5, "y": 2.25 }, - { "label": "K2D", "x": 13.5, "y": 2.25, "w": 1.5 }, - { "label": "K2E", "x": 15.25, "y": 2.25 }, - { "label": "K2F", "x": 16.25, "y": 2.25 }, - { "label": "K2G", "x": 17.25, "y": 2.25 }, - { "label": "K30", "x": 0, "y": 3.25, "w": 1.75 }, - { "label": "K31", "x": 1.75, "y": 3.25 }, - { "label": "K32", "x": 2.75, "y": 3.25 }, - { "label": "K33", "x": 3.75, "y": 3.25 }, - { "label": "K34", "x": 4.75, "y": 3.25 }, - { "label": "K35", "x": 5.75, "y": 3.25 }, - { "label": "K36", "x": 6.75, "y": 3.25 }, - { "label": "K37", "x": 7.75, "y": 3.25 }, - { "label": "K38", "x": 8.75, "y": 3.25 }, - { "label": "K39", "x": 9.75, "y": 3.25 }, - { "label": "K3A", "x": 10.75, "y": 3.25 }, - { "label": "K3B", "x": 11.75, "y": 3.25 }, - { "label": "K3C", "x": 12.75, "y": 3.25 }, - { "label": "K3D", "x": 13.75, "y": 3.25, "w": 1.25 }, - { "label": "K40", "x": 0, "y": 4.25, "w": 1.25 }, - { "label": "K41", "x": 1.25, "y": 4.25 }, - { "label": "K42", "x": 2.25, "y": 4.25 }, - { "label": "K43", "x": 3.25, "y": 4.25 }, - { "label": "K44", "x": 4.25, "y": 4.25 }, - { "label": "K45", "x": 5.25, "y": 4.25 }, - { "label": "K46", "x": 6.25, "y": 4.25 }, - { "label": "K47", "x": 7.25, "y": 4.25 }, - { "label": "K48", "x": 8.25, "y": 4.25 }, - { "label": "K49", "x": 9.25, "y": 4.25 }, - { "label": "K4A", "x": 10.25, "y": 4.25 }, - { "label": "K4B", "x": 11.25, "y": 4.25 }, - { "label": "K4C", "x": 12.25, "y": 4.25, "w": 1.75 }, - { "label": "K4D", "x": 14, "y": 4.25 }, - { "label": "K4E", "x": 15.25, "y": 4.25 }, - { "label": "K4F", "x": 16.25, "y": 4.25 }, - { "label": "K4G", "x": 17.25, "y": 4.25 }, - { "label": "K50", "x": 0, "y": 5.25, "w": 1.5 }, - { "label": "K51", "x": 1.5, "y": 5.25 }, - { "label": "K52", "x": 2.5, "y": 5.25, "w": 1.5 }, - { "label": "K55", "x": 4, "y": 5.25, "w": 3 }, - { "label": "K58", "x": 7, "y": 5.25, "w": 3 }, - { "label": "K5A", "x": 10, "y": 5.25, "w": 1.25 }, - { "label": "K5B", "x": 11.25, "y": 5.25, "w": 1.25 }, - { "label": "K5C", "x": 12.5, "y": 5.25, "w": 1.25 }, - { "label": "K5D", "x": 13.75, "y": 5.25, "w": 1.25 }, - { "label": "K5E", "x": 15.25, "y": 5.25 }, - { "label": "K5F", "x": 16.25, "y": 5.25 }, - { "label": "K5G", "x": 17.25, "y": 5.25 } - ] - }, - "LAYOUT_tkl_ansi": { - "layout": [ - { "label": "Esc", "x": 0, "y": 0 }, - { "label": "F1", "x": 2, "y": 0 }, - { "label": "F2", "x": 3, "y": 0 }, - { "label": "F3", "x": 4, "y": 0 }, - { "label": "F4", "x": 5, "y": 0 }, - { "label": "F5", "x": 6.5, "y": 0 }, - { "label": "F6", "x": 7.5, "y": 0 }, - { "label": "F7", "x": 8.5, "y": 0 }, - { "label": "F8", "x": 9.5, "y": 0 }, - { "label": "F9", "x": 11, "y": 0 }, - { "label": "F10", "x": 12, "y": 0 }, - { "label": "F11", "x": 13, "y": 0 }, - { "label": "F12", "x": 14, "y": 0 }, - { "label": "Print Screen", "x": 15.25, "y": 0 }, - { "label": "Scroll Lock", "x": 16.25, "y": 0 }, - { "label": "Pause", "x": 17.25, "y": 0 }, - { "label": "`", "x": 0, "y": 1.25 }, - { "label": "1", "x": 1, "y": 1.25 }, - { "label": "2", "x": 2, "y": 1.25 }, - { "label": "3", "x": 3, "y": 1.25 }, - { "label": "4", "x": 4, "y": 1.25 }, - { "label": "5", "x": 5, "y": 1.25 }, - { "label": "6", "x": 6, "y": 1.25 }, - { "label": "7", "x": 7, "y": 1.25 }, - { "label": "8", "x": 8, "y": 1.25 }, - { "label": "9", "x": 9, "y": 1.25 }, - { "label": "0", "x": 10, "y": 1.25 }, - { "label": "-", "x": 11, "y": 1.25 }, - { "label": "=", "x": 12, "y": 1.25 }, - { "label": "Backspace", "x": 13, "y": 1.25, "w": 2 }, - { "label": "Insert", "x": 15.25, "y": 1.25 }, - { "label": "Home", "x": 16.25, "y": 1.25 }, - { "label": "PgUp", "x": 17.25, "y": 1.25 }, - { "label": "Tab", "x": 0, "y": 2.25, "w": 1.5 }, - { "label": "Q", "x": 1.5, "y": 2.25 }, - { "label": "W", "x": 2.5, "y": 2.25 }, - { "label": "E", "x": 3.5, "y": 2.25 }, - { "label": "R", "x": 4.5, "y": 2.25 }, - { "label": "T", "x": 5.5, "y": 2.25 }, - { "label": "Y", "x": 6.5, "y": 2.25 }, - { "label": "U", "x": 7.5, "y": 2.25 }, - { "label": "I", "x": 8.5, "y": 2.25 }, - { "label": "O", "x": 9.5, "y": 2.25 }, - { "label": "P", "x": 10.5, "y": 2.25 }, - { "label": "[", "x": 11.5, "y": 2.25 }, - { "label": "]", "x": 12.5, "y": 2.25 }, - { "label": "\\", "x": 13.5, "y": 2.25, "w": 1.5 }, - { "label": "Delete", "x": 15.25, "y": 2.25 }, - { "label": "End", "x": 16.25, "y": 2.25 }, - { "label": "PgDn", "x": 17.25, "y": 2.25 }, - { "label": "Caps Lock", "x": 0, "y": 3.25, "w": 1.75 }, - { "label": "A", "x": 1.75, "y": 3.25 }, - { "label": "S", "x": 2.75, "y": 3.25 }, - { "label": "D", "x": 3.75, "y": 3.25 }, - { "label": "F", "x": 4.75, "y": 3.25 }, - { "label": "G", "x": 5.75, "y": 3.25 }, - { "label": "H", "x": 6.75, "y": 3.25 }, - { "label": "J", "x": 7.75, "y": 3.25 }, - { "label": "K", "x": 8.75, "y": 3.25 }, - { "label": "L", "x": 9.75, "y": 3.25 }, - { "label": ";", "x": 10.75, "y": 3.25 }, - { "label": "'", "x": 11.75, "y": 3.25 }, - { "label": "Enter", "x": 12.75, "y": 3.25, "w": 2.25 }, - { "label": "Shift", "x": 0, "y": 4.25, "w": 2.25 }, - { "label": "Z", "x": 2.25, "y": 4.25 }, - { "label": "X", "x": 3.25, "y": 4.25 }, - { "label": "C", "x": 4.25, "y": 4.25 }, - { "label": "V", "x": 5.25, "y": 4.25 }, - { "label": "B", "x": 6.25, "y": 4.25 }, - { "label": "N", "x": 7.25, "y": 4.25 }, - { "label": "M", "x": 8.25, "y": 4.25 }, - { "label": ",", "x": 9.25, "y": 4.25 }, - { "label": ".", "x": 10.25, "y": 4.25 }, - { "label": "/", "x": 11.25, "y": 4.25 }, - { "label": "Shift", "x": 12.25, "y": 4.25, "w": 2.75 }, - { "label": "Up", "x": 16.25, "y": 4.25 }, - { "label": "Ctrl", "x": 0, "y": 5.25, "w": 1.25 }, - { "label": "Win", "x": 1.25, "y": 5.25, "w": 1.25 }, - { "label": "Alt", "x": 2.5, "y": 5.25, "w": 1.25 }, - { "label": "Space", "x": 3.75, "y": 5.25, "w": 6.25 }, - { "label": "Alt", "x": 10, "y": 5.25, "w": 1.25 }, - { "label": "Win", "x": 11.25, "y": 5.25, "w": 1.25 }, - { "label": "Menu", "x": 12.5, "y": 5.25, "w": 1.25 }, - { "label": "Ctrl", "x": 13.75, "y": 5.25, "w": 1.25 }, - { "label": "Left", "x": 15.25, "y": 5.25 }, - { "label": "Down", "x": 16.25, "y": 5.25 }, - { "label": "Right", "x": 17.25, "y": 5.25 } - ] - }, - "LAYOUT_tkl_iso": { - "layout": [ - { "label": "Esc", "x": 0, "y": 0 }, - { "label": "F1", "x": 2, "y": 0 }, - { "label": "F2", "x": 3, "y": 0 }, - { "label": "F3", "x": 4, "y": 0 }, - { "label": "F4", "x": 5, "y": 0 }, - { "label": "F5", "x": 6.5, "y": 0 }, - { "label": "F6", "x": 7.5, "y": 0 }, - { "label": "F7", "x": 8.5, "y": 0 }, - { "label": "F8", "x": 9.5, "y": 0 }, - { "label": "F9", "x": 11, "y": 0 }, - { "label": "F10", "x": 12, "y": 0 }, - { "label": "F11", "x": 13, "y": 0 }, - { "label": "F12", "x": 14, "y": 0 }, - { "label": "Print Screen", "x": 15.25, "y": 0 }, - { "label": "Scroll Lock", "x": 16.25, "y": 0 }, - { "label": "Pause", "x": 17.25, "y": 0 }, - { "label": "`", "x": 0, "y": 1.25 }, - { "label": "1", "x": 1, "y": 1.25 }, - { "label": "2", "x": 2, "y": 1.25 }, - { "label": "3", "x": 3, "y": 1.25 }, - { "label": "4", "x": 4, "y": 1.25 }, - { "label": "5", "x": 5, "y": 1.25 }, - { "label": "6", "x": 6, "y": 1.25 }, - { "label": "7", "x": 7, "y": 1.25 }, - { "label": "8", "x": 8, "y": 1.25 }, - { "label": "9", "x": 9, "y": 1.25 }, - { "label": "0", "x": 10, "y": 1.25 }, - { "label": "-", "x": 11, "y": 1.25 }, - { "label": "=", "x": 12, "y": 1.25 }, - { "label": "Backspace", "x": 13, "y": 1.25, "w": 2 }, - { "label": "Insert", "x": 15.25, "y": 1.25 }, - { "label": "Home", "x": 16.25, "y": 1.25 }, - { "label": "PgUp", "x": 17.25, "y": 1.25 }, - { "label": "Tab", "x": 0, "y": 2.25, "w": 1.5 }, - { "label": "Q", "x": 1.5, "y": 2.25 }, - { "label": "W", "x": 2.5, "y": 2.25 }, - { "label": "E", "x": 3.5, "y": 2.25 }, - { "label": "R", "x": 4.5, "y": 2.25 }, - { "label": "T", "x": 5.5, "y": 2.25 }, - { "label": "Y", "x": 6.5, "y": 2.25 }, - { "label": "U", "x": 7.5, "y": 2.25 }, - { "label": "I", "x": 8.5, "y": 2.25 }, - { "label": "O", "x": 9.5, "y": 2.25 }, - { "label": "P", "x": 10.5, "y": 2.25 }, - { "label": "[", "x": 11.5, "y": 2.25 }, - { "label": "]", "x": 12.5, "y": 2.25 }, - { "label": "Delete", "x": 15.25, "y": 2.25 }, - { "label": "End", "x": 16.25, "y": 2.25 }, - { "label": "PgDn", "x": 17.25, "y": 2.25 }, - { "label": "Caps Lock", "x": 0, "y": 3.25, "w": 1.75 }, - { "label": "A", "x": 1.75, "y": 3.25 }, - { "label": "S", "x": 2.75, "y": 3.25 }, - { "label": "D", "x": 3.75, "y": 3.25 }, - { "label": "F", "x": 4.75, "y": 3.25 }, - { "label": "G", "x": 5.75, "y": 3.25 }, - { "label": "H", "x": 6.75, "y": 3.25 }, - { "label": "J", "x": 7.75, "y": 3.25 }, - { "label": "K", "x": 8.75, "y": 3.25 }, - { "label": "L", "x": 9.75, "y": 3.25 }, - { "label": ";", "x": 10.75, "y": 3.25 }, - { "label": "'", "x": 11.75, "y": 3.25 }, - { "label": "#", "x": 12.75, "y": 3.25 }, - { "label": "Enter", "x": 13.75, "y": 2.25, "w": 1.25, "h": 2 }, - { "label": "Shift", "x": 0, "y": 4.25, "w": 1.25 }, - { "label": "\\", "x": 1.25, "y": 4.25 }, - { "label": "Z", "x": 2.25, "y": 4.25 }, - { "label": "X", "x": 3.25, "y": 4.25 }, - { "label": "C", "x": 4.25, "y": 4.25 }, - { "label": "V", "x": 5.25, "y": 4.25 }, - { "label": "B", "x": 6.25, "y": 4.25 }, - { "label": "N", "x": 7.25, "y": 4.25 }, - { "label": "M", "x": 8.25, "y": 4.25 }, - { "label": ",", "x": 9.25, "y": 4.25 }, - { "label": ".", "x": 10.25, "y": 4.25 }, - { "label": "/", "x": 11.25, "y": 4.25 }, - { "label": "Shift", "x": 12.25, "y": 4.25, "w": 2.75 }, - { "label": "Up", "x": 16.25, "y": 4.25 }, - { "label": "Ctrl", "x": 0, "y": 5.25, "w": 1.25 }, - { "label": "Win", "x": 1.25, "y": 5.25, "w": 1.25 }, - { "label": "Alt", "x": 2.5, "y": 5.25, "w": 1.25 }, - { "label": "Space", "x": 3.75, "y": 5.25, "w": 6.25 }, - { "label": "AltGr", "x": 10, "y": 5.25, "w": 1.25 }, - { "label": "Win", "x": 11.25, "y": 5.25, "w": 1.25 }, - { "label": "Menu", "x": 12.5, "y": 5.25, "w": 1.25 }, - { "label": "Ctrl", "x": 13.75, "y": 5.25, "w": 1.25 }, - { "label": "Left", "x": 15.25, "y": 5.25 }, - { "label": "Down", "x": 16.25, "y": 5.25 }, - { "label": "Right", "x": 17.25, "y": 5.25 } - ] - } - } -} diff --git a/keyboards/xd87/keymaps/default/keymap.c b/keyboards/xd87/keymaps/default/keymap.c deleted file mode 100644 index b31db9b57754..000000000000 --- a/keyboards/xd87/keymaps/default/keymap.c +++ /dev/null @@ -1,68 +0,0 @@ -/* Copyright 2018 Alexander Fougner - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include QMK_KEYBOARD_H - -// Defines the keycodes used by our macros in process_record_user -enum custom_keycodes { - QMKBEST = SAFE_RANGE, - QMKURL -}; - - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_tkl_iso(\ - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \ - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, \ - KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_NUHS, KC_ENT, \ - KC_LSFT,KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \ - KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ) -}; - - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case QMKBEST: - if (record->event.pressed) { - // when keycode QMKBEST is pressed - SEND_STRING("QMK is the best thing ever!"); - } else { - // when keycode QMKBEST is released - } - break; - case QMKURL: - if (record->event.pressed) { - // when keycode QMKURL is pressed - SEND_STRING("https://qmk.fm/" SS_TAP(X_ENTER)); - } else { - // when keycode QMKURL is released - } - break; - } - return true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/xd87/keymaps/default_underglow/keymap.c b/keyboards/xd87/keymaps/default_underglow/keymap.c deleted file mode 100755 index 8852c3a62a48..000000000000 --- a/keyboards/xd87/keymaps/default_underglow/keymap.c +++ /dev/null @@ -1,74 +0,0 @@ -/* Copyright 2019 Louwii - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include QMK_KEYBOARD_H - -// Defines the keycodes used by our macros in process_record_user -enum custom_keycodes { - QMKBEST = SAFE_RANGE, - QMKURL -}; - - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_tkl_ansi( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, - KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT,MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), - [1] = LAYOUT_tkl_ansi( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, RGB_TOG, RGB_VAI, RGB_MOD, RGB_HUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, RGB_VAD, RGB_RMOD,RGB_HUD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ) -}; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case QMKBEST: - if (record->event.pressed) { - // when keycode QMKBEST is pressed - SEND_STRING("QMK is the best thing ever!"); - } else { - // when keycode QMKBEST is released - } - break; - case QMKURL: - if (record->event.pressed) { - // when keycode QMKURL is pressed - SEND_STRING("https://qmk.fm/" SS_TAP(X_ENTER)); - } else { - // when keycode QMKURL is released - } - break; - } - return true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/xd87/keymaps/default_underglow/rules.mk b/keyboards/xd87/keymaps/default_underglow/rules.mk deleted file mode 100755 index 5cf1edf60be4..000000000000 --- a/keyboards/xd87/keymaps/default_underglow/rules.mk +++ /dev/null @@ -1,3 +0,0 @@ -BOOTMAGIC_ENABLE = lite -COMMAND_ENABLE = no -RGBLIGHT_ENABLE = yes diff --git a/keyboards/xd87/keymaps/mac_underglow/rules.mk b/keyboards/xd87/keymaps/mac_underglow/rules.mk deleted file mode 100755 index 5cf1edf60be4..000000000000 --- a/keyboards/xd87/keymaps/mac_underglow/rules.mk +++ /dev/null @@ -1,3 +0,0 @@ -BOOTMAGIC_ENABLE = lite -COMMAND_ENABLE = no -RGBLIGHT_ENABLE = yes diff --git a/keyboards/xd87/readme.md b/keyboards/xd87/readme.md deleted file mode 100644 index 0b9389740da8..000000000000 --- a/keyboards/xd87/readme.md +++ /dev/null @@ -1,26 +0,0 @@ -# XD87 - -![XD87](https://i.imgur.com/qVyOies.jpg) - - -- Keyboard Maintainer: [Alexander Fougner](https://github.com/fougner) -- Hardware Supported: XD87 PCB v1.1 -- Hardware Availability: - - [KPrepublic.com](https://kprepublic.com/products/xd87-xd87-xd80-custom-mechanical-keyboard-kit80-supports-tkg-tools-support-underglow-rgb-pcb-programmed-gh80-kle) - - [AliExpress](https://www.aliexpress.com/item/xd87-XD87-XD80-Custom-Mechanical-Keyboard-Kit80-Supports-TKG-TOOLS-Support-Underglow-RGB-PCB-programmed-gh80/32892540743.html) - -Make example for this keyboard (after setting up your build environment): - - make xd87:default - -It also supports the tkl_ansi and tkl_iso community layouts: - - # Build firmware with ANSI layout - make xd87:default_tkl_ansi - # Build firmware with ISO layout - make xd87:default_tkl_iso - - -The keyboard can be reset to bootloader by using bootmagic (space+b by default) or short out the small connector between the Delete and End keys. - -See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). \ No newline at end of file diff --git a/keyboards/xd87/rules.mk b/keyboards/xd87/rules.mk deleted file mode 100644 index 6d5d8b6da087..000000000000 --- a/keyboards/xd87/rules.mk +++ /dev/null @@ -1,34 +0,0 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = atmel-dfu - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration -MOUSEKEY_ENABLE = no # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = yes # Console for debug -COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 - -# Supported layouts -LAYOUTS = tkl_ansi tkl_iso diff --git a/keyboards/xd87/xd87.h b/keyboards/xd87/xd87.h deleted file mode 100644 index 0dec1f6a14e3..000000000000 --- a/keyboards/xd87/xd87.h +++ /dev/null @@ -1,70 +0,0 @@ -/* Copyright 2018 Alexander Fougner - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#ifndef XD87_H -#define XD87_H - -#include "quantum.h" - -#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 \ -) { \ -/* 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 } \ -} - -#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, 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 } \ -} - -#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, 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 } \ -} - -#endif diff --git a/keyboards/xd96/config.h b/keyboards/xd96/config.h deleted file mode 100644 index d7197d006cfd..000000000000 --- a/keyboards/xd96/config.h +++ /dev/null @@ -1,212 +0,0 @@ -/* 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 . - */ - -#pragma once - -#include "config_common.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x7844 // "XD" -#define PRODUCT_ID 0x9696 -#define DEVICE_VER 0x0001 -#define MANUFACTURER KPrepublic -#define PRODUCT XD96 - -/* key matrix size */ -#define MATRIX_ROWS 6 -#define MATRIX_COLS 18 - -/* - * 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 { D0, D5 } -//#define MATRIX_COL_PINS { F1, F0, B0 } -//#define UNUSED_PINS - -/* COL2ROW, ROW2COL */ -//#define DIODE_DIRECTION COL2ROW - -#define LED_NUM_LOCK_PIN C6 -#define LED_CAPS_LOCK_PIN B6 -#define LED_PIN_ON_STATE 0 - -#define BACKLIGHT_PIN B5 -#define BACKLIGHT_LEVELS 10 -// #define BACKLIGHT_BREATHING - -#define RGB_DI_PIN C7 -#define RGBLED_NUM 16 -#define RGBLIGHT_ANIMATIONS -#define RGBLIGHT_LIMIT_VAL 50 -// #ifdef RGB_DI_PIN -// #define RGBLIGHT_HUE_STEP 8 -// #define RGBLIGHT_SAT_STEP 8 -// #define RGBLIGHT_VAL_STEP 8 -// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ -// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ -// /*== all animations enable ==*/ -// #define RGBLIGHT_ANIMATIONS -// /*== or choose animations ==*/ -// #define RGBLIGHT_EFFECT_BREATHING -// #define RGBLIGHT_EFFECT_RAINBOW_MOOD -// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL -// #define RGBLIGHT_EFFECT_SNAKE -// #define RGBLIGHT_EFFECT_KNIGHT -// #define RGBLIGHT_EFFECT_CHRISTMAS -// #define RGBLIGHT_EFFECT_STATIC_GRADIENT -// #define RGBLIGHT_EFFECT_RGB_TEST -// #define RGBLIGHT_EFFECT_ALTERNATING -// #endif - -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 5 - -/* define if matrix has ghost (lacks anti-ghosting diodes) */ -//#define MATRIX_HAS_GHOST - -/* number of backlight levels */ - -/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ -#define LOCKING_SUPPORT_ENABLE -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE - -/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. - * This is userful for the Windows task manager shortcut (ctrl+shift+esc). - */ -// #define GRAVE_ESC_CTRL_OVERRIDE - -/* - * Force NKRO - * - * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved - * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the - * makefile for this to work.) - * - * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) - * until the next keyboard reset. - * - * NKRO may prevent your keystrokes from being detected in the BIOS, but it is - * fully operational during normal computer usage. - * - * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) - * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by - * bootmagic, NKRO mode will always be enabled until it is toggled again during a - * power-up. - * - */ -//#define FORCE_NKRO - -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - -/* - * Feature disable options - * These options are also useful to firmware size reduction. - */ - -/* disable debug print */ -//#define NO_DEBUG - -/* disable print */ -//#define NO_PRINT - -/* disable action features */ -//#define NO_ACTION_LAYER -//#define NO_ACTION_TAPPING -//#define NO_ACTION_ONESHOT -//#define NO_ACTION_MACRO -//#define NO_ACTION_FUNCTION - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - -/* Bootmagic Lite key configuration */ -// #define BOOTMAGIC_LITE_ROW 0 -// #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/xd96/info.json b/keyboards/xd96/info.json deleted file mode 100644 index 22de06609534..000000000000 --- a/keyboards/xd96/info.json +++ /dev/null @@ -1,351 +0,0 @@ -{ - "keyboard_name": "xd96", - "url": "", - "maintainer": "qmk", - "width": 19, - "height": 6, - "layouts": { - "LAYOUT_96_ansi": { - "key_count": 99, - "layout": [ - {"label":"Esc", "x":0, "y":0}, - {"label":"F1", "x":1, "y":0}, - {"label":"F2", "x":2, "y":0}, - {"label":"F3", "x":3, "y":0}, - {"label":"F4", "x":4, "y":0}, - {"label":"F5", "x":5, "y":0}, - {"label":"F6", "x":6, "y":0}, - {"label":"F7", "x":7, "y":0}, - {"label":"F8", "x":8, "y":0}, - {"label":"F9", "x":9, "y":0}, - {"label":"F10", "x":10, "y":0}, - {"label":"F11", "x":11, "y":0}, - {"label":"F12", "x":12, "y":0}, - {"label":"Insert", "x":13, "y":0}, - {"label":"Delete", "x":14, "y":0}, - {"label":"Home", "x":15, "y":0}, - {"label":"End", "x":16, "y":0}, - {"label":"PgUp", "x":17, "y":0}, - {"label":"PgDn", "x":18, "y":0}, - - {"label":"~", "x":0, "y":1}, - {"label":"!", "x":1, "y":1}, - {"label":"@", "x":2, "y":1}, - {"label":"#", "x":3, "y":1}, - {"label":"$", "x":4, "y":1}, - {"label":"%", "x":5, "y":1}, - {"label":"^", "x":6, "y":1}, - {"label":"&", "x":7, "y":1}, - {"label":"*", "x":8, "y":1}, - {"label":"(", "x":9, "y":1}, - {"label":")", "x":10, "y":1}, - {"label":"_", "x":11, "y":1}, - {"label":"+", "x":12, "y":1}, - {"label":"Backspace", "x":13, "y":1, "w":2}, - - {"label":"Num Lock", "x":15, "y":1}, - {"label":"/", "x":16, "y":1}, - {"label":"*", "x":17, "y":1}, - {"label":"-", "x":18, "y":1}, - - {"label":"Tab", "x":0, "y":2, "w":1.5}, - {"label":"Q", "x":1.5, "y":2}, - {"label":"W", "x":2.5, "y":2}, - {"label":"E", "x":3.5, "y":2}, - {"label":"R", "x":4.5, "y":2}, - {"label":"T", "x":5.5, "y":2}, - {"label":"Y", "x":6.5, "y":2}, - {"label":"U", "x":7.5, "y":2}, - {"label":"I", "x":8.5, "y":2}, - {"label":"O", "x":9.5, "y":2}, - {"label":"P", "x":10.5, "y":2}, - {"label":"{", "x":11.5, "y":2}, - {"label":"}", "x":12.5, "y":2}, - {"label":"|", "x":13.5, "y":2, "w":1.5}, - {"label":"7", "x":15, "y":2}, - {"label":"8", "x":16, "y":2}, - {"label":"9", "x":17, "y":2}, - - {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, - {"label":"A", "x":1.75, "y":3}, - {"label":"S", "x":2.75, "y":3}, - {"label":"D", "x":3.75, "y":3}, - {"label":"F", "x":4.75, "y":3}, - {"label":"G", "x":5.75, "y":3}, - {"label":"H", "x":6.75, "y":3}, - {"label":"J", "x":7.75, "y":3}, - {"label":"K", "x":8.75, "y":3}, - {"label":"L", "x":9.75, "y":3}, - {"label":":", "x":10.75, "y":3}, - {"label":"\"", "x":11.75, "y":3}, - {"label":"Enter", "x":12.75, "y":3, "w":2.25}, - - {"label":"4", "x":15, "y":3}, - {"label":"5", "x":16, "y":3}, - {"label":"6", "x":17, "y":3}, - {"label":"+", "x":18, "y":2, "h":2}, - - {"label":"Shift", "x":0, "y":4, "w":2.25}, - {"label":"Z", "x":2.25, "y":4}, - {"label":"X", "x":3.25, "y":4}, - {"label":"C", "x":4.25, "y":4}, - {"label":"V", "x":5.25, "y":4}, - {"label":"B", "x":6.25, "y":4}, - {"label":"N", "x":7.25, "y":4}, - {"label":"M", "x":8.25, "y":4}, - {"label":"<", "x":9.25, "y":4}, - {"label":">", "x":10.25, "y":4}, - {"label":"?", "x":11.25, "y":4}, - {"label":"Shift", "x":12.25, "y":4, "w":1.75}, - {"label":"\u2191", "x":14, "y":4}, - - {"label":"1", "x":15, "y":4}, - {"label":"2", "x":16, "y":4}, - {"label":"3", "x":17, "y":4}, - - {"label":"Ctrl", "x":0, "y":5, "w":1.25}, - {"label":"Win", "x":1.25, "y":5, "w":1.25}, - {"label":"Alt", "x":2.5, "y":5, "w":1.25}, - {"x":3.75, "y":5, "w":6.25}, - {"label":"Alt", "x":10, "y":5, "w":1.5}, - {"label":"Ctrl", "x":11.5, "y":5, "w":1.5}, - {"label":"\u2190", "x":13, "y":5}, - {"label":"\u2193", "x":14, "y":5}, - {"label":"\u2192", "x":15, "y":5}, - - {"label":"0", "x":16, "y":5}, - {"label":".", "x":17, "y":5}, - {"label":"Enter", "x":18, "y":4, "h":2} - ] - }, - "LAYOUT_96_iso": { - "key_count": 100, - "layout": [ - {"label":"Esc", "x":0, "y":0}, - {"label":"F1", "x":1, "y":0}, - {"label":"F2", "x":2, "y":0}, - {"label":"F3", "x":3, "y":0}, - {"label":"F4", "x":4, "y":0}, - {"label":"F5", "x":5, "y":0}, - {"label":"F6", "x":6, "y":0}, - {"label":"F7", "x":7, "y":0}, - {"label":"F8", "x":8, "y":0}, - {"label":"F9", "x":9, "y":0}, - {"label":"F10", "x":10, "y":0}, - {"label":"F11", "x":11, "y":0}, - {"label":"F12", "x":12, "y":0}, - {"label":"Insert", "x":13, "y":0}, - {"label":"Delete", "x":14, "y":0}, - {"label":"Home", "x":15, "y":0}, - {"label":"End", "x":16, "y":0}, - {"label":"PgUp", "x":17, "y":0}, - {"label":"PgDn", "x":18, "y":0}, - - {"label":"~", "x":0, "y":1}, - {"label":"!", "x":1, "y":1}, - {"label":"\"", "x":2, "y":1}, - {"label":"\u00a3", "x":3, "y":1}, - {"label":"$", "x":4, "y":1}, - {"label":"%", "x":5, "y":1}, - {"label":"^", "x":6, "y":1}, - {"label":"&", "x":7, "y":1}, - {"label":"*", "x":8, "y":1}, - {"label":"(", "x":9, "y":1}, - {"label":")", "x":10, "y":1}, - {"label":"_", "x":11, "y":1}, - {"label":"+", "x":12, "y":1}, - {"label":"Backspace", "x":13, "y":1, "w":2}, - - {"label":"Num Lock", "x":15, "y":1}, - {"label":"/", "x":16, "y":1}, - {"label":"*", "x":17, "y":1}, - {"label":"-", "x":18, "y":1}, - - {"label":"Tab", "x":0, "y":2, "w":1.5}, - {"label":"Q", "x":1.5, "y":2}, - {"label":"W", "x":2.5, "y":2}, - {"label":"E", "x":3.5, "y":2}, - {"label":"R", "x":4.5, "y":2}, - {"label":"T", "x":5.5, "y":2}, - {"label":"Y", "x":6.5, "y":2}, - {"label":"U", "x":7.5, "y":2}, - {"label":"I", "x":8.5, "y":2}, - {"label":"O", "x":9.5, "y":2}, - {"label":"P", "x":10.5, "y":2}, - {"label":"{", "x":11.5, "y":2}, - {"label":"}", "x":12.5, "y":2}, - - {"label":"7", "x":15, "y":2}, - {"label":"8", "x":16, "y":2}, - {"label":"9", "x":17, "y":2}, - - {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, - {"label":"A", "x":1.75, "y":3}, - {"label":"S", "x":2.75, "y":3}, - {"label":"D", "x":3.75, "y":3}, - {"label":"F", "x":4.75, "y":3}, - {"label":"G", "x":5.75, "y":3}, - {"label":"H", "x":6.75, "y":3}, - {"label":"J", "x":7.75, "y":3}, - {"label":"K", "x":8.75, "y":3}, - {"label":"L", "x":9.75, "y":3}, - {"label":":", "x":10.75, "y":3}, - {"label":"@", "x":11.75, "y":3}, - {"label":"~", "x":12.75, "y":3}, - {"label":"Enter", "x":13.75, "y":2, "w":1.25, "h":2}, - - {"label":"4", "x":15, "y":3}, - {"label":"5", "x":16, "y":3}, - {"label":"6", "x":17, "y":3}, - {"label":"+", "x":18, "y":2, "h":2}, - - {"label":"Shift", "x":0, "y":4, "w":1.25}, - {"label":"|", "x":1.25, "y":4}, - {"label":"Z", "x":2.25, "y":4}, - {"label":"X", "x":3.25, "y":4}, - {"label":"C", "x":4.25, "y":4}, - {"label":"V", "x":5.25, "y":4}, - {"label":"B", "x":6.25, "y":4}, - {"label":"N", "x":7.25, "y":4}, - {"label":"M", "x":8.25, "y":4}, - {"label":"<", "x":9.25, "y":4}, - {"label":">", "x":10.25, "y":4}, - {"label":"?", "x":11.25, "y":4}, - {"label":"Shift", "x":12.25, "y":4, "w":1.75}, - {"label":"\u2191", "x":14, "y":4}, - - {"label":"1", "x":15, "y":4}, - {"label":"2", "x":16, "y":4}, - {"label":"3", "x":17, "y":4}, - - {"label":"Ctrl", "x":0, "y":5, "w":1.25}, - {"label":"Win", "x":1.25, "y":5, "w":1.25}, - {"label":"Alt", "x":2.5, "y":5, "w":1.25}, - {"x":3.75, "y":5, "w":6.25}, - {"label":"Alt", "x":10, "y":5, "w":1.5}, - {"label":"Ctrl", "x":11.5, "y":5, "w":1.5}, - {"label":"\u2190", "x":13, "y":5}, - {"label":"\u2193", "x":14, "y":5}, - {"label":"\u2192", "x":15, "y":5}, - - {"label":"0", "x":16, "y":5}, - {"label":".", "x":17, "y":5}, - {"label":"Enter", "x":18, "y":4, "h":2} - ] - }, - "LAYOUT_all": { - "layout": [ - {"label":"Esc", "x":0, "y":0}, - {"label":"F1", "x":1, "y":0}, - {"label":"F2", "x":2, "y":0}, - {"label":"F3", "x":3, "y":0}, - {"label":"F4", "x":4, "y":0}, - {"label":"F5", "x":5, "y":0}, - {"label":"F6", "x":6, "y":0}, - {"label":"F7", "x":7, "y":0}, - {"label":"F8", "x":8, "y":0}, - {"label":"F9", "x":9, "y":0}, - {"label":"F10", "x":10, "y":0}, - {"label":"F11", "x":11, "y":0}, - {"label":"F12", "x":12, "y":0}, - {"label":"Insert", "x":13, "y":0}, - {"label":"Delete", "x":14, "y":0}, - {"label":"Home", "x":15, "y":0}, - {"label":"End", "x":16, "y":0}, - {"label":"PgUp", "x":17, "y":0}, - {"label":"PgDn", "x":18, "y":0}, - - {"label":"~", "x":0, "y":1}, - {"label":"!", "x":1, "y":1}, - {"label":"@", "x":2, "y":1}, - {"label":"#", "x":3, "y":1}, - {"label":"$", "x":4, "y":1}, - {"label":"%", "x":5, "y":1}, - {"label":"^", "x":6, "y":1}, - {"label":"&", "x":7, "y":1}, - {"label":"*", "x":8, "y":1}, - {"label":"(", "x":9, "y":1}, - {"label":")", "x":10, "y":1}, - {"label":"_", "x":11, "y":1}, - {"label":"+", "x":12, "y":1}, - {"label":"Backspace", "x":13, "y":1}, - {"label":"Backspace", "x":14, "y":1}, - {"label":"Num Lock", "x":15, "y":1}, - {"label":"/", "x":16, "y":1}, - {"label":"*", "x":17, "y":1}, - {"label":"-", "x":18, "y":1}, - - {"label":"Tab", "x":0, "y":2, "w":1.5}, - {"label":"Q", "x":1.5, "y":2}, - {"label":"W", "x":2.5, "y":2}, - {"label":"E", "x":3.5, "y":2}, - {"label":"R", "x":4.5, "y":2}, - {"label":"T", "x":5.5, "y":2}, - {"label":"Y", "x":6.5, "y":2}, - {"label":"U", "x":7.5, "y":2}, - {"label":"I", "x":8.5, "y":2}, - {"label":"O", "x":9.5, "y":2}, - {"label":"P", "x":10.5, "y":2}, - {"label":"{", "x":11.5, "y":2}, - {"label":"}", "x":12.5, "y":2}, - {"label":"|", "x":13.5, "y":2, "w":1.5}, - {"label":"7", "x":15, "y":2}, - {"label":"8", "x":16, "y":2}, - {"label":"9", "x":17, "y":2}, - {"label":"+", "x":18, "y":2}, - - - {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, - {"label":"A", "x":1.75, "y":3}, - {"label":"S", "x":2.75, "y":3}, - {"label":"D", "x":3.75, "y":3}, - {"label":"F", "x":4.75, "y":3}, - {"label":"G", "x":5.75, "y":3}, - {"label":"H", "x":6.75, "y":3}, - {"label":"J", "x":7.75, "y":3}, - {"label":"K", "x":8.75, "y":3}, - {"label":"L", "x":9.75, "y":3}, - {"label":":", "x":10.75, "y":3}, - {"label":"\"", "x":11.75, "y":3}, - {"label":"Enter", "x":12.75, "y":3}, - {"label":"Enter", "x":13.75, "y":3, "w":1.25}, - {"label":"4", "x":15, "y":3}, - {"label":"5", "x":16, "y":3}, - {"label":"6", "x":17, "y":3}, - {"label":"+", "x":18, "y":3}, - - {"label":"Shift", "x":0, "y":4, "w":1.25}, - {"label":"Shift", "x":1.25, "y":4}, - {"label":"Z", "x":2.25, "y":4}, - {"label":"X", "x":3.25, "y":4}, - {"label":"C", "x":4.25, "y":4}, - {"label":"V", "x":5.25, "y":4}, - {"label":"B", "x":6.25, "y":4}, - {"label":"N", "x":7.25, "y":4}, - {"label":"M", "x":8.25, "y":4}, - {"label":"<", "x":9.25, "y":4}, - {"label":">", "x":10.25, "y":4}, - {"label":"?", "x":11.25, "y":4}, - {"label":"Shift", "x":12.25, "y":4, "w":1.75}, - {"label":"\u2191", "x":14, "y":4}, - {"label":"1", "x":15, "y":4}, - {"label":"2", "x":16, "y":4}, - {"label":"3", "x":17, "y":4}, - {"label":"Enter", "x":18, "y":4}, - - {"label":"Ctrl", "x":0, "y":5, "w":1.25}, - {"label":"Win", "x":1.25, "y":5, "w":1.25}, - {"label":"Alt", "x":2.5, "y":5, "w":1.25}, - {"x":3.75, "y":5, "w":6.25}, - {"label":"Alt", "x":10, "y":5, "w":1.5}, - {"label":"Ctrl", "x":11.5, "y":5, "w":1.5}, - {"label":"\u2190", "x":13, "y":5}, - {"label":"\u2193", "x":14, "y":5}, - {"label":"\u2192", "x":15, "y":5}, - {"label":"0", "x":16, "y":5}, - {"label":".", "x":17, "y":5}, - {"label":"Enter", "x":18, "y":5} - ] - } - } -} diff --git a/keyboards/xd96/readme.md b/keyboards/xd96/readme.md deleted file mode 100644 index bf01db8bb7e4..000000000000 --- a/keyboards/xd96/readme.md +++ /dev/null @@ -1,22 +0,0 @@ -# XD96 - -![XD96](https://cdn.shopify.com/s/files/1/2711/4238/products/xd96_pcb_1024x1024.jpg?v=1515425370) - -Keyboard with 96 Keys & RGB LED Underglow -- Designed by Xiudi -- ISO and ANSI support -- Uses Kimera core - -Keyboard Maintainer: QMK Community -Hardware Supported: XD96 -Hardware Availability: [KPrepublic](https://kprepublic.com/products/xd96-pcb-90-custom-mechanical-keyboard-supports-tkg-tools-underglow-rgb-programmed); [AliExpress](https://aliexpress.com/item/cospad-Custom-Mechanical-Keyboard-Kit-up-tp-24-keys-Supports-TKG-TOOLS-Underglow-RGB-PCB-20/32818383873.html) - -Make example for this keyboard (after setting up your build environment): - - make xd96:default - -Install examples: - - make xd96: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/xd96/rules.mk b/keyboards/xd96/rules.mk deleted file mode 100644 index d880fa65fe65..000000000000 --- a/keyboards/xd96/rules.mk +++ /dev/null @@ -1,39 +0,0 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = atmel-dfu - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration -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 = no # USB Nkey Rollover -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 -LTO_ENABLE = yes - -# custom matrix setup -CUSTOM_MATRIX = lite - -VPATH += drivers/gpio -SRC += pca9555.c matrix.c -QUANTUM_LIB_SRC += i2c_master.c diff --git a/keyboards/xelus/akis/akis.h b/keyboards/xelus/akis/akis.h index bab13b1f63e2..feaee27c3d7a 100644 --- a/keyboards/xelus/akis/akis.h +++ b/keyboards/xelus/akis/akis.h @@ -20,7 +20,7 @@ #define XXX KC_NO -#define LAYOUT_65_all( \ +#define LAYOUT_all( \ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, 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, K2E,\ diff --git a/keyboards/xelus/akis/info.json b/keyboards/xelus/akis/info.json index e46d0d1db7a6..29dec68aee5a 100644 --- a/keyboards/xelus/akis/info.json +++ b/keyboards/xelus/akis/info.json @@ -2,8 +2,9 @@ "keyboard_name": "akiS", "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/xelus/akis", "maintainer": "Xelus22", - "width": 16, - "height": 5, + "layout_aliases": { + "LAYOUT_65_all": "LAYOUT_all" + }, "layouts": { "LAYOUT_all": { "layout": [ @@ -55,7 +56,8 @@ {"x": 12.75, "y": 2, "w": 2.25}, {"x": 15, "y": 2}, - {"x": 0, "y": 3, "w": 2.25}, + {"x": 0, "y": 3, "w": 1.25}, + {"x": 1.25, "y": 3}, {"x": 2.25, "y": 3}, {"x": 3.25, "y": 3}, {"x": 4.25, "y": 3}, diff --git a/keyboards/xelus/akis/keymaps/default/keymap.c b/keyboards/xelus/akis/keymaps/default/keymap.c index f582fb8a9383..514472744294 100644 --- a/keyboards/xelus/akis/keymaps/default/keymap.c +++ b/keyboards/xelus/akis/keymaps/default/keymap.c @@ -18,7 +18,7 @@ #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_65_all( + [0] = 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_BSPC, KC_BSPC, KC_HOME, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, @@ -26,7 +26,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT ), - [1] = LAYOUT_65_all( + [1] = LAYOUT_all( KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_PSCR, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, diff --git a/keyboards/xelus/akis/keymaps/via/keymap.c b/keyboards/xelus/akis/keymaps/via/keymap.c index 0b76636bdd22..82325529e88e 100644 --- a/keyboards/xelus/akis/keymaps/via/keymap.c +++ b/keyboards/xelus/akis/keymaps/via/keymap.c @@ -18,7 +18,7 @@ #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_65_all( + [0] = 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_BSPC, KC_BSPC, KC_HOME, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, @@ -26,7 +26,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT ), - [1] = LAYOUT_65_all( + [1] = LAYOUT_all( KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_PSCR, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), - [2] = LAYOUT_65_all( + [2] = LAYOUT_all( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -42,7 +42,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), - [3] = LAYOUT_65_all( + [3] = LAYOUT_all( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, diff --git a/keyboards/xelus/akis/rules.mk b/keyboards/xelus/akis/rules.mk index 15a1f59a7c81..5f0e8e7654e0 100644 --- a/keyboards/xelus/akis/rules.mk +++ b/keyboards/xelus/akis/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LTO_ENABLE = yes diff --git a/keyboards/xelus/dawn60/info.json b/keyboards/xelus/dawn60/info.json index e39165bd0f04..346422b92add 100644 --- a/keyboards/xelus/dawn60/info.json +++ b/keyboards/xelus/dawn60/info.json @@ -2,10 +2,11 @@ "keyboard_name": "Dawn60", "url": "", "maintainer": "Xelus22", - "width": 15, - "height": 5, + "layout_aliases": { + "LAYOUT_60_all": "LAYOUT_all" + }, "layouts": { - "LAYOUT_60_all": { + "LAYOUT_all": { "layout": [ {"label":"Esc", "x":0, "y":0}, {"label":"1", "x":1, "y":0}, @@ -72,6 +73,147 @@ {"label":"Down", "x":13, "y":4}, {"label":"Right", "x":14, "y":4} ] + }, + "LAYOUT_60_ansi_arrow": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2@", "x":2, "y":0}, + {"label":"3#", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":7, "y":0}, + {"label":"8*", "x":8, "y":0}, + {"label":"9(", "x":9, "y":0}, + {"label":"0)", "x":10, "y":0}, + {"label":"-_", "x":11, "y":0}, + {"label":"=+", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + + {"label":"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":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",<", "x":9.25, "y":3}, + {"label":".>", "x":10.25, "y":3}, + {"label":"Shift", "x":11.25, "y":3, "w":1.75}, + {"label":"Up", "x":13, "y":3}, + {"label":"Fn", "x":14, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"GUI", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space", "x":3.75, "y":4, "w":6.25}, + {"label":"Alt", "x":10, "y":4}, + {"label":"Ctrl", "x":11, "y":4}, + {"label":"Left", "x":12, "y":4}, + {"label":"Down", "x":13, "y":4}, + {"label":"Right", "x":14, "y":4} + ] + }, + "LAYOUT_60_tsangan_hhkb": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1!", "x":1, "y":0}, + {"label":"2@", "x":2, "y":0}, + {"label":"3#", "x":3, "y":0}, + {"label":"4$", "x":4, "y":0}, + {"label":"5%", "x":5, "y":0}, + {"label":"6^", "x":6, "y":0}, + {"label":"7&", "x":7, "y":0}, + {"label":"8*", "x":8, "y":0}, + {"label":"9(", "x":9, "y":0}, + {"label":"0)", "x":10, "y":0}, + {"label":"-_", "x":11, "y":0}, + {"label":"=+", "x":12, "y":0}, + {"label":"\\|", "x":13, "y":0}, + {"label":"Delete", "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":"Backspace", "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":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",<", "x":9.25, "y":3}, + {"label":".>", "x":10.25, "y":3}, + {"label":"/?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"Fn", "x":14, "y":3}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.5}, + {"label":"GUI", "x":1.5, "y":4}, + {"label":"Alt", "x":2.5, "y":4, "w":1.5}, + {"label":"Space", "x":4, "y":4, "w":7}, + {"label":"Alt", "x":11, "y":4, "w":1.5}, + {"label":"Menu", "x":12.5, "y":4}, + {"label":"Ctrl", "x":13.5, "y":4, "w":1.5} + ] } } } diff --git a/keyboards/xelus/dawn60/keymaps/default/keymap.c b/keyboards/xelus/dawn60/keymaps/default/keymap.c index 431a596c22d5..479764f3c376 100644 --- a/keyboards/xelus/dawn60/keymaps/default/keymap.c +++ b/keyboards/xelus/dawn60/keymaps/default/keymap.c @@ -12,7 +12,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Default layer: Pressing caps-lock momentarily switches to Layer 1. // This is the default layer. Pressing an empty keycode on another layer will take you here. - [0] = LAYOUT_60_all( + [0] = 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_BSLS, KC_DEL, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, @@ -20,7 +20,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), - [1] = LAYOUT_60_all( + [1] = LAYOUT_all( KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_PSCR, KC_CAPS, KC_TRNS, KC_UP , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END ), - [2] = LAYOUT_60_all( + [2] = LAYOUT_all( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -36,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), - [3] = LAYOUT_60_all( + [3] = LAYOUT_all( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, diff --git a/keyboards/xelus/dawn60/keymaps/via/keymap.c b/keyboards/xelus/dawn60/keymaps/via/keymap.c index 431a596c22d5..479764f3c376 100644 --- a/keyboards/xelus/dawn60/keymaps/via/keymap.c +++ b/keyboards/xelus/dawn60/keymaps/via/keymap.c @@ -12,7 +12,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Default layer: Pressing caps-lock momentarily switches to Layer 1. // This is the default layer. Pressing an empty keycode on another layer will take you here. - [0] = LAYOUT_60_all( + [0] = 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_BSLS, KC_DEL, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, @@ -20,7 +20,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), - [1] = LAYOUT_60_all( + [1] = LAYOUT_all( KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_PSCR, KC_CAPS, KC_TRNS, KC_UP , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END ), - [2] = LAYOUT_60_all( + [2] = LAYOUT_all( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -36,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), - [3] = LAYOUT_60_all( + [3] = LAYOUT_all( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, diff --git a/keyboards/xelus/dawn60/rev1/rev1.h b/keyboards/xelus/dawn60/rev1/rev1.h index 53d40e54990f..49fd9420f2b6 100644 --- a/keyboards/xelus/dawn60/rev1/rev1.h +++ b/keyboards/xelus/dawn60/rev1/rev1.h @@ -21,7 +21,24 @@ #define XXX KC_NO -#define LAYOUT_60_all( \ +/* LAYOUT_all + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───────┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │2D │ │0D │ 2u Backspace + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ └───────┘ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤ ┌───┬──────┬───┐ + * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3B │3C │3D │ │3B │3C │3D │ 1/1.75/1u + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤ └───┴──────┴───┘ + * │40 │41 │42 │45 │49 │4A │4B │4C │4D │ + * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘ + * ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐ + * │40 │41 │42 │45 │4A │4C │4D │ Tsangan + * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ + */ + +#define LAYOUT_all( \ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \ 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, \ @@ -34,3 +51,31 @@ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, XXX, K3B, K3C, K3D }, \ { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, K4B, K4C, K4D } \ } + +#define LAYOUT_60_ansi_arrow( \ + 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, K3B, K3C, K3D, \ + K40, K41, K42, K45, 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, XXX }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, XXX, K3B, K3C, K3D }, \ + { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, K4B, K4C, K4D } \ +} + +#define LAYOUT_60_tsangan_hhkb( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \ + 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, K3B, K3C, K3D, \ + K40, K41, K42, K45, K4A, 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, XXX, K3B, K3C, K3D }, \ + { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, XXX, K4A, XXX, K4C, K4D } \ +} diff --git a/keyboards/xelus/dawn60/rev1/rules.mk b/keyboards/xelus/dawn60/rev1/rules.mk index 64b6615e81ee..31642a42c599 100644 --- a/keyboards/xelus/dawn60/rev1/rules.mk +++ b/keyboards/xelus/dawn60/rev1/rules.mk @@ -2,13 +2,6 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Do not put the microcontroller into power saving mode @@ -19,20 +12,15 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. - We have custom RGB underglow CIE1931_CURVE = yes @@ -42,7 +30,7 @@ CIE1931_CURVE = yes SRC += keyboards/wilba_tech/wt_main.c \ keyboards/wilba_tech/wt_rgb_backlight.c \ quantum/color.c \ - drivers/issi/is31fl3731.c \ + drivers/led/issi/is31fl3731.c \ ws2812.c QUANTUM_LIB_SRC += i2c_master.c diff --git a/keyboards/xelus/dawn60/rev1_qmk/config.h b/keyboards/xelus/dawn60/rev1_qmk/config.h index 07de129c0b52..67c88efb4ca8 100644 --- a/keyboards/xelus/dawn60/rev1_qmk/config.h +++ b/keyboards/xelus/dawn60/rev1_qmk/config.h @@ -71,3 +71,52 @@ // | ? | Shift | Fn | vs | Shift | Up | Fn | // `------------------' `-------------------' #define RGB_BACKLIGHT_USE_SPLIT_RIGHT_SHIFT 1 + +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH diff --git a/keyboards/xelus/dawn60/rev1_qmk/rev1_qmk.c b/keyboards/xelus/dawn60/rev1_qmk/rev1_qmk.c index 901f7a18c285..8b044ee4f6b5 100644 --- a/keyboards/xelus/dawn60/rev1_qmk/rev1_qmk.c +++ b/keyboards/xelus/dawn60/rev1_qmk/rev1_qmk.c @@ -18,14 +18,14 @@ #include #include #include -#include "drivers/issi/is31fl3731.h" +#include "drivers/led/issi/is31fl3731.h" #include "ws2812.h" #include "rev1_qmk.h" #ifdef RGB_MATRIX_ENABLE LED_TYPE rgb_matrix_ws2812_array[WS2812_LED_TOTAL]; -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { /* Refer to IS31 manual for these locations * driver * | R location diff --git a/keyboards/xelus/dawn60/rev1_qmk/rev1_qmk.h b/keyboards/xelus/dawn60/rev1_qmk/rev1_qmk.h index 3625ab1f1104..d5284c028008 100644 --- a/keyboards/xelus/dawn60/rev1_qmk/rev1_qmk.h +++ b/keyboards/xelus/dawn60/rev1_qmk/rev1_qmk.h @@ -19,7 +19,24 @@ #define XXX KC_NO -#define LAYOUT_60_all( \ +/* LAYOUT_all + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───────┐ + * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │2D │ │0D │ 2u Backspace + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ └───────┘ + * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤ ┌───┬──────┬───┐ + * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3B │3C │3D │ │3B │3C │3D │ 1/1.75/1u + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤ └───┴──────┴───┘ + * │40 │41 │42 │45 │49 │4A │4B │4C │4D │ + * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘ + * ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐ + * │40 │41 │42 │45 │4A │4C │4D │ Tsangan + * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ + */ + +#define LAYOUT_all( \ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \ 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, \ @@ -32,3 +49,31 @@ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, XXX, K3B, K3C, K3D }, \ { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, K4B, K4C, K4D } \ } + +#define LAYOUT_60_ansi_arrow( \ + 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, K3B, K3C, K3D, \ + K40, K41, K42, K45, 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, XXX }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, XXX, K3B, K3C, K3D }, \ + { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, K4B, K4C, K4D } \ +} + +#define LAYOUT_60_tsangan_hhkb( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \ + 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, K3B, K3C, K3D, \ + K40, K41, K42, K45, K4A, 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, XXX, K3B, K3C, K3D }, \ + { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, XXX, K4A, XXX, K4C, K4D } \ +} diff --git a/keyboards/xelus/dawn60/rev1_qmk/rules.mk b/keyboards/xelus/dawn60/rev1_qmk/rules.mk index edfba27304a4..71b232f9be43 100644 --- a/keyboards/xelus/dawn60/rev1_qmk/rules.mk +++ b/keyboards/xelus/dawn60/rev1_qmk/rules.mk @@ -2,13 +2,6 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Do not put the microcontroller into power saving mode @@ -19,20 +12,15 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # 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 on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. - We have custom RGB underglow @@ -42,7 +30,7 @@ RGB_MATRIX_DRIVER = custom # Enable RGB matrix effects. COMMON_VPATH += $(DRIVER_PATH)/issi # project specific files -SRC += drivers/issi/is31fl3731.c \ +SRC += drivers/led/issi/is31fl3731.c \ ws2812.c QUANTUM_LIB_SRC += i2c_master.c diff --git a/keyboards/xelus/dharma/config.h b/keyboards/xelus/dharma/config.h new file mode 100644 index 000000000000..eab2c224c2f8 --- /dev/null +++ b/keyboards/xelus/dharma/config.h @@ -0,0 +1,51 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x5845 // XE +#define PRODUCT_ID 0xDAAA // Dharma +#define DEVICE_VER 0x0001 +#define MANUFACTURER Xelus +#define PRODUCT Dharma + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 18 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { D0, D1, D2, D3, B0 } +#define MATRIX_COL_PINS { B3, B2, B1, D5, D4, E6, D6, D7, B4, B5, B6, C6, C7, F7, F6, F5, F4, F1 } +#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 + +#define FORCE_NKRO + +#define LED_CAPS_LOCK_PIN B7 +#define LED_NUM_LOCK_PIN F0 +#define LED_PIN_ON_STATE 1 diff --git a/keyboards/xelus/dharma/dharma.c b/keyboards/xelus/dharma/dharma.c new file mode 100644 index 000000000000..15493ff022bc --- /dev/null +++ b/keyboards/xelus/dharma/dharma.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "quantum.h" diff --git a/keyboards/xelus/dharma/dharma.h b/keyboards/xelus/dharma/dharma.h new file mode 100644 index 000000000000..3626877b1366 --- /dev/null +++ b/keyboards/xelus/dharma/dharma.h @@ -0,0 +1,35 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ____ KC_NO + +#define LAYOUT_all( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K012, K011, K010, K013, K213, K014, K015, K016, K017, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, K117, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, K215, K216, K217, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K311, K312, K313, K314, K315, K316, K317, \ + K400, K401, K402, K405, K409, K411, K412, K413, K414, K415, K416 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, K017 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, K117 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, K217 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, ____, K311, K312, K313, K314, K315, K316, K317 }, \ + { K400, K401, K402, ____, ____, K405, ____, ____, ____, K409, ____, K411, K412, K413, K414, K415, K416, ____ } \ +} diff --git a/keyboards/xelus/dharma/info.json b/keyboards/xelus/dharma/info.json new file mode 100644 index 000000000000..661df2afbbc7 --- /dev/null +++ b/keyboards/xelus/dharma/info.json @@ -0,0 +1,97 @@ +{ + "keyboard_name": "Xelus Dharma", + "url": "", + "maintainer": "Xelus22", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1", "x":1, "y":0}, + {"label":"2", "x":2, "y":0}, + {"label":"3", "x":3, "y":0}, + {"label":"4", "x":4, "y":0}, + {"label":"5", "x":5, "y":0}, + {"label":"6", "x":6, "y":0}, + {"label":"7", "x":7, "y":0}, + {"label":"8", "x":8, "y":0}, + {"label":"9", "x":9, "y":0}, + {"label":"0", "x":10, "y":0}, + {"label":"-", "x":11, "y":0}, + {"label":"=", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0}, + {"label":"Delete", "x":14, "y":0}, + {"label":"Num Lock", "x":15.5, "y":0}, + {"label":"/", "x":16.5, "y":0}, + {"label":"*", "x":17.5, "y":0}, + {"label":"-", "x":18.5, "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":"7", "x":15.5, "y":1}, + {"label":"8", "x":16.5, "y":1}, + {"label":"9", "x":17.5, "y":1}, + {"label":"+", "x":18.5, "y":1}, + + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";", "x":10.75, "y":2}, + {"label":"'", "x":11.75, "y":2}, + {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + {"label":"4", "x":15.5, "y":2}, + {"label":"5", "x":16.5, "y":2}, + {"label":"6", "x":17.5, "y":2}, + {"label":"+", "x":18.5, "y":2}, + + {"label":"Shift", "x":0, "y":3, "w":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",", "x":9.25, "y":3}, + {"label":".", "x":10.25, "y":3}, + {"label":"/", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"Up", "x":14.25, "y":3.25}, + {"label":"1", "x":15.5, "y":3}, + {"label":"2", "x":16.5, "y":3}, + {"label":"3", "x":17.5, "y":3}, + {"label":"Enter", "x":18.5, "y":3, "h":2}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"GUI", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space", "x":3.75, "y":4, "w":6.25}, + {"label":"Alt", "x":10, "y":4, "w":1.5}, + {"label":"Ctrl", "x":11.5, "y":4, "w":1.5}, + {"label":"Left", "x":13.25, "y":4.25}, + {"label":"Down", "x":14.25, "y":4.25}, + {"label":"Right", "x":15.25, "y":4.25}, + {"label":"0", "x":16.5, "y":4}, + {"label":".", "x":17.5, "y":4} + ] + } + } +} diff --git a/keyboards/xelus/dharma/keymaps/default/config.h b/keyboards/xelus/dharma/keymaps/default/config.h new file mode 100644 index 000000000000..ea9bfa60eb8e --- /dev/null +++ b/keyboards/xelus/dharma/keymaps/default/config.h @@ -0,0 +1,19 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#define USB_POLLING_INTERVAL_MS 1 +#define QMK_KEYS_PER_SCAN 4 diff --git a/keyboards/xelus/dharma/keymaps/default/keymap.c b/keyboards/xelus/dharma/keymaps/default/keymap.c new file mode 100644 index 000000000000..8039663e5f00 --- /dev/null +++ b/keyboards/xelus/dharma/keymaps/default/keymap.c @@ -0,0 +1,37 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +// Default layout for Dharma +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + // Default layer + [0] = 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_BSLS, KC_DEL, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_P7, KC_P8, KC_P9, KC_PPLS, + MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ), + + // Fn1 Layer + [1] = 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, RESET, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_CAPS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ) +}; diff --git a/keyboards/xelus/dharma/keymaps/default/readme.md b/keyboards/xelus/dharma/keymaps/default/readme.md new file mode 100644 index 000000000000..6ed75f1ec3f5 --- /dev/null +++ b/keyboards/xelus/dharma/keymaps/default/readme.md @@ -0,0 +1,2 @@ +# The Default Dharma Layout + diff --git a/keyboards/xelus/dharma/keymaps/via/config.h b/keyboards/xelus/dharma/keymaps/via/config.h new file mode 100644 index 000000000000..ea9bfa60eb8e --- /dev/null +++ b/keyboards/xelus/dharma/keymaps/via/config.h @@ -0,0 +1,19 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#define USB_POLLING_INTERVAL_MS 1 +#define QMK_KEYS_PER_SCAN 4 diff --git a/keyboards/xelus/dharma/keymaps/via/keymap.c b/keyboards/xelus/dharma/keymaps/via/keymap.c new file mode 100644 index 000000000000..7f28ab1c23d6 --- /dev/null +++ b/keyboards/xelus/dharma/keymaps/via/keymap.c @@ -0,0 +1,53 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +// VIA layout for Dharma +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + // Default layer + [0] = 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_BSLS, KC_DEL, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_P7, KC_P8, KC_P9, KC_PPLS, + MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ), + + // Fn1 Layer + [1] = 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, RESET, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_CAPS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), + + // Fn2 Layer + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), + + // Fn3 Layer + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), +}; diff --git a/keyboards/xelus/dharma/keymaps/via/readme.md b/keyboards/xelus/dharma/keymaps/via/readme.md new file mode 100644 index 000000000000..a64bbb0faf4e --- /dev/null +++ b/keyboards/xelus/dharma/keymaps/via/readme.md @@ -0,0 +1,2 @@ +# The VIA Dharma Layout + diff --git a/keyboards/xelus/dharma/keymaps/via/rules.mk b/keyboards/xelus/dharma/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/xelus/dharma/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/xelus/dharma/readme.md b/keyboards/xelus/dharma/readme.md new file mode 100644 index 000000000000..37d06356a924 --- /dev/null +++ b/keyboards/xelus/dharma/readme.md @@ -0,0 +1,20 @@ +# Dharma + +A Mini 1800 - esque keyboard by [Janglad](https://qoda.studio/dharma/) + +* Keyboard Maintainer: [Xelus22](https://github.com/Xelus22) +* Hardware Supported: Dharma +* Hardware Availability: Custom keyboard group buys + +Make example for this keyboard (after setting up your build environment): + + make xelus/dharma:default + +Reset your keyboard in 3 ways: +
    +
  1. Software reset on Fn + Backspace
  2. +
  3. Bootmagic reset: hold down the top left key (usually escape) and plugin the keyboard
  4. +
  5. Physical reset button: on the back of the PCB, use tweezers and short RST and GND together
  6. +
+ +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/xelus/dharma/rules.mk b/keyboards/xelus/dharma/rules.mk new file mode 100644 index 000000000000..ef61685f7c09 --- /dev/null +++ b/keyboards/xelus/dharma/rules.mk @@ -0,0 +1,19 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 diff --git a/keyboards/xelus/kangaroo/config.h b/keyboards/xelus/kangaroo/config.h index f6b17c24a37b..1d746b342e0d 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/kangaroo/info.json b/keyboards/xelus/kangaroo/info.json index 63fd452fe905..c7b45eb946cb 100644 --- a/keyboards/xelus/kangaroo/info.json +++ b/keyboards/xelus/kangaroo/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Kangaroo", "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/xelus/kangaroo", "maintainer": "qmk", - "width": 22.5, - "height": 6.25, "layouts": { "LAYOUT_all": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"label":"PrtSc", "x":4.25, "y":0}, {"label":"Scroll Lock", "x":5.25, "y":0}, {"label":"Pause", "x":6.25, "y":0}, {"label":"Esc", "x":7.5, "y":0}, {"label":"F1", "x":9.5, "y":0}, {"label":"F2", "x":10.5, "y":0}, {"label":"F3", "x":11.5, "y":0}, {"label":"F4", "x":12.5, "y":0}, {"label":"F5", "x":14, "y":0}, {"label":"F6", "x":15, "y":0}, {"label":"F7", "x":16, "y":0}, {"label":"F8", "x":17, "y":0}, {"label":"F9", "x":18.5, "y":0}, {"label":"F10", "x":19.5, "y":0}, {"label":"F11", "x":20.5, "y":0}, {"label":"F12", "x":21.5, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"label":"Insert", "x":4.25, "y":1.25}, {"label":"Home", "x":5.25, "y":1.25}, {"label":"PgUp", "x":6.25, "y":1.25}, {"label":"~", "x":7.5, "y":1.25}, {"label":"!", "x":8.5, "y":1.25}, {"label":"@", "x":9.5, "y":1.25}, {"label":"#", "x":10.5, "y":1.25}, {"label":"$", "x":11.5, "y":1.25}, {"label":"%", "x":12.5, "y":1.25}, {"label":"^", "x":13.5, "y":1.25}, {"label":"&", "x":14.5, "y":1.25}, {"label":"*", "x":15.5, "y":1.25}, {"label":"(", "x":16.5, "y":1.25}, {"label":")", "x":17.5, "y":1.25}, {"label":"_", "x":18.5, "y":1.25}, {"label":"+", "x":19.5, "y":1.25}, {"x":20.5, "y":1.25}, {"x":21.5, "y":1.25}, {"x":0, "y":2.25}, {"x":1, "y":2.25}, {"x":2, "y":2.25}, {"x":3, "y":2.25}, {"label":"Delete", "x":4.25, "y":2.25}, {"label":"End", "x":5.25, "y":2.25}, {"label":"PgDn", "x":6.25, "y":2.25}, {"label":"Tab", "x":7.5, "y":2.25, "w":1.5}, {"label":"Q", "x":9, "y":2.25}, {"label":"W", "x":10, "y":2.25}, {"label":"E", "x":11, "y":2.25}, {"label":"R", "x":12, "y":2.25}, {"label":"T", "x":13, "y":2.25}, {"label":"Y", "x":14, "y":2.25}, {"label":"U", "x":15, "y":2.25}, {"label":"I", "x":16, "y":2.25}, {"label":"O", "x":17, "y":2.25}, {"label":"P", "x":18, "y":2.25}, {"label":"{", "x":19, "y":2.25}, {"label":"}", "x":20, "y":2.25}, {"label":"|", "x":21, "y":2.25, "w":1.5}, {"x":0, "y":3.25}, {"x":1, "y":3.25}, {"x":2, "y":3.25}, {"x":3, "y":3.25}, {"label":"Caps Lock", "x":7.5, "y":3.25, "w":1.75}, {"label":"A", "x":9.25, "y":3.25}, {"label":"S", "x":10.25, "y":3.25}, {"label":"D", "x":11.25, "y":3.25}, {"label":"F", "x":12.25, "y":3.25}, {"label":"G", "x":13.25, "y":3.25}, {"label":"H", "x":14.25, "y":3.25}, {"label":"J", "x":15.25, "y":3.25}, {"label":"K", "x":16.25, "y":3.25}, {"label":"L", "x":17.25, "y":3.25}, {"label":":", "x":18.25, "y":3.25}, {"label":"\"", "x":19.25, "y":3.25}, {"label":"Enter", "x":20.25, "y":3.25, "w":2.25}, {"x":0, "y":4.25}, {"x":1, "y":4.25}, {"x":2, "y":4.25}, {"x":3, "y":4.25}, {"label":"\u2191", "x":5.25, "y":4.25}, {"label":"Shift", "x":7.5, "y":4.25, "w":2.25}, {"label":"Z", "x":9.75, "y":4.25}, {"label":"X", "x":10.75, "y":4.25}, {"label":"C", "x":11.75, "y":4.25}, {"label":"V", "x":12.75, "y":4.25}, {"label":"B", "x":13.75, "y":4.25}, {"label":"N", "x":14.75, "y":4.25}, {"label":"M", "x":15.75, "y":4.25}, {"label":"<", "x":16.75, "y":4.25}, {"label":">", "x":17.75, "y":4.25}, {"label":"?", "x":18.75, "y":4.25}, {"x":19.75, "y":4.25, "w":1.75}, {"x":21.5, "y":4.25}, {"x":0, "y":5.25}, {"x":1, "y":5.25}, {"x":2, "y":5.25}, {"x":3, "y":5.25}, {"label":"\u2190", "x":4.25, "y":5.25}, {"label":"\u2193", "x":5.25, "y":5.25}, {"label":"\u2192", "x":6.25, "y":5.25}, {"label":"Ctrl", "x":7.5, "y":5.25, "w":1.25}, {"label":"Win", "x":8.75, "y":5.25, "w":1.25}, {"label":"Alt", "x":10, "y":5.25, "w":1.25}, {"x":11.25, "y":5.25, "w":6.25}, {"label":"Alt", "x":17.5, "y":5.25, "w":1.25}, {"label":"Win", "x":18.75, "y":5.25, "w":1.25}, {"label":"Menu", "x":20, "y":5.25, "w":1.25}, {"label":"Ctrl", "x":21.25, "y":5.25, "w":1.25}] diff --git a/keyboards/xelus/kangaroo/keymaps/default/config.h b/keyboards/xelus/kangaroo/keymaps/default/config.h new file mode 100644 index 000000000000..ea9bfa60eb8e --- /dev/null +++ b/keyboards/xelus/kangaroo/keymaps/default/config.h @@ -0,0 +1,19 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#define USB_POLLING_INTERVAL_MS 1 +#define QMK_KEYS_PER_SCAN 4 diff --git a/keyboards/xelus/kangaroo/keymaps/via/config.h b/keyboards/xelus/kangaroo/keymaps/via/config.h new file mode 100644 index 000000000000..ea9bfa60eb8e --- /dev/null +++ b/keyboards/xelus/kangaroo/keymaps/via/config.h @@ -0,0 +1,19 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#define USB_POLLING_INTERVAL_MS 1 +#define QMK_KEYS_PER_SCAN 4 diff --git a/keyboards/xelus/kangaroo/rules.mk b/keyboards/xelus/kangaroo/rules.mk index b4b4932343da..cf4671b00202 100644 --- a/keyboards/xelus/kangaroo/rules.mk +++ b/keyboards/xelus/kangaroo/rules.mk @@ -8,15 +8,13 @@ BOOTLOADER = stm32-dfu # comment out to disable the options. # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output EEPROM_DRIVER = i2c diff --git a/keyboards/xelus/ninjin/info.json b/keyboards/xelus/ninjin/info.json new file mode 100644 index 000000000000..8b44ea9dedc3 --- /dev/null +++ b/keyboards/xelus/ninjin/info.json @@ -0,0 +1,105 @@ +{ + "keyboard_name": "Ninjin", + "url": "", + "maintainer": "Xelus", + "layout_aliases": { + "LAYOUT_all": "LAYOUT_tkl_ansi_tsangan" + }, + "layouts": { + "LAYOUT_tkl_ansi_tsangan": { + "layout": [ + {"x":0, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.5, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + {"x":15.25, "y":0}, + {"x":16.25, "y":0}, + {"x":17.25, "y":0}, + + {"x":0, "y":1.25}, + {"x":1, "y":1.25}, + {"x":2, "y":1.25}, + {"x":3, "y":1.25}, + {"x":4, "y":1.25}, + {"x":5, "y":1.25}, + {"x":6, "y":1.25}, + {"x":7, "y":1.25}, + {"x":8, "y":1.25}, + {"x":9, "y":1.25}, + {"x":10, "y":1.25}, + {"x":11, "y":1.25}, + {"x":12, "y":1.25}, + {"x":13, "y":1.25, "w":2}, + {"x":15.25, "y":1.25}, + {"x":16.25, "y":1.25}, + {"x":17.25, "y":1.25}, + + {"x":0, "y":2.25, "w":1.5}, + {"x":1.5, "y":2.25}, + {"x":2.5, "y":2.25}, + {"x":3.5, "y":2.25}, + {"x":4.5, "y":2.25}, + {"x":5.5, "y":2.25}, + {"x":6.5, "y":2.25}, + {"x":7.5, "y":2.25}, + {"x":8.5, "y":2.25}, + {"x":9.5, "y":2.25}, + {"x":10.5, "y":2.25}, + {"x":11.5, "y":2.25}, + {"x":12.5, "y":2.25}, + {"x":13.5, "y":2.25, "w":1.5}, + {"x":15.25, "y":2.25}, + {"x":16.25, "y":2.25}, + {"x":17.25, "y":2.25}, + + {"x":0, "y":3.25, "w":1.75}, + {"x":1.75, "y":3.25}, + {"x":2.75, "y":3.25}, + {"x":3.75, "y":3.25}, + {"x":4.75, "y":3.25}, + {"x":5.75, "y":3.25}, + {"x":6.75, "y":3.25}, + {"x":7.75, "y":3.25}, + {"x":8.75, "y":3.25}, + {"x":9.75, "y":3.25}, + {"x":10.75, "y":3.25}, + {"x":11.75, "y":3.25}, + {"x":12.75, "y":3.25, "w":2.25}, + + {"x":0, "y":4.25, "w":2.25}, + {"x":2.25, "y":4.25}, + {"x":3.25, "y":4.25}, + {"x":4.25, "y":4.25}, + {"x":5.25, "y":4.25}, + {"x":6.25, "y":4.25}, + {"x":7.25, "y":4.25}, + {"x":8.25, "y":4.25}, + {"x":9.25, "y":4.25}, + {"x":10.25, "y":4.25}, + {"x":11.25, "y":4.25}, + {"x":12.25, "y":4.25, "w":2.75}, + {"x":16.25, "y":4.25}, + + {"x":0, "y":5.25, "w":1.5}, + {"x":1.5, "y":5.25}, + {"x":2.5, "y":5.25, "w":1.5}, + {"x":4, "y":5.25, "w":7}, + {"x":11, "y":5.25, "w":1.5}, + {"x":12.5, "y":5.25}, + {"x":13.5, "y":5.25, "w":1.5}, + {"x":15.25, "y":5.25}, + {"x":16.25, "y":5.25}, + {"x":17.25, "y":5.25} + ] + } + } +} diff --git a/keyboards/xelus/ninjin/keymaps/default/keymap.c b/keyboards/xelus/ninjin/keymaps/default/keymap.c index 9a3f4896ed2e..2bc991e42c74 100644 --- a/keyboards/xelus/ninjin/keymaps/default/keymap.c +++ b/keyboards/xelus/ninjin/keymaps/default/keymap.c @@ -17,7 +17,7 @@ #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_all( + [0] = LAYOUT_tkl_ansi_tsangan( KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, @@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), - [1] = LAYOUT_all( + [1] = LAYOUT_tkl_ansi_tsangan( RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, diff --git a/keyboards/xelus/ninjin/keymaps/via/keymap.c b/keyboards/xelus/ninjin/keymaps/via/keymap.c index 4422a5995837..0af46375c436 100644 --- a/keyboards/xelus/ninjin/keymaps/via/keymap.c +++ b/keyboards/xelus/ninjin/keymaps/via/keymap.c @@ -17,7 +17,7 @@ #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_all( + [0] = LAYOUT_tkl_ansi_tsangan( KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, @@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), - [1] = LAYOUT_all( + [1] = LAYOUT_tkl_ansi_tsangan( RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), - [2] = LAYOUT_all( + [2] = LAYOUT_tkl_ansi_tsangan( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, diff --git a/keyboards/xelus/ninjin/ninjin.h b/keyboards/xelus/ninjin/ninjin.h index 40a01ea5aa13..f43c028286c4 100644 --- a/keyboards/xelus/ninjin/ninjin.h +++ b/keyboards/xelus/ninjin/ninjin.h @@ -20,7 +20,7 @@ #define ____ KC_NO -#define LAYOUT_all( \ +#define LAYOUT_tkl_ansi_tsangan( \ K000, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, \ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, \ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, \ diff --git a/keyboards/xelus/ninjin/rules.mk b/keyboards/xelus/ninjin/rules.mk index 33e0419e3fd9..a14f651a5dbb 100644 --- a/keyboards/xelus/ninjin/rules.mk +++ b/keyboards/xelus/ninjin/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # 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 WS2812_DRIVER = pwm diff --git a/keyboards/xelus/pachi/mini_32u4/rules.mk b/keyboards/xelus/pachi/mini_32u4/rules.mk index 32981133b2eb..ef61685f7c09 100644 --- a/keyboards/xelus/pachi/mini_32u4/rules.mk +++ b/keyboards/xelus/pachi/mini_32u4/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/xelus/pachi/readme.md b/keyboards/xelus/pachi/readme.md index 4f40465672d4..d6a0aec88bfb 100644 --- a/keyboards/xelus/pachi/readme.md +++ b/keyboards/xelus/pachi/readme.md @@ -9,6 +9,7 @@ Make example for this keyboard (after setting up your build environment): make xelus/pachi/rev1:default make xelus/pachi/mini_32u4:default - make xelus/pachi/rgb:default + make xelus/pachi/rgb/rev1:default + make xelus/pachi/rgb/rev2: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/xelus/pachi/rev1/rules.mk b/keyboards/xelus/pachi/rev1/rules.mk index 04ebc638ca91..e8cb768e3634 100644 --- a/keyboards/xelus/pachi/rev1/rules.mk +++ b/keyboards/xelus/pachi/rev1/rules.mk @@ -10,16 +10,13 @@ OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/xelus/pachi/rgb/config.h b/keyboards/xelus/pachi/rgb/config.h index f9765085071a..956d35d69b05 100644 --- a/keyboards/xelus/pachi/rgb/config.h +++ b/keyboards/xelus/pachi/rgb/config.h @@ -14,63 +14,4 @@ * along with this program. If not, see . */ -#pragma once - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0x5845 // "XE" -#define PRODUCT_ID 0x5052 // "PR" -#define DEVICE_VER 0x0001 -#define MANUFACTURER Xelus -#define PRODUCT Xelus Pachi RGB - -/* key matrix size */ -#define MATRIX_ROWS 6 -#define MATRIX_COLS 17 - -/* key matrix pins */ -#define MATRIX_ROW_PINS { B14, B13, B12, B2, A8, B15 } -#define MATRIX_COL_PINS { C13, C14, C15, H0, A0, A1, A2, A3, A4, A5, A6, A7, B0, B1, H1, B10, B11 } -#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 - -// I2C setup -#define I2C1_SCL 8 -#define I2C1_SDA 9 -#define I2C1_SCL_PAL_MODE 4 -#define I2C1_SDA_PAL_MODE 4 -#define I2C1_TIMINGR_PRESC 0U -#define I2C1_TIMINGR_SCLDEL 11U -#define I2C1_TIMINGR_SDADEL 0U -#define I2C1_TIMINGR_SCLH 14U -#define I2C1_TIMINGR_SCLL 42U - -// I2C EEPROM -#define EEPROM_I2C_24LC64 - -// RGB Matrix defines -#define DRIVER_ADDR_1 0b0110000 -#define DRIVER_ADDR_2 0b0110001 - -#define DRIVER_COUNT 1 -#define DRIVER_1_LED_TOTAL 117 -#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL -#define ISSI_DRIVER_TOTAL DRIVER_LED_TOTAL - -#define RGB_MATRIX_STARTUP_VAL 80 -#define RGB_MATRIX_FRAMEBUFFER_EFFECTS -#define RGB_MATRIX_KEYPRESSES -#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended -#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL - -#define FORCE_NKRO +#include "config_common.h" diff --git a/keyboards/xelus/pachi/rgb/rev1/config.h b/keyboards/xelus/pachi/rgb/rev1/config.h new file mode 100644 index 000000000000..66aab54276ce --- /dev/null +++ b/keyboards/xelus/pachi/rgb/rev1/config.h @@ -0,0 +1,120 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x5845 // "XE" +#define PRODUCT_ID 0x5052 // "PR" +#define DEVICE_VER 0x0001 +#define MANUFACTURER Xelus +#define PRODUCT Xelus Pachi RGB + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 17 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { B14, B13, B12, B2, A8, B15 } +#define MATRIX_COL_PINS { C13, C14, C15, H0, A0, A1, A2, A3, A4, A5, A6, A7, B0, B1, H1, B10, B11 } +#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 + +// I2C setup +#define I2C1_SCL 8 +#define I2C1_SDA 9 +#define I2C1_SCL_PAL_MODE 4 +#define I2C1_SDA_PAL_MODE 4 +#define I2C1_TIMINGR_PRESC 0U +#define I2C1_TIMINGR_SCLDEL 7U +#define I2C1_TIMINGR_SDADEL 0U +#define I2C1_TIMINGR_SCLH 45U +#define I2C1_TIMINGR_SCLL 149U + +// I2C EEPROM +#define EEPROM_I2C_24LC64 + +// RGB Matrix defines +#define DRIVER_ADDR_1 0b0110000 + +#define DRIVER_COUNT 1 +#define DRIVER_1_LED_TOTAL 117 +#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL +#define ISSI_DRIVER_TOTAL DRIVER_LED_TOTAL + +#define RGB_MATRIX_STARTUP_VAL 80 +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define RGB_MATRIX_KEYPRESSES +#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended +#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL + +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_FRACTAL +#define ENABLE_RGB_MATRIX_PIXEL_RAIN + +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN + +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + +#define FORCE_NKRO diff --git a/keyboards/xelus/pachi/rgb/halconf.h b/keyboards/xelus/pachi/rgb/rev1/halconf.h similarity index 100% rename from keyboards/xelus/pachi/rgb/halconf.h rename to keyboards/xelus/pachi/rgb/rev1/halconf.h diff --git a/keyboards/xelus/pachi/rgb/mcuconf.h b/keyboards/xelus/pachi/rgb/rev1/mcuconf.h similarity index 100% rename from keyboards/xelus/pachi/rgb/mcuconf.h rename to keyboards/xelus/pachi/rgb/rev1/mcuconf.h diff --git a/keyboards/xelus/pachi/rgb/rev1/readme.md b/keyboards/xelus/pachi/rgb/rev1/readme.md new file mode 100644 index 000000000000..2fa775255a14 --- /dev/null +++ b/keyboards/xelus/pachi/rgb/rev1/readme.md @@ -0,0 +1,17 @@ +# Pachi RGB Rev 1 + +Pachi RGB Rev 1 TKL Keyboard that is a per-key RGB, hotswap, ANSI and tsangan. + +* Keyboard Maintainer: [Xelus22](https://github.com/Xelus22) +* Hardware Supported: Group buys + +Make example for this keyboard (after setting up your build environment): + + make xelus/pachi/rgb/rev1:default + +Reset your keyboard in 3 ways: +* Software reset on Fn + Backspace +* Bootmagic reset: hold down the top left key (usually escape) and plugin the keyboard +* Physical reset button: on the back of the PCB, there should be a small golden button you can press + +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/xelus/pachi/rgb/rev1/rev1.c b/keyboards/xelus/pachi/rgb/rev1/rev1.c new file mode 100644 index 000000000000..70742650094a --- /dev/null +++ b/keyboards/xelus/pachi/rgb/rev1/rev1.c @@ -0,0 +1,239 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "rev1.h" + +// tested and working +void matrix_io_delay(void) { __asm__ volatile("nop\nnop\nnop\n"); } + +#ifdef RGB_MATRIX_ENABLE +#include "i2c_master.h" +#include "drivers/led/issi/is31fl3741.h" +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { +/* Refer to IS31 manual for these locations + * driver + * | R location + * | | G location + * | | | B location + * | | | | */ + {0, CS39_SW1, CS38_SW1, CS37_SW1}, //A1 + {0, CS36_SW1, CS35_SW1, CS34_SW1}, //A2 + {0, CS33_SW1, CS32_SW1, CS31_SW1}, //A3 + {0, CS30_SW1, CS29_SW1, CS28_SW1}, //A4 + {0, CS27_SW1, CS26_SW1, CS25_SW1}, //A5 + {0, CS24_SW1, CS23_SW1, CS22_SW1}, //A6 + {0, CS21_SW1, CS20_SW1, CS19_SW1}, //A7 + {0, CS18_SW1, CS17_SW1, CS16_SW1}, //A8 + {0, CS15_SW1, CS14_SW1, CS13_SW1}, //A9 + {0, CS12_SW1, CS11_SW1, CS10_SW1}, //A10 + {0, CS9_SW1 , CS8_SW1 , CS7_SW1 }, //A11 + {0, CS6_SW1 , CS5_SW1 , CS4_SW1 }, //A12 + {0, CS3_SW1 , CS2_SW1 , CS1_SW1 }, //A13 + + {0, CS39_SW2, CS38_SW2, CS37_SW2}, //B1 + {0, CS36_SW2, CS35_SW2, CS34_SW2}, //B2 + {0, CS33_SW2, CS32_SW2, CS31_SW2}, //B3 + {0, CS30_SW2, CS29_SW2, CS28_SW2}, //B4 + {0, CS27_SW2, CS26_SW2, CS25_SW2}, //B5 + {0, CS24_SW2, CS23_SW2, CS22_SW2}, //B6 + {0, CS21_SW2, CS20_SW2, CS19_SW2}, //B7 + {0, CS18_SW2, CS17_SW2, CS16_SW2}, //B8 + {0, CS15_SW2, CS14_SW2, CS13_SW2}, //B9 + {0, CS12_SW2, CS11_SW2, CS10_SW2}, //B10 + {0, CS9_SW2 , CS8_SW2 , CS7_SW2 }, //B11 + {0, CS6_SW2 , CS5_SW2 , CS4_SW2 }, //B12 + {0, CS3_SW2 , CS2_SW2 , CS1_SW2 }, //B13 + + {0, CS39_SW3, CS38_SW3, CS37_SW3}, //C1 + {0, CS36_SW3, CS35_SW3, CS34_SW3}, //C2 + {0, CS33_SW3, CS32_SW3, CS31_SW3}, //C3 + {0, CS30_SW3, CS29_SW3, CS28_SW3}, //C4 + {0, CS27_SW3, CS26_SW3, CS25_SW3}, //C5 + {0, CS24_SW3, CS23_SW3, CS22_SW3}, //C6 + {0, CS21_SW3, CS20_SW3, CS19_SW3}, //C7 + {0, CS18_SW3, CS17_SW3, CS16_SW3}, //C8 + {0, CS15_SW3, CS14_SW3, CS13_SW3}, //C9 + {0, CS12_SW3, CS11_SW3, CS10_SW3}, //C10 + {0, CS9_SW3 , CS8_SW3 , CS7_SW3 }, //C11 + {0, CS6_SW3 , CS5_SW3 , CS4_SW3 }, //C12 + {0, CS3_SW3 , CS2_SW3 , CS1_SW3 }, //C13 + + {0, CS39_SW4, CS38_SW4, CS37_SW4}, //D1 + {0, CS36_SW4, CS35_SW4, CS34_SW4}, //D2 + {0, CS33_SW4, CS32_SW4, CS31_SW4}, //D3 + {0, CS30_SW4, CS29_SW4, CS28_SW4}, //D4 + {0, CS27_SW4, CS26_SW4, CS25_SW4}, //D5 + {0, CS24_SW4, CS23_SW4, CS22_SW4}, //D6 + {0, CS21_SW4, CS20_SW4, CS19_SW4}, //D7 + {0, CS18_SW4, CS17_SW4, CS16_SW4}, //D8 + {0, CS15_SW4, CS14_SW4, CS13_SW4}, //D9 + {0, CS12_SW4, CS11_SW4, CS10_SW4}, //D10 + {0, CS9_SW4 , CS8_SW4 , CS7_SW4 }, //D11 + {0, CS6_SW4 , CS5_SW4 , CS4_SW4 }, //D12 + {0, CS3_SW4 , CS2_SW4 , CS1_SW4 }, //D13 + + {0, CS39_SW5, CS38_SW5, CS37_SW5}, //E1 + {0, CS36_SW5, CS35_SW5, CS34_SW5}, //E2 + {0, CS33_SW5, CS32_SW5, CS31_SW5}, //E3 + {0, CS30_SW5, CS29_SW5, CS28_SW5}, //E4 + {0, CS27_SW5, CS26_SW5, CS25_SW5}, //E5 + {0, CS24_SW5, CS23_SW5, CS22_SW5}, //E6 + {0, CS21_SW5, CS20_SW5, CS19_SW5}, //E7 + {0, CS18_SW5, CS17_SW5, CS16_SW5}, //E8 + {0, CS15_SW5, CS14_SW5, CS13_SW5}, //E9 + {0, CS12_SW5, CS11_SW5, CS10_SW5}, //E10 + {0, CS9_SW5 , CS8_SW5 , CS7_SW5 }, //E11 + {0, CS6_SW5 , CS5_SW5 , CS4_SW5 }, //E12 + {0, CS3_SW5 , CS2_SW5 , CS1_SW5 }, //E13 + + {0, CS39_SW6, CS38_SW6, CS37_SW6}, //F1 + {0, CS36_SW6, CS35_SW6, CS34_SW6}, //F2 + {0, CS33_SW6, CS32_SW6, CS31_SW6}, //F3 + {0, CS30_SW6, CS29_SW6, CS28_SW6}, //F4 + {0, CS27_SW6, CS26_SW6, CS25_SW6}, //F5 + {0, CS24_SW6, CS23_SW6, CS22_SW6}, //F6 + {0, CS21_SW6, CS20_SW6, CS19_SW6}, //F7 + {0, CS18_SW6, CS17_SW6, CS16_SW6}, //F8 + {0, CS15_SW6, CS14_SW6, CS13_SW6}, //F9 + {0, CS12_SW6, CS11_SW6, CS10_SW6}, //F10 + {0, CS9_SW6 , CS8_SW6 , CS7_SW6 }, //F11 + {0, CS6_SW6 , CS5_SW6 , CS4_SW6 }, //F12 + {0, CS3_SW6 , CS2_SW6 , CS1_SW6 }, //F13 + + {0, CS39_SW7, CS38_SW7, CS37_SW7}, //G1 + {0, CS36_SW7, CS35_SW7, CS34_SW7}, //G2 + {0, CS33_SW7, CS32_SW7, CS31_SW7}, //G3 + {0, CS30_SW7, CS29_SW7, CS28_SW7}, //G4 + {0, CS27_SW7, CS26_SW7, CS25_SW7}, //G5 + {0, CS24_SW7, CS23_SW7, CS22_SW7}, //G6 + {0, CS21_SW7, CS20_SW7, CS19_SW7}, //G7 + {0, CS18_SW7, CS17_SW7, CS16_SW7}, //G8 + {0, CS15_SW7, CS14_SW7, CS13_SW7}, //G9 + {0, CS12_SW7, CS11_SW7, CS10_SW7}, //G10 + {0, CS9_SW7 , CS8_SW7 , CS7_SW7 }, //G11 + {0, CS6_SW7 , CS5_SW7 , CS4_SW7 }, //G12 + {0, CS3_SW7 , CS2_SW7 , CS1_SW7 }, //G13 + + {0, CS39_SW8, CS38_SW8, CS37_SW8}, //H1 + {0, CS36_SW8, CS35_SW8, CS34_SW8}, //H2 + {0, CS33_SW8, CS32_SW8, CS31_SW8}, //H3 + {0, CS30_SW8, CS29_SW8, CS28_SW8}, //H4 + {0, CS27_SW8, CS26_SW8, CS25_SW8}, //H5 + {0, CS24_SW8, CS23_SW8, CS22_SW8}, //H6 + {0, CS21_SW8, CS20_SW8, CS19_SW8}, //H7 + {0, CS18_SW8, CS17_SW8, CS16_SW8}, //H8 + {0, CS15_SW8, CS14_SW8, CS13_SW8}, //H9 + {0, CS12_SW8, CS11_SW8, CS10_SW8}, //H10 + {0, CS9_SW8 , CS8_SW8 , CS7_SW8 }, //H11 + {0, CS6_SW8 , CS5_SW8 , CS4_SW8 }, //H12 + {0, CS3_SW8 , CS2_SW8 , CS1_SW8 }, //H13 + + {0, CS39_SW9, CS38_SW9, CS37_SW9}, //I1 + {0, CS36_SW9, CS35_SW9, CS34_SW9}, //I2 + {0, CS33_SW9, CS32_SW9, CS31_SW9}, //I3 + {0, CS30_SW9, CS29_SW9, CS28_SW9}, //I4 + {0, CS27_SW9, CS26_SW9, CS25_SW9}, //I5 + {0, CS24_SW9, CS23_SW9, CS22_SW9}, //I6 + {0, CS21_SW9, CS20_SW9, CS19_SW9}, //I7 + {0, CS18_SW9, CS17_SW9, CS16_SW9}, //I8 + {0, CS15_SW9, CS14_SW9, CS13_SW9}, //I9 + {0, CS12_SW9, CS11_SW9, CS10_SW9}, //I10 + {0, CS9_SW9 , CS8_SW9 , CS7_SW9 }, //I11 + {0, CS6_SW9 , CS5_SW9 , CS4_SW9 }, //I12 + {0, CS3_SW9 , CS2_SW9 , CS1_SW9 } //I13 +}; + +__attribute__ ((weak)) +led_config_t g_led_config = { { + { -1+00+3 , NO_LED, -1+26+3 , -1+39+3 , -1+52+3 , -1+65+3 , -1+78+3 , -1+91+3 , -1+104+3 , -1+00+1 , -1+13+1 , -1+26+1 , -1+39+1 , -1+52+1 , -1+65+1 , -1+78+1 , -1+91+1 }, + { -1+00+4 , -1+13+4 , -1+26+4 , -1+39+4 , -1+52+4 , -1+65+4 , -1+78+4 , -1+91+4 , -1+104+4 , -1+00+2 , -1+13+2 , -1+26+2 , -1+39+2 , -1+52+2 , -1+65+2 , -1+78+2 , -1+91+2 }, + { -1+00+6 , -1+13+6 , -1+26+6 , -1+39+6 , -1+52+6 , -1+65+6 , -1+78+6 , -1+91+6 , -1+104+6 , -1+00+5 , -1+13+5 , -1+26+5 , -1+39+5 , -1+52+5 , -1+65+5 , -1+78+5 , -1+91+6 }, + { -1+00+8 , -1+13+8 , -1+26+8 , -1+39+8 , -1+52+8 , -1+65+8 , -1+78+8 , -1+91+8 , -1+104+8 , -1+00+7 , -1+13+7 , -1+26+7 , NO_LED , -1+52+7 , NO_LED , NO_LED , NO_LED }, + { -1+00+11, -1+13+11, -1+26+11, -1+39+11, -1+52+11, -1+65+11, -1+78+11, -1+91+11, -1+104+11, -1+00+10, -1+13+10, NO_LED , -1+52+10, NO_LED , NO_LED , -1+78+10, NO_LED }, + { -1+00+9 , -1+13+9 , -1+26+9 , NO_LED , NO_LED , -1+65+9 , NO_LED , NO_LED , NO_LED , NO_LED , -1+13+12, NO_LED , -1+39+12, -1+52+12, -1+65+12, -1+78+12, -1+91+12} +}, { + {123, 0}, {117, 15}, {0 , 0}, {0 , 15}, {123, 27}, {3 , 27}, {127, 40}, {5 , 40}, {2 , 64}, {133, 52}, {8 , 52}, {131, 64}, {255,255}, + {143, 0}, {130, 15}, {255,255}, {13 , 15}, {136, 27}, {19 , 27}, {140, 40}, {23 , 40}, {18 , 64}, {146, 52}, {29 , 52}, {148, 64}, {255,255}, + {156, 0}, {143, 15}, {26 , 0}, {26 , 15}, {149, 27}, {32 , 27}, {153, 40}, {36 , 40}, {34 , 64}, {255,255}, {42 , 52}, {255,255}, {255,255}, + {169, 0}, {156, 15}, {39 , 0}, {39 , 15}, {162, 27}, {45 , 27}, {255,255}, {49 , 40}, {255,255}, {255,255}, {55 , 52}, {164, 64}, {255,255}, + {182, 0}, {175, 15}, {52 , 0}, {52 , 15}, {179, 27}, {58 , 27}, {174, 40}, {62 , 40}, {255,255}, {170, 52}, {68 , 52}, {180, 64}, {255,255}, + {198, 0}, {198, 15}, {65 , 0}, {65 , 15}, {198, 27}, {71 , 27}, {255,255}, {75 , 40}, {83 , 64}, {255,255}, {81 , 52}, {198, 64}, {255,255}, + {211, 0}, {211, 15}, {84 , 0}, {78 , 15}, {211, 27}, {84 , 27}, {255,255}, {88 , 40}, {255,255}, {211, 52}, {94 , 52}, {211, 64}, {255,255}, + {224, 0}, {224, 15}, {97 , 0}, {91 , 15}, {224, 27}, {97 , 27}, {255,255}, {101, 40}, {255,255}, {255,255}, {107, 52}, {224, 64}, {255,255}, + {255,255}, {255,255}, {110, 0}, {104, 15}, {255,255}, {110, 27}, {255,255}, {114, 40}, {255,255}, {255,255}, {120, 52}, {255,255}, {255,255} +}, { + 1, 4, 1, 1, 4, 1, 4, 1, 1, 4, 1, 4, 4, //0-12 + 1, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 1, 4, //13-25 + 1, 4, 1, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, //26-38 + 1, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, //39-51 + 1, 1, 1, 4, 1, 4, 1, 4, 4, 1, 4, 1, 4, //52-64 + 1, 1, 1, 4, 1, 4, 4, 4, 1, 4, 4, 1, 4, //65-77 + 1, 1, 1, 4, 1, 4, 4, 4, 4, 1, 4, 1, 4, //78-90 + 1, 1, 1, 4, 1, 4, 4, 4, 4, 4, 4, 1, 4, //91-103 + 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 //104-116 +} }; + +static void init(void) { + i2c_init(); + IS31FL3741_init(DRIVER_ADDR_1); + for (int index = 0; index < ISSI_DRIVER_TOTAL; index++) { + bool enabled = !( ( index == -1+0+13) || //A13 + ( index == -1+13+3) || //B3 + ( index == -1+13+13) || //B13 + ( index == -1+26+10) || //C10 + ( index == -1+26+12) || //C12 + ( index == -1+26+13) || //C13 + ( index == -1+39+7) || //D7 + ( index == -1+39+9) || //D9 + ( index == -1+39+10) || //D10 + ( index == -1+39+13) || //D13 + ( index == -1+52+9) || //E9 + ( index == -1+52+13) || //E13 + ( index == -1+65+7) || //F7 + ( index == -1+65+10) || //F10 + ( index == -1+65+13) || //F13 + ( index == -1+78+7) || //G7 + ( index == -1+78+9) || //G9 + ( index == -1+78+13) || //G13 + ( index == -1+91+7) || //H7 + ( index == -1+91+9) || //H9 + ( index == -1+91+10) || //H10 + ( index == -1+91+13) || //H13 + ( index == -1+104+1) || //I1 + ( index == -1+104+2) || //I2 + ( index == -1+104+5) || //I5 + ( index == -1+104+7) || //I7 + ( index == -1+104+9) || //I9 + ( index == -1+104+10) || //I10 + ( index == -1+104+12) || //I12 + ( index == -1+104+13) //I13 + ); + IS31FL3741_set_led_control_register(index, enabled, enabled, enabled); + } + IS31FL3741_update_led_control_registers(DRIVER_ADDR_1, 0); +} + +static void flush(void) { + IS31FL3741_update_pwm_buffers(DRIVER_ADDR_1, 0); +} + +const rgb_matrix_driver_t rgb_matrix_driver = { + .init = init, + .flush = flush, + .set_color = IS31FL3741_set_color, + .set_color_all = IS31FL3741_set_color_all +}; +#endif diff --git a/keyboards/xelus/pachi/rgb/rev1/rev1.h b/keyboards/xelus/pachi/rgb/rev1/rev1.h new file mode 100644 index 000000000000..894519ebe2e3 --- /dev/null +++ b/keyboards/xelus/pachi/rgb/rev1/rev1.h @@ -0,0 +1,36 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define ____ KC_NO + +#define LAYOUT_ansi_tsangan( \ + K000, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, \ + K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K412, K415, \ + K500, K501, K502, K505, K510, K512, K513, K514, K515, K516 \ +) { \ + { K000, ____, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216 }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, ____, K313, ____, ____, ____ }, \ + { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, ____, K412, ____, ____, K415, ____ }, \ + { K500, K501, K502, ____, ____, K505, ____, ____, ____, ____, K510, ____, K512, K513, K514, K515, K516 } \ +} diff --git a/keyboards/xelus/pachi/rgb/rev1/rules.mk b/keyboards/xelus/pachi/rgb/rev1/rules.mk new file mode 100644 index 000000000000..48bc9d0e1b66 --- /dev/null +++ b/keyboards/xelus/pachi/rgb/rev1/rules.mk @@ -0,0 +1,30 @@ +# MCU name +MCU = STM32L422 + +# Bootloader selection +BOOTLOADER = stm32-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 +# 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 +FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches + +EEPROM_DRIVER = i2c + +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = custom + +COMMON_VPATH += $(DRIVER_PATH)/issi +SRC += drivers/led/issi/is31fl3741.c + +LTO_ENABLE = yes +OPT = 2 diff --git a/keyboards/xelus/pachi/rgb/rev2/config.h b/keyboards/xelus/pachi/rgb/rev2/config.h new file mode 100644 index 000000000000..46f22acb589f --- /dev/null +++ b/keyboards/xelus/pachi/rgb/rev2/config.h @@ -0,0 +1,121 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x5845 // "XE" +#define PRODUCT_ID 0x5052 // "PR" +#define DEVICE_VER 0x0002 +#define MANUFACTURER Xelus +#define PRODUCT Xelus Pachi RGB + +/* key matrix size */ +#define MATRIX_ROWS 12 +#define MATRIX_COLS 9 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { A5, A6, B0, A7, A8, B1, B4, B5, A15, B3, A13, A14 } +#define MATRIX_COL_PINS { C14, C15, A0, A1, A2, A3, A4, A10, A9} +#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 + +// I2C setup +#define I2C1_SCL 6 +#define I2C1_SDA 7 +#define I2C1_SCL_PAL_MODE 4 +#define I2C1_SDA_PAL_MODE 4 +#define I2C1_TIMINGR_PRESC 0U +#define I2C1_TIMINGR_SCLDEL 7U +#define I2C1_TIMINGR_SDADEL 0U +#define I2C1_TIMINGR_SCLH 45U +#define I2C1_TIMINGR_SCLL 149U + +// I2C EEPROM +#define EEPROM_I2C_24LC64 + +// RGB Matrix defines +#define DRIVER_ADDR_1 0b0110000 + +#define DRIVER_COUNT 1 +#define DRIVER_1_LED_TOTAL 117 +#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL +#define ISSI_DRIVER_TOTAL DRIVER_LED_TOTAL + +#define RGB_MATRIX_STARTUP_VAL 80 +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define RGB_MATRIX_KEYPRESSES +#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended +#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL + +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_FRACTAL +#define ENABLE_RGB_MATRIX_PIXEL_RAIN + +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN + +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + + +#define FORCE_NKRO diff --git a/keyboards/xelus/pachi/rgb/rev2/halconf.h b/keyboards/xelus/pachi/rgb/rev2/halconf.h new file mode 100644 index 000000000000..633d94a8802a --- /dev/null +++ b/keyboards/xelus/pachi/rgb/rev2/halconf.h @@ -0,0 +1,27 @@ +/* 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/xelus/kangaroo/halconf.h -r platforms/chibios/common/configs/halconf.h` + */ + +#pragma once + +#define HAL_USE_I2C TRUE + +#include_next + diff --git a/keyboards/xelus/pachi/rgb/rev2/mcuconf.h b/keyboards/xelus/pachi/rgb/rev2/mcuconf.h new file mode 100644 index 000000000000..20db196d29db --- /dev/null +++ b/keyboards/xelus/pachi/rgb/rev2/mcuconf.h @@ -0,0 +1,28 @@ +/* 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/xelus/kangaroo/mcuconf.h -r platforms/chibios/GENERIC_STM32_F072XB/configs/mcuconf.h` + */ + +#pragma once + +#include_next + +#undef STM32_I2C_USE_I2C1 +#define STM32_I2C_USE_I2C1 TRUE + diff --git a/keyboards/xelus/pachi/rgb/rev2/readme.md b/keyboards/xelus/pachi/rgb/rev2/readme.md new file mode 100644 index 000000000000..82a10e4185d9 --- /dev/null +++ b/keyboards/xelus/pachi/rgb/rev2/readme.md @@ -0,0 +1,18 @@ +# Pachi RGB Rev 2 + +Pachi RGB Rev 2 TKL Keyboard that is a per-key RGB, hotswap, ANSI and tsangan. + +* Keyboard Maintainer: [Xelus22](https://github.com/Xelus22) +* Hardware Supported: Group buys + +Make example for this keyboard (after setting up your build environment): + + make xelus/pachi/rgb/rev2:default + +Reset your keyboard in 3 ways: + +* Software reset on Fn + Backspace +* Bootmagic reset: hold down the top left key (usually escape) and plugin the keyboard +* Physical reset button: on the back of the PCB, there should be a small golden button you can press + +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/xelus/pachi/rgb/rev2/rev2.c b/keyboards/xelus/pachi/rgb/rev2/rev2.c new file mode 100644 index 000000000000..b8a7bc27308b --- /dev/null +++ b/keyboards/xelus/pachi/rgb/rev2/rev2.c @@ -0,0 +1,245 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "rev2.h" + +// tested and working +void matrix_io_delay(void) { __asm__ volatile("nop\nnop\nnop\n"); } + +#ifdef RGB_MATRIX_ENABLE +#include "i2c_master.h" +#include "drivers/led/issi/is31fl3741.h" +const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = { +/* Refer to IS31 manual for these locations + * driver + * | R location + * | | G location + * | | | B location + * | | | | */ + {0, CS39_SW1, CS38_SW1, CS37_SW1}, //A1 + {0, CS36_SW1, CS35_SW1, CS34_SW1}, //A2 + {0, CS33_SW1, CS32_SW1, CS31_SW1}, //A3 + {0, CS30_SW1, CS29_SW1, CS28_SW1}, //A4 + {0, CS27_SW1, CS26_SW1, CS25_SW1}, //A5 + {0, CS24_SW1, CS23_SW1, CS22_SW1}, //A6 + {0, CS21_SW1, CS20_SW1, CS19_SW1}, //A7 + {0, CS18_SW1, CS17_SW1, CS16_SW1}, //A8 + {0, CS15_SW1, CS14_SW1, CS13_SW1}, //A9 + {0, CS12_SW1, CS11_SW1, CS10_SW1}, //A10 + {0, CS9_SW1 , CS8_SW1 , CS7_SW1 }, //A11 + {0, CS6_SW1 , CS5_SW1 , CS4_SW1 }, //A12 + {0, CS3_SW1 , CS2_SW1 , CS1_SW1 }, //A13 + + {0, CS39_SW2, CS38_SW2, CS37_SW2}, //B1 + {0, CS36_SW2, CS35_SW2, CS34_SW2}, //B2 + {0, CS33_SW2, CS32_SW2, CS31_SW2}, //B3 + {0, CS30_SW2, CS29_SW2, CS28_SW2}, //B4 + {0, CS27_SW2, CS26_SW2, CS25_SW2}, //B5 + {0, CS24_SW2, CS23_SW2, CS22_SW2}, //B6 + {0, CS21_SW2, CS20_SW2, CS19_SW2}, //B7 + {0, CS18_SW2, CS17_SW2, CS16_SW2}, //B8 + {0, CS15_SW2, CS14_SW2, CS13_SW2}, //B9 + {0, CS12_SW2, CS11_SW2, CS10_SW2}, //B10 + {0, CS9_SW2 , CS8_SW2 , CS7_SW2 }, //B11 + {0, CS6_SW2 , CS5_SW2 , CS4_SW2 }, //B12 + {0, CS3_SW2 , CS2_SW2 , CS1_SW2 }, //B13 + + {0, CS39_SW3, CS38_SW3, CS37_SW3}, //C1 + {0, CS36_SW3, CS35_SW3, CS34_SW3}, //C2 + {0, CS33_SW3, CS32_SW3, CS31_SW3}, //C3 + {0, CS30_SW3, CS29_SW3, CS28_SW3}, //C4 + {0, CS27_SW3, CS26_SW3, CS25_SW3}, //C5 + {0, CS24_SW3, CS23_SW3, CS22_SW3}, //C6 + {0, CS21_SW3, CS20_SW3, CS19_SW3}, //C7 + {0, CS18_SW3, CS17_SW3, CS16_SW3}, //C8 + {0, CS15_SW3, CS14_SW3, CS13_SW3}, //C9 + {0, CS12_SW3, CS11_SW3, CS10_SW3}, //C10 + {0, CS9_SW3 , CS8_SW3 , CS7_SW3 }, //C11 + {0, CS6_SW3 , CS5_SW3 , CS4_SW3 }, //C12 + {0, CS3_SW3 , CS2_SW3 , CS1_SW3 }, //C13 + + {0, CS39_SW4, CS38_SW4, CS37_SW4}, //D1 + {0, CS36_SW4, CS35_SW4, CS34_SW4}, //D2 + {0, CS33_SW4, CS32_SW4, CS31_SW4}, //D3 + {0, CS30_SW4, CS29_SW4, CS28_SW4}, //D4 + {0, CS27_SW4, CS26_SW4, CS25_SW4}, //D5 + {0, CS24_SW4, CS23_SW4, CS22_SW4}, //D6 + {0, CS21_SW4, CS20_SW4, CS19_SW4}, //D7 + {0, CS18_SW4, CS17_SW4, CS16_SW4}, //D8 + {0, CS15_SW4, CS14_SW4, CS13_SW4}, //D9 + {0, CS12_SW4, CS11_SW4, CS10_SW4}, //D10 + {0, CS9_SW4 , CS8_SW4 , CS7_SW4 }, //D11 + {0, CS6_SW4 , CS5_SW4 , CS4_SW4 }, //D12 + {0, CS3_SW4 , CS2_SW4 , CS1_SW4 }, //D13 + + {0, CS39_SW5, CS38_SW5, CS37_SW5}, //E1 + {0, CS36_SW5, CS35_SW5, CS34_SW5}, //E2 + {0, CS33_SW5, CS32_SW5, CS31_SW5}, //E3 + {0, CS30_SW5, CS29_SW5, CS28_SW5}, //E4 + {0, CS27_SW5, CS26_SW5, CS25_SW5}, //E5 + {0, CS24_SW5, CS23_SW5, CS22_SW5}, //E6 + {0, CS21_SW5, CS20_SW5, CS19_SW5}, //E7 + {0, CS18_SW5, CS17_SW5, CS16_SW5}, //E8 + {0, CS15_SW5, CS14_SW5, CS13_SW5}, //E9 + {0, CS12_SW5, CS11_SW5, CS10_SW5}, //E10 + {0, CS9_SW5 , CS8_SW5 , CS7_SW5 }, //E11 + {0, CS6_SW5 , CS5_SW5 , CS4_SW5 }, //E12 + {0, CS3_SW5 , CS2_SW5 , CS1_SW5 }, //E13 + + {0, CS39_SW6, CS38_SW6, CS37_SW6}, //F1 + {0, CS36_SW6, CS35_SW6, CS34_SW6}, //F2 + {0, CS33_SW6, CS32_SW6, CS31_SW6}, //F3 + {0, CS30_SW6, CS29_SW6, CS28_SW6}, //F4 + {0, CS27_SW6, CS26_SW6, CS25_SW6}, //F5 + {0, CS24_SW6, CS23_SW6, CS22_SW6}, //F6 + {0, CS21_SW6, CS20_SW6, CS19_SW6}, //F7 + {0, CS18_SW6, CS17_SW6, CS16_SW6}, //F8 + {0, CS15_SW6, CS14_SW6, CS13_SW6}, //F9 + {0, CS12_SW6, CS11_SW6, CS10_SW6}, //F10 + {0, CS9_SW6 , CS8_SW6 , CS7_SW6 }, //F11 + {0, CS6_SW6 , CS5_SW6 , CS4_SW6 }, //F12 + {0, CS3_SW6 , CS2_SW6 , CS1_SW6 }, //F13 + + {0, CS39_SW7, CS38_SW7, CS37_SW7}, //G1 + {0, CS36_SW7, CS35_SW7, CS34_SW7}, //G2 + {0, CS33_SW7, CS32_SW7, CS31_SW7}, //G3 + {0, CS30_SW7, CS29_SW7, CS28_SW7}, //G4 + {0, CS27_SW7, CS26_SW7, CS25_SW7}, //G5 + {0, CS24_SW7, CS23_SW7, CS22_SW7}, //G6 + {0, CS21_SW7, CS20_SW7, CS19_SW7}, //G7 + {0, CS18_SW7, CS17_SW7, CS16_SW7}, //G8 + {0, CS15_SW7, CS14_SW7, CS13_SW7}, //G9 + {0, CS12_SW7, CS11_SW7, CS10_SW7}, //G10 + {0, CS9_SW7 , CS8_SW7 , CS7_SW7 }, //G11 + {0, CS6_SW7 , CS5_SW7 , CS4_SW7 }, //G12 + {0, CS3_SW7 , CS2_SW7 , CS1_SW7 }, //G13 + + {0, CS39_SW8, CS38_SW8, CS37_SW8}, //H1 + {0, CS36_SW8, CS35_SW8, CS34_SW8}, //H2 + {0, CS33_SW8, CS32_SW8, CS31_SW8}, //H3 + {0, CS30_SW8, CS29_SW8, CS28_SW8}, //H4 + {0, CS27_SW8, CS26_SW8, CS25_SW8}, //H5 + {0, CS24_SW8, CS23_SW8, CS22_SW8}, //H6 + {0, CS21_SW8, CS20_SW8, CS19_SW8}, //H7 + {0, CS18_SW8, CS17_SW8, CS16_SW8}, //H8 + {0, CS15_SW8, CS14_SW8, CS13_SW8}, //H9 + {0, CS12_SW8, CS11_SW8, CS10_SW8}, //H10 + {0, CS9_SW8 , CS8_SW8 , CS7_SW8 }, //H11 + {0, CS6_SW8 , CS5_SW8 , CS4_SW8 }, //H12 + {0, CS3_SW8 , CS2_SW8 , CS1_SW8 }, //H13 + + {0, CS39_SW9, CS38_SW9, CS37_SW9}, //I1 + {0, CS36_SW9, CS35_SW9, CS34_SW9}, //I2 + {0, CS33_SW9, CS32_SW9, CS31_SW9}, //I3 + {0, CS30_SW9, CS29_SW9, CS28_SW9}, //I4 + {0, CS27_SW9, CS26_SW9, CS25_SW9}, //I5 + {0, CS24_SW9, CS23_SW9, CS22_SW9}, //I6 + {0, CS21_SW9, CS20_SW9, CS19_SW9}, //I7 + {0, CS18_SW9, CS17_SW9, CS16_SW9}, //I8 + {0, CS15_SW9, CS14_SW9, CS13_SW9}, //I9 + {0, CS12_SW9, CS11_SW9, CS10_SW9}, //I10 + {0, CS9_SW9 , CS8_SW9 , CS7_SW9 }, //I11 + {0, CS6_SW9 , CS5_SW9 , CS4_SW9 }, //I12 + {0, CS3_SW9 , CS2_SW9 , CS1_SW9 } //I13 +}; + +__attribute__ ((weak)) +led_config_t g_led_config = { { + { -1+00+3 , -1+26+3 , -1+52+3 , -1+78+3 , -1+104+3, -1+13+1 , -1+39+1 , -1+65+1 , -1+91+1 }, + { NO_LED , -1+39+3 , -1+65+3 , -1+91+3 , -1+00+1 , -1+26+1 , -1+52+1 , -1+78+1 , NO_LED }, + { -1+00+4 , -1+26+4 , -1+52+4 , -1+78+4 , -1+104+4, -1+13+2 , -1+39+2 , -1+65+2 , -1+91+2 }, + { -1+13+4 , -1+39+4 , -1+65+4 , -1+91+4 , -1+00+2 , -1+26+2 , -1+52+2 , -1+78+2 , NO_LED }, + { -1+00+6 , -1+26+6 , -1+52+6 , -1+78+6 , -1+104+6, -1+13+5 , -1+39+5 , -1+65+5 , -1+91+6 }, + { -1+13+6 , -1+39+6 , -1+65+6 , -1+91+6 , -1+00+5 , -1+26+5 , -1+52+5 , -1+78+5 , NO_LED }, + { -1+00+8 , -1+26+8 , -1+52+8 , -1+78+8 , -1+104+8, -1+13+7 , NO_LED , NO_LED , NO_LED }, + { -1+13+8 , -1+39+8 , -1+65+8 , -1+91+8 , -1+00+7 , -1+26+7 , -1+52+7 , NO_LED , NO_LED }, + { -1+00+11, -1+26+11, -1+52+11, -1+78+11,-1+104+11, -1+13+10, -1+52+10, NO_LED , NO_LED }, + { -1+13+11, -1+39+11, -1+65+11, -1+91+11, -1+00+10, NO_LED , NO_LED , -1+78+10, NO_LED }, + { -1+00+9 , -1+26+9 , NO_LED , NO_LED , NO_LED , -1+13+12, -1+39+12, -1+65+12, -1+91+12 }, + { -1+13+9 , NO_LED , -1+65+9 , NO_LED , NO_LED , NO_LED , -1+52+12, -1+78+12, NO_LED } +}, { + {123, 0}, {117, 15}, {0 , 0}, {0 , 15}, {123, 27}, {3 , 27}, {127, 40}, {5 , 40}, {2 , 64}, {133, 52}, {8 , 52}, {131, 64}, {255,255}, + {143, 0}, {130, 15}, {255,255}, {13 , 15}, {136, 27}, {19 , 27}, {140, 40}, {23 , 40}, {18 , 64}, {146, 52}, {29 , 52}, {148, 64}, {255,255}, + {156, 0}, {143, 15}, {26 , 0}, {26 , 15}, {149, 27}, {32 , 27}, {153, 40}, {36 , 40}, {34 , 64}, {255,255}, {42 , 52}, {255,255}, {255,255}, + {169, 0}, {156, 15}, {39 , 0}, {39 , 15}, {162, 27}, {45 , 27}, {255,255}, {49 , 40}, {255,255}, {255,255}, {55 , 52}, {164, 64}, {255,255}, + {182, 0}, {175, 15}, {52 , 0}, {52 , 15}, {179, 27}, {58 , 27}, {174, 40}, {62 , 40}, {255,255}, {170, 52}, {68 , 52}, {180, 64}, {255,255}, + {198, 0}, {198, 15}, {65 , 0}, {65 , 15}, {198, 27}, {71 , 27}, {255,255}, {75 , 40}, {83 , 64}, {255,255}, {81 , 52}, {198, 64}, {255,255}, + {211, 0}, {211, 15}, {84 , 0}, {78 , 15}, {211, 27}, {84 , 27}, {255,255}, {88 , 40}, {255,255}, {211, 52}, {94 , 52}, {211, 64}, {255,255}, + {224, 0}, {224, 15}, {97 , 0}, {91 , 15}, {224, 27}, {97 , 27}, {255,255}, {101, 40}, {255,255}, {255,255}, {107, 52}, {224, 64}, {255,255}, + {255,255}, {255,255}, {110, 0}, {104, 15}, {255,255}, {110, 27}, {255,255}, {114, 40}, {255,255}, {255,255}, {120, 52}, {255,255}, {255,255} +}, { + 1, 4, 1, 1, 4, 1, 4, 1, 1, 4, 1, 4, 4, //0-12 + 1, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 1, 4, //13-25 + 1, 4, 1, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, //26-38 + 1, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, //39-51 + 1, 1, 1, 4, 1, 4, 1, 4, 4, 1, 4, 1, 4, //52-64 + 1, 1, 1, 4, 1, 4, 4, 4, 1, 4, 4, 1, 4, //65-77 + 1, 1, 1, 4, 1, 4, 4, 4, 4, 1, 4, 1, 4, //78-90 + 1, 1, 1, 4, 1, 4, 4, 4, 4, 4, 4, 1, 4, //91-103 + 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 //104-116 +} }; + +static void init(void) { + i2c_init(); + IS31FL3741_init(DRIVER_ADDR_1); + for (int index = 0; index < ISSI_DRIVER_TOTAL; index++) { + bool enabled = !( ( index == -1+0+13) || //A13 + ( index == -1+13+3) || //B3 + ( index == -1+13+13) || //B13 + ( index == -1+26+10) || //C10 + ( index == -1+26+12) || //C12 + ( index == -1+26+13) || //C13 + ( index == -1+39+7) || //D7 + ( index == -1+39+9) || //D9 + ( index == -1+39+10) || //D10 + ( index == -1+39+13) || //D13 + ( index == -1+52+9) || //E9 + ( index == -1+52+13) || //E13 + ( index == -1+65+7) || //F7 + ( index == -1+65+10) || //F10 + ( index == -1+65+13) || //F13 + ( index == -1+78+7) || //G7 + ( index == -1+78+9) || //G9 + ( index == -1+78+13) || //G13 + ( index == -1+91+7) || //H7 + ( index == -1+91+9) || //H9 + ( index == -1+91+10) || //H10 + ( index == -1+91+13) || //H13 + ( index == -1+104+1) || //I1 + ( index == -1+104+2) || //I2 + ( index == -1+104+5) || //I5 + ( index == -1+104+7) || //I7 + ( index == -1+104+9) || //I9 + ( index == -1+104+10) || //I10 + ( index == -1+104+12) || //I12 + ( index == -1+104+13) //I13 + ); + IS31FL3741_set_led_control_register(index, enabled, enabled, enabled); + } + IS31FL3741_update_led_control_registers(DRIVER_ADDR_1, 0); +} + +static void flush(void) { + IS31FL3741_update_pwm_buffers(DRIVER_ADDR_1, 0); +} + +const rgb_matrix_driver_t rgb_matrix_driver = { + .init = init, + .flush = flush, + .set_color = IS31FL3741_set_color, + .set_color_all = IS31FL3741_set_color_all +}; +#endif diff --git a/keyboards/xelus/pachi/rgb/rev2/rev2.h b/keyboards/xelus/pachi/rgb/rev2/rev2.h new file mode 100644 index 000000000000..edc164d729d5 --- /dev/null +++ b/keyboards/xelus/pachi/rgb/rev2/rev2.h @@ -0,0 +1,42 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#define _____ KC_NO + +#define LAYOUT_ansi_tsangan( \ + K0000, K0001, K0101, K0002, K0102, K0003, K0103, K0004, K0104, K0005, K0105, K0006, K0106, K0007, K0107, K0008, \ + K0200, K0300, K0201, K0301, K0202, K0302, K0203, K0303, K0204, K0304, K0205, K0305, K0206, K0306, K0207, K0307, K0208, \ + K0400, K0500, K0401, K0501, K0402, K0502, K0403, K0503, K0404, K0504, K0405, K0505, K0406, K0506, K0407, K0507, K0408, \ + K0600, K0700, K0601, K0701, K0602, K0702, K0603, K0703, K0604, K0704, K0605, K0705, K0706, \ + K0800, K0900, K0801, K0901, K0802, K0902, K0803, K0903, K0804, K0904, K0805, K0806, K0907, \ + K1000, K1100, K1001, K1102, K1005, K1006, K1106, K1007, K1107, K1008 \ +) { \ + { K0000, K0001, K0002, K0003, K0004, K0005, K0006, K0007, K0008 }, \ + { _____, K0101, K0102, K0103, K0104, K0105, K0106, K0107, _____ }, \ + { K0200, K0201, K0202, K0203, K0204, K0205, K0206, K0207, K0208 }, \ + { K0300, K0301, K0302, K0303, K0304, K0305, K0306, K0307, _____ }, \ + { K0400, K0401, K0402, K0403, K0404, K0405, K0406, K0407, K0408 }, \ + { K0500, K0501, K0502, K0503, K0504, K0505, K0506, K0507, _____ }, \ + { K0600, K0601, K0602, K0603, K0604, K0605, _____, _____, _____ }, \ + { K0700, K0701, K0702, K0703, K0704, K0705, K0706, _____, _____ }, \ + { K0800, K0801, K0802, K0803, K0804, K0805, K0806, _____, _____ }, \ + { K0900, K0901, K0902, K0903, K0904, _____, _____, K0907, _____ }, \ + { K1000, K1001, _____, _____, _____, K1005, K1006, K1007, K1008 }, \ + { K1100, _____, K1102, _____, _____, _____, K1106, K1107, _____ } \ +} diff --git a/keyboards/xelus/pachi/rgb/rev2/rules.mk b/keyboards/xelus/pachi/rgb/rev2/rules.mk new file mode 100644 index 000000000000..4c1f6d5431d9 --- /dev/null +++ b/keyboards/xelus/pachi/rgb/rev2/rules.mk @@ -0,0 +1,29 @@ +# MCU name +MCU = STM32L422 + +# Bootloader selection +BOOTLOADER = stm32-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 +# 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 + +EEPROM_DRIVER = i2c + +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = custom + +COMMON_VPATH += $(DRIVER_PATH)/issi +SRC += drivers/led/issi/is31fl3741.c + +LTO_ENABLE = yes +OPT = 2 diff --git a/keyboards/xelus/pachi/rgb/rgb.c b/keyboards/xelus/pachi/rgb/rgb.c index 26ab54726de6..93ca8406dec7 100644 --- a/keyboards/xelus/pachi/rgb/rgb.c +++ b/keyboards/xelus/pachi/rgb/rgb.c @@ -13,227 +13,4 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ - #include "rgb.h" -#include -#include - -// tested and working -void matrix_io_delay(void) { __asm__ volatile("nop\nnop\nnop\n"); } - -#ifdef RGB_MATRIX_ENABLE -#include -#include "drivers/issi/is31fl3741.h" -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { -/* Refer to IS31 manual for these locations - * driver - * | R location - * | | G location - * | | | B location - * | | | | */ - {0, CS39_SW1, CS38_SW1, CS37_SW1}, //A1 - {0, CS36_SW1, CS35_SW1, CS34_SW1}, //A2 - {0, CS33_SW1, CS32_SW1, CS31_SW1}, //A3 - {0, CS30_SW1, CS29_SW1, CS28_SW1}, //A4 - {0, CS27_SW1, CS26_SW1, CS25_SW1}, //A5 - {0, CS24_SW1, CS23_SW1, CS22_SW1}, //A6 - {0, CS21_SW1, CS20_SW1, CS19_SW1}, //A7 - {0, CS18_SW1, CS17_SW1, CS16_SW1}, //A8 - {0, CS15_SW1, CS14_SW1, CS13_SW1}, //A9 - {0, CS12_SW1, CS11_SW1, CS10_SW1}, //A10 - {0, CS9_SW1 , CS8_SW1 , CS7_SW1 }, //A11 - {0, CS6_SW1 , CS5_SW1 , CS4_SW1 }, //A12 - {0, CS3_SW1 , CS2_SW1 , CS1_SW1 }, //A13 - - {0, CS39_SW2, CS38_SW2, CS37_SW2}, //B1 - {0, CS36_SW2, CS35_SW2, CS34_SW2}, //B2 - {0, CS33_SW2, CS32_SW2, CS31_SW2}, //B3 - {0, CS30_SW2, CS29_SW2, CS28_SW2}, //B4 - {0, CS27_SW2, CS26_SW2, CS25_SW2}, //B5 - {0, CS24_SW2, CS23_SW2, CS22_SW2}, //B6 - {0, CS21_SW2, CS20_SW2, CS19_SW2}, //B7 - {0, CS18_SW2, CS17_SW2, CS16_SW2}, //B8 - {0, CS15_SW2, CS14_SW2, CS13_SW2}, //B9 - {0, CS12_SW2, CS11_SW2, CS10_SW2}, //B10 - {0, CS9_SW2 , CS8_SW2 , CS7_SW2 }, //B11 - {0, CS6_SW2 , CS5_SW2 , CS4_SW2 }, //B12 - {0, CS3_SW2 , CS2_SW2 , CS1_SW2 }, //B13 - - {0, CS39_SW3, CS38_SW3, CS37_SW3}, //C1 - {0, CS36_SW3, CS35_SW3, CS34_SW3}, //C2 - {0, CS33_SW3, CS32_SW3, CS31_SW3}, //C3 - {0, CS30_SW3, CS29_SW3, CS28_SW3}, //C4 - {0, CS27_SW3, CS26_SW3, CS25_SW3}, //C5 - {0, CS24_SW3, CS23_SW3, CS22_SW3}, //C6 - {0, CS21_SW3, CS20_SW3, CS19_SW3}, //C7 - {0, CS18_SW3, CS17_SW3, CS16_SW3}, //C8 - {0, CS15_SW3, CS14_SW3, CS13_SW3}, //C9 - {0, CS12_SW3, CS11_SW3, CS10_SW3}, //C10 - {0, CS9_SW3 , CS8_SW3 , CS7_SW3 }, //C11 - {0, CS6_SW3 , CS5_SW3 , CS4_SW3 }, //C12 - {0, CS3_SW3 , CS2_SW3 , CS1_SW3 }, //C13 - - {0, CS39_SW4, CS38_SW4, CS37_SW4}, //D1 - {0, CS36_SW4, CS35_SW4, CS34_SW4}, //D2 - {0, CS33_SW4, CS32_SW4, CS31_SW4}, //D3 - {0, CS30_SW4, CS29_SW4, CS28_SW4}, //D4 - {0, CS27_SW4, CS26_SW4, CS25_SW4}, //D5 - {0, CS24_SW4, CS23_SW4, CS22_SW4}, //D6 - {0, CS21_SW4, CS20_SW4, CS19_SW4}, //D7 - {0, CS18_SW4, CS17_SW4, CS16_SW4}, //D8 - {0, CS15_SW4, CS14_SW4, CS13_SW4}, //D9 - {0, CS12_SW4, CS11_SW4, CS10_SW4}, //D10 - {0, CS9_SW4 , CS8_SW4 , CS7_SW4 }, //D11 - {0, CS6_SW4 , CS5_SW4 , CS4_SW4 }, //D12 - {0, CS3_SW4 , CS2_SW4 , CS1_SW4 }, //D13 - - {0, CS39_SW5, CS38_SW5, CS37_SW5}, //E1 - {0, CS36_SW5, CS35_SW5, CS34_SW5}, //E2 - {0, CS33_SW5, CS32_SW5, CS31_SW5}, //E3 - {0, CS30_SW5, CS29_SW5, CS28_SW5}, //E4 - {0, CS27_SW5, CS26_SW5, CS25_SW5}, //E5 - {0, CS24_SW5, CS23_SW5, CS22_SW5}, //E6 - {0, CS21_SW5, CS20_SW5, CS19_SW5}, //E7 - {0, CS18_SW5, CS17_SW5, CS16_SW5}, //E8 - {0, CS15_SW5, CS14_SW5, CS13_SW5}, //E9 - {0, CS12_SW5, CS11_SW5, CS10_SW5}, //E10 - {0, CS9_SW5 , CS8_SW5 , CS7_SW5 }, //E11 - {0, CS6_SW5 , CS5_SW5 , CS4_SW5 }, //E12 - {0, CS3_SW5 , CS2_SW5 , CS1_SW5 }, //E13 - - {0, CS39_SW6, CS38_SW6, CS37_SW6}, //F1 - {0, CS36_SW6, CS35_SW6, CS34_SW6}, //F2 - {0, CS33_SW6, CS32_SW6, CS31_SW6}, //F3 - {0, CS30_SW6, CS29_SW6, CS28_SW6}, //F4 - {0, CS27_SW6, CS26_SW6, CS25_SW6}, //F5 - {0, CS24_SW6, CS23_SW6, CS22_SW6}, //F6 - {0, CS21_SW6, CS20_SW6, CS19_SW6}, //F7 - {0, CS18_SW6, CS17_SW6, CS16_SW6}, //F8 - {0, CS15_SW6, CS14_SW6, CS13_SW6}, //F9 - {0, CS12_SW6, CS11_SW6, CS10_SW6}, //F10 - {0, CS9_SW6 , CS8_SW6 , CS7_SW6 }, //F11 - {0, CS6_SW6 , CS5_SW6 , CS4_SW6 }, //F12 - {0, CS3_SW6 , CS2_SW6 , CS1_SW6 }, //F13 - - {0, CS39_SW7, CS38_SW7, CS37_SW7}, //G1 - {0, CS36_SW7, CS35_SW7, CS34_SW7}, //G2 - {0, CS33_SW7, CS32_SW7, CS31_SW7}, //G3 - {0, CS30_SW7, CS29_SW7, CS28_SW7}, //G4 - {0, CS27_SW7, CS26_SW7, CS25_SW7}, //G5 - {0, CS24_SW7, CS23_SW7, CS22_SW7}, //G6 - {0, CS21_SW7, CS20_SW7, CS19_SW7}, //G7 - {0, CS18_SW7, CS17_SW7, CS16_SW7}, //G8 - {0, CS15_SW7, CS14_SW7, CS13_SW7}, //G9 - {0, CS12_SW7, CS11_SW7, CS10_SW7}, //G10 - {0, CS9_SW7 , CS8_SW7 , CS7_SW7 }, //G11 - {0, CS6_SW7 , CS5_SW7 , CS4_SW7 }, //G12 - {0, CS3_SW7 , CS2_SW7 , CS1_SW7 }, //G13 - - {0, CS39_SW8, CS38_SW8, CS37_SW8}, //H1 - {0, CS36_SW8, CS35_SW8, CS34_SW8}, //H2 - {0, CS33_SW8, CS32_SW8, CS31_SW8}, //H3 - {0, CS30_SW8, CS29_SW8, CS28_SW8}, //H4 - {0, CS27_SW8, CS26_SW8, CS25_SW8}, //H5 - {0, CS24_SW8, CS23_SW8, CS22_SW8}, //H6 - {0, CS21_SW8, CS20_SW8, CS19_SW8}, //H7 - {0, CS18_SW8, CS17_SW8, CS16_SW8}, //H8 - {0, CS15_SW8, CS14_SW8, CS13_SW8}, //H9 - {0, CS12_SW8, CS11_SW8, CS10_SW8}, //H10 - {0, CS9_SW8 , CS8_SW8 , CS7_SW8 }, //H11 - {0, CS6_SW8 , CS5_SW8 , CS4_SW8 }, //H12 - {0, CS3_SW8 , CS2_SW8 , CS1_SW8 }, //H13 - - {0, CS39_SW9, CS38_SW9, CS37_SW9}, //I1 - {0, CS36_SW9, CS35_SW9, CS34_SW9}, //I2 - {0, CS33_SW9, CS32_SW9, CS31_SW9}, //I3 - {0, CS30_SW9, CS29_SW9, CS28_SW9}, //I4 - {0, CS27_SW9, CS26_SW9, CS25_SW9}, //I5 - {0, CS24_SW9, CS23_SW9, CS22_SW9}, //I6 - {0, CS21_SW9, CS20_SW9, CS19_SW9}, //I7 - {0, CS18_SW9, CS17_SW9, CS16_SW9}, //I8 - {0, CS15_SW9, CS14_SW9, CS13_SW9}, //I9 - {0, CS12_SW9, CS11_SW9, CS10_SW9}, //I10 - {0, CS9_SW9 , CS8_SW9 , CS7_SW9 }, //I11 - {0, CS6_SW9 , CS5_SW9 , CS4_SW9 }, //I12 - {0, CS3_SW9 , CS2_SW9 , CS1_SW9 } //I13 -}; - -__attribute__ ((weak)) -led_config_t g_led_config = { { - { -1+00+3 , NO_LED, -1+26+3 , -1+39+3 , -1+52+3 , -1+65+3 , -1+78+3 , -1+91+3 , -1+104+3 , -1+00+1 , -1+13+1 , -1+26+1 , -1+39+1 , -1+52+1 , -1+65+1 , -1+78+1 , -1+91+1 }, - { -1+00+4 , -1+13+4 , -1+26+4 , -1+39+4 , -1+52+4 , -1+65+4 , -1+78+4 , -1+91+4 , -1+104+4 , -1+00+2 , -1+13+2 , -1+26+2 , -1+39+2 , -1+52+2 , -1+65+2 , -1+78+2 , -1+91+2 }, - { -1+00+6 , -1+13+6 , -1+26+6 , -1+39+6 , -1+52+6 , -1+65+6 , -1+78+6 , -1+91+6 , -1+104+6 , -1+00+5 , -1+13+5 , -1+26+5 , -1+39+5 , -1+52+5 , -1+65+5 , -1+78+5 , -1+91+6 }, - { -1+00+8 , -1+13+8 , -1+26+8 , -1+39+8 , -1+52+8 , -1+65+8 , -1+78+8 , -1+91+8 , -1+104+8 , -1+00+7 , -1+13+7 , -1+26+7 , NO_LED , -1+52+7 , NO_LED , NO_LED , NO_LED }, - { -1+00+11, -1+13+11, -1+26+11, -1+39+11, -1+52+11, -1+65+11, -1+78+11, -1+91+11, -1+104+11, -1+00+10, -1+13+10, NO_LED , NO_LED , -1+52+10, NO_LED , -1+78+10, NO_LED }, - { -1+00+9 , -1+13+9 , -1+26+9 , NO_LED , NO_LED , -1+65+9 , NO_LED , NO_LED , NO_LED , NO_LED , -1+13+12, NO_LED , -1+39+12, -1+52+12, -1+65+12, -1+78+12, -1+91+12} -}, { - {123, 0}, {117, 15}, {0 , 0}, {0 , 15}, {123, 27}, {3 , 27}, {127, 40}, {5 , 40}, {2 , 64}, {133, 52}, {8 , 52}, {131, 64}, {255,255}, - {143, 0}, {130, 15}, {255,255}, {13 , 15}, {136, 27}, {19 , 27}, {140, 40}, {23 , 40}, {18 , 64}, {146, 52}, {29 , 52}, {148, 64}, {255,255}, - {156, 0}, {143, 15}, {26 , 0}, {26 , 15}, {149, 27}, {32 , 27}, {153, 40}, {36 , 40}, {34 , 64}, {255,255}, {42 , 52}, {255,255}, {255,255}, - {169, 0}, {156, 15}, {39 , 0}, {39 , 15}, {162, 27}, {45 , 27}, {255,255}, {49 , 40}, {255,255}, {255,255}, {55 , 52}, {164, 64}, {255,255}, - {182, 0}, {175, 15}, {52 , 0}, {52 , 15}, {179, 27}, {58 , 27}, {174, 40}, {62 , 40}, {255,255}, {170, 52}, {68 , 52}, {180, 64}, {255,255}, - {198, 0}, {198, 15}, {65 , 0}, {65 , 15}, {198, 27}, {71 , 27}, {255,255}, {75 , 40}, {83 , 64}, {255,255}, {81 , 52}, {198, 64}, {255,255}, - {211, 0}, {211, 15}, {84 , 0}, {78 , 15}, {211, 27}, {84 , 27}, {255,255}, {88 , 40}, {255,255}, {211, 52}, {94 , 52}, {211, 64}, {255,255}, - {224, 0}, {224, 15}, {97 , 0}, {91 , 15}, {224, 27}, {97 , 27}, {255,255}, {101, 40}, {255,255}, {255,255}, {107, 52}, {224, 64}, {255,255}, - {255,255}, {255,255}, {110, 0}, {104, 15}, {255,255}, {110, 27}, {255,255}, {114, 40}, {255,255}, {255,255}, {120, 52}, {255,255}, {255,255} -}, { - 1, 4, 1, 1, 4, 1, 4, 1, 1, 4, 1, 4, 4, //0-12 - 1, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 1, 4, //13-25 - 1, 4, 1, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, //26-38 - 1, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, //39-51 - 1, 1, 1, 4, 1, 4, 1, 4, 4, 1, 4, 1, 4, //52-64 - 1, 1, 1, 4, 1, 4, 4, 4, 1, 4, 4, 1, 4, //65-77 - 1, 1, 1, 4, 1, 4, 4, 4, 4, 1, 4, 1, 4, //78-90 - 1, 1, 1, 4, 1, 4, 4, 4, 4, 4, 4, 1, 4, //91-103 - 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 //104-116 -} }; - -static void init(void) { - i2c_init(); - IS31FL3741_init(DRIVER_ADDR_1); - for (int index = 0; index < ISSI_DRIVER_TOTAL; index++) { - bool enabled = !( ( index == -1+0+13) || //A13 - ( index == -1+13+3) || //B3 - ( index == -1+13+13) || //B13 - ( index == -1+26+10) || //C10 - ( index == -1+26+12) || //C12 - ( index == -1+26+13) || //C13 - ( index == -1+39+7) || //D7 - ( index == -1+39+9) || //D9 - ( index == -1+39+10) || //D10 - ( index == -1+39+13) || //D13 - ( index == -1+52+9) || //E9 - ( index == -1+52+13) || //E13 - ( index == -1+65+7) || //F7 - ( index == -1+65+10) || //F10 - ( index == -1+65+13) || //F13 - ( index == -1+78+7) || //G7 - ( index == -1+78+9) || //G9 - ( index == -1+78+13) || //G13 - ( index == -1+91+7) || //H7 - ( index == -1+91+9) || //H9 - ( index == -1+91+10) || //H10 - ( index == -1+91+13) || //H13 - ( index == -1+104+1) || //I1 - ( index == -1+104+2) || //I2 - ( index == -1+104+5) || //I5 - ( index == -1+104+7) || //I7 - ( index == -1+104+9) || //I9 - ( index == -1+104+10) || //I10 - ( index == -1+104+12) || //I12 - ( index == -1+104+13) //I13 - ); - IS31FL3741_set_led_control_register(index, enabled, enabled, enabled); - } - IS31FL3741_update_led_control_registers(DRIVER_ADDR_1, 0); -} - -static void flush(void) { IS31FL3741_update_pwm_buffers(DRIVER_ADDR_1, DRIVER_ADDR_2); } - -const rgb_matrix_driver_t rgb_matrix_driver = { - .init = init, - .flush = flush, - .set_color = IS31FL3741_set_color, - .set_color_all = IS31FL3741_set_color_all -}; -#endif diff --git a/keyboards/xelus/pachi/rgb/rgb.h b/keyboards/xelus/pachi/rgb/rgb.h index 894519ebe2e3..36ca2937a67d 100644 --- a/keyboards/xelus/pachi/rgb/rgb.h +++ b/keyboards/xelus/pachi/rgb/rgb.h @@ -17,20 +17,8 @@ #include "quantum.h" -#define ____ KC_NO - -#define LAYOUT_ansi_tsangan( \ - K000, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, \ - K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, \ - K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, \ - K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, \ - K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K412, K415, \ - K500, K501, K502, K505, K510, K512, K513, K514, K515, K516 \ -) { \ - { K000, ____, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016 }, \ - { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116 }, \ - { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216 }, \ - { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, ____, K313, ____, ____, ____ }, \ - { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, ____, K412, ____, ____, K415, ____ }, \ - { K500, K501, K502, ____, ____, K505, ____, ____, ____, ____, K510, ____, K512, K513, K514, K515, K516 } \ -} +#if defined(KEYBOARD_xelus_pachi_rgb_rev1) + #include "rev1.h" +#elif defined(KEYBOARD_xelus_pachi_rgb_rev2) + #include "rev2.h" +#endif diff --git a/keyboards/xelus/pachi/rgb/rules.mk b/keyboards/xelus/pachi/rgb/rules.mk deleted file mode 100644 index 42e9d3feb0f1..000000000000 --- a/keyboards/xelus/pachi/rgb/rules.mk +++ /dev/null @@ -1,32 +0,0 @@ -# MCU name -MCU = STM32L433 - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration -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 on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 -FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches - -EEPROM_DRIVER = i2c - -RGB_MATRIX_ENABLE = yes -RGB_MATRIX_DRIVER = custom - -COMMON_VPATH += $(DRIVER_PATH)/issi -SRC += drivers/issi/is31fl3741.c - -LTO_ENABLE = yes -OPT = 2 diff --git a/keyboards/xelus/rs60/config.h b/keyboards/xelus/rs60/config.h new file mode 100644 index 000000000000..ce0c2e1d027d --- /dev/null +++ b/keyboards/xelus/rs60/config.h @@ -0,0 +1,49 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +// USB Device descriptor parameter +#define VENDOR_ID 0x5845 // XE +#define PRODUCT_ID 0x5253 // RS60 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Xelus +#define PRODUCT RS60 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +#define MATRIX_ROW_PINS { B3, B7, F0, F4, F1 } +#define MATRIX_COL_PINS { E6, D5, D3, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4} +#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 + +//Indicator +#define LED_CAPS_LOCK_PIN B0 + +//Force NKRO +#define FORCE_NKRO diff --git a/keyboards/xelus/rs60/info.json b/keyboards/xelus/rs60/info.json new file mode 100644 index 000000000000..3a0582fc7fce --- /dev/null +++ b/keyboards/xelus/rs60/info.json @@ -0,0 +1,74 @@ +{ + "keyboard_name": "RS60", + "url": "", + "maintainer": "Xelus22", + "layouts": { + "LAYOUT_60_ansi_split_bs_rshift": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1", "x":1, "y":0}, + {"label":"2", "x":2, "y":0}, + {"label":"3", "x":3, "y":0}, + {"label":"4", "x":4, "y":0}, + {"label":"5", "x":5, "y":0}, + {"label":"6", "x":6, "y":0}, + {"label":"7", "x":7, "y":0}, + {"label":"8", "x":8, "y":0}, + {"label":"9", "x":9, "y":0}, + {"label":"0", "x":10, "y":0}, + {"label":"-", "x":11, "y":0}, + {"label":"=", "x":12, "y":0}, + {"label":"\\", "x":13, "y":0}, + {"label":"Delete", "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":"Backspace", "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":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",", "x":9.25, "y":3}, + {"label":".", "x":10.25, "y":3}, + {"label":"/", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"Fn", "x":14, "y":3}, + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"GUI", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space", "x":3.75, "y":4, "w":6.25}, + {"label":"Alt", "x":10, "y":4, "w":1.25}, + {"label":"GUI", "x":11.25, "y":4, "w":1.25}, + {"label":"Fn", "x":12.5, "y":4, "w":1.25}, + {"label":"Ctrl", "x":13.75, "y":4, "w":1.25} + ] + } + } +} diff --git a/keyboards/xelus/rs60/keymaps/default/config.h b/keyboards/xelus/rs60/keymaps/default/config.h new file mode 100644 index 000000000000..ea9bfa60eb8e --- /dev/null +++ b/keyboards/xelus/rs60/keymaps/default/config.h @@ -0,0 +1,19 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#define USB_POLLING_INTERVAL_MS 1 +#define QMK_KEYS_PER_SCAN 4 diff --git a/keyboards/xelus/rs60/keymaps/default/keymap.c b/keyboards/xelus/rs60/keymaps/default/keymap.c new file mode 100644 index 000000000000..bff32ac2bc67 --- /dev/null +++ b/keyboards/xelus/rs60/keymaps/default/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_60_ansi_split_bs_rshift( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL , KC_BSLS, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL + ), + + [1] = LAYOUT_60_ansi_split_bs_rshift( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_PSCR, + KC_CAPS, KC_TRNS, KC_UP , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, RESET, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RSFT, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/xelus/rs60/keymaps/via/config.h b/keyboards/xelus/rs60/keymaps/via/config.h new file mode 100644 index 000000000000..ea9bfa60eb8e --- /dev/null +++ b/keyboards/xelus/rs60/keymaps/via/config.h @@ -0,0 +1,19 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#define USB_POLLING_INTERVAL_MS 1 +#define QMK_KEYS_PER_SCAN 4 diff --git a/keyboards/xelus/rs60/keymaps/via/keymap.c b/keyboards/xelus/rs60/keymaps/via/keymap.c new file mode 100644 index 000000000000..10d3835511e4 --- /dev/null +++ b/keyboards/xelus/rs60/keymaps/via/keymap.c @@ -0,0 +1,50 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_60_ansi_split_bs_rshift( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL , KC_BSLS, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL + ), + + [1] = LAYOUT_60_ansi_split_bs_rshift( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_PSCR, + KC_CAPS, KC_TRNS, KC_UP , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, RESET, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RSFT, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT_60_ansi_split_bs_rshift( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RSFT, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT_60_ansi_split_bs_rshift( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RSFT, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/xelus/rs60/keymaps/via/rules.mk b/keyboards/xelus/rs60/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/xelus/rs60/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/xelus/rs60/readme.md b/keyboards/xelus/rs60/readme.md new file mode 100644 index 000000000000..381aa9dc0d64 --- /dev/null +++ b/keyboards/xelus/rs60/readme.md @@ -0,0 +1,19 @@ +# RS60 + +60% PCB with daughterboard in collaboration with Bisoromi and Mekibo + +* Keyboard Maintainer: [Xelus22](https://github.com/Xelus22) +* Hardware Supported: RS60 +* Hardware Availability: Custom Keyboard Group Buys + +Make example for this keyboard (after setting up your build environment): + + make xelus/rs60:default + +Reset your keyboard in 3 ways: + +* Software reset on Fn [MO(1)] + Backspace +* Bootmagic reset: hold down the top left key (usually escape) and plugin the keyboard +* Physical reset button: on the back of the PCB, there should be a small golden button you can press + +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/xelus/rs60/rs60.c b/keyboards/xelus/rs60/rs60.c new file mode 100644 index 000000000000..cd2fa8006100 --- /dev/null +++ b/keyboards/xelus/rs60/rs60.c @@ -0,0 +1,16 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #include "rs60.h" diff --git a/keyboards/xelus/rs60/rs60.h b/keyboards/xelus/rs60/rs60.h new file mode 100644 index 000000000000..9b8e841de5c6 --- /dev/null +++ b/keyboards/xelus/rs60/rs60.h @@ -0,0 +1,34 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "quantum.h" + +#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, K2D, \ + 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, K3B, K3C, K3D, \ + K40, K41, K42, K45, K49, K4A, 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, XXX, K3B, K3C, K3D }, \ + { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, XXX, K4C, K4D } \ +} diff --git a/keyboards/xelus/rs60/rules.mk b/keyboards/xelus/rs60/rules.mk new file mode 100644 index 000000000000..a35f771ce041 --- /dev/null +++ b/keyboards/xelus/rs60/rules.mk @@ -0,0 +1,21 @@ +# 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 +# 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 + +LAYOUTS = 60_ansi_split_bs_rshift diff --git a/keyboards/xelus/snap96/info.json b/keyboards/xelus/snap96/info.json index 69a66a100268..5130c5db6ed6 100644 --- a/keyboards/xelus/snap96/info.json +++ b/keyboards/xelus/snap96/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Snap96", "url": "", "maintainer": "Xelus22", - "width": 19, - "height": 6, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/xelus/snap96/rules.mk b/keyboards/xelus/snap96/rules.mk index 2c033042bc56..441ae49b629d 100644 --- a/keyboards/xelus/snap96/rules.mk +++ b/keyboards/xelus/snap96/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 on B7 by default -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. - We have custom RGB underglow diff --git a/keyboards/xelus/trinityxttkl/info.json b/keyboards/xelus/trinityxttkl/info.json index de10202e7f5a..de113f219366 100644 --- a/keyboards/xelus/trinityxttkl/info.json +++ b/keyboards/xelus/trinityxttkl/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Trinity XT TKL", "url": "", "maintainer": "Xelus22", - "width": 20.5, - "height": 6.25, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/xelus/trinityxttkl/rules.mk b/keyboards/xelus/trinityxttkl/rules.mk index b12368f15474..85771c283c83 100644 --- a/keyboards/xelus/trinityxttkl/rules.mk +++ b/keyboards/xelus/trinityxttkl/rules.mk @@ -11,12 +11,11 @@ DFU_SUFFIX_ARGS = -v FFFF -p FFFF # comment out to disable the options. # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover BACKLIGHT_ENABLE = no RGBLIGHT_ENABLE = no diff --git a/keyboards/xelus/valor/rev1/info.json b/keyboards/xelus/valor/rev1/info.json index 35d8e275df17..33e367059c50 100644 --- a/keyboards/xelus/valor/rev1/info.json +++ b/keyboards/xelus/valor/rev1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Xelus Valor rev1", "url": "", "maintainer": "Xelus22", - "width": 17.75, - "height": 5, "layouts": { "LAYOUT_alice_split_bs": { "layout": [ diff --git a/keyboards/xelus/valor/rev1/rules.mk b/keyboards/xelus/valor/rev1/rules.mk index ef105495d0cf..b176f240e6ce 100644 --- a/keyboards/xelus/valor/rev1/rules.mk +++ b/keyboards/xelus/valor/rev1/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output LTO_ENABLE = yes diff --git a/keyboards/xelus/valor/rev2/config.h b/keyboards/xelus/valor/rev2/config.h new file mode 100644 index 000000000000..8201373d2342 --- /dev/null +++ b/keyboards/xelus/valor/rev2/config.h @@ -0,0 +1,137 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x5845 // "XE" +#define PRODUCT_ID 0x5653 // Valor "VR" + 1 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Xelus +#define PRODUCT Xelus Valor Rev2 + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* key matrix pins */ +#define MATRIX_ROW_PINS { B11, B10, A3, A1, A2 } +#define MATRIX_COL_PINS { B2, B1, B0, A7, A6, A5, A4, A13, B7, B6, B5, B4, B3, A15, A14 } +#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 + +// I2C setup +#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 +#define I2C1_TIMINGR_SCLDEL 7U +#define I2C1_TIMINGR_SDADEL 0U +#define I2C1_TIMINGR_SCLH 45U +#define I2C1_TIMINGR_SCLL 149U + +// I2C EEPROM +#define EEPROM_I2C_24LC64 + +// More EEPROM for layers +#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 8191 + +/* RGB Matrix */ +#define RGB_DI_PIN A9 +#define RGBLED_NUM 28 +#define DRIVER_LED_TOTAL 28 +#define NOP_FUDGE 0.4 + +// RGB PWM +#define WS2812_PWM_DRIVER PWMD1 +#define WS2812_PWM_CHANNEL 2 +#define WS2812_PWM_PAL_MODE 1 +#define WS2812_DMA_STREAM STM32_DMA1_STREAM6 +#define WS2812_DMA_CHANNEL 7 +#define WS2812_DMAMUX_ID STM32_DMAMUX1_TIM1_UP + +// RGB Pullup +#define WS2812_EXTERNAL_PULLUP + +// RGB Matrix settings +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define RGB_MATRIX_KEYPRESSES +#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 +#define RGB_DISABLE_WHEN_USB_SUSPENDED +#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CUSTOM_test_mode + +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH diff --git a/keyboards/xelus/valor/rev2/halconf.h b/keyboards/xelus/valor/rev2/halconf.h new file mode 100644 index 000000000000..03b15da04584 --- /dev/null +++ b/keyboards/xelus/valor/rev2/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 . + */ +#pragma once + +#define HAL_USE_I2C TRUE + +#define HAL_USE_PWM TRUE + +#include_next + diff --git a/keyboards/xelus/valor/rev2/info.json b/keyboards/xelus/valor/rev2/info.json new file mode 100644 index 000000000000..47fd2c3e2b4f --- /dev/null +++ b/keyboards/xelus/valor/rev2/info.json @@ -0,0 +1,81 @@ +{ + "keyboard_name": "Xelus Valor Rev2", + "url": "", + "maintainer": "Xelus22", + "layouts": { + "LAYOUT_alice_split_bs": { + "layout": [ + {"x":0, "y":0}, + {"x":1.25, "y":0}, + {"x":2.25, "y":0}, + {"x":3.25, "y":0}, + {"x":4.25, "y":0}, + {"x":5.25, "y":0}, + {"x":6.25, "y":0}, + {"x":7.25, "y":0}, + {"x":10.25, "y":0}, + {"x":11.25, "y":0}, + {"x":12.25, "y":0}, + {"x":13.25, "y":0}, + {"x":14.25, "y":0}, + {"x":15.25, "y":0}, + {"x":16.25, "y":0}, + {"x":17.25, "y":0}, + + {"x":0, "y":1}, + {"x":1.25, "y":1, "w":1.5}, + {"x":2.75, "y":1}, + {"x":3.75, "y":1}, + {"x":4.75, "y":1}, + {"x":5.75, "y":1}, + {"x":6.75, "y":1}, + {"x":9.75, "y":1}, + {"x":10.75, "y":1}, + {"x":11.75, "y":1}, + {"x":12.75, "y":1}, + {"x":13.75, "y":1}, + {"x":14.75, "y":1}, + {"x":15.75, "y":1}, + {"x":16.75, "y":1, "w":1.5}, + + {"x":0, "y":2}, + {"x":1.25, "y":2, "w":1.75}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + {"x":6, "y":2}, + {"x":7, "y":2}, + {"x":10, "y":2}, + {"x":11, "y":2}, + {"x":12, "y":2}, + {"x":13, "y":2}, + {"x":14, "y":2}, + {"x":15, "y":2}, + {"x":16, "y":2, "w":2.25}, + + {"x":1.25, "y":3, "w":2.25}, + {"x":3.5, "y":3}, + {"x":4.5, "y":3}, + {"x":5.5, "y":3}, + {"x":6.5, "y":3}, + {"x":7.5, "y":3}, + {"x":9.5, "y":3}, + {"x":10.5, "y":3}, + {"x":11.5, "y":3}, + {"x":12.5, "y":3}, + {"x":13.5, "y":3}, + {"x":14.5, "y":3}, + {"x":15.5, "y":3, "w":1.75}, + {"x":17.25, "y":3}, + + {"x":1.25, "y":4, "w":1.5}, + {"x":4.25, "y":4, "w":1.5}, + {"x":5.75, "y":4, "w":2}, + {"x":7.75, "y":4, "w":1.25}, + {"x":9.5, "y":4, "w":2.75}, + {"x":12.25, "y":4, "w":1.5}, + {"x":16.75, "y":4, "w":1.5} + ] + } + } +} diff --git a/keyboards/xelus/valor/rev2/keymaps/default/config.h b/keyboards/xelus/valor/rev2/keymaps/default/config.h new file mode 100644 index 000000000000..824d4633ccdb --- /dev/null +++ b/keyboards/xelus/valor/rev2/keymaps/default/config.h @@ -0,0 +1,18 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#define USB_POLLING_INTERVAL_MS 1 +#define QMK_KEYS_PER_SCAN 4 diff --git a/keyboards/xelus/valor/rev2/keymaps/default/keymap.c b/keyboards/xelus/valor/rev2/keymaps/default/keymap.c new file mode 100644 index 000000000000..eb5f551126ad --- /dev/null +++ b/keyboards/xelus/valor/rev2/keymaps/default/keymap.c @@ -0,0 +1,79 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_ESC, KC_TILD, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, KC_BSPC, + KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RGUI, + KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RCTL + ), + + [1] = LAYOUT_all( + RGB_TOG, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; + +#ifdef RGB_MATRIX_ENABLE +void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { + // caps lock cyan + if (host_keyboard_led_state().caps_lock) { + RGB_MATRIX_INDICATOR_SET_COLOR(27, 0, 128, 128); + } else { + RGB_MATRIX_INDICATOR_SET_COLOR(27, 0, 0, 0); + } + + // num lock cyan + if (host_keyboard_led_state().num_lock) { + RGB_MATRIX_INDICATOR_SET_COLOR(26, 0, 128, 128); + } else { + RGB_MATRIX_INDICATOR_SET_COLOR(26, 0, 0, 0); + } + + // scroll lock cyan + if (host_keyboard_led_state().scroll_lock) { + RGB_MATRIX_INDICATOR_SET_COLOR(25, 0, 128, 128); + } else { + RGB_MATRIX_INDICATOR_SET_COLOR(25, 0, 0, 0); + } + + // layer state + switch (get_highest_layer(layer_state)) { + case 0: + RGB_MATRIX_INDICATOR_SET_COLOR(24, 0, 0, 0); + break; + case 1: + RGB_MATRIX_INDICATOR_SET_COLOR(24, 128, 0, 0); + break; + case 2: + RGB_MATRIX_INDICATOR_SET_COLOR(24, 0, 128, 0); + break; + case 3: + RGB_MATRIX_INDICATOR_SET_COLOR(24, 0, 0, 128); + break; + default: + // white + RGB_MATRIX_INDICATOR_SET_COLOR(24, 128, 128, 128); + break; + } +} +#endif diff --git a/keyboards/xelus/valor/rev2/keymaps/default/readme.md b/keyboards/xelus/valor/rev2/keymaps/default/readme.md new file mode 100644 index 000000000000..8648f1c1504f --- /dev/null +++ b/keyboards/xelus/valor/rev2/keymaps/default/readme.md @@ -0,0 +1,2 @@ +# The Default Valor Rev2 Layout + diff --git a/keyboards/xelus/valor/rev2/keymaps/via/config.h b/keyboards/xelus/valor/rev2/keymaps/via/config.h new file mode 100644 index 000000000000..456369d884c7 --- /dev/null +++ b/keyboards/xelus/valor/rev2/keymaps/via/config.h @@ -0,0 +1,24 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +// RGB Matrix +#define VIA_QMK_RGBLIGHT_ENABLE + +// More layers +#define DYNAMIC_KEYMAP_LAYER_COUNT 8 + +#define USB_POLLING_INTERVAL_MS 1 +#define QMK_KEYS_PER_SCAN 4 diff --git a/keyboards/xelus/valor/rev2/keymaps/via/keymap.c b/keyboards/xelus/valor/rev2/keymaps/via/keymap.c new file mode 100644 index 000000000000..c2566595143d --- /dev/null +++ b/keyboards/xelus/valor/rev2/keymaps/via/keymap.c @@ -0,0 +1,127 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_ESC, KC_TILD, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, KC_BSPC, + KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RGUI, + KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RCTL + ), + + [1] = LAYOUT_all( + RGB_TOG, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [4] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [5] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [6] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [7] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; + +#ifdef RGB_MATRIX_ENABLE +void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { + // caps lock cyan + if (host_keyboard_led_state().caps_lock) { + RGB_MATRIX_INDICATOR_SET_COLOR(27, 0, 128, 128); + } else { + RGB_MATRIX_INDICATOR_SET_COLOR(27, 0, 0, 0); + } + + // num lock cyan + if (host_keyboard_led_state().num_lock) { + RGB_MATRIX_INDICATOR_SET_COLOR(26, 0, 128, 128); + } else { + RGB_MATRIX_INDICATOR_SET_COLOR(26, 0, 0, 0); + } + + // scroll lock cyan + if (host_keyboard_led_state().scroll_lock) { + RGB_MATRIX_INDICATOR_SET_COLOR(25, 0, 128, 128); + } else { + RGB_MATRIX_INDICATOR_SET_COLOR(25, 0, 0, 0); + } + + // layer state + switch (get_highest_layer(layer_state)) { + case 0: + RGB_MATRIX_INDICATOR_SET_COLOR(24, 0, 0, 0); + break; + case 1: + RGB_MATRIX_INDICATOR_SET_COLOR(24, 128, 0, 0); + break; + case 2: + RGB_MATRIX_INDICATOR_SET_COLOR(24, 0, 128, 0); + break; + case 3: + RGB_MATRIX_INDICATOR_SET_COLOR(24, 0, 0, 128); + break; + default: + // white + RGB_MATRIX_INDICATOR_SET_COLOR(24, 128, 128, 128); + break; + } +} +#endif diff --git a/keyboards/xelus/valor/rev2/keymaps/via/readme.md b/keyboards/xelus/valor/rev2/keymaps/via/readme.md new file mode 100644 index 000000000000..dcdfd4dd9e53 --- /dev/null +++ b/keyboards/xelus/valor/rev2/keymaps/via/readme.md @@ -0,0 +1,2 @@ +# The VIA Valor Rev2 Layout + diff --git a/keyboards/xelus/valor/rev2/keymaps/via/rules.mk b/keyboards/xelus/valor/rev2/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/xelus/valor/rev2/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/xelus/valor/rev2/mcuconf.h b/keyboards/xelus/valor/rev2/mcuconf.h new file mode 100644 index 000000000000..736837565d48 --- /dev/null +++ b/keyboards/xelus/valor/rev2/mcuconf.h @@ -0,0 +1,30 @@ +/* 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 . + */ + +#pragma once + +#include_next + +#undef STM32_I2C_USE_I2C1 +#define STM32_I2C_USE_I2C1 TRUE + +#undef STM32_PWM_USE_TIM1 +#define STM32_PWM_USE_TIM1 TRUE + +#undef STM32_I2C_I2C1_RX_DMA_STREAM +#undef STM32_I2C_I2C1_TX_DMA_STREAM +#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(2, 6) +#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(2, 7) diff --git a/keyboards/xelus/valor/rev2/readme.md b/keyboards/xelus/valor/rev2/readme.md new file mode 100644 index 000000000000..863f5ef4233b --- /dev/null +++ b/keyboards/xelus/valor/rev2/readme.md @@ -0,0 +1,20 @@ +# Valor Rev 2 + +An Alice replacement keyboard PCB. + +* Keyboard Maintainer: [Xelus22](https://github.com/Xelus22) +* Hardware Supported: Valor Rev 2 +* Hardware Availability: Custom keyboard group buys + +Make example for this keyboard (after setting up your build environment): + + make xelus/valor/rev2:default + +Reset your keyboard in 3 ways: +
    +
  1. Software reset on Fn + PgDn (bottom of the 3 macro buttons)
  2. +
  3. Bootmagic reset: hold down the top left key (usually escape) and plugin the keyboard
  4. +
  5. Physical reset button: on the back of the PCB, there should be a small golden button you can press
  6. +
+ +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/xelus/valor/rev2/rev2.c b/keyboards/xelus/valor/rev2/rev2.c new file mode 100644 index 000000000000..f1304187948e --- /dev/null +++ b/keyboards/xelus/valor/rev2/rev2.c @@ -0,0 +1,72 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "rev2.h" + +#ifdef RGB_MATRIX_ENABLE + +led_config_t g_led_config = { { + // Key Matrix to LED Index + { 24, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }, + { 25, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }, + { 26, 27, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }, + { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }, + { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED } +}, { + // LED Index to Physical Position + { 224, 0 }, + { 224, 9 }, + { 224, 21 }, + { 224, 33 }, + { 224, 45 }, + { 223, 51 }, + { 206, 52 }, + { 190, 52 }, + { 172, 52 }, + { 154, 57 }, + { 136, 61 }, + { 118, 63 }, + { 101, 64 }, + { 80 , 60 }, + { 64 , 57 }, + { 46 , 53 }, + { 28 , 53 }, + { 10 , 52 }, + { 3 , 51 }, + { 2 , 45 }, + { 2 , 33 }, + { 2 , 20 }, + { 2 , 9 }, + { 0 , 0 }, + { 9 , 3 }, + { 6 , 14 }, + { 4 , 26 }, + { 21 , 27 } + +}, { + // LED Index to Flag + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 8, 8, 8, 8 +} }; + + +void keyboard_pre_init_kb(void) { + rgb_matrix_set_flags(LED_FLAG_MODIFIER|LED_FLAG_UNDERGLOW|LED_FLAG_KEYLIGHT); + keyboard_pre_init_user(); +} +#endif diff --git a/keyboards/xelus/valor/rev2/rev2.h b/keyboards/xelus/valor/rev2/rev2.h new file mode 100644 index 000000000000..9cf78c94121a --- /dev/null +++ b/keyboards/xelus/valor/rev2/rev2.h @@ -0,0 +1,37 @@ +/* Copyright 2021 Harrison Chan (Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ____ KC_NO + +#define LAYOUT_alice_split_bs( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K214, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, \ + K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, \ + K401, K403, K405, K406, K408, K410, K413 \ +) { \ + { 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, K114 }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 }, \ + { ____, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314 }, \ + { ____, K401, ____, K403, ____, K405, K406, ____, K408, ____, K410, ____, ____, K413, ____ } \ +} + +#define LAYOUT_all LAYOUT_alice_split_bs diff --git a/keyboards/xelus/valor/rev2/rgb_matrix_kb.inc b/keyboards/xelus/valor/rev2/rgb_matrix_kb.inc new file mode 100644 index 000000000000..35184060904d --- /dev/null +++ b/keyboards/xelus/valor/rev2/rgb_matrix_kb.inc @@ -0,0 +1,34 @@ +// Step 1. +// Declare custom effects using the RGB_MATRIX_EFFECT macro +// (note the lack of semicolon after the macro!) +RGB_MATRIX_EFFECT(test_mode) + +// Step 2. +// Define effects inside the `RGB_MATRIX_CUSTOM_EFFECT_IMPLS` ifdef block +#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS + +// e.g: A simple effect, self-contained within a single method +static bool test_mode(effect_params_t* params) { + uint8_t factor = 9; + switch ((g_rgb_timer & (0b11 << factor)) >> factor) { + case 0: { + rgb_matrix_set_color_all(150, 0, 0); + break; + } + case 1: { + rgb_matrix_set_color_all(0, 150, 0); + break; + } + case 2: { + rgb_matrix_set_color_all(0, 0, 150); + break; + } + case 3: { + rgb_matrix_set_color_all(150, 150, 150); + break; + } + } + return false; +} + +#endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS diff --git a/keyboards/xelus/valor/rev2/rules.mk b/keyboards/xelus/valor/rev2/rules.mk new file mode 100644 index 000000000000..0b6d82d99a53 --- /dev/null +++ b/keyboards/xelus/valor/rev2/rules.mk @@ -0,0 +1,29 @@ +# MCU name +MCU = STM32L422 + +# Bootloader selection +BOOTLOADER = stm32-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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = WS2812 +RGB_MATRIX_CUSTOM_KB = yes +WS2812_DRIVER = pwm +EEPROM_DRIVER = i2c + +OPT = 2 +LTO_ENABLE = yes + +LAYOUTS = alice_split_bs diff --git a/keyboards/xelus/valor_frl_tkl/config.h b/keyboards/xelus/valor_frl_tkl/config.h index 5319a95bae2a..c1c08878c0fd 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/xelus/valor_frl_tkl/info.json b/keyboards/xelus/valor_frl_tkl/info.json index a90af9b4ec74..36c95032fb30 100644 --- a/keyboards/xelus/valor_frl_tkl/info.json +++ b/keyboards/xelus/valor_frl_tkl/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Xelus Valor FRL TKL", "url": "", "maintainer": "Xelus22", - "width": 19.25, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/xelus/valor_frl_tkl/rules.mk b/keyboards/xelus/valor_frl_tkl/rules.mk index a81f8d1279a4..bd04baad998b 100644 --- a/keyboards/xelus/valor_frl_tkl/rules.mk +++ b/keyboards/xelus/valor_frl_tkl/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = 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 EEPROM_DRIVER = i2c diff --git a/keyboards/xiaomi/mk02/info.json b/keyboards/xiaomi/mk02/info.json index 78a11334ad5f..6f216802f6fb 100644 --- a/keyboards/xiaomi/mk02/info.json +++ b/keyboards/xiaomi/mk02/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Xiaomi MK02", "url": "", "maintainer": "qmk", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT_tkl_ansi": { "layout": [ diff --git a/keyboards/xiaomi/mk02/rules.mk b/keyboards/xiaomi/mk02/rules.mk index 730fb0a894cf..0383dd7e2e32 100644 --- a/keyboards/xiaomi/mk02/rules.mk +++ b/keyboards/xiaomi/mk02/rules.mk @@ -6,13 +6,11 @@ MCU_LDSCRIPT = STM32F072_0x2000_bootloader DFU_ARGS = -d 0483:df11 -a 0 -s 0x08002000:leave DFU_SUFFIX_ARGS = -v 0483 -p DF11 -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = no # USB Nkey Rollover -CUSTOM_MATRIX = no # Custom matrix file # BACKLIGHT_ENABLE = yes # This is broken on 072 for some reason RGBLIGHT_ENABLE = no diff --git a/keyboards/xiudi/xd002/.noci b/keyboards/xiudi/xd002/.noci new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/keyboards/xd002/config.h b/keyboards/xiudi/xd002/config.h similarity index 100% rename from keyboards/xd002/config.h rename to keyboards/xiudi/xd002/config.h diff --git a/keyboards/xiudi/xd002/info.json b/keyboards/xiudi/xd002/info.json new file mode 100644 index 000000000000..0ef0e8f21a6a --- /dev/null +++ b/keyboards/xiudi/xd002/info.json @@ -0,0 +1,13 @@ +{ + "keyboard_name": "xd002", + "url": "https://kprepublic.com/products/xd002-xiudi-2-custom-mechanical-keyboard-2-keys-underglow-and-switch-rgb-pcb-programmed-hot-swappable-macro-key-aluminum-case", + "maintainer": "zvecr", + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0} + ] + } + } +} diff --git a/keyboards/xd002/keymaps/default/keymap.c b/keyboards/xiudi/xd002/keymaps/default/keymap.c similarity index 100% rename from keyboards/xd002/keymaps/default/keymap.c rename to keyboards/xiudi/xd002/keymaps/default/keymap.c diff --git a/keyboards/xd002/keymaps/multilayer_rgb/config.h b/keyboards/xiudi/xd002/keymaps/multilayer_rgb/config.h similarity index 100% rename from keyboards/xd002/keymaps/multilayer_rgb/config.h rename to keyboards/xiudi/xd002/keymaps/multilayer_rgb/config.h diff --git a/keyboards/xiudi/xd002/keymaps/multilayer_rgb/keymap.c b/keyboards/xiudi/xd002/keymaps/multilayer_rgb/keymap.c new file mode 100644 index 000000000000..4ae28fd91b97 --- /dev/null +++ b/keyboards/xiudi/xd002/keymaps/multilayer_rgb/keymap.c @@ -0,0 +1,173 @@ +/* Copyright 2020 elmo-space + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +#include "rgblite.h" + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FUNC, +}; + +// set your keycodes here +#define layer1_left KC_PAUS +#define layer1_right KC_MPLY +#define layer2_left KC_MPRV +#define layer2_right KC_MNXT + + +enum custom_keycodes { + LEFT1 = SAFE_RANGE, + RIGHT1, + LEFT2, + RIGHT2 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( + LEFT1, RIGHT1 + ), + [_FUNC] = LAYOUT( + LEFT2, RIGHT2 + ) +}; + +static bool key1_down = false; +static bool key2_down = false; +static char layer_switched = 0; // this prevents the individual keys getting triggered after a layerchange + +bool process_record_user(uint16_t keycode, keyrecord_t *record) +{ + switch (keycode) + { + case LEFT1: + if (record->event.pressed) + { + if (key2_down) + { + layer_on(1); + layer_switched = 2; + return false; + break; + } + key1_down = true; + } + else { + if (layer_switched > 0) { + --layer_switched; + key1_down = false; + } + else { + tap_code(layer1_left); + key1_down = false; + } + } + return false; + break; + case RIGHT1: + if (record->event.pressed) + { + if (key1_down) + { + layer_on(1); + layer_switched = 2; + return false; + break; + } + key2_down = true; + } + else { + if (layer_switched > 0) { + --layer_switched; + key2_down = false; + } + else { + tap_code(layer1_right); + key2_down = false; + } + } + return false; + break; + case LEFT2: + if (record->event.pressed) + { + if (key2_down) + { + layer_off(1); + layer_switched = 2; + return false; + break; + } + key1_down = true; + } + else { + if (layer_switched > 0) { + --layer_switched; + key1_down = false; + } + else { + tap_code(layer2_left); + key1_down = false; + } + } + return false; + break; + case RIGHT2: + if (record->event.pressed) + { + if (key1_down) + { + layer_off(1); + layer_switched = 2; + return false; + break; + } + key2_down = true; + } + else { + if (layer_switched > 0) { + --layer_switched; + key2_down = false; + } + else { + tap_code(layer2_right); + key2_down = false; + } + } + return false; + break; + } + return true; +}; + +// layer colors +layer_state_t layer_state_set_user(layer_state_t state) { + switch (get_highest_layer(state)) { + case _FUNC: + rgblite_setrgb(RGB_RED); + break; + default: // for any other layers, or the default layer + rgblite_setrgb(RGB_GREEN); + break; + } + return state; +} + +// default color +void keyboard_post_init_user(void) { + rgblite_setrgb(RGB_GREEN); +} diff --git a/keyboards/xiudi/xd002/keymaps/multilayer_rgb/rgblite.h b/keyboards/xiudi/xd002/keymaps/multilayer_rgb/rgblite.h new file mode 100644 index 000000000000..8a14a8f9560e --- /dev/null +++ b/keyboards/xiudi/xd002/keymaps/multilayer_rgb/rgblite.h @@ -0,0 +1,9 @@ +#pragma once + +#include "ws2812.h" +#include "color.h" + +static inline void rgblite_setrgb(uint8_t _r, uint8_t _g, uint8_t _b) { + LED_TYPE leds[RGBLED_NUM] = {{.r = _r, .g = _g, .b = _b}, {.r = _r, .g = _g, .b = _b}}; + ws2812_setleds(leds, RGBLED_NUM); +} diff --git a/keyboards/xd002/keymaps/multilayer_rgb/rules.mk b/keyboards/xiudi/xd002/keymaps/multilayer_rgb/rules.mk similarity index 100% rename from keyboards/xd002/keymaps/multilayer_rgb/rules.mk rename to keyboards/xiudi/xd002/keymaps/multilayer_rgb/rules.mk diff --git a/keyboards/xd002/keymaps/rgb/keymap.c b/keyboards/xiudi/xd002/keymaps/rgb/keymap.c similarity index 100% rename from keyboards/xd002/keymaps/rgb/keymap.c rename to keyboards/xiudi/xd002/keymaps/rgb/keymap.c diff --git a/keyboards/xd002/keymaps/rgb/rules.mk b/keyboards/xiudi/xd002/keymaps/rgb/rules.mk similarity index 100% rename from keyboards/xd002/keymaps/rgb/rules.mk rename to keyboards/xiudi/xd002/keymaps/rgb/rules.mk diff --git a/keyboards/xiudi/xd002/keymaps/rgb_lite/keymap.c b/keyboards/xiudi/xd002/keymaps/rgb_lite/keymap.c new file mode 100644 index 000000000000..a795ca8a6de2 --- /dev/null +++ b/keyboards/xiudi/xd002/keymaps/rgb_lite/keymap.c @@ -0,0 +1,31 @@ +#include QMK_KEYBOARD_H +#include "rgblite.h" + +// Defines the keycodes used by our macros in process_record_user +enum custom_keycodes { + QMKURL = SAFE_RANGE, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + RGB_HUI, QMKURL + ) +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (record->event.pressed) { + switch (keycode) { + case RGB_HUI: + rgblite_increase_hue(); + break; + case QMKURL: + SEND_STRING("https://qmk.fm/" SS_TAP(X_ENTER)); + break; + } + } + return true; +} + +void keyboard_post_init_user(void) { + rgblite_increase_hue(); +} diff --git a/keyboards/xiudi/xd002/keymaps/rgb_lite/rgblite.h b/keyboards/xiudi/xd002/keymaps/rgb_lite/rgblite.h new file mode 100644 index 000000000000..b7919f976742 --- /dev/null +++ b/keyboards/xiudi/xd002/keymaps/rgb_lite/rgblite.h @@ -0,0 +1,26 @@ +#pragma once + +#include "ws2812.h" +#include "color.h" + +static inline void rgblite_setrgb(uint8_t _r, uint8_t _g, uint8_t _b) { + LED_TYPE leds[RGBLED_NUM] = {{.r = _r, .g = _g, .b = _b}, {.r = _r, .g = _g, .b = _b}}; + ws2812_setleds(leds, RGBLED_NUM); +} + +static void rgblite_increase_hue(void) { + static uint8_t state = 0; + + state = (state + 1) % 3; + switch (state) { + case 1: + rgblite_setrgb(RGB_RED); + break; + case 2: + rgblite_setrgb(RGB_BLUE); + break; + default: + rgblite_setrgb(RGB_GREEN); + break; + } +} diff --git a/keyboards/xd002/keymaps/rgb_lite/rules.mk b/keyboards/xiudi/xd002/keymaps/rgb_lite/rules.mk similarity index 100% rename from keyboards/xd002/keymaps/rgb_lite/rules.mk rename to keyboards/xiudi/xd002/keymaps/rgb_lite/rules.mk diff --git a/keyboards/anavi/macropad2/keymaps/tap_dance/config.h b/keyboards/xiudi/xd002/keymaps/tap_dance/config.h similarity index 100% rename from keyboards/anavi/macropad2/keymaps/tap_dance/config.h rename to keyboards/xiudi/xd002/keymaps/tap_dance/config.h diff --git a/keyboards/xd002/keymaps/tap_dance/keymap.c b/keyboards/xiudi/xd002/keymaps/tap_dance/keymap.c similarity index 100% rename from keyboards/xd002/keymaps/tap_dance/keymap.c rename to keyboards/xiudi/xd002/keymaps/tap_dance/keymap.c diff --git a/keyboards/xiudi/xd002/keymaps/tap_dance/rules.mk b/keyboards/xiudi/xd002/keymaps/tap_dance/rules.mk new file mode 100644 index 000000000000..e5ddcae8d927 --- /dev/null +++ b/keyboards/xiudi/xd002/keymaps/tap_dance/rules.mk @@ -0,0 +1 @@ +TAP_DANCE_ENABLE = yes diff --git a/keyboards/xd002/keymaps/volume/keymap.c b/keyboards/xiudi/xd002/keymaps/volume/keymap.c similarity index 100% rename from keyboards/xd002/keymaps/volume/keymap.c rename to keyboards/xiudi/xd002/keymaps/volume/keymap.c diff --git a/keyboards/xd002/keymaps/volume/rules.mk b/keyboards/xiudi/xd002/keymaps/volume/rules.mk similarity index 100% rename from keyboards/xd002/keymaps/volume/rules.mk rename to keyboards/xiudi/xd002/keymaps/volume/rules.mk diff --git a/keyboards/xiudi/xd002/readme.md b/keyboards/xiudi/xd002/readme.md new file mode 100644 index 000000000000..395a54070917 --- /dev/null +++ b/keyboards/xiudi/xd002/readme.md @@ -0,0 +1,49 @@ +# xd002 + +![xd002](https://cdn.shopify.com/s/files/1/2711/4238/products/xd002_1024x1024.jpg?v=1522134411) + +2% Custom mechanical keyboard. ATtiny85 powered, with 2*WS2812 LEDs, and the micronucleus bootloader. + +**Note**: Due to limited firmware space, a _**lot**_ of features have to be disabled to get a functioning QMK based keyboard. + +* Keyboard Maintainer: [zvecr](https://github.com/zvecr) +* Hardware Supported: xd002 +* Hardware Availability: [kprepublic](https://kprepublic.com/products/xd002-xiudi-2-custom-mechanical-keyboard-2-keys-underglow-and-switch-rgb-pcb-programmed-hot-swappable-macro-key-aluminum-case) + +Make example for this keyboard (after setting up your build environment): + + make xiudi/xd002:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Flashing +### Prerequisites + +```bash +git clone https://github.com/micronucleus/micronucleus.git +cd micronucleus/commandline/ +sudo make install +``` + +On Linux, you’ll need proper privileges to access the MCU. You can either use sudo when flashing firmware, or place [these files](https://github.com/micronucleus/micronucleus/blob/master/commandline/49-micronucleus.rules) in /etc/udev/rules.d/. Once added run the following: + +```bash +sudo udevadm control --reload-rules +sudo udevadm trigger +``` + +### Instructions + +**Reset Key**: Hold down key nearest to the USB socket while plugging in the keyboard. + +```bash +make xiudi/xd002:default:flash + +# or directly with... +micronucleus --run +``` + +### Recovery + +* [Original Firmware](https://github.com/xiudi/Attiny85_vusb_pad_test) +* [Bootloader Repair](https://digistump.com/wiki/digispark/tutorials/proisp) diff --git a/keyboards/xiudi/xd002/rules.mk b/keyboards/xiudi/xd002/rules.mk new file mode 100644 index 000000000000..389697df7c28 --- /dev/null +++ b/keyboards/xiudi/xd002/rules.mk @@ -0,0 +1,27 @@ +# MCU name +MCU = attiny85 + +# Bootloader selection +BOOTLOADER = micronucleus +OPT_DEFS += -DBOOTLOADER_SIZE=1862 +PROGRAM_CMD = micronucleus --run $(BUILD_DIR)/$(TARGET).hex + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = no # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +# Save as much space as we can... +LTO_ENABLE = yes +GRAVE_ESC_ENABLE = no +MAGIC_ENABLE = no +SPACE_CADET_ENABLE = no diff --git a/keyboards/xd002/xd002.c b/keyboards/xiudi/xd002/xd002.c similarity index 100% rename from keyboards/xd002/xd002.c rename to keyboards/xiudi/xd002/xd002.c diff --git a/keyboards/xd002/xd002.h b/keyboards/xiudi/xd002/xd002.h similarity index 100% rename from keyboards/xd002/xd002.h rename to keyboards/xiudi/xd002/xd002.h diff --git a/keyboards/xiudi/xd004/info.json b/keyboards/xiudi/xd004/info.json new file mode 100644 index 000000000000..26e418943fec --- /dev/null +++ b/keyboards/xiudi/xd004/info.json @@ -0,0 +1,9 @@ +{ + "keyboard_name": "XD004", + "maintainer": "qmk", + "layouts": { + "LAYOUT_all": { + "layout": [{"label":"L", "x":0, "y":0}, {"label":"O", "x":1, "y":0}, {"label":"V", "x":2, "y":0}, {"label":"E", "x":3, "y":0}] + } + } +} diff --git a/keyboards/xiudi/xd004/keymaps/default/keymap.c b/keyboards/xiudi/xd004/keymaps/default/keymap.c new file mode 100644 index 000000000000..f54f422613fc --- /dev/null +++ b/keyboards/xiudi/xd004/keymaps/default/keymap.c @@ -0,0 +1,8 @@ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + // 0: Base Layer + LAYOUT_all(KC_L, KC_O, KC_V, KC_E), + +}; diff --git a/keyboards/xd004/keymaps/default/readme.md b/keyboards/xiudi/xd004/keymaps/default/readme.md similarity index 100% rename from keyboards/xd004/keymaps/default/readme.md rename to keyboards/xiudi/xd004/keymaps/default/readme.md diff --git a/keyboards/xiudi/xd004/keymaps/narze/keymap.c b/keyboards/xiudi/xd004/keymaps/narze/keymap.c new file mode 100644 index 000000000000..30ea48d6837b --- /dev/null +++ b/keyboards/xiudi/xd004/keymaps/narze/keymap.c @@ -0,0 +1,24 @@ +/* Copyright 2021 narze + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + // 0: Base Layer + LAYOUT_all(HYPR(KC_F2), HYPR(KC_F1), LCTL(KC_B), LCTL(KC_X)), + +}; diff --git a/keyboards/xiudi/xd004/keymaps/narze/readme.md b/keyboards/xiudi/xd004/keymaps/narze/readme.md new file mode 100644 index 000000000000..6f4bca9a90bf --- /dev/null +++ b/keyboards/xiudi/xd004/keymaps/narze/readme.md @@ -0,0 +1,13 @@ +# narze Keymap for XD004 PCB + +(Key 1 is on the opposite of USB port side, so I flip the keys to make usb port be on the left) + +- Key 1 : Hyper + F2 +- Key 2 : Hyper + F1 +- Key 3 : Ctrl + B (Microphone : Toggle mute) +- Key 4 : Ctrl + X (Microphone : Push to talk) + +## Build & Flash + +- Put this board in DFU : bridge the last two pins (#5 & 6) of the 6-pin "J2" header on the opposite edge of the board to the USB port. +- `make xd004/v1:narze:flash` or `qmk flash -kb xd004/v1 -km narze` diff --git a/keyboards/xd004/keymaps/system_and_media/keymap.c b/keyboards/xiudi/xd004/keymaps/system_and_media/keymap.c similarity index 100% rename from keyboards/xd004/keymaps/system_and_media/keymap.c rename to keyboards/xiudi/xd004/keymaps/system_and_media/keymap.c diff --git a/keyboards/xiudi/xd004/keymaps/system_and_media/readme.md b/keyboards/xiudi/xd004/keymaps/system_and_media/readme.md new file mode 100644 index 000000000000..3e5533b036d2 --- /dev/null +++ b/keyboards/xiudi/xd004/keymaps/system_and_media/readme.md @@ -0,0 +1,9 @@ +# Slightly more advanced keymap for XD004 PCB + +A somehow more useful keymap, allowing one to move across virtual desktops on Windows, etc. + +It also has a 'Super Alt-F4' key for Windows that, when tapped does Alt-F4, unless two consecutive taps are less than 300ms apart, in which case the second tap becomes Enter. This allows you to close all apps doing taps, and then when the System shutdown window arrives you do a second quick tap and it will type enter, thus shutting down the computer. + +## Build + +To build the keymap, simply run `make xiudi/xd004:system_and_media`. diff --git a/keyboards/xiudi/xd004/readme.md b/keyboards/xiudi/xd004/readme.md new file mode 100644 index 000000000000..6ee2fa2cd9de --- /dev/null +++ b/keyboards/xiudi/xd004/readme.md @@ -0,0 +1,33 @@ +# XD004 + +4-keys board + +![Top View of a XD004 board](https://ae01.alicdn.com/kf/HTB1_G9IX21H3KVjSZFHq6zKppXa0/xd004-xiudi-4-Custom-Mechanical-Keyboard-4-keys-switch-leds-PCB-programmed-hot-swappable-macro-key.jpg) + +* Keyboard Maintainer: QMK Community +* Hardware Supported: XD004 PCB v1.0 +* Hardware Availability: [KPRepublic](https://kprepublic.com/products/xd004-xiudi-4-custom-mechanical-keyboard-4-keys-switch-leds-pcb-programmed-hot-swappable-macro-key-silver-case-micro-port) + +To put this board in DFU (firmware update) mode, bridge the last two pins (#5 & 6) of the 6-pin "J2" header on the opposite edge of the board to the USB port" +``` +----+ + J2 | +[o] | +(o) | +(o) | +(o) | +(o)-+-\ (These +(o)-+-/ two) + | +----+ +``` + +Make example for this keyboard (after setting up your build environment): + + make xiudi/xd004/v1:default + +Flashing example for this keyboard: + + make xiudi/xd004/v1:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/xd004/v1/config.h b/keyboards/xiudi/xd004/v1/config.h similarity index 100% rename from keyboards/xd004/v1/config.h rename to keyboards/xiudi/xd004/v1/config.h diff --git a/keyboards/xiudi/xd004/v1/rules.mk b/keyboards/xiudi/xd004/v1/rules.mk new file mode 100644 index 000000000000..d0747068c0e1 --- /dev/null +++ b/keyboards/xiudi/xd004/v1/rules.mk @@ -0,0 +1,21 @@ +# MCU name +MCU = atmega16u2 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +NKRO_ENABLE = no # 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 = no # Enable WS2812 RGB underlight. +SPACE_CADET_ENABLE = no +# Saves about 5% of space: +LTO_ENABLE = yes + +#LAYOUTS = ortho_1x4 diff --git a/keyboards/xiudi/xd004/xd004.c b/keyboards/xiudi/xd004/xd004.c new file mode 100644 index 000000000000..7f0b4e52c5ba --- /dev/null +++ b/keyboards/xiudi/xd004/xd004.c @@ -0,0 +1 @@ +#include "xd004.h" diff --git a/keyboards/xd004/xd004.h b/keyboards/xiudi/xd004/xd004.h similarity index 100% rename from keyboards/xd004/xd004.h rename to keyboards/xiudi/xd004/xd004.h diff --git a/keyboards/xiudi/xd60/info.json b/keyboards/xiudi/xd60/info.json new file mode 100644 index 000000000000..8ea3d6a4ff15 --- /dev/null +++ b/keyboards/xiudi/xd60/info.json @@ -0,0 +1,162 @@ +{ + "keyboard_name": "XD60", + "maintainer": "qmk", + "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}, {"x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.25}, {"label":"Shift", "x":0, "y":3}, {"x":1, "y":3}, {"label":"Z", "x":2, "y":3}, {"label":"X", "x":3, "y":3}, {"label":"C", "x":4, "y":3}, {"label":"V", "x":5, "y":3}, {"label":"B", "x":6, "y":3}, {"label":"N", "x":7, "y":3}, {"label":"M", "x":8, "y":3}, {"label":"<", "x":9, "y":3}, {"label":">", "x":10, "y":3}, {"label":"?", "x":11, "y":3}, {"label":"Shift", "x":12, "y":3}, {"x":13, "y":3}, {"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}, {"label":"Win", "x":11, "y":4}, {"label":"Menu", "x":12, "y":4}, {"label":"Ctrl", "x":13, "y":4}, {"x":14, "y":4}] + }, + + "LAYOUT_60_ansi": { + "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}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"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":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"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}] + }, + + "LAYOUT_60_ansi_split_bs_rshift": { + "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}, + {"label":"BS", "x":13, "y":0, "w":1}, + {"label":"BS", "x":14, "y":0, "w":1}, + + {"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":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"FN", "x":14, "y":3, "w":1}, + + {"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} + ] + }, + + "LAYOUT_60_iso": { + "layout": [{"label":"\u00ac", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"\"", "x":2, "y":0}, {"label":"\u00a3", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"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":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"@", "x":11.75, "y":2}, {"label":"~", "x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"label":"|", "x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"GUI", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"label":"Space", "x":3.75, "y":4, "w":6.25}, {"label":"AltGr", "x":10, "y":4, "w":1.25}, {"label":"GUI", "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}] + }, + + "LAYOUT_60_iso_split_bs_rshift": { + "layout": [ + {"label":"\u00ac", "x":0, "y":0}, + {"label":"!", "x":1, "y":0}, + {"label":"\"", "x":2, "y":0}, + {"label":"\u00a3", "x":3, "y":0}, + {"label":"$", "x":4, "y":0}, + {"label":"%", "x":5, "y":0}, + {"label":"^", "x":6, "y":0}, + {"label":"&", "x":7, "y":0}, + {"label":"*", "x":8, "y":0}, + {"label":"(", "x":9, "y":0}, + {"label":")", "x":10, "y":0}, + {"label":"_", "x":11, "y":0}, + {"label":"+", "x":12, "y":0}, + {"label":"BS", "x":13, "y":0, "w":1}, + {"label":"BS", "x":14, "y":0, "w":1}, + + {"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":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":":", "x":10.75, "y":2}, + {"label":"@", "x":11.75, "y":2}, + {"label":"~", "x":12.75, "y":2}, + {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, + + {"label":"Shift", "x":0, "y":3, "w":1.25}, + {"label":"|", "x":1.25, "y":3}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":"<", "x":9.25, "y":3}, + {"label":">", "x":10.25, "y":3}, + {"label":"?", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"FN", "x":14, "y":3, "w":1}, + + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"GUI", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space", "x":3.75, "y":4, "w":6.25}, + {"label":"AltGr", "x":10, "y":4, "w":1.25}, + {"label":"GUI", "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/xiudi/xd60/keymaps/Jos/README.md b/keyboards/xiudi/xd60/keymaps/Jos/README.md new file mode 100644 index 000000000000..c93ea25bfd5d --- /dev/null +++ b/keyboards/xiudi/xd60/keymaps/Jos/README.md @@ -0,0 +1,22 @@ +# Jos's Layout + +Custom layout with various options. Designed to be used with the Canadian Multilingual software layout. + +## Layout +This is the physical layout of my xd60, for reference. See the keymap file for actual software layout. +![Keyboard Layout (Physical appearence)](https://i.imgur.com/qzOmqyq.png "Physical Layout") + +## Features +**Caps Lock** is **Escape** and the **Window key** is a **Function** key that still acts like the **Window** key in conjuction with `w`, `s`, `d`, `l`, `t`, `e`, `h`, and `SPACE`. + +There are a few `#define` lines at the beginning of the keymap file that enable the following options if not commented: +- `ISOLIKE_ALT_ENTER`: `RALT` + `ENT` is the same as `RALT`+`BSLS`. For logical placement of `{` and `}` (the former being `RALT`+`BSLS`) with ANSI enter on a ISO-based layout. +- `TWO_SFT_CAPS`: Both shifts together → Caps Lock. +- `APP_IS_RALT_RCTRL`: Menu would be between `RCTRL` and `RALT`, so now `RALT` + `RCTRL` → `APP`. +- `HELD_ESC_IS_SHIFT`: Holding `ESC` → `SHIFT`. It always register shift when pressing `ESC`. Useful for VIM. +- `BSPC_BLOCKS_DEL`: If `BSPC` is held, we disable `DEL`. To avoid acidental presses of `DEL` with split backspace key. +- `ALT_MINSEQL_IS_ALT_78`: Pressing `ALT+MINS/EQL` will act like `ALT+7/8`. Will yield `{}` instead of `½¬` in Canadian Multilingual Layout. Diminished finger stretching. + + +# Build +To build, simply run `make xiudi/xd60:Jos` diff --git a/keyboards/xd60/keymaps/Jos/config.h b/keyboards/xiudi/xd60/keymaps/Jos/config.h similarity index 100% rename from keyboards/xd60/keymaps/Jos/config.h rename to keyboards/xiudi/xd60/keymaps/Jos/config.h diff --git a/keyboards/xd60/keymaps/Jos/keymap.c b/keyboards/xiudi/xd60/keymaps/Jos/keymap.c similarity index 100% rename from keyboards/xd60/keymaps/Jos/keymap.c rename to keyboards/xiudi/xd60/keymaps/Jos/keymap.c diff --git a/keyboards/xd60/keymaps/Jos/rules.mk b/keyboards/xiudi/xd60/keymaps/Jos/rules.mk similarity index 100% rename from keyboards/xd60/keymaps/Jos/rules.mk rename to keyboards/xiudi/xd60/keymaps/Jos/rules.mk diff --git a/keyboards/xiudi/xd60/keymaps/ansi_split_bs_rshift_space/keymap.c b/keyboards/xiudi/xd60/keymaps/ansi_split_bs_rshift_space/keymap.c new file mode 100644 index 000000000000..e630851db50d --- /dev/null +++ b/keyboards/xiudi/xd60/keymaps/ansi_split_bs_rshift_space/keymap.c @@ -0,0 +1,33 @@ +/* Copyright 2021 mizuho1998 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_60_ansi_split_bs_rshift_space( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT, + KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, + KC_LCTL, KC_LGUI, KC_LALT, KC_LSFT, KC_SPC, KC_ESC, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT + ), + [1] = LAYOUT_60_ansi_split_bs_rshift_space( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14, + KC_NO, KC_WH_U, KC_UP, KC_WH_D, KC_BSPC,KC_HOME,KC_CALC,KC_NO, KC_INS, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_DEL, + KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT,KC_DEL, KC_END, KC_PGDN,KC_NO, KC_NO, KC_NO, KC_HOME, KC_PGUP, KC_NO, KC_ENT, + KC_LSFT, KC_NO, KC_NO, KC_APP, BL_STEP,KC_NO, KC_NO, KC_VOLD,KC_VOLU,KC_MUTE, KC_END, KC_PGDN, KC_RSFT, KC_PGUP, KC_INS, + KC_LCTL, KC_LGUI, KC_LALT, KC_LSFT, KC_SPC, KC_ESC, KC_RGUI, MO(1), KC_HOME, KC_PGDOWN,KC_END + ) +}; diff --git a/keyboards/xiudi/xd60/keymaps/ansi_split_bs_rshift_space/readme.md b/keyboards/xiudi/xd60/keymaps/ansi_split_bs_rshift_space/readme.md new file mode 100644 index 000000000000..56f384f43661 --- /dev/null +++ b/keyboards/xiudi/xd60/keymaps/ansi_split_bs_rshift_space/readme.md @@ -0,0 +1,13 @@ +# Split Space Keymap for XIUDI's 60% XD60 PCB + +![Split Space Keymap for XD60](https://user-images.githubusercontent.com/39789796/140330345-2ccde096-dad5-49d0-b8a7-b231180018e6.png) + + +* Keyboard Maintainer: [mizuho1998](https://github.com/mizuho1998) +* Hardware Supported: xd60 PCB rev3 + +Make example for this keyboard (after setting up your build environment): + + make xiudi/xd60/rev3:ansi_split_bs_rshift_space + +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/xiudi/xd60/keymaps/birkir/keymap.c b/keyboards/xiudi/xd60/keymaps/birkir/keymap.c new file mode 100644 index 000000000000..fe7cd6066246 --- /dev/null +++ b/keyboards/xiudi/xd60/keymaps/birkir/keymap.c @@ -0,0 +1,66 @@ +#include QMK_KEYBOARD_H +#include "action_layer.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + // 0: Base Layer + 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_BSPC, KC_GRV, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \ + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT, \ + KC_LSFT, KC_SLSH, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_NO, KC_RSFT, KC_UP, TG(2), \ + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT + ), + + // 1: Function Layer + LAYOUT_all( + KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, BL_DEC, BL_INC, KC_F13, KC_F14, \ + KC_NO, KC_WH_U, KC_UP, KC_WH_D, KC_BSPC,KC_HOME,KC_CALC,KC_NO, KC_INS, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_DEL, \ + KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT,KC_DEL, KC_END, KC_PGDN,KC_NO, KC_NO, KC_NO, KC_HOME, KC_PGUP, KC_NO, KC_ENT, \ + KC_LSFT, KC_NO, KC_NO, KC_APP, BL_STEP,KC_NO, KC_NO, KC_VOLD,KC_VOLU,KC_MUTE, KC_END, KC_PGDN, KC_RSFT, KC_PGUP, TG(2), \ + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, MO(1), KC_HOME, KC_PGDOWN,KC_END + ), + + // 2: Cool Layer + LAYOUT_all( + RESET, BL_DEC, BL_INC, BL_ON, BL_OFF, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, RGB_MODE_PLAIN, KC_TRNS, \ + KC_NO, KC_WH_U, KC_UP, KC_WH_D, KC_BSPC,KC_HOME,KC_CALC,KC_NO, KC_INS, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_DEL, \ + KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT,KC_DEL, KC_END, KC_PGDN,KC_NO, KC_NO, KC_NO, KC_HOME, KC_PGUP, KC_NO, KC_ENT, \ + KC_LSFT, KC_NO, KC_NO, KC_APP, BL_STEP,KC_NO, KC_NO, KC_VOLD,KC_VOLU,KC_MUTE, KC_END, KC_PGDN, KC_RSFT, KC_PGUP, TG(2), \ + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, MO(1), KC_HOME, KC_PGDOWN,KC_END + ) +}; + +bool edit = false; +uint32_t mode; +uint16_t hue; +uint8_t sat; +uint8_t val; + +layer_state_t layer_state_set_user(layer_state_t state) { + + if (state == 0 && edit == true) { + mode = rgblight_get_mode(); + hue = rgblight_get_hue(); + sat = rgblight_get_sat(); + val = rgblight_get_val(); + edit = false; + } + + switch (biton32(state)) { + case 1: + rgblight_mode(1); + rgblight_setrgb(0xD3, 0x7F, 0xED); + break; + case 2: + rgblight_mode(1); + rgblight_setrgb(0xFF, 0x00, 0x00); + edit = true; + break; + default: + rgblight_mode(mode); + rgblight_sethsv(hue, sat, val); + break; + } + return state; +} diff --git a/keyboards/xiudi/xd60/keymaps/birkir/readme.md b/keyboards/xiudi/xd60/keymaps/birkir/readme.md new file mode 100644 index 000000000000..47a1523f6c55 --- /dev/null +++ b/keyboards/xiudi/xd60/keymaps/birkir/readme.md @@ -0,0 +1,45 @@ +# Birkir's Keymap for XIUDI's 60% XD60 PCB + +Custom layout with some custom layers. Mac friendly. + +## Layout +![Birkir's Layout](https://i.imgur.com/I69AYG1.png) + +### Layer 0 +Base layer as shown on layout above + +### Layer 1 +Active while pressing and holding `MENU` + +RGB is purple while active + +- `ESC` is `~` + +### Layer 2 +Toggled on and off with `FN` + +RGB is red while active + +RGB settings are persisted for layer 0 when done. + + - `1` Backlight DEC + - `2` Backlight INC + - `3` Backlight OFF + - `4` Backlight ON + - `5` RGB Toggle + - `6` RGB Mode + - `7` RGB Hue DEC (-) + - `8` RGB Hue INC (+) + - `9` RGB Saturation DEC (-) + - `0` RGB Saturation INC (+) + - `-/_` RGB Brightness DEC (-) + - `+/=` RGB Brightness INC (+) + - `BACKSPACE` RGB Mode set to PLAIN + +## TODO + +- Mac shortcuts on Layer 1 +- More dynamic keyboard configuration on Layer 2 + +## Build +To build the default keymap, simply run `make xiudi/xd60:birkir`. diff --git a/keyboards/xd60/keymaps/cheese/README.md b/keyboards/xiudi/xd60/keymaps/cheese/README.md similarity index 100% rename from keyboards/xd60/keymaps/cheese/README.md rename to keyboards/xiudi/xd60/keymaps/cheese/README.md diff --git a/keyboards/xd60/keymaps/cheese/keymap.c b/keyboards/xiudi/xd60/keymaps/cheese/keymap.c similarity index 100% rename from keyboards/xd60/keymaps/cheese/keymap.c rename to keyboards/xiudi/xd60/keymaps/cheese/keymap.c diff --git a/keyboards/xd60/keymaps/crd_ansi/README.md b/keyboards/xiudi/xd60/keymaps/crd_ansi/README.md similarity index 100% rename from keyboards/xd60/keymaps/crd_ansi/README.md rename to keyboards/xiudi/xd60/keymaps/crd_ansi/README.md diff --git a/keyboards/xd60/keymaps/crd_ansi/keymap.c b/keyboards/xiudi/xd60/keymaps/crd_ansi/keymap.c similarity index 100% rename from keyboards/xd60/keymaps/crd_ansi/keymap.c rename to keyboards/xiudi/xd60/keymaps/crd_ansi/keymap.c diff --git a/keyboards/xiudi/xd60/keymaps/default/keymap.c b/keyboards/xiudi/xd60/keymaps/default/keymap.c new file mode 100644 index 000000000000..ce2a592e3685 --- /dev/null +++ b/keyboards/xiudi/xd60/keymaps/default/keymap.c @@ -0,0 +1,21 @@ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + // 0: Base Layer + 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_BSPC, KC_GRV, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \ + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT, \ + KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, \ + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT), + + // 1: Function Layer + LAYOUT_all( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14, \ + KC_NO, KC_WH_U, KC_UP, KC_WH_D, KC_BSPC,KC_HOME,KC_CALC,KC_NO, KC_INS, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_DEL, \ + KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT,KC_DEL, KC_END, KC_PGDN,KC_NO, KC_NO, KC_NO, KC_HOME, KC_PGUP, KC_NO, KC_ENT, \ + KC_LSFT, KC_NO, KC_NO, KC_APP, BL_STEP,KC_NO, KC_NO, KC_VOLD,KC_VOLU,KC_MUTE, KC_END, KC_PGDN, KC_RSFT, KC_PGUP, KC_INS, \ + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, MO(1), KC_HOME, KC_PGDOWN,KC_END), + +}; diff --git a/keyboards/xiudi/xd60/keymaps/default/readme.md b/keyboards/xiudi/xd60/keymaps/default/readme.md new file mode 100644 index 000000000000..517dfef6335f --- /dev/null +++ b/keyboards/xiudi/xd60/keymaps/default/readme.md @@ -0,0 +1,13 @@ +# Default Keymap for XIUDI's 60% XD60 PCB + +![Default Keymap for XD60](https://img.alicdn.com/imgextra/i1/1713761720/TB2K0gTalPxQeBjy1XcXXXHzVXa_!!1713761720.png) + +## Additional Notes +Default Keymap for XD60 as indicated on the original sale page. + +## Build + +To build the default keymap, simply run: + + make xiudi/xd60/rev2:default # XD60 rev2 + make xiudi/xd60/rev3:default # XD60 rev3 diff --git a/keyboards/xd60/keymaps/edulpn/keymap.c b/keyboards/xiudi/xd60/keymaps/edulpn/keymap.c similarity index 100% rename from keyboards/xd60/keymaps/edulpn/keymap.c rename to keyboards/xiudi/xd60/keymaps/edulpn/keymap.c diff --git a/keyboards/xiudi/xd60/keymaps/edulpn/readme.md b/keyboards/xiudi/xd60/keymaps/edulpn/readme.md new file mode 100644 index 000000000000..ba37eb6d7e15 --- /dev/null +++ b/keyboards/xiudi/xd60/keymaps/edulpn/readme.md @@ -0,0 +1,9 @@ +# Edulpn Keymap for the XD60 PCB + +## Additional Notes +60% Keymap for XD60 with GH60 ANSI layout (based on Supercoffe's keymap) + customized Fn layer. + +![Edulpn Keymap for the XD60 PCB](https://i.imgur.com/PoL5qcr.png) + +## Build +To build the default keymap, simply run `make xiudi/xd60:edulpn`. diff --git a/keyboards/xd60/keymaps/edulpn64/keymap.c b/keyboards/xiudi/xd60/keymaps/edulpn64/keymap.c similarity index 100% rename from keyboards/xd60/keymaps/edulpn64/keymap.c rename to keyboards/xiudi/xd60/keymaps/edulpn64/keymap.c diff --git a/keyboards/xiudi/xd60/keymaps/edulpn64/readme.md b/keyboards/xiudi/xd60/keymaps/edulpn64/readme.md new file mode 100644 index 000000000000..0fd6e827524e --- /dev/null +++ b/keyboards/xiudi/xd60/keymaps/edulpn64/readme.md @@ -0,0 +1,9 @@ +# Edulpn64 Keymap for XIUDI's 60% XD60 PCB + +![Edulpn64 Keymap for XD60](https://dl2.pushbulletusercontent.com/K6bdlBlP5ix7jdMAr8QKes4johmpUfPI/image.png) + +## Additional Notes +This keymap uses the Default XD60 base layer, but follows the GK64 function layer (one of my XD60 boards use GK64 keycaps). + +## Build +To build the default keymap, simply run `make xiudi/xd60:edulpn64`. diff --git a/keyboards/xiudi/xd60/keymaps/finnish/keymap.c b/keyboards/xiudi/xd60/keymaps/finnish/keymap.c new file mode 100644 index 000000000000..84a4a63afee5 --- /dev/null +++ b/keyboards/xiudi/xd60/keymaps/finnish/keymap.c @@ -0,0 +1,25 @@ +// Copyright 2021 Minna Pallari (@pallarim) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H +#include "keymap_finnish.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + // 0: Base Layer + LAYOUT_all( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, FI_PLUS, FI_ACUT, MO(1), KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, FI_ARNG, FI_DIAE, KC_NO, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, FI_ODIA, FI_ADIA, FI_QUOT, KC_ENT, + KC_LSFT, FI_LABK, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, FI_MINS, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT), + + // 1: Function Layer + LAYOUT_all( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14, + KC_NO, KC_WH_U, KC_UP, KC_WH_D, KC_BSPC,KC_HOME,KC_CALC,KC_NO, KC_INS, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_DEL, + KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT,KC_DEL, KC_END, KC_PGDN,KC_NO, KC_NO, KC_NO, KC_HOME, KC_PGUP, KC_NO, KC_ENT, + KC_LSFT, KC_NO, KC_NO, KC_APP, BL_STEP,KC_NO, KC_NO, KC_VOLD,KC_VOLU,KC_MUTE, KC_END, KC_PGDN, KC_RSFT, KC_PGUP, KC_INS, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, MO(1), KC_HOME, KC_PGDOWN,KC_END), + +}; diff --git a/keyboards/xiudi/xd60/keymaps/finnish/readme.md b/keyboards/xiudi/xd60/keymaps/finnish/readme.md new file mode 100644 index 000000000000..2e5c96f770df --- /dev/null +++ b/keyboards/xiudi/xd60/keymaps/finnish/readme.md @@ -0,0 +1,20 @@ +# Finnish/Swedish iso Keymap for XIUDI's XD60 PCB + +FI/SV iso Keymap for XD60. + +## Keymap + +### Base Layer + +![Base layer](https://i.imgur.com/TrChS0N.png) + +### Function Layer + +![Default Keymap layer 2](https://img.alicdn.com/imgextra/i1/1713761720/TB2K0gTalPxQeBjy1XcXXXHzVXa_!!1713761720.png) + +## Build + +To build the default keymap, simply run: + + make xiudi/xd60/rev2:finnish # XD60 rev2 + make xiudi/xd60/rev3:finnish # XD60 rev3 diff --git a/keyboards/xd60/keymaps/shura30/config.h b/keyboards/xiudi/xd60/keymaps/fvolpe83/config.h similarity index 100% rename from keyboards/xd60/keymaps/shura30/config.h rename to keyboards/xiudi/xd60/keymaps/fvolpe83/config.h diff --git a/keyboards/xiudi/xd60/keymaps/fvolpe83/keymap.c b/keyboards/xiudi/xd60/keymaps/fvolpe83/keymap.c new file mode 100755 index 000000000000..0a18678dcc6c --- /dev/null +++ b/keyboards/xiudi/xd60/keymaps/fvolpe83/keymap.c @@ -0,0 +1,78 @@ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + 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_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_NO, + MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_RSFT, KC_PSCR, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_APP, KC_NO, TT(1), KC_RCTL), + + [1] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_DEL, + KC_TAB, KC_INS, KC_DEL, KC_UP, KC_PGUP, KC_PGDN, KC_NO, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, KC_NO, KC_NO, KC_NO, KC_NO, + KC_TRNS, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_NO, KC_NO, KC_NO, KC_ENT, + KC_LSFT, KC_PSCR, KC_NO, KC_HOME, KC_END, KC_NO, KC_NO, KC_NO, KC_MS_BTN3, KC_NO, KC_NO, KC_NO, KC_NO, KC_RSFT, MO(2), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_APP, KC_NO, KC_TRNS, KC_RCTL), + + [2] = LAYOUT_all( + 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, RESET, + KC_NO, BL_TOGG, BL_STEP, BL_ON, BL_OFF, BL_INC, BL_DEC, BL_BRTG, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, RGB_TOG, RGB_MOD, RGB_RMOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, KC_NO, KC_NO, + KC_NO, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, RGB_M_K, RGB_M_X, RGB_M_G, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO) +}; + +const rgblight_segment_t PROGMEM my_0_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 6, HSV_CYAN}, + {6, 6, HSV_BLUE} +); + +const rgblight_segment_t PROGMEM my_1_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {1, 4, HSV_GREEN}, + {7, 4, HSV_GREEN} +); +const rgblight_segment_t PROGMEM my_2_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {1, 4, HSV_PURPLE}, + {7, 4, HSV_PURPLE} +); + +const rgblight_segment_t PROGMEM my_caps_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 1, HSV_RED}, + {5, 1, HSV_RED}, + {6, 1, HSV_RED}, + {11, 1, HSV_RED} +); + +// Now define the array of layers. Later layers take precedence +const rgblight_segment_t* const PROGMEM my_layers[] = RGBLIGHT_LAYERS_LIST( + my_0_layer, + my_1_layer, + my_2_layer, + my_caps_layer +); + +void keyboard_post_init_user(void) { + // Enable the LED layers + rgblight_layers = my_layers; + layer_state_set_user(layer_state); +}; + +layer_state_t layer_state_set_user(layer_state_t state) { + rgblight_set_layer_state(0, layer_state_cmp(state, 0)); + rgblight_set_layer_state(1, layer_state_cmp(state, 1)); + rgblight_set_layer_state(2, layer_state_cmp(state, 2)); + return state; +}; + + bool led_update_user(led_t led_state) { + rgblight_set_layer_state(3, led_state.caps_lock); + return true; +}; + +/* // EEPROM Reset Function +void eeconfig_init_user(void) { + backlight_enable(); // Enable backlight by default + rgblight_enable(); // Enable RGB by default + rgblight_sethsv(HSV_BLUE); // Set it to orange by default +}; */ diff --git a/keyboards/xiudi/xd60/keymaps/fvolpe83/readme.md b/keyboards/xiudi/xd60/keymaps/fvolpe83/readme.md new file mode 100755 index 000000000000..63e507935d65 --- /dev/null +++ b/keyboards/xiudi/xd60/keymaps/fvolpe83/readme.md @@ -0,0 +1,33 @@ +# fvolpe83's keymap for XIUDI's 60% XD60 PCB rev3 + +3 layers in ISO: + +- 0 for ISO querty with split backspace and split right shift +- 1 for arrows and mouse +- 2 for backlight + + +![Keyboard Layout (Physical appearence)](https://i.imgur.com/Zgc4Fv6.jpg "physical layout") + + +## Additional Notes + +RGB lighting enabled and goes to sleep with the host, each layer has its own color, caps layer is still there (can be enabled via software) but acts as FN + +- 0 = cyan/blue +- caps = red +- 1 = green +- 2 = purple + +tapping toggle has been defined to 3 in the separate config.h + +via has been enabled + +## Build + +To build the keymap, simply run: + + make xiudi/xd60/rev3:fvolpe83 # XD60 rev3 + + +![Keyboard Layout (Physical appearence)](https://i.imgur.com/CSRPjbX.png "physical layout") diff --git a/keyboards/xiudi/xd60/keymaps/fvolpe83/rules.mk b/keyboards/xiudi/xd60/keymaps/fvolpe83/rules.mk new file mode 100755 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/xiudi/xd60/keymaps/fvolpe83/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/xiudi/xd60/keymaps/iso/keymap.c b/keyboards/xiudi/xd60/keymaps/iso/keymap.c new file mode 100644 index 000000000000..481b62155f60 --- /dev/null +++ b/keyboards/xiudi/xd60/keymaps/iso/keymap.c @@ -0,0 +1,28 @@ +#include QMK_KEYBOARD_H + +enum layer_names { + _BL, + _FL, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + //,: Base Layer + [_BL] = LAYOUT_60_iso( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL + ), + + //,: Function Layer + [_FL] = LAYOUT_60_iso( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + XXXXXXX, KC_VOLD, KC_MUTE, KC_VOLU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_TOGG, BL_DEC, BL_INC, + XXXXXXX, KC_MPLY, KC_MSTP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_ENT, + KC_LSFT, RGB_TOG, RGB_MOD, KC_CUT, KC_COPY, KC_PSTE, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL + ) + +}; diff --git a/keyboards/xiudi/xd60/keymaps/iso/readme.md b/keyboards/xiudi/xd60/keymaps/iso/readme.md new file mode 100644 index 000000000000..40f24c5c40d9 --- /dev/null +++ b/keyboards/xiudi/xd60/keymaps/iso/readme.md @@ -0,0 +1,20 @@ +# iso Keymap for XIUDI's 60% XD60 PCB + +iso Keymap for XD60. + +## Keymap + +### Base Layer + +![Layer 0](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/xd60/keymaps/iso/layer0.png) + +### Function Layer + +![Layer 1](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/xd60/keymaps/iso/layer1.png) + +## Build + +To build the default keymap, simply run: + + make xiudi/xd60/rev2:iso # XD60 rev2 + make xiudi/xd60/rev3:iso # XD60 rev3 diff --git a/keyboards/xd60/keymaps/kmontag42/keymap.c b/keyboards/xiudi/xd60/keymaps/kmontag42/keymap.c similarity index 100% rename from keyboards/xd60/keymaps/kmontag42/keymap.c rename to keyboards/xiudi/xd60/keymaps/kmontag42/keymap.c diff --git a/keyboards/xiudi/xd60/keymaps/kmontag42/readme.md b/keyboards/xiudi/xd60/keymaps/kmontag42/readme.md new file mode 100644 index 000000000000..fcbf2099c8b0 --- /dev/null +++ b/keyboards/xiudi/xd60/keymaps/kmontag42/readme.md @@ -0,0 +1,18 @@ +# KMontag42's XD60/XD64 Keymap and Layout + +[![Built with Spacemacs](https://cdn.rawgit.com/syl20bnr/spacemacs/442d025779da2f62fc86c2082703697714db6514/assets/spacemacs-badge.svg)](http://spacemacs.org) + +## Additional Notes +This layout is WIP for me as I use my shiny new keyboard more and more. I will work to keep this updated. + +## Notable features +* Arrows only on the bottom row +** i prefer vim style movement, so this works well for me +* Layer based RGB lighting +** i use rgb lights to determine what layer is currently active +* Maximum key usage +** unless someone tells me otherwise, I believe this is the maximum number of keys the board can support without PCB modding +* I use emacs, which could account for some of the oddities in my layout and macros + +## Build +To build the default keymap, simply run `make xiudi/xd60:kmontag42`. diff --git a/keyboards/xd60/keymaps/kmontag42/rules.mk b/keyboards/xiudi/xd60/keymaps/kmontag42/rules.mk similarity index 100% rename from keyboards/xd60/keymaps/kmontag42/rules.mk rename to keyboards/xiudi/xd60/keymaps/kmontag42/rules.mk diff --git a/keyboards/xd60/keymaps/krusli/keymap.c b/keyboards/xiudi/xd60/keymaps/krusli/keymap.c similarity index 100% rename from keyboards/xd60/keymaps/krusli/keymap.c rename to keyboards/xiudi/xd60/keymaps/krusli/keymap.c diff --git a/keyboards/xiudi/xd60/keymaps/krusli/readme.md b/keyboards/xiudi/xd60/keymaps/krusli/readme.md new file mode 100644 index 000000000000..c6d6834e6a43 --- /dev/null +++ b/keyboards/xiudi/xd60/keymaps/krusli/readme.md @@ -0,0 +1,7 @@ +# krusli's Keymap for XIUDI's 60% XD60 PCB + +## Additional Notes +Keymap for the XD60 (ANSI) with 2.25u left shift, split right shift. HHKB-like function layer. + +## Build +To build this keymap, simply run `make xiudi/xd60:krusli` on the top-level directory for QMK. diff --git a/keyboards/xd60/keymaps/melka/.gitignore b/keyboards/xiudi/xd60/keymaps/melka/.gitignore similarity index 100% rename from keyboards/xd60/keymaps/melka/.gitignore rename to keyboards/xiudi/xd60/keymaps/melka/.gitignore diff --git a/keyboards/xd60/keymaps/melka/config.h b/keyboards/xiudi/xd60/keymaps/melka/config.h similarity index 100% rename from keyboards/xd60/keymaps/melka/config.h rename to keyboards/xiudi/xd60/keymaps/melka/config.h diff --git a/keyboards/xd60/keymaps/melka/keymap.c b/keyboards/xiudi/xd60/keymaps/melka/keymap.c similarity index 100% rename from keyboards/xd60/keymaps/melka/keymap.c rename to keyboards/xiudi/xd60/keymaps/melka/keymap.c diff --git a/keyboards/xd60/keymaps/melka/passwd_template.h b/keyboards/xiudi/xd60/keymaps/melka/passwd_template.h similarity index 100% rename from keyboards/xd60/keymaps/melka/passwd_template.h rename to keyboards/xiudi/xd60/keymaps/melka/passwd_template.h diff --git a/keyboards/xiudi/xd60/keymaps/melka/readme.md b/keyboards/xiudi/xd60/keymaps/melka/readme.md new file mode 100644 index 000000000000..23e7ab0b092c --- /dev/null +++ b/keyboards/xiudi/xd60/keymaps/melka/readme.md @@ -0,0 +1,21 @@ +# melka's keymap for XIUDI's 60% XD60 rev3 PCB + +## Additional Notes +Custom Keymap for XD60 rev3. French Mac layout. + +## Security Note +This keymap includes macros for entering passwords. + +While it is possible to use macros to send passwords, credit card numbers, +and other sensitive information it is a supremely bad idea to do so. Anyone who gets a hold +of your keyboard will be able to access that information by opening a text editor. + +Use this functionnality at your own risk. + +To define your password, rename passwd_template.h file to passwd.h and edit the defines inside. + +## Build + +To build this keymap, simply run: + + make xiudi/xd60/rev3:melka # XD60 rev3 diff --git a/keyboards/xiudi/xd60/keymaps/petesmom/README.md b/keyboards/xiudi/xd60/keymaps/petesmom/README.md new file mode 100644 index 000000000000..075928205c4e --- /dev/null +++ b/keyboards/xiudi/xd60/keymaps/petesmom/README.md @@ -0,0 +1,26 @@ +# pete's mom Layout + +Customized xd60 keymap based on yuuki's but a step sideways with Mac support. For Pete on his 40th + +## Programming Instructions + +Change the layout in `keymap.c` then run `make xiudi/xd60:petesmom`. The compiled file will be located in `.build/xiudi_xd60_petesmom.hex` relative to the project root. To flash it onto your keyboard, use whatever program works on your OS. I personally use `dfu-programmer`, and run: + +* `sudo dfu-programmer atmega32u4 erase` +* `sudo dfu-programmer atmega32u4 flash .build/xiudi_xd60-petesmom.hex` +* `sudo dfu-programmer atmega32u4 start` + +## Layout + +See `keymap.c` for the details, but here are the important features: + +| Key | Function | +| -------------------------- | ---------------------------------- | +| ESC | ESC when pressed alone but acts as ~ when pressed with Shift or LGUI down | +| FN + ESC | Grave | +| Right Shift | When tapped generates / | +| FN + HJKL | Arrow Keys | +| FN + C | ^ | +| FN + V | & | +| FN + , . RShift | Mac Vol - + Mute | +| FN + P [ ] \ | Mac Play/Pause, Prev Track, Next Track, Stop | diff --git a/keyboards/xd60/keymaps/petesmom/keymap.c b/keyboards/xiudi/xd60/keymaps/petesmom/keymap.c similarity index 100% rename from keyboards/xd60/keymaps/petesmom/keymap.c rename to keyboards/xiudi/xd60/keymaps/petesmom/keymap.c diff --git a/keyboards/xd60/keymaps/rooski/instructions.txt b/keyboards/xiudi/xd60/keymaps/rooski/instructions.txt similarity index 100% rename from keyboards/xd60/keymaps/rooski/instructions.txt rename to keyboards/xiudi/xd60/keymaps/rooski/instructions.txt diff --git a/keyboards/xd60/keymaps/rooski/keymap.c b/keyboards/xiudi/xd60/keymaps/rooski/keymap.c similarity index 100% rename from keyboards/xd60/keymaps/rooski/keymap.c rename to keyboards/xiudi/xd60/keymaps/rooski/keymap.c diff --git a/keyboards/xd60/keymaps/semicolonsnet/keymap.c b/keyboards/xiudi/xd60/keymaps/semicolonsnet/keymap.c similarity index 100% rename from keyboards/xd60/keymaps/semicolonsnet/keymap.c rename to keyboards/xiudi/xd60/keymaps/semicolonsnet/keymap.c diff --git a/keyboards/xiudi/xd60/keymaps/semicolonsnet/readme.md b/keyboards/xiudi/xd60/keymaps/semicolonsnet/readme.md new file mode 100644 index 000000000000..7e74f753ff45 --- /dev/null +++ b/keyboards/xiudi/xd60/keymaps/semicolonsnet/readme.md @@ -0,0 +1,13 @@ +# Semicolonsnet Keymap for XIUDI's 60% XD60 PCB + +![Semicolonsnet Keymap for XD60](https://i.imgur.com/VZygOqK.png) + +## Additional Notes +Custom Keymap for XD60 - uses a META key and lots of shortcut keys that are later software controlled + +## Build + +To build the default keymap, simply run: + + make xiudi/xd60/rev2:default # XD60 rev2 + make xiudi/xd60/rev3:default # XD60 rev3 \ No newline at end of file diff --git a/keyboards/xd60/keymaps/split_bksp_arrows/keymap.c b/keyboards/xiudi/xd60/keymaps/split_bksp_arrows/keymap.c similarity index 100% rename from keyboards/xd60/keymaps/split_bksp_arrows/keymap.c rename to keyboards/xiudi/xd60/keymaps/split_bksp_arrows/keymap.c diff --git a/keyboards/xd60/keymaps/split_bksp_arrows/readme.md b/keyboards/xiudi/xd60/keymaps/split_bksp_arrows/readme.md similarity index 100% rename from keyboards/xd60/keymaps/split_bksp_arrows/readme.md rename to keyboards/xiudi/xd60/keymaps/split_bksp_arrows/readme.md diff --git a/keyboards/xd60/keymaps/stanleylai/keymap.c b/keyboards/xiudi/xd60/keymaps/stanleylai/keymap.c similarity index 100% rename from keyboards/xd60/keymaps/stanleylai/keymap.c rename to keyboards/xiudi/xd60/keymaps/stanleylai/keymap.c diff --git a/keyboards/xd60/keymaps/styr/keymap.c b/keyboards/xiudi/xd60/keymaps/styr/keymap.c similarity index 100% rename from keyboards/xd60/keymaps/styr/keymap.c rename to keyboards/xiudi/xd60/keymaps/styr/keymap.c diff --git a/keyboards/xiudi/xd60/keymaps/styr/readme.md b/keyboards/xiudi/xd60/keymaps/styr/readme.md new file mode 100644 index 000000000000..1c5d160cfa51 --- /dev/null +++ b/keyboards/xiudi/xd60/keymaps/styr/readme.md @@ -0,0 +1,7 @@ +# Keyboard Layout by Styr + +## Additional Notes +Default Keymap for XD60 as indicated on the original sale page. + +## Build +To build the default keymap, simply run `make xiudi/xd60/rev3:styr`. diff --git a/keyboards/xd60/keymaps/supercoffee/keymap.c b/keyboards/xiudi/xd60/keymaps/supercoffee/keymap.c similarity index 100% rename from keyboards/xd60/keymaps/supercoffee/keymap.c rename to keyboards/xiudi/xd60/keymaps/supercoffee/keymap.c diff --git a/keyboards/xiudi/xd60/keymaps/supercoffee/readme.md b/keyboards/xiudi/xd60/keymaps/supercoffee/readme.md new file mode 100644 index 000000000000..111f34e72027 --- /dev/null +++ b/keyboards/xiudi/xd60/keymaps/supercoffee/readme.md @@ -0,0 +1,9 @@ +# Supercoffee Keymap for DeskCandy 60% XD60 PCB + +![Supercoffee Keymap for XD60](https://i.imgur.com/SPg4wXw.jpg) + +## Additional Notes +60% Keymap for XD60 with GH60 ANSI layout. Arrow keys mapped to WASD in function layer. + +## Build +To build the default keymap, simply run `make xiudi/xd60:supercoffee`. diff --git a/keyboards/xd60/keymaps/suryanisaac/README.md b/keyboards/xiudi/xd60/keymaps/suryanisaac/README.md similarity index 100% rename from keyboards/xd60/keymaps/suryanisaac/README.md rename to keyboards/xiudi/xd60/keymaps/suryanisaac/README.md diff --git a/keyboards/xd60/keymaps/suryanisaac/keymap.c b/keyboards/xiudi/xd60/keymaps/suryanisaac/keymap.c similarity index 100% rename from keyboards/xd60/keymaps/suryanisaac/keymap.c rename to keyboards/xiudi/xd60/keymaps/suryanisaac/keymap.c diff --git a/keyboards/xd60/keymaps/via/keymap.c b/keyboards/xiudi/xd60/keymaps/via/keymap.c similarity index 100% rename from keyboards/xd60/keymaps/via/keymap.c rename to keyboards/xiudi/xd60/keymaps/via/keymap.c diff --git a/keyboards/xd60/keymaps/via/readme.md b/keyboards/xiudi/xd60/keymaps/via/readme.md similarity index 100% rename from keyboards/xd60/keymaps/via/readme.md rename to keyboards/xiudi/xd60/keymaps/via/readme.md diff --git a/keyboards/xiudi/xd60/keymaps/via/rules.mk b/keyboards/xiudi/xd60/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/xiudi/xd60/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/xiudi/xd60/keymaps/yuuki/README.md b/keyboards/xiudi/xd60/keymaps/yuuki/README.md new file mode 100644 index 000000000000..ba0de049ee2a --- /dev/null +++ b/keyboards/xiudi/xd60/keymaps/yuuki/README.md @@ -0,0 +1,31 @@ +# yuuki's Layout + +Customized xd60 keymap with inspirations from HHKB and the layout I used on my Vortex Core (a 40% keyboard). + +## Programming Instructions + +Change the layout in `keymap.c` then run `make xiudi/xd60:yuuki`. The compiled file will be located in `.build/xiudi_xd60_yuuki.hex` relative to the project root. To flash it onto your keyboard, use whatever program works on your OS. I personally use `dfu-programmer`, and run: + +* reset keyboard by pressing the reset button on the back of the PCB +* `sudo dfu-programmer atmega32u4 erase` +* `sudo dfu-programmer atmega32u4 flash .build/xiudi_xd60_yuuki.hex` +* `sudo dfu-programmer atmega32u4 start` + +## Layout + +![Keyboard Layout](https://github.com/cideM/cidem.github.io/blob/master/keyboard-layout.png "Layout") + +Upper row is default layer, bottom row is function layer. I Didn't include the symbols, such as @,# or $, as their placement is just as you'd expect it. + +## Summary of Changes + +| Key | Function | +| -------------------------- | ---------------------------------- | +| Capslock | Forward Slash when tapped and Left Control when held | +| Left Control | Temporarily activate function layer | +| FN + ESC | Grave | +| Space Cadet Shift | Left Shift tapped writes ( and Right Shift tapped writes ) | +| FN + HJKL | Arrow Keys | +| Rightmost key in second row from bottom | Temporarily activate function layer | +| FN + C | ^ | +| FN + V | & (both for convenience as I use these keys a lot with VIM navigation and I find them hard reach) | diff --git a/keyboards/xd60/keymaps/yuuki/keymap.c b/keyboards/xiudi/xd60/keymaps/yuuki/keymap.c similarity index 100% rename from keyboards/xd60/keymaps/yuuki/keymap.c rename to keyboards/xiudi/xd60/keymaps/yuuki/keymap.c diff --git a/keyboards/xiudi/xd60/readme.md b/keyboards/xiudi/xd60/readme.md new file mode 100644 index 000000000000..db03613b8ddd --- /dev/null +++ b/keyboards/xiudi/xd60/readme.md @@ -0,0 +1,17 @@ +# XD60 + +Compact 60% with arrows. + +![Top View of a pair of XD60 Keyboard](https://i.imgur.com/3Jq2743.jpg) + +* Keyboard Maintainer: QMK Community +* Hardware Supported: XD60 PCB rev2 & rev3 +* Hardware Availability: [Drop.com](https://www.drop.com/buy/xd60-xd64-custom-mechanical-keyboard-kit?mode=guest_open), [KPRepublic on AliExpress](https://www.aliexpress.com/item/32814945677.html) +* Schematic Availability: Public Domain [on EasyEDA](https://easyeda.com/langzisanshao/xd60) + +Make example for this keyboard (after setting up your build environment): + + make xiudi/xd60/rev2:default # rev2 + make xiudi/xd60/rev3:default # rev3 + +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/xiudi/xd60/rev2/.noci b/keyboards/xiudi/xd60/rev2/.noci new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/keyboards/xd60/rev2/config.h b/keyboards/xiudi/xd60/rev2/config.h similarity index 100% rename from keyboards/xd60/rev2/config.h rename to keyboards/xiudi/xd60/rev2/config.h diff --git a/keyboards/xiudi/xd60/rev2/rules.mk b/keyboards/xiudi/xd60/rev2/rules.mk new file mode 100644 index 000000000000..485b5127cac9 --- /dev/null +++ b/keyboards/xiudi/xd60/rev2/rules.mk @@ -0,0 +1,18 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +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 = yes # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output +RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. + +LAYOUTS = 60_ansi 60_ansi_split_bs_rshift 60_iso 60_iso_split_bs_rshift diff --git a/keyboards/xd60/rev3/config.h b/keyboards/xiudi/xd60/rev3/config.h similarity index 100% rename from keyboards/xd60/rev3/config.h rename to keyboards/xiudi/xd60/rev3/config.h diff --git a/keyboards/xiudi/xd60/rev3/rules.mk b/keyboards/xiudi/xd60/rev3/rules.mk new file mode 100644 index 000000000000..485b5127cac9 --- /dev/null +++ b/keyboards/xiudi/xd60/rev3/rules.mk @@ -0,0 +1,18 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +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 = yes # Enable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output +RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. + +LAYOUTS = 60_ansi 60_ansi_split_bs_rshift 60_iso 60_iso_split_bs_rshift diff --git a/keyboards/xd60/xd60.c b/keyboards/xiudi/xd60/xd60.c similarity index 100% rename from keyboards/xd60/xd60.c rename to keyboards/xiudi/xd60/xd60.c diff --git a/keyboards/xd60/xd60.h b/keyboards/xiudi/xd60/xd60.h similarity index 84% rename from keyboards/xd60/xd60.h rename to keyboards/xiudi/xd60/xd60.h index dc6a1080f9a2..cf698adcc137 100644 --- a/keyboards/xd60/xd60.h +++ b/keyboards/xiudi/xd60/xd60.h @@ -60,6 +60,20 @@ inline void xd60_bl_led_off(void) { DDRF &= ~(1<<5); PORTF &= ~(1<<5); } { K40, K41, K42, KC_NO, KC_NO, K45, KC_NO, KC_NO, KC_NO, K49, K4A, K4B, K4C, K4D } \ } +#define LAYOUT_60_ansi_split_bs_rshift_space( \ + 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, K46, K45, K44, 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, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D } \ +} + #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, \ diff --git a/keyboards/xd68/config.h b/keyboards/xiudi/xd68/config.h similarity index 100% rename from keyboards/xd68/config.h rename to keyboards/xiudi/xd68/config.h diff --git a/keyboards/xiudi/xd68/info.json b/keyboards/xiudi/xd68/info.json new file mode 100644 index 000000000000..276bd7294134 --- /dev/null +++ b/keyboards/xiudi/xd68/info.json @@ -0,0 +1,225 @@ +{ + "keyboard_name": "xd68", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_65_ansi": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1", "x":1, "y":0}, + {"label":"2", "x":2, "y":0}, + {"label":"3", "x":3, "y":0}, + {"label":"4", "x":4, "y":0}, + {"label":"5", "x":5, "y":0}, + {"label":"6", "x":6, "y":0}, + {"label":"7", "x":7, "y":0}, + {"label":"8", "x":8, "y":0}, + {"label":"9", "x":9, "y":0}, + {"label":"0", "x":10, "y":0}, + {"label":"-", "x":11, "y":0}, + {"label":"=", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + {"label":"Home", "x":15, "y":0}, + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"[", "x":11.5, "y":1}, + {"label":"]", "x":12.5, "y":1}, + {"label":"\\", "x":13.5, "y":1, "w":1.5}, + {"label":"Page Up", "x":15, "y":1}, + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";", "x":10.75, "y":2}, + {"label":"'", "x":11.75, "y":2}, + {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + {"label":"Page Down", "x":15, "y":2}, + {"label":"Shift", "x":0, "y":3, "w":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",", "x":9.25, "y":3}, + {"label":".", "x":10.25, "y":3}, + {"label":"/", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"Up", "x":14, "y":3}, + {"label":"End", "x":15, "y":3}, + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"GUI", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space", "x":3.75, "y":4, "w":6.25}, + {"label":"Menu", "x":10, "y":4}, + {"label":"Ctrl", "x":11, "y":4}, + {"label":"Fn", "x":12, "y":4}, + {"label":"Left", "x":13, "y":4}, + {"label":"Down", "x":14, "y":4}, + {"label":"Right", "x":15, "y":4} + ] + }, + "LAYOUT_65_ansi_split_bs": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1", "x":1, "y":0}, + {"label":"2", "x":2, "y":0}, + {"label":"3", "x":3, "y":0}, + {"label":"4", "x":4, "y":0}, + {"label":"5", "x":5, "y":0}, + {"label":"6", "x":6, "y":0}, + {"label":"7", "x":7, "y":0}, + {"label":"8", "x":8, "y":0}, + {"label":"9", "x":9, "y":0}, + {"label":"0", "x":10, "y":0}, + {"label":"-", "x":11, "y":0}, + {"label":"=", "x":12, "y":0}, + {"label":"Grave.", "x":13, "y":0}, + {"label":"Backspace", "x":14, "y":0}, + {"label":"Home", "x":15, "y":0}, + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"[", "x":11.5, "y":1}, + {"label":"]", "x":12.5, "y":1}, + {"label":"\\", "x":13.5, "y":1, "w":1.5}, + {"label":"Page Up", "x":15, "y":1}, + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";", "x":10.75, "y":2}, + {"label":"'", "x":11.75, "y":2}, + {"label":"Enter", "x":12.75, "y":2, "w":2.25}, + {"label":"Page Down", "x":15, "y":2}, + {"label":"Shift", "x":0, "y":3, "w":2.25}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",", "x":9.25, "y":3}, + {"label":".", "x":10.25, "y":3}, + {"label":"/", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"Up", "x":14, "y":3}, + {"label":"End", "x":15, "y":3}, + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"GUI", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space", "x":3.75, "y":4, "w":6.25}, + {"label":"Menu", "x":10, "y":4}, + {"label":"Ctrl", "x":11, "y":4}, + {"label":"Fn", "x":12, "y":4}, + {"label":"Left", "x":13, "y":4}, + {"label":"Down", "x":14, "y":4}, + {"label":"Right", "x":15, "y":4} + ] + }, + "LAYOUT_65_iso": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"1", "x":1, "y":0}, + {"label":"2", "x":2, "y":0}, + {"label":"3", "x":3, "y":0}, + {"label":"4", "x":4, "y":0}, + {"label":"5", "x":5, "y":0}, + {"label":"6", "x":6, "y":0}, + {"label":"7", "x":7, "y":0}, + {"label":"8", "x":8, "y":0}, + {"label":"9", "x":9, "y":0}, + {"label":"0", "x":10, "y":0}, + {"label":"-", "x":11, "y":0}, + {"label":"=", "x":12, "y":0}, + {"label":"Backspace", "x":13, "y":0, "w":2}, + {"label":"Home", "x":15, "y":0}, + {"label":"Tab", "x":0, "y":1, "w":1.5}, + {"label":"Q", "x":1.5, "y":1}, + {"label":"W", "x":2.5, "y":1}, + {"label":"E", "x":3.5, "y":1}, + {"label":"R", "x":4.5, "y":1}, + {"label":"T", "x":5.5, "y":1}, + {"label":"Y", "x":6.5, "y":1}, + {"label":"U", "x":7.5, "y":1}, + {"label":"I", "x":8.5, "y":1}, + {"label":"O", "x":9.5, "y":1}, + {"label":"P", "x":10.5, "y":1}, + {"label":"[", "x":11.5, "y":1}, + {"label":"]", "x":12.5, "y":1}, + {"label":"PgUp", "x":15, "y":1}, + {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"label":"A", "x":1.75, "y":2}, + {"label":"S", "x":2.75, "y":2}, + {"label":"D", "x":3.75, "y":2}, + {"label":"F", "x":4.75, "y":2}, + {"label":"G", "x":5.75, "y":2}, + {"label":"H", "x":6.75, "y":2}, + {"label":"J", "x":7.75, "y":2}, + {"label":"K", "x":8.75, "y":2}, + {"label":"L", "x":9.75, "y":2}, + {"label":";", "x":10.75, "y":2}, + {"label":"'", "x":11.75, "y":2}, + {"label":"#", "x":12.75, "y":2}, + {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, + {"label":"PgDn", "x":15, "y":2}, + {"label":"Shift", "x":0, "y":3, "w":1.25}, + {"label":"\\", "x":1.25, "y":3}, + {"label":"Z", "x":2.25, "y":3}, + {"label":"X", "x":3.25, "y":3}, + {"label":"C", "x":4.25, "y":3}, + {"label":"V", "x":5.25, "y":3}, + {"label":"B", "x":6.25, "y":3}, + {"label":"N", "x":7.25, "y":3}, + {"label":"M", "x":8.25, "y":3}, + {"label":",", "x":9.25, "y":3}, + {"label":".", "x":10.25, "y":3}, + {"label":"/", "x":11.25, "y":3}, + {"label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"label":"Up", "x":14, "y":3}, + {"label":"End", "x":15, "y":3}, + {"label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"label":"GUI", "x":1.25, "y":4, "w":1.25}, + {"label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"label":"Space", "x":3.75, "y":4, "w":6.25}, + {"label":"Menu", "x":10, "y":4}, + {"label":"Ctrl", "x":11, "y":4}, + {"label":"Fn", "x":12, "y":4}, + {"label":"Left", "x":13, "y":4}, + {"label":"Down", "x":14, "y":4}, + {"label":"Right", "x":15, "y":4} + ] + } + } +} diff --git a/keyboards/xd68/keymaps/default/keymap.c b/keyboards/xiudi/xd68/keymaps/default/keymap.c similarity index 100% rename from keyboards/xd68/keymaps/default/keymap.c rename to keyboards/xiudi/xd68/keymaps/default/keymap.c diff --git a/keyboards/xiudi/xd68/keymaps/default/readme.md b/keyboards/xiudi/xd68/keymaps/default/readme.md new file mode 100644 index 000000000000..7f5c5c39eaf9 --- /dev/null +++ b/keyboards/xiudi/xd68/keymaps/default/readme.md @@ -0,0 +1,5 @@ +# XD68 layout for Default ANSI + +``` +make xiudi/xd68:default +``` diff --git a/keyboards/xd68/keymaps/default_iso/keymap.c b/keyboards/xiudi/xd68/keymaps/default_iso/keymap.c similarity index 100% rename from keyboards/xd68/keymaps/default_iso/keymap.c rename to keyboards/xiudi/xd68/keymaps/default_iso/keymap.c diff --git a/keyboards/xiudi/xd68/keymaps/default_iso/readme.md b/keyboards/xiudi/xd68/keymaps/default_iso/readme.md new file mode 100644 index 000000000000..a91aff3992a1 --- /dev/null +++ b/keyboards/xiudi/xd68/keymaps/default_iso/readme.md @@ -0,0 +1,5 @@ +# XD68 layout for Default ISO + +``` +make xiudi/xd68:default_iso +``` diff --git a/keyboards/xd68/keymaps/via/keymap.c b/keyboards/xiudi/xd68/keymaps/via/keymap.c similarity index 100% rename from keyboards/xd68/keymaps/via/keymap.c rename to keyboards/xiudi/xd68/keymaps/via/keymap.c diff --git a/keyboards/xd68/keymaps/via/readme.md b/keyboards/xiudi/xd68/keymaps/via/readme.md similarity index 100% rename from keyboards/xd68/keymaps/via/readme.md rename to keyboards/xiudi/xd68/keymaps/via/readme.md diff --git a/keyboards/xiudi/xd68/keymaps/via/rules.mk b/keyboards/xiudi/xd68/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/xiudi/xd68/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/xiudi/xd68/readme.md b/keyboards/xiudi/xd68/readme.md new file mode 100644 index 000000000000..dd12ad632cb3 --- /dev/null +++ b/keyboards/xiudi/xd68/readme.md @@ -0,0 +1,53 @@ +# XD68 + +![Kitteh](https://i.imgur.com/qkA5Of5.jpg) + +65% board with USB-C, RGB underglow and backlight. Powered by ATM32U4. + +![Top View of XD68 Keyboard](https://i.imgur.com/OLkQQ17.jpg) + +* Keyboard Maintainer: QMK Community +* Hardware Supported: XD68 +* Hardware Availability: [KPRepublic on AliExpress](http://kprepublic.com/products/xiudi-xd68-pcb-65-custom-mechanical-keyboard-support-tkg-tools-underglow-rgb-pcb-programmed-kle-lots-of-layouts) + +Make example for this keyboard (after setting up your build environment): + + make xiudi/xd68:default + make xiudi/xd68:default_iso # default ISO UK layout + +## Layouts + +### ANSI + +``` +,----------------------------------------------------------------. +|Esc | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |Home| +|----------------------------------------------------------------| +|Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ |PgUp| +|----------------------------------------------------------------| +|CAPS | A| S| D| F| G| H| J| K| L| ;| '|Return |PgDn| +|----------------------------------------------------------------| +|Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up|End | +|----------------------------------------------------------------| +|Ctrl|Win |Alt | Space |App|Ctrl|FN |Lef|Dow|Rig | +`----------------------------------------------------------------' +``` + +### ISO-UK + +``` +,----------------------------------------------------------------. +|Esc | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |Home| +|----------------------------------------------------------------| +|Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| |PgUp| +|------------------------------------------------------- -----| +|CAPS | A| S| D| F| G| H| J| K| L| ;| '| #|Entr|PgDn| +|----------------------------------------------------------------| +|Shift| \ | Z| X| C| V| B| N| M| ,| .| /|Rshift|Up|End | +|----------------------------------------------------------------| +|Ctrl|Win |Alt | Space |Alt| FN|Ctrl|Lef|Dow|Rig | +`----------------------------------------------------------------' +``` + +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/xiudi/xd68/rules.mk b/keyboards/xiudi/xd68/rules.mk new file mode 100644 index 000000000000..6f650efd4625 --- /dev/null +++ b/keyboards/xiudi/xd68/rules.mk @@ -0,0 +1,21 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# QMK Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# 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 = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +LAYOUTS = 65_ansi 65_ansi_split_bs 65_iso diff --git a/keyboards/xd68/xd68.c b/keyboards/xiudi/xd68/xd68.c similarity index 100% rename from keyboards/xd68/xd68.c rename to keyboards/xiudi/xd68/xd68.c diff --git a/keyboards/xd68/xd68.h b/keyboards/xiudi/xd68/xd68.h similarity index 100% rename from keyboards/xd68/xd68.h rename to keyboards/xiudi/xd68/xd68.h diff --git a/keyboards/xd75/config.h b/keyboards/xiudi/xd75/config.h similarity index 100% rename from keyboards/xd75/config.h rename to keyboards/xiudi/xd75/config.h diff --git a/keyboards/xiudi/xd75/info.json b/keyboards/xiudi/xd75/info.json new file mode 100644 index 000000000000..bb15a7faef36 --- /dev/null +++ b/keyboards/xiudi/xd75/info.json @@ -0,0 +1,90 @@ +{ + "keyboard_name": "XD75", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_ortho_5x15": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0}, + {"x":14, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":6, "y":1}, + {"x":7, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + {"x":12, "y":1}, + {"x":13, "y":1}, + {"x":14, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + {"x":6, "y":2}, + {"x":7, "y":2}, + {"x":8, "y":2}, + {"x":9, "y":2}, + {"x":10, "y":2}, + {"x":11, "y":2}, + {"x":12, "y":2}, + {"x":13, "y":2}, + {"x":14, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3}, + {"x":6, "y":3}, + {"x":7, "y":3}, + {"x":8, "y":3}, + {"x":9, "y":3}, + {"x":10, "y":3}, + {"x":11, "y":3}, + {"x":12, "y":3}, + {"x":13, "y":3}, + {"x":14, "y":3}, + + {"x":0, "y":4}, + {"x":1, "y":4}, + {"x":2, "y":4}, + {"x":3, "y":4}, + {"x":4, "y":4}, + {"x":5, "y":4}, + {"x":6, "y":4}, + {"x":7, "y":4}, + {"x":8, "y":4}, + {"x":9, "y":4}, + {"x":10, "y":4}, + {"x":11, "y":4}, + {"x":12, "y":4}, + {"x":13, "y":4}, + {"x":14, "y":4} + ] + } + } +} diff --git a/keyboards/xd75/keymaps/4sstylz/config.h b/keyboards/xiudi/xd75/keymaps/4sstylz/config.h similarity index 100% rename from keyboards/xd75/keymaps/4sstylz/config.h rename to keyboards/xiudi/xd75/keymaps/4sstylz/config.h diff --git a/keyboards/xd75/keymaps/4sstylz/keycodes.h b/keyboards/xiudi/xd75/keymaps/4sstylz/keycodes.h similarity index 100% rename from keyboards/xd75/keymaps/4sstylz/keycodes.h rename to keyboards/xiudi/xd75/keymaps/4sstylz/keycodes.h diff --git a/keyboards/xd75/keymaps/4sstylz/keymap.c b/keyboards/xiudi/xd75/keymaps/4sstylz/keymap.c similarity index 100% rename from keyboards/xd75/keymaps/4sstylz/keymap.c rename to keyboards/xiudi/xd75/keymaps/4sstylz/keymap.c diff --git a/keyboards/xd75/keymaps/4sstylz/leds.h b/keyboards/xiudi/xd75/keymaps/4sstylz/leds.h similarity index 100% rename from keyboards/xd75/keymaps/4sstylz/leds.h rename to keyboards/xiudi/xd75/keymaps/4sstylz/leds.h diff --git a/keyboards/xd75/keymaps/4sstylz/readme.md b/keyboards/xiudi/xd75/keymaps/4sstylz/readme.md similarity index 100% rename from keyboards/xd75/keymaps/4sstylz/readme.md rename to keyboards/xiudi/xd75/keymaps/4sstylz/readme.md diff --git a/keyboards/xiudi/xd75/keymaps/4sstylz/rules.mk b/keyboards/xiudi/xd75/keymaps/4sstylz/rules.mk new file mode 100644 index 000000000000..4b2777fd21e1 --- /dev/null +++ b/keyboards/xiudi/xd75/keymaps/4sstylz/rules.mk @@ -0,0 +1,30 @@ +# Copyright 2013 Jun Wako +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +COMBO_ENABLE = yes # Enable combo for special function when using multiple keys at once. +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. + +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +MIDI_ENABLE = no # MIDI support +AUDIO_ENABLE = no # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend diff --git a/keyboards/xd75/keymaps/adi/config.h b/keyboards/xiudi/xd75/keymaps/adi/config.h similarity index 100% rename from keyboards/xd75/keymaps/adi/config.h rename to keyboards/xiudi/xd75/keymaps/adi/config.h diff --git a/keyboards/xd75/keymaps/adi/keymap.c b/keyboards/xiudi/xd75/keymaps/adi/keymap.c similarity index 100% rename from keyboards/xd75/keymaps/adi/keymap.c rename to keyboards/xiudi/xd75/keymaps/adi/keymap.c diff --git a/keyboards/xd75/keymaps/adi/readme.md b/keyboards/xiudi/xd75/keymaps/adi/readme.md similarity index 100% rename from keyboards/xd75/keymaps/adi/readme.md rename to keyboards/xiudi/xd75/keymaps/adi/readme.md diff --git a/keyboards/xd75/keymaps/adi/rules.mk b/keyboards/xiudi/xd75/keymaps/adi/rules.mk similarity index 100% rename from keyboards/xd75/keymaps/adi/rules.mk rename to keyboards/xiudi/xd75/keymaps/adi/rules.mk diff --git a/keyboards/xd75/keymaps/arpinfidel/config.h b/keyboards/xiudi/xd75/keymaps/arpinfidel/config.h similarity index 100% rename from keyboards/xd75/keymaps/arpinfidel/config.h rename to keyboards/xiudi/xd75/keymaps/arpinfidel/config.h diff --git a/keyboards/xiudi/xd75/keymaps/arpinfidel/keymap.c b/keyboards/xiudi/xd75/keymaps/arpinfidel/keymap.c new file mode 100644 index 000000000000..5f7337d68b0e --- /dev/null +++ b/keyboards/xiudi/xd75/keymaps/arpinfidel/keymap.c @@ -0,0 +1,114 @@ +/* Copyright 2017 Wunder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Layer shorthand +#define _QW 0 +#define _FN 1 + +enum my_kc { + A_BL_TG = SAFE_RANGE + // , A_BL_Y + // , A_BL_N +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* QWERTY + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | ESC | 1 | 2 | 3 | 4 | 5 | - | ` | = | 6 | 7 | 8 | 9 | 0 | BSPC | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | TAB | Q | W | E | R | T | [ | ] | \ | Y | U | I | O | P | ' | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------| + * | CAP LK | A | S | D | F | G | UP | DEL | DOWN | H | J | K | L | ; | ENTER | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------| + * | LSHIFT | Z | X | C | V | B | HOME | PG UP | END | N | M | , | . | / | RSHIFT | + * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+-----------------+--------+--------| + * | LCTRL | FN | LGUI | LALT | SPACE | SPACE | FN | PG DN | FN | BSPC | BSPC | RALT | RGUI | FN | RCTRL | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [_QW] = LAYOUT_ortho_5x15( /* QWERTY */ + KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_MINS, KC_GRV , KC_EQL , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_BSPC, + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_LBRC, KC_RBRC, KC_BSLS, KC_Y , KC_U , KC_I , KC_O , KC_P , KC_QUOT, + KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_UP , KC_DEL , KC_DOWN, KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_ENT, + KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_HOME, KC_PGUP, KC_END , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, + KC_LCTL, TT(_FN), KC_LGUI, KC_LALT, KC_SPC , KC_SPC , TT(_FN), KC_PGDN, TT(_FN), KC_BSPC, KC_BSPC, KC_RALT, KC_RGUI, TT(_FN), KC_RCTL + ), + +/* FUNCTION + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | F1 | F2 | F3 | F4 | F5 | F6 | | | | F7 | F8 | F9 | F10 | F11 | F12 | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | MS W U | | MS 2 | MS UP | MS 1 | MS 3 | RGB HD | | RGB HI | [ | ] | UP | | = | \ | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | MS W D | | MS L | MS DN | MS R | | RGB SD | | RGB SI | - | LEFT | DOWN | RIGHT | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | | RGB VD | BL TG | RGB VI | | | | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | FN | RGB TG | | MS W L | MS W R | | RESET | | MS 1 | MS 2 | RGB RMD| RGB MD | FN | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [_FN] = LAYOUT_ortho_5x15( /* FUNCTION */ + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, RGB_HUD, _______, RGB_HUI, KC_F7, KC_F8, KC_F9, KC_F10 , KC_F11 , KC_F12, + KC_WH_U, _______, KC_BTN2, KC_MS_U, KC_BTN1, KC_BTN3, RGB_SAD, _______, RGB_SAI, KC_LBRC, KC_RBRC, KC_UP , _______ , KC_EQL , KC_BSLS, + KC_WH_D, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, RGB_VAD, _______, RGB_VAI, KC_MINS, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, + _______, _______, _______, _______, _______, _______, RGB_RMOD,A_BL_TG, RGB_MOD, _______, _______, _______, _______ , _______, _______, + _______, TT(_FN), RGB_TOG, _______, KC_WH_L, KC_WH_R, TT(_FN), RESET , TT(_FN), KC_BTN1, KC_BTN2, _______, _______ , TT(_FN), _______ + ) +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case A_BL_TG: + if (record->event.pressed) { + // toggle keycaps leds (f5 pin) + PORTF ^= (1 << 5); + } + return false; + + // case A_BL_Y: + // if (record->event.pressed) { + // keycaps_led_on(); + // } + // return false; + + // case A_BL_N: + // if (record->event.pressed) { + // keycaps_led_off(); + // } + // return false; + + default: + return true; + } +} + +// Runs whenever there is a layer state change. +layer_state_t layer_state_set_user(layer_state_t state) { + uint8_t layer = biton32(state); + + gp100_led_off(); + gp103_led_off(); + + // turns on gp100 (top left led) for odd layers + if (layer & (1<<0)) gp100_led_on(); + // turns on gp103 (top mid led) for layers 2, 6, ... + if (layer & (1<<1)) gp103_led_on(); + + return state; +} diff --git a/keyboards/xd75/keymaps/arpinfidel/readme.md b/keyboards/xiudi/xd75/keymaps/arpinfidel/readme.md similarity index 100% rename from keyboards/xd75/keymaps/arpinfidel/readme.md rename to keyboards/xiudi/xd75/keymaps/arpinfidel/readme.md diff --git a/keyboards/xiudi/xd75/keymaps/arpinfidel/rules.mk b/keyboards/xiudi/xd75/keymaps/arpinfidel/rules.mk new file mode 100644 index 000000000000..5130423e4744 --- /dev/null +++ b/keyboards/xiudi/xd75/keymaps/arpinfidel/rules.mk @@ -0,0 +1,16 @@ +# Copyright 2013 Jun Wako +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite diff --git a/keyboards/xd75/keymaps/atomic_style/config.h b/keyboards/xiudi/xd75/keymaps/atomic_style/config.h similarity index 100% rename from keyboards/xd75/keymaps/atomic_style/config.h rename to keyboards/xiudi/xd75/keymaps/atomic_style/config.h diff --git a/keyboards/xd75/keymaps/atomic_style/keymap.c b/keyboards/xiudi/xd75/keymaps/atomic_style/keymap.c similarity index 100% rename from keyboards/xd75/keymaps/atomic_style/keymap.c rename to keyboards/xiudi/xd75/keymaps/atomic_style/keymap.c diff --git a/keyboards/xd75/keymaps/atomic_style/readme.md b/keyboards/xiudi/xd75/keymaps/atomic_style/readme.md similarity index 100% rename from keyboards/xd75/keymaps/atomic_style/readme.md rename to keyboards/xiudi/xd75/keymaps/atomic_style/readme.md diff --git a/keyboards/xd75/keymaps/atomic_style/rules.mk b/keyboards/xiudi/xd75/keymaps/atomic_style/rules.mk similarity index 100% rename from keyboards/xd75/keymaps/atomic_style/rules.mk rename to keyboards/xiudi/xd75/keymaps/atomic_style/rules.mk diff --git a/keyboards/xd75/keymaps/atomic_style_jp/keymap.c b/keyboards/xiudi/xd75/keymaps/atomic_style_jp/keymap.c similarity index 100% rename from keyboards/xd75/keymaps/atomic_style_jp/keymap.c rename to keyboards/xiudi/xd75/keymaps/atomic_style_jp/keymap.c diff --git a/keyboards/xd75/keymaps/atomic_style_jp/readme.md b/keyboards/xiudi/xd75/keymaps/atomic_style_jp/readme.md similarity index 100% rename from keyboards/xd75/keymaps/atomic_style_jp/readme.md rename to keyboards/xiudi/xd75/keymaps/atomic_style_jp/readme.md diff --git a/keyboards/xd75/keymaps/bbaserdem/config.h b/keyboards/xiudi/xd75/keymaps/bbaserdem/config.h similarity index 100% rename from keyboards/xd75/keymaps/bbaserdem/config.h rename to keyboards/xiudi/xd75/keymaps/bbaserdem/config.h diff --git a/keyboards/xd75/keymaps/bbaserdem/keymap.c b/keyboards/xiudi/xd75/keymaps/bbaserdem/keymap.c similarity index 100% rename from keyboards/xd75/keymaps/bbaserdem/keymap.c rename to keyboards/xiudi/xd75/keymaps/bbaserdem/keymap.c diff --git a/keyboards/xiudi/xd75/keymaps/bbaserdem/readme.md b/keyboards/xiudi/xd75/keymaps/bbaserdem/readme.md new file mode 100644 index 000000000000..a0ade691aa3f --- /dev/null +++ b/keyboards/xiudi/xd75/keymaps/bbaserdem/readme.md @@ -0,0 +1,14 @@ +# XD75RE Setup + +(WIP) F keyboard for turkish, using unicode. + +* Write down keymap in userspace +* Figure out LED indicators + +# Make + +Take the board into reset mode, then +``` +make xiudi/xd75:bbaserdem:dfu +``` +Either sudo it or set permissions in udev. diff --git a/keyboards/xd75/keymaps/bbaserdem/rules.mk b/keyboards/xiudi/xd75/keymaps/bbaserdem/rules.mk similarity index 100% rename from keyboards/xd75/keymaps/bbaserdem/rules.mk rename to keyboards/xiudi/xd75/keymaps/bbaserdem/rules.mk diff --git a/keyboards/xd75/keymaps/billypython/config.h b/keyboards/xiudi/xd75/keymaps/billypython/config.h similarity index 100% rename from keyboards/xd75/keymaps/billypython/config.h rename to keyboards/xiudi/xd75/keymaps/billypython/config.h diff --git a/keyboards/xd75/keymaps/billypython/keymap.c b/keyboards/xiudi/xd75/keymaps/billypython/keymap.c similarity index 100% rename from keyboards/xd75/keymaps/billypython/keymap.c rename to keyboards/xiudi/xd75/keymaps/billypython/keymap.c diff --git a/keyboards/xiudi/xd75/keymaps/billypython/rules.mk b/keyboards/xiudi/xd75/keymaps/billypython/rules.mk new file mode 100644 index 000000000000..a4fd56ac1876 --- /dev/null +++ b/keyboards/xiudi/xd75/keymaps/billypython/rules.mk @@ -0,0 +1,15 @@ +AUDIO_ENABLE = no +BACKLIGHT_ENABLE = no +BLUETOOTH_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +COMMAND_ENABLE = yes +CONSOLE_ENABLE = yes +EXTRAKEY_ENABLE = yes +MIDI_ENABLE = no +MOUSEKEY_ENABLE = yes +NKRO_ENABLE = yes +RGBLIGHT_ENABLE = no +SLEEP_LED_ENABLE = no +TAP_DANCE_ENABLE = no +UNICODE_ENABLE = yes +VISUALIZER_ENABLE = no diff --git a/keyboards/xd75/keymaps/boy_314/config.h b/keyboards/xiudi/xd75/keymaps/boy_314/config.h similarity index 100% rename from keyboards/xd75/keymaps/boy_314/config.h rename to keyboards/xiudi/xd75/keymaps/boy_314/config.h diff --git a/keyboards/xd75/keymaps/boy_314/keymap.c b/keyboards/xiudi/xd75/keymaps/boy_314/keymap.c similarity index 100% rename from keyboards/xd75/keymaps/boy_314/keymap.c rename to keyboards/xiudi/xd75/keymaps/boy_314/keymap.c diff --git a/keyboards/xd75/keymaps/boy_314/readme.md b/keyboards/xiudi/xd75/keymaps/boy_314/readme.md similarity index 100% rename from keyboards/xd75/keymaps/boy_314/readme.md rename to keyboards/xiudi/xd75/keymaps/boy_314/readme.md diff --git a/keyboards/xiudi/xd75/keymaps/boy_314/rules.mk b/keyboards/xiudi/xd75/keymaps/boy_314/rules.mk new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/keyboards/xd75/keymaps/bramver/config.h b/keyboards/xiudi/xd75/keymaps/bramver/config.h similarity index 100% rename from keyboards/xd75/keymaps/bramver/config.h rename to keyboards/xiudi/xd75/keymaps/bramver/config.h diff --git a/keyboards/xd75/keymaps/bramver/keymap.c b/keyboards/xiudi/xd75/keymaps/bramver/keymap.c similarity index 100% rename from keyboards/xd75/keymaps/bramver/keymap.c rename to keyboards/xiudi/xd75/keymaps/bramver/keymap.c diff --git a/keyboards/xd75/keymaps/bramver/readme.md b/keyboards/xiudi/xd75/keymaps/bramver/readme.md similarity index 100% rename from keyboards/xd75/keymaps/bramver/readme.md rename to keyboards/xiudi/xd75/keymaps/bramver/readme.md diff --git a/keyboards/xd75/keymaps/bramver/rules.mk b/keyboards/xiudi/xd75/keymaps/bramver/rules.mk similarity index 100% rename from keyboards/xd75/keymaps/bramver/rules.mk rename to keyboards/xiudi/xd75/keymaps/bramver/rules.mk diff --git a/keyboards/xd75/keymaps/bulbizarre/config.h b/keyboards/xiudi/xd75/keymaps/bulbizarre/config.h similarity index 100% rename from keyboards/xd75/keymaps/bulbizarre/config.h rename to keyboards/xiudi/xd75/keymaps/bulbizarre/config.h diff --git a/keyboards/xd75/keymaps/bulbizarre/keymap.c b/keyboards/xiudi/xd75/keymaps/bulbizarre/keymap.c similarity index 100% rename from keyboards/xd75/keymaps/bulbizarre/keymap.c rename to keyboards/xiudi/xd75/keymaps/bulbizarre/keymap.c diff --git a/keyboards/xd75/keymaps/bulbizarre/readme.md b/keyboards/xiudi/xd75/keymaps/bulbizarre/readme.md similarity index 100% rename from keyboards/xd75/keymaps/bulbizarre/readme.md rename to keyboards/xiudi/xd75/keymaps/bulbizarre/readme.md diff --git a/keyboards/xd75/keymaps/bulbizarre/rules.mk b/keyboards/xiudi/xd75/keymaps/bulbizarre/rules.mk similarity index 100% rename from keyboards/xd75/keymaps/bulbizarre/rules.mk rename to keyboards/xiudi/xd75/keymaps/bulbizarre/rules.mk diff --git a/keyboards/xd75/keymaps/buzzlighter1/config.h b/keyboards/xiudi/xd75/keymaps/buzzlighter1/config.h similarity index 100% rename from keyboards/xd75/keymaps/buzzlighter1/config.h rename to keyboards/xiudi/xd75/keymaps/buzzlighter1/config.h diff --git a/keyboards/xd75/keymaps/buzzlighter1/keymap.c b/keyboards/xiudi/xd75/keymaps/buzzlighter1/keymap.c similarity index 100% rename from keyboards/xd75/keymaps/buzzlighter1/keymap.c rename to keyboards/xiudi/xd75/keymaps/buzzlighter1/keymap.c diff --git a/keyboards/xiudi/xd75/keymaps/buzzlighter1/readme.md b/keyboards/xiudi/xd75/keymaps/buzzlighter1/readme.md new file mode 100644 index 000000000000..17232175e31e --- /dev/null +++ b/keyboards/xiudi/xd75/keymaps/buzzlighter1/readme.md @@ -0,0 +1,54 @@ +# XD75 with 7U spacebar for EN-RU gamers + * Standard QWERTY made for gamers with a Russian alternative input. + * The keys for extra letters in RU alphabet are where they are expected. + * Full 2x4 nav cluster. + * Volume/mute control are on base layer, Win key is on function layer. + * FN_CAPS provides fast F-keys access while gaming. Lefthanded Numpad operation. + * NKRO is on (forced). + +## Layout +```c +/* QWERTY + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | GESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Del | BACKSP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | Mute | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------| + * | FN(CPS)| A | S | D | F | G | H | J | K | L | ; | ' | Vol- | Vol+ | ENTER | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------| + * | LSHIFT | Z | X | C | V | B | N | M | , | . | / | Home | PGUP | UP | PGDWN | + * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+-----------------+--------+--------| + * | LCTRL | Del | ENTER | LALT | SPACE | End | LEFT | DOWN | RIGHT | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ +``` +```c +/* FUNCTION + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | XXXXXXX| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | _______| _______| + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | _______| P7 | P8 | P9 | + | P* | XXXXXXX| PR SCR | SCR LK | PAUSE | XXXXXXX| BL_DEC | BL_INC | RGB HD | RGB HI | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | _______| P4 | P5 | P6 | NumLk | CALC | XXXXXXX| POWER | XXXXXXX| RESET | XXXXXXX| BL_BRTG| BL_STEP| RGB SD | RGB SI | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | _______| P1 | P2 | P3 | - | P/ | XXXXXXX| OS | PLAY | PREV | NXT | BL_OFF | BL_ON | RGB VD | RGB VI | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | _______| P0 | P. | PENT | SPACE | BL_TOGG| RGB TG | RGB RMD| RGB MD | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ +``` +## LEDs +Top left LED - Function layer active. +Mid left LED - CapsLock active. + +## Compile + +go to qmk top directory. +``` +$ cd qmk_firmware +``` + +build +``` +$ make xiudi/xd75:buzzlighter1 +``` \ No newline at end of file diff --git a/keyboards/xiudi/xd75/keymaps/buzzlighter1/rules.mk b/keyboards/xiudi/xd75/keymaps/buzzlighter1/rules.mk new file mode 100644 index 000000000000..108a4f6330c5 --- /dev/null +++ b/keyboards/xiudi/xd75/keymaps/buzzlighter1/rules.mk @@ -0,0 +1,4 @@ + +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +BACKLIGHT_ENABLE = yes +RGBLIGHT_ENABLE = no diff --git a/keyboards/xd75/keymaps/c4software_bepo/config.h b/keyboards/xiudi/xd75/keymaps/c4software_bepo/config.h similarity index 100% rename from keyboards/xd75/keymaps/c4software_bepo/config.h rename to keyboards/xiudi/xd75/keymaps/c4software_bepo/config.h diff --git a/keyboards/xiudi/xd75/keymaps/c4software_bepo/keymap.c b/keyboards/xiudi/xd75/keymaps/c4software_bepo/keymap.c new file mode 100644 index 000000000000..fdfe3be16d19 --- /dev/null +++ b/keyboards/xiudi/xd75/keymaps/c4software_bepo/keymap.c @@ -0,0 +1,68 @@ +/* Copyright 2017 Valentin Brosseau + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +#include "keymap_bepo.h" + +// Layer shorthand +#define _BP 0 +#define _FN 1 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Native BepoDev for compatible computer + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | ESC | " | < | > | ( | ) | % | VOL- | VOL+ | @ | + | - | / | * | = | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | TAB | B | E_ACUT | P | O | $ | E_GRAV | DEL | E_CIRC | V | D | L | J | Z | C_CEDIL| + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------| + * | RALT | A | U | I | E | , | BACKSP | ENTER | C | T | S | R | N | M | W | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------| + * | LSHIFT | A_GRAV | Y | X | . | K | BACKSP | ENTER | ’ | Q | G | H | F | UP | RSHIFT | + * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+-----------------+--------+--------| + * | LALT | LCTRL | FN | LGUI | SPACE | SPACE | RALT | RALT | SPACE | SPACE | RGUI | FN | LEFT | DOWN | RIGHT | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [_BP] = LAYOUT_ortho_5x15( /* BepoDev */ + KC_ESC, BP_DQUO, BP_LDAQ, BP_RDAQ, BP_LPRN, BP_RPRN, BP_PERC, KC_VOLD, KC_VOLU, BP_AT, BP_PLUS, BP_MINS, BP_SLSH, BP_ASTR, BP_EQL, + KC_TAB, BP_B, BP_EACU, BP_P, BP_O, BP_DLR, BP_EGRV, KC_DEL, BP_DCIR, BP_V, BP_D, BP_L, BP_J, BP_Z, BP_CCED, + KC_RALT, BP_A, BP_U, BP_I, BP_E, BP_COMM, KC_BSPC, KC_ENT, BP_C, BP_T, BP_S, BP_R, BP_N, BP_M, BP_W, + KC_LSFT, BP_AGRV, BP_Y, BP_X, BP_DOT, BP_K, KC_BSPC, KC_ENT, BP_QUOT, BP_Q, BP_G, BP_H, BP_F, KC_UP, KC_RSFT, + KC_LALT, KC_LCTL, MO(_FN), KC_LGUI, KC_SPC, KC_SPC, KC_RALT, KC_RALT, KC_SPC, KC_SPC, KC_RGUI, MO(_FN), KC_LEFT, KC_DOWN, KC_RGHT + ), + +/* FUNCTION + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | P/ | P* | F9 | F10 | F11 | F12 | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | | | | P7 | P8 | P9 | - | RGB_TOG| RGB_MOD| RGB_HUI| + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | PREV | PLAY | NEXT | STOP | | | | P4 | P5 | P6 | + | RGB_SAI| RGB_SAD| RGB_VAI| + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | VOL- | MUTE | VOL+ | | | | | P1 | P2 | P3 | ENT | RGB_VAD| Home | RGB_HUD| + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | RESET | | FN | | | | | | P0 | P0 | . | FN | | End | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [_FN] = LAYOUT_ortho_5x15( /* FUNCTION */ + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_SLSH, KC_ASTR, KC_F9, KC_F10, KC_F11, KC_F12, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_MINS, RGB_TOG, RGB_MOD, RGB_HUI, + KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP, KC_TRNS, KC_TRNS, KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PLUS, RGB_SAI, RGB_SAD, RGB_VAI, + KC_TRNS, KC_VOLD, KC_MUTE, KC_VOLU, KC_APP, KC_TRNS, KC_TRNS, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_ENT, RGB_VAD, KC_HOME, RGB_HUD, + RESET, KC_TRNS, MO(_FN), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_0, KC_KP_0, KC_PDOT, MO(_FN), KC_TRNS, KC_END, KC_TRNS + ) +}; diff --git a/keyboards/xd75/keymaps/c4software_bepo/readme.md b/keyboards/xiudi/xd75/keymaps/c4software_bepo/readme.md similarity index 100% rename from keyboards/xd75/keymaps/c4software_bepo/readme.md rename to keyboards/xiudi/xd75/keymaps/c4software_bepo/readme.md diff --git a/keyboards/xd75/keymaps/c4software_bepo/rules.mk b/keyboards/xiudi/xd75/keymaps/c4software_bepo/rules.mk similarity index 100% rename from keyboards/xd75/keymaps/c4software_bepo/rules.mk rename to keyboards/xiudi/xd75/keymaps/c4software_bepo/rules.mk diff --git a/keyboards/xd75/keymaps/cbbrowne/config.h b/keyboards/xiudi/xd75/keymaps/cbbrowne/config.h similarity index 100% rename from keyboards/xd75/keymaps/cbbrowne/config.h rename to keyboards/xiudi/xd75/keymaps/cbbrowne/config.h diff --git a/keyboards/xiudi/xd75/keymaps/cbbrowne/keymap.c b/keyboards/xiudi/xd75/keymaps/cbbrowne/keymap.c new file mode 100644 index 000000000000..1b29686cfffd --- /dev/null +++ b/keyboards/xiudi/xd75/keymaps/cbbrowne/keymap.c @@ -0,0 +1,310 @@ +/* Copyright 2017 Christopher B Browne + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +/* Fillers to make layering more clear */ +#define ___T___ KC_TRNS + +/* Layer shorthand */ + +enum layers { + _QWERTY = 0, /* Qwerty mapping */ + _LOWER, /* Lower layer, where top line has symbols !@#$%^&*() */ + _RAISE, /* Raised layer, where top line has digits 1234567890 */ + _ADJUST, /* Special Adjust layer coming via tri-placement */ + _FUNCTION /* Function key layer */ +}; + + +/* Macros need to be uniquely identified; using an enum to do this + automatically + */ + +enum macro_id { + M_LED = 0, + M_USERNAME, + M_RANDDIGIT, + M_RANDLETTER, + M_VERSION, + MACRO_UPPER, + MACRO_LOWER, +}; + +/* I want some short forms for keycodes so that they fit into + limited-width cells */ + +#define M_LOWER M(MACRO_LOWER) +#define M_UPPER M(MACRO_UPPER) +#define ROT_LED M(M_LED) /* Rotate LED */ +#define QWERTY DF(_QWERTY) /* Switch to QWERTY layout */ +#define QCENT2 DF(_QCENT2) /* Switch to QWERTY-with-centre layout */ +#define USERNAME M(M_USERNAME) /* shortcut for username */ +#define RANDDIG M(M_RANDDIGIT) +#define RANDALP M(M_RANDLETTER) +#define CTLENTER MT(MOD_RCTL, KC_ENT) +#define SHIFTQUOTE MT(MOD_RSFT, KC_QUOT) +#define ALTRIGHT MT(MOD_LALT, KC_RGHT) +#define MVERSION M(M_VERSION) +#define ALTSLASH LALT(KC_SLSH) +#define FUNCTION MO(_FUNCTION) +#define MRAISE MO(_RAISE) +#define MLOWER MO(_LOWER) +#define ALTPLUS ALT_T(KC_PLUS) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* QWERTY - MIT ENHANCED / GRID COMPATIBLE + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | XXXXXX . BACKSP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | DEL | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | ESC | A | S | D | F | G | H | J | K | L | ; | ' | XXXXXX . ENTER | PG UP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | LSHIFT | Z | X | C | V | B | N | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | BRITE | LCTRL | LALT | LGUI | RAISE | XXXXXX . SPACE | LOWER | RGUI | RALT | RCTRL | FN | LEFT | DOWN | RIGHT | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + /* layout for centred keypad + qwerty... + +|ESC| 1 | 2 | 3 | 4 | 5 | ? | ? | ? | ? | 6 | 7 | 8 | 9 | 0 | +|TAB| q | w | e | r | t | ? | ? | ? | ? | y | u | i | o | p | +|CTL| a | s | d | f | g | ? | ? | ? | ? | h | j | k | l | ; | +|SHF| z | x | c | v | b | ? | ? | ? | ? | n | m | , | . | / | +|ALT|LED| | | | | | | | | | | | | | + + +keys needing to be assigned: +51 - KC_TAB - tab + - ROT_LED - rotate LED +15 - KC_LALT - Left ALT +53,55 - M_RAISE - switch to RAISE layer +5b - M_LOWER - switch to LOWER layer +56,59,5a - KC_SPC - space +5c - KC_LEFT - famous arrows +5d - KC_DOWN - famous arrows +5e - KC_UP - famous arrows +5f - KC_RIGHT - famous arrows +3f - KC_ENT - enter + - KC_GRV - leftwards quote +4f - KC_QUOT - rightwards quote +1f - KC_BSPC - backspace +11 - KC_ESC +19 - KC_GRV - ` - raised +19 - KC_TILD - ~ - lowered + + */ + +[_QWERTY] = LAYOUT_ortho_5x15( /* QWERTY, with keypad in the centre */ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_EQL, KC_MINS, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC , + KC_LALT, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_7, KC_8, KC_EQL, KC_Y, KC_U, KC_I, KC_O, KC_P, ALTPLUS , + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LBRC, KC_RBRC,KC_MINS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, CTLENTER , + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_PGUP, KC_EQL, KC_BSLS, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SHIFTQUOTE , + KC_TAB, FUNCTION, MRAISE, FUNCTION, MRAISE, KC_SPC,KC_PGDN, KC_MINS, KC_SPC, KC_SPC, MLOWER, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT +), + +/* LOWER + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX . | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | | ! | @ | # | $ | % | ^ | & | * | ( | ) | | | | INS | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | XXXXXX . | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | | XXXXXX . | | | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | | | | | | XXXXXX . | | | | | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + +[_LOWER] = LAYOUT_ortho_5x15( /* LOWERED */ + ___T___, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, KC_TILD, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11 , + ___T___, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_INS , + ___T___, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE , + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, ___T___, ___T___, _______ , + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +/* RAISED + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX . | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | | | | INS | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | XXXXXX . | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | | XXXXXX . | | | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | | | | | | XXXXXX . | | | | | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + +[_RAISE] = LAYOUT_ortho_5x15 ( /* RAISED */ + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, MVERSION, _______, KC_GRV, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ___T___ , + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, USERNAME, _______, KC_7, KC_8, KC_LCBR, KC_RCBR, _______, _______, KC_INS , + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, RANDDIG, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, ___T___, ___T___ , + KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RANDALP, _______, _______, _______, _______, ___T___, ___T___, _______, _______ , + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), + +/* FUNCTION + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | NUM LK | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX . | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | SCR LK | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | F21 | F22 | F23 | F24 | PAUSE | PR SCR | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | CAP LK | MS BT5 | MS BT4 | MS BT3 | MS BT2 | SLOW M | FAST M | NEXT | VOL+ | VOL- | PLAY | | XXXXXX | | WHEEL+ | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | RGB TG | RGB MD | RGB HI | RGB HD | RGB SI | RGB SD | RGB VI | RGB VD | BL TOG | BL INC | BL DEC | XXXXXX | | MOUS U | WHEEL- | + * |--------+--------+--------+--------+--------+-- 2u -----------+--------+--------+--------+--------+-----------------+--------+--------| + * | RESET | | QWERTY | COLEMK | DVORAK | XXXXXX . MS BT1 | | | | | | MOUS L | MOUS D | MOUS R | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + +[_FUNCTION] = LAYOUT_ortho_5x15( /* FUNCTION */ + KC_NLCK, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RESET, RESET, + KC_SLCK, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_PAUS, KC_PSCR , + KC_CAPS, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_ACL0, KC_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, ___T___, ___T___, KC_WH_U , + RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, BL_TOGG, BL_INC, BL_DEC, ___T___, ___T___, KC_MS_U, KC_WH_D , + RESET , _______, DF(_QWERTY), DF(_QWERTY), DF(_QWERTY), KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R + ) +}; + +/* This bit of logic seeds a wee linear congruential random number generator */ +/* lots of prime numbers everywhere... */ +static uint16_t random_value = 157; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + uint8_t clockbyte=0; + clockbyte = TCNT1 % 256; + uint8_t rval; + /* MACRODOWN only works in this function */ + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); +#ifdef BACKLIGHT_ENABLE + backlight_step(); +#endif + } else { + unregister_code(KC_RSFT); + } + break; + case M_USERNAME: + if (record->event.pressed) { + SEND_STRING("cbbrowne"); + } + break; + case M_VERSION: + if (record->event.pressed) { + SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP); + } + break; + case M_RANDDIGIT: + /* Generate, based on random number generator, a keystroke for + a numeric digit chosen at random */ + random_value = ((random_value + randadd) * randmul) % randmod; + if (record->event.pressed) { + /* Here, we mix the LCRNG with low bits from one of the system + clocks via XOR in the theory that this may be more random + than either separately */ + rval = (random_value ^ clockbyte) % 10; + /* Note that KC_1 thru KC_0 are a contiguous range */ + register_code (KC_1 + rval); + unregister_code (KC_1 + rval); + } + break; + case M_RANDLETTER: + /* Generate, based on random number generator, a keystroke for + a letter chosen at random */ + /* Here, we mix the LCRNG with low bits from one of the system + clocks via XOR in the theory that this may be more random + than either separately */ + random_value = ((random_value + randadd) * randmul) % randmod; + if (record->event.pressed) { + rval = (random_value ^ clockbyte) % 26; + register_code (KC_A + rval); + unregister_code (KC_A + rval); + } + break; + case MACRO_UPPER: + if (record->event.pressed) + { + layer_on(_RAISE); +#ifdef BACKLIGHT_ENABLE + breathing_period_set(2); + breathing_pulse(); +#endif + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + else + { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + break; + case MACRO_LOWER: + if (record->event.pressed) + { + layer_on(_LOWER); +#ifdef BACKLIGHT_ENABLE + breathing_period_set(2); + breathing_pulse(); +#endif + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + else + { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + break; + } + return MACRO_NONE; +}; + +void matrix_init_user(void) { + rgblight_enable(); + rgblight_mode(1); + rgblight_sethsv(325,255,255); +} + +layer_state_t layer_state_set_user(layer_state_t state) { + switch(biton32(state)) { + case _QWERTY: + rgblight_sethsv_white(); + break; + case _LOWER: + rgblight_sethsv_blue(); + break; + case _RAISE: + rgblight_sethsv_green(); + break; + case _ADJUST: + rgblight_sethsv_orange(); + break; + case _FUNCTION: + rgblight_sethsv_red(); + break; + default: + rgblight_sethsv(325,255,255); + break; + } + return state; +} diff --git a/keyboards/xd75/keymaps/cbbrowne/readme.md b/keyboards/xiudi/xd75/keymaps/cbbrowne/readme.md similarity index 100% rename from keyboards/xd75/keymaps/cbbrowne/readme.md rename to keyboards/xiudi/xd75/keymaps/cbbrowne/readme.md diff --git a/keyboards/xiudi/xd75/keymaps/cbbrowne/rules.mk b/keyboards/xiudi/xd75/keymaps/cbbrowne/rules.mk new file mode 100644 index 000000000000..9b7d553c958f --- /dev/null +++ b/keyboards/xiudi/xd75/keymaps/cbbrowne/rules.mk @@ -0,0 +1,19 @@ +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys(+4700) +EXTRAKEY_ENABLE = no # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = yes # 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 +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = no # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. + +# 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/xd75/keymaps/clanghans/config.h b/keyboards/xiudi/xd75/keymaps/clanghans/config.h similarity index 100% rename from keyboards/xd75/keymaps/clanghans/config.h rename to keyboards/xiudi/xd75/keymaps/clanghans/config.h diff --git a/keyboards/xd75/keymaps/clanghans/keymap.c b/keyboards/xiudi/xd75/keymaps/clanghans/keymap.c similarity index 100% rename from keyboards/xd75/keymaps/clanghans/keymap.c rename to keyboards/xiudi/xd75/keymaps/clanghans/keymap.c diff --git a/keyboards/xiudi/xd75/keymaps/clanghans/readme.md b/keyboards/xiudi/xd75/keymaps/clanghans/readme.md new file mode 100755 index 000000000000..eed6369ada91 --- /dev/null +++ b/keyboards/xiudi/xd75/keymaps/clanghans/readme.md @@ -0,0 +1,11 @@ +# xd75 from Chris Langhans + +- qwerty layer +- special function layer with num pad and shortcuts + +* Build/Flash + qmk setup + qmk compile -kb xiudi/xd75 -km clanghans + qmk flash -kb xiudi/xd75 -km clanghans + + Hit 'Raise'+'PgUp' for entering bootloader mode diff --git a/keyboards/xd75/keymaps/colinta/config.h b/keyboards/xiudi/xd75/keymaps/colinta/config.h similarity index 100% rename from keyboards/xd75/keymaps/colinta/config.h rename to keyboards/xiudi/xd75/keymaps/colinta/config.h diff --git a/keyboards/xd75/keymaps/colinta/keymap.c b/keyboards/xiudi/xd75/keymaps/colinta/keymap.c similarity index 100% rename from keyboards/xd75/keymaps/colinta/keymap.c rename to keyboards/xiudi/xd75/keymaps/colinta/keymap.c diff --git a/keyboards/xiudi/xd75/keymaps/colinta/readme.md b/keyboards/xiudi/xd75/keymaps/colinta/readme.md new file mode 100644 index 000000000000..e4e8049015f9 --- /dev/null +++ b/keyboards/xiudi/xd75/keymaps/colinta/readme.md @@ -0,0 +1,64 @@ +# colinta's keymap for XD75 + +``` +make xiudi/xd75:colinta:dfu +``` + +The default layout is a Colemak keyboard with "one-shot" keys assigned to the modifier keys. + + .--------------------------------------------------------------------------------------------------------------------------------------. + | ESC | 1 | 2 | 3 | 4 | 5 | DYN_M1 | DYN_M2 | DEL | 6 | 7 | 8 | 9 | 0 | - | + |--------+-/F1----+-/F2----+-/F3----+-/F4----+-/F5----+--------+--------+--------+-/F6----+-/F7----+-/F8----+-/F9----+-/F10---+--------| + | TAB | Q | W | F | P | G | MACRO | (FN) | BKSP | J | L | U | Y | ; | = | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------| + | SHIFT | A | R | S | T | D | [ | ] | ENTER | H | N | E | I | O | ' | + |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------| + | CTRL | Z | X | C | V | B | HOME | END | PG UP | K | M | , | . | / | \ | + |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+-----------------+--------+--------| + | VOL- | PLAY | VOL+ | ALT | GUI | SPACE | PG DN | MENU | ESC | LEFT | DOWN | UP | RIGHT | + '--/RRND----/MUTE----/FFWD-------------------------------------------------------------------------------------------------------------' + + +I've implemented my own "tap/hold" feature, identical in spirit to "Space Cadet", but generic. Tapping "1" sends a 1, but press and hold to send "F1". Or, tap "VOL-" to turn the volume down, but press and hold to rewind. + +The function layer is only to switch to Qwerty (so other people can use this keyboard - also turns off sticky keys) and to start recording keypresses. + +I implemented "stop recording" in a unique way; starting a macro recording sends the keyboard layer to one that has all the macro keys assigned to `DYN_REC_STOP`, and restores the layer to the default when recording is stopped. + +I wish Dynamic Macros supported more, because I'd like to record a third macro in the MACRO slot instead of hardcoding it. I'm using these to store some passwords. + +## Regarding "secrets.h" + +The macros I'm using are sensitive, I'm comfortable having them hardcoded onto my keyboard (no SSN or private GPG keys), but not suitable for public viewing. So I've put them in a header file that is excluded from the project, and I can include this file using a compiler flag. + +If you would *also* like to take advantage of this feature, you'll first want to make sure your "secrets" file isn't included in the repo. Open `.git/info/exclude` and add `secrets.h` to that file, below the comments. + +###### .git/info/exclude +``` +# git ls-files --others --exclude-from=.git/info/exclude +# Lines that start with '#' are comments. +# For a project mostly in C, the following would be a good set of +# exclude patterns (uncomment them if you want to use them): +# *.[oa] +# *~ +/keyboards/xiudi/xd75/keymaps/colinta/secrets.h +``` + +Then you can create this file and add your macro strings to it: + +``` +$EDITOR keyboards/xiudi/xd75/keymaps/colinta/secrets.h +``` + +###### secrets.h +``` +#define SENDSTRING_MM0 "abcd1234" +#define SENDSTRING_MM1 "shhhhh secret" +#define SENDSTRING_MM2 "stop saying pickle rick" +``` + +To include the feature at compile time, include the flag `IS_COLINTA` like so: + +``` +make xiudi/xd75:colinta:dfu EXTRAFLAGS=-DIS_COLINTA +``` diff --git a/keyboards/xd75/keymaps/daniel/keymap.c b/keyboards/xiudi/xd75/keymaps/daniel/keymap.c similarity index 100% rename from keyboards/xd75/keymaps/daniel/keymap.c rename to keyboards/xiudi/xd75/keymaps/daniel/keymap.c diff --git a/keyboards/xd75/keymaps/daniel/readme.md b/keyboards/xiudi/xd75/keymaps/daniel/readme.md similarity index 100% rename from keyboards/xd75/keymaps/daniel/readme.md rename to keyboards/xiudi/xd75/keymaps/daniel/readme.md diff --git a/keyboards/xd75/keymaps/davidrambo/config.h b/keyboards/xiudi/xd75/keymaps/davidrambo/config.h similarity index 100% rename from keyboards/xd75/keymaps/davidrambo/config.h rename to keyboards/xiudi/xd75/keymaps/davidrambo/config.h diff --git a/keyboards/xiudi/xd75/keymaps/davidrambo/keymap.c b/keyboards/xiudi/xd75/keymaps/davidrambo/keymap.c new file mode 100644 index 000000000000..f380ebdb118a --- /dev/null +++ b/keyboards/xiudi/xd75/keymaps/davidrambo/keymap.c @@ -0,0 +1,194 @@ +/* Copyright 2021 David Rambo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +//aliases for clarity in layering +#define ABSPC LALT(KC_BSPC) // delete whole word in Mac +#define CBSPC LCTL(KC_BSPC) // delete whole word in PC +#define ALEFT LALT(KC_LEFT) +#define ARGHT LALT(KC_RGHT) +#define CRGHT LCTL(KC_RGHT) +#define CLEFT LCTL(KC_LEFT) +#define SftEnt SFT_T(KC_ENT) +#define BSGUI LGUI_T(KC_BSPC) +#define BSCTL LCTL_T(KC_BSPC) + +// internet browser tab shortcuts and window/application swapping for Mac and Win +#define GSL LGUI(S(KC_LEFT)) // back one tab in Safari +#define GSR LGUI(S(KC_RGHT)) // forward one tab in Safari +#define CTLPGDN LCTL(KC_PGDN) // back one tab on PC +#define CTLPGUP LCTL(KC_PGUP) // forward one tab on PC +#define GTAB LGUI(KC_TAB) // Mac: switch applications +#define GGRV LGUI(KC_GRV) // Mac: switch between windows within an application +#define ATAB LALT(KC_TAB) +#define CTAB LCTL(KC_TAB) + +// toggles for navigation layers for Mac, PC, and Roguelike Numpad +#define NAV LT(5, KC_ESC) +#define NAVPC LT(6, KC_ESC) +#define NAVQUD MO(7) + +enum custom_layer { + _COLEMAK, + _PC, + _GAME, // Gaming layer + _QUD,3 // Roguelike layer + _SYMBOL, // Function keys, numbers, symbols, Backlighting + _NAV, // Navigation Layer on Mac + _NAVPC, // Navigation Layer on Win + _NAVQUD, // Numpad for Roguelike 8-directional movement +} + +// tapdance declarations +enum { + SFT_LCK +}; + +// alias for tapdance +#define SftLck TD(SFT_LCK) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* COLEMAK + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | `~ | 1 | 2 | 3 | 4 | 5 | -_ | PC | =+ | 6 | 7 | 8 | 9 | 0 | BACKSP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | ESC/`~ | Q | W | F | P | G | [ | \| | ] | J | L | U | Y | ; | BACKSP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------| + * | NAVTAB | A | S | D | F | G | PgUp |PlayPaus| ENTER | H | N | E | I | O | ' | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------| + * |SFT/CAPS| Z | X | C | V | B | PgDn | UP | ENTER | K | M | , | . | / | SftEnt | + * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+-----------------+--------+--------| + * | DEL | LGUI | LCTRL | LALT | LGUI | BKSPC | LEFT | DOWN | RIGHT | SPACE | SYMBOL | RGUI | RALT | RCTRL | BL | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [_COLEMAK] = LAYOUT_ortho_5x15( /* COLEMAK */ + KC_GRV , KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, TO(1) , KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB , KC_Q, KC_W, KC_F, KC_P, KC_G, KC_LBRC, KC_BSLS, KC_RBRC, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, + NAV , KC_A, KC_R, KC_S, KC_T, KC_D, KC_PGUP, KC_MPLY, GGRV , KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + SftLck , KC_Z, KC_X, KC_C, KC_V, KC_B, KC_PGDN, KC_UP , GTAB , KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, SftEnt, + KC_DEL , KC_LGUI, KC_LCTL, KC_LALT, KC_LCTL, BSGUI, KC_LEFT, KC_DOWN, KC_RGHT, KC_SPC, MO(4) , KC_RGUI, KC_RALT, KC_RCTL, BL_STEP + ), + +// Linux/Windows Layer: essentially swaps Control and GUI + + [_PC] = LAYOUT_ortho_5x15( /* WINDOWS */ + _______, _______, _______, _______, _______, _______, _______, TO(2) , _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + NAVPC , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, ATAB , _______, _______, _______, _______, _______, _______, + _______, KC_PSCR, KC_LGUI, _______, KC_LGUI, BSCTL , _______, _______, _______, _______, _______, KC_RCTL, _______, KC_RGUI, _______ + ), + + [_GAME] = LAYOUT_ortho_5x15( /* Gaming Layer */ + _______, _______, _______, _______, _______, _______, _______, TO(0) , _______, _______, _______, _______, _______, _______, TO(3) , + KC_ESC , KC_T , KC_Q , KC_W , KC_E , KC_R , KC_F7 , KC_F8 , KC_F9 , KC_Y , KC_U , KC_I , KC_O , KC_P , _______, + KC_TAB , KC_LSFT, KC_A , KC_S , KC_D , KC_F , KC_F4 , KC_F5 , KC_F6 , KC_H , KC_J , KC_K , KC_L , KC_SCLN, _______, + KC_LALT, KC_LCTL, KC_Z , KC_X , KC_C , KC_V , KC_F1 , KC_F2 , KC_F3 , KC_N , KC_M , _______, _______, _______, KC_ENT , + _______, _______, _______, KC_G , KC_B , KC_SPC , KC_I , KC_M , ATAB , _______, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, _______ + ), + + [_QUD] = LAYOUT_ortho_5x15( /* Roguelike Layer */ + _______, _______, _______, _______, _______, _______, _______,KC_PSLS, KC_PAST, _______, _______, _______, _______, _______, TO(0), + KC_GESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_LBRC, KC_BSLS, KC_RBRC, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, + NAV , KC_A, KC_R, KC_S, KC_T, KC_D, KC_PGUP, KC_MPLY, GGRV , KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + SftLck , KC_Z, KC_X, KC_C, KC_V, KC_B, KC_PGDN, KC_UP , ATAB , KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, SftEnt , + KC_DEL , KC_LGUI, KC_LGUI, KC_LALT, KC_LCTL, TO(7), KC_LEFT, KC_DOWN, KC_RGHT, KC_SPC, MO(4) , KC_RGUI, KC_RALT, KC_RCTL, _______ + ), + +/* SYMBOL + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | F12 | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | [{ | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | }] | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | ! | @ | # | $ | % | | | | ^ | & | * | ( | ) | = | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | HOME | END | BL_OFF | BL_ON | | | | | | -_ | | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | | | | | | | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [_SYMBOL] = LAYOUT_ortho_5x15( /* SYMBOL */ + KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , _______, _______, _______, KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , + KC_LBRC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , _______, _______, _______, KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_RBRC, + _______, KC_EXLM, KC_AT , KC_HASH, KC_DLR , KC_PERC, _______, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_EQL , + _______, KC_HOME, KC_END , BL_OFF , BL_ON , KC_VOLD, _______, _______, _______, KC_VOLU, KC_MINS, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + + [_NAV] = LAYOUT_ortho_5x15( /* NAVIGATION for Mac */ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, CTAB , ALEFT , KC_UP , ARGHT , KC_DEL , _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, CTLPGUP, KC_LEFT, KC_DOWN, KC_RGHT, CTLPGDN, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, GTAB , ABSPC , KC_HOME, KC_END , GGRV , _______, + RESET , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_NAVPC] = LAYOUT_ortho_5x15( /* NAVIGATION FOR PC: replaces Alt with Control, GUI with Alt, and browser tab shortcuts*/ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, CTAB , CLEFT , KC_UP , CRGHT , KC_DEL , _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, CTLPGUP, KC_LEFT, KC_DOWN, KC_RGHT, CTLPGDN, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, ATAB , CBSPC , KC_HOME, KC_END , _______, _______, + RESET , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_NAVQUD] = LAYOUT_ortho_5x15( /* NAVIGATION for Mac */ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSLS, KC_PAST, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_KP_7, KC_KP_8, KC_KP_9, KC_PMNS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_KP_4, KC_KP_2, KC_KP_6, KC_PPLS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_KP_1, KC_KP_5, KC_KP_3, _______, _______, + _______, _______, _______, _______, _______, TO(3), _______, _______, _______, _______, KC_KP_0, KC_PDOT, _______, _______, _______ + ) +}; + +// Shift vs capslock function. From bbaserdem's Planck keymap. +void caps_tap (qk_tap_dance_state_t *state, void *user_data) { + if (state->count == 1) { + register_code (KC_LSFT); + } else if (state->count == 2) { + unregister_code (KC_LSFT); + register_code (KC_CAPS); + } +} +void caps_tap_end (qk_tap_dance_state_t *state, void *user_data) { + if (state->count == 1) { + unregister_code (KC_LSFT); + } else { + unregister_code (KC_CAPS); + } +} + +//Tap Dance Definitions +qk_tap_dance_action_t tap_dance_actions[] = { + //Tap once for Shift, twice for Caps Lock + [SFT_LCK] = ACTION_TAP_DANCE_FN_ADVANCED( caps_tap, NULL, caps_tap_end ) +}; + +/* Template for future layers + [_LAYER_NAME] = { + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, + } +}; +*/ diff --git a/keyboards/xiudi/xd75/keymaps/davidrambo/readme.md b/keyboards/xiudi/xd75/keymaps/davidrambo/readme.md new file mode 100644 index 000000000000..4199a5d807d4 --- /dev/null +++ b/keyboards/xiudi/xd75/keymaps/davidrambo/readme.md @@ -0,0 +1,8 @@ +# XD75 + +This is a Colemak layout for XD75 with both Mac and Linux/Windows layers. +These two layers share momentary toggle access to a "Symbol" layer, which is modeled after my Planck layout (see planck/keymaps/davidrambo). +Each of the base Colemak layers have their own Navigation layers for the right hand to use arrows and shortcuts for both text editing and web browsing. +It also has two layers used for games: one with a typical WASD orientation, another for playing Roguelikes that need a numpad. + +The rules.mk file overrides the XD75's "BACKLIGHT_ENABLE" with YES and also adds tap dance functionality. diff --git a/keyboards/xd75/keymaps/davidrambo/rules.mk b/keyboards/xiudi/xd75/keymaps/davidrambo/rules.mk similarity index 100% rename from keyboards/xd75/keymaps/davidrambo/rules.mk rename to keyboards/xiudi/xd75/keymaps/davidrambo/rules.mk diff --git a/keyboards/xd75/keymaps/default/keymap.c b/keyboards/xiudi/xd75/keymaps/default/keymap.c similarity index 100% rename from keyboards/xd75/keymaps/default/keymap.c rename to keyboards/xiudi/xd75/keymaps/default/keymap.c diff --git a/keyboards/xd75/keymaps/default/readme.md b/keyboards/xiudi/xd75/keymaps/default/readme.md similarity index 100% rename from keyboards/xd75/keymaps/default/readme.md rename to keyboards/xiudi/xd75/keymaps/default/readme.md diff --git a/keyboards/xd75/keymaps/developper_bepo/config.h b/keyboards/xiudi/xd75/keymaps/developper_bepo/config.h similarity index 100% rename from keyboards/xd75/keymaps/developper_bepo/config.h rename to keyboards/xiudi/xd75/keymaps/developper_bepo/config.h diff --git a/keyboards/xiudi/xd75/keymaps/developper_bepo/keymap.c b/keyboards/xiudi/xd75/keymaps/developper_bepo/keymap.c new file mode 100644 index 000000000000..121b18438eae --- /dev/null +++ b/keyboards/xiudi/xd75/keymaps/developper_bepo/keymap.c @@ -0,0 +1,72 @@ +/* Copyright 2017 Quentin Lebastard + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +#include "keymap_bepo.h" + +// Layer shorthand +#define _BP 0 +#define _FN 1 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | $ | " | { | } | ( | ) | VOL- | MUTE | VOL+ | + | - | / | * | = | % | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | TAB | B | E_ACUT | P | O | E_GRAV | | | | ^ | V | D | L | J | Z | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------| + * | ESC | A | U | I | E | , | HOME | | END | C | T | S | R | N | M | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------| + * | LSHIFT | W | Y | X | . | K | PAGE UP| | PAGE D | ? | Q | G | H | F | RSHIFT | + * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+-----------------+--------+--------| + * | LCTRL | LGUI | ALT | | _ |ENTER/FN| DEL | | BACKSP |SPACE/FN| _ | ALT | ALT | RGUI | LCTRL | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [_BP] = LAYOUT_ortho_5x15( /* BepoDev */ + BP_DLR, BP_DQUO, BP_LCBR, BP_RCBR, BP_LPRN, BP_RPRN, KC_VOLD, KC_MUTE, KC_VOLU, BP_PLUS, BP_MINS, BP_SLSH, BP_ASTR, BP_EQL, BP_PERC, + KC_TAB, BP_B, BP_EACU, BP_P, BP_O, BP_EGRV, KC_KP_7, KC_KP_8, KC_KP_9, BP_DCIR, BP_V, BP_D, BP_L, BP_J, BP_Z, + KC_ESC, BP_A, BP_U, BP_I, BP_E, BP_COMM, KC_HOME, KC_KP_5, KC_END, BP_C, BP_T, BP_S, BP_R, BP_N, BP_M, + KC_LSFT, BP_W, BP_Y, BP_X, BP_DOT, BP_K, KC_PGUP, KC_END, KC_PGDOWN, BP_QUOT, BP_Q, BP_G, BP_H, BP_F, KC_RSFT, + KC_LCTL, KC_LGUI, KC_RALT, KC_LGUI, BP_UNDS, LT(_FN,KC_ENT), KC_DEL, KC_KP_0, KC_BSPC, LT(_FN,KC_SPC), BP_UNDS, KC_RALT, KC_RALT, KC_RGUI, KC_LCTL + ), + + +/* FUNCTION + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | F1 | F2 | F3 | F4 | F5 | F6 | PREV | PAUSE | NEXT | F7 | F8 | F9 | F10 | F11 | F12 | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | \ | [ | ] | & | | | | | LEFT | DOWN | UP | RIGHT | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | | | | | | < | > | @ | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | _ | MO(_FN)| | | | | MO(_FN)| _ | | | | RESET | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + + [_FN] = LAYOUT_ortho_5x15( /* FUNCTION */ + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MPRV, KC_MPLY, KC_MNXT, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + _______, S(BP_DQUO), S(BP_LDAQ), S(BP_RDAQ), S(BP_LPRN), S(BP_RPRN), _______, _______, _______, S(BP_AT), S(BP_PLUS), S(BP_MINS), S(BP_SLSH), S(BP_ASTR), S(BP_EQL), + _______, RALT(BP_B), BP_BSLS, BP_LBRC, BP_RBRC, RALT(BP_P), _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, _______, + _______, BP_BSLS, _______, _______, _______, _______, _______, _______, _______, _______, BP_LABK, BP_RABK, BP_AT , _______, _______, + _______, _______, _______, _______, _______, LT(_FN,KC_ENT), _______, _______, _______, LT(_FN,KC_SPC), _______, _______, _______, _______, RESET + ) + +}; diff --git a/keyboards/xiudi/xd75/keymaps/developper_bepo/readme.md b/keyboards/xiudi/xd75/keymaps/developper_bepo/readme.md new file mode 100644 index 000000000000..82172ff98161 --- /dev/null +++ b/keyboards/xiudi/xd75/keymaps/developper_bepo/readme.md @@ -0,0 +1,13 @@ +# developper_bepo Custom Keyboard + +Layout for Bépo Software development + +* Improved access to frequently used keys in software development +* Modified layout for english input +* Easy access to layers with space and enter key + +Keyboard maintainer: [Quentin Lebastard](https://github.com/lebastaq) + +Make example for this keyboard (after setting up your build environment): + + make xiudi/xd75:developper_bepo diff --git a/keyboards/xd75/keymaps/developper_bepo/rules.mk b/keyboards/xiudi/xd75/keymaps/developper_bepo/rules.mk similarity index 100% rename from keyboards/xd75/keymaps/developper_bepo/rules.mk rename to keyboards/xiudi/xd75/keymaps/developper_bepo/rules.mk diff --git a/keyboards/xd75/keymaps/dyn_macro_tap_dance/config.h b/keyboards/xiudi/xd75/keymaps/dyn_macro_tap_dance/config.h similarity index 100% rename from keyboards/xd75/keymaps/dyn_macro_tap_dance/config.h rename to keyboards/xiudi/xd75/keymaps/dyn_macro_tap_dance/config.h diff --git a/keyboards/xd75/keymaps/dyn_macro_tap_dance/keymap.c b/keyboards/xiudi/xd75/keymaps/dyn_macro_tap_dance/keymap.c similarity index 100% rename from keyboards/xd75/keymaps/dyn_macro_tap_dance/keymap.c rename to keyboards/xiudi/xd75/keymaps/dyn_macro_tap_dance/keymap.c diff --git a/keyboards/xd75/keymaps/dyn_macro_tap_dance/readme.md b/keyboards/xiudi/xd75/keymaps/dyn_macro_tap_dance/readme.md similarity index 100% rename from keyboards/xd75/keymaps/dyn_macro_tap_dance/readme.md rename to keyboards/xiudi/xd75/keymaps/dyn_macro_tap_dance/readme.md diff --git a/keyboards/xd75/keymaps/dyn_macro_tap_dance/rules.mk b/keyboards/xiudi/xd75/keymaps/dyn_macro_tap_dance/rules.mk similarity index 100% rename from keyboards/xd75/keymaps/dyn_macro_tap_dance/rules.mk rename to keyboards/xiudi/xd75/keymaps/dyn_macro_tap_dance/rules.mk diff --git a/keyboards/xd75/keymaps/emilyh/config.h b/keyboards/xiudi/xd75/keymaps/emilyh/config.h similarity index 100% rename from keyboards/xd75/keymaps/emilyh/config.h rename to keyboards/xiudi/xd75/keymaps/emilyh/config.h diff --git a/keyboards/xd75/keymaps/emilyh/keymap.c b/keyboards/xiudi/xd75/keymaps/emilyh/keymap.c similarity index 100% rename from keyboards/xd75/keymaps/emilyh/keymap.c rename to keyboards/xiudi/xd75/keymaps/emilyh/keymap.c diff --git a/keyboards/xd75/keymaps/emilyh/readme.md b/keyboards/xiudi/xd75/keymaps/emilyh/readme.md similarity index 100% rename from keyboards/xd75/keymaps/emilyh/readme.md rename to keyboards/xiudi/xd75/keymaps/emilyh/readme.md diff --git a/keyboards/xd75/keymaps/emilyh/rules.mk b/keyboards/xiudi/xd75/keymaps/emilyh/rules.mk similarity index 100% rename from keyboards/xd75/keymaps/emilyh/rules.mk rename to keyboards/xiudi/xd75/keymaps/emilyh/rules.mk diff --git a/keyboards/xd75/keymaps/ericgebhart/config.h b/keyboards/xiudi/xd75/keymaps/ericgebhart/config.h similarity index 100% rename from keyboards/xd75/keymaps/ericgebhart/config.h rename to keyboards/xiudi/xd75/keymaps/ericgebhart/config.h diff --git a/keyboards/xd75/keymaps/ericgebhart/keymap.c b/keyboards/xiudi/xd75/keymaps/ericgebhart/keymap.c similarity index 100% rename from keyboards/xd75/keymaps/ericgebhart/keymap.c rename to keyboards/xiudi/xd75/keymaps/ericgebhart/keymap.c diff --git a/keyboards/xd75/keymaps/ericgebhart/readme.md b/keyboards/xiudi/xd75/keymaps/ericgebhart/readme.md similarity index 100% rename from keyboards/xd75/keymaps/ericgebhart/readme.md rename to keyboards/xiudi/xd75/keymaps/ericgebhart/readme.md diff --git a/keyboards/xd75/keymaps/ericgebhart/rules.mk b/keyboards/xiudi/xd75/keymaps/ericgebhart/rules.mk similarity index 100% rename from keyboards/xd75/keymaps/ericgebhart/rules.mk rename to keyboards/xiudi/xd75/keymaps/ericgebhart/rules.mk diff --git a/keyboards/xd75/keymaps/fabian/config.h b/keyboards/xiudi/xd75/keymaps/fabian/config.h similarity index 100% rename from keyboards/xd75/keymaps/fabian/config.h rename to keyboards/xiudi/xd75/keymaps/fabian/config.h diff --git a/keyboards/xd75/keymaps/fabian/keymap.c b/keyboards/xiudi/xd75/keymaps/fabian/keymap.c similarity index 100% rename from keyboards/xd75/keymaps/fabian/keymap.c rename to keyboards/xiudi/xd75/keymaps/fabian/keymap.c diff --git a/keyboards/xiudi/xd75/keymaps/fabian/rules.mk b/keyboards/xiudi/xd75/keymaps/fabian/rules.mk new file mode 100644 index 000000000000..a494cc8a8e1f --- /dev/null +++ b/keyboards/xiudi/xd75/keymaps/fabian/rules.mk @@ -0,0 +1,34 @@ +# Copyright 2013 Jun Wako +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +# QMK Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = yes # 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 +MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config) +AUDIO_ENABLE = no # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + diff --git a/keyboards/xd75/keymaps/french/config.h b/keyboards/xiudi/xd75/keymaps/french/config.h similarity index 100% rename from keyboards/xd75/keymaps/french/config.h rename to keyboards/xiudi/xd75/keymaps/french/config.h diff --git a/keyboards/xiudi/xd75/keymaps/french/keymap.c b/keyboards/xiudi/xd75/keymaps/french/keymap.c new file mode 100644 index 000000000000..8d5d2b634f6b --- /dev/null +++ b/keyboards/xiudi/xd75/keymaps/french/keymap.c @@ -0,0 +1,56 @@ +#include "keymap_french.c" +#include QMK_KEYBOARD_H + + +// Layer shorthand +#define _AZ 0 +#define _FN 1 + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* AZERTY + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | ESC | & | é | " | ' | ( | - | è | _ | ç | à | ) | = | INSERT | BACKSP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | TAB | a | z | e | r | t | y | u | i | o | p | ^ | $ | ENTER | PG UP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------| + * | CAP LK | q | s | d | f | g | h | j | k | l | m | ù | * | ENTER | PG DN | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------| + * | LSHIFT | w | x | c | v | b | n | , | ; | : | ! | < | LSHIFT | UP | DEL | + * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+-----------------+--------+--------| + * | LCTRL | CMD | ALT | FN | SPACE | SPACE | SPACE | SPACE | ALGR | MENU | HOME | END | LEFT | DOWN | RIGHT | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [_AZ] = LAYOUT_ortho_5x15( /* AZERTY */ + FR_ESC, FR_AMPR, FR_EACU, FR_DQUO, FR_QUOT, FR_LPAR, FR_MINS, FR_EGRV, FR_UNDS, FR_CCED, FR_AGRV, FR_RPAR, FR_EQUA, FR_INST, FR_BSPC, + FR_TAB, FR_A, FR_Z, FR_E, FR_R, FR_T, FR_Y, FR_U, FR_I, FR_O, FR_P, FR_HAT, FR_DLR, FR_ENTR, FR_PGUP, + FR_CAPL, FR_Q, FR_S, FR_D, FR_F, FR_G, FR_H, FR_J, FR_K, FR_L, FR_M, FR_UGRV, FR_AST, FR_ENTR, FR_PGDN, + FR_LSFT, FR_W, FR_X, FR_C, FR_V, FR_B, FR_N, FR_COMM, FR_SCLN, FR_COLN, FR_EXCL, FR_LABK, FR_RSFT, FR_UP, FR_DEL, + FR_LCTR, FR_LCMD, FR_LALT, MO(_FN), FR_SPAC, FR_SPAC, FR_SPAC, FR_SPAC, FR_ALGR, FR_MENU, FR_HOME, FR_END, FR_LEFT, FR_DOWN, FR_RIGT + ), + + +/* FUNCTION + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | PRINT | LED | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | PREV | PLAY | NEXT | | | | | NUM LCK| 7 | 8 | 9 | * | | LED+ | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | VOL- | MUTE | VOL+ | | | | | | 4 | 5 | 6 | - | | LED- | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | | | | | 1 | 2 | 3 | + | | LEDMAX | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | RESET | | | FN | | | | | | | 0 | . | PENT | | LEDLVL | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [_FN] = LAYOUT_ortho_5x15( /* FUNCTION */ + FR_EMPT, FR_F1, FR_F2, FR_F3, FR_F4, FR_F5, FR_F6, FR_F7, FR_F8, FR_F9, FR_F10, FR_F11, FR_F12, FR_PSCR, BL_TOGG, + FR_EMPT, FR_MPRV, FR_MPLY, FR_MNXT, FR_EMPT, FR_EMPT, FR_EMPT, FR_EMPT, FR_NUML, FR_7, FR_8, FR_9, FR_MULT, FR_EMPT, BL_INC, + FR_EMPT, FR_MVDN, FR_MUTE, FR_MVUP, FR_EMPT, FR_EMPT, FR_EMPT, FR_EMPT, FR_EMPT, FR_4, FR_5, FR_6, FR_MOIN, FR_EMPT, BL_DEC, + FR_EMPT, FR_EMPT, FR_EMPT, FR_EMPT, FR_EMPT, FR_EMPT, FR_EMPT, FR_EMPT, FR_EMPT, FR_1, FR_2, FR_3, FR_PLUS, FR_EMPT, BL_ON, + RESET, FR_EMPT, FR_EMPT, FR_TRANS, FR_EMPT, FR_EMPT, FR_EMPT, FR_EMPT, FR_EMPT, FR_EMPT, FR_0, FR_DOT, FR_ENTK, FR_EMPT, BL_STEP + ) +}; diff --git a/keyboards/xd75/keymaps/french/keymap_french.c b/keyboards/xiudi/xd75/keymaps/french/keymap_french.c similarity index 97% rename from keyboards/xd75/keymaps/french/keymap_french.c rename to keyboards/xiudi/xd75/keymaps/french/keymap_french.c index f7d068c33e9e..c3461383818f 100644 --- a/keyboards/xd75/keymaps/french/keymap_french.c +++ b/keyboards/xiudi/xd75/keymaps/french/keymap_french.c @@ -28,10 +28,10 @@ enum french_key { FR_X, FR_Y, FR_W, - FR_AMP, + FR_AMPR, FR_EACU, - FR_QUOT, /* 0x20 */ - FR_APOS, + FR_DQUO, /* 0x20 */ + FR_QUOT, FR_LPAR, FR_MINS, FR_EGRV, @@ -94,7 +94,7 @@ enum french_key { FR_9, FR_0, FR_DOT, - FR_LESS, + FR_LABK, FR_EQ =0x67 /* END KEYPAD */, FR_F13, FR_F14, diff --git a/keyboards/xiudi/xd75/keymaps/french/readme.md b/keyboards/xiudi/xd75/keymaps/french/readme.md new file mode 100644 index 000000000000..a45bf248dab4 --- /dev/null +++ b/keyboards/xiudi/xd75/keymaps/french/readme.md @@ -0,0 +1,20 @@ +# Clavier AZERTY français + +![Disposition Clavier](https://i.imgur.com/tH9TVBc.png) + + +# Configuration du clavier + +Ce clavier AZERTY est basé sur le fichier keymap_french.c de correspondance QWERTY - AZERTY. + +Ce fichier est composé de trois énumérations (layout français, touches de contrôle, touches multimédias) correspondant aux keycodes sous la forme d'hexa. + +Il peut être utilisé pour toute autre configuration de clavier juste en incluant ce fichier dans son propre keymap.c. + +La touche de fonction permet elle d'avoir accès aux différentes touches multimédias ainsi qu'au pavé numérique. Mais aussi si le clavier est équipé de led, à différents modes d'éclairage. + +# Compilation + +``` +make xiudi/xd75:french:dfu +``` diff --git a/keyboards/xd75/keymaps/french/rules.mk b/keyboards/xiudi/xd75/keymaps/french/rules.mk similarity index 100% rename from keyboards/xd75/keymaps/french/rules.mk rename to keyboards/xiudi/xd75/keymaps/french/rules.mk diff --git a/keyboards/xiudi/xd75/keymaps/germanized/config.h b/keyboards/xiudi/xd75/keymaps/germanized/config.h new file mode 100644 index 000000000000..d8c8f2d50251 --- /dev/null +++ b/keyboards/xiudi/xd75/keymaps/germanized/config.h @@ -0,0 +1,117 @@ +/* Copyright 2018 Kolja Brauns + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +// place overrides here + +//Tap-Toggle +#define TAPPING_TOGGLE 3 + +//Tap Dancing +#define TAPPING_TERM 200 + +// normal characters +#define DE_Z KC_Y +#define DE_Y KC_Z + +#define DE_A KC_A +#define DE_B KC_B +#define DE_C KC_C +#define DE_D KC_D +#define DE_E KC_E +#define DE_F KC_F +#define DE_G KC_G +#define DE_H KC_H +#define DE_I KC_I +#define DE_J KC_J +#define DE_K KC_K +#define DE_L KC_L +#define DE_M KC_M +#define DE_N KC_N +#define DE_O KC_O +#define DE_P KC_P +#define DE_Q KC_Q +#define DE_R KC_R +#define DE_S KC_S +#define DE_T KC_T +#define DE_U KC_U +#define DE_V KC_V +#define DE_W KC_W +#define DE_X KC_X + +#define DE_0 KC_0 +#define DE_1 KC_1 +#define DE_2 KC_2 +#define DE_3 KC_3 +#define DE_4 KC_4 +#define DE_5 KC_5 +#define DE_6 KC_6 +#define DE_7 KC_7 +#define DE_8 KC_8 +#define DE_9 KC_9 + +#define DE_DOT KC_DOT +#define DE_COMM KC_COMM + +#define DE_SS KC_MINS +#define DE_ADIA KC_QUOT +#define DE_UDIA KC_LBRC +#define DE_ODIA KC_SCLN + +#define DE_CIRC KC_GRAVE // accent circumflex ^ and ring ° +#define DE_ACUT KC_EQL // accent acute ´ and grave ` +#define DE_PLUS KC_RBRC // + and * and ~ +#define DE_HASH KC_BSLS // # and ' +#define DE_LABK KC_NUBS // < and > and | +#define DE_MINS KC_SLSH // - and _ + +// shifted characters +#define DE_DEG LSFT(DE_CIRC) // ° +#define DE_EXLM LSFT(KC_1) // ! +#define DE_DQUO LSFT(KC_2) // " +#define DE_SECT LSFT(KC_3) // § +#define DE_DLR LSFT(KC_4) // $ +#define DE_PERC LSFT(KC_5) // % +#define DE_AMPR LSFT(KC_6) // & +#define DE_SLSH LSFT(KC_7) // / +#define DE_LPRN LSFT(KC_8) // ( +#define DE_RPRN LSFT(KC_9) // ) +#define DE_EQL LSFT(KC_0) // = +#define DE_QUES LSFT(DE_SS) // ? +#define DE_GRV LSFT(DE_ACUT) // ` +#define DE_ASTR LSFT(DE_PLUS) // * +#define DE_QUOT LSFT(DE_HASH) // ' +#define DE_RABK LSFT(DE_LABK) // > +#define DE_COLN LSFT(KC_DOT) // : +#define DE_SCLN LSFT(KC_COMM) // ; +#define DE_UNDS LSFT(DE_MINS) // _ + +// Alt Gr-ed characters +#define DE_SUP2 ALGR(KC_2) // ² +#define DE_SUP3 ALGR(KC_3) // ³ +#define DE_LCBR ALGR(KC_7) // { +#define DE_LBRC ALGR(KC_8) // [ +#define DE_RBRC ALGR(KC_9) // ] +#define DE_RCBR ALGR(KC_0) // } +#define DE_BSLS ALGR(DE_SS) // backslash +#define DE_AT ALGR(KC_Q) // @ +#define DE_EURO ALGR(KC_E) // € +#define DE_TILD ALGR(DE_PLUS) // ~ +#define DE_PIPE ALGR(DE_LABK) // | + +// Launchy +#define ALT_SPC LALT(KC_SPC) diff --git a/keyboards/xiudi/xd75/keymaps/germanized/keymap.c b/keyboards/xiudi/xd75/keymaps/germanized/keymap.c new file mode 100644 index 000000000000..3b00a4b67075 --- /dev/null +++ b/keyboards/xiudi/xd75/keymaps/germanized/keymap.c @@ -0,0 +1,86 @@ +/* Copyright 2017 Kolja Brauns +*/ +#include QMK_KEYBOARD_H + +#ifndef KEYMAP_GERMAN +#define KEYMAP_GERMAN + +#include "keymap.h" + +#endif + +//Tap Dance Declarations +enum { + TD_ESC_RUPT = 0 +}; + +enum { + TD_TAB = 1 +}; + +//Tap Dance Definitions +qk_tap_dance_action_t tap_dance_actions[] = { + //Tap once for Esc, twice Ctrl+Alt+Del + [TD_ESC_RUPT] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, LALT(LCTL(KC_DEL))), + [TD_TAB] = ACTION_TAP_DANCE_DOUBLE(KC_LCTL, LGUI(KC_TAB)) +// Other declarations would go here, separated by commas, if you have them +}; + +//In Layer declaration, add tap dance item in place of a key code + + +// Layer shorthand +#define _QWZ 0 +#define _FNC 1 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + + /* QWZ + * .-----------------------------------------------------------------------------------------------------------------------. + * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | ß | ´ | BckSpc| Esc | + * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| + * | Tab | Q | W | E | R | T | Z | U | I | O | P | Ü | + | | PgUp | + * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| Enter |-------| + * | Ctrl/ | A | S | D | F | G | H | J | K | L | Ö | Ä | # | | PgDn | + * | GUITab| | | | | | | | | | | | | | | + * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| + * | LShift| Y | X | C | V | B | N | M | , | . | - | ^ | Home/ | Up | End | + * | | | | | | | | | | | | | RShift| | | + * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| + * | LCtrl | LAlt | MO(1)/| Space | Backspace | MO(1)/|AltGr/ | Win | < | Del | Left | Down | Right | + * | | | Enter | | | TO(1) |Pause | | | | | | | + * °-----------------------------------------------------------------------------------------------------------------------° + */ + + [_QWZ] = LAYOUT_ortho_5x15( + TD(TD_ESC_RUPT), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, DE_SS, DE_ACUT, KC_BSPC, KC_ESC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, DE_Z, KC_U, KC_I, KC_O, KC_P, DE_UDIA, DE_PLUS, KC_NO, KC_PGUP, + TD(TD_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, DE_ODIA, DE_ADIA, DE_HASH, KC_ENT, KC_PGDN, + KC_LSFT, DE_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, DE_MINS, DE_CIRC, MT(MOD_RSFT, KC_HOME), KC_UP, KC_END, + KC_LCTL, KC_LALT, LT(1, KC_ENT), KC_SPC, KC_NO, KC_BSPC, KC_NO, TT(1), MT(MOD_RALT, KC_PAUS), KC_RGUI, DE_LABK, KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + /* FNC + * .-----------------------------------------------------------------------------------------------------------------------. + * | Reset | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | _____ | _____ | + * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| + * | _____ | _____ | _____ |Bright+| _____ | _____ | _____ | _____ | _____ | Up | PrtSc | _____ | _____ | _____ | _____ | + * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| + * | _____ | _____ | _____ |RGB Tog|RGB Mod| _____ | _____ | _____ | Left | Down | Right | _____ | _____ | Play | _____ | + * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| + * | CpsLck| _____ | _____ |Bright-| _____ | _____ | _____ | _____ | _____ | _____ | _____ | _____ | _____ | VolUp | Mute | + * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------| + * | TO(0) | _____ | _____ | _____ | _____ | _____ | _____ | _____ | _____ | _____ | _____ | _____ | Prev | VolDn | Next | + * °-----------------------------------------------------------------------------------------------------------------------° +*/ + [_FNC] = LAYOUT_ortho_5x15( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_PSCR, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS, + KC_CAPS, KC_TRNS, KC_TRNS, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MUTE, + TO(0), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT + ) + +}; + diff --git a/keyboards/xd75/keymaps/germanized/readme.md b/keyboards/xiudi/xd75/keymaps/germanized/readme.md similarity index 100% rename from keyboards/xd75/keymaps/germanized/readme.md rename to keyboards/xiudi/xd75/keymaps/germanized/readme.md diff --git a/keyboards/xiudi/xd75/keymaps/germanized/rules.mk b/keyboards/xiudi/xd75/keymaps/germanized/rules.mk new file mode 100644 index 000000000000..0b95ead09adb --- /dev/null +++ b/keyboards/xiudi/xd75/keymaps/germanized/rules.mk @@ -0,0 +1,35 @@ +# Copyright 2013 Jun Wako +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +# QMK Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = yes # 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 +MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config) +AUDIO_ENABLE = no # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +TAP_DANCE_ENABLE = yes # Enable Tap Dancing + diff --git a/keyboards/xd75/keymaps/hybrid/config.h b/keyboards/xiudi/xd75/keymaps/hybrid/config.h similarity index 100% rename from keyboards/xd75/keymaps/hybrid/config.h rename to keyboards/xiudi/xd75/keymaps/hybrid/config.h diff --git a/keyboards/xd75/keymaps/hybrid/keymap.c b/keyboards/xiudi/xd75/keymaps/hybrid/keymap.c similarity index 100% rename from keyboards/xd75/keymaps/hybrid/keymap.c rename to keyboards/xiudi/xd75/keymaps/hybrid/keymap.c diff --git a/keyboards/xd75/keymaps/hybrid/readme.md b/keyboards/xiudi/xd75/keymaps/hybrid/readme.md similarity index 100% rename from keyboards/xd75/keymaps/hybrid/readme.md rename to keyboards/xiudi/xd75/keymaps/hybrid/readme.md diff --git a/keyboards/xd75/keymaps/hybrid/rules.mk b/keyboards/xiudi/xd75/keymaps/hybrid/rules.mk similarity index 100% rename from keyboards/xd75/keymaps/hybrid/rules.mk rename to keyboards/xiudi/xd75/keymaps/hybrid/rules.mk diff --git a/keyboards/xd75/keymaps/jarred/keymap.c b/keyboards/xiudi/xd75/keymaps/jarred/keymap.c similarity index 100% rename from keyboards/xd75/keymaps/jarred/keymap.c rename to keyboards/xiudi/xd75/keymaps/jarred/keymap.c diff --git a/keyboards/xd75/keymaps/jarred/readme.md b/keyboards/xiudi/xd75/keymaps/jarred/readme.md similarity index 100% rename from keyboards/xd75/keymaps/jarred/readme.md rename to keyboards/xiudi/xd75/keymaps/jarred/readme.md diff --git a/keyboards/xd75/keymaps/kim-kim-xd73/config.h b/keyboards/xiudi/xd75/keymaps/kim-kim-xd73/config.h similarity index 100% rename from keyboards/xd75/keymaps/kim-kim-xd73/config.h rename to keyboards/xiudi/xd75/keymaps/kim-kim-xd73/config.h diff --git a/keyboards/xd75/keymaps/kim-kim-xd73/keymap.c b/keyboards/xiudi/xd75/keymaps/kim-kim-xd73/keymap.c similarity index 100% rename from keyboards/xd75/keymaps/kim-kim-xd73/keymap.c rename to keyboards/xiudi/xd75/keymaps/kim-kim-xd73/keymap.c diff --git a/keyboards/xd75/keymaps/kim-kim-xd73/rules.mk b/keyboards/xiudi/xd75/keymaps/kim-kim-xd73/rules.mk similarity index 100% rename from keyboards/xd75/keymaps/kim-kim-xd73/rules.mk rename to keyboards/xiudi/xd75/keymaps/kim-kim-xd73/rules.mk diff --git a/keyboards/xd75/keymaps/kim-kim/config.h b/keyboards/xiudi/xd75/keymaps/kim-kim/config.h similarity index 100% rename from keyboards/xd75/keymaps/kim-kim/config.h rename to keyboards/xiudi/xd75/keymaps/kim-kim/config.h diff --git a/keyboards/xd75/keymaps/kim-kim/keymap.c b/keyboards/xiudi/xd75/keymaps/kim-kim/keymap.c similarity index 100% rename from keyboards/xd75/keymaps/kim-kim/keymap.c rename to keyboards/xiudi/xd75/keymaps/kim-kim/keymap.c diff --git a/keyboards/xd75/keymaps/kim-kim/rules.mk b/keyboards/xiudi/xd75/keymaps/kim-kim/rules.mk similarity index 100% rename from keyboards/xd75/keymaps/kim-kim/rules.mk rename to keyboards/xiudi/xd75/keymaps/kim-kim/rules.mk diff --git a/keyboards/xd75/keymaps/kloki/config.h b/keyboards/xiudi/xd75/keymaps/kloki/config.h similarity index 100% rename from keyboards/xd75/keymaps/kloki/config.h rename to keyboards/xiudi/xd75/keymaps/kloki/config.h diff --git a/keyboards/xd75/keymaps/kloki/keymap.c b/keyboards/xiudi/xd75/keymaps/kloki/keymap.c similarity index 100% rename from keyboards/xd75/keymaps/kloki/keymap.c rename to keyboards/xiudi/xd75/keymaps/kloki/keymap.c diff --git a/keyboards/xd75/keymaps/kloki/readme.md b/keyboards/xiudi/xd75/keymaps/kloki/readme.md similarity index 100% rename from keyboards/xd75/keymaps/kloki/readme.md rename to keyboards/xiudi/xd75/keymaps/kloki/readme.md diff --git a/keyboards/xd75/keymaps/kloki/rules.mk b/keyboards/xiudi/xd75/keymaps/kloki/rules.mk similarity index 100% rename from keyboards/xd75/keymaps/kloki/rules.mk rename to keyboards/xiudi/xd75/keymaps/kloki/rules.mk diff --git a/keyboards/xd75/keymaps/markus/config.h b/keyboards/xiudi/xd75/keymaps/markus/config.h similarity index 100% rename from keyboards/xd75/keymaps/markus/config.h rename to keyboards/xiudi/xd75/keymaps/markus/config.h diff --git a/keyboards/xiudi/xd75/keymaps/markus/keymap.c b/keyboards/xiudi/xd75/keymaps/markus/keymap.c new file mode 100644 index 000000000000..ddef0e59b839 --- /dev/null +++ b/keyboards/xiudi/xd75/keymaps/markus/keymap.c @@ -0,0 +1,215 @@ +/* Copyright 2019 Markus Weimar + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +#include "keymap_german.h" + +#define ________ KC_TRNS +#define ___xx___ KC_NO + +enum my_layers { + _QWZ, + _QWY, + _GAM, + _FN1, + _FN2, + _FN3, +}; + +enum my_keycodes { + QWERTZ = SAFE_RANGE, + QWERTY, + GAMING, + FN1, + FN2, + FN3 +}; + +enum my_ucis { + UNI_LNX, + UNI_MAC, + UNI_WIN, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* QWERTZ + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | 1 ! | 2 " | 3 § | 4 $ | 5 % | 6 & | Mute | Vol- | Vol+ | 7 / | 8 ( | 9 ) | 0 = | ẞ ? | Ü | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | Esc | Q | W | E | R | T | Home | Play | End | Z | U | I | O | P | Ä | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | LShift | A | S | D | F | G | Pg Up | Up | Pg Dn | H | J | K | L | Ö | RShift | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | LCtrl | Y | X | C | V | B | Left | Down | Right | N | M | , ; | . : | - _ | RCtrl | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | Caps | Fn3 | LGUI | LAlt | Fn2 | Fn1 | Tab | Del | Enter | Space | Bksp | LAlt | LGUI | Fn3 | Ins | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ +[_QWZ] = LAYOUT_ortho_5x15( +DE_1, DE_2, DE_3, DE_4, DE_5, DE_6, KC_MUTE, KC_VOLD, KC_VOLU, DE_7, DE_8, DE_9, DE_0, DE_SS, DE_UDIA, +KC_ESC, DE_Q, DE_W, DE_E, DE_R, DE_T, KC_HOME, KC_MPLY, KC_END, DE_Z, DE_U, DE_I, DE_O, DE_P, DE_ADIA, +KC_LSFT, DE_A, DE_S, DE_D, DE_F, DE_G, KC_PGUP, KC_UP, KC_PGDN, DE_H, DE_J, DE_K, DE_L, DE_ODIA, KC_RSFT, +KC_LCTL, DE_Y, DE_X, DE_C, DE_V, DE_B, KC_LEFT, KC_DOWN, KC_RIGHT, DE_N, DE_M, DE_COMM, DE_DOT, DE_MINS, KC_RCTL, +KC_CAPS, MO(_FN3), KC_LGUI, KC_LALT, MO(_FN2), MO(_FN1), KC_TAB, KC_DEL, KC_ENT, KC_SPC, KC_BSPC, KC_LALT, KC_LGUI, MO(_FN3), KC_INS +), + +/* QWERTY + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | | | | | Y | | | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | | | | | | | | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | Z | | | | | | | | | | | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | | | | | | | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ +[_QWY] = LAYOUT_ortho_5x15( +DE_1, DE_2, DE_3, DE_4, DE_5, DE_6, KC_MUTE, KC_VOLD, KC_VOLU, DE_7, DE_8, DE_9, DE_0, DE_SS, DE_UDIA, +KC_ESC, DE_Q, DE_W, DE_E, DE_R, DE_T, KC_HOME, KC_MPLY, KC_END, DE_Y, DE_U, DE_I, DE_O, DE_P, DE_ADIA, +KC_LSFT, DE_A, DE_S, DE_D, DE_F, DE_G, KC_PGUP, KC_UP, KC_PGDN, DE_H, DE_J, DE_K, DE_L, DE_ODIA, KC_RSFT, +KC_LCTL, DE_Z, DE_X, DE_C, DE_V, DE_B, KC_LEFT, KC_DOWN, KC_RIGHT, DE_N, DE_M, DE_COMM, DE_DOT, DE_MINS, KC_RCTL, +KC_CAPS, MO(_FN3), KC_LGUI, KC_LALT, MO(_FN2), MO(_FN1), KC_TAB, KC_DEL, KC_ENT, KC_SPC, KC_BSPC, KC_LALT, KC_LGUI, MO(_FN3), KC_INS +), + +/* GAMING + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | | | | | Y | | | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | | | | | | | | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | Z | | | | | | | | | | | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | Fn2 | | | | Space | | | | | | | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ +[_GAM] = LAYOUT_ortho_5x15( +DE_1, DE_2, DE_3, DE_4, DE_5, DE_6, KC_MUTE, KC_VOLD, KC_VOLU, DE_7, DE_8, DE_9, DE_0, DE_SS, DE_UDIA, +KC_ESC, DE_Q, DE_W, DE_E, DE_R, DE_T, KC_HOME, KC_MPLY, KC_END, DE_Y, DE_U, DE_I, DE_O, DE_P, DE_ADIA, +KC_LSFT, DE_A, DE_S, DE_D, DE_F, DE_G, KC_PGUP, KC_UP, KC_PGDN, DE_H, DE_J, DE_K, DE_L, DE_ODIA, KC_RSFT, +KC_LCTL, DE_Z, DE_X, DE_C, DE_V, DE_B, KC_LEFT, KC_DOWN, KC_RIGHT, DE_N, DE_M, DE_COMM, DE_DOT, DE_MINS, KC_RCTL, +MO(_FN2), MO(_FN3), KC_LGUI, KC_LALT, KC_SPC, MO(_FN1), KC_TAB, KC_DEL, KC_ENT, KC_SPC, KC_BSPC, KC_LALT, KC_LGUI, MO(_FN3), KC_INS +), + +/* FN1 + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | F1 | F2 | F3 | F4 | F5 | F6 | Prev | Play | Next | F7 | F8 | F9 | F10 | F11 | F12 | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | @ | ~ | € | ´ | ` | | | | \ | { | } | + | * | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | " | ' | ‚ | ‘ | ’ | | | | | | [ | ] | ! | ? | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | ° | ^ | „ | “ | ” | | | | # | < | > | … | – EN | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | | | | | | | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ +[_FN1] = LAYOUT_ortho_5x15( +KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MPRV, KC_MPLY, KC_MNXT, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, +________, DE_AT, DE_TILD, DE_EURO, DE_ACUT, DE_GRV, ________, ___xx___, ________, DE_BSLS, DE_LCBR, DE_RCBR, DE_PLUS, DE_ASTR, ___xx___, +________, DE_DQUO, DE_QUOT, UC(L'‚'), UC(L'‘'), UC(L'’'), ________, ________, ________, DE_PIPE, DE_LBRC, DE_RBRC, DE_EXLM, DE_QUES, ________, +________, DE_DEG, DE_CIRC, UC(L'„'), UC(L'“'), UC(L'”'), ________, ________, ________, DE_HASH, DE_LABK, DE_RABK, UC(L'…'), UC(L'–'), ________, +___xx___, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________, ________ +), + +/* FN2 + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | | | | | % | ( | ) | P/ | P* | P- | Print | Scroll | Pause | ẞ | − MNS | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | Mute | Vol- | Vol+ | Bspc | P7 | P8 | P9 | P+ | WH_U | MS_U | WH_D | × | ÷ | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | App | ACL2 | ACL1 | ACL0 | Space | P4 | P5 | P6 | WH_L | MS_L | MS_D | MS_R | WH_R | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | Prev | Play | Next | Tab | P1 | P2 | P3 | PEnter | BTN1 | BTN2 | BTN3 | — EM | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | Fn2 | | | | | PEnter | P0 | . : | P, | BTN1 | BTN2 | BTN3 | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ +[_FN2] = LAYOUT_ortho_5x15( +___xx___, ___xx___, ___xx___, ___xx___, DE_PERC, DE_LPRN, DE_RPRN, KC_PSLS, KC_PAST, KC_PMNS, KC_PSCR, KC_LSCR, KC_PAUS, UC(L'ẞ'), UC(L'−'), +________, ___xx___, KC_MUTE, KC_VOLD, KC_VOLU, KC_BSPC, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_WH_U, KC_MS_U, KC_WH_D, UC(L'×'), UC(L'÷'), +________, KC_APP, KC_ACL2, KC_ACL1, KC_ACL0, KC_SPC, KC_P4, KC_P5, KC_P6, KC_WH_L, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_R, ________, +________, ___xx___, KC_MPRV, KC_MPLY, KC_MNXT, KC_TAB, KC_P1, KC_P2, KC_P3, KC_PENT, KC_BTN1, KC_BTN2, KC_BTN3, UC(L'—'), ________, +MO(_FN2), ________, ________, ________, ________, KC_PENT, KC_P0, DE_DOT, KC_PDOT, KC_BTN1, KC_BTN2, KC_BTN3, ________, ________, ________ +), + +/* FN3 + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | F13 | F14 | F15 | F16 | F17 | F18 | U LNX | U WIN | U MAC | F19 | F20 | F21 | F22 | F23 | F24 | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | QWERTZ | QWERTY | GAMING | | | L TOG | L MP | L MOD | | Pg Up | Up | Pg Dn | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | › | ‹ | | L HUI | L SAI | L VAI | Home | Left | Down | Right | End | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | » | « | | L HUD | L SAD | L VAD | NumSp | ThinSp | NaNbSp | NbSp | NbHyph | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | | | Reset | | | | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ +[_FN3] = LAYOUT_ortho_5x15( +KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, UNI_LNX, UNI_WIN, UNI_MAC, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, +________, QWERTZ, QWERTY, GAMING, ___xx___, ___xx___, RGB_TOG, RGB_M_P, RGB_MOD, ___xx___, KC_PGUP, KC_UP, KC_PGDN, ___xx___, ___xx___, +________, ___xx___, ___xx___, UC(L'›'), UC(L'‹'), ___xx___, RGB_HUI, RGB_SAI, RGB_VAI, KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT, KC_END, ________, +________, ___xx___, ___xx___, UC(L'»'), UC(L'«'), ___xx___, RGB_HUD, RGB_SAD, RGB_VAD, UC(L' '), UC(L' '), UC(L' '), UC(L' '), UC(L'‑'), ________, +___xx___, ________, ________, ________, ________, ________, ________, RESET, ________, ________, ________, ________, ________, ________, ________ +) + +}; + +void matrix_init_user(){ + set_unicode_input_mode(UC_LNX); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch(keycode) { + case QWERTZ: + if (record->event.pressed) { + set_single_persistent_default_layer(_QWZ); + } + return false; + break; + case QWERTY: + if (record->event.pressed) { + set_single_persistent_default_layer(_QWY); + } + return false; + break; + case GAMING: + if (record->event.pressed) { + set_single_persistent_default_layer(_GAM); + } + return false; + break; + case UNI_LNX: + set_unicode_input_mode(UC_LNX); + return false; + break; + case UNI_WIN: + set_unicode_input_mode(UC_WINC); + return false; + break; + case UNI_MAC: + set_unicode_input_mode(UC_OSX); + return false; + break; + } + return true; +} diff --git a/keyboards/xd75/keymaps/markus/readme.md b/keyboards/xiudi/xd75/keymaps/markus/readme.md similarity index 100% rename from keyboards/xd75/keymaps/markus/readme.md rename to keyboards/xiudi/xd75/keymaps/markus/readme.md diff --git a/keyboards/xiudi/xd75/keymaps/markus/rules.mk b/keyboards/xiudi/xd75/keymaps/markus/rules.mk new file mode 100644 index 000000000000..f2552d2fa819 --- /dev/null +++ b/keyboards/xiudi/xd75/keymaps/markus/rules.mk @@ -0,0 +1,13 @@ +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes +EXTRAKEY_ENABLE = yes +CONSOLE_ENABLE = no +COMMAND_ENABLE = no +NKRO_ENABLE = yes +BACKLIGHT_ENABLE = no +MIDI_ENABLE = no +AUDIO_ENABLE = no +UNICODE_ENABLE = yes +BLUETOOTH_ENABLE = no +RGBLIGHT_ENABLE = yes +SLEEP_LED_ENABLE = no diff --git a/keyboards/xd75/keymaps/msiu/config.h b/keyboards/xiudi/xd75/keymaps/msiu/config.h similarity index 100% rename from keyboards/xd75/keymaps/msiu/config.h rename to keyboards/xiudi/xd75/keymaps/msiu/config.h diff --git a/keyboards/xd75/keymaps/msiu/keymap.c b/keyboards/xiudi/xd75/keymaps/msiu/keymap.c similarity index 100% rename from keyboards/xd75/keymaps/msiu/keymap.c rename to keyboards/xiudi/xd75/keymaps/msiu/keymap.c diff --git a/keyboards/xd75/keymaps/msiu/readme.md b/keyboards/xiudi/xd75/keymaps/msiu/readme.md similarity index 100% rename from keyboards/xd75/keymaps/msiu/readme.md rename to keyboards/xiudi/xd75/keymaps/msiu/readme.md diff --git a/keyboards/xd75/keymaps/mtdjr/config.h b/keyboards/xiudi/xd75/keymaps/mtdjr/config.h similarity index 100% rename from keyboards/xd75/keymaps/mtdjr/config.h rename to keyboards/xiudi/xd75/keymaps/mtdjr/config.h diff --git a/keyboards/xd75/keymaps/mtdjr/keymap.c b/keyboards/xiudi/xd75/keymaps/mtdjr/keymap.c similarity index 100% rename from keyboards/xd75/keymaps/mtdjr/keymap.c rename to keyboards/xiudi/xd75/keymaps/mtdjr/keymap.c diff --git a/keyboards/xd75/keymaps/mtdjr/readme.md b/keyboards/xiudi/xd75/keymaps/mtdjr/readme.md similarity index 100% rename from keyboards/xd75/keymaps/mtdjr/readme.md rename to keyboards/xiudi/xd75/keymaps/mtdjr/readme.md diff --git a/keyboards/xd75/keymaps/mtdjr/rules.mk b/keyboards/xiudi/xd75/keymaps/mtdjr/rules.mk similarity index 100% rename from keyboards/xd75/keymaps/mtdjr/rules.mk rename to keyboards/xiudi/xd75/keymaps/mtdjr/rules.mk diff --git a/keyboards/xd75/keymaps/neothefox/keymap.c b/keyboards/xiudi/xd75/keymaps/neothefox/keymap.c similarity index 100% rename from keyboards/xd75/keymaps/neothefox/keymap.c rename to keyboards/xiudi/xd75/keymaps/neothefox/keymap.c diff --git a/keyboards/xd75/keymaps/neothefox/readme.md b/keyboards/xiudi/xd75/keymaps/neothefox/readme.md similarity index 100% rename from keyboards/xd75/keymaps/neothefox/readme.md rename to keyboards/xiudi/xd75/keymaps/neothefox/readme.md diff --git a/keyboards/xd75/keymaps/odyssey/config.h b/keyboards/xiudi/xd75/keymaps/odyssey/config.h similarity index 100% rename from keyboards/xd75/keymaps/odyssey/config.h rename to keyboards/xiudi/xd75/keymaps/odyssey/config.h diff --git a/keyboards/xd75/keymaps/odyssey/keymap.c b/keyboards/xiudi/xd75/keymaps/odyssey/keymap.c similarity index 100% rename from keyboards/xd75/keymaps/odyssey/keymap.c rename to keyboards/xiudi/xd75/keymaps/odyssey/keymap.c diff --git a/keyboards/xd75/keymaps/odyssey/readme.md b/keyboards/xiudi/xd75/keymaps/odyssey/readme.md similarity index 100% rename from keyboards/xd75/keymaps/odyssey/readme.md rename to keyboards/xiudi/xd75/keymaps/odyssey/readme.md diff --git a/keyboards/xd75/keymaps/odyssey/rules.mk b/keyboards/xiudi/xd75/keymaps/odyssey/rules.mk similarity index 100% rename from keyboards/xd75/keymaps/odyssey/rules.mk rename to keyboards/xiudi/xd75/keymaps/odyssey/rules.mk diff --git a/keyboards/xd75/keymaps/pitty/config.h b/keyboards/xiudi/xd75/keymaps/pitty/config.h similarity index 100% rename from keyboards/xd75/keymaps/pitty/config.h rename to keyboards/xiudi/xd75/keymaps/pitty/config.h diff --git a/keyboards/xiudi/xd75/keymaps/pitty/keymap.c b/keyboards/xiudi/xd75/keymaps/pitty/keymap.c new file mode 100644 index 000000000000..ff812d6791b2 --- /dev/null +++ b/keyboards/xiudi/xd75/keymaps/pitty/keymap.c @@ -0,0 +1,148 @@ +/* Copyright 2017 Wunder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +#include "keymap_hungarian.h" + +enum XD75_layers { + _QWERTY, + _GAME, + _LOWER, + _RAISE +}; + + +// Defines the keycodes used by our macros in process_record_user +enum custom_keycodes { + QWERTY = SAFE_RANGE, + GAME, + LOWER, + RAISE, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + +/* Qwerty + * ,--------------------------------------------------------------------------------------------------------. + * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Ö | Ü | Ó | | | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | TAB | Q | W | E | R | T | Z | U | I | O | P | Ő | Ú | | | + * |------+------+------+------+------+-------------+------+------+------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | É | Á | Ű | | | + * |------+------+------+------+------+------|------+------+------+------+------+------+------+------+------| + * | Shift| Y | X | C | V | B | N | M | , | . | - | Shift| | | | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | GUI | ALt |Lower | Space | Enter| Bksp |AltGr | Raise| | | | | | + * `--------------------------------------------------------------------------------------------------------' + */ +[_QWERTY] = LAYOUT_ortho_5x15( \ + HU_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, HU_ODIA, HU_UDIA, HU_OACU, KC_INS, KC_PGUP, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, HU_Z, KC_U, KC_I, KC_O, KC_P, HU_ODAC, HU_UACU, KC_DEL, KC_PGDN, \ + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, HU_EACU, HU_AACU, HU_UDAC, _______, KC_HOME, \ + MT(MOD_LSFT, KC_NUBS), HU_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, HU_COMM, HU_DOT, HU_MINS, KC_RSFT, HU_EQL, KC_UP, KC_END, \ + KC_LCTL, KC_LGUI, KC_LALT, TT(_LOWER), KC_SPC, _______, KC_ENT, KC_BSPC, KC_RALT, TT(_RAISE), _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT \ +), + + +/* Game + * ,--------------------------------------------------------------------------------------------------------. + * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Ö | Ü | Ó | | | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | TAB | Q | W | E | R | T | Z | U | I | O | P | Ő | Ú | | | + * |------+------+------+------+------+-------------+------+------+------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | É | Á | Ű | | | + * |------+------+------+------+------+------|------+------+------+------+------+------+------+------+------| + * | Shift| Y | X | C | V | B | N | M | , | . | - | Shift| | | | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | GUI | ALt |Raise | Space | Enter| Bksp |AltGr | Lower| | | | | | + * `--------------------------------------------------------------------------------------------------------' + */ +[_GAME] = LAYOUT_ortho_5x15( \ + HU_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, HU_ODIA, HU_UDIA, HU_OACU, KC_INS, KC_PGUP, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, HU_Z, KC_U, KC_I, KC_O, KC_P, HU_ODAC, HU_UACU, KC_DEL, KC_PGDN, \ + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, HU_EACU, HU_AACU, HU_UDAC, _______, KC_HOME, \ + KC_LSFT, HU_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, HU_COMM, HU_DOT, HU_MINS, KC_RSFT, HU_EQL, KC_UP, KC_END, \ + KC_LCTL, KC_LGUI, KC_LALT, TT(_RAISE), KC_SPC, _______, KC_ENT, KC_BSPC, KC_RALT, TT(_LOWER), _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT \ +), + + +/* Lower + * ,--------------------------------------------------------------------------------------------------------. + * | | | | | | | | 7 | 8 | 9 | + | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | | | Up | | | | | 4 | 5 | 6 | - | | | | | + * |------+------+------+------+------+-------------+------+------+------+------+------+------+------+------| + * | | Left | Down | Right| | | | 1 | 2 | 3 | * | | | | | + * |------+------+------+------+------+------|------+------+------+------+------+------+------+------+------| + * | | | |Lnxcpy|Lnxpst| | | 0 | | | / | = | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Home |PageDn|PageUp| End | | | | + * `--------------------------------------------------------------------------------------------------------' + */ +[_LOWER] = LAYOUT_ortho_5x15( \ + _______, _______, _______, _______, _______, _______, _______, HU_7, HU_8, HU_9, HU_PLUS, _______, _______, _______, _______, \ + _______, _______, KC_UP, _______, _______, _______, _______, HU_4, HU_5, HU_6, HU_MINS, _______, _______, _______, _______, \ + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, HU_1, HU_2, HU_3, HU_ASTR, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, HU_0, _______, _______, HU_SLSH, HU_EQL, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TO(_GAME), TO(_QWERTY), _______, _______, _______ \ +), + +/* Raise + * ,--------------------------------------------------------------------------------------------------------. + * | F12 | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | | | Up | | | | | | | | | | | | | + * |------+------+------+------+------+-------------+------+------+------+------+------+------+------+------| + * | | Left | Down | Right| | | | | | | | | | | | + * |------+------+------+------+------+------|------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Home |PageDn|PageUp| End | | | | + * `--------------------------------------------------------------------------------------------------------' + */ +[_RAISE] = LAYOUT_ortho_5x15( \ + _______, 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_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TO(_GAME), TO(_QWERTY), _______, _______, _______ \ +), + + + +}; + + + +layer_state_t layer_state_set_user(layer_state_t state) { + switch (get_highest_layer(state)) { + case _RAISE: + rgblight_setrgb (0xC3, 0xFF, 0xFF); + rgblight_mode(5); + break; + case _LOWER: + rgblight_setrgb (0xFF, 0xFF, 0xFF); + rgblight_mode(5); + break; + case _GAME: + rgblight_mode(8); + break; + default: // for any other layers, or the default layer + rgblight_mode(14); + break; + } + return state; +} diff --git a/keyboards/xd75/keymaps/pitty/readme.md b/keyboards/xiudi/xd75/keymaps/pitty/readme.md similarity index 100% rename from keyboards/xd75/keymaps/pitty/readme.md rename to keyboards/xiudi/xd75/keymaps/pitty/readme.md diff --git a/keyboards/xd75/keymaps/pitty/rules.mk b/keyboards/xiudi/xd75/keymaps/pitty/rules.mk similarity index 100% rename from keyboards/xd75/keymaps/pitty/rules.mk rename to keyboards/xiudi/xd75/keymaps/pitty/rules.mk diff --git a/keyboards/xiudi/xd75/keymaps/replicajunction/config.h b/keyboards/xiudi/xd75/keymaps/replicajunction/config.h new file mode 100644 index 000000000000..a02f9a95dbad --- /dev/null +++ b/keyboards/xiudi/xd75/keymaps/replicajunction/config.h @@ -0,0 +1,51 @@ +/* Copyright 2021 Joshua T. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +// Do not allow one macro to contain the other macro +#define DYNAMIC_MACRO_NO_NESTING + +// "THE most important tap hold configuration setting" +// https://precondition.github.io/home-row-mods#ignore-mod-tap-interrupt +// https://docs.qmk.fm/#/tap_hold?id=ignore-mod-tap-interrupt +#define IGNORE_MOD_TAP_INTERRUPT + +// This one is a style choice. Play with it both on and off to see which +// one suits you better. +// https://precondition.github.io/home-row-mods#permissive-hold +// https://docs.qmk.fm/#/tap_hold?id=permissive-hold +#define PERMISSIVE_HOLD + +// If you press a dual-role key for longer than TAPPING_TERM, then +// release it without pressing another key, without this setting nothing +// would happen. With this setting, it sends the key's tap function. +// https://precondition.github.io/home-row-mods#retro-tapping +#define RETRO_TAPPING + +// Disable some unused features to save space +#undef LOCKING_SUPPORT_ENABLE +#undef LOCKING_RESYNC_ENABLE + +///// +// Flags for stuff in my userspace + +#define USER_INCLUDE_GAMING_LAYER +#define USER_INCLUDE_MACRO_LAYER + +// "Super Alt-Tab" +// https://docs.qmk.fm/#/feature_macros?id=super-alt%E2%86%AFtab +#define USER_SUPER_ALT_TAB_TIMEOUT 500 diff --git a/keyboards/xiudi/xd75/keymaps/replicajunction/keymap.c b/keyboards/xiudi/xd75/keymaps/replicajunction/keymap.c new file mode 100644 index 000000000000..71ef2a668386 --- /dev/null +++ b/keyboards/xiudi/xd75/keymaps/replicajunction/keymap.c @@ -0,0 +1,138 @@ +/* Copyright 2021 Joshua T. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +#include "replicaJunction.h" + +// enum additional_keyboard_layers { +// L_RGB = _LAYER_SAFE_RANGE +// }; + +#define BSP_SYM LT(L_SYMBOLS, KC_BSPC) +#define SPC_NAV LT(L_NAVIGATION, KC_SPC) +#define ESC_NUM LT(L_NUMBERS, KC_ESC) +#define MO_FN MO(L_FN) +#define MO_MAC MO(L_MACROS) + +#define DF_TYPE DF(L_BASE) +#define DF_GAME DF(L_GAMING) + +#define ESC_SFT LSFT_T(KC_ESC) +#define TAB_SFT RSFT_T(KC_TAB) + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [L_BASE] = LAYOUT_ortho_5x15( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_GRV, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_EQL, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_LBRC, KC_BSLS, KC_RBRC, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS, + KC_MINS, KC_A, KC_R, KC_S, KC_T, KC_G, SALTTAB, KC_UP, KC_END, KC_M, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + NUMWORD, KC_Z, KC_X, KC_C, KC_D, KC_V, KC_LEFT, KC_DOWN, KC_RGHT, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, CAPWORD, + KC_LCTL, KC_LGUI, KC_LALT, MO_FN, ESC_SFT, BSP_SYM, CTL_DEL, KC_ENT, ALT_ENT, SPC_NAV, TAB_SFT, MO_FN, KC_RALT, KC_RGUI, KC_RCTL + ), + + + [L_GAMING] = LAYOUT_ortho_5x15( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_GRV, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_BSLS, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_QUOT, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_HOME, KC_DEL, KC_PGUP, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_END, KC_UP, KC_PGDN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LCTL, KC_LALT, KC_LSFT, KC_SPC, KC_LALT, KC_LEFT, KC_DOWN, KC_RGHT, KC_BSPC, KC_SPC, MO_FN, KC_RALT, KC_RGUI, KC_RCTL + ), + + + // [L_QWERTY] = LAYOUT_ortho_5x15( + // KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_GRV, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + // KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_BSLS, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_QUOT, + // KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_HOME, KC_DEL, KC_PGUP, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + // KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_END, KC_UP, KC_PGDN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + // KC_LCTL, KC_LGUI, KC_LALT, MO(_FN), KC_SPC, KC_SPC, KC_LEFT, KC_DOWN, KC_RGHT, KC_SPC, KC_SPC, MO(_FN), KC_RALT, KC_RGUI, KC_RCTL + // ), + + + // [L_CURSOR] = LAYOUT_ortho_5x15( + // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + // _______, _______, _______, _______, _______, _______, _______, _______, _______, OS_SALL, OS_COPY, OS_PAST, OS_CUT, OS_UNDO, _______, + // _______, KC_LGUI, KC_LALT, KC_LSFT, KC_LCTL, _______, _______, _______, SEARCH, SALTTAB, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, + // _______, KC_RGUI, KC_RALT, KC_RSFT, KC_RCTL, _______, _______, _______, _______, OS_FIND, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, + // _______, _______, _______, _______, _______, ooooooo, _______, _______, _______, SPC_NAV, _______, _______, _______, _______, _______ + // ), + + + [L_NUMBERS] = LAYOUT_ortho_5x15( + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_NLCK, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HASH, KC_P7, KC_P8, KC_P9, KC_PSLS, SFT_TAB, + _______, KC_LGUI, KC_LALT, KC_LSFT, KC_LCTL, _______, _______, _______, _______, KC_PPLS, KC_P4, KC_P5, KC_P6, KC_PAST, KC_TAB, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PMNS, KC_P1, KC_P2, KC_P3, KC_BSLS, KC_EQL, + _______, _______, _______, _______, ooooooo, _______, _______, _______, _______, _______, KC_P0, KC_P0, KC_PDOT, KC_PENT, _______ + ), + + + [L_SYMBOLS] = LAYOUT_ortho_5x15( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_AT, KC_LT, KC_DLR, KC_GT, XXXXXXX, _______, _______, _______, XXXXXXX, KC_LBRC, KC_UNDS, KC_RBRC, XXXXXXX, _______, + _______, KC_BSLS, KC_LPRN, KC_DQUO, KC_RPRN, KC_HASH, _______, _______, _______, KC_PERC, KC_LCBR, KC_EQL, KC_RCBR, KC_PIPE, _______, + _______, KC_EXLM, KC_COLN, KC_ASTR, KC_PLUS, XXXXXXX, _______, _______, _______, XXXXXXX, KC_AMPR, KC_CIRC, KC_TILD, KC_GRV, _______, + _______, _______, _______, _______, _______, ooooooo, _______, _______, _______, ooooooo, _______, _______, _______, _______, _______ + ), + + + [L_NAVIGATION] = LAYOUT_ortho_5x15( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, OS_UNDO, OS_CUT, OS_PAST, OS_COPY, OS_SALL, _______, _______, _______, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_DEL, _______, + _______, KC_LGUI, KC_LALT, KC_LSFT, KC_LCTL, _______, _______, _______, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_BSPC, _______, + _______, WIN_V, _______, _______, OS_FIND, SEARCH, _______, _______, _______, _______, SFT_TAB, KC_TAB, KC_APP, KC_PSCR, _______, + _______, _______, _______, _______, _______, ooooooo, _______, _______, _______, ooooooo, _______, _______, _______, _______, _______ + ), + + + [L_FN] = LAYOUT_ortho_5x15( + DF_TYPE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, MS_JIGL, _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + DF_GAME, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, _______, _______, _______, _______, KC_VOLU, _______, _______, _______, _______, KC_F12, + _______, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, KC_CAPS, RESET, _______, KC_MUTE, _______, _______, _______, _______, _______, + _______, RGB_M_P, RGB_M_B, _______, _______, _______, _______, _______, _______, KC_VOLD, K_SECR1, K_SECR2, K_SECR3, K_SECR4, _______, + _______, _______, _______, ooooooo, _______, _______, _______, _______, _______, _______, _______, ooooooo, _______, _______, _______ + ), + + + [L_MACROS] = LAYOUT_ortho_5x15( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, QK_MAKE, _______, DM_REC2, DM_REC1, _______, _______, _______, _______, _______, SHEBANG, _______, _______, _______, _______, + _______, QK_FLSH, _______, DM_PLY2, DM_PLY1, DM_RSTP, _______, _______, _______, PRG_NE, PRG_EQ, PRG_GEQ, PRG_LEQ, PRG_ARR, _______, + _______, QK_VERS, _______, _______, _______, _______, _______, _______, _______, _______, PS_ITEM, FS_PIPE, _______, FS_ARR, _______, + _______, _______, _______, _______, ooooooo, _______, _______, _______, _______, ooooooo, _______, _______, _______, _______, _______ + ) + + // [_FN] = LAYOUT_ortho_5x15( /* FUNCTION */ + // _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_NLCK, KC_SLSH, KC_ASTR, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + // KC_MSEL, KC_CALC, KC_MYCM, KC_MAIL, RGB_HUD, RGB_HUI, KC_P7, KC_P8, KC_P9, KC_MINS, _______, _______, KC_PSCR, KC_SLCK, KC_F12, + // KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP, RGB_SAD, RGB_SAI, KC_P4, KC_P5, KC_P6, KC_PLUS, _______, RESET, _______, _______, _______, + // KC_VOLD, KC_MUTE, KC_VOLU, KC_APP, RGB_VAD, RGB_VAI, KC_P1, KC_P2, KC_P3, KC_PENT, _______, _______, _______, _______, _______, + // _______, _______, RGB_TOG, ooooooo, RGB_RMOD,RGB_MOD, KC_P0, _______, KC_PDOT, KC_PENT, KC_PENT, ooooooo, _______, _______, _______ + // ) + + // // Template + // [_LAYER] = LAYOUT_ortho_5x15( + // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + // ), +}; + +layer_state_t layer_state_set_user(layer_state_t state) { + return update_tri_layer_state(state, L_SYMBOLS, L_NAVIGATION, L_MACROS); +} diff --git a/keyboards/xiudi/xd75/keymaps/replicajunction/readme.md b/keyboards/xiudi/xd75/keymaps/replicajunction/readme.md new file mode 100644 index 000000000000..980a2f727218 --- /dev/null +++ b/keyboards/xiudi/xd75/keymaps/replicajunction/readme.md @@ -0,0 +1,5 @@ +# replicaJunction - XD75 layout + +As a longtime ortho user, I prefer the "pseudo-split" keymap, where the center 3 columns are used for other purposes. This leaves 6 columns on each side to used like a split Preonic. + +Most of the goodies in this layout are defined in [my userspace folder](../../../../users/replicaJunction/readme.md). Better explanations of the interesting features are provided there. diff --git a/keyboards/xiudi/xd75/keymaps/replicajunction/rules.mk b/keyboards/xiudi/xd75/keymaps/replicajunction/rules.mk new file mode 100644 index 000000000000..7e0b3c9cacca --- /dev/null +++ b/keyboards/xiudi/xd75/keymaps/replicajunction/rules.mk @@ -0,0 +1,29 @@ +# Userspace options +USER_CAPS_WORD_ENABLE = yes +USER_MOUSE_JIGGLE_ENABLE = yes +USER_NUM_WORD_ENABLE = yes +USER_SECRETS_ENABLE = yes +USER_SUPER_ALT_TAB_ENABLE = yes + +DYNAMIC_MACRO_ENABLE = yes + +# Extra features that are nice but takes space. Enable only if they're +# used in the layout. +WPM_ENABLE = no +# EXTRAKEY_ENABLE = no # For volume keys and similar +# MOUSEKEY_ENABLE = no # Them mouse keys yo +KEY_OVERRIDE_ENABLE = no +LEADER_ENABLE = no +TAP_DANCE_ENABLE = no +# RGBLIGHT_ENABLE = no # Keyboard RGB underglow +RGB_MATRIX_ENABLE = no + +# Features I definitely don't care aboud +LTO_ENABLE = yes +CONSOLE_ENABLE = no +VERBOSE = no +DEBUG_MATRIX_SCAN_RATE = no +DEBUG_MATRIX = no +MAGIC_ENABLE = no +SPACE_CADET_ENABLE = no +GRAVE_ESC_ENABLE = no diff --git a/keyboards/xd75/keymaps/revok75/config.h b/keyboards/xiudi/xd75/keymaps/revok75/config.h similarity index 100% rename from keyboards/xd75/keymaps/revok75/config.h rename to keyboards/xiudi/xd75/keymaps/revok75/config.h diff --git a/keyboards/xd75/keymaps/revok75/keymap.c b/keyboards/xiudi/xd75/keymaps/revok75/keymap.c similarity index 100% rename from keyboards/xd75/keymaps/revok75/keymap.c rename to keyboards/xiudi/xd75/keymaps/revok75/keymap.c diff --git a/keyboards/xd75/keymaps/revok75/readme.md b/keyboards/xiudi/xd75/keymaps/revok75/readme.md similarity index 100% rename from keyboards/xd75/keymaps/revok75/readme.md rename to keyboards/xiudi/xd75/keymaps/revok75/readme.md diff --git a/keyboards/xiudi/xd75/keymaps/revok75/rules.mk b/keyboards/xiudi/xd75/keymaps/revok75/rules.mk new file mode 100644 index 000000000000..a9aedf5920d0 --- /dev/null +++ b/keyboards/xiudi/xd75/keymaps/revok75/rules.mk @@ -0,0 +1,18 @@ +# Copyright 2013 Jun Wako +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +BACKLIGHT_ENABLE = yes +RGBLIGHT_ENABLE = yes diff --git a/keyboards/xd75/keymaps/scheiklp/config.h b/keyboards/xiudi/xd75/keymaps/scheiklp/config.h similarity index 100% rename from keyboards/xd75/keymaps/scheiklp/config.h rename to keyboards/xiudi/xd75/keymaps/scheiklp/config.h diff --git a/keyboards/xd75/keymaps/scheiklp/keymap.c b/keyboards/xiudi/xd75/keymaps/scheiklp/keymap.c similarity index 100% rename from keyboards/xd75/keymaps/scheiklp/keymap.c rename to keyboards/xiudi/xd75/keymaps/scheiklp/keymap.c diff --git a/keyboards/xiudi/xd75/keymaps/scheiklp/readme.md b/keyboards/xiudi/xd75/keymaps/scheiklp/readme.md new file mode 100644 index 000000000000..c8c2dc9a2c25 --- /dev/null +++ b/keyboards/xiudi/xd75/keymaps/scheiklp/readme.md @@ -0,0 +1,9 @@ +# KOY Layout for the xd75 pcb board +Compile the layout +```bash +qmk compile -kb xiudi/xd75 -km scheiklp +``` +and flash it to the board +```bash +qmk flash -kb xiudi/xd75 -km scheiklp +``` diff --git a/keyboards/xiudi/xd75/keymaps/scheiklp/rules.mk b/keyboards/xiudi/xd75/keymaps/scheiklp/rules.mk new file mode 100644 index 000000000000..2cbbe08d7a26 --- /dev/null +++ b/keyboards/xiudi/xd75/keymaps/scheiklp/rules.mk @@ -0,0 +1,6 @@ +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +COMMAND_ENABLE = no +RGBLIGHT_ENABLE = no +DYNAMIC_MACRO_ENABLE = yes +AUTO_SHIFT_ENABLE = yes +KEY_LOCK_ENABLE = yes diff --git a/keyboards/xiudi/xd75/keymaps/skewwhiffy/keymap.c b/keyboards/xiudi/xd75/keymaps/skewwhiffy/keymap.c new file mode 100644 index 000000000000..3db29a36363e --- /dev/null +++ b/keyboards/xiudi/xd75/keymaps/skewwhiffy/keymap.c @@ -0,0 +1,233 @@ +/* Copyright 2017 Kenny Hung + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +#include "keymap_uk.h" + +// Layer shorthand +enum Layers { + cm, // colemak + dv, // dvorak + qw, // qwerty + nbl, // numbers left + nbr, // numbers right + syl, // symbols left + syr, // symbols right + nal, // navigation left + nar // navigation right +}; + +// Layer buttons +#define _Z_SFT SFT_T(UK_Z) +#define _SCLSH SFT_T(UK_SCLN) +#define _SLSH SFT_T(UK_SLSH) + +#define _X_NB LT(nbl, UK_X) +#define _Q_NB LT(nbl, UK_Q) +#define _DOT_NB LT(nbr, UK_DOT) +#define _V_NB LT(nbr, UK_V) +#define __NBL LT(nbl, _______) +#define __NBR LT(nbr, _______) + +#define _C_SY LT(syl, UK_C) +#define _J_SY LT(syl, UK_J) +#define _W_SY LT(syr, UK_W) +#define _COM_SY LT(syr, UK_COMM) +#define __SYL LT(syl, _______) +#define __SYR LT(syr, _______) + +#define _V_NAL LT(nal, UK_V) +#define _K_NAL LT(nal, UK_K) +#define _M_NAR LT(nar, UK_M) +#define __NAL LT(nal, _______) +#define __NAR LT(nar, _______) + +// Custom hotkeys +#define _TERM LCTL(UK_QUOT) // Hotkey for terminal +#define _S_TAB S(KC_TAB) +#define _C_LEFT LCTL(KC_LEFT) +#define _C_RGHT LCTL(KC_RGHT) +#define _A_LEFT LALT(KC_LEFT) +#define _A_RGHT LALT(KC_RGHT) + +enum custom_keycodes { + IJ_OMN = SAFE_RANGE // IntelliJ Omnibox +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Colemak + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------------------------------------------------------------------------------------------------------------------------------------| + * | Q | W | F | P | G | | | | | | J | L | U | Y | ; | + * |--------------------------------------------------------------------------------------------------------------------------------------| + * | A | R | S | T | D | | | | | | H | N | E | I | O | + * |--------------------------------------------------------------------------------------------------------------------------------------| + * | Z | X | C | V | B | | | UP | | | K | M | , | . | / | + * | SHIFT | NUMBER | SYMBOL | NAV | | | | | | | | NAV | SYMBOL | FUNC | SHIFT | + * |--------------------------------------------------------------------------------------------------------------------------------------| + * | LSHIFT | LCTRL | LALT | LGUI | SPACE | ENT | LEFT | DOWN | RIGHT | DEL | BKSPC | RGUI | RALT | RCTRL | RSHIFT | + * .--------------------------------------------------------------------------------------------------------------------------------------. + */ + [cm] = LAYOUT_ortho_5x15( \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + UK_Q, UK_W, UK_F, UK_P, UK_G, _______, _______, _______, _______, _______, UK_J, UK_L, UK_U, UK_Y, UK_SCLN, \ + UK_A, UK_R, UK_S, UK_T, UK_D, _______, _______, _______, _______, _______, UK_H, UK_N, UK_E, UK_I, UK_O , \ + _Z_SFT, _X_NB, _C_SY, _V_NAL, UK_B, _______, _______, KC_UP, _______, _______, UK_K, _M_NAR, _COM_SY, _DOT_NB, _SLSH , \ + KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_ENT, KC_LEFT, KC_DOWN, KC_RGHT, KC_DEL, KC_BSPC, KC_RGUI, KC_RALT, KC_RCTL, KC_RSFT \ + ), + +/* Dvorak + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------------------------------------------------------------------------------------------------------------------------------------| + * | ' | , | . | P | Y | | | | | | F | G | C | R | L | + * |--------------------------------------------------------------------------------------------------------------------------------------| + * | A | O | E | U | I | | | | | | D | H | T | N | S | + * |--------------------------------------------------------------------------------------------------------------------------------------| + * | ; | Q | J | K | X | | | | | | B | M | W | V | Z | + * | SHIFT | NUMBER | SYMBOL | NAV | | | | | | | | NAV | SYMBOL | FUNC | SHIFT | + * |--------------------------------------------------------------------------------------------------------------------------------------| + * | | | | | | | | | | | | | | | | + * |--------------------------------------------------------------------------------------------------------------------------------------| + */ + [dv] = LAYOUT_ortho_5x15( \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + UK_QUOT, UK_COMM, UK_DOT, UK_P, UK_Y, _______, _______, _______, _______, _______, UK_F, UK_G, UK_C, UK_R, UK_L , \ + UK_A, UK_O, UK_E, UK_U, UK_I, _______, _______, _______, _______, _______, UK_D, UK_H, UK_T, UK_N, UK_S , \ + _SCLSH, _Q_NB, _J_SY, _K_NAL, UK_X, _______, _______, _______, _______, _______, UK_B, _M_NAR, _W_SY, _V_NB, _Z_SFT , \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ + ), + +/* QWERTY _QW + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------------------------------------------------------------------------------------------------------------------------------------| + * | Q | W | E | R | T | | | | | | Y | U | I | O | P | + * |--------------------------------------------------------------------------------------------------------------------------------------| + * | A | S | D | F | G | | | | | | H | J | K | L | ; | + * |--------------------------------------------------------------------------------------------------------------------------------------| + * | Z | X | C | V | B | | | | | | N | M | , | . | / | + * | SHIFT | NUMBER | SYMBOL | NAV | | | | | | | | NAV | SYMBOL | FUNC | SHIFT | + * |--------------------------------------------------------------------------------------------------------------------------------------| + * | | | | | | | | | | | | | | | | + * |--------------------------------------------------------------------------------------------------------------------------------------| + * | LSHIFT | LCTRL | LALT | LGUI | SPACE | ENT | | | | DEL | BKSPC | RGUI | RALT | RCTRL | RSHIFT | + * .--------------------------------------------------------------------------------------------------------------------------------------. + */ + [qw] = LAYOUT_ortho_5x15( \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + UK_Q, UK_W, UK_E, UK_R, UK_T, _______, _______, _______, _______, _______, UK_Y, UK_U, UK_I, UK_O, UK_P , \ + UK_A, UK_S, UK_D, UK_F, UK_G, _______, _______, _______, _______, _______, UK_H, UK_J, UK_K, UK_L, UK_SCLN, \ + _Z_SFT, _X_NB, _C_SY, _V_NAL, UK_B, _______, _______, _______, _______, _______, UK_N, _M_NAR, _COM_SY, _DOT_NB, _SLSH , \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ + ), + +/* Numbers _NB + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |-----------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | | F7 | F8 | F9 | F10 | | | | | | | 7 | 8 | 9 | | + * |-----------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | F4 | F5 | F6 | F11 | | | | | | | 4 | 5 | 6 | | + * |-----------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------| + * | | F1 | F2 | F3 | F12 | | | | | | 0 | 1 | 2 | 3 | . | + * |-----------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------+--------| + * | | | | | | | | | | | | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + [nbl] = LAYOUT_ortho_5x15( \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______, _______, _______, _______, _______, UK_7, UK_8, UK_9, _______, \ + _______, KC_F4, KC_F5, KC_F6, KC_F11, _______, _______, _______, _______, _______, _______, UK_4, UK_5, UK_6, _______, \ + _______, __NBL, KC_F2, KC_F3, KC_F12, _______, _______, _______, _______, _______, UK_0, UK_1, UK_2, UK_3, UK_DOT, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ + ), + [nbr] = LAYOUT_ortho_5x15( \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______, _______, _______, _______, _______, UK_7, UK_8, UK_9, _______, \ + _______, KC_F4, KC_F5, KC_F6, KC_F11, _______, _______, _______, _______, _______, _______, UK_4, UK_5, UK_6, _______, \ + _______, KC_F1, KC_F2, KC_F3, KC_F12, _______, _______, _______, _______, _______, UK_0, UK_1, UK_2, __NBR, UK_DOT , \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ + ), + + /* Symbols _SY + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | ! | £ | _ | - | ~ | | | | | | \ | { | } | / | # | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | $ | % | + | = | | | | | | | " | ( | ) | ' | @ | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | ^ | & | * | | | | | | | | | < | [ | ] | > | ` | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | | | | | | | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + [syl] = LAYOUT_ortho_5x15( \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + UK_EXLM, UK_PND, UK_UNDS, UK_MINS, UK_TILD, _______, _______, _______, _______, _______, UK_BSLS, UK_LCBR, UK_RCBR, UK_SLSH, UK_HASH, \ + UK_DLR, UK_PERC, UK_PLUS, UK_EQL, _______, _______, _______, _______, _______, _______, UK_DQUO, UK_LPRN, UK_RPRN, UK_QUOT, UK_AT , \ + UK_CIRC, UK_AMPR, __SYL, UK_PIPE, _______, _______, _______, _______, _______, _______, UK_LABK, UK_LBRC, UK_RBRC, UK_RABK, UK_GRV , \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ + ), + [syr] = LAYOUT_ortho_5x15( \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + UK_EXLM, UK_PND, UK_UNDS, UK_MINS, UK_TILD, _______, _______, _______, _______, _______, UK_BSLS, UK_LCBR, UK_RCBR, UK_SLSH, UK_HASH, \ + UK_DLR, UK_PERC, UK_PLUS, UK_EQL, _______, _______, _______, _______, _______, _______, UK_DQUO, UK_LPRN, UK_RPRN, UK_QUOT, UK_AT , \ + UK_CIRC, UK_AMPR, UK_ASTR, UK_PIPE, _______, _______, _______, _______, _______, _______, UK_LABK, UK_LBRC, __SYR, UK_RABK, UK_GRV , \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ + ), +/* + * Navigation _NA + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | RESET | COLEMA | DVORAK | QWERTY | | RGB_TG | | | | | | | | | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | Esc | Ctrl L | Up | Ctrl R | | RGB HD | RGB HI | | | | | PtSn | ScLk | Pause | | + * +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | Tab | Left | Down | Right | | RGB SD | RGB SI | | | | | Insert | Home | PgUp | Term | + * +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | ShTab | Alt L | Shift | Alt R | | RGB VD | RGB VI | | | | | ScLk | End | PgDn | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| + * | | | | | | RGB RMD| RGB MD | | | | | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + [nal] = LAYOUT_ortho_5x15( \ + RESET, DF(cm), DF(dv), DF(qw), _______, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + KC_ESC, _C_LEFT, KC_UP , _C_RGHT, _______, RGB_HUD, RGB_HUI, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, \ + KC_TAB, KC_LEFT, KC_DOWN, KC_RGHT, _______, RGB_SAD, RGB_SAI, _______, _______, _______, _______, KC_INS, KC_HOME, KC_PGUP, _TERM , \ + _S_TAB, _A_LEFT, IJ_OMN, __NAL, _______, RGB_VAD, RGB_VAI, _______, _______, _______, _______, KC_SLCK, KC_END, KC_PGDN, _______, \ + _______, _______, _______, _______, _______, RGB_RMOD,RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______ \ + ), + [nar] = LAYOUT_ortho_5x15( \ + RESET, DF(cm), DF(dv), DF(qw), _______, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + KC_ESC, _C_LEFT, KC_UP , _C_RGHT, _______, RGB_HUD, RGB_HUI, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, \ + KC_TAB, KC_LEFT, KC_DOWN, KC_RGHT, _______, RGB_SAD, RGB_SAI, _______, _______, _______, _______, KC_INS, KC_HOME, KC_PGUP, _TERM , \ + _S_TAB, _A_LEFT, IJ_OMN, _A_RGHT, _______, RGB_VAD, RGB_VAI, _______, _______, _______, _______, __NAR, KC_END, KC_PGDN, _______, \ + _______, _______, _______, _______, _______, RGB_RMOD,RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______ \ + ) +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (record->event.pressed) { + switch(keycode) { + case IJ_OMN: + SEND_STRING(SS_TAP(X_LSHIFT)SS_TAP(X_LSHIFT)); + return false; + } + } + return true; +} diff --git a/keyboards/xd75/keymaps/skewwhiffy/readme.md b/keyboards/xiudi/xd75/keymaps/skewwhiffy/readme.md similarity index 100% rename from keyboards/xd75/keymaps/skewwhiffy/readme.md rename to keyboards/xiudi/xd75/keymaps/skewwhiffy/readme.md diff --git a/keyboards/xd75/keymaps/skewwhiffy/rules.mk b/keyboards/xiudi/xd75/keymaps/skewwhiffy/rules.mk similarity index 100% rename from keyboards/xd75/keymaps/skewwhiffy/rules.mk rename to keyboards/xiudi/xd75/keymaps/skewwhiffy/rules.mk diff --git a/keyboards/xd75/keymaps/tdl-jturner/config.h b/keyboards/xiudi/xd75/keymaps/tdl-jturner/config.h similarity index 100% rename from keyboards/xd75/keymaps/tdl-jturner/config.h rename to keyboards/xiudi/xd75/keymaps/tdl-jturner/config.h diff --git a/keyboards/xiudi/xd75/keymaps/tdl-jturner/keymap.c b/keyboards/xiudi/xd75/keymaps/tdl-jturner/keymap.c new file mode 100644 index 000000000000..b7b98cd4c546 --- /dev/null +++ b/keyboards/xiudi/xd75/keymaps/tdl-jturner/keymap.c @@ -0,0 +1,312 @@ +/* Copyright 2018 Josh Turner (/u/tdl-jturner) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum xd75_layers { + _QWERTY, + _COLEMAK, + _LYMD, + _LYFK, + _LYMED, + _LYNUM, + _LYNAV, + _LYMOS, + _LYSYS, + _LYLT +}; + +enum xd75_keycodes { + HELP = SAFE_RANGE, + KC_BSDEL, + KC_FBSLH, + KC_DOTQ, + KC_CPIPE, + COLEMAK, + QWERTY, + KC_LYDEF +}; + +//Tap Dance Declarations +enum { + TD_LOCK_SLEEP, + TD_ABK, + TD_BRC, + TD_CBR, +}; + +//Tap Dance Definitions +qk_tap_dance_action_t tap_dance_actions[] = { + //Tap once for Esc, twice for Caps Lock + [TD_LOCK_SLEEP] = ACTION_TAP_DANCE_DOUBLE(LGUI(KC_L), KC_SLEP), + [TD_ABK] = ACTION_TAP_DANCE_DOUBLE(KC_LABK,KC_RABK), + [TD_BRC] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC,KC_RBRC), + [TD_CBR] = ACTION_TAP_DANCE_DOUBLE(KC_LCBR,KC_RCBR) +// Other declarations would go here, separated by commas, if you have them +}; + +//remaps for pretty layouts +#define ________ KC_TRNS +#define ___XX___ KC_NO + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + //QWERY - Base Layer + [_QWERTY] = LAYOUT_ortho_5x15( + KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 ,________ ,________,________, KC_6 , KC_7 , KC_8 , KC_9 , KC_0 ,KC_MINUS, + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T ,________ ,________,________, KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_BSDEL, //Custom shift Codes. Backspace ^ Delete +LT(_LYMD,KC_ESC), KC_A , KC_S , KC_D , KC_F , KC_G ,________ ,________,________, KC_H , KC_J , KC_K , KC_L ,KC_SCLN ,KC_QUOT, + KC_LSPO, KC_Z , KC_X , KC_C , KC_V , KC_B ,________ ,________,________, KC_N , KC_M ,KC_CPIPE,KC_DOTQ ,KC_FBSLH,KC_RSPC, // Custom Shift Codes. ,^| .^? /^| + KC_MEH ,KC_LCTL ,KC_LGUI ,KC_LALT ,MO(_LYNUM), KC_SPC ,________ ,________,________, KC_ENT ,MO(_LYNAV),TD(TD_CBR) ,TD(TD_BRC),TD(TD_ABK),TD(TD_LOCK_SLEEP) + + ), + + //_COLEMAK - Colemak Layout - Identical to qwerty layer except for the layout changes + [_COLEMAK] = LAYOUT_ortho_5x15( + KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 ,________ ,________,________, KC_6 , KC_7 , KC_8 , KC_9 , KC_0 ,KC_MINUS, + KC_TAB , KC_Q , KC_W , KC_F , KC_P , KC_G ,________ ,________,________, KC_J , KC_L , KC_U , KC_Y ,KC_SCLN ,KC_BSDEL, //Custom shift Codes. Backspace ^ Delete +LT(_LYMD,KC_ESC), KC_A , KC_R , KC_S , KC_T , KC_D ,________ ,________,________, KC_H , KC_N , KC_E , KC_I , KC_O ,KC_QUOT, + KC_LSPO, KC_Z , KC_X , KC_C , KC_V , KC_B ,________ ,________,________, KC_K , KC_M ,KC_CPIPE,KC_DOTQ ,KC_FBSLH,KC_RSPC, // Custom Shift Codes. ,^| .^? /^| + KC_MEH ,KC_LCTL ,KC_LGUI ,KC_LALT ,MO(_LYNUM), KC_SPC ,________ ,________,________, KC_ENT ,MO(_LYNAV),TD(TD_CBR) ,TD(TD_BRC),TD(TD_ABK),TD(TD_LOCK_SLEEP) + + ), + + // Decision Layer + [_LYMD] = + LAYOUT_ortho_5x15( + ________,________ ,________ ,________ ,________,________,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___, + ________,MO(_LYFK) ,MO(_LYMED),________ ,________,________,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,________, + ________,MO(_LYNUM),MO(_LYNAV),________ ,________,________,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___, + ________,MO(_LYMOS),MO(_LYSYS),MO(_LYLT) ,________,________,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___, + ________,________ ,________ ,________ ,________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,___XX___ + ), + + //F Keys + [_LYFK] = + LAYOUT_ortho_5x15( + ________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___, + KC_LYDEF,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,KC_F7 ,KC_F8 ,KC_F9 ,KC_F12 ,________, + ________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,KC_F4 ,KC_F5 ,KC_F6 ,KC_F11 ,___XX___, + ________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,KC_F1 ,KC_F2 ,KC_F3 ,KC_F10 ,___XX___, + ________,________,________,________,________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,___XX___ + ), +//Media Keys +[_LYMED] = + LAYOUT_ortho_5x15( + ________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___, + KC_LYDEF,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,___XX___,KC_VOLU ,___XX___,___XX___,________, + ________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,KC_MPRV ,KC_MUTE ,KC_MNXT ,___XX___,___XX___, + ________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,___XX___,KC_VOLD ,___XX___,KC_MSTP ,___XX___, + ________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,KC_MPLY ,___XX___,___XX___,___XX___,___XX___ + ), +//Num Keys +[_LYNUM] = + LAYOUT_ortho_5x15( + ________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,KC_PEQL ,KC_PSLS ,KC_PAST ,KC_PMNS ,___XX___, + KC_LYDEF,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,KC_7 ,KC_8 ,KC_9 ,KC_MINUS,________, + ________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,KC_4 ,KC_5 ,KC_6 ,KC_PPLS ,KC_PSLS, + ________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,KC_1 ,KC_2 ,KC_3 ,KC_PENT ,KC_PAST, + ________,________,________,________,________,________,________,________,________,________,KC_0 ,KC_0 ,KC_PDOT ,KC_PEQL ,___XX___ + ), +//Navigation Keys +[_LYNAV] = + LAYOUT_ortho_5x15( + ________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___, + KC_LYDEF,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,KC_HOME ,KC_UP ,KC_PGUP ,KC_PSCR ,________, + ________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,KC_LEFT ,KC_F5 ,KC_RIGHT,KC_SLCK ,___XX___, + ________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,KC_END ,KC_DOWN ,KC_PGDN ,KC_PAUS ,___XX___, + ________,________,________,________,________,________,________,________,________,________,________,KC_INS ,KC_DEL ,___XX___,___XX___ + ), + //Mouse Keys + [_LYMOS] = + LAYOUT_ortho_5x15( + ________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___, + KC_LYDEF,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,___XX___,KC_MS_U ,KC_WH_U ,KC_ACL2 ,________, + _______,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,KC_MS_L ,KC_ACL0 ,KC_MS_R ,KC_ACL1 ,___XX___, + ________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,___XX___,KC_MS_D ,KC_WH_D ,KC_BTN2 ,___XX___, + ________,________,________,________,________,________,________,________,________,________,KC_BTN1 ,KC_BTN3 ,KC_BTN4 ,___XX___,___XX___ + ), + //Systen Keys + [_LYSYS] = + LAYOUT_ortho_5x15( + ________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___, + KC_LYDEF,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,________, + ________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,___XX___,QWERTY ,COLEMAK ,___XX___,RESET, + ________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___, + ________,________,________,________,________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,___XX___ + ), + +// Light Control +[_LYLT] = + LAYOUT_ortho_5x15( + ________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___, + KC_LYDEF,________,________,________,________,________,___XX___,___XX___,___XX___,RGB_HUD ,RGB_HUI ,RGB_SAD ,RGB_SAI ,RGB_VAD ,RGB_VAI, + ________,________,________,________,________,________,___XX___,___XX___,___XX___,RGB_TOG ,RGB_RMOD,RGB_MOD ,___XX___,___XX___,___XX___, + ________,________,________,________,________,________,___XX___,___XX___,___XX___,BL_TOGG ,BL_DEC ,BL_INC ,BL_BRTG ,___XX___,___XX___, + ________,________,________,________,________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,___XX___ + ) +}; + +//Define layer colors +#define rgblight_setrgb_user_base() rgblight_sethsv(325,255,255) +#define rgblight_setrgb_user_LYFK() rgblight_sethsv_red() +#define rgblight_setrgb_user_LYMED() rgblight_sethsv_blue() +#define rgblight_setrgb_user_LYNUM() rgblight_sethsv_purple() +#define rgblight_setrgb_user_LYNAV() rgblight_sethsv_cyan() +#define rgblight_setrgb_user_LYMOS() rgblight_sethsv_orange() +#define rgblight_setrgb_user_LYSYS() rgblight_sethsv_green() +#define rgblight_setrgb_user_LYLT() rgblight_sethsv_yellow() +#define rgblight_setrgb_user_LYMD() rgblight_sethsv_white() + +//initialize rgb +void matrix_init_user(void) { + rgblight_enable(); + rgblight_mode(1); + rgblight_setrgb_user_base(); +} + +//Set a color based on the layer +layer_state_t layer_state_set_user(layer_state_t state) { + switch(biton32(state)) { + case _LYFK: + rgblight_setrgb_user_LYFK(); + break; + case _LYMED: + rgblight_setrgb_user_LYMED(); + break; + case _LYNUM: + rgblight_setrgb_user_LYNUM(); + break; + case _LYNAV: + rgblight_setrgb_user_LYNAV(); + break; + case _LYMOS: + rgblight_setrgb_user_LYMOS(); + break; + case _LYSYS: + rgblight_setrgb_user_LYSYS(); + break; + case _LYLT: + rgblight_setrgb_user_LYLT(); + break; + case _LYMD: + rgblight_setrgb_user_LYMD(); + break; + default: + rgblight_setrgb_user_base(); + break; + } + return state; +} + + +//Const for shift +const uint8_t shift = MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT); + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + + switch(keycode) { + case KC_LYDEF: + layer_clear(); + return false; + break; + case QWERTY: + if (record->event.pressed) { + set_single_persistent_default_layer(_QWERTY); + } + return false; + break; + case COLEMAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_COLEMAK); + } + return false; + break; + case KC_BSDEL: + if (record->event.pressed) { + if (keyboard_report->mods & shift) { + if (keyboard_report->mods & MOD_BIT(KC_LSFT)) { + unregister_code(KC_LSHIFT); + } + else { + unregister_code(KC_RSHIFT); + } + register_code(KC_DEL); + } + else { + register_code(KC_BSPC); + } + } + else { + unregister_code(KC_DEL); + unregister_code (KC_BSPC); + } + return false; + break; + case KC_FBSLH: + if (record->event.pressed) { + if (keyboard_report->mods & shift) { + if (keyboard_report->mods & MOD_BIT(KC_LSFT)) { + unregister_code(KC_LSHIFT); + } + else { + unregister_code(KC_RSHIFT); + } + register_code(KC_BSLASH); + } + else { + register_code(KC_SLSH); + } + } + else { + unregister_code(KC_BSLASH); + unregister_code (KC_SLSH); + } + return false; + break; + case KC_DOTQ: + if (record->event.pressed) { + if (keyboard_report->mods & shift) { + register_code(KC_SLSH); // shifted slash = ? + } + else { + register_code(KC_DOT); + } + } + else { + unregister_code(KC_SLSH); // shifted slash = ? + unregister_code (KC_DOT); + } + return false; + break; + case KC_CPIPE: + if (record->event.pressed) { + if (keyboard_report->mods & shift) { + register_code(KC_BSLS); + } + else { + register_code(KC_COMM); + } + } + else { + unregister_code(KC_BSLS); + unregister_code (KC_COMM); + } + return false; + break; + } + return true; +}; diff --git a/keyboards/xiudi/xd75/keymaps/tdl-jturner/readme.md b/keyboards/xiudi/xd75/keymaps/tdl-jturner/readme.md new file mode 100644 index 000000000000..a430be0a27b9 --- /dev/null +++ b/keyboards/xiudi/xd75/keymaps/tdl-jturner/readme.md @@ -0,0 +1,12 @@ +/u/tdl-jturner - XD75 Layout +=== + +Keyboard Layout Editor: [Link](http://www.keyboard-layout-editor.com/#/gists/b2b23097ef70fd9170e266e4cbc06c02) + +Make Command: make xiudi/xd75:tdl-jturner + +Notes: +* Based on Qwerty +* Tweaks for DBA & Programming including tap dance braces on lower right, custom shift codes, and F5 access on Nav layer +* Layers are all based on layer control on the left and the right is a 10 key pattern +* Layers include Functions, Media, Numpad, Navigation, Mouse, System, and Lighting diff --git a/keyboards/xd75/keymaps/tdl-jturner/rules.mk b/keyboards/xiudi/xd75/keymaps/tdl-jturner/rules.mk similarity index 100% rename from keyboards/xd75/keymaps/tdl-jturner/rules.mk rename to keyboards/xiudi/xd75/keymaps/tdl-jturner/rules.mk diff --git a/keyboards/xd75/keymaps/tomswartz07/keymap.c b/keyboards/xiudi/xd75/keymaps/tomswartz07/keymap.c similarity index 100% rename from keyboards/xd75/keymaps/tomswartz07/keymap.c rename to keyboards/xiudi/xd75/keymaps/tomswartz07/keymap.c diff --git a/keyboards/xd75/keymaps/via/keymap.c b/keyboards/xiudi/xd75/keymaps/via/keymap.c similarity index 100% rename from keyboards/xd75/keymaps/via/keymap.c rename to keyboards/xiudi/xd75/keymaps/via/keymap.c diff --git a/keyboards/xd75/keymaps/via/readme.md b/keyboards/xiudi/xd75/keymaps/via/readme.md similarity index 100% rename from keyboards/xd75/keymaps/via/readme.md rename to keyboards/xiudi/xd75/keymaps/via/readme.md diff --git a/keyboards/xiudi/xd75/keymaps/via/rules.mk b/keyboards/xiudi/xd75/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/xiudi/xd75/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/xd75/keymaps/xo/config.h b/keyboards/xiudi/xd75/keymaps/xo/config.h similarity index 100% rename from keyboards/xd75/keymaps/xo/config.h rename to keyboards/xiudi/xd75/keymaps/xo/config.h diff --git a/keyboards/xd75/keymaps/xo/keymap.c b/keyboards/xiudi/xd75/keymaps/xo/keymap.c similarity index 100% rename from keyboards/xd75/keymaps/xo/keymap.c rename to keyboards/xiudi/xd75/keymaps/xo/keymap.c diff --git a/keyboards/xd75/keymaps/xo/readme.md b/keyboards/xiudi/xd75/keymaps/xo/readme.md similarity index 100% rename from keyboards/xd75/keymaps/xo/readme.md rename to keyboards/xiudi/xd75/keymaps/xo/readme.md diff --git a/keyboards/xd75/keymaps/xo/rules.mk b/keyboards/xiudi/xd75/keymaps/xo/rules.mk similarity index 100% rename from keyboards/xd75/keymaps/xo/rules.mk rename to keyboards/xiudi/xd75/keymaps/xo/rules.mk diff --git a/keyboards/xiudi/xd75/readme.md b/keyboards/xiudi/xd75/readme.md new file mode 100644 index 000000000000..4b0bf1c3b8ec --- /dev/null +++ b/keyboards/xiudi/xd75/readme.md @@ -0,0 +1,57 @@ +# XD75 + +![XD75](https://cdn.shopify.com/s/files/1/2711/4238/products/HTB1MzOISXXXXXXgXpXXq6xXFXXXO_1024x1024.jpg) + +The XD75 is a 15x5 full-grid ortholinear keyboard manufactured by XIUDI. Available in two different versions: XD75Re with hot swap switch sockets and XD75Am with Alps+MX Stem support that needs soldering. + +This port of the QMK firmware is my first shot at using QMK, so if you see any features done wrong (or just plain missing), feel free to fix them and put in a pull request! + +* Keyboard Maintainer: [The QMK Community](https://github.com/qmk) +* Hardware Supported: XD75Re, XD75Am +* Hardware Availability: [KPrepublic](https://kprepublic.com/products/xd75re-xd75am-xd75-xiudi-60-custom-keyboard-pcb), [AliExpress](https://www.aliexpress.com/item/xd75re-Custom-Mechanical-Keyboard-75-keys-TKG-TOOLS-Underglow-RGB-PCB-GH60-60-programmed-gh60-kle/32818745981.html) + +Make example for this keyboard (after setting up your build environment): + + make xiudi/xd75:default + +Flashing example for this keyboard: + + make xiudi/xd75: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). + +## LED Control + +There are 3 individual LEDs that can be turned on and off. The functions are named according to how they're labeled on the PCB. + +TODO: it would be nice to have PWM support on these LEDs for fade-in/fade-out effects. + +```c +capslock_led_on(); +gp100_led_on(); +gp103_led_on(); + +bool led_update_user(led_t led_state) { + if (led_state.caps_lock) { + capslock_led_on(); + } else { + capslock_led_off(); + } + + if (some_custom_state) { + gp100_led_on(); + } else { + gp100_led_off(); + } + + return false; +} +``` + +For the curious: + +``` +CAPSLOCK_LED B2 +GP103_LED F4 +GP100_LED F7 +``` diff --git a/keyboards/xiudi/xd75/rules.mk b/keyboards/xiudi/xd75/rules.mk new file mode 100644 index 000000000000..d5e2cde58802 --- /dev/null +++ b/keyboards/xiudi/xd75/rules.mk @@ -0,0 +1,21 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +LAYOUTS = ortho_5x15 diff --git a/keyboards/xd75/xd75.c b/keyboards/xiudi/xd75/xd75.c similarity index 100% rename from keyboards/xd75/xd75.c rename to keyboards/xiudi/xd75/xd75.c diff --git a/keyboards/xd75/xd75.h b/keyboards/xiudi/xd75/xd75.h similarity index 100% rename from keyboards/xd75/xd75.h rename to keyboards/xiudi/xd75/xd75.h diff --git a/keyboards/xiudi/xd84/config.h b/keyboards/xiudi/xd84/config.h new file mode 100644 index 000000000000..bba8cf55667f --- /dev/null +++ b/keyboards/xiudi/xd84/config.h @@ -0,0 +1,139 @@ +/* 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 . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7844 // "XD" +#define PRODUCT_ID 0x8484 +#define DEVICE_VER 0x0001 +#define MANUFACTURER KPrepublic +#define PRODUCT XD84 + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 15 + +/* + * 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 { D0, D5 } +//#define MATRIX_COL_PINS { F1, F0, B0 } +//#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +//#define DIODE_DIRECTION COL2ROW + +#define LED_CAPS_LOCK_PIN B6 +#define LED_PIN_ON_STATE 0 + +#define BACKLIGHT_PIN B5 +#define BACKLIGHT_LEVELS 10 +#define BACKLIGHT_ON_STATE 0 +// #define BACKLIGHT_BREATHING + +#define RGB_DI_PIN C7 +#define RGBLED_NUM 7 +#define RGBLIGHT_ANIMATIONS +// #ifdef RGB_DI_PIN +// #define RGBLIGHT_HUE_STEP 8 +// #define RGBLIGHT_SAT_STEP 8 +// #define RGBLIGHT_VAL_STEP 8 +// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +// /*== all animations enable ==*/ +// #define RGBLIGHT_ANIMATIONS +// /*== or choose animations ==*/ +// #define RGBLIGHT_EFFECT_BREATHING +// #define RGBLIGHT_EFFECT_RAINBOW_MOOD +// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL +// #define RGBLIGHT_EFFECT_SNAKE +// #define RGBLIGHT_EFFECT_KNIGHT +// #define RGBLIGHT_EFFECT_CHRISTMAS +// #define RGBLIGHT_EFFECT_STATIC_GRADIENT +// #define RGBLIGHT_EFFECT_RGB_TEST +// #define RGBLIGHT_EFFECT_ALTERNATING +// #endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is userful for the Windows task manager shortcut (ctrl+shift+esc). + */ +// #define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* Bootmagic Lite key configuration */ +// #define BOOTMAGIC_LITE_ROW 0 +// #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/xd84/dev.md b/keyboards/xiudi/xd84/dev.md similarity index 100% rename from keyboards/xd84/dev.md rename to keyboards/xiudi/xd84/dev.md diff --git a/keyboards/xiudi/xd84/info.json b/keyboards/xiudi/xd84/info.json new file mode 100644 index 000000000000..e24a5a92a158 --- /dev/null +++ b/keyboards/xiudi/xd84/info.json @@ -0,0 +1,184 @@ +{ + "keyboard_name": "XD84", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_75_ansi": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":1, "y":0}, + {"label":"F2", "x":2, "y":0}, + {"label":"F3", "x":3, "y":0}, + {"label":"F4", "x":4, "y":0}, + {"label":"F5", "x":5, "y":0}, + {"label":"F6", "x":6, "y":0}, + {"label":"F7", "x":7, "y":0}, + {"label":"F8", "x":8, "y":0}, + {"label":"F9", "x":9, "y":0}, + {"label":"F10", "x":10, "y":0}, + {"label":"F11", "x":11, "y":0}, + {"label":"F12", "x":12, "y":0}, + {"label":"PrtSc", "x":13, "y":0}, + {"label":"Pause", "x":14, "y":0}, + {"label":"Delete", "x":15, "y":0}, + {"label":"~", "x":0, "y":1}, + {"label":"1", "x":1, "y":1}, + {"label":"2", "x":2, "y":1}, + {"label":"3", "x":3, "y":1}, + {"label":"4", "x":4, "y":1}, + {"label":"5", "x":5, "y":1}, + {"label":"6", "x":6, "y":1}, + {"label":"7", "x":7, "y":1}, + {"label":"8", "x":8, "y":1}, + {"label":"9", "x":9, "y":1}, + {"label":"0", "x":10, "y":1}, + {"label":"_", "x":11, "y":1}, + {"label":"+", "x":12, "y":1}, + {"label":"Backspace", "x":13, "y":1, "w":2}, + {"label":"Home", "x":15, "y":1}, + {"label":"Tab", "x":0, "y":2, "w":1.5}, + {"label":"Q", "x":1.5, "y":2}, + {"label":"W", "x":2.5, "y":2}, + {"label":"E", "x":3.5, "y":2}, + {"label":"R", "x":4.5, "y":2}, + {"label":"T", "x":5.5, "y":2}, + {"label":"Y", "x":6.5, "y":2}, + {"label":"U", "x":7.5, "y":2}, + {"label":"I", "x":8.5, "y":2}, + {"label":"O", "x":9.5, "y":2}, + {"label":"P", "x":10.5, "y":2}, + {"label":"{", "x":11.5, "y":2}, + {"label":"}", "x":12.5, "y":2}, + {"label":"|", "x":13.5, "y":2, "w":1.5}, + {"label":"Page Up", "x":15, "y":2}, + {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, + {"label":"A", "x":1.75, "y":3}, + {"label":"S", "x":2.75, "y":3}, + {"label":"D", "x":3.75, "y":3}, + {"label":"F", "x":4.75, "y":3}, + {"label":"G", "x":5.75, "y":3}, + {"label":"H", "x":6.75, "y":3}, + {"label":"J", "x":7.75, "y":3}, + {"label":"K", "x":8.75, "y":3}, + {"label":"L", "x":9.75, "y":3}, + {"label":":", "x":10.75, "y":3}, + {"label":"\"", "x":11.75, "y":3}, + {"label":"Enter", "x":12.75, "y":3, "w":2.25}, + {"label":"Page Down", "x":15, "y":3}, + {"label":"Shift", "x":0, "y":4, "w":2.25}, + {"label":"Z", "x":2.25, "y":4}, + {"label":"X", "x":3.25, "y":4}, + {"label":"C", "x":4.25, "y":4}, + {"label":"V", "x":5.25, "y":4}, + {"label":"B", "x":6.25, "y":4}, + {"label":"N", "x":7.25, "y":4}, + {"label":"M", "x":8.25, "y":4}, + {"label":"<", "x":9.25, "y":4}, + {"label":">", "x":10.25, "y":4}, + {"label":"?", "x":11.25, "y":4}, + {"label":"Shift", "x":12.25, "y":4, "w":1.75}, + {"label":"Up", "x":14, "y":4}, + {"label":"End", "x":15, "y":4}, + {"label":"Ctrl", "x":0, "y":5, "w":1.25}, + {"label":"Win", "x":1.25, "y":5, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5, "w":1.25}, + {"label":"Space", "x":3.75, "y":5, "w":6.25}, + {"label":"Alt", "x":10, "y":5}, + {"label":"Fn", "x":11, "y":5}, + {"label":"Ctrl", "x":12, "y":5}, + {"label":"Left", "x":13, "y":5}, + {"label":"Down", "x":14, "y":5}, + {"label":"Right", "x":15, "y":5} + ] + }, + "LAYOUT_75_iso": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":1, "y":0}, + {"label":"F2", "x":2, "y":0}, + {"label":"F3", "x":3, "y":0}, + {"label":"F4", "x":4, "y":0}, + {"label":"F5", "x":5, "y":0}, + {"label":"F6", "x":6, "y":0}, + {"label":"F7", "x":7, "y":0}, + {"label":"F8", "x":8, "y":0}, + {"label":"F9", "x":9, "y":0}, + {"label":"F10", "x":10, "y":0}, + {"label":"F11", "x":11, "y":0}, + {"label":"F12", "x":12, "y":0}, + {"label":"PrtSc", "x":13, "y":0}, + {"label":"Pause", "x":14, "y":0}, + {"label":"Delete", "x":15, "y":0}, + {"label":"~", "x":0, "y":1}, + {"label":"1", "x":1, "y":1}, + {"label":"2", "x":2, "y":1}, + {"label":"3", "x":3, "y":1}, + {"label":"4", "x":4, "y":1}, + {"label":"5", "x":5, "y":1}, + {"label":"6", "x":6, "y":1}, + {"label":"7", "x":7, "y":1}, + {"label":"8", "x":8, "y":1}, + {"label":"9", "x":9, "y":1}, + {"label":"0", "x":10, "y":1}, + {"label":"_", "x":11, "y":1}, + {"label":"+", "x":12, "y":1}, + {"label":"Backspace", "x":13, "y":1, "w":2}, + {"label":"Home", "x":15, "y":1}, + {"label":"Tab", "x":0, "y":2, "w":1.5}, + {"label":"Q", "x":1.5, "y":2}, + {"label":"W", "x":2.5, "y":2}, + {"label":"E", "x":3.5, "y":2}, + {"label":"R", "x":4.5, "y":2}, + {"label":"T", "x":5.5, "y":2}, + {"label":"Y", "x":6.5, "y":2}, + {"label":"U", "x":7.5, "y":2}, + {"label":"I", "x":8.5, "y":2}, + {"label":"O", "x":9.5, "y":2}, + {"label":"P", "x":10.5, "y":2}, + {"label":"{", "x":11.5, "y":2}, + {"label":"}", "x":12.5, "y":2}, + {"label":"Page Up", "x":15, "y":2}, + {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, + {"label":"A", "x":1.75, "y":3}, + {"label":"S", "x":2.75, "y":3}, + {"label":"D", "x":3.75, "y":3}, + {"label":"F", "x":4.75, "y":3}, + {"label":"G", "x":5.75, "y":3}, + {"label":"H", "x":6.75, "y":3}, + {"label":"J", "x":7.75, "y":3}, + {"label":"K", "x":8.75, "y":3}, + {"label":"L", "x":9.75, "y":3}, + {"label":":", "x":10.75, "y":3}, + {"label":"@", "x":11.75, "y":3}, + {"label":"~", "x":12.75, "y":3}, + {"label":"Enter", "x":13.75, "y":2, "w":1.25, "h":2}, + {"label":"Page Down", "x":15, "y":3}, + {"label":"Shift", "x":0, "y":4, "w":1.25}, + {"label":"|", "x":1.25, "y":4}, + {"label":"Z", "x":2.25, "y":4}, + {"label":"X", "x":3.25, "y":4}, + {"label":"C", "x":4.25, "y":4}, + {"label":"V", "x":5.25, "y":4}, + {"label":"B", "x":6.25, "y":4}, + {"label":"N", "x":7.25, "y":4}, + {"label":"M", "x":8.25, "y":4}, + {"label":"<", "x":9.25, "y":4}, + {"label":">", "x":10.25, "y":4}, + {"label":"?", "x":11.25, "y":4}, + {"label":"Shift", "x":12.25, "y":4, "w":1.75}, + {"label":"Up", "x":14, "y":4}, + {"label":"End", "x":15, "y":4}, + {"label":"Ctrl", "x":0, "y":5, "w":1.25}, + {"label":"Win", "x":1.25, "y":5, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5, "w":1.25}, + {"label":"Space", "x":3.75, "y":5, "w":6.25}, + {"label":"Alt", "x":10, "y":5}, + {"label":"Fn", "x":11, "y":5}, + {"label":"Ctrl", "x":12, "y":5}, + {"label":"Left", "x":13, "y":5}, + {"label":"Down", "x":14, "y":5}, + {"label":"Right", "x":15, "y":5} + ] + } + } +} diff --git a/keyboards/xd84/keymaps/default/keymap.c b/keyboards/xiudi/xd84/keymaps/default/keymap.c similarity index 100% rename from keyboards/xd84/keymaps/default/keymap.c rename to keyboards/xiudi/xd84/keymaps/default/keymap.c diff --git a/keyboards/xd84/keymaps/default_iso/keymap.c b/keyboards/xiudi/xd84/keymaps/default_iso/keymap.c similarity index 100% rename from keyboards/xd84/keymaps/default_iso/keymap.c rename to keyboards/xiudi/xd84/keymaps/default_iso/keymap.c diff --git a/keyboards/xd84/keymaps/via/keymap.c b/keyboards/xiudi/xd84/keymaps/via/keymap.c similarity index 100% rename from keyboards/xd84/keymaps/via/keymap.c rename to keyboards/xiudi/xd84/keymaps/via/keymap.c diff --git a/keyboards/xd84/keymaps/via/readme.md b/keyboards/xiudi/xd84/keymaps/via/readme.md similarity index 100% rename from keyboards/xd84/keymaps/via/readme.md rename to keyboards/xiudi/xd84/keymaps/via/readme.md diff --git a/keyboards/xiudi/xd84/keymaps/via/rules.mk b/keyboards/xiudi/xd84/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/xiudi/xd84/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/xd84/matrix.c b/keyboards/xiudi/xd84/matrix.c similarity index 100% rename from keyboards/xd84/matrix.c rename to keyboards/xiudi/xd84/matrix.c diff --git a/keyboards/xiudi/xd84/readme.md b/keyboards/xiudi/xd84/readme.md new file mode 100644 index 000000000000..4efedca36bda --- /dev/null +++ b/keyboards/xiudi/xd84/readme.md @@ -0,0 +1,23 @@ +# XD84 + +![XD84](https://cdn.shopify.com/s/files/1/2711/4238/products/HTB17eeJSXXXXXbIXFXXq6xXFXXXp_1024x1024.jpg?v=1515505994) + +Keyboard with 84 Keys & RGB LED Underglow +- Designed by Xiudi +- Up to 87 keys + - iso and ansi support +- Uses Kimera core + +* Keyboard Maintainer: QMK Community +* Hardware Supported: XD84 +* Hardware Availability: [KPrepublic](https://kprepublic.com/products/xd84-xiudi-70-custom-keyboard-pcb) + +Make example for this keyboard (after setting up your build environment): + + make xiudi/xd84:default + +Flashing example for this keyboard: + + make xiudi/xd84:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/xiudi/xd84/rules.mk b/keyboards/xiudi/xd84/rules.mk new file mode 100644 index 000000000000..fb90511ad0b5 --- /dev/null +++ b/keyboards/xiudi/xd84/rules.mk @@ -0,0 +1,29 @@ +# 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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +LTO_ENABLE = yes + +# custom matrix setup +CUSTOM_MATRIX = lite + +VPATH += drivers/gpio +SRC += pca9555.c matrix.c +QUANTUM_LIB_SRC += i2c_master.c + +LAYOUTS = 75_ansi 75_iso diff --git a/keyboards/xd84/xd84.c b/keyboards/xiudi/xd84/xd84.c similarity index 100% rename from keyboards/xd84/xd84.c rename to keyboards/xiudi/xd84/xd84.c diff --git a/keyboards/xd84/xd84.h b/keyboards/xiudi/xd84/xd84.h similarity index 100% rename from keyboards/xd84/xd84.h rename to keyboards/xiudi/xd84/xd84.h diff --git a/keyboards/xd84pro/config.h b/keyboards/xiudi/xd84pro/config.h similarity index 100% rename from keyboards/xd84pro/config.h rename to keyboards/xiudi/xd84pro/config.h diff --git a/keyboards/xd84pro/dev.md b/keyboards/xiudi/xd84pro/dev.md similarity index 100% rename from keyboards/xd84pro/dev.md rename to keyboards/xiudi/xd84pro/dev.md diff --git a/keyboards/xiudi/xd84pro/info.json b/keyboards/xiudi/xd84pro/info.json new file mode 100644 index 000000000000..b8e92158b880 --- /dev/null +++ b/keyboards/xiudi/xd84pro/info.json @@ -0,0 +1,275 @@ +{ + "keyboard_name": "XD84 Pro", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":1, "y":0}, + {"label":"F2", "x":2, "y":0}, + {"label":"F3", "x":3, "y":0}, + {"label":"F4", "x":4, "y":0}, + {"label":"F5", "x":5, "y":0}, + {"label":"F6", "x":6, "y":0}, + {"label":"F7", "x":7, "y":0}, + {"label":"F8", "x":8, "y":0}, + {"label":"F9", "x":9, "y":0}, + {"label":"F10", "x":10, "y":0}, + {"label":"F11", "x":11, "y":0}, + {"label":"F12", "x":12, "y":0}, + {"label":"PrtSc", "x":13, "y":0}, + {"label":"Pause", "x":14, "y":0}, + {"label":"Delete", "x":15, "y":0}, + {"label":"~", "x":0, "y":1}, + {"label":"1", "x":1, "y":1}, + {"label":"2", "x":2, "y":1}, + {"label":"3", "x":3, "y":1}, + {"label":"4", "x":4, "y":1}, + {"label":"5", "x":5, "y":1}, + {"label":"6", "x":6, "y":1}, + {"label":"7", "x":7, "y":1}, + {"label":"8", "x":8, "y":1}, + {"label":"9", "x":9, "y":1}, + {"label":"0", "x":10, "y":1}, + {"label":"_", "x":11, "y":1}, + {"label":"+", "x":12, "y":1}, + {"label":"Backspace", "x":13, "y":1}, + {"label":"Backspace", "x":14, "y":1}, + {"label":"Home", "x":15, "y":1}, + {"label":"Tab", "x":0, "y":2, "w":1.5}, + {"label":"Q", "x":1.5, "y":2}, + {"label":"W", "x":2.5, "y":2}, + {"label":"E", "x":3.5, "y":2}, + {"label":"R", "x":4.5, "y":2}, + {"label":"T", "x":5.5, "y":2}, + {"label":"Y", "x":6.5, "y":2}, + {"label":"U", "x":7.5, "y":2}, + {"label":"I", "x":8.5, "y":2}, + {"label":"O", "x":9.5, "y":2}, + {"label":"P", "x":10.5, "y":2}, + {"label":"{", "x":11.5, "y":2}, + {"label":"}", "x":12.5, "y":2}, + {"label":"|", "x":13.5, "y":2, "w":1.5}, + {"label":"Page Up", "x":15, "y":2}, + {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, + {"label":"A", "x":1.75, "y":3}, + {"label":"S", "x":2.75, "y":3}, + {"label":"D", "x":3.75, "y":3}, + {"label":"F", "x":4.75, "y":3}, + {"label":"G", "x":5.75, "y":3}, + {"label":"H", "x":6.75, "y":3}, + {"label":"J", "x":7.75, "y":3}, + {"label":"K", "x":8.75, "y":3}, + {"label":"L", "x":9.75, "y":3}, + {"label":":", "x":10.75, "y":3}, + {"label":"\"", "x":11.75, "y":3}, + {"label":"\\", "x":12.75, "y":3}, + {"label":"Enter", "x":13.75, "y":3, "w":1.25}, + {"label":"Page Down", "x":15, "y":3}, + {"label":"Shift", "x":0, "y":4, "w":1.25}, + {"label":"Shift", "x":1.25, "y":4}, + {"label":"Z", "x":2.25, "y":4}, + {"label":"X", "x":3.25, "y":4}, + {"label":"C", "x":4.25, "y":4}, + {"label":"V", "x":5.25, "y":4}, + {"label":"B", "x":6.25, "y":4}, + {"label":"N", "x":7.25, "y":4}, + {"label":"M", "x":8.25, "y":4}, + {"label":"<", "x":9.25, "y":4}, + {"label":">", "x":10.25, "y":4}, + {"label":"?", "x":11.25, "y":4}, + {"label":"Shift", "x":12.25, "y":4, "w":1.75}, + {"label":"Up", "x":14, "y":4}, + {"label":"End", "x":15, "y":4}, + {"label":"Ctrl", "x":0, "y":5, "w":1.25}, + {"label":"Win", "x":1.25, "y":5, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5, "w":1.25}, + {"label":"Space", "x":3.75, "y":5, "w":6.25}, + {"label":"Alt", "x":10, "y":5}, + {"label":"Fn", "x":11, "y":5}, + {"label":"Ctrl", "x":12, "y":5}, + {"label":"Left", "x":13, "y":5}, + {"label":"Down", "x":14, "y":5}, + {"label":"Right", "x":15, "y":5} + ] + }, + "LAYOUT_75_ansi": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":1, "y":0}, + {"label":"F2", "x":2, "y":0}, + {"label":"F3", "x":3, "y":0}, + {"label":"F4", "x":4, "y":0}, + {"label":"F5", "x":5, "y":0}, + {"label":"F6", "x":6, "y":0}, + {"label":"F7", "x":7, "y":0}, + {"label":"F8", "x":8, "y":0}, + {"label":"F9", "x":9, "y":0}, + {"label":"F10", "x":10, "y":0}, + {"label":"F11", "x":11, "y":0}, + {"label":"F12", "x":12, "y":0}, + {"label":"PrtSc", "x":13, "y":0}, + {"label":"Pause", "x":14, "y":0}, + {"label":"Delete", "x":15, "y":0}, + {"label":"~", "x":0, "y":1}, + {"label":"1", "x":1, "y":1}, + {"label":"2", "x":2, "y":1}, + {"label":"3", "x":3, "y":1}, + {"label":"4", "x":4, "y":1}, + {"label":"5", "x":5, "y":1}, + {"label":"6", "x":6, "y":1}, + {"label":"7", "x":7, "y":1}, + {"label":"8", "x":8, "y":1}, + {"label":"9", "x":9, "y":1}, + {"label":"0", "x":10, "y":1}, + {"label":"_", "x":11, "y":1}, + {"label":"+", "x":12, "y":1}, + {"label":"Backspace", "x":13, "y":1, "w":2}, + {"label":"Home", "x":15, "y":1}, + {"label":"Tab", "x":0, "y":2, "w":1.5}, + {"label":"Q", "x":1.5, "y":2}, + {"label":"W", "x":2.5, "y":2}, + {"label":"E", "x":3.5, "y":2}, + {"label":"R", "x":4.5, "y":2}, + {"label":"T", "x":5.5, "y":2}, + {"label":"Y", "x":6.5, "y":2}, + {"label":"U", "x":7.5, "y":2}, + {"label":"I", "x":8.5, "y":2}, + {"label":"O", "x":9.5, "y":2}, + {"label":"P", "x":10.5, "y":2}, + {"label":"{", "x":11.5, "y":2}, + {"label":"}", "x":12.5, "y":2}, + {"label":"|", "x":13.5, "y":2, "w":1.5}, + {"label":"Page Up", "x":15, "y":2}, + {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, + {"label":"A", "x":1.75, "y":3}, + {"label":"S", "x":2.75, "y":3}, + {"label":"D", "x":3.75, "y":3}, + {"label":"F", "x":4.75, "y":3}, + {"label":"G", "x":5.75, "y":3}, + {"label":"H", "x":6.75, "y":3}, + {"label":"J", "x":7.75, "y":3}, + {"label":"K", "x":8.75, "y":3}, + {"label":"L", "x":9.75, "y":3}, + {"label":":", "x":10.75, "y":3}, + {"label":"\"", "x":11.75, "y":3}, + {"label":"Enter", "x":12.75, "y":3, "w":2.25}, + {"label":"Page Down", "x":15, "y":3}, + {"label":"Shift", "x":0, "y":4, "w":2.25}, + {"label":"Z", "x":2.25, "y":4}, + {"label":"X", "x":3.25, "y":4}, + {"label":"C", "x":4.25, "y":4}, + {"label":"V", "x":5.25, "y":4}, + {"label":"B", "x":6.25, "y":4}, + {"label":"N", "x":7.25, "y":4}, + {"label":"M", "x":8.25, "y":4}, + {"label":"<", "x":9.25, "y":4}, + {"label":">", "x":10.25, "y":4}, + {"label":"?", "x":11.25, "y":4}, + {"label":"Shift", "x":12.25, "y":4, "w":1.75}, + {"label":"Up", "x":14, "y":4}, + {"label":"End", "x":15, "y":4}, + {"label":"Ctrl", "x":0, "y":5, "w":1.25}, + {"label":"Win", "x":1.25, "y":5, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5, "w":1.25}, + {"label":"Space", "x":3.75, "y":5, "w":6.25}, + {"label":"Alt", "x":10, "y":5}, + {"label":"Fn", "x":11, "y":5}, + {"label":"Ctrl", "x":12, "y":5}, + {"label":"Left", "x":13, "y":5}, + {"label":"Down", "x":14, "y":5}, + {"label":"Right", "x":15, "y":5} + ] + }, + "LAYOUT_75_iso": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":1, "y":0}, + {"label":"F2", "x":2, "y":0}, + {"label":"F3", "x":3, "y":0}, + {"label":"F4", "x":4, "y":0}, + {"label":"F5", "x":5, "y":0}, + {"label":"F6", "x":6, "y":0}, + {"label":"F7", "x":7, "y":0}, + {"label":"F8", "x":8, "y":0}, + {"label":"F9", "x":9, "y":0}, + {"label":"F10", "x":10, "y":0}, + {"label":"F11", "x":11, "y":0}, + {"label":"F12", "x":12, "y":0}, + {"label":"PrtSc", "x":13, "y":0}, + {"label":"Pause", "x":14, "y":0}, + {"label":"Delete", "x":15, "y":0}, + {"label":"~", "x":0, "y":1}, + {"label":"1", "x":1, "y":1}, + {"label":"2", "x":2, "y":1}, + {"label":"3", "x":3, "y":1}, + {"label":"4", "x":4, "y":1}, + {"label":"5", "x":5, "y":1}, + {"label":"6", "x":6, "y":1}, + {"label":"7", "x":7, "y":1}, + {"label":"8", "x":8, "y":1}, + {"label":"9", "x":9, "y":1}, + {"label":"0", "x":10, "y":1}, + {"label":"_", "x":11, "y":1}, + {"label":"+", "x":12, "y":1}, + {"label":"Backspace", "x":13, "y":1, "w":2}, + {"label":"Home", "x":15, "y":1}, + {"label":"Tab", "x":0, "y":2, "w":1.5}, + {"label":"Q", "x":1.5, "y":2}, + {"label":"W", "x":2.5, "y":2}, + {"label":"E", "x":3.5, "y":2}, + {"label":"R", "x":4.5, "y":2}, + {"label":"T", "x":5.5, "y":2}, + {"label":"Y", "x":6.5, "y":2}, + {"label":"U", "x":7.5, "y":2}, + {"label":"I", "x":8.5, "y":2}, + {"label":"O", "x":9.5, "y":2}, + {"label":"P", "x":10.5, "y":2}, + {"label":"{", "x":11.5, "y":2}, + {"label":"}", "x":12.5, "y":2}, + {"label":"Page Up", "x":15, "y":2}, + {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, + {"label":"A", "x":1.75, "y":3}, + {"label":"S", "x":2.75, "y":3}, + {"label":"D", "x":3.75, "y":3}, + {"label":"F", "x":4.75, "y":3}, + {"label":"G", "x":5.75, "y":3}, + {"label":"H", "x":6.75, "y":3}, + {"label":"J", "x":7.75, "y":3}, + {"label":"K", "x":8.75, "y":3}, + {"label":"L", "x":9.75, "y":3}, + {"label":":", "x":10.75, "y":3}, + {"label":"@", "x":11.75, "y":3}, + {"label":"~", "x":12.75, "y":3}, + {"label":"Enter", "x":13.75, "y":2, "w":1.25, "h":2}, + {"label":"Page Down", "x":15, "y":3}, + {"label":"Shift", "x":0, "y":4, "w":1.25}, + {"label":"|", "x":1.25, "y":4}, + {"label":"Z", "x":2.25, "y":4}, + {"label":"X", "x":3.25, "y":4}, + {"label":"C", "x":4.25, "y":4}, + {"label":"V", "x":5.25, "y":4}, + {"label":"B", "x":6.25, "y":4}, + {"label":"N", "x":7.25, "y":4}, + {"label":"M", "x":8.25, "y":4}, + {"label":"<", "x":9.25, "y":4}, + {"label":">", "x":10.25, "y":4}, + {"label":"?", "x":11.25, "y":4}, + {"label":"Shift", "x":12.25, "y":4, "w":1.75}, + {"label":"Up", "x":14, "y":4}, + {"label":"End", "x":15, "y":4}, + {"label":"Ctrl", "x":0, "y":5, "w":1.25}, + {"label":"Win", "x":1.25, "y":5, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5, "w":1.25}, + {"label":"Space", "x":3.75, "y":5, "w":6.25}, + {"label":"Alt", "x":10, "y":5}, + {"label":"Fn", "x":11, "y":5}, + {"label":"Ctrl", "x":12, "y":5}, + {"label":"Left", "x":13, "y":5}, + {"label":"Down", "x":14, "y":5}, + {"label":"Right", "x":15, "y":5} + ] + } + } +} diff --git a/keyboards/xd84pro/keymaps/default/keymap.c b/keyboards/xiudi/xd84pro/keymaps/default/keymap.c similarity index 100% rename from keyboards/xd84pro/keymaps/default/keymap.c rename to keyboards/xiudi/xd84pro/keymaps/default/keymap.c diff --git a/keyboards/xd84pro/keymaps/default_iso/keymap.c b/keyboards/xiudi/xd84pro/keymaps/default_iso/keymap.c similarity index 100% rename from keyboards/xd84pro/keymaps/default_iso/keymap.c rename to keyboards/xiudi/xd84pro/keymaps/default_iso/keymap.c diff --git a/keyboards/xd84pro/keymaps/via/keymap.c b/keyboards/xiudi/xd84pro/keymaps/via/keymap.c similarity index 100% rename from keyboards/xd84pro/keymaps/via/keymap.c rename to keyboards/xiudi/xd84pro/keymaps/via/keymap.c diff --git a/keyboards/xd84pro/keymaps/via/readme.md b/keyboards/xiudi/xd84pro/keymaps/via/readme.md similarity index 100% rename from keyboards/xd84pro/keymaps/via/readme.md rename to keyboards/xiudi/xd84pro/keymaps/via/readme.md diff --git a/keyboards/xiudi/xd84pro/keymaps/via/rules.mk b/keyboards/xiudi/xd84pro/keymaps/via/rules.mk new file mode 100644 index 000000000000..43061db1dd46 --- /dev/null +++ b/keyboards/xiudi/xd84pro/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/xiudi/xd84pro/readme.md b/keyboards/xiudi/xd84pro/readme.md new file mode 100644 index 000000000000..7641a26b7525 --- /dev/null +++ b/keyboards/xiudi/xd84pro/readme.md @@ -0,0 +1,24 @@ +# XD84 Pro + +![XD84 Pro](https://cdn.shopify.com/s/files/1/2711/4238/products/Hf5d4a9571a524cb78870def7403f5acc5.jpg?v=1574416288) + +Keyboard with 84 Keys, RGB LED Underglow, and USB-C Connection +- Designed by Xiudi +- Up to 87 keys + - iso and ansi support + +The silkscreen printing on the PCB refers to this as the "XD84 v2.0". + +* Keyboard Maintainer: QMK Community +* Hardware Supported: XD84 Pro +* Hardware Availability: [KPrepublic](https://kprepublic.com/products/xd84pro-xd84-pro-custom-mechanical-keyboard-kit-75-supports-tkg-tools-support-underglow-rgb-pcb-programmed-gh84-kle-type-c) + +Make example for this keyboard (after setting up your build environment): + + make xiudi/xd84pro:default + +Flashing example for this keyboard: + + make xiudi/xd84pro:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/xiudi/xd84pro/rules.mk b/keyboards/xiudi/xd84pro/rules.mk new file mode 100644 index 000000000000..b429486f141c --- /dev/null +++ b/keyboards/xiudi/xd84pro/rules.mk @@ -0,0 +1,21 @@ +# 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 +# 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 = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +LAYOUTS = 75_ansi 75_iso diff --git a/keyboards/xd84pro/xd84pro.c b/keyboards/xiudi/xd84pro/xd84pro.c similarity index 100% rename from keyboards/xd84pro/xd84pro.c rename to keyboards/xiudi/xd84pro/xd84pro.c diff --git a/keyboards/xd84pro/xd84pro.h b/keyboards/xiudi/xd84pro/xd84pro.h similarity index 100% rename from keyboards/xd84pro/xd84pro.h rename to keyboards/xiudi/xd84pro/xd84pro.h diff --git a/keyboards/xiudi/xd87/config.h b/keyboards/xiudi/xd87/config.h new file mode 100644 index 000000000000..41e8bf36905e --- /dev/null +++ b/keyboards/xiudi/xd87/config.h @@ -0,0 +1,125 @@ +/* +Copyright 2018 Alexander Fougner + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7844 // "XD" +#define PRODUCT_ID 0x8787 +#define DEVICE_VER 0x0001 +#define MANUFACTURER KP Republic +#define PRODUCT XD87 TKL + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 17 + +/* + * 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 { D1, B0, B1, C7, D3, D5 } + +#define MATRIX_COL_PINS { E6, F0, F1, F4, F5, F6, F7, B5, B6, C6, D4, D6, D7, B4, B2, B3, D2 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +#define LED_CAPS_LOCK_PIN E2 +#define LED_PIN_ON_STATE 0 + +#define BACKLIGHT_PIN D0 +// #define BACKLIGHT_BREATHING +#define BACKLIGHT_LEVELS 3 +#define BACKLIGHT_ON_STATE 0 + +#define RGB_DI_PIN B7 +#ifdef RGB_DI_PIN +#define RGBLIGHT_ANIMATIONS +#define RGBLED_NUM 14 +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is userful for the Windows task manager shortcut (ctrl+shift+esc). + */ +// #define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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/xiudi/xd87/info.json b/keyboards/xiudi/xd87/info.json new file mode 100644 index 000000000000..4f4f82fdaf35 --- /dev/null +++ b/keyboards/xiudi/xd87/info.json @@ -0,0 +1,289 @@ +{ + "keyboard_name": "XD87", + "url": "https://kprepublic.com/products/hot-swappable-xd87-hs-xd87-custom-mechanical-keyboard-kit80-supports-tkg-tools-support-underglow-rgb-pcb-programmed-gh80-kle", + "maintainer": "qmk", + "layouts": { + "LAYOUT_all": { + "layout": [ + { "label": "K00", "x": 0, "y": 0 }, + { "label": "K01", "x": 1, "y": 0 }, + { "label": "K02", "x": 2, "y": 0 }, + { "label": "K03", "x": 3, "y": 0 }, + { "label": "K04", "x": 4, "y": 0 }, + { "label": "K05", "x": 5, "y": 0 }, + { "label": "K06", "x": 6.5, "y": 0 }, + { "label": "K07", "x": 7.5, "y": 0 }, + { "label": "K08", "x": 8.5, "y": 0 }, + { "label": "K09", "x": 9.5, "y": 0 }, + { "label": "K0A", "x": 11, "y": 0 }, + { "label": "K0B", "x": 12, "y": 0 }, + { "label": "K0C", "x": 13, "y": 0 }, + { "label": "K0D", "x": 14, "y": 0 }, + { "label": "K0E", "x": 15.25, "y": 0 }, + { "label": "K0F", "x": 16.25, "y": 0 }, + { "label": "K0G", "x": 17.25, "y": 0 }, + { "label": "K10", "x": 0, "y": 1.25 }, + { "label": "K11", "x": 1, "y": 1.25 }, + { "label": "K12", "x": 2, "y": 1.25 }, + { "label": "K13", "x": 3, "y": 1.25 }, + { "label": "K14", "x": 4, "y": 1.25 }, + { "label": "K15", "x": 5, "y": 1.25 }, + { "label": "K16", "x": 6, "y": 1.25 }, + { "label": "K17", "x": 7, "y": 1.25 }, + { "label": "K18", "x": 8, "y": 1.25 }, + { "label": "K19", "x": 9, "y": 1.25 }, + { "label": "K1A", "x": 10, "y": 1.25 }, + { "label": "K1B", "x": 11, "y": 1.25 }, + { "label": "K1C", "x": 12, "y": 1.25 }, + { "label": "K1D", "x": 13, "y": 1.25 }, + { "label": "K3E", "x": 14, "y": 1.25 }, + { "label": "K1E", "x": 15.25, "y": 1.25 }, + { "label": "K1F", "x": 16.25, "y": 1.25 }, + { "label": "K1G", "x": 17.25, "y": 1.25 }, + { "label": "K20", "x": 0, "y": 2.25, "w": 1.5 }, + { "label": "K21", "x": 1.5, "y": 2.25 }, + { "label": "K22", "x": 2.5, "y": 2.25 }, + { "label": "K23", "x": 3.5, "y": 2.25 }, + { "label": "K24", "x": 4.5, "y": 2.25 }, + { "label": "K25", "x": 5.5, "y": 2.25 }, + { "label": "K26", "x": 6.5, "y": 2.25 }, + { "label": "K27", "x": 7.5, "y": 2.25 }, + { "label": "K28", "x": 8.5, "y": 2.25 }, + { "label": "K29", "x": 9.5, "y": 2.25 }, + { "label": "K2A", "x": 10.5, "y": 2.25 }, + { "label": "K2B", "x": 11.5, "y": 2.25 }, + { "label": "K2C", "x": 12.5, "y": 2.25 }, + { "label": "K2D", "x": 13.5, "y": 2.25, "w": 1.5 }, + { "label": "K2E", "x": 15.25, "y": 2.25 }, + { "label": "K2F", "x": 16.25, "y": 2.25 }, + { "label": "K2G", "x": 17.25, "y": 2.25 }, + { "label": "K30", "x": 0, "y": 3.25, "w": 1.75 }, + { "label": "K31", "x": 1.75, "y": 3.25 }, + { "label": "K32", "x": 2.75, "y": 3.25 }, + { "label": "K33", "x": 3.75, "y": 3.25 }, + { "label": "K34", "x": 4.75, "y": 3.25 }, + { "label": "K35", "x": 5.75, "y": 3.25 }, + { "label": "K36", "x": 6.75, "y": 3.25 }, + { "label": "K37", "x": 7.75, "y": 3.25 }, + { "label": "K38", "x": 8.75, "y": 3.25 }, + { "label": "K39", "x": 9.75, "y": 3.25 }, + { "label": "K3A", "x": 10.75, "y": 3.25 }, + { "label": "K3B", "x": 11.75, "y": 3.25 }, + { "label": "K3C", "x": 12.75, "y": 3.25 }, + { "label": "K3D", "x": 13.75, "y": 3.25, "w": 1.25 }, + { "label": "K40", "x": 0, "y": 4.25, "w": 1.25 }, + { "label": "K41", "x": 1.25, "y": 4.25 }, + { "label": "K42", "x": 2.25, "y": 4.25 }, + { "label": "K43", "x": 3.25, "y": 4.25 }, + { "label": "K44", "x": 4.25, "y": 4.25 }, + { "label": "K45", "x": 5.25, "y": 4.25 }, + { "label": "K46", "x": 6.25, "y": 4.25 }, + { "label": "K47", "x": 7.25, "y": 4.25 }, + { "label": "K48", "x": 8.25, "y": 4.25 }, + { "label": "K49", "x": 9.25, "y": 4.25 }, + { "label": "K4A", "x": 10.25, "y": 4.25 }, + { "label": "K4B", "x": 11.25, "y": 4.25 }, + { "label": "K4C", "x": 12.25, "y": 4.25, "w": 1.75 }, + { "label": "K4D", "x": 14, "y": 4.25 }, + { "label": "K4E", "x": 15.25, "y": 4.25 }, + { "label": "K4F", "x": 16.25, "y": 4.25 }, + { "label": "K4G", "x": 17.25, "y": 4.25 }, + { "label": "K50", "x": 0, "y": 5.25, "w": 1.5 }, + { "label": "K51", "x": 1.5, "y": 5.25 }, + { "label": "K52", "x": 2.5, "y": 5.25, "w": 1.5 }, + { "label": "K55", "x": 4, "y": 5.25, "w": 3 }, + { "label": "K58", "x": 7, "y": 5.25, "w": 3 }, + { "label": "K5A", "x": 10, "y": 5.25, "w": 1.25 }, + { "label": "K5B", "x": 11.25, "y": 5.25, "w": 1.25 }, + { "label": "K5C", "x": 12.5, "y": 5.25, "w": 1.25 }, + { "label": "K5D", "x": 13.75, "y": 5.25, "w": 1.25 }, + { "label": "K5E", "x": 15.25, "y": 5.25 }, + { "label": "K5F", "x": 16.25, "y": 5.25 }, + { "label": "K5G", "x": 17.25, "y": 5.25 } + ] + }, + "LAYOUT_tkl_ansi": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "F1", "x": 2, "y": 0 }, + { "label": "F2", "x": 3, "y": 0 }, + { "label": "F3", "x": 4, "y": 0 }, + { "label": "F4", "x": 5, "y": 0 }, + { "label": "F5", "x": 6.5, "y": 0 }, + { "label": "F6", "x": 7.5, "y": 0 }, + { "label": "F7", "x": 8.5, "y": 0 }, + { "label": "F8", "x": 9.5, "y": 0 }, + { "label": "F9", "x": 11, "y": 0 }, + { "label": "F10", "x": 12, "y": 0 }, + { "label": "F11", "x": 13, "y": 0 }, + { "label": "F12", "x": 14, "y": 0 }, + { "label": "Print Screen", "x": 15.25, "y": 0 }, + { "label": "Scroll Lock", "x": 16.25, "y": 0 }, + { "label": "Pause", "x": 17.25, "y": 0 }, + { "label": "`", "x": 0, "y": 1.25 }, + { "label": "1", "x": 1, "y": 1.25 }, + { "label": "2", "x": 2, "y": 1.25 }, + { "label": "3", "x": 3, "y": 1.25 }, + { "label": "4", "x": 4, "y": 1.25 }, + { "label": "5", "x": 5, "y": 1.25 }, + { "label": "6", "x": 6, "y": 1.25 }, + { "label": "7", "x": 7, "y": 1.25 }, + { "label": "8", "x": 8, "y": 1.25 }, + { "label": "9", "x": 9, "y": 1.25 }, + { "label": "0", "x": 10, "y": 1.25 }, + { "label": "-", "x": 11, "y": 1.25 }, + { "label": "=", "x": 12, "y": 1.25 }, + { "label": "Backspace", "x": 13, "y": 1.25, "w": 2 }, + { "label": "Insert", "x": 15.25, "y": 1.25 }, + { "label": "Home", "x": 16.25, "y": 1.25 }, + { "label": "PgUp", "x": 17.25, "y": 1.25 }, + { "label": "Tab", "x": 0, "y": 2.25, "w": 1.5 }, + { "label": "Q", "x": 1.5, "y": 2.25 }, + { "label": "W", "x": 2.5, "y": 2.25 }, + { "label": "E", "x": 3.5, "y": 2.25 }, + { "label": "R", "x": 4.5, "y": 2.25 }, + { "label": "T", "x": 5.5, "y": 2.25 }, + { "label": "Y", "x": 6.5, "y": 2.25 }, + { "label": "U", "x": 7.5, "y": 2.25 }, + { "label": "I", "x": 8.5, "y": 2.25 }, + { "label": "O", "x": 9.5, "y": 2.25 }, + { "label": "P", "x": 10.5, "y": 2.25 }, + { "label": "[", "x": 11.5, "y": 2.25 }, + { "label": "]", "x": 12.5, "y": 2.25 }, + { "label": "\\", "x": 13.5, "y": 2.25, "w": 1.5 }, + { "label": "Delete", "x": 15.25, "y": 2.25 }, + { "label": "End", "x": 16.25, "y": 2.25 }, + { "label": "PgDn", "x": 17.25, "y": 2.25 }, + { "label": "Caps Lock", "x": 0, "y": 3.25, "w": 1.75 }, + { "label": "A", "x": 1.75, "y": 3.25 }, + { "label": "S", "x": 2.75, "y": 3.25 }, + { "label": "D", "x": 3.75, "y": 3.25 }, + { "label": "F", "x": 4.75, "y": 3.25 }, + { "label": "G", "x": 5.75, "y": 3.25 }, + { "label": "H", "x": 6.75, "y": 3.25 }, + { "label": "J", "x": 7.75, "y": 3.25 }, + { "label": "K", "x": 8.75, "y": 3.25 }, + { "label": "L", "x": 9.75, "y": 3.25 }, + { "label": ";", "x": 10.75, "y": 3.25 }, + { "label": "'", "x": 11.75, "y": 3.25 }, + { "label": "Enter", "x": 12.75, "y": 3.25, "w": 2.25 }, + { "label": "Shift", "x": 0, "y": 4.25, "w": 2.25 }, + { "label": "Z", "x": 2.25, "y": 4.25 }, + { "label": "X", "x": 3.25, "y": 4.25 }, + { "label": "C", "x": 4.25, "y": 4.25 }, + { "label": "V", "x": 5.25, "y": 4.25 }, + { "label": "B", "x": 6.25, "y": 4.25 }, + { "label": "N", "x": 7.25, "y": 4.25 }, + { "label": "M", "x": 8.25, "y": 4.25 }, + { "label": ",", "x": 9.25, "y": 4.25 }, + { "label": ".", "x": 10.25, "y": 4.25 }, + { "label": "/", "x": 11.25, "y": 4.25 }, + { "label": "Shift", "x": 12.25, "y": 4.25, "w": 2.75 }, + { "label": "Up", "x": 16.25, "y": 4.25 }, + { "label": "Ctrl", "x": 0, "y": 5.25, "w": 1.25 }, + { "label": "Win", "x": 1.25, "y": 5.25, "w": 1.25 }, + { "label": "Alt", "x": 2.5, "y": 5.25, "w": 1.25 }, + { "label": "Space", "x": 3.75, "y": 5.25, "w": 6.25 }, + { "label": "Alt", "x": 10, "y": 5.25, "w": 1.25 }, + { "label": "Win", "x": 11.25, "y": 5.25, "w": 1.25 }, + { "label": "Menu", "x": 12.5, "y": 5.25, "w": 1.25 }, + { "label": "Ctrl", "x": 13.75, "y": 5.25, "w": 1.25 }, + { "label": "Left", "x": 15.25, "y": 5.25 }, + { "label": "Down", "x": 16.25, "y": 5.25 }, + { "label": "Right", "x": 17.25, "y": 5.25 } + ] + }, + "LAYOUT_tkl_iso": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0 }, + { "label": "F1", "x": 2, "y": 0 }, + { "label": "F2", "x": 3, "y": 0 }, + { "label": "F3", "x": 4, "y": 0 }, + { "label": "F4", "x": 5, "y": 0 }, + { "label": "F5", "x": 6.5, "y": 0 }, + { "label": "F6", "x": 7.5, "y": 0 }, + { "label": "F7", "x": 8.5, "y": 0 }, + { "label": "F8", "x": 9.5, "y": 0 }, + { "label": "F9", "x": 11, "y": 0 }, + { "label": "F10", "x": 12, "y": 0 }, + { "label": "F11", "x": 13, "y": 0 }, + { "label": "F12", "x": 14, "y": 0 }, + { "label": "Print Screen", "x": 15.25, "y": 0 }, + { "label": "Scroll Lock", "x": 16.25, "y": 0 }, + { "label": "Pause", "x": 17.25, "y": 0 }, + { "label": "`", "x": 0, "y": 1.25 }, + { "label": "1", "x": 1, "y": 1.25 }, + { "label": "2", "x": 2, "y": 1.25 }, + { "label": "3", "x": 3, "y": 1.25 }, + { "label": "4", "x": 4, "y": 1.25 }, + { "label": "5", "x": 5, "y": 1.25 }, + { "label": "6", "x": 6, "y": 1.25 }, + { "label": "7", "x": 7, "y": 1.25 }, + { "label": "8", "x": 8, "y": 1.25 }, + { "label": "9", "x": 9, "y": 1.25 }, + { "label": "0", "x": 10, "y": 1.25 }, + { "label": "-", "x": 11, "y": 1.25 }, + { "label": "=", "x": 12, "y": 1.25 }, + { "label": "Backspace", "x": 13, "y": 1.25, "w": 2 }, + { "label": "Insert", "x": 15.25, "y": 1.25 }, + { "label": "Home", "x": 16.25, "y": 1.25 }, + { "label": "PgUp", "x": 17.25, "y": 1.25 }, + { "label": "Tab", "x": 0, "y": 2.25, "w": 1.5 }, + { "label": "Q", "x": 1.5, "y": 2.25 }, + { "label": "W", "x": 2.5, "y": 2.25 }, + { "label": "E", "x": 3.5, "y": 2.25 }, + { "label": "R", "x": 4.5, "y": 2.25 }, + { "label": "T", "x": 5.5, "y": 2.25 }, + { "label": "Y", "x": 6.5, "y": 2.25 }, + { "label": "U", "x": 7.5, "y": 2.25 }, + { "label": "I", "x": 8.5, "y": 2.25 }, + { "label": "O", "x": 9.5, "y": 2.25 }, + { "label": "P", "x": 10.5, "y": 2.25 }, + { "label": "[", "x": 11.5, "y": 2.25 }, + { "label": "]", "x": 12.5, "y": 2.25 }, + { "label": "Delete", "x": 15.25, "y": 2.25 }, + { "label": "End", "x": 16.25, "y": 2.25 }, + { "label": "PgDn", "x": 17.25, "y": 2.25 }, + { "label": "Caps Lock", "x": 0, "y": 3.25, "w": 1.75 }, + { "label": "A", "x": 1.75, "y": 3.25 }, + { "label": "S", "x": 2.75, "y": 3.25 }, + { "label": "D", "x": 3.75, "y": 3.25 }, + { "label": "F", "x": 4.75, "y": 3.25 }, + { "label": "G", "x": 5.75, "y": 3.25 }, + { "label": "H", "x": 6.75, "y": 3.25 }, + { "label": "J", "x": 7.75, "y": 3.25 }, + { "label": "K", "x": 8.75, "y": 3.25 }, + { "label": "L", "x": 9.75, "y": 3.25 }, + { "label": ";", "x": 10.75, "y": 3.25 }, + { "label": "'", "x": 11.75, "y": 3.25 }, + { "label": "#", "x": 12.75, "y": 3.25 }, + { "label": "Enter", "x": 13.75, "y": 2.25, "w": 1.25, "h": 2 }, + { "label": "Shift", "x": 0, "y": 4.25, "w": 1.25 }, + { "label": "\\", "x": 1.25, "y": 4.25 }, + { "label": "Z", "x": 2.25, "y": 4.25 }, + { "label": "X", "x": 3.25, "y": 4.25 }, + { "label": "C", "x": 4.25, "y": 4.25 }, + { "label": "V", "x": 5.25, "y": 4.25 }, + { "label": "B", "x": 6.25, "y": 4.25 }, + { "label": "N", "x": 7.25, "y": 4.25 }, + { "label": "M", "x": 8.25, "y": 4.25 }, + { "label": ",", "x": 9.25, "y": 4.25 }, + { "label": ".", "x": 10.25, "y": 4.25 }, + { "label": "/", "x": 11.25, "y": 4.25 }, + { "label": "Shift", "x": 12.25, "y": 4.25, "w": 2.75 }, + { "label": "Up", "x": 16.25, "y": 4.25 }, + { "label": "Ctrl", "x": 0, "y": 5.25, "w": 1.25 }, + { "label": "Win", "x": 1.25, "y": 5.25, "w": 1.25 }, + { "label": "Alt", "x": 2.5, "y": 5.25, "w": 1.25 }, + { "label": "Space", "x": 3.75, "y": 5.25, "w": 6.25 }, + { "label": "AltGr", "x": 10, "y": 5.25, "w": 1.25 }, + { "label": "Win", "x": 11.25, "y": 5.25, "w": 1.25 }, + { "label": "Menu", "x": 12.5, "y": 5.25, "w": 1.25 }, + { "label": "Ctrl", "x": 13.75, "y": 5.25, "w": 1.25 }, + { "label": "Left", "x": 15.25, "y": 5.25 }, + { "label": "Down", "x": 16.25, "y": 5.25 }, + { "label": "Right", "x": 17.25, "y": 5.25 } + ] + } + } +} diff --git a/keyboards/xd87/keymaps/default/config.h b/keyboards/xiudi/xd87/keymaps/default/config.h similarity index 100% rename from keyboards/xd87/keymaps/default/config.h rename to keyboards/xiudi/xd87/keymaps/default/config.h diff --git a/keyboards/xiudi/xd87/keymaps/default/keymap.c b/keyboards/xiudi/xd87/keymaps/default/keymap.c new file mode 100644 index 000000000000..d36f7d9649ed --- /dev/null +++ b/keyboards/xiudi/xd87/keymaps/default/keymap.c @@ -0,0 +1,56 @@ +/* Copyright 2018 Alexander Fougner + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines the keycodes used by our macros in process_record_user +enum custom_keycodes { + QMKBEST = SAFE_RANGE, + QMKURL +}; + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_tkl_iso(\ + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, \ + KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_NUHS, KC_ENT, \ + KC_LSFT,KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \ + KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ) +}; + + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QMKBEST: + if (record->event.pressed) { + // when keycode QMKBEST is pressed + SEND_STRING("QMK is the best thing ever!"); + } else { + // when keycode QMKBEST is released + } + break; + case QMKURL: + if (record->event.pressed) { + // when keycode QMKURL is pressed + SEND_STRING("https://qmk.fm/" SS_TAP(X_ENTER)); + } else { + // when keycode QMKURL is released + } + break; + } + return true; +} diff --git a/keyboards/xd87/keymaps/default/readme.md b/keyboards/xiudi/xd87/keymaps/default/readme.md similarity index 100% rename from keyboards/xd87/keymaps/default/readme.md rename to keyboards/xiudi/xd87/keymaps/default/readme.md diff --git a/keyboards/xd87/keymaps/default_underglow/config.h b/keyboards/xiudi/xd87/keymaps/default_underglow/config.h similarity index 100% rename from keyboards/xd87/keymaps/default_underglow/config.h rename to keyboards/xiudi/xd87/keymaps/default_underglow/config.h diff --git a/keyboards/xiudi/xd87/keymaps/default_underglow/keymap.c b/keyboards/xiudi/xd87/keymaps/default_underglow/keymap.c new file mode 100755 index 000000000000..47dd4dfe88d7 --- /dev/null +++ b/keyboards/xiudi/xd87/keymaps/default_underglow/keymap.c @@ -0,0 +1,62 @@ +/* Copyright 2019 Louwii + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines the keycodes used by our macros in process_record_user +enum custom_keycodes { + QMKBEST = SAFE_RANGE, + QMKURL +}; + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_tkl_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT,MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), + [1] = LAYOUT_tkl_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_VAI, RGB_MOD, RGB_HUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, RGB_VAD, RGB_RMOD,RGB_HUD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ) +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QMKBEST: + if (record->event.pressed) { + // when keycode QMKBEST is pressed + SEND_STRING("QMK is the best thing ever!"); + } else { + // when keycode QMKBEST is released + } + break; + case QMKURL: + if (record->event.pressed) { + // when keycode QMKURL is pressed + SEND_STRING("https://qmk.fm/" SS_TAP(X_ENTER)); + } else { + // when keycode QMKURL is released + } + break; + } + return true; +} diff --git a/keyboards/xd87/keymaps/default_underglow/readme.md b/keyboards/xiudi/xd87/keymaps/default_underglow/readme.md similarity index 100% rename from keyboards/xd87/keymaps/default_underglow/readme.md rename to keyboards/xiudi/xd87/keymaps/default_underglow/readme.md diff --git a/keyboards/xiudi/xd87/keymaps/default_underglow/rules.mk b/keyboards/xiudi/xd87/keymaps/default_underglow/rules.mk new file mode 100755 index 000000000000..fa5f343e7064 --- /dev/null +++ b/keyboards/xiudi/xd87/keymaps/default_underglow/rules.mk @@ -0,0 +1,3 @@ +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +COMMAND_ENABLE = no +RGBLIGHT_ENABLE = yes diff --git a/keyboards/xd87/keymaps/mac_underglow/keymap.c b/keyboards/xiudi/xd87/keymaps/mac_underglow/keymap.c similarity index 100% rename from keyboards/xd87/keymaps/mac_underglow/keymap.c rename to keyboards/xiudi/xd87/keymaps/mac_underglow/keymap.c diff --git a/keyboards/xd87/keymaps/mac_underglow/readme.md b/keyboards/xiudi/xd87/keymaps/mac_underglow/readme.md similarity index 100% rename from keyboards/xd87/keymaps/mac_underglow/readme.md rename to keyboards/xiudi/xd87/keymaps/mac_underglow/readme.md diff --git a/keyboards/xiudi/xd87/keymaps/mac_underglow/rules.mk b/keyboards/xiudi/xd87/keymaps/mac_underglow/rules.mk new file mode 100755 index 000000000000..fa5f343e7064 --- /dev/null +++ b/keyboards/xiudi/xd87/keymaps/mac_underglow/rules.mk @@ -0,0 +1,3 @@ +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +COMMAND_ENABLE = no +RGBLIGHT_ENABLE = yes diff --git a/keyboards/xd87/keymaps/via/keymap.c b/keyboards/xiudi/xd87/keymaps/via/keymap.c similarity index 100% rename from keyboards/xd87/keymaps/via/keymap.c rename to keyboards/xiudi/xd87/keymaps/via/keymap.c diff --git a/keyboards/xd87/keymaps/via/readme.md b/keyboards/xiudi/xd87/keymaps/via/readme.md similarity index 100% rename from keyboards/xd87/keymaps/via/readme.md rename to keyboards/xiudi/xd87/keymaps/via/readme.md diff --git a/keyboards/xiudi/xd87/keymaps/via/rules.mk b/keyboards/xiudi/xd87/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/xiudi/xd87/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/xiudi/xd87/readme.md b/keyboards/xiudi/xd87/readme.md new file mode 100644 index 000000000000..7beae2c6c80f --- /dev/null +++ b/keyboards/xiudi/xd87/readme.md @@ -0,0 +1,26 @@ +# XD87 + +![XD87](https://i.imgur.com/qVyOies.jpg) + + +- Keyboard Maintainer: [Alexander Fougner](https://github.com/fougner) +- Hardware Supported: XD87 PCB v1.1 +- Hardware Availability: + - [KPrepublic.com](https://kprepublic.com/products/xd87-xd87-xd80-custom-mechanical-keyboard-kit80-supports-tkg-tools-support-underglow-rgb-pcb-programmed-gh80-kle) + - [AliExpress](https://www.aliexpress.com/item/xd87-XD87-XD80-Custom-Mechanical-Keyboard-Kit80-Supports-TKG-TOOLS-Support-Underglow-RGB-PCB-programmed-gh80/32892540743.html) + +Make example for this keyboard (after setting up your build environment): + + make xiudi/xd87:default + +It also supports the tkl_ansi and tkl_iso community layouts: + + # Build firmware with ANSI layout + make xiudi/xd87:default_tkl_ansi + # Build firmware with ISO layout + make xiudi/xd87:default_tkl_iso + + +The keyboard can be reset to bootloader by using bootmagic (top left key by default) or short out the small connector between the Delete and End keys. + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). \ No newline at end of file diff --git a/keyboards/xiudi/xd87/rules.mk b/keyboards/xiudi/xd87/rules.mk new file mode 100644 index 000000000000..ce65c93a9ea2 --- /dev/null +++ b/keyboards/xiudi/xd87/rules.mk @@ -0,0 +1,22 @@ +# 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 = yes # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +# Supported layouts +LAYOUTS = tkl_ansi tkl_iso diff --git a/keyboards/xd87/xd87.c b/keyboards/xiudi/xd87/xd87.c similarity index 100% rename from keyboards/xd87/xd87.c rename to keyboards/xiudi/xd87/xd87.c diff --git a/keyboards/xiudi/xd87/xd87.h b/keyboards/xiudi/xd87/xd87.h new file mode 100644 index 000000000000..2d700d7ba410 --- /dev/null +++ b/keyboards/xiudi/xd87/xd87.h @@ -0,0 +1,69 @@ +/* Copyright 2018 Alexander Fougner + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#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, 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, 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, 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 } \ +} diff --git a/keyboards/xiudi/xd96/config.h b/keyboards/xiudi/xd96/config.h new file mode 100644 index 000000000000..5ec2543ffa77 --- /dev/null +++ b/keyboards/xiudi/xd96/config.h @@ -0,0 +1,140 @@ +/* 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 . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7844 // "XD" +#define PRODUCT_ID 0x9696 +#define DEVICE_VER 0x0001 +#define MANUFACTURER KPrepublic +#define PRODUCT XD96 + +/* key matrix size */ +#define MATRIX_ROWS 6 +#define MATRIX_COLS 18 + +/* + * 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 { D0, D5 } +//#define MATRIX_COL_PINS { F1, F0, B0 } +//#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +//#define DIODE_DIRECTION COL2ROW + +#define LED_NUM_LOCK_PIN C6 +#define LED_CAPS_LOCK_PIN B6 +#define LED_PIN_ON_STATE 0 + +#define BACKLIGHT_PIN B5 +#define BACKLIGHT_LEVELS 10 +// #define BACKLIGHT_BREATHING + +#define RGB_DI_PIN C7 +#define RGBLED_NUM 16 +#define RGBLIGHT_ANIMATIONS +#define RGBLIGHT_LIMIT_VAL 50 +// #ifdef RGB_DI_PIN +// #define RGBLIGHT_HUE_STEP 8 +// #define RGBLIGHT_SAT_STEP 8 +// #define RGBLIGHT_VAL_STEP 8 +// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ +// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +// /*== all animations enable ==*/ +// #define RGBLIGHT_ANIMATIONS +// /*== or choose animations ==*/ +// #define RGBLIGHT_EFFECT_BREATHING +// #define RGBLIGHT_EFFECT_RAINBOW_MOOD +// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL +// #define RGBLIGHT_EFFECT_SNAKE +// #define RGBLIGHT_EFFECT_KNIGHT +// #define RGBLIGHT_EFFECT_CHRISTMAS +// #define RGBLIGHT_EFFECT_STATIC_GRADIENT +// #define RGBLIGHT_EFFECT_RGB_TEST +// #define RGBLIGHT_EFFECT_ALTERNATING +// #endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is userful for the Windows task manager shortcut (ctrl+shift+esc). + */ +// #define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* Bootmagic Lite key configuration */ +// #define BOOTMAGIC_LITE_ROW 0 +// #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/xiudi/xd96/info.json b/keyboards/xiudi/xd96/info.json new file mode 100644 index 000000000000..4b01ab9ed7ee --- /dev/null +++ b/keyboards/xiudi/xd96/info.json @@ -0,0 +1,347 @@ +{ + "keyboard_name": "xd96", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_96_ansi": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":1, "y":0}, + {"label":"F2", "x":2, "y":0}, + {"label":"F3", "x":3, "y":0}, + {"label":"F4", "x":4, "y":0}, + {"label":"F5", "x":5, "y":0}, + {"label":"F6", "x":6, "y":0}, + {"label":"F7", "x":7, "y":0}, + {"label":"F8", "x":8, "y":0}, + {"label":"F9", "x":9, "y":0}, + {"label":"F10", "x":10, "y":0}, + {"label":"F11", "x":11, "y":0}, + {"label":"F12", "x":12, "y":0}, + {"label":"Insert", "x":13, "y":0}, + {"label":"Delete", "x":14, "y":0}, + {"label":"Home", "x":15, "y":0}, + {"label":"End", "x":16, "y":0}, + {"label":"PgUp", "x":17, "y":0}, + {"label":"PgDn", "x":18, "y":0}, + + {"label":"~", "x":0, "y":1}, + {"label":"!", "x":1, "y":1}, + {"label":"@", "x":2, "y":1}, + {"label":"#", "x":3, "y":1}, + {"label":"$", "x":4, "y":1}, + {"label":"%", "x":5, "y":1}, + {"label":"^", "x":6, "y":1}, + {"label":"&", "x":7, "y":1}, + {"label":"*", "x":8, "y":1}, + {"label":"(", "x":9, "y":1}, + {"label":")", "x":10, "y":1}, + {"label":"_", "x":11, "y":1}, + {"label":"+", "x":12, "y":1}, + {"label":"Backspace", "x":13, "y":1, "w":2}, + + {"label":"Num Lock", "x":15, "y":1}, + {"label":"/", "x":16, "y":1}, + {"label":"*", "x":17, "y":1}, + {"label":"-", "x":18, "y":1}, + + {"label":"Tab", "x":0, "y":2, "w":1.5}, + {"label":"Q", "x":1.5, "y":2}, + {"label":"W", "x":2.5, "y":2}, + {"label":"E", "x":3.5, "y":2}, + {"label":"R", "x":4.5, "y":2}, + {"label":"T", "x":5.5, "y":2}, + {"label":"Y", "x":6.5, "y":2}, + {"label":"U", "x":7.5, "y":2}, + {"label":"I", "x":8.5, "y":2}, + {"label":"O", "x":9.5, "y":2}, + {"label":"P", "x":10.5, "y":2}, + {"label":"{", "x":11.5, "y":2}, + {"label":"}", "x":12.5, "y":2}, + {"label":"|", "x":13.5, "y":2, "w":1.5}, + {"label":"7", "x":15, "y":2}, + {"label":"8", "x":16, "y":2}, + {"label":"9", "x":17, "y":2}, + + {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, + {"label":"A", "x":1.75, "y":3}, + {"label":"S", "x":2.75, "y":3}, + {"label":"D", "x":3.75, "y":3}, + {"label":"F", "x":4.75, "y":3}, + {"label":"G", "x":5.75, "y":3}, + {"label":"H", "x":6.75, "y":3}, + {"label":"J", "x":7.75, "y":3}, + {"label":"K", "x":8.75, "y":3}, + {"label":"L", "x":9.75, "y":3}, + {"label":":", "x":10.75, "y":3}, + {"label":"\"", "x":11.75, "y":3}, + {"label":"Enter", "x":12.75, "y":3, "w":2.25}, + + {"label":"4", "x":15, "y":3}, + {"label":"5", "x":16, "y":3}, + {"label":"6", "x":17, "y":3}, + {"label":"+", "x":18, "y":2, "h":2}, + + {"label":"Shift", "x":0, "y":4, "w":2.25}, + {"label":"Z", "x":2.25, "y":4}, + {"label":"X", "x":3.25, "y":4}, + {"label":"C", "x":4.25, "y":4}, + {"label":"V", "x":5.25, "y":4}, + {"label":"B", "x":6.25, "y":4}, + {"label":"N", "x":7.25, "y":4}, + {"label":"M", "x":8.25, "y":4}, + {"label":"<", "x":9.25, "y":4}, + {"label":">", "x":10.25, "y":4}, + {"label":"?", "x":11.25, "y":4}, + {"label":"Shift", "x":12.25, "y":4, "w":1.75}, + {"label":"\u2191", "x":14, "y":4}, + + {"label":"1", "x":15, "y":4}, + {"label":"2", "x":16, "y":4}, + {"label":"3", "x":17, "y":4}, + + {"label":"Ctrl", "x":0, "y":5, "w":1.25}, + {"label":"Win", "x":1.25, "y":5, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5, "w":1.25}, + {"x":3.75, "y":5, "w":6.25}, + {"label":"Alt", "x":10, "y":5, "w":1.5}, + {"label":"Ctrl", "x":11.5, "y":5, "w":1.5}, + {"label":"\u2190", "x":13, "y":5}, + {"label":"\u2193", "x":14, "y":5}, + {"label":"\u2192", "x":15, "y":5}, + + {"label":"0", "x":16, "y":5}, + {"label":".", "x":17, "y":5}, + {"label":"Enter", "x":18, "y":4, "h":2} + ] + }, + "LAYOUT_96_iso": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":1, "y":0}, + {"label":"F2", "x":2, "y":0}, + {"label":"F3", "x":3, "y":0}, + {"label":"F4", "x":4, "y":0}, + {"label":"F5", "x":5, "y":0}, + {"label":"F6", "x":6, "y":0}, + {"label":"F7", "x":7, "y":0}, + {"label":"F8", "x":8, "y":0}, + {"label":"F9", "x":9, "y":0}, + {"label":"F10", "x":10, "y":0}, + {"label":"F11", "x":11, "y":0}, + {"label":"F12", "x":12, "y":0}, + {"label":"Insert", "x":13, "y":0}, + {"label":"Delete", "x":14, "y":0}, + {"label":"Home", "x":15, "y":0}, + {"label":"End", "x":16, "y":0}, + {"label":"PgUp", "x":17, "y":0}, + {"label":"PgDn", "x":18, "y":0}, + + {"label":"~", "x":0, "y":1}, + {"label":"!", "x":1, "y":1}, + {"label":"\"", "x":2, "y":1}, + {"label":"\u00a3", "x":3, "y":1}, + {"label":"$", "x":4, "y":1}, + {"label":"%", "x":5, "y":1}, + {"label":"^", "x":6, "y":1}, + {"label":"&", "x":7, "y":1}, + {"label":"*", "x":8, "y":1}, + {"label":"(", "x":9, "y":1}, + {"label":")", "x":10, "y":1}, + {"label":"_", "x":11, "y":1}, + {"label":"+", "x":12, "y":1}, + {"label":"Backspace", "x":13, "y":1, "w":2}, + + {"label":"Num Lock", "x":15, "y":1}, + {"label":"/", "x":16, "y":1}, + {"label":"*", "x":17, "y":1}, + {"label":"-", "x":18, "y":1}, + + {"label":"Tab", "x":0, "y":2, "w":1.5}, + {"label":"Q", "x":1.5, "y":2}, + {"label":"W", "x":2.5, "y":2}, + {"label":"E", "x":3.5, "y":2}, + {"label":"R", "x":4.5, "y":2}, + {"label":"T", "x":5.5, "y":2}, + {"label":"Y", "x":6.5, "y":2}, + {"label":"U", "x":7.5, "y":2}, + {"label":"I", "x":8.5, "y":2}, + {"label":"O", "x":9.5, "y":2}, + {"label":"P", "x":10.5, "y":2}, + {"label":"{", "x":11.5, "y":2}, + {"label":"}", "x":12.5, "y":2}, + + {"label":"7", "x":15, "y":2}, + {"label":"8", "x":16, "y":2}, + {"label":"9", "x":17, "y":2}, + + {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, + {"label":"A", "x":1.75, "y":3}, + {"label":"S", "x":2.75, "y":3}, + {"label":"D", "x":3.75, "y":3}, + {"label":"F", "x":4.75, "y":3}, + {"label":"G", "x":5.75, "y":3}, + {"label":"H", "x":6.75, "y":3}, + {"label":"J", "x":7.75, "y":3}, + {"label":"K", "x":8.75, "y":3}, + {"label":"L", "x":9.75, "y":3}, + {"label":":", "x":10.75, "y":3}, + {"label":"@", "x":11.75, "y":3}, + {"label":"~", "x":12.75, "y":3}, + {"label":"Enter", "x":13.75, "y":2, "w":1.25, "h":2}, + + {"label":"4", "x":15, "y":3}, + {"label":"5", "x":16, "y":3}, + {"label":"6", "x":17, "y":3}, + {"label":"+", "x":18, "y":2, "h":2}, + + {"label":"Shift", "x":0, "y":4, "w":1.25}, + {"label":"|", "x":1.25, "y":4}, + {"label":"Z", "x":2.25, "y":4}, + {"label":"X", "x":3.25, "y":4}, + {"label":"C", "x":4.25, "y":4}, + {"label":"V", "x":5.25, "y":4}, + {"label":"B", "x":6.25, "y":4}, + {"label":"N", "x":7.25, "y":4}, + {"label":"M", "x":8.25, "y":4}, + {"label":"<", "x":9.25, "y":4}, + {"label":">", "x":10.25, "y":4}, + {"label":"?", "x":11.25, "y":4}, + {"label":"Shift", "x":12.25, "y":4, "w":1.75}, + {"label":"\u2191", "x":14, "y":4}, + + {"label":"1", "x":15, "y":4}, + {"label":"2", "x":16, "y":4}, + {"label":"3", "x":17, "y":4}, + + {"label":"Ctrl", "x":0, "y":5, "w":1.25}, + {"label":"Win", "x":1.25, "y":5, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5, "w":1.25}, + {"x":3.75, "y":5, "w":6.25}, + {"label":"Alt", "x":10, "y":5, "w":1.5}, + {"label":"Ctrl", "x":11.5, "y":5, "w":1.5}, + {"label":"\u2190", "x":13, "y":5}, + {"label":"\u2193", "x":14, "y":5}, + {"label":"\u2192", "x":15, "y":5}, + + {"label":"0", "x":16, "y":5}, + {"label":".", "x":17, "y":5}, + {"label":"Enter", "x":18, "y":4, "h":2} + ] + }, + "LAYOUT_all": { + "layout": [ + {"label":"Esc", "x":0, "y":0}, + {"label":"F1", "x":1, "y":0}, + {"label":"F2", "x":2, "y":0}, + {"label":"F3", "x":3, "y":0}, + {"label":"F4", "x":4, "y":0}, + {"label":"F5", "x":5, "y":0}, + {"label":"F6", "x":6, "y":0}, + {"label":"F7", "x":7, "y":0}, + {"label":"F8", "x":8, "y":0}, + {"label":"F9", "x":9, "y":0}, + {"label":"F10", "x":10, "y":0}, + {"label":"F11", "x":11, "y":0}, + {"label":"F12", "x":12, "y":0}, + {"label":"Insert", "x":13, "y":0}, + {"label":"Delete", "x":14, "y":0}, + {"label":"Home", "x":15, "y":0}, + {"label":"End", "x":16, "y":0}, + {"label":"PgUp", "x":17, "y":0}, + {"label":"PgDn", "x":18, "y":0}, + + {"label":"~", "x":0, "y":1}, + {"label":"!", "x":1, "y":1}, + {"label":"@", "x":2, "y":1}, + {"label":"#", "x":3, "y":1}, + {"label":"$", "x":4, "y":1}, + {"label":"%", "x":5, "y":1}, + {"label":"^", "x":6, "y":1}, + {"label":"&", "x":7, "y":1}, + {"label":"*", "x":8, "y":1}, + {"label":"(", "x":9, "y":1}, + {"label":")", "x":10, "y":1}, + {"label":"_", "x":11, "y":1}, + {"label":"+", "x":12, "y":1}, + {"label":"Backspace", "x":13, "y":1}, + {"label":"Backspace", "x":14, "y":1}, + {"label":"Num Lock", "x":15, "y":1}, + {"label":"/", "x":16, "y":1}, + {"label":"*", "x":17, "y":1}, + {"label":"-", "x":18, "y":1}, + + {"label":"Tab", "x":0, "y":2, "w":1.5}, + {"label":"Q", "x":1.5, "y":2}, + {"label":"W", "x":2.5, "y":2}, + {"label":"E", "x":3.5, "y":2}, + {"label":"R", "x":4.5, "y":2}, + {"label":"T", "x":5.5, "y":2}, + {"label":"Y", "x":6.5, "y":2}, + {"label":"U", "x":7.5, "y":2}, + {"label":"I", "x":8.5, "y":2}, + {"label":"O", "x":9.5, "y":2}, + {"label":"P", "x":10.5, "y":2}, + {"label":"{", "x":11.5, "y":2}, + {"label":"}", "x":12.5, "y":2}, + {"label":"|", "x":13.5, "y":2, "w":1.5}, + {"label":"7", "x":15, "y":2}, + {"label":"8", "x":16, "y":2}, + {"label":"9", "x":17, "y":2}, + {"label":"+", "x":18, "y":2}, + + + {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, + {"label":"A", "x":1.75, "y":3}, + {"label":"S", "x":2.75, "y":3}, + {"label":"D", "x":3.75, "y":3}, + {"label":"F", "x":4.75, "y":3}, + {"label":"G", "x":5.75, "y":3}, + {"label":"H", "x":6.75, "y":3}, + {"label":"J", "x":7.75, "y":3}, + {"label":"K", "x":8.75, "y":3}, + {"label":"L", "x":9.75, "y":3}, + {"label":":", "x":10.75, "y":3}, + {"label":"\"", "x":11.75, "y":3}, + {"label":"Enter", "x":12.75, "y":3}, + {"label":"Enter", "x":13.75, "y":3, "w":1.25}, + {"label":"4", "x":15, "y":3}, + {"label":"5", "x":16, "y":3}, + {"label":"6", "x":17, "y":3}, + {"label":"+", "x":18, "y":3}, + + {"label":"Shift", "x":0, "y":4, "w":1.25}, + {"label":"Shift", "x":1.25, "y":4}, + {"label":"Z", "x":2.25, "y":4}, + {"label":"X", "x":3.25, "y":4}, + {"label":"C", "x":4.25, "y":4}, + {"label":"V", "x":5.25, "y":4}, + {"label":"B", "x":6.25, "y":4}, + {"label":"N", "x":7.25, "y":4}, + {"label":"M", "x":8.25, "y":4}, + {"label":"<", "x":9.25, "y":4}, + {"label":">", "x":10.25, "y":4}, + {"label":"?", "x":11.25, "y":4}, + {"label":"Shift", "x":12.25, "y":4, "w":1.75}, + {"label":"\u2191", "x":14, "y":4}, + {"label":"1", "x":15, "y":4}, + {"label":"2", "x":16, "y":4}, + {"label":"3", "x":17, "y":4}, + {"label":"Enter", "x":18, "y":4}, + + {"label":"Ctrl", "x":0, "y":5, "w":1.25}, + {"label":"Win", "x":1.25, "y":5, "w":1.25}, + {"label":"Alt", "x":2.5, "y":5, "w":1.25}, + {"x":3.75, "y":5, "w":6.25}, + {"label":"Alt", "x":10, "y":5, "w":1.5}, + {"label":"Ctrl", "x":11.5, "y":5, "w":1.5}, + {"label":"\u2190", "x":13, "y":5}, + {"label":"\u2193", "x":14, "y":5}, + {"label":"\u2192", "x":15, "y":5}, + {"label":"0", "x":16, "y":5}, + {"label":".", "x":17, "y":5}, + {"label":"Enter", "x":18, "y":5} + ] + } + } +} diff --git a/keyboards/xd96/keymaps/default/keymap.c b/keyboards/xiudi/xd96/keymaps/default/keymap.c similarity index 100% rename from keyboards/xd96/keymaps/default/keymap.c rename to keyboards/xiudi/xd96/keymaps/default/keymap.c diff --git a/keyboards/xd96/keymaps/default_iso/keymap.c b/keyboards/xiudi/xd96/keymaps/default_iso/keymap.c similarity index 100% rename from keyboards/xd96/keymaps/default_iso/keymap.c rename to keyboards/xiudi/xd96/keymaps/default_iso/keymap.c diff --git a/keyboards/xd96/keymaps/uuupah/keymap.c b/keyboards/xiudi/xd96/keymaps/uuupah/keymap.c similarity index 100% rename from keyboards/xd96/keymaps/uuupah/keymap.c rename to keyboards/xiudi/xd96/keymaps/uuupah/keymap.c diff --git a/keyboards/xd96/keymaps/via/keymap.c b/keyboards/xiudi/xd96/keymaps/via/keymap.c similarity index 100% rename from keyboards/xd96/keymaps/via/keymap.c rename to keyboards/xiudi/xd96/keymaps/via/keymap.c diff --git a/keyboards/xd96/keymaps/via/readme.md b/keyboards/xiudi/xd96/keymaps/via/readme.md similarity index 100% rename from keyboards/xd96/keymaps/via/readme.md rename to keyboards/xiudi/xd96/keymaps/via/readme.md diff --git a/keyboards/xiudi/xd96/keymaps/via/rules.mk b/keyboards/xiudi/xd96/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/xiudi/xd96/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/xd96/matrix.c b/keyboards/xiudi/xd96/matrix.c similarity index 100% rename from keyboards/xd96/matrix.c rename to keyboards/xiudi/xd96/matrix.c diff --git a/keyboards/xiudi/xd96/readme.md b/keyboards/xiudi/xd96/readme.md new file mode 100644 index 000000000000..5f4038ef3fdc --- /dev/null +++ b/keyboards/xiudi/xd96/readme.md @@ -0,0 +1,22 @@ +# XD96 + +![XD96](https://cdn.shopify.com/s/files/1/2711/4238/products/xd96_pcb_1024x1024.jpg?v=1515425370) + +Keyboard with 96 Keys & RGB LED Underglow +- Designed by Xiudi +- ISO and ANSI support +- Uses Kimera core + +* Keyboard Maintainer: QMK Community +* Hardware Supported: XD96 +* Hardware Availability: [KPrepublic](https://kprepublic.com/products/xd96-pcb-90-custom-mechanical-keyboard-supports-tkg-tools-underglow-rgb-programmed); [AliExpress](https://aliexpress.com/item/cospad-Custom-Mechanical-Keyboard-Kit-up-tp-24-keys-Supports-TKG-TOOLS-Underglow-RGB-PCB-20/32818383873.html) + +Make example for this keyboard (after setting up your build environment): + + make xiudi/xd96:default + +Flashing example for this keyboard: + + make xiudi/xd96:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/xiudi/xd96/rules.mk b/keyboards/xiudi/xd96/rules.mk new file mode 100644 index 000000000000..c5c851f313ac --- /dev/null +++ b/keyboards/xiudi/xd96/rules.mk @@ -0,0 +1,27 @@ +# 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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +LTO_ENABLE = yes + +# custom matrix setup +CUSTOM_MATRIX = lite + +VPATH += drivers/gpio +SRC += pca9555.c matrix.c +QUANTUM_LIB_SRC += i2c_master.c diff --git a/keyboards/xd96/xd96.c b/keyboards/xiudi/xd96/xd96.c similarity index 100% rename from keyboards/xd96/xd96.c rename to keyboards/xiudi/xd96/xd96.c diff --git a/keyboards/xd96/xd96.h b/keyboards/xiudi/xd96/xd96.h similarity index 100% rename from keyboards/xd96/xd96.h rename to keyboards/xiudi/xd96/xd96.h diff --git a/keyboards/xmmx/config.h b/keyboards/xmmx/config.h index c54e43239854..773f612089c4 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/xmmx/info.json b/keyboards/xmmx/info.json index 28bd06bbf985..b96b4e1352be 100644 --- a/keyboards/xmmx/info.json +++ b/keyboards/xmmx/info.json @@ -2,11 +2,8 @@ "keyboard_name": "XMMX", "url": "", "maintainer": "qmk", - "width": 18.25, - "height": 6.5, "layouts": { "LAYOUT_all": { - "key_count": 96, "layout": [ {"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, @@ -107,7 +104,6 @@ ] }, "LAYOUT_tkl_ansi": { - "key_count": 87, "layout": [ {"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, @@ -199,7 +195,6 @@ ] }, "LAYOUT_tkl_ansi_wkl": { - "key_count": 84, "layout": [ {"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, @@ -288,7 +283,6 @@ ] }, "LAYOUT_tkl_iso": { - "key_count": 88, "layout": [ {"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, @@ -381,7 +375,6 @@ ] }, "LAYOUT_tkl_iso_wkl": { - "key_count": 85, "layout": [ {"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, @@ -472,4 +465,3 @@ } } } - diff --git a/keyboards/xmmx/rules.mk b/keyboards/xmmx/rules.mk index 94733eeaf02c..84ae4b490b9f 100644 --- a/keyboards/xmmx/rules.mk +++ b/keyboards/xmmx/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -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 diff --git a/keyboards/xw60/info.json b/keyboards/xw60/info.json index 9a44f5588c3a..e3284a690516 100644 --- a/keyboards/xw60/info.json +++ b/keyboards/xw60/info.json @@ -2,8 +2,6 @@ "keyboard_name": "XW60", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { "layout": [{"label":"K00", "x":0, "y":0}, {"label":"K01", "x":1, "y":0}, {"label":"K02", "x":2, "y":0}, {"label":"K03", "x":3, "y":0}, {"label":"K04", "x":4, "y":0}, {"label":"K05", "x":5, "y":0}, {"label":"K06", "x":6, "y":0}, {"label":"K07", "x":7, "y":0}, {"label":"K08", "x":8, "y":0}, {"label":"K09", "x":9, "y":0}, {"label":"K0A", "x":10, "y":0}, {"label":"K0B", "x":11, "y":0}, {"label":"K0C", "x":12, "y":0}, {"label":"K0D", "x":13, "y":0}, {"label":"K49", "x":14, "y":0}, {"label":"K10", "x":0, "y":1, "w":1.5}, {"label":"K11", "x":1.5, "y":1}, {"label":"K12", "x":2.5, "y":1}, {"label":"K13", "x":3.5, "y":1}, {"label":"K14", "x":4.5, "y":1}, {"label":"K15", "x":5.5, "y":1}, {"label":"K16", "x":6.5, "y":1}, {"label":"K17", "x":7.5, "y":1}, {"label":"K18", "x":8.5, "y":1}, {"label":"K19", "x":9.5, "y":1}, {"label":"K1A", "x":10.5, "y":1}, {"label":"K1B", "x":11.5, "y":1}, {"label":"K1C", "x":12.5, "y":1}, {"label":"K1D", "x":13.5, "y":1, "w":1.5}, {"label":"K20", "x":0, "y":2, "w":1.75}, {"label":"K21", "x":1.75, "y":2}, {"label":"K22", "x":2.75, "y":2}, {"label":"K23", "x":3.75, "y":2}, {"label":"K24", "x":4.75, "y":2}, {"label":"K25", "x":5.75, "y":2}, {"label":"K26", "x":6.75, "y":2}, {"label":"K27", "x":7.75, "y":2}, {"label":"K28", "x":8.75, "y":2}, {"label":"K29", "x":9.75, "y":2}, {"label":"K2A", "x":10.75, "y":2}, {"label":"K2B", "x":11.75, "y":2}, {"label":"K2C", "x":12.75, "y":2}, {"label":"K2D", "x":13.75, "y":2, "w":1.25}, {"label":"K30", "x":0, "y":3, "w":1.25}, {"label":"K31", "x":1.25, "y":3}, {"label":"K32", "x":2.25, "y":3}, {"label":"K33", "x":3.25, "y":3}, {"label":"K34", "x":4.25, "y":3}, {"label":"K35", "x":5.25, "y":3}, {"label":"K36", "x":6.25, "y":3}, {"label":"K37", "x":7.25, "y":3}, {"label":"K38", "x":8.25, "y":3}, {"label":"K39", "x":9.25, "y":3}, {"label":"K3A", "x":10.25, "y":3}, {"label":"K3B", "x":11.25, "y":3}, {"label":"K3D", "x":12.25, "y":3, "w":1.75}, {"label":"K3C", "x":14, "y":3}, {"label":"K40", "x":0, "y":4, "w":1.25}, {"label":"K41", "x":1.25, "y":4, "w":1.25}, {"label":"K42", "x":2.5, "y":4, "w":1.25}, {"label":"K44", "x":3.75, "y":4, "w":2}, {"label":"K45", "x":5.75, "y":4, "w":2.25}, {"label":"K46", "x":8, "y":4, "w":2}, {"label":"K4A", "x":10, "y":4, "w":1.25}, {"label":"K4B", "x":11.25, "y":4, "w":1.25}, {"label":"K4C", "x":12.5, "y":4, "w":1.25}, {"label":"K4D", "x":13.75, "y":4, "w":1.25}] @@ -13,6 +11,3 @@ } } } - - - diff --git a/keyboards/xw60/rules.mk b/keyboards/xw60/rules.mk index b8629daeb862..982b378ad963 100644 --- a/keyboards/xw60/rules.mk +++ b/keyboards/xw60/rules.mk @@ -2,32 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -API_SYSEX_ENABLE = no -HAPTIC_ENABLE += 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 +HAPTIC_ENABLE = yes +HAPTIC_DRIVER = SOLENOID diff --git a/keyboards/yampad/config.h b/keyboards/yampad/config.h index d04ae37d5a49..b21a606ddc97 100644 --- a/keyboards/yampad/config.h +++ b/keyboards/yampad/config.h @@ -20,7 +20,7 @@ along with this program. If not, see . #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED +#define VENDOR_ID 0x5950 // YP #define PRODUCT_ID 0x8369 #define DEVICE_VER 0x0001 #define MANUFACTURER Mattia Dal Ben diff --git a/keyboards/yampad/info.json b/keyboards/yampad/info.json new file mode 100644 index 000000000000..3b3a1fe15f0f --- /dev/null +++ b/keyboards/yampad/info.json @@ -0,0 +1,33 @@ +{ + "keyboard_name": "Yampad", + "url": "", + "maintainer": "mattdibi", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"k00", "x":0, "y":0}, + {"label":"k01", "x":1, "y":0}, + {"label":"k02", "x":2, "y":0}, + {"label":"k03", "x":3, "y":0}, + + {"label":"k10", "x":0, "y":1}, + {"label":"k11", "x":1, "y":1}, + {"label":"k12", "x":2, "y":1}, + + {"label":"k20", "x":0, "y":2}, + {"label":"k21", "x":1, "y":2}, + {"label":"k22", "x":2, "y":2}, + {"label":"k13", "x":3, "y":1, "h":2}, + + {"label":"k30", "x":0, "y":3}, + {"label":"k31", "x":1, "y":3}, + {"label":"k32", "x":2, "y":3}, + + {"label":"k40", "x":0, "y":4}, + {"label":"k41", "x":1, "y":4}, + {"label":"k42", "x":2, "y":4}, + {"label":"k43", "x":3, "y":3, "h":2} + ] + } + } +} diff --git a/keyboards/yampad/keymaps/default/keymap.c b/keyboards/yampad/keymaps/default/keymap.c index dfecab17eb10..51d921be3f95 100644 --- a/keyboards/yampad/keymaps/default/keymap.c +++ b/keyboards/yampad/keymaps/default/keymap.c @@ -116,13 +116,13 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return true; }; -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; // flips the display 270 degrees } -void oled_task_user(void) { +bool oled_task_user(void) { // Host Keyboard Layer Status oled_write_P(PSTR("Layer"), false); switch (get_highest_layer(layer_state)) { @@ -159,5 +159,7 @@ void oled_task_user(void) { (uint8_t)(rgblight_get_sat() / RGBLIGHT_SAT_STEP), (uint8_t)(rgblight_get_val() / RGBLIGHT_VAL_STEP)); oled_write(led_buf, false); + + return false; } #endif diff --git a/keyboards/yampad/keymaps/traditional/keymap.c b/keyboards/yampad/keymaps/traditional/keymap.c index e9fd2b8ae1bf..78778cc34b39 100644 --- a/keyboards/yampad/keymaps/traditional/keymap.c +++ b/keyboards/yampad/keymaps/traditional/keymap.c @@ -19,7 +19,7 @@ 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 QMK_KEYBOARD_H @@ -116,13 +116,13 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return true; }; -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; // flips the display 270 degrees } -void oled_task_user(void) { +bool oled_task_user(void) { // Host Keyboard Layer Status oled_write_P(PSTR("Layer"), false); switch (get_highest_layer(layer_state)) { @@ -159,5 +159,7 @@ void oled_task_user(void) { (uint8_t)(rgblight_get_sat() / RGBLIGHT_SAT_STEP), (uint8_t)(rgblight_get_val() / RGBLIGHT_VAL_STEP)); oled_write(led_buf, false); + + return false; } #endif diff --git a/keyboards/yampad/keymaps/via/keymap.c b/keyboards/yampad/keymaps/via/keymap.c new file mode 100644 index 000000000000..51d921be3f95 --- /dev/null +++ b/keyboards/yampad/keymaps/via/keymap.c @@ -0,0 +1,165 @@ +/* MIT License + +Copyright (c) 2019 Mattia Dal Ben + +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 QMK_KEYBOARD_H + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +enum layers { + _BL, + _NV, + _FN +}; + +enum custom_keycodes { + KC_DBL0 = SAFE_RANGE, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap _BL: (Base Layer) Default Layer + * ,-------------------. + * | NV | / | * |-/FN| + * |----|----|----|----| + * | 7 | 8 | 9 | | + * |----|----|----| + | + * | 4 | 5 | 6 | | + * |----|----|----|----| + * | 1 | 2 | 3 | | + * |----|----|----| En | + * | 0 | 00 | . | | + * `-------------------' + */ + [_BL] = LAYOUT( + TG(_NV), KC_PSLS, KC_PAST, LT(_FN, 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_DBL0, KC_PDOT, KC_PENT + ), + +/* Keymap _NV: Navigation layer + * ,-------------------. + * |INS |HOME|PGUP| | + * |----|----|----|----| + * |DEL |END |PGDN| | + * |----|----|----| | + * | | | | | + * |----|----|----|----| + * | | UP | | | + * |----|----|----| | + * |LEFT|DOWN|RIGH| | + * `-------------------' + */ + [_NV] = LAYOUT( + KC_INS, KC_HOME, KC_PGUP, TG(_NV), + KC_DEL, KC_END, KC_PGDN, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, KC_UP, XXXXXXX, + KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX + ), + +/* Keymap _FN: RGB Function Layer + * ,-------------------. + * |RMOD|RGBP|RTOG| FN | + * |----|----|----|----| + * |HUD |HUI | | | + * |----|----|----| | + * |SAD |SAI | | | + * |----|----|----|----| + * |VAD |VAS | | | + * |----|----|----| | + * |RST | | | | + * `-------------------' + */ + [_FN] = LAYOUT( + RGB_MOD, RGB_M_P, RGB_TOG, _______, + RGB_HUD, RGB_HUI, XXXXXXX, + RGB_SAD, RGB_SAI, XXXXXXX, XXXXXXX, + RGB_VAD, RGB_VAI, XXXXXXX, + RESET, XXXXXXX, XXXXXXX, XXXXXXX + ), +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_DBL0: + if (record->event.pressed) { + SEND_STRING("00"); + } else { + // when keycode KC_DBL0 is released + } + break; + + } + return true; +}; + +#ifdef OLED_ENABLE + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + return OLED_ROTATION_270; // flips the display 270 degrees +} + +bool oled_task_user(void) { + // Host Keyboard Layer Status + oled_write_P(PSTR("Layer"), false); + switch (get_highest_layer(layer_state)) { + case _BL: + oled_write_ln_P(PSTR(" BAS"), false); + break; + case _NV: + oled_write_ln_P(PSTR(" NAV"), false); + break; + case _FN: + oled_write_ln_P(PSTR(" RGB"), false); + break; + default: + // Or use the write_ln shortcut over adding '\n' to the end of your string + oled_write_ln_P(PSTR(" UND"), false); + } + + // Host Keyboard LED Status + led_t led_state = host_keyboard_led_state(); + oled_write_P(PSTR("-----"), false); + oled_write_P(PSTR("Stats"), false); + oled_write_P(led_state.num_lock ? PSTR("num:*") : PSTR("num:."), false); + oled_write_P(led_state.caps_lock ? PSTR("cap:*") : PSTR("cap:."), false); + oled_write_P(led_state.scroll_lock ? PSTR("scr:*") : PSTR("scr:."), false); + + // Host Keyboard RGB backlight status + oled_write_P(PSTR("-----"), false); + oled_write_P(PSTR("Light"), false); + + static char led_buf[30]; + snprintf(led_buf, sizeof(led_buf) - 1, "RGB:%cM: %2d\nh: %2ds: %2dv: %2d\n", + rgblight_is_enabled() ? '*' : '.', (uint8_t)rgblight_get_mode(), + (uint8_t)(rgblight_get_hue() / RGBLIGHT_HUE_STEP), + (uint8_t)(rgblight_get_sat() / RGBLIGHT_SAT_STEP), + (uint8_t)(rgblight_get_val() / RGBLIGHT_VAL_STEP)); + oled_write(led_buf, false); + + return false; +} +#endif diff --git a/keyboards/yampad/keymaps/via/readme.md b/keyboards/yampad/keymaps/via/readme.md new file mode 100644 index 000000000000..29ea4d3cddfb --- /dev/null +++ b/keyboards/yampad/keymaps/via/readme.md @@ -0,0 +1,9 @@ +![Yampad Layout Image](https://i.imgur.com/QwrufEt.png) + +# VIA Yampad Layout + +This is the layout in the VIA enabled firmware. +Optional 2U zero key to suit your Yampad build. + +Compile: `make yampad:via` +Flash: `make yampad:via:flash` diff --git a/keyboards/yampad/keymaps/via/rules.mk b/keyboards/yampad/keymaps/via/rules.mk new file mode 100644 index 000000000000..9bf0baa68541 --- /dev/null +++ b/keyboards/yampad/keymaps/via/rules.mk @@ -0,0 +1,4 @@ +EXTRAKEY_ENABLE = no +LTO_ENABLE = yes +MOUSEKEY_ENABLE = no +VIA_ENABLE = yes diff --git a/keyboards/yampad/rules.mk b/keyboards/yampad/rules.mk index db0a8b5da533..667620e93b19 100644 --- a/keyboards/yampad/rules.mk +++ b/keyboards/yampad/rules.mk @@ -7,18 +7,17 @@ BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration -MOUSEKEY_ENABLE = no # Mouse keys -EXTRAKEY_ENABLE = no # Audio control and System control -CONSOLE_ENABLE = no # Console for debug +AUDIO_ENABLE = no # Audio output +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite 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 +CONSOLE_ENABLE = no # Console for debug +DEBOUNCE_TYPE = sym_eager_pk +EXTRAKEY_ENABLE = no # Audio control and System control +LTO_ENABLE = yes # Link time optimise, reduce firmware size +MOUSEKEY_ENABLE = no # Mouse keys # 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 +OLED_DRIVER = SSD1306 +OLED_ENABLE = yes RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth -AUDIO_ENABLE = no # Audio output -OLED_DRIVER_ENABLE = yes -DEBOUNCE_TYPE = eager_pk diff --git a/keyboards/yampad/yampad.c b/keyboards/yampad/yampad.c index 764f48404d57..eab218d3b95d 100644 --- a/keyboards/yampad/yampad.c +++ b/keyboards/yampad/yampad.c @@ -1,4 +1,4 @@ - + /* Copyright 2019 * * This program is free software: you can redistribute it and/or modify @@ -16,14 +16,15 @@ */ #include "yampad.h" -#if defined(OLED_DRIVER_ENABLE) -__attribute__((weak)) -oled_rotation_t oled_init_user(oled_rotation_t rotation) { - return OLED_ROTATION_270; // flips the display 270 degrees +#if defined(OLED_ENABLE) +oled_rotation_t oled_init_kb(oled_rotation_t rotation) { + return OLED_ROTATION_270; } -__attribute__((weak)) -void oled_task_user(void) { +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } // Host Keyboard Layer Status oled_write_P(PSTR("Layer"), false); switch (get_highest_layer(layer_state)) { @@ -60,5 +61,7 @@ void oled_task_user(void) { (uint8_t)(rgblight_get_sat() / RGBLIGHT_SAT_STEP), (uint8_t)(rgblight_get_val() / RGBLIGHT_VAL_STEP)); oled_write(led_buf, false); + + return false; } #endif diff --git a/keyboards/yanghu/unicorne/config.h b/keyboards/yanghu/unicorne/config.h new file mode 100644 index 000000000000..652afeb3b473 --- /dev/null +++ b/keyboards/yanghu/unicorne/config.h @@ -0,0 +1,76 @@ +/* Copyright 2021 Yang Hu + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x0204 +#define DEVICE_VER 0x0001 +#define MANUFACTURER yanghu +#define PRODUCT unicorne + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + +#define MATRIX_COL_PINS \ + { A14, A15, B13, B14, B15, A13, A0, A1, A2, A3, A6, A7 } +#define MATRIX_ROW_PINS \ + { B9, B8, A10, A9 } + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +#define ENCODERS_PAD_A \ + { B10, B2 } +#define ENCODERS_PAD_B \ + { B12, B0 } + +/* Audio */ +#define AUDIO_PIN A8 +#define AUDIO_PWM_PAL_MODE 1 +#define AUDIO_PWM_DRIVER PWMD1 +#define AUDIO_PWM_CHANNEL 1 +#define AUDIO_STATE_TIMER GPTD4 + +/* RGB LED */ +#define RGB_DI_PIN B1 +#define RGBLED_NUM 8 +#define DRIVER_LED_TOTAL RGBLED_NUM +#define RGBLIGHT_EFFECT_BREATHING +#define RGBLIGHT_EFFECT_RAINBOW_MOOD +#define RGBLIGHT_EFFECT_RAINBOW_SWIRL +#define RGBLIGHT_EFFECT_SNAKE +#define RGBLIGHT_EFFECT_KNIGHT +#define RGBLIGHT_EFFECT_CHRISTMAS +#define RGBLIGHT_EFFECT_STATIC_GRADIENT +#define RGBLIGHT_EFFECT_RGB_TEST +#define RGBLIGHT_EFFECT_ALTERNATING +#define RGBLIGHT_EFFECT_TWINKLE + +#define WS2812_PWM_DRIVER PWMD3 +#define WS2812_PWM_CHANNEL 4 +#define WS2812_PWM_PAL_MODE 2 +#define WS2812_DMA_STREAM STM32_DMA1_STREAM2 +#define WS2812_DMA_CHANNEL 5 +#define WS2812_EXTERNAL_PULLUP + + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 diff --git a/keyboards/yanghu/unicorne/f411/halconf.h b/keyboards/yanghu/unicorne/f411/halconf.h new file mode 100644 index 000000000000..d28ae12fde5e --- /dev/null +++ b/keyboards/yanghu/unicorne/f411/halconf.h @@ -0,0 +1,27 @@ +/* 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 . + */ + +#pragma once + +/* PWM for AUDIO and RGB LED */ +#define HAL_USE_PWM TRUE +/* GPT and PAL for Audio */ +#define HAL_USE_GPT TRUE +#define HAL_USE_PAL TRUE +/* I2C for OLED display */ +#define HAL_USE_I2C TRUE + +#include_next diff --git a/keyboards/yanghu/unicorne/f411/mcuconf.h b/keyboards/yanghu/unicorne/f411/mcuconf.h new file mode 100644 index 000000000000..f4dc31bff28a --- /dev/null +++ b/keyboards/yanghu/unicorne/f411/mcuconf.h @@ -0,0 +1,34 @@ +/* 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 . + */ + +#pragma once + +#include_next + +/* TIM1 PWM used for audio driver */ +#undef STM32_PWM_USE_TIM1 +#define STM32_PWM_USE_TIM1 TRUE +/* TIM5 GPT used for audio driver */ +#undef STM32_GPT_USE_TIM4 +#define STM32_GPT_USE_TIM4 TRUE + +/* TIM3 used for WS2812 driver */ +#undef STM32_PWM_USE_TIM3 +#define STM32_PWM_USE_TIM3 TRUE + +/* I2C used for OLED display */ +#undef STM32_I2C_USE_I2C1 +#define STM32_I2C_USE_I2C1 TRUE diff --git a/keyboards/yanghu/unicorne/f411/rules.mk b/keyboards/yanghu/unicorne/f411/rules.mk new file mode 100644 index 000000000000..b32a8b7f5bda --- /dev/null +++ b/keyboards/yanghu/unicorne/f411/rules.mk @@ -0,0 +1,5 @@ +# MCU name +MCU = STM32F411 + +# Bootloader selection +BOOTLOADER = stm32-dfu diff --git a/keyboards/yanghu/unicorne/glcdfont.c b/keyboards/yanghu/unicorne/glcdfont.c new file mode 100644 index 000000000000..24c06471ff37 --- /dev/null +++ b/keyboards/yanghu/unicorne/glcdfont.c @@ -0,0 +1,247 @@ +/* Copyright 2021 Yang Hu + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "progmem.h" + +// clang-format off +const unsigned char font[] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, + 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, + 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, + 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, + 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, + 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, + 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, + 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, + 0x00, 0x18, 0x24, 0x18, 0x00, 0x00, + 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, + 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, + 0x26, 0x29, 0x79, 0x29, 0x26, 0x00, + 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, + 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, + 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, + 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, + 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, + 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, + 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, + 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, + 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, + 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, + 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00, + 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00, + 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, + 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, + 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, + 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, + 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, + 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, + 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, + 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, + 0x23, 0x13, 0x08, 0x64, 0x62, 0x00, + 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, + 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, + 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, + 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, + 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, + 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, + 0x00, 0x80, 0x70, 0x30, 0x00, 0x00, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, + 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, + 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, + 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, + 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, + 0x72, 0x49, 0x49, 0x49, 0x46, 0x00, + 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, + 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, + 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, + 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, + 0x41, 0x21, 0x11, 0x09, 0x07, 0x00, + 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, + 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, + 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, + 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, + 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, + 0x02, 0x01, 0x59, 0x09, 0x06, 0x00, + 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00, + 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, + 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, + 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, + 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, + 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, + 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, + 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, + 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, + 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, + 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, + 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, + 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, + 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, + 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, + 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, + 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, + 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, + 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, + 0x26, 0x49, 0x49, 0x49, 0x32, 0x00, + 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00, + 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, + 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, + 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, + 0x63, 0x14, 0x08, 0x14, 0x63, 0x00, + 0x03, 0x04, 0x78, 0x04, 0x03, 0x00, + 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, + 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, + 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, + 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, + 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, + 0x00, 0x03, 0x07, 0x08, 0x00, 0x00, + 0x20, 0x54, 0x54, 0x78, 0x40, 0x00, + 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00, + 0x38, 0x44, 0x44, 0x44, 0x28, 0x00, + 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00, + 0x38, 0x54, 0x54, 0x54, 0x18, 0x00, + 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00, + 0x58, 0xA4, 0xA4, 0x9C, 0x78, 0x00, + 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, + 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, + 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, + 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, + 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, + 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00, + 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, + 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, + 0xFC, 0x18, 0x24, 0x24, 0x18, 0x00, + 0x18, 0x24, 0x24, 0x18, 0xFC, 0x00, + 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, + 0x48, 0x54, 0x54, 0x54, 0x24, 0x00, + 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00, + 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, + 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, + 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, + 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, + 0x4C, 0x10, 0x10, 0x10, 0x7C, 0x00, + 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, + 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, + 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0x00, 0x41, 0x36, 0x08, 0x00, 0x00, + 0x02, 0x01, 0x02, 0x04, 0x02, 0x00, + 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, + 0x00, 0x00, 0xF0, 0xF8, 0x9C, 0x0C, + 0x0C, 0x1C, 0xF8, 0xE0, 0x00, 0x00, + 0x00, 0xE0, 0xF8, 0x1C, 0x0C, 0x0C, + 0x9C, 0xF8, 0x60, 0x00, 0x00, 0x00, + 0x00, 0x0C, 0x0C, 0x0C, 0x3C, 0xF8, + 0xC0, 0x00, 0x00, 0x00, 0x00, 0x0C, + 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, + 0xF0, 0xF8, 0xFC, 0xFC, 0xF8, 0xF0, + 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xC0, 0xE0, 0x70, 0x38, + 0x1C, 0x0C, 0x06, 0x86, 0x86, 0x86, + 0x86, 0x86, 0xC6, 0xC6, 0x0C, 0x1C, + 0x38, 0xF0, 0xE0, 0xC0, 0x00, 0x00, + 0x00, 0x60, 0xF8, 0x0C, 0x24, 0xE6, + 0xE6, 0x24, 0x06, 0x06, 0x24, 0xE6, + 0xE6, 0x24, 0x06, 0x06, 0x24, 0xE6, + 0xE6, 0x24, 0x0C, 0xF8, 0x60, 0x00, + 0x00, 0xE0, 0xF0, 0x18, 0x0C, 0x04, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x86, 0x86, 0xC6, 0x46, 0xE6, 0x66, + 0x04, 0x0C, 0x18, 0xF0, 0xE0, 0x00, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFE, 0x8A, 0x92, 0xA2, 0xC2, + 0xFE, 0xC2, 0xA2, 0x92, 0x0A, 0x02, + 0x82, 0xE2, 0x7A, 0x5A, 0x42, 0x42, + 0x42, 0xC2, 0xC2, 0x42, 0xFE, 0x00, + 0xFE, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x82, 0xE2, 0xFA, 0x7A, + 0xFA, 0xE2, 0x82, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0xFE, 0x00, + 0x00, 0x00, 0x00, 0x81, 0x81, 0xC3, + 0xC3, 0xC3, 0xFF, 0xFF, 0xC3, 0xC3, + 0xC3, 0xFF, 0xFF, 0xC3, 0xC3, 0xC3, + 0x81, 0x81, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x0F, 0x3C, 0xF0, 0xC0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x07, 0x07, 0x07, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x07, 0x07, 0x07, 0x06, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x7F, 0xFF, 0xC1, 0xC1, + 0xC1, 0xC1, 0xFF, 0x7F, 0xE0, 0x80, + 0x80, 0xC0, 0xFF, 0x7F, 0x00, 0x00, + 0x00, 0xDB, 0xFF, 0x00, 0x00, 0x1F, + 0x3F, 0x70, 0xE0, 0xC0, 0xC0, 0xFF, + 0xFF, 0xC0, 0xC0, 0xE0, 0x70, 0x3F, + 0x1F, 0x00, 0x00, 0xFF, 0xDB, 0x00, + 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, + 0xC0, 0xF8, 0xFE, 0xFF, 0xF9, 0xF1, + 0x61, 0x60, 0x3C, 0x07, 0x01, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, + 0x00, 0x00, 0xC0, 0xF0, 0x3C, 0x0E, + 0x0E, 0x3C, 0xF0, 0xC0, 0x00, 0x00, + 0x00, 0xFF, 0x48, 0x44, 0xC2, 0xE1, + 0x7F, 0x51, 0xC2, 0xC4, 0x4C, 0x06, + 0x03, 0x0F, 0x38, 0x60, 0xC0, 0xE0, + 0x38, 0x0F, 0x00, 0x00, 0xFF, 0x00, + 0xFF, 0x00, 0x00, 0x00, 0x80, 0xE0, + 0xF8, 0x7E, 0x67, 0x63, 0x60, 0x60, + 0x60, 0x63, 0x67, 0x7E, 0xF8, 0xE0, + 0x80, 0x00, 0x00, 0x00, 0xFF, 0x00, + 0x00, 0x00, 0x0F, 0x1F, 0x39, 0x30, + 0x30, 0x18, 0x1F, 0x07, 0x00, 0x00, + 0x00, 0x07, 0x1F, 0x38, 0x30, 0x30, + 0x39, 0x1F, 0x06, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, + 0x3C, 0x30, 0x30, 0x30, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, + 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, + 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x07, 0x0E, + 0x1C, 0x38, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x38, 0x18, 0x18, 0x01, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x1F, 0x30, 0x20, 0x60, + 0x60, 0x20, 0x64, 0x64, 0x26, 0x67, + 0x67, 0x26, 0x64, 0x64, 0x20, 0x60, + 0x60, 0x20, 0x30, 0x1F, 0x06, 0x00, + 0x00, 0x07, 0x0F, 0x18, 0x30, 0x23, + 0x63, 0x61, 0x61, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x20, 0x30, 0x18, 0x0F, 0x07, 0x00, + 0x0C, 0x0F, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x0F, 0x0C, + 0x00, 0x7F, 0x60, 0x71, 0x53, 0x5E, + 0x4C, 0x4E, 0x5B, 0x50, 0x60, 0x70, + 0x58, 0x4C, 0x46, 0x43, 0x41, 0x43, + 0x4E, 0x78, 0x70, 0x60, 0x7F, 0x00, + 0x7F, 0x40, 0x4C, 0x4E, 0x4F, 0x43, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x43, + 0x4F, 0x4E, 0x4C, 0x40, 0x7F, 0x00, +}; +// clang-format on diff --git a/keyboards/yanghu/unicorne/info.json b/keyboards/yanghu/unicorne/info.json new file mode 100644 index 000000000000..995bed8a03b4 --- /dev/null +++ b/keyboards/yanghu/unicorne/info.json @@ -0,0 +1,62 @@ +{ + "keyboard_name": "Unicorne", + "url": "https://github.com/yanghu/unicorne", + "maintainer": "yanghu", + "layouts": { + "LAYOUT_unicorne": { + "layout": [ + {"label":"Tab", "x":0, "y":0.8}, + {"label":"Q", "x":1, "y":0.8}, + {"label":"W", "x":2, "y":0.1}, + {"label":"E", "x":3, "y":0}, + {"label":"R", "x":4, "y":0.1}, + {"label":"T", "x":5, "y":0.2}, + + {"label":"Y", "x":9, "y":0.2}, + {"label":"U", "x":10, "y":0.1}, + {"label":"I", "x":11, "y":0}, + {"label":"O", "x":12, "y":0.1}, + {"label":"P", "x":13, "y":0.8}, + {"label":"Back Space", "x":14, "y":0.8}, + + {"label":"Ctrl / Esc", "x":0, "y":1.8}, + {"label":"A", "x":1, "y":1.8}, + {"label":"S", "x":2, "y":1.1}, + {"label":"D", "x":3, "y":1}, + {"label":"F", "x":4, "y":1.1}, + {"label":"G", "x":5, "y":1.2}, + + {"label":"H", "x":9, "y":1.2}, + {"label":"J", "x":10, "y":1.1}, + {"label":"K", "x":11, "y":1}, + {"label":"L", "x":12, "y":1.1}, + {"label":";", "x":13, "y":1.8}, + {"label":"'", "x":14, "y":1.8}, + + {"label":"Shift", "x":0, "y":2.8}, + {"label":"Z", "x":1, "y":2.8}, + {"label":"X", "x":2, "y":2.1}, + {"label":"C", "x":3, "y":2}, + {"label":"V", "x":4, "y":2.1}, + {"label":"B", "x":5, "y":2.2}, + + {"label":"N", "x":9, "y":2.2}, + {"label":"M", "x":10, "y":2.1}, + {"label":",", "x":11, "y":2}, + {"label":".", "x":12, "y":2.1}, + {"label":"/", "x":13, "y":2.8}, + {"label":"Shift / Enter", "x":14, "y":2.8}, + + {"label":"Ctrl", "x":3, "y":3.7}, + {"label":"Alt", "x":4, "y":3.7}, + {"label":"Lower", "x":5, "y":3.7}, + {"label":"Enter", "x":6, "y":3.2, "h":1.5}, + + {"label":"Backspace", "x":8, "y":3.2, "h":1.5}, + {"label":"Space", "x":9, "y":3.7}, + {"label":"Raise", "x":10, "y":3.7}, + {"label":"RGUI", "x":11, "y":3.7} + ] + } + } +} diff --git a/keyboards/yanghu/unicorne/keymaps/default/config.h b/keyboards/yanghu/unicorne/keymaps/default/config.h new file mode 100644 index 000000000000..e7ee9814efe6 --- /dev/null +++ b/keyboards/yanghu/unicorne/keymaps/default/config.h @@ -0,0 +1,22 @@ +/* Copyright 2021 Yang Hu + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define OLED_FONT_H "keyboards/yanghu/unicorne/glcdfont.c" +#define ENCODER_RESOLUTION 4 +#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_BREATHING +#define RGBLIGHT_DEFAULT_COLOR HSV_BLUE diff --git a/keyboards/yanghu/unicorne/keymaps/default/keymap.c b/keyboards/yanghu/unicorne/keymaps/default/keymap.c new file mode 100644 index 000000000000..26fb01426097 --- /dev/null +++ b/keyboards/yanghu/unicorne/keymaps/default/keymap.c @@ -0,0 +1,92 @@ +/* Copyright 2021 Yang Hu + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +#include "layers.h" + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) +#define ADJUST MO(_ADJUST) + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_split_3x6_4( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + LCTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RSFT_T(KC_ENT), + KC_LCTL, KC_LALT, LOWER, KC_ENT, KC_BSPC, KC_SPC, RAISE, KC_RGUI + ), + + [_LOWER] = LAYOUT_split_3x6_4( + _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, + _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_GRV, KC_TILD, + _______, KC_ESC, KC_LGUI, KC_LALT, KC_CAPS, KC_DQUO, KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_PSCR, RSFT_T(KC_SPC), + _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_RAISE] = LAYOUT_split_3x6_4( + _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, + _______, KC_ESC, KC_RGUI, KC_RALT, KC_CAPS, KC_QUOT, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_ADJUST] = LAYOUT_split_3x6_4( + RGB_VAI, RGB_SAI, RGB_HUI, RGB_MOD, XXXXXXX, RGB_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + RGB_VAD, RGB_SAD, RGB_HUD, RGB_RMOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; +// clang-format on +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } + +// Left encoder scrolls the mousewheel. Right encoder adjusts underglow hue. +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + if (clockwise) { +#ifdef MOUSEKEY_ENABLE + tap_code(KC_MS_WH_DOWN); +#else + tap_code(KC_PGDN); +#endif + } else { +#ifdef MOUSEKEY_ENABLE + tap_code(KC_MS_WH_UP); +#else + tap_code(KC_PGUP); +#endif + } + } else { // index = 1: right encoder + if (clockwise) { +#ifdef RGB_MATRIX_ENABLE + rgb_matrix_step(); +#else + rgblight_increase_hue_noeeprom(); +#endif + } else { +#ifdef RGB_MATRIX_ENABLE + rgb_matrix_step_reverse(); +#else + rgblight_decrease_hue_noeeprom(); +#endif + } + } + return false; +} + +// Set underglow color to blue. +void keyboard_post_init_user(void) { rgblight_sethsv_noeeprom(RGBLIGHT_DEFAULT_COLOR); } diff --git a/keyboards/yanghu/unicorne/keymaps/default/layers.h b/keyboards/yanghu/unicorne/keymaps/default/layers.h new file mode 100644 index 000000000000..0505d4956bab --- /dev/null +++ b/keyboards/yanghu/unicorne/keymaps/default/layers.h @@ -0,0 +1,24 @@ +/* Copyright 2021 Yang Hu + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _LOWER, + _RAISE, + _ADJUST, +}; diff --git a/keyboards/yanghu/unicorne/keymaps/default/oled.c b/keyboards/yanghu/unicorne/keymaps/default/oled.c new file mode 100644 index 000000000000..417f573ff03c --- /dev/null +++ b/keyboards/yanghu/unicorne/keymaps/default/oled.c @@ -0,0 +1,67 @@ +/* Copyright 2021 Yang Hu + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#ifdef OLED_ENABLE +# include QMK_KEYBOARD_H +# include "layers.h" + +// Some characters position: +// alt: 84 85 86/a..../c... +// shift:87 88 89/a.../c... +// ctrl: b6 b6/d.../ +// capslock: 9c-9f/b.../d... +// numlock: 98-9b/b.../d... +// navigation logo: 92-95/b2.../d2... +// symbol logo: 8a-8d/aa..../ca.... +// qmk logos; 8e-91/ae..../ce.... +void oled_render_layer(void) { + /* static const char PROGMEM cmd_logo[] = { */ + /* 0x80, 0x81, 0x82, 0x83, 10, */ + /* 0xa0, 0xa1, 0xa2, 0xa3, 10, */ + /* 0xc0, 0xc1, 0xc2, 0xc3, 10, */ + /* 0}; */ + // clang-format off + static const char PROGMEM numlock_logo[] = { + 0x98, 0x99, 0x9a, 0x9b, 10, + 0xb8, 0xb9, 0xba, 0xbb, 10, + 0xd8, 0xd9, 0xda, 0xdb, 10, 0}; + static const char PROGMEM symbol_logo[] = { + 0x8a, 0x8b, 0x8c, 0x8d, 10, + 0xaa, 0xab, 0xac, 0xad, 10, + 0xca, 0xcb, 0xcc, 0xcd, 10, 0}; + static const char PROGMEM qmk_logo[] = { + 0x8e, 0x8f, 0x90, 0x91, 10, + 0xae, 0xaf, 0xb0, 0xb1, 10, + 0xce, 0xcf, 0xd0, 0xd1, 10, 0}; + // clang-format on + if (IS_LAYER_ON(_LOWER)) { + oled_write_P(symbol_logo, false); + } else if (IS_LAYER_ON(_RAISE)) { + oled_write_P(numlock_logo, false); + } else if (IS_LAYER_ON(_BASE)) { + oled_write_P(qmk_logo, false); + } else { + if (IS_LAYER_ON(_ADJUST)) { + oled_write_ln("ADJ", false); + } else { + oled_write_ln("?????", false); + } + oled_write_ln(" ", false); + oled_write_ln(" ", false); + oled_write_ln(" ", false); + } +} + +#endif diff --git a/keyboards/yanghu/unicorne/keymaps/default/readme.md b/keyboards/yanghu/unicorne/keymaps/default/readme.md new file mode 100644 index 000000000000..b6ce9e423758 --- /dev/null +++ b/keyboards/yanghu/unicorne/keymaps/default/readme.md @@ -0,0 +1,10 @@ +![keymap](https://imgur.com/48cFzA5.jpg) + +# Default Unicorne Layout + +This is the default layout for Unicorne. The "lower" layer consists of symbols +and navigation, while "raises' has numbers, some other symbols and function +keys. + +Press `lower` and `raise` together activates `adjust` layer, with RGB controls, +as well as access to reset/bootloader. diff --git a/keyboards/yanghu/unicorne/keymaps/default/rules.mk b/keyboards/yanghu/unicorne/keymaps/default/rules.mk new file mode 100644 index 000000000000..dbfa81b6ce06 --- /dev/null +++ b/keyboards/yanghu/unicorne/keymaps/default/rules.mk @@ -0,0 +1 @@ +SRC += oled.c diff --git a/keyboards/yanghu/unicorne/readme.md b/keyboards/yanghu/unicorne/readme.md new file mode 100644 index 000000000000..3da5e97bf4f9 --- /dev/null +++ b/keyboards/yanghu/unicorne/readme.md @@ -0,0 +1,17 @@ +# Unicorne + +![Unicorne](https://imgur.com/g1nN3b4h.jpg) + +A compact 40% (3x6\_4) single-piece angled ortholinear ergo keyboard kit inspired by crkbd, Kyria, Ferris and Reviung41. Features OLED display, audio buzzer, RGB LED underglow as well as encoders. + +* Keyboard Maintainer: [Yang Hu](https://github.com/yanghu) +* Hardware Supported: Unicorne PCB 1.0 +* Hardware Availability: Open source design at https://github.com/yanghu/unicorne + +To enter bootloader, long press the reset button for 3-5 seconds then release. More details can be found at [keyboard wiki](https://github.com/yanghu/unicorne/wiki/Build-guide#testing-the-board). + +Make example for this keyboard (after setting up your build environment): + + make yanghu/unicorne: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/yanghu/unicorne/rules.mk b/keyboards/yanghu/unicorne/rules.mk new file mode 100644 index 000000000000..9774883c041f --- /dev/null +++ b/keyboards/yanghu/unicorne/rules.mk @@ -0,0 +1,24 @@ +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 = yes # Audio output +ENCODER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 + +WS2812_DRIVER = pwm +AUDIO_DRIVER = pwm_hardware + +RGB_MATRIX_ENABLE = no # Do not enable with RGBLIGHT +RGB_MATRIX_DRIVER = WS2812 + +DEFAULT_FOLDER = yanghu/unicorne/f411 diff --git a/keyboards/yanghu/unicorne/unicorne.c b/keyboards/yanghu/unicorne/unicorne.c new file mode 100644 index 000000000000..bce8f52075db --- /dev/null +++ b/keyboards/yanghu/unicorne/unicorne.c @@ -0,0 +1,150 @@ +/* Copyright 2021 Yang Hu + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "unicorne.h" +#include "i2c_master.h" + +// Custom i2c init to enable internal pull up resistor for i2c. +void i2c_init(void) { + static bool is_initialised = false; + if (!is_initialised) { + is_initialised = true; + + // Try releasing special pins for a short time + palSetLineMode(I2C1_SCL_PIN, PAL_MODE_INPUT); + palSetLineMode(I2C1_SDA_PIN, PAL_MODE_INPUT); + + chThdSleepMilliseconds(10); + // Use internal pull up since we do not have pull up on i2c pins in v1 design. + palSetLineMode(I2C1_SCL_PIN, PAL_MODE_ALTERNATE(I2C1_SCL_PAL_MODE) | PAL_OUTPUT_TYPE_OPENDRAIN | PAL_STM32_PUPDR_PULLUP); + palSetLineMode(I2C1_SDA_PIN, PAL_MODE_ALTERNATE(I2C1_SDA_PAL_MODE) | PAL_OUTPUT_TYPE_OPENDRAIN | PAL_STM32_PUPDR_PULLUP); + } +} + +// LED matrix +// physical location +// 2 3 4 5 +// +// 1 6 +// 0 7 +#ifdef RGB_MATRIX_ENABLE +// clang-format off +led_config_t g_led_config = {{ + // Key Matrix to LED Index + // Since we only have 8 LEDs, map the keys near them to the same LED. + {2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5}, + {2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5}, + {1, 1, 1, 0, 0, 0, 7, 7, 7, 6, 6, 6}, + {NO_LED, NO_LED, NO_LED, 0, 0, 0, 7, 7, 7, NO_LED, NO_LED, NO_LED}, +}, {// LED Index to Physical Position + {94, 60}, + {18, 44}, + {8, 10}, + {94, 10}, + {130,10}, + {216, 10}, + {208, 44}, + {130, 60} +}, {// LED Index to Flag + LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, + LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL +}}; +// clang-format on +#endif + +#ifdef OLED_ENABLE +// OLED shared code +// The oled is vertical. Need to rotate 270 degrees. +__attribute__((weak)) oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; } + +// Render layer status on OLED. To be re-implemented by keymaps since layers are +// defined there. +__attribute__((weak)) void oled_render_layer(void) { return; } + +// Oneshot mods status +uint8_t osmods; + +__attribute__((weak)) void oled_render_mods(void) { + static const char PROGMEM ctrl[] = {0xb6, 0xb7, 10, 0xd6, 0xd7, 10, 0x20, 0x20, 10, 0}; + static const char PROGMEM shift[] = {0x87, 0x88, 0x89, 10, 0xa7, 0xa8, 0xa9, 10, 0xc7, 0xc8, 0xc9, 10, 0}; + static const char PROGMEM alt[] = {0x84, 0x85, 0x86, 10, 0xa4, 0xa5, 0xa6, 10, 0xc4, 0xc5, 0xc6, 10, 0}; + static const char PROGMEM ctrl_alt[] = {0xb6, 0xb7, 0x84, 0x85, 0x86, 0xd6, 0xd7, 0xa4, 0xa5, 0xa6, 0x20, 0x20, 0xc4, 0xc5, 0xc6, 0}; + + static const char PROGMEM ctrl_shift[] = {0xb6, 0xb7, 0x87, 0x88, 0x89, 0xd6, 0xd7, 0xa7, 0xa8, 0xa9, 0x20, 0x20, 0xc7, 0xc8, 0xc9, 0}; + static const char PROGMEM c_a_shift[] = {0xb6, 0xb7, 0x84, 0x85, 0x86, 0xd6, 0xd7, 0xa4, 0xa5, 0xa6, 0x20, 0x20, 0xc4, 0xc5, 0xc6, 0x87, 0x88, 0x89, 10, 0xa7, 0xa8, 0xa9, 10, 0xc7, 0xc8, 0xc9, 10, 0}; + // Now check mod status and render. + static uint8_t mods; + mods = get_mods() | osmods; + if ((mods & MOD_MASK_CTRL) && (mods & MOD_MASK_ALT) && (mods & MOD_MASK_SHIFT)) { + oled_write_P(c_a_shift, false); + } else if ((mods & MOD_MASK_CTRL) && (mods & MOD_MASK_ALT)) { + oled_write_P(ctrl_alt, false); + } else if ((mods & MOD_MASK_CTRL) && (mods & MOD_MASK_SHIFT)) { + oled_write_P(ctrl_shift, false); + } else if ((mods & MOD_MASK_SHIFT) && (mods & MOD_MASK_ALT)) { + oled_write_P(alt, false); + oled_write_P(shift, false); + } else if (mods & MOD_MASK_CTRL) { + oled_write_P(ctrl, false); + } else if (mods & MOD_MASK_ALT) { + oled_write_P(alt, false); + } else if (mods & MOD_MASK_SHIFT) { + oled_write_P(shift, false); + } else { + for (int i = 0; i < 6; ++i) { + oled_write_ln(" ", false); + } + } + return; +} + +void oneshot_mods_changed_user(uint8_t mods) { osmods = mods; } + +// Call this from "led_update_user" and use `led_state.caps_lock` to check +// the status of capslock. +__attribute__((weak)) void oled_render_capslock(bool caps_on) { + static const char PROGMEM capslock_logo[] = {0x9c, 0x9d, 0x9e, 0x9f, 10, 0xbc, 0xbd, 0xbe, 0xbf, 10, 0xdc, 0xdd, 0xde, 0xdf, 10, 0}; + if (caps_on) { + oled_write_P(capslock_logo, false); + } else { + for (int i = 0; i < 3; ++i) { + oled_write_ln(" ", false); + } + } +} + +char keylog_str[24] = {}; + +const char code_to_name[60] = {' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'R', 'E', 'B', 'T', '_', '-', '=', '[', ']', '\\', '#', ';', '\'', '`', ',', '.', '/', ' ', ' ', ' '}; + +void set_keylog(uint16_t keycode, keyrecord_t *record) { + if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) { + keycode = keycode & 0xFF; + } +} + +__attribute__((weak)) void oled_render_keylog(void) { oled_write(keylog_str, false); } + +// Keymaps can override this function +__attribute__((weak)) bool oled_task_kb(void) { + if (!oled_task_user()) { return false; } + /* oled_render_keylog(); */ + oled_render_layer(); + oled_render_mods(); + led_t led_state = host_keyboard_led_state(); + oled_render_capslock(led_state.caps_lock); + return true; +} +#endif diff --git a/keyboards/yanghu/unicorne/unicorne.h b/keyboards/yanghu/unicorne/unicorne.h new file mode 100644 index 000000000000..f0b5685f1d8f --- /dev/null +++ b/keyboards/yanghu/unicorne/unicorne.h @@ -0,0 +1,50 @@ +/* Copyright 2021 Yang Hu + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#ifdef OLED_ENABLE +void oled_render_capslock(bool caps_on); +void oled_render_mods(void); +void oled_render_keylog(void); +#endif +/* This a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + +// clang-format off +#define LAYOUT_split_3x6_4( \ + 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 \ +) \ +{ \ + { 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, K30, K31, K32, K33, K34, K35, K36, K37, KC_NO, KC_NO} \ +} +// clang-format on + +#define LAYOUT LAYOUT_split_3x6_4 diff --git a/keyboards/yasui/info.json b/keyboards/yasui/info.json index 496c190b4620..019d4f94fc81 100644 --- a/keyboards/yasui/info.json +++ b/keyboards/yasui/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Yasui", "url": "https://www.rainkeebs.mx/product/yasui-keyboard-kit", "maintainer": "rainkeebs", - "width": 10, - "height": 4, "layouts": { "LAYOUT": { "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}] diff --git a/keyboards/yasui/rules.mk b/keyboards/yasui/rules.mk index b8adede3eb4c..43cbb4025db9 100644 --- a/keyboards/yasui/rules.mk +++ b/keyboards/yasui/rules.mk @@ -1,18 +1,17 @@ # MCU name MCU = atmega32u4 -# Bootloader +# Bootloader selection BOOTLOADER = caterina # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 -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 diff --git a/keyboards/yatara/drink_me/config.h b/keyboards/yatara/drink_me/config.h index ab066761fdd1..10573092c9be 100644 --- a/keyboards/yatara/drink_me/config.h +++ b/keyboards/yatara/drink_me/config.h @@ -19,7 +19,7 @@ #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED +#define VENDOR_ID 0x5961 // "Ya" - Yatara #define PRODUCT_ID 0x1470 #define DEVICE_VER 0x0001 #define MANUFACTURER Yatara diff --git a/keyboards/yatara/drink_me/info.json b/keyboards/yatara/drink_me/info.json index 0e021a70655a..00327243d589 100644 --- a/keyboards/yatara/drink_me/info.json +++ b/keyboards/yatara/drink_me/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Drink Me", "url": "https://github.com/yatara-cc", "maintainer": "yatara-cc", - "width": 4, - "height": 1, "layouts": { "LAYOUT": { - "key_count": 4, "layout": [ { "label": "K0", diff --git a/keyboards/yatara/drink_me/rules.mk b/keyboards/yatara/drink_me/rules.mk index d432712bdfc2..7e4d9daa590b 100644 --- a/keyboards/yatara/drink_me/rules.mk +++ b/keyboards/yatara/drink_me/rules.mk @@ -2,29 +2,18 @@ MCU = atmega32u2 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/yd60mq/info.json b/keyboards/yd60mq/info.json index 56ddb147a039..98db8ac3f651 100644 --- a/keyboards/yd60mq/info.json +++ b/keyboards/yd60mq/info.json @@ -2,8 +2,6 @@ "keyboard_name": "YD60MQ", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/yd60mq/rules.mk b/keyboards/yd60mq/rules.mk index d6763bc75f4d..5ae66553c90b 100644 --- a/keyboards/yd60mq/rules.mk +++ b/keyboards/yd60mq/rules.mk @@ -2,32 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = 60_ansi 60_ansi_split_bs_rshift 60_ansi_tsangan 60_hhkb 60_iso 60_iso_split_bs_rshift 60_iso_tsangan diff --git a/keyboards/yd68/config.h b/keyboards/yd68/config.h index a17d3d92b9f7..a501a984766f 100644 --- a/keyboards/yd68/config.h +++ b/keyboards/yd68/config.h @@ -102,54 +102,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -168,23 +120,3 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - diff --git a/keyboards/yd68/info.json b/keyboards/yd68/info.json index b392f03865ba..879762055754 100644 --- a/keyboards/yd68/info.json +++ b/keyboards/yd68/info.json @@ -2,12 +2,9 @@ "keyboard_name": "YD68", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT_ansi": { - "key_count": 68, "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}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4}, {"label":"Win", "x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}] } } -} \ No newline at end of file +} diff --git a/keyboards/yd68/keymaps/default/keymap.c b/keyboards/yd68/keymaps/default/keymap.c index 290aa0d61ec2..fc6141f3be0a 100644 --- a/keyboards/yd68/keymaps/default/keymap.c +++ b/keyboards/yd68/keymaps/default/keymap.c @@ -51,15 +51,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/yd68/rules.mk b/keyboards/yd68/rules.mk index e8ec4ea08b92..64bbb9ab4479 100644 --- a/keyboards/yd68/rules.mk +++ b/keyboards/yd68/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/yd68/yd68.h b/keyboards/yd68/yd68.h index d5d98dec0888..3303bd899e3a 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 . */ -#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/yeehaw/info.json b/keyboards/yeehaw/info.json index d121b07b98b2..4fe5d4438ca1 100644 --- a/keyboards/yeehaw/info.json +++ b/keyboards/yeehaw/info.json @@ -2,11 +2,9 @@ "keyboard_name": "Yeehaw", "url": "https://squashkb.com/product/yeehaw", "maintainer": "Tsquash", - "width": 5, - "height": 5.5, "layouts": { "LAYOUT": { "layout": [{"label":"VOLU", "x":1, "y":0}, {"label":"VOLD", "x":1, "y":1}, {"label":"M1", "x":2, "y":1.5}, {"label":"UP", "x":3, "y":1.5}, {"label":"MNXT", "x":1, "y":2}, {"label":"M2", "x":4, "y":2}, {"label":"LEFT", "x":2, "y":2.5}, {"label":"DOWN", "x":3, "y":2.5}, {"label":"MO(1)", "x":0, "y":2.75}, {"label":"MPRV", "x":1, "y":3}, {"label":"RIGHT", "x":4, "y":3}, {"label":"MPLY", "x":2, "y":3.5}, {"label":"CTL S", "x":3, "y":3.5}, {"label":"RGB TOG", "x":2.5, "y":4.5}] } } -} \ No newline at end of file +} diff --git a/keyboards/yeehaw/keymaps/default/keymap.c b/keyboards/yeehaw/keymaps/default/keymap.c index 20bdbf581ebc..7f7141d2930f 100644 --- a/keyboards/yeehaw/keymaps/default/keymap.c +++ b/keyboards/yeehaw/keymaps/default/keymap.c @@ -46,9 +46,9 @@ KC_TRNS, RGB_SAD, RGB_M_P, RGB_MOD, RGB_SPD, bool encoder_update_user(uint8_t index, bool clockwise) { if (index == 0) { /* First encoder */ if (clockwise) { - tap_code(KC_VOLD); - } else { tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); } } return true; @@ -64,7 +64,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case SQUASHKB: if (record->event.pressed) { - SEND_STRING("http://squashkb.com"); + SEND_STRING("https://squashkb.com"); } break; } diff --git a/keyboards/yeehaw/keymaps/via/keymap.c b/keyboards/yeehaw/keymaps/via/keymap.c index dfb0bdd56815..3beca9c21df3 100644 --- a/keyboards/yeehaw/keymaps/via/keymap.c +++ b/keyboards/yeehaw/keymaps/via/keymap.c @@ -43,21 +43,21 @@ KC_TRNS, RGB_SAD, RGB_M_P, RGB_MOD, RGB_SPD, ), [2] = LAYOUT( - _______, - _______, - _______, _______, _______, _______, -_______, _______, _______, _______, _______, - _______, _______, - _______ + KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, +KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS ), [3] = LAYOUT( - _______, - _______, - _______, _______, _______, _______, -_______, _______, _______, _______, _______, - _______, _______, - _______ + KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, +KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS ), }; @@ -65,9 +65,9 @@ _______, _______, _______, _______, _______, bool encoder_update_user(uint8_t index, bool clockwise) { if (index == 0) { /* First encoder */ if (clockwise) { - tap_code(KC_VOLD); - } else { tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); } } return true; @@ -83,7 +83,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case SQUASHKB: if (record->event.pressed) { - SEND_STRING("http://squashkb.com"); + SEND_STRING("https://squashkb.com"); } break; } diff --git a/keyboards/yeehaw/rules.mk b/keyboards/yeehaw/rules.mk index 3fc8514b5ac1..c53a2ff33fb3 100644 --- a/keyboards/yeehaw/rules.mk +++ b/keyboards/yeehaw/rules.mk @@ -1,3 +1,4 @@ +# MCU name MCU = atmega32u4 # Bootloader selection @@ -10,11 +11,7 @@ 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 = no # USB Nkey Rollover RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode ENCODER_ENABLE = yes diff --git a/keyboards/ymd75/info.json b/keyboards/ymd75/info.json index fe27c0c5350f..65a53e87cdcb 100644 --- a/keyboards/ymd75/info.json +++ b/keyboards/ymd75/info.json @@ -2,8 +2,6 @@ "keyboard_name": "ymd75", "url": "", "maintainer": "qmk", - "width": 16, - "height": 6, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/ymd75/rev1/rules.mk b/keyboards/ymd75/rev1/rules.mk index 2499c1c5e3d6..453c950106dd 100644 --- a/keyboards/ymd75/rev1/rules.mk +++ b/keyboards/ymd75/rev1/rules.mk @@ -2,17 +2,10 @@ MCU = atmega32a # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid # build options -BOOTMAGIC_ENABLE = full +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no EXTRAKEY_ENABLE = yes CONSOLE_ENABLE = no @@ -24,5 +17,3 @@ NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work KEY_LOCK_ENABLE = yes -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend diff --git a/keyboards/ymd75/rev2/rules.mk b/keyboards/ymd75/rev2/rules.mk index 2499c1c5e3d6..453c950106dd 100644 --- a/keyboards/ymd75/rev2/rules.mk +++ b/keyboards/ymd75/rev2/rules.mk @@ -2,17 +2,10 @@ MCU = atmega32a # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid # build options -BOOTMAGIC_ENABLE = full +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no EXTRAKEY_ENABLE = yes CONSOLE_ENABLE = no @@ -24,5 +17,3 @@ NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work KEY_LOCK_ENABLE = yes -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend diff --git a/keyboards/ymd75/rev3/rules.mk b/keyboards/ymd75/rev3/rules.mk index 9506e636d271..01e7fb54802b 100644 --- a/keyboards/ymd75/rev3/rules.mk +++ b/keyboards/ymd75/rev3/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output KEY_LOCK_ENABLE = yes # Enable KC_LOCK support diff --git a/keyboards/ymd96/info.json b/keyboards/ymd96/info.json index 73edfd894f00..d83312015ead 100644 --- a/keyboards/ymd96/info.json +++ b/keyboards/ymd96/info.json @@ -2,9 +2,6 @@ "keyboard_name": "ymd96", "url": "", "maintainer": "sparkyman215", - - "width": 19, - "height": 6, "layouts": { "LAYOUT_default": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, {"label":"F2", "x":2, "y":0}, {"label":"F3", "x":3, "y":0}, {"label":"F4", "x":4, "y":0}, {"label":"F5", "x":5, "y":0}, {"label":"F6", "x":6, "y":0}, {"label":"F7", "x":7, "y":0}, {"label":"F8", "x":8, "y":0}, {"label":"F9", "x":9, "y":0}, {"label":"F10", "x":10, "y":0}, {"label":"F11", "x":11, "y":0}, {"label":"F12", "x":12, "y":0}, {"label":"Print Screen", "x":13, "y":0}, {"label":"Home", "x":14, "y":0}, {"label":"End", "x":15, "y":0}, {"label":"Insert", "x":16, "y":0}, {"label":"Delete", "x":17, "y":0}, {"label":"Page Up", "x":18, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"@", "x":2, "y":1}, {"label":"#", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"label":"Backspace", "x":13, "y":1, "w":2}, {"label":"Num Lock", "x":15, "y":1}, {"label":"/", "x":16, "y":1}, {"label":"*", "x":17, "y":1}, {"label":"PgDn", "x":18, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"7", "x":15, "y":2}, {"label":"8", "x":16, "y":2}, {"label":"9", "x":17, "y":2}, {"label":"+", "x":18, "y":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"\"", "x":11.75, "y":3}, {"label":"Enter", "x":12.75, "y":3, "w":2.25}, {"label":"4", "x":15, "y":3}, {"label":"5", "x":16, "y":3}, {"label":"6", "x":17, "y":3}, {"label":"+", "x":18, "y":3},{"label":"Shift", "x":0, "y":4, "w":2.25}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":2.75}, {"label":"1", "x":15, "y":4}, {"label":"2", "x":16, "y":4}, {"label":"3", "x":17, "y":4}, {"label":"Enter", "x":18, "y":4, "h":2}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"Fn", "x":10, "y":5}, {"label":"Win", "x":11, "y":5}, {"label":"\u2190", "x":12, "y":5}, {"label":"\u2193", "x":13, "y":5}, {"label":"\u2191", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}, {"label":"0", "x":16, "y":5}, {"label":".", "x":17, "y":5}] @@ -16,4 +13,4 @@ "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, {"label":"F2", "x":2, "y":0}, {"label":"F3", "x":3, "y":0}, {"label":"F4", "x":4, "y":0}, {"label":"F5", "x":5, "y":0}, {"label":"F6", "x":6, "y":0}, {"label":"F7", "x":7, "y":0}, {"label":"F8", "x":8, "y":0}, {"label":"F9", "x":9, "y":0}, {"label":"F10", "x":10, "y":0}, {"label":"F11", "x":11, "y":0}, {"label":"F12", "x":12, "y":0}, {"label":"PrtSc", "x":13, "y":0}, {"label":"Home", "x":14, "y":0}, {"label":"End", "x":15, "y":0}, {"label":"Insert", "x":16, "y":0}, {"label":"Delete", "x":17, "y":0}, {"label":"PgUp", "x":18, "y":0}, {"label":"\u00ac", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"\"", "x":2, "y":1}, {"label":"\u00a3", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"label":"Backspace", "x":13, "y":1, "w":2}, {"label":"Num Lock", "x":15, "y":1}, {"label":"/", "x":16, "y":1}, {"label":"*", "x":17, "y":1}, {"label":"PgDn", "x":18, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.25, "h":2}, {"label":"7", "x":15, "y":2}, {"label":"8", "x":16, "y":2}, {"label":"9", "x":17, "y":2}, {"label":"-", "x":18, "y":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"@", "x":11.75, "y":3}, {"label":"~", "x":12.75, "y":3}, {"label":"4", "x":15, "y":3}, {"label":"5", "x":16, "y":3}, {"label":"6", "x":17, "y":3}, {"label":"+", "x":18, "y":3}, {"label":"Shift", "x":0, "y":4, "w":1.25}, {"label":"|", "x":1.25, "y":4}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"label":"Up", "x":14, "y":4}, {"label":"1", "x":15, "y":4}, {"label":"2", "x":16, "y":4}, {"label":"3", "x":17, "y":4}, {"label":"Enter", "x":18, "y":4, "h":2}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"AltGr", "x":10, "y":5, "w":1.5}, {"label":"Win", "x":11.5, "y":5, "w":1.5}, {"label":"Left", "x":13, "y":5}, {"label":"Down", "x":14, "y":5}, {"label":"Right", "x":15, "y":5}, {"label":"0", "x":16, "y":5}, {"label":".", "x":17, "y":5}] } } -} \ No newline at end of file +} diff --git a/keyboards/ymd96/rules.mk b/keyboards/ymd96/rules.mk index 2ce37cfc78c7..69db6d1a23da 100644 --- a/keyboards/ymd96/rules.mk +++ b/keyboards/ymd96/rules.mk @@ -2,17 +2,10 @@ MCU = atmega32a # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid # build options -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no EXTRAKEY_ENABLE = yes CONSOLE_ENABLE = no @@ -24,6 +17,3 @@ RGBLIGHT_ENABLE = yes WS2812_DRIVER = i2c KEY_LOCK_ENABLE = yes - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend diff --git a/keyboards/ymdk/bface/info.json b/keyboards/ymdk/bface/info.json index 4e6e831595d1..4c2f5d7560fa 100644 --- a/keyboards/ymdk/bface/info.json +++ b/keyboards/ymdk/bface/info.json @@ -2,8 +2,6 @@ "keyboard_name": "YMDK Bface", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "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}, {"label":"Backspace", "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},{"x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.25}, {"x":0, "y":3},{"x":1, "y":3}, {"label":"Z", "x":2, "y":3}, {"label":"X", "x":3, "y":3}, {"label":"C", "x":4, "y":3}, {"label":"V", "x":5, "y":3}, {"label":"B", "x":6, "y":3}, {"label":"N", "x":7, "y":3}, {"label":"M", "x":8, "y":3}, {"label":"<", "x":9, "y":3}, {"label":">", "x":10, "y":3}, {"label":"?", "x":11, "y":3}, {"x":12, "y":3},{"x":13, "y":3}, {"x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.75}, {"x":1.75, "y":4, "w":1.25}, {"x":3, "y":4, "w":1.25}, {"x":4.25, "y":4, "w":1.25},{"x":5.5, "y":4, "w":3}, {"x":8.5, "y":4, "w":1.25}, {"x":9.75, "y":4, "w":1.25}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}] diff --git a/keyboards/ymdk/bface/rules.mk b/keyboards/ymdk/bface/rules.mk index 3d51be11332d..3bff3ee31b28 100644 --- a/keyboards/ymdk/bface/rules.mk +++ b/keyboards/ymdk/bface/rules.mk @@ -2,17 +2,10 @@ MCU = atmega32a # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid # build options -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes EXTRAKEY_ENABLE = yes CONSOLE_ENABLE = no diff --git a/keyboards/ymdk/np24/u4rgb6/info.json b/keyboards/ymdk/np24/u4rgb6/info.json index 313eeabff73d..1a107c0b98be 100644 --- a/keyboards/ymdk/np24/u4rgb6/info.json +++ b/keyboards/ymdk/np24/u4rgb6/info.json @@ -1,8 +1,6 @@ { "keyboard_name": "YMDK NP24 U4 RGB6", "maintainer": "qmk", - "width": 4, - "height": 6.25, "layouts": { "LAYOUT_ortho_6x4": { "layout": [ @@ -37,37 +35,70 @@ {"x": 3, "y": 5.25} ] }, - "LAYOUT_ortho_4x6": { + "LAYOUT_ortho_4x6_right": { "layout": [ {"x": 0, "y": 0}, {"x": 1, "y": 0}, {"x": 2, "y": 0}, {"x": 3, "y": 0}, {"x": 4, "y": 0}, - {"x": 5.25, "y": 0}, + {"x": 5, "y": 0, "w": 1.5}, {"x": 0, "y": 1}, {"x": 1, "y": 1}, {"x": 2, "y": 1}, {"x": 3, "y": 1}, {"x": 4, "y": 1}, - {"x": 5.25, "y": 1}, + {"x": 5, "y": 1, "w": 1.5}, {"x": 0, "y": 2}, {"x": 1, "y": 2}, {"x": 2, "y": 2}, {"x": 3, "y": 2}, {"x": 4, "y": 2}, - {"x": 5.25, "y": 2}, + {"x": 5, "y": 2, "w": 1.5}, {"x": 0, "y": 3}, {"x": 1, "y": 3}, {"x": 2, "y": 3}, {"x": 3, "y": 3}, {"x": 4, "y": 3}, - {"x": 5.25, "y": 3} + {"x": 5, "y": 3, "w": 1.5} ] }, + + "LAYOUT_ortho_4x6_left": { + "layout": [ + {"x": 0, "y": 0, "w": 1.5}, + {"x": 1.5, "y": 0}, + {"x": 2.5, "y": 0}, + {"x": 3.5, "y": 0}, + {"x": 4.5, "y": 0}, + {"x": 5.5, "y": 0}, + + {"x": 0, "y": 1, "w": 1.5}, + {"x": 1.5, "y": 1}, + {"x": 2.5, "y": 1}, + {"x": 3.5, "y": 1}, + {"x": 4.5, "y": 1}, + {"x": 5.5, "y": 1,}, + + {"x": 0, "y": 2, "w": 1.5}, + {"x": 1.5, "y": 2}, + {"x": 2.5, "y": 2}, + {"x": 3.5, "y": 2}, + {"x": 4.5, "y": 2}, + {"x": 5.5, "y": 2}, + + {"x": 0, "y": 3, "w": 1.5}, + {"x": 1.5, "y": 3}, + {"x": 2.5, "y": 3}, + {"x": 3.5, "y": 3}, + {"x": 4.5, "y": 3}, + {"x": 5.5, "y": 3} + ] + }, + "LAYOUT_numpad_6x4": { "layout": [ {"x": 0, "y": 0}, diff --git a/keyboards/ymdk/np24/u4rgb6/rules.mk b/keyboards/ymdk/np24/u4rgb6/rules.mk index 625a433f928b..5504c7f5f4bc 100644 --- a/keyboards/ymdk/np24/u4rgb6/rules.mk +++ b/keyboards/ymdk/np24/u4rgb6/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output -LAYOUTS = ortho_6x4 numpad_6x4 ortho_4x6 +LAYOUTS = ortho_6x4 numpad_6x4 diff --git a/keyboards/ymdk/np24/u4rgb6/u4rgb6.h b/keyboards/ymdk/np24/u4rgb6/u4rgb6.h index 83ec486887f0..7615cf2bed9e 100644 --- a/keyboards/ymdk/np24/u4rgb6/u4rgb6.h +++ b/keyboards/ymdk/np24/u4rgb6/u4rgb6.h @@ -36,18 +36,32 @@ { k05, k15, k25, k35 } \ } -#define LAYOUT_ortho_4x6( \ +#define LAYOUT_ortho_4x6_right( \ k00, k01, k02, k03, k04, k05, \ k10, k11, k12, k13, k14, k15, \ k20, k21, k22, k23, k24, k25, \ k30, k31, k32, k33, k34, k35 \ ) { \ - { k00, k10, k20, k30 }, \ - { k01, k11, k21, k31 }, \ - { k02, k12, k22, k32 }, \ - { k03, k13, k23, k33 }, \ + { k05, k15, k25, k35 }, \ { k04, k14, k24, k34 }, \ - { k05, k15, k25, k35 } \ + { k03, k13, k23, k33 }, \ + { k02, k12, k22, k32 }, \ + { k01, k11, k21, k31 }, \ + { k00, k10, k20, k30 } \ +} + +#define LAYOUT_ortho_4x6_left( \ + k00, k01, k02, k03, k04, k05, \ + k10, k11, k12, k13, k14, k15, \ + k20, k21, k22, k23, k24, k25, \ + k30, k31, k32, k33, k34, k35 \ +) { \ + { k30, k20, k10, k00 }, \ + { k31, k21, k11, k01 }, \ + { k32, k22, k12, k02 }, \ + { k33, k23, k13, k03 }, \ + { k34, k24, k14, k04 }, \ + { k35, k25, k15, k05 } \ } #define LAYOUT_numpad_6x4( \ diff --git a/keyboards/ymdk/sp64/info.json b/keyboards/ymdk/sp64/info.json index 798124d8480d..3804b8b99a83 100644 --- a/keyboards/ymdk/sp64/info.json +++ b/keyboards/ymdk/sp64/info.json @@ -2,8 +2,6 @@ "keyboard_name": "YMDK_SP64", "url": "", "maintainer": "walston", - "width": 16, - "height": 5, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/ymdk/sp64/matrix.c b/keyboards/ymdk/sp64/matrix.c index 74bddc0578db..9a6e37bcdcb1 100644 --- a/keyboards/ymdk/sp64/matrix.c +++ b/keyboards/ymdk/sp64/matrix.c @@ -38,6 +38,17 @@ static void matrix_select_row(uint8_t row); static uint8_t mcp23018_reset_loop = 0; #endif +// user-defined overridable functions + +__attribute__((weak)) void matrix_init_kb(void) { matrix_init_user(); } + +__attribute__((weak)) void matrix_scan_kb(void) { matrix_scan_user(); } + +__attribute__((weak)) void matrix_init_user(void) {} + +__attribute__((weak)) void matrix_scan_user(void) {} + +// helper functions void matrix_init(void) { // all outputs for rows high diff --git a/keyboards/ymdk/sp64/rules.mk b/keyboards/ymdk/sp64/rules.mk index 8db57de3b53b..d2c74bbe09ec 100644 --- a/keyboards/ymdk/sp64/rules.mk +++ b/keyboards/ymdk/sp64/rules.mk @@ -2,19 +2,12 @@ MCU = atmega32a # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 diff --git a/keyboards/ymdk/sp64/sp64.c b/keyboards/ymdk/sp64/sp64.c index 568735ad7592..12f25777135a 100644 --- a/keyboards/ymdk/sp64/sp64.c +++ b/keyboards/ymdk/sp64/sp64.c @@ -67,27 +67,3 @@ uint8_t init_mcp23018(void) return (mcp23018_status); } #endif - -// Optional override functions below. -// You can leave any or all of these undefined. -// These are only required if you want to perform custom actions. - -__attribute__ ((weak)) -void matrix_init_user(void) {} - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -__attribute__ ((weak)) -void matrix_scan_user(void) {} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} diff --git a/keyboards/ymdk/wings/info.json b/keyboards/ymdk/wings/info.json index b5aaeb9590ba..09e80eb106d9 100644 --- a/keyboards/ymdk/wings/info.json +++ b/keyboards/ymdk/wings/info.json @@ -2,8 +2,6 @@ "keyboard_name": "YMDK Wings", "url": "http://ymdkey.com/", "maintainer": "qmk", - "width": 20.25, - "height": 5.25, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/ymdk/wings/rules.mk b/keyboards/ymdk/wings/rules.mk index 76bad1f48696..196191c38f28 100644 --- a/keyboards/ymdk/wings/rules.mk +++ b/keyboards/ymdk/wings/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/ymdk/wingshs/config.h b/keyboards/ymdk/wingshs/config.h new file mode 100644 index 000000000000..d215637f3505 --- /dev/null +++ b/keyboards/ymdk/wingshs/config.h @@ -0,0 +1,73 @@ +/* Copyright 2021 alittlepeace +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x594D // "YM" +#define PRODUCT_ID 0x4975 // "WINGHS" +#define DEVICE_VER 0x0001 +#define MANUFACTURER YMDK +#define PRODUCT WINGS HOTSWAP + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * 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, B7 } +#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4, F7, F6, F5, F4, F1, F0 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION ROW2COL + +#define BACKLIGHT_PIN B6 +#define BACKLIGHT_LEVELS 5 + +#define LED_CAPS_LOCK_PIN C7 +#define LED_PIN_ON_STATE 0 + +#define RGB_DI_PIN E2 +#ifdef RGB_DI_PIN +#define RGBLED_NUM 80 +#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 +#define RGBLIGHT_LIMIT_VAL 160 /* The maximum brightness level */ +#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ + +#endif + + diff --git a/keyboards/ymdk/wingshs/info.json b/keyboards/ymdk/wingshs/info.json new file mode 100644 index 000000000000..bc022fc17338 --- /dev/null +++ b/keyboards/ymdk/wingshs/info.json @@ -0,0 +1,83 @@ +{ + "keyboard_name": "YMDK Wings Hotswap", + "url": "http://ymdkey.com/", + "maintainer": "qmk", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label":"Esc", "x":0.75, "y":0.25}, + {"label":"1", "x":1.75, "y":0.25}, + {"label":"2", "x":2.75, "y":0}, + {"label":"3", "x":3.75, "y":0.25}, + {"label":"4", "x":4.75, "y":0.25}, + {"label":"5", "x":5.75, "y":0.25}, + {"label":"6", "x":6.75, "y":0.25}, + {"label":"7", "x":10, "y":0.25}, + {"label":"8", "x":11, "y":0.25}, + {"label":"9", "x":12, "y":0.25}, + {"label":"0", "x":13, "y":0.25}, + {"label":"-", "x":14, "y":0}, + {"label":"=", "x":15, "y":0.25}, + {"label":"Backspace", "x":16, "y":0.25, "w":2}, + {"label":"PgUp", "x":18.75, "y":0}, + + + {"label":"Tab", "x":0.5, "y":1.25, "w":1.5}, + {"label":"Q", "x":2, "y":1.25}, + {"label":"W", "x":3.25, "y":1.25}, + {"label":"E", "x":4.25, "y":1.25}, + {"label":"R", "x":5.25, "y":1.25}, + {"label":"T", "x":6.25, "y":1.25}, + {"label":"Y", "x":9.5, "y":1.25}, + {"label":"U", "x":10.5, "y":1.25}, + {"label":"I", "x":11.5, "y":1.25}, + {"label":"O", "x":12.5, "y":1.25}, + {"label":"P", "x":13.75, "y":1.25}, + {"label":"{", "x":14.75, "y":1.25}, + {"label":"}", "x":15.75, "y":1.25}, + {"label":"|", "x":16.75, "y":1.25, "w":1.5}, + {"label":"PgDn", "x":19, "y":1}, + + + {"label":"Caps Lock", "x":0.5, "y":2.25, "w":1.75}, + {"label":"A", "x":2.25, "y":2.25}, + {"label":"S", "x":3.5, "y":2.25}, + {"label":"D", "x":4.5, "y":2.25}, + {"label":"F", "x":5.5, "y":2.25}, + {"label":"G", "x":6.5, "y":2.25}, + {"label":"H", "x":9.75, "y":2.25}, + {"label":"J", "x":10.75, "y":2.25}, + {"label":"K", "x":11.75, "y":2.25}, + {"label":"L", "x":12.75, "y":2.25}, + {"label":":", "x":14.25, "y":2.25}, + {"label":"\"", "x":15.25, "y":2.25}, + {"label":"Enter", "x":16.25, "y":2.25, "w":2.25}, + {"label":"Fn", "x":19.25, "y":2}, + + {"label":"Shift", "x":0.5, "y":3.25, "w":2.25}, + {"label":"Z", "x":2.75, "y":3.25}, + {"label":"X", "x":4, "y":3.25}, + {"label":"C", "x":5, "y":3.25}, + {"label":"V", "x":6, "y":3.25}, + {"label":"B", "x":7, "y":3.25}, + {"label":"N", "x":10.25, "y":3.25}, + {"label":"M", "x":11.25, "y":3.25}, + {"label":"<", "x":12.25, "y":3.25}, + {"label":">", "x":14, "y":3.25}, + {"label":"?", "x":15, "y":3.25}, + {"label":"Shift", "x":16, "y":3.25, "w":1.75}, + {"label":"Up", "x":18, "y":3.25}, + + {"label":"Ctrl", "x":0.5, "y":4.25, "w":1.5}, + {"label":"Alt", "x":4, "y":4.25, "w":1.5}, + {"label":"Space", "x":5.5, "y":4.25, "w":2}, + {"label":"Menu", "x":7.5, "y":4.25}, + {"label":"Space", "x":10.25, "y":4.25, "w":2.75}, + {"label":"Alt", "x":13, "y":4.25, "w":1.5}, + {"label":"Left", "x":17, "y":4.25}, + {"label":"Down", "x":18, "y":4.25}, + {"label":"Right", "x":19, "y":4.25} + ] + } + } +} diff --git a/keyboards/ymdk/wingshs/keymaps/default/keymap.c b/keyboards/ymdk/wingshs/keymaps/default/keymap.c new file mode 100644 index 000000000000..adfe6c11e91f --- /dev/null +++ b/keyboards/ymdk/wingshs/keymaps/default/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2021 alittlepeace + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_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_BSPC, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, MO(1), + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_SPC, KC_LGUI, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_all( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, + _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/ymdk/wingshs/keymaps/via/keymap.c b/keyboards/ymdk/wingshs/keymaps/via/keymap.c new file mode 100644 index 000000000000..29e3f3df9ad4 --- /dev/null +++ b/keyboards/ymdk/wingshs/keymaps/via/keymap.c @@ -0,0 +1,50 @@ +/* Copyright 2021 alittlepeace + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_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_BSPC, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, MO(1), + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_SPC, KC_LGUI, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_all( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, + _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/ymdk/wingshs/keymaps/via/rules.mk b/keyboards/ymdk/wingshs/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/ymdk/wingshs/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/ymdk/wingshs/readme.md b/keyboards/ymdk/wingshs/readme.md new file mode 100644 index 000000000000..811fd0e6dab2 --- /dev/null +++ b/keyboards/ymdk/wingshs/readme.md @@ -0,0 +1,21 @@ +# YMDK Wings Hotswap + +![Wings Hotswap](https://cdn.shopify.com/s/files/1/0006/5227/9869/products/IMG_0172_2048x2048.jpg?v=1624963313) + +A keyboard inspired by the Arisu, which is inspired by Lyn's EM7 and TGR Alice. This has a different LED and matrix configuration from the non-hotswap YMDK Wings. + +* Keyboard Maintainer: [alittlepeace](https://github.com/alittlepeace) +* Hardware Supported: YMDK Wings Hotswap +* Hardware Availability: [YMDK](https://ymdkey.com/products/gbymdk-wings-aluminum-cnc-top-bottom-qmk-rgb-hotswap-v1-pcb-diy-kit) + +Make example for this keyboard (after setting up your build environment): + + make ymdk/wingshs:default + +Flashing example for this keyboard: + + make ymdk/wingshs:default:flash + +To reset the board into bootloader mode, hold the key at the top left of the keyboard while connecting the USB cable (also erases persistent settings). + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/ymdk/wingshs/rules.mk b/keyboards/ymdk/wingshs/rules.mk new file mode 100644 index 000000000000..196191c38f28 --- /dev/null +++ b/keyboards/ymdk/wingshs/rules.mk @@ -0,0 +1,19 @@ +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# 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 = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/ymdk/wingshs/wingshs.c b/keyboards/ymdk/wingshs/wingshs.c new file mode 100644 index 000000000000..f82fe221974b --- /dev/null +++ b/keyboards/ymdk/wingshs/wingshs.c @@ -0,0 +1,16 @@ +/* Copyright 2021 alittlepeace + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "wingshs.h" diff --git a/keyboards/ymdk/wingshs/wingshs.h b/keyboards/ymdk/wingshs/wingshs.h new file mode 100644 index 000000000000..3321f48fc1b1 --- /dev/null +++ b/keyboards/ymdk/wingshs/wingshs.h @@ -0,0 +1,34 @@ +/* Copyright 2021 alittlepeace + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "quantum.h" +#pragma once + + +#define XXX KC_NO +#define LAYOUT_all( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k4E, \ + 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, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, \ + k40, k42, k44, k45, k46, k49, 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, k1E}, \ + { 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, XXX, k3D, XXX}, \ + { k40, XXX, k42, XXX, k44, k45, k46, XXX, XXX, k49, XXX, k4B, k4C, k4D, k4E} \ +} diff --git a/keyboards/ymdk/ym68/info.json b/keyboards/ymdk/ym68/info.json index ee218f773806..80f6df69736f 100644 --- a/keyboards/ymdk/ym68/info.json +++ b/keyboards/ymdk/ym68/info.json @@ -2,8 +2,6 @@ "keyboard_name": "YM68", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/ymdk/ym68/rules.mk b/keyboards/ymdk/ym68/rules.mk index a48a691a9140..36b911a40093 100644 --- a/keyboards/ymdk/ym68/rules.mk +++ b/keyboards/ymdk/ym68/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/ymdk/ymd09/info.json b/keyboards/ymdk/ymd09/info.json index cb11ac97fb36..7a1ec0f301ac 100644 --- a/keyboards/ymdk/ymd09/info.json +++ b/keyboards/ymdk/ymd09/info.json @@ -2,11 +2,8 @@ "keyboard_name": "YMD09", "url": "https://www.aliexpress.com/item/4000510880374.html", "maintainer": "kaeltis", - "width": 3, - "height": 3, "layouts": { "LAYOUT": { - "key_count": 9, "layout": [ {"label": "7", "x": 0, "y": 0}, {"label": "8", "x": 1, "y": 0}, diff --git a/keyboards/ymdk/ymd09/rules.mk b/keyboards/ymdk/ymd09/rules.mk index 88f2897b79d7..5ba7388b2763 100644 --- a/keyboards/ymdk/ymd09/rules.mk +++ b/keyboards/ymdk/ymd09/rules.mk @@ -2,30 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LTO_ENABLE = yes # reduce firmware size diff --git a/keyboards/ymdk/ymd40/v2/config.h b/keyboards/ymdk/ymd40/v2/config.h index 926333f4e66d..0ad5a8471829 100644 --- a/keyboards/ymdk/ymd40/v2/config.h +++ b/keyboards/ymdk/ymd40/v2/config.h @@ -44,7 +44,7 @@ #define DIODE_DIRECTION COL2ROW -#define BACKLIGHT_PIN B6 +#define BACKLIGHT_PIN B7 #define BACKLIGHT_BREATHING #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/ymdk/ymd40/v2/info.json b/keyboards/ymdk/ymd40/v2/info.json index 7bb677e209cb..ef6b33a79914 100644 --- a/keyboards/ymdk/ymd40/v2/info.json +++ b/keyboards/ymdk/ymd40/v2/info.json @@ -2,8 +2,6 @@ "keyboard_name": "ymd40v2", "url": "", "maintainer": "qmk", - "width": 12, - "height": 4, "layouts": { "LAYOUT_ortho_4x12": { "layout": [ @@ -59,6 +57,222 @@ {"label":"K3A (B1,B4)", "x":10, "y":3}, {"label":"K3B (B1,D7)", "x":11, "y":3} ] + }, + "LAYOUT_ortho_4x12_2x2u": { + "layout": [ + {"label":"K00 (D0,F1)", "x":0, "y":0}, + {"label":"K01 (D0,F0)", "x":1, "y":0}, + {"label":"K02 (D0,B0)", "x":2, "y":0}, + {"label":"K03 (D0,C7)", "x":3, "y":0}, + {"label":"K04 (D0,F4)", "x":4, "y":0}, + {"label":"K05 (D0,F5)", "x":5, "y":0}, + {"label":"K06 (D0,F6)", "x":6, "y":0}, + {"label":"K07 (D0,F7)", "x":7, "y":0}, + {"label":"K08 (D0,D4)", "x":8, "y":0}, + {"label":"K09 (D0,D6)", "x":9, "y":0}, + {"label":"K0A (D0,B4)", "x":10, "y":0}, + {"label":"K0B (D0,D7)", "x":11, "y":0}, + + {"label":"K10 (B3,F1)", "x":0, "y":1}, + {"label":"K11 (B3,F0)", "x":1, "y":1}, + {"label":"K12 (B3,B0)", "x":2, "y":1}, + {"label":"K13 (B3,C7)", "x":3, "y":1}, + {"label":"K14 (B3,F4)", "x":4, "y":1}, + {"label":"K15 (B3,F5)", "x":5, "y":1}, + {"label":"K16 (B3,F6)", "x":6, "y":1}, + {"label":"K17 (B3,F7)", "x":7, "y":1}, + {"label":"K18 (B3,D4)", "x":8, "y":1}, + {"label":"K19 (B3,D6)", "x":9, "y":1}, + {"label":"K1A (B3,B4)", "x":10, "y":1}, + {"label":"K1B (B3,D7)", "x":11, "y":1}, + + {"label":"K20 (B2,F1)", "x":0, "y":2}, + {"label":"K21 (B2,F0)", "x":1, "y":2}, + {"label":"K22 (B2,B0)", "x":2, "y":2}, + {"label":"K23 (B2,C7)", "x":3, "y":2}, + {"label":"K24 (B2,F4)", "x":4, "y":2}, + {"label":"K25 (B2,F5)", "x":5, "y":2}, + {"label":"K26 (B2,F6)", "x":6, "y":2}, + {"label":"K27 (B2,F7)", "x":7, "y":2}, + {"label":"K28 (B2,D4)", "x":8, "y":2}, + {"label":"K29 (B2,D6)", "x":9, "y":2}, + {"label":"K2A (B2,B4)", "x":10, "y":2}, + {"label":"K2B (B2,D7)", "x":11, "y":2}, + + {"label":"K30 (B1,F1)", "x":0, "y":3}, + {"label":"K31 (B1,F0)", "x":1, "y":3}, + {"label":"K32 (B1,B0)", "x":2, "y":3}, + {"label":"K33 (B1,C7)", "x":3, "y":3}, + {"label":"K34 (B1,F4)", "x":4, "y":3, "w":2}, + {"label":"K37 (B1,F7)", "x":6, "y":3, "w":2}, + {"label":"K38 (B1,D4)", "x":8, "y":3}, + {"label":"K39 (B1,D6)", "x":9, "y":3}, + {"label":"K3A (B1,B4)", "x":10, "y":3}, + {"label":"K3B (B1,D7)", "x":11, "y":3} + ] + }, + "LAYOUT_ortho_4x12_1x2uR": { + "layout": [ + {"label":"K00 (D0,F1)", "x":0, "y":0}, + {"label":"K01 (D0,F0)", "x":1, "y":0}, + {"label":"K02 (D0,B0)", "x":2, "y":0}, + {"label":"K03 (D0,C7)", "x":3, "y":0}, + {"label":"K04 (D0,F4)", "x":4, "y":0}, + {"label":"K05 (D0,F5)", "x":5, "y":0}, + {"label":"K06 (D0,F6)", "x":6, "y":0}, + {"label":"K07 (D0,F7)", "x":7, "y":0}, + {"label":"K08 (D0,D4)", "x":8, "y":0}, + {"label":"K09 (D0,D6)", "x":9, "y":0}, + {"label":"K0A (D0,B4)", "x":10, "y":0}, + {"label":"K0B (D0,D7)", "x":11, "y":0}, + + {"label":"K10 (B3,F1)", "x":0, "y":1}, + {"label":"K11 (B3,F0)", "x":1, "y":1}, + {"label":"K12 (B3,B0)", "x":2, "y":1}, + {"label":"K13 (B3,C7)", "x":3, "y":1}, + {"label":"K14 (B3,F4)", "x":4, "y":1}, + {"label":"K15 (B3,F5)", "x":5, "y":1}, + {"label":"K16 (B3,F6)", "x":6, "y":1}, + {"label":"K17 (B3,F7)", "x":7, "y":1}, + {"label":"K18 (B3,D4)", "x":8, "y":1}, + {"label":"K19 (B3,D6)", "x":9, "y":1}, + {"label":"K1A (B3,B4)", "x":10, "y":1}, + {"label":"K1B (B3,D7)", "x":11, "y":1}, + + {"label":"K20 (B2,F1)", "x":0, "y":2}, + {"label":"K21 (B2,F0)", "x":1, "y":2}, + {"label":"K22 (B2,B0)", "x":2, "y":2}, + {"label":"K23 (B2,C7)", "x":3, "y":2}, + {"label":"K24 (B2,F4)", "x":4, "y":2}, + {"label":"K25 (B2,F5)", "x":5, "y":2}, + {"label":"K26 (B2,F6)", "x":6, "y":2}, + {"label":"K27 (B2,F7)", "x":7, "y":2}, + {"label":"K28 (B2,D4)", "x":8, "y":2}, + {"label":"K29 (B2,D6)", "x":9, "y":2}, + {"label":"K2A (B2,B4)", "x":10, "y":2}, + {"label":"K2B (B2,D7)", "x":11, "y":2}, + + {"label":"K30 (B1,F1)", "x":0, "y":3}, + {"label":"K31 (B1,F0)", "x":1, "y":3}, + {"label":"K32 (B1,B0)", "x":2, "y":3}, + {"label":"K33 (B1,C7)", "x":3, "y":3}, + {"label":"K34 (B1,F4)", "x":4, "y":3}, + {"label":"K35 (B1,F5)", "x":5, "y":3}, + {"label":"K37 (B1,F7)", "x":6, "y":3, "w":2}, + {"label":"K38 (B1,D4)", "x":8, "y":3}, + {"label":"K39 (B1,D6)", "x":9, "y":3}, + {"label":"K3A (B1,B4)", "x":10, "y":3}, + {"label":"K3B (B1,D7)", "x":11, "y":3} + ] + }, + "LAYOUT_ortho_4x12_1x2uL": { + "layout": [ + {"label":"K00 (D0,F1)", "x":0, "y":0}, + {"label":"K01 (D0,F0)", "x":1, "y":0}, + {"label":"K02 (D0,B0)", "x":2, "y":0}, + {"label":"K03 (D0,C7)", "x":3, "y":0}, + {"label":"K04 (D0,F4)", "x":4, "y":0}, + {"label":"K05 (D0,F5)", "x":5, "y":0}, + {"label":"K06 (D0,F6)", "x":6, "y":0}, + {"label":"K07 (D0,F7)", "x":7, "y":0}, + {"label":"K08 (D0,D4)", "x":8, "y":0}, + {"label":"K09 (D0,D6)", "x":9, "y":0}, + {"label":"K0A (D0,B4)", "x":10, "y":0}, + {"label":"K0B (D0,D7)", "x":11, "y":0}, + + {"label":"K10 (B3,F1)", "x":0, "y":1}, + {"label":"K11 (B3,F0)", "x":1, "y":1}, + {"label":"K12 (B3,B0)", "x":2, "y":1}, + {"label":"K13 (B3,C7)", "x":3, "y":1}, + {"label":"K14 (B3,F4)", "x":4, "y":1}, + {"label":"K15 (B3,F5)", "x":5, "y":1}, + {"label":"K16 (B3,F6)", "x":6, "y":1}, + {"label":"K17 (B3,F7)", "x":7, "y":1}, + {"label":"K18 (B3,D4)", "x":8, "y":1}, + {"label":"K19 (B3,D6)", "x":9, "y":1}, + {"label":"K1A (B3,B4)", "x":10, "y":1}, + {"label":"K1B (B3,D7)", "x":11, "y":1}, + + {"label":"K20 (B2,F1)", "x":0, "y":2}, + {"label":"K21 (B2,F0)", "x":1, "y":2}, + {"label":"K22 (B2,B0)", "x":2, "y":2}, + {"label":"K23 (B2,C7)", "x":3, "y":2}, + {"label":"K24 (B2,F4)", "x":4, "y":2}, + {"label":"K25 (B2,F5)", "x":5, "y":2}, + {"label":"K26 (B2,F6)", "x":6, "y":2}, + {"label":"K27 (B2,F7)", "x":7, "y":2}, + {"label":"K28 (B2,D4)", "x":8, "y":2}, + {"label":"K29 (B2,D6)", "x":9, "y":2}, + {"label":"K2A (B2,B4)", "x":10, "y":2}, + {"label":"K2B (B2,D7)", "x":11, "y":2}, + + {"label":"K30 (B1,F1)", "x":0, "y":3}, + {"label":"K31 (B1,F0)", "x":1, "y":3}, + {"label":"K32 (B1,B0)", "x":2, "y":3}, + {"label":"K33 (B1,C7)", "x":3, "y":3}, + {"label":"K34 (B1,F4)", "x":4, "y":3, "w":2}, + {"label":"K36 (B1,F6)", "x":6, "y":3}, + {"label":"K37 (B1,F7)", "x":7, "y":3}, + {"label":"K38 (B1,D4)", "x":8, "y":3}, + {"label":"K39 (B1,D6)", "x":9, "y":3}, + {"label":"K3A (B1,B4)", "x":10, "y":3}, + {"label":"K3B (B1,D7)", "x":11, "y":3} + ] + }, + "LAYOUT_ortho_4x12_1x2uC": { + "layout": [ + {"label":"K00 (D0,F1)", "x":0, "y":0}, + {"label":"K01 (D0,F0)", "x":1, "y":0}, + {"label":"K02 (D0,B0)", "x":2, "y":0}, + {"label":"K03 (D0,C7)", "x":3, "y":0}, + {"label":"K04 (D0,F4)", "x":4, "y":0}, + {"label":"K05 (D0,F5)", "x":5, "y":0}, + {"label":"K06 (D0,F6)", "x":6, "y":0}, + {"label":"K07 (D0,F7)", "x":7, "y":0}, + {"label":"K08 (D0,D4)", "x":8, "y":0}, + {"label":"K09 (D0,D6)", "x":9, "y":0}, + {"label":"K0A (D0,B4)", "x":10, "y":0}, + {"label":"K0B (D0,D7)", "x":11, "y":0}, + + {"label":"K10 (B3,F1)", "x":0, "y":1}, + {"label":"K11 (B3,F0)", "x":1, "y":1}, + {"label":"K12 (B3,B0)", "x":2, "y":1}, + {"label":"K13 (B3,C7)", "x":3, "y":1}, + {"label":"K14 (B3,F4)", "x":4, "y":1}, + {"label":"K15 (B3,F5)", "x":5, "y":1}, + {"label":"K16 (B3,F6)", "x":6, "y":1}, + {"label":"K17 (B3,F7)", "x":7, "y":1}, + {"label":"K18 (B3,D4)", "x":8, "y":1}, + {"label":"K19 (B3,D6)", "x":9, "y":1}, + {"label":"K1A (B3,B4)", "x":10, "y":1}, + {"label":"K1B (B3,D7)", "x":11, "y":1}, + + {"label":"K20 (B2,F1)", "x":0, "y":2}, + {"label":"K21 (B2,F0)", "x":1, "y":2}, + {"label":"K22 (B2,B0)", "x":2, "y":2}, + {"label":"K23 (B2,C7)", "x":3, "y":2}, + {"label":"K24 (B2,F4)", "x":4, "y":2}, + {"label":"K25 (B2,F5)", "x":5, "y":2}, + {"label":"K26 (B2,F6)", "x":6, "y":2}, + {"label":"K27 (B2,F7)", "x":7, "y":2}, + {"label":"K28 (B2,D4)", "x":8, "y":2}, + {"label":"K29 (B2,D6)", "x":9, "y":2}, + {"label":"K2A (B2,B4)", "x":10, "y":2}, + {"label":"K2B (B2,D7)", "x":11, "y":2}, + + {"label":"K30 (B1,F1)", "x":0, "y":3}, + {"label":"K31 (B1,F0)", "x":1, "y":3}, + {"label":"K32 (B1,B0)", "x":2, "y":3}, + {"label":"K33 (B1,C7)", "x":3, "y":3}, + {"label":"K34 (B1,F4)", "x":4, "y":3}, + {"label":"K35 (B1,F5)", "x":5, "y":3, "w":2}, + {"label":"K37 (B1,F7)", "x":7, "y":3}, + {"label":"K38 (B1,D4)", "x":8, "y":3}, + {"label":"K39 (B1,D6)", "x":9, "y":3}, + {"label":"K3A (B1,B4)", "x":10, "y":3}, + {"label":"K3B (B1,D7)", "x":11, "y":3} + ] } + } } diff --git a/keyboards/ymdk/ymd40/v2/keymaps/via/keymap.c b/keyboards/ymdk/ymd40/v2/keymaps/via/keymap.c new file mode 100644 index 000000000000..70e96c2dcf16 --- /dev/null +++ b/keyboards/ymdk/ymd40/v2/keymaps/via/keymap.c @@ -0,0 +1,44 @@ +/* Copyright 2021 James Young (@noroadsleft) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ortho_4x12( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_CAPS, KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, MO(2), KC_UP, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_ortho_4x12( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______, + _______, _______, _______, _______, _______, _______, _______, MO(3), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), + [2] = LAYOUT_ortho_4x12( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, + _______, _______, _______, _______, MO(3), _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), + [3] = LAYOUT_ortho_4x12( + RESET, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, DEBUG, + _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, + _______, BL_TOGG, BL_DEC, BL_INC, BL_BRTG, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/ymdk/ymd40/v2/keymaps/via/readme.md b/keyboards/ymdk/ymd40/v2/keymaps/via/readme.md new file mode 100644 index 000000000000..952866354721 --- /dev/null +++ b/keyboards/ymdk/ymd40/v2/keymaps/via/readme.md @@ -0,0 +1 @@ +# The default keymap for YMD40 v2 diff --git a/keyboards/ymdk/ymd40/v2/keymaps/via/rules.mk b/keyboards/ymdk/ymd40/v2/keymaps/via/rules.mk new file mode 100644 index 000000000000..43061db1dd46 --- /dev/null +++ b/keyboards/ymdk/ymd40/v2/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/ymdk/ymd40/v2/rules.mk b/keyboards/ymdk/ymd40/v2/rules.mk index 7c7c443c9d87..b2398fc12007 100644 --- a/keyboards/ymdk/ymd40/v2/rules.mk +++ b/keyboards/ymdk/ymd40/v2/rules.mk @@ -7,18 +7,15 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output KEY_LOCK_ENABLE = no # Enable KC_LOCK support diff --git a/keyboards/ymdk/ymd40/v2/v2.h b/keyboards/ymdk/ymd40/v2/v2.h index 6d524e07356f..d28f6d591aa4 100644 --- a/keyboards/ymdk/ymd40/v2/v2.h +++ b/keyboards/ymdk/ymd40/v2/v2.h @@ -29,3 +29,51 @@ { 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_ortho_4x12_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, K34, 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, KC_NO, KC_NO, K37, K38, K39, K3A, K3B }, \ +} + +#define LAYOUT_ortho_4x12_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, 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, KC_NO, K37, K38, K39, K3A, K3B }, \ +} + +#define LAYOUT_ortho_4x12_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, K34, 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, KC_NO, K36, K37, K38, K39, K3A, K3B }, \ +} + +#define LAYOUT_ortho_4x12_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, KC_NO, K37, K38, K39, K3A, K3B }, \ +} diff --git a/keyboards/ymdk/ymd67/info.json b/keyboards/ymdk/ymd67/info.json index e027b173c493..9d04ee12725e 100644 --- a/keyboards/ymdk/ymd67/info.json +++ b/keyboards/ymdk/ymd67/info.json @@ -2,11 +2,8 @@ "keyboard_name": "ymd67", "url": "https://www.aliexpress.com/item/4000311811121.html", "maintainer": "SwiftLawnGnome", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { - "key_count": 67, "layout": [ {"label": "Esc", "x": 0, "y": 0}, {"label": "!", "x": 1, "y": 0}, diff --git a/keyboards/ymdk/ymd67/rules.mk b/keyboards/ymdk/ymd67/rules.mk index 2ffe8fcabb5a..12689bce9d72 100644 --- a/keyboards/ymdk/ymd67/rules.mk +++ b/keyboards/ymdk/ymd67/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 = yes # 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 = yes # Enable keyboard backlight functionality AUDIO_ENABLE = no diff --git a/keyboards/ymdk_np21/info.json b/keyboards/ymdk_np21/info.json index 845c0bb81ee6..6a611d7a388b 100644 --- a/keyboards/ymdk_np21/info.json +++ b/keyboards/ymdk_np21/info.json @@ -1,8 +1,6 @@ { "keyboard_name": "YMDK NP21", "maintainer": "qmk", - "width": 4, - "height": 6.25, "layouts": { "LAYOUT_ortho_6x4": { "layout": [ diff --git a/keyboards/ymdk_np21/keymaps/via/keymap.c b/keyboards/ymdk_np21/keymaps/via/keymap.c new file mode 100644 index 000000000000..b361414023e0 --- /dev/null +++ b/keyboards/ymdk_np21/keymaps/via/keymap.c @@ -0,0 +1,52 @@ +/* Copyright 2021 Zereef + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ortho_6x4( + KC_ESC, KC_TAB, KC_BSPC, MO(1), + KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_P1, KC_P2, KC_P3, KC_PENT, + KC_P0, KC_DOT, KC_PDOT, KC_PENT + ), + [1] = LAYOUT_ortho_6x4( + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, BL_ON, _______, BL_INC, + _______, BL_TOGG, _______, BL_INC, + _______, BL_OFF, _______, BL_DEC, + BL_BRTG, _______, _______, BL_DEC + ), + [2] = LAYOUT_ortho_6x4( + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______ + ), + [3] = LAYOUT_ortho_6x4( + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______ + ) +}; diff --git a/keyboards/ymdk_np21/keymaps/via/rules.mk b/keyboards/ymdk_np21/keymaps/via/rules.mk new file mode 100644 index 000000000000..36b7ba9cbc98 --- /dev/null +++ b/keyboards/ymdk_np21/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/ymdk_np21/rules.mk b/keyboards/ymdk_np21/rules.mk index ed7d082f0dce..7316ceff6dac 100644 --- a/keyboards/ymdk_np21/rules.mk +++ b/keyboards/ymdk_np21/rules.mk @@ -2,18 +2,16 @@ MCU = atmega32a # Bootloader selection -BOOTLOADER = bootloadHID +BOOTLOADER = bootloadhid # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow WS2812_DRIVER = i2c diff --git a/keyboards/yncognito/batpad/batpad.h b/keyboards/yncognito/batpad/batpad.h index 1cc79edf814c..e3391881bc63 100644 --- a/keyboards/yncognito/batpad/batpad.h +++ b/keyboards/yncognito/batpad/batpad.h @@ -24,6 +24,3 @@ { K00, K01, K02, K03 }, \ { K10, K11, K12, K13 }, \ } - -// generated by KBFirmware JSON to QMK Parser -// https://noroadsleft.github.io/kbf_qmk_converter/ diff --git a/keyboards/yncognito/batpad/config.h b/keyboards/yncognito/batpad/config.h index 02c84a514adf..50fec3d69a2f 100644 --- a/keyboards/yncognito/batpad/config.h +++ b/keyboards/yncognito/batpad/config.h @@ -47,13 +47,60 @@ along with this program. If not, see . #define RGB_DI_PIN B5 #define DRIVER_LED_TOTAL 8 -#define RGB_MATRIX_KEYPRESSES -#define RGB_MATRIX_KEYRELEASES +#define RGB_MATRIX_KEYPRESSES +#define RGB_MATRIX_KEYRELEASES #define RGB_MATRIX_FRAMEBUFFER_EFFECTS -#define RGB_DISABLE_AFTER_TIMEOUT 0 -#define RGB_DISABLE_WHEN_USB_SUSPENDED false -#define RGB_MATRIX_LED_FLUSH_LIMIT 16 -#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 255 +#define RGB_DISABLE_AFTER_TIMEOUT 0 +// #define RGB_DISABLE_WHEN_USB_SUSPENDED +#define RGB_MATRIX_LED_FLUSH_LIMIT 16 +#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 255 #define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL - +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH diff --git a/keyboards/yncognito/batpad/info.json b/keyboards/yncognito/batpad/info.json index 2c0fd0d2ebf0..393fff594758 100644 --- a/keyboards/yncognito/batpad/info.json +++ b/keyboards/yncognito/batpad/info.json @@ -2,11 +2,8 @@ "keyboard_name": "batpad", "url": "", "maintainer": "qmk", - "width": 4, - "height": 2, "layouts": { "LAYOUT_ortho_2x4": { - "key_count": 8, "layout": [ {"label":"K00 (F4,F1)", "x":0, "y":0}, {"label":"K01 (F4,F0)", "x":1, "y":0}, @@ -19,5 +16,4 @@ ] } } - ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/" } diff --git a/keyboards/yncognito/batpad/keymaps/via/rules.mk b/keyboards/yncognito/batpad/keymaps/via/rules.mk index 1e5b99807cb7..36b7ba9cbc98 100644 --- a/keyboards/yncognito/batpad/keymaps/via/rules.mk +++ b/keyboards/yncognito/batpad/keymaps/via/rules.mk @@ -1 +1,2 @@ VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/yncognito/batpad/rules.mk b/keyboards/yncognito/batpad/rules.mk index 4abf1b6fcfb8..d45ec1dfeeb4 100644 --- a/keyboards/yncognito/batpad/rules.mk +++ b/keyboards/yncognito/batpad/rules.mk @@ -2,34 +2,19 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGB_MATRIX_ENABLE = yes RGB_MATRIX_DRIVER = WS2812 -MIDI_ENABLE = no # MIDI support -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 - -# generated by KBFirmware JSON to QMK Parser -# https://noroadsleft.github.io/kbf_qmk_converter/ +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/yoichiro/lunakey_macro/config.h b/keyboards/yoichiro/lunakey_macro/config.h new file mode 100644 index 000000000000..d68f69f5150c --- /dev/null +++ b/keyboards/yoichiro/lunakey_macro/config.h @@ -0,0 +1,158 @@ +/* +Copyright 2020 Yoichiro Tanaka + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x5954 // "YT" - Yoichiro Tanaka +#define PRODUCT_ID 0x0002 +#define DEVICE_VER 0x0001 +#define MANUFACTURER yoichiro +#define PRODUCT Lunakey Macro + +/* key matrix size */ +#define MATRIX_ROWS 3 +#define MATRIX_COLS 4 + +/* + * 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 { E6, B4, B5 } +#define MATRIX_COL_PINS { B6, B2, B3, B1 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Audio support */ +#define AUDIO_PIN C6 + +#ifdef AUDIO_ENABLE + #define STARTUP_SONG SONG(E__NOTE(_C7), E__NOTE(_C6)) +#endif + +/* Mouse Keys Combined mode */ +//#define MK_COMBINED + +/* Layer Count */ +#define DYNAMIC_KEYMAP_LAYER_COUNT 3 + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +//#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +#define RGB_DI_PIN D3 +#ifdef RGB_DI_PIN + #define RGBLED_NUM 5 + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 + #define RGBLIGHT_VAL_STEP 8 + #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ + #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +// #define RGBLIGHT_LAYERS +#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 +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +//#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +//#define LOCKING_RESYNC_ENABLE + +/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. + * This is useful for the Windows task manager shortcut (ctrl+shift+esc). + */ +//#define GRAVE_ESC_CTRL_OVERRIDE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * 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 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/yoichiro/lunakey_macro/info.json b/keyboards/yoichiro/lunakey_macro/info.json new file mode 100644 index 000000000000..27996bdbbd7a --- /dev/null +++ b/keyboards/yoichiro/lunakey_macro/info.json @@ -0,0 +1,24 @@ +{ + "keyboard_name": "Lunakey Macro", + "url": "", + "maintainer": "Yoichiro Tanaka", + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"0,0", "x":0.5, "y":0.5}, + {"label":"0,1", "x":1.5, "y":0.175}, + {"label":"0,2", "x":2.5, "y":0}, + {"label":"0,3", "x":3.5, "y":0.5}, + + {"label":"1,0", "x":0.5, "y":1.5}, + {"label":"1,1", "x":1.5, "y":1.175}, + {"label":"1,2", "x":2.5, "y":1}, + {"label":"1,3", "x":3.5, "y":1.5}, + + {"label":"2,0", "x":0, "y":3}, + {"label":"2,1", "x":1, "y":2.75}, + {"label":"2,2", "x":2, "y":3} + ] + } + } +} diff --git a/keyboards/yoichiro/lunakey_macro/keymaps/default/keymap.c b/keyboards/yoichiro/lunakey_macro/keymaps/default/keymap.c new file mode 100644 index 000000000000..1b2055b74939 --- /dev/null +++ b/keyboards/yoichiro/lunakey_macro/keymaps/default/keymap.c @@ -0,0 +1,41 @@ +/* Copyright 2020 Yoichiro Tanaka + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _NUMBERS, + _CURSOR, + _ADJUST +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_NUMBERS] = LAYOUT( + KC_1, KC_2, KC_3, KC_4, + KC_5, KC_6, KC_7, KC_8, + KC_9, KC_0, DF(_CURSOR) + ), + [_CURSOR] = LAYOUT( + KC_PGUP, KC_HOME, KC_UP, KC_END, + KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, + KC_ENT, KC_BSPC, DF(_ADJUST) + ), + [_ADJUST] = LAYOUT( + KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, + RESET, KC_NO, DF(_NUMBERS) + ) +}; diff --git a/keyboards/yoichiro/lunakey_macro/keymaps/default/readme.md b/keyboards/yoichiro/lunakey_macro/keymaps/default/readme.md new file mode 100644 index 000000000000..b079aa9fa66d --- /dev/null +++ b/keyboards/yoichiro/lunakey_macro/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for Lunakey Macro diff --git a/keyboards/yoichiro/lunakey_macro/keymaps/via/keymap.c b/keyboards/yoichiro/lunakey_macro/keymaps/via/keymap.c new file mode 100644 index 000000000000..a3a203df6d48 --- /dev/null +++ b/keyboards/yoichiro/lunakey_macro/keymaps/via/keymap.c @@ -0,0 +1,56 @@ +/* Copyright 2020 Yoichiro Tanaka + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _NUMBERS, + _CURSOR, + _ADJUST +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_NUMBERS] = LAYOUT( + KC_1, KC_2, KC_3, KC_4, + KC_5, KC_6, KC_7, KC_8, + KC_9, KC_0, DF(_CURSOR) + ), + [_CURSOR] = LAYOUT( + KC_PGUP, KC_HOME, KC_UP, KC_END, + KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, + KC_ENT, KC_BSPC, DF(_ADJUST) + ), + [_ADJUST] = LAYOUT( + RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, + AU_TOG, CK_TOGG, MU_TOG, MU_MOD, + RESET, KC_NO, DF(_NUMBERS) + ) +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + float next_song[][2] = SONG(E__NOTE(_A6)); + float back_song[][2] = SONG(H__NOTE(_D2)); + switch (keycode) { + case DF(_NUMBERS): + case DF(_CURSOR): + PLAY_SONG(next_song); + break; + case DF(_ADJUST): + PLAY_SONG(back_song); + break; + } + return true; +} diff --git a/keyboards/yoichiro/lunakey_macro/keymaps/via/readme.md b/keyboards/yoichiro/lunakey_macro/keymaps/via/readme.md new file mode 100644 index 000000000000..4e74b05bcd82 --- /dev/null +++ b/keyboards/yoichiro/lunakey_macro/keymaps/via/readme.md @@ -0,0 +1 @@ +# The keymap supporing VIA for Lunakey Macro diff --git a/keyboards/yoichiro/lunakey_macro/keymaps/via/rules.mk b/keyboards/yoichiro/lunakey_macro/keymaps/via/rules.mk new file mode 100644 index 000000000000..19658b7e477d --- /dev/null +++ b/keyboards/yoichiro/lunakey_macro/keymaps/via/rules.mk @@ -0,0 +1,4 @@ +AUDIO_ENABLE = yes +RGBLIGHT_ENABLE = yes +LTO_ENABLE = yes +VIA_ENABLE = yes diff --git a/keyboards/yoichiro/lunakey_macro/lunakey_macro.c b/keyboards/yoichiro/lunakey_macro/lunakey_macro.c new file mode 100644 index 000000000000..5ef38f70c72d --- /dev/null +++ b/keyboards/yoichiro/lunakey_macro/lunakey_macro.c @@ -0,0 +1,17 @@ +/* Copyright 2020 Yoichiro Tanaka + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "lunakey_macro.h" diff --git a/keyboards/yoichiro/lunakey_macro/lunakey_macro.h b/keyboards/yoichiro/lunakey_macro/lunakey_macro.h new file mode 100644 index 000000000000..487b7fe20866 --- /dev/null +++ b/keyboards/yoichiro/lunakey_macro/lunakey_macro.h @@ -0,0 +1,37 @@ +/* Copyright 2020 Yoichiro Tanaka + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + k00, k01, k02, k03, \ + k10, k11, k12, k13, \ + k20, k21, k22 \ +) { \ + { k00, k01, k02, k03 }, \ + { k10, k11, k12, k13 }, \ + { k20, k21, k22, KC_NO } \ +} diff --git a/keyboards/yoichiro/lunakey_macro/readme.md b/keyboards/yoichiro/lunakey_macro/readme.md new file mode 100644 index 000000000000..440845d07db6 --- /dev/null +++ b/keyboards/yoichiro/lunakey_macro/readme.md @@ -0,0 +1,21 @@ +# Lunakey Macro + +![Lunakey Macro](https://i.imgur.com/BirFxgYh.jpeg) + +This is a macro keyboard which has 11 keys. + +* Keyboard Maintainer: [Yoichiro Tanaka](https://github.com/yoichiro) +* Hardware Supported: Lunakey Macro PCB, Pro Micro MCU. +* Hardware Availability: Published yet. + +Make example for this keyboard (after setting up your build environment): + + make lunakey_macro:default + +Flashing example for this keyboard: + + make lunakey_macro:default:flash + +To enter the bootloader mode, you push the black tact switch next to the ProMicro. + +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/yoichiro/lunakey_macro/rules.mk b/keyboards/yoichiro/lunakey_macro/rules.mk new file mode 100644 index 000000000000..410c618af1e9 --- /dev/null +++ b/keyboards/yoichiro/lunakey_macro/rules.mk @@ -0,0 +1,19 @@ +# 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 = no # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/yoichiro/lunakey_mini/info.json b/keyboards/yoichiro/lunakey_mini/info.json index b31ada60602e..a41c557ab48b 100644 --- a/keyboards/yoichiro/lunakey_mini/info.json +++ b/keyboards/yoichiro/lunakey_mini/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Lunakey Mini", "url": "", "maintainer": "qmk", - "width": 14.75, - "height": 5, "layouts": { "LAYOUT_split_3x6_4": { "layout": [ diff --git a/keyboards/yoichiro/lunakey_mini/keymaps/default/rules.mk b/keyboards/yoichiro/lunakey_mini/keymaps/default/rules.mk index b4edb3a26936..d43fb74b3e7c 100644 --- a/keyboards/yoichiro/lunakey_mini/keymaps/default/rules.mk +++ b/keyboards/yoichiro/lunakey_mini/keymaps/default/rules.mk @@ -1,3 +1,3 @@ RGBLIGHT_ENABLE = no # Enable keyboard RGB Underglow AUDIO_ENABLE = no # Enable Audio output -OLED_DRIVER_ENABLE = no # Enable OLED Display +OLED_ENABLE = no # Enable OLED Display diff --git a/keyboards/yoichiro/lunakey_mini/keymaps/via/rules.mk b/keyboards/yoichiro/lunakey_mini/keymaps/via/rules.mk index 89b0f22d0d1b..8b55a3b731fb 100644 --- a/keyboards/yoichiro/lunakey_mini/keymaps/via/rules.mk +++ b/keyboards/yoichiro/lunakey_mini/keymaps/via/rules.mk @@ -1,5 +1,5 @@ RGBLIGHT_ENABLE = yes # Enable keyboard RGB Underglow AUDIO_ENABLE = no # Enable Audio output -OLED_DRIVER_ENABLE = no # Enable OLED Display +OLED_ENABLE = no # Enable OLED Display VIA_ENABLE = yes # Enable VIA support LTO_ENABLE = yes # CFLAGS=flto diff --git a/keyboards/yoichiro/lunakey_mini/rules.mk b/keyboards/yoichiro/lunakey_mini/rules.mk index 8096b2238d13..1aa1647a8289 100644 --- a/keyboards/yoichiro/lunakey_mini/rules.mk +++ b/keyboards/yoichiro/lunakey_mini/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 SPLIT_KEYBOARD = yes # Enable Split keyboard diff --git a/keyboards/yosino58/info.json b/keyboards/yosino58/info.json index c591a41dece0..5762f5ab89b6 100644 --- a/keyboards/yosino58/info.json +++ b/keyboards/yosino58/info.json @@ -2,11 +2,8 @@ "keyboard_name": "yosino58 rev. 1", "url": "https://github.com/sakurachari/yosino58", "maintainer": "sakuranbo0046", - "width": 16.75, - "height": 6.25, "layouts": { "LAYOUT": { - "key_count": 58, "layout": [ {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":0.25}, {"x":3, "y":0}, {"x":4, "y":0.25}, {"x":5, "y":0.5}, {"x":10.75, "y":0.5}, {"x":11.75, "y":0.25}, {"x":12.75, "y":0}, {"x":13.75, "y":0.25}, {"x":14.75, "y":1}, {"x":15.75, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":1.25}, {"x":3, "y":1}, {"x":4, "y":1.25}, {"x":5, "y":1.5}, {"x":10.75, "y":1.5}, {"x":11.75, "y":1.25}, {"x":12.75, "y":1}, {"x":13.75, "y":1.25}, {"x":14.75, "y":2}, {"x":15.75, "y":2}, @@ -17,4 +14,3 @@ } } } - diff --git a/keyboards/yosino58/keymaps/sakura/rules.mk b/keyboards/yosino58/keymaps/sakura/rules.mk index 296e53287ae2..0b2ca1ba5955 100644 --- a/keyboards/yosino58/keymaps/sakura/rules.mk +++ b/keyboards/yosino58/keymaps/sakura/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/keyboards/yosino58/rev1/rev1.c b/keyboards/yosino58/rev1/rev1.c index ef1f13e41339..45534122b3c4 100644 --- a/keyboards/yosino58/rev1/rev1.c +++ b/keyboards/yosino58/rev1/rev1.c @@ -1,8 +1 @@ #include "yosino58.h" - -#ifdef SSD1306OLED -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - //led_set_user(usb_led); -} -#endif diff --git a/keyboards/yosino58/rev1/split_scomm.h b/keyboards/yosino58/rev1/split_scomm.h index 873d8939d81f..16887eb74f7b 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 687ca19bd3e5..f593047560a4 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 #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/rules.mk b/keyboards/yosino58/rules.mk index 57e06ed5f600..c44400d455dc 100644 --- a/keyboards/yosino58/rules.mk +++ b/keyboards/yosino58/rules.mk @@ -2,35 +2,23 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. SUBPROJECT_rev1 = no USE_I2C = yes -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend CUSTOM_MATRIX = yes diff --git a/keyboards/yosino58/serial.h b/keyboards/yosino58/serial.h index 7e0c0847a431..ac3459c876ad 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 @@ -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/yugo_m/model_m_101/info.json b/keyboards/yugo_m/model_m_101/info.json index ec0c0f280100..ec978056d3a2 100644 --- a/keyboards/yugo_m/model_m_101/info.json +++ b/keyboards/yugo_m/model_m_101/info.json @@ -2,8 +2,6 @@ "keyboard_name": "IBM Model M 101/102", "url": "https://github.com/tomic1785/qmk_firmware/tree/stm32_model_m/keyboards/yugo_m/model_m_101", "maintainer": "Nidzo Tomic", - "width": 22.5, - "height": 6.5, "layouts": { "LAYOUT_all": { "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"@", "x":2, "y":1.5}, {"label":"#", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"Backspace", "x":13, "y":1.5, "w":2}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.25, "y":1.5}, {"label":"Num Lock", "x":18.5, "y":1.5}, {"label":"/", "x":19.5, "y":1.5}, {"label":"*", "x":20.5, "y":1.5}, {"label":"-", "x":21.5, "y":1.5}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":6.5, "y":2.5}, {"label":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"|", "x":13.5, "y":2.5, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"7", "x":18.5, "y":2.5}, {"label":"8", "x":19.5, "y":2.5}, {"label":"9", "x":20.5, "y":2.5}, {"label":"+", "x":21.5, "y":2.5, "h":2}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.5}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"~", "x":12.75, "y":3.5}, {"label":"Enter", "x":13.75, "y":3.5, "w":1.25}, {"label":"4", "x":18.5, "y":3.5}, {"label":"5", "x":19.5, "y":3.5}, {"label":"6", "x":20.5, "y":3.5}, {"label":"Shift", "x":0, "y":4.5, "w":1.25}, {"label":"|", "x":1.25, "y":4.5}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"N", "x":7.25, "y":4.5}, {"label":"M", "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":"Shift", "x":12.25, "y":4.5, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"1", "x":18.5, "y":4.5}, {"label":"2", "x":19.5, "y":4.5}, {"label":"3", "x":20.5, "y":4.5}, {"label":"Enter", "x":21.5, "y":4.5, "h":2}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.5}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":7}, {"label":"Alt", "x":11, "y":5.5, "w":1.5}, {"label":"Ctrl", "x":13.5, "y":5.5, "w":1.5}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}, {"label":"0", "x":18.5, "y":5.5, "w":2}, {"label":".", "x":20.5, "y":5.5}] diff --git a/keyboards/yugo_m/model_m_101/rules.mk b/keyboards/yugo_m/model_m_101/rules.mk index 7708f89f37d1..6c5af01363b0 100644 --- a/keyboards/yugo_m/model_m_101/rules.mk +++ b/keyboards/yugo_m/model_m_101/rules.mk @@ -8,16 +8,13 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 diff --git a/keyboards/yurei/config.h b/keyboards/yurei/config.h index 81ddbe4286c9..57877dc8faa3 100644 --- a/keyboards/yurei/config.h +++ b/keyboards/yurei/config.h @@ -121,59 +121,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -194,26 +141,6 @@ along with this program. If not, see . #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 - /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/yurei/info.json b/keyboards/yurei/info.json index ff6fec7a5f91..bbbdb01a25bf 100644 --- a/keyboards/yurei/info.json +++ b/keyboards/yurei/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Yurei", "url": "https://github.com/kkatano/yurei", "maintainer": "Koichi Katano", - "width": 18.26, - "height": 6.47, "layouts": { "LAYOUT_tkl_ansi": { - "key_count": 87, "layout": [ {"label":"1", "x":0, "y":0}, {"label":"2", "x":2, "y":0}, diff --git a/keyboards/yurei/rules.mk b/keyboards/yurei/rules.mk index 734460c7101b..f6dde5aa4ab0 100644 --- a/keyboards/yurei/rules.mk +++ b/keyboards/yurei/rules.mk @@ -2,31 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = halfkay # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output LAYOUTS = tkl_ansi diff --git a/keyboards/yushakobo/quick17/config.h b/keyboards/yushakobo/quick17/config.h new file mode 100644 index 000000000000..ab33c8408233 --- /dev/null +++ b/keyboards/yushakobo/quick17/config.h @@ -0,0 +1,143 @@ +/* +Copyright 2021 yushakobo + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x3265 +#define PRODUCT_ID 0x0006 +#define DEVICE_VER 0x0001 +#define MANUFACTURER yushakobo +#define PRODUCT quick17 + +/* key matrix size */ +#define MATRIX_ROWS 3 +#define MATRIX_COLS 6 + +/* + * 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 { F4, B3, B6 } +#define MATRIX_COL_PINS { F5, D4, E6, F7, C6, D7 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* + * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. + */ +//#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 + +//#define BACKLIGHT_PIN B7 +//#define BACKLIGHT_LEVELS 3 +//#define BACKLIGHT_BREATHING + +#define RGB_DI_PIN D2 +#define RGBLED_NUM 18 + +#ifdef RGB_MATRIX_ENABLE +# define DRIVER_LED_TOTAL RGBLED_NUM +# define RGB_MATRIX_KEYPRESSES // reacts to keypresses +// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses) +// # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended +# define RGB_MATRIX_FRAMEBUFFER_EFFECTS +// # define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness) +// # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness) +# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash. +// HSV_TEAL +// #define RGB_MATRIX_STARTUP_HUE 128 +// #define RGB_MATRIX_STARTUP_SAT 255 + #define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS +# define RGB_MATRIX_HUE_STEP 8 +# define RGB_MATRIX_SAT_STEP 8 +# define RGB_MATRIX_VAL_STEP 8 +# define RGB_MATRIX_SPD_STEP 10 +#endif + + + + +#ifdef RGBLIGHT_ENABLE +# define RGBLIGHT_LED_MAP {\ + 6, 7, 12, 13, 14, 15,\ + 16, 17, 11, 10, 9, 8,\ + 0, 1, 2, 3, 4, 5\ + } +# define RGBLIGHT_HUE_STEP 8 +# define RGBLIGHT_SAT_STEP 8 +# define RGBLIGHT_VAL_STEP 8 +# define RGBLIGHT_LIMIT_VAL 150 /* The maximum brightness level */ +//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ +/*== all animations enable ==*/ +//# define RGBLIGHT_ANIMATIONS +/*== or choose animations ==*/ +//# define RGBLIGHT_EFFECT_BREATHING +# define RGBLIGHT_EFFECT_RAINBOW_MOOD +# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +# define RGBLIGHT_EFFECT_CHRISTMAS +# define RGBLIGHT_EFFECT_STATIC_GRADIENT +# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +/*== customize breathing effect ==*/ +/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ +//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 +/*==== use exp() and sin() ====*/ +//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 +//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 + +#define RGBLIGHT_LAYERS +#define RGBLIGHT_MAX_LAYERS 8 + +#endif + +#ifdef ENCODER_ENABLE +#define ENCODERS_PAD_A { B4 } +#define ENCODERS_PAD_B { B5 } +#endif + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +/* Bootmagic Lite key configuration */ +//#define BOOTMAGIC_LITE_ROW 0 +//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/keyboards/yushakobo/quick17/info.json b/keyboards/yushakobo/quick17/info.json new file mode 100644 index 000000000000..eb971110c0a6 --- /dev/null +++ b/keyboards/yushakobo/quick17/info.json @@ -0,0 +1,14 @@ +{ + "keyboard_name": "quick17", + "url": "https://shop.yushakobo.jp/products/quick17", + "maintainer": "yushakobo", + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, + {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, + {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2} + ] + } + } +} diff --git a/keyboards/yushakobo/quick17/keymaps/default/keymap.c b/keyboards/yushakobo/quick17/keymaps/default/keymap.c new file mode 100644 index 000000000000..5f2f45a6ebdf --- /dev/null +++ b/keyboards/yushakobo/quick17/keymaps/default/keymap.c @@ -0,0 +1,114 @@ +/* Copyright 2021 yushakobo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +#include "quick17_prefs.h" + +// Defines the keycodes used by our macros in process_record_user +enum custom_keycodes { + KC_LANG +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_CONTROL] = LAYOUT( + KC_TAB, KC_PGUP,KC_UP, KC_PGDN,KC_HOME,KC_INS, + KC_LCTL,KC_LEFT,KC_DOWN,KC_RGHT,KC_END, KC_DEL, + KC_LSFT,KC_LGUI,KC_ESC, KC_LALT,LT(3,KC_SPC),TO(1) + ), + [_EDIT1] = LAYOUT( + KC_ESC, KC_W, KC_E, KC_R, KC_Y, KC_BSPC, + KC_LCTL,KC_A, KC_D, KC_F, KC_H, LCTL(KC_Z), + KC_LSFT,KC_X, KC_V, KC_B, LT(2,KC_SPC),LCTL(KC_S) + ), + [_EDIT2] = LAYOUT( + KC_ESC, KC_Q, KC_BTN3,KC_INS, KC_ENT, KC_DEL, + KC_LCTL,KC_LBRC,KC_RBRC,KC_PGDN,KC_PGUP,LCTL(KC_Y), + KC_LSFT,TO(3), RGB_TOG,TO(0), _______,KC_NO + ), + [_FN] = LAYOUT( + KC_ESC, KC_LANG,KC_NO, RGB_TOG,KC_MNXT,KC_VOLU, + KC_CAPS,KC_NLCK,KC_NO, RGB_MOD,KC_MPRV,KC_VOLD, + CG_NORM,LCG_SWP,EEP_RST,RESET, TO(0), KC_MUTE + ) +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_LANG: + if (record->event.pressed){ + if (keymap_config.swap_lctl_lgui == false){ + tap_code16(LALT(KC_GRV)); + } else { + if(input_mode()){ + register_code(KC_LANG2); + set_input_mode(false); + } else { + register_code(KC_LANG1); + set_input_mode(true); + } + } + } else { + unregister_code(KC_LANG1); + unregister_code(KC_LANG2); + } + break; + default: + break; + } + return true; +} + +bool encoder_update_user(uint8_t index, bool clockwise){ + if (index == 0) { + if (IS_LAYER_ON(_EDIT2)){ + if (clockwise) { + tap_code(KC_LBRC); + } else { + tap_code(KC_RBRC); + } + } else if (IS_LAYER_ON(_EDIT1)){ + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else if (IS_LAYER_ON(_FN)){ + if (clockwise) { + tap_code(KC_MNXT); + } else { + tap_code(KC_MPRV); + } + } else { // IS_LAYER_ON(_CONTROL) + if (clockwise) { + tap_code(KC_WH_U); + } else { + tap_code(KC_WH_D); + } + } + } + return false; +} + +#ifdef RGB_MATRIX_ENABLE + void keyboard_post_init_user(void){ + rgb_matrix_mode(RGB_MATRIX_CUSTOM_quick17_rgbm_effect); + set_input_mode(false); + } +#else + void keyboard_post_init_user(void){ + rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL); + set_input_mode(false); + } +#endif diff --git a/keyboards/yushakobo/quick17/keymaps/default/readme.md b/keyboards/yushakobo/quick17/keymaps/default/readme.md new file mode 100644 index 000000000000..5a5066ed58a5 --- /dev/null +++ b/keyboards/yushakobo/quick17/keymaps/default/readme.md @@ -0,0 +1,64 @@ +# The default keymap for quick17 + +## CONTROL(default) Layer +``` + ,-----------------------------------------------. + | Tab | PgUp | Up | PgDn | Home | Ins | + |-------+-------+-------+-------+-------+-------| + | Ctrl | Left | Down | Right | End | Del | + |-------+-------+-------+-------+-------+-------| + | Shift | GUI | Esc | Alt | FN/Spc| EDIT1 | + `-----------------------------------------------' +``` + +## EDIT1 Layer +``` + ,--------------------------------------------------. + | Esc | W | E | R | Y | Bspc | + |-------+-------+-------+-------+---------+--------| + | Ctrl | A | D | F | H | Ctrl+Z | + |-------+-------+-------+-------+---------+--------| + | Shift | X | V | B |EDIT2/Spc| Ctrl+S | + `--------------------------------------------------' +``` + +## EDIT2 Layer +``` + ,-------------------------------------------------. + | Esc | Q | BTN3 | Ins | Enter | Bspc | + |-------+-------+-------+-------+--------+--------| + | Ctrl | [ | ] | PgDn | PgUp | Ctrl+Z | + |-------+-------+-------+-------+--------+--------| + | Shift | FN |RGB_TOG|CONTROL| (NONE) | (NONE) | + `-------------------------------------------------' +``` + +## FN Layer +``` + ,---------------------------------------------------. + | Esc | LANG | (NONE) |RGB_TOG| Media > | Vol+ | + |-------+-------+--------+-------+---------+--------| + | Caps | Numlk | (NONE) |RGB_MOD| Media < | Vol- | + |-------+-------+--------+-------+---------+--------| + | Win | mac | EEP_RST| RESET | CONTROL | Mute | + `---------------------------------------------------' +``` +### difference between mac-Mode and Win-Mode +- In mac Mode, `Ctrl` key will be changed into `command` key. +- `LANG` key will change its behaviour. + +### "LANG" key behaviour + +|LED-sign|Blue|Red|Green| +|---|---|---|---| +|mac Mode|-|かな|英数| +|Win Mode|半角/全角(Alt+`)|-|-| + +## Rotary encoder behaviour + +|On layer...|Clockwise|C-Clockwise| +|---|---|---| +|CONTROL|Scroll Up|Scroll Down| +|EDIT1|Vol+|Vol-| +|EDIT2|[|]| +|FN|Media >|Media <| diff --git a/keyboards/yushakobo/quick17/keymaps/via/keymap.c b/keyboards/yushakobo/quick17/keymaps/via/keymap.c new file mode 100644 index 000000000000..5f2f45a6ebdf --- /dev/null +++ b/keyboards/yushakobo/quick17/keymaps/via/keymap.c @@ -0,0 +1,114 @@ +/* Copyright 2021 yushakobo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +#include "quick17_prefs.h" + +// Defines the keycodes used by our macros in process_record_user +enum custom_keycodes { + KC_LANG +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_CONTROL] = LAYOUT( + KC_TAB, KC_PGUP,KC_UP, KC_PGDN,KC_HOME,KC_INS, + KC_LCTL,KC_LEFT,KC_DOWN,KC_RGHT,KC_END, KC_DEL, + KC_LSFT,KC_LGUI,KC_ESC, KC_LALT,LT(3,KC_SPC),TO(1) + ), + [_EDIT1] = LAYOUT( + KC_ESC, KC_W, KC_E, KC_R, KC_Y, KC_BSPC, + KC_LCTL,KC_A, KC_D, KC_F, KC_H, LCTL(KC_Z), + KC_LSFT,KC_X, KC_V, KC_B, LT(2,KC_SPC),LCTL(KC_S) + ), + [_EDIT2] = LAYOUT( + KC_ESC, KC_Q, KC_BTN3,KC_INS, KC_ENT, KC_DEL, + KC_LCTL,KC_LBRC,KC_RBRC,KC_PGDN,KC_PGUP,LCTL(KC_Y), + KC_LSFT,TO(3), RGB_TOG,TO(0), _______,KC_NO + ), + [_FN] = LAYOUT( + KC_ESC, KC_LANG,KC_NO, RGB_TOG,KC_MNXT,KC_VOLU, + KC_CAPS,KC_NLCK,KC_NO, RGB_MOD,KC_MPRV,KC_VOLD, + CG_NORM,LCG_SWP,EEP_RST,RESET, TO(0), KC_MUTE + ) +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_LANG: + if (record->event.pressed){ + if (keymap_config.swap_lctl_lgui == false){ + tap_code16(LALT(KC_GRV)); + } else { + if(input_mode()){ + register_code(KC_LANG2); + set_input_mode(false); + } else { + register_code(KC_LANG1); + set_input_mode(true); + } + } + } else { + unregister_code(KC_LANG1); + unregister_code(KC_LANG2); + } + break; + default: + break; + } + return true; +} + +bool encoder_update_user(uint8_t index, bool clockwise){ + if (index == 0) { + if (IS_LAYER_ON(_EDIT2)){ + if (clockwise) { + tap_code(KC_LBRC); + } else { + tap_code(KC_RBRC); + } + } else if (IS_LAYER_ON(_EDIT1)){ + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else if (IS_LAYER_ON(_FN)){ + if (clockwise) { + tap_code(KC_MNXT); + } else { + tap_code(KC_MPRV); + } + } else { // IS_LAYER_ON(_CONTROL) + if (clockwise) { + tap_code(KC_WH_U); + } else { + tap_code(KC_WH_D); + } + } + } + return false; +} + +#ifdef RGB_MATRIX_ENABLE + void keyboard_post_init_user(void){ + rgb_matrix_mode(RGB_MATRIX_CUSTOM_quick17_rgbm_effect); + set_input_mode(false); + } +#else + void keyboard_post_init_user(void){ + rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL); + set_input_mode(false); + } +#endif diff --git a/keyboards/yushakobo/quick17/keymaps/via/readme.md b/keyboards/yushakobo/quick17/keymaps/via/readme.md new file mode 100644 index 000000000000..da0923539df5 --- /dev/null +++ b/keyboards/yushakobo/quick17/keymaps/via/readme.md @@ -0,0 +1,62 @@ +# The via keymap for quick17 + +## CONTROL(default) Layer +``` + ,-----------------------------------------------. + | Tab | PgUp | Up | PgDn | Home | Ins | + |-------+-------+-------+-------+-------+-------| + | Ctrl | Left | Down | Right | End | Del | + |-------+-------+-------+-------+-------+-------| + | Shift | GUI | Esc | Alt | FN/Spc| EDIT1 | + `-----------------------------------------------' +``` + +## EDIT1 Layer +``` + ,--------------------------------------------------. + | Esc | W | E | R | Y | Bspc | + |-------+-------+-------+-------+---------+--------| + | Ctrl | A | D | F | H | Ctrl+Z | + |-------+-------+-------+-------+---------+--------| + | Shift | X | V | B |EDIT2/Spc| Ctrl+S | + `--------------------------------------------------' +``` + +## EDIT2 Layer +``` + ,-------------------------------------------------. + | Esc | Q | BTN3 | Ins | Enter | Bspc | + |-------+-------+-------+-------+--------+--------| + | Ctrl | [ | ] | PgDn | PgUp | Ctrl+Z | + |-------+-------+-------+-------+--------+--------| + | Shift | FN |RGB_TOG|CONTROL| (NONE) | (NONE) | + `-------------------------------------------------' +``` + +## FN Layer +``` + ,---------------------------------------------------. + | Esc | LANG | (NONE) |RGB_TOG| Media > | Vol+ | + |-------+-------+--------+-------+---------+--------| + | Caps | Numlk | (NONE) |RGB_MOD| Media < | Vol- | + |-------+-------+--------+-------+---------+--------| + | Win | mac | EEP_RST| RESET | CONTROL | Mute | + `---------------------------------------------------' +``` +### difference between mac-Mode and Win-Mode +- In mac Mode, `Ctrl` key will be changed into `command` key. +- `LANG` key will change its behaviour. + +### "LANG" key behaviour + +- mac Mode: cycle around "かな" and "英数" +- Win Mode: key combinations of Alt and ` + +## Rotary encoder behaviour + +|On layer...|Clockwise|C-Clockwise| +|---|---|---| +|CONTROL|Scroll Up|Scroll Down| +|EDIT1|Vol+|Vol-| +|EDIT2|[|]| +|FN|Media >|Media <| diff --git a/keyboards/yushakobo/quick17/keymaps/via/rules.mk b/keyboards/yushakobo/quick17/keymaps/via/rules.mk new file mode 100644 index 000000000000..b5502db7c499 --- /dev/null +++ b/keyboards/yushakobo/quick17/keymaps/via/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes +RGBLIGHT_ENABLE = yes +RGB_MATRIX_ENABLE = no \ No newline at end of file diff --git a/keyboards/yushakobo/quick17/quick17.c b/keyboards/yushakobo/quick17/quick17.c new file mode 100644 index 000000000000..ed9fe9709790 --- /dev/null +++ b/keyboards/yushakobo/quick17/quick17.c @@ -0,0 +1,37 @@ +/* Copyright 2021 yushakobo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "quick17.h" + +#ifdef RGB_MATRIX_ENABLE +led_config_t g_led_config = { + { + {12, 13, 14, 15, 16, 17}, + {0, 1, 11, 10, 9, 8}, + {2, 3, 4, 5, 6, 7} + }, + { + {0,32}, {44,32}, {0,64}, {44,64}, {89,64}, {134,64}, + {179,64},{224,64},{224,32},{179,32},{134,32},{89,32}, + {0,0}, {44,0}, {89,0}, {134,0}, {179,0}, {224,0} + }, + { + 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4 + } +}; +#endif diff --git a/keyboards/yushakobo/quick17/quick17.h b/keyboards/yushakobo/quick17/quick17.h new file mode 100644 index 000000000000..566df71069f1 --- /dev/null +++ b/keyboards/yushakobo/quick17/quick17.h @@ -0,0 +1,38 @@ +/* Copyright 2021 yushakobo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + k00, k01, k02, k03, k04, k05, \ + k10, k11, k12, k13, k14, k15, \ + k20, k21, k22, k23, k24, k25 \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05 }, \ + { k10, k11, k12, k13, k14, k15 }, \ + { k20, k21, k22, k23, k24, k25 } \ +} diff --git a/keyboards/yushakobo/quick17/quick17_prefs.c b/keyboards/yushakobo/quick17/quick17_prefs.c new file mode 100644 index 000000000000..1a546f4e3541 --- /dev/null +++ b/keyboards/yushakobo/quick17/quick17_prefs.c @@ -0,0 +1,29 @@ +/* Copyright 2021 yushakobo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +bool _INPUT_JP; + +void set_input_mode(bool _mode_jaen){ + _INPUT_JP = _mode_jaen; + // japanese -> true + // english -> false +} + +bool input_mode(void){ + return _INPUT_JP; +} diff --git a/keyboards/yushakobo/quick17/quick17_prefs.h b/keyboards/yushakobo/quick17/quick17_prefs.h new file mode 100644 index 000000000000..4d81d163b99b --- /dev/null +++ b/keyboards/yushakobo/quick17/quick17_prefs.h @@ -0,0 +1,28 @@ +/* Copyright 2021 yushakobo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +enum layer_names { + _CONTROL, + _EDIT1, + _EDIT2, + _FN +}; + +#define _HSV(H, S, V) (HSV){ .h = H, .s = S, .v = V } +#define _RGB(rgb) rgb.r, rgb.g, rgb.b + +bool input_mode(void); +void set_input_mode(bool _mode_jaen); diff --git a/keyboards/yushakobo/quick17/readme.md b/keyboards/yushakobo/quick17/readme.md new file mode 100644 index 000000000000..672cee331918 --- /dev/null +++ b/keyboards/yushakobo/quick17/readme.md @@ -0,0 +1,19 @@ +# quick17 + +![quick17](https://i.imgur.com/8SkWq0m.jpeg) + +A simple macropad for the beginners + +* Keyboard Maintainer: [yushakobo](https://github.com/yushakobo) +* Hardware Supported: Quick17 PCBs, Pro Micro (ATmega32u4) +* Hardware Availability: [yushakobo shop](https://shop.yushakobo.jp/products/quick17) + +Make example for this keyboard (after setting up your build environment): + + make quick17:default + +Flashing example for this keyboard: + + make quick17:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/yushakobo/quick17/rgb_matrix_kb.inc b/keyboards/yushakobo/quick17/rgb_matrix_kb.inc new file mode 100644 index 000000000000..0232b05ab944 --- /dev/null +++ b/keyboards/yushakobo/quick17/rgb_matrix_kb.inc @@ -0,0 +1,117 @@ +RGB_MATRIX_EFFECT(quick17_rgbm_effect) + +#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS + +#include "quick17_prefs.h" + +#define LED_LAYOUT(\ + L00, L01, L02, L03, L04, L05, \ + L10, L11, L12, L13, L14, L15, \ + L20, L21, L22, L23, L24, L25 \ +) {\ + L10, L11, L20, L21, L22, L23,\ + L24, L25, L15, L14, L13, L12,\ + L00, L01, L02, L03, L04, L05\ +} + +enum lighting_types { + BOUT, + _____, + INDC1, + INDC2, + INDC3, + INDC4, + INDC5, + JA_EN, + CAPSL, + NUM_L +}; + +const uint8_t rgb_keymaps [][DRIVER_LED_TOTAL] = { + [_CONTROL] = LED_LAYOUT( + _____, INDC2, INDC1, INDC2, INDC3, INDC4, + _____, INDC1, INDC1, INDC1, INDC3, INDC4, + _____, _____, _____, _____, INDC5, INDC5 + ), + [_EDIT1] = LED_LAYOUT( + _____, _____, _____, _____, _____, INDC4, + _____, _____, _____, _____, _____, INDC1, + _____, _____, _____, _____, INDC5, INDC1 + ), + [_EDIT2] = LED_LAYOUT( + _____, _____, _____, _____, _____, INDC4, + _____, _____, _____, _____, _____, INDC1, + _____, INDC5, INDC3, INDC5, INDC5, BOUT + ), + [_FN] = LED_LAYOUT( + _____, JA_EN, BOUT, INDC3, INDC4, INDC4, + CAPSL, NUM_L, BOUT, INDC3, INDC4, INDC4, + INDC2, INDC2, INDC1, INDC1, INDC5, INDC4 + ) +}; + +static void led_color_set(uint8_t index, uint8_t color_patterns) { + HSV hsv = rgb_matrix_config.hsv; // 'quantum/rgblight_list.h' + RGB rgb_white = hsv_to_rgb(_HSV( 0, 0, hsv.v)); // HSV_WHITE + RGB rgb_indc1 = hsv_to_rgb(_HSV(128, 255, hsv.v)); // HSV_TEAL + RGB rgb_indc2 = hsv_to_rgb(_HSV(191, 255, hsv.v)); // HSV_PURPLE + RGB rgb_indc3 = hsv_to_rgb(_HSV( 64, 255, hsv.v)); // HSV_CHARTREUSE + RGB rgb_indc4 = hsv_to_rgb(_HSV(106, 255, hsv.v)); // HSV_SPRINGGREEN + RGB rgb_indc5 = hsv_to_rgb(_HSV(234, 128, hsv.v)); // HSV_PINK + RGB rgb_indc6 = hsv_to_rgb(_HSV(213, 255, hsv.v)); // HSV_MAGENTA + RGB rgb_indc_ja = hsv_to_rgb(_HSV( 0, 255, hsv.v)); // HSV_RED + RGB rgb_indc_en = hsv_to_rgb(_HSV( 85, 255, hsv.v)); // HSV_GREEN + RGB rgb_indc_win = hsv_to_rgb(_HSV(170, 255, hsv.v)); // HSV_BLUE + switch(color_patterns){ + case BOUT: rgb_matrix_set_color(index, RGB_BLACK); break; + case _____: rgb_matrix_set_color(index, _RGB(rgb_white)); break; + case INDC1: rgb_matrix_set_color(index, _RGB(rgb_indc1)); break; + case INDC2: rgb_matrix_set_color(index, _RGB(rgb_indc2)); break; + case INDC3: rgb_matrix_set_color(index, _RGB(rgb_indc3)); break; + case INDC4: rgb_matrix_set_color(index, _RGB(rgb_indc4)); break; + case INDC5: rgb_matrix_set_color(index, _RGB(rgb_indc5)); break; + case JA_EN: + if (keymap_config.swap_lctl_lgui == false) { + rgb_matrix_set_color(index, _RGB(rgb_indc_win)); + } else { + if (input_mode()){ + rgb_matrix_set_color(index, _RGB(rgb_indc_ja)); + } else { + rgb_matrix_set_color(index, _RGB(rgb_indc_en)); + } + } + break; + case CAPSL: + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color(index, _RGB(rgb_indc6)); + } else { + rgb_matrix_set_color(index, _RGB(rgb_white)); + } + break; + case NUM_L: + if (host_keyboard_led_state().num_lock) { + rgb_matrix_set_color(index, _RGB(rgb_indc6)); + } else { + rgb_matrix_set_color(index, _RGB(rgb_white)); + } + break; + } +} + +static bool quick17_rgbm_effect (effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (uint8_t i = led_min; i < led_max; i++) { + if (IS_LAYER_ON(_EDIT2)){ + led_color_set(i, rgb_keymaps[_EDIT2][i]); + } else if (IS_LAYER_ON(_EDIT1)){ + led_color_set(i, rgb_keymaps[_EDIT1][i]); + } else if (IS_LAYER_ON(_FN)){ + led_color_set(i, rgb_keymaps[_FN][i]); + } else { // IS_LAYER_ON(_CONTROL) + led_color_set(i, rgb_keymaps[_CONTROL][i]); + } + } + return rgb_matrix_check_finished_leds(led_max); +} + +#endif diff --git a/keyboards/yushakobo/quick17/rules.mk b/keyboards/yushakobo/quick17/rules.mk new file mode 100644 index 000000000000..cd7d6acfebd6 --- /dev/null +++ b/keyboards/yushakobo/quick17/rules.mk @@ -0,0 +1,26 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes + +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = WS2812 +RGB_MATRIX_CUSTOM_KB = yes + +SRC += quick17_prefs.c diff --git a/keyboards/yushakobo/quick7/config.h b/keyboards/yushakobo/quick7/config.h index e5bcfe761a7c..01cc0f0a8745 100644 --- a/keyboards/yushakobo/quick7/config.h +++ b/keyboards/yushakobo/quick7/config.h @@ -121,59 +121,6 @@ along with this program. If not, see . */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -195,25 +142,6 @@ along with this program. If not, see . #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION #endif -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -//#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 1 /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 diff --git a/keyboards/yushakobo/quick7/info.json b/keyboards/yushakobo/quick7/info.json index fd0f94a4ed9f..078dd70d220f 100644 --- a/keyboards/yushakobo/quick7/info.json +++ b/keyboards/yushakobo/quick7/info.json @@ -2,8 +2,6 @@ "keyboard_name": "quick7", "url": "", "maintainer": "yushakobo", - "width": 3, - "height": 2, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/yushakobo/quick7/rules.mk b/keyboards/yushakobo/quick7/rules.mk index 75e07106b669..6d896c331bbe 100644 --- a/keyboards/yushakobo/quick7/rules.mk +++ b/keyboards/yushakobo/quick7/rules.mk @@ -2,31 +2,20 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 +AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes # Enable support for Rotary Encoder diff --git a/keyboards/yynmt/acperience12/info.json b/keyboards/yynmt/acperience12/info.json index 034ed82488b4..c21faf109a31 100644 --- a/keyboards/yynmt/acperience12/info.json +++ b/keyboards/yynmt/acperience12/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Acperience12", "url": "http://yynmt.com", "maintainer": "yynmt", - "width": 2, - "height": 6, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/yynmt/acperience12/rules.mk b/keyboards/yynmt/acperience12/rules.mk index bb8f6496c570..b01322b5b340 100644 --- a/keyboards/yynmt/acperience12/rules.mk +++ b/keyboards/yynmt/acperience12/rules.mk @@ -1,18 +1,15 @@ # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = 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 DEFAULT_FOLDER = yynmt/acperience12/rev1 diff --git a/keyboards/z12/config.h b/keyboards/z12/config.h new file mode 100644 index 000000000000..68aff7acf716 --- /dev/null +++ b/keyboards/z12/config.h @@ -0,0 +1,52 @@ +/* Copyright 2020 Sergi Meseguer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7A74 +#define PRODUCT_ID 0x0001 +#define DEVICE_VER 0x0001 +#define MANUFACTURER zigotica +#define PRODUCT z12 + +#define ENCODERS_PAD_A { B5, B6 } +#define ENCODERS_PAD_B { B4, B2 } + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 4 + +/*Keyboard Matrix Assignments */ + +#define DIRECT_PINS { \ + { NO_PIN, E6, C6, NO_PIN }, \ + { D2, D7, D4, D3 }, \ + { F7, B1, B3, NO_PIN }, \ + { F6, F5, F4, NO_PIN } \ +} + +#define UNUSED_PINS + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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/z12/info.json b/keyboards/z12/info.json new file mode 100644 index 000000000000..3ae8937571e4 --- /dev/null +++ b/keyboards/z12/info.json @@ -0,0 +1,26 @@ +{ + "keyboard_name": "z12", + "url": "https://github.com/zigotica/mechanical-keyboards/tree/main/z12", + "maintainer": "@zigotica", + "layouts": { + "LAYOUT": { + "layout": [ + {"x": 1, "y": 0}, + {"x": 2, "y": 0}, + + {"x": 0, "y": 0.5}, + {"x": 1, "y": 1}, + {"x": 2, "y": 1}, + {"x": 3, "y": 0.5}, + + {"x": 0.5, "y": 2}, + {"x": 1.5, "y": 2}, + {"x": 2.5, "y": 2}, + + {"x": 0.5, "y": 3}, + {"x": 1.5, "y": 3}, + {"x": 2.5, "y": 3}, + ] + } + } +} diff --git a/keyboards/z12/keymaps/default/config.h b/keyboards/z12/keymaps/default/config.h new file mode 100644 index 000000000000..1fcf924f3532 --- /dev/null +++ b/keyboards/z12/keymaps/default/config.h @@ -0,0 +1,26 @@ +/* Copyright 2020 Sergi Meseguer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#define OLED_DISPLAY_128X32 + +// EC11 encoders' resolution. +// Reduce the value to 2 if you feel missing values: +#define ENCODER_RESOLUTION 4 + +// Allows correct registered values by rotary encoder: +#define TAP_CODE_DELAY 10 diff --git a/keyboards/z12/keymaps/default/keymap.c b/keyboards/z12/keymaps/default/keymap.c new file mode 100644 index 000000000000..16a6c1f70e97 --- /dev/null +++ b/keyboards/z12/keymaps/default/keymap.c @@ -0,0 +1,59 @@ +/* Copyright 2020 Sergi Meseguer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + BASE = 0 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* + * Base Layer: BASE + * + * ,-----------------------. + * | | o | o | | + * |-------+---+---+-------| + * | o | o | o | o | + * |-------+-------+-------| + * | o | o | o | + * |-------+-------+-------| + * | o | o | o | + * |-------+-------+-------| + */ + [BASE] = LAYOUT( + KC_Q, KC_W, + KC_E, KC_R, KC_T, KC_Y, + KC_U, KC_I, KC_O, + KC_P, KC_K, KC_A + ), + +/* + * TEMPLATE + * + * ,-----------------------. + * | | o | o | | + * |-------+---+---+-------| + * | o | o | o | o | + * |-------+-------+-------| + * | o | o | o | + * |-------+-------+-------| + * | o | o | o | + * |-------+-------+-------| + */ + +}; + diff --git a/keyboards/z12/keymaps/default/readme.md b/keyboards/z12/keymaps/default/readme.md new file mode 100644 index 000000000000..5f30ab6a3966 --- /dev/null +++ b/keyboards/z12/keymaps/default/readme.md @@ -0,0 +1,3 @@ +# Default z12 Layout + +This is the default layout that comes flashed on every z12. diff --git a/keyboards/z12/keymaps/default/rules.mk b/keyboards/z12/keymaps/default/rules.mk new file mode 100644 index 000000000000..b220469c6c67 --- /dev/null +++ b/keyboards/z12/keymaps/default/rules.mk @@ -0,0 +1,2 @@ +OLED_ENABLE = yes # Enables the use of OLED displays +MOUSEKEY_ENABLE = yes diff --git a/keyboards/z12/keymaps/zigotica/config.h b/keyboards/z12/keymaps/zigotica/config.h new file mode 100644 index 000000000000..fbab76d5f0d6 --- /dev/null +++ b/keyboards/z12/keymaps/zigotica/config.h @@ -0,0 +1,30 @@ +/* Copyright 2020 Sergi Meseguer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +#ifdef OLED_ENABLE + #define OLED_DISPLAY_128X32 +#endif + +// EC11 encoders' resolution. +// Reduce the value to 2 if you feel missing values: +#define ENCODER_RESOLUTION 4 + +// Allows correct registered values by rotary encoder: +#define TAP_CODE_DELAY 10 diff --git a/keyboards/z12/keymaps/zigotica/encoder.c b/keyboards/z12/keymaps/zigotica/encoder.c new file mode 100644 index 000000000000..49a3d859b66e --- /dev/null +++ b/keyboards/z12/keymaps/zigotica/encoder.c @@ -0,0 +1,114 @@ +/* Copyright 2020 Sergi Meseguer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "zigotica.h" + +bool encoder_update_user(uint8_t index, bool clockwise) { + switch(get_highest_layer(layer_state)){ + case _VIM: + if (index == 0) { // LEFT + // Cycle through buffers + if (clockwise) { + register_code(KC_ESC); + SEND_STRING(":bprevious"); + register_code(KC_ENT); + unregister_code(KC_ESC); + unregister_code(KC_ENT); + } else { + register_code(KC_ESC); + SEND_STRING(":bnext"); + register_code(KC_ENT); + unregister_code(KC_ESC); + unregister_code(KC_ENT); + } + } else { // RIGHT + // Scroll + if (clockwise) { + tap_code(KC_PGDN); + } else { + tap_code(KC_PGUP); + } + } + break; + case _BROWSER: + if (index == 0) { // LEFT + // Cycle through Tabs + if (clockwise) { + tap_code16(C(KC_TAB)); + /* register_code16(G(KC_RCBR)); */ + /* unregister_code16(G(KC_RCBR)); */ + } else { + tap_code16(S(C(KC_TAB))); + /* register_code16(G(KC_LCBR)); */ + /* unregister_code16(G(KC_LCBR)); */ + } + } else { // RIGHT + // Scroll up/down + if (clockwise) { + register_code(KC_WH_U); + unregister_code(KC_WH_U); + } else { + register_code(KC_WH_D); + unregister_code(KC_WH_D); + } + } + break; + case _FIGMA: + if (index == 0) { // LEFT + // Volume control. + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else { // RIGHT + // Zoom in/out + if (clockwise) { + register_code(KC_LGUI); + register_code(KC_WH_D); + unregister_code(KC_WH_D); + unregister_code(KC_LGUI); + } else { + register_code(KC_LGUI); + register_code(KC_WH_U); + unregister_code(KC_WH_U); + unregister_code(KC_LGUI); + } + } + break; + case _TERMINAL: + default: + if (index == 0) { // LEFT + // Volume control. + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else { // RIGHT + // Scroll + if (clockwise) { + tap_code(KC_PGDN); + } else { + tap_code(KC_PGUP); + } + } + break; + } + return false; +} + + diff --git a/keyboards/z12/keymaps/zigotica/encoder.h b/keyboards/z12/keymaps/zigotica/encoder.h new file mode 100644 index 000000000000..2422c68f2869 --- /dev/null +++ b/keyboards/z12/keymaps/zigotica/encoder.h @@ -0,0 +1,18 @@ +/* Copyright 2020 Sergi Meseguer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once +#include "zigotica.h" diff --git a/keyboards/z12/keymaps/zigotica/keymap.c b/keyboards/z12/keymaps/zigotica/keymap.c new file mode 100644 index 000000000000..7e969de96ed6 --- /dev/null +++ b/keyboards/z12/keymaps/zigotica/keymap.c @@ -0,0 +1,126 @@ +/* Copyright 2020 + Sergi Meseguer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "zigotica.h" + +// Custom Keycodes +#define MODE_1 TO(_TERMINAL) +#define MODE_2 TO(_FIGMA) +#define MODE_3 TO(_BROWSER) +#define MODE_4 TO(_VIM) + +enum custom_keycodes { + VIM_SIP = SAFE_RANGE +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case VIM_SIP: + if (record->event.pressed) { + register_code(KC_ESC); + SEND_STRING(":Ag "); + } else { + // released + unregister_code(KC_ESC); + } + break; + } + return true; +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* + * TERMINAL Layer + * + * ,-----------------------------. + * | | TERM | FIGM | | + * |-------+------+------+-------| + * | VOL | BROW | VIM | SCROLL| + * |-------+------+------+-------| + * |-------+-------+-------| + * | MEDIA | o | o | + * |-------+-------+-------| + * | o | o | o | + * |-------+-------+-------| + */ + [_TERMINAL] = LAYOUT( + MODE_1, MODE_2, + ZK_MEDIA, MODE_3, MODE_4, _______, + _______, _______, _______, + _______, _______, _______ + ), +/* + * VIM Layer + * + * ,-----------------------------. + * | | TERM | FIGM | | + * |-------+------+------+-------| + * |BUFFER | BROW | VIM | SCROLL| + * |-------+------+------+-------| + * |-------+-------+-------| + * |SEARCH | o | o | + * |-------+-------+-------| + * | o | o | o | + * |-------+-------+-------| + */ + [_VIM] = LAYOUT( + _______, _______, + _______, _______, _______, _______, + VIM_SIP, _______, _______, + _______, _______, _______ + ), +/* + * FIGMA Layer + * + * ,-----------------------------. + * | | TERM | FIGM | | + * |-------+------+------+-------| + * | VOL | BROW | VIM | ZOOM | + * |-------+------+------+-------| + * |-------+-------+-------| + * | ZOOM | GRIDS | FULL | + * |-------+-------+-------| + * | o | o | o | + * |-------+-------+-------| + */ + [_FIGMA] = LAYOUT( + _______, _______, + _______, _______, _______, _______, + LSFT(KC_1), LCTL(KC_G), LGUI(KC_BSLS), + _______, _______, _______ + ), +/* + * BROWSER Layer + * + * ,-----------------------------. + * | | TERM | FIGM | | + * |-------+------+------+-------| + * | TABS | BROW | VIM | SCROLL| + * |-------+------+------+-------| + * |-------+-------+-------| + * |SEARCH | BOOKM | DEVTL | + * |-------+-------+-------| + * | o | o | o | + * |-------+-------+-------| + */ + [_BROWSER] = LAYOUT( + _______, _______, + _______, _______, _______, _______, + G(KC_F), G(KC_D), G(A(KC_I)), + _______, _______, _______ + ), +}; diff --git a/keyboards/z12/keymaps/zigotica/oled.c b/keyboards/z12/keymaps/zigotica/oled.c new file mode 100644 index 000000000000..fa11a3d6c6f8 --- /dev/null +++ b/keyboards/z12/keymaps/zigotica/oled.c @@ -0,0 +1,43 @@ +/* Copyright 2020 Sergi Meseguer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "zigotica.h" + +static void render_status(void) { + oled_write_P(PSTR("z12 v1.0\n"), false); + oled_write_P(PSTR("Layer: "), false); + switch (get_highest_layer(layer_state)) { + case _VIM: + oled_write_P(PSTR("VIM\n\nBUFFER SCROLL"), false); + break; + case _FIGMA: + oled_write_P(PSTR("FIGMA\n\nVOLUME ZOOM"), false); + break; + case _BROWSER: + oled_write_P(PSTR("BROWSER\n\nTABS SCROLL"), false); + break; + case _TERMINAL: + oled_write_P(PSTR("TERMINAL\n\nVOLUME SCROLL"), false); + break; + default: + oled_write_P(PSTR("Undef\n"), false); + } +} + +bool oled_task_user(void) { + render_status(); + return false; +} diff --git a/keyboards/z12/keymaps/zigotica/oled.h b/keyboards/z12/keymaps/zigotica/oled.h new file mode 100644 index 000000000000..2422c68f2869 --- /dev/null +++ b/keyboards/z12/keymaps/zigotica/oled.h @@ -0,0 +1,18 @@ +/* Copyright 2020 Sergi Meseguer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once +#include "zigotica.h" diff --git a/keyboards/z12/keymaps/zigotica/rules.mk b/keyboards/z12/keymaps/zigotica/rules.mk new file mode 100644 index 000000000000..02e37aa80b3c --- /dev/null +++ b/keyboards/z12/keymaps/zigotica/rules.mk @@ -0,0 +1,4 @@ +OLED_ENABLE = yes # Enables the use of OLED displays +RAW_ENABLE = yes +TAP_DANCE_ENABLE = yes +MOUSEKEY_ENABLE = yes diff --git a/keyboards/z12/readme.md b/keyboards/z12/readme.md new file mode 100644 index 000000000000..17e4bfdb8489 --- /dev/null +++ b/keyboards/z12/readme.md @@ -0,0 +1,3 @@ +# z12 + +Firmware for [z12 micropad](https://github.com/zigotica/mechanical-keyboards/tree/main/z12) designed by @zigotica diff --git a/keyboards/z12/rules.mk b/keyboards/z12/rules.mk new file mode 100644 index 000000000000..13ce8f56288f --- /dev/null +++ b/keyboards/z12/rules.mk @@ -0,0 +1,22 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +ENCODER_ENABLE = yes # Enables the use of encoders +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +LTO_ENABLE = yes # Enables Link Time Optimization (LTO) which reduces the compiled size +OLED_ENABLE = yes # Enables the use of OLED displays +OLED_DRIVER = SSD1306 # Enables the use of OLED displays + diff --git a/keyboards/z12/z12.c b/keyboards/z12/z12.c new file mode 100644 index 000000000000..2af8836cab56 --- /dev/null +++ b/keyboards/z12/z12.c @@ -0,0 +1,23 @@ +/* Copyright 2020 Sergi Meseguer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "z12.h" + +#ifdef ENCODER_ENABLE +bool encoder_update_kb(uint8_t index, bool clockwise) { + return encoder_update_user(index, clockwise); +} +#endif diff --git a/keyboards/z12/z12.h b/keyboards/z12/z12.h new file mode 100644 index 000000000000..0ea6c303f734 --- /dev/null +++ b/keyboards/z12/z12.h @@ -0,0 +1,34 @@ +/* Copyright 2020 Sergi Meseguer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "quantum.h" + +/* This a shortcut to help you visually see your layout */ + +#define ___ KC_NO + +#define LAYOUT( \ + BN4, BN2, \ + SW7, BN3, BN1, SW8, \ + SW4, SW5, SW6, \ + SW3, SW2, SW1 \ + ) \ + { \ + { ___, BN4, BN2, ___ }, \ + { SW7, BN3, BN1, SW8 }, \ + { SW4, SW5, SW6, ___ }, \ + { SW3, SW2, SW1, ___ }, \ + } diff --git a/keyboards/z150_bh/info.json b/keyboards/z150_bh/info.json index 6e5c121f6a03..3339baee890a 100644 --- a/keyboards/z150_bh/info.json +++ b/keyboards/z150_bh/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Z-150 BH", "url": "", "maintainer": "qmk, blindassassin111", - "width": 21.25, - "height": 5, "layouts": { "LAYOUT": { - "key_count": 84, "layout": [ {"label":"F1", "x":0, "y":0}, {"label":"F2", "x":1, "y":0}, @@ -95,7 +92,6 @@ ] }, "LAYOUT_z150_tkl": { - "key_count": 88, "layout": [ {"label":"F1", "x":0, "y":0}, {"label":"F2", "x":1, "y":0}, diff --git a/keyboards/z150_bh/keymaps/default/keymap.c b/keyboards/z150_bh/keymaps/default/keymap.c index ff4f6f7f9d6f..9ca75dd28528 100644 --- a/keyboards/z150_bh/keymaps/default/keymap.c +++ b/keyboards/z150_bh/keymaps/default/keymap.c @@ -33,16 +33,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______ ), }; - -void matrix_init_user(void) { -} - -void matrix_scan_user(void) { -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { -} \ No newline at end of file diff --git a/keyboards/z150_bh/keymaps/default_tkl/keymap.c b/keyboards/z150_bh/keymaps/default_tkl/keymap.c index f1a24b8ddabe..fa1f7e47b97c 100644 --- a/keyboards/z150_bh/keymaps/default_tkl/keymap.c +++ b/keyboards/z150_bh/keymaps/default_tkl/keymap.c @@ -33,16 +33,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), }; - -void matrix_init_user(void) { -} - -void matrix_scan_user(void) { -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { -} \ No newline at end of file diff --git a/keyboards/z150_bh/rules.mk b/keyboards/z150_bh/rules.mk index 1843f1ba6831..468094fd703b 100644 --- a/keyboards/z150_bh/rules.mk +++ b/keyboards/z150_bh/rules.mk @@ -2,24 +2,16 @@ MCU = at90usb1286 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = halfkay # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 -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 diff --git a/keyboards/z34/config.h b/keyboards/z34/config.h new file mode 100644 index 000000000000..71d6528ce803 --- /dev/null +++ b/keyboards/z34/config.h @@ -0,0 +1,65 @@ +/* Copyright 2020 Sergi Meseguer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x7A74 +#define PRODUCT_ID 0x0002 +#define DEVICE_VER 0x0001 +#define MANUFACTURER zigotica +#define PRODUCT z34 + +/* key matrix size */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 5 + +/*Keyboard Matrix Assignments */ + +#define DIRECT_PINS { \ + { C6, F7, F6, F5, F4 }, \ + { D7, B6, B2, B3, B1 }, \ + { E6, D4, D0, D1, D3 }, \ + { B4, B5, NO_PIN, NO_PIN, NO_PIN } \ +} + +#define DIRECT_PINS_RIGHT { \ + { F4, F5, F6, F7, C6 }, \ + { B1, B3, B2, B6, D7 }, \ + { D3, D1, D0, D4, E6 }, \ + { B5, B4, NO_PIN, NO_PIN, NO_PIN } \ +} + +#define UNUSED_PINS + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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 + +/* Serial settings */ +#define USE_SERIAL +/* serial.c configuration for split keyboard */ +#define SOFT_SERIAL_PIN D2 + +// EE_HANDS MASTER_RIGHT MASTER_LEFT +#define MASTER_RIGHT + diff --git a/keyboards/z34/info.json b/keyboards/z34/info.json new file mode 100644 index 000000000000..4a6dce752545 --- /dev/null +++ b/keyboards/z34/info.json @@ -0,0 +1,52 @@ +{ + "keyboard_name": "z34", + "url": "https://github.com/zigotica/mechanical-keyboards/tree/main/z34", + "maintainer": "@zigotica", + "layouts": { + "LAYOUT": { + "layout": [ + {"x": 0, "y": 0.93}, + {"x": 1, "y": 0.31}, + {"x": 2, "y": 0}, + {"x": 3, "y": 0.28}, + {"x": 4, "y": 0.42}, + + {"x": 7, "y": 0.42}, + {"x": 8, "y": 0.28}, + {"x": 9, "y": 0}, + {"x": 10, "y": 0.31}, + {"x": 11, "y": 0.93}, + + {"x": 0, "y": 1.93}, + {"x": 1, "y": 1.31}, + {"x": 2, "y": 1}, + {"x": 3, "y": 1.28}, + {"x": 4, "y": 1.42}, + + {"x": 7, "y": 1.42}, + {"x": 8, "y": 1.28}, + {"x": 9, "y": 1}, + {"x": 10, "y": 1.31}, + {"x": 11, "y": 1.93}, + + {"x": 0, "y": 2.93}, + {"x": 1, "y": 2.31}, + {"x": 2, "y": 2}, + {"x": 3, "y": 2.28}, + {"x": 4, "y": 2.42}, + + {"x": 7, "y": 2.42}, + {"x": 8, "y": 2.28}, + {"x": 9, "y": 2}, + {"x": 10, "y": 2.31}, + {"x": 11, "y": 2.93}, + + {"x": 3.5, "y": 3.5}, + {"x": 4.5, "y": 4}, + + {"x": 6.5, "y": 4}, + {"x": 7.5, "y": 3.5} + ] + } + } +} diff --git a/keyboards/z34/keymaps/default/config.h b/keyboards/z34/keymaps/default/config.h new file mode 100644 index 000000000000..ae9881d3abf9 --- /dev/null +++ b/keyboards/z34/keymaps/default/config.h @@ -0,0 +1,22 @@ +/* Copyright 2020 Sergi Meseguer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +// EE_HANDS MASTER_RIGHT MASTER_LEFT +#define MASTER_RIGHT diff --git a/keyboards/z34/keymaps/default/keymap.c b/keyboards/z34/keymaps/default/keymap.c new file mode 100644 index 000000000000..973d24eafbc7 --- /dev/null +++ b/keyboards/z34/keymaps/default/keymap.c @@ -0,0 +1,77 @@ +/* Copyright 2020 Sergi Meseguer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +enum layers { + BASE = 0 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* + * Base Layer: BASE + * + * ,---------------------------------------. ,---------------------------------------. + * | | | | | | | | | | | | + * | Q | W | E | R | T | | Y | U | I | O | P | + * | | | | | | | | | | | | + * |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| + * | | | | | | | | | | | | + * | A | S | D | F | G | | H | J | K | L | ' | + * | | | | | | | | | | | | + * |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| + * | | | | | | | | | | | | + * | Z | X | C | V | B | | N | M | , | . | / | + * | | | | | | | | | | | | + * `-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------. + * | | | | | | + * | ESC | SPC | | ENTER | BSPC | + * | | | | | | + * `---------------' `---------------' + * + */ + [BASE] = LAYOUT( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, + KC_ESC, KC_SPC, KC_ENT, KC_BSPC + ), + +/* + * TEMPLATE + * + * ,---------------------------------------. ,---------------------------------------. + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * | | | | | | | | | | | | + * `-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------. + * | | | | | | + * | | | | | | + * | | | | | | + * `---------------' `---------------' + * + */ + +}; + diff --git a/keyboards/z34/keymaps/default/readme.md b/keyboards/z34/keymaps/default/readme.md new file mode 100644 index 000000000000..c6a0115573ce --- /dev/null +++ b/keyboards/z34/keymaps/default/readme.md @@ -0,0 +1,3 @@ +# Default z34 Layout + +This is the default QWERTY layout that comes flashed on every z34. diff --git a/keyboards/z34/keymaps/default/rules.mk b/keyboards/z34/keymaps/default/rules.mk new file mode 100644 index 000000000000..827811a36239 --- /dev/null +++ b/keyboards/z34/keymaps/default/rules.mk @@ -0,0 +1,3 @@ +# There are no extra pins, so we make sure to disable OLED and Encoders +OLED_SUPPORTED = no +ENCODER_SUPPORTED = no diff --git a/keyboards/z34/keymaps/zigotica/config.h b/keyboards/z34/keymaps/zigotica/config.h new file mode 100644 index 000000000000..1b223cb71d25 --- /dev/null +++ b/keyboards/z34/keymaps/zigotica/config.h @@ -0,0 +1,28 @@ +/* Copyright 2020 Sergi Meseguer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +#define MASTER_RIGHT + +// these should work better for homerow modifiers +#define TAPPING_TERM 350 +#define PERMISSIVE_HOLD +#define IGNORE_MOD_TAP_INTERRUPT +#define TAPPING_FORCE_HOLD + diff --git a/keyboards/z34/keymaps/zigotica/keymap.c b/keyboards/z34/keymaps/zigotica/keymap.c new file mode 100644 index 000000000000..88c6a3db1bb9 --- /dev/null +++ b/keyboards/z34/keymaps/zigotica/keymap.c @@ -0,0 +1,57 @@ +/* Copyright 2020 Sergi Meseguer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "zigotica.h" + +#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [BASE] = LAYOUT_wrapper( + _STENAI_L1, _STENAI_R1, + _STENAI_L2, _STENAI_R2, + _STENAI_L3, _STENAI_R3, + _STENAI_LT, _STENAI_RT + ), + + [_NUM] = LAYOUT_wrapper( + ____NUM_L1, ____NUM_R1, + ____NUM_L2, ____NUM_R2, + ____NUM_L3, ____NUM_R3, + ____NUM_LT, ____NUM_RT + ), + + [_NAV] = LAYOUT_wrapper( + ____NAV_L1, ____NAV_R1, + ____NAV_L2, ____NAV_R2, + ____NAV_L3, ____NAV_R3, + ____NAV_LT, ____NAV_RT + ), + + [_SYM] = LAYOUT_wrapper( + ____SYM_L1, ____SYM_R1, + ____SYM_L2, ____SYM_R2, + ____SYM_L3, ____SYM_R3, + ____SYM_LT, ____SYM_RT + ), + + [_FN] = LAYOUT_wrapper( + ____FN_L1, ____FN_R1, + ____FN_L2, ____FN_R2, + ____FN_L3, ____FN_R3, + ____FN_LT, ____FN_RT + ), +}; + diff --git a/keyboards/z34/keymaps/zigotica/rules.mk b/keyboards/z34/keymaps/zigotica/rules.mk new file mode 100644 index 000000000000..9abdfb40b493 --- /dev/null +++ b/keyboards/z34/keymaps/zigotica/rules.mk @@ -0,0 +1,7 @@ +# There are no extra pins, so we make sure to disable OLED and Encoders +OLED_SUPPORTED = no +ENCODER_SUPPORTED = no + +MOUSEKEY_ENABLE = yes +COMBO_ENABLE = yes +TAP_DANCE_ENABLE = yes diff --git a/keyboards/z34/readme.md b/keyboards/z34/readme.md new file mode 100644 index 000000000000..29bbf571a343 --- /dev/null +++ b/keyboards/z34/readme.md @@ -0,0 +1,3 @@ +# z34 + +Firmware for [z34 split keyboard](https://github.com/zigotica/mechanical-keyboards/tree/main/z34) designed by @zigotica diff --git a/keyboards/z34/rules.mk b/keyboards/z34/rules.mk new file mode 100644 index 000000000000..40f72e5c9c02 --- /dev/null +++ b/keyboards/z34/rules.mk @@ -0,0 +1,26 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = caterina + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +SPLIT_KEYBOARD = yes # Split common +LTO_ENABLE = yes # Enables Link Time Optimization (LTO) which reduces the compiled size + +# There are no extra pins, so we make sure to disable OLED and Encoders +OLED_SUPPORTED = no # Enables the use of OLED displays +ENCODER_SUPPORTED = no # Enables the use of encoders + diff --git a/keyboards/z34/z34.c b/keyboards/z34/z34.c new file mode 100644 index 000000000000..779562e630eb --- /dev/null +++ b/keyboards/z34/z34.c @@ -0,0 +1,17 @@ +/* Copyright 2020 Sergi Meseguer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "z34.h" diff --git a/keyboards/z34/z34.h b/keyboards/z34/z34.h new file mode 100644 index 000000000000..3def2d4c2c8e --- /dev/null +++ b/keyboards/z34/z34.h @@ -0,0 +1,39 @@ +/* Copyright 2020 Sergi Meseguer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "quantum.h" + +/* This a shortcut to help you visually see your layout */ + +#define ___ KC_NO + +#define LAYOUT( \ + L05, L04, L03, L02, L01, R01, R02, R03, R04, R05, \ + L10, L09, L08, L07, L06, R06, R07, R08, R09, R10, \ + L15, L14, L13, L12, L11, R11, R12, R13, R14, R15, \ + L17, L16, R16, R17 \ + ) \ + { \ + { L05, L04, L03, L02, L01 }, \ + { L10, L09, L08, L07, L06 }, \ + { L15, L14, L13, L12, L11 }, \ + { L17, L16, ___, ___ , ___}, \ + { R01, R02, R03, R04, R05 }, \ + { R06, R07, R08, R09, R10 }, \ + { R11, R12, R13, R14, R15 }, \ + { R16, R17, ___, ___, ___ } \ + } + diff --git a/keyboards/zfrontier/big_switch/info.json b/keyboards/zfrontier/big_switch/info.json index 92aedd35797d..c0d542ade13c 100644 --- a/keyboards/zfrontier/big_switch/info.json +++ b/keyboards/zfrontier/big_switch/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Red Comet Big Switch", "url": "https://en.zfrontier.com/products/redcomet-bigswitch-combo", "maintainer": "carlxia", - "width": 4, - "height": 4, "layouts": { "LAYOUT": { "layout": [ diff --git a/keyboards/zfrontier/big_switch/rules.mk b/keyboards/zfrontier/big_switch/rules.mk index ce4a8286e667..b5e2abaedfc4 100644 --- a/keyboards/zfrontier/big_switch/rules.mk +++ b/keyboards/zfrontier/big_switch/rules.mk @@ -2,30 +2,18 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # 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 = no # USB Nkey Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE = no # Audio output on port C6 -TAP_DANCE_ENABLE = no +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/ziggurat/config.h b/keyboards/ziggurat/config.h new file mode 100644 index 000000000000..9c38f5e796af --- /dev/null +++ b/keyboards/ziggurat/config.h @@ -0,0 +1,46 @@ +/* +Copyright 2021 kb-elmo + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x8F5D +#define PRODUCT_ID 0x5258 +#define DEVICE_VER 0x0001 +#define MANUFACTURER LaminarWoob +#define PRODUCT Ziggurat + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 18 + +/* Keyboard Matrix Assignments */ +#define MATRIX_ROW_PINS { A2, A1, A0, F7, A3 } +#define MATRIX_COL_PINS { F6, F5, F4, F3, F2, F1, B5, B6, C2, C3, C4, C5, C6, C7, A7, A6, A5, A4 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* disable these deprecated features by default */ +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION diff --git a/keyboards/ziggurat/info.json b/keyboards/ziggurat/info.json new file mode 100644 index 000000000000..77bb288dd667 --- /dev/null +++ b/keyboards/ziggurat/info.json @@ -0,0 +1,414 @@ +{ + "keyboard_name": "ziggurat", + "url": "", + "maintainer": "kb-elmo", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2.5, "y":0}, + {"x":3.5, "y":0}, + {"x":4.5, "y":0}, + {"x":5.5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.5, "y":0}, + {"x":10.5, "y":0}, + {"x":11.5, "y":0}, + {"x":12.5, "y":0}, + {"x":13.5, "y":0}, + {"x":14.5, "y":0}, + {"x":15.5, "y":0}, + {"x":16.5, "y":0}, + {"x":17.5, "y":0}, + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2.5, "y":1, "w":1.5}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":6, "y":1}, + {"x":7, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + {"x":12, "y":1}, + {"x":13, "y":1}, + {"x":14, "y":1}, + {"x":15, "y":1}, + {"x":16, "y":1, "w":1.5}, + {"x":17.5, "y":1}, + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2.5, "y":2, "w":1.75}, + {"x":4.25, "y":2}, + {"x":5.25, "y":2}, + {"x":6.25, "y":2}, + {"x":7.25, "y":2}, + {"x":8.25, "y":2}, + {"x":9.25, "y":2}, + {"x":10.25, "y":2}, + {"x":11.25, "y":2}, + {"x":12.25, "y":2}, + {"x":13.25, "y":2}, + {"x":14.25, "y":2}, + {"x":15.25, "y":2, "w":2.25}, + {"x":17.5, "y":2}, + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2.5, "y":3, "w":1.25}, + {"x":3.75, "y":3}, + {"x":4.75, "y":3}, + {"x":5.75, "y":3}, + {"x":6.75, "y":3}, + {"x":7.75, "y":3}, + {"x":8.75, "y":3}, + {"x":9.75, "y":3}, + {"x":10.75, "y":3}, + {"x":11.75, "y":3}, + {"x":12.75, "y":3}, + {"x":13.75, "y":3}, + {"x":14.75, "y":3, "w":1.75}, + {"x":16.5, "y":3}, + {"x":17.5, "y":3}, + {"x":0, "y":4}, + {"x":1, "y":4}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":1.25}, + {"x":5, "y":4, "w":1.25}, + {"x":6.25, "y":4, "w":6.25}, + {"x":12.5, "y":4, "w":1.25}, + {"x":13.75, "y":4, "w":1.25}, + {"x":15.5, "y":4}, + {"x":16.5, "y":4}, + {"x":17.5, "y":4} + ] + }, + "LAYOUT_ansi": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2.5, "y":0}, + {"x":3.5, "y":0}, + {"x":4.5, "y":0}, + {"x":5.5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.5, "y":0}, + {"x":10.5, "y":0}, + {"x":11.5, "y":0}, + {"x":12.5, "y":0}, + {"x":13.5, "y":0}, + {"x":14.5, "y":0}, + {"x":15.5, "y":0, "w":2}, + {"x":17.5, "y":0}, + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2.5, "y":1, "w":1.5}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":6, "y":1}, + {"x":7, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + {"x":12, "y":1}, + {"x":13, "y":1}, + {"x":14, "y":1}, + {"x":15, "y":1}, + {"x":16, "y":1, "w":1.5}, + {"x":17.5, "y":1}, + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2.5, "y":2, "w":1.75}, + {"x":4.25, "y":2}, + {"x":5.25, "y":2}, + {"x":6.25, "y":2}, + {"x":7.25, "y":2}, + {"x":8.25, "y":2}, + {"x":9.25, "y":2}, + {"x":10.25, "y":2}, + {"x":11.25, "y":2}, + {"x":12.25, "y":2}, + {"x":13.25, "y":2}, + {"x":14.25, "y":2}, + {"x":15.25, "y":2, "w":2.25}, + {"x":17.5, "y":2}, + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2.5, "y":3, "w":2.25}, + {"x":4.75, "y":3}, + {"x":5.75, "y":3}, + {"x":6.75, "y":3}, + {"x":7.75, "y":3}, + {"x":8.75, "y":3}, + {"x":9.75, "y":3}, + {"x":10.75, "y":3}, + {"x":11.75, "y":3}, + {"x":12.75, "y":3}, + {"x":13.75, "y":3}, + {"x":14.75, "y":3, "w":1.75}, + {"x":16.5, "y":3}, + {"x":17.5, "y":3}, + {"x":0, "y":4}, + {"x":1, "y":4}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":1.25}, + {"x":5, "y":4, "w":1.25}, + {"x":6.25, "y":4, "w":6.25}, + {"x":12.5, "y":4, "w":1.25}, + {"x":13.75, "y":4, "w":1.25}, + {"x":15.5, "y":4}, + {"x":16.5, "y":4}, + {"x":17.5, "y":4} + ] + }, + "LAYOUT_ansi_tsangan": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2.5, "y":0}, + {"x":3.5, "y":0}, + {"x":4.5, "y":0}, + {"x":5.5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.5, "y":0}, + {"x":10.5, "y":0}, + {"x":11.5, "y":0}, + {"x":12.5, "y":0}, + {"x":13.5, "y":0}, + {"x":14.5, "y":0}, + {"x":15.5, "y":0, "w":2}, + {"x":17.5, "y":0}, + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2.5, "y":1, "w":1.5}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":6, "y":1}, + {"x":7, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + {"x":12, "y":1}, + {"x":13, "y":1}, + {"x":14, "y":1}, + {"x":15, "y":1}, + {"x":16, "y":1, "w":1.5}, + {"x":17.5, "y":1}, + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2.5, "y":2, "w":1.75}, + {"x":4.25, "y":2}, + {"x":5.25, "y":2}, + {"x":6.25, "y":2}, + {"x":7.25, "y":2}, + {"x":8.25, "y":2}, + {"x":9.25, "y":2}, + {"x":10.25, "y":2}, + {"x":11.25, "y":2}, + {"x":12.25, "y":2}, + {"x":13.25, "y":2}, + {"x":14.25, "y":2}, + {"x":15.25, "y":2, "w":2.25}, + {"x":17.5, "y":2}, + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2.5, "y":3, "w":2.25}, + {"x":4.75, "y":3}, + {"x":5.75, "y":3}, + {"x":6.75, "y":3}, + {"x":7.75, "y":3}, + {"x":8.75, "y":3}, + {"x":9.75, "y":3}, + {"x":10.75, "y":3}, + {"x":11.75, "y":3}, + {"x":12.75, "y":3}, + {"x":13.75, "y":3}, + {"x":14.75, "y":3, "w":1.75}, + {"x":16.5, "y":3}, + {"x":17.5, "y":3}, + {"x":0, "y":4}, + {"x":1, "y":4}, + {"x":2.5, "y":4, "w":1.5}, + {"x":4, "y":4}, + {"x":5, "y":4, "w":1.5}, + {"x":6.5, "y":4, "w":7}, + {"x":13.5, "y":4, "w":1.5}, + {"x":15.5, "y":4}, + {"x":16.5, "y":4}, + {"x":17.5, "y":4} + ] + }, + "LAYOUT_iso": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2.5, "y":0}, + {"x":3.5, "y":0}, + {"x":4.5, "y":0}, + {"x":5.5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.5, "y":0}, + {"x":10.5, "y":0}, + {"x":11.5, "y":0}, + {"x":12.5, "y":0}, + {"x":13.5, "y":0}, + {"x":14.5, "y":0}, + {"x":15.5, "y":0, "w":2}, + {"x":17.5, "y":0}, + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2.5, "y":1, "w":1.5}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":6, "y":1}, + {"x":7, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + {"x":12, "y":1}, + {"x":13, "y":1}, + {"x":14, "y":1}, + {"x":15, "y":1}, + {"x":17.5, "y":1}, + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2.5, "y":2, "w":1.75}, + {"x":4.25, "y":2}, + {"x":5.25, "y":2}, + {"x":6.25, "y":2}, + {"x":7.25, "y":2}, + {"x":8.25, "y":2}, + {"x":9.25, "y":2}, + {"x":10.25, "y":2}, + {"x":11.25, "y":2}, + {"x":12.25, "y":2}, + {"x":13.25, "y":2}, + {"x":14.25, "y":2}, + {"x":15.25, "y":2}, + {"x":16.25, "y":1, "w":1.25, "h":2}, + {"x":17.5, "y":2}, + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2.5, "y":3, "w":1.25}, + {"x":3.75, "y":3}, + {"x":4.75, "y":3}, + {"x":5.75, "y":3}, + {"x":6.75, "y":3}, + {"x":7.75, "y":3}, + {"x":8.75, "y":3}, + {"x":9.75, "y":3}, + {"x":10.75, "y":3}, + {"x":11.75, "y":3}, + {"x":12.75, "y":3}, + {"x":13.75, "y":3}, + {"x":14.75, "y":3, "w":1.75}, + {"x":16.5, "y":3}, + {"x":17.5, "y":3}, + {"x":0, "y":4}, + {"x":1, "y":4}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":1.25}, + {"x":5, "y":4, "w":1.25}, + {"x":6.25, "y":4, "w":6.25}, + {"x":12.5, "y":4, "w":1.25}, + {"x":13.75, "y":4, "w":1.25}, + {"x":15.5, "y":4}, + {"x":16.5, "y":4}, + {"x":17.5, "y":4} + ] + }, + "LAYOUT_iso_tsangan": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2.5, "y":0}, + {"x":3.5, "y":0}, + {"x":4.5, "y":0}, + {"x":5.5, "y":0}, + {"x":6.5, "y":0}, + {"x":7.5, "y":0}, + {"x":8.5, "y":0}, + {"x":9.5, "y":0}, + {"x":10.5, "y":0}, + {"x":11.5, "y":0}, + {"x":12.5, "y":0}, + {"x":13.5, "y":0}, + {"x":14.5, "y":0}, + {"x":15.5, "y":0, "w":2}, + {"x":17.5, "y":0}, + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2.5, "y":1, "w":1.5}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":6, "y":1}, + {"x":7, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1}, + {"x":10, "y":1}, + {"x":11, "y":1}, + {"x":12, "y":1}, + {"x":13, "y":1}, + {"x":14, "y":1}, + {"x":15, "y":1}, + {"x":17.5, "y":1}, + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2.5, "y":2, "w":1.75}, + {"x":4.25, "y":2}, + {"x":5.25, "y":2}, + {"x":6.25, "y":2}, + {"x":7.25, "y":2}, + {"x":8.25, "y":2}, + {"x":9.25, "y":2}, + {"x":10.25, "y":2}, + {"x":11.25, "y":2}, + {"x":12.25, "y":2}, + {"x":13.25, "y":2}, + {"x":14.25, "y":2}, + {"x":15.25, "y":2}, + {"x":16.25, "y":1, "w":1.25, "h":2}, + {"x":17.5, "y":2}, + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2.5, "y":3, "w":1.25}, + {"x":3.75, "y":3}, + {"x":4.75, "y":3}, + {"x":5.75, "y":3}, + {"x":6.75, "y":3}, + {"x":7.75, "y":3}, + {"x":8.75, "y":3}, + {"x":9.75, "y":3}, + {"x":10.75, "y":3}, + {"x":11.75, "y":3}, + {"x":12.75, "y":3}, + {"x":13.75, "y":3}, + {"x":14.75, "y":3, "w":1.75}, + {"x":16.5, "y":3}, + {"x":17.5, "y":3}, + {"x":0, "y":4}, + {"x":1, "y":4}, + {"x":2.5, "y":4, "w":1.5}, + {"x":4, "y":4}, + {"x":5, "y":4, "w":1.5}, + {"x":6.5, "y":4, "w":7}, + {"x":13.5, "y":4, "w":1.5}, + {"x":15.5, "y":4}, + {"x":16.5, "y":4}, + {"x":17.5, "y":4} + ] + } + } +} diff --git a/keyboards/ziggurat/keymaps/default/keymap.c b/keyboards/ziggurat/keymaps/default/keymap.c new file mode 100644 index 000000000000..5a06fecca57a --- /dev/null +++ b/keyboards/ziggurat/keymaps/default/keymap.c @@ -0,0 +1,33 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ansi( + KC_F1, KC_F2, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, + KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_ansi( + KC_TRNS, KC_TRNS, KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/ziggurat/keymaps/iso/keymap.c b/keyboards/ziggurat/keymaps/iso/keymap.c new file mode 100644 index 000000000000..c994adb55f74 --- /dev/null +++ b/keyboards/ziggurat/keymaps/iso/keymap.c @@ -0,0 +1,33 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_iso( + KC_F1, KC_F2, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_HOME, + KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP, + KC_F7, KC_F8, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_iso( + KC_TRNS, KC_TRNS, KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/ziggurat/keymaps/via/keymap.c b/keyboards/ziggurat/keymaps/via/keymap.c new file mode 100644 index 000000000000..92d3d80ed47d --- /dev/null +++ b/keyboards/ziggurat/keymaps/via/keymap.c @@ -0,0 +1,47 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_F1, KC_F2, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_DEL, + KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, + KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_F7, KC_F8, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/ziggurat/keymaps/via/rules.mk b/keyboards/ziggurat/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/ziggurat/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/ziggurat/readme.md b/keyboards/ziggurat/readme.md new file mode 100644 index 000000000000..85f88b536177 --- /dev/null +++ b/keyboards/ziggurat/readme.md @@ -0,0 +1,25 @@ +# Ziggurat + + + +An extended 65% keyboard + +* Keyboard Maintainer: [kb-elmo](https://github.com/kb-elmo) +* Hardware Supported: Ziggurat PCB +* Hardware Availability: future groupbuy + +Make example for this keyboard (after setting up your build environment): + + make ziggurat:default + +Flashing example for this keyboard: + + make ziggurat: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 the top left key and plug in the keyboard +* **Physical reset button**: Press the button labeled "SW1" on the back of the PCB +* **Keycode in layout**: Press the key mapped to `RESET` if it is available diff --git a/keyboards/ziggurat/rules.mk b/keyboards/ziggurat/rules.mk new file mode 100644 index 000000000000..107db26574a5 --- /dev/null +++ b/keyboards/ziggurat/rules.mk @@ -0,0 +1,19 @@ +# MCU name +MCU = at90usb1286 + +# 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 = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/ziggurat/ziggurat.c b/keyboards/ziggurat/ziggurat.c new file mode 100644 index 000000000000..11afa56b76fc --- /dev/null +++ b/keyboards/ziggurat/ziggurat.c @@ -0,0 +1,17 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "ziggurat.h" diff --git a/keyboards/ziggurat/ziggurat.h b/keyboards/ziggurat/ziggurat.h new file mode 100644 index 000000000000..9a8b51b99853 --- /dev/null +++ b/keyboards/ziggurat/ziggurat.h @@ -0,0 +1,91 @@ +/* Copyright 2021 kb-elmo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "quantum.h" + +#define ____ KC_NO + +#define LAYOUT_all( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, k017, \ + k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k116, k117, \ + k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k215, k217, \ + k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k314, k316, k317, \ + k400, k401, k402, k403, k404, k408, k412, k413, k415, k416, k417 \ +) { \ + { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, k017 }, \ + { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, ____, k116, k117 }, \ + { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, ____, k215, ____, k217 }, \ + { k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k314, ____, k316, k317 }, \ + { k400, k401, k402, k403, k404, ____, ____, ____, k408, ____, ____, ____, k412, k413, ____, k415, k416, k417 }, \ +} + +#define LAYOUT_ansi( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k016, k017, \ + k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k116, k117, \ + k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k215, k217, \ + k300, k301, k302, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k314, k316, k317, \ + k400, k401, k402, k403, k404, k408, k412, k413, k415, k416, k417 \ +) { \ + { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, ____, k016, k017 }, \ + { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, ____, k116, k117 }, \ + { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, ____, k215, ____, k217 }, \ + { k300, k301, k302, ____, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k314, ____, k316, k317 }, \ + { k400, k401, k402, k403, k404, ____, ____, ____, k408, ____, ____, ____, k412, k413, ____, k415, k416, k417 }, \ +} + +#define LAYOUT_ansi_tsangan( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k016, k017, \ + k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k116, k117, \ + k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k215, k217, \ + k300, k301, k302, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k314, k316, k317, \ + k400, k401, k402, k403, k404, k408, k413, k415, k416, k417 \ +) { \ + { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, ____, k016, k017 }, \ + { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, ____, k116, k117 }, \ + { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, ____, k215, ____, k217 }, \ + { k300, k301, k302, ____, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k314, ____, k316, k317 }, \ + { k400, k401, k402, k403, k404, ____, ____, ____, k408, ____, ____, ____, ____, k413, ____, k415, k416, k417 }, \ +} + +#define LAYOUT_iso( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k016, k017, \ + k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k117, \ + k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k215, k116, k217, \ + k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k314, k316, k317, \ + k400, k401, k402, k403, k404, k408, k412, k413, k415, k416, k417 \ +) { \ + { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, ____, k016, k017 }, \ + { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, ____, k116, k117 }, \ + { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, ____, k215, ____, k217 }, \ + { k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k314, ____, k316, k317 }, \ + { k400, k401, k402, k403, k404, ____, ____, ____, k408, ____, ____, ____, k412, k413, ____, k415, k416, k417 }, \ +} + +#define LAYOUT_iso_tsangan( \ + k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k016, k017, \ + k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k117, \ + k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k215, k116, k217, \ + k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k314, k316, k317, \ + k400, k401, k402, k403, k404, k408, k413, k415, k416, k417 \ +) { \ + { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, ____, k016, k017 }, \ + { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, ____, k116, k117 }, \ + { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, ____, k215, ____, k217 }, \ + { k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k314, ____, k316, k317 }, \ + { k400, k401, k402, k403, k404, ____, ____, ____, k408, ____, ____, ____, ____, k413, ____, k415, k416, k417 }, \ +} diff --git a/keyboards/zinc/info.json b/keyboards/zinc/info.json index 740f31ae6e1d..8064e94e2fe3 100644 --- a/keyboards/zinc/info.json +++ b/keyboards/zinc/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Zinc", "url": "https://github.com/monksoffunk/", "maintainer": "monksoffunk", - "width": 15, - "height": 5, "layouts": { "LAYOUT": { - "key_count": 48, "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":13, "y":2}, {"x":14, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}, {"x":12, "y":3}, {"x":13, "y":3}, {"x":14, "y":3}] } } diff --git a/keyboards/zinc/keymaps/default/rules.mk b/keyboards/zinc/keymaps/default/rules.mk index 7e3286f0fdc0..20169cc0d6dc 100644 --- a/keyboards/zinc/keymaps/default/rules.mk +++ b/keyboards/zinc/keymaps/default/rules.mk @@ -2,19 +2,17 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. SWAP_HANDS_ENABLE = no # Enable one-hand typing +LTO_ENABLE = no # if firmware size over limit, try this option define ZINC_CUSTOMISE_MSG $(info Zinc customize) @@ -36,7 +34,6 @@ RGB_MATRIX = no # RGB LED Matrix RGB_MATRIX_SPLIT_RIGHT = no # RGB Matrix for RIGHT Hand LED_ANIMATIONS = yes # LED animations IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone) -Link_Time_Optimization = no # if firmware size over limit, try this option #### LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE. #### Do not enable these with audio at the same time. @@ -122,14 +119,6 @@ ifeq ($(strip $(RGB_MATRIX_SPLIT_RIGHT)), yes) OPT_DEFS += -DRGB_MATRIX_SPLIT_RIGHT endif -ifeq ($(strip $(Link_Time_Optimization)),yes) - EXTRAFLAGS += -flto -DUSE_Link_Time_Optimization -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 - - # Uncomment these for debugging # $(info -- RGBLIGHT_ENABLE=$(RGBLIGHT_ENABLE)) # $(info -- OPT_DEFS=$(OPT_DEFS)) diff --git a/keyboards/zinc/keymaps/ginjake/rules.mk b/keyboards/zinc/keymaps/ginjake/rules.mk index 2cb59fe8b85e..f2cb3633c6eb 100644 --- a/keyboards/zinc/keymaps/ginjake/rules.mk +++ b/keyboards/zinc/keymaps/ginjake/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 @@ -15,6 +15,7 @@ UNICODE_ENABLE = no # Unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. SWAP_HANDS_ENABLE = no # Enable one-hand typing +LTO_ENABLE = no # if firmware size over limit, try this option define ZINC_CUSTOMISE_MSG $(info Zinc customize) @@ -33,7 +34,6 @@ LED_BOTH_ENABLE = no # LED backlight and underglow LED_RGB_CONT = no # LED continuous backlight or/and underglow between left Zinc and right Zinc LED_ANIMATIONS = yes # LED animations IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone) -Link_Time_Optimization = no # if firmware size over limit, try this option #### LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE. #### Do not enable these with audio at the same time. @@ -104,10 +104,6 @@ ifeq ($(strip $(LED_ANIMATIONS)), yes) endif -ifeq ($(strip $(Link_Time_Optimization)),yes) - EXTRAFLAGS += -flto -DUSE_Link_Time_Optimization -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/zinc/keymaps/monks/rules.mk b/keyboards/zinc/keymaps/monks/rules.mk index c1b98deadaed..46646f919ce2 100644 --- a/keyboards/zinc/keymaps/monks/rules.mk +++ b/keyboards/zinc/keymaps/monks/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 @@ -15,6 +15,7 @@ UNICODE_ENABLE = no # Unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. SWAP_HANDS_ENABLE = no # Enable one-hand typing +LTO_ENABLE = no # if firmware size over limit, try this option define ZINC_CUSTOMISE_MSG $(info Zinc customize) @@ -33,7 +34,6 @@ LED_BOTH_ENABLE = no # LED backlight and underglow LED_RGB_CONT = no # LED continuous backlight or/and underglow between left Zinc and right Zinc LED_ANIMATIONS = yes # LED animations IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone) -Link_Time_Optimization = no # if firmware size over limit, try this option #### LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE. #### Do not enable these with audio at the same time. @@ -104,10 +104,6 @@ ifeq ($(strip $(LED_ANIMATIONS)), yes) endif -ifeq ($(strip $(Link_Time_Optimization)),yes) - EXTRAFLAGS += -flto -DUSE_Link_Time_Optimization -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/zinc/keymaps/toshi0383/rules.mk b/keyboards/zinc/keymaps/toshi0383/rules.mk index 530271f4375d..9fef6963a1e0 100644 --- a/keyboards/zinc/keymaps/toshi0383/rules.mk +++ b/keyboards/zinc/keymaps/toshi0383/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 @@ -15,6 +15,7 @@ UNICODE_ENABLE = no # Unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. SWAP_HANDS_ENABLE = no # Enable one-hand typing +LTO_ENABLE = no # if firmware size over limit, try this option define ZINC_CUSTOMISE_MSG $(info Zinc customize) @@ -36,7 +37,6 @@ RGB_MATRIX = no # RGB LED Matrix RGB_MATRIX_SPLIT_RIGHT = no # RGB Matrix for RIGHT Hand LED_ANIMATIONS = yes # LED animations IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone) -Link_Time_Optimization = no # if firmware size over limit, try this option #### LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE. #### Do not enable these with audio at the same time. @@ -122,10 +122,6 @@ ifeq ($(strip $(RGB_MATRIX_SPLIT_RIGHT)), yes) OPT_DEFS += -DRGB_MATRIX_SPLIT_RIGHT endif -ifeq ($(strip $(Link_Time_Optimization)),yes) - EXTRAFLAGS += -flto -DUSE_Link_Time_Optimization -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/zinc/rev1/config.h b/keyboards/zinc/rev1/config.h index 0209de262a6c..a0bc34ece4ae 100644 --- a/keyboards/zinc/rev1/config.h +++ b/keyboards/zinc/rev1/config.h @@ -1,6 +1,5 @@ /* -Copyright 2012 Jun Wako -Copyright 2015 Jack Humbert +Copyright 2018 monksoffunk This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -59,76 +58,6 @@ along with this program. If not, see . /* ws2812 RGB LED */ #define RGB_DI_PIN D3 -// RGB LED support -//#define RGBLIGHT_ANIMATIONS : see ./rules.mk: LED_ANIMATIONS = yes or no -// see ./rules.mk: LED_BACK_ENABLE or LED_UNDERGLOW_ENABLE set yes -#ifdef RGBLIGHT_ENABLE - #define RGBLIGHT_SPLIT - #ifdef RGBLED_BACK - #ifdef RGBLED_CONT - #define RGBLED_NUM 48 - #define RGBLED_SPLIT { 24, 24 } - #else - #define RGBLED_NUM 24 - #endif - #else - #ifdef RGBLED_BOTH - #ifdef RGBLED_CONT - #define RGBLED_NUM 60 - #define RGBLED_SPLIT { 30, 30 } -// #define RGBLIGHT_LED_MAP {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29} - #else - #define RGBLED_NUM 30 - #endif - #else - #ifdef RGBLED_CONT - #define RGBLED_NUM 12 - #define RGBLED_SPLIT { 6, 6 } - #else - #define RGBLED_NUM 6 - #endif - #endif - #endif -#endif - -#ifndef IOS_DEVICE_ENABLE - #if (RGBLED_NUM <= 6) || (defined(RGBLED_CONT) && (RGBLED_NUM <= 12)) - #define RGBLIGHT_LIMIT_VAL 255 - #else - #if (RGBLED_NUM <= 16) || (defined(RGBLED_CONT) && (RGBLED_NUM <= 32)) - #define RGBLIGHT_LIMIT_VAL 130 - #else - #define RGBLIGHT_LIMIT_VAL 120 - #endif - #endif - #define RGBLIGHT_VAL_STEP 17 -#else - #if (RGBLED_NUM <= 6) || (defined(RGBLED_CONT) && (RGBLED_NUM <= 12)) - #define RGBLIGHT_LIMIT_VAL 90 - #else - #if (RGBLED_NUM <= 16) || (defined(RGBLED_CONT) && (RGBLED_NUM <= 32)) - #define RGBLIGHT_LIMIT_VAL 45 - #else - #define RGBLIGHT_LIMIT_VAL 35 - #endif - #endif - #define RGBLIGHT_VAL_STEP 4 -#endif -#define RGBLIGHT_HUE_STEP 10 -#define RGBLIGHT_SAT_STEP 17 - -#if defined(RGBLIGHT_ENABLE) && !defined(IOS_DEVICE_ENABLE) -// USB_MAX_POWER_CONSUMPTION value -// 120 RGBoff -// 330 RGB 6 -// 300 RGB 32 - #define USB_MAX_POWER_CONSUMPTION 400 -#else - // fix iPhone and iPad power adapter issue - // iOS device need lessthan 100 - #define USB_MAX_POWER_CONSUMPTION 100 -#endif - /* * Feature disable options * These options are also useful to firmware size reduction. diff --git a/keyboards/zinc/rev1/info.json b/keyboards/zinc/rev1/info.json index 0ca8acded9e4..1ed5f9130ad8 100644 --- a/keyboards/zinc/rev1/info.json +++ b/keyboards/zinc/rev1/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Zinc rev.1", "url": "https://github.com/monksoffunk/zinc", "maintainer": "monksoffunk", - "width": 15, - "height": 4, "layouts": { "LAYOUT": { - "key_count": 48, "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":13, "y":2}, {"x":14, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}, {"x":12, "y":3}, {"x":13, "y":3}, {"x":14, "y":3}] } } diff --git a/keyboards/zinc/rev1/post_config.h b/keyboards/zinc/rev1/post_config.h new file mode 100644 index 000000000000..b0254f6babbd --- /dev/null +++ b/keyboards/zinc/rev1/post_config.h @@ -0,0 +1,86 @@ +/* +Copyright 2021 monksoffunk + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +// RGB LED support +//#define RGBLIGHT_ANIMATIONS : see ./rules.mk: LED_ANIMATIONS = yes or no +// see ./rules.mk: LED_BACK_ENABLE or LED_UNDERGLOW_ENABLE set yes +#ifdef RGBLIGHT_ENABLE + #define RGBLIGHT_SPLIT + #ifdef RGBLED_BACK + #ifdef RGBLED_CONT + #define RGBLED_NUM 48 + #define RGBLED_SPLIT { 24, 24 } + #else + #define RGBLED_NUM 24 + #endif + #else + #ifdef RGBLED_BOTH + #ifdef RGBLED_CONT + #define RGBLED_NUM 60 + #define RGBLED_SPLIT { 30, 30 } +// #define RGBLIGHT_LED_MAP {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29} + #else + #define RGBLED_NUM 30 + #endif + #else + #ifdef RGBLED_CONT + #define RGBLED_NUM 12 + #define RGBLED_SPLIT { 6, 6 } + #else + #define RGBLED_NUM 6 + #endif + #endif + #endif +#endif + +#ifndef IOS_DEVICE_ENABLE + #if (RGBLED_NUM <= 6) || (defined(RGBLED_CONT) && (RGBLED_NUM <= 12)) + #define RGBLIGHT_LIMIT_VAL 255 + #else + #if (RGBLED_NUM <= 16) || (defined(RGBLED_CONT) && (RGBLED_NUM <= 32)) + #define RGBLIGHT_LIMIT_VAL 130 + #else + #define RGBLIGHT_LIMIT_VAL 120 + #endif + #endif + #define RGBLIGHT_VAL_STEP 17 +#else + #if (RGBLED_NUM <= 6) || (defined(RGBLED_CONT) && (RGBLED_NUM <= 12)) + #define RGBLIGHT_LIMIT_VAL 90 + #else + #if (RGBLED_NUM <= 16) || (defined(RGBLED_CONT) && (RGBLED_NUM <= 32)) + #define RGBLIGHT_LIMIT_VAL 45 + #else + #define RGBLIGHT_LIMIT_VAL 35 + #endif + #endif + #define RGBLIGHT_VAL_STEP 4 +#endif +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 17 + +#if defined(RGBLIGHT_ENABLE) && !defined(IOS_DEVICE_ENABLE) +// USB_MAX_POWER_CONSUMPTION value +// 120 RGBoff +// 330 RGB 6 +// 300 RGB 32 + #define USB_MAX_POWER_CONSUMPTION 400 +#else + // fix iPhone and iPad power adapter issue + // iOS device need lessthan 100 + #define USB_MAX_POWER_CONSUMPTION 100 +#endif diff --git a/keyboards/zinc/rev1/rev1.c b/keyboards/zinc/rev1/rev1.c index a9c2cfdbaca9..139919d5a60f 100644 --- a/keyboards/zinc/rev1/rev1.c +++ b/keyboards/zinc/rev1/rev1.c @@ -1,5 +1 @@ #include "zinc.h" - -void matrix_init_kb(void) { - matrix_init_user(); -}; diff --git a/keyboards/zinc/reva/config.h b/keyboards/zinc/reva/config.h index aa562fea1d4b..378fd9e6d9fa 100644 --- a/keyboards/zinc/reva/config.h +++ b/keyboards/zinc/reva/config.h @@ -1,6 +1,5 @@ /* -Copyright 2012 Jun Wako -Copyright 2015 Jack Humbert +Copyright 2018 monksoffunk This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -59,76 +58,6 @@ along with this program. If not, see . /* ws2812 RGB LED */ #define RGB_DI_PIN D3 -// RGB LED support -//#define RGBLIGHT_ANIMATIONS : see ./rules.mk: LED_ANIMATIONS = yes or no -// see ./rules.mk: LED_BACK_ENABLE or LED_UNDERGLOW_ENABLE set yes -#ifdef RGBLIGHT_ENABLE - #define RGBLIGHT_SPLIT - #ifdef RGBLED_BACK - #ifdef RGBLED_CONT - #define RGBLED_NUM 48 - #define RGBLED_SPLIT { 24, 24 } - #else - #define RGBLED_NUM 24 - #endif - #else - #ifdef RGBLED_BOTH - #ifdef RGBLED_CONT - #define RGBLED_NUM 60 - #define RGBLED_SPLIT { 30, 30 } -// #define RGBLIGHT_LED_MAP {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29} - #else - #define RGBLED_NUM 30 - #endif - #else - #ifdef RGBLED_CONT - #define RGBLED_NUM 12 - #define RGBLED_SPLIT { 6, 6 } - #else - #define RGBLED_NUM 6 - #endif - #endif - #endif -#endif - -#ifndef IOS_DEVICE_ENABLE - #if (RGBLED_NUM <= 6) || (defined(RGBLED_CONT) && (RGBLED_NUM <= 12)) - #define RGBLIGHT_LIMIT_VAL 255 - #else - #if (RGBLED_NUM <= 16) || (defined(RGBLED_CONT) && (RGBLED_NUM <= 32)) - #define RGBLIGHT_LIMIT_VAL 130 - #else - #define RGBLIGHT_LIMIT_VAL 120 - #endif - #endif - #define RGBLIGHT_VAL_STEP 17 -#else - #if (RGBLED_NUM <= 6) || (defined(RGBLED_CONT) && (RGBLED_NUM <= 12)) - #define RGBLIGHT_LIMIT_VAL 90 - #else - #if (RGBLED_NUM <= 16) || (defined(RGBLED_CONT) && (RGBLED_NUM <= 32)) - #define RGBLIGHT_LIMIT_VAL 45 - #else - #define RGBLIGHT_LIMIT_VAL 35 - #endif - #endif - #define RGBLIGHT_VAL_STEP 4 -#endif -#define RGBLIGHT_HUE_STEP 10 -#define RGBLIGHT_SAT_STEP 17 - -#if defined(RGBLIGHT_ENABLE) && !defined(IOS_DEVICE_ENABLE) -// USB_MAX_POWER_CONSUMPTION value -// 120 RGBoff -// 330 RGB 6 -// 300 RGB 32 - #define USB_MAX_POWER_CONSUMPTION 400 -#else - // fix iPhone and iPad power adapter issue - // iOS device need lessthan 100 - #define USB_MAX_POWER_CONSUMPTION 100 -#endif - /* * Feature disable options * These options are also useful to firmware size reduction. diff --git a/keyboards/zinc/reva/info.json b/keyboards/zinc/reva/info.json index 138c79068b46..de1d2933ec24 100644 --- a/keyboards/zinc/reva/info.json +++ b/keyboards/zinc/reva/info.json @@ -2,11 +2,8 @@ "keyboard_name": "Zinc rev.A", "url": "https://github.com/monksoffunk/zinc", "maintainer": "monksoffunk", - "width": 15, - "height": 4, "layouts": { "LAYOUT": { - "key_count": 48, "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":13, "y":2}, {"x":14, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}, {"x":12, "y":3}, {"x":13, "y":3}, {"x":14, "y":3}] } } diff --git a/keyboards/zinc/reva/post_config.h b/keyboards/zinc/reva/post_config.h new file mode 100644 index 000000000000..b0254f6babbd --- /dev/null +++ b/keyboards/zinc/reva/post_config.h @@ -0,0 +1,86 @@ +/* +Copyright 2021 monksoffunk + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +// RGB LED support +//#define RGBLIGHT_ANIMATIONS : see ./rules.mk: LED_ANIMATIONS = yes or no +// see ./rules.mk: LED_BACK_ENABLE or LED_UNDERGLOW_ENABLE set yes +#ifdef RGBLIGHT_ENABLE + #define RGBLIGHT_SPLIT + #ifdef RGBLED_BACK + #ifdef RGBLED_CONT + #define RGBLED_NUM 48 + #define RGBLED_SPLIT { 24, 24 } + #else + #define RGBLED_NUM 24 + #endif + #else + #ifdef RGBLED_BOTH + #ifdef RGBLED_CONT + #define RGBLED_NUM 60 + #define RGBLED_SPLIT { 30, 30 } +// #define RGBLIGHT_LED_MAP {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29} + #else + #define RGBLED_NUM 30 + #endif + #else + #ifdef RGBLED_CONT + #define RGBLED_NUM 12 + #define RGBLED_SPLIT { 6, 6 } + #else + #define RGBLED_NUM 6 + #endif + #endif + #endif +#endif + +#ifndef IOS_DEVICE_ENABLE + #if (RGBLED_NUM <= 6) || (defined(RGBLED_CONT) && (RGBLED_NUM <= 12)) + #define RGBLIGHT_LIMIT_VAL 255 + #else + #if (RGBLED_NUM <= 16) || (defined(RGBLED_CONT) && (RGBLED_NUM <= 32)) + #define RGBLIGHT_LIMIT_VAL 130 + #else + #define RGBLIGHT_LIMIT_VAL 120 + #endif + #endif + #define RGBLIGHT_VAL_STEP 17 +#else + #if (RGBLED_NUM <= 6) || (defined(RGBLED_CONT) && (RGBLED_NUM <= 12)) + #define RGBLIGHT_LIMIT_VAL 90 + #else + #if (RGBLED_NUM <= 16) || (defined(RGBLED_CONT) && (RGBLED_NUM <= 32)) + #define RGBLIGHT_LIMIT_VAL 45 + #else + #define RGBLIGHT_LIMIT_VAL 35 + #endif + #endif + #define RGBLIGHT_VAL_STEP 4 +#endif +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 17 + +#if defined(RGBLIGHT_ENABLE) && !defined(IOS_DEVICE_ENABLE) +// USB_MAX_POWER_CONSUMPTION value +// 120 RGBoff +// 330 RGB 6 +// 300 RGB 32 + #define USB_MAX_POWER_CONSUMPTION 400 +#else + // fix iPhone and iPad power adapter issue + // iOS device need lessthan 100 + #define USB_MAX_POWER_CONSUMPTION 100 +#endif diff --git a/keyboards/zinc/reva/reva.c b/keyboards/zinc/reva/reva.c index a9c2cfdbaca9..139919d5a60f 100644 --- a/keyboards/zinc/reva/reva.c +++ b/keyboards/zinc/reva/reva.c @@ -1,5 +1 @@ #include "zinc.h" - -void matrix_init_kb(void) { - matrix_init_user(); -}; diff --git a/keyboards/zinc/rules.mk b/keyboards/zinc/rules.mk index 45928af88c25..4251103e67a9 100644 --- a/keyboards/zinc/rules.mk +++ b/keyboards/zinc/rules.mk @@ -2,32 +2,21 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = caterina # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = no # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend RGB_MATRIX_ENABLE = no RGB_MATRIX_DRIVER = WS2812 diff --git a/keyboards/zj68/info.json b/keyboards/zj68/info.json index 60dcfd3f742b..8495904dc415 100644 --- a/keyboards/zj68/info.json +++ b/keyboards/zj68/info.json @@ -1,8 +1,6 @@ { "keyboard_name": "ZJ68", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/zj68/rules.mk b/keyboards/zj68/rules.mk index b4ed641be5c8..bf0c5592f961 100644 --- a/keyboards/zj68/rules.mk +++ b/keyboards/zj68/rules.mk @@ -2,20 +2,13 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 @@ -23,7 +16,6 @@ COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work AUDIO_ENABLE = no -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend RGBLIGHT_ENABLE = no LAYOUTS = 65_ansi diff --git a/keyboards/zj68/zj68.c b/keyboards/zj68/zj68.c index 960c943033b9..8de12a64528b 100644 --- a/keyboards/zj68/zj68.c +++ b/keyboards/zj68/zj68.c @@ -14,11 +14,3 @@ * along with this program. If not, see . */ #include "zj68.h" - -void matrix_init_kb(void) { - matrix_init_user(); -} - -void matrix_scan_kb(void) { - matrix_scan_user(); -} diff --git a/keyboards/zlant/config.h b/keyboards/zlant/config.h index fd5632199bfd..922c446a0161 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/info.json b/keyboards/zlant/info.json index b1f20555c035..6c58a00defb3 100644 --- a/keyboards/zlant/info.json +++ b/keyboards/zlant/info.json @@ -2,15 +2,11 @@ "keyboard_name": "Zlant", "url": "", "maintainer": "qmk", - "width": 12.75, - "height": 4, "layouts": { "LAYOUT_ortho_4x12": { - "key_count": 48, "layout": [{"label":"K000", "x":0, "y":0}, {"label":"K001", "x":1, "y":0}, {"label":"K002", "x":2, "y":0}, {"label":"K003", "x":3, "y":0}, {"label":"K004", "x":4, "y":0}, {"label":"K005", "x":5, "y":0}, {"label":"K006", "x":6, "y":0}, {"label":"K007", "x":7, "y":0}, {"label":"K008", "x":8, "y":0}, {"label":"K009", "x":9, "y":0}, {"label":"K010", "x":10, "y":0}, {"label":"K011", "x":11, "y":0}, {"label":"K100", "x":0.25, "y":1}, {"label":"K101", "x":1.25, "y":1}, {"label":"K102", "x":2.25, "y":1}, {"label":"K103", "x":3.25, "y":1}, {"label":"K104", "x":4.25, "y":1}, {"label":"K105", "x":5.25, "y":1}, {"label":"K106", "x":6.25, "y":1}, {"label":"K107", "x":7.25, "y":1}, {"label":"K108", "x":8.25, "y":1}, {"label":"K109", "x":9.25, "y":1}, {"label":"K110", "x":10.25, "y":1}, {"label":"K111", "x":11.25, "y":1}, {"label":"K200", "x":0.5, "y":2}, {"label":"K201", "x":1.5, "y":2}, {"label":"K202", "x":2.5, "y":2}, {"label":"K203", "x":3.5, "y":2}, {"label":"K204", "x":4.5, "y":2}, {"label":"K205", "x":5.5, "y":2}, {"label":"K206", "x":6.5, "y":2}, {"label":"K207", "x":7.5, "y":2}, {"label":"K208", "x":8.5, "y":2}, {"label":"K209", "x":9.5, "y":2}, {"label":"K210", "x":10.5, "y":2}, {"label":"K211", "x":11.5, "y":2}, {"label":"K300", "x":0.75, "y":3}, {"label":"K301", "x":1.75, "y":3}, {"label":"K302", "x":2.75, "y":3}, {"label":"K303", "x":3.75, "y":3}, {"label":"K304", "x":4.75, "y":3}, {"label":"K305", "x":5.75, "y":3}, {"label":"K306", "x":6.75, "y":3}, {"label":"K307", "x":7.75, "y":3}, {"label":"K308", "x":8.75, "y":3}, {"label":"K309", "x":9.75, "y":3}, {"label":"K310", "x":10.75, "y":3}, {"label":"K311", "x":11.75, "y":3}] }, "LAYOUT_planck_mit": { - "key_count": 47, "layout": [{"label":"K000", "x":0, "y":0}, {"label":"K001", "x":1, "y":0}, {"label":"K002", "x":2, "y":0}, {"label":"K003", "x":3, "y":0}, {"label":"K004", "x":4, "y":0}, {"label":"K005", "x":5, "y":0}, {"label":"K006", "x":6, "y":0}, {"label":"K007", "x":7, "y":0}, {"label":"K008", "x":8, "y":0}, {"label":"K009", "x":9, "y":0}, {"label":"K010", "x":10, "y":0}, {"label":"K011", "x":11, "y":0}, {"label":"K100", "x":0.25, "y":1}, {"label":"K101", "x":1.25, "y":1}, {"label":"K102", "x":2.25, "y":1}, {"label":"K103", "x":3.25, "y":1}, {"label":"K104", "x":4.25, "y":1}, {"label":"K105", "x":5.25, "y":1}, {"label":"K106", "x":6.25, "y":1}, {"label":"K107", "x":7.25, "y":1}, {"label":"K108", "x":8.25, "y":1}, {"label":"K109", "x":9.25, "y":1}, {"label":"K110", "x":10.25, "y":1}, {"label":"K111", "x":11.25, "y":1}, {"label":"K200", "x":0.5, "y":2}, {"label":"K201", "x":1.5, "y":2}, {"label":"K202", "x":2.5, "y":2}, {"label":"K203", "x":3.5, "y":2}, {"label":"K204", "x":4.5, "y":2}, {"label":"K205", "x":5.5, "y":2}, {"label":"K206", "x":6.5, "y":2}, {"label":"K207", "x":7.5, "y":2}, {"label":"K208", "x":8.5, "y":2}, {"label":"K209", "x":9.5, "y":2}, {"label":"K210", "x":10.5, "y":2}, {"label":"K211", "x":11.5, "y":2}, {"label":"K300", "x":0.75, "y":3}, {"label":"K301", "x":1.75, "y":3}, {"label":"K302", "x":2.75, "y":3}, {"label":"K303", "x":3.75, "y":3}, {"label":"K304", "x":4.75, "y":3, "w":1.25}, {"label":"K305", "x":6, "y":3, "w":1.5}, {"label":"K307", "x":7.5, "y":3, "w":1.25}, {"label":"K308", "x":8.75, "y":3}, {"label":"K309", "x":9.75, "y":3}, {"label":"K310", "x":10.75, "y":3}, {"label":"K311", "x":11.75, "y":3}] } } diff --git a/keyboards/zlant/rules.mk b/keyboards/zlant/rules.mk index 03d57e23ff46..2da2d59f0473 100755 --- a/keyboards/zlant/rules.mk +++ b/keyboards/zlant/rules.mk @@ -2,24 +2,16 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +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 -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 diff --git a/keyboards/zlant/zlant.h b/keyboards/zlant/zlant.h index 5fbc968ad896..86cd9fef8598 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/keyboards/zoo/wampus/info.json b/keyboards/zoo/wampus/info.json index 283d36673f4e..8125133b1d04 100644 --- a/keyboards/zoo/wampus/info.json +++ b/keyboards/zoo/wampus/info.json @@ -2,8 +2,6 @@ "keyboard_name": "zoo.haus Wampus", "url": "https://zoo.haus", "maintainer": "zoo", - "width": 19.75, - "height": 5.25, "layouts": { "LAYOUT_alice_split_bs": { "layout": [ diff --git a/keyboards/zoo/wampus/rules.mk b/keyboards/zoo/wampus/rules.mk index a0eade37cb18..8336997d51e9 100644 --- a/keyboards/zoo/wampus/rules.mk +++ b/keyboards/zoo/wampus/rules.mk @@ -7,21 +7,18 @@ BOOTLOADER = stm32-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow WS2812_DRIVER = spi # RGB underglow driver configuration -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output -OLED_DRIVER_ENABLE = no # Enables the use of OLED displays +OLED_ENABLE = no # Enables the use of OLED displays # Enter lower-power sleep mode when on the ChibiOS idle thread OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/zoo/wampus/wampus.c b/keyboards/zoo/wampus/wampus.c index 1a333a70ed12..aa41c2710832 100644 --- a/keyboards/zoo/wampus/wampus.c +++ b/keyboards/zoo/wampus/wampus.c @@ -15,15 +15,14 @@ */ #include "wampus.h" -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE void board_init(void) { SYSCFG->CFGR1 |= SYSCFG_CFGR1_I2C1_DMA_RMP; SYSCFG->CFGR1 &= ~(SYSCFG_CFGR1_SPI2_DMA_RMP); } -oled_rotation_t oled_init_user(oled_rotation_t rotation) { +oled_rotation_t oled_init_kb(oled_rotation_t rotation) { return OLED_ROTATION_180; } - #endif diff --git a/keyboards/ztboards/after/info.json b/keyboards/ztboards/after/info.json index ddd0d5231921..421450016ad3 100644 --- a/keyboards/ztboards/after/info.json +++ b/keyboards/ztboards/after/info.json @@ -2,8 +2,6 @@ "keyboard_name": "ZTBoards After", "url": "ztb.mx", "maintainer": "phlopsuh", - "width": 16, - "height": 5, "layouts": { "LAYOUT_all": { "layout": [{"label":"Esc", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"@", "x":2, "y":1}, {"label":"#", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"label":"|", "x":13, "y":1}, {"label":"`", "x":14, "y":1}, {"label":"Rotary", "x":15.5, "y":0.5}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"Del", "x":15.5, "y":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"\"", "x":11.75, "y":3}, {"label":"Enter", "x":12.75, "y":3, "w":2.25}, {"label":"Pg Up", "x":15.5, "y":3}, {"label":"Shift", "x":0, "y":4, "w":2.25}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"label":"Up", "x":14.25, "y":4.25}, {"label":"Pg Dn", "x":15.5, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.5}, {"label":"Alt", "x":2.25, "y":5, "w":1.5}, {"x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5, "w":1.5}, {"label":"Ctrl", "x":11.5, "y":5, "w":1.5}, {"label":"Left", "x":13.25, "y":5.25}, {"label":"Down", "x":14.25, "y":5.25}, {"label":"Right", "x":15.25, "y":5.25}] diff --git a/keyboards/ztboards/after/rules.mk b/keyboards/ztboards/after/rules.mk index 6edb6ea54cbd..0e9132547093 100644 --- a/keyboards/ztboards/after/rules.mk +++ b/keyboards/ztboards/after/rules.mk @@ -7,17 +7,14 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes # Rotary Encoder use diff --git a/keyboards/ztboards/noon/info.json b/keyboards/ztboards/noon/info.json index fed68d166223..fd36892462ec 100644 --- a/keyboards/ztboards/noon/info.json +++ b/keyboards/ztboards/noon/info.json @@ -2,8 +2,6 @@ "keyboard_name": "ZTBoards Noon", "url": "ztb.mx", "maintainer": "phlopsuh", - "width": 16, - "height": 5, "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}, {"label":"~", "x":13, "y":0}, {"label":"|", "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":"Pg Up", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Pg Dn", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Up", "x":14, "y":3}, {"label":"Del", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Alt", "x":2.25, "y":4, "w":1.5}, {"x":3.75, "y":4, "w":7}, {"label":"Alt", "x":10.75, "y":4, "w":1.5}, {"label":"Left", "x":13, "y":4}, {"label":"Down", "x":14, "y":4}, {"label":"Right", "x":15, "y":4}] diff --git a/keyboards/ztboards/noon/rules.mk b/keyboards/ztboards/noon/rules.mk index 32981133b2eb..ef61685f7c09 100644 --- a/keyboards/ztboards/noon/rules.mk +++ b/keyboards/ztboards/noon/rules.mk @@ -7,16 +7,13 @@ BOOTLOADER = atmel-dfu # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth AUDIO_ENABLE = no # Audio output diff --git a/keyboards/zvecr/split_blackpill/config.h b/keyboards/zvecr/split_blackpill/config.h index 33653abc6448..c6ca34779a97 100644 --- a/keyboards/zvecr/split_blackpill/config.h +++ b/keyboards/zvecr/split_blackpill/config.h @@ -99,59 +99,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. diff --git a/keyboards/zvecr/split_blackpill/info.json b/keyboards/zvecr/split_blackpill/info.json index d43dc6f403de..0ee144f5f2de 100644 --- a/keyboards/zvecr/split_blackpill/info.json +++ b/keyboards/zvecr/split_blackpill/info.json @@ -2,11 +2,8 @@ "keyboard_name": "split_blackpill", "url": "", "maintainer": "zvecr", - "width": 12, - "height": 4, "layouts": { "LAYOUT_ortho_4x12": { - "key_count": 48, "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}] } } diff --git a/keyboards/zvecr/split_blackpill/rules.mk b/keyboards/zvecr/split_blackpill/rules.mk index 8ba870e18f46..0b92ad590655 100644 --- a/keyboards/zvecr/split_blackpill/rules.mk +++ b/keyboards/zvecr/split_blackpill/rules.mk @@ -7,19 +7,15 @@ BOOTLOADER = stm32duino # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = yes diff --git a/keyboards/zvecr/zv48/config.h b/keyboards/zvecr/zv48/config.h index 15ff8c4e8438..881282c2865d 100644 --- a/keyboards/zvecr/zv48/config.h +++ b/keyboards/zvecr/zv48/config.h @@ -105,59 +105,6 @@ */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -/* defined by default; to change, uncomment and set to the combination you want */ -// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP H -//#define MAGIC_KEY_HELP_ALT SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER0_ALT GRAVE -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER B -//#define MAGIC_KEY_BOOTLOADER_ALT ESC -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_EEPROM_CLEAR BSPACE -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. diff --git a/keyboards/zvecr/zv48/info.json b/keyboards/zvecr/zv48/info.json index b6a9c7693ce4..5e62a870860b 100644 --- a/keyboards/zvecr/zv48/info.json +++ b/keyboards/zvecr/zv48/info.json @@ -2,11 +2,8 @@ "keyboard_name": "zv48", "url": "", "maintainer": "zvecr", - "width": 12, - "height": 4, "layouts": { "LAYOUT_ortho_4x12": { - "key_count": 48, "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}] } } diff --git a/keyboards/zvecr/zv48/rules.mk b/keyboards/zvecr/zv48/rules.mk index 86bcad8a0c8b..ea657a859aae 100644 --- a/keyboards/zvecr/zv48/rules.mk +++ b/keyboards/zvecr/zv48/rules.mk @@ -1,21 +1,17 @@ # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite KEYBOARD_SHARED_EP = yes # Free up some extra endpoints - needed if console+mouse+extra 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 RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow ENCODER_ENABLE = yes # Enable rotary encoder support -MIDI_ENABLE = no # MIDI support -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE = no # Audio output SPLIT_KEYBOARD = yes diff --git a/layouts/community/60_ansi/manna-harbour_miryoku/config.h b/layouts/community/60_ansi/manna-harbour_miryoku/config.h new file mode 100644 index 000000000000..81f1ceb42f5d --- /dev/null +++ b/layouts/community/60_ansi/manna-harbour_miryoku/config.h @@ -0,0 +1,69 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . + +#pragma once + +#define XXX KC_NO + +#if defined MIRYOKU_MAPPING_NOREVERSEANGLE + #define LAYOUT_miryoku(\ +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,\ +N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +LAYOUT_60_ansi(\ +K00, K01, K02, K03, K04, XXX, XXX, XXX, K05, K06, K07, K08, K09, XXX,\ + K10, K11, K12, K13, K14, XXX, XXX, XXX, K15, K16, K17, K18, K19, XXX,\ + K20, K21, K22, K23, K24, XXX, XXX, XXX, K25, K26, K27, K28, K29,\ + XXX, K32, K33, K34, XXX, XXX, XXX, XXX, K35, K36, K37, XXX,\ + XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX\ +) +#elif defined MIRYOKU_MAPPING_LITE + #if defined MIRYOKU_LAYERS_FLIP + #define LAYOUT_miryoku( \ + 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, \ + N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ +) \ +LAYOUT_60_ansi( \ +KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \ +KC_TAB, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, KC_LBRC, KC_RBRC, KC_BSLS, \ +KC_CAPS, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, KC_SCLN, KC_ENT, \ +KC_LSFT, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, KC_RSFT, \ +KC_LCTL, KC_LGUI, KC_LALT, K36, KC_RALT, KC_RGUI, KC_APP, KC_RCTL \ +) + #else + #define LAYOUT_miryoku( \ + 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, \ + N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ +) \ +LAYOUT_60_ansi( \ +KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \ +KC_TAB, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, KC_LBRC, KC_RBRC, KC_BSLS, \ +KC_CAPS, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, KC_SCLN, KC_ENT, \ +KC_LSFT, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, KC_RSFT, \ +KC_LCTL, KC_LGUI, KC_LALT, K33, KC_RALT, KC_RGUI, KC_APP, KC_RCTL \ +) + #endif +#else + #define LAYOUT_miryoku(\ + 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,\ + N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +LAYOUT_60_ansi(\ +XXX, XXX, K00, K01, K02, K03, K04, XXX, K05, K06, K07, K08, K09, XXX,\ + XXX, K10, K11, K12, K13, K14, XXX, XXX, K15, K16, K17, K18, K19, XXX,\ + K20, K21, K22, K23, K24, XXX, XXX, XXX, K25, K26, K27, K28, K29,\ + XXX, XXX, K32, K33, K34, XXX, XXX, XXX, K35, K36, K37, XXX,\ + XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX\ +) +#endif diff --git a/layouts/community/60_ansi/manna-harbour_miryoku/keymap.c b/layouts/community/60_ansi/manna-harbour_miryoku/keymap.c new file mode 100644 index 000000000000..7c5717a0fee0 --- /dev/null +++ b/layouts/community/60_ansi/manna-harbour_miryoku/keymap.c @@ -0,0 +1,5 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/layouts/community/60_ansi/mechmerlin-ansi/keymap.c b/layouts/community/60_ansi/mechmerlin-ansi/keymap.c index 5ae09ec08691..97116462acb5 100644 --- a/layouts/community/60_ansi/mechmerlin-ansi/keymap.c +++ b/layouts/community/60_ansi/mechmerlin-ansi/keymap.c @@ -11,23 +11,23 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_FL] = LAYOUT_60_ansi( KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \ - BL_TOGG, BL_INC, BL_DEC, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ - RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ - VLK_TOG, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, MO(_CL), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + BL_TOGG, BL_INC, BL_DEC, BL_STEP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, \ + VLK_TOG, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, \ + _______, _______, _______, MO(_CL), _______, _______, _______, _______), [_AL] = LAYOUT_60_ansi( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT), + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, \ + _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT), [_CL] = LAYOUT_60_ansi( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, EEP_RST, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, EEP_RST, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, KC_VER, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______), }; diff --git a/layouts/community/60_ansi/mechmerlin-ansi/readme.md b/layouts/community/60_ansi/mechmerlin-ansi/readme.md index 1e8d6de597f4..5e9c4f1a881c 100644 --- a/layouts/community/60_ansi/mechmerlin-ansi/readme.md +++ b/layouts/community/60_ansi/mechmerlin-ansi/readme.md @@ -5,8 +5,7 @@ YouTube channel. It is used on his * [1up60HSE](https://github.com/qmk/qmk_firmware/tree/master/keyboards/1upkeyboards/1up60hse) -* [dz60rgb-ansi](https://github.com/qmk/qmk_firmware/tree/master/keyboards/dztech/dz60rgb) -* [HS60 V2](https://github.com/qmk/qmk_firmware/tree/master/keyboards/hs60/v2) +* [DZ60rgb-ANSI V1](https://github.com/qmk/qmk_firmware/tree/master/keyboards/dztech/dz60rgb) ## Keymap Notes - Arrow toggle switch is tapping the `FN` key once. diff --git a/layouts/community/60_ansi_split_bs_rshift/bcat/keymap.c b/layouts/community/60_ansi_split_bs_rshift/bcat/keymap.c index adb31525a899..6bfafc332521 100644 --- a/layouts/community/60_ansi_split_bs_rshift/bcat/keymap.c +++ b/layouts/community/60_ansi_split_bs_rshift/bcat/keymap.c @@ -1,3 +1,19 @@ +/* Copyright 2021 Jonathan Rascher + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #include QMK_KEYBOARD_H enum layer { @@ -10,6 +26,7 @@ enum layer { #define LY_FN2 MO(LAYER_FUNCTION_2) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off /* Default layer: http://www.keyboard-layout-editor.com/#/gists/327b41b5a933b3d44bf60ca9822e85dc */ [LAYER_DEFAULT] = LAYOUT_60_ansi_split_bs_rshift( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, @@ -36,4 +53,5 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, KC_MUTE, _______, BL_DEC, _______, RGB_SPD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), + // clang-format on }; diff --git a/layouts/community/60_ansi_split_bs_rshift/mechmerlin-split/keymap.c b/layouts/community/60_ansi_split_bs_rshift/mechmerlin-split/keymap.c index 2b822863810d..2cea4fd44ff4 100644 --- a/layouts/community/60_ansi_split_bs_rshift/mechmerlin-split/keymap.c +++ b/layouts/community/60_ansi_split_bs_rshift/mechmerlin-split/keymap.c @@ -11,23 +11,23 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_FL] = LAYOUT_60_ansi_split_bs_rshift( KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, \ - BL_TOGG, BL_INC, BL_DEC, BL_STEP, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ - RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ - VLK_TOG, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, MO(_CL), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + BL_TOGG, BL_INC, BL_DEC, BL_STEP, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, \ + VLK_TOG, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, \ + _______, _______, _______, MO(_CL), _______, _______, _______, _______), [_AL] = LAYOUT_60_ansi_split_bs_rshift( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT), + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, \ + _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT), [_CL] = LAYOUT_60_ansi_split_bs_rshift( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, EEP_RST, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, EEP_RST, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, KC_VER, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______) }; diff --git a/layouts/community/60_ansi_split_bs_rshift/mechmerlin-split/readme.md b/layouts/community/60_ansi_split_bs_rshift/mechmerlin-split/readme.md index e3f6311b1912..f883a3d04697 100644 --- a/layouts/community/60_ansi_split_bs_rshift/mechmerlin-split/readme.md +++ b/layouts/community/60_ansi_split_bs_rshift/mechmerlin-split/readme.md @@ -10,6 +10,7 @@ It is used on his * [Sentraq S60-X RGB](https://github.com/qmk/qmk_firmware/tree/master/keyboards/s60_x) * [Waldo](https://github.com/qmk/qmk_firmware/tree/master/keyboards/waldo) * [Zeal60 Rev4](https://github.com/qmk/qmk_firmware/tree/master/keyboards/zeal60) +* [AN-C](https://github.com/qmk/qmk_firmware/tree/master/keyboards/cannonkeys/an_c) ## Keymap Notes - Highly influenced by the KBP V60 and WKL B.Face standard layouts diff --git a/layouts/community/60_iso/bifbofii/keymap.c b/layouts/community/60_iso/bifbofii/keymap.c new file mode 100755 index 000000000000..d22004c201e1 --- /dev/null +++ b/layouts/community/60_iso/bifbofii/keymap.c @@ -0,0 +1,201 @@ +/* Copyright 2021 Christoph Jabs (BifbofII) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +/* ====== Unicode ====== */ +/* Character names */ +enum unicode_names { SAE, BAE, SUE, BUE, SOE, BOE, SS, EUR, CPR }; + +/* Unicode map */ +const uint32_t PROGMEM unicode_map[] = { + [SAE] = 0x00E4, // ä + [BAE] = 0x00C4, // Ä + [SUE] = 0x00FC, // ü + [BUE] = 0x00DC, // Ü + [SOE] = 0x00F6, // ü + [BOE] = 0x00D6, // Ü + [SS] = 0x00DF, // ß + [EUR] = 0x20AC, // € + [CPR] = 0x00A9 // © +}; + +/* ====== Layers ====== */ +enum layer_names { + QWERTY = 0, + GAMING, + FUNCTIONS_1, + FUNCTIONS_2, + UNICODE, + SPECIALS, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* Qwerty + * ,-----------------------------------------------------------------------------------------. + * | ` ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Bkspc | + * |-----------------------------------------------------------------------------------------+ + * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Enter | + * |-----------------------------------------------------------------------------------+ + + * | Esc/Unic| A | S | D | F | G | H | J | K | L | ; | ' | \ | | + * |-----------------------------------------------------------------------------------------+ + * | Shift | Z | X | C | V | B | N | M | , | . | / | RShift | + * |-----------------------------------------------------------------------------------------+ + * | Ctrl | Super | Alt | Space/Fnc | Alt | Super | Ctrl | Spec | + * `-----------------------------------------------------------------------------------------' + */ + [QWERTY] = LAYOUT_60_iso( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_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, + LT(UNICODE, KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, LT(FUNCTIONS_1, KC_SPC), KC_RALT, KC_RGUI, KC_RCTL, MO(SPECIALS) + ), + + /* Arrows and media keys + * ,-----------------------------------------------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Del | + * |-----------------------------------------------------------------------------------------+ + * | | | | | |Mute | Prev| V- | V+ | Next| Play| | | Enter | + * |-----------------------------------------------------------------------------------+ + + * | Caps | | < | | | > |Left |Down | Up |Right| | | | | + * |-----------------------------------------------------------------------------------------+ + * | Shift | | | | | |Home |Page-|Page+| End | | Fnc2 | + * |-----------------------------------------------------------------------------------------+ + * | Ctrl | Super | Alt | Trans | Alt | Super | Ctrl | | + * `-----------------------------------------------------------------------------------------' + */ + [FUNCTIONS_1] = LAYOUT_60_iso( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, + _______, _______, _______, _______, _______, KC__MUTE, KC_MPRV, KC__VOLDOWN, KC_VOLU, KC_MNXT, KC_MEDIA_PLAY_PAUSE, _______, _______, + KC_CAPS, _______, KC_WBAK, _______, _______, KC_WFWD, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, KC_ENT, + KC_LSFT, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, MO(FUNCTIONS_2), + KC_LCTL, KC_LGUI, KC_LALT, _______, KC_RALT, KC_RGUI, KC_RCTL, _______ + ), + + /* More Function keys + * ,-----------------------------------------------------------------------------------------. + * | | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | F21 | F22 | F23 | F24 | Del | + * |-----------------------------------------------------------------------------------------+ + * | | | | | | | | | | | | | | Enter | + * |-----------------------------------------------------------------------------------+ + + * | Caps | | | | | | | | | | | | | | + * |-----------------------------------------------------------------------------------------+ + * | Shift | | | | | | | | | | | Trans | + * |-----------------------------------------------------------------------------------------+ + * | Ctrl | Super | Alt | Trans | Alt | Super | Ctrl | | + * `-----------------------------------------------------------------------------------------' + */ + [FUNCTIONS_2] = LAYOUT_60_iso( + _______, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_DEL, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_ENT, + KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_LCTL, KC_LGUI, KC_LALT, _______, KC_RALT, KC_RGUI, KC_RCTL, _______ + ), + + /* German Umlaute + * ,-----------------------------------------------------------------------------------------. + * | | | | | | | | | | | | | | Bkspc | + * |-----------------------------------------------------------------------------------------+ + * | | | | € | | | | Ü | | Ö | | | | Enter | + * |-----------------------------------------------------------------------------------+ + + * | Trans | Ä | ß | | | | | | | | | | | | + * |-----------------------------------------------------------------------------------------+ + * | Trans | | | © | | | | | | | | Trans | + * |-----------------------------------------------------------------------------------------+ + * | Ctrl | Super | Alt | Space | Alt | Super | Ctrl | | + * `-----------------------------------------------------------------------------------------' + */ + [UNICODE] = LAYOUT_60_iso( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BSPC, + _______, _______, _______, X(EUR), _______, _______, _______, XP(SUE, BUE), _______, XP(SOE, BOE), _______, _______, _______, + KC_TRNS, XP(SAE, BAE), X(SS), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_ENT, + KC_LSFT, _______, _______, _______, X(CPR), _______, _______, _______, _______, _______, _______, _______, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, _______ + ), + + /* Specials (Reset, etc) + * ,-----------------------------------------------------------------------------------------. + * | | | | | | | | | | | | RGB-|RGB+ | | + * |-----------------------------------------------------------------------------------------+ + * | | | Win | | | | | | | OSX | | | | RGB | + * |-----------------------------------------------------------------------------------+ tog + + * | | | | | |Gamin| | | | Lnx | | | | | + * |-----------------------------------------------------------------------------------------+ + * | | | | | |RESET| | | | | | | + * |-----------------------------------------------------------------------------------------+ + * | | | | | | | | Trans| + * `-----------------------------------------------------------------------------------------' + */ + [SPECIALS] = LAYOUT_60_iso( + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI, XXXXXXX, + XXXXXXX, XXXXXXX, UC_M_WC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, UC_M_OS, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TG(GAMING), XXXXXXX, XXXXXXX, XXXXXXX, UC_M_LN, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_TRNS + ), + + /* Gaming + * ,-----------------------------------------------------------------------------------------. + * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Bkspc | + * |-----------------------------------------------------------------------------------------+ + * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Enter | + * |-----------------------------------------------------------------------------------+ + + * | Caps | A | S | D | F | G | H | J | K | L | ; | ' | \ | | + * |-----------------------------------------------------------------------------------------+ + * | Shift | Z | X | C | V | B | N | M | , | . | / | RShift | + * |-----------------------------------------------------------------------------------------+ + * | Ctrl | Super | Alt | Space | Alt | Super | Ctrl | Spec | + * `-----------------------------------------------------------------------------------------' + */ + [GAMING] = LAYOUT_60_iso( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, MO(SPECIALS) + ), +}; + +/* ====== LED Underglow ====== */ +#ifdef RGBLIGHT_ENABLE +void keyboard_post_init_user(void) { + rgblight_mode_noeeprom(1); + rgblight_sethsv_noeeprom(HSV_WHITE); +} + +bool led_update_user(led_t led_state) { + if (led_state.caps_lock) { + rgblight_mode_noeeprom(1); + rgblight_sethsv_noeeprom(HSV_RED); + } + return true; +} + +layer_state_t layer_state_set_user(layer_state_t state) { + rgblight_mode_noeeprom(1); + if (layer_state_cmp(state, GAMING)) { + rgblight_sethsv_noeeprom(HSV_BLUE); + } else if (layer_state_cmp(state, SPECIALS)) { + rgblight_sethsv_noeeprom(HSV_PURPLE); + } else { + rgblight_sethsv_noeeprom(HSV_WHITE); + } + return state; +} +#endif diff --git a/layouts/community/60_iso/bifbofii/readme.md b/layouts/community/60_iso/bifbofii/readme.md new file mode 100755 index 000000000000..7a8a03419630 --- /dev/null +++ b/layouts/community/60_iso/bifbofii/readme.md @@ -0,0 +1,108 @@ +# BifbofII 60% ISO Layout + +![BifbofII 60% ISO](https://i.imgur.com/jz4s3iR.jpeg) + +This layout is for the DZ60 and other keyboards with ISO keycaps in a US layout. + +The first layer is a standard US QWERTY Layout. +By holding down the spacebar, a set of function keys as arrow keys become available. +By holding right shift and space, a second layer of function keys becomes available. +ESC is mapped to the Caps Lock key. +If the Caps Lock key is held, a selection of unicode Characters, such as Umlauts become available. +By pressing Special and G you can toggle a layer for gaming that has normal keymappings. + +## QWERTY Layer + +``` +,-----------------------------------------------------------------------------------------. +| ` ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Bkspc | +|-----------------------------------------------------------------------------------------+ +| Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Enter | +|-----------------------------------------------------------------------------------+ + +| Esc/Unic| A | S | D | F | G | H | J | K | L | ; | ' | \ | | +|-----------------------------------------------------------------------------------------+ +| Shift | Z | X | C | V | B | N | M | , | . | / | RShift | +|-----------------------------------------------------------------------------------------+ +| Ctrl | Super | Alt | Space/Fnc | Alt | Super | Ctrl | Spec | +`-----------------------------------------------------------------------------------------' +``` + +## Function Layer 1 + +``` +,-----------------------------------------------------------------------------------------. +| | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Del | +|-----------------------------------------------------------------------------------------+ +| | | | | |Mute | Prev| V- | V+ | Next| Play| | | Enter | +|-----------------------------------------------------------------------------------+ + +| Caps | | < | | | > |Left |Down | Up |Right| | | | | +|-----------------------------------------------------------------------------------------+ +| Shift | | | | | |Home |Page-|Page+| End | | Fnc2 | +|-----------------------------------------------------------------------------------------+ +| Ctrl | Super | Alt | Trans | Alt | Super | Ctrl | | +`-----------------------------------------------------------------------------------------' +``` + +## Function Layer 2 + +``` +,-----------------------------------------------------------------------------------------. +| | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | F21 | F22 | F23 | F24 | Del | +|-----------------------------------------------------------------------------------------+ +| | | | | | | | | | | | | | Enter | +|-----------------------------------------------------------------------------------+ + +| Caps | | | | | | | | | | | | | | +|-----------------------------------------------------------------------------------------+ +| Shift | | | | | | | | | | | Trans | +|-----------------------------------------------------------------------------------------+ +| Ctrl | Super | Alt | Trans | Alt | Super | Ctrl | | +`-----------------------------------------------------------------------------------------' +``` + +## Unicode Layer + +``` +,-----------------------------------------------------------------------------------------. +| | | | | | | | | | | | | | Bkspc | +|-----------------------------------------------------------------------------------------+ +| | | | € | | | | Ü | | Ö | | | | Enter | +|-----------------------------------------------------------------------------------+ + +| Trans | Ä | ß | | | | | | | | | | | | +|-----------------------------------------------------------------------------------------+ +| Trans | | | © | | | | | | | | Trans | +|-----------------------------------------------------------------------------------------+ +| Ctrl | Super | Alt | Space | Alt | Super | Ctrl | | +`-----------------------------------------------------------------------------------------' +``` + +## Specials Layer + +``` +,-----------------------------------------------------------------------------------------. +| | | | | | | | | | | | RGB-|RGB+ | | +|-----------------------------------------------------------------------------------------+ +| | | Win | | | | | | | OSX | | | | RGB | +|-----------------------------------------------------------------------------------+ tog + +| | | | | |Gamin| | | | Lnx | | | | | +|-----------------------------------------------------------------------------------------+ +| | | | | |RESET| | | | | | | +|-----------------------------------------------------------------------------------------+ +| | | | | | | | Trans| +`-----------------------------------------------------------------------------------------' +``` + +## Gaming Layer + +``` +,-----------------------------------------------------------------------------------------. +| Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Bkspc | +|-----------------------------------------------------------------------------------------+ +| Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Enter | +|-----------------------------------------------------------------------------------+ + +| Caps | A | S | D | F | G | H | J | K | L | ; | ' | \ | | +|-----------------------------------------------------------------------------------------+ +| Shift | Z | X | C | V | B | N | M | , | . | / | RShift | +|-----------------------------------------------------------------------------------------+ +| Ctrl | Cmd | Alt | Space | Alt | Super | Ctrl | Spec | +`-----------------------------------------------------------------------------------------' +``` diff --git a/layouts/community/60_iso/bifbofii/rules.mk b/layouts/community/60_iso/bifbofii/rules.mk new file mode 100644 index 000000000000..502b2def7623 --- /dev/null +++ b/layouts/community/60_iso/bifbofii/rules.mk @@ -0,0 +1 @@ +UNICODEMAP_ENABLE = yes diff --git a/layouts/community/60_tsangan_hhkb/bcat/keymap.c b/layouts/community/60_tsangan_hhkb/bcat/keymap.c index 2079adb93cb7..05e6462d9037 100644 --- a/layouts/community/60_tsangan_hhkb/bcat/keymap.c +++ b/layouts/community/60_tsangan_hhkb/bcat/keymap.c @@ -1,3 +1,19 @@ +/* Copyright 2021 Jonathan Rascher + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #include QMK_KEYBOARD_H enum layer { @@ -10,6 +26,7 @@ enum layer { #define LY_FN2 MO(LAYER_FUNCTION_2) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off /* Default layer: http://www.keyboard-layout-editor.com/#/gists/86b33d75aa6f56d8781ab3d8475f4e77 */ [LAYER_DEFAULT] = LAYOUT_60_tsangan_hhkb( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, @@ -18,7 +35,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, LY_FN1, KC_LCTL, LY_FN2, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL ), - /* Function 1 layer: http://www.keyboard-layout-editor.com/#/gists/f6311fd7e315de781143b80eb040a551 */ [LAYER_FUNCTION_1] = LAYOUT_60_tsangan_hhkb( _______, 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, @@ -27,7 +43,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, KC_APP, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), - /* Function 2 layer: http://www.keyboard-layout-editor.com/#/gists/65ac939caec878401603bc36290852d4 */ [LAYER_FUNCTION_2] = LAYOUT_60_tsangan_hhkb( _______, 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, @@ -36,4 +51,5 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, KC_MUTE, _______, BL_DEC, _______, RGB_SPD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), + // clang-format on }; diff --git a/layouts/community/65_ansi/mechmerlin/keymap.c b/layouts/community/65_ansi/mechmerlin/keymap.c index df75b11f3f77..47990836617b 100644 --- a/layouts/community/65_ansi/mechmerlin/keymap.c +++ b/layouts/community/65_ansi/mechmerlin/keymap.c @@ -50,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, KC_VER, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), }; diff --git a/layouts/community/65_ansi_blocker/brandonschlack/config.h b/layouts/community/65_ansi_blocker/brandonschlack/config.h index e7b09f422c73..ea8ca6190110 100644 --- a/layouts/community/65_ansi_blocker/brandonschlack/config.h +++ b/layouts/community/65_ansi_blocker/brandonschlack/config.h @@ -17,46 +17,46 @@ #ifdef RGB_MATRIX_ENABLE // Disable RGB Effects -#define DISABLE_RGB_MATRIX_ALPHAS_MODS -// #define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -// #define DISABLE_RGB_MATRIX_BREATHING -#define DISABLE_RGB_MATRIX_BAND_SAT -#define DISABLE_RGB_MATRIX_BAND_VAL -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL -#define DISABLE_RGB_MATRIX_CYCLE_ALL -#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT -#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN -#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN -#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL -#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON -#define DISABLE_RGB_MATRIX_DUAL_BEACON -#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL -#define DISABLE_RGB_MATRIX_CYCLE_SPIRAL -#define DISABLE_RGB_MATRIX_RAINBOW_BEACON -#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS -#define DISABLE_RGB_MATRIX_RAINDROPS -#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS -#define DISABLE_RGB_MATRIX_TYPING_HEATMAP -#define DISABLE_RGB_MATRIX_DIGITAL_RAIN -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -#define DISABLE_RGB_MATRIX_SPLASH -#define DISABLE_RGB_MATRIX_MULTISPLASH -#define DISABLE_RGB_MATRIX_SOLID_SPLASH -#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH +# undef ENABLE_RGB_MATRIX_ALPHAS_MODS +// #undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +// #undef ENABLE_RGB_MATRIX_BREATHING +# undef ENABLE_RGB_MATRIX_BAND_SAT +# undef ENABLE_RGB_MATRIX_BAND_VAL +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# undef ENABLE_RGB_MATRIX_CYCLE_ALL +# undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# undef ENABLE_RGB_MATRIX_DUAL_BEACON +# undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# undef ENABLE_RGB_MATRIX_RAINBOW_BEACON +# undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# undef ENABLE_RGB_MATRIX_RAINDROPS +# undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# undef ENABLE_RGB_MATRIX_TYPING_HEATMAP +# undef ENABLE_RGB_MATRIX_DIGITAL_RAIN +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# undef ENABLE_RGB_MATRIX_SPLASH +# undef ENABLE_RGB_MATRIX_MULTISPLASH +# undef ENABLE_RGB_MATRIX_SOLID_SPLASH +# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH -#define QMK_KEYS_PER_SCAN 4 +# define QMK_KEYS_PER_SCAN 4 -#define USB_LED_CAPS_LOCK_SCANCODE 30 +# define USB_LED_CAPS_LOCK_SCANCODE 30 #endif #ifdef KEYBOARD_massdrop_alt diff --git a/layouts/community/65_ansi_blocker/mechmerlin/keymap.c b/layouts/community/65_ansi_blocker/mechmerlin/keymap.c index 0ce4f38c64a8..d82a6327d19e 100644 --- a/layouts/community/65_ansi_blocker/mechmerlin/keymap.c +++ b/layouts/community/65_ansi_blocker/mechmerlin/keymap.c @@ -37,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, KC_VER, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) }; diff --git a/layouts/community/65_ansi_blocker/mechmerlin/readme.md b/layouts/community/65_ansi_blocker/mechmerlin/readme.md index 70ee6e385f49..1649c8897439 100644 --- a/layouts/community/65_ansi_blocker/mechmerlin/readme.md +++ b/layouts/community/65_ansi_blocker/mechmerlin/readme.md @@ -6,6 +6,7 @@ YouTube channel. It is used on his * [RGB Doro67](https://github.com/qmk/qmk_firmware/tree/master/keyboards/doro67/rgb) * [KBD67 mkii](https://github.com/qmk/qmk_firmware/tree/master/keyboards/kbdfans/kbd67/mkiirgb/v1) +* [Iron 165](https://github.com/qmk/qmk_firmware/tree/master/keyboards/cannonkeys/iron165) ### Build To build the firmware file associated with this keymap, simply run `make your_keyboard:mechmerlin`. \ No newline at end of file diff --git a/layouts/community/65_ansi_blocker/stanrc85/keymap.c b/layouts/community/65_ansi_blocker/stanrc85/keymap.c new file mode 100644 index 000000000000..46fa4025d9b7 --- /dev/null +++ b/layouts/community/65_ansi_blocker/stanrc85/keymap.c @@ -0,0 +1,51 @@ +/* Copyright 2021 Stanrc85 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H +#include "stanrc85.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QWERTY] = LAYOUT_65_ansi_blocker( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CTLE, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, LT_SPCF, TD_TWIN, MO(_FN2_60), KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_DEFAULT] = LAYOUT_65_ansi_blocker( + KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_FN1_60), MO(_FN2_60), KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_FN1_60] = LAYOUT_65_ansi_blocker( + KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, + _______, _______, CA_QUOT, _______, CA_SCLN, KC_VOLU, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PSCR, _______, _______, KC_INS, _______, + KC_CAPS, _______, _______, KC_LCTL, KC_LSFT, KC_VOLD, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, + _______, KC_RDP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [_FN2_60] = LAYOUT_65_ansi_blocker( + RGB_TOG, RGB_MOD, RGB_VAD, RGB_VAI, RGB_SAI, RGB_SAD, RGB_HUD, RGB_HUI, _______, _______, _______, _______, _______, _______, BL_TOGG, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, BL_INC, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MAKE, BL_DEC, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, TG(_DEFAULT), _______, _______, _______, _______ + ) +}; diff --git a/layouts/community/65_ansi_blocker_split_bs/bcat/keymap.c b/layouts/community/65_ansi_blocker_split_bs/bcat/keymap.c index 75b891cda0ce..c91a1b0eaddf 100644 --- a/layouts/community/65_ansi_blocker_split_bs/bcat/keymap.c +++ b/layouts/community/65_ansi_blocker_split_bs/bcat/keymap.c @@ -1,3 +1,19 @@ +/* Copyright 2021 Jonathan Rascher + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #include QMK_KEYBOARD_H enum layer { @@ -8,6 +24,7 @@ enum layer { #define LY_FN MO(LAYER_FUNCTION) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off /* Default layer: http://www.keyboard-layout-editor.com/#/gists/dd675b40cc4df2c7bb78847ac29f5988 */ [LAYER_DEFAULT] = LAYOUT_65_ansi_blocker_split_bs( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, KC_HOME, @@ -25,4 +42,5 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, KC_APP, _______, KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), + // clang-format on }; diff --git a/layouts/community/65_ansi_blocker_split_bs/brandonschlack-split/config.h b/layouts/community/65_ansi_blocker_split_bs/brandonschlack-split/config.h index 9506c7fe9103..fe3dcd41c2b1 100644 --- a/layouts/community/65_ansi_blocker_split_bs/brandonschlack-split/config.h +++ b/layouts/community/65_ansi_blocker_split_bs/brandonschlack-split/config.h @@ -17,46 +17,46 @@ #ifdef RGB_MATRIX_ENABLE // Disable RGB Effects -#define DISABLE_RGB_MATRIX_ALPHAS_MODS -// #define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -// #define DISABLE_RGB_MATRIX_BREATHING -#define DISABLE_RGB_MATRIX_BAND_SAT -#define DISABLE_RGB_MATRIX_BAND_VAL -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL -#define DISABLE_RGB_MATRIX_CYCLE_ALL -#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT -#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN -#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN -#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL -#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON -#define DISABLE_RGB_MATRIX_DUAL_BEACON -#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL -#define DISABLE_RGB_MATRIX_CYCLE_SPIRAL -#define DISABLE_RGB_MATRIX_RAINBOW_BEACON -#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS -#define DISABLE_RGB_MATRIX_RAINDROPS -#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS -#define DISABLE_RGB_MATRIX_TYPING_HEATMAP -#define DISABLE_RGB_MATRIX_DIGITAL_RAIN -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE -// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -#define DISABLE_RGB_MATRIX_SPLASH -#define DISABLE_RGB_MATRIX_MULTISPLASH -#define DISABLE_RGB_MATRIX_SOLID_SPLASH -#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH +# undef ENABLE_RGB_MATRIX_ALPHAS_MODS +// #undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +// #undef ENABLE_RGB_MATRIX_BREATHING +# undef ENABLE_RGB_MATRIX_BAND_SAT +# undef ENABLE_RGB_MATRIX_BAND_VAL +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# undef ENABLE_RGB_MATRIX_CYCLE_ALL +# undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# undef ENABLE_RGB_MATRIX_DUAL_BEACON +# undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# undef ENABLE_RGB_MATRIX_RAINBOW_BEACON +# undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# undef ENABLE_RGB_MATRIX_RAINDROPS +# undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# undef ENABLE_RGB_MATRIX_TYPING_HEATMAP +# undef ENABLE_RGB_MATRIX_DIGITAL_RAIN +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# undef ENABLE_RGB_MATRIX_SPLASH +# undef ENABLE_RGB_MATRIX_MULTISPLASH +# undef ENABLE_RGB_MATRIX_SOLID_SPLASH +# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH -#define QMK_KEYS_PER_SCAN 4 +# define QMK_KEYS_PER_SCAN 4 -#define USB_LED_CAPS_LOCK_SCANCODE 30 +# define USB_LED_CAPS_LOCK_SCANCODE 30 #endif #ifdef KEYBOARD_massdrop_alt diff --git a/layouts/community/66_ansi/mechmerlin/keymap.c b/layouts/community/66_ansi/mechmerlin/keymap.c index 8de35811d9da..737b52e84cde 100644 --- a/layouts/community/66_ansi/mechmerlin/keymap.c +++ b/layouts/community/66_ansi/mechmerlin/keymap.c @@ -20,6 +20,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { BL_STEP,RGB_M_P,RGB_M_B,RGB_M_R,RGB_M_SW,RGB_M_SN,RGB_M_K,RGB_M_X,RGB_M_G,_______,_______,_______,_______, _______, RGB_VAI, \ _______,_______,_______,EEP_RST,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_VAD, \ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \ - VLK_TOG, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, RGB_SAI, \ + VLK_TOG, _______,_______,_______,KC_VER,_______,_______,_______,_______,_______,_______, _______, RGB_SAI, \ CK_TOGG,_______,_______, _______, _______,_______,_______,RGB_HUD,RGB_SAD,RGB_HUI), }; diff --git a/layouts/community/68_ansi/mechmerlin/keymap.c b/layouts/community/68_ansi/mechmerlin/keymap.c index b3789d84a436..19f30f8f0017 100644 --- a/layouts/community/68_ansi/mechmerlin/keymap.c +++ b/layouts/community/68_ansi/mechmerlin/keymap.c @@ -20,6 +20,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EEP_RST, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VER, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), }; \ No newline at end of file diff --git a/layouts/community/75_ansi/mechmerlin-75_ansi/keymap.c b/layouts/community/75_ansi/mechmerlin-75_ansi/keymap.c index c239e2683425..387f2d9edbe8 100644 --- a/layouts/community/75_ansi/mechmerlin-75_ansi/keymap.c +++ b/layouts/community/75_ansi/mechmerlin-75_ansi/keymap.c @@ -12,20 +12,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), [_FL] = LAYOUT_75_ansi(\ - RESET, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, RGB_M_K, RGB_M_X, RGB_M_G, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - BL_TOGG, BL_INC, BL_DEC, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - VLK_TOG, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, MO(_CL), KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END), + _______, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, RGB_M_K, RGB_M_X, RGB_M_G, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + BL_TOGG, BL_INC, BL_DEC, BL_STEP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, + VLK_TOG, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, KC_PGUP, _______, + _______, _______, _______, MO(_CL), _______, _______, _______, KC_HOME, KC_PGDN, KC_END), [_CL] = LAYOUT_75_ansi(\ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, EEP_RST, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), - - + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, EEP_RST, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, KC_VER, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), }; diff --git a/layouts/community/75_ansi/mechmerlin-75_ansi/readme.md b/layouts/community/75_ansi/mechmerlin-75_ansi/readme.md index d406155bc7f4..8205abe283ed 100644 --- a/layouts/community/75_ansi/mechmerlin-75_ansi/readme.md +++ b/layouts/community/75_ansi/mechmerlin-75_ansi/readme.md @@ -3,9 +3,7 @@ This is the 75% layout used by u/merlin36, host of the [MechMerlin](www.youtube.com/mechmerlin) YouTube channel. -It is used on his -* [Duck Octagon V2](https://github.com/qmk/qmk_firmware/tree/master/keyboards/duck/octagon/v2) -* [XD84](https://github.com/qmk/qmk_firmware/tree/master/keyboards/xd84) +MechMerlin currently has no keyboard supporting this layout. ### Build To build the firmware file associated with this keymap, simply run `make your_keyboard:mechmerlin-ansi`. diff --git a/layouts/community/ergodox/333fred/keymap.c b/layouts/community/ergodox/333fred/keymap.c index b9aefd929309..5dee9a1e3f68 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 f6c71feb4627..9a3e2b97e594 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 d13b3cd79477..000000000000 --- 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_k_o_y/keymap.c b/layouts/community/ergodox/adnw_k_o_y/keymap.c index 6ade0001ce00..589a9ea87313 100644 --- a/layouts/community/ergodox/adnw_k_o_y/keymap.c +++ b/layouts/community/ergodox/adnw_k_o_y/keymap.c @@ -36,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, KC_DEL, DE_K, DE_DOT, DE_O, DE_COMM,DE_Y, TG(SYMB), KC_BSPC, DE_H, DE_A, DE_E, DE_I, DE_U, - KC_LSFT, CTL_T(DE_X), DE_Q, DE_AE, DE_UE, DE_OE, ALL_T(KC_NO), + KC_LSFT, CTL_T(DE_X), DE_Q, DE_ADIA,DE_UDIA,DE_ODIA,ALL_T(KC_NO), LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, ALT_T(KC_APP), KC_LGUI, KC_HOME, diff --git a/layouts/community/ergodox/adnw_p_u_q/keymap.c b/layouts/community/ergodox/adnw_p_u_q/keymap.c index a90fcbc2c7f8..cf2ab9358967 100644 --- a/layouts/community/ergodox/adnw_p_u_q/keymap.c +++ b/layouts/community/ergodox/adnw_p_u_q/keymap.c @@ -60,7 +60,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_H, KC_J, KC_K, KC_L, KC_RCTRL, // right thumb-cluster - DE_QST, DE_DLR, + DE_QUES, DE_DLR, LCTL(DE_C), KC_ESCAPE, KC_ENTER, KC_BSPACE ), @@ -134,8 +134,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Diakritika [DIAK] = LAYOUT_ergodox( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, DE_UE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DE_AE, DE_OE, + KC_TRNS, KC_TRNS, DE_UDIA, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DE_ADIA, DE_ODIA, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -218,8 +218,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [SYMBOLS] = LAYOUT_ergodox( // left hand KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, //DE_LBRC, - KC_TRNS,DE_SQ2, DE_RING, DE_TILD, DE_AT, DE_EXLM, DE_LPRN, - KC_TRNS,DE_ACUT,DE_QUOT, DE_COLN, DE_CIRC, DE_LESS, + KC_TRNS,DE_SUP2,DE_DEG, DE_TILD, DE_AT, DE_EXLM, DE_LPRN, + KC_TRNS,DE_ACUT,DE_QUOT, DE_COLN, DE_CIRC, DE_LABK, KC_TRNS,DE_EURO,DE_PLUS, DE_EQL, DE_ASTR, DE_SLSH, DE_LCBR, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, @@ -230,8 +230,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // right hand //DE_RBRC, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, - DE_RPRN, DE_QST, DE_AMPR, DE_PARA, DE_DQOT, DE_SQ3, KC_TRNS, - DE_MORE, DE_DLR, DE_SCLN, DE_PIPE, DE_GRV, KC_TRNS, + DE_RPRN, DE_QUES, DE_AMPR, DE_SECT, DE_DQUO, DE_SUP3, KC_TRNS, + DE_RABK, DE_DLR, DE_SCLN, DE_PIPE, DE_GRV, KC_TRNS, DE_RCBR, DE_BSLS, DE_PERC, DE_HASH, DE_MINS, DE_UNDS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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 9a4d485387d4..000000000000 --- 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/algernon/COPYING b/layouts/community/ergodox/algernon/COPYING deleted file mode 100644 index 94a9ed024d38..000000000000 --- a/layouts/community/ergodox/algernon/COPYING +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can 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 . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/layouts/community/ergodox/algernon/NEWS.md b/layouts/community/ergodox/algernon/NEWS.md deleted file mode 100644 index a6ce9813baf7..000000000000 --- a/layouts/community/ergodox/algernon/NEWS.md +++ /dev/null @@ -1,229 +0,0 @@ - - -## v1.12 - -*2018-11-22* - -### Overall changes - -* Updated to work with QMK master. - -### Miscellaneous - -* The `😂` symbol can be entered with UCIS. -* `LEAD r` now inputs `Right Alt`. - -## v1.11 - -*2017-10-01* - -### Overall changes - -* Updated to work with QMK master. -* The `$` and `^` symbols on the number row were swapped on both the base and the ADORE layers. -* The bracket tap-dance keys can now be used to input Japanese brackets, `「` and `」` with a third tap. -* The second column of the top row on the right side will act as a "Social" application selector on the `AppSel` layer. -* The third key on the same column will select a password manager. -* The `GUI` key will now launch `rofi` when triple-tapped. - -### Miscellaneous - -* The `👶` symbol can be entered with UCIS. -* The `👪` symbol can be entered with UCIS. - -### Tools - -* `tools/hid-commands` can now find the `Mstdn`, not just `Slack`, as the "Slack"/chat app. -* `tools/hid-commands` can now find the Plex web app as a music/media player. -* `tools/hid-commands` now understands the "Social" application selector. It raises the `Mstdn` and `Tweetdeck` windows, but keeps focus on the previous window. -* `tools/hid-commands` now understands the "Social2" application selector, which raises `Signal` and `Viber`, but keeps focus on the previous window. -* `tools/hid-commands` is now able to select a password manager (KeePass*). -* `tools/hid-commands` can now run `rofi` when receiving an `appsel_helper` command (triggered by a triple-tapped `GUI` key). - -## v1.10 - -*2016-12-28* - -### Miscellaneous - -* `µ` can now be entered with UCIS. -* `™` can now be entered with UCIS. - -### Tools - -* `tools/hid-commands` can now find Banshee, and prefers it over Kodi. -* `tools/hid-commands` can now find Chrome too, not juts Chromium. - -## v1.9 - -*2016-10-16* - -### Overall changes - -* `F12` was replaced by an `Fx` key, that activate the **Media** layer as a one-shot layer, and also `Alt` as a one-shot modifier. - -### Base layer changes - -* The `Media Stop` key is now a tap-dance key, and resets the device for programming on the fourth tap. - -### Miscellaneous - -* `π` can now be entered with UCIS. -* `🐁` can now be entered with UCIS. - -### Tools - -* The `tools/layer-notify` tool was removed, it was an example, which I don't use. - -#### `tools/hid-commands` - -* Now looks at the `DISABLE_APPSEL_START` environment value, and does not display an AppSel notification if it is non-empty. -* Will attempt to re-program the keyboard when receiving a `reflash` command. -* No longer tries to select Emacs 24 on `APPSEL_EMACS`, rather, it goes for any Emacs. -* The `APPSEL_MUSIC` command now includes Kodi in the list too, as the last choice. - -## v1.8 - -*2016-10-03* - -### ADORE - -* Major rearrangements were made, to reduce pinky use, and to balance out the hand usage. - -### Tools - -* The `hid-commands` tool will now display a notification when the **AppSel** layer is triggered. -* The `log-to-heatmap.py` tool now treats the innermost keys on the bottom row as thumb keys, as far as statistics are concerned. - -### Miscellaneous - -* Fixed the **Steno** toggle key. - -## v1.7 - -*2016-09-18* - -### Overall changes - -* The number row has been completely rearranged on both the **Base** and the **ADORE** layers. -* The number/function key behavior was changed: function keys are now on the **Media**. -* The `:`/`;` and `-`/`_` keys were put back to their thumb position on the bottom row, on both the **Base** and **ADORE** layers. -* The bottom large keys on the inner side of each half now function as [tmux](http://tmux.github.io/) keys: the left to send the prefix, the right to send the `display-panes` key. The left also doubles as a GNU screen prefix key, and sends `C-a` when double tapped. -* A number of functions, such as the **AppSel** layer, now require the `hid-commands` tool to be running, with the output of `hid_listen` being piped to it. - -### ADORE - -* `Y` and `X` have been swapped again. - -### Media/Navigation layer - -* The function keys are now on this layer. -* Mouse keys have been removed. -* Media start/stop/prev/next have been removed. -* `Print screen` has been removed. -* There is only one screen lock key now. - -### Heatmap - -* Fixed a few issues in the finger-stats calculation. -* The tool now also timestamps and saves all input lines to a logfile, which it loads on start, allowing one to continue the collection after upgrading the tool. -* The heatmap tool will now colorize the stats by default. -* The periodic stats are now printed in a more compact format. - -### Tools - -* Added a new tool, `tools/layer-notify` that listens to layer change events on the HID console, and pops up a notification on layer changes. -* Another new tool, `tools/text-to-log.py` has been added that converts arbitrary text to a keylogger output, which can be fed to the heatmap generator. -* A number of features have been moved to the `tools/hid-commands` utility. These generally are OS dependent, and are easier to implement on the software side. - -## v1.6 - -*2016-08-24* - -### Base layer changes - -* The parentheses & bracket keys have been merged: tapping them results in `[` or `{` (if it was shifted), double tapping leads to `(`. -* The `:;` and `-_` keys are now available on the base layer, on their **ADORE** location, too, just below `[{(`/`]})`. -* The `Apps` key has been replaced by `F12`. -* The `-`/`_` is no longer a tap-dance key. - -### ADORE layer changes - -* Adjustments were made to the **ADORE** layer, to separate some inconvenient combinations. - -### Miscellaneous changes - -* `LEAD u` now starts the symbolic unicode input system, instead of the OS-one. -* The mouse acceleration keys on the **Navigation/Media** layer have been turned into toggles: tap them once to turn them on, until tapped again. Tapping an accelerator button will turn all the others off. -* When the **ARROW** layer is on, the *red* and *blue* LEDs light up now. - -### Heatmap - -* The built-in keylogger has been greatly enhanced, it now outputs the pressed state, and the layer (Dvorak or ADORE). As such, the `ADORE_AUTOLOG` option has been removed, instead there is `AUTOLOG_ENABLE` now, which when enabled, makes the keylogger start when the keyboard boots. It defaults to off. -* The heatmap generator received a lot of updates. - -## v1.5 - -*2016-08-12* - -* The **1HAND** layer has been removed. -* A `Delete` key is now available on the right thumb cluster. -* The **ADORE** layer received a major update, see the layout image above. -* It is now possible to enable automatic logging for the **ADORE** layer, by setting the `ADORE_AUTOLOG` makefile variable to `yes` when compiling the keymap. It is off by default. -* The `~` key and the `Media Next/Prev` key have been swapped on the **Base** layer. -* On the **ARROW** layer, `Backspace` has been replaced by `Enter`. -* There is some experimental support for entering Unicode symbols. - -## v1.4 - -*2016-07-29* - -* When toggling the key logging on or off, the LEDs will do a little dance. -* The keylogger is now optional, but enabled by default. Use `KEYLOGGER_ENABLE=no` on the `make` command line to disable it. -* The `TAB`/`ARRW` key was turned into a tap-dance key, allowing one to toggle the **ARROW** layer on by double-tapping, and as such, avoid the need to hold the key. -* The `-`/`_` key was turned into a tap-dance key too. -* There is now a way to travel time with the keyboard, toggle the feature on by hitting `LEAD t`. - -## v1.3 - -*2016-07-06* - -* Added support for logging keys, by pressing `LEAD d`. Also included is a tool to generate a *heatmap* out of the logs. -* The arrow and navigation keys were rearranged again, and now require an additional key being held to activate. See the **Base** layer for an image that shows where arrows are. -* The **experimental** layer has been redone, and is now called **ADORE**, and as such, can be enabled by `LEAD a` now. -* Switching between Dvorak and ADORE is now persisted into EEPROM, and survives a reboot. - -## v1.2 - -*2016-06-22* - -* The forced NKRO mode can be easily toggled off at compile-time, to make the firmware compatible with certain operating systems. -* The `:;` key has changed behaviour: to access the `;` symbol, the key needs to be double-tapped, instead of shifted. -* The `=` and `\` keys were swapped, `=` moved to the home row, on both the **Base** and the **experimental** layers. -* The arrow and navigation keys were redone, they are now more accessible, but the navigation keys require an extra tap to access. -* The **Emacs** layer is gone, replaced by a simplified **navigation and media** layer. -* `LEAD v` types the firmware version, and the keymap version. -* On the **experimental** layer, the `L` and `Q`, and the `K` and `G` keys were swapped. -* The **Steno** layer gained a few more `#` and `*` keys, to make it easier on my fingers. - -## v1.1 - -*2016-06-14* - -* The keyboard starts in NKRO mode, bootmagic and other things are disabled. -* A **Steno** layer was added, to be used with Plover. -* An **experimental** layer was added, something halfway between Dvorak and Capewell-Dvorak. A work in progress. -* `LEAD y` types `\o/`. -* Some keys on the **Base** layer have been moved around: - - `?` moved to the left pinky, left of `Q`. - - `=` shifted one row down, but `F11` stayed where it was. - - `-` on the left half was replaced by `Tab`. - - `Tab`'s original position is taken by a `Media Next`/`Media Prev` key. - - `:` now inputs `;` when shifted. -* `ESC` cancels the **Hungarian** layer too, not just modifiers. - -## v1.0 - -*2016-05-26* - -Initial version. diff --git a/layouts/community/ergodox/algernon/config.h b/layouts/community/ergodox/algernon/config.h deleted file mode 100644 index 583c3911f18f..000000000000 --- a/layouts/community/ergodox/algernon/config.h +++ /dev/null @@ -1,22 +0,0 @@ -#pragma once - -#undef MOUSEKEY_TIME_TO_MAX -#undef MOUSEKEY_MAX_SPEED - -#define MOUSEKEY_TIME_TO_MAX 1 -#define MOUSEKEY_MAX_SPEED 2 - -#undef MOUSEKEY_DELAY -#define MOUSEKEY_DELAY 0 - -#undef MOUSEKEY_WHEEL_DELAY -#define MOUSEKEY_WHEEL_DELAY 0 - -#define ONESHOT_TAP_TOGGLE 2 -#define ONESHOT_TIMEOUT 3000 - -#undef LOCKING_SUPPORT_ENABLE -#undef LOCKING_RESYNC_ENABLE - -#undef LEADER_TIMEOUT -#define LEADER_TIMEOUT 1000 diff --git a/layouts/community/ergodox/algernon/images/adore-layer.png b/layouts/community/ergodox/algernon/images/adore-layer.png deleted file mode 100644 index 75d2ca4f08b23b8233b298b0a30cb62b4072f0a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 105611 zcmZ^KbyQXFwl>`%z3FZQHr*)Qozk1`4y9|uh7Cx!lqiUlbT>$+NH+>dt8{#e-?`_0 zXN-IAUwaG&>s{}fJ)ikZn3jejE*1qA0s;cAvXYz*0s;yc0RgcL0}c3#g-J*e0siJ}8F*fhUq284ibnFcz>A97fSLz2GcBk6owW(1mg$X#Mt`)k$99MCkFDcdP$Hx#1o{^k&;I9+r4q{L%F5KE!$ZG-*ROGP{%~47#=>A{%1TNB4%XJz zCx?ePfq`4RIQyW3_-Aw|7>F`q|KrDt@oiq-*cH}Sn=dx3tRF|*+}wCX2)B1fGig^= zRt~ADsWJKgm&g9=EH$+7=4O%pp&{15z(BHOIXOA1w9(zwI1)}fKCBdm|Lf*2FxZ|2 z++I8ft}m>#z>R~Cj~^%|BNG|c$oVdq{rD*)$$9rH% z1m6(LL8dJKkI%+HOjQh1!b$ZfU|0IzWcws=97G1N1J(Z`_k zSzMDwmm+HNo0!};{~VQD*CtcHSj`neI=qtq*tuTl)4|e0JpOhx zIpq##uaCr_ZuNog}HX&WlvO|F14fJ`AlfJH9G9 zc?`skr-Rq%Kj4j#BPw9Hv{4~dFyOU}DQT!gm842?=$%F;R3<2Av#F~nQk_9`5K{j0T)(Gt{kR#UF~gC7a}~miN+_|Bkz8a}NY0Ih=bA6I9p>s2 zhY3Jf^5n^$f6t$bw2|r0bZAzd%Rz{tJ*q;4|8}!z48*uatmL}kIhiDcWKeVn#vXbY zHW~MxV$HkKMu%wzL;M4l{)IB7dWTh`$)!D(hu%d_kH4pLvHj2DyL@Ef$1Es5vUFR= zuI-PPh+M8N+Mn%Qo3C#6S*GA84`EDq@olk+R1zDokupS8qwHGw*7Apwc&4aMWoSYJ zN_sH0*3ztoaJY{!Jslkq1cu0FN93Wk_fl^SWP)$@_Nz?P)1|&H-UtZ_36b*KPxPlS zt8N?}CGgp{|6MIDJh$k01Iy&GfDFRPO+|J59L4BAe0Xo^Q*CbK`=_i>Y@Y$1)cOmK{Ule_IUeR5&Y5Vu2z2f2%x zDK@SK`PUb8e%lxiFF16*9QuWG-fW}K4Jk&WVcYHfKDAN1l_bV5V6|O*o{Ug=&}^+E zEiFRE-rlcKM1jHL@EK%{pl&VnBT=*uYBhFu4cJQe4k9wI{VYq#8|BsZ#@3=gSii{RHnViKjdbs%K}IK0W>#0!{hPzY%naF{m#^W0#2hU*Ime*)in&*ZJtEMbbrNv66- z)AQczcy5{QDUAM(fJ8IbTt-1D4cqTD`W2hMOYALe?cE)|!DrSDJ`b`}87yCF!4-+> z1>)SG$A8pqIBq67BT(#hKLZ^RI0KW!l@ zS=yG~a4w`}OBWhezXM6WsUOJ$i6*7CW8n^5*p5DHw#6346mtEJr@_sw;I9@!#IWq> zwY5TCzs9Rt`tJOXPnOX%NlkSosneaW--f`S<7w;?g#v%>zP?eL59{ zX{5<<6_Us#d5f;_XOkcKjZpB6psqEMSIYUxs*ioUZMD}o_qSE0XRbeWifJir3LWXY zAwu9mgq(gCEKN2gxc%cpymxpw=xSC|!I#itjAam%3lS>86RkVRQ^Kk9FLDHFRTw;n zQ%MnotfhOiGi82cq^GBupBJjB1y}NS>o{V~%)IyT^NW^Cxm8`L%fzpB8IXvIiaJdJ z&CKcH98V#-242XS`UrFu@C`8KrL0F8)!C{0yA4VZvQ!DU}Z*M|T}eJg?7#E;Ts$t(xn` ztdm^$YDsT3uR{87SyVzX1ScW^uN7cIc^T%q z+2(P7+^Ov{1Rm|R=o`SRJFH^$RtgMwAtilsTpI?UZ%wL9K7`{FvBLMsZvzf zD6G6WAv8dJFS>IN$`i1h?HzeLNjM!k5o}Jx#l>_L=!#s6k84g<7H&mg3C?};XNb`J zkKS5q%i3kuf?#NADy#R7{2AZiIQAe}9Sl4;!Q1e>3mS}5E=&z1BUwd+{R=geg{Xjs zIag+pHAThE5|;5fnq^+0ki)FeUCzvnA0JHP>TQ?Ds;z^VptY`A-=){1ME0kROHGIv z*Gshfe$>lR5|LLpI<@Q8G4o1 zl;0w31iNmIpfl(19DG(UPqyawV`XEvjrdRAX9?CH4a18)SoWFcN%Y=>5kA6_C`L~f z{9-oC^=MMMB=}_Ql-m%G=;mUe-E|p$%+#5s4hIV*gA{1}>?#43+8s&FYD-BIG8VQt zvU*};NhK8@)2LXI8W5H^5`i`-`C)@ zgi98FXSz)L!qKQ_?eQ5uDqdH#9%o6vZ_hT)>}rJsE5e4W?v!x66A=aI!7L&7f-+U6 zFH2uFG>6}v&Og_yGNVKuN>XgN`I~UTMVi*n`xBI_gj0emtnH)51Z7)s2x6>f1~V}9 z)mY7{m_CSS-M)F3OdnI=E{by>!u3h7%1SFTw*M88 zMK%4!k+@|y!u!$P)ACmY@}p@2pE{TP9v;4#v^PKUNUX#| zWJQp?&yhlc}9fSok|oym8|&iE&QlOMPRH z{m?{rMeEgX8l~ho9l^(z9G8wp;083Iz<-z z_B{SchDMa~%HMt_(QNLlbzFsfIa^njNd^U8xDHfF=F(-3PM=hqOxLw}CLQmRSrfsm z_>$6%Ib?tWv32}U+B~$snZ%2_E;Ku=CsLtAy#lYM=BwJL>&XPpEN~#z2emuY1PUSk ztYkSz84DQn+SBid6pp)+I3Rhu9dGf`TH_Z@mj5l1X?!60nDo+H5Eu;JNXfvXMELGD zp75dM8TAkimcr@$eRIGW18d^qH)pNTs|HuDsDP5;0KWq)jU&el1 z*|W(wW)+6Y!^0`NX%)T0HPx@jYOm%^+Ix}IWSM%?|9p-*07dRwlBi&fHb5RZU9Nvu zrnG$id@%R$;PCy$Yr||&2oWXaXh+Flum%2laPhllF#7U*{%PNmS&~;r;DFG_=9ZRn zNsSb5*1?6igwwu@Z>QB3%QmJTIbmm8XV!TObup^F6Q4%X|D0`l<&fVJM)X_u%g<)$ z6ZmlOmwPNH;yw$ysM1zvBiO!Vjq>kqHyrbr%q*UVaHvDRZCSlT! zZ7zgoiH*`yNkW06XO2@>$SkQJheO0^#bw0|cXj=uG?Itc(r87yaztHg13T}vu$XM= z-0ke}L-lWR>%D!X>75xw8*utAU+LZ%Q_k?$Y5KhTNqcp~AM#&*v(4O_PHe7X_c_-!!IGQtFDxw$;SCu?)yx;k!1QRaJ% zrlYf%s5<*4V|THkF1?#ivw`!&ZnJMGeeLg`YaNh0-3)HCPXw?t-M@CAR#(9wCw+eM zpZhA1EI9pZVuFbNx5G9LOJA@a@E($Gc|}4uaSm5~XUbRrL)N>JUlmOT75i0h!e`U^ zjoMwfM{Y7@hf{2MtuF!&SKbg$XmEq19og2pl6s*Hp@k>HX0G<{V7*k3 zRgw%?ypVGV_mT8+0?qn78yW2k-GUX6yOfmFUW=2^;Yj8PvjU5{tV$4rghX7={2;U% zJMw`${R0CZ2hv5AMorB~zLwy{V3&xLC!%6I&MRJAZmE`}!S|}Or}Xp$@66xT)bdxN zYQIw9U|?X_*w{iDmGFyR4UEdKBiml&|NQ`Qo(h-ACqQC>BZyx#o(N0NoyL!r+I|v1 z24n8C>5L&82+gzDB3?cOkwq7C8&I{R{l@ClMTxZQ-26v;@1#Sk2w>oH4NjcZMy%2b z13vO~0$B19R)&PMy9PW2xvg)09xtR5cPjm`mm7c5Pj z3MRK@l0g4x!_W;0o1^p%lMwGMhRkm2Ow;0-L$BG2Dy35xiU}U~*cEMdI+_ASWYX2&k zshaT^0mQ(bi3#)NA=$SVau5t8MojJSr^1K}<>d<^!bsP^lO;|BMLd*}p`VrD&eTkUHE${|6#yPcG zMpP5aF%epOsS$zTQ`kJFu|%j`3N1iUVUuz=w8BIFcNycEsRUyobXVOB^6Mxr?q0!g9oEf}e>UiuO z$HFuSPZIMI1xo~X2!_wlxn4oSdQ~8K62U0BO_eehAzvc2&qsteHzwxb@PyI^@okAmUbDI@0y1F<&z?@3{AexJ7TeD&U!D8}rgT4JgEK)}G8w+v zRM}v5I@dd+iYv}44~_~O0;SCM_jNlD@vN?WVdCob_Wtk4ZAETJP}6}fL<@ZIQoITg zp{$ED1M0#Lw@iBUgx0@aAz}{dki)eON?9n*%Ptyft%@|FppLXAOv)Jt-Q!=c3^dh@b!U0#o zysG|oKD47cWvEB{!`c<+;Xepde_h!ciMhorL4Li%ZkZnqigS{O)KF}|*)h$e9u+qCF0Z7Q?@r+6Wr3$(hgqc?ho#>Em8UF zxK!mfZ3608EoyeB-huxZicYGO<>*)C=D-7q6v%c9HMuMFkMIFE&Ifi2gc5B_zXw8% z%B9$^_B`NUCqybR)`T<5^F?_kD7alF7(h$HSTKm~2)FM}mXmKbk%fgdT<7rkxoM(H z8wA}@9$;-BBd0Q;R}Y70Qe|xc&Rz%S3-#sIg1ZrpmH_2mhLXu3ZHqcJAaE#VR zd?aLKK?bl?kkVFTbMV}I610m)L=BAz%N_aC0e&DW;teKcCz6gYA5_(o62|sxsY7<6 zv^?|Vu#NuCr~S*)E`l07SR#aucRKk5?{!*y%GYqT7_*+N4d;m9APE3J1>~QsO?+rl zF8TwmR<(2BnERt>r&$w5qWmiOqpv?)x)D3^*e$1*%|X0VR6eyuM=KhIaM0e+iW!U& zVdw$A9#}AI^CQ{Ki49+9Pkavbee)So$*Sn3f>xP%#8gwK&E3+uE2EeTNch`28|-C-eely_zKT6{JJcM zqP8-2&u%jia@D$1#qu^S2hL>EJ^Y<4gT(+zhb5h1^V(ZPnM;(9G1JUlhJd$7dTVP- zfC0SF!OlKR#UFIBg30tTXk%i=phAbJAb5$a!C8p+Dwd8gvY?;0S@(SZEl=1c_Lxld zYX9c-DDRs`JGriqc=^>^tBY@`Z;jZx)Nmbz3(Vvopc%?JGQdS0B41dsfc-S{62AO( zE(uA}$eL|M&&2pWmNR~O${u+-R1|P~Vl8m^ZD7MjbUm+E*wAS^RJL)qE?x;o_Dy70 z^&P~8jEoF0E)d7#VL7V%M1s z_Q_E%^Pn$4`@?*OpCM? z$tKLhD`GzCEK4o9(Z}{+a&nIB69La=rSFl(iQcf;Ghe&E8_$zWiGe?2B zWqJ{xfXE^}28@6-HI{IkpA5wZ(W=K#yI1{n@kmlXMm$Uo7G}VLYhg4cn&zP!(nAQd z%5mGyeKtVR9sBJm(Eb)>e7bz0hasz#1&KdAAL?H;IqlX@muFT-zWNb9(6_-^^QEC@ zNEXd<*HCsUWbX2`+HlmeFIoxiQf6JkFkRemMwsHfz)I70mb2eCYZEQGR*Ao;~uB^)9j&Sa1rB&)Y($NKMofAeNJ12yo?FG!H&AP6%% zX`gN0;ki{|h=!nDPMY;+V%tLo6{*3;U-4?XC=VD287Uo?U{+Yilsem zw!zz?ef@7(2>be}dgtf~Bb9J;K^bxoo4}Vi;%Y!rkNz0v^MvIyfD!b)M;@}VH#W_% zo}&fzyzEyQtg~jKg=}k;?kes{gfzcI2hIf?%BQ=0AFhPM0G>;b1vImXIbMSNU$^gf0}tffc%+@QeZc^lEKoCbWM&m|9kZ_m36J z=H$dFR8`f~j&n;dw_7XTwOYqO85N|*WBUO_NSaYqyj%|A5JT3$f-*(`Tv}}sz;sVj zL60ct+iiYFHPTEdAtam>-(W#tO6CiJPl0J-KRNwgz$CBl<;B5QV7>rs1~3*G?CfDx zJm^&u_e4jC>uGI`7^c8kf8+cm4`@#{=r~u^&i^2z4Rp)ida`= zQV@EdMugl<@`sG&?;bw3>Zqx8rR?L{l~oT;4PSV!{Uh|AQ^@jiyTZfIf7FTWQi=k* z^N~Q?y|4Dixo71d$5HN^Q#A~u z#5z~aMfG2G1_uW5yHQazIt@^xf5->rNIhR_Vtld%25^0-TiWs4;hnd`yEV0qI-EyV zdnR%UL*8A6+$LD>jx|=gzTKOp)BWQz$^JO+Kb97i$Dk)Z-111MraiOVAyq^9M-zY4 zA#774st~q^kjE3sXy9%OwTwcpODH@%JW$c% z+VEtpL)6%1rHsOGkV+NG0ygiu4hx(Acy?K;$s4*E47|#6;`1xi2w>XlIi4QGG?;v} ze0I55msRITWG|8oLVe>R&EM=T#zMh7~xOjbKW}10GGR^iA1EF;xlYIj;>9)c(F` zZ>BZz6$4<RkOw7$hSWP~`q5HQ_ z`r8i^eh^|Fb1D~mBu4OpXHj+M4c77TF_maf6Vdjvd)Mv`_)D>Vg@K6QAt;WRy?6Lw zE1rkfeNEyxOT}stc4o{&>vM9D|JUc0kc@ zho^#sliu~Nv3nB`UEoOxR(OG5oSi?Q4!(+|yoMljW<9UQgDk<$gboD<)u|%H{oQ*% z!f8pzOcF-Yu^wD7HhDUqW&-qDLYm}2X5JJ=h4r{;E80AR713y!DZ|@S9$N{c1b>lP zFAu(W-p&@J+e!ABg=p(TG~8pM0{cYax?NZ$OVhW9C6ZUJ!imG3b}PjF$vi+@BvJ|z*tfP)6&yBgih>~0=iHdo|rzS*~mmW{i8gRA$msHTssugYg;uWHkIABIL&PKJm1@}yS@ z;cRw>rlu55bCTg?ntcA91A`x|Cfdnsx*Xg~Cb6=$Ey^Z%{R+tT zs4k+)IDWYt|8hVqWk`)>wR1J8(Vt&$^ge6JWAk9Gr=6fy97VCULs3)9IAH{Tw@B6= zE>Q%R8h3~>I{b(@yC@>$ld4G7=);eD;>|tFmxRYWPLFeNvIU&{1L>{tWOw%Er9iujDX-H-FI%F8BHc0|>nE;{z{-Ql>(& zqUyAS&jt`635!>L;$3gk00EZM*e~#5u6drGCs+0r~lnlhFtkfJybeqo-@$UWCHE*QrKO}@^DXO z@3DdQQdfhJ@ws|p(lUBaUmxl3pYw9rGx8pn=3LN(_8w+k^R`bkT?8Dj0PjF`0W8VS z+5Er7MkP`YFh|}E%&doe?~S~19J!1j`4v?*4v`j>LKF|l!xL9T4{C5|452D2((6P} zpllO3oS_@PI-CJ!zEN35LB^%*_V%wn5zjXYt#mc5VGiC`2=j(cIn+c&eyR5{S~M#0 z5e@y^8X(7L%3XjDt&2JLtOe?GZ@zs7paJ-;*!`9XYWgmmv{KW0Wr1UFrd+@%Y_)J0 zb1X+2IbS?uowEpd1O%j#gmD6PGqot(l|8}ZeRh|Rq^ z8R7P*lvEb~34PW5H?)a~`4%O3FuJ+b;OD^R*Okkw=0ohSE37U*orkr}8_Qu?m z-jM<^2Qiz2kdY_(B@@(239cz7JXmb;y;x;;?0w;2`;~dkCzk#vM$aE@Ga$=T>iRYW ztLm0EzquyOTTLg5zbMy#*QPl;@Nf*PJNuc^P&QSMsBpB3f!?$NqsPTX0N|~1Gw6J7 zwX{^54>S1c=KJ>(ImjNiaf&KN7T!}ij$=y=v|CERO!4>~UT+3LD)0VSNOLBi`8UB2 z?CYlN^H~W={g$tPei)~SUpG8?Sppre@f_s<)J-&mcW+y!sB9}8^fV{FJBB4`%9bQ) zl)StzzB<6R5O6XgPD~t07xJYC+i6rl0crFNDny9ZIqfij6%slyot;&=vJ7>V7ccU8 z3Kg4XKms*fUG#uR613-W50v0}a%dIiGT)T-thwei;BA*~n?sng9_M@OsQw?q{Lecq z_0?mCm0=z}^@`DPAvM>JhR%rkGs?t_yZ}xN?T;c}5Vzs4$0}M%0UdVE;SY;+g-~)I zEyOGuYI-UEg8Kr~1)v`s<^OccOxRa{_j2hO(#;E?gbFVFl&ee=$;jEtyS9AfpT4uhy0|3-_IIvHg=ttW0pr#I?Uzs0Zy54d1;%&)|S+Y_k%;p)zK1MsAz2)7?1mqB91JluK1T*f0x za3^1tjipjn53iY!imqcuUR|W8PzSwGQj{-+9Gw&`G+(nHuR0azo4?A;2f_Ot=BAK; zh2RgA^KUNHG`=K-f$dhFA8+rvcg^eQG|FaT?|m!5>D;dl{>A|G4W}JqgpmXwbi*XM z-#6(mhLq=!If!9rt5Z@Am!9^24j-aP*JdrAa(yeNHdzANQAg6>0)uhph+TA${~rQU zzpAo$hqXXKX7F*ISW<%Qpw-O&{ptB-Pw7!$t^GL_SKzyAKK}UuvTg^$EU=8-dj0Da za5hP`TVHM2naUl9$IcTjXPqE&kO_b=SI^iEnb2~1F4b}(vzj&m;0HT$o=51WxWHXw zGnX?J0s)sk3}ppfAV>s_oZ=!z-cQ(P7D0rfdzygR!g{`cndum!#W#Y7vIK@F16@FG z@XM#zx_wzPRkuvG@Ff@*De3TOvO+#4{7Gypz82QM;g7#8-%};lu=<6fE)Bxmj@%MN zOfn+w8A=9Bsr5CautZ`!tvMlM&CjaDhI_idXNl}`%TzT*=jYpI;8m|PmALh#Uj34x zOym6Z^*;j{Yj}?wkX1toOH?OGLE=svuLPV+qA&k^2a>3B875d%9lB^=06AvO7Ulfo z>!<>$c}U_hkF0YR+LkqykhpI@+l|OByV8~oF8`2h+KB+=;kC}^y8c6XHTN0X_d5e} z9d817SyWID#k6Ni#HNBj0n(4CCv0@#PNeEU5!4Y%bayb{UsOOwf2hp{Ju-FHBRdc? zG+${&r$l@F%IrPy`uXcO$ce{`@$9mc!~Y1jveKsq?8KQGt$_2LWN^*&*>(NR-xhb_)-Fj)0TMi zHx6>vyL6{e<^bdY(wbdn@Hyax#L1uoL=q=fC@D9;(vvk7vGniZJ7$G&5Hshy66B^N z&hM^FH%53tG|XO3L;I&1c!F0Z0i% zPyu5!yLWg4H7vFpM|M1>L$7xFpVjLkMgw6!=Pd}!7a*-pft~)bPIx)GO!vY+K=SFG zZER9(uVL5th*zIS!K32>SOL+(x-N)veG?WiJsT0BD z!5+7+!1&rJ?+G2_-PCqGbu+ez9eP2`7u!G8n}9_qOC1hq@{~!z#YNy?t_m9+{b*9f zadQbtSY1u+#n+=}&CP6?xUP#rb!k(Lqx3Z##iqL@-T6pb=|qgx?XJRW#V*qf4qKe2 z%DN`1s(;Gfk?WPeI%MrglCM1Q)$W(OPfyDV6UTQeiZ$^QvO{(A=Bzhx&TReS38L$~t_AGxVYkWPS@3bk_A)ucAVRQHQ&zhPqQ3(l^I0jJ?8CZSlK#RI!#%XWH3F)fLR@b!|1IW^Ck;B{UAH=MZILu4;pKJ z99TbZLsQGs=Ogm|;CP>YC|ZkE3ia_7}c|doApGM5dRb1TU+2+;`#J-7+APBaCEb6nc^zO-?Es z?HdJ(8@)0q_d!es$-vb%Z2`DL;saCiGhRUyEPj|La9~{>RaK{N|=s28*AJ9ZKf7UfNT7gQHRdBH3d}NYra`xuI_2m zr>*y=I@W3y+Os%J-lhJaPKS%l0zC=Wzl?ZpN|jPaZ}Z9pl1 z_NGl?dio~H*EVPOodM2N3ZeP8Wr{K>RH5c7gCA+d>12^UuV;oy9Z_!_W@W1zmjPu! z(OY5zykt=Cmhub+qORQ2aC8{Jqzy|kp>8JQ`X@_g+dl7^ST@_%GeO_J{ms!I?EL!##k}vruvGvg=765Cfg#hi&)4%~h zK_nIZx4U7H3w03ukGG+kkMc2y)X&~*miM?0FVe3gJAWnnEK}XVV{K(k|ML6Hh$x{C zs_IJ!uV@S&buU2K_t@-3H5;JV4QU+k0uW{l42+E%VJ2Ae?8bY1FBj>Y*oW0TOJ_!| z{rBv!WT52Ke()7-n9(UUUfd>=Y(=xLJ{%i^`Vm`nx7-~RsBjD@%9kjQ{(u_jS3CgG z_TQrgAgNj6wfPGHljZRjE&(Vb!c{RZf00o(;IPla+%>>+F>oBwQ+h#Uyo+q_haa+- zdrMz1R!q52sef^ySu#P50I3Zu)asD4tYG!!Kub~oYMNUCgr-b))4?R~p{?@=&b-(d zO`76mf3vgo7R5K;k~BrubAa)e6bdlP`A1eo%J9>#yn1fBm+$#wLbegD5$88SeeQV);j}#_Gc4RAXIHvi1@Oz zr^>p4dYsj()3oZ{b7}okav9*IQ`9`5W$ELbV||(lN4&6N1q<|iopJ@rZP{dy=uyZ$ zH}%W!x~KZAo2eZ?nZf;}b>tj_4?I$+x$orq1_lY;Q)j0>Wihq}VrN>KgJ}eq!COSz z+Fh!WceP$TPI{lh*F%6jHu=u-Xr%!f^4{z3&_C9&E(y%3tZhz7pS-HiqC`1q5W_SS z^o`SC2wpl{`{ve3LgfD0fJ7Ym3XObB5dP;*^BV5?MUw@UB@=7&{FFSEOvY3XelhYs zj)R}SURP~1wfR|H)h~K*Y}@+{DQ~Ss({Fy`=K|o%{LhfvlG=NSz<@@>|cu{gSjD2DiB-SlTVa5G~!1AGyO#2TONXCkbrx2C)n z|FAMF`LVr6Q$N1v`^$wSO+fu)O@T>|;YGSJy|uB7aSLQUwFyJ)tk9Zjj}j$-xye@Z zbG^KZ2`x2bZ;t-1)lX_>*7oWl{)9JVEuj7S7WdHQD8bG%gb5lSk1bTSj_z;B^YZT~ z59^>iKI7EbECH@Wy{1V2N1In~u%wP=NppqW=T#w^oezJ{0w)OgIsYfvyo&d&Xv1E+HWit%|^zrmm);Cx`M*>UA80#)!o#RM@4U z;jiIWDP>Z?zCbjHzDx>wE@Gyf*CnwZYrGS*NLl3N7|+i5n?*TkT>*kz{4a%XkoA?H z#7}mHw(%pvNEB(3xyaB2y%{49KYrM-9|4m1BxJ?+@2w{~{Ec2!6AM2WO2)~Mkcp!Z z6S-Z&83ygZlolFr^d#EC$=EfK)-%vZ8e3%dY10qHpE2Hs^~pMfX|TJ? zVzWt%dDDsUutmkL`+DO=djLt?&&h%cuG$d}|MyIxVFJtpJERbeWVqs;Vls)j~8=sqwL7`nl4${#bZ2{izG#jlVzAXh$nEFD7-)a*2`l<{fF1Fa|8i z+$-Hs4>b?iNePNo4$J&V=He2~Y0Qb@_F0aC5qt=Qxgv(tV89xZkiIF7FiWq4`$^f6g9pyGK zEB2p*^-odD_Au|MK-%Nq#NZ(>ZSO&?P4VEJ)}1nSH{;-gTa!j1RwgV2E&l)#WAiD_t;v-P!zq3EX>4W|zdJ)Bl_(NG-1_%2+#j|7T!!=D z@uLq*{h$H>*ZfQ@Oq>MdhYrIVe&a=_hL3-L)Bh$rj!oeJ$Z~%!^NCl2^Po7d(Kv3G z3ysY-V^Kywo_L%NwHQC>G|3Cevczyb$Mwp-C=D?@PW_=GH}a|d;+JK@Ts;m|N7}^w ze7R$f%D%DDt0&qrq2M>)b4DF6-64Pb!IsYK*09<#UOXc&zV{5k%CNy2OWzpT!0iX7Sl*n`%L(|n9lcKVC zl+e}m&0``_=%26L*EBx5P_j)gjjp6$CPe|-<9KpTd>=u4XaT=9p!q{Y8wY9kn_Jr~ z7pKpSYee}^3cpe!$BNqV>%s5cgE&Z6LWc&vkH?E{Ifn}Oyc=i-0~y`(VdOPDN09KR zKWfkFH|oQ#u6*8SkNLqUoQxT~08`_V9%x67L0H@`4GAOJ`?H3aDamAWSmZDLBu{@u zStQ)l@a3NeS{f_tQH%R+#L$Lx|11bbq&@Ls`(bNds#N)z%k%n#?(o{0wb6Y&Q6pc> zQy(B7OBhfvdY+U_l{r$UGV&6~@iA;4?3#G^8BWwreKdIOb{X4ik>7cTqd^k1p{F9k zCwm&B68*viTUA0l5LMCtE_u}AM(k&9lMk2fzQ+`LKi! z)B0DB3vDqYk_Nx@O08+t=6t?SK1_tNY?H}UGTm1gJBkpHMO%bpw<5%W^KW-HewoPt zn$&C36T_4D5tRenG4CN)z|z@5rqzD4mpDm5lQ+WhcmUTGvf($?Sk+{4na|*`1#6+& zfdycNgYtKL$Rn;elD|h^LGa4`>q9Dm@@2W$p`vb}uVdr&F%|}>Gvd$))n^g?&rI17 zQO=V=pRpU$lk$~qn3c!RAT10==c;}y5oQ2<`LDgnh4>-U}94lfJq0jwg!9uP~$TGg0cqeN9rmxTQf(9D@S(& z_PhmbMrVPo(F_yy4w)1*LenoU6xa*+pkc-}Qfuu2(cd}lY?TNj$$uZ@j~yz*rD;FV zvkM}3IN8!9ECuPueW4+BFfhnE>im?a!34ETLc(M~fhPjw=R0mKMF`vRm@*`<`48f5 zdu7XGZM^>9o1GGdh@CX8w;)IYqTW&ev%VPC+Q9{&;^-3ZU+VQyf+row9`(r77FYLj zzi!1zHgqe@syLtbQf?Amp?0EO_<_h0Pp=9gx&F>f?5!{L?rBaf{;t~#Vq~(oky|~~ z{Zd{>*&BqWtPERd_9ZxsU+`2U?r$fGyyje;$NI*C7uJv(k|?vc{L>Lrx%qOGrFofj z_&l={;G5WPkLCBjwMSU4Qtf%@D$@KxkWx6bf9jLw@g6EyXT9*MEk_BblD>ozShjv5 zQLC8A3w4p@;qBj0aBBXZ9kDWFga`Z>5x-Waup?#61F74sB8BSX5R7Usg>dIhGdCX zOy2n>mc%jrn+x#o#mg>`V``%|q1cb&c1O1N3VG(f;iZ_>g14l>)|Li;1XP^-s z=w#NU4S#2a(Z42(IkHIjF$Su)q%aMNn(U{(F;8UvsjDX=SXxOPCyHI5E+r{Oql%XF zGqGU$X=(gNQdo60&&BW?jAMQA#$^^UNLhF)SE(A^*({`+brMc`LTnsNORkDWw z&JaNo;%dI7btPrR=PX@db%bXG^kNL0Yh>-B4-meqVGH~fKmvzl_I!}@Y`(^(EXmnc z75=eL`93=4r^;1DO*hqsS=<3NWNkMp{;Q{$o3Iy3;*4k-1y|)zMK$M7&KVWvI%YhZeFJ_ZkBe zlK|-6@4h)6VA#x^jvrO~i0W(+Sz5c|Iy)Z?6-nKv|MwDTI)}N^vBXeqL8kY%)~kMs zkdj-BPjR)t;%dBqQG_A8TP;shgG^+22TDUcW*`-N-xut1j$MtL1w7_IT7)M{(BM-Z z?Hut|`6t3@mNb%!_928U0d>7YDAXDOZemE`Ht@^i#JuPSv8xjN`^gN!ohDZ2-bU={ zC0|}^9=y7ZEmQqFsmnlK?|B9cjP}fXjAb5V0yO&7g3~=^Os1+|;r>oyOT|qeFWTM; z8WWW>f_J>=#H6Un=NoIjd|UT4b6v-Vx)r?3!HfT+*DPvWF41qLMJQ_}!CAs=O~dg% zvoso&>sy+#&08Sq+gP*3s8t11e@XdnvE_QdBFeU=G&{Zj5~XU6E1cLE?bSMdUpfV| zRmtvyhbp!z@A8}(yx;PBbe%ta=I%wP3`9bOmi!vGBEhkj9gFrEpxEL6{jv_>Ot=sIQBE6oeQ2@10ZT%S1Y38NMIikD{`&K=qEZ zXug3#NJ*L|m>-J82)8fqF-`ZocjjQq;cpU*E0{zN2Y*hGAA zX3!T0e>wVpbiH*{RZ-tRC?KJ92v<^CMB=K1bV(zjgfy3wmQDf5OG-D=-HkL{y1ToP z76C4J0i+520c*!|w}*Ewll%U);oS5`~3{4mb?3Xyz+z~P(m zLp;rYOs$?qSNQ43-_%z7#dKhgp;p)6c;YufoX&)CYqL#;gK#W#P^17U?5~yoNMS>D zsnw`T|Bn^ZT!os?x!weaNx%A2|*je z_m%#V+Zfv@z3$){Wx88@Ky6D+Z8f6nooVdBxEfv!GXRk%Bt%Zbqn=Q4vATEU#T@Zt z;+Pls3*voqyGN#uUvsQmG01Y@QV*oS&}fjVDnN*R_~&ntCNX30rWxey;fzJBPmRCd z_2r&<&YA(+LF9+7q^H6}S?NxX;;sQ>R8)~734s-#OTRj7p{I%t zW<@BLCdGq6QsieG({7k$?3XViS^15DQQ`iv2(x*KdMcbhwtw~FN7~2UB|7wf;12)Q z2u250?7#T!Hl<@v;8X0Lp^u_uK-3J75-C1@3Z07ueZeqP#DD=hDA>(S0&nl`-Y@4J z{QMZ#>CbH-5qpACx6TO}LnP$8IAAgUD-BmbvgaOK87A*3itU(oexN}?8aVExCLKEf zO;5m%gt!VI$K6jXnFC&9az0OnUX%0wZ^bLtH=K7T@#1(s$9m0OA=h^uoy|`Hi!R23 zSu$7WMNEk{VOoyg96Uo&%dS7%gE(L`@Q!89IRCbQ26XJB9H?{0x}Tb}5WIPSU$A1D z@noDMr5RNnUol7Pdh*%Gjl$Af!1;?AGvSAxmBP7IpNA_RHH+GYjqCsZgm%=_ei7WI zG^{(T9S*3tM&~;%QeJ=u_t^Wnf-^35@_jiAX+Be?iUD3H{N8AOF?HVeR;m50RYOZN z8rsv?Qz2MaZJL@Q;}uEydgZVoc!o7=!Ru(qb7qYAYKPf-^-jdx&VHpM`L&n-ONQ#q zT2(ZYetTlEprNJAG<7>yz{*>*bI+7)3&F`U^Yw+Fh!3IuYbfF>T%`#q7%c~5^iY(9 zRs?w!JPyG*nzU;)hV1oSXc`TPNA7Szm1kE zgJiIFxYOnGy8JH{m$ayGcKqdaQ7Rhtj4&m2>Ax1|dYpuHHY=oTa?ht9D2JlRw|>5v zG>IDd+84ZLz` z^)3fmHnv3~d4$TC+g221|JNkQGiVrzqvg%$(wKc3(F~ z-W0bJ*hPTqem9k!a_(=!Atif>&o|NxYFH0j3afRuCloA*d>Dm9Is@hwhD8n35FE@+Be3nz=y+mTP(=F|2oEJwdka22D*>Sw>b9r zgTQ?tZRw6|;@TtPAt0^x$2|)0SSmOSae^iIQAj@!6Dh+2u=e2XA56dHhKLXD+-;4p z56$~oVJCl=m0`LEA+aYwg`7NAc2^7BG$1n)FpVF3UPeZj>DJAIdA@247y~5a1O(oz zIsD3<%{bpI|J>YREy6$hvrh!lJ$)LqpvyptV?V#Ov!iZi57Xv#BWVq%3NgI9F;y{4 z1HuR?m}O!W*7LcYwnX8?K@A3?P9ts6U;o5WjU-2xy zUi@O>Nwi9Iq#q9N?>`;mh<>s&x+nT*iSL8`c1G41DmMRV=#rK0%lAGfGqi@7!vHH& zJA)DWC4#0W#h}ynZ0{Y4RP<3MK;+f+b05GftoyZH;+`QVR1x?xNIef50q_-)4hj>$ zV?k2nYA(+_XkdELQuYvWH@bn!XT+3&meohdR*H+vJMBEFObMO4TSG)Z`yAI4CnaKzFX{1D;3qsiU_3~rQqGV;^SJoQK*DichTh-7wH1PL1>>%Wg6!?> z<-hMF=Du5bU~ORFQ+fO7WFq3_Shh0u8fAJ8LkmP}3Z{o+L1$khCwI9&DbVT&_9>re z(eEK+t*edUZ_aB<2%ko{O@&P*+ zlGNU-@$V(Ne98+-vf-!4S7VFx^EI39?Pm%>#XJ|~hZ-%E*Isv2HhN7WW3aB#3`H6b zVb>SMVGf93K+N|^bfQOami$J2DFg_zs=+k;=aMTjSxRM&_MJ~lL^;47y+_1Fdw-A; zxiA)a!y6Hd7SQ8SZjCuei+TLB1R!}3RzIQ?Caw!l?WnUL%dqsFmktW<-czMGoeB3u z8lN1b;S$aTgzaZ)zZiRx$SRY)hFu$eh zhcH1KveUH*@F!LIRQb?u42o#of)h&oA{ zMEC%q@{PzlqK&rxupoDuFqDbUlVxC^fItm6Lkxmw< zVfKvBbYAIoZ`|%-+CE>;_h;(hW(3HEz(3?7l@W9lkKvI?Nul$&H@5q;TruohVas|o zJ&03b!@;ZLa{C|3BtM_|=z7k>+GfN@D?FW3Z!!z+0m_vIvjiRV6%}p3#~!i-U{j#v zNYr^1>_&SZ%V!aJ4_)c^NW1CDhC zac5sA6%lsGbKZ%lcS;3si2LCgd-o>Fsr2+E83F=CRFJlpoV=(2=e&-)3(vlCc~)V5 z5C3$C#RJ;bW##q6<)^j0kh}K;Hz09u6!8p zZF5g#FzF?Vsp6tvbaYj_XBXe*zc+1?6?VIznZK|K;b%VTm>c8ehNc44-jf%w1o;E_ znK|ZptX22+ zU`Me{Y<&`j?qXKvRn1Hd(ri%*=he9(esBz5_P#P3`1hd>H0vKi3BhdRhXbzLD|up| zjD(~VkcqV=AV1r4s@IQ=pT)e1plN~TesB1byTLGL%OKezHNlh!|05p$t^J~6qWomd z_^9>65r-4PPscJaKyj$hjK||^`%N#8dN3HS#~^wW0V%@&S;C7??B+9;`nJL>$k(o+ zg_f=~1hhwE8Xna*n9ckp&YEMm5C8OYS>Z3Q^K;lb>_jF+@x(FW^VdG(px|&Zk*ovR zKuIo@kyJo=Gxg>oRAdO)X6U}btb@AD#_!JE$gvadr~A+o+#a#D?60673LSN{3tA7p zQqU(W#$CZyD<;kaj9pb`Ld*Ou)*uc}F!#suIwg;GzX-I64Nmy(m}5Y)v*!;g0b4W{ z5WpXyC`gCSc?Pa;Whwo&vqjbmGesa<{X3bFB*Y<+w~o*?1kKZ#a%*;J9{lSEjL+hL z1~S>Fdm@e_A~BaCfUY9X8|b=&Il8A~fCL&#JY*!<@Gc20U$^4>TfPUMs!I8hs}Nqf zYz*WU{zKQ?hNi1;d$(Q`-@4-NtBu?=J;*3y=?A^w{U#vJ-ev%%ITYMQ_Z0Ct2CrSw z3)PE;T+4qkI~v%SMgY%`%un>4CY0OmKwC{)N>mg~#YF1*BD%`k@+hoI(me}+!4QSt z9(+J5OwugIM~K=%m;L}wYZ=iYGZBkW8f2mI{KbM%GE!WfTR#iC`x`(tn{YxIr>54y zQsTn^j_+G9AYhC2Sr*P-T)Bd1I&NOWe-<`3k;NFk?0C)=FRX=Li59Zl|uskueFfreo&EM1c zOpem}oy(s}f?ReZnH7%ceO_UX6pfVZy$w}2C?lYv2uq3$dwF!W4w#ik^q^AwpQtkr z5-l2g`Tqn!g_aI1oSG-=SEvxAl?nj@mmC|g;|%ljX=(Lqu}GYVHryi~=1=@4p8PRQ zjqB#L{nzCh@%nF#Ax-HKzhx~yRQ{95+5c!*UdUnios!DX?)bHVf8b%i(lzcPw0OC|NnZenMz2D1r@vXl5eCtkKJeO z>mjVkAM?}$ZukJeZi^fuLjx4HC$p$QM8OCGkw>C$Kt|vPT${3>OI);DJ1?RY(qjeP$#)Ra0EMz@vj^ zA4WDoM2euvYKE4kH@w3G@RTX`k1J{e<3NK&WEE*8Ggi^6{fesRR)Fa%>A@a9`@P;|%$Fn*K^4o^)@ z4cl?A>+(K2PInMtkr*P6@cn_;F)$%VL}f+TQ6*P|R;

p<8JqN28pH2mC;gjx$8M zZi|5G+`q0+LWmj;)F`1+3>fay9;H0zLERZS~ zy=jY;!TI1*BVJ!L9IF{NS50onZ&5k&Z|V61D2s~5orsEPqg%hkP+kAl9oevkp?(g# z#Rbw&;8Br*{%_5P6oNh$usqdW#N@K@@0b{v$oR~%$V<;ToZ1)~v*~bk^@j+K^5pK2 zq0mlE$k+vi84#_1QSKojLEz?7hJUh6QbKh5|N7;OQozO_MncO-OU3a(b*!lTa}OWM zC0lqdZW0W!Koc}6k_P+l>p$)Y?d|RF^={YyifK!cv+uy?;^Laj$eAFm2{)iGf1$pC zq}lZz+yiuZ0#t6KeeKX_pIRhOUOfm>{{PQ!ZYA=99*hkc$4KYmNT{y=l>7+VCG^o5 zaC)$#UwyRvurcl?h@3W}7L|8>Z7ydDrS>UNC!x^SOa-vjM3mhgH+cgs@E(*Ij?~ZK zf;W`*&5BWRu@5eags8xh|2%o{5&s>bMoVT4Y^eW5x20xSMJm_a&X&ZmdHewtpB|b7 z>?ypqw>EosRtKXwSZzp)zEUrHbiZRtkKXN4&1X`-{R=(yzlDb*Y$a@1zbmNY4kDr; z$t{|p{4=G7tM7Z3jAB;Y9m?~*FVl<%5PU^LfiiUe#qY@yGb7NYTGYdPWEuDIV<=3l zCh5RpioLB#|T6$o`JS`@(23!2DIu13CuNr&FC zcdt!Y-&CCR;-8$Is)<=yQ%JyUX)}Qr(**q!Fd9(w4DwN|>zUk*eM+P9hKrjRemeU| zlUG>wEm5bm{$h)h>b2GkvS6t1;`{1M?9}N)5kdLN$I4c0snNm~H z+~ku;2zNV^J0pv9=yO0pdl4wDN1QHdjIdaTw>1=^@P^zdP&I zW)9~3ZVjaM1Hr`O#cv8w3nI_~qyo zoay8jTWLKF;#ERaROoDU#mUc~JS^0wV)Sb^tP$NE%?W#KG_cL0lF)eF2z840k0xK# z#k~4uP1iyGN)#IVhn0)*ao%v6NX0#2Vl(C$k5cJIFdl~25z+JTkd>+1gwMHiXTqlR zryK-l*fj8Q$i{Ddp+eZ-=g{u zY8T;^>hK1pq)@&uS-2NJe9Kten@|r!d!`K@UU~bHD#v-9g;)$B!TP4)uvDNnmonsZ2Up!s260v@AF*N(#vFHO4J-;BD^;`p1AtfrlqN5H~a%>`;b!PqR zj||_&L<=jOR3K$xp%!0g`V#iZtFUkev=z^s0rcYi94m+ssN z@grG=ZbL+hAjVf#6L;G?YRQ%}I@$O#Z^f1mKJ6oQ_d{fIOBVu4P8f(xlXNt$V39s13)cA(x)FNqGYS$@6@&CV6Jm zLPHTzET|!Z4a{886e?$5jj-FJJts~`O!OHXl!xHFc1qr^FnNrlDwckC__WgPLdtsX zjC){m@BHNABA~I+)y}^JFdesF--4uic+~#KpO;Dkj^grw4NRdOCNPHS z{o>8V(7iB}){}2zl5VmQP`L{$Q34(rbS5kqK{|J6<5ASB1t?2DpOx(05#HJ?D#bjE zjE^BAM(cfCRY4)s(sqG!3tQrsfl;)TyB7h7BVjH5#Qtk%f0m?B4NYca$Xs6T*_MLdRL!A8t#Y!(f&c(l~J^iVz_}T#F(@;8ZLj z04ROKXT1@v5Z^An=RQ(|4MEwdvc?@j2-|Y;BuDdLn)n;Pag+#54i>&z-=P-^0wblF z7#anZeG2uyi>&dHA=+uy6;pPLxShBgDN)4v^#iK zhT1maKdr`H5BxHKN;WWGY5CUIHB76vi{bil;$ySLwFfD;d!e1yX3udT9Lz+9@d|H8 zl^E%ulm~-^-@@9ehSIuN?=EH2nEoB9Y=}Nv!^@pEYe+a1ssrEdK9}F^R%xZ%iZrZT z5}3X~-7hRD1vG4@!ipbCKTTn)pcMWr(9zk64y=cyu}UQ}K|(#2$8mbuS6-`AzIH}K z^pPP9q6y@};SBx+N-t5Tzd|he`_wV(GCXXJRTCswp@>G%btylqf8q3INOHV}qE~hV zG2!c;sadprRoc0bKU2YGopMXo@EYU2TPC}8+Utmv!RHQ%!YKI1jO&4lrgY4#6afd8 zO}qvW)Gt?hf3PjA7@*bURWgKzT6EAB9f9aKfgSsMtm+&aB`xAgMJArb8aG^Tzro)m zw%OIY{@|0ui%>~H@Vfkc5@)3yoHG#*KQ4X|zqus=IAT;H3>Y-@ALJ|-8gZ|~54uwF z8zf){LM#;14KkOJT%G~~JtOzet$UMRVH_Rf_-ncTj^iL@f^H8c`U1YjoMp^API`{a zOfZc8N^Hb$ydVcF=TItBwFqdq=FSq!H*5{s3j89C!_N=e>-#D9kTKMYjD5rRLa_XT zlInn^PRrFkxP%poH>`>8>N}yG94jSK(gWT3W7{m+Hyf{RH6DcxR|(aS zr*$v{OvAVvWJ2G_nPBg9{@UZhYQ4R9`T6cA>-*C1{iiPaG*X7Jts2TBoo&{^SY zOT+oT?X~+a*sl4cPicb(rZws8+e#DMfY4+=B2}?eYkryW5(?=Sx5qzcouUjnwVn87 z2I8z%O=cF@^|rL{NktqYl%G?^E($@41dRK zOxTdPm0l4E-7;1b&R{jYa?LIuhu!dhd$Qh%GJ85k)`9ZF&FRYBy43baHNtqJv6lk1&Eb2|`eeh$#fIRjl#q>bTB{fAx7U-XT57+l@=G{ccWj?IeMfI)JJFYM&} z9pN24bUH&p!ktp6k|y%li|*>&H)1)?h#w9`()?`}x^A+sJ9^fM`3+UMo|<#bydyF~ zmhFu}wM>JF-p?Ktrr%lI=)@s*Cku$lxy-%A?a z*2l)~d>ujytfjl%e}m}iN^FM3E-gl;T@WPh?RAK%n7e6k?(H4o(ya6h2!{Qs`0?GT zSR2*L%j>=MGQsC1>eR@!1I6(GNOnpi-C`4rebwmNl4e;^a_)uk8q4~9YsORk8G@HY zoy_Ur3W8joG7V7sHP6Kl`%%Og;JNrwLn~ zJ7d7Vm5o3IEmMWvNL?BnUAe0LdeDFkY^{YmBw(`<8B0X7J}*ONJee1N4N#XjS;{%3 z@_s@EJZ}WqJJNKI53Uy*JCyU-ookTI?+v1N5-)f44$SI~2OreCUOyE2#)kp?fTYaK zo~luY`MX0`P~S|byi;oO!#AJC@z0CTd+s*-?A1$p;+=6#^| z{DFnfHA!zr;>O%M6ih!?h14(vJWGjEd;rXTwh6}r3BFQ;?j+#6M3#Pxl*qT{`Bn;D z7-K|sP~tnwFqG%i2ai?Ig%uKfuTSqD%v1~WSL2JNnGZ5TJ+SOg%83i9>bw_=UQ0LbvTbGUVETk^c=kS06$#|lF?{#V87+FM}5Sq)^T%v z$!T=bgI=4ZvEYo|Gb=!3IE#>8L-l7r+!P#K(d4gA`tc#eS8xlCD903p?^hOibB! z9CM8{f~#Ujp`U3AqV5dB5anZh;nzX%7DfAT_iv~av;4*se1NwOq z$+kx_IR3P8#jiK!2sOh{s;R3!vUP7qLJrKQzNsBZCaM@SxMOA$NPy(=^k4Fbk{dPe zA)T0;RS~LXj?|Ia55?za{X+G*uU4x(?%CZkfxNf2+tEUDqNV#VUYX2|Fv4|UC9^kmohe!nh+jAL7^tQ>xF zc1lgvsb%z;GuZFCrgHM~2)_r!oS-xUYP$^CN3ON8(tAaJD@%2ozp$#8>i@ku?QqQ2 zWQLwy7uhKhJVRHH#Mb<QU7(;-X;k}Y52$&Ys zBoM#0C}kcAGSn?hXo|{ZQuc^p%{q~5>3 zHg20;tWPDXgbaK``q_1Sk|_q4m)mh>FQ<7OylRTdALb8ykpWnrOkB&h>oLmy=kHH! z_+@5S3$9ET7b>loKQ+essWu1D3kgyG3_pHRu_xLgSRHD{7y_ayn5#Wwkinx(*S%j2 zaCS`00lvJahsql%<8?NA3jb0O7)2%1LsJBqp9Le78g*pDrJ9;l28SY|zCr@D(T*5} zz1usf+!Q$&p-QS+uM;1Snwrw5yU6S=%B$yq5Iq^10cj-XGWYAHH6$Q^pXaTJ6JW`} zEbJW^$Sfe(th!Y;IOt$xY@BH%<5mCYY-Wqq%kW739U%opkqnXV@1oAxj9x2<%BbEP zMz*kYKwcoGfWYK0c2i^HCofsCLD`~UeP+x5C@}Tg5Ly*$RRX41;N{nxvc2(_V@7QZ ze{1cC&i5Xhoz6r4{yyxfjD*CSmWU2j#`;-lf^WL6LL>`DQAAJDRf)2I!DHnx3z3LT zEY?O!$1vLj3@3f--%#o`NILeJnbJ613&v9-FjE6?I$#U|V{w$eD6cWD%Q&iuDFRhz zew>eL&8ipzQ2J#6?2xbim;+*mgMOm;*46vr)&Tvh?4-`Wu!6OLPh_7qwiRNY>Q;(W z1b!@VDR?KhW}~T{)O!%jN8?+(_~qEbP36V2n1Y~m{oBW{!)E|s+o4y5=EwT?L z1t~llc?#JWuZMYqkQL8384fU>jgion&_XtJMD$Inepn8a>I~bXC^78DZf|mnq9BTO zF{bFg@2Q3C9E5}8p^T|#dK5kLNiR*q-|79Lc>FjKGck_%e!(B~K7d4{^w6$8G>n0xHKvAZA_3pE?}*LsG9D$L{2URUNQ4NK?>Yl;+V&}`CL^?3 zAkPenksb@dqrw>E9==w}pGuK_=fpBsavQHM+mg!g{5eh)X1J(J&Ue|QEO;%9Mq7Mk z&+xuhwO__qX*9EdmA+}1bxE)^4+8mKO>t-duwAJ^Wu3f4|zrO z=78Iuhgyca@;HpmVpfD;+{lH6jPGa2*X9z`zO5{+C-U`l7>B*huF+P!UB0VFH`MJ@ zYdfVbD%GF@oi^UlQUn^!&`w{@3N|f)kR#_GJQwUwpFSmZjGB>YwJ5SeC#Mcwi8D#j z5>{9B9X@bASmt{6$X4>L3F$aZ_7l!>N-!o<-O3*v#95T7$ECR=8f_pGP~tj`@H**C z*z2eVz*ym;WIwpFQA7wC3(Z{Lj=^x+zGtfm3w(rjhX)6b8~uB@zP{lE^-8oqt`VvX z7{t@f?#@OGIr<-46<3enr7*8-c`3@viMHl^%X;5sr_tn6;T=fI`P`BWTfdsO&D>RN z()^y`aB1LWv=V(aDe6GXyRC#6+Z|GNM5=FuS9{Ut#L9y!*Zr$_HNGF57n zLbZ9RrYNT0`IkuHQ;PMqsW5%V`8f90u?Y4a1p;tqURqQz+*RhdlvtdzcQIBHK8L*4 z;8N2h&q|2WOnnEEDL|%@)a8^A07j@a772MBsb(k0=pNPJkvP*b#UKfT(ai?q)Hc0l zcnYCa{o-O(e{{^pgZS%#75dRA;W15K&uFMlsXT1c$TaH%oM`mNFD6gVwNf3kvx6!; zS4{0sjFQSI%>3om#sl28_Cd^7VcV#@=4;cBKv$oj{zw0JALO&|!#Ds3ik26!h_#7g z1<^ti%tN~0ihdFn&SQpFbLQ1QgP$%BaBR$=Vfyhfg8M{84r=dO@02=5MrdsaIZP(j z1H~l44rhi@_3j<2oUuKn)7vi42UOMjmBudy;yIk>e_*?&OaFG?8BT34l|8?_%31K|h@W+0tRj|s9!Ezl{Q|UsSsfGqAnP)UXp0Mc_#`kHUY|9owmTjgjeFH>m z#|KUys)#na%%?a#f!~PPvUc!H8~fuXkPv`d&Y5hAlD=CBHsYC*-4@msA-W!(ksRLxb(EX`eP+h77_;93lf?a%AT9nEX zErS#7K&+ceLQYK`E^gl<)v2QDQn`0|M{B#ktm+U-9ts9A2Ck86oP##%W@h;VX>fzZ zw_>c&7}qTwE>1u@NW6Vh0yez&FD!6%iJ*zyjO|oIlr&C*dz|ALTO@?}ZOSOv^Euih zd^QW}d|tYbiHJHLnE=LOoSWZ_MX-UQ(+k3sv_zlkK^%x3?xJLkrpQjNZ$uthlVG#F ze9Fy$8Y1Pl&Q)WT!PD;260N%L0`Rpx)zM>1i@w^Irj*l5u5!dR-w(x#oCx7-b-+m*NMt|0V7BW9K_cy>9v$jx?BMW9 zov{eC)1~4E>d6G_>b2ghlcBG&>Btzx#M0I0e)((PXL$ZKIuX8E&l_Vqfo&vt%Y4xq zf<<$)`yFE1sT8UsBO}AE2pg5fd7#IHovHo*zcy;H-leMIXd5^J;0hB)Z#P35(j0Yb z%Bn#DSYom!s0M_jQTk2{DsS3@n8ZR(T z^s=c2Jc!r-S%PJ-1fVXqE?pA@mduQkxb)V2nbwZ?MguMjFZs{Z?J_CO!1?aoXi4zQsWxsr5B14UuTu750ig~TW z-@c{pmeoQefGrz}F^K`5YW53AceUwEHdO9AvZM>=9E7O&93uj6JZ0lVG_H5Xehxf1 zVLxImLwO^;GuIU|2V$v_scDu|=ZoD5iznTm1sF#L1+Sf86LH5CCq+|ur(_)6-0=q% zw9IyDjWGudac2O4k2#lUsdWJZ6(`Fy9T3~#-y*t^b0p(&?N{cLBtTz*h~W_G`i*_3 z|Dzjnbw%=S(V__@j)#_92B%rqCi6P|)5fURd9gd`57> z%JIMnEAEtok2k&ccm5m`iAZo<HlXfy+ml=NuU_VV)XVJS0*E;71r?t{CIjkleaN1O+aalT|4QLvR^U?ZV+`cYb zH#P_dUoUQ+d_?wbRNzcV2j;ww0{A5x1IEPR>iF^LK!DZNZeWc{fq5)tnhqE*t8qQI zH_#pI4yl-v4GmBz(mzP(n{9T+jANe%eP*c8#+C&5UkjI3Jp&`n&$DXxNr3g=!y7u| z9<^v!@P=py7pWBGtI3J8HHQiC4^`W5ySwD>){Eu_9`Phfhh|25YQi(Loj1`CjMc@OQ;d#?myV(D6kSV%yxOe!e6`IuVwbtlnm5pj}nE?|J?y`kIz8Z?n#J;FuWzC*&Bqsz+-b=hXHT%iI0k?@uKrc(#H&?peo#I`tXD~L|U01H7 z``XqPTPv-aq7|st83DHj8{Urd`{Od*-zGaW zrkgYRMF+kvs|~=k={6+VSnGUWZ8h_LR;?1m_u%VbuHKM}5}6AsmW#X&My#_%?*j6(t44@K!B){!-3QKkVl2A;+AWs5&+W7 zridKFSF*MflIC zuB6I%s*=qHMqU4l)AUA{l!AN>ol~GOB@%&!hu7`Bx3Nm5J%)jpRA;pU7HhNL6DKJmh^I_fb@-uIRhPE@_+TRe=zo; z`3hI3kB;6``+mK07sg)7mX_Yg)v}ZPH{IZLX~_DmrDG+bpfmMZr-@LN^?f(EBVZ~A z@)3El2{-L1a_AGTOw1%-o`{fEkndQ1_^W*N&&Ml_s|CLz!PtXT*29ll!{7hAnoiS3 z-{Og17wOowH2NF!qr)T9BE$WQ$kq>jSIwSuy0r&bAL@xOkvl^3XP&sYy0O3$5B`%I z$M^3Q0fHK!L)~W1&fY_^v|`G86Rr1lVA49uX_G2P7Aq{Oc7)Ghj|U z25#mMSXx7$G+XH>+?Sc&{!N3oHrZ~7g!KR3#Nr}kzeJ-=H_Z@TN1=wpY==U{!T%?n-R(Q zJC)Pv4vsCQWY&o&9ZMU1OUvheWvRVyrub@c(w?VI)0j4ISp!_aM$_nDY)L947a zH87WvXrs|FWHkRRB#Fy%o8X*7r@=2yC#_>><)O7JG%r*I@ajJH3`3X+SZQz|J|?)y z{P!sgvzo}%{)d>Szdbr^lJQCR9(^~vqz2-fKp0907#4`Rru_Xx)8cM=U-GV=npW|Z zZP15$x8)aP zl^^%&g8Fu2ZhHh~JtTrixLUNc ziD~sQQ8g*EKrtlHB!GTCI~{4xmb6+UV@NQc9Z3~5udW*0FfN3{t)tM9K%rVeQr#Ebv}LvG_eide+(*x;*|dFW9D1L~Kb((*mW9mb zvW=;&osU=E9L#B~tpGl%5?{K*vW?UoZ*cYbt1Hrh9PV>pQ4f__!D5$EyvADK+n2F8(?) zTP}F~dF3`xd<6d=`EPpBFTsHaMNw$tep(u}IVIWG|3kg(IZjX>qc-63yL%LUP&CG? zdoSxv<7^@%jGRks2E~)`PsclRhY+(=_G6)dr61fIJKwx=UqZp{Cg=}P9O>JJ5u@u6 z#%+0=8n^C8JF?r@CI6^`;7ct9I`owIB|{e7IW@U#(4C-uSv0zD8M@h}7FKsJRHa~( z?iuW*E8nfj*bj=~FB?bZ89V3uw`-%z(PWyNo6waznI!4*VFZ#*H$EaT%Rg=}lejIP z{k?#FBlAa-eOy8N2wt&sVqLt{LK>3CMrefh$KlDmf1OlMEmaAZLgm?iPE^AKC>s|# zumwmrDN%B{J^m45B(lH~Llb!u8FnF#BrTNyhQo2-+QEL>GdRKn((|>oqG&z%(j0s9a z!>~T__}l7W!^;lRDAqfjc5iAlzbW8KuFuNwg%ur}ujTgkhZ)TnwdeP9!dtdCJx7-Y zdIz_zb>$Cz1rJV?yM;;<8`YGx&v?4Q)gNgxps!?yEJC)n&R3ARoqq|{7#>GE?gPR>6| z)E90UXgOK0wBYKs5{)(rllO#S&EIl(XZf!MD_5GBoO3wj17JRDHX^DEYF-r5 zLm_R+PF9Gufiv z&K~hHhAeP=rDiq9`*Ccn;2tzt*?Lb3vJo9`o0cNWu=T)dGiJ-FEM%HWp+RwS@&lP_ z`*8`=wPuYRJi%%)xomCuFgfA7HGlB+@4i2%6#ppLO-6U~Ll(R@$9gUmj*Y0i&Qy!& zhn;$2cQbzmg1wYG4u^hGW>)u;s{$h*P8f4f8t+f$Zv5o0;AYMRnM{)~Bt4s|Rwt7a zKDOh_Ggho@-*mTqeRVl5yvtpmEK(}*M)CnG)Xl*I?VWH^@Bm;*?Uk~9g6+VY1T_J@ zmhlJKMlX%jS#1;q#YjsQ^6Bh|0*z`M_g{q->n?V_ScR#3eSzvGSh>$5;ub+&`9~eF zWGQmBFb5w;<1MI{okV$-V3=$Z`C&e|9DR`)TYS@{yY}A+E)4WgWFHC@vGOthPuEyp z8c{%t@s;1iFsNy+iMsN|%hRsz)O?lZT*oILKFm*nt3kYX>}{&s)rogDa)RRh*b1LZ zx!FtDSYBK6@6Qz5FlLUE01C5!og_J1idL|>430gxg9=J{7|_AcUB(=Ny#NEDPjS*+ zO#fbBIL((brokR>sEy&@@>7ilSH{`eXoH);NA4iy#5U_6_jE}2qPugUfJjJ7BOsyDDc#-O-BKbc zDcxO?0)jM1gCN~`Chq5b-nia#uJgtHW$*2p@toBV_%P-EYG z)B~K6Pp#E2{}M3ewP#VoWogbYpej>(X~bh;(#jRbvrY$0HbO}Ny_<}ehCF@)YXzbhsa zjWS+%!1cn(Uwl$5ztW0x&R=MZD12WBEE2!LwR8a0(ku6nxyO{O99XQJw)@WX$5O&K zoa%gG>8@85t&sp%|KuJZ)o^=3{8$`jfUnom@sh3;@3WRmxEV z?-0ljxEnNV6^9Tp{_Kmn20P`?pRy}Gox8CgXbRTRHnnuH*;$8 zp3Q|KM(aKhKdAXqebMwSvl&^6lI*`==Bd9h^LnYX%u*OT3fPhXvs`Dp%&B#@AN5B2 z54<9=mWlJ})Wd7@r=mxyhZbOlM7|FXiE{o~t=Tt&(&^6uc3#+mG0 z-v4Bpf13QmG$R0>S-T;;nDk<$B4;s9d$^5NWN~JyQg~_11HYyGM<^Z;NL)b7)^Yxm zU42aA2-L+wRQh35KGQHf9#PFsXW=473(ZcdTv0d>%F#Qdv-i>uIVHBk1rm|$`RzSD zz-drAtl?z99uz4$ht!R}nqI!A&A_sXBRPrpGBw_Ebtd5H2oF?vQ@P+^>NhBA%gXR@ zjt?C4SgBscP(<-qOdD)B$S~>fBY1CQSlr;fk9OUe?oJi3V+)p)GPpck(St2)%+LFr zp(jcG@bX@C6|WX1Go7H;k`)*)Sv3r31HPmYhv6#FcMS(5YL0}NO8v^{f)kVJmRkZy z3%}=>%opb4Tc{I8z$S*yMoLJ@8qi3AabVCfaD|7@u18loIAAn$6{{;Q9D z{@uu<7HU>^(i7u3c~}nJ^Jw#klsy3paH!BI-u$X7ENVi8dm1FCVp^P~^w9P@ymyRsfwUMx2EN=MGRH;?4F#s~k&Y@Q3 zAoHKDmn$3St4a+3)9Zze54f~PzcEUG^N?X#FNjvCJ;j;49p^W+7m~si2amc1=y{gc zJk+KW{|!c2*!RBgl1Hob8}><5psT>!6{jaFU`g`Flqe%NZB87BKQq_W6Bzi&1L3yDm3@Qi)bxi=rrw(B>bLQ*;k-;RhN`1L z*hh5(;L(qCY-3(ocCZEa-2JiQ&um50(a;qrjXwW1|J`F|{UuzvG{}W!&=7@nqC~2- zO8HvRGb^{DzZkiM==4UQW{x!**MHV#pfZSmrY$lVhn-@`iWRLanlq~RemD09ZnaVolTj{HW#XLZ)|)Nx-u-Y zP8RLg-yG+E`)`PKA{&YQ+jqrR^%R_XvsK1blzYr*dM1IJFX@WGvlmixC$K%35?||< zFOB{^WYIfPKfmKsB@a>g1_v~vweQ{Y-%k$#ezPZ;@*5A_ zw+ko@Bw;IikA}wUp|F4wJaU@X>3V|h5R*QN(H&z06_}p=@hS@Hn{3F-Z?FgQoPD9n zHUy|%nR6Iie@<-n?4o9y`XK4OmhZGP_rcM&Z;1x?uWCmlP1yJsRmNxLV+c59FTx}S z1`TAwzGd)YW+j+BF*Pt!B!iC;?f#{%o+ZwUMK%|HSwe(EL}Yp%uIB9U%6(4UsGtxH zS?0@*erH}`J)fti0@h38X{SG$jR^PmK)%uf48Vn6(2AG8V#cL46GvAW)yA>bfnGQb z#AZf;Lb`ID{M(ghc059RXedB(04FQ5W$k|Q1gP7N33tT6PBlqT<>UKcR|~0Di+G#> zqcB)|ha<0LtIIUE>t(8rh0XVL<4D*Vvg!dGL)~^ej9g&~ z-^j>e!OQ9@ZoSLpKaQL=e?l*iqw4y3Om;~OEeWgnEvjs6%3saP0J?_Gr*@C%gH3;( zF1#C^X4P&_7~W&!)3($qn2jN%fzKkNIjvk|(W2$)q^C;H0`7aGt7;rh&Ivq)ozNd$ zfXBvOmkN@gT^O_>&dJIth#uhz7rlLopQV#kwXI(=HXJFRA>cyHJYdEkfi(Y)`|#mi z=XOO~L;-c7Isg0g)t{>VJ!85}LF}}QTURAT^i@DVux@1B8Eg2U*1lA~pL6aX^<1D- zfE#{K;8wP9TKr%K^*m^BL7Wb$K3y615f0&kE3X4*HalQI^KW{FneF>v-kK3>KJ530 zKF|}k`N3{C+B3kF4B!!QFZ=_0u18i9Cl}sd!{agfgaV+e#{2w%%X3?E+wlc+Gvkx~ znQ~bJ=_kbrPe9cTt%<$jJ71+zHXp1UkQc4%XN-<|A^9%=Wd zPYh^e2|CSVcCk}f7<^BEmiG6Fzo_Yi5Ui{$WkmMU9gbcuEvs^jwlw&wd(Uy|;zV@DiEGslJ3s_QJf2nOzUBtk8+* zZn@I+FYEa*aVc}UH?AA%m+u}P4!S_aKGEMw5Pz&TZ5GoZIUv3t>_4ZgVwK4}(l?d- z+RZuZjCKwxFmwzHqPtt`{4wGz3z+)?NDm#{46BiVFubE@3|q-c^be*S?#f<{BCxf( z?6l0FJVKga8F2XtYMCmnICPJXsr5(u;>Oq{9qaq|f}qvPOn*EnpEZ?`5P1@-MsQ)_ zX^A?sNkX|#USZ+N{vyKV<>lu$%xNFQZT-D4Q^!dKu(!eDQ>PXC2mmjga}j1@hpU#%603Te&PwAcHhCz${ZM_IL^{===y9g#KoB* zIHZ~Jx}6`c%>*;aF}Mxbk@(ZInsgPW)_;{09hQxBLL;JC*;MfB(R+AlxcEXXb&wXC z+FsSVpzI_6(lwFEbu)wo9Xm%t-JV5J>20`*PVez8cp{+u!e;|?lE0p+YM^hx<4+as zm>(;R15_$Hzy-mjTSw?XV>)tX2~o5xr(vjAM{Rf9!Cm0cX-R!wYp$mAmOAI@^z442 zpl_QPVj@0uz`0{&OMGoonvpY87o_Igm1TVZ_iR{xoEiA z+Lq6O6hZa)2kJqN#WV***t22wDfGDd8rfw}WOcE*=tl$8*=8a1f>Hi;P$sDIZ&pxV z9P~OwFn*j$!r)+Oc0{zaC}^A)NQJ#wA_>{Aa3)ZPb^3>k8d!yoLH_cA%fMvGIbN#U z#e+kwJVStE2b^KP=~5OUY6<=`$IYIP@rojxLyb+Sg+MD^Ps@G;2a9 zoeuG}?7+8yVP9bZQrKQOu`QD(mR^t*;R&7{kZEYN5g2SABi`?oub8Vr!h<^Vm`|d_ ziT6=GD^i3VM-u0aPoV7R?#9c?`rR}apV^j?loS?Ef48FkO*f_DHmXrqK@w!lQ+mE4 z$rH3Df|Am$2G!do% zuiek1{Zy>=zivKeB}P6mW}#t9ZRd^%DI;sw4Qmf1bpcwlieIvY8SBsFEhb<=o99>a zbynl+Q$#p3Wl>}-pRQY+4%@tuiH&bp9RBc*#%zbx3{EWX#eda*Ir@j+pZ$Fu6%`dY ziQcxzh@pZf@{>n?jtN>Q?bi+=4%)*1ACu72LTNA*3L@zdj>>a6WkvMh@C1koq`;Wi z0A!i=+P^xG@83B*3EpFSV>wPDy22?#T_;Wa4|A%rx!;N)_~Uq%rrzpXaVpBnzo}FA zV3{5?;NbS0cNEjJ2nSy9`ru0ZMfJaer-v*_yZp4g z22Lgru!RZPg9e$$D;+S9dj2d1k8KH1Psc`x8zO%`+gkqGEM{CC5Bk#AhsTy#F(dSo zz3`pLhf|Pf1lXISoSQnA^a?A(+PCpLCY`=S$3Y(}GFCp*QL@6e-+bKM+*sV~j3_E+ zXz`DQx@hqZf#PB@A0;Sm(2!2LCIvs)$UGGqqSUjpMUP`LB9{Y!$BI z!*!V^)QvEHf2p1nExGg!I!52vYFevK z3fZD}u}-N~p8bBqe%{G*nkg*xT2T=lZ#1i;w%Y^ye3WV7=7RGU`rsfT{~pdI+n@@@ zux59CAOWBqgrQc1ETCLo4Sn_1;-?thQcF;M+dVFI6zN=PN-F_7BG-R|Z#|r93WU+_ z7lninCn^uS72`Q~cUUc>D$nF2+oNy80Vi4`ML%xrvUG*~qIJmtD9a_fWk9*3P_lyp zSG*j`Qe(}|_Piw^;>+KGf=GIyJm&)}IOcmH>0XZUPZ?Dv{a_LY&l2n82F@cPRRp#z z{l)V#ec)9a;Bm3m@#@6Qe&<3AB~XbxvJHMoOiL@H6jEhjai7YE^TGw|Qllau^2P-) zDxv|x;zmbd;~aIKx)Jbf@FQv(Kqh+8ZnYGa`IM+*dKv4_D|E4LA~K)0FnV0t=g%S9 zg!29_QL>2F9{-i>-I#x8JS3M4bl?K0^($+-a4#<0O>E9Q|KOR86!Knuwgu$&w@NNKf@;xIx&KM9obGmF+T%4wrlD`Yw7Xc^%R*S zHo1?9{X4Kbv270ij0m{#(D3khp8q**|33_|&7u3x|6l?B2Tu%korcSnLTC%jX2Z$ElmT}xf7%7wrz_@kk6FOb1m@r)Nm`2YjUERF79IJsi=a`mK59Gid3p=G9- zs?q$`sz>9;;Vo$ep-81tuI=R|VRd?so>=XR!b1a?T4%XOGZzrmMOMxx!?JHmyc;-6 zB!eH`7-~5$0~H=TyiSl8+8Ci0?L_&4+hft~Cr{fweED1`*aRe-#l036 zbZ}|!*NNFY9%#3P1P>>W18{z}mDx@ef|?tQ>KnbERmP;xbv#bCH~!&{LC$+|x5(=e z^b7O_jvsq3>`k*(wUTt*XoXEf+E zuD=qT z3c(JvoE*)Ed7C1w+G5}DXP2&y783}~oVvj_VYn(TlFG+`#Z;F;2ixh&L1-}LYO%e@ zGfm^izgcJuQa;+}4J1muclR$5R@XQUI_B?i@bGBaI1L~aA5Vlxl8aX-A(>4s1mw9$ zXwE^w!4qi^mJM>xM5cu;&-9rI|&m4$a&tODTVpbnMF<7-QTmI^UUxmb%h@Mnqk zr;**1HM_NAf=6wtnz^9t^Qf4k`s2=(%B1{!4(t!t?Si7`*L%`4P zLP^uFgm>nNI(aNsGh<#7-q*R#J=40s(Dke{3fmUubP@%JtR(IlNEv(_4vTE0*ckfR zN`G~-0pbyBV*okVP3FEmVH_`ek5#V6@*3L@gY@UGdR-r!dx%a2bFk3t0K(_fVe~v> zla5%6*94v~_{cp4TYvr8G5$Qgr&~v}IeY-@KUjfh#W6`oI=0(D+u-nkYDmi7$zFJj zP}BjEw{N^L+_?9p$fU(dDU1BZtRyS+%?g8xKN$Zo6&U}x%O0|;*JTIXgwIkFTEY!R z?_&V4m|g+4>t)Lq*BsLnxc1iBuRP%d7xcIR(&*K6eVjMv`oF*Ghu-gUu3T{F>tBBO z$@VP9b^*f@(DV^>QiY0{&(iQJg(a`5tW@)%y3x_mn@_$1=wj=I<@`PEU`j;?0k~*s zI_i>6e_wroi@r0*6T2NGWQzS57yM@ZvxGFtDN8dPH{(;h0XsXUl>(w~k+({FK14Xe zO`P%Z@!+6*TljcT8tEEuN=q3)5HpuNumw!nLv%PmTf<_IC~ z1FW;O!R6Hz0MrdKLywK;b?6P-hSjSNDZt9{%G`NyL^CFMbHe$(*F80ox<19EcT*Jos3$&zCX^?sB)gc|~i%%ytpaNT@wY?Al9G2EbefT;?hnOgF--xWW zEDxqgUj6DfjjWuPxxZVZ1Ho-$T{@q}CMZn#gkcXi9g@nbx!1tme7i`;zPpl-6#7a) zKlHIr0oVBpjU@0~tAx%cp%EPd2}-v@VfU@o{OkOWhTpH(dM$w>d3La((rb&sQmYzy z&&voa!a?U?7L&8~AX2#XiS?99mqsau&c9T1;KcYN1d3<#l?i1GagdHJ)t7zuso7j- z)ovdqiSdC#N+VO99`)i?y=yMkILdi3!pAguPdG0;4@l@&*}E{Qfq};XQzvQZ6TX7!zvL zAzacjQyBi)u0Yx`f+2VQCqYho+};gJ8q=ePJm>s-g2d|vU2Iyz{mCEe#Wu`{WY3^7 zQo}$3#%Nd9zb}x(@TPgNWI^|KPPl8Ez_ZJh8vQ*V1#oF|Iu`6fT6)+WgS)#y?;>4X zR#|Xpf&KXrRoQNX{n@v_htWsNfeN%o7SPFc3MoV2np7v!6Pdt5O(QDpucK5{39y9r z#bye8+zH=ffs^=il#k|H2D2Nj8hix6X=QY}ts5!W~>~K3jYc$PF)?*bQ zq`33jE%}><(qm4r7k^iSci)$;+JN!A2nKY6pH0f{k#5ZnCC+p=oC&5!F}wYMR+;nWLe5Zfr?$QekG&qZIgBIPXKniVbA)z-+)QAL@iuqHszN3r_R#e993U0q#Q zmRbc;k7or*UniG8;p{6&f=uX_5y(82dJ@VN4N7%R$i3&P;aQVYb<$7n=6XS|T~c+9 z+2V#R*MCg%U~(I1C3wF9ZJIeyBhd(;5YU2hZ|~!S=W_R31?0?LNm>CEduQbe@rF9QCdvhI>Tw zbsRJF{3%giIgEK}FjuS=zH9wObWYJgm`gP&;h4GmQ5*5PWJ{X!F}@4wk#6wDv*ER5 zCtD&`DKvrQvgy%&)Fc3JD%7MB4W66#SFtQbZ_bX0G4`&9XT)1M<}RU9>t&@V^b#Dk87_1*4}!#(eH38yJPe0=5@14s~}e8T?wa?H_6>iTZ#)L zE`EOv<7*45ov!0E@1x$D11zyp~2LSmF zJ_q>~kfY%0ysl<8{N&=&pNhpeu!&sh@Amk88^k$g+COfuX|TPxQohd1VBWW2Ihb-t z{dsqGM8%K#$jGY}K1iGfL%{xI+UH+_83G;CV#vG0XkU%ltV{Pg)jyiTZNfiQ;|IO( zS~`Z+0Wcnbe~OCsO4cAguYk|90I|SotwI>Y{VFryRk=0O^98# ze2}h;&+ONFx)~kZZfe^GfdU*S=S?S6_V6 zlN?dkweE`*o6YOCE(|d7eCu>T+9w3i`oN9`1L`$>lAnlW$;JM#I2+IfoLfil<glK9Uvq#sY|*?1<1wiHaB~-A8*LIChS1(-vvw zRCNpXkv@8Sg6kWM9+);*hJFeLsXyNUfZ@l;px3?ApN$d7x@9(NJCFDJ1lU8~GD8RIVx@87xz69667hbh+IP)d22Jwn8%{Gg8`=i|{ zblMdjC_gam^5%pcFqrfcfI(0U9Q6D@);y&Q_~*Inr$4J^s^V0tFq++R^FvggDa znXI)W)!^N+KHqHv98eFTRka8}y+*@m2>knu5T-H5A6;H!>Jnzg$WZYp0DrP!5)wM68?-uHIKj5S7sLx#xiUN18aH#K``9|yspD!@tOQnd=7T_(g0^(LtV$e&mNBNMDoQRc zAt3-jrJoHN!{fJ2OR#kmCF&Dq!r4Gk{?E*Sx++_kvZh}Ta+qt~{8P=t*=g6h+3KpD ze!O81eIPEPF4{Y2xl4Mda9;a(@(;GX{I}vT(x0xc9h@*yTT2kqY68#%3(DPgL0U=eBi%eHTm&7M9iW-0UO9csU<6e z!A*f~euM$o8_)JL56@O}*mJLT$}EZ)2I*HIE)|p#-m!+u@+?3V6cQraz>N4~Vq&y< zIgZElwzx*7@sav%H{+R|e%zu($7;0s0O0ba-?z2~Os}Lv{&f>yOa`OFy{XRy~n@cB#C6z(n&4UK5rSjakJEIA+Ig|nJfZ-BLRe|koKBMe0xz{rquxBjzp zNgQBLPS8_&*nHn4_HnvQ!6F=w9dexKk7~9oQ=foF9lxv8XB6 zOKIns=H-f=9ES>!VYTCWV>)4QGJc+yv2?)#pPwP)dj)Wx(sH_E>;{SNVgbh7ZT7TM zo$DZI>aQ?Fc~~P=f9j*b*zr}-nLL_BbA;u;B+GRilK$YJ=}-hy`4vxuxVZVZ)|bC_ z!Mq20-|e3EuO0wR=vCx~X1jwBVX2m{Zv8z=H>qK!H26U1f}LD9IYAimuP@|isi9M| z+6rT)&i6K^B8GD{Mk`L?WtQF&TFIlI0^Vl`uHk%5}u;ETn z^H4C$r4pd*!3wMT=|63IPoyK)CyiR3n!sS*xubL@`9t~4DFE4B+(By8i2CP(BoZJ(u04soaqNDjQ0YEII|EJ{ImuZ3dS%aWbfkfT_2K>fNX>|6#AlONp zg$zg}vz!)yI{Sa~E`76+6gkYM6&4XNs*R*F+Q6xe)uGMx<_%F29u;wA-ItBEtawLXg}# zTQHO2ze9XDxH+g6pI838?eskoE87$%ZC;Hs=*fvr`wKW;O}t$mnFpQink0(7DZMRcZ)eWevLA^v zP>#%1w0*=FO%P^WUs}#^IeJz?gIhNJf;;QuF2|5ha^>{*SG%9v{_+*Mp1lDv3a9_X zbbZjH&xyzoG@Tz;d=T>fH$@R1jv;8h#PfSD_SK_gc)J+UmZmE*v)%Hc073o_Y5=UD`_!`?WCLmcGCa#1a+=1zr&Itp;Jz=)@Tx3Z=ni-TOG0 z_sVp^nTtL8Q@|qBj6S$q>(kuh{gPt=4wCQ8{K(GTwtLv0eu!#RP@i(T)GARG*2VSc z_0Di>ol9Q)>I|r=V@|QH>#+x(R&FvGB?%C5|86d$k@}+9sz$BY_v|S|w!p~i3G+=? z#?2w6JmrUvpEfv0;%mbk9z-P4>*6_b>gNW4J6J3+?Ap&__?ruZg)s(`f!13V^i&F8 zUwe$etC1`a0(p!j6mr-oj)SD_RBDtoy4w=o`+Q&!QAg8X0Zhv&X?x|sIti@*?>3xQ zvUO;+z!c3Re0G}M)N_Vt`&RcepwV9EV!6Qr$8W^ezWCa&U!|Vc=eB(fT7Q^r#yl)4 zwz^XqFp5u0l(ET!%?aTMl~q2SgArBc{OlX94GTMNfw&j$dlwFQEn0CYB3Yp$`7x9U zj`|rY9W`}peVTkhn@uKH0yn)WgKCVa59M<6_r2<&cQ+ZcH_H}x?X{ozAk?@|QeUQt zZS#4%;h$_S_MRADuF7@9449#%x^h-k{dAEn`-~*ehO8~{>4IkMdhOe&@Eol-Iz^A| zoRhW3*XCvX@&Jg|eDx7k@VpK|A<3pFdf{;2Z)%DjJ!6LN>Z_vYTYs#cd*cT$pNj}S z;1u927Mx+9lf$e??$a*pB`O}zZfUlyy5;4cNqKtupWq#JB^Vp$GckSZuKq3<6omHB zwnMkpryX6lR(e1{>w9 zNQq>q7RnciZUu|W>gyS7oxi6_h~Zwh9TFazqG2B(O3oQ$%J&o_`bkF@8y4jL zgp5sE!ob1ljhRzn;ffMYo>Mro+4%fGo4tXKCx?*?F zRwQ_2t%;&v%p|?r0RNc%xs%+8ZV(t0w36$jOG6{rXLd8=F=o5Ubb8}V`)dhNp63ta zE)@wEq)VBoIsavuVpQ5g%M(&w%MO1;v`VM>dKAMGa9^Bxt0Mn>F{#HCu>&hBrECj2%p8ko;;B}~tQ zG)YjLtZ09a62bxnmN5-N==>+P)gjH}-*1^{)*xKn1na@pP?}{X8(308DwX%Etwklw z{kt(|otJ*}R_!q_Xi1XXMQDOPD{<%HAGV>z)M1xmJ}spU`FrZ$NfeEwfW+s< z98(2jy+|IS>Wia&#pU$-P0RH}b7+K&bHv%1hfBv-8@@<5Sc&de;*Mu;>Q7a5-Ubrs zc*6nzOVdOwOiF&twBcihS@z84MrB#{wCDO{^7kK`_X)Ot7%nc9c%&0;Xz0zy6OG(g z5ztuBz11lrMDqHc=e_1aCgH1s=(hyp^ajGx7qdN%5JZC`fs2Yj)Ii$AYl7ADsR;>w zL~eS`?d$`tIz@q77(ATi=+Im2fUZrKhZgde<@t0Oqxmw%zEC*@!1?|y(^3CnP`xkbJ3VkYqoZ!ox@emx;}_WRmY~1>f)UHuOZ|)= zQ;bw)a*FYU`a|)nZ$Y)ocF`K_*m|o3s;QIsuOis7yO-OQpLx4H6g)TI-Tz&ErLb~L z;XCBP>#|?j{9dE{+GARX7t5ewuxi09{zEH!&Zqi>=yNf}0e8OoOR@R}NF?XW0P@CX--&r^b79pD@ z!8|(2U)_b>BfGk}JfCx9u9etKVZ;)S9Uq{`SRoSEIlv~7Gg<3$GDxO!h!c9Hfk2s-%d*}Wm0=uZn@<9yIq&I=KR_=}nh~xUK+5wB}H=lL8fz#sv&G-y42&g7NKNbP#!L ziK0`UKA9FpZ=&Z3YGPnyq@}0tMQ+vekPZq8Vq#%25HnL)S=U1Pfxw6HA1na$#Z`$0 zP5d1jZf;Q?oaB}q+ihusOB1a;h*R-`3_c06*qMf z$5eLUJ{Ki{WLR0cfLA`g1oSMm3*AdbhGrc3yJSKAAXxq& zu)C34f3Sx_y=lbX?L-7gmlk_3hRoQ?p-Oj7$}>ERdk%$z&v(5IGrd(G2*4NA@is$* zgQu4dhXd<*oYFHEnx9)jja9QwblB@O<0L;)2G`=u^;Y!!zXsJNtdM@oaN3OdBdI?%Kp33Bc0h@TWja+bWp>zh*~Z)p$Geno&Jlv4D>4?< zdqWhV%F_!d%ASH^Kg#eXD)+jqrbtfE^q4rs8-`Wj;ziJ#fb7bFQCRCCY`*W;K=47^ zuJdpzG(g{XYc3@8C-v3t7G+!K4PVVWo)Sfyz=}?io_AD)wRS{~>=#}Hp`uqAbUGg z)JIQlQ4R_=fzLJIwxi)o^lIWk(d{%Oq*_9|9zjh&JG#yt|0e&%=(<3fR)rjAz&O&V zm`-9d9;!yhkNBmn7k$Rb^7L~fyQ_7tTqGG^x)`&D)~(d|!s1nWS6^Luso}Lk&ZOW! z7tPvlig^+c4Vluon>IQ-+itiNHP^Xf=L(>?tsH=JBVgQju0RR`*MlwNDaWE*VHPA^ z7$8RRB&UO0B~T<1fa9w>h1uP)!z(&pOLv5uw9%FL9u`K>VS{DEt>2eujHNwPE{(~ltHG2C~5?08^M6-`uw+YUK~#ej-H0wB|cu% zI1kDsU85`uq2)x;_UqwZ8~m%j%y#B1osoiN{8jd~)xVcc`F>>?IB~rhRz)MTyg-zh zYkKZ5^aISQYKVKh+_O`8xQVF%BGj69e*9Rc{YvvLo zEeq@p+b2JLsMyQIEF7QvhqKykj?a(9ue%$k{AL%3yZKQuQ)fl`6zk(O{j_dS+jO+c zP>bNycG|i{`PyyMz3>mZ6vU^$3xWq3kwF7Qm9>M z>Cf@Bgmo5@-PEGoa^uY(oe*JnZi}yR5z9ZidRMqdxlUX%N%;y*!T1V{K%wVhLp z6-LjmuC!1KQ)JV2flJ6!XiRbOi&2rAie#~etKOfB#_hF_#96q@P?L*BE-W05 z_k%YwO&39=nD0(O`&!Ec@~ODIfA)wRT^HxedrK&%hjZThu`s-T!+vBh54taNs=9G( z#$Mj2?@G+64?0pr;}cn{eOr-_(*l-2qQiZT;Nf<;2M%Zjj1s>V=m^182o>?3=+xAZ zjFmp4;(7sxVp-x8d`<4oyYy0NZcXy?RhVU<4zPYkqpOS5BKJFdCB2ZW=xvFE9R zcbEq`3w`c2Lv1<C`Mp9AoJj`O8Ls4L4EA{0#2Gg(S)bBGjK4zuvw( zdEf{VAsaj#IrJnR)x0=3LT_!)TQ#2KS^eUHHyr<^$74KiLYygqnvH&(dSEi^UG$_| zqGWF?4_5%*CM{5!wPSztUbweN=M}z4$C+=1XW0SlBC0 zNV%3IGoPT%><)cIDOkZ9uci9Fd+0N>qW zMN%(teI?*&18#nD)_x%?dy1Z4+i9UMIR!3+Q%8p^&rhzduCUiPHi&<`mG;0S<&9K* zfL~1y{R{Ic+cHWnXn98rwK|u`0l9O z;d&Z&?+mxeNh5s}4o2KP7u9YBBn@73@O~jgKnl&VES6N3p{JqAO$~s)-|61p+llaD z*UH^TO2P1l5v)Lh0`VRZUrjxP-`Ui7fkA-i|1a7BLIixw=b5J39bucP?3^d);2`@1?895gy z*b7RjBcP#q5uK23p<*d5C)ce+86|2WYh36gUW`Hag@n%}^gG$DJbYgIUQ@NCuha;W z5JD*8aCRuC;XsLLPUw0;yVkjZLlHIJrKW~z^fcwJ;b!aDZ}5sGm(F{ADsyg57sum( zN2PIp15J-Fc}lqy;_nYP%6yc1tM*0iBX_Jugc`m6_cX2L{9pXZI79hbJI3VR{Jo7hUO{>aKR_e!9MpV6$BRXleb!PS*o zoHdY!kBmhQ8;&pSNjcgc)Xq53Q2NuGzlG|X`z^w1zHT+DkTFd)2gQ^2P%M{7WSnup zqJ_xPQro2fd#>0#Fho6JEV>k*%eXr zha)-=`N|UiTK)UY+b~+ z#j!@;-2RD*2mMV-R3O~my|GQ98`u;N4Pyy$ko~WN%dkD44tle1yt`NvcK>{QZH(S` zogsa@6|$UWGYm393;OmkwKDZY-N6`=`}G0r-voCEo6BcI11r;XHZb)J!B_F&xdxoE z8G)EUUg~6t|5p%9(+;?=f5RDtQL?n`I(u>2tSHE_)?eTfFP}dd*JlE6ggTBQr*Ilk zD;Hn#q_Klc!Dy+u$UoNZ&d$h`^321UVy=6F?LbMzKuIy)lyp!0$qI<(fJ!4W>M#LmA~d>a@FfE z5gkvLzr5Dci6|{)YgfYo+u#Ma$L`^JDQ<*YLZ11D1N?8RxnA>rAMq_DZ7%#M&(Tye#qlBR-KI!8Bred*zE(oSqJG58_ICdX$r>%*tYRk^nSi z8}QqcH#U-`8ZixG#~Yj(xY-eWvWe_q7hTt)Vuu#9d45Gc^NJBcuWuuHlh!v784~I>9bmHK<6j%q8cG%zf109D?z{0B`=Vn%cc`n zh%auOXA^zWG@|~SKD50^0d*i-b}@|xVqQ$l{4?5kot(vT?iP{z>C-#27q^;anpD6t zt$w75I7Aq8|5PJhkw8jHbbR{zXLi`cJ3BJ&xIXze^L7Rxfp@EDpM;5rptHV}*~{vH zl;*~n`i8QWLM#X3hYNl8?mZ3@T=&Lgt>rfb$s}qL3BkRCpvRRC_-DVY{(k#?dWj?( z5z2Jz|2mCb*IH6Gd^ZuJWyQCvOK`aTMsbWG)A}u#fWhT078eAKtqoK~bQQ)OJjQN3 zzP#qWsWtl-s9v*mZ~| zdWP04!ZS@+5rjhKJh;Qgqqh3urx|R%ljN;qqHyX3=O|1@exrmLm_yK zJyl<dw1f9dT^+a4GdnRM3_ePN3Qe68wKFJHbejP*s~Iau2+it zLA&I~+P57s1Vjk7E%n5R5tZz6^Kp{a-coD-fs8P?r*|~E*Rbq~dp_03a%6=yxc@w< zjetH*p0@s}q#@K{^QF*zr|qkd_jR7Z0X}4UA2(N9+U~C{!0zeqvJ+3witKrATR_qO zoo{V_NSjEq7o6f^6NQ)wE5({}aE)^&Khq;U-MC^JAcw^c##Lv`rt^r zj$GnsKC2r?N3S=J`d~dp%OZ%s69zSTJ!6#q`gZ_1%hSp z{FuSDo+Cvx((Ffp-LZVnRCQK`GSwwps3?EPvgHG;o!!yWoqI!(i!5uJ*F3wtg;s`! zxHvpW`F$vBXeL(jhcqir>e*IcON7X3@v@iuLmZ#KdpM{+ynj|3RK^q~!IZ4`L3dta zaHLp$JtwsvuMcXxMpcMB7DcMAl!5ZpaLaGy8{?he5rNP-0k?(W>m zT6>@GT>A(0jH()=_txIlhuGVh77x!;Sr_x8t)@wYg*k2Mqm2=)F zeYHo$V-Ld7Cl8F8H!Nn6t8?O%_*X($<@?$$gsRi+gAy*QRISg8)Rpp)b8qT}K$s5c zZX;*Yvj?Uh^z4g;Nx46GAceY%GyMCzaPXaC0zzufzHsZY1MD2sI03N+4{;!TSQyl- zFelpOZ;6~{LBBE#xZGg}gRyFLRK0IjgwTACj{h8?B)|)(ujf$v=VLB@$!5m|zGj~U zSW^SK+mZf1=q!_8)afs3nnqnehS8X3ve#Zu#27ULr1 zEC-i1zKoO;vvaZ^L-*)Pv*4Ni7;R4S(8U3Hu^y`JPzy;p&614ObU%y=DS`xJLL%Zxpg2!HcorJS60tt57vG3ZCT(EA zMAjy{z*6Ep#7=c^U$vg^Jp=@Z_gCR;%7=|>+Ye<`zP8`CY9D_dXnc8 zA_g4i4b=GIkVPF)DJdwu#A2~Jg6tTis+20_jl@ujR&nfuKgdHnbpw&FgYUjZSQz;j z$`F^9XzswmSd`Gq8OnUsC+;vP?kju;t1&vb%Om>4h3`L3YBcm{Xr zOV5IK{uN7mqn_W9hy6=Yy@M;(N5Tp1{cv zt@0Lh86USjJEnO9HIltwIAx}Hy5_g5rWZ>Mj0iM*N-@{Z%>*?ya1))JgzVh`B%p;F zy_ZJ?r?*;yI$(?jzAoB8X=eRfMv@UA6=Cx&Ho7X*WE=_e zyk=H!p0S#J$kc_kzc#-X#@)uQ zNlr$71&!O*(!0IOg|#k(>IYYO-VP{OOas25V2BAmsxt7hi!r9G!XPwVzjqya{RTg$ z?a7~XOS8b6%Klv83o!@mP;0NGG{4420S1IyP4th4Y&P~zyhM#-RjV~oX-13pw3 z`b&D^j6~ssG0#Gw>wc$K_;QzR-Ly=T;Fd0Mj1C&C*NmSvbU6mg`|mXZ%68Zvhu@MY z84;JE4n{%dW1U7a@9a$iXd=)%MIg%5^Ap67;z5cFe(8DUlj<=C`q|QfsYu~}Kz5of zQh0#UEonY`c3kmMk0{1AKX9=)fKUeGuLWCASE&R>b4b1tf%2TmaT`i(eI!Tpxvf;u zSbp(;6AMEZ7Yd7zV-+c9n^;Y|MhB z_?JrIJunEF>VIQ0fYC-qvmzyWT!kBl4OFQMafnjVaARaJ5K#~i@v@2qRRRd18uniP zRFFQ`h+Qxw#mMF=%}3us`H>dbha$-BBkCg|z|ctI%@dcg%k@3les)`tHk6|h1iwG! zxaj!7LzK+HH(xnQrG)N#kd7_j3ns&gMhFjAs(v$L+1mQZ@p?&~rCp(GN;DNhpp61Y zO+@rfAgCx0^3UTP@=>yK)P^kBwL#-&p`4RKD&hH!Zi(3@dsUi3ZE;W>bwkv3MbJy0Y!WEB_ z*5s3yvT*8WEz@`tJ46oIZJjpJr!|*?ZC2_TFQtk^cmrWg8`2y@aKtDJrz5v6-d>p|K;)$&ohXHA54I!F{h?x|Sy^`4C0^MGiAlIuL8-55)F`{TT{sbX?foB{(qM5FX+i&LyR{yfZr<|S9Bh(XXG|6 z*LVRr^98WTSacE5E$VsF(6zTOk;lUb#OiwmP%Kc$#YoVfsb^IrmfXQKl|md{x{0n> z9ey)|nVJUr;~Z!3%D+B~s|FArHJ{j8Au@6e7>D=YB$BL#vND6%g!dZ=9o?gm2ISxH zL8bhggJXUw-G1miu``eR z%V{faG_P7b1neaSc0WRN;$>uUwg#vv@tRV$ ziO7sJf9{=A({aNqpx)9~3Zoj+ZfG?=uz9!=Od5xBJ9`!*5Zv|eyt|dXx05D=f)4iy z8sZon(U*(69%Q|RXwOoIx4hpUbNLg+@!Fjurg zgJxyy`6?>OFy%UB=WwJ$nIJ_ymSkBT zgAg|7pCRr#?LU~AtZNhF(DUYpTASOBt*a6m<|)2mH(<_9l@4BMw`sC$_J!q}x|sy(Y{!{-I+u>1XiwC^&r_?!nX8bX)( zC!P30tk{8t2pQD0Ok{HqM@(et@lB(3wJ;yq&aFK^?|r(=)!2KDUd)ht&ZBLr5BXZD zMUy48Tf`vZX4+wO7~I2du2rzuC5~6p`_<(|zuM1>MlSJC|1pcT<)?bOmf1CHQZa@FZ@E)}16mZJY4-&j=J@vqQfJTlB10;Bgx3T_Y1!R^Z9%*@6 zkpCfNyY&QnO^95vwchpdd2&} z3=iFYexBK-oG=?K9B8Vj*4l0uLEkR|AtYoJWcM>ohl`;2Z zl?l4P&<(Gst7`ZTDMdn{)CF^ak9xY;iL+?x-Hb3(LHJX7Hv9_((t+u}NRZKCoeTVq zJgx$2WN+-;cLx|#QSzTf$P|T==-9(&auw=#Yk$JxFJSlg)?d6ix%78h zTKSR7>hbSN|M_1lZDo?TJP(hjA4%yJiah`*i>U^QcCs*9*uOkBL_txV30C@y2Dw@) zz!7N}JJ;ZFWipZDO`mEphuw{`1<|${VgG>^WXvjUKN-Z7js~<)avnEjhPM{a)(t-F z3i_4*WdU{ygVb_1Dk0!*9N^g|&{mYlLf_2WI9YYL+}+GVYWWUv>sB8C!@{KB;mJ~@`E3bR?4Dw}bVdd+zUF-Zjv6XLFSa`A-|pDy;h1am&lD-#!3TqPntd{I zo~%HpBzb#)hk!B(^cm5|vluuZ_b0m1)I)nyBi_?$WavoZ(OA7|Qg+ATi=hpT7@}Q| znxdhP!jtQDd|bMEj#Bh?Rk9vww7MGsyT zrs4V^NuQH$rC7S$XrV)vETX^qhpbz@^$z;Vg|J~F1do?{^umo=$=CdVmEYfXz+@p#1X8w(jHUn+507pP)Fxw=pvNsLzcI>eIwt$!Rw;>Bi{J zU~}v%nhdP)ccJm)IF|#bb889zY5d_Lf&K9>^ zU9GEBkRq<&vl#eQ3mTs2n_=SVm+Mt61iLmgn zaJ~N@3kMiB_8-Kr6s|D-omTCf}q=mM9XmR?z%tXft%p$ zt|gqT1m;A(m<$h-(2Xs)Wi3yTTKOd)B^GIJFi~~}5z)#`ak>Rt3ml0haEw(4X z2GOgP1vqJY2J(vGKllK%6<`+X4l}6t)duzTOg#Vhi@gJKaSCv9(AoBv1~zGk`2;D_ zf{%!^Dp2NGY5shy6T^r(yCbvFQmIyKWHV~T7~6!^NhfNb%4`b-9Tv_a7wpfEZ<7!v zEcYBIZX@71RFmy1Xz?0hMz5698s>VdhM@t@J}F^jQ@iJWwdgw-FOYM&H2sA&OQ3v= zYmfknLF)V6i359Gli;B3;rIexzWX_5H>cmKf2%CiVj(PAbZH0AFYf?Ljm}ox!z>_jUmqK|j98gfl?t1S>|4M+nx<{YF&2 zr*0@$)bcvo>f1GPO|AJX?Oz2sz@^ohcQ!d3{I8B%+|-2YQ8^lbt;iMjRhN7)o7a)m z#q?wh{Oj;t6*rd|9F3ODwd!qKj)TxL?=CJC*94crCp0(lXRYX%OD(|A_jCire#8(C zfFMr2t3V5XOQosm)*mC0P-TP=4CmCll*1*;MpaRo0f<2VABp^AW!EezD!fV`3(3Uc z%VF^)ptibZDlo7ZWRaV`+4;x3}GHtT}Z`!`D#l1ciNL zc&I4ib^`2AV4`Zu6ZIVP*C8D}s&LYq+%};C+U>sSn`9TUXD|4{z`+%HTafJZOKLov_vu&h}o{lc2+m%-rj%beojHHeEa@+wd8l4jB?v4oZ}68d~Wm%T5dL0OY#600nY} zGnudmnW(*lu3>9Z`m^VQm7G*2YLBA&$lUy1w0vl9Y*-{3^~s~}GX1oZV~P(u4{K6y zR9c0A%y-s5>i)l4YW5~msw8DDe?HWUtC+?evYS|H#j3fIN1gwkn$?3@Uf?DEt9{UG zRYWl~{|hRN>X#(weI1)aPvNi|ylLIb^PdQAE}fA1PMy+Afuf}Dk?FrWSNm6nc+Bol;AA?$0m>8R0t)8*+ z*S{86K3Z<`Zs#K%?W>TkMc>@pZM5e#v9D~ohC_@@;lM>gb;GDiLt4(Ui~CHUX(gXT z4X#8U#)qT*uu$Uw z&<2~5kP6ZG=4*3POuRqJsuWFfFT$elKHh7WK+25@omUFXk;y)&9raMzmgV*I0xVz}L&k1j}ainC|Lu8c3Jkn4%%4ss_@C@xeE zShX@OrtH_KRmyMd_{fAu`q*%=9n;p8V0odUCV5lduO#Kfa5q5~bb2$vYyr88-@xzc zb2%2gIgm+b_FZ-_mk3cY1?!^xFFHi)6V4vyQaK(h9>KtDmFMZxVR7m@ahA!dxR5P( zw$VCIa(JaYV*pw?D9feM*R_H4N8jN#g6kg4lr{Q2J~l<;Co zMwiJH%Y>R3ghga%^5v1HCD_vq6>8}U5mm`q%xH9j*WDUmKikI4L=$rlGSAAvI4$6( z8OR(8IHYZY?GnG(P55K>;PrsAp zg2~6Z%uh*!=u(TfET6I%j7nx;WRwhWLNGDK`J=537oVIa3ZTN8SmD>9vt;R3H3A+; z7OJs;`k!#vDX?Lq#7_Yk;BM@SLW{MraoH(nV9+WS8u6wwp3b$Q`bTnU@w=ew$0 zp=RF_l$fh918$yyWev-tJVC*W&H9mCZ|18$xtX#@IJQvc7ZMW3W-axgwtxAR5)bUG zR7>x4&U^L>H)Xv>RLH{S!`f3n*04ZB?{pTJXHfu_)zJDP|=zB z*>56bjDbO99uEm3sCI@<0U5*7;{?CbQde&;SXNt+xbxLj@5s(Oad+% zY(YW6&p~T;osS{kKT?O(jO~%P;xThKQwtdMB?Y$|rYr!Q5vjT2uHq_|Ymf)p-V`py z-3p+zyBzSK0>s5uYoSy5UV|SXyLmS+O9g)1y#|1rzj)4jgeKa;ql8ecLxfO#!xk6m zU1wzBa}xr>IkjZT=@5L*LL_g`jbc9Zd|_u@4_-Dlyzx`Qke{hBERU7oo46e?>kW}S zy&4HeVi$3o^9HF5aNR-z>3AQ&;cSDKZ|#s%NW0EzHr(b_x!uq2OdB5flr@&fak8C$ zMvNvT<_W@wlPlH&@R>&QAz{A`lMECqGLB$-XZ0e`*<^m6J&HfKg|F-AErdL$h=AS& z5^3;pfBt}qRw4=-PCWC2 z=rz&Z>kZ{wa-bGB)4Av1m4R>L{2EKBxDaVut|$5hE6djB%@ammUSO?9n4IUrn&&^j zUvpSlH2e1C%@aW$Hr1P_w|;kkpmdag(|2c}@cL0HhibQ=pe^GYfA=w>P$(ElGWvz0 zzL3{oel>(Uy%Zuj-~(eO&z{7?%2M3U;aNVNK7@}$Jfvz3RV((f!zjDtJ4M)!G;Y~< zAIoHsXk2UGU;(~p1V{(DO~)y7e043==W5#ip?WCm;fr9B&)uFG?Q_~qD#(?pApy~p2m#-(6w(!%xI?B5M)Cn4I=l^55 zb-l2tz7<2aiz+T8zs$cROr&OHcg-9etvi0CqQXjzq&IUJ7VKb7O;gExPz!%Ql&+wl zAYm;_xG0(*eF3ekU$@^wRD2$2Z_0A`MjXW+Hj0Vb55d6YM=9{V$qZ6DN?+UQoz~4B zw3nSrHGs~u{1HiKg|mYap|1S?%ZHCCJB{%hDk?&1%eVv3y{alJB`p!mL^o>{Hr9cS9Rha#z5^j>%rN3a%s8v5?N${8`C-5I1j}@ao!(KyL?`C#v}FhK@(4#bmn`!2`yKHZ2oTFX7yRqQ0I@vp zB=;a|{B=tZXdMv#SL@JbKGqaWa0Q7kzykw(&}gV}*4Duq^jX5*Y(?Q9KoT4r%*P>) zF8QpG!F`+SfXj=@z)(}KK~so{g+KguBA(d(i|F|da-7%>Ts#jg2c$v~%-RRbG_I_P z)hVdBkU${NekxfcdOnh@N18Q^vaWJ~rT{{I9`VPf;-KEpLz4pEUnbe* zflJ999Kjdgzew&@AZ<0z5XWOkKs3ZpggS0GTZK#!kK8o=9xia7x#MJ|#A`^-OC7Nm zemgx(-f{3%tywsuh7k!8~zUL>zx{$Z-!aR#aw zaDh({`)}FbGsc_E9JcIt-%9u4AL*5&CQ%eVa9WC>u z!%T{yDlXX1+42@+7x#hkNG_W%%%tKfV`CW@OQkm!%MXQyFFJU%KEWjT5oQu;7KWEK z7HG6io&&c4lC2QE7R9RVUNU;A<9$C9yeaoh2cJ54z%q&~n7N28+hKOK4a}8Rm8L_h z%P!bNxK-xRQcDcAK{S;vp>F`IpOo~lr&8!yi7$>Qy}0)@$!G>ZQ~Y5VX-GwL1O?m> zlA)n9cAhZ$R5A|HR>yVf12L-dv#UQoy@@WubD7(o63p{^_`F&5&^$bE%XAx$E!1^C z5|zwtodDJK`YpuM>w_qtzu|+F>VG`OZ4c-}G(kK1-^~<3m`!zybEIiGEAq>7T0@IY|H7*$mkpj41&qGc$bJA!)pykSOir? zHztw%AH+=P`Hf7K?RQpCyJC5$g&HBbU|VxEF%JJ$X|hA(pFrGE=E!vpM;s%9X$xB>0vJ3YKmVHRYP5R~5aE`M*( zt@reAIn~fsbC7r5Rw(@L{kZmC{I10n-Ox+mO7)Pi_j2?;nuXS7rbChFI- z5=}_mvqmIXh_*zF5k?Nx#4vmPprD*D>U^}%v7y0?;S&@!nn@R0*Z@-v8-Go$Y6>nE zW3dHRMSb3>#ff=}cDkKm^}0o3R=J#+2E(hn{Wp+>maaQ7Mu_{RHnfSM7nI>^o$9O< z6Ru=n=!3Y32t<_$X}FVR(6Y6;xyTVvasep7G17@HFjHB4-qtDs>KZ)GXR1 zM8jS$Q{RFz&&?xVbB^$-TWqeMk96Sm5)l<$-Tcr=u$4-o-p`W&S#s>H%T_J zUrCYhr{ld~UHK2T5iV~oTM(L~un7B51X%3-6*=f(iyc+Siml(z^kcC+9~KY2FgRxk z0x7W!9{X{(XPS5lxAsu&Y8d4PD~>48(4-e$-@-IVdNF)3pUD|kE-+~} z8=^?ONULfAx9+>RVMGN2>|ao>YzJ(i;nyP5L?@-AY78y4Bc;GD!{0z;7OAweLF?*p zVfz6Rm=dd@WAL%u26d?Q9I6Ztd+i4p{vYm*nrZd+j4EfJwOB6tuFOk~u`sAz&Q(wd z-F1;3Vh?CHJ5s7jcDEGAwrX$dVJ+^T{t4ItC-$!4WVb6@e)M0YN9cc8kzjN3;Ai)M z*N49YDPT*=%BaP}`rxalf)LWA8eKO`M4l#6_3F(a@mLK8SF=~3IG0uI>TQAs`bIB=T$~F47Y~fIR)HRx4i@MO7B|ed!DYW)^`YPq=HWa>zFphe-_`}iH>!ldGVRQIjoj+2jb z!wFy5zKvr_p3S5XKbn0h;tu7z(XA`F7Jf@Jnq;n&F_wnj(V4S1xo5>A92n{NLwdN# zh|lEai{85+N(_{1#%t>}BRAa1-Zd+2chAoO2$z?aaR&$8vOGX^u=|_JapIq|^ZuZl z1>L{;{O$42ZSjNy4lSgH66xk>jks}Q0#|{ke=SdEWiHk^Mo&NLY+kwhs*=Oad031- zKcqxJa2_5~)JcasO!K=|O=$5qTv;&nJRf7Pl<^9r#!km1n8_fM3?TeVU-$T z3Ish9=!lA9>L%1kss*xSH({xq-QYXkaZ?^CiT*Pv!cTJXkA@ul!#~M(R`g4DCp8#F za11Q#y}Pq8d}QT&C`A-W%BZR1aX*n}Cb7nSb*pRCK52B%X~YJ%i~RfF1KjtPZ@dH| z46Bvh2XZ~ncb338;DKbx;kynw4u|`kZ5s2!B9XQX`0#wIrS_peZHLxR%xSVVJ|V)PqbZ<4h{j3{ngSkx^4!tvwoY z7TZ~YJV3Ue$f)A>Gk5pXI!*GsEz>^IXC`SW@8PhgWahQhVszXcTQ7F-BP{{B(bd0G zZ1~r4MxLI9zeJO?#Q5g{yTje`f#0=1!R=rH~jFe*R$?@7B%?$MiMHJt@V z9bY6GB$&=ah0A;lx;UW-<4)zVGt_LmaU zX*n3u5fDF^aHadO=e-q>+{6pnh+?x(hNTuy9=HKX;4^(U4GOKTqFg!}x&(y%CL4*y z;tQKVhY)SNn2WF?fx8!$+G&QgNT+bAJd|y|o9ihgjo1=e+~^ zwg4bS!433gK5ky`ea!*r79KwZxqXYDgNsia6HV>$ioPQ2pXTFSnnw+ScOKV8Cn?Q^?|_@G>eyuUrq#s7X4kU(Tb>` zg=NjPb-)c5sR1m;t7U2C90bXxGr$mQX${jl$$-nZ%`(EVd#eFjH1Dwxe!;e=gnEFD zLc%>|D^bA~*v!ADo>8KS1w%q(X<^{eymue~&v7$6URu*Ve!ORms=$_mzILFM(Gr|` zexe*yYbPyy8RpuFqbVfvelQxH_s=Mj4ihys4o%sGqnPnH{%c{jk(pL&7)->E+8^b3 z&K#|T@V5OmLo1P-;-ot9r(H2DM%H_hGBP5H`rqsMY;zdl<^-FoLMp|R$wdLkX7sYc zI1d5e%jZLk(6d?YJtq$tmNmD2;K&zDahAw7RjU0JV^uubn6u72GMp%W5wpY81Mg-9 z>)*o$yr2zuC;8q#U&;Q#9-fiMfw;0pyvZ^UAPD&S0zWu3^wb;WCkB(Q6djE{+!o$h zyH|YVi;RQReKH#wmCSS9$w_WkC`%GOHofOFWC~<#d&RLP2faxrH>Xp;Y4gU0rmi5Z zbdPprVw9xVCLilY+CJ*!%Q0&Yxu#y+aH+4cRSvB8T>BLDe^gM!-WcJ#o~|WL)(Iy% zd|N@K7`kx-K$LrR_0y^=ykU~>oaEPkQ+a&8d?bV;xNpm$O|Ef=X+)R1E9IPCN>p0! zep%-;&VQWRf`6;-i*GsZd#{c@l>6Racnh@95qi;$3hNKxrHKLc|3YPPj1el5QuIu4qS4&(X_}||PGQ3pB=lx_7JCZ4{J!LtSYq6pv74##q=w^EFUjq>klMU02yky_# z)?=&L6AHY~x<`fm@mfr>qO$^-0foG_6JK!_6Rk91nRxr4pNoe%2N1H^RxlH6j3Kc4 zKk*5Mw=%RT4Gx{X*1^bJ9vt+aL5etEZf%iu6c&c2YOd}$iwSkvI_6Ez1J)ri zb6W*k=4=~~!ufB6$=HhZjPI-UxUE3y6F$SYtk^#h#4f!RIEZB<`M(FRo6}MIe@2)k zK8@#0T<{bmu6Y({WuGD$x za7mu?fJ&QTZmY&yeR~!bnj*DHUisU%eM}r0z(pY)Y1sDiIXmIhU}z_K?I4t~)D#3l z?0<11=#qM&x#BZ?MU6b}(FXb{q>!1pPdEVeiEHe`eLQgi2qTmk;heu^C&^c4-5kh2 zg>oUtSVRj5jy`BPSLz_FdXxuX8YF3k zh6v61-Y;)cohXBEJ!>#c<$yUeJVdMmudY;6)FFRLox?HU6biK}F@WhOOZc+-=Q;xO zZz~(u{UfHhA8A1ETlAT@HH2cmQ%F9`hUMC?A97!enQkqK>Qal=upWM-V&e zv$3oG#k{qJaYiBJbP1FwXcjPCPr7FFt2?4cn3iHCy1^Sa;lj<1AJ!H^6fs}9i zy)LOg@I*Bit$~x2bhJ~XR&C9@gJ+Pdf1K~WIbPx~0rS5iw=4#sYM|JrV%6!*AA+t9 zX#QcI5WWo1?7Z?I}wO(dqXEiz|Nr&aJv|Wc;E=ipa3dX{9d{ z>=C?*3*^jm_3pYk*}a)}BR|u$yX=x|f7B9e%{D4U!N`q5$?jHQ0tjnf6TWnW6%`Ob zov$N~*Cp4`AJuI%&cKOKPXPn&L!${%1fch`NK|F}Eh&IMIQg8{yIvgSRbk*Ql7Td} z!2Or$BW@?Wh^?pDG7;xjy=M!0uK{Reh9VfLb#5Zz<)pjoRN>8CjbBBwQ4sd}V4k9@Ns z_va^A=@teqTvZ_v&Iq&Ji+2TJE~xK1qW?njeiQzEAB=*(jJ7bhWoKtc2&SgEfvRa+ z*E90=@>8l{erqo*{8E{YRUEg%nGw;y7Y(7WS-a|PZ5`R2_7gS5&vWSWT)ff_c6!{T z=3Lerll5vPi8hzo+rN#II%X{YNsg?TG`IO9m7i+;8}=FdUbSnA_KUrK#AMj>c@QJp zIK8(^+LWmEQIe!p9{*bhR!o$_Dktac6lHOyq3ipOshIvBvEQpSP2Nq*B*2(PkpbM~ zjbQTq^Aj{h(P**!*NcgML?5@9?Ut4Q16~3UVm#$$6w$uH`R+P=&`8(SlLa7;tIe}9 zyY_8TH!ZhSkqG5t0!c&n`S>w~D0G`59umfEI@*7=OeGQuZ*eaYPvrf0S1MWIWFRRe z5>vdzR?td12C|+-j98LlNT)t%hbKJ$7=juqfuL%M8)tyJMK?XrHaRU>ULD4u5pnN$ zdPGxm7=@Z!>Hj|fg1HuF#0_%404*pD?SP_-#toEKP_hL7g3+AQgLB`Qfp@m-l4j-;tk zry@)!DVNzE7<&C-ZUcs69$xIL2ch>ahIMNuI=%vCB|0)cI*UKZ<-`7pk`e>3XF&N1ZVOaAluR8bn=_o#$!A|)7@TwASb&z%f7swWM zpJP|OPbD9}WM_6YEaGWns zLdFUQ3;r^R$)I|RMoIR;C9;Wr0B~Jv9XujDkEd@{~HheVCt2k()Ite zz;5r-1pJ5={1Cz|tY}7jd9=R&>OFCnnekUjsY;c%On#COT{#pvR&dx4D%b~Ovx;S)_$_-jL#3)0Vjoj1f#6+L>XN9_m=sK@EqBZ4v9|=4k-NID`5CY_CU?7{4 zvNAA^FWY9OgiC@tiQyS*Y^^HvOePRn!493U0*lsg3YL-h){0&%66R z^L>BiPm)+neb~cvk$yOcR#yi`h6Zf1o_p6r1TS8Zvp@awf1LmRdvu7{IdwCyL%GyL zVAj2C1dBCft4RW9Z`K#Y`O{jS=KcDEOs!)P%~(^l1xYGAv;JNLBQXK2R5)1N+uH zAuN`ROo_pgm*(K3IiwMBMHG@_U*j!QZ9AUTP$@!tJ6?5FftCym4i?2Xm^lUZdHVV3 zfF=JenEtFh#jN|hv&+Zsx8Nz?@s~W5E3vbyRdI$cD$vcn)5U)64^LfqmbKnP8CMDr zboQs597R$;>p@X~s`=r3LL6A(UXcyVFsqx`t91R6XUZzU4N{L-g!e#8x_nWeUFz??DM7B6Js*blFnEd zj+AYjQI!O8w^xzwq^kEiI-xM;8PmjnIIkR4g7~bq7=o?PA4K`PyUDpUVe;~G(Mx%- zScRCktddFE6FU;RVB-`8CqYYVgMRO4W0^RXaSJ5l&h^cS1`*6^_G3vy^j-pvBmx?q z^s#=uP-yptYrkBFYJQ3DWFBf`5FfAeh@lq)_l|UAUo0Wdx%X8F;Mjccw9%XJaVKXZ zA&s14B7N;`xi%ts|IoC2e9thCmwTltJrRKu>&r25dZYu3ITTwnuIcm zvw-d!9kqi2@vM0Zv?f-_nJ@+KunGK7x4QmUr%N_6@gNfMw`cB^vp7O-4HJ_Dm{J_{ zSH+*epX%t-L$`!!*w=Q;tA*H{a$)e z7H5#}`t^|)8L6R4Ds1SCbf_T$ZS^hFY1Q8zk4E%dnc`bW%r7~Hwcotz^5CGaAsv)0 z%eih6Aq}ubma;u`izEEWZ90oBAE)1YDqGSkES4`Go2lMRvE)+_?}4V{E}5g;9a8%x zT+Jx7hb6M|qY-9%eewO_WNZ`NsltwjNOm{SNroe(%ggnppnP`+U%r z%va2_b$x?r%Rq{PoQ^K6?KFGECMx^I6QMwUh6B2pJ zP`+|nqc2=gWEc>!29b-R}HMV_N<*)dUuQHbYR;ElW#_R_~0uu_`UW2V(TrV;%tI$QQX~~ z!7ahvU4pxW0KqM|ySqbhceg-rcPF^JI|R4fhxeTCTv>Pi^{n|b-CeSG?W(5E;^W|P zbKkXR=i=CI>)O9Vba0-s|E%}gjxj_KmCCOhu6cko)cWJ@aqCdh+TD=fY#C({|LT@z z=(?w)v%{EwyYk!ceAU+`WH`n2_h-WVHxwV}BRwXs1vk*eojJ86X{Qi7W&!Fz@i%2? z(NZv;yY_bJh{(id!Y2bo$SDtVn&e4>UKmoZZ~eFw-tQXsQh!q`RcR{wzZxy$s=Mv3 z>O>J@MDKGUpWe6BxOiv5BxkXEh?iraqQy%`#kWA7?yW9njvN|qoD*;qnx!HL-aGPM z_+GKdrL&h+;5#4)+Fnd7bqKCkJ(bkF6GdTqP(Tur=MKvtx9Eq|yidJmg488YF#Bzg zun|ogzu%=hgV^KzJ$|e;qd%;*!8tF!1@eivVLJ$}k!!v<2!7_pK2fWx#TX1xB1%G) zVy_H)zandIa*=PkTdFgHeZStBb$f1awNWMajkQN8+FUm9E(@*cL{VSpvF5aYCmC@B z{Ib7k&l5r9sUwED&sm=Xk?n~=SBWFWfL84Z^WeUu(RR)+mJ@&C$NPADyqrbi_?L@V z=OquV;D-wru^FBMM}2KO{Uic9hxtwDf`{ND2=*{^!7<4|Jn%|v_qs6#OD%5JRFLm3(-1EOCpE*DXNOnpSsXMFlB zcl>WBoy9=HL(KNHkV4k8=dA5hiuxJ+rY36k{yk^FcPf1R8gEtP`aJim2;K26T1e&i zwJk)8?hLW_*QtRm_#$alIPMIpo63zd;eZ)m)HwfJJ@Z>hqUy@Pwp-@_m-ffe3}sc- zKwvoArqZBvZdkm5uQt_S3~{8iFDv83u2tGa ztwIO7g%BbZv1L>XNy|PsoUKZDSn1u8)pwq(6p7QT`AAKBxSpv(%W)qWamdeD>$9#m z)W7BB;e;acM}DHp`Q7=JKKl{8f9>(ZT4Bdm?+8=Iv=O>@t^-Hj+ofRZr@=$zE%&vM zKWexP0`c}5wueZY4CdQTdyRsp!cH6^_$vR3Q0_DMP1a4PjCfu$? zkVUGeypn` z{)$>r_ZEhLwA(+rDwQW=G^k3NV_?;+_z(T!q^~hv^HI3m<1ZL|(~9Tfn!tP>CTg5x z^2NZsrhasUk;$W*J3Z^}{FzZY3d_bC-Wa*2j8a8I0~F#vUVK@z#TOmUrX0-l=s)A# z#?X5fGGQa~h~-(rB;?ZSR*q~~4%P8n2~C(iiAazlaG_%oXh~Fe1lCh6nS92P=oa;O zC=QKW2QKv;`0_gHG^`vdL4MH|KBRLE#iYtN129;)xOs(zP>z#nVSg(KL97JJd=26D zZpC7O0llJLUG9!u?!Y^OA%*g|4(jxK_OI@`BIDrqAGG zcJ#u~%iznDD2~y-VcXE>CMaOtb9*g7Agbcp5sHk6!*ZmTR@bN)+Mp-i*^mE3{`J$X zd=`(Y7>3dUA@cfo$hU{gG~$J?&$BLN5N~f&G?!n{6J5lTl|*P)ZK@!YIm(@0_cj-S z@Se0?WqhYn8>^t7YV8=t^i$r0i8by~O=`K{cM%GyY4Y;&zzbMeS*Ff}i?Ly0T)3X3-&lL;&ww?S6YEbMzLOxqw0uEIu+>(E zxuLnf`Y8rNN0`p#+&$Zr714WYC1BvnG5%+I@vcg3(*}Y>54i9Z>RedNnfeA!WIL>m zv4jx%iO%;x_A(D4v%1@09TR!M9l5Z{RT!3KI2H?|$n(5$aS3a5yt2~2Fl(yrs=M$0 zeD$gyQ_-n!9{A}KR?vnpHXH?X`-j666re*n4!0LbM;EyxF5_}z_n*x;dps^B5K1mv z%7q?j2hsQ}W@ZFfP$Z?Y%Z1~?yC&Xuw-zk9Xa(zMXZcBsJWTv-ita6GY`sXxM%yhp6`eA+J?TEdIR z|Iq?Kjab7qMHf!nkI$O3dViupt6bnYAoh9clb@^a<%y6BB=L z$s=D;G3O4);O*~MUe0ch`TnRlC@uJt=hYdF$}Y30)$d==ktTf}ao1c#c!7hve1E^i zHuzzJLF>?1!i4MXBTUb%^&lSTtOt2aMKCQAH5<&Em?#)0e#?oY&v*%Zzg;irl&J>p ziV)W|#>2H46njV`)_Z#75;?IQG%_d!l2%uwzbv2LO7~4NnEHzupC4xUr_7VV`7y6D z3t0!PT|bH&V%BG>!CdL<)xZYMna5ys-u7h{TK{HC>_smPD%Ngq?}Z4?qU6T6(cg$= z^oe72))&%PU)s!Y(b%RYlg^Q7_Y!J7?c0m2g>C~eJibEJt3bJ#$vnvCS>@wYBvxU8 zXzE@!cSZY={+4Mr)xRU{6*_I)VO|f*>%{ut3pJT+^^)2Q$}hu$wpboJd2kQ==Z)U_ z74v>aav(CNGp@$ksxm-IA`PActtyd7wRYy0RmW5 zqV5FvMCJ=69zLIhrENRj<$uI7dfZ%#ZSKeB{+Kt?e0t4(FP#Z0TrFxL0hLL@g+yo% zt#K9EU)GZ=d7uLIE*mq8-L#7J!7~p9`TQyFBss&Z8@Oxll=wJF&83_x!tYv|FYB$n z8k?Y9J3R4TQnFx!8(ix>bbCF;s`WbZ;jI=sxN=8CAa|hi1L3ToVNSEnYbPtZ^ncgF z8{Rf4HTaf;sc*#=_;D3lmbmMgbKX#z+aEi6D(h7B?Tk4p&0F^lwPh?JMOsiuhf9Bw zG#&2#=gp=%Zz#IGLtN@*RQ~lDZngK8(T9KHD+fUHr2^qwT09Te$uN2Riy$r(!F$LC0?ld zu25*tp5OAIn3D#5KAYk?X_Q{H=O_qUiwwhIjJOxP?8ItvZ)jWI@xVj4dIe;^!otfo zrOBozWUJPcr?9?av>91;vQGPU*`=h$9)e8t&H0|Ex&3#`*hBA`v4I0G8Mw+Z7SYCM7v$spuDeI&I+YBP zp6`%i$a69}&^A#RM6P)qBv%*uD#sjBZlmg0REoQA7R;nF|6NRt^1;~i9tOtH0*Ns# zX=|bM*Eg$BcD4?NRN+^ul~}djYBq97M!%~E&T##~Dn%>1{8ngtd;4iiwe`441sc>? z;?$VMm@G(!S?#~Rm$mDuNlKBl*~F_lzm%(E2VgOUz~OD;9z+XV{kEmZecTk3q%~}% z=gl@1``&jU(1Prm^`S({!WD*o@BM92WjT%~%)!HQ_z6-~WMAz0G7~30lk3f-J3Pl- z1aW?TKKwJvTY1d}W`OSJ&o$Rd&)AU+DWt~n6@+l_+H?I+)hez_BCipzBGu_X zkQCVQMH4xXZangfr#Bu?$h6W6jSAjzJ)OU5!G%kUr@HHn^4A4x-S`*!S- zAhA0N=sV`;s6v;19HJ6%q#k1GE7aKDbvRqiX%!yV8u9xW)%wO><+r5pO4u)f|f01sCzz7e+@1!l} zjq;{WP)ipy6Osg|nLv?8jmEVKtk0zpNk<_o7FuRV#(q#pMQhO@o^{=}A`}8=zEL6B zEptgHPTnACe4&V!v@fCe1?pRDoXL;dtmBkE_)UzTgIPIAs;a7n$K(ggr3&KlH)WdL zTdfhY=`sR>N>PZO$1>dRj-ce^xWj$bGY33OUcGN!C?)Y*pMR}nPM;8mg(Z{QxK(dT zYXqqMSaJsYf{z-Hz8=Vxj)IP0N+j6~5Ut*6ZW7h3C~%)7qb5jBxc)oehB*;iPH^Rq z^MzyO`2NCYUR5CpjL}r9`r*cHtCeyIJyOWbjB*9#RX8w4hH2lW88hEV5dj`#mXwT^ zI2AnTLc6=mZ05nss8GH$T*%4G%+3aV9dX4bNuzD_nI1cTV6AI)@u8&PtPtHRbQ#ET zDKU(Ut8M#?T`zISq`uvp)wu1P@V}OYy>x7ydY_FPQu>Ltd#*uepc1e#|BGHPEiVrc z%{!9ey442!DR7kc2-6_RB_^`0|5o(SVexkEBQBo=n$l*CK^CI|_=*y$uq02pM4LZ< zZzmsHxZRfXFO1JR|9EYLmfhfsxLGWA8e4FCs<3Ro{(=0p&HFi=+1l{?w79UxZ=INwv)hg8tIE3kI4}3-efg`!TL4GRy@DQFwmCJBVdjfm z*BvA9!-7_gQ_Kk4=&LM_V8#s@xtp=)>f4MfGjkgLFq;Z!O8VwFC9k^Fzp8QKv&!9X zlP`N%au=rD#8I7)$M`o*FK-*Hul!z|u3A3in&FoNBlj9OX%WM;!bgPOX9|!zo-DsD zVDG)(^=J}OK&mvEp+cnP2DUUlxYRU#3Gx`&82v+T_o*zYRi!@`M7OC4cc*LlUn{B+ zCgkM#PLMZ z@z#qp?keVT66yLb?v1EMfV@X;19rHqpAe_dZ=&>eeji-ifC`+T!4;iwAYP!Y{BhKW znS!v6_$P>WT_|i_xxd%)E@SOy1H}jYg$LNx>*)|9kZE?TZdxQCC*0+hmj<_}L$@TMUSBRV_5&{gWRQEkcXiNy`XsKsEb__I ziI+2S(C|Dc`Z2!~?4Q+e;2?eP*;(Mya=JfmWY@!Edaa3oBy1%LNs>E$Tye7y6*U!; zd>bnHMs(WYeP3Dg^9AwuP_?_erd`o$>h))g(WmQmTN+aqVjV1#eNXY~-$!bt7FHpF zP>68O{efl0HTH6>MEyMv`V!x_X^HsV&~S0FcS9tdQ-HUFkAwb>Rt*U(w80d8G3)~!UkoF zneB`3PDZlDXQAnWjhUJGtZj)_j|TCh%rp)tj9Q@NHaH1MR6plYbp+E3W8<|0RyMfx z?JF-EaAqJd=<4>HFMD)VHe3);W$B6OL50n!U^-_{Rh+Pau0ExGjyc)FhH_YXsadg+ zL;Xghm~GmMQEiOJ{qO77HDa`UWkdHgQ`^=NUU@ISNi74HOZ#599LD56eUDP3A^{a) z&y&QLv!xIl3kY}W3-||0QuPFIMiY-5Vm*KB6j|sg=Mwd9$3Y21|1+cNgAZ$oQTIq% zWp2qKN{Qir*Z@og)}>WFH)kEQ6V3|KUzx4jUYkOrs(taYw|1c+9QRWSTFOf!>WVr@ zpg>!Z`*u)J!sT{NE_krv@Q_sxF!;^?%{@u44oZM<=K@ml(vpU-W}@Q zp2GkzP$%wzd<7_CtIwK~LXW)XN4`1bqRWm)_@zW>qDT@m#z-A&Sb@S5)1&34sbg-t z$bhL)=JCl)Qd)>7YDzr`I$;W$5aGk{e16`tkGuFIfvmpo1#%0orvPL;JAta?AZqF5 zxsv%Fa&Sj6KjF~4sMr0nS>92^ZxQTV1SRNR6>y-^G-gr|SPZO0%lr__o+lt|mi?&w zFguiDj&Faf!4PIY-9l-+DTPK#4v{g4L~(0Ve(=ZS+9d)lgc-@%(T;!H7G>Jv$}bde zlTv@x6DVBqldEg@_Dow3QwB!b3G)lPiPF`pQmm1yhvyYD)4@lO^~}$?Hk9X9bBDu~ z5dUHI(KI+7(`UQtc6^D;ObBUhyzN6l?MYK z_2wElMAyF`jkkxvq2$PTG0i-@!8%K!k_!kBM?2p&yDrg2@q1*R=U~A&Gb3d}kfnnuJP=y!2clX56DUVsX0-iwgz_;py)^A9NNOuEX8zKmj*+W;Igl zHjfXPW}r^0p4aeKnDv~^8Rb1oCQHSPk1dAj1ju8StHrRGIKUc?OrWLLp95rPn3eym z6U7R{vky*_seAH9_c_D7{^(;l<1Qb}!ZqFMNoz@MY!5=VtkhN-w#c5-sA$v~UQ2aP zSUG|D45=N2%%rzu!R!8PQp+3{dOSF^51wx)W=MA6##m_iq*;&~m)bg!foEYErBJAV zcRuUdyXujEfr+663PQ6l{58fDn3USy!h%yFL_ZKm=FV-O5AnD9v*{Zv76#+W!Xlqo zy=2sZLKjkqJvnOvY!QF{SVrF+Kg(bK!$ICky$FN^Y_LZLa zx`8oB!|}|R&zPTtd@a>$(xN;-j`1N(_xzRQ?-Ye$ZU^B;Tm`C6jlp$)8H-nwp5&gV z-2Wo~Ab;ox4(%ehw5lcsHg#4=$;gCHxf~&@fq#SsX8MoNV6T3h34{jlE^IfTUF3Qs z^b)9k-uLfsT#7*1Q7nggH`YMQ3Y7}~T7bYXUw+sTH|}>9+P(`>bN;dS#80xY5r2+e zwvs{u0+-(Ut6@ub1O)Aj>f!$N6vqjEcohy0>13%c_?)a9d&ujOX|;vEneu=$_AaCV zV{Z?RtKArf-@iL9jFCyca^r9*R3JAXc3sd&7I6Hq2T|b$zLCR?T1p;}v=9W0U~Wd9 z)M!%hu?61Y@VH8oR4=5p#+CI04-Cc(7b#1}#JiBGdag7|+KMKQZlSk4tI8&t#fC96 zB0IW^i%Vs(PC8pGAEVo&v8Ih1frS=*c?#D(KPCu%cDGfd3()O2Y0aoL|C6ueD!W<$ zT**=hNIk#{;9bdz!%72Q;Win9vGBw*a#B=5&8W#n3sV9yF#okuPXv&ID&PN;T}j^I9ZF=g-0{z(L%|4nDN zeLhs@e0nbwgb#xMB$vjEJ?^ZSN0QeUiLr^eF&VqXPN*e>O&1$VSg;FhP|1rPB`uXr ze3^i@)Qz=z0StdeV4yBl&N>QPq;7|$A&jYshC}NKlWk7+WE%hF*y>@5LzNUT3UJhq zl&n8BFN;KU+sT1IOqB>+YV5Uw5*d($KC?`ry^&<>0TsSW1Vff^h zC%6lI)ggQjeZXkN*Z|-oKf$BbRum&p_vYrqO4%M`BUa0k$-Mjsr&)NiL7^Up;10wi z%6*@^zY?je`LlL^oa1xV+XlISDNLs(*4F;dZp1+lG*<7&_1qvI><6I^=-}W2`>k$p zUH9c>HwzIdB`RvOnCq3HB3c619#Vuc>9~r`i>2swBiqyC1plO%D8Uo9(4kH~^yc^joCS-GoM6RG{quT|eplD}%8KMHU#S@) zH`7w)_+--l`-BE9CwXQD1Nmz<{1Hzk)|=_|TTUzI=TF4h@f8p) zM186fko4SR+*!@G=gJ?n_^Q+(v_$RQ0lG-QFUGwSDOXC-(aQ^G%!MB9Hb|-=OMVzT zMvuBoa?Q85-Mj~7;Kl?>ewY=ztPG7PU{+B1-M7cH_V0Gfxw384gikm>5&js0OQ8fD zP*^PThmKUiN^6yT`)a-9*?{qd%QRd4zM7K?~7r2=?tXIt|U~D z8uFgEqbt+(m{Q7OZ~1~KJc<8lK;c zwj6f%%1oQhm5=H>|0%URQ;7T!Ef!N+_BD}mS9<-A5D9uy=eLl5XV%8@VKv!tXH#lC z4{i*J6eQ>h{&*XsdkMRS@mU0HcSPZf;H@71-1o^&OlbmIG+uUwi5;`f2xB_Q-~lraF-J?Q=>p? z&(aqUhpY56?eprCb#C3>z+X`K4vdcX$m~A)wm-jkTm^3y3Qz!bh^t`Cp|~N&rQ0G8 z^S)c(%<*LVR6IQYu1CBg1R&Ds#ScWP&!F(~;ijLz`2#!yzps)1Q1t6C^XHPQ5OS|0 zSgPCKaIv(#JtyGx|2N3Yjw{z;BelRBx_$AKiK}c)hY2IkiVIf+4Ch(`CfmcA0Wgl` zgb?>d#eNDdi;ia#v_i|CsJ^B8V1CWHOUKh1@TBBq!Fazo@!_ zBLQ#w^EP92y3*=_BC!*w2ae-=_i+7?->oErAsYW*cC!{3>+>Re{g_|YY!&i?k+_;NBpS~h zLGTX#DZt?}+~W-I-PdN(t=xm_%fA;UEbM4-cn{tGMN8t77sPjL{zpvaC56WoCOMmo z-aa4}u%-W*E_RL7UFWoUBuBgl*pj$UpfcKn3{Wj4CKNo{wT5HGBVC6%8X#qn=TNqr!GNAsH! z;U{Y1`$}|2y^akaTe=mX@xecrqW`{#k4_;JY)l1MkziF%_z4cs{3TMMyuBY9d7bi$ zFAyK9r1dd}Q*H5BWV9FyK|(PU<9;f!%Tq;zJVH@qed)BVw&GALrod8LAd zW{L;R#+c)GF(7XJKTu9s7~CuH2AQ=h?l&iNYK6>UQ_^X$!7^-+KT<&6#|y`twj1L< zb{p=8J?8A9^D7~qq0zm=1w+gKd|~|j?fq!BC_d|L*mmN+w+m56691I9qzw?Rb}=!y ztCI?vh1Y$4wOz7TibTUh-Jd+)>ixfj;uxfg|K!SJ8DLkv1YL)<1$*XIUthBk%f49dl7bqqBQEY{ z`o~p`kdRg8EzN2Vn{mFPH0}SL)8)+|_(Meh7Q zFOQCmU%B2a;p6^x9EAeXS*DSm&z?-=ui;UKH8NrV`cL{xCLRE8%6e0M#KUAdH~8O| z#9Wx`PHrJ4(nXT8Gmq&Lr(P%;!-4^6m0Lx-u~BZaJxAFB{)tIKhr9W4@zkJry$(A= zYy>13*<1Z~k`0*vyc!?X=pn(%?xRmUJ{~ujxnG>x$uwOp9j;ifdo3(`U46&?hUtDL zNybm6&dFw8Ay$Bgb8tRg_~C2Llu6Q=e{282S|DKoB28v3N?vhbm3xSQR(P^6p`x4F z&moBTpxUC*I9fHbe)=+NU)X~*XlWPuK}87UVa=6|KN`ET{Z48$GHZb$#*tbSMOI9# zOC2gemh@_JBAR4Sy7xj?wCXv7F7p_L?B4>=MztfkbFcXoMPI0j0r0L`{UzKEHu_c$ zPLuon8~a?tz@OPgunp#fpV;e5QDZ31ruuPXG651%kS!x$!U~=*JG6AZ1zKV5ut=Wh zqXk1D#%5Vdv2U_Ds8c7p--UsExbsVg!LX1n7XCNjv=%57Rih+*&`S@7tr<4?cWJQTfpg?`AO zy02t74vTZaY8?gv7=R4J@%hK%3fY95l#{7Lw~?jQFN4cY7g{XQOb$*Qbo8Ddoe&p~ z53uR7F~TS8VtDQ+h1sb-dUwpELT|UKwG;2#*%|!qtT;_aZR335VEvGN=ybvgU+ngg z^DwTPM}o{07PdE^#I`S2CE_Y9zlDBHoT`yJ_@1MT+Szx8)3SoQ=}#YsJmsws?&`xm zVru@4g%N$~U0<*svssVB|7a;#_oox;Sv+U?C%WbjIg~*;*Pi8{=`%t2Ehttd-;29@ zVs6j>Th3HM=YjfP0EFX%Hbq9Kz7_c!6%bKjTc{)*+ZN29% zN*7WRv6d|w0#W9X-vTK_WIZ&8UPmh};B0B_$ZY*2oj4fK9=yt8BaQT1kVVjVcJU~h zTUR?&3;&@ZGgGvBT?IC}mDrQhSd@&#`E=3JkzA|rgwU3_uR!r^=<(NX_u*e9%|-td zeS%0?Mg`>MwRR5iVJhS{6p�=4Z@6{zP9BhJ{M+SdQAl6j$i5?c-j)%YN3rvT?E- zsFD6@RwM-0UC`E({^TFk4*l|q(D3heo(>o)L88A~a8FNIB=Zdwow(ek{%fiuos;i-*qy{>h)D--8eQrs7#oaXSUEe|X)G?bAo(oNiL zRFcBPLEEN7gW2S>l^@>keE|gWL~l0Mgmys2PZp907-( z|Dy%)kE0ciE8nMDt-D<_Rq%vCgfx+p%UK8vHCCZKe|v~-7bWm#8$0wSQ~yQ+8i3X& z6DdzfoS(52@G*X4Ua4ynjZ`G1HDzNP6uLo-;lNY=d!R;Jm?xw8poXfzFI@d?xtHMC zU9|jn`B@mlcqnbMmBY!8AA;`>L;^J3s%~d9jE<3(;+IYvxE835yaykqyZ?Gy(1o9<>AT!0l*vSs)F zfYW$KK)e|g)+gf?{BRrQ(B%~sEI&@LDmy=00fd;gnNJC%a>-BZ=Ac$U&$B)}^`D+c zF%73x5EWXbF~2PEt`{Vky&7AZcV6rIl}6=MVP=4I#SY2VOEdBTH>PKQ*TaTHTH#y9 zin@|?Ga*NS#%qyoBwRLph91S?$vRU(xIc$VRN>Axc!w${Vc>SKzTt6S0kiF7oXwQY z%34@aY|74}J|lAJgs?63@O<$)EP4r=9jE^)YRL`&IfXY|J)TOy;P3g9euidZa;%ep zj4?j%c2BEO1$7*y7&`LWzx{FGPss|;q(whaQ``EPNknvV)O~VbDi=4lycN7)Gt^=6 zZuX3}S3YYR8aDJ<+?`h$MVgYEOK6b7frE#UTXYuCmf5XWyx1=kRwZhKR!I~emQ4w%1N+xd->IW zLjnL=L5UwKR)q?Qp)Vicv=C4e&@T^{&K(yj)d2E z$39Sn&eD6Q6ZUe@=y>NPv0AVvVdlXX52J|xiMFe6B(l*cQ84fV6d%ow(5(NQTm?!7 zn$@%RaA!S=77hC9tSZ?y?)=(@4vW2IiX8cmY2U|gDW5%V_YjY}X_Xc+7%Y}uAO)t} zHCAF!+KG%xGZGNT;+h`1GH@WO(07pl2-j|D4aNmfW>-*~-s%`E)`;Bq$~%8PFSW9H zz*{OBp4UUm;*|NoxNRR8_fl3E_CLfM0#SJ3JvqU(z56s0chyS4If8nILP*+Etne`C z_V#18F+K&}{mgXxb}U%!=g7Vmrz<5w5lx%7LR`6J0WpOmTW*|du@|gI{7n3xNMA{p ze7wWhh`uKZBNpnfDDM^|5UT$=GbAdr-Ms0Il_3hJHi0$}bd*m*Ow$*w>z5OddwHZu z)2rlhKgqlKWalz{*gas$F?aHidb{reQ7f)*7^JRN8K;(U6op*T{=NJrX&RsCt7-~b z=%349$U7J2!7ywg9AkPg-a2lw68=JYgq;c@AtBMsBZyBCo4wV^6a|?kgD@=q4vp${ zS6RP$ZJ^GvF-bTxVY^$6`7;$CH!>0nA@1Kx%${*nvdjAq9XuFy9K_RT^x^qj*4#dW zkbZg2!T*=`#ucMds$U!R+<0tIcM%ql<~|xhv4$F40Mwnp&!x}Wj&Lv?8x#)n=Fa4) zU<%Ae$aido{R$W(cJK0_eRhD(>RoZ3W1^W$pS}OUM(_V&BTe5Gz7K39ivXxBcMmKq zY~;^|QSZ2eF@SE5jycauj?=OJYLT(-?|(eS%SQ`Yv5bpuH^9L8@2>6JZzZrb)_D*X z73F%Oa38kKJHSnt6cGrD%$c=oyVib%ukXy8Fyr0Q{3v9DB*n$2+b>dC$wrM>{U*L7qV>7ic5%+D!0RG>2y^{9e2wu zC&)o!68^ayb*QkgyZ*|5+pjSP#fkv!mjhV zP={{$ zC}@>Q#+7@k@{!wbXn&QhUQ$$=c>CV3)Sl&{zmmvWZ>;KWSH01~jkXO3Ew9&Ia z*2xW|yCVDJ*SSLAe!<& zMh|;)^0ZN+BBqv0uLc5Y+OWTt_wE~_LF)Ma!vz*OlY7F3)^^3-{?%m5bAZAcp@kb_ z=pPT&^bpSjAden>HU(5E`bYf@mx)<4+Ca_8Yz-8=JlcJPMsD(2N)p{?V|F$E*Tl`% zo65n#m|NMR+a#rUJ9=@_G+Lmd9Leophm198)7m{E3hAE!qJXIuI^4x?i4!n9oId>6 zyOTGYfdj#6>Z5L9QAa-cdaK3V%Zuk?GBR{j3AY9&;rN#J%IFJ}rXq9plFMnc@PV`V zXbz17rhPJz&}JjX-wK}f3Ia`JW45F&HL{3In%hJ zu~aP#$CLBlKHoTSisbQl6po%boO_pE?dwtyt3#HA28}u(T=(K7G(&8WY7KSu;QX&E zF#qN9N3K9FU$B|thw?#f!4*MJO1y5g9qzsndgmCYS0eFNA|>qp1Ud_mm&O^BcJJqt z5z7b|c5R$o%74{)ee@1-eg7NyM1+cltJ26MAY84h7cc?4QhV6q$U^=$7c#lX4|LkN z`6UrmIY%lwx%+*zLoL4`Fz=pSkbnxS4C2eP2Q8SF>?(CpgUK<(9QI4gISqOXZR^Yq zi-t#&b{02R?2n^Jua|vG>b3Fd8?kNMoufG3bQ>K+g=aN2=eqxFgqU;nWUMCB#j7%> z?O;Nx%)L!O^?A9Sa=zZV5g)=p_6bwtl5s3_xu!xfUkEA(qauWelB4BLnD!Ay%P-~4 zf44B@r5@c+RrMiCEZDa`7#MWHHXRt+7L_=X7Y8_1ROGR~u9NcVwYj}N6uri~1#Vgg ze(!p>4X@eEOez7&Cb!7Kg z*;eKjnUOtC=E{FmyWVO(?BE~4H2TMiOwG?)8t7MPt8#Z)M3y0=_DAA_ETkDk(b9o` zQYOLf0i8r)y4S~dxtJhEs@?5@&m^kO8>AfM{HyrR5-Cs>{cr$&^Zf2aWWgLbga?$k z?}(A`>WJVALSgujbEX9TzKU=n?ymc0A(mjKdh}513NTVo9X)Lj1koWArtaUzxltT``gw4GlWYFd-h_iu zpd}}-{Z`TUnq(}F2<6sX3`2^w7r3SVuS6rzFMv_0A2gzPBh7rOHCrCMZXCD-G@1Pe z;@H^Qd`_Ti~k46e@>Bt5~&6_@4?n`WEd>`SSq{U$v`PA*H}08=ZniOG zm8FJ1ATOKw&~KcqDw3&p=?j1t{L*Q478yrY=LH>~p@UNZY90obH_Ckq+jmF)Q3fZi z`FXugj?Qb1VXOi)RI8qz@6s)d%qz0mHz019k*#19wWKNIU8 zgd|KTq$Vj($k?u-y_tgwZp&dyqO&wQ0t*uz%dj%cdn#fJK_BkcI9C}R8}b7Qqlo}H zCnK34@45vQlx*cMW?F)DVooa85{A8bDYO3(T^QL2auFJV$eU$2^-RPND>Vp>mAz2H z`xjTQ=Pr<5H#7M}ybO*$(r`e6@$Ex`@qk^pTk=6_14M)R&o5LyUeElKu@1h4 zaS8WoO(9i9pp<#{m9_3d7Fl{3t3$M+yTM}C?t2oJ87ciCyIegB1aMn6s(VqgP{thU z+g4_lh)aLzFn_@y+TdPV=B$XGK9P%SVL=2+My527CG$srDDs)YBzq<&Rvkl75brhJ zs0q;b=?<~ZD^IF&9(AwzMbp!oF(ehy;tOh+SP37}=pJ>YdM zSl3&g=yYLkwjUN@=8etN1Z-SD!#~)94$n1x#4Jwi^p6oGVPL8k{o|T&x;FhlW-&bw zW1{W1JjLBGhF2eG=xUgkC}7VXXy6UF8q9@Ruf^kE8O6**W5aoO+j>?JMZcif0t40< zYFcBG6K;=~!Ug4kD}+P|L=q!V6$~*V5LwVzp@B)LL5)@mTj5`+ck}y4b5{V8UNRCA zg$9*}E?hbSvEwPb$shQ;t(-SrB&b%G!xuo2O=;)Z&3vWP;7>=>vPS+m-dHS!jHatOY563wJM89NILIa z%}ZKl*9%>7E>3{G8DuC5i@j$`H0-K_+%HDa#U$P23%vWK{v#B6qROKw4X-f#M?uJr z??g0+1RZE;nURJ7#&(r6rT^XqQ{bM{<+@mLBRp~l-|I}f2U2M(4b{EH4y$N8-M8=%h|NIGvfO%h{y482WZ|p$DFXB`H$Vs zW%@`*JC)MzKSWTskq~>vKaEY8aUgMY@ur^QPcC!e)&q@A!z7f4zr!#LL8PbS{|Y|TSNcSz!!-Ss=93d<`{12pEpLWPlL2hy4}bbSlG z75udf9*=vrotD)SS8o4@A8yj_ltOyme(?g5ZMm#rdR92WIIL=QZG=-~!vAPxBf2UwNd@GjmW@UP8cNn?fN zu{_6nk8p;WnZv$>1(S1CDay(Q{3$rMqjK{=-ovmto^FhlRc60{NJk-wss$Gm>twjM zUWxLwYSCjLR)8Uw0hHk0IRUUsKcsD&R?f`-5ahAxkZoUgz%WY>Q4;QQ4aVp{oLz_M za_D5?!I7Z%!0jWqc-%!$bN;fLymiveR2#6!25J8NrGj3wWm*QshT}RFSILLb&aG3? z8=|jPYS~Dx(k<4p5^-1~Z}jinePj-*OAgM~SKN8`PeZreSlG6~*P7X?4W6zno9YWUVK>z#_186LM8pBUl*kXZ}8BtC4 z-Nma9ifPGkByT4SAdUvMo$|lU`nz<%i-M7pnTJZg@YsvVp4}YIotrwAW;ZqV;fECtTeY3E3RM<u2&=-^?i@ zi}JCjkz3`TsB!TPS`sJ%t+z4W*YLY}v`Vy(U`Vcm|Z+0uwJHPkymY>}`pZI4wKnzPn3C z;~41gE$8K{E>wx|SslOPfAb|8z=;xmXlidFaG%FXz}syZ!@j?3QwVCOu2yB9-A#Os zgL`T=S7XPitQw#}46O}Hh@eJHQUM=5cXzuNf>l=IPez`bb@-*!{<#79BWULS7c{+t zj~+iRtDdr7=0T!?WCJ&ZZyROE-@vz9g`9u&@PsbqS2t%)x++WS`r9K@1or1{R1T`f zcnR4^Y0YM|s`@~;+!#v0(C+s)@7*}e`6Hi17JgWAGM-T6no}hc;&Ic&Re2bZ@(qWf zb!(5?*QdYnv{ijG%Xi?4(?H+3nUgRmQ8XRu`UDSF1#>SfIqcQ8Hsyj{``p};tJ|=#u80Di-`9bu74_gW-o19;)My|AyVCxw zOS5wuy@lYnh)M;vXRMmYvA>(s;c45J6K|cp%=a2{O=N0Bg*lGAK4X8mezP%2-Nns! z)mWA^!!_n>wK(ThWdTm&x!q+emFt^->G6qZ!P>i6ApiB0&RJ2j`d>YWC!T*~eGM8u z8Uzf4|0@(YXdmT%>|&>i->U&lPt;g(RY2a4kNoe0(Kl!8e zLBW}G4N5vW*J+xiP##*6?%K#W0O!X$vfD_0aRCG38w?ws!) z!xSow27}+Nm+ODZ|1Htnq!-?3ItE61${QvFf)qWSPf#LI$f7KmD!emG)qxAma zh>G5vCWVH7;@@a_CfJkPZC$@59B`^eyNO2)%U`ku?kbt@TlQ(T5Qu1uQJlMNLvWOQ zP1vVS994?@i7^)^?bljgjs1gwIKzFrw=m%oDh6$rw+DZQJ&UIVhv2u=$kff~=*{Jo z!F$)$2DgQ|SqS*|Co81Rjn))oJ*Caa+~hz(alp=lT0W@g14QXi#Sg331>Z>#k(-7~ zxO*q0HqwxEb@llb?XT1gn}e#>sB<;i^m#Z8JHLH7s-)(Ngo9j34~RYy|||8pgn$+@S;5zdWYdE}@t(hV5LRaO2U}Sd;uC2R?xGYf zL_SgQjl6MVvD&&Pz3~){kTCM|*Wb0IR*gEZFPjy1m+gjY9DM?&^NZ|D37|wsQ$o}~ z+GSyra{pIdZyi-t7rhG$(jnc_orjR_?vw`U?(XjH?v!qj?ru;(=~hA-B!zDue1G@e zamW4mZ;x@JLJqGv4mrIJ0}@C{CmA}b_=v$ZpW66Q z0|^o$I~X1w9;HTmVl#a%LKbBapQc_Ux?G}v<7OVeGUp*YO>$}(m*p(3-!VUp35YkY zOk;m|al>tJ0(t?H+>`LHZ#L7R;T_Q91O4}rfI|JWteVgd$xJ>blge-XLL)d(d)|&6 zQA2NcLnn-thK38fy9pg-@M_z*Q1EjJtp!&icXk>Qq$qF`q2f0=52YO;V67hQDHU&i zBW^!^+jjdmQCp%- zt5Yz2yXF5$E!Z=8*I@>gw$|eYN(C!%OfhnxNETh$aC$)W_#HVfbvom1VGoYqxS~Bc zL4auh^qnOFCtV>HO#LW;^*snLllH>nl2v(5NdNV_G7NMEI=jY1_C_Sb-aqitYw=3edsL=QzsuWD0t7I%E?JiN(y16 zMxf5G6GBU_a6f6mGo*R>8LpSmB51x~^k|ipdo%D;ran-oX39ODRahvQcYL`X~4Ux6KFz=3`g4q+aw1PBh{N^GEZPe7!Qu(X6H(*J-Aptg3*{jkDPs7b5NR3=IxpUFa+4;ji*n+u9Ums_M8%+Ga0dHpp z(MIDU1%?)V$^j+G$;1iy7<)U6$&SiowOMy((D?9H6(&J;%z zVc2l107Aco+RXVmrn~j@B21OvV(QJso9!!)ySu2XM59&@!mvQ%Ky&Mri^bXAg8F(? zQ&ZTBOXF`2yUi;FVY6vac!c#l9!ft=g|d=RReAG>tkyolz;7O5S7u1}xB znCYB0b2-8?7I&%%8;(!Lh){ggCCZRXw?VoTgGT#lzy<(pu)Xg&4Te!{tJ787f>3R} zcLo|J;IYmhaja>gIF=bTtKt)k<)VEQ$=H0G|-fW4B13NvDa|=i9-%`7v`AXem-p4=1iw*s{YfRu6 zd%PQDV!wOWq_ami&bliJ_xDf4K_pY5-;zyB5l~C9rPWELgy!tI%r@Vv#F%sALM0$K z?)3&{6qsXjr)i?OkTZ|)ub$XjNP5JJ*@oJV2cX2F74hzq{4tJHISz)}JsfQDhS2c@ zp3X&OC=hOf{uLF4OTmz^a=#?G5Lg^9oxoTE&c^$(dbi)?jQ57ac9#2HKW4&<$b-#pQ=hVtB@XnYE^TZe2Us#Uxi-*>Ja!-O!G`DtW> z7TtTl2OM>n@x44V+}z5adl9!f#l|R2Efrk!nWfRc`V)T_Om%gbxCL4YI*2 zK{k=>l00wXjbgubXVj>uEbpo$DrLV>iV_Plt>lG0)O$k3iCg%@%i^>r^`5Jq81XDG zV%Ysdl-t)U9eWaAA|XO-C|e(~D_bNib{at+gh0QzMPchN;@i3G++5kY>z^ftevmqz zhOAe8PuM>SOy*X&iI{2C^-a5uaLN5v?s;-dRye&ktHJr@bK=H)$CQE3`LF^h%gmW? zodAN5GgTkd11^Mu(RBm#u0!SApNgbJ)IVKFfB$Dx*k^{!iSQ(vfFD@6?}TPiJPo{EpvJLi z)cwR`0VOhn)eN`ru3*A!IDk2KGOen_TUqxLO5)->P{R+~N!732nvTCw$&8Ic%q=Fc zB0bCmP_dL~hkh6|7b@5Xlg**5v^kWeiVefYiQ3r(v`(-@I!%k9F}PukP(Sdr=+;=) zla0-yuoyz*b$Zl@E#{SA=wO8Qcr9 z;pBqA?GJ}Oxd8ZURL?H&)+eKI*wZ>fI|Z^E1n<*ajVcaB$)V$c6s zxFF#VT=AkG+Sr&I32CiLSN1yiFofJP=fS;9!GvzS@yQ>%+V}q42GYd!ew+8K*{YpR zZ5);GN5@~P={OgV4E;^P5J5|v)Vd8J>3TG~YbsEzAVrVds>0qqd>qJP{5b0`;afad zcy0aZTWJl&YW(Pc<7B>jb1m9Mw!mz;fK|K917CesVFLG`o5X!9DGOYxckm8beTQS; zWP*k#TT_Iql@MR14JH@j=60O{xfwwAVr)^s2qFUlWe#K_6Uru_L(Jo_#KexPajP2M z^O0TT{E6%+6`}OvTDlR0_SUH2kBW=(9zW;Qc#g=z;qlhVkjhPD4bMVWX~enucB<5< zyg}?ZQtlFtVSlaf31d~Igq||32^rb~tEF@FxQ043wtrrj;b8dgT%l;2dE^PKMEy-`lvv8R0B`v88vmgx9IrbZjYsenEHCYEil#AG9iY=)VJ9^%Qzf z8tZPb2D;J-2oetw@gMRb*A~ZBKaHV@= z`}{@CuVj`R=eYa6swRWGNZ5APK+FGo_r{|jyyp|w%sQieoRZBF@1DlI6 zsV2k6m*&;1HmRnOr}?$}&Y=#HmyI=a51N|(Q{l)jW(dIWwW<50k^Fcvzykdw6)-V9 zj%|OKMA>Hkb3cQ(z}R;IbcP@y+=6UXfmbJA;}j9I_NJ?A0T-8WB~4e#>OEHkRlhz2cb5v;33xl5vfgR*z>Ke}f_2PqyABr`Bn4>8* zb@g@G)23p@aHrc_*gLJttOD-sz>_wVmP&=Bmi${xG9g;0P1c+2!nfxar}>E~IWccx z-x+MLW1Jhvh&P#9ed?B<>rs*n>7%AA5$#~KMVzfn@EAlZU(DiQ)R3eY5vn=LhF^Mk z;3>0{_FpX$&lL}2)@Q+v2c6ChwjQ}4srxiwAmT8hC#|h9Es^^8umVDp>!Ss%`8>EE z3XtIe4CF$(g1_N3;KZZNk)5S6<9hDaTW!*nuurE{QU^*luG%8z1P-C*)Wv;$K^i>FVkl6dfsY*{L@YE$N)#NQGf&Xh=iLG?cAK zVf^qzf;v2o=ohbGf?k*ysidtQ{BKuwg<-z&fy*sC__3R?_#SbfZU?Q5EFs71HA3ou zey{2=zEyS+v}kjPz8+niK4iQ+UJUmRQB+tMLgHQghz=swbO+9-{eo|K(C0t%W#$X& zMyTC+zKG*ZyIn7;b2`aQ0QKL>#g9f8gYx!7*ejMx0(|%l6Gd*s>geWv_f3ORGDNf# zU$kzEKAHGHz6!<^GH1vE4=aD{RWw`>4@R=%NW`g_@%qQBKlS~_RTim~ztH7Ly4y1^ zZ}0D~|Dt1A!I*vA`Q;o`dK7mIau2X+);2_sWZ@F%*hO^c$0|t|9!H8EM~c-&sAzK} zm+-=y{d^XtSu5o0%P$hl?s2vK1}UD&@i?zUyuiM`-|nr6Q{qR$m^D_$&l}z_hlhff zFr$nU-QLQ{`$xUTpg?;|&u9ZF@nM73ew)@{E2c5mp-=14MPtm>%!`H1weR%w^y+nx zJ+3Z7%+?W`hU4(Nu@dMDWh1OU-VUf4h4vB!whrwnaf^MY-cY5}texp%xGX{^{H)&k z;Ki@%1nk82CQCfL2Bs{nO5UaknbgDAncWJXLF6*X6{PEXbjJtSUq-+&6j$Un54}J# zJYbMp91sta3^yX1et)^9h_!zfq+i6Zla4Wb-5rYDRbW)hwv)@kUA$3;y0=Ed+JVg+ zQugmZ0ged}LBHa2Ap2esyM2#O0@`H8NJkO-&u z>(I2CMe2MdtS(#j=GSZolH%Wrj!;T#^Rsmqew|7;tnm$k@Qp*`!_{2vS~m{5M!COq zJW$7e>#^H_^E=-by?ZQ@zPpMUp(C|2EZPelrwd{t9WY%-)Y!3V1h$;qDQR+4q`>a= zMIROyx7Dtt(nnu3_se&Rrc+YUgVqN%n!72Kk2~EY$-HQoR7dz5YL`DeIS$B+k)baWFl1oCsZhtTy@Wu2OTQ0ZS zayg7MK~uF0Q%O3Hnd-LX z!=A0MT3v1L$+7ACs|gWK6gY}2w<2B$A3g&QIQ-Spk>?DY&@`@D04*|X*< zMZEmcS24u{LR;G%(O?0KaE(gH^q?eA=tb6lxzx${A>8Y?WT;kdngwrX<~ik(L8vB! zxREMzGroPR@lh=zvIHBeLVjqxNX#Y=XO_Kq)L;3u%FXE>v_fp-Xy$4+-b#5hU38rF z&!tx8#?;+0P4}S|7R-H;r1oD-7*puZ5At@$m}o+Jdj%`2=<0V$x2MypbKB3@0k4hc zL*#0!lU7BDoWk%?f0_rrrdM!cauSUgBLpRXp5s_gDO<(021|w5{thK7SasPKGRvf0 zyXzMB=|jL?&}E1yw{QlJzk6p|l{65{Rh#X?*OUc5xe7!gCL?TYm8$KiW1~{ooDgv=TT=9{Fu5X@yBo%kbCVF6$pi0P# z)<^d}6b(GL+IB39B=4V7j_DqrIpWD7vm8by2?GNXI{Jz8?MZ3CAyeS$s9A@~GX%d- zHhe1b-bT3p!k|I?sDa9=z|m*-m3J}XTnvcwm3dQ)0X-XUVr3vROHwxy)wiBFL1u;`kNNuE^=h(eP17*li($f!^MsA6u83>UIQ!`-h0R3>G7Y$N zv^Qg%b}nh(f1E#mo|YowMt{6L8!hst+UZZZe0OM?P| zC9CGAwDi66J=XsZ2HHb3R%*doE?vrg3P^+;NZ}~N zBeCCO2MAE`vs^*=F&qm=wn{J${q{nttp|E-jgYolwLOn&6zcw&(GyWlW#bx+x-C%@ zxZKQ3sXDHc+(B$AhVT?*yj@ta1G(3{%UJ>D*1`#QPJXGW^yM96p(Z7$EoK(`) z+*(jsG-w#0N;NRBQEhE>Gd+LsdOL%a-eUHTSp(Khx1osCd2-$btfA2Hn z)&JT}@*OR5MW}Q7sgW;WrBuv*SfA<7^CoFa+cR#CFGu&Mr$l*7#Q44n& zy*!RkO-j2iH(y2&)!RjN;1BgmDk->9vV(y+S4^y*yESDJMh_VyVw8t^3k%BzXwroQ zsPJ_{g7KMDTD56}0->A z+@T)dCBvq-t{KvTXmoLP$Yb+E11Q@*G4m`Tg8a1L^i!cwK4I*ou)(9eIP*H(xe!@= zqHUjo1t)z0@E$NgKI}2VqaU-3Xz#v=6K~g$m}a(j40#R{(iQn8%IMSYrvKw_fv>~1Aj|uiT!%iV>p$t zhCM3Tvl`Qg`)E9wVc#1Qv%LPN)g%BHgwFANE%BZ=!0zY$fGVI&+P%c{6?>!6SPOMg zU3hn2GuH8#O|N`O7VRg!n-$tR29V2j;Dqj{CPYFk+NV_@syJVSZws{f1mJUaxx!cz zM~M3*h}_BNT)0tv#U5^*8!Hey1~V=_`^-P5du63~oNmO4JubM!0DF7D0uupM`#;B7 zA*kkX;1jTpooD&OuWbbl=BLowcxWbTEa%Lm?HdQ)(H4n5b(VHz_XM5tCPL?8u*}+s z!kzkfgT%DoabKqk@^Lr*xS_@lpS4x9KnSw>W;=a{tWSV5^ z|062NY`gLyhs#mq?shO7WptWzbIK@yzg?=^2Za8h+v~^wj*y2!Ok^orr`2vag&zH4 z%IAa5XM8!1g{9>Jxa(jJrY;@EkG#<#VgiV6#6i9BWBpF-t#aY>ttS`^8sGn+0_@ge zF)ILeE2j^+%Ch6O)a_%Y?po+EBG55ra7(QEyfl?ktz9X<>+#_t%0HPrhFIF%ryRoN)jHq0^uwEsdjW`ytP0C2v)NOuaCooN zrNsB15;&f{V@rWgOrI(tF)=VD1;`ThC5-;;Z9*GJ-wrUS!*$@u2n^_CMvCwsO)`#% zuK7P1G+#Q94Dz|#axN9;CHvIzgY6z?QKCQa+a?sXQzusA0Gq?UE{R_?_T{CGsG;I1DVw)k4t!kU_u4bAmjhV zf%G{JZXtX@ykRX8U9AhUuwB!SHxs685_St*5xmLR{BwrhuX1xbKgc3#b75x!G=6sBE6|LmYfc1C1K+R9HD-(HBGoe#v)^1Fe zS$%|(R}H|4q^D)}?&6>gj065$0biakOpC1<6x<01;xbUwC`YN|y?;iOpYA@w3w-j0 z_VFUu?r+s|i*7*oW;*l4<8RP6o zYdjU)%gZT>GioL?)aIE$WN0*Y!>M>3U#QQ=SDktU16Tpxo}^b>Jcg121y{1NzWY78 zqcxc0_t%9|>g!}dB~nC51R{!9z?Z)!1NXZ>Q&Y(6+TLq}Mp>O3Ro7iB@r|0`t&<5k zK{wclB&i)Hz;0IBELQi_Z4^S`?5%p=t0RFkjPeNu;O#Rp*5(F(~8#^pu-IY!;q`J=L^-gl3$b0JYfKeKd@wt z;5{$DB>4Ve&@gIy`-iMOEGcGuT$*O%D5I;YrnSFzp3I>BQ4PM<=wWN{+mFsVNZAd1 zXi(hJHGzc54Ls zXLgBffRCrZ_F-*(Lz#M`*;WH1=bHkg1}Dl+j^&gbv<5rk;>UQlSi&0z6& zSmUcg{C*X+W5)iR$-ii*@1x8)@e*`2soJ0#PD85{QU0Ocb3TA=I`3lNj(FuV?Jx>@ z?9e}V{(W%F5Nw_TN*ImA)tt+y=mnyx5&GF)c+}1a%2jp2+S_+(U&d9~2XsO;$Ou>Y zj^xbBec2|RU@_M5fto*dT=^}Weu9%+vMCWJ+B z;ivsuKqI18{(bOjIEsz?Q(T^sPMM^coq&rB^w6(E!#S>!$cxQy+y#5+#DBBj*rvU( zPU3tU&9jCG;<(yZ!-hgq3=#R>J&d5( zB5zQJ$$1JI20~Vr)rsKy$~J#v`w>()#iD?%9pE@u0ehcs{T^TZ8j8743j}-~CLbyn zRG)5U;M=&r%FC+rhKPj?!vI#p&G=Gl&AhW!(FBlJD97X%2NUE2F#hYYA5pC=D?$xh zR_D=V7oqiS#fv{i|9SIWispM zE^e;&4Q2b!{T8C#@^NzwqMa^IhpW-bTBZZ?oE%Z>NiY&VT`(;38wDXFh_kVM&Bp^5 z_Z{!6^|E6Z=|O|vW{E;H8PF@)5ByhoSDJKloo;D=*tm6Z`_qJZ>L>KwPdmAa8O3~b zrzqsFDS=dB*`mbRT?Qeb5|s3P!XVI5l1jNtb8oD_sJqbYZi1AMpl9)v!L9u=6x zL9cx2VuL)M9p28jb~iZf@*J=)QeW*@lJvgX7krg55TZ!IAxaA|F67n8mO_=M! zn3-=cat9M~px185(Y$bIl48py;$i_M$j*C}M%5NAIi+#JD&|v7>)?r1oaEi29PLVV zd^xyxmy-4V#?a#4qj^t8!hLL-sOLEWT!Nz$@0@&byKJ!XGF@oRsM({aKAZpAw$FCo zN`JJsKf`8v@zgTKLWr6u`1o8)J?C<9iBAysJv$*S?dPS3&(5%XKqX7<`aO@baS!74Bh;@9vQ&%7;U%c1b;bH<_2vpSXNQmLb)6 zDB$3yXY$~D#hTF%8|*t8|L@&2RV`az+?&ofdxzj_DC+DO2BuiFb@>-yDHNW@s6ERU zbhb)Sckie)fyj7?) z#mLs(CMR>PTpkpkAh!!7sPrW$8N z-z13>2rEHLW}U5*Aeiu`3ZQoiw%^HhjwIy4oC>uJ7J}Sm z(geGEBmHw;c-m7dHVws%Gja6_KWgxi)Sq@+$bYo0Mov9_a zvbJo(x2^E2m1r=hd#M4m-<66^Qxca-ViGO$jsnfk>FK6}WC(^%J0@MICwfcd-{0N1i~*7b(bho?QH{ks}05*K!EvZC!Jgb#EsB#dOCllb~F0Kh4zgN=O`ub*N>+Bu79Y)01(1{3PXH~(yAHlZf_5&cyBj4 zLz?t+#mil3dAYn;$sP^CPE6P1jv*+M-06poOc=-4 z;od?2mf%|HO@|?ak{i}mh>Z^#{gP-6aN-SB+AX>#W1{DS4cb0WAGuY|{&w^4JtlGS zz0AK`%Sa-lu)JSChEohVc+Lp@Q=Q%cE&f^LNBUC+cK${=^xgEVd zem$1|UOeM=*i0CQT>G&T18TW}s<##UrTx%K_os-;zKI)?)SMEd^V1REqY(B_kcZG5 z>2@$Y7rD>_QU!5$^jX@E_sB+{@iJt&8Xh#6v_ZY9_7dVd%@{ONdfiq%qDW@dR+5pSo`|S z66P5_LA1k5iqIY@3_xB9{UTZD(8BT53 z_OO4zT)RB{j*I_$bIs1_xf|QJiO`XUnC}BHM24Ehp!QddQFi%|tWot-!!Ht6R#qNf zSbA8{BVQ&w&$Dd-eB> zmOH6KqGGgKUF+IR)y#u z5i6RVeeZ1Lzl>N6Y&;ni;v3s|M9k^2x-46Dak=u@;pc2!tH=aMtu&i!o<6gqhZZ+{Rd1d0RPR?0@sKb!Y#eWb`eIdRK*Ukz@H)`T|i5wFuPZb z;VkygpG0)tx5l-J#Qk%dx<0R@WDV_X1X%aCupz!W6~qdU1pd|Jv&LommU}YC^=+dr zbY_;=ANNCFMX6QGd`QC98>oY3Li|>Gg&rzbelui(h)xM)N9(qoOBu}clvb+>ZJJy3 z>i72skhQ1sTm=eT$~n6Eh?{nlZ|b`1Dp>_Z+w1f9?oKUiCOp%1dv7{@rq_( z{zlgY{1x+zw2H4^F~<#gU7C@ECqPF_)VqWOt}4Uo<`aa2`~;{qD^J^=oyvZtv*R)| zu=MCuF>52b>_#&1-LEV7@Nz;Y_7JWL0l3I&pH(VLRn)&zIZ!N6&@VUc`efD9c=7b( z0QCp7f{^VJX^e*bU??$Y)s{D+YQp>MCpxw2>Kr_AHmgqTDF~4T$;uy%2S(|0d;R%^ z^P5>@{(P`9=Hf-Sr^8~fkn zfEyYd#EBR*27lr;Hbf;ufyqd-baB0djcZj}HQ+a`Vqwmv+VG338Hf3@cj{QPP*-GA zaWMz|{}A?9t=<|u6nM~3qWgG1FbL$cBfouGtwrM2Pz~xh(k@?CX=x=Ij=t;xX#b^y znuI%8Ax@Hx>Gl`zVapP~9QaU?ptAh;Q571Yf9U8dhsq}>LT5%jJAaJuCu&}Q^;4SE zvQDe|0P!HN^-u-kC_TeS!U2G2)#L={Yl`Xd9_%dEk{pD<&H~6c=StEWT*lGY*sh$W z21DcHPr%Pp8mPBf`1ktAZ^QAR>C z&N&9l?U@7KOXp}+o+g*qTYTdXo=Wz<@-}9F{KJ2^PL?=}qK_XH8H}hc_j%lj-C~bq zjD4dH^4l%4&t<_)h#9U8wdb?XU zskmAm!eA`@-$Mi9(VDkK)Hn%e!>?gL6bw_sv7<#z|62|^|FXJ5^QI=K3q_t1C(4Z% z7y6$w+0-_B_JpXhc<9F2q}nHL3%Jv$(nAsOh+z`z4=^>YKfRuPX#*jmq4iWoFYgWo z2}hhk-7zUCn2KW+$x>YfBcp+c~hQ4Rr6A36@2lXHw>v>!^Iy=02YCXz6=@`A? z*?%i@%?O!NEhQ_95u{$Vn8D*(S&t{JpfJ*uPHC9Z(q9S>uRtk*p-M+-G%#3@z?Z18JV>HxRUM>`=Li7V z&e*Z9{k4}yFb`TbmZ%3GevdU#_V)fl6Ibt{Uctlt;MQa^jj_C{3Zu3(gye7D`Kylw zGZu`1*WLQ{U%8$~ek)DKu0IErm_jG#*s$3x*ee?P#taeisTmIWI$ZUu?@|?Eu8B@s zWxDSr`B zs&CPX7#U;W|0#U*;0O^RYEnsA3tB&P&G2BKouj_gN(19;bGOB`U0cgIl#Bw%?jrQU zRg-l>vT`74Ox?=W&?9)$dQo?Je<2eZ!789us{pR@)ljIm-T{WwCK_A!Usj6^JUqec zhknn^h?^^mwy5MlehU?1i4z`K@LMl=&>+BBc`Ru)n^kz7tbl~^Nf~~QgM>BEEWG^x z_z8Tqom{Mq8eZlCIu;#yaG3G7cGtf+nCmzu5RK^T%l*17|DB zW!OgM`;Oy#dM8CbrN6(4R5KGA-021Uh0mC;R=fy)<1<3Sw4OeHBW#npExJ@?l1p8j zD<4*xSf}ZJlc4i?xOj4kD_es;!maUC+`Sq*e*D$w1i?n|+X$$ad?kGd6+!M#2%j#E@@Y_>0n&b;?FF*Pb{S)hZBz0Tm^LD$lB5oLubN zjs%F*j@>235sLNb73X1~S5}5LY-F-~Ph71V{jBuf_%NIos#DdD^zcvVF2O5qdw>R3 z<2u^(r}S%5;Fb2q_S$kV320>H^P4u2vmf zn?6NFGH@P#^EqZgjW~FX0$_*Ng#&W@iS({f6>3o&aC`bKf`z~SO{;nsP*Kg}hHW2W zYL06w_7?81la3!C2YuchA@~?lLe;A8I*Ku9{Q3e9)Zq7-b^WEq22N7ELf$OXsIU%h zD8+|MqBt%G-3)AvCAG|$1d7l~Y8Lpn9+;-6sTUTMBk`0LXZ*qshRUA(*;Hy3&&U4v zkt&5En`IowKhJRnLd>%TTHs>-{2lUdCn-Q#Tseq2x{2^X-x)uGki_bh{uaQYR)xCf zC;NTsQRO3fB^Nh=eo2X5e<)mVub*7OBfJtZpRENI5@Cp-By4+4x?#O$A!qjXaj~$b zl0o{Rsb;nM``M|$RxzYy=={9nAr+v49~grq+?4{XQZ7_^6fHM*1;EVDv51nm6)o>5 z=mIa2nu=m<3B9mkRE~Mt5|?l~EL&kz^5P@m@m-oY{67ZiRj|pp>%ys{ueu8^67Ka0 zneNM`GxY!cRy+I_KT#(IN>)7@OClS&pNCN-m{9hNmxo!aQe9nbP?E{H?K)NE?Oq~_ z$ZsF!z&sM62edyA7#_RN=%csgO9-A0-!*I1&G(BrdU5Hvw`wpu*Lf~4skb#-PDy@F zcgoK7Y%L|`dC1%my}H|HSpY=+bwBa^`Oo{33h8HA7AHFz2c^oMegyrdkMopnqj-^hxZ50tlj-a_AsQlrYr_ zhhyv;Q>=16*LNzN&;nL06h^n`Q3U?6L&bGOeGw&zB1!S|scYKrdR`NuJ}4e3;AIG* zM#^6GB}3>tDgfzZ%z59p=M~zgy7z_) zb4d6e-0&)`{`IBtG$Z|MYXpjHNdO1J1D^o;$3X?opn+cnU9Q)NFE8rSeKjfdn)PVP z%)<9W1QN2-cv32Z8k_Ug_8G-R1G3DMvpWnJ1#k-YWWl#d2hb60co{)`j<=<~v}}R^ zlb&rB?J{W8Q5T*I*}3Jfjk{L z2Xv$k9E{a!?&^Y`Ho~XPXnw1kmLCSKWdb@q*!^VhISG@`E&zW56 zt|}lus*#-y{%<7+0N2(Z|35`;BnY6WQP&Bi6ZLyxRcl{ND7$0ui}A=Jaaj!e6&STv z0U)GjJb2-S@%8IhzA$9iuY&L;B_#%8L0HjeWA1O}()Q`JKBp1RhW#)LQzv)Sxea3Y zc;@+lT4cN{7JEJ;7ciUzuCk`XDQ)tn)`BwJ7=PYP0Enub zO~;^K6RI1jR5uLZO~%9n(p8TFcE_C;rEr}q9P|Y;0;o|7%vm1y-c@^4eu982EWW_g^xgfE~$9@vpev z05X>f=>Ka@d;sVT(54spXW1CLSZOajm?|s|-hzY((#`_NV3>7kpl=IU^Wk*RkpLtB zv2@hq2G0-B!wE8{+;FGe5z7ZTnw^AmgQg4<|ge?;(c+z%ElU(17z?NWE1}> zBr}8}xQeN$PZ}5hPkQg+lsx%uJ5)4khfXwNj#KntkoBn3b~@w*$y^sl84Si|vq#Z^ ziHX0a@=(osFs-{ll)e4>)NnmWC?b+@qrWCGj`JGBGK4^=K;!@k{nGjG8gNR#U{(T3 z?H?iH_1Tue#T8Y?6mNJYBp={Cs7TuWK&9}u=(tG%UseJ=6gn zHEiPlpd94KeZ_%>--5jL4%=j;?W1WGzNVqv3jc0p5e=yN-G51CU^L*qsVsKW{wD+# zm!j^_Mk2IUuLmGoTIy>1D+@s2+?JGw9(~SMIsYrU%gonNGHk;6j2|hf&mVv$O&)rL zxYXU&mJgjr2!8v5UU1`|zm8)b==CxmtzepnlFfi+w*yTyboslst>#tlS$kJcK0hMP zs!R4t+0U6QxSACvxwEP>Hbb28Q1fh85Yrc|U-z$;nehg=AB-UEKk?3i;7UqMNy*7Y zGpxnLpgt?)PUx3E4o~Q>C6`1M1B3n~Adq4PO-m-=0Cm@re=h&$)_cK5=GXni=lMUT z@$Y`GPTm007tFyw%xF7;o3Z|T?0-uE_6`s1;MD4P|JV3G2mPAW{O=zg@PboO_oXQE zSN!*X|NmSam^9P}2`c9OKkl6&vuw83#c}a;$@U)pM{JVF5rlh#({_kJ@yM2K^1`Q2O zfE?9hd<2aWdzeDm$BM-xKjcvAS#a?Cr;A_#{Lh64cHq&G)xyHU2QhJRPk8B=iHV7W zm6erUr*_@_<7329l|wBw=MVo+A!Z2mk{K}LmWM(C=bZ@`&m(<3bm103FFvH9rM;gs zU|uui$krk$*5}9P)A~Oi`M;%^Ck~vC!A_Gpp%@etbZQs%`{nJq979sf0NmR*z@N0Z Lf>^DHLD2sPg=7|Q diff --git a/layouts/community/ergodox/algernon/images/base-layer.png b/layouts/community/ergodox/algernon/images/base-layer.png deleted file mode 100644 index 2ca7a273bed32e630522ed70618a930037537029..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 106956 zcmaI8byQrzvn`z97G$u&g1Zjx1PN}z2|l>HyEC|i1b26WyGsZJNpK4goCFE3?~r%z zTEF{!>s|ih%y9aguI{SZwQDypRb`o1XvAnQUc7iECo84);spZa#fz6^C`iC3MtTAH zFJ4f*kdqSE@G?9yKy=fPA$;Wh>`aULdSJC!l|nXOm2^o09Z{Z9Z6!v*+L`eWLa9~V zX4o6a)1P=K2uiXN`g|RkPvc*Eq&!l*GyN;m1xicpJ=U^)d(!z_cYV38q7w_Hq@`cW zD=6G?Qd1Am?XE8dav^}>FkVKykPM>i#WqIa_|MBJTDXrNKbFtU&2C7D=PZ25X9J%l98F14)9|bcwpGZ{QqzNuhD{6P>M=QK;3Yh=`6E-efiNbF<+VE z2fZF{-GN_Y;<~y-24er8cfX7X>Z8CWCr=0q3)4_hQPF#6X7vR*TkU~A| zf4dbf`099lU}napAu6li$QK&wC6$aRtG=) zFM}k3?JzhHyeOQ0jp9`4)WZb_2MgPf7~+eGiH&Co;Qm^#`X4LIp^1<-X;C5a^$3b$ zM*aK(#9%l)1Ui+RSP|b#;Kp^Sa9Q(TcM!J0c?(d=eNE0A7z=Mf(x4<=dr=FI2M4j6+&ihF7ltY{sK!|>|nls zcvysC{2rKi{~wlk6N$o+s}yP6Py&YYkq$}%`}}z^*J(oirpCza=#F~qhhwtBv|<~n zbva{VQ86VK*Y~_wY?u_bp5DOlH$%DF7QRqtzY&7ME&@~4H(cibVNnk7^K>~3`tVFp ztjJzUL#@c5b3qX5Hz>hmeUx=|O<&EWZCpS{WOl0c1z3Yx&`{2I$!vY!OWBh?q*X|n zC05c(F7fd3Zw}?XFdO?1OB%ZYuRO8W9?Lk6&A<&8JIKK8cGOo8^gWD~+nm>!CWphwmb zK^7=dYdtXuDzE$W?ZP*k4tl>V%Wwrt-@BnDpCVi(1$njhk!h;p?$mKWW4P5HzEqlp zbt{A~sD&}Dc`$4_RHwhWh$wI1ye9iUvl19|#P0Rg5ld9Q2~K%hJtJPiK(g2( zE9hnQK|54ljGTXozyMk*`w9V`dk)Y4MYkx)e!TZUr0G!zVqJa1z>k;k9FB)tU6;v% zqM7B_3qFWhJPzl;90&F~rkpVLR@%5&SO>39BkSwbaWrO}xF?KKe*L1cTkOW;ZJt|b zbERhonI3KqF>GyxK9KO{IcM^gP1jKp{}Pza$6B^Vr`l&PPerVF5`6Iyv&}SMPjbD# zF+C|Q7CF!^yfT$_-Ux6>x41X=l^jRb%cT3Lr%ah1m0D!$uf>qjZAlC&OFmsTo3eiU zY1M6yH6X<;uF$ntawxt2wz%+kg<_7nB4!FB_KCCo+Q0CYdD>SwU=g3jHD^mSJXQp_ z?qgUTx+OaIZ39ew+G$)W1(^=-$%GCq0NLIoQmh_+j>BKg@<;R&wx3u{Zvgp9F-E|F z#?r45B(AACYzom#V2XZzyl+()WMe<6UY{~No{qdA8`%{oylP|jYcU7h#ig~ z-WE5#&+;G3H#)Ib52N^`^r#csz%Sj@z>qZ@r8NGgqrSyj65c#UZ)>Xay~el>Vnk3P z3U=-Uu!}`Smupg)oiC1bJH1cgx-}~(4jz2d(lfUzkGlt2BqLBz8{U7mdN$L-xTU&n zRNa_2wlNJ72`Gf(P5g<0U?90my6~sY!6JkYEbrh%*R~O?WvnRK2PAM_S)LzuU@?QU$8WG@-#MSyK)~+v}PW^6YOP}rM<{`we zd`FTq+uUXfWp5wD{pq5z1gn)Yf$@n~Tnkx>bVE&t+Qz#(1x0tq_W4(G;q&A(Q>GPX8ENx$GD7HC zM&jg>!?B3pS5N+XbNe@6^gKjdcKP%*_<1Y-Stk7Jc{JrqKkdh>eqK)m%fB+Q{DB5U zsj`kqrw{B=gD18Q3*swqp=r1O!UkYUt zTrJh1``{*qm=*2CGAtrp#5Q5vZ2HKblCec^CiG@qheGo4W5?S=W_e}>#y%V|MGbOT zkOyJGP7krfD1IGiYSb8Hl8h!CuZX7#x^p;fN@+Mwy>UE-n#f_8UOvyKWy1pW3NRu~ z`@1LUG6krVbhzo?xmlD)zNkB&oOH&>1W#`a5@Afu${#<<#bXCYBQmoFRrxv6T?8%_ zb7BsW6DTPUsPz>-NhPG?p6J#(2>#CPjGLClaH03;4SJb4wtZ5eg*r6$ai+5SfcNoq z!nf1s8o{AvsLuUR%gfi&{_^whXd;*E@p(UOzYk=; zmzO|)YGwoe=SoxCnj2ohMk}>A%2ELKCw8NqL7WaB%mb|4=3G=tLq|@-oVIALJ4|N} z0U@D7B`ivkN6R(E75yfCxuWnUo+TE8IQdl{w8bp(uRaNUI$=an5@E?Xsqf%TA-FV> za_<-`F}s7G){j%iX{|L&udd#9M2wY=#o}bPw(>i~XK=KN20U^GZVrR(mYv3s53htL zc&;**GB!6ilaJk#v*;ninl`aU9yQ^Pp@K-?-7}KGwK*aK<^FfA6h}0b`i$)CY$fU4 zG1xRnlx!KzRS~^hy5ix>0khcRyT^yK+|tlJ{D2gPtRyhqYF9f~JUa}BgfR3`%zdP! z$=CV!Fn-nh4g{b;y6&D&(CKo3G&=|f!PEo#^8Lq7i5tydQA0FRz@^#_gOR)JrvuUJ z^?8!)ih^x~j<1EKPhCW@m-pDeD~e+(_5?go)Hj7qrme{j(5ll#YEVI1TZw+H)?>#| za!zJbMuJaV7GHZs{eHuX;=+v1OPKaT6s2~Q#sZ91`=?g#mo385QDwrS#VO)wd>WM`Z}Y6QN- zCd0(2G&|b++;U22BKp9|GB}j780m@;C9IX3>v>PDSfS_yll_k(r584w)R1$u9yz{m zvKT3U3|EOpJ`L(z?jAGj>b)+OPaUdi!>#wdbLJQ1H`)APa(xXU&YXV=?-uju%T;LU zA6nF;N8$iU^1yH&x$#^d+VfVUa!-ExVVC3x6{S4p@u(%jZ*6afzqZ}!Zveg`PV+Iwdj~`+Lt`?cWWX%ytW%aAsV5etS|F#B(Hp1m&yb z4t$eatig#}B3UU1yZ<)50IHv07KA9Q#DGe+#9b*Jw=6v6R6mp5{LBQLG}>AFy3PF5nHP~Ufb_8U$|uFKRh0%wAY$kE*s*aR-F>l=Msu_5UEv3~ z1tOsc@86q}(4x{(XS1P=9ya5J(Qd2t8ZJSPJ=lbvw#lT?^2zQDtJnE2(Hv3#u=13^ zd0jrpv(Gu(KfTkinh6pL&X0oC`=4ugUHfc&O%gk-3OwVLay7o@xA0N#4vMh$fPep9_3ZEWwz-{)m*YyOTFLco?jlx_T2zs}L=e?=^Y zaTM+2PV7wdgmllL;fRY*4jTAzDTP)Sx5{RKnQ?#l6>&e07gq0iY=}W7i1*O$`R4Zw z=E1C%PKB_i{FH?zTS7s%z25RW)PdJssvU~nUL7RbXrpyyS18_h zq>so~0iR>AVB&U;^YxH;GR*!=K9e+vC8?PjBhooZ1c0CI7MqFPZFqXet8asR(}O|8jU16+D$OF=1cev2)p|So zG564}3jYW81RIdHrT8GU&#VPL3Z6NLnw61=B!GBg=&^jI3i2N7&lPGutwG?MtNpE? z>MB=^AFXZCa+}WH{S-T?QHO74szEq7e4DqZsUa5|8tJ)pGTpV%YQav3YkCm-j^E3S zPno<2iTwEN_JD0l7DIgncYEdV;lv*O2h%6a$z<=^s{LvOjGB%44Yie5P5qbtpIm-_ zvW~8J3r!^b8ODhE9zx8MUCh0BboE5-#QqH~+tOi6xh7F|UKjjFT50~Xblh}T8sDC< zE7VMS6Q zT-J=1S$%6Bntv%T30Gps9mHci`(85xeqaPbeR-}cOcJc;;cAqg5m1}eu3?Mxi#pAM zkQ(B)N?j%LO#ZUNy-gon5OL;Z;!wI0vHXx?`^?w>6;Bl$KHvr8}KmMzjSN2YryEk;Om{ z4IRy*=5krQV8aVYxuX^p%^`$|=O`&CY^QDfB~+&5VGZw4(Ce~c_515?^rL)Mb(cCM z3G4=v+|5>d6AJj`PFlEOPh27T<6v6oGWOp~k&hmSk!|zJl4d2s=?60o83sUVHFvCQ zes)iHY=$wK;WeY(0{u`ytEnz(04je&>=$lvAX(`gquSJESQGP(kQNa-%wj36W^8Oy z%YK|UH~6nHrk0sTM?73yIKPPCh;Q$7FP*rljCL6*r&9BL2PumdzuH9L=(=iD4-ErF z1>RtK>=4z}kNx&tM{g3(6vt}IL~kr0fQb{7k5j9snn@4S5436VM3G_8pI}Wm**~z! zDN6Tu$vC+-YT8KraDRQ(GG2J4VGM@fZFi?^_MG}?L;NL`hL&nW8D)huRb?YeaQ>Is z-!|ofB+z@GG=OxB8KgKB5sW2@me1we#8~II!m#mQM0@4yHZy~=MgMUp4FU=!kFO#C z{4mcKA(|8Byfx+A*-8{rqdo$4_{s+EwiV&UB1!-*DZC~rG4xx&4VmtPzrNp@Y#G-! ze9Nz91Wc)`ePXjWb5rT$;i_G++~I+ka#^qBu2RILr>+r;=ipx1KPK*-Flw8ardoVH zi06mljlgHQy^K!7r9qdFNfwd_-l&&jSQNIE>_x+V?e>b+-~(Yrh-~c10>g)MTl1-t zaAd3ajg1?U=Qwsb-lVVsVQFO@t~#C1Yd~crnO778YUj_oEF}+48{=FuQ zf+*ya?(oLHe;XpAq@Uc_2>*H=aB4Sxd(W)M-;Dn2xSa_=nbH~AgHy9*>JHDdNRyJX z>}@cIe{hcoZW@=xfIq}8z@&x%JU_|+P(3bo8KcoFK3_TFe-D1{nb08R*(eF{`{Jw! zD-;d|9rH)Yj(NGn(a^HJ*3=7#SH_jub35U9eosL%ryK5JSqy3DFFs77=OL_KlYwD< zvKW%!kFkRQB&CcU_!%Sa@phs0$2-2et4hqJ~4xBK@a&HYz~3AU~vL1iv8m6QY_SvXaX3{|f^@0MK(Dw^RjXRf;KIqy_c z+si9S)fx*;fYLY7q0SsbgjClSy zr&k#SpvcBKc~P3-O3O)(d{4)tRu@G73|@1Z2!eHv=LZc~$;PH#n+?*^3{-v~8K0QY zIABfrLYeZFvbj<9#@8kTfp-qd+O5|1wzQ~ZV2(~GNBo-+EsW?dN_B)YMe`QI9Ugld0c|HtU%&Hq8T@-dd(;wAu+y8epatH4IsL zrA+nH82v|8l7C2Sty1hDM|D#&77Wtr?|aX00!Q3rGh~1aZ2aqP)`NLd8YF5+Y{cM+ z6+Z^-i*?%dU+pxJipbGhmD?=Xl~f) zthSNK;av5}$;lfpFaD$7zai#hcucUQlwa3j+XInVET2(%Q*n zEHzpex-=+_l9)F7kHnKj#l&pcQEfjy+>x4ykD_v7GHKUf2}DO>n zTbsaZVXvUZMs60Jx}Zuvw>{PPywMnO<6WK59q%;IX%RZ~YL>9{08x`%7rcQc=Bc9A*Pm3Yg>z*g#Mr#A z0)OlFLEME7dBsa?R6ct>DHo+|thEtVSfTA)`HQzV0W-30_op2yPm{73v&T>?D~6UE zWktnb%36w9{7K7c$#K=2MMJZd+RlG>Cj3;Ov7`c^oSYo_Or4GOfK>$=dPS7BzZdgH zra#Kwt-xZlGF`)^hvlJ(DLB9Iq`G`AT!JepNbv$`9s*B(ivOtABP1Xo@VW=cCq9Sq z>?y{mL5fl#Ko#M9cWM6zPkJJQN1y^SmR4`|1Kf6r`9gVgp&0wTR<6xHxk#30Se z;;a>$aS{W|%zQz_5+Nir$ z$*=5~nHDpunh5@N_1cKHw>eyFS1<|4uWx>|(eZ(;agX{2Iw1a+3;KnIRB|J6KUG`# zJ8T|#@zmhrXiHe5p0Y&ays4#)zb`g07?xnj)-m*-IbxwP6-oCCOY33ZAY8OJKQUlV z=!RX7T6xWv2fwT&EbtQey{1y4YotM4gDwuO0*l~({YE;9SYO>mR%K@ohP~_Ur7p!7 z-8pZV6y37OBRD&oES^kg*uHzdO1H3akyi_3di7^D zDk`dXp>w0TRT20FMIHM zzciQMJFLoTwgO){i~psbo}Tih=emF7&EH+ud5!2XxmZUZpL{*SNfpP^^mLRze{|;q zadEkR>i*#vj;#nGQg;o+E3Bp#2($zM9I9!j4Koff z$YMwspXau|L{>2$K^c{U{-WiO)!qvor1%Y@+8S?`W7to+XyT-Yi9hCI6Fs6M2Sz`y z-6M_kn)Xp{Ww1_*Gm(cK>eS(~Os4S-OOzfV`*3%YZBow12%C!old-W>eLoC;0wuZF zC`)#Z`C4?k+(-1{N{zwC{lK3WT{3A-el4OCa1+5BK+|+K$d9;mkrn~=PSsc?{QVJ4 z!~rIiHj->7+~@q**w|m2uM=OIJtfJY{UO;_vj3H#pypSb>B z;sHwXVFFn8bJ3e*Mniy}B&Yl$DGj{Z;km2a$^f-uaGJf!Dmgr)8C?6KeoVnA7p-2p zzU5-9_kkrzX}BU3`5);HIqruPJ21xzeJ0x`nH|U%h&er4&rI_>V0ZtC-^pfQ{cEdX zTVw2lY%D@p4Xk&9x>-zH+?Mf?A;fH{`m;%yIy*1VR1ScGLLHVirmI@LD5`e{a(jeW4&;#2bwm%6xxOh0z zfcTMZB}yK@a%Q+qE3j0l?tm@oy{6Wy4WRKcUAy-4A#n0tgT0nw%G6;?efy*;i@%T3 zE7q`Dc~@fq1QWZyH&z)^j~&Dg80Umxyi}KY10;>EyZY;zW3g7}CXqQuzlgxvw*5D>InM))odz-W+)py)Lo5EN{-jA3Z)^D>hz98{2yd#kx{g22oQ>#S&seiA2*NN68IR5$D?5nV;W=fTJr)DdpuyH(Q9Jw%A;N0Na4DAUoR4HiGx zO99+W`-Cm{yB_`K<99xN#n{f`-A}LDDrvWNk4*reWk~-8wvkWm>$HF7U8VE6TovAE zG|~#Us+=wA!0u8V7gTS1uc))UoIg3!CedHp%mNVP@dh@0HABc&9@c+pq@i}C-L*>} z8rY}};1nvWj#QVA5jQrP^mI6^Fl2khbtCWypb8%tk7IZ~C7eo7Uqi7;S3lIo#995w zN%?{X)Y!)ND0|6+iC?*<3odjO!P@xQLLXl`*OBlFgbOs-6nxh<|ACb9Tn=n^DJSEO zrzp%*9ewl1Sk7N(ziVuo(eURbhB;r}qh25DPa06Sf&6fCazxX3>~Y3!v^4IrvCm%q zs~!cH2;r$A)?)_xSdW|P<`QO7ezKu0+FBNhYTT5N?&II#-haurZpG|>?pdYB4Dvhe zy|S3_4qBdHb{7ADzdd_s#(jOn62jIfu`M6(CVBRQLkDC!)xwHHk{b(OT2skwv%2z9 z=ktxDFnWyYO-HvJMgblr=kP1L1j_FXRN!6Kuu%$YO};-JqYr~{zH6HO3_ZO$Mjp2q z3WPN>vrM|D+~>N0-763w&w{EzLo8^0v8d)`i@jVs!hFba@3f{soz?LYe(UbF!{ybZ zAYmZ8Q9`s53H1Dtwa)bm8CY%p#S|&H+hhN|<9lE34sKeA)oi%5%3W|ZY9v9zSCuD^%?qc>gH9mf>!BMidEiS*c;|7HeW@iFCFmLs0 zPObQ5^PH@_+}A5lNeW1m3%7{t(id5b0Gif zx4mk8GS=YJlTG!jRW#}pY_Ljhx0D)`*zV{v(fe=~cR7qReII!yHiwm9<_=8bKTY5D zrv&}+0s2rD!~Y`ozym1BbsqW}0ofe|hpnhM zwMiZ>6lF^Rnn;l&2dOVR_~btEhAtJFm%^^q*@{@Yd2m?VOnDPdGodSdPl4S%nhkCP=+wyW7X zt;-pOGL-Q@{$4Cv(F_mBctY&VjPwOP*}qz*d{OOkkkjuuBgMo#AitRRL$Hv`yIF`G zR3+cv+jFa0$BSlNHvHL_eVIF>VCw=3O$5i0w3!T)sAdTe22UK41W-YSm0Jh=JM}-; zH79>26Eu>T{9}G<8hFt_K*R!r{OXtkiZUU=r%nypBylJdk9{W$6P~b~hVxtriVe4Q z%!-SRLsrX4heXK{Z%-OY^c4%>Dr|-auf25~8}ABmecbMpANaJ96X zD0u@6SU;hF$c_6?OLbPtlj#b|C(mdhf3n-6SS9I=#}-3RPA>XWv+wF14}|ZDKJujR zR{|a_8c#%NhB=-#X^^6OvBP#0v(G+M3n%lBYn_iW{mluGUfc-Lf-v#9um0*gl$ZVp z0Gl_Q7x(qNd;cFf%PGK%`JLD=xO^9@Z=#aL9%b*yGsB?$Y!MG>-TPA%{FP{)ytB}G zIrF_HN%*8RHDnaI$%Bl<-037NXbvpt_g4xLhvRbM2_}}xM1D4%zOWCOoefFLpd48F%YJhANf*N0 zsCk_XE_z7$I=6A(ZZ8W{3F=6o?>6ElNfmW0Vx9H+QY^s1Jrc|P`Tmf6L$gva{+m&7 zYV99@VIw>XuNu*ADhwAK{$=Y$4Y`_4panpKh2Eg*O4kju|qkpy3-bcP6o9CJekR)8l#Y)7vv5HD% z8oM`93>TRh@1(1KaA}m#&%mqx+EHNtcDpw#Ln0p&mT#@M zX7GJER+qK?%+XBhr1bfUCm-B)^kVPKIK~xq^0_i}s_y&9@xQEd?_<8TqiVNw1|p|Y zH!(MlUux3laDC6CQJw6sSw;cc8lC|E5|LUhXhX*QV|&X;hXnBc3|)5!)Yt0?q_Do< z+qj$@S64Fp9-AUi=*+v4##e-9Za<=;Ir!LD_U#HOAR0JC0&*CdQW2uEv7HFgh9GM8 zU;u|!<+G{%6-4cs*Ys=xvUD?n)Cj4}XW^r2j)HRfn(lZ>E^ViVC@glV4SrSyxfN+(@9p2M7q0=^7r>> zz@JwW0#WP(Ky^g710ZXcdAi;hIl1|!QNks!hKImpNOJZS+U7K2j2+@?-9$l zGdM22HQ06T$vi->vlWJN{oVR$v$8K3-ZtHI;u2Qndc5;^WvUI}{^nZ4#_;)i6UbVW>h#on+m$79Qel}bUB@4QglIR=2F*H6}MNrQZ(*WaXjO!tQsCK0Z;-?@Ba$4VouVY3q(oD zJcbl-3*6&y+r?v=n+y9qE9yIPNVkh=)x!yRhoEAf+2GvBL>9yT<^|ROr}Lqh!`J8o zQK}!+Wn|=U=0!6L$eYBWzb+OvfM9r1ul>VmxKe}YqliivHy18zwC={?OvRNgVw|a{ zC@&vXyhU-?gl@lSq3TTSY^fNTs6QBejx~sen#{1ctIqD$#p~1Q+>q@DN0LSn9BRnk zs;LtVl7ad6+I&XXDc$`m(c?wD5ngf`+I4xbs3|`w8EL)Q0jMiP#@FO;rZLaEc7>k` z2-i2in5iUlVAFi-Ce{x#b)4#f?^tB{B%q0nr2us|oYUnCaT(TM_;ebf?!2LHWgUX^ zTi1p3bm)Tl+Vz`T>}wu0)8W_+wW10^dHIyLcm9i)Ua>cnSDFcfW&)4h$I#n7h=V{=G7hlHezv@lf7Oyh<4CjHAAgDp!c zKnEh`_`YVohKU8151Xm*3u-)9v=d1V%k^0pP^9UPfQRkP4`DXX_20cHIcnIS8F}sV z`_-_<=^Jlk=J9Uw;4hjY#-@~Zfs8eF-+>nCsFUAZ7liFM`X);3?6UUOQ7RYzXUaDz z`4y)P|JR1tK!%M^`eth-4?PmT3ysJYG4Yh+OUJpU^@;$)Kq`SO5DaA2A!P8W?RR!Per}U7e>pAA=sXwxz<~FfdH~_%(oL zAv4~u01B}M$8oyo&Jx(hcsxwAy;b;J^&Y$Lg$3`xL#xq;E3e-^ZwNiysuc4}oMtuN zk7-6Nc%^Di8k`OzMNlu=-+m&K?%8IOuVd37gqY_3v3~^R?jxOOy1ikkzXZSRO~3C^ zhT3NP_xCUMVXQY#dT1r9bJgETfw~b$!mtE#p;w{RAxiAYJo zZMGABp>2sJe!H z)y5EMMzx>~Q$Un<`^HWu4V9;pZ?hyL6S+`f>Xc6_lo!|_kaCts`q*?$aC&;mWa?iu zI9wRwXx`d}DkK_yP`X!!h2npKF{eD%XNpb*N!|phcDo?9wxJWg&|=7p%Gw*1?euzt zYsMTiT9xLudD`ErO|<9K1&)LU{lOVc7>tTf>2LeYZnqk4U>o+CLx2-WZql%S=-rJ? zsAiXtK34_r9iT(R&Q;PDebGWN_yxy_l1OBEsZZ{wmyT3-KQf2;^H&~b8F+tR`}IcO z7Pp=D>{xSG2_$Tb6CaV?Hp$a|Nk#n@0491u3sq-#2!&`eW}Yov5v&P+=xpn=iQVla7Ej z0HlM-xQ~vX;#@L}DbJa!V$XkYOTCru`}RfLJS;#OibtS(Nh;ZUf(@8|G|_^J&JZbc zb4YZEoD=W2oMO?Bs01f>-bnL!7Av#|G%84}zY?WrW{uyAt&{e8PIP}4KC@}72sig%y^^-N)sY#BW}R zIPFTI$m356rdKEQ%VJEt1CCJbfYI2*)j?a5=g4m0sn;WXxj&)C=VZ&s6U5vjd*m|c zHI;&J=sqULD{Z0QvV}}H$Zb{oshMZ1u!|``g?GiD_!s&~sDjy1rKGxtJ8yb67wSz< zPEY&de`4z_ENyer^9Z0`V)B;hOd~^?H|RVlIZ}!gPR{ogXlP5AaEN}{d`a|}$lt4d zBq4mW!@Pn|t4V`YzrXHl-TK4=pMIvOaf)B4E3y%V@RyL>$?N_&_m;Vb`g1y`fEf`{ z;@2N47ag}jG};tu$=gjv$O=W4W}Daej8}RiCE*IimKF|}uJzyozt4wwQc!HWZ5QaL zMpX|~$l6(o_|fOO#_@STlWB$PPnSuVr-yJx4T&P)^roXBN>8j1yRex>L3iyPo58s8 zA7=&Hf6?U~C8S*}Lw8mJvIov@_m@`ShO(rtce^pJa=$_veLcpmdY3snqZ3_k{il23 zXroU%u)kO;O&4RG{0YVAP@(Hzq`Vs#B2=>bX;9&0Yq2JtH2+^dbeR(7#^Q4w{I@of zuw?|Rn=Pa(#@pWxpxaIl-p1x|p%Gpo^v^Eh|9T3{5XOGW4n#v2Dd7OBf*nafUbQRHCk%l&E#`udADz6 zjJA?Jak5c}VW785*B;g%1c0I0_?m4%&p02|a0!N6lFXw3NtS6PbXLc1s}K*&C`K^O zvK5-2a^y=@evkw}fc^bc8{UsfrU>nviMuA>eG1?DpNVd<*WZ$G?*#RuD?PuT+6xIK zevhROQERO-l)!s?gra`&QgQY9JY=RcG!fF{_8oMDwlMT6@XYzD#rf}4ks&UnVWb2A zd8PC7@6IWJVq-+r2~{Ey9KuW+^oAHFo9egX3 z|MqYaV`=c;(Oe|~t&osGj@ic<0Di~I%lLiRnhOQamz3S`0y9+V)o}+H0O~w@(ALg~ z+MZiE-^W>@IJa~Gx(L5ui32Oa|JDNhWall+lB}9joyG@ocKjdn%TD9zAE%-DgVSu4D$=}S%VW?l9 zm{mM?;Tn0vi8_r3C?TSbL4NE6#KN)tj0~T~u-z{RqJ@~rSqa^pR&EraC+q%r-$|_r95jS=++ z*Qma;_EJg^>N*`oh-TNazMe!iBY=AD$}n_xqF~c44e)rjF*U&CfvuVPY>8#OD=D+J zQ9dEL7$2mLd0f9Uwl@@u>^)Drn8Nz0rd!x>=|{}g+e0yg*x?Zo7Pq&zGY2jt?a#8% zgCV-&zRn_K(yq8e1-99r5*o57zVO~sG+Dntz!MTkK?mt*dpphK_|NttCCZ9VsZrSt zC0^rTS_*9or33wQdO{$WC#+l4Xf1x!V496~Elf8l@Y{-2%zQxixjYJnm=2f40%Dih zKoBToQ8J=;c9l#lmMB!Z`n`3@$2Tg3QqaUlLH7;P_l`M*pLrzSpQec+%zVfNC!sJk zcqW!kVr2yzuKK!^2KiK_qaUK_miL7*-5|2io;ArqqeKTyEps7RM4m8e_LiCa47iYwg<$KmkB@k@jk?N2RRC=w7=fd zBlqucaUXKb8#rs=Q26ZvpzbtX$4#Qlj~eCys&9!PT6ErKL`(voDGESAxD+joL2Wt@ z8ZiGHseU%(4#)pP)mH{o6*k>UN-2jvbTs+-QC^YB@Kt}PH7Mj zq@?R^e82bJ@BZ`$o@dXVnP+CrTC?9^n@G6wkUS-Y)mDFE$N8Ak*djp0Uy_L@N+q*05 z<@W0jTQSKe)L@XFZugYx!{;J}We$!h%E1Be@Y-C}KJ>{p_OxpoTAtUm4GAZN(|XDp zejah_gP%};fc6NigcvAT801F|_3~nF zf`~*LUT=yT#XHzFu6bK3M*BAMnTQcK#T5;YwgEu_$QJE{q_MtmzFKptl7dMQjv*Fq z296DVnx5s-uP%sc`dF}sP_$KB9Gc$ndm0eMUQ}xUK*ACZX@p|m1?)=&v(=(rc4EtI zVbslGFmP>eJ5bPxgviS=Yipy%rb{hvsS=;%@2e)sOmA!&XP;pQD#~E^`_P0Zg#A^< zdb4Y0#y(E3K;@H10kDz8_&zvXoJYm~I3+qJ-i{DCRiu*Wmx^xEEv1?IkZke5PNHR% z;H!<)rK+5moSN*nkYGefgUpyXwic+L(DH;6i>+KEj(Y8q$T^^L%E5xWfrVvXH6DUe z!N6ENcwHi=xozqcNhjFu__FpTrsS0m!s+OGms@R17E&|=*SQV_2Zv*1{r?qL-wv{P zf-i4p(Z5Tz1=g$m!4au}sk0Q#V^vpITTBeyfW(pS^h*O#Aq$q+WK31+E3#Q-SO z8svI-!P(&gDsk!obC^{2jhdgLY?OQ4kE=UkUbfEA;9UO+R!@fwG%(|ETr|2Zft}r= zKiNjWUk$raLjL-G$Ko0agfW!y*=iY4+}5rTk7r%0TZc(^M#$YItVuo1l_EH*^x7;#-oVCbq02lKQ69XDCsFc}>m_Xoo9tjtR`Z z@zHFM?b0lg zv})w`Al=&#ptZjh5r#+wQ%ICE{W)POzZrys4!(?L<__T(iC7_58=>q+xq;)Q(gFL8 zTHF5}q2}dl*?D)BGL#}(5ty2TX*@&|0Awv7+4y@_Ya9h*e{^_@=ITdWKioYf4|}*; zJovb7mi#2O)LmD(fP*Iv#g(*GaSMnBBQGrfpo37+s9yhc54CctQM8!pct8&I{5g@I zblYEu<{K*s1^AMmyxXG7RgEVka2=i0rlQ$`DMtr7*X}M&eudyM?C%G+=St-o)|vrI zy(${XX}a!o;|XMxCqyIfwib^4I8GaqPhWdO@Fdd@z5+x$rVT)WUI)=kk_X7#!dECs z2P7Y5oqU$|g8=R?hS;P`nH?Qi{+DJ#Tmith^E&4R&?Y1e%zIv2+yF*OHkkx$A1h zG3#3eRq&wz?Wi63HJJT{YBP!9EK|0&&K6q0&HpD6pVJ3e*@yol5VryTk+bSg{rB`6 za8hTF+F#G0Lysth`yZ}yz9HOsT!4Z<*CJMzePex-{!CwYFp7x~%}@BlL#|l?<=$*%&4l7c8oyGQMiB4Trlq8nl*C4fXt+|nLJDXCyy^-X zW%WSk?_@1U03=o(gVkdH1kV1C4F3W_PCgFc9wX_8ev)2KOf zSY)||zbjhd&BBi*ob(8VuGJ!O>+&S0Uayf*29I6iaJ!ZGTGq3-3eCC^0xGxZ<1buw zvnB8rUyhcUX#6TUVbrvmuL$1}@$^*Tv%9R#0_!(5I6ZH&kYn_+lR_ zJlJBzW3E8UKGvYKVMVIMVM>KW3Y-8gwoqU#N<7$%$rnEMkfwtBQeReI^ZDIxNqL8g z#VH}vnr7q*hT0s(R4E#6wl1X5b)ui&j7Sj*e{OAdP7VP}rYO)}y&C;{k#9~- zv46sv{?0!XXK7-)X6>9}z43(P7L%wu|M!nCf8bdab>A>Z0&b^$#)_XxjooCg{hQe( zt2j42>*#irJmAp}*`fdH6AJ`2$Ms+Y3s3=LM?@%s|87awSrj}~!=%FwDMjGjiOyv( z*x1b}P=P)qtnLf2fUFw;Iv8i|ul))a1ilg)wtEzR z;yiQ(V!!hRhypH1;d2C)VF)x{&q?@#>{9sLHe|4W%O^yXU+v zHmpr$VvV-HMaqqKzIaNtf3p)ln#$wo^1&qOdpSZu_o8Id-p?P%{H$E42n}O?R>hlX z2HRE~;jo3fd2Z{qdN}mm^10uGp{?2g{rHPC1~izdpM{p249|n9YgFJjI6FHYK-^r& zE^)cXn$;e#1^%mpmO1*rI%u*0Gwed8FCS<`GX(?FV`~hkiRyWp)F8;HRB9oV#)v2& z@=n}e3~GjIfahqlX{yjbP-HAZ+^KpE+1~8G;+B{9t8Ft$kK-zf&dgWPk3kV)tCOtW zj28lwnrR znk;aui`{wiEM&fk2BS_wET*QaOur!-Vff~zp3T1oq{Z&LrbnEJ-^D0|uzME%Jqs|? z5aAwg(X4=FkEWiovS6^<+FJZ9Ck`0Tct!lqg!B5;a~M!$ngGvftCr!|aj1c8m=SP; z6@Gj@V|MwrI8Z=E;r_caAMUMyv?P zvBi9Tho^SwzYpWF>p7YB#@bsswbIr-I9A651RTi0CL{A7z`>N;Wg{P+?^;pnf7gtW z8gRyHk0IQ&cVAFyxvhmqCBsjEWkKcleSX((%|kY(4S1O3{L}KZe58NRLxKCAf~T*B^UVV(jW)p9{lNmz2NXgC~_0I4E6L`07xW7M;2nX1FgZLjIn5h~HcF(s} z)hOdk1al=0#8_TH#%1z9E7xAZ3DO{c^7si1K^DuwZsEiwTn00E02(oU1_$t$^0)e{ z?N@lyu8)PB0z))^6G&ih0Uan^Gd)LsTZZOKPqGcZt9Tmix8+4ZJ&;T0HG5$CWs6nT zVVY)NIzCSm zpAAG)t2bLlgJ~+n21@)+oQFtJh4=*U1_!?THS&zSV)3NJgM(uR+C`cG|1OaaW6^|s zasw^O*9v2@1g6&Dvub8Q&l(MekD#R#pTrke`+1mJV&EYi_G;QI(0xA!pgL?KK{=l9 zqE(b4F(^%6Z|)O-F`XbcM&W%bypwk-&r64)@VjE42VnN^6R@ELmpPN=0^72rp}c&2 z$=ewN;48N!!r7Aivqi0#X_o)$OLMQ{0DWnHXS1zA&=IM{QS$w9OrAK+3aU?PZf#6? z&KOs72O)KU$00{AYQkRvK=3vrq5v3p)(4`|VnGui&(s_D=V5Z^7x_ek5tW9XX;pOjAS@aCPOG_Bweg=WpC?q>NP%iVPZZH z-Twf_@AIY{WmQWz{)C>B{n~oTS9Z z@{HXi{6?jbBVs^(_$&OQ#ax0G3qj)1{sh_lBK>L7O%nPpQWBEM5{Y;6nH=N|4Yx9+ za-r`EEo<%2+^J0KV&=#7VMfFA zrjOC2RiNK&^=^t~|7=q2zG=O}_ZeBJ+$hB1)o%(2KeG9}b(avpIeq*oSM_=30o8g* zcM#a?<6jPm2@mU~3~4smbBnkJ`b|@XH z0=zJP%W0wpi7Ub_6)hz#e2do@qpWb0`0BW$tN<(=rz7-{EW|xQa-LG>^eaX-pg;t< z`RsRsCRpJ;WWvNs8z~-5F_1^Vl?MJZQ2?E67T5;z;jLt%owtsbVrQ+{tbS088X=ir zhGiCuzQ&U7r;=w+(3F6JX0AvVB5>$2P44jBvcxys81=A6`*&*>=K~B=hVqVruYoCO z*u5QVRV+9qVnS4~a=-KO-HDw?*j*66#_#oseX%4#s2e30)+OZM6KdOhkCjX{R&Wx@ zv$;H{h7`=%`Puza5E*s8Z5EYuG`4U?<#G5PFJ22Q!RV@qMOmhoCj$8BotS{AC_u)x%VNO!Pm5n)sM01_cMT00$CSbMir*S2Fw#HJq5cr)VSAAFOFP z4De7rxbG}^0KJBVJCz`?2IN@+3@$m~qJ(v7R!aPwDOi*Mn02}Nx8(qfS9xEe zwpc>64{@Lpw0~h=`|k;wbvnuHOFeJ;{}^9=A_V0h-4pFlo&h)^#fxWCBQWz&@=^Na zYva9eOhH*n5!GX6JHAF2S-ylG+>|ko7NZ6yY3D8$nz@gpp>&XU&Iz+9L@z&(${dY~z7Y~2ynhPFHUW$7hLZ2mz*I`^; z2P^H><8)u&UZ2cgO1PZNbrST?=nSg{oD>g zW!(NApjB>Z!2^x@VQ;0M*`S$H@*Gp=8G!7ceF<2Bb$68}!nYPev}LFb2e1mq%{r=V ztj_tCGJ+z39SA@}3k(xu4vDX9v(n7@w6(R3mwjv&NUMk)nlY@t=>@uR)o?qDVpyjW z_16A#v;=cb{>uO7XnE zUs+t35e+3sU4l{c1rp;_K4Tm6)GGykU)fjESn-kGxcLEw*c6ng`-#WNz29lR4j%qI z`g3&DcK7~$@dpS7lN2&o(8Nqz{p#Vndho;D~OjYpYQ z8cqifgaD!YO75MSSOHyXm_2!;BRY4R6vHQiu?3>u0QRE!S($FLrD6!`m)-tFzt&)p z0`J*>=8j;V_T#!QBW8TAutUkJWSQh;V5=BrGhwP!6<^V z<*m4~aT$pkP-z-kxI2C6j*|;d})JD@4sNz>$i3ZVnXkKoVee&e}30Tx)|?- z%XruQS7Z9Ca)&8#9r!w1Lw;wG78$CYznLbA3N4ysR;O1L)e98F#}6;@kFbv{LpKY$^SA?tE@+AZB#N}vJy>BR?&JT;tfuFU!jSd zO1-Noj@3t3hYSPV@I@C$10)EGoIJ3=u04#8vqP#!D{~xQ>vpqu0g8MlJFg?}+6svV zx1c~lFwpcIt^&10k7ivr75dgZ-v1SA zUCphXSdFM$3lVTkFrErFih2jqC=oe>=kx{3y7~@LB1yxk;ZX!(1+CD#CYNN-?7MoR zu^|tXjr$zWt#>w-o}L^yHMzNDiT1cz-1QnG&Q?%5#Y^n;*UFVbh}rtaet(IHw@NS` zo?|~;aRat`M&!Ir;J{+*!{=N`tPxb*=_SSqt`4O@7QrZ9%KdO7Jy}It8up#=^l-Dy zn6@k=Pv_LIO7{rVi_9Jq@2_D*7t&;)mK)rF@A} z5|PGPeZjl?vR|X&^StlTK(Gl`SX9SFk|um*<&5P>!7NyB#CWX^KS$njHAyKMJpJM*8@Oi?5z!RZ-FRYAYuVp(gSt`R4)Pby79tF%71|2b%n+cO4ogYs9_c4uZ zY@%kRLaNE0&sAcztoqh^mXLPSXZ8SHQ$Fzeyf3_HEf3Wr1Wzsex63;ND=u$HZv~fF z9}38il-TMhlpqNUR@D$#a3A`_u4d(HemxwYvMY^csuZ~PLz2v#~ixK?}GA`n`QSH8Fy92*L^+cUX zP_2buTN`_a-z%p3lZ$JeMF%zUMby2iPZThi0mwsMT@nA|9~!+4m*~7YMhV z{vbEY8{K7sUss00gPXLycqPJ2tkSG3`I+Y?oRVm_jh%zW!FjKllQP$t= z^U)Mw>AuER2e7?5_$MB z$HI0$8rRjH5(YSsZhdG%Y*8_us)00|Dn$$YB?e?>3Hz|V@+~r?4pfWvY#U3@`6N9y zAV`?#w>*IiCxSuP%R_Co>Ly@H3WbWkN5lUjwip| zbU?uQ>l$gy4LfB(J=jkBhJb5CsR6FxP-11c+A1hf+Gzv?{>nJSr4A`li24o>{OD6#Yha)JG4Cr&hWZ3!TA4jJggZy=>1LT2`PO7MVi5?;7A z2t8)l)hmB}S#OyL3Ci|Q3V$|y`2`muM14=i7wjq)mU(F{`S7DM+hP*C z%E=@O>cN=AZStoGfTvQ!%6q{`5ekn8`4ByuBk$@N(k6lt3L9}cuWc%n_DJxi>V3!? znX@oV{?D;%c)0!1fy<$49U4L%6wL#(0H0y+j@^?v{Vw{&pb9wZJs$Z5$}8fxcze`R z|K$SUO^=i(^cf;>RvYm(vgk(?Eq|S~yVWkeVQ}xNt1e_(5ss%o`k*0<0n>i#0e|m% zfBMH;ux74zX5`#ms=Bp~e__7Fz;zVHUT?4+|9I+mm&A8X4HIzvKA{t;Qn56w`cVP2 zC4}@xAlTPv;9NT{LOZ_RRfo&b7pxh-=CXkZIST-XcBBXMtXYKCbm6IQ@jWM-nF+9~ zy(9*#$&m}&$oar8zyA`L3M;%a^Pvd%Uq_ObbqVl#rDuA3S2hlKj zZ!FKN28t9tA9(ly2EFyc z2n()q#B%*om8)}b@$GiAG9^t^AfO)nD|fE*X$f@ z%_0G9Vi>cn3=SIKdFX0p#Yp02fN+el3}ulkeU)ks_zf1$Ik?`i;uU73FV(CXw~mJg z3DuZ*=kV}y);irAOO$VV?(gBpkT8^Plp6}B;&us>nvxr`(l2w)HL!rj}c6gfg4NL5X2q3}6_`<4%>3C%$Ik^7f6HypqGYA$XEI#Cm ztK19^rR+Nzo@c*5x~hI$ThlPb5(y)ym=MLFkQzz&%K{gB_XYojWbzr_=c^?=V7DK2 z78Gyg`l^+k+H`xWo`FzZbILhg;5j?klmZzcX+ZNRrVh@LgE}ZXZ>f1Gq?I)ItKg?d zuG;w=-Cj$b4$FFz^FxkHUj;=)Nl7>Udjy1y636PCMvPEJMVa2w0cl?TcOr$3Txicb z62cl=u0%fJ9c`Ed2Q@zNN949NKmk6HB&DRTDhJ6F$GQujW`tj{G?h^ zgo8CAY*6XjU#svTZHPtc&Jr6pu!WSsat{iY&)_*P>g5%v3YW`FcjIVML)^0%Sj z++3WMm6i4T%rytCh*8)=gAK8$m>A^qgL9Lsi?04RE3>FLP~fS-vgyUati@Cwz^myx zNK8nhx*v{O-&;6voZtGqLlO7h1MQb+%cjm}@>*JZW2ychEnS1Xixy;;uOW{&%krH|QLS=l(;^z|7%Kn0oJAB=V%hF&Mp zpRibad6|E-2h{rhl{vm+@2oU@N^rKQ)EV;Kd;UhpC&j~uBQ2J+CTWei)5D?PNX+qA zgp(=*O|GPb1Ky^|6uh`^=rrae&rLvn3X|k~4m5Li3*KE@bh*a+!Y+*Vc?od=)%!v7 zkGvr_v3*c!3xl?o){=p&ttWhd67Z)K~~`7f5ma2*j;=^Xw-8 z&AGehoeEXw55HA;|4(!Q*9{5euoG4_?7)IIA}c@dq!naEenzf}3HvQ+uepMl>d?A+ zLKCB-E2M%C;!jRCHTKlhCf#-|Xas|MyDIT11-M?_*1dg8_>3w1|dl zADEkqfQ^lfWKVVRk;N>Qs&5Pv>e1-I9s1gTahk`@pg*t;IUDL1UUc`T`pqX@9n7r~=M`tY20njCld1+9MK5wlMAWz_I(b%X)8eKRM- z%cvEKpz8*nnrGKev?U^TPnSi|Holy*o+hsHbFBe?z|Z(+hJ4BU$xN8k47mY1@4f*?PO!(U-d)nP={DT<$29k&!=ALRp zgvITl>a-6JZWu&7gc%=wt!?>a4*lGNTAWDH7aU?J#c*{LbNZ6OuZZ6I`&pOw)`Ts7 zP21|n%rTy%LMHq;#=aqf;k=dBl?&1?hF>L|Sgt{nap4icK<&*dlZK0DqQHk*XLMj( zQQ4VH9Lkhb!&Z{P4XcGo=#VpA#j|mxz;%rRL_^D~fc0gk^q1KWF_l%O>%6VCf0>(H zU7^4Gb0@7=C`<}^D<%dl*qi7tBQxo(tN!FUB6Dzj_pDrclVR;}H&C4>?gvR#2W_24 zd#X$w_p%f@d}KD6@K!Mf<*N2ty0n>a-n;LUI6u~*j;7T0Md#iD3)2&Qg(Sls5yf79 zlL3jr2X+0mUTMbiN+J&6@Je7Churw6biD$K!}aeg8dXw38^BI!ykYL1e!UD&roX?& zDIP3%^#xJ!wiOLpFcjlUyQ{}aYwEmb>S(?kEWrc&zoxePGLDuTrJfAddaA$I5vzRU z7rVM5xP`I&sMAx->>1<#S_tE9Dc*<_nwhCr~y&ARN#MSP*B?h;CF zF4_7)_^@bH;vEMPbmhkvysZ|mFrf4j{$=K}8IgbS_Lmn>9T!PnMZq`ZdxL|b(~`b> zz0x%qO3>hT#CUt|Tiw-Oe#OXQ#z~JnV8=Ho)Pk97>)-qgR;{H_a za@A67fAJSYfxIl#GhKP@7z8PL`C7r?`z}s^ZXLwJ3?pmjISHon;B4g&aZQ}e(mjcU zgo1vsZ`wtjf&w!p8h zt}+-@^0)E}tWk>{3_}=^>hBc$GOg%)7#RsK)`J>`sK2#^hG&+32w-JiBtZg|t4(Ez3m8LTA}dKmE9iwvOd>4H;a zoA*~6Zm1df^0c8KpDc*h;(R2ktPGkXi}ZGcizN9-O9#u%DtyPJj^aC}K`$pTGWwR5 z4=It=K*~cu2X4SvPVTmC5heNYpxzpJ$}cokPrdyrKJx)#p(bWK$6w`SiS(Yc1T*Fy zBT-IUw`scm<-+C749mA2E{OyihJ=h1G|wM9QV+VizYee7@mGJU?&*E_1@9WfjHC8?83(SJArz?k)i! zP&vE*2n$;EGr6a`o85k0_>0%EC*pOY*ym(3nSmV#b8~ufZlZNF zQp=ey7y^8eYDGTdfj4jJ=)?!-@ z@A=j;a6pR>5|bEPSEt2+T5ut=bK{7ilV{Wsnc~2z(!U1IaA{z|EO4o;n=FnAmJb;Z z7F2MrxYPQMCoXT)v)_|z<5>;VhQ3iUc850c{+=l8XLkWFs!!oBNs5ZT*DOnZbp>zR zjg9nX9A^9|>*ypotJ1cynd~@@sds``YHFzuKc=9EN!_}cdfFoIbmj6&{D&V@x+vkYKS+PC)YpLGKzRB&vQqta@ovoZb zi*s%v1197jn@NrqJm9An6i)BrcEtbp>bPsU=cEXBPZ6-hwY}JD#(KE+?S)ae(T5qo zPoF+vtQC#4yte0dAVMtNPQ-bcW7_{3%>SimQUGF|e!%(d!NFcA?8T!MWm~4)( z)dG=W>8o8ByeAvHUtAk=+0l!7HV5sQjbuOCjJ6)|z7OifB**9tC+4YI-yTO!ejn}? zhO9u8oY*Y-6?j5v3#I_vsvLM-e=r;zT*{%E+r>ft;J<(ZkV-ugt+PIHR}qZ*$cwl` zQ5T|`$gNg6?4a!NiLK8oYI_E08+nd9@x_a4(`qpraR~w4Na$UYUG|!?ULb(v7E)a* z8BT;k`W8*(G2Zc7t5Qi!e?_gSX)kNKxp?S`kx@okK|v&2bk%-fr}8%s8}zYzA6OeV zK?A%XH}^y159*jB`;~76Vlw(fer>`N5I6}87Z(po%P0VwO)33i-;<03aLRDlKHLU!Ito1>@^$C0mu);FmPPB_`o;T18|`JohLN4? z;9Lg%1$)d`0RONcf`XUdQ3)Pk85XahC@PN4IfqZ4O;1nTpGD@LoV>9?iBlU1*iF#MFKVsOnIIz)EH;fTppD(gHSAmlk;=>Aay68Kd2j*?X*CuBj2{!K)19rs*p z$3+JNrKA3!S?4KhY=m|?y9xa3W1%21BbLn_xsG3|6d!J1{5`m%q@t$g$~P%6u)Y-> zg(+**{&EV^#W044ho3Mx{m>N87T-g-&sZ$&Mucg!wrM}Ruf9_h7xzJ2Lg;%-BRxsF zqiqq9;{o|0;YIk#D$pY_HL84k2DnrI=WKOggetn?SxhC}uaXV)Z*{RQ*{7)U+)gJZu z?{RoVCZ=+D{7qY~Hf{Y;_iSg5Ikg&ELSnY_As#{~3Gn1w1_d+4DYGi|~$?EYR8gcuquAJ)A))34G-7z|9RnXa}>(*&c4p zXS^PqO5Y<~^5RfeddJ#mFJ+0S@oM+t+>3I)AQ}HPgI5hQop~oveJjt~A&jI3__MM# zQwVNV3_O$qxpb+fdRlp6czBmG0RI-(-5-pwT-QY&_!?D7*3Hc=V&P~#{oTpmvzj3_ zSm zl+K1Qua|!q6pX+ubQ)ONbvnpq4`yRGAyo{Rh9d<)w)Fp;ui5X0&t-vQHzwC}Ujre8 zS}#<=J=|SMjlVWfuKmJ?h+kj6g|09&ld~PI@)hgz9h#=yqIXpld!6l1-GT8ruD52u z6vG#cFTg^#lD5{Dq5FCS2!;u121Z~^!B7HB{UmnqHImvcfpL>K7iKT^X+o^UXZbw; z>I~?s?+OtErmZ8Telj4xBU~atnnis+m;FPD&~Wwd-8Zx}PY-mPeoSCraT9x+G&7M| zBQpcTfbA7*KwnXm6B6gTeZ<8MpuO^UIjVricYXn|u%wFQm9Gm{MnDVvC*h;+7Qo(3+z+gB67^=+7i=#kWPh{l3;1cn;&vwexrHMZ}r;@{f9n|S`{o)P0 zK$f6wWe^!@asb};3R5y7WTE{v7J4JaM5%T}7)}gMv^RzeGIF=f$9@6_yeM`NH(9hz zD(a2>b(+qwLoHZ(DGK4uJ+ND6S~<)B(9}3%LM-S4zGJEh>MU9rOM=9bFD3G$fZ5+Z zP`j}ka5f)T&9}#xK?i=;$PWt%J);2mKtgyEaUp+R^0Bx#jCs)-VB%uKjMLTo#%hsW z1;acsj&U<5g>{zjFj?(!_D1ZFS27S#TE zyIul!ZiWpqKaRs^?=gwrmGqAREQA7hPY_6EgC^lJo~2=bi!g{!>+!o1V@KK2(+^`p zRx&;xN}&qng`8i#zyQA28p!-WnOdaY#sFYin5I%n!yJxlK0g;~Y)BJWF=|6P0Ad0F zRy>y=mWeUpG##G-WQ$fHx}0UzcukX-dz=+Wc2jZDybfQ43KTLTiMS5dH+t@pE-w*KM(!kVwqUfxQ)Sh7W)~`Gjk_mw&x%y6Z-#+ z9W!5eav2E}@NtD1i9MkJO#)~OxegMZ%S`PSDDhByInA~lNQ_JfsB9bf=VGPaY&8Rw zfT~UO$4}3b5`bfH{IkOksDhyLbJPq*6%Gk0`}_MAi@SJ#4<1o}I6X+`4NcM3;zFgh za6UP1It8`90Gjf;$Mu~)bY4{G32xpRfKYep0-jfuaORpg{9DZh;w>PI!Q~oGP!o#f%X-s?%t~=loPdYEtUVXv^`OZ9{nYsgcg$ z6-_~YNXe*5Tgqh?kiC^xkpQd}D@D0gU>_T+eNlJ}-xC5((9B=c)}=LYqi zg%U>WdrDS_oxC{6uaa5>qg^tjFsjCc+3>~#4QSo`z(PlhzDS`RU6n!)w#q{*NYnNL zXB@kus$RJazTiGe$?jM%27?Zs+#e%hxJpr-;BJ81lez3{dd>RV8v7XmZ)YvuPaZNP z$S~-mKyJyjNl48|LH2a}Q6lg7#lg2W6rF^GG;A)^3@IB9n5m&lP#d!ruzo*WjuWlWp$;tb1MW36Z#$aJn^2LBq~?v zH~dInq>ORx^taX=Zq9p*V&SuiK$u?Kz&4*z=I>0WWZGmf7qAm%cQcT4;gR{oRfR&a6(_!0^lv}S<#lrL&?XtuYcfs5) z7~PSFxzjQkA|Ru-tO-4>{NAJm1G z0kL}T^|KM3vye?B+|mj3ut!-idX24B@fiAs_^M}icJ%Nz*&TR|TOhxOc(_nv^RevX z8orZDW*^QDlFln~%$@-wZpxD#0*WF1qtRw1v>-^HH7SO63mA`RhO-c@W~HZ=xiT4C zqb}(q542zu9C#vV40+xHVqqg~)cX2PzDuls{uC`#ku61FNZ7k?H_iW-3y_|I=Gs{W zHq7isc&wujsHuo0f>te!r*RUxd;JVR+hM|iMJ=QQge^u>0bejTJOn#~7KQ7AVV&}` zqpFg#D!288_QxA}3^R0UD`ri$z5s<%`(I-UF8F7n=XB*KH&v$$hexJ(j;PS>R}j_M znChca9o}jaVr*b6R^ouv`tFaTx;r(DsU7OCOO#ao9tEmB>ZyYS1WG$*5ptflI*_eg zAf}X;BDfLd%f6&)zfgu*hXMW+Q?kNP|5SSnMSzThUYhpnpwmMg_>{&HY8Gal9~1m? z-mZ`afX@;tk-(0?*zbl2v3>zvX?4drx^2L-{BeF~z_6ty*}a>WQ3izhLA5MVP&S=A z$M0_Uu8L>8>?moE;jQgu3DM|a2~MThwx_>J>E{GwGoXmr&;i=26NFh`+$d21j0zZL zZBWSYM-PlN8F?&Mm9};uQ~euHM^MuF>U~QcQEhPYQJMEW9YI%UH7YcTrP$22Dp>$h zvDy^kOy1a=e)kpeR4$ProOIZkYC%Ywb8O)4cVGscDCkBK9wn)ueq_4(%*~+^!C2N& z#0G)9+t-myO+d10|V04jmrGM<*r-}@8jc>;vx03>9e0Z%+in( zKgVvR`-G{|WN~ZQeony1GG`kIa4W87J`hll3>F3&B>+{Y$8f%!2@YuM^N4Bd?VnPY z>phXz!=ZNxox$bw$_u4cUqXr~=>J1H`o{yCv3x<@#|kXMpQ<%i+A~O3Iqr#Ia_P}A z^cPC7ldLlOB%j3IbvDBA5;#=V4|w1U2vghdEH`1nW?~o(h>qSycr5MiugUz|@UEVD z1~FD9mt_F50}OMoOGUVlmJpxO&+e(J{3iPwc(0XO8BnF#@2eBlo5YDHzeoGo<`PL| zMy77yNiLo_VhI!hxJv$CT&1y+7KvakXWOVLJa!QQc8$U}bK!Y7(`bAKtB#1~n30`JK$l{1MykkRT_Dx zrl!B&0no(8Un42Cawr#xF1hX7HSd5&-s+35aV)kTmW^?stx+;NDoO~M)VKF$4dJRk z2LLJ}n|8T#5Y&uCde%8_B#@vpsCsw~7@L52sHot(=M_ItG&xA%GVjypm(~2*+1&oV zc1h+P`PHOMw;s*aHW8?w%*NajgllWyBCHK$qQXzC5qpI|w+ZW-)J} z@;|aB02l&P(!8A3?Fm&MBYkv*~IS*Iu{Ok@G%r=%MP?dH#oVb#%z% z`@6!41;N96l>{=Nlt1QS6$>BYQfYKEpuHGo`n@!2Wihd#vGT3~^qhf(^u(0hq}`yJrhZ{!C(? z=iMdBt5+IEy+xAGq^M+gT{o#@1jr`2P*=1Dah2ok`>>@JLO8Bc*@ALLLYYae6x9sX zPp;0N{t?vPm{l1y8j${V?;v;kdVp{#|7W2Q0ipj@XS30`o{b#*KR%_b0H@^}sd&)V z)inLYXJIK^W>t)*yZt(bpst8S*XupX29`zNTP`CN{o@soSmnGa>@OCty|vKP)YOSv z+dSmkJv{HbcYY#a=8Uy5Za&w`SIoJ94K#Ob)tHP0{ZsPh3VN!BqaCA0C|VXFk)=(RSy02WkjQ z+6Gns?qroWc#E__{Mt`p$99SfG4qNv;&nMc3Mls{@e#Y-y+_p@k+XGBhw}q%T2nVG zBN4aWl4_xi4awqP;)^Ruc*Zyb7wSY~j3vXWQJHh@5tt-9?zJ@9C$sNg;| zk)RfPr6i;0WM?hE1LoR~pJAlV*e(8ud-j5f1ea3SHz1xNB_+M7le5@ugH3;Km9NI* zu1@oZ{23J}Ctwokk)4?yJ$Xbzk~iJbC@;LmSpJrb#+3hDCoEm(H^i4NXVmB376tTv?w>zI5!V-W=M# zLZ_G0sip1+G@*@1IK{H-7jbo^>7WkvYU^1Z9y~@lNQa!K0mgA%;3q*$RfPX)T73Nx&Uj>$`ADAd&tW2#0j|c#LiEK<`Lt+NSsOlsB<>K3n~cVM3qo zJrg)Sz~XMNQeSg=4DgN>z3nvZeQGNal9qlZI!AhTXcDe?bWrIzWFpD{UlfA-guSnA z^Y{5Dg+DOxaiT>2X&UP&nrn2NXV%E)w1gT zt;5oPdznGYxVj?&zA@@84`tEzhaA=X?ujH`YlT#fKSXptA(V-;<^K8 zgq-Zw@zNQSEu1IFuAU%vAw!j;2$l*AZUp&AM6s&sr{*%h+7I-`MFS9)Uh?u_DWUNL zKb!U+buWmy(e03M>*3qc>JP(O3g1Cu2=dx5+=x&%twyg_23&(vo=l|t?>OoH9cN@K z*~jchg%zbl4?P(mB}tfnqkVr%NO7`G)1b<U}lzMqcp&`zr>L3e(1p2fI1T+8(+1kPC5;0+u~a}ZzRE=t6mUvMFVK#%}++< zZ*=|u?j8L79N!2Q^1c@RhWp;D3FqD$KUkdxAh75xeTm3oSlv%!>A(&dNQI(nlnh2A zq*BQfs(4XbazJzYXSebx zNUCu5XuSEof^W^H=iC#JZCHMz{W{&>azTeKsYQbbfyxHGAhdUUH%A7P$dzkB|l1yE*KNWVhmc#AODwDTQh=L1i=hm5FD%Jr|KOcF}%{q+VmKW9R3SMcRb zvo-#<2Y-e%=p}A4F@avN>}Q>H%TiqOwDwk)apf$B{h$yUe}?P?Ww`f~o9pW+#>Okw ze*cx?O^RyRtf;%YS*mj*UflJr*dC9Vy1P@{+4%}6zf zA~(I$Lxm!MV7uBCsnMj5h!UP0;+>5M@`S25k^d)cn=HqiU96#_V_ZyCWJ`7G;)Tl8 zOZ)fDtpPfRpOpy+*9yUY^CsQ6&kv%kN$`h?6qj8`%)0BDvXR+y_Q!~f_~nM)A-+=@ zSP8Fyedrr?L={LabFs+ zFAtO+<=#(|-yYnQio1-9BnS7l&P&7cV77@sy;CM@rqlsc2T|dc^vLE96@+cO=t}C2 zQGtunvz6h%pOm3aP03%BE7ycDxCmijAf@L6_ghaBN=*yaAi)o#0770r;yt-N59gJx5n=N`#y9o%V`GRAvbGKI!yX zdb50$M`5c40*rc>6Fdsb)D;WX%J7!pqm@ojdQp`jIoLo>0a}odWtEAC#%d(!p0GqI z#w7ztHKiPCV71U%rPzT6m-(_%&e?d2j`wG6H_X`R`#*pwpMm-JrIpTM2w#=R{z6kG zT33lvAbyn)%TC+CE^bGbe)Mp;k6>?);U~EMhX*G4*8K_7szed5)gE_qF!l3&n?CQw zr$&5p%_&>nxMHkM*JJaV?jC?){tr3QtyhYX0-SK~{X>p!20A=J(Kh zA;FlU1flg2DDYvVN*Kdw`TTJ57_uN++)E=|avIPzZE=aBMl zWa$2E19}y@$j@(-Ld^wygbz_!i`W{}<<{NVl{5{d^8!W051eX^;=dJv{=-kW>i=Lm z*AT8xj3Ydrle4A!Vo)glH%w>LCj-TISR7F%=dZr~uC@xl|JfK|fKK`Di<3)|muah! zF)KqJ^uuE|>;twLTY|ZA)jpG163}Lny0~`!+xvaiGO3<+Zju)`tb}WQ)?rxVLSpG5 z2Z9m@5R?G*(|dR~p9eg)B;i#UgbHxgW;32Fea#$>e7yW$4?c6$JdSeIE${nFp^!t* zWAllj=4}BkjTFr4Km18l8e?zIBL9tFT8y)Gr=}|Yr6b;dcz2El1*A~`>9}d8Y^EcP z8YlFfIhL|fh>zv5xxQjZjBMuOh$k93U;(?={~O@)mz1(;od!pqot@9m0R4#Ou$^m@ zJq%|zw@mwn?ZfR;_i(H{_J9ievAae2+fsc}ausEzre4OEED&n4w!k|m`BA(j217CA zrY;M3J(M%pFutuwC`qnKVmn9n6~nstm1b?vE$9NIR!Q}e4i9qCOdl0g)Q>h*kaD%) zPZ+_|AA;aHIZHk@^UhwcgbXQYq{lVr+MS%Yp(Yczw$B}ExXGs#{O{SBbE}5J>~-lF zaz1pYCncp+PD%%_TO67EiHxi1*lb9IatBWXMTpgwMtEE_91@hyvw~%CXvE*b1$(ud z8eG1eE*uJ~QOi3f!Ajo}nphsmh?G%YXD)SFTYHW6IxLNq6|$_&dO8!Td=LKx)QEUQ zM81`sw2NBJw9@Z_(2p25x56+Ud4IJV?^edO<9Y?8cG>ci_>}P<;W(#8qCBj)#lJVX zvL=5%)pPmo827#e-_j{FLTij{znXISxWrP1h4s_B*OL@_GaD-9x3QB%(;@akBPuEx ziq*Hd3*zxsG#^)lQz$2}O^{i9Xu@86B;Gkq+oo5J|LcE>J5GIa{nTdYLt{WG zxf1JNsfxmPm|K=UDP_b;UzO3zRZ~E?_zFy2JdBu18bdrBzx5_#F z8WqZ}j&ux%tNa@fI&v?V*dG>=1iYIs#C9|HWm=+}bQcL?7JbfQ{8g{@#f`AYOz5f&$zb zoxp2D1F8s^;5LvLCfdO=f?6$)orzbo^)7^j^a^-kwB!73UHio&_xFsC-bk^T7HQxI z3!1zDGovqXfRktTgCcO4@#U2D@H~6fXT7n~OvZf+-p~cm=oU-+H(81ARK?&QT#oa} z70V|e^3_v|3=2BCHiP!0X>0aHdKRUjV+E}B;^*qds!ztr*wXkeZcC7LOZmTdJYAfv zh&{AnjaXv`r|>b59y?t5m`Y%DWq=MjpK2__AeiEDh-m%;6IS&Y00N*dyAf(2s19g6 zolpNoAdJXw5V|LOtHOJAl@SprSmQV4?42`NB;omoqFx9qTn;qYbG0SXw9VIl-QS@e zj$cYj2_?kEbsUEF)bGF<)8>ek$a(PDQ1LtNdSyrikj??NJ5Tszk{$ITbNX0T>eDYB zHf8~PWOI}6rK17~@TkJ%0c;13L`Luq8iFL2Yx3Q{Ct@^TFCS7p7IEhw;<20^S{?Xf zDljcQAtjL*jX?Sq3BF0oOAokBrw^a}R ze|=CefA)&W_WTY34 zL4tkw9bGg@t8I04Jwh)Y+KE)RIk^Ai{Fo(%cB{M%seZiZ^C1uG>sKEfLz~FM#zImC z&6Lf_Z@lQKe2OUN0;g4Lpj;sKHPO2 z;=0IxF+b^}{fFAjashJq;up?BgN9^fZxvpynR1bFB+b8d3nal9kQ!6}Oq~$wAWBUKtNyr$zPWZezS(r) z_k2Fz7Yh6{gI{w?qQSc83nfV?g{=|h8zr%iHy>zC9##~NklC_gqXxGNsU)3nFXl%| zSqiej_Nv$G($)LR9ao-81P8Brq@W&SyP%l0E(a z?t)#=(oS6v{y>6S469xH+cm=AL_BXZO4F7dncgjWlFBuvWEu4*CCpe6iOV%)W$`63 zK3m?hIK4KC(F;x?mD1%6osquCSns4gyj*CqF&!p)o>+=7u#fy<82Xn<^`i1;AxKWm z6B=mivSPS;2$YnSUlx{gy|?GG{O~}fGKhB063@ssCJabukQ(f#K|CpM5NUtgb7dOc zzIT+qLzHI7aVI2bTilUhl7WA(-b@fkJt@Gvnf*n>{gk1o0$`N@oyBWgBjN1+qaFCO0e@Se8Q=ro?Xu_23p#}zGZ zq@>~GRDO#+UHT&Dv4VGIIc9yYn$&T$^iWPtrskkn*(Kd58}}#OV0I09(*CxH?CpJ3 z)_=1ATM4Nq9&RvjjoR0LP<>|U`~M_eyQ?dD$TO9dqwpWy;qA|ZV0xf7!?Z8Yv&49e z=a*ZnR-n!KrmXw$IpUb~Wd&-eYJWKsgtbVzzM-E9Ljf{u!s|--a)GspI|AX&}>MdeFR8+3_8K z_``3=53sN3bZ=&^)!@lw+#8;;EZ7tNJZn7=p#-38&&11E8sr#tQH((S-6szA8|(=q zW_aSjFspZ;Z^?Ass`c?eGuc5?a_eT=3-QH$rDj-Q3+FhX(jOuaAUA;+ls`q(Bqua6 zEXetw2s5wmd$#c5LFj_WP3!Z@3g;A8RFA|{hvfX`XC~q=PXPoe(nO=gc+iq<1E^~A zDYZn&+RZ^^T3VQHk(OAgGM_Ob;~f>iD>8Tm_^ZTxzDFE{Q1sR(!!J4u=M(`*OhLCU z87#O}wdQ$%?*AoeQ+FmL0q%Bal=J$RL?n>fcRZETyRBX@x?|;IlD(Yy-gNKnS!;VN zEcj<_0Kl~X2j``Su~oYKBr-Ys^C+s*IZ+)sni{1y;+2I?gKK3!g>Dz2WX}T7BI7!$ zeygr_3NyFRZk+{EC+DSk&Ha5OXqJ1R?OH5A!Rs57O1(xW!b39?A)MUIJxSo%Sd_tZ z4zHEpZ}J&wgt_iw&v^6sNPRm{&pZU46;hr%A_nBY&-c>K$li<3>}C5OGB4B4C}6Rk zGJzyxJ%l{yGDi{Wcm&JnPr2UX!2Yr3=9#G^mo37GqHZ#HbF-_s9% zqk^MoY+GY6=G@HWcm4A|cHL;|4u5R2p(anyQ}^l@rg6tF^`Na=gK?zaVsB_Eg(cfk zc?;(2Q1$ioKhD)v>S@OLKdJj_v}KFNV)|ZMR7z@2vTg5~MuVY5+&|_%XR`$0eVmSN zc77b9`=g@4Ihj0aOOUO}7%PD>m5!h+ij}8^nX8&cB?Z*6WkzgDK8%Xa#Hw8=6nE{EGs{ z+r_}Z_$CCsKcNTvNcB6y2Nk>(X6EbzW2lOp zO*iU4oDLy@%;giu?ac+lp2~kSUg@~hJJhQm&hW_#_nzJYvbYrCPnyvN--r!_NZFH* zML$roqoSbLTD<_{%cG!XkL`%K=8Km?WA}@BPWL@aEWPEe)6B-&<|3R^D%Y$%pCUxh zv`>h{=Mb|RSzr9eSWATZZ<4^67~qc?^I?q^VexPu0UTQjvr!SjXsAf|MWFZ`jT8Amf# znI>B!Q*L+s_3rL3MG)iYE2IO5i?jt^g$4PRQiR5zxYMZ|n5!oLvgNFQj)XrPSD7xp(+WPPY3yN6px=AE zO*NKy{~#Gr6hYw0kyS=ZHL9YFM@)jQh{^zOv|6$=pynI0>o+x}@!;D+d(H6fh1p}aRH5K1Ay>V*Uw#Qq7G&oIy5Sd}J=YqmD`3vE+8Km}thOp8cd3 zcsSKjyv=t60)06VF;xl>aR#bAY~S|u9p^#`zZu3Z6+-@afbFQG0aRSgDvMX!%@qng zX=peqR2VAu=ATfcrENm(87by#eZt>Y5do4C)s=iy7;!nsawoPE0y}!IL>|{4 zaSC|EJINwIfoo2HZszqrw6*kW(6AMYrs`;5P&&jk`C%Hm??>sYyY$W9F%b@`k*QT` ziqCDS;{&$OuMzP)Nq!Y=B}42=S%LcVa%cn|t9V~7FG-2Uvm~*Xtm<)W26B~Z9FJ%k zaWGqfb8?Ag3xau2;G1vTS8**ncrNe?pzCw(i~<{o64{U#EygQa%3 z`h?KfR@m_R{r%zH!N>7<({X|?R_c|^vzSE9#=4%Nb=1_bd^%ZvoxTnq$U(yb!QPDH zuN!UQKBe?CGIdyI(W|M$*1@Q;(J_U;Zgd%b&`4;Y*veW;Aw$yMO|Spt!EMh79L

xqo?w3DlN6!_qw#HiY181nm>q#U@mnY&IM#Z zDxJ8##IIS^(8j|7LfbfA>#Xd#?n6hCMJ-{U0Td-`iNM}bBB+JA8Un8z71i?9*C&%! zYi`a~Rpf+6nt@?+R)@u*ALNlK2}u0lo_h?<5(bo;h~Xw@L+8h5?G>W|UvCuuoQ|o6 zxYnXmEHnmNWwK8L?IN~`YB&Y&`A#vf{RLY}N*cRg`dE{Q$8-(;(#5{mhG`9Miq;@* zZ#;m(sX96+)eTN294>9{iury_ulc-nzDT_|(g`5$#OpPY-miCoaszz6A)}}an2+>Q zid(SwLE?*aeW%k}=c-jcJ}3Vjia#o~c-x4{sL^cgAD~R2fdSnYsR@37*gMx- zbHRmzZ!4!?FIzQgQ+{$i=b`G7o9b|DIi~U_aCn}Br4!IawriXo6nRL8QVy;hi=b4e zDw#N0lbEOjjCY#$#1Ecgt%sR&#u)i4Kx2J4cjg))zPOE$lvZCvvT6gPKTDf`gMfZM zwBB0_;1Th0F5hh8(=Mh?bq{v4kt2&xW5BcSe-u#Gh@E0*@6j(zD;1Zf+hJac?$5ry zO^(YQZG5!t@R4@YW!Oo3@etG#_a`|uYlL&zhcSahpT%#-%U53 zN*S7Kl;Dp)duIh_!qj$YGHAr2#fjOp%dfv!Ieqed(RJ03CE>*VMCB>_Jm$nab;l*` z&yr1_`^|=rC_lKZ3bM>X;vU#-1g?Ct2x(;J2fcXyMy}4ou8iFFHB>0uLK-mflj@v- zN0CnNur&WX@pxa3pCM9&$9!p#-jX|7^l05_3y2WJ<3T{Hq2`bC2ht*D2>sYhEZ+av zQ-DytSi7ZwME+?(p2<5P81ROC-^$A#dngjV0`8HP(V&x0%vx97Jgs{#mErAIU{soo zM{9m}ap|z2s8Rmwa4N-tEN*3^L7>#J9jAS7r9p4+35*C6N7VKgmwl=*PO+nlw9TJY zwxN;czHJoX4@m@&xb^}U)%>Qv!#EU&m#6Aj=)7+ZU_JGsAFpgO69P3E(y=VjiB5+-uTCK2I#lM{M#SJFIJC0Beg}$ODa#9=G#8{SN_# z<F+nwSGD`TdlB?2(~Ly zgUYp`z|Bu+uAAL(0uEUf%mw5!U5Ivh;4@UQkX!1Go=Y+fs2-BHshTt>J?ryz zKNxi?UW_0?YYOGv5tyh@%x*%H)rpN>lz$RN@jn;6Y~-@Gw`G^Lkp(@Zxt$XeE|<`AkWmst4Ou_&p|9eF;t7U@~d0r zvOta4o??Qsp^-e!%HsF6npigfi=(rm68F(i*Bpic3ZbBM3N1YD+1`U5D=$$l=u2)K zIVp@>E${)LaP8%+>1%K~uq~&xX_zy)F~k-tA!o)7A|jI41A9(Nn3kYBxqxvW@%24D zr6XZn9LTyWSw=nL!L~|Z+<%7=6oih@W^MP(E5k=R`7M}(lmBZDa_)tZ_35Rm?|+nx zC3kQ!}7Bz7P@1#W4{R znkEz~J(xrt7#k0zsw@ygar43*-_a*au7Rz2zT>JnmW z&jB}Wv&aS(y@^@>U??##GFUXr9VdGD=HKN}briZ)AM&n4O;w9BFrES1m)+i-5ySFQ z?p-%{J&upV&$AwNgeKw?i_gC;jsELEivXi*XV4RGo%nd@fm+dD8C|;fF@ZxC zOky0)xB>)DfWDz^sfxuv!?`j8dV@RQ+qh~UcI~jI111Ckn z>IXF2M=DDfJ%;ibx#2m73odta8dAz)ScD2Hba`WVw99?En|C&-yYn7cPw&zccd9#p zpDu80eIWHGie@(cv`kt#Jo$W$fR%xSX9X!9MKu0N-zRo zSNS+b`bqz12z`xWRn|Y=#6WHh+v6{DMFeid7*2!UXhk=ize6B&@5uc%y(FRe^-{%4KZ@c&b>MZ#c@-~2M7-ZG%8npA%DQO|8DQ6f%zp)OrGXDl=iE4a>MG! z@=C>&)3g=$Z&z%2QvZ2H~GPM=5r4#SU)L^q$;lw0vQJ4%1*0Vr77ewa((TLb|8| z|EA?t)EyaX`n)yf*!1Lcsg<}={yO17p})WCSBE)gdRh_AGmku7dsqZnqe-?jAowkJhg~1yv&P3okRAm z@E{3>AZFd7mtenA2XYj2Qc@pCtr(~Yctc=RQV;$+$C?(K_H6VOqH9s#>2elVk470+ zRocD|Jv5~~M@``})xfUBcyaqi_Th_8dT_*5P?4)0t8Zz1dn0FnCxHn~ZeU~RzHcj- zDaDcZ&Qn0F8B9hporKM|X>PV0w1!>O-!LoE!B7Sh{l}Po-)C52&oNt5ggNmhb zd^-fW@OSn&@ce>S0S7WrzobvBzyE|V_M{B=D!xuerkxyU{M6lg}eMH^M2$pbY&6F?(Jb}F-7~Gt|OMwbmK^Z);tSwX26!_~v z~QK0XpOFWe$#dAe_g%|s6vvTMW z<}z~8a=8{Vl4S80Ba!upG&QZ@YBYrEk0c&P-WEmc8P7{3wXSK@?;3Ywa6lNki-rRIJZU0oU@wZ^8>y zq?afO%waL{Dpn=D>^iA!HfCMFw7^ zxCjo)rc)pIR6cI8`7rkpOrj>O&o8B&F`WyMO-)TpfE|?i zbQyADV&dj#4z52gWf-xJGrX*?s+KW_=LCr_DTd-u`OZg zQ^FsMt)^tN9IhOVlV7i|nz}VOJ()&abKXJaH`FRYW;&d!+W#g`b!e-?5&Lz51CsYQ zc`revq3y2?Mj@Z}&?O_}vhjlZeV!2omAaf5ty5L3=CekiApIUs|4I3ldHd*>P;{xs zoomPwfeDsCF@v$^`3at`0@(%zo`1-MztE#qYCiYtRD(>L~k*fS;zy3iQSL-E327kSS%p}%v9blxC)(YWA<1gsW+^(Atpa*H(T&m*Ln z!(Y!2CiCDDT2X{_?w^Wj!bnU>?+)kV-qbfZvODh2c6)i8KL(-Qq<5I-Jeb2sH#q6R zz$#Du3FGsj&0-h<1vZB(BKJPGc)K?bM(tTiBEUj+I9mDpYXDEesBtq}C4+ z^uT+4Ydd1L>dW#;PiRQ8!2cx`ir-I>yVKFj?VaMI%Vooeb_Qx*X8-Y%H02;=8C#tF z_8Ix~&iYzAsOP=A(W^vxhNBqh3?~kFoOaUz&yGYYlsOIt1_pz6yG*D-0aMFlnu?9a zy%IjsGS&KoOCRLMOL60U@WJP5F9Vhmvq`q~_mnJz%l!;Aki%~VS1@CQ$1Dq>v$I-1 zY2(23K|Sm~Jgf4CgpvC^oB1XL7k^={HEVD}<^OB}Z*V6V3}%qQ8Y!^!rrEOKh8vN@ zs^BDn#La_tweQ^sRg!gpiiH6jG?x&gHJfa1?x&MLrK0hR*VJ+B zjhEk!@HWixB(!F{Dv+PqtVVAnGG()B_}M8cNULaNm48R0XtPc-*)yH`JGvdR!Nt%3 z1>BDosILMlv#lsQrgl2{p8L+TwI1T0Jht{m1}zi;&xOzJ;kZ!D{mMPZ0WxZ|AkyaB z#%UEWCW;-tjp=8P+7`Fd`lsE@Hwwgi3rU?ficakb)Mw_RuUEvd6puUBN_i35G|H|e z>DuUF=M~cwToO*+kn7*3xeLztQN#-fFA;L%g%FQ?!X@yYY&^fQM}jiuBv@A0mkwdu z&m@1OXgd^ScdT4m9hd!m6M|#5wS^dYC*eu&*QPbReTs*U+?S3;eY(>m%$r}+>_GiEN zPZ0A3Y_RH@93=!dY&z1D*eAuO%5i>XH8hmvHzbXaJB}8EP90nEv2R1&SFdH;=tC-V8<0DaAiQZje0*qxiFbf3 z`8)e8wDn7EqYPTH(f3T%tv3r_5#8Ots^n9h5K=c6uL*s8KY!OqR<&Pba0xYMRi_DD z+G}FcLWU*~>EY~8r_^>8jw)ycOj*INcQr=1GnN!rF# z4?cOq+9#~yYXh>xL#cu&d-K|dS537cug21gKj$iXq6O&e5s~G+kW=`%L0|B`8pm#9 zp!Ivd2o=ZB&mf_logJt{k8^=;Qy5>3Q2iMpTIQ>4_9yyp()p251drmNsUH^WA9Z;g z3+H4<%aD$1@LjWwO-v-MU4JYnk{pbgN5gd*xUQHqdbE~Z6XAq2qBr_tf+TSGjYEVYQ~a|AmeWjbkD3uX3_AHu?Pyr>`nbQ3vltR zt_;aacpNeF`f=5*u<2>8%18JhB5EN5Dr{_oyw@?tsS;i?hDfKsxs&;`$#*6^ExD{h zo`NHzN$CTvUBD-+Kd&-`lDRJ6iaboP-Qd^`9$tWBWfPX0`S0?hExMwr#*NcXA4u8? z=8DWNGPKHk!F%E2&c9mMy))Bjk|YpnGD3$%&Vghg{mOPA!OZNds|A#a9%wQDDZi=DW-&T4^DBmM|oV)?PB8mV^R z&G$b@4n<~k@NEtTOxIH3MklEY`^P&%=Zp~yyb)Roc<7$kdxTTwaAR5pHtr%%2~VW$ zeiz^_d~70LiUf1M;prjx`@L5f+pSYH$G!M4$mRccM}9qLFk|3OmiA(|)Z}3^;D$ud zh96S-qw-e-XKudG^-mB4at-ahXI|w^Ihx({*y#Ki_wB@vx{9X z%LBGeWQ0HzY@f~bpn|mWDrMPs!aA;JB<6Ec0L-QOVR|=5umZz@z|R;apC!FZ`(g-50xH}-(4}V(E*1J5qHy0b>UQFQk3=Y z_-m;rr=M+oFJ3`+=uTU_16U8*^GW+&5A$Na##wYtBqm8na7@Xf9KZ6*FgDxd} z!Lv|FIiX{EC|4p=8TFm}b8mug)D={c+BVFn-q)l^IyyHN8_uIz@Ex-ppJiW_Rslez z{*Fv?WnO1i6ZLvJ5IBR)-HqVeL_`*=hf%6VQ%K&sGabh%^UQAP;AP(iD5;( zy<02a3q(6Bz&jcc#iCKUKJH~d+RO}JE)vM0g=V0BOCfr?#1bFePP04Hg!$*r2(j^U z854jkX^}KS$)ASbY1d`X>Ey|VU?sNbt{gNFe$ER*3$YVyUhG4^#*pl~+he~yT;tih zZEqLUEz9J4jb;3Ma@t}B0S2K{!@YAVfgUVyyry9W)6e3{gan3BQfH=&+3@cH}e z&x@k?bi%Am^lkA+&1Iykk5s8?XJ+tS{;)0MMe+Fs`kIGxDS|fXru2Q2LrV_d;BRAte1KR9TX^qs>?e`|f zU+~Qb!7-(ecZh>VGfzpO#ui7k9mHj(q%eK^1}B)^1=WI({USNfktpV`dqI z*Hi^gWwO_*#s;~yZ@ku{lzowc6n->RP~*5f((gN{dEp0w`_eeK9a2%Ohk;W49iJ#L3}}-IZ&)R%m2-!uP+iEJ-zE!Cl*{Lc6QvWt1AV@Lh6*1UMeX8 zPlsR$?|4brDsddmALWdoCJ=B4=m?mJVbMUzxr{2_$*Qe$Ycjo@?fT69Dot5o`}hmh z*)SId4oV}IvV}(77t7{9?e2umjabQjy&@lckg*mvLP8Wvo#!E$7`R6|5yxT5tfFsV zEYbWhd8Sz>tQO@|C`R{?znCqkCe6K#oCB>jRvqg>E)+1YZg5535Usg~fX%HDF>NS+ z!wWKrV}M3neEMzlqtgAP{>yGe1qJGaTY{4Xmd29I4(9^wptc{kgAIXE$#S9?^xvUd z=xsquJI~rj2U*TFpW-SXI-kX619x!_CJZeUXqPU5_LDU7xA2L@Oif-q^}X2r2=z9M zlBi=&D}%S)N=WveXMJl5;-F0Jnkh5)uQsjzb_bHymZ8-LQw~44l=Z+u5*1kF_3S^ z!ewH0jkU;96w6b`Xm@1XC2=5DJ2oYS9F0w@=BuJCRMB^$3jR8hb0cOO<>^akB%0jz zgqml{AGf)7`JvbtF$%pOUPB~-N^@^el@zeNH7;A8NEP&U`xRwDj^R|$We}j7amN=6 zo}CP4B2Jx$4#3Xow+ zm`-Ay$3u^GXFV=NNPhjCS8RVVB8IWy2moqzR54lpG1=}{U(3hHH8 z-1EsRvH7LiKlDL17;o(PL>m!|Sw-uKPm>A%$p<3hG&=fXX+mWjUeaOe(WyNB{5_to z3X*-gX(ChkN~*cYf=s>N^jEOFuKsGxG?85G@-okt^?~*UBDwyR<-f^L(S9i?s?K}R ze>*_&)Y-p{&&)q5>lMXH)d~M`O~2{x4vD*aR{2qlIq*5DZ&wx`h63*U)Xxz91{}3B zhoP%L>L}+p)o*Xd-CcCVzz;Jm(Aprp)>LVp_mWsLWNqjdl!N?V)_UW;#HVV}U=dCC zc5Y6mCw!v=x};H?W+UP>=byvFjV0gajq~R|H|@HU++?LIkJ zYUA(IzIvogyOPk_IG`Sqzkk8fPV+w0-FmNDCMd`_+gp^n!UqMrj4@A62@>gZ!@H|z zoIp6Is-FH6sZ_^@DsiYQzVz%34~z2^8VWW=j~9ucu76>^m*;>Uyld0ep~Gp{g2qvL zO9IC(!3o21L$2A77%d)cmNCyyn$W&?$#6f*Xmb)jhJ<~tKck_>>cd1Q9+ zXx+Y|p66r(8&bXT$~MIeIXM4~Y2>N=8B*e7nX%vATd`B5aUj?xZu$Lu=8-s^60eN{ zgU~C8)M(00)r$wqOw|p)F!lx~{#&x`uj4LpNLey6zD{wt6-cl*-NNymS+Uj`Z#27y zs1XzLtig3$E~&0|9QLM$0#5i|_#~v>SsH`N9Z<{j;2x#7YN1q3=f3tBp}77co>=4K z;}9N8a({&elBLn2i|uTU(j%u2f36w0t>*jseAXTMFO!E(CX{r9itR-9#3uHe5?o68 z$dxoc?N5u8taqD6yKq&H>Mx;fZ3*53?;~?YW}hac5SIKU6&a+!e35CNtCMs+WreA} z_WUQExbsVosl39JrQa60W7<(d4CxB8Er`0axqraDGtW}{P&t7UMW?Q$-v9E61IuXI zMdw%j6%C(Ity?LQ#s;mMSLo>IORN9!Now&Df)dZ6@5yoZtu2-ZjMYP%^GW9QQ&9R? zinul(=rtdR#*t;P=?W?GlA7{@%zs2d3~U*16;|JHSdML^?=7s?@ySO$_0?E?rv&l; zY+Auj&TE6C&p9f%e?OQ46MbG6q;H9wAuZlCk9P2QMXfkCT+|m)XdzRp+{1pnp0PUaWC0}@#w|Twv!muTU zF_OTgFsNtA9*54|g0Q)VE2%$=MsRAc@#1iJ)l!k!4eUsJverQ6@lDnVCoar6Mjj5N zS{woP&=j3K*0L{JcS|J|pKI9~;-v+)!~4nu(JHWD5ER9$wbMZ|%p+EfWv#{S`o60? zF4^%OO>6{$WsA4QC5GA&bY>Ph)b<$22zT$VI2lhpuB0XL0(~GJRB7z3k9TxP28V9s znRQ%WJxRN1(#ZV4e55nRV@eJ1L2FowT2$V-X4seu(G@ZpCih*@Z<^YkaVw(u^>Hwo z{=fN2O&#%?7?xYpqPB?V^Bkns#~xqYq%S(7Rf;;iIz@~`L$n!=OICM8O77aXYM?^3 zJN{a#KB!Qw4#lQQYst zf`+Ic=AC+ZX&@hXQQLm_*Hadz#ApyVTb=hBmlCmOex zzzGm1duigC{Tm4^7h5a@7|k5#)&QM)aUBmO$h`)9>@1H$?D)a+Z%mDo6xx1b@9}{Q zXuQ~)abIns;8 z#PEelYaExRQka46R0)SPCx5m*1;s+NXF0-T&{{0+5^Jp=Jzd|fub~KP2_-Htd~6Tb z)7vWngDpR@@=cFidAJT9-%T9{UL9aFHppQ(V9cH>+enA|4d?ifw}woU!}5W zHc>qk-6C^LJZG^USrCr1Qlx4bBCU~hF|Bf)iolz2^#Es>$Biy#?(Mp&el z!+1^V@L=p=0~o4t0r^HnH|Q~E8q+kOrpEs{T2@y`x(pv&XlEJu_QSQ!zbg0Dz1{dl zSDl7`pBgT&G5q_P?X{D#)=^nd9WC9?K!*^vVjoMH?U^dx^#Q~^t?5eb9x5!2iLJgL1ML2 zS(=MGwEo{3F|Pa!(XcU%aXQSiai17D6LY`RqS~2g^x4aQ-6u3I;@ zZQHh;#%OFOZDX^sZQDj;G`7{)PGf7`ec$gp*1!I(wVRD>+|PwM$2iBlGRtY{Vv(`J z{CbqwD>%kqKED_+VgTEb(AEK`pICy2F*{6q(j(hZ|9y#1h`EdmJ#0oUf*@OWFqKtuI_yfTmE z3xS4HA6>=`GA_!*$OH!sCpi_>?vi2%8ADy=dK<|CWV~7wpMYo1g0Nq6_nG*I1_aSwj3b8Y%o3wCgZRkX?#59FJr_i%=d(||dMgL(7u3y>+8h9J(iU(W`IvP1+0c{PX;w>{Wv!2XtZiUc6z{ zL{%Km2S$1LR!+e7`8E?6cCi4`oOAGq-Xi6?eqjlc_&w5_{4oD9W_z1R%rc7A_kBb| z6JW=cc4|UPDD(KQ6sFFzKW~pb6h@Mt0;?p&ViJ1D2Y@gFFFxZ?=mzckVxm6@lHkb#oML zmLd3JHJx#6pAdmdaSAK!6!4R##2efAuR3(~R3rTJjj1y-w&~)CIeB5Xjq?8Z;?QTN zwBx2O5KFE?>X8^|s;KxI_&h;;buej5ujG4IaG!RnJ#zajo8degR)Q~QOHXhJjDFqN zl>qklR|A|`8cv3z7-{>Y5kn4M=I7t&2-KKO{ou(~qIHi$lIV&5^!hgH;K0)HZ~TJ` zG}Y6l8{}oU^8zR!EGXIMJ)8xq3v^1!?wCd*pauRgZ)v7<5BT2=MdzP-5#W?gmi`rT z7uCR32+II*fwdEh{73ZXGRL0-=mYzu?Xech4jiZcz>`k4F89otvx4V3G;bV&yy%~8 zZ@7F+IJ5;qe}vq#8mr18AK>vhOMGUB#LC|Q))CFv7)_J|K|gVU{kfc}CiI3N(++6c z+x;p@0*{bQ52lqzyD)r7N7Xmnw`afyx$HyQ&GsxN<7nbC-rdPsFA`g2qNNvhxySLk zTY&U>+D~b@ThvLrZ{=nJoPwiSdux+w02x()Kh=|Q_e1G*7?qFhBN?)HtzJj8 zbl5bDKh1`P@UHfQZDW&@59H^zhpY!dwY0QaT%WVJU((gV3F znmpLcg0Sc5Py~09z3$d_91_1QGINEzqml%sjHEAGP;KwZdjc*KnmO4o`~!F>PVvoH zt{jEFK%*+I-}C$gth6?3Ol8)mYIF+wJtcLJK3(TX5{387Pxmj_IA6NlnjxeGoeyg^ zjd$zsX<+0hcuU{*p)XEbE{O0xd)JX*UD>~5v+;)iO%C!V=&pN|;$e2B?_=PjG#-); z#QoJg44?ZR?UM+{j+2j6ZDUM$}}v`++Y;nZTk ztHJGLCp5>7b$ACH;lQcGh8c~v;$%iX`0mKTZC?h0q#P8b(WsSj&vTaTy0!;|E{CoNwS*j&AC^#eoPjGjS4{KuF zmxmL`&fK9oCM(yKj>wz~WYe1+d*vkoc0j2BV~fLqeIqrG^JCk*i4b8zJ8&!@78T11 zJP6@uS!vl&>#K1fcxrsccP9D4hcwt4MF_wPv)KTDSlnm*N3B=*cO|mJg2zCxP#<2t zRIMTt5bSQ$gamk$G{)mRYz#CG4!AEYE&?i4z+!kqhCM}S-Hj>5vn!mqcx=DX+zue3 zg%mUqbp{|&(a3+5up$?&0|)b@)NV8pGht&yPtL6?!(lC(c8f?|#Sd8esa_ybW}+td zb%f6;^=6#ibn6q(?dC7QAo{KmzztD;@}o4*`#f1qAXz=?_~CrOc}bG=Mw8?I!dVc{ z^>}73wlo8I%fbUXvW+ApEYbb63gbMHUOL_xXe>&_;54^f89?#Jll5*fJtH!<@qmwX z4Md*Pq(^lHy!&(=5n>^vb=OGb;Pa(GWl5TGR+&Cy@s1m`go5C8HUT>RgIhEpEdrhu z)s(od!0C+7L_+wGKQ{l6KNUm5r+9q`vetZAsrYqf)e$x(^rvMKa6pAo#g&8W|yEq9tU(>q_ z$kl~DSfQpEC;Ry-f<=mEciS(Rwj=JAu(9sn!7z{`Ah3B0DGJw6it6%V7pNSOQD`}> zqW8XRzQ2+(>W>dZM^?loFTX?P5a!0dK`;^h%KeqS&m^@xsIx*$2m#83NFeC{NE5T; zXN#1O_b{uG`?y;Yo0%Cnbn%&WwESn4rhbu#n>MYNm_I(RbJdp^4x6d%Q`_rWOCy6d z2geF+T_a^ONrMkM#5ZR+QBmzKJlZ70i3x3R$md!@sfi%aQrXWFvekl5M&#h{ooUic ziqw$41U#=?*%^Y!Wcv&#-xA{`ezv(zT%xi6NBgz#I4Wr?aV^<&$>I1bQqR5sp2kD|YsZ-ff$lwX)?KLD zMglC7amzH`tI=lApo_4E?n4S4Hw*q2WCCRiAWzL3+|LNO-Jhr=JaMw0BBSC*{;`j% zoRFcRgxFVyHwYF7m-g0vWThT3-EEcjx>>a!e_wk0emG{iEr|Q=i;8;DV!;<0@$p(8 z&M}qQAK$j~$(FBlU^u_w2MKltq~X~_Nrq5F=*-F-`5JII;AQ)i6aDGvb0~zf*)^!v zY`MVpFXEMEEP24ruCYqYUkX$W4G$kwb@a#(xc#|!*XOAtTKB$ck}9zJ_FlgTxuKmS zED^uuby}5#&2I(iB4Mz3tX6F`?7vfUfvt3Mw%8T>(i~IFTDjj67cFn}>}bGaKK_hm z5v}OQRHv*`c!&gH`F+u7P)V4funA(V?$yW2C_1oQh0%pwQ&sv+6!)L;bh%I;|<61ASM``%v;A=nY*N|bbOv3?W z-82Q`fm%(CeOy4t4>6I95gp7FN0U(x=IPc7A?Z|=yZ-qbJMuf)O*oyhmTHI}rxy-6 zR?9&wxUbnhbB3Mk6;o zuf*T+u>yQ2ElG5|E&>`JT~q~K-aW`d*~F?A$w+%0QhD&&=gyrSWoShGeRa z=#Y#xO&EZC<6-$vQ+HFR<8QzW_~pQHNeuZ}%w3p+vAfn(pE19ToeA*j!So3~0Y0fn z404i|%tE>(Lti=(k(EKZn7lXHwe09j;a5pNz#M=KlIU(Oz&Ex+)_2>6NVzsc7Mbs8 zjro;XNL$8BE%EaPdRoNx7Gc%?M#%W8*U>7s_613hH$+iTAY_G?qwD!qJF&LR%_%@uV~t|f_=24qZf=53VWnpl(J#=hLmW&#|t z@!~ioSOl3-SirOd=LLU`h@8O(ESn$8cff8z-1w5?hAusj-=@3}{Q#k&QhfnU6G0EAZKU%thrap95OyB*STp_Fahd8OI zem1C$5aEv_OQFa%AHD?GyJxxpY~+A&g%YW6Rk&0Ni_E#Y7y7?kS_2>T3Rfu6k_fC5 z$u%^pe4xagPRflhQzW%Qq=qE0=PpAZL}w}ka^|tZW>8|Gex`Ibxp+aCB~epX1+HzP z$2N69|NJitaBDuI4%nJ56fHG^-9s)p=iiRg#{Qae$#niuESk8ZVCD8tL4Y8Gq-jVH z+*2eCzY;q2dg%Rlzio*ovtS-Ys2$4OqEX+MsidtHv9`k+3hqJ4+DAOn*2xa>nf2aq zG_efc01}0cuRXT#B;D+drQFu2z4|Cq`X5PM7!}*_h8eo$sB~OOe%BnJD69l6>Pg8Ar6*yJQ$B?yOgc+Ootv~7$jt$G@^eM+^#hn2m+(cT$QJ{}@)>b1 z7yM^QMNRM-q)cj2$j6P+@G+96O3>`u2#m=ox%paFn8Pgxw~(Qybi^rER}(5hBe$n` z&b1O&A>^uIFFOk=+410NLL*>lpe}rmnrzSMt{#XS+{7{i7J$q|_XJQ;PmKLzh ziQhuzirupwxcVA6HbAKi16~a{{DGgzH4xrcfGJD*sRFQE5>2wjDtkd+n1mhV$n$&8 zz`m{Eo^OrdKZZMBVl>C}=iPSj2~z)ho)UDW`E&*y0#sULl}G8Ej{-k!&dy5pTh4$c z$gow`4LP7Fk3SbT#Q=CuC{9Kjr)80t2~9XyJQmAkMQWxtFe=3b z!?g*%Sa(Z)c5MPkgF7^zrz=QmbX;9FR)2X%N@uk@*hB)JZ`-+85n75C`FVL8^iZMN z1yard$MOOaF7x{-xp}$Z?oRcKySB#F$O-4XCm9>=*crT_Aq7Z|7dM!VqsENF>Zk!Ok_sCTg4c zE?;Ufa>;hIWCKV?)aqK)kIhG}>4!nRE`1$642Lgsu70&^Y|lAkZJpBfUl$#RhH*w= z*9|dbfjIrgK*$_L0q}-Q8nUPktnud0MPM}C1Cqg{f~51s^X-#oqH$kK92iN|%w=ak z$5-T>)0#>Pc9#89u0?E`c*fLN7V6#usAa8g1aS1tDiJD0jWN*!!axt`E_LWkS|M$a z*ykdjqZDIW6SW-pmfAesMEyUhxh(8Ff$5KkeF8 z?Jg)lA(+g)xqO(c38Gsl~JaIF^{O`ys%fD+Jz zg2{vC-==f$iKKPxAq=7&1MrL^=g9B4;Bb&q-Bd^_N2+jFIE_>go|B|tQlmZvwg zDMyznM(n1=kKv!EO?#f33X+4JPe+pSLw8%O6o|p7LHbpjcVCpF<)Cv|rb2@4vV>A1 zU5)#?P~%CD8HobKt1NGosGFb>;e{U_r89t+hZtuPcp#K$Gg6&8qWAMI3R^xt2ybZr z9#)2@?hi}5!1eO*gM)0V9`M-%_GJN#_n#|Y*9TzW`oJ);p+w;OMBZ=Q#bVEN*1iWX z%9gL3lC+tP)6fRV7MW{44&*1tS^;`&<2$)Z+k+wE(D5-t-pPHkR)aYSOULY)NLQNz z+~yH=`v?*PVXu=1zMx7_y#qzI$1`*^eh0=-y*2aQy0IPC`cX6G|I!BS71o+ zR!#!i)kRo}+)8~=<6@>MZCR9(yMu@UZ;dS{=J;da-5cJY`LfVZ-d~y_Lk;hZB=9DwIXA)=@w{+wTF0i;7?NvTwAdg? z>R|;9eXNg}tGY6Z{U$A=O@J_7a13BE(tHtPD8g1-v_$44#+aSPRFUKi`Y%Z#cCa*> zBH}kPtKN>k!^F9J8O#fgt3umbl4EW-orPrVIvkp8G&f>U6)0UHsVfa`EVkV3*c64p zt(S@PnBl+#Zz~v+ZXhUOWhGM*U$Hm})tn^vcCgCt^*X}y_1T==-+x>xl6#CRc|Smh zT*LKzZSZcixawk#q3x*R=k7)BY`0|GREALrC2CLPg@s0c!N>G+zykRWVr0pr~0( zWkKH-#X!<_vnrIV`6lkyebT1c-~5G_48N!( z4HG*1{0NmkwYo!x<}dqKI|Y3W92cSmIHFk#k;kvQKJBk&cYgerKmO*III-P!$xSIY z*G4__zMHE_<@*C&F?&A21;naVCc~suldM_tUIMvBK#_6b!*w4XQc@bb)#rI-&yo4R z5(x3@n>?BCa`fh+2Y4CSs>w%3IZ!urF%T9`A2+xUD6!L`98vjC?W3as=fkTB8LVu1 zY+RfX2ANP$YK_iI^zQ)vsJKL)S5!SDW2H@UvESV}-@@tp)s>$gXaXVgRb>{syGede z+=r8sw`-{*i6flD)y*$qYOqXAW78@g3agd~+Zk5;qu19~Lb^jNzKj7L?r;G59h>L< zS8%Dpe23eBstzpjw3SNX+V|2fp#!>i3dHJeIeh`~5v2W2UK{-J z^9&u!U|9#&*RQ?Q{1{2viMnrm%`@hoLgYW9%liVbqw5QAR<|FPC!6cYJpX&l{*TT7 z?=c%93?EQZdVd0lsQabHy%0rseptj z`TdEruLLd>_-7Rf8dyAQ5EZ&(CCPmsq{MyETn)n)+N_byZ%MjlY>XBQBoNuxyN4+B z3nDvn`VRBcB^>b;kiPr6+%Ze$_iVrhPgl=Ufy+~hoDZ~2xzw+1`W@HMihSI3$-(xa zvsrTk`|thq?f>I`0zMq?a5rl~ihaTNRNOfCMe0nlvJ+^e1I(0y#(GFp6yiIp{V~m) ztiTwq^MThVMP?exWI!W;HMtp79G5NsNkBxyHBaXReTEs(^IaMFxkXTI1J{#7V=0f6 z4$sJ;4rPmlzx&RRYh2G~Ilr(Rq_Hj;>&L_+b!SmtDf~MsbA2V`<#7>$z2@6UHsjks zF_K~h&}}A$UoPsAhq z25&@tM+`>sbC4~xryzQWf}fd5Vw;+88TwsH_&;P9PEzzw`MAB4L@OlC$U){uoBh$| z%dL4E7PdRm8*Xp7Bx?dSZDLxvXj80`lsc9W5eIcbVonDroNO}DJwS>Xi}mtw02ZC% zy~0b~mFL%sD~zbbfBO@gxc}Xs;DfMysnQPmczba4;+C;8R*P3lf*4M$Te~1aG*hu3X4vlTo)BG^%DK;H{Y47t_*T_%kizg`?O- zHSn++?YFoG1WV4(N6)8f47v#$2cHc*!J;2J3;vc?#%fZ%X1}DvLw|-n_)qKsA~=D1 z6OnU>uUVqiQn zc)23WG#yEV!B-S#$ql%0NgK;WQeDEp#1`r1zpIm|XqAH+mtMAd!)M8RJpFdQ7htka zaOUj){gQxWwWz_v!-K5bVkeRlAHTDb-F^fNyx<=t$U+SM=<$fDS@AJc?3i6L-P*sy z)lK={E*n5cza7<|4JorA5BH4c*opAd81a09x3Gk=O<*%4>H`-y!#=MTd}3lERz_kl zLpmNOv+f!h_*uR=ysV^EmKO;w;0l153zJG%PJzd?mlX%-tq1W3LS#rrOoM!1B{HLC zpkbvelZDa%vW9;dHkMXBXX@7+a;+u=*n>~j(jdd55&gZ*qsptfCMy1ekvJwALVw&+ zXB(th)tRnB9OmURF?1nefEIWmRM>z9wJ)C};hD$VjS9|DSrLcKI84TXycHJ`6M^ZSww@2t=cd6SCD4rha|(z9J3?SkoHjWdiK2q6dJ(Us2$V(|8&%3ESl9o zn#ItH8mV+}A1ir$>~rNx*RXk4N>JC;4^4KO-}jQd{Krv1if5SSv*K>u4+u(^Qkz*) z*7-Yt2;$u{RRB?&ke7r&vyS1sP~8}3H9Gou+>Non9!7H86`6Z-$UsIsA2iP)J(OKu83Wl-V3h(jkS0vX zmwxrSmF$9-WpTItOugvq3EyC`xk=M4qtWGXu!+DAYa{fAzAmNMGm~ngqapYP zzeboL1NKgU5ywE@_RmS4^KT*~V<#)pn6jRWI)OoqO2}R_-z#9c0);RZ4(KEyVXFuA z!Qp^|eS2&AHrQB6Ldzfuc^U72OtDUNy2hh4`ogINbk396w7*X1r;=j0=8e>GB}kZsmW@-FzD&Rmv(e>E^KLz-RmMHPvP#mq(}Fev zV$LK-29g5a16-65{4c7YSE|7w(F*0A$KxApem7`XI5-qEj8Lw_kX7^~5fgGVB!GHI z2qY`A4g5@@^*JUxSaZQtSw+1dVJ8@c#Jm-${Iu~h$^}qQb$o%HUs-PQ$ja+L7%P6z zyEH{cPM^LF%sZE7{bAS`{ck^-`DH{cE1Bf{7AqocKF-iLt@FTc_$G4C+8aSwSTcka zPy;L-SV=Hx8Dy(ZUO`df7UxJzjOIcqCeb;kepdC_RaRCC+gl0j?CjX>4I9B9&4H2D zp}Rv!jPvGS7`cAPq9OP7z_Ax9vU>4ScWCkbI@%WzSw zWe;T5P;GsEP_UQ|NMAzUV_&$MGJ-`^IKJ-*|D1Ew5&(V{K?B2lK@mp}+ zf!guY&V#}%N~BB7dLo8%ku98TH8P|av(MEWICyzsBM8p| za7=FGpJ{3wqV~!u?r?3W6!4i9J1=4;ga}2owQ-|~rh4HTq_&Go7cJr93A~T8y6uJt z=IoAoa+d9CXi85JVC9p)ikS`#P3nnk_V;eL1hp$_(Ug^mLR$`|ah3H2wWxC{bAvj+gRs5VuAhxPvOyr^;erW+L&(&65x zpo?AN0889lYh;jW?@z+~wL)-u@lzsQ*Oe~0;KnT#Bm!>W_;`Wa>-*`rB%@PP^pQ2EajU+T4z$*j`bi7&CEDQD=RThDNjlv1U|msu%2p{7 z^KO8i1aG%?gjF`sgcXAMdeE6`6$d)9YV#rN@l1>_;DL^$&SZA11vaG|LSfy=?jW&u&}<=OpfyNwrDUnZkh4A&&U+$|#Gxe33L!J)Ht_TIi8=PZOYgzIQRXa^H!~n~xh@#RSwmKnbY_A$eyd4<2d(DqgMh2)I*B z5!^Vx{`Tw;?w$@%ShCjg1u(&4hrBYOF2B%N!w4%Wpe~C=j>!$Q3|VRYYcK!)x7V{# zFRlBTPzBX)v|S;Ef`bu|pHB*ZmgEOv5=ePHL$FHGl_{j4o?qAkEhPAL6l`yS#s!xF zF=ylo_g`yc;r}hfc>Y%*)@n5J=au;Ygt68d8d%VkxY%Q(8@URsHjDJ)&|?#XdtqTh zg0%2gaYpnOXFLnCbT)B1YS#JEqGaTZkss&nfhXm%ueYJc2A$`j;-n!VPYN0LFhqLlS&+O%T$TEl}u4(`dy-?wS5iU2__E{ ziGfFI)sry(GE63F5cWEjcOKBhe#@cbAqDciQG+SzFFCz&}?dbI~W@$! z4gA&@!EDzVkA>wA{mqBUE!Z2}zc`?t7tX@rb#7Iqa4ZglKOYuUZn21|GH(L3w8Y;m zL)wwEAQO)hDr;Q%dR_`CE9E5JAQ1Y&7tHDMe#!TF&0mCuKM|?;(X9~G7)XeC5hEWk zdhMk~@Qzc*^^sHeoTkn;$2Z-Gy z!>B)iQr5&ko;BIW9UkHC?s3125E}XCVKj>u8PuJ^rEL6E0F@(elJ0u_K3}YCL^~Yt z+pL0}y&OI)pMBeh;b{HWS?c{C&JycITmcm_@)pkc!+o0$IcmPt17@(DBWi^@0&d}* zY_J?{T{B$?zrp5wB--Ki_~`FD--AS{VIgPAGTHm{j9G+hVc(MFp|q%31`~JZq~8G} zd_z0-ZPGAV7Bw$vv9} zff?T;C8h|YQ;sPRW2Zl5$=u59-C+S^6uyU)C&$8$JccDGxjl^DpGwsPh%bcxlIhHB z?O^y>wPbB~f9^}N9bK}$S;eHv^b#O7{cT4#@%_pm^bItxy25Xm3Hd4^$4_bP`TR`Q zLH%RF(N8}HaI!KAm4DN<${s5^yGz7AACcUk;gIE2a^#D!I&bwjNishD(UIJGZ;^K@}PYwDF#b_qSA4kV14Fa8M~S*tM%G1+vF{wbRR#+?|s0?kyf=J)DR zGh~z7qnT8W7m!H&-yWI{4Xx)VKAT-awPrWXkAK=P#{IDq6DotD!{W9tuk7IyTJ*ra z-_&YXN%&|%^n)^Z4W!gutiG*GfGaKS6+hzH_YVKi{Sc_*+2NvM6E4dL`u!X_A$0E zsCo6Qw8p^@2f~Z5{2v?^@Oloi>U;vk08Z1;<7hKx_pFL39kIKNkY+nB6yAY;DvXD( z%w|l<*@+L$3?+7%C{OIWg!es2;%gUS8Io^LVep=J1OCa1L%)0~T=x+=WGMCO1B1V( z9>V4&X6~d?cm-Xoh91acn!g+n7L)MC_-nico4}>O7UVkeVu@zqUJJ*;d>U~1hAjNB zhsQGwM_yW4DX!v0p1g5j>(xzToZlrA@yVCQgJLkXV-?_@(tf*R@?X%9vq;Q86I;DR!Ug(T`U+R~otXb@c~|pX0}e0HiFBlf^&b^nb!t z@3j|`T*2O(x`Jp|aoF@rAb|VHo(QG3dkyy)+~xnyP`KjCs&+E)_7*5sz=^p#UHXv^ zF)m>|?Uv5rQOeG1>0FJkx8xlb=r><-m%Dle;~IcX4kKflT{C`U7U%9Oonx9X;j_f% z>KirrU7hHC5(!ksZ$L*~mMjeZ{Pjyyela0W(7vBOSeor=6-!Vy6F|AK)Y(&0Q};~Y znsz+3#KejDg$h8u-y+ZM6~Twjs2e2`;X1_zf|HSRRvM5I84zf=n;`9~zMxDwBvxC+19C85bhT@xeb)IJb{yn6q{3v zncZB>Ypws3CuSS4EQG!P@(z`^971wAuGI~F-FS+^dqhONaYaLZO&y5P8Ku6IB~v}x zr5$)Vjm+<35HB&Z5bHyuhq{0Zt);%u^mpDyC;ocBwcj_|IA5%;s=>{)*3g(3DSKs- ze?hobIR?tMGA%ghe(A6X;g+@Q3(|}uhECZZNR&;AG3_+&OHIx^a%SP3oY-xf`6yj0Q7d9>G5Z2 zSy>S|xk@O_tT$xpAk&Kt0XL(ohEzUR#)GMxskL++P?qK9GcAsF1Y=|xqyJ!XXnjg< zPNllh040}g#*SIQB3+&i7qg*}70A_`DP?5^Ys;S|7`x2}OHLB_y{N;!Dw4Kyk~X53f*JLVyXJ<)qUq_ysgdKt6b5z^zU~?7g^ef;%zkXW_5oA$BVC9d?MBpYqu~%Q zQ>6+}k4RU?^T+h7`MYlY!H9i=26X-}OIF)>1Q6~I_r#b*uWC8n;9=5Jv6HyyzLn0e zSna5_hQAqaFN8h~#Sjfu6@(bRhw_q9%g{igd!sNSiOTAd(+STqL#nWk($I5^nTVTq zWxUfGqDKMcr}gc$XyC8T_^Pb<)zdlGNR>-dR26HhoE?el*@mS(qoqFr;~uV3+s}l4 z5uThtJ3EwN?46_0n>OrG!F>n={2^Lz;^*jokUZMK4%FhDXbFCkZfn;M`^2o}pKNBM z=(o_yT8V0RUq*T+$<<|8?WRUxsWF_Fnfui4{163^pO(i#M8VzNDfTT@INA3600J-G z)Z12y2RD(IvP7Sdd@#Xrr>?4%>kItGkk$`zzwJf%0_N@zq2hlxIwEKKS2@_IVh!) z8>+Du4Hfs-XQ?6%U`UuR%TWG#NXNcsPI^$x11)_t#IBn4L{}bjE<8HE6gjb&y&Uy? z6M{3VAj@M#%N@{@-BX!2-!vcfy%=^ypYr+-Kuh^-WO-C>Z$aI zplKR(=-XyJ)+9HkWM5tXbY6sp?68!B8GDpLCvHF*eHh;a@<=l%oM@K0 z-R8QdMR1V=mEU@K9^UAwE5t=;BqGy5^KRex4H!U*gjxzNJwLf>uHOqjMd+=5J3OIk z^#WojY$!lqVCU@UZUhKva9HtRZ981dh|D|tl)#o05-?8Z6n-Vu_e>~VV0K?W_>S5h zuU4dVX&nR!n8G3l7d9z%Fw!G*Wr3e?!KJlrGn!M14HrIG<6=_-fw-QoP&pIk)NCsL zr{69c^Oa%&{w;>L$l-pm!gVl2;7t-x?$BnKMJzTaO|jx>8|e)MQmY;ST_@_6YTHg7 zSsCM=OL3Rl{657t4DuPak8vUp_Nr$R)Tv>k6tHkrTq^oxE7lEvsfRj>L-L| z0tEE71*Q6rDCN)x<0oDcmouJ#y*<;tL%sfv)j4}rwaI-B2x>L$BN9ntC+z%QxjDn- zTa!{T@Gd~4YaB+o+G|U|q|k_p`|2Ivsp7DpLXIbqynZDDv*>%@3g9SD0)8BH%Wuwr z@$@EW$Op=pbN3gEqTMpk{0A?&?S+Jb+Wk*x1B9&J7dk2mHWEi*mS)fSK4$VAlN#OY z2F)9VrmU%(1<5i`20z$-tYK}3iS)+nFE+T-{`26{Tt1 z(Q`X$^JWtslb{gtNBY8gdUa}BKM3kk1qVqGc~{^z8*FUdAGQ?y7HI4a+XMRf^*h>= zX^}r#1;OI0Uz_%<7iJ8Iqhx>BTEb6uc?)@rYfW70QZt(8S-wz(ws_F)feq%?ZNXo2 zbwxgg-6*}DYKup9WRcuDiL=O7qlSt|Yh|F)D~Wt;i$TLDrX}e*i+@0FL`2#~=X*Y6 zx7fY&|LI~u03<+`GBN^prX4cTDp`W#uaOov;WN3G%yg}PBZ3IHME#I(3=XjN$_`1P z5t|=H$l}+>C%qRSy5HWHX^eV0I%6Z$->*4|vc7MoTimb{h5Z_oMJ(?#bNW78 zD1+^?04Jvo3owaE zn7b1tP)5D##eo_3^pEoLsQ>++9XV4xHCt1C+=FvE%Z8V;ZsP@$ytB~m|c zGR5b1lqMLtHsXBBDO0uX} z|Bwx9Z2W9r&=+Sfz+ykV+Us>+ZgZ|!m2Sots<>xRk>-9n4G5WyCI1>Xd9&!CoDx~m zJ?hxn9U2%bS|^ml^*1PVJ}%V(y%2@#R#8a1U#m*pnS+xi8LzewR@lPJv22X!>7;oG zSi{vEJ7dHDVvWlm2>tHhwH@_5NTNhExOjN~@r5!jzbwywv~Rlh0cfJ|KS{?V9BP6h zWh#+z^|xs(|MtrREzq>Np!v{fZ*l_fwcQIRUVQf?=M)C(X@=K~( z)Qg88;L}Zwggripzld;?n&`FEgANqkT|PX7C{*>csiH;+gCtY~sJr-1K;klWhC5SR zI@?+S58ma?y^>#e zqW-2^;4*+5gP9@%SnWL;rjfWLU6B+xp3H{Axb^k*%=~j>Y$0%BZMQ z!if*k9b+#vPlGp>SK3DwTCWDblzjLJxo!q-Z7r6D_vTB|Yq{VzZ=go3eh)K&7J48m z?TO#la|W3R58m*C>-%xK2l zJ=MYHOPf*g6+R*i?!w)i+;*ztc-C1YVYcDzqPc@2kN&My!1SM}DR7+iWLRkr{@zFt{o0 ziF2->{#^`pE_J@XL{LPy4n8!kK9qyR?-L27HCX6j$RC*01q@Cz0`cs8R)Zfr1~MdG zzvWj8vv2tMH(tCfUMD>jx_k~@eYzhwa_-u!`7H+X;;<)k_wslJcu@P!vdEe($osSR z*k6oEPz(3$R+6|#*Tc~Cm>#CNK9_&ji8Z?+&PmBSsq=DpsC24HsuF`Fx#_Tx024=v zYw^|1&k~b#DA_pB=b=L_*4J7JY%`}p<3V*`@d&&$^YS4@HTdvA4y3+*yaMfDccmxH zIC?(6e^oS5QYwTTDy^j{vxdbWEzhyY;%Xog2>gw7H@MXS9bvV!SY}Ue0F2l@&0Wff z%|!R-yO0(U^@2t#+LoOeNwVa287wcP-TstzCrUERVCdR`Cew(f#kZYUV!!qQThc-> zqHeZN6TIXRTldH`in-|onahZBwA%~9qX^tb#H)YvHZ-WQoDRE9 z^+8t;BfSwfBfesr-*?X(%4CEr`GjjSQexKk{pN{q@8E#N3l2%KwK(g+zft2jQt32O zIyB6W%AF~*u1bbh%3dN$p6Yl-Zy_?lY4;5Kvei0*F-$wWEh(bfA)c3w$l^40&g$_; zrb`ipqt118n~yyUENrx^`z_TQq@4>yXMw(=4%12hWwiHxB*uK$HoPp>>2%aNsOGxv z0v?wOmzZeC#WplBtdDT%9>Y*p7BAytU!t6~M}tD0Kn674&Nf;kO3`+y_COv{Lighj z+yf=aY9PN-*(@>pa?M+=@b$UDvsTb`Ii$FxWWEILphX0vv0OK9i3<(PQ1|yi5K8CW zVM$V78lxr~^ivdp7A8=!b=C1&v*DlTP0O9lAT`~r!!$bUW#Z)OU^)w1Pz_l`8dLLI z`x=|zBSU|xMKgD7nY@uCxVn2e^VB1hgb<&piW{=kUoV^o-AM#m(R$xaP~z9H7)tJm z@7r*w-ye-k<$N=&3d)$IH18Mm1Oi)n0 zA=-_%79on>aaj@8**V3E-VtcAQN@KlmF}xAwX2C9?;=|eT6Eki`>uT~z|=pjVGhk4 zXD@F6UDB3Qac8mk9$b@a6SWzqX|}3#(+!l;(1G#rB51ho*JwA7ayK23sV>t%CbF(p zByqAL174ZbdMG9%Av_gWV8ZZ`5n0O*LuS9w%rI#50Aw$Eu-%twlX{klapqD59oymT z-(!i_L%bmZqPOUV(js-lKV=4-a91n6Z(NA>foVQ6nk3Ol^Ebqi{vpA~`89SD+78&1 z2pQO;bu97pM$ItU&0>;M4HIUZf6RVVCy8EZjm?mS2g>t@>~$r6Q>fC~vwTO>*Hy~t zeg_>%dxGIk3${=n8(TNgUVRE03oj{sB0>ipQrpMrF zM8se<<>CtgLq91}>nNm5<*Zaiows`sak|eE5%vO8jA?&5!OMWfHX=3s21ySutYXO( z2%XNg1cX2A6AgXPJAL;{x+bSo!;c^8TQFq$=0Wf2A}YWq-OrUcgNP0XBc8CePW6ZJ z#9g@*MT0k{2q5sH!F*F4DYQ&6rTIi(P^P9o>f7}Amy$1pfw;VTHdW}hv;72OJoVs1_w?N2aQ9=PP2;N$vM*Y2wsFLB(e-{}kg~&4#Ay^tHAo z$C~cl`%AN2*a`^8;`h5u{yJf{7JARf3kRCSYW1SKC7IlNbJ*Ec*C|%#Sd;4z7VRNW z@-`&Om1?oc{a&zTkXjWu$D46S2P-VP6o7+uAeEC4a^St0&k20(O7h5X-5VMFcjndx zt(Hg>?-{9v+HEB8#NEpuFZ&Y8U{f})`d-Uzh>#G(`2dS_BEKWl98eF5H$&~r&EbBF zWQE)AG3j}xe)MrS;@9@?A(KAr{7gP!k>*R0?Dq+z-^07{e6zE+JwfBMe%LTn$9VraL;AL&I8q zAK>HU50<)6K$F=%4T2Flx|?S7-P211y1<=hAafXjcu8U?f1rS{c3Y=j46J$bL*%Pb zZ{cW_*VK}$u9m-4APK2NH}1zF1V2OKPVj^6k)_T3UO*$!W~_{LuxPxvI}`q`e=@22 z=4@9wzPA6E#bOoFschvpHpECaQqU6U&E@+d!o493Q{wcQtB8wQ%P1!-{W~>gPs>-> zcj|-)5&XYhb`-iFcKO!@YlB@sBn|G28c?41e-|O(`hY&S z=Yi3QVyOtvT?dKcOckMRv@1|oicN?f+CCS?kEakZL3A_{kv2OP?UGVooYh}TH(aDo zB4Ctu)2x-@8_{No5%WgK#$*l`OMcHoD5UjqXcjVdsjq-jO&!mEi@5Azn)N_2OR%HQ z;d#0lPiGxJVv(A&cC)Vm4r)WvS|o^?>qZRXwJ`F7uL&jiwxO&JJ*YqDhNkc>Bp zSR&Q<;sMil@jP}VYm6_1cRch=Z$h@otxa#d@@>gTBZKx6+si*l3}K3gDo4soz$k5u zuJ&C+MyT_DCv=@!badJjf&O_Q0N(ORJ4=wmP?zazqY+F^ZjI00$lnk0f6hd(V4F)1 z+h@>CNuW~{)17)%DrFko-Hiyj7(e&=k5XJVg5;s4pkrBGWkWx793e>df0w!IN-eJQ3j_z1w0n4^CJl6h&gdPL-misp9xK9XqKu^;+Szj_OD1h)-|-?sKX(3{MR45a=+vJUFbYI>mraWx2Bcm@UrX5Sxmd=@(zMk4#7 zxuf9ESV2e26g=`Kh&zqWgiQ`j_%r!Jk^T?Y9D6Ex{NUl?;V8WG#%;1<&ur@f-=ZG` zU~EX3akMK|n8yso7NHBo_3T(+1HH8g(PVQX;pYz@@{cow#C3}+0ZoK6fm(4=&T%dZ z-w~TqdO*tF?O!HnbT)=V+Dbqk2(Ugsk3c>~YrwiLA8zatv>TZCp+Aye z4&LL!Vp54?G|#Tf)*yRluLfmBfl6tl1$YkcMR;y4?P;#RiLO`OqkUtPZIzB)O#HoV z8jXATGhaq69#wTKCxXsdQAQs57CTB`T)~P(S{us4mZ|ylOYJ(?u!gT6Mht!W0}hiQ zPa|u+^lyFr4G`<7DR@MMTF=CwCzE2ai_<>@lBdH;w4H{tH%BoH>Kup?SL2t~V>sLQ zUXo}!@L=F~V~~_uj+7dJ<@~#9kS*2R{?>fn*%x!?$9Cj$`N2XI>MjM>^rbByNx#JW zYD`SIzPu(XIXlAHr^#GX(wSp`^K%j_ZH(o%lldXeE>oGtQ9dVp78)5hWFw6tq(j?A zm1Vejt*b`(XeyrcjYbY3I^(OmH%Uo^rIMRgG56t|zY>R>Q7FAKYLOlFrer+qjjx>qr6Al> zr`O&~6T6je?L>P>*d*7B15F5g9P^48WtGpK&^{J1exx<6m3e7Weg%tm$29D&O@01T zURdKkzE;q_v*n!EWH=V8{)Aj0G+BJ)l(XO^KVOI0@>Isy2{&q@cn8$6f;zG_sqvaO{kAdp*@p!wAF?BV>M zCH-(!v8RRIMjm6*{7r=T0yL9UPhNLvY0xrt{zKV;*QW`Ag{8%vn?P&NSm@!7JB#k4 zKSPXN8o`E6*iFUF@TyqN`C_mBv7a}A{fdeX!`c0B_uE5-QA5r)Xzf%=O_%4>!P`9U zjVt2fy=y;&KYBBtelGv->&5&(ua{EXNyK^L*ItC~wZ!JeS|7#C-_Zev9)kVQ5=k$P zl;6kZqB+QA#$U~7)`^q?=m+J#X_?zJurv2GBo4dFJqdn&!`%J3g`rB3U)-zP^xw=` zeXg^dJMGMPcWxQ>Sp)f7KUWj%0^>7E*?6MG%{QHhg#vp45dA{S^vC&GFQgI_w=!_u zStPqi|DGRV!pOG^fn?2JgbScH$;vE|GL#za21GUZ^Pf#t6L^nDrRH|B8(%XOYiX7b08o;fYj1NG_$OUbbJLY4|aZKgZN12_}$eT!t zYv62X%9h}4()jWE@jd!POWN3zpWIu|d_0SdJ?%7)dV+N|+;vPq7T0-r95U-88V&Q& z{C2uYjV=PsUWV7xRROUibrT0QTlJ^R%5VXHLqU^@h*`s|fEOODn~l$1`2N{1?wQ|K zGbSbo@zX(=WPkS4`uV$=%O}m2Nz7HJQx^C?OyB&iBJ^iWS#kIeQ$rIIN`*y~i056S>yKhA>K9s+DiZC_jZQY-jf5wwNG;h(ICTtR2sKBl> z0a|h2HX*?}-vmabEgrv^vN!GCDYw&nWL$rqR;%@QAdk3i@^D%vT4E)e^`SC0`iDpR zE(aR7@>+-PV|}(3+0x~_B>cHH?PE+FEpd@z;&=WQiavQ6|JKvgN=Am^_l$2$)gsQm z%)p5)kc7DrK-uKUtSvNEiWnEb0-{ctf*Yj(s^1Mv164Py8~1C2&IgHBlW(?E(IRx~ zWG!_Sq(_jyrG-Ll@YV~01(xWj=z~uDC`gtq#tJX}+4+P0s8OGEBWdQe>p95vp~A>f zd?#pChSBq7T3_&bRZ2;mv;4#u85z%p@lC{WN#V@AKneI6=4ade^o)!HVI2Nv(^^r!xlQCrz38VQ0`&&umE$>I_s8uKuHwQUZidZJcT=5Iz*IT=jf-%p!!TK{5* zdRuq9wXS4Kp%lPuF_z9J%mJbvIE>b^KD&C>m(}}TIMF|@D3CGrCzcplU^HIZfueM9 zRLOx!N^M-rS|{%3rOayp%k;{n<2+a%EGATdi^g zO2bQd^{+hwN>%JqZNr+OgnB1bj++RWW|V#3UK2{PNBMNjY9F*x7Zlt^t$`gTNC_gfFAVrW6_+{?7v!WhNvGV|gOYq^tD zY=WzC66Q(&ff>P;7~I~29OvB%^+m`!IYwSP{*3BDxSX@RS+E0J*j>giH(9Xh_b6&* z1qQ3u^lEf@)hHQ(k)NuRtC)$IYpNJ2Gk%|k8*$#s%gc*P z`Lkq*=0-*jvUc#iYbxgq2m2(5N$ZV+q7UNFzT%IJKb~(G3i?>N=8ztxe$Nti)B38t0@-xnyN_luqPEGqr8ZdJD#Md z-1AGw_04CYl$tQ|yWn5p740!=liO2)-mDIx?{ z^>Qtu=2E-3wUYWyD}E_?KgrJ`4@K-ef7p-miaVkks1&6Pi~NFVJ5wtXE2bLjx*fj* zI%^g-ToI!8Gsq5}dSGKmMyyGxuA}Xn;k*1BjXg2TWyLEXUfw_-i2|whVZyh#UrGG3 z>@Ntu+!R1gAj4!#M?G&W(!JNjMJngzU&o9m5-s-re(e+UQyf7OEqe||43?~T5*NXT zpXBqoG)jkE=R1W(1xY2I6XiexJL-p#NO4%Oy&OH~x8=+d6TYtc)|-i)nw!0#qe zzu2Ns{&n0p*~&q3Y_s*f0udM+8!lBMwCrWt!|rs-uRiE~g!z=iuBl@z9w$EbFRFO} zG|7SCb36ixk~rGW^!r@WagOx+jE-3*^6N$~Tsb4g>%KHdXixn-i0?S;g!lUMm0I{Y zar)`m18VBXEeq^TO>kme-DCp)sj@Bx{KR=x+W2Is15(NKajpkN+P970-1`*xvC^-K zJk=3uDZ~RZ=TE<3=Kda{2rFr-oU>z>*!UjKlv3UHUR0NISZr%zbf;aG(wJaKzJin` zeJ63?!-%Z}^l2dUiQ}(%sZ6|dELj5Y_BJI`SOh*Y1$H2nF@Mz54Ae|Ap)7USFR2}` z$uUFoZCHf)c--^Yj)5#b7UxV`(upNVO3Ke^Zy9YR;2IMQt$UV_zZtZ?WWfyo9c}lK zmR2KZeaMaNJ{&~&+kV26;}IQN?(tiM>ip54h4+s0nuo?>fb3?kw*}{HkD#$f6kbP8 z+u~`=nPL`Es+^Z%`7?|d1<{UeG->2WxERXnCkRUaILX5%hoc?R9j z7g%g>4{YE`A0D|A*gBCU1NNn_vVz;`I(_yp1Z(xWrfbqeyUpR%sQifj#|01nPW|Rm ziTjHblb{Oz40`m(`a)N=DqFCh9V+aqzy9yH8gAMI`)Qj;+G0)P!Fv)MGmd&P1#q2jLD(E)Xd47qq?!S==R`6W5&NSHDxOD-hL?!qYV8-j> z8oT^zC&#d$4`FM2SHS12MS+Vdkl+CMj=Dz|so1ED>4Zh$0F`9Z2_c)bdQO&`^{|Bq9#)-=m>5mz{ z3iFN$*{li$q|~XoMbd4Di63%W0ne6{|92ZLr8?oavM9!BuIOL{)Q(9~*#}*D++!hr zW4|?pR#SmUXwsKM+YN-c^@!iu8A>oZ`>#vZbmyt*dV!{F6?8FED82h9p51OS3S=Qv zD6c=?+8jd=IXagOUn>Y9oZG4828DzQa^L*5aY*#YlCO7zNBoo9H~0-n@B1XSfe{5s zeY&0NNlhdnGSXdUCf*3W_;5J#P94jB!?~p~kv`lYwO% z*4kx%cF0Gwjd;6r;@j-{@Pi=tF=#0Id>~DET_nZ7SrH&1kOF?5}K&e z!`bFCEIo=#=J}zW&6`B_l$rIf{j z(nDes+TB|LF)S1_6E^7(b)t+gvAudLRT&mJS1Y-yvA|UDaFv;__Hr|%(b|!TC4f_ zjg@Zi6 zS9^^WcoFqdRvp^ZdjixTq+8o`g1nz=w&Plq**?8RsBZB@pxv%1UkPfBl23sVBh_xw za&l6XP6OZhSY7K4|5nBvr(zgO6WCWTJ|t3ckM+frQh>z=|JH@Q$BjPNOLdWQAgrmA zwiQ23^O8pKPbA2fj^~LQ2BCd;aS{_Q2pd3Cbb0eSz7sZPzqjV6Rc>o*k8)dxcYX}d zJe?d8b6Yt@lzV8Tnu&&wbh*)W=PlHvwV0NRe6OvIRP=s1+04cu21X``a{Kai5HZ6> zk^i4h3<#iP7uRPeW{BF%;aocVuY_d{^@@Q@lec>}A+*BmqF}c5i*x(HAp%5V~hyuTM*PSw0ZK$e$tajjt4 zff*Mwh~9>wQfix>gvADMD87R4BSSUI2W0W)B9!h;wWO?5*H{PYGVkCe;exS9+w(t# ztfvKjapSwVKzi-SvVfo<%v(iht))iL<&PxVduWaDaNyd(02V0rk^k6#+f4CxEB=n` zQ9$gxzP$8_ zagCXdMhE3|IQ+M)EazKT3GvSs2Nw1OSevo^AAMbqA3mO>bgNDi&66HTQRe2oBb>vs zUKux+mNSgOW>37^Ga1*t4FDe=9r~0)?E=)o7q{y5+<16-F)m-hw#vL#bVu7j1uQ{{ z6a$u@=2L}>9SnS^(%*Bs<;V(>;smtQ^1qtT6gD^o=`zaDC!X|q?};-vU5xyz+;Y+} zRUCbFJRefHh3MJKpJ~%kl;U6)_~5p+bqQ_Ei!dA2A}$V!?=Qwp#uY{x)%dp4tsA#a&`>Pq(1Tn)QyK}jt(xgq%Ln|#SMF}IXdCc z*2&ohP4@-Ua}hpz9kmZp|0)Cact``WeBECV_LFGu(mu5o$&=?~N=;+)rUVDy_a;G# zShZGiKAwqks9mUXTuiwSK}UdNH5IPnyU=xG`_h>)_OXOcX7p)4Q;?AfeQME2LDK#PjF?J{Qc55j$J~-%SgWJa* zkxKHLjSYSp1HfEK0dtUwuaul+RRlR>us^TTG{f*Mf}3ti{TrVY6?Zs9#L+5fHID8a zBM=P5XJh~{*XQr*T(%mJ`B=%>fpfu@F&^5OaMJ2LA{2Oy$vdq7md~r}kf=l-N>H5x zd`UTWB)oj>@SF&6!#UW|&%6#i4KE2(fo$k%kAlN0L>cc?B*0Y+ zJ7+t$%Bzg(@4g{YTdG7z9EBe(9Zb0+#G?75Rsr4)qsBwdN&R9r^a*q^F9fO9ayHK+ z1VK5FcgT~ih$Q`=2@%?=*T&`8PR}Ab4JW;}&q=d&RBs(bZ#~N1jW50r6#J*zBD{dT z85=XAU-|EzcM-fhbAdAm_A7Kiz(0A1s7;Y#-G){J0Y?0e1TS^>;Z0q*tTE_Yrk!fw}T z@8!_@7R>*Kveeg5rpijplLPq088zGog+&umtNl`YqmJ3j(s!9RG}I`mD1cA03jqSC%CZ@>)MU2!g!HBq7(}E_|7K`rQ;-l2K)JCGItaUzc8x0 zni1j2f))uAG(d7-%`R}j%n$LDj_MJS;TM9UQo+gWU|E&1W8h07RaI7+7qizhAAKq} zJxNr*tzOUN`o>0SUw_Jn@qhrovbe}u8dD5ri-FteskEsMmoBr3?LPaYDw=v`Oil7Y zq-Cv2$-sc}v31ew=C1$bKq2f#vYcIV<~*|U6Q^V`RbDny4Tgfj+~U%jGA3n8jcnZj ztz1~29F5LfMwW!kWoe(yp;TX3)7hr>dFA% z6s$#z_M=9JcDj(Qf3oX>pcmZ?WU%^kwtzy7O7R`BNyMy;q&N(6@%uJrI)LBfqyJXB z&KS+@$7$6tb0=fhgX5SBA}pH%(=0tqXfKOV*qJfH*}5VL$E9)F@gr#u*En#Fd$P;z ze3_b~xnk^V<=EF2x2zU2%Jhjhra~EcM#vA+b^T*sTe09IDgmEpyUB8gfTvd%w62a7 z>RFdrEuqmk1D)EPabv#9xTFcj(Hurr^`j$=be&&KauQSn8e{_kdPhe}NM3^nF06^< z>tx8bwX*Kj@}pqgHU~o97w3GS6iWEA?z^rF1BG1AHzF}VRwG=o=wr!EG!9cGL&lp4 zrVC1|@5pC6d=LfBtuK{W z%uTU()OkrO6}hF*hvh z>`dTzwe`VS0!bc%W-*cwe*Smq{hOKbSnN%->F0QMTU_))#g3p@{10@d%HQlhc+2A^ z8d||*&d7P$6&q<0e_BdC%RfUu^t@P}co@%FACs@&EG^1yFT>~inv&ZlxJ zgdb)BCIgFtR2|R31Pfj9Qe&BlT~Ira(AR2Z;>3pxlCqSV-j>e`+JJrfEM5cS=;zY^ zyr|v?n9lyWg~I-CNLr1`r;G}V(|wabqw@3KqjqJ*)1u2(1tQ7Mh=!y8hPKk6^Gr)& zvBdg&A0`yA$t%9GXwZ3rta=HJp0CzB)CEj@R95R41T}mM_oR$|M|V@47=5NC{B*AZ zq~M`w96I*9jGF%-^y

E$8)_w__we8(WGQ$@2BjZ8umLZvrYyl#o&cInO3P}CGH|M$~MN%`<-*@GxLWKY1}!< z|MW4>Du8uHwrpDu3|~7_PlRKI>Kx1q@0BVe+N#6xvc{{%25zLikx$bUEFvUr)LLtz z*QpffZ_Y~d__S*NUbmGhaCx zv#>g@oy13}Kw?b3DUYUsLW( zB;o2v(%DK>2BB>ZFOUsno=+m{Lxj|VfdjAH3rps}8ptgExT&2To4gupyR(ZLXLEpi zpHO|>v2W1k(BI6~9afxc;_B@**g{je(gZfa8o^12!SeBER5j&S6c#JYp{ z^}DC!`6v*gl6v-We$giqEA>=fVIJIrZoybJ`GqLyMG*+NS(IgH>A{{5dsirOw3Elz z*VZkJY5j0&H=QK))==pbjC7*V#5qKy-nU_fk1R*0-K9acC zdIJgJSh4z^6ShDCGeyNLA4WAy0Vv3j?^IuSAOe09@EjB%E6~|}xi1ZJREfVuB21!u zHPMq7!JKLkO(OS~uPI~bpcr=(^~GezgaR%GIO~Z%o;FVGoB%_Nd4OO#sjmy8CXEZw z%9FFfk?Cw<6f`k)v=)wW-$DVAtiy?7y}qsTf0|9C^inVd1qC}Hx9xB}P^f5O=v*ZU8|J}gaeL`W1ol6(^&(M7 zIINLO_2g3xL|kAc8>Ww2E^~@S(sbJW7N9)sfDyY%H;1e&>&={i@c>A6S~CAy32-Ve zCZI#vsbi8lDSibC-UR>q=h4l>vi4h|_giAQ#&Rm9-+#eS-ZGFcBl6h))hMQDI?lQz z^SiyTIN`GvqD`r7iXl3KQ^rCt*`2uk6KUDq=78_!ewmdPk$n?4ba~Ud{A+?7;MC)& zTI{RLu`cQ1_!#ztguulS^O2TEW;WC4u;sGs^o%jRklcL>Tr2o~Ik)b5g31epseMoU z+4dJXGf%Jr$-%UwdWzkPVE8MS4c1YG&7Hzl0oYgdzkOR&zT$!r1RVQ~ZSW{}X6J64 z&?~@=t(}~DZq~eNfl)3@Pf(CsJh8nY^~=4ET|Cxptw#%Lg%Vp|hQ~kmqga9zRsH|u zt-dW-05rK3s^!e50-En12{06oLQS8D@l;K>K0I6?*Gtw7pYOWW9N+?SpK!?pN3u>+r--h#17sQ>>Bh-s<1@mpKCZ0~DlNGZ#;v%)h>^(?I~QLawBCv6{PuYb1+C z2Qe6O`=IyydyQI0Rh%5u`Z|&QFC8r6vRd#OvIwxgz7o?t*Ma|853{(s)~M+IRL zfcZqZU^t%5(KJ@2;{E@TJF_i#9U@VM-0cu-uwipGEw?v`==r$bRMFZjazczrCRcs( z8LC!i{Z+g$b7s;c*)%AH|D{kf?FeW6-*6wnsc2@TL4%$92P}a_?-yGc?{o;Yqar=7 z=K^k_vueN%bzK<#+r;Yro0f@s<2sSZLzY5vb!usMcP^i@Vbfo+1D=~`l-aA4e0^eZ ziDSKlM&C1cng0Ouq{ylFRP_Al7WZ=Ai>Cn-CU3H?cU&XzL(eQaG>%=RvHli{ROA+E zw{Z&ZlKn3iV0*%MMUh_LM1^pHnBXtj5kn|A>%xfw&_G#B&GNq1LNgRV7!qx_Trho& z*G32*CbNQVoJtlkeO?(^pe-7Irn>sbsF{S~+cr-4+#3^9C(A%@?l{E!wp1re1I@Z+ zcUidbpFzH|BVApVo@=efP?*L5DyD(7vTy)bS1e{XN4k+QrT?aJd?{T4Z8K7LgMFqI z89-R~?2RLPQ5@lNCY3VuqkMdNYINQb{m^mL@Qsv8F2S-Gvl4!94i!rdDYw=n>H6BV{^7rb-OBLi});KTZl#{NiW?nl$DTk?BTmRqa)1K2xL9 ztf`%MFbVY00k(phG=}^iKi)oVWdqgY<$dWb^>_sfp<_A&g7oVlbFr77hWyjVWcrb> z8O`yPZP~t*sQ)@-;g5z%*6d-)Oe8j68M5vTU|OOF8_;w<03^2Q1sl@^hFU;ShLMy| ziK`jSv+P$%DukBX_)Qlz{pXKfA^>iRo7`I=q6skJ$6d0F%`;@!ueLpwuQuL=Q3L8G z$BgVGcE8U{XT3av#Q1#>8tALe zl}9?<%jWwqqlzIA>h|t}(nxWa`WF1_`a&zy1RE^?=Gj!K!ZY zPgmX5!EKSa0>Fn{dEfHp6*T2~EvRRh-}0mZc5=ao#nyj#o*TY(BYKe1tK$keB8!sf z(bzcYU0Y2K^#jluDTT!=)i*Le@9VxPd$5ZuRS%Z$qaI@l+fac#7oA^p_#wAM;2 z;=|4R&B}r9lo|#L1Dz%^a=E*ABV=@!rs9jQGkmW;AF7#|BL-rXW~BYdb3(jHyzEOr z+dQj$X~NewjN~1M6xChm{oZE;!_Ze^w@x?waEx~Moe_iR!yX(?(MJHD?LH6GlaKx2 zzSsd5@SnCMzZ_^wY){F|@~Qw&1sF{qqv1!>y#+LuHicXc{|_rkSqESx1--sLf!Ei! zpAko-47|RMkRSnvb)ZX0>OF8GgBmps&wo7OSWFESrb|lfMG>xPPbx^#6ftQSAfwCW zXfr`*!eKpEY$1wMzL(F}jGd(Ow6JM#Irj0+8ZBo_XL9}8f(nMa4vt@!tY6VXtSTjp z*XC*G~629`9WZ;L;;J> zVy~vt)$<NyK>Mf!~O z-1u345&Uc!eo6oheNQSg@QUAb!!L zAwpTD=%kJI{nv8;nHl%qdj+&!f7-<8NrLM~SlmT=wexdb&|LwFPJ2403cvVY{nEH}CTqZe9ElrOvus zJ>%XbM43Htt?Pfv)}P^L#$+Z+Fm9w!242w@Qz?#VO(rY`P@mGL59T8s((Siw$Ao|> zFJl>NFW|BTC;`Z(?HrCq;?FR`x3=HTiTF1Co)i%YUkeoLzqXdxQoSaXHSlK@bY~L^ zJF?frIB!5NJi5{6Jb-n@8eAEFHC$ z(xE0gJ`%;ny1#4)UizjvddiW?z;NNl`>@1-hM`PV^Z`dHAr(@2C!?dBVXTNRm>1Ie z=i;ttj{Hn0!+gK-wGI!>gt5;A*~!hf zP;fp;zWyhPV6=P@*%4O9g9qG)p7)@pEn8O%*xh5jP8*n!e>IIZ;t;nfb@<)-=>rdi z#Ru!Zq0*}{r9)WEzMnuLA&;Nc4>+KQCg&UF9Dhh_rr(L!3g0|3A}Zk{eHO`d7UWjTg0E;?3rGN zSqcj=z*AxhaMVq06hIl(Z0@hc-|qF@d1DyFm(nTKPe0bebv>6(zuVtLZNYmrveIh+ zW~;+%O@9r*D6jxE8cJUHA1FsY^ZsAN_iNGRafyJnMgY%$Wy!GhIbvX?tcf0$g;qMu zwMbFyK5#M6gkf6P$P$cnyAk-OBJg+E@VAjV52Ss%GR>l#FQ$)J7Zaww-kPtR|I30 zb<5XsEPu1|cF!H>yowPFTOmah+87n?omuC7d*l!Kc>7r7!U8qlZb1f_gnDnFj8t*` zMNy>7Yn{`1wKRA~?=@-$f}S1M@fx}V;07aPIcEvB9P0bNE-sPNWGBYwGJbKABK%oL zG+xSJ;^GEpwNJJW+CUkOziu7PszNcKdwoUfR-Zb_S8q; zEy6QFxj32pMB=T&Pibn?dbrG^^olig&O^FL8hfZ5Ylw2xw6+}P8Pn-LHX-9|stOKl?|1hjx=E4MOl(*?@LN!iGL$@=qe< z88LQWT3xGnp(Ie2GpxvwVyhm{O+&SxuY!*0jVrJWTMk@Vp#`+1G{El z41y++L4qfoBPF#b8A0j~)+JU7b4?E3w*gyHH-;t9GqEhmK45KB7 zx=suGlSA7|SmcTN8op`m1rugxT?JVyD7Ru0=BVhZ;@qCQa2mg~z){PD;4NW|O-&8Q zCYGA-vQKQG9E6vW$h?`9Od9L$uHvFPyppZGtwjKAKXlZ9KJZ7)5v*Xplv&)V7h6$q z9D5_iA6j-=II_xC-~VxGWM`GQO`>YSV#i&e<3xK&J)N57Eju?KMchn+Hf2ip+g7A7 zq(A4^ACI@9yC7hxf{mHd`0NQCRSffU3;s|oxkI2sax7c^9|jG;PE@xJ5yHqzSU#?5 zqaJ3Z?i;($6`!;HYiJzFW6xlcQ1PYw={*qkH-iC+h1aOyd#2ZB6O$?_Gc)pGlt!PX zk&5gvSrR;ly)1A}$~(BXAwbz!W6Lq{IeiVl^v)2+RN`+sj50snu9mxd?MHIf`dPyK zB_vFYj!oQgXoU+uO>i?%R4e+q>(%Ip-Q`__TJ(NQ?QtFkFWb6i6CrxQUtw`TLtXiH z)H4n5ouqu!74hMWC|kcltSSW;7p_>K7%8liqO86_*6LvR_QOG6bMcU52RneeE1`&N zEYA+j3b>CvX?JpP3sR*;h!0^BZ_CbP<~Y2R;5oCh4nfya&&LM!@E*)(Hj(_!cJ!pB z5rS`F$nvtI=?b6GG-%7VH>(b!;y{+_%7!c-;B=FNLSX`xyFGPyq+YdRuhq#PhF6eGRZl_ib@ud`1Qwg|`7Q<%kn1VX^uYee?jXqX zkA6RczfF}=4IpD7rOt+gddB6^gFQeAG{?}Jn>k+xA@`k@cbPYkWB;fr{QPhRV`C8S zB*Zp(WX`7P_uoFY!&S2d0PX>RetT4|t7j5Z#0^W`mPxw~f)Pv(gA|HFEkZ6R2y*jg zazlCv`&d&iF%3fjMHO*xe%?$`g2vS>709`K5&QdGVXxlX^c`rjYaA4j*NN>NG((9i#1c!(&)x5B(7H3-b^J4RDi!Badxa^|_c=?fIna1$!u{4Ym7e9HgwVN+oT%*c#`D+y0hsrSRwUQ*mo$!5%~iBnB>1 z_j$Wqf3x|nr{g3m_!{(oRK41~Vn9i#0zj3%!oQ+Qe*7i)bD?&Q7^+SiaPXl?`6=66 zWVIEFHJ@iI>o(iK3R)#(Gqkpa%8ug7VZNpQ_4O123)C|!;Xh0R^B!ghbaI;yaWInR z4t=6(!$xuDdS9uPDb>SUjrq6*U)AUsU}HBKhrV8w$*baT`&GfUuct*Nigv_MTr)Fi zY)^bFAy^~x`U9gi~67s zgUYfJfOP5a8_B{bGQEuDGfCpNDg3eYHXq?QHofiHjg368TU!~suVhI%eZvPV;W!^0 z`tOPrNV0-Y%C9NCqNp1Hu|V`(&?duq6n0ZII|-o@rNFZ=%LfQSL7MtU?)p1{Xl;9} zSTLSL?qjC?kL5JOU*{pSVuP)?q}Gm?9wNKTtkt!^A#NG^8P5d_wOU{jXk}$pz#Dum z2Na8dVG&=8N4({O&#$P9HHEn3P@$h6MsMCouUWU7a_clGeLAXx9<07gX-M0AR4br+ zw8UIRL}6ONb(~phc97v-+0Zc9hN#Dkfd!;b9k(E5G9Dzdi%UCa_Wm2{irfb?i#GPNS}3N>A!z}OCWm42iXk7QP;S= zJ(A~g%ISdL^5@Fv^v757n3Tv^|K4E8u}%YlxDuCICzfACvr^dga3-6vGOf;2u)d8S z2{H+6Fq@NQWgEKVaez95P|gP@*wBZra9GRSz@q3)I-X8lq<+2j(mB)0Ye1Kr7)WEW z^B_~%P}4jPE^_)s*`OMu^9|o|$5bg|g}D;|U?aU#IXTpawEuybx=q~DyYZQhhAQn- z$f=WJO_{1b=$LbT>;aScwd9o-2wd(JeSD3^4RXK~uR9>RGWZp;VFD$=D*!Z`8iARg z_Y@REL&-&aa0(n?;~H&A(eI&;@u07iqxlf%DNtR@SFi5E9E{afGcB7K--vzFX6KA0 znTl^8g}neq8F^K+!016YUGs!FJ$hol^G{u>GVaL!3rYWaZDNlT)8D+55IWM+K}{j| zHpIP#t%#6sP7;QOU*=s_b+TbfnyTaq-YZw>xp|O$3xw(M~^0&x#c7p#BpMEYg(#i$) zeZZ&O-7bA*)K)bj?D=I2lT+%JrukDpev|W+aJm@ZY|*!0%@VP6_>R4A#(w?{Ax{bt z$781{gg_6ozijqUzNBOsn&NjyXuC;@=0>j_KR}PxMVHXj9O5Lut`0cc7m$1ZCm}xU zUutQh-(#T}J!`Vrcvr>wQgH4n3dA|T1;;{e)cl$2$?&jO^aUO6byt7}@I^uH%}s!# z0_000abSpetb~B`F=tpw)ne)TNKae2)1J?%TeKiqSHz=((78KfZ8~(Pd|ZWxOK6ZX zJm9Qrx5c-Z5((!6sU<&U+a#T^V1^ydP%uE7PF@q5vR41giagAkIPF8_^~fG~Ko(A@ zcWi_1oVHCn>s7|{=Es3P1!%V^O&;PHwS+;l_fjqfHvlj7-^_LP@wKmB(n(rHukqA zcj~4HzIzdSQV+jFyHIn1e#q3M1;%alTiGG4Vu})TQcaC;;1gHJf&S-ia|i;c}G zHK~6eac8Sp}fPUhJ{oU*6dI9z78!|cmnW#P(C2!@bn8=z6Ej5KjmDREj zSy4k;mfz?GcluE1H>TCMuin}7>YX>cs&cP+Sr8?-(|zB3 z>TuEPE_k*>w0xmX4P+9bZXeV?B;n(SZca70aX7jmdrhr1h3w558OqZ<|5ZzUapP{q z{!?uwdH`+cV&auS#snco(u0#~|6aSEDsjr#KhV^7arqV+F$wEsySkavz}kU}x5Kw5 z74}9%DeE~k_D2qi7TVl0A*G@}<^({KSsd_HYEuBpa>t+mQi^UCx_z`xlwe#es@5N_ zoMp~hN=*KBQeSL`D`jkms+RTf;zweD{K(f+CScW3K*69km8+IpYu9gE$93(V;N-G4 z(s8`tSNZzpB_LlH$Jn|sngiC|NGDg-w!sEKaBd|6fMZ=f%88!>-j@7-Y`tT29)Gkp z9NV^SG-+ctw$<2nV;hZaHMZHGj2@g78A&~6&fNDf)~*LLO(0+MxS82**icd*M8Vt9fse3Zo! z)6H2JawDkCYl)nn-m>SNg2FBiji5Kxo$aLd4`mZcmi zn!lRjVh~m^6h$MeB1ZQomIXp{p~il{p(@OPXTJ2tHY9qpe$w8EvkyH{pIQZ$Hy~_d z{r=!fC=~%C|L=7TAMATZB3UkZ_%1q)&wgt<3COKhj-Cb!3YFSAxP?ZJ7=XvRYK5rlpvjwKT^cfWfps=Vl2rp}^a1ezAOZd8m;EBETes-By@Av?NfJ ze`TsRB5VI1Bj1ZyYf^C$zGtas36>vpMuYj)x^^K%bRG5Z^9&>`C!um~ek&%RS920~ zZhx9+4(z71e|*?&A3{$%$cUj+P$?d`X%^LT7H?rzBZBSi3b+|>4-mzg`KMVPWbgb? zboHdka6q;6Nd;j9BtM-)k0o#C@l^HPZdi+XnCX*~4(_>D&BOGIN5tY0@5`{KoGv{c zaT4zt?e4HVeV54~UVmYW2WSos?rRse?*mNse#ZOJ1`>>Vsg(L723qx5Gz>HxVkItu z=7tQt>?=s18*0vulz88=gc7H7K5w->IcF5og`?#bS)q{3FwtWp*3h=%u>*^CIwg9B zqu|01;`B;F^S^_3fS^C{a+20?K#UM+Hz@f7+bBOIX4TLsGA`nvFh&S!2_JUca66e4 zIbzDC=n4k;5egY4>o79Y*B^H)HaoIb{5T|3H{FO_F@<%_R@^y6m*Qm=3iFq=iIDs3 z!p*QW7pBU-dv(BUxR%&A)aWfNxM9VvHgCAi7&rV49^y}X&9N5)r>#IZE;})ZWO3oI zv8>ht^Ue3%_v<^$ZM_rB+3UT=lSUu`45w{y?AlZrZG*udhw;$uM zY~wz>N3N8|(cOP7UfpjVvoQ-`|A87&HTtK=7@|r^Mhd$>S2-BYBv#;Ku%ljatKuYG zkI9yB#)+UM(x{MrCKH+<{i68baoj;soQZRgCqd^YV-S?Ri>#;yu=mHDxIfuAu` zAYX#>Kb>diaQid=vGju>wyhG`{PW4!)b2E06K_p=?CT>}vd+1%Q(B&itf52%bN6PU zc&gu+lw_S*%yPKUfh@tN(?cX7?&`^W$*+#0ZeY^!*~NDAjp)X@8;9hZH~PQeo6@qW zmGM!~w>6=W!kg$TZ6RblU;>`)%ftekeKC#B1Fx~H?l;$!AfWA8y5wQ9mzVq+k*QeV zC=cOI z({jtO~4k9IiEY{7`jjg}Yw!uxKhXib=wl9HT4gfCBMVW^^vD@Z>)* z?zJ>e0=cZwXZR=sNmpOLcxxdoEBo(ody~g75P*@#eKKKVvf0g$3?Ee0Mz9H&#Z{;z zr2KOHkQGfM)YrZz^cDZNWhf6Au~BQd$zDy+v57w+Jtt4HOP%=^~b% zAH)sXcwj?C9Hn5;>&hhk_F_074n!F510#Tn=%2|!NO`>+z8OuVv?XaVixH%Jup~>-{W$tgY z^I^s==6*zWdejCklKE>8e}~Mn2q*K2928R2IPxXwjL4YB*-9OwQTrA7chl{uc6Ra_ z?=a zXub_zTpR|0Qw(no2TAJbN>tr{p~tK7n9vdx71ckS%o^WKPR8=O9+2YYVn=>sxbOTQ zE}?Gh(kpFH{Q90Nx-=cB;H z^a48+NwFeXjUHcsr238uXDhU4`FIj(m*Wm#<1d5-s(we&`O$&{kX*lv%nNB+Fp00R z!qFlcJ~;Wu3NjUZ5>{HndYOw#W${hqYzpY;+x$Tdm2(*n zGxhkpZg-9ot=m-I)CmoFq#?FwP@O7)Iwixbu38GNRhEXP&FL>lvy5Z=VUhCPz&fAQ zxPgP~qY<>Q;#1Hhso-a$Ar_Zjw;*W9os`{Rl(D_As3_4$m8dB!MCWkwT}SH?17W(4 z-NT4SN|I{%B#OR!AIO9al$DasB&DVoy{qAOwkQa|#W|6hfWY=u^^Hlni&gr&V{|1- z$YX22rvq0+5cqB$wj7BLj{m`dY1o5Tl>CHWuX*=DA9UPDHx^-G;b~?p&draKwQ)>5 zmhE7EA$Eg*7Vim z=Ql#{nv-ysI^Mv@OCQGy3@Rk!kgdRn#O=foJ*edQ7{V&^1^2+reAHmONHE+jXf;yt zVEq+0`QHkBNK>D7Im5^b{%-~=%4Nyf6&s~13ab_L)xb;i_r%d{U@4#EJpO?rtHtPt zgQle9i_d;RXLf&F`I?y6>k#6~qgaCBc)kGDTgU$pc;@&v;0?V@5>V=~M(lyrYBMu4 zC?7euTgUk&1ip^2mTlkElIjL2MR-ygdg>s$!ZVz zCJQ)lH}rRcoNT#}&3lI10SD^nMruLz_VvbooM75GiMbCqFr0#3l07^Ujg*op;BH3V zvFK(>4Pd#O3;hy%Nq%dylPb#wCWi`(Ai?O%2!LE+ zMDY+L$9QNt$fI)*Ir7I7Y^%Hb@YK}MxTo08pC>I1UZ}|m%)r+FWpmXke?m^hze67g zD+KlvGf6iu)Kj;vFwB!%>SG0nT0 zmk93H&Gk{3B969(b$z=DEvo`F)Y9ITqIon*aA<+LVH6LQixqzTUfDF<$RWT+(OtDC z0A_@%_AG%J;quF0qui_~=@c?6Fr?=lUri8ovvGobU~LMghUh*-CDM_eQ2Z(-XLoPm z`-tHwt@7|#L$F&XV*hgsr-Cl3SN#Wp@hg;~nQ5~vHuoo>EZqtQ%F+;QCOD4wH28`L zLgEwGAHQdxF|3Z~ZgU;tzOFQu;jSwi;sgp)X2uO60pfhZLU|oAueqqPZ@$FEYiOTs+C@3d~1P3p_vyMGvu+k#c zJZ`2GkO*~z@Vs*A3Al4A_p@qLwJ2{=t86;aEBC={JXy>~!boRb36e~pGFq(q(n9hTud2#2U}O8J zjz`;z;i7^OdOwG^)j7VR!?r}b%5^_PG`U==5_UJ?uEoZ(HAS<3N5gi`B9-B(0k-aAZ;0oiW*kcTPc((}^@UIUm+ZC;>{B^5Cg>QGl z+w0oq$4YK+YRhRs4=IxcF)){AGC?{=W2}v`Fvk7Vm|IhC2UcCVGn+7y$T+2JOQqCO zGJaS=5~jBzGJz$I{?K>D@aYs}qFB|xA!p<1ln?llSR_(Ke$`gA6?_0uyQ)wcdol1u z9z#UMeA~6%fCJB=fFCW~1XBsyM==PQ?1(u_DO{g5-UZ#MW?}};q?>TgF{y4m(b8rZ z4>fPno21Igvy+Bb0k0vkvOginD*Lg@X-pNhh6_9_oK14GlOviD1>#4d;&=W@wniJm zA1~^R)=Z%235_k+Yv!qUL*_qoV3Q_5Kb*4JZ?1T=;K*updLZ(kA@+-O8@+!C%tC^Zn=v>}6p5CUcp2KcC=jU)cqJt* z1l?l6puSqopy4C5G|bFHQEM{1?(N@|JEKm2X!^}lDzlI`p@p8$l-%Q7|K@t@?MMt% z^0lq@Q)>sQq=ZXmwJ{&GqTrLdam#}9}Op3c0$eMb%`eFd9q^zu{s_V})DBIib9a^|b zTi;6ygQ5y2nsEyQ0kK3tBq|7c7n76InaY;u%N+^oe%+!#+_V0<6_*(O~r@1 zVBR|HKy$;Fwipx-N$o)>1pX;8eCHZAo~Br>GByc}=m(QyqlTw4+HLx`Z8A8u zx8Hg$pOjQXp^2a2eO^xWa%3oYInnjOWb`FawnzqJm#DHSfXl#Wka^m}YA@WBsjR56 zI;-A=u_Nm*dK@NOBLN}+FCNJfU~uL!<)Hl>{EnG!Ah7s8FM)NCk` zQWBj@Q5{bDD|%WjzKlmOs5f6SBbJFfckG{l7m6FlwF}=F_lyZxB#z41^4^z_&>RzX zY9{*mcHI?W;2chQ%bWjdl<|X&at0&l$2pbF3~7jrGi2%^h2S ztRI7_B&qK7l{-1nso z(zwcRPiOzIch-sIAkt_fZcK#}{RK%iMemP39yrh=g3xPcYw3H}I!BjT~mvO?5m zF0eUpj(ziz=PN6x<7re0mSU$kogN7Wpc~_vr|{! zCAC+$RkKb+%wY#yQNV`57`|p*6F0bmm?#N1d69N!R9hBwo^vCV_fNUxGU=+PM&t7_ z8+&w;^0DWXw~f;MGJO_u+tDK?Y@s&niBNiyPXsLZea(Nx`=%LvfF*zd2T6tjr-P2W zYMUn2hKezUwVM@C->qVQ zSipNvi$fgQi&*sBn92_k7O(Wuv2txF-Gx)4^SD5ya&v=I?JACS<<0$0QR}&=Atwtf zIw9t7%$+Y5vkU@_`No~@=5=qX zrB*?-!nku;R2X1|p4awWX!!h_q2uE+iAe;5vgpP7gV_bir9-E>{oh^tph$*SKYJhm9X%2OOSF}1a+7D)`-YF56+BSjsV4q1 zya-#;0LxP9{cyTwx;#FN*lqs7z}iEJc+x|^&C=Gz&l-`3hbFeDtg{hQPmfQaB(-?r zaHud-ro@*49oA&Q#}|YnTDGLpE=Z_StUm@6s?ONEXgLy_{~71!cUcjGZC9PIFOZ*% zlHuT$euvJwgj%iKv32-yQGzOJ(h~aUUe6kRRh@y2^5Cm;FwC80pNTA5%s1 zcY$b-;C4|8m0XFSpVm?Y55x+arhm77=nOO6N3hn`pEcf3t_=L=GMQgn>ekujDdFrR z$to1ZG{~d*=oIsmN?*kB^pzm6|LEv^0ZUk3E80JqW5s2`4KekbKW>0_k$!v$F<*MY zqY$TcxWwh)^LS7r9Pf^3?&>ETOO_O}ZIU@hr|IPlEnD7@v#0pzNn<-#v-knPBouxRz!s;N$ppq)FcTWq||h1Tm;#uVμ zmuVh6k4Cs)8>c%Mcf!4N?m99cTFm`D<$5|>34@4E*wK;A(yHugkN7*JcOTJcw=;}& zE&LVzw-b{RXRU_hMd5~K2+W&8@Z)bHbg`$1&3T_mn3<84oxob|>D-%;!oBEZ;#i6Y z$+xZnbG4j_kx+hU!%nPqIy72E&4~>f9hH*7OA0Bv@RPYG>n-{0*g#uy@tGzlL;FjK zZ38)5*f6zbm5-HGz?ebbO8Nc@E>TWcp4N%jH_3s0RiQ=?%NN#`+mSCyTodV=h2l+vm~MVBhPF=AicKjTEBiZG!U@LYE^cX5+xmiahbYqAYz3xendqoLRR^y~tq zUK8@b#TdWx^k%V|S9nY1l=r|zwq5}%QiCr38D0p%p8XuHO0|J=0wKZNw~a;u=O6W9VDBK6Hv+$o3s35N(CT13r%-R8;TM ztBgpMqml(L8m2|3g~K6H=3cl+k(73Dt_Tp*?hFSsJ$~MG89 zNYW8YQX5wm5>A8Aa}{VqBog$R5Tp9)QgRFW^@9h#mW~gtTTdHy9>0qh;d@R*@*b;U zvM}{V-YpX*1LTEGx^Y@v*NZz@t}Nx)|(fL2)(B14$p1g@Z$^@mwB zqg=%i4y@j6V}W%E!|c`jB*;cqUS06LxSWXrf|+>(tN@z)k@Gmsvfr*{9CxxMWp;jY zd4AWQI-}-oF<&1ip@*|vKdAa1W18*6{HSrMF+M+EvbnD>veb*?b$^*QYcqbs2AZ}4q#x&fZMu7R=-GkH$4(^K@Z&9vGcNLFCB;LV~Hkn6orzwx7YjO z;qhJo|NB-)+;!e`kPe0`R}Jz5q;PPEgoEEz;U|^!eA{=i)H_G*A+xWAJE2k^MVrf& zrByp;{Kn_H7C}fmqsrQ#=00*r`y&)QnhS>AvSnA+8l4ws2!eg%amCn?A2Z!nzu71I zwjDsN9*%#p${6nM812=9A^+-qoA%voZy=Pqv3>1!pd#DT7vr_gi~YOYL{fI#XLk9% zfVysZvh&0tUL0YgljiYklI5zMU6Zs9-#fD?ajGuIrq9|{QMJOK?m-qTkiEVp!D5VQ8 z-Ckuv9}}-#0I9L~U%}X;kn`GlVgJ=JYp}!+IXswK`A3tK+2~`tvf7+%0+{rCLTeT& zO*;qZT$M6bDn`(mgRq*zIlYfWITPpb^70$m4a6o2>#zoVjjUh3eF z8k4%5RcdT@qVA09!&J3zT??DDSY^~KpW|L@y@O6vQ6uH##A-SKmL$1J2`5B>eyIZU%0gpeSa>h;*5ZYhZjqP9lDxlv)D;8rqWK+ojXr5Z;7ORPnPH&w||mX zMwN;wm09AWn3WvB^Bc?6sx_U58{Ff|q3dwoc!59_Y1}rr2?q*<0NGtx>}R#o!a}() z@N+KjP-VYxFwMfRLYtcvo-@Sl1Kw<)fbZFZ_!QP75BV+<{a6&Y+Zplg(g!R7dA@We zBFh^{(S|m#FqRWmPDXbHLcHPV{&QErRZ}9O1apF+S7NQ9Q#bpal@?i+ba1zSyJbUC zR}n#g0p2|KQ4!himMyvS4VIx+ZEk*^l$suuc>|mFrx1+G^F02~tI?+kl1>cUzCaL2 z(&{YYXsd(7;6{>J@z(8aECRYJF&!NOywej0`NJ@~jg&)2kd zz8%3dGRS5mKD~9AiWeuB@%vlTK}JnUUB(qzYHZ21l;$@PxkOJ)(kGFXm2+);N&Z&CF>Pdpl#=`Z#eiMru1CZA!?(q|j5Si2T1g$wR-sa@gij!Gs(EESFzs?0DtD?#5>uYCS9 zVD$n#_MTkdysGSZ8@8@ukO&3}Zk~u^RI8pdv+%Ni6@&UmdA#Tt%d+XYC6o^jQpx3@ z!EnV<69^_HKCNPoVr6B)Qlw|!<#oA%jVjbs$H-wdo)G4Zc*c}N$PXFQRSc@7RnIqkcO|7| z2$rQMzoAJ=RBmj@OQzcO_&Q*KCo;wPf3M2SFQAeK*?h8=J6>?mTEjnX_By z%cVOJ=x|dV{xrEVCMpabT7@9_bJ_%5Zp3O=5&eLh?QA&>Hw=RVe&b_>7`g47I9Y9l za9fl!b7nrtaW}ItlG`3x*(SBb#W^8T z7#53|W0MZ->Fw~l98y*;NMOz;)$`)hTC-^Ev55liNbnEK!JVRywReWZXG8ku0Tqer zmCw`*0@#f7^m!x;|NnT-e(XiCG73o+@0)R}mX?u-Gs@U}d?o^~QiD7l zqPFkXZ{z%0a3vm}Wr%aQNGNR!Jrz|H!L`f5lbS%1eP@F(BhjyI!r_U}8jQAS<5H8w za#o=v=WY%(XM~8U(THAGP4yRh9H+aK?9={>$p}dA@B+b8cm3ZGJq$CQ@#S%!%XfdQ z#p}XYC;1CG4@po!v{LaGT~K~diHOGAc3m;`3qD?{ZtMyF+oGi(4 zOcg-UZRs|Ef}rZp1cLENIS+!k{~T2)@y{WXJ84dwr0OI!<+L#Hc}`GxN7?h;6pjan zCo2xO^8<>GyH3KS37@r>pE$>dzHaqM0BGL3BwBg9nKNf<@JE}6#dFeq_A8V2_us!u zx1ZA9>xCB)zd)Rqz9dgTYCsCe1I`@vST2XSYo|W@YPbYW|La(bWhihpq76*w5zYfwF zG-Fg2g-~I-3%R~)lO&~jb-+Sic15nOt=TU2Vk6jr1qTNYYuA8${FW1i>-lY&TKP&? zg+30$2#;lK4qcMizLjM~U$8{1;0qv`jMPAzZ)!B)7l5C-^8lwZE&9D2l5p|a!i7)A zHs&_#=NX2*w-2V;mlO!;{#uYjcKr0*MY@{X3L2fxe6*Y5bQC+a-4{Yvh96`^0xdtU zoguuqu{snXWD>MK<-CD=b#(mFWNN7OOQVR43JC=Vs43#$3NXe8K&5qT0 zg4KwLlhJcjE#92~00k>mE6O$iV7pzscmvdMfIvGHDtYx)Lp!7BWRF#o^!zbk{*rXY zI8o^uzWn6sA=u1FZlNUh;(RQ!q~G{H&rsB=QGw7*NYX#*BXW`fkh6Pp5!`b?z>cS} zLmyg2r@HHa1l}@h1%V8HtIJLV(ZL@a8l`8MG4Fm(El7jSYk1j5{L=F=mGFPK09sX4 z6jVEt9R!&cagkn}D^G)tNmAkwW2Xw6YhVd-kXZ*BIHvO{oGKrlu7})f&&Nuw5G8t| z?`@?A4xuyM?oP4RxQ7DH_Gq48+RZCgZ#z}m#ES&~S42RqIk>e+o=y5LB0;fSS?1m2 z{V|8#{Q4TVhUab+xF+;Fw%LTXseq%3O}l%HzFgE?E}`=r%W>v6@k--TkG?2cjoe?u zZRYl^aoO<@(uu9B7S*eI0U2+{eIRN#biZKSF4)u{Q?T1kc7=Rzgj(MFdYoDNlOTFt612d55(?vv}t ztB0gdE{5hkqxw#?m1RTWZP;?vVQ*)3(!#w0Ss0`y+Pq#CI-Y3~k<#5Re^lLWk}*oh zRu>mYNNo`KA1`&+YOQfkb)B1!pPl}~Z6xH~LQz6Zq`ZWG>vMUSSY0R+6AatU5YOsV zg4=U5nwPlu{}Id+Qo9QEv zs}^cpdV&bS^75w<$E;ERZi?A*u^;90*4>vU)I3F_o`*Aq#|niD=Ofq$MO`dg)6-ER=N^pG(DD#; zHrFC{BDe)_rI)csi9>atWZ|Xoy{5}Bml~$R7k$$LdfBkEUm9>@7$d+bCHOk?U{hq+ z4Hj_7yDUe$^%gM5Xt@B|`?cLdCk!ONUf+Asj$;he6|BRYLB)SBVM0L&lW8!y8Al=n zrhbOnj7WLlR#t(KMR`QYN+U@IRZl2!C>2`^Xf#y%TfW_0^}n{ucrT)4F_P^{vgi5BJ@`)>aQ4AF&FXbTRYzpV)~?_2Ai|GE`(li zUPoK~22B}?>_jE@Nk4Ri55qV!IU{mW)}aowRTPxF0IGE1b%G%OEYf#zez)x5lb31z zcHf|Bp*hFWw*6LHkXt6OGI-z#d8axJS7M$Jv*oO+mDdMD{iBOTYnfk|>PNHTu1FgF zl^s;!CLPM!trwG|5-Zp3PC}#+y7>!K`%7MWs$z48yU3)6#R+kC1~o6>%s6pdp3MOH zdu~eUd71(=^=v%YNDffs3a5gKGF?Yl!}Z7u*EHYBze4PI7oyvJh}qy@h>{hw?3Bu& zjh>mGP?~x^v@%5~xk9emPqZA;0$4kDVsge@DO}!%lpy!2)&vNYqt{Pdd<5CbwHo<5 z4Z9fS;MevAtx)uY9Cu7R9aecbxwA@}?)B3*cp;4Ixq*6?10xh?b7|cJUzmBm&*XJnRx(Z9ZA4l!*@MaSmAecYMb8Jd#uXH=_ zW1Rg;Zc^o7^d3N2{PSdifGXno=Jxyj5)>D-tgl#aL4E&lw^=-5aGOy!$4Ih1{Pr^ ziXY6h1E;%#xpTWcdSmogJ4XbinR_*>f!JkbwG*~OR=b1FE!E|^_-z&rAzuw1Mcx_aKL?->#zzgf z&}{Zyp1*-wBmktSPC0yJJKm7j^&DbZh-~h&#PQ|@NTL+SU?C;R3c-vIy=EDl4>N+6 zJJz786$B1hJ_|KHV@Z)^!fIsDg9b%E(M0Z1l}%+y90V^q1?ZGhEGGHXS#IEbkeS-{ z>vHjS`r5TpN`}X+W9_B0m}R13ptN3Qaev?epS_>v z!yejsR6p5P$BBzeqfGi{Y#fwrFuR`q=kTw#QrZ6kO0?a*OVFuz<)xaghB#u8rJYL< zFWzacM`_Z9;)4IQCVt13FNVs2iq~ z%rL*JA1ovotXtK3D>Aa(BNROK-WKxVWYC`=ZXY<;y-FWs`8R7$ri@Q`l|Ixn zB_%XTIW1m3qCvSmsMd0?f*`>D8xpC4kT%&bS3~gUQXG>yPoPcMSigE`6A=kX7aJ^$ z_J)c@E}dO9I3SVF^22H^Y6-19JR?j)`@%8j=N~*>lM^+!F(96qC|f)69m)RuL4HzT z@ge9SyBZVuJWQMb{sKE?FF!;%rkVv}E)V0^LQZDiUI2<^#eg*>IRFVu`3vM5JxG?^ z;;Z+LeH&_?x==B{Y1)eG&vL!h8lPtHkr}+_lMeI3Ay~W-|4xTjD1{H(~N{H-yGOH%n9uvUYC-f-hD;X+upyt7cK>fA4hFD&BSf-IB6l8 z$gBHKBs;+=3I!Xm=F}gOnN}=Wdb*a{eGPGxw$yIHUL~Ny1a5>4A^I6FR-Y?*9|Nfq z9~o==GQvadKfg}aYu~zkRVKw^(g}KgR^8s( z_53dt4|}IFpe)m5Q@!Vzxy=8PrVecdKj0G3Lkuug%~fn!y=L*FiBSzU_sa^*ASPZ1??@bdZ4p~a}U zYVd@6ao$fmy8IXmK6mA*3gbEOsvFzx2RAWs^FGrU3E#^Kf$E6OqCB2eaqny?-(%4w z;=|L5*ts*HudMI6{MCaZx_6W3#;*Ut6=;zsSa|t#hcEuH>A6{?XxjV@G{Rq>e_^*! zFw4Wu{xYkk7X9=H>QE*7ur8uub__U>SK0*Ul|2eqqE zp2Ak86_#Pt52F*_B*zbJd@%D$9CM$Q(neJ6yl5alWIrFbDwRs8mVbBide_{{H9es^wgW>m8ke;_{!Ztc)Y?k7tSW6XT z0V|xk+Nqz~c}>S!ju~-OwV5X2WBM?r>Pg~P{+qa4z_Bi_aDK-r1Ce=gP8b%_^s~5u zgBQW8idG0+wfyMdr!$A$`%+p$Hugu$lz&Zbs79SiIq4okPk7P@GPsL$0#`2WRh_rr z4&+rlJb2>$&b(R*aMIQR7#+Y`hV$}$dx3vWjAi&8XNt8$kp~E2fD_AsI8ylB6IJh6 z@6d-JUyY2@++pRXWF`!h`i#273^R%nay7sI)Je?UjJ)~8q%@xoT9k$_scD94rqR0D zzPh)ZH6pXnk~Vd&?LG9Qc(>qcCQGdO3^p(w&Y70tS;e-?#1@@IRPrcjXe=F`?jVI? zgK}HzS;;19R?X7U;ulaSmnT}(*0z2g<EL+jmzP_8kF)_^M2WV7NF_K(q3g!EE zH{Ol;STWd}s&f*{IK|&7q@X(_r#d1+53>EGsrMiVL%>MNY?aQw64HnTNx{kjW)QjH zJ(*nQ-RR%fk;6GQUyR7g7AIe)b4TM}TUtx1NCN-U>Ylip%!+|2n$LCWWQAMh$*bk& zlfhIh_u0T_AT6K@7CvwkCd-K|m)2*?2-KH@S>6 z20I*9O@ncU@1&WTsf*;zMu*j%p(=x)wc^4OFI_=-bsA_XBrVWrayc4-<)P%B`45++ z0}w)GGK>bf2zuwb?bof5UvM4Vt__9WLeXr@ya6ByWp4q&JqycgC&D%b=6p zE~=CZ>xM{>%1<2cG^)78uLi#}Zwk-g|3BSpmb3RaShAsI{`&^gJYcuqQv-10pg1nN zSm4qgPi%R-+8N;Oyj?`=R9<#=>H~E3E**`2rJngr^d4E~UtZD=@)7%n$6y^AsHjXK zDF6_|j8^nGSiMqF-*b3{S+T|%n%iMSydi5&S;f6Y7miT z)rM0G2D>a3LqkY%&x{_=_T3*vo#mim5;@8b2eS6k$>oug1i`@;>ydCN|JOFvw*Gy# z{KDaKk@8>MLV1r{c@sOOf8!QZJctRF0*lec*>TIRigs~w1@L5vbgyRtIr<*C1*vAM znHhY#6j_Bb2J~v>Z=I`YOn)%N$H;+G#Yb{3% z3`Fa-{Xt0hAG;0&O@C{AP*XLWXsD12y-lDB*^GHOGN(;-VACoXiw@}gZ0_pG!cGZ# zXk6&bg;+d>=tuzz@J2gF{Y*|dr3|xmGJM%woy=n-a~RS7Jd1cBu|-PpFnphI20LY}j!=Jvk&k|3$;WB#7Zt+lfAuTE`vbg+^193v)>S z5cs@FE!uG%evng>VGefFhSweFfcGAyn&G? zU_rM!ca%&9Cn9oYTI4aPy2OjL93>Gm0u&#cQhXkMkX=TG))`HCNqilPoHYP;Tm}}A zyr9_1&AKn0=kl} z+`8%yMN>%LIo3-xpswv-+Je9WZoPY>|LJq8pgQo3JyX!{2?YRqrgxj9dig*zNrviheDRHF3R71x@9c!SAM`#|?E= zId-VsfHRi$GQM9-+AsTpf`Vxw7_h&WqC4OGNpW>ANDUM?$bo>v`CQWzD16aPr{XJ= zT3O$7P~gr0Yy!>Nn>YB*o_?o^Km&J{;5dtUevY?wVdWMP@6D;y6`0dP6r52AAJ5?z0-cxnGrzv$qyTKK&!1Yc{TP|B{y<^UWg$s6B)Bkp)YE%0 z|NHj#D1kZuiRDNc%o#_!%Ztl4?JH?j^lUf9a2B>O?)1e?-}yZ`D<_nL+8EH4YFHrz zu%MZuB03WTdn2$HA-}q`wmKbI`LGbl>f@L^o?A(v7@LqAVNzZC|Aj6kHb^Ay@^8PC#UCBWR04Bg|9zGtCot#fV(_u=(K*`}@CW)n9~a8AWc`qU zo#n&q2Jv4nth9iMq(d4&7FY#5xhcV%R|&r+ZGtBfdM z#sv~R2s8WrcBV22%K>-&BXN}F>!+b|)t?=8tbZJt02Gdbx;7%LPMvY5M(yCcQ2He$ z7s2fGI6fH2k;yrHR;zm<+%POszkVF_{D~0$P|-GQ7g;2?jxOC}-Pqt0OHcGU)B4-x z!(6=_JIt@ce{XyJ{uDdJpiqDH^vD-X1zH|D-H9rCsQTw_-@=&v6S)0@S6IXcaxVU= zsav*Ze-IxUy3at05?yC>(($DfO0&$CnIW-Xx|P-cl|oQc=BJ}mdxOq|WVk<_jCTb3 zpmpa z8$yf;2)I#eorg*6@0W6LpdLSEptE|Sc#G)lr>&} zBy>Y$pytS>u6Y$&1&TrI21#2uL2RaxKcmaUpfNyE z#fs3jM_j=?2TgXL;V`rs{L010%7nO z;h(SSmZW^YKSiqVZ`=nXE$gM^ioz6w`#&gz7K0^)53vlIBT9`W6=1bOV8r-&Lz_() z`873Hg}=6Y#F;=xty}oa2&gXTPe6nq^wGg2-~oC^U2++omcEl4YMz2H{`YJs&F@vR z;RBE7tA$&Tr@B#VW(n$lQPWTF7UIBme6#dVFeIqCx9(`*I!QS(n}-v9^N)fW#uS|h zImASYqDndpXoieme%CjbU}!1&$qgiz8Gs&UJSKsd&@=uSVCHVrxhuuQ$s+iWJIo-L$Yk{D<^otUUS(D6LP4hlquQ{8?>>sko1Z0ze#K`~D66XUzxeMI5 zAY!5&{FReM+(b#=>27=dkgGr&7ng}L7vBhwo&jq9^VV&CZm#}x&31T{44AvSyM&Yb zJ1~Xo2hbcw*c$V@APoimBunA6?*kZ=iRm|DqRy-p7BGM}A3u!!&l$+PTV<+i;9>8( zk?Mn?fgU5?#!~{Pzz*%Q5B`JQ8UH7U1LPzC54!I`6SbIAs4t=ec2T6h>z}J)|5C$} ztD;t&Ol3)P-~L@sp@J}>>2Vm~nx|;IY3$5n-?KN?Fk-Z9ym#NMAA}0j{V=Qcx=epB zX;5?9Jf*(;FafNPQwqIFH)Q=VboDajmhDyx@gzgL@YbV1i?PpP3KiecG@B}VEE*O8 z3hb8QV!Z)(k(e$;c8C$~iWajb)%ofXJpLkBC@+>lxz7S1@#=bzZLB;--{R^kuG-W5 z;`>kYbKX5cj&rNsKan4CfX_ba^Sip_-ejpJB6k-LgIyxP+gMFiq-=j$SCVSr$;)i>WJjnR>D&Z#dGo zGa+ns{Zhz7&5i$to#V|}vTte5=j?+CR8HKitqa+ywmF1tF1Q_%H7|N;rT?P$FBlBaqeFcu=ixWaOOdU0`V`saN^&{uL?=d!lvwK$TYMaomcDMWLH?_-riJ;P(yLuOFzYQG13s7`8Z(-T-N70sjrt8wVe!oH0&8cbY3yyC} z4Jzo@4Q@Zh_t^&G<^|foRQKR{Gqk&>%E;w&;o#bW-)4WFF8XZ1{*Ldp%>ttbn@rz7 znA^nUw^n|d|A7y2B2xomXH9Q^`gpn0M~~F@qwgfA_ojb)@A&S^%b;(-vXke1dSf^^ zK}ckR(#NH;IoBaQghZAX8{7}_{HWcL@k%B0>sm&})&D%uL;jdz1aLC{7s2H^UEOHskW!G`7U zV(Of2mCEWW^d}khndRJQ03J|~xiBPc()8)(d&JMKhR)Oof@W%ztA1C0goQA)wt)r$ zA1Juz?tKJWx&&^HK&*puBrbxyv}pT$@$--*k7`K53(%nDg`3**G@)4!#gImdEnlMG z78yD7a@JNU9=5|BZ3nv{wFHVSj7t)JsW31weD`#53<3IqO`Wm*aO1IKZqpZS+xAV? zQQ(u1kPzE*pUN;)$AcR}p!Rx)T0mqZC-C6uNlh97W^G543}^T(6Xb2h?q^^hRgcMR zHm|O(?z$~oOcskA$;is`%FoUH>$v)=)S^X;fK3GU>phibxNK8;P_}zz3rnNJfmE~E z$D?(o1!;C%yq1-n9bdBhZurj{JFycIf&Fay(;zW~5?wP6JWyJ2F(amGZ(VLp%^%)e b_teo#A$ozE$1_6VotDnm{r-UW|3c5md diff --git a/layouts/community/ergodox/algernon/images/heatmap.png b/layouts/community/ergodox/algernon/images/heatmap.png deleted file mode 100644 index 4f55c5adff5703a3b61ac5198694375ad49a405b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 139351 zcmaI7bzGER*F8)LNJz^d4Ff13Fo1w`4&B{2l$3OrG$TW&BHb+|Ddk8>Nh2vB-QBzw z-{-!c_ql)dmmm1xb*^ilefC~!?RDU4Dzf-E&u~ysQ1IpDq%}}bFd!%>sKwZrz;8?q z19DJM=uqUPCA7Ruc8ni+Y4!XLFsD4nAdY-zL?u zE-NcGJUrZ85Q+1BXeg#B?#s8%|NT4vwcdLj25}=r1w};(cF6BA$s8S(1mzF^r?~w4 z{UqoZ8AIYh_H6(D#s410>|1OuVySCOq*d?#bzPKNq?zykaRdH&Zct}1@E0KV1lX~~ z|GGo}TDXHc289u_cYxoKQbmP!eZJpwwma*5wxj>|*<1aJk381Pr&Fd_mtt)HvDe|O zXiCdg1BoIew-XHsro7Du8pUFlW8uPJ}DQb zEKNyd1`g*_2pg2QBc!vx>yD=U)8ZtChxfA1%4AC^zp3Pze2$Mf#`9v5uwiVl-vki!0YkucU8{(VhV@P*wr|XbI1O$D==hh<{ z`Sq(aSeCJ%oaSS-#L@3rgZKn80%~dz5a^ROW8xI+?{K3MHgtkk{V8ffnYdt872y$Yj*p1EnuD zHN=jshnQa-W-)bjbsL-TDu490oWWnneyMd+C_w~= zkp6w;74Xu&@V~bLB!Cf~`y?9&?!0th&u;4S$rCjxMP_B>*X5V$CmW+PpUD}YJ27&Y z%tUqQwnPY6Lio48IePZI3Ex0b>nVMI_ zoy(X?uE4%vuyvcXnAlyrFQLGpJc86^68u39ue!B7ld|rku3R@+dVehPX!()Ts&#mB%mlP9zr>qSGN*p5|Le}r8)ZVidx^eMW3*Fy|V zbX0jVq8sKttUZyyXB*zNR%GgNeire4y4KcWc_z>P=y#5BC)hn3o!Z#{<8g(2GcB7= zc}JmgxnXtJv_WTaN}#KjZ8!^Hk-&{;BKU-QzW#&wUn- zV9aXXoTF!K>2K*fC1&f{w?D+hRL;?rzKV}k^Nx3GEdL+nn2r{x8CLEZUxy|aax(rqQ`C8G)Qr1x6;Ir3{lTMmZt=uszf+k0A2IW9%lyx!yI z&t44!6Yr^!xHBRKMn><>&+c9SKGH!sA5bP{21LUvjL!wkw5&JCG#o0zG zanXaK>z=6jJi&J#b{0%WBhG7TqOl&T`aWQ@xN>soo+f0+e{zcFO;QiMlj;8H0qH^% zZfcgag98Wk&w&AoG3LO>A|mKvV9bdbC9(LIRckoAlQVd$y=4JBV>4c}?w(e%2xKGA z-=XW$658cFZ;jgzpIHCwZQupvxZT+;u;f4^atm!Oo~}xoP0uGK5OVf-y4)dZY7$TI zc0PV|BCL2BeL&?;kl=WWr>V#y;60#Y4jolasz%aP$Wc8JiuiSaZ&DVA%-;T;#`?0V zo3%04DXc?I@$ZCQ^uUchHln$Oji@1E#T2U+d!cnl;J;4;o+U={(AQRd11v&qae+BP zw4jtNlw4a2(pM66U-tMsmvvljuv2HGh~U4bT#~KfL|GTq&z|8x0_FlYNZ(1f$*jOG zuJ07-;Sy8zF3m-%>Z1CF7 zQr?D`@u;iE>FhJEP!HX+b_S=e6|UOV-*yJ8@gO*VfV95@ zeSI6<-~MXyH}7`CJ08dWYWHVQ_>KHn1Fi)ay14AybFx4Q|FiyDrOa7Q zspS!)CIx{slRP5BP&QZ(?Sws#StJ^cyD;Ik3k1MQotlHn@0t6nOE)|c9xNr(J2E^B z=4bJs8jYUteZBB6?pUu(aA~P~nXG-{K;TCd@M{R@=fFpvUp(`U>w@81&6s(gr$0Y{ zR2z)&Es9r3lM}$=`&;D`vx4+Oc5BME{0WR z?kpLUmN(SVVg3>02pV+i8?VNNSY0tY^Y?hnqf0R=4m5AKFAtN(gODs9^Udx_e^>(A zLm(5J`XTl8uRM09=`-)uj8j>C!zU~OU|2^Ul;Z=%|KVOD2?H1Gi7N;`{=M+TF*dMk zD#}%VqHbiGh-K}2w*muM$rvmxy@>%*u>H~0Ff~LyfRb>d=Lf}@2eFi~(FFq}cSTHG zQIR@0L?DWwO~Km|FD45=BsnZJMg&F#y?lop+?Y}~aK_!;9dvRvz&GU_k_k^FXM|iN zpl%llp&^iFLc!!1Kwri==Ac{Ky2j2tsYMjHm%40XytqE??MJ4XT^L{E_H57uO{>ntToc_V`xQntf&I~mP zT@a6}<5Hz>s#~@SFbfu1sqv=RFBbFkRI~1!Pel)~?(R+l8ZSA+7QF_OL6R^dk+V`G z+}QkdF-De)7S6IP*0IsMcA$nJwKeWyA+!3 zugk4A?x?diC4SxDW*iDmB_j!GWRWv~#igR&&#u5vQ4o$G8iUHxrIY%n%x%4SFAl3h>Eec8-oRhGlZweq4Qyvbw5tJif75jpN@| zgT<$k?@D&u>tESe3JMz=OU-N_EtNX};ID9#54QVI1zw7q?f$NxqezBG4?U;%gu;gx z24W++XSUluR+?X*?E*X7a(~o;?rBZeejr>a+ZOXTYUrS5C5axwVKR%szh2<<>=)Vd zjChdo!8sT*WORjP1m%c`nElq;D_27T005&=zKzX~9mCs;bytIFFTZe+bSYlY-KOiq z4mfZo-(WrDw_y-DMiLX`o$(x+P=xcy1P`=pa5t^ih11O)-^u6Rn2X!JBk9tV!SCEH zbUx7JuXmpd%ORc-uIl~uTT=&zmyOgHdQo?GvT+3L*b4G zA-#%XA!PTWgHe?7>u+o3h@jK z|5z*{*1BysHXoy8E~*r_s{8W2wJUJs#6z&>l+Dg77qRa@!+F;x2`48{_5V`0Q)5J2 zRn`=IH7WUX^be|qu`(Cemv|H18GTaHa#<^@!tR6WCjcV~3X*-_xZBit<^tV(h9-E^ zMltC%v0L%hA<-3@>|#wS;yZuVE9Q$e-#nB-ZZvsK;w<+E9o<#wo+<>Ufu9LnO0Q6N>K|( zRhFmJ%+}n-#zx#gLIeYivSc$XV%s)D8^H(b1*jMZ4_l4etOUVRT0)x1h`CAO9vPL+ z#8b~?oEnyr^{u{Ucp-#JzY-zTH@M*$7ypf*S@25l+X<_K=f(vZ`{!@un3$h7Q9rOl zIArX@R}O3ln=3cYNB|}kI>h`(MMFI~Qj=WgPvsY+=xgp(eHdXbC&Q7qmUhwTB08LZ zeXEXGa;jxh7zF>tvTT-tW(LNb#cZX^#)C^Nl+s?h^VQb~9E^Dl=r<8qJvAcTK^F@% z`@KwSX0scT*FLN{ODv_Mgx95#HP?ccQ!5%A?VmmFLjk8h6i@nsjKlcQm^h$!_?m;p z=c$f|Nm|{7Nc4HMuxG+H%c7)=Gup1{xK_wk4IYN_Y~=gLpG#nlK_VqE<`5)ZiMgev z@h>kTVGlY_<8J^gd9jI2W8E33`*`NEhB1+cI3)0kek@)Ps-!p#98x@7Y$Auqw7NmZ z@U8lO=HZ<`-2Zn_W0%PsX7QIw(tep-k9!|GTJg_X4PMOmqUD`}z{6#Y+(_ibB8}-> zt+2+2=Rmo%C(bKgWvyJ8d;b@=>a@=zNfyS-OB&+GKkCe3F#E~*=*D&+tqvU;{uO`| zB=TQWgoxClkaSjW#cof=vXxDzvzA#(i23cO>Bu_XeKDVQHSPzn&A0JI-xS#4Cr#d{ z-i^nc9i85S%Z>rzjghg{F8;hV3FkQ_B{k_S5j95%*6?_$V@6ojHv(L{y=cA{CV4bZ z4J`m2X*uY*^Gwxq`5^d=6X==Y2XokJL5Ae`r7GdqyDv4cctcfnGu6>JPDMQ6c(8NS z3jw?Td!#xXFGwN;5QyqjwSbyE^{x%gJns*P`T)wAygOX2yZhMiAI z3v!5*N#>icQ{)75FLzyf}-QxPNIPx%Z#=B@{btZh~t(8O0MuZW2WE|jYBzLvGi-Qr|Dh=ZL&OKG2j|MR_snd4&__zdaxO6r*KPnKke!iUq9_N<0oR# z7SH|ewZLC^H1 zHauzjqw>_$iLqSmIF&w21!GX0P%{5>dOt7T^S(OIB0eLMD;<-$zab%i@-DQxgc`r` zwVI5kBBJ}s<@5aYa{zvF@ws-a{@9O7CHB5EZ$5{rdP8^r{?elrda76u<9=-TAw+B- zV(?4liNyow?6x{{W4D6m@U5291B{xh1AA^04E32bG5Rq5zJx?H)g^F5i?`r!jb?ld zzTcDA4Y7=Te|YNZ8%6}MYYT6ldmN7>A>~xAA5qNsR+~+lp1Am&jhf5J-#`&e@&LXY8^IWJ`Z4zjD_1|eiFEVX8#>aCxgvNT^CZ(P{- zu?{hVb?yB;TGcYm3j4@Yu>bSJYAG>X!o`xL(86uxwVpwY&N%;d8+uS_DQMM#vnYiP zJo@T~ldS-IMT?6$0rX2L>vBBFIf`*=ON&q!&0wMdpx+SP2=~Cn+I?(E>f4--O-f!V zTK#hx^tEI)vx&E(u0Bbor3rQYuoh(=2y_)USA44giz{bC*4vz{7CD`yYNrvOJ!UVT zSJRA-9`mK?9(C{G#W7QOsT9*5{G~pkdH1kur%bNxl*Fq1#$av18W4G?9@{ejlFR!K z4^iz7GOy)&GpF;3+wDhgEo<(SuR8$VzR_oVsFT+UOI)Yz=+gInJF-=Cq?h)wsY}gF zLTEe*`PRKoCud(f8_8i(jsZB*H%+)rQIc)GW5M_Zj+YI7Bx|E1b%Qwo-0 zV`Ys80eXeF?QcBnFv@}}2Rl1SJ3Ep09x~=n{_MNI{Y0Oj^ToQacN&v(*!5&(yj2bR zHvc%fp`I9zvW`%yhQoYg6c2k|5xP8e;PRm(2publ0V4NanK+B#?I@emQw~zkNj=jK zbr;4?=Pl%gRx!8DvY>|oy2Hc_oo)`fWhM6xu~C2-2_4c-$5P?G=}`DQdk=2ynIn*G z=o9#QO@qj|6Al-Ocw46ez!;s;H%3Bttn9n3bhhQ887q291}8L;N2)lC5Z>U7S5^RF zz$6S3`iN{ac6!=pBLwmNt#aePCyH?)97FVE%sVk$m^cJuPU+_j_0<*gTYJ`!l0$5z ztP>{ua=8zMU`$8cr6xuIylmJL2Z{6*F2PKK$aeGmw)_3>&s4@& zuB@RZM$9CAlKaUo4SZNe`BVI-6mO|a_KaY`<60i3Dedy4bE)5k-rV2a;+&@`fHC_} zX@o^J`oZCG4DAj@CL z(cc;bM_CbxByM%=`1-!SY@^3V*+q^x-)Qs+OZ&}!;-JpmCppMx&{> zr?HiD(`~F1G4F^2#Y#L<9(Gh)=`}Q`EL77qZeoJ`bNtJ04_#AK9i^q z#X}r>t`FS(C-Du4_JkI%fj~y$7t`Dae*(odj|SwJH2cGYM5gkZ3NXDd1ILu;^FO!T z2tWmgf{U(2P8=V?&4>T!z;o;!e^_X_J%~cF9f`a6^P6~5GLx*%`?=do2;Y_{(_ic%+ah%_8^CCuKk zJd*LU&fmuBFKDx~We-cOEt`bNO(v(LqX!X@JLuJf?k|tBu&$`&MqdMi5@LcYq4&tQ zw#CRzkyvrnVZx_;dm#RmM^pVH>L({&wDxd4$1ri;`T~oM z9Xws-pgeU$7YJteSkNFG5R}z0AM#fXlU8}Fw-yOhRN8(va|p!Cu7_t;c6^GQL14r3 zik}ezc1stEM2=Wgoyr)7T|2qwon%BVutnIMW;{RjfbX;{&@k?)kTPeue40;fkyhUS zd8ti^Z84XcJYdp;3x|L--k$y-&@{<%$vZrkgz@r`b`5`HTQUtC(w(U$<{^1wu|uZ~ z5Q=_=>GsoAlMiCYOHZbwOEgHHjq3|1)gd>UHWVYWLPCC8Obfon!qGSrcu%azPEGfal=!mvaEQldTL4IP&)M z>0^<_C4-&tT2J%K+~bic9^_`!HocqvWB$|v0FTheK%uacc}(q*T0t--3+E3A5vIL* zD0rYh!Qu57F1&N^=R8xP&6yzZSDl>Vn#3VSP9C>r(aGn~?*pF$j~k9^K%WJuFxj>_ zMv;A%L}(#=xnG&FQisK!@VL@5tKPR#3IfXno2!|g0r>8z#o?}Dqq`LwK)YFvc!n8Y zU3mgXk7;z}EVrEQSM+cQep2^7DcYnzs0s-83Iw{1SS@BU^tY(b1 z+b&L<{VQBNB(Q#DWs9oYPQ-I|K>~5Cm?u13f=;zwPk;oIqoS6!6Gb2_8r2|*c!QnV z4Oq(Zc-(uOi?e1Ep9IoAMXPx}bD1R~Ug@5g;tK3TEfM6eY{Rjm3?wBpc?0flP$A9w zVm(?wdlE9U8ypYP$^;(?%7+QMPBice$!qHia?pCyMBO!!LsCVHDD-ZmX#d=vvs6g| zTS7T*Pxm0piH03$C@_ zr7k6Np>R#&@6*$n=a0{zu(-~5>zUFXYp75d7jek>w;tJu zPgX3OpV6HuY#eO5(rku56uDpa-sj|eC9J3zOlvx##6~n~x!x*p*`oZBrv^S4+DGPDzEa)$1HcE9?z=o z+u;JB8w?d~Xl+G3)Ol$rthmneqI^IOPxP0CKLn$W1W2Q|Sw{aAYkk-_f6`K{NZuD8 z8H|BJBQ@hhxCj>WQd>)cnS}+9Sumh9?*nk~;Bgx16-79HdUgsziwUCelYxlhmU(UH zw_=Zww-s4;^bDF|IvubU6Y%r{48ui_?^y8ab=^P(*v7`jk*K~m048R9x26?%U+H95 zSCgjbn1INSn0LY-jlKS|1Fqrxp&YIKw)kamaz;aA*H8uHi;_1E``=q`l6K?bL4aW9 zQFUS|0-Q^x=5ojI_a1Z|SnyxtTJWqpx6qu9Pgdv~?5Lu#Z~R8==w8S;{&**&aK(w8 z?nwoZ%gAkub?VO3;wgID%J8<#$CBNxsGg~o3PE{l)`pV|69m?edLG?RPIk%RJ*F0C z_+jhZr~FyiRqW1LHKDPqa&fNOX(3>G#)W)5=s8euUsT-zvk%X#L~ET~`Elp->VvLE zh-23R2dMgRHqO-PgUW#SD%!=h2va85mF3rsZf;3HuSU5o2YLw&sVE`s^V9&k|LR=3 zsK#J7*J zV-L+M2BXQUyzCUyDP$$nRmvIamct9+j|%^0^9h!0WN<%6ju<&~?EGOve{`g}{QFeb zY3c*z$QaLvlgAc6KtzC3&&CWDJUNY?!1~ye0yF_CCFN781$jhxH+QLUdU|vJw~qMn za3q$pswy2xP)bU8z|udSeX&^OZ$B#t+cWj&_B)g>Z;c#8UjW9wtc?ngI?k2xDOqvr@S-@%#Avd2=X_?xgudZW$Lh*ijQznO4K^mPStu z;9la3^dq!j==#pR0PmAANip&)q1-it@ky)i-Gbt+9rwG(oxvXi;eAsJI+beH=0KNr zpnByqnS`X1va+H@hAFCc^m>7wQ7Up-E_--2R%w{?-Mo79AUi={S~s&pE_zkEvho`< zf#UKy_tREHYa&P}pjOsZ@nttg+xroSqg+MY>a~dbp~QtxWyEo0lg1*6jPT8>WVt>~ z*=s?CvxC_nb?kIsJgdUdP>FYU^5BBqj?X1x61uvkr9F|o_ahBxm{(SM4Tbrh1-FFj z&xpI(AxTL}_gZ7T%+O)|r|a`b_~PD={CQg>1xfoB-%wLo?Dx(9 zVn1P;om*i%7HLJ_z>i5UJ zm-B5b7~MJT>v@HI==TBH60UAZJ3#|8b4rl~$0~9}6ip4POB)~mI(h0dCH6Lgs)-)I zSR9QPTrWQe0w4zy)0o%K>pBq=Yf zIFLm>SX|$zf9g4VTj*ClqEHUcH%c8=5LC8UB;8Xo4?gpj-P|9w-_>=9qC&?Vxn5i_ zDsXV7dlHi~WajRHn;x-bm*quN2XVUDkyD(b{{C%9B)r9R)l^7Of_jZw9rU357Z5Ea zA~z^V%ry?K56-;Ag;O&Dz?WEFGT8lV>?Z_r;SUH>+2c24TlNFQQZJ~k%MyUek>9ds zV@4p(@%qg|L2X7eIiu`=#QVkeYdZ>!72xe9trO`W@8+%u@bCtRc(*Q56Qj$6fcQ2E z@Jgpw&lfGvc>#A8 zT45jB^CkUBb4R(R!%@sJj11bhHox-^G;4H~qaA8Jue=09u+?kVqvWwO8XlpN&{BVS z6(97s(k`96fq*~1Z#v?~!SOS(>|-5X0a^eP_t1&vhw`2|89y=|c0XY|WrwtN4#?lj zX#7^unzG9N%0Un$s+yb2O7lpD9O8Q9IiKQj)^F}a#YZMeo%#f*3m=@!7kPl{iyn)T z1rBdb17(x}3MgsnLUu}9VoxBRZjp>a2!IASiW}b-d}e}LouL}F-P!X~!GB&L`W8DB z8=*FSmzBjpitD+Nu?*j#m!%koz^g@`QU0u67k|Ds@EafN6_4pbH59;{vtdQfY-?hK zuXF)DC!%kq{e84M9qpKA3qcsFl`g-+w!O%l{5VZ30VRMQU7cP{5L|~L=`gxCqwM12 zYh_zu^2B*8K@zN|4NTB=qyR&Ro&_SCRz3l=>KM~YSIK150q~*cs<82iRYt!l@IVV2 z72jE&nuZfP%Xvk|R>TS&SKa8%RJIiXAdOl~U)U`&?EU6H*=?w-M9E_j!*4&_p7=~8 zHVBMGBm3_EP%Hi#S9`L!6ak>5Sg(AaUrET`L9w8L&**7z|^EkM!^k-C$f0Xx$!H@?wb@yG%Wdg3=)H*NQaHN8mZk5I& zv}ijAn;)jRUeadS@`&7oZ2|vH`hkqElxJV(EBZ-aCIXWyY~b@moXg5Mr7sRI^{Q7H z@E$$=V76Pk|B4B+;re2;{X}e;Sp{}-d3l3-*A{y+^Er7_Pm?&WEe9JbMzy1L^Sap5 z(&vmeGA59mjeLG9Q7NLo96pA6WM;AYTwCOZZatS4=%1E3T6(JBQlw+V932;(XK5v# zYFp-g7wA4!-7qyOEuSDhv!3#}D8jt)7VMn$&A-UW>=oPFQrffEaQdhYI=fvk#CH3L z=i5->C{Y$9ng4gI`U}kLJp!5HQMx zSDb>Bs2a3icqU}d$O{|q2YqwEc4wha0p*jX7<~^~;i-1{Bl9UE^di$V%8x=>*{GX| zQA$V&)Ic_wVq6mT%3to3Xs+Dwfq%(jU?w2xI+yN+d1Knlp1q?jJt_sT>mz+faCgZu z0RSW*t)b_o2uKz_z(OuQ6PWq~+MLDTJz1BlSUs-eY%c}hCs=Q;khErwLQW~g0D`-` zUN%WMm)QhECfNsbs|S2iwtsPUcC%tT_hp$aPw&plAr{)UqnZ*#ACesSJZAqQPSNo} zv^)}QNtmADqkb@#Tt*NW(tGiAEfZ*nRAkA{4;_xd?Hg`w(GK!2WxBo+9@(5c*tz_< zGP1;<4VWw-G&&ouwq%iVcyRQuvOCzzP#24JoN})d-gg=PSpYYyf9&g;II|}&i;ruU z_$)(H;Ce5px5ott#vuf25(`isMjEhBu;7R5IfsOBR`CS^%4Y^rs=DuAk9p)(ipCmT ze*zKgf9>s~&+3?$F$mm-V*sSXq$VHTH=(XRm4WZgM1rD!OMKD>ppl6D{VOfj+dm(X zbdr%KcKp7v>rZ0s()J}tcn&kh3kC+X_|uG`!bs%C=f0qJ7T9u{Y73AhenrS(%>q^c zJOJeC!doO57(#H@+$S_;Z<4f2Xx+#bSH_>2PGJ(~CH8_y4ycAq{gu|9VaLCD{zVeD zb$;UebXwC{386w~S61t6dp{325}tgXTQ8~GysRvL0{^9DibES)4XgEUThF%%1fM!8 zK=JUD^LeyF1J@*42xik*Un%8bz<+H*xowXUolcEIf6Cs)#)CfL6sDeiGJu`@8Ry+H z7>h`PhSYXHpa8%W3J?WOl4J<>e+5GxL1MiZmfCX*bXz_(7;$VFu zju|25OsSGU@hO#)IBf=q5jD@`gQ;`m$%FHh+9mFDSl7>$BdZempDrvVC4=AZ7&V>m zjW?IQoY0#L+~p8!Yqr_n$QD#QMt=Q){kBo0hrCWW?ia{VUQ}`*4&fab5{m4d=C`5! z%4c4ZoRBqT?&PjvA3v_^^?WXZof*?{ibc0zIt; z$>2Hs2ZcS&o%E^I-Y4`bD*~KzK=~M#)@i12W!ZeBU`eBq@IptbyA_^Sl-dX8mQ%tr zU-={8=Tfc2V4f|HCuzq1(U%k-KaATPMu=v9xFZ!A=@b0}sm9F=Rdhvva>xC6?5RJ2 zZ%+^|_qc0RnIf$Bx+EX!7c?sDayb>0actogCQPqgFR;zdo$H~7hU^$YGhYjwi*}0? zIN=1e3y4Q2OYw7rq|OPa5ytKd&W>q641-VGMBes{!Q_FDjYZItpNLz^BQi6dkSQY0 zzVi9qhrd!9XvwwQ-lT*LcE3$_T5aL3MJ`dQPtraV8dL1&d9-I!Mq1Pn1fB_3;l!WY zuLKl+zLU_MLRo>f2^x;-B&B@* z>&ADje{hr>Ag^hf6}>?j+kqTFmsn{d@?_dR{&0kCQ4lz|X&>bHeHs~NkSPnjA?YLu zEV`CT&Si&7aC~9moD2Jy=s9-5b=a51Sha-lbU--2->G#XLRp_X)O?EZ?q(LW zS&OIhUAC;*=wV!G?*Ay@mKSB)q)(TkrOh6&CAUeZo(=*!(g_oqry$&U=Y$pElos^s zj#5oKBgR#i=114eH9c3H2f>EoYq_(EgQH?F+4r3xel_huXJLeb(|5~Ot18zUj*y!IV1Xa<+Wk1E0wS_}X zhUrAtUL)L0(An%JOqX6L!s0Gj3U1$rCUL&?;8w&nRie3nq=cZx)Oz<%(t9NmFhabT zA#$EIkq8yy5I@eSUeI%5se}$X*X@rmZQ$RGGx(Dx#1- z7G&Auk9@|q^!m>EupDSdAYs$87m76wH>_%UN7p}N5%T* z4Jv~=g|L7AY1wku%JbgEsc0mfgHHerc|DP26@GDZfGje96;WfNJYFu#0>V3@TaJw_R>CeFdjaT?b%*FTo8=$tJeFmmOd_We|43;8$ zplWy)f#O(}}j`5T*YO9%Ff3Wj`37AZ4(##i4C9Gm85acQFSo!OFJ z*zmW72gQ>ap}(&ExifA0YfkIY@S(Ad&vC+;COPqa3FoLF(jc$8jr0l=oG2&cPF}() zPnZZwSYbB41D#clscBPTxf(jA={3{w9LZt~&E*c92zZ|+WaO8$Q7!BRjZBPbc-Iqp zGxerS@p0~TR!ayv)LLv!|1O>FRhlMvvt*n0NhtgIxnRs)4H_G*2$rIuYJu}=3j<)- zgeIN#Jk$VkG*51Le99%(kdaYr0j^5dn`vpS35yYX8n&kyMaXV(GN6MO77||w%-Gcr zrTDZ^p-BnZWbC4l+rcFCi109U6go3gZcys3~L3^nXH(* zTc)Cj{GLSpl71Vu5AAv#vnNQ?`X(fO4}o6ksEcTrfW{yM}*#fJXGJF2G>=*P|P_s_++c5 zn~Xnv7~AD=BDQHA+Ssc+7u7*=F9BVRdn5WfbU?4DYmtSAYoWM2t7!U zGVuX@pg)X9d%xZCSI&9SoU_LgOI@Bf1p=Y-yYQ*_i*8bXr51sF>)-%*eP6ah^=t~B z#C7F-0U8h8sZPZ1choeKEWs+3ieN8^9Pw zt7|vG9oedJ@mCZBFVW3xS*4*{9tHA;1fe$$G`& zshVxRJK$ockE|Nxnk581>$j2we6PH=RXH6Rh3vN5@4gSXS+w_+G#q}C);>9U$tj>| zuK7rz|6RxQThNYu@W$s$I*6^E3lZfd{ivp=`NFajp6BOrN3UK=IcnmN6B!MI`g%U~ zk9L~$E=(nIe`P)}gS*@OufI62KrcAvs)Ap2H$3lqt(q!0=g;SU4p>M!;rrd@f6PB8 zB&L7C@`n57#FT-eDJc36Z-_kI2g2V+wVnmzG;DIM2zmL-~{DJ}*b? z4dUn5X55^{*_mr1skItRkcUP7ose8*a=_t_J7R3>)-rLasSYg@hs7zqzQXKY{!4Xh zNhS=Pf3y!V_O843tpMnuBXZ_JKtwTpun1s2UiDs@R=PRfqdIiGLC*O8S!=~xpgBK& zRNa4DECo}e&aQauP!avRq;``+N>}%a3G<`p1!@RKhJ#ip&LoI7C;!4x#oAR*Xc)|2>RQY)*4aS`MwtK8c9Bp-dZar z6_Y=1e8bij31E>&O6-yeFsT+dJ_<0D-&^9RoBf7F1HX5PIE?hEu_Q8jeFR+kJ|_pC zIp&`9d$_XNC4Z+i`kG4a>rV!G!=)G-;>_k%+hhy$VlxvfK9!Lplcil8NH7b z0oOh>V2i`&@+qc6csxbw2j0!2+JmgCrmYgWcK2N8=O%uKGBo#}V=t0($$JnzV z4q0+KxS;ZCT!=`~KC4i4$DHvhZK#>MYS^Cdc$15WSQRnoVgTX&))%Q`x9aI|Iw zV~T1O{2|j57vDy`yZaJw?{=j*3#n_8#Fitf1gJaiGb*+6`Dw+SdTC3G7(~oQjICWS zu%D*nnZdUB%(&G&m%47Gp1<^~Y#CyXK*sSyJtnb=i|IJW-OL)j8Rt5Be?G{{^y%RS}zs?o!ARiZ&9CoFA5=i zM$RFIAbZnbW@eVlfqd3r4i4`o><`?etyB#B`9T2+#dI4T8=D0#+2%IS{jh$4tCfrW z98d#?AW!aI5s?)739iZ^N)w*1A_K!ZC>BQxx`F#=9H^>YqnWi<^aV8+PjPte-tSA> zG~}Nc?te#)Qff2tBf-%AQ~sr$78?Be*TrQ@LA8s5`SX6{-;KVTy(xmSjy@p{8L$Lg zM$=y%D2FnHisWt#E=3^Kb2XN@RzsiV*NcGLAnJr+yoC!r1a*C@6%n=Fe7ajl2nO93K^8W$>~YXTm?Jo z$qtUZA5Bgg1Ep>P!gJhNL3uCU8|pv)A-9TJz6V8M__Tqj! zRtUFd)q;-H3^^i2#8A|5-1v+Z9i)_%F)s0#9!>VPb91`-yyM5|BRzxgNdA;u!AF;3 zdF4CUCnp0h;PDBq6hlL*c{vag_xeL84{scs63#c%Us}xGP?R5qx~LE$G~cn> zY)|44)T7D~mbFjfD&29z9%#)=fvsMPGbU zq^9icV`Dk<7JO8B>#bqUAJ~zfeaJc$MT;CU-i3?7 zvoH7Qd0bdRS0(|5Kw1A6U&K0ZZpm1=O)551%ms*s3v%B=@b z!N~E3($=mP0y)t<6wqbh>zW&&4!WZpf0iB#eHe_&{LA0~%ugWsn+*#gVe_Er7WVw) zsM^@vLiT4gE6oEWk4q#tz89wK)u}8Otef$;Fo(A|JMsg{?}Vjuui_2S?%R;-jp*J; zKY~5;OeviKYu<|F#C?Ngc5Xp=yk(W6*@p}0Clq=D7ad63(B((A>d{yIep=+rdEjLp z`{^$dFFg}Nj}71K%4zht9QCWd?k|YRxJ&RV_^95V4ZcQ`ObwJ3ixR!WaTjtvF%p+Y zbbpe(YN`f2i-X>{69s*}jhE=jsr#$e@lJQf7b^ZVFLb}U+Vpl;X!bEkC8vQ5z%++i z|FMS;c9HDycJ~V~gm^hKqJB_XAVzO+6Q$u^((=cv3oMtXDfzu+=Jv}m3Ckqd8NK?> z(y}6$LM{4Sua2dm2C}Rg?fmhC_riX+i!urtz>l%ftojyifMg(O*um#J9bNrCY__9` zs+jR`tK26Es?8W+F7KJ4{D_!QWS2}&FSH|I8b>f}dD*|Xqz#oob?EjJskeJ5jUywU z4_RoYqvlk6>)bFfbup%vzgIT;Iv-X=&$w&Z=-V1pj_?HV3;|0Ki*`+~+9WX}>zXky z{}esA(Qa?bu?-`r15F~Y*-g#;%Va)2V6KsR>-`Fsc@+-27tewilgB%w?Uu_iN4Nwx(^p!rkoJ7c~#xW2doE)cLtbPLPs ziJL+_s2%jI6&2A(ah}l;>M1I-81+RY@s)=R1_8KxgBsNv9A5lzi31C`#37d|Z)M{&G-+UXWRM_YtHqqep{ z7g(*so0$5GfFlWeLA1(k6XkJLXTY?dmiByblQ)WzQdqCjVtB`|tQV(acJC^Y6N;Iz z42OUuPP~f7r2mhuw~UIi4c9;k=`I<%B~%*eh5Fyz=C8R-Gx@!caLAs>7 zyE(7l-g~Wcew;t7`N5j^dGC6z`?_Pwg6p|8K5W3!3Rtt=Zx&6S5B`1z-QRxzaX3>L z_&py{0j;8F#IqK^90$ts^Cd3}-1k{k)d=X`aL_vq%lZ?1XsA_Dqd-#o0|z2$U2{K9 zJw3mZWo{~MWA%0v_!dN1=7hGWqW5ij1b<_4n(?#QS~T2?MG|Qh8w-H(UDVSV!nQ%@ zE4^8=katEMivHQwR=HUo^G;jZVgyHK_Dbw(}0D3V}6`@Xp0BsP#@K+{g}*0UnZ%im35 z=^>;1)e%maicKlrwUrI@d|rp$6C$t0#~8&c=OiKl_#;U{C=ACSxi?Sc!6lrImyoYE9u5 zlUquqHc=00D0_eZ<#2P+UFlU5-@k9Wujud3>4~x^Kuo2Mr6Tkw{qFY|)9H~T30Ic1 zk%Wcem%uIO=#52LX3L{sn=({na0;hO`wbW}?#7e)$JOPyw<+^rL6tLFZ+v0l6(S

2K8o5*Bwk$|GmBo721(8)Wu9L=!C`~_Kbv&PRO3Cit(Q?oAC*x%a|+b>iB10(?d3?oGs-wPnE%&c~a<0Hi zzWWk}&+R5pS@$fpy*@Ph~VO?@znYniDzoG)VOX!f|?r41bkt721qQ>b9i1dpm+Xytiw z0gQV9O)YRuNp*NP5y(LY24vsqHDKE3{_UM)6=Rll!GDfEf5fP(JQ_%Myw+3tqiV3i zg{OAX5mRN~=H?uF^2-qehBPqIcdC^elD z`Y`%RsU>`v*`}l0ryHFb@v!4flv<%L`?#T!&_)uDO%Vi)R=gJSR~$soZ!S$SUp>7> z9Uoj;V%|G*HAD_GUrv$Jmsj+sM6PKo@`smyV5QCD?JhKUiEW9F=hWwm?yLQ7HPC_e ztEb;#V$5oPF2tAneNB1=-zPy<7QubAoFf(L`0m77;M8w#^x#W2$FUt63Dg^-iiq_3$I>cV7J9 zsr&QP9m@FiVdnuWepwpA7%;O#XCSw7B2x&`=ayo>+YgR8-tUr|UQl0rE?{q?DwqU5iR zo{eB)*<@~66=I;Y#{u5D?s@IQ9;+wX4fFe|%tIv=L%*m$HFm^Z^IKMm{T;iprGH%Z zc7E>5u8;r058j`1y6K&L@!mc7mS00dOhQs6Dbo+9II84IC+C%{HNU``r2ro({!ZYA ziZuK;L1zzYzYZ`ML8?_L9781UfK|dk2waOVzu5m5vjVA#r1zWr(o%#NtY1K%(C#mX z`^+46+b>%5mMe^v-+N)hQXrC>&y8~S#|9s!R3SIV%U{laGuGHI3uHz*heqD5%1aA$ zZ{Pz{+<^wI?lkY-L5J4QNIk?;-zn6aonB)HRaP4MM~j!9Ei3?=V@NS1)kw@A9b&$w zXa(g@Rx*54_@2X};Ml_Yo{b-9(qJwG$4}L02>^Ftm{vsQR80bqyJ7&jYqt!L(Zee+ zFK%39{3JA$ev$Z%-}zgpAol22RsnCCn%dvvkKq=)WQK-p@*1gHGBZ0wM6>b9R}87x zV-9bjF$R`i^#cR`)O@#W(|^i1@bh#07;Hg6&lue}StQNPp~4*{p+dC}`OEh-vKJ+Ev)evM7buwAT$C5DTnvZt{@6>02<<_<>nOAW^tgH~?@$ zdiu^3vy~1~CTb*5%y8rLkg?A;W#o57!);Tgy|S2Y$_Fc9KuOnRz#9i>J!n&k3dbf& z0GXmf24x_u@t2yxHSyYb^vK8@%XHF|krUc#2%?>5y6rF+jEtSLF*U>F3rZx1=~f}a zza(-#K_CSK?De$TxyG|5r!9C1q>z^+A@8120Pp;-j8pggo+O9S;2D*2gK`Z>8W|+{ z+=WvGW;~e7!^#o_G_mmW^VV5Z)&7dhqNXMu-d~xWo_i6^%n-mH#0@FdG2WKh8LqIM zp3XsAT3n~5U=mDAA-A^{9L}4*)j#(?E*2fe1p&3b*UXx6G{6?Bl8=z_3&t&qkP!Dw z6}+LEsRqEgs=*>^?7>o_JB0ja;P1o(6xwyh%73u=IjQp#t^97^7dtT|(y*-im0^O=S> zO#rze#h|)g&g@gE>Wia)qKLeL+)T;=$(|=L;b)n@3IOcpe<+(jtnJ3JI1!Ybocv`Y zhPT>o@x#C2<`ISF0F^cju@P)E_^(-6G4J&n#$5{}vtXc~=c<7)+4g51%oqmM{=S6O z8e!G`B8uLl0?Bc%U0Dj7kE;D0F+G!#K7~Avvu%=ZIG>3O_41%LzfGIA0C5!hylUNMm#JuyedPoP|%6^ugf@&$Hvx z(}k=IlJoeI@2bv*j6Y8byMsj?*y_V=Dyu?AVi1@A*|hj%i*u<7@dW>7F{QW}yd1^i zmRADFa)N-nj>Z05s_~8xNnRg1YoTr2m_o%;ywidAzT&!|r_0S$O^X+IN(9Smk|+pd z0D+BWjbB?&DI|ZxV5#N&Mapc8=k~!v8aq`hd@6O?9TxErpK!*}$ojW2A-lX>7Gnj z?Rfd~*LizqPlOBTJu+1&S+Z5E<3TWqknEhSQrQbZ)dXbO0@`G?{;?NCDSZQk&Hx-> zVOJ0Uc9lm5{rjVxy;=PFQxU2VyU`3Xgf zbaIqR%*8<1HrDXC2oYd003qUJeEwW$&~2J59G~%4y4th5x^=XO`c2qR-x~{Iui2sB zp}7fAVC-l#1FQ*d?(0LiZH?U>E44n-ZeK}FcI6!%7zj}G^73j`W>RlbZf35NBErSy z4G?2*Qd4GmB^HUEw@qsLx?a_&FT0QzUvf$v%>zXc6|`; zr z&Mkcvn-7OgrrqqRfxbSYU^86ABN-#$6n(9_lRy0TKA`|R-0VPZ)iUTLhdF%U?JJn*IM zz9t%mwhPOJdk}1I2eNaViJ5N~qhdblH@i(+&4|BE)SQ3mkp>aN8;+K$=mOd-87{B!TCHE|1y`Gg3R%JRHnYwG zi(L9C)!BvZ^$LP+ANV=mTZ=sCl-FWO<4cy;h6)a*Xvw#_@7v!03@(`oA#&ZDPf6nxlf$VQLc$m(wN=3CS3gR_4kC`7@^o;5$5?e|B=;@9}6vE@ca ze=|C|PjtNKIGDonoHHuFnkJ7INwC(LD&8Y&{+z8JLKYVnXD7KLv^8k$kEDi4yGXkA zuZ&j)d?YW;Lqs%@FLg^c`zt27l=?sWsBm?XH~Xjsw?RKQlzQftu#d&%cl{CNEHA+j zWzP{qM7=`k zVlIV2p-RT~BIrd$lmi2|QdaoA!5w(@d6jzqZ2$|Vf_G*vvQQ60w@{xfL(Lj@0vqVP zG7=@RP-k-kb}Vt5S!6@GSe^*}J>FX9jnlQcUwKkI%kSoostJlhJz4Eq!~kYA*sIk7 zX9Yb1tV?A6k#0trlrI}Gvy}n!q#F2XDKdnV<5q$yN z(sGY&pg!ap(C~pYV6kghT^A)nUZS_7vvl+Wp&aIqTD$ttqq^gn@l7*=8hf}v@X*i7 zy2b{?mVm%|FGgp8vU*M|qPs%P6Hd>@*GPFxLQaJrTanuX4+tWNR^q-ZI!Pjy%+R?xiP z>1&HWBxw{kj_tMBSN6@-v|5fghlP>Tzv+#>H~&HwnLHP2|fj*pF~L+DC|x+QN2?;bdw}`!tLMIo1%v`Rv$3);~!PgUB7ED+x5{ElinIf z4$n22a*l!nS@#tn?U9%EBJM+e0ZiG|fX&IGsvmi4bOk#0*})?|yB%1*in@3a3~YhZ zL!oj|Lj9zWtZU=1g+Dz_!_R<)P41(|m&6_~1(;;Lfk7sl?K z5H0az+z*BA+8OK*zGd8@Q`aL+}&lrSwgX5H2!t@>WQ9r;9E{NJY>3F%wdyL!8ec{FBxRA^0Yn_$zV)lcO z(9GuW3IENCi-_mggJEb_mqlIFK66av7#SH`ZaGwlj2ji(5JyBbV4ChgMN0aJd(3Yh zA2+`Waa`EQzfH5Tj!DJvy3>8Z?`+);70nNSi>NbW%Ery;-WnCQYgpOzfl`{Eiq3oi zd%JAv0*BUdiWGI3v4OFoLI_*#$?TQPPXgYnNA%lJ5lkB!lq}D;(f(ku+m8bo7~@N6 zkpZXu@!!r#+n(%0qg&5tqGcmAw#5q&A@L)ArknIxugQHU#-}_%MpQaz)gI^LECTif z4`uZqE}a8)+UiE^lTAaDc15)=^F7aj4Rb0Vu+ZN8ZGzA{a zBE5rWg8YcK6(IXN{y(p8fH-jB#53 z%4vsnjlYQPE=;2fu^nijX68{>ibfBl#iiF_U0Em_)KKB6oN&D4INurGq6kOr5AwZw zC5o2LO*Nvhhl=Wl(45ZJ>%EEJ)Z~6xkJ&E0ff)b_ODSZ_()NLumOi0*vn`_;HzkM% zx)loP!KUIDE~I%q+j6d{c`Pp0^(X$fl%>6*q*#~Qz=$vW%8EzNFSEpsH|d++lDkJ1(2qaP!$82l#smb1k_J58GBZ{Ha}Qi4$9IBb~rnX1DzIMsa ztNsh$meokl^K&ZO(53kwpK^jerJ$5@6O4`$sHj~q_VgI?YDS3^Q%&La5*n68?opg| zj5SjI=8NL22P6yq1f0!q|G?4d8!B68=%-|j!cKA3oPg>yt@@03PfrTcgY~s74-AuJ znvdRU7KUt{znFe6_kB6Vj=UF*m^74;y^LlWm>W(TdI%S`PLl3(3C+(J zP22v8B7$ll*T6u~Tt7Lgh~|^VzkZ9q@J*PmhsbXbDuP+Wh(KSEc56LWd5-0=V8yC8 z9_XPUUlr%i7X>L6y%REvkTtcp*Sl4f8}u-I6FzZhTltkEo?_VSfZn{Y$}c}z*cmF> zQ&=}{Fn>@^eRkwKe9+I=G3!!Egg$-8kv&FXOb2e2z(BnkZ?7%F>7Dti0<11Xb_&?yJXUHWfj-z#Z<40sm_%=JG#eSH)i9XK^! zNp==js6GwtrGR+*}@mF{GkbV46Kgx?rONAK6#$rv#Yh}O(f;P1j z0#_x!d>K8kX~i7u|Kf3+KWoic%#Y9NlBA#+16kR8^*r34(7MS1}M)*F{Qa+Y-YF z)d`yFK4M zsJlquqdhHBRB9UBby?O-CuOZi6|wQQ!DtD?c=%F2+~SPA-y?0C;KJ5R1qd?1MuFG6 z^jHV=0)L*Nv^0c#t~%WrzSsL+;O3v5hYh0M!u44!*n=J)u@1sl^W#MJCm4}K0Sy-P z;z8I|v_ejLd!yY7s!ps48NXBCD8LjSBjqxj@38xH!>%M+L-N8Cw zHg?mui$)b-K^IWjMvvvPw7s4mk$KBuYnw%*Cj4sQ|9SyZQzVkEUzeBLtx;Xe63b5N zkum&gj?A0tr2eYj%XV)43d|M|?mx?(6J`k++dv638BL3nJs*5C_6YBnKTBy!N)@T!nWnpk?w?964g@x zJX;_^XV`c?qT$aQj=fZnP&P$mmHFUe-iuj%q93!d%?Y~Af&CMUXz+QRMM6%_-xn`S zGzrDj|0Zr4<0go!8`%|wL81DTJU<_yhj%5zpRohDvWd5c{@d1SD5co zRs0Tp&EGG4HBmz6c;_OBB@7k4w0V}=okzUoAJRhVPPM00A)fB;TT;gfMtx0$KS{W-M z76zQ}WK1{R-;gHi8)7ExY5*TPU-nt!VXJ{$?731s$Em+XeN$C%g9#g4_f(k((FZpF zcFkxm*2H$8hcDi+Xdsf`;&d-BQ!F;tu9YwF)IH!fxGzwqpag?i3PIR|Zbwg$QLSs- ztO6{EY1U#)9f2OlRSNGal^d2tiyRHOUm4RqLfq@8;~$cW=0aP0G3{N;xj8Gr)b$=I z^|xjNLt}wiVuFbumxj2~->~`==(if3>xSHg_VlIXKdJtX*V2U(?1;7GGtVFwX?o`J)ex;%xVuU>QgC?|Bk7RXi+6rQ&@A)|-+&e|w-#cg+2v!%XZHlYL zEwO^~?T?UeP}=>&Mt@vzJUCBhk%y4`aD`2hI!t0ApeIQbWP>T~B8-q%DJ?dP(DWen zP1iktFdx@sR}!X>AER9!4J*H!hK@tZXXLWP?#Kne#B13ZN2`D*(r<(&8Hjn z$WJB0xCrn2v@#O1VPH0On7(dciL%|FqdMX9lV{kj1Whs zH@6h@I3}-K!?=os44x3P8A5q%W-R%u$qq@~Pf`I4UR(LfGRc%&+<4yzHL4lU`0Fuy z;UPF#ng$4YV1+dJkDqAz;Lzlw3(cgXRAnQZ&-|n7eNzfq2cBV!|FV@y_8pu_C?G=0i*TG-R=*$HY*M!&r$s~aU^!a&|P z$G?7Pl!=k=QixJu1)3;#k_snr$$!J(aL^P$^l?8~iTP&V61itjj5QVmv=VSmHC8Ri ze~V^!@X}26Bf;Rf*S!(j%*PFufCi>%^`%&$N2sVJLpyQag(`JvqdzBOju#O>Wpfl?YOxtY zWgMrk7FRcT4+goSbRl(EeU1@|v;=QY?FS5({6C9G?A&UbQttn71%%J)O&ceK>Vq63mPwaW!w7L#>Y zK}`%AUHqX3T{BI{J6O6!iW=;`;9&pSPWtPl?Tq4)KV7PmV&80!(og!Fe4FZ;wT+#p`aYU5LD0aUK0SlE* z7pJ^N;)(N!OfU~jjevc-_pF>M~%YEUgc;*@s>j%NLnv?JR*+5IXN{&s= zCq{$Z|K`~dv*u%%SgOgGxUXL`aewx*FCqiPF-xgCAX@jx@yRS=RUM?q_h|Y_aO|nH1fUzeryI$$Z*yY zp5EQ@{1;i;0;7Q&K0MY)-zMiDRrG+V6^R zP2hGkjiQQh^Cj!o5I9DkFN8An5pV_N$hdFJut~m!OJJH1c(X~52pubBw1 z(l{@8qTMnjpleth=dr2AW9KGc3J(pVN5lLGIZK%oOOkh*E;X4p^X57d#0SX;+N5?9g9 z6^`uBLY}z2C*2nz#-pd7e0aa*X4x5uFAc!rnA;3)D7i8QY@vCi`H$eB{@OoUf8$>a z^Hpez>+pdforn1dn`{mpf-R5^+TgC8jOk#>bvnz-fjDt08v2indtv(+HG|XL#r<*u zVDpkNZ3=84{V(g!5oPPy)TyGSHtmqM=l%bxJ~Z!dg6m$Vw&M_6^^V^5p&+1qG6+*4 zOWW29V#<>v7Wgmj=QHo(3iyAZ%{v^HT7M(uHj*Y}BJ{=mLncYiDAokibcAT?D?wg& zquIMCvd+k5g7=e_H_`KKtxoP$7K%0VPtL)|Pv;Io@u#i#tY5`2o6E^3x^wUMNk9B8 zCXVRx7pc8SHn#pL8R?od~?5tU9Pd z+$Lp2=NK;Jt_Wx8djHSpN$U|hpL~Qf4T7AGVp`u#qM>tOhJ)T)^RW81qNI0H1*%SB zX17xy6f5*V8L7g$dLQwG214Xo9MODu?ciQFZW^152+t2zA_*9cY&pYjUCV2fe3OE{ zQWdRV+tuRv#juszm8*Pd!1ovOpo|vDhz$5`XrA+}C;&v|X&cz}C%4xtx1Q)YU)XV4 z&t;9I;%VatzksIzFZ^SIK}C~XJCGFBn*V|4*qp}y)Cqowh~!_ev833EHGum&q~ra5 z;h(&Q@F+GdEQusV47`k)Z+$2p%mD53UOxdY9eE;Fk=V1cLZPZdQl#iT=A5;s&J_xx zfDAB9M?_@|M>_45;uQsfhC1&NM-AV#vB(L;^`3}?7v?-61b#C!i~yixM)>4MsnA%P zm(?mGdzraiK|Bugbm{FkKy*yV()>tN-GmS(0X@7tQPy`von5(X|F!UmCTtCNWB1!P z6*d-_8`%p^WuRX???*@bgT`?tji&2qi}##ifD8)O(7c_Uw!d;uMbfX%>+}i^64lQ3 zQJ;f{q%gUOU|&|(gB`KVXmIX$1dR{O=>5M!Q8u)+P1~4YyLILV$Q&InzsPP@49yap z)+7oEA&$m`E%mvbxODHYOiHFz=N6kKS>E@;ey6wuOgGyQLX;!K32&{IIX~&%gCvR! z>=IhzB%s+e$Zm&L3CwbD3(+yX|JlS;P4QjP$2h#I88T!J`mN+!zu%HgJN-wFXMY-c zc#M=wUpaz}v z#avCE?(CDm?QKpd*^7VXE<-4Y5Q2+zE!_Nyi_!}@kibI6)KE2|+b-hlBscjKr-QP# z@*&=e39H6BVKD@dGJ6?9FcKv5*@EIDdfe)dgT@KmGB1g8bEH=b zb)%_8JE6eKJOl`l4ww6Vb`8m`IQc{%T?(n-*c$?-%&KnC_&CFPS~H=l;mWV zGPKe~(Mwl&QCjOxNZqW|zBAq3;h`j&MzN5ySRdmJ*%V}7MJflnRtaH4K5R=4< z=Y56ww-S5yE3O}(H1@2_KlXpzb4paSu@x5KkRAMc%#WH%O|#v>GaE5)(o*oB@6&|s z9T&s1MgB8>WS>M5Wq80@c8sy|@^tv}RhUmV!jRIMZRrq9c5*pSIG5siOm~4;U zyO<}{MN42JzTr`j0O)T=RRFm6Z9I=eRuiN0bBO?fY*SWZa>Xd&{^CTL`$JFIn9S*+ zRoeMLJ8o00vCxPwke-mkN`^{%akP&5&izjUy+c}?!!iE%RPzq49a^&gQUu=|;i92= zqX^@cl(YtVHF8E~S)m|#ln*Aq@Bg0lr##?^9BD$c-HNTqtWB)|`(OqsDE>PT7&uVa z8`$dbtAi=r|1k`5w*T>i;AjtX9J{>#knSffbPj>BUTk@2gVM|GsUKhSLtYCzQe)>i zS$TQIdjVTQh_XGLyq?)_wt zr`$5lG$o-9e_rs_&a7THt{ebZLqYm!ga5hq{*cSrpRhaa(<$EJ8hm*p;8b3(ES~^Y zLClEgJFes+W8bBqVP6S}{5^|R=SBKDpIj#y2OJU*-hu4u)7$*$0^DB9-*uco81~0f zFhuwlYtwvGuX4oz*@S~O7ppYGO!kU49Ir1=f_sWaBxu5{t_lkOv02+{0TP(jk;awt z;D1Nj&ai2p2H@d~OrQkx*~ao5ABdWUxWQ6qbI+e}Q#!n`M=9aoITij#S;GqG98K)#by(_wff~TS05C=Lm#e z5(p?Sj$u-{Kbzu*{9B@kYwVrl423^I!!1I5U*>HTl9ejv>K7z_s~+*_g<{tBFls}* zNc4-DCCVo^=#htnOYngUuzM}`E-HY2oLR^;ET`e}^(Bl)HfG|K-e+i<@@{tz&XBq*ejtRz^XS#T`csv@P>B=@ zdgIIOSj3Lb!N)~NftCB;(IzG9^GM#4GN5t;r0Msl`j~db0PzL6_Z&^!x)lGC%5NJI zdeVSj?rH&gdm>F21ir_BNbAFoT$Q@-(#zJzxx4iuHe_$-__TX9QM#x}N*Ry=4HXxa z|0b2B3Hx2ZZ6Hnv!NdVj1oSum9gj6SE2oin*e7Y&VR(I_Ir$SRmf4==bjg~axkym) zQcTKg9@Q5g;>mkRd<3InHcdqP84`C=aX!Eu19v3#{zCC8^<|(gvt&;d8)TB=1dyZ6 z)Mg=WFH`ey3J`{C~&!qYDQy=D5gW;zJP-n=bFmHA8DU+mTzH*Cm?<Gb`-ParM97nTfW*&?IQO_*vFXVM`yl_xUL-03p#rrxd16MJA=Q&e} z|LIl<1oIpzQAqgw*rJ@NpBknz^u!K{DqD+bNlg6btk7)kV0y$*5IH&1e*u|zW2Gyt zOjBZYeIz}BivdOr*Sj)75lCQfa$H_~$ROxsPYr53LCT~09*iH~D>Z+@X zqApWGsHhMSbzn_4>8Z`N9IyiWf(hCfF%n+%7)+8UQh|H$HDpd;4q=Ak`BUE#F9sK{ zYx%c_JUjpMaon;emADZAFTL<^d!hlc9FrsVSUb>$@-|G3GEV`GV=~S*?Au@MTPdUd z2;~&NS6GG25gpIz?kcDOO!9&uXpMHjrhQ=Tb0_-BS}op(4Usnr>w#D$Y;r*-X-H6w zuqIl9yxPCH_4PyvT2|bWYFHwzx0E8#!n^gS0?sf7-B&Bm`d6$PEboRk^?A zfh$u|6(BUhq5bR$oK0V>rao>)O&T+f<3(K#Iwc~FWd*$dJO6!qC;J|`0f8py4Xg1a zao-DOavR=St!CX0Bil$_=ZdtN9lS{b{9Bt_u+bPf&Yn-<^BuN6IM%*#pZc%a^96I8 zgoT8DHavilQI{SQ{Exk1OSeJdM|6=ur58OClwbmB7BpmG_{sI>^A7#gzQfXw&|wP< z-mHoHSm1X0;*};u6Qc>$VRVGQhfrcb29=gIQKj3X zK#<)>pGl0hqn2!6eu6-ZHf0L7FmEVVh%o}a{b>J^k_l!ud%HNMbPV~Qr~aOWK0Z-0 zWUZC45Yj?q;z2dzom>im52K!Jf;a?5GlsQp(TbB}=9seXfUMcxhJv1EtH&5*>5=%H zT{*T5>M@RwO%{i8|0y8mBX<4AsMB~RZ5^ir8u@Z+=L;@llO5FTn5^rfFMnPQX9*II ztTX~!@TQSR2-eHF4syoW-R_D%-D8LfMGn~H1UZ_TdizPMy@wI$oMPwvzJ>9<^nQi< zL(icm%G}d+4=`E5M5my83>b>Q5nK`p&;|rOifuL z_ErQSN*Oq}6J7tpm&{j|s8FUB2n&hZnaijsMA|Fet9DvFFhqRknWj_AUug&4T~F}3 zqCp#NPmEkpNBgP?tc%KAghsN3m>lk7ciL&Bk~&^*y<0jbCOf}a#Uf_E$dawI)^+nc z<_UaCDBS-EN*9cFnwH^^eN=uGr;Wfto^WcE(2Xlu*NM;|_&CS&EyMuBU8nZWetu1JvPR|PFQLF?DmIESHZjJvjMXp#$g+xAS8*?HbDyNm!M z|0g1w*-Gh6gI3JOKE8Iu>AYI#YdYF(_I_d6&4gYm{a~`^6C=whboxVoBo-aI@(Md# z?mJc}xo~PEUn2Pp@@68-8@9i{2{!EK;j$|bzluKhzkKdlSE#P>2>GNR3(cqM9b5== zx|}CTyyUi0cShrU@eutts8Lqcq00!P_SBnVsVf=yQtxQ}oPd;EU*Q|qiK`OPUAkuN z0PqA$tsd~w$Hf`AUIq0dsS zwUz-K-GXEU{9=j;7B9O|f9JR8Jjv1cH1UN=-=4k zo}L3m=VKH@mr)vk?ka5vbh{#kn40vFX(|jlHF3bP-6G*9k-ma!z_&f za;O>3otml>dli=D15!58z)xvahW>4O+t2N~Nt9Zg`|ggouE82t;KJ$D0L=NB`eGa` z_4l&qELWCS;q#+%+i4HRT%!Y(P_YPBDqcRd;}uWb>YMUH+5chkP%gGktR1+{ zYaxOh10*Xm9`t9SzOcAX4>a;Nq3zYSa;_ugPS{V1JIr@zzRc)8{_rM9iOm9(6GjSw^$EEq z;es$e&u2U+$rJaIf#AD4lx3+Si(r6eC=NhOXa`6yHV?K8dRpkW(@8Pzsxh++d`QHQ znu@CvBjj~^e;wmh@b9x910oj~y5a3}kA(QLX2G1`k>2(Q zCw=7fCc+UOPt>#~!sZu0%oCN_UbBKT!`w&)WKWtzn}3THfK3XDnS2u#Pw&zb(zNZD zn(!{RM@%v%h$9l7FWmVakn>r2E3_h1T<_UgzK->Vopgyo7nZn_jP6t6i8otre|+pXB0GJxL zH}CwQd}#`o&Ufc!m3%k61xlWUo6jjiVph!dx#v$D`%&}b+J{&A!el}n!cou9z+HV9 zF$wNay4&{-S^fz(k~|$xm_qG3;Zxw-O6=!S)XgIVvlL&X?u$35C4uL#ekl#wbQT6C zjz%hLsDyAjWhB-nc%!g*3O~-UoU`@2m4Eo$Gr=1 z`{X9g91NFP{s?=46~^-_Re14BjHNPBbg#(Gn zKG^OO!>B1rKSs;kZT%6Jz=TvJG`Vo)IryXAy^xzygKrKFw~6s;FP#XVA5bLFU?nV) zYSJ7b;&>&WIs!@->-^U^q@(~Wsq*{L3eZgFb{+UfK=VJ%EJYnujRCBZ4kCTQ_ea|{ z#fS-Y-N4N;56Gm8>4;hA?Tu(})AUl$u}U9zfoIr_Ad znE(xVbcp#>n;qd;%abdG0!AyD@)y%8_SNWyzKTl|zHyZlnV|Zo`!#Hi{a+-qAHB&g z%#ZiK`bp9d`~&FH=p2_gA6I@Wt#WcA8{(Ds4*$qBiB~V6u^m-AN=FMQ8GR;G;kEr7 zOHTjv^Yt@* zO7pEAY=%qgp}S|Sr&Ojzkqk(x1&klokLstjYt0pM;=b+%gQRXSa_q$jIrgS3sqY_B zS#g8YGVpD%JI1lrFpi}pjak2jp;34b`O3cB*+{V(1|Bw@%#YX1vVQm<40@BrpbFq# zv}vm>b@&SwF`6*Xs}BVqTqL2d>q&nb9R{@(#adDFQ{uOtiMEirF=MMY<7xb8N&M;o z3utjeDpaL6=YbrBFVEQe27uCS2*$sZQW`ei(%y>Z8=Kh`^0;{gfhHf{Y}(069#&d? z%I+&bPV!0UhiVO6B;dAZhsCGnE1w#ED7P(NebFufgw;y{iLXED?)~F<5QGu7G%Cr7 z^-ni5Yp5I{5;Sj?AA-A|X`@*EP{=wkd`uk7z}4@}M5oZv5EwnQA@O8FH@D&OGsK*^ zvU^-U`%W9gC~clnw{w%YberjFR3QO2VecK-?w~1j8;yY!Gr5y#8zy ze7ZHr=KM_H}yev-MwTmrLfTLSWEz;>tS?DH)sq7z^F0xc<9+1db#H z2>sz4G+=MG$KzZ>*Ug-A4ykH45|?Z$$-HL3&rqdEFGv=R zX7UIYDo!-Qn5N)xYRAu!GvTx4M6Gy4K@{SO{dL3a-#!he3CR7v~76>9Ky_X#z#NtSr2*@$H&tIX}AATGO&$f*A%IwHOP zWBph&zN3oIF$i+(g_)QCK+;JTYe+|Pzvvht4mU_B!{C0rR7&u#eyRK$sB_KH@^#(T zHiTLJndL_MbvIt3QSIh9vp1Y10qtOszxa=aRQ=o}4rM(_5{qqDi@IzBT5;fN&0Rdi zc6$zDGHBbyp^u`m5);(m&GW^ofJh_blYNB731jN`ZW~)}6Hk(t?j6)LUIMzJ>R9?; zc@l(FqQPn5DdLxl#(XGuy-p#-QeZJml_k7SRy7tgwl)qned{(Y;7K~050UCv>6zbb zKA?!;u*NRfG(7dQRBz3`wP_%cMl~3@ZyNVV_SJ$jD-5dXpw>F><32?sUwvUG(k}VfGBtm4UCka|}m|+K! zgw~bE8QUBLspR?!f-4*-9iO}bu8mIus58^k)32uJ*^8e(-q4U+%}F-wPTrKfH61At zk}zjiYa{vw9uSr6~*E#pMUoQXs zSOyajg(9ypObj52Dx^ZY2A8FZ+X9)M;skMcq~%w06UI6W8i?ynpzD z)^jQ*S{YLuM)a`Bx-}bxXYs_?j8q_K5rr!Y56wvR>Y7)_@UD|@zRz*BP*9=I$#bxG}I z*Y~VoYr*7~!&)C$+>WV!Qs05$n5&0jj&9xF*$R1D^j9AbzG`z)Y_Cq&i$HEJ@3hox zRF|5VkGid19z90IyD@Yv0UM;jJ3oX$YxJ z#{b<;{K}pxc>FtV#rkyXZDn;$Z+eQdv=FIcu--04)fC_;hCF*WrRu%lp^Ew}oM8dR9aka8KUWJ`Htg@^Hx{1F<} z3%L3B;}S5Gt8!aa*oxqCFe?@wbii6YXMUpSee0;MsUA~^5#c3#csL;=L+GH~_4yrD zg#;ItR143dQ{Gs*)+w3J%Y==@Rusc zmZx$-QR*@CAeg}m-nN>jy$da5cm?U~Vi&|zA}*brVhzHC6m$}wXxRX# z^)b+6Im?$65)01j^M0-x2Nob? za!a!EE~49;QQ(X`Aj9M0n(m`wy$2r5d-82usU9?pWflGLzPboq+eP`>rtQxaPI1&t zKPmqSto#8J45=c*_nnKvri&4JK8=nQzsq`ejcSy${+)~ysmIRODq7dgICVo{b|!iV zNdd>%>mDErO!T%U@FFlo$ZyaW25j8YVyj6&_}us7FFWY_c=~}LQOudj)YT^zOtdx4 zRMbMWBok2X0HohQZOEEI1O)jmmtv*)2yzN&Fgl&P3jroSI_Z&P#_9>@H_r~KMCrcY2V$M6Gr${N zX-w#VYN%yCP*w57`gA{&;{DtzR|BDK5wMx*evslla52gNTf)KAAu*Fc9Q|mYP`*oE zmf5-10F>tT!A>E|M#maZ83CmQQUp|Q=1CL1ifDlfJN>T4cvRow<8Q6(oGvh*BPbNqd8J%beUkL?MsbW$wmgZW1gW5_9mYv&%Z&K^0pa$A0*Riorq5y zO>Xy7`CWbv_RH1~3?Z+NS9k@o=0v4;KoByVN<#Kk-P9BKYOwPz+!4#VNm zY!H+Y>rY6`af%ujG50$89#U?-EM;!$msRrl%WBZAQR~# zcMx9BH^i$$^u&vH+{T8)s|9&6)T)o!&#aYsm5PEa75mKFiI`>8z673fiFp1kv-#hJ z;y=bJdqqIo;}mF*0eTgtJI!N_sF2Y#$64>^yV^n|MGOJ^Xdrs;_1Dj%-lv=P zHU@Zc1n@Ytrh6T9`HoJ$VK{Y*)3afOu=umZ2;x-BgVlU5DrC$ua{r9XzV^cJ*j?$V z*Jb2-m-OpzBK$X-YdEv>d$W8Gz1GuX*Sra;=%p%V!jk;% zk6&AC8bWqQJW)oBoWq$GY0Bi-8cyP8D4#AjE&9dQYbmQSA!0rf_kEJXw^YS?3=NsF zuAC){{GIw;{dh{`O$&llYbAGv{uGLjb^azQ!5>EMgrR``(u%2(#C&%2_W7G`?{Ed3 zkK;4a0|8lQ7cP$x&_>AXqPZ65cc3yn=W4^cJ%$Ae%V%X=*KK!RSEk*@#CNX zcojI8!2mBYn)R_i#r?HID*}Qn5jxzOi3u(`g+(RY9B9l+#CzjVeW*QLs~D1Gxh=VA zj()Y;bEl>1z`y(XnZy#uv$lp~jh~@47r-)4mqr+0(uJvH`WD@`;1kGP(gSJLlE}A6 zVL4nA@%lG4)vS(B7G-#txz>TgogyKuw)}VDX?5?`n$KBnZ`-VWOgS!$oyrCxDuQ!9 zf{!`u=)tC=x}mD^^L=@Z$n72;tn$W2a%BH(=v$r+i+oUl$wkob3~<;OQA%~}r2{-A zW&b5yJfcd^Y(t9aPkT%`*9mUWMX4yF(+2PC+%XQk-WwBkK!y^qd- zvZsojw*0d}2W6%Ak15KE`)(k}u;9;Vm5nL`gB2dlLLt_YCaubz(oX^mdSd*&^R&^UlXVBz}ztgjVg z?SWq5Wc&p3ac`m^g_MBTL!Q!FE^}n5$LQ4jSZBs7pye}C~{{C7H26L;?OLBD%n z{x@HF&h81ryjQj#N>ytC61ph;<;T(+Cv><>xqjIzgXpqJuNB--e!rpM`E~$}gIDKP zjLnr`j`m{YS7j% znnS5$6_#V6h)VChIT`n|*FWYN3WLnX)i9e`Fo7fNLGajw;qQfTM5Wv8+f$#Y>P8B2 z-^NOhzYbl`ItFu6;&R*CXlKm4X*QU)>0fV|`E3&rOT6ndVK0bzkxa-|A=mrDa7Pj+ za=8gxv`ls=8CaFx#UobTC~**J;+&dP`MhMNtB&Te;@Qf#(^8VrX19QBG=SAz?UsPg zs>_TjO{={cj`Ny&4u{K;s&|}?!(urlcq{nOK?7OQevcz63dmJYu~ph1gEe>IV+{Cr zkWAwq4?ooRQ;bKGry5K1gPxP>=0CSU^yj%XGErY9x9OTyY&F8xKJh0hr+D z%`)7CBZ9PSg-i%PVWuiR!?)-!&{5rAm_5=EZ%M&>CbRB>6?hg|KPuZyU_PO7kUV5t zJM#o4&Z?r)y%dqx{$6yzOzap#>TqlHYLE%<}qm09z>a#jF<T2_&VJh`&SfHRkVaEhYG@>IP1>}w_$ zSzAo2rul#_@75PrqD|%cKC|?R^0Jwnq5^h}p?l^|T!(+*S7h_#)w3>VdrFP7S!pOW1#KaPCQnH3{-;8%)t0p;oFBm5^}C4r2`>aCDRu z5-#jqVt8^T?#f8-Bm8!Neax6TVM8pCmGwrReorUJ2RO6Y$C13gcGMpkrVTg|w%cP&{j@@ZW%jFCj`! zoFXfaoQE|lYL@|{s54qipljI2d7r#GdKqYc0WM5+a1%iz{+!KTuqhX%Uyc^>O<&v% zl0!4SOI0dX*t?1j-8ef#qzgs;T2J{D|HMBh*81fIudTV;Mk)lxsZKTppeudpYn?VU z^#K}BPPo#w*k3c=fuA-GVXgwz8c8|cawR?XAJX4#5s84NQS9Whj$k{M8?S>2PNqf* zA;SUo{+yFco!5fJy`ES4_f5+j67=wv5^OaoG!9T?sUgGc060@Y{ zF!Ev~@bT;8=9+C2p78n$iJe`cVFg%Hay|^mbyTaxr-*zt)(d;z%*JrBPJGzr zBJ?Wv8D(Gv6)H5Ew>A<4JHj9#ZHr5reW(h2-iR9_|L`=&?YVz!)9FXz6Ei9ZCJez9>sf`{5ry?yuVx?rNHfzYU{+k!%HGN&0JEUM}~Y z7Pa`0>y=2L!@o~We5=1^FX0Mu1k_ju1IO8&>)2^h@6KhSQ&e1fKOPbUp$dG%nkaM< z!|lr}+y!^3)T|N?zdgeMJ}&?y=}&NpzSQlYeJQOs;D@dvHD#SdJjyMv^p_Q2=otol zXz*jLv`Ud~WU-2~X*2O(t_5xt4Fx_?Mw5MC*V26pu^Kn)_M<3?l0iVHpFQxQ!>5J8 ze-a04=z%W%BZ4yfGwG?qo1~O<_dftG?P9XoV-^B&wg5js!lWl%O)Y@3_wUmjjK@L^ z8jzB}A&Tdj6KKdZVcWSUL*QSezSkSRhpk>>dentrrrx6Nxj9eHFW>VgkEzA}7+GIn zz&u^`*K}nW*V0Q@A#1S#ZRj#mddxp&-|6%TbPD#&G9N{sEHJL%g;53yX6J-gUWQ;CR{yMd;tlvDDFRG>)dYjVm z6~EmPo}cg&2e1wgt*T|`xQE=MXv(t=hv|LBuua7-{&q!dWmR#Z7T5Ng66mP#o#;0- z0LZecNWPVR4~i<~8X?&?9!qb8w$7#Su45d-J4Q#&?DQsl7g~=MdMstNPJ`ZN4^^Z( z*rxnhf3cx<{0Xo1+CRElhYlWrYgFj*ggLMfm3*#vVRh`1SZaZ&UA>hIa*`I&_FC7D zFJ32i9I{c!vOHIorq1k6drgsQ*d2&Gb8`d9t1Xe+DdQ@rv_H}ARS8#Wiw-R#NL%Me zcY|0b0O~dim+_F%BwcfCR~o+9F_G)?buny!-Tn&>GlG>FRfS%qWE;Uiy;|-01RGdC z0hC*v2a0)bkR$w9GP%>UWLJ!4xX}QV0@*c7wZ8{7SvvdF=e6^vjHWq_X5JFPqM+0a zkBwU2>^oe4f@kPU^HyGRo;pzlS|2vuK%TZ2G8K2&7sd>B17)FuX$gl-pQT4ky|}3o zPjP(AL@8PP*D0RWGsKOA@6-en9$z|9xoYiaEs!Za$IQ zZ?w-@8~n}jqQtOcN3>TY(Shs2Jd~8$9p~6|eoO#!hL8nONg7^aRvB>EL@YxMNYQmX z+w=xZUNcKYB;0#<&&LU;>;@&YJojY@edayExbEEGKWcqzFV>_K!iS~wZD;U2j{}Yc zC@L8^(`APNE_~xw0N}#UTX4IwuteH-Sj(WUjwnLeXl$BU`7+QK#auie0J@&P6%{y8 z*0$=t+K*8>)HzAh`4Z$gON4vgi}rL7$l(DwT=HZfXDXmeeyuC4nsBtm5ZwZ$T$8-S&6^MvVa}!ZCWf(9*#_vW9Vnj?<8U30`9JOH>G zO98?a6A}(tgEI>m$d1&?uT){vGJynj9m+HnIFd0{h3VOG zV*$v=&HWETWPCOr`QnXtMdMJ#g#A&RRsKWfA+>n+R4xMrDT^#4;}#ytwsTmXIx{tT zCp)1tpi)8XC5;>1Gbbh{`kh9}$0b38?_PfL0ZQ^Bn#Vn+$F-i!<8~$_3m__6XV-E; zKg|x4=?}XA%AE_$-#go}&|*|Q6kRTUJq8tj&%{WKxr5|S2DR){86af`XWP7ASC+Hy z?E4^cUie&#^B4_-{pYPs9nk>pRV4{iqM^0^q7Qv>z^dx}lTA_(9)+ z4de>}ejpn6NQvCKX=>VQ)Xp~mp8qSgz+zcc#9T%Geh)!&!!=*DF%K!lw%x|Ju$L}K zP+iN>)8n5e-xwGUBn$`w-`@RhEy;%xlBUSgGpXF1}6Y_v>6#K4Hgta_Y95WPR038dV|di8$}u zt?co%KxbMLlVsI4Pd2?0Ou(uDECy$KJ&B2B#+KXint*fg9QuY2wP+kGZUHIQ%5e3I zm`?8XUvj|d0275a_wNi~Yz#PWq)0HR1>cN+vd{@+T6e1a`t|+P*!KHQW%A9S4^1V+ zWn@eMQ9HX{Miyz!e*=G!O!`+re&h`+r`r4`m8Wbt?XQH)Tkc6tj$gs#7aUkI0U>H# zc7zZ7jD5ia4h%dY?AFBp(dNf?kF>cWi_H)IJI1XWfHnuT)hjt7_FX_3H8eC7TrUg$ zzTPZx@1$KPXIz0gn)UR%atJF*rVtL^-vwvjiZJ0a=d&Xdk_vX)EGmGkQFA3Qfjriu z6foeNNcw~1j*E&2{_0W>*s+GT@IXh+4-_#n)I=p?`Y+O^IbqY11?Mn^fn~AoHeF!b zU8Na&$b~Z@XDhAHn%U+A2I*1MND@M6w&}5U4nJ-+`*2HbtE>#=^6}q{0`o?mmdGq~U3Rlco_Y{@0e<+su8N{Wo0{*dEcoR0*gW;?m^ZaM+3 zR4_CWgo7i#C$zK_gsu{|gp(EXevzqgF|5D1!pd6le6R-`Wo~nUxG!y%OAPYj=U7f7x-9`mX5_eT%E^d;gSb6#Qw;j{nGUSKCv&nfQzGuTweJdb0nc1&IHX`sSs7 zdp|&6fm~i*0CUohweX#5(lv%?JT|A&Yo*Z8H|0ePC>`tF{#*_s*#5){X6c!DDd;L+ z?$BG?_(crLVDCw!0YY;|*S7@1FhKAEq>htwCe&WyW{}SCJ4l=I67?TD`ddk3+YsC& zW%)c4WtfQc*BI#e@Xd{eaPd-(ASu^l(00|;6Cy&;-7SQl zH@cP_$+8U&{9dZtF+7}g)e|(rE&KN_OWMyR$`QyR|6|B)0fs!|BIG;poYw%Noi7K2 z*8|pN@>FeF+3bb4fPYjEpaQ^qW!9|I(D~i!0^rz>xOle~uq=ZAdDIkUX!a&6GxQ#Y zK_Y`&i97RLx{INMG3lIWpFb%?qokygX^^gjKYsCvu}Aza-Wz;Ee%BxME=dI-AD|@1 zC9I%SaH)GEr3+Jij@SW%kDr5SS(<++z99lia-O2-Rbe~g|CJ5T-!W_)Y<;lQYE3j5%*z53`p)QxNOT9Kte|u3)lE(F}gfLa(OjXj4R z3NM!>JCZ(d_Rb5-rRg6*gRj!tT=oBXp2ZJ92`)Sw{f(y3(Q=g=&4zz2{54d`@Lb8+ zzqKmq9$u*{^fN@)*Djg+k!4?^8ETsVdy@iiFl;wLuoaS{Y1g;Ol7lNOAUq}^6#iG2 zuk1-y7@leaazEA1k&JN!gP-ol$Y5ti-Q2k4A|%1+T!*&kOsN;*vaz#i+TV1L`9yldDq=CpqZ4FX)m| zfEoUopAQ^-#7f^o!Rviy#QfV$<&Zy;VZ?X;!SsOeeBS^ls4e*Im4k-|9qEg0yGUor{Es%`y{vN=Q%0eqE|5tZ0 z*qBYvxRET+%M~38K~{9N9 z9zp>i;O^3i`d$6(98IHV2`*d|OfhsF>Sw738>tOVs9 zRe$sRv(OzXdMt23?<4d+IgE92_MY@vMg`TZa}ukg^EmyFGBPPDHq1AkzxhO&8N`ER zJly4%ZAg%o<~nOOCN`W78)^HpWFqetKo-TC=(<4_1|@IXgfQOG&UtcZG(>*e4Wwb9 z|58GVMUL6o8%srq(d3wG;1EA!g#JwPpBrq{3>!uKmEt3EQ`i!AnySp8QlxCehR8Aa zS-Gcc!5u6`5b)IdPT?~L2Jp%!jnz^D3i?Na6VN>Sl%b2%fATI=WzGXG9bV!9w)39- z+|`}gBt+nsSm}gZlMslNm=EMn5=2AD>{x^$m{= zZDrh2#t?}YOjXv*#I8U9{nJru?tuU{GTyMC-3=kMg#@RXRp{TQ4Vj=D9 zwb!>7b)l~JGl!JWaiZZ#V>SR_jW6&==mWng`tqe!RMogG-K#r{hP#?SSQ)!LLRo<0 z2!-M!K=Gfbe{6$A3z0(wo7`5f44jjf^7})Eg_b!_EKH($c$OUIb9!73#;UZg zcO#D;9vWu=)VGQa6%)orNkfH|T`Yv%oR9P*%p_IrW@AK00H8dY;KZXmv*#%xiQ8a@ zP;z&{Bcj%s16CA8sxBr)s%P7-bq2dmQ`XTK-o^eb%>#S;S@73s>*i!93DL$&?mey!X3kGi4dzt zXd(u@JxioTgaY$af`+kx3C4TOxn%HqYS{YQ8=fe%Nu7N%bwF>`2W+;B;PnY|ivEXY zkoUc3`E>D}>rd_Qk&Et)lr34bXaDh-KG8r11U_*}$qji+L@G6rio0m%swl5afmmlX z^*79XW(p*GlWya^S{T;_a+=`0J;4vcuG<6pTH1>@f`A?y&`Q^%N*Wn^D`8w3dE=d7M17{0|@&7VacA)~11-F_6wKrt;V0XcJf@gq;8n3M`MWnB;n=hia3 zK^d`6HFqnKX(y6}-)X{jShl=<08Y*Yk)!?XaPxN0ZTTT6G|8}Ut){V_ta-nICXPlN z$iA=ccmWpCjLx{coU+zVkN#nE!p5ej`FO8%|IiMQ;M&*PnF947-LGs2`R6uS+C0>O zDn|%XQ-VR!nC6}c^d!EK`qy~(BtC^298bV zLaX5kA~BrX^!C2EK#ZJD@3gi~YVL$bsuQq~X<|^ZHWqB7{y`V_ss-bFCyfjgsf=Xn zbu~(FfoL$HzoFB{fqE)}j{p4l=-L@Nv-JL;A@*{&06X>QqVT29N>TQ(j6ps?wS$tR z*{pCK1~l$u{kKt;^rm``g1tW%zVzlO`0`1^gk3i|hMsdUL=xsgi2Z{V0(t#Fyj{y(XD`8=n^7w5?(PwwL89&?qI=c4UeK5oZ0!>G!)UF%~Tyy zwLItLu<1$g*`t{}sg}PRh5_vSh5>})%h%c!BC(&#dEeB~1wBN%=x)iRTsYlzyvN6w z-FB{TMvEnow>9X5#OHQ^Oo-|bnSLdpF zCK`DBeV3aQ|Bv}tF-eJSe6XC8Cs_`(2@bnHo0$Kh4bhM7^Oi=Jbam8vvObik+JNtY zM8=&G7pBTZpEL9Z%ih0F%vX956pUsR8(YlFjqHh`S`mE5&6s8SHMRK#Id~m+(9DO! zi+46lAgwU9x0bV3a9(Y$)I;B%gdG9BT@Cb1lmtd{IbOfg!ypSYEN*+JYuAXH2myPmH^oAAGvF?2`g!ZXc9rIoa~9tU z(RMBX*OYo(^KSMt5xiSGBPY+n~M;EMm|-4F$>P z$;eFv@2wDDbMBUi7jM3K{|^FBY-tCJ!7_JoIMn3nRf=9SkrQHobWmP0sHohgPS_^5 zlfbtN4#K`x5uqs>ayrx5V3XaA!ay`XaHmM$HuQ<(5bLUAQI>XCHo*>eoK>6dXahpc zpV7qmsT73$gTyA@;$lS`EprSDML_uag0UnmY*m$D8y1><5d}Ad)hj4chfCI(oEGyR zv5@f`vxW?q1s$u(GYOuYbaVzoGw)QrcKuMHCc{-V|EBzGve1F%xoM zB1Dc!&&C%jt8D?$_oa!S9t_(;4F%d*lyy~`YlVfZ3vK*#Axt7;tiLlZ59|^0o%jw` z9k81Td+YDq5jA}zMpdnUgeKo5zPCDHyqZ=)2R+bDNzwL1)(h*T(S zqQY~opt@m|v8`k^r-V_pq7uMwpO+IZ=; zX3&y&j$M}F+|o4nwFm`7+%nXKm;PNkvqHN(?RzX z$}Dd0Y}lC(p%RJ@=d&n(&@0b6*}#gfG}Ghnh%_}deL#yC^@<3Sv%%;)oHrmzA57JD z_pQReky;%+9hI9rGaf|2=%3|Wald_6bpjeoxcx5|<9e@&E(y$jxpSWFv$?r{dB1z? zV>C~I`fCm-AIs8jgv3piSV;5H8H;8sXlTTm{83}feWKk_3ET&I9NM=cZ8;xVqCY+q z{*S+=GOXx9;g2AvbHynI>0H|Z?SL#i#tbX^C8YSAYOg z?r#t1dWOB7b0S*T(a-Pk8JJ}COM}kpeEXXusTvy_9U_bh>XU>_VYR#~MJryA<|}N_ z=Yj@+=Ko-qfRF>F`=G<@pz*aWKtxS{AAkzoP|=Nh4@t)8T~&Lkonp*l=<6TsFXi#) zx4G@(dr|fU8##9Tr=n*Q9oCO@WM8vJlyV2SYMw+riY{m8<`_%&&FWOpe{kd5d;hRR z3UL%S1qR8W!YeT5wd*@nTbnUjN`$UkRJ9aunjnyRQ2mJFA7^F_7i)QAN2R+~$bOJ! zch8BH1P=!9vEaR2{|-T?+9l!iIZ9>q5h~lNe;ot7Vv4Luno4wlTXE6>qNYRwgw%Xg zzLvw#Q;MEIi}LHYgVqUTH55#&54?dYW`2|?ipx*ut=tCBNM`Mv*zJ#^5DHeX>5E)_u@ z*4@Rsj6S6c_)3Ztlk%bhV55k!?Y`oIkG#Z$fXgDBw@=shDuLHT?M(nZ1H+hz2_2zdoY7gE4@0 zZh^v^3anF#(Gc%3E(c+D!Bs9lQ>?pa%0vEuP>WQVJp3E$xd8k-(1!%;cH2+RPeLPI3$qPR1$PG&KomD<|H{&WRFqv4U3~L0LkH;9 znn#N_=vH2zk>5pE*VO#Nf!&fE%f6TsA(zpes?pL`7ZV1?kb(Gv5v*9;u8E!kSi0I# zEb!YWdxSu&82Fu9{dSGR-l*3&SPJFf=aQLQb8+_O&#OLdpA*_Zl=cqb8zJRhlEhTB^(kJi|_2UT0Sa0Vi(1|!`Z`nJ}TpFGHc7ac2C>O$nx0mU9Zf3 zze~(5rltuiBL$DY|mJbz%{|a z@;@}4esWmR9)3&WRnv1inni4AkXhi<7%xVXIAz)B{dZ<_WU9bklQ6+3bNkBdbcu~d z|GixF5(f0MX-(kGJHOmT;yB})H&&a^H^-m)!TeP-qfnJllrj8%36=oCd!_xwZR3tD z$W(@cP@V0MO&a*|{Wr%n|Dpf{@pDYt&TjwSF0Xu&=%r@!aF3JkYmMRJma|^6^!dAT z^zie%L3#$2&R~q%9*kd6QRLRI3rA_>qb=aK;n&rEbH9t`i}zU^2k2FH$4M3z-#%68 zRk2GHvRYsxUXkggAwi1CY-5FHVYRUP=r7YOAtao`;R3 z2R4zg3jNMG1<-EL^|yx#pT9fI4bmHPi8aOAAYEMIR^bFW(7ysvF~m5CKio?p&E#{J zbFHa57ZvAatrw=3SY%_zgglw}>Qe9py#sihRbdfN0QfZd%qOyu_Xyhxp7$}5RL0u^ zZ=DxOTOh4zaL5haY#4U7hQh4+YB5J~XInz^(Ly_})gH^@ayc#{!M6sq{e#8oH{JTt zoyQC`sEQ7?_v}{?(k=lFSXf5`>XfVNf0e$RQ>`(OsmGfd<3D9nR(P441cAk&&?vLz z1i->0B078j;Q3sYZWDL&n__R|KcEZkcb@IdL}`K)|1sZMK9BX?#2UFU%v?UXZ&A&(d%ebYzQls$m zdZ!t(Bf_;^TSRw7fd=r%oOx*#M1*z1DEmo^E6|@Q_p*cf?c+Sa))O>KL5;lRxb&YS zn|7EIFbF0iW2-yxP$(Trc~#~hiQV3Wvg{ieMoL=x2aAgYX=GkY#QH`D)#vpz9oAo`ahx=**(>e)m+#s^z`nMzHigANh~^@K&ku!i z$1{+LuA09Te=!_w)gz$4V~q+GqC8*x)WC!oC(6wCOi~E^{23Xqif-qS=xJ&;#nIp2 z59#gQs$FlbkE}THyJj2sn?bFFk}EfA_?1OMZKVEPmUay0b#!h(4u`LbZ>!o5>%LeT zhbtsMl9m~)IL#$or+{F2KRjj`mQgdM#MU)53E?hW%ZQN!*~?CE%;c^-XZXOVo^avK z5Mb-KmNTldgZBbBt=;L4uF$It(EV&U+!go3g;#xpmOVB4QJYv@Tg>$>@4m2&bc{%O+jtMJ(Q`O&Vawvxf`E{s{NwzH{bnlA4ioal9$Bl{3HMtx$wY!Hd zj<&ayLfzC|wq}Rq-=Ou*o=*Q)TtrpSjy*#8r900owXEVWnb%7JAbs#EFDH~AV-G2Q zDeDz;y}Rw;;D8PeHCQlHsk8yKa8mGfRbk|I1Y z%Ex=!;_W6Q+-Lzy&_fbJHK;kn`TTnxq6YN)_iw*)Mve@2Ig+s$)X8%Zf`dHEn(j>j z;P_Mmx}~tGxQym(hv)k9h0I|V#ae4F78lRI0y6TMnnI0ml@P0u-`qUOXrK}dbQt>* zd8h4f$`t%Ol~gxp;_3| z*vNj(Vq}Qu{z@yCuBl0t&4lvMya*_3^_;Ty#Sb-Xq?YDr>Gt!Z!BlEWh2OKEt>*9D z_{%rQ-(I-yRlTvImU=2sWn&1*tWss}?6rw1W+xtdc=yi6@-Ehrd0`W_JVLFCeCgw; zPQM_ zER8s?PZ+?8W*BM`x$jrG#%Pf%Cm+EZzgtJ?%fhpa45&VaPPgxL}!y`nkx z`}Z)|rJ9%eFBYVo*&F9ptQv!bo+z5`je0M=lkl{gcS0J0!qi)DdJ&oxA%?-~vz7TL zP1$jqtCLeiMyBZ#VCz3y=w-$`AIm}|m|q`OI)o4yIKS+={o?|m&ArMfuTYFW4#&yx zyCo{5p^UrFE6_&q;3Zk9Ag@^e$@R->o6pSO>jFp|&OcCbBekY$V}XC_c*;c9gTszP z-d_JsvMb&Qv+Cfgn_;YV#399I?De?3xEav6r6}iCw|56o1FCOF794G++uVQEy*er=lc_v5zuX= zxkSYvPg&o|9_;Aqi~Q_c{x5LIpo~U-xwydbZhY6bo=Qs*4GXTEasdgCQ!j+P{ii@) zy776UF|C28HXZhxfG^%bc&D|_!-#50k|P$dW_oGSpgzh{8)hSbppAUTK(@t$Q;OBE zb54ItP|;r;#Prme0d7^RP(_9gE8b5Jl&m=#jS%=NAswo5yR;@I#s8BqPL>HxXSlI8 z0-}(EzV`{4$8T{Rk=q{0BJu!!ZtC&(Is+{#AKTRhzhi6ar_c7UCjpHzG|3MiQw?r_ zIs@=xE7mE@714i!2;c!}{`q>;h8%F5v#WRlL}bU}J?c{wsOKW4&6QUKi;6)IjX}WY za6!oej~~;0BZ|Kpz{c=j7V4usOOQx4CK{->NwC!MwR1q5MEug5<12G~JZNrW4)1MRmy43dI!#b z^9q^k$Pm%ia2qeFb&&)Ew1o1WVfygUW^J3V`lwUG{x!8%Y%INs^-H`^1w|{TlBIgE*T63u z$|^0yWIl76DOcC1;OKDC$Ip4pAY(;BI>lFLp2nn^+sfQfPhO6n@xbf1!wS59JFGdv z?1h5hysB#2JUBr_)i)TD4DZ8!bv`Tv>qnlol}pji)7_!KY>2*SVORYynYlix$&o!{ zud%ZV{Zk|;gU7I>jb)&|o#Og)q_PoQ#Vih^E zDQVjbX6s_|M34Re5ggDNI{<*C`w7;8Mhj6Va49dtK_d4);fG`OYgu4hUL696>MYx_GcuVG^(Q?iBBMl_z*Jmq?SRsi+9shlF!gC*J0GVKfhZ?SGI2(f)3EOa97 zfJ?H56jZ%W*eimF2=5=59kNKwJ@cri?eZ^{$+yUQFE9H#YlHDP-LW^B)(68BJE}!6 zFx2bYl2CO8ndZiA55ZHhF%At1LmMqOHauwL1_O?im8#DG^v2ezCB=rQ$0 z9b$O|R>bSoBt4u^p`ISu7aOnqK*+DILJ1ICi|eFm|Lf7XE~MP>R4ok{2+jstjEVHu z!=96GFXORTDru3(F+R+n#*RWo_T1zX6ej02a+e0O5--in(OlXSaXt~Cb+;!-sB^aK z#+1<=j8`(BqFER<3euMmuTFpb>9Zn-6)g->el8E(9t5)kTEun6W$3wP+jQhDwyY3-qN}3%aCzK~5gt+M;AXG0|Y;Hj)YS zZ9syBq+J$)cm-9^{<|9;_3P_n_e&`OntGYG{;NGkJayD<88r20&*pHLx4vW|jH-0j zd3exaklC-z7Br~;pXGxKO-|7mj?k&U58KTrx)vJjqh;7*>nx7>bvzMV-T9j;hBX2G zjR+am!zp2!!0^|<-sURe?)beE9`zlfbm2C^RF8jZSeEc;YW-i=hx5rCdX+u#`E&hP ztdk!hsivb}YBF1NqEjpeMt{$RK}u8x8;jO0U9911&H3|ICUnBScn#OjIh_I^kli!On%#j zkTyR&JbH)YW6M7qSc2-m(L+N?yxVV4yA8@!238dhGw<1VpR0Eajuv&QOoZII`LCc* zy4m>wyXiOBVp5h|^!|8yvI5Ci5h^-tM>lZOW{(J_x4?z-c5g>uF$cPn zy2N30i0IY)qt|2k%%I|$S>uHX%irfx8u{&>R`nu9A^Kt3ri-^9rzc^73^1}v`Z(Dd zk#?9Vb=uG-foJ9F^Od!kmQ>9P%XBNG-&=6yCK>mY1QeKduiKE4z+=iVB9Fh!n z=MYG;P2_{S_v9O4;6d=u70cfqIEiHU|h z;L!&SG(1PyzE8T!m?^nCJRtO5eURJy)XlHY7L(Ntu1Wd0Lc#4Sr zg2|I#tTyk9=Z`}q`N~vLK>uol18PZyHjcD?v#{f z2x*Y+?(XLKasQuZt#_^W3-ZAk&e?VL+1I}IS=hEsmBbhrSReR-A2}}!3R@vy3w{rg3yo02+8wZhEqQ$7Da%@q}uLPX|f!Tx`L$e^pW=ie*p8vTkOv4j2S);If1a#X?13eFCKfIVqDd?Zm5r$htX1A9t{t(KVzscx9>?w^e@ zzplwD?ww=a95O`Jg_el6Et5VSzQqS8I#-yg$XfOOPeLI%|DO|u9T?_5s_%n52xZ?< z_Kak@`X`hBhofD&;JT0Snqk_e!FQN32RHJy0Owj!+dYM~g1Q>vMbl#12fR=TyHWw6 zH(0rR50W%+>um$tq>xi)#Lq>bt`U{y^v#o`A8U7^BDS6>q3vRQ6m84Md@~l1O$N%v zCb2#&gYAkq8CgJ8!NN#?O6?IKPDv9a@&AaZk$w&Lc30z69p|;941{;NaG;B#KQu6= zH!kTyxCoi)D~>dYhaK*D%Hw%D#GiG=G`WWslhb9ZG~DgesS)Q}AZj`TF{lFxF$ z{G^v<@elTF{@Y@TJ1MSP?`}V_Jz9>&U9UX1I-;Ni9ys>!9~QU2AQg57sHLZ49>5+O zH}lgzED8j&cuJJtqaN%#UL5fhRa9t^KB<**so>eJ^QZDn z9z7~4LTI#dU{ll&)w}>PSRTs={%g8q`x0^`-kEfN98QPKfQLil%S<**#FcwS{sjNj z$#)2?B3gpTw<55Q=Ykx_RSD0>FZV@>gX--qu!YF2pEF70oss_qL>-EZvo2_B?7b;l z+t`i|s1aC*Trut)^CYb<`PzKZ5^EGNss2rW+g7Dd*0+3{Oz8QSu;3$e-Bzw}Mj;OL z^Fr_D(v7MST}M^j#L>#+mxBP7MwNOwT@37N36@zmE>L?d40f?V-}bkl*%RlV8MSes z(j|csj8YchFfJ9_oxhX`<@~m-gda01eyZ@+QPtV(>1zxUe*6`pGqf!UmRSYq(a_nU ziF@P0^HdQ5Wr^x4CbsG=P%gSiciR+|MWC~+l;@LP$qSXA zACVA0bllwB%u=pFctR4ME_nX|glYqnVPQT56ZF8#_HuAm2NtK)N%G+nrTHbC#Z=YR z$pqJ7dKQS}l$36cxFT?p3=DqR8MFh}e!(M$uqFsWxR=4my=ZK)rtkG?CSce; zM|Vd1w7GJNOpQ+H|LvIN$hCW5F6dd`Ahc7!2dn!-WVP#wA&@=ZyVDinPh>kGr+^db zKcw;#t;=!_9Ss}XmVn=eh+{+rGrm^>Zmqi#er-scMXuph1%6mp#Dq+k5%!F7pCp-} za5zJ@ED3GuBN)#JlWDB9MI@r=0OD)+g?5YXiBWP|C2*K(i&BgP&E~Tav8nejxdTa9 z?3rS3V`M?*r`8p^JuM?(p_%fs{mrPWhhhG8?X+dWww-h2`Ml7qv@k68%lMJG!whM$ z_V?l6cqPc8U9wEi;d*w*ZPI|KYJH0Z6u*olp7E8HM2~%|Pdy_JRs9z2<)Kc<^z&f% z5rGFX>9~*6HjhWGh{PB_?jrQwN(mDIcw1G;F^fF^xsD3w`NCk0$DrA{h$S)P(kOz% zqEu|%WxJDl7L9jV3F`H#wb1zyKeV}Re+8?fqi>TEG|Bb22x2nR(ilJk?@WS+N%kpnI!`GtqN@}pnPKI-bl0xI(C?xBE zY1d07INtGeiE(XE72*2dciA6V26a;2cbI@lC!sXwbJCHE1PEL<>XTa+aaE$|vKF$Z zM*CQQIC_G-7NW~T%VnqinbJhPNS2qElkcS~{0V|pbpi?)a2}BxyZhz8H?r3uM@HlE z@`S}1#$wabswb!X^$E+WPy8e*0v>+ay4trf_E0cQb#;=Lrdhnd#6z*Rp*27m{;Cvf8wk#Cn4`%)5TiH7vD=`)4 z!H>1KvWPIaP(fe3!)3C2Q$@)Z{fzbRm?dEZHu_EWsvB-AeLT+?Y^P1%zi+O*xk;zm=JKs0QN9`7bmra96LM>Ni@S6Dlw< z>1^5u8d-OjcOpsLwXw*=lhZ#2#gwh~Dp3ntR?B+H{y6*8*F&=|mk*rbBLEGv#IBB} zd|A~-?PMqFm>xx=6}yDBfq|b%%$L+*E_kR|`AizA!~T>kZ{Tw_C#?ji_nVFS>G@q_ zohW**g)EA}KGqwa?b-b5sZe{KzT;Am)Rf2!(Fk6siEry7a3smtU{eT(<|`&a#&cvs z(c0k>Q!N~VCxZf%BcaDjf4;1CzzSc_noclMC=A__-sPXV-UL_swPO6Li&tgudHkfq zVW!-WI+`v3E!cBEcy6BPK>nvzTTUN5=0JPkhW0c?0aev9+7BXYV8N+Nx%!+V`Giyh zdj7x|sbnVYmt+`WV@hL!#{zFm`vOKoe}g``Gre)##b1T=j?+mSY#_Z=&SZ8pl%4&) zKT(`RgoU~UZ|%AT94SbW{iVnVh^{7iae}X?Jo(!(BI@9GBD<=2MxSJzKXPK?=qzKQ z=n83$tZ3UQ)6)#_rVCwO%vDt-$(%R0K4K?Vvv6$wBrXbPmmXRBGohNt+}Ayk zfT`9B!+DY>4JG=tqMP&O9c+x+zw8-wdmKwk@v zCAkL0i}hRms6YNaGtXoAyuKnvv7$l3P&F!Wai-W`ZU$Vu)xA_x&j?8V_~YMFZhiAZ zdq0ndJ)n)S1t0KkDL49>O4i{_W{mVf5ieBjYc_rYUlYnA)fF?2zy=ml#bxk?H1T6` zXqohg%J<$7*-xr1z_%)FtK(|by z1m4C;iU7vbz$`R4gcKIOX_=fwGnQYHW8MAs?c3|rC_yqShY)aUT|3~_<$Xp5E+Y0~ zcu_d*m_eG%%sDygJ@Ps~;ijpWQAz`=$Soo|jgZEDBLu@olX6bw<1ipBih(P?M2m)t z;MwyDUAku(1q~$i&7HP^dL~y%oXsnObNpIo+OmGRS(hOBtb-lTsvJ>iL1n(MQg!|n zW-E4rw}{ezIYX&keILCP=g%>>|8iRBVSuYuXx#0Y%&o8(ob&gDqAd+y^26{SHpD2O z1hUl)7BM*856D)l4S_ciYDk4iTX+FIknE4=oI^vJ4?P@E7c|7FDn3JW zQ&UrS#rF>N(9e79FFVE-#q+>0vTJR4?CU+`&HGX=(8e)(bx~wlm#^hLtz&L`+Ma`H z5R5+>Y}r%3hvtbeX@GZ(Q1=tDReV}KD3>WbB63vV(tB@p7&g=>Ju+4WKDI_Q{d#A; zVP1|l0t0ZiFPm|KIDoU2zZQSIg~zhx8=f$OY0=@0NLXDzcG$sOQ4T6LJ5y~hsXJ2e zfu0Hx*RKx%c<)MjeiX^_gp~y1_%oto&O@Ih-04n-&gYsBPV0mCJ>QL&91Hk0Y371{ zPJtKZ#kJ6?DQ6L}GDAPuH}Tm{d`v4(l8j7zuJNkvlQqnyshIuN@b^kvB@jHB`lf=L z9E08_XJZ&=Yx|VIp59vu$KQPxdAY)!V(eg`#Z!ml6aLI#ADDF-LY^?X=4c$BkTA8m zkt(i=><_0FuimV}RPUBk+Q|4fWLlnrQHtMSVK9ZtM z&jChuIi@fy8eLEoaCN`~2v_D!j#vAdIv!-&dIkfi7C-%D&N$w^D@ZqD5_0=qyT_3S z)O$YeB5|HUc*FbX5XP%wHgzD$kVuTN=_eA*spc@`JDYae|@| z^&lE*t*IZ8bTnun#LFyk2O!XB7WY~H?7&h@``qw`i@=-5;>fCT6hr34N`lFQ_C_9q zWYF5gdKiX)=;u7!$8^03p!3o)_I`?oKk7`@`75X0Qm0dc%ypa4Ywk>-xFFV+4{-$x%Ei}vqw{(krK4LO`ZN=|v}eJT1c z9TbrBwo3ta3_&2oEtR`~FE2lhO$`h7gWa&6(y)F*DJ_88=onFR%VYjpFt@TS`E7s? zML|c0|92k;0dAh~*G}UQ^8z9@G2)hm>@InJC7|C(08C zOH^v}L6OF<%1`dj02%Q+#$K#)QKWJ2Z?!{qWegJglY&0#tx-B3k3>Dq(PwI+M;hW- zz&{X}9T+^52G_II6A31Had-YIa}&2+Y2XVJHFsZq*~_ahrz+M}9ETU#dyMJEtnHj6nGOvw{ z(J{_P5SIEx3D)w(PUk_O)7qDu|G~Z#lhf0uqHsa#j@49@hZu`G0DlL@`HEX9J13HO zVw^5+EN*{DM=SiBFO-{`>`q_M@*oHlkWqVA?icVN-y^`=-dnXZi%}2p*;4F zt!eaqe6jLSwQ$oV#T}1jjska(^>=lApmypnm_}~TqOh`obe@_)#tJ_cdR(RHK}85q z3o==h)K>YVI!A59*PhA57ZEBO;5!^mCve~=v}9>d7feXxFjS{y(TsmbTaWR6kOSok zl;^=?`uxg-K_^uox;ON8@cM2ca{VDDNZt34UT7ytTt`4}^&DB3F|s&Fhf(6x))K>G z4inMU26S~HA`k6=-n4eQScjqKbP#W5FE|@o4WYUvbZ~=Oe1u67Zi>V^A z;?Nzmk&}Os7R=cAWg*SU5O6fax;Dz&F*lw5a-v=!1+45({bTN|(UtJ6n_Fj^RdT$J z>L~mhcDZbCe7C04&fKDsk}d!wq5jm-*Fo?OG``Fg=8h!I9*z8xF?krXHqbF<)U~VH z?jvXj-B<)(a$cw1-f|1ImbpY2Sd$P!@WB@kv1vU!Wkq2^1jVCvkU%B-r(tGes&czy zm(uWp){sNSvb_&3NMdi5(a3{sSD7ehvD8|Zn7+yJ9;)!a&c>^%tvyKCsG4g^t3Sc` zDgt!oWf>v5GebXn7oNVE>wIWhW0Dzp5+T_WdqhtxWElwD`6o5z@D+wFdLi2Cr2+|P z*E=H}oxqW0TsjQK5brqu^7VT|9TYI%3c+w{eT$CC0XR&VDfu~XO_K1-rZr>aYjxd* zLwMI!Cw)4P!n9kpFIcMjArju+91Zm!Q!+(yQQVy62m5^m6x+Nf>wln+RsfeaAhcvH z)G--Ux8F{k9-p9o3-%kSzT@d<8wwJT@*a_T75NfJvk1@x_f2X6aQ_FYr*x%BOTMi4 zvk1&S3`llYHm*kmd}6Q#yagz2?e+tYROmdMbpQ(Bm~w=1leDDj)qsR3wj%WteCoAA zns|)i?v>m^he++=PcR))GVKmPbBQiIYSSZ-^hL?`1sKWO%f;en*`E+RIW;PhFYC@6eR_y6o1BXj%l#gH`1LO)qwMI~ zSD_~Lv}$Sc*^QLKbIuQnSr}1Ij3joanTHGf*&N2Zu>Xov+W_Kf|M?>Fz>OXrMyw{YP?H_KS`nS1!b@-K=Jj!CoPH*?d6>Jq{ zA^)3}hDwmR<)F#HJDL6ps`zwvx$$fW#xkj-Phd0GTeQx01nQSRaBgjDe!++ClMGXx z-%^k#mWRdL3qN%nLsR9+L$gagT2eibzt1gzaM`Y!lEFgQ6w5Xp^$Bn}+qBGHBFS2Q zMcdCIzN?kHnN6B;jLf32?H%Qp?Rb!kZkU)JMrILs*HQD&pZjIW*@=%0D`~mx$kQG~ zU`gvA=k>IYKL1jQ2?m#wN=byo0~CixUbsYxaI?mB1=N9O7N7xtizuSwj)OR{O$(%n zZXz;E*hVT9d)JPDp|c(loF+JFd1?$~(B~07rv^lenqFD44wlqNe3gFnKay*{Q`viI zXTfj+CbL%Qtm}AMi;&6ee*hv?T6zbH6FN7xu!_W~Z2afk^qU$Ft4#^NX9{xp)m6ic zCrh{->nTK!_Q_U&!GUDsE3x?dsq zU|y{7n;EaraZmsAnDKv7PrMC5;*rXWvzxd886ax`e|H#^JJY5<572OPHT2V*7CJtD zR9zevGM;4)W_z(IbGw2KzPhDH4NY=c@*nEz=U zGydw}2mY-Cg}f9R8f4RUG^jeCQ~0>aO}|K1=1dj%oI;F4PAlyCEI!Kx6w+)G=5 zN1-N$edW-&!8^F^ZDmLDDqnjawN6o#AcE6V!~8J<0&}0-vP&~`06?I+9>KUp^bYR= z=IyLD;bUHrP0r+ZrjkdWPoSS(CCSHKTXAR?;} zq2jAej<_NbuKchN0LBeN(cL@g?&?CMSY}pJCy(%7bokuYwhTYx_w!lI?ZHl5d74lV z+yyf_)4WLYs{8Fix!z{CD*rjh^poOKaR8T@XJ8bLg_l6h45k`Jwp4s~*e4V~G#aD{ zLyCdTaQqaH*ghQa=hAPAIP}ZKFX8!WOrT87m{ADu*2|qHk3CiiP&tl8*wgfX`ki08 zCv!y=v#OwEY($O~nxikYivg+D-)qLmwN8OhL?H(x`(u`lOS_L;?9NzloRezB5C4Et zwZxH80h#e!V=Gc+7E!a26M16t&lcoWawyQsTz4II_K@9KR53DUas-2ir^w=#4P#+J zF4O{`PlYuo?3T%k9SXYLIneC^VB}NU!v_j-I=^|sk9eate&EaNGalk1 z#mbPsPdsshWR{KfdU)oZv50+tuZzOg{0N}_`F!x-h0sA+ovB4a)JR*{-IGHUPsl8J z3r0Fs$TZYR!8mr<<{&9XMmdFbo81{7inNDewZ`C|XE=xCZvZ_aGi!msO6-e+Pxa>L z;oBkw%LE2+oJEzXL&I2(Zt_p6>ie47qMG`rv3C+Q;A15WH#JTSTm4WqyuP3!J(!2; z5pD?;_bs-2kv*)wkbHDkv`_eye?wLZR5xFeQA=S+b=>u`SNkf0z*A?MMY>wjGbWcV z44!?=sol)~_RkAg;u&Vf3rTFCMVphRL)I#hI`6XRzndsw-hQI?WZ)mOdp4Dz>DvC& zWtWT@zV3GVYh7IET9{u5OXV07>7N8iZyiTs$SqKFwks8T29SazW9HfKTxTmYch*vo z9@SHg=aQJ~>+A7?*Lj{0fFqjTg#Np|0B{sSmGin2CKP!AwI88~NW{D&v(Qh)KWUAo z37g3Q{B>-AZ%}1r@Ry#oSaY6$Fb^MAy$d$)?R~DiSIOU5m}4%#@^)V6x3=zkOk7nj3E*s&COTskX7DHkz&*bbgUsLT00|)X z=amaX+TiwfWwW?n2krC)W3+?fQ%85w8qbAnn z*dPLmBq9$s>Uh&XdPk@=Em8IRvY?zh_35*d%tlGmm!e`F$%h7YXGeZAu(`Q8&)qE} zoPRx$1285F=pleV$jg~aFY)IVQ28G8!AA%ys%Ii8CWs3@pgyR(e-RuPFuKvXxfhE9 z4bAkyldOR03YX>ZDqm}5Ly3G&l=opyyk=1p>9-4B=-weORzVslwL4!ILbo}AI`X-W@&v+BbzjMjrC{^b`~PhR;5{|eRp z`O_2^~VAO=|AuQEJ`Ax9q*xbx|uw9LV_zXw?2>U(~=T@V}mQa1FX` z2uMJJ9+x^WY6_qS6s|k(8QR)?wZ)ZUA?z6HBJAxg_$r`@FO$P~_u;-NJ1RgI4Z^{a z4ieog$Fde0i=AEZm#i)N=3XX7MbGPg;kJ{D~kJ^P^jJZ$SV4sfRHI|0f zr-H#Rj-KFSLq!QYoUoSd5ac&zQZzVJqWkYrf;2&BgPmsg<5{`UL@{I|mQET!wsYGb z(0|JyIeUFwyg)&@gDtR_&dT}a_>Q-;e-;B?*iaMgz0;JcVULEp!TYDe{V^1XYKq9k z5Z7m0Tj_2ryyQ8B_T8VkUWknSkS0kC4-b#W$BR*?E(^?%V|(BH^6PBt%WNNb?a*DB zMAoC6HyjF*WdON0W;rf#4geCSj{6LM=n2<}B0QqqHs5tjmf5sjTP+OIm;hb#05F^l ze!Dj``tfraE7Z95>GZNC`a|ijhIAJ1x{b;tqEWG+#WXJ91XwuRbk7lIR}&`!<+dJC z#wP?9?05@_f~Q(A%Bhi_4xcVl*M;(Wp;P5+=t6 zu;lAMFvPLxlPV!`{CBP`j>9N_kdu#1sN(NN3L^&yuu?n zQ&akFkzcThb+&^s6@3YUcK{tvJK_%fR!&9ry8xexq%m zeStM5stX_otzSM!M+GmBu^q|P-3u`4vzIpOnTAT3%cuN3T>8_{7tF3fAI>&9n#zOD ztX1Y)UM?JTut!pFN8|^tQIkqJ1`zncKk}lL(UN5!-zMk+5ok%{M`ez zT{uWp+2YyIAwIw+seeR85Iz(*jEo-rZoHg^4_;bPmi#^?=EMS1=X_^i5e9UjKg+h% zQ)|(xR0c`2Km%$;b4laecVKeZy@ESUlc>#xAomUZ>L=q1wUlm;8}uxW(pUi;W)ebf=J&0 zpP3Iq&quq_XQ9dGSS|h(YLy=a<)^f%f#=y6d(o8+DC!y3fjwCJMc7OV`w6<&x+$@$Xi#?9+k{n8D?;wFYkm}vXKAxOFKPz_qCgP`u<+sqzlrpqUB$aC$q9z| znOM&*vN6?2{R;SbF7mi&zX4Rl5Fm>)z|1%DWp#xb8jutNS~YZczFPL{8=%5HsSZSl z0Dt_8ZMwe%jB%mW2QU#x;G^`~>gyh^TD+|aAtx4aiyoFAm=^(}3LjvkAKW2A9%2c2?$Uc;P^X(gg5`>7~~2 zXqI~a-Dh@?B2?TSFNLV$z4eMAaC zA1=!^DbwPeeDLqA3T$f13HG>o^v}!VuluC+8G)0r9Sesx2fsd6^;D9jq`TwU7F;(! zSfr)su9m|P22KeA&P(%7sI(}Wq_Z>2x+%kWc~r6+fl^|~r@Ls-EXR;IzaU>* zYh2n=DoTa|t;?u|`=SaZ@yDnXphbrPw9y6(IdnSu08FM(0-(}nm$Lua&lUa{B6N%! z4pp=EnkLD~*$EdQ$F_bMCn)~Cq%1kLcYPN_MR;a%LgF9Z%m^!+xzbJ&s?`OYQjfNzhxIg7DB2GLxLezGJ;f>?L2P78&h;9{1Kk>!L^-Z^D2^$ zM*~BnKq(M)YK8qNDo_Uznj`yIGf0ST$cPY-4Q8tq>Jti6p0KV~0Wy_L@Y45-xSCKn zFC|z5aSTXU_JYJew$qc1h4+jJC+5!qe~85V(iN$YZev1Jb}`J}JcTW8UT{Off>xMF zw^1{8Aw~V=K<4Uxbow=WJ+&ws&YR*Hsf}U4SD@SQOL;@7*pt4VdvsURzyMlcNC;z{ z`0jM41x%0{;oC3O@2hIHCmmzklk^gq1pUCC-Z=ikVckErIph9!$E5{IRP3@@F(xO- zifeQMori_9Y?xHR(lnBiLt19}l>R`~89f-@^C?qG{+3A~W^?JgPrl>Fd8?$$UUyr= zI!R|eAJ~_j`H#uJ7K|r%Rbo@lkaLdhyB5ErF3ln2n*+B@ItY#nD^^#_Xhr9|gkZ)$ zdorn^loJlqBNL8<Ks}@}02SYfe;VssfsWQXDpTM%7AMZ>MFg$SDOh$iCQga>i<;gtx%Nezd z?YUcdnEY4D840%uVb53on;?M!5MmweB912x)cLE8ISlX@reL9rtgJoo*cc}h?pJw3 zw6rH3bGlz_fyA`Wa1s&Pzm+ELd0ALg$sE`eMDCAV>FYB_BT|nB>@2jU9%HctKa%(b zezqQ7ZFm?O#T;RB0uCO>wwqCW05&Xa$X44K*Ddd4Oh7^~NDG8!xRO zsvJMn$lPuyE=v%+!B!!^E$NfQDB-m9P77+@ry24(&{ACRUb%*0(T#R{Oi)k7cJl`O(}* z{7MGoH$IfXy5CGYCZs;o0}Q8SL1~%J=0LFjy>;5dxw(?TGkIEz)YZJ%>tKel0~op> zJYc(M|H~wVPlpc81WJ|sst7%>1b}pWnnmSakT&;W{Cz4NzY`0n&iOmEx{xqhAI?~zvXBv2`#l9B%QsfGiEQ$fud%x3#kn{XQTNZfBTJ^a4QpHFGE3A znbpfIMW7XX8vH`1w!<*}>wu(dBw%=u`ybW?b{!yvtl*_QHmtdwVJ}XnGi^3xZ`UnN28>1 zA`%n5NH{->Kq*Co3a@W$6)~1d%DwCX-gXJnn|8_owHVu=h#fHgj_msNoh#=CL61Pg zb)BXd@~c1rl>O;J=HzW%5O{#Z@p+Q_7P$?9QmlAJ--~QsGBO@|qMGc3`jbMSMDv-Wj~gM7W$(HG=r`bmR=Io)k?-g$DqQhf*(F|D7PCXA10;meiY@sO7AT{NE5AlQ z^X!kmq{^(_k5A7)lczPI^udXVV0@_C;Q{uSn?fT_y92?;);07%5h3)##0sFu(>DrZ zARf8P{7XVcAu{%Aq9iT zSA^c)36wYY{D3#5MXtn=y%11%tOrY8jgonRvZYr13vY((9Z3AZ!E?9(Ib!kf-;K4k77rqkbQ zX=-W0{uzi7NDz)r2xiCP-CJ^5*!!n3<9Ugrb!}3?!xgSV3JJ9}P2ndcxTCCw++5lf zmJc63xRc7|8NaH}^|k5}uK3(N)!*~`Dv%9}Y2a@l=by1r^WOu9fEZAq9d)cL9U}|y z3A#<-b{Akk2$NjGHY$(|7k!NJ7Qx3JdBlnG4?kg?fjVHUiX-EC4UJRz!y;O}v2 zjm>w=kzNjOTPVnYD+AGGNd;B!5xPw$t73pxdncIpyA;u+MlH+hdW*;rX(u&(IEIciycPDnH`fsmaD?XZvVfnO%p)-2L%FV z|4^Fr{^Yxw&)Dt)CXwjzZQgGs0W9~3I8)IX8z360VsT#1za_`7Ko9LK{o7qEg~ws@ zjF~3LjrA{65V=16Su$2__(&l%d$bLh$dI}JvnC8~DHmX+0<9l!Gcp~?`)&GmOb6aPQLPi(WVo?-QK^2@`7bA|L z8xx=J-@ijX#$op@@;~k}4?GIuw3q5$ zfxGblp-b;m>lrRX)Y1xDf8*sSoa5K%u_k3tM|Pxp;SVoM%O?ZjuhYyTa@)XuqJAWo zA8+2!gK{-}rZlJ+p;hf#yIr^e)?Z|-;G&Nx{q|Hcf`07;9#gv6DFBK%F%V~ZB?vox z1X}+5P0VMoWqTPwsCULX)tq~EM~;q^lka8f+9O}X+;2*m`5nN>`Tz{35!@!4`Y*v!Bfs@obdFGi z=x=B^O_w!W@64>UGQ}g=T8H0nzs~a@VgjbvJi7dtI7CQ$5c8OUrO-^MUr|y#Nw_qm zngpdXHbUg8T@kg-Sr5XSE9^8?aR%9QZ1h>Oj8DSTH9V7z7SCZ5 z_QPN5#_wO$j=Bdcb{ao#C-6;^dhvDSSnlvk-V9%7t7e#{Mm{+oe`jYa=C-zB!j*#I zjNFk`_{wryH1l`sYh!#;5_V5tUyOim!FdcmrZO^Q%;y*UI|LB$ADswi>GOU@-YF+X zqFskVi`ZTW=a4hHN=mPdXF@D#>7NAYKD2**7o6K(2m?_nxeNM*P6%Q#4nQn8zjqwk z)y>$a6NIRw6N`Png&Pt$v7j@{Fb^;e)5MMWG>s4_yzN`f@HKVj<_JLA*oInSdy+ekk7AOpU?~?$ZOPIqTL8S^t2YxqyA4Gr?8wz$fVzC#OfGlN5ZvkBO4r+IihCxRx;rloo$1iKj zhGhA%k&f@}$fenESB|azRb}8b*q+p?_|}48GtYhA8KU(}Nqn^_J3_)%|U;JvMxCj0FQK zUohdUBRBB!hf7~ct+%Z5^9vwD7zhV?r0n7Ql~T>6F>7SbJWYKL^uG3z2zj`;S#sR4 zvlwd9Bp66!J6>6101QOOggZOT7`77*%LEn{>WIPzc9MkQ#PG_|x)v|h^2c%~D;|?b zmfuGTBUWak#)VfczOOoHrB7}!gNNX13j{s@_Ts_^nC*YU0r`Hpw#uXxKEy}aqua)0 zl7^iAvd!!mB&fA_D6fL8|NCLI4G1;wbv~5R^|L&$_cPTHyR3Ea&;GV|2+{@^yK}XL?36 z=Jw7;XFsHP^r_1t=iLK22BuY<%Rsv04QhzqT*#rp4VCE>VJMWaVlGe~gKXYa%-v(Z z`tY#fR=^p~`qf-z3ICtDVi}L+|KG?0X2$J~&ll9g&f$I`Hp@7NeYjs`PolNzZC|By zqOq(l|1L&SA|`YH_#$Mu!vv+TG#|&C+Hx=%$w|UwOLyJ1r^{Q8Ud}*sawVh^z2e=Z zY@)>BOzL8H%s^Cu(bk0FWZ|6)y1r8>`>diuLv!@$ z_QNj$mqOXe+gdruZ*DT^sF9K1Ma3ieaRxQvfeK>-SBSURM}VOITuFcg*g5Vw%RD4mz5@rvE8Ezag&kuwY_wNgc>|=*l(O( z%M6>8ZOCWEK9+GLA_hIDn8^_Z%?@$Amff@D@6>=OR`zb8kq=iq@(W+JBm95f{TJ{Z zPUYabwVK!6o+;GU*Mx@e>Lxkb)aO!4%&quAamK;T%;XELIN4!75{`$EfC%iD$JygP z-8@+bO9J=#%~Q-@eg!om^7RNpmau*hAXh^YJRLyO3}drh<^S1r>8o8=Z2unYK>(TBauGg0azA!kn(7UtET)#< z3OP;hK!DL~@2nRWbfX?$?7I9TFcUasy_e^bvF|$VSkmdPHig7*t7l`n0(ySXSCE+qIz0;ku%u&^t2H1J#VR6eZz`#UZk*_ol7mzO6+=c4LU zoB))Ee24zcQvNv>3c~c+!o-xd0PosJ>OIZT zwfSNy>kfPo(x2GIQ-<8@zULbRxZHP~tanZUCqrJ!3E|gvfEj&cOg&#Ck4M06XVf5b zN8e+99xnCKu;K=pR#lS!{Sw`3!CcDZJG2z&bolM>V(L+^JC{wpK#LtWF##eFBumj> zgCrfuv@c}b9alyD1EMm<1yUVDx^(WbC0#u5N+s4?89gn1^sq@%NOkEM_Ifl7i+(*u z>wFzb#HYVD1?x zxJQrFn3$QXO}deQcROH$f`XE{EV0-cSK$`F^pT%lY#@uz=Tdg@AfWT-APNczodGE2 z#>J?ZoU$_3#Kc4uFj`gkyq`8SDymK~2@n#S#qR@|GFVRT0EHrCBu=kwjK)xM^nUQf zXH`cQN?cdI(EQ%b=HT?RxP%3b8Z+t4;g*_iuGS@>SJbTuHyf!lDhjF z8@Og?)@S&c&-kELPY$onZ;NVk6J%}A?#PQB!S-XfBA#TKx!uc1cz+gh00zih`h-ib4wvz#aN zV<(TTIy>1F%u5~`R`2HLZ)j2v_y2xYpRcd5fY)xd>X4v7e>G1)U%ouK(zF6yu>2uX zT)&%?(o=zav59 zpQJxR3m2_nekA`wM2N*F7eoXIKYhi88P>Q^}_8 z_5ZT>uY6%aN@Q2?34kRPdwJx7f3jr-0#PaA(aJIjD4-lx!}_x(6NXjY^+`OYwi8Ym z)sOeoKa!*I=|NKM7D6xZ&*NZZLpeqIhH0!Qqu|>i9>DW@emYKz$=4x_6(!tS9qjQx zY1#W^F>i}n+SHGpbSx&QaKVi|SGa@L3M1sZCf+Og(b0a$CE1l6PfE(vsZD|5Om62^ z_&gQB;?)xu9ua{;6ZY$l=NFK_{rJO>&kn?$w-%I71=lc~^ZGG4R3|blB3C>i#MyOJ z!A-Cl1R^ofiBC%5lVZ1Y(7Z)^)dX(@g_vhj_*Ts^Yt7SBW$E+7DBlQ_^T)pNrMN-5 zYT*{VSZ)v6X2Gwj>^>3i<9bIMDeWn6SkUrz$5uGKI<*G#!gDd)jnrF^+XK5n^CM*5K)4h0{%dyz-+-;d*+qC|EaMx5~I zPHCiPB$6EZTxq$5^zJPT{n=N$teeR_zfqZ!e0y}*-nqmcFXLy{e#7{#;``8gJRvM} zRfv?Ke%TFR33QPW5rrggzQG}IjT-NmPrZ>S@cJ?AD(Gz3mIj|6M5EI&$694MN^xCr zb9EIo?L`aEE}KYlCsf4LMoBN{y!5Ncn%)Bjor zIe7Vx)F@yS^Pq?c;8pLW4eTd)-}2~Pg!Av+=@!d3Z<0C1_p9Aqje;kzsE?Y_*C@#P zbHr;hy)cPymTd{kIA+9vUV>@cZ^ywZ@=U^>v}B_Krk9~K9D3g}cs|vpz;X^%RM#3w z$vsKbD__Ux_$CYRfi>*dUa+o$C=bL)cdf)Xhim}$9-2nV=hDvuQeJDwhrZ0B7nF_{ z8Ax>{*fL@(F?)qinOhUpfcm$#^IL^je8JcCMdTHh*r43gS!PhgVytlbhL&R>LXp8X*^W2oips6LM*UH339{!;DY_%+T>DKltv~a`EMFUl2=51 zuuuy>MK9O8JMj(R_?(;fuUt_|4;jL?Gj6DkRQJC11)J)A{@O;V0t!%0E{^9T!P~*2 zwENJb?8Iva!I8hl$j&5-KyxKvFWL@Ac0kxDx3|(pYWL-P7X-l{116;w+L-?wv$07*KQlZ_@B56n+yM#t(Mg5hh=y$ zKDFCSuPXn3Yd^hz7nknUzJTYACm46*ItMz{t`et}??AWaSJMO=R(B9;%WC-+c!4PG znuflD*a1=$v@Q>@m!Qu;@D*QK z=GHYg0gBY$Uv}25Iz*6Gs+93w3c7bQ0J70N2u3XE2j6G@#(y+n22&pvn!u;p+BWChRxrK9`Eg zH-1M?B$He&-4H*e7yr|$cLUyvQQX4E2@nP2>Unpfdq0hwULTX*i7w9v`ro1S*YZJj z-pU`A+XdO1AZ4KJQ~c$dH9Ihk{tgP;a`|_3Q59L-WX{(^jcOAq$lzQN&Z+Q2pmOKS zOgZz#@Sh$k%6dmu^%ekd1jK-aZjb!Ptl+2+Xj4}zFCO6E4vU;e(!1=|pFQxFg>~7$=xN2qWG1G^u-X`8{@{MKe6iHE@=#VhC*}A7PS_0s?OWn+8jm(4(eE^ z2N`$vt1m9Nsq=`deHZ-jC~GxcH|3DNHIsV`gsYVooEwTeTtU#QJM!__(z}&6?38Kpm5jeLSu*_wR!T~;!$r3dj>N~Kh4+); z@6EJH!uVjMZEg3)_o5q08a{hp+}~Rog$NEK6B{$Zdp}%j`4!N>C7m4}`blkK!XfP` zw1tMuA$5@X@vu@5nbaZaRKpZEaiYm}e6DcZ`JeIpuR@q z2HT(hOlF;)1kD!DiE>p}8Jh|^GXKJ^4hTD{;MHXavnK}eg3%F@V=FQk*4)$uMiH+S z#*Vh-c}J{dXhqZggzPGx^*39sxuAQN5oHLjB*^ja3P{_{4%cD5jZ2kr&#UTDW3!`+ zY5e)^l&I01q?FbRFmp*?gG=q{{|K5Y>;6pU4kKswf=*|b6(K)K)&It+k>vwZ>&W}P zcn#S3gDUJ5x+juqQ-I!mqY~Nn1vzY5TX$?mIv{c1d8Y1MAgU~?0WISjMtgHX4HRc+ zxA@cJyPwxa=mkn-sHG9l?(;(+-j$)Sn1vDUp@h@FuG+MqjCkINMt5u|Bv_YY|FTAJ zS!rzV+@fTGL!ecF!f@Jw@G7(YwYi>a%LXbxIn6u8GPjEIfm(!%m|RF3r_&HX;$3JL3HD13)M4lkQtjKXv?6 zq~JQps6v+JXhJUykm{NsN8B;p$>UoH|3rNJ-sBqB3PS+)07@qDz!xsbD{FZm_I|h} zRS=uRf7%w4|KzXjEbQ4>ZlxktNF1a_VDv=Hi4c}QU$%TsFycJ~)}7ceihav$mjt^~ zsm{i=d1iu!*Im!qN;Fgnb|W6HHMHiE|BW0bm}qzB;nGu4s&%3vW4rvKeAl5UpcvO5 zd2s}Ki-}+Awmgaq+|a#tTE&^c9@sWMZ^TF31|J_&+wspsEVWo7XEqT{hPzjyKR2~I z*Dmu}lKHF?7`z?Zj7aU}LZ>Po_9e=KCGd43W;}T-E4C!WG zH0K>Eks|tY%k&2jtEDE`lZ3D0YoDf}_dpUV3d!&6D`mX4Iu)A{YhP`I&Tb|>)QyWG z)>6EY8WQ*GuPHcUG)e|N)6#;^I16{7LlZ;VC*8&~RVBwQ&mm;@iKS^*aEUR|>EUzi z_9pj5!JAvzsK#g5sG{4){%;f1SU%76G~z#RR30QjvCG_GZ#q7o?+WM4s$?+wL07#p zdxPl3rtm>ib`?@6?i^@+Mtb5X)Zr%-LO$EJd{h%F(ntuIG+znMf7C|rhv>}ry<}mS zqm&Vd$><|;92 za8;2gTfUc(k!RcqkC*O@3R%?mC5i0MvmBc-LFwnYj8Un#oQ+3V_7{Vn z#?guXO zC4j=wP25+G5MkpDi^+tQ@@eiPap5>27>vxf{%|^3XTiS*eh9gs6si?!L;l;;%{~h) z$q1gSI%(m&n^3L0Y4bjHhG>WD*K)dzg`wt}PkD@7SZY6)JidyK8}4A4TKn+WbI{89 z?P;D`G$FoAl>@h6=P;0F;R{eFOV2!?Qb>$ku9gqFQyqO;yuzV}-R# zP9Pekpg?+2Klq6H&I0?l?(r+*O&sClC{dX48GSLY?v&2^C*5I~U}o?P(KSfj_r-y@ zh>dhi|E-{BFT{6!+6yWf+P*&6PG=v|;XcBQ&1~88tLUJ0tuE6ozbt6b3gwgF9g6=wLPWweyT#sBnU1#b9KaD4AL%5^` zQXvhK_yf;+X>QeK4+d7?WNI#iEGV|Z${haa)AjS?f3k}X5BFa>7%=X@l`T`(M@o~9 zh?>G&&LBi9PEMLr6Qf2n^EmC3GgQQmIptrbADN#PK?1^TJKD;QiUb803i=&dW@Iq` zu$cPz<|fJLy-RiTub{Z^kw^M@VXb0}?BnPkew!yuhx@Sob>+}nNy&YwlkPr=Ry%t zw$*Wz-EQfZ1R|@}jyB#2VCq-(TylD#U3~< z+?dlq>-!km-^PIxChAK28gOMpXX#CkvmKF_sHHF6${vU}am*|y5*4%GM}|guebc<` zBKWZ5DxKj>^CGSw{d&Cb=z7_1Rq^JZZG-{~jJ9){-+e%19nhWn$%kjOVqQ-=yOx4c zVL_3bxL<ArA|bX_Jsq-RE0JNZ%6l}GcK7QV8<7QQ|!i{r1IaFBUlAV51Pm3S`q| z(FcPczpQZbHq;=PX~!uAw)TJ{Cx9`S8suW7=%w|xX|$zJ7A&)};U0mEkAJCpbNhoa zsfA$T(rB6AxC?K_^b+9tPNWrFlmxqV-mT=T>+EVZHlJ*7G||D0w4vPEOi8}QbaOW{ zy_OvM5ac>M*-nTaulZ|Ics60{M_YRp6e~iPPkJ%j0 z3`7TmCh4SF^MU>=f+pm4XA;3=imse#E?FV6WTiLPXY2?nMa>n9~n#am}(t%h#AyD>p> zd~g2*Ofv1=ztga4t91LdrU}_&UZHLTKFoCk?PN}k$pg$7Saq#gINjYqF$*iR;)tCIN0{bCAk9E{B|5IaxFG=+1Ypr=$n)@FQHZ?X81)nM}PdD7o+^d zkmo6k8HN+@AiS;mRnP}}yYtXrayB;Tf;Th^k&SoOpVHJD3w`r zN&sFlRp#a~LBL@eVT+sE-iZ>uZhV?oZrAhvvAf5li1AzZ=20?Ias{T34}MzC8^hK0 znTS_!_TgVfaYbM`$}8K{+zn^s?;j;vh$d5=c)n`u2LBBX)Vi50x%*YPX`itiu8{|; z5YHvwQklu#l7P!Qu6_~ySyXk)rzrcC+cpH6IBcuR_Jd_~j;n?*d={RD;Gn{^G*Ib| zMF)MwRpeDbTwV^)&N_83{ngyG*aRFUK3lON9ZjWOjg*l>rwy}t}o{P1ei z_Z0qz3jhtf&?jsrR5IYG(tV3vNQU>$Qp`D%{?Hq(MM!6NcNdlOAh!xI*FY$|>g(MbAv%U5mq6zZIr9r@NFMmODpWb{^@EC~y@<>@ zCPRS#2NXF9HiqbaGMV|9u1{$Hrk{9e5Mu6lAg=OBr2L|v;dUtDilHBn=^M)tuRZ<) zQ6PE3BSmNd8p13@|G1d5-R>mS88yAP5dp!DZwq-?_)x|k%M6s zN?+KwGg2*3s|{V4vcoCK11v*t z3aSYz)uh-p&un$GUooW}ey33>wHK3_{$3(05s#lDVfL9LOu6n|wK0jPKY%lHsU^ne z3Ml|%zlWU`DZxxwR`-(d{yl92qpkxYKVJxT`weV^`nX#GDm5#7Yn5}7+pGtxo5LC)9 zOa74=c$dOkei#kw5zmJF?)j?5)x;{~7jM28Bl1mFhK5_$(9^d5v;E?8O{X)TaMS6|UuNTUss@o)`S)2#`UgE5(3`Ha2;<25e&I(X8XxXb^j1H%V=3HMtd$xMey!T`33Qk!E8iptahg{tsGNCwoOv*O z$yUtA;=Hm`JGPgcr#sNE#FwzSS=x2+Is@mSl&4LF`2Rv8HVi4C#4YG~P6rW{r@?vQ zdsP8T&-)>62xYr@LB8d#8)d%hO*%j(vS8~e;xmyQ7*2RTJjT(~WEGJR5E}^Us-@#e z|44UZu%}9U#m0Ar`S5flm;ULK2Zo9^nTZK+!a>FF>d)46tdD@o>S1ncr7NVz9|lw^ zRAsNLc7YZkt`I8b2(`X`ba4?S1%AXSn*8oR=`gjZ8GePK;KcS65bBO@gxdXsGaj!= z%EyQfG&{McwqAki73`n$4U{_wo>QiKI%^^FSYzS6@+PHt4RC!KoL~35x<7|5-e(Qi z9SC_*Xp2Onf$fAOE}wcK9oZ>3F}y$beOIko&T@>lL+IbUlZZ#@qN(8Sq#*#54!7b? zPDCA@#Ll(c@spkaM)&(S{nlT*j@m3Gw7@B>qkWC2jg0gUqVY3ZeI07!8@VO08 z-5;QbZ^*CD{ydCBAER~{8ubK@f{B6}EbDiCF{5$M|5V9c=OIo0 zz9&c{mLS#cZ8@rpMe2irIN_D5UKkcRHwL>&=q_eldN`E`R52DCswjMp`k;v?ewe3> z&pssl*^nr3EoF4Ca7U4(kRM6b-^wp;!p+Ix4ACfiPGq=9R!$onIfZ|ZW@Otf(@uC} zA*T5Lj<%fykiAZlu8%~j0@w-00vFfNNbVQ-)OLUV2O8#;`Lm%xNq;6AB$+iHT`365 ziG5BkxI;G_X<$MYQmRR`3ueB8VZ{(5vDn!v3=ko2bUv6M2CFnd(i)N&$q6(dE`$Ky~{TMTsgMJ080eA@;I{22B9pMIoQH^`H?OWXD&JW03 zpD-_OGb`=wYf!*}$^g90TUZ^FE=nG@TJX?WHd1mdUSG7>sTL5m> z_woHI+b=*vx{8VX&Efg?PIqUA0RyH|`1OGG)Q?a>~?ANbNxD--b;Kya;F%|=ok71!C9ll+P2tjFKtpk}#ps;VQi?{zk}nm!2L$xnq$PHt8s zls83rjqx876_-nf)GxCt0ypQ1Zos=gzKy3J9v=RR!2ZNSrXSpb{|A0UtN8RV(yDy5 zuOe77JLVzX*K~3Y^?dA?_M+2fa1Bx{fLuD;_&)e@8=cjsrXgwjDl#IVeig`3s9yjE z5R2UrFNcBwyTBiPxKV03R%`meXhG*1^y|k| znQkbUAGvPBEa9^}9BS}f5K%?v;OB(OFQ&AdLdcl+`lIfw4*}7q#GLM&+Zaf^!DF{g zRX5g+9Pht63&keEUfbC~+^;HSxiY1Gv#pr;B?9T>yim_c1U`I(%?X<0K-n}uFAGdH zI_n_*!(UNL5Db0qd|vjzk0gT8a9(zWi$-))yw%R_1;3qQz*e%HKKDTQ&XGhZd|;sv z^D?c@W81fwMbsM3_oi%J#(TqPgX%l^0jhRNYmDdo+Z~C8(=Io>C%&IBqRDl} zw_R9kbXRZT&ZTyY-&Ndr{0^X*E~N!~KenGKE{vxCne5xk(BXFAiGll+>l;z^xRq$5g>&8%!$8 z%F3DDnnH`%TXwi*i4T2{<#^61usl?Y!|`eSu;I&LRo`Yi?_I02H=r;=Ta-0J>q7G? zxx>fdL+Dn?CnQ-|$>hk%TQi-3?k;Lg2+!VKC!;dIa5)uF+E{~+wZNR>e*DNLoxn+d zVGRh)H7AXYPCA3`d{GcPZWnYv!`seRs9T+SjQQOM{6ds9m5nI+V{_uc{GgT4sam;b zL8UqBtXba(DTFR1d0w_r_~_DOe5~hM9JbNk{MF0b#6D2ZRV8Y=MeBPDJep}YfStDt1bvnb0I0cLqloF}WTwxO>C@ruf}FXizX4>~I?<0zPX9lkNQYDyV+=mqAqR z*ibp86PT5TUjwCk!^s_}uc(at(K}XjJ(x9lP+p#m{JXuv*U!tr?`uS%sPJeE}#iE58d3i4&b@x0X)KF5bd8bBZ9fk z_IYr#T=hy`B#h?HLn-32-u$K)C4@3q7=PKg!r1OZ%hV@Cz+*$OyLjP)M(AgSM*P^f zGtnQ|s_M>i3y}r8i?+d={wgoboo4hO&7cgF$mh{7;pXEm8&S%yhY5Aaosn7EqB#>P zC!S)QN*tqstsuob4+MD+Xn#6B69HuDLH91|Qy;rmow=a?iq=eZ?2g{Q;TTLicM^M~ zKN=GckGKgrj?T-)r~N(SSPq2dk~;=OqEa%>r_^q-cRmzwvE3^bnF+@X`OpajD0-I4;QSxR!1PO6+~B_O$8cA!3@Duu~TdNKt<>U8{0tuhEUGA z$Mb^NC+FGL`!>4YrhoW#QnL3mQ-`NJ-G6v%EE&(XK!3?v@xg-85%myBV5KfxL8865 zrWBLS=+Anz>Xt@N0B%M44{q&gVE7}*wj~)!0npO>GL~69?A{p226wf!S{eiyLf`=PDCoRnr_^$m+ z%Oq~-6s!tbbpoE4UIF`LJP|vGHZ^ZBYj#rcEcgB740b-(K98TaEjNbNYn#CKENF#4 zckNs_UL(?n3V9;l+&{eKM{b=FhprSXE|>6r-Or9AT?=Z_zR$Z_x;|~r{;$ad{^gyv zaIq+oP}H2)aUA|oVAG1uJcGlO z$ER!{WL1}Ud_(T5fkAOL{y&9;7uX9ALsK}2Mz7~@`0sVopp!liR-1@sRudgr#G^CX zsX)BwW~C=xE>A+E!zGW|^VC<|vnaS`H~fdh6Z+ zm;lcWoJ@d&L#n5{outte+o~teZ)~FMrj?AIPguN%$1VPxw{RX<{>DVBH(JG&JGAtO zIfG+V{Mz#!uZus*;LnY1AfUd`!e(gSKquFCNNw$-0~h4aMvaAEQ0h5+f$Ewde2Z1p zBc4nHS6;~tr~6Y$?;3ju*!s|&WAHe)KoC{G$!+s+x=@T{TWioM?wp38-~BJVo8Gr; z)(05S(g1|ltjwuXgG?9PUK*xjQDx;P7#JA59xC+u>A|$xn=KG(PsQqNIrFPWsJGpm zLG`h5>B3!tT2n<}AHlSYq70)eRJd zh0NN@(AE}qUr5C~3Q6kcWR`VADdP>A5%u^bb<|u0IP@s zCuirr%}p{-AM4kX&wv=AB!)X1zu!pKBOaC9VFkkg<;Z4K+;=3<|#z* zNfzk&ha7B>~gK{9wwc!k%M^ zc<$fDH+;>_3UfXjM2IAkFwM83?~P8lc)MuG3~*ir`C74o)BJI7_0B*B)A@^zam#*k zV6%#o=E2VCuF?3pO$f$4Kb3@ng4&GcUN^$N;c{6+Dj!p#wy9WB zDpvdDeZlnFa!9pVH8wKA$E1o;S){Pd(4V8ar_HvgxH4?`7FPSwkG12>ZPoVTxJ_2i zeJdDg%mF8SQkhCU8R6%HbPNaeH&-lQOhcG|ATvMcGeM#pI$2lL?`_ZQ3Bwo@H>pF| zj}BNKq8KT4<%-81%zorB238!9NF8Ym>xe>J^ySs2`Aa1W)c*CW+CdPcBkDr;8K-=G zuT4~3IJN~yBU7%glw_uXVm%*-Ea?EopR2&pzi<2b@Lpm)lgu@{z_UOU`cL~gck80( z#YSxJ&=4zCB=Hd)+45R+tne43zPcw%)-X|K@28K2UWQMsm|>%m+^q4l=rcSoQXBYR zc%1ZrUtK8N=h;Av$BWrPbQa9Nht5W+dDdgMvGn9qU+NUX1}#e4(H{8F<3^|z&Q5@R zN4Tl4=PJ_KRBc?U`eZ-k{&+=`waLtzzG)cGlkP80Lo<|2n+!bNrQ_#cwe~A57dSYb zcYD&OAxSkKO~IEgQ8|Y5e}l520w*wB?OqyO;8!X*sna9+N%w;>j}XQ;s@B+-+pQ~V zU#*bk&c}c~UZ&p4=r2Vx%Hz)dT4U?-6A+tlWH7mw({9#*Bo)j6p6D&31UJ#%E zrVh1r50DLBASwiT8Jn6?cD=uO8nm*SB7bA+DiyF=(TWnFDjwjo6QG54rca6A0TdnO zJ77R@^u_RKhR$FlC-jFFYT<-Ulb=R)aO5zw34AlTP1R{%r7cI)i}UJFJ5>#^Ux6%w zY-wh)nmiJ!)1m5V{6qoT{B{NbH9U9LectX8CLHSeq}W{WHW5zVT%1P7VKh3fC-`{|vYeN0 zLt{UE(ZQksR5#x@F1xh!^%)5WZIA{5s{M|g>$AQgpv15oy==j79Gjv$xVjCEW)hyN z6!ooz!3am>$RH0JV7j9xuKnthNIwwJj?JF1g!A5dgk?!-0Z{OuK%9MT|A~xr{vnx zV?_DJQrA#-iU&||kuzKg1ZFy!HBqe_;3YNK4aQ_abpfG8j46?9l zyXF4pqWZ5rh44FV*TXgjP2v3;ltRuCw&iIjyw+uP4yne%ht{g5}U!TIb)I8 zUtTVdXjG&%s|leA5*HV7)uc>*28eqa+az#YtyUolgb$SlM;CM{k_PgE=Z z@sdRQoNaM`Ggnw!`;nX+f5!$x#S^gK;3~gEJN!nt3OBuBTiY4pwz0RgY%MA^%@cE4 z>&Te_X_!?&e}rX_DqAU6StO3jm(OhPGY0ixF<`fB30{5H`pW}x_uG}5p34y_*IMd+ z%`o_TR^GxCE2#DOkc{XtQlwYCQo~rzv@qvBz%P=iiQuaVtJlnSw3aLkCxHvDI+?UZ z6^S?~*Z%QY@llNh$SRw-<6$+t>|vslCG2P6S+2DQR#nkYMrrB- z&>Xm=Zkl~!o8yP*q9r)XzfWVTb=WRe(j`OuEuvWjQ9Pj5d?Yw9j74@E!5)v=tr_vbyEv%Jkx9_lxWc zHf1=H9kH9TE3$-%rZgx=GWF^9SsI6~!QVO-;~%J%4GuDx0n_Nx z+(#i02KP&&C#RS=uJPcQZWR|VO{)%a`WPt_B`6x3xOI3`=O~T{9e5zYl>Rcc?zH=8FB`o-zoli{Cf$G_AE!e zMg!-f?H^$q^C)^lJG-w#-EsiW8^tI^*%ahf8YLQ3hKz@blkBfChMAU(A zJj=v#%*mg}^Mrfm;nePtR&^X+5eQiga5((5zIfH!SK@#Fe(Z4ZOB|12hQfKv^x|&c zOw6;*_HyrFRGT9tQ}@Gjl!`={p(HgsjO_SrVdKw_Sn%euPMqYsoS{w_PQ%F{)9LFb zsYPkOVa+-Mv+xP!2|^@l&-my=XWPk0dN08$I*CM%w}XYlp!WUur1cYNAWc(G5dtNN z|KQKQ>a162e&sB@Zw|pdRKQ7)Eeq-R)h@4FnALPKaXvGwgzCm!)7|jTZd6Ko`?Bk; zfgP@QAK0`aMp6(?mxYF<&!{t*#fQAjR8-UpgJg@1%yJqxe-T`SdHx{aK!{+w(flJoJu*gyR)@sW3La*2B&rf2hz3TJ7rnDi z(R=>OdS_xbpR@F(4D=c?gQ0cntS(jIGJmG&>z1E}q&fa**}mwBJ|wm3nMrKUtKa^# zYbG2BjmS+Qux+;fx(U*>W_nJ`8jT@q<@;lJA|_tP#1vB;Gv(B-SuI&B2|1ahM+<$!X!xJE- zAjb$S%_qvsxS(+QK%+GUO^(qAVJa`8zVe_HF_h?u5d~6j${?rJNtQ+mpGy3uGec!# zI6DiKtb*vqT$jTf2-5D>B@OQMya#Nl%r2Q(w0}=DpyxVePX7oSV`mlUw~(2?yMuVS z=-WFyD)0H7yg|Y6h4uHSFxdJ?ASqA8tU2ngd^Q7;ui1#S zH%zkOJ*~WPWiY)u^V75L<{ozNeu?nKN!P05G!?9tgtE*f z3KmXB<|o3+|KS3}n3sMH?)IgZroSyj-S1ibMDWr7Xn5EQuBOHZr`>{MMBU?Z6z=lz z>kJP?$g{1te6#^uvODv44g$%Eqhx}iBq;{Q-OGK`;wVB>GtUG)eFKAu2W29vit&U? zfI&&MknyLjm%!8Mul>+b&HU*mC+ zt?$Qqk{Hc5w^k#TX3O$NFj^6U@kr1guSrn83f>=|uL~)`?A5C?3e5LU%ZT|qRTN4& zN!A1i{x#I-64LT%J*$qU;>H`um%CNs;W53~U%!@zf4AZK_*louc5ZG{44y8#)zL;> zPrj3K5May7u1h*xc!6jP&Hpmuqp7Ir!>2P$g-PYrHY0@kXpf!RF-1$v3&M^25in8U zhJh%;1dGsQciHQ(+^Pgs?~52h4#vGDxhN=u_&+aXjnGg5ry- zT~QGbm`wg2Fh3)c7?eEduf$;x+pC+Q7l#t@HGa${2FHa7PR*(Yo0oRQ^ad;fL>0fg zJ5xAR!1uu+@10U6=P?^>P+1o#+pk%0#N#PJq7o!F_}E7|!;~&;{g%0Z&6WpxHlQ z0EE0bAx?fa6ED9KJOEATN9yGtOgyT5@QnT8L}vq8YLqhS6j!Gw`ylnd>M+mY%!TM| z+^ni>)5Hos&43MhO{JM1Lhux3-IY6Tf?77tJpzO{lK3jG%zVm@Sv@(b6CVo`2&(@^>KhCzh9AqFbvX(wi zDs`##-G<2&3f4;-BHk+=rgnx@J0;;42QG{8wm>_!BSTvRx-6{4wBNg4@!u=xhJyvQfz0-JE=GiIj@%hH!ZRPcRb1o_`SRL51k5HWW_?(n z44ehjf2)kBCwxYR*AKf%Z$7S-iI>FQ%iSzW%;nzf0#NV`2WR$u)4F+LqLI=+E){D3 z5oSH~K$@Y?wsLOGIrkg~==+r*dvCux1XO>>G~Qx7-p$g)h?gi7E+ zSiDX&RMaw6>_TNY^8YW^-6x;`B*>Z;wrqb4l_6a-tlz;;hN}v3;)BT{*VW{U0A{$e z7c$b9a^QonlXoG>vZ9CUX+^-xG^hZdpV9VM)S48^Vv4R(5P|WAE_>TyT2L}om7X7s z^w^U9am(rzbQY=KK4FpBF{|i{+S!Tx@UZjPa?$I3am~I@wZ(7ov##1cWNe;CUc%r7 zqe%Qb;6>>ASuTqErz|H&Cq07!2g3Bhr3OJUfiKaBaTb1($u`CQ3)l1<&hB;bx;(BNpwq^_3tNhzL1 z6S0j2(!Z{Nz)c4(C|S0gQinR7z@GgaI=3r^x;3LvX>+cl!||iT!_9aGVBlaJJx^U4 z{bMkPs9o1n)A9~5rn$(%2F_qs2}NlakJ3>#MAh6WqEFLp}r z->+IS=^oeZis#B~xjJB|LD=6zfZ;At4hIaS#3gnq!(tbU5s^i!&n!Uo;afs+vH~9W zSv(Z7$9%xU`DL!8Zp+!lP1vubq(qrYQIpm4Yf42e< z+42!m*8qt*hevmHM`7ZW8HiI}ao`>OudZYl2AoT_K45;4z%Ahm6QxOR{I#LoIvh5p zT0K|LE^glRFJ231<1)@9(LR=iHbd2r=z z6|0dMXLN&0XBTda%`(rsyOT!Lne4oe^P(=wx@E%@x8X}2w4q1^$(FJQ zV<0z3&JKM*l6{wnA?wy=>d{u4g^8C&2=7npPX_Ao9;puQz42Il{E&i}Z81m&2r?v) zYM_OQ&;IwwmDN#x(6!F=lCe|Q;_!xl_cN@9Tn)I;5j%~vhM?uTOHo|&M(iN zAuhg=d69Iaq+YfTv=PfM8aO*o=?MQNfuWrkWhpIF{t(iKyWanuaxDRqhyOd}^5Tby z5^0iSL?5 z^2^oq8ImRFU2~`MRo%U;kJ_c>J4sAfr82B#rfoQh(n}eP)MVzP6q$ozR~d3?`Vl;Rp2VmZX|dbs>!x7Hd3?Vi59}=tsch9p|KZ(j{BXPJJ&uDP;}*NjIBB<0i9c0 z8jw6*XZE%KZZxx8%)2Y_Rz0jP<+wRm_yVpOlj*=HKmd8~!@oKKunmGuGg1JIAwlZR znocTVeTZOT+UKS)L_A?OMY+y$B9P1i^>@6%+X!V8cxZI-Gh}VbQf`R6%xmg@%U$G za{s+Hp6)Hcq>6_Yt|QOanyH6ZyZ?izTpaQ8rNk(~1w48GOIzF#@hqSHqm5FBLm}x$1_e}l2nq=3rN9HYJP|f>Ga&mWV2ooqM z$#7!jscqzh?d3$s!srt8sNM*jr}2R45)%j3Ng}U`zU=bhyi7?+ zf3Ix-z)e|_p=l)mCE|DH-!(REJ%zx)6!1Esiy%qe#Tak=zv?1h_^>+jQJkOghTTJ} z!)2iIiun($U6^wF*5PjOR^-^2dwwD1X@@EXVaz)_uEr1Bk<3~V;dC+@2#oKJ_B;Ts zf5&l@9L5ZQkEA2uG96-&NQmb&$=MX^mM~4iFGFHL>hN>QIe$YR<_EoSO=T){W>6Dd z!lY%8k)kdN@7?-e%Shfv7E73C-}D1`MWNAWFne zSUR1Mm!{%6Wq@EFlwHKPO^w4oq9zr>f*tInL=?h1qW&FqCd*|GxPvjr_&YxEwx{Jg zp8zaF%kclRNhG!O%~@K_?EdF*5= zLQz+$pmLjh>H!yd%fdo>sp!&FiAKsIpIgJ4en)(={@*0jDs*d)CYb3%K7*9MFVmzs z;ZA&M?ag~PX@rQ=6QrrW!Mk8$r(r8^WZ%xMua$yZd6gT;CZa2d9^xBm7!)<_>|V?pnp zoFM+4vUqrMV*ACwDYFKRi;JGn`$`QGEH5ib2GgWPD3OiKPfaPg++~OCrr#54gL#)? zf-cZPAx~*%!hRvvQ~KjFF}=(?1CqEbWqVMwtg?1v>jt|m&i;cF9S@ebXn)#Gt)dMP zh+>*&l4zA#(VFQm^j;KU-~(Ss>hCV0F+r#Pd@4<#alPYZQPxCTSi&^7e*QBAydi)a zUKZv5Rosx(*}Q^gZRXr}=b?tV?9ou%NW81cE+jcs()v;~cwmP=a zvANItdEU2n?GL*uKOj}txz?I<%rTB>h1B_BSlKgMo1z5BpIM_iwM84F5QU=1RB$1o z7+-L|bzm*_MW{Hj36sNtPqZ5G=6K2p9*5!HZnGT?92}g|Ze#Sk`d&!G`+|Xa$rn6) z5@U?%GSF`agj6JGMR;)Z{D_;%A)!1uZX6_vb(G440{%S{K0!I!)9?ofhA@_PyhM5P zgMq;jcO!0~T5*BfoBOR2g$kf?Sf%?Zg^YyQhqTBb3j7>S;p z0#g>1FDQ$;mkxk5;sF8TX_44!SkRTastWRZc-JNxfL3dKX8b{fVDNf>s@~yR)m~jz9vsy9d55@gaLZR-RGiE(opeUfEYNY7sq65N)4&s7W2XGBYJcpcf{{JtB zlu1B?gQp)0aWNrM!P`wF>@WNOPxVUa!i?q^UVUU^H8Bt(-=^G9M1HjtpJlM>Yl z-%mKql|DyC(McJkZ4!wo5?509yK;}E2lFL2?C*PR(i%=wBE3saMnx{Kj?Z#Hb&S?# zTUuK7=Ps-R&zmZguO-6+Cn19IBRS1W#!)#0Nprf9e;AYGi#aD$pwb8@ti`ATCZ#!U z!)`u6K|6bv1T^EnYJ!|&U~68>w6wzW8f-)Tt>pHMtMQR12t_CnEpHF08G3Oupolr6M+hBPkvm`*OwRH`&xi>+8x{= z{y4qskl&Bw@ynSUV4*JWzdZG3+Z`LdtcJ$qG%lE`gbzwU_Z*X|Q~>TcR!)|Zsr9+a zhLvNW8smDcbC)-S-wxs8q14sCB#29X8n!_r@CZ67bP% zw#KrwB={>;jEq$&x&Rs<2`hobn}}UD5bw?UCrSI?dBxza&|TWW*#+4)W`GB^pjj>W zm_i-8M78GK#UD$dQ-#BaXn?9kl>Aa}jub&fHN6>@r12#x^k4=B%Y&7@RUjs%jN0>? z^M%|RSThC;?)1xe+hw=|+Ata$^*6)rP4@Z_$wWCw!;jS;@fOWzb(Fsozu;;#j~+e~ zlMWL7cbynf&u~ry#FJh2?wth`pjAQ)?=yp##mb0;QLSFQt>j@T2l9A}*NN4s)9=Lj z4A7aF`+Njg@yD+ZD+xxh`t13IRCm8;=|=N)J)%8gH87hga@k%;82ILepBy?{Uv zfOU5?C8VQ+*FP|j7tdqBNLBE>BHG#xLBbjiBV=c@78#L{8s~8v`g-Z$Sh!ufK5WB`;$>ku7Ddbz&ILs zW6_St^{;=H3T!tF{RgG+#!B=^kiH8!QVahqnfd}4fanYpWn#1h+!b6IkVpiW@O6Xn9M3X1xsr2G@tF2(efti_8=A(( z#yk75e8cw-YQ*-_;fd>iuHf@;m#!F`j-(Hcj`s2+X$1rK96)3I1K(%|qC94HzE(Tn zuS?4tKNwlM*c2rY;#rJGJVcJdA~pdAv(E9;FV=5$M#5>Dih@YELn%t-Z>6$4Cv>x4?leryVGvByFuaSHAX zrRw>HTjbF_02(tKY00U->hgp;9jR%O!E`|fl275a^S*yVh48J#l`q2Y{?Ea4wIwgp zC{nctKoM8=7oS%rb^wcacm=EU?-KfU%Xld)-M?>M{`TV^O*(av@Ty99`E6C0luzA^ zZN%TSvvp^x(0C2ti4yZ$rh{GcyeoPxA9Cu5_li|-9$d!2Tea~@z{K&{pmVq_mUO#2h*gKxuYi9xFuTL zSeN^znp#ijPxo|*YSEI5<9Kh&CMt9jR1{=R>|&fF<%Qr|0BfVWsO$|TqD327d!me5 zaPZ6|p5BAjcIqe4+sK#S(EtJ;(`Rn`49=90EpQqCB{bjJqQM2`$-LAV6BGnC08~pZ z;yrm_ifX==!TGspFBOkW{p&V;ed-sd7L2@mspg7hJG?yJ{SHR6{1Cth3FzClIh`CE z3RuSinE~wE{^3jB)31xV(94D!Z$rizK($hDs|VgjNwHP_rm^?_1TP9Bam;8d>Ujy@ ziZfDYoSdX2FsX#{!C<6a6#Cs!Zi~%K%c{^xU9dKuoRR(F+5HQ`8tH4%#kEL?cNaz0 zM!~mX1At%NaGy|IOfC)QgNMI$r{H<3(a8KSv}M~dXr$7}g5*OgwjSQ~Q7Lb(asPT| zqE7#X_r%3=I78qkIZ2gt-kdYQ5L&7%w3M8@qn7dS&B&EYy|F$_!ai9vA}QnC;QKL{ z8ZVGgsR^9J+ip~py$SQSCrrxruzV8H3dB&@q8N8io2&gU!erR!5OF55Flc)mwJjLz zr^l<~zGW|3PfzSR`%9d-^zYN+jw+-H4N#${eEUH4lC9lud)85X*(=kzX#pdGq<%BH8v&{maVCCMmDmr;QWSg1#UV<&+-TU zVx0pgQVrJ#k_l8#6q4&i6kHZB9<)Y5QHA_&5OutOqlB`fLjF(7?_dph(lSmnSt?-^ zai2cQF{-;-HmsUw0+RyQ3hOA{`LpJX`!ZEF62tPyslpiVj&nurR(%-REVKYq>$-rOpajIxom~WNpV;}aVf$BuXKF(-YAZ9oG2j++?JBK;B#7t-Q)Iv zUh9~T*Jv14`r)gY4kXYLky30Unv>1t*TVxpp%=`yUe_I!opZQ+Vv_=LsYDZDRR z$ZBp&A*$^s9U--GkwoGU%Rltx=#r7C3wbLAN0o)X>}cqN5@QW3wjs!*zl(vbM#?$eXjb3-{0c#O?l$(QqZ3>i13UiJhHYX5c$qui}L?W8LJM2jZUu1em2t3HPl2kPNIsn7E)2#RPGnl9Op}Ri#PohUR z@T-rb0kC_bex|Me>jhBd9ET{EIl@TU@S0OX^7u((V)+mKSpg<$bR)Ms425G^ExYJ4Q7)4NiY3VNu!`^qwg~8NikGL%_NAfX?(O}O_9-nX4N{dx zASblEfG$FKDE+g0fEYAgE$Q9i1+J=>4c;~h-Zr8qY%_p=a*wOHPY@XCMCtmk2b}@Q zYL(9jOWLui(U`%R6YqDyw&88jamub_wIhH@YI=YjBpFI9@Tw7=?{v#sawa;T)ue9Q zKqO1?*pU;@ZUG+}$q^OVHJ#LX6(Z;rU{y}(>?2hQZ%ll)g36_7uPBRs5?mhu)GA|7 z3~8y$NKQcG5C5r%L~2Sr&8enVzikO3%$l5fN1n_NdjpoNtzzXOkE+tU9(8c`_sp{M z_|g_7p#oUPl3b6bVBpZ)1uu_(_`w!Y|&C5FOzJiJ`c6K&jG0t3zwPpuvK5XWEGp2H}Ss z*g3@N&0#_HAihFY5}wiu%U8Ht1Y~YNMh_hur;v%xrad~z7yt2yhesRn57jkbPKr^?51p~cN&4#-WF)>B5^oE`pCp$r@y?!wWSv)%IB~wzemw%HAhi~3FJbR z#e+fIDAfWBtWj0P2PFy$ z4`kz1d_%Xv1P?b&agK0B^x>~XI1IGOA^4-l-aAW_ZEKsG(Y>c{9zwgVwkM5L!jKuo z8L-Tz^#zs9DXW5IB=k^VkF!lZ+!;`GYZh( zC)@7mQiLI@LSEmM3-j_`BqM{6PDuKfmn45m$bvF_ILW!ptP_{beG0enS+Lr$Q3 z`-Nu$x9dgr&6PiH zMSzsC=8}Gk5W+!Vc4}`^tC-lqf$zwNhd-fwSN9X~VSRQzA(m#?v&kCa83?^rKKgk z)nDqyisgbbTZ%I)S3=H51@{-)Gph(<66ibpzIPKZtZRX9qDOh>I|T1u&Q!Acp8Y5n zOrnTbCv22@5F=&ss>}MiCVOfUDu15RW@wKk$}N|ig{p?d#mlK=TXr&7wD=(huBG;O z(9ghA3EfJ$yyjH@MrF1<7IfXh(t3P&4(g_|UXY34B$I>!%O*@`=0T@vl4KKHmdv8w zj0<5L$O;QhGYS)Hw@FhJ=R?v6|1``c&e8nb4oNKf649JzN;|XqR)n1qYw+}GWxsl> z^KAPx)atz|Yu-wWJK=+ys@*z3g#k<2rm37}9ar7dF;#zH`AvcW0X7KBo$idEv~&H{njKZ1R(`yg*lOLBlsTKIy_ld#Qo8Rmz_n|!-% z$JxW%pO0*=>tkCrJ=ys4^pXv_!|7`S7p&{Q^m&Puq{nbN)_&PPPgLw&IHc^*zT_|G zDg2!Dt-fH79^bzTAf_&!@j!f>{(b>LX||jt-u5gLiGwC38p{?YP#Bc7-|cDzGc#xl zK2k~mNX=mGC}o&rDw~}zY%73Vgf)JhvC!BVJd;;ggs9lnFGMVmcT6yYu%wMb`e! z3HvxYT6gG6U8kMHjA3CdF|C@^|@dhFY1pgkr? zod#uq9a2i-w>oR*B6U^B0M}1BB5x6DbiSr}Yp;Xj9D--uHamjBtF0caxnGGPO+aQN zTo$2>>1*fWWfE(6pB~#We%P(F=s_p@13S8(|1UPZXPFP2j94w-K5%j`N+ptJ<}ybx z2_m|(FsLee`hxFT_Gar`)EU3B;wCJr($N#N|NZkw=@PP#y7Ne=0HZ>o z2s0T|;gPh$nVUfowX9MB+LJa?7A<@*ypsrH8dQJ z^X5+H{lyKZfPksg`%QLCpkh&9SDx5dHc$*>F2v1mj6pop1o1&CZvhB5$h~BD3C*;( z>KEml+L4s`WGYnbVxzDE`XCoHoP`3dDU{^0r)SI>m+{i?LOt#^P;Pa78yD4@``HY3 zC6}ZRTCd!GI$Q*iKpg${E;e8OUuh`KynKYgN&>KVHA*XFJ#ap`h2Ch}{ zenbSc^iMjv<N5UuRKI4PD0EdLm|+HjVz`G%;#v6?SuBM?2iLeVbU)+8$L7mDVjKp4zC9z;+@wb zDCaajy0u?OK@^`@n|LZG);~qn`>WU;%t1kj)%vF>3`X%W0fKoi%pRmW2^+ZY!fUXo zlc#f|w6=tbB#DE43P08HL?$+w%FvF( z?8gh^J1-q%S7cpX9lOIGm|%W(aLEk#D2F4;1s({42&uq)W&`BJ#eh{D_Z3ej)eAyL z7CdxUz>Q@RhK;Cr>n>J%Q88-bXBn`<2!jfHohb3fsRoe4ki)^I?TT+h`dlioJWe-O ze+uc2d=Rj|-p-iw>PAX!cN)x62F<8;g)F>D-K3)6>>QYl&lpq@q5g}{&i;{J0$Rf- zVt{hH>^s%lKG!Nzd;$+5zK7x)P;p)pdaMU$hKqDYE)4m4t;kx5m(k`4Cv!T=@o7h` z_xyttnd{x#9?rXK9udcA#~{zK{ZUL=*(X56X}dR-kGi*VkOJ{wCUqWf6h82vJgUs+ zo-PXy7FsC zs~I|*V=lF#3)}1picSehUZus~5Z1Kn6;$2{O{X)%_eWxxY!gDnmdrfpJe#OpgsCx% z1kA^C&#yORS$MEgkU&^+#pNRtV zbe^S(WrKUSj>Er%&V9JYRXeMj8e0nP_wlgWfyjC8xrlKk`h3B1Vp}6>=Jd1QbTbU4BS)xr zQfikq83602&Mq= zF80pQCN>LGEFvcI;nz=qn16B9SsZhNnU<(LwZWI#C3K_Z2f2J&T#j{7yO}=-R1D>u zp4WYQ81@6*Jwlh>tm7h^Rf1z`ZL^e1_K$8tgGCOLpXFUc&j$%p>hF^(;#zEtLd_1B zF~-Kg;8AFAG`91!odyQjD}uG;?JMc#b=CE>bMVe&Co}gw%hu88xAa0&NNwR;xvR_a zp7~_~;m>G|aJl}~pJ6^?nV5QCt(aK+4Gy0#mI@}G9AM^;WkG@ePA;d|zLp4k;c$zcS)z$LbM#~iG##ee-r;&_s4n zK?f09ctm|yNC3{*uN*OvVK1l*ACmTU*@AOvaP5+5VWU-DX+7^5kG2DC#Qjd}+TBp| z|N8F`iWA%gpf$fZ0)W@U)62lk9@32;UJZu0Ux^`y?~8odJ(h;;i}hAp{jSx>cBDVt zDfUK%R4VY5xdE%7!_n~tkrQWf4d32-aU5g2ARqsR-XRht;q{FIfhQoX?MrxUF8X3e z{M(2;G2<}IAiZR{Z51;v=?snVLD|ItCdRPvFVZs2zsfKea#(}NO8CD8$W$IYOV>KE z(vR&`m|AsNpdDix0-IKJ|Bj?8blqXD@s07z%OlEWaRwhwq!v_Osup+eoHpdnY!<33 z>Nft+l>PCwvvhJs8KSq7T-(4#)<+7C0>Tug^bN7$9@S|uPbWIHVW3z3d?WM4t6&rWKN3Qj0|E~Z9{UaBP z*7qzHAzeq*kA(PS&^AZ_&HFmB-%9}}t?SeXBf=t46x(N4US|CBp+b>`gv!6rsfxnv zpPik<3oB|$XE4Xlnf@6w+BZ#rwkb{>C`>J8y45pVVLAMJHA7za1spm;x35U5Cs=ws zHXk#BPSTPKa|W;|$0jgHRwGl6toF=Ur3gO!JOuTO5y1s`Fykc3l!wMwPYrd~2|{t= zxT|JZKnH&?*)uTUMO!}JOrNf7*F#3ha|5!$t;pcB=6bQ#1e2GSS6W>ivhEWA)&4gQ zU8ECZ%@)oX8}A65Lco$QNSulZKChG%gz-T4F)7+yQ4^je_jMWtolK2`7+s}e7X^m{ zC_ut-1~iBbgmaElT%#evMMRjBRLsUEFspYlPYpyIfvF^zFa| z&>F1AZw+?1io(F2L)gP*^Y?SvqXAwIH^$$xAQU0VSJ82@hD8O|x!50wb8yp-bUhhy z-bhE<;-qO4DZ2Dj2QIAiCe*0hhqqU|JBF=3xRpsJJrHGCID)3{;VM;}H$;)mVdA_v zj+;Hv<%tA>OPfKZ8pSPCN4#|7?(kazk-6ry{taTxxY~gZR97~Gy4MH##dTL>Dfe{f zQ4`)sd524}QnmVIIah|nQsvo~=7hBTKo6(2?D<%PYQCHW4jYvyl2AT-8Xw1b-$>Yi zA`49Z!Dq|Z!wwR7|I3kNC6*0!Ty?`phLb99Z5=`g5AlLEoxzSn>j5d=fa}w9!bA_^ z^XrGS>}xt;q8xS5rd6q_b*#!L30!|J2GiB&9>&?u>I;prnT2O1YMsADvOCwbwlV!xe3MnqY81j3L z`I!(k6cFj(mtoufV~#;1PI6OvvRE8D<{Y#Bfa*I2zHQz0qcoU<9`0x>jGA6b-=c^l z6)(TR*t$CN6HRN!kpDb0?;AOmY)s#^bF7f%-m3v9CNosQLAmnT80cu>DbXW@cvQ zq+~TbtDA@i4rZyqII*%N6`zQm8yvCe7Nm$3J}A$Dt1i3BJEte=`s-Hee?sjkTN0+C z*geD+j1FCB+xH)Uq#BaM$ru+6NyYeGbYtQ;3~769+PC8e=Ehq8F{)ug#kb7jb=9>y zeJ8@i50F)jvP{^z{GfmZ%1I;nUbIEr3sL8PBswUDDPuz$ATg(tg; zu3pA3`{WI2f8HRXHCGKF%Z z*vW5yb{eEz@sH?i*}cGm6H7%@KKNL+L@Xfw!kdgJ#l3sM228&tk)S1WB#S@1bFCFDdV}>R;d_g@;dbj!}z_i?t2Oii4(Blg~vlw+5H@mH8eDU z(Y~0H5(;-Q?+>;aV|I4zgP)PHUohEQce}eh1nH19Ll?n02t`(^Pwt}Bpx=^VE@&jn zi-$*qEd4$eK#s8=az;bz4$@W9y4QL;<|^cg_lI=SzOIYnMrXES5^<>>((fL>XFi`$ zCTihPQ9u-x8spK?|0?@)TZaN#HGKONM@kus`$Itae!tU$cx=g@&r7^0q!iR@+-$qB zSN1aC7cFC7n(BbOPj0{PwLx#3gx0TA5|OP`tdnr4>5>5GxfrpLkU5@0u?cjNPCvU2Om}n!sy_LPg3?I?;;|?Us;YU`Cmvui~>>2SNE!HUZ|I5Yw z(lZBQivLYISp<(y$amd(-tcri9%Q6*cn2UVIsH(eVdVDWLkW7>w!N8b3$>2zx?JQG z#o4Ep8#(OymaK|Z5RwnyA*Yt!G<3G(il{dO1vCBD62j10aK-H0NN%4#K{JapHn-Z| zrUa$eKG69}Tu)vqv;0Ko>r>Moz2wYjpcirscIORlTK@QxrbH=cas)K@zm0fzpB%*r z*5z!YgoX((T-#@a_@gYiugYe`XPXAgIgeZY5B=!(Vu`%>B1Z?*^Z9varVcy1ahkgJ8Sj#@A_vIUj$| ziRZY*3w5RL_dE=V%}?Bg&q%?A=r^3gF{9sCkZLe|r4*VpY?P#&+_wJoGH(teQJ%8h zX*DSU^@BODH1;}7&pn|cDIrfa2P@&=Y??<+h`3oyd=@PX_Jd@<`}yJ=OuNmHF0wgS zP@585q=tC(i`cy#AxnLB&4ZS66Rd6!%a9@GqMnd1>bnW{4X{$O8TZt*x~4it@c{RQ zZ}@KaEIn!^>3FV;GN|VKY3IBpK%4=nzH%`RF_Q2kY*3O0bvyRk^FO=`rodff+L1p_reIYU=$|X#K z>=e%@H}Sw{&}n>2Oeu)umjgDLnh7JFZo8<^2Rt+L#uRZDU^s+7VtUPHhhUe1Eav13 z`M2Ie!pn;f*ih3Rjjai;z@_j`m4zzi4L=(X4DNK*jWCv0)x4eg$5bSL=CwH4Ao4BM zd4Nb&yP~P`!}Kow1_}zyLVwnjA!7vjGZPofG4(Zebv+ASkNsvy%*p2XPha3F0`H%X z*Ci`h&W@911ltAzhlrUh(<(DME5mU{;}+Rr!M2|#_M9nf#QUcd2Hn#$Z=w=QHpxyq z2d0vqBV{fpikPF^ZzYDAdUi%{%776rQ=2SqR66`5Z1S$U(D2drgf2#KHbR4YVDaB( zm|V2kJFJmv7##^0fhHQ{f7+(kz(3X-lfesHgWaJYKYqYYLP7aJ*C;2 zT1>__Y$dp-Bo5n{4Wq{m71q&;j!FeI%c?V=l`ZCQ^* zmrnlUHR*9u8J3y`7da;}zlB$Kx^MQIxQ&uJ?~Ugxm4x&{0bNejrObRnOc$8I%u20(da;9DCzB~xNlvCGa~Gn*TXD|# zeL;zrvz~sTYbt$op3zIFppW(E-2Jig9R^%=@Z%%+HG+hTM^hO{m`OuS0sHNF3uTBX z2SaZ$>~xg3`Fr;mP%ygSb~DP#s(#T2&!Kf6Z*8r{WAN-;;6{zDbP#tK!E+ePjr_Dv zM=B~*zv7eAtrZ-X6xV5@A?5WPAW7D2Ei44w-Ps3mx~6x#X6sI1BnLDRQy34zvigRN z|2;`Ns?dh41R%J&R#$_KI8f`@_@MhuOE{|FW5JI2ehY2#i8brOj}elSK;xcV=`PC$ z(R+E;pULLgx5%Gu*$H5H@CSsbvX0QDbeil3U^Z$Xb2^KkJvo@&oI=6Un2ux#gI~J^ z3QWk$JsahpP7u!+xEW`*@ZmkgrU|dEvE1L*_aktGh~m>kMb+)zbMwXArh1}U9L*hZ`N`| z51TWUEbO<-Y8(Eq7l4`qVK8{EC$6x3eOh-om|-iJ_+Smq3K4ZMHJWT}Y4jT#d9pPRAX`a_bh6diFb8IopX?E z#lUAm0GZmUeFGmO@&c~(p>LBX&-4m#MF06vadKkqo-kt^3v8}<*5f`BBV7!=bEK)t z)7vIg1Y*-FBXZM2;{)pz73|L_SpevdkbNa$I0Kkjw3CXK_R9VRa^9Q7#dqTTcCQI# zQrgRr+!{!dJ6MN@z(zf)Vg1Y5(|bx9bFtwWxC_0@JX7|z@i_Wr7%@K!e>s29OD`fU z3#k{z>cA$Oe@`kA5MhJZWnlfx=a5h_ddgHB zIM6#TE{bX;mb!_-U1{SYG*-BWavy5^k)TY553A54L?cmds(nw?fkw_3?UqOH72zwH zp){SSy>z-bYmN$3)l7Gv;C12=g{_eC>aXxX>o}N<@x{0`K=cCagy6siNf+L$-)WVcMu^wYtBzS)a z<_P`-A81Zfr9*uCo?Qhm>3@lRUBd7lsv0xDDF*MzjbC#nOIv>%Vx3%#Fd)uV%TE=RCarIwq2Xf`*|t# zR(qoU{(fpv1I)L>_At`;fr~;gaZz!@r4?5#50p&MjnGLqhPbaqovu+%4-iH*Uba4W z@p5?9WzsfDLQU02qfX!-!0CTKh?9_6aulC-enYr(Se?JxIiXKR(v?kTY)6s_j1JsS zqO4Nlr)~}v-ec5vi5Sk6S^NBWbC}_I+7a)Y@;PtFJMvOS;~N#{y1TvQ|NPlr@k3D! zR9--m157{cAE~rUkgt?=87z65X8SE=r2iT^?tfRNlPEjs$1~ZmWmL^kPH#%$(6jN7 zqHufLZ$%ML4){yg_ouQRnTUR9Amc;^6cyXV_$YZ$_-Pma9j$Pt0YJSBYC|UeUss4_ zB#c+44zV-e4<7v_Wgi|2EZ+rbq0CUKGEMt?*w4-jvq4f%LYp!=Q@xYWR%SVInjjCq zTTKR8Tq_ZyD&&__Gy6@Qxz?9HEPF?+^o%8?s)xAMNWzxmQ1maYI$1DE|5urf5i671YW=33s@mSf)(; zlgn$8Of8ftw!h&w=`*@3$GniDgxZtp&7w1m5DfL4DEI>4O`Ce^6e zdLOfX1;fky$dPV<9;A0IRIL7CsqIZa=U+E6eg@5()Irl!_x48!|l zQxzwJ>e6e`vy(pTpfh{k6b6rru zJX9HzmBlz&a+|~w%8*}n2*aC(D!-7wr%PD6X);2J*rL3;NM4?9fT9%xXY?EEUkWNRr->6>k+`n_f_h)Kt>p1R|r4#0T>n-_XO;yqGw>Zr>+h0GxUyx6Yy z2ktY?j*~%DWZ_wy*y`2yE_{wtjyTR$gNOraf8oKLhYYvd+c~?Af2_tqY9!Zg3ssjd z2MurbN8)IJ?H{Vg1)Wm9`NvQ zA%um1mn4^kbPw1( z%y?APQGZwrk+_WNAQ~-c;IoOt^?XUy2A)dhUYzl;ac~@{Xlwv91QRy)jpC&PYGb2e zpR%5{E<1usmQLD74_>LJ6V1lObM9j1jH~`ra%!IhYwd=^T{vT_Bq<<$|LCj-m;FFpXWRrcoO=_A1!vZvP8RolCEw_ToxRL;PQN?5Nn35VvmfDDOA+EIWgTnetlO8 z#H+$@tB({aD8`z;e4ly*9E_urlZ}*R;}4~|$IjxJJdJ_rOT*EIL!B4ie>q9sxl2a% zWX#%5V9=>g-jd*v**2X~^1s}$K*=h9@bCjt?yR{BFDY$Sy0Kl#C*9=!Uhr z;AnxDC`Xq2y%NKBJfh|u0Jy~Hd#6=lZqg9>gsrtXW`wJnA@65056;wMLR;C#&$tNx z5C^IYa^oq*rFy|2CpN3wKp=UcV-#HVFXD>m6kf;)%8%L zC>0Wm6^@9-$j-o2=n(@-$aG%ZqljxfHyaQ6AKkrFLIFDCH9s%cH!9C975c>2#U8BF`& zT+N7DDbZzn+TmZFzu%j7+Uv27%Te0z`z$yNbTQc5<36LuxpPx#p6~7vHBpvH_6*$6 zZGbI@eOutQ5m$WhPSL!a!wvgqj3^<4AhRa}xjI$CkZic!?NjN&xw7CV=VSO7H!sPo zLv_)y$3y+;N&}O+OvO^!r4jyvWIWZN3W1r&()j3D=x8`qxyqdmW-Ii8m8gt!#U0An zg4c3))E{=cJIddI)^p$tbe zfL2~kX)f|v{y~VJ+PSD4nNR^ZdfnfVkGbNQczD8AAF(cFq6YYsP~LjObV{tQcXkU# z+mEO&%E|`DuYCJUex(?Sgzef1m1ss=xqe0+_64Y?Vw$Nufl5@9tEx4;kmt+&_hv`^ z@0(rG?Ebf5RUCFroRhs1OipgS3kiFCUWw9iZq5P4>!7>m3&q01Dde_w>Msp7clZdw z8%3fkO2kgU*wOcKDe_Z6AY$=PhAPP8Rfrmk^Um+%lvW$-j>dJV`gaAEVaI1TcVh!Q z&LGkV;3Q3g?cXBgbG*#Tr2z;wr8@(o&x4QR6FzK5aBRE=n$3Ib?{#46HovGFkq{E&kKV^j99jJQIkwOPW%!o z37JLCa9VWEVI@zFKu|f2Fh{_yU(7Od&`Uvc{d<-!T;0l#s;bc0#b>gfyU-ZAhrr!w_ zexD|MYs!}1u4DDxyPsT47)8+FTN;+%lA6&|^fx~T()gAzw%{MxmAAvRipBN`e*RFc z;gKy7niz9@9zFbhaArQwQzGd4>0oQ0Jb`a|^Md0NYnm==2yI=BDg-Ovtd zWu|*S4ke4bSE8IPbpf(ffIjq#?{4`w+>R80-z$hreTkzxVIM)7s0-7}tLNWIIGMN&#?*JIa{y;aUc&&rdNLCh3tzeENj0GoGN zPHZvDtiaIojLUxSl*b?6KJqSb0+zs?6f%u$rjS!R76M37DemtRIn`%hIF#%<^0ea9O_y#6O_0?F}GZs!Y2k6?jjnOEu#O-xJ_8B-yCagP2Gc)`uz_m!NopZtzO?Q(E-E#KMh&WqiV9QN_- zOZ(of+J2?9H`Wp*`fy!2Jau~a@Hp2G41VmCBIruCpViQs&)zE8X+u8a&UMiXwcU9 zK&J}(8A@fI(#v7bov3iS7`biHdwh%5m7Vl@_-Y=5u*vP{q1?J6)M-f7*u;QlxUe$J*nAxLn-FACARK9VRZetpKJ}r^HNRXuYzJy zuKmY-fks^0+6^%uYOu_x-dod@1kl?Z21->o6LZeO5YNrFT0)#JKl2ntCjD(6&J487+subbh$x&Ah3G|`=li_AGJc$vX;Y5;@@i_KNlB>Au3dwP@kPECd~@k!Lo zgjM%}8L)VjjWq!xVyzW)q$CI01O*l^Kw{6*jcw|95+p|6?K=Ql2_Gs|ql!N=Bh>O` z;3BZgq%^jm@{7y~=NpkVa}jGl`Ob{@U*HQUoGB!e7RBF0&FyZz^y{<3$)p^DZ!J(yq|vY-sAKPXcBc?ta99Z=fZ$2e)VG*^Dp{DurU|BkN1{157Hb?hF? z(rS4?&IZn-Y1m1~{8e^MxyI`V26(ELcND4o-NFo^j~l4(b1Sk;6VLUJ+K~&G4|=OQ z1W?+}l0W$4Fix5d`<(``y_LY>ZIkN*e*+3iRRk$6 zi+E-hbCSWDs7@FDs#radlZ!rS#xc5y&@V}XmEqgVz!W~Pnc09bBrRDJq4W=O(9k4F zGEnA5H^@GYew1W_qx{biWZ`Wd0$r!yGOreEY60_XO!VhX$^PchG1^~0(7hiiAgJjj zROe79Wo7H3{4;AvVsWPoZ8QOi<`UeNXb=hz%A+fSY3GM&k>aBwE+M=b=0Kq-DySqzp zcPF^JySux)dvKRP0>Rzg3GxNE;Lg9;=bWlr_k}8W;9;&ghjjPoQD0bl#td?QyS&qe zYyD0T6trB_bcN{Z4(i|ZBiz_%W8UuT?G38sPZv4iaD-z3R={ig8ClW?#jiTTaLU)u z*xV}pxHDFsu&q|bl~@q&x3vv8Vu?JB@=Qk-z$iU8`*flm2X)fd=gHq{&EAjz7u1y% z3FTt$r=%90r@r`bxeGt3UAttRbTjI{f%%odgW@tM#RzE;^bb%_Rn5&`GK(tx6rczT ziUpF6l((+s_%}Xgt!c3oH{G@-`w^rZD3&QVwSYWV9p_!4HiV%o0j*&U<$cKp)yqI0 zB$SQghenjXOs+5di_N-^}`FIF**v#uuc>Uq#w} zt#J@btHZ4#{V$rDUArt=t3)cmLAdK5nu%tF@z-o$xm1uG$rrGm+!u{?2@JeSzwFK? zh*yxM!SW9AJ*em5#*h>cKHFiS-^j6-iE1vqqQBCw8X4tuVrbLeu;!@X-VKrz<~&0y&2_DilNbU*du|IvbP zEp(elrP;C|^xvE}qU`MTs@I5}y%8}~5KJoO)!q@Vn!Bs9Q=s6vZ2T}+dDZ1|7qrvM z+M@YiHOV=Tj|vnMg9XK;f&Z`68d(d4r(q5M|K1OiE`g_eE+fFn-#vAvdmF45qMHC2 zfxL2Ut41QSnyB*FYPjRO&{Kh$W! zhmRWgwq;+Q_a3Ew&G2CjD;B65z1HG9&|j#0mSgKGtNp*3G_b^48-Azb1seAmH-Pg% z07RXKH&Rma+<%JV*Ifqol6=^)oJp@wCBf&Cb>ioleEX3kXt*5C_IkN}P!@re@hEYS zVx*`r6Nw`P#Ob&_D7)j4%Kqa>*aH@c1qBI#>nSMSCah9<Y-KBbL!$=rx04r!aGw1R(xBo#kr6a4Mitimm)AaQjaU`+RPmTA3A!+u_+kT z{JR=2=JyL`7tj-`S(86|8fh7R`p(O{ZIIQWS&$xkQbOjmx-4iI9`QBbfca|FP)&tonOzaBn!D`62KRNrtC zHNOlJku81SGgE$OL;`=^PY(RkiWma0nhC0OA z0gQ(fWtisFz11W?kqBc($s`GqvaJ1Ix9V@SD4YymR60n^BR+{(crj&k?UVla&%GuC^kN{#Fm2Ux1> zWPrs0tyzVS#D4mXaA@I>zFW=kcP0II@bX!}yBog2Z`JteYo@S}l%t?mH64EPIhqEK zT}dP0<4TkWTU*nPX+T}AExO(r4ozf6(NtC~5exqM#H#U|soH}O!W|QjTgd(qm^5T4 z5C2vs=88bXJm-v?nwDqyg8QXIm1r93pV`9e6+Qf|gT1}E^_OBvGEGpJLW$_g8ahf~ zq5XyUDH)bX^)CJQEG1l2R0rO$b~e(P7W5Nga>`2Y2kcV&yUuk_c}XT##;3%x9yzhP z$~QEQ1`sWD+;>P8VgGL~Vkpbv(sp=zorzMqz>bWWMXk`{V#y@l6SgHkmutqv;*l3f z=#_WDY$r&vWAdr!rly0$#0Sm+W9Y+{AIzX1Mo!+2Oq~P2s z1C>SGfCGH%zM*FqC9Q=Zj(f%7+Y@8C2PTCKx839Ri_5*Ew989@@e3hh7;z)Mn*y!& zn>D4By4d6@`>hv<-d+O4hixJPOIurfO%=EE9@C7aSi6an!`l(*=|<|xY^Q#Sho`4L zo=5Wsd4mBq#l_9=k;p6*S^9EUOSMhvdg^dZb7a`E%$Mvsm8JtbcJly0`TQTR(m#~P zo#KzHP(&E%V@m_LZ{)re_t<8`F4s!z>lyUEH(|S`=L+9!!e^4x@uvVVE46`y_czWI z9}cR@V_*&nN`JCB~vydp7O?#2sn2Kd)0mFz>lAK0akZg9CKyw89VZxb8W0NmARLH(L2#xiYXS z#gXx>^5ZODk-GBBGL=B#V&^c83ywB`*Nwm1y5^X~|511W6T&l9S$>n6GHf*dk0=`{ z5Se|_cU^x-Z~y*bQ3^g$2^vARprQ~mb|BO>O0GJ}O7!BrEJlvByaDM6DsTfCdMQEK znL}U)tNmxT#1yuaKn@DQp^36{+Mai!PIipZd`%8K#DwXb&#r}82$xjLT} zhy0b>_c!3>^nY3a+B6w*b2Ao0TUIgUxYX%T_y1n>*+4FAp8*l)q!P}6-KRilBKV7@Y=K9(iseMG{=#Wl3B7=CK) z=7P&_4pDkEieF_%17}R;(vMfYun^rP7oAaWJgmGBdi<3IqfY?sBWQ8x<~^aXe{F_8 zIua^H88i@t%;&b59>!s_)Ufe1`Ym#Nzw3SrPsmw4E|YlvzQ4z3cB+^(o)0w>ORb)DYeuX<1agSz7yqTZ63TGe4r|#9QRLyG^3t(RkhL`ImH9*u;M-&+O9|fw1C&}ou9f2lcy*Iw z`y#eph+t^jSqMO|Rh#C-cg;>qkeY|T*N0uNqPG<#kGyaE{)0o)OO@N$!e=+;J$>g@ z6ic*v(daB#FEY}lf6oC&2+@QE5G#9*5vONvJ#ebg{_E*eaert8#LCte61%5jk>n=u zTd|=9S*2B$aO8I{IvaI}e^|_*cLiCfDyxppSn)Z@5K7}j8PJo24TsQ^GJ|jia)ir@ z9Eq}#-y;YdZT@Ghn)>`kY?Djeazn!?*<7W&8hsL4L3o#1@-W*}tutrzfvwLW4|14T zRDf@^%~{V{E=f*UyD5lC6c~E?CJY8xSQ}Jz^CA7n>&mQfc37H#kXCA=TOy{mM6Ca* z?FO~;rjRIukBtmjW_5Urzn81zUVxi;-M6Btp~2$Z)PVRl zj7Vjw05jw(wref)Apn$jv46)`@tJRMA}9~~{sV26Mfw|>aCV+*7a?xz7mRWllH{@H z2UhAq)A&>3Ex&uc(6F$eH<)z;oDp)ZGDZs?g^J0o?~JM4F0oEV4+gj)bT2D0OF7hH$O@U}s1DPM*gW&)0-IE;9DhbAxA! ztr+`5SALj#mq0b^!vkOVReiNhn979|tU+P&f+I4CGnfpH@O)?n=X%-?fed2`3v^4;auaXGZQEfdilXFSNUl0g07*V2T9!q3|E1#@QOp70y2I~3Z-daTtf&{;(6M|u zK_b0)IYTXFDw+Xe=i*E@WuRjURTyWvQY15gl5T=(J@1(oe2+~`L|Ir`>bqrPi3Og* zQb^Me*1{t-l9zNX`YO_sa|h8-E$)e zq8srPytP!(h*6KEjt(#S86FA>N?=tLExq1P^hJ(@d+F~g*3sYAA!pHXNFj2c$yFmv zW3$Ev)|J22v(o`a)tz8SNCu4%ey1z~(zR_G@OsExz~E9=uJx?)2;V6^@Js@m8Mv`y z_@66fl0qA0%vwRmjt7>d1rA@ekZ8nLGD#lEN7Z+AwSL%dN_o(=Pyy!)B$}LiKybJ6 zf({GyU%Q}92n@CfbWh|yQY{+f=;jut{pwj@N-ORHR9InZk`vP3wM~YF+@h;=h%wij172l? z{iz`i*}F4HPMKcRsO59uTp-X$S_?eMyN>NS=1#7N-44q4N;`QGf$c(VfJ;d2VsNAY z|CFk;Te}Nq?g5bR^;vNSUO)ZS4Fi{jgZm6DEaBGl{05wJ5bOyUU|QUuN`=h`9DI)> zzhP&uc1LCIGP-n?cTCszwkbc@AICGC%8xs`+0lyol`Dt<1gNng0sf{xF`g_xOrKm{ zNqX^=Y*j9iBA(S znhTYt0O;CwX=e^5Cgj|^nBJ;v-#-P{q?~tVmaUta#~wugA5%f?Ls=L&*5s1oUMt?h z#aq@b_$X7;V$TU2`&8Yu(awi4HjBIBpHC95Zf+kQ6XXT2^Ks#zQm3lU`iBbf(Z%Aj z2%JDs7Fe5*U{6dWac8&OaEr$Ex;{8d2C2F_cw~!dWw9ba$o7$TFLkbf8~c)Ou7h3u z5xo5fu>m())svYr=0q=r9$UCnj^*A_b?~T(RFt}Ey%0PRwiUZhU`q1NexQ6vls?aM z8&SGSq EiAZ?2R`sI*BO+iJbgi zHo~#sq`V*KOunn^q8tKiPr_AzIivGggmjrJ9oo-xNyvcK`79Uy9aqWtijtaNA zJ#|Prcyn3ehnfKbioBo>aKC+(5?JTJm6KJ(BG-`Y|0k035o1?cpn-AO@8y!r3Lh79 z_NphDLYDb@jIu@_Yv`o7Sv}-mq8dR|BkeD4cI)h&(m!?g@;G%oSej5A54>RaA2GfFx{t?VL!u5TETpZC8|`QRB@Y*p zxle?w(D79K6f6;g_xqj;aY5|Uled_-xbW5R2w{C}Q2Il6 zpc;Wx$XjA{dVCpipm4xfcwO$VXwi!>76%zVO*}AZ)*|0=Q7}L(q`$Es^3b~KFnEV0 z#|}rxc5qG_6im$URvn1MmWqUwE>z3PdBZA=Par=T7F%4;*sp0nmV`(lbLk&EZS@&V z!b8<$=GtX+S&L3i!O4-N(_jek@BWM|DB)d)hgD~ukuFJ>gsB(QG5qou)0qg+X2F0 zgaZ!-D`x)jz#oJXz)c^9t=BzfG_he z?+~+f=V_?B67TKmP4xT_1XWGnz>GXS$gXrHvTzr2{P>(2VT9NrlO=h>70(46Tp*oe z5nWFRHr5l;_4OW{BcwMva4x@-(!k#<_hA%7s@ga$QIGK0NhbMVE2|ung^tJ-IQ*F( z@d08q+hntrRDJJ@xzIkfe-qCZ6Or&@7+bju1F5>|z3VnGI2;6Ets|`gSb5R@pOdOY z7big(PEZmdV62iEgyeLOW`}HCMeXg_!0_hjzVBQ~)TM#()i`l()pIrCX%u~$JZj@k zK-cVZzWq5hM0M?J8KFT;b~e+j(mM+L9Xlr{Dc~cmvbv=I8%z7pwRXaTly}5M&5y}; zvl)2ZX&9rYet(*jLJt2#H9HN#b!a=a1KR`q;fq|#ciZwj5Ta8>C}<+4&2+@-F!>4) z>;2+S{R%Mf>629eQjlLbsoL~P%i||XdSbO1Ek-gM8;|qi5*PBtFc8z^EFnEnOhg=r z4ETT(G)w@$2~8WL!K}r~`Q6F|f0?3~pD3k%^^bd53;wF_a9vu&~BvC=98Fe_z^G&SKQx`;G$k4F{jO42Rr8=#18N z9PwE-aLD1Dw(r!kX#y>P+qH#l-)N+yeVKth<`p;8ND%y~r~zCb6G3LV{Ckr#?%2w1 z+<&P-cLeT|cqpv%*ULsbkQ)dgD?&r_hy0b&ku(%toF%zbIGmeaD<@4DShBn@xo#5F z%GNx8=*;a1)+b@cNlFTP{GEt#f!>y1qCoT!qx11)r^unu^IvPUmIr%2lw-)c`ou@2B;KV79@_ z3nO0rZr{(gQPRC~o(=+e6)k&w$o`ypNK_@eTRrkcC8nU*f9wlWx=Bb{@L=lSAc4Q` zYw5}bjHp+d^1vIiGUZ|oMzDc^#kBhoW%0*RoS2;34zNu9WCLjTruAWct8erTz#Zjy zuN8VWm||nfom*|LCDovsj6{Ewjjcin$*uAK1OlS>E0fO-g3334Y~Y?T2YuuS*cL6{ zN+8DdY-1Si`_tt(tyZDT601pk+1-Z@Q+W|{xMYi;N=hT(m>BLK6wQ@y*b9PjcaatQ zA}ghyrwvgu6{XVb;G~K*E_y>hI;P~O*@2L#P&X-oYC=u zL3ey+#X1>LFaBaj%ZPcjL=Tgws06B#sF(E7r=g=eT5nVTX8bDyOR{e5F{|g73y@XO zWPv1+srfvpF%CRp1Q9Tq+A_5(`PJP|5*p=%!RE%K>Z8LYr2yBob>*K_1iZmHDzWYQo7m=<8Z|Gbl4$fG&&%BFEkC1d7*BDwy8!tTQ>&}{{gOXXuc8MF-D z=(2=7Dv&-H%U6c!%g4*5!ai`NCdz_srP0 zF!6a2frqX-NO)}mkB>aDx}-_3x$iu#T zX3PLW-my9_HoG@{B(7G<^l=TX@BPSf1)myHRtmlgkrtrGn2OjK zr2Y*7=j;f{$PR?dJ&|=~e*xg)24;b8TJ61(sFP7bMhAaF6CQd?tir?e2$cGi%4*Ol zXKODhwP-bOTl|Qet#`iN?%v!p z40467W$`!gKk2&pk$iKeRSr!8ZjnF=_U3!ouHd1^wH({^^Z4-f_zXvl;vMz$}WD1I@{=ac+fbv3_;r$lX zM2Q7&*6m&uM#btb;viV^=^z-C&CxoiWn}$R6#Xc7MAQSJSr`}c{vHehC(I0aXoc=Y zR#q+ur#{F*}3IF9JLi6V4Osey2&M1ra#F5gpEloZ#(lYdjQBTMP3QDCgs4|=*Wx`e_T5&*P8zE2;q1BJ+5Qz#Mbi~iq6ExY z^55jj5d&A#jnkFDc5MLU2$2P#*^P{0LUltAwa1O}y0j@}-*h=-^z>4Y+;wd#WaqdV zc)0h7aXiBq-afP(s~O?BW{qVgwHgxrmQlQHqpY+DUZ$e!tfJL{hy;B9dt>*>ppE{Q zCoW6GnO2)dX7i;&#aki`hryR&CW*sb8e4?CZxMR|Ut|3ORuS!fL4nZ-x8Ib}p(fjV z`?cdj7ThI`mgj(f2^)QA`vqI8jW7M`&^@Bg`gjwG7$IWqf9hE4Kt60W&Y{|WW|`)9h=_fuZ3AQJO{x7NY@5^DreE-WPx>IA57GJ)6MnxFc2Lp0n9BJrmQkL6 ze{wB!w`tmu_Cj5^5hTc8uY;GDSp6mH3u{(Pg{;rI@u4fPYSyCPu1#2C^${4XQu~`N zzRkMUC*C+DrU${0(fQW~^LKvgx4KV%_@6kkV{*24527iib)z40QZyw7q*{O+Nf96j zKUfY9znwaC%fbcaNJ6H8g@MJkz=~`iKcGH53<3hokO~mkv1M-`H$D<$B(2cCU#2&9 z^^#;v_Y4>8rG`Ry3Z!T|s@?)Kf`ZiI^)YX|SB%Z*k6I?7J0z-VDfKRiKw&y!t8Z6@ z8grUTQ7-{Rrk|6uQw9TjM}|lp5Z_CwU0dA?J1XG1pY|c;q7etzD?Nf`gwCh@v6733 z5q~9B5l-<}%$}zZmmWv`GO#fFG_S!2U%>2QN>7JDTxu;>yvbF*R;OSaz>LJj*EMWh zNP5vT43q!+Q{7fj&0D?|%LESNBP3OpWbj0Ag5+>QK+jkjU2mPomaR&li~|5$A!+;| z5`P`V>Ni9|!6UuPXs~jm%drQG3%)-3sP|@- z1M>xDoX`d~$s(2f-e zGIoYMsoX4>O5e+yF#eM^VvFY=wzl;n#GzAh7Wvq{F6Kf<$FaHhzX$Wn+YGl%eh}ZD z8|>!%v6txWM&5mz&NupA5Mswe<@_lM!c<|GYOrY%dUj*ORzzB2gDzX-@VIaWytu@C zg}>`(2`mv`cJR9XSkT;R|M5RWjPfMF{FLQOkXjZ($7dgE^Fs| z5$XxOq5z|?>{y7 zUj8QQ7B*dpyL3$$JP)a!nM+ULsbnJc9b?U{-$bVRYwGDWwB}~~c%ZEnzzTl0?%S!+ z9818&#B{iYX)yj%f#5nLlPKSOIag5NmLKVN!;gc^NZAsn)uHNb0s(KzO8yab2TAYh zoYtWbj*89;1Tsu5(Yi0S16+*OeWV&)Am@>%&x$&q!KA%_Z8^hr)ma|A^`{`gX; z?ostgKy+)+0b_0Hbgi8w1y-yZUG>2@<$3C31L^ih?bQ(tO+&a^SxwXc`|~)Bw}X($ z4$s0qdSg#mPWJ<4S!Fxi1(O#_(KTAb%PW=Be#+*`?IE62z~MXd^N;1#t_;^tkDjJP zfhQ8OwcH9L4Fx|d4 zE)NPAHnuY-#7S#Jd}Gt&;c7>=v%?{s%x(6YV~G6FPU^~qF1N>vm|ZM4-iS9p-3P*> zUnx$rXuBUEK$x9jHwy>b7hfX?sutTsN!5iY)k&XkWGkvx5kr(CT0+aW&oRUEp6x|! zL9};lnM-lHY2$uk6`E;P2sl*9T7}I9AnOG=DbuzL|IV)$4%`LGi_IH6$dki!f(D$K zf02(eUn!_QRl0#_5fy@_?Ba|QO26eHrS|Xe%I8+Hl#0jo^@8GrfBm&4NeNA?&LP0Z zw$J&$j-2|VBOg<^y8fu1yn)-~^aL!yZsH*_GgevxSC*z!AuFZzGV*+)75C2-2e=JS zBP2Q#DZlGw$2%^?Fsjn3HubPn9-4mpeJkmH52l}3$KN?OQo1mLtKhYC-eNKhrot3k zuw87%37Jc)M3AhQuB7js4hUbMKic}dJ=CrTq*=#MwK$lVaJe1RaluSZzW>t#s9`=Y zr2XA~<~r}0Fzc2CP1qEw|0w$Y@VPHp&b%yGB21B!Ui@Y5tCE*F6R?!=7nLl55N2AiqUdr=k+ukN-!%I7vOz%GO!%i z2Ac#nl{g9&u!+Lz_CEXUbe1N$vrQ~4Jo-Gs;0XJpIqtsG-y|7&j3IOGs%q0W|08(C1@iw1Juc|^ zrRe&LE&qhEAkcu6Hz|tlkZ{t`Ke`HnpvUA1iGRGSy7HwNA9BzR3{WCkA-X!+=;0{5 zJd3OSB{WP;q=A)f++I4+a)(rwIUZ|jyllhzSML_Hjh7y~^iyTxebE2~g#+(>tpWXL znST}SrooJ5Q%b!fh_OFREeJuWQg)S-1%Kd83ueWK^2|R-cn}vi86zKHOdvjZxeLw z<_ynMO-EAi%#cu%KpV4gsc)JHStSV90o|ULIcy_jtpvcV0uN+Ic{@7wZEGd*wLyoj zJw^vDcHCw5Ryn#uq7BYb|BVEhwu`Lh%wP$TU;=+!oTi>0V&CM||27?;|N9av;{Hhg z^CePA-+CaB4OQ=Y6kmSv-WJY%DN8{ov488A$0JzMI|5K>1|B~?i}Y{Cc%3bvQk z1iiO}6?;L&sI^-3p2ev@oGNA*tzLK#TO9nEUEGS4J%9TO@0y5Xad+=fOndRE&U;(b zCtO^32WQFPoEmBC0lm977z@9^GNTmptA|M@UQS!IJ{5=-hkoF*4sxVBk($yAn67Rx zD#$^BkHqwt>Rn-gBje17GH-!;eOGPE=CXhft0T<8=$~#1&AwyX2gtDab!O`g`*|YM zZ`ZkcWD#6OoqKwAP1EN(;WkFMY&!N}W3zF>KvzXm5G=7em18bnr*DK-O=Q92jN*gRmYtT^0|&W$z|%l|i)B<}v|8nLuWhXeKBp-CI1w61 zK;aVP=3T!BIkimHR=n})ZkQ#~O`a@N((k{4eDBm2J+0V97;|W}liOO+U}^p((hjhv zBxwg&h{A6v{DMy@R~(#t_w%2b2bt!Z-k@d0WZI)N?%|J%6@I~uky4L?yJ6?2^tQ|* zhG6jj^W1H*fO0kdFg?z-^K>iNGuWR&u(YZjp~yu)xQHA8enGr0FYl9B#i(DLGh$y# zo8>k4`B;sGLa4~FuYfH#o+{;^&Ksc4DM(FMI`Xco;KJO^aChG(eXfV%~rp>O*TQ)V3E{q z)D#;*BJ}68XkEkR!qk2g)T;7krD)vuEm9S?=_j>xLixI9lAHk?oV2}2+FI{m7n#2udlENtv@k3)g zh_h*@Ny*=g$@QMt2+S^g5`<_y20C-zOf#SW%p!3F9n+7GTV;`v#_o7S(76>2Dg>&L z1mgLt(oy7}QrCgOY&2(YGS#lG-Nfuma{M&owOIL>){^<@kwxhVixLkTyUC%^+`$R5 zK3r#Y%UMHzQ(W@7f7f1?Cr9@Yy0yC5lfJHu4pzNSmMp1(|2j`#D& zh?e7YK?A*D=d3tvSGvHGAv@`|w6V?8^Z1kcZbA@5KOTUh^C6d9Bgy3I8aq%NeFb2jklvmbgb%I?QCMoR zlEg?!lX?()*D4BW+1+h-BLA#{hA-M+;~KNnd4Ar272@@-Rh^!#e{^xfvbCGzCPJ-t z;t4lj{#nROwG*)(JO-0NMD|1`G&Hi3xQ$e!(iQaQ4?|z827X9MiPdyvO^78G;^b=c@9m`vC=Xh{xF^^loGKh&nU1UGOelo zPF&oms`>E`+*P*ajP)?2bJ~)~4Qk#jOs`>Jj@*zxOu^Iei|-2!CDeOW-HEnPkFFq9%e6+^ykkop2<4oNHY`a= z2Up1^Jykb$9wo? zQob|m0fsi@w5*H_0B*zhlJ(e1SFxV-KAVSMY2AOzmdUs|vY5Fd2Txg`ohUfeqNJLo z6fmiBG*SZ+B%29%6N-o*Ir(lID?y!RtXo6evOTiX0JKbN-x(+1Wy921o`PnI;F`MG zLl8+^(B26Ww`TifWNJt>)?F#le>`K8XpG($v;Fv-=goiJ$vw9b`@XPPRMCt!EuS+4 zjuXJdH2he{_~L!6#+RNEp?7pdI!e9L*xrWuF=NR@fpZKwm~imX-Nt>?;`VL9Oramg zsQ@{$;qrWU)^0J6j+xr9ly8s{ay^)*>1#sl?=_9i_6{}{tkilW^p{f2SOluDWEHri z<`-52F+bEAs4A4F|FG^$E$%E)oJdiY#>2%(EzVaPSSX^kg2kW+97x2d+Nj$_!X$*r zF>;C!oVRM@);E`7LJPi;rEfiQp=yV)YBuZEP#1(kqVI^u~ zGLn{mPvGGkTkDyE^Ku;}6_DP(;KjTzE$&##!naXT6p5Af>HPic$-iYvC~N0qMnOo; zGz_%VS(Q}(OBjkMe;{b7d7y({pfQa^FQlqYO%tZ+U#^)awn}=;P|Gt6lw%CicNh>f zpqB7S3H()1K#424NNM;UudVBv1}yA&m6&8IX{pS{@lxTG`g3P^#nay2UMMh!Gh6LX z;;m#DJSQ-CqCs^9%wf{Yc}LS*M0Aws}BSR?{BR4tFkg|f<& zt;XEw2GLZilojA@(IBD1?I!!#m4tV!xVfdUk4ha<%-%4fqN4Z+d^20l9k8EjMn*@2 z6y7@?%=L*c@X3sWhZ&puFkz{;RWuioLX^M$hnU#L7WOzezC1VqbVZSR2tbQ5a)Ye5 zl11s8PryD^iwtP_gzCB_Aci=@ya_;@;XLZQg3?56n1!mBO}r$a+NdatwM%;Ss1%K- zb9v|?_R{85@U8773RR-YQm9I_ss|@~dp%2P5UAGIosK}G53GzxfN0CS03%gv;D65* z1>-{{;H2@$^HCa*LLP<}%vo_cY{i-(KN$c0X=&R|0^t&H6fwvJwbO+NY3YD@xvnwU zMM3XnPXE>|G%$TFkr+dit0xIHDkG(?fsAA7M@Yi;zq7)v-`2zJ2T87YxUV_S71n*soi@L*-NcYSHiS5~wbYwJh zqNL>bCE7o+DwU#V{g7H{S<7&H$v?3=g*Yj8_&x(QcqVEW7lZr@)rhHUS5Ahqrb~&dkJxU==cDggi0s-hskla?L*uAA%{t}kQZ9sb=R2_n9*bCFz1ICRy6|N z1-M(s>o4W@9%SlfAf@g%+9VX-Rw#))FfsBh%ecfUEy?D>8&}jUuQp8e9T1sL7S-o6 ziLd1wb~-3~RH(5~5Oho=H`b;gS1B`-y)+{`MVLw%HMG9QJG%pcZs?Px+C9qw<<3Ib z#ZIGssLv6m(dLUMi-klwiPa_TrV>Ile1D?v?sPqUrZGs=pLJwCP(r41z`0=!=mRBv ziHhS{V?SmI`~;*iOFd`d;%_Iksi z(ksP-y!GulvoClBus#m++kYhi&GfLfD&63Iyx74^g+_XcSBD7Clr$+_U`SY`?L%{Zm46|ZWDW)G@R+DMvN^Vy^hb`8j zWd?vm?-S+(HnQUUZ7`JhV24tBq%1m6y6!U&-o?L?XtZWSi9vOUQnsG6v7Ev;u@?3g zn)Je#%zmm|z$jPPiYW!vy2}@2H-Q1I;)f+trW1V@sg7tJE+hn|SauUQr3%|2;);eL zL5H{dU(|h)q?B~d;t}<{-kxBrRAu4sd5Zf7dnwlk|GczullkQWB7Rp__lsIgvx1Kn zn3yCju0^9zQEi}LuaJ3tlZ7Wt9>wNN3&z^GHzw7K^R4{=x|KenK@si9e^mly3;0b~ zUNFvh2Gj6gJlcQ9YiyeD(r~4$ur*%hzRkcYAs@Vd5q8p+Rf~q3(P*Ad8oXp#)c9re znLErQni5_%h$Hi}qas;j`+vVP)d0yUPcLu)EQ$se&0f(Pc+z3B<%{^-h&%JP=GM}2 zO)SYNDX0PSbeAxZZAZGl){cwpt3~&_^9TC=_)h$cG?_Qkm~( z71&__a-z5sEx)g2kJp?(;bv|n1bCb0Wot+^OhhRYiX=l(ArG{R&Uul;`k-aXm|(K9 z3+~a4jSGZt9|L+V=8W6h#qQ{IZEQFd@;b2rzjJ=Ye@EUaf*{0qI=NM_uADX}a59Z? zHn1)*Ru3o2^l7s1)0l9!0sqkSTkpL*4qay;F0sj-(_|#qoMmUqmYcW3<`oI?JoZ7` zKLbC#bX34RGyWXe)qfS>!s^cC!;z(wH!dSXhWfl6!}Qy*7yjIb-&Mx z?U@ig(0)MKENX$)J)@uF@&&e<1Ynly5KXEZ_p|=Jobfyi+Vx6lA3}6Z1^!aG+uKZm z*Yc8n`-d5-;4-MD7y$Ih8f;9Kh}1T9;pO!z=$`=`!rj%C_%$R#+&o_`y2wtI#7to< zb2Aay489r3LS(-adRQn5ge7rYy)Z>QR5#c_FYF>`#+kl zAyQl5gA`0LNDJ0EsOR;8BInkB3j1etP3n00eUGx-{0;8>}8vtNhg z%_vN9y>A;$+9|l(sn&xh1dcq|HQJlmN)kG?zlGnbt84ypXSnZbuz~ip_>U%4{V4KU z2>u@Q1K}M(8_XL{l8XTt)7AXN@oE0Rb9e6`Mm!(q*Si}bba%~Q)$Qzqy$=O$HAlO{ zJOW?q?q|l|G$<5Q>y1~Hmf`k!yE_hS$!UpIa8$6V3dR9(i$>*Iu;MN?ztl^ub^8!T z@P{*&Ll|;MDt_6-k5K(d2lzSkKf#11vd zf&A}r_qT5A4o5pinMxpT{>+Ls;UajaWR<4?|CUxSWutI9z1q_BNhvUewLoRQ>Ep2k zQ;E(&M}1|jE+PjbcT~qn97Tcdu2O5ev3)pH<6Orf>O7D z9i!Wl@O`l{mnB7xJwE2Ryu3X0A_DBjVzaze+;Po#dA@!vv6R3l4xpL>|B}rig)A4^ zX9n)SRRM`FkYR_~p?&Gg*?Gq!QZh?S$F12CXWd0;{WY;VRE|H%2@WqNh6Foq1%+VJ zm!7`0Z%RSe>4sW?Q5Oa-N$FCA8CxiGS@rA;0O;aqRKGX8?)=6gyG7dD`yflv#6MIS z)L#deM?WZ{Y;aJ9FxNPMo3{H@mqL%qzAq-@o9mP+D+d z|64ytJ1Sg;nenhn$`$xm0hWr`n+Onij)&K-s_OHhyMn$jSXfx$>a|Y4iJbpV!F-^6$bdg(?w2E_MMQ>?3_qg#?M1B*4q8fB{GS|8-i$iEk;{p7|| z(bF6H>#OX95$}&dzUm&7Z}p8EohN|+#BBxeCa+v}Ot~_nYG&N>EN1~1b!tmPZhWV! zmZ}GyBDSlk!G_mPM*+VN)LD%<8@TY=$dnkn$$J!! zQ$#JZdXZl!H0gR5-%hE{v#q`b0^Hs@O)jUnQhYwUd5bYKdRQ{eW)AdgQx=_8e!1$p zT>2-sT|&`C0$|UTX!&#!8Yl6<;|?9K*L_u>#HAad#0Oxf1BpG?XPGv4!QZ7gM2r5y zyQ>c<9AH#>G8#SC=ycdC2YKJ2@l3=FiON8;|WJITo#iMm{w(h@_mc}-zhf3}2zU5~1+ z=9yS?N9ZIg+c+eM{#d14gTXjdP1+sIbFMAcz+D0AUP>Q`Tt<01<)!`Ljy&UL8S3ATA|*+`sF`DUirL z215{if3N*}iR0vCWW*)CjNu&;Vs~LEl$MlqK!_*n^taJJh9Ktl8$1Y44=~GkkOgUN zh-P40&or)#H-^u6A)St|IH{0-E?z;=(&8IS!`$^uz#Hx?@2#RBqKUzs2;S?18T@ZU z@0I&zIH<5@m7hWQ0aIrK_cb1aG8WRvNZuX2;?L%v`XSMe`@Tm|&c&9p;>D#V^Dd|p z)ocUs1-B*ckFDMc(l{A3w?TK_=1BEs9~Og&-<`%c^u;5T%*-fOW8XUyd+#V{H`Nk} zU!Z2K{3S->o7w1|txCnTeIQX6WLZ|~vgC-LUhG7;{L z`33g$)Gt0i-4>X224}10NKiXD#^#hBQVismpI@~%S!E_AEvp*cl3I?W22B?!b7*{0 zT$PH`{kV?#<7af&vm`4X(m&qY%V@KL>yFJNJnsONR$N(Pfh2ggVsCGr;HTLG(r6?$ z@$ynP{={th4pe01`x^j9@5trCV+B?;?l9_rrDU`7FbjKQDN9J2X4S)+K52RJUA0W$ zAw@Vkbx!VD3aA*3u~*T?jtvin-L;NL|E*LZf!?!gLE0Y&q@QpMBFfBksiLol494za zQ{*I*QOJAE=i|6vCud9gw+JCsL~6uTe}Z|EYF+KuzMlD_WW z5ZwBFkwEz}qY*Z(myI~s7+qXa67=H-1>!3&)jBlKy5sNplrAe9cG~Gq9~*WA_jbsF zNZi7)wr|ACD$WoE;lh0*83F#scJ#6z!<%YxF6eN@=`mBD7JLp=lck+Lf@6(sEqUsx z2j-%=PLC|#s|5zj-5}2cj0J>c>*ixZ=!gLmZb-=MzA8wF4103#f|8=Csm zg0S+{Xtb2#6I|X~jy~4QxgP zFnp&gS+3S6`9lk_F$6MSHCF{UQT%WtupJ9$tLD&#!{Bh+%j+lO&R{WZ;S=oMSZ;M0 zVvJ;ZFsp;P zBx_>z+?nud*xG(#i)0)pw?@+>4fkCFmQH{n%&EUAfsj`Tl(IkVZ7FFxQeK=4C5j5K zEEBmd596tcvgpV1EsHG$C_^jULdD3SE(^~ZD5(#K*LvVI97>|5;3awwCr%s7zR5%H ze0r@ch42b9ScpT*xkJMxDoG_}Ezrdahp?ChdCa(a->U{(dbw}ApRVxjmQ3Q*VK~!x z?D$@As=c0#58U6QraJX@kBE2Y%x`WidzkfMqjtQXNt_jHe;;5&GZYg5uIYlkyWWbe z_8Bveya;uPCB(~d$D+zjCVw}LC%B0?RO2MNi72{t!)2jRglB1<-?A5c*wP5g#x8dz)9>HcTmu%Ta43z@(3g}Ly5nxj^C^0U zC>}fsMUsw=tcd%Hx2te(ffmP}>C#2EA(O@8q3wuKta%N3(2XmR(X-8Q!cuFCSnAvz zC*^RBvQf5FJBKSJbg^_NKiC!v9|vxi)={0gwv@AuTV)nanhkrQ2oTIw79%>XL&eBV zg_9jib|TrXI>1{JVgnz9ggncO;e-&NPvN*WZHG1J1@=$JcJnr%Er!nj6*?OrUO)`~ zXM{~4vjz;aO5kDQpmns`2xfp^tc9_PNXXKh+XDcuhlE0}-EUuFdfp1x9A|BId?RRi zd*TL~L;-3Vfomw=v6!>>WrQd9LaWJpR1*Lml9n;wRSp34fXqcl^=$E4aETRGc%Xo3 z|BnlR7X4F|i_GQ_Kq`cN(BPI(u(Yv&dQg~xl5)2qbt$y8k)-{p&v6O$OK0=T?Xr^& z2d*;>Px2Sh!fY}+?d{|G46-;nG><>stou+JmI0%3DiBtTqPA{A0uW|s>5uZRZk$yC zKH=1){LW#kOPFd&YHxqOZDo)HbnVnPFhl*8Xk}>HK-tdPzQSL5&}!#F)%bZKj2YZ| z!W5US`+-L5@Fg?QhKDW#!#)@vIfO03XXei&06M@(rbpn*)52s~?DtFXVSrojjq*kI ztQrg!nrJt_Js23VaeHrc|4@qV8ugOx@}YGY>v~a|I@qhcVMm(^Q>+_B>C#NX>YOgV(mgmc1M%J51TK7Qia=xVtbJXsyWO1>|{<$H!YHU?m-61jRq#~z{?94h}4`4@p^(I;qx~lZ}gh7-9{<9|(0?WCP zX5cQb)&ep(I2e!IdoZ4=_@{R%ETZk@$-c>z1azZ5Bk^FFU7$qXaazq?U46X~(!VA* z@@=82&7Xhkx&m0`L+~E8a4)3V@~{3lUzMS88t9{sK9sJEr|ESSs5Qb{*vk+RRkl`R z9O>&U@sb0Mgz+ZXrLl!Oc4XYGn?6=4M$9 zE^>Zy^mzaCqHB%D27zp1`OYYZb|kTC`one8Hfm0sTwN~HH`r{}D`yh+=aKarY6jv1 zYg+M{yyZ;}D)GS6R(ZDx^hNj+XJEVfkk705JcgPQP)}M>KV@t5m0LN83AmSnO zG&1dDh-E%p@iRp1fPs3K^SE=7gJI!`+WwBpY^QV$&VIT_viy`m0Obqj!AK7lECmir7VFj*bG`Z{2P{9W>d}BB+qEQPwV2(v+d#?QIT;E6*O^|0RdtMn*r?U zvNA)OBj+{NZ$5BQ`Ut3Rv=X{>YydVCA7{O;mC%gawTOy;8(;q=7c7Zp@XwLAFSU0? zdKAwupo|j(=qK^XiIs}lBLWf(a^8>mFV*}|xyZ1$<6>f4%jXwq<3mzd&Lp8qjUkGX zJFye7MO7|)O2F`j-0EtKETbbdjHdWjrK^26VphD`2qee)MaM+Pa@U^*%-oqb7kb_7 zpK0%leDt52%GF`_kyFG%&36w>5NKWNfw)sz8g?q+Cd7h6*$vT* zJmG{xiIYH8Cl0kW=W&pwI}ut`X3llJ!kZS1kB{$Mu?=N1QjzD&49ce$E{v3yI142- z+5E@jcQd%}EWx8H`FQenHiYqlxy;s>94`<;mG;fj@Im#Cw@|y2cML2nk;L=M{UN`^ zSHC^SobJfX!rwZaku;VD8O?uNP;m)>7u^?8b%X6@A`y0{idTO%oouMl|N8BluersV z98S&o`S&jk4cd5L!k^g=54kDW*y5nuXdS(G7C!mJmYBmVom7}!?y&|`+|Y1Y!0l+x zh?JjKSzmhXsPH0I-bNZkr^A04Sur*vw>x`{$8?O9C3V9gOq4sbHl?D%GFhEl;N3Xz zHPjz=EU79lUrdgw}%o>I70TaQjHK=w~1WafChw0z{oDT&*U) zwwFJ$sr7ay>J7(&(K;TZ`0fb~@FhbI-pjKQ%IV-GU9XI&Pvd5uF#|%$&|kz*O4M3z zL1kpitWlI2Msm$sL#7D0FOP%2r(fOTjHOJyn8me*u*zd)6c3(uQa0xr@PU7DNJtWf zhQ!pPjkvGVIPCng#=$b$`hs8SJaaWESYI(*ITO1BmdJUV(qfxKTW3G=i(UZ@(jgjO z^R^63BIDi6lGdk5F@+Y9PCr@T)m->c%?AhzZ{1RwEPz`d3f)H!NML}T)s-pYH zw8!%eH5CY)D2BoyM%2VP8n9Nu>GjzwzpyZ`)#XFX8MK8Pnp@~@t^%6;fQCL6_k*je zST0&hj|y1t@YQ>3P6DViPE}uT9>0`#FtrY1tmb!&#==o!vE||4o zs(IMZW#4TnB(~`t7ngK~AR{v_NCW|Kkm>Mj{}agi7=SMWfjQE$>sBl1M|npMP=2n% z8p**r&M=;%U>|%;F%~OD2sU9K*QYGho`AR}V2a`w#F&nUsm-e5mzgi<{Z~tV5>51N zBDsY8b1ZB1e3`jLNRf%-oeRl^E-q|!IZR8>0gX+Yx_O>Z5A$GAj9_dIPMIXv3qkPs z(RKsfWGH{qy)MW4%^l7#lkqB;orC@Lfw$1mTUZXoKO*rcn_ItLltrZC#EeG}3$AJ> zB-f@~>S7NyupHe#ghNYvcVq8Fs=P4Y@)ioCN&1IhksaI*)nRtB2>z)PAGTO0nrKx3 z9sZu#&E|Ef_PfqfoZc$}n)!QX<|5ah%xU_Ee#BrLx zt*2j;$|I?F7!JbrF)%P3fqA7+&=umIJxkeP++sApML+F}Y2*}*w&B)AEJOqQ)TzG= z)zebsx1Kmz3apSgyNO;aJju1&=`O%s=Z>dBTBNbU!O*rOYL$HgxNB8aRjJ(e1a;h; zslUP=j3&-iUA=7(-z4GvmlsA(I+R2t;%pXRN9Av zZ1Xc5oya~oH~><1(d|-j6@MuTR~zJO0^+TNZPI#^c)qNi@j(H2yr|g5)Yzg{{hn_w zj5;FtXaK}>9m>aV*LR+c@nDg-CsuJ}7KBtX66#CU9;MU!1hm=9LDO7~=kS%GbMJ*^ zaiO_$ZKlNJ?sq&n-d;;PPGP(Ms`w9bONu`y@M_K{)XqE*R0OX88d(I>(CZi-Nw>$Q z;zx^1mw(?t3>w2v!I~f`++@BTK1|9D%HKsX726%?Sn{zxZX(?K-+J> zwn&+ZJ_xrtMhuCDYjR=i_>?xf_htOagu zncd&tvvS&YY^}2aEw83%1wD%lu}LWl%Rt4`sJHJEi1PgMYboBz%4J$qL%YJXc&4vU z3fPq-LccyWd?$vOS)TM@2+Wf}Ub^eT;lg*mF@U`4+drxhrDCS3Q4B(|1xOK+ArEmM zV`ciY2Wci{P!cUWf@EY*5qM?n5h1VzvZMLjWEo9Fvp2CqkGY@o$3Ge2SPm!k{xgX| zf7{T-=VN33`Jyn%AggRYoHK1Ai5}$0V}kLVY4Q2V-nIyuLh3G4qE${6un?j*rvI_* zOuW;N&Iu>^FxA{_Hn3>%-ns2$46ZX>$t>9-}!BO`(E_o zuAGl^4^m51oZdMo*jXwMhBG1JhT@FK20#mkyFt(%O@m+%qQD8%1xOyVagZj_kpR#cQYLk0j{qJUE`h5;>$(ck-* zCJz}or{#pqY;HO64xkx0-mPJ(3Ikw?1P>PXWkwbyJHU`3UYA{@LdG@{vO(=7PAW3Z zlBkHONw4NgEYfuZdYXX&1FPvTnpzIhUW*~AY#(5hvV}&625k)sM$v_WO~WaQTL(Ko@228E{}JqCkj^NP#CTV0i&3?-InH7_c3&`j^0P zGl=j&x^jrWA}TRVZzf=wPFIOp;og>e!AI5!A*Iz&3`B|*9R^RDNQfQoKUn}wQl^Dl zK>-(i{M8PC;uD!>-xo@=;Cf22IA}5fScHOSbyjh5E>jBqBNsBh`Z)Y5et!OHJM^NR z=2YXbS}B>?D5f&+78NPyRo~-D?VM#oGA<_hP=k}!^u91bl`;}De+)xI!x7r4!07XH zREZT4_ z(yaLnLc&67Rg!8yEUA~oHV&z@wSpPe(kmDeN45xCkY6MhF$90T2tKWb!fgYVz$ZE4SRlR zDf;9lJYeBocYo5t+@yuQv zm4BNdjo%vh1Gj&Z&>=Nhg4QAr_2J=-mYzYiWN72`7VR5}@VAW(6CALN<7V_%@Zp8y z9S>1}Yogj8jH_1SoT|ljZHfn2Tna2XV^uF)XbXA z(39S7OG?Q%tmJ@38hwzW0ESOcB}v8(5Czb?IhjyVAG8^p4kt6gp`yaRn6}<7**g7Z zN*^tD_$4mi$IWQa5StQ*Z23h=TdsBUt=8t7>kj z7SpaTT6YVJH4EMTKn;u3mE5)qh?{2+6a;elL0nsc|6=@9dXaYsNAnd{JW}s?#=>kP zSjJlFAVuZXS^uQ-0oCe^T{o`Z!M+^q*{@)TYyPo<@LX`-Jv9B%5ymirFC+Zv&;>=2 zK#irg7=aJ=mdv^IQ;1$ml+`_)!q*HAU zPhXaG_*r4L@)+?;2!yKWDaBU>;!=Wm44(_Y?#4sqh^SZWI^*b)v? za0R0D;+*gAY z4AMAc5w!@G^X|0seP&xMPThQZ$GGS0b5MXiC6m`HgGhgWiQ?$lodAwiU@2Blo#1_y7r zSR;dA6#FKr5xZARrv5}PAqpF!3R}{%bHlDOjX+FWGAWXKj^U>G|J8?p89xXxj1dZi z)&v>GH0zNef6{)o&q#g?^V^%OY=@cV$rqicBRx9xOMU3XxaEId$b>k7o>F*V+0` z8aATn#oluzB%Wcjob^AiFSa8u%P+@w*HkYved80pbwmiL+7cBlQ19Y`WE2$f*yC$q zOXPI%{Ph0R_fKAYgaHQY#=e%3kZPw-gCPl%X?~!9Z9Ax-UkuMASq*;E_kkF#wQ{=8 z=x3v2g|A`Og|*^opKP_+KX7&8#`>1!82e0wlqV9Fa;pz4wfAwI@3tcJK!~kSbQ!j{ z1V_4TpRgfhV@fQauVNtP%Xs6SNr%a&7O<>wXvD64A=iEZIIFJ`XwMaJ*wH2SL;yg{ zKuk9(qVK>Vw>}mkS|)w{L)J0c5tfo#Fvj3ckm%+6gz8LKgOye19(lm+(^pi)P4qqF z7$}nDU+CvFRO0W{58frk{9j#V+ZdGpy!rHKgV>>t&=Lr)PZoA-E%8kX3wTNEMA9FW;NxE%AvqOKcrRw$NBlRH_M4%4 zsKx@jB#+BX%bs<^Ie;BBSQhRRdZ76VheOeAJmlt&2$Qh{nwWWoN+B9^?PbBy|+ZXVjH*p5l-l}Zu6tPU`5d5pOo+BX?PeVd}DQgdI)@P zX0=@i8y6JF~#1Y78oP}1(_cP<|ZE)I*FQ^8F!FGC)07qX{ zlL0h5g`T0V8@z%wAS%_+h4hX!Kv|_ybe`G7bc8Wuw|Yi)Ikz)+$PRBaaGU2;;&L5V zWWGdv&hRPrcFnAz7wsF)#7s%v{kLF>VIkrbm^CkPGdT2lBU&t_D;D&GnJi-#{o{c@!C7b8 z=hxozrD#ojqgU3Np}x???4Y0*AlVDE_j1kfjWz>lZJMXhtp!nUIJeaH_v zvy@%|`GM+|s0mTX$Z6uBiIu}kklKr8tL!WwC{0$mdwrgW!^WN%CIsan=>{+zbjxHm z{fxZfP3g!VW(afbtBHZN-X&D{BhzBLg@F>L2x@9t{aIedW}T;HY5mZ(KX^{XW*{$) z-)aJU(3sU%H}H0X@yAC(>trFjyQ7ZPAqCiIJS4>v&mm`Z6{MTqryhS5(B*OT#Vae$aGq_3adq=cf$fm zPY#xI&ZfkQ=EO=9$=C`4+M~W>^8Ng|jy65^|6Cf*Tj|$E7%d zm92*A*P`J=6GC0sMZ~gNaS%Cuo=@Jgd;Qi5Q3>-RgGq?Y6uh{VLkS zgqZYlc-{X=dQI9#la&0vPuIGnSaM9*or0AP+yT68C|+~Vrc9emiRL5hbW^Pcw(8{c z+Z8;3oTB@!N;O2I9C}C8=$ZVUR+}|rGo5~;Hv6rNSN?e5;z;7Am9PA@cV(`mATGd} z0mc7;*TL&tWzSUMy8;9S?uV)GJ}}oG2M1(Br1rq0=eU_(?{|-8bH5n-z+ydA9xFiT zVrWEV$A91mh%A7{alxbxjUt|?%^dMXZWB^xb06WOiB(@Dj0^BaEKh%ds5@zaQh7rL z10yk#l@Qf{7uIh=)r$u2EogS)^2~Jw#`#`bH{Y%>D&?ym`!zX_dZ+Cfa;a1g{mB}_*V5yUxee=9#*t8W;@)1j zN4apd@%=k*5=b$J7}f5bR%eLbaZ6L6E_rw+G5N=o3>1FL;tSb;R{$!(r5v08g+`PGmwv28P-SQfn(6eJi(o9~tsmZ!St zV^@(?wK(XaaT5pjXR{vlr0D0*n;T`kudBnUthU&NBkk)_a2khpUR?0txmRpweQ#>3 z=J{=rO{I)~jM!Cr?QBGqOp~3d8Y|6D1JIpbi^y=w7%54iC{s1{k|R=emaQhN1wx9Q zPA6;(pODMC*=sBB5%Y-yaE1e_n>kWxgqMHc*o>sTV#zVIsn?alCy*Qv)%@H7dw#L( z931pl#7`)J=d)m%IP$aGT{CT50@&C&6=Rli-;F8NyOu0FyY_45#?^Y*H4UVD5Hw$X z@5feU?$@D*Bq?8lKE*b8G%5;5FS^OJequ4P54Y;V>k;OF<$`5Ud31yk6BnPIML#sU zews9c1*rjRJ{)TVTYg$X2_~$LP#UvJqjwK~sKBHvKE{qw^ACMk z?@YwPK%{=DkxYI;2|~DsKy-Xd1>4>u4LVLe7Ph4H#wIorPfV5d$DciO(R6r(0*HtX zdg}#Vng?uH-=C4l2k^0Kiz8W!TX+7jrp9F=WR|5&b@R5TE*&~;v{C})pvw(&mI-u~ z3UR^@V=YAcu7;4tc`T;vS|7w@0#~*9yv5wF7f2?*xm%V>5f_a6xN6J<*t5FVQ9)yZ4rM9VQSTF*2MQyhz0OHaO3ket7XPX8!a30Da%h zs+a3Z=}jG)4QKR?P;ThfEK!5+eIY=^T|jEuhV zg@5{8Wsn4utQ9$Q8NX57CpoS}If-g5C71NRCgVZ?t1I1Vq9FhcI<^?p0 ze=QEr>J{`gvsDP97mZMF?uqTi6)b8lr3Xu0s~bmh`6CoKnG1ioK=n}!t*{@Myp}_? zEdgtM#ZjM5{=XG^!pjnB#*O`F1|ea!Dbrpa=K~vuIU zFTzs?Q8=Rd;slGsySM1{ri3A2$V%LLUM?HSm6c%lQjEcPWp2x6^#%%`BA0JL{-~qo6nC6a3@($9z$|Yu{WRNR`2@8xs9-5b{61CG80&klp z*X;i|-V#IiW(8fnzKqNhzyh`EsDw9>71yhFbKc5Q;$Ot*gPG;;WSCykt>?mJc3cTe z+-SKvB3i%G{?2>NkAYL(xv-JOTYZJE!$eK_GA!kLxuh0_m=Ti(wBF00cTUv5;ss@| z-f>Aig&MmKM6Gm(SwKkiUN-a?8Ru746uT zr=|L<-$L^n_)5z$>5^&hMFI<1{f7AOy3Ee4G9&G-tdjn0N!i7B_uk5ViC@Y#H-*+t zUr&C~cD6=!eRW{cK02IoWIQ4GgT?ML@5Y^6hD#{Elt!p95k1Fn7nk0hl=@uMSo~Ut z#1udqUQ|?sV5E?-dq4X-GI}&S0k}CZcqBy#Br~K@zs;YZIAkLpEmk}UiUWtmC~BG~ zDrDALYOR00cm%1@Xv_Me!BZOl&uhDqrJPX6AKgtbJVeArMUSnI--kNrzkEs5Lca^G+z@^`}VxnK9^8jnK3tmsn zCMMR1%>+TJ)!+{SF{$Nv(vT1!#sbOzt*R!JU zu@K><$0U`icZ5!ufkD7OlZ#FrhJPQLAPy_KC+v;F&cbi&#x zhhdFo*yCKY@IR$WXSNKUwxzwVXXG23o0F}74kcl5{g6Inq9Y1r<*#wT8w}L)8WA6y zl~)P=eMV)_GmiUh{{)$ElMeWZ8wjbGyC zj#$6>`ynY&6!SBNNLpLK682tT*x=ib)wQWVU^+)S1JPpU=EJwC&R9}3MEC`95tPlR z+wfcKMgsf|gv>FaBUAh{$H!@F`(Hh?E?H+pZM8Q@NH8qnjOr(8KA+r1c5!wRYuz)V z1HP|URsDJwCmNSRg(<$Ps+}3x{XR>~X^hz-j)1_20*Cqy zdW^unLRrLe4gSWZQO?;kw}9R_s|{m+)w$NljgZj%?S`gG!Oa6Tbgwv~O{rx4M1xxD zBcki$>7Joh6TU?Os%ZK58}ml`1hnB9CuRJ~kJHrHEjg!>?e$^Aps($~mJAe)Vz7DN zi1#<<)qx=P#wX;q>sZ)XjL`KmOaZ41RDE6OheJlz)W!ROVRYgIaiWE&VDAVuIW=0;0>j^VM>OGz zyVdZq{8ii$ASegQ3muz(1)Ucy_S)ltfF2h0;bryt?7VCM`u-~W?WdjOA5vr62J}wM zfVm@QO3k&ExncvPye?`nmmry4l@Ga$nq1!2ZVue)3`;LA0vA1)GD=GCY^Ha8!{EUO z-Q&SbRR+*A@H0jgEA^IH$r_%@@Wm~@;FO{3_HsEoPl=S>XtdvHAt-+eP1%#e?m%x| z1V-I&{0c*@>S@3OC}�pr5WIU2%(WKGeVW>J7>zynVXx|2nK#D$-5_K5Ln{BMMnr z*+bU&*jTXnVlF`=szygqtw?yw9}B;1(1^JwrEJY;!75XiV+|cKytPR(4k8LlwU@aI zK6i>iypWOdqt?1Hpc7S36%tk%M59~>Ykk-sM+=$Kf`|iR6?#&-PDHD{a(rw-WIe-L zLhsdt!_~NUWq@;8UY;To7nt+x*Y(%_0Vc2&-2^RU9QLmWi?qZ4)Tx4?8WRrrw80qu zSe>e8!p$Z6!%fuHnrLHZN9C#W=SoJwVbEQCrR_ZPy9O8+NGX|h=UC$wPqy8W;i@Ww zTD@r2v_n9dh<)u&1{ljjdZ&VS3k^Jkt0&Q!~QyJxE*lCP4 zM{8Wa)-yHRq;`(~5^8`5Rky(jSKt)39q~>u~Y!r?o81>vT>l*;$ z9kM_Ix|1kYz(PhmHbLL8NC)?RTNZI>DKWOM?&J66O~_z*!QO)%a!MIiW9H< zYSmApR64HxTAJ%NY^5e)2{l@VY);OnhO~}3^9gBpkl(+5&z)^vc3n-qwWXw{zGS!* z5w{9BOp{Yq4qtqXLq@K7_=)FW7kfuV<)(F)hjVgbIWtEjW$`D)+Ga@9V1;ACMmjfV z1N(PfGAZM+(0Bfa_X>)h$mQjo+%9$wWBt}KTm!?y>Uo(ntqu9h1D$^(jIR_xtcG1* zV1NcXlz|b1GoH`u!(J6AyI?Se$uxCMfwwsJ0f*rs2~})0e0eMF@*9v}jnL(Jsg)P3 zDZ$54=iub$kqGZG!e~W`T#WeHvfZjzDu)Au2#*8dZwwaED<*`{h&;k};Xu z&0eDHM#QpDFY3k^MmvQxzvztsb1O?s@&RaAAnN&j@QKzhDmYl1&1=Y*e^REduZ54r z?B(%hh&f4H24=g&H2ZHFbP38uFK@pyP=j(&Q5sTMKfcQ2#TwWwwmULUGr7Ig@Yjb= zslWH{=+(ttY1&@;Sy<^V>d*0of7B>>oigtb`9mua2{2m9ZVbXx2Rv_}5;+qf9cR0--G{dw}2+ zACU_QT}@6n0xLc(M|?>>N}oxXOxRo7j0I)b!qGF-f7r?wreL~3p;QQvA8oBXSH#-+ z)dz5tHB}PkD`2+2{C6sLz+17g-({BlJ(aweh#eMHDzMBfw2sY#0da2Rg{Aa3YD1R6 zaqGxxAk;eo1zyz2lp$6=$fLEaj2Thl6NYTWJ6_b|gh|UN# zIUX0)rU@C39`~F2dZkA3MV98MrGFwKd$TY)KmsCEA`S% zCn`cB?uMGjbJhp^vl_ks+FK-0JOrb8D+>zmC?`G#u7spOM(fDp@UDK_N_dk1ywv?? zW|5r{pG26?Sdop$@7Eh}J_PTXCVryq!aNoGc)NFwYK)X=ip99A<<{G?s9W@10Y;8R zys=;>U)<_kMKtLuvgFr0vy$}m^wJ)AT^SQrco`gZF)^`<s!0?vL?fFoyjEYb>G zppRjZ^v&cKsm9;%(O}pZUlmcK3tVIv^GhK%y~9 z6=%~gb^)?4ENSl%;SCTV@<_<2XwLXDHWmI$ofkB13t6t%(+J|SlD@XI;F{DDpkqEk z39NhwBnkQYbZ3Z)+s(_#Z2|OdLi+Yox}&%}UK5@Z31Vj%O|!W?^1IE-LEy4`05R*Z zLnZRxLj|@1mbNkl>j>l%fm8$z{9%d_me|P*kK;jjlaLejz*s2wK;F0mwRw(=_Z7$U zpv%HYX0X^c^}jBCWQtrNzd=2x6rymdZO2B{}CmB>=P}HJhAPZNrFet_BBS$ zBYNeng(8m$jA~``#o`JmW}8MEfsln9HpkN+E-}4RVL#*b2F}7!s6RYLd61&e#=Eh( z-1g&f+2o~r>)Y}nF~1ggLG_viydP=VLFK@QXc=KuRbW7yRak`c)fYe4R?b z@lv)83$Fii!k7080*o`uB;sTV*;rZMaOuDl5b(27D+w5eNCFY@`{a|PiM@fbo!*S!A)h7j{60R;tJlNeZKY}sShHq3lhzYx=95#ukaQR-llZJ4+w?R z6{Ji|zXA}=Z87#Kzz6Nl37?1{`lvh(L?Mu*K46!00EuE^5bvAiZlaLlJef^&7jk~f+vAIPMC3`WR+qxR%^lJNmp)Uzf@+im^ z1wuW7VqgEw4A@8_OoP+56qHgc$tFBQv#XC?|A$oH(S%~=rI^y`Cl$wI zLxY>hfE?a!bc#qwfyx)MJaI!FwtX>1oql&${!`< zXM+}WZzoA0;(z_NnJsXb z`0D*^jJe_OIvk+;<*m!iLF)aIW*`O29W)m1uU=sO*le@hYUJxN<8u68?YRa)M=!bk zb^i&U9Pms#M-HN*;C-V8MU1)yM5|2%{-%hV9R4uh&h!x5C(34%FyRdpj4uT))p*3p z?nKV>GbX20zJ8~8Lk(h+-#jG_E3W*q>i_F>R86zIy5}LgZ+CRh03XIR_c#jbm@@YJ z_o#%TLi)*3MEOt2WoBvVng$_-g$6r+90Gf%fF&ROn+JTq55o0q__d!@Isz8wg4Zs5~e*IkDooBv%pN^L(5A_cAciz-dCll8OJJ6xT_CzCp<* zQl6f?-znaOcaADUQxlZ3vk6(k_erkjG%=69A|yTdXn;`&Y%1-%^HW^>Ej9M6-QWYm z;D=mOCECb007|{IEK1V}UTT~NH{pgKyeKu!tU*bUnHxu^yQA+v z7H59?GkfFbZi~n1ry@s>6)Yc7gAmP%QFdk^yn%+eWRzq5(X{K9agYk6COYZp_#5Az z5vF6BaNhw!Gr8bcD!n;&I!6_pO}>kd>odo$*;i0}qT&g`3;R#TuRz)9UeMofHIczY zYenLd`Jyhqe=LnIz$Q65zu*kB82$>Qu1`U3wFcQ*#`Dehk#q}3Ab90R#fQh}al^`T zcO8Xahu_*8;&^TC+*nH^Q8s$CQ76>gWQ5TvJ~;zujC$e8??x1IPKg|Kf1p2x&My*W zHF7QVy`OJ|7AfMT@#hR5-sk6d6`gx(gi9@PA}`87nbpX+yPrt0!3Ox?q6Ie z{~90_W-^SC;l=?~0uS$JwxEqALm_k7{j`!0~Y(5VRDC)KfPqi4# z`A5Os`wJ$q@B>LG=xrxs&b9TqKA5M8K!0_Kb+ItYZ(&qrWo7J^RPJA84t=C7(X0QY zEH+Raa7d1DxD5Y(8#q9a*U@!Gg@!`SJP9n|_sBeLp)1IGBP@m+e_k%WfO};7(7pD6 zlXZ`0WWP-6O~gpaiUl9RENQc6MN2-U{!*&9nF6cRvA83@F|B91&6dKbNjT z14P0q>ttgwe_x{`EHHn5I9I++DH6J1-{LoyCK=0#BKAz|5!E*=^sAADI$coh`{6cJz$9n^&y6#oJsbdn7L6o@koP&E7sy zNEOp20h)if(NH1Sh_{Pe-fHJo)e9@T4^MT4Z>o(Ea*t zLA49hvi^$x-j|7F+v*Q7u6iq1X$Rdc7(rnjFr z=c(qci=OhX)#f(Ox!6qWb6+884%9yRAp>Fea4-SKDcqu>W<_NO1PDx;H0eicmCKty zQ}=qDw79je*1D^!>x$FUS)N5jpQi53Sl0(BGF*g#?NFC|dvSkolLr#8FcNk80umZ< zQsN@WCl_y@KMKul;A#t&89pciGsB0Q+UKT#?STxR!ALg~pu^q1d@KG4Nf0QcK@F(5 zsQK1qtO|}*xP>4_qoA(?t05OR_wD07lFZ`b(*=2(yVWt(0Rws#3$P^*9Li%}4(u1V z-@S9^8aoRM&)JzpVJOzY{Hi?5!PAp7Dk>_>l9To1u@B$Awe8;hyQA$8Htzu&x4KMU zzkZz%fAHWzKdlbn+R5ijuV!U$iPGJ(XHUh}l#I9H>EIb4G`p1h9I~^u&&{!9UVW8o z^UXK1a&mF2nVyuwX|5xNt}FR^vivhxOMNuU(rP8WM8lzIEEy Z|BMfpRh#Y%&J|?<0#8>zmvv4FO#mw&Ym)!~ diff --git a/layouts/community/ergodox/algernon/images/steno-layer.png b/layouts/community/ergodox/algernon/images/steno-layer.png deleted file mode 100644 index 9a2ba55effaa0b96f9bf9d31b81f3c2101c93ab9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64086 zcmb5WbzGF)+BQr`N(?bDlrW?c;()Xu-Q67n0#Z^U4Jt8&loFDX(jhISFn}TEI1bniv>$XUPj;7ax06-*P#2fXMr6;*}%@r`sP7mVUzSEt9>Hm`p$Xx$8CQa| zw@r51#E!QdR@;yL&Wt^W0uKhx2gD8rb_e^T6=RG+;p>D4cT8O`XeB zl9}?P$p7-&THGuRDUA1gAxI8IgP((0lI!eQdH>7Xglb!Z-w1=SXvG*;v>vmP@cV@sA%rSR^DEnwy)4 zp?i}CbaZrS2wQw~$Z77s!VWDZzT==L^v;DAT5K2!dEWMv*zumQdow+Tz`f#17x&*x^Ox)@C2ZTeo_N)vWX*S{P!`L~qH=VN&_IO;D6=}QOW5h8xX z!_BPoah|PeWr;({d3~u~WC%6ZaGq;0OL)S_;}~N64pu!BBK~;R;{Wp@A7t>-YQ=5} zm*wHy=8;A%dSV&3H9{dX{AVwk>HkDr_0Pm9u3OCaktd|q8c(|-bcA1~>ily-B8or& zu!+`y|ki(3^Y`X;T#K!Vgm1pcmURW*#mAve0hVV2L|`wFmYSUKka*`%Xqe-hPo=s8iRi3Go?r5tG_0GWy{~L zfXDrn#^DX!4=JNh>ehWc7bj=uy04gz^SjnRE4xmAh!smI#7W_Pqe}K6b6~{Hrn%<5 zSi=hRtF`(qX%vOtVnbt%f`UStm>1`}ckjOD$`N>PO%Bf!^EI?PPu$*`Z)14<`t{R^ z#OU}w+`Q=hcTH+v8KEdu?2rc>!uL*L#H$xf&`9zeUmte%H(v@<*_IPK@;o+2^WNq6 zDM+1EQ&)Wt;_X7bx|R-&_dV=_#P+%>%cOH_jJZS(8HLl%Pe1SG3H~swyFkRZw0x)a z3H{FHW2HLBdF@er{x>*2H{T#JVaH`7Uktd5H3+3VK963-hGsojyr@2Xrc((5p@KZ?HY5rTVhih@})}Bt_edpm4 z-zjZ84c(__(Bjh0Uqlm2o5u^J0T!bT+wR)|Wk`HG{aj)#8_ou6Ib%uFH_#iMTWMHy zOKZ6jIj5A)4KxvBOLcYf7YCPKL;@$V9tzk{FRWyEM6_4~4^vJucRm(8LLk?>5so~P zb#uEdu$!@6$wo7leY$5CODBjwTBM=(OP!=|3)L3^WG8S!MGylwrXbSrw(9c(R4 z?!C{Qr^fq{pN|Zuj(!a{ZH1?1d4H*Y@45e|6}9ER$sC%S7JF`fFkBMtHNMr=b#o|>4GQzaiTN$5vy?7i-O zVO(8k8QDFalp%G=%{lnV7fY|2%4)nUa?<+Yq`@tQ2o5hWKszunJL z_t@mJ%`Azu6b6fsWN$pd*SLX9ji}xz=NBw!cMbn~ZW^@{!}bn?*NRcD99JSfj&CHn z+q2~BoX=8uUPYx&8ve5D7!KTw7NAIe3mLrKXDF(A9vuIr2fKw_%GW>p#O{-j&1)Y%Jcz?w88a#qASGVuW&!P3$5jg^( z8Sm}$GLLCLr}Dtks+z_nC&rIaT^gI`7j#P!2$vTkaYvQ(gw92QKFpG_zupc-0Y9S9Kw&{G8%%T@Krv)6Bcyp z$dR{4%Sk?0q|YbH{wT|yr}NF{LF-=JTQ=qmIv1_cAJ;Ad44Ln$#-`Rp*#sFL(G}{p zfLhx;_e_id9&rzm|8@{8mc`h?z6n_rTnl9o2}5dap`)m9%LLHvR&-WJJktp&DG|+H zKeK;Xjrn}``WbfYJrogNZMVg*y>hJN(ii&hiS6Fp2D9C*Ym*ULdk(Xt`zcAvIfy1Q zqa~4dk(Q%Z7gcfJQ+n?|@5qLZcC@uhy3u(>6!FpB)&}7qK{$3z`I;xnVEFR2l3Gwt zMavrB)l(opQJE&g6>V(b=-fg{&P&Rm5J}bSH(~qU2c0XEwRU*pZ ztI6cS(!ZTsx}L>e_b*(Gnt9I(hijhs&_JQLPGfbCrg&JIqstHqt@?8~{mHPA` zFf`CZ?#G~GVi`eW(Xu@2LFK;lcmmhsmzM4kzH0d=UxG*9c>?2>MdN%#sc08 zpx}9LHYiP?GuSoFiHeVfFOa*(DEn=(p8q2 z*v~IZ;)kP%ndPvzA18WB(v$_CCYJG!m~lf?u))vHBKmBjQ8-}t1tmh{;za$X)Z`#? zymA@$L)z=A_`L;KmJFiwiqwg=pcSWy7G3YRS<&wAj9!<;K)N!6HB$}67TMA6??q~) zxUJ(syua6+A`Oyzsbxtd{9`4Bon=YJR^?^7?H;8{CXzoA8VPKcV)mAcRfwTk95;Iu zE-KB>RPlAc&PTIBr}Vwg_Dl>8BOz8!_;uQ)cVBK_KjCkQSe#Y>;ZLxm6SxdJ^^&PH zWl5UPSlbG55~)G)c>AdMUJ(TOX_WjqM6O#*XRdj^`Jvd_{kONu3+Y^xkS}?;mM# zlcTuZv>^M)mLI-{(emjaJI2Fm+;0lOJg3OcpJqe4Bx+DSRLSJO`-g^%JT<8^H!Dt* z%rYm0#M18^&|_Vlmr@(e>d~k1$8_b@OTB050oX2K_`O6?9R1q|sS6W2EY7DmKXw*q zPRdm2@n`B?rUYb3RQx54!1NctbSuqtr$l}lqh05Nq6)yE_k!eB5DF{I+4>i`?uTo` zs)JGT_gmkn-EiyJsY@V`GYMxdd|efv+s z%a{2kWw%lA!N)h#>eI}W?>-=Hdt?2R_EVaN-uLUtcS#z`nwrueUD6%y`GoKYhEj$q zy_K++kS^a2YZdPA8~{nRQolG0((zM=gWNMmZ?oUJbqf;+wJ@J3F4Kk!{MN0bW#iY( zd}qgsva*@?KE9jO%c&xc6kf@Hxa`X=Qc5b&;KtKEFW_>1D>SFVO2 zIvCX_a!l5|e#~4dzxgpJ0cMZ)>`69c&{tPyvG*yd*;np*8RhU7XRAu}bKuop8{;{_ z(eBzV*Gnm18Lwa`Lb{%5E`<{PwXg`pA!ToH$S}n@^b?Ii?ys~w&p}0$%`mBT?d$L6 z{EX<6#Sb1AcD^AQk_o*RB0M6ChlZp?2s=VLcm#<~>2I)yDt$|`(@F@lK*4|CyY{cS zJF59L_N?j$ks@_=X<+qR$6($HGz+?TZjlI)=ZodLLMcm9CC@5;pAeBZ`kBWFJcI)2 zTljXE9N^gvZfURwaT}cER zI-%@7rZT93sYTU80L%>B;VuRs2bSPWA&55@QChb(=Kt4F8il^!d3oAkRFf7 zTrm(OuO1jn;FhaM!I`lN$|ivJT>*|PiJIN3X|R^$7s2Ci8kYL97jSkXWn6`OlVQTwU26Qss03w6VkAfgKs#am8dRGU zm4_|xzrvhpN#KA&kjAX}-xLWE?8MAq#E(m=B+bvdlVQ3&Y7Iu^?S~_3zH7OWdtK!B zuN~gz<5TeT^!(njM747j(=m2Tl#+Zq)Q0i$@_cu=!b~LabS2esrooj@qjR0bY=)d! zDmGxJnP9i|fb1gp{!ZJm<;CT3M{l-dfcvP1hz)?8YYQFsSNmU6Id(W6=ocI2p$5+kVn(-byc<}T$2M5REelK$`Tl~FeWmWC;;H>GMd$PcE zGBcPZvERp2b?rm=nqW@QZ#vTk7e8X3@KN|ASA)ycGd2D;>id@`w$j;WE>y_LndkaB zTV+k}wGIg@(bdQ8)qUbdNaMnSRv(b|XeLbBSQtbMC8qSDND?M->ZK6piOTMDA?H`mVGfxd_{7A-UrPiQ?b1$8+|kj|I1pPv zRXlCrw`yk;nRUk{V-$Tugh2a1YmyXRL3zZULD-U9Wk~`8$l(!fXQr-MkS-^M?Rq7Y zO;x*qF&8=kuF4ez_V-PYJ5RhAh+LoVXM9B1r_P_>ldgi!e|vEBe9k_ew2g-g3Lfa+ z&lK~rw+>L4GvE@alBIAkV7woEuR5y$^lbGFFTHo?nV!r&rp@+UB63-1|MSf!$+kBx z_sQ=3WP@u4CmNzHd$Bv~HAEWvPAcf^TEk2EcN!?0UE6p_mt{~zgC@$RKJWK58@k%a zimsdr`3b@yOA?i*zsd$4_{haTN9GGmpu73+K*<1kjV;r)>=B1s~@vP=6!A7v@KZ=(OL!8j2q^6 zT>aSve1)k#L~asF@aeY6J9hWbV$n&#r0w+fmWo^CzrT&XoNY5a!XTa5ZL8sNO%z3i zZeo?1#P)!mmGHw6tf2FP#VDnKT(gPQdg3Fd6Dc&p(r;5~{Ommbeu_=c^Bn7y(x98S zrQ)R8^bjk@b9)DgTx6@24?FBXb_UrFNRWf_MM;;1=uCzUuDKZSg~1GOt;aHfsskmr zc}a>C9ertX9h#tp!A-~_OpSvpS+S$XV56cRO!h{KgV=1s2+xLNg5jNER9bFu+)dE zE13cbOWD!?n4Yi*z)0&I2ZH&lA#&g23Y(|SeP4psh7T+P(^ z<@)V=2SXGTy35-FY4b0_kL9=c&2-u9PCFmy>iB)3qjf_r_DX{*mTpXHZ#U??Z*Pst z>ifd(w!&uwv!Z37_>FYG+nSGFGM;2RAk*R#1!%zGLkv!v|DOZ!RCLVzmX6_SS7x)- z^4#(7rR~h?xIH0{=aiZ@q6OW@p!bO`&g(_mKPD9hRQoP|Pv|?|Kn{cC$f<}Fo6by{zn*J-To`(t`8y=Ef6U7Rz(m!*@IA zsEi+YXr6WGn5T9Tq z%KqAzAZbVtucW*2&#$pp-)odcJT4Oq>$y$Ohp}e^77WWx#Bg>)_9WkBUs9U=iuqb@ zf=fd8jhOuYH!6p^pRZx7`T1#hAb~ilVBFTfHpP#P_`?)pbP_-VzvRt8bpSZM9kjJd znOlcRRmSyt7BQ|=NMqjOfz@Z^lVZ-o`5v{a!V{~Rr_Q4-_}qFPy8S+46Y>4y?3C-J zrQEgl#@S%ClVc#@Qx^I4XB!Z?u}s&MbF=)|YQ|J>AX9Kjw6UYB|LwVGT%XBmn>CSD zr$dHI!3<}woE;P!LXQB!;v69!`GZr^z*U+8i=;cseA#WR4tfXzZ87k*mj;vY`r}6R zaSTLE>4UJ{zt5bn_@Wbc)FJna$s9+tYH``j6BoJPwd6|`jq|bqVgWf|HDRJGC5173 z*OvpIbo)hE*fp*CiJu2HepUh;pDzGKOjb4oRRxVCib>PY-x`R7c{ zV*6XIZVb11n7(&-RLcM7sP4o&j#&F?F(|euRZcB)_8#iw|45xIiPk+DbB||`F6h(? zgHi!Bq>O^*wmC}WC8y02I!f7TQn#;yqow_vd37)=2C&}We|_O6Z|zWwMH3nDI(V?&(%!~rt)O+nK zHj{+U-Q1J|g>LKifMYj1dwYCKrBZRUwvc5QY;ZwB(Fx$6Jo+!%*pEPqx;W4jcEEkI zWgtXA*hncC4ycM3w1Bu6A}f>R08m_qVY`G3fqo6s$Pn&+Y@{JOS~TFIKO!}{RKZ@= zdda)Ayo_t6s&5%Z5o6$B2kV^PEN*ZJ)$9JAtR*^o4=Qb{hC}W zV$xK=b-J$F0r^Su==r|*RX9Os&lf8bqWCs%JP!})z%bv6zcmK#H!%)csh8Cw*4oj> z7om+@>f{%C-9AxcS{K^b+$nPIbZ`E~P72r9WM`0hckrvl-Csv}nVO zZox7o-Qc;BTd=!MR=z;e!K~~`bLM$XmgMEqw2t`$)Nq**zdB5WZoTbnENO7J3Z2Ln ziA#m7dH+$3xnqGDkfV>Xqnnzh+o3K4T^He6`ETAx1H8KQc!#+szw3i#{j$Nj($pdw zHV%Ex_Zr_*`PQX`%xOlCeUJK!`8FFKsjMRb`4+Svrv~SXU%EzuTWX(czu<0DybOZQ za5T8>%i$G=UJ#>HYW{warCEW$E0KZMmhm$fawK@ooul+Zy0y{LWo?b+$8nZph-oc8 zp@?G{k;qLZ;oSMi=)$@g)a=NP9+p6F6);(dnb5lWDCQ@AZ*T8|V!5p7ez2isK7#%)f;~&W{WN6-&;xG}P4e z1pX>mLcMVuD2l+_=NAThrF&d18qY|AB)aMua!e5jM?QBCriF{nm^Ilsp=i-f6#d@{o zGNZf)F@|ud9&WT~$R~yDxQXfb%b21Hxm>-u=d880wS~cByRUBPb@s@N`S`sb9mdc( zd4|$s4zE=&ik-m4ng~4u+5M#;4ZZx5+Z0t0x(Iz*R zjB2B(xbO#$AUp`Wz_BXF=f*n{Pj+Tac@X+8sUkVVhtVMIZNz(1Wkv{xO4^_P-`*BG8N3f2$OH$BWq+w6}Y+Ie4n=2hycu^<8L((0i+biIzHGK=7;jf6em?Z_bD< zF)SnGTASB)hvjCZETA#&2qGAYeG!%`XgD(Z&I9pub7jHEvGqhP@suikQ!K;UUN_!mey;`QG zT#JMB`8MU3Sp$m=P}wV5n%e~t;@)eapdcw_+^}#G+b$C&+sA(yhK|S%d|bZAFIG>t z#BjHGrSTu~#D|#Z?X$DZsb}0j4|Rj?aM5#GBSuMz5;&>m?da9jn@9?~E_ni+>Pu-VVm$ zGp+jo_zN7$;x{&PK2cULi4d)0UG+ear%H3*7B@7GZU0Fsjr2@veC9op5j`T{a%xAF zr03kRVHC(m#tUTzMTnE|AJsH*(D-}pMAjrdlU@^LSC(&-X*~uPxg_Eii*l8UO`P|B z%Tjht`EJ>pRIr-ICN-Nm);tabfyZ+|=%}FL5kTwSm6?AaaaT(XQr0mvFc8l2Lbmq1 z5+3Ph12{xCvTf(H$3tOi5V>%)dbckHGOc6i;ZtH?8SG^8X#M>u2BO%qJBFq2{SCqK zvy`bkYsFpn<#P?kY@kV5Fc;wLo6zU{8RP++E`g z1?^o*18NKovMI5)gczZpW>hLZ;q|M8My2a4@GB{ThR-z2>`@zZ39HS!PPTV+T5L+O zWMjJi5kIjz3sxWo;(WQ?!u!2ri$1~`oYVW2r*nf@O;?Q_-LuI&h|Qgr{n113i>3FQ zu?+W2l6VlM9QunB9MD`Uc*OclCVp`!7l>p}9_Az_gVNzs8h-i*CXB4+kn!Yk(1RjD z_H}J49X=0G7A7hmJg8U#>q7L_T{bq{GUoK>*-R}Dr&f=-peMc)sW72UO;n)((l3#l ze%!?f;6Go^h`}3I^P5%6@e@|eHQ!Q3bhBujtu#?GD4SAT6aA)kpvZKwCO(WHZYl=| z{0laro+Ln-kgn}a4FwcNQvZ>uT-cobQmY~TpwBU`>?o+o7&*-l=8=J%4Q7~r>RbWm0wefa+B;jF)1dUuh+{8p0J z0zTq3`Fxk=z1k9doO@R~FCQ2!P-tNEqndZ1~WGrd}W!6v)^c zlBS=<5@Wq2xpJ(B`+2-PJ?~nKfRLKW@M>wiu16J>=h9MdUEt6Ox)BFbXm%z2(tY(R zId3WyTUmK;{8och4!M%Bn|$pLPV6+D11c9I4-W)9;%P8EI#&EABd>W2P0o*%#cjOn zdwZ>Z_fDKlgU(OA}*6BwEf&ba7l1 z6aDCeD>qW1%V4UALM%eDO&EwP=mrcn({j-BFr}jbS`g3^7>vc}eR!YD$Gf z8F86-D}QT=p}{k>o;{lASc;%vbHDN$%GEpGIeSi3bPbLVkKkbXTtETf63#nOXo55V z*t>X9kSY=RWSQJa82DIco79qE+^XSJ*dB8-5sZ^&KHaGX8Y4T zS3PX;bCI8oPik&m0` zB#cp9Qs!@03)ngto z<{cV-s45Vor~&)t_3`~$lGG=^AdZIMR=P*4yq$Vl_Z|(hz#}Rk%avY(N~_Z$i<_-D zflc2Z&kF3)sV%MeAnjGyI$=@WK)s(F%WzC37A*rMsn%afFJs0w+Dr@!u6VbN?U26F z6XvAqRtHVK`y@H}RTxJhq)uZ|`|r0`e%{$D z)#(xM{H*K7WnYw8_12vib0}5L%eUx%FacXBb4((AdX`>qb`Tqo4eLx}6HQsRRLHfM zR8=G3BcKM_;POY)%iqqEXC6{JIhVBNf;+nRF06$IH)aQ#KGJg#Ak@@58q5Vq76Lgcvu%0?1hEjZ#PN787?0ElddsytVKV*j#bnM=mq zI;$J)11UOOe|S7*Dh6cCIf}i?AW#>2IMF~>e1xyIiCwl4TD(+Xe0Zm2dgZtC@|IKT z+>-}EL|jAYYO|n!tf5>h2kmMZtBXBst++eI~iW*^DziO$2Swr zSeTRBG3?R4vAg>4+blz}H%@~M zzy4IfWhszrn-YeW77N$Rzp?RT*66bFnT5ejiT&0BWJ$>J@*{Y{U}H$*eILq}{PN@v zlafp4q+7J`W>Q%2cX%JuRB9vDCNM(C5DZ82Ky7uOC_`@7WQhlJ)dD;NyN z3f;nBMJ;iK_;r*p39fUucHzN69~1gF;yr|jE&bGnl28$VCGOA=fZRR?6Qw^er9V)U zWgNBGlldviXT2jp^HsGRIa@mf3DX%U6ws83t?Kwg-#Gi^`h38te!A$HWVwF`VyZ(Ne+Wj!*OHv?z4B`?=(HAkJ4| zsJkX8#I~kh>cdqGaK(Ci^QhdpklA!9KPX6Oqz}7n6$mdcUG2eE1Waw-;u*v4A6N7^ z)QwMI%u_bj=`@=B#)q%5*r@n;k-`#-@E|E>DbuXTRX$TnB-VEmW}lk7TmDmy!Cet*T5}=l(_L!g5hNIyPE9SY)5s)B<|oE+@r>il^npB9>=E-STds{9 zpz&lekjY>|z%CNfmEgiFk5>Tb`L2LPRbwHdWyLcE(QQxa1 zRu7Utw9*C~3+67D3-+z=FAQ4u)~=`2r9tu=VsY#k`S~Lkb{plb%3@Jta8d@2a6DKZ znHyJ)>O<#kG_v#aHv9N*xM@C)8(24sDZdgoUvwiBiYeSUB2HSiFmzx|K!1f;q7gj8 z!XFj|79+)&Ik&9{T6r^>zUBeHlsJKrxqo;`3OIL?h6KYw(?=C;8V8=N0!XHI<*MRP zOHdOIx$UoxYD9~^5g@jVX0z%4ve!uk&1F;hks>E6BHPz8n*d5gIo(dKVL+nn+b*jn zs!v1A_SPihmqv(ESps@oyf?oMB+&qcfHi*;I0wwhWsC`s2w-a3v$rZR(wD9Rway<} zdv#{a2pZL`T_bp2(wY{a80HIAV*Y^Oe>QQ(9Kr+mSI~S}Gpr-4QvjK@6vnpSM zCQv~k@{Z$o$X%DouN-5WRSf_Z3cJmQzIyfbK>nH9+-mt$Y|lV?z(@$2<`@A&m5j#5 zdIA1aB*S-K&qU{`2HxhdC?5y9P3ip$!V8TttJE#0iHM2R<>t*tF|eJ}!iCox#Gq>Y zu(jc43C97bL?lP2M!2Xr0k=54HXQWf;f!YEpQYdtr?~*ywMN95pcGI#mX>iN?X2tUNdMnsS@L~CU{Zm;#wa*@1#cDMMOB||Ron}zsyGczS=lap8#Z7}Ty;aW42m(ocD@R)Iw0O# zd^X|nrPZOI?w$$Q7L;@k!-#!Nu`zgasMz>9?A=c+;Hg?<0sII!9^W!=Hb{VTv;{qG z04alXiQ{F}v$I6_26VO^&&PDf&@M-p9KVrkyx}-k*;X58tZinw6H?8-iBQkJM+fXM zas^?d&q~b&LG@8T+yCq!&+9w$1vmo?@?+@$+iFNKBSj&@(Dq-y&vI`peY*K41Q!h~vQ{?xg%vN9v=T(PW@d;}sMXOiWCqC z;YEeKaJ^tRcmFfC_U$d#<-I_XOI>S=`&{U+!$iKfpb7feE$|4lp_{-vAZ}-Y$~DDM z?-f9)w2`_24rC$kexQKc>YC~53~aN<(C~F8BPCRhYYS&I--Ybn*qZ-MH~-0>1UNAl zeJIuZBaakk0Ttd@G!3H6+87ar?nU7E$dO2x(ZvkSE4%k-W^FfEcu7P>W8P&>QaJ}8 zogn}47LXszM$x8278DeG-yP!ZTz8!oD|(v+Ws>y2w#<3S>P}b`O%MbAq zquZ~B5i<`W1snXDu9UnS#_CH)#vVt*N>qN40Jau?0FA3fHZ*{!Uh zq3~I38)4lEwe*~;=4bfHCvz^zk#;{M*ci1~RgSLdWOMvl4EKMmC1M`WgxBcC6Iyj4 znlzdYZbLs;YSXJWC1(B=2u~%rm8SBN#sgFz3?z-MS@e{0~y^6k{k-H}zCqXv? z#vaMyP*PG+&@$5+%F2>7`qOL{;^?!O;vq?qpQM10j3I(c(f}})KYwMgD-H}h$p1$z z%im=GBd%zOamWyM?3;WXyTCee@&U6tlKnr^hm}vq*o2nr^Ih2r>K?HT&v|!_8Tu`R zp?N6L36&mPOrT{G@;uBSM#td*9@_4O+ujzTfmf*Urz!nD&==SRC8ZsM!|1QY$Alz= zck4>kaOt!r>HlA9S!Q!d1Ofg$Hx46+CvyR4W-6Vwtz9*{msUHKUqew=lMZxO*gBun zD_~5$8CNP7o0rGhpD9LVVq${vVT=20-PG~c#7diMdBO&Y#h$qC7})8+A+|T}sswhT z?^gzH>qtzuSnL!(zycJm|D<6_9ygN!1DPFaM1}c51T46N`Fx^WG2`3UZK6C2WWX~~ zs{DW6l(~DzcU>S%wKe%i@ zq2&H@cw5>4n~@o8*U$k8ZxyRlmc+oz1sE&F0j=09(C{UjOVhW^lwR>*BrHqf39DOg z9Fqa~X8h2CM0fF7o=F02=7~Xw{?Lbzu7}3Hhwk44!&jf<`{`D6ZBEE}H+|#Gb(gJE zD>ny+YF%-vNi~oA75T44|@?M z>NjW0Zy{sO*xBADch`DbgB*W}!w}ozUcmdq$YlKIx~)G6S|x4#t;4lNMZLVQWHRsn zV2z(Ms-J_S_q=`A7@^hj*aq+jV}sJAGy$8=FzLY}Q?fVyn7b+!fHfU&&gOV7^GXpA zKw&T);`MJ2j$}wel9?mp7$Z&|$p*IS-BvJ&9}4MwTURtd!A!f6;b>H4*>=Zf)~?`q z!{|%Vf>jio5*Yy}8u|EnsuWHiD$3(vwFFf*TKTNPFRf$mAvHDiO(KMR>)@X*UvJoC znNKVCpPLea?A7l$r9Rs3|BCYMhKtqveag7!^Jp?!%b|^NEpqAJOU{>yekEmezYBj% ztvvmWay1QuMLe*R0j;HrArKr9!56+9z0@9Vum8U8QYz*nih`eK-lRnDdA7LRV0C&O zZ*K`;tDSsaahVi~g7-Gg=0U(FG=XTJ=;&FpbqlzcBP1Wrh74E1h+uoG#4kx1CI}AQ z#_Rm}7P=dft{5cl?ukHCIir2TGpJLc%rb$pIA_PdS91$9eof$6CZ@mA4Nyq<`wkDr zDcMbH6-$#!B73!Oo8QFK7V!CB0+?<=VIjaDBKn81#OPL>QrTEz2ED)G323)A%@+9& zGL;*A#Kcevf*4PP0ISY7C@C7%8T<2g2|1GSo;MaP8PjUB0ZfLX+bNcOqEgY+bj^gh zODWs95CSN27cH2;OmV{@Axwq9W7a-w!)^yN~L8~3ZH2>EDmt;eRS7> zNkq3};|aJE`Sz@!kLudyuA^xIU=|+YAs6Yo5#8&S(DwGTK@$uR2>=T6;*0Y>HA~RP z-=gOV0t?t$8w+&3y$a#aS-Y$3skk&rGB@Fd$WJGwR>Sx;;dVQ-&E`>y1HJfdfUkHH zfx|6F5_fBUV*|A5`#=f<+k5Q3LDr^Ni2yv}rIV6LYAI6&fFD~}WL6DM-QooePE5L+ z_3IY6A$t37lxspv724 zXl;`~(_91ec#HD)1x+JMy(IJfVYeLqUCerfew%h%?;m28H12| zW)-x*{81JdtZ%4)&Ct;om_V-ZqoPpP4}@WWWZ0+pl4cO5X&DoqdWIL2iz9IB4LACG z+ESaPGAfr04Y@B~0=RzH%AY^oWXCKGx z6c)pfoQ#a?GW6m0ALEJX$6WzCTa!J?C3dR+@f8hUf|MQMKaiJz3@mvV7mHIL8 zb30(bIoy`U+(Vu$mM)h80}K0bl8(B8UJ1B@LT*xHF2y9Sbz&5$mV5u-iWEXfs6NGH zN~nD1Hef>96iHBKs%p65F=RK;U$i8{pFQ5(8;OSYkWeCTHg5y7%s&SPr}2v=`nwfE zQ$`*!c?o@kUj4KEQ~KdB?tUJy=;;E1xd@|4#jZ!dFvu2Ie26_Jb;M0`mmhAEh%sCb z|8Ez6?wa|KcGUx-(>T6TjD`5R5;=3vki?UoX

    I(Bex;?A5`xsbLM>%eo#im~+Z z;!rcdVK)^9{_rP4l-A!8uV(I2BoSs}2WbF@PP7**bk)D;5e*YQ>p*I~I?yZ|pO3Mul-teB1vDy>QJ4gTF1t42-;g*fP zxCrFDHctD5+YXnvSkvv^_393mpDYn)Ekx z|1?naod;VwhX~P!*z_FhmgtxmA_Pg;o1GDPTuxS+Mb%iRhd`0-%Pt(E0ebsrjFBET z9p+ZOERptl5Rt4-0~!y*%!|fAH&^EYCxA7hS3?xTUNW&NIc? z`!+r}lcKmU-|^qIYboDRSq0Ys(njM8OF~J&Qt{V=@VScRQmFl)#o)SurcW}D4vmh2c0z`QD;_J$aIq++){e4@WAu+dFG_S| zH?h@FxmNR_*R>8_e*(v2`(vR+T9Xbg13Bc;6&xOtTB-r_h6HAz<_84Tzn3(O-f!RG zGPitVBv#>5l3qLYM=tkM?ZE2jBC;geHZo(Y><(8_y@mg-lHkOINL4K7eV`fSw-3Gp z-bTC__vSHj(+Yy}Qrx_(mq=NXKS35eh+09*v$hxQ*NlMo5?WP&^A2OnYWvhIS!BGQ zuOMnrKVA5j>8m0@eKXQRmSh{~*^bUXUh@zl%89~NAzkzeon{_h65tNXkjqK3ZLNa=;-t9I7UccQx>44Ou`>^M?+QYOM|>K#2Abs#9}XaS4M>(~J87`oXXM ze|S|l)W_$N`7wHX+-wlJR~5fb7bSujgLAa3!iBAvauPzr(DLZ+-tdYj9)t@S)_@*1 z!9QLRv@N^xfEm`3sKD4A_1{lHV#qEJHpS}bbI!AS!rP(oAeOoC&jL7^o zwBZkC%<$Fk;?MwMz<FT1O-;7{ z*u*no`${MiqnN% ztv_#bp!dv`*C5b47zcpOx(kn^oq7!=(BSU;y`4xAThXb87(-y{ulYtb)Z!ml)~^Ie zSH{P`1rOk2D!V_Pn)VnN9chQM=;}To!RhL&@)Ug1 z3ioO3bX$OkRn10W9DXPyUz~-2oJqPTyi1ZMcY4PWqyJ=+w(Kz&#zz$EDbf+;o=ro>KkGSNFNU-+PM6Pz%%tD6x9l9huJ# z-}+w*f+wu8&`f{*OAi61v{TdW=`A-d1V3PX{!PBYD6eYag$3Y{>Fks>58Ur|^!Utj z$b8?>=<4@$cgAW*)Uxya?vX+@+?O|kf$E%K^%S(n9637RZWVBGZDs?UioK{xax4yR zTKaAObEbO>#tkSiYI-G^?P&KAhduaIj+-}chMv^xZAofrY4yh08wmR${E8ei_D*?@IPDLY)R?24X5VA0E=SRE`0hU^ECE zZL;Nk7)P7gXBM)3YFEgYTJYI1JXu#h-C01*<|Zyai3M%EMObN8Wv>#4RwNl@cjd(t7a`&QJ4=;F}-@VD)&lLVZ< zpx9Joi69nZApd=L#H{oS1Q{m#msocHe4u+WyQM3$315v038Nl-feeGW6<1okr9kPJ zdQ!Ldsgj6yh)_~e*711k5o6yO4@rv;iy%#$Eg*v9V@)0NPaOLsapy26L!nQh^p
    CcLe37MIpPU7c2mSwI|7<>w0ruuV?0Ylbvs zaD$n>0VuqNn=EO~e_(I_N2O4shF4%VcQQanQ^@<|_%P0n`gx;gcRbYuBNK%`T--=B zxL;`VfnGxkaf+DPko9s<7bESA4kjK*#(9rP{Vj!11v*5pdo)^zpNunWWF?Lk*!f8f zh)K|=>vw6oi)Q-w8X{;U-K1rSA}bBX<&BaZtS>z1E5`(?rsNE@3BcrjF?7Il?2k`J zYV!5Uv#$e~-rO_l+^qi1Udd1LkQZ0~BsJ<5NDyVw$iYGRx7W9g{T{xInVI*_-}h;R zd>1Cw%ky}oVLCgqCZPC*7eiVLn1R=temEXI@LASKtKDO@HBdGSwJ#cuQo2aMjwW6C zTO6R07kw2d@@s)5I;Fl%3rmC=t$#2Zkdl6aNke!jvibWeHFa#zwgm~@mM;<0C-+I5 zI#U_I6Bd777=aDtFL!r72Q|*FsVl9tb9h?IU{v?l^uF;A(LJsn`y3NnR6V62!W6-H z78h5NEYXZq04iGEiO_l0pur3-#)8ktO+^YbuCK~9ynlhUeX(e&5Bief;TXna9h8=H zRXK9!dyEE-t#D8I>_p`Uk;Pw~a>3v{khg?x2E>gOKQ7Cv=&YOJv=&29JXQCL`1r+6fA=E_+~ zE*-bO93|PMchyR0Jb||z^?ovx$cidBU&+EOBPGXp^^16Gpi$rU&K({*jaxcUI_w=G zN~=I3X4gnd1_0Kbz&h|3y41mf&VN8W4O>HixUoFGqYu=`YKkUU(9ok7FB0-{bK!j2 zM>WR7V^l=d)v<}Wk=l1e%eu9jof$tWXM`i-w=&*ZN1DiBtbK7bf!HrUhpA&(x-lP? z{7)2Wp>h|^m8qipXlmbOkSG&$NSel&nT!fRn^mjCDvA}PO20@%f2OmN{3RDxZ5Sj? zqX2SDT!bbVRH*eQCW_$8g3D#E!=BZi2*;i&udy86Cor?CX1bq0?+_Jg$hy`C;vugW zxFzNJ3v9H}LjaYONC*Izy+MHZ%M5c4QCG6DB?=;(nL23w@ZF|Gb9f#gOq(AXKK6c3 zd=1#Y(kevdn4q=K16t+*k0}79Z}!={p}s2)vP(s8&lYRm4Ea?p&bxZ+i=z&r=tBc>fKs0+s#6p2HxuI9g#sLpIs}fPi$f6TRpf z{vRNqgJ(}anrDrM0D1^;Ka73N3YOGS5)fYwm^u<)8br$Bwoc{Zf z-P=34NpB$4uY1Q0EEWA=))<5Y%TW+1Q2@<6(DZdzhe@G&vq)=_VA}lv@L`U0(g6Q< zT+)mmtFz(?qte(fac3T2t`v#5yu9oHHcg9iFSP%g#>osR8~nyaE&guWH2DnUNb^0|2aTIi7(6+1~*+jza>wNJcnlQ7SxW1%v)QNOJ!R zm||V589k2_894heHNgRT89;_1`3)2?B?4{-Wv^NY^E+L5hXY!_cUNBJc_Q2~uc0&F zRKz5QeLw|ng#E4du5*?zwY0($y~^mjbHoA>jJ*fny2C(AfO7>2;YhfKVnxpWW`B;^ zaC@4i>S92x9b*D&+hHbw|{ z3j?Gm2r$kU#lip;mKH?u>L- z^hS60Yt(8mCv}KHoW^#pzX&_N?@&PdK_}c3kiO(eX~Z%2%LQMvCyOgtSs#WDtWKndFA(|0aieLt)@55lLW|8qCaj zC|sXmDz~xLv>jBa=mzc(4pvHZ)rU;qVKU_2AU6|5H2_!u4tBapNFd=IlL!XsGqmHC zM=`^sZ|`t~3wT~fUkW%O9^)3-S8V=tCGri}W+#dY1}Dg+zW&`HrUX(Wj0bo{ip9+% z{16_|J^rKJToaja`;*~R-pZdX0PFEJ34t-${1_JS>}m|P-aa};M&4RkObbc08#F|0 z9}US*SUA(QW%j69*%EC9q_r>6tLv1u$_+z1Ar!!|qnu%1?cpJyXBi9A84zl`0L+U& zlsgy(MAt$kb1@jPIQ}UC$d)sOQwHiPyU7OXCvpn=4=c z(M7!=#iUmH6@oS>n%>v%#$ll8BQo<^JBqG+LR?^%dP$le1){j3>VgK$G^fKS$iRM4 zhSA9qCdOw?oE77Q5LJ2p3lgFr4#m3FCrNvW0!H~9-;182cTU$Q%&9puaFJe7TD}%{ z-8(&G@6){d{`{F5?SaTS}tkpO8hbjYVeQ-}T?Sp%25erG99S1Y-Hrw^`q}?z_ZjCMxFoD!q zi}w({!V~%H_d9o@2}{FL!jHp)>vWfVEn`57YZsQ97--buo45d1AC5(*GS8RIQ@2ZPS!n6p0(g0^eII>)~ zap5X_+8goW$9TI?xNoH=0d1c=$4NleT8d~E~8tfY^Z)6YY(k4U zD$4|C*WSMJQzRoAV@VD$RiTS&*P)eml#FBe~nAMLoAIQ;rlz{=mA zzFJWpFs?H-I{;w4&J}JFe$kwcpI(gvJ(E)wrj=a-*P3#>Pt!$l;n;Se2oGz5)(HMK zUMXjLhNLJO-o^))P0w7eqA|9~44n{v2V!fyS#-!dv1�yPMzr0|VnV*cGy9F#j;DwsX^E#N)JNWyL7P2oyg;~Y|_{%j`Oakj!D51rip@;m1sg< z$P<&}mAl}3Hr?PLa&J=|hVpbJ048^~)*R@u&k^w(M&C7r<{NwC|CgOz&*kx2oIyPf zsft3_au;FCo7vA$+-?_)e;eA>dea7HU<0x#BINV^#?zaP0Mw)9Xi{0ru?P2GM|!!Q zJoj59_e5HwQwgrD!4?tOWnsBIl1TU2ND1yN;h|U%V&q+S#ti}->IP;MtS-GbmZKNi zXMG`6KhD7w`x9KTbMUe@Zp{!A7(xhh$Sv~Q#Dgisj{h{MW&yK0J%CU=#Y83s+MQwn z)i=(u%Bgz;Ff!?K586L~oTANkzQ6wUuiOWS*2CwLw>6DJsKnO4vw>4vyf_ypXO-th z=v!tT4TbMy0OlHJ zj*4_82DMW~v}1cmw%!Qxw|-e43)ArB|0N+KCMs_+*(q|Qy!xP-kXM&Wa>vwe^}3uJ zlbj%Cy<1vV-WC_i`!7?$7Tf(Am~dd+l5jW<4<^2w&G{a-;(!{a<=pw!@aR0IzyB?1 zPfrhk63=RDLv=Cpw!Vu+3S8ShzhCxp2fp6NqdYboc3Z07?)Pe&tkz{)Z+i#;RBhh0 z4UQT8b#Os_LADlj<3(%wb8Z!qou0oc*YA(IkxJG<^Z+b#Zw;HWx~I@bqoCi%+VhmX z)lbvDJ&Iu2cco5M2b5Tt)U>pZfdDQ9W*o>aCHIOk6`jxzSUpTG=vZ}Zp8n|Xjj~Mq zM)QEn+6Tqe$3K#Y@9`atZcEve?2r~WariWg4!J%i^^tj0`gPquAfX5UQB*u|e&Hni zrmS9W{*Nlr%EO+V3jy!vPyQAaaz&3zV^bwyFLru5-Xw?f{Ji(+$31`+Dl3I6@lYum zmp=;LuhDUI`UQIK={_tjA zNFgLA6)(!AGWd+m2{t&N;?wcIDle827u=FOLhK z+I4UZB^vkl$7x?Ldtn-_jr-o=P*=82IHXC6!O*vX&zA)(msSf@==uo1zSPH9te&xD zDAvp2&d3|>f%Il`7s%Z9!_8xBG@KSb0y+!~!!8>imuI$%W(2|>Ftuvzwc%$@M>7GB z-Cb@yCvzqT=Rq!+<$El0!?Qa&*J?(}#1y@jP9}7`7#8m^(69D!;o}FB(yOkDvVBfG z+l-*yYscrQH?f!!h2PED=mC65riuf#9Wjh)x#ve#5x#rwdA?^eSTzGbGxAU^-IjHv z3v<&bwC%&{N|Nh-_=W3%q?Sfqnej-r5i9inI3bu)$#uh)XS5shSt>v3+A=V>*!5VQb>kv0PajqeJ)ZtG z3b9+YRQ$YeceA%@NKxQHEPVTx+2HLq(R04*Ec4XIv)1Q`5b~BM_wMGD&92+VBMjNU{py`Wx%c<9qWb^E1$ZljP=_E1%)T6| z&-&FA4`QPUFkbU5neyRqO^)CIjAU*;%rXt73Fi2z(COu@SnOpN7XQqzIzgNL5iaK155(HzRRxu`g3XnV z6bok#iz8F3zlbpqc;r_h-Dlpy3I85t`l@}}unjW17YYp5cV?iR@fQ3Kqas%NZzRmX zTC5P%yH31H;{DlCWnpygV|j1NxA+n1Ex9F;jHz*Fn194kezY=Xh< zrr_3W-%U=cm^~0em0*N|5-N3ES?IQ|L+ia3=?M2MvOAqL>n##Q(TyHR9bR<6fi1{_ zIS$2v3AteHQ}Bh-7pFQu)>;q8iqzC8Y^hc-e5^C2Eb=3)VThab3(Y*h*pYMuNi;!O zhkRtptK{1~lVp)iCFf_mg&Sy@Eam5Znl7Rs4goH3QSoQ4rtt&u)6KC`}&j19b@V(14u=llWm$FOaEwFC7*}%d7|oavWdj z+Ta0*y^OXoe(TWU-`zQ|==l}DIlN)Y%+pb~wZl<1$(7|mMWUJ9Zt&=p%esq*k}WD) zh&J_{9|o`R!?c--K%1!?s;2Ppb4K^bvgG1_iV8`Xcg4|uRBHU)e9Vx~bH9*#SNQSW z6hA+q4mJ$`sFY@`@I_kBw~G)ceJ@*p<56m%>h0{mIrCsR3h!2~zq2Z~`*NC#@DOZ1 z8R4)^2kI<=7AGI!6vjQ%_+$#Z_+UXLE{<&HWDeY74&dL#HWGG z5U3I~fQ~Y_`m=Tw&y(63@_@@qZQA+MR^g`GnHGrqSWqum=zfb-7iQNRYwHPtRb z+m49kABF@oWG}KVEsSWfz|j9{wP&B^>f98W={xK@S_wXAlQM(0@Sa{6XnIb=_{w`P zRu&sTM~yT~XBiMCxwHX_tBEKH`pV~h+KQk<+d7T7jgH4r0>-5FbB~!I!X#W(17=j! z_1UW@)C_>MxjOrt{|(a)1ruj0ZHV7O@f(Q%wVMW(01*1^-L$5oxW9l^myhYRV3w=) z=ThY)fF9V2$4=h{ylT~7#{*$_qwmR$sM6}67&mid>fhOj}}GS3ko=*4SY!p`b*a7h2sHU5IU()D_PgiyMx?dixu zmku6;6+te9>3b?Dt}5int5<>i2~d*njwC~K?#Zr?J7SWLr_jpu8nJt1!pAnh2`6(p zqWJjypuLKkW~6-DEqjnjQaxO-D6h0@+zmzs(|1XP{&;^xJPiYa-E%B@|A@JQGG)k% z{5-%ae6_Kx5BejrDm#$c*at_;)sCLXYlz)ZdDh9{`rUx6RboJE%xSC;-_uH=>(uRF z;EvhJa~WqrE(WevQ{`dq@(?V*B7h0lKtNFF#DPw!Q#5hMEwZ&vlbig}bZL?2^S$UO z0+W*dPzwymq5(hQ*ExM&;?g_9eZ=~%r2AVGC1O6vj!*ZS8i~l+Wgm3=a(7gAk>8x% zr;Aa*xf6IImjOfMYzJO~Nzaa8-BfMh{}gPFCi?bm>+muW*Wu~!qklC|!Mq_#`)qg- zFazVIw(wuYeq5k$$Ddc5sRMOX40{A{q4}l^NtHtp$9;CYCbUgg!6$r%Zd?NQ`L#aq z=LxYy(6YrEj1(0!=zPRb>=eU*y8am<;J@T04$T5zH4;Ch>8JjL1++3hO3S*lPraxC zH%kK@=Yh#zlPt^uCGl-8pylaw8BF=RZRZKL@$klAxS2uEUb`@UUxF+!wtz8D?uBX( zzY9OVYLq!X)I7{x*G85$IC6UKycx*f=AwJsyOR)$2i?0dr>|&V^JMY%Vbp0v5|W*% z;}8J2`4;BTz5+7jTeRrqRg@^2u^d`>-_X#Hi)*22j%tB?V{qF%kl>dO{ZZ@yJ5D5j zd|*hy!vKGn1OCt&mDLM|IUMxP`&x?BY?|kMuZ3$B+9Y-AebA2tL5VoHww1A}cYubaRV+=j+b*jnz#!m2ecuWGOAQn;P zxM)d$W)7iYbxG~1wz~&79zY3gjF`*F^gS2sB(`w!oE_Nl!2K}-IW=(3y$A)?Z{<4% z9_NRZz3a&F;}@-;{r71`TW`>K?Uwx946c$K^XL@@5gp&;O$h1zDLz*-FOOT8yl)ycpLTzfgnGWK6?cC)%xe>U&(ZV0%4Gb**ceTTjJ zJsDATh35mzL1326qIAEkka6hUwn)a8=M9bfCiD!NrqK8yb*3v61RLs-PcHx`f%XSa z$uv;^%AW&(=Kmhs04C>sJ5Xd+PO=ERVW&1N2f^XXwThnv!JfaoDeMZ01;xc9?acO< z7^^atz!{u>S@&->;8d)9aLgXwAa$!!{^|X>RTZMZq-x%y4=Q!( zx{o~HSzi)FVCDhenF2G~trfQit3tn+)Il>;$>ZsGlOqld9WM&%e+mHOiwdP&dF+28 z&ShScC9>+`yVe-K(uxj$uYR`AgL#a6oM~OVve~y0!$(mqXToinARGEn^cR<6SpZ>+ z>wYJo=u{hbA-ui&y$L#OeZb$H!)y>Y|6?$myo!shfCP{TWP>gb%%X5$Kuk>Rq379_ zzdt-8v^SDyYpyzvw*HUsv_Lvi6lep1lV5`a3=!3JzPz_MROrZKn7C+HJcyv7prHsS zLFS92?%1j5L>W9_3JK2+C844UMMc^}VaV;c^Yw$H3MGLvT1}{HA!gBI{ zltj@W1Q+J#C(Fyr_uI0~PFbcX-r-_ni$8oglZSyBR_(H@mC9iZ*H+^bagYZ=v0Kib z&3v0YQ=zXQgevVsa-Rx$U$cQ&S1$RQS6 zH&}gS_>E43g&zg)uf2I{SrIqXc)|m!qPyFQSVB)jctVe1^Qi8zYvMFHwDT1&q3M2_ z;ArX6hWCU5#JSc=kHh@qS7AoObykyfo~E5EMRMXcB`aH6OD@~}%S&eix%YVl2JZfJ z%0L8xpWeKy{Q-e1EN6K9lqSp{X9MIr6F10eXHya`W)I%FaL1V2TheR@Drb0|ZRIG% zHfcus4I=F=wY+@03s7{+yV{qJJk)Ai@3&o2YZ#K)^qRiAc4NmAGCj#gnf@dXEjqHy zdg0IG7dLC$Ad8meSKcX6knlRXTlJx0hSnD_aD-?%G*WbYEIAqkohS~y^sR%%Mis-1 z%ldkx>bK|9FIm(0=^%A{krgcbHeLeA%E@XQLgycr9`=~O{zZ(9C2Ji#W@C@<7-204 zr*4f$#bO>wQMzuR87bX9Erv;W>Frd=5%vSaGxO8zhZWq>x^BUGd75CgSzAS@y9F7e zHwvm3lhoiZ7e#1OOwO#e5q6i2YUxRKDh-0Ty<>AhUjWWl3H`Vt)Y2YT|CPgxIW~M6 z&$};$ukESSWl8WD-;r&@K^2_(C2F6_0#hTFq{ufj^D^fWhenbl+ z#1lrx{<>Sy|E+ZF!#wQ;Rl@GFwBe+{g;3M$br7N#eW-pb^e0Xf}nht`g zd2F=lOnfg1Ul`l&{^{MvGHbDcfq^=QAL2QMUxKj4xZuXxMDz8bP^w{am*`aP_o(EH zyDRUXR8CmPtOW@Nmj=n9y^K5k=3Q~~(Y=Bvv+|R*Kp57ahvkFu?DP>GBwcLis{Wsc z#laco-@5qI-afx+PTHVrGXBZnP>Y;O^koF*7s>vsuun1S&hDY~~xdN(vp_x!E?4R2G)Q8Od<6yfo2mEBn;($vi=+#1@~S|E8IBhoGKSw7>ZpD!RxalIGvR!;NE0=CYd@MjH^b_DhCh(z`Sa^D0e{St-QoXdLb7P@h9%NABKYi!cIqpm(-r~ny%fx4POdH0- z$AgxHifWC$0-s-*y!`fN9dX`$o(jS}dsC<$e#kToID!ZX%b;2uyvA46;u$hfFn zCmI`aH~+%we7q_JsnkO+e|f_4IT*_U;UT8m}X*M@sLOr~D~R2ZEh+`69`kfV|#al-kIPM ztyY?%*c_y$N&P(2(kZlF>!AtW2p+HwOs9ny6$|9|J=T;&%Me3KYc94CnE187`1lJl zD;!&-A3c_Kt9x~_4Y-E$tl)pCI_JB!k7BkgRW%lCB$k4!;f-{WZX?K!c8EKQXo8Jr z=LBdVB>Q1Uy*oUel1r6Q`wJw-MUq_mfM2to6c?v9UiOMBWS@66c*M9+v$caPEH1+> z@aFcmSoz|BNm#9|#EyhtG}&SN#~W1HSVI1S?t$Uuu=baSIl^VdeVzBnPt_SZo*pBr z5my#?*Srm_@r)sBto=;LjaU<4v_ugrYR@3 zUVzoECVl&his#Acu%*p|yvljBPrVJ|&@FEjQxF|J+Y{dIPB-_Ce||5ARv)WXOy)%s z{HarM)_$4d#@;vn5PxT;S;wxzRzp#el=Jt%A_6uw1QLgjZmS}+z@vuDx}sHkaVC{| zd2A())Pg047CHN_;#tBJ%eO|+(zCO!%~Px6AB2!6SSRGd6_xTl*A1yR1%i^kRr7q% z_Jk%1igyh#AIMiF&4Rgtzcwb;8waJ*M9sHYUym%^o!;(H`&~RuW9OGF;+;Z;ShlKezb6(jE|-(b;-!B*lwK@cpTmMmJ^VVG?kq0T{4ya<+^eub&w08Owi zW~pzj5VnLTF+#()GFDVs-}rWY=wq5-cVqPRRsXv8$&~hl6^2`}+)q^Q^P;Zezsc}W zm9M+isxt}-rUA;bl*_eqVZQN`>mr_==f94cSzk2Y3obOflopMJ-m2F;gB$mc>JBGZ zN7>k+*w~qFy){dZ= zP<}v~+9xmaYCkG0jFP(IVPpe-d9yj!9`Pbdm~p5Opq&34CMT!8mZyWXKBGd(EO^(g zsv5Py2B8Wwo+8J{dr!FavL#9V9WSaf)PX7VjE|**i;9{1Vr0%{%=9bsXUYv7a0ot$hP;1>`2PA0sR$3Tw=c znWkJyhSgLFO$Mp>(ygn#3L(7P2wS2j?69DO1}s7PnB{!Stb)qR3&>p4;)EWDb$c1* z7OR4$o6M7(i&{Qz>~5knb8Yr6eaR>~xTC z-dwG2?PiBYQ#=h{c&`%!^#jj`ytpz$<#d%a&xvd z5n*6<1V5zd&2dpneO}No^R`LgtAWHLdc0U7dF4tEsws>|n3|7Hpx^~G+$N7amdyGz z6Ml?Lx@cE~qL{oH(ZsEHBabIsc#5OT%6X+Tl^PM^BQ3M64n{*R1b+0Xo)af`tCFh6 zXjz_-W6(jK3wXaMCwZD3LBOsKxNFwKy@Z`9YgZP#=C$nztAvs5M>D-qcv6Q`!55Ya|eq0Qa15Y>&t$NHAX(T>k zkJc%v5&n9yMTA3kz4(n7fkHWbf&$AG*o_|9DUydDNq|I;BuO34L__lqa3p)KBhD-1 zP{6>6l&CAEf@*UfUI0`4U60e(albxj-wQA)TR}y0h~dn==)Ub28QgiHKk{U`$+|r5 zqmwk^-)5CCnp%rG&NYPP-PjWJ)Yg)2*rJ9SI1=<-#A`2 zAPvVi4aOpvb+84m_hj_0W{C#TaL1bv*^?+fDVWH$)mcQ8Y|Bql7|PXZr02ik!k!@N z=keUZ8ehN3;fsUvbIrcekNaBSel-u`*( zZ#vm)dD?fMG-wb6Anr#-Ulc2e=F)S!BwFX$^@UNjGN^eiRF|4vtj>3)bD!X&Au8o; z9m!_=+NFz{<6fCyzo8%=xI+$vu9IV&#ZW`)Zg-5SMM@Opc;ND^BdVJ++nKWv&7;kr@CL`VBYjE(LseCwpLUAa zSZ~^P+?BRT?Jjg%c4T8I93s_|yT?Xli9J|RNV%vF!Xj&CPd9Ym#~XSZ7O&4M#}i&| zts$cQ{(K2B`N4V3A(4)uXfjRiO>LxIYY5Jd$5Ndmx(w9Pgk-NCZUr?RV`MwiuCbag zV$jM&nLI$B`ao=?EfZCl-C-f6p)Ksd89w1VMq4Dfg~Q_ufvfP-V0ZNiw>-nZ6_>51 zZ(fIOsr8C3ZfG37I9K|(D|Bs@w^hMCd`{qn6Wsis^isi>i$NAw{_e-GIZ^z(Xo6ep z11}Ev1j3BFg|N&+u&#c#y;AN}s@m|GA3x2YgOq4(p1a>PM>5ot?CR7QJ3b)~?~;+|BpneL+1o<&IvY{{!`Qvb}WWwJb}c zNR0Wd#~TORrAtzEVPvQ?<+8p(vL|(RNvtb#H76(~qK`gikv~pe7wY139Ya~mp9G0{ z*1U}~HaxX)olqQi3n&FJ8)KfIAW2C|y59sj_S_D#Vs}jnEi^e&3tfD33SexnU46bZ zPBAzc^P>LluySJpx!pXV3_LIRTfjEJKYv;cmZ?a<<+%<~JRw=o?EYXJVyMQ5KV_Pk z3tnO}WBVLSKWgo#07W{H5}Z|)kA?(GAlE%d#ZJYh;5u{GVR}{a@pbVoZ?I=k_Gy*+ zaSQB~zCzqdi9TLRCvEhWEWlYOob9MZI<6E&cqU7x-Vd!HHJv1_}x)rM@2{{5&` zoQA`mkpkax4&$TZR}2e2qqbw_aPph+K-;UVph{@vZOb!@U<0`JA+I1wKHE>nq(`-9 zW39|i3;H?LCIOdn!$i$tho3k;P=|(s!5tRVSbQQfS+n%2?uTqx|7asV@<*vhN9ZXc z%aYz+TM=chcnVEIMrFobgHkI<9m05r2O@^Q#a2kw=B`M+oU8`1YuUJ|sx|`FkYtx2 zzDNZ*ZZCnoGD>a$HWyw}>h_2hE5q|9&Wvt7H8Dixk7}kxB9HHgx9PqFoV5u@aQ0~L z>aWMkp#{b3!zU4?bc^Z~{A<2OinTNd_-;aWjM>OfT&6qdyKm`OuFf#`Z)p`@n0EWT zUiq8>3ZBBSm#~%uGe^rA=DYlhX4>JBj&J9!oI6u=nc{GzS(wmqZ*JNQ`9UTIs=2HH zcwbun@IkBJ7fZ;8biA)ZEhnwTu48oyEfh2@s)J;yc*QRp-~5!n0xySS_9gc`!;DtZ zA!E0=wocf^0x!UHXZ)ZgU)r66s=T!cdMs+qJ5}VK6hAl&D3GtucV$ct_>CxoBNUh! zDx1;+;BJbX(%exQSzMZnrWE@|)AN!YJ}DzS`rvl|KKuFw2OWe&*>PCU$P^p?@Z&$z zR)P}))8?j8{z_ibf{U$d*oH$;p&Ij&xvMK`t`fYMfDXca8gJ1~3C^WccGa`ac90F5 zqDvCXIlg-AVxMJHdtC6-Tp;yLG!s)OmAGP}Mt7|U!T9_2MWjOpJw?3%!801@dxZX+ zCw2vNQ320?Gbl}ydaXRhVm#eQv)6K}@%!*|4?T)o&>$6VTp{YAm47w3=yHi9*mPMm zX!}yYyD-Ay@1|6sty5GhB6QE{V-LvFisgo;OV)UVk7cZjdz_{Uz?Hviu=)zO_fq5hILllLIhAH`XLKd4z$Z%bTg9O!+kJG8h z6yyk+i9)}|o^gIw{3K`ZV}^}^Lcvvsjn7b^G4)Zy*4AfbnV41i(5-C})qUt<|pcS5V9q4^Wy z#R3NL2arkc*G#N?IbPsIhPvrQnAgs@TAKLvhax|z%HNio74x#3VH438L<6nVAfnPT zbWp7NJvbyy7=|}A4Dvuy^Vm*+pZ^yZfE5qqr~Je>lqXbkOwR|m)?BX0U%wEQ6V$Bp zVw7?s*Dl!VXn2Bp#8{3oWH-Rf8*x8Vpwv3CBWd8~qxLLAekePZB3@SP;k|$Q!IL|; zj5`;Adw%<^!!9u)%vn-UQvWbe$!zFOMAg=oMaieN|KKCREZgrRChsGUD!N{U<404! zgDCKfzaZDx-(;(X*gc~tNVJQv3=FB7BtnWXNOKLLh_V<- z-_~qHLz1NYkl&zP0_PQrr5}95aMbWY8fqU&+lFQsnN;ee!hT`Qg+hSJGEuT)!0=k6 zcVnFKWzVe)@3)W1H>x`AiIssrnbhSeoOjCAU0Q?b-`dM{1s*)MEm9Mxw*!zw1IX&? z@FbC_7IM4Rsj?jW2kmbx^mQsg+H87O?}%PmT@S&K*EL>0hGI+nU;%k0r7CgL*M4>u z(4t5-LP^W+bH--rro?D;bPxTijwhb^xW^nTC`XHtg^|D%;l*#P6iPW;QAgjqinn4# z6z|A72Q%5KUg$q#9iw``wY_PTb0=2Gm$SEL>-eT+H7K5qPYyfbY{UK2H|?mE&=-%k z3~ZO0>r*>Qn1_Sc(5OnGP^jhP5P^QNc+!PmhX-i!y<~Y=8a-D!z2b5Tk&X+RP1V1dKL%g#l22+jm9Dl{|{Nk@>YObg37rp>jb3iVgM zwB+>hj>J>eZhJAgf`i9(z5)$)l(ir+Y^Hd>-|x2lf=|4n_#xconiKlF{=&>ZB?PO1 z$*x7&m^yU~K|CSKCY21VxC6KC?;wEpz~d+y>VddJcx_9hw!t29?k&NwXqSDg#|sOTd&Gd3q{lcI7t3m6k7ObrmYm)O2FPy=>jcuiIVfNR|=XzM{})cg^@BEBXL=V1t=oCj~M=>b5!}> zeqTEnONk$&dgp6Q@g8?Qaa|E7bW^eNqnI!`nc#>U%-(P>hHU5*!;gzlu*Xi+f)c2Y ziZ&a|KcOtA%_rwrg?mi?LTDKybcQMe;ZZqp0VpK4QccF&9vq|0(ly<>*sXmAjp&Aj zT0Nm_C#)#X`(_y=657{JKZ)redSb(T7e~a4d`&G^Fa9o(#bdBe{u3SlY`%_18gq|? z;s}4SXvWPLpOij-b!ILm{5!06lYzgAvqy4b=+fxkMd!{Xr|MENJWSA&XzYQQX$bK) z?s9i;hJ{>Wi7Z5$9})_>KyL~KLM}R4SI;#)N+OfGLbli8Vr68dU>fqa=S-bz-JQ{G zpSVq=DD*$QDbUiXSQT;$IV%$|FuB8&mpH6oHYY|h$dAVTo7a8Af9~pfMfC=K+r7%Z z91IE;@@w-BTXsF7_67I!J!;}$ozWn!0PsW9>N_WOdlkr9i~<;K0}N!*(qBOR+nvPI zZ6Ro8w@-t9vgwvEy&K#x)6SN-#7TRENi_CV^kH=kr0|KHYw#GRLqUhSi);)kK;1s1 zy%mEL>7w8WAy*0j=+ zvP#U))=8AkS4VE!ro1mz|D?dFP`I|pPl!*)fq`mIaRXQQ&3lBr_HqTg?px`5WU zHRbkiPxq*OkI3n_0spKQK)C+*^&*o+15JNJlTNcXCbshIPIWF9`@?4tl^|6ew!pxF z>I7%U9m0nSGlo3-|H{4!zm6HIzB$o;%Bo534hjEiUOTF?7PrjtyZlXI@6i0G+z-20 z+mB9GJA+W`tUY70tE+am!xiW0-9HcTo@Se#6Ag-Oe{3qj4jVWo9?m6=QL}SbM9g(l{jjcm=O=(Qh-Y&F<~)Fm)oTCATFgHddQz;qWF6ARG9fp)*AmUA{J}lF|kwM!-#{& zx#K6{LyQdB>T`1hpcDE<Oy*5QuF~OG5=rV4E-1twAYHQwhWZua<_2&5|W&_|=*~F4G>Dk70PlYA1 zIcH@tA{U!1(L43fz+jn=b*&Tc@sy&FjvLb@JI#-_U1qy`n>MzY@9q}^L}t6UoA|PO z5Dp@68d2R)R6qxP@rfm`q6c3hF!Yr=3*fqMX~83tV|dOMO-VCjr*=+JhV51W$cfaVWk zd|Tg(xx+C~tMcdNRQz1WvhiM}Ht2z?cj@={fdz2%uPc`==Tyv_1QJCDR{X=5HZRSO zW9`r$6nQzhVmvlR_q-OB?OsMY~PTy?mZq!%=Dn33T$s2+H=nn;w=WhR=?e$ zNUVI1#;2B&k?!TH`S=BPE&3X9RGGx|TmFC|5e!^;Uwgb`wV=z77VW6D5!{!~ebt3* z2ZDqJ{Y_X3EuAORh|Z)UKCcI6L(PkIIw|(_fHa>D2Ilw$PuJ8 zW=(^@a^W!edPp5_@Onv*#!|p}VF8nZoy4_l-1u(#F0x0Ew^LK17%ME`zF{{bI8})C zCI2vq0q<2g#=Bu+b-AtR zXN{peu|hkfDT(?;UDpOg!t$ul{a;7Kx*{fE5#0L1C*@j0`FulLks459IImzh9ZI~U z7#{zR0~ZD2^FtEW76HNbbXZ!}&3UdBou3~;C-dl~yjILF=_AULy+ zeFTlbq>mz=-Mfj!)<$V(>$Jw7n!P-zyWV@)`zA~(Uh|U~mS`^}*H(#HHBUdVKR3&{Lg?*R?z~E=DB^wF zZXYnS&O?NMlEq_0E%?Cik~sVs-N;qnT5+Fx*tYVbv3;1%mr~FySn5Hhu|+T`TMsn( zk@@QIA>~n6tZ(}BwU8&K(m)NgRhZ?I3yhM-TgOv^7yG}c*Vol0z>uNIs{>V(!i@@v ztFC|e31^&dJ>Exp1bQT7WGJEb;#mp{^(`BXER83*9xf~S`}+si>OJ=7bCDv^|NJ(^ zuI*e4Xy%fW`Lu^9so+nMR=S#OvW8^Qw&2VN62=dm3FCr~g&mlp#No?zD=_8>8GPW& zkjbu3dMvQJlC}gdYz<5VLy{^hdH-%zSFm6It6qy!l4|G2?mA_U5mK1myW!kfV9PwC zfWE|G^cuWTu|vrP?_itkBllH|Ad9Flr*GM}#28-rpt8T%SP1L?bv+SLyyv?~wo`}O z8z!_=Xl>)sv7MV};Dab;(XoHcc?gdXs#L^^s;|;22f!^47@taq1EO;ZVkJi`%S+0W zXFtQBU1!_&HiF}Tl2#-Ug5kU~#h5xF*s8NmWGh2|!xcj2eWoVhdB#vq{(>q{;R%LP zLoXq;FGRUeBQl!hWlFc|Nw4)9v4M$=2}wdj=ihteRmcClM{H6F`MtXsPtp%QSP^JO zWD@L+b@HF+3rH<$SB+k}rC@TD?Fg&ZANJ#|$OQ&{*9U&XkEPcTgC-)!9Z_U-ypoKa z7G7VXR}YZSiY#KLX&{@)v73Om2#aq%TFuI20|6cT6n=rkbD~W(0JXoOU=jN6=gyaU z7iT5cVS_k11zx=HP}I;esLxqWlvWTM?L{uAeNt~X{jAsN90IwJLznU!j+-ZYMX&d< zS|*=#qehm^4>P53Wi|!Np{Zo=qzHhVlSofUv-EEcQw#q4f6rkOLC)E05@97KB3O4XCOe+rrvtrf#Q&^Czi=VImfyAA37t8MV_h>0Ec zaPyI+7#i9#8Vh}gSVT`o-{o^tw(+j7-dhp!_}!ck7B zMNq1aJ+6mN-ikT@`m`Ue_!QoK^*VX3=2;NJ_Te?s(DdO*M&p(DH_+YAPyO;x78L|m z*2sVwUJzJ`lyyE0{?fWn=Wn%7p8^8lm2mM*sc>wOeQ3oJeQ$LwulnPtw+rs> zr{6Z+X8$j?-ZHMrE&LXxK|*N|1Yv=Iv`8b}-5mnbEg>!4-AZ>Xx;rG4?rspI1f-?! zTzl{TIrp4=y8&L_4$PRM&?J+<%IF{8p6#R#{ zBmei;>dWQX6M;`go(rEpV~Nn3P#lm~uJc5#om27{vvls!>GroQ>ou7F_Okr zWVynuyK4U$iW#Sl{j==a?q}M^KWZf6y46O(61^Xe4G3K9$?*=RxkR7+jIcL#@XZQJ zFJCmn=BDufGnUc^C|BKcu!i)bQa zN`NrUMhv5>58A@=td7E=hP&1^NPgQJo0x;>cE6$fZT$kDy7$8wO5l`WDwS}KV9e7g43;(u1-_^j-;-@r!rVY?yR^yu zDjNrEa;)Ljx-eI}b#{mP_CFS}n6l4;(Hs3T@HUr6?SB;RfIgA?TkkI^^kv`DZ^2Zr z{ONdrd0#%2JuLH}y3f29o->Q-_ED(1x|-e7`SrzNPN%(psVauf)A5gg0`>FHpO(9A zqy!ApAB`DHIVy*v>3MoRHiy&^NZ` z=d+_lJ3HSn4&on=H`xUd#&0!xhB=;Iq4 zWq?Xv5?XaHiZCwz+f#(^M2JYI2sd!Eldm0&zv^l!bRNVS4iH_5lj?i_YNVZ_W1Oe% z&a);2Jb~Z$uNoOBHD^O59}WmVDOy|4hDAL)=K?c0F*OMX!)+&FB&Np>z72hwwGRFa z0q;~oxyam{XCCiGg=G-Y(9p73R@*k{>sngDwY0Gwf>*T^2k$-ph6lsn=#8c41p6$IVJKn#ROG4}#MzW} z&09IL1BG=nHR?*N!%a2a$INyfk0&PF{0Ph)-!|!#&-CMwl5uXL&Zf}bW~Qe~yzg?u z<+FBqM$GC+{n*ibd-svs*u+JP=!FL_V@3*|OB) za{a>nRo76oZ zlNv(bomoIHGFE#wRBYYqhJNm9`;*G=31s{4SEufpH}7`2+A-5Q{+6qPp|+$`%5_&z)|Q?n=Um8=O-Fegpr$S_RghtwqTE<8##ZuFonef-x&L& zlc01ic=yU6Z)p!e@_h4nnG&BJixa(FgRPWARZH!l(0p{Pcu8gMDIv7KOawnE0VMh2_HG%^Ide@gXpHr69POIC2d zl4mzRB^6ab@MCkNS!A>myAAWbevR75&`@68p}be&`*oF{D@{*GC{}{ku%oG0=NmQ$1wXsl1M&}FEDYxy!ABj&?CYMmKrc0Am zbM-y-Nuk-VF>B_%7i#hg9({^Bd5YZY}zSC=X{TnS9w+{J)XFlVy9XC zTDX)K#p5@NW9i!i{`HHK8uJn>6PNqvkIZqKpK*UqYAv)_{#eyZt?8A+B4N)SN?}n2;jNYcpGUO6{+)FeF&Ok2 z(V1oXlX5&eq-=p*vtCdC9bKVDGvD=~W6~TPw8MbB67#2NF9)Xz>et>sf6tY-;pclC z0c54)`F9wGiAPHN#QXNLfGmMLn=kFVRknHs*G6v;1H1DD{LT54qBl*;w#PxzN?5Ez zMVt3{dglD%oIEE_y29t{LU<(v5x zSXo+@U{k&zuF<}9weYR8HCh8ArxK+0$h_A(Vif|@kFPe~?V2+3;xnDzVxXfV<-D8;bo8b4xhnia3r0q>9Ta zfBv`#Ct@95U_|-k`Ypxyu6~~;_~_q+hJk?>G5$o~iBSw5?OU7iTXi*TFxzMWq+oEj z_paP`cPJjcqT+%cd+dMRIwzB6&V-*mbTyoRNd4|JZ1N!$b{42r!Bpmkm0hV#9hEXM zJFg`Q08I>x-o*O}j2?J~*MC(kjqT^F{Juw#(suhEvzw2TRVQ87d(bb{?1#nf0VB{< zz%zm3qC&ovS?Evo$0DD}@;AZ?a~lVw3V|0_3vTitI@!j;TJ`T+XFATJIimYj?svU~ z1^fD8OzmtO*(vZRicK_usJFU|+7qMKt*1c|0|N=PdmAAy3m-{84{uK+4X6<0JXjk% zxkwEy))aF7gRQ6o<=ua8Tc;=9+uIxT3NkrBHl#kh&{=*crrThX^OTGiZ7%M0dymgl zdojRm)Ox-Yi+dGEL3!1Q4-fK=^y0xcx`7@AkIV%~kOC7!ujGOZ^@ABF4{}I9md0ZE z|7ZcQql_8&pCO^V7;n>d!&;ZGTk%N-8?J56$;ZI06b0Bzgi>i6V9#h0ibq;xj#e$H zP)m-X@KD8b@hdEp<>TgwBbN7oipx$QcN*#S5pTU(edBOr5!0hRf;Hlqea7xJRt9OJ5-*5r7VvSQ@4bWsZqe9e%sz-O-tKMH9<62jk3@oLgOi3U^!Qxxdpjyh23^>zNU z23Q$RjLzn)c)RF!VxUNRCL_%N)S>>9m2-c3KOr!_d=KplJNzK^_XI^U+k7l@nrX94 zT^@&D7rI!Bl-S*lh=5=LIPnFv52}G}9`A!ZsZ4JFoxiB@?TL5XF9$>g?wYrITm*6) z3|jhybM>M9IOh0OL&5sA(q6Arg|vlVU-+&0DD~EdTc~fKPMg~sGQGo{QX04WW~mKn zkJESxw)AQ}As)T_pNom`exppP=#CB&63$etc zqy>3R>#T7-F@wGG`P#DJim7jH8g=Gl zUQVaZM-YW1y;L8_5BWJ;v{wo< zrgYTv9W2>r$2M2Ti{&mwiF-{g$K}d$0)h=wSesulbn{w5y;&PwK$Bv^O zg4Rsy`B_nsU(K^lDu4H7!hl#-XPmVwz3(~k|L*!#K}1!%hoJVVs>S&-9X%1!`;>+g zeEjvy!|K+v$xI2PRaLDDW2f5v6Ko84Dt^^T(whtgsuiL2K$KKEZY71mdsFw0F-FZ5 zGS!YO90z3h|E8b7<$-kct~vv5=tqjxN8?*!+|O-(IKJ33!>a@uT&FzOrm6GPO$eR* z7`@L?@p`}aCnG}w;gwqeKHr`oZ$?#qMLU|Ax85~~j|XTDlyo=d$D2kaPc6BQ>Bmlu z3%05_A1Bo>*y3fj$xr~wDHMX@;@1!SSv|!BoAYos4g|Pwy)1OP90@k-5>N=VUO707 zfQDaL3zO;si970AwD^?>W^#!XnJ{!Fqg=;=-UFU+ln(n>xi&S1Id*hyYr()nMc;AM z2^dsLq}c22nV%)JBRu(|d;e_SZAf9V_>aUGBfay5 z3!H1PT{7dy0PiK#Ov>6T2nR^KL$H6s3-gB(Ng&d&N$QwJ#0g@pd~e_*WdFD+=27v3aOm#N`8~6|!57)E zurU8NIDvpXR~={S*i~c%L~8OtKKZKC38jzt*BtwK5FB`p+c9`fs?L^%h$11MHHoAq zgcAO4;yre$HUH=*L=s)QXrNQg!ZE|`39H@=J4DhF=unHmTlx|E=OOa}Ev< z=Yx14qp1kTs})yOaGea=5%K(sQDR5!>fqqjqK^C@aJW50#+eO&dTvp1^Emh7g?<`e z21`Kt;G9mDo1N->9zVlRh(6;N1KIcZL`0H5@qFs$--%v9D*G9KhZuc@Zp(M@V`ZAQ z*6vyuyrpMmF1!ekF`3GpA1d*z3Tbz457k*C*|=ngc1{f_nxx}p^p)e_CbsyCsS~&D zGNj(f*GIsLz)aEQ$xkG7Ho>H`d;l1AB3eXAV>cX|&-hf?YzULmf4X8vYEtd-lT{CX zjnJ{FRWwyPzE!JyY6t(HTu{kCU3SJN>Pd<{_255kN-pcU6190?wvcK)>!)+4Z$}8F zdwBEQb2P4)7QQf@u<=w`y+7wSQ!^lrsh?$!sgs1fv1;*_-s4E{3{rP`B9baDUGkN; zK8$FT%7bn#Q!cN{5DytuEe2n>ZhF05++V8Jv^h27J@c}9+r->;mO*yR!_`}|^d)@) zW3>GKuaRd+jq$0bre^jV;|QnW7*vKPNHC@JF0g0zYMuOF#aR?C4J8y~u~w~}p}Jtd zU7^D*;h~x%z)WD#Ux(|{BT|(aBF?1ux`_@4*Rwqm8^}Z5U-Z83-zVoQkYUV#_G87) zo+6^yzLQv}AhP-b_rjp$%eQ8j_eTw5dnbZ@#R45VrAjqw;`qTDvbK;Ufg43m@7te< zbzaw}Ry{`YDX6bi-Nm=_xvb5>)$FO;`!I@bA&0faaU1=9r?Oh0UXO{6xhUFaNpb9| zIpF(MvwqTCPiBTomiSi@HBF3EcBpeQgAr00>^QecHs7k4>3z41KAiGl|<)KTeHl2|5;b zpt!4TQ4C!qbX}Mh@l{)J@%k`Txj6I9vCpID(DuAkB=H;nrxoQN)bCU;ginlum|hMP za#+uzbt{x2^U{omNZt3&=i@qSw_tTrlEwfdvk#JOrndg58Y!eLhAxAHx}ww>0Fn#| zKu<2*hTf8CS9n0sk9N|H7d>{-quM)pwf*c*1MAIqxBS|LxpBI8J%A4{NMVYO@TATc%Vh>q+u^=MxWEmOlgeEPq4s zb>6jctjw_KsH>4}oA#&>tZmHn>}#JM7NB%pQ1EriX$=^k%>EPh{04&z?{ZiRzC|{G}z~Zc$6|krW$#>m*z9 zzVkCoP&a{^|2Nyv4x(ZvQ`$3gqoJoEjD6P2SJG%a=19=Op;*}}QT1`{9nCC*huGd% z?LrNfqC2^SJBzu(Ofpe5~r%v|L6CKFWSB1C{DQwz*nLTl#m_f2b z^>}wtPt@_$TGA$##h{JOhQa70G~H{L6_6WY;L?y1*W=Z5pPrcK^z?{D4^?XXpYNKm z$EH2L(U2b(On})Dl=muuda>S`sNQBF9)$hUEKB|&^Y44}+c%Bf5)w*deOy33)tcWN zyi14O6i4Y8g$9Uz(#*z}P4sD*nGV4odp&B4XDco@W}mLCMww|lI;F2VJYt^?A63YN zXHl8cHR#RU%!MxPJVgM=6qWyYh2hYszF}^PF%16lIqiFxFQr}ibUguPOHpe6u{i`D z&{`8Kf`lmC8l_j=j&r4)V6hHGZpfr~!Jot0lrzgexp>ZdIym0fGMX|rxYDmvPIt#1 zxkc7k)VbQ;FZN6FRjJh%!RIzEds_bfy`A%Dr$NtuvzwQgnW>Owo}!!}A-u_HbDDDa zoTB@0wfpyUVnMn@&@;d7O$V1F^HtT!`s3V-@cIl3XZVt9Zh7bgu+<0~z79v4;etNr*U4j*@*|j^!#3DNgMgG)|Pe1nfOFywCPq`A{OR$89SRE6rEr z^6?61=BSaV`)<7z8FI4@I63z7qn4VTZWWGdQ>UDn9I!JcKRQhaRr3r3K7oZ$Q!A>j zOTuvwO6YvPt86u0jHBP~kpv(Yhf+$Mc1GEKrg<>@Gzd^*Ew3JD6w7Fjns>-+ekJCk4t>!5psS^#Fi`Rw zpN!_Qq08|i&AKtXIB_f!D?xoDY`TNP(U0SpEbyanNPg%-q-6oJ3Um% zDYc2UR|vG+1qB18mbi$58isp>EC!4sdKcKgbetS; zF2OW>*y@vu#9>M@4QFEzjsp?AC-CRm<9A3s1Xb*$Os=<*gqu;7n;gxa)twH>vj1L{ zsIzdhc5VI8ytXQ_5pX|exf4@uoM$)##@7DmvKL=nk1g_80rZJ;?fjLb6w*R8&iJK` zT`oP75FZ~+R!wLm}t4k$Z49XF=CjM7b z?PL!e_~K6Xz1Bg-N97*xdVeC7Y6??AJdqB7x(OqCLRKx$%(0}{|oN@;c>xP$x5dS(TJ!O0iH_qr* z^62A|m*Pj~yKpQSeoov@7`fn2bmxMH6<`tm|LT{=0m*Igt=Gb1pVECgq5RGBdks_^ z9>kI4g_TK@6v`Q_d?^*(`!FwF85hrM!EK1nVCFV7wZzVxd3)mC>8a}N(t%Q`ZqMEn zm8Rt`f7EW0q;B!U;JmC0X>V0xNDWF}m<1X?}F-hTdaWD9H zq)$p%)WpU`RC(~pk|z>pfm7opJ}Ktzb0MVjZDpMEyPp>Xb;FG*yWdo1a75yfE65o& z*BiIxqV2Ds!t;=FXoUsHv4#? zJ51(Norz7>0dVH5kN4NR{+JtDj_l+pC|;Y@#Y*PxAK<~kn@dqts;q#qG*T7ZJ3Vx2rr=MDVqHQoGEAGXyfiAhh zPtyi--x+$59m<85LFaxHkfLxGF+IK76=oS+fBeywj8{7C`FM}EZ) zK0Pj~E;Lqz2C&9}9h86m?u7WhkeCl=enD({=8Tty;FEA`oVki}KfcF4apb^&{cL>0Y3((K_c+5l?y?eiYo!^KcQiD;p!)MQ^ z?qHYcbX=VMtfZt@%hVceU$$q1XKb;p)Uvq%2DzVuZqtXBPuNcr*>M3His-d$X(1}l zbi2d!`#Z7^^T6yn9!gA{C4SE*Ib=69%2E_vuB#-K?Il{a^}M6)mzmM?i~(*%2Zj=D z4YSKaK*lN=8fF6yI<`T7X^$o2JNbgwUoQdq<#gH5FH;FXeA7(li1Wi+LCoQu}awUHVv_~N~rhs=-2YWY*WTbYmcjJcR2b4WZd1<$>29|<~ zQ5{d0vuK>+df*FD+U{iDZ|y6lr3`UNJ5B=k3)mEBpJleX0Q!n?Ny6a1Yg;oAC6tS^ zy=p4`)Q-{A%uGc}D%9=huKF69Pr%Lh8bmhO%(IIAnh_l`14dZ^z(Db^n`$?43$xJE z!-ljlv0@A!{TJQ#tXu7Ou4iB7bqdVintaF}uie9S|K_k}>!~sS*Y16ETUvwN%Kqr3Sjkb67+#`F9f=y&b;gyBioO^truE1ZpvO&nshbRyaN+hvK}#pg z_SqacM+|&a{9LMMUBXBUANgcm+X{-o0hT;w+n=xLgnTyL`pYH4 zsvy6@maX!~g(&P4t_BaF$!*596x{KP`z$YXC*i`LKFdxeDZ~Dez^Fdez;&YarL&wT z3_s!3OM?QJ$0zvA1P*WAZ}y7#D^mP+K9PP7m@U&5o!=#`mr5>0otr(`otJ4LD%GrP zi2PY4m^29*61Vf_+3#4k(z~v404Un%RP0~#nSnk6ICA4u{HM{abtL{q=Qvy9Rkpr9 zmKw4cDe-Uy5i=_n5v0SQvPJrmz*rKLa6MGmLJ9rEBM6_2Aiy5Ddh-v7RTH)e=nqkw z;Oql+#NNyTXg>VumbbQX&t9oN-W|_N*BqA4I~AKQ?5}S=hz0#PXZv-u%OJ&&uSeY8 z<&XPC;h?pLNEP1$SJ~?RiHj(zn`Eoh$ya}eT_Eo`4in}gG6AoY7cc(C^27h z=_T3=vBc*S>gdU(<9c6Njr=8l@n{bI^E;DqfbnN2ug4bbV)z&cPytkUK$+{Uh*b`? z&E6`*bhuL`1@xS!*r%9a-WCgFx(&T>Iq;JLIXpqA2a1Tj2F%x}x0O?)FF&Z)tGT%P zi^v)Qmqkv3Uq6vn?I>wR2{ai2En#(RCyYIQkpczH7=D5Vgf1v0X?1ChT>sH9N&?p> z{A)?P6iR;Pk6`O6baKMJ;Ujo+5H z>G#c{674=2Oqv&*#mffZGg5+)kZOK$pv5PK=Z8>a81mya%FcS_=|JuHQbp6I4kDuN z061bJ?VLPCZ_(CL@TfNp#FHiCONMe+>z~OKn{j4N_68XAZ3Xdk_iceYsLp|Pbm|dH zuu#UT8)%G_jE!@17}d$V?G2k#fdD7XpksGeCB#Rv<@?&~r(7o82BnavWPu0${$Uda zQ!5VhUGG`o2G}<1MFxk4YOR|W|MBc@DTvEt{VYA`kXER-OnC?MFFBxmH`jL2o~+&8 zpGb5TVGrjRno0WF-seD(8;b$HB36X@Ctz__Qx;C|pMyQ^@5?W%Zb@a|+xL(~_#UU| z1oWs;E%PBL{r_N{mLf*=74P;cZ3AFQnvWGKLgozrPvFO_85MO{%<~Fzn8QgB>s%#g zz`@_o)NS=2<3Ejj509M%Y)k4vdZ)c^fJepQ{~}l)m7c_?2?%~0ZpX{60roT`1;DA; zH1CI{gdLcGr!7wfbclr^A*4URPt6qh9}<6~yTTs0lL5^HA;~d|>#hJyewmdoG357R z_!rvlihprS$Q+jjM_(7-8Q$JY5VMdCZl6-glZe^{D23gpEevLLx%s$~S&{wqt$FzJ z^`b_$%Uh79#M`uZU5v;*Aou@mS@ef9@@ZL~Kz_DwG-}Bw3^9*aN(8pE^ZY~H$F;LJ zH!!6tn^^cB86Zmn2f~@oL?*wd^BjvE>p#!B0s>Z3+JE8=YH7AE(r+Coi58sw`YD4k zRp)NCg^ZQPiUOemqXa=$0=p1U(uka8-pFvBX@uwcDoAK(5cd7}F%?c!i*KKA9Z&$x z`{q3BNPslC%e9ZO31MWEi-iYb*d~IJjp8V)NALaHtI%Q`w5!D$Jr1bh8%9n0ov`5C$an;uA! z!^9wxXXWel)iEKN9J7EyvmzDf9eFbVIdaz4bRrO6&g zD>j7BEWI>+5|6f7^p~?M*9E}!RG4|jUdXHbu|}oqs@A;6q_L|!4+ut9-P;KU969Kx zvk>k|JI??zm;_R;SCYVtv(%@W-MQQ>eV{c@1&vb(=%>2-{t;GU{-wi>&T)P{z+MV6 zJQ&o0it3UfMQi?*JNGdo#z4Qn%Ox>|(|aBlP5M|wRwKP!c$cfD~K zTnA{Y#fwNN`lBSn(30)N@|WFgOdhTWpS6%`7GRNs zCKV>h$96QC6nSk$EyX_{dwDRYsA*g|=&9wt{h@M&`Nm2S1J$@wf3cTOw|?`0f&QNs zE;@6pK)gqnp<`?!=#{A%FOXNyM8&p731OH6Mmi_x3?>?_)8ojE;sn89LF#Gs4lhQ? z9{6C0;3cT!=Yqk@h_Exu7q0i-V*XEb8eCy=&=Dri*Rr=J14{n= z8H>!we9?LZ;*SrRqo#yPwezebo{xv;^T(U`k+DuG*(+7L&iU}UsIuxi9?YE{z(L(x zR5_YMCvFOC(LK$iE}u9iBMh7OrKoZ}Z;?*9ck(|qo&TEEM4Q}J)|K`n`QBhbemKD_c{(#%Me_Id+b z6&7q&oW}p0#116zfwPcAuby?4h4!FVW^pQh;%%$woTsRY1?DSV>N6|u-$#`Oiyydw5N9SvgH}cv($wxAwIb4}m1@vtctQ1?% zNvLDGV;R*wf%QOQEgwNG^s@k4-c#@Ui#e#V&DP+u1SOyfJu*uNd=5Gpk?hk;$Ym$$lLs-T)q>z=SYhZmRF}lldVQ zb@1C8F$5$XAY|R&UTOYR{s-8xBBY9f*ryS!CtRVR)J=;Cp_4Y6m+Y6QN^#s8l{0(F zT+A=&kedIG7N9?E#0-bc{t#cqR(9qCksZi^cs3Dkz62w!bW%O@sv>n1?@}8Sj>PnJ z#Yzyu+F2dbMeGzRolUvxn4uarD)3g_J#*sZ?^Ft#<|W~BF2^z7gwL1eouCZNfKF9E z3ay?=)9F<9^~b@_9@i6u?E5iM;&^d44R&j$`wpJeE_NC}lxqnd?|~P%cqw_CUd&FO zCP5uR5}@+v7bS+xgO+CDML6&KL2clLtt0DAwm&m2Z| zt*9TYOy)eDVAg`lkWg6t3J~o08yIS_aB3{6O&i?d9lyvPot<*SrMfE2r};S{T_!H) z0bi@f0H=5O=RtU%nfx)(-XhGL#@XNqJUv8YzQpkr81;omq`OG?qJubdn`KZ0j0H%| zR})o+X(TvS`v~PX$FEXrUj@YPtjQPo^yd)?a*IxE_?`b!Eib+($AKChOA(=w;9O2x zMnW;zf%0j*4~#!%3Q073!IDTsz>=`AP`F^{(zH0-7P3O2CMG&tdcpobddGgTZ+@rm zE>YK*ut~2`Nz5n5TMq_>E&>azdd#oJ`SKQ39`jLZb}lkpBU^q*PSwF5B@iq9dOTWo z4}Y4#S8c;gLf8FkWA>ykjcYnXj-&#M86U_j&}yP1*pP%S%Tme3uADXO-26xG*xiNlzUBE58 z?saMN<@a?TN`oF*dx==67hCgQoaK)sHgNPj13GIZGq$m=ycp+Kuvjz$U?|-6s^R@ETceb|_@6@-cK#6dQNovMJ(Xi?ie#<16 zdfT;bau{pYNAncZbvC6dfGd`%KWU%O=~8_ggPpSWFfhh7@yi@`#?E1P?cs5{kcNcx zixdqFGN28fTLmk4mVTI&5P+TCW%;UIKOO)1Bd~%pijWm{j$h zsQ_Lx@uI}P%kA;{DHMK#uJ363F;UgPAQKQocQnP)>&3HgkO?UJDx#y-0>4>DXt7Ab z2YWq%l~N2?DdjL&)`1-mp>Rk{FKs{0Knv&z_vtd0dKt>(`BHdrs}oevZM32ONYYlN z9e6`07+l52ZF%R9!FBnOVjp_YSpF&&7b_( zAwi2%WCrJT7aB3FKZ|6GUw#JGRYl>e^zp8?A?}B`>9&}A-*!u_dj0$p9h|ekjCG*! zkIl+@d4INmA}|5RbI~L3v6shwL&Fh*eTcvnFW#f0+)84!RUxPDnX?IVZ>_Hz?q|5g z8GOFvGRN1<%q#LV@VPSQbtxdVU22e59GO+qH4iuWfkI zE1K}()|140%~pgI6(K8=4(vK3zWe!B&7kdl&mQ}@C51M-(r8Og)8vxa%LkLut_t~Rkux2O*0|nAPm9v}DNZeDa&qz_{-J2G^TDtEu*-!52FJRQU+CeOSW3va7QX4+X~J(d9Pe>M zFJb7*!Z+XcqoR{&(sz#%-1K5svYP~MebWhnIbq2y+}sA0#ubB7h@0U6#>txBiMB@G z%zv6~eB5FMc9f1MDHR0DLlQHp%X%+)mRv>du7Jj`x&-Lg_+I}F>ALhrRYBxC2x1ri}0ZC@n0D)qL>UG$-V-!4WM`1`eH*;^ClML zkoT6DM{jI1fFCY|3hSo=gg0qm_0th4A1kar-Q2of=r^ty3Soe2gH?`pBQE1$kLcZN z?re`~G>8oOdrd|Kbz4i{Vs9wai+#Bhw+IR|&3X(r0n=(qk2(0$V&5n`ffOHUtmg^ zs=FL*<`C+ktelr~nBHA3L`FvD7FakX#J*%aH!MljOQaBEDi_b9SVW3&+;TrCr%=0r zIhj8hmb3s%ZsI(fn*EAXbGuE+KASVAeOXj;=|D-)^lft%uzUP^Q?23R?1(;Ctb2>J zlE17@X6VVw8!F=)t&q}>!QP-*ux>t+D~@3&_LEGWN7A7)3XOAMx#UGVfs^8jG$QI# z>fJ7fe;OvCW7t!_!r8h6Jf+Y@pSePG)w4S zGArq=M$JhH`0p8K5+(l}ow<1@5?_?i1sg&S6j;|?E@{<~c_rAcaB#IOES0vI%Z$M9 zai0CZ1aRtx&FC3O2?HjoRNbo468oUp;FOG(0BT44Il#hsK?2L_9x0qQWRP=Lbl5ZF zJt(Yhy4swLL`NocWw3u*!#Vazf7)Iz?KI%`fSLu^2?+N=RYS0 zXCUAqOE@4|UsRvmGpmS+A&opZ!M)-rWo`>|ZcX<(v=*CB#l7svlB$eV2`ejjd2@67 zzZBX3+B<+OcCGgW)&_{#%~Qzs?JX^V9PrJW1MChLKs2=99J zo1f$9?l)JAUdzpdD^r+eqe-Qm`S@#VUL{3&>`hnSTQopT=C1=0+PgD2tl5^Wp3=I9 zp&Mh-$Awy>8bXh5#~EE#x-b(_u@oi*S|Aw7-*o4LJd2jYKEg!zB~9uyUWrI;vJ*@e zJ#!@hcTMyJ7Sj@eZyk(E`~iO;@m%@{#-;XScMZ_zvSG8mV|?)cov8fUq+pvMupbjY z_WA1MkdOjb;JfnIV}i}EL%Vx=Y;~YkZ;EtZuWEJC7MUqIe@SQeN9lifPckDTI|JAu zoZfc}D(ZW3jt{)CVp0qX7oU(gEb+Izka^ohYxEBPWgy>WpsXeICXci$Y(e3R_~j`9 zA+S1&FM>qUkAW{{fOOMJ2#*%;sqdj0XBE08G;I0bNe3hABH2@yVT-5=hf}Dijy+hY zrR85W?3C4cUQA3IuZ4|@@)wlJ%$XsF{EAMV_R}rrpMS7>fUg9dihlY%jb2EVg%*?s zc(f47RIJqTzyHfWLP7#OH%LS5#T^~lY(1`Xi82eLBq>OKo+a4s{@LgOBJB+ggdb1e z7tA&XB=Qf<0AwL%GS~H&aeqylydHIEM!|MdTqdLlJ@+U&L%IlnO&oV4CItC`+8pnb ziJ4YQkodZ(>(>wYZzVXem4MPi3sw?K>5C=UZArvpAgAd3B)|G1-mk{Gc??o!v?yOzPFfCK(dz7)bYqsyo>LonN;<-kOXx2@VC0u%XZ& zEqn3F`4UpfM+2bgaO-?Ho71X{@BTYWfS)ooFpX*SHN2RwAh|^S2i%9VZx09OmFKL& zdK4M)$nP#VWt-c<)>y{`L;`mJ;rk(QcDG2vVW>0yahT*idA1GHsioYQaN=zfq+s;9 z)hq77;uQgbsYa{T5tq`P^`915dnxYHU$wpB@Z7Q_96yzq!8p_0hdH-sP9KldJy3#$ zSX0TG^UHsvWerEJtUc74>l@S^3?G~w>a92KD)?tyUH#|~!~8x6bZP%j8!SxW;9Y=| zgTnT=fr7s$Rp?h!#zje4*|3=hd9IQUm%T(>&VJl1MR!a=ene<3+O9zp@$Lz1Q24jL zGjtk3d2G+jYM8Jh0PLK)Xs~m1UQ*h<1UttK2|oQ-z_2gb!5P`-Sf=?T0ep|=AlJ{| zUHac#zrLj1%4g2hVq6Z_1UV;0z4G64rYuE-#ujM+a>g#|dHoY8P-!8`Rsnw@Alt_q zZ>F&3_Cf<>-B;z4ki+v)Rcws zaW-3ykV97*6<3*URD}(yj)HF1;40!^zxMwayTQXV&I_Ai0?$>Z?P>W?a@qKhkO|84 z7LMJa)#~4kI&QVnNCxZ-qq1w<>r!tiVXhp!`b6*H0#B3gA7PTs6Zd}^}eP{AU> zk&xHyX+-Y5{B38c@#ID9u(Yjygkw*;R7$`S0fa?wroGGcVI`t74_vj3e(LYS(srxA zUIc4UIKfz3l=Np;Ic#+Q63n$7LbEr{KMo&@?n*Q4-^rwgI2`=%G|fPvw71CaOCg=I zjj1pi>(}=7#ORZcY&FQ1OwGJRs~FEti0l~EF$jOhR5HLsgRnr|zF_iKTwEzI3$urj zArJp!ll2YFXk-*i#Xq@*)izPP80QRGVOWqlWSE@)m}KJ{ZRfo*VSB?V4KOuIi&17* zQrK0z?^FPh!c}(7Iw)kQFyNsZ2U)Rsf_kN$D2;=I^NC5bwIRZlck`+LIFMxHwGdTB ze-gh!(5hVX$w+>z41Ktn>#R8nTBUjU&)`%|96(_8jjci0kvWF8j{h_*8KgZ=0^K*W zZjA`bPYGq7uOkEs8Cno?KK5~wi@+mrq==!5?}VPQH>7w?*{NZOX+b}~Ocw*-WiwxE zQ4Qky2xM<+l?MF67G>##7IaaO5h=20$+Vgh6aYx7EAw$SNP=Q%r@#pAXy?KTS)e?v)wDHF!LQtcV}%)4V{2MCJ-%{hK~F~ zWRXw?eym>Y1 ztyq2jEKp92PkoEB&wq-+IcoHcMth5h;sNIFe*xV6=vei*Nhulc6#(E>$PsR!I;5zG zEat^t0Bntj(sYu){kq`O6&WICJ?t&y1A``i$XX95nG#~)T~kHVUxk6Kt0oMWMwI`R zqRc~S+DC78$oCb46iOhjtJR7~VTvF24kGPT8S|$&1$bHYKyJmoJ=!5cJzPu+S99fc&OThFK$1j62Oo$1N!jmUxUiB_Cs z%I$ZsUOOsZ@ppu=++i92pr`OpB?_@v{Sm>%q@j_}A~$SL#5kPi5WxlAuM4_1!y8h@ zK=VLW&6C2LH!06uUT0cDZ|VC*j%M*ZM9k{N>lmSu#Yoau1?+1tUNb_L8toN}6tfDE z@$xKo16y40oY`!Y#!88vfo5W081HtE+?XyYkMu#=%-hVqF%8&H>OcsZ1F z-HHw_)(CZ0pq*M8-n@jhLR>KI5h>l-Ti72Rv&I3MDJx93!+A zZ|m~Q8!sN0^vf&CZGe0)4ho0llD`&zM7*LE~(unfJl%>YQcC&D>xF8K}Qtgqa3vl)-mAmX|3p;Zw+I zW(MCOzS)zzej%yD2COPEaT9ONr5Wm)z3)t#WRN5x5^A=0auA4^P5mcz&d|sjsi*=f zwB=uf)N~oRNG!WjCiyen9kFmvh@;>Fh$Yf+E<=!{y2gl*lPMTP`I7ia<~x?dh*-e3)nlfmalHjY#-A2dUV(LK!WT8) z3`krix6Au0L>JH=B7S4McV|p{RO)Jv-_Nay zhaXb3y}z8+t$!Zsb;u&4!Wk@|oSy!IfOyCCm_b=U5rNu}1_9Ifi)90k23Vf{ll2&n zyNzbsCC+AhrE;@&OxFzm0(u2O$yZt9WwDh9hAuW`&_aU_?z@7zu#Yov+8@&LC+DcB zsJ2JQrCZuAEY$1UY%FPk=TKP~!NhDhYo9gIK*H!_RAl-`@U~ipn;uC%qU+n~EKZcx zU_M^#stk>{Yc)aSObymuE&u-6V6)#;SYeC#d}ByjQdz0Ft)Eb4trzT6Q7BxocSB`K z_A^y``?&gc@w3yY5@`%gN!QHn)CX_x8P_qH$aWBduBJ0~j4PqLaFa=3ID_@!D?ORsKf#BNriqiX(akk>igt9!NT zjjVbRO8cPtx}Qun)OMnZy5OMj5Y^$#-)9c z&R_YCU`_h}hVXC|BIw_q_RPx-PI zbaZV(-}bu${dM3>;qjK<>|*Ms%Juz`@wTywni@48ja;nYYCVJDE1H8wjlpg%9fl=Y zgKxrcxe;f_Ws~`DbAF)Zc%DqR2ABY75TBY#FB$zJ?pjs+=*6KR7kMHdH=OC$obc1xaQqm<2QX(RuNJ^s& z-J#N3{ zOo6@_TV-=!UdVFlK3HavPS#DUH`&?U)!qtjQB=*_rbav0lT?5lMz?`yF=Wz1vu{hK zataFSI?_CedH1D3xW@3QS)V5(mMQ_O%Q9jLGG|5diZb;0!njo6+9WgHD8ujN9=_JM z?mff)Lq-zFD^U2KtKTznRBZExK8~eXY{~ zh8y;facVZSwx@t4k#FXNV&DDDEsy?62zP!QE~a<=`gO+B7uc_*=baY>efLpS&fv)3 zA12!$r#YV26`2EbG(KiQgX7j|Ml%xEf*Q`b={HiIn|z}wq+hK3AsVZaCWJ2gwd}t# z&*{-hpfud@YxJ6tlNS~_^t1e)!qj}Fb58CD*>An6xa5_6W)LJxFO!y)q1p%7B32cW`eBGiTb7BDK2i?S-`+BnlFWYQ(_HdQy;wThl zYiw-%VZqzW_hGTr${GP;ioNHw7rqt#`|Ivs4+izLr_c5(>7dJudpzkUCz01^K^FxH zEWY%29<8MdQ7pI=-WT32x8|{#X$Ln3mC_OlGaARoOM~Dq8+(ltvSH+)Nr^4}`C5}{ zpYdUr_T_q01|>qrx9>T|CcY}sLAl_V zs2#Qr#ckAoLBEFPXGjO0Zy!E~5J1GUzzOFh>Jk?kJ4ikP*E`uka8&(kiL<`t5u8VF+^Db=UGTzKQ`wC`YFseqe$C;swn2r{Tu91q|v4* zMt4bOIT^7%P@uW8h#`KAvLDrIr@EH;!T76;%0dqi8e`v%7l z=ELNa7C(ZdNE~nz$MUvhuTbi@b4^F) zHw+nDCqRs`KYV{DYDs6n%(El9;VR0(KKuDarf(jvr$NCpuWtOeQ?>D2e*3m?AH-`v zO~x=nngoya30AuiUFzyT75XStfl1|!Bagi*BN^w_#@v-S?Um)hT$J5t$xhdo*^_D` znd=g9pFz;82e%Kry1wt~kg-A1uV)*QK)$+%Hzn_}fsEPO;R;;;<%X;@-3JAB&hpw1 zLry~c)JplJ9BzqDd#dfXr=i&R#MeCPgnIltJX#Cyep>A5>rOJ)#HOEq zi(-pl6A_szmVHjliSOV|41pjz6{ID!bcwY>CWQ$I#+s)G7^xB$M|SeOiLm-3t5+a2BB6XPGXvz3ws z;!ZP;>l)fPwD;%URJvu1 zeKcsD#@2oSB_L;fVxm?wNNP|Im}?;XOfFCY@1oqY8{=X8&@-3RChmB8}LmUO9lD!=lc*6%G+H1F(oZG?6K7pc?ATNHj#yo|)VC{VJ_I!!|3!G;%hdqAW{RbS z)uXq*4^5k3Nr?Ew&^Y;QugC6;BpeiEw;FGe0k*MOQ{pt&=yH!<;xjKB3F1-Ibx(mX z+=Xrw3iUnHmf*%k8v0!f0)Yu}Lf)04DJ)bK*Niu?2XBwuicp9>1-2h zMQrS8mpx(58>XktOHne-`B7?HIMiFt7vDkrsB_iw1{P6Ly^o^%4I)9#Tew}BO(YA<&jEqso$?P79~st!xd<@0;EGFIOhl|~Z!yTw-o zD!3QS?-&UXICDB16maz_$F2%tjc{p@4s}x-Xd1C0;}Qy^Km!*!OK_BM=T9*fSBhTt z%qR?jQ0O@O@AF#Re;g=f`KG{J^Lq0aQK7z3+BT7>$N3%&I@GsL#`zx$mt~qtM*5IAZ7&Z|L(Z^W>tZQ^@;FI|g)BOo)NE zMV^c(#Kqf#EoAB@-E6lorIvO=(I%N0|HJ9ck@mQh)y1GmVYv3Pyr$N(x8)?j zdVY;0lo`3Nn2g!3ckz%-h#N$z_l-t9ij6fFFpU?!Hxm4e+1<6F@`mD|%rCFze@g%MLK0)Um$Ocs;#KwKqNTyzTQ-i2oXL_L% zZ$i7F4NqjghBx+8wp`=ja^52+OxFT(x|e!J(_(`0+GCitT5S zcHB}zzSv@oqi$%u1`!Gtebj@pEKt{_It5YH%mbYl`C~bsfp?LRf>6?@UTa<1{o80- zXMaQFHV%jWkIA(H9V#D0!b@jW8ixZ>IJcSMSQ45KrGXM@$&LFiHX$^x5-Y#L8706* z*7Y_zS7j5Tu}bULY%)n=+I)s(KHIf{)7SbZF0*i(Ay+bq-j;@a(&OhFSkl5S^MdV$ z-CE2Xe@u!v6tsmHaZLLB8O*w0BAL)m{2GV*;neD4;&UCmP9n{ox@zC=#E9 z9h_xs8L&JURE1~S?XG5_=x#SdgmQn`f|KHBr`7yC_11Re@2z`R&1+r_5XTj_gtBr8 zNxtWtSj$!y+HoCs@7ke2`LfW=UlJ2DKeS;7M2|^b8ur{!cSlc8{Nz;wi{H+=x)4>+ z7>38*-QyQ6k+nO%xYq!|#_??HW1HKg^RBmEMYS%*lWQ9vJ59)TX76dKrr@odI?i51 z*@Nyo`+E`(A{yPPXP1HRS}HkKJK4m#Q2qYvm(Qahn2%#p5x>mf&kvnNJqK|(w# z@_zTD4=aZ#hYrnCGx1vTMSe*{! zcXGxv8$I`!uMRD9X%2??-11)$QEXOA-xB+gwws@3=HsgH9_$wk>p+Glrvg9(HlmQ>^$?5dS% z?OWyV88@gaDk;4SpU1Bvsw0>92JT&BoqZg=Mz5SP=t>4_ELHhfdv=q~%;!L|p&bOA zewH!QJ05jk9C8wKm9U#+R0AgT{bN}=&7J!-UF%rMu zA;zTlR{MJ#PCSi6j77m+&m$USuP$~k>P)~EtmQsF0?iC_p22@g2|7+?2|N^8$Nx4y z_~{3Z1zn!rnPYGxKILbAy%K^9Zxz75IL^GY@lN^=oBV+cGdE-7I31&w{&A_9F8t&3 zLWt~VfoTCqdXkdte@F|jJ1r|l+uCA`d@)&}| zsOPz3Z~prCj${thTs=^X&FctAdkJc%g?PTNvo7B*{JJR%Hzh4XtGyccgOV+C4Sk(f?IlNlJtW49aK8I{b~?IOSipyqAVm z))L6czJ^cV+UC%CjYE4hu1c2+i)M+ktn_p{^u_bg~>;kMB&>6uYqZoFTIDEX^ zVzP27Wi$QRRNk*Z~qWTxs6oF)g~JyPy*A-PEJHAC!@&f*xuqWV{9ijV=f8*TyT`hgQQwoYElzlR#VI zLH)9olnmymKQP;Ull=Kg(112`Y2w+L-~MDD++hWisesajD&GA0SrkxYVF<9)O7Td?wXZ8Z(LEkSeOOyDS_Wach*f zEWCbr?s41yN2`7z+g zFqZ(~xlZ(*LhM<+vg+~YeiG7L6q`mHxphvbdzw(v3l>i8hrGkJghP=Dg+L)x^iV0z zTr9fVtsVHysjJ&^v=i)W0x7SSycQ`YAdh}82{hhjri*%D@b*lpIX@AUv9Nz4tm^na zzut5xX)j<^6cG~_cOyP@+v+vLg-3^Yae&`i_IJ(`jd1S@fmv}FeLs-lYASrZ4 zU0Ddu9&Pj_O(;Av0XS%}Ja#K_?$2A!+{N`YcOKsZ`xTR;=oC(LrYSB@Vn#&IkQ*Oz z2hEiHacR$Q=Vpz0%{4J!95XK`@hgEo3`O=b!s(Z%I+SXxM|7`G%GGc3I?3?q=-b4^T-f`$ z)*TMx^2)ntKgVH3+tAQcS8lWo&6&b*bj&^kUH?T7_NUcSVnBrTUMzqQ#=R|K<%-{r zra*xjqa97?TN4i{evJqCd6?Y%tINEzv zU5UdU5}Of)tcIXXN50t_M#`)b*SSx|b8lHOW0J?`%98EsBD38E7a(<0&ItdC;LL!r z4nj%+JBh5j)=ZrTqj#Zd3M&cvkz5~21@*evdDF(t2&|LX>QXRuL z`%|YI0~*7=R(|hoU{)1IX$O*~+HAqIc>h8cLuM$TBL;cf7}bI{Xp=Zlo=$-2BIX_S zKrKa?R>N_~Yxpg?8@r2gndH!=Lrst;${UtQ68@Y|z4lDZhm-0fM$Tbk1aP9joc;yF za~p7JIjNbu^7Hd~1V5U*HT*PiN(Ob>>|JmLTK@v8YqRy8J)yww&s$q1^&2ud7O{0b zigbQ+sm2ZrXfRGFOh>#)d3@lj40iz%u1N!}_@&3|F4DxQm z%lg}2Sc0o9c-Z;XnLIWZ4n0p!u>eP)W7jDn`mBI?WZ*7ga6sE8)6s|Hn-04@hw4Ha ztl*w>ZHb2orqwLZ8Y9u`D47gKN%x?EiV8FP2@v}m#NR=8%UDG5m*A0L_v4w6is6A5 z2?asMDmh-l!4@B`Qop_GxJeZEGcxuW^!5Zd? z&#|FHE#^{J*gI{iXR+f=UJPoug9xlxA4iUR6bq?H;^E~D=>=_x$WP#XYGY1gd&qRS&t_*a!xw%=|ezNGK?qg?R;rz&y|Lpx{y?iDkj<^_X zl-Kj`2S$^nUE!NRa(6o8RK()y^Gt|7ij2cY`zi#NPXa`0E<&{9&<5RP42-q1e>(S- z8~H$A)_r;E{pR6s%Tra|j#2@CNhNuw%x#klTzJH?uV-yMeYKV3Uuv@|mX~2W?l8}%rdg{t5m3lbr2ZX=oY}FuZecl`ELX-0IC&S!b zC>(2~*pL}SKA$sXrD;7qBYL+)#?J9dYYeP$%A{}7p|J#zC!q5aTs|762mu!%l0?#o znNSl5TT>{FM49^2Bh&KUKJYz&#}S%3n!q~jy*zZDMr%?sg(c8fnL`f@emN)g3dZ1n5{sXRe1+(i7_m03zhm<}T&CVq8PMRL(=n~WNe9%FI^IvJl?tjb3bkCRYFkHDRcT=% z^L!tzSa!6;qDA*Cw9DizoBd;GT+D&BzS$+#*4Eu$E8gGi@74o!YtX7bksOyI2r_af z7}0G-cHAHgLN(CO^~)cJo?x@su6i!|K`{dgOauekBB5|%#ti9+KFHRZWv{8=1Hj=T zt@GSAyecZ{p^khxG+kBo!6Li;iB0PV>lwd`NRd>{d@64u@$8LI zxiK#c;=K{S4g}>7p+URuX#5t3P2hmL)LSCEx)jm4-So#2)MT`VJ~i$Wkn`&bfU6Ba z=M4k&O2EEd?^_)b8k*8za**)v&WexmU`7hI9_4|J(?EAzF0DL)5mNpT&I>%v($T)b z(FbAoO3AW;UN*BG1cFF;NbL&uD*sTf>5z@Ksb4k~;Qmmu`oNbg|M5g_Az+A+ zqEc%#my>ZFnmuYh7&>U9r*=}12)+Bmba7Kd2y%maF_@PP3eu10(MkEq5#r=J-029E zA+x-SO7t}xjSCrGMNv$^W*~xqs0D`znJS>)nIV%9`ttVUE1(6Wz`OY5Jbk3Ow+109 zBq$RHNy5zojT4gaI_ST<%I^+NQeD@5uArlnaN_agT>&mV4JPW6;Lw5*!f-N5F;-2| z7Y0$uE2jgyVrV3*ALzbkpv@WkX;a&hVXAMLm&U#=08V5t^|3D}ae)D)8P|>s-e~&| zoRL{kc}GSIqLCLIFo*;QiJd~^fstwD#f7038nmFx*wOZm^Vt2@9QxMrrg4#xcsWCM z?Y+!~NswTo(9qBd9|`?RC)wqWO_NO|5bCuV^==e9+(bD2v*>$Zw0NQtYt)zX=?PEu zL4ckzJk^F37KDF>pIj-^N&^Zy8zTt5Es_vBDuO$uy%BFIuYTp9SP$)1>4+$_L#qjF zpXIuT%-%gZ!0blIXQH`)v;QU3J!gQznaW(ggzwkySs;c{yNBOuE}n)e&(uq$sqt2e zG9-%26JGnJ+HvnBgHZvH|J{c2l34>*HG16$c}DEc9kPTGF+Z=(sX!BU`<}DmRxTVuQzle(oN*jylIq}yhEP=M~VF$D^E>+&UR`-4O@@}zoDTC(6~0I!vE#71+A&fy<%p2nuCU+HmXl$%ZG3D}(v$D$6}tcPJ;DFvFgb&EHRa>> znqS1B;}oD)Cmyst(Uh8>L$iec@fRtRSy7=;P*AW~P*`$JQzEjo@ua{(TKcPgMBAP1 z?d`|a22sQ22QU7YpUO9D!R-Z7Qt!LT0-b@6kB{N$@&HN_>u%~OP(e3A4+;ZyLqj_@ zZYqv{5OisQ|2_lDainEr6dWAZhd@uH#*MY{3ux-gSZB(#@(l?1ry!#uT_R}~{Qm&$ Cm1|c3 diff --git a/layouts/community/ergodox/algernon/keymap.c b/layouts/community/ergodox/algernon/keymap.c deleted file mode 100644 index e6e9bdaf7f03..000000000000 --- a/layouts/community/ergodox/algernon/keymap.c +++ /dev/null @@ -1,1194 +0,0 @@ -/* - * algernon's ErgoDox EZ layout, please see the readme.md file! - */ - -#include -#include QMK_KEYBOARD_H -#include "led.h" -#include "debug.h" -#include "action_layer.h" -#include "action_util.h" -#include "timer.h" -#include "keymap_plover.h" -#include "eeconfig.h" -#include "wait.h" -#include "version.h" -#include "print.h" - -/* Layers */ - -enum { - BASE = 0, - ADORE, - ARRW, - APPSEL, - HUN, - NMDIA, - PLVR, -}; - -/* Macros */ - -enum { - NONE = 0, - // Buttons that do extra stuff - A_GUI, - A_PLVR, - A_MPN, - - // Application select keys - APP_SLK, // Slack - APP_EMCS, // Emacs - APP_TERM, // Terminal - APP_CHRM, // Chrome - APP_MSIC, // Music - APP_SOCL, // Social - APP_PMGR, // Password manager - APP_SCL2, // Social #2 - - // Hungarian layer keys - HU_AA, // Á - HU_OO, // Ó - HU_EE, // É - HU_UU, // Ú - HU_II, // Í - HU_OE, // Ö - HU_UE, // Ü - HU_OEE, // Ő - HU_UEE, // Ű - - // number/symbol keys - A_1, // 1 - A_2, // 2 - A_3, // ... - A_4, - A_5, - A_6, - A_7, - A_8, - A_9, - A_0, - - // Fx - Fx, -}; - -/* Fn keys */ - -enum { - F_BSE = 0, - F_HUN, - F_GUI, -}; - -/* Custom keycodes */ - -enum { - CT_CLN = 0, - CT_TA, - CT_LBP, - CT_RBP, - CT_TMUX, - CT_TPS, - CT_SR, -}; - -/* States & timers */ - -uint16_t gui_timer = 0; - -#if KEYLOGGER_ENABLE -# ifdef AUTOLOG_ENABLE -bool log_enable = true; -# else -bool log_enable = false; -# endif -#endif - -bool time_travel = false; -bool skip_leds = false; - -static uint8_t is_adore = 0; - -/* The Keymap */ - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -/* Keymap 0: Base Layer - * - * ,-----------------------------------------------------. ,-----------------------------------------------------. - * | Next/Prev | 9 | 7 @ | 5 * | 3 ^ | 1 $ | F11 | | Fx | 0 % | 2 ! | 4 # | 6 & | 8 | Plover | - * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| - * | ~ | ' | , | . | P | Y | ( | | ) | F | G | C | R | L | \ | - * |-----------+------+------+------+------+------| [ | | ] |------+------+------+------+------+-----------| - * | Tab/ARROW | A | O | E | U | I |------| |------| D | H | T | N | S | = / Arrow | - * |-----------+------+------+------+------+------| tmux | | tmux |------+------+------+------+------+-----------| - * | Play/Pause| / | Q | J | K | X | | | Pane | B | M | W | V | Z | Stop/Reset| - * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' - * | | | | | : | | - | | | | | - * `-----------------------------------' `-----------------------------------' - * ,-------------. ,-------------. - * | LAlt | GUI | | MDIA | Del | - * ,------|------|------| |------+------+------. - * | | | Ctrl | | LEAD | | | - * |Backsp|LShift|------| |------| Enter| Space| - * | | | ESC | | HUN | | | - * `--------------------' `--------------------' - */ -[BASE] = LAYOUT_ergodox( -// left hand - M(A_MPN) ,M(A_9) ,M(A_7) ,M(A_5) ,M(A_3) ,M(A_1) ,KC_F11 -,KC_GRV ,KC_QUOT ,KC_COMM ,KC_DOT ,KC_P ,KC_Y ,TD(CT_LBP) -,TD(CT_TA) ,KC_A ,KC_O ,KC_E ,KC_U ,KC_I -,KC_MPLY ,KC_SLSH ,KC_Q ,KC_J ,KC_K ,KC_X ,TD(CT_TMUX) -,KC_NO ,KC_NO ,KC_NO ,KC_NO ,TD(CT_CLN) - - ,OSM(MOD_LALT),F(F_GUI) - ,OSM(MOD_LCTL) - ,KC_BSPC,OSM(MOD_LSFT),KC_ESC - - // right hand - ,M(Fx) ,M(A_0) ,M(A_2) ,M(A_4) ,M(A_6) ,M(A_8) ,M(A_PLVR) - ,TD(CT_RBP),KC_F ,KC_G ,KC_C ,KC_R ,KC_L ,KC_BSLS - ,KC_D ,KC_H ,KC_T ,KC_N ,KC_S ,KC_EQL - ,TD(CT_TPS),KC_B ,KC_M ,KC_W ,KC_V ,KC_Z ,TD(CT_SR) - ,KC_MINS ,KC_NO ,KC_NO ,KC_NO ,KC_NO - - ,OSL(NMDIA),KC_DEL - ,KC_LEAD - ,F(F_HUN) ,KC_ENT ,KC_SPC - ), - -/* Keymap 1: Adore layer - * - * ,-----------------------------------------------------. ,-----------------------------------------------------. - * | Play/Pause| 9 | 7 @ | 5 * | 3 ^ | 1 $ | F11 | | Fx | 0 % | 2 ! | 4 # | 6 & | 8 | Plover | - * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| - * | \ | X | W | C | H | F | ( | | ) | M | G | L | P | / | `~ | - * |-----------+------+------+------+------+------| [ | | ] |------+------+------+------+------+-----------| - * | Tab/Arrow | A | O | E | I | U |------| |------| D | R | T | N | S | = | - * |-----------+------+------+------+------+------| tmux | | tmux |------+------+------+------+------+-----------| - * | | Z | Q | ' | , | . | | | pane | B | K | V | Y | J | | - * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' - * | | | | | : | | - | | | | | - * `-----------------------------------' `-----------------------------------' - * ,-------------. ,-------------. - * | LAlt | GUI | | MDIA | Del | - * ,------|------|------| |------+------+------. - * | | | Ctrl | | HUN | | | - * |Backsp|LShift|------| |------| Enter| Space| - * | | | ESC | | LEAD | | | - * `--------------------' `--------------------' - */ -[ADORE] = LAYOUT_ergodox( -// left hand - KC_MPLY ,M(A_9) ,M(A_7) ,M(A_5) ,M(A_3) ,M(A_1) ,KC_F11 -,KC_BSLS ,KC_X ,KC_W ,KC_C ,KC_H ,KC_F ,TD(CT_LBP) -,TD(CT_TA) ,KC_A ,KC_O ,KC_E ,KC_I ,KC_U -,KC_NO ,KC_Z ,KC_Q ,KC_QUOT ,KC_COMM ,KC_DOT ,TD(CT_TMUX) -,KC_NO ,KC_NO ,KC_NO ,KC_NO ,TD(CT_CLN) - - ,OSM(MOD_LALT),F(F_GUI) - ,OSM(MOD_LCTL) - ,KC_BSPC,OSM(F_LSFT),KC_ESC - - // right hand - ,M(Fx) ,M(A_0) ,M(A_2) ,M(A_4) ,M(A_6) ,M(A_8) ,M(A_PLVR) - ,TD(CT_RBP),KC_M ,KC_G ,KC_L ,KC_P ,KC_SLSH ,KC_GRV - ,KC_D ,KC_R ,KC_T ,KC_N ,KC_S ,KC_EQL - ,TD(CT_TPS),KC_B ,KC_K ,KC_V ,KC_Y ,KC_J ,KC_NO - ,KC_MINS ,KC_NO ,KC_NO ,KC_NO ,KC_NO - - ,OSL(NMDIA),KC_DEL - ,F(F_HUN) - ,KC_LEAD ,KC_ENT ,KC_SPC - ), - -/* Keymap 2: Arrow layer - * - * ,-----------------------------------------------------. ,-----------------------------------------------------. - * | | | | | | | | | | | | | | | | - * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| - * | | | | | | | | | | | Home | Up | End | | | - * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| - * | | | | | | |------| |------| | Left | Down | Rght | | | - * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| - * | | | | | | | | | | | | | | | | - * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' - * | | | | | | | | | | | | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | | | | | | - * ,------|------|------| |------+------+------. - * | | | | | | | | - * | Enter| |------| |------| PgUp | PgDn | - * | | | | | | | | - * `--------------------' `--------------------' - */ - -[ARRW] = LAYOUT_ergodox( -// left hand - KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS -,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS -,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS -,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS -,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS - - ,KC_TRNS ,KC_TRNS - ,KC_TRNS - ,KC_ENT ,KC_TRNS ,KC_TRNS - - // right hand - ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS - ,KC_TRNS ,KC_TRNS ,KC_HOME ,KC_UP ,KC_END ,KC_TRNS ,KC_TRNS - ,KC_TRNS ,KC_LEFT ,KC_DOWN ,KC_RGHT ,KC_TRNS ,KC_TRNS - ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS - ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS - - ,KC_TRNS ,KC_TRNS - ,KC_TRNS - ,KC_TRNS ,KC_PGUP ,KC_PGDN - ), - -/* Keymap 3: Application select layer - * - * ,-----------------------------------------------------. ,-----------------------------------------------------. - * | |Music |Slack |Emacs |Term |Chrome| | | |Social|PWMgr |Scl2 | | | | - * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| - * | | | | | | | | | | | | | | | | - * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| - * | | | | | | |------| |------| | | | | | | - * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| - * | | | | | | | | | | | | | | | | - * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' - * | | | | | | | | | | | | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | | | | | | - * ,------|------|------| |------+------+------. - * | | | | | | | | - * | | |------| |------| | | - * | | | | | | | | - * `--------------------' `--------------------' - */ - -[APPSEL] = LAYOUT_ergodox( -// left hand - KC_TRNS ,M(APP_MSIC),M(APP_SLK),M(APP_EMCS),M(APP_TERM),M(APP_CHRM),KC_TRNS -,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS -,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS -,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS -,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS - - ,KC_TRNS ,KC_TRNS - ,KC_TRNS - ,KC_TRNS ,KC_TRNS ,KC_TRNS - - // right hand - ,KC_TRNS ,M(APP_SOCL) ,M(APP_PMGR) ,M(APP_SCL2) ,KC_NO ,KC_NO ,KC_TRNS - ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS - ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS - ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS - ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS - - ,KC_TRNS ,KC_TRNS - ,KC_TRNS - ,KC_TRNS ,KC_TRNS ,KC_TRNS - ), - - -/* Keymap 4: Hungarian Layer - * - * ,-----------------------------------------------------. ,-----------------------------------------------------. - * | | | | | | | | | | | | | | | | - * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| - * | | | Ő | | Ű | | | | | | | | | | | - * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| - * | | Á | Ó | É | Ú | Í |------| |------| | | | | | | - * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| - * | | | Ö | | Ü | | | | | | | | | | | - * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' - * | | | | | | | | | | | | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | | | | | | - * ,------|------|------| |------+------+------. - * | | | | | | | | - * | | |------| |------| | | - * | | | | | BASE | | | - * `--------------------' `--------------------' - */ - -[HUN] = LAYOUT_ergodox( -// left hand - KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO -,KC_NO ,KC_NO ,M(HU_OEE),KC_NO ,M(HU_UEE),KC_NO ,KC_NO -,KC_NO ,M(HU_AA),M(HU_OO) ,M(HU_EE),M(HU_UU) ,M(HU_II) -,KC_NO ,KC_NO ,M(HU_OE) ,KC_NO ,M(HU_UE) ,KC_NO ,KC_NO -,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO - - ,KC_NO ,KC_NO - ,KC_NO - ,KC_NO ,KC_TRNS ,KC_TRNS - - // right hand - ,KC_TRNS ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO - ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO - ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO - ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO - ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO - - ,KC_NO ,KC_NO - ,KC_NO - ,F(F_BSE),KC_TRNS ,KC_TRNS - ), - -/* Keymap 5: Navigation & Media layer - * - * ,-----------------------------------------------------. ,-----------------------------------------------------. - * | | F9 | F7 | F5 | F3 | F1 |ScrLCK| | | F10 | F2 | F4 | F6 | F8 | | - * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| - * | | | | | | | | | | | | | | | | - * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| - * | | | | | | |------| |------| | | | | | | - * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| - * | | | | | | | | | | | | | | | | - * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' - * | | | | | | | | | | | | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | Mute | VlUp | | BASE | | - * ,------|------|------| |------+------+------. - * | | | VlDn | | | | | - * | | |------| |------| | | - * | | | | | | | | - * `--------------------' `--------------------' - */ -[NMDIA] = LAYOUT_ergodox( -// left hand - KC_NO ,KC_F9 ,KC_F7 ,KC_F5 ,KC_F3 ,KC_F1 ,LGUI(KC_L) -,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_MUTE ,KC_VOLU - ,KC_VOLD - ,KC_NO ,KC_NO ,KC_TRNS - - // right hand - ,KC_TRNS ,KC_F10 ,KC_F2 ,KC_F4 ,KC_F6 ,KC_F8 ,KC_NO - ,KC_NO ,KC_NO ,KC_NO ,KC_UP ,KC_NO ,KC_NO ,KC_NO - ,KC_NO ,KC_LEFT ,KC_DOWN ,KC_RGHT ,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_TRNS ,KC_NO - ,KC_NO - ,KC_NO ,KC_NO ,KC_NO - ), - -/* Keymap 6: Steno for Plover - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | | | | | | | | | | | | | | | BASE | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | # | # | # | # | # | # | | # | # | # | # | # | # | # | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | | T | P | H | |------| |------| | F | P | L | T | D | - * |--------+ S +------+------+------+ * | * | | * | * +------+------+------+------+--------| - * | | | K | W | R | | | | | | R | B | G | S | Z | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | | | | | | | | | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | | | | | | - * ,------|------|------| |------+------+------. - * | | | | | | | | - * | A | O |------| |------| E | U | - * | | | | | | | | - * `--------------------' `--------------------' - */ - -[PLVR] = LAYOUT_ergodox( -// left hand -KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, -KC_NO, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM, -KC_NO, PV_LS, PV_LT, PV_LP, PV_LH, PV_STAR, -KC_NO, PV_LS, PV_LK, PV_LW, PV_LR, PV_STAR, PV_STAR, -KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_NO, KC_NO, - KC_NO, - PV_A, PV_O, KC_NO, - - // right hand - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, M(A_PLVR), - PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM, - PV_STAR, PV_RF, PV_RP, PV_RL, PV_RT, PV_RD, - PV_STAR, PV_STAR, PV_RR, PV_RB, PV_RG, PV_RS, PV_RZ, - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_NO, KC_NO, - KC_NO, - KC_NO,PV_E, PV_U - ), - -}; - -const uint16_t PROGMEM fn_actions[] = { - [F_BSE] = ACTION_LAYER_CLEAR(ON_PRESS) - ,[F_HUN] = ACTION_LAYER_INVERT(HUN, ON_PRESS) - ,[F_GUI] = ACTION_MACRO_TAP(A_GUI) -}; - -static void toggle_steno(int pressed) -{ - uint8_t layer = biton32(layer_state); - - if (pressed) { - if (layer != PLVR) layer_on(PLVR); else layer_off(PLVR); - - register_code(PV_LP); - register_code(PV_LH); - register_code(PV_LR); - register_code(PV_O); - register_code(PV_RL); - register_code(PV_RG); - } else { - unregister_code(PV_LP); - unregister_code(PV_LH); - unregister_code(PV_LR); - unregister_code(PV_O); - unregister_code(PV_RL); - unregister_code(PV_RG); - } -} - -static macro_t *ang_do_hun (keyrecord_t *record, uint16_t accent, uint16_t hun_char) -{ - uint8_t need_shift = 0; - uint8_t hold_shift = 0; - - if (!record->event.pressed) - return MACRO_NONE; - - layer_off (HUN); - - if (keyboard_report->mods & MOD_BIT (KC_LSFT)) { - hold_shift = 1; - need_shift = 1; - unregister_code (KC_LSFT); - } - if ((get_oneshot_mods () & MOD_BIT(KC_LSFT)) && !has_oneshot_mods_timed_out ()) { - need_shift = 1; - hold_shift = 0; - unregister_code (KC_LSFT); - } - - clear_oneshot_mods (); - - register_code (KC_RALT); - unregister_code (KC_RALT); - if (accent == (KC_DQT)) { - register_code (KC_RSFT); - } - register_code (accent); - unregister_code (accent); - if (need_shift && accent != (KC_DQT)) { - register_code (KC_RSFT); - } else if (accent == (KC_DQT) && !need_shift) { - unregister_code (KC_RSFT); - } - register_code (hun_char); - unregister_code (hun_char); - if (need_shift || accent == (KC_DQT)) - unregister_code (KC_RSFT); - if (hold_shift) - register_code (KC_LSFT); - - return MACRO_NONE; -} - -static void ang_handle_num_row(uint8_t id, keyrecord_t *record) { - uint8_t idx = id - A_1; - uint8_t kc; - static bool shifted[10]; - - if (keyboard_report->mods & MOD_BIT(KC_LSFT) || - ((get_oneshot_mods() & MOD_BIT(KC_LSFT)) && !has_oneshot_mods_timed_out())) { - if (record->event.pressed) - shifted[idx] = true; - } - - if (!shifted[idx]) { - kc = idx + KC_1; - } else { - switch (id) { - case A_8: - case A_9: - shifted[idx] = false; - return; - - case A_7: - kc = KC_2; - break; - case A_5: - kc = KC_8; - break; - case A_3: - kc = KC_4; - break; - case A_1: - kc = KC_6; - break; - - case A_0: - kc = KC_5; - break; - case A_2: - kc = KC_1; - break; - case A_4: - kc = KC_3; - break; - case A_6: - kc = KC_7; - break; - } - } - - if (record->event.pressed) { - register_code (kc); - } else { - unregister_code (kc); - shifted[idx] = false; - } -} - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - switch(id) { - case A_MPN: - if (record->event.pressed) { - if (keyboard_report->mods & MOD_BIT(KC_LSFT) || - ((get_oneshot_mods() & MOD_BIT(KC_LSFT)) && !has_oneshot_mods_timed_out())) { - int oneshot = ((get_oneshot_mods() & MOD_BIT(KC_LSFT)) && !has_oneshot_mods_timed_out()); - - if (oneshot) - clear_oneshot_mods (); - unregister_code (KC_LSFT); - - register_code (KC_MPRV); - unregister_code (KC_MPRV); - - if (!oneshot) - register_code (KC_LSFT); - } else { - return MACRO (T(MNXT), END); - } - } - break; - - /* Hungarian layer */ - case HU_AA: - return ang_do_hun (record, KC_QUOT, KC_A); - case HU_OO: - return ang_do_hun (record, KC_QUOT, KC_O); - case HU_EE: - return ang_do_hun (record, KC_QUOT, KC_E); - case HU_UU: - return ang_do_hun (record, KC_QUOT, KC_U); - case HU_II: - return ang_do_hun (record, KC_QUOT, KC_I); - case HU_OE: - return ang_do_hun (record, KC_DQT, KC_O); - case HU_UE: - return ang_do_hun (record, KC_DQT, KC_U); - case HU_OEE: - return ang_do_hun (record, KC_EQL, KC_O); - case HU_UEE: - return ang_do_hun (record, KC_EQL, KC_U); - - /* Plover base */ - case A_PLVR: - toggle_steno(record->event.pressed); - break; - - /* Fx */ - case Fx: - if (record->event.pressed) { - set_oneshot_mods (MOD_LALT); - layer_on (NMDIA); - set_oneshot_layer (NMDIA, ONESHOT_START); - } else { - clear_oneshot_layer_state (ONESHOT_PRESSED); - } - break; - - /* GUI & AppSel */ - case A_GUI: - if (record->event.pressed) { - register_code (KC_LGUI); - if (record->tap.count && !record->tap.interrupted) { - if (record->tap.count == 2) { - uprintf("CMD:appsel_start\n"); - layer_on (APPSEL); - set_oneshot_layer (APPSEL, ONESHOT_START); - } else if (record->tap.count >= 3) { - uprintf("CMD:appsel_helper\n"); - layer_off (APPSEL); - clear_oneshot_layer_state (ONESHOT_PRESSED); - } - } else { - record->tap.count = 0; - } - gui_timer = 0; - } else { - if (record->tap.count >= 2) - { - clear_oneshot_layer_state (ONESHOT_PRESSED); - } - gui_timer = timer_read (); - } - break; - - case APP_SLK: - if (record->event.pressed) - uprintf("CMD:appsel_slack\n"); - break; - - case APP_EMCS: - if (record->event.pressed) - uprintf("CMD:appsel_emacs\n"); - break; - - case APP_TERM: - if (record->event.pressed) - uprintf("CMD:appsel_term\n"); - break; - - case APP_CHRM: - if (record->event.pressed) - uprintf("CMD:appsel_chrome\n"); - break; - - case APP_MSIC: - if (record->event.pressed) - uprintf("CMD:appsel_music\n"); - break; - - case APP_SOCL: - if (record->event.pressed) - uprintf("CMD:appsel_social\n"); - break; - - case APP_PMGR: - if (record->event.pressed) - uprintf("CMD:appsel_pwmgr\n"); - break; - - case APP_SCL2: - if (record->event.pressed) - uprintf("CMD:appsel_social2\n"); - break; - - // number row and symbols - case A_1 ... A_0: - ang_handle_num_row(id, record); - break; - } - - return MACRO_NONE; -}; - -// Runs just one time when the keyboard initializes. -void matrix_init_user(void) { - uint8_t dl; - - set_unicode_input_mode(UC_LNX); - - ergodox_led_all_on(); - for (int i = LED_BRIGHTNESS_HI; i > LED_BRIGHTNESS_LO; i--) { - ergodox_led_all_set (i); - wait_ms (5); - } - wait_ms(1000); - for (int i = LED_BRIGHTNESS_LO; i > 0; i--) { - ergodox_led_all_set (i); - wait_ms (10); - } - ergodox_led_all_off(); - - if (!eeconfig_is_enabled()) - eeconfig_init(); - dl = eeconfig_read_default_layer (); - if (dl == (1UL << ADORE)) { - is_adore = 1; - } -}; - -LEADER_EXTERNS(); - -static void ang_tap (uint16_t code, ...) { - uint16_t kc = code; - va_list ap; - - va_start(ap, code); - - do { - register_code16(kc); - unregister_code16(kc); - wait_ms(50); - kc = va_arg(ap, int); - } while (kc != 0); - va_end(ap); -} - -#define TAP_ONCE(code) \ - register_code (code); \ - unregister_code (code) - -typedef struct { - bool layer_toggle; - bool sticky; -} td_ta_state_t; - -static void ang_tap_dance_ta_finished (qk_tap_dance_state_t *state, void *user_data) { - td_ta_state_t *td_ta = (td_ta_state_t *) user_data; - - if (td_ta->sticky) { - td_ta->sticky = false; - td_ta->layer_toggle = false; - layer_off (ARRW); - return; - } - - if (state->count == 1 && !state->pressed) { - register_code (KC_TAB); - td_ta->sticky = false; - td_ta->layer_toggle = false; - } else { - td_ta->layer_toggle = true; - layer_on (ARRW); - td_ta->sticky = (state->count == 2); - } -} - -static void ang_tap_dance_ta_reset (qk_tap_dance_state_t *state, void *user_data) { - td_ta_state_t *td_ta = (td_ta_state_t *) user_data; - - if (!td_ta->layer_toggle) - unregister_code (KC_TAB); - if (!td_ta->sticky) - layer_off (ARRW); -} - -static void ang_tap_dance_tmux_finished (qk_tap_dance_state_t *state, void *user_data) { - if (state->count == 1) { - register_code(KC_LALT); - register_code(KC_SPC); - unregister_code(KC_SPC); - unregister_code(KC_LALT); - } else { - register_code(KC_LCTL); - register_code(KC_A); - unregister_code(KC_A); - unregister_code(KC_LCTL); - } -} - -static void ang_tap_dance_tmux_pane_select (qk_tap_dance_state_t *state, void *user_data) { - uint8_t kc = KC_P; - - if (state->count >= 2) { - kc = KC_Z; - } - - register_code(KC_LALT); - register_code(KC_SPC); - unregister_code(KC_SPC); - unregister_code(KC_LALT); - - register_code(kc); - unregister_code(kc); -} - -static void -_td_sr_each (qk_tap_dance_state_t *state, void *user_data) { - skip_leds = true; - - switch (state->count) { - case 1: - ergodox_right_led_3_on (); - break; - case 2: - ergodox_right_led_2_on (); - break; - case 3: - ergodox_right_led_1_on (); - break; - case 4: - ergodox_right_led_3_off (); - wait_ms (50); - ergodox_right_led_2_off (); - wait_ms (50); - ergodox_right_led_1_off (); - break; - } -} - -static void -_td_sr_finished (qk_tap_dance_state_t *state, void *user_data) { - if (state->count == 1) { - register_code (KC_MSTP); - } - if (state->count >= 4) { - uprintf("CMD:reflash\n"); - wait_ms (1000); - reset_keyboard (); - reset_tap_dance (state); - } -} - -static void -_td_sr_reset (qk_tap_dance_state_t *state, void *user_data) { - ergodox_right_led_1_off (); - wait_ms (50); - ergodox_right_led_2_off (); - wait_ms (50); - ergodox_right_led_3_off (); - - if (state->count == 1) { - unregister_code (KC_MSTP); - } -} - -static void -_td_brackets_finished (qk_tap_dance_state_t *state, void *user_data) { - if (state->count == 1) { - if (state->keycode == TD(CT_LBP)) - register_code16 (KC_LBRC); - else - register_code16 (KC_RBRC); - } else if (state->count == 2) { - if (state->keycode == TD(CT_LBP)) - register_code16 (KC_LPRN); - else - register_code16 (KC_RPRN); - } else if (state->count == 3) { - unicode_input_start(); - - if (state->keycode == TD(CT_LBP)) - register_hex (0x300c); - else - register_hex (0x300d); - - unicode_input_finish(); - } -} - -static void -_td_brackets_reset (qk_tap_dance_state_t *state, void *user_data) { - if (state->count == 1) { - if (state->keycode == TD(CT_LBP)) - unregister_code16 (KC_LBRC); - else - unregister_code16 (KC_RBRC); - } else if (state->count == 2) { - if (state->keycode == TD(CT_LBP)) - unregister_code16 (KC_LPRN); - else - unregister_code16 (KC_RPRN); - } -} - -qk_tap_dance_action_t tap_dance_actions[] = { - [CT_CLN] = ACTION_TAP_DANCE_DOUBLE (KC_COLN, KC_SCLN) - ,[CT_TA] = { - .fn = { NULL, ang_tap_dance_ta_finished, ang_tap_dance_ta_reset }, - .user_data = (void *)&((td_ta_state_t) { false, false }) - } - ,[CT_LBP] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, _td_brackets_finished, _td_brackets_reset) - ,[CT_RBP] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, _td_brackets_finished, _td_brackets_reset) - ,[CT_TMUX]= ACTION_TAP_DANCE_FN (ang_tap_dance_tmux_finished) - ,[CT_TPS] = ACTION_TAP_DANCE_FN (ang_tap_dance_tmux_pane_select) - ,[CT_SR] = ACTION_TAP_DANCE_FN_ADVANCED (_td_sr_each, _td_sr_finished, _td_sr_reset) -}; - -// Runs constantly in the background, in a loop. -void matrix_scan_user(void) { - uint8_t layer = biton32(layer_state); - bool is_arrow = false; - - if (gui_timer && timer_elapsed (gui_timer) > TAPPING_TERM) - unregister_code (KC_LGUI); - - if (!skip_leds) { - if (layer == HUN) { - ergodox_right_led_2_on(); - ergodox_right_led_3_on(); - } else if (layer == NMDIA) { - ergodox_right_led_1_on(); - ergodox_right_led_2_on(); - } else if (layer == PLVR) { - ergodox_right_led_1_on (); - ergodox_right_led_2_on (); - ergodox_right_led_3_on (); - } else if (layer == ADORE) { - ergodox_right_led_1_on (); - ergodox_right_led_2_on (); - ergodox_right_led_3_on (); - - ergodox_right_led_2_set (LED_BRIGHTNESS_HI); - } - } - - if (layer_state & (1UL << ARRW)) { - if (!skip_leds) { - ergodox_right_led_1_on (); - ergodox_right_led_3_on (); - } - is_arrow = true; - } - - if (!skip_leds) { - if (keyboard_report->mods & MOD_BIT(KC_LSFT) || - ((get_oneshot_mods() & MOD_BIT(KC_LSFT)) && !has_oneshot_mods_timed_out())) { - ergodox_right_led_1_set (LED_BRIGHTNESS_HI); - ergodox_right_led_1_on (); - } else { - ergodox_right_led_1_set (LED_BRIGHTNESS_LO); - if (layer != NMDIA && layer != PLVR && layer != ADORE && !is_arrow) - ergodox_right_led_1_off (); - } - - if (keyboard_report->mods & MOD_BIT(KC_LALT) || - ((get_oneshot_mods() & MOD_BIT(KC_LALT)) && !has_oneshot_mods_timed_out())) { - ergodox_right_led_2_set (LED_BRIGHTNESS_HI); - ergodox_right_led_2_on (); - } else { - ergodox_right_led_2_set (LED_BRIGHTNESS_LO); - if (layer != HUN && layer != NMDIA && layer != PLVR && layer != ADORE) - ergodox_right_led_2_off (); - } - - if (keyboard_report->mods & MOD_BIT(KC_LCTRL) || - ((get_oneshot_mods() & MOD_BIT(KC_LCTRL)) && !has_oneshot_mods_timed_out())) { - ergodox_right_led_3_set (LED_BRIGHTNESS_HI); - ergodox_right_led_3_on (); - } else { - ergodox_right_led_3_set (LED_BRIGHTNESS_LO); - if (layer != HUN && layer != PLVR && layer != ADORE && !is_arrow) - ergodox_right_led_3_off (); - } - } - - LEADER_DICTIONARY() { - leading = false; - leader_end (); - - SEQ_ONE_KEY (KC_C) { - ang_tap (LSFT(KC_C), KC_S, KC_I, KC_L, KC_L, KC_RALT, KC_QUOT, KC_A, KC_M, KC_A, KC_S, - KC_S, KC_Z, KC_O, KC_N, KC_Y, KC_K, KC_RALT, KC_QUOT, KC_A, KC_M, 0); - } - - SEQ_ONE_KEY (KC_K) { - ang_tap (KC_SPC, LSFT(KC_7), KC_SPC, 0); - register_code(KC_LCTL); - register_code(KC_LSFT); - register_code(KC_U); - unregister_code(KC_U); - unregister_code(KC_LSFT); - unregister_code(KC_LCTL); - ang_tap (KC_1, KC_F, KC_4, KC_7, KC_6, 0); - register_code (KC_ENT); - unregister_code (KC_ENT); - ang_tap (KC_END, 0); - register_code(KC_LCTL); - register_code(KC_LSFT); - register_code(KC_U); - unregister_code(KC_U); - unregister_code(KC_LSFT); - unregister_code(KC_LCTL); - ang_tap (KC_1, KC_F, KC_4, KC_7, KC_6, 0); - register_code (KC_SPC); - unregister_code (KC_SPC); - } - - SEQ_ONE_KEY (KC_G) { - ang_tap (LSFT(KC_G), KC_E, KC_J, KC_G, KC_RALT, KC_EQL, KC_O, - KC_RALT, KC_EQL, KC_O, - KC_RALT, KC_EQL, KC_O, 0); - } - -#if KEYLOGGER_ENABLE - SEQ_ONE_KEY (KC_D) { - ergodox_led_all_on(); - wait_ms(100); - ergodox_led_all_off(); - log_enable = !log_enable; - } -#endif - - SEQ_ONE_KEY (KC_R) { - ang_tap(KC_RALT, 0); - } - - SEQ_ONE_KEY (KC_T) { - time_travel = !time_travel; - } - - SEQ_ONE_KEY (KC_U) { - qk_ucis_start(); - } - - SEQ_ONE_KEY (KC_V) { - SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ (" QMK_VERSION "/" LAYOUT_ergodox_VERSION ")"); - } - - SEQ_ONE_KEY (KC_L) { - /* λ */ - unicode_input_start(); - register_hex(0x03bb); - unicode_input_finish(); - } - - SEQ_ONE_KEY (KC_Y) { - ang_tap (KC_BSLS, KC_O, KC_SLSH, 0); - } - - SEQ_ONE_KEY (KC_S) { - unicode_input_start(); register_hex(0xaf); unicode_input_finish(); - TAP_ONCE (KC_BSLS); - register_code (KC_RSFT); TAP_ONCE (KC_MINS); TAP_ONCE (KC_9); unregister_code (KC_RSFT); - unicode_input_start (); register_hex(0x30c4); unicode_input_finish(); - register_code (KC_RSFT); TAP_ONCE (KC_0); TAP_ONCE (KC_MINS); unregister_code (KC_RSFT); - TAP_ONCE (KC_SLSH); - unicode_input_start (); register_hex(0xaf); unicode_input_finish(); - } - - SEQ_TWO_KEYS (KC_W, KC_M) { - uprintf("CMD:wm\n"); - } - - SEQ_ONE_KEY (KC_A) { - if (is_adore == 0) { - default_layer_and (0); - default_layer_or ((1UL << ADORE)); - eeconfig_update_default_layer ((1UL << ADORE)); - is_adore = 1; - - ergodox_led_all_off (); - ergodox_right_led_3_on (); - wait_ms (100); - ergodox_right_led_2_on (); - wait_ms (100); - ergodox_right_led_3_off (); - ergodox_right_led_1_on (); - wait_ms (100); - ergodox_right_led_2_off (); - wait_ms (100); - ergodox_right_led_1_off (); - } else { - is_adore = 0; - default_layer_and (0); - default_layer_or (1UL << BASE); - eeconfig_update_default_layer ((1UL << BASE)); - - ergodox_led_all_off (); - ergodox_right_led_1_on (); - wait_ms (100); - ergodox_right_led_2_on (); - wait_ms (100); - ergodox_right_led_1_off (); - ergodox_right_led_3_on (); - wait_ms (100); - ergodox_right_led_2_off (); - wait_ms (100); - ergodox_right_led_3_off (); - } - } - } -} - -static uint16_t last4[4]; - -const qk_ucis_symbol_t ucis_symbol_table[] = UCIS_TABLE -( - UCIS_SYM("poop", 0x1f4a9), - UCIS_SYM("rofl", 0x1f923), - UCIS_SYM("kiss", 0x1f619), - UCIS_SYM("snowman", 0x2603), - UCIS_SYM("coffee", 0x2615), - UCIS_SYM("heart", 0x2764), - UCIS_SYM("bolt", 0x26a1), - UCIS_SYM("pi", 0x03c0), - UCIS_SYM("mouse", 0x1f401), - UCIS_SYM("micro", 0x00b5), - UCIS_SYM("tm", 0x2122), - UCIS_SYM("child", 0x1f476), - UCIS_SYM("family", 0x1F46A), - UCIS_SYM("joy", 0x1F602) -); - -bool process_record_user (uint16_t keycode, keyrecord_t *record) { -#if KEYLOGGER_ENABLE - if (log_enable) { - uint8_t layer = biton32(layer_state); - - if ((layer == ADORE) || (layer == BASE)) - uprintf ("KL: col=%02d, row=%02d, pressed=%d, layer=%s\n", record->event.key.col, - record->event.key.row, record->event.pressed, (is_adore) ? "ADORE" : "Dvorak"); - } -#endif - - if (keycode == KC_ESC && record->event.pressed) { - bool queue = true; - - if ((get_oneshot_mods ()) && !has_oneshot_mods_timed_out ()) { - clear_oneshot_mods (); - queue = false; - } - if (layer_state & (1UL<event.pressed) { - uint8_t p; - - // shift cache one to the left - for (p = 0; p < 3; p++) { - last4[p] = last4[p + 1]; - } - last4[3] = keycode; - - if (last4[0] == KC_D && last4[1] == KC_A && last4[2] == KC_T && last4[3] == KC_E) { - ang_tap (KC_E, KC_SPC, KC_MINS, KC_D, KC_SPC, KC_QUOT, 0); - register_code (KC_RSFT); - register_code (KC_EQL); - unregister_code (KC_EQL); - unregister_code (KC_RSFT); - - ang_tap (KC_4, KC_SPC, KC_D, KC_A, KC_Y, KC_S, KC_QUOT, 0); - - return false; - } - } - - return true; -} - -void qk_ucis_symbol_fallback (void) { - for (uint8_t i = 0; i < qk_ucis_state.count - 1; i++) { - uint8_t code; - - if ((qk_ucis_state.codes[i] >= M(A_1)) && (qk_ucis_state.codes[i] <= M(A_0))) - code = qk_ucis_state.codes[i] - M(A_1) + KC_1; - else - code = qk_ucis_state.codes[i]; - register_code(code); - unregister_code(code); - wait_ms (10); - } -} diff --git a/layouts/community/ergodox/algernon/readme.md b/layouts/community/ergodox/algernon/readme.md deleted file mode 100644 index a25018a7bc66..000000000000 --- a/layouts/community/ergodox/algernon/readme.md +++ /dev/null @@ -1,152 +0,0 @@ - - -algernon's layout -======================= - -This is the layout I used to use on my [ErgoDox EZ][ez], while I was using [QMK][qmk]. I no longer do so, and this repository is obsolete, and not updated anymore. My current firmware is based on [Kaleidoscope][kaleidoscope], and is located [elsewhere][ergodox-sketch]. I'm keeping the repo around for historical and educational purposes. - - [kaleidoscope]: https://github.com/keyboardio/Kaleidoscope - [ergodox-sketch]: https://git.madhouse-project.org/algernon/ErgoDox-sketch - -Nevertheless, this is an unconventional layout for the [ErgoDox EZ][ez]. For more details about the history of the layout, see my [blog posts about my ErgoDox journey][blog-ergodox]. - - [ez]: https://ergodox-ez.com/ - [blog-ergodox]: https://asylum.madhouse-project.org/blog/tags/ergodox/ - -Some of the things in the layout only work when one uses [Spacemacs][spacemacs] and [GNOME][gnome] under Linux. Your mileage may vary. - - [spacemacs]: http://spacemacs.org/ - [gnome]: https://www.gnome.org/ - -## Table of Contents - -* [Layouts](#layouts) - - [Base layer](#base-layer) - - [ADORE layer](#adore-layer) - - [Steno layer](#steno-layer) - - [LED states](#led-states) -* [Tools](#tools) - - [Heatmap](#heatmap) - - [Layer notification](#layer-notification) -* [Special features](#special-features) - - [Unicode Symbol Input](#unicode-symbol-input) -* [Building](#building) - - [Using on Windows](#using-on-windows) -* [Changelog](https://github.com/algernon/ergodox-layout/blob/master/NEWS.md#readme) -* [License](#license) - -# Layouts - -## Base layer - -[![Base layer](https://github.com/algernon/ergodox-layout/raw/master/images/base-layer.png)](http://www.keyboard-layout-editor.com/#/gists/28f7eb305fdbff943613e1dc7aa9e82b) - -At its core, this is a Dvorak layout, with some minor changes. The more interesting parts are how certain keys behave: - -* The number row is the same as in the [ADORE](#adore-layer) layer. The function keys are on the **Media** layer. -* The `Shift`, `Alt`, and `Control` modifiers are one-shot. When tapped, they are considered active for the next key press only. When double tapped, they toggle on, until a third, single tap sometime later. When held, they act as expected. My usual pattern is that I use these for the next keypress only, so this behaviour is perfect. If I need them held, I'll just double-tap. -* The `GUI` key is special, because while a single tap works as usual, when double-tapped, it turns the number row into an application selector, and when triple tapped, it runs an application selector program on the host. -* The `ESC` key also doubles as a one-shot cancel key: if tapped while any of the one-shot modifiers are in-flight (as in, single-tapped, and not expired yet), it cancels all one-shot modifiers. It also cancels the **Hun** layer, if active. Otherwise it sends the usual keycode. -* The **Media** and **Hun** layer keys are one-shot, the **STENO** key is a toggle. -* The **Fx** key is one-shot, and activates the **Media** layer, along with a one-shot `Alt`. -* When holding the `Tab`/**Arrow** key, the arrow layer activates while the key is held. Tapping the key produces the normal, `Tab` key. Double-tapping it toggles the **Arrow** layer on until a third tap. -* Tapping the `:` key once yields `:`, tapping it twice yields `;`. -* Tapping the `[{(`/`)}]` keys once yields `[` (or `{` when shifted), tapping them twice yields `(`. -* The **Lead** key allows me to type in a sequence of keys, and trigger some actions: - - `LEAD l` uses the unicode input method to enter a `λ`. - - `LEAD s` does a lot of magic to type in a shruggie: `¯\_(ツ)_/¯` - - `LEAD y` types `\o/`. - - `LEAD w m` maximises the currently focused window. - - `LEAD a` makes the [ADORE layer](#adore-layer) the default. - - `LEAD v` prints the firmware version, the keyboard and the keymap. - - `LEAD d` toggles logging keypress positions to the HID console. - - `LEAD t` toggles time travel. Figuring out the current `date` is left as an exercise to the reader. - - `LEAD u` enters the [Unicode symbol input](#unicode-symbol-input) mode. - - `LEAD r` inputs `Right Alt`, which is the `Compose` key of my choice. - -The symbols on the front in the image above have the same color as the key that activates them, with the exception of the **Arrow** layer, which is just black on the front. - -## ADORE layer - -[![ADORE layer](https://github.com/algernon/ergodox-layout/raw/master/images/adore-layer.png)](http://www.keyboard-layout-editor.com/#/gists/45681a17453d235925b6028dd83bf12a) - -My experimental layout, that I keep tweaking. No full description here, because things are very much in flux. - -Note that the **HUN** layer does not work well with ADORE: it still has the same layout as on the [Base](#base-layer) layer. This will remain until ADORE becomes the default. - -## Steno layer - -[![Steno layer for Plover](https://github.com/algernon/ergodox-layout/raw/master/images/steno-layer.png)](http://www.keyboard-layout-editor.com/#/gists/401ef9a84369e47c57f9aedcf0a0d667) - -This is to be used with [Plover](http://www.openstenoproject.org/plover/), nothing really fancy here. The **STENO** key toggles the layer on and off, and sends the toggle command to Plover too. - -## LED states - -The primary purpose of the LEDs is to show the modifier status, a secondary, to show which layer is active. Each modifier, `Shift`, `Alt` and `Control` each have their designated LEDs: the *red*, *green* and *blue*, respectively. When a modifier is in a one-shot state, the respective LED will turn on with a dimmer light. If the modifier is toggled on, the brightness of the LED turns full. - -For the layers, the following rules apply: - -* When the [ADORE layer](#adore-layer) is toggled on, LEDs will light up from left to right in a sequence, then turn off. When the layer is toggled off, the LEDs light up and turn off in the other direction. No LEDs are on while the layer is active. -* When the **Hungarian** layer is active, the *green* and *blue* LEDs are on. -* When the **Media** layer is active, the *red* and *green* ones are on. -* When the **ARROW** layer is active, the *red* and *blue* ones are on. -* For the [Steno layer](#steno-layer), all LEDs will be turned on. - -Unless noted otherwise, the layers use a dim light for the LEDs, while modifiers use a stronger one, and modifiers override any layer preferences. For example, when on the one-handed layer, with the left side active (*red* light blinking), if `Shift` is on, the *red* light will be constantly on. - -# Special features - -## Unicode Symbol Input - -Once in the Unicode Symbol Input mode, one is able to type in symbol names, press `Enter` or `Space`, and get the Unicode symbol itself back. When in the mode, a capital `U` is printed first. Once the sequence is finished, all of it is erased by sending enough `Backspace` taps, and the firmware starts the OS-specific unicode input sequence. Then, it looks up the symbol name, and enters the associated code. If it is not found, it will just replay the pressed keycodes. - -For the list of supported symbols, please see the source. - -This is an experimental feature, and may or may not work reliably. - -# Tools - -## Heatmap - -When the keypress logging functionality is enabled (by `LEAD d`), the keyboard will output a line every time a key is pressed, containing the position of the key in the matrix. This allows one to collect this information, and build analytics over it, such as a heat map, including dead keys too. - -Included with the firmware is a small tool that can parse these logs, and create a heatmap that one can import into [KLE][kle]. To use it, either pipe the output of `hid_listen` into it, or pipe it an already saved log, and it will save the results into files in an output directory (given on the command-line). See the output of `tools/log-to-heatmap.py --help` for more information. - - [kle]: http://www.keyboard-layout-editor.com/ - -The generated heatmap looks somewhat like this: - - ![Heatmap](https://github.com/algernon/ergodox-layout/raw/master/images/heatmap.png) - -## Layer notification - -There is a very small tool in `tools/layer-notify`, that listens to the HID console, looking for layer change events, and pops up a notification for every detected change. It is a very simple tool, mainly serving as an example. - -# Building - -To make my workflow easier, this layout is maintained in [its own repository][algernon:ez-layout]. To build it, you will need the [QMK][qmk] firmware checked out, and this repo either checked out to something like `layouts/community/algernon_master`, or symlinked there. One way to achieve that is this: - - [algernon:ez-layout]: https://github.com/algernon/ergodox-layout - [qmk]: https://github.com/qmk/qmk_firmware - -``` -$ git clone https://github.com/qmk/qmk_firmware.git -$ cd qmk_firmware -$ git clone https://github.com/algernon/ergodox-layout.git \ - layouts/community/ergodox/algernon_master -$ make ergodox_ez:algernon_master -``` - -From time to time, updates may be submitted back to the QMK repository. If you are reading it there, you can build the firmware like any other firmware included with it (assuming you are in the root directory of the firmware): - -``` -$ make ergodox_ez:algernon -``` - -## Using on Windows - -The keymap default to forcing NKRO, which seems to upset Windows, and except the modifiers, none of them work. If you experience this problem, recompile the firmware with `FORCE_NKRO=no` added to the `make` command line. - -# License - -The layout, being a derivative of the original TMK firmware which is under the GPL-2+, this layout is under the GPL as well, but GPL-3+, rather than the older version. diff --git a/layouts/community/ergodox/algernon/rules.mk b/layouts/community/ergodox/algernon/rules.mk deleted file mode 100644 index 1b4c0995f63e..000000000000 --- a/layouts/community/ergodox/algernon/rules.mk +++ /dev/null @@ -1,43 +0,0 @@ -BOOTMAGIC_ENABLE=no -COMMAND_ENABLE=no -SLEEP_LED_ENABLE=no -FORCE_NKRO ?= yes -DEBUG_ENABLE = no -CONSOLE_ENABLE = no -TAP_DANCE_ENABLE = yes -KEYLOGGER_ENABLE ?= yes -UCIS_ENABLE = yes -MOUSEKEY_ENABLE = no -LEADER_ENABLE = yes -RGBLIGHT_ENABLE = no - -AUTOLOG_ENABLE ?= yes - -ifeq (${FORCE_NKRO},yes) -OPT_DEFS += -DFORCE_NKRO -endif - -ifeq (${AUTOLOG_ENABLE},yes) -KEYLOGGER_ENABLE = yes -OPT_DEFS += -DAUTOLOG_ENABLE -endif - -ifeq (${KEYLOGGER_ENABLE},yes) -OPT_DEFS += -DKEYLOGGER_ENABLE -CONSOLE_ENABLE = yes -endif - -OPT_DEFS += -DUSER_PRINT - -LAYOUT_ergodox_VERSION = $(shell \ - if [ -d "${LAYOUT_ergodox_PATH}/.git" ]; then \ - cd "${LAYOUT_ergodox_PATH}" && git describe --abbrev=6 --dirty --always --tags --match 'v*' 2>/dev/null; \ - else echo QMK; fi) - -LAYOUT_ergodox_BRANCH = $(shell \ - if [ -d "${LAYOUT_ergodox_PATH}/.git" ]; then \ - cd "${LAYOUT_ergodox_PATH}"; \ - fi; \ - git rev-parse --abbrev-ref HEAD 2>/dev/null) - -OPT_DEFS += -DLAYOUT_ergodox_VERSION=\"$(LAYOUT_ergodox_VERSION)\\\#$(LAYOUT_ergodox_BRANCH)\" diff --git a/layouts/community/ergodox/algernon/tools/heatmap-layout.ADORE.json b/layouts/community/ergodox/algernon/tools/heatmap-layout.ADORE.json deleted file mode 100644 index e09efecc466d..000000000000 --- a/layouts/community/ergodox/algernon/tools/heatmap-layout.ADORE.json +++ /dev/null @@ -1,486 +0,0 @@ -[ - { - "backcolor": "#ffffff", - "name": "ErgoDox - algernon's layout: Heatmap", - "author": "Gergely Nagy ", - "notes": "See [here](https://github.com/algernon/ergodox-layout#readme) for the QMK keymap source.", - "switchMount": "cherry", - "switchBrand": "gateron", - "switchType": "KS-3-Tea", - "pcb": true, - "css": ".keyborder { -webkit-filter: blur(5px); filter: blur(5px); } .keytop { -webkit-filter: blur(10px); } .keylabels { border: 1px solid black; }" - }, - [ - { - "x": 3.5, - "fa": [ - 0, - 0, - 2 - ] - }, - "*\n5\nF5", - { - "x": 10.5, - "a": 4, - "fa": [ - 0, - 0, - 2 - ] - }, - "#\n4\nF4" - ], - [ - { - "y": -0.875, - "x": 2.5 - }, - "@\n7\nF7", - { - "x": 1 - }, - "^\n3\nF3", - { - "x": 8.5 - }, - "!\n2\nF2", - { - "x": 1 - }, - "&\n6\nF6" - ], - [ - { - "y": -0.875, - "x": 5.5 - }, - "$\n1\nF1", - { - "a": 7, - "f": 3 - }, - "F11", - { - "x": 4.5, - "f": 3 - }, - "Fx", - { - "a": 4, - "f": 3, - "fa": [ - 0, - 0, - 2 - ] - }, - "%\n0\nF10" - ], - [ - { - "y": -0.875, - "f": 9, - "a": 6, - "w": 1.5 - }, - "\n\n", - { - "f": 3, - "a": 4, - "fa": [ - 0, - 0, - 2 - ] - }, - " \n9\nF9", - { - "x": 14.5 - }, - " \n8\nF8", - { - "a": 7, - "w": 1.5 - }, - "STENO" - ], - [ - { - "y": -0.375, - "x": 3.5, - "a": 6 - }, - "C", - { - "x": 10.5 - }, - "L" - ], - [ - { - "y": -0.875, - "x": 2.5, - "a": 6 - }, - "W", - { - "x": 1, - "a": 6 - }, - "H", - { - "x": 8.5 - }, - "G", - { - "x": 1 - }, - "P" - ], - [ - { - "y": -0.875, - "x": 5.5 - }, - "F", - { - "a": 4, - "fa": [0, 0, 0], - "h": 1.5 - }, - "{\n(\n[", - { - "x": 4.5, - "h": 1.5 - }, - "}\n)\n]", - { - "a": 6 - }, - "M" - ], - [ - { - "y": -0.875, - "f": 3, - "a": 4, - "w": 1.5 - }, - "\n\n|\n\\", - { - "a": 6, - "f": 3 - }, - "X", - { - "x": 14.5, - "a": 4 - }, - "/\n?", - { - "a": 4, - "w": 1.5 - }, - "~\n`" - ], - [ - { - "y": -0.375, - "x": 3.5, - "a": 6 - }, - "E", - { - "x": 10.5 - }, - "T" - ], - [ - { - "y": -0.875, - "x": 2.5 - }, - "O", - { - "x": 1, - "n": true - }, - "I", - { - "x": 8.5, - "n": true - }, - "R", - { - "x": 1 - }, - "N" - ], - [ - { - "y": -0.875, - "x": 5.5 - }, - "U", - { - "x": 6.5 - }, - "D" - ], - [ - { - "y": -0.875, - "fa": [ - 6 - ], - "w": 1.5 - }, - "\n\nTab", - { - "f": 3 - }, - "A", - { - "x": 14.5, - "f": 3 - }, - "S", - { - "a": 4, - "fa": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 6 - ], - "w": 1.5 - }, - "+\n=" - ], - [ - { - "y": -0.625, - "x": 6.5, - "a": 7, - "f": 9, - "h": 1.5 - }, - "", - { - "x": 4.5, - "h": 1.5 - }, - "" - ], - [ - { - "y": -0.75, - "x": 3.5, - "a": 4, - "f": 3 - }, - "\"\n'", - { - "x": 10.5, - "a": 6, - "f": 3 - }, - "V" - ], - [ - { - "y": -0.875, - "x": 2.5, - "a": 6 - }, - "Q", - { - "x": 1, - "a": 4 - }, - "<\n,", - { - "x": 8.5, - "a": 6 - }, - "K", - { - "x": 1 - }, - "Y" - ], - [ - { - "y": -0.875, - "x": 5.5, - "a": 4 - }, - ">\n.", - { - "x": 6.5, - "a": 6 - }, - "B" - ], - [ - { - "y": -0.875, - "f": 9, - "w": 1.5, - "g": true - }, - "", - { - "a": 6, - "f": 3, - "g": false - }, - "Z", - { - "x": 14.5 - }, - "J", - { - "f": 9, - "g": true, - "w": 1.5, - "a": 4 - }, - "" - ], - [ - { - "y": -0.375, - "x": 3.5, - "g": true, - "a": 7, - "f": 3 - }, - "", - { - "x": 10.5 - }, - "" - ], - [ - { - "y": -0.875, - "x": 2.5 - }, - "", - { - "x": 1, - "g": false, - "a": 5 - }, - ";\n:", - { - "x": 8.5 - }, - "_\n-", - { - "x": 1, - "g": true, - "a": 7 - }, - "" - ], - [ - { - "y": -0.75, - "x": 0.5 - }, - "", - {}, - "", - { - "x": 14.5 - }, - "", - {}, - "" - ], - [ - { - "r": 30, - "rx": 6.5, - "ry": 4.25, - "y": -1, - "x": 1, - "g": false - }, - "Alt", - { - "a": 4, - "fa": [ - 0, - 0, - 0, - 9 - ] - }, - "\n\n\n" - ], - [ - { - "a": 7, - "f": 9, - "h": 2 - }, - "", - { - "h": 2 - }, - "", - { - "f": 3 - }, - "Ctrl" - ], - [ - { - "x": 2 - }, - "ESC" - ], - [ - { - "r": -30, - "rx": 13, - "y": -1, - "x": -3, - "f": 2 - }, - "MEDIA", - {}, - "DEL" - ], - [ - { - "x": -3 - }, - "HUN", - { - "f": 9, - "h": 2 - }, - "", - { - "f": 3, - "h": 2 - }, - "SPC" - ], - [ - { - "x": -3, - "f": 2 - }, - "LEAD" - ] -] diff --git a/layouts/community/ergodox/algernon/tools/heatmap-layout.Dvorak.json b/layouts/community/ergodox/algernon/tools/heatmap-layout.Dvorak.json deleted file mode 100644 index 1e53281c5655..000000000000 --- a/layouts/community/ergodox/algernon/tools/heatmap-layout.Dvorak.json +++ /dev/null @@ -1,477 +0,0 @@ -[ - { - "backcolor": "#ffffff", - "name": "ErgoDox - algernon's layout: Heatmap", - "author": "Gergely Nagy ", - "notes": "See [here](https://github.com/algernon/ergodox-layout#readme) for the QMK keymap source.", - "switchMount": "cherry", - "switchBrand": "gateron", - "switchType": "KS-3-Tea", - "pcb": true, - "css": ".keyborder { -webkit-filter: blur(5px); filter: blur(5px); } .keytop { -webkit-filter: blur(10px); } .keylabels { border: 1px solid black; }" - }, - [ - { - "x": 3.5, - "fa": [ - 0, - 0, - 2 - ] - }, - "*\n5\nF5", - { - "x": 10.5, - "a": 4, - "fa": [ - 0, - 0, - 2 - ] - }, - "#\n4\nF4" - ], - [ - { - "y": -0.875, - "x": 2.5 - }, - "@\n7\nF7", - { - "x": 1 - }, - "^\n3\nF3", - { - "x": 8.5 - }, - "!\n2\nF2", - { - "x": 1 - }, - "&\n6\nF6" - ], - [ - { - "y": -0.875, - "x": 5.5 - }, - "$\n1\nF1", - { - "a": 7, - "f": 3 - }, - "F11", - { - "x": 4.5, - "f": 3 - }, - "Fx", - { - "a": 4, - "f": 3, - "fa": [ - 0, - 0, - 2 - ] - }, - "%\n0\nF10" - ], - [ - { - "y": -0.875, - "f": 6, - "a": 6, - "w": 1.5 - }, - "\n\n", - { - "f": 3, - "a": 4, - "fa": [ - 0, - 0, - 2 - ] - - }, - " \n9\nF9", - { - "x": 14.5 - }, - " \n8\nF8", - { - "a": 7, - "w": 1.5 - }, - "STENO" - ], - [ - { - "y": -0.375, - "x": 3.5, - "a": 4 - }, - ">\n.", - { - "x": 10.5, - "a": 6 - }, - "C" - ], - [ - { - "y": -0.875, - "x": 2.5, - "a": 4 - }, - "<\n,", - { - "x": 1, - "a": 6 - }, - "P", - { - "x": 8.5 - }, - "G", - { - "x": 1 - }, - "R" - ], - [ - { - "y": -0.875, - "x": 5.5 - }, - "Y", - { - "a": 4, - "h": 1.5 - }, - "{\n(\n[", - { - "x": 4.5, - "h": 1.5 - }, - "}\n)\n]", - { - "a": 6 - }, - "F" - ], - [ - { - "y": -0.875, - "f": 3, - "a": 4, - "w": 1.5 - }, - "\n\n~\n`", - { - "a": 4, - "f": 3 - }, - "\"\n'", - { - "x": 14.5, - "a": 6 - }, - "L", - { - "a": 4, - "w": 1.5 - }, - "|\n\\" - ], - [ - { - "y": -0.375, - "x": 3.5, - "a": 6 - }, - "E", - { - "x": 10.5 - }, - "T" - ], - [ - { - "y": -0.875, - "x": 2.5 - }, - "O", - { - "x": 1, - "n": true - }, - "U", - { - "x": 8.5, - "n": true - }, - "H", - { - "x": 1 - }, - "N" - ], - [ - { - "y": -0.875, - "x": 5.5 - }, - "I", - { - "x": 6.5 - }, - "D" - ], - [ - { - "y": -0.875, - "fa": [ - 6 - ], - "w": 1.5 - }, - "\n\nTab", - { - "f": 3 - }, - "A", - { - "x": 14.5, - "f": 3 - }, - "S", - { - "a": 4, - "fa": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 6 - ], - "w": 1.5 - }, - "+\n=" - ], - [ - { - "y": -0.625, - "x": 6.5, - "a": 7, - "f": 9, - "h": 1.5 - }, - "", - { - "x": 4.5, - "h": 1.5 - }, - "" - ], - [ - { - "y": -0.75, - "x": 3.5, - "f": 3, - "a": 6 - }, - "J", - { - "x": 10.5 - }, - "W" - ], - [ - { - "y": -0.875, - "x": 2.5 - }, - "Q", - { - "x": 1 - }, - "K", - { - "x": 8.5 - }, - "M", - { - "x": 1 - }, - "V" - ], - [ - { - "y": -0.875, - "x": 5.5 - }, - "X", - { - "x": 6.5 - }, - "B" - ], - [ - { - "y": -0.875, - "f": 9, - "w": 1.5 - }, - "\n\n", - { - "a": 4, - "f": 3 - }, - "?\n/", - { - "x": 14.5, - "a": 6 - }, - "Z", - { - "f": 9, - "w": 1.5 - }, - "" - ], - [ - { - "y": -0.375, - "x": 3.5, - "g": true, - "a": 7, - "f": 3 - }, - "", - { - "x": 10.5 - }, - "" - ], - [ - { - "y": -0.875, - "x": 2.5 - }, - "", - { - "x": 1, - "g": false, - "a": 5 - }, - ";\n:", - { - "x": 8.5 - }, - "_\n-", - { - "x": 1, - "g": true, - "a": 7 - }, - "" - ], - [ - { - "y": -0.75, - "x": 0.5 - }, - "", - {}, - "", - { - "x": 14.5 - }, - "", - {}, - "" - ], - [ - { - "r": 30, - "rx": 6.5, - "ry": 4.25, - "y": -1, - "x": 1, - "g": false - }, - "Alt", - { - "a": 4, - "fa": [ - 0, - 0, - 0, - 9 - ] - }, - "\n\n\n" - ], - [ - { - "a": 7, - "f": 9, - "h": 2 - }, - "", - { - "h": 2 - }, - "", - { - "f": 3 - }, - "Ctrl" - ], - [ - { - "x": 2 - }, - "ESC" - ], - [ - { - "r": -30, - "rx": 13, - "y": -1, - "x": -3, - "f": 2 - }, - "MEDIA", - {}, - "DEL" - ], - [ - { - "x": -3 - }, - "LEAD", - { - "f": 9, - "h": 2 - }, - "", - { - "f": 3, - "h": 2 - }, - "SPC" - ], - [ - { - "x": -3, - "f": 2 - }, - "HUN" - ] -] diff --git a/layouts/community/ergodox/algernon/tools/hid-commands b/layouts/community/ergodox/algernon/tools/hid-commands deleted file mode 100755 index 86bff2978ea9..000000000000 --- a/layouts/community/ergodox/algernon/tools/hid-commands +++ /dev/null @@ -1,113 +0,0 @@ -#!/bin/bash -set -e - -LAST_APPSEL_START=0 - -cmd_wm () { - WIN="$(xdotool getactivewindow)" - wmctrl -i -r ${WIN} -b remove,maximized_vert,maximized_horz - xdotool windowsize ${WIN} 100% 100% - wmctrl -i -r ${WIN} -b add,maximized_vert,maximized_horz -} - -cmd_appsel_helper () { - rofi -show window -} - -_cmd_appsel () { - wmctrl -x -a $1 || true - xdotool key Escape -} - -cmd_appsel_music () { - wmctrl -x -a rhythmbox || wmctrl -x -a spotify || \ - wmctrl -x -a banshee || wmctrl -x -a kodi || \ - wmctrl -x -a plex || true - xdotool key Escape -} - -cmd_appsel_slack () { - wmctrl -x -a slack || wmctrl -x -a Mstdn || true - xdotool key Escape -} - -cmd_appsel_emacs () { - _cmd_appsel emacs -} - -cmd_appsel_term () { - _cmd_appsel gnome-terminal -} - -cmd_appsel_chrome () { - wmctrl -x -a chrom || wmctrl -x -a Chrome || true - xdotool key Escape -} - -cmd_appsel_start () { - if [ ! -z "${DISABLE_APPSEL_START}" ]; then - return - fi - - APPSEL_START=$(date +%s) - if [ $APPSEL_START -lt $(expr $LAST_APPSEL_START + 10) ]; then - return - fi - LAST_APPSEL_START=$APPSEL_START - notify-send -t 1000 "Please select an application!" -c device -u low \ - -i /usr/share/icons/Adwaita/24x24/devices/video-display.png -} - -cmd_appsel_social () { - # Save the current window - a=$(xdotool getactivewindow) - # Raise & Focus Mstdn & Tweetdeck - wmctrl -x -a trunk.mad-scientist.club.Google-chrome || true; wmctrl -x -a tweetdeck || true - # Focus the previously active window - xdotool windowfocus $a || true; xdotool windowactivate $a || true - - xdotool key Escape -} - -cmd_appsel_social2 () { - # Save the current window - a=$(xdotool getactivewindow) - # Raise & Focus Viber & Signal - wmctrl -x -a Viber || true; wmctrl -a Signal || true - # Focus the previously active window - xdotool windowfocus $a || true; xdotool windowactivate $a || true - - xdotool key Escape -} - -cmd_appsel_pwmgr () { - _cmd_appsel keepass -} - -cmd_reflash () { - teensy_loader_cli -v -w ~/src/ext/qmk_firmware/algernon.hex --mcu atmega32u4 || true -} - -cmd_help () { - cat </dev/null 2>&1; then - cmd_${cmd} - fi -done diff --git a/layouts/community/ergodox/algernon/tools/log-to-heatmap.py b/layouts/community/ergodox/algernon/tools/log-to-heatmap.py deleted file mode 100755 index e927e0e39d4c..000000000000 --- a/layouts/community/ergodox/algernon/tools/log-to-heatmap.py +++ /dev/null @@ -1,344 +0,0 @@ -#! /usr/bin/env python3 -import json -import os -import sys -import re -import argparse -import time - -from math import floor -from os.path import dirname -from subprocess import Popen, PIPE, STDOUT -from blessings import Terminal - -class Heatmap(object): - coords = [ - [ - # Row 0 - [ 4, 0], [ 4, 2], [ 2, 0], [ 1, 0], [ 2, 2], [ 3, 0], [ 3, 2], - [ 3, 4], [ 3, 6], [ 2, 4], [ 1, 2], [ 2, 6], [ 4, 4], [ 4, 6], - ], - [ - # Row 1 - [ 8, 0], [ 8, 2], [ 6, 0], [ 5, 0], [ 6, 2], [ 7, 0], [ 7, 2], - [ 7, 4], [ 7, 6], [ 6, 4], [ 5, 2], [ 6, 6], [ 8, 4], [ 8, 6], - ], - [ - # Row 2 - [12, 0], [12, 2], [10, 0], [ 9, 0], [10, 2], [11, 0], [ ], - [ ], [11, 2], [10, 4], [ 9, 2], [10, 6], [12, 4], [12, 6], - ], - [ - # Row 3 - [17, 0], [17, 2], [15, 0], [14, 0], [15, 2], [16, 0], [13, 0], - [13, 2], [16, 2], [15, 4], [14, 2], [15, 6], [17, 4], [17, 6], - ], - [ - # Row 4 - [20, 0], [20, 2], [19, 0], [18, 0], [19, 2], [], [], [], [], - [19, 4], [18, 2], [19, 6], [20, 4], [20, 6], [], [], [], [] - ], - [ - # Row 5 - [ ], [23, 0], [22, 2], [22, 0], [22, 4], [21, 0], [21, 2], - [24, 0], [24, 2], [25, 0], [25, 4], [25, 2], [26, 0], [ ], - ], - ] - - def set_attr_at(self, block, n, attr, fn, val): - blk = self.heatmap[block][n] - if attr in blk: - blk[attr] = fn(blk[attr], val) - else: - blk[attr] = fn(None, val) - - def coord(self, col, row): - return self.coords[row][col] - - @staticmethod - def set_attr(orig, new): - return new - - def set_bg(self, coords, color): - (block, n) = coords - self.set_attr_at(block, n, "c", self.set_attr, color) - #self.set_attr_at(block, n, "g", self.set_attr, False) - - def set_tap_info(self, coords, count, cap): - (block, n) = coords - def _set_tap_info(o, _count, _cap): - ns = 4 - o.count ("\n") - return o + "\n" * ns + "%.02f%%" % (float(_count) / float(_cap) * 100) - - if not cap: - cap = 1 - self.heatmap[block][n + 1] = _set_tap_info (self.heatmap[block][n + 1], count, cap) - - @staticmethod - def heatmap_color (v): - colors = [ [0.3, 0.3, 1], [0.3, 1, 0.3], [1, 1, 0.3], [1, 0.3, 0.3]] - fb = 0 - if v <= 0: - idx1, idx2 = 0, 0 - elif v >= 1: - idx1, idx2 = len(colors) - 1, len(colors) - 1 - else: - val = v * (len(colors) - 1) - idx1 = int(floor(val)) - idx2 = idx1 + 1 - fb = val - float(idx1) - - r = (colors[idx2][0] - colors[idx1][0]) * fb + colors[idx1][0] - g = (colors[idx2][1] - colors[idx1][1]) * fb + colors[idx1][1] - b = (colors[idx2][2] - colors[idx1][2]) * fb + colors[idx1][2] - - r, g, b = [x * 255 for x in (r, g, b)] - return "#%02x%02x%02x" % (int(r), int(g), int(b)) - - def __init__(self, layout): - self.log = {} - self.total = 0 - self.max_cnt = 0 - self.layout = layout - - def update_log(self, coords): - (c, r) = coords - if not (c, r) in self.log: - self.log[(c, r)] = 0 - self.log[(c, r)] = self.log[(c, r)] + 1 - self.total = self.total + 1 - if self.max_cnt < self.log[(c, r)]: - self.max_cnt = self.log[(c, r)] - - def get_heatmap(self): - with open("%s/heatmap-layout.%s.json" % (dirname(sys.argv[0]), self.layout), "r") as f: - self.heatmap = json.load (f) - - ## Reset colors - for row in self.coords: - for coord in row: - if coord != []: - self.set_bg (coord, "#d9dae0") - - for (c, r) in self.log: - coords = self.coord(c, r) - b, n = coords - cap = self.max_cnt - if cap == 0: - cap = 1 - v = float(self.log[(c, r)]) / cap - self.set_bg (coords, self.heatmap_color (v)) - self.set_tap_info (coords, self.log[(c, r)], self.total) - return self.heatmap - - def get_stats(self): - usage = [ - # left hand - [0, 0, 0, 0, 0], - # right hand - [0, 0, 0, 0, 0] - ] - finger_map = [0, 0, 1, 2, 3, 3, 3, 1, 1, 1, 2, 3, 4, 4] - for (c, r) in self.log: - if r == 5: # thumb cluster - if c <= 6: # left side - usage[0][4] = usage[0][4] + self.log[(c, r)] - else: - usage[1][0] = usage[1][0] + self.log[(c, r)] - elif r == 4 and (c == 4 or c == 9): # bottom row thumb keys - if c <= 6: # left side - usage[0][4] = usage[0][4] + self.log[(c, r)] - else: - usage[1][0] = usage[1][0] + self.log[(c, r)] - else: - fc = c - hand = 0 - if fc >= 7: - hand = 1 - fm = finger_map[fc] - usage[hand][fm] = usage[hand][fm] + self.log[(c, r)] - hand_usage = [0, 0] - for f in usage[0]: - hand_usage[0] = hand_usage[0] + f - for f in usage[1]: - hand_usage[1] = hand_usage[1] + f - - total = self.total - if total == 0: - total = 1 - stats = { - "total-keys": total, - "hands": { - "left": { - "usage": round(float(hand_usage[0]) / total * 100, 2), - "fingers": { - "pinky": 0, - "ring": 0, - "middle": 0, - "index": 0, - "thumb": 0, - } - }, - "right": { - "usage": round(float(hand_usage[1]) / total * 100, 2), - "fingers": { - "thumb": 0, - "index": 0, - "middle": 0, - "ring": 0, - "pinky": 0, - } - }, - } - } - - hmap = ['left', 'right'] - fmap = ['pinky', 'ring', 'middle', 'index', 'thumb', - 'thumb', 'index', 'middle', 'ring', 'pinky'] - for hand_idx in range(len(usage)): - hand = usage[hand_idx] - for finger_idx in range(len(hand)): - stats['hands'][hmap[hand_idx]]['fingers'][fmap[finger_idx + hand_idx * 5]] = round(float(hand[finger_idx]) / total * 100, 2) - return stats - -def dump_all(out_dir, heatmaps): - stats = {} - t = Terminal() - t.clear() - sys.stdout.write("\x1b[2J\x1b[H") - - print ('{t.underline}{outdir}{t.normal}\n'.format(t=t, outdir=out_dir)) - - keys = list(heatmaps.keys()) - keys.sort() - - for layer in keys: - if len(heatmaps[layer].log) == 0: - continue - - with open ("%s/%s.json" % (out_dir, layer), "w") as f: - json.dump(heatmaps[layer].get_heatmap(), f) - stats[layer] = heatmaps[layer].get_stats() - - left = stats[layer]['hands']['left'] - right = stats[layer]['hands']['right'] - - print ('{t.bold}{layer}{t.normal} ({total:,} taps):'.format(t=t, layer=layer, - total=int(stats[layer]['total-keys'] / 2))) - print (('{t.underline} | ' + \ - 'left ({l[usage]:6.2f}%) | ' + \ - 'right ({r[usage]:6.2f}%) |{t.normal}').format(t=t, l=left, r=right)) - print ((' {t.bright_magenta}pinky{t.white} | {left[pinky]:6.2f}% | {right[pinky]:6.2f}% |\n' + \ - ' {t.bright_cyan}ring{t.white} | {left[ring]:6.2f}% | {right[ring]:6.2f}% |\n' + \ - ' {t.bright_blue}middle{t.white} | {left[middle]:6.2f}% | {right[middle]:6.2f}% |\n' + \ - ' {t.bright_green}index{t.white} | {left[index]:6.2f}% | {right[index]:6.2f}% |\n' + \ - ' {t.bright_red}thumb{t.white} | {left[thumb]:6.2f}% | {right[thumb]:6.2f}% |\n' + \ - '').format(left=left['fingers'], right=right['fingers'], t=t)) - -def process_line(line, heatmaps, opts, stamped_log = None): - m = re.search ('KL: col=(\d+), row=(\d+), pressed=(\d+), layer=(.*)', line) - if not m: - return False - if stamped_log is not None: - if line.startswith("KL:"): - print ("%10.10f %s" % (time.time(), line), - file = stamped_log, end = '') - else: - print (line, - file = stamped_log, end = '') - stamped_log.flush() - - (c, r, l) = (int(m.group (2)), int(m.group (1)), m.group (4)) - if (c, r) not in opts.allowed_keys: - return False - - heatmaps[l].update_log ((c, r)) - - return True - -def setup_allowed_keys(opts): - if len(opts.only_key): - incmap={} - for v in opts.only_key: - m = re.search ('(\d+),(\d+)', v) - if not m: - continue - (c, r) = (int(m.group(1)), int(m.group(2))) - incmap[(c, r)] = True - else: - incmap={} - for r in range(0, 6): - for c in range(0, 14): - incmap[(c, r)] = True - - for v in opts.ignore_key: - m = re.search ('(\d+),(\d+)', v) - if not m: - continue - (c, r) = (int(m.group(1)), int(m.group(2))) - del(incmap[(c, r)]) - - return incmap - -def main(opts): - heatmaps = {"Dvorak": Heatmap("Dvorak"), - "ADORE": Heatmap("ADORE") - } - cnt = 0 - out_dir = opts.outdir - - if not os.path.exists(out_dir): - os.makedirs(out_dir) - - opts.allowed_keys = setup_allowed_keys(opts) - - if not opts.one_shot: - - try: - with open("%s/stamped-log" % out_dir, "r") as f: - while True: - line = f.readline() - if not line: - break - if not process_line(line, heatmaps, opts): - continue - except: - pass - - stamped_log = open ("%s/stamped-log" % (out_dir), "a+") - else: - stamped_log = None - - while True: - line = sys.stdin.readline() - if not line: - break - if not process_line(line, heatmaps, opts, stamped_log): - continue - - cnt = cnt + 1 - - if opts.dump_interval != -1 and cnt >= opts.dump_interval and not opts.one_shot: - cnt = 0 - dump_all(out_dir, heatmaps) - - dump_all (out_dir, heatmaps) - -if __name__ == "__main__": - parser = argparse.ArgumentParser (description = "keylog to heatmap processor") - parser.add_argument ('outdir', action = 'store', - help = 'Output directory') - parser.add_argument ('--dump-interval', dest = 'dump_interval', action = 'store', type = int, - default = 100, help = 'Dump stats and heatmap at every Nth event, -1 for dumping at EOF only') - parser.add_argument ('--ignore-key', dest = 'ignore_key', action = 'append', type = str, - default = [], help = 'Ignore the key at position (x, y)') - parser.add_argument ('--only-key', dest = 'only_key', action = 'append', type = str, - default = [], help = 'Only include key at position (x, y)') - parser.add_argument ('--one-shot', dest = 'one_shot', action = 'store_true', - help = 'Do not load previous data, and do not update it, either.') - args = parser.parse_args() - if len(args.ignore_key) and len(args.only_key): - print ("--ignore-key and --only-key are mutually exclusive, please only use one of them!", - file = sys.stderr) - sys.exit(1) - main(args) diff --git a/layouts/community/ergodox/algernon/tools/text-to-log.py b/layouts/community/ergodox/algernon/tools/text-to-log.py deleted file mode 100755 index f080c32cd0d9..000000000000 --- a/layouts/community/ergodox/algernon/tools/text-to-log.py +++ /dev/null @@ -1,107 +0,0 @@ -#!/usr/bin/env python3 - -import os -import sys - -charmap = { - '9': [[1, 0]], - '7': [[2, 0]], '@': [[2, 5], [2, 0]], - '5': [[3, 0]], '*': [[2, 5], [3, 0]], - '3': [[4, 0]], '^': [[2, 5], [4, 0]], - '1': [[5, 0]], '$': [[2, 5], [5, 0]], - '0': [[8, 0]], '%': [[2, 5], [8, 0]], - '2': [[9, 0]], '!': [[2, 5], [9, 0]], - '4': [[10, 0]], '#': [[2, 5], [10, 0]], - '6': [[11, 0]], '&': [[2, 5], [11, 0]], - '8': [[12, 0]], - - '\\': [[0, 1]], '|': [[2, 5], [0, 1]], - 'x': [[1, 1]], 'X': [[2, 5], [1, 1]], - 'w': [[2, 1]], 'W': [[2, 5], [2, 1]], - 'c': [[3, 1]], 'C': [[2, 5], [3, 1]], - 'h': [[4, 1]], 'H': [[2, 5], [4, 1]], - 'f': [[5, 1]], 'F': [[2, 5], [5, 1]], - '[': [[6, 1]], '{': [[2, 5], [6, 1]], '(': [[6, 1], [6, 1]], - ']': [[7, 1]], '}': [[2, 5], [7, 1]], ')': [[7, 1], [7, 1]], - 'm': [[8, 1]], 'M': [[2, 5], [8, 1]], - 'g': [[9, 1]], 'G': [[2, 5], [9, 1]], - 'l': [[10, 1]], 'L': [[2, 5], [10, 1]], - 'p': [[11, 1]], 'P': [[2, 5], [11, 1]], - '/': [[12, 1]], '?': [[2, 5], [12, 1]], - '`': [[13, 1]], '~': [[2, 5], [13, 1]], - - '\t': [[0, 2]], - 'a': [[1, 2]], 'A': [[2, 5], [1, 2]], - 'o': [[2, 2]], 'O': [[2, 5], [2, 2]], - 'e': [[3, 2]], 'E': [[2, 5], [3, 2]], - 'i': [[4, 2]], 'I': [[2, 5], [4, 2]], - 'u': [[5, 2]], 'U': [[2, 5], [5, 2]], - 'd': [[8, 2]], 'D': [[2, 5], [8, 2]], - 'r': [[9, 2]], 'R': [[2, 5], [9, 2]], - 't': [[10, 2]], 'T': [[2, 5], [10, 2]], - 'n': [[11, 2]], 'N': [[2, 5], [11, 2]], - 's': [[12, 2]], 'S': [[2, 5], [12, 2]], - '=': [[13, 2]], '+': [[2, 5], [13, 2]], - - 'z': [[1, 3]], 'Z': [[2, 5], [1, 3]], - 'q': [[2, 3]], 'Q': [[2, 5], [2, 3]], - '\'': [[3, 3]], '"': [[2, 5], [3, 3]], - ',': [[4, 3]], '<': [[2, 5], [4, 3]], - '.': [[5, 3]], '>': [[2, 5], [5, 3]], - 'b': [[8, 3]], 'B': [[2, 5], [8, 3]], - 'k': [[9, 3]], 'K': [[2, 5], [9, 3]], - 'v': [[10, 3]], 'V': [[2, 5], [10, 3]], - 'y': [[11, 3]], 'Y': [[2, 5], [11, 3]], - 'j': [[12, 3]], 'J': [[2, 5], [12, 3]], - - ':': [[4, 4]], ';': [[4, 4], [4, 4]], - '-': [[9, 4]], '_': [[2, 5], [9, 4]], - - ' ': [[10, 5]], - '\n': [[11, 5]], - - ## Layered things - # Hungarian - 'á': [[9, 5], [1, 2]], 'Á': [[2, 5], [9, 5], [1, 2]], - 'ó': [[9, 5], [2, 2]], 'Ó': [[2, 5], [9, 5], [2, 2]], - 'ő': [[9, 5], [2, 1]], 'Ő': [[2, 5], [9, 5], [2, 1]], - 'ö': [[9, 5], [2, 3]], 'Ö': [[2, 5], [9, 5], [2, 3]], - 'é': [[9, 5], [3, 2]], 'É': [[2, 5], [9, 5], [3, 2]], - 'ú': [[9, 5], [4, 2]], 'Ú': [[2, 5], [9, 5], [4, 2]], - 'ű': [[9, 5], [4, 1]], 'Ű': [[2, 5], [9, 5], [4, 1]], - 'ü': [[9, 5], [4, 3]], 'Ü': [[2, 5], [9, 5], [4, 3]], - 'í': [[9, 5], [5, 2]], 'Í': [[2, 5], [9, 5], [5, 2]], -} - -def lookup_char(layer, ch): - if ch in charmap: - return charmap[ch] - return None - -def process_char(layer, ch, out=sys.stdout): - keys = lookup_char(layer, ch) - if not keys: - print ("Unknown char: %s" % ch, file=sys.stderr) - else: - for (c, r) in keys: - print ("KL: col=%d, row=%d, pressed=1, layer=%s" % (r, c, layer), file=out) - print ("KL: col=%d, row=%d, pressed=0, layer=%s" % (r, c, layer), file=out) - -def process_file(fn, layer, out=sys.stdout): - with open(fn, "r") as f: - ch = f.read(1) - while ch: - process_char(layer, ch, out) - ch = f.read(1) - -if sys.argv[1] == '-': - out='/dev/stdin' -else: - out=sys.argv[1] - -if len(sys.argv) >= 2: - layer = 'ADORE' -else: - layer = sys.argv[2] - -process_file(out, layer = layer) diff --git a/layouts/community/ergodox/belak/keymap.c b/layouts/community/ergodox/belak/keymap.c index bca0dec913fd..de0fe1b1aef3 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 b92890a668a3..000000000000 --- 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 . -*/ - -// 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/bepo/keymap.c b/layouts/community/ergodox/bepo/keymap.c index 6ea8cba681ab..4090721d0927 100644 --- a/layouts/community/ergodox/bepo/keymap.c +++ b/layouts/community/ergodox/bepo/keymap.c @@ -37,19 +37,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [BEPO] = LAYOUT_ergodox( // Left hand -BP_DOLLAR, BP_DQOT, BP_LGIL, BP_RGIL, BP_LPRN, BP_RPRN, KC_DEL, -BP_PERCENT, BP_B, BP_E_ACUTE, BP_P, BP_O, BP_E_GRAVE, KC_BSPC, -BP_W, BP_A, BP_U, BP_I, BP_E, BP_COMMA, -BP_ECRC, BP_A_GRAVE, BP_Y, BP_X, BP_DOT, BP_K, KC_TAB, +BP_DLR, BP_DQUO, BP_LDAQ, BP_RDAQ, BP_LPRN, BP_RPRN, KC_DEL, +BP_PERC, BP_B, BP_EACU, BP_P, BP_O, BP_EGRV, KC_BSPC, +BP_W, BP_A, BP_U, BP_I, BP_E, BP_COMM, +BP_ECIR, BP_AGRV, BP_Y, BP_X, BP_DOT, BP_K, KC_TAB, KC_ESC, KC_INS, KC_LGUI, KC_LCTL, KC_LALT, DF(BEPO), DF(QW_B), MO(NUMK), KC_SPC, KC_LSHIFT, MO(FNAV), // Right hand - KC_SLCK, BP_AT, BP_PLUS, BP_MINUS, BP_SLASH, BP_ASTR, BP_EQUAL, - KC_CAPSLOCK, BP_DCRC, BP_V, BP_D, BP_L, BP_J, BP_Z, + KC_SLCK, BP_AT, BP_PLUS, BP_MINS, BP_SLSH, BP_ASTR, BP_EQL, + KC_CAPSLOCK, BP_DCIR, BP_V, BP_D, BP_L, BP_J, BP_Z, BP_C, BP_T, BP_S, BP_R, BP_N, BP_M, - KC_NUMLOCK, BP_APOS, BP_Q, BP_G, BP_H, BP_F, BP_CCED, + KC_NUMLOCK, BP_QUOT, BP_Q, BP_G, BP_H, BP_F, BP_CCED, KC_ALGR, KC_RCTL, KC_RGUI, KC_PSCREEN, KC_PAUSE, DF(AZ_B), DF(BEPO), MO(NUMK), @@ -74,7 +74,7 @@ MO(FNAV), KC_RSHIFT, KC_ENTER), */ [QW_B] = LAYOUT_ergodox( // Left hand -KC_DOLLAR, S(KC_QUOT), S(KC_COMM), S(KC_DOT), KC_LPRN, KC_RPRN, KC_DEL, +KC_DOLLAR, S(KC_DQUO), S(KC_COMM), S(KC_DOT), KC_LPRN, KC_RPRN, KC_DEL, KC_PERCENT, KC_B, KC_E, KC_P, KC_O, KC_E, KC_BSPC, KC_W, KC_A, KC_U, KC_I, KC_E, KC_COMMA, KC_E, KC_A, KC_Y, KC_X, KC_DOT, KC_K, KC_TAB, @@ -86,7 +86,7 @@ KC_ESC, KC_INS, KC_LGUI, KC_LCTL, KC_LALT, KC_SLCK, KC_AT, KC_PLUS, KC_MINUS, KC_SLASH, KC_ASTR, KC_EQUAL, KC_CAPSLOCK, KC_CIRC, KC_V, KC_D, KC_L, KC_J, KC_Z, KC_C, KC_T, KC_S, KC_R, KC_N, KC_M, - KC_NUMLOCK, KC_QUOT, KC_Q, KC_G, KC_H, KC_F, KC_C, + KC_NUMLOCK, KC_DQUO, KC_Q, KC_G, KC_H, KC_F, KC_C, MO(QW_A), KC_RCTL, KC_RGUI, KC_PSCREEN, KC_PAUSE, KC_TRNS, KC_TRNS, KC_TRNS, @@ -111,7 +111,7 @@ KC_TRNS, MO(QW_S), KC_ENTER), */ [QW_A] = LAYOUT_ergodox( // Left hand -KC_DOLLAR, S(KC_QUOT), S(KC_COMM), S(KC_DOT), KC_LBRC, KC_RBRC, KC_DEL, +KC_DOLLAR, S(KC_DQUO), S(KC_COMM), S(KC_DOT), KC_LBRC, KC_RBRC, KC_DEL, KC_PERCENT, KC_PIPE, KC_E, KC_AMPR, KC_O, KC_E, KC_BSPC, KC_W, KC_A, KC_U, KC_I, RALT(KC_5), KC_COMMA, KC_E, KC_BSLASH, KC_LCBR, KC_RCBR, KC_DOT, KC_TILDE, KC_TAB, @@ -123,7 +123,7 @@ KC_ESC, KC_INS, KC_LGUI, KC_LCTL, KC_LALT, KC_SLCK, KC_AT, KC_PLUS, KC_MINUS, KC_SLASH, KC_ASTR, KC_EQUAL, KC_CAPSLOCK, KC_CIRC, KC_V, KC_D, KC_L, KC_J, KC_Z, KC_C, KC_T, KC_S, KC_R, KC_N, KC_M, - KC_NUMLOCK, KC_QUOT, KC_Q, KC_G, KC_H, KC_F, KC_C, + KC_NUMLOCK, KC_DQUO, KC_Q, KC_G, KC_H, KC_F, KC_C, KC_TRNS, KC_RCTL, KC_RGUI, KC_PSCREEN, KC_PAUSE, KC_TRNS, KC_TRNS, KC_TRNS, @@ -185,7 +185,7 @@ KC_TRNS, KC_TRNS, KC_TRNS), */ [AZ_B] = LAYOUT_ergodox( // Left hand -FR_DLR, FR_QUOT, FR_LESS, FR_GRTR, FR_LPRN, FR_RPRN, KC_DEL, +FR_DLR, FR_DQUO, FR_LABK, FR_RABK, FR_LPRN, FR_RPRN, KC_DEL, FR_PERC, KC_B, FR_EACU, KC_P, KC_O, FR_EGRV, KC_BSPC, FR_W, FR_A, KC_U, KC_I, KC_E, FR_COMM, KC_E, FR_AGRV, KC_Y, KC_X, FR_DOT, KC_K, KC_TAB, @@ -197,7 +197,7 @@ KC_ESC, KC_INS, KC_LGUI, KC_LCTL, KC_LALT, KC_SLCK, FR_AT, FR_PLUS, FR_MINS, FR_SLSH, FR_ASTR, FR_EQL, KC_CAPSLOCK, KC_LBRC, KC_V, KC_D, KC_L, KC_J, FR_Z, KC_C, KC_T, KC_S, KC_R, KC_N, FR_M, - KC_NUMLOCK, FR_APOS, FR_Q, KC_G, KC_H, KC_F, FR_CCED, + KC_NUMLOCK, FR_QUOT, FR_Q, KC_G, KC_H, KC_F, FR_CCED, MO(AZ_A), KC_RCTL, KC_RGUI, KC_PSCREEN, KC_PAUSE, KC_TRNS, KC_TRNS, KC_TRNS, @@ -222,8 +222,8 @@ KC_TRNS, MO(AZ_S), KC_ENTER), */ [AZ_A] = LAYOUT_ergodox( // Left hand -FR_DLR, FR_QUOT, FR_LESS, FR_GRTR, FR_LBRC, FR_RBRC, KC_DEL, -FR_PERC, FR_PIPE, FR_EACU, FR_AMP, KC_O, FR_EGRV, KC_BSPC, +FR_DLR, FR_DQUO, FR_LABK, FR_RABK, FR_LBRC, FR_RBRC, KC_DEL, +FR_PERC, FR_PIPE, FR_EACU, FR_AMPR, KC_O, FR_EGRV, KC_BSPC, FR_W, FR_A, FR_UGRV, S(KC_LBRC), FR_EURO, FR_COMM, FR_SLSH, FR_BSLS, FR_LCBR, FR_RCBR, FR_DOT, FR_TILD, KC_TAB, KC_ESC, KC_INS, KC_LGUI, KC_LCTL, KC_LALT, @@ -234,7 +234,7 @@ KC_ESC, KC_INS, KC_LGUI, KC_LCTL, KC_LALT, KC_SLCK, FR_AT, FR_PLUS, FR_MINS, FR_SLSH, FR_ASTR, FR_EQL, KC_CAPSLOCK, KC_LBRC, KC_V, KC_D, KC_L, KC_J, FR_Z, KC_C, KC_T, KC_S, KC_R, KC_N, FR_M, - KC_NUMLOCK, FR_APOS, FR_Q, KC_G, KC_H, KC_F, FR_CCED, + KC_NUMLOCK, FR_QUOT, FR_Q, KC_G, KC_H, KC_F, FR_CCED, KC_TRNS, KC_RCTL, KC_RGUI, KC_PSCREEN, KC_PAUSE, KC_TRNS, KC_TRNS, KC_TRNS, @@ -268,7 +268,7 @@ S(KC_ESC), S(KC_INS), S(KC_LGUI), S(KC_LCTL), S(KC_LALT), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, // Right hand - KC_TRNS, FR_6, FR_7, FR_8, FR_9, FR_0, FR_OVRR, + KC_TRNS, FR_6, FR_7, FR_8, FR_9, FR_0, FR_DEG, KC_TRNS, FR_EXLM, S(KC_V), S(KC_D), S(KC_L), S(KC_J), S(FR_Z), S(KC_C), S(KC_T), S(KC_S), S(KC_R), S(KC_N), S(FR_M), KC_TRNS, FR_QUES, S(FR_Q), S(KC_G), S(KC_H), S(KC_F), S(KC_C), diff --git a/layouts/community/ergodox/bepo_alt/keymap.c b/layouts/community/ergodox/bepo_alt/keymap.c index fc40afd8712f..a3bb955abfae 100644 --- a/layouts/community/ergodox/bepo_alt/keymap.c +++ b/layouts/community/ergodox/bepo_alt/keymap.c @@ -30,20 +30,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BEPO] = LAYOUT_ergodox( /* Left hand */ -BP_DOLLAR, BP_DQOT, BP_LGIL, BP_RGIL, BP_LPRN, BP_RPRN, BP_AT, -KC_TAB, BP_B, BP_E_ACUTE, BP_P, BP_O, BP_E_GRAVE, KC_BSPC, -BP_W, BP_A, BP_U, BP_I, BP_E, BP_COMMA, -KC_LSHIFT, BP_ECRC, BP_A_GRAVE, BP_Y, BP_X, BP_DOT, BP_K, +BP_DLR, BP_DQUO, BP_LDAQ, BP_RDAQ, BP_LPRN, BP_RPRN, BP_AT, +KC_TAB, BP_B, BP_EACU, BP_P, BP_O, BP_EGRV, KC_BSPC, +BP_W, BP_A, BP_U, BP_I, BP_E, BP_COMM, +KC_LSHIFT, BP_ECIR, BP_AGRV, BP_Y, BP_X, BP_DOT, BP_K, KC_LCTL, KC_LGUI, KC_LGUI, KC_LGUI, KC_LALT, KC_PGUP, KC_PGDOWN, KC_INS, KC_SPC, KC_LSHIFT, DF(FNAV), /* Right hand */ - BP_PLUS, BP_MINUS, BP_MINUS, BP_SLASH, BP_ASTR, BP_EQUAL, BP_PERCENT, - KC_CAPSLOCK, BP_DCRC, BP_V, BP_D, BP_L, BP_J, BP_Z, + BP_PLUS, BP_MINS, BP_MINS, BP_SLSH, BP_ASTR, BP_EQL, BP_PERC, + KC_CAPSLOCK, BP_DCIR, BP_V, BP_D, BP_L, BP_J, BP_Z, BP_C, BP_T, BP_S, BP_R, BP_N, BP_M, - KC_ESC, BP_APOS, BP_Q, BP_G, BP_H, BP_F, BP_CCED, + KC_ESC, BP_QUOT, BP_Q, BP_G, BP_H, BP_F, BP_CCED, KC_ALGR, KC_RGUI, KC_RGUI, KC_RCTL, KC_ENTER, DF(BEPO), KC_DEL, DF(FNAV), diff --git a/layouts/community/ergodox/bepo_csa/keymap.c b/layouts/community/ergodox/bepo_csa/keymap.c index c6d4f628ff21..d869c5bb9f11 100644 --- a/layouts/community/ergodox/bepo_csa/keymap.c +++ b/layouts/community/ergodox/bepo_csa/keymap.c @@ -91,7 +91,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [LR_BASE] = LAYOUT_ergodox( // layer 0 : default // left hand BP_DLR, KC_1, KC_2, KC_3, KC_4, KC_5, KC_DEL, - KC_TAB, BP_B, BP_ECUT, BP_P, BP_O, BP_EGRV, KC_BSPC, + KC_TAB, BP_B, BP_EACU, BP_P, BP_O, BP_EGRV, KC_BSPC, BP_EQL, BP_A, BP_U, BP_I, BP_E, BP_COMM, KC_LSFT, BP_AGRV, BP_Y, BP_X, BP_DOT, BP_K, KC_ENT, KC_LCTL, M(M_FNLR), KC_LGUI, M(M_NMAL), KC_LALT, @@ -102,9 +102,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // right hand KC_DEL, KC_6, KC_7, KC_8, KC_9, KC_0, BP_W, - KC_BSPC, BP_DCRC, BP_V, BP_D, BP_L, BP_J, BP_Z, + KC_BSPC, BP_DCIR, BP_V, BP_D, BP_L, BP_J, BP_Z, BP_C, BP_T, BP_S, BP_R, BP_N, BP_M, - KC_ENT, BP_APOS, BP_Q, BP_G, BP_H, BP_F, KC_RSFT, + KC_ENT, BP_QUOT, BP_Q, BP_G, BP_H, BP_F, KC_RSFT, KC_ALGR, BP_PERC, KC_APP, BP_CCED, KC_RCTL, KC_LEFT, KC_RGHT, @@ -116,10 +116,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [LR_CSA] = LAYOUT_ergodox( // left hand - KC_DLR, CSA_DQOT, CSA_LGIL, CSA_RGIL, KC_LPRN, KC_RPRN, KC_TRNS, - KC_TRNS, KC_B, CSA_ECUT, KC_P, KC_O, CSA_EGRV, KC_TRNS, + KC_DLR, CA_DQUO, CA_LDAQ, CA_RDAQ, KC_LPRN, KC_RPRN, KC_TRNS, + KC_TRNS, KC_B, CA_EACU, KC_P, KC_O, CA_EGRV, KC_TRNS, KC_EQL, KC_A, KC_U, KC_I, KC_E, KC_COMM, - CSA(SFT), CSA_AGRV, KC_Y, KC_X, KC_DOT, KC_K, KC_TRNS, + CSA(SFT), CA_AGRV, KC_Y, KC_X, KC_DOT, KC_K, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -127,11 +127,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, // right hand - KC_TRNS, KC_AT, KC_PLUS, KC_MINS, CSA_SLSH, KC_ASTR, KC_W, - KC_TRNS, CSA_DCRC, KC_V, KC_D, KC_L, KC_J, KC_Z, + KC_TRNS, KC_AT, KC_PLUS, KC_MINS, CA_SLSH, KC_ASTR, KC_W, + KC_TRNS, CA_CIRC, KC_V, KC_D, KC_L, KC_J, KC_Z, KC_C, KC_T, KC_S, KC_R, KC_N, KC_M, - KC_TRNS, CSA_APOS, KC_Q, KC_G, KC_H, KC_F, CSA(SFT), - MO(LR_CSA_AGR), KC_PERC, KC_TRNS, CSA_CCED, KC_LCTL, // RCTL has a special behaviour in CSA so use LCTL + KC_TRNS, CA_QUOT, KC_Q, KC_G, KC_H, KC_F, CSA(SFT), + MO(LR_CSA_AGR), KC_PERC, KC_TRNS, CA_CCED, KC_LCTL, // RCTL has a special behaviour in CSA so use LCTL KC_TRNS, KC_TRNS, KC_TRNS, @@ -174,7 +174,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, M(M_6), M(M_7), M(M_8), M(M_9), M(M_0), KC_TRNS, KC_TRNS, KC_EXLM, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, CSA_QEST, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, CA_QUES, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, CSA(SFT_AGR), M(M_GRV), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -205,10 +205,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [LR_CSA_AGR] = LAYOUT_ergodox( // left hand - MUC(NDSH), MUC(MDSH), CSA_LESS, CSA_GRTR, CSA_LBRC, CSA_RBRC, KC_TRNS, - KC_TRNS, CSA_PIPE, CSA_DACT, KC_AMPR, CSA_OE, CSA_DGRV, KC_TRNS, - KC_NO, CSA_AE, CSA_UGRV, CSA_DTRM, CSA_EURO, CSA_RQOT, - CSA(AGR_SFT), CSA_BSLS, CSA_LCBR, CSA_RCBR, MUC(ELPS), CSA_TILD, KC_TRNS, + MUC(NDSH), MUC(MDSH), CA_LABK, CA_RABK, CA_LBRC, CA_RBRC, KC_TRNS, + KC_TRNS, CA_PIPE, CA_ACUT, KC_AMPR, CA_OE, CA_GRV, KC_TRNS, + KC_NO, CA_AE, CA_UGRV, CA_DIAE, CA_EURO, CA_RQSU, + CSA(AGR_SFT), CA_BSLS, CA_LCBR, CA_RCBR, MUC(ELPS), CA_TILD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -216,11 +216,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_UNDS, CSA(AGR_SFT), KC_TRNS, // right hand - KC_TRNS, M(M_CRC), CSA_PSMS, KC_NO, CSA_DVSN, CSA_TIMS, CSA_DBRV, - KC_TRNS, CSA_IXLM, CSA_DCAR, CSA_ETH, KC_NO, CSA_IJ, KC_NO, - CSA_CPRT, CSA_THRN, CSA_SRPS, CSA_RTM, CSA_DTLD, CSA_DMCR, - KC_TRNS, CSA_IQST, CSA_DRNG, CSA_MU, KC_NO, CSA_DOGO, CSA(AGR_SFT), - KC_TRNS, KC_NO, KC_TRNS, CSA_DCED, KC_TRNS, + KC_TRNS, M(M_CRC), CA_PLMN, KC_NO, CA_DIV, CA_MUL, CA_BREV, + KC_TRNS, CA_IEXL, CA_CARN, CA_ETH, KC_NO, CA_IJ, KC_NO, + CA_COPY, CA_THRN, CA_SS, CA_REGD, CA_DTIL, CA_MACR, + KC_TRNS, CA_IQUE, CA_RNGA, CA_MICR, KC_NO, CA_OGON, CSA(AGR_SFT), + KC_TRNS, KC_NO, KC_TRNS, CA_CEDL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -250,10 +250,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [LR_CSA_AGR_SFT] = LAYOUT_ergodox( // left hand - CSA_PARG, KC_NO, CSA_LDQT, CSA_RDQT, KC_NO, KC_NO, KC_TRNS, - KC_TRNS, CSA_BPIP, CSA_DDCT, CSA_SECT, S(CSA_OE), M(M_GRV), KC_TRNS, - KC_NO, S(CSA_AE), S(CSA_UGRV), CSA_DDTA, KC_NO, KC_NO, - CSA(AGR_SFT), KC_NO, CSA_LQOT, CSA_RQOT, KC_NO, KC_NO, KC_TRNS, + CA_PARA, KC_NO, CA_LDQU, CA_RDQU, KC_NO, KC_NO, KC_TRNS, + KC_TRNS, CA_BRKP, CA_DACU, CA_SECT, S(CA_OE), M(M_GRV), KC_TRNS, + KC_NO, S(CA_AE), S(CA_UGRV), CA_DOTA, KC_NO, KC_NO, + CSA(AGR_SFT), KC_NO, CA_LSQU, CA_RSQU, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -261,10 +261,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, CSA(AGR_SFT), KC_TRNS, // right hand - KC_TRNS, KC_NO, CSA_NEGT, CSA_1QRT, CSA_1HLF, CSA_3QRT, KC_NO, - KC_TRNS, KC_NO, KC_NO, S(CSA_ETH), KC_NO, S(CSA_IJ), KC_NO, - KC_NO, S(CSA_THRN), S(CSA_SRPS), CSA_TM, KC_NO, CSA_ORDO, - KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, CSA_ORDA, CSA(AGR_SFT), + KC_TRNS, KC_NO, CA_NOT, CA_QRTR, CA_HALF, CA_TQTR, KC_NO, + KC_TRNS, KC_NO, KC_NO, S(CA_ETH), KC_NO, S(CA_IJ), KC_NO, + KC_NO, S(CA_THRN), S(CA_SS), CA_TM, KC_NO, CA_MORD, + KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, CA_FORD, CSA(AGR_SFT), CSA(SFT_AGR), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -450,7 +450,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case M_SCLN: return MACRO(D(SCLN), END); case M_GRV: - return MACRO(I(75), DOWN(KC_ALGR), TYPE(CSA_DCRC), UP(KC_ALGR), T(SPACE), END); + return MACRO(I(75), DOWN(KC_ALGR), TYPE(CA_CIRC), UP(KC_ALGR), T(SPACE), END); case M_NBSP: // use weak mod such that pressing another key will not be affected add_weak_mods(MOD_BIT(KC_ALGR)); @@ -474,7 +474,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) break; case M_CRC: if (record->event.pressed) { - return MACRO(I(75), TYPE(CSA_DCRC), T(SPACE), END); + return MACRO(I(75), TYPE(CA_CIRC), T(SPACE), END); } break; case M_DBL0: diff --git a/layouts/community/ergodox/berfarah/rules.mk b/layouts/community/ergodox/berfarah/rules.mk index abd95b50087a..2ad16306440a 100644 --- a/layouts/community/ergodox/berfarah/rules.mk +++ b/layouts/community/ergodox/berfarah/rules.mk @@ -1,4 +1,4 @@ -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite COMMAND_ENABLE = no SLEEP_LED_ENABLE = yes FORCE_NKRO ?= yes diff --git a/layouts/community/ergodox/bocaj/config.h b/layouts/community/ergodox/bocaj/config.h deleted file mode 100644 index 621ae784cfb1..000000000000 --- a/layouts/community/ergodox/bocaj/config.h +++ /dev/null @@ -1,4 +0,0 @@ -#pragma once - -#define LEADER_TIMEOUT 250 -#define LEADER_PER_KEY_TIMING diff --git a/layouts/community/ergodox/bocaj/keymap.c b/layouts/community/ergodox/bocaj/keymap.c deleted file mode 100644 index ba105a8f1d04..000000000000 --- a/layouts/community/ergodox/bocaj/keymap.c +++ /dev/null @@ -1,175 +0,0 @@ -/* -Copyright 2020 Jacob Jerrell @JacobJerrell - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#include "bocaj.h" - -/* - * The `LAYOUT_ergodox_pretty_base` macro is a template to allow the use of - * identical modifiers for the default layouts (eg QWERTY, Colemak, Dvorak, - * etc), so that there is no need to set them up for each layout, and modify - * all of them if I want to change them. This helps to keep consistency and - * ease of use. K## is a placeholder to pass through the individual keycodes - */ -#define LAYOUT_ergodox_bocaj(...) WRAPPER_ergodox_bocaj(__VA_ARGS__) -#define LAYOUT_ergodox_bocaj_WIN(...) WRAPPER_ergodox_bocaj_WIN(__VA_ARGS__) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_WORKMAN] = LAYOUT_ergodox_bocaj( - KC_ESC, ________________NUMBER_LEFT________________, KC_ARRW, KC_MINS, ________________NUMBER_RIGHT_______________, KC_EQUAL, - KC_DEL, _________________WORKMAN_L1________________, KC_LPRN, KC_RPRN, _________________WORKMAN_R1________________, KC_BSLS, - _______, _________________WORKMAN_L2________________, _________________WORKMAN_R2________________, KC_QUOT, - KC_LSFT, _________________WORKMAN_L3________________, KC_LBRC, KC_RBRC, _________________WORKMAN_R3________________, _______, - MO_MOD, KC_PGUP, KC_HOME, KC_UP, KC_LEFT, KC_RIGHT, KC_DOWN, KC_END, KC_PGDN, WORKMAN, - KC_APP,KC_HOME, /* <- LHS/RHS -> */ KC_END,KC_ESC, - KC_PGUP, /* <- LHS/RHS -> */ KC_PGDN, - KC_SPACE,KC_BSPACE,KC_LEAD, /* <- LHS/RHS -> */ KC_LOCK,KC_TAB,KC_ENTER - ), - - [_WWORKMAN] = LAYOUT_ergodox_bocaj_WIN( - KC_ESC, ________________NUMBER_LEFT________________, KC_ARRW, KC_MINS, ________________NUMBER_RIGHT_______________, KC_EQUAL, - KC_DEL, _________________WORKMAN_L1________________, KC_LPRN, KC_RPRN, _________________WORKMAN_R1________________, KC_BSLS, - _______, _________________WORKMAN_L2________________, _________________WORKMAN_R2________________, KC_QUOT, - KC_LSFT, _________________WORKMAN_L3________________, KC_LBRC, KC_RBRC, _________________WORKMAN_R3________________, _______, - MO_MOD, KC_PGUP, KC_HOME, KC_UP, KC_LEFT, KC_RIGHT, KC_DOWN, KC_END, KC_PGDN, WORKMAN, - KC_APP,KC_HOME, /* <- LHS/RHS -> */ KC_END,KC_ESC, - KC_PGUP, /* <- LHS/RHS -> */ KC_PGDN, - KC_SPACE,KC_BSPACE,KC_LEAD, /* <- LHS/RHS -> */ KC_LOCK,KC_TAB,KC_ENTER - ), - - [_LOWER] = LAYOUT_ergodox_bocaj( - KC_GRV, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, KC_UP, _______, _______, _______, _______, _______, KC_7, KC_8, KC_9, KC_BSLS, _______, - _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, KC_4, KC_5, KC_6, KC_ASTR, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_1, KC_2, KC_3, KC_PLUS, _______, - _______, _______, _______, _______, _______, KC_0, KC_DOT, KC_COMM, KC_MINS, _______, - KC_APP,KC_HOME, /* <- LHS/RHS -> */ KC_END,KC_ESC, - KC_PGUP, /* <- LHS/RHS -> */ KC_PGDN, - KC_SPACE,KC_BSPACE,KC_LEAD, /* <- LHS/RHS -> */ KC_LOCK,KC_TAB,KC_ENTER - ), - - [_RAISE] = LAYOUT_ergodox_bocaj( - KC_TILD, _________________RAISE_L1__________________, _______, _______, _________________RAISE_R1__________________, _______, - KC_F11, _________________RAISE_L2__________________, _______, _______, _________________RAISE_R2__________________, KC_F12, - _______, _________________RAISE_L3__________________, _________________RAISE_R3__________________, _______, - _______, _______, KC_MRWD, KC_MPLY, KC_MFFD, _______, _______, _______, ___________________BLANK___________________, _______, - ___________________BLANK___________________, ___________________BLANK___________________, - KC_APP,KC_HOME, /* <- LHS/RHS -> */ KC_END,KC_ESC, - KC_PGUP, /* <- LHS/RHS -> */ KC_PGDN, - KC_SPACE,KC_BSPACE,KC_LEAD, /* <- LHS/RHS -> */ KC_LOCK,KC_TAB,KC_ENTER - ), - - [_ADJUST] = LAYOUT_ergodox_pretty( - KC_MAKE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_RST, - VRSN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, - _______, KC__MUTE, KC__VOLDOWN, KC__VOLUP, _______, KC_MNXT, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - KC_APP,KC_HOME, /* <- LHS/RHS -> */ KC_END,KC_ESC, - KC_PGUP, /* <- LHS/RHS -> */ KC_PGDN, - KC_SPACE,KC_BSPACE,KC_LEAD, /* <- LHS/RHS -> */ KC_LOCK,KC_TAB,KC_ENTER - ), - - // Wrapping Mouse-Wheel Keys with `X_T()` style functions seems - // to break the mouse button. So we can't use the wrapper here. - [_MOD] = LAYOUT_ergodox_pretty( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, KC_WH_D, _______, _______, _______, _______, _______, _______, KC_MS_U, _______, _______, _______, - _______, _______, KC_WH_L, KC_WH_U, KC_WH_R, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, KC_ACL0, KC_ACL1, KC_ACL2, _______, _______, _______, - _______,_______, /* <- LHS/RHS -> */ _______,_______, - _______, /* <- LHS/RHS -> */ _______, - KC_BTN1,KC_BTN2,_______, /* <- LHS/RHS -> */ _______,KC_BTN3,KC_BTN4 - ) - -}; -// clang-format on - -bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void matrix_init_keymap(void) {}; - -// Runs whenever there is a layer state change. -layer_state_t layer_state_set_keymap(layer_state_t state) { - ergodox_board_led_off(); - ergodox_right_led_1_off(); - ergodox_right_led_2_off(); - ergodox_right_led_3_off(); - - uint8_t layer = get_highest_layer(state); - switch (layer) { - case _LOWER: - ergodox_right_led_3_on(); - break; - case _MOD: - ergodox_right_led_2_on(); - break; - case _RAISE: - ergodox_right_led_1_on(); - break; - case _ADJUST: - ergodox_right_led_1_on(); - ergodox_right_led_2_on(); - break; - default: - break; - } - - ergodox_right_led_1_set(25); - ergodox_right_led_2_set(25); - ergodox_right_led_3_set(25); - - return state; -}; - -void matrix_scan_keymap(void) { - uint8_t modifiers = get_mods(); - uint8_t led_usb_state = host_keyboard_leds(); - uint8_t one_shot = get_oneshot_mods(); - uint8_t layer_is_workman = layer_state_is(_WORKMAN); - - if ((modifiers) && (layer_is_workman)) { - if (modifiers & MODS_SHIFT_MASK || led_usb_state & (1<. -*/ - -#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/coderkun_neo2/keymap.c b/layouts/community/ergodox/coderkun_neo2/keymap.c index 638442676aed..b731ab49500c 100644 --- a/layouts/community/ergodox/coderkun_neo2/keymap.c +++ b/layouts/community/ergodox/coderkun_neo2/keymap.c @@ -33,20 +33,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [BASE] = LAYOUT_ergodox( // left hand - KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, NEO_GRV, - NEO_Y, NEO_X, NEO_V, NEO_L, NEO_C, NEO_W, KC_HOME, - NEO_L1_L, NEO_U, NEO_I, NEO_A, NEO_E, NEO_O, - KC_LSFT, NEO_UE, NEO_OE, NEO_AE, NEO_P, NEO_Z, TG(PMQ), - KC_LCTL, KC_LALT,MO(FMU),KC_LGUI,NEO_L2_L, + KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, NE_GRV, + NE_Y, NE_X, NE_V, NE_L, NE_C, NE_W, KC_HOME, + NE_L3L, NE_U, NE_I, NE_A, NE_E, NE_O, + KC_LSFT, NE_UDIA, NE_ODIA, NE_ADIA, NE_P, NE_Z, TG(PMQ), + KC_LCTL, KC_LALT,MO(FMU),KC_LGUI,NE_L4L, KC_LEFT, KC_UP, KC_MINS, KC_SPC, KC_ENT, ALL_T(KC_NO), // right hand - NEO_ACUT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, - KC_END, NEO_K, NEO_H, NEO_G, NEO_F, NEO_Q, NEO_SS, - NEO_S, NEO_N, NEO_R, NEO_T, NEO_D, NEO_L1_R, - TG(PMN), NEO_B, NEO_M, KC_COMM,KC_DOT, NEO_J, KC_RSFT, - NEO_L2_R,KC_RGUI,MO(FMU),KC_LALT,KC_RCTL, + NE_ACUT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_END, NE_K, NE_H, NE_G, NE_F, NE_Q, NE_SS, + NE_S, NE_N, NE_R, NE_T, NE_D, NE_L3R, + TG(PMN), NE_B, NE_M, KC_COMM,KC_DOT, NE_J, KC_RSFT, + NE_L4R,KC_RGUI,MO(FMU),KC_LALT,KC_RCTL, KC_DOWN, KC_RGHT, KC_MINS, MEH_T(KC_NO),KC_ENT,KC_SPC @@ -76,8 +76,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // left hand KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_EQL, DE_C, DE_P, DE_T, DE_F, DE_K, DE_L, KC_HOME, - NEO_L1_L, DE_D, DE_H, DE_OE, DE_O, DE_I, - KC_LSFT, DE_AE, DE_Q, DE_R, DE_W, DE_N, KC_TRNS, + NE_L3L, DE_D, DE_H, DE_ODIA,DE_O, DE_I, + KC_LSFT, DE_ADIA,DE_Q, DE_R, DE_W, DE_N, KC_TRNS, KC_LCTL, KC_LALT,MO(FMU),KC_LGUI,MO(NHL), KC_LEFT, KC_UP, KC_MINS, @@ -85,7 +85,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // right hand DE_ACUT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_END, DE_B, DE_A, DE_S, DE_G, DE_V, DE_Y, - DE_U, DE_MINS,DE_Z, DE_E, DE_X, NEO_L1_R, + DE_U, DE_MINS,DE_Z, DE_E, DE_X, NE_L3R, KC_TRNS, DE_J, DE_M, DE_COMM,DE_DOT, DE_SS, KC_RSFT, MO(NHL),KC_RGUI,MO(FMU),KC_LALT,KC_RCTL, KC_DOWN, KC_RGHT, @@ -117,7 +117,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_EQL, DE_Y, DE_X, DE_V, DE_L, DE_C, DE_W, KC_HOME, KC_NO, DE_U, DE_I, DE_A, DE_E, DE_O, - KC_LSFT, DE_UE, DE_OE, DE_AE, DE_P, DE_Z, KC_TRNS, + KC_LSFT, DE_UDIA,DE_ODIA,DE_ADIA,DE_P, DE_Z, KC_TRNS, KC_LCTL, KC_LALT,MO(FMU),KC_LGUI,MO(NHL), KC_LEFT, KC_UP, KC_MINS, @@ -215,12 +215,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -const uint16_t PROGMEM fn_actions[] = { - [BASE] = ACTION_FUNCTION(BASE), - [PMQ] = ACTION_FUNCTION(PMQ), - [PMN] = ACTION_FUNCTION(PMN), -}; - // Runs just one time when the keyboard initializes. void matrix_init_user(void) { set_unicode_input_mode(UC_LNX); @@ -260,12 +254,12 @@ void matrix_scan_user(void) }; -// Override Unicode start method to use NEO_U instead of KC_U +// Override Unicode start method to use NE_U instead of KC_U void unicode_input_start (void) { register_code(KC_LCTL); register_code(KC_LSFT); - register_code(NEO_U); - unregister_code(NEO_U); + register_code(NE_U); + unregister_code(NE_U); unregister_code(KC_LSFT); unregister_code(KC_LCTL); }; diff --git a/layouts/community/ergodox/colemak_code_friendly/rules.mk b/layouts/community/ergodox/colemak_code_friendly/rules.mk index 2bff0c5cf29b..ee89b5486e4c 100644 --- a/layouts/community/ergodox/colemak_code_friendly/rules.mk +++ b/layouts/community/ergodox/colemak_code_friendly/rules.mk @@ -1,5 +1,5 @@ COMMAND_ENABLE = no -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no CONSOLE_ENABLE = no RGBLIGHT_ENABLE = no diff --git a/layouts/community/ergodox/colemak_osx_pc_no/keymap.c b/layouts/community/ergodox/colemak_osx_pc_no/keymap.c index a4a453349493..b9986e0e9d81 100644 --- a/layouts/community/ergodox/colemak_osx_pc_no/keymap.c +++ b/layouts/community/ergodox/colemak_osx_pc_no/keymap.c @@ -9,6 +9,18 @@ #define NUMB_SYMB_MAC 3 // numbers and symbols mac #define FUNCTION 4 // function keys +enum custom_keycodes { + TILDE_NO = SAFE_RANGE, + LESS_NO, + GRTR_NO, + CIRC_NO, + ACUT_NO, + GRV_NO, + LESS_NO_MAC, + GRTR_NO_MAC, + ACUT_NO_MAC +}; + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 0: Basic layer PC @@ -35,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = LAYOUT_ergodox( // left hand NO_BSLS, NO_LBRC, NO_RBRC, NO_LCBR, NO_RCBR, NO_ASTR, TG(1), - NO_QUES, KC_Q, KC_W, KC_F, KC_P, KC_G, NO_QUO2, + NO_QUES, KC_Q, KC_W, KC_F, KC_P, KC_G, NO_DQUO, NO_COLN, KC_A, KC_R, KC_S, KC_T, KC_D, KC_EXLM, KC_Z, KC_X, KC_C, KC_V, KC_B, NO_SCLN, MO(4), KC_BTN1, KC_BTN2, KC_TAB,GUI_T(KC_COMMA), @@ -43,11 +55,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { NO_PLUS, OSM(MOD_LSFT),CTL_T(KC_DOT),ALT_T(NO_MINS), // right hand - KC_FN5, NO_DLR, NO_LPRN, NO_RPRN ,KC_FN3, KC_FN4,NO_AT, - NO_APOS, KC_J, KC_L, KC_U, KC_Y, NO_AA, NO_AE , - KC_H, KC_N, KC_E, KC_I, KC_O, NO_OSLH, + CIRC_NO, NO_DLR, NO_LPRN, NO_RPRN ,LESS_NO, GRTR_NO,NO_AT, + NO_QUOT, KC_J, KC_L, KC_U, KC_Y, NO_ARNG, NO_AE , + KC_H, KC_N, KC_E, KC_I, KC_O, NO_OSTR, NO_EQL, KC_K, KC_M, KC_RIGHT, KC_DOWN, KC_UP, NO_UNDS, - KC_LEFT, KC_ESC, KC_FN7, KC_HASH, MO(2), + KC_LEFT, KC_ESC, GRV_NO, KC_HASH, MO(2), KC_INSERT, NO_SLSH, KC_DEL, KC_BSPC,KC_ENT,KC_SPC @@ -74,20 +86,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `--------------------' `--------------------' */ [BASE_MAC] = LAYOUT_ergodox( - NO_BSLS_MAC, KC_TRNS,KC_TRNS, NO_LCBR_MAC,NO_RCBR_MAC, KC_TRNS, KC_TRNS, + S(ALGR(NO_7)), KC_TRNS,KC_TRNS, S(ALGR(NO_8)),S(ALGR(NO_9)), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, CTL_T(KC_COMMA), - KC_TRNS, NO_PIPE_MAC, + KC_TRNS, ALGR(NO_7), KC_TRNS, KC_TRNS,GUI_T(KC_DOT) , KC_TRNS, // right hand - KC_TRNS, NO_DLR_MAC, KC_TRNS,KC_TRNS,KC_FN8, KC_FN9,NO_AT_MAC, - NO_APOS_MAC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, S(NO_4), KC_TRNS,KC_TRNS,LESS_NO_MAC, GRTR_NO_MAC,NO_QUOT, + NO_LABK, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, NO_GRV_MAC, KC_TRNS, MO(3), + KC_TRNS, KC_TRNS, ALGR(NO_BSLS), KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS @@ -125,7 +137,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, // right hand KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_FN2, KC_FN6 , KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, TILDE_NO, ACUT_NO , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_5, KC_6, KC_7, KC_8, KC_TRNS, KC_TRNS, KC_HOME, KC_9, KC_END, KC_PGDN, KC_PGUP, KC_TRNS, KC_HOME, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -166,7 +178,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, // right hand KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, KC_TRNS , KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_FN2, KC_FN10, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, TILDE_NO, ACUT_NO_MAC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_5, KC_6, KC_7, KC_8, KC_TRNS, KC_TRNS, KC_HOME, KC_9, KC_END, KC_PGDN, KC_PGUP, KC_TRNS, KC_HOME, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -217,47 +229,57 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -enum macro_id { - TILDE_NO, LESS_NO, GRTR_NO, CIRC_NO, ACUT_NO, GRV_NO, LESS_NO_MAC, GRTR_NO_MAC, ACUT_NO_MAC -}; - -const uint16_t PROGMEM fn_actions[] = { - [2] = ACTION_MACRO(TILDE_NO), // Completed ~ character(pc and mac), no space needed. - [3] = ACTION_MACRO(LESS_NO), // < completed on keypress down, to avoid shifting the next character if it is not released first. - [4] = ACTION_MACRO(GRTR_NO), // > completed on keypress down, to avoid shifting the next character if it is not released first. - [5] = ACTION_MACRO(CIRC_NO), // Completed ^ character, no space needed. - [6] = ACTION_MACRO(ACUT_NO), // Completed ´ character, no space needed. - [7] = ACTION_MACRO(GRV_NO), // Completed ` character, no space needed. - [8] = ACTION_MACRO(LESS_NO_MAC), // < completed on keypress down, to avoid same button problem when typing <> quickly - [9] = ACTION_MACRO(GRTR_NO_MAC), // > completed on keypress down, to avoid same button problem when typing <> quickly - [10] = ACTION_MACRO(ACUT_NO_MAC), // Completed ´ character, no space needed -}; - - - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - keyevent_t event = record->event; - - switch (id) { +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { case TILDE_NO: - return (event.pressed ? MACRO( D(RALT), T(RBRC), U(RALT), T(SPC), END ) : MACRO_NONE); + if (record->event.pressed) { + tap_code16(ALGR(KC_RBRC)); + tap_code(KC_SPC); + } + return false; case LESS_NO: - return (event.pressed ? MACRO( T(NUBS), END ) : MACRO_NONE); + if (record->event.pressed) { + tap_code(KC_NUBS); + } + return false; case GRTR_NO: - return (event.pressed ? MACRO( D(LSFT), T(NUBS), U(LSFT), END ) : MACRO_NONE); + if (record->event.pressed) { + tap_code16(S(KC_NUBS)); + } + return false; case CIRC_NO: - return (event.pressed ? MACRO( D(LSFT), T(RBRC), U(LSFT), T(SPC), END ) : MACRO_NONE); + if (record->event.pressed) { + tap_code16(S(KC_RBRC)); + tap_code(KC_SPC); + } + return false; case ACUT_NO: - return (event.pressed ? MACRO( D(RALT), T(EQL), U(RALT), T(SPC), END ) : MACRO_NONE); + if (record->event.pressed) { + tap_code16(ALGR(KC_EQL)); + tap_code(KC_SPC); + } + return false; case GRV_NO: - return (event.pressed ? MACRO( D(LSFT), T(EQL), T(SPC), U(LSFT), END ) : MACRO_NONE); + if (record->event.pressed) { + SEND_STRING(SS_LSFT("= ")); + } + return false; case LESS_NO_MAC: - return (event.pressed ? MACRO( T(GRV), END ) : MACRO_NONE); + if (record->event.pressed) { + tap_code(KC_GRV); + } + return false; case GRTR_NO_MAC: - return (event.pressed ? MACRO( D(LSFT), T(GRV), U(LSFT), END ) : MACRO_NONE); + if (record->event.pressed) { + tap_code16(S(KC_GRV)); + } + return false; case ACUT_NO_MAC: - return (event.pressed ? MACRO( T(EQL), T(SPC), END ) : MACRO_NONE); + if (record->event.pressed) { + tap_code(KC_EQL); + tap_code(KC_SPC); + } + return false; } - return MACRO_NONE; -}; + return true; +} diff --git a/layouts/community/ergodox/deadcyclo/keymap.c b/layouts/community/ergodox/deadcyclo/keymap.c index 0ae1ef7fb2d0..345e25e03e99 100644 --- a/layouts/community/ergodox/deadcyclo/keymap.c +++ b/layouts/community/ergodox/deadcyclo/keymap.c @@ -1,6 +1,4 @@ #include QMK_KEYBOARD_H -#include "debug.h" -#include "action_layer.h" #include "version.h" #define BASE 0 // default layer @@ -9,45 +7,19 @@ #define UNI 3 // unicode 1 #define UNI2 4 // unicode 2 -enum macros { - RUN -}; - -enum function_ids { - EMOJI, - EMOJI2, - EPRM, +enum custom_keycodes { + I3_RUN = SAFE_RANGE, VRSN, - RGB_SLD, - GO_GROUP -}; - -/* opt can only be 0-15 */ -enum emojis { - SHRUG, - YAY, - HUG, - SMILE, - SMILE2, - HMM1, - HMM2, - BEAR1, - BEAR2, - FUU, - EGGY1, - EGGY2, - FACE1, - FACE2, - UHU, - SMRK1 -}; - -enum emojis2 { - SMRK2, - LOVE -}; - -enum progmem_ids { + I3_GO_GROUP_1, + I3_GO_GROUP_2, + I3_GO_GROUP_3, + I3_GO_GROUP_4, + I3_GO_GROUP_5, + I3_GO_GROUP_6, + I3_GO_GROUP_7, + I3_GO_GROUP_8, + I3_GO_GROUP_9, + I3_GO_GROUP_10, EMOJI_SHRUG, EMOJI_YAY, EMOJI_HUG, @@ -65,20 +37,7 @@ enum progmem_ids { EMOJI_UHU, EMOJI_SMRK1, EMOJI_SMRK2, - EMOJI_LOVE, - F_EPRM, - F_VRSN, - F_RGB_SLD, - I3_GO_GROUP_10, - I3_GO_GROUP_1, - I3_GO_GROUP_2, - I3_GO_GROUP_3, - I3_GO_GROUP_4, - I3_GO_GROUP_5, - I3_GO_GROUP_6, - I3_GO_GROUP_7, - I3_GO_GROUP_8, - I3_GO_GROUP_9, + EMOJI_LOVE }; // TODO: Finish the macros for i3 (Macros should potentially be own function instead to make things easier? some of them at least, f. ex. the ones that use 1-0 keys so we can have a single switch) @@ -163,7 +122,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, RGB_TOG,RGB_MOD, - F(F_RGB_SLD), + RGB_M_P, RGB_VAD,RGB_VAI,KC_TRNS, // right hand KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, @@ -173,7 +132,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS, RGB_HUD, RGB_HUI, KC_TRNS, - F(F_EPRM), KC_DEL, KC_TRNS + EEP_RST, KC_DEL, KC_TRNS ), /* Keymap 2: Media, mouse and navigation * @@ -198,8 +157,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ // MEDIA , MOUSE and NAVIGATION [MDIA] = LAYOUT_ergodox( - KC_TRNS, F(I3_GO_GROUP_1), F(I3_GO_GROUP_2), F(I3_GO_GROUP_3), F(I3_GO_GROUP_4), F(I3_GO_GROUP_5), F(I3_GO_GROUP_6), -KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, M(RUN), KC_TRNS, KC_TRNS, + KC_TRNS, I3_GO_GROUP_1, I3_GO_GROUP_2, I3_GO_GROUP_3, I3_GO_GROUP_4, I3_GO_GROUP_5, I3_GO_GROUP_6, +KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, I3_RUN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, @@ -207,7 +166,7 @@ KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, M(RUN), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, // right hand - F(I3_GO_GROUP_6), F(I3_GO_GROUP_7), F(I3_GO_GROUP_8), F(I3_GO_GROUP_9), F(I3_GO_GROUP_10), KC_TRNS, KC_TRNS, + I3_GO_GROUP_6, I3_GO_GROUP_7, I3_GO_GROUP_8, I3_GO_GROUP_9, I3_GO_GROUP_10, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_MPLY, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, @@ -241,10 +200,10 @@ KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, M(RUN), KC_TRNS, KC_TRNS, // Unicode [UNI] = LAYOUT_ergodox( KC_TRNS, UC(0x250c), UC(0x2510), UC(0x2514), UC(0x2518), UC(0x2502), UC(0x2500), - KC_TRNS, F(EMOJI_SHRUG), F(EMOJI_YAY), F(EMOJI_HUG), F(EMOJI_SMILE), F(EMOJI_SMILE2), KC_TRNS, - KC_TRNS, F(EMOJI_HMM1), F(EMOJI_HMM2), F(EMOJI_BEAR1), F(EMOJI_BEAR2), F(EMOJI_FUU), - KC_TRNS, F(EMOJI_EGGY1), F(EMOJI_EGGY2), F(EMOJI_FACE1), F(EMOJI_FACE2), F(EMOJI_UHU), KC_TRNS, - KC_TRNS, F(EMOJI_SMRK1), F(EMOJI_SMRK2), F(EMOJI_LOVE), F(F_VRSN), + KC_TRNS, EMOJI_SHRUG, EMOJI_YAY, EMOJI_HUG, EMOJI_SMILE, EMOJI_SMILE2, KC_TRNS, + KC_TRNS, EMOJI_HMM1, EMOJI_HMM2, EMOJI_BEAR1, EMOJI_BEAR2, EMOJI_FUU, + KC_TRNS, EMOJI_EGGY1, EMOJI_EGGY2, EMOJI_FACE1, EMOJI_FACE2, EMOJI_UHU, KC_TRNS, + KC_TRNS, EMOJI_SMRK1, EMOJI_SMRK2, EMOJI_LOVE, VRSN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -302,220 +261,84 @@ KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, M(RUN), KC_TRNS, KC_TRNS, ), }; -const uint16_t PROGMEM fn_actions[] = { - [EMOJI_SHRUG] = ACTION_FUNCTION_OPT(EMOJI, SHRUG), - [EMOJI_YAY] = ACTION_FUNCTION_OPT(EMOJI, YAY), - [EMOJI_HUG] = ACTION_FUNCTION_OPT(EMOJI,HUG), - [EMOJI_SMILE] = ACTION_FUNCTION_OPT(EMOJI,SMILE), - [EMOJI_SMILE2] = ACTION_FUNCTION_OPT(EMOJI,SMILE2), - [EMOJI_HMM1] = ACTION_FUNCTION_OPT(EMOJI,HMM1), - [EMOJI_HMM2] = ACTION_FUNCTION_OPT(EMOJI,HMM2), - [EMOJI_BEAR1] = ACTION_FUNCTION_OPT(EMOJI,BEAR1), - [EMOJI_BEAR2] = ACTION_FUNCTION_OPT(EMOJI,BEAR2), - [EMOJI_FUU] = ACTION_FUNCTION_OPT(EMOJI,FUU), - [EMOJI_EGGY1] = ACTION_FUNCTION_OPT(EMOJI,EGGY1), - [EMOJI_EGGY2] = ACTION_FUNCTION_OPT(EMOJI,EGGY2), - [EMOJI_FACE1] = ACTION_FUNCTION_OPT(EMOJI,FACE1), - [EMOJI_FACE2] = ACTION_FUNCTION_OPT(EMOJI,FACE2), - [EMOJI_UHU] = ACTION_FUNCTION_OPT(EMOJI,UHU), - [EMOJI_SMRK1] = ACTION_FUNCTION_OPT(EMOJI,SMRK1), - [EMOJI_SMRK2] = ACTION_FUNCTION_OPT(EMOJI2,SMRK2), - [EMOJI_LOVE] = ACTION_FUNCTION_OPT(EMOJI2,LOVE), - [F_EPRM] = ACTION_FUNCTION(EPRM), - [F_VRSN] = ACTION_FUNCTION(VRSN), - [F_RGB_SLD] = ACTION_FUNCTION(RGB_SLD), - [I3_GO_GROUP_10]= ACTION_FUNCTION_OPT(GO_GROUP,0), - [I3_GO_GROUP_1] = ACTION_FUNCTION_OPT(GO_GROUP,1), - [I3_GO_GROUP_2] = ACTION_FUNCTION_OPT(GO_GROUP,2), - [I3_GO_GROUP_3] = ACTION_FUNCTION_OPT(GO_GROUP,3), - [I3_GO_GROUP_4] = ACTION_FUNCTION_OPT(GO_GROUP,4), - [I3_GO_GROUP_5] = ACTION_FUNCTION_OPT(GO_GROUP,5), - [I3_GO_GROUP_6] = ACTION_FUNCTION_OPT(GO_GROUP,6), - [I3_GO_GROUP_7] = ACTION_FUNCTION_OPT(GO_GROUP,7), - [I3_GO_GROUP_8] = ACTION_FUNCTION_OPT(GO_GROUP,8), - [I3_GO_GROUP_9] = ACTION_FUNCTION_OPT(GO_GROUP,9), -}; - -#define TAP_ONCE(code) \ - register_code (code); \ - unregister_code (code) - -void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { - if (record->event.pressed) { - switch(id) { - case EPRM: - eeconfig_init(); - break; - case VRSN: - SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); - break; - case RGB_SLD: -#ifdef RGBLIGHT_ENABLE - rgblight_mode(1); -#endif - break; - case GO_GROUP: - register_code(KC_LCTL); TAP_ONCE(KC_I); unregister_code(KC_LCTL); - TAP_ONCE(KC_G); - if (opt == 0) { - TAP_ONCE(39); - } else { - TAP_ONCE(29+opt); - } - break; - case EMOJI: - switch(opt) { - case SHRUG: - unicode_input_start(); register_hex(0xaf); unicode_input_finish(); - TAP_ONCE (KC_BSLS); - register_code (KC_RSFT); TAP_ONCE (KC_MINS); TAP_ONCE (KC_9); unregister_code (KC_RSFT); - unicode_input_start (); register_hex(0x30c4); unicode_input_finish(); - register_code (KC_RSFT); TAP_ONCE (KC_0); TAP_ONCE (KC_MINS); unregister_code (KC_RSFT); - TAP_ONCE (KC_SLSH); - unicode_input_start (); register_hex(0xaf); unicode_input_finish(); - break; - case YAY: - SEND_STRING ("\\o/"); - break; - case HUG: - unicode_input_start(); register_hex(0x0f3c); unicode_input_finish(); - TAP_ONCE (KC_SPC); - unicode_input_start(); register_hex(0x3064); unicode_input_finish(); - TAP_ONCE (KC_SPC); - unicode_input_start(); register_hex(0x25d5); unicode_input_finish(); - unicode_input_start(); register_hex(0x005f); unicode_input_finish(); - unicode_input_start(); register_hex(0x25d5); unicode_input_finish(); - TAP_ONCE (KC_SPC); - unicode_input_start(); register_hex(0x0f3d); unicode_input_finish(); - unicode_input_start(); register_hex(0x3064); unicode_input_finish(); - break; - case SMILE: - unicode_input_start(); register_hex(0x0298); unicode_input_finish(); - unicode_input_start(); register_hex(0x203f); unicode_input_finish(); - unicode_input_start(); register_hex(0x0298); unicode_input_finish(); - break; - case SMILE2: - unicode_input_start(); register_hex(0x0028); unicode_input_finish(); - unicode_input_start(); register_hex(0x0298); unicode_input_finish(); - unicode_input_start(); register_hex(0x203f); unicode_input_finish(); - unicode_input_start(); register_hex(0x0298); unicode_input_finish(); - unicode_input_start(); register_hex(0x0029); unicode_input_finish(); - break; - case HMM1: - unicode_input_start(); register_hex(0x0ca0); unicode_input_finish(); - unicode_input_start(); register_hex(0x005f); unicode_input_finish(); - unicode_input_start(); register_hex(0x0ca0); unicode_input_finish(); - break; - case HMM2: - unicode_input_start(); register_hex(0x0028); unicode_input_finish(); - unicode_input_start(); register_hex(0x0ca0); unicode_input_finish(); - unicode_input_start(); register_hex(0x005f); unicode_input_finish(); - unicode_input_start(); register_hex(0x0ca0); unicode_input_finish(); - unicode_input_start(); register_hex(0x0029); unicode_input_finish(); - break; - case BEAR1: - unicode_input_start(); register_hex(0x0295); unicode_input_finish(); - unicode_input_start(); register_hex(0x2022); unicode_input_finish(); - unicode_input_start(); register_hex(0x1d25); unicode_input_finish(); - unicode_input_start(); register_hex(0x2022); unicode_input_finish(); - unicode_input_start(); register_hex(0x0294); unicode_input_finish(); - break; - case BEAR2: - unicode_input_start(); register_hex(0x0028); unicode_input_finish(); - unicode_input_start(); register_hex(0x1d54); unicode_input_finish(); - unicode_input_start(); register_hex(0x1d25); unicode_input_finish(); - unicode_input_start(); register_hex(0x1d54); unicode_input_finish(); - unicode_input_start(); register_hex(0x0029); unicode_input_finish(); - break; - case FUU: - unicode_input_start(); register_hex(0x256d); unicode_input_finish(); - unicode_input_start(); register_hex(0x2229); unicode_input_finish(); - unicode_input_start(); register_hex(0x256e); unicode_input_finish(); - unicode_input_start(); register_hex(0x0028); unicode_input_finish(); - unicode_input_start(); register_hex(0x002d); unicode_input_finish(); - unicode_input_start(); register_hex(0x005f); unicode_input_finish(); - unicode_input_start(); register_hex(0x002d); unicode_input_finish(); - unicode_input_start(); register_hex(0x0029); unicode_input_finish(); - unicode_input_start(); register_hex(0x256d); unicode_input_finish(); - unicode_input_start(); register_hex(0x2229); unicode_input_finish(); - unicode_input_start(); register_hex(0x256e); unicode_input_finish(); - break; - case EGGY1: - unicode_input_start(); register_hex(0x0028); unicode_input_finish(); - unicode_input_start(); register_hex(0x256f); unicode_input_finish(); - unicode_input_start(); register_hex(0x00b0); unicode_input_finish(); - unicode_input_start(); register_hex(0x25a1); unicode_input_finish(); - unicode_input_start(); register_hex(0x00b0); unicode_input_finish(); - unicode_input_start(); register_hex(0xff09); unicode_input_finish(); - unicode_input_start(); register_hex(0x256f); unicode_input_finish(); - break; - case EGGY2: - unicode_input_start(); register_hex(0x30ce); unicode_input_finish(); - unicode_input_start(); register_hex(0x0028); unicode_input_finish(); - unicode_input_start(); register_hex(0x0020); unicode_input_finish(); - unicode_input_start(); register_hex(0x309c); unicode_input_finish(); - unicode_input_start(); register_hex(0x002d); unicode_input_finish(); - unicode_input_start(); register_hex(0x309c); unicode_input_finish(); - unicode_input_start(); register_hex(0x30ce); unicode_input_finish(); - unicode_input_start(); register_hex(0x0029); unicode_input_finish(); - break; - case FACE1: - unicode_input_start(); register_hex(0x0028); unicode_input_finish(); - unicode_input_start(); register_hex(0x002d); unicode_input_finish(); - unicode_input_start(); register_hex(0x005f); unicode_input_finish(); - unicode_input_start(); register_hex(0x002d); unicode_input_finish(); - unicode_input_start(); register_hex(0x0029); unicode_input_finish(); - break; - case FACE2: - unicode_input_start(); register_hex(0x0028); unicode_input_finish(); - unicode_input_start(); register_hex(0x2022); unicode_input_finish(); - unicode_input_start(); register_hex(0x005f); unicode_input_finish(); - unicode_input_start(); register_hex(0x2022); unicode_input_finish(); - unicode_input_start(); register_hex(0x0029); unicode_input_finish(); - break; - case UHU: - unicode_input_start(); register_hex(0x2299); unicode_input_finish(); - unicode_input_start(); register_hex(0xfe4f); unicode_input_finish(); - unicode_input_start(); register_hex(0x2299); unicode_input_finish(); - break; - case SMRK1: - unicode_input_start(); register_hex(0x005e); unicode_input_finish(); - unicode_input_start(); register_hex(0x032e); unicode_input_finish(); - unicode_input_start(); register_hex(0x005e); unicode_input_finish(); - break; - } - break; - case EMOJI2: - switch(opt) { - case SMRK2: - unicode_input_start(); register_hex(0x0028); unicode_input_finish(); - unicode_input_start(); register_hex(0x005e); unicode_input_finish(); - unicode_input_start(); register_hex(0x032e); unicode_input_finish(); - unicode_input_start(); register_hex(0x005e); unicode_input_finish(); - unicode_input_start(); register_hex(0x0029); unicode_input_finish(); - break; - case LOVE: - unicode_input_start(); register_hex(0x2665); unicode_input_finish(); - unicode_input_start(); register_hex(0x203f); unicode_input_finish(); - unicode_input_start(); register_hex(0x2665); unicode_input_finish(); - break; - } - break; +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (record->event.pressed) { + switch (keycode) { + case I3_RUN: + tap_code16(C(KC_I)); + tap_code(KC_R); + return false; + case VRSN: + SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); + return false; + case I3_GO_GROUP_1 ... I3_GO_GROUP_10: + tap_code16(C(KC_I)); + tap_code(KC_G); + if (keycode == I3_GO_GROUP_10) { + tap_code(KC_0); + } else { + tap_code(KC_1 + (keycode - I3_GO_GROUP_1)); + } + return false; + case EMOJI_SHRUG: + send_unicode_string("¯\\_(ツ)_/¯"); + return false; + case EMOJI_YAY: + SEND_STRING("\\o/"); + return false; + case EMOJI_HUG: + send_unicode_string("༼ つ ◕_◕ ༽つ"); + return false; + case EMOJI_SMILE: + send_unicode_string("ʘ‿ʘ"); + return false; + case EMOJI_SMILE2: + send_unicode_string("(ʘ‿ʘ)"); + return false; + case EMOJI_HMM1: + send_unicode_string("ಠ_ಠ"); + return false; + case EMOJI_HMM2: + send_unicode_string("(ಠ_ಠ)"); + return false; + case EMOJI_BEAR1: + send_unicode_string("ʕ•ᴥ•ʔ"); + return false; + case EMOJI_BEAR2: + send_unicode_string("(ᵔᴥᵔ)"); + return false; + case EMOJI_FUU: + send_unicode_string("╭∩╮(-_-)╭∩╮"); + return false; + case EMOJI_EGGY1: + send_unicode_string("(╯°□°)╯"); + return false; + case EMOJI_EGGY2: + send_unicode_string("ノ( ゜-゜ノ)"); + return false; + case EMOJI_FACE1: + SEND_STRING("(-_-)"); + return false; + case EMOJI_FACE2: + send_unicode_string("(•_•)"); + return false; + case EMOJI_UHU: + send_unicode_string("⊙﹏⊙"); + return false; + case EMOJI_SMRK1: + send_unicode_string("^̮^"); + return false; + case EMOJI_SMRK2: + send_unicode_string("(^̮^)"); + return false; + case EMOJI_LOVE: + send_unicode_string("♥‿♥"); + return false; + } } - } + return true; } -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { - if (record->event.pressed) { - switch(id) { - case RUN: - return MACRO( D(LCTL), T(I), U(LCTL), T(R), END ); - break; - } - } - return MACRO_NONE; -}; - // Runs just one time when the keyboard initializes. void matrix_init_user(void) { set_unicode_input_mode(UC_LNX); diff --git a/layouts/community/ergodox/dragon788/keymap.c b/layouts/community/ergodox/dragon788/keymap.c index e77786485166..956a592b6d8d 100644 --- a/layouts/community/ergodox/dragon788/keymap.c +++ b/layouts/community/ergodox/dragon788/keymap.c @@ -164,7 +164,7 @@ LAYOUT_ergodox( KC_NO, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_NO, KC_A, KC_S, KC_D, KC_F, KC_G, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_FN4, KC_NO, + KC_NO, KC_NO, KC_NO, KC_C, KC_V, KC_NO, // right hand diff --git a/layouts/community/ergodox/drashna/config.h b/layouts/community/ergodox/drashna/config.h index 4ccba8f04b9a..f9daf277fbf6 100644 --- a/layouts/community/ergodox/drashna/config.h +++ b/layouts/community/ergodox/drashna/config.h @@ -47,3 +47,4 @@ #define PIMORONI_TRACKBALL_INVERT_X #define PIMORONI_TRACKBALL_INVERT_Y +#define PIMORONI_TRACKBALL_CLICK diff --git a/layouts/community/ergodox/drashna/keymap.c b/layouts/community/ergodox/drashna/keymap.c index 3e1460606025..3c9bcfeaa264 100644 --- a/layouts/community/ergodox/drashna/keymap.c +++ b/layouts/community/ergodox/drashna/keymap.c @@ -19,7 +19,7 @@ #ifdef UNICODEMAP_ENABLE # include "drashna_unicode.h" #endif // UNICODEMAP_ENABLE - +#include "drivers/sensors/pimoroni_trackball.h" enum more_custom_keycodes { KC_SWAP_NUM = NEW_SAFE_RANGE, PM_SCROLL, @@ -56,145 +56,33 @@ bool skip_leds = false; KC_SPC, LT(_LOWER, KC_BSPC), OS_LWR, OS_RSE, LT(_RAISE, KC_DEL), KC_ENT \ ) -#define LAYOUT_ergodox_pretty_base_wrapper(...) LAYOUT_ergodox_pretty_base(__VA_ARGS__) +#define LAYOUT_base_wrapper(...) LAYOUT_ergodox_pretty_base(__VA_ARGS__) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* Keymap 0: QWERTY Layer - * - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | = + | 1 ! | 2 @ | 3 # | 4 $ | 5 % | TG(4)| | TG(4)| 6 ^ | 7 & | 8 * | 9 ( | 0 ) | - _ | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | TAB | Q | W | E | R | T | TG(3)| |TG(3) | Y | U | I | O | P | \ | | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | Bksp | A | S | D | F | G |------| |------| H | J | K | L | ; | ' " | - * |--------+------+------+------+------+------| TG(2)| | TG(2)|------+------+------+------+------+--------| - * | Shift | Z | X | C | V | B | | | | N | M | , < | . > | ? / | Shift | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | `/SYM| MEH | LGUI | [ { | ] } | | LEFT | DOWN | UP |RIGHT | SYMB | - * `----------------------------------' `----------------------------------' - * ,--------------. ,--------------. - * |Alt/Ap| Win | | Alt |Ctl/Esc| - * ,------|------|-------| |------+-------+------. - * | | | Home | | PgUp | | | - * | Space| Bksp |-------| |------| DEL |Enter | - * | | | End | | PgDn | | | - * `---------------------' `---------------------' - */ - [_QWERTY] = LAYOUT_ergodox_pretty_base_wrapper( - _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, - _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, - _________________QWERTY_L3_________________, _________________QWERTY_R3_________________ - ), -/* Keymap 0: COLEMAK layer - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | Del | Q | W | F | P | G | L1 | | L1 | J | L | U | Y | ; | \ | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | BkSp | A | R | S | T | D |------| |------| H | N | E | I |O / L2| ' | - * |--------+------+------+------+------+------| OVER | | Meh |------+------+------+------+------+--------| - * | LShift |Z/Ctrl| X | C | V | B | | | | K | M | , | . |//Ctrl| RShift | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | `/SYM| MEH | LGUI | [ { | ] } | | LEFT | DOWN | UP |RIGHT | SYMB | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | App | LGui | | Alt |Ctrl/Esc| - * ,------|------|------| |------+--------+------. - * | | | Home | | PgUp | | | - * | Space|Backsp|------| |------| Tab |Enter | - * | |ace | End | | PgDn | | | - * `--------------------' `----------------------' - */ -// If it accepts an argument (i.e, is a function), it doesn't need KC_. -// Otherwise, it needs KC_* - [_COLEMAK] = LAYOUT_ergodox_pretty_base_wrapper( - _________________COLEMAK_L1________________, _________________COLEMAK_R1________________, - _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, - _________________COLEMAK_L3________________, _________________COLEMAK_R3________________ - ), -/* Keymap 0: DVORAK Layout - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | \ | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | Del | ' | , | . | P | Y | L1 | | L1 | F | G | C | R | L | / | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | BkSp | A | O | E | U | I |------| |------| D | H | T | N |S / L2| - | - * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| - * | LShift |:/Ctrl| Q | J | K | X | | | | B | M | W | V |Z/Ctrl| RShift | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | `/SYM| MEH | LGUI | [ { | ] } | | LEFT | DOWN | UP |RIGHT | SYMB | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | App | LGui | | Alt |Ctrl/Esc| - * ,------|------|------| |------+--------+------. - * | | | Home | | PgUp | | | - * | Space|Backsp|------| |------| Tab |Enter | - * | |ace | End | | PgDn | | | - * `--------------------' `----------------------' - */ -// If it accepts an argument (i.e, is a function), it doesn't need KC_. -// Otherwise, it needs KC_* - [_DVORAK] = LAYOUT_ergodox_pretty_base_wrapper( - _________________DVORAK_L1_________________, _________________DVORAK_R1_________________, - _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, - _________________DVORAK_L3_________________, _________________DVORAK_R3_________________ - ), -/* Keymap 0: WORKMAN layer - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | Del | Q | D | R | W | B | L1 | | L1 | J | F | U | P | ; | \ | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | BkSp | A | S | H | T | D |------| |------| Y | N | E | O | I | ' | - * |--------+------+------+------+------+------| OVER | | Meh |------+------+------+------+------+--------| - * | LShift |Z/Ctrl| X | M | C | V | | | | K | L | , | . |//Ctrl| RShift | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | `/SYM| MEH | LGUI | [ { | ] } | | LEFT | DOWN | UP |RIGHT | SYMB | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | App | LGui | | Alt |Ctrl/Esc| - * ,------|------|------| |------+--------+------. - * | | | Home | | PgUp | | | - * | Space|Backsp|------| |------| Tab |Enter | - * | |ace | End | | PgDn | | | - * `--------------------' `----------------------' - */ - - [_WORKMAN] = LAYOUT_ergodox_pretty_base_wrapper( - _________________WORKMAN_L1________________, _________________WORKMAN_R1________________, - _________________WORKMAN_L2________________, _________________WORKMAN_R2________________, - _________________WORKMAN_L3________________, _________________WORKMAN_R3________________ - ), - - [_NORMAN] = LAYOUT_ergodox_pretty_base_wrapper( - _________________NORMAN_L1_________________, _________________NORMAN_L1_________________, - _________________NORMAN_L2_________________, _________________NORMAN_R2_________________, - _________________NORMAN_L3_________________, _________________NORMAN_R3_________________ - ), - - [_MALTRON] = LAYOUT_ergodox_pretty_base_wrapper( - _________________MALTRON_L1________________, _________________MALTRON_R1________________, - _________________MALTRON_L2________________, _________________MALTRON_R2________________, - _________________MALTRON_L3________________, _________________MALTRON_R3________________ - ), - - [_EUCALYN] = LAYOUT_ergodox_pretty_base_wrapper( - _________________EUCALYN_L1________________, _________________EUCALYN_R1________________, - _________________EUCALYN_L2________________, _________________EUCALYN_R2________________, - _________________EUCALYN_L3________________, _________________EUCALYN_R3________________ - ), - - [_CARPLAX] = LAYOUT_ergodox_pretty_base_wrapper( - _____________CARPLAX_QFMLWY_L1_____________, _____________CARPLAX_QFMLWY_R1_____________, - _____________CARPLAX_QFMLWY_L2_____________, _____________CARPLAX_QFMLWY_R2_____________, - _____________CARPLAX_QFMLWY_L3_____________, _____________CARPLAX_QFMLWY_R3_____________ - ), + [_DEFAULT_LAYER_1] = LAYOUT_base_wrapper( + _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, + _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, + _________________QWERTY_L3_________________, _________________QWERTY_R3_________________ + ), + + [_DEFAULT_LAYER_2] = LAYOUT_base_wrapper( + ______________COLEMAK_MOD_DH_L1____________, ______________COLEMAK_MOD_DH_R1____________, + ______________COLEMAK_MOD_DH_L2____________, ______________COLEMAK_MOD_DH_R2____________, + ______________COLEMAK_MOD_DH_L3____________, ______________COLEMAK_MOD_DH_R3____________ + ), + [_DEFAULT_LAYER_3] = LAYOUT_base_wrapper( + _________________COLEMAK_L1________________, _________________COLEMAK_R1________________, + _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, + _________________COLEMAK_L3________________, _________________COLEMAK_R3________________ + ), + + [_DEFAULT_LAYER_4] = LAYOUT_base_wrapper( + _________________DVORAK_L1_________________, _________________DVORAK_R1_________________, + _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, + _________________DVORAK_L3_________________, _________________DVORAK_R3_________________ + ), /* Keymap 4: Customized Overwatch Layout * @@ -286,7 +174,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_MAKE, _______, _______, _______, _______, _______, UC_MOD, KC_NUKE, _________________ADJUST_R1_________________, KC_RST, VRSN, _________________ADJUST_L1_________________, _______, _______, _________________ADJUST_R1_________________, EEP_RST, _______, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, RGB_IDL, - _______, _________________ADJUST_L3_________________, _______, _______, _________________ADJUST_R3_________________, TG_MODS, + KEYLOCK, _________________ADJUST_L3_________________, _______, _______, _________________ADJUST_R3_________________, TG_MODS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -298,37 +186,34 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #ifdef PIMORONI_TRACKBALL_ENABLE void run_trackball_cleanup(void) { - if (trackball_is_scrolling()) { - trackball_set_rgbw(RGB_CYAN, 0x00); - } else if (trackball_get_precision() != 1.0) { - trackball_set_rgbw(RGB_GREEN, 0x00); - } else { - trackball_set_rgbw(RGB_MAGENTA, 0x00); - } + // if (trackball_is_scrolling()) { + // trackball_set_rgbw(RGB_CYAN, 0x00); + // } else if (trackball_get_precision() != 1.0) { + // trackball_set_rgbw(RGB_GREEN, 0x00); + // } else { + // trackball_set_rgbw(RGB_MAGENTA, 0x00); + // } } void keyboard_post_init_keymap(void) { // trackball_set_precision(1.5); - trackball_set_rgbw(RGB_MAGENTA, 0x00); -} -void shutdown_keymap(void) { - trackball_set_rgbw(RGB_RED, 0x00); + // trackball_set_rgbw(RGB_MAGENTA, 0x00); } +// void shutdown_keymap(void) { trackball_set_rgbw(RGB_RED, 0x00); } static bool mouse_button_one, trackball_button_one; -void trackball_check_click(bool pressed, report_mouse_t* mouse) { - if (mouse_button_one | pressed) { - mouse->buttons |= MOUSE_BTN1; +void trackball_register_button(bool pressed, enum mouse_buttons button) { + report_mouse_t currentReport = pointing_device_get_report(); + if (pressed) { + currentReport.buttons |= button; } else { - mouse->buttons &= ~MOUSE_BTN1; + currentReport.buttons &= ~button; } - trackball_button_one = pressed; + pointing_device_set_report(currentReport); } #endif - - bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case KC_1: @@ -359,28 +244,28 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { break; #ifdef PIMORONI_TRACKBALL_ENABLE case PM_SCROLL: - trackball_set_scrolling(record->event.pressed); + // trackball_set_scrolling(record->event.pressed); run_trackball_cleanup(); break; case PM_PRECISION: - if (record->event.pressed) { - trackball_set_precision(1.5); - } else { - trackball_set_precision(1); - } - run_trackball_cleanup(); + // if (record->event.pressed) { + // trackball_set_precision(1.5); + // } else { + // trackball_set_precision(1); + // } + // run_trackball_cleanup(); + break; +# if !defined(MOUSEKEY_ENABLE) + case KC_MS_BTN1: + mouse_button_one = record->event.pressed; + trackball_register_button(mouse_button_one | trackball_button_one, MOUSE_BTN1); + break; + case KC_MS_BTN2: + trackball_register_button(record->event.pressed, MOUSE_BTN2); + break; + case KC_MS_BTN3: + trackball_register_button(record->event.pressed, MOUSE_BTN3); break; -#if !defined(MOUSEKEY_ENABLE) - case KC_MS_BTN1: - mouse_button_one = record->event.pressed; - trackball_register_button(mouse_button_one | trackball_button_one, MOUSE_BTN1); - break; - case KC_MS_BTN2: - trackball_register_button(record->event.pressed, MOUSE_BTN2); - break; - case KC_MS_BTN3: - trackball_register_button(record->event.pressed, MOUSE_BTN3); - break; # endif #endif } @@ -433,7 +318,6 @@ void suspend_power_down_keymap(void) { rgb_matrix_set_suspend_state(true); } void suspend_wakeup_init_keymap(void) { rgb_matrix_set_suspend_state(false); } void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { - if (layer_state_is(_GAMEPAD)) { RGB_MATRIX_INDICATOR_SET_COLOR(32, 0x00, 0xFF, 0x00); // Q RGB_MATRIX_INDICATOR_SET_COLOR(31, 0x00, 0xFF, 0xFF); // W @@ -446,7 +330,7 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { RGB_MATRIX_INDICATOR_SET_COLOR((userspace_config.swapped_numbers ? 26 : 27), 0xFF, 0xFF, 0xFF); // 1 RGB_MATRIX_INDICATOR_SET_COLOR((userspace_config.swapped_numbers ? 27 : 26), 0x00, 0xFF, 0x00); // 2 - RGB_MATRIX_INDICATOR_SET_COLOR(25, 0x7A, 0x00, 0xFF); // 3 + RGB_MATRIX_INDICATOR_SET_COLOR(25, 0x7A, 0x00, 0xFF); // 3 } # if defined(RGBLIGHT_ENABLE) @@ -455,7 +339,7 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { if (userspace_config.rgb_layer_change) # endif { - switch (get_highest_layer(layer_state|default_layer_state)) { + switch (get_highest_layer(layer_state | default_layer_state)) { case _GAMEPAD: rgb_matrix_layer_helper(HSV_ORANGE, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); break; @@ -471,29 +355,17 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { case _ADJUST: rgb_matrix_layer_helper(HSV_RED, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); break; - case _QWERTY: - rgb_matrix_layer_helper(HSV_CYAN, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); - break; - case _COLEMAK: - rgb_matrix_layer_helper(HSV_MAGENTA, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); - break; - case _DVORAK: - rgb_matrix_layer_helper(HSV_SPRINGGREEN, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); + case _DEFAULT_LAYER_1: + rgb_matrix_layer_helper(DEFAULT_LAYER_1_HSV, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); break; - case _WORKMAN: - rgb_matrix_layer_helper(HSV_GOLDENROD, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); - break; - case _NORMAN: - rgb_matrix_layer_helper(HSV_CORAL, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); - break; - case _MALTRON: - rgb_matrix_layer_helper(HSV_YELLOW, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); + case _DEFAULT_LAYER_2: + rgb_matrix_layer_helper(DEFAULT_LAYER_2_HSV, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); break; - case _EUCALYN: - rgb_matrix_layer_helper(HSV_PINK, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); + case _DEFAULT_LAYER_3: + rgb_matrix_layer_helper(DEFAULT_LAYER_3_HSV, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); break; - case _CARPLAX: - rgb_matrix_layer_helper(HSV_BLUE, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); + case _DEFAULT_LAYER_4: + rgb_matrix_layer_helper(DEFAULT_LAYER_4_HSV, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); break; } } diff --git a/layouts/community/ergodox/drashna/rules.mk b/layouts/community/ergodox/drashna/rules.mk index 31f4788fad24..853f1efd2463 100644 --- a/layouts/community/ergodox/drashna/rules.mk +++ b/layouts/community/ergodox/drashna/rules.mk @@ -1,4 +1,4 @@ -BOOTMAGIC_ENABLE = lite +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite TAP_DANCE_ENABLE = no COMMAND_ENABLE = no # Commands for debug and configuration CONSOLE_ENABLE = no @@ -7,7 +7,6 @@ SPACE_CADET_ENABLE = no ifeq ($(strip $(KEYBOARD)), ergodox_ez) RGBLIGHT_ENABLE = yes RGB_MATRIX_ENABLE = yes - RGBLIGHT_TWINKLE = no INDICATOR_LIGHTS = no RGBLIGHT_STARTUP_ANIMATION = yes PIMORONI_TRACKBALL_ENABLE = yes @@ -18,4 +17,4 @@ UNICODE_ENABLE = no UNICDOEMAP_ENABLE = no -DEBOUNCE_TYPE = eager_pr +DEBOUNCE_TYPE = sym_eager_pr diff --git a/layouts/community/ergodox/drashna/visualizer.c b/layouts/community/ergodox/drashna/visualizer.c deleted file mode 100644 index 6b1c3ff498b6..000000000000 --- a/layouts/community/ergodox/drashna/visualizer.c +++ /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 . -*/ - -#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/dvorak_plover/keymap.c b/layouts/community/ergodox/dvorak_plover/keymap.c index 882a351d18ab..989aafb90ab6 100644 --- a/layouts/community/ergodox/dvorak_plover/keymap.c +++ b/layouts/community/ergodox/dvorak_plover/keymap.c @@ -122,7 +122,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_NO, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_NO, KC_A, KC_S, KC_D, KC_F, KC_G, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_FN4, KC_NO, + KC_NO, KC_NO, KC_NO, KC_C, KC_V, KC_NO, // right hand diff --git a/layouts/community/ergodox/dvorak_programmer/rules.mk b/layouts/community/ergodox/dvorak_programmer/rules.mk index 44d702209ca3..a3ac8ed6ffd6 100644 --- a/layouts/community/ergodox/dvorak_programmer/rules.mk +++ b/layouts/community/ergodox/dvorak_programmer/rules.mk @@ -1,4 +1,4 @@ -BOOTMAGIC_ENABLE=no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite COMMAND_ENABLE=no SLEEP_LED_ENABLE=no FORCE_NKRO = yes diff --git a/layouts/community/ergodox/dvorak_programmer_swe/keymap.c b/layouts/community/ergodox/dvorak_programmer_swe/keymap.c index bb27f18e809b..a8a428a04bf8 100644 --- a/layouts/community/ergodox/dvorak_programmer_swe/keymap.c +++ b/layouts/community/ergodox/dvorak_programmer_swe/keymap.c @@ -69,8 +69,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_SPC,KC_BSPC,KC_END, // right hand KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLASH, - TG(1), KC_F, KC_G, KC_C, KC_R, KC_L, SE_AM, - KC_D, KC_H, KC_T, KC_N, KC_S, SE_AE, + TG(1), KC_F, KC_G, KC_C, KC_R, KC_L, SE_ARNG, + KC_D, KC_H, KC_T, KC_N, KC_S, SE_ADIA, TG(MDIA),KC_B, KC_M, KC_W, KC_V, CTL_T(KC_Z), KC_RSFT, KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, TT(SYMB), LALT(KC_LSFT), CTL_T(KC_ESC), @@ -111,8 +111,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS,KC_TRNS,KC_TRNS, // right hand KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, - KC_TRNS, SE_LESS, KC_7, KC_8, KC_9, KC_KP_ASTERISK, KC_F12, - LSFT(SE_LESS), KC_4, KC_5, KC_6, KC_KP_PLUS, KC_TRNS, + KC_TRNS, SE_LABK, KC_7, KC_8, KC_9, KC_KP_ASTERISK, KC_F12, + SE_RABK, KC_4, KC_5, KC_6, KC_KP_PLUS, KC_TRNS, KC_TRNS, SE_QUES, KC_1, KC_2, KC_3, LSFT(KC_5), KC_TRNS, KC_DOT,KC_0, LSFT(KC_0), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -186,7 +186,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [DEVL] = LAYOUT_ergodox( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, M(MACRO_SAVE), M(MACRO_BUILD), M(MACRO_DEBUG), KC_PSCR, ALGR(KC_4), KC_TRNS, - KC_TRNS, SE_ACUT, SE_APOS, SE_PIPE, KC_TRNS, ALGR(KC_3), + KC_TRNS, SE_ACUT, SE_QUOT, SE_PIPE, KC_TRNS, ALGR(KC_3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, ALGR(KC_5), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, diff --git a/layouts/community/ergodox/dvorak_programmer_swe/readme.md b/layouts/community/ergodox/dvorak_programmer_swe/readme.md index 3bedf50d74b8..78d872ab5bcd 100644 --- a/layouts/community/ergodox/dvorak_programmer_swe/readme.md +++ b/layouts/community/ergodox/dvorak_programmer_swe/readme.md @@ -25,7 +25,7 @@ Known issues: * Switched position on Alt and Alt-shift * Added tilde character to symbol layer * Added Print Screen to keymap 3 - * Added ' (NO_APOS) to keymap 3 + * Added ' (NO_QUOT) to keymap 3 * Added how to install help in this readme * 2017-05-16 diff --git a/layouts/community/ergodox/dvorak_svorak_a5/keymap.c b/layouts/community/ergodox/dvorak_svorak_a5/keymap.c index 4ca20bd48c71..3ecef9d9b696 100644 --- a/layouts/community/ergodox/dvorak_svorak_a5/keymap.c +++ b/layouts/community/ergodox/dvorak_svorak_a5/keymap.c @@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = LAYOUT_ergodox( // layer 0 : default // left hand KC_NO, KC_1, KC_2, KC_3, KC_4, KC_5, MO(MOUS), - KC_TAB, SE_AA, SE_AE, SE_OSLH, KC_P, KC_Y, KC_NO, + KC_TAB, SE_ARNG,SE_ADIA, SE_ODIA, KC_P, KC_Y, KC_NO, KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_LSFT, KC_DOT, KC_Q, KC_J, KC_K, KC_X, KC_NO, KC_LCTRL, KC_NO, KC_NO, KC_LALT, KC_LCMD, @@ -84,9 +84,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_NO, KC_NO, // right hand KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_NO, LSFT(KC_2), SE_QUES, LSFT(KC_6), SE_LESS, SE_GRTR, KC_NO, + KC_NO, LSFT(KC_2), SE_QUES, LSFT(KC_6), SE_LABK, SE_RABK, KC_NO, KC_HASH, SE_CIRC, KC_HASH, LSFT(KC_2), SE_TILD, KC_NO, - KC_NO, KC_PERC, SE_ACUT, SE_APOS, SE_ASTR, SE_GRV, KC_NO, + KC_NO, KC_PERC, SE_ACUT, SE_QUOT, SE_ASTR, SE_GRV, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, @@ -162,14 +162,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_TRNS, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, SE_ACUT, - CTL_T(SE_APOS), SE_CIRC, SE_ASTR, KC_LALT, KC_LGUI, + CTL_T(SE_QUOT), SE_CIRC, SE_ASTR, KC_LALT, KC_LGUI, KC_LCTRL, KC_LALT, SE_TILD, KC_BSPC, KC_TAB, KC_ESC, // right hand KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, SE_PLUS, - KC_TRNS, KC_Y, KC_U, KC_I, KC_O, KC_P, SE_AA, - KC_H, KC_J, KC_K, KC_L, SE_OSLH, SE_AE, + KC_TRNS, KC_Y, KC_U, KC_I, KC_O, KC_P, SE_ARNG, + KC_H, KC_J, KC_K, KC_L, SE_ODIA, SE_ADIA, KC_DEL, KC_N, KC_M, KC_COMM, KC_DOT, SE_MINS, KC_RSFT, KC_ALGR, KC_DOWN, KC_UP, KC_LEFT, KC_RGHT, KC_HOME, KC_END, diff --git a/layouts/community/ergodox/french_hacker/keymap.c b/layouts/community/ergodox/french_hacker/keymap.c index 731d917fd924..44b0c47860ee 100644 --- a/layouts/community/ergodox/french_hacker/keymap.c +++ b/layouts/community/ergodox/french_hacker/keymap.c @@ -7,82 +7,64 @@ #define BASE 0 // default Colemak Mod-DH layer #define SYMB 1 // symbols #define MDIA 2 // media keys -#define ACC 3 // accented characters - -#define QCOPY 0 // Qubes OS VM to VM copy -#define QPASTE 1 // Qubes OS VM to VM paste -#define M_ACIRC 2 // â -#define M_ECIRC 3 // ê -#define M_ICIRC 4 // î -#define M_OCIRC 5 // ô -#define M_UCIRC 6 // û -#define M_YCIRC 7 // ŷ -#define M_AUMLT 8 // ä -#define M_EUMLT 9 // ë -#define M_IUMLT 10 // ï -#define M_OUMLT 11 // ö -#define M_UUMLT 12 // ü -#define M_YUMLT 13 // ÿ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 0: Base Colemak Mod-DH layer * * ,--------------------------------------------------. ,--------------------------------------------------. - * | Esc | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | | + * | Esc | & _1 | é _2 | " _3 | ' _4 | ( _5 | | | | - _6 | è _7 | _ _8 | ç _9 | à _0 | | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | Q | W | F | P | B | TO(0)| |TO(2) | J | L | U | Y | ; | | + * | | Q | W | F | P | B | TO(0)| |TO(2) | J | L | U | Y | ; | Ins | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | Tab | A | R | S | T | G |------| |------| M | N | E | I | O | Bcksp | - * |--------+------+------+------+------+------| TO(1)| |OSL(3)|------+------+------+------+------+--------| + * |--------+------+------+------+------+------| TO(1)| | MEH |------+------+------+------+------+--------| * | LShift | Z | X | C | D | V | | | | K | H | , | . | : | Rshift | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | Ins | Caps | Left | Right| MO(2)| | MO(2)| Down | Up | PgDn | PgUp | + * | ù | | Left | Right| MO(2)| | MO(2)| Down | Up | PgDn | PgUp | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. - * |QCopy | Ralt | | Ralt |QPaste| - * ,------|------|------| |------+------+------. - * | | | Home | | End | | | - * | Space| Ctrl |------| |------| Ctrl |Enter | - * | | | LAlt | | LAlt | | | - * `--------------------' `--------------------' + * | | Ralt | | Ralt | | + * ,-------|------|------| |------+------+------. + * | | | Home | | End | | | + * | Space | Ctrl |------| |------| Ctrl | Enter | + * | | | LAlt | | LAlt | | | + * `---------------------' `---------------------' */ - // If it accepts an argument (i.e, is a function), it doesn't need KC_. -// Otherwise, it needs KC_* [BASE] = LAYOUT_ergodox( // layer 0 : default // left hand - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS, - KC_TRNS, FR_Q, FR_W, KC_F, KC_P, KC_B, TO(BASE), - KC_TAB, FR_A, KC_R, KC_S, KC_T, KC_G, - KC_LSFT, FR_Z, KC_X, KC_C, KC_D, KC_V, TO(SYMB), - KC_INS, KC_CAPS, KC_LEFT,KC_RIGHT, MO(SYMB), - M(QCOPY), KC_RALT, + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_NO, + KC_NO, FR_Q, FR_W, KC_F, KC_P, KC_B, TO(BASE), + KC_TAB, FR_A, KC_R, KC_S, KC_T, KC_G, + KC_LSFT, FR_Z, KC_X, KC_C, KC_D, KC_V, TO(SYMB), + FR_UGRV, KC_NO, KC_LEFT, KC_RIGHT, MO(SYMB), + KC_NO, KC_RALT, KC_HOME, KC_SPC,KC_LCTRL, KC_LALT, // right hand - KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, - TO(MDIA), KC_J, KC_L, KC_U, KC_Y, FR_SCLN, KC_TRNS, - FR_M, KC_N, KC_E, KC_I, KC_O, KC_BSPC, - OSL(ACC), KC_K, KC_H, FR_COMM, FR_DOT, FR_COLN, KC_RSFT, - MO(SYMB), KC_DOWN, KC_UP, KC_PGDN, KC_PGUP, + KC_NO, KC_6, KC_7, KC_8, KC_9, KC_0, KC_NO, + TO(MDIA), KC_J, KC_L, KC_U, KC_Y, FR_SCLN, KC_INS, + FR_M, KC_N, KC_E, KC_I, KC_O, KC_BSPC, + OSM(MOD_MEH), KC_K, KC_H, FR_COMM, FR_DOT, FR_COLN, KC_RSFT, + MO(SYMB), KC_DOWN, KC_UP, KC_PGDN, KC_PGUP, - KC_RALT, M(QPASTE), + KC_RALT, KC_NO, KC_END, KC_LALT,KC_RCTL, KC_ENT ), /* Keymap 1: Symbol Layer - * // TODO missing: ¤ + * * ,--------------------------------------------------. ,--------------------------------------------------. * |Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | § | < | { | \ | ~ | | | | % | @ | } | > | µ | F12 | + * | | § | < | { | \ | ~ | | | | % | @ | } | > | ¨ | F12 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | | ' | = | - | ( | + |------| |------| * | ) | _ | / | " | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | | ` | ? | # | [ | | | | | | & | ] | $ | ! | ^ | | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | € | £ | $ | | | | | | | ß | | + * | € | £ | ¤ | ² | | | | ° | µ | ß | | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. * | | | | | | @@ -95,20 +77,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // SYMBOLS [SYMB] = LAYOUT_ergodox( // left hand - M(0), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, - KC_TRNS,FR_SECT,FR_LESS, FR_LCBR,FR_BSLS,FR_TILD,KC_TRNS, - KC_TRNS,FR_APOS,FR_EQL, FR_MINS,FR_LPRN,FR_PLUS, - KC_TRNS,FR_GRV,FR_QUES,FR_HASH,FR_LBRC,FR_PIPE,KC_TRNS, - FR_EURO,FR_PND,FR_DLR,KC_TRNS,KC_TRNS, + M(0), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, + KC_TRNS, FR_SECT, FR_LABK, FR_LCBR, FR_BSLS, FR_TILD, KC_TRNS, + KC_TRNS, FR_QUOT, FR_EQL, FR_MINS, FR_LPRN, FR_PLUS, + KC_TRNS, FR_GRV, FR_QUES, FR_HASH, FR_LBRC, FR_PIPE, KC_TRNS, + FR_EURO, FR_PND, FR_CURR, FR_SUP2, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, // right hand - KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, - KC_TRNS, FR_PERC, FR_AT, FR_RCBR, FR_GRTR, FR_MU, KC_F12, - FR_ASTR, FR_RPRN, FR_UNDS, FR_SLSH, FR_QUOT, KC_TRNS, - KC_TRNS, FR_AMP, FR_RBRC, FR_DLR, FR_EXLM, FR_CIRC, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, ALGR(KC_S), KC_TRNS, + KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_TRNS, FR_PERC, FR_AT, FR_RCBR, FR_RABK, FR_DIAE, KC_F12, + FR_ASTR, FR_RPRN, FR_UNDS, FR_SLSH, FR_DQUO, KC_TRNS, + KC_TRNS, FR_AMPR, FR_RBRC, FR_DLR, FR_EXLM, FR_CIRC, KC_TRNS, + KC_TRNS, FR_DEG, FR_MICR, ALGR(KC_S), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS @@ -154,178 +136,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_WBAK ), - -/* Keymap 3: accented characters - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | | | | | | | | | | | | | | | | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | | à | â | ä | | | | | | | î | ï | | | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | é | è | ê | ë | |------| |------| | | ô | ö | | | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | | ù | û | ü | | | | | | | ŷ | ÿ | | | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | | | | | | | | | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | | | | | | - * ,------|------|------| |------+------+------. - * | | | | | | | | - * | | |------| |------| | | - * | | | | | | | | - * `--------------------' `--------------------' - */ -// ACCENTED CHARACTERS -[ACC] = LAYOUT_ergodox( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - - KC_TRNS, KC_TRNS, FR_AGRV, M(M_ACIRC), M(M_AUMLT), KC_TRNS, KC_TRNS, - KC_TRNS, FR_EACU, FR_EGRV, M(M_ECIRC), M(M_EUMLT), KC_TRNS, - KC_TRNS, KC_TRNS, FR_UGRV, M(M_UCIRC), M(M_UUMLT), KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, - // right hand - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, M(M_ICIRC), M(M_IUMLT), KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, M(M_OCIRC), M(M_OUMLT), KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, M(M_YCIRC), M(M_YUMLT), KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS -), -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - // MACRODOWN only works in this function - switch(id) { - case QCOPY: - if (record->event.pressed) { - return MACRO(I(255), - D(LCTRL), - T(C), - D(LSFT), - T(C), - U(LCTRL), - U(LSFT), - END); - } - break; - case QPASTE: - if (record->event.pressed) { - return MACRO(I(255), - D(LCTRL), - D(LSFT), - T(V), - U(LCTRL), - T(INS), - U(LSFT), - END); - } - break; - case M_ACIRC: - if (record->event.pressed) { - return MACRO(T(LBRC), // FR_CIRC - T(Q), // FR_A - END); - } - break; - case M_ECIRC: - if (record->event.pressed) { - return MACRO(T(LBRC), // FR_CIRC - T(E), - END); - } - break; - case M_UCIRC: - if (record->event.pressed) { - return MACRO(T(LBRC), // FR_CIRC - T(U), - END); - } - break; - case M_ICIRC: - if (record->event.pressed) { - return MACRO(T(LBRC), // FR_CIRC - T(I), - END); - } - break; - case M_OCIRC: - if (record->event.pressed) { - return MACRO(T(LBRC), // FR_CIRC - T(O), - END); - } - break; - case M_YCIRC: - if (record->event.pressed) { - return MACRO(T(LBRC), // FR_CIRC - T(Y), - END); - } - break; - case M_AUMLT: - if (record->event.pressed) { - return MACRO(D(LSFT), - T(LBRC), - U(LSFT), - T(Q), - END); - } - break; - case M_EUMLT: - if (record->event.pressed) { - return MACRO(D(LSFT), - T(LBRC), - U(LSFT), - T(E), - END); - } - break; - case M_UUMLT: - if (record->event.pressed) { - return MACRO(D(LSFT), - T(LBRC), - U(LSFT), - T(U), - END); - } - break; - case M_IUMLT: - if (record->event.pressed) { - return MACRO(D(LSFT), - T(LBRC), - U(LSFT), - T(I), - END); - } - break; - case M_OUMLT: - if (record->event.pressed) { - return MACRO(D(LSFT), - T(LBRC), - U(LSFT), - T(O), - END); - } - break; - case M_YUMLT: - if (record->event.pressed) { - return MACRO(D(LSFT), - T(LBRC), - U(LSFT), - T(Y), - END); - } - break; - - } - return MACRO_NONE; }; // Runs just one time when the keyboard initializes. @@ -350,9 +160,6 @@ void matrix_scan_user(void) { case MDIA: ergodox_right_led_2_on(); break; - case ACC: - ergodox_right_led_3_on(); - break; default: // none break; diff --git a/layouts/community/ergodox/french_hacker/readme.md b/layouts/community/ergodox/french_hacker/readme.md index 6b0575af1364..829013597a0d 100644 --- a/layouts/community/ergodox/french_hacker/readme.md +++ b/layouts/community/ergodox/french_hacker/readme.md @@ -1,30 +1,27 @@ # French hacker layout -## Introduction - [Colemak Mod-DH](https://colemakmods.github.io/mod-dh/) layout for users keeping an `azerty` layout configuration on their OS. +## Introduction + This keymap is for users keeping their operating systems configured with -`azerty` - for typing passwords or in their native languages - but who -wants a Colemak Mod-DH layout on their mechanical. +`azerty` - for typing passwords in their native languages, or for their laptop +keyboard - but who wants a Colemak Mod-DH layout on their mechanical keyboard. The symbols layers was done after analysing various programming languages sources codes and should be close to optimal for typing -confort. - -Special macros for [Qubes OS](https://www.qubes-os.org/) are included. - -There is an accented characters layer for infrequent typing of french -accents. +confort, see the link at the end of the README. -Special macros for [Qubes OS](https://www.qubes-os.org/) are included. +The design is done to minimize the usage of the pinky fingers and reduces stress +on the hands, thus Alt and Ctrl keys are accessible for both hands. -## Build +## Flashing the firmware - cd keyboards/ergodox - make french_hacker +``` +qmk flash -kb ergodox_ez -km french_hacker +``` ## Design explanations -See my [blog post](http://dialectical-computing.de/blog/blog/2017/01/29/a-better-coder-layout-for-the-ergodox-ez-keyboard/). +See my [blog post](http://www.dialectical-computing.de/blog/blog/2017/01/29/a-better-coder-layout-for-the-ergodox-ez-keyboard/). diff --git a/layouts/community/ergodox/german-kinergo/keymap.c b/layouts/community/ergodox/german-kinergo/keymap.c index d9c297814069..9f8b72596e24 100644 --- a/layouts/community/ergodox/german-kinergo/keymap.c +++ b/layouts/community/ergodox/german-kinergo/keymap.c @@ -43,14 +43,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, MO(1), KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSFT, DE_Y, KC_X, KC_C, KC_V, KC_B, MO(2), - KC_LGUI, DE_CIRC, DE_LESS, KC_LEFT, KC_RIGHT, + KC_LGUI, DE_CIRC, DE_LABK, KC_LEFT, KC_RIGHT, KC_LCTRL, KC_LALT, KC_HOME, KC_BSPC,KC_DEL,KC_END, // right hand KC_PSCREEN, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, - MO(1), DE_Z, KC_U, KC_I, KC_O, KC_P, DE_UE, - KC_H, KC_J, KC_K, KC_L, DE_OE, LT(MDIA,DE_AE), + MO(1), DE_Z, KC_U, KC_I, KC_O, KC_P, DE_UDIA, + KC_H, KC_J, KC_K, KC_L, DE_ODIA, LT(MDIA,DE_ADIA), MO(2), KC_N, KC_M, KC_COMM, KC_DOT, DE_MINS, KC_RSFT, KC_DOWN, KC_UP, DE_HASH, DE_PLUS, KC_RGUI, KC_RALT, KC_RCTRL, @@ -63,14 +63,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(1), // KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, // KC_LSFT, DE_Y, KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), -// LT(SYMB,DE_LESS),CTL_T(DE_HASH), DE_ACUT, DE_MINS, DE_PLUS, +// LT(SYMB,DE_LABK),CTL_T(DE_HASH), DE_ACUT, DE_MINS, DE_PLUS, // ALT_T(KC_APP), KC_LGUI, // KC_HOME, // KC_SPC,KC_BSPC,KC_END, // // right hand // KC_MNXT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, -// TG(2), DE_Z, KC_U, KC_I, KC_O, KC_P, DE_UE, -// KC_H, KC_J, KC_K, KC_L, DE_OE, LT(MDIA,DE_AE), +// TG(2), DE_Z, KC_U, KC_I, KC_O, KC_P, DE_UDIA, +// KC_H, KC_J, KC_K, KC_L, DE_ODIA, LT(MDIA,DE_ADIA), // MEH_T(KC_NO),KC_N, KC_M, KC_COMM, KC_DOT, CTL_T(DE_MINS), KC_RSFT, // KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, TT(SYMB), // KC_LALT,CTL_T(KC_ESC), diff --git a/layouts/community/ergodox/german-lukas/keymap.c b/layouts/community/ergodox/german-lukas/keymap.c index cbc51c69593d..76a77acdb2a1 100644 --- a/layouts/community/ergodox/german-lukas/keymap.c +++ b/layouts/community/ergodox/german-lukas/keymap.c @@ -40,14 +40,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSFT, DE_Y, KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), - KC_LGUI, DE_CIRC, DE_LESS, KC_LEFT, KC_RIGHT, + KC_LGUI, DE_CIRC, DE_LABK, KC_LEFT, KC_RIGHT, KC_LCTRL, KC_LALT, KC_HOME, KC_SPC ,KC_DEL,KC_END, // right hand KC_PSCREEN, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, - TG(MDIA), DE_Z, KC_U, KC_I, KC_O, KC_P, LT(SHRT,DE_UE), - KC_H, KC_J, KC_K, KC_L, DE_OE, LT(MDIA,DE_AE), + TG(MDIA), DE_Z, KC_U, KC_I, KC_O, KC_P, LT(SHRT,DE_UDIA), + KC_H, KC_J, KC_K, KC_L, DE_ODIA, LT(MDIA,DE_ADIA), MEH_T(KC_NO), KC_N, KC_M, KC_COMM, KC_DOT, DE_MINS, KC_RSFT, KC_UP, KC_DOWN, DE_HASH, DE_PLUS, LCA_T(KC_NO), KC_RALT, KC_RCTRL, diff --git a/layouts/community/ergodox/german-manuneo/compile_keymap.py b/layouts/community/ergodox/german-manuneo/compile_keymap.py index 9ad5c88ecca5..df5d42984266 100644 --- a/layouts/community/ergodox/german-manuneo/compile_keymap.py +++ b/layouts/community/ergodox/german-manuneo/compile_keymap.py @@ -584,11 +584,6 @@ def unicode_macro_cases(config): for macro_id, uc_hex in config['unicode_macros'].items(): hi = int(uc_hex, 16) >> 8 lo = int(uc_hex, 16) & 0xFF - unimacro_keys = ", ".join( - "T({})".format( - "KP_" + digit if digit.isdigit() else digit - ) for digit in uc_hex - ) yield UNICODE_MACRO_TEMPLATE.format( macro_id=macro_id, hi=hi, lo=lo ) diff --git a/layouts/community/ergodox/german-manuneo/keymap.c b/layouts/community/ergodox/german-manuneo/keymap.c index d1e48e11025b..9b24df83db46 100644 --- a/layouts/community/ergodox/german-manuneo/keymap.c +++ b/layouts/community/ergodox/german-manuneo/keymap.c @@ -132,7 +132,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { MO(5), DE_1, DE_2, DE_3, DE_4, DE_5, DE_ACUT, MO(4), DE_X, DE_P, DE_F, DE_W, DE_G, KC_HOME, MO(1), DE_U, DE_I, DE_A, DE_E, DE_O, - MO(3), DE_UE, DE_OE, DE_AE, DE_C, DE_V, KC_END, + MO(3), DE_UDIA, DE_ODIA, DE_ADIA, DE_C, DE_V, KC_END, KC_TRNS, KC_TRNS, KC_LGUI, KC_LALT, KC_LCTL, /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_INS, TG(2), /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_APP, @@ -167,7 +167,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * '-----------------' '-----------------' */ [L1] = LAYOUT_ergodox( - KC_TRNS, DE_EXLM, DE_DQOT, DE_PARA, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, DE_EXLM, DE_DQUO, DE_SECT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DE_ASTR, DE_PIPE, DE_SLSH, DE_LCBR, DE_RCBR, KC_TRNS, KC_TRNS, DE_UNDS, DE_MINS, DE_AMPR, DE_LBRC, DE_RBRC, KC_TRNS, KC_TRNS, DE_PLUS, DE_EQL, KC_TRNS, KC_TRNS, KC_TRNS, @@ -175,9 +175,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DE_RING, KC_TRNS, - KC_TRNS, DE_HASH, DE_LESS, DE_MORE, KC_TRNS, DE_DQOT, KC_TRNS, - /*-*/ DE_DLR, DE_LPRN, DE_RPRN, DE_TILD, DE_QUOT, DE_QST, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DE_DEG, KC_TRNS, + KC_TRNS, DE_HASH, DE_LABK, DE_RABK, KC_TRNS, DE_DQUO, KC_TRNS, + /*-*/ DE_DLR, DE_LPRN, DE_RPRN, DE_TILD, DE_QUOT, DE_QUES, KC_TRNS, DE_BSLS, DE_PERC, DE_SCLN, DE_COLN, M(UC_UPWARDS_ARROW), KC_TRNS, /*-*/ /*-*/ KC_TRNS, KC_TRNS, M(UC_LEFTWARDS_ARROW), M(UC_DOWNWARDS_ARROW), M(UC_RIGHTWARDS_ARROW), KC_TRNS, KC_TRNS, diff --git a/layouts/community/ergodox/german/keymap.c b/layouts/community/ergodox/german/keymap.c index c64057dc4c62..99dda5185ca9 100644 --- a/layouts/community/ergodox/german/keymap.c +++ b/layouts/community/ergodox/german/keymap.c @@ -38,14 +38,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(1), KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSFT, DE_Y, KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), - LT(SYMB,DE_LESS),CTL_T(DE_HASH), DE_ACUT, DE_MINS, DE_PLUS, + LT(SYMB,DE_LABK),CTL_T(DE_HASH), DE_ACUT, DE_MINS, DE_PLUS, ALT_T(KC_APP), KC_LGUI, KC_HOME, KC_SPC,KC_BSPC,KC_END, // right hand KC_MNXT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, - TG(2), DE_Z, KC_U, KC_I, KC_O, KC_P, DE_UE, - KC_H, KC_J, KC_K, KC_L, DE_OE, LT(MDIA,DE_AE), + TG(2), DE_Z, KC_U, KC_I, KC_O, KC_P, DE_UDIA, + KC_H, KC_J, KC_K, KC_L, DE_ODIA, LT(MDIA,DE_ADIA), MEH_T(KC_NO),KC_N, KC_M, KC_COMM, KC_DOT, CTL_T(DE_MINS), KC_RSFT, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, TT(SYMB), KC_LALT,CTL_T(KC_ESC), diff --git a/layouts/community/ergodox/guni/keymap.c b/layouts/community/ergodox/guni/keymap.c index 0707bcf77485..cc67fbdeaab8 100644 --- a/layouts/community/ergodox/guni/keymap.c +++ b/layouts/community/ergodox/guni/keymap.c @@ -1,7 +1,4 @@ #include QMK_KEYBOARD_H -#include "debug.h" -#include "action_layer.h" -#include "bootloader.h" const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LAYOUT_ergodox( // layer 0 : default @@ -13,7 +10,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LGUI , KC_GRV,KC_LEFT,KC_RGHT,KC_LALT, KC_NO , KC_NO , KC_NO , - KC_BSPC,KC_DEL ,KC_FN23, + KC_BSPC,KC_DEL ,TO(3), // right hand KC_RBRC , KC_6, KC_7 , KC_8, KC_9, KC_0, KC_MINS, KC_END , KC_Y, KC_U , KC_I, KC_O, KC_P, MT(MOD_RCTL, KC_BSLS), @@ -34,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, - KC_TRNS,KC_TRNS,KC_FN1, + KC_TRNS,KC_TRNS,TO(0), // right hand KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS, KC_TRNS,KC_EXLM,LSFT(KC_COMM),LSFT(KC_DOT),KC_EQL,KC_AMPR, KC_TRNS, @@ -55,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, - KC_TRNS,KC_TRNS,KC_FN1 , + KC_TRNS,KC_TRNS,TO(0) , // right hand KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS ,KC_TRNS, KC_HOME, KC_TRNS, KC_TRNS, KC_END ,KC_TRNS, @@ -68,14 +65,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), LAYOUT_ergodox( // layer 3 : teensy bootloader functions // left hand - KC_FN0, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + RESET, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, - KC_TRNS,KC_TRNS,KC_FN1 , + KC_TRNS,KC_TRNS,TO(0) , // right hand KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, @@ -110,31 +107,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; - -/* id for user defined functions */ -enum function_id { - TEENSY_KEY, -}; - -/* - * Fn action definition - */ -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_FUNCTION(TEENSY_KEY), // FN0 - Teensy key - [1] = ACTION_LAYER_SET(0, ON_PRESS), - [23] = ACTION_LAYER_SET(3, ON_PRESS), - [24] = ACTION_LAYER_SET(2, ON_PRESS), - [26] = ACTION_LAYER_SET(1, ON_PRESS), -}; - -void action_function(keyrecord_t *event, uint8_t id, uint8_t opt) -{ - - if (id == TEENSY_KEY) { - clear_keyboard(); - print("\n\nJump to bootloader... "); - wait_ms(250); - bootloader_jump(); // should not return - print("not supported.\n"); - } -} diff --git a/layouts/community/ergodox/haegin/keymap.c b/layouts/community/ergodox/haegin/keymap.c index fbbe3e72e0fc..c3c2afecb8c6 100644 --- a/layouts/community/ergodox/haegin/keymap.c +++ b/layouts/community/ergodox/haegin/keymap.c @@ -55,7 +55,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_NO, KC_F, KC_G, KC_C, KC_R, KC_L, LT(MEDIA, KC_BSLS), KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, MEH_T(KC_NO), KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSPC, - ALT_T(KC_UP), KC_DOWN, KC_LBRC, KC_RBRC, KC_FN2, + ALT_T(KC_UP), KC_DOWN, KC_LBRC, KC_RBRC, KC_NO, KC_PGUP, CTL_T(KC_ESC), KC_PGDN, LCTL(KC_B), LT(MEDIA, KC_TAB), LT(SYMBOLS, KC_ENT) diff --git a/layouts/community/ergodox/ishigoya-jp/keymap.c b/layouts/community/ergodox/ishigoya-jp/keymap.c index 59040cd50c96..c70cbba8198a 100644 --- a/layouts/community/ergodox/ishigoya-jp/keymap.c +++ b/layouts/community/ergodox/ishigoya-jp/keymap.c @@ -396,7 +396,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [NUM] = LAYOUT_ergodox( // left hand KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_NO, - KC_NO, KC_NO, KC_NO, JP_DQT, KC_RBRACKET, KC_BSPC, KC_SCLN, + KC_NO, KC_NO, KC_NO, JP_DQUO, KC_RBRACKET, KC_BSPC, KC_SCLN, KC_NO, KC_NO, KC_SLSH, JP_PLUS, LSFT(KC_RBRACKET), JP_RCBR, KC_NO, KC_NO, JP_ASTR, KC_MINS, LSFT(KC_8), LSFT(KC_9), JP_COLN, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_HASH, diff --git a/layouts/community/ergodox/issmirnov/keymap.c b/layouts/community/ergodox/issmirnov/keymap.c index ce853f3d32a3..b129148b0824 100644 --- a/layouts/community/ergodox/issmirnov/keymap.c +++ b/layouts/community/ergodox/issmirnov/keymap.c @@ -201,7 +201,7 @@ void matrix_scan_user(void) { } // only runs when when the layer is changed, good for updating LED's and clearing sticky state -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { uint8_t layer = biton32(state); ergodox_board_led_off(); diff --git a/layouts/community/ergodox/jackhumbert/keymap.c b/layouts/community/ergodox/jackhumbert/keymap.c index 745d632d0227..9d357881e236 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/jjerrell/config.h b/layouts/community/ergodox/jjerrell/config.h new file mode 100644 index 000000000000..8223108d15c7 --- /dev/null +++ b/layouts/community/ergodox/jjerrell/config.h @@ -0,0 +1,21 @@ +// Copyright (C) 2021 Jerrell, Jacob <@jjerrell> +// +// This file is part of qmk_firmware. +// +// qmk_firmware is free software: you can 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. +// +// qmk_firmware is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with qmk_firmware. If not, see . + +#ifdef KEYBOARD_ergodox_ez +#undef PRODUCT +#define PRODUCT ErgoDox EZ - Modified by <@jjerrell> +#endif diff --git a/layouts/community/ergodox/jjerrell/keymap.c b/layouts/community/ergodox/jjerrell/keymap.c new file mode 100644 index 000000000000..110a8aba63fd --- /dev/null +++ b/layouts/community/ergodox/jjerrell/keymap.c @@ -0,0 +1,129 @@ +/** + * Copyright (C) 2021 Jerrell, Jacob <@jjerrell> + * + * This file is part of qmk_firmware. + * + * qmk_firmware is free software: you can 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. + * + * qmk_firmware is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with qmk_firmware. If not, see . + */ + +#include "jjerrell.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [_WORKMAN] = LAYOUT_ergodox_mods( + __________________WORKMN_L1__________________, __________________WORKMN_R1__________________, + __________________WORKMN_L2__________________, __________________WORKMN_R2__________________, + __________________WORKMN_L3__________________, __________________WORKMN_R3__________________, + XXXXXXX, XXXXXXX, XXXXXXX, KC_LSFT, KC_RSFT, XXXXXXX, XXXXXXX, XXXXXXX + ), + /* Lower - Nav/Select/Nums */ + [_LOWER] = LAYOUT_ergodox_mods( + __________________LOWER_L1___________________, __________________LOWER_R1___________________, + __________________LOWER_L2___________________, __________________LOWER_R2___________________, + __________________LOWER_L3___________________, __________________LOWER_R3___________________, + XXXXXXX, XXXXXXX, XXXXXXX, KC_LSFT, KC_0, KC_DOT, KC_COMM, KC_PLUS + ), + /* Raise - Symbols */ + [_RAISE] = LAYOUT_ergodox_common( + __________________RAISE_L1___________________, __________________RAISE_R1___________________, + __________________RAISE_L2___________________, __________________RAISE_R2___________________, + __________________RAISE_L3___________________, __________________RAISE_R3___________________, + XXXXXXX, XXXXXXX, XXXXXXX, KC_LSFT, KC_RSFT, XXXXXXX, XXXXXXX, XXXXXXX + ), + /* Adjust (Lower + Raise) */ + [_ADJUST] = LAYOUT_ergodox_common( + __________________ADJUST_L1__________________, __________________ADJUST_R1__________________, + __________________ADJUST_L2__________________, __________________ADJUST_R2__________________, + __________________ADJUST_L3__________________, __________________ADJUST_R3__________________, + XXXXXXX, XXXXXXX, XXXXXXX, KC_LSFT, KC_RSFT, XXXXXXX, XXXXXXX, XXXXXXX + ), + [_SPECIAL] = LAYOUT_ergodox_common( + XXXXXXX, XXXXXXX, KC_WH_D, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, KC_WH_L, KC_WH_U, KC_WH_R, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, KC_LALT, KC_RALT, XXXXXXX, XXXXXXX, XXXXXXX + ) +// clang-format on +}; + +#ifdef KEYBOARD_ergodox_ez +// Runs whenever there is a layer state change. +layer_state_t layer_state_set_keymap(layer_state_t state) { + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + + uint8_t layer = get_highest_layer(state); + switch (layer) { + case _LOWER: + ergodox_right_led_3_on(); + break; + case _RAISE: + ergodox_right_led_1_on(); + break; + case _ADJUST: + ergodox_right_led_1_on(); + ergodox_right_led_2_on(); + ergodox_right_led_3_on(); + break; + case _SPECIAL: + ergodox_right_led_2_on(); + break; + default: + break; + } + + ergodox_right_led_1_set(25); + ergodox_right_led_2_set(25); + ergodox_right_led_3_set(25); + + return state; +}; + +void matrix_scan_keymap(void) { + uint8_t modifiers = get_mods(); + uint8_t led_usb_state = host_keyboard_leds(); + uint8_t one_shot = get_oneshot_mods(); + uint8_t layer_is_workman = layer_state_is(_WORKMAN); + + if ((modifiers) && (layer_is_workman)) { + if (modifiers & MOD_MASK_SHIFT || led_usb_state & (1<. #pragma once +#define XXX KC_NO + #define LAYOUT_miryoku(\ -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,\ -N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ + 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,\ + N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ )\ -LAYOUT_ergodox_pretty( \ -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, K00, K01, K02, K03, K04, KC_NO, KC_NO, K05, K06, K07, K08, K09, KC_NO, \ -KC_NO, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, KC_NO, \ -KC_NO, K20, K21, K22, K23, K24, KC_NO, KC_NO, K25, K26, K27, K28, K29, KC_NO, \ -KC_NO, KC_NO, KC_NO, KC_NO, K32, K37, KC_NO, KC_NO, KC_NO, KC_NO, \ - KC_NO, KC_NO, KC_NO, KC_NO, \ - KC_NO, KC_NO, \ - K33, K34, KC_NO, KC_NO, K35, K36 \ +LAYOUT_ergodox_pretty(\ +XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,\ +XXX, K00, K01, K02, K03, K04, XXX, XXX, K05, K06, K07, K08, K09, XXX,\ +XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX,\ +XXX, K20, K21, K22, K23, K24, XXX, XXX, K25, K26, K27, K28, K29, XXX,\ +XXX, XXX, XXX, XXX, K32, K37, XXX, XXX, XXX, XXX,\ + XXX, XXX, XXX, XXX,\ + XXX, XXX,\ + K33, K34, XXX, XXX, K35, K36\ ) diff --git a/layouts/community/ergodox/manna-harbour_miryoku/keymap.c b/layouts/community/ergodox/manna-harbour_miryoku/keymap.c index a852ddd05cd4..7c5717a0fee0 100644 --- a/layouts/community/ergodox/manna-harbour_miryoku/keymap.c +++ b/layouts/community/ergodox/manna-harbour_miryoku/keymap.c @@ -1 +1,5 @@ -// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*- +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/layouts/community/ergodox/mpiechotka/keymap.c b/layouts/community/ergodox/mpiechotka/keymap.c index 6a89e38a3274..a83725519b37 100644 --- a/layouts/community/ergodox/mpiechotka/keymap.c +++ b/layouts/community/ergodox/mpiechotka/keymap.c @@ -1,21 +1,20 @@ #include QMK_KEYBOARD_H -#include "debug.h" -#include "action_layer.h" + #include "keymap_colemak.h" -enum { +enum layer_names { BASE = 0, BASE_CM, SYMB, MACR }; -enum { - LWIN = 1, - PC1, - PC2, - PC3, - PC4 +enum custom_keycodes { + LWIN = SAFE_RANGE, + KC_PC1, + KC_PC2, + KC_PC3, + KC_PC4 }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { @@ -50,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_EQL, LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT, KC_RGHT, - KC_LALT, F(LWIN), + KC_LALT, LWIN, KC_HOME, SFT_T(KC_SPC),CTL_T(KC_BSPC),LT(SYMB, KC_END), // right hand @@ -94,7 +93,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_ESC, CM_A, CM_R, CM_S, CM_T, CM_D, KC_LSFT, CM_Z, CM_X, CM_C, CM_V, CM_B, KC_EQL, LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT, KC_RGHT, - KC_LALT, F(LWIN), + KC_LALT, LWIN, KC_HOME, SFT_T(KC_SPC),CTL_T(KC_BSPC),LT(SYMB, KC_END), // right hand @@ -174,7 +173,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [MACR] = LAYOUT_ergodox( KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, DF(BASE), DF(BASE_CM), KC_NO, KC_NO, KC_NO, KC_NO, - KC_NO, F(PC1), F(PC2), F(PC3), F(PC4), KC_NO, + KC_NO, KC_PC1, KC_PC2, KC_PC3, KC_PC4, 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_TRNS,KC_TRNS, @@ -192,72 +191,60 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -const uint16_t PROGMEM fn_actions[] = { - [LWIN] = ACTION_MACRO(LWIN), - [PC1] = ACTION_MACRO(PC1), - [PC2] = ACTION_MACRO(PC2), - [PC3] = ACTION_MACRO(PC3), - [PC4] = ACTION_MACRO(PC4) -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - switch(id) { - case 0: - if (record->event.pressed) { - register_code(KC_RSFT); - } else { - unregister_code(KC_RSFT); - } - break; - case LWIN: - if (record->event.pressed) { - register_code(KC_RSFT); - unregister_code(KC_RSFT); - register_code(KC_LGUI); - } else { - unregister_code(KC_LGUI); - } - break; - case PC1: - if (!record->event.pressed) { - return MACRO(T(SLCK), W(50), T(SLCK), W(50), T(1), W(50), T(ENT), END); - } - break; - case PC2: - if (!record->event.pressed) { - return MACRO(T(SLCK), W(50), T(SLCK), W(50), T(2), W(50), T(ENT), END); - } - break; - case PC3: - if (!record->event.pressed) { - return MACRO(T(SLCK), W(50), T(SLCK), W(50), T(3), W(50), T(ENT), END); - } - break; - case PC4: - if (!record->event.pressed) { - return MACRO(T(SLCK), W(50), T(SLCK), W(50), T(4), W(50), T(ENT), END); - } - break; +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case LWIN: + if (record->event.pressed) { + tap_code(KC_RSFT); + register_code(KC_LGUI); + } else { + unregister_code(KC_LGUI); + } + return false; + case KC_PC1: + if (record->event.pressed) { + tap_code_delay(KC_SLCK, 50); + wait_ms(50); + tap_code_delay(KC_1, 50); + tap_code(KC_ENT); + } + return false; + case KC_PC2: + if (record->event.pressed) { + tap_code_delay(KC_SLCK, 50); + wait_ms(50); + tap_code_delay(KC_2, 50); + tap_code(KC_ENT); + } + return false; + case KC_PC3: + if (record->event.pressed) { + tap_code_delay(KC_SLCK, 50); + wait_ms(50); + tap_code_delay(KC_3, 50); + tap_code(KC_ENT); + } + return false; + case KC_PC4: + if (record->event.pressed) { + tap_code_delay(KC_SLCK, 50); + wait_ms(50); + tap_code_delay(KC_4, 50); + tap_code(KC_ENT); + } + return false; } - return MACRO_NONE; + return true; } -// Runs just one time when the keyboard initializes. -void matrix_init_user(void) { - -}; - // Runs constantly in the background, in a loop. void matrix_scan_user(void) { - - uint8_t layer = biton32(layer_state); - ergodox_board_led_off(); ergodox_right_led_1_off(); ergodox_right_led_2_off(); ergodox_right_led_3_off(); - switch (layer) { + + switch (get_highest_layer(layer_state)) { // TODO: Make this relevant to the ErgoDox EZ. case SYMB: ergodox_right_led_1_on(); @@ -269,4 +256,4 @@ void matrix_scan_user(void) { // none break; } -}; +} diff --git a/layouts/community/ergodox/neo2_on_qwertz_hardware/keymap.c b/layouts/community/ergodox/neo2_on_qwertz_hardware/keymap.c index 85782dda7442..7c91b3fbb089 100644 --- a/layouts/community/ergodox/neo2_on_qwertz_hardware/keymap.c +++ b/layouts/community/ergodox/neo2_on_qwertz_hardware/keymap.c @@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_ESC, DE_1, DE_2, DE_3, DE_4, DE_5, DE_ACUT, KC_TAB, DE_X, DE_V, DE_L, DE_C, DE_W, KC_PSCR, MO(1), DE_U, DE_I, DE_A, DE_E, DE_O, - KC_LSFT, DE_UE, DE_OE, DE_AE, DE_P, DE_Z, KC_SPACE, + KC_LSFT, DE_UDIA, DE_ODIA, DE_ADIA, DE_P, DE_Z, KC_SPACE, KC_LCTL, KC_LGUI, KC_LALT, MO(3), MO(2), /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_VOLD, KC_VOLU, /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, @@ -82,9 +82,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, DE_EXLM, DE_LESS, DE_MORE, DE_EQL, DE_AMPR, KC_TRNS, - /*-*/ DE_QST, DE_LPRN, DE_RPRN, DE_MINS, DE_COLN, DE_AT, - KC_TRNS, DE_PLUS, DE_PERC, DE_DQOT, DE_QUOT, DE_SCLN, KC_TRNS, + KC_TRNS, DE_EXLM, DE_LABK, DE_RABK, DE_EQL, DE_AMPR, KC_TRNS, + /*-*/ DE_QUES, DE_LPRN, DE_RPRN, DE_MINS, DE_COLN, DE_AT, + KC_TRNS, DE_PLUS, DE_PERC, DE_DQUO, DE_QUOT, DE_SCLN, KC_TRNS, /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, diff --git a/layouts/community/ergodox/norwegian_programmer_osx_pc/keymap.c b/layouts/community/ergodox/norwegian_programmer_osx_pc/keymap.c index ee9a9d1802b7..2ddd7ab20960 100644 --- a/layouts/community/ergodox/norwegian_programmer_osx_pc/keymap.c +++ b/layouts/community/ergodox/norwegian_programmer_osx_pc/keymap.c @@ -7,6 +7,18 @@ #define BASE_MAC 1 // default layer mac #define NUMB_FUNC 2 // numbers and function keys +enum custom_keycodes { + TILDE_NO = SAFE_RANGE, + LESS_NO, + GRTR_NO, + CIRC_NO, + ACUT_NO, + GRV_NO, + LESS_NO_MAC, + GRTR_NO_MAC, + ACUT_NO_MAC +}; + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 0: Basic layer PC @@ -32,18 +44,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [BASE] = LAYOUT_ergodox( // left hand - KC_PAST, NO_LBRC, NO_RBRC, NO_LCBR, NO_RCBR, KC_FN2, TG(1), - KC_PPLS, KC_Q, KC_W, KC_E, KC_R, KC_T, NO_QUO2, + KC_PAST, NO_LBRC, NO_RBRC, NO_LCBR, NO_RCBR, TILDE_NO, TG(1), + KC_PPLS, KC_Q, KC_W, KC_E, KC_R, KC_T, NO_DQUO, KC_PSLS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_PMNS, KC_Z, KC_X, KC_C, KC_V, KC_B, NO_SCLN, ALT_T(KC_ESC), KC_EXLM , NO_QUES, NO_COLN, KC_TAB, - KC_HASH, KC_FN7, - KC_FN6, + KC_HASH, GRV_NO, + ACUT_NO, OSM(MOD_LSFT),CTL_T(KC_DOT),GUI_T(KC_COMMA), // right hand - KC_FN5, NO_DLR, NO_LPRN, NO_RPRN ,KC_FN3, KC_FN4,NO_AT, - NO_APOS, KC_Y, KC_U, KC_I, KC_O, KC_P, NO_AA , - KC_H, KC_J, KC_K, KC_L, NO_OSLH, NO_AE, + CIRC_NO, NO_DLR, NO_LPRN, NO_RPRN ,LESS_NO, GRTR_NO,NO_AT, + NO_QUOT, KC_Y, KC_U, KC_I, KC_O, KC_P, NO_ARNG, + KC_H, KC_J, KC_K, KC_L, NO_OSTR, NO_AE, NO_EQL, KC_N, KC_M, KC_RIGHT, KC_DOWN, KC_UP, NO_BSLS, KC_LEFT, NO_UNDS, NO_AMPR, NO_PIPE, OSL(2), KC_INSERT, KC_PERC, @@ -72,20 +84,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `--------------------' `--------------------' */ [BASE_MAC] = LAYOUT_ergodox( - KC_TRNS, KC_TRNS,KC_TRNS, NO_LCBR_MAC,NO_RCBR_MAC, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS,KC_TRNS, S(ALGR(NO_8)),S(ALGR(NO_9)), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, NO_GRV_MAC, - KC_FN10, + KC_TRNS, ALGR(NO_BSLS), + ACUT_NO_MAC, KC_TRNS,GUI_T(KC_DOT) , CTL_T(KC_COMMA), // right hand - KC_TRNS, NO_DLR_MAC, KC_TRNS,KC_TRNS,KC_FN8, KC_FN9,NO_AT_MAC, - NO_APOS_MAC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, S(NO_4), KC_TRNS,KC_TRNS,LESS_NO_MAC, GRTR_NO_MAC,NO_QUOT, + NO_LABK, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NO_BSLS_MAC, - KC_TRNS, KC_TRNS, KC_TRNS, NO_PIPE_MAC, OSL(2), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, S(ALGR(NO_7)), + KC_TRNS, KC_TRNS, KC_TRNS, ALGR(NO_7), OSL(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS @@ -133,47 +145,57 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -enum macro_id { - TILDE_NO, LESS_NO, GRTR_NO, CIRC_NO, ACUT_NO, GRV_NO, LESS_NO_MAC, GRTR_NO_MAC, ACUT_NO_MAC -}; - -const uint16_t PROGMEM fn_actions[] = { - [2] = ACTION_MACRO(TILDE_NO), // Completed ~ character(pc and mac), no space needed. - [3] = ACTION_MACRO(LESS_NO), // < completed on keypress down, to avoid shifting the next character if it is not released first. - [4] = ACTION_MACRO(GRTR_NO), // > completed on keypress down, to avoid shifting the next character if it is not released first. - [5] = ACTION_MACRO(CIRC_NO), // Completed ^ character, no space needed. - [6] = ACTION_MACRO(ACUT_NO), // Completed ´ character, no space needed. - [7] = ACTION_MACRO(GRV_NO), // Completed ` character, no space needed. - [8] = ACTION_MACRO(LESS_NO_MAC), // < completed on keypress down, to avoid same button problem when typing <> quickly - [9] = ACTION_MACRO(GRTR_NO_MAC), // > completed on keypress down, to avoid same button problem when typing <> quickly - [10] = ACTION_MACRO(ACUT_NO_MAC), // Completed ´ character, no space needed -}; - - - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - keyevent_t event = record->event; - - switch (id) { +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { case TILDE_NO: - return (event.pressed ? MACRO( D(RALT), T(RBRC), U(RALT), T(SPC), END ) : MACRO_NONE); + if (record->event.pressed) { + tap_code16(ALGR(KC_RBRC)); + tap_code(KC_SPC); + } + return false; case LESS_NO: - return (event.pressed ? MACRO( T(NUBS), END ) : MACRO_NONE); + if (record->event.pressed) { + tap_code(KC_NUBS); + } + return false; case GRTR_NO: - return (event.pressed ? MACRO( D(LSFT), T(NUBS), U(LSFT), END ) : MACRO_NONE); + if (record->event.pressed) { + tap_code16(S(KC_NUBS)); + } + return false; case CIRC_NO: - return (event.pressed ? MACRO( D(LSFT), T(RBRC), U(LSFT), T(SPC), END ) : MACRO_NONE); + if (record->event.pressed) { + tap_code16(S(KC_RBRC)); + tap_code(KC_SPC); + } + return false; case ACUT_NO: - return (event.pressed ? MACRO( D(RALT), T(EQL), U(RALT), T(SPC), END ) : MACRO_NONE); + if (record->event.pressed) { + tap_code16(ALGR(KC_EQL)); + tap_code(KC_SPC); + } + return false; case GRV_NO: - return (event.pressed ? MACRO( D(LSFT), T(EQL), T(SPC), U(LSFT), END ) : MACRO_NONE); + if (record->event.pressed) { + SEND_STRING(SS_LSFT("= ")); + } + return false; case LESS_NO_MAC: - return (event.pressed ? MACRO( T(GRV), END ) : MACRO_NONE); + if (record->event.pressed) { + tap_code(KC_GRV); + } + return false; case GRTR_NO_MAC: - return (event.pressed ? MACRO( D(LSFT), T(GRV), U(LSFT), END ) : MACRO_NONE); + if (record->event.pressed) { + tap_code16(S(KC_GRV)); + } + return false; case ACUT_NO_MAC: - return (event.pressed ? MACRO( T(EQL), T(SPC), END ) : MACRO_NONE); + if (record->event.pressed) { + tap_code(KC_EQL); + tap_code(KC_SPC); + } + return false; } - return MACRO_NONE; -}; + return true; +} diff --git a/layouts/community/ergodox/norwegian_programmer_osx_pc_colemak/keymap.c b/layouts/community/ergodox/norwegian_programmer_osx_pc_colemak/keymap.c index af1d268bd9fb..5ca8d40db077 100644 --- a/layouts/community/ergodox/norwegian_programmer_osx_pc_colemak/keymap.c +++ b/layouts/community/ergodox/norwegian_programmer_osx_pc_colemak/keymap.c @@ -7,6 +7,18 @@ #define BASE_MAC 1 // default layer mac #define NUMB_FUNC 2 // numbers and function keys +enum custom_keycodes { + TILDE_NO = SAFE_RANGE, + LESS_NO, + GRTR_NO, + CIRC_NO, + ACUT_NO, + GRV_NO, + LESS_NO_MAC, + GRTR_NO_MAC, + ACUT_NO_MAC +}; + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 0: Basic layer PC @@ -32,18 +44,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [BASE] = LAYOUT_ergodox( // left hand - KC_PAST, NO_LBRC, NO_RBRC, NO_LCBR, NO_RCBR, KC_FN2, TG(1), - KC_PPLS, KC_Q, KC_W, KC_F, KC_P, KC_G, NO_QUO2, + KC_PAST, NO_LBRC, NO_RBRC, NO_LCBR, NO_RCBR, TILDE_NO, TG(1), + KC_PPLS, KC_Q, KC_W, KC_F, KC_P, KC_G, NO_DQUO, KC_PSLS, KC_A, KC_R, KC_S, KC_T, KC_D, KC_PMNS, KC_Z, KC_X, KC_C, KC_V, KC_B, NO_SCLN, ALT_T(KC_ESC), KC_EXLM , NO_QUES, NO_COLN, KC_TAB, - KC_HASH, KC_FN7, - KC_FN6, + KC_HASH, GRV_NO, + ACUT_NO, OSM(MOD_LSFT),CTL_T(KC_DOT),GUI_T(KC_COMMA), // right hand - KC_FN5, NO_DLR, NO_LPRN, NO_RPRN ,KC_FN3, KC_FN4,NO_AT, - NO_APOS, KC_J, KC_L, KC_U, KC_Y, NO_AA, NO_AE , - KC_H, KC_N, KC_E, KC_I, KC_O, NO_OSLH, + CIRC_NO, NO_DLR, NO_LPRN, NO_RPRN ,LESS_NO, GRTR_NO,NO_AT, + NO_QUOT, KC_J, KC_L, KC_U, KC_Y, NO_ARNG, NO_AE , + KC_H, KC_N, KC_E, KC_I, KC_O, NO_OSTR, NO_EQL, KC_K, KC_M, KC_RIGHT, KC_DOWN, KC_UP, NO_BSLS, KC_LEFT, NO_UNDS, NO_AMPR, NO_PIPE, OSL(2), KC_INSERT, KC_PERC, @@ -72,20 +84,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `--------------------' `--------------------' */ [BASE_MAC] = LAYOUT_ergodox( - KC_TRNS, KC_TRNS,KC_TRNS, NO_LCBR_MAC,NO_RCBR_MAC, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS,KC_TRNS, S(ALGR(NO_8)),S(ALGR(NO_9)), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, NO_GRV_MAC, - KC_FN10, + KC_TRNS, ALGR(NO_BSLS), + ACUT_NO_MAC, KC_TRNS,GUI_T(KC_DOT) , CTL_T(KC_COMMA), // right hand - KC_TRNS, NO_DLR_MAC, KC_TRNS,KC_TRNS,KC_FN8, KC_FN9,NO_AT_MAC, - NO_APOS_MAC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, S(NO_4), KC_TRNS,KC_TRNS,LESS_NO_MAC, GRTR_NO_MAC,NO_QUOT, + NO_LABK, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NO_BSLS_MAC, - KC_TRNS, KC_TRNS, KC_TRNS, NO_PIPE_MAC, OSL(2), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, S(ALGR(NO_7)), + KC_TRNS, KC_TRNS, KC_TRNS, ALGR(NO_7), OSL(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS @@ -133,47 +145,57 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -enum macro_id { - TILDE_NO, LESS_NO, GRTR_NO, CIRC_NO, ACUT_NO, GRV_NO, LESS_NO_MAC, GRTR_NO_MAC, ACUT_NO_MAC -}; - -const uint16_t PROGMEM fn_actions[] = { - [2] = ACTION_MACRO(TILDE_NO), // Completed ~ character(pc and mac), no space needed. - [3] = ACTION_MACRO(LESS_NO), // < completed on keypress down, to avoid shifting the next character if it is not released first. - [4] = ACTION_MACRO(GRTR_NO), // > completed on keypress down, to avoid shifting the next character if it is not released first. - [5] = ACTION_MACRO(CIRC_NO), // Completed ^ character, no space needed. - [6] = ACTION_MACRO(ACUT_NO), // Completed ´ character, no space needed. - [7] = ACTION_MACRO(GRV_NO), // Completed ` character, no space needed. - [8] = ACTION_MACRO(LESS_NO_MAC), // < completed on keypress down, to avoid same button problem when typing <> quickly - [9] = ACTION_MACRO(GRTR_NO_MAC), // > completed on keypress down, to avoid same button problem when typing <> quickly - [10] = ACTION_MACRO(ACUT_NO_MAC), // Completed ´ character, no space needed -}; - - - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - keyevent_t event = record->event; - - switch (id) { +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { case TILDE_NO: - return (event.pressed ? MACRO( D(RALT), T(RBRC), U(RALT), T(SPC), END ) : MACRO_NONE); + if (record->event.pressed) { + tap_code16(ALGR(KC_RBRC)); + tap_code(KC_SPC); + } + return false; case LESS_NO: - return (event.pressed ? MACRO( T(NUBS), END ) : MACRO_NONE); + if (record->event.pressed) { + tap_code(KC_NUBS); + } + return false; case GRTR_NO: - return (event.pressed ? MACRO( D(LSFT), T(NUBS), U(LSFT), END ) : MACRO_NONE); + if (record->event.pressed) { + tap_code16(S(KC_NUBS)); + } + return false; case CIRC_NO: - return (event.pressed ? MACRO( D(LSFT), T(RBRC), U(LSFT), T(SPC), END ) : MACRO_NONE); + if (record->event.pressed) { + tap_code16(S(KC_RBRC)); + tap_code(KC_SPC); + } + return false; case ACUT_NO: - return (event.pressed ? MACRO( D(RALT), T(EQL), U(RALT), T(SPC), END ) : MACRO_NONE); + if (record->event.pressed) { + tap_code16(ALGR(KC_EQL)); + tap_code(KC_SPC); + } + return false; case GRV_NO: - return (event.pressed ? MACRO( D(LSFT), T(EQL), T(SPC), U(LSFT), END ) : MACRO_NONE); + if (record->event.pressed) { + SEND_STRING(SS_LSFT("= ")); + } + return false; case LESS_NO_MAC: - return (event.pressed ? MACRO( T(GRV), END ) : MACRO_NONE); + if (record->event.pressed) { + tap_code(KC_GRV); + } + return false; case GRTR_NO_MAC: - return (event.pressed ? MACRO( D(LSFT), T(GRV), U(LSFT), END ) : MACRO_NONE); + if (record->event.pressed) { + tap_code16(S(KC_GRV)); + } + return false; case ACUT_NO_MAC: - return (event.pressed ? MACRO( T(EQL), T(SPC), END ) : MACRO_NONE); + if (record->event.pressed) { + tap_code(KC_EQL); + tap_code(KC_SPC); + } + return false; } - return MACRO_NONE; -}; + return true; +} diff --git a/layouts/community/ergodox/nstickney/keymap.c b/layouts/community/ergodox/nstickney/keymap.c deleted file mode 100644 index a37bc5f9642b..000000000000 --- a/layouts/community/ergodox/nstickney/keymap.c +++ /dev/null @@ -1,142 +0,0 @@ -#include "nstickney.h" - -/* - * This keymap simulates the key limitations of an Iris on an ErgoDox. See the - * matching iris layout (/keyboards/keebio/iris/keymaps/nstickney) for further - * information. - */ - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [BASE] = LAYOUT_ergodox( - // left hand - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, XXXXXXX, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, XXXXXXX, - CC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, - KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, AC_SLSH, - TD(LOCKS), XXXXXXX, - XXXXXXX, - FC_BSLS, KC_SPC, XXXXXXX, - // right hand - XXXXXXX, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, - XXXXXXX, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, - KC_H, KC_J, KC_K, KC_L, KC_SCLN, CC_QUOT, - XXXXXXX, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, - AC_EQL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, TD(LAYERS), - XXXXXXX, - XXXXXXX, KC_ENT, FC_MINS - ), - - [SYMB] = LAYOUT_ergodox( - // left hand - UC(0x00EF), UC(0x00A1), UC(0x00B2), UC(0x00B3), UC(0x00A4), UC(0x20AC), _______, - _______, UC(0x00E4), UC(0x00E5), UC(0x00E9), UC(0x00AE), UC(0x00FE), _______, - _______, UC(0x00E1), UC(0x00DF), UC(0x00F0), UC(0x00EC), UC(0x00ED), - _______, UC(0x00E6), UC(0x00E8), UC(0x00A9), UC(0x00EA), UC(0x00EB), _______, - _______, _______, _______, _______, UC(0x00BF), - _______, _______, - _______, - _______, UC(0x00AC), _______, - // right hand - _______, UC(0x00BC), UC(0x00BD), UC(0x00BE), UC(0x2018), UC(0x2019), _______, - _______, UC(0x00FC), UC(0x00FA), UC(0x00ED), UC(0x00F3), UC(0x00F6), _______, - UC(0x00EE), UC(0x00E0), UC(0x00E2), UC(0x00F8), UC(0x00B6), UC(0x00B4), - _______, UC(0x00F1), UC(0x00FD), UC(0x00E7), UC(0x00F4), UC(0x00BF), _______, - UC(0x00D7), _______, _______, _______, _______, - _______, _______, - _______, - _______, UC(0x00B1), _______ - ), - - [SYSH] = LAYOUT_ergodox( - // left hand - UC(0x00CF), UC(0x00B9), UC(0x2200), UC(0x2201), UC(0x00A3), UC(0x00A5), _______, - _______, UC(0x00C4), UC(0x00C5), UC(0x00C9), UC(0x2122), UC(0x00DE), _______, - _______, UC(0x00C1), UC(0x00A7), UC(0x00D0), UC(0x00CC), UC(0x00CD), - _______, UC(0x00C6), UC(0x00C8), UC(0x00A2), UC(0x00CA), UC(0x00CB), _______, - _______, _______, _______, _______, UC(0x203D), - _______, _______, - _______, - _______, UC(0x00A6), _______, - // right hand - _______, UC(0x00B5), UC(0x00AB), UC(0x00BB), UC(0x201C), UC(0x201D), _______, - _______, UC(0x00DC), UC(0x00DA), UC(0x00CD), UC(0x00D3), UC(0x00D6), _______, - UC(0x00CE), UC(0x00C1), UC(0x00C2), UC(0x00D8), UC(0x00B0), UC(0x00A8), - _______, UC(0x00D1), UC(0x00DD), UC(0x00C7), UC(0x00D4), UC(0x203D), _______, - UC(0x00F7), _______, _______, _______, _______, - _______, _______, - _______, - _______, UC(0x00AA), _______ - ), - - [NUMP] = LAYOUT_ergodox( - // left hand - _______, _______, KC_P7, KC_P8, KC_P9, KC_PSLS, _______, - _______, _______, KC_P4, KC_P5, KC_P6, KC_PAST, _______, - _______, _______, KC_P1, KC_P2, KC_P3, KC_PMNS, - _______, _______, KC_P0, KC_PCMM, KC_PDOT, KC_PPLS, _______, - _______, _______, _______, _______, _______, - _______, _______, - _______, - _______, _______, _______, - // right hand - _______, _______, KC_P7, KC_P8, KC_P9, KC_PSLS, _______, - _______, _______, KC_P4, KC_P5, KC_P6, KC_PAST, _______, - _______, KC_P1, KC_P2, KC_P3, KC_PMNS, _______, - _______, _______, KC_P0, KC_PCMM, KC_PDOT, KC_PPLS, _______, - _______, _______, _______, _______, _______, - _______, _______, - _______, - _______, KC_PENT, _______ - ), - - [FCTN] = LAYOUT_ergodox( - // left hand - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, - KC_PSCR, RGB_TOG, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, - KC_PAUS, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, - _______, KC_MPRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_MNXT, _______, - _______, _______, _______, _______, _______, - KC_F11, _______, - _______, - _______, _______, _______, - // right hand - _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_SYSREQ, - _______, UC(0x2014), KC_LBRC, KC_RBRC, S(KC_LBRC), S(KC_RBRC), KC_INS, - KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_BRIU, KC_CLR, - _______, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, KC_BRID, _______, - _______, _______, _______, _______, _______, - _______, KC_F12, - _______, - _______, _______, _______ - ), -}; - -// Runs just one time when the keyboard initializes. -void matrix_init_user (void) { - ergodox_board_led_off(); -}; - -// Runs constantly in the background, in a loop. -void matrix_scan_user (void) { - - if (IS_LAYER_ON(SYMB) || IS_LAYER_ON(SYSH)) { - ergodox_right_led_1_on(); - } else { - ergodox_right_led_1_off(); - } - - if (IS_LAYER_ON(NUMP)) { - ergodox_right_led_2_on(); - } else { - ergodox_right_led_2_off(); - } - - if (IS_LAYER_ON(FCTN)) { - ergodox_right_led_3_on(); - } else { - ergodox_right_led_3_off(); - } - -}; \ No newline at end of file diff --git a/layouts/community/ergodox/ordinary/keymap.c b/layouts/community/ergodox/ordinary/keymap.c index 86ab86491004..8d0425e49b24 100644 --- a/layouts/community/ergodox/ordinary/keymap.c +++ b/layouts/community/ergodox/ordinary/keymap.c @@ -1,34 +1,12 @@ #include QMK_KEYBOARD_H -#include "led.h" -#include "mousekey.h" -#include "debug.h" -#include "action_layer.h" -#include "action_util.h" - -#define BASE 0 // default layer -#define SYMB 1 // symbols layer -#define MDIA 2 // media layer -#define SPEC 3 // special layer -#define RBASE 4 // reverse default layer - -#define LSymb 10 // left symbol-shift key -#define LMdia 11 // left media-shift key -#define LSpec 12 // left special-shift key -#define RSymb 13 // right symbol-shift key -#define RMdia 14 // right media-shift key -#define RSpec 15 // right special-shift key - -#define NotEq 16 // != macro -#define GrtEq 17 // >= macro -#define LesEq 18 // <= macro -#define DeRef 19 // -> macro - -#define MUL 20 // mouse up left -#define MUR 21 // mouse up right -#define MDL 22 // mouse down left -#define MDR 23 // mouse down right - +enum layer_names { + BASE, // default layer + SYMB, // symbols layer + MDIA, // media layer + SPEC, // special layer + RBASE // reverse default layer +}; /* * The Ordinary Layout for the Ergodox EZ keyboard, v5 @@ -69,18 +47,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [BASE] = LAYOUT_ergodox( // left hand - F(LSpec) ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_ESC -,F(LMdia) ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_LBRC -,M(LSymb) ,LT(RBASE, KC_A),KC_S ,KC_D ,LT(RBASE, KC_F) ,KC_G + KC_NO ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_ESC +,KC_NO ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_LBRC +,KC_NO ,LT(RBASE, KC_A),KC_S ,KC_D ,LT(RBASE, KC_F) ,KC_G ,KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,LSFT(KC_TAB) ,KC_LCTL ,MEH_T(KC_NO) ,ALL_T(KC_NO),KC_LALT,KC_LGUI ,KC_HOME,KC_END ,KC_PGUP ,KC_BSPC,KC_DEL ,KC_PGDN // right hand - ,KC_MINS ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,F(RSpec) - ,KC_RBRC ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,F(RMdia) - ,KC_H ,LT(RBASE, KC_J),KC_K ,KC_L ,LT(RBASE,KC_SCLN),F(RSymb) + ,KC_MINS ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_NO + ,KC_RBRC ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_NO + ,KC_H ,LT(RBASE, KC_J),KC_K ,KC_L ,LT(RBASE,KC_SCLN),KC_NO ,KC_TAB ,KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH ,KC_RSFT ,KC_RGUI ,KC_RALT,KC_HYPR,KC_MEH ,KC_RCTL ,KC_LEFT ,KC_RGHT @@ -116,9 +94,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ,KC_TRNS ,KC_HASH ,KC_DLR ,KC_LPRN ,KC_RPRN ,KC_GRV ,KC_TRNS ,KC_PERC ,KC_CIRC ,KC_LBRC ,KC_RBRC ,KC_TILD ,KC_QUOT ,KC_SCLN ,KC_AMPR ,KC_ASTR ,LSFT(KC_COMM),LSFT(KC_DOT) - ,M(GrtEq),M(LesEq) + ,KC_NO,KC_NO ,KC_NO - ,KC_PLUS ,KC_EQL ,M(NotEq) + ,KC_PLUS ,KC_EQL ,KC_NO // right hand ,KC_MINS ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_TRNS ,LSFT(KC_DOT),KC_PIPE ,KC_7 ,KC_8 ,KC_9 ,KC_SLSH ,KC_TRNS @@ -127,7 +105,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ,KC_0 ,KC_DOT ,KC_EQL,KC_PLUS ,KC_ENT ,KC_NO ,KC_NO ,KC_NO - ,M(DeRef) ,LSFT(KC_MINS),KC_MINS + ,KC_NO ,LSFT(KC_MINS),KC_MINS ), /******* Media Layer ******************************************************************************************************* @@ -154,9 +132,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [MDIA] = LAYOUT_ergodox( // left hand KC_TRNS ,KC_F11 ,KC_F12 ,KC_F13 ,KC_F14 ,KC_F15 ,KC_ESC -,KC_TRNS ,KC_POWER ,M(MUL) ,KC_MS_U ,M(MUR) ,KC_VOLU ,KC_WH_U +,KC_TRNS ,KC_POWER ,KC_NO ,KC_MS_U ,KC_NO ,KC_VOLU ,KC_WH_U ,KC_TRNS ,KC_SLEP ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_VOLD -,KC_TRNS ,KC_NO ,M(MDL) ,KC_MS_D ,M(MDR) ,KC_MUTE ,KC_WH_D +,KC_TRNS ,KC_NO ,KC_NO ,KC_MS_D ,KC_NO ,KC_MUTE ,KC_WH_D ,KC_NO ,KC_NO ,KC_BTN3 ,KC_BTN1 ,KC_BTN2 ,KC_WSTP ,KC_WREF ,KC_WSCH @@ -257,248 +235,26 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -const uint16_t PROGMEM fn_actions[] = { - // the faux shift keys are implemented as macro taps - [LSymb] = ACTION_MACRO_TAP(LSymb) - ,[LMdia] = ACTION_MACRO_TAP(LMdia) - ,[LSpec] = ACTION_MACRO_TAP(LSpec) - ,[RSymb] = ACTION_MACRO_TAP(RSymb) - ,[RMdia] = ACTION_MACRO_TAP(RMdia) - ,[RSpec] = ACTION_MACRO_TAP(RSpec) -}; - -uint16_t symb_shift = 0; -uint16_t mdia_shift = 0; -uint16_t spec_shift = 0; - -bool mdia_lock = false; -bool symb_lock = false; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - switch(id) { - // There are two shift keys for each layer so we increment a layer_shift var when one - // is pressed and decrement when one is released. The shift counts are bound between 0 and 2 - // only because sometimes rapid pressing led to irregular events; this way the states - // are self healing during use. - - case LSymb: // - if (record->event.pressed) { // when the LSymb button is pressed - if(++symb_shift > 2) symb_shift = 2; // increment the symb shift count, max two - if(spec_shift) symb_lock = !symb_lock; // if the Special layer is on, toggle the shift lock - layer_on(SYMB); // in any case, turn on the Symbols layer - } else { // when the LSymb button is released - if(--symb_shift < 0) symb_shift = 0; // decrement the shift count, minimum zero - if((!symb_shift) && (!symb_lock)) layer_off(SYMB); // if both shifts are released and the lock is off, turn off the Symbols layer - } - break; - - case LMdia: - if (record->event.pressed) { - if (record->tap.count && (!mdia_shift) && (!mdia_lock) && (!spec_shift)) { - register_code(KC_TAB); - } else { - if(spec_shift) mdia_lock = !mdia_lock; - if(++mdia_shift > 2) mdia_shift = 2; - layer_on(MDIA); - } - } else { - if(record->tap.count && (!mdia_shift) && (!mdia_lock) && (!spec_shift)) { - unregister_code(KC_TAB); - } else { - if(--mdia_shift < 0) mdia_shift = 0; - if((!mdia_shift) && (!mdia_lock)) layer_off(MDIA); - } - } - break; - - case LSpec: - if (record->event.pressed) { // when the LSpec button is pressed - if(symb_shift) symb_lock = !symb_lock; // if another layer button is engaged, then - else if(mdia_shift) mdia_lock = !mdia_lock; // lock that layer, be it caps or symb or mdia - else if (record->tap.count && !record->tap.interrupted && (!spec_shift)) { - register_code(KC_GRV); // otherwise, if it's an uninterrupted tap, emit a char - } else { - if(++spec_shift > 2) spec_shift = 2; - layer_on(SPEC); // otherwise, turn on the Special layer - } - } else { - if(record->tap.count && !record->tap.interrupted && (!spec_shift)) { - unregister_code(KC_GRV); - } else { - if(--spec_shift < 0) spec_shift = 0; - if(!spec_shift) layer_off(SPEC); - } - } - break; - - case RSymb: - if (record->event.pressed) { - if (record->tap.count && (!symb_shift) && (!symb_lock) && (!spec_shift)) { - register_code(KC_QUOT); - } else { - if(++symb_shift > 2) symb_shift = 2; - if(spec_shift) symb_lock = !symb_lock; - layer_on(SYMB); - } - } else { - if(record->tap.count && (!symb_shift) && (!symb_lock) && (!spec_shift)) { - unregister_code(KC_QUOT); - } else { - if(--symb_shift < 0) symb_shift = 0; - if((!symb_shift) && (!symb_lock)) layer_off(SYMB); - } - } - break; - - case RMdia: - if (record->event.pressed) { - if (record->tap.count && (!mdia_shift) && (!mdia_lock) && (!spec_shift)) { - register_code(KC_BSLS); - } else { - if(++mdia_shift > 2) mdia_shift = 2; - if(spec_shift) mdia_lock = !mdia_lock; - layer_on(MDIA); - } - } else { - if(record->tap.count && (!mdia_shift) && (!mdia_lock) && (!spec_shift)) { - unregister_code(KC_BSLS); - } else { - if(--mdia_shift < 0) mdia_shift = 0; - if((!mdia_shift) && (!mdia_lock)) layer_off(MDIA); - } - } - break; - - case RSpec: - if (record->event.pressed) { - if(symb_shift) symb_lock = !symb_lock; - else if(mdia_shift) mdia_lock = !mdia_lock; - else if (record->tap.count && !record->tap.interrupted && (!spec_shift)) { - register_code(KC_EQL); - } else { - if(++spec_shift > 2) spec_shift = 2; - layer_on(SPEC); - } - } else { - if(record->tap.count && !record->tap.interrupted && (!spec_shift)) { - unregister_code(KC_EQL); - } else { - if(--spec_shift < 0) spec_shift = 0; - if(!spec_shift) layer_off(SPEC); - } - } - break; - - case NotEq: - if (record->event.pressed) { - return MACRO( I(10), D(LSFT), T(1), U(LSFT), T(EQL), END ); // != - } - break; - - case GrtEq: - if (record->event.pressed) { - return MACRO( I(10), D(LSFT), T(COMM), U(LSFT), T(EQL), END ); // <= - } - break; - - case LesEq: - if (record->event.pressed) { - return MACRO( I(10), D(LSFT), T(DOT), U(LSFT), T(EQL), END ); // >= - } - break; - - case DeRef: - if (record->event.pressed) { - return MACRO( I(10), T(MINS), D(LSFT), T(DOT), U(LSFT), END ); // -> - } - break; - - // mouse diagonals - - case MUL: // mouse up left - if (record->event.pressed) { - mousekey_on(KC_MS_UP); - mousekey_on(KC_MS_LEFT); - mousekey_send(); - } else { - mousekey_off(KC_MS_UP); - mousekey_off(KC_MS_LEFT); - mousekey_send(); - } - break; - - case MUR: // mouse up right - if (record->event.pressed) { - mousekey_on(KC_MS_UP); - mousekey_on(KC_MS_RIGHT); - mousekey_send(); - } else { - mousekey_off(KC_MS_UP); - mousekey_off(KC_MS_RIGHT); - mousekey_send(); - } - break; - - case MDL: // mouse down left - if (record->event.pressed) { - mousekey_on(KC_MS_DOWN); - mousekey_on(KC_MS_LEFT); - mousekey_send(); - } else { - mousekey_off(KC_MS_DOWN); - mousekey_off(KC_MS_LEFT); - mousekey_send(); - } - break; - - case MDR: // mouse down right - if (record->event.pressed) { - mousekey_on(KC_MS_DOWN); - mousekey_on(KC_MS_RIGHT); - mousekey_send(); - } else { - mousekey_off(KC_MS_DOWN); - mousekey_off(KC_MS_RIGHT); - mousekey_send(); - } - break; - - default: - // none - break; - } - - return MACRO_NONE; -}; - -// Runs just one time when the keyboard initializes. -void matrix_init_user(void) { - -}; - // Runs constantly in the background, in a loop. void matrix_scan_user(void) { // shift or caps lock turns on red light - if((keyboard_report->mods & MOD_BIT(KC_LSFT)) - || (keyboard_report->mods & MOD_BIT(KC_RSFT)) - || (host_keyboard_leds() & (1<mods & MOD_BIT(KC_LSFT)) || (keyboard_report->mods & MOD_BIT(KC_RSFT)) || (host_keyboard_leds() & (1<= macro -#define LesEq 18 // <= macro -#define DeRef 19 // -> macro - -#define MUL 20 // mouse up left -#define MUR 21 // mouse up right -#define MDL 22 // mouse down left -#define MDR 23 // mouse down right - +enum layer_names { + BASE, // default layer + SYMB, // symbols layer + MDIA, // media layer + SPEC, // special layer + RBASE // reverse default layer +}; /* * The Ordinary Layout for the Ergodox EZ keyboard, v5 @@ -69,18 +47,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [BASE] = LAYOUT_ergodox( // left hand - F(LSpec) ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_ESC -,F(LMdia) ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,LSFT(KC_TAB) -,M(LSymb) ,LT(RBASE, KC_A),KC_S ,KC_D ,LT(RBASE, KC_F) ,KC_G + KC_NO ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_ESC +,KC_NO ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,LSFT(KC_TAB) +,KC_NO ,LT(RBASE, KC_A),KC_S ,KC_D ,LT(RBASE, KC_F) ,KC_G ,KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_LBRC ,KC_LEFT ,KC_RIGHT ,KC_LCTL,KC_LALT,KC_LGUI ,KC_HOME,KC_END ,KC_PGUP ,KC_BSPC,KC_DEL ,KC_PGDN // right hand - ,KC_MINS ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,F(RSpec) - ,KC_TAB ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,F(RMdia) - ,KC_H ,LT(RBASE, KC_J),KC_K ,KC_L ,LT(RBASE,KC_SCLN),F(RSymb) + ,KC_MINS ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_NO + ,KC_TAB ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_NO + ,KC_H ,LT(RBASE, KC_J),KC_K ,KC_L ,LT(RBASE,KC_SCLN),KC_NO ,KC_RBRC ,KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH ,KC_RSFT ,KC_RGUI ,KC_RALT,KC_RCTL,KC_UP ,KC_DOWN ,KC_LEFT ,KC_RGHT @@ -116,9 +94,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ,KC_TRNS ,KC_HASH ,KC_DLR ,KC_LPRN ,KC_RPRN ,KC_GRV ,KC_TRNS ,KC_PERC ,KC_CIRC ,KC_LBRC ,KC_RBRC ,KC_TILD ,KC_QUOT ,KC_SCLN ,KC_AMPR ,KC_ASTR ,LSFT(KC_COMM),LSFT(KC_DOT) - ,M(GrtEq),M(LesEq) + ,KC_NO,KC_NO ,KC_NO - ,KC_PLUS ,KC_EQL ,M(NotEq) + ,KC_PLUS ,KC_EQL ,KC_NO // right hand ,KC_MINS ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_TRNS ,LSFT(KC_DOT),KC_PIPE ,KC_7 ,KC_8 ,KC_9 ,KC_SLSH ,KC_TRNS @@ -127,7 +105,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ,KC_0 ,KC_DOT ,KC_EQL,KC_PLUS ,KC_ENT ,KC_NO ,KC_NO ,KC_NO - ,M(DeRef) ,LSFT(KC_MINS),KC_MINS + ,KC_NO ,LSFT(KC_MINS),KC_MINS ), /******* Media Layer ******************************************************************************************************* @@ -154,9 +132,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [MDIA] = LAYOUT_ergodox( // left hand KC_TRNS ,KC_F11 ,KC_F12 ,KC_F13 ,KC_F14 ,KC_F15 ,KC_ESC -,KC_TRNS ,KC_POWER ,M(MUL) ,KC_MS_U ,M(MUR) ,KC_VOLU ,KC_WH_U +,KC_TRNS ,KC_POWER ,KC_NO ,KC_MS_U ,KC_NO ,KC_VOLU ,KC_WH_U ,KC_TRNS ,KC_SLEP ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_VOLD -,KC_TRNS ,KC_NO ,M(MDL) ,KC_MS_D ,M(MDR) ,KC_MUTE ,KC_WH_D +,KC_TRNS ,KC_NO ,KC_NO ,KC_MS_D ,KC_NO ,KC_MUTE ,KC_WH_D ,KC_NO ,KC_NO ,KC_BTN3 ,KC_BTN1 ,KC_BTN2 ,KC_WSTP ,KC_WREF ,KC_WSCH @@ -257,248 +235,26 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -const uint16_t PROGMEM fn_actions[] = { - // the faux shift keys are implemented as macro taps - [LSymb] = ACTION_MACRO_TAP(LSymb) - ,[LMdia] = ACTION_MACRO_TAP(LMdia) - ,[LSpec] = ACTION_MACRO_TAP(LSpec) - ,[RSymb] = ACTION_MACRO_TAP(RSymb) - ,[RMdia] = ACTION_MACRO_TAP(RMdia) - ,[RSpec] = ACTION_MACRO_TAP(RSpec) -}; - -uint16_t symb_shift = 0; -uint16_t mdia_shift = 0; -uint16_t spec_shift = 0; - -bool mdia_lock = false; -bool symb_lock = false; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - switch(id) { - // There are two shift keys for each layer so we increment a layer_shift var when one - // is pressed and decrement when one is released. The shift counts are bound between 0 and 2 - // only because sometimes rapid pressing led to irregular events; this way the states - // are self healing during use. - - case LSymb: // - if (record->event.pressed) { // when the LSymb button is pressed - if(++symb_shift > 2) symb_shift = 2; // increment the symb shift count, max two - if(spec_shift) symb_lock = !symb_lock; // if the Special layer is on, toggle the shift lock - layer_on(SYMB); // in any case, turn on the Symbols layer - } else { // when the LSymb button is released - if(--symb_shift < 0) symb_shift = 0; // decrement the shift count, minimum zero - if((!symb_shift) && (!symb_lock)) layer_off(SYMB); // if both shifts are released and the lock is off, turn off the Symbols layer - } - break; - - case LMdia: - if (record->event.pressed) { - if (record->tap.count && (!mdia_shift) && (!mdia_lock) && (!spec_shift)) { - register_code(KC_TAB); - } else { - if(spec_shift) mdia_lock = !mdia_lock; - if(++mdia_shift > 2) mdia_shift = 2; - layer_on(MDIA); - } - } else { - if(record->tap.count && (!mdia_shift) && (!mdia_lock) && (!spec_shift)) { - unregister_code(KC_TAB); - } else { - if(--mdia_shift < 0) mdia_shift = 0; - if((!mdia_shift) && (!mdia_lock)) layer_off(MDIA); - } - } - break; - - case LSpec: - if (record->event.pressed) { // when the LSpec button is pressed - if(symb_shift) symb_lock = !symb_lock; // if another layer button is engaged, then - else if(mdia_shift) mdia_lock = !mdia_lock; // lock that layer, be it caps or symb or mdia - else if (record->tap.count && !record->tap.interrupted && (!spec_shift)) { - register_code(KC_GRV); // otherwise, if it's an uninterrupted tap, emit a char - } else { - if(++spec_shift > 2) spec_shift = 2; - layer_on(SPEC); // otherwise, turn on the Special layer - } - } else { - if(record->tap.count && !record->tap.interrupted && (!spec_shift)) { - unregister_code(KC_GRV); - } else { - if(--spec_shift < 0) spec_shift = 0; - if(!spec_shift) layer_off(SPEC); - } - } - break; - - case RSymb: - if (record->event.pressed) { - if (record->tap.count && (!symb_shift) && (!symb_lock) && (!spec_shift)) { - register_code(KC_QUOT); - } else { - if(++symb_shift > 2) symb_shift = 2; - if(spec_shift) symb_lock = !symb_lock; - layer_on(SYMB); - } - } else { - if(record->tap.count && (!symb_shift) && (!symb_lock) && (!spec_shift)) { - unregister_code(KC_QUOT); - } else { - if(--symb_shift < 0) symb_shift = 0; - if((!symb_shift) && (!symb_lock)) layer_off(SYMB); - } - } - break; - - case RMdia: - if (record->event.pressed) { - if (record->tap.count && (!mdia_shift) && (!mdia_lock) && (!spec_shift)) { - register_code(KC_BSLS); - } else { - if(++mdia_shift > 2) mdia_shift = 2; - if(spec_shift) mdia_lock = !mdia_lock; - layer_on(MDIA); - } - } else { - if(record->tap.count && (!mdia_shift) && (!mdia_lock) && (!spec_shift)) { - unregister_code(KC_BSLS); - } else { - if(--mdia_shift < 0) mdia_shift = 0; - if((!mdia_shift) && (!mdia_lock)) layer_off(MDIA); - } - } - break; - - case RSpec: - if (record->event.pressed) { - if(symb_shift) symb_lock = !symb_lock; - else if(mdia_shift) mdia_lock = !mdia_lock; - else if (record->tap.count && !record->tap.interrupted && (!spec_shift)) { - register_code(KC_EQL); - } else { - if(++spec_shift > 2) spec_shift = 2; - layer_on(SPEC); - } - } else { - if(record->tap.count && !record->tap.interrupted && (!spec_shift)) { - unregister_code(KC_EQL); - } else { - if(--spec_shift < 0) spec_shift = 0; - if(!spec_shift) layer_off(SPEC); - } - } - break; - - case NotEq: - if (record->event.pressed) { - return MACRO( I(10), D(LSFT), T(1), U(LSFT), T(EQL), END ); // != - } - break; - - case GrtEq: - if (record->event.pressed) { - return MACRO( I(10), D(LSFT), T(COMM), U(LSFT), T(EQL), END ); // <= - } - break; - - case LesEq: - if (record->event.pressed) { - return MACRO( I(10), D(LSFT), T(DOT), U(LSFT), T(EQL), END ); // >= - } - break; - - case DeRef: - if (record->event.pressed) { - return MACRO( I(10), T(MINS), D(LSFT), T(DOT), U(LSFT), END ); // -> - } - break; - - // mouse diagonals - - case MUL: // mouse up left - if (record->event.pressed) { - mousekey_on(KC_MS_UP); - mousekey_on(KC_MS_LEFT); - mousekey_send(); - } else { - mousekey_off(KC_MS_UP); - mousekey_off(KC_MS_LEFT); - mousekey_send(); - } - break; - - case MUR: // mouse up right - if (record->event.pressed) { - mousekey_on(KC_MS_UP); - mousekey_on(KC_MS_RIGHT); - mousekey_send(); - } else { - mousekey_off(KC_MS_UP); - mousekey_off(KC_MS_RIGHT); - mousekey_send(); - } - break; - - case MDL: // mouse down left - if (record->event.pressed) { - mousekey_on(KC_MS_DOWN); - mousekey_on(KC_MS_LEFT); - mousekey_send(); - } else { - mousekey_off(KC_MS_DOWN); - mousekey_off(KC_MS_LEFT); - mousekey_send(); - } - break; - - case MDR: // mouse down right - if (record->event.pressed) { - mousekey_on(KC_MS_DOWN); - mousekey_on(KC_MS_RIGHT); - mousekey_send(); - } else { - mousekey_off(KC_MS_DOWN); - mousekey_off(KC_MS_RIGHT); - mousekey_send(); - } - break; - - default: - // none - break; - } - - return MACRO_NONE; -}; - -// Runs just one time when the keyboard initializes. -void matrix_init_user(void) { - -}; - // Runs constantly in the background, in a loop. void matrix_scan_user(void) { // shift or caps lock turns on red light - if((keyboard_report->mods & MOD_BIT(KC_LSFT)) - || (keyboard_report->mods & MOD_BIT(KC_RSFT)) - || (host_keyboard_leds() & (1<mods & MOD_BIT(KC_LSFT)) || (keyboard_report->mods & MOD_BIT(KC_RSFT)) || (host_keyboard_leds() & (1<event.pressed) { } break; -case M_DE_OSX_PLUS_CTRLALT: -//Macro: M_DE_OSX_PLUS_CTRLALT//----------------------- +case M_DE_PLUS_CTRLALT: +//Macro: M_DE_PLUS_CTRLALT//----------------------- if (record->event.pressed) { start = timer_read(); return MACRO(D(LCTRL),D(LALT),END); @@ -264,8 +264,8 @@ if (record->event.pressed) { } break; -case M_DE_OSX_CIRC_CTRLCMD: -//Macro: M_DE_OSX_CIRC_CTRLCMD//----------------------- +case M_DE_CIRC_CTRLCMD: +//Macro: M_DE_CIRC_CTRLCMD//----------------------- if (record->event.pressed) { start = timer_read(); return MACRO(D(LCTRL),D(LGUI),END); diff --git a/layouts/community/ergodox/osx_de_adnw_koy/keymap.c b/layouts/community/ergodox/osx_de_adnw_koy/keymap.c index 08b11cccdf7a..18335652ffbb 100644 --- a/layouts/community/ergodox/osx_de_adnw_koy/keymap.c +++ b/layouts/community/ergodox/osx_de_adnw_koy/keymap.c @@ -30,13 +30,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LCTL, KC_TAB, KC_K, KC_DOT, KC_O, KC_COMM, KC_Z, KC_LGUI, TG(QWERTZ), KC_H, KC_A, KC_E, KC_I, KC_U, - KC_LSFT, CTL_T(KC_X), KC_Q, DE_AE, DE_UE, DE_OE, KC_LALT, - LT(SYMB,KC_GRV), DE_LESS, LALT(KC_LSFT), KC_LEFT, KC_RGHT, + KC_LSFT, CTL_T(KC_X), KC_Q, DE_ADIA, DE_UDIA, DE_ODIA, KC_LALT, + LT(SYMB,KC_GRV), DE_LABK, LALT(KC_LSFT), KC_LEFT, KC_RGHT, TG(MDIA), MEH_T(LSFT(DE_ACUT)), KC_HOME, KC_BSPC, KC_DEL, KC_END, //right half - KC_RCTL, KC_6, KC_7, KC_8, KC_9, KC_0, DE_OSX_MINS, + KC_RCTL, KC_6, KC_7, KC_8, KC_9, KC_0, DE_MINS, KC_RGUI, KC_V, KC_G, KC_C, KC_L, KC_MINS, KC_Y, KC_D, KC_T, KC_R, KC_N, KC_S, LT(MDIA,KC_F), KC_RALT, KC_B, KC_P, KC_W, KC_M, CTL_T(KC_J), KC_RSFT, @@ -47,9 +47,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [SYMB]=LAYOUT_ergodox( //left half KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, - KC_TRNS, KC_GRV, LSFT(KC_GRV), DE_EXLM, DE_QST, KC_TRNS, KC_TRNS, + KC_TRNS, KC_GRV, LSFT(KC_GRV), DE_EXLM, DE_QUES, KC_TRNS, KC_TRNS, KC_TRNS, DE_HASH, DE_DLR, LALT(LSFT(KC_7)), DE_SLSH, KC_DOT, - KC_TRNS, KC_TRNS, DE_LESS, DE_PERC, LALT(KC_7), LALT(KC_N), KC_TRNS, + KC_TRNS, KC_TRNS, DE_LABK, DE_PERC, LALT(KC_7), LALT(KC_N), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -58,7 +58,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_TRNS, LALT(LSFT(KC_7)), LALT(KC_5), LALT(KC_6), LALT(KC_7), DE_HASH, KC_F12, DE_SLSH, DE_LPRN, DE_RPRN, LALT(KC_8), LALT(KC_9), KC_TRNS, - KC_TRNS, DE_AMPR, KC_GRV, LSFT(KC_GRV), DE_DQOT, DE_QUOT, DE_QST, + KC_TRNS, DE_AMPR, KC_GRV, LSFT(KC_GRV), DE_DQUO, DE_QUOT, DE_QUES, KC_TRNS, KC_DOT, KC_EXLM, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -88,14 +88,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LGUI, KC_TRNS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_LALT, - LT(SYMB,KC_GRV), DE_LESS, LALT(KC_LSFT), KC_LEFT, KC_RGHT, + LT(SYMB,KC_GRV), DE_LABK, LALT(KC_LSFT), KC_LEFT, KC_RGHT, KC_TRNS, MEH_T(LSFT(DE_ACUT)), KC_HOME, KC_BSPC, KC_DEL, KC_END, //right half LGUI(KC_C), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, - KC_RGUI, KC_Y, KC_U, KC_I, KC_O, KC_P, DE_UE, - KC_H, KC_J, KC_K, KC_L, KC_SCLN, LT(MDIA,DE_AE), + KC_RGUI, KC_Y, KC_U, KC_I, KC_O, KC_P, DE_UDIA, + KC_H, KC_J, KC_K, KC_L, KC_SCLN, LT(MDIA,DE_ADIA), KC_RALT, KC_N, KC_M, KC_COMM, KC_DOT, CTL_T(KC_SLSH), KC_RSFT, KC_UP, KC_DOWN, LGUI(KC_LSFT), KC_RBRC, LT(SYMB,KC_BSLS), ALL_T(DE_ACUT), KC_TRNS, diff --git a/layouts/community/ergodox/osx_de_experimental/keymap.c b/layouts/community/ergodox/osx_de_experimental/keymap.c index cedecd45cb1a..17ca4362e698 100644 --- a/layouts/community/ergodox/osx_de_experimental/keymap.c +++ b/layouts/community/ergodox/osx_de_experimental/keymap.c @@ -35,7 +35,7 @@ #define TGH_NUM 2 -#define M_DE_OSX_PLUS_CTRLALT 3 +#define M_DE_PLUS_CTRLALT 3 #define SM_KISS 4 @@ -57,7 +57,7 @@ #define SM_SAD 13 -#define M_DE_OSX_CIRC_CTRLCMD 14 +#define M_DE_CIRC_CTRLCMD 14 #define M_MEH_SH_ACUT 15 @@ -83,7 +83,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * * /-------------------//-------------------//-------------------//-------------------//-------------------/ /-------------------//-------------------//-------------------//-------------------//-------------------/ * | < | LongPress / Type | LongPress / Type | Shift+Ctrl | Type | | # | ACUT | CMD+Shift | ALT+Shift | + | -* | SYMB | DE_OSX_CIRC_CTRLCMD| DE_OSX_PLUS_CTRAlt | | Toggle SMLY | | Meh | Hyper | | | SYMB | +* | SYMB | DE_CIRC_CTRLCMD | DE_PLUS_CTRAlt | | Toggle SMLY | | Meh | Hyper | | | SYMB | * \-------------------\\-------------------\\-------------------\\-------------------\/-------------------//-------------------/ /-------------------//-------------------/ \-------------------\\-------------------\\-------------------\\-------------------\\-------------------\ * | HOME | END | | LEFT | RIGHT | * | | | | | | @@ -99,20 +99,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { **/ [BASE]=LAYOUT_ergodox( //left half - KC_ESC, DE_OSX_1, DE_OSX_2, DE_OSX_3, DE_OSX_4, DE_OSX_5, M(TGH_NUM), - KC_TAB, DE_OSX_Q, DE_OSX_W, DE_OSX_E, DE_OSX_R, DE_OSX_T, KC_LGUI, - KC_LALT, DE_OSX_A, DE_OSX_S, DE_OSX_D, DE_OSX_F, DE_OSX_G, - KC_LSFT, CTL_T(DE_OSX_Y), DE_OSX_X, DE_OSX_C, DE_OSX_V, DE_OSX_B, KC_LALT, - LT(SYMB,DE_OSX_LESS), M(M_DE_OSX_CIRC_CTRLCMD), M(M_DE_OSX_PLUS_CTRLALT), LSFT(KC_LCTRL), M(SMLY_TOG_QUOT), + KC_ESC, DE_1, DE_2, DE_3, DE_4, DE_5, M(TGH_NUM), + KC_TAB, DE_Q, DE_W, DE_E, DE_R, DE_T, KC_LGUI, + KC_LALT, DE_A, DE_S, DE_D, DE_F, DE_G, + KC_LSFT, CTL_T(DE_Y), DE_X, DE_C, DE_V, DE_B, KC_LALT, + LT(SYMB,DE_LABK), M(M_DE_CIRC_CTRLCMD), M(M_DE_PLUS_CTRLALT), LSFT(KC_LCTRL), M(SMLY_TOG_QUOT), KC_HOME, KC_END, KC_PGUP, KC_BSPC, KC_DEL, KC_PGDN, //right half - M(TOG_HLD_MDIA), DE_OSX_6, DE_OSX_7, DE_OSX_8, DE_OSX_9, DE_OSX_0, DE_OSX_SS, - KC_RGUI, DE_OSX_Z, DE_OSX_U, DE_OSX_I, DE_OSX_O, DE_OSX_P, DE_OSX_UE, - DE_OSX_H, DE_OSX_J, DE_OSX_K, DE_OSX_L, DE_OSX_OE, ALT_T(DE_OSX_AE), - KC_RALT, DE_OSX_N, DE_OSX_M, DE_OSX_COMM, DE_OSX_DOT, CTL_T(DE_OSX_MINS), KC_RSFT, - MEH_T(DE_OSX_HASH), ALL_T(DE_OSX_ACUT), LGUI(KC_LSFT), LALT(KC_LSFT), LT(SYMB,DE_OSX_PLUS), + M(TOG_HLD_MDIA), DE_6, DE_7, DE_8, DE_9, DE_0, DE_SS, + KC_RGUI, DE_Z, DE_U, DE_I, DE_O, DE_P, DE_UDIA, + DE_H, DE_J, DE_K, DE_L, DE_ODIA, ALT_T(DE_ADIA), + KC_RALT, DE_N, DE_M, DE_COMM, DE_DOT, CTL_T(DE_MINS), KC_RSFT, + MEH_T(DE_HASH), ALL_T(DE_ACUT), LGUI(KC_LSFT), LALT(KC_LSFT), LT(SYMB,DE_PLUS), KC_LEFT, KC_RIGHT, KC_UP, KC_DOWN, KC_ENT, KC_SPC), @@ -152,19 +152,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [SYMB]=LAYOUT_ergodox( //left half KC_APPLICATION, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F5, - KC_TRNS, DE_OSX_LESS, DE_OSX_MORE, DE_OSX_EXLM, DE_OSX_QST, KC_TRNS, KC_TRNS, - KC_TRNS, DE_OSX_HASH, DE_OSX_DLR, DE_OSX_BSLS, DE_OSX_SLSH, KC_DOT, - KC_TRNS, KC_TRNS, DE_OSX_LESS, DE_OSX_PERC, DE_OSX_PIPE, DE_OSX_TILD, KC_TRNS, + KC_TRNS, DE_LABK, DE_RABK, DE_EXLM, DE_QST, KC_TRNS, KC_TRNS, + KC_TRNS, DE_HASH, DE_DLR, DE_BSLS, DE_SLSH, KC_DOT, + KC_TRNS, KC_TRNS, DE_LABK, DE_PERC, DE_PIPE, DE_TILD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, //right half KC_F6, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, - KC_TRNS, DE_OSX_BSLS, DE_OSX_LBRC, DE_OSX_RBRC, DE_OSX_LESS, DE_OSX_MORE, DE_OSX_EXLM, - DE_OSX_SLSH, DE_OSX_LPRN, DE_OSX_RPRN, DE_OSX_LCBR, DE_OSX_RCBR, DE_OSX_HASH, - KC_TRNS, DE_OSX_PIPE, DE_OSX_TILD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - DE_OSX_QUOT, DE_OSX_DQOT, KC_TRNS, M(M_TOGGLE_5), KC_TRNS, + KC_TRNS, DE_BSLS, DE_LBRC, DE_RBRC, DE_LABK, DE_RABK, DE_EXLM, + DE_SLSH, DE_LPRN, DE_RPRN, DE_LCBR, DE_RCBR, DE_HASH, + KC_TRNS, DE_PIPE, DE_TILD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + DE_QUOT, DE_DQUO, KC_TRNS, M(M_TOGGLE_5), KC_TRNS, KC_F13, KC_F12, KC_F14, KC_F15, KC_TRNS, KC_TRNS), @@ -317,10 +317,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, //right half KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, - KC_TRNS, DE_OSX_SLSH, KC_7, KC_8, KC_9, DE_OSX_ASTR, KC_F12, - DE_OSX_SLSH, KC_4, KC_5, KC_6, DE_OSX_PLUS, DE_OSX_MINS, - KC_TRNS, DE_OSX_PERC, KC_1, KC_2, KC_3, KC_TRNS, KC_TRNS, - KC_0, KC_DOT, KC_COMM, DE_OSX_EQL, KC_TRNS, + KC_TRNS, DE_SLSH, KC_7, KC_8, KC_9, DE_ASTR, KC_F12, + DE_SLSH, KC_4, KC_5, KC_6, DE_PLUS, DE_MINS, + KC_TRNS, DE_PERC, KC_1, KC_2, KC_3, KC_TRNS, KC_TRNS, + KC_0, KC_DOT, KC_COMM, DE_EQL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), @@ -394,7 +394,7 @@ if (record->event.pressed) { if (timer_elapsed(start) >150) { return MACRO_NONE; } else { - return MACRO(DOWN(KC_LSFT),TYPE(DE_OSX_HASH),UP(KC_LSFT),END); + return MACRO(DOWN(KC_LSFT),TYPE(DE_HASH),UP(KC_LSFT),END); } } @@ -422,8 +422,8 @@ if (record->event.pressed){ return MACRO_NONE; break; -case M_DE_OSX_PLUS_CTRLALT: -//Macro: M_DE_OSX_PLUS_CTRLALT//----------------------- +case M_DE_PLUS_CTRLALT: +//Macro: M_DE_PLUS_CTRLALT//----------------------- if (record->event.pressed) { start = timer_read(); return MACRO(DOWN(KC_LCTRL),DOWN(KC_LALT),END); @@ -516,8 +516,8 @@ if (record->event.pressed) { } break; -case M_DE_OSX_CIRC_CTRLCMD: -//Macro: M_DE_OSX_CIRC_CTRLCMD//----------------------- +case M_DE_CIRC_CTRLCMD: +//Macro: M_DE_CIRC_CTRLCMD//----------------------- if (record->event.pressed) { start = timer_read(); return MACRO(DOWN(KC_LCTRL),DOWN(KC_LGUI),END); @@ -539,7 +539,7 @@ if (record->event.pressed) { if (timer_elapsed(start) >150) { return MACRO(U(LCTRL),U(LSFT),U(LALT),END); } else { - return MACRO(UP(KC_LCTRL),UP(KC_LALT),TYPE(DE_OSX_ACUT),UP(KC_LSFT),END); + return MACRO(UP(KC_LCTRL),UP(KC_LALT),TYPE(DE_ACUT),UP(KC_LSFT),END); } } diff --git a/layouts/community/ergodox/osx_fr/keymap.c b/layouts/community/ergodox/osx_fr/keymap.c index 09ef0edb69ea..924e9ee8aed1 100644 --- a/layouts/community/ergodox/osx_fr/keymap.c +++ b/layouts/community/ergodox/osx_fr/keymap.c @@ -34,17 +34,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Otherwise, it needs KC_* [BASE] = LAYOUT_ergodox( // layer 0 : default // left hand - FR_MINS, FR_AMP, FR_EACU, FR_QUOT, FR_APOS, FR_LPRN, KC_LEFT, + FR_MINS, FR_AMPR, FR_LEAC, FR_DQUO, FR_QUOT, FR_LPRN, KC_LEFT, KC_DEL, FR_A, FR_Z, KC_E, KC_R, KC_T, TG(1), KC_BSPC, FR_Q, KC_S, KC_D, KC_F, KC_G, KC_LSFT, CTL_T(FR_W), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), - LT(SYMB,FR_UGRV), FR_LESS, LALT(KC_LSFT), KC_LEFT, KC_RGHT, + LT(SYMB,FR_LUGR), FR_LABK, LALT(KC_LSFT), KC_LEFT, KC_RGHT, ALT_T(KC_APP), KC_LGUI, KC_HOME, KC_SPC, KC_BSPC, KC_END, // right hand - KC_RGHT, FR_SECT, FR_EGRV, FR_EXLM, FR_CCED, FR_AGRV, FR_RPRN, + KC_RGHT, FR_SECT, FR_LEGR, FR_EXLM, FR_LCCE, FR_LAGR, FR_RPRN, TG(1), KC_Y, KC_U, KC_I, KC_O, KC_P, FR_GRV, KC_H, KC_J, KC_K, KC_L, FR_M, KC_LGUI, MEH_T(KC_NO), KC_N, FR_COMM, LT(MDIA, FR_SCLN), FR_COLN, CTL_T(FR_EQL), KC_RSFT, @@ -89,7 +89,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_TRNS, KC_UP, FR_7, FR_8, FR_9, FR_ASTR, KC_F12, KC_DOWN, FR_4, FR_5, FR_6, FR_PLUS, KC_TRNS, - KC_TRNS, FR_AMP, FR_1, FR_2, FR_3, FR_BSLS, KC_TRNS, + KC_TRNS, FR_AMPR, FR_1, FR_2, FR_3, FR_BSLS, KC_TRNS, KC_TRNS,FR_COMM, FR_0, FR_EQL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, diff --git a/layouts/community/ergodox/osx_neo2/visualizer.c b/layouts/community/ergodox/osx_neo2/visualizer.c deleted file mode 100644 index 653201bb8aae..000000000000 --- 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/ergodox/osx_whiskey_tango_foxtrot_capslock/keymap.c b/layouts/community/ergodox/osx_whiskey_tango_foxtrot_capslock/keymap.c index 729810705bdb..54e1183e9f70 100644 --- a/layouts/community/ergodox/osx_whiskey_tango_foxtrot_capslock/keymap.c +++ b/layouts/community/ergodox/osx_whiskey_tango_foxtrot_capslock/keymap.c @@ -4,21 +4,17 @@ */ #include QMK_KEYBOARD_H -#include "debug.h" -#include "action_layer.h" -#include "timer.h" -#define BASE 0 // default layer -#define SYMB 1 // symbols -#define MDIA 2 // media keys +enum layer_names { + BASE, // default layer + SYMB, // symbols + MDIA // media keys +}; #define BLINK_BASE 150U // timer threshold for blinking on MDIA layer typedef enum onoff_t {OFF, ON} onoff; -#define caps_led_on ergodox_right_led_2_on -#define caps_led_off ergodox_right_led_2_off - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 0: Basic layer * @@ -45,18 +41,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = LAYOUT_ergodox( // layer 0 : default // left hand KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, - KC_TAB, M(KC_Q), M(KC_W), M(KC_E), M(KC_R), M(KC_T), KC_LBRC, - M(KC_CAPS), M(KC_A), M(KC_S), M(KC_D), M(KC_F), M(KC_G), - KC_LSFT, M(KC_Z), M(KC_X), M(KC_C), M(KC_V), M(KC_B), MO(SYMB), + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, MO(SYMB), KC_LCTL, KC_LALT, KC_LGUI, KC_LEFT, KC_RGHT, - KC_TRNS, KC_FN1, + KC_TRNS, TG(SYMB), KC_HOME, KC_BSPC, KC_DEL, KC_END, // right hand KC_GRV, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, - KC_RBRC, M(KC_Y), M(KC_U), M(KC_I), M(KC_O), M(KC_P), KC_BSLS, - M(KC_H), M(KC_J), M(KC_K), M(KC_L), KC_SCLN, KC_QUOT, - MO(SYMB), M(KC_N), M(KC_M), KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + MO(SYMB), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_DOWN, KC_UP, KC_RCTL, KC_RGUI, KC_RALT, KC_RALT, KC_RCTL, KC_PGUP, @@ -91,7 +87,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, - KC_FN3, KC_FN2, + TG(SYMB),TG(MDIA), KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, // right hand @@ -132,7 +128,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, - KC_FN4, KC_NO, + TG(MDIA),KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, // right hand @@ -147,64 +143,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_ON(SYMB,ON_RELEASE), // FN1 - Enable Layer 1 (Symbols) - [2] = ACTION_LAYER_ON(MDIA,ON_RELEASE), // FN2 - Enable Layer 2 (Media) - [3] = ACTION_LAYER_OFF(SYMB,ON_RELEASE), // FN3 - Disable Layer 1 (Symbols) - [4] = ACTION_LAYER_OFF(MDIA,ON_RELEASE), // FN4 - Disable Layer 2 (MMedia) -}; - - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { - static onoff caps_state = OFF; - switch(id) { - case KC_CAPS: - if (record->event.pressed) { - // Toggle caps state; - if (caps_state == OFF) { - // Turn it on then! - caps_led_on(); - caps_state = ON; - } else { - caps_led_off(); - caps_state = OFF; - } - } - break; - default: - if (record->event.pressed) { - bool shifted = false; - if (caps_state == ON && get_mods() == 0) { - register_code(KC_LSFT); - shifted = true; - } - register_code(id); - if(shifted) { - unregister_code(KC_LSFT); - } - } else { - unregister_code(id); - } - break; - } - return MACRO_NONE; -}; - -// Runs just one time when the keyboard initializes. -void matrix_init_user(void) { - -} // Runs constantly in the background, in a loop. void matrix_scan_user(void) { - uint8_t layer = biton32(layer_state); + uint8_t layer = get_highest_layer(layer_state); static onoff board_led_state = OFF; static uint16_t dt = 0; static uint8_t oldlayer = 0; - if(oldlayer != layer) { + if (oldlayer != layer) { // Layer was just toggled. - if(layer == BASE) { + if (layer == BASE) { ergodox_board_led_off(); board_led_state = OFF; } else { @@ -213,10 +162,10 @@ void matrix_scan_user(void) { } } else if (layer >= MDIA) { // We need to do blinking. - if(timer_elapsed(dt) > BLINK_BASE) { + if (timer_elapsed(dt) > BLINK_BASE) { // toggle dt = timer_read(); - if(board_led_state == OFF) { + if (board_led_state == OFF) { ergodox_board_led_on(); board_led_state = ON; } else { diff --git a/layouts/community/ergodox/plover/keymap.c b/layouts/community/ergodox/plover/keymap.c index b196346436b4..ffb869309ab0 100644 --- a/layouts/community/ergodox/plover/keymap.c +++ b/layouts/community/ergodox/plover/keymap.c @@ -164,7 +164,7 @@ LAYOUT_ergodox( KC_NO, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_NO, KC_A, KC_S, KC_D, KC_F, KC_G, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_FN4, KC_NO, + KC_NO, KC_NO, KC_NO, KC_C, KC_V, KC_NO, // right hand diff --git a/layouts/community/ergodox/plums/keymap.c b/layouts/community/ergodox/plums/keymap.c index c75ce0f9778a..dd273e579b67 100644 --- a/layouts/community/ergodox/plums/keymap.c +++ b/layouts/community/ergodox/plums/keymap.c @@ -1,6 +1,4 @@ #include QMK_KEYBOARD_H -#include "debug.h" -#include "action_layer.h" #define BASE 0 // default layer #define SYMB 1 // symbols @@ -36,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_LGUI, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, TG(SYMB), - F(0), KC_LCBR, KC_LPRN,KC_PIPE,KC_COLN, + KC_NO, KC_LCBR, KC_LPRN,KC_PIPE,KC_COLN, LGUI(KC_LALT), KC_LALT, KC_HOME, KC_BSPC, KC_ESC, KC_END, @@ -45,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, TG(MDIA), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, - KC_MINS, KC_EQL, KC_RPRN, KC_RCBR, F(1), + KC_MINS, KC_EQL, KC_RPRN, KC_RCBR, KC_NO, KC_RALT, KC_MPLY, KC_PGUP, KC_PGDN, KC_ENT, KC_SPC @@ -135,85 +133,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_MACRO_TAP(0), // FN0 - Ctrl + a (For screen/tmux) - [1] = ACTION_MACRO_TAP(1) // FN1 - Ctrl + ` (For quake style console) -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) // this is the function signature -- just copy/paste it into your keymap file as it is. -{ - switch(id) { - case 0: - if (record->event.pressed) { - if (record->tap.count) { - if (record->tap.interrupted) { - record->tap.count = 0; - // hold press action - register_code(KC_LCTL); - } else { - // tap press action - return MACRO( D(LCTL), T(A), U(LCTL), END ); - } - } else { - // hold press action - register_code(KC_LCTL); - } - } else { - if (record->tap.count) { - // tap release action - } else { - // hold release action - unregister_code(KC_LCTL); - } - record->tap.count = 0; - } - break; - case 1: - if (record->event.pressed) { - if (record->tap.count) { - if (record->tap.interrupted) { - record->tap.count = 0; - // hold press action - register_code(KC_RCTL); - } else { - // tap press action - return MACRO( DOWN(KC_RCTL), TYPE(KC_GRV), UP(KC_RCTL), END ); - } - } else { - // hold press action - register_code(KC_RCTL); - } - } else { - if (record->tap.count) { - // tap release action - } else { - // hold release action - unregister_code(KC_RCTL); - } - record->tap.count = 0; - } - break; - } - return MACRO_NONE; -}; - - - -// Runs just one time when the keyboard initializes. -void matrix_init_user(void) { - -}; - // Runs constantly in the background, in a loop. void matrix_scan_user(void) { - - uint8_t layer = biton32(layer_state); - ergodox_board_led_off(); ergodox_right_led_1_off(); ergodox_right_led_2_off(); ergodox_right_led_3_off(); - switch (layer) { + + switch (get_highest_layer(layer_state)) { // TODO: Make this relevant to the ErgoDox EZ. case 1: ergodox_right_led_1_on(); @@ -225,5 +152,4 @@ void matrix_scan_user(void) { // none break; } - -}; +} diff --git a/layouts/community/ergodox/qwerty_code_friendly/keymap.c b/layouts/community/ergodox/qwerty_code_friendly/keymap.c index bf20e76a5371..6e285d561352 100644 --- a/layouts/community/ergodox/qwerty_code_friendly/keymap.c +++ b/layouts/community/ergodox/qwerty_code_friendly/keymap.c @@ -490,7 +490,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), }; -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { /* Use layer 3 when 1 & 2 are pressed. */ state = update_tri_layer_state(state, LAYER_KPAD, LAYER_FKEY, LAYER_WORD); return state; diff --git a/layouts/community/ergodox/replicaJunction/config.h b/layouts/community/ergodox/replicaJunction/config.h index 9ffd74dccdcf..a02f9a95dbad 100644 --- a/layouts/community/ergodox/replicaJunction/config.h +++ b/layouts/community/ergodox/replicaJunction/config.h @@ -1,13 +1,51 @@ +/* Copyright 2021 Joshua T. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #pragma once -// Layer definitions - -#define L_COLEMAK 0 -#define L_QWERTY 1 -#define L_NUM 2 -#define L_EXTEND 3 -#define L_FUNC 4 -#define L_GAMING 5 -#define L_LL_R 6 -#define L_LL_E 7 -#define L_LL_I 8 +// Do not allow one macro to contain the other macro +#define DYNAMIC_MACRO_NO_NESTING + +// "THE most important tap hold configuration setting" +// https://precondition.github.io/home-row-mods#ignore-mod-tap-interrupt +// https://docs.qmk.fm/#/tap_hold?id=ignore-mod-tap-interrupt +#define IGNORE_MOD_TAP_INTERRUPT + +// This one is a style choice. Play with it both on and off to see which +// one suits you better. +// https://precondition.github.io/home-row-mods#permissive-hold +// https://docs.qmk.fm/#/tap_hold?id=permissive-hold +#define PERMISSIVE_HOLD + +// If you press a dual-role key for longer than TAPPING_TERM, then +// release it without pressing another key, without this setting nothing +// would happen. With this setting, it sends the key's tap function. +// https://precondition.github.io/home-row-mods#retro-tapping +#define RETRO_TAPPING + +// Disable some unused features to save space +#undef LOCKING_SUPPORT_ENABLE +#undef LOCKING_RESYNC_ENABLE + +///// +// Flags for stuff in my userspace + +#define USER_INCLUDE_GAMING_LAYER +#define USER_INCLUDE_MACRO_LAYER + +// "Super Alt-Tab" +// https://docs.qmk.fm/#/feature_macros?id=super-alt%E2%86%AFtab +#define USER_SUPER_ALT_TAB_TIMEOUT 500 diff --git a/layouts/community/ergodox/replicaJunction/keymap.c b/layouts/community/ergodox/replicaJunction/keymap.c index ce0400be5cdb..0c36abcf744e 100644 --- a/layouts/community/ergodox/replicaJunction/keymap.c +++ b/layouts/community/ergodox/replicaJunction/keymap.c @@ -1,427 +1,378 @@ -/* - * Keyboard: Ergodox - * Keymap: replicaJunction - * Version: 2.1 +/* Copyright 2021 Joshua T. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . */ #include QMK_KEYBOARD_H -#include "config.h" #include "replicaJunction.h" -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +// Most layers are defined in my userspace, but this keyboard has +// an extra one. +enum additional_keyboard_layers { + L_SYSLEDS = _LAYER_SAFE_RANGE +}; -[L_COLEMAK] = LAYOUT_ergodox( -//--------|--------|--------|--------|--------|--------|--------| - KC_ESC ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_GRV , -//--------|--------|--------|--------|--------|--------|--------| - KX_ECTL ,KC_Q ,KC_W ,KC_F ,KC_P ,KC_B ,KC_LBRC , -//--------|--------|--------|--------|--------|--------|--------| - KC_TAB ,KC_A ,KC_R_LT ,KC_S_LT ,KC_T ,KC_G, -//--------|--------|--------|--------|--------|--------|--------| - KC_LSFT ,KX_Z_MT ,KX_X_MT ,KX_C_MT ,KX_D_MT ,KC_V ,KC_RBRC , -//--------|--------|--------|--------|--------|--------|--------| - TD_LAYR ,KC_LGUI ,KC_HYPR ,KX_CTSF ,KC_LCTL , -//--------|--------|--------|--------|--------|--------|--------| - KC_HOME ,KC_END , -// |--------|--------| - KC_PGUP , -// |--------|--------|--------| - KX_BKNM ,KX_DCTL ,KC_PGDN , -// |--------|--------|--------| - -//--------|--------|--------|--------|--------|--------|-------| - TG_GAME ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_EQL , -//--------|--------|--------|--------|--------|--------|-------| - KC_DEL ,KC_J ,KC_L ,KC_U ,KC_Y ,KC_SCLN ,KC_BSLS, -//--------|--------|--------|--------|--------|--------|-------| - KC_M ,KC_N ,KC_E_LT ,KC_I_LT ,KC_O ,KC_QUOT, -//--------|--------|--------|--------|--------|--------|-------| - KC_LOCK ,KC_K ,KX_H_MT ,KX_COMT ,KX_DOMT ,KX_SLMT ,KC_RSFT, -//--------|--------|--------|--------|--------|--------|-------| - KC_LALT ,KC_MINS ,KC_QUOT ,KC_EQL ,TT_NUM , -//--------|--------|--------|--------|--------|--------|-------| - KC_LEFT ,KC_RGHT , -//--------|--------| - KC_UP , -//--------|--------|--------| - KC_DOWN ,KX_NALT ,KX_SPAC -//--------|--------|--------| +#define BSP_SYM LT(L_SYMBOLS, KC_BSPC) +#define SPC_NAV LT(L_NAVIGATION, KC_SPC) -), +#define MO_FN MO(L_FN) +#define MO_MAC MO(L_MACROS) +#define MO_SLED MO(L_SYSLEDS) + +#define TG_GAME TG(L_GAMING) + +#define ESC_SFT LSFT_T(KC_ESC) +#define TAB_SFT RSFT_T(KC_TAB) +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + -[L_QWERTY] = LAYOUT_ergodox( -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,_______ ,_______ ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ , -// |--------|--------| - _______ , -// |--------|--------|--------| - _______ ,_______ ,_______ , -// |--------|--------|--------| - -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,KC_EQL , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_QUOT , -//--------|--------|--------|--------|--------|--------|--------| - KC_LOCK ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_RSPC , -//--------|--------|--------|--------|--------|--------|--------| - KC_RALT ,KC_MINS ,KC_QUOT ,KC_EQL ,TT_NUM , -//--------|--------|--------|--------|--------|--------|--------| - KC_LEFT ,KC_RGHT , -//--------|--------| - KC_UP , -//--------|--------|--------| - KC_DOWN ,KX_NALT ,KX_SPAC -//--------|--------|--------| +[L_BASE] = LAYOUT_ergodox( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, + KC_EQL, KC_Q, KC_W, KC_F, KC_P, KC_B, NUMWORD, + KC_MINS, KC_A, KC_R, KC_S, KC_T, KC_G, + KC_LSFT, KC_Z, KC_X, KC_C, KC_D, KC_V, KC_RBRC, + KC_LCTL, KC_LGUI ,KC_LALT, MO_FN, ESC_SFT, + KC_HOME, KC_END, + KC_PGUP, + BSP_SYM, CTL_DEL, KC_PGDN, + + TG_GAME, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, + CAPWORD, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS, + KC_M, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + KC_LOCK, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + TAB_SFT, MO_FN, KC_RALT, KC_RGUI, MO_SLED, + KC_LEFT, KC_RGHT, + KC_UP, + KC_DOWN, ALT_ENT, SPC_NAV ), +[L_GAMING] = LAYOUT_ergodox( + KC_GRV, _______,_______,_______,_______,_______,_______, + KC_TAB, _______,_______,_______,_______,_______,_______, + KC_ESC, KC_A, KC_R, KC_S, KC_T, _______, + KC_LSFT,_______,_______,KC_C, KC_D, _______,_______, + _______,_______,KC_TAB, KC_LALT,KC_LCTL, + KC_LOCK,_______, + _______, + KC_SPC, KC_LSFT,_______, + + ooooooo,_______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______,_______, + _______,KC_N, KC_E, KC_I, KC_O, _______, + _______,_______,_______,_______,_______,_______,_______, + MO_FN, KC_LEFT,KC_DOWN,KC_UP, KC_RGHT, + KC_BTN3,_______, + KC_BTN2, + KC_BTN1,KC_ENT, KC_BSPC +), + -[L_NUM] = LAYOUT_ergodox( -//--------|--------|--------|--------|--------|--------|--------| - _______ ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,KC_EXLM ,KC_AT ,KC_LCBR ,KC_RCBR ,KC_SLSH ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,KC_HASH ,KC_DLR ,KC_LPRN ,KC_RPRN ,KC_PIPE, -//--------|--------|--------|--------|--------|--------|--------| - _______ ,KC_PERC ,KC_CIRC ,KC_LBRC ,KC_RBRC ,KC_BSLS ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,KC_AMPR ,KC_LABK ,KC_RABK, -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ , -// |--------|--------| - _______ , -// |--------|--------|--------| - _______ ,_______ ,_______ , -// |--------|--------|--------| - -//--------|--------|--------|--------|--------|--------|--------| - _______ ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,KC_COLN ,KC_P7 ,KC_P8 ,KC_P9 ,KC_PSLS ,KC_F12 , -//--------|--------|--------|--------|--------|--------|--------| - KC_HASH ,KC_P4 ,KC_P5 ,KC_P6 ,KC_PAST ,KC_BSPC , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,KC_BSPC ,KC_P1 ,KC_P2 ,KC_P3 ,KC_PMNS ,KC_TAB , -//--------|--------|--------|--------|--------|--------|--------| - KC_P0 ,KC_PDOT ,KC_PEQL ,KC_PPLS ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ , -//--------|--------| - _______ , -//--------|--------|--------| - _______ ,KC_PENT ,MO_FUNC -//--------|--------|--------| +[L_NUMBERS] = LAYOUT_ergodox( + _______,_______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______,_______, + _______,KC_LGUI,KC_LALT,KC_LSFT,KC_LCTL,_______, + _______,_______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______, + _______,_______, + _______, + _______,_______,_______, + + _______,KC_NLCK,_______,_______,_______,_______,_______, + KC_NLCK,KC_HASH,KC_P7, KC_P8, KC_P9, KC_PSLS,SFT_TAB, + KC_PPLS,KC_P4, KC_P5, KC_P6, KC_PAST,KC_TAB, + _______,KC_PMNS,KC_P1, KC_P2, KC_P3, KC_BSLS,KC_EQL, + KC_P0, KC_P0, KC_PDOT,KC_PENT,_______, + _______,_______, + _______, + _______,_______,_______ ), +[L_SYMBOLS] = LAYOUT_ergodox( + _______,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, + _______,KC_AT, KC_LT, KC_DLR, KC_GT, XXXXXXX,_______, + _______,KC_BSLS,KC_LPRN,KC_DQUO,KC_RPRN,KC_HASH, + _______,KC_EXLM,KC_COLN,KC_ASTR,KC_PLUS,XXXXXXX,_______, + _______,_______,_______,_______,_______, + _______,_______, + _______, + ooooooo,_______,_______, + + _______,KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + _______,XXXXXXX,KC_LBRC,KC_UNDS,KC_RBRC,XXXXXXX,KC_F12, + KC_PERC,KC_LCBR,KC_EQL, KC_RCBR,KC_PIPE,_______, + _______,XXXXXXX,KC_AMPR,KC_CIRC,KC_TILD,KC_GRV, _______, + _______,_______,_______,_______,_______, + _______,_______, + _______, + _______,_______,ooooooo +), + -[L_EXTEND] = LAYOUT_ergodox( -//--------|--------|--------|--------|--------|--------|--------| - _______ ,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,_______ ,_______ ,KC_APP ,KX_CGR, KC_VOLU, -//--------|--------|--------|--------|--------|--------|--------| - _______ ,KC_LGUI, KC_LSFT, KC_LALT, KC_LCTL, _______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,_______ ,_______ ,KX_SRCH, KX_PAST, KC_VOLD, -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,_______ ,_______ ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ , -// |--------|--------|--------| - _______ , -// |--------|--------|--------| - MO_FUNC, _______ ,_______ , -// |--------|--------|--------| - -//--------|--------|--------|--------|--------|--------|--------| - KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,KC_PGUP, KC_HOME, KC_UP, KC_END, KC_DEL, _______ , -//--------|--------|--------|--------|--------|--------|--------| - KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_BSPC, KC_MENU, -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,KX_STAB, KC_TAB, _______ ,KC_INS, KC_PSCR, -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,_______ ,KC_PSCR, _______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,_______ -//--------|--------|--------|--------|--------|--------|--------| +[L_NAVIGATION] = LAYOUT_ergodox( + _______,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, + _______,OS_UNDO,OS_CUT, OS_PAST,OS_COPY,OS_SALL,_______, + _______,KC_LGUI,KC_LSFT,KC_LALT,KC_LCTL,_______, + _______,WIN_V, _______,_______,OS_FIND,SEARCH, _______, + _______,_______,_______,_______,_______, + _______,_______, + _______, + _______,_______,_______, + + _______,KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + _______,KC_PGUP,KC_HOME,KC_UP, KC_END, KC_DEL, KC_F12, + KC_PGDN,KC_LEFT,KC_DOWN,KC_RGHT,KC_BSPC,_______, + _______,_______,SFT_TAB,KC_TAB, KC_APP, KC_PSCR,_______, + _______,_______,_______,_______,_______, + _______,_______, + _______, + _______,_______,ooooooo ), +[L_FN] = LAYOUT_ergodox( + _______,_______,_______,_______,_______,_______,_______, + _______,QK_VERS,_______,DM_REC2,DM_REC1,DM_RSTP,_______, + _______,QK_MAKE,_______,DM_PLY2,DM_PLY1,_______, + _______,QK_FLSH,K_SECR1,K_SECR2,K_SECR3,K_SECR4,_______, + _______,_______,_______,ooooooo,_______, + _______,_______, + _______, + KC_LCTL,_______,_______, + + _______,_______,_______,_______,_______,_______,_______, + _______,KC_VOLU,KC_F9, KC_F10, KC_F11, KC_F12, _______, + KC_MUTE,KC_F5, KC_F6, KC_F7, KC_F8, _______, + _______,KC_VOLD,KC_F1, KC_F2, KC_F3, KC_F4, _______, + _______,ooooooo,_______,_______,_______, + _______,RESET, + _______, + _______,_______,KC_LALT +), -[L_FUNC] = LAYOUT_ergodox( -//--------|--------|--------|--------|--------|--------|--------| - _______ ,KC_F11 ,KC_F12 ,KC_F13 ,KC_F14 ,KC_F15 ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,_______ ,M_LCLIK, M_RCLIK, M_MCLIK, _______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,KC_LGUI, KC_LSFT, KC_LALT, KC_LCTL, M_WHLUP, -//--------|--------|--------|--------|--------|--------|--------| - _______ ,M_LEFT, M_DOWN, M_UP ,M_RIGHT, M_WHLDN, _______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,_______ ,_______ ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ , -// |--------|--------|--------| - _______ , -// |--------|--------|--------| - _______ ,_______ ,_______ , -// |--------|--------|--------| - -//--------|--------|--------|--------|--------|--------|--------| - _______ ,KC_F16 ,KC_F17 ,KC_F18 ,KC_F19 ,KC_F20 ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,KC_VOLU, KC_F9, KC_F10, KC_F11, KC_F12, _______ , -//--------|--------|--------|--------|--------|--------|--------| - KC_MUTE, KC_F5, KC_F6, KC_F7, KC_F8, _______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,KC_VOLD, KC_F1, KC_F2, KC_F3, KC_F4, _______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,_______ ,_______ ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,_______ -//--------|--------|--------|--------|--------|--------|--------| + +[L_MACROS] = LAYOUT_ergodox( + _______,_______,_______,_______,_______,_______,_______, + _______,_______,_______,DM_REC2,DM_REC1,_______,_______, + _______,_______,_______,DM_PLY2,DM_PLY1,DM_RSTP, + _______,_______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______, + _______,_______, + _______, + ooooooo,_______,_______, + + _______,_______,_______,_______,_______,_______,_______, + _______,_______,SHEBANG,_______,_______,_______,_______, + PRG_NE, PRG_EQ, PRG_GEQ,PRG_LEQ,PRG_ARR,_______, + _______,_______,PS_ITEM,FS_PIPE,_______,FS_ARR, _______, + _______,_______,_______,_______,_______, + _______,_______, + _______, + _______,_______,ooooooo ), -[L_GAMING] = LAYOUT_ergodox( -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - KC_ESC ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,KC_R ,KC_S ,_______ ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - KC_LSFT, _______ ,_______ ,_______ ,_______ ,_______ ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,_______ ,KC_LALT ,KC_LCTL , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ , -// |--------|--------| - _______ , -// |--------|--------|--------| - KC_SPC, KC_LSFT, _______ , -// |--------|--------|--------| - -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,KC_E ,KC_I ,_______ ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,_______ ,_______ ,_______ ,KC_UP, KC_SLSH, -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,KC_LEFT, KC_DOWN, KC_RGHT, -//--------|--------|--------|--------|--------|--------|--------| - M_MCLIK ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - M_RCLIK , -//--------|--------|--------|--------|--------|--------|--------| - M_LCLIK ,KC_ENT ,KC_BSPC -//--------|--------|--------|--------|--------|--------|--------| -) -, - -// "Letter Layers" - -[L_LL_R] = LAYOUT_ergodox( -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,ooooooo ,KC_AMPR ,KC_PIPE ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,_______ ,_______ ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ , -// |--------|--------| - _______ , -// |--------|--------|--------| - _______ ,_______ ,_______ , -// |--------|--------|--------| - -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,KC_COLN ,KC_P7 ,KC_P8 ,KC_P9 ,KC_PSLS ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - KC_HASH ,KC_P4 ,KC_P5 ,KC_P6 ,KC_PAST ,KC_TAB , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,KC_BSPC ,KC_P1 ,KC_P2 ,KC_P3 ,KC_PMNS ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - KC_P0 ,KC_PDOT ,KC_PEQL ,KC_PPLS ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ , -//--------|--------| - _______ , -//--------|--------|--------| - _______ ,KC_PENT ,MO_FUNC -//--------|--------|--------| -) -, - -[L_LL_E] = LAYOUT_ergodox( -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - RJ_QMKV ,RJ_MAKE ,RJ_EQ ,RJ_LEQ ,RJ_GEQ ,RJ_GEQR ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,_______ ,RJ_SELS ,RJ_DUND ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,_______ ,_______ ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ , -// |--------|--------| - _______ , -// |--------|--------|--------| - _______ ,_______ ,_______ , -// |--------|--------|--------| - -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,ooooooo ,_______ ,_______ ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,_______ ,_______ ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ , -//--------|--------| - _______ , -//--------|--------|--------| - _______ ,_______ ,_______ -//--------|--------|--------| -) -, - -[L_LL_I] = LAYOUT_ergodox( -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,KC_EXLM ,KC_AT ,KC_LCBR ,KC_RCBR ,KC_SLSH ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,KC_HASH ,KC_DLR ,KC_LPRN ,KC_RPRN ,KC_PIPE, -//--------|--------|--------|--------|--------|--------|--------| - _______ ,KC_PERC ,KC_CIRC ,KC_LBRC ,KC_RBRC ,KC_BSLS ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,KC_AMPR ,KC_LABK ,KC_RABK, -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ , -// |--------|--------| - _______ , -// |--------|--------|--------| - _______ ,_______ ,_______ , -// |--------|--------|--------| - -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,KC_UNDS, KC_GRV ,_______ ,_______ ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,KC_MINS ,KC_QUOT ,ooooooo ,_______ ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,KC_TILD, KC_DQT ,_______ ,_______ ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,_______ ,_______ ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ , -//--------|--------|--------|--------|--------|--------|--------| - _______ ,_______ ,_______ -//--------|--------|--------|--------|--------|--------|--------| +[L_SYSLEDS] = LAYOUT_ergodox( + _______,_______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______, + _______,_______, + _______, + _______,_______,_______, + + KC_NLCK,_______,_______,_______,_______,_______,_______, + KC_CAPS,_______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,_______,_______, + KC_SLCK,_______,_______,_______,_______,_______,_______, + _______,_______,_______,_______,ooooooo, + _______,_______, + _______, + _______,_______,_______ ) +// Template +// [_NUMBERS] = LAYOUT_ergodox( +// _______,_______,_______,_______,_______,_______,_______, +// _______,_______,_______,_______,_______,_______,_______, +// _______,_______,_______,_______,_______,_______, +// _______,_______,_______,_______,_______,_______,_______, +// _______,_______,_______,_______,_______, +// _______,_______, +// _______, +// _______,_______,_______, + +// _______,_______,_______,_______,_______,_______,_______, +// _______,_______,_______,_______,_______,_______,_______, +// _______,_______,_______,_______,_______,_______, +// _______,_______,_______,_______,_______,_______,_______, +// _______,_______,_______,_______,_______, +// _______,_______, +// _______, +// _______,_______,_______ +// ), }; -// The normal QMK functions ending in _user are overridden in the -// replicaJunction userspace. Those functions handle my global -// settings, and redirect to these _keymap functions if something -// is unhandled. This allows me to keep most of my global preferences -// in one place while still allowing keyboard-specific code. +void keyboard_post_init_user_kb(void) { + ergodox_right_led_1_on(); +} + + +//////////////////////////////////////////////////////////// +// System LED code +//////////////////////////////////////////////////////////// + +// We need to track both the layer state and the system LED state in +// order to update the LEDs appropriately when either one changes. +// These are both represented as a bitmask. +// +// There is a global 'layer_state' variable but it is set after the call +// to layer_state_set_user(), so it doesn't work properly for our +// purposes. +static uint32_t current_layer_state = 0; +static uint8_t sys_led_state = 0; + +// Whether the given layer (one of the constant defined at the top) is active. +#define LAYER_ON(state, layer) (state & (1<event.pressed && !record->tap.count) { - if(++caps_shift > 2) caps_shift = 2; - if(caps_shift == 2) { - register_code(KC_CAPS); - unregister_code(KC_CAPS); - } else if(caps_shift == 1) { - register_code(KC_LSFT); - } - } else { - if(--caps_shift < 0) caps_shift = 0; - if(caps_shift == 0) unregister_code(KC_LSFT); - } - break; - - case LSymb: - if (record->event.pressed) { - if(++symb_shift > 2) symb_shift = 2; - if(symb_shift == 2) { - symb_lock = !symb_lock; - } else if(symb_shift == 1) { - layer_on(SYMB); - } - } else { - if(--symb_shift < 0) symb_shift = 0; - if((symb_shift == 0) && (!symb_lock)) layer_off(SYMB); - } - break; - - case LMdia: - if (record->event.pressed) { - if (record->tap.count && (!mdia_shift) && (!mdia_lock)) { - register_code(KC_TAB); - } else { - if(++mdia_shift > 2) mdia_shift = 2; - if(mdia_shift == 2) { - mdia_lock = !mdia_lock; - } else if(mdia_shift == 1) { - layer_on(MDIA); - } - } - } else { - if(record->tap.count && (!mdia_shift) && (!mdia_lock)) { - unregister_code(KC_TAB); - } else { - if(--mdia_shift < 0) mdia_shift = 0; - if((!mdia_shift) && (!mdia_lock)) layer_off(MDIA); - } - } - break; - - case LSpec: - if (record->event.pressed) { - if (record->tap.count && !record->tap.interrupted) { - register_code(KC_EQL); - } else { - layer_on(SPEC); - } - } else { - if(record->tap.count && !record->tap.interrupted) { - unregister_code(KC_EQL); - } else { - layer_off(SPEC); - } - } - break; - - case RSymb: - if (record->event.pressed) { - if (record->tap.count && (!symb_shift) && (!symb_lock)) { - register_code(KC_QUOT); - } else { - if(++symb_shift > 2) symb_shift = 2; - if(symb_shift == 2) { - symb_lock = !symb_lock; - } else if(symb_shift == 1) { - layer_on(SYMB); - } - } - } else { - if(record->tap.count && symb_shift == 0) { - unregister_code(KC_QUOT); - } else { - if(--symb_shift < 0) symb_shift = 0; - if((!symb_shift) && (!symb_lock)) layer_off(SYMB); - } - } - break; - - case RMdia: - if (record->event.pressed) { - if (record->tap.count && (!mdia_shift) && (!mdia_lock)) { - register_code(KC_BSLS); - } else { - if(++mdia_shift > 2) mdia_shift = 2; - if(mdia_shift == 2) { - mdia_lock = !mdia_lock; - } else if(mdia_shift == 1) { - layer_on(MDIA); - } - } - } else { - if(record->tap.count && (!mdia_shift) && (!mdia_lock)) { - unregister_code(KC_BSLS); - } else { - if(--mdia_shift < 0) mdia_shift = 0; - if((!mdia_shift) && (!mdia_lock)) layer_off(MDIA); - } - } - break; - - case RSpec: - if (record->event.pressed) { - if (record->tap.count && !record->tap.interrupted) { - register_code(KC_MINS); - } else { - layer_on(SPEC); - } - } else { - if(record->tap.count && !record->tap.interrupted) { - unregister_code(KC_MINS); - } else { - layer_off(SPEC); - } - } - break; - - // mouse diagonals - - case MUL: // mouse up left - if (record->event.pressed) { - mousekey_on(KC_MS_UP); - mousekey_on(KC_MS_LEFT); - mousekey_send(); - } else { - mousekey_off(KC_MS_UP); - mousekey_off(KC_MS_LEFT); - mousekey_send(); - } - break; - - case MUR: // mouse up right - if (record->event.pressed) { - mousekey_on(KC_MS_UP); - mousekey_on(KC_MS_RIGHT); - mousekey_send(); - } else { - mousekey_off(KC_MS_UP); - mousekey_off(KC_MS_RIGHT); - mousekey_send(); - } - break; - - case MDL: // mouse down left - if (record->event.pressed) { - mousekey_on(KC_MS_DOWN); - mousekey_on(KC_MS_LEFT); - mousekey_send(); - } else { - mousekey_off(KC_MS_DOWN); - mousekey_off(KC_MS_LEFT); - mousekey_send(); - } - break; - - case MDR: // mouse down right - if (record->event.pressed) { - mousekey_on(KC_MS_DOWN); - mousekey_on(KC_MS_RIGHT); - mousekey_send(); - } else { - mousekey_off(KC_MS_DOWN); - mousekey_off(KC_MS_RIGHT); - mousekey_send(); - } - break; - - default: - // none - break; - } - - return MACRO_NONE; -}; - -// Runs just one time when the keyboard initializes. -void matrix_init_user(void) { - -}; - // Runs constantly in the background, in a loop. void matrix_scan_user(void) { // shift or caps lock turns on red light - if(caps_shift || (keyboard_report->mods & MOD_BIT(KC_RSFT)) || (host_keyboard_leds() & (1<mods & MOD_BIT(KC_RSFT)) || (host_keyboard_led_state().caps_lock)) { ergodox_right_led_1_on(); } else { ergodox_right_led_1_off(); } // Symbol layer turns on green light - if(layer_state & (1UL<event.pressed) { - register_code(KC_RSFT); - } else { - unregister_code(KC_RSFT); - } - break; - case 100: - layer_clear(); - return MACRODOWN(D(LSFT), T(5), U(LSFT), T(FN4), END); - break; - case 101: - layer_clear(); - return MACRODOWN(D(LSFT), T(7), U(LSFT), T(FN4), END); - break; - case 102: - layer_clear(); - return MACRODOWN(D(LSFT), T(SLSH), U(LSFT), T(FN4), END); - break; - case 103: - layer_clear(); - return MACRODOWN(D(LSFT), T(EQL), U(LSFT), T(FN4), END); - break; - case 104: - layer_clear(); - return MACRODOWN(D(LSFT), T(2), U(LSFT), T(FN4), END); - break; - case 105: - layer_clear(); - return MACRODOWN(D(LSFT), T(4), U(LSFT), T(FN4), END); - break; - case 106: - layer_clear(); - return MACRODOWN(D(LSFT), T(MINS), U(LSFT), T(FN4), END); - break; - case 107: - layer_clear(); - return MACRODOWN(T(LBRC), T(FN4), END); - break; - case 108: - layer_clear(); - return MACRODOWN(T(RBRC), T(FN4), END); - break; - case 130: - layer_clear(); - return MACRODOWN(D(LSFT), T(1), U(LSFT), T(FN4), END); - break; - case 109: - layer_clear(); - return MACRODOWN(T(SLSH), T(FN4), END); - break; - case 110: - layer_clear(); - return MACRODOWN(D(LSFT), T(9), U(LSFT), T(FN4), END); - break; - case 111: - layer_clear(); - return MACRODOWN(T(EQL), T(FN4), END); - break; - case 112: - layer_clear(); - return MACRODOWN(T(0), T(FN4), END); - break; - case 113: - layer_clear(); - return MACRODOWN(D(LSFT), T(LBRC), U(LSFT), T(FN4), END); - break; - case 114: - layer_clear(); - return MACRODOWN(D(LSFT), T(RBRC), U(LSFT), T(FN4), END); - break; - case 115: - layer_clear(); - return MACRODOWN(T(1), T(FN4), END); - break; - case 116: - layer_clear(); - return MACRODOWN(D(LSFT), T(8), U(LSFT), T(FN4), END); - break; - case 117: - layer_clear(); - return MACRODOWN(D(LSFT), T(0), U(LSFT), T(FN4), END); - break; - case 118: - layer_clear(); - return MACRODOWN(T(MINS), T(FN4), END); - break; - case 119: - layer_clear(); - return MACRODOWN(D(LSFT), T(QUOT), U(LSFT), T(FN4), END); - break; - case 120: - layer_clear(); - return MACRODOWN(T(6), T(FN4), END); - break; - case 121: - layer_clear(); - return MACRODOWN(T(7), T(FN4), END); - break; - case 122: - layer_clear(); - return MACRODOWN(T(8), T(FN4), END); - break; - case 123: - layer_clear(); - return MACRODOWN(T(9), T(FN4), END); - break; - case 124: - layer_clear(); - return MACRODOWN(D(LSFT), T(BSLS), U(LSFT), T(FN4), END); - break; - case 125: - layer_clear(); - return MACRODOWN(T(BSLS), T(FN4), END); - break; - case 126: - layer_clear(); - return MACRODOWN(T(2), T(FN4), END); - break; - case 127: - layer_clear(); - return MACRODOWN(T(3), T(FN4), END); - break; - case 128: - layer_clear(); - return MACRODOWN(T(4), T(FN4), END); - break; - case 129: - layer_clear(); - return MACRODOWN(T(5), T(FN4), END); - break; - - default: - return MACRO_NONE; - } - return MACRO_NONE; -}; - -// Runs just one time when the keyboard initializes. -void matrix_init_user(void) { +void tap_dead_code(uint16_t keycode) { + layer_clear(); + tap_code16(keycode); + layer_on(DEAD); +} -}; +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case M_100: + if (record->event.pressed) { + tap_dead_code(S(KC_5)); + } + return false; + case M_101: + if (record->event.pressed) { + tap_dead_code(S(KC_7)); + } + return false; + case M_102: + if (record->event.pressed) { + tap_dead_code(S(KC_SLSH)); + } + return false; + case M_103: + if (record->event.pressed) { + tap_dead_code(S(KC_EQL)); + } + return false; + case M_104: + if (record->event.pressed) { + tap_dead_code(S(KC_2)); + } + return false; + case M_105: + if (record->event.pressed) { + tap_dead_code(S(KC_4)); + } + return false; + case M_106: + if (record->event.pressed) { + tap_dead_code(S(KC_MINS)); + } + return false; + case M_107: + if (record->event.pressed) { + tap_dead_code(KC_LBRC); + } + return false; + case M_108: + if (record->event.pressed) { + tap_dead_code(KC_RBRC); + } + return false; + case M_109: + if (record->event.pressed) { + tap_dead_code(KC_SLSH); + } + return false; + case M_110: + if (record->event.pressed) { + tap_dead_code(S(KC_9)); + } + return false; + case M_111: + if (record->event.pressed) { + tap_dead_code(KC_EQL); + } + return false; + case M_112: + if (record->event.pressed) { + tap_dead_code(KC_0); + } + return false; + case M_113: + if (record->event.pressed) { + tap_dead_code(S(KC_LBRC)); + } + return false; + case M_114: + if (record->event.pressed) { + tap_dead_code(S(KC_RBRC)); + } + return false; + case M_115: + if (record->event.pressed) { + tap_dead_code(KC_1); + } + return false; + case M_116: + if (record->event.pressed) { + tap_dead_code(S(KC_8)); + } + return false; + case M_117: + if (record->event.pressed) { + tap_dead_code(S(KC_0)); + } + return false; + case M_118: + if (record->event.pressed) { + tap_dead_code(KC_MINS); + } + return false; + case M_119: + if (record->event.pressed) { + tap_dead_code(S(KC_QUOT)); + } + return false; + case M_120: + if (record->event.pressed) { + tap_dead_code(KC_6); + } + return false; + case M_121: + if (record->event.pressed) { + tap_dead_code(KC_7); + } + return false; + case M_122: + if (record->event.pressed) { + tap_dead_code(KC_8); + } + return false; + case M_123: + if (record->event.pressed) { + tap_dead_code(KC_9); + } + return false; + case M_124: + if (record->event.pressed) { + tap_dead_code(S(KC_BSLS)); + } + return false; + case M_125: + if (record->event.pressed) { + tap_dead_code(KC_BSLS); + } + return false; + case M_126: + if (record->event.pressed) { + tap_dead_code(KC_2); + } + return false; + case M_127: + if (record->event.pressed) { + tap_dead_code(KC_3); + } + return false; + case M_128: + if (record->event.pressed) { + tap_dead_code(KC_4); + } + return false; + case M_129: + if (record->event.pressed) { + tap_dead_code(KC_5); + } + return false; + case M_130: + if (record->event.pressed) { + tap_dead_code(S(KC_1)); + } + return false; + } + return true; +} // Runs constantly in the background, in a loop. void matrix_scan_user(void) { - - uint8_t layer = biton32(layer_state); - ergodox_board_led_off(); ergodox_right_led_1_off(); ergodox_right_led_2_off(); ergodox_right_led_3_off(); - switch (layer) { + + switch (get_highest_layer(layer_state)) { // TODO: Make this relevant to the ErgoDox EZ. case 1: ergodox_right_led_1_on(); @@ -361,5 +406,4 @@ void matrix_scan_user(void) { // none break; } - -}; +} diff --git a/layouts/community/numpad_5x6/bjohnson/rules.mk b/layouts/community/numpad_5x6/bjohnson/rules.mk index d370da7f1b30..b54c78f39bcb 100644 --- a/layouts/community/numpad_5x6/bjohnson/rules.mk +++ b/layouts/community/numpad_5x6/bjohnson/rules.mk @@ -2,4 +2,4 @@ AUDIO_ENABLE = no RGBLIGHT_ENABLE = yes BACKLIGHT_ENABLE = no NO_SECRETS = yes -BOOTMAGIC_ENABLE = lite +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite diff --git a/layouts/community/numpad_5x6/drashna/config.h b/layouts/community/numpad_5x6/drashna/config.h index 1f485e1939d8..aa0c201232aa 100644 --- a/layouts/community/numpad_5x6/drashna/config.h +++ b/layouts/community/numpad_5x6/drashna/config.h @@ -28,6 +28,8 @@ # define RGBLIGHT_EFFECT_SNAKE_LENGTH 2 #endif // RGBLIGHT_ENABLE +#define RGBLIGHT_ALL_ANIMATIONS + #if defined(KEYBOARD_primekb_prime_m) # undef PRODUCT # define PRODUCT Drashna Hacked Prime_M Macro Pad diff --git a/layouts/community/numpad_5x6/drashna/rules.mk b/layouts/community/numpad_5x6/drashna/rules.mk index 0bdf97bae563..a2a2b7f8f1ce 100644 --- a/layouts/community/numpad_5x6/drashna/rules.mk +++ b/layouts/community/numpad_5x6/drashna/rules.mk @@ -2,8 +2,7 @@ AUDIO_ENABLE = no RGBLIGHT_ENABLE = yes BACKLIGHT_ENABLE = no NO_SECRETS = yes -BOOTMAGIC_ENABLE = lite +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite INDICATOR_LIGHTS = no -RGBLIGHT_TWINKLE = yes MAKE_BOOTLOADER = yes RGBLIGHT_STARTUP_ANIMATION = yes diff --git a/layouts/community/ortho_1x4/readme.md b/layouts/community/ortho_1x4/readme.md new file mode 100644 index 000000000000..6ef30dd0a694 --- /dev/null +++ b/layouts/community/ortho_1x4/readme.md @@ -0,0 +1,3 @@ +# ortho_1x4 + + LAYOUT_ortho_1x4 diff --git a/layouts/community/ortho_2x3/layout.json b/layouts/community/ortho_2x3/layout.json new file mode 100644 index 000000000000..255792193e7c --- /dev/null +++ b/layouts/community/ortho_2x3/layout.json @@ -0,0 +1,2 @@ +["","",""], +["","",""] diff --git a/layouts/community/ortho_2x3/readme.md b/layouts/community/ortho_2x3/readme.md new file mode 100644 index 000000000000..47ae0f68641c --- /dev/null +++ b/layouts/community/ortho_2x3/readme.md @@ -0,0 +1,3 @@ +# ortho_2x3 + + LAYOUT_ortho_2x3 diff --git a/layouts/community/ortho_2x6/layout.json b/layouts/community/ortho_2x6/layout.json new file mode 100644 index 000000000000..ce609ee590bf --- /dev/null +++ b/layouts/community/ortho_2x6/layout.json @@ -0,0 +1,2 @@ +["","","","","",""], +["","","","","",""] diff --git a/layouts/community/ortho_2x6/readme.md b/layouts/community/ortho_2x6/readme.md new file mode 100644 index 000000000000..5e7c148a7245 --- /dev/null +++ b/layouts/community/ortho_2x6/readme.md @@ -0,0 +1,3 @@ +# ortho_2x6 + + LAYOUT_ortho_2x6 diff --git a/layouts/community/ortho_4x10/manna-harbour_miryoku/config.h b/layouts/community/ortho_4x10/manna-harbour_miryoku/config.h new file mode 100644 index 000000000000..b1e9526f9917 --- /dev/null +++ b/layouts/community/ortho_4x10/manna-harbour_miryoku/config.h @@ -0,0 +1,37 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . + +#pragma once + +#define XXX KC_NO + +#if defined MIRYOKU_MAPPING_ROTATE +#define LAYOUT_miryoku( \ +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, \ +N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ +) \ +LAYOUT_ortho_4x10( \ +XXX, XXX, K37, K36, K35, K34, K33, K32, XXX, XXX, \ +K29, K28, K27, K26, K25, K24, K23, K22, K21, K20, \ +K19, K18, K17, K16, K15, K14, K13, K12, K11, K10, \ +K09, K08, K07, K06, K05, K04, K03, K02, K01, K00 \ +) +#else +#define LAYOUT_miryoku(\ +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, \ +N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ +) \ +LAYOUT_ortho_4x10( \ +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, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX \ +) +#endif diff --git a/layouts/community/ortho_4x10/manna-harbour_miryoku/keymap.c b/layouts/community/ortho_4x10/manna-harbour_miryoku/keymap.c new file mode 100644 index 000000000000..7c5717a0fee0 --- /dev/null +++ b/layouts/community/ortho_4x10/manna-harbour_miryoku/keymap.c @@ -0,0 +1,5 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/layouts/community/ortho_4x12/ajp10304/keymap.c b/layouts/community/ortho_4x12/ajp10304/keymap.c index 3badce2eafb6..4d9ddb124533 100644 --- a/layouts/community/ortho_4x12/ajp10304/keymap.c +++ b/layouts/community/ortho_4x12/ajp10304/keymap.c @@ -1,3 +1,19 @@ +/* Copyright 2021 Alan Pocklington + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #include "ajp10304.h" #include "keymap_uk.h" @@ -95,7 +111,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Mouse * ,-----------------------------------------------------------------------------------. - * | ESC | | | | | | | | BTN3 | | | | + * | ESC | | | | | | WH_L | WH_UP| BTN3 | WH_D | WH_R | | * |------+------+------+------+------+-------------+------+------+------+------+------| * | ACC0 | ACC1 | ACC2 | | | | | BTN1 | UP | BTN2 | | | * |------+------+------+------+------+------|------+------+------+------+------+------| @@ -105,10 +121,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_MOUSE] = LAYOUT_ortho_4x12( - KC_ESC , _______, _______, _______, _______, _______, _______, _______, KC_MS_BTN3, _______, _______, _______, - KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, _______, _______, _______, _______, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, _______, _______, - KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, _______, _______, _______, _______, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + KC_ESC , _______, _______, _______, _______, _______, KC_MS_WH_LEFT, KC_MS_WH_UP, KC_MS_BTN3, KC_MS_WH_DOWN, KC_MS_WH_RIGHT, _______, + KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, _______, _______, _______, _______, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, _______, _______, + KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, _______, _______, _______, _______, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), /* Num Pad diff --git a/layouts/community/ortho_4x12/ajp10304/readme.md b/layouts/community/ortho_4x12/ajp10304/readme.md index 6f2330f9437b..6db0b851d92b 100644 --- a/layouts/community/ortho_4x12/ajp10304/readme.md +++ b/layouts/community/ortho_4x12/ajp10304/readme.md @@ -1,5 +1,5 @@ # AJP10304 Ortho 4x12 Layout -# For Planck, Shark, JJ40 and Atreus50 +# For Planck, Shark, Quark, JJ40 and Atreus50 **Note:** In the tables below where there are two characters on a key, the second is the output when shift is applied. @@ -101,7 +101,7 @@ Activated when `fn` and `raise` held together. | | | | | | | | | | | | | | :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| -| ESC | | | | | | | | BTN3 | | | | +| ESC | | | | | | W_L | W_UP | BTN3 | W_DWN| W_R | | | ACC0 | ACC1 | ACC2 | | | | | BTN1 | UP | BTN2 | | | | ACC0 | ACC1 | ACC2 | | | | | LEFT | DOWN | RIGHT| | | | | | | | | | | | | | | | diff --git a/layouts/community/ortho_4x12/bocaj/config.h b/layouts/community/ortho_4x12/bocaj/config.h deleted file mode 100644 index 9a65684f35ad..000000000000 --- a/layouts/community/ortho_4x12/bocaj/config.h +++ /dev/null @@ -1,106 +0,0 @@ -#pragma once - -#define LEADER_TIMEOUT 250 -#define LEADER_PER_KEY_TIMING - -#if defined(RGBLIGHT_ENABLE) && !defined(RGBLED_NUM) -# if defined(KEYBOARD_planck_light) -# define RGB_DI_PIN A0 -# define RGBLED_NUM 13 // Number of LEDs -# endif -# define RGBLIGHT_HUE_STEP 12 -# define RGBLIGHT_SAT_STEP 12 -# define RGBLIGHT_VAL_STEP 12 -# define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2 -# define RGBLIGHT_EFFECT_SNAKE_LENGTH 2 -# ifdef RGB_MATRIX_ENABLE -# define RGBLIGHT_DISABLE_KEYCODES -# endif -#endif // RGBLIGHT_ENABLE - -#ifdef RGB_MATRIX_ENABLE -# define RGB_MATRIX_KEYPRESSES // reacts to keypresses (will slow down matrix scan by a lot) -// #define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (not recommened) -# define RGB_MATRIX_FRAMEBUFFER_EFFECTS -// #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -// #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255 -# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended -# undef RGB_MATRIX_LED_PROCESS_LIMIT -# undef RGB_MATRIX_LED_FLUSH_LIMIT -#endif - -#if defined(KEYBOARD_planck_ez) -# undef PRODUCT -# define PRODUCT Bocaj Hacked Planck EZ -#endif - -#define EEPROM_I2C_RM24C512C - -#define ENCODER_DIRECTION_FLIP -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ - -// #define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 2 - -#define FB_ERM_LRA 1 /* For ERM:0 or LRA:1*/ -#define FB_BRAKEFACTOR 6 /* For 1x:0, 2x:1, 3x:2, 4x:3, 6x:4, 8x:5, 16x:6, Disable Braking:7 */ -#define FB_LOOPGAIN 1 /* For Low:0, Medium:1, High:2, Very High:3 */ - -/* default 3V ERM vibration motor voltage and library*/ -#if FB_ERM_LRA == 0 -# define RATED_VOLTAGE 3 -# define V_RMS 2.3 -# define V_PEAK 3.30 -/* Library Selection */ -# define LIB_SELECTION 4 /* For Empty:0' TS2200 library A to D:1-5, LRA Library: 6 */ - -/* default 2V LRA voltage and library */ -#elif FB_ERM_LRA == 1 -# define RATED_VOLTAGE 2 -# define V_RMS 2.0 -# define V_PEAK 2.85 -# define F_LRA 200 -/* Library Selection */ -# define LIB_SELECTION 6 /* For Empty:0' TS2200 library A to D:1-5, LRA Library: 6 */ - -#endif - -/* Control 1 register settings */ -#define DRIVE_TIME 25 -#define AC_COUPLE 0 -#define STARTUP_BOOST 1 - -/* Control 2 Settings */ -#define BIDIR_INPUT 1 -#define BRAKE_STAB 1 /* Loopgain is reduced when braking is almost complete to improve stability */ -#define SAMPLE_TIME 3 -#define BLANKING_TIME 1 -#define IDISS_TIME 1 - -/* Control 3 settings */ -#define NG_THRESH 2 -#define ERM_OPEN_LOOP 1 -#define SUPPLY_COMP_DIS 0 -#define DATA_FORMAT_RTO 0 -#define LRA_DRIVE_MODE 0 -#define N_PWM_ANALOG 0 -#define LRA_OPEN_LOOP 0 -/* Control 4 settings */ -#define ZC_DET_TIME 0 -#define AUTO_CAL_TIME 3 diff --git a/layouts/community/ortho_4x12/bocaj/keymap.c b/layouts/community/ortho_4x12/bocaj/keymap.c deleted file mode 100644 index 6adbb6d61b80..000000000000 --- a/layouts/community/ortho_4x12/bocaj/keymap.c +++ /dev/null @@ -1,287 +0,0 @@ -/* -Copyright 2020 Jacob Jerrell @JacobJerrell - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#include "bocaj.h" - -#ifdef BACKLIGHT_ENABLE -enum planck_keycodes { - BACKLIT = NEW_SAFE_RANGE, - TH_LVL, -}; - -#else -# define BACKLIT OSM(MOD_LSFT) -enum planck_keycodes { - TH_LVL = NEW_SAFE_RANGE, -}; -#endif - -/* - * Tap/Hold Wrapper - * ,-----------------------------------------------------------------------------------. - * | | | | | | | | | | | | | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | |Shift | Cmd | Alt | | | Alt | Cmd |Shift | | | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | Ctrl | | | | | | | | | Ctrl | | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | |Lower | |Raise | | | | | - * `-----------------------------------------------------------------------------------' - */ -#define LAYOUT_ortho_4x12_bocaj(...) WRAPPER_planck_bocaj(__VA_ARGS__) - -/* - * Base Alphanumeric Wrapper + Tap/Hold Wrapper - * ,-----------------------------------------------------------------------------------. - * | Esc | | | | | | | | | | | - | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Tab | | | | | HYPR | MEH | | | | | ' | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Shift| | | | | | | | | | | TTMOD| - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | MOMOD| Lead | Up | Left |BkSpc | Space |Enter |Right | Down | XXX | XXX | - * `-----------------------------------------------------------------------------------' - */ -#define LAYOUT_ortho_4x12_bocaj_base(...) WRAPPER_planck_bocaj_base(__VA_ARGS__) -#define LAYOUT_ortho_4x12_bocaj_base_WIN(...) WRAPPER_planck_bocaj_base_WIN(__VA_ARGS__) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_WORKMAN] = LAYOUT_ortho_4x12_bocaj_base( - _________________WORKMAN_L1________________, _________________WORKMAN_R1________________, - _________________WORKMAN_L2________________, _________________WORKMAN_R2________________, - _________________WORKMAN_L3________________, _________________WORKMAN_R3________________ - ), - [_WWORKMAN] = LAYOUT_ortho_4x12_bocaj_base_WIN( - _________________WORKMAN_L1________________, _________________WORKMAN_R1________________, - _________________WORKMAN_L2________________, _________________WORKMAN_R2________________, - _________________WORKMAN_L3________________, _________________WORKMAN_R3________________ - ), - - [_QWERTY] = LAYOUT_ortho_4x12_bocaj_base( - _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, - _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, - _________________QWERTY_L3_________________, _________________QWERTY_R3_________________ - ), - [_WQWERTY] = LAYOUT_ortho_4x12_bocaj_base_WIN( - _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, - _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, - _________________QWERTY_L3_________________, _________________QWERTY_R3_________________ - ), - - [_LOWER] = LAYOUT_ortho_4x12_bocaj( - ___________________LOWER_L1_EXT____________________, ___________________LOWER_R1_EXT____________________, - ___________________LOWER_L2_EXT____________________, ___________________LOWER_R2_EXT____________________, - ___________________LOWER_L3_EXT____________________, ___________________LOWER_R3_EXT____________________, - _______, _______, _______, _______, _______, _______, _______, KC_0, KC_DOT, KC_COMM, _______, _______ - ), - - [_RAISE] = LAYOUT_ortho_4x12_bocaj( - KC_TILD, _________________RAISE_L1__________________, _________________RAISE_R1__________________, KC_EQUAL, - KC_F11, _________________RAISE_L2__________________, _________________RAISE_R2__________________, KC_F12, - _______, _________________RAISE_L3__________________, _________________RAISE_R3__________________, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - - [_ADJUST] = WRAPPER_ortho_4x12( - KC_MAKE, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, KC_RST, - VRSN, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, EEP_RST, - TH_LVL, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, RGB_IDL, - HPT_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ) - -}; -// clang-format on - -bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { -#ifdef BACKLIGHT_ENABLE - case BACKLIT: - if (record->event.pressed) { - register_code(KC_RSFT); -# ifdef BACKLIGHT_ENABLE - backlight_step(); -# endif - } else { - unregister_code(KC_RSFT); - } - break; -#endif -#ifdef KEYBOARD_planck_ez - case TH_LVL: - if (record->event.pressed) { - keyboard_config.led_level++; - if (keyboard_config.led_level > 4) { - keyboard_config.led_level = 0; - } - planck_ez_right_led_level((uint8_t)keyboard_config.led_level * 255 / 4); - planck_ez_left_led_level((uint8_t)keyboard_config.led_level * 255 / 4); - eeconfig_update_kb(keyboard_config.raw); - layer_state_set_kb(layer_state); - } - break; -#endif - } - return true; -} - -bool music_mask_user(uint16_t keycode) { - switch (keycode) { - default: - return true; - } -} - -#ifdef RGB_MATRIX_ENABLE - -// clang-format off -void suspend_power_down_keymap(void) { - rgb_matrix_set_suspend_state(true); -} - -void suspend_wakeup_init_keymap(void) { - rgb_matrix_set_suspend_state(false); -} -// clang-format on - -void rgb_matrix_indicators_user(void) { - uint8_t this_mod = get_mods(); - uint8_t this_led = host_keyboard_leds(); - uint8_t this_osm = get_oneshot_mods(); - bool is_ez; -# ifdef KEYBOARD_planck_ez - is_ez = true; -# endif - - if (g_suspend_state || !rgb_matrix_config.enable) return; - -# if defined(RGBLIGHT_ENABLE) - if (!userspace_config.rgb_layer_change) -# else - if (userspace_config.rgb_layer_change) -# endif - { - switch (get_highest_layer(layer_state)) { - case _MOD: - rgb_matrix_layer_helper(HSV_ORANGE, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER); - break; - case _RAISE: - rgb_matrix_layer_helper(HSV_BLUE, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER); - break; - case _LOWER: - rgb_matrix_layer_helper(HSV_GREEN, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER); - break; - case _ADJUST: - rgb_matrix_layer_helper(HSV_RED, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER); - break; - default: { - bool mods_enabled = false; - switch (get_highest_layer(default_layer_state)) { - case _QWERTY: - rgb_matrix_layer_helper(HSV_CYAN, mods_enabled, rgb_matrix_config.speed, LED_FLAG_MODIFIER); - break; - case _WQWERTY: - rgb_matrix_layer_helper(HSV_BLUE, mods_enabled, rgb_matrix_config.speed, LED_FLAG_MODIFIER); - break; - case _WORKMAN: - rgb_matrix_layer_helper(HSV_SPRINGGREEN, mods_enabled, rgb_matrix_config.speed, LED_FLAG_MODIFIER); - break; - case _WWORKMAN: - rgb_matrix_layer_helper(HSV_GREEN, mods_enabled, rgb_matrix_config.speed, LED_FLAG_MODIFIER); - break; - } - break; - } - } - } - - switch (get_highest_layer(default_layer_state)) { - case _QWERTY: - rgb_matrix_set_color(is_ez ? 41 : 42, 0x00, 0xFF, 0xFF); - break; - case _WORKMAN: - rgb_matrix_set_color(is_ez ? 41 : 42, 0xD9, 0xA5, 0x21); - break; - } - - if ((this_mod | this_osm) & MODS_SHIFT_MASK || this_led & (1 << USB_LED_CAPS_LOCK)) { - rgb_matrix_set_color_row(0, 0x00, 0xFF, 0x00); - } - if ((this_mod | this_osm) & MODS_CTRL_MASK && (this_mod | this_osm) & MODS_GUI_MASK) { - rgb_matrix_set_color_row(1, 0xFF, 0xD9, 0xFF); - } else if ((this_mod | this_osm) & MODS_CTRL_MASK) { - rgb_matrix_set_color_row(1, 0xFF, 0x00, 0x00); - } else if ((this_mod | this_osm) & MODS_GUI_MASK) { - rgb_matrix_set_color_row(1, 0xFF, 0xD9, 0x00); - } - if ((this_mod | this_osm) & MODS_ALT_MASK) { - rgb_matrix_set_color_row(2, 0x00, 0x00, 0xFF); - } -} -#endif // RGB_MATRIX_INIT - -void matrix_init_keymap(void) {} - -#ifdef ENCODER_ENABLE -bool encoder_update_user(uint8_t index, bool clockwise) { - switch (get_highest_layer(layer_state)) { - case _RAISE: - clockwise ? tap_code(KC_VOLD) : tap_code(KC_VOLU); - break; - case _LOWER: -# ifdef RGB_MATRIX_ENABLE - clockwise ? rgb_matrix_step() : rgb_matrix_step_reverse(); -# else - clockwise ? tap_code(KC_PGDN) : tap_code(KC_PGUP); -# endif - break; - case _ADJUST: -# ifdef AUDIO_CLICKY - clockwise ? clicky_freq_up() : clicky_freq_down(); -# endif - break; - default: - clockwise ? tap_code(KC_DOWN) : tap_code(KC_UP); - } -# ifdef AUDIO_CLICKY - clicky_play(); -# endif - return true; -} -#endif // ENCODER_ENABLE - -#ifdef KEYBOARD_planck_ez -layer_state_t layer_state_set_keymap(layer_state_t state) { - planck_ez_left_led_off(); - planck_ez_right_led_off(); - switch (get_highest_layer(state)) { - case _LOWER: - planck_ez_left_led_on(); - break; - case _RAISE: - planck_ez_right_led_on(); - break; - case _ADJUST: - planck_ez_right_led_on(); - planck_ez_left_led_on(); - break; - default: - break; - } - return state; -} -#endif diff --git a/layouts/community/ortho_4x12/bocaj/readme.md b/layouts/community/ortho_4x12/bocaj/readme.md deleted file mode 100644 index a3716b8dc04d..000000000000 --- a/layouts/community/ortho_4x12/bocaj/readme.md +++ /dev/null @@ -1,23 +0,0 @@ -# Overview - -This is my Planck EZ layout, heavily based upon [my ergodox layout](../../ergodox/bocaj/). - -I got this keyboard for two reasons: - -1. QMK spoiled me and the Ergodox isn't incredibly portable (ok 3 reasons) -2. This can sit ontop of my janky Macbook Pro keyboard (disabled with Karabiner if the planck is connected) when I want to work from the couch. - -## How to Build - -Put simply: -`make planck/ez:bocaj` - -On that note, I use a separate workspace when making changes to my layouts or userspace. In that repo, there is a tool that does this for me. See [JacobJerrell/qmk_layouts/tools/](https://github.com/JacobJerrell/qmk_layouts/tree/master/tools) until I get documentation finished (Write code first, define requirements second... right?). - -## Layers - -* WORKMAN/QWERTY: Default is workman, can be switched via the ADJUST layer. Idk why you would though. -* LOWER: Nums across the top, switches enter key to tab and tab key to delete. Symbols in the middle, remenascent of the ergodox -* RAISE: Symbols across the top, F-Keys on the 2nd row. Switches backspace to delete -* ADJUST: Computer Audio controls, RGB controls, Sound controls, macros, etc. -* MOD: Mouse controls under the left hand. Numpad under the right hand \ No newline at end of file diff --git a/layouts/community/ortho_4x12/bocaj/rules.mk b/layouts/community/ortho_4x12/bocaj/rules.mk deleted file mode 100644 index 5c642e65ca35..000000000000 --- a/layouts/community/ortho_4x12/bocaj/rules.mk +++ /dev/null @@ -1,43 +0,0 @@ -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = no # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -TAP_DANCE_ENABLE = no -SPACE_CADET_ENABLE = no -NKRO_ENABLE = yes - -ifneq ($(strip $(KEYBOARD)), planck/rev6) - CONSOLE_ENABLE = no - COMMAND_ENABLE = no - ifeq ($(strip $(LAYOUT_HAS_RGB)), yes) - RGBLIGHT_ENABLE = yes - INDICATOR_LIGHTS = yes - RGBLIGHT_TWINKLE = yes - RGBLIGHT_STARTUP_ANIMATION = yes - endif -else - CONSOLE_ENABLE = yes - COMMAND_ENABLE = yes - RGBLIGHT_ENABLE = yes - RGBLIGHT_STARTUP_ANIMATION = yes - RGB_MATRIX_ENABLE = no - AUDIO_ENABLE = yes - EEPROM_DRIVER = i2c -endif -ifeq ($(strip $(KEYBOARD)), planck/light) - RGB_MATRIX_ENABLE = yes - RGBLIGHT_ENABLE = yes - RGBLIGHT_STARTUP_ANIMATION = yes - AUDIO_ENABLE = yes - # HAPTIC_ENABLE += SOLENOID -endif -ifeq ($(strip $(KEYBOARD)), planck/ez) - RGBLIGHT_ENABLE = no - ENCODER_ENABLE = yes - RGB_MATRIX_ENABLE = IS31FL3737 - INDICATOR_LIGHTS = yes - RGBLIGHT_TWINKLE = yes - RGBLIGHT_STARTUP_ANIMATION = yes - CONSOLE_ENABLE = yes - COMMAND_ENABLE = yes - AUDIO_ENABLE = yes -endif diff --git a/layouts/community/ortho_4x12/brandonschlack/keymap.c b/layouts/community/ortho_4x12/brandonschlack/keymap.c index ea9d2950642f..4877a0b446d4 100644 --- a/layouts/community/ortho_4x12/brandonschlack/keymap.c +++ b/layouts/community/ortho_4x12/brandonschlack/keymap.c @@ -154,7 +154,7 @@ bool encoder_update_keymap(uint8_t index, bool clockwise) { return true; } -void dip_switch_update_user(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: { #ifdef AUDIO_ENABLE @@ -183,6 +183,7 @@ void dip_switch_update_user(uint8_t index, bool active) { muse_mode = false; } } + return true; } void matrix_scan_keymap(void) { diff --git a/layouts/community/ortho_4x12/brandonschlack/rules.mk b/layouts/community/ortho_4x12/brandonschlack/rules.mk index e36b073d22b4..0c4b14a4e541 100644 --- a/layouts/community/ortho_4x12/brandonschlack/rules.mk +++ b/layouts/community/ortho_4x12/brandonschlack/rules.mk @@ -6,5 +6,5 @@ MOUSEKEY_ENABLE = yes # Mouse keys(+4700) BACKLIGHT_ENABLE = no # No backlights installed ifeq ($(strip $(KEYBOARD)), jnao) - BOOTMAGIC_ENABLE = lite + BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite endif diff --git a/layouts/community/ortho_4x12/buswerks/rules.mk b/layouts/community/ortho_4x12/buswerks/rules.mk index 72f8257322a7..d08db7130b9f 100644 --- a/layouts/community/ortho_4x12/buswerks/rules.mk +++ b/layouts/community/ortho_4x12/buswerks/rules.mk @@ -1,4 +1,4 @@ -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/layouts/community/ortho_4x12/drashna/config.h b/layouts/community/ortho_4x12/drashna/config.h index f4abd64f57a4..d6197ece29d1 100644 --- a/layouts/community/ortho_4x12/drashna/config.h +++ b/layouts/community/ortho_4x12/drashna/config.h @@ -37,7 +37,7 @@ # define RGB_MATRIX_FRAMEBUFFER_EFFECTS // #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects // #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255 -# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended # undef RGB_MATRIX_LED_PROCESS_LIMIT # undef RGB_MATRIX_LED_FLUSH_LIMIT # ifdef KEYBOARD_planck_rev6 @@ -75,6 +75,7 @@ # define PRODUCT Drashna Hacked Planck Rev6 # elif defined(KEYBOARD_planck_ez) # define PRODUCT Drashna Hacked Planck EZ +# define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 4095 # endif #endif #undef NO_USB_STARTUP_CHECK diff --git a/layouts/community/ortho_4x12/drashna/keymap.c b/layouts/community/ortho_4x12/drashna/keymap.c index 82594b9fd4a5..3ba9cf64f979 100644 --- a/layouts/community/ortho_4x12/drashna/keymap.c +++ b/layouts/community/ortho_4x12/drashna/keymap.c @@ -16,7 +16,6 @@ #include "drashna.h" - #ifdef BACKLIGHT_ENABLE enum planck_keycodes { BACKLIT = NEW_SAFE_RANGE, @@ -62,58 +61,32 @@ enum planck_keycodes { KC_MLSF, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A), KC_ENT, \ BACKLIT, OS_LCTL, OS_LALT, OS_LGUI, PLNK_1, PLNK_2, PLNK_3, PLNK_4, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ ) -#define LAYOUT_ortho_4x12_base_wrapper(...) LAYOUT_ortho_4x12_base(__VA_ARGS__) +#define LAYOUT_base_wrapper(...) LAYOUT_ortho_4x12_base(__VA_ARGS__) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_QWERTY] = LAYOUT_ortho_4x12_base_wrapper( - _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, - _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, - _________________QWERTY_L3_________________, _________________QWERTY_R3_________________ - ), - - [_COLEMAK] = LAYOUT_ortho_4x12_base_wrapper( - _________________COLEMAK_L1________________, _________________COLEMAK_R1________________, - _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, - _________________COLEMAK_L3________________, _________________COLEMAK_R3________________ - ), - - [_DVORAK] = LAYOUT_ortho_4x12_base_wrapper( - _________________DVORAK_L1_________________, _________________DVORAK_R1_________________, - _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, - _________________DVORAK_L3_________________, _________________DVORAK_R3_________________ - ), - - [_WORKMAN] = LAYOUT_ortho_4x12_base_wrapper( - _________________WORKMAN_L1________________, _________________WORKMAN_R1________________, - _________________WORKMAN_L2________________, _________________WORKMAN_R2________________, - _________________WORKMAN_L3________________, _________________WORKMAN_R3________________ - ), - - [_NORMAN] = LAYOUT_ortho_4x12_base_wrapper( - _________________NORMAN_L1_________________, _________________NORMAN_L1_________________, - _________________NORMAN_L2_________________, _________________NORMAN_R2_________________, - _________________NORMAN_L3_________________, _________________NORMAN_R3_________________ - ), - - [_MALTRON] = LAYOUT_ortho_4x12_base_wrapper( - _________________MALTRON_L1________________, _________________MALTRON_R1________________, - _________________MALTRON_L2________________, _________________MALTRON_R2________________, - _________________MALTRON_L3________________, _________________MALTRON_R3________________ - ), - - [_EUCALYN] = LAYOUT_ortho_4x12_base_wrapper( - _________________EUCALYN_L1________________, _________________EUCALYN_R1________________, - _________________EUCALYN_L2________________, _________________EUCALYN_R2________________, - _________________EUCALYN_L3________________, _________________EUCALYN_R3________________ - ), - - [_CARPLAX] = LAYOUT_ortho_4x12_base_wrapper( - _____________CARPLAX_QFMLWY_L1_____________, _____________CARPLAX_QFMLWY_R1_____________, - _____________CARPLAX_QFMLWY_L2_____________, _____________CARPLAX_QFMLWY_R2_____________, - _____________CARPLAX_QFMLWY_L3_____________, _____________CARPLAX_QFMLWY_R3_____________ - ), + [_DEFAULT_LAYER_1] = LAYOUT_base_wrapper( + _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, + _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, + _________________QWERTY_L3_________________, _________________QWERTY_R3_________________ + ), + + [_DEFAULT_LAYER_2] = LAYOUT_base_wrapper( + ______________COLEMAK_MOD_DH_L1____________, ______________COLEMAK_MOD_DH_R1____________, + ______________COLEMAK_MOD_DH_L2____________, ______________COLEMAK_MOD_DH_R2____________, + ______________COLEMAK_MOD_DH_L3____________, ______________COLEMAK_MOD_DH_R3____________ + ), + [_DEFAULT_LAYER_3] = LAYOUT_base_wrapper( + _________________COLEMAK_L1________________, _________________COLEMAK_R1________________, + _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, + _________________COLEMAK_L3________________, _________________COLEMAK_R3________________ + ), + + [_DEFAULT_LAYER_4] = LAYOUT_base_wrapper( + _________________DVORAK_L1_________________, _________________DVORAK_R1_________________, + _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, + _________________DVORAK_L3_________________, _________________DVORAK_R3_________________ + ), [_LOWER] = LAYOUT_ortho_4x12_wrapper( KC_TILD, _________________LOWER_L1__________________, _________________LOWER_R1__________________, KC_BSPC, @@ -133,10 +106,26 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_MAKE, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, KC_RST, VRSN, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, EEP_RST, TH_LVL, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, RGB_IDL, - HPT_TOG, _______, _______, _______, _______, KC_NUKE, _______, _______, _______, _______, _______, TG_MODS + KEYLOCK, _______, _______, _______, _______, KC_NUKE, _______, _______, _______, _______, _______, TG_MODS ) }; + +#ifdef ENCODER_MAP_ENABLE +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [_DEFAULT_LAYER_1] = { { KC_DOWN, KC_UP } }, + [_DEFAULT_LAYER_2] = { { _______, _______ } }, + [_DEFAULT_LAYER_3] = { { _______, _______ } }, + [_DEFAULT_LAYER_4] = { { _______, _______ } }, + [_GAMEPAD] = { { _______, _______ } }, + [_DIABLO] = { { _______, _______ } }, + [_MOUSE] = { { KC_WH_D, KC_WH_U } }, + [_MEDIA] = { { _______, _______ } }, + [_RAISE] = { { KC_VOLD, KC_VOLU } }, + [_LOWER] = { { RGB_MOD, RGB_RMOD} }, + [_ADJUST] = { { CK_DOWN, CK_UP } }, +}; +#endif // clang-format on bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { @@ -222,16 +211,16 @@ void suspend_wakeup_init_keymap(void) { } // clang-format on - void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { uint8_t this_mod = get_mods(); uint8_t this_led = host_keyboard_leds(); uint8_t this_osm = get_oneshot_mods(); - bool is_ez; # ifdef KEYBOARD_planck_ez - is_ez = true; +# define THUMB_LED 41 +# else +# define THUMB_LED 42 # endif - +# define RGB_MATRIX_INDICATOR_SET_COLOR_wrapper(...) RGB_MATRIX_INDICATOR_SET_COLOR(__VA_ARGS__) # if defined(RGBLIGHT_ENABLE) if (!userspace_config.rgb_layer_change) # else @@ -254,50 +243,39 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { case _ADJUST: rgb_matrix_layer_helper(HSV_RED, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); break; - default: { - switch (get_highest_layer(default_layer_state)) { - case _QWERTY: - rgb_matrix_layer_helper(HSV_CYAN, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); - break; - case _COLEMAK: - rgb_matrix_layer_helper(HSV_MAGENTA, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); - break; - case _DVORAK: - rgb_matrix_layer_helper(HSV_SPRINGGREEN, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); - break; - case _WORKMAN: - rgb_matrix_layer_helper(HSV_GOLDENROD, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); - break; - case _NORMAN: - rgb_matrix_layer_helper(HSV_CORAL, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); - break; - case _MALTRON: - rgb_matrix_layer_helper(HSV_YELLOW, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); - break; - case _EUCALYN: - rgb_matrix_layer_helper(HSV_PINK, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); - break; - case _CARPLAX: - rgb_matrix_layer_helper(HSV_BLUE, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); - break; + default: + { + switch (get_highest_layer(default_layer_state)) { + case _DEFAULT_LAYER_1: + rgb_matrix_layer_helper(DEFAULT_LAYER_1_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); + break; + case _DEFAULT_LAYER_2: + rgb_matrix_layer_helper(DEFAULT_LAYER_2_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); + break; + case _DEFAULT_LAYER_3: + rgb_matrix_layer_helper(DEFAULT_LAYER_3_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); + break; + case _DEFAULT_LAYER_4: + rgb_matrix_layer_helper(DEFAULT_LAYER_4_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max); + break; + } + break; } - break; - } } } switch (get_highest_layer(default_layer_state)) { - case _QWERTY: - RGB_MATRIX_INDICATOR_SET_COLOR((is_ez ? 41 : 42), 0x00, 0xFF, 0xFF); + case _DEFAULT_LAYER_1: + RGB_MATRIX_INDICATOR_SET_COLOR_wrapper(THUMB_LED, DEFAULT_LAYER_1_RGB); break; - case _COLEMAK: - RGB_MATRIX_INDICATOR_SET_COLOR((is_ez ? 41 : 42), 0xFF, 0x00, 0xFF); + case _DEFAULT_LAYER_2: + RGB_MATRIX_INDICATOR_SET_COLOR_wrapper(THUMB_LED, DEFAULT_LAYER_2_RGB); break; - case _DVORAK: - RGB_MATRIX_INDICATOR_SET_COLOR((is_ez ? 41 : 42), 0x00, 0xFF, 0x00); + case _DEFAULT_LAYER_3: + RGB_MATRIX_INDICATOR_SET_COLOR_wrapper(THUMB_LED, DEFAULT_LAYER_3_RGB); break; - case _WORKMAN: - RGB_MATRIX_INDICATOR_SET_COLOR((is_ez ? 41 : 42), 0xD9, 0xA5, 0x21); + case _DEFAULT_LAYER_4: + RGB_MATRIX_INDICATOR_SET_COLOR_wrapper(THUMB_LED, DEFAULT_LAYER_4_RGB); break; } @@ -368,7 +346,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { #endif // ENCODER_ENABLE #ifdef KEYBOARD_planck_rev6 -void dip_update(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: if (active) { @@ -391,6 +369,7 @@ void dip_update(uint8_t index, bool active) { userspace_config.nuke_switch = active; break; } + return true; } #endif // KEYBOARD_planck_rev6 diff --git a/layouts/community/ortho_4x12/drashna/rules.mk b/layouts/community/ortho_4x12/drashna/rules.mk index 06a250ee79cc..d76624526062 100644 --- a/layouts/community/ortho_4x12/drashna/rules.mk +++ b/layouts/community/ortho_4x12/drashna/rules.mk @@ -1,4 +1,4 @@ -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) TAP_DANCE_ENABLE = no @@ -11,7 +11,6 @@ ifneq ($(strip $(KEYBOARD)), planck/rev6) ifeq ($(strip $(LAYOUT_HAS_RGB)), yes) RGBLIGHT_ENABLE = yes INDICATOR_LIGHTS = yes - RGBLIGHT_TWINKLE = yes RGBLIGHT_STARTUP_ANIMATION = yes endif else @@ -22,22 +21,22 @@ else RGB_MATRIX_ENABLE = no AUDIO_ENABLE = yes EEPROM_DRIVER = i2c + ENCODER_MAP_ENABLE = yes endif ifeq ($(strip $(KEYBOARD)), planck/light) RGB_MATRIX_ENABLE = yes RGBLIGHT_ENABLE = yes RGBLIGHT_STARTUP_ANIMATION = yes AUDIO_ENABLE = yes - # HAPTIC_ENABLE += SOLENOID endif ifeq ($(strip $(KEYBOARD)), planck/ez) - RGBLIGHT_ENABLE = no - ENCODER_ENABLE = yes - RGB_MATRIX_ENABLE = yes + RGBLIGHT_ENABLE = no + ENCODER_ENABLE = yes + ENCODER_MAP_ENABLE = yes + RGB_MATRIX_ENABLE = yes INDICATOR_LIGHTS = yes - RGBLIGHT_TWINKLE = yes RGBLIGHT_STARTUP_ANIMATION = yes - CONSOLE_ENABLE = yes - COMMAND_ENABLE = yes - AUDIO_ENABLE = yes + CONSOLE_ENABLE = yes + COMMAND_ENABLE = yes + AUDIO_ENABLE = yes endif diff --git a/layouts/community/ortho_4x12/jjerrell/config.h b/layouts/community/ortho_4x12/jjerrell/config.h new file mode 100644 index 000000000000..aee885b8d058 --- /dev/null +++ b/layouts/community/ortho_4x12/jjerrell/config.h @@ -0,0 +1,57 @@ +// Copyright (C) 2021 Jerrell, Jacob <@jjerrell> +// +// This file is part of qmk_firmware. +// +// qmk_firmware is free software: you can 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. +// +// qmk_firmware is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with qmk_firmware. If not, see . + +#pragma once + +// Allows time for repositioning hands due to awkward key placement +#define LEADER_NO_TIMEOUT + +#ifdef AUDIO_ENABLE + #define STARTUP_SONG SONG(PLANCK_SOUND) + // #define STARTUP_SONG SONG(NO_SOUND) + + #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \ + SONG(COLEMAK_SOUND), \ + SONG(DVORAK_SOUND) \ + } +#endif + +#ifdef KEYBOARD_planck_ez_glow +#undef PRODUCT +#define PRODUCT Planck EZ Glow - Modified by <@jjerrell> +#endif + +/* + * MIDI options + */ + +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ + +#define MIDI_BASIC + +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +//#define MIDI_ADVANCED + +// Most tactile encoders have detents every 4 stages +#define ENCODER_RESOLUTION 4 diff --git a/layouts/community/ortho_4x12/jjerrell/keymap.c b/layouts/community/ortho_4x12/jjerrell/keymap.c new file mode 100644 index 000000000000..d873907e91a4 --- /dev/null +++ b/layouts/community/ortho_4x12/jjerrell/keymap.c @@ -0,0 +1,227 @@ +/* Copyright 2015-2017 Jack Humbert + * Copyright 2021 Jacob Jerrell <@jjerrell> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "jjerrell.h" + +enum planck_layers { + _GAME_LOWER = LAYER_SAFE_RANGE, + // _GAME_RAISE, +}; + +#define LAYOUT_planck_plain(...) WRAPPER_ortho_4x12(__VA_ARGS__) + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_WORKMAN] = LAYOUT_planck_base( + __________________WORKMN_L1__________________, __________________WORKMN_R1__________________, + __________________WORKMN_L2__________________, __________________WORKMN_R2__________________, + __________________WORKMN_L3__________________, __________________WORKMN_R3__________________ + ), + /* Lower - Nav/Select/Nums + * ,-----------------------------------------------------------------------------------. + * | PGUP | BSPC | UP | DEL | PGDN | | | | 7 | 8 | 9 | * | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | HOME | LEFT | DOWN | RGHT | END | | | | 4 | 5 | 6 | / | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ESC | TAB | | ENTR | | | | | 1 | 2 | 3 | - | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | held | SPACE | ENTR | 0 | . | , | + | + * `-----------------------------------------------------------------------------------' + */ + [_LOWER] = LAYOUT_planck_mods( + __________________LOWER_L1___________________, XXXXXXX, XXXXXXX, __________________LOWER_R1___________________, + __________________LOWER_L2___________________, XXXXXXX, XXXXXXX, __________________LOWER_R2___________________, + __________________LOWER_L3___________________, XXXXXXX, XXXXXXX, __________________LOWER_R3___________________, + _________________________________________PLANCK_LOWER_BOTTOM_ROW_________________________________________ + ), + /* Raise - Symbols + * ,-----------------------------------------------------------------------------------. + * | % | _ | [ | ] | ^ | | | ! | < | > | = | : | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | \ | / | { | } | * | | | ? | ( | ) | - | ; | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | # | $ | | | ~ | ` | | | @ | " | ' | + | & | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | LEAD | | | BSPC | SPACE | held | | | | | + * `-----------------------------------------------------------------------------------' + */ + [_RAISE] = LAYOUT_planck_common( + __________________RAISE_L1___________________, __________________RAISE_R1___________________, + __________________RAISE_L2___________________, __________________RAISE_R2___________________, + __________________RAISE_L3___________________, __________________RAISE_R3___________________ + ), + /* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | Make | Debug|Reset |TermOn|TrmOff| | |MusMod|Mus On|MusOff|MidiOn|MidOff| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Mute | Vol- | Vol+ | Play | Skip | | |Voice-| HUE+ | HUE- | SAT+ | SAT- | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Vrsn | AudOn|AudOff|CGswap|CGnorm| | |Voice+|RGBTog|RGBMod|BRGHT+|BRGHT-| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | held | | held | | | | | + * `-----------------------------------------------------------------------------------' + */ + [_ADJUST] = LAYOUT_planck_common( + __________________ADJUST_L1__________________, __________________ADJUST_R1__________________, + __________________ADJUST_L2__________________, __________________ADJUST_R2__________________, + __________________ADJUST_L3__________________, __________________ADJUST_R3__________________ + ), + [_GAME] = LAYOUT_planck_plain( + __________________QWERTY_L1__________________, _______, _______, XXXXXXX, KC_9, KC_0, KC_MINS, KC_EQL, + __________________QWERTY_L2__________________, XXXXXXX, XXXXXXX, XXXXXXX, KC_5, KC_6, KC_7, KC_8, + __________________QWERTY_L3__________________, XXXXXXX, XXXXXXX, XXXXXXX, KC_1, KC_2, KC_3, KC_4, + KC_LSFT, KC_LGUI, KC_LALT, KC_LCTL, LT(_LOWER, KC_BSPC), KC_SPC, XXXXXXX, LT(_WORKMAN, KC_ENT), MACRO_1, MACRO_2, MACRO_3, MACRO_4 + ), + [_GAME_LOWER] = LAYOUT_planck_plain( + _______, _______, _______, _______, _______, _______, _______, _______, C(_______), C(_______), C(_______), C(_______), + _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, _______, C(_______), C(_______), C(_______), C(_______), + _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, _______, C(_______), C(_______), C(_______), C(_______), + MACRO_1, MACRO_2, MACRO_3, MACRO_4, _______, _______, XXXXXXX, _______, MACRO_5, MACRO_6, MACRO_7, MACRO_8 + ) + +}; +// clang-format on + +bool muse_mode = false; +uint8_t last_muse_note = 0; +uint16_t muse_counter = 0; +uint8_t muse_offset = 70; +uint16_t muse_tempo = 50; + +#ifdef KEYBOARD_planck_ez +void planck_ez_teeth_set(layer_state_t state) { + switch (get_highest_layer(state)) { + case _LOWER: + planck_ez_left_led_level(40); + break; + case _RAISE: + planck_ez_right_led_level(40); + break; + case _ADJUST: + planck_ez_left_led_level(40); + planck_ez_right_led_level(40); + break; + case _GAME_LOWER: + planck_ez_left_led_level(20); + break; +// todo case _GAME_RAISE: + // planck_ez_right_led_level(20); + // break; + case _WORKMAN: + if (IS_LAYER_ON(_GAME)) { + planck_ez_left_led_level(60); + planck_ez_right_led_level(60); + break; + } + default: + planck_ez_left_led_off(); + planck_ez_right_led_off(); + break; + } +} + +layer_state_t layer_state_set_keymap(layer_state_t state) { + planck_ez_left_led_off(); + planck_ez_right_led_off(); + state = update_tri_layer_state(state, _GAME, _LOWER, _GAME_LOWER); + planck_ez_teeth_set(state); + return state; +} +#endif + +bool encoder_update(bool clockwise) { + if (muse_mode) { + if (IS_LAYER_ON(_RAISE)) { + if (clockwise) { + muse_offset++; + } else { + muse_offset--; + } + } else { + if (clockwise) { + muse_tempo+=1; + } else { + muse_tempo-=1; + } + } + } else { + if (clockwise) { +# ifdef MOUSEKEY_ENABLE + tap_code(KC_MS_WH_DOWN); +# else + tap_code(KC_PGDN); +# endif + } else { +# ifdef MOUSEKEY_ENABLE + tap_code(KC_MS_WH_UP); +# else + tap_code(KC_PGUP); +# endif + } + } + return true; +} + +void dip_switch_update_keymap(uint8_t index, bool active) { + switch (index) { + case 0: { + if (active) { + layer_on(_ADJUST); + } else { + layer_off(_ADJUST); + } + break; + } + case 1: + if (active) { + muse_mode = true; + } else { + muse_mode = false; + } + } +} + +#ifdef AUDIO_ENABLE +void matrix_scan_keymap(void) { + if (muse_mode) { + if (muse_counter == 0) { + uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()]; + if (muse_note != last_muse_note) { + stop_note(compute_freq_for_midi_note(last_muse_note)); + play_note(compute_freq_for_midi_note(muse_note), 0xF); + last_muse_note = muse_note; + } + } + muse_counter = (muse_counter + 1) % muse_tempo; + } else { + if (muse_counter) { + stop_all_notes(); + muse_counter = 0; + } + } +} +#endif + +bool music_mask_keymap(uint16_t keycode) { + switch (keycode) { + case _RAISE: + case _LOWER: + return false; + default: + return true; + } +} diff --git a/layouts/community/ortho_4x12/jjerrell/readme.md b/layouts/community/ortho_4x12/jjerrell/readme.md new file mode 100644 index 000000000000..ec947ea3539d --- /dev/null +++ b/layouts/community/ortho_4x12/jjerrell/readme.md @@ -0,0 +1,7 @@ +# JJerrell's Planck EZ Layout + +As with my other keymaps, this layout is a close adaptation of the Neo keyboard. Obvious differences are that the alpha keymap is Workman and if you're already used to the secondary layers of the Neo keymap, this might be very uncomfortable for you because of slight variations. + +The keymap has been setup to pretty much remove the center columns above the spacebar and limit use of the bottom row by supplying paths to removed functionality that are simpler to process mentally and require less finger acrobatics. + +My ownership of this keyboard could not have been easily predicted because my original justification of this hobby was health related. I found QMK through the Ergodox EZ and this keyboard is a result of that discovery -- I could not live without some QMK features. As you can see, my problem has come full circle... now I use this keyboard when I'm not at a desk and it's tiny. This is offset by eliminating use of the center columns, relying on a symbol layer almost exclusively, and relying on a navigation layer instead of getting by with the minimum on the alpha layers which became uncomfortable even with the thumbs doing the heavy lifting and mods being comfortably placed on the home row. diff --git a/layouts/community/ortho_4x12/jjerrell/rules.mk b/layouts/community/ortho_4x12/jjerrell/rules.mk new file mode 100644 index 000000000000..9b1b8e891520 --- /dev/null +++ b/layouts/community/ortho_4x12/jjerrell/rules.mk @@ -0,0 +1,8 @@ +SRC += muse.c + +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = no +EXTRAKEY_ENABLE = yes +TAP_DANCE_ENABLE = no +SPACE_CADET_ENABLE = no +NKRO_ENABLE = no diff --git a/layouts/community/ortho_4x12/juno/keymap.c b/layouts/community/ortho_4x12/juno/keymap.c index b3ef8fce536b..344759ed19a3 100644 --- a/layouts/community/ortho_4x12/juno/keymap.c +++ b/layouts/community/ortho_4x12/juno/keymap.c @@ -395,7 +395,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { return true; } -void dip_update(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: if (active) { @@ -420,6 +420,7 @@ void dip_update(uint8_t index, bool active) { #endif } } + return true; } void matrix_scan_user(void) { diff --git a/layouts/community/ortho_4x12/junonum/config.h b/layouts/community/ortho_4x12/junonum/config.h index 4b4d010a6a26..c16d74892dbb 100644 --- a/layouts/community/ortho_4x12/junonum/config.h +++ b/layouts/community/ortho_4x12/junonum/config.h @@ -34,4 +34,7 @@ #define ENCODER_RESOLUTION 4 // Reduce power consumption for iOS compatibility -#define USB_MAX_POWER_CONSUMPTION 100 \ No newline at end of file +#define USB_MAX_POWER_CONSUMPTION 100 + +// Short tap threshold +#define TAPPING_TERM 250 diff --git a/layouts/community/ortho_4x12/junonum/keymap.c b/layouts/community/ortho_4x12/junonum/keymap.c index 82ff4d63a7b3..0b0bdc36bbd9 100644 --- a/layouts/community/ortho_4x12/junonum/keymap.c +++ b/layouts/community/ortho_4x12/junonum/keymap.c @@ -67,7 +67,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_RAISE] = LAYOUT_ortho_4x12( KC_GRV, _______, _______, KC_LBRC, KC_RBRC, _______, _______, KC_7, KC_8, KC_9, KC_0, _______, _______, _______, _______, KC_LCBR, KC_RCBR, _______, _______, KC_4, KC_5, KC_6, KC_MINUS, KC_BSLS, - _______, _______, _______, _______, _______, _______, _______, KC_1, KC_2, KC_3, KC_EQUAL, _______, + _______, _______, _______, _______, _______, _______, _______, KC_1, KC_2, KC_3, KC_EQUAL, KC_ENT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MPLY ), @@ -86,8 +86,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_FN1] = LAYOUT_ortho_4x12( - KC_MENU, DP_ON, KC_PGDN, KC_UP, KC_PGUP, KC_INS, _______, KC_PGUP, KC_UP, KC_PGDN, KC_PSCR, _______, - KC_CAPS, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_HOME, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_DEL , + KC_APP, DP_ON, KC_PGDN, KC_UP, KC_PGUP, KC_INS, KC_CAPS, KC_PGUP, KC_UP, KC_PGDN, KC_PSCR, _______, + _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_HOME, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_DEL , _______, _______, _______, _______, _______, KC_END, KC_END, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, _______, DP_ON, _______, _______, _______ ), @@ -293,7 +293,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { return true; } -void dip_update(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: if (active) { @@ -318,6 +318,7 @@ void dip_update(uint8_t index, bool active) { #endif } } + return true; } void matrix_scan_user(void) { diff --git a/layouts/community/ortho_4x12/junonum/rules.mk b/layouts/community/ortho_4x12/junonum/rules.mk index 9f5d7e986252..72e6214d235a 100644 --- a/layouts/community/ortho_4x12/junonum/rules.mk +++ b/layouts/community/ortho_4x12/junonum/rules.mk @@ -17,4 +17,4 @@ EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -BOOTMAGIC_ENABLE = no # mainly to save space \ No newline at end of file +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite \ No newline at end of file diff --git a/layouts/community/ortho_4x12/manna-harbour_miryoku/config.h b/layouts/community/ortho_4x12/manna-harbour_miryoku/config.h index 772b510ef6f1..5d7ccd257f72 100644 --- a/layouts/community/ortho_4x12/manna-harbour_miryoku/config.h +++ b/layouts/community/ortho_4x12/manna-harbour_miryoku/config.h @@ -1,13 +1,17 @@ -// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*- +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . #pragma once #if defined MIRYOKU_MAPPING_SPLIT #define LAYOUT_miryoku(\ -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,\ -N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +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,\ +N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ )\ LAYOUT_ortho_4x12(\ KC_NO, K01, K02, K03, K04, KC_NO, KC_NO, K05, K06, K07, K08, KC_NO,\ @@ -15,17 +19,30 @@ K00, K11, K12, K13, K14, KC_NO, KC_NO, K15, K16, K17, K18, K09 K10, K21, K22, K23, K24, KC_NO, KC_NO, K25, K26, K27, K28, K19,\ K20, KC_NO, KC_NO, K32, K33, K34, K35, K36, K37, KC_NO, KC_NO, K29\ ) +#elif defined MIRYOKU_MAPPING_EXTENDED_THUMBS +#define LAYOUT_miryoku(\ +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,\ +N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +LAYOUT_ortho_4x12(\ +K00, K01, K02, K03, K04, KC_NO, KC_NO, K05, K06, K07, K08, K09,\ +K10, K11, K12, K13, K14, KC_NO, KC_NO, K15, K16, K17, K18, K19,\ +K20, K21, K22, K23, K24, KC_NO, KC_NO, K25, K26, K27, K28, K29,\ +KC_NO, KC_NO, KC_NO, K32, K33, K34, K35, K36, K37, KC_NO, KC_NO, KC_NO\ +) #else #define LAYOUT_miryoku(\ -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,\ -N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +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,\ +N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ )\ LAYOUT_ortho_4x12(\ K00, K01, K02, K03, K04, KC_NO, KC_NO, K05, K06, K07, K08, K09,\ K10, K11, K12, K13, K14, KC_NO, KC_NO, K15, K16, K17, K18, K19,\ K20, K21, K22, K23, K24, KC_NO, KC_NO, K25, K26, K27, K28, K29,\ -KC_NO, KC_NO, K32, K33, K34, K34, K35, K35, K36, K37, KC_NO, KC_NO\ +KC_NO, KC_NO, K32, K33, K34, KC_NO, KC_NO, K35, K36, K37, KC_NO, KC_NO\ ) #endif diff --git a/layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c b/layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c index a852ddd05cd4..7c5717a0fee0 100644 --- a/layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c +++ b/layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c @@ -1 +1,5 @@ -// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*- +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/layouts/community/ortho_4x12/mguterl/keymap.c b/layouts/community/ortho_4x12/mguterl/keymap.c index 66039b61e6c3..f18ae14d4ac0 100644 --- a/layouts/community/ortho_4x12/mguterl/keymap.c +++ b/layouts/community/ortho_4x12/mguterl/keymap.c @@ -290,7 +290,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) { return true; } -void dip_switch_update_user(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: { #ifdef AUDIO_ENABLE @@ -319,6 +319,7 @@ void dip_switch_update_user(uint8_t index, bool active) { muse_mode = false; } } + return true; } void matrix_scan_user(void) { diff --git a/layouts/community/ortho_5x12/brandonschlack/keymap.c b/layouts/community/ortho_5x12/brandonschlack/keymap.c index c9c94fc967d2..1b423157bc01 100644 --- a/layouts/community/ortho_5x12/brandonschlack/keymap.c +++ b/layouts/community/ortho_5x12/brandonschlack/keymap.c @@ -149,7 +149,7 @@ bool encoder_update_keymap(uint8_t index, bool clockwise) { return true; } -void dip_switch_update_user(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: { #ifdef AUDIO_ENABLE @@ -178,6 +178,7 @@ void dip_switch_update_user(uint8_t index, bool active) { muse_mode = false; } } + return true; } diff --git a/layouts/community/ortho_5x12/brandonschlack/rules.mk b/layouts/community/ortho_5x12/brandonschlack/rules.mk index dacfc28b2306..a727043b449f 100644 --- a/layouts/community/ortho_5x12/brandonschlack/rules.mk +++ b/layouts/community/ortho_5x12/brandonschlack/rules.mk @@ -6,5 +6,5 @@ MOUSEKEY_ENABLE = yes # Mouse keys(+4700) BACKLIGHT_ENABLE = no # No backlights installed ifeq ($(strip $(KEYBOARD)), jnao) - BOOTMAGIC_ENABLE = lite + BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite endif diff --git a/layouts/community/ortho_5x12/drashna/keymap.c b/layouts/community/ortho_5x12/drashna/keymap.c index f882ead171b1..ab70be2822cd 100644 --- a/layouts/community/ortho_5x12/drashna/keymap.c +++ b/layouts/community/ortho_5x12/drashna/keymap.c @@ -38,34 +38,32 @@ KC_NO, OS_LCTL, OS_LALT, OS_LGUI, SP_LWER, BK_LWER, DL_RAIS, ET_RAIS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ ) -#define LAYOUT_ortho_5x12_base_wrapper(...) LAYOUT_ortho_5x12_base(__VA_ARGS__) +#define LAYOUT_base_wrapper(...) LAYOUT_ortho_5x12_base(__VA_ARGS__) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_DEFAULT_LAYER_1] = LAYOUT_base_wrapper( + _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, + _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, + _________________QWERTY_L3_________________, _________________QWERTY_R3_________________ + ), -[_QWERTY] = LAYOUT_ortho_5x12_base_wrapper( - _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, - _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, - _________________QWERTY_L3_________________, _________________QWERTY_R3_________________ -), - -[_COLEMAK] = LAYOUT_ortho_5x12_base_wrapper( - _________________COLEMAK_L1________________, _________________COLEMAK_R1________________, - _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, - _________________COLEMAK_L3________________, _________________COLEMAK_R3________________ -), + [_DEFAULT_LAYER_2] = LAYOUT_base_wrapper( + ______________COLEMAK_MOD_DH_L1____________, ______________COLEMAK_MOD_DH_R1____________, + ______________COLEMAK_MOD_DH_L2____________, ______________COLEMAK_MOD_DH_R2____________, + ______________COLEMAK_MOD_DH_L3____________, ______________COLEMAK_MOD_DH_R3____________ + ), + [_DEFAULT_LAYER_3] = LAYOUT_base_wrapper( + _________________COLEMAK_L1________________, _________________COLEMAK_R1________________, + _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, + _________________COLEMAK_L3________________, _________________COLEMAK_R3________________ + ), -[_DVORAK] = LAYOUT_ortho_5x12_base_wrapper( - _________________DVORAK_L1_________________, _________________DVORAK_R1_________________, - _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, - _________________DVORAK_L3_________________, _________________DVORAK_R3_________________ -), - -[_WORKMAN] = LAYOUT_ortho_5x12_base_wrapper( - _________________WORKMAN_L1________________, _________________WORKMAN_R1________________, - _________________WORKMAN_L2________________, _________________WORKMAN_R2________________, - _________________WORKMAN_L3________________, _________________WORKMAN_R3________________ -), + [_DEFAULT_LAYER_4] = LAYOUT_base_wrapper( + _________________DVORAK_L1_________________, _________________DVORAK_R1_________________, + _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, + _________________DVORAK_L3_________________, _________________DVORAK_R3_________________ + ), /* Lower * ,-----------------------------------------------------------------------------------. @@ -126,7 +124,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_MAKE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_RST, VRSN, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, EEP_RST, _______, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, RGB_IDL, - _______, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, TG_MODS, + KEYLOCK, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, TG_MODS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) }; diff --git a/layouts/community/ortho_5x12/drashna/rules.mk b/layouts/community/ortho_5x12/drashna/rules.mk index af68e04c0133..69a025cc03bc 100644 --- a/layouts/community/ortho_5x12/drashna/rules.mk +++ b/layouts/community/ortho_5x12/drashna/rules.mk @@ -1,4 +1,4 @@ -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) @@ -12,7 +12,6 @@ ifeq ($(strip $(KEYBOARD)), fractal) AUDIO_SUPPORTED = yes RGBLIGHT_SUPPORTED = yes RGBLIGHT_ENABLE = yes - RGBLIGHT_TWINKLE = yes RGBLIGHT_STARTUP_ANIMATION = yes BOOTLOADER = qmk-dfu endif diff --git a/layouts/community/ortho_5x12/manna-harbour_miryoku/config.h b/layouts/community/ortho_5x12/manna-harbour_miryoku/config.h new file mode 100644 index 000000000000..927567fe4bec --- /dev/null +++ b/layouts/community/ortho_5x12/manna-harbour_miryoku/config.h @@ -0,0 +1,51 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . + +#pragma once + +#if defined MIRYOKU_MAPPING_SPLIT +#define LAYOUT_miryoku(\ +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,\ +N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +LAYOUT_ortho_5x12(\ +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, K01, K02, K03, K04, KC_NO, KC_NO, K05, K06, K07, K08, KC_NO,\ +K00, K11, K12, K13, K14, KC_NO, KC_NO, K15, K16, K17, K18, K09,\ +K10, K21, K22, K23, K24, KC_NO, KC_NO, K25, K26, K27, K28, K19,\ +K20, KC_NO, KC_NO, K32, K33, K34, K35, K36, K37, KC_NO, KC_NO, K29\ +) +#elif defined MIRYOKU_MAPPING_EXTENDED_THUMBS +#define LAYOUT_miryoku(\ +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,\ +N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +LAYOUT_ortho_5x12(\ +KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,\ +K00, K01, K02, K03, K04, KC_NO, KC_NO, K05, K06, K07, K08, K09,\ +K10, K11, K12, K13, K14, KC_NO, KC_NO, K15, K16, K17, K18, K19,\ +K20, K21, K22, K23, K24, KC_NO, KC_NO, K25, K26, K27, K28, K29,\ +KC_NO, KC_NO, KC_NO, K32, K33, K34, K35, K36, K37, KC_NO, KC_NO, KC_NO\ +) +#else +#define LAYOUT_miryoku(\ +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,\ +N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +LAYOUT_ortho_5x12(\ +KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,\ +K00, K01, K02, K03, K04, KC_NO, KC_NO, K05, K06, K07, K08, K09,\ +K10, K11, K12, K13, K14, KC_NO, KC_NO, K15, K16, K17, K18, K19,\ +K20, K21, K22, K23, K24, KC_NO, KC_NO, K25, K26, K27, K28, K29,\ +KC_NO, KC_NO, K32, K33, K34, KC_NO, KC_NO, K35, K36, K37, KC_NO, KC_NO\ +) +#endif diff --git a/layouts/community/ortho_5x12/manna-harbour_miryoku/keymap.c b/layouts/community/ortho_5x12/manna-harbour_miryoku/keymap.c new file mode 100644 index 000000000000..7c5717a0fee0 --- /dev/null +++ b/layouts/community/ortho_5x12/manna-harbour_miryoku/keymap.c @@ -0,0 +1,5 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/layouts/community/ortho_5x12/riblee/keymap.c b/layouts/community/ortho_5x12/riblee/keymap.c index eb5f1af80712..b72248375981 100644 --- a/layouts/community/ortho_5x12/riblee/keymap.c +++ b/layouts/community/ortho_5x12/riblee/keymap.c @@ -84,17 +84,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+-------------+------+------+------+------+------| * | Esc | A | R | S | T | D | H | N | E | I | O | " | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | + * | Shift| Z | X | C | V | B | K | M | , | . | Up |Enter | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | / | Left | Down |Right | * `-----------------------------------------------------------------------------------' */ [_COLEMAK] = LAYOUT_ortho_5x12( KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL, KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, - BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_UP, KC_ENT, + BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT ), /* Dvorak @@ -118,6 +118,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT ), +/* Workman + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | D | R | W | B | J | F | U | P | ; | Del | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Esc | A | S | H | T | G | Y | N | E | O | I | ' | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Shift| Z | X | M | C | V | K | L | , | . | Up |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | / | Left | Down |Right | + * `-----------------------------------------------------------------------------------' + */ +[_WORKMAN] = LAYOUT_ortho_5x12( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_DEL, + KC_ESC, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, KC_DOT, KC_UP, KC_ENT, + BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT +), + /* Lower * ,-----------------------------------------------------------------------------------. * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | @@ -126,7 +147,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+-------------+------+------+------+------+------| * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | F7 | F8 | F9 | F10 | F11 | F12 | | Home | End | MS_U | BTN2 | + * | | F7 | F8 | F9 | F10 | F11 | F12 | Ins | Home | End | MS_U | BTN2 | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | BTN1 | BTN2 | | BTN1 | MS_L | MS_D | MS_R | * `-----------------------------------------------------------------------------------' @@ -135,7 +156,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LBRC, KC_RBRC, KC_DEL, KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, - _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_HOME, KC_END, KC_MS_U, KC_BTN2, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_HOME, KC_END, KC_MS_U, KC_BTN2, _______, _______, _______, _______, _______, KC_BTN1, KC_BTN2, _______, KC_BTN1, KC_MS_L, KC_MS_D, KC_MS_R ), @@ -164,21 +185,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,-----------------------------------------------------------------------------------. * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | |Reset |Debug | | | | | | | | | Del | + * | |Reset |Debug | | | | | | | Ins |Prt sc| Del | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | | |Mu mod|Aud on|AudOff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| HUN | | + * | | |Mu mod|Aud on|AudOff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| HUN |Wrkmn | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | | | | | | NKRO | Swap |Un swp|UC Mod| | | + * | | | | | | | NKRO | Mac |Linux | | | | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | | | | | * `-----------------------------------------------------------------------------------' */ [_ADJUST] = LAYOUT_ortho_5x12( - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, - _______, RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL, - _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, HUNGARIAN, _______, - _______, _______, _______, _______, _______, _______, NK_TOGG, LCG_SWP, LCG_NRM, UC_MOD, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + _______, RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF, KC_INS, KC_PSCR, KC_DEL, + _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, HUNGARIAN, WORKMAN, + _______, _______, _______, _______, _______, _______, NK_TOGG, CG_NORM, CG_SWAP, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) }; \ No newline at end of file diff --git a/layouts/community/ortho_5x12/xyverz/rules.mk b/layouts/community/ortho_5x12/xyverz/rules.mk index c777483254e3..94b076ecef3e 100644 --- a/layouts/community/ortho_5x12/xyverz/rules.mk +++ b/layouts/community/ortho_5x12/xyverz/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/layouts/community/ortho_5x15/manna-harbour_miryoku/config.h b/layouts/community/ortho_5x15/manna-harbour_miryoku/config.h new file mode 100644 index 000000000000..42e03851699c --- /dev/null +++ b/layouts/community/ortho_5x15/manna-harbour_miryoku/config.h @@ -0,0 +1,39 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . + +#pragma once + +#define XXX KC_NO + +#if defined MIRYOKU_MAPPING_EXTENDED_THUMBS +#define LAYOUT_miryoku(\ +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,\ +N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +LAYOUT_ortho_5x15(\ +XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,\ +K00, K01, K02, K03, K04, XXX, XXX, XXX, XXX, XXX, K05, K06, K07, K08, K09,\ +K10, K11, K12, K13, K14, XXX, XXX, XXX, XXX, XXX, K15, K16, K17, K18, K19,\ +K20, K21, K22, K23, K24, XXX, XXX, XXX, XXX, XXX, K25, K26, K27, K28, K29,\ +XXX, XXX, XXX, K32, K33, K34, XXX, XXX, XXX, K35, K36, K37, XXX, XXX, XXX\ +) +#else +#define LAYOUT_miryoku(\ +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,\ +N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +LAYOUT_ortho_5x15(\ +XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,\ +K00, K01, K02, K03, K04, XXX, XXX, XXX, XXX, XXX, K05, K06, K07, K08, K09,\ +K10, K11, K12, K13, K14, XXX, XXX, XXX, XXX, XXX, K15, K16, K17, K18, K19,\ +K20, K21, K22, K23, K24, XXX, XXX, XXX, XXX, XXX, K25, K26, K27, K28, K29,\ +XXX, XXX, K32, K33, K34, XXX, XXX, XXX, XXX, XXX, K35, K36, K37, XXX, XXX\ +) +#endif diff --git a/layouts/community/ortho_5x15/manna-harbour_miryoku/keymap.c b/layouts/community/ortho_5x15/manna-harbour_miryoku/keymap.c new file mode 100644 index 000000000000..7c5717a0fee0 --- /dev/null +++ b/layouts/community/ortho_5x15/manna-harbour_miryoku/keymap.c @@ -0,0 +1,5 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/layouts/community/ortho_5x5/layout.json b/layouts/community/ortho_5x5/layout.json index ab4eef8e1bc1..71f77df6edfa 100644 --- a/layouts/community/ortho_5x5/layout.json +++ b/layouts/community/ortho_5x5/layout.json @@ -1 +1,5 @@ -["","","","",""],["","","","",""],["","","","",""],["","","","",""],["","","","",""] +["","","","",""], +["","","","",""], +["","","","",""], +["","","","",""], +["","","","",""] diff --git a/layouts/community/planck_mit/manna-harbour_miryoku/config.h b/layouts/community/planck_mit/manna-harbour_miryoku/config.h new file mode 100644 index 000000000000..df24fbba0f80 --- /dev/null +++ b/layouts/community/planck_mit/manna-harbour_miryoku/config.h @@ -0,0 +1,20 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . + +#pragma once + +#define LAYOUT_miryoku(\ +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,\ +N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +LAYOUT_planck_mit(\ +K00, K01, K02, K03, K04, KC_NO, KC_NO, K05, K06, K07, K08, K09,\ +K10, K11, K12, K13, K14, KC_NO, KC_NO, K15, K16, K17, K18, K19,\ +K20, K21, K22, K23, K24, KC_NO, KC_NO, K25, K26, K27, K28, K29,\ +KC_NO, KC_NO, K32, K33, K34, KC_NO, K35, K36, K37, KC_NO, KC_NO\ +) diff --git a/layouts/community/planck_mit/manna-harbour_miryoku/keymap.c b/layouts/community/planck_mit/manna-harbour_miryoku/keymap.c new file mode 100644 index 000000000000..7c5717a0fee0 --- /dev/null +++ b/layouts/community/planck_mit/manna-harbour_miryoku/keymap.c @@ -0,0 +1,5 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/layouts/community/split_3x5_3/manna-harbour_miryoku/config.h b/layouts/community/split_3x5_3/manna-harbour_miryoku/config.h new file mode 100644 index 000000000000..b34f6ad18d03 --- /dev/null +++ b/layouts/community/split_3x5_3/manna-harbour_miryoku/config.h @@ -0,0 +1,20 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . + +#pragma once + +#define LAYOUT_miryoku(\ +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,\ +N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +LAYOUT_split_3x5_3(\ +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,\ + K32, K33, K34, K35, K36, K37\ +) diff --git a/layouts/community/split_3x5_3/manna-harbour_miryoku/keymap.c b/layouts/community/split_3x5_3/manna-harbour_miryoku/keymap.c new file mode 100644 index 000000000000..7c5717a0fee0 --- /dev/null +++ b/layouts/community/split_3x5_3/manna-harbour_miryoku/keymap.c @@ -0,0 +1,5 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/layouts/community/split_3x6_3/bcat/keymap.c b/layouts/community/split_3x6_3/bcat/keymap.c index 934a8e31f2d7..4f68c8f84315 100644 --- a/layouts/community/split_3x6_3/bcat/keymap.c +++ b/layouts/community/split_3x6_3/bcat/keymap.c @@ -34,6 +34,7 @@ enum layer { #define KY_ZMRST LCTL(KC_0) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off /* Default layer: http://www.keyboard-layout-editor.com/#/gists/08d9827d916662a9414f48805aa895a5 */ [LAYER_DEFAULT] = LAYOUT_split_3x6_3( KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, @@ -41,7 +42,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_LCTL, LY_LWR, KC_SPC, KC_ENT, LY_RSE, KC_RALT ), - /* Lower layer: http://www.keyboard-layout-editor.com/#/gists/c3fba5eaa2cd70fdfbdbc0f9e34d3bc0 */ [LAYER_LOWER] = LAYOUT_split_3x6_3( MC_ALTT, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, @@ -49,7 +49,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, KC_APP, KC_PSCR, KC_SLCK, KC_PAUS, KC_LGUI, KC_BSLS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_GRV, _______, _______, _______, _______, _______, _______ ), - /* Raise layer: http://www.keyboard-layout-editor.com/#/gists/08b44355d4ca85d294bad9e2821f91d7 */ [LAYER_RAISE] = LAYOUT_split_3x6_3( KC_CAPS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, @@ -57,7 +56,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_F12, KC_INS, _______, _______, _______, _______, _______, _______ ), - /* Adjust layer: http://www.keyboard-layout-editor.com/#/gists/77e7572e077b36a23eb2086017e16fee */ [LAYER_ADJUST] = LAYOUT_split_3x6_3( _______, NK_TOGG, KC_MPLY, KC_VOLU, KC_MSTP, _______, EEP_RST, RESET, _______, _______, _______, _______, @@ -65,8 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, KC_MUTE, _______, _______, RGB_HUI, RGB_SAD, RGB_SAI, RGB_HUD, RGB_SPD, _______, _______, _______, _______, RGB_TOG, _______, _______ ), + // clang-format on }; -layer_state_t layer_state_set_keymap(layer_state_t state) { - return update_tri_layer_state(state, LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST); -} +layer_state_t layer_state_set_keymap(layer_state_t state) { return update_tri_layer_state(state, LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST); } diff --git a/layouts/community/split_3x6_3/bcat/readme.md b/layouts/community/split_3x6_3/bcat/readme.md index ed17b84186a1..c4bf891c40a5 100644 --- a/layouts/community/split_3x6_3/bcat/readme.md +++ b/layouts/community/split_3x6_3/bcat/readme.md @@ -1,5 +1,10 @@ # bcat's split 3x6 + 3 thumb keys layout +(See also the +[BlueMicro](https://github.com/jpconstantineau/BlueMicro_BLE/tree/master/firmware/keyboards/crkbd/keymaps/bcat) +and [ZMK](https://github.com/bcat/zmk-config/blob/master/config/corne.keymap) +versions of this keymap.) + This is my favorite split ergo layout for typing, featuring the traditional four ortho/ergo layers (Default, Lower, Raise, Adjust). It is loosely inspired by the default Planck (numbers on Lower, symbols on Raise) and Crkbd (Space on diff --git a/layouts/community/split_3x6_3/drashna/config.h b/layouts/community/split_3x6_3/drashna/config.h index dd950ce7bc02..b86448c67188 100644 --- a/layouts/community/split_3x6_3/drashna/config.h +++ b/layouts/community/split_3x6_3/drashna/config.h @@ -31,11 +31,11 @@ #ifdef RGBLIGHT_ENABLE # undef RGBLED_NUM -# define RGBLED_NUM 27 +# define RGBLED_NUM 27 -# define RGBLIGHT_HUE_STEP 8 -# define RGBLIGHT_SAT_STEP 8 -# define RGBLIGHT_VAL_STEP 5 +# define RGBLIGHT_HUE_STEP 8 +# define RGBLIGHT_SAT_STEP 8 +# define RGBLIGHT_VAL_STEP 5 # define RGBLIGHT_LIMIT_VAL 120 #endif @@ -44,37 +44,38 @@ # undef RGB_DI_PIN # define RGB_DI_PIN A3 # endif -# define RGB_MATRIX_KEYPRESSES // reacts to keypresses +# define RGB_MATRIX_KEYPRESSES // reacts to keypresses // # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses) // # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended // # define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness) // # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness) -# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255 -# define RGB_MATRIX_HUE_STEP 8 -# define RGB_MATRIX_SAT_STEP 8 -# define RGB_MATRIX_VAL_STEP 5 -# define RGB_MATRIX_SPD_STEP 10 +# ifndef RGB_MATRIX_MAXIMUM_BRIGHTNESS +# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255 +# endif +# define RGB_MATRIX_HUE_STEP 8 +# define RGB_MATRIX_SAT_STEP 8 +# define RGB_MATRIX_VAL_STEP 5 +# define RGB_MATRIX_SPD_STEP 10 #endif #ifdef CONVERT_TO_PROTON_C -# 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. +# 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. # undef SOFT_SERIAL_PIN -# define SOFT_SERIAL_PIN D3 -# 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 SOFT_SERIAL_PIN D3 +# 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 INIT_EE_HANDS_LEFT // #define INIT_EE_HANDS_RIGHT #endif - #if defined(AUDIO_ENABLE) && !defined(CONVERT_TO_PROTON_C) # define AUDIO_PIN B6 # define NO_MUSIC_MODE diff --git a/layouts/community/split_3x6_3/drashna/keymap.c b/layouts/community/split_3x6_3/drashna/keymap.c index 5a2d2f2e2703..7c31972e3f8e 100644 --- a/layouts/community/split_3x6_3/drashna/keymap.c +++ b/layouts/community/split_3x6_3/drashna/keymap.c @@ -26,6 +26,12 @@ enum crkbd_keycodes { RGBRST = NEW_SAFE_RANGE }; * of use. K## is a placeholder to pass through the individual keycodes */ +#ifdef CONVERT_TO_PROTON_C +# define MID_TMB ET_RAIS +#else +# define MID_TMB KC_ENT +#endif + // clang-format off #define LAYOUT_split_3x6_3_wrapper(...) LAYOUT_split_3x6_3(__VA_ARGS__) #define LAYOUT_split_3x6_3_base( \ @@ -37,58 +43,34 @@ enum crkbd_keycodes { RGBRST = NEW_SAFE_RANGE }; KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_MINS, \ ALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(K1B), \ OS_LSFT, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \ - RGB_MOD, KC_SPC, BK_LWER, DL_RAIS, KC_ENT, OS_RGUI \ + OS_LGUI, KC_SPC, BK_LWER, DL_RAIS, MID_TMB, OS_RGUI \ ) -#define LAYOUT_split_3x6_3_base_wrapper(...) LAYOUT_split_3x6_3_base(__VA_ARGS__) +#define LAYOUT_base_wrapper(...) LAYOUT_split_3x6_3_base(__VA_ARGS__) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT_split_3x6_3_base_wrapper( - _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, - _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, - _________________QWERTY_L3_________________, _________________QWERTY_R3_________________ - ), - - [_COLEMAK] = LAYOUT_split_3x6_3_base_wrapper( - _________________COLEMAK_L1________________, _________________COLEMAK_R1________________, - _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, - _________________COLEMAK_L3________________, _________________COLEMAK_R3________________ - ), - - [_DVORAK] = LAYOUT_split_3x6_3_base_wrapper( - _________________DVORAK_L1_________________, _________________DVORAK_R1_________________, - _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, - _________________DVORAK_L3_________________, _________________DVORAK_R3_________________ - ), - - [_WORKMAN] = LAYOUT_split_3x6_3_base_wrapper( - _________________WORKMAN_L1________________, _________________WORKMAN_R1________________, - _________________WORKMAN_L2________________, _________________WORKMAN_R2________________, - _________________WORKMAN_L3________________, _________________WORKMAN_R3________________ - ), + [_DEFAULT_LAYER_1] = LAYOUT_base_wrapper( + _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, + _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, + _________________QWERTY_L3_________________, _________________QWERTY_R3_________________ + ), - [_NORMAN] = LAYOUT_split_3x6_3_base_wrapper( - _________________NORMAN_L1_________________, _________________NORMAN_L1_________________, - _________________NORMAN_L2_________________, _________________NORMAN_R2_________________, - _________________NORMAN_L3_________________, _________________NORMAN_R3_________________ - ), - - [_MALTRON] = LAYOUT_split_3x6_3_base_wrapper( - _________________MALTRON_L1________________, _________________MALTRON_R1________________, - _________________MALTRON_L2________________, _________________MALTRON_R2________________, - _________________MALTRON_L3________________, _________________MALTRON_R3________________ - ), + [_DEFAULT_LAYER_2] = LAYOUT_base_wrapper( + ______________COLEMAK_MOD_DH_L1____________, ______________COLEMAK_MOD_DH_R1____________, + ______________COLEMAK_MOD_DH_L2____________, ______________COLEMAK_MOD_DH_R2____________, + ______________COLEMAK_MOD_DH_L3____________, ______________COLEMAK_MOD_DH_R3____________ + ), - [_EUCALYN] = LAYOUT_split_3x6_3_base_wrapper( - _________________EUCALYN_L1________________, _________________EUCALYN_R1________________, - _________________EUCALYN_L2________________, _________________EUCALYN_R2________________, - _________________EUCALYN_L3________________, _________________EUCALYN_R3________________ - ), + [_DEFAULT_LAYER_3] = LAYOUT_base_wrapper( + _________________COLEMAK_L1________________, _________________COLEMAK_R1________________, + _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, + _________________COLEMAK_L3________________, _________________COLEMAK_R3________________ + ), - [_CARPLAX] = LAYOUT_split_3x6_3_base_wrapper( - _____________CARPLAX_QFMLWY_L1_____________, _____________CARPLAX_QFMLWY_R1_____________, - _____________CARPLAX_QFMLWY_L2_____________, _____________CARPLAX_QFMLWY_R2_____________, - _____________CARPLAX_QFMLWY_L3_____________, _____________CARPLAX_QFMLWY_R3_____________ - ), + [_DEFAULT_LAYER_4] = LAYOUT_base_wrapper( + _________________DVORAK_L1_________________, _________________DVORAK_R1_________________, + _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, + _________________DVORAK_L3_________________, _________________DVORAK_R3_________________ + ), [_LOWER] = LAYOUT_split_3x6_3_wrapper( KC_F11, _________________LOWER_L1__________________, _________________LOWER_R1__________________, KC_F11, @@ -107,16 +89,151 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_ADJUST] = LAYOUT_split_3x6_3_wrapper( \ KC_MAKE, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, KC_RESET, VRSN, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, EEP_RST, - MG_NKRO, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, RGB_IDL, + KEYLOCK, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, RGB_IDL, HPT_TOG, KC_NUKE, _______, _______, TG_MODS, HPT_FBK ) }; // clang-format on -#ifdef OLED_DRIVER_ENABLE -oled_rotation_t oled_init_user(oled_rotation_t rotation) { - return OLED_ROTATION_270; +#ifdef OLED_ENABLE +oled_rotation_t oled_init_keymap(oled_rotation_t rotation) { return OLED_ROTATION_270; } + +# ifdef CONVERT_TO_PROTON_C +// WPM-responsive animation stuff here +# define SLEEP_FRAMES 2 +# define SLEEP_SPEED 10 // below this wpm value your animation will idle + +# define WAKE_FRAMES 2 // uncomment if >1 + +# define KAKI_FRAMES 3 +# define KAKI_SPEED 40 // above this wpm value typing animation to triggere + +# define RTOGI_FRAMES 2 +//#define LTOGI_FRAMES 2 + +//#define ANIM_FRAME_DURATION 500 // how long each frame lasts in ms +// #define SLEEP_TIMER 60000 // should sleep after this period of 0 wpm, needs fixing +# define ANIM_SIZE 512 // number of bytes in array, minimize for adequate firmware size, max is 1024 + +uint32_t anim_timer = 0; +uint32_t anim_frame_duration = 500; +uint8_t current_sleep_frame = 0; +uint8_t current_wake_frame = 0; // uncomment if WAKE_FRAMES >1 +uint8_t current_kaki_frame = 0; +uint8_t current_rtogi_frame = 0; +// uint8_t current_ltogi_frame = 0; +// clang-format off +void render_kitty(void) { + // Images credit j-inc(/James Incandenza) and pixelbenny. Credit to obosob for initial animation approach. + static const char PROGMEM sleep[SLEEP_FRAMES][ANIM_SIZE] = {{ + // 'sleep1', 32x32px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0xa8, 0x48, 0xa8, 0x18, 0x08, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x80, 0x44, 0x84, 0x06, 0x05, 0x04, 0x80, 0x40, 0x20, 0x10, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0x18, 0x04, 0x04, 0x02, 0x7a, 0x86, 0x01, 0x80, 0x80, 0x01, 0x03, 0x05, 0x07, 0x01, 0x00, 0x00, 0x80, 0x83, 0x45, 0xfa, 0x3c, 0xe0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x33, 0x24, 0x28, 0x28, 0x29, 0x29, 0x29, 0x3a, 0x18, 0x1c, 0x39, 0x24, 0x24, 0x3a, 0x2d, 0x26, 0x31, 0x1f, 0x00, + }, + {// 'sleep2', 32x32px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x22, 0x3a, 0x2a, 0x26, 0x22, 0x80, 0xc0, 0x80, 0x00, 0x24, 0x34, 0x2c, 0xe4, 0x60, 0x10, 0x70, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x38, 0x04, 0x02, 0x02, 0x01, 0x79, 0x87, 0x01, 0x80, 0x81, 0x83, 0x05, 0x05, 0x03, 0x01, 0x00, 0x00, 0x80, 0x43, 0x05, 0xfa, 0x3c, 0xe0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x33, 0x24, 0x28, 0x28, 0x28, 0x29, 0x29, 0x3a, 0x18, 0x1c, 0x39, 0x24, 0x24, 0x3a, 0x2d, 0x26, 0x31, 0x1f, 0x00 + }}; + static const char PROGMEM wake[WAKE_FRAMES][ANIM_SIZE] = {{ + // 'mati2', 32x32px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x08, 0x10, 0x60, 0x80, 0x00, 0x80, 0x60, 0x10, 0x08, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x40, 0x40, 0x5c, 0x00, 0x01, 0x41, 0x01, 0x00, 0x5c, 0x40, 0x40, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x80, 0xe1, 0x12, 0x0a, 0x06, 0x00, 0x80, 0x00, 0x06, 0x0a, 0x12, 0xe1, 0x80, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1f, 0x14, 0x14, 0x10, 0x10, 0x11, 0x1f, 0x10, 0x10, 0x18, 0x0f, 0x18, 0x10, 0x10, 0x1f, 0x11, 0x10, 0x10, 0x14, 0x14, 0x1f, 0x1c, 0x14, 0x14, 0x14, 0x08 + }, + {// 'mati3', 32x32px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x08, 0x10, 0x60, 0x80, 0x00, 0x80, 0x60, 0x10, 0x08, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x90, 0x12, 0x0a, 0x02, 0xf4, 0x09, 0x0d, 0xf1, 0x04, 0x02, 0x0a, 0x12, 0x90, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x80, 0xe1, 0x12, 0x0a, 0x06, 0x01, 0x81, 0x00, 0x06, 0x0a, 0x12, 0xe1, 0x80, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1f, 0x14, 0x14, 0x10, 0x10, 0x11, 0x1f, 0x10, 0x10, 0x18, 0x0f, 0x18, 0x10, 0x10, 0x1f, 0x11, 0x10, 0x10, 0x14, 0x14, 0x1f, 0x1c, 0x14, 0x14, 0x14, 0x08 + }}; + static const char PROGMEM kaki[KAKI_FRAMES][ANIM_SIZE] = {{ + // 'jare2', 32x32px + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x40, 0x80, 0x80, 0x80, 0x00, 0xfc, 0x84, 0x08, 0x08, 0x10, 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, 0x60, 0x80, 0x00, 0x00, 0x91, 0xa1, 0x80, 0x00, 0x00, 0x22, 0x84, 0x40, 0x50, 0x48, 0xc1, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x41, 0x82, 0xe2, 0x12, 0x0a, 0x06, 0x00, 0x80, 0x88, 0x4f, 0x02, 0x22, 0xe2, 0x9f, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1f, 0x14, 0x14, 0x10, 0x10, 0x11, 0x1f, 0x10, 0x10, 0x18, 0x0f, 0x18, 0x14, 0x10, 0x10, 0x10, 0x10, 0x10, 0x14, 0x14, 0x1f, 0x1a, 0x0a, 0x0a, 0x04, 0x00 + }, + { + // 'kaki1', 32x32px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x1a, 0x22, 0xc2, 0x04, 0x04, 0x04, 0x07, 0x00, 0xc0, 0x20, 0x10, 0x80, 0x80, 0x01, 0x01, 0x02, 0xfc, 0xfe, 0x02, 0x3c, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0d, 0x8d, 0x55, 0x50, 0x94, 0xf0, 0x10, 0x09, 0x08, 0x00, 0x80, 0x00, 0x06, 0x09, 0x1b, 0xee, 0x00, 0x00, 0x00, 0x00, 0x81, 0xfe, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1f, 0x14, 0x14, 0x10, 0x10, 0x11, 0x1f, 0x10, 0x10, 0x18, 0x0f, 0x18, 0x10, 0x10, 0x1f, 0x19, 0x18, 0x1c, 0x14, 0x16, 0x15, 0x14, 0x14, 0x14, 0x14, 0x08 + }, + {// 'kaki2', 32x32px + 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x01, 0x02, 0x04, 0x04, 0x03, 0x80, 0x40, 0x40, 0x20, 0x00, 0x01, 0x02, 0x8c, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0d, 0x8d, 0x55, 0x50, 0x94, 0xf0, 0x10, 0x0a, 0x0e, 0x1d, 0x95, 0x24, 0x24, 0x27, 0x13, 0xe1, 0x01, 0x01, 0x01, 0x01, 0x02, 0xfc, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1f, 0x14, 0x14, 0x10, 0x10, 0x11, 0x1f, 0x10, 0x10, 0x18, 0x0f, 0x18, 0x10, 0x10, 0x1f, 0x19, 0x18, 0x1c, 0x14, 0x14, 0x17, 0x14, 0x14, 0x14, 0x14, 0x08, + }}; + static const char PROGMEM rtogi[KAKI_FRAMES][ANIM_SIZE] = {{ + // 'rtogi1', 32x32px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0x10, 0x10, 0x08, 0x04, 0x02, 0x01, 0x0f, 0x90, 0x10, 0x20, 0xf0, 0xf8, 0xf8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x48, 0x47, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x88, 0xc7, 0xc4, 0x62, 0x23, 0x11, 0x3f, + 0x80, 0x40, 0x20, 0x10, 0x88, 0xcc, 0x43, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xc0, 0x80, 0x80, 0xc0, 0xe1, 0xfe, 0xb8, 0x88, 0x0c, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x06, 0x04, 0x04, 0x04, 0x04, 0x05, 0x04, 0x04, 0x04, 0x07, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }, + {// 'rtogi2', 32x32px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0x10, 0x10, 0x08, 0x04, 0x02, 0x01, 0x1f, 0xa0, 0x20, 0x40, 0x80, 0x00, 0xf0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x48, 0x47, 0x88, 0x00, 0x00, 0x00, 0x00, 0x24, 0x24, 0x28, 0x6b, 0x40, 0xa0, 0x99, 0x86, 0xff, + 0x0f, 0x11, 0x22, 0x44, 0x48, 0x4c, 0x43, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xc0, 0x80, 0x80, 0xc0, 0xe1, 0xfe, 0xb8, 0x88, 0x0c, 0x04, 0x06, 0x06, 0x06, 0x0e, 0x0e, 0x06, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x06, 0x04, 0x04, 0x04, 0x04, 0x05, 0x04, 0x04, 0x04, 0x07, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }}; + + // assumes 1 frame prep stage + extern bool swap_hands; + void animation_phase(void) { + if (swap_hands) { + anim_frame_duration = 300; + current_rtogi_frame = (current_rtogi_frame + 1) % RTOGI_FRAMES; + oled_write_raw_P(rtogi[abs((RTOGI_FRAMES - 1) - current_rtogi_frame)], ANIM_SIZE); + } else { + if (get_current_wpm() <= SLEEP_SPEED) { + anim_frame_duration = 500; + current_sleep_frame = (current_sleep_frame + 1) % SLEEP_FRAMES; + oled_write_raw_P(sleep[abs((SLEEP_FRAMES - 1) - current_sleep_frame)], ANIM_SIZE); + } + // if(get_current_wpm() >IDLE_SPEED && get_current_wpm() SLEEP_SPEED) { + anim_frame_duration = 800; + current_wake_frame = (current_wake_frame + 1) % WAKE_FRAMES; + oled_write_raw_P(wake[abs((WAKE_FRAMES - 1) - current_wake_frame)], ANIM_SIZE); + // oled_write_raw_P(wake[0], ANIM_SIZE); // remove if IDLE_FRAMES >1 + } + if (get_current_wpm() >= KAKI_SPEED) { + anim_frame_duration = 500; + current_kaki_frame = (current_kaki_frame + 1) % KAKI_FRAMES; + oled_write_raw_P(kaki[abs((KAKI_FRAMES - 1) - current_kaki_frame)], ANIM_SIZE); + } + } + } + if (get_current_wpm() != 000) { + // if(timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { + if (timer_elapsed32(anim_timer) > anim_frame_duration) { + anim_timer = timer_read32(); + animation_phase(); + } + } else { + // if(timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { + if (timer_elapsed32(anim_timer) > anim_frame_duration) { + anim_timer = timer_read32(); + animation_phase(); + } + } +} + +void oled_driver_render_logo_right(void) { + render_kitty(); + + oled_set_cursor(0, 4); + render_default_layer_state(); } +# endif #endif #ifdef TAPPING_TERM_PER_KEY @@ -130,43 +247,20 @@ uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { } #endif - -void matrix_slave_scan_user(void) { -#ifdef RGB_MATRIX_ENABLE - rgb_matrix_task(); -#endif -} - #ifdef RGB_MATRIX_ENABLE -void suspend_power_down_keymap(void) { rgb_matrix_set_suspend_state(true); } - -void suspend_wakeup_init_keymap(void) { rgb_matrix_set_suspend_state(false); } - void check_default_layer(uint8_t mode, uint8_t type, uint8_t led_min, uint8_t led_max) { switch (get_highest_layer(default_layer_state)) { case _QWERTY: - rgb_matrix_layer_helper(HSV_CYAN, mode, rgb_matrix_config.speed, type, led_min, led_max); + rgb_matrix_layer_helper(DEFAULT_LAYER_1_HSV, mode, rgb_matrix_config.speed, type, led_min, led_max); + break; + case _COLEMAK_DH: + rgb_matrix_layer_helper(DEFAULT_LAYER_2_HSV, mode, rgb_matrix_config.speed, type, led_min, led_max); break; case _COLEMAK: - rgb_matrix_layer_helper(HSV_MAGENTA, mode, rgb_matrix_config.speed, type, led_min, led_max); + rgb_matrix_layer_helper(DEFAULT_LAYER_3_HSV, mode, rgb_matrix_config.speed, type, led_min, led_max); break; case _DVORAK: - rgb_matrix_layer_helper(HSV_SPRINGGREEN, mode, rgb_matrix_config.speed, type, led_min, led_max); - break; - case _WORKMAN: - rgb_matrix_layer_helper(HSV_GOLDENROD, mode, rgb_matrix_config.speed, type, led_min, led_max); - break; - case _NORMAN: - rgb_matrix_layer_helper(HSV_CORAL, mode, rgb_matrix_config.speed, type, led_min, led_max); - break; - case _MALTRON: - rgb_matrix_layer_helper(HSV_YELLOW, mode, rgb_matrix_config.speed, type, led_min, led_max); - break; - case _EUCALYN: - rgb_matrix_layer_helper(HSV_PINK, mode, rgb_matrix_config.speed, type, led_min, led_max); - break; - case _CARPLAX: - rgb_matrix_layer_helper(HSV_BLUE, mode, rgb_matrix_config.speed, type, led_min, led_max); + rgb_matrix_layer_helper(DEFAULT_LAYER_4_HSV, mode, rgb_matrix_config.speed, type, led_min, led_max); break; } } @@ -189,10 +283,11 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { case _ADJUST: rgb_matrix_layer_helper(HSV_RED, 0, rgb_matrix_config.speed, LED_FLAG_UNDERGLOW, led_min, led_max); break; - default: { - check_default_layer(0, LED_FLAG_UNDERGLOW, led_min, led_max); - break; - } + default: + { + check_default_layer(0, LED_FLAG_UNDERGLOW, led_min, led_max); + break; + } } check_default_layer(0, LED_FLAG_MODIFIER, led_min, led_max); } diff --git a/layouts/community/split_3x6_3/drashna/rules.mk b/layouts/community/split_3x6_3/drashna/rules.mk index cbb0b1c113ba..edc9304fece7 100644 --- a/layouts/community/split_3x6_3/drashna/rules.mk +++ b/layouts/community/split_3x6_3/drashna/rules.mk @@ -3,7 +3,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +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 @@ -20,10 +20,9 @@ SWAP_HANDS_ENABLE = no # Enable one-hand typing SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend ifeq ($(strip $(KEYBOARD)), crkbd/rev1) - OLED_DRIVER_ENABLE = yes + OLED_ENABLE = yes RGB_MATRIX_ENABLE = yes HAPTIC_ENABLE = no - BOOTLOADER = qmk-dfu endif ifeq ($(strip $(CTPC)), yes) @@ -31,4 +30,8 @@ ifeq ($(strip $(CTPC)), yes) WS2812_DRIVER = pwm # won't work without a patch to the ctpc mk file SERIAL_DRIVER = usart SWAP_HANDS_ENABLE = yes + WPM_ENABLE = yes +else + BOOTLOADER = qmk-hid + BOOTLOADER_SIZE = 512 endif diff --git a/layouts/community/split_3x6_3/manna-harbour_miryoku/config.h b/layouts/community/split_3x6_3/manna-harbour_miryoku/config.h new file mode 100644 index 000000000000..4ce96c760051 --- /dev/null +++ b/layouts/community/split_3x6_3/manna-harbour_miryoku/config.h @@ -0,0 +1,20 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . + +#pragma once + +#define LAYOUT_miryoku(\ + 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,\ + N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +LAYOUT_split_3x6_3(\ +KC_NO, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, KC_NO,\ +KC_NO, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, KC_NO,\ +KC_NO, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, KC_NO,\ + K32, K33, K34, K35, K36, K37\ +) diff --git a/layouts/community/split_3x6_3/manna-harbour_miryoku/keymap.c b/layouts/community/split_3x6_3/manna-harbour_miryoku/keymap.c new file mode 100644 index 000000000000..7c5717a0fee0 --- /dev/null +++ b/layouts/community/split_3x6_3/manna-harbour_miryoku/keymap.c @@ -0,0 +1,5 @@ +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/layouts/default/60_abnt2/default_60_abnt2/keymap.c b/layouts/default/60_abnt2/default_60_abnt2/keymap.c index 919a972f6c09..00b9a8de262e 100644 --- a/layouts/default/60_abnt2/default_60_abnt2/keymap.c +++ b/layouts/default/60_abnt2/default_60_abnt2/keymap.c @@ -19,7 +19,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_60_abnt2( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, BR_ACUT, BR_LBRC, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, BR_CCDL, BR_TILD, BR_RBRC, KC_ENT, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, BR_CCED, BR_TILD, BR_RBRC, KC_ENT, KC_LSFT, BR_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, BR_SCLN, BR_SLSH, KC_RSFT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL ), diff --git a/layouts/default/60_abnt2/info.json b/layouts/default/60_abnt2/info.json index 4e371abdc95f..4f950e3f5ad7 100644 --- a/layouts/default/60_abnt2/info.json +++ b/layouts/default/60_abnt2/info.json @@ -2,8 +2,6 @@ "keyboard_name": "60% ABNT2 layout", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_abnt2": { "layout": [ diff --git a/layouts/default/60_ansi/info.json b/layouts/default/60_ansi/info.json index a5c9b5f5674c..3fbe80663311 100644 --- a/layouts/default/60_ansi/info.json +++ b/layouts/default/60_ansi/info.json @@ -2,8 +2,6 @@ "keyboard_name": "60% ANSI layout", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_ansi": { "layout": [ diff --git a/layouts/default/60_ansi_arrow/info.json b/layouts/default/60_ansi_arrow/info.json index a8667e62cec8..0875c727771f 100644 --- a/layouts/default/60_ansi_arrow/info.json +++ b/layouts/default/60_ansi_arrow/info.json @@ -2,8 +2,6 @@ "keyboard_name": "60% ANSI Arrow Layout", "url": "https://mr.sendyyk.com", "maintainer": "Sendy YK ", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_ansi_arrow": { "layout": [ diff --git a/layouts/default/60_ansi_arrow_split_bs_7u_spc/info.json b/layouts/default/60_ansi_arrow_split_bs_7u_spc/info.json index 78301af948f9..b39ea1fb27cd 100644 --- a/layouts/default/60_ansi_arrow_split_bs_7u_spc/info.json +++ b/layouts/default/60_ansi_arrow_split_bs_7u_spc/info.json @@ -2,8 +2,6 @@ "keyboard_name": "60% ANSI Arrow Split Backspace & 7U Space Layout", "url": "https://mr.sendyyk.com", "maintainer": "Sendy YK ", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_ansi_arrow": { "layout": [ diff --git a/layouts/default/60_ansi_split_bs_rshift/info.json b/layouts/default/60_ansi_split_bs_rshift/info.json index c42c3b047e77..3fb903ea4294 100644 --- a/layouts/default/60_ansi_split_bs_rshift/info.json +++ b/layouts/default/60_ansi_split_bs_rshift/info.json @@ -2,8 +2,6 @@ "keyboard_name": "60% ANSI layout with split Backspace and Right Shift", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_ansi_split_bs_rshift": { "layout": [ diff --git a/layouts/default/60_ansi_tsangan/info.json b/layouts/default/60_ansi_tsangan/info.json index 9c21043dbc49..e582bb832b86 100644 --- a/layouts/default/60_ansi_tsangan/info.json +++ b/layouts/default/60_ansi_tsangan/info.json @@ -2,8 +2,6 @@ "keyboard_name": "60% ANSI Tsangan layout", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_ansi_tsangan": { "layout": [ diff --git a/layouts/default/60_hhkb/default_60_hhkb/keymap.c b/layouts/default/60_hhkb/default_60_hhkb/keymap.c index 73804b8bb8f3..81a0fc7d9f39 100644 --- a/layouts/default/60_hhkb/default_60_hhkb/keymap.c +++ b/layouts/default/60_hhkb/default_60_hhkb/keymap.c @@ -37,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [1] = LAYOUT_60_hhkb( KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, - KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, _______, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, KC_UP, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_PENT, _______, _______, _______, _______, _______, _______, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______, _______, _______, _______, _______, _______ diff --git a/layouts/default/60_hhkb/info.json b/layouts/default/60_hhkb/info.json index 0d9594affc7f..83ad957eefb5 100644 --- a/layouts/default/60_hhkb/info.json +++ b/layouts/default/60_hhkb/info.json @@ -2,8 +2,6 @@ "keyboard_name": "60% HHKB layout", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_hhkb": { "layout": [ diff --git a/layouts/default/60_iso/info.json b/layouts/default/60_iso/info.json index 4e5b485ba290..ddb2908499af 100644 --- a/layouts/default/60_iso/info.json +++ b/layouts/default/60_iso/info.json @@ -2,8 +2,6 @@ "keyboard_name": "60% ISO layout", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_iso": { "layout": [ diff --git a/layouts/default/60_iso_split_bs_rshift/info.json b/layouts/default/60_iso_split_bs_rshift/info.json index 29a88507b99c..b470a8ffadb2 100644 --- a/layouts/default/60_iso_split_bs_rshift/info.json +++ b/layouts/default/60_iso_split_bs_rshift/info.json @@ -2,8 +2,6 @@ "keyboard_name": "60% ISO layout with split Backspace and Right Shift", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_iso_split_bs_rshift": { "layout": [ diff --git a/layouts/default/60_iso_tsangan/info.json b/layouts/default/60_iso_tsangan/info.json index 91a51f2852c1..fa9b6befcba4 100644 --- a/layouts/default/60_iso_tsangan/info.json +++ b/layouts/default/60_iso_tsangan/info.json @@ -2,8 +2,6 @@ "keyboard_name": "60% ISO Tsangan layout", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_iso_tsangan": { "layout": [ diff --git a/layouts/default/60_tsangan_hhkb/info.json b/layouts/default/60_tsangan_hhkb/info.json index 6a7451f88c72..091456eb7016 100644 --- a/layouts/default/60_tsangan_hhkb/info.json +++ b/layouts/default/60_tsangan_hhkb/info.json @@ -2,8 +2,6 @@ "keyboard_name": "60% ANSI Tsangan HHKB layout", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_60_tsangan_hhkb": { "layout": [ diff --git a/layouts/default/64_ansi/default_64_ansi/keymap.c b/layouts/default/64_ansi/default_64_ansi/keymap.c index ff1356e953f2..aae78dc8dab9 100644 --- a/layouts/default/64_ansi/default_64_ansi/keymap.c +++ b/layouts/default/64_ansi/default_64_ansi/keymap.c @@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [1] = LAYOUT_64_ansi( KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______, _______, _______, _______, _______, _______, MO(2), KC_HOME, KC_PGDN, KC_END diff --git a/layouts/default/64_ansi/info.json b/layouts/default/64_ansi/info.json index f30a94e3c222..dce81c5b8415 100644 --- a/layouts/default/64_ansi/info.json +++ b/layouts/default/64_ansi/info.json @@ -2,8 +2,6 @@ "keyboard_name": "60% 64-key ANSI Layout", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_64_ansi": { "layout": [ diff --git a/layouts/default/64_iso/default_64_iso/keymap.c b/layouts/default/64_iso/default_64_iso/keymap.c index a0ac1a151153..45e07dd9cc6c 100644 --- a/layouts/default/64_iso/default_64_iso/keymap.c +++ b/layouts/default/64_iso/default_64_iso/keymap.c @@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [1] = LAYOUT_64_iso( KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______, _______, _______, _______, _______, _______, MO(2), KC_HOME, KC_PGDN, KC_END diff --git a/layouts/default/64_iso/info.json b/layouts/default/64_iso/info.json index cc27984837ad..db7e94d28428 100644 --- a/layouts/default/64_iso/info.json +++ b/layouts/default/64_iso/info.json @@ -2,8 +2,6 @@ "keyboard_name": "60% \"64-key\" ISO Layout", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_64_iso": { "layout": [ diff --git a/layouts/default/65_ansi/info.json b/layouts/default/65_ansi/info.json index 86fbc3ca7795..abc4e45ffb95 100644 --- a/layouts/default/65_ansi/info.json +++ b/layouts/default/65_ansi/info.json @@ -2,8 +2,6 @@ "keyboard_name": "65% ANSI layout", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_ansi": { "layout": [ diff --git a/layouts/default/65_ansi_blocker/info.json b/layouts/default/65_ansi_blocker/info.json index bbe1c8c3a585..1fd518348aac 100644 --- a/layouts/default/65_ansi_blocker/info.json +++ b/layouts/default/65_ansi_blocker/info.json @@ -2,8 +2,6 @@ "keyboard_name": "65% ANSI layout with blocker", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_ansi_blocker": { "layout": [ diff --git a/layouts/default/65_ansi_blocker_split_bs/info.json b/layouts/default/65_ansi_blocker_split_bs/info.json index a388086b1e64..af70ec1b4594 100644 --- a/layouts/default/65_ansi_blocker_split_bs/info.json +++ b/layouts/default/65_ansi_blocker_split_bs/info.json @@ -2,8 +2,6 @@ "keyboard_name": "65% ANSI layout with blocker and split Backspace", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_ansi_blocker_split_bs": { "layout": [ diff --git a/layouts/default/65_ansi_blocker_tsangan/info.json b/layouts/default/65_ansi_blocker_tsangan/info.json index cec0ca8134b2..b748e5d5adb2 100644 --- a/layouts/default/65_ansi_blocker_tsangan/info.json +++ b/layouts/default/65_ansi_blocker_tsangan/info.json @@ -2,8 +2,6 @@ "keyboard_name": "65% ANSI Tsangan layout with blocker", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_ansi_blocker_tsangan": { "layout": [ diff --git a/layouts/default/65_ansi_split_bs/info.json b/layouts/default/65_ansi_split_bs/info.json index 565c1aea8d40..b93eb98c404e 100644 --- a/layouts/default/65_ansi_split_bs/info.json +++ b/layouts/default/65_ansi_split_bs/info.json @@ -2,8 +2,6 @@ "keyboard_name": "65% ANSI layout with split Backspace", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_ansi": { "layout": [ diff --git a/layouts/default/65_iso/info.json b/layouts/default/65_iso/info.json index f5bf43934118..0bc2e057dcce 100644 --- a/layouts/default/65_iso/info.json +++ b/layouts/default/65_iso/info.json @@ -2,8 +2,6 @@ "keyboard_name": "65% ISO layout", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_iso": { "layout": [ diff --git a/layouts/default/65_iso_blocker/info.json b/layouts/default/65_iso_blocker/info.json index e709f28d7606..4cea98d3fc1e 100644 --- a/layouts/default/65_iso_blocker/info.json +++ b/layouts/default/65_iso_blocker/info.json @@ -2,8 +2,6 @@ "keyboard_name": "65% ISO layout with blocker", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_iso_blocker": { "layout": [ diff --git a/layouts/default/65_iso_blocker_split_bs/info.json b/layouts/default/65_iso_blocker_split_bs/info.json index cadeeea8f539..a7c4056d1899 100644 --- a/layouts/default/65_iso_blocker_split_bs/info.json +++ b/layouts/default/65_iso_blocker_split_bs/info.json @@ -2,8 +2,6 @@ "keyboard_name": "65% ISO layout with blocker and split Backspace", "url": "", "maintainer": "qmk", - "width": 16, - "height": 5, "layouts": { "LAYOUT_65_iso_blocker_split_bs": { "layout": [ diff --git a/layouts/default/66_ansi/info.json b/layouts/default/66_ansi/info.json index 07f5913f0ac6..a99e9a60739c 100644 --- a/layouts/default/66_ansi/info.json +++ b/layouts/default/66_ansi/info.json @@ -2,8 +2,6 @@ "keyboard_name": "66% ANSI layout", "url": "", "maintainer": "qmk", - "width": 16.5, - "height": 5, "layouts": { "LAYOUT_66_ansi": { "layout": [ diff --git a/layouts/default/66_iso/info.json b/layouts/default/66_iso/info.json index df20bebc361b..3b6997fa4018 100644 --- a/layouts/default/66_iso/info.json +++ b/layouts/default/66_iso/info.json @@ -2,8 +2,6 @@ "keyboard_name": "66% ISO layout", "url": "", "maintainer": "qmk", - "width": 16.5, - "height": 5, "layouts": { "LAYOUT_66_iso": { "layout": [ diff --git a/layouts/default/68_ansi/info.json b/layouts/default/68_ansi/info.json index 8dc17fd9e86f..ecea8440fe15 100644 --- a/layouts/default/68_ansi/info.json +++ b/layouts/default/68_ansi/info.json @@ -2,8 +2,6 @@ "keyboard_name": "68-key ANSI layout", "url": "", "maintainer": "qmk", - "width": 17.25, - "height": 5, "layouts": { "LAYOUT_68_ansi": { "layout": [ diff --git a/layouts/default/68_iso/info.json b/layouts/default/68_iso/info.json index e427ee8f6f72..723cb328eec3 100644 --- a/layouts/default/68_iso/info.json +++ b/layouts/default/68_iso/info.json @@ -2,8 +2,6 @@ "keyboard_name": "68-key ISO layout", "url": "", "maintainer": "qmk", - "width": 17.25, - "height": 5, "layouts": { "LAYOUT_68_iso": { "layout": [ diff --git a/layouts/default/75_ansi/info.json b/layouts/default/75_ansi/info.json index 4f670fc59dd0..6ad605a95264 100644 --- a/layouts/default/75_ansi/info.json +++ b/layouts/default/75_ansi/info.json @@ -2,8 +2,6 @@ "keyboard_name": "75% ANSI layout", "url": "", "maintainer": "qmk", - "width": 16, - "height": 6, "layouts": { "LAYOUT_75_ansi": { "layout": [ diff --git a/layouts/default/75_iso/info.json b/layouts/default/75_iso/info.json index 14820d6a77cb..e8e750716054 100644 --- a/layouts/default/75_iso/info.json +++ b/layouts/default/75_iso/info.json @@ -2,8 +2,6 @@ "keyboard_name": "75% ISO layout", "url": "", "maintainer": "qmk", - "width": 16, - "height": 6, "layouts": { "LAYOUT_75_iso": { "layout": [ diff --git a/layouts/default/96_ansi/default_96_ansi/keymap.c b/layouts/default/96_ansi/default_96_ansi/keymap.c index 18a67fcefdeb..35ece2f708c9 100644 --- a/layouts/default/96_ansi/default_96_ansi/keymap.c +++ b/layouts/default/96_ansi/default_96_ansi/keymap.c @@ -33,8 +33,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┴───┴───┴───┘ */ [0] = LAYOUT_96_ansi( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_VOLD, KC_VOLU, KC_MUTE, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, KC_VOLD, KC_VOLU, KC_MUTE, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, diff --git a/layouts/default/96_ansi/info.json b/layouts/default/96_ansi/info.json index 1c7678a18d9e..f481259eace8 100644 --- a/layouts/default/96_ansi/info.json +++ b/layouts/default/96_ansi/info.json @@ -2,8 +2,6 @@ "keyboard_name": "96% ANSI layout", "url": "", "maintainer": "qmk", - "width": 19, - "height": 6, "layouts": { "LAYOUT_96_ansi": { "layout": [ diff --git a/layouts/default/96_iso/default_96_iso/keymap.c b/layouts/default/96_iso/default_96_iso/keymap.c index df36f95abc96..742bb9cec31f 100644 --- a/layouts/default/96_iso/default_96_iso/keymap.c +++ b/layouts/default/96_iso/default_96_iso/keymap.c @@ -33,8 +33,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┴───┴───┴───┘ */ [0] = LAYOUT_96_iso( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_VOLD, KC_VOLU, KC_MUTE, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, KC_VOLD, KC_VOLU, KC_MUTE, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, diff --git a/layouts/default/96_iso/info.json b/layouts/default/96_iso/info.json index 26219a68111d..625575ba7361 100644 --- a/layouts/default/96_iso/info.json +++ b/layouts/default/96_iso/info.json @@ -2,8 +2,6 @@ "keyboard_name": "96% ISO layout", "url": "", "maintainer": "qmk", - "width": 19, - "height": 6, "layouts": { "LAYOUT_96_iso": { "layout": [ diff --git a/layouts/default/alice/info.json b/layouts/default/alice/info.json index 3521a4b7c08e..4cd4ec2dbac6 100644 --- a/layouts/default/alice/info.json +++ b/layouts/default/alice/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Alice layout", "url": "", "maintainer": "qmk", - "width": 18.35, - "height": 5.1, "layouts": { "LAYOUT_alice": { "layout": [ diff --git a/layouts/default/alice_split_bs/info.json b/layouts/default/alice_split_bs/info.json index f7b4a68b552a..02bfc3538b86 100644 --- a/layouts/default/alice_split_bs/info.json +++ b/layouts/default/alice_split_bs/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Alice layout with Split Backspace", "url": "", "maintainer": "qmk", - "width": 18.35, - "height": 5.1, "layouts": { "LAYOUT_alice_split_bs": { "layout": [ diff --git a/layouts/default/ergodox/info.json b/layouts/default/ergodox/info.json index 49a1f119a88c..3f6a51f044cb 100644 --- a/layouts/default/ergodox/info.json +++ b/layouts/default/ergodox/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Ergodox layout", "url": "", "maintainer": "qmk", - "width": 19.75, - "height": 7.25, "layouts": { "LAYOUT_ergodox": { "layout": [ diff --git a/layouts/default/fullsize_ansi/default_fullsize_ansi/keymap.c b/layouts/default/fullsize_ansi/default_fullsize_ansi/keymap.c index dbe7c58c6c0a..2e7bd55f95d7 100644 --- a/layouts/default/fullsize_ansi/default_fullsize_ansi/keymap.c +++ b/layouts/default/fullsize_ansi/default_fullsize_ansi/keymap.c @@ -18,9 +18,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘ */ [0] = LAYOUT_fullsize_ansi( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, diff --git a/layouts/default/fullsize_ansi/info.json b/layouts/default/fullsize_ansi/info.json index ba67fbd4ccd1..6dee4d591ac7 100644 --- a/layouts/default/fullsize_ansi/info.json +++ b/layouts/default/fullsize_ansi/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Fullsize ANSI layout", "url": "", "maintainer": "qmk", - "width": 22.5, - "height": 6.25, "layouts": { "LAYOUT_fullsize_ansi": { "layout": [ diff --git a/layouts/default/fullsize_iso/default_fullsize_iso/keymap.c b/layouts/default/fullsize_iso/default_fullsize_iso/keymap.c index e2df016ad2b8..c88693b2d873 100644 --- a/layouts/default/fullsize_iso/default_fullsize_iso/keymap.c +++ b/layouts/default/fullsize_iso/default_fullsize_iso/keymap.c @@ -18,9 +18,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘ */ [0] = LAYOUT_fullsize_iso( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, diff --git a/layouts/default/fullsize_iso/info.json b/layouts/default/fullsize_iso/info.json index 403797a31de0..32a986bfb0b5 100644 --- a/layouts/default/fullsize_iso/info.json +++ b/layouts/default/fullsize_iso/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Fullsize ISO layout", "url": "", "maintainer": "qmk", - "width": 22.5, - "height": 6.25, "layouts": { "LAYOUT_fullsize_iso": { "layout": [ diff --git a/layouts/default/numpad_4x4/info.json b/layouts/default/numpad_4x4/info.json index 79a6af7712d1..78974fcce18f 100644 --- a/layouts/default/numpad_4x4/info.json +++ b/layouts/default/numpad_4x4/info.json @@ -2,8 +2,6 @@ "keyboard_name": "4x4 number pad layout", "url": "", "maintainer": "qmk", - "width": 4, - "height": 4, "layouts": { "LAYOUT_numpad_4x4": { "layout": [ diff --git a/layouts/default/numpad_5x4/info.json b/layouts/default/numpad_5x4/info.json index f14a7d7c3c52..ad525bbd1eec 100644 --- a/layouts/default/numpad_5x4/info.json +++ b/layouts/default/numpad_5x4/info.json @@ -2,8 +2,6 @@ "keyboard_name": "5x4 number pad layout", "url": "", "maintainer": "qmk", - "width": 4, - "height": 5, "layouts": { "LAYOUT_numpad_5x4": { "layout": [ diff --git a/layouts/default/numpad_5x6/info.json b/layouts/default/numpad_5x6/info.json index fa88c5e97e27..513734b58f5d 100644 --- a/layouts/default/numpad_5x6/info.json +++ b/layouts/default/numpad_5x6/info.json @@ -2,8 +2,6 @@ "keyboard_name": "5x6 number pad layout", "url": "", "maintainer": "qmk", - "width": 6, - "height": 5, "layouts": { "LAYOUT_numpad_5x6": { "layout": [ diff --git a/layouts/default/numpad_6x4/default_numpad_6x4/keymap.c b/layouts/default/numpad_6x4/default_numpad_6x4/keymap.c index 85328983b7d9..53cd4d346907 100644 --- a/layouts/default/numpad_6x4/default_numpad_6x4/keymap.c +++ b/layouts/default/numpad_6x4/default_numpad_6x4/keymap.c @@ -18,7 +18,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [0] = LAYOUT_numpad_6x4( KC_ESC, KC_TAB, MO(1), KC_BSPC, - KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, KC_P7, KC_P8, KC_P9, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_P1, KC_P2, KC_P3, diff --git a/layouts/default/numpad_6x4/info.json b/layouts/default/numpad_6x4/info.json index f8548621f1b0..6c044144fc39 100644 --- a/layouts/default/numpad_6x4/info.json +++ b/layouts/default/numpad_6x4/info.json @@ -2,8 +2,6 @@ "keyboard_name": "6x4 number pad layout", "url": "", "maintainer": "qmk", - "width": 4, - "height": 6, "layouts": { "LAYOUT_numpad_6x4": { "layout": [ diff --git a/layouts/default/numpad_6x5/default_numpad_6x5/keymap.c b/layouts/default/numpad_6x5/default_numpad_6x5/keymap.c new file mode 100644 index 000000000000..2bdbfc468d47 --- /dev/null +++ b/layouts/default/numpad_6x5/default_numpad_6x5/keymap.c @@ -0,0 +1,67 @@ +/* Copyright 2021 NachoxMacho +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* 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] = { + /* + * ┌───┌───┬───┬───┬───┐ + * │ ` │Esc│Tab│MO1│Bsp│ + * ├───┼───┼───┼───┼───┤ + * │ , │Num│ / │ * │ - │ + * ├───┼───┼───┼───┼───┤ + * │Gui│ 7 │ 8 │ 9 │ │ + * ├───┼───┼───┼───┤ + │ + * │Alt│ 4 │ 5 │ 6 │ │ + * ├───┼───┼───┼───┼───┤ + * │Shi│ 1 │ 2 │ 3 │ │ + * ├───┼───┴───┼───┤Ent│ + * │Ctr│ 0 │ . │ │ + * └───┴───────┴───┴───┘ + */ + [0] = LAYOUT_numpad_6x5( + KC_GRV, KC_ESC, KC_TAB, MO(1), KC_BSPC, + KC_COMM, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_LGUI, KC_P7, KC_P8, KC_P9, + KC_LALT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_P1, KC_P2, KC_P3, + KC_LCTL, KC_P0, KC_PDOT, KC_PENT + ), + + /* + * ┌───┌───┐───┬───┬───┐ + * │ ` │Rst│Tab│MO1│Bsp│ + * ├───┼───┘───┼───┼───┤ + * │ , │Num│ / │ * │ - │ + * ├───┼───┼───┼───┼───┤ + * │Gui│Hom│ ↑ │PgU│ │ + * ├───┼───┼───┼───┤ + │ + * │Alt│ ← │ │ → │ │ + * ├───┼───┼───┼───┤───┤ + * │Shi│End│ ↓ │PgD│ │ + * ├───┼───┴───┼───┤Ent│ + * │Ctr│Insert │Del│ │ + * └───┴───────┴───┘───┘ + */ + [1] = LAYOUT_numpad_6x5( + _______, RESET, _______, _______, _______, + _______, _______, _______, _______, _______, + _______, KC_HOME, KC_UP, KC_PGUP, + _______, KC_LEFT, XXXXXXX, KC_RGHT, _______, + _______, KC_END, KC_DOWN, KC_PGDN, + _______, KC_INS, KC_DEL, _______ + ) +}; diff --git a/layouts/default/numpad_6x5/info.json b/layouts/default/numpad_6x5/info.json new file mode 100644 index 000000000000..88e3d684677d --- /dev/null +++ b/layouts/default/numpad_6x5/info.json @@ -0,0 +1,43 @@ +{ + "keyboard_name": "6x5 number pad layout", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_numpad_6x5": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "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":4, "y":2, "h":2}, + + {"x":0, "y":4}, + {"x":1, "y":4}, + {"x":2, "y":4}, + {"x":3, "y":4}, + + {"x":0, "y":5}, + {"x":1, "y":5, "w":2}, + {"x":3, "y":5}, + {"x":4, "y":4, "h":2} + ] + } + } +} diff --git a/layouts/default/numpad_6x5/layout.json b/layouts/default/numpad_6x5/layout.json new file mode 100644 index 000000000000..4204c99c5e00 --- /dev/null +++ b/layouts/default/numpad_6x5/layout.json @@ -0,0 +1,6 @@ +[{a:7},"","","","",""], +["","","","",""], +["","","","",{h:2},""], +["","","",""], +["","","","",{h:2},""], +["",{w:2},"",""] diff --git a/layouts/default/numpad_6x5/readme.md b/layouts/default/numpad_6x5/readme.md new file mode 100644 index 000000000000..0c6d0959e318 --- /dev/null +++ b/layouts/default/numpad_6x5/readme.md @@ -0,0 +1,3 @@ +# numpad_6x5 + + LAYOUT_numpad_6x5 diff --git a/layouts/default/ortho_1x1/info.json b/layouts/default/ortho_1x1/info.json index e055fcb3e7de..33fed0be4b51 100644 --- a/layouts/default/ortho_1x1/info.json +++ b/layouts/default/ortho_1x1/info.json @@ -2,8 +2,6 @@ "keyboard_name": "1x1 ortholinear layout", "url": "", "maintainer": "qmk", - "width": 1, - "height": 1, "layouts": { "LAYOUT_ortho_1x1": { "layout": [ diff --git a/layouts/default/ortho_2x3/default_ortho_2x3/keymap.c b/layouts/default/ortho_2x3/default_ortho_2x3/keymap.c new file mode 100644 index 000000000000..a38146d02034 --- /dev/null +++ b/layouts/default/ortho_2x3/default_ortho_2x3/keymap.c @@ -0,0 +1,15 @@ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┐ + * │ A │ B │ C │ + * ├───┼───┼───┤ + * │ D │ E │ F │ + * └───┴───┴───┘ + */ + [0] = LAYOUT_ortho_2x3( + KC_A, KC_B, KC_C, + KC_D, KC_E, KC_F + ) +}; diff --git a/layouts/default/ortho_2x3/info.json b/layouts/default/ortho_2x3/info.json new file mode 100644 index 000000000000..2eab486adbcb --- /dev/null +++ b/layouts/default/ortho_2x3/info.json @@ -0,0 +1,18 @@ +{ + "keyboard_name": "2x3 ortholinear layout", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_ortho_2x3": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1} + ] + } + } +} diff --git a/layouts/default/ortho_2x3/layout.json b/layouts/default/ortho_2x3/layout.json new file mode 100644 index 000000000000..255792193e7c --- /dev/null +++ b/layouts/default/ortho_2x3/layout.json @@ -0,0 +1,2 @@ +["","",""], +["","",""] diff --git a/layouts/default/ortho_2x3/readme.md b/layouts/default/ortho_2x3/readme.md new file mode 100644 index 000000000000..47ae0f68641c --- /dev/null +++ b/layouts/default/ortho_2x3/readme.md @@ -0,0 +1,3 @@ +# ortho_2x3 + + LAYOUT_ortho_2x3 diff --git a/layouts/default/ortho_2x6/default_ortho_2x6/keymap.c b/layouts/default/ortho_2x6/default_ortho_2x6/keymap.c new file mode 100644 index 000000000000..1c8a6b7ef9ca --- /dev/null +++ b/layouts/default/ortho_2x6/default_ortho_2x6/keymap.c @@ -0,0 +1,15 @@ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┬───┬───┬───┐ + * │ A │ B │ C │ D │ E │ F │ + * ├───┼───┼───┼───┼───┼───┤ + * │ G │ H │ I │ J │ K │ L │ + * └───┴───┴───┴───┴───┴───┘ + */ + [0] = LAYOUT_ortho_2x6( + KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, + KC_G, KC_H, KC_I, KC_J, KC_K, KC_L + ) +}; diff --git a/layouts/default/ortho_2x6/info.json b/layouts/default/ortho_2x6/info.json new file mode 100644 index 000000000000..c37022fa21a5 --- /dev/null +++ b/layouts/default/ortho_2x6/info.json @@ -0,0 +1,24 @@ +{ + "keyboard_name": "2x6 ortholinear layout", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_ortho_2x6": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1} + ] + } + } +} diff --git a/layouts/default/ortho_2x6/layout.json b/layouts/default/ortho_2x6/layout.json new file mode 100644 index 000000000000..ce609ee590bf --- /dev/null +++ b/layouts/default/ortho_2x6/layout.json @@ -0,0 +1,2 @@ +["","","","","",""], +["","","","","",""] diff --git a/layouts/default/ortho_2x6/readme.md b/layouts/default/ortho_2x6/readme.md new file mode 100644 index 000000000000..5e7c148a7245 --- /dev/null +++ b/layouts/default/ortho_2x6/readme.md @@ -0,0 +1,3 @@ +# ortho_2x6 + + LAYOUT_ortho_2x6 diff --git a/layouts/default/ortho_3x10/info.json b/layouts/default/ortho_3x10/info.json index f28e70a3f0c6..a3362c736eea 100644 --- a/layouts/default/ortho_3x10/info.json +++ b/layouts/default/ortho_3x10/info.json @@ -2,8 +2,6 @@ "keyboard_name": "3x10 ortholinear layout", "url": "", "maintainer": "qmk", - "width": 10, - "height": 3, "layouts": { "LAYOUT_ortho_3x10": { "layout": [ diff --git a/layouts/default/ortho_4x10/info.json b/layouts/default/ortho_4x10/info.json index 0e17121c6346..4a6b61c60f97 100644 --- a/layouts/default/ortho_4x10/info.json +++ b/layouts/default/ortho_4x10/info.json @@ -2,8 +2,6 @@ "keyboard_name": "4x10 ortholinear layout", "url": "", "maintainer": "qmk", - "width": 10, - "height": 4, "layouts": { "LAYOUT_ortho_4x10": { "layout": [ diff --git a/layouts/default/ortho_4x12/info.json b/layouts/default/ortho_4x12/info.json index b642cc6b44ed..5e7c427d7cf2 100644 --- a/layouts/default/ortho_4x12/info.json +++ b/layouts/default/ortho_4x12/info.json @@ -2,8 +2,6 @@ "keyboard_name": "4x12 ortholinear layout", "url": "", "maintainer": "qmk", - "width": 12, - "height": 4, "layouts": { "LAYOUT_ortho_4x12": { "layout": [ diff --git a/layouts/default/ortho_4x4/info.json b/layouts/default/ortho_4x4/info.json index 2bf6376dbd19..108c493ab6df 100644 --- a/layouts/default/ortho_4x4/info.json +++ b/layouts/default/ortho_4x4/info.json @@ -2,8 +2,6 @@ "keyboard_name": "4x4 ortholinear layout", "url": "", "maintainer": "qmk", - "width": 4, - "height": 4, "layouts": { "LAYOUT_ortho_4x4": { "layout": [ diff --git a/layouts/default/ortho_4x6/default_ortho_4x6/keymap.c b/layouts/default/ortho_4x6/default_ortho_4x6/keymap.c new file mode 100644 index 000000000000..b960ee3a9d1c --- /dev/null +++ b/layouts/default/ortho_4x6/default_ortho_4x6/keymap.c @@ -0,0 +1,21 @@ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┬───┬───┬───┐ + * │Tab│ Q │ W │ E │ R │ T │ + * ├───┼───┼───┼───┼───┼───┤ + * │Bsp│ A │ S │ D │ F │ G │ + * ├───┼───┼───┼───┼───┼───┤ + * │Sft│ Z │ X │ C │ V │ B │ + * ├───┼───┼───┼───┼───┼───┤ + * │Ctl│App│GUI│Alt│Spc│Spc│ + * └───┴───┴───┴───┴───┴───┘ + */ + [0] = LAYOUT_ortho_4x6( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, + KC_BKSP, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, + KC_LCTL, KC_MENU, KC_LGUI, KC_LALT, KC_SPC, KC_SPC + ) +}; diff --git a/layouts/default/ortho_4x6/info.json b/layouts/default/ortho_4x6/info.json new file mode 100644 index 000000000000..78376c038afd --- /dev/null +++ b/layouts/default/ortho_4x6/info.json @@ -0,0 +1,38 @@ +{ + "keyboard_name": "4x6 ortholinear layout", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_ortho_4x6": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3} + ] + } + } +} diff --git a/layouts/default/ortho_4x6/layout.json b/layouts/default/ortho_4x6/layout.json new file mode 100644 index 000000000000..46402c64bd0d --- /dev/null +++ b/layouts/default/ortho_4x6/layout.json @@ -0,0 +1,4 @@ +[{a:7},"","","","","",""], +["","","","","",""], +["","","","","",""], +["","","","","",""] diff --git a/layouts/default/ortho_4x6/readme.md b/layouts/default/ortho_4x6/readme.md new file mode 100644 index 000000000000..67c6175ee8dc --- /dev/null +++ b/layouts/default/ortho_4x6/readme.md @@ -0,0 +1,3 @@ +# ortho_4x6 + + LAYOUT_ortho_4x6 diff --git a/layouts/default/ortho_5x10/default_ortho_5x10/keymap.c b/layouts/default/ortho_5x10/default_ortho_5x10/keymap.c new file mode 100644 index 000000000000..1f935473e2b0 --- /dev/null +++ b/layouts/default/ortho_5x10/default_ortho_5x10/keymap.c @@ -0,0 +1,24 @@ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │ A │ B │ C │ D │ E │ F │ G │ H │ I │ J │ + * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ + * │ A │ B │ C │ D │ E │ F │ G │ H │ I │ J │ + * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ + * │ A │ B │ C │ D │ E │ F │ G │ H │ I │ J │ + * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ + * │ A │ B │ C │ D │ E │ F │ G │ H │ I │ J │ + * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ + * │ A │ B │ C │ D │ E │ F │ G │ H │ I │ J │ + * └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘ + */ + [0] = LAYOUT_ortho_5x10( + KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_J, + KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_J, + KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_J, + KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_J, + KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_J + ) +}; diff --git a/layouts/default/ortho_5x10/info.json b/layouts/default/ortho_5x10/info.json new file mode 100644 index 000000000000..0c4cb9bb4989 --- /dev/null +++ b/layouts/default/ortho_5x10/info.json @@ -0,0 +1,65 @@ +{ + "keyboard_name": "5x10 ortholinear layout", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_ortho_5x10": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + {"x":5, "y":1}, + {"x":6, "y":1}, + {"x":7, "y":1}, + {"x":8, "y":1}, + {"x":9, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + {"x":5, "y":2}, + {"x":6, "y":2}, + {"x":7, "y":2}, + {"x":8, "y":2}, + {"x":9, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + {"x":5, "y":3}, + {"x":6, "y":3}, + {"x":7, "y":3}, + {"x":8, "y":3}, + {"x":9, "y":3}, + + {"x":0, "y":4}, + {"x":1, "y":4}, + {"x":2, "y":4}, + {"x":3, "y":4}, + {"x":4, "y":4}, + {"x":5, "y":4}, + {"x":6, "y":4}, + {"x":7, "y":4}, + {"x":8, "y":4}, + {"x":9, "y":4}, + ] + } + } +} diff --git a/layouts/default/ortho_5x10/layout.json b/layouts/default/ortho_5x10/layout.json new file mode 100644 index 000000000000..79dde3e7421f --- /dev/null +++ b/layouts/default/ortho_5x10/layout.json @@ -0,0 +1,5 @@ +[{a:7},"","","","","","","","","",""], +["","","","","","","","","",""], +["","","","","","","","","",""], +["","","","","","","","","",""], +["","","","","","","","","",""] diff --git a/layouts/default/ortho_5x10/readme.md b/layouts/default/ortho_5x10/readme.md new file mode 100644 index 000000000000..5c94f8eca8b5 --- /dev/null +++ b/layouts/default/ortho_5x10/readme.md @@ -0,0 +1,3 @@ +# ortho_5x10 + + LAYOUT_ortho_5x10 diff --git a/layouts/default/ortho_5x12/info.json b/layouts/default/ortho_5x12/info.json index 9579bf98bd3c..29321ffc6b58 100644 --- a/layouts/default/ortho_5x12/info.json +++ b/layouts/default/ortho_5x12/info.json @@ -2,8 +2,6 @@ "keyboard_name": "5x12 ortholinear layout", "url": "", "maintainer": "qmk", - "width": 12, - "height": 5, "layouts": { "LAYOUT_ortho_5x12": { "layout": [ diff --git a/layouts/default/ortho_5x14/info.json b/layouts/default/ortho_5x14/info.json index c9e403d631e5..7bb6ae4a29fc 100644 --- a/layouts/default/ortho_5x14/info.json +++ b/layouts/default/ortho_5x14/info.json @@ -2,8 +2,6 @@ "keyboard_name": "5x14 ortholinear layout", "url": "", "maintainer": "qmk", - "width": 14, - "height": 5, "layouts": { "LAYOUT_ortho_5x14": { "layout": [ diff --git a/layouts/default/ortho_5x15/info.json b/layouts/default/ortho_5x15/info.json index 0286fd25afcc..0365ada18fc7 100644 --- a/layouts/default/ortho_5x15/info.json +++ b/layouts/default/ortho_5x15/info.json @@ -2,8 +2,6 @@ "keyboard_name": "5x15 ortholinear layout", "url": "", "maintainer": "qmk", - "width": 15, - "height": 5, "layouts": { "LAYOUT_ortho_5x15": { "layout": [ diff --git a/layouts/default/ortho_5x4/info.json b/layouts/default/ortho_5x4/info.json index c85ad02d63d9..b76fa288aeab 100644 --- a/layouts/default/ortho_5x4/info.json +++ b/layouts/default/ortho_5x4/info.json @@ -2,8 +2,6 @@ "keyboard_name": "5x4 ortholinear layout", "url": "", "maintainer": "qmk", - "width": 4, - "height": 5, "layouts": { "LAYOUT_ortho_5x4": { "layout": [ diff --git a/layouts/default/ortho_5x5/info.json b/layouts/default/ortho_5x5/info.json new file mode 100644 index 000000000000..d48911a74c29 --- /dev/null +++ b/layouts/default/ortho_5x5/info.json @@ -0,0 +1,40 @@ +{ + "keyboard_name": "5x5 ortholinear layout", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT_ortho_5x5": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + {"x":3, "y":1}, + {"x":4, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + {"x":3, "y":2}, + {"x":4, "y":2}, + + {"x":0, "y":3}, + {"x":1, "y":3}, + {"x":2, "y":3}, + {"x":3, "y":3}, + {"x":4, "y":3}, + + {"x":0, "y":4}, + {"x":1, "y":4}, + {"x":2, "y":4}, + {"x":3, "y":4}, + {"x":4, "y":4} + ] + } + } +} diff --git a/layouts/default/ortho_5x5/layout.json b/layouts/default/ortho_5x5/layout.json new file mode 100644 index 000000000000..71f77df6edfa --- /dev/null +++ b/layouts/default/ortho_5x5/layout.json @@ -0,0 +1,5 @@ +["","","","",""], +["","","","",""], +["","","","",""], +["","","","",""], +["","","","",""] diff --git a/layouts/default/ortho_5x5/readme.md b/layouts/default/ortho_5x5/readme.md new file mode 100644 index 000000000000..3dd75765d19e --- /dev/null +++ b/layouts/default/ortho_5x5/readme.md @@ -0,0 +1,3 @@ +# ortho_5x5 + + LAYOUT_ortho_5x5 \ No newline at end of file diff --git a/layouts/default/ortho_6x4/default_ortho_6x4/keymap.c b/layouts/default/ortho_6x4/default_ortho_6x4/keymap.c index 9beb9204a92a..d1dc759de362 100644 --- a/layouts/default/ortho_6x4/default_ortho_6x4/keymap.c +++ b/layouts/default/ortho_6x4/default_ortho_6x4/keymap.c @@ -22,7 +22,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [0] = LAYOUT_ortho_6x4( KC_ESC, KC_TAB, MO(1), KC_BSPC, - KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_P4, KC_P5, KC_P6, KC_PERC, KC_P1, KC_P2, KC_P3, KC_EQL, diff --git a/layouts/default/ortho_6x4/info.json b/layouts/default/ortho_6x4/info.json index d9a937e7351a..142539bf308f 100644 --- a/layouts/default/ortho_6x4/info.json +++ b/layouts/default/ortho_6x4/info.json @@ -2,8 +2,6 @@ "keyboard_name": "6x4 ortholinear layout", "url": "", "maintainer": "qmk", - "width": 4, - "height": 6, "layouts": { "LAYOUT_ortho_6x4": { "layout": [ diff --git a/layouts/default/planck_mit/info.json b/layouts/default/planck_mit/info.json index 9ac260cb6e56..4225b52c2ca7 100644 --- a/layouts/default/planck_mit/info.json +++ b/layouts/default/planck_mit/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Planck MIT (4x12) layout", "url": "", "maintainer": "qmk", - "width": 12, - "height": 4, "layouts": { "LAYOUT_planck_mit": { "layout": [ diff --git a/layouts/default/readme.md b/layouts/default/readme.md index eca77e693061..1acc16d94f89 100644 --- a/layouts/default/readme.md +++ b/layouts/default/readme.md @@ -660,6 +660,24 @@ LAYOUT_numpad_6x4 ### Ortholinear Layouts +``` +LAYOUT_ortho_2x3 +┌───┬───┬───┐ +│ │ │ │ +├───┼───┼───┤ +│ │ │ │ +└───┴───┴───┘ +``` + +``` +LAYOUT_ortho_2x6 +┌───┬───┬───┬───┬───┬───┐ +│ │ │ │ │ │ │ +├───┼───┼───┼───┼───┼───┤ +│ │ │ │ │ │ │ +└───┴───┴───┴───┴───┴───┘ +``` + ``` LAYOUT_ortho_3x10 ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ @@ -710,6 +728,36 @@ LAYOUT_ortho_4x4 └───┴───┴───┴───┘ ``` +``` +LAYOUT_ortho_5x5 +┌───┬───┬───┬───┬───┐ +│ │ │ │ │ │ +├───┼───┼───┼───┼───┤ +│ │ │ │ │ │ +├───┼───┼───┼───┼───┤ +│ │ │ │ │ │ +├───┼───┼───┼───┼───┤ +│ │ │ │ │ │ +├───┼───┼───┼───┼───┤ +│ │ │ │ │ │ +└───┴───┴───┴───┴───┘ +``` + +``` +LAYOUT_ortho_5x10 +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ +│ │ │ │ │ │ │ │ │ │ │ +├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ +├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ +├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ +├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ +│ │ │ │ │ │ │ │ │ │ │ +└───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘ +``` + ``` LAYOUT_ortho_5x12 ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ diff --git a/layouts/default/split_3x5_3/info.json b/layouts/default/split_3x5_3/info.json index 87e5c170d1e3..5313f2f7de7a 100644 --- a/layouts/default/split_3x5_3/info.json +++ b/layouts/default/split_3x5_3/info.json @@ -2,8 +2,6 @@ "keyboard_name": "3x5+3 split layout", "url": "", "maintainer": "qmk", - "width": 12, - "height": 4.75, "layouts": { "LAYOUT_split_3x5_3": { "layout": [ diff --git a/layouts/default/split_3x6_3/info.json b/layouts/default/split_3x6_3/info.json index b1ca28168bf0..f040eb1a45b2 100644 --- a/layouts/default/split_3x6_3/info.json +++ b/layouts/default/split_3x6_3/info.json @@ -2,8 +2,6 @@ "keyboard_name": "3x6+3 split layout", "url": "", "maintainer": "qmk", - "width": 14, - "height": 4.75, "layouts": { "LAYOUT_split_3x6_3": { "layout": [ diff --git a/layouts/default/tkl_ansi/default_tkl_ansi/keymap.c b/layouts/default/tkl_ansi/default_tkl_ansi/keymap.c index 8b41a22b37c8..caed507c75c5 100644 --- a/layouts/default/tkl_ansi/default_tkl_ansi/keymap.c +++ b/layouts/default/tkl_ansi/default_tkl_ansi/keymap.c @@ -18,7 +18,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ */ [0] = LAYOUT_tkl_ansi( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, diff --git a/layouts/default/tkl_ansi/info.json b/layouts/default/tkl_ansi/info.json index 944f93d396df..f70b774913f0 100644 --- a/layouts/default/tkl_ansi/info.json +++ b/layouts/default/tkl_ansi/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Tenkeyless ANSI layout", "url": "", "maintainer": "qmk", - "width": 18.25, - "height": 6.25, "layouts": { "LAYOUT_tkl_ansi": { "layout": [ diff --git a/layouts/default/tkl_iso/default_tkl_iso/keymap.c b/layouts/default/tkl_iso/default_tkl_iso/keymap.c index f82939d876b2..2c4ffd01287a 100644 --- a/layouts/default/tkl_iso/default_tkl_iso/keymap.c +++ b/layouts/default/tkl_iso/default_tkl_iso/keymap.c @@ -18,7 +18,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ */ [0] = LAYOUT_tkl_iso( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, diff --git a/layouts/default/tkl_iso/info.json b/layouts/default/tkl_iso/info.json index 524f28c88ea1..d6e6253b3807 100644 --- a/layouts/default/tkl_iso/info.json +++ b/layouts/default/tkl_iso/info.json @@ -2,8 +2,6 @@ "keyboard_name": "Tenkeyless ISO layout", "url": "", "maintainer": "qmk", - "width": 18.25, - "height": 6.25, "layouts": { "LAYOUT_tkl_iso": { "layout": [ diff --git a/layouts/default/tkl_nofrow_ansi/default_tkl_nofrow_ansi/keymap.c b/layouts/default/tkl_nofrow_ansi/default_tkl_nofrow_ansi/keymap.c new file mode 100644 index 000000000000..c2b7ecfeaf4c --- /dev/null +++ b/layouts/default/tkl_nofrow_ansi/default_tkl_nofrow_ansi/keymap.c @@ -0,0 +1,24 @@ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ + * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ │Ins│Hom│PgU│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ │Del│End│PgD│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐ + * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ + * │Ctrl│GUI │Alt │ │ Alt│ GUI│Menu│Ctrl│ │ ← │ ↓ │ → │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ + */ + [0] = LAYOUT_tkl_nofrow_ansi( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/layouts/default/tkl_nofrow_ansi/info.json b/layouts/default/tkl_nofrow_ansi/info.json new file mode 100644 index 000000000000..dfb0fc92b4eb --- /dev/null +++ b/layouts/default/tkl_nofrow_ansi/info.json @@ -0,0 +1,90 @@ +{ + "keyboard_name": "Tenkeyless No F-Row ANSI Layout", + "url": "", + "maintainer": "qmk", + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + {"x":3, "y":0}, + {"x":4, "y":0}, + {"x":5, "y":0}, + {"x":6, "y":0}, + {"x":7, "y":0}, + {"x":8, "y":0}, + {"x":9, "y":0}, + {"x":10, "y":0}, + {"x":11, "y":0}, + {"x":12, "y":0}, + {"x":13, "y":0, "w":2}, + + {"x":15.25, "y":0}, + {"x":16.25, "y":0}, + {"x":17.25, "y":0}, + + {"x":0, "y":1, "w":1.5}, + {"x":1.5, "y":1}, + {"x":2.5, "y":1}, + {"x":3.5, "y":1}, + {"x":4.5, "y":1}, + {"x":5.5, "y":1}, + {"x":6.5, "y":1}, + {"x":7.5, "y":1}, + {"x":8.5, "y":1}, + {"x":9.5, "y":1}, + {"x":10.5, "y":1}, + {"x":11.5, "y":1}, + {"x":12.5, "y":1}, + {"x":13.5, "y":1, "w":1.5}, + + {"x":15.25, "y":1}, + {"x":16.25, "y":1}, + {"x":17.25, "y":1}, + + {"x":0, "y":2, "w":1.75}, + {"x":1.75, "y":2}, + {"x":2.75, "y":2}, + {"x":3.75, "y":2}, + {"x":4.75, "y":2}, + {"x":5.75, "y":2}, + {"x":6.75, "y":2}, + {"x":7.75, "y":2}, + {"x":8.75, "y":2}, + {"x":9.75, "y":2}, + {"x":10.75, "y":2}, + {"x":11.75, "y":2}, + {"x":12.75, "y":2, "w":2.25}, + + {"x":0, "y":3, "w":2.25}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3}, + {"x":5.25, "y":3}, + {"x":6.25, "y":3}, + {"x":7.25, "y":3}, + {"x":8.25, "y":3}, + {"x":9.25, "y":3}, + {"x":10.25, "y":3}, + {"x":11.25, "y":3}, + {"x":12.25, "y":3, "w":2.75}, + + {"x":16.25, "y":3}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4, "w":1.25}, + {"x":2.5, "y":4, "w":1.25}, + {"x":3.75, "y":4, "w":6.25}, + {"x":10, "y":4, "w":1.25}, + {"x":11.25, "y":4, "w":1.25}, + {"x":12.5, "y":4, "w":1.25}, + {"x":13.75, "y":4, "w":1.25}, + + {"x":15.25, "y":4}, + {"x":16.25, "y":4}, + {"x":17.25, "y":4} + ] + } + } +} \ No newline at end of file diff --git a/layouts/default/tkl_nofrow_ansi/layout.json b/layouts/default/tkl_nofrow_ansi/layout.json new file mode 100644 index 000000000000..b8f86b4ac22b --- /dev/null +++ b/layouts/default/tkl_nofrow_ansi/layout.json @@ -0,0 +1,6 @@ +[{a:7},"","","","","","","","","","","","","",{w:2},"",{x:0.25},"","",""], +[{w:1.5},"","","","","","","","","","","","","",{w:1.5},"",{x:0.25},"","",""], +[{w:1.75},"","","","","","","","","","","","",{w:2.25},""], +[{w:2.25},"","","","","","","","","","","",{w:2.75},"",{x:1.25},""], +[{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:6.25},"",{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:1.25},"",{x:0.25},"","",""] + diff --git a/layouts/default/tkl_nofrow_ansi/readme.md b/layouts/default/tkl_nofrow_ansi/readme.md new file mode 100644 index 000000000000..693b1245e626 --- /dev/null +++ b/layouts/default/tkl_nofrow_ansi/readme.md @@ -0,0 +1,3 @@ +# tkl_nofrow_ansi + + LAYOUT_tkl_nofrow_ansi diff --git a/lib/chibios b/lib/chibios index ffe54d63cb10..d7b9d1c87f72 160000 --- a/lib/chibios +++ b/lib/chibios @@ -1 +1 @@ -Subproject commit ffe54d63cb10a355add318f8e922e39f1c3d4bfd +Subproject commit d7b9d1c87f724bd7c8cd1486d6d0dc3ba52e0d52 diff --git a/lib/chibios-contrib b/lib/chibios-contrib index 61baa6b03613..d1c2126d1cd8 160000 --- a/lib/chibios-contrib +++ b/lib/chibios-contrib @@ -1 +1 @@ -Subproject commit 61baa6b036138c155f7cfc5646d833d9423f3243 +Subproject commit d1c2126d1cd867c50127da84425805e225df8555 diff --git a/lib/googletest b/lib/googletest index ec44c6c1675c..e2239ee6043f 160000 --- a/lib/googletest +++ b/lib/googletest @@ -1 +1 @@ -Subproject commit ec44c6c1675c25b9827aacd08c02433cccde7780 +Subproject commit e2239ee6043f73722e7aa812a459f54a28552929 diff --git a/lib/lufa b/lib/lufa index ce10f7642b04..19a5d533f02a 160000 --- a/lib/lufa +++ b/lib/lufa @@ -1 +1 @@ -Subproject commit ce10f7642b0459e409839b23cc91498945119b4d +Subproject commit 19a5d533f02a7b46eeadca99cc9699659cef7a60 diff --git a/lib/python/qmk/c_parse.py b/lib/python/qmk/c_parse.py index 991373d5693a..e7d44a514fa3 100644 --- a/lib/python/qmk/c_parse.py +++ b/lib/python/qmk/c_parse.py @@ -74,7 +74,6 @@ def find_layouts(file): key['matrix'] = matrix_locations[key['label']] parsed_layouts[macro_name] = { - 'key_count': len(parsed_layout), 'layout': parsed_layout, 'filename': str(file), } diff --git a/lib/python/qmk/cli/__init__.py b/lib/python/qmk/cli/__init__.py index 7f5e0a1fa6c8..c51eece95596 100644 --- a/lib/python/qmk/cli/__init__.py +++ b/lib/python/qmk/cli/__init__.py @@ -16,6 +16,7 @@ # A mapping of package name to importable name 'pep8-naming': 'pep8ext_naming', 'pyusb': 'usb.core', + 'qmk-dotty-dict': 'dotty_dict' } safe_commands = [ @@ -30,18 +31,23 @@ subcommands = [ 'qmk.cli.bux', 'qmk.cli.c2json', + 'qmk.cli.cd', 'qmk.cli.cformat', 'qmk.cli.chibios.confmigrate', 'qmk.cli.clean', 'qmk.cli.compile', - 'qmk.cli.console', 'qmk.cli.docs', 'qmk.cli.doctor', 'qmk.cli.fileformat', 'qmk.cli.flash', + 'qmk.cli.format.c', 'qmk.cli.format.json', + '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.develop_pr_list', 'qmk.cli.generate.dfu_header', 'qmk.cli.generate.docs', 'qmk.cli.generate.info_json', @@ -49,12 +55,14 @@ 'qmk.cli.generate.layouts', 'qmk.cli.generate.rgb_breathe_table', 'qmk.cli.generate.rules_mk', + 'qmk.cli.generate.version_h', 'qmk.cli.hello', 'qmk.cli.info', 'qmk.cli.json2c', 'qmk.cli.lint', 'qmk.cli.list.keyboards', 'qmk.cli.list.keymaps', + 'qmk.cli.list.layouts', 'qmk.cli.kle2json', 'qmk.cli.multibuild', 'qmk.cli.new.keyboard', @@ -64,6 +72,26 @@ ] +def _install_deps(requirements): + """Perform the installation of missing requirements. + + If we detect that we are running in a virtualenv we can't write into we'll use sudo to perform the pip install. + """ + command = [sys.executable, '-m', 'pip', 'install'] + + if sys.prefix != sys.base_prefix: + # We are in a virtualenv, check to see if we need to use sudo to write to it + if not os.access(sys.prefix, os.W_OK): + print('Notice: Using sudo to install modules to location owned by root:', sys.prefix) + command.insert(0, 'sudo') + + elif not os.access(sys.prefix, os.W_OK): + # We can't write to sys.prefix, attempt to install locally + command.append('--local') + + return _run_cmd(*command, '-r', requirements) + + def _run_cmd(*command): """Run a command in a subshell. """ @@ -156,8 +184,14 @@ def _broken_module_imports(requirements): print(f'Your MILC library is too old! Please upgrade: python3 -m pip install -U -r {str(requirements)}') exit(127) +# Make sure we can run binaries in the same directory as our Python interpreter +python_dir = os.path.dirname(sys.executable) + +if python_dir not in os.environ['PATH'].split(':'): + os.environ['PATH'] = ":".join((python_dir, os.environ['PATH'])) + # Check to make sure we have all our dependencies -msg_install = 'Please run `python3 -m pip install -r %s` to install required python dependencies.' +msg_install = f'Please run `{sys.executable} -m pip install -r %s` to install required python dependencies.' args = sys.argv[1:] while args and args[0][0] == '-': del args[0] @@ -167,7 +201,7 @@ def _broken_module_imports(requirements): if not safe_command: if _broken_module_imports('requirements.txt'): if yesno('Would you like to install the required Python modules?'): - _run_cmd(sys.executable, '-m', 'pip', 'install', '-r', 'requirements.txt') + _install_deps('requirements.txt') else: print() print(msg_install % (str(Path('requirements.txt').resolve()),)) @@ -176,7 +210,7 @@ def _broken_module_imports(requirements): if cli.config.user.developer and _broken_module_imports('requirements-dev.txt'): if yesno('Would you like to install the required developer Python modules?'): - _run_cmd(sys.executable, '-m', 'pip', 'install', '-r', 'requirements-dev.txt') + _install_deps('requirements-dev.txt') elif yesno('Would you like to disable developer mode?'): _run_cmd(sys.argv[0], 'config', 'user.developer=None') else: diff --git a/lib/python/qmk/cli/cd.py b/lib/python/qmk/cli/cd.py new file mode 100755 index 000000000000..c62c3f56c6b0 --- /dev/null +++ b/lib/python/qmk/cli/cd.py @@ -0,0 +1,46 @@ +"""Open a shell in the QMK Home directory +""" +import sys +import os + +from milc import cli + +from qmk.path import under_qmk_firmware + + +@cli.subcommand('Go to QMK Home') +def cd(cli): + """Go to QMK Home + """ + if not sys.stdout.isatty(): + cli.log.error("This command is for interactive usage only. For non-interactive usage, 'cd $(qmk env QMK_HOME)' is more robust.") + sys.exit(1) + + if not under_qmk_firmware(): + # Only do anything if the user is not under qmk_firmware already + # in order to reduce the possibility of starting multiple shells + cli.log.info("Spawning a subshell in your QMK_HOME directory.") + cli.log.info("Type 'exit' to get back to the parent shell.") + if not cli.platform.lower().startswith('windows'): + # For Linux/Mac/etc + # Check the user's login shell from 'passwd' + # alternatively fall back to $SHELL env var + # and finally to '/bin/bash'. + import getpass + import pwd + shell = pwd.getpwnam(getpass.getuser()).pw_shell + if not shell: + shell = os.environ.get('SHELL', '/bin/bash') + # Start the new subshell + os.execl(shell, shell) + else: + # For Windows + # Check the $SHELL env var + # and fall back to '/usr/bin/bash'. + qmk_env = os.environ.copy() + # Set the prompt for the new shell + qmk_env['MSYS2_PS1'] = qmk_env['PS1'] + # Start the new subshell + cli.run([os.environ.get('SHELL', '/usr/bin/bash')], env=qmk_env) + else: + cli.log.info("Already within qmk_firmware directory.") diff --git a/lib/python/qmk/cli/cformat.py b/lib/python/qmk/cli/cformat.py old mode 100644 new mode 100755 index efeb459676cc..9d0ecaeba3cf --- a/lib/python/qmk/cli/cformat.py +++ b/lib/python/qmk/cli/cformat.py @@ -1,137 +1,28 @@ -"""Format C code according to QMK's style. +"""Point people to the new command name. """ -from os import path -from shutil import which -from subprocess import CalledProcessError, DEVNULL, Popen, PIPE +import sys +from pathlib import Path -from argcomplete.completers import FilesCompleter from milc import cli -from qmk.path import normpath -from qmk.c_parse import c_source_files - -c_file_suffixes = ('c', 'h', 'cpp') -core_dirs = ('drivers', 'quantum', 'tests', 'tmk_core', 'platforms') -ignored = ('tmk_core/protocol/usb_hid', 'quantum/template', 'platforms/chibios') - - -def find_clang_format(): - """Returns the path to clang-format. - """ - for clang_version in range(20, 6, -1): - binary = f'clang-format-{clang_version}' - - if which(binary): - return binary - - return 'clang-format' - - -def find_diffs(files): - """Run clang-format and diff it against a file. - """ - found_diffs = False - - for file in files: - cli.log.debug('Checking for changes in %s', file) - clang_format = Popen([find_clang_format(), file], stdout=PIPE, stderr=PIPE, universal_newlines=True) - diff = cli.run(['diff', '-u', f'--label=a/{file}', f'--label=b/{file}', str(file), '-'], stdin=clang_format.stdout, capture_output=True) - - if diff.returncode != 0: - print(diff.stdout) - found_diffs = True - - return found_diffs - - -def cformat_run(files): - """Spawn clang-format subprocess with proper arguments - """ - # Determine which version of clang-format to use - clang_format = [find_clang_format(), '-i'] - - try: - cli.run([*clang_format, *map(str, files)], check=True, capture_output=False, stdin=DEVNULL) - cli.log.info('Successfully formatted the C code.') - return True - - except CalledProcessError as e: - cli.log.error('Error formatting C code!') - cli.log.debug('%s exited with returncode %s', e.cmd, e.returncode) - cli.log.debug('STDOUT:') - cli.log.debug(e.stdout) - cli.log.debug('STDERR:') - cli.log.debug(e.stderr) - return False - - -def filter_files(files, core_only=False): - """Yield only files to be formatted and skip the rest - """ - if core_only: - # Filter non-core files - for index, file in enumerate(files): - # The following statement checks each file to see if the file path is - # - in the core directories - # - not in the ignored directories - if not any(i in str(file) for i in core_dirs) or any(i in str(file) for i in ignored): - files[index] = None - cli.log.debug("Skipping non-core file %s, as '--core-only' is used.", file) - - for file in files: - if file and file.name.split('.')[-1] in c_file_suffixes: - yield file - else: - cli.log.debug('Skipping file %s', file) - @cli.argument('-n', '--dry-run', arg_only=True, action='store_true', help="Flag only, don't automatically format.") @cli.argument('-b', '--base-branch', default='origin/master', help='Branch to compare to diffs to.') @cli.argument('-a', '--all-files', arg_only=True, action='store_true', help='Format all core files.') @cli.argument('--core-only', arg_only=True, action='store_true', help='Format core files only.') -@cli.argument('files', nargs='*', arg_only=True, type=normpath, completer=FilesCompleter('.c'), help='Filename(s) to format.') -@cli.subcommand("Format C code according to QMK's style.", hidden=False if cli.config.user.developer else True) +@cli.argument('files', nargs='*', arg_only=True, help='Filename(s) to format.') +@cli.subcommand('Pointer to the new command name: qmk format-c.', hidden=True) def cformat(cli): - """Format C code according to QMK's style. + """Pointer to the new command name: qmk format-c. """ - # Find the list of files to format - if cli.args.files: - files = list(filter_files(cli.args.files, cli.args.core_only)) - - if not files: - cli.log.error('No C files in filelist: %s', ', '.join(map(str, cli.args.files))) - exit(0) - - if cli.args.all_files: - cli.log.warning('Filenames passed with -a, only formatting: %s', ','.join(map(str, files))) - - elif cli.args.all_files: - all_files = c_source_files(core_dirs) - files = list(filter_files(all_files, True)) - - else: - git_diff_cmd = ['git', 'diff', '--name-only', cli.args.base_branch, *core_dirs] - git_diff = cli.run(git_diff_cmd, stdin=DEVNULL) - - if git_diff.returncode != 0: - cli.log.error("Error running %s", git_diff_cmd) - print(git_diff.stderr) - return git_diff.returncode - - files = [] - - for file in git_diff.stdout.strip().split('\n'): - if not any([file.startswith(ignore) for ignore in ignored]): - if path.exists(file) and file.split('.')[-1] in c_file_suffixes: - files.append(file) + cli.log.warning('"qmk cformat" has been renamed to "qmk format-c". Please use the new command in the future.') + argv = [sys.executable, *sys.argv] + argv[argv.index('cformat')] = 'format-c' + script_path = Path(argv[1]) + script_path_exe = Path(f'{argv[1]}.exe') - # Sanity check - if not files: - cli.log.error('No changed files detected. Use "qmk cformat -a" to format all core files') - return False + if not script_path.exists() and script_path_exe.exists(): + # For reasons I don't understand ".exe" is stripped from the script name on windows. + argv[1] = str(script_path_exe) - # Run clang-format on the files we've found - if cli.args.dry_run: - return not find_diffs(files) - else: - return cformat_run(files) + return cli.run(argv, capture_output=False).returncode diff --git a/lib/python/qmk/cli/compile.py b/lib/python/qmk/cli/compile.py index 7a45e77214b0..acbd77864986 100755 --- a/lib/python/qmk/cli/compile.py +++ b/lib/python/qmk/cli/compile.py @@ -18,7 +18,7 @@ @cli.argument('-kb', '--keyboard', type=keyboard_folder, completer=keyboard_completer, help='The keyboard to build a firmware for. Ignored when a configurator export is supplied.') @cli.argument('-km', '--keymap', completer=keymap_completer, help='The keymap to build a firmware for. Ignored when a configurator export is supplied.') @cli.argument('-n', '--dry-run', arg_only=True, action='store_true', help="Don't actually build, just show the make command to be run.") -@cli.argument('-j', '--parallel', type=int, default=1, help="Set the number of parallel make jobs to run.") +@cli.argument('-j', '--parallel', type=int, default=1, help="Set the number of parallel make jobs; 0 means unlimited.") @cli.argument('-e', '--env', arg_only=True, action='append', default=[], help="Set a variable to be passed to make. May be passed multiple times.") @cli.argument('-c', '--clean', arg_only=True, action='store_true', help="Remove object files before compiling.") @cli.subcommand('Compile a QMK Firmware.') diff --git a/lib/python/qmk/cli/console.py b/lib/python/qmk/cli/console.py deleted file mode 100644 index 45ff0c8bee11..000000000000 --- a/lib/python/qmk/cli/console.py +++ /dev/null @@ -1,302 +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'): 'USBasp: 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', - ('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' -} - - -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 :[:].') -@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 ":[:]" 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/docs.py b/lib/python/qmk/cli/docs.py index 581610650408..c24b914bc13f 100644 --- a/lib/python/qmk/cli/docs.py +++ b/lib/python/qmk/cli/docs.py @@ -2,24 +2,43 @@ """ import http.server import os +import shutil +import webbrowser from milc import cli @cli.argument('-p', '--port', default=8936, type=int, help='Port number to use.') +@cli.argument('-b', '--browser', action='store_true', help='Open the docs in the default browser.') @cli.subcommand('Run a local webserver for QMK documentation.', hidden=False if cli.config.user.developer else True) def docs(cli): - """Spin up a local HTTPServer instance for the QMK docs. + """Spin up a local HTTP server for the QMK docs. """ os.chdir('docs') - with http.server.HTTPServer(('', cli.config.docs.port), http.server.SimpleHTTPRequestHandler) as httpd: - cli.log.info("Serving QMK docs at http://localhost:%d/", cli.config.docs.port) + # If docsify-cli is installed, run that instead so we get live reload + if shutil.which('docsify'): + command = ['docsify', 'serve', '--port', f'{cli.config.docs.port}', '--open' if cli.config.docs.browser else ''] + + cli.log.info(f"Running {{fg_cyan}}{str.join(' ', command)}{{fg_reset}}") cli.log.info("Press Control+C to exit.") try: - httpd.serve_forever() + cli.run(command, capture_output=False) except KeyboardInterrupt: cli.log.info("Stopping HTTP server...") - finally: - httpd.shutdown() + else: + # Fall back to Python HTTPServer + with http.server.HTTPServer(('', cli.config.docs.port), http.server.SimpleHTTPRequestHandler) as httpd: + cli.log.info(f"Serving QMK docs at http://localhost:{cli.config.docs.port}/") + cli.log.info("Press Control+C to exit.") + + if cli.config.docs.browser: + webbrowser.open(f'http://localhost:{cli.config.docs.port}') + + try: + httpd.serve_forever() + except KeyboardInterrupt: + cli.log.info("Stopping HTTP server...") + finally: + httpd.shutdown() diff --git a/lib/python/qmk/cli/doctor.py b/lib/python/qmk/cli/doctor.py deleted file mode 100755 index 9e1057062073..000000000000 --- a/lib/python/qmk/cli/doctor.py +++ /dev/null @@ -1,136 +0,0 @@ -"""QMK Doctor - -Check out the user's QMK environment and make sure it's ready to compile. -""" -import platform -from subprocess import DEVNULL - -from milc import cli -from milc.questions import yesno -from qmk import submodules -from qmk.constants import QMK_FIRMWARE -from qmk.os_helpers import CheckStatus, check_binaries, check_binary_versions, check_submodules, check_git_repo - - -def os_tests(): - """Determine our OS and run platform specific tests - """ - platform_id = platform.platform().lower() - - if 'darwin' in platform_id or 'macos' in platform_id: - return os_test_macos() - elif 'linux' in platform_id: - return os_test_linux() - elif 'windows' in platform_id: - return os_test_windows() - else: - cli.log.warning('Unsupported OS detected: %s', platform_id) - return CheckStatus.WARNING - - -def os_test_linux(): - """Run the Linux specific tests. - """ - # Don't bother with udev on WSL, for now - if 'microsoft' in platform.uname().release.lower(): - cli.log.info("Detected {fg_cyan}Linux (WSL){fg_reset}.") - - # https://github.com/microsoft/WSL/issues/4197 - if QMK_FIRMWARE.as_posix().startswith("/mnt"): - cli.log.warning("I/O performance on /mnt may be extremely slow.") - return CheckStatus.WARNING - - return CheckStatus.OK - else: - cli.log.info("Detected {fg_cyan}Linux{fg_reset}.") - from qmk.os_helpers.linux import check_udev_rules - - return check_udev_rules() - - -def os_test_macos(): - """Run the Mac specific tests. - """ - cli.log.info("Detected {fg_cyan}macOS %s{fg_reset}.", platform.mac_ver()[0]) - - return CheckStatus.OK - - -def os_test_windows(): - """Run the Windows specific tests. - """ - win32_ver = platform.win32_ver() - cli.log.info("Detected {fg_cyan}Windows %s (%s){fg_reset}.", win32_ver[0], win32_ver[1]) - - return CheckStatus.OK - - -@cli.argument('-y', '--yes', action='store_true', arg_only=True, help='Answer yes to all questions.') -@cli.argument('-n', '--no', action='store_true', arg_only=True, help='Answer no to all questions.') -@cli.subcommand('Basic QMK environment checks') -def doctor(cli): - """Basic QMK environment checks. - - This is currently very simple, it just checks that all the expected binaries are on your system. - - TODO(unclaimed): - * [ ] Compile a trivial program with each compiler - """ - cli.log.info('QMK Doctor is checking your environment.') - cli.log.info('QMK home: {fg_cyan}%s', QMK_FIRMWARE) - - status = os_tests() - - # Make sure our QMK home is a Git repo - git_ok = check_git_repo() - - if git_ok == CheckStatus.WARNING: - cli.log.warning("QMK home does not appear to be a Git repository! (no .git folder)") - status = CheckStatus.WARNING - - # Make sure the basic CLI tools we need are available and can be executed. - bin_ok = check_binaries() - - if not bin_ok: - if yesno('Would you like to install dependencies?', default=True): - cli.run(['util/qmk_install.sh', '-y'], stdin=DEVNULL, capture_output=False) - bin_ok = check_binaries() - - if bin_ok: - cli.log.info('All dependencies are installed.') - else: - status = CheckStatus.ERROR - - # Make sure the tools are at the correct version - ver_ok = check_binary_versions() - if CheckStatus.ERROR in ver_ok: - status = CheckStatus.ERROR - elif CheckStatus.WARNING in ver_ok and status == CheckStatus.OK: - status = CheckStatus.WARNING - - # Check out the QMK submodules - sub_ok = check_submodules() - - if sub_ok == CheckStatus.OK: - cli.log.info('Submodules are up to date.') - else: - if yesno('Would you like to clone the submodules?', default=True): - submodules.update() - sub_ok = check_submodules() - - if sub_ok == CheckStatus.ERROR: - status = CheckStatus.ERROR - elif sub_ok == CheckStatus.WARNING and status == CheckStatus.OK: - status = CheckStatus.WARNING - - # Report a summary of our findings to the user - if status == CheckStatus.OK: - cli.log.info('{fg_green}QMK is ready to go') - return 0 - elif status == CheckStatus.WARNING: - cli.log.info('{fg_yellow}QMK is ready to go, but minor problems were found') - return 1 - else: - cli.log.info('{fg_red}Major problems detected, please fix these problems before proceeding.') - cli.log.info('{fg_blue}Check out the FAQ (https://docs.qmk.fm/#/faq_build) or join the QMK Discord (https://discord.gg/Uq7gcHh) for help.') - return 2 diff --git a/lib/python/qmk/cli/doctor/__init__.py b/lib/python/qmk/cli/doctor/__init__.py new file mode 100755 index 000000000000..272e042023c5 --- /dev/null +++ b/lib/python/qmk/cli/doctor/__init__.py @@ -0,0 +1,5 @@ +"""QMK Doctor + +Check out the user's QMK environment and make sure it's ready to compile. +""" +from .main import doctor diff --git a/lib/python/qmk/cli/doctor/check.py b/lib/python/qmk/cli/doctor/check.py new file mode 100644 index 000000000000..2d691b64b050 --- /dev/null +++ b/lib/python/qmk/cli/doctor/check.py @@ -0,0 +1,163 @@ +"""Check for specific programs. +""" +from enum import Enum +import re +import shutil +from subprocess import DEVNULL + +from milc import cli +from qmk import submodules +from qmk.constants import QMK_FIRMWARE + + +class CheckStatus(Enum): + OK = 1 + WARNING = 2 + ERROR = 3 + + +ESSENTIAL_BINARIES = { + 'dfu-programmer': {}, + 'avrdude': {}, + 'dfu-util': {}, + 'avr-gcc': { + 'version_arg': '-dumpversion' + }, + 'arm-none-eabi-gcc': { + 'version_arg': '-dumpversion' + }, +} + + +def _parse_gcc_version(version): + m = re.match(r"(\d+)(?:\.(\d+))?(?:\.(\d+))?", version) + + return { + 'major': int(m.group(1)), + 'minor': int(m.group(2)) if m.group(2) else 0, + 'patch': int(m.group(3)) if m.group(3) else 0, + } + + +def _check_arm_gcc_version(): + """Returns True if the arm-none-eabi-gcc version is not known to cause problems. + """ + if 'output' in ESSENTIAL_BINARIES['arm-none-eabi-gcc']: + version_number = ESSENTIAL_BINARIES['arm-none-eabi-gcc']['output'].strip() + cli.log.info('Found arm-none-eabi-gcc version %s', version_number) + + return CheckStatus.OK # Right now all known arm versions are ok + + +def _check_avr_gcc_version(): + """Returns True if the avr-gcc version is not known to cause problems. + """ + rc = CheckStatus.ERROR + if 'output' in ESSENTIAL_BINARIES['avr-gcc']: + version_number = ESSENTIAL_BINARIES['avr-gcc']['output'].strip() + + cli.log.info('Found avr-gcc version %s', version_number) + rc = CheckStatus.OK + + parsed_version = _parse_gcc_version(version_number) + if parsed_version['major'] > 8: + cli.log.warning('{fg_yellow}We do not recommend avr-gcc newer than 8. Downgrading to 8.x is recommended.') + rc = CheckStatus.WARNING + + return rc + + +def _check_avrdude_version(): + if 'output' in ESSENTIAL_BINARIES['avrdude']: + last_line = ESSENTIAL_BINARIES['avrdude']['output'].split('\n')[-2] + version_number = last_line.split()[2][:-1] + cli.log.info('Found avrdude version %s', version_number) + + return CheckStatus.OK + + +def _check_dfu_util_version(): + if 'output' in ESSENTIAL_BINARIES['dfu-util']: + first_line = ESSENTIAL_BINARIES['dfu-util']['output'].split('\n')[0] + version_number = first_line.split()[1] + cli.log.info('Found dfu-util version %s', version_number) + + return CheckStatus.OK + + +def _check_dfu_programmer_version(): + if 'output' in ESSENTIAL_BINARIES['dfu-programmer']: + first_line = ESSENTIAL_BINARIES['dfu-programmer']['output'].split('\n')[0] + version_number = first_line.split()[1] + cli.log.info('Found dfu-programmer version %s', version_number) + + return CheckStatus.OK + + +def check_binaries(): + """Iterates through ESSENTIAL_BINARIES and tests them. + """ + ok = True + + for binary in sorted(ESSENTIAL_BINARIES): + if not is_executable(binary): + ok = False + + return ok + + +def check_binary_versions(): + """Check the versions of ESSENTIAL_BINARIES + """ + versions = [] + for check in (_check_arm_gcc_version, _check_avr_gcc_version, _check_avrdude_version, _check_dfu_util_version, _check_dfu_programmer_version): + versions.append(check()) + return versions + + +def check_submodules(): + """Iterates through all submodules to make sure they're cloned and up to date. + """ + for submodule in submodules.status().values(): + if submodule['status'] is None: + cli.log.error('Submodule %s has not yet been cloned!', submodule['name']) + return CheckStatus.ERROR + elif not submodule['status']: + cli.log.warning('Submodule %s is not up to date!', submodule['name']) + return CheckStatus.WARNING + + return CheckStatus.OK + + +def is_executable(command): + """Returns True if command exists and can be executed. + """ + # Make sure the command is in the path. + res = shutil.which(command) + if res is None: + cli.log.error("{fg_red}Can't find %s in your path.", command) + return False + + # Make sure the command can be executed + version_arg = ESSENTIAL_BINARIES[command].get('version_arg', '--version') + check = cli.run([command, version_arg], combined_output=True, stdin=DEVNULL, timeout=5) + + ESSENTIAL_BINARIES[command]['output'] = check.stdout + + if check.returncode in [0, 1]: # Older versions of dfu-programmer exit 1 + cli.log.debug('Found {fg_cyan}%s', command) + return True + + cli.log.error("{fg_red}Can't run `%s %s`", command, version_arg) + return False + + +def check_git_repo(): + """Checks that the .git directory exists inside QMK_HOME. + + This is a decent enough indicator that the qmk_firmware directory is a + proper Git repository, rather than a .zip download from GitHub. + """ + dot_git = QMK_FIRMWARE / '.git' + + return CheckStatus.OK if dot_git.exists() else CheckStatus.WARNING diff --git a/lib/python/qmk/cli/doctor/linux.py b/lib/python/qmk/cli/doctor/linux.py new file mode 100644 index 000000000000..94683d3307af --- /dev/null +++ b/lib/python/qmk/cli/doctor/linux.py @@ -0,0 +1,170 @@ +"""OS-specific functions for: Linux +""" +import platform +import shutil +from pathlib import Path + +from milc import cli + +from qmk.constants import QMK_FIRMWARE +from .check import CheckStatus + + +def _udev_rule(vid, pid=None, *args): + """ Helper function that return udev rules + """ + rule = "" + if pid: + rule = 'SUBSYSTEMS=="usb", ATTRS{idVendor}=="%s", ATTRS{idProduct}=="%s", TAG+="uaccess"' % ( + vid, + pid, + ) + else: + rule = 'SUBSYSTEMS=="usb", ATTRS{idVendor}=="%s", TAG+="uaccess"' % vid + if args: + rule = ', '.join([rule, *args]) + return rule + + +def _deprecated_udev_rule(vid, pid=None): + """ Helper function that return udev rules + + Note: these are no longer the recommended rules, this is just used to check for them + """ + if pid: + return 'SUBSYSTEMS=="usb", ATTRS{idVendor}=="%s", ATTRS{idProduct}=="%s", MODE:="0666"' % (vid, pid) + else: + return 'SUBSYSTEMS=="usb", ATTRS{idVendor}=="%s", MODE:="0666"' % vid + + +def check_udev_rules(): + """Make sure the udev rules look good. + """ + rc = CheckStatus.OK + udev_dirs = [ + Path("/usr/lib/udev/rules.d/"), + Path("/usr/local/lib/udev/rules.d/"), + Path("/run/udev/rules.d/"), + Path("/etc/udev/rules.d/"), + ] + desired_rules = { + 'atmel-dfu': { + _udev_rule("03eb", "2fef"), # ATmega16U2 + _udev_rule("03eb", "2ff0"), # ATmega32U2 + _udev_rule("03eb", "2ff3"), # ATmega16U4 + _udev_rule("03eb", "2ff4"), # ATmega32U4 + _udev_rule("03eb", "2ff9"), # AT90USB64 + _udev_rule("03eb", "2ffa"), # AT90USB162 + _udev_rule("03eb", "2ffb") # AT90USB128 + }, + 'kiibohd': {_udev_rule("1c11", "b007")}, + 'stm32': { + _udev_rule("1eaf", "0003"), # STM32duino + _udev_rule("0483", "df11") # STM32 DFU + }, + 'bootloadhid': {_udev_rule("16c0", "05df")}, + 'usbasploader': {_udev_rule("16c0", "05dc")}, + 'massdrop': {_udev_rule("03eb", "6124", 'ENV{ID_MM_DEVICE_IGNORE}="1"')}, + 'caterina': { + # Spark Fun Electronics + _udev_rule("1b4f", "9203", 'ENV{ID_MM_DEVICE_IGNORE}="1"'), # Pro Micro 3V3/8MHz + _udev_rule("1b4f", "9205", 'ENV{ID_MM_DEVICE_IGNORE}="1"'), # Pro Micro 5V/16MHz + _udev_rule("1b4f", "9207", 'ENV{ID_MM_DEVICE_IGNORE}="1"'), # LilyPad 3V3/8MHz (and some Pro Micro clones) + # Pololu Electronics + _udev_rule("1ffb", "0101", 'ENV{ID_MM_DEVICE_IGNORE}="1"'), # A-Star 32U4 + # Arduino SA + _udev_rule("2341", "0036", 'ENV{ID_MM_DEVICE_IGNORE}="1"'), # Leonardo + _udev_rule("2341", "0037", 'ENV{ID_MM_DEVICE_IGNORE}="1"'), # Micro + # Adafruit Industries LLC + _udev_rule("239a", "000c", 'ENV{ID_MM_DEVICE_IGNORE}="1"'), # Feather 32U4 + _udev_rule("239a", "000d", 'ENV{ID_MM_DEVICE_IGNORE}="1"'), # ItsyBitsy 32U4 3V3/8MHz + _udev_rule("239a", "000e", 'ENV{ID_MM_DEVICE_IGNORE}="1"'), # ItsyBitsy 32U4 5V/16MHz + # dog hunter AG + _udev_rule("2a03", "0036", 'ENV{ID_MM_DEVICE_IGNORE}="1"'), # Leonardo + _udev_rule("2a03", "0037", 'ENV{ID_MM_DEVICE_IGNORE}="1"') # Micro + }, + 'hid-bootloader': { + _udev_rule("03eb", "2067"), # QMK HID + _udev_rule("16c0", "0478") # PJRC halfkay + } + } + + # These rules are no longer recommended, only use them to check for their presence. + deprecated_rules = { + 'atmel-dfu': {_deprecated_udev_rule("03eb", "2ff4"), _deprecated_udev_rule("03eb", "2ffb"), _deprecated_udev_rule("03eb", "2ff0")}, + 'kiibohd': {_deprecated_udev_rule("1c11")}, + 'stm32': {_deprecated_udev_rule("1eaf", "0003"), _deprecated_udev_rule("0483", "df11")}, + 'bootloadhid': {_deprecated_udev_rule("16c0", "05df")}, + 'caterina': {'ATTRS{idVendor}=="2a03", ENV{ID_MM_DEVICE_IGNORE}="1"', 'ATTRS{idVendor}=="2341", ENV{ID_MM_DEVICE_IGNORE}="1"'}, + 'tmk': {_deprecated_udev_rule("feed")} + } + + if any(udev_dir.exists() for udev_dir in udev_dirs): + udev_rules = [rule_file for udev_dir in udev_dirs for rule_file in udev_dir.glob('*.rules')] + current_rules = set() + + # Collect all rules from the config files + for rule_file in udev_rules: + for line in rule_file.read_text(encoding='utf-8').split('\n'): + line = line.strip() + if not line.startswith("#") and len(line): + current_rules.add(line) + + # Check if the desired rules are among the currently present rules + for bootloader, rules in desired_rules.items(): + if not rules.issubset(current_rules): + deprecated_rule = deprecated_rules.get(bootloader) + if deprecated_rule and deprecated_rule.issubset(current_rules): + cli.log.warning("{fg_yellow}Found old, deprecated udev rules for '%s' boards. The new rules on https://docs.qmk.fm/#/faq_build?id=linux-udev-rules offer better security with the same functionality.", bootloader) + else: + # For caterina, check if ModemManager is running + if bootloader == "caterina" and check_modem_manager(): + cli.log.warning("{fg_yellow}Detected ModemManager without the necessary udev rules. Please either disable it or set the appropriate udev rules if you are using a Pro Micro.") + + rc = CheckStatus.WARNING + cli.log.warning("{fg_yellow}Missing or outdated udev rules for '%s' boards. Run 'sudo cp %s/util/udev/50-qmk.rules /etc/udev/rules.d/'.", bootloader, QMK_FIRMWARE) + + else: + cli.log.warning("{fg_yellow}Can't find udev rules, skipping udev rule checking...") + cli.log.debug("Checked directories: %s", ', '.join(str(udev_dir) for udev_dir in udev_dirs)) + + return rc + + +def check_systemd(): + """Check if it's a systemd system + """ + return bool(shutil.which("systemctl")) + + +def check_modem_manager(): + """Returns True if ModemManager is running. + + """ + if check_systemd(): + mm_check = cli.run(["systemctl", "--quiet", "is-active", "ModemManager.service"], timeout=10) + if mm_check.returncode == 0: + return True + else: + """(TODO): Add check for non-systemd systems + """ + return False + + +def os_test_linux(): + """Run the Linux specific tests. + """ + # Don't bother with udev on WSL, for now + if 'microsoft' in platform.uname().release.lower(): + cli.log.info("Detected {fg_cyan}Linux (WSL){fg_reset}.") + + # https://github.com/microsoft/WSL/issues/4197 + if QMK_FIRMWARE.as_posix().startswith("/mnt"): + cli.log.warning("I/O performance on /mnt may be extremely slow.") + return CheckStatus.WARNING + + return CheckStatus.OK + else: + cli.log.info("Detected {fg_cyan}Linux{fg_reset}.") + + return check_udev_rules() diff --git a/lib/python/qmk/cli/doctor/macos.py b/lib/python/qmk/cli/doctor/macos.py new file mode 100644 index 000000000000..00fb272858b2 --- /dev/null +++ b/lib/python/qmk/cli/doctor/macos.py @@ -0,0 +1,13 @@ +import platform + +from milc import cli + +from .check import CheckStatus + + +def os_test_macos(): + """Run the Mac specific tests. + """ + cli.log.info("Detected {fg_cyan}macOS %s{fg_reset}.", platform.mac_ver()[0]) + + return CheckStatus.OK diff --git a/lib/python/qmk/cli/doctor/main.py b/lib/python/qmk/cli/doctor/main.py new file mode 100755 index 000000000000..ed20f46d3f7f --- /dev/null +++ b/lib/python/qmk/cli/doctor/main.py @@ -0,0 +1,136 @@ +"""QMK Doctor + +Check out the user's QMK environment and make sure it's ready to compile. +""" +import platform +from subprocess import DEVNULL + +from milc import cli +from milc.questions import yesno + +from qmk import submodules +from qmk.constants import QMK_FIRMWARE, QMK_FIRMWARE_UPSTREAM +from .check import CheckStatus, check_binaries, check_binary_versions, check_submodules +from qmk.commands import git_check_repo, git_get_branch, git_is_dirty, git_get_remotes, git_check_deviation, in_virtualenv + + +def os_tests(): + """Determine our OS and run platform specific tests + """ + platform_id = platform.platform().lower() + + if 'darwin' in platform_id or 'macos' in platform_id: + from .macos import os_test_macos + return os_test_macos() + elif 'linux' in platform_id: + from .linux import os_test_linux + return os_test_linux() + elif 'windows' in platform_id: + from .windows import os_test_windows + return os_test_windows() + else: + cli.log.warning('Unsupported OS detected: %s', platform_id) + return CheckStatus.WARNING + + +def git_tests(): + """Run Git-related checks + """ + status = CheckStatus.OK + + # Make sure our QMK home is a Git repo + git_ok = git_check_repo() + if not git_ok: + cli.log.warning("{fg_yellow}QMK home does not appear to be a Git repository! (no .git folder)") + status = CheckStatus.WARNING + else: + git_branch = git_get_branch() + if git_branch: + cli.log.info('Git branch: %s', git_branch) + git_dirty = git_is_dirty() + if git_dirty: + cli.log.warning('{fg_yellow}Git has unstashed/uncommitted changes.') + status = CheckStatus.WARNING + git_remotes = git_get_remotes() + if 'upstream' not in git_remotes.keys() or QMK_FIRMWARE_UPSTREAM not in git_remotes['upstream'].get('url', ''): + cli.log.warning('{fg_yellow}The official repository does not seem to be configured as git remote "upstream".') + status = CheckStatus.WARNING + else: + git_deviation = git_check_deviation(git_branch) + if git_branch in ['master', 'develop'] and git_deviation: + cli.log.warning('{fg_yellow}The local "%s" branch contains commits not found in the upstream branch.', git_branch) + status = CheckStatus.WARNING + + return status + + +@cli.argument('-y', '--yes', action='store_true', arg_only=True, help='Answer yes to all questions.') +@cli.argument('-n', '--no', action='store_true', arg_only=True, help='Answer no to all questions.') +@cli.subcommand('Basic QMK environment checks') +def doctor(cli): + """Basic QMK environment checks. + + This is currently very simple, it just checks that all the expected binaries are on your system. + + TODO(unclaimed): + * [ ] Compile a trivial program with each compiler + """ + cli.log.info('QMK Doctor is checking your environment.') + cli.log.info('CLI version: %s', cli.version) + cli.log.info('QMK home: {fg_cyan}%s', QMK_FIRMWARE) + + status = os_status = os_tests() + git_status = git_tests() + + if git_status == CheckStatus.ERROR or (os_status == CheckStatus.OK and git_status == CheckStatus.WARNING): + status = git_status + + if in_virtualenv(): + cli.log.info('CLI installed in virtualenv.') + + # Make sure the basic CLI tools we need are available and can be executed. + bin_ok = check_binaries() + + if not bin_ok: + if yesno('Would you like to install dependencies?', default=True): + cli.run(['util/qmk_install.sh', '-y'], stdin=DEVNULL, capture_output=False) + bin_ok = check_binaries() + + if bin_ok: + cli.log.info('All dependencies are installed.') + else: + status = CheckStatus.ERROR + + # Make sure the tools are at the correct version + ver_ok = check_binary_versions() + if CheckStatus.ERROR in ver_ok: + status = CheckStatus.ERROR + elif CheckStatus.WARNING in ver_ok and status == CheckStatus.OK: + status = CheckStatus.WARNING + + # Check out the QMK submodules + sub_ok = check_submodules() + + if sub_ok == CheckStatus.OK: + cli.log.info('Submodules are up to date.') + else: + if yesno('Would you like to clone the submodules?', default=True): + submodules.update() + sub_ok = check_submodules() + + if sub_ok == CheckStatus.ERROR: + status = CheckStatus.ERROR + elif sub_ok == CheckStatus.WARNING and status == CheckStatus.OK: + status = CheckStatus.WARNING + + # Report a summary of our findings to the user + if status == CheckStatus.OK: + cli.log.info('{fg_green}QMK is ready to go') + return 0 + elif status == CheckStatus.WARNING: + cli.log.info('{fg_yellow}QMK is ready to go, but minor problems were found') + return 1 + else: + cli.log.info('{fg_red}Major problems detected, please fix these problems before proceeding.') + cli.log.info('{fg_blue}Check out the FAQ (https://docs.qmk.fm/#/faq_build) or join the QMK Discord (https://discord.gg/Uq7gcHh) for help.') + return 2 diff --git a/lib/python/qmk/cli/doctor/windows.py b/lib/python/qmk/cli/doctor/windows.py new file mode 100644 index 000000000000..381ab36fde96 --- /dev/null +++ b/lib/python/qmk/cli/doctor/windows.py @@ -0,0 +1,14 @@ +import platform + +from milc import cli + +from .check import CheckStatus + + +def os_test_windows(): + """Run the Windows specific tests. + """ + win32_ver = platform.win32_ver() + cli.log.info("Detected {fg_cyan}Windows %s (%s){fg_reset}.", win32_ver[0], win32_ver[1]) + + return CheckStatus.OK diff --git a/lib/python/qmk/cli/fileformat.py b/lib/python/qmk/cli/fileformat.py old mode 100644 new mode 100755 index 112d8d59da9c..cee4ba1acdad --- a/lib/python/qmk/cli/fileformat.py +++ b/lib/python/qmk/cli/fileformat.py @@ -1,13 +1,23 @@ -"""Format files according to QMK's style. +"""Point people to the new command name. """ -from milc import cli +import sys +from pathlib import Path -import subprocess +from milc import cli -@cli.subcommand("Format files according to QMK's style.", hidden=True) +@cli.subcommand('Pointer to the new command name: qmk format-text.', hidden=True) def fileformat(cli): - """Run several general formatting commands. + """Pointer to the new command name: qmk format-text. """ - dos2unix = subprocess.run(['bash', '-c', 'git ls-files -z | xargs -0 dos2unix'], stdout=subprocess.DEVNULL) - return dos2unix.returncode + cli.log.warning('"qmk fileformat" has been renamed to "qmk format-text". Please use the new command in the future.') + argv = [sys.executable, *sys.argv] + argv[argv.index('fileformat')] = 'format-text' + script_path = Path(argv[1]) + script_path_exe = Path(f'{argv[1]}.exe') + + if not script_path.exists() and script_path_exe.exists(): + # For reasons I don't understand ".exe" is stripped from the script name on windows. + argv[1] = str(script_path_exe) + + return cli.run(argv, capture_output=False).returncode diff --git a/lib/python/qmk/cli/flash.py b/lib/python/qmk/cli/flash.py index 1b2932a5b27e..28e48a410159 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') @@ -38,7 +42,7 @@ def print_bootloader_help(): @cli.argument('-km', '--keymap', help='The keymap to build a firmware for. Use this if you dont have a configurator file. Ignored when a configurator file is supplied.') @cli.argument('-kb', '--keyboard', type=keyboard_folder, completer=keyboard_completer, help='The keyboard to build a firmware for. Use this if you dont have a configurator file. Ignored when a configurator file is supplied.') @cli.argument('-n', '--dry-run', arg_only=True, action='store_true', help="Don't actually build, just show the make command to be run.") -@cli.argument('-j', '--parallel', type=int, default=1, help="Set the number of parallel make jobs to run.") +@cli.argument('-j', '--parallel', type=int, default=1, help="Set the number of parallel make jobs; 0 means unlimited.") @cli.argument('-e', '--env', arg_only=True, action='append', default=[], help="Set a variable to be passed to make. May be passed multiple times.") @cli.argument('-c', '--clean', arg_only=True, action='store_true', help="Remove object files before compiling.") @cli.subcommand('QMK Flash.') diff --git a/lib/python/qmk/cli/format/c.py b/lib/python/qmk/cli/format/c.py new file mode 100644 index 000000000000..568684ed56b8 --- /dev/null +++ b/lib/python/qmk/cli/format/c.py @@ -0,0 +1,137 @@ +"""Format C code according to QMK's style. +""" +from os import path +from shutil import which +from subprocess import CalledProcessError, DEVNULL, Popen, PIPE + +from argcomplete.completers import FilesCompleter +from milc import cli + +from qmk.path import normpath +from qmk.c_parse import c_source_files + +c_file_suffixes = ('c', 'h', 'cpp') +core_dirs = ('drivers', 'quantum', 'tests', 'tmk_core', 'platforms') +ignored = ('tmk_core/protocol/usb_hid', 'platforms/chibios/boards') + + +def find_clang_format(): + """Returns the path to clang-format. + """ + for clang_version in range(20, 6, -1): + binary = f'clang-format-{clang_version}' + + if which(binary): + return binary + + return 'clang-format' + + +def find_diffs(files): + """Run clang-format and diff it against a file. + """ + found_diffs = False + + for file in files: + cli.log.debug('Checking for changes in %s', file) + clang_format = Popen([find_clang_format(), file], stdout=PIPE, stderr=PIPE, universal_newlines=True) + diff = cli.run(['diff', '-u', f'--label=a/{file}', f'--label=b/{file}', str(file), '-'], stdin=clang_format.stdout, capture_output=True) + + if diff.returncode != 0: + print(diff.stdout) + found_diffs = True + + return found_diffs + + +def cformat_run(files): + """Spawn clang-format subprocess with proper arguments + """ + # Determine which version of clang-format to use + clang_format = [find_clang_format(), '-i'] + + try: + cli.run([*clang_format, *map(str, files)], check=True, capture_output=False, stdin=DEVNULL) + cli.log.info('Successfully formatted the C code.') + return True + + except CalledProcessError as e: + cli.log.error('Error formatting C code!') + cli.log.debug('%s exited with returncode %s', e.cmd, e.returncode) + cli.log.debug('STDOUT:') + cli.log.debug(e.stdout) + cli.log.debug('STDERR:') + cli.log.debug(e.stderr) + return False + + +def filter_files(files, core_only=False): + """Yield only files to be formatted and skip the rest + """ + if core_only: + # Filter non-core files + for index, file in enumerate(files): + # The following statement checks each file to see if the file path is + # - in the core directories + # - not in the ignored directories + if not any(str(file).startswith(i) for i in core_dirs) or any(str(file).startswith(i) for i in ignored): + files[index] = None + cli.log.debug("Skipping non-core file %s, as '--core-only' is used.", file) + + for file in files: + if file and file.name.split('.')[-1] in c_file_suffixes: + yield file + else: + cli.log.debug('Skipping file %s', file) + + +@cli.argument('-n', '--dry-run', arg_only=True, action='store_true', help="Flag only, don't automatically format.") +@cli.argument('-b', '--base-branch', default='origin/master', help='Branch to compare to diffs to.') +@cli.argument('-a', '--all-files', arg_only=True, action='store_true', help='Format all core files.') +@cli.argument('--core-only', arg_only=True, action='store_true', help='Format core files only.') +@cli.argument('files', nargs='*', arg_only=True, type=normpath, completer=FilesCompleter('.c'), help='Filename(s) to format.') +@cli.subcommand("Format C code according to QMK's style.", hidden=False if cli.config.user.developer else True) +def format_c(cli): + """Format C code according to QMK's style. + """ + # Find the list of files to format + if cli.args.files: + files = list(filter_files(cli.args.files, cli.args.core_only)) + + if not files: + cli.log.error('No C files in filelist: %s', ', '.join(map(str, cli.args.files))) + exit(0) + + if cli.args.all_files: + cli.log.warning('Filenames passed with -a, only formatting: %s', ','.join(map(str, files))) + + elif cli.args.all_files: + all_files = c_source_files(core_dirs) + files = list(filter_files(all_files, True)) + + else: + git_diff_cmd = ['git', 'diff', '--name-only', cli.args.base_branch, *core_dirs] + git_diff = cli.run(git_diff_cmd, stdin=DEVNULL) + + if git_diff.returncode != 0: + cli.log.error("Error running %s", git_diff_cmd) + print(git_diff.stderr) + return git_diff.returncode + + files = [] + + for file in git_diff.stdout.strip().split('\n'): + if not any([file.startswith(ignore) for ignore in ignored]): + if path.exists(file) and file.split('.')[-1] in c_file_suffixes: + files.append(file) + + # Sanity check + if not files: + cli.log.error('No changed files detected. Use "qmk format-c -a" to format all core files') + return False + + # Run clang-format on the files we've found + if cli.args.dry_run: + return not find_diffs(files) + else: + return cformat_run(files) diff --git a/lib/python/qmk/cli/format/json.py b/lib/python/qmk/cli/format/json.py index 1358c70e7a51..19d504491f12 100755 --- a/lib/python/qmk/cli/format/json.py +++ b/lib/python/qmk/cli/format/json.py @@ -8,7 +8,7 @@ from milc import cli from qmk.info import info_json -from qmk.json_schema import json_load, keyboard_validate +from qmk.json_schema import json_load, validate from qmk.json_encoders import InfoJSONEncoder, KeymapJSONEncoder from qmk.path import normpath @@ -23,14 +23,13 @@ def format_json(cli): if cli.args.format == 'auto': try: - keyboard_validate(json_file) + validate(json_file, 'qmk.keyboard.v1') json_encoder = InfoJSONEncoder except ValidationError as e: cli.log.warning('File %s did not validate as a keyboard:\n\t%s', cli.args.json_file, e) cli.log.info('Treating %s as a keymap file.', cli.args.json_file) json_encoder = KeymapJSONEncoder - elif cli.args.format == 'keyboard': json_encoder = InfoJSONEncoder elif cli.args.format == 'keymap': diff --git a/lib/python/qmk/cli/format/python.py b/lib/python/qmk/cli/format/python.py new file mode 100755 index 000000000000..47b5c45fd50c --- /dev/null +++ b/lib/python/qmk/cli/format/python.py @@ -0,0 +1,69 @@ +"""Format python code according to QMK's style. +""" +from subprocess import CalledProcessError, DEVNULL + +from milc import cli + +from qmk.path import normpath + +py_file_suffixes = ('py',) +py_dirs = ['lib/python'] + + +def yapf_run(files): + edit = '--diff' if cli.args.dry_run else '--in-place' + yapf_cmd = ['yapf', '-vv', '--recursive', edit, *files] + try: + cli.run(yapf_cmd, check=True, capture_output=False, stdin=DEVNULL) + cli.log.info('Successfully formatted the python code.') + + except CalledProcessError: + cli.log.error(f'Python code in {",".join(py_dirs)} incorrectly formatted!') + return False + + +def filter_files(files): + """Yield only files to be formatted and skip the rest + """ + for file in files: + if file and normpath(file).name.split('.')[-1] in py_file_suffixes: + yield file + else: + cli.log.debug('Skipping file %s', file) + + +@cli.argument('-n', '--dry-run', arg_only=True, action='store_true', help="Don't actually format.") +@cli.argument('-b', '--base-branch', default='origin/master', help='Branch to compare to diffs to.') +@cli.argument('-a', '--all-files', arg_only=True, action='store_true', help='Format all files.') +@cli.argument('files', nargs='*', arg_only=True, type=normpath, help='Filename(s) to format.') +@cli.subcommand("Format python code according to QMK's style.", hidden=False if cli.config.user.developer else True) +def format_python(cli): + """Format python code according to QMK's style. + """ + # Find the list of files to format + if cli.args.files: + files = list(filter_files(cli.args.files)) + + if not files: + cli.log.error('No Python files in filelist: %s', ', '.join(map(str, cli.args.files))) + exit(0) + + if cli.args.all_files: + cli.log.warning('Filenames passed with -a, only formatting: %s', ','.join(map(str, files))) + + elif cli.args.all_files: + git_ls_cmd = ['git', 'ls-files', *py_dirs] + git_ls = cli.run(git_ls_cmd, stdin=DEVNULL) + files = list(filter_files(git_ls.stdout.split('\n'))) + + else: + git_diff_cmd = ['git', 'diff', '--name-only', cli.args.base_branch, *py_dirs] + git_diff = cli.run(git_diff_cmd, stdin=DEVNULL) + files = list(filter_files(git_diff.stdout.split('\n'))) + + # Sanity check + if not files: + cli.log.error('No changed files detected. Use "qmk format-python -a" to format all files') + return False + + return yapf_run(files) diff --git a/lib/python/qmk/cli/format/text.py b/lib/python/qmk/cli/format/text.py new file mode 100644 index 000000000000..6dd451189652 --- /dev/null +++ b/lib/python/qmk/cli/format/text.py @@ -0,0 +1,57 @@ +"""Ensure text files have the proper line endings. +""" +from itertools import islice +from subprocess import DEVNULL + +from milc import cli + +from qmk.path import normpath + + +def _get_chunks(it, size): + """Break down a collection into smaller parts + """ + it = iter(it) + return iter(lambda: tuple(islice(it, size)), ()) + + +def dos2unix_run(files): + """Spawn multiple dos2unix subprocess avoiding too long commands on formatting everything + """ + for chunk in _get_chunks(files, 10): + dos2unix = cli.run(['dos2unix', *chunk]) + + if dos2unix.returncode: + return False + + +@cli.argument('-b', '--base-branch', default='origin/master', help='Branch to compare to diffs to.') +@cli.argument('-a', '--all-files', arg_only=True, action='store_true', help='Format all files.') +@cli.argument('files', nargs='*', arg_only=True, type=normpath, help='Filename(s) to format.') +@cli.subcommand("Ensure text files have the proper line endings.", hidden=True) +def format_text(cli): + """Ensure text files have the proper line endings. + """ + # Find the list of files to format + if cli.args.files: + files = list(cli.args.files) + + if cli.args.all_files: + cli.log.warning('Filenames passed with -a, only formatting: %s', ','.join(map(str, files))) + + elif cli.args.all_files: + git_ls_cmd = ['git', 'ls-files'] + git_ls = cli.run(git_ls_cmd, stdin=DEVNULL) + files = list(filter(None, git_ls.stdout.split('\n'))) + + else: + git_diff_cmd = ['git', 'diff', '--name-only', cli.args.base_branch] + git_diff = cli.run(git_diff_cmd, stdin=DEVNULL) + files = list(filter(None, git_diff.stdout.split('\n'))) + + # Sanity check + if not files: + cli.log.error('No changed files detected. Use "qmk format-text -a" to format all files') + return False + + return dos2unix_run(files) 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 000000000000..602635270c66 --- /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 ` + + 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/generate/config_h.py b/lib/python/qmk/cli/generate/config_h.py index 54cd5b96a87f..f16dca1de8b9 100755 --- a/lib/python/qmk/cli/generate/config_h.py +++ b/lib/python/qmk/cli/generate/config_h.py @@ -5,14 +5,14 @@ from dotty_dict import dotty from milc import cli -from qmk.decorators import automagic_keyboard, automagic_keymap from qmk.info import info_json -from qmk.json_schema import json_load +from qmk.json_schema import json_load, validate from qmk.keyboard import keyboard_completer, keyboard_folder -from qmk.path import is_keyboard, normpath +from qmk.keymap import locate_keymap +from qmk.path import normpath -def direct_pins(direct_pins): +def direct_pins(direct_pins, postfix): """Return the config.h lines that set the direct pins. """ rows = [] @@ -24,81 +24,60 @@ def direct_pins(direct_pins): col_count = len(direct_pins[0]) row_count = len(direct_pins) - return """ -#ifndef MATRIX_COLS -# define MATRIX_COLS %s -#endif // MATRIX_COLS + return f""" +#ifndef MATRIX_COLS{postfix} +# define MATRIX_COLS{postfix} {col_count} +#endif // MATRIX_COLS{postfix} -#ifndef MATRIX_ROWS -# define MATRIX_ROWS %s -#endif // MATRIX_ROWS +#ifndef MATRIX_ROWS{postfix} +# define MATRIX_ROWS{postfix} {row_count} +#endif // MATRIX_ROWS{postfix} -#ifndef DIRECT_PINS -# define DIRECT_PINS {%s} -#endif // DIRECT_PINS -""" % (col_count, row_count, ','.join(rows)) +#ifndef DIRECT_PINS{postfix} +# define DIRECT_PINS{postfix} {{ {", ".join(rows)} }} +#endif // DIRECT_PINS{postfix} +""" -def pin_array(define, pins): +def pin_array(define, pins, postfix): """Return the config.h lines that set a pin array. """ pin_num = len(pins) pin_array = ', '.join(map(str, [pin or 'NO_PIN' for pin in pins])) return f""" -#ifndef {define}S -# define {define}S {pin_num} -#endif // {define}S +#ifndef {define}S{postfix} +# define {define}S{postfix} {pin_num} +#endif // {define}S{postfix} -#ifndef {define}_PINS -# define {define}_PINS {{ {pin_array} }} -#endif // {define}_PINS +#ifndef {define}_PINS{postfix} +# define {define}_PINS{postfix} {{ {pin_array} }} +#endif // {define}_PINS{postfix} """ -def matrix_pins(matrix_pins): +def matrix_pins(matrix_pins, postfix=''): """Add the matrix config to the config.h. """ pins = [] if 'direct' in matrix_pins: - pins.append(direct_pins(matrix_pins['direct'])) + pins.append(direct_pins(matrix_pins['direct'], postfix)) if 'cols' in matrix_pins: - pins.append(pin_array('MATRIX_COL', matrix_pins['cols'])) + pins.append(pin_array('MATRIX_COL', matrix_pins['cols'], postfix)) if 'rows' in matrix_pins: - pins.append(pin_array('MATRIX_ROW', matrix_pins['rows'])) + pins.append(pin_array('MATRIX_ROW', matrix_pins['rows'], postfix)) return '\n'.join(pins) -@cli.argument('-o', '--output', arg_only=True, type=normpath, help='File to write to') -@cli.argument('-q', '--quiet', arg_only=True, action='store_true', help="Quiet mode, only output error messages") -@cli.argument('-kb', '--keyboard', type=keyboard_folder, completer=keyboard_completer, help='Keyboard to generate config.h for.') -@cli.subcommand('Used by the make system to generate info_config.h from info.json', hidden=True) -@automagic_keyboard -@automagic_keymap -def generate_config_h(cli): - """Generates the info_config.h file. +def generate_config_items(kb_info_json, config_h_lines): + """Iterate through the info_config map to generate basic config values. """ - # Determine our keyboard(s) - if not cli.config.generate_config_h.keyboard: - cli.log.error('Missing parameter: --keyboard') - cli.subcommands['info'].print_help() - return False - - if not is_keyboard(cli.config.generate_config_h.keyboard): - cli.log.error('Invalid keyboard: "%s"', cli.config.generate_config_h.keyboard) - return False - - # Build the info_config.h file. - kb_info_json = dotty(info_json(cli.config.generate_config_h.keyboard)) info_config_map = json_load(Path('data/mappings/info_config.json')) - config_h_lines = ['/* This file was generated by `qmk generate-config-h`. Do not edit or copy.' ' */', '', '#pragma once'] - - # Iterate through the info_config map to generate basic things for config_key, info_dict in info_config_map.items(): info_key = info_dict['info_key'] key_type = info_dict.get('value_type', 'str') @@ -135,9 +114,75 @@ def generate_config_h(cli): config_h_lines.append(f'# define {config_key} {config_value}') config_h_lines.append(f'#endif // {config_key}') + +def generate_split_config(kb_info_json, config_h_lines): + """Generate the config.h lines for split boards.""" + if 'primary' in kb_info_json['split']: + if kb_info_json['split']['primary'] in ('left', 'right'): + config_h_lines.append('') + config_h_lines.append('#ifndef MASTER_LEFT') + config_h_lines.append('# ifndef MASTER_RIGHT') + if kb_info_json['split']['primary'] == 'left': + config_h_lines.append('# define MASTER_LEFT') + elif kb_info_json['split']['primary'] == 'right': + config_h_lines.append('# define MASTER_RIGHT') + config_h_lines.append('# endif // MASTER_RIGHT') + config_h_lines.append('#endif // MASTER_LEFT') + elif kb_info_json['split']['primary'] == 'pin': + config_h_lines.append('') + config_h_lines.append('#ifndef SPLIT_HAND_PIN') + config_h_lines.append('# define SPLIT_HAND_PIN') + config_h_lines.append('#endif // SPLIT_HAND_PIN') + elif kb_info_json['split']['primary'] == 'matrix_grid': + config_h_lines.append('') + config_h_lines.append('#ifndef SPLIT_HAND_MATRIX_GRID') + config_h_lines.append('# define SPLIT_HAND_MATRIX_GRID {%s}' % (','.join(kb_info_json["split"]["matrix_grid"],))) + config_h_lines.append('#endif // SPLIT_HAND_MATRIX_GRID') + elif kb_info_json['split']['primary'] == 'eeprom': + config_h_lines.append('') + config_h_lines.append('#ifndef EE_HANDS') + config_h_lines.append('# define EE_HANDS') + config_h_lines.append('#endif // EE_HANDS') + + if 'protocol' in kb_info_json['split'].get('transport', {}): + if kb_info_json['split']['transport']['protocol'] == 'i2c': + config_h_lines.append('') + config_h_lines.append('#ifndef USE_I2C') + config_h_lines.append('# define USE_I2C') + config_h_lines.append('#endif // USE_I2C') + + if 'right' in kb_info_json['split'].get('matrix_pins', {}): + config_h_lines.append(matrix_pins(kb_info_json['split']['matrix_pins']['right'], '_RIGHT')) + + +@cli.argument('-o', '--output', arg_only=True, type=normpath, help='File to write to') +@cli.argument('-q', '--quiet', arg_only=True, action='store_true', help="Quiet mode, only output error messages") +@cli.argument('-kb', '--keyboard', arg_only=True, type=keyboard_folder, completer=keyboard_completer, required=True, help='Keyboard to generate config.h for.') +@cli.argument('-km', '--keymap', arg_only=True, help='Keymap to generate config.h for.') +@cli.subcommand('Used by the make system to generate info_config.h from info.json', hidden=True) +def generate_config_h(cli): + """Generates the info_config.h file. + """ + # Determine our keyboard/keymap + if cli.args.keymap: + km = locate_keymap(cli.args.keyboard, cli.args.keymap) + km_json = json_load(km) + validate(km_json, 'qmk.keymap.v1') + kb_info_json = dotty(km_json.get('config', {})) + else: + kb_info_json = dotty(info_json(cli.args.keyboard)) + + # Build the info_config.h file. + config_h_lines = ['/* This file was generated by `qmk generate-config-h`. Do not edit or copy.', ' */', '', '#pragma once'] + + generate_config_items(kb_info_json, config_h_lines) + if 'matrix_pins' in kb_info_json: config_h_lines.append(matrix_pins(kb_info_json['matrix_pins'])) + if 'split' in kb_info_json: + generate_split_config(kb_info_json, config_h_lines) + # Show the results config_h = '\n'.join(config_h_lines) diff --git a/lib/python/qmk/cli/generate/develop_pr_list.py b/lib/python/qmk/cli/generate/develop_pr_list.py new file mode 100755 index 000000000000..07e46752a6da --- /dev/null +++ b/lib/python/qmk/cli/generate/develop_pr_list.py @@ -0,0 +1,119 @@ +"""Export the initial list of PRs associated with a `develop` merge to `master`. +""" +import os +import re +from pathlib import Path +from subprocess import DEVNULL + +from milc import cli + +cache_timeout = 7 * 86400 +fix_expr = re.compile(r'fix', flags=re.IGNORECASE) +clean1_expr = re.compile(r'\[(develop|keyboard|keymap|core|cli|bug|docs|feature)\]', flags=re.IGNORECASE) +clean2_expr = re.compile(r'^(develop|keyboard|keymap|core|cli|bug|docs|feature):', flags=re.IGNORECASE) + + +def _get_pr_info(cache, gh, pr_num): + pull = cache.get(f'pull:{pr_num}') + if pull is None: + print(f'Retrieving info for PR #{pr_num}') + pull = gh.pulls.get(owner='qmk', repo='qmk_firmware', pull_number=pr_num) + cache.set(f'pull:{pr_num}', pull, cache_timeout) + return pull + + +def _try_open_cache(cli): + # These dependencies are manually handled because people complain. Fun. + try: + from sqlite_cache.sqlite_cache import SqliteCache + except ImportError: + return None + + cache_loc = Path(cli.config_file).parent + return SqliteCache(cache_loc) + + +def _get_github(): + try: + from ghapi.all import GhApi + except ImportError: + return None + + return GhApi() + + +@cli.argument('-f', '--from-ref', default='0.11.0', help='Git revision/tag/reference/branch to begin search') +@cli.argument('-b', '--branch', default='upstream/develop', help='Git branch to iterate (default: "upstream/develop")') +@cli.subcommand('Creates the develop PR list.', hidden=False if cli.config.user.developer else True) +def generate_develop_pr_list(cli): + """Retrieves information from GitHub regarding the list of PRs associated + with a merge of `develop` branch into `master`. + + Requires environment variable GITHUB_TOKEN to be set. + """ + + if 'GITHUB_TOKEN' not in os.environ or os.environ['GITHUB_TOKEN'] == '': + cli.log.error('Environment variable "GITHUB_TOKEN" is not set.') + return 1 + + cache = _try_open_cache(cli) + gh = _get_github() + + git_args = ['git', 'rev-list', '--oneline', '--no-merges', '--reverse', f'{cli.args.from_ref}...{cli.args.branch}', '^upstream/master'] + commit_list = cli.run(git_args, capture_output=True, stdin=DEVNULL) + + if cache is None or gh is None: + cli.log.error('Missing one or more dependent python packages: "ghapi", "python-sqlite-cache"') + return 1 + + pr_list_bugs = [] + pr_list_dependencies = [] + pr_list_core = [] + pr_list_keyboards = [] + pr_list_keyboard_fixes = [] + pr_list_cli = [] + pr_list_others = [] + + def _categorise_commit(commit_info): + def fix_or_normal(info, fixes_collection, normal_collection): + if "bug" in info['pr_labels'] or fix_expr.search(info['title']): + fixes_collection.append(info) + else: + normal_collection.append(info) + + if "dependencies" in commit_info['pr_labels']: + fix_or_normal(commit_info, pr_list_bugs, pr_list_dependencies) + elif "core" in commit_info['pr_labels']: + fix_or_normal(commit_info, pr_list_bugs, pr_list_core) + elif "keyboard" in commit_info['pr_labels'] or "keymap" in commit_info['pr_labels'] or "via" in commit_info['pr_labels']: + fix_or_normal(commit_info, pr_list_keyboard_fixes, pr_list_keyboards) + elif "cli" in commit_info['pr_labels']: + fix_or_normal(commit_info, pr_list_bugs, pr_list_cli) + else: + fix_or_normal(commit_info, pr_list_bugs, pr_list_others) + + git_expr = re.compile(r'^(?P[a-f0-9]+) (?P.*) \(#(?P<pr>[0-9]+)\)$') + for line in commit_list.stdout.split('\n'): + match = git_expr.search(line) + if match: + pr_info = _get_pr_info(cache, gh, match.group("pr")) + commit_info = {'hash': match.group("hash"), 'title': match.group("title"), 'pr_num': int(match.group("pr")), 'pr_labels': [label.name for label in pr_info.labels.items]} + _categorise_commit(commit_info) + + def _dump_commit_list(name, collection): + if len(collection) == 0: + return + print("") + print(f"{name}:") + for commit in sorted(collection, key=lambda x: x['pr_num']): + title = clean1_expr.sub('', clean2_expr.sub('', commit['title'])).strip() + pr_num = commit['pr_num'] + print(f'* {title} ([#{pr_num}](https://github.com/qmk/qmk_firmware/pull/{pr_num}))') + + _dump_commit_list("Core", pr_list_core) + _dump_commit_list("CLI", pr_list_cli) + _dump_commit_list("Submodule updates", pr_list_dependencies) + _dump_commit_list("Keyboards", pr_list_keyboards) + _dump_commit_list("Keyboard fixes", pr_list_keyboard_fixes) + _dump_commit_list("Others", pr_list_others) + _dump_commit_list("Bugs", pr_list_bugs) diff --git a/lib/python/qmk/cli/generate/dfu_header.py b/lib/python/qmk/cli/generate/dfu_header.py index 211ed9991a18..7fb585fc7d95 100644 --- a/lib/python/qmk/cli/generate/dfu_header.py +++ b/lib/python/qmk/cli/generate/dfu_header.py @@ -30,9 +30,9 @@ def generate_dfu_header(cli): # Build the Keyboard.h file. kb_info_json = dotty(info_json(cli.config.generate_dfu_header.keyboard)) - keyboard_h_lines = ['/* This file was generated by `qmk generate-dfu-header`. Do not edit or copy.' ' */', '', '#pragma once'] + keyboard_h_lines = ['/* This file was generated by `qmk generate-dfu-header`. Do not edit or copy.', ' */', '', '#pragma once'] keyboard_h_lines.append(f'#define MANUFACTURER {kb_info_json["manufacturer"]}') - keyboard_h_lines.append(f'#define PRODUCT {cli.config.generate_dfu_header.keyboard} Bootloader') + keyboard_h_lines.append(f'#define PRODUCT {kb_info_json["keyboard_name"]} Bootloader') # Optional if 'qmk_lufa_bootloader.esc_output' in kb_info_json: diff --git a/lib/python/qmk/cli/generate/info_json.py b/lib/python/qmk/cli/generate/info_json.py index 8931b68b6ff4..284d1a851098 100755 --- a/lib/python/qmk/cli/generate/info_json.py +++ b/lib/python/qmk/cli/generate/info_json.py @@ -4,15 +4,17 @@ """ import json -from jsonschema import Draft7Validator, validators +from argcomplete.completers import FilesCompleter +from jsonschema import Draft7Validator, RefResolver, validators from milc import cli +from pathlib import Path from qmk.decorators import automagic_keyboard, automagic_keymap from qmk.info import info_json from qmk.json_encoders import InfoJSONEncoder -from qmk.json_schema import load_jsonschema +from qmk.json_schema import compile_schema_store from qmk.keyboard import keyboard_completer, keyboard_folder -from qmk.path import is_keyboard +from qmk.path import is_keyboard, normpath def pruning_validator(validator_class): @@ -34,15 +36,19 @@ def remove_additional_properties(validator, properties, instance, schema): def strip_info_json(kb_info_json): """Remove the API-only properties from the info.json. """ + schema_store = compile_schema_store() pruning_draft_7_validator = pruning_validator(Draft7Validator) - schema = load_jsonschema('keyboard') - validator = pruning_draft_7_validator(schema).validate + schema = schema_store['qmk.keyboard.v1'] + resolver = RefResolver.from_schema(schema_store['qmk.keyboard.v1'], store=schema_store) + validator = pruning_draft_7_validator(schema, resolver=resolver).validate return validator(kb_info_json) @cli.argument('-kb', '--keyboard', type=keyboard_folder, completer=keyboard_completer, help='Keyboard to show info for.') @cli.argument('-km', '--keymap', help='Show the layers for a JSON keymap too.') +@cli.argument('-o', '--output', arg_only=True, completer=FilesCompleter, help='Write the output the specified file, overwriting if necessary.') +@cli.argument('-ow', '--overwrite', arg_only=True, action='store_true', help='Overwrite the existing info.json. (Overrides the location of --output)') @cli.subcommand('Generate an info.json file for a keyboard.', hidden=False if cli.config.user.developer else True) @automagic_keyboard @automagic_keymap @@ -59,9 +65,29 @@ def generate_info_json(cli): cli.log.error('Invalid keyboard: "%s"', cli.config.generate_info_json.keyboard) return False + if cli.args.overwrite: + output_path = (Path('keyboards') / cli.config.generate_info_json.keyboard / 'info.json').resolve() + + if cli.args.output: + cli.log.warning('Overwriting user supplied --output with %s', output_path) + + cli.args.output = output_path + # Build the info.json file kb_info_json = info_json(cli.config.generate_info_json.keyboard) strip_info_json(kb_info_json) + info_json_text = json.dumps(kb_info_json, indent=4, cls=InfoJSONEncoder) + + if cli.args.output: + # Write to a file + output_path = normpath(cli.args.output) + + if output_path.exists(): + cli.log.warning('Overwriting output file %s', output_path) + + output_path.write_text(info_json_text + '\n') + cli.log.info('Wrote info.json to %s.', output_path) - # Display the results - print(json.dumps(kb_info_json, indent=2, cls=InfoJSONEncoder)) + else: + # Display the results + print(info_json_text) diff --git a/lib/python/qmk/cli/generate/keyboard_h.py b/lib/python/qmk/cli/generate/keyboard_h.py index 22500dbc9148..f05178cedef7 100755 --- a/lib/python/qmk/cli/generate/keyboard_h.py +++ b/lib/python/qmk/cli/generate/keyboard_h.py @@ -2,7 +2,6 @@ """ from milc import cli -from qmk.decorators import automagic_keyboard, automagic_keymap from qmk.info import info_json from qmk.keyboard import keyboard_completer, keyboard_folder from qmk.path import normpath @@ -29,17 +28,15 @@ def would_populate_layout_h(keyboard): @cli.argument('-o', '--output', arg_only=True, type=normpath, help='File to write to') @cli.argument('-q', '--quiet', arg_only=True, action='store_true', help="Quiet mode, only output error messages") -@cli.argument('-kb', '--keyboard', type=keyboard_folder, completer=keyboard_completer, required=True, help='Keyboard to generate keyboard.h for.') +@cli.argument('-kb', '--keyboard', arg_only=True, type=keyboard_folder, completer=keyboard_completer, required=True, help='Keyboard to generate keyboard.h for.') @cli.subcommand('Used by the make system to generate keyboard.h from info.json', hidden=True) -@automagic_keyboard -@automagic_keymap def generate_keyboard_h(cli): """Generates the keyboard.h file. """ - has_layout_h = would_populate_layout_h(cli.config.generate_keyboard_h.keyboard) + has_layout_h = would_populate_layout_h(cli.args.keyboard) # Build the layouts.h file. - keyboard_h_lines = ['/* This file was generated by `qmk generate-keyboard-h`. Do not edit or copy.' ' */', '', '#pragma once', '#include "quantum.h"'] + keyboard_h_lines = ['/* This file was generated by `qmk generate-keyboard-h`. Do not edit or copy.', ' */', '', '#pragma once', '#include "quantum.h"'] if not has_layout_h: keyboard_h_lines.append('#pragma error("<keyboard>.h is only optional for data driven keyboards - kb.h == bad times")') diff --git a/lib/python/qmk/cli/generate/layouts.py b/lib/python/qmk/cli/generate/layouts.py index 4de982f822f2..e44266e1c8f3 100755 --- a/lib/python/qmk/cli/generate/layouts.py +++ b/lib/python/qmk/cli/generate/layouts.py @@ -38,7 +38,7 @@ def generate_layouts(cli): kb_info_json = info_json(cli.config.generate_layouts.keyboard) # Build the layouts.h file. - layouts_h_lines = ['/* This file was generated by `qmk generate-layouts`. Do not edit or copy.' ' */', '', '#pragma once'] + layouts_h_lines = ['/* This file was generated by `qmk generate-layouts`. Do not edit or copy.', ' */', '', '#pragma once'] if 'matrix_pins' in kb_info_json: if 'direct' in kb_info_json['matrix_pins']: diff --git a/lib/python/qmk/cli/generate/rules_mk.py b/lib/python/qmk/cli/generate/rules_mk.py index 41c94e16b554..5d8d7cc8a7d3 100755 --- a/lib/python/qmk/cli/generate/rules_mk.py +++ b/lib/python/qmk/cli/generate/rules_mk.py @@ -5,11 +5,11 @@ from dotty_dict import dotty from milc import cli -from qmk.decorators import automagic_keyboard, automagic_keymap from qmk.info import info_json -from qmk.json_schema import json_load +from qmk.json_schema import json_load, validate from qmk.keyboard import keyboard_completer, keyboard_folder -from qmk.path import is_keyboard, normpath +from qmk.keymap import locate_keymap +from qmk.path import normpath def process_mapping_rule(kb_info_json, rules_key, info_dict): @@ -26,7 +26,7 @@ def process_mapping_rule(kb_info_json, rules_key, info_dict): except KeyError: return None - if key_type == 'array': + if key_type in ['array', 'list']: return f'{rules_key} ?= {" ".join(rules_value)}' elif key_type == 'bool': return f'{rules_key} ?= {"on" if rules_value else "off"}' @@ -39,23 +39,21 @@ def process_mapping_rule(kb_info_json, rules_key, info_dict): @cli.argument('-o', '--output', arg_only=True, type=normpath, help='File to write to') @cli.argument('-q', '--quiet', arg_only=True, action='store_true', help="Quiet mode, only output error messages") @cli.argument('-e', '--escape', arg_only=True, action='store_true', help="Escape spaces in quiet mode") -@cli.argument('-kb', '--keyboard', type=keyboard_folder, completer=keyboard_completer, help='Keyboard to generate config.h for.') -@cli.subcommand('Used by the make system to generate info_config.h from info.json', hidden=True) -@automagic_keyboard -@automagic_keymap +@cli.argument('-kb', '--keyboard', arg_only=True, type=keyboard_folder, completer=keyboard_completer, required=True, help='Keyboard to generate rules.mk for.') +@cli.argument('-km', '--keymap', arg_only=True, help='Keymap to generate rules.mk for.') +@cli.subcommand('Used by the make system to generate rules.mk from info.json', hidden=True) def generate_rules_mk(cli): """Generates a rules.mk file from info.json. """ - if not cli.config.generate_rules_mk.keyboard: - cli.log.error('Missing parameter: --keyboard') - cli.subcommands['info'].print_help() - return False - - if not is_keyboard(cli.config.generate_rules_mk.keyboard): - cli.log.error('Invalid keyboard: "%s"', cli.config.generate_rules_mk.keyboard) - return False + # Determine our keyboard/keymap + if cli.args.keymap: + km = locate_keymap(cli.args.keyboard, cli.args.keymap) + km_json = json_load(km) + validate(km_json, 'qmk.keymap.v1') + kb_info_json = dotty(km_json.get('config', {})) + else: + kb_info_json = dotty(info_json(cli.args.keyboard)) - kb_info_json = dotty(info_json(cli.config.generate_rules_mk.keyboard)) info_rules_map = json_load(Path('data/mappings/info_rules.json')) rules_mk_lines = ['# This file was generated by `qmk generate-rules-mk`. Do not edit or copy.', ''] @@ -69,12 +67,20 @@ def generate_rules_mk(cli): # Iterate through features to enable/disable them if 'features' in kb_info_json: for feature, enabled in kb_info_json['features'].items(): - if feature == 'bootmagic_lite' and enabled: - rules_mk_lines.append('BOOTMAGIC_ENABLE ?= lite') - else: - feature = feature.upper() - enabled = 'yes' if enabled else 'no' - rules_mk_lines.append(f'{feature}_ENABLE ?= {enabled}') + feature = feature.upper() + enabled = 'yes' if enabled else 'no' + rules_mk_lines.append(f'{feature}_ENABLE ?= {enabled}') + + # Set SPLIT_TRANSPORT, if needed + if kb_info_json.get('split', {}).get('transport', {}).get('protocol') == 'custom': + rules_mk_lines.append('SPLIT_TRANSPORT ?= custom') + + # Set CUSTOM_MATRIX, if needed + if kb_info_json.get('matrix_pins', {}).get('custom'): + if kb_info_json.get('matrix_pins', {}).get('custom_lite'): + rules_mk_lines.append('CUSTOM_MATRIX ?= lite') + else: + rules_mk_lines.append('CUSTOM_MATRIX ?= yes') # Show the results rules_mk = '\n'.join(rules_mk_lines) + '\n' diff --git a/lib/python/qmk/cli/generate/version_h.py b/lib/python/qmk/cli/generate/version_h.py new file mode 100644 index 000000000000..b8e52588c454 --- /dev/null +++ b/lib/python/qmk/cli/generate/version_h.py @@ -0,0 +1,28 @@ +"""Used by the make system to generate version.h for use in code. +""" +from milc import cli + +from qmk.commands import create_version_h +from qmk.path import normpath + + +@cli.argument('-o', '--output', arg_only=True, type=normpath, help='File to write to') +@cli.argument('-q', '--quiet', arg_only=True, action='store_true', help="Quiet mode, only output error messages") +@cli.argument('--skip-git', arg_only=True, action='store_true', help='Skip Git operations') +@cli.argument('--skip-all', arg_only=True, action='store_true', help='Use placeholder values for all defines (implies --skip-git)') +@cli.subcommand('Used by the make system to generate version.h for use in code', hidden=True) +def generate_version_h(cli): + """Generates the version.h file. + """ + if cli.args.skip_all: + cli.args.skip_git = True + + version_h = create_version_h(cli.args.skip_git, cli.args.skip_all) + + if cli.args.output: + cli.args.output.write_text(version_h) + + if not cli.args.quiet: + cli.log.info('Wrote version.h to %s.', cli.args.output) + else: + print(version_h) diff --git a/lib/python/qmk/cli/info.py b/lib/python/qmk/cli/info.py index 0d08d242cd54..3131d4b53f9f 100755 --- a/lib/python/qmk/cli/info.py +++ b/lib/python/qmk/cli/info.py @@ -24,19 +24,15 @@ def show_keymap(kb_info_json, title_caps=True): keymap_path = locate_keymap(cli.config.info.keyboard, cli.config.info.keymap) if keymap_path and keymap_path.suffix == '.json': - if title_caps: - cli.echo('{fg_blue}Keymap "%s"{fg_reset}:', cli.config.info.keymap) - else: - cli.echo('{fg_blue}keymap_%s{fg_reset}:', cli.config.info.keymap) - keymap_data = json.load(keymap_path.open(encoding='utf-8')) layout_name = keymap_data['layout'] + layout_name = kb_info_json.get('layout_aliases', {}).get(layout_name, layout_name) # Resolve alias names for layer_num, layer in enumerate(keymap_data['layers']): if title_caps: - cli.echo('{fg_cyan}Layer %s{fg_reset}:', layer_num) + cli.echo('{fg_cyan}Keymap %s Layer %s{fg_reset}:', cli.config.info.keymap, layer_num) else: - cli.echo('{fg_cyan}layer_%s{fg_reset}:', layer_num) + cli.echo('{fg_cyan}keymap.%s.layer.%s{fg_reset}:', cli.config.info.keymap, layer_num) print(render_layout(kb_info_json['layouts'][layout_name]['layout'], cli.config.info.ascii, layer)) @@ -45,7 +41,7 @@ def show_layouts(kb_info_json, title_caps=True): """Render the layouts with info.json labels. """ for layout_name, layout_art in render_layouts(kb_info_json, cli.config.info.ascii).items(): - title = layout_name.title() if title_caps else layout_name + title = f'Layout {layout_name.title()}' if title_caps else f'layouts.{layout_name}' cli.echo('{fg_cyan}%s{fg_reset}:', title) print(layout_art) # Avoid passing dirty data to cli.echo() @@ -87,23 +83,12 @@ def print_friendly_output(kb_info_json): cli.echo('{fg_blue}Maintainer{fg_reset}: %s', kb_info_json['maintainer']) cli.echo('{fg_blue}Keyboard Folder{fg_reset}: %s', kb_info_json.get('keyboard_folder', 'Unknown')) cli.echo('{fg_blue}Layouts{fg_reset}: %s', ', '.join(sorted(kb_info_json['layouts'].keys()))) - if 'width' in kb_info_json and 'height' in kb_info_json: - cli.echo('{fg_blue}Size{fg_reset}: %s x %s' % (kb_info_json['width'], kb_info_json['height'])) cli.echo('{fg_blue}Processor{fg_reset}: %s', kb_info_json.get('processor', 'Unknown')) cli.echo('{fg_blue}Bootloader{fg_reset}: %s', kb_info_json.get('bootloader', 'Unknown')) if 'layout_aliases' in kb_info_json: aliases = [f'{key}={value}' for key, value in kb_info_json['layout_aliases'].items()] cli.echo('{fg_blue}Layout aliases:{fg_reset} %s' % (', '.join(aliases),)) - if cli.config.info.layouts: - show_layouts(kb_info_json, True) - - if cli.config.info.matrix: - show_matrix(kb_info_json, True) - - if cli.config_source.info.keymap and cli.config_source.info.keymap != 'config_file': - show_keymap(kb_info_json, True) - def print_text_output(kb_info_json): """Print the info.json in a plain text format. @@ -124,6 +109,24 @@ def print_text_output(kb_info_json): show_keymap(kb_info_json, False) +def print_dotted_output(kb_info_json, prefix=''): + """Print the info.json in a plain text format with dot-joined keys. + """ + for key in sorted(kb_info_json): + new_prefix = f'{prefix}.{key}' if prefix else key + + if key in ['parse_errors', 'parse_warnings']: + continue + elif key == 'layouts' and prefix == '': + cli.echo('{fg_blue}layouts{fg_reset}: %s', ', '.join(sorted(kb_info_json['layouts'].keys()))) + elif isinstance(kb_info_json[key], dict): + print_dotted_output(kb_info_json[key], new_prefix) + elif isinstance(kb_info_json[key], list): + cli.echo('{fg_blue}%s{fg_reset}: %s', new_prefix, ', '.join(map(str, sorted(kb_info_json[key])))) + else: + cli.echo('{fg_blue}%s{fg_reset}: %s', new_prefix, kb_info_json[key]) + + def print_parsed_rules_mk(keyboard_name): rules = rules_mk(keyboard_name) for k in sorted(rules.keys()): @@ -164,10 +167,22 @@ def info(cli): # Output in the requested format if cli.args.format == 'json': print(json.dumps(kb_info_json, cls=InfoJSONEncoder)) + return True elif cli.args.format == 'text': - print_text_output(kb_info_json) + print_dotted_output(kb_info_json) + title_caps = False elif cli.args.format == 'friendly': print_friendly_output(kb_info_json) + title_caps = True else: cli.log.error('Unknown format: %s', cli.args.format) return False + + if cli.config.info.layouts: + show_layouts(kb_info_json, title_caps) + + if cli.config.info.matrix: + show_matrix(kb_info_json, title_caps) + + if cli.config_source.info.keymap and cli.config_source.info.keymap != 'config_file': + show_keymap(kb_info_json, title_caps) diff --git a/lib/python/qmk/cli/json2c.py b/lib/python/qmk/cli/json2c.py index a90578c021d7..ae8248e6b72a 100755 --- a/lib/python/qmk/cli/json2c.py +++ b/lib/python/qmk/cli/json2c.py @@ -33,7 +33,7 @@ def json2c(cli): cli.args.output = None # Generate the keymap - keymap_c = qmk.keymap.generate_c(user_keymap['keyboard'], user_keymap['layout'], user_keymap['layers']) + keymap_c = qmk.keymap.generate_c(user_keymap) if cli.args.output: cli.args.output.parent.mkdir(parents=True, exist_ok=True) diff --git a/lib/python/qmk/cli/kle2json.py b/lib/python/qmk/cli/kle2json.py index acb75ef4fdb0..bbfddf4268e5 100755 --- a/lib/python/qmk/cli/kle2json.py +++ b/lib/python/qmk/cli/kle2json.py @@ -44,8 +44,6 @@ def kle2json(cli): 'keyboard_name': kle.name, 'url': '', 'maintainer': 'qmk', - 'width': kle.columns, - 'height': kle.rows, 'layouts': { 'LAYOUT': { 'layout': kle2qmk(kle) diff --git a/lib/python/qmk/cli/lint.py b/lib/python/qmk/cli/lint.py index a164dba63244..96593ed69b7a 100644 --- a/lib/python/qmk/cli/lint.py +++ b/lib/python/qmk/cli/lint.py @@ -1,71 +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 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 = 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.exists(): - ok = False - cli.log.error('Missing %s', 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/list/keymaps.py b/lib/python/qmk/cli/list/keymaps.py index d79ab75b5822..d2ef136c06a4 100644 --- a/lib/python/qmk/cli/list/keymaps.py +++ b/lib/python/qmk/cli/list/keymaps.py @@ -13,5 +13,10 @@ def list_keymaps(cli): """List the keymaps for a specific keyboard """ + if not cli.config.list_keymaps.keyboard: + cli.log.error('Missing required arguments: --keyboard') + cli.subcommands['list-keymaps'].print_help() + return False + for name in qmk.keymap.list_keymaps(cli.config.list_keymaps.keyboard): print(name) diff --git a/lib/python/qmk/cli/list/layouts.py b/lib/python/qmk/cli/list/layouts.py new file mode 100644 index 000000000000..df593dc39027 --- /dev/null +++ b/lib/python/qmk/cli/list/layouts.py @@ -0,0 +1,23 @@ +"""List the keymaps for a specific keyboard +""" +from milc import cli + +from qmk.decorators import automagic_keyboard +from qmk.keyboard import keyboard_completer, keyboard_folder +from qmk.info import info_json + + +@cli.argument("-kb", "--keyboard", type=keyboard_folder, completer=keyboard_completer, help="Specify keyboard name. Example: monarch") +@cli.subcommand("List the layouts for a specific keyboard") +@automagic_keyboard +def list_layouts(cli): + """List the layouts for a specific keyboard + """ + if not cli.config.list_layouts.keyboard: + cli.log.error('Missing required arguments: --keyboard') + cli.subcommands['list-layouts'].print_help() + return False + + info_data = info_json(cli.config.list_layouts.keyboard) + for name in sorted(info_data.get('community_layouts', [])): + print(name) diff --git a/lib/python/qmk/cli/multibuild.py b/lib/python/qmk/cli/multibuild.py index bdb0b493c806..85ed0fa1e98f 100755 --- a/lib/python/qmk/cli/multibuild.py +++ b/lib/python/qmk/cli/multibuild.py @@ -10,7 +10,7 @@ from milc import cli from qmk.constants import QMK_FIRMWARE -from qmk.commands import _find_make +from qmk.commands import _find_make, get_make_parallel_args import qmk.keyboard import qmk.keymap @@ -28,7 +28,7 @@ def _is_split(keyboard_name): return True if 'SPLIT_KEYBOARD' in rules_mk and rules_mk['SPLIT_KEYBOARD'].lower() == 'yes' else False -@cli.argument('-j', '--parallel', type=int, default=1, help="Set the number of parallel make jobs to run.") +@cli.argument('-j', '--parallel', type=int, default=1, help="Set the number of parallel make jobs; 0 means unlimited.") @cli.argument('-c', '--clean', arg_only=True, action='store_true', help="Remove object files before compiling.") @cli.argument('-f', '--filter', arg_only=True, action='append', default=[], help="Filter the list of keyboards based on the supplied value in rules.mk. Supported format is 'SPLIT_KEYBOARD=yes'. May be passed multiple times.") @cli.argument('-km', '--keymap', type=str, default='default', help="The keymap name to build. Default is 'default'.") @@ -80,7 +80,7 @@ def multibuild(cli): ) # yapf: enable - cli.run([make_cmd, '-j', str(cli.args.parallel), '-f', makefile.as_posix(), 'all'], capture_output=False, stdin=DEVNULL) + cli.run([make_cmd, *get_make_parallel_args(cli.args.parallel), '-f', makefile.as_posix(), 'all'], capture_output=False, stdin=DEVNULL) # Check for failures failures = [f for f in builddir.glob(f'failed.log.{os.getpid()}.*')] diff --git a/lib/python/qmk/cli/new/keyboard.py b/lib/python/qmk/cli/new/keyboard.py index ae4445ca4808..4093b8c90d06 100644 --- a/lib/python/qmk/cli/new/keyboard.py +++ b/lib/python/qmk/cli/new/keyboard.py @@ -1,11 +1,139 @@ -"""This script automates the creation of keyboards. +"""This script automates the creation of new keyboard directories using a starter template. """ +from datetime import date +from pathlib import Path +import re + +from qmk.commands import git_get_username +import qmk.path from milc import cli +from milc.questions import choice, question + +KEYBOARD_TYPES = ['avr', 'ps2avrgb'] + + +def keyboard_name(name): + """Callable for argparse validation. + """ + if not validate_keyboard_name(name): + raise ValueError + return name -@cli.subcommand('Creates a new keyboard') +def validate_keyboard_name(name): + """Returns True if the given keyboard name contains only lowercase a-z, 0-9 and underscore characters. + """ + regex = re.compile(r'^[a-z0-9][a-z0-9/_]+$') + return bool(regex.match(name)) + + +@cli.argument('-kb', '--keyboard', help='Specify the name for the new keyboard directory', arg_only=True, type=keyboard_name) +@cli.argument('-t', '--type', help='Specify the keyboard type', arg_only=True, choices=KEYBOARD_TYPES) +@cli.argument('-u', '--username', help='Specify your username (default from Git config)', arg_only=True) +@cli.argument('-n', '--realname', help='Specify your real name if you want to use that. Defaults to username', arg_only=True) +@cli.subcommand('Creates a new keyboard directory') def new_keyboard(cli): - """Creates a new keyboard + """Creates a new keyboard. """ - # TODO: replace this bodge to the existing script - cli.run(['util/new_keyboard.sh'], stdin=None, capture_output=False) + cli.log.info('{style_bright}Generating a new QMK keyboard directory{style_normal}') + cli.echo('') + + # Get keyboard name + new_keyboard_name = None + while not new_keyboard_name: + new_keyboard_name = cli.args.keyboard if cli.args.keyboard else question('Keyboard Name:') + if not validate_keyboard_name(new_keyboard_name): + cli.log.error('Keyboard names must contain only {fg_cyan}lowercase a-z{fg_reset}, {fg_cyan}0-9{fg_reset}, and {fg_cyan}_{fg_reset}! Please choose a different name.') + + # Exit if passed by arg + if cli.args.keyboard: + return False + + new_keyboard_name = None + continue + + keyboard_path = qmk.path.keyboard(new_keyboard_name) + if keyboard_path.exists(): + cli.log.error(f'Keyboard {{fg_cyan}}{new_keyboard_name}{{fg_reset}} already exists! Please choose a different name.') + + # Exit if passed by arg + if cli.args.keyboard: + return False + + new_keyboard_name = None + + # Get keyboard type + keyboard_type = cli.args.type if cli.args.type else choice('Keyboard Type:', KEYBOARD_TYPES, default=0) + + # Get username + user_name = None + while not user_name: + user_name = question('Your GitHub User Name:', default=find_user_name()) + + if not user_name: + cli.log.error('You didn\'t provide a username, and we couldn\'t find one set in your QMK or Git configs. Please try again.') + + # Exit if passed by arg + if cli.args.username: + return False + + real_name = None + while not real_name: + real_name = question('Your real name:', default=user_name) + + keyboard_basename = keyboard_path.name + replacements = { + "YEAR": str(date.today().year), + "KEYBOARD": keyboard_basename, + "USER_NAME": user_name, + "YOUR_NAME": real_name, + } + + template_dir = Path('data/templates') + template_tree(template_dir / 'base', keyboard_path, replacements) + template_tree(template_dir / keyboard_type, keyboard_path, replacements) + + cli.echo('') + cli.log.info(f'{{fg_green}}Created a new keyboard called {{fg_cyan}}{new_keyboard_name}{{fg_green}}.{{fg_reset}}') + cli.log.info(f'To start working on things, `cd` into {{fg_cyan}}{keyboard_path}{{fg_reset}},') + cli.log.info('or open the directory in your preferred text editor.') + + +def find_user_name(): + if cli.args.username: + return cli.args.username + elif cli.config.user.name: + return cli.config.user.name + else: + return git_get_username() + + +def template_tree(src: Path, dst: Path, replacements: dict): + """Recursively copy template and replace placeholders + + Args: + src (Path) + The source folder to copy from + dst (Path) + The destination folder to copy to + replacements (dict) + a dictionary with "key":"value" pairs to replace. + + Raises: + FileExistsError + When trying to overwrite existing files + """ + + dst.mkdir(parents=True, exist_ok=True) + + for child in src.iterdir(): + if child.is_dir(): + template_tree(child, dst / child.name, replacements=replacements) + + if child.is_file(): + file_name = dst / (child.name % replacements) + + with file_name.open(mode='x') as dst_f: + with child.open() as src_f: + template = src_f.read() + dst_f.write(template % replacements) diff --git a/lib/python/qmk/cli/pyformat.py b/lib/python/qmk/cli/pyformat.py index abe5f6de1948..c624f74aeb47 100755 --- a/lib/python/qmk/cli/pyformat.py +++ b/lib/python/qmk/cli/pyformat.py @@ -1,26 +1,24 @@ -"""Format python code according to QMK's style. +"""Point people to the new command name. """ -from subprocess import CalledProcessError, DEVNULL +import sys +from pathlib import Path from milc import cli -@cli.argument('-n', '--dry-run', arg_only=True, action='store_true', help="Flag only, don't automatically format.") -@cli.subcommand("Format python code according to QMK's style.", hidden=False if cli.config.user.developer else True) +@cli.argument('-n', '--dry-run', arg_only=True, action='store_true', help="Don't actually format.") +@cli.subcommand('Pointer to the new command name: qmk format-python.', hidden=False if cli.config.user.developer else True) def pyformat(cli): - """Format python code according to QMK's style. + """Pointer to the new command name: qmk format-python. """ - edit = '--diff' if cli.args.dry_run else '--in-place' - yapf_cmd = ['yapf', '-vv', '--recursive', edit, 'bin/qmk', '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.') - return True + cli.log.warning('"qmk pyformat" has been renamed to "qmk format-python". Please use the new command in the future.') + argv = [sys.executable, *sys.argv] + argv[argv.index('pyformat')] = 'format-python' + script_path = Path(argv[1]) + script_path_exe = Path(f'{argv[1]}.exe') - except CalledProcessError: - if cli.args.dry_run: - cli.log.error('Python code in `bin/qmk` and `lib/python` incorrectly formatted!') - else: - cli.log.error('Error formatting python code!') + if not script_path.exists() and script_path_exe.exists(): + # For reasons I don't understand ".exe" is stripped from the script name on windows. + argv[1] = str(script_path_exe) - return False + return cli.run(argv, capture_output=False).returncode diff --git a/lib/python/qmk/cli/pytest.py b/lib/python/qmk/cli/pytest.py index bdb336b9a706..a7f01a872aa0 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 3a35c11031c2..5a019437734c 100644 --- a/lib/python/qmk/commands.py +++ b/lib/python/qmk/commands.py @@ -2,6 +2,7 @@ """ import json import os +import sys import shutil from pathlib import Path from subprocess import DEVNULL @@ -10,7 +11,7 @@ from milc import cli import qmk.keymap -from qmk.constants import KEYBOARD_OUTPUT_PREFIX +from qmk.constants import QMK_FIRMWARE, KEYBOARD_OUTPUT_PREFIX from qmk.json_schema import json_load time_fmt = '%Y-%m-%d-%H:%M:%S' @@ -27,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: @@ -35,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 @@ -51,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, '-j', str(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: @@ -68,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 @@ -83,14 +90,20 @@ 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(repo_dir='.', check_dir='.'): +def get_git_version(current_time, repo_dir='.', check_dir='.'): """Returns the current git version for a repo, or the current time. """ git_describe_cmd = ['git', 'describe', '--abbrev=6', '--dirty', '--always', '--tags'] + if repo_dir != '.': + repo_dir = Path('lib') / repo_dir + + if check_dir != '.': + check_dir = repo_dir / check_dir + if Path(check_dir).exists(): git_describe = cli.run(git_describe_cmd, stdin=DEVNULL, cwd=repo_dir) @@ -100,23 +113,58 @@ def get_git_version(repo_dir='.', check_dir='.'): else: cli.log.warn(f'"{" ".join(git_describe_cmd)}" returned error code {git_describe.returncode}') print(git_describe.stderr) - return strftime(time_fmt) + return current_time - return strftime(time_fmt) + return current_time -def write_version_h(git_version, build_date, chibios_version, chibios_contrib_version): - """Generate and write quantum/version.h +def get_make_parallel_args(parallel=1): + """Returns the arguments for running the specified number of parallel jobs. """ - version_h = [ - f'#define QMK_VERSION "{git_version}"', - f'#define QMK_BUILDDATE "{build_date}"', - f'#define CHIBIOS_VERSION "{chibios_version}"', - f'#define CHIBIOS_CONTRIB_VERSION "{chibios_contrib_version}"', - ] + parallel_args = [] + + if int(parallel) <= 0: + # 0 or -1 means -j without argument (unlimited jobs) + parallel_args.append('--jobs') + else: + parallel_args.append('--jobs=' + str(parallel)) + + if int(parallel) != 1: + # If more than 1 job is used, synchronize parallel output by target + parallel_args.append('--output-sync=target') + + return parallel_args + + +def create_version_h(skip_git=False, skip_all=False): + """Generate version.h contents + """ + if skip_all: + current_time = "1970-01-01-00:00:00" + else: + current_time = strftime(time_fmt) + + if skip_git: + git_version = "NA" + chibios_version = "NA" + chibios_contrib_version = "NA" + else: + git_version = get_git_version(current_time) + chibios_version = get_git_version(current_time, "chibios", "os") + chibios_contrib_version = get_git_version(current_time, "chibios-contrib", "os") + + version_h_lines = f"""/* This file was automatically generated. Do not edit or copy. + */ + +#pragma once + +#define QMK_VERSION "{git_version}" +#define QMK_BUILDDATE "{current_time}" +#define CHIBIOS_VERSION "{chibios_version}" +#define CHIBIOS_CONTRIB_VERSION "{chibios_contrib_version}" +""" - version_h_file = Path('quantum/version.h') - version_h_file.write_text('\n'.join(version_h)) + return version_h_lines def compile_configurator_json(user_keymap, bootloader=None, parallel=1, **env_vars): @@ -142,20 +190,15 @@ def compile_configurator_json(user_keymap, bootloader=None, parallel=1, **env_va target = f'{keyboard_filesafe}_{user_keymap["keymap"]}' keyboard_output = Path(f'{KEYBOARD_OUTPUT_PREFIX}{keyboard_filesafe}') keymap_output = Path(f'{keyboard_output}_{user_keymap["keymap"]}') - c_text = qmk.keymap.generate_c(user_keymap['keyboard'], user_keymap['layout'], user_keymap['layers']) + c_text = qmk.keymap.generate_c(user_keymap) keymap_dir = keymap_output / 'src' keymap_c = keymap_dir / 'keymap.c' keymap_dir.mkdir(exist_ok=True, parents=True) keymap_c.write_text(c_text) - # Write the version.h file - git_version = get_git_version() - build_date = strftime('%Y-%m-%d-%H:%M:%S') - chibios_version = get_git_version("lib/chibios", "lib/chibios/os") - chibios_contrib_version = get_git_version("lib/chibios-contrib", "lib/chibios-contrib/os") - - write_version_h(git_version, build_date, chibios_version, chibios_contrib_version) + version_h = Path('quantum/version.h') + version_h.write_text(create_version_h()) # Return a command that can be run to make the keymap and flash if given verbose = 'true' if cli.config.general.verbose else 'false' @@ -166,8 +209,7 @@ def compile_configurator_json(user_keymap, bootloader=None, parallel=1, **env_va make_command.append('-s') make_command.extend([ - '-j', - str(parallel), + *get_make_parallel_args(parallel), '-r', '-R', '-f', @@ -181,10 +223,6 @@ def compile_configurator_json(user_keymap, bootloader=None, parallel=1, **env_va make_command.append(f'{key}={value}') make_command.extend([ - f'GIT_VERSION={git_version}', - f'BUILD_DATE={build_date}', - f'CHIBIOS_VERSION={chibios_version}', - f'CHIBIOS_CONTRIB_VERSION={chibios_contrib_version}', f'KEYBOARD={user_keymap["keyboard"]}', f'KEYMAP={user_keymap["keymap"]}', f'KEYBOARD_FILESAFE={keyboard_filesafe}', @@ -201,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 @@ -223,3 +261,80 @@ def parse_configurator_json(configurator_file): user_keymap['layout'] = aliases[orig_keyboard]['layouts'][user_keymap['layout']] return user_keymap + + +def git_get_username(): + """Retrieves user's username from Git config, if set. + """ + git_username = cli.run(['git', 'config', '--get', 'user.name']) + + if git_username.returncode == 0 and git_username.stdout: + return git_username.stdout.strip() + + +def git_check_repo(): + """Checks that the .git directory exists inside QMK_HOME. + + This is a decent enough indicator that the qmk_firmware directory is a + proper Git repository, rather than a .zip download from GitHub. + """ + dot_git_dir = QMK_FIRMWARE / '.git' + + return dot_git_dir.is_dir() + + +def git_get_branch(): + """Returns the current branch for a repo, or None. + """ + git_branch = cli.run(['git', 'branch', '--show-current']) + if not git_branch.returncode != 0 or not git_branch.stdout: + # Workaround for Git pre-2.22 + git_branch = cli.run(['git', 'rev-parse', '--abbrev-ref', 'HEAD']) + + if git_branch.returncode == 0: + return git_branch.stdout.strip() + + +def git_is_dirty(): + """Returns 1 if repo is dirty, or 0 if clean + """ + git_diff_staged_cmd = ['git', 'diff', '--quiet'] + git_diff_unstaged_cmd = [*git_diff_staged_cmd, '--cached'] + + unstaged = cli.run(git_diff_staged_cmd) + staged = cli.run(git_diff_unstaged_cmd) + + return unstaged.returncode != 0 or staged.returncode != 0 + + +def git_get_remotes(): + """Returns the current remotes for a repo. + """ + remotes = {} + + git_remote_show_cmd = ['git', 'remote', 'show'] + git_remote_get_cmd = ['git', 'remote', 'get-url'] + + git_remote_show = cli.run(git_remote_show_cmd) + if git_remote_show.returncode == 0: + for name in git_remote_show.stdout.splitlines(): + git_remote_name = cli.run([*git_remote_get_cmd, name]) + remotes[name.strip()] = {"url": git_remote_name.stdout.strip()} + + return remotes + + +def git_check_deviation(active_branch): + """Return True if branch has custom commits + """ + cli.run(['git', 'fetch', 'upstream', active_branch]) + deviations = cli.run(['git', '--no-pager', 'log', f'upstream/{active_branch}...{active_branch}']) + return bool(deviations.returncode) + + +def in_virtualenv(): + """Check if running inside a virtualenv. + Based on https://stackoverflow.com/a/1883251 + """ + active_prefix = getattr(sys, "base_prefix", None) or getattr(sys, "real_prefix", None) or sys.prefix + return active_prefix != sys.prefix diff --git a/lib/python/qmk/constants.py b/lib/python/qmk/constants.py index 49e5e0eb42d0..754091a97ee0 100644 --- a/lib/python/qmk/constants.py +++ b/lib/python/qmk/constants.py @@ -6,11 +6,14 @@ # The root of the qmk_firmware tree. QMK_FIRMWARE = Path.cwd() +# Upstream repo url +QMK_FIRMWARE_UPSTREAM = 'qmk/qmk_firmware' + # This is the number of directories under `qmk_firmware/keyboards` that will be traversed. This is currently a limitation of our make system. 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', 'STM32F411', 'STM32F446', 'STM32G431', 'STM32G474', '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', 'WB32F3G71' 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 47c8bff7a8cb..9a07fc842fb3 100644 --- a/lib/python/qmk/info.py +++ b/lib/python/qmk/info.py @@ -9,7 +9,7 @@ from qmk.constants import CHIBIOS_PROCESSORS, LUFA_PROCESSORS, VUSB_PROCESSORS from qmk.c_parse import find_layouts -from qmk.json_schema import deep_update, json_load, keyboard_validate, keyboard_api_validate +from qmk.json_schema import deep_update, json_load, validate from qmk.keyboard import config_h, rules_mk from qmk.keymap import list_keymaps from qmk.makefile import parse_rules_mk_file @@ -25,14 +25,21 @@ def _valid_community_layout(layout): return (Path('layouts/default') / layout).exists() +def _remove_newlines_from_labels(layouts): + for layout_name, layout_json in layouts.items(): + for key in layout_json['layout']: + if '\n' in key['label']: + key['label'] = key['label'].split('\n')[0] + + def info_json(keyboard): """Generate the info.json data for a specific keyboard. """ cur_dir = Path('keyboards') - rules = parse_rules_mk_file(cur_dir / keyboard / 'rules.mk') - if 'DEFAULT_FOLDER' in rules: - keyboard = rules['DEFAULT_FOLDER'] - rules = parse_rules_mk_file(cur_dir / keyboard / 'rules.mk', rules) + root_rules_mk = parse_rules_mk_file(cur_dir / keyboard / 'rules.mk') + + if 'DEFAULT_FOLDER' in root_rules_mk: + keyboard = root_rules_mk['DEFAULT_FOLDER'] info_data = { 'keyboard_name': str(keyboard), @@ -49,7 +56,7 @@ def info_json(keyboard): info_data['keymaps'][keymap.name] = {'url': f'https://raw.githubusercontent.com/qmk/qmk_firmware/master/{keymap}/keymap.json'} # Populate layout data - layouts, aliases = _find_all_layouts(info_data, keyboard) + layouts, aliases = _search_keyboard_h(keyboard) if aliases: info_data['layout_aliases'] = aliases @@ -61,19 +68,25 @@ def info_json(keyboard): # Merge in the data from info.json, config.h, and rules.mk info_data = merge_info_jsons(keyboard, info_data) - info_data = _extract_config_h(info_data) info_data = _extract_rules_mk(info_data) + info_data = _extract_config_h(info_data) + + # Ensure that we have matrix row and column counts + info_data = _matrix_size(info_data) # Validate against the jsonschema try: - keyboard_api_validate(info_data) + validate(info_data, 'qmk.api.keyboard.v1') except jsonschema.ValidationError as e: json_path = '.'.join([str(p) for p in e.absolute_path]) cli.log.error('Invalid API data: %s: %s: %s', keyboard, json_path, e.message) - exit() + exit(1) # Make sure we have at least one layout + if not info_data.get('layouts'): + _find_missing_layouts(info_data, keyboard) + if not info_data.get('layouts'): _log_error(info_data, 'No LAYOUTs defined! Need at least one layout defined in the keyboard.h or info.json.') @@ -90,6 +103,12 @@ def info_json(keyboard): if layout_name not in info_data.get('layouts', {}) and layout_name not in info_data.get('layout_aliases', {}): _log_error(info_data, 'Claims to support community layout %s but no %s() macro found' % (layout, layout_name)) + # Check that the reported matrix size is consistent with the actual matrix size + _check_matrix(info_data) + + # Remove newline characters from layout labels + _remove_newlines_from_labels(layouts) + return info_data @@ -103,11 +122,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'): @@ -143,10 +157,7 @@ def _pin_name(pin): elif pin == 'NO_PIN': return None - elif pin[0] in 'ABCDEFGHIJK' and pin[1].isdigit(): - return pin - - raise ValueError(f'Invalid pin: {pin}') + return pin def _extract_pins(pins): @@ -155,10 +166,9 @@ def _extract_pins(pins): return [_pin_name(pin) for pin in pins.split(',')] -def _extract_direct_matrix(info_data, direct_pins): +def _extract_direct_matrix(direct_pins): """ """ - info_data['matrix_pins'] = {} direct_pin_array = [] while direct_pins[-1] != '}': @@ -182,12 +192,157 @@ def _extract_direct_matrix(info_data, direct_pins): return direct_pin_array +def _extract_audio(info_data, config_c): + """Populate data about the audio configuration + """ + audio_pins = [] + + for pin in 'B5', 'B6', 'B7', 'C4', 'C5', 'C6': + if config_c.get(f'{pin}_AUDIO'): + audio_pins.append(pin) + + if audio_pins: + info_data['audio'] = {'pins': audio_pins} + + +def _extract_split_main(info_data, config_c): + """Populate data about the split configuration + """ + # Figure out how the main half is determined + if config_c.get('SPLIT_HAND_PIN') is True: + if 'split' not in info_data: + info_data['split'] = {} + + if 'main' in info_data['split']: + _log_warning(info_data, 'Split main hand is specified in both config.h (SPLIT_HAND_PIN) and info.json (split.main) (Value: %s), the config.h value wins.' % info_data['split']['main']) + + info_data['split']['main'] = 'pin' + + if config_c.get('SPLIT_HAND_MATRIX_GRID'): + if 'split' not in info_data: + info_data['split'] = {} + + if 'main' in info_data['split']: + _log_warning(info_data, 'Split main hand is specified in both config.h (SPLIT_HAND_MATRIX_GRID) and info.json (split.main) (Value: %s), the config.h value wins.' % info_data['split']['main']) + + info_data['split']['main'] = 'matrix_grid' + info_data['split']['matrix_grid'] = _extract_pins(config_c['SPLIT_HAND_MATRIX_GRID']) + + if config_c.get('EE_HANDS') is True: + if 'split' not in info_data: + info_data['split'] = {} + + if 'main' in info_data['split']: + _log_warning(info_data, 'Split main hand is specified in both config.h (EE_HANDS) and info.json (split.main) (Value: %s), the config.h value wins.' % info_data['split']['main']) + + info_data['split']['main'] = 'eeprom' + + if config_c.get('MASTER_RIGHT') is True: + if 'split' not in info_data: + info_data['split'] = {} + + if 'main' in info_data['split']: + _log_warning(info_data, 'Split main hand is specified in both config.h (MASTER_RIGHT) and info.json (split.main) (Value: %s), the config.h value wins.' % info_data['split']['main']) + + info_data['split']['main'] = 'right' + + if config_c.get('MASTER_LEFT') is True: + if 'split' not in info_data: + info_data['split'] = {} + + if 'main' in info_data['split']: + _log_warning(info_data, 'Split main hand is specified in both config.h (MASTER_LEFT) and info.json (split.main) (Value: %s), the config.h value wins.' % info_data['split']['main']) + + info_data['split']['main'] = 'left' + + +def _extract_split_transport(info_data, config_c): + # Figure out the transport method + if config_c.get('USE_I2C') is True: + if 'split' not in info_data: + info_data['split'] = {} + + if 'transport' not in info_data['split']: + info_data['split']['transport'] = {} + + if 'protocol' in info_data['split']['transport']: + _log_warning(info_data, 'Split transport is specified in both config.h (USE_I2C) and info.json (split.transport.protocol) (Value: %s), the config.h value wins.' % info_data['split']['transport']) + + info_data['split']['transport']['protocol'] = 'i2c' + + elif 'protocol' not in info_data.get('split', {}).get('transport', {}): + if 'split' not in info_data: + info_data['split'] = {} + + if 'transport' not in info_data['split']: + info_data['split']['transport'] = {} + + info_data['split']['transport']['protocol'] = 'serial' + + +def _extract_split_right_pins(info_data, config_c): + # Figure out the right half matrix pins + row_pins = config_c.get('MATRIX_ROW_PINS_RIGHT', '').replace('{', '').replace('}', '').strip() + col_pins = config_c.get('MATRIX_COL_PINS_RIGHT', '').replace('{', '').replace('}', '').strip() + unused_pin_text = config_c.get('UNUSED_PINS_RIGHT') + unused_pins = unused_pin_text.replace('{', '').replace('}', '').strip() if isinstance(unused_pin_text, str) else None + direct_pins = config_c.get('DIRECT_PINS_RIGHT', '').replace(' ', '')[1:-1] + + if row_pins and col_pins: + if info_data.get('split', {}).get('matrix_pins', {}).get('right') in info_data: + _log_warning(info_data, 'Right hand matrix data is specified in both info.json and config.h, the config.h values win.') + + if 'split' not in info_data: + info_data['split'] = {} + + if 'matrix_pins' not in info_data['split']: + info_data['split']['matrix_pins'] = {} + + if 'right' not in info_data['split']['matrix_pins']: + info_data['split']['matrix_pins']['right'] = {} + + info_data['split']['matrix_pins']['right'] = { + 'cols': _extract_pins(col_pins), + 'rows': _extract_pins(row_pins), + } + + if direct_pins: + if info_data.get('split', {}).get('matrix_pins', {}).get('right', {}): + _log_warning(info_data, 'Right hand matrix data is specified in both info.json and config.h, the config.h values win.') + + if 'split' not in info_data: + info_data['split'] = {} + + if 'matrix_pins' not in info_data['split']: + info_data['split']['matrix_pins'] = {} + + if 'right' not in info_data['split']['matrix_pins']: + info_data['split']['matrix_pins']['right'] = {} + + info_data['split']['matrix_pins']['right']['direct'] = _extract_direct_matrix(direct_pins) + + if unused_pins: + if 'split' not in info_data: + info_data['split'] = {} + + if 'matrix_pins' not in info_data['split']: + info_data['split']['matrix_pins'] = {} + + if 'right' not in info_data['split']['matrix_pins']: + info_data['split']['matrix_pins']['right'] = {} + + info_data['split']['matrix_pins']['right']['unused'] = _extract_pins(unused_pins) + + def _extract_matrix_info(info_data, config_c): """Populate the matrix information. """ row_pins = config_c.get('MATRIX_ROW_PINS', '').replace('{', '').replace('}', '').strip() col_pins = config_c.get('MATRIX_COL_PINS', '').replace('{', '').replace('}', '').strip() + unused_pin_text = config_c.get('UNUSED_PINS') + unused_pins = unused_pin_text.replace('{', '').replace('}', '').strip() if isinstance(unused_pin_text, str) else None direct_pins = config_c.get('DIRECT_PINS', '').replace(' ', '')[1:-1] + info_snippet = {} if 'MATRIX_ROWS' in config_c and 'MATRIX_COLS' in config_c: if 'matrix_size' in info_data: @@ -199,19 +354,35 @@ def _extract_matrix_info(info_data, config_c): } if row_pins and col_pins: - if 'matrix_pins' in info_data: + if 'matrix_pins' in info_data and 'cols' in info_data['matrix_pins'] and 'rows' in info_data['matrix_pins']: _log_warning(info_data, 'Matrix pins are specified in both info.json and config.h, the config.h values win.') - info_data['matrix_pins'] = { - 'cols': _extract_pins(col_pins), - 'rows': _extract_pins(row_pins), - } + info_snippet['cols'] = _extract_pins(col_pins) + info_snippet['rows'] = _extract_pins(row_pins) if direct_pins: - if 'matrix_pins' in info_data: + if 'matrix_pins' in info_data and 'direct' in info_data['matrix_pins']: _log_warning(info_data, 'Direct pins are specified in both info.json and config.h, the config.h values win.') - info_data['matrix_pins']['direct'] = _extract_direct_matrix(info_data, direct_pins) + info_snippet['direct'] = _extract_direct_matrix(direct_pins) + + if unused_pins: + if 'matrix_pins' not in info_data: + info_data['matrix_pins'] = {} + + info_snippet['unused'] = _extract_pins(unused_pins) + + if config_c.get('CUSTOM_MATRIX', 'no') != 'no': + if 'matrix_pins' in info_data and 'custom' in info_data['matrix_pins']: + _log_warning(info_data, 'Custom Matrix is specified in both info.json and config.h, the config.h values win.') + + info_snippet['custom'] = True + + if config_c['CUSTOM_MATRIX'] == 'lite': + info_snippet['custom_lite'] = True + + if info_snippet: + info_data['matrix_pins'] = info_snippet return info_data @@ -269,6 +440,10 @@ def _extract_config_h(info_data): # Pull data that easily can't be mapped in json _extract_matrix_info(info_data, config_c) + _extract_audio(info_data, config_c) + _extract_split_main(info_data, config_c) + _extract_split_transport(info_data, config_c) + _extract_split_right_pins(info_data, config_c) return info_data @@ -341,45 +516,53 @@ def _extract_rules_mk(info_data): return info_data -def _merge_layouts(info_data, new_info_data): - """Merge new_info_data into info_data in an intelligent way. +def _matrix_size(info_data): + """Add info_data['matrix_size'] if it doesn't exist. """ - for layout_name, layout_json in new_info_data['layouts'].items(): - if layout_name in info_data['layouts']: - # Pull in layouts we have a macro for - if len(info_data['layouts'][layout_name]['layout']) != len(layout_json['layout']): - msg = '%s: %s: Number of elements in info.json does not match! info.json:%s != %s:%s' - _log_error(info_data, msg % (info_data['keyboard_folder'], layout_name, len(layout_json['layout']), layout_name, len(info_data['layouts'][layout_name]['layout']))) - else: - for i, key in enumerate(info_data['layouts'][layout_name]['layout']): - key.update(layout_json['layout'][i]) - else: - # Pull in layouts that have matrix data - missing_matrix = False - for key in layout_json.get('layout', {}): - if 'matrix' not in key: - missing_matrix = True - - if not missing_matrix: - if layout_name in info_data['layouts']: - # Update an existing layout with new data - for i, key in enumerate(info_data['layouts'][layout_name]['layout']): - key.update(layout_json['layout'][i]) + if 'matrix_size' not in info_data and 'matrix_pins' in info_data: + info_data['matrix_size'] = {} - else: - # Copy in the new layout wholesale - layout_json['c_macro'] = False - info_data['layouts'][layout_name] = layout_json + if 'direct' in info_data['matrix_pins']: + info_data['matrix_size']['cols'] = len(info_data['matrix_pins']['direct'][0]) + info_data['matrix_size']['rows'] = len(info_data['matrix_pins']['direct']) + elif 'cols' in info_data['matrix_pins'] and 'rows' in info_data['matrix_pins']: + info_data['matrix_size']['cols'] = len(info_data['matrix_pins']['cols']) + info_data['matrix_size']['rows'] = len(info_data['matrix_pins']['rows']) return info_data -def _search_keyboard_h(path): +def _check_matrix(info_data): + """Check the matrix to ensure that row/column count is consistent. + """ + if 'matrix_pins' in info_data and 'matrix_size' in info_data: + actual_col_count = info_data['matrix_size'].get('cols', 0) + actual_row_count = info_data['matrix_size'].get('rows', 0) + col_count = row_count = 0 + + if 'direct' in info_data['matrix_pins']: + col_count = len(info_data['matrix_pins']['direct'][0]) + row_count = len(info_data['matrix_pins']['direct']) + elif 'cols' in info_data['matrix_pins'] and 'rows' in info_data['matrix_pins']: + col_count = len(info_data['matrix_pins']['cols']) + row_count = len(info_data['matrix_pins']['rows']) + + if col_count != actual_col_count and col_count != (actual_col_count / 2): + # FIXME: once we can we should detect if split is enabled to do the actual_col_count/2 check. + _log_error(info_data, f'MATRIX_COLS is inconsistent with the size of MATRIX_COL_PINS: {col_count} != {actual_col_count}') + + if row_count != actual_row_count and row_count != (actual_row_count / 2): + # FIXME: once we can we should detect if split is enabled to do the actual_row_count/2 check. + _log_error(info_data, f'MATRIX_ROWS is inconsistent with the size of MATRIX_ROW_PINS: {row_count} != {actual_row_count}') + + +def _search_keyboard_h(keyboard): + keyboard = Path(keyboard) current_path = Path('keyboards/') aliases = {} layouts = {} - for directory in path.parts: + for directory in keyboard.parts: current_path = current_path / directory keyboard_h = '%s.h' % (directory,) keyboard_h_path = current_path / keyboard_h @@ -394,27 +577,28 @@ def _search_keyboard_h(path): return layouts, aliases -def _find_all_layouts(info_data, keyboard): - """Looks for layout macros associated with this keyboard. +def _find_missing_layouts(info_data, keyboard): + """Looks for layout macros when they aren't found other places. + + If we don't find any layouts from info.json or keyboard.h we widen our search. This is error prone which is why we want to encourage people to follow the standard above. """ - layouts, aliases = _search_keyboard_h(Path(keyboard)) + _log_warning(info_data, '%s: Falling back to searching for KEYMAP/LAYOUT macros.' % (keyboard)) - if not layouts: - # If we don't find any layouts from info.json or keyboard.h we widen our search. This is error prone which is why we want to encourage people to follow the standard above. - info_data['parse_warnings'].append('%s: Falling back to searching for KEYMAP/LAYOUT macros.' % (keyboard)) + for file in glob('keyboards/%s/*.h' % keyboard): + these_layouts, these_aliases = find_layouts(file) - for file in glob('keyboards/%s/*.h' % keyboard): - if file.endswith('.h'): - these_layouts, these_aliases = find_layouts(file) + if these_layouts: + for layout_name, layout_json in these_layouts.items(): + if not layout_name.startswith('LAYOUT_kc'): + layout_json['c_macro'] = True + info_data['layouts'][layout_name] = layout_json - if these_layouts: - layouts.update(these_layouts) + for alias, alias_text in these_aliases.items(): + if alias_text in these_layouts: + if 'layout_aliases' not in info_data: + info_data['layout_aliases'] = {} - for alias, alias_text in these_aliases.items(): - if alias_text in layouts: - aliases[alias] = alias_text - - return layouts, aliases + info_data['layout_aliases'][alias] = alias_text def _log_error(info_data, message): @@ -440,6 +624,8 @@ def arm_processor_rules(info_data, rules): if 'bootloader' not in info_data: if 'STM32' in info_data['processor']: info_data['bootloader'] = 'stm32-dfu' + elif 'WB32' in info_data['processor']: + info_data['bootloader'] = 'wb32-dfu' else: info_data['bootloader'] = 'unknown' @@ -493,7 +679,7 @@ def merge_info_jsons(keyboard, info_data): continue try: - keyboard_validate(new_info_data) + validate(new_info_data, 'qmk.keyboard.v1') except jsonschema.ValidationError as e: json_path = '.'.join([str(p) for p in e.absolute_path]) cli.log.error('Not including data from file: %s', info_file) @@ -511,8 +697,12 @@ def merge_info_jsons(keyboard, info_data): layout_name = info_data['layout_aliases'][layout_name] if layout_name in info_data['layouts']: - for new_key, existing_key in zip(layout['layout'], info_data['layouts'][layout_name]['layout']): - existing_key.update(new_key) + if len(info_data['layouts'][layout_name]['layout']) != len(layout['layout']): + msg = 'Number of keys for %s does not match! info.json specifies %d keys, C macro specifies %d' + _log_error(info_data, msg % (layout_name, len(layout['layout']), len(info_data['layouts'][layout_name]['layout']))) + else: + for new_key, existing_key in zip(layout['layout'], info_data['layouts'][layout_name]['layout']): + existing_key.update(new_key) else: layout['c_macro'] = False info_data['layouts'][layout_name] = layout diff --git a/lib/python/qmk/json_encoders.py b/lib/python/qmk/json_encoders.py index 9f3da022b481..72e91973a320 100755 --- a/lib/python/qmk/json_encoders.py +++ b/lib/python/qmk/json_encoders.py @@ -102,9 +102,6 @@ def sort_dict(self, key): elif key == 'maintainer': return '12maintainer' - elif key in ('height', 'width'): - return '40' + str(key) - elif key == 'community_layouts': return '97community_layouts' diff --git a/lib/python/qmk/json_schema.py b/lib/python/qmk/json_schema.py index 077dfcaa932a..ffc7c6bcd127 100644 --- a/lib/python/qmk/json_schema.py +++ b/lib/python/qmk/json_schema.py @@ -2,6 +2,7 @@ """ import json from collections.abc import Mapping +from functools import lru_cache from pathlib import Path import hjson @@ -17,16 +18,21 @@ def json_load(json_file): try: return hjson.load(json_file.open(encoding='utf-8')) - except json.decoder.JSONDecodeError as e: + except (json.decoder.JSONDecodeError, hjson.HjsonDecodeError) as e: cli.log.error('Invalid JSON encountered attempting to load {fg_cyan}%s{fg_reset}:\n\t{fg_red}%s', json_file, e) exit(1) + except Exception as e: + cli.log.error('Unknown error attempting to load {fg_cyan}%s{fg_reset}:\n\t{fg_red}%s', json_file, e) + exit(1) +@lru_cache(maxsize=0) def load_jsonschema(schema_name): """Read a jsonschema file from disk. - - FIXME(skullydazed/anyone): Refactor to make this a public function. """ + if Path(schema_name).exists(): + return json_load(schema_name) + schema_path = Path(f'data/schemas/{schema_name}.jsonschema') if not schema_path.exists(): @@ -35,28 +41,42 @@ def load_jsonschema(schema_name): return json_load(schema_path) -def keyboard_validate(data): - """Validates data against the keyboard jsonschema. +@lru_cache(maxsize=0) +def compile_schema_store(): + """Compile all our schemas into a schema store. """ - schema = load_jsonschema('keyboard') - validator = jsonschema.Draft7Validator(schema).validate + schema_store = {} - return validator(data) + for schema_file in Path('data/schemas').glob('*.jsonschema'): + schema_data = load_jsonschema(schema_file) + if not isinstance(schema_data, dict): + cli.log.debug('Skipping schema file %s', schema_file) + continue + schema_store[schema_data['$id']] = schema_data + + return schema_store + + +@lru_cache(maxsize=0) +def create_validator(schema): + """Creates a validator for the given schema id. + """ + schema_store = compile_schema_store() + resolver = jsonschema.RefResolver.from_schema(schema_store['qmk.keyboard.v1'], store=schema_store) + + return jsonschema.Draft7Validator(schema_store[schema], resolver=resolver).validate -def keyboard_api_validate(data): - """Validates data against the api_keyboard jsonschema. +def validate(data, schema): + """Validates data against a schema. """ - base = load_jsonschema('keyboard') - relative = load_jsonschema('api_keyboard') - resolver = jsonschema.RefResolver.from_schema(base) - validator = jsonschema.Draft7Validator(relative, resolver=resolver).validate + validator = create_validator(schema) return validator(data) def deep_update(origdict, newdict): - """Update a dictionary in place, recursing to do a deep copy. + """Update a dictionary in place, recursing to do a depth-first deep copy. """ for key, value in newdict.items(): if isinstance(value, Mapping): diff --git a/lib/python/qmk/keymap.py b/lib/python/qmk/keymap.py index 2d5921e7a868..00b5a78a5ac5 100644 --- a/lib/python/qmk/keymap.py +++ b/lib/python/qmk/keymap.py @@ -17,6 +17,7 @@ # The `keymap.c` template to use when a keyboard doesn't have its own DEFAULT_KEYMAP_C = """#include QMK_KEYBOARD_H +__INCLUDES__ /* THIS FILE WAS GENERATED! * @@ -27,6 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { __KEYMAP_GOES_HERE__ }; + """ @@ -149,8 +151,8 @@ def is_keymap_dir(keymap, c=True, json=True, additional_files=None): for file in files: if (keymap / file).is_file(): if additional_files: - for file in additional_files: - if not (keymap / file).is_file(): + for additional_file in additional_files: + if not (keymap / additional_file).is_file(): return False return True @@ -180,10 +182,11 @@ def generate_json(keymap, keyboard, layout, layers): return new_keymap -def generate_c(keyboard, layout, layers): - """Returns a `keymap.c` or `keymap.json` for the specified keyboard, layout, and layers. +def generate_c(keymap_json): + """Returns a `keymap.c`. + + `keymap_json` is a dictionary with the following keys: - Args: keyboard The name of the keyboard @@ -192,19 +195,89 @@ def generate_c(keyboard, layout, layers): layers An array of arrays describing the keymap. Each item in the inner array should be a string that is a valid QMK keycode. + + macros + A sequence of strings containing macros to implement for this keyboard. """ - new_keymap = template_c(keyboard) + new_keymap = template_c(keymap_json['keyboard']) layer_txt = [] - for layer_num, layer in enumerate(layers): + + for layer_num, layer in enumerate(keymap_json['layers']): if layer_num != 0: layer_txt[-1] = layer_txt[-1] + ',' layer = map(_strip_any, layer) layer_keys = ', '.join(layer) - layer_txt.append('\t[%s] = %s(%s)' % (layer_num, layout, layer_keys)) + layer_txt.append('\t[%s] = %s(%s)' % (layer_num, keymap_json['layout'], layer_keys)) keymap = '\n'.join(layer_txt) new_keymap = new_keymap.replace('__KEYMAP_GOES_HERE__', keymap) + if keymap_json.get('macros'): + macro_txt = [ + 'bool process_record_user(uint16_t keycode, keyrecord_t *record) {', + ' if (record->event.pressed) {', + ' switch (keycode) {', + ] + + for i, macro_array in enumerate(keymap_json['macros']): + macro = [] + + for macro_fragment in macro_array: + if isinstance(macro_fragment, str): + macro_fragment = macro_fragment.replace('\\', '\\\\') + macro_fragment = macro_fragment.replace('\r\n', r'\n') + macro_fragment = macro_fragment.replace('\n', r'\n') + macro_fragment = macro_fragment.replace('\r', r'\n') + macro_fragment = macro_fragment.replace('\t', r'\t') + macro_fragment = macro_fragment.replace('"', r'\"') + + macro.append(f'"{macro_fragment}"') + + elif isinstance(macro_fragment, dict): + newstring = [] + + if macro_fragment['action'] == 'delay': + newstring.append(f"SS_DELAY({macro_fragment['duration']})") + + elif macro_fragment['action'] == 'beep': + newstring.append(r'"\a"') + + elif macro_fragment['action'] == 'tap' and len(macro_fragment['keycodes']) > 1: + last_keycode = macro_fragment['keycodes'].pop() + + for keycode in macro_fragment['keycodes']: + newstring.append(f'SS_DOWN(X_{keycode})') + + newstring.append(f'SS_TAP(X_{last_keycode})') + + for keycode in reversed(macro_fragment['keycodes']): + newstring.append(f'SS_UP(X_{keycode})') + + else: + for keycode in macro_fragment['keycodes']: + newstring.append(f"SS_{macro_fragment['action'].upper()}(X_{keycode})") + + macro.append(''.join(newstring)) + + new_macro = "".join(macro) + new_macro = new_macro.replace('""', '') + macro_txt.append(f' case MACRO_{i}:') + macro_txt.append(f' SEND_STRING({new_macro});') + macro_txt.append(' return false;') + + macro_txt.append(' }') + macro_txt.append(' }') + macro_txt.append('\n return true;') + macro_txt.append('};') + macro_txt.append('') + + new_keymap = '\n'.join((new_keymap, *macro_txt)) + + if keymap_json.get('host_language'): + new_keymap = new_keymap.replace('__INCLUDES__', f'#include "keymap_{keymap_json["host_language"]}.h"\n#include "sendstring_{keymap_json["host_language"]}.h"\n') + else: + new_keymap = new_keymap.replace('__INCLUDES__', '') + return new_keymap @@ -217,7 +290,7 @@ def write_file(keymap_filename, keymap_content): return keymap_filename -def write_json(keyboard, keymap, layout, layers): +def write_json(keyboard, keymap, layout, layers, macros=None): """Generate the `keymap.json` and write it to disk. Returns the filename written to. @@ -235,19 +308,19 @@ def write_json(keyboard, keymap, layout, layers): layers An array of arrays describing the keymap. Each item in the inner array should be a string that is a valid QMK keycode. """ - keymap_json = generate_json(keyboard, keymap, layout, layers) + keymap_json = generate_json(keyboard, keymap, layout, layers, macros=None) keymap_content = json.dumps(keymap_json) keymap_file = qmk.path.keymap(keyboard) / keymap / 'keymap.json' return write_file(keymap_file, keymap_content) -def write(keyboard, keymap, layout, layers): +def write(keymap_json): """Generate the `keymap.c` and write it to disk. Returns the filename written to. - Args: + `keymap_json` should be a dict with the following keys: keyboard The name of the keyboard @@ -259,9 +332,12 @@ def write(keyboard, keymap, layout, layers): layers An array of arrays describing the keymap. Each item in the inner array should be a string that is a valid QMK keycode. + + macros + A list of macros for this keymap. """ - keymap_content = generate_c(keyboard, layout, layers) - keymap_file = qmk.path.keymap(keyboard) / keymap / 'keymap.c' + keymap_content = generate_c(keymap_json) + keymap_file = qmk.path.keymap(keymap_json['keyboard']) / keymap_json['keymap'] / 'keymap.c' return write_file(keymap_file, keymap_content) diff --git a/lib/python/qmk/os_helpers/__init__.py b/lib/python/qmk/os_helpers/__init__.py deleted file mode 100644 index 3e98db3c32e9..000000000000 --- a/lib/python/qmk/os_helpers/__init__.py +++ /dev/null @@ -1,164 +0,0 @@ -"""OS-agnostic helper functions -""" -from enum import Enum -import re -import shutil -from subprocess import DEVNULL - -from milc import cli -from qmk import submodules -from qmk.constants import QMK_FIRMWARE - - -class CheckStatus(Enum): - OK = 1 - WARNING = 2 - ERROR = 3 - - -ESSENTIAL_BINARIES = { - 'dfu-programmer': {}, - 'avrdude': {}, - 'dfu-util': {}, - 'avr-gcc': { - 'version_arg': '-dumpversion' - }, - 'arm-none-eabi-gcc': { - 'version_arg': '-dumpversion' - }, - 'bin/qmk': {}, -} - - -def parse_gcc_version(version): - m = re.match(r"(\d+)(?:\.(\d+))?(?:\.(\d+))?", version) - - return { - 'major': int(m.group(1)), - 'minor': int(m.group(2)) if m.group(2) else 0, - 'patch': int(m.group(3)) if m.group(3) else 0, - } - - -def check_arm_gcc_version(): - """Returns True if the arm-none-eabi-gcc version is not known to cause problems. - """ - if 'output' in ESSENTIAL_BINARIES['arm-none-eabi-gcc']: - version_number = ESSENTIAL_BINARIES['arm-none-eabi-gcc']['output'].strip() - cli.log.info('Found arm-none-eabi-gcc version %s', version_number) - - return CheckStatus.OK # Right now all known arm versions are ok - - -def check_avr_gcc_version(): - """Returns True if the avr-gcc version is not known to cause problems. - """ - rc = CheckStatus.ERROR - if 'output' in ESSENTIAL_BINARIES['avr-gcc']: - version_number = ESSENTIAL_BINARIES['avr-gcc']['output'].strip() - - cli.log.info('Found avr-gcc version %s', version_number) - rc = CheckStatus.OK - - parsed_version = parse_gcc_version(version_number) - if parsed_version['major'] > 8: - cli.log.warning('{fg_yellow}We do not recommend avr-gcc newer than 8. Downgrading to 8.x is recommended.') - rc = CheckStatus.WARNING - - return rc - - -def check_avrdude_version(): - if 'output' in ESSENTIAL_BINARIES['avrdude']: - last_line = ESSENTIAL_BINARIES['avrdude']['output'].split('\n')[-2] - version_number = last_line.split()[2][:-1] - cli.log.info('Found avrdude version %s', version_number) - - return CheckStatus.OK - - -def check_dfu_util_version(): - if 'output' in ESSENTIAL_BINARIES['dfu-util']: - first_line = ESSENTIAL_BINARIES['dfu-util']['output'].split('\n')[0] - version_number = first_line.split()[1] - cli.log.info('Found dfu-util version %s', version_number) - - return CheckStatus.OK - - -def check_dfu_programmer_version(): - if 'output' in ESSENTIAL_BINARIES['dfu-programmer']: - first_line = ESSENTIAL_BINARIES['dfu-programmer']['output'].split('\n')[0] - version_number = first_line.split()[1] - cli.log.info('Found dfu-programmer version %s', version_number) - - return CheckStatus.OK - - -def check_binaries(): - """Iterates through ESSENTIAL_BINARIES and tests them. - """ - ok = True - - for binary in sorted(ESSENTIAL_BINARIES): - if not is_executable(binary): - ok = False - - return ok - - -def check_binary_versions(): - """Check the versions of ESSENTIAL_BINARIES - """ - versions = [] - for check in (check_arm_gcc_version, check_avr_gcc_version, check_avrdude_version, check_dfu_util_version, check_dfu_programmer_version): - versions.append(check()) - return versions - - -def check_submodules(): - """Iterates through all submodules to make sure they're cloned and up to date. - """ - for submodule in submodules.status().values(): - if submodule['status'] is None: - cli.log.error('Submodule %s has not yet been cloned!', submodule['name']) - return CheckStatus.ERROR - elif not submodule['status']: - cli.log.warning('Submodule %s is not up to date!', submodule['name']) - return CheckStatus.WARNING - - return CheckStatus.OK - - -def is_executable(command): - """Returns True if command exists and can be executed. - """ - # Make sure the command is in the path. - res = shutil.which(command) - if res is None: - cli.log.error("{fg_red}Can't find %s in your path.", command) - return False - - # Make sure the command can be executed - version_arg = ESSENTIAL_BINARIES[command].get('version_arg', '--version') - check = cli.run([command, version_arg], combined_output=True, stdin=DEVNULL, timeout=5) - - ESSENTIAL_BINARIES[command]['output'] = check.stdout - - if check.returncode in [0, 1]: # Older versions of dfu-programmer exit 1 - cli.log.debug('Found {fg_cyan}%s', command) - return True - - cli.log.error("{fg_red}Can't run `%s %s`", command, version_arg) - return False - - -def check_git_repo(): - """Checks that the .git directory exists inside QMK_HOME. - - This is a decent enough indicator that the qmk_firmware directory is a - proper Git repository, rather than a .zip download from GitHub. - """ - dot_git_dir = QMK_FIRMWARE / '.git' - - return CheckStatus.OK if dot_git_dir.is_dir() else CheckStatus.WARNING diff --git a/lib/python/qmk/os_helpers/linux/__init__.py b/lib/python/qmk/os_helpers/linux/__init__.py deleted file mode 100644 index 008654ab0fc2..000000000000 --- a/lib/python/qmk/os_helpers/linux/__init__.py +++ /dev/null @@ -1,140 +0,0 @@ -"""OS-specific functions for: Linux -""" -from pathlib import Path -import shutil - -from milc import cli -from qmk.constants import QMK_FIRMWARE -from qmk.os_helpers import CheckStatus - - -def _udev_rule(vid, pid=None, *args): - """ Helper function that return udev rules - """ - rule = "" - if pid: - rule = 'SUBSYSTEMS=="usb", ATTRS{idVendor}=="%s", ATTRS{idProduct}=="%s", TAG+="uaccess"' % ( - vid, - pid, - ) - else: - rule = 'SUBSYSTEMS=="usb", ATTRS{idVendor}=="%s", TAG+="uaccess"' % vid - if args: - rule = ', '.join([rule, *args]) - return rule - - -def _deprecated_udev_rule(vid, pid=None): - """ Helper function that return udev rules - - Note: these are no longer the recommended rules, this is just used to check for them - """ - if pid: - return 'SUBSYSTEMS=="usb", ATTRS{idVendor}=="%s", ATTRS{idProduct}=="%s", MODE:="0666"' % (vid, pid) - else: - return 'SUBSYSTEMS=="usb", ATTRS{idVendor}=="%s", MODE:="0666"' % vid - - -def check_udev_rules(): - """Make sure the udev rules look good. - """ - rc = CheckStatus.OK - udev_dir = Path("/etc/udev/rules.d/") - desired_rules = { - 'atmel-dfu': { - _udev_rule("03eb", "2fef"), # ATmega16U2 - _udev_rule("03eb", "2ff0"), # ATmega32U2 - _udev_rule("03eb", "2ff3"), # ATmega16U4 - _udev_rule("03eb", "2ff4"), # ATmega32U4 - _udev_rule("03eb", "2ff9"), # AT90USB64 - _udev_rule("03eb", "2ffa"), # AT90USB162 - _udev_rule("03eb", "2ffb") # AT90USB128 - }, - 'kiibohd': {_udev_rule("1c11", "b007")}, - 'stm32': { - _udev_rule("1eaf", "0003"), # STM32duino - _udev_rule("0483", "df11") # STM32 DFU - }, - 'bootloadhid': {_udev_rule("16c0", "05df")}, - 'usbasploader': {_udev_rule("16c0", "05dc")}, - 'massdrop': {_udev_rule("03eb", "6124", 'ENV{ID_MM_DEVICE_IGNORE}="1"')}, - 'caterina': { - # Spark Fun Electronics - _udev_rule("1b4f", "9203", 'ENV{ID_MM_DEVICE_IGNORE}="1"'), # Pro Micro 3V3/8MHz - _udev_rule("1b4f", "9205", 'ENV{ID_MM_DEVICE_IGNORE}="1"'), # Pro Micro 5V/16MHz - _udev_rule("1b4f", "9207", 'ENV{ID_MM_DEVICE_IGNORE}="1"'), # LilyPad 3V3/8MHz (and some Pro Micro clones) - # Pololu Electronics - _udev_rule("1ffb", "0101", 'ENV{ID_MM_DEVICE_IGNORE}="1"'), # A-Star 32U4 - # Arduino SA - _udev_rule("2341", "0036", 'ENV{ID_MM_DEVICE_IGNORE}="1"'), # Leonardo - _udev_rule("2341", "0037", 'ENV{ID_MM_DEVICE_IGNORE}="1"'), # Micro - # Adafruit Industries LLC - _udev_rule("239a", "000c", 'ENV{ID_MM_DEVICE_IGNORE}="1"'), # Feather 32U4 - _udev_rule("239a", "000d", 'ENV{ID_MM_DEVICE_IGNORE}="1"'), # ItsyBitsy 32U4 3V3/8MHz - _udev_rule("239a", "000e", 'ENV{ID_MM_DEVICE_IGNORE}="1"'), # ItsyBitsy 32U4 5V/16MHz - # dog hunter AG - _udev_rule("2a03", "0036", 'ENV{ID_MM_DEVICE_IGNORE}="1"'), # Leonardo - _udev_rule("2a03", "0037", 'ENV{ID_MM_DEVICE_IGNORE}="1"') # Micro - } - } - - # These rules are no longer recommended, only use them to check for their presence. - deprecated_rules = { - 'atmel-dfu': {_deprecated_udev_rule("03eb", "2ff4"), _deprecated_udev_rule("03eb", "2ffb"), _deprecated_udev_rule("03eb", "2ff0")}, - 'kiibohd': {_deprecated_udev_rule("1c11")}, - 'stm32': {_deprecated_udev_rule("1eaf", "0003"), _deprecated_udev_rule("0483", "df11")}, - 'bootloadhid': {_deprecated_udev_rule("16c0", "05df")}, - 'caterina': {'ATTRS{idVendor}=="2a03", ENV{ID_MM_DEVICE_IGNORE}="1"', 'ATTRS{idVendor}=="2341", ENV{ID_MM_DEVICE_IGNORE}="1"'}, - 'tmk': {_deprecated_udev_rule("feed")} - } - - if udev_dir.exists(): - udev_rules = [rule_file for rule_file in udev_dir.glob('*.rules')] - current_rules = set() - - # Collect all rules from the config files - for rule_file in udev_rules: - for line in rule_file.read_text(encoding='utf-8').split('\n'): - line = line.strip() - if not line.startswith("#") and len(line): - current_rules.add(line) - - # Check if the desired rules are among the currently present rules - for bootloader, rules in desired_rules.items(): - if not rules.issubset(current_rules): - deprecated_rule = deprecated_rules.get(bootloader) - if deprecated_rule and deprecated_rule.issubset(current_rules): - cli.log.warning("{fg_yellow}Found old, deprecated udev rules for '%s' boards. The new rules on https://docs.qmk.fm/#/faq_build?id=linux-udev-rules offer better security with the same functionality.", bootloader) - else: - # For caterina, check if ModemManager is running - if bootloader == "caterina": - if check_modem_manager(): - rc = CheckStatus.WARNING - cli.log.warning("{fg_yellow}Detected ModemManager without the necessary udev rules. Please either disable it or set the appropriate udev rules if you are using a Pro Micro.") - rc = CheckStatus.WARNING - cli.log.warning("{fg_yellow}Missing or outdated udev rules for '%s' boards. Run 'sudo cp %s/util/udev/50-qmk.rules /etc/udev/rules.d/'.", bootloader, QMK_FIRMWARE) - - else: - cli.log.warning("{fg_yellow}'%s' does not exist. Skipping udev rule checking...", udev_dir) - - return rc - - -def check_systemd(): - """Check if it's a systemd system - """ - return bool(shutil.which("systemctl")) - - -def check_modem_manager(): - """Returns True if ModemManager is running. - - """ - if check_systemd(): - mm_check = cli.run(["systemctl", "--quiet", "is-active", "ModemManager.service"], timeout=10) - if mm_check.returncode == 0: - return True - else: - """(TODO): Add check for non-systemd systems - """ - return False diff --git a/lib/python/qmk/tests/minimal_info.json b/lib/python/qmk/tests/minimal_info.json index b91c23bd3d18..3aae4722bfec 100644 --- a/lib/python/qmk/tests/minimal_info.json +++ b/lib/python/qmk/tests/minimal_info.json @@ -1,12 +1,10 @@ { "keyboard_name": "tester", "maintainer": "qmk", - "height": 5, - "width": 15, "layouts": { "LAYOUT": { "layout": [ - { "label": "KC_A", "x": 0, "y": 0, "matrix": [0, 0] } + { "label": "KC_A", "matrix": [0, 0], "x": 0, "y": 0 } ] } } diff --git a/lib/python/qmk/tests/test_cli_commands.py b/lib/python/qmk/tests/test_cli_commands.py index afdbc8142917..2973f817022e 100644 --- a/lib/python/qmk/tests/test_cli_commands.py +++ b/lib/python/qmk/tests/test_cli_commands.py @@ -31,13 +31,13 @@ def check_returncode(result, expected=[0]): assert result.returncode in expected -def test_cformat(): - result = check_subcommand('cformat', '-n', 'quantum/matrix.c') +def test_format_c(): + result = check_subcommand('format-c', '-n', 'quantum/matrix.c') check_returncode(result) -def test_cformat_all(): - result = check_subcommand('cformat', '-n', '-a') +def test_format_c_all(): + result = check_subcommand('format-c', '-n', '-a') check_returncode(result, [0, 1]) @@ -80,10 +80,10 @@ def test_hello(): assert 'Hello,' in result.stdout -def test_pyformat(): - result = check_subcommand('pyformat', '--dry-run') +def test_format_python(): + result = check_subcommand('format-python', '-n', '-a') check_returncode(result) - assert 'Python code in `bin/qmk` and `lib/python` is correctly formatted.' in result.stdout + assert 'Successfully formatted the python code.' in result.stdout def test_list_keyboards(): @@ -142,6 +142,14 @@ def test_json2c(): assert result.stdout == '#include QMK_KEYBOARD_H\nconst uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {\t[0] = LAYOUT_ortho_1x1(KC_A)};\n\n' +def test_json2c_macros(): + result = check_subcommand("json2c", 'keyboards/handwired/pytest/macro/keymaps/default/keymap.json') + check_returncode(result) + assert 'LAYOUT_ortho_1x1(MACRO_0)' in result.stdout + assert 'case MACRO_0:' in result.stdout + assert 'SEND_STRING("Hello, World!"SS_TAP(X_ENTER));' in result.stdout + + def test_json2c_stdin(): result = check_subcommand_stdin('keyboards/handwired/pytest/has_template/keymaps/default_json/keymap.json', 'json2c', '-') check_returncode(result) @@ -151,7 +159,7 @@ def test_json2c_stdin(): def test_info(): result = check_subcommand('info', '-kb', 'handwired/pytest/basic') check_returncode(result) - assert 'Keyboard Name: handwired/pytest/basic' in result.stdout + assert 'Keyboard Name: pytest' in result.stdout assert 'Processor: atmega32u4' in result.stdout assert 'Layout:' not in result.stdout assert 'k0' not in result.stdout @@ -160,7 +168,7 @@ def test_info(): def test_info_keyboard_render(): result = check_subcommand('info', '-kb', 'handwired/pytest/basic', '-l') check_returncode(result) - assert 'Keyboard Name: handwired/pytest/basic' in result.stdout + assert 'Keyboard Name: pytest' in result.stdout assert 'Processor: atmega32u4' in result.stdout assert 'Layouts:' in result.stdout assert 'k0' in result.stdout @@ -169,7 +177,7 @@ def test_info_keyboard_render(): def test_info_keymap_render(): result = check_subcommand('info', '-kb', 'handwired/pytest/basic', '-km', 'default_json') check_returncode(result) - assert 'Keyboard Name: handwired/pytest/basic' in result.stdout + assert 'Keyboard Name: pytest' in result.stdout assert 'Processor: atmega32u4' in result.stdout if is_windows: @@ -181,7 +189,7 @@ def test_info_keymap_render(): def test_info_matrix_render(): result = check_subcommand('info', '-kb', 'handwired/pytest/basic', '-m') check_returncode(result) - assert 'Keyboard Name: handwired/pytest/basic' in result.stdout + assert 'Keyboard Name: pytest' in result.stdout assert 'Processor: atmega32u4' in result.stdout assert 'LAYOUT_ortho_1x1' in result.stdout @@ -242,7 +250,7 @@ def test_generate_config_h(): assert '# define DESCRIPTION handwired/pytest/basic' in result.stdout assert '# define DIODE_DIRECTION COL2ROW' in result.stdout assert '# define MANUFACTURER none' in result.stdout - assert '# define PRODUCT handwired/pytest/basic' in result.stdout + assert '# define PRODUCT pytest' in result.stdout assert '# define PRODUCT_ID 0x6465' in result.stdout assert '# define VENDOR_ID 0xFEED' in result.stdout assert '# define MATRIX_COLS 1' in result.stdout @@ -258,6 +266,12 @@ def test_generate_rules_mk(): assert 'MCU ?= atmega32u4' in result.stdout +def test_generate_version_h(): + result = check_subcommand('generate-version-h') + check_returncode(result) + assert '#define QMK_VERSION' in result.stdout + + def test_generate_layouts(): result = check_subcommand('generate-layouts', '-kb', 'handwired/pytest/basic') check_returncode(result) @@ -267,7 +281,7 @@ def test_generate_layouts(): def test_format_json_keyboard(): result = check_subcommand('format-json', '--format', 'keyboard', 'lib/python/qmk/tests/minimal_info.json') check_returncode(result) - assert result.stdout == '{\n "keyboard_name": "tester",\n "maintainer": "qmk",\n "height": 5,\n "width": 15,\n "layouts": {\n "LAYOUT": {\n "layout": [\n { "label": "KC_A", "matrix": [0, 0], "x": 0, "y": 0 }\n ]\n }\n }\n}\n' + assert result.stdout == '{\n "keyboard_name": "tester",\n "maintainer": "qmk",\n "layouts": {\n "LAYOUT": {\n "layout": [\n { "label": "KC_A", "matrix": [0, 0], "x": 0, "y": 0 }\n ]\n }\n }\n}\n' def test_format_json_keymap(): @@ -279,7 +293,7 @@ def test_format_json_keymap(): def test_format_json_keyboard_auto(): result = check_subcommand('format-json', '--format', 'auto', 'lib/python/qmk/tests/minimal_info.json') check_returncode(result) - assert result.stdout == '{\n "keyboard_name": "tester",\n "maintainer": "qmk",\n "height": 5,\n "width": 15,\n "layouts": {\n "LAYOUT": {\n "layout": [\n { "label": "KC_A", "matrix": [0, 0], "x": 0, "y": 0 }\n ]\n }\n }\n}\n' + assert result.stdout == '{\n "keyboard_name": "tester",\n "maintainer": "qmk",\n "layouts": {\n "LAYOUT": {\n "layout": [\n { "label": "KC_A", "matrix": [0, 0], "x": 0, "y": 0 }\n ]\n }\n }\n}\n' def test_format_json_keymap_auto(): diff --git a/lib/python/qmk/tests/test_qmk_keymap.py b/lib/python/qmk/tests/test_qmk_keymap.py index b9e80df67249..5e2efc12329b 100644 --- a/lib/python/qmk/tests/test_qmk_keymap.py +++ b/lib/python/qmk/tests/test_qmk_keymap.py @@ -22,7 +22,13 @@ def test_template_json_pytest_has_template(): def test_generate_c_pytest_has_template(): - templ = qmk.keymap.generate_c('handwired/pytest/has_template', 'LAYOUT', [['KC_A']]) + keymap_json = { + 'keyboard': 'handwired/pytest/has_template', + 'layout': 'LAYOUT', + 'layers': [['KC_A']], + 'macros': None, + } + templ = qmk.keymap.generate_c(keymap_json) assert templ == '#include QMK_KEYBOARD_H\nconst uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {\t[0] = LAYOUT(KC_A)};\n' diff --git a/lib/ugfx b/lib/ugfx deleted file mode 160000 index 40b48f470add..000000000000 --- a/lib/ugfx +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 40b48f470addad6a4fb1177de1a69a181158739b diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/.gitattributes b/lib/usbhost/USB_Host_Shield_2.0/.gitattributes similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/.gitattributes rename to lib/usbhost/USB_Host_Shield_2.0/.gitattributes diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/.gitignore b/lib/usbhost/USB_Host_Shield_2.0/.gitignore similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/.gitignore rename to lib/usbhost/USB_Host_Shield_2.0/.gitignore diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/.gitmodules b/lib/usbhost/USB_Host_Shield_2.0/.gitmodules similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/.gitmodules rename to lib/usbhost/USB_Host_Shield_2.0/.gitmodules diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/BTD.cpp b/lib/usbhost/USB_Host_Shield_2.0/BTD.cpp old mode 100755 new mode 100644 similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/BTD.cpp rename to lib/usbhost/USB_Host_Shield_2.0/BTD.cpp diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/BTD.h b/lib/usbhost/USB_Host_Shield_2.0/BTD.h old mode 100755 new mode 100644 similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/BTD.h rename to lib/usbhost/USB_Host_Shield_2.0/BTD.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/BTHID.cpp b/lib/usbhost/USB_Host_Shield_2.0/BTHID.cpp similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/BTHID.cpp rename to lib/usbhost/USB_Host_Shield_2.0/BTHID.cpp diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/BTHID.h b/lib/usbhost/USB_Host_Shield_2.0/BTHID.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/BTHID.h rename to lib/usbhost/USB_Host_Shield_2.0/BTHID.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/PS3BT.cpp b/lib/usbhost/USB_Host_Shield_2.0/PS3BT.cpp similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/PS3BT.cpp rename to lib/usbhost/USB_Host_Shield_2.0/PS3BT.cpp diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/PS3BT.h b/lib/usbhost/USB_Host_Shield_2.0/PS3BT.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/PS3BT.h rename to lib/usbhost/USB_Host_Shield_2.0/PS3BT.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/PS3Enums.h b/lib/usbhost/USB_Host_Shield_2.0/PS3Enums.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/PS3Enums.h rename to lib/usbhost/USB_Host_Shield_2.0/PS3Enums.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/PS3USB.cpp b/lib/usbhost/USB_Host_Shield_2.0/PS3USB.cpp old mode 100755 new mode 100644 similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/PS3USB.cpp rename to lib/usbhost/USB_Host_Shield_2.0/PS3USB.cpp diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/PS3USB.h b/lib/usbhost/USB_Host_Shield_2.0/PS3USB.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/PS3USB.h rename to lib/usbhost/USB_Host_Shield_2.0/PS3USB.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/PS4BT.h b/lib/usbhost/USB_Host_Shield_2.0/PS4BT.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/PS4BT.h rename to lib/usbhost/USB_Host_Shield_2.0/PS4BT.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/PS4Parser.cpp b/lib/usbhost/USB_Host_Shield_2.0/PS4Parser.cpp similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/PS4Parser.cpp rename to lib/usbhost/USB_Host_Shield_2.0/PS4Parser.cpp diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/PS4Parser.h b/lib/usbhost/USB_Host_Shield_2.0/PS4Parser.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/PS4Parser.h rename to lib/usbhost/USB_Host_Shield_2.0/PS4Parser.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/PS4USB.h b/lib/usbhost/USB_Host_Shield_2.0/PS4USB.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/PS4USB.h rename to lib/usbhost/USB_Host_Shield_2.0/PS4USB.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/PSBuzz.cpp b/lib/usbhost/USB_Host_Shield_2.0/PSBuzz.cpp similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/PSBuzz.cpp rename to lib/usbhost/USB_Host_Shield_2.0/PSBuzz.cpp diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/PSBuzz.h b/lib/usbhost/USB_Host_Shield_2.0/PSBuzz.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/PSBuzz.h rename to lib/usbhost/USB_Host_Shield_2.0/PSBuzz.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/README.md b/lib/usbhost/USB_Host_Shield_2.0/README.md similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/README.md rename to lib/usbhost/USB_Host_Shield_2.0/README.md diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/SPP.cpp b/lib/usbhost/USB_Host_Shield_2.0/SPP.cpp similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/SPP.cpp rename to lib/usbhost/USB_Host_Shield_2.0/SPP.cpp diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/SPP.h b/lib/usbhost/USB_Host_Shield_2.0/SPP.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/SPP.h rename to lib/usbhost/USB_Host_Shield_2.0/SPP.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/Usb.cpp b/lib/usbhost/USB_Host_Shield_2.0/Usb.cpp similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/Usb.cpp rename to lib/usbhost/USB_Host_Shield_2.0/Usb.cpp diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/Usb.h b/lib/usbhost/USB_Host_Shield_2.0/Usb.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/Usb.h rename to lib/usbhost/USB_Host_Shield_2.0/Usb.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/UsbCore.h b/lib/usbhost/USB_Host_Shield_2.0/UsbCore.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/UsbCore.h rename to lib/usbhost/USB_Host_Shield_2.0/UsbCore.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/Wii.cpp b/lib/usbhost/USB_Host_Shield_2.0/Wii.cpp old mode 100755 new mode 100644 similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/Wii.cpp rename to lib/usbhost/USB_Host_Shield_2.0/Wii.cpp diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/Wii.h b/lib/usbhost/USB_Host_Shield_2.0/Wii.h old mode 100755 new mode 100644 similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/Wii.h rename to lib/usbhost/USB_Host_Shield_2.0/Wii.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/WiiCameraReadme.md b/lib/usbhost/USB_Host_Shield_2.0/WiiCameraReadme.md similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/WiiCameraReadme.md rename to lib/usbhost/USB_Host_Shield_2.0/WiiCameraReadme.md diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/XBOXOLD.cpp b/lib/usbhost/USB_Host_Shield_2.0/XBOXOLD.cpp similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/XBOXOLD.cpp rename to lib/usbhost/USB_Host_Shield_2.0/XBOXOLD.cpp diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/XBOXOLD.h b/lib/usbhost/USB_Host_Shield_2.0/XBOXOLD.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/XBOXOLD.h rename to lib/usbhost/USB_Host_Shield_2.0/XBOXOLD.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/XBOXONE.cpp b/lib/usbhost/USB_Host_Shield_2.0/XBOXONE.cpp similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/XBOXONE.cpp rename to lib/usbhost/USB_Host_Shield_2.0/XBOXONE.cpp diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/XBOXONE.h b/lib/usbhost/USB_Host_Shield_2.0/XBOXONE.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/XBOXONE.h rename to lib/usbhost/USB_Host_Shield_2.0/XBOXONE.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/XBOXRECV.cpp b/lib/usbhost/USB_Host_Shield_2.0/XBOXRECV.cpp similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/XBOXRECV.cpp rename to lib/usbhost/USB_Host_Shield_2.0/XBOXRECV.cpp diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/XBOXRECV.h b/lib/usbhost/USB_Host_Shield_2.0/XBOXRECV.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/XBOXRECV.h rename to lib/usbhost/USB_Host_Shield_2.0/XBOXRECV.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/XBOXUSB.cpp b/lib/usbhost/USB_Host_Shield_2.0/XBOXUSB.cpp similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/XBOXUSB.cpp rename to lib/usbhost/USB_Host_Shield_2.0/XBOXUSB.cpp diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/XBOXUSB.h b/lib/usbhost/USB_Host_Shield_2.0/XBOXUSB.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/XBOXUSB.h rename to lib/usbhost/USB_Host_Shield_2.0/XBOXUSB.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/address.h b/lib/usbhost/USB_Host_Shield_2.0/address.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/address.h rename to lib/usbhost/USB_Host_Shield_2.0/address.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/adk.cpp b/lib/usbhost/USB_Host_Shield_2.0/adk.cpp similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/adk.cpp rename to lib/usbhost/USB_Host_Shield_2.0/adk.cpp diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/adk.h b/lib/usbhost/USB_Host_Shield_2.0/adk.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/adk.h rename to lib/usbhost/USB_Host_Shield_2.0/adk.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/avrpins.h b/lib/usbhost/USB_Host_Shield_2.0/avrpins.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/avrpins.h rename to lib/usbhost/USB_Host_Shield_2.0/avrpins.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/cdc_XR21B1411.cpp b/lib/usbhost/USB_Host_Shield_2.0/cdc_XR21B1411.cpp similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/cdc_XR21B1411.cpp rename to lib/usbhost/USB_Host_Shield_2.0/cdc_XR21B1411.cpp diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/cdc_XR21B1411.h b/lib/usbhost/USB_Host_Shield_2.0/cdc_XR21B1411.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/cdc_XR21B1411.h rename to lib/usbhost/USB_Host_Shield_2.0/cdc_XR21B1411.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/cdcacm.cpp b/lib/usbhost/USB_Host_Shield_2.0/cdcacm.cpp similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/cdcacm.cpp rename to lib/usbhost/USB_Host_Shield_2.0/cdcacm.cpp diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/cdcacm.h b/lib/usbhost/USB_Host_Shield_2.0/cdcacm.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/cdcacm.h rename to lib/usbhost/USB_Host_Shield_2.0/cdcacm.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/cdcftdi.cpp b/lib/usbhost/USB_Host_Shield_2.0/cdcftdi.cpp similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/cdcftdi.cpp rename to lib/usbhost/USB_Host_Shield_2.0/cdcftdi.cpp diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/cdcftdi.h b/lib/usbhost/USB_Host_Shield_2.0/cdcftdi.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/cdcftdi.h rename to lib/usbhost/USB_Host_Shield_2.0/cdcftdi.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/cdcprolific.cpp b/lib/usbhost/USB_Host_Shield_2.0/cdcprolific.cpp similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/cdcprolific.cpp rename to lib/usbhost/USB_Host_Shield_2.0/cdcprolific.cpp diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/cdcprolific.h b/lib/usbhost/USB_Host_Shield_2.0/cdcprolific.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/cdcprolific.h rename to lib/usbhost/USB_Host_Shield_2.0/cdcprolific.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/confdescparser.h b/lib/usbhost/USB_Host_Shield_2.0/confdescparser.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/confdescparser.h rename to lib/usbhost/USB_Host_Shield_2.0/confdescparser.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/controllerEnums.h b/lib/usbhost/USB_Host_Shield_2.0/controllerEnums.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/controllerEnums.h rename to lib/usbhost/USB_Host_Shield_2.0/controllerEnums.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/Bluetooth/BTHID/BTHID.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/Bluetooth/BTHID/BTHID.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/Bluetooth/BTHID/BTHID.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/Bluetooth/BTHID/BTHID.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/Bluetooth/BTHID/KeyboardParser.h b/lib/usbhost/USB_Host_Shield_2.0/examples/Bluetooth/BTHID/KeyboardParser.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/Bluetooth/BTHID/KeyboardParser.h rename to lib/usbhost/USB_Host_Shield_2.0/examples/Bluetooth/BTHID/KeyboardParser.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/Bluetooth/BTHID/MouseParser.h b/lib/usbhost/USB_Host_Shield_2.0/examples/Bluetooth/BTHID/MouseParser.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/Bluetooth/BTHID/MouseParser.h rename to lib/usbhost/USB_Host_Shield_2.0/examples/Bluetooth/BTHID/MouseParser.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/Bluetooth/PS3BT/PS3BT.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/Bluetooth/PS3BT/PS3BT.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/Bluetooth/PS3BT/PS3BT.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/Bluetooth/PS3BT/PS3BT.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/Bluetooth/PS3Multi/PS3Multi.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/Bluetooth/PS3Multi/PS3Multi.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/Bluetooth/PS3Multi/PS3Multi.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/Bluetooth/PS3Multi/PS3Multi.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/Bluetooth/PS3SPP/PS3SPP.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/Bluetooth/PS3SPP/PS3SPP.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/Bluetooth/PS3SPP/PS3SPP.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/Bluetooth/PS3SPP/PS3SPP.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/Bluetooth/PS4BT/PS4BT.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/Bluetooth/PS4BT/PS4BT.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/Bluetooth/PS4BT/PS4BT.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/Bluetooth/PS4BT/PS4BT.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/Bluetooth/SPP/SPP.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/Bluetooth/SPP/SPP.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/Bluetooth/SPP/SPP.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/Bluetooth/SPP/SPP.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/Bluetooth/SPPMulti/SPPMulti.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/Bluetooth/SPPMulti/SPPMulti.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/Bluetooth/SPPMulti/SPPMulti.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/Bluetooth/SPPMulti/SPPMulti.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/Bluetooth/Wii/Wii.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/Bluetooth/Wii/Wii.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/Bluetooth/Wii/Wii.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/Bluetooth/Wii/Wii.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/Bluetooth/WiiBalanceBoard/WiiBalanceBoard.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/Bluetooth/WiiBalanceBoard/WiiBalanceBoard.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/Bluetooth/WiiBalanceBoard/WiiBalanceBoard.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/Bluetooth/WiiBalanceBoard/WiiBalanceBoard.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/Bluetooth/WiiIRCamera/WiiIRCamera.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/Bluetooth/WiiIRCamera/WiiIRCamera.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/Bluetooth/WiiIRCamera/WiiIRCamera.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/Bluetooth/WiiIRCamera/WiiIRCamera.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/Bluetooth/WiiMulti/WiiMulti.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/Bluetooth/WiiMulti/WiiMulti.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/Bluetooth/WiiMulti/WiiMulti.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/Bluetooth/WiiMulti/WiiMulti.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/Bluetooth/WiiUProController/WiiUProController.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/Bluetooth/WiiUProController/WiiUProController.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/Bluetooth/WiiUProController/WiiUProController.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/Bluetooth/WiiUProController/WiiUProController.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/HID/USBHIDBootKbd/USBHIDBootKbd.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/HID/USBHIDBootKbd/USBHIDBootKbd.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/HID/USBHIDBootKbd/USBHIDBootKbd.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/HID/USBHIDBootKbd/USBHIDBootKbd.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/HID/USBHIDBootKbdAndMouse/USBHIDBootKbdAndMouse.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/HID/USBHIDBootKbdAndMouse/USBHIDBootKbdAndMouse.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/HID/USBHIDBootKbdAndMouse/USBHIDBootKbdAndMouse.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/HID/USBHIDBootKbdAndMouse/USBHIDBootKbdAndMouse.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/HID/USBHIDBootMouse/USBHIDBootMouse.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/HID/USBHIDBootMouse/USBHIDBootMouse.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/HID/USBHIDBootMouse/USBHIDBootMouse.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/HID/USBHIDBootMouse/USBHIDBootMouse.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/HID/USBHIDJoystick/USBHIDJoystick.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/HID/USBHIDJoystick/USBHIDJoystick.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/HID/USBHIDJoystick/USBHIDJoystick.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/HID/USBHIDJoystick/USBHIDJoystick.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/HID/USBHIDJoystick/hidjoystickrptparser.cpp b/lib/usbhost/USB_Host_Shield_2.0/examples/HID/USBHIDJoystick/hidjoystickrptparser.cpp similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/HID/USBHIDJoystick/hidjoystickrptparser.cpp rename to lib/usbhost/USB_Host_Shield_2.0/examples/HID/USBHIDJoystick/hidjoystickrptparser.cpp diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/HID/USBHIDJoystick/hidjoystickrptparser.h b/lib/usbhost/USB_Host_Shield_2.0/examples/HID/USBHIDJoystick/hidjoystickrptparser.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/HID/USBHIDJoystick/hidjoystickrptparser.h rename to lib/usbhost/USB_Host_Shield_2.0/examples/HID/USBHIDJoystick/hidjoystickrptparser.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/HID/USBHID_desc/USBHID_desc.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/HID/USBHID_desc/USBHID_desc.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/HID/USBHID_desc/USBHID_desc.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/HID/USBHID_desc/USBHID_desc.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/HID/USBHID_desc/pgmstrings.h b/lib/usbhost/USB_Host_Shield_2.0/examples/HID/USBHID_desc/pgmstrings.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/HID/USBHID_desc/pgmstrings.h rename to lib/usbhost/USB_Host_Shield_2.0/examples/HID/USBHID_desc/pgmstrings.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/HID/le3dp/le3dp.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/HID/le3dp/le3dp.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/HID/le3dp/le3dp.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/HID/le3dp/le3dp.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/HID/le3dp/le3dp_rptparser.cpp b/lib/usbhost/USB_Host_Shield_2.0/examples/HID/le3dp/le3dp_rptparser.cpp similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/HID/le3dp/le3dp_rptparser.cpp rename to lib/usbhost/USB_Host_Shield_2.0/examples/HID/le3dp/le3dp_rptparser.cpp diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/HID/le3dp/le3dp_rptparser.h b/lib/usbhost/USB_Host_Shield_2.0/examples/HID/le3dp/le3dp_rptparser.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/HID/le3dp/le3dp_rptparser.h rename to lib/usbhost/USB_Host_Shield_2.0/examples/HID/le3dp/le3dp_rptparser.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/HID/scale/scale.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/HID/scale/scale.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/HID/scale/scale.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/HID/scale/scale.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/HID/scale/scale_rptparser.cpp b/lib/usbhost/USB_Host_Shield_2.0/examples/HID/scale/scale_rptparser.cpp similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/HID/scale/scale_rptparser.cpp rename to lib/usbhost/USB_Host_Shield_2.0/examples/HID/scale/scale_rptparser.cpp diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/HID/scale/scale_rptparser.h b/lib/usbhost/USB_Host_Shield_2.0/examples/HID/scale/scale_rptparser.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/HID/scale/scale_rptparser.h rename to lib/usbhost/USB_Host_Shield_2.0/examples/HID/scale/scale_rptparser.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/PS3USB/PS3USB.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/PS3USB/PS3USB.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/PS3USB/PS3USB.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/PS3USB/PS3USB.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/PS4USB/PS4USB.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/PS4USB/PS4USB.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/PS4USB/PS4USB.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/PS4USB/PS4USB.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/PSBuzz/PSBuzz.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/PSBuzz/PSBuzz.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/PSBuzz/PSBuzz.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/PSBuzz/PSBuzz.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/USB_desc/USB_desc.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/USB_desc/USB_desc.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/USB_desc/USB_desc.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/USB_desc/USB_desc.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/USB_desc/pgmstrings.h b/lib/usbhost/USB_Host_Shield_2.0/examples/USB_desc/pgmstrings.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/USB_desc/pgmstrings.h rename to lib/usbhost/USB_Host_Shield_2.0/examples/USB_desc/pgmstrings.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/Xbox/XBOXOLD/XBOXOLD.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/Xbox/XBOXOLD/XBOXOLD.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/Xbox/XBOXOLD/XBOXOLD.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/Xbox/XBOXOLD/XBOXOLD.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/Xbox/XBOXONE/XBOXONE.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/Xbox/XBOXONE/XBOXONE.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/Xbox/XBOXONE/XBOXONE.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/Xbox/XBOXONE/XBOXONE.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/Xbox/XBOXRECV/XBOXRECV.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/Xbox/XBOXRECV/XBOXRECV.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/Xbox/XBOXRECV/XBOXRECV.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/Xbox/XBOXRECV/XBOXRECV.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/Xbox/XBOXUSB/XBOXUSB.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/Xbox/XBOXUSB/XBOXUSB.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/Xbox/XBOXUSB/XBOXUSB.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/Xbox/XBOXUSB/XBOXUSB.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/acm/acm_terminal/acm_terminal.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/acm/acm_terminal/acm_terminal.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/acm/acm_terminal/acm_terminal.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/acm/acm_terminal/acm_terminal.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/acm/acm_terminal/pgmstrings.h b/lib/usbhost/USB_Host_Shield_2.0/examples/acm/acm_terminal/pgmstrings.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/acm/acm_terminal/pgmstrings.h rename to lib/usbhost/USB_Host_Shield_2.0/examples/acm/acm_terminal/pgmstrings.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/adk/ArduinoBlinkLED/ArduinoBlinkLED.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/adk/ArduinoBlinkLED/ArduinoBlinkLED.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/adk/ArduinoBlinkLED/ArduinoBlinkLED.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/adk/ArduinoBlinkLED/ArduinoBlinkLED.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/adk/adk_barcode/adk_barcode.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/adk/adk_barcode/adk_barcode.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/adk/adk_barcode/adk_barcode.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/adk/adk_barcode/adk_barcode.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/adk/demokit_20/demokit_20.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/adk/demokit_20/demokit_20.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/adk/demokit_20/demokit_20.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/adk/demokit_20/demokit_20.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/adk/term_test/term_test.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/adk/term_test/term_test.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/adk/term_test/term_test.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/adk/term_test/term_test.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/adk/term_time/term_time.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/adk/term_time/term_time.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/adk/term_time/term_time.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/adk/term_time/term_time.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/board_qc/board_qc.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/board_qc/board_qc.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/board_qc/board_qc.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/board_qc/board_qc.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/cdc_XR21B1411/XR_terminal/XR_terminal.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/cdc_XR21B1411/XR_terminal/XR_terminal.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/cdc_XR21B1411/XR_terminal/XR_terminal.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/cdc_XR21B1411/XR_terminal/XR_terminal.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/ftdi/USBFTDILoopback/USBFTDILoopback.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/ftdi/USBFTDILoopback/USBFTDILoopback.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/ftdi/USBFTDILoopback/USBFTDILoopback.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/ftdi/USBFTDILoopback/USBFTDILoopback.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/ftdi/USBFTDILoopback/pgmstrings.h b/lib/usbhost/USB_Host_Shield_2.0/examples/ftdi/USBFTDILoopback/pgmstrings.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/ftdi/USBFTDILoopback/pgmstrings.h rename to lib/usbhost/USB_Host_Shield_2.0/examples/ftdi/USBFTDILoopback/pgmstrings.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/hub_demo/hub_demo.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/hub_demo/hub_demo.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/hub_demo/hub_demo.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/hub_demo/hub_demo.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/hub_demo/pgmstrings.h b/lib/usbhost/USB_Host_Shield_2.0/examples/hub_demo/pgmstrings.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/hub_demo/pgmstrings.h rename to lib/usbhost/USB_Host_Shield_2.0/examples/hub_demo/pgmstrings.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/max_LCD/max_LCD.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/max_LCD/max_LCD.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/max_LCD/max_LCD.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/max_LCD/max_LCD.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/pl2303/pl2303_gprs_terminal/pl2303_gprs_terminal.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/pl2303/pl2303_gprs_terminal/pl2303_gprs_terminal.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/pl2303/pl2303_gprs_terminal/pl2303_gprs_terminal.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/pl2303/pl2303_gprs_terminal/pl2303_gprs_terminal.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/pl2303/pl2303_gps/pl2303_gps.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/pl2303/pl2303_gps/pl2303_gps.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/pl2303/pl2303_gps/pl2303_gps.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/pl2303/pl2303_gps/pl2303_gps.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/pl2303/pl2303_tinygps/pl2303_tinygps.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/pl2303/pl2303_tinygps/pl2303_tinygps.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/pl2303/pl2303_tinygps/pl2303_tinygps.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/pl2303/pl2303_tinygps/pl2303_tinygps.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/pl2303/pl2303_xbee_terminal/pl2303_xbee_terminal.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/pl2303/pl2303_xbee_terminal/pl2303_xbee_terminal.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/pl2303/pl2303_xbee_terminal/pl2303_xbee_terminal.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/pl2303/pl2303_xbee_terminal/pl2303_xbee_terminal.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/testusbhostFAT/Makefile b/lib/usbhost/USB_Host_Shield_2.0/examples/testusbhostFAT/Makefile similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/testusbhostFAT/Makefile rename to lib/usbhost/USB_Host_Shield_2.0/examples/testusbhostFAT/Makefile diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/testusbhostFAT/README.md b/lib/usbhost/USB_Host_Shield_2.0/examples/testusbhostFAT/README.md similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/testusbhostFAT/README.md rename to lib/usbhost/USB_Host_Shield_2.0/examples/testusbhostFAT/README.md diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/testusbhostFAT/testusbhostFAT.ino b/lib/usbhost/USB_Host_Shield_2.0/examples/testusbhostFAT/testusbhostFAT.ino similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/testusbhostFAT/testusbhostFAT.ino rename to lib/usbhost/USB_Host_Shield_2.0/examples/testusbhostFAT/testusbhostFAT.ino diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/gpl2.txt b/lib/usbhost/USB_Host_Shield_2.0/gpl2.txt similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/gpl2.txt rename to lib/usbhost/USB_Host_Shield_2.0/gpl2.txt diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/hexdump.h b/lib/usbhost/USB_Host_Shield_2.0/hexdump.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/hexdump.h rename to lib/usbhost/USB_Host_Shield_2.0/hexdump.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/hid.cpp b/lib/usbhost/USB_Host_Shield_2.0/hid.cpp similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/hid.cpp rename to lib/usbhost/USB_Host_Shield_2.0/hid.cpp diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/hid.h b/lib/usbhost/USB_Host_Shield_2.0/hid.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/hid.h rename to lib/usbhost/USB_Host_Shield_2.0/hid.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/hidboot.cpp b/lib/usbhost/USB_Host_Shield_2.0/hidboot.cpp similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/hidboot.cpp rename to lib/usbhost/USB_Host_Shield_2.0/hidboot.cpp diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/hidboot.h b/lib/usbhost/USB_Host_Shield_2.0/hidboot.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/hidboot.h rename to lib/usbhost/USB_Host_Shield_2.0/hidboot.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/hidescriptorparser.cpp b/lib/usbhost/USB_Host_Shield_2.0/hidescriptorparser.cpp similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/hidescriptorparser.cpp rename to lib/usbhost/USB_Host_Shield_2.0/hidescriptorparser.cpp diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/hidescriptorparser.h b/lib/usbhost/USB_Host_Shield_2.0/hidescriptorparser.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/hidescriptorparser.h rename to lib/usbhost/USB_Host_Shield_2.0/hidescriptorparser.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/hiduniversal.cpp b/lib/usbhost/USB_Host_Shield_2.0/hiduniversal.cpp similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/hiduniversal.cpp rename to lib/usbhost/USB_Host_Shield_2.0/hiduniversal.cpp diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/hiduniversal.h b/lib/usbhost/USB_Host_Shield_2.0/hiduniversal.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/hiduniversal.h rename to lib/usbhost/USB_Host_Shield_2.0/hiduniversal.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/hidusagestr.h b/lib/usbhost/USB_Host_Shield_2.0/hidusagestr.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/hidusagestr.h rename to lib/usbhost/USB_Host_Shield_2.0/hidusagestr.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/hidusagetitlearrays.cpp b/lib/usbhost/USB_Host_Shield_2.0/hidusagetitlearrays.cpp similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/hidusagetitlearrays.cpp rename to lib/usbhost/USB_Host_Shield_2.0/hidusagetitlearrays.cpp diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/keywords.txt b/lib/usbhost/USB_Host_Shield_2.0/keywords.txt similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/keywords.txt rename to lib/usbhost/USB_Host_Shield_2.0/keywords.txt diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/library.json b/lib/usbhost/USB_Host_Shield_2.0/library.json similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/library.json rename to lib/usbhost/USB_Host_Shield_2.0/library.json diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/library.properties b/lib/usbhost/USB_Host_Shield_2.0/library.properties similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/library.properties rename to lib/usbhost/USB_Host_Shield_2.0/library.properties diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/macros.h b/lib/usbhost/USB_Host_Shield_2.0/macros.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/macros.h rename to lib/usbhost/USB_Host_Shield_2.0/macros.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/masstorage.cpp b/lib/usbhost/USB_Host_Shield_2.0/masstorage.cpp similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/masstorage.cpp rename to lib/usbhost/USB_Host_Shield_2.0/masstorage.cpp diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/masstorage.h b/lib/usbhost/USB_Host_Shield_2.0/masstorage.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/masstorage.h rename to lib/usbhost/USB_Host_Shield_2.0/masstorage.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/max3421e.h b/lib/usbhost/USB_Host_Shield_2.0/max3421e.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/max3421e.h rename to lib/usbhost/USB_Host_Shield_2.0/max3421e.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/max_LCD.cpp b/lib/usbhost/USB_Host_Shield_2.0/max_LCD.cpp similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/max_LCD.cpp rename to lib/usbhost/USB_Host_Shield_2.0/max_LCD.cpp diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/max_LCD.h b/lib/usbhost/USB_Host_Shield_2.0/max_LCD.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/max_LCD.h rename to lib/usbhost/USB_Host_Shield_2.0/max_LCD.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/message.cpp b/lib/usbhost/USB_Host_Shield_2.0/message.cpp similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/message.cpp rename to lib/usbhost/USB_Host_Shield_2.0/message.cpp diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/message.h b/lib/usbhost/USB_Host_Shield_2.0/message.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/message.h rename to lib/usbhost/USB_Host_Shield_2.0/message.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/parsetools.cpp b/lib/usbhost/USB_Host_Shield_2.0/parsetools.cpp similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/parsetools.cpp rename to lib/usbhost/USB_Host_Shield_2.0/parsetools.cpp diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/parsetools.h b/lib/usbhost/USB_Host_Shield_2.0/parsetools.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/parsetools.h rename to lib/usbhost/USB_Host_Shield_2.0/parsetools.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/printhex.h b/lib/usbhost/USB_Host_Shield_2.0/printhex.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/printhex.h rename to lib/usbhost/USB_Host_Shield_2.0/printhex.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/settings.h b/lib/usbhost/USB_Host_Shield_2.0/settings.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/settings.h rename to lib/usbhost/USB_Host_Shield_2.0/settings.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/sink_parser.h b/lib/usbhost/USB_Host_Shield_2.0/sink_parser.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/sink_parser.h rename to lib/usbhost/USB_Host_Shield_2.0/sink_parser.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/usb_ch9.h b/lib/usbhost/USB_Host_Shield_2.0/usb_ch9.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/usb_ch9.h rename to lib/usbhost/USB_Host_Shield_2.0/usb_ch9.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/usbhost.h b/lib/usbhost/USB_Host_Shield_2.0/usbhost.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/usbhost.h rename to lib/usbhost/USB_Host_Shield_2.0/usbhost.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/usbhub.cpp b/lib/usbhost/USB_Host_Shield_2.0/usbhub.cpp similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/usbhub.cpp rename to lib/usbhost/USB_Host_Shield_2.0/usbhub.cpp diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/usbhub.h b/lib/usbhost/USB_Host_Shield_2.0/usbhub.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/usbhub.h rename to lib/usbhost/USB_Host_Shield_2.0/usbhub.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/version_helper.h b/lib/usbhost/USB_Host_Shield_2.0/version_helper.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/version_helper.h rename to lib/usbhost/USB_Host_Shield_2.0/version_helper.h diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/xboxEnums.h b/lib/usbhost/USB_Host_Shield_2.0/xboxEnums.h similarity index 100% rename from tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/xboxEnums.h rename to lib/usbhost/USB_Host_Shield_2.0/xboxEnums.h diff --git a/tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/Arduino.h b/lib/usbhost/arduino-1.0.1/cores/arduino/Arduino.h similarity index 100% rename from tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/Arduino.h rename to lib/usbhost/arduino-1.0.1/cores/arduino/Arduino.h diff --git a/tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/CDC.cpp b/lib/usbhost/arduino-1.0.1/cores/arduino/CDC.cpp similarity index 100% rename from tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/CDC.cpp rename to lib/usbhost/arduino-1.0.1/cores/arduino/CDC.cpp diff --git a/tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/Client.h b/lib/usbhost/arduino-1.0.1/cores/arduino/Client.h similarity index 100% rename from tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/Client.h rename to lib/usbhost/arduino-1.0.1/cores/arduino/Client.h diff --git a/tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/HID.cpp b/lib/usbhost/arduino-1.0.1/cores/arduino/HID.cpp similarity index 100% rename from tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/HID.cpp rename to lib/usbhost/arduino-1.0.1/cores/arduino/HID.cpp diff --git a/tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/HardwareSerial.cpp b/lib/usbhost/arduino-1.0.1/cores/arduino/HardwareSerial.cpp similarity index 100% rename from tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/HardwareSerial.cpp rename to lib/usbhost/arduino-1.0.1/cores/arduino/HardwareSerial.cpp diff --git a/tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/HardwareSerial.h b/lib/usbhost/arduino-1.0.1/cores/arduino/HardwareSerial.h similarity index 100% rename from tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/HardwareSerial.h rename to lib/usbhost/arduino-1.0.1/cores/arduino/HardwareSerial.h diff --git a/tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/IPAddress.cpp b/lib/usbhost/arduino-1.0.1/cores/arduino/IPAddress.cpp similarity index 100% rename from tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/IPAddress.cpp rename to lib/usbhost/arduino-1.0.1/cores/arduino/IPAddress.cpp diff --git a/tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/IPAddress.h b/lib/usbhost/arduino-1.0.1/cores/arduino/IPAddress.h similarity index 100% rename from tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/IPAddress.h rename to lib/usbhost/arduino-1.0.1/cores/arduino/IPAddress.h diff --git a/tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/Platform.h b/lib/usbhost/arduino-1.0.1/cores/arduino/Platform.h similarity index 100% rename from tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/Platform.h rename to lib/usbhost/arduino-1.0.1/cores/arduino/Platform.h diff --git a/tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/Print.cpp b/lib/usbhost/arduino-1.0.1/cores/arduino/Print.cpp similarity index 100% rename from tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/Print.cpp rename to lib/usbhost/arduino-1.0.1/cores/arduino/Print.cpp diff --git a/tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/Print.h b/lib/usbhost/arduino-1.0.1/cores/arduino/Print.h similarity index 100% rename from tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/Print.h rename to lib/usbhost/arduino-1.0.1/cores/arduino/Print.h diff --git a/tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/Printable.h b/lib/usbhost/arduino-1.0.1/cores/arduino/Printable.h similarity index 100% rename from tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/Printable.h rename to lib/usbhost/arduino-1.0.1/cores/arduino/Printable.h diff --git a/tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/Server.h b/lib/usbhost/arduino-1.0.1/cores/arduino/Server.h similarity index 100% rename from tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/Server.h rename to lib/usbhost/arduino-1.0.1/cores/arduino/Server.h diff --git a/tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/Stream.cpp b/lib/usbhost/arduino-1.0.1/cores/arduino/Stream.cpp similarity index 100% rename from tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/Stream.cpp rename to lib/usbhost/arduino-1.0.1/cores/arduino/Stream.cpp diff --git a/tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/Stream.h b/lib/usbhost/arduino-1.0.1/cores/arduino/Stream.h similarity index 100% rename from tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/Stream.h rename to lib/usbhost/arduino-1.0.1/cores/arduino/Stream.h diff --git a/tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/Tone.cpp b/lib/usbhost/arduino-1.0.1/cores/arduino/Tone.cpp similarity index 100% rename from tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/Tone.cpp rename to lib/usbhost/arduino-1.0.1/cores/arduino/Tone.cpp diff --git a/tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/USBAPI.h b/lib/usbhost/arduino-1.0.1/cores/arduino/USBAPI.h similarity index 100% rename from tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/USBAPI.h rename to lib/usbhost/arduino-1.0.1/cores/arduino/USBAPI.h diff --git a/tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/USBCore.cpp b/lib/usbhost/arduino-1.0.1/cores/arduino/USBCore.cpp similarity index 100% rename from tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/USBCore.cpp rename to lib/usbhost/arduino-1.0.1/cores/arduino/USBCore.cpp diff --git a/tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/USBCore.h b/lib/usbhost/arduino-1.0.1/cores/arduino/USBCore.h similarity index 100% rename from tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/USBCore.h rename to lib/usbhost/arduino-1.0.1/cores/arduino/USBCore.h diff --git a/tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/USBDesc.h b/lib/usbhost/arduino-1.0.1/cores/arduino/USBDesc.h similarity index 100% rename from tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/USBDesc.h rename to lib/usbhost/arduino-1.0.1/cores/arduino/USBDesc.h diff --git a/tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/Udp.h b/lib/usbhost/arduino-1.0.1/cores/arduino/Udp.h similarity index 100% rename from tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/Udp.h rename to lib/usbhost/arduino-1.0.1/cores/arduino/Udp.h diff --git a/tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/WCharacter.h b/lib/usbhost/arduino-1.0.1/cores/arduino/WCharacter.h similarity index 100% rename from tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/WCharacter.h rename to lib/usbhost/arduino-1.0.1/cores/arduino/WCharacter.h diff --git a/tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/WInterrupts.c b/lib/usbhost/arduino-1.0.1/cores/arduino/WInterrupts.c similarity index 100% rename from tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/WInterrupts.c rename to lib/usbhost/arduino-1.0.1/cores/arduino/WInterrupts.c diff --git a/tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/WMath.cpp b/lib/usbhost/arduino-1.0.1/cores/arduino/WMath.cpp similarity index 100% rename from tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/WMath.cpp rename to lib/usbhost/arduino-1.0.1/cores/arduino/WMath.cpp diff --git a/tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/WString.cpp b/lib/usbhost/arduino-1.0.1/cores/arduino/WString.cpp similarity index 100% rename from tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/WString.cpp rename to lib/usbhost/arduino-1.0.1/cores/arduino/WString.cpp diff --git a/tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/WString.h b/lib/usbhost/arduino-1.0.1/cores/arduino/WString.h similarity index 100% rename from tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/WString.h rename to lib/usbhost/arduino-1.0.1/cores/arduino/WString.h diff --git a/tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/binary.h b/lib/usbhost/arduino-1.0.1/cores/arduino/binary.h similarity index 100% rename from tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/binary.h rename to lib/usbhost/arduino-1.0.1/cores/arduino/binary.h diff --git a/tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/main.cpp b/lib/usbhost/arduino-1.0.1/cores/arduino/main.cpp similarity index 100% rename from tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/main.cpp rename to lib/usbhost/arduino-1.0.1/cores/arduino/main.cpp diff --git a/tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/new.cpp b/lib/usbhost/arduino-1.0.1/cores/arduino/new.cpp similarity index 100% rename from tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/new.cpp rename to lib/usbhost/arduino-1.0.1/cores/arduino/new.cpp diff --git a/tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/new.h b/lib/usbhost/arduino-1.0.1/cores/arduino/new.h similarity index 100% rename from tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/new.h rename to lib/usbhost/arduino-1.0.1/cores/arduino/new.h diff --git a/tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/wiring.c b/lib/usbhost/arduino-1.0.1/cores/arduino/wiring.c similarity index 100% rename from tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/wiring.c rename to lib/usbhost/arduino-1.0.1/cores/arduino/wiring.c diff --git a/tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/wiring_analog.c b/lib/usbhost/arduino-1.0.1/cores/arduino/wiring_analog.c similarity index 100% rename from tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/wiring_analog.c rename to lib/usbhost/arduino-1.0.1/cores/arduino/wiring_analog.c diff --git a/tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/wiring_digital.c b/lib/usbhost/arduino-1.0.1/cores/arduino/wiring_digital.c similarity index 100% rename from tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/wiring_digital.c rename to lib/usbhost/arduino-1.0.1/cores/arduino/wiring_digital.c diff --git a/tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/wiring_private.h b/lib/usbhost/arduino-1.0.1/cores/arduino/wiring_private.h similarity index 100% rename from tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/wiring_private.h rename to lib/usbhost/arduino-1.0.1/cores/arduino/wiring_private.h diff --git a/tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/wiring_pulse.c b/lib/usbhost/arduino-1.0.1/cores/arduino/wiring_pulse.c similarity index 100% rename from tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/wiring_pulse.c rename to lib/usbhost/arduino-1.0.1/cores/arduino/wiring_pulse.c diff --git a/tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/wiring_shift.c b/lib/usbhost/arduino-1.0.1/cores/arduino/wiring_shift.c similarity index 100% rename from tmk_core/protocol/usb_hid/arduino-1.0.1/cores/arduino/wiring_shift.c rename to lib/usbhost/arduino-1.0.1/cores/arduino/wiring_shift.c diff --git a/tmk_core/protocol/usb_hid/arduino-1.0.1/variants/eightanaloginputs/pins_arduino.h b/lib/usbhost/arduino-1.0.1/variants/eightanaloginputs/pins_arduino.h similarity index 100% rename from tmk_core/protocol/usb_hid/arduino-1.0.1/variants/eightanaloginputs/pins_arduino.h rename to lib/usbhost/arduino-1.0.1/variants/eightanaloginputs/pins_arduino.h diff --git a/tmk_core/protocol/usb_hid/arduino-1.0.1/variants/leonardo/pins_arduino.h b/lib/usbhost/arduino-1.0.1/variants/leonardo/pins_arduino.h similarity index 100% rename from tmk_core/protocol/usb_hid/arduino-1.0.1/variants/leonardo/pins_arduino.h rename to lib/usbhost/arduino-1.0.1/variants/leonardo/pins_arduino.h diff --git a/tmk_core/protocol/usb_hid/arduino-1.0.1/variants/mega/pins_arduino.h b/lib/usbhost/arduino-1.0.1/variants/mega/pins_arduino.h similarity index 100% rename from tmk_core/protocol/usb_hid/arduino-1.0.1/variants/mega/pins_arduino.h rename to lib/usbhost/arduino-1.0.1/variants/mega/pins_arduino.h diff --git a/tmk_core/protocol/usb_hid/arduino-1.0.1/variants/standard/pins_arduino.h b/lib/usbhost/arduino-1.0.1/variants/standard/pins_arduino.h similarity index 100% rename from tmk_core/protocol/usb_hid/arduino-1.0.1/variants/standard/pins_arduino.h rename to lib/usbhost/arduino-1.0.1/variants/standard/pins_arduino.h diff --git a/nix/pyproject.toml b/nix/pyproject.toml deleted file mode 100644 index a8133618934c..000000000000 --- a/nix/pyproject.toml +++ /dev/null @@ -1,32 +0,0 @@ -# This file should be kept in sync with requirements.txt and requirements-dev.txt -# It is particularly required by the Nix environment (see shell.nix). To update versions, -# normally one would run "poetry update --lock" -[tool.poetry] -name = "qmk_firmware" -version = "0.1.0" -description = "" -authors = [] - -[tool.poetry.dependencies] -python = "^3.8" -appdirs = "^1.4.4" -argcomplete = "^1.12.2" -colorama = "^0.4.4" -dotty-dict = "^1.3.0" -hjson = "^3.0.2" -jsonschema = "^3.2.0" -milc = "^1.3.0" -Pygments = "^2.8.0" -qmk = "*" - -[tool.poetry.dev-dependencies] -nose2 = "^0.10.0" -flake8 = "^3.8.4" -hid = "^1.0.4" -pep8-naming = "^0.11.1" -pyusb = "^1.1.1" -yapf = "^0.30.0" - -[build-system] -requires = ["poetry-core>=1.0.0"] -build-backend = "poetry.core.masonry.api" diff --git a/paths.mk b/paths.mk new file mode 100644 index 000000000000..5a39d00ecd73 --- /dev/null +++ b/paths.mk @@ -0,0 +1,31 @@ +# Directory common source files exist +TOP_DIR = . +TMK_DIR = tmk_core +TMK_PATH = $(TMK_DIR) +LIB_PATH = lib + +QUANTUM_DIR = quantum +QUANTUM_PATH = $(QUANTUM_DIR) + +DRIVER_DIR = drivers +DRIVER_PATH = $(DRIVER_DIR) + +PLATFORM_DIR = platforms +PLATFORM_PATH = $(PLATFORM_DIR) + +PROTOCOL_DIR = protocol +PROTOCOL_PATH = $(TMK_DIR)/$(PROTOCOL_DIR) + +BUILDDEFS_DIR = builddefs +BUILDDEFS_PATH = $(BUILDDEFS_DIR) + +BUILD_DIR := .build + +COMMON_VPATH := $(TOP_DIR) +COMMON_VPATH += $(TMK_PATH) +COMMON_VPATH += $(QUANTUM_PATH) +COMMON_VPATH += $(QUANTUM_PATH)/keymap_extras +COMMON_VPATH += $(QUANTUM_PATH)/audio +COMMON_VPATH += $(QUANTUM_PATH)/process_keycode +COMMON_VPATH += $(QUANTUM_PATH)/sequencer +COMMON_VPATH += $(DRIVER_PATH) diff --git a/platforms/arm_atsam/_timer.h b/platforms/arm_atsam/_timer.h new file mode 100644 index 000000000000..77402b612a87 --- /dev/null +++ b/platforms/arm_atsam/_timer.h @@ -0,0 +1,19 @@ +/* Copyright 2021 Simon Arlott + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +#pragma once + +// The platform is 32-bit, so prefer 32-bit timers to avoid overflow +#define FAST_TIMER_T_SIZE 32 diff --git a/tmk_core/common/arm_atsam/_wait.h b/platforms/arm_atsam/_wait.h similarity index 100% rename from tmk_core/common/arm_atsam/_wait.h rename to platforms/arm_atsam/_wait.h diff --git a/platforms/arm_atsam/atomic_util.h b/platforms/arm_atsam/atomic_util.h new file mode 100644 index 000000000000..848542d23a04 --- /dev/null +++ b/platforms/arm_atsam/atomic_util.h @@ -0,0 +1,37 @@ +/* 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 "samd51j18a.h" + +static __inline__ uint8_t __interrupt_disable__(void) { + __disable_irq(); + + return 1; +} + +static __inline__ void __interrupt_enable__(const uint8_t *__s) { + __enable_irq(); + + __asm__ volatile("" ::: "memory"); + (void)__s; +} + +#define ATOMIC_BLOCK(type) for (type, __ToDo = __interrupt_disable__(); __ToDo; __ToDo = 0) +#define ATOMIC_FORCEON uint8_t sreg_save __attribute__((__cleanup__(__interrupt_enable__))) = 0 + +#define ATOMIC_BLOCK_RESTORESTATE _Static_assert(0, "ATOMIC_BLOCK_RESTORESTATE not implemented") +#define ATOMIC_BLOCK_FORCEON ATOMIC_BLOCK(ATOMIC_FORCEON) diff --git a/tmk_core/common/arm_atsam/bootloader.c b/platforms/arm_atsam/bootloader.c similarity index 100% rename from tmk_core/common/arm_atsam/bootloader.c rename to platforms/arm_atsam/bootloader.c diff --git a/platforms/arm_atsam/eeprom.c b/platforms/arm_atsam/eeprom.c new file mode 100644 index 000000000000..ff1a692623a1 --- /dev/null +++ b/platforms/arm_atsam/eeprom.c @@ -0,0 +1,184 @@ +/* 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 "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 + +#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; + 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; + 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) { + const uint8_t *p = (const uint8_t *)addr; + return eeprom_read_byte(p) | (eeprom_read_byte(p + 1) << 8); +} + +uint32_t eeprom_read_dword(const uint32_t *addr) { + const uint8_t *p = (const uint8_t *)addr; + return eeprom_read_byte(p) | (eeprom_read_byte(p + 1) << 8) | (eeprom_read_byte(p + 2) << 16) | (eeprom_read_byte(p + 3) << 24); +} + +void eeprom_read_block(void *buf, const void *addr, size_t len) { + const uint8_t *p = (const uint8_t *)addr; + uint8_t * dest = (uint8_t *)buf; + while (len--) { + *dest++ = eeprom_read_byte(p++); + } +} + +void eeprom_write_word(uint16_t *addr, uint16_t value) { + uint8_t *p = (uint8_t *)addr; + eeprom_write_byte(p++, value); + eeprom_write_byte(p, value >> 8); +} + +void eeprom_write_dword(uint32_t *addr, uint32_t value) { + uint8_t *p = (uint8_t *)addr; + eeprom_write_byte(p++, value); + eeprom_write_byte(p++, value >> 8); + eeprom_write_byte(p++, value >> 16); + eeprom_write_byte(p, value >> 24); +} + +void eeprom_write_block(const void *buf, void *addr, size_t len) { + uint8_t * p = (uint8_t *)addr; + const uint8_t *src = (const uint8_t *)buf; + while (len--) { + eeprom_write_byte(p++, *src++); + } +} + +void eeprom_update_byte(uint8_t *addr, uint8_t value) { eeprom_write_byte(addr, value); } + +void eeprom_update_word(uint16_t *addr, uint16_t value) { + uint8_t *p = (uint8_t *)addr; + eeprom_write_byte(p++, value); + eeprom_write_byte(p, value >> 8); +} + +void eeprom_update_dword(uint32_t *addr, uint32_t value) { + uint8_t *p = (uint8_t *)addr; + eeprom_write_byte(p++, value); + eeprom_write_byte(p++, value >> 8); + eeprom_write_byte(p++, value >> 16); + eeprom_write_byte(p, value >> 24); +} + +void eeprom_update_block(const void *buf, void *addr, size_t len) { + uint8_t * p = (uint8_t *)addr; + const uint8_t *src = (const uint8_t *)buf; + while (len--) { + eeprom_write_byte(p++, *src++); + } +} diff --git a/platforms/arm_atsam/flash.mk b/platforms/arm_atsam/flash.mk new file mode 100644 index 000000000000..8152610ceb4d --- /dev/null +++ b/platforms/arm_atsam/flash.mk @@ -0,0 +1,22 @@ +# Hey Emacs, this is a -*- makefile -*- +############################################################################## +# 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/arm_atsam/gpio.h b/platforms/arm_atsam/gpio.h new file mode 100644 index 000000000000..915ed0ef4f74 --- /dev/null +++ b/platforms/arm_atsam/gpio.h @@ -0,0 +1,77 @@ +/* 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 "stdint.h" +#include "samd51j18a.h" + +#include "pin_defs.h" + +typedef uint8_t pin_t; + +#define SAMD_PORT(pin) ((pin & 0x20) >> 5) +#define SAMD_PIN(pin) (pin & 0x1f) +#define SAMD_PIN_MASK(pin) (1 << (pin & 0x1f)) + +#define setPinInput(pin) \ + do { \ + PORT->Group[SAMD_PORT(pin)].PINCFG[SAMD_PIN(pin)].bit.INEN = 1; \ + PORT->Group[SAMD_PORT(pin)].DIRCLR.reg = SAMD_PIN_MASK(pin); \ + } while (0) + +#define setPinInputHigh(pin) \ + do { \ + PORT->Group[SAMD_PORT(pin)].DIRCLR.reg = SAMD_PIN_MASK(pin); \ + PORT->Group[SAMD_PORT(pin)].OUTSET.reg = SAMD_PIN_MASK(pin); \ + PORT->Group[SAMD_PORT(pin)].PINCFG[SAMD_PIN(pin)].bit.INEN = 1; \ + PORT->Group[SAMD_PORT(pin)].PINCFG[SAMD_PIN(pin)].bit.PULLEN = 1; \ + } while (0) + +#define setPinInputLow(pin) \ + do { \ + PORT->Group[SAMD_PORT(pin)].DIRCLR.reg = SAMD_PIN_MASK(pin); \ + PORT->Group[SAMD_PORT(pin)].OUTCLR.reg = SAMD_PIN_MASK(pin); \ + PORT->Group[SAMD_PORT(pin)].PINCFG[SAMD_PIN(pin)].bit.INEN = 1; \ + PORT->Group[SAMD_PORT(pin)].PINCFG[SAMD_PIN(pin)].bit.PULLEN = 1; \ + } while (0) + +#define setPinOutput(pin) \ + do { \ + PORT->Group[SAMD_PORT(pin)].DIRSET.reg = SAMD_PIN_MASK(pin); \ + PORT->Group[SAMD_PORT(pin)].OUTCLR.reg = SAMD_PIN_MASK(pin); \ + } while (0) + +#define writePinHigh(pin) \ + do { \ + PORT->Group[SAMD_PORT(pin)].OUTSET.reg = SAMD_PIN_MASK(pin); \ + } while (0) + +#define writePinLow(pin) \ + do { \ + PORT->Group[SAMD_PORT(pin)].OUTCLR.reg = SAMD_PIN_MASK(pin); \ + } while (0) + +#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) + +#define togglePin(pin) (PORT->Group[SAMD_PORT(pin)].OUTTGL.reg = SAMD_PIN_MASK(pin)) diff --git a/platforms/arm_atsam/pin_defs.h b/platforms/arm_atsam/pin_defs.h new file mode 100644 index 000000000000..5b50b2391003 --- /dev/null +++ b/platforms/arm_atsam/pin_defs.h @@ -0,0 +1,84 @@ +/* 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 "samd51j18a.h" + +#define A00 PIN_PA00 +#define A01 PIN_PA01 +#define A02 PIN_PA02 +#define A03 PIN_PA03 +#define A04 PIN_PA04 +#define A05 PIN_PA05 +#define A06 PIN_PA06 +#define A07 PIN_PA07 +#define A08 PIN_PA08 +#define A09 PIN_PA09 +#define A10 PIN_PA10 +#define A11 PIN_PA11 +#define A12 PIN_PA12 +#define A13 PIN_PA13 +#define A14 PIN_PA14 +#define A15 PIN_PA15 +#define A16 PIN_PA16 +#define A17 PIN_PA17 +#define A18 PIN_PA18 +#define A19 PIN_PA19 +#define A20 PIN_PA20 +#define A21 PIN_PA21 +#define A22 PIN_PA22 +#define A23 PIN_PA23 +#define A24 PIN_PA24 +#define A25 PIN_PA25 +#define A26 PIN_PA26 +#define A27 PIN_PA27 +#define A28 PIN_PA28 +#define A29 PIN_PA29 +#define A30 PIN_PA30 +#define A31 PIN_PA31 + +#define B00 PIN_PB00 +#define B01 PIN_PB01 +#define B02 PIN_PB02 +#define B03 PIN_PB03 +#define B04 PIN_PB04 +#define B05 PIN_PB05 +#define B06 PIN_PB06 +#define B07 PIN_PB07 +#define B08 PIN_PB08 +#define B09 PIN_PB09 +#define B10 PIN_PB10 +#define B11 PIN_PB11 +#define B12 PIN_PB12 +#define B13 PIN_PB13 +#define B14 PIN_PB14 +#define B15 PIN_PB15 +#define B16 PIN_PB16 +#define B17 PIN_PB17 +#define B18 PIN_PB18 +#define B19 PIN_PB19 +#define B20 PIN_PB20 +#define B21 PIN_PB21 +#define B22 PIN_PB22 +#define B23 PIN_PB23 +#define B24 PIN_PB24 +#define B25 PIN_PB25 +#define B26 PIN_PB26 +#define B27 PIN_PB27 +#define B28 PIN_PB28 +#define B29 PIN_PB29 +#define B30 PIN_PB30 +#define B31 PIN_PB31 diff --git a/platforms/arm_atsam/platform.c b/platforms/arm_atsam/platform.c new file mode 100644 index 000000000000..3e35b4fe4c74 --- /dev/null +++ b/platforms/arm_atsam/platform.c @@ -0,0 +1,21 @@ +/* Copyright 2021 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 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 "platform_deps.h" + +void platform_setup(void) { + // do nothing +} diff --git a/platforms/arm_atsam/platform.mk b/platforms/arm_atsam/platform.mk new file mode 100644 index 000000000000..b49bf764d7eb --- /dev/null +++ b/platforms/arm_atsam/platform.mk @@ -0,0 +1,67 @@ +# Hey Emacs, this is a -*- makefile -*- +############################################################################## +# Compiler settings +# +CC = $(CC_PREFIX) 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) -R .eeprom -R .fuse -R .lock -R .signature +EEP = $(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O $(FORMAT) +BIN = + +COMMON_VPATH += $(LIB_PATH)/arm_atsam/packs/atmel/SAMD51_DFP/1.0.70/include +COMMON_VPATH += $(LIB_PATH)/arm_atsam/packs/arm/cmsis/5.0.1/CMSIS/Include + +COMPILEFLAGS += -funsigned-char +COMPILEFLAGS += -funsigned-bitfields +COMPILEFLAGS += -ffunction-sections +COMPILEFLAGS += -fshort-enums +COMPILEFLAGS += -fno-inline-small-functions +COMPILEFLAGS += -fno-strict-aliasing +COMPILEFLAGS += -mfloat-abi=hard +COMPILEFLAGS += -mfpu=fpv4-sp-d16 +COMPILEFLAGS += -mthumb + +#ALLOW_WARNINGS = yes + +CFLAGS += $(COMPILEFLAGS) + +CXXFLAGS += $(COMPILEFLAGS) +CXXFLAGS += -fno-exceptions -std=c++11 + +LDFLAGS +=-Wl,--gc-sections +LDFLAGS += -Wl,-Map="%OUT%%PROJ_NAME%.map" +LDFLAGS += -Wl,--start-group +LDFLAGS += -Wl,--end-group +LDFLAGS += --specs=rdimon.specs +LDFLAGS += -T$(LIB_PATH)/arm_atsam/packs/atmel/SAMD51_DFP/1.0.70/gcc/gcc/samd51j18a_flash.ld + +OPT_DEFS += -DPROTOCOL_ARM_ATSAM + +MCUFLAGS = -mcpu=$(MCU) +MCUFLAGS += -D__$(ARM_ATSAM)__ + +# List any extra directories to look for libraries here. +# Each directory must be seperated by a space. +# Use forward slashes for directory separators. +# For a directory that has spaces, enclose it in quotes. +EXTRALIBDIRS = + +cpfirmware: warn-arm_atsam +.INTERMEDIATE: warn-arm_atsam +warn-arm_atsam: $(FIRMWARE_FORMAT) + $(info @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@) + $(info This MCU support package has a lack of support from the upstream provider (Massdrop).) + $(info There are currently questions about valid licensing, and at this stage it's likely) + $(info their boards and supporting code will be removed from QMK in the near future. Please) + $(info contact Massdrop for support, and encourage them to align their future board design) + $(info choices to gain proper license compatibility with QMK.) + $(info @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@) + +# Convert hex to bin. +bin: $(BUILD_DIR)/$(TARGET).hex + $(OBJCOPY) -Iihex -Obinary $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).bin + $(COPY) $(BUILD_DIR)/$(TARGET).bin $(TARGET).bin; diff --git a/platforms/arm_atsam/platform_deps.h b/platforms/arm_atsam/platform_deps.h new file mode 100644 index 000000000000..f296d1d535e7 --- /dev/null +++ b/platforms/arm_atsam/platform_deps.h @@ -0,0 +1,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/>. + */ +#pragma once + +// here just to please the build diff --git a/tmk_core/common/arm_atsam/suspend.c b/platforms/arm_atsam/suspend.c similarity index 100% rename from tmk_core/common/arm_atsam/suspend.c rename to platforms/arm_atsam/suspend.c diff --git a/tmk_core/common/arm_atsam/timer.c b/platforms/arm_atsam/timer.c similarity index 100% rename from tmk_core/common/arm_atsam/timer.c rename to platforms/arm_atsam/timer.c diff --git a/tmk_core/common/atomic_util.h b/platforms/atomic_util.h similarity index 100% rename from tmk_core/common/atomic_util.h rename to platforms/atomic_util.h diff --git a/tmk_core/common/avr/_print.h b/platforms/avr/_print.h similarity index 100% rename from tmk_core/common/avr/_print.h rename to platforms/avr/_print.h diff --git a/platforms/avr/_timer.h b/platforms/avr/_timer.h new file mode 100644 index 000000000000..b81e0f68b76e --- /dev/null +++ b/platforms/avr/_timer.h @@ -0,0 +1,19 @@ +/* Copyright 2021 Simon Arlott + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +#pragma once + +// The platform is 8-bit, so prefer 16-bit timers to reduce code size +#define FAST_TIMER_T_SIZE 16 diff --git a/platforms/avr/_wait.h b/platforms/avr/_wait.h new file mode 100644 index 000000000000..683db6ae572d --- /dev/null +++ b/platforms/avr/_wait.h @@ -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 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 <util/delay.h> + +#define wait_ms(ms) \ + do { \ + if (__builtin_constant_p(ms)) { \ + _delay_ms(ms); \ + } else { \ + for (uint16_t i = ms; i > 0; i--) { \ + _delay_ms(1); \ + } \ + } \ + } while (0) +#define wait_us(us) \ + do { \ + if (__builtin_constant_p(us)) { \ + _delay_us(us); \ + } else { \ + for (uint16_t i = us; i > 0; i--) { \ + _delay_us(1); \ + } \ + } \ + } while (0) +#define wait_cpuclock(n) __builtin_avr_delay_cycles(n) +#define CPU_CLOCK F_CPU + +/* The AVR series GPIOs have a one clock read delay for changes in the digital input signal. + * But here's more margin to make it two clocks. */ +#ifndef GPIO_INPUT_PIN_DELAY +# define GPIO_INPUT_PIN_DELAY 2 +#endif + +#define waitInputPinDelay() wait_cpuclock(GPIO_INPUT_PIN_DELAY) diff --git a/tmk_core/common/avr/atomic_util.h b/platforms/avr/atomic_util.h similarity index 100% rename from tmk_core/common/avr/atomic_util.h rename to platforms/avr/atomic_util.h diff --git a/tmk_core/common/avr/bootloader.c b/platforms/avr/bootloader.c similarity index 100% rename from tmk_core/common/avr/bootloader.c rename to platforms/avr/bootloader.c diff --git a/tmk_core/common/avr/bootloader_size.c b/platforms/avr/bootloader_size.c similarity index 100% rename from tmk_core/common/avr/bootloader_size.c rename to platforms/avr/bootloader_size.c diff --git a/platforms/avr/drivers/analog.c b/platforms/avr/drivers/analog.c new file mode 100644 index 000000000000..628835ccef0f --- /dev/null +++ b/platforms/avr/drivers/analog.c @@ -0,0 +1,115 @@ +/* Copyright 2015 Jack Humbert + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include <avr/io.h> +#include <avr/pgmspace.h> +#include <stdint.h> +#include "analog.h" + +static uint8_t aref = ADC_REF_POWER; + +void analogReference(uint8_t mode) { aref = mode & (_BV(REFS1) | _BV(REFS0)); } + +int16_t analogReadPin(pin_t pin) { return adc_read(pinToMux(pin)); } + +uint8_t pinToMux(pin_t pin) { + switch (pin) { + // clang-format off +#if defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) + case F0: return 0; // ADC0 + case F1: return _BV(MUX0); // ADC1 + case F2: return _BV(MUX1); // ADC2 + case F3: return _BV(MUX1) | _BV(MUX0); // ADC3 + case F4: return _BV(MUX2); // ADC4 + case F5: return _BV(MUX2) | _BV(MUX0); // ADC5 + case F6: return _BV(MUX2) | _BV(MUX1); // ADC6 + case F7: return _BV(MUX2) | _BV(MUX1) | _BV(MUX0); // ADC7 + default: return _BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1) | _BV(MUX0); // 0V +#elif defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__) + case F0: return 0; // ADC0 + case F1: return _BV(MUX0); // ADC1 + case F4: return _BV(MUX2); // ADC4 + case F5: return _BV(MUX2) | _BV(MUX0); // ADC5 + case F6: return _BV(MUX2) | _BV(MUX1); // ADC6 + case F7: return _BV(MUX2) | _BV(MUX1) | _BV(MUX0); // ADC7 + case D4: return _BV(MUX5); // ADC8 + case D6: return _BV(MUX5) | _BV(MUX0); // ADC9 + case D7: return _BV(MUX5) | _BV(MUX1); // ADC10 + case B4: return _BV(MUX5) | _BV(MUX1) | _BV(MUX0); // ADC11 + case B5: return _BV(MUX5) | _BV(MUX2); // ADC12 + case B6: return _BV(MUX5) | _BV(MUX2) | _BV(MUX0); // ADC13 + default: return _BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1) | _BV(MUX0); // 0V +#elif defined(__AVR_ATmega32A__) + case A0: return 0; // ADC0 + case A1: return _BV(MUX0); // ADC1 + case A2: return _BV(MUX1); // ADC2 + case A3: return _BV(MUX1) | _BV(MUX0); // ADC3 + case A4: return _BV(MUX2); // ADC4 + case A5: return _BV(MUX2) | _BV(MUX0); // ADC5 + case A6: return _BV(MUX2) | _BV(MUX1); // ADC6 + case A7: return _BV(MUX2) | _BV(MUX1) | _BV(MUX0); // ADC7 + default: return _BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1) | _BV(MUX0); // 0V +#elif defined(__AVR_ATmega328P__) || defined(__AVR_ATmega328__) + case C0: return 0; // ADC0 + case C1: return _BV(MUX0); // ADC1 + case C2: return _BV(MUX1); // ADC2 + case C3: return _BV(MUX1) | _BV(MUX0); // ADC3 + case C4: return _BV(MUX2); // ADC4 + case C5: return _BV(MUX2) | _BV(MUX0); // ADC5 + // ADC7:6 not present in DIP package and not shared by GPIO pins + default: return _BV(MUX3) | _BV(MUX2) | _BV(MUX1) | _BV(MUX0); // 0V +#endif + // clang-format on + } + return 0; +} + +int16_t adc_read(uint8_t mux) { + uint16_t low; + + // Enable ADC and configure prescaler + ADCSRA = _BV(ADEN) | ADC_PRESCALER; + +#if defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__) + // High speed mode and ADC8-13 + ADCSRB = _BV(ADHSM) | (mux & _BV(MUX5)); +#elif defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) + // High speed mode only + ADCSRB = _BV(ADHSM); +#endif + + // Configure mux input +#if defined(MUX4) + ADMUX = aref | (mux & (_BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1) | _BV(MUX0))); +#else + ADMUX = aref | (mux & (_BV(MUX3) | _BV(MUX2) | _BV(MUX1) | _BV(MUX0))); +#endif + + // Start the conversion + ADCSRA |= _BV(ADSC); + // Wait for result + while (ADCSRA & _BV(ADSC)) + ; + // Must read LSB first + low = ADCL; + // Must read MSB only once! + low |= (ADCH << 8); + + // turn off the ADC + ADCSRA &= ~(1 << ADEN); + + return low; +} diff --git a/drivers/avr/analog.h b/platforms/avr/drivers/analog.h similarity index 96% rename from drivers/avr/analog.h rename to platforms/avr/drivers/analog.h index 058882450d65..fa2fb0d89b8d 100644 --- a/drivers/avr/analog.h +++ b/platforms/avr/drivers/analog.h @@ -22,8 +22,7 @@ #ifdef __cplusplus extern "C" { #endif -void analogReference(uint8_t mode); -int16_t analogRead(uint8_t pin); +void analogReference(uint8_t mode); 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 similarity index 100% rename from quantum/audio/driver_avr_pwm.h rename to platforms/avr/drivers/audio_pwm.h diff --git a/quantum/audio/driver_avr_pwm_hardware.c b/platforms/avr/drivers/audio_pwm_hardware.c similarity index 100% rename from quantum/audio/driver_avr_pwm_hardware.c rename to platforms/avr/drivers/audio_pwm_hardware.c diff --git a/drivers/avr/glcdfont.c b/platforms/avr/drivers/glcdfont.c similarity index 100% rename from drivers/avr/glcdfont.c rename to platforms/avr/drivers/glcdfont.c diff --git a/drivers/avr/hd44780.c b/platforms/avr/drivers/hd44780.c similarity index 100% rename from drivers/avr/hd44780.c rename to platforms/avr/drivers/hd44780.c diff --git a/drivers/avr/hd44780.h b/platforms/avr/drivers/hd44780.h similarity index 100% rename from drivers/avr/hd44780.h rename to platforms/avr/drivers/hd44780.h diff --git a/platforms/avr/drivers/i2c_master.c b/platforms/avr/drivers/i2c_master.c new file mode 100644 index 000000000000..111b55d6b0d3 --- /dev/null +++ b/platforms/avr/drivers/i2c_master.c @@ -0,0 +1,297 @@ +/* Copyright (C) 2019 Elia Ritterbusch + + + * This program is free software: you can 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/>. + */ +/* Library made by: g4lvanix + * GitHub repository: https://github.com/g4lvanix/I2C-master-lib + */ + +#include <avr/io.h> +#include <util/twi.h> + +#include "i2c_master.h" +#include "timer.h" +#include "wait.h" + +#ifndef F_SCL +# define F_SCL 400000UL // SCL frequency +#endif + +#ifndef I2C_START_RETRY_COUNT +# define I2C_START_RETRY_COUNT 20 +#endif // I2C_START_RETRY_COUNT + +#define TWBR_val (((F_CPU / F_SCL) - 16) / 2) + +#define MAX(X, Y) ((X) > (Y) ? (X) : (Y)) + +void i2c_init(void) { + TWSR = 0; /* no prescaler */ + TWBR = (uint8_t)TWBR_val; + +#ifdef __AVR_ATmega32A__ + // set pull-up resistors on I2C bus pins + PORTC |= 0b11; + + // enable TWI (two-wire interface) + TWCR |= (1 << TWEN); + + // enable TWI interrupt and slave address ACK + TWCR |= (1 << TWIE); + TWCR |= (1 << TWEA); +#endif +} + +static i2c_status_t i2c_start_impl(uint8_t address, uint16_t timeout) { + // reset TWI control register + TWCR = 0; + // transmit START condition + TWCR = (1 << TWINT) | (1 << TWSTA) | (1 << TWEN); + + uint16_t timeout_timer = timer_read(); + while (!(TWCR & (1 << TWINT))) { + if ((timeout != I2C_TIMEOUT_INFINITE) && ((timer_read() - timeout_timer) >= timeout)) { + return I2C_STATUS_TIMEOUT; + } + } + + // check if the start condition was successfully transmitted + if (((TW_STATUS & 0xF8) != TW_START) && ((TW_STATUS & 0xF8) != TW_REP_START)) { + return I2C_STATUS_ERROR; + } + + // load slave address into data register + TWDR = address; + // start transmission of address + TWCR = (1 << TWINT) | (1 << TWEN); + + timeout_timer = timer_read(); + while (!(TWCR & (1 << TWINT))) { + if ((timeout != I2C_TIMEOUT_INFINITE) && ((timer_read() - timeout_timer) >= timeout)) { + return I2C_STATUS_TIMEOUT; + } + } + + // check if the device has acknowledged the READ / WRITE mode + uint8_t twst = TW_STATUS & 0xF8; + if ((twst != TW_MT_SLA_ACK) && (twst != TW_MR_SLA_ACK)) { + return I2C_STATUS_ERROR; + } + + return I2C_STATUS_SUCCESS; +} + +i2c_status_t i2c_start(uint8_t address, uint16_t timeout) { + // Retry i2c_start_impl a bunch times in case the remote side has interrupts disabled. + uint16_t timeout_timer = timer_read(); + uint16_t time_slice = MAX(1, (timeout == (I2C_TIMEOUT_INFINITE)) ? 5 : (timeout / (I2C_START_RETRY_COUNT))); // if it's infinite, wait 1ms between attempts, otherwise split up the entire timeout into the number of retries + i2c_status_t status; + do { + status = i2c_start_impl(address, time_slice); + } while ((status < 0) && ((timeout == I2C_TIMEOUT_INFINITE) || (timer_elapsed(timeout_timer) < timeout))); + return status; +} + +i2c_status_t i2c_write(uint8_t data, uint16_t timeout) { + // load data into data register + TWDR = data; + // start transmission of data + TWCR = (1 << TWINT) | (1 << TWEN); + + uint16_t timeout_timer = timer_read(); + while (!(TWCR & (1 << TWINT))) { + if ((timeout != I2C_TIMEOUT_INFINITE) && ((timer_read() - timeout_timer) >= timeout)) { + return I2C_STATUS_TIMEOUT; + } + } + + if ((TW_STATUS & 0xF8) != TW_MT_DATA_ACK) { + return I2C_STATUS_ERROR; + } + + return I2C_STATUS_SUCCESS; +} + +int16_t i2c_read_ack(uint16_t timeout) { + // start TWI module and acknowledge data after reception + TWCR = (1 << TWINT) | (1 << TWEN) | (1 << TWEA); + + uint16_t timeout_timer = timer_read(); + while (!(TWCR & (1 << TWINT))) { + if ((timeout != I2C_TIMEOUT_INFINITE) && ((timer_read() - timeout_timer) >= timeout)) { + return I2C_STATUS_TIMEOUT; + } + } + + // return received data from TWDR + return TWDR; +} + +int16_t i2c_read_nack(uint16_t timeout) { + // start receiving without acknowledging reception + TWCR = (1 << TWINT) | (1 << TWEN); + + uint16_t timeout_timer = timer_read(); + while (!(TWCR & (1 << TWINT))) { + if ((timeout != I2C_TIMEOUT_INFINITE) && ((timer_read() - timeout_timer) >= timeout)) { + return I2C_STATUS_TIMEOUT; + } + } + + // return received data from TWDR + return TWDR; +} + +i2c_status_t i2c_transmit(uint8_t address, const uint8_t* data, uint16_t length, uint16_t timeout) { + i2c_status_t status = i2c_start(address | I2C_WRITE, 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_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout) { + i2c_status_t status = i2c_start(address | I2C_READ, 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; + } + } + + i2c_stop(); + + return (status < 0) ? status : I2C_STATUS_SUCCESS; +} + +i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout) { + i2c_status_t status = i2c_start(devaddr | 0x00, timeout); + if (status >= 0) { + status = i2c_write(regaddr, 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_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) { + goto error; + } + + status = i2c_write(regaddr, 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; +} + +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 new file mode 100644 index 000000000000..2d95846db518 --- /dev/null +++ b/platforms/avr/drivers/i2c_master.h @@ -0,0 +1,45 @@ +/* Copyright (C) 2019 Elia Ritterbusch + + + * This program is free software: you can 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/>. + */ +/* Library made by: g4lvanix + * GitHub repository: https://github.com/g4lvanix/I2C-master-lib + */ + +#pragma once + +#define I2C_READ 0x01 +#define I2C_WRITE 0x00 + +typedef int16_t i2c_status_t; + +#define I2C_STATUS_SUCCESS (0) +#define I2C_STATUS_ERROR (-1) +#define I2C_STATUS_TIMEOUT (-2) + +#define I2C_TIMEOUT_IMMEDIATE (0) +#define I2C_TIMEOUT_INFINITE (0xFFFF) + +void i2c_init(void); +i2c_status_t i2c_start(uint8_t address, uint16_t timeout); +i2c_status_t i2c_write(uint8_t data, uint16_t timeout); +int16_t i2c_read_ack(uint16_t timeout); +int16_t i2c_read_nack(uint16_t timeout); +i2c_status_t i2c_transmit(uint8_t address, const uint8_t* data, uint16_t length, uint16_t timeout); +i2c_status_t i2c_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/i2c_slave.c b/platforms/avr/drivers/i2c_slave.c new file mode 100644 index 000000000000..2907f164c07d --- /dev/null +++ b/platforms/avr/drivers/i2c_slave.c @@ -0,0 +1,111 @@ +/* Copyright (C) 2019 Elia Ritterbusch + + + * This program is free software: you can 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/>. + */ +/* Library made by: g4lvanix + * GitHub repository: https://github.com/g4lvanix/I2C-slave-lib + */ + +#include <stddef.h> +#include <avr/io.h> +#include <util/twi.h> +#include <avr/interrupt.h> +#include <stdbool.h> + +#include "i2c_slave.h" + +#if defined(USE_I2C) && defined(SPLIT_COMMON_TRANSACTIONS) +# include "transactions.h" + +static volatile bool is_callback_executor = false; +#endif // defined(USE_I2C) && defined(SPLIT_COMMON_TRANSACTIONS) + +volatile uint8_t i2c_slave_reg[I2C_SLAVE_REG_COUNT]; + +static volatile uint8_t buffer_address; +static volatile bool slave_has_register_set = false; + +void i2c_slave_init(uint8_t address) { + // load address into TWI address register + TWAR = address; + // set the TWCR to enable address matching and enable TWI, clear TWINT, enable TWI interrupt + TWCR = (1 << TWIE) | (1 << TWEA) | (1 << TWINT) | (1 << TWEN); +} + +void i2c_slave_stop(void) { + // clear acknowledge and enable bits + TWCR &= ~((1 << TWEA) | (1 << TWEN)); +} + +ISR(TWI_vect) { + uint8_t ack = 1; + + switch (TW_STATUS) { + case TW_SR_SLA_ACK: + // The device is now a slave receiver + slave_has_register_set = false; +#if defined(USE_I2C) && defined(SPLIT_COMMON_TRANSACTIONS) + is_callback_executor = false; +#endif // defined(USE_I2C) && defined(SPLIT_COMMON_TRANSACTIONS) + break; + + case TW_SR_DATA_ACK: + // This device is a slave receiver and has received data + // First byte is the location then the bytes will be writen in buffer with auto-increment + if (!slave_has_register_set) { + buffer_address = TWDR; + + if (buffer_address >= I2C_SLAVE_REG_COUNT) { // address out of bounds dont ack + ack = 0; + buffer_address = 0; + } + slave_has_register_set = true; // address has been received now fill in buffer + +#if defined(USE_I2C) && defined(SPLIT_COMMON_TRANSACTIONS) + // Work out if we're attempting to execute a callback + is_callback_executor = buffer_address == split_transaction_table[I2C_EXECUTE_CALLBACK].initiator2target_offset; +#endif // defined(USE_I2C) && defined(SPLIT_COMMON_TRANSACTIONS) + } else { + i2c_slave_reg[buffer_address] = TWDR; + buffer_address++; + +#if defined(USE_I2C) && defined(SPLIT_COMMON_TRANSACTIONS) + // If we're intending to execute a transaction callback, do so, as we've just received the transaction ID + if (is_callback_executor) { + split_transaction_desc_t *trans = &split_transaction_table[split_shmem->transaction_id]; + if (trans->slave_callback) { + trans->slave_callback(trans->initiator2target_buffer_size, split_trans_initiator2target_buffer(trans), trans->target2initiator_buffer_size, split_trans_target2initiator_buffer(trans)); + } + } +#endif // defined(USE_I2C) && defined(SPLIT_COMMON_TRANSACTIONS) + } + break; + + case TW_ST_SLA_ACK: + case TW_ST_DATA_ACK: + // This device is a slave transmitter and master has requested data + TWDR = i2c_slave_reg[buffer_address]; + buffer_address++; + break; + + case TW_BUS_ERROR: + // We got an error, reset i2c + TWCR = 0; + default: + break; + } + + // Reset i2c state machine to be ready for next interrupt + TWCR |= (1 << TWIE) | (1 << TWINT) | (ack << TWEA) | (1 << TWEN); +} diff --git a/platforms/avr/drivers/i2c_slave.h b/platforms/avr/drivers/i2c_slave.h new file mode 100644 index 000000000000..a8647c9da3e3 --- /dev/null +++ b/platforms/avr/drivers/i2c_slave.h @@ -0,0 +1,41 @@ +/* Copyright (C) 2019 Elia Ritterbusch + + + * This program is free software: you can 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/>. + */ +/* Library made by: g4lvanix + * GitHub repository: https://github.com/g4lvanix/I2C-slave-lib + + Info: Inititate the library by giving the required address. + Read or write to the necessary buffer according to the opperation. + */ + +#pragma once + +#ifndef I2C_SLAVE_REG_COUNT + +# if defined(USE_I2C) && defined(SPLIT_COMMON_TRANSACTIONS) +# include "transport.h" +# define I2C_SLAVE_REG_COUNT sizeof(split_shared_memory_t) +# else // defined(USE_I2C) && defined(SPLIT_COMMON_TRANSACTIONS) +# define I2C_SLAVE_REG_COUNT 30 +# endif // defined(USE_I2C) && defined(SPLIT_COMMON_TRANSACTIONS) + +#endif // I2C_SLAVE_REG_COUNT + +_Static_assert(I2C_SLAVE_REG_COUNT < 256, "I2C target registers must be single byte"); + +extern volatile uint8_t i2c_slave_reg[I2C_SLAVE_REG_COUNT]; + +void i2c_slave_init(uint8_t address); +void i2c_slave_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 000000000000..7c826fbf1aac --- /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 similarity index 94% rename from tmk_core/protocol/ps2_usart.c rename to platforms/avr/drivers/ps2/ps2_usart.c index 6a66dc4a1e73..151cfcd68f3a 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/avr/drivers/serial.c b/platforms/avr/drivers/serial.c new file mode 100644 index 000000000000..9a7345a53df4 --- /dev/null +++ b/platforms/avr/drivers/serial.c @@ -0,0 +1,529 @@ +/* + * WARNING: be careful changing this code, it is very timing dependent + * + * 2018-10-28 checked + * avr-gcc 4.9.2 + * avr-gcc 5.4.0 + * avr-gcc 7.3.0 + */ + +#ifndef F_CPU +# define F_CPU 16000000 +#endif + +#include <avr/io.h> +#include <avr/interrupt.h> +#include <util/delay.h> +#include <stddef.h> +#include <stdbool.h> +#include "serial.h" + +#ifdef SOFT_SERIAL_PIN + +# if !(defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) || defined(__AVR_AT90USB162__) || defined(__AVR_ATmega16U2__) || defined(__AVR_ATmega32U2__) || defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__)) +# error serial.c is not supported for the currently selected MCU +# endif +// if using ATmega32U4/2, AT90USBxxx I2C, can not use PD0 and PD1 in soft serial. +# if defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__) || defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) +# if defined(USE_AVR_I2C) && (SOFT_SERIAL_PIN == D0 || SOFT_SERIAL_PIN == D1) +# error Using I2C, so can not use PD0, PD1 +# endif +# endif +// PD0..PD3, common config +# if SOFT_SERIAL_PIN == D0 +# define EIMSK_BIT _BV(INT0) +# define EICRx_BIT (~(_BV(ISC00) | _BV(ISC01))) +# define SERIAL_PIN_INTERRUPT INT0_vect +# define EICRx EICRA +# elif SOFT_SERIAL_PIN == D1 +# define EIMSK_BIT _BV(INT1) +# define EICRx_BIT (~(_BV(ISC10) | _BV(ISC11))) +# define SERIAL_PIN_INTERRUPT INT1_vect +# define EICRx EICRA +# elif SOFT_SERIAL_PIN == D2 +# define EIMSK_BIT _BV(INT2) +# define EICRx_BIT (~(_BV(ISC20) | _BV(ISC21))) +# define SERIAL_PIN_INTERRUPT INT2_vect +# define EICRx EICRA +# elif SOFT_SERIAL_PIN == D3 +# define EIMSK_BIT _BV(INT3) +# define EICRx_BIT (~(_BV(ISC30) | _BV(ISC31))) +# define SERIAL_PIN_INTERRUPT INT3_vect +# define EICRx EICRA +# endif + +// ATmegaxxU2/AT90USB162 specific config +# if defined(__AVR_ATmega16U2__) || defined(__AVR_ATmega32U2__) || defined(__AVR_AT90USB162__) +// PD4(INT5), PD6(INT6), PD7(INT7), PC7(INT4) +# if SOFT_SERIAL_PIN == D4 +# define EIMSK_BIT _BV(INT5) +# define EICRx_BIT (~(_BV(ISC50) | _BV(ISC51))) +# define SERIAL_PIN_INTERRUPT INT5_vect +# define EICRx EICRB +# elif SOFT_SERIAL_PIN == D6 +# define EIMSK_BIT _BV(INT6) +# define EICRx_BIT (~(_BV(ISC60) | _BV(ISC61))) +# define SERIAL_PIN_INTERRUPT INT6_vect +# define EICRx EICRB +# elif SOFT_SERIAL_PIN == D7 +# define EIMSK_BIT _BV(INT7) +# define EICRx_BIT (~(_BV(ISC70) | _BV(ISC71))) +# define SERIAL_PIN_INTERRUPT INT7_vect +# define EICRx EICRB +# elif SOFT_SERIAL_PIN == C7 +# define EIMSK_BIT _BV(INT4) +# define EICRx_BIT (~(_BV(ISC40) | _BV(ISC41))) +# define SERIAL_PIN_INTERRUPT INT4_vect +# define EICRx EICRB +# endif +# endif + +// ATmegaxxU4 specific config +# if defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__) +// PE6(INT6) +# if SOFT_SERIAL_PIN == E6 +# define EIMSK_BIT _BV(INT6) +# define EICRx_BIT (~(_BV(ISC60) | _BV(ISC61))) +# define SERIAL_PIN_INTERRUPT INT6_vect +# define EICRx EICRB +# endif +# endif + +// AT90USBxxx specific config +# if defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) +// PE4..PE7(INT4..INT7) +# if SOFT_SERIAL_PIN == E4 +# define EIMSK_BIT _BV(INT4) +# define EICRx_BIT (~(_BV(ISC40) | _BV(ISC41))) +# define SERIAL_PIN_INTERRUPT INT4_vect +# define EICRx EICRB +# elif SOFT_SERIAL_PIN == E5 +# define EIMSK_BIT _BV(INT5) +# define EICRx_BIT (~(_BV(ISC50) | _BV(ISC51))) +# define SERIAL_PIN_INTERRUPT INT5_vect +# define EICRx EICRB +# elif SOFT_SERIAL_PIN == E6 +# define EIMSK_BIT _BV(INT6) +# define EICRx_BIT (~(_BV(ISC60) | _BV(ISC61))) +# define SERIAL_PIN_INTERRUPT INT6_vect +# define EICRx EICRB +# elif SOFT_SERIAL_PIN == E7 +# define EIMSK_BIT _BV(INT7) +# define EICRx_BIT (~(_BV(ISC70) | _BV(ISC71))) +# define SERIAL_PIN_INTERRUPT INT7_vect +# define EICRx EICRB +# endif +# endif + +# ifndef SERIAL_PIN_INTERRUPT +# error invalid SOFT_SERIAL_PIN value +# endif + +# define setPinInputHigh(pin) (DDRx_ADDRESS(pin) &= ~_BV((pin)&0xF), PORTx_ADDRESS(pin) |= _BV((pin)&0xF)) +# define setPinOutput(pin) (DDRx_ADDRESS(pin) |= _BV((pin)&0xF)) +# define writePinHigh(pin) (PORTx_ADDRESS(pin) |= _BV((pin)&0xF)) +# define writePinLow(pin) (PORTx_ADDRESS(pin) &= ~_BV((pin)&0xF)) +# define readPin(pin) ((bool)(PINx_ADDRESS(pin) & _BV((pin)&0xF))) + +# define ALWAYS_INLINE __attribute__((always_inline)) +# define NO_INLINE __attribute__((noinline)) +# define _delay_sub_us(x) __builtin_avr_delay_cycles(x) + +// parity check +# define ODD_PARITY 1 +# define EVEN_PARITY 0 +# define PARITY EVEN_PARITY + +# ifdef SERIAL_DELAY +// custom setup in config.h +// #define TID_SEND_ADJUST 2 +// #define SERIAL_DELAY 6 // micro sec +// #define READ_WRITE_START_ADJUST 30 // cycles +// #define READ_WRITE_WIDTH_ADJUST 8 // cycles +# else +// ============ Standard setups ============ + +# ifndef SELECT_SOFT_SERIAL_SPEED +# define SELECT_SOFT_SERIAL_SPEED 1 +// 0: about 189kbps (Experimental only) +// 1: about 137kbps (default) +// 2: about 75kbps +// 3: about 39kbps +// 4: about 26kbps +// 5: about 20kbps +# endif + +# if __GNUC__ < 6 +# define TID_SEND_ADJUST 14 +# else +# define TID_SEND_ADJUST 2 +# endif + +# if SELECT_SOFT_SERIAL_SPEED == 0 +// Very High speed +# define SERIAL_DELAY 4 // micro sec +# if __GNUC__ < 6 +# define READ_WRITE_START_ADJUST 33 // cycles +# define READ_WRITE_WIDTH_ADJUST 3 // cycles +# else +# define READ_WRITE_START_ADJUST 34 // cycles +# define READ_WRITE_WIDTH_ADJUST 7 // cycles +# endif +# elif SELECT_SOFT_SERIAL_SPEED == 1 +// High speed +# define SERIAL_DELAY 6 // micro sec +# if __GNUC__ < 6 +# define READ_WRITE_START_ADJUST 30 // cycles +# define READ_WRITE_WIDTH_ADJUST 3 // cycles +# else +# define READ_WRITE_START_ADJUST 33 // cycles +# define READ_WRITE_WIDTH_ADJUST 7 // cycles +# endif +# elif SELECT_SOFT_SERIAL_SPEED == 2 +// Middle speed +# define SERIAL_DELAY 12 // micro sec +# define READ_WRITE_START_ADJUST 30 // cycles +# if __GNUC__ < 6 +# define READ_WRITE_WIDTH_ADJUST 3 // cycles +# else +# define READ_WRITE_WIDTH_ADJUST 7 // cycles +# endif +# elif SELECT_SOFT_SERIAL_SPEED == 3 +// Low speed +# define SERIAL_DELAY 24 // micro sec +# define READ_WRITE_START_ADJUST 30 // cycles +# if __GNUC__ < 6 +# define READ_WRITE_WIDTH_ADJUST 3 // cycles +# else +# define READ_WRITE_WIDTH_ADJUST 7 // cycles +# endif +# elif SELECT_SOFT_SERIAL_SPEED == 4 +// Very Low speed +# define SERIAL_DELAY 36 // micro sec +# define READ_WRITE_START_ADJUST 30 // cycles +# if __GNUC__ < 6 +# define READ_WRITE_WIDTH_ADJUST 3 // cycles +# else +# define READ_WRITE_WIDTH_ADJUST 7 // cycles +# endif +# elif SELECT_SOFT_SERIAL_SPEED == 5 +// Ultra Low speed +# define SERIAL_DELAY 48 // micro sec +# define READ_WRITE_START_ADJUST 30 // cycles +# if __GNUC__ < 6 +# define READ_WRITE_WIDTH_ADJUST 3 // cycles +# else +# define READ_WRITE_WIDTH_ADJUST 7 // cycles +# endif +# else +# error invalid SELECT_SOFT_SERIAL_SPEED value +# endif /* SELECT_SOFT_SERIAL_SPEED */ +# endif /* SERIAL_DELAY */ + +# define SERIAL_DELAY_HALF1 (SERIAL_DELAY / 2) +# define SERIAL_DELAY_HALF2 (SERIAL_DELAY - SERIAL_DELAY / 2) + +# define SLAVE_INT_WIDTH_US 1 +# define SLAVE_INT_ACK_WIDTH_UNIT 2 +# define SLAVE_INT_ACK_WIDTH 4 + +inline static void serial_delay(void) ALWAYS_INLINE; +inline static void serial_delay(void) { _delay_us(SERIAL_DELAY); } + +inline static void serial_delay_half1(void) ALWAYS_INLINE; +inline static void serial_delay_half1(void) { _delay_us(SERIAL_DELAY_HALF1); } + +inline static void serial_delay_half2(void) ALWAYS_INLINE; +inline static void serial_delay_half2(void) { _delay_us(SERIAL_DELAY_HALF2); } + +inline static void serial_output(void) ALWAYS_INLINE; +inline static void serial_output(void) { setPinOutput(SOFT_SERIAL_PIN); } + +// make the serial pin an input with pull-up resistor +inline static void serial_input_with_pullup(void) ALWAYS_INLINE; +inline static void serial_input_with_pullup(void) { setPinInputHigh(SOFT_SERIAL_PIN); } + +inline static uint8_t serial_read_pin(void) ALWAYS_INLINE; +inline static uint8_t serial_read_pin(void) { return !!readPin(SOFT_SERIAL_PIN); } + +inline static void serial_low(void) ALWAYS_INLINE; +inline static void serial_low(void) { writePinLow(SOFT_SERIAL_PIN); } + +inline static void serial_high(void) ALWAYS_INLINE; +inline static void serial_high(void) { writePinHigh(SOFT_SERIAL_PIN); } + +void soft_serial_initiator_init(void) { + serial_output(); + serial_high(); +} + +void soft_serial_target_init(void) { + serial_input_with_pullup(); + + // Enable INT0-INT7 + EIMSK |= EIMSK_BIT; + EICRx &= EICRx_BIT; +} + +// Used by the sender to synchronize timing with the reciver. +static void sync_recv(void) NO_INLINE; +static void sync_recv(void) { + for (uint8_t i = 0; i < SERIAL_DELAY * 5 && serial_read_pin(); i++) { + } + // This shouldn't hang if the target disconnects because the + // serial line will float to high if the target does disconnect. + while (!serial_read_pin()) + ; +} + +// Used by the reciver to send a synchronization signal to the sender. +static void sync_send(void) NO_INLINE; +static void sync_send(void) { + serial_low(); + serial_delay(); + serial_high(); +} + +// Reads a byte from the serial line +static uint8_t serial_read_chunk(uint8_t *pterrcount, uint8_t bit) NO_INLINE; +static uint8_t serial_read_chunk(uint8_t *pterrcount, uint8_t bit) { + uint8_t byte, i, p, pb; + + _delay_sub_us(READ_WRITE_START_ADJUST); + for (i = 0, byte = 0, p = PARITY; i < bit; i++) { + serial_delay_half1(); // read the middle of pulses + if (serial_read_pin()) { + byte = (byte << 1) | 1; + p ^= 1; + } else { + byte = (byte << 1) | 0; + p ^= 0; + } + _delay_sub_us(READ_WRITE_WIDTH_ADJUST); + serial_delay_half2(); + } + /* recive parity bit */ + serial_delay_half1(); // read the middle of pulses + pb = serial_read_pin(); + _delay_sub_us(READ_WRITE_WIDTH_ADJUST); + serial_delay_half2(); + + *pterrcount += (p != pb) ? 1 : 0; + + return byte; +} + +// Sends a byte with MSB ordering +void serial_write_chunk(uint8_t data, uint8_t bit) NO_INLINE; +void serial_write_chunk(uint8_t data, uint8_t bit) { + uint8_t b, p; + for (p = PARITY, b = 1 << (bit - 1); b; b >>= 1) { + if (data & b) { + serial_high(); + p ^= 1; + } else { + serial_low(); + p ^= 0; + } + serial_delay(); + } + /* send parity bit */ + if (p & 1) { + serial_high(); + } else { + serial_low(); + } + serial_delay(); + + serial_low(); // sync_send() / senc_recv() need raise edge +} + +static void serial_send_packet(uint8_t *buffer, uint8_t size) NO_INLINE; +static void serial_send_packet(uint8_t *buffer, uint8_t size) { + for (uint8_t i = 0; i < size; ++i) { + uint8_t data; + data = buffer[i]; + sync_send(); + serial_write_chunk(data, 8); + } +} + +static uint8_t serial_recive_packet(uint8_t *buffer, uint8_t size) NO_INLINE; +static uint8_t serial_recive_packet(uint8_t *buffer, uint8_t size) { + uint8_t pecount = 0; + for (uint8_t i = 0; i < size; ++i) { + uint8_t data; + sync_recv(); + data = serial_read_chunk(&pecount, 8); + buffer[i] = data; + } + return pecount == 0; +} + +inline static void change_sender2reciver(void) { + sync_send(); // 0 + serial_delay_half1(); // 1 + serial_low(); // 2 + serial_input_with_pullup(); // 2 + serial_delay_half1(); // 3 +} + +inline static void change_reciver2sender(void) { + sync_recv(); // 0 + serial_delay(); // 1 + serial_low(); // 3 + serial_output(); // 3 + serial_delay_half1(); // 4 +} + +static inline uint8_t nibble_bits_count(uint8_t bits) { + bits = (bits & 0x5) + (bits >> 1 & 0x5); + bits = (bits & 0x3) + (bits >> 2 & 0x3); + return bits; +} + +// interrupt handle to be used by the target device +ISR(SERIAL_PIN_INTERRUPT) { + // recive transaction table index + uint8_t tid, bits; + uint8_t pecount = 0; + sync_recv(); + bits = serial_read_chunk(&pecount, 8); + tid = bits >> 3; + bits = (bits & 7) != (nibble_bits_count(tid) & 7); + if (bits || pecount > 0 || tid > NUM_TOTAL_TRANSACTIONS) { + return; + } + serial_delay_half1(); + + serial_high(); // response step1 low->high + serial_output(); + _delay_sub_us(SLAVE_INT_ACK_WIDTH_UNIT * SLAVE_INT_ACK_WIDTH); + split_transaction_desc_t *trans = &split_transaction_table[tid]; + serial_low(); // response step2 ack high->low + + // If the transaction has a callback, we can execute it now + if (trans->slave_callback) { + trans->slave_callback(trans->initiator2target_buffer_size, split_trans_initiator2target_buffer(trans), trans->target2initiator_buffer_size, split_trans_target2initiator_buffer(trans)); + } + + // target send phase + if (trans->target2initiator_buffer_size > 0) serial_send_packet((uint8_t *)split_trans_target2initiator_buffer(trans), trans->target2initiator_buffer_size); + // target switch to input + change_sender2reciver(); + + // target recive phase + if (trans->initiator2target_buffer_size > 0) { + if (serial_recive_packet((uint8_t *)split_trans_initiator2target_buffer(trans), trans->initiator2target_buffer_size)) { + *trans->status = TRANSACTION_ACCEPTED; + } else { + *trans->status = TRANSACTION_DATA_ERROR; + } + } else { + *trans->status = TRANSACTION_ACCEPTED; + } + + sync_recv(); // weit initiator output to high +} + +///////// +// start transaction by initiator +// +// int soft_serial_transaction(int sstd_index) +// +// Returns: +// TRANSACTION_END +// TRANSACTION_NO_RESPONSE +// TRANSACTION_DATA_ERROR +// this code is very time dependent, so we need to disable interrupts +int soft_serial_transaction(int sstd_index) { + if (sstd_index > NUM_TOTAL_TRANSACTIONS) return TRANSACTION_TYPE_ERROR; + split_transaction_desc_t *trans = &split_transaction_table[sstd_index]; + + if (!trans->status) return TRANSACTION_TYPE_ERROR; // not registered + + cli(); + + // signal to the target that we want to start a transaction + serial_output(); + serial_low(); + _delay_us(SLAVE_INT_WIDTH_US); + + // send transaction table index + int tid = (sstd_index << 3) | (7 & nibble_bits_count(sstd_index)); + sync_send(); + _delay_sub_us(TID_SEND_ADJUST); + serial_write_chunk(tid, 8); + serial_delay_half1(); + + // wait for the target response (step1 low->high) + serial_input_with_pullup(); + while (!serial_read_pin()) { + _delay_sub_us(2); + } + + // check if the target is present (step2 high->low) + for (int i = 0; serial_read_pin(); i++) { + if (i > SLAVE_INT_ACK_WIDTH + 1) { + // slave failed to pull the line low, assume not present + serial_output(); + serial_high(); + *trans->status = TRANSACTION_NO_RESPONSE; + sei(); + return TRANSACTION_NO_RESPONSE; + } + _delay_sub_us(SLAVE_INT_ACK_WIDTH_UNIT); + } + + // initiator recive phase + // if the target is present syncronize with it + if (trans->target2initiator_buffer_size > 0) { + if (!serial_recive_packet((uint8_t *)split_trans_target2initiator_buffer(trans), trans->target2initiator_buffer_size)) { + serial_output(); + serial_high(); + *trans->status = TRANSACTION_DATA_ERROR; + sei(); + return TRANSACTION_DATA_ERROR; + } + } + + // initiator switch to output + change_reciver2sender(); + + // initiator send phase + if (trans->initiator2target_buffer_size > 0) { + serial_send_packet((uint8_t *)split_trans_initiator2target_buffer(trans), trans->initiator2target_buffer_size); + } + + // always, release the line when not in use + sync_send(); + + *trans->status = TRANSACTION_END; + sei(); + return TRANSACTION_END; +} + +int soft_serial_get_and_clean_status(int sstd_index) { + split_transaction_desc_t *trans = &split_transaction_table[sstd_index]; + cli(); + int retval = *trans->status; + *trans->status = 0; + ; + sei(); + return retval; +} +#endif + +// Helix serial.c history +// 2018-1-29 fork from let's split and add PD2, modify sync_recv() (#2308, bceffdefc) +// 2018-6-28 bug fix master to slave comm and speed up (#3255, 1038bbef4) +// (adjusted with avr-gcc 4.9.2) +// 2018-7-13 remove USE_SERIAL_PD2 macro (#3374, f30d6dd78) +// (adjusted with avr-gcc 4.9.2) +// 2018-8-11 add support multi-type transaction (#3608, feb5e4aae) +// (adjusted with avr-gcc 4.9.2) +// 2018-10-21 fix serial and RGB animation conflict (#4191, 4665e4fff) +// (adjusted with avr-gcc 7.3.0) +// 2018-10-28 re-adjust compiler depend value of delay (#4269, 8517f8a66) +// (adjusted with avr-gcc 5.4.0, 7.3.0) +// 2018-12-17 copy to TOP/quantum/split_common/ and remove backward compatibility code (#4669) diff --git a/drivers/avr/spi_master.c b/platforms/avr/drivers/spi_master.c similarity index 100% rename from drivers/avr/spi_master.c rename to platforms/avr/drivers/spi_master.c diff --git a/drivers/avr/spi_master.h b/platforms/avr/drivers/spi_master.h similarity index 100% rename from drivers/avr/spi_master.h rename to platforms/avr/drivers/spi_master.h diff --git a/drivers/avr/ssd1306.c b/platforms/avr/drivers/ssd1306.c similarity index 100% rename from drivers/avr/ssd1306.c rename to platforms/avr/drivers/ssd1306.c diff --git a/drivers/avr/ssd1306.h b/platforms/avr/drivers/ssd1306.h similarity index 100% rename from drivers/avr/ssd1306.h rename to platforms/avr/drivers/ssd1306.h diff --git a/platforms/avr/drivers/uart.c b/platforms/avr/drivers/uart.c new file mode 100644 index 000000000000..01cf6b1fb8db --- /dev/null +++ b/platforms/avr/drivers/uart.c @@ -0,0 +1,182 @@ +/* UART Example for Teensy USB Development Board + * http://www.pjrc.com/teensy/ + * Copyright (c) 2009 PJRC.COM, LLC + * + * 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. + */ + +// Version 1.0: Initial Release +// Version 1.1: Add support for Teensy 2.0, minor optimizations + +#include <avr/io.h> +#include <avr/interrupt.h> + +#include "uart.h" + +#if defined(__AVR_AT90USB162__) || defined(__AVR_ATmega16U2__) || defined(__AVR_ATmega32U2__) || defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__) || defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) +# define UDRn UDR1 +# define UBRRnL UBRR1L +# define UCSRnA UCSR1A +# define UCSRnB UCSR1B +# define UCSRnC UCSR1C +# define U2Xn U2X1 +# define RXENn RXEN1 +# define TXENn TXEN1 +# define RXCIEn RXCIE1 +# define UCSZn1 UCSZ11 +# define UCSZn0 UCSZ10 +# define UDRIEn UDRIE1 +# define USARTn_UDRE_vect USART1_UDRE_vect +# define USARTn_RX_vect USART1_RX_vect +#elif defined(__AVR_ATmega32A__) +# define UDRn UDR +# define UBRRnL UBRRL +# define UCSRnA UCSRA +# define UCSRnB UCSRB +# define UCSRnC UCSRC +# define U2Xn U2X +# define RXENn RXEN +# define TXENn TXEN +# define RXCIEn RXCIE +# define UCSZn1 UCSZ1 +# define UCSZn0 UCSZ0 +# define UDRIEn UDRIE +# define USARTn_UDRE_vect USART_UDRE_vect +# define USARTn_RX_vect USART_RX_vect +#elif defined(__AVR_ATmega328__) || defined(__AVR_ATmega328P__) +# define UDRn UDR0 +# define UBRRnL UBRR0L +# define UCSRnA UCSR0A +# define UCSRnB UCSR0B +# define UCSRnC UCSR0C +# define U2Xn U2X0 +# define RXENn RXEN0 +# define TXENn TXEN0 +# define RXCIEn RXCIE0 +# define UCSZn1 UCSZ01 +# define UCSZn0 UCSZ00 +# define UDRIEn UDRIE0 +# define USARTn_UDRE_vect USART_UDRE_vect +# define USARTn_RX_vect USART_RX_vect +#endif + +// These buffers may be any size from 2 to 256 bytes. +#define RX_BUFFER_SIZE 64 +#define TX_BUFFER_SIZE 256 + +static volatile uint8_t tx_buffer[TX_BUFFER_SIZE]; +static volatile uint8_t tx_buffer_head; +static volatile uint8_t tx_buffer_tail; +static volatile uint8_t rx_buffer[RX_BUFFER_SIZE]; +static volatile uint8_t rx_buffer_head; +static volatile uint8_t rx_buffer_tail; + +// Initialize the UART +void uart_init(uint32_t baud) { + cli(); + UBRRnL = (F_CPU / 4 / baud - 1) / 2; + UCSRnA = (1 << U2Xn); + UCSRnB = (1 << RXENn) | (1 << TXENn) | (1 << RXCIEn); + UCSRnC = (1 << UCSZn1) | (1 << UCSZn0); + tx_buffer_head = tx_buffer_tail = 0; + rx_buffer_head = rx_buffer_tail = 0; + sei(); +} + +// Transmit a byte +void uart_write(uint8_t data) { + uint8_t i; + + i = tx_buffer_head + 1; + if (i >= TX_BUFFER_SIZE) i = 0; + // return immediately to avoid deadlock when interrupt is disabled(called from ISR) + if (tx_buffer_tail == i && (SREG & (1 << SREG_I)) == 0) return; + while (tx_buffer_tail == i) + ; // wait until space in buffer + // cli(); + tx_buffer[i] = data; + tx_buffer_head = i; + UCSRnB = (1 << RXENn) | (1 << TXENn) | (1 << RXCIEn) | (1 << UDRIEn); + // sei(); +} + +// Receive a byte +uint8_t uart_read(void) { + uint8_t data, i; + + while (rx_buffer_head == rx_buffer_tail) + ; // wait for character + i = rx_buffer_tail + 1; + if (i >= RX_BUFFER_SIZE) i = 0; + data = rx_buffer[i]; + rx_buffer_tail = i; + return data; +} + +void uart_transmit(const uint8_t *data, uint16_t length) { + for (uint16_t i = 0; i < length; i++) { + uart_write(data[i]); + } +} + +void uart_receive(uint8_t *data, uint16_t length) { + for (uint16_t i = 0; i < length; i++) { + data[i] = uart_read(); + } +} + +// Return whether the number of bytes waiting in the receive buffer is nonzero. +// Call this before uart_read() to check if it will need +// to wait for a byte to arrive. +bool uart_available(void) { + uint8_t head, tail; + + head = rx_buffer_head; + tail = rx_buffer_tail; + if (head >= tail) return (head - tail) > 0; + return (RX_BUFFER_SIZE + head - tail) > 0; +} + +// Transmit Interrupt +ISR(USARTn_UDRE_vect) { + uint8_t i; + + if (tx_buffer_head == tx_buffer_tail) { + // buffer is empty, disable transmit interrupt + UCSRnB = (1 << RXENn) | (1 << TXENn) | (1 << RXCIEn); + } else { + i = tx_buffer_tail + 1; + if (i >= TX_BUFFER_SIZE) i = 0; + UDRn = tx_buffer[i]; + tx_buffer_tail = i; + } +} + +// Receive Interrupt +ISR(USARTn_RX_vect) { + uint8_t c, i; + + c = UDRn; + i = rx_buffer_head + 1; + if (i >= RX_BUFFER_SIZE) i = 0; + if (i != rx_buffer_tail) { + rx_buffer[i] = c; + rx_buffer_head = i; + } +} diff --git a/platforms/avr/drivers/uart.h b/platforms/avr/drivers/uart.h new file mode 100644 index 000000000000..e2dc664eda57 --- /dev/null +++ b/platforms/avr/drivers/uart.h @@ -0,0 +1,39 @@ +/* UART Example for Teensy USB Development Board + * http://www.pjrc.com/teensy/ + * Copyright (c) 2009 PJRC.COM, LLC + * + * 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> + +void uart_init(uint32_t baud); + +void uart_write(uint8_t data); + +uint8_t uart_read(void); + +void uart_transmit(const uint8_t *data, uint16_t length); + +void uart_receive(uint8_t *data, uint16_t length); + +bool uart_available(void); diff --git a/platforms/avr/drivers/ws2812.c b/platforms/avr/drivers/ws2812.c new file mode 100644 index 000000000000..9150b3c520ca --- /dev/null +++ b/platforms/avr/drivers/ws2812.c @@ -0,0 +1,171 @@ +/* + * light weight WS2812 lib V2.0b + * + * Controls WS2811/WS2812/WS2812B RGB-LEDs + * Author: Tim (cpldcpu@gmail.com) + * + * Jan 18th, 2014 v2.0b Initial Version + * Nov 29th, 2015 v2.3 Added SK6812RGBW support + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "ws2812.h" +#include <avr/interrupt.h> +#include <avr/io.h> +#include <util/delay.h> + +#define pinmask(pin) (_BV((pin)&0xF)) + +/* + * Forward declare internal functions + * + * The functions take a byte-array and send to the data output as WS2812 bitstream. + * The length is the number of bytes to send - three per LED. + */ + +static inline void ws2812_sendarray_mask(uint8_t *data, uint16_t datlen, uint8_t masklo, uint8_t maskhi); + +void ws2812_setleds(LED_TYPE *ledarray, uint16_t number_of_leds) { + DDRx_ADDRESS(RGB_DI_PIN) |= pinmask(RGB_DI_PIN); + + uint8_t masklo = ~(pinmask(RGB_DI_PIN)) & PORTx_ADDRESS(RGB_DI_PIN); + uint8_t maskhi = pinmask(RGB_DI_PIN) | PORTx_ADDRESS(RGB_DI_PIN); + + ws2812_sendarray_mask((uint8_t *)ledarray, number_of_leds * sizeof(LED_TYPE), masklo, maskhi); + + _delay_us(WS2812_TRST_US); +} + +/* + This routine writes an array of bytes with RGB values to the Dataout pin + using the fast 800kHz clockless WS2811/2812 protocol. +*/ + +// Fixed cycles used by the inner loop +#define w_fixedlow 2 +#define w_fixedhigh 4 +#define w_fixedtotal 8 + +// Insert NOPs to match the timing, if possible +#define w_zerocycles (((F_CPU / 1000) * WS2812_T0H) / 1000000) +#define w_onecycles (((F_CPU / 1000) * WS2812_T1H + 500000) / 1000000) +#define w_totalcycles (((F_CPU / 1000) * WS2812_TIMING + 500000) / 1000000) + +// w1_nops - nops between rising edge and falling edge - low +#if w_zerocycles >= w_fixedlow +# define w1_nops (w_zerocycles - w_fixedlow) +#else +# define w1_nops 0 +#endif + +// w2_nops - nops between fe low and fe high +#if w_onecycles >= (w_fixedhigh + w1_nops) +# define w2_nops (w_onecycles - w_fixedhigh - w1_nops) +#else +# define w2_nops 0 +#endif + +// w3_nops - nops to complete loop +#if w_totalcycles >= (w_fixedtotal + w1_nops + w2_nops) +# define w3_nops (w_totalcycles - w_fixedtotal - w1_nops - w2_nops) +#else +# define w3_nops 0 +#endif + +// The only critical timing parameter is the minimum pulse length of the "0" +// Warn or throw error if this timing can not be met with current F_CPU settings. +#define w_lowtime ((w1_nops + w_fixedlow) * 1000000) / (F_CPU / 1000) +#if w_lowtime > 550 +# error "Light_ws2812: Sorry, the clock speed is too low. Did you set F_CPU correctly?" +#elif w_lowtime > 450 +# warning "Light_ws2812: The timing is critical and may only work on WS2812B, not on WS2812(S)." +# warning "Please consider a higher clockspeed, if possible" +#endif + +#define w_nop1 "nop \n\t" +#define w_nop2 "rjmp .+0 \n\t" +#define w_nop4 w_nop2 w_nop2 +#define w_nop8 w_nop4 w_nop4 +#define w_nop16 w_nop8 w_nop8 + +static inline void ws2812_sendarray_mask(uint8_t *data, uint16_t datlen, uint8_t masklo, uint8_t maskhi) { + uint8_t curbyte, ctr, sreg_prev; + + sreg_prev = SREG; + cli(); + + while (datlen--) { + curbyte = (*data++); + + asm volatile(" ldi %0,8 \n\t" + "loop%=: \n\t" + " out %2,%3 \n\t" // '1' [01] '0' [01] - re +#if (w1_nops & 1) + w_nop1 +#endif +#if (w1_nops & 2) + w_nop2 +#endif +#if (w1_nops & 4) + w_nop4 +#endif +#if (w1_nops & 8) + w_nop8 +#endif +#if (w1_nops & 16) + w_nop16 +#endif + " sbrs %1,7 \n\t" // '1' [03] '0' [02] + " out %2,%4 \n\t" // '1' [--] '0' [03] - fe-low + " lsl %1 \n\t" // '1' [04] '0' [04] +#if (w2_nops & 1) + w_nop1 +#endif +#if (w2_nops & 2) + w_nop2 +#endif +#if (w2_nops & 4) + w_nop4 +#endif +#if (w2_nops & 8) + w_nop8 +#endif +#if (w2_nops & 16) + w_nop16 +#endif + " out %2,%4 \n\t" // '1' [+1] '0' [+1] - fe-high +#if (w3_nops & 1) + w_nop1 +#endif +#if (w3_nops & 2) + w_nop2 +#endif +#if (w3_nops & 4) + w_nop4 +#endif +#if (w3_nops & 8) + w_nop8 +#endif +#if (w3_nops & 16) + w_nop16 +#endif + + " dec %0 \n\t" // '1' [+2] '0' [+2] + " brne loop%=\n\t" // '1' [+3] '0' [+4] + : "=&d"(ctr) + : "r"(curbyte), "I"(_SFR_IO_ADDR(PORTx_ADDRESS(RGB_DI_PIN))), "r"(maskhi), "r"(masklo)); + } + + SREG = sreg_prev; +} diff --git a/drivers/avr/ws2812_i2c.c b/platforms/avr/drivers/ws2812_i2c.c similarity index 100% rename from drivers/avr/ws2812_i2c.c rename to platforms/avr/drivers/ws2812_i2c.c diff --git a/platforms/avr/flash.mk b/platforms/avr/flash.mk new file mode 100644 index 000000000000..6d50e72534e1 --- /dev/null +++ b/platforms/avr/flash.mk @@ -0,0 +1,188 @@ +# Hey Emacs, this is a -*- makefile -*- +############################################################################## +# Architecture or project specific options +# + +# Autodetect teensy loader +ifndef TEENSY_LOADER_CLI + ifneq (, $(shell which teensy-loader-cli 2>/dev/null)) + TEENSY_LOADER_CLI ?= teensy-loader-cli + else + TEENSY_LOADER_CLI ?= teensy_loader_cli + endif +endif + +define EXEC_TEENSY + $(TEENSY_LOADER_CLI) -mmcu=$(MCU) -w -v $(BUILD_DIR)/$(TARGET).hex +endef + +teensy: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware + $(call EXEC_TEENSY) + +DFU_PROGRAMMER ?= dfu-programmer +GREP ?= grep + +define EXEC_DFU + if [ "$(1)" ]; then \ + echo "Flashing '$(1)' for EE_HANDS split keyboard support." ;\ + fi; \ + if ! $(DFU_PROGRAMMER) $(MCU) get bootloader-version >/dev/null 2>/dev/null; then\ + printf "$(MSG_BOOTLOADER_NOT_FOUND_QUICK_RETRY)" ;\ + sleep $(BOOTLOADER_RETRY_TIME) ;\ + while ! $(DFU_PROGRAMMER) $(MCU) get bootloader-version >/dev/null 2>/dev/null; do\ + printf "." ;\ + sleep $(BOOTLOADER_RETRY_TIME) ;\ + done ;\ + printf "\n" ;\ + fi; \ + $(DFU_PROGRAMMER) $(MCU) get bootloader-version ;\ + if $(DFU_PROGRAMMER) --version 2>&1 | $(GREP) -q 0.7 ; then\ + $(DFU_PROGRAMMER) $(MCU) erase --force; \ + if [ "$(1)" ]; then \ + $(DFU_PROGRAMMER) $(MCU) flash --force --eeprom $(QUANTUM_PATH)/split_common/$(1);\ + fi; \ + $(DFU_PROGRAMMER) $(MCU) flash --force $(BUILD_DIR)/$(TARGET).hex;\ + else \ + $(DFU_PROGRAMMER) $(MCU) erase; \ + if [ "$(1)" ]; then \ + $(DFU_PROGRAMMER) $(MCU) flash-eeprom $(QUANTUM_PATH)/split_common/$(1);\ + fi; \ + $(DFU_PROGRAMMER) $(MCU) flash $(BUILD_DIR)/$(TARGET).hex;\ + fi; \ + $(DFU_PROGRAMMER) $(MCU) reset +endef + +dfu: $(BUILD_DIR)/$(TARGET).hex cpfirmware check-size + $(call EXEC_DFU) + +dfu-start: + $(DFU_PROGRAMMER) $(MCU) reset + $(DFU_PROGRAMMER) $(MCU) start + +dfu-ee: $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).eep + if $(DFU_PROGRAMMER) --version 2>&1 | $(GREP) -q 0.7 ; then\ + $(DFU_PROGRAMMER) $(MCU) flash --force --eeprom $(BUILD_DIR)/$(TARGET).eep;\ + else\ + $(DFU_PROGRAMMER) $(MCU) flash-eeprom $(BUILD_DIR)/$(TARGET).eep;\ + fi + $(DFU_PROGRAMMER) $(MCU) reset + +dfu-split-left: $(BUILD_DIR)/$(TARGET).hex cpfirmware check-size + $(call EXEC_DFU,eeprom-lefthand.eep) + +dfu-split-right: $(BUILD_DIR)/$(TARGET).hex cpfirmware check-size + $(call EXEC_DFU,eeprom-righthand.eep) + +AVRDUDE_PROGRAMMER ?= avrdude + +define EXEC_AVRDUDE + list_devices() { \ + if $(GREP) -q -s icrosoft /proc/version; then \ + wmic.exe path Win32_SerialPort get DeviceID 2>/dev/null | LANG=C perl -pne 's/COM(\d+)/COM.($$1-1)/e' | sed 's!COM!/dev/ttyS!' | xargs echo -n | sort; \ + elif [ "`uname`" = "FreeBSD" ]; then \ + ls /dev/tty* | grep -v '\.lock$$' | grep -v '\.init$$'; \ + else \ + ls /dev/tty*; \ + fi; \ + }; \ + USB= ;\ + printf "Waiting for USB serial port - reset your controller now (Ctrl+C to cancel)"; \ + TMP1=`mktemp`; \ + TMP2=`mktemp`; \ + list_devices > $$TMP1; \ + while [ -z "$$USB" ]; do \ + sleep $(BOOTLOADER_RETRY_TIME); \ + printf "."; \ + list_devices > $$TMP2; \ + USB=`comm -13 $$TMP1 $$TMP2 | $(GREP) -o '/dev/tty.*'`; \ + mv $$TMP2 $$TMP1; \ + done; \ + rm $$TMP1; \ + echo ""; \ + echo "Device $$USB has appeared; assuming it is the controller."; \ + if $(GREP) -q -s 'MINGW\|MSYS\|icrosoft' /proc/version; then \ + USB=`echo "$$USB" | LANG=C perl -pne 's/\/dev\/ttyS(\d+)/COM.($$1+1)/e'`; \ + echo "Remapped USB port to $$USB"; \ + sleep 1; \ + else \ + printf "Waiting for $$USB to become writable."; \ + while [ ! -w "$$USB" ]; do sleep $(BOOTLOADER_RETRY_TIME); printf "."; done; echo ""; \ + fi; \ + if [ -z "$(1)" ]; then \ + $(AVRDUDE_PROGRAMMER) -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex; \ + else \ + $(AVRDUDE_PROGRAMMER) -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex -U eeprom:w:$(QUANTUM_PATH)/split_common/$(1); \ + fi +endef + +avrdude: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware + $(call EXEC_AVRDUDE) + +avrdude-loop: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware + while true; do \ + $(call EXEC_AVRDUDE) ; \ + done + +avrdude-split-left: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware + $(call EXEC_AVRDUDE,eeprom-lefthand.eep) + +avrdude-split-right: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware + $(call EXEC_AVRDUDE,eeprom-righthand.eep) + +define EXEC_USBASP + if $(AVRDUDE_PROGRAMMER) -p $(AVRDUDE_MCU) -c usbasp 2>&1 | grep -q "could not find USB device with"; then \ + printf "$(MSG_BOOTLOADER_NOT_FOUND_QUICK_RETRY)" ;\ + sleep $(BOOTLOADER_RETRY_TIME) ;\ + until $(AVRDUDE_PROGRAMMER) -p $(AVRDUDE_MCU) -c usbasp 2>&1 | (! grep -q "could not find USB device with"); do\ + printf "." ;\ + sleep $(BOOTLOADER_RETRY_TIME) ;\ + done ;\ + printf "\n" ;\ + fi + $(AVRDUDE_PROGRAMMER) -p $(AVRDUDE_MCU) -c usbasp -U flash:w:$(BUILD_DIR)/$(TARGET).hex +endef + +usbasp: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware + $(call EXEC_USBASP) + +BOOTLOADHID_PROGRAMMER ?= bootloadHID + +# bootloadHid executable has no cross platform detect methods +# so keep running bootloadHid if the output contains "The specified device was not found" +define EXEC_BOOTLOADHID + until $(BOOTLOADHID_PROGRAMMER) -r $(BUILD_DIR)/$(TARGET).hex 2>&1 | tee /dev/stderr | grep -v "device was not found"; do\ + printf "$(MSG_BOOTLOADER_NOT_FOUND)" ;\ + sleep 5 ;\ + done +endef + +bootloadhid: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware + $(call EXEC_BOOTLOADHID) + +HID_BOOTLOADER_CLI ?= hid_bootloader_cli + +define EXEC_HID_LUFA + $(HID_BOOTLOADER_CLI) -mmcu=$(MCU) -w -v $(BUILD_DIR)/$(TARGET).hex +endef + +hid_bootloader: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware + $(call EXEC_HID_LUFA) + +flash: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware +ifneq ($(strip $(PROGRAM_CMD)),) + $(UNSYNC_OUTPUT_CMD) && $(PROGRAM_CMD) +else ifeq ($(strip $(BOOTLOADER)), caterina) + $(UNSYNC_OUTPUT_CMD) && $(call EXEC_AVRDUDE) +else ifeq ($(strip $(BOOTLOADER)), halfkay) + $(UNSYNC_OUTPUT_CMD) && $(call EXEC_TEENSY) +else ifeq (dfu,$(findstring dfu,$(BOOTLOADER))) + $(UNSYNC_OUTPUT_CMD) && $(call EXEC_DFU) +else ifneq (,$(filter $(BOOTLOADER), usbasploader USBasp)) + $(UNSYNC_OUTPUT_CMD) && $(call EXEC_USBASP) +else ifneq (,$(filter $(BOOTLOADER), bootloadhid bootloadHID)) + $(UNSYNC_OUTPUT_CMD) && $(call EXEC_BOOTLOADHID) +else ifeq ($(strip $(BOOTLOADER)), qmk-hid) + $(UNSYNC_OUTPUT_CMD) && $(call EXEC_HID_LUFA) +else + $(PRINT_OK); $(SILENT) || printf "$(MSG_FLASH_BOOTLOADER)" +endif diff --git a/platforms/avr/gpio.h b/platforms/avr/gpio.h new file mode 100644 index 000000000000..e9be68491d7c --- /dev/null +++ b/platforms/avr/gpio.h @@ -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 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 <avr/io.h> +#include "pin_defs.h" + +typedef uint8_t pin_t; + +/* Operation of GPIO by pin. */ + +#define setPinInput(pin) (DDRx_ADDRESS(pin) &= ~_BV((pin)&0xF), PORTx_ADDRESS(pin) &= ~_BV((pin)&0xF)) +#define setPinInputHigh(pin) (DDRx_ADDRESS(pin) &= ~_BV((pin)&0xF), PORTx_ADDRESS(pin) |= _BV((pin)&0xF)) +#define setPinInputLow(pin) _Static_assert(0, "AVR processors cannot implement an input as pull low") +#define setPinOutput(pin) (DDRx_ADDRESS(pin) |= _BV((pin)&0xF)) + +#define writePinHigh(pin) (PORTx_ADDRESS(pin) |= _BV((pin)&0xF)) +#define writePinLow(pin) (PORTx_ADDRESS(pin) &= ~_BV((pin)&0xF)) +#define writePin(pin, level) ((level) ? writePinHigh(pin) : writePinLow(pin)) + +#define readPin(pin) ((bool)(PINx_ADDRESS(pin) & _BV((pin)&0xF))) + +#define togglePin(pin) (PORTx_ADDRESS(pin) ^= _BV((pin)&0xF)) + +/* Operation of GPIO by port. */ + +typedef uint8_t port_data_t; + +#define readPort(port) PINx_ADDRESS(port) + +#define setPortBitInput(port, bit) (DDRx_ADDRESS(port) &= ~_BV((bit)&0xF), PORTx_ADDRESS(port) &= ~_BV((bit)&0xF)) +#define setPortBitInputHigh(port, bit) (DDRx_ADDRESS(port) &= ~_BV((bit)&0xF), PORTx_ADDRESS(port) |= _BV((bit)&0xF)) +#define setPortBitOutput(port, bit) (DDRx_ADDRESS(port) |= _BV((bit)&0xF)) + +#define writePortBitLow(port, bit) (PORTx_ADDRESS(port) &= ~_BV((bit)&0xF)) +#define writePortBitHigh(port, bit) (PORTx_ADDRESS(port) |= _BV((bit)&0xF)) diff --git a/tmk_core/common/avr/pin_defs.h b/platforms/avr/pin_defs.h similarity index 100% rename from tmk_core/common/avr/pin_defs.h rename to platforms/avr/pin_defs.h diff --git a/platforms/avr/platform.c b/platforms/avr/platform.c new file mode 100644 index 000000000000..3e35b4fe4c74 --- /dev/null +++ b/platforms/avr/platform.c @@ -0,0 +1,21 @@ +/* Copyright 2021 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 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 "platform_deps.h" + +void platform_setup(void) { + // do nothing +} diff --git a/platforms/avr/platform.mk b/platforms/avr/platform.mk new file mode 100644 index 000000000000..b45108736f10 --- /dev/null +++ b/platforms/avr/platform.mk @@ -0,0 +1,179 @@ +# Hey Emacs, this is a -*- makefile -*- +############################################################################## +# Compiler settings +# +CC = $(CC_PREFIX) avr-gcc +OBJCOPY = avr-objcopy +OBJDUMP = avr-objdump +SIZE = avr-size +AR = avr-ar +NM = avr-nm +HEX = $(OBJCOPY) -O $(FORMAT) -R .eeprom -R .fuse -R .lock -R .signature +EEP = $(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O $(FORMAT) +BIN = + +COMPILEFLAGS += -funsigned-char +COMPILEFLAGS += -funsigned-bitfields +COMPILEFLAGS += -ffunction-sections +COMPILEFLAGS += -fdata-sections +COMPILEFLAGS += -fpack-struct +COMPILEFLAGS += -fshort-enums + +ASFLAGS += $(AVR_ASFLAGS) + +CFLAGS += $(COMPILEFLAGS) $(AVR_CFLAGS) +CFLAGS += -fno-inline-small-functions +CFLAGS += -fno-strict-aliasing + +CXXFLAGS += $(COMPILEFLAGS) +CXXFLAGS += -fno-exceptions -std=c++11 + +LDFLAGS +=-Wl,--gc-sections + +OPT_DEFS += -DF_CPU=$(F_CPU)UL + +MCUFLAGS = -mmcu=$(MCU) + +# List any extra directories to look for libraries here. +# Each directory must be seperated by a space. +# Use forward slashes for directory separators. +# For a directory that has spaces, enclose it in quotes. +EXTRALIBDIRS = + + +#---------------- External Memory Options ---------------- + +# 64 KB of external RAM, starting after internal RAM (ATmega128!), +# used for variables (.data/.bss) and heap (malloc()). +#EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff + +# 64 KB of external RAM, starting after internal RAM (ATmega128!), +# only used for heap (malloc()). +#EXTMEMOPTS = -Wl,--section-start,.data=0x801100,--defsym=__heap_end=0x80ffff + +EXTMEMOPTS = + +#---------------- Debugging Options ---------------- + +# Debugging format. +# Native formats for AVR-GCC's -g are dwarf-2 [default] or stabs. +# AVR Studio 4.10 requires dwarf-2. +# AVR [Extended] COFF format requires stabs, plus an avr-objcopy run. +DEBUG = dwarf-2 + +# For simulavr only - target MCU frequency. +DEBUG_MFREQ = $(F_CPU) + +# Set the DEBUG_UI to either gdb or insight. +# DEBUG_UI = gdb +DEBUG_UI = insight + +# Set the debugging back-end to either avarice, simulavr. +DEBUG_BACKEND = avarice +#DEBUG_BACKEND = simulavr + +# GDB Init Filename. +GDBINIT_FILE = __avr_gdbinit + +# When using avarice settings for the JTAG +JTAG_DEV = /dev/com1 + +# Debugging port used to communicate between GDB / avarice / simulavr. +DEBUG_PORT = 4242 + +# Debugging host used to communicate between GDB / avarice / simulavr, normally +# just set to localhost unless doing some sort of crazy debugging when +# avarice is running on a different computer. +DEBUG_HOST = localhost + +#============================================================================ + +# Convert hex to bin. +bin: $(BUILD_DIR)/$(TARGET).hex +ifeq ($(BOOTLOADER),lufa-ms) + $(eval BIN_PADDING=$(shell n=`expr 32768 - $(BOOTLOADER_SIZE)` && echo $$(($$n)) || echo 0)) + $(OBJCOPY) -Iihex -Obinary $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).bin --pad-to $(BIN_PADDING) +else + $(OBJCOPY) -Iihex -Obinary $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).bin +endif + $(COPY) $(BUILD_DIR)/$(TARGET).bin $(TARGET).bin; + +# copy bin to FLASH.bin +flashbin: bin + $(COPY) $(BUILD_DIR)/$(TARGET).bin FLASH.bin; + +# Generate avr-gdb config/init file which does the following: +# define the reset signal, load the target file, connect to target, and set +# a breakpoint at main(). +gdb-config: + @$(REMOVE) $(GDBINIT_FILE) + @echo define reset >> $(GDBINIT_FILE) + @echo SIGNAL SIGHUP >> $(GDBINIT_FILE) + @echo end >> $(GDBINIT_FILE) + @echo file $(BUILD_DIR)/$(TARGET).elf >> $(GDBINIT_FILE) + @echo target remote $(DEBUG_HOST):$(DEBUG_PORT) >> $(GDBINIT_FILE) +ifeq ($(DEBUG_BACKEND),simulavr) + @echo load >> $(GDBINIT_FILE) +endif + @echo break main >> $(GDBINIT_FILE) + +debug: gdb-config $(BUILD_DIR)/$(TARGET).elf +ifeq ($(DEBUG_BACKEND), avarice) + @echo Starting AVaRICE - Press enter when "waiting to connect" message displays. + @$(WINSHELL) /c start avarice --jtag $(JTAG_DEV) --erase --program --file \ + $(BUILD_DIR)/$(TARGET).elf $(DEBUG_HOST):$(DEBUG_PORT) + @$(WINSHELL) /c pause + +else + @$(WINSHELL) /c start simulavr --gdbserver --device $(MCU) --clock-freq \ + $(DEBUG_MFREQ) --port $(DEBUG_PORT) +endif + @$(WINSHELL) /c start avr-$(DEBUG_UI) --command=$(GDBINIT_FILE) + + + + +# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB. +COFFCONVERT = $(OBJCOPY) --debugging +COFFCONVERT += --change-section-address .data-0x800000 +COFFCONVERT += --change-section-address .bss-0x800000 +COFFCONVERT += --change-section-address .noinit-0x800000 +COFFCONVERT += --change-section-address .eeprom-0x810000 + + + +coff: $(BUILD_DIR)/$(TARGET).elf + @$(SECHO) $(MSG_COFF) $(BUILD_DIR)/$(TARGET).cof + $(COFFCONVERT) -O coff-avr $< $(BUILD_DIR)/$(TARGET).cof + + +extcoff: $(BUILD_DIR)/$(TARGET).elf + @$(SECHO) $(MSG_EXTENDED_COFF) $(BUILD_DIR)/$(TARGET).cof + $(COFFCONVERT) -O coff-ext-avr $< $(BUILD_DIR)/$(TARGET).cof + +ifeq ($(strip $(BOOTLOADER)), qmk-dfu) +QMK_BOOTLOADER_TYPE = DFU +else ifeq ($(strip $(BOOTLOADER)), qmk-hid) +QMK_BOOTLOADER_TYPE = HID +endif + +bootloader: +ifeq ($(strip $(QMK_BOOTLOADER_TYPE)),) + $(error Please set BOOTLOADER to "qmk-dfu" or "qmk-hid" first!) +else + make -C lib/lufa/Bootloaders/$(QMK_BOOTLOADER_TYPE)/ clean + $(QMK_BIN) generate-dfu-header --quiet --keyboard $(KEYBOARD) --output lib/lufa/Bootloaders/$(QMK_BOOTLOADER_TYPE)/Keyboard.h + $(eval MAX_SIZE=$(shell n=`$(CC) -E -mmcu=$(MCU) -D__ASSEMBLER__ $(CFLAGS) $(OPT_DEFS) platforms/avr/bootloader_size.c 2> /dev/null | sed -ne 's/\r//;/^#/n;/^AVR_SIZE:/,$${s/^AVR_SIZE: //;p;}'` && echo $$(($$n)) || echo 0)) + $(eval PROGRAM_SIZE_KB=$(shell n=`expr $(MAX_SIZE) / 1024` && echo $$(($$n)) || echo 0)) + $(eval BOOT_SECTION_SIZE_KB=$(shell n=`expr $(BOOTLOADER_SIZE) / 1024` && echo $$(($$n)) || echo 0)) + $(eval FLASH_SIZE_KB=$(shell n=`expr $(PROGRAM_SIZE_KB) + $(BOOT_SECTION_SIZE_KB)` && echo $$(($$n)) || echo 0)) + make -C lib/lufa/Bootloaders/$(QMK_BOOTLOADER_TYPE)/ MCU=$(MCU) ARCH=$(ARCH) F_CPU=$(F_CPU) FLASH_SIZE_KB=$(FLASH_SIZE_KB) BOOT_SECTION_SIZE_KB=$(BOOT_SECTION_SIZE_KB) + printf "Bootloader$(QMK_BOOTLOADER_TYPE).hex copied to $(TARGET)_bootloader.hex\n" + cp lib/lufa/Bootloaders/$(QMK_BOOTLOADER_TYPE)/Bootloader$(QMK_BOOTLOADER_TYPE).hex $(TARGET)_bootloader.hex +endif + +production: $(BUILD_DIR)/$(TARGET).hex bootloader cpfirmware + @cat $(BUILD_DIR)/$(TARGET).hex | awk '/^:00000001FF/ == 0' > $(TARGET)_production.hex + @cat $(TARGET)_bootloader.hex >> $(TARGET)_production.hex + echo "File sizes:" + $(SIZE) $(TARGET).hex $(TARGET)_bootloader.hex $(TARGET)_production.hex diff --git a/platforms/avr/platform_deps.h b/platforms/avr/platform_deps.h new file mode 100644 index 000000000000..45d9dcebfaaf --- /dev/null +++ b/platforms/avr/platform_deps.h @@ -0,0 +1,20 @@ +/* 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 <avr/pgmspace.h> +#include <avr/io.h> +#include <avr/interrupt.h> diff --git a/tmk_core/common/avr/printf.c b/platforms/avr/printf.c similarity index 100% rename from tmk_core/common/avr/printf.c rename to platforms/avr/printf.c diff --git a/tmk_core/common/avr/printf.mk b/platforms/avr/printf.mk similarity index 100% rename from tmk_core/common/avr/printf.mk rename to platforms/avr/printf.mk diff --git a/tmk_core/common/avr/sleep_led.c b/platforms/avr/sleep_led.c similarity index 100% rename from tmk_core/common/avr/sleep_led.c rename to platforms/avr/sleep_led.c diff --git a/platforms/avr/suspend.c b/platforms/avr/suspend.c new file mode 100644 index 000000000000..b614746e6cd8 --- /dev/null +++ b/platforms/avr/suspend.c @@ -0,0 +1,152 @@ +#include <stdbool.h> +#include <avr/sleep.h> +#include <avr/wdt.h> +#include <avr/interrupt.h> +#include "matrix.h" +#include "action.h" +#include "suspend.h" +#include "timer.h" +#include "led.h" +#include "host.h" + +#ifdef PROTOCOL_LUFA +# include "lufa.h" +#endif +#ifdef PROTOCOL_VUSB +# include "vusb.h" +#endif + +/** \brief Suspend idle + * + * FIXME: needs doc + */ +void suspend_idle(uint8_t time) { + cli(); + set_sleep_mode(SLEEP_MODE_IDLE); + sleep_enable(); + sei(); + sleep_cpu(); + sleep_disable(); +} + +// TODO: This needs some cleanup + +#if !defined(NO_SUSPEND_POWER_DOWN) && defined(WDT_vect) + +// clang-format off +#define wdt_intr_enable(value) \ +__asm__ __volatile__ ( \ + "in __tmp_reg__,__SREG__" "\n\t" \ + "cli" "\n\t" \ + "wdr" "\n\t" \ + "sts %0,%1" "\n\t" \ + "out __SREG__,__tmp_reg__" "\n\t" \ + "sts %0,%2" "\n\t" \ + : /* no outputs */ \ + : "M" (_SFR_MEM_ADDR(_WD_CONTROL_REG)), \ + "r" (_BV(_WD_CHANGE_BIT) | _BV(WDE)), \ + "r" ((uint8_t) ((value & 0x08 ? _WD_PS3_MASK : 0x00) | _BV(WDIE) | (value & 0x07))) \ + : "r0" \ +) +// clang-format on + +/** \brief Power down MCU with watchdog timer + * + * wdto: watchdog timer timeout defined in <avr/wdt.h> + * WDTO_15MS + * WDTO_30MS + * WDTO_60MS + * WDTO_120MS + * WDTO_250MS + * WDTO_500MS + * WDTO_1S + * WDTO_2S + * WDTO_4S + * WDTO_8S + */ +static uint8_t wdt_timeout = 0; + +/** \brief Power down + * + * FIXME: needs doc + */ +static void power_down(uint8_t wdto) { + wdt_timeout = wdto; + + // Watchdog Interrupt Mode + wdt_intr_enable(wdto); + + // TODO: more power saving + // See PicoPower application note + // - I/O port input with pullup + // - prescale clock + // - BOD disable + // - Power Reduction Register PRR + set_sleep_mode(SLEEP_MODE_PWR_DOWN); + sleep_enable(); + sei(); + sleep_cpu(); + sleep_disable(); + + // Disable watchdog after sleep + wdt_disable(); +} +#endif + +/** \brief Suspend power down + * + * FIXME: needs doc + */ +void suspend_power_down(void) { +#ifdef PROTOCOL_LUFA + if (USB_DeviceState == DEVICE_STATE_Configured) return; +#endif +#ifdef PROTOCOL_VUSB + if (!vusb_suspended) return; +#endif + + suspend_power_down_quantum(); + +#ifndef NO_SUSPEND_POWER_DOWN + // Enter sleep state if possible (ie, the MCU has a watchdog timeout interrupt) +# if defined(WDT_vect) + power_down(WDTO_15MS); +# endif +#endif +} + +__attribute__((weak)) void matrix_power_up(void) {} +__attribute__((weak)) void matrix_power_down(void) {} +bool suspend_wakeup_condition(void) { + matrix_power_up(); + matrix_scan(); + matrix_power_down(); + for (uint8_t r = 0; r < MATRIX_ROWS; r++) { + if (matrix_get_row(r)) return true; + } + return false; +} + +/** \brief run immediately after wakeup + * + * FIXME: needs doc + */ +void suspend_wakeup_init(void) { + // clear keyboard state + clear_keyboard(); + + suspend_wakeup_init_quantum(); +} + +#if !defined(NO_SUSPEND_POWER_DOWN) && defined(WDT_vect) +/* watchdog timeout */ +ISR(WDT_vect) { + // compensate timer for sleep + switch (wdt_timeout) { + case WDTO_15MS: + timer_count += 15 + 2; // WDTO_15MS + 2(from observation) + break; + default:; + } +} +#endif diff --git a/tmk_core/common/avr/timer.c b/platforms/avr/timer.c similarity index 100% rename from tmk_core/common/avr/timer.c rename to platforms/avr/timer.c diff --git a/tmk_core/common/avr/timer_avr.h b/platforms/avr/timer_avr.h similarity index 100% rename from tmk_core/common/avr/timer_avr.h rename to platforms/avr/timer_avr.h diff --git a/tmk_core/common/avr/xprintf.S b/platforms/avr/xprintf.S similarity index 100% rename from tmk_core/common/avr/xprintf.S rename to platforms/avr/xprintf.S diff --git a/tmk_core/common/avr/xprintf.h b/platforms/avr/xprintf.h similarity index 100% rename from tmk_core/common/avr/xprintf.h rename to platforms/avr/xprintf.h diff --git a/tmk_core/common/bootloader.h b/platforms/bootloader.h similarity index 100% rename from tmk_core/common/bootloader.h rename to platforms/bootloader.h diff --git a/platforms/chibios/BLACKPILL_STM32_F401/configs/mcuconf.h b/platforms/chibios/BLACKPILL_STM32_F401/configs/mcuconf.h deleted file mode 100644 index ba6e934fe7bd..000000000000 --- a/platforms/chibios/BLACKPILL_STM32_F401/configs/mcuconf.h +++ /dev/null @@ -1,253 +0,0 @@ -/* - 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 - -/* - * HAL driver system settings. - */ -#define STM32_NO_INIT 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 25 -#define STM32_PLLN_VALUE 336 -#define STM32_PLLP_VALUE 4 -#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 -#define STM32_PVD_ENABLE FALSE -#define STM32_PLS STM32_PLS_LEV0 -#define STM32_BKPRAM_ENABLE FALSE - -/* - * 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_ADC1_DMA_STREAM STM32_DMA_STREAM_ID(2, 4) -#define STM32_ADC_ADC1_DMA_PRIORITY 2 -#define STM32_ADC_IRQ_PRIORITY 6 -#define STM32_ADC_ADC1_DMA_IRQ_PRIORITY 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_TIM9 FALSE -#define STM32_GPT_USE_TIM11 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_TIM9_IRQ_PRIORITY 7 -#define STM32_GPT_TIM11_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_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_TIM9_IRQ_PRIORITY 7 - -/* - * 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_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_TIM9_IRQ_PRIORITY 7 - -/* - * SERIAL driver system settings. - */ -#define STM32_SERIAL_USE_USART1 FALSE -#define STM32_SERIAL_USE_USART2 FALSE -#define STM32_SERIAL_USE_USART6 FALSE -#define STM32_SERIAL_USART1_PRIORITY 12 -#define STM32_SERIAL_USART2_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_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_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_USART6_IRQ_PRIORITY 12 -#define STM32_UART_USART1_DMA_PRIORITY 0 -#define STM32_UART_USART2_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_OTG1_IRQ_PRIORITY 14 -#define STM32_USB_OTG1_RX_FIFO_SIZE 512 -#define STM32_USB_OTG_THREAD_PRIO NORMALPRIO+1 -#define STM32_USB_OTG_THREAD_STACK_SIZE 128 -#define STM32_USB_OTGFIFO_FILL_BASEPRI 0 - -/* - * WDG driver system settings. - */ -#define STM32_WDG_USE_IWDG FALSE - -#endif /* MCUCONF_H */ diff --git a/platforms/chibios/BLACKPILL_STM32_F411/configs/mcuconf.h b/platforms/chibios/BLACKPILL_STM32_F411/configs/mcuconf.h deleted file mode 100644 index 0394ff56bb97..000000000000 --- a/platforms/chibios/BLACKPILL_STM32_F411/configs/mcuconf.h +++ /dev/null @@ -1,253 +0,0 @@ -/* - 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 - -/* - * HAL driver system settings. - */ -#define STM32_NO_INIT 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 25 -#define STM32_PLLN_VALUE 384 -#define STM32_PLLP_VALUE 4 -#define STM32_PLLQ_VALUE 8 -#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 -#define STM32_PVD_ENABLE FALSE -#define STM32_PLS STM32_PLS_LEV0 -#define STM32_BKPRAM_ENABLE FALSE - -/* - * 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_ADC1_DMA_STREAM STM32_DMA_STREAM_ID(2, 4) -#define STM32_ADC_ADC1_DMA_PRIORITY 2 -#define STM32_ADC_IRQ_PRIORITY 6 -#define STM32_ADC_ADC1_DMA_IRQ_PRIORITY 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_TIM9 FALSE -#define STM32_GPT_USE_TIM11 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_TIM9_IRQ_PRIORITY 7 -#define STM32_GPT_TIM11_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_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_TIM9_IRQ_PRIORITY 7 - -/* - * 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_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_TIM9_IRQ_PRIORITY 7 - -/* - * SERIAL driver system settings. - */ -#define STM32_SERIAL_USE_USART1 FALSE -#define STM32_SERIAL_USE_USART2 FALSE -#define STM32_SERIAL_USE_USART6 FALSE -#define STM32_SERIAL_USART1_PRIORITY 12 -#define STM32_SERIAL_USART2_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_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_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_USART6_IRQ_PRIORITY 12 -#define STM32_UART_USART1_DMA_PRIORITY 0 -#define STM32_UART_USART2_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_OTG1_IRQ_PRIORITY 14 -#define STM32_USB_OTG1_RX_FIFO_SIZE 512 -#define STM32_USB_OTG_THREAD_PRIO NORMALPRIO+1 -#define STM32_USB_OTG_THREAD_STACK_SIZE 128 -#define STM32_USB_OTGFIFO_FILL_BASEPRI 0 - -/* - * WDG driver system settings. - */ -#define STM32_WDG_USE_IWDG FALSE - -#endif /* MCUCONF_H */ diff --git a/platforms/chibios/GENERIC_STM32_F446XE/configs/mcuconf.h b/platforms/chibios/GENERIC_STM32_F446XE/configs/mcuconf.h deleted file mode 100644 index d2de75590ed7..000000000000 --- a/platforms/chibios/GENERIC_STM32_F446XE/configs/mcuconf.h +++ /dev/null @@ -1,361 +0,0 @@ -/* - 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 - -/* - * HAL driver system settings. - */ -#define STM32_NO_INIT FALSE -#define STM32_HSI_ENABLED FALSE -#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 8 -#define STM32_PLLN_VALUE 180 -#define STM32_PLLP_VALUE 2 -#define STM32_PLLQ_VALUE 7 -#define STM32_PLLI2SN_VALUE 192 -#define STM32_PLLI2SM_VALUE 8 -#define STM32_PLLI2SR_VALUE 4 -#define STM32_PLLI2SP_VALUE 4 -#define STM32_PLLI2SQ_VALUE 4 -#define STM32_PLLSAIN_VALUE 192 -#define STM32_PLLSAIM_VALUE 8 -#define STM32_PLLSAIP_VALUE 8 -#define STM32_PLLSAIQ_VALUE 4 -#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_HSE -#define STM32_MCO1PRE STM32_MCO1PRE_DIV1 -#define STM32_MCO2SEL STM32_MCO2SEL_PLLI2S -#define STM32_MCO2PRE STM32_MCO2PRE_DIV1 -#define STM32_I2SSRC STM32_I2SSRC_PLLI2S -#define STM32_SAI1SEL STM32_SAI2SEL_PLLR -#define STM32_SAI2SEL STM32_SAI2SEL_PLLR -#define STM32_CK48MSEL STM32_CK48MSEL_PLLALT -#define STM32_PVD_ENABLE FALSE -#define STM32_PLS STM32_PLS_LEV0 -#define STM32_BKPRAM_ENABLE FALSE - -/* - * 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 - -/* - * 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_USE_UART7 FALSE -#define STM32_SERIAL_USE_UART8 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 -#define STM32_SERIAL_UART7_PRIORITY 12 -#define STM32_SERIAL_UART8_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_USE_SPI4 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_SPI4_RX_DMA_STREAM STM32_DMA_STREAM_ID(2, 0) -#define STM32_SPI_SPI4_TX_DMA_STREAM STM32_DMA_STREAM_ID(2, 1) -#define STM32_SPI_SPI1_DMA_PRIORITY 1 -#define STM32_SPI_SPI2_DMA_PRIORITY 1 -#define STM32_SPI_SPI3_DMA_PRIORITY 1 -#define STM32_SPI_SPI4_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_SPI4_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_OTG_THREAD_PRIO LOWPRIO -#define STM32_USB_OTG_THREAD_STACK_SIZE 128 -#define STM32_USB_OTGFIFO_FILL_BASEPRI 0 - -/* - * WDG driver system settings. - */ -#define STM32_WDG_USE_IWDG FALSE - -#endif /* MCUCONF_H */ diff --git a/platforms/chibios/GENERIC_STM32_G431XB/configs/mcuconf.h b/platforms/chibios/GENERIC_STM32_G431XB/configs/mcuconf.h deleted file mode 100644 index 182d4885d7d7..000000000000 --- a/platforms/chibios/GENERIC_STM32_G431XB/configs/mcuconf.h +++ /dev/null @@ -1,307 +0,0 @@ -/* - 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. -*/ - -/* - * STM32G4xx 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. - */ - -#ifndef MCUCONF_H -#define MCUCONF_H - -#define STM32G4xx_MCUCONF -#define STM32G431_MCUCONF -#define STM32G441_MCUCONF - -/* - * HAL driver system settings. - */ -#define STM32_NO_INIT FALSE -#define STM32_VOS STM32_VOS_RANGE1 -#define STM32_PWR_CR2 (PWR_CR2_PLS_LEV0) -#define STM32_PWR_CR3 (PWR_CR3_EIWF) -#define STM32_PWR_CR4 (0U) -#define STM32_HSI16_ENABLED TRUE -#define STM32_HSI48_ENABLED TRUE -#define STM32_HSE_ENABLED FALSE -#define STM32_LSI_ENABLED TRUE -#define STM32_LSE_ENABLED FALSE -#define STM32_SW STM32_SW_PLLRCLK -#define STM32_PLLSRC STM32_PLLSRC_HSI16 -#define STM32_PLLM_VALUE 4 -#define STM32_PLLN_VALUE 80 -#define STM32_PLLPDIV_VALUE 0 -#define STM32_PLLP_VALUE 7 -#define STM32_PLLQ_VALUE 8 -#define STM32_PLLR_VALUE 2 -#define STM32_HPRE STM32_HPRE_DIV1 -#define STM32_PPRE1 STM32_PPRE1_DIV1 -#define STM32_PPRE2 STM32_PPRE2_DIV1 -#define STM32_MCOSEL STM32_MCOSEL_NOCLOCK -#define STM32_MCOPRE STM32_MCOPRE_DIV1 -#define STM32_LSCOSEL STM32_LSCOSEL_NOCLOCK - -/* - * Peripherals clock sources. - */ -#define STM32_USART1SEL STM32_USART1SEL_SYSCLK -#define STM32_USART2SEL STM32_USART2SEL_SYSCLK -#define STM32_USART3SEL STM32_USART3SEL_SYSCLK -#define STM32_UART4SEL STM32_UART4SEL_SYSCLK -#define STM32_LPUART1SEL STM32_LPUART1SEL_PCLK1 -#define STM32_I2C1SEL STM32_I2C1SEL_PCLK1 -#define STM32_I2C2SEL STM32_I2C2SEL_PCLK1 -#define STM32_I2C3SEL STM32_I2C3SEL_PCLK1 -#define STM32_LPTIM1SEL STM32_LPTIM1SEL_PCLK1 -#define STM32_SAI1SEL STM32_SAI1SEL_SYSCLK -#define STM32_I2S23SEL STM32_I2S23SEL_SYSCLK -#define STM32_FDCANSEL STM32_FDCANSEL_PCLK1 -#define STM32_CLK48SEL STM32_CLK48SEL_HSI48 -#define STM32_ADC12SEL STM32_ADC12SEL_PLLPCLK -#define STM32_RTCSEL STM32_RTCSEL_NOCLOCK - -/* - * 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_EXTI164041_PRIORITY 6 -#define STM32_IRQ_EXTI17_PRIORITY 6 -#define STM32_IRQ_EXTI18_PRIORITY 6 -#define STM32_IRQ_EXTI19_PRIORITY 6 -#define STM32_IRQ_EXTI20_PRIORITY 6 -#define STM32_IRQ_EXTI212229_PRIORITY 6 -#define STM32_IRQ_EXTI30_32_PRIORITY 6 -#define STM32_IRQ_EXTI33_PRIORITY 6 - -#define STM32_IRQ_FDCAN1_PRIORITY 10 - -#define STM32_IRQ_TIM1_BRK_TIM15_PRIORITY 7 -#define STM32_IRQ_TIM1_UP_TIM16_PRIORITY 7 -#define STM32_IRQ_TIM1_TRGCO_TIM17_PRIORITY 7 -#define STM32_IRQ_TIM1_CC_PRIORITY 7 -#define STM32_IRQ_TIM2_PRIORITY 7 -#define STM32_IRQ_TIM3_PRIORITY 7 -#define STM32_IRQ_TIM4_PRIORITY 7 -#define STM32_IRQ_TIM6_PRIORITY 7 -#define STM32_IRQ_TIM7_PRIORITY 7 -#define STM32_IRQ_TIM8_UP_PRIORITY 7 -#define STM32_IRQ_TIM8_CC_PRIORITY 7 - -#define STM32_IRQ_USART1_PRIORITY 12 -#define STM32_IRQ_USART2_PRIORITY 12 -#define STM32_IRQ_USART3_PRIORITY 12 -#define STM32_IRQ_UART4_PRIORITY 12 -#define STM32_IRQ_LPUART1_PRIORITY 12 - -/* - * ADC driver system settings. - */ -#define STM32_ADC_DUAL_MODE FALSE -#define STM32_ADC_COMPACT_SAMPLES FALSE -#define STM32_ADC_USE_ADC1 FALSE -#define STM32_ADC_USE_ADC2 FALSE -#define STM32_ADC_ADC1_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_ADC_ADC2_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_ADC_ADC1_DMA_PRIORITY 2 -#define STM32_ADC_ADC2_DMA_PRIORITY 2 -#define STM32_ADC_ADC12_IRQ_PRIORITY 5 -#define STM32_ADC_ADC1_DMA_IRQ_PRIORITY 5 -#define STM32_ADC_ADC2_DMA_IRQ_PRIORITY 5 -#define STM32_ADC_ADC12_CLOCK_MODE ADC_CCR_CKMODE_AHB_DIV4 -#define STM32_ADC_ADC12_PRESC ADC_CCR_PRESC_DIV2 - -/* - * CAN driver system settings. - */ -#define STM32_CAN_USE_FDCAN1 FALSE - -/* - * 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_USE_DAC3_CH1 FALSE -#define STM32_DAC_USE_DAC3_CH2 FALSE -#define STM32_DAC_DAC1_CH1_IRQ_PRIORITY 10 -#define STM32_DAC_DAC1_CH2_IRQ_PRIORITY 10 -#define STM32_DAC_DAC3_CH1_IRQ_PRIORITY 10 -#define STM32_DAC_DAC3_CH2_IRQ_PRIORITY 10 -#define STM32_DAC_DAC1_CH1_DMA_PRIORITY 2 -#define STM32_DAC_DAC1_CH2_DMA_PRIORITY 2 -#define STM32_DAC_DAC3_CH1_DMA_PRIORITY 2 -#define STM32_DAC_DAC3_CH2_DMA_PRIORITY 2 -#define STM32_DAC_DAC1_CH1_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_DAC_DAC1_CH2_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_DAC_DAC3_CH1_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_DAC_DAC3_CH2_DMA_STREAM STM32_DMA_STREAM_ID_ANY - -/* - * 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_TIM6 FALSE -#define STM32_GPT_USE_TIM7 FALSE -#define STM32_GPT_USE_TIM8 FALSE -#define STM32_GPT_USE_TIM15 FALSE -#define STM32_GPT_USE_TIM16 FALSE -#define STM32_GPT_USE_TIM17 FALSE - -/* - * 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_ANY -#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_I2C_I2C2_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_I2C_I2C3_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_I2C_I2C3_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#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") - -/* - * 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_TIM8 FALSE -#define STM32_ICU_USE_TIM15 FALSE - -/* - * 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_TIM8 FALSE -#define STM32_PWM_USE_TIM15 FALSE -#define STM32_PWM_USE_TIM16 FALSE -#define STM32_PWM_USE_TIM17 FALSE - -/* - * RTC driver system settings. - */ - -/* - * SDC driver system settings. - */ - -/* - * 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_LPUART1 FALSE - -/* - * 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_ANY -#define STM32_SPI_SPI1_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_SPI_SPI2_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_SPI_SPI2_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_SPI_SPI3_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_SPI_SPI3_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#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 - -/* - * TRNG driver system settings. - */ -#define STM32_TRNG_USE_RNG1 FALSE - -/* - * 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_USART1_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_UART_USART1_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_UART_USART2_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_UART_USART2_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_UART_USART3_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_UART_USART3_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_UART_UART4_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_UART_UART4_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#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_DMA_ERROR_HOOK(uartp) osalSysHalt("DMA failure") - -/* - * USB driver system settings. - */ -#define STM32_USB_USE_USB1 TRUE -#define STM32_USB_LOW_POWER_ON_SUSPEND FALSE -#define STM32_USB_USB1_HP_IRQ_PRIORITY 5 -#define STM32_USB_USB1_LP_IRQ_PRIORITY 6 - -/* - * WDG driver system settings. - */ -#define STM32_WDG_USE_IWDG FALSE - -#endif /* MCUCONF_H */ diff --git a/platforms/chibios/GENERIC_STM32_G474XE/configs/mcuconf.h b/platforms/chibios/GENERIC_STM32_G474XE/configs/mcuconf.h deleted file mode 100644 index 117e920e3b32..000000000000 --- a/platforms/chibios/GENERIC_STM32_G474XE/configs/mcuconf.h +++ /dev/null @@ -1,372 +0,0 @@ -/* - 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. -*/ - -/* - * STM32G4xx 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. - */ - -#ifndef MCUCONF_H -#define MCUCONF_H - -#define STM32G4xx_MCUCONF -#define STM32G473_MCUCONF -#define STM32G483_MCUCONF -#define STM32G474_MCUCONF -#define STM32G484_MCUCONF - -/* - * HAL driver system settings. - */ -#define STM32_NO_INIT FALSE -#define STM32_VOS STM32_VOS_RANGE1 -#define STM32_PWR_CR2 (PWR_CR2_PLS_LEV0) -#define STM32_PWR_CR3 (PWR_CR3_EIWF) -#define STM32_PWR_CR4 (0U) -#define STM32_HSI16_ENABLED TRUE -#define STM32_HSI48_ENABLED TRUE -#define STM32_HSE_ENABLED FALSE -#define STM32_LSI_ENABLED FALSE -#define STM32_LSE_ENABLED FALSE -#define STM32_SW STM32_SW_PLLRCLK -#define STM32_PLLSRC STM32_PLLSRC_HSI16 -#define STM32_PLLM_VALUE 2 -#define STM32_PLLN_VALUE 40 -#define STM32_PLLPDIV_VALUE 0 -#define STM32_PLLP_VALUE 7 -#define STM32_PLLQ_VALUE 2 -#define STM32_PLLR_VALUE 2 -#define STM32_HPRE STM32_HPRE_DIV1 -#define STM32_PPRE1 STM32_PPRE1_DIV1 -#define STM32_PPRE2 STM32_PPRE2_DIV1 -#define STM32_MCOSEL STM32_MCOSEL_NOCLOCK -#define STM32_MCOPRE STM32_MCOPRE_DIV1 -#define STM32_LSCOSEL STM32_LSCOSEL_NOCLOCK - -/* - * Peripherals clock sources. - */ -#define STM32_USART1SEL STM32_USART1SEL_SYSCLK -#define STM32_USART2SEL STM32_USART2SEL_SYSCLK -#define STM32_USART3SEL STM32_USART3SEL_SYSCLK -#define STM32_UART4SEL STM32_UART4SEL_SYSCLK -#define STM32_UART5SEL STM32_UART5SEL_SYSCLK -#define STM32_LPUART1SEL STM32_LPUART1SEL_PCLK1 -#define STM32_I2C1SEL STM32_I2C1SEL_PCLK1 -#define STM32_I2C2SEL STM32_I2C2SEL_PCLK1 -#define STM32_I2C3SEL STM32_I2C3SEL_PCLK1 -#define STM32_I2C4SEL STM32_I2C4SEL_PCLK1 -#define STM32_LPTIM1SEL STM32_LPTIM1SEL_PCLK1 -#define STM32_SAI1SEL STM32_SAI1SEL_SYSCLK -#define STM32_I2S23SEL STM32_I2S23SEL_SYSCLK -#define STM32_FDCANSEL STM32_FDCANSEL_HSE -#define STM32_CLK48SEL STM32_CLK48SEL_HSI48 -#define STM32_ADC12SEL STM32_ADC12SEL_PLLPCLK -#define STM32_ADC345SEL STM32_ADC345SEL_PLLPCLK -#define STM32_QSPISEL STM32_QSPISEL_SYSCLK -#define STM32_RTCSEL STM32_RTCSEL_NOCLOCK - -/* - * 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_EXTI164041_PRIORITY 6 -#define STM32_IRQ_EXTI17_PRIORITY 6 -#define STM32_IRQ_EXTI18_PRIORITY 6 -#define STM32_IRQ_EXTI19_PRIORITY 6 -#define STM32_IRQ_EXTI20_PRIORITY 6 -#define STM32_IRQ_EXTI212229_PRIORITY 6 -#define STM32_IRQ_EXTI30_32_PRIORITY 6 -#define STM32_IRQ_EXTI33_PRIORITY 6 - -#define STM32_IRQ_FDCAN1_PRIORITY 10 -#define STM32_IRQ_FDCAN2_PRIORITY 10 -#define STM32_IRQ_FDCAN3_PRIORITY 10 - -#define STM32_IRQ_TIM1_BRK_TIM15_PRIORITY 7 -#define STM32_IRQ_TIM1_UP_TIM16_PRIORITY 7 -#define STM32_IRQ_TIM1_TRGCO_TIM17_PRIORITY 7 -#define STM32_IRQ_TIM1_CC_PRIORITY 7 -#define STM32_IRQ_TIM2_PRIORITY 7 -#define STM32_IRQ_TIM3_PRIORITY 7 -#define STM32_IRQ_TIM4_PRIORITY 7 -#define STM32_IRQ_TIM5_PRIORITY 7 -#define STM32_IRQ_TIM6_PRIORITY 7 -#define STM32_IRQ_TIM7_PRIORITY 7 -#define STM32_IRQ_TIM8_UP_PRIORITY 7 -#define STM32_IRQ_TIM8_CC_PRIORITY 7 -#define STM32_IRQ_TIM20_UP_PRIORITY 7 -#define STM32_IRQ_TIM20_CC_PRIORITY 7 - -#define STM32_IRQ_USART1_PRIORITY 12 -#define STM32_IRQ_USART2_PRIORITY 12 -#define STM32_IRQ_USART3_PRIORITY 12 -#define STM32_IRQ_UART4_PRIORITY 12 -#define STM32_IRQ_UART5_PRIORITY 12 -#define STM32_IRQ_LPUART1_PRIORITY 12 - -/* - * ADC driver system settings. - */ -#define STM32_ADC_DUAL_MODE FALSE -#define STM32_ADC_COMPACT_SAMPLES FALSE -#define STM32_ADC_USE_ADC1 FALSE -#define STM32_ADC_USE_ADC2 FALSE -#define STM32_ADC_USE_ADC3 FALSE -#define STM32_ADC_USE_ADC4 FALSE -#define STM32_ADC_ADC1_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_ADC_ADC2_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_ADC_ADC3_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_ADC_ADC4_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_ADC_ADC1_DMA_PRIORITY 2 -#define STM32_ADC_ADC2_DMA_PRIORITY 2 -#define STM32_ADC_ADC3_DMA_PRIORITY 2 -#define STM32_ADC_ADC4_DMA_PRIORITY 2 -#define STM32_ADC_ADC12_IRQ_PRIORITY 5 -#define STM32_ADC_ADC3_IRQ_PRIORITY 5 -#define STM32_ADC_ADC4_IRQ_PRIORITY 5 -#define STM32_ADC_ADC1_DMA_IRQ_PRIORITY 5 -#define STM32_ADC_ADC2_DMA_IRQ_PRIORITY 5 -#define STM32_ADC_ADC3_DMA_IRQ_PRIORITY 5 -#define STM32_ADC_ADC4_DMA_IRQ_PRIORITY 5 -#define STM32_ADC_ADC12_CLOCK_MODE ADC_CCR_CKMODE_AHB_DIV4 -#define STM32_ADC_ADC345_CLOCK_MODE ADC_CCR_CKMODE_AHB_DIV4 -#define STM32_ADC_ADC12_PRESC ADC_CCR_PRESC_DIV2 -#define STM32_ADC_ADC345_PRESC ADC_CCR_PRESC_DIV2 - -/* - * CAN driver system settings. - */ -#define STM32_CAN_USE_FDCAN1 FALSE -#define STM32_CAN_USE_FDCAN2 FALSE -#define STM32_CAN_USE_FDCAN3 FALSE - -/* - * 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_USE_DAC2_CH1 FALSE -#define STM32_DAC_USE_DAC3_CH1 FALSE -#define STM32_DAC_USE_DAC3_CH2 FALSE -#define STM32_DAC_USE_DAC4_CH1 FALSE -#define STM32_DAC_USE_DAC4_CH2 FALSE -#define STM32_DAC_DAC1_CH1_IRQ_PRIORITY 10 -#define STM32_DAC_DAC1_CH2_IRQ_PRIORITY 10 -#define STM32_DAC_DAC2_CH1_IRQ_PRIORITY 10 -#define STM32_DAC_DAC3_CH1_IRQ_PRIORITY 10 -#define STM32_DAC_DAC3_CH2_IRQ_PRIORITY 10 -#define STM32_DAC_DAC4_CH1_IRQ_PRIORITY 10 -#define STM32_DAC_DAC4_CH2_IRQ_PRIORITY 10 -#define STM32_DAC_DAC1_CH1_DMA_PRIORITY 2 -#define STM32_DAC_DAC1_CH2_DMA_PRIORITY 2 -#define STM32_DAC_DAC2_CH1_DMA_PRIORITY 2 -#define STM32_DAC_DAC3_CH1_DMA_PRIORITY 2 -#define STM32_DAC_DAC3_CH2_DMA_PRIORITY 2 -#define STM32_DAC_DAC4_CH1_DMA_PRIORITY 2 -#define STM32_DAC_DAC4_CH2_DMA_PRIORITY 2 -#define STM32_DAC_DAC1_CH1_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_DAC_DAC1_CH2_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_DAC_DAC2_CH1_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_DAC_DAC3_CH1_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_DAC_DAC3_CH2_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_DAC_DAC4_CH1_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_DAC_DAC4_CH2_DMA_STREAM STM32_DMA_STREAM_ID_ANY - -/* - * 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_TIM15 FALSE -#define STM32_GPT_USE_TIM16 FALSE -#define STM32_GPT_USE_TIM17 FALSE - -/* - * 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_USE_I2C4 FALSE -#define STM32_I2C_BUSY_TIMEOUT 50 -#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_I2C_I2C2_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_I2C_I2C3_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_I2C_I2C3_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_I2C_I2C4_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_I2C_I2C4_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_I2C_I2C1_IRQ_PRIORITY 5 -#define STM32_I2C_I2C2_IRQ_PRIORITY 5 -#define STM32_I2C_I2C3_IRQ_PRIORITY 5 -#define STM32_I2C_I2C4_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_I2C4_DMA_PRIORITY 3 -#define STM32_I2C_DMA_ERROR_HOOK(i2cp) 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_TIM15 FALSE -#define STM32_ICU_USE_TIM16 FALSE -#define STM32_ICU_USE_TIM17 FALSE - -/* - * 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_TIM15 FALSE -#define STM32_PWM_USE_TIM16 FALSE -#define STM32_PWM_USE_TIM17 FALSE -#define STM32_PWM_USE_TIM20 FALSE - -/* - * RTC driver system settings. - */ - -/* - * SDC driver system settings. - */ - -/* - * 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_LPUART1 FALSE - -/* - * 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_USE_SPI4 FALSE -#define STM32_SPI_SPI1_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_SPI_SPI1_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_SPI_SPI2_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_SPI_SPI2_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_SPI_SPI3_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_SPI_SPI3_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_SPI_SPI4_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_SPI_SPI4_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_SPI_SPI1_DMA_PRIORITY 1 -#define STM32_SPI_SPI2_DMA_PRIORITY 1 -#define STM32_SPI_SPI3_DMA_PRIORITY 1 -#define STM32_SPI_SPI4_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_SPI4_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 - -/* - * TRNG driver system settings. - */ -#define STM32_TRNG_USE_RNG1 FALSE - -/* - * 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_USART1_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_UART_USART1_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_UART_USART2_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_UART_USART2_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_UART_USART3_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_UART_USART3_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_UART_UART4_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_UART_UART4_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_UART_UART5_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#define STM32_UART_UART5_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY -#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_DMA_ERROR_HOOK(uartp) osalSysHalt("DMA failure") - -/* - * USB driver system settings. - */ -#define STM32_USB_USE_USB1 TRUE -#define STM32_USB_LOW_POWER_ON_SUSPEND FALSE -#define STM32_USB_USB1_HP_IRQ_PRIORITY 5 -#define STM32_USB_USB1_LP_IRQ_PRIORITY 5 - -/* - * WDG driver system settings. - */ -#define STM32_WDG_USE_IWDG FALSE - -/* - * WSPI driver system settings. - */ -#define STM32_WSPI_USE_QUADSPI1 FALSE -#define STM32_WSPI_QUADSPI1_DMA_STREAM STM32_DMA_STREAM_ID(2, 7) - -#endif /* MCUCONF_H */ diff --git a/platforms/chibios/GENERIC_STM32_L433XC/configs/board.h b/platforms/chibios/GENERIC_STM32_L433XC/configs/board.h deleted file mode 100644 index 51f9724f942a..000000000000 --- a/platforms/chibios/GENERIC_STM32_L433XC/configs/board.h +++ /dev/null @@ -1,24 +0,0 @@ -/* Copyright 2018-2021 Harrison Chan (@Xelus) - * - * This program is free software: you can 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 "board.h" - -#undef STM32L432xx - -// Pretend that we're an L443xx as the ChibiOS definitions for L432/L433 mistakenly don't enable GPIOH, I2C2, or SPI2. -// Until ChibiOS upstream is fixed, this should be kept at L443, as nothing in QMK currently utilises the crypto peripheral on the L443. -#define STM32L443xx diff --git a/platforms/chibios/IC_TEENSY_3_1/board/board.c b/platforms/chibios/IC_TEENSY_3_1/board/board.c deleted file mode 100644 index 36ae8051eee4..000000000000 --- a/platforms/chibios/IC_TEENSY_3_1/board/board.c +++ /dev/null @@ -1,146 +0,0 @@ -/* - ChibiOS - Copyright (C) 2015 RedoX https://github.com/RedoXyde - - 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. -*/ -#include <hal.h> - -#if HAL_USE_PAL || defined(__DOXYGEN__) -/** - * @brief PAL setup. - * @details Digital I/O ports static configuration as defined in @p board.h. - * This variable is used by the HAL when initializing the PAL driver. - */ -const PALConfig pal_default_config = { - .ports = - { - { - /* - * PORTA setup. - * - * PTA4 - PIN33 - * PTA5 - PIN24 - * PTA12 - PIN3 - * PTA13 - PIN4 - * - * PTA18/19 crystal - * PTA0/3 SWD - */ - .port = IOPORT1, - .pads = - { - PAL_MODE_ALTERNATIVE_7, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_ALTERNATIVE_7, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_INPUT_ANALOG, PAL_MODE_INPUT_ANALOG, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, - }, - }, - { - /* - * PORTB setup. - * - * PTB0 - PIN16 - * PTB1 - PIN17 - * PTB2 - PIN19 - * PTB3 - PIN18 - * PTB16 - PIN0 - UART0_TX - * PTB17 - PIN1 - UART0_RX - * PTB18 - PIN32 - * PTB19 - PIN25 - */ - .port = IOPORT2, - .pads = - { - PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_ALTERNATIVE_3, PAL_MODE_ALTERNATIVE_3, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, - }, - }, - { - /* - * PORTC setup. - * - * PTC0 - PIN15 - * PTC1 - PIN22 - * PTC2 - PIN23 - * PTC3 - PIN9 - * PTC4 - PIN10 - * PTC5 - PIN13 - * PTC6 - PIN11 - * PTC7 - PIN12 - * PTC8 - PIN28 - * PTC9 - PIN27 - * PTC10 - PIN29 - * PTC11 - PIN30 - */ - .port = IOPORT3, - .pads = - { - PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, - }, - }, - { - /* - * PORTD setup. - * - * PTD0 - PIN2 - * PTD1 - PIN14 - * PTD2 - PIN7 - * PTD3 - PIN8 - * PTD4 - PIN6 - * PTD5 - PIN20 - * PTD6 - PIN21 - * PTD7 - PIN5 - */ - .port = IOPORT4, - .pads = - { - PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, - }, - }, - { - /* - * PORTE setup. - * - * PTE0 - PIN31 - * PTE1 - PIN26 - */ - .port = IOPORT5, - .pads = - { - PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, - }, - }, - }, -}; -#endif - -// NOTE: This value comes from kiibohd/controller and is the location of a value -// which needs to be checked before disabling the watchdog (which happens in -// k20x_clock_init) -#define WDOG_TMROUTL *(volatile uint16_t *)0x40052012 - -/** - * @brief Early initialization code. - * @details This initialization must be performed just after stack setup - * and before any other initialization. - */ -void __early_init(void) { - // This is a dirty hack and should only be used as a temporary fix until this - // is upstreamed. - while (WDOG_TMROUTL < 2) - ; // Must wait for WDOG timer if already running, before jumping - - k20x_clock_init(); -} - -/** - * @brief Board-specific initialization code. - * @todo Add your board-specific code, if any. - */ -void boardInit(void) {} diff --git a/platforms/chibios/QMK_PROTON_C/configs/chconf.h b/platforms/chibios/QMK_PROTON_C/configs/chconf.h deleted file mode 100644 index a1cbf68086c2..000000000000 --- a/platforms/chibios/QMK_PROTON_C/configs/chconf.h +++ /dev/null @@ -1,756 +0,0 @@ -/* - 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. -*/ - -/** - * @file rt/templates/chconf.h - * @brief Configuration file template. - * @details A copy of this file must be placed in each project directory, it - * contains the application specific kernel settings. - * - * @addtogroup config - * @details Kernel related settings and hooks. - * @{ - */ - -#ifndef CHCONF_H -#define CHCONF_H - -#define _CHIBIOS_RT_CONF_ -#define _CHIBIOS_RT_CONF_VER_6_1_ - -/*===========================================================================*/ -/** - * @name System timers settings - * @{ - */ -/*===========================================================================*/ - -/** - * @brief System time counter resolution. - * @note Allowed values are 16 or 32 bits. - */ -#if !defined(CH_CFG_ST_RESOLUTION) -#define CH_CFG_ST_RESOLUTION 32 -#endif - -/** - * @brief System tick frequency. - * @details Frequency of the system timer that drives the system ticks. This - * setting also defines the system tick time unit. - */ -#if !defined(CH_CFG_ST_FREQUENCY) -#define CH_CFG_ST_FREQUENCY 100000 -#endif - -/** - * @brief Time intervals data size. - * @note Allowed values are 16, 32 or 64 bits. - */ -#if !defined(CH_CFG_INTERVALS_SIZE) -#define CH_CFG_INTERVALS_SIZE 32 -#endif - -/** - * @brief Time types data size. - * @note Allowed values are 16 or 32 bits. - */ -#if !defined(CH_CFG_TIME_TYPES_SIZE) -#define CH_CFG_TIME_TYPES_SIZE 32 -#endif - -/** - * @brief Time delta constant for the tick-less mode. - * @note If this value is zero then the system uses the classic - * periodic tick. This value represents the minimum number - * of ticks that is safe to specify in a timeout directive. - * The value one is not valid, timeouts are rounded up to - * this value. - */ -#if !defined(CH_CFG_ST_TIMEDELTA) -#define CH_CFG_ST_TIMEDELTA 2 -#endif - -/** @} */ - -/*===========================================================================*/ -/** - * @name Kernel parameters and options - * @{ - */ -/*===========================================================================*/ - -/** - * @brief Round robin interval. - * @details This constant is the number of system ticks allowed for the - * threads before preemption occurs. Setting this value to zero - * disables the preemption for threads with equal priority and the - * round robin becomes cooperative. Note that higher priority - * threads can still preempt, the kernel is always preemptive. - * @note Disabling the round robin preemption makes the kernel more compact - * and generally faster. - * @note The round robin preemption is not supported in tickless mode and - * must be set to zero in that case. - */ -#if !defined(CH_CFG_TIME_QUANTUM) -#define CH_CFG_TIME_QUANTUM 0 -#endif - -/** - * @brief Idle thread automatic spawn suppression. - * @details When this option is activated the function @p chSysInit() - * does not spawn the idle thread. The application @p main() - * function becomes the idle thread and must implement an - * infinite loop. - */ -#if !defined(CH_CFG_NO_IDLE_THREAD) -#define CH_CFG_NO_IDLE_THREAD FALSE -#endif - -/** @} */ - -/*===========================================================================*/ -/** - * @name Performance options - * @{ - */ -/*===========================================================================*/ - -/** - * @brief OS optimization. - * @details If enabled then time efficient rather than space efficient code - * is used when two possible implementations exist. - * - * @note This is not related to the compiler optimization options. - * @note The default is @p TRUE. - */ -#if !defined(CH_CFG_OPTIMIZE_SPEED) -#define CH_CFG_OPTIMIZE_SPEED TRUE -#endif - -/** @} */ - -/*===========================================================================*/ -/** - * @name Subsystem options - * @{ - */ -/*===========================================================================*/ - -/** - * @brief Time Measurement APIs. - * @details If enabled then the time measurement APIs are included in - * the kernel. - * - * @note The default is @p TRUE. - */ -#if !defined(CH_CFG_USE_TM) -#define CH_CFG_USE_TM TRUE -#endif - -/** - * @brief Threads registry APIs. - * @details If enabled then the registry APIs are included in the kernel. - * - * @note The default is @p TRUE. - */ -#if !defined(CH_CFG_USE_REGISTRY) -#define CH_CFG_USE_REGISTRY TRUE -#endif - -/** - * @brief Threads synchronization APIs. - * @details If enabled then the @p chThdWait() function is included in - * the kernel. - * - * @note The default is @p TRUE. - */ -#if !defined(CH_CFG_USE_WAITEXIT) -#define CH_CFG_USE_WAITEXIT TRUE -#endif - -/** - * @brief Semaphores APIs. - * @details If enabled then the Semaphores APIs are included in the kernel. - * - * @note The default is @p TRUE. - */ -#if !defined(CH_CFG_USE_SEMAPHORES) -#define CH_CFG_USE_SEMAPHORES TRUE -#endif - -/** - * @brief Semaphores queuing mode. - * @details If enabled then the threads are enqueued on semaphores by - * priority rather than in FIFO order. - * - * @note The default is @p FALSE. Enable this if you have special - * requirements. - * @note Requires @p CH_CFG_USE_SEMAPHORES. - */ -#if !defined(CH_CFG_USE_SEMAPHORES_PRIORITY) -#define CH_CFG_USE_SEMAPHORES_PRIORITY FALSE -#endif - -/** - * @brief Mutexes APIs. - * @details If enabled then the mutexes APIs are included in the kernel. - * - * @note The default is @p TRUE. - */ -#if !defined(CH_CFG_USE_MUTEXES) -#define CH_CFG_USE_MUTEXES TRUE -#endif - -/** - * @brief Enables recursive behavior on mutexes. - * @note Recursive mutexes are heavier and have an increased - * memory footprint. - * - * @note The default is @p FALSE. - * @note Requires @p CH_CFG_USE_MUTEXES. - */ -#if !defined(CH_CFG_USE_MUTEXES_RECURSIVE) -#define CH_CFG_USE_MUTEXES_RECURSIVE FALSE -#endif - -/** - * @brief Conditional Variables APIs. - * @details If enabled then the conditional variables APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - * @note Requires @p CH_CFG_USE_MUTEXES. - */ -#if !defined(CH_CFG_USE_CONDVARS) -#define CH_CFG_USE_CONDVARS TRUE -#endif - -/** - * @brief Conditional Variables APIs with timeout. - * @details If enabled then the conditional variables APIs with timeout - * specification are included in the kernel. - * - * @note The default is @p TRUE. - * @note Requires @p CH_CFG_USE_CONDVARS. - */ -#if !defined(CH_CFG_USE_CONDVARS_TIMEOUT) -#define CH_CFG_USE_CONDVARS_TIMEOUT TRUE -#endif - -/** - * @brief Events Flags APIs. - * @details If enabled then the event flags APIs are included in the kernel. - * - * @note The default is @p TRUE. - */ -#if !defined(CH_CFG_USE_EVENTS) -#define CH_CFG_USE_EVENTS TRUE -#endif - -/** - * @brief Events Flags APIs with timeout. - * @details If enabled then the events APIs with timeout specification - * are included in the kernel. - * - * @note The default is @p TRUE. - * @note Requires @p CH_CFG_USE_EVENTS. - */ -#if !defined(CH_CFG_USE_EVENTS_TIMEOUT) -#define CH_CFG_USE_EVENTS_TIMEOUT TRUE -#endif - -/** - * @brief Synchronous Messages APIs. - * @details If enabled then the synchronous messages APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - */ -#if !defined(CH_CFG_USE_MESSAGES) -#define CH_CFG_USE_MESSAGES TRUE -#endif - -/** - * @brief Synchronous Messages queuing mode. - * @details If enabled then messages are served by priority rather than in - * FIFO order. - * - * @note The default is @p FALSE. Enable this if you have special - * requirements. - * @note Requires @p CH_CFG_USE_MESSAGES. - */ -#if !defined(CH_CFG_USE_MESSAGES_PRIORITY) -#define CH_CFG_USE_MESSAGES_PRIORITY TRUE -#endif - -/** - * @brief Dynamic Threads APIs. - * @details If enabled then the dynamic threads creation APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - * @note Requires @p CH_CFG_USE_WAITEXIT. - * @note Requires @p CH_CFG_USE_HEAP and/or @p CH_CFG_USE_MEMPOOLS. - */ -#if !defined(CH_CFG_USE_DYNAMIC) -#define CH_CFG_USE_DYNAMIC TRUE -#endif - -/** @} */ - -/*===========================================================================*/ -/** - * @name OSLIB options - * @{ - */ -/*===========================================================================*/ - -/** - * @brief Mailboxes APIs. - * @details If enabled then the asynchronous messages (mailboxes) APIs are - * included in the kernel. - * - * @note The default is @p TRUE. - * @note Requires @p CH_CFG_USE_SEMAPHORES. - */ -#if !defined(CH_CFG_USE_MAILBOXES) -#define CH_CFG_USE_MAILBOXES TRUE -#endif - -/** - * @brief Core Memory Manager APIs. - * @details If enabled then the core memory manager APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - */ -#if !defined(CH_CFG_USE_MEMCORE) -#define CH_CFG_USE_MEMCORE TRUE -#endif - -/** - * @brief Managed RAM size. - * @details Size of the RAM area to be managed by the OS. If set to zero - * then the whole available RAM is used. The core memory is made - * available to the heap allocator and/or can be used directly through - * the simplified core memory allocator. - * - * @note In order to let the OS manage the whole RAM the linker script must - * provide the @p __heap_base__ and @p __heap_end__ symbols. - * @note Requires @p CH_CFG_USE_MEMCORE. - */ -#if !defined(CH_CFG_MEMCORE_SIZE) -#define CH_CFG_MEMCORE_SIZE 0 -#endif - -/** - * @brief Heap Allocator APIs. - * @details If enabled then the memory heap allocator APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - * @note Requires @p CH_CFG_USE_MEMCORE and either @p CH_CFG_USE_MUTEXES or - * @p CH_CFG_USE_SEMAPHORES. - * @note Mutexes are recommended. - */ -#if !defined(CH_CFG_USE_HEAP) -#define CH_CFG_USE_HEAP TRUE -#endif - -/** - * @brief Memory Pools Allocator APIs. - * @details If enabled then the memory pools allocator APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - */ -#if !defined(CH_CFG_USE_MEMPOOLS) -#define CH_CFG_USE_MEMPOOLS TRUE -#endif - -/** - * @brief Objects FIFOs APIs. - * @details If enabled then the objects FIFOs APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - */ -#if !defined(CH_CFG_USE_OBJ_FIFOS) -#define CH_CFG_USE_OBJ_FIFOS TRUE -#endif - -/** - * @brief Pipes APIs. - * @details If enabled then the pipes APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - */ -#if !defined(CH_CFG_USE_PIPES) -#define CH_CFG_USE_PIPES TRUE -#endif - -/** - * @brief Objects Caches APIs. - * @details If enabled then the objects caches APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - */ -#if !defined(CH_CFG_USE_OBJ_CACHES) -#define CH_CFG_USE_OBJ_CACHES FALSE -#endif - -/** - * @brief Delegate threads APIs. - * @details If enabled then the delegate threads APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - */ -#if !defined(CH_CFG_USE_DELEGATES) -#define CH_CFG_USE_DELEGATES FALSE -#endif - -/** - * @brief Jobs Queues APIs. - * @details If enabled then the jobs queues APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - */ -#if !defined(CH_CFG_USE_JOBS) -#define CH_CFG_USE_JOBS FALSE -#endif - -/** @} */ - -/*===========================================================================*/ -/** - * @name Objects factory options - * @{ - */ -/*===========================================================================*/ - -/** - * @brief Objects Factory APIs. - * @details If enabled then the objects factory APIs are included in the - * kernel. - * - * @note The default is @p FALSE. - */ -#if !defined(CH_CFG_USE_FACTORY) -#define CH_CFG_USE_FACTORY FALSE -#endif - -/** - * @brief Maximum length for object names. - * @details If the specified length is zero then the name is stored by - * pointer but this could have unintended side effects. - */ -#if !defined(CH_CFG_FACTORY_MAX_NAMES_LENGTH) -#define CH_CFG_FACTORY_MAX_NAMES_LENGTH 8 -#endif - -/** - * @brief Enables the registry of generic objects. - */ -#if !defined(CH_CFG_FACTORY_OBJECTS_REGISTRY) -#define CH_CFG_FACTORY_OBJECTS_REGISTRY TRUE -#endif - -/** - * @brief Enables factory for generic buffers. - */ -#if !defined(CH_CFG_FACTORY_GENERIC_BUFFERS) -#define CH_CFG_FACTORY_GENERIC_BUFFERS TRUE -#endif - -/** - * @brief Enables factory for semaphores. - */ -#if !defined(CH_CFG_FACTORY_SEMAPHORES) -#define CH_CFG_FACTORY_SEMAPHORES TRUE -#endif - -/** - * @brief Enables factory for mailboxes. - */ -#if !defined(CH_CFG_FACTORY_MAILBOXES) -#define CH_CFG_FACTORY_MAILBOXES TRUE -#endif - -/** - * @brief Enables factory for objects FIFOs. - */ -#if !defined(CH_CFG_FACTORY_OBJ_FIFOS) -#define CH_CFG_FACTORY_OBJ_FIFOS TRUE -#endif - -/** - * @brief Enables factory for Pipes. - */ -#if !defined(CH_CFG_FACTORY_PIPES) || defined(__DOXYGEN__) -#define CH_CFG_FACTORY_PIPES TRUE -#endif - -/** @} */ - -/*===========================================================================*/ -/** - * @name Debug options - * @{ - */ -/*===========================================================================*/ - -/** - * @brief Debug option, kernel statistics. - * - * @note The default is @p FALSE. - */ -#if !defined(CH_DBG_STATISTICS) -#define CH_DBG_STATISTICS FALSE -#endif - -/** - * @brief Debug option, system state check. - * @details If enabled the correct call protocol for system APIs is checked - * at runtime. - * - * @note The default is @p FALSE. - */ -#if !defined(CH_DBG_SYSTEM_STATE_CHECK) -#define CH_DBG_SYSTEM_STATE_CHECK FALSE -#endif - -/** - * @brief Debug option, parameters checks. - * @details If enabled then the checks on the API functions input - * parameters are activated. - * - * @note The default is @p FALSE. - */ -#if !defined(CH_DBG_ENABLE_CHECKS) -#define CH_DBG_ENABLE_CHECKS FALSE -#endif - -/** - * @brief Debug option, consistency checks. - * @details If enabled then all the assertions in the kernel code are - * activated. This includes consistency checks inside the kernel, - * runtime anomalies and port-defined checks. - * - * @note The default is @p FALSE. - */ -#if !defined(CH_DBG_ENABLE_ASSERTS) -#define CH_DBG_ENABLE_ASSERTS FALSE -#endif - -/** - * @brief Debug option, trace buffer. - * @details If enabled then the trace buffer is activated. - * - * @note The default is @p CH_DBG_TRACE_MASK_DISABLED. - */ -#if !defined(CH_DBG_TRACE_MASK) -#define CH_DBG_TRACE_MASK CH_DBG_TRACE_MASK_DISABLED -#endif - -/** - * @brief Trace buffer entries. - * @note The trace buffer is only allocated if @p CH_DBG_TRACE_MASK is - * different from @p CH_DBG_TRACE_MASK_DISABLED. - */ -#if !defined(CH_DBG_TRACE_BUFFER_SIZE) -#define CH_DBG_TRACE_BUFFER_SIZE 128 -#endif - -/** - * @brief Debug option, stack checks. - * @details If enabled then a runtime stack check is performed. - * - * @note The default is @p FALSE. - * @note The stack check is performed in a architecture/port dependent way. - * It may not be implemented or some ports. - * @note The default failure mode is to halt the system with the global - * @p panic_msg variable set to @p NULL. - */ -#if !defined(CH_DBG_ENABLE_STACK_CHECK) -#define CH_DBG_ENABLE_STACK_CHECK TRUE -#endif - -/** - * @brief Debug option, stacks initialization. - * @details If enabled then the threads working area is filled with a byte - * value when a thread is created. This can be useful for the - * runtime measurement of the used stack. - * - * @note The default is @p FALSE. - */ -#if !defined(CH_DBG_FILL_THREADS) -#define CH_DBG_FILL_THREADS FALSE -#endif - -/** - * @brief Debug option, threads profiling. - * @details If enabled then a field is added to the @p thread_t structure that - * counts the system ticks occurred while executing the thread. - * - * @note The default is @p FALSE. - * @note This debug option is not currently compatible with the - * tickless mode. - */ -#if !defined(CH_DBG_THREADS_PROFILING) -#define CH_DBG_THREADS_PROFILING FALSE -#endif - -/** @} */ - -/*===========================================================================*/ -/** - * @name Kernel hooks - * @{ - */ -/*===========================================================================*/ - -/** - * @brief System structure extension. - * @details User fields added to the end of the @p ch_system_t structure. - */ -#define CH_CFG_SYSTEM_EXTRA_FIELDS \ - /* Add threads custom fields here.*/ - -/** - * @brief System initialization hook. - * @details User initialization code added to the @p chSysInit() function - * just before interrupts are enabled globally. - */ -#define CH_CFG_SYSTEM_INIT_HOOK() { \ - /* Add threads initialization code here.*/ \ -} - -/** - * @brief Threads descriptor structure extension. - * @details User fields added to the end of the @p thread_t structure. - */ -#define CH_CFG_THREAD_EXTRA_FIELDS \ - /* Add threads custom fields here.*/ - -/** - * @brief Threads initialization hook. - * @details User initialization code added to the @p _thread_init() function. - * - * @note It is invoked from within @p _thread_init() and implicitly from all - * the threads creation APIs. - */ -#define CH_CFG_THREAD_INIT_HOOK(tp) { \ - /* Add threads initialization code here.*/ \ -} - -/** - * @brief Threads finalization hook. - * @details User finalization code added to the @p chThdExit() API. - */ -#define CH_CFG_THREAD_EXIT_HOOK(tp) { \ - /* Add threads finalization code here.*/ \ -} - -/** - * @brief Context switch hook. - * @details This hook is invoked just before switching between threads. - */ -#define CH_CFG_CONTEXT_SWITCH_HOOK(ntp, otp) { \ - /* Context switch code here.*/ \ -} - -/** - * @brief ISR enter hook. - */ -#define CH_CFG_IRQ_PROLOGUE_HOOK() { \ - /* IRQ prologue code here.*/ \ -} - -/** - * @brief ISR exit hook. - */ -#define CH_CFG_IRQ_EPILOGUE_HOOK() { \ - /* IRQ epilogue code here.*/ \ -} - -/** - * @brief Idle thread enter hook. - * @note This hook is invoked within a critical zone, no OS functions - * should be invoked from here. - * @note This macro can be used to activate a power saving mode. - */ -#define CH_CFG_IDLE_ENTER_HOOK() { \ - /* Idle-enter code here.*/ \ -} - -/** - * @brief Idle thread leave hook. - * @note This hook is invoked within a critical zone, no OS functions - * should be invoked from here. - * @note This macro can be used to deactivate a power saving mode. - */ -#define CH_CFG_IDLE_LEAVE_HOOK() { \ - /* Idle-leave code here.*/ \ -} - -/** - * @brief Idle Loop hook. - * @details This hook is continuously invoked by the idle thread loop. - */ -#define CH_CFG_IDLE_LOOP_HOOK() { \ - /* Idle loop code here.*/ \ -} - -/** - * @brief System tick event hook. - * @details This hook is invoked in the system tick handler immediately - * after processing the virtual timers queue. - */ -#define CH_CFG_SYSTEM_TICK_HOOK() { \ - /* System tick event code here.*/ \ -} - -/** - * @brief System halt hook. - * @details This hook is invoked in case to a system halting error before - * the system is halted. - */ -#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \ - /* System halt code here.*/ \ -} - -/** - * @brief Trace hook. - * @details This hook is invoked each time a new record is written in the - * trace buffer. - */ -#define CH_CFG_TRACE_HOOK(tep) { \ - /* Trace code here.*/ \ -} - -/** @} */ - -/*===========================================================================*/ -/* Port-specific settings (override port settings defaulted in chcore.h). */ -/*===========================================================================*/ - -#endif /* CHCONF_H */ - -/** @} */ diff --git a/platforms/chibios/QMK_PROTON_C/configs/config.h b/platforms/chibios/QMK_PROTON_C/configs/config.h deleted file mode 100644 index a73f0c0b475a..000000000000 --- a/platforms/chibios/QMK_PROTON_C/configs/config.h +++ /dev/null @@ -1,20 +0,0 @@ -/* 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 - -#ifndef EARLY_INIT_PERFORM_BOOTLOADER_JUMP -# define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE -#endif diff --git a/platforms/chibios/QMK_PROTON_C/configs/halconf.h b/platforms/chibios/QMK_PROTON_C/configs/halconf.h deleted file mode 100644 index 41fbac29e0a4..000000000000 --- a/platforms/chibios/QMK_PROTON_C/configs/halconf.h +++ /dev/null @@ -1,531 +0,0 @@ -/* - 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. -*/ - -/** - * @file templates/halconf.h - * @brief HAL configuration header. - * @details HAL configuration file, this file allows to enable or disable the - * various device drivers from your application. You may also use - * this file in order to override the device drivers default settings. - * - * @addtogroup HAL_CONF - * @{ - */ - -#ifndef HALCONF_H -#define HALCONF_H - -#define _CHIBIOS_HAL_CONF_ -#define _CHIBIOS_HAL_CONF_VER_7_1_ - -#include <mcuconf.h> - -/** - * @brief Enables the PAL subsystem. - */ -#if !defined(HAL_USE_PAL) || defined(__DOXYGEN__) -#define HAL_USE_PAL TRUE -#endif - -/** - * @brief Enables the ADC subsystem. - */ -#if !defined(HAL_USE_ADC) || defined(__DOXYGEN__) -#define HAL_USE_ADC FALSE -#endif - -/** - * @brief Enables the CAN subsystem. - */ -#if !defined(HAL_USE_CAN) || defined(__DOXYGEN__) -#define HAL_USE_CAN FALSE -#endif - -/** - * @brief Enables the cryptographic subsystem. - */ -#if !defined(HAL_USE_CRY) || defined(__DOXYGEN__) -#define HAL_USE_CRY FALSE -#endif - -/** - * @brief Enables the DAC subsystem. - */ -#if !defined(HAL_USE_DAC) || defined(__DOXYGEN__) -#define HAL_USE_DAC TRUE -#endif - -/** - * @brief Enables the EFlash subsystem. - */ -#if !defined(HAL_USE_EFL) || defined(__DOXYGEN__) -#define HAL_USE_EFL FALSE -#endif - -/** - * @brief Enables the GPT subsystem. - */ -#if !defined(HAL_USE_GPT) || defined(__DOXYGEN__) -#define HAL_USE_GPT TRUE -#endif - -/** - * @brief Enables the I2C subsystem. - */ -#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__) -#define HAL_USE_I2C TRUE -#endif - -/** - * @brief Enables the I2S subsystem. - */ -#if !defined(HAL_USE_I2S) || defined(__DOXYGEN__) -#define HAL_USE_I2S FALSE -#endif - -/** - * @brief Enables the ICU subsystem. - */ -#if !defined(HAL_USE_ICU) || defined(__DOXYGEN__) -#define HAL_USE_ICU FALSE -#endif - -/** - * @brief Enables the MAC subsystem. - */ -#if !defined(HAL_USE_MAC) || defined(__DOXYGEN__) -#define HAL_USE_MAC FALSE -#endif - -/** - * @brief Enables the MMC_SPI subsystem. - */ -#if !defined(HAL_USE_MMC_SPI) || defined(__DOXYGEN__) -#define HAL_USE_MMC_SPI FALSE -#endif - -/** - * @brief Enables the PWM subsystem. - */ -#if !defined(HAL_USE_PWM) || defined(__DOXYGEN__) -#define HAL_USE_PWM TRUE -#endif - -/** - * @brief Enables the RTC subsystem. - */ -#if !defined(HAL_USE_RTC) || defined(__DOXYGEN__) -#define HAL_USE_RTC FALSE -#endif - -/** - * @brief Enables the SDC subsystem. - */ -#if !defined(HAL_USE_SDC) || defined(__DOXYGEN__) -#define HAL_USE_SDC FALSE -#endif - -/** - * @brief Enables the SERIAL subsystem. - */ -#if !defined(HAL_USE_SERIAL) || defined(__DOXYGEN__) -#define HAL_USE_SERIAL FALSE -#endif - -/** - * @brief Enables the SERIAL over USB subsystem. - */ -#if !defined(HAL_USE_SERIAL_USB) || defined(__DOXYGEN__) -#define HAL_USE_SERIAL_USB TRUE -#endif - -/** - * @brief Enables the SIO subsystem. - */ -#if !defined(HAL_USE_SIO) || defined(__DOXYGEN__) -#define HAL_USE_SIO FALSE -#endif - -/** - * @brief Enables the SPI subsystem. - */ -#if !defined(HAL_USE_SPI) || defined(__DOXYGEN__) -#define HAL_USE_SPI TRUE -#endif - -/** - * @brief Enables the TRNG subsystem. - */ -#if !defined(HAL_USE_TRNG) || defined(__DOXYGEN__) -#define HAL_USE_TRNG FALSE -#endif - -/** - * @brief Enables the UART subsystem. - */ -#if !defined(HAL_USE_UART) || defined(__DOXYGEN__) -#define HAL_USE_UART FALSE -#endif - -/** - * @brief Enables the USB subsystem. - */ -#if !defined(HAL_USE_USB) || defined(__DOXYGEN__) -#define HAL_USE_USB TRUE -#endif - -/** - * @brief Enables the WDG subsystem. - */ -#if !defined(HAL_USE_WDG) || defined(__DOXYGEN__) -#define HAL_USE_WDG FALSE -#endif - -/** - * @brief Enables the WSPI subsystem. - */ -#if !defined(HAL_USE_WSPI) || defined(__DOXYGEN__) -#define HAL_USE_WSPI FALSE -#endif - -/*===========================================================================*/ -/* PAL driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Enables synchronous APIs. - * @note Disabling this option saves both code and data space. - */ -#if !defined(PAL_USE_CALLBACKS) || defined(__DOXYGEN__) -#define PAL_USE_CALLBACKS TRUE -#endif - -/** - * @brief Enables synchronous APIs. - * @note Disabling this option saves both code and data space. - */ -#if !defined(PAL_USE_WAIT) || defined(__DOXYGEN__) -#define PAL_USE_WAIT TRUE -#endif - -/*===========================================================================*/ -/* ADC driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Enables synchronous APIs. - * @note Disabling this option saves both code and data space. - */ -#if !defined(ADC_USE_WAIT) || defined(__DOXYGEN__) -#define ADC_USE_WAIT TRUE -#endif - -/** - * @brief Enables the @p adcAcquireBus() and @p adcReleaseBus() APIs. - * @note Disabling this option saves both code and data space. - */ -#if !defined(ADC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) -#define ADC_USE_MUTUAL_EXCLUSION TRUE -#endif - -/*===========================================================================*/ -/* CAN driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Sleep mode related APIs inclusion switch. - */ -#if !defined(CAN_USE_SLEEP_MODE) || defined(__DOXYGEN__) -#define CAN_USE_SLEEP_MODE TRUE -#endif - -/** - * @brief Enforces the driver to use direct callbacks rather than OSAL events. - */ -#if !defined(CAN_ENFORCE_USE_CALLBACKS) || defined(__DOXYGEN__) -#define CAN_ENFORCE_USE_CALLBACKS FALSE -#endif - -/*===========================================================================*/ -/* CRY driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Enables the SW fall-back of the cryptographic driver. - * @details When enabled, this option, activates a fall-back software - * implementation for algorithms not supported by the underlying - * hardware. - * @note Fall-back implementations may not be present for all algorithms. - */ -#if !defined(HAL_CRY_USE_FALLBACK) || defined(__DOXYGEN__) -#define HAL_CRY_USE_FALLBACK FALSE -#endif - -/** - * @brief Makes the driver forcibly use the fall-back implementations. - */ -#if !defined(HAL_CRY_ENFORCE_FALLBACK) || defined(__DOXYGEN__) -#define HAL_CRY_ENFORCE_FALLBACK FALSE -#endif - -/*===========================================================================*/ -/* DAC driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Enables synchronous APIs. - * @note Disabling this option saves both code and data space. - */ -#if !defined(DAC_USE_WAIT) || defined(__DOXYGEN__) -#define DAC_USE_WAIT TRUE -#endif - -/** - * @brief Enables the @p dacAcquireBus() and @p dacReleaseBus() APIs. - * @note Disabling this option saves both code and data space. - */ -#if !defined(DAC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) -#define DAC_USE_MUTUAL_EXCLUSION TRUE -#endif - -/*===========================================================================*/ -/* I2C driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Enables the mutual exclusion APIs on the I2C bus. - */ -#if !defined(I2C_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) -#define I2C_USE_MUTUAL_EXCLUSION TRUE -#endif - -/*===========================================================================*/ -/* MAC driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Enables the zero-copy API. - */ -#if !defined(MAC_USE_ZERO_COPY) || defined(__DOXYGEN__) -#define MAC_USE_ZERO_COPY FALSE -#endif - -/** - * @brief Enables an event sources for incoming packets. - */ -#if !defined(MAC_USE_EVENTS) || defined(__DOXYGEN__) -#define MAC_USE_EVENTS TRUE -#endif - -/*===========================================================================*/ -/* MMC_SPI driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Delays insertions. - * @details If enabled this options inserts delays into the MMC waiting - * routines releasing some extra CPU time for the threads with - * lower priority, this may slow down the driver a bit however. - * This option is recommended also if the SPI driver does not - * use a DMA channel and heavily loads the CPU. - */ -#if !defined(MMC_NICE_WAITING) || defined(__DOXYGEN__) -#define MMC_NICE_WAITING TRUE -#endif - -/*===========================================================================*/ -/* SDC driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Number of initialization attempts before rejecting the card. - * @note Attempts are performed at 10mS intervals. - */ -#if !defined(SDC_INIT_RETRY) || defined(__DOXYGEN__) -#define SDC_INIT_RETRY 100 -#endif - -/** - * @brief Include support for MMC cards. - * @note MMC support is not yet implemented so this option must be kept - * at @p FALSE. - */ -#if !defined(SDC_MMC_SUPPORT) || defined(__DOXYGEN__) -#define SDC_MMC_SUPPORT FALSE -#endif - -/** - * @brief Delays insertions. - * @details If enabled this options inserts delays into the MMC waiting - * routines releasing some extra CPU time for the threads with - * lower priority, this may slow down the driver a bit however. - */ -#if !defined(SDC_NICE_WAITING) || defined(__DOXYGEN__) -#define SDC_NICE_WAITING TRUE -#endif - -/** - * @brief OCR initialization constant for V20 cards. - */ -#if !defined(SDC_INIT_OCR_V20) || defined(__DOXYGEN__) -#define SDC_INIT_OCR_V20 0x50FF8000U -#endif - -/** - * @brief OCR initialization constant for non-V20 cards. - */ -#if !defined(SDC_INIT_OCR) || defined(__DOXYGEN__) -#define SDC_INIT_OCR 0x80100000U -#endif - -/*===========================================================================*/ -/* SERIAL driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Default bit rate. - * @details Configuration parameter, this is the baud rate selected for the - * default configuration. - */ -#if !defined(SERIAL_DEFAULT_BITRATE) || defined(__DOXYGEN__) -#define SERIAL_DEFAULT_BITRATE 38400 -#endif - -/** - * @brief Serial buffers size. - * @details Configuration parameter, you can change the depth of the queue - * buffers depending on the requirements of your application. - * @note The default is 16 bytes for both the transmission and receive - * buffers. - */ -#if !defined(SERIAL_BUFFERS_SIZE) || defined(__DOXYGEN__) -#define SERIAL_BUFFERS_SIZE 16 -#endif - -/*===========================================================================*/ -/* SERIAL_USB driver related setting. */ -/*===========================================================================*/ - -/** - * @brief Serial over USB buffers size. - * @details Configuration parameter, the buffer size must be a multiple of - * the USB data endpoint maximum packet size. - * @note The default is 256 bytes for both the transmission and receive - * buffers. - */ -#if !defined(SERIAL_USB_BUFFERS_SIZE) || defined(__DOXYGEN__) -#define SERIAL_USB_BUFFERS_SIZE 1 -#endif - -/** - * @brief Serial over USB number of buffers. - * @note The default is 2 buffers. - */ -#if !defined(SERIAL_USB_BUFFERS_NUMBER) || defined(__DOXYGEN__) -#define SERIAL_USB_BUFFERS_NUMBER 2 -#endif - -/*===========================================================================*/ -/* SPI driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Enables synchronous APIs. - * @note Disabling this option saves both code and data space. - */ -#if !defined(SPI_USE_WAIT) || defined(__DOXYGEN__) -#define SPI_USE_WAIT TRUE -#endif - -/** - * @brief Enables circular transfers APIs. - * @note Disabling this option saves both code and data space. - */ -#if !defined(SPI_USE_CIRCULAR) || defined(__DOXYGEN__) -#define SPI_USE_CIRCULAR FALSE -#endif - -/** - * @brief Enables the @p spiAcquireBus() and @p spiReleaseBus() APIs. - * @note Disabling this option saves both code and data space. - */ -#if !defined(SPI_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) -#define SPI_USE_MUTUAL_EXCLUSION TRUE -#endif - -/** - * @brief Handling method for SPI CS line. - * @note Disabling this option saves both code and data space. - */ -#if !defined(SPI_SELECT_MODE) || defined(__DOXYGEN__) -#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD -#endif - -/*===========================================================================*/ -/* UART driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Enables synchronous APIs. - * @note Disabling this option saves both code and data space. - */ -#if !defined(UART_USE_WAIT) || defined(__DOXYGEN__) -#define UART_USE_WAIT FALSE -#endif - -/** - * @brief Enables the @p uartAcquireBus() and @p uartReleaseBus() APIs. - * @note Disabling this option saves both code and data space. - */ -#if !defined(UART_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) -#define UART_USE_MUTUAL_EXCLUSION FALSE -#endif - -/*===========================================================================*/ -/* USB driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Enables synchronous APIs. - * @note Disabling this option saves both code and data space. - */ -#if !defined(USB_USE_WAIT) || defined(__DOXYGEN__) -#define USB_USE_WAIT TRUE -#endif - -/*===========================================================================*/ -/* WSPI driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Enables synchronous APIs. - * @note Disabling this option saves both code and data space. - */ -#if !defined(WSPI_USE_WAIT) || defined(__DOXYGEN__) -#define WSPI_USE_WAIT TRUE -#endif - -/** - * @brief Enables the @p wspiAcquireBus() and @p wspiReleaseBus() APIs. - * @note Disabling this option saves both code and data space. - */ -#if !defined(WSPI_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) -#define WSPI_USE_MUTUAL_EXCLUSION TRUE -#endif - -#endif /* HALCONF_H */ - -/** @} */ diff --git a/platforms/chibios/_timer.h b/platforms/chibios/_timer.h new file mode 100644 index 000000000000..77402b612a87 --- /dev/null +++ b/platforms/chibios/_timer.h @@ -0,0 +1,19 @@ +/* Copyright 2021 Simon Arlott + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +#pragma once + +// The platform is 32-bit, so prefer 32-bit timers to avoid overflow +#define FAST_TIMER_T_SIZE 32 diff --git a/platforms/chibios/_wait.c b/platforms/chibios/_wait.c new file mode 100644 index 000000000000..1fbea2dd5ec1 --- /dev/null +++ b/platforms/chibios/_wait.c @@ -0,0 +1,89 @@ +/* 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/>. + */ + +#ifndef __OPTIMIZE__ +# pragma message "Compiler optimizations disabled; wait_cpuclock() won't work as designed" +#endif + +#define CLOCK_DELAY_NOP8 "nop\n\t nop\n\t nop\n\t nop\n\t nop\n\t nop\n\t nop\n\t nop\n\t" + +__attribute__((always_inline)) static inline void wait_cpuclock(unsigned int n) { /* n: 1..135 */ + /* The argument n must be a constant expression. + * That way, compiler optimization will remove unnecessary code. */ + if (n < 1) { + return; + } + if (n > 8) { + unsigned int n8 = n / 8; + n = n - n8 * 8; + switch (n8) { + case 16: + asm volatile(CLOCK_DELAY_NOP8::: "memory"); + case 15: + asm volatile(CLOCK_DELAY_NOP8::: "memory"); + case 14: + asm volatile(CLOCK_DELAY_NOP8::: "memory"); + case 13: + asm volatile(CLOCK_DELAY_NOP8::: "memory"); + case 12: + asm volatile(CLOCK_DELAY_NOP8::: "memory"); + case 11: + asm volatile(CLOCK_DELAY_NOP8::: "memory"); + case 10: + asm volatile(CLOCK_DELAY_NOP8::: "memory"); + case 9: + asm volatile(CLOCK_DELAY_NOP8::: "memory"); + case 8: + asm volatile(CLOCK_DELAY_NOP8::: "memory"); + case 7: + asm volatile(CLOCK_DELAY_NOP8::: "memory"); + case 6: + asm volatile(CLOCK_DELAY_NOP8::: "memory"); + case 5: + asm volatile(CLOCK_DELAY_NOP8::: "memory"); + case 4: + asm volatile(CLOCK_DELAY_NOP8::: "memory"); + case 3: + asm volatile(CLOCK_DELAY_NOP8::: "memory"); + case 2: + asm volatile(CLOCK_DELAY_NOP8::: "memory"); + case 1: + asm volatile(CLOCK_DELAY_NOP8::: "memory"); + case 0: + break; + } + } + switch (n) { + case 8: + asm volatile("nop" ::: "memory"); + case 7: + asm volatile("nop" ::: "memory"); + case 6: + asm volatile("nop" ::: "memory"); + case 5: + asm volatile("nop" ::: "memory"); + case 4: + asm volatile("nop" ::: "memory"); + case 3: + asm volatile("nop" ::: "memory"); + case 2: + asm volatile("nop" ::: "memory"); + case 1: + asm volatile("nop" ::: "memory"); + case 0: + break; + } +} diff --git a/platforms/chibios/_wait.h b/platforms/chibios/_wait.h new file mode 100644 index 000000000000..2f36c64a2e60 --- /dev/null +++ b/platforms/chibios/_wait.h @@ -0,0 +1,60 @@ +/* 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 <ch.h> +#include <hal.h> + +/* chThdSleepX of zero maps to infinite - so we map to a tiny delay to still yield */ +#define wait_ms(ms) \ + do { \ + if (ms != 0) { \ + chThdSleepMilliseconds(ms); \ + } else { \ + chThdSleepMicroseconds(1); \ + } \ + } while (0) + +#ifdef WAIT_US_TIMER +void wait_us(uint16_t duration); +#else +# define wait_us(us) \ + do { \ + if (us != 0) { \ + chThdSleepMicroseconds(us); \ + } else { \ + chThdSleepMicroseconds(1); \ + } \ + } while (0) +#endif + +#include "_wait.c" + +/* 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. + * And since the instruction execution clock of the CPU and the bus clock of GPIO are different, + * there is a delay of several clocks to read the change of the input signal. + * + * Define this delay with the GPIO_INPUT_PIN_DELAY macro. + * If the GPIO_INPUT_PIN_DELAY macro is not defined, the following default values will be used. + * (A fairly large value of 0.25 microseconds is set.) + */ +#ifndef GPIO_INPUT_PIN_DELAY +# define GPIO_INPUT_PIN_DELAY (CPU_CLOCK / 1000000L / 4) +#endif + +#define waitInputPinDelay() wait_cpuclock(GPIO_INPUT_PIN_DELAY) diff --git a/tmk_core/common/chibios/atomic_util.h b/platforms/chibios/atomic_util.h similarity index 100% rename from tmk_core/common/chibios/atomic_util.h rename to platforms/chibios/atomic_util.h diff --git a/platforms/chibios/BLACKPILL_STM32_F401/board/board.mk b/platforms/chibios/boards/BLACKPILL_STM32_F401/board/board.mk similarity index 100% rename from platforms/chibios/BLACKPILL_STM32_F401/board/board.mk rename to platforms/chibios/boards/BLACKPILL_STM32_F401/board/board.mk diff --git a/platforms/chibios/BLACKPILL_STM32_F401/configs/board.h b/platforms/chibios/boards/BLACKPILL_STM32_F401/configs/board.h similarity index 100% rename from platforms/chibios/BLACKPILL_STM32_F401/configs/board.h rename to platforms/chibios/boards/BLACKPILL_STM32_F401/configs/board.h diff --git a/platforms/chibios/BLACKPILL_STM32_F401/configs/bootloader_defs.h b/platforms/chibios/boards/BLACKPILL_STM32_F401/configs/bootloader_defs.h similarity index 100% rename from platforms/chibios/BLACKPILL_STM32_F401/configs/bootloader_defs.h rename to platforms/chibios/boards/BLACKPILL_STM32_F401/configs/bootloader_defs.h diff --git a/platforms/chibios/BLACKPILL_STM32_F401/configs/config.h b/platforms/chibios/boards/BLACKPILL_STM32_F401/configs/config.h similarity index 100% rename from platforms/chibios/BLACKPILL_STM32_F401/configs/config.h rename to platforms/chibios/boards/BLACKPILL_STM32_F401/configs/config.h diff --git a/platforms/chibios/boards/BLACKPILL_STM32_F401/configs/mcuconf.h b/platforms/chibios/boards/BLACKPILL_STM32_F401/configs/mcuconf.h new file mode 100644 index 000000000000..a21fd7bd1286 --- /dev/null +++ b/platforms/chibios/boards/BLACKPILL_STM32_F401/configs/mcuconf.h @@ -0,0 +1,244 @@ +/* + ChibiOS - Copyright (C) 2006..2020 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 STM32F401_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 25 +#define STM32_PLLN_VALUE 336 +#define STM32_PLLP_VALUE 4 +#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 + +#define STM32_IRQ_TIM1_BRK_TIM9_PRIORITY 7 +#define STM32_IRQ_TIM1_UP_TIM10_PRIORITY 7 +#define STM32_IRQ_TIM1_TRGCO_TIM11_PRIORITY 7 +#define STM32_IRQ_TIM1_CC_PRIORITY 7 +#define STM32_IRQ_TIM2_PRIORITY 7 +#define STM32_IRQ_TIM3_PRIORITY 7 +#define STM32_IRQ_TIM4_PRIORITY 7 +#define STM32_IRQ_TIM5_PRIORITY 7 + +#define STM32_IRQ_USART1_PRIORITY 12 +#define STM32_IRQ_USART2_PRIORITY 12 +#define STM32_IRQ_USART6_PRIORITY 12 + +/* + * ADC driver system settings. + */ +#define STM32_ADC_ADCPRE ADC_CCR_ADCPRE_DIV4 +#define STM32_ADC_USE_ADC1 FALSE +#define STM32_ADC_ADC1_DMA_STREAM STM32_DMA_STREAM_ID(2, 4) +#define STM32_ADC_ADC1_DMA_PRIORITY 2 +#define STM32_ADC_IRQ_PRIORITY 6 +#define STM32_ADC_ADC1_DMA_IRQ_PRIORITY 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_TIM9 FALSE +#define STM32_GPT_USE_TIM10 FALSE +#define STM32_GPT_USE_TIM11 FALSE + +/* + * 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_TIM9 FALSE +#define STM32_ICU_USE_TIM10 FALSE +#define STM32_ICU_USE_TIM11 FALSE + +/* + * PWM driver system settings. + */ +#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_TIM9 FALSE +#define STM32_PWM_USE_TIM10 FALSE +#define STM32_PWM_USE_TIM11 FALSE + +/* + * SERIAL driver system settings. + */ +#define STM32_SERIAL_USE_USART1 FALSE +#define STM32_SERIAL_USE_USART2 FALSE +#define STM32_SERIAL_USE_USART6 FALSE + +/* + * 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_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_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_DMA_PRIORITY 0 +#define STM32_UART_USART2_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_OTG1_IRQ_PRIORITY 14 +#define STM32_USB_OTG1_RX_FIFO_SIZE 512 +#define STM32_USB_HOST_WAKEUP_DURATION 2 + +/* + * WDG driver system settings. + */ +#define STM32_WDG_USE_IWDG FALSE + +#endif /* MCUCONF_H */ diff --git a/platforms/chibios/boards/BLACKPILL_STM32_F401/ld/STM32F401xC_tinyuf2.ld b/platforms/chibios/boards/BLACKPILL_STM32_F401/ld/STM32F401xC_tinyuf2.ld new file mode 100644 index 000000000000..f4e487dc8f92 --- /dev/null +++ b/platforms/chibios/boards/BLACKPILL_STM32_F401/ld/STM32F401xC_tinyuf2.ld @@ -0,0 +1,88 @@ +/* + 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 + 64k, len = 256k - 64k /* tinyuf2 bootloader requires app to be located at 64k offset for this MCU */ + flash1 (rx) : org = 0x00000000, len = 0 + flash2 (rx) : org = 0x00000000, len = 0 + 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", flash0); +REGION_ALIAS("XTORS_FLASH_LMA", flash0); + +/* Flash region to be used for code text.*/ +REGION_ALIAS("TEXT_FLASH", flash0); +REGION_ALIAS("TEXT_FLASH_LMA", flash0); + +/* Flash region to be used for read only data.*/ +REGION_ALIAS("RODATA_FLASH", flash0); +REGION_ALIAS("RODATA_FLASH_LMA", flash0); + +/* Flash region to be used for various.*/ +REGION_ALIAS("VARIOUS_FLASH", flash0); +REGION_ALIAS("VARIOUS_FLASH_LMA", flash0); + +/* Flash region to be used for RAM(n) initialization data.*/ +REGION_ALIAS("RAM_INIT_FLASH_LMA", flash0); + +/* 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", flash0); + +/* 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 + +/* TinyUF2 bootloader reset support */ +_board_dfu_dbl_tap = ORIGIN(ram0) + 64k - 4; /* this is based off the linker file for tinyuf2 */ diff --git a/platforms/chibios/boards/BLACKPILL_STM32_F401/ld/STM32F401xE_tinyuf2.ld b/platforms/chibios/boards/BLACKPILL_STM32_F401/ld/STM32F401xE_tinyuf2.ld new file mode 100644 index 000000000000..895d13fa3223 --- /dev/null +++ b/platforms/chibios/boards/BLACKPILL_STM32_F401/ld/STM32F401xE_tinyuf2.ld @@ -0,0 +1,88 @@ +/* + 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 + 64k, len = 512k - 64k /* tinyuf2 bootloader requires app to be located at 64k offset for this MCU */ + flash1 (rx) : org = 0x00000000, len = 0 + flash2 (rx) : org = 0x00000000, len = 0 + 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", flash0); +REGION_ALIAS("XTORS_FLASH_LMA", flash0); + +/* Flash region to be used for code text.*/ +REGION_ALIAS("TEXT_FLASH", flash0); +REGION_ALIAS("TEXT_FLASH_LMA", flash0); + +/* Flash region to be used for read only data.*/ +REGION_ALIAS("RODATA_FLASH", flash0); +REGION_ALIAS("RODATA_FLASH_LMA", flash0); + +/* Flash region to be used for various.*/ +REGION_ALIAS("VARIOUS_FLASH", flash0); +REGION_ALIAS("VARIOUS_FLASH_LMA", flash0); + +/* Flash region to be used for RAM(n) initialization data.*/ +REGION_ALIAS("RAM_INIT_FLASH_LMA", flash0); + +/* 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", flash0); + +/* 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 + +/* TinyUF2 bootloader reset support */ +_board_dfu_dbl_tap = ORIGIN(ram0) + 64k - 4; /* this is based off the linker file for tinyuf2 */ diff --git a/platforms/chibios/BLACKPILL_STM32_F411/board/board.mk b/platforms/chibios/boards/BLACKPILL_STM32_F411/board/board.mk similarity index 100% rename from platforms/chibios/BLACKPILL_STM32_F411/board/board.mk rename to platforms/chibios/boards/BLACKPILL_STM32_F411/board/board.mk diff --git a/platforms/chibios/BLACKPILL_STM32_F411/configs/board.h b/platforms/chibios/boards/BLACKPILL_STM32_F411/configs/board.h similarity index 100% rename from platforms/chibios/BLACKPILL_STM32_F411/configs/board.h rename to platforms/chibios/boards/BLACKPILL_STM32_F411/configs/board.h diff --git a/platforms/chibios/BLACKPILL_STM32_F411/configs/bootloader_defs.h b/platforms/chibios/boards/BLACKPILL_STM32_F411/configs/bootloader_defs.h similarity index 100% rename from platforms/chibios/BLACKPILL_STM32_F411/configs/bootloader_defs.h rename to platforms/chibios/boards/BLACKPILL_STM32_F411/configs/bootloader_defs.h diff --git a/platforms/chibios/BLACKPILL_STM32_F411/configs/config.h b/platforms/chibios/boards/BLACKPILL_STM32_F411/configs/config.h similarity index 100% rename from platforms/chibios/BLACKPILL_STM32_F411/configs/config.h rename to platforms/chibios/boards/BLACKPILL_STM32_F411/configs/config.h diff --git a/platforms/chibios/boards/BLACKPILL_STM32_F411/configs/mcuconf.h b/platforms/chibios/boards/BLACKPILL_STM32_F411/configs/mcuconf.h new file mode 100644 index 000000000000..131c847661cf --- /dev/null +++ b/platforms/chibios/boards/BLACKPILL_STM32_F411/configs/mcuconf.h @@ -0,0 +1,252 @@ +/* + ChibiOS - Copyright (C) 2006..2020 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 STM32F411_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 25 +#define STM32_PLLN_VALUE 384 +#define STM32_PLLP_VALUE 4 +#define STM32_PLLQ_VALUE 8 +#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 + +#define STM32_IRQ_TIM1_BRK_TIM9_PRIORITY 7 +#define STM32_IRQ_TIM1_UP_TIM10_PRIORITY 7 +#define STM32_IRQ_TIM1_TRGCO_TIM11_PRIORITY 7 +#define STM32_IRQ_TIM1_CC_PRIORITY 7 +#define STM32_IRQ_TIM2_PRIORITY 7 +#define STM32_IRQ_TIM3_PRIORITY 7 +#define STM32_IRQ_TIM4_PRIORITY 7 +#define STM32_IRQ_TIM5_PRIORITY 7 + +#define STM32_IRQ_USART1_PRIORITY 12 +#define STM32_IRQ_USART2_PRIORITY 12 +#define STM32_IRQ_USART6_PRIORITY 12 + +/* + * ADC driver system settings. + */ +#define STM32_ADC_ADCPRE ADC_CCR_ADCPRE_DIV4 +#define STM32_ADC_USE_ADC1 FALSE +#define STM32_ADC_ADC1_DMA_STREAM STM32_DMA_STREAM_ID(2, 4) +#define STM32_ADC_ADC1_DMA_PRIORITY 2 +#define STM32_ADC_IRQ_PRIORITY 6 +#define STM32_ADC_ADC1_DMA_IRQ_PRIORITY 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_TIM9 FALSE +#define STM32_GPT_USE_TIM10 FALSE +#define STM32_GPT_USE_TIM11 FALSE + +/* + * 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_TIM9 FALSE +#define STM32_ICU_USE_TIM10 FALSE +#define STM32_ICU_USE_TIM11 FALSE + +/* + * PWM driver system settings. + */ +#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_TIM9 FALSE +#define STM32_PWM_USE_TIM10 FALSE +#define STM32_PWM_USE_TIM11 FALSE + +/* + * 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 + +/* + * SERIAL driver system settings. + */ +#define STM32_SERIAL_USE_USART1 FALSE +#define STM32_SERIAL_USE_USART2 FALSE +#define STM32_SERIAL_USE_USART6 FALSE + +/* + * 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_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_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_DMA_PRIORITY 0 +#define STM32_UART_USART2_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_OTG1_IRQ_PRIORITY 14 +#define STM32_USB_OTG1_RX_FIFO_SIZE 512 +#define STM32_USB_HOST_WAKEUP_DURATION 2 + +/* + * WDG driver system settings. + */ +#define STM32_WDG_USE_IWDG FALSE + +#endif /* MCUCONF_H */ diff --git a/platforms/chibios/BLACKPILL_STM32_F411/ld/STM32F411xC_tinyuf2.ld b/platforms/chibios/boards/BLACKPILL_STM32_F411/ld/STM32F411xC_tinyuf2.ld similarity index 100% rename from platforms/chibios/BLACKPILL_STM32_F411/ld/STM32F411xC_tinyuf2.ld rename to platforms/chibios/boards/BLACKPILL_STM32_F411/ld/STM32F411xC_tinyuf2.ld diff --git a/platforms/chibios/BLACKPILL_STM32_F411/ld/STM32F411xE_tinyuf2.ld b/platforms/chibios/boards/BLACKPILL_STM32_F411/ld/STM32F411xE_tinyuf2.ld similarity index 100% rename from platforms/chibios/BLACKPILL_STM32_F411/ld/STM32F411xE_tinyuf2.ld rename to platforms/chibios/boards/BLACKPILL_STM32_F411/ld/STM32F411xE_tinyuf2.ld diff --git a/platforms/chibios/GENERIC_STM32_F042X6/board/board.c b/platforms/chibios/boards/GENERIC_STM32_F042X6/board/board.c similarity index 100% rename from platforms/chibios/GENERIC_STM32_F042X6/board/board.c rename to platforms/chibios/boards/GENERIC_STM32_F042X6/board/board.c diff --git a/platforms/chibios/GENERIC_STM32_F042X6/board/board.h b/platforms/chibios/boards/GENERIC_STM32_F042X6/board/board.h similarity index 100% rename from platforms/chibios/GENERIC_STM32_F042X6/board/board.h rename to platforms/chibios/boards/GENERIC_STM32_F042X6/board/board.h diff --git a/platforms/chibios/GENERIC_STM32_F042X6/board/board.mk b/platforms/chibios/boards/GENERIC_STM32_F042X6/board/board.mk similarity index 100% rename from platforms/chibios/GENERIC_STM32_F042X6/board/board.mk rename to platforms/chibios/boards/GENERIC_STM32_F042X6/board/board.mk diff --git a/platforms/chibios/GENERIC_STM32_F042X6/configs/bootloader_defs.h b/platforms/chibios/boards/GENERIC_STM32_F042X6/configs/bootloader_defs.h similarity index 100% rename from platforms/chibios/GENERIC_STM32_F042X6/configs/bootloader_defs.h rename to platforms/chibios/boards/GENERIC_STM32_F042X6/configs/bootloader_defs.h diff --git a/platforms/chibios/GENERIC_STM32_F042X6/configs/config.h b/platforms/chibios/boards/GENERIC_STM32_F042X6/configs/config.h similarity index 100% rename from platforms/chibios/GENERIC_STM32_F042X6/configs/config.h rename to platforms/chibios/boards/GENERIC_STM32_F042X6/configs/config.h diff --git a/platforms/chibios/GENERIC_STM32_F042X6/configs/mcuconf.h b/platforms/chibios/boards/GENERIC_STM32_F042X6/configs/mcuconf.h similarity index 100% rename from platforms/chibios/GENERIC_STM32_F042X6/configs/mcuconf.h rename to platforms/chibios/boards/GENERIC_STM32_F042X6/configs/mcuconf.h diff --git a/platforms/chibios/GENERIC_STM32_F072XB/board/board.mk b/platforms/chibios/boards/GENERIC_STM32_F072XB/board/board.mk similarity index 100% rename from platforms/chibios/GENERIC_STM32_F072XB/board/board.mk rename to platforms/chibios/boards/GENERIC_STM32_F072XB/board/board.mk diff --git a/platforms/chibios/GENERIC_STM32_F072XB/configs/board.h b/platforms/chibios/boards/GENERIC_STM32_F072XB/configs/board.h similarity index 100% rename from platforms/chibios/GENERIC_STM32_F072XB/configs/board.h rename to platforms/chibios/boards/GENERIC_STM32_F072XB/configs/board.h diff --git a/platforms/chibios/GENERIC_STM32_F072XB/configs/bootloader_defs.h b/platforms/chibios/boards/GENERIC_STM32_F072XB/configs/bootloader_defs.h similarity index 100% rename from platforms/chibios/GENERIC_STM32_F072XB/configs/bootloader_defs.h rename to platforms/chibios/boards/GENERIC_STM32_F072XB/configs/bootloader_defs.h diff --git a/platforms/chibios/GENERIC_STM32_F072XB/configs/config.h b/platforms/chibios/boards/GENERIC_STM32_F072XB/configs/config.h similarity index 100% rename from platforms/chibios/GENERIC_STM32_F072XB/configs/config.h rename to platforms/chibios/boards/GENERIC_STM32_F072XB/configs/config.h diff --git a/platforms/chibios/GENERIC_STM32_F072XB/configs/mcuconf.h b/platforms/chibios/boards/GENERIC_STM32_F072XB/configs/mcuconf.h similarity index 100% rename from platforms/chibios/GENERIC_STM32_F072XB/configs/mcuconf.h rename to platforms/chibios/boards/GENERIC_STM32_F072XB/configs/mcuconf.h diff --git a/platforms/chibios/GENERIC_STM32_F303XC/board/board.mk b/platforms/chibios/boards/GENERIC_STM32_F303XC/board/board.mk similarity index 100% rename from platforms/chibios/GENERIC_STM32_F303XC/board/board.mk rename to platforms/chibios/boards/GENERIC_STM32_F303XC/board/board.mk diff --git a/platforms/chibios/GENERIC_STM32_F303XC/configs/board.h b/platforms/chibios/boards/GENERIC_STM32_F303XC/configs/board.h similarity index 100% rename from platforms/chibios/GENERIC_STM32_F303XC/configs/board.h rename to platforms/chibios/boards/GENERIC_STM32_F303XC/configs/board.h diff --git a/platforms/chibios/GENERIC_STM32_F303XC/configs/bootloader_defs.h b/platforms/chibios/boards/GENERIC_STM32_F303XC/configs/bootloader_defs.h similarity index 100% rename from platforms/chibios/GENERIC_STM32_F303XC/configs/bootloader_defs.h rename to platforms/chibios/boards/GENERIC_STM32_F303XC/configs/bootloader_defs.h diff --git a/platforms/chibios/GENERIC_STM32_F303XC/configs/config.h b/platforms/chibios/boards/GENERIC_STM32_F303XC/configs/config.h similarity index 100% rename from platforms/chibios/GENERIC_STM32_F303XC/configs/config.h rename to platforms/chibios/boards/GENERIC_STM32_F303XC/configs/config.h diff --git a/platforms/chibios/GENERIC_STM32_F303XC/configs/mcuconf.h b/platforms/chibios/boards/GENERIC_STM32_F303XC/configs/mcuconf.h similarity index 100% rename from platforms/chibios/GENERIC_STM32_F303XC/configs/mcuconf.h rename to platforms/chibios/boards/GENERIC_STM32_F303XC/configs/mcuconf.h 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 000000000000..6c837bb8ee21 --- /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 000000000000..8cb771bc12f9 --- /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/platforms/chibios/GENERIC_STM32_F446XE/configs/config.h b/platforms/chibios/boards/GENERIC_STM32_F405XG/configs/config.h similarity index 100% rename from platforms/chibios/GENERIC_STM32_F446XE/configs/config.h rename to platforms/chibios/boards/GENERIC_STM32_F405XG/configs/config.h 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 000000000000..908a580a91be --- /dev/null +++ b/platforms/chibios/boards/GENERIC_STM32_F405XG/configs/mcuconf.h @@ -0,0 +1,352 @@ +/* + 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 + +/* + * WDG driver system settings. + */ +#define STM32_WDG_USE_IWDG FALSE + +#endif /* MCUCONF_H */ diff --git a/platforms/chibios/boards/GENERIC_STM32_F407XE/board/board.mk b/platforms/chibios/boards/GENERIC_STM32_F407XE/board/board.mk new file mode 100644 index 000000000000..6c837bb8ee21 --- /dev/null +++ b/platforms/chibios/boards/GENERIC_STM32_F407XE/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_F407XE/configs/board.h b/platforms/chibios/boards/GENERIC_STM32_F407XE/configs/board.h new file mode 100644 index 000000000000..22c4e4cd7e69 --- /dev/null +++ b/platforms/chibios/boards/GENERIC_STM32_F407XE/configs/board.h @@ -0,0 +1,24 @@ +/* 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 8000000 +// 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 \ No newline at end of file diff --git a/platforms/chibios/boards/GENERIC_STM32_F407XE/configs/config.h b/platforms/chibios/boards/GENERIC_STM32_F407XE/configs/config.h new file mode 100644 index 000000000000..cc52a953ed4d --- /dev/null +++ b/platforms/chibios/boards/GENERIC_STM32_F407XE/configs/config.h @@ -0,0 +1,23 @@ +/* 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 + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +/* 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 diff --git a/platforms/chibios/boards/GENERIC_STM32_F407XE/configs/mcuconf.h b/platforms/chibios/boards/GENERIC_STM32_F407XE/configs/mcuconf.h new file mode 100644 index 000000000000..928ee56c71cf --- /dev/null +++ b/platforms/chibios/boards/GENERIC_STM32_F407XE/configs/mcuconf.h @@ -0,0 +1,352 @@ +/* + 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 8 +#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 + +/* + * WDG driver system settings. + */ +#define STM32_WDG_USE_IWDG FALSE + +#endif /* MCUCONF_H */ diff --git a/platforms/chibios/GENERIC_STM32_F446XE/board/board.mk b/platforms/chibios/boards/GENERIC_STM32_F446XE/board/board.mk similarity index 100% rename from platforms/chibios/GENERIC_STM32_F446XE/board/board.mk rename to platforms/chibios/boards/GENERIC_STM32_F446XE/board/board.mk diff --git a/platforms/chibios/GENERIC_STM32_F446XE/configs/board.h b/platforms/chibios/boards/GENERIC_STM32_F446XE/configs/board.h similarity index 100% rename from platforms/chibios/GENERIC_STM32_F446XE/configs/board.h rename to platforms/chibios/boards/GENERIC_STM32_F446XE/configs/board.h diff --git a/platforms/chibios/boards/GENERIC_STM32_F446XE/configs/config.h b/platforms/chibios/boards/GENERIC_STM32_F446XE/configs/config.h new file mode 100644 index 000000000000..cc52a953ed4d --- /dev/null +++ b/platforms/chibios/boards/GENERIC_STM32_F446XE/configs/config.h @@ -0,0 +1,23 @@ +/* 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 + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +/* 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 diff --git a/platforms/chibios/boards/GENERIC_STM32_F446XE/configs/mcuconf.h b/platforms/chibios/boards/GENERIC_STM32_F446XE/configs/mcuconf.h new file mode 100644 index 000000000000..566c146c259f --- /dev/null +++ b/platforms/chibios/boards/GENERIC_STM32_F446XE/configs/mcuconf.h @@ -0,0 +1,373 @@ +/* + ChibiOS - Copyright (C) 2006..2020 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 STM32F446_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 FALSE +#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 8 +#define STM32_PLLN_VALUE 180 +#define STM32_PLLP_VALUE 2 +#define STM32_PLLQ_VALUE 7 +#define STM32_PLLI2SN_VALUE 192 +#define STM32_PLLI2SM_VALUE 8 +#define STM32_PLLI2SR_VALUE 4 +#define STM32_PLLI2SP_VALUE 4 +#define STM32_PLLI2SQ_VALUE 4 +#define STM32_PLLSAIN_VALUE 192 +#define STM32_PLLSAIM_VALUE 8 +#define STM32_PLLSAIP_VALUE 8 +#define STM32_PLLSAIQ_VALUE 4 +#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_HSE +#define STM32_MCO1PRE STM32_MCO1PRE_DIV1 +#define STM32_MCO2SEL STM32_MCO2SEL_PLLI2S +#define STM32_MCO2PRE STM32_MCO2PRE_DIV1 +#define STM32_I2SSRC STM32_I2SSRC_PLLI2S +#define STM32_SAI1SEL STM32_SAI2SEL_PLLR +#define STM32_SAI2SEL STM32_SAI2SEL_PLLR +#define STM32_CK48MSEL STM32_CK48MSEL_PLLALT + +/* + * 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 + +#define STM32_IRQ_TIM1_BRK_TIM9_PRIORITY 7 +#define STM32_IRQ_TIM1_UP_TIM10_PRIORITY 7 +#define STM32_IRQ_TIM1_TRGCO_TIM11_PRIORITY 7 +#define STM32_IRQ_TIM1_CC_PRIORITY 7 +#define STM32_IRQ_TIM2_PRIORITY 7 +#define STM32_IRQ_TIM3_PRIORITY 7 +#define STM32_IRQ_TIM4_PRIORITY 7 +#define STM32_IRQ_TIM5_PRIORITY 7 +#define STM32_IRQ_TIM6_PRIORITY 7 +#define STM32_IRQ_TIM7_PRIORITY 7 +#define STM32_IRQ_TIM8_BRK_TIM12_PRIORITY 7 +#define STM32_IRQ_TIM8_UP_TIM13_PRIORITY 7 +#define STM32_IRQ_TIM8_TRGCO_TIM14_PRIORITY 7 +#define STM32_IRQ_TIM8_CC_PRIORITY 7 + +#define STM32_IRQ_USART1_PRIORITY 12 +#define STM32_IRQ_USART2_PRIORITY 12 +#define STM32_IRQ_USART3_PRIORITY 12 +#define STM32_IRQ_UART4_PRIORITY 12 +#define STM32_IRQ_UART5_PRIORITY 12 +#define STM32_IRQ_USART6_PRIORITY 12 +#define STM32_IRQ_UART7_PRIORITY 12 +#define STM32_IRQ_UART8_PRIORITY 12 + +/* + * 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_TIM10 FALSE +#define STM32_GPT_USE_TIM11 FALSE +#define STM32_GPT_USE_TIM12 FALSE +#define STM32_GPT_USE_TIM13 FALSE +#define STM32_GPT_USE_TIM14 FALSE + +/* + * 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_USE_TIM10 FALSE +#define STM32_ICU_USE_TIM11 FALSE +#define STM32_ICU_USE_TIM12 FALSE +#define STM32_ICU_USE_TIM13 FALSE +#define STM32_ICU_USE_TIM14 FALSE + +/* + * 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_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_USE_TIM10 FALSE +#define STM32_PWM_USE_TIM11 FALSE +#define STM32_PWM_USE_TIM12 FALSE +#define STM32_PWM_USE_TIM13 FALSE +#define STM32_PWM_USE_TIM14 FALSE + +/* + * 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_USE_UART7 FALSE +#define STM32_SERIAL_USE_UART8 FALSE + +/* + * 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_USE_SPI4 FALSE +#define STM32_SPI_USE_SPI5 FALSE +#define STM32_SPI_USE_SPI6 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_SPI4_RX_DMA_STREAM STM32_DMA_STREAM_ID(2, 0) +#define STM32_SPI_SPI4_TX_DMA_STREAM STM32_DMA_STREAM_ID(2, 1) +#define STM32_SPI_SPI5_RX_DMA_STREAM STM32_DMA_STREAM_ID(2, 3) +#define STM32_SPI_SPI5_TX_DMA_STREAM STM32_DMA_STREAM_ID(2, 4) +#define STM32_SPI_SPI6_RX_DMA_STREAM STM32_DMA_STREAM_ID(2, 6) +#define STM32_SPI_SPI6_TX_DMA_STREAM STM32_DMA_STREAM_ID(2, 5) +#define STM32_SPI_SPI1_DMA_PRIORITY 1 +#define STM32_SPI_SPI2_DMA_PRIORITY 1 +#define STM32_SPI_SPI3_DMA_PRIORITY 1 +#define STM32_SPI_SPI4_DMA_PRIORITY 1 +#define STM32_SPI_SPI5_DMA_PRIORITY 1 +#define STM32_SPI_SPI6_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_SPI4_IRQ_PRIORITY 10 +#define STM32_SPI_SPI5_IRQ_PRIORITY 10 +#define STM32_SPI_SPI6_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_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 + +/* + * WDG driver system settings. + */ +#define STM32_WDG_USE_IWDG FALSE + +#endif /* MCUCONF_H */ diff --git a/platforms/chibios/GENERIC_STM32_G431XB/board/board.mk b/platforms/chibios/boards/GENERIC_STM32_G431XB/board/board.mk similarity index 100% rename from platforms/chibios/GENERIC_STM32_G431XB/board/board.mk rename to platforms/chibios/boards/GENERIC_STM32_G431XB/board/board.mk diff --git a/platforms/chibios/GENERIC_STM32_G431XB/configs/config.h b/platforms/chibios/boards/GENERIC_STM32_G431XB/configs/config.h similarity index 100% rename from platforms/chibios/GENERIC_STM32_G431XB/configs/config.h rename to platforms/chibios/boards/GENERIC_STM32_G431XB/configs/config.h diff --git a/platforms/chibios/boards/GENERIC_STM32_G431XB/configs/mcuconf.h b/platforms/chibios/boards/GENERIC_STM32_G431XB/configs/mcuconf.h new file mode 100644 index 000000000000..d115028300bc --- /dev/null +++ b/platforms/chibios/boards/GENERIC_STM32_G431XB/configs/mcuconf.h @@ -0,0 +1,322 @@ +/* + 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. +*/ + +/* + * STM32G4xx 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. + */ + +#ifndef MCUCONF_H +#define MCUCONF_H + +#define STM32G4xx_MCUCONF +#define STM32G431_MCUCONF +#define STM32G441_MCUCONF + +/* + * HAL driver system settings. + */ +#define STM32_NO_INIT FALSE +#define STM32_VOS STM32_VOS_RANGE1 +#define STM32_PWR_BOOST TRUE +#define STM32_PWR_CR2 (PWR_CR2_PLS_LEV0) +#define STM32_PWR_CR3 (PWR_CR3_EIWF) +#define STM32_PWR_CR4 (0U) +#define STM32_PWR_PUCRA (0U) +#define STM32_PWR_PDCRA (0U) +#define STM32_PWR_PUCRB (0U) +#define STM32_PWR_PDCRB (0U) +#define STM32_PWR_PUCRC (0U) +#define STM32_PWR_PDCRC (0U) +#define STM32_PWR_PUCRD (0U) +#define STM32_PWR_PDCRD (0U) +#define STM32_PWR_PUCRE (0U) +#define STM32_PWR_PDCRE (0U) +#define STM32_PWR_PUCRF (0U) +#define STM32_PWR_PDCRF (0U) +#define STM32_PWR_PUCRG (0U) +#define STM32_PWR_PDCRG (0U) +#define STM32_HSI16_ENABLED TRUE +#define STM32_HSI48_ENABLED TRUE +#define STM32_HSE_ENABLED FALSE +#define STM32_LSI_ENABLED TRUE +#define STM32_LSE_ENABLED FALSE +#define STM32_SW STM32_SW_PLLRCLK +#define STM32_PLLSRC STM32_PLLSRC_HSI16 +#define STM32_PLLM_VALUE 4 +#define STM32_PLLN_VALUE 80 +#define STM32_PLLPDIV_VALUE 0 +#define STM32_PLLP_VALUE 7 +#define STM32_PLLQ_VALUE 8 +#define STM32_PLLR_VALUE 2 +#define STM32_HPRE STM32_HPRE_DIV1 +#define STM32_PPRE1 STM32_PPRE1_DIV1 +#define STM32_PPRE2 STM32_PPRE2_DIV1 +#define STM32_MCOSEL STM32_MCOSEL_NOCLOCK +#define STM32_MCOPRE STM32_MCOPRE_DIV1 +#define STM32_LSCOSEL STM32_LSCOSEL_NOCLOCK + +/* + * Peripherals clock sources. + */ +#define STM32_USART1SEL STM32_USART1SEL_SYSCLK +#define STM32_USART2SEL STM32_USART2SEL_SYSCLK +#define STM32_USART3SEL STM32_USART3SEL_SYSCLK +#define STM32_UART4SEL STM32_UART4SEL_SYSCLK +#define STM32_LPUART1SEL STM32_LPUART1SEL_PCLK1 +#define STM32_I2C1SEL STM32_I2C1SEL_PCLK1 +#define STM32_I2C2SEL STM32_I2C2SEL_PCLK1 +#define STM32_I2C3SEL STM32_I2C3SEL_PCLK1 +#define STM32_LPTIM1SEL STM32_LPTIM1SEL_PCLK1 +#define STM32_SAI1SEL STM32_SAI1SEL_SYSCLK +#define STM32_I2S23SEL STM32_I2S23SEL_SYSCLK +#define STM32_FDCANSEL STM32_FDCANSEL_PCLK1 +#define STM32_CLK48SEL STM32_CLK48SEL_HSI48 +#define STM32_ADC12SEL STM32_ADC12SEL_PLLPCLK +#define STM32_RTCSEL STM32_RTCSEL_NOCLOCK + +/* + * 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_EXTI164041_PRIORITY 6 +#define STM32_IRQ_EXTI17_PRIORITY 6 +#define STM32_IRQ_EXTI18_PRIORITY 6 +#define STM32_IRQ_EXTI19_PRIORITY 6 +#define STM32_IRQ_EXTI20_PRIORITY 6 +#define STM32_IRQ_EXTI212229_PRIORITY 6 +#define STM32_IRQ_EXTI30_32_PRIORITY 6 +#define STM32_IRQ_EXTI33_PRIORITY 6 + +#define STM32_IRQ_FDCAN1_PRIORITY 10 + +#define STM32_IRQ_TIM1_BRK_TIM15_PRIORITY 7 +#define STM32_IRQ_TIM1_UP_TIM16_PRIORITY 7 +#define STM32_IRQ_TIM1_TRGCO_TIM17_PRIORITY 7 +#define STM32_IRQ_TIM1_CC_PRIORITY 7 +#define STM32_IRQ_TIM2_PRIORITY 7 +#define STM32_IRQ_TIM3_PRIORITY 7 +#define STM32_IRQ_TIM4_PRIORITY 7 +#define STM32_IRQ_TIM6_PRIORITY 7 +#define STM32_IRQ_TIM7_PRIORITY 7 +#define STM32_IRQ_TIM8_UP_PRIORITY 7 +#define STM32_IRQ_TIM8_CC_PRIORITY 7 + +#define STM32_IRQ_USART1_PRIORITY 12 +#define STM32_IRQ_USART2_PRIORITY 12 +#define STM32_IRQ_USART3_PRIORITY 12 +#define STM32_IRQ_UART4_PRIORITY 12 +#define STM32_IRQ_LPUART1_PRIORITY 12 + +/* + * ADC driver system settings. + */ +#define STM32_ADC_DUAL_MODE FALSE +#define STM32_ADC_COMPACT_SAMPLES FALSE +#define STM32_ADC_USE_ADC1 FALSE +#define STM32_ADC_USE_ADC2 FALSE +#define STM32_ADC_ADC1_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_ADC_ADC2_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_ADC_ADC1_DMA_PRIORITY 2 +#define STM32_ADC_ADC2_DMA_PRIORITY 2 +#define STM32_ADC_ADC12_IRQ_PRIORITY 5 +#define STM32_ADC_ADC1_DMA_IRQ_PRIORITY 5 +#define STM32_ADC_ADC2_DMA_IRQ_PRIORITY 5 +#define STM32_ADC_ADC12_CLOCK_MODE ADC_CCR_CKMODE_AHB_DIV4 +#define STM32_ADC_ADC12_PRESC ADC_CCR_PRESC_DIV2 + +/* + * CAN driver system settings. + */ +#define STM32_CAN_USE_FDCAN1 FALSE + +/* + * 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_USE_DAC3_CH1 FALSE +#define STM32_DAC_USE_DAC3_CH2 FALSE +#define STM32_DAC_DAC1_CH1_IRQ_PRIORITY 10 +#define STM32_DAC_DAC1_CH2_IRQ_PRIORITY 10 +#define STM32_DAC_DAC3_CH1_IRQ_PRIORITY 10 +#define STM32_DAC_DAC3_CH2_IRQ_PRIORITY 10 +#define STM32_DAC_DAC1_CH1_DMA_PRIORITY 2 +#define STM32_DAC_DAC1_CH2_DMA_PRIORITY 2 +#define STM32_DAC_DAC3_CH1_DMA_PRIORITY 2 +#define STM32_DAC_DAC3_CH2_DMA_PRIORITY 2 +#define STM32_DAC_DAC1_CH1_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_DAC_DAC1_CH2_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_DAC_DAC3_CH1_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_DAC_DAC3_CH2_DMA_STREAM STM32_DMA_STREAM_ID_ANY + +/* + * 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_TIM6 FALSE +#define STM32_GPT_USE_TIM7 FALSE +#define STM32_GPT_USE_TIM8 FALSE +#define STM32_GPT_USE_TIM15 FALSE +#define STM32_GPT_USE_TIM16 FALSE +#define STM32_GPT_USE_TIM17 FALSE + +/* + * 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_ANY +#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_I2C_I2C2_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_I2C_I2C3_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_I2C_I2C3_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#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") + +/* + * 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_TIM8 FALSE +#define STM32_ICU_USE_TIM15 FALSE + +/* + * 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_TIM8 FALSE +#define STM32_PWM_USE_TIM15 FALSE +#define STM32_PWM_USE_TIM16 FALSE +#define STM32_PWM_USE_TIM17 FALSE + +/* + * RTC driver system settings. + */ + +/* + * SDC driver system settings. + */ + +/* + * 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_LPUART1 FALSE + +/* + * 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_ANY +#define STM32_SPI_SPI1_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_SPI_SPI2_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_SPI_SPI2_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_SPI_SPI3_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_SPI_SPI3_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#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 + +/* + * TRNG driver system settings. + */ +#define STM32_TRNG_USE_RNG1 FALSE + +/* + * 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_USART1_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_UART_USART1_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_UART_USART2_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_UART_USART2_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_UART_USART3_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_UART_USART3_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_UART_UART4_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_UART_UART4_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#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_DMA_ERROR_HOOK(uartp) osalSysHalt("DMA failure") + +/* + * USB driver system settings. + */ +#define STM32_USB_USE_USB1 TRUE +#define STM32_USB_LOW_POWER_ON_SUSPEND FALSE +#define STM32_USB_USB1_HP_IRQ_PRIORITY 5 +#define STM32_USB_USB1_LP_IRQ_PRIORITY 6 + +/* + * WDG driver system settings. + */ +#define STM32_WDG_USE_IWDG FALSE + +#endif /* MCUCONF_H */ diff --git a/platforms/chibios/GENERIC_STM32_G474XE/board/board.mk b/platforms/chibios/boards/GENERIC_STM32_G474XE/board/board.mk similarity index 100% rename from platforms/chibios/GENERIC_STM32_G474XE/board/board.mk rename to platforms/chibios/boards/GENERIC_STM32_G474XE/board/board.mk diff --git a/platforms/chibios/GENERIC_STM32_G474XE/configs/config.h b/platforms/chibios/boards/GENERIC_STM32_G474XE/configs/config.h similarity index 100% rename from platforms/chibios/GENERIC_STM32_G474XE/configs/config.h rename to platforms/chibios/boards/GENERIC_STM32_G474XE/configs/config.h diff --git a/platforms/chibios/boards/GENERIC_STM32_G474XE/configs/mcuconf.h b/platforms/chibios/boards/GENERIC_STM32_G474XE/configs/mcuconf.h new file mode 100644 index 000000000000..5710e2cb45bd --- /dev/null +++ b/platforms/chibios/boards/GENERIC_STM32_G474XE/configs/mcuconf.h @@ -0,0 +1,387 @@ +/* + 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. +*/ + +/* + * STM32G4xx 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. + */ + +#ifndef MCUCONF_H +#define MCUCONF_H + +#define STM32G4xx_MCUCONF +#define STM32G473_MCUCONF +#define STM32G483_MCUCONF +#define STM32G474_MCUCONF +#define STM32G484_MCUCONF + +/* + * HAL driver system settings. + */ +#define STM32_NO_INIT FALSE +#define STM32_VOS STM32_VOS_RANGE1 +#define STM32_PWR_BOOST TRUE +#define STM32_PWR_CR2 (PWR_CR2_PLS_LEV0) +#define STM32_PWR_CR3 (PWR_CR3_EIWF) +#define STM32_PWR_CR4 (0U) +#define STM32_PWR_PUCRA (0U) +#define STM32_PWR_PDCRA (0U) +#define STM32_PWR_PUCRB (0U) +#define STM32_PWR_PDCRB (0U) +#define STM32_PWR_PUCRC (0U) +#define STM32_PWR_PDCRC (0U) +#define STM32_PWR_PUCRD (0U) +#define STM32_PWR_PDCRD (0U) +#define STM32_PWR_PUCRE (0U) +#define STM32_PWR_PDCRE (0U) +#define STM32_PWR_PUCRF (0U) +#define STM32_PWR_PDCRF (0U) +#define STM32_PWR_PUCRG (0U) +#define STM32_PWR_PDCRG (0U) +#define STM32_HSI16_ENABLED TRUE +#define STM32_HSI48_ENABLED TRUE +#define STM32_HSE_ENABLED FALSE +#define STM32_LSI_ENABLED FALSE +#define STM32_LSE_ENABLED FALSE +#define STM32_SW STM32_SW_PLLRCLK +#define STM32_PLLSRC STM32_PLLSRC_HSI16 +#define STM32_PLLM_VALUE 2 +#define STM32_PLLN_VALUE 40 +#define STM32_PLLPDIV_VALUE 0 +#define STM32_PLLP_VALUE 7 +#define STM32_PLLQ_VALUE 2 +#define STM32_PLLR_VALUE 2 +#define STM32_HPRE STM32_HPRE_DIV1 +#define STM32_PPRE1 STM32_PPRE1_DIV1 +#define STM32_PPRE2 STM32_PPRE2_DIV1 +#define STM32_MCOSEL STM32_MCOSEL_NOCLOCK +#define STM32_MCOPRE STM32_MCOPRE_DIV1 +#define STM32_LSCOSEL STM32_LSCOSEL_NOCLOCK + +/* + * Peripherals clock sources. + */ +#define STM32_USART1SEL STM32_USART1SEL_SYSCLK +#define STM32_USART2SEL STM32_USART2SEL_SYSCLK +#define STM32_USART3SEL STM32_USART3SEL_SYSCLK +#define STM32_UART4SEL STM32_UART4SEL_SYSCLK +#define STM32_UART5SEL STM32_UART5SEL_SYSCLK +#define STM32_LPUART1SEL STM32_LPUART1SEL_PCLK1 +#define STM32_I2C1SEL STM32_I2C1SEL_PCLK1 +#define STM32_I2C2SEL STM32_I2C2SEL_PCLK1 +#define STM32_I2C3SEL STM32_I2C3SEL_PCLK1 +#define STM32_I2C4SEL STM32_I2C4SEL_PCLK1 +#define STM32_LPTIM1SEL STM32_LPTIM1SEL_PCLK1 +#define STM32_SAI1SEL STM32_SAI1SEL_SYSCLK +#define STM32_I2S23SEL STM32_I2S23SEL_SYSCLK +#define STM32_FDCANSEL STM32_FDCANSEL_HSE +#define STM32_CLK48SEL STM32_CLK48SEL_HSI48 +#define STM32_ADC12SEL STM32_ADC12SEL_PLLPCLK +#define STM32_ADC345SEL STM32_ADC345SEL_PLLPCLK +#define STM32_QSPISEL STM32_QSPISEL_SYSCLK +#define STM32_RTCSEL STM32_RTCSEL_NOCLOCK + +/* + * 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_EXTI164041_PRIORITY 6 +#define STM32_IRQ_EXTI17_PRIORITY 6 +#define STM32_IRQ_EXTI18_PRIORITY 6 +#define STM32_IRQ_EXTI19_PRIORITY 6 +#define STM32_IRQ_EXTI20_PRIORITY 6 +#define STM32_IRQ_EXTI212229_PRIORITY 6 +#define STM32_IRQ_EXTI30_32_PRIORITY 6 +#define STM32_IRQ_EXTI33_PRIORITY 6 + +#define STM32_IRQ_FDCAN1_PRIORITY 10 +#define STM32_IRQ_FDCAN2_PRIORITY 10 +#define STM32_IRQ_FDCAN3_PRIORITY 10 + +#define STM32_IRQ_TIM1_BRK_TIM15_PRIORITY 7 +#define STM32_IRQ_TIM1_UP_TIM16_PRIORITY 7 +#define STM32_IRQ_TIM1_TRGCO_TIM17_PRIORITY 7 +#define STM32_IRQ_TIM1_CC_PRIORITY 7 +#define STM32_IRQ_TIM2_PRIORITY 7 +#define STM32_IRQ_TIM3_PRIORITY 7 +#define STM32_IRQ_TIM4_PRIORITY 7 +#define STM32_IRQ_TIM5_PRIORITY 7 +#define STM32_IRQ_TIM6_PRIORITY 7 +#define STM32_IRQ_TIM7_PRIORITY 7 +#define STM32_IRQ_TIM8_UP_PRIORITY 7 +#define STM32_IRQ_TIM8_CC_PRIORITY 7 +#define STM32_IRQ_TIM20_UP_PRIORITY 7 +#define STM32_IRQ_TIM20_CC_PRIORITY 7 + +#define STM32_IRQ_USART1_PRIORITY 12 +#define STM32_IRQ_USART2_PRIORITY 12 +#define STM32_IRQ_USART3_PRIORITY 12 +#define STM32_IRQ_UART4_PRIORITY 12 +#define STM32_IRQ_UART5_PRIORITY 12 +#define STM32_IRQ_LPUART1_PRIORITY 12 + +/* + * ADC driver system settings. + */ +#define STM32_ADC_DUAL_MODE FALSE +#define STM32_ADC_COMPACT_SAMPLES FALSE +#define STM32_ADC_USE_ADC1 FALSE +#define STM32_ADC_USE_ADC2 FALSE +#define STM32_ADC_USE_ADC3 FALSE +#define STM32_ADC_USE_ADC4 FALSE +#define STM32_ADC_ADC1_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_ADC_ADC2_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_ADC_ADC3_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_ADC_ADC4_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_ADC_ADC1_DMA_PRIORITY 2 +#define STM32_ADC_ADC2_DMA_PRIORITY 2 +#define STM32_ADC_ADC3_DMA_PRIORITY 2 +#define STM32_ADC_ADC4_DMA_PRIORITY 2 +#define STM32_ADC_ADC12_IRQ_PRIORITY 5 +#define STM32_ADC_ADC3_IRQ_PRIORITY 5 +#define STM32_ADC_ADC4_IRQ_PRIORITY 5 +#define STM32_ADC_ADC1_DMA_IRQ_PRIORITY 5 +#define STM32_ADC_ADC2_DMA_IRQ_PRIORITY 5 +#define STM32_ADC_ADC3_DMA_IRQ_PRIORITY 5 +#define STM32_ADC_ADC4_DMA_IRQ_PRIORITY 5 +#define STM32_ADC_ADC12_CLOCK_MODE ADC_CCR_CKMODE_AHB_DIV4 +#define STM32_ADC_ADC345_CLOCK_MODE ADC_CCR_CKMODE_AHB_DIV4 +#define STM32_ADC_ADC12_PRESC ADC_CCR_PRESC_DIV2 +#define STM32_ADC_ADC345_PRESC ADC_CCR_PRESC_DIV2 + +/* + * CAN driver system settings. + */ +#define STM32_CAN_USE_FDCAN1 FALSE +#define STM32_CAN_USE_FDCAN2 FALSE +#define STM32_CAN_USE_FDCAN3 FALSE + +/* + * 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_USE_DAC2_CH1 FALSE +#define STM32_DAC_USE_DAC3_CH1 FALSE +#define STM32_DAC_USE_DAC3_CH2 FALSE +#define STM32_DAC_USE_DAC4_CH1 FALSE +#define STM32_DAC_USE_DAC4_CH2 FALSE +#define STM32_DAC_DAC1_CH1_IRQ_PRIORITY 10 +#define STM32_DAC_DAC1_CH2_IRQ_PRIORITY 10 +#define STM32_DAC_DAC2_CH1_IRQ_PRIORITY 10 +#define STM32_DAC_DAC3_CH1_IRQ_PRIORITY 10 +#define STM32_DAC_DAC3_CH2_IRQ_PRIORITY 10 +#define STM32_DAC_DAC4_CH1_IRQ_PRIORITY 10 +#define STM32_DAC_DAC4_CH2_IRQ_PRIORITY 10 +#define STM32_DAC_DAC1_CH1_DMA_PRIORITY 2 +#define STM32_DAC_DAC1_CH2_DMA_PRIORITY 2 +#define STM32_DAC_DAC2_CH1_DMA_PRIORITY 2 +#define STM32_DAC_DAC3_CH1_DMA_PRIORITY 2 +#define STM32_DAC_DAC3_CH2_DMA_PRIORITY 2 +#define STM32_DAC_DAC4_CH1_DMA_PRIORITY 2 +#define STM32_DAC_DAC4_CH2_DMA_PRIORITY 2 +#define STM32_DAC_DAC1_CH1_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_DAC_DAC1_CH2_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_DAC_DAC2_CH1_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_DAC_DAC3_CH1_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_DAC_DAC3_CH2_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_DAC_DAC4_CH1_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_DAC_DAC4_CH2_DMA_STREAM STM32_DMA_STREAM_ID_ANY + +/* + * 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_TIM15 FALSE +#define STM32_GPT_USE_TIM16 FALSE +#define STM32_GPT_USE_TIM17 FALSE + +/* + * 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_USE_I2C4 FALSE +#define STM32_I2C_BUSY_TIMEOUT 50 +#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_I2C_I2C2_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_I2C_I2C3_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_I2C_I2C3_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_I2C_I2C4_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_I2C_I2C4_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_I2C_I2C1_IRQ_PRIORITY 5 +#define STM32_I2C_I2C2_IRQ_PRIORITY 5 +#define STM32_I2C_I2C3_IRQ_PRIORITY 5 +#define STM32_I2C_I2C4_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_I2C4_DMA_PRIORITY 3 +#define STM32_I2C_DMA_ERROR_HOOK(i2cp) 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_TIM15 FALSE +#define STM32_ICU_USE_TIM16 FALSE +#define STM32_ICU_USE_TIM17 FALSE + +/* + * 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_TIM15 FALSE +#define STM32_PWM_USE_TIM16 FALSE +#define STM32_PWM_USE_TIM17 FALSE +#define STM32_PWM_USE_TIM20 FALSE + +/* + * RTC driver system settings. + */ + +/* + * SDC driver system settings. + */ + +/* + * 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_LPUART1 FALSE + +/* + * 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_USE_SPI4 FALSE +#define STM32_SPI_SPI1_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_SPI_SPI1_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_SPI_SPI2_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_SPI_SPI2_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_SPI_SPI3_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_SPI_SPI3_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_SPI_SPI4_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_SPI_SPI4_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_SPI_SPI1_DMA_PRIORITY 1 +#define STM32_SPI_SPI2_DMA_PRIORITY 1 +#define STM32_SPI_SPI3_DMA_PRIORITY 1 +#define STM32_SPI_SPI4_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_SPI4_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 + +/* + * TRNG driver system settings. + */ +#define STM32_TRNG_USE_RNG1 FALSE + +/* + * 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_USART1_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_UART_USART1_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_UART_USART2_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_UART_USART2_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_UART_USART3_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_UART_USART3_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_UART_UART4_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_UART_UART4_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_UART_UART5_RX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#define STM32_UART_UART5_TX_DMA_STREAM STM32_DMA_STREAM_ID_ANY +#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_DMA_ERROR_HOOK(uartp) osalSysHalt("DMA failure") + +/* + * USB driver system settings. + */ +#define STM32_USB_USE_USB1 TRUE +#define STM32_USB_LOW_POWER_ON_SUSPEND FALSE +#define STM32_USB_USB1_HP_IRQ_PRIORITY 5 +#define STM32_USB_USB1_LP_IRQ_PRIORITY 5 + +/* + * WDG driver system settings. + */ +#define STM32_WDG_USE_IWDG FALSE + +/* + * WSPI driver system settings. + */ +#define STM32_WSPI_USE_QUADSPI1 FALSE +#define STM32_WSPI_QUADSPI1_DMA_STREAM STM32_DMA_STREAM_ID(2, 7) + +#endif /* MCUCONF_H */ diff --git a/platforms/chibios/GENERIC_STM32_L433XC/board/board.mk b/platforms/chibios/boards/GENERIC_STM32_L412XB/board/board.mk similarity index 100% rename from platforms/chibios/GENERIC_STM32_L433XC/board/board.mk rename to platforms/chibios/boards/GENERIC_STM32_L412XB/board/board.mk diff --git a/platforms/chibios/boards/GENERIC_STM32_L412XB/configs/board.h b/platforms/chibios/boards/GENERIC_STM32_L412XB/configs/board.h new file mode 100644 index 000000000000..2e37d95fe39a --- /dev/null +++ b/platforms/chibios/boards/GENERIC_STM32_L412XB/configs/board.h @@ -0,0 +1,24 @@ +/* Copyright 2018-2021 Harrison Chan (@Xelus) + * + * This program is free software: you can 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 "board.h" + +#undef STM32L432xx + +// Pretend that we're an L443xx as the ChibiOS definitions for L4x2/L4x3 mistakenly don't enable GPIOH, I2C2, or SPI2. +// Until ChibiOS upstream is fixed, this should be kept at L443, as nothing in QMK currently utilises the crypto peripheral on the L443. +#define STM32L443xx diff --git a/platforms/chibios/GENERIC_STM32_L433XC/configs/config.h b/platforms/chibios/boards/GENERIC_STM32_L412XB/configs/config.h similarity index 100% rename from platforms/chibios/GENERIC_STM32_L433XC/configs/config.h rename to platforms/chibios/boards/GENERIC_STM32_L412XB/configs/config.h diff --git a/platforms/chibios/boards/GENERIC_STM32_L412XB/configs/mcuconf.h b/platforms/chibios/boards/GENERIC_STM32_L412XB/configs/mcuconf.h new file mode 100644 index 000000000000..8ad5a8da2163 --- /dev/null +++ b/platforms/chibios/boards/GENERIC_STM32_L412XB/configs/mcuconf.h @@ -0,0 +1,282 @@ +/* + 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. +*/ + +/* + * STM32L4xx 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. + */ + +#ifndef MCUCONF_H +#define MCUCONF_H + +#define STM32L4xx_MCUCONF +#define STM32L412_MCUCONF +#define STM32L422_MCUCONF +#define STM32L432_MCUCONF +#define STM32L433_MCUCONF +#define STM32L442_MCUCONF +#define STM32L443_MCUCONF + +/* + * HAL driver system settings. + */ +#define STM32_NO_INIT FALSE +#define STM32_VOS STM32_VOS_RANGE1 +#define STM32_PVD_ENABLE FALSE +#define STM32_PLS STM32_PLS_LEV0 +#define STM32_HSI16_ENABLED TRUE +#define STM32_HSI48_ENABLED TRUE +#define STM32_LSI_ENABLED FALSE +#define STM32_HSE_ENABLED FALSE +#define STM32_LSE_ENABLED FALSE +#define STM32_MSIPLL_ENABLED FALSE +#define STM32_ADC_CLOCK_ENABLED TRUE +#define STM32_USB_CLOCK_ENABLED TRUE +#define STM32_SAI1_CLOCK_ENABLED TRUE +#define STM32_SAI2_CLOCK_ENABLED TRUE +#define STM32_MSIRANGE STM32_MSIRANGE_4M +#define STM32_MSISRANGE STM32_MSISRANGE_4M +#define STM32_SW STM32_SW_PLL +#define STM32_PLLSRC STM32_PLLSRC_HSI16 +#define STM32_PLLM_VALUE 4 +#define STM32_PLLN_VALUE 80 +#define STM32_PLLP_VALUE 7 +#define STM32_PLLQ_VALUE 4 +#define STM32_PLLR_VALUE 4 +#define STM32_HPRE STM32_HPRE_DIV1 +#define STM32_PPRE1 STM32_PPRE1_DIV1 +#define STM32_PPRE2 STM32_PPRE2_DIV1 +#define STM32_STOPWUCK STM32_STOPWUCK_MSI +#define STM32_MCOSEL STM32_MCOSEL_NOCLOCK +#define STM32_MCOPRE STM32_MCOPRE_DIV1 +#define STM32_LSCOSEL STM32_LSCOSEL_NOCLOCK +#define STM32_PLLSAI1N_VALUE 72 +#define STM32_PLLSAI1P_VALUE 7 +#define STM32_PLLSAI1Q_VALUE 6 +#define STM32_PLLSAI1R_VALUE 6 +#define STM32_PLLSAI2N_VALUE 72 +#define STM32_PLLSAI2P_VALUE 7 +#define STM32_PLLSAI2R_VALUE 6 + +/* + * Peripherals clock sources. + */ +#define STM32_USART1SEL STM32_USART1SEL_SYSCLK +#define STM32_USART2SEL STM32_USART2SEL_SYSCLK +#define STM32_USART3SEL STM32_USART3SEL_SYSCLK +#define STM32_UART4SEL STM32_UART4SEL_SYSCLK +#define STM32_UART5SEL STM32_UART5SEL_SYSCLK +#define STM32_LPUART1SEL STM32_LPUART1SEL_SYSCLK +#define STM32_I2C1SEL STM32_I2C1SEL_SYSCLK +#define STM32_I2C2SEL STM32_I2C2SEL_SYSCLK +#define STM32_I2C3SEL STM32_I2C3SEL_SYSCLK +#define STM32_LPTIM1SEL STM32_LPTIM1SEL_PCLK1 +#define STM32_LPTIM2SEL STM32_LPTIM2SEL_PCLK1 +#define STM32_SAI1SEL STM32_SAI1SEL_OFF +#define STM32_SAI2SEL STM32_SAI2SEL_OFF +#define STM32_CLK48SEL STM32_CLK48SEL_HSI48 +#define STM32_ADCSEL STM32_ADCSEL_SYSCLK +#define STM32_SWPMI1SEL STM32_SWPMI1SEL_PCLK1 +#define STM32_RTCSEL STM32_RTCSEL_LSI + +/* + * 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_EXTI1635_38_PRIORITY 6 +#define STM32_IRQ_EXTI18_PRIORITY 6 +#define STM32_IRQ_EXTI19_PRIORITY 6 +#define STM32_IRQ_EXTI20_PRIORITY 6 +#define STM32_IRQ_EXTI21_22_PRIORITY 15 + +#define STM32_IRQ_TIM1_BRK_TIM15_PRIORITY 7 +#define STM32_IRQ_TIM1_UP_TIM16_PRIORITY 7 +#define STM32_IRQ_TIM1_TRGCO_TIM17_PRIORITY 7 +#define STM32_IRQ_TIM1_CC_PRIORITY 7 +#define STM32_IRQ_TIM2_PRIORITY 7 +#define STM32_IRQ_TIM6_PRIORITY 7 +#define STM32_IRQ_TIM7_PRIORITY 7 + +#define STM32_IRQ_USART1_PRIORITY 12 +#define STM32_IRQ_USART2_PRIORITY 12 +#define STM32_IRQ_USART3_PRIORITY 12 +#define STM32_IRQ_LPUART1_PRIORITY 12 + +/* + * ADC driver system settings. + */ +#define STM32_ADC_COMPACT_SAMPLES FALSE +#define STM32_ADC_USE_ADC1 FALSE +#define STM32_ADC_ADC1_DMA_STREAM STM32_DMA_STREAM_ID(1, 1) +#define STM32_ADC_ADC1_DMA_PRIORITY 2 +#define STM32_ADC_ADC12_IRQ_PRIORITY 5 +#define STM32_ADC_ADC1_DMA_IRQ_PRIORITY 5 +#define STM32_ADC_ADC123_CLOCK_MODE ADC_CCR_CKMODE_AHB_DIV1 +#define STM32_ADC_ADC123_PRESC ADC_CCR_PRESC_DIV2 + +/* + * CAN driver system settings. + */ +#define STM32_CAN_USE_CAN1 FALSE +#define STM32_CAN_CAN1_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(2, 4) +#define STM32_DAC_DAC1_CH2_DMA_STREAM STM32_DMA_STREAM_ID(1, 4) + +/* + * GPT driver system settings. + */ +#define STM32_GPT_USE_TIM1 FALSE +#define STM32_GPT_USE_TIM2 FALSE +#define STM32_GPT_USE_TIM6 FALSE +#define STM32_GPT_USE_TIM7 FALSE +#define STM32_GPT_USE_TIM15 FALSE +#define STM32_GPT_USE_TIM16 FALSE + +/* + * I2C driver system settings. + */ +#define STM32_I2C_USE_I2C1 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, 7) +#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6) +#define STM32_I2C_I2C3_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 3) +#define STM32_I2C_I2C3_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2) +#define STM32_I2C_I2C1_IRQ_PRIORITY 5 +#define STM32_I2C_I2C3_IRQ_PRIORITY 5 +#define STM32_I2C_I2C1_DMA_PRIORITY 3 +#define STM32_I2C_I2C3_DMA_PRIORITY 3 +#define STM32_I2C_DMA_ERROR_HOOK(i2cp) osalSysHalt("DMA failure") + +/* + * ICU driver system settings. + */ +#define STM32_ICU_USE_TIM1 FALSE +#define STM32_ICU_USE_TIM2 FALSE +#define STM32_ICU_USE_TIM15 FALSE +#define STM32_ICU_USE_TIM16 FALSE + +/* + * 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_TIM15 FALSE +#define STM32_PWM_USE_TIM16 FALSE + +/* + * 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 + +/* + * SERIAL driver system settings. + */ +#define STM32_SERIAL_USE_USART1 FALSE +#define STM32_SERIAL_USE_USART2 FALSE +#define STM32_SERIAL_USE_LPUART1 FALSE +#define STM32_SERIAL_USART1_PRIORITY 12 +#define STM32_SERIAL_USART2_PRIORITY 12 +#define STM32_SERIAL_LPUART1_PRIORITY 12 + +/* + * SPI driver system settings. + */ +#define STM32_SPI_USE_SPI1 FALSE +#define STM32_SPI_USE_SPI3 FALSE +#define STM32_SPI_SPI1_RX_DMA_STREAM STM32_DMA_STREAM_ID(2, 3) +#define STM32_SPI_SPI1_TX_DMA_STREAM STM32_DMA_STREAM_ID(2, 4) +#define STM32_SPI_SPI3_RX_DMA_STREAM STM32_DMA_STREAM_ID(2, 1) +#define STM32_SPI_SPI3_TX_DMA_STREAM STM32_DMA_STREAM_ID(2, 2) +#define STM32_SPI_SPI1_DMA_PRIORITY 1 +#define STM32_SPI_SPI3_DMA_PRIORITY 1 +#define STM32_SPI_SPI1_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 + +/* + * TRNG driver system settings. + */ +#define STM32_TRNG_USE_RNG1 FALSE + +/* + * UART driver system settings. + */ +#define STM32_UART_USE_USART1 FALSE +#define STM32_UART_USE_USART2 FALSE +#define STM32_UART_USART1_RX_DMA_STREAM STM32_DMA_STREAM_ID(2, 7) +#define STM32_UART_USART1_TX_DMA_STREAM STM32_DMA_STREAM_ID(2, 6) +#define STM32_UART_USART2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6) +#define STM32_UART_USART2_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 7) +#define STM32_UART_DMA_ERROR_HOOK(uartp) osalSysHalt("DMA failure") + +/* + * USB driver system settings. + */ +#define STM32_USB_USE_USB1 TRUE +#define STM32_USB_LOW_POWER_ON_SUSPEND FALSE +#define STM32_USB_USB1_HP_IRQ_PRIORITY 13 +#define STM32_USB_USB1_LP_IRQ_PRIORITY 14 + +/* + * WDG driver system settings. + */ +#define STM32_WDG_USE_IWDG FALSE + +/* + * WSPI driver system settings. + */ +#define STM32_WSPI_USE_QUADSPI1 FALSE +#define STM32_WSPI_QUADSPI1_DMA_STREAM STM32_DMA_STREAM_ID(2, 7) +#define STM32_WSPI_QUADSPI1_PRESCALER_VALUE 1 + +#endif /* MCUCONF_H */ diff --git a/platforms/chibios/boards/GENERIC_STM32_L433XC/board/board.mk b/platforms/chibios/boards/GENERIC_STM32_L433XC/board/board.mk new file mode 100644 index 000000000000..1250385eb8e2 --- /dev/null +++ b/platforms/chibios/boards/GENERIC_STM32_L433XC/board/board.mk @@ -0,0 +1,9 @@ +# List of all the board related files. +BOARDSRC = $(CHIBIOS)/os/hal/boards/ST_NUCLEO32_L432KC/board.c + +# Required include directories +BOARDINC = $(CHIBIOS)/os/hal/boards/ST_NUCLEO32_L432KC + +# Shared variables +ALLCSRC += $(BOARDSRC) +ALLINC += $(BOARDINC) diff --git a/platforms/chibios/boards/GENERIC_STM32_L433XC/configs/board.h b/platforms/chibios/boards/GENERIC_STM32_L433XC/configs/board.h new file mode 100644 index 000000000000..2e37d95fe39a --- /dev/null +++ b/platforms/chibios/boards/GENERIC_STM32_L433XC/configs/board.h @@ -0,0 +1,24 @@ +/* Copyright 2018-2021 Harrison Chan (@Xelus) + * + * This program is free software: you can 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 "board.h" + +#undef STM32L432xx + +// Pretend that we're an L443xx as the ChibiOS definitions for L4x2/L4x3 mistakenly don't enable GPIOH, I2C2, or SPI2. +// Until ChibiOS upstream is fixed, this should be kept at L443, as nothing in QMK currently utilises the crypto peripheral on the L443. +#define STM32L443xx diff --git a/platforms/chibios/boards/GENERIC_STM32_L433XC/configs/config.h b/platforms/chibios/boards/GENERIC_STM32_L433XC/configs/config.h new file mode 100644 index 000000000000..c27c61b19aa4 --- /dev/null +++ b/platforms/chibios/boards/GENERIC_STM32_L433XC/configs/config.h @@ -0,0 +1,26 @@ +/* Copyright 2018-2021 Harrison Chan (@Xelus) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +/* 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 + +#define PAL_STM32_OSPEED_HIGHEST PAL_STM32_OSPEED_HIGH + +#ifndef EARLY_INIT_PERFORM_BOOTLOADER_JUMP +# define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE +#endif diff --git a/platforms/chibios/GENERIC_STM32_L433XC/configs/mcuconf.h b/platforms/chibios/boards/GENERIC_STM32_L433XC/configs/mcuconf.h similarity index 100% rename from platforms/chibios/GENERIC_STM32_L433XC/configs/mcuconf.h rename to platforms/chibios/boards/GENERIC_STM32_L433XC/configs/mcuconf.h diff --git a/platforms/chibios/boards/GENERIC_WB32_F3G71XX/board/board.c b/platforms/chibios/boards/GENERIC_WB32_F3G71XX/board/board.c new file mode 100644 index 000000000000..e38a7e005498 --- /dev/null +++ b/platforms/chibios/boards/GENERIC_WB32_F3G71XX/board/board.c @@ -0,0 +1,82 @@ +/* + Copyright (C) 2021 Westberry Technology (ChangZhou) Corp., Ltd + + 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. +*/ + +/* + * This file has been automatically generated using ChibiStudio board + * generator plugin. Do not edit manually. + */ + +#include "hal.h" + +/*===========================================================================*/ +/* Driver local definitions. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver exported variables. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver local variables and types. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver local functions. */ +/*===========================================================================*/ + +static void wb32_gpio_init(void) { + +#if WB32_HAS_GPIOA + rccEnableAPB1(RCC_APB1ENR_GPIOAEN); +#endif + +#if WB32_HAS_GPIOB + rccEnableAPB1(RCC_APB1ENR_GPIOBEN); +#endif + +#if WB32_HAS_GPIOC + rccEnableAPB1(RCC_APB1ENR_GPIOCEN); +#endif + +#if WB32_HAS_GPIOD + rccEnableAPB1(RCC_APB1ENR_GPIODEN); +#endif +} + +/*===========================================================================*/ +/* Driver interrupt handlers. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver exported functions. */ +/*===========================================================================*/ +/* + * Early initialization code. + * This initialization must be performed just after stack setup and before + * any other initialization. + */ +void __early_init(void) { + + wb32_clock_init(); + wb32_gpio_init(); +} +/** + * @brief Board-specific initialization code. + * @note You can add your board-specific code here. + */ +void boardInit(void) { + +} diff --git a/platforms/chibios/boards/GENERIC_WB32_F3G71XX/board/board.h b/platforms/chibios/boards/GENERIC_WB32_F3G71XX/board/board.h new file mode 100644 index 000000000000..51dc84db9445 --- /dev/null +++ b/platforms/chibios/boards/GENERIC_WB32_F3G71XX/board/board.h @@ -0,0 +1,56 @@ +#pragma once +/* + Copyright (C) 2021 Westberry Technology (ChangZhou) Corp., Ltd + + 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. +*/ + +/* + * This file has been automatically generated using ChibiStudio board + * generator plugin. Do not edit manually. + */ + +#ifndef BOARD_H +#define BOARD_H + +/*===========================================================================*/ +/* Driver constants. */ +/*===========================================================================*/ + +/* + * Setup board. + */ + +/* + * Board identifier. + */ +#define WB32F3G71x9 +#if !defined(WB32F3G71xx) + #define WB32F3G71xx +#endif + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +#if !defined(_FROM_ASM_) +#ifdef __cplusplus +extern "C" { +#endif + void boardInit(void); +#ifdef __cplusplus +} +#endif +#endif /* _FROM_ASM_ */ + +#endif /* BOARD_H */ diff --git a/platforms/chibios/IC_TEENSY_3_1/board/board.mk b/platforms/chibios/boards/GENERIC_WB32_F3G71XX/board/board.mk similarity index 100% rename from platforms/chibios/IC_TEENSY_3_1/board/board.mk rename to platforms/chibios/boards/GENERIC_WB32_F3G71XX/board/board.mk diff --git a/platforms/chibios/boards/GENERIC_WB32_F3G71XX/configs/bootloader_defs.h b/platforms/chibios/boards/GENERIC_WB32_F3G71XX/configs/bootloader_defs.h new file mode 100644 index 000000000000..c929d2ad035a --- /dev/null +++ b/platforms/chibios/boards/GENERIC_WB32_F3G71XX/configs/bootloader_defs.h @@ -0,0 +1,12 @@ +/* Address for jumping to bootloader on WB32 chips. */ +/* It is chip dependent, the correct number can be looked up here: + * http://www.westberrytech.com/down/mcu/data/WB32F3G71xx_rm.pdf + */ +#ifndef WB32_BOOTLOADER_ADDRESS +# undef STM32_BOOTLOADER_ADDRESS +# define WB32_BOOTLOADER_ADDRESS 0x1FFFE000 +# define STM32_BOOTLOADER_ADDRESS WB32_BOOTLOADER_ADDRESS +#else +# undef STM32_BOOTLOADER_ADDRESS +# define STM32_BOOTLOADER_ADDRESS WB32_BOOTLOADER_ADDRESS +#endif diff --git a/platforms/chibios/boards/GENERIC_WB32_F3G71XX/configs/chconf.h b/platforms/chibios/boards/GENERIC_WB32_F3G71XX/configs/chconf.h new file mode 100644 index 000000000000..e4afddb6a510 --- /dev/null +++ b/platforms/chibios/boards/GENERIC_WB32_F3G71XX/configs/chconf.h @@ -0,0 +1,26 @@ +/* Copyright 2020 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i platforms/chibios/boards/GENERIC_WB32_F3G71XX/configs/chconf.h -r platforms/chibios/boards/common/configs/chconf.h` + */ + +#pragma once + +#define CH_CFG_ST_TIMEDELTA 0 + +#include_next <chconf.h> \ No newline at end of file diff --git a/platforms/chibios/boards/GENERIC_WB32_F3G71XX/configs/config.h b/platforms/chibios/boards/GENERIC_WB32_F3G71XX/configs/config.h new file mode 100644 index 000000000000..3d3e1165e41c --- /dev/null +++ b/platforms/chibios/boards/GENERIC_WB32_F3G71XX/configs/config.h @@ -0,0 +1,20 @@ +/* Copyright (C) 2021 Westberry Technology (ChangZhou) Corp., Ltd + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 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 + +#ifndef EARLY_INIT_PERFORM_BOOTLOADER_JUMP +# define EARLY_INIT_PERFORM_BOOTLOADER_JUMP FALSE +#endif diff --git a/platforms/chibios/boards/GENERIC_WB32_F3G71XX/configs/mcuconf.h b/platforms/chibios/boards/GENERIC_WB32_F3G71XX/configs/mcuconf.h new file mode 100644 index 000000000000..7c1fdaf57d10 --- /dev/null +++ b/platforms/chibios/boards/GENERIC_WB32_F3G71XX/configs/mcuconf.h @@ -0,0 +1,168 @@ +/* + Copyright (C) 2021 Westberry Technology (ChangZhou) Corp., Ltd + + 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 + +#define WB32F3G71xx_MCUCONF TRUE + +/* + * WB32F3G71 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. + * + */ + +/** + * @name Internal clock sources + * @{ + */ +#define WB32_HSECLK 12000000 +#define WB32_LSECLK 32768 + +/* + * HAL driver system settings. + */ +#define WB32_NO_INIT FALSE +#define WB32_MHSI_ENABLED TRUE +#define WB32_FHSI_ENABLED FALSE +#define WB32_LSI_ENABLED FALSE +#define WB32_HSE_ENABLED TRUE +#define WB32_LSE_ENABLED FALSE +#define WB32_PLL_ENABLED TRUE +#define WB32_MAINCLKSRC WB32_MAINCLKSRC_PLL +#define WB32_PLLSRC WB32_PLLSRC_HSE +#define WB32_PLLDIV_VALUE 2 +#define WB32_PLLMUL_VALUE 12 //The allowed range is 12,16,20,24. +#define WB32_HPRE 1 +#define WB32_PPRE1 1 +#define WB32_PPRE2 1 +#define WB32_USBPRE WB32_USBPRE_DIV1P5 + +/* + * EXTI driver system settings. + */ +#define WB32_IRQ_EXTI0_PRIORITY 6 +#define WB32_IRQ_EXTI1_PRIORITY 6 +#define WB32_IRQ_EXTI2_PRIORITY 6 +#define WB32_IRQ_EXTI3_PRIORITY 6 +#define WB32_IRQ_EXTI4_PRIORITY 6 +#define WB32_IRQ_EXTI5_9_PRIORITY 6 +#define WB32_IRQ_EXTI10_15_PRIORITY 6 +#define WB32_IRQ_EXTI16_PRIORITY 6 +#define WB32_IRQ_EXTI17_PRIORITY 6 +#define WB32_IRQ_EXTI18_PRIORITY 6 +#define WB32_IRQ_EXTI19_PRIORITY 6 + +/* + * GPT driver system settings. + */ +#define WB32_TIM_MAX_CHANNELS 4 +#define WB32_GPT_USE_TIM1 FALSE +#define WB32_GPT_USE_TIM2 FALSE +#define WB32_GPT_USE_TIM3 FALSE +#define WB32_GPT_USE_TIM4 FALSE +#define WB32_GPT_TIM1_IRQ_PRIORITY 7 +#define WB32_GPT_TIM2_IRQ_PRIORITY 7 +#define WB32_GPT_TIM3_IRQ_PRIORITY 7 +#define WB32_GPT_TIM4_IRQ_PRIORITY 7 + +/* + * ICU driver system settings. + */ +#define WB32_ICU_USE_TIM1 FALSE +#define WB32_ICU_USE_TIM2 FALSE +#define WB32_ICU_USE_TIM3 FALSE +#define WB32_ICU_USE_TIM4 FALSE +#define WB32_ICU_TIM1_IRQ_PRIORITY 7 +#define WB32_ICU_TIM2_IRQ_PRIORITY 7 +#define WB32_ICU_TIM3_IRQ_PRIORITY 7 +#define WB32_ICU_TIM4_IRQ_PRIORITY 7 + +/* + * PWM driver system settings. + */ +#define WB32_PWM_USE_ADVANCED FALSE +#define WB32_PWM_USE_TIM1 FALSE +#define WB32_PWM_USE_TIM2 FALSE +#define WB32_PWM_USE_TIM3 FALSE +#define WB32_PWM_USE_TIM4 FALSE +#define WB32_PWM_TIM1_IRQ_PRIORITY 7 +#define WB32_PWM_TIM2_IRQ_PRIORITY 7 +#define WB32_PWM_TIM3_IRQ_PRIORITY 7 +#define WB32_PWM_TIM4_IRQ_PRIORITY 7 + +/* + * I2C driver system settings. + */ +#define WB32_I2C_USE_I2C1 FALSE +#define WB32_I2C_USE_I2C2 FALSE +#define WB32_I2C_BUSY_TIMEOUT 50 +#define WB32_I2C_I2C1_IRQ_PRIORITY 5 +#define WB32_I2C_I2C2_IRQ_PRIORITY 5 + +/* + * SERIAL driver system settings. + */ +#define WB32_SERIAL_USE_UART1 FALSE +#define WB32_SERIAL_USE_UART2 FALSE +#define WB32_SERIAL_USE_UART3 FALSE +#define WB32_SERIAL_USART1_PRIORITY 12 +#define WB32_SERIAL_USART2_PRIORITY 12 +#define WB32_SERIAL_USART3_PRIORITY 12 + +/* + * SPI driver system settings. + */ +#define WB32_SPI_USE_QSPI FALSE +#define WB32_SPI_USE_SPIM2 FALSE +#define WB32_SPI_USE_SPIS1 FALSE +#define WB32_SPI_USE_SPIS2 FALSE +#define WB32_SPI_QSPI_IRQ_PRIORITY 10 +#define WB32_SPI_SPIM2_IRQ_PRIORITY 10 +#define WB32_SPI_SPIS1_IRQ_PRIORITY 10 +#define WB32_SPI_SPIS2_IRQ_PRIORITY 10 + +/* + * ST driver system settings. + */ +#define WB32_ST_IRQ_PRIORITY 8 +#define WB32_ST_USE_TIMER 2 + +/* + * UART driver system settings. + */ +#define WB32_UART_USE_UART1 FALSE +#define WB32_UART_USE_UART2 FALSE +#define WB32_UART_USE_UART3 FALSE +#define WB32_UART_UART1_IRQ_PRIORITY 12 +#define WB32_UART_UART2_IRQ_PRIORITY 12 +#define WB32_UART_UART3_IRQ_PRIORITY 12 + +/* + * USB driver system settings. + */ +#define WB32_USB_USE_USB1 TRUE +#define WB32_USB_USB1_IRQ_PRIORITY 13 +#define WB32_USB_HOST_WAKEUP_DURATION 10 + + +#endif /* MCUCONF_H */ diff --git a/platforms/chibios/boards/IC_TEENSY_3_1/board/board.c b/platforms/chibios/boards/IC_TEENSY_3_1/board/board.c new file mode 100644 index 000000000000..424e0c975b40 --- /dev/null +++ b/platforms/chibios/boards/IC_TEENSY_3_1/board/board.c @@ -0,0 +1,151 @@ +/* + ChibiOS - Copyright (C) 2015 RedoX https://github.com/RedoXyde + + 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. +*/ +#include <hal.h> + +#if HAL_USE_PAL || defined(__DOXYGEN__) +/** + * @brief PAL setup. + * @details Digital I/O ports static configuration as defined in @p board.h. + * This variable is used by the HAL when initializing the PAL driver. + */ +const PALConfig pal_default_config = { + .ports = + { + { + /* + * PORTA setup. + * + * PTA4 - PIN33 + * PTA5 - PIN24 + * PTA12 - PIN3 + * PTA13 - PIN4 + * + * PTA18/19 crystal + * PTA0/3 SWD + */ + .port = IOPORT1, + .pads = + { + PAL_MODE_ALTERNATIVE_7, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_ALTERNATIVE_7, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_INPUT_ANALOG, PAL_MODE_INPUT_ANALOG, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, + }, + }, + { + /* + * PORTB setup. + * + * PTB0 - PIN16 + * PTB1 - PIN17 + * PTB2 - PIN19 + * PTB3 - PIN18 + * PTB16 - PIN0 - UART0_TX + * PTB17 - PIN1 - UART0_RX + * PTB18 - PIN32 + * PTB19 - PIN25 + */ + .port = IOPORT2, + .pads = + { + PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_ALTERNATIVE_3, PAL_MODE_ALTERNATIVE_3, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, + }, + }, + { + /* + * PORTC setup. + * + * PTC0 - PIN15 + * PTC1 - PIN22 + * PTC2 - PIN23 + * PTC3 - PIN9 + * PTC4 - PIN10 + * PTC5 - PIN13 + * PTC6 - PIN11 + * PTC7 - PIN12 + * PTC8 - PIN28 + * PTC9 - PIN27 + * PTC10 - PIN29 + * PTC11 - PIN30 + */ + .port = IOPORT3, + .pads = + { + PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, + }, + }, + { + /* + * PORTD setup. + * + * PTD0 - PIN2 + * PTD1 - PIN14 + * PTD2 - PIN7 + * PTD3 - PIN8 + * PTD4 - PIN6 + * PTD5 - PIN20 + * PTD6 - PIN21 + * PTD7 - PIN5 + */ + .port = IOPORT4, + .pads = + { + PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, + }, + }, + { + /* + * PORTE setup. + * + * PTE0 - PIN31 + * PTE1 - PIN26 + */ + .port = IOPORT5, + .pads = + { + PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_OUTPUT_PUSHPULL, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, PAL_MODE_UNCONNECTED, + }, + }, + }, +}; +#endif + +// NOTE: This value comes from kiibohd/controller and is the location of a value +// which needs to be checked before disabling the watchdog (which happens in +// k20x_clock_init) +#define WDOG_TMROUTL *(volatile uint16_t *)0x40052012 + +/** + * @brief Early initialization code. + * @details This initialization must be performed just after stack setup + * and before any other initialization. + */ +void __early_init(void) { + // This is a dirty hack and should only be used as a temporary fix until this + // is upstreamed. + while (WDOG_TMROUTL < 2) + ; // Must wait for WDOG timer if already running, before jumping + + k20x_clock_init(); +} + +/** + * @brief Board-specific initialization code. + * @todo Add your board-specific code, if any. + */ +void boardInit(void) {} + + +void restart_usb_driver(USBDriver *usbp) { + // Do nothing. Restarting the USB driver on these boards breaks it. +} diff --git a/platforms/chibios/IC_TEENSY_3_1/board/board.h b/platforms/chibios/boards/IC_TEENSY_3_1/board/board.h similarity index 100% rename from platforms/chibios/IC_TEENSY_3_1/board/board.h rename to platforms/chibios/boards/IC_TEENSY_3_1/board/board.h diff --git a/platforms/chibios/STM32_F103_STM32DUINO/board/board.mk b/platforms/chibios/boards/IC_TEENSY_3_1/board/board.mk similarity index 100% rename from platforms/chibios/STM32_F103_STM32DUINO/board/board.mk rename to platforms/chibios/boards/IC_TEENSY_3_1/board/board.mk diff --git a/platforms/chibios/boards/IC_TEENSY_4_1/board/board.mk b/platforms/chibios/boards/IC_TEENSY_4_1/board/board.mk new file mode 100644 index 000000000000..bc242ac3c5a2 --- /dev/null +++ b/platforms/chibios/boards/IC_TEENSY_4_1/board/board.mk @@ -0,0 +1 @@ +include $(CHIBIOS_CONTRIB)/os/hal/boards/PJRC_TEENSY_4_1/board.mk diff --git a/platforms/chibios/boards/IC_TEENSY_4_1/rules.mk b/platforms/chibios/boards/IC_TEENSY_4_1/rules.mk new file mode 100644 index 000000000000..0c62d209c5b6 --- /dev/null +++ b/platforms/chibios/boards/IC_TEENSY_4_1/rules.mk @@ -0,0 +1 @@ +TEENSY_LOADER_CLI_MCU = imxrt1062 diff --git a/platforms/chibios/QMK_PROTON_C/board/board.mk b/platforms/chibios/boards/QMK_PROTON_C/board/board.mk similarity index 100% rename from platforms/chibios/QMK_PROTON_C/board/board.mk rename to platforms/chibios/boards/QMK_PROTON_C/board/board.mk diff --git a/platforms/chibios/QMK_PROTON_C/configs/board.h b/platforms/chibios/boards/QMK_PROTON_C/configs/board.h similarity index 100% rename from platforms/chibios/QMK_PROTON_C/configs/board.h rename to platforms/chibios/boards/QMK_PROTON_C/configs/board.h diff --git a/platforms/chibios/QMK_PROTON_C/configs/bootloader_defs.h b/platforms/chibios/boards/QMK_PROTON_C/configs/bootloader_defs.h similarity index 100% rename from platforms/chibios/QMK_PROTON_C/configs/bootloader_defs.h rename to platforms/chibios/boards/QMK_PROTON_C/configs/bootloader_defs.h diff --git a/platforms/chibios/boards/QMK_PROTON_C/configs/chconf.h b/platforms/chibios/boards/QMK_PROTON_C/configs/chconf.h new file mode 100644 index 000000000000..f81233296038 --- /dev/null +++ b/platforms/chibios/boards/QMK_PROTON_C/configs/chconf.h @@ -0,0 +1,756 @@ +/* + 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. +*/ + +/** + * @file rt/templates/chconf.h + * @brief Configuration file template. + * @details A copy of this file must be placed in each project directory, it + * contains the application specific kernel settings. + * + * @addtogroup config + * @details Kernel related settings and hooks. + * @{ + */ + +#ifndef CHCONF_H +#define CHCONF_H + +#define _CHIBIOS_RT_CONF_ +#define _CHIBIOS_RT_CONF_VER_6_1_ + +/*===========================================================================*/ +/** + * @name System timers settings + * @{ + */ +/*===========================================================================*/ + +/** + * @brief System time counter resolution. + * @note Allowed values are 16, 32 or 64 bits. + */ +#if !defined(CH_CFG_ST_RESOLUTION) +#define CH_CFG_ST_RESOLUTION 32 +#endif + +/** + * @brief System tick frequency. + * @details Frequency of the system timer that drives the system ticks. This + * setting also defines the system tick time unit. + */ +#if !defined(CH_CFG_ST_FREQUENCY) +#define CH_CFG_ST_FREQUENCY 100000 +#endif + +/** + * @brief Time intervals data size. + * @note Allowed values are 16, 32 or 64 bits. + */ +#if !defined(CH_CFG_INTERVALS_SIZE) +#define CH_CFG_INTERVALS_SIZE 32 +#endif + +/** + * @brief Time types data size. + * @note Allowed values are 16 or 32 bits. + */ +#if !defined(CH_CFG_TIME_TYPES_SIZE) +#define CH_CFG_TIME_TYPES_SIZE 32 +#endif + +/** + * @brief Time delta constant for the tick-less mode. + * @note If this value is zero then the system uses the classic + * periodic tick. This value represents the minimum number + * of ticks that is safe to specify in a timeout directive. + * The value one is not valid, timeouts are rounded up to + * this value. + */ +#if !defined(CH_CFG_ST_TIMEDELTA) +#define CH_CFG_ST_TIMEDELTA 2 +#endif + +/** @} */ + +/*===========================================================================*/ +/** + * @name Kernel parameters and options + * @{ + */ +/*===========================================================================*/ + +/** + * @brief Round robin interval. + * @details This constant is the number of system ticks allowed for the + * threads before preemption occurs. Setting this value to zero + * disables the preemption for threads with equal priority and the + * round robin becomes cooperative. Note that higher priority + * threads can still preempt, the kernel is always preemptive. + * @note Disabling the round robin preemption makes the kernel more compact + * and generally faster. + * @note The round robin preemption is not supported in tickless mode and + * must be set to zero in that case. + */ +#if !defined(CH_CFG_TIME_QUANTUM) +#define CH_CFG_TIME_QUANTUM 0 +#endif + +/** + * @brief Idle thread automatic spawn suppression. + * @details When this option is activated the function @p chSysInit() + * does not spawn the idle thread. The application @p main() + * function becomes the idle thread and must implement an + * infinite loop. + */ +#if !defined(CH_CFG_NO_IDLE_THREAD) +#define CH_CFG_NO_IDLE_THREAD FALSE +#endif + +/** @} */ + +/*===========================================================================*/ +/** + * @name Performance options + * @{ + */ +/*===========================================================================*/ + +/** + * @brief OS optimization. + * @details If enabled then time efficient rather than space efficient code + * is used when two possible implementations exist. + * + * @note This is not related to the compiler optimization options. + * @note The default is @p TRUE. + */ +#if !defined(CH_CFG_OPTIMIZE_SPEED) +#define CH_CFG_OPTIMIZE_SPEED TRUE +#endif + +/** @} */ + +/*===========================================================================*/ +/** + * @name Subsystem options + * @{ + */ +/*===========================================================================*/ + +/** + * @brief Time Measurement APIs. + * @details If enabled then the time measurement APIs are included in + * the kernel. + * + * @note The default is @p TRUE. + */ +#if !defined(CH_CFG_USE_TM) +#define CH_CFG_USE_TM TRUE +#endif + +/** + * @brief Threads registry APIs. + * @details If enabled then the registry APIs are included in the kernel. + * + * @note The default is @p TRUE. + */ +#if !defined(CH_CFG_USE_REGISTRY) +#define CH_CFG_USE_REGISTRY TRUE +#endif + +/** + * @brief Threads synchronization APIs. + * @details If enabled then the @p chThdWait() function is included in + * the kernel. + * + * @note The default is @p TRUE. + */ +#if !defined(CH_CFG_USE_WAITEXIT) +#define CH_CFG_USE_WAITEXIT TRUE +#endif + +/** + * @brief Semaphores APIs. + * @details If enabled then the Semaphores APIs are included in the kernel. + * + * @note The default is @p TRUE. + */ +#if !defined(CH_CFG_USE_SEMAPHORES) +#define CH_CFG_USE_SEMAPHORES TRUE +#endif + +/** + * @brief Semaphores queuing mode. + * @details If enabled then the threads are enqueued on semaphores by + * priority rather than in FIFO order. + * + * @note The default is @p FALSE. Enable this if you have special + * requirements. + * @note Requires @p CH_CFG_USE_SEMAPHORES. + */ +#if !defined(CH_CFG_USE_SEMAPHORES_PRIORITY) +#define CH_CFG_USE_SEMAPHORES_PRIORITY FALSE +#endif + +/** + * @brief Mutexes APIs. + * @details If enabled then the mutexes APIs are included in the kernel. + * + * @note The default is @p TRUE. + */ +#if !defined(CH_CFG_USE_MUTEXES) +#define CH_CFG_USE_MUTEXES TRUE +#endif + +/** + * @brief Enables recursive behavior on mutexes. + * @note Recursive mutexes are heavier and have an increased + * memory footprint. + * + * @note The default is @p FALSE. + * @note Requires @p CH_CFG_USE_MUTEXES. + */ +#if !defined(CH_CFG_USE_MUTEXES_RECURSIVE) +#define CH_CFG_USE_MUTEXES_RECURSIVE FALSE +#endif + +/** + * @brief Conditional Variables APIs. + * @details If enabled then the conditional variables APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_MUTEXES. + */ +#if !defined(CH_CFG_USE_CONDVARS) +#define CH_CFG_USE_CONDVARS TRUE +#endif + +/** + * @brief Conditional Variables APIs with timeout. + * @details If enabled then the conditional variables APIs with timeout + * specification are included in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_CONDVARS. + */ +#if !defined(CH_CFG_USE_CONDVARS_TIMEOUT) +#define CH_CFG_USE_CONDVARS_TIMEOUT TRUE +#endif + +/** + * @brief Events Flags APIs. + * @details If enabled then the event flags APIs are included in the kernel. + * + * @note The default is @p TRUE. + */ +#if !defined(CH_CFG_USE_EVENTS) +#define CH_CFG_USE_EVENTS TRUE +#endif + +/** + * @brief Events Flags APIs with timeout. + * @details If enabled then the events APIs with timeout specification + * are included in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_EVENTS. + */ +#if !defined(CH_CFG_USE_EVENTS_TIMEOUT) +#define CH_CFG_USE_EVENTS_TIMEOUT TRUE +#endif + +/** + * @brief Synchronous Messages APIs. + * @details If enabled then the synchronous messages APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + */ +#if !defined(CH_CFG_USE_MESSAGES) +#define CH_CFG_USE_MESSAGES TRUE +#endif + +/** + * @brief Synchronous Messages queuing mode. + * @details If enabled then messages are served by priority rather than in + * FIFO order. + * + * @note The default is @p FALSE. Enable this if you have special + * requirements. + * @note Requires @p CH_CFG_USE_MESSAGES. + */ +#if !defined(CH_CFG_USE_MESSAGES_PRIORITY) +#define CH_CFG_USE_MESSAGES_PRIORITY TRUE +#endif + +/** + * @brief Dynamic Threads APIs. + * @details If enabled then the dynamic threads creation APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_WAITEXIT. + * @note Requires @p CH_CFG_USE_HEAP and/or @p CH_CFG_USE_MEMPOOLS. + */ +#if !defined(CH_CFG_USE_DYNAMIC) +#define CH_CFG_USE_DYNAMIC TRUE +#endif + +/** @} */ + +/*===========================================================================*/ +/** + * @name OSLIB options + * @{ + */ +/*===========================================================================*/ + +/** + * @brief Mailboxes APIs. + * @details If enabled then the asynchronous messages (mailboxes) APIs are + * included in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_SEMAPHORES. + */ +#if !defined(CH_CFG_USE_MAILBOXES) +#define CH_CFG_USE_MAILBOXES TRUE +#endif + +/** + * @brief Core Memory Manager APIs. + * @details If enabled then the core memory manager APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + */ +#if !defined(CH_CFG_USE_MEMCORE) +#define CH_CFG_USE_MEMCORE TRUE +#endif + +/** + * @brief Managed RAM size. + * @details Size of the RAM area to be managed by the OS. If set to zero + * then the whole available RAM is used. The core memory is made + * available to the heap allocator and/or can be used directly through + * the simplified core memory allocator. + * + * @note In order to let the OS manage the whole RAM the linker script must + * provide the @p __heap_base__ and @p __heap_end__ symbols. + * @note Requires @p CH_CFG_USE_MEMCORE. + */ +#if !defined(CH_CFG_MEMCORE_SIZE) +#define CH_CFG_MEMCORE_SIZE 0 +#endif + +/** + * @brief Heap Allocator APIs. + * @details If enabled then the memory heap allocator APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_MEMCORE and either @p CH_CFG_USE_MUTEXES or + * @p CH_CFG_USE_SEMAPHORES. + * @note Mutexes are recommended. + */ +#if !defined(CH_CFG_USE_HEAP) +#define CH_CFG_USE_HEAP TRUE +#endif + +/** + * @brief Memory Pools Allocator APIs. + * @details If enabled then the memory pools allocator APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + */ +#if !defined(CH_CFG_USE_MEMPOOLS) +#define CH_CFG_USE_MEMPOOLS TRUE +#endif + +/** + * @brief Objects FIFOs APIs. + * @details If enabled then the objects FIFOs APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + */ +#if !defined(CH_CFG_USE_OBJ_FIFOS) +#define CH_CFG_USE_OBJ_FIFOS TRUE +#endif + +/** + * @brief Pipes APIs. + * @details If enabled then the pipes APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + */ +#if !defined(CH_CFG_USE_PIPES) +#define CH_CFG_USE_PIPES TRUE +#endif + +/** + * @brief Objects Caches APIs. + * @details If enabled then the objects caches APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + */ +#if !defined(CH_CFG_USE_OBJ_CACHES) +#define CH_CFG_USE_OBJ_CACHES FALSE +#endif + +/** + * @brief Delegate threads APIs. + * @details If enabled then the delegate threads APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + */ +#if !defined(CH_CFG_USE_DELEGATES) +#define CH_CFG_USE_DELEGATES FALSE +#endif + +/** + * @brief Jobs Queues APIs. + * @details If enabled then the jobs queues APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + */ +#if !defined(CH_CFG_USE_JOBS) +#define CH_CFG_USE_JOBS FALSE +#endif + +/** @} */ + +/*===========================================================================*/ +/** + * @name Objects factory options + * @{ + */ +/*===========================================================================*/ + +/** + * @brief Objects Factory APIs. + * @details If enabled then the objects factory APIs are included in the + * kernel. + * + * @note The default is @p FALSE. + */ +#if !defined(CH_CFG_USE_FACTORY) +#define CH_CFG_USE_FACTORY FALSE +#endif + +/** + * @brief Maximum length for object names. + * @details If the specified length is zero then the name is stored by + * pointer but this could have unintended side effects. + */ +#if !defined(CH_CFG_FACTORY_MAX_NAMES_LENGTH) +#define CH_CFG_FACTORY_MAX_NAMES_LENGTH 8 +#endif + +/** + * @brief Enables the registry of generic objects. + */ +#if !defined(CH_CFG_FACTORY_OBJECTS_REGISTRY) +#define CH_CFG_FACTORY_OBJECTS_REGISTRY TRUE +#endif + +/** + * @brief Enables factory for generic buffers. + */ +#if !defined(CH_CFG_FACTORY_GENERIC_BUFFERS) +#define CH_CFG_FACTORY_GENERIC_BUFFERS TRUE +#endif + +/** + * @brief Enables factory for semaphores. + */ +#if !defined(CH_CFG_FACTORY_SEMAPHORES) +#define CH_CFG_FACTORY_SEMAPHORES TRUE +#endif + +/** + * @brief Enables factory for mailboxes. + */ +#if !defined(CH_CFG_FACTORY_MAILBOXES) +#define CH_CFG_FACTORY_MAILBOXES TRUE +#endif + +/** + * @brief Enables factory for objects FIFOs. + */ +#if !defined(CH_CFG_FACTORY_OBJ_FIFOS) +#define CH_CFG_FACTORY_OBJ_FIFOS TRUE +#endif + +/** + * @brief Enables factory for Pipes. + */ +#if !defined(CH_CFG_FACTORY_PIPES) || defined(__DOXYGEN__) +#define CH_CFG_FACTORY_PIPES TRUE +#endif + +/** @} */ + +/*===========================================================================*/ +/** + * @name Debug options + * @{ + */ +/*===========================================================================*/ + +/** + * @brief Debug option, kernel statistics. + * + * @note The default is @p FALSE. + */ +#if !defined(CH_DBG_STATISTICS) +#define CH_DBG_STATISTICS FALSE +#endif + +/** + * @brief Debug option, system state check. + * @details If enabled the correct call protocol for system APIs is checked + * at runtime. + * + * @note The default is @p FALSE. + */ +#if !defined(CH_DBG_SYSTEM_STATE_CHECK) +#define CH_DBG_SYSTEM_STATE_CHECK FALSE +#endif + +/** + * @brief Debug option, parameters checks. + * @details If enabled then the checks on the API functions input + * parameters are activated. + * + * @note The default is @p FALSE. + */ +#if !defined(CH_DBG_ENABLE_CHECKS) +#define CH_DBG_ENABLE_CHECKS FALSE +#endif + +/** + * @brief Debug option, consistency checks. + * @details If enabled then all the assertions in the kernel code are + * activated. This includes consistency checks inside the kernel, + * runtime anomalies and port-defined checks. + * + * @note The default is @p FALSE. + */ +#if !defined(CH_DBG_ENABLE_ASSERTS) +#define CH_DBG_ENABLE_ASSERTS FALSE +#endif + +/** + * @brief Debug option, trace buffer. + * @details If enabled then the trace buffer is activated. + * + * @note The default is @p CH_DBG_TRACE_MASK_DISABLED. + */ +#if !defined(CH_DBG_TRACE_MASK) +#define CH_DBG_TRACE_MASK CH_DBG_TRACE_MASK_DISABLED +#endif + +/** + * @brief Trace buffer entries. + * @note The trace buffer is only allocated if @p CH_DBG_TRACE_MASK is + * different from @p CH_DBG_TRACE_MASK_DISABLED. + */ +#if !defined(CH_DBG_TRACE_BUFFER_SIZE) +#define CH_DBG_TRACE_BUFFER_SIZE 128 +#endif + +/** + * @brief Debug option, stack checks. + * @details If enabled then a runtime stack check is performed. + * + * @note The default is @p FALSE. + * @note The stack check is performed in a architecture/port dependent way. + * It may not be implemented or some ports. + * @note The default failure mode is to halt the system with the global + * @p panic_msg variable set to @p NULL. + */ +#if !defined(CH_DBG_ENABLE_STACK_CHECK) +#define CH_DBG_ENABLE_STACK_CHECK TRUE +#endif + +/** + * @brief Debug option, stacks initialization. + * @details If enabled then the threads working area is filled with a byte + * value when a thread is created. This can be useful for the + * runtime measurement of the used stack. + * + * @note The default is @p FALSE. + */ +#if !defined(CH_DBG_FILL_THREADS) +#define CH_DBG_FILL_THREADS FALSE +#endif + +/** + * @brief Debug option, threads profiling. + * @details If enabled then a field is added to the @p thread_t structure that + * counts the system ticks occurred while executing the thread. + * + * @note The default is @p FALSE. + * @note This debug option is not currently compatible with the + * tickless mode. + */ +#if !defined(CH_DBG_THREADS_PROFILING) +#define CH_DBG_THREADS_PROFILING FALSE +#endif + +/** @} */ + +/*===========================================================================*/ +/** + * @name Kernel hooks + * @{ + */ +/*===========================================================================*/ + +/** + * @brief System structure extension. + * @details User fields added to the end of the @p ch_system_t structure. + */ +#define CH_CFG_SYSTEM_EXTRA_FIELDS \ + /* Add threads custom fields here.*/ + +/** + * @brief System initialization hook. + * @details User initialization code added to the @p chSysInit() function + * just before interrupts are enabled globally. + */ +#define CH_CFG_SYSTEM_INIT_HOOK() { \ + /* Add threads initialization code here.*/ \ +} + +/** + * @brief Threads descriptor structure extension. + * @details User fields added to the end of the @p thread_t structure. + */ +#define CH_CFG_THREAD_EXTRA_FIELDS \ + /* Add threads custom fields here.*/ + +/** + * @brief Threads initialization hook. + * @details User initialization code added to the @p _thread_init() function. + * + * @note It is invoked from within @p _thread_init() and implicitly from all + * the threads creation APIs. + */ +#define CH_CFG_THREAD_INIT_HOOK(tp) { \ + /* Add threads initialization code here.*/ \ +} + +/** + * @brief Threads finalization hook. + * @details User finalization code added to the @p chThdExit() API. + */ +#define CH_CFG_THREAD_EXIT_HOOK(tp) { \ + /* Add threads finalization code here.*/ \ +} + +/** + * @brief Context switch hook. + * @details This hook is invoked just before switching between threads. + */ +#define CH_CFG_CONTEXT_SWITCH_HOOK(ntp, otp) { \ + /* Context switch code here.*/ \ +} + +/** + * @brief ISR enter hook. + */ +#define CH_CFG_IRQ_PROLOGUE_HOOK() { \ + /* IRQ prologue code here.*/ \ +} + +/** + * @brief ISR exit hook. + */ +#define CH_CFG_IRQ_EPILOGUE_HOOK() { \ + /* IRQ epilogue code here.*/ \ +} + +/** + * @brief Idle thread enter hook. + * @note This hook is invoked within a critical zone, no OS functions + * should be invoked from here. + * @note This macro can be used to activate a power saving mode. + */ +#define CH_CFG_IDLE_ENTER_HOOK() { \ + /* Idle-enter code here.*/ \ +} + +/** + * @brief Idle thread leave hook. + * @note This hook is invoked within a critical zone, no OS functions + * should be invoked from here. + * @note This macro can be used to deactivate a power saving mode. + */ +#define CH_CFG_IDLE_LEAVE_HOOK() { \ + /* Idle-leave code here.*/ \ +} + +/** + * @brief Idle Loop hook. + * @details This hook is continuously invoked by the idle thread loop. + */ +#define CH_CFG_IDLE_LOOP_HOOK() { \ + /* Idle loop code here.*/ \ +} + +/** + * @brief System tick event hook. + * @details This hook is invoked in the system tick handler immediately + * after processing the virtual timers queue. + */ +#define CH_CFG_SYSTEM_TICK_HOOK() { \ + /* System tick event code here.*/ \ +} + +/** + * @brief System halt hook. + * @details This hook is invoked in case to a system halting error before + * the system is halted. + */ +#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \ + /* System halt code here.*/ \ +} + +/** + * @brief Trace hook. + * @details This hook is invoked each time a new record is written in the + * trace buffer. + */ +#define CH_CFG_TRACE_HOOK(tep) { \ + /* Trace code here.*/ \ +} + +/** @} */ + +/*===========================================================================*/ +/* Port-specific settings (override port settings defaulted in chcore.h). */ +/*===========================================================================*/ + +#endif /* CHCONF_H */ + +/** @} */ diff --git a/platforms/chibios/boards/QMK_PROTON_C/configs/config.h b/platforms/chibios/boards/QMK_PROTON_C/configs/config.h new file mode 100644 index 000000000000..fa1a73c35497 --- /dev/null +++ b/platforms/chibios/boards/QMK_PROTON_C/configs/config.h @@ -0,0 +1,29 @@ +/* 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 + +#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/QMK_PROTON_C/configs/halconf.h b/platforms/chibios/boards/QMK_PROTON_C/configs/halconf.h new file mode 100644 index 000000000000..d7a639a6d07f --- /dev/null +++ b/platforms/chibios/boards/QMK_PROTON_C/configs/halconf.h @@ -0,0 +1,531 @@ +/* + 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. +*/ + +/** + * @file templates/halconf.h + * @brief HAL configuration header. + * @details HAL configuration file, this file allows to enable or disable the + * various device drivers from your application. You may also use + * this file in order to override the device drivers default settings. + * + * @addtogroup HAL_CONF + * @{ + */ + +#ifndef HALCONF_H +#define HALCONF_H + +#define _CHIBIOS_HAL_CONF_ +#define _CHIBIOS_HAL_CONF_VER_7_1_ + +#include <mcuconf.h> + +/** + * @brief Enables the PAL subsystem. + */ +#if !defined(HAL_USE_PAL) || defined(__DOXYGEN__) +#define HAL_USE_PAL TRUE +#endif + +/** + * @brief Enables the ADC subsystem. + */ +#if !defined(HAL_USE_ADC) || defined(__DOXYGEN__) +#define HAL_USE_ADC FALSE +#endif + +/** + * @brief Enables the CAN subsystem. + */ +#if !defined(HAL_USE_CAN) || defined(__DOXYGEN__) +#define HAL_USE_CAN FALSE +#endif + +/** + * @brief Enables the cryptographic subsystem. + */ +#if !defined(HAL_USE_CRY) || defined(__DOXYGEN__) +#define HAL_USE_CRY FALSE +#endif + +/** + * @brief Enables the DAC subsystem. + */ +#if !defined(HAL_USE_DAC) || defined(__DOXYGEN__) +#define HAL_USE_DAC TRUE +#endif + +/** + * @brief Enables the EFlash subsystem. + */ +#if !defined(HAL_USE_EFL) || defined(__DOXYGEN__) +#define HAL_USE_EFL FALSE +#endif + +/** + * @brief Enables the GPT subsystem. + */ +#if !defined(HAL_USE_GPT) || defined(__DOXYGEN__) +#define HAL_USE_GPT TRUE +#endif + +/** + * @brief Enables the I2C subsystem. + */ +#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__) +#define HAL_USE_I2C TRUE +#endif + +/** + * @brief Enables the I2S subsystem. + */ +#if !defined(HAL_USE_I2S) || defined(__DOXYGEN__) +#define HAL_USE_I2S FALSE +#endif + +/** + * @brief Enables the ICU subsystem. + */ +#if !defined(HAL_USE_ICU) || defined(__DOXYGEN__) +#define HAL_USE_ICU FALSE +#endif + +/** + * @brief Enables the MAC subsystem. + */ +#if !defined(HAL_USE_MAC) || defined(__DOXYGEN__) +#define HAL_USE_MAC FALSE +#endif + +/** + * @brief Enables the MMC_SPI subsystem. + */ +#if !defined(HAL_USE_MMC_SPI) || defined(__DOXYGEN__) +#define HAL_USE_MMC_SPI FALSE +#endif + +/** + * @brief Enables the PWM subsystem. + */ +#if !defined(HAL_USE_PWM) || defined(__DOXYGEN__) +#define HAL_USE_PWM TRUE +#endif + +/** + * @brief Enables the RTC subsystem. + */ +#if !defined(HAL_USE_RTC) || defined(__DOXYGEN__) +#define HAL_USE_RTC FALSE +#endif + +/** + * @brief Enables the SDC subsystem. + */ +#if !defined(HAL_USE_SDC) || defined(__DOXYGEN__) +#define HAL_USE_SDC FALSE +#endif + +/** + * @brief Enables the SERIAL subsystem. + */ +#if !defined(HAL_USE_SERIAL) || defined(__DOXYGEN__) +#define HAL_USE_SERIAL FALSE +#endif + +/** + * @brief Enables the SERIAL over USB subsystem. + */ +#if !defined(HAL_USE_SERIAL_USB) || defined(__DOXYGEN__) +#define HAL_USE_SERIAL_USB TRUE +#endif + +/** + * @brief Enables the SIO subsystem. + */ +#if !defined(HAL_USE_SIO) || defined(__DOXYGEN__) +#define HAL_USE_SIO FALSE +#endif + +/** + * @brief Enables the SPI subsystem. + */ +#if !defined(HAL_USE_SPI) || defined(__DOXYGEN__) +#define HAL_USE_SPI TRUE +#endif + +/** + * @brief Enables the TRNG subsystem. + */ +#if !defined(HAL_USE_TRNG) || defined(__DOXYGEN__) +#define HAL_USE_TRNG FALSE +#endif + +/** + * @brief Enables the UART subsystem. + */ +#if !defined(HAL_USE_UART) || defined(__DOXYGEN__) +#define HAL_USE_UART FALSE +#endif + +/** + * @brief Enables the USB subsystem. + */ +#if !defined(HAL_USE_USB) || defined(__DOXYGEN__) +#define HAL_USE_USB TRUE +#endif + +/** + * @brief Enables the WDG subsystem. + */ +#if !defined(HAL_USE_WDG) || defined(__DOXYGEN__) +#define HAL_USE_WDG FALSE +#endif + +/** + * @brief Enables the WSPI subsystem. + */ +#if !defined(HAL_USE_WSPI) || defined(__DOXYGEN__) +#define HAL_USE_WSPI FALSE +#endif + +/*===========================================================================*/ +/* PAL driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables synchronous APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(PAL_USE_CALLBACKS) || defined(__DOXYGEN__) +#define PAL_USE_CALLBACKS TRUE +#endif + +/** + * @brief Enables synchronous APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(PAL_USE_WAIT) || defined(__DOXYGEN__) +#define PAL_USE_WAIT TRUE +#endif + +/*===========================================================================*/ +/* ADC driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables synchronous APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(ADC_USE_WAIT) || defined(__DOXYGEN__) +#define ADC_USE_WAIT TRUE +#endif + +/** + * @brief Enables the @p adcAcquireBus() and @p adcReleaseBus() APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(ADC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) +#define ADC_USE_MUTUAL_EXCLUSION TRUE +#endif + +/*===========================================================================*/ +/* CAN driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Sleep mode related APIs inclusion switch. + */ +#if !defined(CAN_USE_SLEEP_MODE) || defined(__DOXYGEN__) +#define CAN_USE_SLEEP_MODE TRUE +#endif + +/** + * @brief Enforces the driver to use direct callbacks rather than OSAL events. + */ +#if !defined(CAN_ENFORCE_USE_CALLBACKS) || defined(__DOXYGEN__) +#define CAN_ENFORCE_USE_CALLBACKS FALSE +#endif + +/*===========================================================================*/ +/* CRY driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables the SW fall-back of the cryptographic driver. + * @details When enabled, this option, activates a fall-back software + * implementation for algorithms not supported by the underlying + * hardware. + * @note Fall-back implementations may not be present for all algorithms. + */ +#if !defined(HAL_CRY_USE_FALLBACK) || defined(__DOXYGEN__) +#define HAL_CRY_USE_FALLBACK FALSE +#endif + +/** + * @brief Makes the driver forcibly use the fall-back implementations. + */ +#if !defined(HAL_CRY_ENFORCE_FALLBACK) || defined(__DOXYGEN__) +#define HAL_CRY_ENFORCE_FALLBACK FALSE +#endif + +/*===========================================================================*/ +/* DAC driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables synchronous APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(DAC_USE_WAIT) || defined(__DOXYGEN__) +#define DAC_USE_WAIT TRUE +#endif + +/** + * @brief Enables the @p dacAcquireBus() and @p dacReleaseBus() APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(DAC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) +#define DAC_USE_MUTUAL_EXCLUSION TRUE +#endif + +/*===========================================================================*/ +/* I2C driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables the mutual exclusion APIs on the I2C bus. + */ +#if !defined(I2C_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) +#define I2C_USE_MUTUAL_EXCLUSION TRUE +#endif + +/*===========================================================================*/ +/* MAC driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables the zero-copy API. + */ +#if !defined(MAC_USE_ZERO_COPY) || defined(__DOXYGEN__) +#define MAC_USE_ZERO_COPY FALSE +#endif + +/** + * @brief Enables an event sources for incoming packets. + */ +#if !defined(MAC_USE_EVENTS) || defined(__DOXYGEN__) +#define MAC_USE_EVENTS TRUE +#endif + +/*===========================================================================*/ +/* MMC_SPI driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Delays insertions. + * @details If enabled this options inserts delays into the MMC waiting + * routines releasing some extra CPU time for the threads with + * lower priority, this may slow down the driver a bit however. + * This option is recommended also if the SPI driver does not + * use a DMA channel and heavily loads the CPU. + */ +#if !defined(MMC_NICE_WAITING) || defined(__DOXYGEN__) +#define MMC_NICE_WAITING TRUE +#endif + +/*===========================================================================*/ +/* SDC driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Number of initialization attempts before rejecting the card. + * @note Attempts are performed at 10mS intervals. + */ +#if !defined(SDC_INIT_RETRY) || defined(__DOXYGEN__) +#define SDC_INIT_RETRY 100 +#endif + +/** + * @brief Include support for MMC cards. + * @note MMC support is not yet implemented so this option must be kept + * at @p FALSE. + */ +#if !defined(SDC_MMC_SUPPORT) || defined(__DOXYGEN__) +#define SDC_MMC_SUPPORT FALSE +#endif + +/** + * @brief Delays insertions. + * @details If enabled this options inserts delays into the MMC waiting + * routines releasing some extra CPU time for the threads with + * lower priority, this may slow down the driver a bit however. + */ +#if !defined(SDC_NICE_WAITING) || defined(__DOXYGEN__) +#define SDC_NICE_WAITING TRUE +#endif + +/** + * @brief OCR initialization constant for V20 cards. + */ +#if !defined(SDC_INIT_OCR_V20) || defined(__DOXYGEN__) +#define SDC_INIT_OCR_V20 0x50FF8000U +#endif + +/** + * @brief OCR initialization constant for non-V20 cards. + */ +#if !defined(SDC_INIT_OCR) || defined(__DOXYGEN__) +#define SDC_INIT_OCR 0x80100000U +#endif + +/*===========================================================================*/ +/* SERIAL driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Default bit rate. + * @details Configuration parameter, this is the baud rate selected for the + * default configuration. + */ +#if !defined(SERIAL_DEFAULT_BITRATE) || defined(__DOXYGEN__) +#define SERIAL_DEFAULT_BITRATE 38400 +#endif + +/** + * @brief Serial buffers size. + * @details Configuration parameter, you can change the depth of the queue + * buffers depending on the requirements of your application. + * @note The default is 16 bytes for both the transmission and receive + * buffers. + */ +#if !defined(SERIAL_BUFFERS_SIZE) || defined(__DOXYGEN__) +#define SERIAL_BUFFERS_SIZE 128 +#endif + +/*===========================================================================*/ +/* SERIAL_USB driver related setting. */ +/*===========================================================================*/ + +/** + * @brief Serial over USB buffers size. + * @details Configuration parameter, the buffer size must be a multiple of + * the USB data endpoint maximum packet size. + * @note The default is 256 bytes for both the transmission and receive + * buffers. + */ +#if !defined(SERIAL_USB_BUFFERS_SIZE) || defined(__DOXYGEN__) +#define SERIAL_USB_BUFFERS_SIZE 1 +#endif + +/** + * @brief Serial over USB number of buffers. + * @note The default is 2 buffers. + */ +#if !defined(SERIAL_USB_BUFFERS_NUMBER) || defined(__DOXYGEN__) +#define SERIAL_USB_BUFFERS_NUMBER 2 +#endif + +/*===========================================================================*/ +/* SPI driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables synchronous APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(SPI_USE_WAIT) || defined(__DOXYGEN__) +#define SPI_USE_WAIT TRUE +#endif + +/** + * @brief Enables circular transfers APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(SPI_USE_CIRCULAR) || defined(__DOXYGEN__) +#define SPI_USE_CIRCULAR FALSE +#endif + +/** + * @brief Enables the @p spiAcquireBus() and @p spiReleaseBus() APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(SPI_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) +#define SPI_USE_MUTUAL_EXCLUSION TRUE +#endif + +/** + * @brief Handling method for SPI CS line. + * @note Disabling this option saves both code and data space. + */ +#if !defined(SPI_SELECT_MODE) || defined(__DOXYGEN__) +#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD +#endif + +/*===========================================================================*/ +/* UART driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables synchronous APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(UART_USE_WAIT) || defined(__DOXYGEN__) +#define UART_USE_WAIT FALSE +#endif + +/** + * @brief Enables the @p uartAcquireBus() and @p uartReleaseBus() APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(UART_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) +#define UART_USE_MUTUAL_EXCLUSION FALSE +#endif + +/*===========================================================================*/ +/* USB driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables synchronous APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(USB_USE_WAIT) || defined(__DOXYGEN__) +#define USB_USE_WAIT TRUE +#endif + +/*===========================================================================*/ +/* WSPI driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables synchronous APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(WSPI_USE_WAIT) || defined(__DOXYGEN__) +#define WSPI_USE_WAIT TRUE +#endif + +/** + * @brief Enables the @p wspiAcquireBus() and @p wspiReleaseBus() APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(WSPI_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) +#define WSPI_USE_MUTUAL_EXCLUSION TRUE +#endif + +#endif /* HALCONF_H */ + +/** @} */ diff --git a/platforms/chibios/QMK_PROTON_C/configs/mcuconf.h b/platforms/chibios/boards/QMK_PROTON_C/configs/mcuconf.h similarity index 100% rename from platforms/chibios/QMK_PROTON_C/configs/mcuconf.h rename to platforms/chibios/boards/QMK_PROTON_C/configs/mcuconf.h diff --git a/platforms/chibios/QMK_PROTON_C/convert_to_proton_c.mk b/platforms/chibios/boards/QMK_PROTON_C/convert_to_proton_c.mk similarity index 100% rename from platforms/chibios/QMK_PROTON_C/convert_to_proton_c.mk rename to platforms/chibios/boards/QMK_PROTON_C/convert_to_proton_c.mk 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 000000000000..960fc26786f2 --- /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/platforms/chibios/boards/SIPEED_LONGAN_NANO/configs/chconf.h b/platforms/chibios/boards/SIPEED_LONGAN_NANO/configs/chconf.h new file mode 100644 index 000000000000..6e5adb0fe183 --- /dev/null +++ b/platforms/chibios/boards/SIPEED_LONGAN_NANO/configs/chconf.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/>. + */ + +/* 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 + +#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 000000000000..ab086567e550 --- /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/STM32_F103_STM32DUINO/board/board.c b/platforms/chibios/boards/STM32_F103_STM32DUINO/board/board.c similarity index 100% rename from platforms/chibios/STM32_F103_STM32DUINO/board/board.c rename to platforms/chibios/boards/STM32_F103_STM32DUINO/board/board.c diff --git a/platforms/chibios/STM32_F103_STM32DUINO/board/board.h b/platforms/chibios/boards/STM32_F103_STM32DUINO/board/board.h similarity index 100% rename from platforms/chibios/STM32_F103_STM32DUINO/board/board.h rename to platforms/chibios/boards/STM32_F103_STM32DUINO/board/board.h diff --git a/platforms/chibios/boards/STM32_F103_STM32DUINO/board/board.mk b/platforms/chibios/boards/STM32_F103_STM32DUINO/board/board.mk new file mode 100644 index 000000000000..842e33590594 --- /dev/null +++ b/platforms/chibios/boards/STM32_F103_STM32DUINO/board/board.mk @@ -0,0 +1,9 @@ +# List of all the board related files. +BOARDSRC = $(BOARD_PATH)/board/board.c + +# Required include directories +BOARDINC = $(BOARD_PATH)/board + +# Shared variables +ALLCSRC += $(BOARDSRC) +ALLINC += $(BOARDINC) diff --git a/platforms/chibios/STM32_F103_STM32DUINO/configs/mcuconf.h b/platforms/chibios/boards/STM32_F103_STM32DUINO/configs/mcuconf.h similarity index 100% rename from platforms/chibios/STM32_F103_STM32DUINO/configs/mcuconf.h rename to platforms/chibios/boards/STM32_F103_STM32DUINO/configs/mcuconf.h diff --git a/platforms/chibios/boards/STM32_F103_STM32DUINO/ld/STM32F103x8_stm32duino_bootloader.ld b/platforms/chibios/boards/STM32_F103_STM32DUINO/ld/STM32F103x8_stm32duino_bootloader.ld new file mode 100644 index 000000000000..a4bd566b594a --- /dev/null +++ b/platforms/chibios/boards/STM32_F103_STM32DUINO/ld/STM32F103x8_stm32duino_bootloader.ld @@ -0,0 +1,22 @@ +/* + ChibiOS - Copyright (C) 2006..2016 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. +*/ + +/* + * STM32F103x8 memory setup for use with the STM32Duino bootloader. + */ +f103_flash_size = 64k; + +INCLUDE stm32duino_bootloader_common.ld diff --git a/platforms/chibios/boards/STM32_F103_STM32DUINO/ld/STM32F103xB_stm32duino_bootloader.ld b/platforms/chibios/boards/STM32_F103_STM32DUINO/ld/STM32F103xB_stm32duino_bootloader.ld new file mode 100644 index 000000000000..dc47400dc517 --- /dev/null +++ b/platforms/chibios/boards/STM32_F103_STM32DUINO/ld/STM32F103xB_stm32duino_bootloader.ld @@ -0,0 +1,22 @@ +/* + ChibiOS - Copyright (C) 2006..2016 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. +*/ + +/* + * STM32F103xB memory setup for use with the STM32Duino bootloader. + */ +f103_flash_size = 128k; + +INCLUDE stm32duino_bootloader_common.ld diff --git a/platforms/chibios/boards/STM32_F103_STM32DUINO/ld/stm32duino_bootloader_common.ld b/platforms/chibios/boards/STM32_F103_STM32DUINO/ld/stm32duino_bootloader_common.ld new file mode 100644 index 000000000000..76cd3153be39 --- /dev/null +++ b/platforms/chibios/boards/STM32_F103_STM32DUINO/ld/stm32duino_bootloader_common.ld @@ -0,0 +1,85 @@ +/* + ChibiOS - Copyright (C) 2006..2016 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. +*/ + +/* + * STM32Duino bootloader common memory setup. + */ +MEMORY +{ + flash0 : org = 0x08002000, len = f103_flash_size - 0x2000 + flash1 : org = 0x00000000, len = 0 + flash2 : org = 0x00000000, len = 0 + flash3 : org = 0x00000000, len = 0 + flash4 : org = 0x00000000, len = 0 + flash5 : org = 0x00000000, len = 0 + flash6 : org = 0x00000000, len = 0 + flash7 : org = 0x00000000, len = 0 + ram0 : org = 0x20000000, len = 20k + ram1 : org = 0x00000000, len = 0 + ram2 : org = 0x00000000, len = 0 + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x00000000, len = 0 + ram5 : org = 0x00000000, len = 0 + ram6 : org = 0x00000000, len = 0 + ram7 : 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", flash0); +REGION_ALIAS("XTORS_FLASH_LMA", flash0); + +/* Flash region to be used for code text.*/ +REGION_ALIAS("TEXT_FLASH", flash0); +REGION_ALIAS("TEXT_FLASH_LMA", flash0); + +/* Flash region to be used for read only data.*/ +REGION_ALIAS("RODATA_FLASH", flash0); +REGION_ALIAS("RODATA_FLASH_LMA", flash0); + +/* Flash region to be used for various.*/ +REGION_ALIAS("VARIOUS_FLASH", flash0); +REGION_ALIAS("VARIOUS_FLASH_LMA", flash0); + +/* Flash region to be used for RAM(n) initialization data.*/ +REGION_ALIAS("RAM_INIT_FLASH_LMA", flash0); + +/* 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", flash0); + +/* 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/configs/chconf.h b/platforms/chibios/boards/common/configs/chconf.h new file mode 100644 index 000000000000..18ad609ca130 --- /dev/null +++ b/platforms/chibios/boards/common/configs/chconf.h @@ -0,0 +1,756 @@ +/* + 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. +*/ + +/** + * @file rt/templates/chconf.h + * @brief Configuration file template. + * @details A copy of this file must be placed in each project directory, it + * contains the application specific kernel settings. + * + * @addtogroup config + * @details Kernel related settings and hooks. + * @{ + */ + +#ifndef CHCONF_H +#define CHCONF_H + +#define _CHIBIOS_RT_CONF_ +#define _CHIBIOS_RT_CONF_VER_6_1_ + +/*===========================================================================*/ +/** + * @name System timers settings + * @{ + */ +/*===========================================================================*/ + +/** + * @brief System time counter resolution. + * @note Allowed values are 16, 32 or 64 bits. + */ +#if !defined(CH_CFG_ST_RESOLUTION) +#define CH_CFG_ST_RESOLUTION 32 +#endif + +/** + * @brief System tick frequency. + * @details Frequency of the system timer that drives the system ticks. This + * setting also defines the system tick time unit. + */ +#if !defined(CH_CFG_ST_FREQUENCY) +#define CH_CFG_ST_FREQUENCY 100000 +#endif + +/** + * @brief Time intervals data size. + * @note Allowed values are 16, 32 or 64 bits. + */ +#if !defined(CH_CFG_INTERVALS_SIZE) +#define CH_CFG_INTERVALS_SIZE 32 +#endif + +/** + * @brief Time types data size. + * @note Allowed values are 16 or 32 bits. + */ +#if !defined(CH_CFG_TIME_TYPES_SIZE) +#define CH_CFG_TIME_TYPES_SIZE 32 +#endif + +/** + * @brief Time delta constant for the tick-less mode. + * @note If this value is zero then the system uses the classic + * periodic tick. This value represents the minimum number + * of ticks that is safe to specify in a timeout directive. + * The value one is not valid, timeouts are rounded up to + * this value. + */ +#if !defined(CH_CFG_ST_TIMEDELTA) +#define CH_CFG_ST_TIMEDELTA 2 +#endif + +/** @} */ + +/*===========================================================================*/ +/** + * @name Kernel parameters and options + * @{ + */ +/*===========================================================================*/ + +/** + * @brief Round robin interval. + * @details This constant is the number of system ticks allowed for the + * threads before preemption occurs. Setting this value to zero + * disables the preemption for threads with equal priority and the + * round robin becomes cooperative. Note that higher priority + * threads can still preempt, the kernel is always preemptive. + * @note Disabling the round robin preemption makes the kernel more compact + * and generally faster. + * @note The round robin preemption is not supported in tickless mode and + * must be set to zero in that case. + */ +#if !defined(CH_CFG_TIME_QUANTUM) +#define CH_CFG_TIME_QUANTUM 0 +#endif + +/** + * @brief Idle thread automatic spawn suppression. + * @details When this option is activated the function @p chSysInit() + * does not spawn the idle thread. The application @p main() + * function becomes the idle thread and must implement an + * infinite loop. + */ +#if !defined(CH_CFG_NO_IDLE_THREAD) +#define CH_CFG_NO_IDLE_THREAD FALSE +#endif + +/** @} */ + +/*===========================================================================*/ +/** + * @name Performance options + * @{ + */ +/*===========================================================================*/ + +/** + * @brief OS optimization. + * @details If enabled then time efficient rather than space efficient code + * is used when two possible implementations exist. + * + * @note This is not related to the compiler optimization options. + * @note The default is @p TRUE. + */ +#if !defined(CH_CFG_OPTIMIZE_SPEED) +#define CH_CFG_OPTIMIZE_SPEED TRUE +#endif + +/** @} */ + +/*===========================================================================*/ +/** + * @name Subsystem options + * @{ + */ +/*===========================================================================*/ + +/** + * @brief Time Measurement APIs. + * @details If enabled then the time measurement APIs are included in + * the kernel. + * + * @note The default is @p TRUE. + */ +#if !defined(CH_CFG_USE_TM) +#define CH_CFG_USE_TM FALSE +#endif + +/** + * @brief Threads registry APIs. + * @details If enabled then the registry APIs are included in the kernel. + * + * @note The default is @p TRUE. + */ +#if !defined(CH_CFG_USE_REGISTRY) +#define CH_CFG_USE_REGISTRY FALSE +#endif + +/** + * @brief Threads synchronization APIs. + * @details If enabled then the @p chThdWait() function is included in + * the kernel. + * + * @note The default is @p TRUE. + */ +#if !defined(CH_CFG_USE_WAITEXIT) +#define CH_CFG_USE_WAITEXIT FALSE +#endif + +/** + * @brief Semaphores APIs. + * @details If enabled then the Semaphores APIs are included in the kernel. + * + * @note The default is @p TRUE. + */ +#if !defined(CH_CFG_USE_SEMAPHORES) +#define CH_CFG_USE_SEMAPHORES TRUE +#endif + +/** + * @brief Semaphores queuing mode. + * @details If enabled then the threads are enqueued on semaphores by + * priority rather than in FIFO order. + * + * @note The default is @p FALSE. Enable this if you have special + * requirements. + * @note Requires @p CH_CFG_USE_SEMAPHORES. + */ +#if !defined(CH_CFG_USE_SEMAPHORES_PRIORITY) +#define CH_CFG_USE_SEMAPHORES_PRIORITY FALSE +#endif + +/** + * @brief Mutexes APIs. + * @details If enabled then the mutexes APIs are included in the kernel. + * + * @note The default is @p TRUE. + */ +#if !defined(CH_CFG_USE_MUTEXES) +#define CH_CFG_USE_MUTEXES TRUE +#endif + +/** + * @brief Enables recursive behavior on mutexes. + * @note Recursive mutexes are heavier and have an increased + * memory footprint. + * + * @note The default is @p FALSE. + * @note Requires @p CH_CFG_USE_MUTEXES. + */ +#if !defined(CH_CFG_USE_MUTEXES_RECURSIVE) +#define CH_CFG_USE_MUTEXES_RECURSIVE FALSE +#endif + +/** + * @brief Conditional Variables APIs. + * @details If enabled then the conditional variables APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_MUTEXES. + */ +#if !defined(CH_CFG_USE_CONDVARS) +#define CH_CFG_USE_CONDVARS FALSE +#endif + +/** + * @brief Conditional Variables APIs with timeout. + * @details If enabled then the conditional variables APIs with timeout + * specification are included in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_CONDVARS. + */ +#if !defined(CH_CFG_USE_CONDVARS_TIMEOUT) +#define CH_CFG_USE_CONDVARS_TIMEOUT TRUE +#endif + +/** + * @brief Events Flags APIs. + * @details If enabled then the event flags APIs are included in the kernel. + * + * @note The default is @p TRUE. + */ +#if !defined(CH_CFG_USE_EVENTS) +#define CH_CFG_USE_EVENTS TRUE +#endif + +/** + * @brief Events Flags APIs with timeout. + * @details If enabled then the events APIs with timeout specification + * are included in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_EVENTS. + */ +#if !defined(CH_CFG_USE_EVENTS_TIMEOUT) +#define CH_CFG_USE_EVENTS_TIMEOUT TRUE +#endif + +/** + * @brief Synchronous Messages APIs. + * @details If enabled then the synchronous messages APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + */ +#if !defined(CH_CFG_USE_MESSAGES) +#define CH_CFG_USE_MESSAGES FALSE +#endif + +/** + * @brief Synchronous Messages queuing mode. + * @details If enabled then messages are served by priority rather than in + * FIFO order. + * + * @note The default is @p FALSE. Enable this if you have special + * requirements. + * @note Requires @p CH_CFG_USE_MESSAGES. + */ +#if !defined(CH_CFG_USE_MESSAGES_PRIORITY) +#define CH_CFG_USE_MESSAGES_PRIORITY FALSE +#endif + +/** + * @brief Dynamic Threads APIs. + * @details If enabled then the dynamic threads creation APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_WAITEXIT. + * @note Requires @p CH_CFG_USE_HEAP and/or @p CH_CFG_USE_MEMPOOLS. + */ +#if !defined(CH_CFG_USE_DYNAMIC) +#define CH_CFG_USE_DYNAMIC FALSE +#endif + +/** @} */ + +/*===========================================================================*/ +/** + * @name OSLIB options + * @{ + */ +/*===========================================================================*/ + +/** + * @brief Mailboxes APIs. + * @details If enabled then the asynchronous messages (mailboxes) APIs are + * included in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_SEMAPHORES. + */ +#if !defined(CH_CFG_USE_MAILBOXES) +#define CH_CFG_USE_MAILBOXES FALSE +#endif + +/** + * @brief Core Memory Manager APIs. + * @details If enabled then the core memory manager APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + */ +#if !defined(CH_CFG_USE_MEMCORE) +#define CH_CFG_USE_MEMCORE TRUE +#endif + +/** + * @brief Managed RAM size. + * @details Size of the RAM area to be managed by the OS. If set to zero + * then the whole available RAM is used. The core memory is made + * available to the heap allocator and/or can be used directly through + * the simplified core memory allocator. + * + * @note In order to let the OS manage the whole RAM the linker script must + * provide the @p __heap_base__ and @p __heap_end__ symbols. + * @note Requires @p CH_CFG_USE_MEMCORE. + */ +#if !defined(CH_CFG_MEMCORE_SIZE) +#define CH_CFG_MEMCORE_SIZE 0 +#endif + +/** + * @brief Heap Allocator APIs. + * @details If enabled then the memory heap allocator APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + * @note Requires @p CH_CFG_USE_MEMCORE and either @p CH_CFG_USE_MUTEXES or + * @p CH_CFG_USE_SEMAPHORES. + * @note Mutexes are recommended. + */ +#if !defined(CH_CFG_USE_HEAP) +#define CH_CFG_USE_HEAP FALSE +#endif + +/** + * @brief Memory Pools Allocator APIs. + * @details If enabled then the memory pools allocator APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + */ +#if !defined(CH_CFG_USE_MEMPOOLS) +#define CH_CFG_USE_MEMPOOLS FALSE +#endif + +/** + * @brief Objects FIFOs APIs. + * @details If enabled then the objects FIFOs APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + */ +#if !defined(CH_CFG_USE_OBJ_FIFOS) +#define CH_CFG_USE_OBJ_FIFOS FALSE +#endif + +/** + * @brief Pipes APIs. + * @details If enabled then the pipes APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + */ +#if !defined(CH_CFG_USE_PIPES) +#define CH_CFG_USE_PIPES FALSE +#endif + +/** + * @brief Objects Caches APIs. + * @details If enabled then the objects caches APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + */ +#if !defined(CH_CFG_USE_OBJ_CACHES) +#define CH_CFG_USE_OBJ_CACHES FALSE +#endif + +/** + * @brief Delegate threads APIs. + * @details If enabled then the delegate threads APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + */ +#if !defined(CH_CFG_USE_DELEGATES) +#define CH_CFG_USE_DELEGATES FALSE +#endif + +/** + * @brief Jobs Queues APIs. + * @details If enabled then the jobs queues APIs are included + * in the kernel. + * + * @note The default is @p TRUE. + */ +#if !defined(CH_CFG_USE_JOBS) +#define CH_CFG_USE_JOBS FALSE +#endif + +/** @} */ + +/*===========================================================================*/ +/** + * @name Objects factory options + * @{ + */ +/*===========================================================================*/ + +/** + * @brief Objects Factory APIs. + * @details If enabled then the objects factory APIs are included in the + * kernel. + * + * @note The default is @p FALSE. + */ +#if !defined(CH_CFG_USE_FACTORY) +#define CH_CFG_USE_FACTORY FALSE +#endif + +/** + * @brief Maximum length for object names. + * @details If the specified length is zero then the name is stored by + * pointer but this could have unintended side effects. + */ +#if !defined(CH_CFG_FACTORY_MAX_NAMES_LENGTH) +#define CH_CFG_FACTORY_MAX_NAMES_LENGTH 8 +#endif + +/** + * @brief Enables the registry of generic objects. + */ +#if !defined(CH_CFG_FACTORY_OBJECTS_REGISTRY) +#define CH_CFG_FACTORY_OBJECTS_REGISTRY FALSE +#endif + +/** + * @brief Enables factory for generic buffers. + */ +#if !defined(CH_CFG_FACTORY_GENERIC_BUFFERS) +#define CH_CFG_FACTORY_GENERIC_BUFFERS FALSE +#endif + +/** + * @brief Enables factory for semaphores. + */ +#if !defined(CH_CFG_FACTORY_SEMAPHORES) +#define CH_CFG_FACTORY_SEMAPHORES FALSE +#endif + +/** + * @brief Enables factory for mailboxes. + */ +#if !defined(CH_CFG_FACTORY_MAILBOXES) +#define CH_CFG_FACTORY_MAILBOXES FALSE +#endif + +/** + * @brief Enables factory for objects FIFOs. + */ +#if !defined(CH_CFG_FACTORY_OBJ_FIFOS) +#define CH_CFG_FACTORY_OBJ_FIFOS FALSE +#endif + +/** + * @brief Enables factory for Pipes. + */ +#if !defined(CH_CFG_FACTORY_PIPES) || defined(__DOXYGEN__) +#define CH_CFG_FACTORY_PIPES FALSE +#endif + +/** @} */ + +/*===========================================================================*/ +/** + * @name Debug options + * @{ + */ +/*===========================================================================*/ + +/** + * @brief Debug option, kernel statistics. + * + * @note The default is @p FALSE. + */ +#if !defined(CH_DBG_STATISTICS) +#define CH_DBG_STATISTICS FALSE +#endif + +/** + * @brief Debug option, system state check. + * @details If enabled the correct call protocol for system APIs is checked + * at runtime. + * + * @note The default is @p FALSE. + */ +#if !defined(CH_DBG_SYSTEM_STATE_CHECK) +#define CH_DBG_SYSTEM_STATE_CHECK FALSE +#endif + +/** + * @brief Debug option, parameters checks. + * @details If enabled then the checks on the API functions input + * parameters are activated. + * + * @note The default is @p FALSE. + */ +#if !defined(CH_DBG_ENABLE_CHECKS) +#define CH_DBG_ENABLE_CHECKS FALSE +#endif + +/** + * @brief Debug option, consistency checks. + * @details If enabled then all the assertions in the kernel code are + * activated. This includes consistency checks inside the kernel, + * runtime anomalies and port-defined checks. + * + * @note The default is @p FALSE. + */ +#if !defined(CH_DBG_ENABLE_ASSERTS) +#define CH_DBG_ENABLE_ASSERTS FALSE +#endif + +/** + * @brief Debug option, trace buffer. + * @details If enabled then the trace buffer is activated. + * + * @note The default is @p CH_DBG_TRACE_MASK_DISABLED. + */ +#if !defined(CH_DBG_TRACE_MASK) +#define CH_DBG_TRACE_MASK CH_DBG_TRACE_MASK_DISABLED +#endif + +/** + * @brief Trace buffer entries. + * @note The trace buffer is only allocated if @p CH_DBG_TRACE_MASK is + * different from @p CH_DBG_TRACE_MASK_DISABLED. + */ +#if !defined(CH_DBG_TRACE_BUFFER_SIZE) +#define CH_DBG_TRACE_BUFFER_SIZE 128 +#endif + +/** + * @brief Debug option, stack checks. + * @details If enabled then a runtime stack check is performed. + * + * @note The default is @p FALSE. + * @note The stack check is performed in a architecture/port dependent way. + * It may not be implemented or some ports. + * @note The default failure mode is to halt the system with the global + * @p panic_msg variable set to @p NULL. + */ +#if !defined(CH_DBG_ENABLE_STACK_CHECK) +#define CH_DBG_ENABLE_STACK_CHECK FALSE +#endif + +/** + * @brief Debug option, stacks initialization. + * @details If enabled then the threads working area is filled with a byte + * value when a thread is created. This can be useful for the + * runtime measurement of the used stack. + * + * @note The default is @p FALSE. + */ +#if !defined(CH_DBG_FILL_THREADS) +#define CH_DBG_FILL_THREADS FALSE +#endif + +/** + * @brief Debug option, threads profiling. + * @details If enabled then a field is added to the @p thread_t structure that + * counts the system ticks occurred while executing the thread. + * + * @note The default is @p FALSE. + * @note This debug option is not currently compatible with the + * tickless mode. + */ +#if !defined(CH_DBG_THREADS_PROFILING) +#define CH_DBG_THREADS_PROFILING FALSE +#endif + +/** @} */ + +/*===========================================================================*/ +/** + * @name Kernel hooks + * @{ + */ +/*===========================================================================*/ + +/** + * @brief System structure extension. + * @details User fields added to the end of the @p ch_system_t structure. + */ +#define CH_CFG_SYSTEM_EXTRA_FIELDS \ + /* Add threads custom fields here.*/ + +/** + * @brief System initialization hook. + * @details User initialization code added to the @p chSysInit() function + * just before interrupts are enabled globally. + */ +#define CH_CFG_SYSTEM_INIT_HOOK() { \ + /* Add threads initialization code here.*/ \ +} + +/** + * @brief Threads descriptor structure extension. + * @details User fields added to the end of the @p thread_t structure. + */ +#define CH_CFG_THREAD_EXTRA_FIELDS \ + /* Add threads custom fields here.*/ + +/** + * @brief Threads initialization hook. + * @details User initialization code added to the @p _thread_init() function. + * + * @note It is invoked from within @p _thread_init() and implicitly from all + * the threads creation APIs. + */ +#define CH_CFG_THREAD_INIT_HOOK(tp) { \ + /* Add threads initialization code here.*/ \ +} + +/** + * @brief Threads finalization hook. + * @details User finalization code added to the @p chThdExit() API. + */ +#define CH_CFG_THREAD_EXIT_HOOK(tp) { \ + /* Add threads finalization code here.*/ \ +} + +/** + * @brief Context switch hook. + * @details This hook is invoked just before switching between threads. + */ +#define CH_CFG_CONTEXT_SWITCH_HOOK(ntp, otp) { \ + /* Context switch code here.*/ \ +} + +/** + * @brief ISR enter hook. + */ +#define CH_CFG_IRQ_PROLOGUE_HOOK() { \ + /* IRQ prologue code here.*/ \ +} + +/** + * @brief ISR exit hook. + */ +#define CH_CFG_IRQ_EPILOGUE_HOOK() { \ + /* IRQ epilogue code here.*/ \ +} + +/** + * @brief Idle thread enter hook. + * @note This hook is invoked within a critical zone, no OS functions + * should be invoked from here. + * @note This macro can be used to activate a power saving mode. + */ +#define CH_CFG_IDLE_ENTER_HOOK() { \ + /* Idle-enter code here.*/ \ +} + +/** + * @brief Idle thread leave hook. + * @note This hook is invoked within a critical zone, no OS functions + * should be invoked from here. + * @note This macro can be used to deactivate a power saving mode. + */ +#define CH_CFG_IDLE_LEAVE_HOOK() { \ + /* Idle-leave code here.*/ \ +} + +/** + * @brief Idle Loop hook. + * @details This hook is continuously invoked by the idle thread loop. + */ +#define CH_CFG_IDLE_LOOP_HOOK() { \ + /* Idle loop code here.*/ \ +} + +/** + * @brief System tick event hook. + * @details This hook is invoked in the system tick handler immediately + * after processing the virtual timers queue. + */ +#define CH_CFG_SYSTEM_TICK_HOOK() { \ + /* System tick event code here.*/ \ +} + +/** + * @brief System halt hook. + * @details This hook is invoked in case to a system halting error before + * the system is halted. + */ +#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \ + /* System halt code here.*/ \ +} + +/** + * @brief Trace hook. + * @details This hook is invoked each time a new record is written in the + * trace buffer. + */ +#define CH_CFG_TRACE_HOOK(tep) { \ + /* Trace code here.*/ \ +} + +/** @} */ + +/*===========================================================================*/ +/* Port-specific settings (override port settings defaulted in chcore.h). */ +/*===========================================================================*/ + +#endif /* CHCONF_H */ + +/** @} */ diff --git a/platforms/chibios/boards/common/configs/halconf.h b/platforms/chibios/boards/common/configs/halconf.h new file mode 100644 index 000000000000..c80f67ee27c1 --- /dev/null +++ b/platforms/chibios/boards/common/configs/halconf.h @@ -0,0 +1,531 @@ +/* + 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. +*/ + +/** + * @file templates/halconf.h + * @brief HAL configuration header. + * @details HAL configuration file, this file allows to enable or disable the + * various device drivers from your application. You may also use + * this file in order to override the device drivers default settings. + * + * @addtogroup HAL_CONF + * @{ + */ + +#ifndef HALCONF_H +#define HALCONF_H + +#define _CHIBIOS_HAL_CONF_ +#define _CHIBIOS_HAL_CONF_VER_7_1_ + +#include <mcuconf.h> + +/** + * @brief Enables the PAL subsystem. + */ +#if !defined(HAL_USE_PAL) || defined(__DOXYGEN__) +#define HAL_USE_PAL TRUE +#endif + +/** + * @brief Enables the ADC subsystem. + */ +#if !defined(HAL_USE_ADC) || defined(__DOXYGEN__) +#define HAL_USE_ADC FALSE +#endif + +/** + * @brief Enables the CAN subsystem. + */ +#if !defined(HAL_USE_CAN) || defined(__DOXYGEN__) +#define HAL_USE_CAN FALSE +#endif + +/** + * @brief Enables the cryptographic subsystem. + */ +#if !defined(HAL_USE_CRY) || defined(__DOXYGEN__) +#define HAL_USE_CRY FALSE +#endif + +/** + * @brief Enables the DAC subsystem. + */ +#if !defined(HAL_USE_DAC) || defined(__DOXYGEN__) +#define HAL_USE_DAC FALSE +#endif + +/** + * @brief Enables the EFlash subsystem. + */ +#if !defined(HAL_USE_EFL) || defined(__DOXYGEN__) +#define HAL_USE_EFL FALSE +#endif + +/** + * @brief Enables the GPT subsystem. + */ +#if !defined(HAL_USE_GPT) || defined(__DOXYGEN__) +#define HAL_USE_GPT FALSE +#endif + +/** + * @brief Enables the I2C subsystem. + */ +#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__) +#define HAL_USE_I2C FALSE +#endif + +/** + * @brief Enables the I2S subsystem. + */ +#if !defined(HAL_USE_I2S) || defined(__DOXYGEN__) +#define HAL_USE_I2S FALSE +#endif + +/** + * @brief Enables the ICU subsystem. + */ +#if !defined(HAL_USE_ICU) || defined(__DOXYGEN__) +#define HAL_USE_ICU FALSE +#endif + +/** + * @brief Enables the MAC subsystem. + */ +#if !defined(HAL_USE_MAC) || defined(__DOXYGEN__) +#define HAL_USE_MAC FALSE +#endif + +/** + * @brief Enables the MMC_SPI subsystem. + */ +#if !defined(HAL_USE_MMC_SPI) || defined(__DOXYGEN__) +#define HAL_USE_MMC_SPI FALSE +#endif + +/** + * @brief Enables the PWM subsystem. + */ +#if !defined(HAL_USE_PWM) || defined(__DOXYGEN__) +#define HAL_USE_PWM FALSE +#endif + +/** + * @brief Enables the RTC subsystem. + */ +#if !defined(HAL_USE_RTC) || defined(__DOXYGEN__) +#define HAL_USE_RTC FALSE +#endif + +/** + * @brief Enables the SDC subsystem. + */ +#if !defined(HAL_USE_SDC) || defined(__DOXYGEN__) +#define HAL_USE_SDC FALSE +#endif + +/** + * @brief Enables the SERIAL subsystem. + */ +#if !defined(HAL_USE_SERIAL) || defined(__DOXYGEN__) +#define HAL_USE_SERIAL FALSE +#endif + +/** + * @brief Enables the SERIAL over USB subsystem. + */ +#if !defined(HAL_USE_SERIAL_USB) || defined(__DOXYGEN__) +#define HAL_USE_SERIAL_USB FALSE +#endif + +/** + * @brief Enables the SIO subsystem. + */ +#if !defined(HAL_USE_SIO) || defined(__DOXYGEN__) +#define HAL_USE_SIO FALSE +#endif + +/** + * @brief Enables the SPI subsystem. + */ +#if !defined(HAL_USE_SPI) || defined(__DOXYGEN__) +#define HAL_USE_SPI FALSE +#endif + +/** + * @brief Enables the TRNG subsystem. + */ +#if !defined(HAL_USE_TRNG) || defined(__DOXYGEN__) +#define HAL_USE_TRNG FALSE +#endif + +/** + * @brief Enables the UART subsystem. + */ +#if !defined(HAL_USE_UART) || defined(__DOXYGEN__) +#define HAL_USE_UART FALSE +#endif + +/** + * @brief Enables the USB subsystem. + */ +#if !defined(HAL_USE_USB) || defined(__DOXYGEN__) +#define HAL_USE_USB TRUE +#endif + +/** + * @brief Enables the WDG subsystem. + */ +#if !defined(HAL_USE_WDG) || defined(__DOXYGEN__) +#define HAL_USE_WDG FALSE +#endif + +/** + * @brief Enables the WSPI subsystem. + */ +#if !defined(HAL_USE_WSPI) || defined(__DOXYGEN__) +#define HAL_USE_WSPI FALSE +#endif + +/*===========================================================================*/ +/* PAL driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables synchronous APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(PAL_USE_CALLBACKS) || defined(__DOXYGEN__) +#define PAL_USE_CALLBACKS FALSE +#endif + +/** + * @brief Enables synchronous APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(PAL_USE_WAIT) || defined(__DOXYGEN__) +#define PAL_USE_WAIT FALSE +#endif + +/*===========================================================================*/ +/* ADC driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables synchronous APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(ADC_USE_WAIT) || defined(__DOXYGEN__) +#define ADC_USE_WAIT TRUE +#endif + +/** + * @brief Enables the @p adcAcquireBus() and @p adcReleaseBus() APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(ADC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) +#define ADC_USE_MUTUAL_EXCLUSION TRUE +#endif + +/*===========================================================================*/ +/* CAN driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Sleep mode related APIs inclusion switch. + */ +#if !defined(CAN_USE_SLEEP_MODE) || defined(__DOXYGEN__) +#define CAN_USE_SLEEP_MODE TRUE +#endif + +/** + * @brief Enforces the driver to use direct callbacks rather than OSAL events. + */ +#if !defined(CAN_ENFORCE_USE_CALLBACKS) || defined(__DOXYGEN__) +#define CAN_ENFORCE_USE_CALLBACKS FALSE +#endif + +/*===========================================================================*/ +/* CRY driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables the SW fall-back of the cryptographic driver. + * @details When enabled, this option, activates a fall-back software + * implementation for algorithms not supported by the underlying + * hardware. + * @note Fall-back implementations may not be present for all algorithms. + */ +#if !defined(HAL_CRY_USE_FALLBACK) || defined(__DOXYGEN__) +#define HAL_CRY_USE_FALLBACK FALSE +#endif + +/** + * @brief Makes the driver forcibly use the fall-back implementations. + */ +#if !defined(HAL_CRY_ENFORCE_FALLBACK) || defined(__DOXYGEN__) +#define HAL_CRY_ENFORCE_FALLBACK FALSE +#endif + +/*===========================================================================*/ +/* DAC driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables synchronous APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(DAC_USE_WAIT) || defined(__DOXYGEN__) +#define DAC_USE_WAIT TRUE +#endif + +/** + * @brief Enables the @p dacAcquireBus() and @p dacReleaseBus() APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(DAC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) +#define DAC_USE_MUTUAL_EXCLUSION TRUE +#endif + +/*===========================================================================*/ +/* I2C driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables the mutual exclusion APIs on the I2C bus. + */ +#if !defined(I2C_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) +#define I2C_USE_MUTUAL_EXCLUSION TRUE +#endif + +/*===========================================================================*/ +/* MAC driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables the zero-copy API. + */ +#if !defined(MAC_USE_ZERO_COPY) || defined(__DOXYGEN__) +#define MAC_USE_ZERO_COPY FALSE +#endif + +/** + * @brief Enables an event sources for incoming packets. + */ +#if !defined(MAC_USE_EVENTS) || defined(__DOXYGEN__) +#define MAC_USE_EVENTS TRUE +#endif + +/*===========================================================================*/ +/* MMC_SPI driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Delays insertions. + * @details If enabled this options inserts delays into the MMC waiting + * routines releasing some extra CPU time for the threads with + * lower priority, this may slow down the driver a bit however. + * This option is recommended also if the SPI driver does not + * use a DMA channel and heavily loads the CPU. + */ +#if !defined(MMC_NICE_WAITING) || defined(__DOXYGEN__) +#define MMC_NICE_WAITING TRUE +#endif + +/*===========================================================================*/ +/* SDC driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Number of initialization attempts before rejecting the card. + * @note Attempts are performed at 10mS intervals. + */ +#if !defined(SDC_INIT_RETRY) || defined(__DOXYGEN__) +#define SDC_INIT_RETRY 100 +#endif + +/** + * @brief Include support for MMC cards. + * @note MMC support is not yet implemented so this option must be kept + * at @p FALSE. + */ +#if !defined(SDC_MMC_SUPPORT) || defined(__DOXYGEN__) +#define SDC_MMC_SUPPORT FALSE +#endif + +/** + * @brief Delays insertions. + * @details If enabled this options inserts delays into the MMC waiting + * routines releasing some extra CPU time for the threads with + * lower priority, this may slow down the driver a bit however. + */ +#if !defined(SDC_NICE_WAITING) || defined(__DOXYGEN__) +#define SDC_NICE_WAITING TRUE +#endif + +/** + * @brief OCR initialization constant for V20 cards. + */ +#if !defined(SDC_INIT_OCR_V20) || defined(__DOXYGEN__) +#define SDC_INIT_OCR_V20 0x50FF8000U +#endif + +/** + * @brief OCR initialization constant for non-V20 cards. + */ +#if !defined(SDC_INIT_OCR) || defined(__DOXYGEN__) +#define SDC_INIT_OCR 0x80100000U +#endif + +/*===========================================================================*/ +/* SERIAL driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Default bit rate. + * @details Configuration parameter, this is the baud rate selected for the + * default configuration. + */ +#if !defined(SERIAL_DEFAULT_BITRATE) || defined(__DOXYGEN__) +#define SERIAL_DEFAULT_BITRATE 38400 +#endif + +/** + * @brief Serial buffers size. + * @details Configuration parameter, you can change the depth of the queue + * buffers depending on the requirements of your application. + * @note The default is 16 bytes for both the transmission and receive + * buffers. + */ +#if !defined(SERIAL_BUFFERS_SIZE) || defined(__DOXYGEN__) +#define SERIAL_BUFFERS_SIZE 128 +#endif + +/*===========================================================================*/ +/* SERIAL_USB driver related setting. */ +/*===========================================================================*/ + +/** + * @brief Serial over USB buffers size. + * @details Configuration parameter, the buffer size must be a multiple of + * the USB data endpoint maximum packet size. + * @note The default is 256 bytes for both the transmission and receive + * buffers. + */ +#if !defined(SERIAL_USB_BUFFERS_SIZE) || defined(__DOXYGEN__) +#define SERIAL_USB_BUFFERS_SIZE 1 +#endif + +/** + * @brief Serial over USB number of buffers. + * @note The default is 2 buffers. + */ +#if !defined(SERIAL_USB_BUFFERS_NUMBER) || defined(__DOXYGEN__) +#define SERIAL_USB_BUFFERS_NUMBER 2 +#endif + +/*===========================================================================*/ +/* SPI driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables synchronous APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(SPI_USE_WAIT) || defined(__DOXYGEN__) +#define SPI_USE_WAIT TRUE +#endif + +/** + * @brief Enables circular transfers APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(SPI_USE_CIRCULAR) || defined(__DOXYGEN__) +#define SPI_USE_CIRCULAR FALSE +#endif + +/** + * @brief Enables the @p spiAcquireBus() and @p spiReleaseBus() APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(SPI_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) +#define SPI_USE_MUTUAL_EXCLUSION TRUE +#endif + +/** + * @brief Handling method for SPI CS line. + * @note Disabling this option saves both code and data space. + */ +#if !defined(SPI_SELECT_MODE) || defined(__DOXYGEN__) +#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD +#endif + +/*===========================================================================*/ +/* UART driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables synchronous APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(UART_USE_WAIT) || defined(__DOXYGEN__) +#define UART_USE_WAIT FALSE +#endif + +/** + * @brief Enables the @p uartAcquireBus() and @p uartReleaseBus() APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(UART_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) +#define UART_USE_MUTUAL_EXCLUSION FALSE +#endif + +/*===========================================================================*/ +/* USB driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables synchronous APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(USB_USE_WAIT) || defined(__DOXYGEN__) +#define USB_USE_WAIT TRUE +#endif + +/*===========================================================================*/ +/* WSPI driver related settings. */ +/*===========================================================================*/ + +/** + * @brief Enables synchronous APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(WSPI_USE_WAIT) || defined(__DOXYGEN__) +#define WSPI_USE_WAIT TRUE +#endif + +/** + * @brief Enables the @p wspiAcquireBus() and @p wspiReleaseBus() APIs. + * @note Disabling this option saves both code and data space. + */ +#if !defined(WSPI_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) +#define WSPI_USE_MUTUAL_EXCLUSION TRUE +#endif + +#endif /* HALCONF_H */ + +/** @} */ diff --git a/platforms/chibios/common/ld/MKL26Z64.ld b/platforms/chibios/boards/common/ld/MKL26Z64.ld similarity index 100% rename from platforms/chibios/common/ld/MKL26Z64.ld rename to platforms/chibios/boards/common/ld/MKL26Z64.ld diff --git a/platforms/chibios/boards/common/ld/STM32F401xC.ld b/platforms/chibios/boards/common/ld/STM32F401xC.ld new file mode 100644 index 000000000000..8fae66cec9aa --- /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 000000000000..69af7ed71ec8 --- /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 000000000000..b7d0baa21030 --- /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 000000000000..aea8084b5167 --- /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/boards/common/ld/STM32L412xB.ld b/platforms/chibios/boards/common/ld/STM32L412xB.ld new file mode 100644 index 000000000000..5718d6bc7131 --- /dev/null +++ b/platforms/chibios/boards/common/ld/STM32L412xB.ld @@ -0,0 +1,85 @@ +/* + ChibiOS - Copyright (C) 2006..2016 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. +*/ + +/* + * STM32L412xB memory setup. + */ +MEMORY +{ + flash0 : org = 0x08000000, len = 128k + flash1 : org = 0x00000000, len = 0 + flash2 : org = 0x00000000, len = 0 + flash3 : org = 0x00000000, len = 0 + flash4 : org = 0x00000000, len = 0 + flash5 : org = 0x00000000, len = 0 + flash6 : org = 0x00000000, len = 0 + flash7 : org = 0x00000000, len = 0 + ram0 : org = 0x20000000, len = 32k + ram1 : org = 0x00000000, len = 0 + ram2 : org = 0x00000000, len = 0 + ram3 : org = 0x00000000, len = 0 + ram4 : org = 0x00000000, len = 0 + ram5 : org = 0x00000000, len = 0 + ram6 : org = 0x00000000, len = 0 + ram7 : 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", flash0); +REGION_ALIAS("XTORS_FLASH_LMA", flash0); + +/* Flash region to be used for code text.*/ +REGION_ALIAS("TEXT_FLASH", flash0); +REGION_ALIAS("TEXT_FLASH_LMA", flash0); + +/* Flash region to be used for read only data.*/ +REGION_ALIAS("RODATA_FLASH", flash0); +REGION_ALIAS("RODATA_FLASH_LMA", flash0); + +/* Flash region to be used for various.*/ +REGION_ALIAS("VARIOUS_FLASH", flash0); +REGION_ALIAS("VARIOUS_FLASH_LMA", flash0); + +/* Flash region to be used for RAM(n) initialization data.*/ +REGION_ALIAS("RAM_INIT_FLASH_LMA", flash0); + +/* 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", flash0); + +/* 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/keyboard-config-templates/board.h b/platforms/chibios/boards/keyboard-config-templates/board.h similarity index 100% rename from platforms/chibios/keyboard-config-templates/board.h rename to platforms/chibios/boards/keyboard-config-templates/board.h diff --git a/platforms/chibios/keyboard-config-templates/chconf.h b/platforms/chibios/boards/keyboard-config-templates/chconf.h similarity index 100% rename from platforms/chibios/keyboard-config-templates/chconf.h rename to platforms/chibios/boards/keyboard-config-templates/chconf.h diff --git a/platforms/chibios/keyboard-config-templates/halconf.h b/platforms/chibios/boards/keyboard-config-templates/halconf.h similarity index 100% rename from platforms/chibios/keyboard-config-templates/halconf.h rename to platforms/chibios/boards/keyboard-config-templates/halconf.h diff --git a/platforms/chibios/keyboard-config-templates/mcuconf.h b/platforms/chibios/boards/keyboard-config-templates/mcuconf.h similarity index 100% rename from platforms/chibios/keyboard-config-templates/mcuconf.h rename to platforms/chibios/boards/keyboard-config-templates/mcuconf.h diff --git a/tmk_core/common/chibios/bootloader.c b/platforms/chibios/bootloader.c similarity index 78% rename from tmk_core/common/chibios/bootloader.c rename to platforms/chibios/bootloader.c index 11f7abf432a4..5cadadeeeb52 100644 --- a/tmk_core/common/chibios/bootloader.c +++ b/platforms/chibios/bootloader.c @@ -95,7 +95,29 @@ void enter_bootloader_mode_if_requested(void) { } } -#elif defined(KL2x) || defined(K20x) || defined(MK66F18) // STM32_BOOTLOADER_DUAL_BANK // STM32_BOOTLOADER_ADDRESS +#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 */ # if defined(BOOTLOADER_KIIBOHD) @@ -103,7 +125,8 @@ void enter_bootloader_mode_if_requested(void) { # define SCB_AIRCR_VECTKEY_WRITEMAGIC 0x05FA0000 const uint8_t sys_reset_to_loader_magic[] = "\xff\x00\x7fRESET TO LOADER\x7f\x00\xff"; __attribute__((weak)) void bootloader_jump(void) { - __builtin_memcpy((void *)VBAT, (const void *)sys_reset_to_loader_magic, sizeof(sys_reset_to_loader_magic)); + void *volatile vbat = (void *)VBAT; + __builtin_memcpy(vbat, (const void *)sys_reset_to_loader_magic, sizeof(sys_reset_to_loader_magic)); // request reset SCB->AIRCR = SCB_AIRCR_VECTKEY_WRITEMAGIC | SCB_AIRCR_SYSRESETREQ_Msk; } diff --git a/platforms/chibios/chibios_config.h b/platforms/chibios/chibios_config.h new file mode 100644 index 000000000000..4e3573660676 --- /dev/null +++ b/platforms/chibios/chibios_config.h @@ -0,0 +1,90 @@ +/* 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 + +#ifndef USB_VBUS_PIN +# define SPLIT_USB_DETECT // Force this on when dedicated pin is not used +#endif + +// 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 + +// WB32 compatibility +#if defined(MCU_WB32) +# define CPU_CLOCK WB32_MAINCLK + +# if defined(WB32F3G71xx) +# define PAL_OUTPUT_TYPE_OPENDRAIN PAL_WB32_OTYPE_OPENDRAIN +# define PAL_OUTPUT_TYPE_PUSHPULL PAL_WB32_OTYPE_PUSHPULL +# define PAL_OUTPUT_SPEED_HIGHEST PAL_WB32_OSPEED_HIGH +# define PAL_PUPDR_FLOATING PAL_WB32_PUPDR_FLOATING +# endif +#endif + +#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 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(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/platforms/chibios/common/configs/chconf.h b/platforms/chibios/common/configs/chconf.h deleted file mode 100644 index 44327a82d719..000000000000 --- a/platforms/chibios/common/configs/chconf.h +++ /dev/null @@ -1,756 +0,0 @@ -/* - 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. -*/ - -/** - * @file rt/templates/chconf.h - * @brief Configuration file template. - * @details A copy of this file must be placed in each project directory, it - * contains the application specific kernel settings. - * - * @addtogroup config - * @details Kernel related settings and hooks. - * @{ - */ - -#ifndef CHCONF_H -#define CHCONF_H - -#define _CHIBIOS_RT_CONF_ -#define _CHIBIOS_RT_CONF_VER_6_1_ - -/*===========================================================================*/ -/** - * @name System timers settings - * @{ - */ -/*===========================================================================*/ - -/** - * @brief System time counter resolution. - * @note Allowed values are 16 or 32 bits. - */ -#if !defined(CH_CFG_ST_RESOLUTION) -#define CH_CFG_ST_RESOLUTION 32 -#endif - -/** - * @brief System tick frequency. - * @details Frequency of the system timer that drives the system ticks. This - * setting also defines the system tick time unit. - */ -#if !defined(CH_CFG_ST_FREQUENCY) -#define CH_CFG_ST_FREQUENCY 100000 -#endif - -/** - * @brief Time intervals data size. - * @note Allowed values are 16, 32 or 64 bits. - */ -#if !defined(CH_CFG_INTERVALS_SIZE) -#define CH_CFG_INTERVALS_SIZE 32 -#endif - -/** - * @brief Time types data size. - * @note Allowed values are 16 or 32 bits. - */ -#if !defined(CH_CFG_TIME_TYPES_SIZE) -#define CH_CFG_TIME_TYPES_SIZE 32 -#endif - -/** - * @brief Time delta constant for the tick-less mode. - * @note If this value is zero then the system uses the classic - * periodic tick. This value represents the minimum number - * of ticks that is safe to specify in a timeout directive. - * The value one is not valid, timeouts are rounded up to - * this value. - */ -#if !defined(CH_CFG_ST_TIMEDELTA) -#define CH_CFG_ST_TIMEDELTA 2 -#endif - -/** @} */ - -/*===========================================================================*/ -/** - * @name Kernel parameters and options - * @{ - */ -/*===========================================================================*/ - -/** - * @brief Round robin interval. - * @details This constant is the number of system ticks allowed for the - * threads before preemption occurs. Setting this value to zero - * disables the preemption for threads with equal priority and the - * round robin becomes cooperative. Note that higher priority - * threads can still preempt, the kernel is always preemptive. - * @note Disabling the round robin preemption makes the kernel more compact - * and generally faster. - * @note The round robin preemption is not supported in tickless mode and - * must be set to zero in that case. - */ -#if !defined(CH_CFG_TIME_QUANTUM) -#define CH_CFG_TIME_QUANTUM 0 -#endif - -/** - * @brief Idle thread automatic spawn suppression. - * @details When this option is activated the function @p chSysInit() - * does not spawn the idle thread. The application @p main() - * function becomes the idle thread and must implement an - * infinite loop. - */ -#if !defined(CH_CFG_NO_IDLE_THREAD) -#define CH_CFG_NO_IDLE_THREAD FALSE -#endif - -/** @} */ - -/*===========================================================================*/ -/** - * @name Performance options - * @{ - */ -/*===========================================================================*/ - -/** - * @brief OS optimization. - * @details If enabled then time efficient rather than space efficient code - * is used when two possible implementations exist. - * - * @note This is not related to the compiler optimization options. - * @note The default is @p TRUE. - */ -#if !defined(CH_CFG_OPTIMIZE_SPEED) -#define CH_CFG_OPTIMIZE_SPEED TRUE -#endif - -/** @} */ - -/*===========================================================================*/ -/** - * @name Subsystem options - * @{ - */ -/*===========================================================================*/ - -/** - * @brief Time Measurement APIs. - * @details If enabled then the time measurement APIs are included in - * the kernel. - * - * @note The default is @p TRUE. - */ -#if !defined(CH_CFG_USE_TM) -#define CH_CFG_USE_TM FALSE -#endif - -/** - * @brief Threads registry APIs. - * @details If enabled then the registry APIs are included in the kernel. - * - * @note The default is @p TRUE. - */ -#if !defined(CH_CFG_USE_REGISTRY) -#define CH_CFG_USE_REGISTRY FALSE -#endif - -/** - * @brief Threads synchronization APIs. - * @details If enabled then the @p chThdWait() function is included in - * the kernel. - * - * @note The default is @p TRUE. - */ -#if !defined(CH_CFG_USE_WAITEXIT) -#define CH_CFG_USE_WAITEXIT FALSE -#endif - -/** - * @brief Semaphores APIs. - * @details If enabled then the Semaphores APIs are included in the kernel. - * - * @note The default is @p TRUE. - */ -#if !defined(CH_CFG_USE_SEMAPHORES) -#define CH_CFG_USE_SEMAPHORES TRUE -#endif - -/** - * @brief Semaphores queuing mode. - * @details If enabled then the threads are enqueued on semaphores by - * priority rather than in FIFO order. - * - * @note The default is @p FALSE. Enable this if you have special - * requirements. - * @note Requires @p CH_CFG_USE_SEMAPHORES. - */ -#if !defined(CH_CFG_USE_SEMAPHORES_PRIORITY) -#define CH_CFG_USE_SEMAPHORES_PRIORITY FALSE -#endif - -/** - * @brief Mutexes APIs. - * @details If enabled then the mutexes APIs are included in the kernel. - * - * @note The default is @p TRUE. - */ -#if !defined(CH_CFG_USE_MUTEXES) -#define CH_CFG_USE_MUTEXES TRUE -#endif - -/** - * @brief Enables recursive behavior on mutexes. - * @note Recursive mutexes are heavier and have an increased - * memory footprint. - * - * @note The default is @p FALSE. - * @note Requires @p CH_CFG_USE_MUTEXES. - */ -#if !defined(CH_CFG_USE_MUTEXES_RECURSIVE) -#define CH_CFG_USE_MUTEXES_RECURSIVE FALSE -#endif - -/** - * @brief Conditional Variables APIs. - * @details If enabled then the conditional variables APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - * @note Requires @p CH_CFG_USE_MUTEXES. - */ -#if !defined(CH_CFG_USE_CONDVARS) -#define CH_CFG_USE_CONDVARS FALSE -#endif - -/** - * @brief Conditional Variables APIs with timeout. - * @details If enabled then the conditional variables APIs with timeout - * specification are included in the kernel. - * - * @note The default is @p TRUE. - * @note Requires @p CH_CFG_USE_CONDVARS. - */ -#if !defined(CH_CFG_USE_CONDVARS_TIMEOUT) -#define CH_CFG_USE_CONDVARS_TIMEOUT TRUE -#endif - -/** - * @brief Events Flags APIs. - * @details If enabled then the event flags APIs are included in the kernel. - * - * @note The default is @p TRUE. - */ -#if !defined(CH_CFG_USE_EVENTS) -#define CH_CFG_USE_EVENTS TRUE -#endif - -/** - * @brief Events Flags APIs with timeout. - * @details If enabled then the events APIs with timeout specification - * are included in the kernel. - * - * @note The default is @p TRUE. - * @note Requires @p CH_CFG_USE_EVENTS. - */ -#if !defined(CH_CFG_USE_EVENTS_TIMEOUT) -#define CH_CFG_USE_EVENTS_TIMEOUT TRUE -#endif - -/** - * @brief Synchronous Messages APIs. - * @details If enabled then the synchronous messages APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - */ -#if !defined(CH_CFG_USE_MESSAGES) -#define CH_CFG_USE_MESSAGES FALSE -#endif - -/** - * @brief Synchronous Messages queuing mode. - * @details If enabled then messages are served by priority rather than in - * FIFO order. - * - * @note The default is @p FALSE. Enable this if you have special - * requirements. - * @note Requires @p CH_CFG_USE_MESSAGES. - */ -#if !defined(CH_CFG_USE_MESSAGES_PRIORITY) -#define CH_CFG_USE_MESSAGES_PRIORITY FALSE -#endif - -/** - * @brief Dynamic Threads APIs. - * @details If enabled then the dynamic threads creation APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - * @note Requires @p CH_CFG_USE_WAITEXIT. - * @note Requires @p CH_CFG_USE_HEAP and/or @p CH_CFG_USE_MEMPOOLS. - */ -#if !defined(CH_CFG_USE_DYNAMIC) -#define CH_CFG_USE_DYNAMIC FALSE -#endif - -/** @} */ - -/*===========================================================================*/ -/** - * @name OSLIB options - * @{ - */ -/*===========================================================================*/ - -/** - * @brief Mailboxes APIs. - * @details If enabled then the asynchronous messages (mailboxes) APIs are - * included in the kernel. - * - * @note The default is @p TRUE. - * @note Requires @p CH_CFG_USE_SEMAPHORES. - */ -#if !defined(CH_CFG_USE_MAILBOXES) -#define CH_CFG_USE_MAILBOXES FALSE -#endif - -/** - * @brief Core Memory Manager APIs. - * @details If enabled then the core memory manager APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - */ -#if !defined(CH_CFG_USE_MEMCORE) -#define CH_CFG_USE_MEMCORE TRUE -#endif - -/** - * @brief Managed RAM size. - * @details Size of the RAM area to be managed by the OS. If set to zero - * then the whole available RAM is used. The core memory is made - * available to the heap allocator and/or can be used directly through - * the simplified core memory allocator. - * - * @note In order to let the OS manage the whole RAM the linker script must - * provide the @p __heap_base__ and @p __heap_end__ symbols. - * @note Requires @p CH_CFG_USE_MEMCORE. - */ -#if !defined(CH_CFG_MEMCORE_SIZE) -#define CH_CFG_MEMCORE_SIZE 0 -#endif - -/** - * @brief Heap Allocator APIs. - * @details If enabled then the memory heap allocator APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - * @note Requires @p CH_CFG_USE_MEMCORE and either @p CH_CFG_USE_MUTEXES or - * @p CH_CFG_USE_SEMAPHORES. - * @note Mutexes are recommended. - */ -#if !defined(CH_CFG_USE_HEAP) -#define CH_CFG_USE_HEAP FALSE -#endif - -/** - * @brief Memory Pools Allocator APIs. - * @details If enabled then the memory pools allocator APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - */ -#if !defined(CH_CFG_USE_MEMPOOLS) -#define CH_CFG_USE_MEMPOOLS FALSE -#endif - -/** - * @brief Objects FIFOs APIs. - * @details If enabled then the objects FIFOs APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - */ -#if !defined(CH_CFG_USE_OBJ_FIFOS) -#define CH_CFG_USE_OBJ_FIFOS FALSE -#endif - -/** - * @brief Pipes APIs. - * @details If enabled then the pipes APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - */ -#if !defined(CH_CFG_USE_PIPES) -#define CH_CFG_USE_PIPES FALSE -#endif - -/** - * @brief Objects Caches APIs. - * @details If enabled then the objects caches APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - */ -#if !defined(CH_CFG_USE_OBJ_CACHES) -#define CH_CFG_USE_OBJ_CACHES FALSE -#endif - -/** - * @brief Delegate threads APIs. - * @details If enabled then the delegate threads APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - */ -#if !defined(CH_CFG_USE_DELEGATES) -#define CH_CFG_USE_DELEGATES FALSE -#endif - -/** - * @brief Jobs Queues APIs. - * @details If enabled then the jobs queues APIs are included - * in the kernel. - * - * @note The default is @p TRUE. - */ -#if !defined(CH_CFG_USE_JOBS) -#define CH_CFG_USE_JOBS FALSE -#endif - -/** @} */ - -/*===========================================================================*/ -/** - * @name Objects factory options - * @{ - */ -/*===========================================================================*/ - -/** - * @brief Objects Factory APIs. - * @details If enabled then the objects factory APIs are included in the - * kernel. - * - * @note The default is @p FALSE. - */ -#if !defined(CH_CFG_USE_FACTORY) -#define CH_CFG_USE_FACTORY FALSE -#endif - -/** - * @brief Maximum length for object names. - * @details If the specified length is zero then the name is stored by - * pointer but this could have unintended side effects. - */ -#if !defined(CH_CFG_FACTORY_MAX_NAMES_LENGTH) -#define CH_CFG_FACTORY_MAX_NAMES_LENGTH 8 -#endif - -/** - * @brief Enables the registry of generic objects. - */ -#if !defined(CH_CFG_FACTORY_OBJECTS_REGISTRY) -#define CH_CFG_FACTORY_OBJECTS_REGISTRY FALSE -#endif - -/** - * @brief Enables factory for generic buffers. - */ -#if !defined(CH_CFG_FACTORY_GENERIC_BUFFERS) -#define CH_CFG_FACTORY_GENERIC_BUFFERS FALSE -#endif - -/** - * @brief Enables factory for semaphores. - */ -#if !defined(CH_CFG_FACTORY_SEMAPHORES) -#define CH_CFG_FACTORY_SEMAPHORES FALSE -#endif - -/** - * @brief Enables factory for mailboxes. - */ -#if !defined(CH_CFG_FACTORY_MAILBOXES) -#define CH_CFG_FACTORY_MAILBOXES FALSE -#endif - -/** - * @brief Enables factory for objects FIFOs. - */ -#if !defined(CH_CFG_FACTORY_OBJ_FIFOS) -#define CH_CFG_FACTORY_OBJ_FIFOS FALSE -#endif - -/** - * @brief Enables factory for Pipes. - */ -#if !defined(CH_CFG_FACTORY_PIPES) || defined(__DOXYGEN__) -#define CH_CFG_FACTORY_PIPES FALSE -#endif - -/** @} */ - -/*===========================================================================*/ -/** - * @name Debug options - * @{ - */ -/*===========================================================================*/ - -/** - * @brief Debug option, kernel statistics. - * - * @note The default is @p FALSE. - */ -#if !defined(CH_DBG_STATISTICS) -#define CH_DBG_STATISTICS FALSE -#endif - -/** - * @brief Debug option, system state check. - * @details If enabled the correct call protocol for system APIs is checked - * at runtime. - * - * @note The default is @p FALSE. - */ -#if !defined(CH_DBG_SYSTEM_STATE_CHECK) -#define CH_DBG_SYSTEM_STATE_CHECK FALSE -#endif - -/** - * @brief Debug option, parameters checks. - * @details If enabled then the checks on the API functions input - * parameters are activated. - * - * @note The default is @p FALSE. - */ -#if !defined(CH_DBG_ENABLE_CHECKS) -#define CH_DBG_ENABLE_CHECKS FALSE -#endif - -/** - * @brief Debug option, consistency checks. - * @details If enabled then all the assertions in the kernel code are - * activated. This includes consistency checks inside the kernel, - * runtime anomalies and port-defined checks. - * - * @note The default is @p FALSE. - */ -#if !defined(CH_DBG_ENABLE_ASSERTS) -#define CH_DBG_ENABLE_ASSERTS FALSE -#endif - -/** - * @brief Debug option, trace buffer. - * @details If enabled then the trace buffer is activated. - * - * @note The default is @p CH_DBG_TRACE_MASK_DISABLED. - */ -#if !defined(CH_DBG_TRACE_MASK) -#define CH_DBG_TRACE_MASK CH_DBG_TRACE_MASK_DISABLED -#endif - -/** - * @brief Trace buffer entries. - * @note The trace buffer is only allocated if @p CH_DBG_TRACE_MASK is - * different from @p CH_DBG_TRACE_MASK_DISABLED. - */ -#if !defined(CH_DBG_TRACE_BUFFER_SIZE) -#define CH_DBG_TRACE_BUFFER_SIZE 128 -#endif - -/** - * @brief Debug option, stack checks. - * @details If enabled then a runtime stack check is performed. - * - * @note The default is @p FALSE. - * @note The stack check is performed in a architecture/port dependent way. - * It may not be implemented or some ports. - * @note The default failure mode is to halt the system with the global - * @p panic_msg variable set to @p NULL. - */ -#if !defined(CH_DBG_ENABLE_STACK_CHECK) -#define CH_DBG_ENABLE_STACK_CHECK FALSE -#endif - -/** - * @brief Debug option, stacks initialization. - * @details If enabled then the threads working area is filled with a byte - * value when a thread is created. This can be useful for the - * runtime measurement of the used stack. - * - * @note The default is @p FALSE. - */ -#if !defined(CH_DBG_FILL_THREADS) -#define CH_DBG_FILL_THREADS FALSE -#endif - -/** - * @brief Debug option, threads profiling. - * @details If enabled then a field is added to the @p thread_t structure that - * counts the system ticks occurred while executing the thread. - * - * @note The default is @p FALSE. - * @note This debug option is not currently compatible with the - * tickless mode. - */ -#if !defined(CH_DBG_THREADS_PROFILING) -#define CH_DBG_THREADS_PROFILING FALSE -#endif - -/** @} */ - -/*===========================================================================*/ -/** - * @name Kernel hooks - * @{ - */ -/*===========================================================================*/ - -/** - * @brief System structure extension. - * @details User fields added to the end of the @p ch_system_t structure. - */ -#define CH_CFG_SYSTEM_EXTRA_FIELDS \ - /* Add threads custom fields here.*/ - -/** - * @brief System initialization hook. - * @details User initialization code added to the @p chSysInit() function - * just before interrupts are enabled globally. - */ -#define CH_CFG_SYSTEM_INIT_HOOK() { \ - /* Add threads initialization code here.*/ \ -} - -/** - * @brief Threads descriptor structure extension. - * @details User fields added to the end of the @p thread_t structure. - */ -#define CH_CFG_THREAD_EXTRA_FIELDS \ - /* Add threads custom fields here.*/ - -/** - * @brief Threads initialization hook. - * @details User initialization code added to the @p _thread_init() function. - * - * @note It is invoked from within @p _thread_init() and implicitly from all - * the threads creation APIs. - */ -#define CH_CFG_THREAD_INIT_HOOK(tp) { \ - /* Add threads initialization code here.*/ \ -} - -/** - * @brief Threads finalization hook. - * @details User finalization code added to the @p chThdExit() API. - */ -#define CH_CFG_THREAD_EXIT_HOOK(tp) { \ - /* Add threads finalization code here.*/ \ -} - -/** - * @brief Context switch hook. - * @details This hook is invoked just before switching between threads. - */ -#define CH_CFG_CONTEXT_SWITCH_HOOK(ntp, otp) { \ - /* Context switch code here.*/ \ -} - -/** - * @brief ISR enter hook. - */ -#define CH_CFG_IRQ_PROLOGUE_HOOK() { \ - /* IRQ prologue code here.*/ \ -} - -/** - * @brief ISR exit hook. - */ -#define CH_CFG_IRQ_EPILOGUE_HOOK() { \ - /* IRQ epilogue code here.*/ \ -} - -/** - * @brief Idle thread enter hook. - * @note This hook is invoked within a critical zone, no OS functions - * should be invoked from here. - * @note This macro can be used to activate a power saving mode. - */ -#define CH_CFG_IDLE_ENTER_HOOK() { \ - /* Idle-enter code here.*/ \ -} - -/** - * @brief Idle thread leave hook. - * @note This hook is invoked within a critical zone, no OS functions - * should be invoked from here. - * @note This macro can be used to deactivate a power saving mode. - */ -#define CH_CFG_IDLE_LEAVE_HOOK() { \ - /* Idle-leave code here.*/ \ -} - -/** - * @brief Idle Loop hook. - * @details This hook is continuously invoked by the idle thread loop. - */ -#define CH_CFG_IDLE_LOOP_HOOK() { \ - /* Idle loop code here.*/ \ -} - -/** - * @brief System tick event hook. - * @details This hook is invoked in the system tick handler immediately - * after processing the virtual timers queue. - */ -#define CH_CFG_SYSTEM_TICK_HOOK() { \ - /* System tick event code here.*/ \ -} - -/** - * @brief System halt hook. - * @details This hook is invoked in case to a system halting error before - * the system is halted. - */ -#define CH_CFG_SYSTEM_HALT_HOOK(reason) { \ - /* System halt code here.*/ \ -} - -/** - * @brief Trace hook. - * @details This hook is invoked each time a new record is written in the - * trace buffer. - */ -#define CH_CFG_TRACE_HOOK(tep) { \ - /* Trace code here.*/ \ -} - -/** @} */ - -/*===========================================================================*/ -/* Port-specific settings (override port settings defaulted in chcore.h). */ -/*===========================================================================*/ - -#endif /* CHCONF_H */ - -/** @} */ diff --git a/platforms/chibios/common/configs/halconf.h b/platforms/chibios/common/configs/halconf.h deleted file mode 100644 index 264ae4e6c1d1..000000000000 --- a/platforms/chibios/common/configs/halconf.h +++ /dev/null @@ -1,531 +0,0 @@ -/* - 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. -*/ - -/** - * @file templates/halconf.h - * @brief HAL configuration header. - * @details HAL configuration file, this file allows to enable or disable the - * various device drivers from your application. You may also use - * this file in order to override the device drivers default settings. - * - * @addtogroup HAL_CONF - * @{ - */ - -#ifndef HALCONF_H -#define HALCONF_H - -#define _CHIBIOS_HAL_CONF_ -#define _CHIBIOS_HAL_CONF_VER_7_1_ - -#include <mcuconf.h> - -/** - * @brief Enables the PAL subsystem. - */ -#if !defined(HAL_USE_PAL) || defined(__DOXYGEN__) -#define HAL_USE_PAL TRUE -#endif - -/** - * @brief Enables the ADC subsystem. - */ -#if !defined(HAL_USE_ADC) || defined(__DOXYGEN__) -#define HAL_USE_ADC FALSE -#endif - -/** - * @brief Enables the CAN subsystem. - */ -#if !defined(HAL_USE_CAN) || defined(__DOXYGEN__) -#define HAL_USE_CAN FALSE -#endif - -/** - * @brief Enables the cryptographic subsystem. - */ -#if !defined(HAL_USE_CRY) || defined(__DOXYGEN__) -#define HAL_USE_CRY FALSE -#endif - -/** - * @brief Enables the DAC subsystem. - */ -#if !defined(HAL_USE_DAC) || defined(__DOXYGEN__) -#define HAL_USE_DAC FALSE -#endif - -/** - * @brief Enables the EFlash subsystem. - */ -#if !defined(HAL_USE_EFL) || defined(__DOXYGEN__) -#define HAL_USE_EFL FALSE -#endif - -/** - * @brief Enables the GPT subsystem. - */ -#if !defined(HAL_USE_GPT) || defined(__DOXYGEN__) -#define HAL_USE_GPT FALSE -#endif - -/** - * @brief Enables the I2C subsystem. - */ -#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__) -#define HAL_USE_I2C FALSE -#endif - -/** - * @brief Enables the I2S subsystem. - */ -#if !defined(HAL_USE_I2S) || defined(__DOXYGEN__) -#define HAL_USE_I2S FALSE -#endif - -/** - * @brief Enables the ICU subsystem. - */ -#if !defined(HAL_USE_ICU) || defined(__DOXYGEN__) -#define HAL_USE_ICU FALSE -#endif - -/** - * @brief Enables the MAC subsystem. - */ -#if !defined(HAL_USE_MAC) || defined(__DOXYGEN__) -#define HAL_USE_MAC FALSE -#endif - -/** - * @brief Enables the MMC_SPI subsystem. - */ -#if !defined(HAL_USE_MMC_SPI) || defined(__DOXYGEN__) -#define HAL_USE_MMC_SPI FALSE -#endif - -/** - * @brief Enables the PWM subsystem. - */ -#if !defined(HAL_USE_PWM) || defined(__DOXYGEN__) -#define HAL_USE_PWM FALSE -#endif - -/** - * @brief Enables the RTC subsystem. - */ -#if !defined(HAL_USE_RTC) || defined(__DOXYGEN__) -#define HAL_USE_RTC FALSE -#endif - -/** - * @brief Enables the SDC subsystem. - */ -#if !defined(HAL_USE_SDC) || defined(__DOXYGEN__) -#define HAL_USE_SDC FALSE -#endif - -/** - * @brief Enables the SERIAL subsystem. - */ -#if !defined(HAL_USE_SERIAL) || defined(__DOXYGEN__) -#define HAL_USE_SERIAL FALSE -#endif - -/** - * @brief Enables the SERIAL over USB subsystem. - */ -#if !defined(HAL_USE_SERIAL_USB) || defined(__DOXYGEN__) -#define HAL_USE_SERIAL_USB FALSE -#endif - -/** - * @brief Enables the SIO subsystem. - */ -#if !defined(HAL_USE_SIO) || defined(__DOXYGEN__) -#define HAL_USE_SIO FALSE -#endif - -/** - * @brief Enables the SPI subsystem. - */ -#if !defined(HAL_USE_SPI) || defined(__DOXYGEN__) -#define HAL_USE_SPI FALSE -#endif - -/** - * @brief Enables the TRNG subsystem. - */ -#if !defined(HAL_USE_TRNG) || defined(__DOXYGEN__) -#define HAL_USE_TRNG FALSE -#endif - -/** - * @brief Enables the UART subsystem. - */ -#if !defined(HAL_USE_UART) || defined(__DOXYGEN__) -#define HAL_USE_UART FALSE -#endif - -/** - * @brief Enables the USB subsystem. - */ -#if !defined(HAL_USE_USB) || defined(__DOXYGEN__) -#define HAL_USE_USB TRUE -#endif - -/** - * @brief Enables the WDG subsystem. - */ -#if !defined(HAL_USE_WDG) || defined(__DOXYGEN__) -#define HAL_USE_WDG FALSE -#endif - -/** - * @brief Enables the WSPI subsystem. - */ -#if !defined(HAL_USE_WSPI) || defined(__DOXYGEN__) -#define HAL_USE_WSPI FALSE -#endif - -/*===========================================================================*/ -/* PAL driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Enables synchronous APIs. - * @note Disabling this option saves both code and data space. - */ -#if !defined(PAL_USE_CALLBACKS) || defined(__DOXYGEN__) -#define PAL_USE_CALLBACKS FALSE -#endif - -/** - * @brief Enables synchronous APIs. - * @note Disabling this option saves both code and data space. - */ -#if !defined(PAL_USE_WAIT) || defined(__DOXYGEN__) -#define PAL_USE_WAIT FALSE -#endif - -/*===========================================================================*/ -/* ADC driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Enables synchronous APIs. - * @note Disabling this option saves both code and data space. - */ -#if !defined(ADC_USE_WAIT) || defined(__DOXYGEN__) -#define ADC_USE_WAIT TRUE -#endif - -/** - * @brief Enables the @p adcAcquireBus() and @p adcReleaseBus() APIs. - * @note Disabling this option saves both code and data space. - */ -#if !defined(ADC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) -#define ADC_USE_MUTUAL_EXCLUSION TRUE -#endif - -/*===========================================================================*/ -/* CAN driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Sleep mode related APIs inclusion switch. - */ -#if !defined(CAN_USE_SLEEP_MODE) || defined(__DOXYGEN__) -#define CAN_USE_SLEEP_MODE TRUE -#endif - -/** - * @brief Enforces the driver to use direct callbacks rather than OSAL events. - */ -#if !defined(CAN_ENFORCE_USE_CALLBACKS) || defined(__DOXYGEN__) -#define CAN_ENFORCE_USE_CALLBACKS FALSE -#endif - -/*===========================================================================*/ -/* CRY driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Enables the SW fall-back of the cryptographic driver. - * @details When enabled, this option, activates a fall-back software - * implementation for algorithms not supported by the underlying - * hardware. - * @note Fall-back implementations may not be present for all algorithms. - */ -#if !defined(HAL_CRY_USE_FALLBACK) || defined(__DOXYGEN__) -#define HAL_CRY_USE_FALLBACK FALSE -#endif - -/** - * @brief Makes the driver forcibly use the fall-back implementations. - */ -#if !defined(HAL_CRY_ENFORCE_FALLBACK) || defined(__DOXYGEN__) -#define HAL_CRY_ENFORCE_FALLBACK FALSE -#endif - -/*===========================================================================*/ -/* DAC driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Enables synchronous APIs. - * @note Disabling this option saves both code and data space. - */ -#if !defined(DAC_USE_WAIT) || defined(__DOXYGEN__) -#define DAC_USE_WAIT TRUE -#endif - -/** - * @brief Enables the @p dacAcquireBus() and @p dacReleaseBus() APIs. - * @note Disabling this option saves both code and data space. - */ -#if !defined(DAC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) -#define DAC_USE_MUTUAL_EXCLUSION TRUE -#endif - -/*===========================================================================*/ -/* I2C driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Enables the mutual exclusion APIs on the I2C bus. - */ -#if !defined(I2C_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) -#define I2C_USE_MUTUAL_EXCLUSION TRUE -#endif - -/*===========================================================================*/ -/* MAC driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Enables the zero-copy API. - */ -#if !defined(MAC_USE_ZERO_COPY) || defined(__DOXYGEN__) -#define MAC_USE_ZERO_COPY FALSE -#endif - -/** - * @brief Enables an event sources for incoming packets. - */ -#if !defined(MAC_USE_EVENTS) || defined(__DOXYGEN__) -#define MAC_USE_EVENTS TRUE -#endif - -/*===========================================================================*/ -/* MMC_SPI driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Delays insertions. - * @details If enabled this options inserts delays into the MMC waiting - * routines releasing some extra CPU time for the threads with - * lower priority, this may slow down the driver a bit however. - * This option is recommended also if the SPI driver does not - * use a DMA channel and heavily loads the CPU. - */ -#if !defined(MMC_NICE_WAITING) || defined(__DOXYGEN__) -#define MMC_NICE_WAITING TRUE -#endif - -/*===========================================================================*/ -/* SDC driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Number of initialization attempts before rejecting the card. - * @note Attempts are performed at 10mS intervals. - */ -#if !defined(SDC_INIT_RETRY) || defined(__DOXYGEN__) -#define SDC_INIT_RETRY 100 -#endif - -/** - * @brief Include support for MMC cards. - * @note MMC support is not yet implemented so this option must be kept - * at @p FALSE. - */ -#if !defined(SDC_MMC_SUPPORT) || defined(__DOXYGEN__) -#define SDC_MMC_SUPPORT FALSE -#endif - -/** - * @brief Delays insertions. - * @details If enabled this options inserts delays into the MMC waiting - * routines releasing some extra CPU time for the threads with - * lower priority, this may slow down the driver a bit however. - */ -#if !defined(SDC_NICE_WAITING) || defined(__DOXYGEN__) -#define SDC_NICE_WAITING TRUE -#endif - -/** - * @brief OCR initialization constant for V20 cards. - */ -#if !defined(SDC_INIT_OCR_V20) || defined(__DOXYGEN__) -#define SDC_INIT_OCR_V20 0x50FF8000U -#endif - -/** - * @brief OCR initialization constant for non-V20 cards. - */ -#if !defined(SDC_INIT_OCR) || defined(__DOXYGEN__) -#define SDC_INIT_OCR 0x80100000U -#endif - -/*===========================================================================*/ -/* SERIAL driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Default bit rate. - * @details Configuration parameter, this is the baud rate selected for the - * default configuration. - */ -#if !defined(SERIAL_DEFAULT_BITRATE) || defined(__DOXYGEN__) -#define SERIAL_DEFAULT_BITRATE 38400 -#endif - -/** - * @brief Serial buffers size. - * @details Configuration parameter, you can change the depth of the queue - * buffers depending on the requirements of your application. - * @note The default is 16 bytes for both the transmission and receive - * buffers. - */ -#if !defined(SERIAL_BUFFERS_SIZE) || defined(__DOXYGEN__) -#define SERIAL_BUFFERS_SIZE 16 -#endif - -/*===========================================================================*/ -/* SERIAL_USB driver related setting. */ -/*===========================================================================*/ - -/** - * @brief Serial over USB buffers size. - * @details Configuration parameter, the buffer size must be a multiple of - * the USB data endpoint maximum packet size. - * @note The default is 256 bytes for both the transmission and receive - * buffers. - */ -#if !defined(SERIAL_USB_BUFFERS_SIZE) || defined(__DOXYGEN__) -#define SERIAL_USB_BUFFERS_SIZE 1 -#endif - -/** - * @brief Serial over USB number of buffers. - * @note The default is 2 buffers. - */ -#if !defined(SERIAL_USB_BUFFERS_NUMBER) || defined(__DOXYGEN__) -#define SERIAL_USB_BUFFERS_NUMBER 2 -#endif - -/*===========================================================================*/ -/* SPI driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Enables synchronous APIs. - * @note Disabling this option saves both code and data space. - */ -#if !defined(SPI_USE_WAIT) || defined(__DOXYGEN__) -#define SPI_USE_WAIT TRUE -#endif - -/** - * @brief Enables circular transfers APIs. - * @note Disabling this option saves both code and data space. - */ -#if !defined(SPI_USE_CIRCULAR) || defined(__DOXYGEN__) -#define SPI_USE_CIRCULAR FALSE -#endif - -/** - * @brief Enables the @p spiAcquireBus() and @p spiReleaseBus() APIs. - * @note Disabling this option saves both code and data space. - */ -#if !defined(SPI_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) -#define SPI_USE_MUTUAL_EXCLUSION TRUE -#endif - -/** - * @brief Handling method for SPI CS line. - * @note Disabling this option saves both code and data space. - */ -#if !defined(SPI_SELECT_MODE) || defined(__DOXYGEN__) -#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD -#endif - -/*===========================================================================*/ -/* UART driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Enables synchronous APIs. - * @note Disabling this option saves both code and data space. - */ -#if !defined(UART_USE_WAIT) || defined(__DOXYGEN__) -#define UART_USE_WAIT FALSE -#endif - -/** - * @brief Enables the @p uartAcquireBus() and @p uartReleaseBus() APIs. - * @note Disabling this option saves both code and data space. - */ -#if !defined(UART_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) -#define UART_USE_MUTUAL_EXCLUSION FALSE -#endif - -/*===========================================================================*/ -/* USB driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Enables synchronous APIs. - * @note Disabling this option saves both code and data space. - */ -#if !defined(USB_USE_WAIT) || defined(__DOXYGEN__) -#define USB_USE_WAIT TRUE -#endif - -/*===========================================================================*/ -/* WSPI driver related settings. */ -/*===========================================================================*/ - -/** - * @brief Enables synchronous APIs. - * @note Disabling this option saves both code and data space. - */ -#if !defined(WSPI_USE_WAIT) || defined(__DOXYGEN__) -#define WSPI_USE_WAIT TRUE -#endif - -/** - * @brief Enables the @p wspiAcquireBus() and @p wspiReleaseBus() APIs. - * @note Disabling this option saves both code and data space. - */ -#if !defined(WSPI_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) -#define WSPI_USE_MUTUAL_EXCLUSION TRUE -#endif - -#endif /* HALCONF_H */ - -/** @} */ diff --git a/platforms/chibios/common/ld/STM32F103x8_stm32duino_bootloader.ld b/platforms/chibios/common/ld/STM32F103x8_stm32duino_bootloader.ld deleted file mode 100644 index bb852422a34a..000000000000 --- a/platforms/chibios/common/ld/STM32F103x8_stm32duino_bootloader.ld +++ /dev/null @@ -1,85 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2016 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. -*/ - -/* - * ST32F103xB memory setup for use with the maplemini bootloader. - */ -MEMORY -{ - flash0 : org = 0x08002000, len = 64k - 0x2000 - flash1 : org = 0x00000000, len = 0 - flash2 : org = 0x00000000, len = 0 - flash3 : org = 0x00000000, len = 0 - flash4 : org = 0x00000000, len = 0 - flash5 : org = 0x00000000, len = 0 - flash6 : org = 0x00000000, len = 0 - flash7 : org = 0x00000000, len = 0 - ram0 : org = 0x20000000, len = 20k - ram1 : org = 0x00000000, len = 0 - ram2 : org = 0x00000000, len = 0 - ram3 : org = 0x00000000, len = 0 - ram4 : org = 0x00000000, len = 0 - ram5 : org = 0x00000000, len = 0 - ram6 : org = 0x00000000, len = 0 - ram7 : 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", flash0); -REGION_ALIAS("XTORS_FLASH_LMA", flash0); - -/* Flash region to be used for code text.*/ -REGION_ALIAS("TEXT_FLASH", flash0); -REGION_ALIAS("TEXT_FLASH_LMA", flash0); - -/* Flash region to be used for read only data.*/ -REGION_ALIAS("RODATA_FLASH", flash0); -REGION_ALIAS("RODATA_FLASH_LMA", flash0); - -/* Flash region to be used for various.*/ -REGION_ALIAS("VARIOUS_FLASH", flash0); -REGION_ALIAS("VARIOUS_FLASH_LMA", flash0); - -/* Flash region to be used for RAM(n) initialization data.*/ -REGION_ALIAS("RAM_INIT_FLASH_LMA", flash0); - -/* 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", flash0); - -/* 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 new file mode 100644 index 000000000000..eb437665f1d4 --- /dev/null +++ b/platforms/chibios/drivers/analog.c @@ -0,0 +1,321 @@ +/* Copyright 2019 Drew Mills + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "quantum.h" +#include "analog.h" +#include <ch.h> +#include <hal.h> + +#if !HAL_USE_ADC +# error "You need to set HAL_USE_ADC to TRUE in your halconf.h to use the ADC." +#endif + +#if !STM32_ADC_USE_ADC1 && !STM32_ADC_USE_ADC2 && !STM32_ADC_USE_ADC3 && !STM32_ADC_USE_ADC4 +# error "You need to set one of the 'STM32_ADC_USE_ADCx' settings to TRUE in your mcuconf.h to use the ADC." +#endif + +#if STM32_ADC_DUAL_MODE +# error "STM32 ADC Dual Mode is not supported at this time." +#endif + +#if STM32_ADCV3_OVERSAMPLING +# error "STM32 ADCV3 Oversampling is not supported at this time." +#endif + +// Otherwise assume V3 +#if defined(STM32F0XX) || defined(STM32L0XX) +# define USE_ADCV1 +#elif defined(STM32F1XX) || defined(STM32F2XX) || defined(STM32F4XX) || defined(GD32VF103) +# define USE_ADCV2 +#endif + +// BODGE to make v2 look like v1,3 and 4 +#ifdef USE_ADCV2 +# if !defined(ADC_SMPR_SMP_1P5) && defined(ADC_SAMPLE_3) +# define ADC_SMPR_SMP_1P5 ADC_SAMPLE_3 +# define ADC_SMPR_SMP_7P5 ADC_SAMPLE_15 +# define ADC_SMPR_SMP_13P5 ADC_SAMPLE_28 +# define ADC_SMPR_SMP_28P5 ADC_SAMPLE_56 +# define ADC_SMPR_SMP_41P5 ADC_SAMPLE_84 +# define ADC_SMPR_SMP_55P5 ADC_SAMPLE_112 +# define ADC_SMPR_SMP_71P5 ADC_SAMPLE_144 +# define ADC_SMPR_SMP_239P5 ADC_SAMPLE_480 +# endif + +# if !defined(ADC_SMPR_SMP_1P5) && defined(ADC_SAMPLE_1P5) +# define ADC_SMPR_SMP_1P5 ADC_SAMPLE_1P5 +# define ADC_SMPR_SMP_7P5 ADC_SAMPLE_7P5 +# define ADC_SMPR_SMP_13P5 ADC_SAMPLE_13P5 +# define ADC_SMPR_SMP_28P5 ADC_SAMPLE_28P5 +# define ADC_SMPR_SMP_41P5 ADC_SAMPLE_41P5 +# define ADC_SMPR_SMP_55P5 ADC_SAMPLE_55P5 +# define ADC_SMPR_SMP_71P5 ADC_SAMPLE_71P5 +# define ADC_SMPR_SMP_239P5 ADC_SAMPLE_239P5 +# endif + +// we still sample at 12bit, but scale down to the requested bit range +# define ADC_CFGR1_RES_12BIT 12 +# define ADC_CFGR1_RES_10BIT 10 +# define ADC_CFGR1_RES_8BIT 8 +# define ADC_CFGR1_RES_6BIT 6 +#endif + +/* User configurable ADC options */ +#ifndef ADC_COUNT +# if defined(STM32F0XX) || defined(STM32F1XX) || defined(STM32F4XX) || defined(GD32VF103) +# define ADC_COUNT 1 +# elif defined(STM32F3XX) +# define ADC_COUNT 4 +# else +# error "ADC_COUNT has not been set for this ARM microcontroller." +# endif +#endif + +#ifndef ADC_NUM_CHANNELS +# define ADC_NUM_CHANNELS 1 +#elif ADC_NUM_CHANNELS != 1 +# error "The ARM ADC implementation currently only supports reading one channel at a time." +#endif + +#ifndef ADC_BUFFER_DEPTH +# define ADC_BUFFER_DEPTH 1 +#endif + +// For more sampling rate options, look at hal_adc_lld.h in ChibiOS +#ifndef ADC_SAMPLING_RATE +# define ADC_SAMPLING_RATE ADC_SMPR_SMP_1P5 +#endif + +// Options are 12, 10, 8, and 6 bit. +#ifndef ADC_RESOLUTION +# ifdef ADC_CFGR_RES_10BITS // ADCv3, ADCv4 +# define ADC_RESOLUTION ADC_CFGR_RES_10BITS +# else // ADCv1, ADCv5, or the bodge for ADCv2 above +# define ADC_RESOLUTION ADC_CFGR1_RES_10BIT +# endif +#endif + +static ADCConfig adcCfg = {}; +static adcsample_t sampleBuffer[ADC_NUM_CHANNELS * ADC_BUFFER_DEPTH]; + +// Initialize to max number of ADCs, set to empty object to initialize all to false. +static bool adcInitialized[ADC_COUNT] = {}; + +// TODO: add back TR handling??? +static ADCConversionGroup adcConversionGroup = { + .circular = FALSE, + .num_channels = (uint16_t)(ADC_NUM_CHANNELS), +#if defined(USE_ADCV1) + .cfgr1 = ADC_CFGR1_CONT | ADC_RESOLUTION, + .smpr = ADC_SAMPLING_RATE, +#elif defined(USE_ADCV2) +# 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), +#else + .cfgr = ADC_CFGR_CONT | ADC_RESOLUTION, + .smpr = {ADC_SMPR1_SMP_AN0(ADC_SAMPLING_RATE) | ADC_SMPR1_SMP_AN1(ADC_SAMPLING_RATE) | ADC_SMPR1_SMP_AN2(ADC_SAMPLING_RATE) | ADC_SMPR1_SMP_AN3(ADC_SAMPLING_RATE) | ADC_SMPR1_SMP_AN4(ADC_SAMPLING_RATE) | ADC_SMPR1_SMP_AN5(ADC_SAMPLING_RATE) | ADC_SMPR1_SMP_AN6(ADC_SAMPLING_RATE) | ADC_SMPR1_SMP_AN7(ADC_SAMPLING_RATE) | ADC_SMPR1_SMP_AN8(ADC_SAMPLING_RATE) | ADC_SMPR1_SMP_AN9(ADC_SAMPLING_RATE), ADC_SMPR2_SMP_AN10(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN11(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN12(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN13(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN14(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN15(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN16(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN17(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN18(ADC_SAMPLING_RATE)}, +#endif +}; + +// clang-format off +__attribute__((weak)) adc_mux pinToMux(pin_t pin) { + switch (pin) { +#if defined(STM32F0XX) + case A0: return TO_MUX( ADC_CHSELR_CHSEL0, 0 ); + case A1: return TO_MUX( ADC_CHSELR_CHSEL1, 0 ); + case A2: return TO_MUX( ADC_CHSELR_CHSEL2, 0 ); + case A3: return TO_MUX( ADC_CHSELR_CHSEL3, 0 ); + case A4: return TO_MUX( ADC_CHSELR_CHSEL4, 0 ); + case A5: return TO_MUX( ADC_CHSELR_CHSEL5, 0 ); + case A6: return TO_MUX( ADC_CHSELR_CHSEL6, 0 ); + case A7: return TO_MUX( ADC_CHSELR_CHSEL7, 0 ); + case B0: return TO_MUX( ADC_CHSELR_CHSEL8, 0 ); + case B1: return TO_MUX( ADC_CHSELR_CHSEL9, 0 ); + case C0: return TO_MUX( ADC_CHSELR_CHSEL10, 0 ); + case C1: return TO_MUX( ADC_CHSELR_CHSEL11, 0 ); + case C2: return TO_MUX( ADC_CHSELR_CHSEL12, 0 ); + case C3: return TO_MUX( ADC_CHSELR_CHSEL13, 0 ); + case C4: return TO_MUX( ADC_CHSELR_CHSEL14, 0 ); + case C5: return TO_MUX( ADC_CHSELR_CHSEL15, 0 ); +#elif defined(STM32F3XX) + case A0: return TO_MUX( ADC_CHANNEL_IN1, 0 ); + case A1: return TO_MUX( ADC_CHANNEL_IN2, 0 ); + case A2: return TO_MUX( ADC_CHANNEL_IN3, 0 ); + case A3: return TO_MUX( ADC_CHANNEL_IN4, 0 ); + case A4: return TO_MUX( ADC_CHANNEL_IN1, 1 ); + case A5: return TO_MUX( ADC_CHANNEL_IN2, 1 ); + case A6: return TO_MUX( ADC_CHANNEL_IN3, 1 ); + case A7: return TO_MUX( ADC_CHANNEL_IN4, 1 ); + case B0: return TO_MUX( ADC_CHANNEL_IN12, 2 ); + case B1: return TO_MUX( ADC_CHANNEL_IN1, 2 ); + case B2: return TO_MUX( ADC_CHANNEL_IN12, 1 ); + case B12: return TO_MUX( ADC_CHANNEL_IN3, 3 ); + case B13: return TO_MUX( ADC_CHANNEL_IN5, 2 ); + case B14: return TO_MUX( ADC_CHANNEL_IN4, 3 ); + case B15: return TO_MUX( ADC_CHANNEL_IN5, 3 ); + case C0: return TO_MUX( ADC_CHANNEL_IN6, 0 ); // Can also be ADC2 + case C1: return TO_MUX( ADC_CHANNEL_IN7, 0 ); // Can also be ADC2 + case C2: return TO_MUX( ADC_CHANNEL_IN8, 0 ); // Can also be ADC2 + case C3: return TO_MUX( ADC_CHANNEL_IN9, 0 ); // Can also be ADC2 + case C4: return TO_MUX( ADC_CHANNEL_IN5, 1 ); + case C5: return TO_MUX( ADC_CHANNEL_IN11, 1 ); + case D8: return TO_MUX( ADC_CHANNEL_IN12, 3 ); + case D9: return TO_MUX( ADC_CHANNEL_IN13, 3 ); + case D10: return TO_MUX( ADC_CHANNEL_IN7, 2 ); // Can also be ADC4 + case D11: return TO_MUX( ADC_CHANNEL_IN8, 2 ); // Can also be ADC4 + case D12: return TO_MUX( ADC_CHANNEL_IN9, 2 ); // Can also be ADC4 + case D13: return TO_MUX( ADC_CHANNEL_IN10, 2 ); // Can also be ADC4 + case D14: return TO_MUX( ADC_CHANNEL_IN11, 2 ); // Can also be ADC4 + case E7: return TO_MUX( ADC_CHANNEL_IN13, 2 ); + case E8: return TO_MUX( ADC_CHANNEL_IN6, 2 ); // Can also be ADC4 + case E9: return TO_MUX( ADC_CHANNEL_IN2, 2 ); + case E10: return TO_MUX( ADC_CHANNEL_IN14, 2 ); + case E11: return TO_MUX( ADC_CHANNEL_IN15, 2 ); + case E12: return TO_MUX( ADC_CHANNEL_IN16, 2 ); + case E13: return TO_MUX( ADC_CHANNEL_IN3, 2 ); + case E14: return TO_MUX( ADC_CHANNEL_IN1, 3 ); + case E15: return TO_MUX( ADC_CHANNEL_IN2, 3 ); + case F2: return TO_MUX( ADC_CHANNEL_IN10, 0 ); // Can also be ADC2 + case F4: return TO_MUX( ADC_CHANNEL_IN5, 0 ); +#elif defined(STM32F4XX) + 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 ); + case A3: return TO_MUX( ADC_CHANNEL_IN3, 0 ); + case A4: return TO_MUX( ADC_CHANNEL_IN4, 0 ); + case A5: return TO_MUX( ADC_CHANNEL_IN5, 0 ); + case A6: return TO_MUX( ADC_CHANNEL_IN6, 0 ); + case A7: return TO_MUX( ADC_CHANNEL_IN7, 0 ); + case B0: return TO_MUX( ADC_CHANNEL_IN8, 0 ); + case B1: return TO_MUX( ADC_CHANNEL_IN9, 0 ); + case C0: return TO_MUX( ADC_CHANNEL_IN10, 0 ); + case C1: return TO_MUX( ADC_CHANNEL_IN11, 0 ); + case C2: return TO_MUX( ADC_CHANNEL_IN12, 0 ); + case C3: return TO_MUX( ADC_CHANNEL_IN13, 0 ); + case C4: return TO_MUX( ADC_CHANNEL_IN14, 0 ); + case C5: return TO_MUX( ADC_CHANNEL_IN15, 0 ); +# if STM32_ADC_USE_ADC3 + case F3: return TO_MUX( ADC_CHANNEL_IN9, 2 ); + case F4: return TO_MUX( ADC_CHANNEL_IN14, 2 ); + case F5: return TO_MUX( ADC_CHANNEL_IN15, 2 ); + case F6: return TO_MUX( ADC_CHANNEL_IN4, 2 ); + case F7: return TO_MUX( ADC_CHANNEL_IN5, 2 ); + case F8: return TO_MUX( ADC_CHANNEL_IN6, 2 ); + case F9: return TO_MUX( ADC_CHANNEL_IN7, 2 ); + case F10: return TO_MUX( ADC_CHANNEL_IN8, 2 ); +# endif +#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 ); + case A3: return TO_MUX( ADC_CHANNEL_IN3, 0 ); + case A4: return TO_MUX( ADC_CHANNEL_IN4, 0 ); + case A5: return TO_MUX( ADC_CHANNEL_IN5, 0 ); + case A6: return TO_MUX( ADC_CHANNEL_IN6, 0 ); + case A7: return TO_MUX( ADC_CHANNEL_IN7, 0 ); + case B0: return TO_MUX( ADC_CHANNEL_IN8, 0 ); + case B1: return TO_MUX( ADC_CHANNEL_IN9, 0 ); + case C0: return TO_MUX( ADC_CHANNEL_IN10, 0 ); + case C1: return TO_MUX( ADC_CHANNEL_IN11, 0 ); + case C2: return TO_MUX( ADC_CHANNEL_IN12, 0 ); + case C3: return TO_MUX( ADC_CHANNEL_IN13, 0 ); + case C4: return TO_MUX( ADC_CHANNEL_IN14, 0 ); + case C5: return TO_MUX( ADC_CHANNEL_IN15, 0 ); + // STM32F103x[C-G] in 144-pin packages also have analog inputs on F6...F10, but they are on ADC3, and the + // ChibiOS ADC driver for STM32F1xx currently supports only ADC1, therefore these pins are not usable. +#endif + } + + // return an adc that would never be used so intToADCDriver will bail out + return TO_MUX(0, 0xFF); +} +// clang-format on + +static inline ADCDriver* intToADCDriver(uint8_t adcInt) { + switch (adcInt) { +#if STM32_ADC_USE_ADC1 + case 0: + return &ADCD1; +#endif +#if STM32_ADC_USE_ADC2 + case 1: + return &ADCD2; +#endif +#if STM32_ADC_USE_ADC3 + case 2: + return &ADCD3; +#endif +#if STM32_ADC_USE_ADC4 + case 3: + return &ADCD4; +#endif + } + + return NULL; +} + +static inline void manageAdcInitializationDriver(uint8_t adc, ADCDriver* adcDriver) { + if (!adcInitialized[adc]) { + adcStart(adcDriver, &adcCfg); + adcInitialized[adc] = true; + } +} + +int16_t analogReadPin(pin_t pin) { + palSetLineMode(pin, PAL_MODE_INPUT_ANALOG); + + return adc_read(pinToMux(pin)); +} + +int16_t analogReadPinAdc(pin_t pin, uint8_t adc) { + palSetLineMode(pin, PAL_MODE_INPUT_ANALOG); + + adc_mux target = pinToMux(pin); + target.adc = adc; + return adc_read(target); +} + +int16_t adc_read(adc_mux mux) { +#if defined(USE_ADCV1) + // TODO: fix previous assumption of only 1 input... + adcConversionGroup.chselr = 1 << mux.input; /*no macro to convert N to ADC_CHSELR_CHSEL1*/ +#elif defined(USE_ADCV2) + adcConversionGroup.sqr3 = ADC_SQR3_SQ1_N(mux.input); +#else + adcConversionGroup.sqr[0] = ADC_SQR1_SQ1_N(mux.input); +#endif + + ADCDriver* targetDriver = intToADCDriver(mux.adc); + if (!targetDriver) { + return 0; + } + + manageAdcInitializationDriver(mux.adc, targetDriver); + if (adcConvert(targetDriver, &adcConversionGroup, &sampleBuffer[0], ADC_BUFFER_DEPTH) != MSG_OK) { + return 0; + } + +#ifdef USE_ADCV2 + // fake 12-bit -> N-bit scale + return (*sampleBuffer) >> (12 - ADC_RESOLUTION); +#else + // already handled as part of adcConvert + return *sampleBuffer; +#endif +} diff --git a/drivers/chibios/analog.h b/platforms/chibios/drivers/analog.h similarity index 100% rename from drivers/chibios/analog.h rename to platforms/chibios/drivers/analog.h diff --git a/quantum/audio/driver_chibios_dac.h b/platforms/chibios/drivers/audio_dac.h similarity index 100% rename from quantum/audio/driver_chibios_dac.h rename to platforms/chibios/drivers/audio_dac.h diff --git a/quantum/audio/driver_chibios_dac_additive.c b/platforms/chibios/drivers/audio_dac_additive.c similarity index 100% rename from quantum/audio/driver_chibios_dac_additive.c rename to 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 similarity index 100% rename from quantum/audio/driver_chibios_dac_basic.c rename to platforms/chibios/drivers/audio_dac_basic.c diff --git a/quantum/audio/driver_chibios_pwm.h b/platforms/chibios/drivers/audio_pwm.h similarity index 100% rename from quantum/audio/driver_chibios_pwm.h rename to platforms/chibios/drivers/audio_pwm.h diff --git a/platforms/chibios/drivers/audio_pwm_hardware.c b/platforms/chibios/drivers/audio_pwm_hardware.c new file mode 100644 index 000000000000..cd40019ee7c3 --- /dev/null +++ b/platforms/chibios/drivers/audio_pwm_hardware.c @@ -0,0 +1,144 @@ +/* Copyright 2020 Jack Humbert + * Copyright 2020 JohSchneider + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +/* +Audio Driver: PWM + +the duty-cycle is always kept at 50%, and the pwm-period is adjusted to match the frequency of a note to be played back. + +this driver uses the chibios-PWM system to produce a square-wave on specific output pins that are connected to the PWM hardware. +The hardware directly toggles the pin via its alternate function. see your MCUs data-sheet for which pin can be driven by what timer - looking for TIMx_CHy and the corresponding alternate function. + + */ + +#include "audio.h" +#include "ch.h" +#include "hal.h" + +#if !defined(AUDIO_PIN) +# error "Audio feature enabled, but no pin selected - see docs/feature_audio under the ARM PWM settings" +#endif + +extern bool playing_note; +extern bool playing_melody; +extern uint8_t note_timbre; + +static PWMConfig pwmCFG = { + .frequency = 100000, /* PWM clock frequency */ + // CHIBIOS-BUG? can't set the initial period to <2, or the pwm (hard or software) takes ~130ms with .frequency=500000 for a pwmChangePeriod to take effect; with no output=silence in the meantime + .period = 2, /* initial PWM period (in ticks) 1S (1/10kHz=0.1mS 0.1ms*10000 ticks=1S) */ + .callback = NULL, /* no callback, the hardware directly toggles the pin */ + .channels = + { +#if AUDIO_PWM_CHANNEL == 4 + {PWM_OUTPUT_DISABLED, NULL}, /* channel 0 -> TIMx_CH1 */ + {PWM_OUTPUT_DISABLED, NULL}, /* channel 1 -> TIMx_CH2 */ + {PWM_OUTPUT_DISABLED, NULL}, /* channel 2 -> TIMx_CH3 */ + {PWM_OUTPUT_ACTIVE_HIGH, NULL} /* channel 3 -> TIMx_CH4 */ +#elif AUDIO_PWM_CHANNEL == 3 + {PWM_OUTPUT_DISABLED, NULL}, + {PWM_OUTPUT_DISABLED, NULL}, + {PWM_OUTPUT_ACTIVE_HIGH, NULL}, /* TIMx_CH3 */ + {PWM_OUTPUT_DISABLED, NULL} +#elif AUDIO_PWM_CHANNEL == 2 + {PWM_OUTPUT_DISABLED, NULL}, + {PWM_OUTPUT_ACTIVE_HIGH, NULL}, /* TIMx_CH2 */ + {PWM_OUTPUT_DISABLED, NULL}, + {PWM_OUTPUT_DISABLED, NULL} +#else /*fallback to CH1 */ + {PWM_OUTPUT_ACTIVE_HIGH, NULL}, /* TIMx_CH1 */ + {PWM_OUTPUT_DISABLED, NULL}, + {PWM_OUTPUT_DISABLED, NULL}, + {PWM_OUTPUT_DISABLED, NULL} +#endif + }, +}; + +static float channel_1_frequency = 0.0f; +void channel_1_set_frequency(float freq) { + channel_1_frequency = freq; + + if (freq <= 0.0) // a pause/rest has freq=0 + return; + + pwmcnt_t period = (pwmCFG.frequency / freq); + pwmChangePeriod(&AUDIO_PWM_DRIVER, period); + pwmEnableChannel(&AUDIO_PWM_DRIVER, AUDIO_PWM_CHANNEL - 1, + // adjust the duty-cycle so that the output is for 'note_timbre' duration HIGH + PWM_PERCENTAGE_TO_WIDTH(&AUDIO_PWM_DRIVER, (100 - note_timbre) * 100)); +} + +float channel_1_get_frequency(void) { return channel_1_frequency; } + +void channel_1_start(void) { + pwmStop(&AUDIO_PWM_DRIVER); + pwmStart(&AUDIO_PWM_DRIVER, &pwmCFG); +} + +void channel_1_stop(void) { pwmStop(&AUDIO_PWM_DRIVER); } + +static void gpt_callback(GPTDriver *gptp); +GPTConfig gptCFG = { + /* a whole note is one beat, which is - per definition in musical_notes.h - set to 64 + the longest note is BREAVE_DOT=128+64=192, the shortest SIXTEENTH=4 + the tempo (which might vary!) is in bpm (beats per minute) + therefore: if the timer ticks away at .frequency = (60*64)Hz, + and the .interval counts from 64 downwards - audio_update_state is + called just often enough to not miss any notes + */ + .frequency = 60 * 64, + .callback = gpt_callback, +}; + +void audio_driver_initialize(void) { + pwmStart(&AUDIO_PWM_DRIVER, &pwmCFG); + + // connect the AUDIO_PIN to the PWM hardware +#if defined(USE_GPIOV1) // STM32F103C8 + 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_MODE_ALTERNATE(AUDIO_PWM_PAL_MODE)); +#endif + + gptStart(&AUDIO_STATE_TIMER, &gptCFG); +} + +void audio_driver_start(void) { + channel_1_stop(); + channel_1_start(); + + if (playing_note || playing_melody) { + gptStartContinuous(&AUDIO_STATE_TIMER, 64); + } +} + +void audio_driver_stop(void) { + channel_1_stop(); + gptStopTimer(&AUDIO_STATE_TIMER); +} + +/* a regular timer task, that checks the note to be currently played + * and updates the pwm to output that frequency + */ +static void gpt_callback(GPTDriver *gptp) { + float freq; // TODO: freq_alt + + if (audio_update_state()) { + freq = audio_get_processed_frequency(0); // freq_alt would be index=1 + channel_1_set_frequency(freq); + } +} diff --git a/quantum/audio/driver_chibios_pwm_software.c b/platforms/chibios/drivers/audio_pwm_software.c similarity index 100% rename from quantum/audio/driver_chibios_pwm_software.c rename to platforms/chibios/drivers/audio_pwm_software.c diff --git a/drivers/eeprom/eeprom_stm32_L0_L1.c b/platforms/chibios/drivers/eeprom/eeprom_stm32_L0_L1.c similarity index 100% rename from drivers/eeprom/eeprom_stm32_L0_L1.c rename to platforms/chibios/drivers/eeprom/eeprom_stm32_L0_L1.c diff --git a/drivers/eeprom/eeprom_stm32_L0_L1.h b/platforms/chibios/drivers/eeprom/eeprom_stm32_L0_L1.h similarity index 100% rename from drivers/eeprom/eeprom_stm32_L0_L1.h rename to platforms/chibios/drivers/eeprom/eeprom_stm32_L0_L1.h diff --git a/platforms/chibios/drivers/i2c_master.c b/platforms/chibios/drivers/i2c_master.c new file mode 100644 index 000000000000..43591d56f80c --- /dev/null +++ b/platforms/chibios/drivers/i2c_master.c @@ -0,0 +1,147 @@ +/* Copyright 2018 Jack Humbert + * Copyright 2018 Yiancar + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +/* This library is only valid for STM32 processors. + * This library follows the convention of the AVR i2c_master library. + * As a result addresses are expected to be already shifted (addr << 1). + * I2CD1 is the default driver which corresponds to pins B6 and B7. This + * can be changed. + * Please ensure that HAL_USE_I2C is TRUE in the halconf.h file and that + * STM32_I2C_USE_I2C1 is TRUE in the mcuconf.h file. Pins B6 and B7 are used + * but using any other I2C pins should be trivial. + */ +#include "quantum.h" +#include "i2c_master.h" +#include <string.h> +#include <hal.h> + +static uint8_t i2c_address; + +static const I2CConfig i2cconfig = { +#if defined(USE_I2CV1_CONTRIB) + I2C1_CLOCK_SPEED, +#elif defined(USE_I2CV1) + I2C1_OPMODE, + I2C1_CLOCK_SPEED, + I2C1_DUTY_CYCLE, +#elif defined(WB32F3G71xx) + I2C1_OPMODE, + I2C1_CLOCK_SPEED, +#else + // This configures the I2C clock to 400khz assuming a 72Mhz clock + // For more info : https://www.st.com/en/embedded-software/stsw-stm32126.html + STM32_TIMINGR_PRESC(I2C1_TIMINGR_PRESC) | STM32_TIMINGR_SCLDEL(I2C1_TIMINGR_SCLDEL) | STM32_TIMINGR_SDADEL(I2C1_TIMINGR_SDADEL) | STM32_TIMINGR_SCLH(I2C1_TIMINGR_SCLH) | STM32_TIMINGR_SCLL(I2C1_TIMINGR_SCLL), 0, 0 +#endif +}; + +static i2c_status_t chibios_to_qmk(const msg_t* status) { + switch (*status) { + case I2C_NO_ERROR: + return I2C_STATUS_SUCCESS; + case I2C_TIMEOUT: + return I2C_STATUS_TIMEOUT; + // I2C_BUS_ERROR, I2C_ARBITRATION_LOST, I2C_ACK_FAILURE, I2C_OVERRUN, I2C_PEC_ERROR, I2C_SMB_ALERT + default: + return I2C_STATUS_ERROR; + } +} + +__attribute__((weak)) void i2c_init(void) { + static bool is_initialised = false; + if (!is_initialised) { + is_initialised = true; + + // Try releasing special pins for a short time + palSetLineMode(I2C1_SCL_PIN, PAL_MODE_INPUT); + palSetLineMode(I2C1_SDA_PIN, PAL_MODE_INPUT); + + chThdSleepMilliseconds(10); +#if defined(USE_GPIOV1) + palSetLineMode(I2C1_SCL_PIN, I2C1_SCL_PAL_MODE); + palSetLineMode(I2C1_SDA_PIN, I2C1_SDA_PAL_MODE); +#else + 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 + } +} + +i2c_status_t i2c_start(uint8_t address) { + i2c_address = address; + i2cStart(&I2C_DRIVER, &i2cconfig); + return I2C_STATUS_SUCCESS; +} + +i2c_status_t i2c_transmit(uint8_t address, const uint8_t* data, uint16_t length, uint16_t timeout) { + i2c_address = address; + i2cStart(&I2C_DRIVER, &i2cconfig); + msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), data, length, 0, 0, TIME_MS2I(timeout)); + return chibios_to_qmk(&status); +} + +i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout) { + i2c_address = address; + i2cStart(&I2C_DRIVER, &i2cconfig); + msg_t status = i2cMasterReceiveTimeout(&I2C_DRIVER, (i2c_address >> 1), data, length, TIME_MS2I(timeout)); + return chibios_to_qmk(&status); +} + +i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout) { + i2c_address = devaddr; + i2cStart(&I2C_DRIVER, &i2cconfig); + + uint8_t complete_packet[length + 1]; + for (uint16_t i = 0; i < length; i++) { + complete_packet[i + 1] = data[i]; + } + complete_packet[0] = regaddr; + + msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), complete_packet, length + 1, 0, 0, TIME_MS2I(timeout)); + 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); + msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), ®addr, 1, data, length, TIME_MS2I(timeout)); + 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 new file mode 100644 index 000000000000..5f082e9d1e25 --- /dev/null +++ b/platforms/chibios/drivers/i2c_master.h @@ -0,0 +1,102 @@ +/* Copyright 2018 Jack Humbert + * Copyright 2018 Yiancar + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +/* This library follows the convention of the AVR i2c_master library. + * As a result addresses are expected to be already shifted (addr << 1). + * I2CD1 is the default driver which corresponds to pins B6 and B7. This + * can be changed. + * Please ensure that HAL_USE_I2C is TRUE in the halconf.h file and that + * STM32_I2C_USE_I2C1 is TRUE in the mcuconf.h file. + */ +#pragma once + +#include <ch.h> +#include <hal.h> + +#ifndef I2C1_SCL_PIN +# define I2C1_SCL_PIN B6 +#endif +#ifndef I2C1_SDA_PIN +# define I2C1_SDA_PIN B7 +#endif + +#ifdef USE_I2CV1 +# ifndef I2C1_OPMODE +# define I2C1_OPMODE OPMODE_I2C +# endif +# ifndef I2C1_CLOCK_SPEED +# define I2C1_CLOCK_SPEED 100000 /* 400000 */ +# endif +# ifndef I2C1_DUTY_CYCLE +# define I2C1_DUTY_CYCLE STD_DUTY_CYCLE /* FAST_DUTY_CYCLE_2 */ +# endif +#else +// The default timing values below configures the I2C clock to 400khz assuming a 72Mhz clock +// For more info : https://www.st.com/en/embedded-software/stsw-stm32126.html +# ifndef I2C1_TIMINGR_PRESC +# define I2C1_TIMINGR_PRESC 0U +# endif +# ifndef I2C1_TIMINGR_SCLDEL +# define I2C1_TIMINGR_SCLDEL 7U +# endif +# ifndef I2C1_TIMINGR_SDADEL +# define I2C1_TIMINGR_SDADEL 0U +# endif +# ifndef I2C1_TIMINGR_SCLH +# define I2C1_TIMINGR_SCLH 38U +# endif +# ifndef I2C1_TIMINGR_SCLL +# define I2C1_TIMINGR_SCLL 129U +# endif +#endif + +#ifndef I2C_DRIVER +# define I2C_DRIVER I2CD1 +#endif + +#ifdef USE_GPIOV1 +# ifndef I2C1_SCL_PAL_MODE +# define I2C1_SCL_PAL_MODE PAL_MODE_ALTERNATE_OPENDRAIN +# endif +# ifndef I2C1_SDA_PAL_MODE +# 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 +# ifndef I2C1_SCL_PAL_MODE +# define I2C1_SCL_PAL_MODE 4 +# endif +# ifndef I2C1_SDA_PAL_MODE +# define I2C1_SDA_PAL_MODE 4 +# endif +#endif + +typedef int16_t i2c_status_t; + +#define I2C_STATUS_SUCCESS (0) +#define I2C_STATUS_ERROR (-1) +#define I2C_STATUS_TIMEOUT (-2) + +void i2c_init(void); +i2c_status_t i2c_start(uint8_t address); +i2c_status_t i2c_transmit(uint8_t address, const uint8_t* data, uint16_t length, uint16_t timeout); +i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout); +i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout); +i2c_status_t i2c_writeReg16(uint8_t devaddr, uint16_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout); +i2c_status_t i2c_readReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout); +i2c_status_t i2c_readReg16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout); +void i2c_stop(void); diff --git a/platforms/chibios/drivers/ps2/ps2_io.c b/platforms/chibios/drivers/ps2/ps2_io.c new file mode 100644 index 000000000000..906d85d84840 --- /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 new file mode 100644 index 000000000000..ef6f0aa8d5f3 --- /dev/null +++ b/platforms/chibios/drivers/serial.c @@ -0,0 +1,278 @@ +/* + * WARNING: be careful changing this code, it is very timing dependent + */ + +#include "quantum.h" +#include "serial.h" +#include "wait.h" + +#include <hal.h> + +// TODO: resolve/remove build warnings +#if defined(RGBLIGHT_ENABLE) && defined(RGBLED_SPLIT) && defined(PROTOCOL_CHIBIOS) && defined(WS2812_DRIVER_BITBANG) +# warning "RGBLED_SPLIT not supported with bitbang WS2812 driver" +#endif + +// default wait implementation cannot be called within interrupt +// this method seems to be more accurate than GPT timers +#if PORT_SUPPORTS_RT == FALSE +# error "chSysPolledDelayX method not supported on this platform" +#else +# undef wait_us +# define wait_us(x) chSysPolledDelayX(US2RTC(CPU_CLOCK, x)) +#endif + +#ifndef SELECT_SOFT_SERIAL_SPEED +# define SELECT_SOFT_SERIAL_SPEED 1 +// TODO: correct speeds... +// 0: about 189kbps (Experimental only) +// 1: about 137kbps (default) +// 2: about 75kbps +// 3: about 39kbps +// 4: about 26kbps +// 5: about 20kbps +#endif + +// Serial pulse period in microseconds. At the moment, going lower than 12 causes communication failure +#if SELECT_SOFT_SERIAL_SPEED == 0 +# define SERIAL_DELAY 12 +#elif SELECT_SOFT_SERIAL_SPEED == 1 +# define SERIAL_DELAY 16 +#elif SELECT_SOFT_SERIAL_SPEED == 2 +# define SERIAL_DELAY 24 +#elif SELECT_SOFT_SERIAL_SPEED == 3 +# define SERIAL_DELAY 32 +#elif SELECT_SOFT_SERIAL_SPEED == 4 +# define SERIAL_DELAY 48 +#elif SELECT_SOFT_SERIAL_SPEED == 5 +# define SERIAL_DELAY 64 +#else +# error invalid SELECT_SOFT_SERIAL_SPEED value +#endif + +inline static void serial_delay(void) { wait_us(SERIAL_DELAY); } +inline static void serial_delay_half(void) { wait_us(SERIAL_DELAY / 2); } +inline static void serial_delay_blip(void) { wait_us(1); } +inline static void serial_output(void) { setPinOutput(SOFT_SERIAL_PIN); } +inline static void serial_input(void) { setPinInputHigh(SOFT_SERIAL_PIN); } +inline static bool serial_read_pin(void) { return !!readPin(SOFT_SERIAL_PIN); } +inline static void serial_low(void) { writePinLow(SOFT_SERIAL_PIN); } +inline static void serial_high(void) { writePinHigh(SOFT_SERIAL_PIN); } + +void interrupt_handler(void *arg); + +// Use thread + palWaitLineTimeout instead of palSetLineCallback +// - Methods like setPinOutput and palEnableLineEvent/palDisableLineEvent +// cause the interrupt to lock up, which would limit to only receiving data... +static THD_WORKING_AREA(waThread1, 128); +static THD_FUNCTION(Thread1, arg) { + (void)arg; + chRegSetThreadName("blinker"); + while (true) { + palWaitLineTimeout(SOFT_SERIAL_PIN, TIME_INFINITE); + interrupt_handler(NULL); + } +} + +void soft_serial_initiator_init(void) { + serial_output(); + serial_high(); +} + +void soft_serial_target_init(void) { + serial_input(); + + palEnablePadEvent(PAL_PORT(SOFT_SERIAL_PIN), PAL_PAD(SOFT_SERIAL_PIN), PAL_EVENT_MODE_FALLING_EDGE); + chThdCreateStatic(waThread1, sizeof(waThread1), HIGHPRIO, Thread1, NULL); +} + +// Used by the master to synchronize timing with the slave. +static void __attribute__((noinline)) sync_recv(void) { + serial_input(); + // This shouldn't hang if the slave disconnects because the + // serial line will float to high if the slave does disconnect. + while (!serial_read_pin()) { + } + + serial_delay(); +} + +// Used by the slave to send a synchronization signal to the master. +static void __attribute__((noinline)) sync_send(void) { + serial_output(); + + serial_low(); + serial_delay(); + + serial_high(); +} + +// Reads a byte from the serial line +static uint8_t __attribute__((noinline)) serial_read_byte(void) { + uint8_t byte = 0; + serial_input(); + for (uint8_t i = 0; i < 8; ++i) { + byte = (byte << 1) | serial_read_pin(); + serial_delay(); + } + + return byte; +} + +// Sends a byte with MSB ordering +static void __attribute__((noinline)) serial_write_byte(uint8_t data) { + uint8_t b = 8; + serial_output(); + while (b--) { + if (data & (1 << b)) { + serial_high(); + } else { + serial_low(); + } + serial_delay(); + } +} + +// interrupt handle to be used by the slave device +void interrupt_handler(void *arg) { + chSysLockFromISR(); + + sync_send(); + + // read mid pulses + serial_delay_blip(); + + uint8_t checksum_computed = 0; + int sstd_index = 0; + + sstd_index = serial_read_byte(); + sync_send(); + + split_transaction_desc_t *trans = &split_transaction_table[sstd_index]; + for (int i = 0; i < trans->initiator2target_buffer_size; ++i) { + split_trans_initiator2target_buffer(trans)[i] = serial_read_byte(); + sync_send(); + checksum_computed += split_trans_initiator2target_buffer(trans)[i]; + } + checksum_computed ^= 7; + uint8_t checksum_received = serial_read_byte(); + sync_send(); + + // wait for the sync to finish sending + serial_delay(); + + // Allow any slave processing to occur + if (trans->slave_callback) { + trans->slave_callback(trans->initiator2target_buffer_size, split_trans_initiator2target_buffer(trans), trans->target2initiator_buffer_size, split_trans_target2initiator_buffer(trans)); + } + + uint8_t checksum = 0; + for (int i = 0; i < trans->target2initiator_buffer_size; ++i) { + serial_write_byte(split_trans_target2initiator_buffer(trans)[i]); + sync_send(); + serial_delay_half(); + checksum += split_trans_target2initiator_buffer(trans)[i]; + } + serial_write_byte(checksum ^ 7); + sync_send(); + + // wait for the sync to finish sending + serial_delay(); + + *trans->status = (checksum_computed == checksum_received) ? TRANSACTION_ACCEPTED : TRANSACTION_DATA_ERROR; + + // end transaction + serial_input(); + + // TODO: remove extra delay between transactions + serial_delay(); + + chSysUnlockFromISR(); +} + +///////// +// start transaction by initiator +// +// int soft_serial_transaction(int sstd_index) +// +// Returns: +// TRANSACTION_END +// TRANSACTION_NO_RESPONSE +// TRANSACTION_DATA_ERROR +// this code is very time dependent, so we need to disable interrupts +int soft_serial_transaction(int sstd_index) { + if (sstd_index > NUM_TOTAL_TRANSACTIONS) return TRANSACTION_TYPE_ERROR; + split_transaction_desc_t *trans = &split_transaction_table[sstd_index]; + if (!trans->status) return TRANSACTION_TYPE_ERROR; // not registered + + // TODO: remove extra delay between transactions + serial_delay(); + + // this code is very time dependent, so we need to disable interrupts + chSysLock(); + + // signal to the slave that we want to start a transaction + serial_output(); + serial_low(); + serial_delay_blip(); + + // wait for the slaves response + serial_input(); + serial_high(); + serial_delay(); + + // check if the slave is present + if (serial_read_pin()) { + // slave failed to pull the line low, assume not present + dprintf("serial::NO_RESPONSE\n"); + chSysUnlock(); + return TRANSACTION_NO_RESPONSE; + } + + // if the slave is present syncronize with it + + uint8_t checksum = 0; + // send data to the slave + serial_write_byte(sstd_index); // first chunk is transaction id + sync_recv(); + + for (int i = 0; i < trans->initiator2target_buffer_size; ++i) { + serial_write_byte(split_trans_initiator2target_buffer(trans)[i]); + sync_recv(); + checksum += split_trans_initiator2target_buffer(trans)[i]; + } + serial_write_byte(checksum ^ 7); + sync_recv(); + + serial_delay(); + serial_delay(); // read mid pulses + + // receive data from the slave + uint8_t checksum_computed = 0; + for (int i = 0; i < trans->target2initiator_buffer_size; ++i) { + split_trans_target2initiator_buffer(trans)[i] = serial_read_byte(); + sync_recv(); + checksum_computed += split_trans_target2initiator_buffer(trans)[i]; + } + checksum_computed ^= 7; + uint8_t checksum_received = serial_read_byte(); + + sync_recv(); + serial_delay(); + + if ((checksum_computed) != (checksum_received)) { + dprintf("serial::FAIL[%u,%u,%u]\n", checksum_computed, checksum_received, sstd_index); + serial_output(); + serial_high(); + + chSysUnlock(); + return TRANSACTION_DATA_ERROR; + } + + // always, release the line when not in use + serial_high(); + serial_output(); + + chSysUnlock(); + return TRANSACTION_END; +} diff --git a/platforms/chibios/drivers/serial_usart.c b/platforms/chibios/drivers/serial_usart.c new file mode 100644 index 000000000000..124e4be685ed --- /dev/null +++ b/platforms/chibios/drivers/serial_usart.c @@ -0,0 +1,318 @@ +/* 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 "serial_usart.h" + +#if defined(SERIAL_USART_CONFIG) +static SerialConfig serial_config = SERIAL_USART_CONFIG; +#else +static SerialConfig serial_config = { + .speed = (SERIAL_USART_SPEED), /* speed - mandatory */ + .cr1 = (SERIAL_USART_CR1), + .cr2 = (SERIAL_USART_CR2), +# if !defined(SERIAL_USART_FULL_DUPLEX) + .cr3 = ((SERIAL_USART_CR3) | USART_CR3_HDSEL) /* activate half-duplex mode */ +# else + .cr3 = (SERIAL_USART_CR3) +# endif +}; +#endif + +static SerialDriver* serial_driver = &SERIAL_USART_DRIVER; + +static inline bool react_to_transactions(void); +static inline bool __attribute__((nonnull)) receive(uint8_t* destination, const size_t size); +static inline bool __attribute__((nonnull)) send(const uint8_t* source, const size_t size); +static inline int initiate_transaction(uint8_t sstd_index); +static inline void usart_clear(void); + +/** + * @brief Clear the receive input queue. + */ +static inline void usart_clear(void) { + osalSysLock(); + bool volatile queue_not_empty = !iqIsEmptyI(&serial_driver->iqueue); + osalSysUnlock(); + + while (queue_not_empty) { + osalSysLock(); + /* Hard reset the input queue. */ + iqResetI(&serial_driver->iqueue); + osalSysUnlock(); + /* Allow pending interrupts to preempt. + * Do not merge the lock/unlock blocks into one + * or the code will not work properly. + * The empty read adds a tiny amount of delay. */ + (void)queue_not_empty; + osalSysLock(); + queue_not_empty = !iqIsEmptyI(&serial_driver->iqueue); + osalSysUnlock(); + } +} + +/** + * @brief Blocking send of buffer with timeout. + * + * @return true Send success. + * @return false Send failed. + */ +static inline bool send(const uint8_t* source, const size_t size) { + bool success = (size_t)sdWriteTimeout(serial_driver, source, size, TIME_MS2I(SERIAL_USART_TIMEOUT)) == size; + +#if !defined(SERIAL_USART_FULL_DUPLEX) + if (success) { + /* Half duplex fills the input queue with the data we wrote - just throw it away. + Under the right circumstances (e.g. bad cables paired with high baud rates) + less bytes can be present in the input queue, therefore a timeout is needed. */ + uint8_t dump[size]; + return receive(dump, size); + } +#endif + + return success; +} + +/** + * @brief Blocking receive of size * bytes with timeout. + * + * @return true Receive success. + * @return false Receive failed. + */ +static inline bool receive(uint8_t* destination, const size_t size) { + bool success = (size_t)sdReadTimeout(serial_driver, destination, size, TIME_MS2I(SERIAL_USART_TIMEOUT)) == size; + return success; +} + +#if !defined(SERIAL_USART_FULL_DUPLEX) + +/** + * @brief Initiate pins for USART peripheral. Half-duplex configuration. + */ +__attribute__((weak)) void usart_init(void) { +# if defined(MCU_STM32) +# if defined(USE_GPIOV1) + palSetLineMode(SERIAL_USART_TX_PIN, PAL_MODE_ALTERNATE_OPENDRAIN); +# else + palSetLineMode(SERIAL_USART_TX_PIN, PAL_MODE_ALTERNATE(SERIAL_USART_TX_PAL_MODE) | PAL_OUTPUT_TYPE_OPENDRAIN); +# endif + +# if defined(USART_REMAP) + USART_REMAP; +# endif +# else +# pragma message "usart_init: MCU Familiy not supported by default, please supply your own init code by implementing usart_init() in your keyboard files." +# endif +} + +#else + +/** + * @brief Initiate pins for USART peripheral. Full-duplex configuration. + */ +__attribute__((weak)) void usart_init(void) { +# if defined(MCU_STM32) +# if defined(USE_GPIOV1) + 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_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) + USART_REMAP; +# endif +# else +# pragma message "usart_init: MCU Familiy not supported by default, please supply your own init code by implementing usart_init() in your keyboard files." +# endif +} + +#endif + +/** + * @brief Overridable master specific initializations. + */ +__attribute__((weak, nonnull)) void usart_master_init(SerialDriver** driver) { + (void)driver; + usart_init(); +} + +/** + * @brief Overridable slave specific initializations. + */ +__attribute__((weak, nonnull)) void usart_slave_init(SerialDriver** driver) { + (void)driver; + usart_init(); +} + +/** + * @brief This thread runs on the slave and responds to transactions initiated + * by the master. + */ +static THD_WORKING_AREA(waSlaveThread, 1024); +static THD_FUNCTION(SlaveThread, arg) { + (void)arg; + chRegSetThreadName("usart_tx_rx"); + + while (true) { + if (!react_to_transactions()) { + /* Clear the receive queue, to start with a clean slate. + * Parts of failed transactions or spurious bytes could still be in it. */ + usart_clear(); + } + } +} + +/** + * @brief Slave specific initializations. + */ +void soft_serial_target_init(void) { + usart_slave_init(&serial_driver); + + sdStart(serial_driver, &serial_config); + + /* Start transport thread. */ + chThdCreateStatic(waSlaveThread, sizeof(waSlaveThread), HIGHPRIO, SlaveThread, NULL); +} + +/** + * @brief React to transactions started by the master. + */ +static inline bool react_to_transactions(void) { + /* Wait until there is a transaction for us. */ + uint8_t sstd_index = (uint8_t)sdGet(serial_driver); + + /* Sanity check that we are actually responding to a valid transaction. */ + if (sstd_index >= NUM_TOTAL_TRANSACTIONS) { + return false; + } + + split_transaction_desc_t* trans = &split_transaction_table[sstd_index]; + + /* Send back the handshake which is XORed as a simple checksum, + to signal that the slave is ready to receive possible transaction buffers */ + sstd_index ^= HANDSHAKE_MAGIC; + if (!send(&sstd_index, sizeof(sstd_index))) { + *trans->status = TRANSACTION_DATA_ERROR; + return false; + } + + /* Receive transaction buffer from the master. If this transaction requires it.*/ + if (trans->initiator2target_buffer_size) { + if (!receive(split_trans_initiator2target_buffer(trans), trans->initiator2target_buffer_size)) { + *trans->status = TRANSACTION_DATA_ERROR; + return false; + } + } + + /* Allow any slave processing to occur. */ + if (trans->slave_callback) { + trans->slave_callback(trans->initiator2target_buffer_size, split_trans_initiator2target_buffer(trans), trans->initiator2target_buffer_size, split_trans_target2initiator_buffer(trans)); + } + + /* Send transaction buffer to the master. If this transaction requires it. */ + if (trans->target2initiator_buffer_size) { + if (!send(split_trans_target2initiator_buffer(trans), trans->target2initiator_buffer_size)) { + *trans->status = TRANSACTION_DATA_ERROR; + return false; + } + } + + *trans->status = TRANSACTION_ACCEPTED; + return true; +} + +/** + * @brief Master specific initializations. + */ +void soft_serial_initiator_init(void) { + usart_master_init(&serial_driver); + +#if defined(MCU_STM32) && defined(SERIAL_USART_PIN_SWAP) + serial_config.cr2 |= USART_CR2_SWAP; // master has swapped TX/RX pins +#endif + + sdStart(serial_driver, &serial_config); +} + +/** + * @brief Start transaction from the master half to the slave half. + * + * @param index Transaction Table index of the transaction to start. + * @return int TRANSACTION_NO_RESPONSE in case of Timeout. + * TRANSACTION_TYPE_ERROR in case of invalid transaction index. + * TRANSACTION_END in case of success. + */ +int soft_serial_transaction(int index) { + /* Clear the receive queue, to start with a clean slate. + * Parts of failed transactions or spurious bytes could still be in it. */ + usart_clear(); + return initiate_transaction((uint8_t)index); +} + +/** + * @brief Initiate transaction to slave half. + */ +static inline int initiate_transaction(uint8_t sstd_index) { + /* Sanity check that we are actually starting a valid transaction. */ + if (sstd_index >= NUM_TOTAL_TRANSACTIONS) { + dprintln("USART: Illegal transaction Id."); + return TRANSACTION_TYPE_ERROR; + } + + split_transaction_desc_t* trans = &split_transaction_table[sstd_index]; + + /* Transaction is not registered. Abort. */ + if (!trans->status) { + dprintln("USART: Transaction not registered."); + return TRANSACTION_TYPE_ERROR; + } + + /* Send transaction table index to the slave, which doubles as basic handshake token. */ + if (!send(&sstd_index, sizeof(sstd_index))) { + dprintln("USART: Send Handshake failed."); + return TRANSACTION_TYPE_ERROR; + } + + uint8_t sstd_index_shake = 0xFF; + + /* Which we always read back first so that we can error out correctly. + * - due to the half duplex limitations on return codes, we always have to read *something*. + * - without the read, write only transactions *always* succeed, even during the boot process where the slave is not ready. + */ + if (!receive(&sstd_index_shake, sizeof(sstd_index_shake)) || (sstd_index_shake != (sstd_index ^ HANDSHAKE_MAGIC))) { + dprintln("USART: Handshake failed."); + return TRANSACTION_NO_RESPONSE; + } + + /* Send transaction buffer to the slave. If this transaction requires it. */ + if (trans->initiator2target_buffer_size) { + if (!send(split_trans_initiator2target_buffer(trans), trans->initiator2target_buffer_size)) { + dprintln("USART: Send failed."); + return TRANSACTION_NO_RESPONSE; + } + } + + /* Receive transaction buffer from the slave. If this transaction requires it. */ + if (trans->target2initiator_buffer_size) { + if (!receive(split_trans_target2initiator_buffer(trans), trans->target2initiator_buffer_size)) { + dprintln("USART: Receive failed."); + return TRANSACTION_NO_RESPONSE; + } + } + + return TRANSACTION_END; +} diff --git a/platforms/chibios/drivers/serial_usart.h b/platforms/chibios/drivers/serial_usart.h new file mode 100644 index 000000000000..7b135b31e055 --- /dev/null +++ b/platforms/chibios/drivers/serial_usart.h @@ -0,0 +1,116 @@ +/* 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 "quantum.h" +#include "serial.h" +#include "printf.h" + +#include <ch.h> +#include <hal.h> + +#if !defined(SERIAL_USART_DRIVER) +# define SERIAL_USART_DRIVER SD1 +#endif + +#if !defined(USE_GPIOV1) +/* The default PAL alternate modes are used to signal that the pins are used for USART. */ +# if !defined(SERIAL_USART_TX_PAL_MODE) +# define SERIAL_USART_TX_PAL_MODE 7 +# endif +# if !defined(SERIAL_USART_RX_PAL_MODE) +# define SERIAL_USART_RX_PAL_MODE 7 +# endif +#endif + +#if defined(SOFT_SERIAL_PIN) +# define SERIAL_USART_TX_PIN SOFT_SERIAL_PIN +#endif + +#if !defined(SERIAL_USART_TX_PIN) +# define SERIAL_USART_TX_PIN A9 +#endif + +#if !defined(SERIAL_USART_RX_PIN) +# define SERIAL_USART_RX_PIN A10 +#endif + +#if !defined(USART_CR1_M0) +# define USART_CR1_M0 USART_CR1_M // some platforms (f1xx) dont have this so +#endif + +#if !defined(SERIAL_USART_CR1) +# define SERIAL_USART_CR1 (USART_CR1_PCE | USART_CR1_PS | USART_CR1_M0) // parity enable, odd parity, 9 bit length +#endif + +#if !defined(SERIAL_USART_CR2) +# define SERIAL_USART_CR2 (USART_CR2_STOP_1) // 2 stop bits +#endif + +#if !defined(SERIAL_USART_CR3) +# define SERIAL_USART_CR3 0 +#endif + +#if defined(USART1_REMAP) +# define USART_REMAP \ + do { \ + (AFIO->MAPR |= AFIO_MAPR_USART1_REMAP); \ + } while (0) +#elif defined(USART2_REMAP) +# define USART_REMAP \ + do { \ + (AFIO->MAPR |= AFIO_MAPR_USART2_REMAP); \ + } while (0) +#elif defined(USART3_PARTIALREMAP) +# define USART_REMAP \ + do { \ + (AFIO->MAPR |= AFIO_MAPR_USART3_REMAP_PARTIALREMAP); \ + } while (0) +#elif defined(USART3_FULLREMAP) +# define USART_REMAP \ + do { \ + (AFIO->MAPR |= AFIO_MAPR_USART3_REMAP_FULLREMAP); \ + } while (0) +#endif + +#if !defined(SELECT_SOFT_SERIAL_SPEED) +# define SELECT_SOFT_SERIAL_SPEED 1 +#endif + +#if defined(SERIAL_USART_SPEED) +// Allow advanced users to directly set SERIAL_USART_SPEED +#elif SELECT_SOFT_SERIAL_SPEED == 0 +# define SERIAL_USART_SPEED 460800 +#elif SELECT_SOFT_SERIAL_SPEED == 1 +# define SERIAL_USART_SPEED 230400 +#elif SELECT_SOFT_SERIAL_SPEED == 2 +# define SERIAL_USART_SPEED 115200 +#elif SELECT_SOFT_SERIAL_SPEED == 3 +# define SERIAL_USART_SPEED 57600 +#elif SELECT_SOFT_SERIAL_SPEED == 4 +# define SERIAL_USART_SPEED 38400 +#elif SELECT_SOFT_SERIAL_SPEED == 5 +# define SERIAL_USART_SPEED 19200 +#else +# error invalid SELECT_SOFT_SERIAL_SPEED value +#endif + +#if !defined(SERIAL_USART_TIMEOUT) +# define SERIAL_USART_TIMEOUT 20 +#endif + +#define HANDSHAKE_MAGIC 7 diff --git a/platforms/chibios/drivers/spi_master.c b/platforms/chibios/drivers/spi_master.c new file mode 100644 index 000000000000..dde0bb059792 --- /dev/null +++ b/platforms/chibios/drivers/spi_master.c @@ -0,0 +1,260 @@ +/* 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/>. + */ + +#include "spi_master.h" + +#include "timer.h" + +static pin_t currentSlavePin = NO_PIN; + +#if defined(K20x) || defined(KL2x) +static SPIConfig spiConfig = {NULL, 0, 0, 0}; +#else +static SPIConfig spiConfig = {false, NULL, 0, 0, 0, 0}; +#endif + +__attribute__((weak)) void spi_init(void) { + static bool is_initialised = false; + if (!is_initialised) { + is_initialised = true; + + // Try releasing special pins for a short time + setPinInput(SPI_SCK_PIN); + setPinInput(SPI_MOSI_PIN); + setPinInput(SPI_MISO_PIN); + + chThdSleepMilliseconds(10); +#if defined(USE_GPIOV1) + palSetPadMode(PAL_PORT(SPI_SCK_PIN), PAL_PAD(SPI_SCK_PIN), SPI_SCK_PAL_MODE); + 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_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 + } +} + +bool spi_start(pin_t slavePin, bool lsbFirst, uint8_t mode, uint16_t divisor) { + if (currentSlavePin != NO_PIN || slavePin == NO_PIN) { + return false; + } + +#ifndef WB32F3G71xx + uint16_t roundedDivisor = 2; + while (roundedDivisor < divisor) { + roundedDivisor <<= 1; + } + + if (roundedDivisor < 2 || roundedDivisor > 256) { + return false; + } +#endif + +#if defined(K20x) || defined(KL2x) + spiConfig.tar0 = SPIx_CTARn_FMSZ(7) | SPIx_CTARn_ASC(1); + + if (lsbFirst) { + spiConfig.tar0 |= SPIx_CTARn_LSBFE; + } + + switch (mode) { + case 0: + break; + case 1: + spiConfig.tar0 |= SPIx_CTARn_CPHA; + break; + case 2: + spiConfig.tar0 |= SPIx_CTARn_CPOL; + break; + case 3: + spiConfig.tar0 |= SPIx_CTARn_CPHA | SPIx_CTARn_CPOL; + break; + } + + switch (roundedDivisor) { + case 2: + spiConfig.tar0 |= SPIx_CTARn_BR(0); + break; + case 4: + spiConfig.tar0 |= SPIx_CTARn_BR(1); + break; + case 8: + spiConfig.tar0 |= SPIx_CTARn_BR(3); + break; + case 16: + spiConfig.tar0 |= SPIx_CTARn_BR(4); + break; + case 32: + spiConfig.tar0 |= SPIx_CTARn_BR(5); + break; + case 64: + spiConfig.tar0 |= SPIx_CTARn_BR(6); + break; + case 128: + spiConfig.tar0 |= SPIx_CTARn_BR(7); + break; + case 256: + 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; + +#elif defined(WB32F3G71xx) + if (!lsbFirst) { + osalDbgAssert(lsbFirst != FALSE, "unsupported lsbFirst"); + } + + if (divisor < 1) { + return false; + } + + spiConfig.SPI_BaudRatePrescaler = (divisor << 2); + + switch (mode) { + case 0: + spiConfig.SPI_CPHA = SPI_CPHA_1Edge; + spiConfig.SPI_CPOL = SPI_CPOL_Low; + break; + case 1: + spiConfig.SPI_CPHA = SPI_CPHA_2Edge; + spiConfig.SPI_CPOL = SPI_CPOL_Low; + break; + case 2: + spiConfig.SPI_CPHA = SPI_CPHA_1Edge; + spiConfig.SPI_CPOL = SPI_CPOL_High; + break; + case 3: + spiConfig.SPI_CPHA = SPI_CPHA_2Edge; + spiConfig.SPI_CPOL = SPI_CPOL_High; + break; + } + +#else + spiConfig.cr1 = 0; + + if (lsbFirst) { + spiConfig.cr1 |= SPI_CR1_LSBFIRST; + } + + switch (mode) { + case 0: + break; + case 1: + spiConfig.cr1 |= SPI_CR1_CPHA; + break; + case 2: + spiConfig.cr1 |= SPI_CR1_CPOL; + break; + case 3: + spiConfig.cr1 |= SPI_CR1_CPHA | SPI_CR1_CPOL; + break; + } + + switch (roundedDivisor) { + case 2: + break; + case 4: + spiConfig.cr1 |= SPI_CR1_BR_0; + break; + case 8: + spiConfig.cr1 |= SPI_CR1_BR_1; + break; + case 16: + spiConfig.cr1 |= SPI_CR1_BR_1 | SPI_CR1_BR_0; + break; + case 32: + spiConfig.cr1 |= SPI_CR1_BR_2; + break; + case 64: + spiConfig.cr1 |= SPI_CR1_BR_2 | SPI_CR1_BR_0; + break; + case 128: + spiConfig.cr1 |= SPI_CR1_BR_2 | SPI_CR1_BR_1; + break; + case 256: + spiConfig.cr1 |= SPI_CR1_BR_2 | SPI_CR1_BR_1 | SPI_CR1_BR_0; + break; + } +#endif + + currentSlavePin = slavePin; + spiConfig.ssport = PAL_PORT(slavePin); + spiConfig.sspad = PAL_PAD(slavePin); + + setPinOutput(slavePin); + spiStart(&SPI_DRIVER, &spiConfig); + spiSelect(&SPI_DRIVER); + + return true; +} + +spi_status_t spi_write(uint8_t data) { + uint8_t rxData; + spiExchange(&SPI_DRIVER, 1, &data, &rxData); + + return rxData; +} + +spi_status_t spi_read(void) { + uint8_t data = 0; + spiReceive(&SPI_DRIVER, 1, &data); + + return data; +} + +spi_status_t spi_transmit(const uint8_t *data, uint16_t length) { + spiSend(&SPI_DRIVER, length, data); + return SPI_STATUS_SUCCESS; +} + +spi_status_t spi_receive(uint8_t *data, uint16_t length) { + spiReceive(&SPI_DRIVER, length, data); + return SPI_STATUS_SUCCESS; +} + +void spi_stop(void) { + if (currentSlavePin != NO_PIN) { + spiUnselect(&SPI_DRIVER); + spiStop(&SPI_DRIVER); + currentSlavePin = NO_PIN; + } +} diff --git a/platforms/chibios/drivers/spi_master.h b/platforms/chibios/drivers/spi_master.h new file mode 100644 index 000000000000..6a3ce481f1ac --- /dev/null +++ b/platforms/chibios/drivers/spi_master.h @@ -0,0 +1,93 @@ +/* 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 + +#include <ch.h> +#include <hal.h> +#include <stdbool.h> + +#include "gpio.h" +#include "chibios_config.h" + +#ifndef SPI_DRIVER +# define SPI_DRIVER SPID2 +#endif + +#ifndef SPI_SCK_PIN +# define SPI_SCK_PIN B13 +#endif + +#ifndef SPI_SCK_PAL_MODE +# if defined(USE_GPIOV1) +# define SPI_SCK_PAL_MODE PAL_MODE_ALTERNATE_PUSHPULL +# else +# define SPI_SCK_PAL_MODE 5 +# endif +#endif + +#ifndef SPI_MOSI_PIN +# define SPI_MOSI_PIN B15 +#endif + +#ifndef SPI_MOSI_PAL_MODE +# if defined(USE_GPIOV1) +# define SPI_MOSI_PAL_MODE PAL_MODE_ALTERNATE_PUSHPULL +# else +# define SPI_MOSI_PAL_MODE 5 +# endif +#endif + +#ifndef SPI_MISO_PIN +# define SPI_MISO_PIN B14 +#endif + +#ifndef SPI_MISO_PAL_MODE +# if defined(USE_GPIOV1) +# define SPI_MISO_PAL_MODE PAL_MODE_ALTERNATE_PUSHPULL +# else +# define SPI_MISO_PAL_MODE 5 +# endif +#endif + +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/platforms/chibios/drivers/uart.c b/platforms/chibios/drivers/uart.c new file mode 100644 index 000000000000..d2ea5d6415c4 --- /dev/null +++ b/platforms/chibios/drivers/uart.c @@ -0,0 +1,58 @@ +/* Copyright 2021 + * + * This program is free software: you can 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/>. + */ + +#include "uart.h" + +#include "quantum.h" + +#if defined(WB32F3G71xx) +static SerialConfig serialConfig = {SERIAL_DEFAULT_BITRATE, SD1_WRDLEN, SD1_STPBIT, SD1_PARITY, SD1_ATFLCT}; +#else +static SerialConfig serialConfig = {SERIAL_DEFAULT_BITRATE, SD1_CR1, SD1_CR2, SD1_CR3}; +#endif + +void uart_init(uint32_t baud) { + static bool is_initialised = false; + + if (!is_initialised) { + is_initialised = true; + + serialConfig.speed = baud; + +#if defined(USE_GPIOV1) + 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_OUTPUT_TYPE_OPENDRAIN); + palSetLineMode(SD1_RX_PIN, PAL_MODE_ALTERNATE(SD1_RX_PAL_MODE) | PAL_OUTPUT_TYPE_OPENDRAIN); +#endif + sdStart(&SERIAL_DRIVER, &serialConfig); + } +} + +void uart_write(uint8_t data) { sdPut(&SERIAL_DRIVER, c); } + +uint8_t uart_read(void) { + msg_t res = sdGet(&SERIAL_DRIVER); + + return (uint8_t)res; +} + +void uart_transmit(const uint8_t *data, uint16_t length) { sdWrite(&SERIAL_DRIVER, data, length); } + +void uart_receive(uint8_t *data, uint16_t length) { sdRead(&SERIAL_DRIVER, data, length); } + +bool uart_available(void) { return !sdGetWouldBlock(&SERIAL_DRIVER); } diff --git a/platforms/chibios/drivers/uart.h b/platforms/chibios/drivers/uart.h new file mode 100644 index 000000000000..603d51037b15 --- /dev/null +++ b/platforms/chibios/drivers/uart.h @@ -0,0 +1,97 @@ +/* Copyright 2021 + * + * This program is free software: you can 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 <stdint.h> + +#include <hal.h> + +#ifndef SERIAL_DRIVER +# define SERIAL_DRIVER SD1 +#endif + +#ifndef SD1_TX_PIN +# define SD1_TX_PIN A9 +#endif + +#ifndef SD1_TX_PAL_MODE +# define SD1_TX_PAL_MODE 7 +#endif + +#ifndef SD1_RX_PIN +# define SD1_RX_PIN A10 +#endif + +#ifndef SD1_RX_PAL_MODE +# define SD1_RX_PAL_MODE 7 +#endif + +#ifndef SD1_CTS_PIN +# define SD1_CTS_PIN A11 +#endif + +#ifndef SD1_CTS_PAL_MODE +# define SD1_CTS_PAL_MODE 7 +#endif + +#ifndef SD1_RTS_PIN +# define SD1_RTS_PIN A12 +#endif + +#ifndef SD1_RTS_PAL_MODE +# define SD1_RTS_PAL_MODE 7 +#endif + +#ifndef SD1_CR1 +# define SD1_CR1 0 +#endif + +#ifndef SD1_CR2 +# define SD1_CR2 0 +#endif + +#ifndef SD1_CR3 +# define SD1_CR3 0 +#endif + +#ifndef SD1_WRDLEN +# define SD1_WRDLEN 3 +#endif + +#ifndef SD1_STPBIT +# define SD1_STPBIT 0 +#endif + +#ifndef SD1_PARITY +# define SD1_PARITY 0 +#endif + +#ifndef SD1_ATFLCT +# define SD1_ATFLCT 0 +#endif + +void uart_init(uint32_t baud); + +void uart_write(uint8_t data); + +uint8_t uart_read(void); + +void uart_transmit(const uint8_t *data, uint16_t length); + +void uart_receive(uint8_t *data, uint16_t length); + +bool uart_available(void); diff --git a/drivers/chibios/usbpd_stm32g4.c b/platforms/chibios/drivers/usbpd_stm32g4.c similarity index 100% rename from drivers/chibios/usbpd_stm32g4.c rename to platforms/chibios/drivers/usbpd_stm32g4.c diff --git a/platforms/chibios/drivers/ws2812.c b/platforms/chibios/drivers/ws2812.c new file mode 100644 index 000000000000..7e870661dec2 --- /dev/null +++ b/platforms/chibios/drivers/ws2812.c @@ -0,0 +1,107 @@ +#include "quantum.h" +#include "ws2812.h" +#include <ch.h> +#include <hal.h> + +/* Adapted from https://github.com/bigjosh/SimpleNeoPixelDemo/ */ + +#ifndef NOP_FUDGE +# if defined(STM32F0XX) || defined(STM32F1XX) || defined(GD32VF103) || defined(STM32F3XX) || defined(STM32F4XX) || defined(STM32L0XX) +# define NOP_FUDGE 0.4 +# else +# error("NOP_FUDGE configuration required") +# define NOP_FUDGE 1 // this just pleases the compile so the above error is easier to spot +# endif +#endif + +// Push Pull or Open Drain Configuration +// Default Push Pull +#ifndef WS2812_EXTERNAL_PULLUP +# define WS2812_OUTPUT_MODE PAL_MODE_OUTPUT_PUSHPULL +#else +# define WS2812_OUTPUT_MODE PAL_MODE_OUTPUT_OPENDRAIN +#endif + +// The reset gap can be 6000 ns, but depending on the LED strip it may have to be increased +// to values like 600000 ns. If it is too small, the pixels will show nothing most of the time. +#ifndef WS2812_RES +# define WS2812_RES (1000 * WS2812_TRST_US) // Width of the low gap between bits to cause a frame to latch +#endif + +#define NUMBER_NOPS 6 +#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) + +#define wait_ns(x) \ + do { \ + for (int i = 0; i < NS_TO_CYCLES(x); i++) { \ + __asm__ volatile("nop\n\t" \ + "nop\n\t" \ + "nop\n\t" \ + "nop\n\t" \ + "nop\n\t" \ + "nop\n\t"); \ + } \ + } while (0) + +void sendByte(uint8_t byte) { + // WS2812 protocol wants most significant bits first + for (unsigned char bit = 0; bit < 8; bit++) { + bool is_one = byte & (1 << (7 - bit)); + // using something like wait_ns(is_one ? T1L : T0L) here throws off timings + if (is_one) { + // 1 + writePinHigh(RGB_DI_PIN); + wait_ns(WS2812_T1H); + writePinLow(RGB_DI_PIN); + wait_ns(WS2812_T1L); + } else { + // 0 + writePinHigh(RGB_DI_PIN); + wait_ns(WS2812_T0H); + writePinLow(RGB_DI_PIN); + wait_ns(WS2812_T0L); + } + } +} + +void ws2812_init(void) { palSetLineMode(RGB_DI_PIN, WS2812_OUTPUT_MODE); } + +// Setleds for standard RGB +void ws2812_setleds(LED_TYPE *ledarray, uint16_t leds) { + static bool s_init = false; + if (!s_init) { + ws2812_init(); + s_init = true; + } + + // this code is very time dependent, so we need to disable interrupts + chSysLock(); + + for (uint8_t i = 0; i < leds; i++) { + // WS2812 protocol dictates grb order +#if (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_GRB) + sendByte(ledarray[i].g); + sendByte(ledarray[i].r); + sendByte(ledarray[i].b); +#elif (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_RGB) + sendByte(ledarray[i].r); + sendByte(ledarray[i].g); + sendByte(ledarray[i].b); +#elif (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_BGR) + sendByte(ledarray[i].b); + sendByte(ledarray[i].g); + sendByte(ledarray[i].r); +#endif + +#ifdef RGBW + sendByte(ledarray[i].w); +#endif + } + + wait_ns(WS2812_RES); + + chSysUnlock(); +} diff --git a/drivers/chibios/ws2812_pwm.c b/platforms/chibios/drivers/ws2812_pwm.c similarity index 85% rename from drivers/chibios/ws2812_pwm.c rename to platforms/chibios/drivers/ws2812_pwm.c index e6af55b6b361..19ea3cfe8ac6 100644 --- a/drivers/chibios/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_RESET_BIT_N (1000 * WS2812_TRST_US / 1250) -#define WS2812_COLOR_BIT_N (RGBLED_NUM * 24) /**< Number of data bits */ +#define WS2812_COLOR_BITS (WS2812_CHANNELS * 8) +#define WS2812_RESET_BIT_N (1000 * WS2812_TRST_US / WS2812_TIMING) +#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/drivers/chibios/ws2812_spi.c b/platforms/chibios/drivers/ws2812_spi.c similarity index 78% rename from drivers/chibios/ws2812_spi.c rename to platforms/chibios/drivers/ws2812_spi.c index 377a929b9445..ba471e0b8e5b 100644 --- a/drivers/chibios/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 @@ -41,23 +37,23 @@ // F072 fpclk = 48MHz // 48/16 = 3Mhz #if WS2812_SPI_DIVISOR == 2 -# define WS2812_SPI_DIVISOR (0) +# define WS2812_SPI_DIVISOR_CR1_BR_X (0) #elif WS2812_SPI_DIVISOR == 4 -# define WS2812_SPI_DIVISOR (SPI_CR1_BR_0) +# define WS2812_SPI_DIVISOR_CR1_BR_X (SPI_CR1_BR_0) #elif WS2812_SPI_DIVISOR == 8 -# define WS2812_SPI_DIVISOR (SPI_CR1_BR_1) +# define WS2812_SPI_DIVISOR_CR1_BR_X (SPI_CR1_BR_1) #elif WS2812_SPI_DIVISOR == 16 // same as default -# define WS2812_SPI_DIVISOR (SPI_CR1_BR_1 | SPI_CR1_BR_0) +# define WS2812_SPI_DIVISOR_CR1_BR_X (SPI_CR1_BR_1 | SPI_CR1_BR_0) #elif WS2812_SPI_DIVISOR == 32 -# define WS2812_SPI_DIVISOR (SPI_CR1_BR_2) +# define WS2812_SPI_DIVISOR_CR1_BR_X (SPI_CR1_BR_2) #elif WS2812_SPI_DIVISOR == 64 -# define WS2812_SPI_DIVISOR (SPI_CR1_BR_2 | SPI_CR1_BR_0) +# define WS2812_SPI_DIVISOR_CR1_BR_X (SPI_CR1_BR_2 | SPI_CR1_BR_0) #elif WS2812_SPI_DIVISOR == 128 -# define WS2812_SPI_DIVISOR (SPI_CR1_BR_2 | SPI_CR1_BR_1) +# define WS2812_SPI_DIVISOR_CR1_BR_X (SPI_CR1_BR_2 | SPI_CR1_BR_1) #elif WS2812_SPI_DIVISOR == 256 -# define WS2812_SPI_DIVISOR (SPI_CR1_BR_2 | SPI_CR1_BR_1 | SPI_CR1_BR_0) +# define WS2812_SPI_DIVISOR_CR1_BR_X (SPI_CR1_BR_2 | SPI_CR1_BR_1 | SPI_CR1_BR_0) #else -# define WS2812_SPI_DIVISOR (SPI_CR1_BR_1 | SPI_CR1_BR_0) // default +# define WS2812_SPI_DIVISOR_CR1_BR_X (SPI_CR1_BR_1 | SPI_CR1_BR_0) // default #endif // Use SPI circular buffer @@ -68,16 +64,20 @@ #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 RESET_SIZE (1000 * WS2812_TRST_US / (2 * WS2812_TIMING)) #define PREAMBLE_SIZE 4 static uint8_t txbuf[PREAMBLE_SIZE + DATA_SIZE + RESET_SIZE] = {0}; @@ -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) { @@ -126,7 +129,7 @@ void ws2812_init(void) { #endif // WS2812_SPI_SCK_PIN // TODO: more dynamic baudrate - static const SPIConfig spicfg = {WS2812_SPI_BUFFER_MODE, NULL, PAL_PORT(RGB_DI_PIN), PAL_PAD(RGB_DI_PIN), WS2812_SPI_DIVISOR}; + static const SPIConfig spicfg = {WS2812_SPI_BUFFER_MODE, NULL, PAL_PORT(RGB_DI_PIN), PAL_PAD(RGB_DI_PIN), WS2812_SPI_DIVISOR_CR1_BR_X}; spiAcquireBus(&WS2812_SPI); /* Acquire ownership of the bus. */ spiStart(&WS2812_SPI, &spicfg); /* Setup transfer parameters. */ diff --git a/platforms/chibios/eeprom_stm32.c b/platforms/chibios/eeprom_stm32.c new file mode 100644 index 000000000000..acc6a48516c9 --- /dev/null +++ b/platforms/chibios/eeprom_stm32.c @@ -0,0 +1,687 @@ +/* + * This software is experimental and a work in progress. + * Under no circumstances should these files be used in relation to any critical system(s). + * Use of these files is at your own risk. + * + * 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. + * + * This files are free to use from http://engsta.com/stm32-flash-memory-eeprom-emulator/ by + * Artur F. + * + * Modifications for QMK and STM32F303 by Yiancar + * Modifications to add flash wear leveling by Ilya Zhuravlev + * Modifications to increase flash density by Don Kjer + */ + +#include <stdio.h> +#include <stdbool.h> +#include "util.h" +#include "debug.h" +#include "eeprom_stm32.h" +#include "flash_stm32.h" + +/* + * We emulate eeprom by writing a snapshot compacted view of eeprom contents, + * followed by a write log of any change since that snapshot: + * + * === SIMULATED EEPROM CONTENTS === + * + * ┌─ Compacted ┬ Write Log ─┐ + * │............│[BYTE][BYTE]│ + * │FFFF....FFFF│[WRD0][WRD1]│ + * │FFFFFFFFFFFF│[WORD][NEXT]│ + * │....FFFFFFFF│[BYTE][WRD0]│ + * ├────────────┼────────────┤ + * └──PAGE_BASE │ │ + * PAGE_LAST─┴─WRITE_BASE │ + * WRITE_LAST ┘ + * + * Compacted contents are the 1's complement of the actual EEPROM contents. + * e.g. An 'FFFF' represents a '0000' value. + * + * The size of the 'compacted' area is equal to the size of the 'emulated' eeprom. + * The size of the compacted-area and write log are configurable, and the combined + * size of Compacted + WriteLog is a multiple FEE_PAGE_SIZE, which is MCU dependent. + * Simulated Eeprom contents are located at the end of available flash space. + * + * The following configuration defines can be set: + * + * FEE_PAGE_COUNT # Total number of pages to use for eeprom simulation (Compact + Write log) + * FEE_DENSITY_BYTES # Size of simulated eeprom. (Defaults to half the space allocated by FEE_PAGE_COUNT) + * NOTE: The current implementation does not include page swapping, + * and FEE_DENSITY_BYTES will consume that amount of RAM as a cached view of actual EEPROM contents. + * + * The maximum size of FEE_DENSITY_BYTES is currently 16384. The write log size equals + * FEE_PAGE_COUNT * FEE_PAGE_SIZE - FEE_DENSITY_BYTES. + * The larger the write log, the less frequently the compacted area needs to be rewritten. + * + * + * *** General Algorithm *** + * + * During initialization: + * The contents of the Compacted-flash area are loaded and the 1's complement value + * is cached into memory (e.g. 0xFFFF in Flash represents 0x0000 in cache). + * Write log entries are processed until a 0xFFFF is reached. + * Each log entry updates a byte or word in the cache. + * + * During reads: + * EEPROM contents are given back directly from the cache in memory. + * + * During writes: + * The contents of the cache is updated first. + * If the Compacted-flash area corresponding to the write address is unprogrammed, the 1's complement of the value is written directly into Compacted-flash + * Otherwise: + * If the write log is full, erase both the Compacted-flash area and the Write log, then write cached contents to the Compacted-flash area. + * Otherwise a Write log entry is constructed and appended to the next free position in the Write log. + * + * + * *** Write Log Structure *** + * + * Write log entries allow for optimized byte writes to addresses below 128. Writing 0 or 1 words are also optimized when word-aligned. + * + * === WRITE LOG ENTRY FORMATS === + * + * ╔═══ Byte-Entry ══╗ + * ║0XXXXXXX║YYYYYYYY║ + * ║ └──┬──┘║└──┬───┘║ + * ║ Address║ Value ║ + * ╚════════╩════════╝ + * 0 <= Address < 0x80 (128) + * + * ╔ Word-Encoded 0 ╗ + * ║100XXXXXXXXXXXXX║ + * ║ │└─────┬─────┘║ + * ║ │Address >> 1 ║ + * ║ └── Value: 0 ║ + * ╚════════════════╝ + * 0 <= Address <= 0x3FFE (16382) + * + * ╔ Word-Encoded 1 ╗ + * ║101XXXXXXXXXXXXX║ + * ║ │└─────┬─────┘║ + * ║ │Address >> 1 ║ + * ║ └── Value: 1 ║ + * ╚════════════════╝ + * 0 <= Address <= 0x3FFE (16382) + * + * ╔═══ Reserved ═══╗ + * ║110XXXXXXXXXXXXX║ + * ╚════════════════╝ + * + * ╔═══════════ Word-Next ═══════════╗ + * ║111XXXXXXXXXXXXX║YYYYYYYYYYYYYYYY║ + * ║ └─────┬─────┘║└───────┬──────┘║ + * ║(Address-128)>>1║ ~Value ║ + * ╚════════════════╩════════════════╝ + * ( 0 <= Address < 0x0080 (128): Reserved) + * 0x80 <= Address <= 0x3FFE (16382) + * + * Write Log entry ranges: + * 0x0000 ... 0x7FFF - Byte-Entry; address is (Entry & 0x7F00) >> 4; value is (Entry & 0xFF) + * 0x8000 ... 0x9FFF - Word-Encoded 0; address is (Entry & 0x1FFF) << 1; value is 0 + * 0xA000 ... 0xBFFF - Word-Encoded 1; address is (Entry & 0x1FFF) << 1; value is 1 + * 0xC000 ... 0xDFFF - Reserved + * 0xE000 ... 0xFFBF - Word-Next; address is (Entry & 0x1FFF) << 1 + 0x80; value is ~(Next_Entry) + * 0xFFC0 ... 0xFFFE - Reserved + * 0xFFFF - Unprogrammed + * + */ + +#include "eeprom_stm32_defs.h" +#if !defined(FEE_PAGE_SIZE) || !defined(FEE_PAGE_COUNT) || !defined(FEE_MCU_FLASH_SIZE) || !defined(FEE_PAGE_BASE_ADDRESS) +# error "not implemented." +#endif + +/* These bits are used for optimizing encoding of bytes, 0 and 1 */ +#define FEE_WORD_ENCODING 0x8000 +#define FEE_VALUE_NEXT 0x6000 +#define FEE_VALUE_RESERVED 0x4000 +#define FEE_VALUE_ENCODED 0x2000 +#define FEE_BYTE_RANGE 0x80 + +/* Addressable range 16KByte: 0 <-> (0x1FFF << 1) */ +#define FEE_ADDRESS_MAX_SIZE 0x4000 + +/* Flash word value after erase */ +#define FEE_EMPTY_WORD ((uint16_t)0xFFFF) + +/* Size of combined compacted eeprom and write log pages */ +#define FEE_DENSITY_MAX_SIZE (FEE_PAGE_COUNT * FEE_PAGE_SIZE) + +#ifndef FEE_MCU_FLASH_SIZE_IGNORE_CHECK /* *TODO: Get rid of this check */ +# if FEE_DENSITY_MAX_SIZE > (FEE_MCU_FLASH_SIZE * 1024) +# pragma message STR(FEE_DENSITY_MAX_SIZE) " > " STR(FEE_MCU_FLASH_SIZE * 1024) +# error emulated eeprom: FEE_DENSITY_MAX_SIZE is greater than available flash size +# endif +#endif + +/* Size of emulated eeprom */ +#ifdef FEE_DENSITY_BYTES +# if (FEE_DENSITY_BYTES > FEE_DENSITY_MAX_SIZE) +# pragma message STR(FEE_DENSITY_BYTES) " > " STR(FEE_DENSITY_MAX_SIZE) +# error emulated eeprom: FEE_DENSITY_BYTES exceeds FEE_DENSITY_MAX_SIZE +# endif +# if (FEE_DENSITY_BYTES == FEE_DENSITY_MAX_SIZE) +# pragma message STR(FEE_DENSITY_BYTES) " == " STR(FEE_DENSITY_MAX_SIZE) +# warning emulated eeprom: FEE_DENSITY_BYTES leaves no room for a write log. This will greatly increase the flash wear rate! +# endif +# if FEE_DENSITY_BYTES > FEE_ADDRESS_MAX_SIZE +# pragma message STR(FEE_DENSITY_BYTES) " > " STR(FEE_ADDRESS_MAX_SIZE) +# error emulated eeprom: FEE_DENSITY_BYTES is greater than FEE_ADDRESS_MAX_SIZE allows +# endif +# if ((FEE_DENSITY_BYTES) % 2) == 1 +# error emulated eeprom: FEE_DENSITY_BYTES must be even +# endif +#else +/* Default to half of allocated space used for emulated eeprom, half for write log */ +# define FEE_DENSITY_BYTES (FEE_PAGE_COUNT * FEE_PAGE_SIZE / 2) +#endif + +/* Size of write log */ +#ifdef FEE_WRITE_LOG_BYTES +# if ((FEE_DENSITY_BYTES + FEE_WRITE_LOG_BYTES) > FEE_DENSITY_MAX_SIZE) +# pragma message STR(FEE_DENSITY_BYTES) " + " STR(FEE_WRITE_LOG_BYTES) " > " STR(FEE_DENSITY_MAX_SIZE) +# error emulated eeprom: FEE_WRITE_LOG_BYTES exceeds remaining FEE_DENSITY_MAX_SIZE +# endif +# if ((FEE_WRITE_LOG_BYTES) % 2) == 1 +# error emulated eeprom: FEE_WRITE_LOG_BYTES must be even +# endif +#else +/* Default to use all remaining space */ +# define FEE_WRITE_LOG_BYTES (FEE_PAGE_COUNT * FEE_PAGE_SIZE - FEE_DENSITY_BYTES) +#endif + +/* Start of the emulated eeprom compacted flash area */ +#define FEE_COMPACTED_BASE_ADDRESS FEE_PAGE_BASE_ADDRESS +/* End of the emulated eeprom compacted flash area */ +#define FEE_COMPACTED_LAST_ADDRESS (FEE_COMPACTED_BASE_ADDRESS + FEE_DENSITY_BYTES) +/* Start of the emulated eeprom write log */ +#define FEE_WRITE_LOG_BASE_ADDRESS FEE_COMPACTED_LAST_ADDRESS +/* End of the emulated eeprom write log */ +#define FEE_WRITE_LOG_LAST_ADDRESS (FEE_WRITE_LOG_BASE_ADDRESS + FEE_WRITE_LOG_BYTES) + +#if defined(DYNAMIC_KEYMAP_EEPROM_MAX_ADDR) && (DYNAMIC_KEYMAP_EEPROM_MAX_ADDR >= FEE_DENSITY_BYTES) +# error emulated eeprom: DYNAMIC_KEYMAP_EEPROM_MAX_ADDR is greater than the FEE_DENSITY_BYTES available +#endif + +/* In-memory contents of emulated eeprom for faster access */ +/* *TODO: Implement page swapping */ +static uint16_t WordBuf[FEE_DENSITY_BYTES / 2]; +static uint8_t *DataBuf = (uint8_t *)WordBuf; + +/* Pointer to the first available slot within the write log */ +static uint16_t *empty_slot; + +// #define DEBUG_EEPROM_OUTPUT + +/* + * Debug print utils + */ + +#if defined(DEBUG_EEPROM_OUTPUT) + +# define debug_eeprom debug_enable +# define eeprom_println(s) println(s) +# define eeprom_printf(fmt, ...) xprintf(fmt, ##__VA_ARGS__); + +#else /* NO_DEBUG */ + +# define debug_eeprom false +# define eeprom_println(s) +# define eeprom_printf(fmt, ...) + +#endif /* NO_DEBUG */ + +void print_eeprom(void) { +#ifndef NO_DEBUG + int empty_rows = 0; + for (uint16_t i = 0; i < FEE_DENSITY_BYTES; i++) { + if (i % 16 == 0) { + if (i >= FEE_DENSITY_BYTES - 16) { + /* Make sure we display the last row */ + empty_rows = 0; + } + /* Check if this row is uninitialized */ + ++empty_rows; + for (uint16_t j = 0; j < 16; j++) { + if (DataBuf[i + j]) { + empty_rows = 0; + break; + } + } + if (empty_rows > 1) { + /* Repeat empty row */ + if (empty_rows == 2) { + /* Only display the first repeat empty row */ + println("*"); + } + i += 15; + continue; + } + xprintf("%04x", i); + } + if (i % 8 == 0) print(" "); + + xprintf(" %02x", DataBuf[i]); + if ((i + 1) % 16 == 0) { + println(""); + } + } +#endif +} + +uint16_t EEPROM_Init(void) { + /* Load emulated eeprom contents from compacted flash into memory */ + uint16_t *src = (uint16_t *)FEE_COMPACTED_BASE_ADDRESS; + uint16_t *dest = (uint16_t *)DataBuf; + for (; src < (uint16_t *)FEE_COMPACTED_LAST_ADDRESS; ++src, ++dest) { + *dest = ~*src; + } + + if (debug_eeprom) { + println("EEPROM_Init Compacted Pages:"); + print_eeprom(); + println("EEPROM_Init Write Log:"); + } + + /* Replay write log */ + uint16_t *log_addr; + for (log_addr = (uint16_t *)FEE_WRITE_LOG_BASE_ADDRESS; log_addr < (uint16_t *)FEE_WRITE_LOG_LAST_ADDRESS; ++log_addr) { + uint16_t address = *log_addr; + if (address == FEE_EMPTY_WORD) { + break; + } + /* Check for lowest 128-bytes optimization */ + if (!(address & FEE_WORD_ENCODING)) { + uint8_t bvalue = (uint8_t)address; + address >>= 8; + DataBuf[address] = bvalue; + eeprom_printf("DataBuf[0x%02x] = 0x%02x;\n", address, bvalue); + } else { + uint16_t wvalue; + /* Check if value is in next word */ + if ((address & FEE_VALUE_NEXT) == FEE_VALUE_NEXT) { + /* Read value from next word */ + if (++log_addr >= (uint16_t *)FEE_WRITE_LOG_LAST_ADDRESS) { + break; + } + wvalue = ~*log_addr; + if (!wvalue) { + eeprom_printf("Incomplete write at log_addr: 0x%04x;\n", (uint32_t)log_addr); + /* Possibly incomplete write. Ignore and continue */ + continue; + } + address &= 0x1FFF; + address <<= 1; + /* Writes to addresses less than 128 are byte log entries */ + address += FEE_BYTE_RANGE; + } else { + /* Reserved for future use */ + if (address & FEE_VALUE_RESERVED) { + eeprom_printf("Reserved encoded value at log_addr: 0x%04x;\n", (uint32_t)log_addr); + continue; + } + /* Optimization for 0 or 1 values. */ + wvalue = (address & FEE_VALUE_ENCODED) >> 13; + address &= 0x1FFF; + address <<= 1; + } + if (address < FEE_DENSITY_BYTES) { + eeprom_printf("DataBuf[0x%04x] = 0x%04x;\n", address, wvalue); + *(uint16_t *)(&DataBuf[address]) = wvalue; + } else { + eeprom_printf("DataBuf[0x%04x] cannot be set to 0x%04x [BAD ADDRESS]\n", address, wvalue); + } + } + } + + empty_slot = log_addr; + + if (debug_eeprom) { + println("EEPROM_Init Final DataBuf:"); + print_eeprom(); + } + + return FEE_DENSITY_BYTES; +} + +/* Clear flash contents (doesn't touch in-memory DataBuf) */ +static void eeprom_clear(void) { + FLASH_Unlock(); + + for (uint16_t page_num = 0; page_num < FEE_PAGE_COUNT; ++page_num) { + eeprom_printf("FLASH_ErasePage(0x%04x)\n", (uint32_t)(FEE_PAGE_BASE_ADDRESS + (page_num * FEE_PAGE_SIZE))); + FLASH_ErasePage(FEE_PAGE_BASE_ADDRESS + (page_num * FEE_PAGE_SIZE)); + } + + FLASH_Lock(); + + empty_slot = (uint16_t *)FEE_WRITE_LOG_BASE_ADDRESS; + eeprom_printf("eeprom_clear empty_slot: 0x%08x\n", (uint32_t)empty_slot); +} + +/* Erase emulated eeprom */ +void EEPROM_Erase(void) { + eeprom_println("EEPROM_Erase"); + /* Erase compacted pages and write log */ + eeprom_clear(); + /* re-initialize to reset DataBuf */ + EEPROM_Init(); +} + +/* Compact write log */ +static uint8_t eeprom_compact(void) { + /* Erase compacted pages and write log */ + eeprom_clear(); + + FLASH_Unlock(); + + FLASH_Status final_status = FLASH_COMPLETE; + + /* Write emulated eeprom contents from memory to compacted flash */ + uint16_t *src = (uint16_t *)DataBuf; + uintptr_t dest = FEE_COMPACTED_BASE_ADDRESS; + uint16_t value; + for (; dest < FEE_COMPACTED_LAST_ADDRESS; ++src, dest += 2) { + value = *src; + if (value) { + eeprom_printf("FLASH_ProgramHalfWord(0x%04x, 0x%04x)\n", (uint32_t)dest, ~value); + FLASH_Status status = FLASH_ProgramHalfWord(dest, ~value); + if (status != FLASH_COMPLETE) final_status = status; + } + } + + FLASH_Lock(); + + if (debug_eeprom) { + println("eeprom_compacted:"); + print_eeprom(); + } + + return final_status; +} + +static uint8_t eeprom_write_direct_entry(uint16_t Address) { + /* Check if we can just write this directly to the compacted flash area */ + uintptr_t directAddress = FEE_COMPACTED_BASE_ADDRESS + (Address & 0xFFFE); + if (*(uint16_t *)directAddress == FEE_EMPTY_WORD) { + /* Write the value directly to the compacted area without a log entry */ + uint16_t value = ~*(uint16_t *)(&DataBuf[Address & 0xFFFE]); + /* Early exit if a write isn't needed */ + if (value == FEE_EMPTY_WORD) return FLASH_COMPLETE; + + FLASH_Unlock(); + + eeprom_printf("FLASH_ProgramHalfWord(0x%08x, 0x%04x) [DIRECT]\n", (uint32_t)directAddress, value); + FLASH_Status status = FLASH_ProgramHalfWord(directAddress, value); + + FLASH_Lock(); + return status; + } + return 0; +} + +static uint8_t eeprom_write_log_word_entry(uint16_t Address) { + FLASH_Status final_status = FLASH_COMPLETE; + + uint16_t value = *(uint16_t *)(&DataBuf[Address]); + eeprom_printf("eeprom_write_log_word_entry(0x%04x): 0x%04x\n", Address, value); + + /* MSB signifies the lowest 128-byte optimization is not in effect */ + uint16_t encoding = FEE_WORD_ENCODING; + uint8_t entry_size; + if (value <= 1) { + encoding |= value << 13; + entry_size = 2; + } else { + encoding |= FEE_VALUE_NEXT; + entry_size = 4; + /* Writes to addresses less than 128 are byte log entries */ + Address -= FEE_BYTE_RANGE; + } + + /* if we can't find an empty spot, we must compact emulated eeprom */ + if (empty_slot > (uint16_t *)(FEE_WRITE_LOG_LAST_ADDRESS - entry_size)) { + /* compact the write log into the compacted flash area */ + return eeprom_compact(); + } + + /* Word log writes should be word-aligned. Take back a bit */ + Address >>= 1; + Address |= encoding; + + /* ok we found a place let's write our data */ + FLASH_Unlock(); + + /* address */ + eeprom_printf("FLASH_ProgramHalfWord(0x%08x, 0x%04x)\n", (uint32_t)empty_slot, Address); + final_status = FLASH_ProgramHalfWord((uintptr_t)empty_slot++, Address); + + /* value */ + if (encoding == (FEE_WORD_ENCODING | FEE_VALUE_NEXT)) { + eeprom_printf("FLASH_ProgramHalfWord(0x%08x, 0x%04x)\n", (uint32_t)empty_slot, ~value); + FLASH_Status status = FLASH_ProgramHalfWord((uintptr_t)empty_slot++, ~value); + if (status != FLASH_COMPLETE) final_status = status; + } + + FLASH_Lock(); + + return final_status; +} + +static uint8_t eeprom_write_log_byte_entry(uint16_t Address) { + eeprom_printf("eeprom_write_log_byte_entry(0x%04x): 0x%02x\n", Address, DataBuf[Address]); + + /* if couldn't find an empty spot, we must compact emulated eeprom */ + if (empty_slot >= (uint16_t *)FEE_WRITE_LOG_LAST_ADDRESS) { + /* compact the write log into the compacted flash area */ + return eeprom_compact(); + } + + /* ok we found a place let's write our data */ + FLASH_Unlock(); + + /* Pack address and value into the same word */ + uint16_t value = (Address << 8) | DataBuf[Address]; + + /* write to flash */ + eeprom_printf("FLASH_ProgramHalfWord(0x%08x, 0x%04x)\n", (uint32_t)empty_slot, value); + FLASH_Status status = FLASH_ProgramHalfWord((uintptr_t)empty_slot++, value); + + FLASH_Lock(); + + return status; +} + +uint8_t EEPROM_WriteDataByte(uint16_t Address, uint8_t DataByte) { + /* if the address is out-of-bounds, do nothing */ + if (Address >= FEE_DENSITY_BYTES) { + eeprom_printf("EEPROM_WriteDataByte(0x%04x, 0x%02x) [BAD ADDRESS]\n", Address, DataByte); + return FLASH_BAD_ADDRESS; + } + + /* if the value is the same, don't bother writing it */ + if (DataBuf[Address] == DataByte) { + eeprom_printf("EEPROM_WriteDataByte(0x%04x, 0x%02x) [SKIP SAME]\n", Address, DataByte); + return 0; + } + + /* keep DataBuf cache in sync */ + DataBuf[Address] = DataByte; + eeprom_printf("EEPROM_WriteDataByte DataBuf[0x%04x] = 0x%02x\n", Address, DataBuf[Address]); + + /* perform the write into flash memory */ + /* First, attempt to write directly into the compacted flash area */ + FLASH_Status status = eeprom_write_direct_entry(Address); + if (!status) { + /* Otherwise append to the write log */ + if (Address < FEE_BYTE_RANGE) { + status = eeprom_write_log_byte_entry(Address); + } else { + status = eeprom_write_log_word_entry(Address & 0xFFFE); + } + } + if (status != 0 && status != FLASH_COMPLETE) { + eeprom_printf("EEPROM_WriteDataByte [STATUS == %d]\n", status); + } + return status; +} + +uint8_t EEPROM_WriteDataWord(uint16_t Address, uint16_t DataWord) { + /* if the address is out-of-bounds, do nothing */ + if (Address >= FEE_DENSITY_BYTES) { + eeprom_printf("EEPROM_WriteDataWord(0x%04x, 0x%04x) [BAD ADDRESS]\n", Address, DataWord); + return FLASH_BAD_ADDRESS; + } + + /* Check for word alignment */ + FLASH_Status final_status = FLASH_COMPLETE; + if (Address % 2) { + final_status = EEPROM_WriteDataByte(Address, DataWord); + FLASH_Status status = EEPROM_WriteDataByte(Address + 1, DataWord >> 8); + if (status != FLASH_COMPLETE) final_status = status; + if (final_status != 0 && final_status != FLASH_COMPLETE) { + eeprom_printf("EEPROM_WriteDataWord [STATUS == %d]\n", final_status); + } + return final_status; + } + + /* if the value is the same, don't bother writing it */ + uint16_t oldValue = *(uint16_t *)(&DataBuf[Address]); + if (oldValue == DataWord) { + eeprom_printf("EEPROM_WriteDataWord(0x%04x, 0x%04x) [SKIP SAME]\n", Address, DataWord); + return 0; + } + + /* keep DataBuf cache in sync */ + *(uint16_t *)(&DataBuf[Address]) = DataWord; + eeprom_printf("EEPROM_WriteDataWord DataBuf[0x%04x] = 0x%04x\n", Address, *(uint16_t *)(&DataBuf[Address])); + + /* perform the write into flash memory */ + /* First, attempt to write directly into the compacted flash area */ + final_status = eeprom_write_direct_entry(Address); + if (!final_status) { + /* Otherwise append to the write log */ + /* Check if we need to fall back to byte write */ + if (Address < FEE_BYTE_RANGE) { + final_status = FLASH_COMPLETE; + /* Only write a byte if it has changed */ + if ((uint8_t)oldValue != (uint8_t)DataWord) { + final_status = eeprom_write_log_byte_entry(Address); + } + FLASH_Status status = FLASH_COMPLETE; + /* Only write a byte if it has changed */ + if ((oldValue >> 8) != (DataWord >> 8)) { + status = eeprom_write_log_byte_entry(Address + 1); + } + if (status != FLASH_COMPLETE) final_status = status; + } else { + final_status = eeprom_write_log_word_entry(Address); + } + } + if (final_status != 0 && final_status != FLASH_COMPLETE) { + eeprom_printf("EEPROM_WriteDataWord [STATUS == %d]\n", final_status); + } + return final_status; +} + +uint8_t EEPROM_ReadDataByte(uint16_t Address) { + uint8_t DataByte = 0xFF; + + if (Address < FEE_DENSITY_BYTES) { + DataByte = DataBuf[Address]; + } + + eeprom_printf("EEPROM_ReadDataByte(0x%04x): 0x%02x\n", Address, DataByte); + + return DataByte; +} + +uint16_t EEPROM_ReadDataWord(uint16_t Address) { + uint16_t DataWord = 0xFFFF; + + if (Address < FEE_DENSITY_BYTES - 1) { + /* Check word alignment */ + if (Address % 2) { + DataWord = DataBuf[Address] | (DataBuf[Address + 1] << 8); + } else { + DataWord = *(uint16_t *)(&DataBuf[Address]); + } + } + + eeprom_printf("EEPROM_ReadDataWord(0x%04x): 0x%04x\n", Address, DataWord); + + return DataWord; +} + +/***************************************************************************** + * Bind to eeprom_driver.c + *******************************************************************************/ +void eeprom_driver_init(void) { EEPROM_Init(); } + +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; + uint8_t * dest = (uint8_t *)buf; + + /* Check word alignment */ + if (len && (uintptr_t)src % 2) { + /* Read the unaligned first byte */ + *dest++ = EEPROM_ReadDataByte((const uintptr_t)src++); + --len; + } + + uint16_t value; + bool aligned = ((uintptr_t)dest % 2 == 0); + while (len > 1) { + value = EEPROM_ReadDataWord((const uintptr_t)((uint16_t *)src)); + if (aligned) { + *(uint16_t *)dest = value; + dest += 2; + } else { + *dest++ = value; + *dest++ = value >> 8; + } + src += 2; + len -= 2; + } + if (len) { + *dest = EEPROM_ReadDataByte((const uintptr_t)src); + } +} + +void eeprom_write_block(const void *buf, void *addr, size_t len) { + uint8_t * dest = (uint8_t *)addr; + const uint8_t *src = (const uint8_t *)buf; + + /* Check word alignment */ + if (len && (uintptr_t)dest % 2) { + /* Write the unaligned first byte */ + EEPROM_WriteDataByte((uintptr_t)dest++, *src++); + --len; + } + + uint16_t value; + bool aligned = ((uintptr_t)src % 2 == 0); + while (len > 1) { + if (aligned) { + value = *(uint16_t *)src; + } else { + value = *(uint8_t *)src | (*(uint8_t *)(src + 1) << 8); + } + EEPROM_WriteDataWord((uintptr_t)((uint16_t *)dest), value); + dest += 2; + src += 2; + len -= 2; + } + + if (len) { + EEPROM_WriteDataByte((uintptr_t)dest, *src); + } +} diff --git a/platforms/chibios/eeprom_stm32.h b/platforms/chibios/eeprom_stm32.h new file mode 100644 index 000000000000..8fcfb556b809 --- /dev/null +++ b/platforms/chibios/eeprom_stm32.h @@ -0,0 +1,33 @@ +/* + * This software is experimental and a work in progress. + * Under no circumstances should these files be used in relation to any critical system(s). + * Use of these files is at your own risk. + * + * 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. + * + * This files are free to use from http://engsta.com/stm32-flash-memory-eeprom-emulator/ by + * Artur F. + * + * Modifications for QMK and STM32F303 by Yiancar + * + * This library assumes 8-bit data locations. To add a new MCU, please provide the flash + * page size and the total flash size in Kb. The number of available pages must be a multiple + * of 2. Only half of the pages account for the total EEPROM size. + * This library also assumes that the pages are not used by the firmware. + */ + +#pragma once + +uint16_t EEPROM_Init(void); +void EEPROM_Erase(void); +uint8_t EEPROM_WriteDataByte(uint16_t Address, uint8_t DataByte); +uint8_t EEPROM_WriteDataWord(uint16_t Address, uint16_t DataWord); +uint8_t EEPROM_ReadDataByte(uint16_t Address); +uint16_t EEPROM_ReadDataWord(uint16_t Address); + +void print_eeprom(void); diff --git a/platforms/chibios/eeprom_stm32_defs.h b/platforms/chibios/eeprom_stm32_defs.h new file mode 100644 index 000000000000..66904f247f58 --- /dev/null +++ b/platforms/chibios/eeprom_stm32_defs.h @@ -0,0 +1,74 @@ +/* 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 <hal.h> + +#if !defined(FEE_PAGE_SIZE) || !defined(FEE_PAGE_COUNT) +# if defined(STM32F103xB) || defined(STM32F042x6) || defined(GD32VF103C8) || defined(GD32VF103CB) +# ifndef FEE_PAGE_SIZE +# define FEE_PAGE_SIZE 0x400 // Page size = 1KByte +# endif +# ifndef FEE_PAGE_COUNT +# define FEE_PAGE_COUNT 2 // How many pages are used +# endif +# elif defined(STM32F103xE) || defined(STM32F303xC) || defined(STM32F072xB) || defined(STM32F070xB) +# ifndef FEE_PAGE_SIZE +# define FEE_PAGE_SIZE 0x800 // Page size = 2KByte +# endif +# 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(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) || defined(STM32F401xC) +# define FEE_MCU_FLASH_SIZE 256 // Size in Kb +# 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 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 +# endif +/* Default to end of flash */ +# define FEE_PAGE_BASE_ADDRESS ((uintptr_t)(FEE_FLASH_BASE) + FEE_MCU_FLASH_SIZE * 1024 - (FEE_PAGE_COUNT * FEE_PAGE_SIZE)) +# endif +#endif diff --git a/platforms/chibios/eeprom_teensy.c b/platforms/chibios/eeprom_teensy.c new file mode 100644 index 000000000000..97da6f9e1483 --- /dev/null +++ b/platforms/chibios/eeprom_teensy.c @@ -0,0 +1,795 @@ +#include <ch.h> +#include <hal.h> + +#include "eeconfig.h" + +/*************************************/ +/* Hardware backend */ +/* */ +/* Code from PJRC/Teensyduino */ +/*************************************/ + +/* Teensyduino Core Library + * http://www.pjrc.com/teensy/ + * Copyright (c) 2013 PJRC.COM, LLC. + * + * 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: + * + * 1. The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * 2. If the Software is incorporated into a build system that allows + * selection among a list of target devices, then similar target + * devices manufactured by PJRC.COM must be included in the list of + * target devices and selectable in the same manner. + * + * 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 SMC_PMSTAT_RUN ((uint8_t)0x01) +#define SMC_PMSTAT_HSRUN ((uint8_t)0x80) + +#define F_CPU KINETIS_SYSCLK_FREQUENCY + +static inline int kinetis_hsrun_disable(void) { +#if defined(MK66F18) + if (SMC->PMSTAT == SMC_PMSTAT_HSRUN) { +// First, reduce the CPU clock speed, but do not change +// the peripheral speed (F_BUS). Serial1 & Serial2 baud +// rates will be impacted, but most other peripherals +// will continue functioning at the same speed. +# if F_CPU == 256000000 && F_BUS == 64000000 + SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(1, 3, 1, 7); // TODO: TEST +# elif F_CPU == 256000000 && F_BUS == 128000000 + SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(1, 1, 1, 7); // TODO: TEST +# elif F_CPU == 240000000 && F_BUS == 60000000 + SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(1, 3, 1, 7); // ok +# elif F_CPU == 240000000 && F_BUS == 80000000 + SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(2, 2, 2, 8); // ok +# elif F_CPU == 240000000 && F_BUS == 120000000 + SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(1, 1, 1, 7); // ok +# elif F_CPU == 216000000 && F_BUS == 54000000 + SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(1, 3, 1, 7); // ok +# elif F_CPU == 216000000 && F_BUS == 72000000 + SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(2, 2, 2, 8); // ok +# elif F_CPU == 216000000 && F_BUS == 108000000 + SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(1, 1, 1, 7); // ok +# elif F_CPU == 192000000 && F_BUS == 48000000 + SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(1, 3, 1, 7); // ok +# elif F_CPU == 192000000 && F_BUS == 64000000 + SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(2, 2, 2, 8); // ok +# elif F_CPU == 192000000 && F_BUS == 96000000 + SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(1, 1, 1, 7); // ok +# elif F_CPU == 180000000 && F_BUS == 60000000 + SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(2, 2, 2, 8); // ok +# elif F_CPU == 180000000 && F_BUS == 90000000 + SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(1, 1, 1, 7); // ok +# elif F_CPU == 168000000 && F_BUS == 56000000 + SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(2, 2, 2, 5); // ok +# elif F_CPU == 144000000 && F_BUS == 48000000 + SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(2, 2, 2, 5); // ok +# elif F_CPU == 144000000 && F_BUS == 72000000 + SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(1, 1, 1, 5); // ok +# elif F_CPU == 120000000 && F_BUS == 60000000 + SIM->CLKDIV1 = SIM_CLKDIV1_OUTDIV1(KINETIS_CLKDIV1_OUTDIV1 - 1) | SIM_CLKDIV1_OUTDIV2(KINETIS_CLKDIV1_OUTDIV2 - 1) | +# if defined(MK66F18) + SIM_CLKDIV1_OUTDIV3(KINETIS_CLKDIV1_OUTDIV3 - 1) | +# endif + SIM_CLKDIV1_OUTDIV4(KINETIS_CLKDIV1_OUTDIV4 - 1); +# else + return 0; +# endif + // Then turn off HSRUN mode + SMC->PMCTRL = SMC_PMCTRL_RUNM_SET(0); + while (SMC->PMSTAT == SMC_PMSTAT_HSRUN) + ; // wait + return 1; + } +#endif + return 0; +} + +static inline int kinetis_hsrun_enable(void) { +#if defined(MK66F18) + if (SMC->PMSTAT == SMC_PMSTAT_RUN) { + // Turn HSRUN mode on + SMC->PMCTRL = SMC_PMCTRL_RUNM_SET(3); + while (SMC->PMSTAT != SMC_PMSTAT_HSRUN) { + ; + } // wait +// Then configure clock for full speed +# if F_CPU == 256000000 && F_BUS == 64000000 + SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(0, 3, 0, 7); +# elif F_CPU == 256000000 && F_BUS == 128000000 + SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(0, 1, 0, 7); +# elif F_CPU == 240000000 && F_BUS == 60000000 + SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(0, 3, 0, 7); +# elif F_CPU == 240000000 && F_BUS == 80000000 + SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(0, 2, 0, 7); +# elif F_CPU == 240000000 && F_BUS == 120000000 + SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(0, 1, 0, 7); +# elif F_CPU == 216000000 && F_BUS == 54000000 + SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(0, 3, 0, 7); +# elif F_CPU == 216000000 && F_BUS == 72000000 + SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(0, 2, 0, 7); +# elif F_CPU == 216000000 && F_BUS == 108000000 + SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(0, 1, 0, 7); +# elif F_CPU == 192000000 && F_BUS == 48000000 + SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(0, 3, 0, 6); +# elif F_CPU == 192000000 && F_BUS == 64000000 + SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(0, 2, 0, 6); +# elif F_CPU == 192000000 && F_BUS == 96000000 + SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(0, 1, 0, 6); +# elif F_CPU == 180000000 && F_BUS == 60000000 + SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(0, 2, 0, 6); +# elif F_CPU == 180000000 && F_BUS == 90000000 + SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(0, 1, 0, 6); +# elif F_CPU == 168000000 && F_BUS == 56000000 + SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(0, 2, 0, 5); +# elif F_CPU == 144000000 && F_BUS == 48000000 + SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(0, 2, 0, 4); +# elif F_CPU == 144000000 && F_BUS == 72000000 + SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(0, 1, 0, 4); +# elif F_CPU == 120000000 && F_BUS == 60000000 + SIM->CLKDIV1 = SIM_CLKDIV1_OUTDIV1(KINETIS_CLKDIV1_OUTDIV1 - 1) | SIM_CLKDIV1_OUTDIV2(KINETIS_CLKDIV1_OUTDIV2 - 1) | +# if defined(MK66F18) + SIM_CLKDIV1_OUTDIV3(KINETIS_CLKDIV1_OUTDIV3 - 1) | +# endif + SIM_CLKDIV1_OUTDIV4(KINETIS_CLKDIV1_OUTDIV4 - 1); +# else + return 0; +# endif + return 1; + } +#endif + return 0; +} + +#if defined(K20x) || defined(MK66F18) /* chip selection */ +/* Teensy 3.0, 3.1, 3.2; mchck; infinity keyboard */ + +// The EEPROM is really RAM with a hardware-based backup system to +// flash memory. Selecting a smaller size EEPROM allows more wear +// leveling, for higher write endurance. If you edit this file, +// set this to the smallest size your application can use. Also, +// due to Freescale's implementation, writing 16 or 32 bit words +// (aligned to 2 or 4 byte boundaries) has twice the endurance +// compared to writing 8 bit bytes. +// +# ifndef EEPROM_SIZE +# define EEPROM_SIZE 32 +# endif + +/* + ^^^ Here be dragons: + NXP AppNote AN4282 section 3.1 states that partitioning must only be done once. + Once EEPROM partitioning is done, the size is locked to this initial configuration. + Attempts to modify the EEPROM_SIZE setting may brick your board. +*/ + +// Writing unaligned 16 or 32 bit data is handled automatically when +// this is defined, but at a cost of extra code size. Without this, +// any unaligned write will cause a hard fault exception! If you're +// absolutely sure all 16 and 32 bit writes will be aligned, you can +// remove the extra unnecessary code. +// +# define HANDLE_UNALIGNED_WRITES + +# if defined(K20x) +# define EEPROM_MAX 2048 +# define EEPARTITION 0x03 // all 32K dataflash for EEPROM, none for Data +# define EEESPLIT 0x30 // must be 0x30 on these chips +# elif defined(MK66F18) +# define EEPROM_MAX 4096 +# define EEPARTITION 0x05 // 128K dataflash for EEPROM, 128K for Data +# define EEESPLIT 0x10 // best endurance: 0x00 = first 12%, 0x10 = first 25%, 0x30 = all equal +# endif + +// Minimum EEPROM Endurance +// ------------------------ +# if (EEPROM_SIZE == 4096) +# define EEESIZE 0x02 +# elif (EEPROM_SIZE == 2048) // 35000 writes/byte or 70000 writes/word +# define EEESIZE 0x03 +# elif (EEPROM_SIZE == 1024) // 75000 writes/byte or 150000 writes/word +# define EEESIZE 0x04 +# elif (EEPROM_SIZE == 512) // 155000 writes/byte or 310000 writes/word +# define EEESIZE 0x05 +# elif (EEPROM_SIZE == 256) // 315000 writes/byte or 630000 writes/word +# define EEESIZE 0x06 +# elif (EEPROM_SIZE == 128) // 635000 writes/byte or 1270000 writes/word +# define EEESIZE 0x07 +# elif (EEPROM_SIZE == 64) // 1275000 writes/byte or 2550000 writes/word +# define EEESIZE 0x08 +# elif (EEPROM_SIZE == 32) // 2555000 writes/byte or 5110000 writes/word +# define EEESIZE 0x09 +# endif + +/** \brief eeprom initialization + * + * FIXME: needs doc + */ +void eeprom_initialize(void) { + uint32_t count = 0; + uint16_t do_flash_cmd[] = {0xf06f, 0x037f, 0x7003, 0x7803, 0xf013, 0x0f80, 0xd0fb, 0x4770}; + uint8_t status; + + if (FTFL->FCNFG & FTFL_FCNFG_RAMRDY) { + uint8_t stat = FTFL->FSTAT & 0x70; + if (stat) FTFL->FSTAT = stat; + + // FlexRAM is configured as traditional RAM + // We need to reconfigure for EEPROM usage + kinetis_hsrun_disable(); + FTFL->FCCOB0 = 0x80; // PGMPART = Program Partition Command + FTFL->FCCOB3 = 0; + FTFL->FCCOB4 = EEESPLIT | EEESIZE; + FTFL->FCCOB5 = EEPARTITION; + __disable_irq(); + // do_flash_cmd() must execute from RAM. Luckily the C syntax is simple... + (*((void (*)(volatile uint8_t *))((uint32_t)do_flash_cmd | 1)))(&(FTFL->FSTAT)); + __enable_irq(); + kinetis_hsrun_enable(); + status = FTFL->FSTAT; + if (status & (FTFL_FSTAT_RDCOLERR | FTFL_FSTAT_ACCERR | FTFL_FSTAT_FPVIOL)) { + FTFL->FSTAT = (status & (FTFL_FSTAT_RDCOLERR | FTFL_FSTAT_ACCERR | FTFL_FSTAT_FPVIOL)); + return; // error + } + } + // wait for eeprom to become ready (is this really necessary?) + while (!(FTFL->FCNFG & FTFL_FCNFG_EEERDY)) { + if (++count > 200000) break; + } +} + +# define FlexRAM ((volatile uint8_t *)0x14000000) + +/** \brief eeprom read byte + * + * FIXME: needs doc + */ +uint8_t eeprom_read_byte(const uint8_t *addr) { + uint32_t offset = (uint32_t)addr; + if (offset >= EEPROM_SIZE) return 0; + if (!(FTFL->FCNFG & FTFL_FCNFG_EEERDY)) eeprom_initialize(); + return FlexRAM[offset]; +} + +/** \brief eeprom read word + * + * FIXME: needs doc + */ +uint16_t eeprom_read_word(const uint16_t *addr) { + uint32_t offset = (uint32_t)addr; + if (offset >= EEPROM_SIZE - 1) return 0; + if (!(FTFL->FCNFG & FTFL_FCNFG_EEERDY)) eeprom_initialize(); + return *(uint16_t *)(&FlexRAM[offset]); +} + +/** \brief eeprom read dword + * + * FIXME: needs doc + */ +uint32_t eeprom_read_dword(const uint32_t *addr) { + uint32_t offset = (uint32_t)addr; + if (offset >= EEPROM_SIZE - 3) return 0; + if (!(FTFL->FCNFG & FTFL_FCNFG_EEERDY)) eeprom_initialize(); + return *(uint32_t *)(&FlexRAM[offset]); +} + +/** \brief eeprom read block + * + * FIXME: needs doc + */ +void eeprom_read_block(void *buf, const void *addr, uint32_t len) { + uint32_t offset = (uint32_t)addr; + uint8_t *dest = (uint8_t *)buf; + uint32_t end = offset + len; + + if (!(FTFL->FCNFG & FTFL_FCNFG_EEERDY)) eeprom_initialize(); + if (end > EEPROM_SIZE) end = EEPROM_SIZE; + while (offset < end) { + *dest++ = FlexRAM[offset++]; + } +} + +/** \brief eeprom is ready + * + * FIXME: needs doc + */ +int eeprom_is_ready(void) { return (FTFL->FCNFG & FTFL_FCNFG_EEERDY) ? 1 : 0; } + +/** \brief flexram wait + * + * FIXME: needs doc + */ +static void flexram_wait(void) { + while (!(FTFL->FCNFG & FTFL_FCNFG_EEERDY)) { + // TODO: timeout + } +} + +/** \brief eeprom_write_byte + * + * FIXME: needs doc + */ +void eeprom_write_byte(uint8_t *addr, uint8_t value) { + uint32_t offset = (uint32_t)addr; + + if (offset >= EEPROM_SIZE) return; + if (!(FTFL->FCNFG & FTFL_FCNFG_EEERDY)) eeprom_initialize(); + if (FlexRAM[offset] != value) { + kinetis_hsrun_disable(); + uint8_t stat = FTFL->FSTAT & 0x70; + if (stat) FTFL->FSTAT = stat; + FlexRAM[offset] = value; + flexram_wait(); + kinetis_hsrun_enable(); + } +} + +/** \brief eeprom write word + * + * FIXME: needs doc + */ +void eeprom_write_word(uint16_t *addr, uint16_t value) { + uint32_t offset = (uint32_t)addr; + + if (offset >= EEPROM_SIZE - 1) return; + if (!(FTFL->FCNFG & FTFL_FCNFG_EEERDY)) eeprom_initialize(); +# ifdef HANDLE_UNALIGNED_WRITES + if ((offset & 1) == 0) { +# endif + if (*(uint16_t *)(&FlexRAM[offset]) != value) { + kinetis_hsrun_disable(); + uint8_t stat = FTFL->FSTAT & 0x70; + if (stat) FTFL->FSTAT = stat; + *(uint16_t *)(&FlexRAM[offset]) = value; + flexram_wait(); + kinetis_hsrun_enable(); + } +# ifdef HANDLE_UNALIGNED_WRITES + } else { + if (FlexRAM[offset] != value) { + kinetis_hsrun_disable(); + uint8_t stat = FTFL->FSTAT & 0x70; + if (stat) FTFL->FSTAT = stat; + FlexRAM[offset] = value; + flexram_wait(); + kinetis_hsrun_enable(); + } + if (FlexRAM[offset + 1] != (value >> 8)) { + kinetis_hsrun_disable(); + uint8_t stat = FTFL->FSTAT & 0x70; + if (stat) FTFL->FSTAT = stat; + FlexRAM[offset + 1] = value >> 8; + flexram_wait(); + kinetis_hsrun_enable(); + } + } +# endif +} + +/** \brief eeprom write dword + * + * FIXME: needs doc + */ +void eeprom_write_dword(uint32_t *addr, uint32_t value) { + uint32_t offset = (uint32_t)addr; + + if (offset >= EEPROM_SIZE - 3) return; + if (!(FTFL->FCNFG & FTFL_FCNFG_EEERDY)) eeprom_initialize(); +# ifdef HANDLE_UNALIGNED_WRITES + switch (offset & 3) { + case 0: +# endif + if (*(uint32_t *)(&FlexRAM[offset]) != value) { + kinetis_hsrun_disable(); + uint8_t stat = FTFL->FSTAT & 0x70; + if (stat) FTFL->FSTAT = stat; + *(uint32_t *)(&FlexRAM[offset]) = value; + flexram_wait(); + kinetis_hsrun_enable(); + } + return; +# ifdef HANDLE_UNALIGNED_WRITES + case 2: + if (*(uint16_t *)(&FlexRAM[offset]) != value) { + kinetis_hsrun_disable(); + uint8_t stat = FTFL->FSTAT & 0x70; + if (stat) FTFL->FSTAT = stat; + *(uint16_t *)(&FlexRAM[offset]) = value; + flexram_wait(); + kinetis_hsrun_enable(); + } + if (*(uint16_t *)(&FlexRAM[offset + 2]) != (value >> 16)) { + kinetis_hsrun_disable(); + uint8_t stat = FTFL->FSTAT & 0x70; + if (stat) FTFL->FSTAT = stat; + *(uint16_t *)(&FlexRAM[offset + 2]) = value >> 16; + flexram_wait(); + kinetis_hsrun_enable(); + } + return; + default: + if (FlexRAM[offset] != value) { + kinetis_hsrun_disable(); + uint8_t stat = FTFL->FSTAT & 0x70; + if (stat) FTFL->FSTAT = stat; + FlexRAM[offset] = value; + flexram_wait(); + kinetis_hsrun_enable(); + } + if (*(uint16_t *)(&FlexRAM[offset + 1]) != (value >> 8)) { + kinetis_hsrun_disable(); + uint8_t stat = FTFL->FSTAT & 0x70; + if (stat) FTFL->FSTAT = stat; + *(uint16_t *)(&FlexRAM[offset + 1]) = value >> 8; + flexram_wait(); + kinetis_hsrun_enable(); + } + if (FlexRAM[offset + 3] != (value >> 24)) { + kinetis_hsrun_disable(); + uint8_t stat = FTFL->FSTAT & 0x70; + if (stat) FTFL->FSTAT = stat; + FlexRAM[offset + 3] = value >> 24; + flexram_wait(); + kinetis_hsrun_enable(); + } + } +# endif +} + +/** \brief eeprom write block + * + * FIXME: needs doc + */ +void eeprom_write_block(const void *buf, void *addr, uint32_t len) { + uint32_t offset = (uint32_t)addr; + const uint8_t *src = (const uint8_t *)buf; + + if (offset >= EEPROM_SIZE) return; + if (!(FTFL->FCNFG & FTFL_FCNFG_EEERDY)) eeprom_initialize(); + if (len >= EEPROM_SIZE) len = EEPROM_SIZE; + if (offset + len >= EEPROM_SIZE) len = EEPROM_SIZE - offset; + kinetis_hsrun_disable(); + while (len > 0) { + uint32_t lsb = offset & 3; + if (lsb == 0 && len >= 4) { + // write aligned 32 bits + uint32_t val32; + val32 = *src++; + val32 |= (*src++ << 8); + val32 |= (*src++ << 16); + val32 |= (*src++ << 24); + if (*(uint32_t *)(&FlexRAM[offset]) != val32) { + uint8_t stat = FTFL->FSTAT & 0x70; + if (stat) FTFL->FSTAT = stat; + *(uint32_t *)(&FlexRAM[offset]) = val32; + flexram_wait(); + } + offset += 4; + len -= 4; + } else if ((lsb == 0 || lsb == 2) && len >= 2) { + // write aligned 16 bits + uint16_t val16; + val16 = *src++; + val16 |= (*src++ << 8); + if (*(uint16_t *)(&FlexRAM[offset]) != val16) { + uint8_t stat = FTFL->FSTAT & 0x70; + if (stat) FTFL->FSTAT = stat; + *(uint16_t *)(&FlexRAM[offset]) = val16; + flexram_wait(); + } + offset += 2; + len -= 2; + } else { + // write 8 bits + uint8_t val8 = *src++; + if (FlexRAM[offset] != val8) { + uint8_t stat = FTFL->FSTAT & 0x70; + if (stat) FTFL->FSTAT = stat; + FlexRAM[offset] = val8; + flexram_wait(); + } + offset++; + len--; + } + } + kinetis_hsrun_enable(); +} + +/* +void do_flash_cmd(volatile uint8_t *fstat) +{ + *fstat = 0x80; + while ((*fstat & 0x80) == 0) ; // wait +} +00000000 <do_flash_cmd>: + 0: f06f 037f mvn.w r3, #127 ; 0x7f + 4: 7003 strb r3, [r0, #0] + 6: 7803 ldrb r3, [r0, #0] + 8: f013 0f80 tst.w r3, #128 ; 0x80 + c: d0fb beq.n 6 <do_flash_cmd+0x6> + e: 4770 bx lr +*/ + +#elif defined(KL2x) /* chip selection */ +/* Teensy LC (emulated) */ + +# define SYMVAL(sym) (uint32_t)(((uint8_t *)&(sym)) - ((uint8_t *)0)) + +extern uint32_t __eeprom_workarea_start__; +extern uint32_t __eeprom_workarea_end__; + +# define EEPROM_SIZE 128 + +static uint32_t flashend = 0; + +void eeprom_initialize(void) { + const uint16_t *p = (uint16_t *)SYMVAL(__eeprom_workarea_start__); + + do { + if (*p++ == 0xFFFF) { + flashend = (uint32_t)(p - 2); + return; + } + } while (p < (uint16_t *)SYMVAL(__eeprom_workarea_end__)); + flashend = (uint32_t)(p - 1); +} + +uint8_t eeprom_read_byte(const uint8_t *addr) { + uint32_t offset = (uint32_t)addr; + const uint16_t *p = (uint16_t *)SYMVAL(__eeprom_workarea_start__); + const uint16_t *end = (const uint16_t *)((uint32_t)flashend); + uint16_t val; + uint8_t data = 0xFF; + + if (!end) { + eeprom_initialize(); + end = (const uint16_t *)((uint32_t)flashend); + } + if (offset < EEPROM_SIZE) { + while (p <= end) { + val = *p++; + if ((val & 255) == offset) data = val >> 8; + } + } + return data; +} + +static void flash_write(const uint16_t *code, uint32_t addr, uint32_t data) { + // with great power comes great responsibility.... + uint32_t stat; + *(uint32_t *)&(FTFA->FCCOB3) = 0x06000000 | (addr & 0x00FFFFFC); + *(uint32_t *)&(FTFA->FCCOB7) = data; + __disable_irq(); + (*((void (*)(volatile uint8_t *))((uint32_t)code | 1)))(&(FTFA->FSTAT)); + __enable_irq(); + stat = FTFA->FSTAT & (FTFA_FSTAT_RDCOLERR | FTFA_FSTAT_ACCERR | FTFA_FSTAT_FPVIOL); + if (stat) { + FTFA->FSTAT = stat; + } + MCM->PLACR |= MCM_PLACR_CFCC; +} + +void eeprom_write_byte(uint8_t *addr, uint8_t data) { + uint32_t offset = (uint32_t)addr; + const uint16_t *p, *end = (const uint16_t *)((uint32_t)flashend); + uint32_t i, val, flashaddr; + uint16_t do_flash_cmd[] = {0x2380, 0x7003, 0x7803, 0xb25b, 0x2b00, 0xdafb, 0x4770}; + uint8_t buf[EEPROM_SIZE]; + + if (offset >= EEPROM_SIZE) return; + if (!end) { + eeprom_initialize(); + end = (const uint16_t *)((uint32_t)flashend); + } + if (++end < (uint16_t *)SYMVAL(__eeprom_workarea_end__)) { + val = (data << 8) | offset; + flashaddr = (uint32_t)end; + flashend = flashaddr; + if ((flashaddr & 2) == 0) { + val |= 0xFFFF0000; + } else { + val <<= 16; + val |= 0x0000FFFF; + } + flash_write(do_flash_cmd, flashaddr, val); + } else { + for (i = 0; i < EEPROM_SIZE; i++) { + buf[i] = 0xFF; + } + val = 0; + for (p = (uint16_t *)SYMVAL(__eeprom_workarea_start__); p < (uint16_t *)SYMVAL(__eeprom_workarea_end__); p++) { + val = *p; + if ((val & 255) < EEPROM_SIZE) { + buf[val & 255] = val >> 8; + } + } + buf[offset] = data; + for (flashaddr = (uint32_t)(uint16_t *)SYMVAL(__eeprom_workarea_start__); flashaddr < (uint32_t)(uint16_t *)SYMVAL(__eeprom_workarea_end__); flashaddr += 1024) { + *(uint32_t *)&(FTFA->FCCOB3) = 0x09000000 | flashaddr; + __disable_irq(); + (*((void (*)(volatile uint8_t *))((uint32_t)do_flash_cmd | 1)))(&(FTFA->FSTAT)); + __enable_irq(); + val = FTFA->FSTAT & (FTFA_FSTAT_RDCOLERR | FTFA_FSTAT_ACCERR | FTFA_FSTAT_FPVIOL); + ; + if (val) FTFA->FSTAT = val; + MCM->PLACR |= MCM_PLACR_CFCC; + } + flashaddr = (uint32_t)(uint16_t *)SYMVAL(__eeprom_workarea_start__); + for (i = 0; i < EEPROM_SIZE; i++) { + if (buf[i] == 0xFF) continue; + if ((flashaddr & 2) == 0) { + val = (buf[i] << 8) | i; + } else { + val = val | (buf[i] << 24) | (i << 16); + flash_write(do_flash_cmd, flashaddr, val); + } + flashaddr += 2; + } + flashend = flashaddr; + if ((flashaddr & 2)) { + val |= 0xFFFF0000; + flash_write(do_flash_cmd, flashaddr, val); + } + } +} + +/* +void do_flash_cmd(volatile uint8_t *fstat) +{ + *fstat = 0x80; + while ((*fstat & 0x80) == 0) ; // wait +} +00000000 <do_flash_cmd>: + 0: 2380 movs r3, #128 ; 0x80 + 2: 7003 strb r3, [r0, #0] + 4: 7803 ldrb r3, [r0, #0] + 6: b25b sxtb r3, r3 + 8: 2b00 cmp r3, #0 + a: dafb bge.n 4 <do_flash_cmd+0x4> + c: 4770 bx lr +*/ + +uint16_t eeprom_read_word(const uint16_t *addr) { + const uint8_t *p = (const uint8_t *)addr; + return eeprom_read_byte(p) | (eeprom_read_byte(p + 1) << 8); +} + +uint32_t eeprom_read_dword(const uint32_t *addr) { + const uint8_t *p = (const uint8_t *)addr; + return eeprom_read_byte(p) | (eeprom_read_byte(p + 1) << 8) | (eeprom_read_byte(p + 2) << 16) | (eeprom_read_byte(p + 3) << 24); +} + +void eeprom_read_block(void *buf, const void *addr, uint32_t len) { + const uint8_t *p = (const uint8_t *)addr; + uint8_t * dest = (uint8_t *)buf; + while (len--) { + *dest++ = eeprom_read_byte(p++); + } +} + +int eeprom_is_ready(void) { return 1; } + +void eeprom_write_word(uint16_t *addr, uint16_t value) { + uint8_t *p = (uint8_t *)addr; + eeprom_write_byte(p++, value); + eeprom_write_byte(p, value >> 8); +} + +void eeprom_write_dword(uint32_t *addr, uint32_t value) { + uint8_t *p = (uint8_t *)addr; + eeprom_write_byte(p++, value); + eeprom_write_byte(p++, value >> 8); + eeprom_write_byte(p++, value >> 16); + eeprom_write_byte(p, value >> 24); +} + +void eeprom_write_block(const void *buf, void *addr, uint32_t len) { + uint8_t * p = (uint8_t *)addr; + const uint8_t *src = (const uint8_t *)buf; + while (len--) { + eeprom_write_byte(p++, *src++); + } +} + +#else +// No EEPROM supported, so emulate it + +# 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]; + +uint8_t eeprom_read_byte(const uint8_t *addr) { + uint32_t offset = (uint32_t)addr; + return buffer[offset]; +} + +void eeprom_write_byte(uint8_t *addr, uint8_t value) { + uint32_t offset = (uint32_t)addr; + buffer[offset] = value; +} + +uint16_t eeprom_read_word(const uint16_t *addr) { + const uint8_t *p = (const uint8_t *)addr; + return eeprom_read_byte(p) | (eeprom_read_byte(p + 1) << 8); +} + +uint32_t eeprom_read_dword(const uint32_t *addr) { + const uint8_t *p = (const uint8_t *)addr; + return eeprom_read_byte(p) | (eeprom_read_byte(p + 1) << 8) | (eeprom_read_byte(p + 2) << 16) | (eeprom_read_byte(p + 3) << 24); +} + +void eeprom_read_block(void *buf, const void *addr, size_t len) { + const uint8_t *p = (const uint8_t *)addr; + uint8_t * dest = (uint8_t *)buf; + while (len--) { + *dest++ = eeprom_read_byte(p++); + } +} + +void eeprom_write_word(uint16_t *addr, uint16_t value) { + uint8_t *p = (uint8_t *)addr; + eeprom_write_byte(p++, value); + eeprom_write_byte(p, value >> 8); +} + +void eeprom_write_dword(uint32_t *addr, uint32_t value) { + uint8_t *p = (uint8_t *)addr; + eeprom_write_byte(p++, value); + eeprom_write_byte(p++, value >> 8); + eeprom_write_byte(p++, value >> 16); + eeprom_write_byte(p, value >> 24); +} + +void eeprom_write_block(const void *buf, void *addr, size_t len) { + uint8_t * p = (uint8_t *)addr; + const uint8_t *src = (const uint8_t *)buf; + while (len--) { + eeprom_write_byte(p++, *src++); + } +} + +#endif /* chip selection */ +// The update functions just calls write for now, but could probably be optimized + +void eeprom_update_byte(uint8_t *addr, uint8_t value) { eeprom_write_byte(addr, value); } + +void eeprom_update_word(uint16_t *addr, uint16_t value) { + uint8_t *p = (uint8_t *)addr; + eeprom_write_byte(p++, value); + eeprom_write_byte(p, value >> 8); +} + +void eeprom_update_dword(uint32_t *addr, uint32_t value) { + uint8_t *p = (uint8_t *)addr; + eeprom_write_byte(p++, value); + eeprom_write_byte(p++, value >> 8); + eeprom_write_byte(p++, value >> 16); + eeprom_write_byte(p, value >> 24); +} + +void eeprom_update_block(const void *buf, void *addr, size_t len) { + uint8_t * p = (uint8_t *)addr; + const uint8_t *src = (const uint8_t *)buf; + while (len--) { + eeprom_write_byte(p++, *src++); + } +} diff --git a/platforms/chibios/flash.mk b/platforms/chibios/flash.mk new file mode 100644 index 000000000000..6ee53172d265 --- /dev/null +++ b/platforms/chibios/flash.mk @@ -0,0 +1,105 @@ +# Hey Emacs, this is a -*- makefile -*- +############################################################################## +# Architecture or project specific options +# + +DFU_ARGS ?= +ifneq ("$(SERIAL)","") + DFU_ARGS += -S $(SERIAL) +endif + +DFU_UTIL ?= dfu-util + +define EXEC_DFU_UTIL + if ! $(DFU_UTIL) -l | grep -q "Found DFU"; then \ + printf "$(MSG_BOOTLOADER_NOT_FOUND_QUICK_RETRY)" ;\ + sleep $(BOOTLOADER_RETRY_TIME) ;\ + while ! $(DFU_UTIL) -l | grep -q "Found DFU"; do \ + printf "." ;\ + sleep $(BOOTLOADER_RETRY_TIME) ;\ + done ;\ + printf "\n" ;\ + fi + $(DFU_UTIL) $(DFU_ARGS) -D $(BUILD_DIR)/$(TARGET).bin +endef + + +define EXEC_WB32_DFU_UPDATER + if ! wb32-dfu-updater_cli -l | grep -q "Found DFU"; then \ + printf "$(MSG_BOOTLOADER_NOT_FOUND_QUICK_RETRY)" ;\ + sleep $(BOOTLOADER_RETRY_TIME) ;\ + while ! wb32-dfu-updater_cli -l | grep -q "Found DFU"; do \ + printf "." ;\ + sleep $(BOOTLOADER_RETRY_TIME) ;\ + done ;\ + printf "\n" ;\ + fi + wb32-dfu-updater_cli -D $(BUILD_DIR)/$(TARGET).bin +endef + +dfu-util: $(BUILD_DIR)/$(TARGET).bin cpfirmware sizeafter + $(call EXEC_DFU_UTIL) + +# TODO: Remove once ARM has a way to configure EECONFIG_HANDEDNESS +# within the emulated eeprom via dfu-util or another tool +ifneq (,$(filter $(MAKECMDGOALS),dfu-util-split-left)) + OPT_DEFS += -DINIT_EE_HANDS_LEFT +endif + +ifneq (,$(filter $(MAKECMDGOALS),dfu-util-split-right)) + OPT_DEFS += -DINIT_EE_HANDS_RIGHT +endif + +dfu-util-split-left: dfu-util + +dfu-util-split-right: dfu-util + +ST_LINK_CLI ?= st-link_cli +ST_LINK_ARGS ?= + +st-link-cli: $(BUILD_DIR)/$(TARGET).hex sizeafter + $(ST_LINK_CLI) $(ST_LINK_ARGS) -q -c SWD -p $(BUILD_DIR)/$(TARGET).hex -Rst + +ST_FLASH ?= st-flash +ST_FLASH_ARGS ?= + +st-flash: $(BUILD_DIR)/$(TARGET).hex sizeafter + $(ST_FLASH) $(ST_FLASH_ARGS) --reset --format ihex write $(BUILD_DIR)/$(TARGET).hex + +# Autodetect teensy loader +ifndef TEENSY_LOADER_CLI + ifneq (, $(shell which teensy-loader-cli 2>/dev/null)) + TEENSY_LOADER_CLI ?= teensy-loader-cli + else + TEENSY_LOADER_CLI ?= teensy_loader_cli + endif +endif + +TEENSY_LOADER_CLI_MCU ?= $(MCU_LDSCRIPT) + +define EXEC_TEENSY + $(TEENSY_LOADER_CLI) -mmcu=$(TEENSY_LOADER_CLI_MCU) -w -v $(BUILD_DIR)/$(TARGET).hex +endef + +teensy: $(BUILD_DIR)/$(TARGET).hex cpfirmware sizeafter + $(call EXEC_TEENSY) + + +flash: $(BUILD_DIR)/$(TARGET).bin cpfirmware sizeafter +ifneq ($(strip $(PROGRAM_CMD)),) + $(UNSYNC_OUTPUT_CMD) && $(PROGRAM_CMD) +else ifeq ($(strip $(BOOTLOADER)),kiibohd) + $(UNSYNC_OUTPUT_CMD) && $(call EXEC_DFU_UTIL) +else ifeq ($(strip $(MCU_FAMILY)),KINETIS) + $(UNSYNC_OUTPUT_CMD) && $(call EXEC_TEENSY) +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)),WB32) + $(UNSYNC_OUTPUT_CMD) && $(call EXEC_WB32_DFU_UPDATER) +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/tmk_core/common/chibios/flash_stm32.c b/platforms/chibios/flash_stm32.c similarity index 80% rename from tmk_core/common/chibios/flash_stm32.c rename to platforms/chibios/flash_stm32.c index e8b3dc4bc98d..72c41b8b784d 100644 --- a/tmk_core/common/chibios/flash_stm32.c +++ b/platforms/chibios/flash_stm32.c @@ -16,28 +16,41 @@ * Modifications for QMK and STM32F303 by Yiancar */ -#if defined(EEPROM_EMU_STM32F303xC) -# define STM32F303xC -# include "stm32f3xx.h" -#elif defined(EEPROM_EMU_STM32F103xB) -# define STM32F103xB -# include "stm32f1xx.h" -#elif defined(EEPROM_EMU_STM32F072xB) -# define STM32F072xB -# include "stm32f0xx.h" -#elif defined(EEPROM_EMU_STM32F042x6) -# define STM32F042x6 -# include "stm32f0xx.h" -#else -# error "not implemented." -#endif - +#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) @@ -68,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; } @@ -110,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); } @@ -141,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 */ @@ -161,9 +190,11 @@ FLASH_Status FLASH_ProgramHalfWord(uint32_t Address, uint16_t Data) { * @retval None */ void FLASH_Unlock(void) { - /* Authorize the FPEC Access */ - FLASH->KEYR = FLASH_KEY1; - FLASH->KEYR = FLASH_KEY2; + if (FLASH->CR & FLASH_CR_LOCK) { + /* Authorize the FPEC Access */ + FLASH->KEYR = FLASH_KEY1; + FLASH->KEYR = FLASH_KEY2; + } } /** @@ -175,17 +206,3 @@ void FLASH_Lock(void) { /* Set the Lock Bit to lock the FPEC and the FCR */ FLASH->CR |= FLASH_CR_LOCK; } - -/** - * @brief Clears the FLASH's pending flags. - * @param FLASH_FLAG: specifies the FLASH flags to clear. - * This parameter can be any combination of the following values: - * @arg FLASH_FLAG_PGERR: FLASH Programming error flag flag - * @arg FLASH_FLAG_WRPERR: FLASH Write protected error flag - * @arg FLASH_FLAG_EOP: FLASH End of Programming flag - * @retval None - */ -void FLASH_ClearFlag(uint32_t FLASH_FLAG) { - /* Clear the flags */ - FLASH->SR = FLASH_FLAG; -} diff --git a/tmk_core/common/chibios/flash_stm32.h b/platforms/chibios/flash_stm32.h similarity index 93% rename from tmk_core/common/chibios/flash_stm32.h rename to platforms/chibios/flash_stm32.h index 90d5bff47e33..6c66642ec5c7 100644 --- a/tmk_core/common/chibios/flash_stm32.h +++ b/platforms/chibios/flash_stm32.h @@ -22,8 +22,11 @@ extern "C" { #endif -#include <ch.h> -#include <hal.h> +#include <stdint.h> + +#ifdef FLASH_STM32_MOCKED +extern uint8_t FlashBuf[MOCK_FLASH_SIZE]; +#endif typedef enum { FLASH_BUSY = 1, FLASH_ERROR_PG, FLASH_ERROR_WRP, FLASH_ERROR_OPT, FLASH_COMPLETE, FLASH_TIMEOUT, FLASH_BAD_ADDRESS } FLASH_Status; @@ -35,7 +38,6 @@ FLASH_Status FLASH_ProgramHalfWord(uint32_t Address, uint16_t Data); void FLASH_Unlock(void); void FLASH_Lock(void); -void FLASH_ClearFlag(uint32_t FLASH_FLAG); #ifdef __cplusplus } diff --git a/platforms/chibios/gd32v_compatibility.h b/platforms/chibios/gd32v_compatibility.h new file mode 100644 index 000000000000..f4dcfd8c55ea --- /dev/null +++ b/platforms/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/platforms/chibios/gpio.h b/platforms/chibios/gpio.h new file mode 100644 index 000000000000..4d057f1cab77 --- /dev/null +++ b/platforms/chibios/gpio.h @@ -0,0 +1,50 @@ +/* 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 <hal.h> +#include "pin_defs.h" + +typedef ioline_t pin_t; + +/* Operation of GPIO by pin. */ + +#define setPinInput(pin) palSetLineMode(pin, PAL_MODE_INPUT) +#define setPinInputHigh(pin) palSetLineMode(pin, PAL_MODE_INPUT_PULLUP) +#define setPinInputLow(pin) palSetLineMode(pin, PAL_MODE_INPUT_PULLDOWN) +#define setPinOutput(pin) palSetLineMode(pin, PAL_MODE_OUTPUT_PUSHPULL) + +#define writePinHigh(pin) palSetLine(pin) +#define writePinLow(pin) palClearLine(pin) +#define writePin(pin, level) ((level) ? (writePinHigh(pin)) : (writePinLow(pin))) + +#define readPin(pin) palReadLine(pin) + +#define togglePin(pin) palToggleLine(pin) + +/* Operation of GPIO by port. */ + +typedef uint16_t port_data_t; + +#define readPort(pin) palReadPort(PAL_PORT(pin)) + +#define setPortBitInput(pin, bit) palSetPadMode(PAL_PORT(pin), bit, PAL_MODE_INPUT) +#define setPortBitInputHigh(pin, bit) palSetPadMode(PAL_PORT(pin), bit, PAL_MODE_INPUT_PULLUP) +#define setPortBitInputLow(pin, bit) palSetPadMode(PAL_PORT(pin), bit, PAL_MODE_INPUT_PULLDOWN) +#define setPortBitOutput(pin, bit) palSetPadMode(PAL_PORT(pin), bit, PAL_MODE_OUTPUT_PUSHPULL) + +#define writePortBitLow(pin, bit) palClearLine(PAL_LINE(PAL_PORT(pin), bit)) +#define writePortBitHigh(pin, bit) palSetLine(PAL_LINE(PAL_PORT(pin), bit)) diff --git a/tmk_core/common/chibios/pin_defs.h b/platforms/chibios/pin_defs.h similarity index 100% rename from tmk_core/common/chibios/pin_defs.h rename to platforms/chibios/pin_defs.h diff --git a/platforms/chibios/platform.c b/platforms/chibios/platform.c new file mode 100644 index 000000000000..d4a229f2784a --- /dev/null +++ b/platforms/chibios/platform.c @@ -0,0 +1,22 @@ +/* Copyright 2021 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "platform_deps.h" + +void platform_setup(void) { + halInit(); + chSysInit(); +} \ No newline at end of file diff --git a/platforms/chibios/platform.mk b/platforms/chibios/platform.mk new file mode 100644 index 000000000000..45e337788229 --- /dev/null +++ b/platforms/chibios/platform.mk @@ -0,0 +1,443 @@ +# Hey Emacs, this is a -*- makefile -*- +############################################################################## +# Architecture or project specific options +# + +# Stack size to be allocated to the Cortex-M process stack. This stack is +# the stack used by the main() thread. +ifeq ($(USE_PROCESS_STACKSIZE),) + USE_PROCESS_STACKSIZE = 0x800 +endif + +# Stack size to the allocated to the Cortex-M main/exceptions stack. This +# stack is used for processing interrupts and exceptions. +ifeq ($(USE_EXCEPTIONS_STACKSIZE),) + USE_EXCEPTIONS_STACKSIZE = 0x400 +endif + +# +# Architecture or project specific options +############################################################################## + +############################################################################## +# Project, sources and paths +# + +# Imported source files and paths +OPT_OS = chibios +CHIBIOS = $(TOP_DIR)/lib/chibios +CHIBIOS_CONTRIB = $(TOP_DIR)/lib/chibios-contrib + +# +# 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 + CHIBIOS_PORT ?= + ifeq ("$(CHIBIOS_PORT)","") + CHIBIOS_PORT = ARMv$(ARMV)-M + endif + + # 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 + + # Port files. Try a few different locations, for compability with old versions and + # for things hardware in the contrib repository + PORT_V = $(CHIBIOS)/os/common/ports/$(CHIBIOS_PORT)/compilers/GCC/mk/port.mk + ifeq ("$(wildcard $(PORT_V))","") + 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 + endif + + # Rules location. Try a few different locations, for compability with old versions and + # for things hardware in the contrib repository + RULESPATH = $(CHIBIOS)/os/common/ports/$(CHIBIOS_PORT)/compilers/GCC + ifeq ("$(wildcard $(RULESPATH)/rules.mk)","") + RULESPATH = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC + ifeq ("$(wildcard $(RULESPATH)/rules.mk)","") + RULESPATH = $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC + endif + endif +endif + +ifeq ("$(PLATFORM_NAME)","") + PLATFORM_NAME = platform +endif + +ifeq ("$(wildcard $(PLATFORM_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)","") + BOARD_PATH = $(KEYBOARD_PATH_5) + BOARD_MK += $(KEYBOARD_PATH_5)/boards/$(BOARD)/board.mk +else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/boards/$(BOARD)/board.mk)","") + BOARD_PATH = $(KEYBOARD_PATH_4) + BOARD_MK += $(KEYBOARD_PATH_4)/boards/$(BOARD)/board.mk +else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/boards/$(BOARD)/board.mk)","") + BOARD_PATH = $(KEYBOARD_PATH_3) + BOARD_MK += $(KEYBOARD_PATH_3)/boards/$(BOARD)/board.mk +else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/boards/$(BOARD)/board.mk)","") + BOARD_PATH = $(KEYBOARD_PATH_2) + BOARD_MK += $(KEYBOARD_PATH_2)/boards/$(BOARD)/board.mk +else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/boards/$(BOARD)/board.mk)","") + BOARD_PATH = $(KEYBOARD_PATH_1) + BOARD_MK += $(KEYBOARD_PATH_1)/boards/$(BOARD)/board.mk +else ifneq ("$(wildcard $(TOP_DIR)/platforms/chibios/boards/$(BOARD)/board/board.mk)","") + BOARD_PATH = $(TOP_DIR)/platforms/chibios/boards/$(BOARD) + BOARD_MK += $(TOP_DIR)/platforms/chibios/boards/$(BOARD)/board/board.mk + KEYBOARD_PATHS += $(BOARD_PATH)/configs + ifneq ("$(wildcard $(BOARD_PATH)/rules.mk)","") + include $(BOARD_PATH)/rules.mk + endif +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 +endif + +include $(BOARD_MK) + +# +# Bootloader selection. +############################################################################## + +# Set bootloader address if supplied. +ifdef STM32_BOOTLOADER_ADDRESS + OPT_DEFS += -DSTM32_BOOTLOADER_ADDRESS=$(STM32_BOOTLOADER_ADDRESS) +endif + +ifdef WB32_BOOTLOADER_ADDRESS + OPT_DEFS += -DWB32_BOOTLOADER_ADDRESS=$(WB32_BOOTLOADER_ADDRESS) +endif + +# Work out if we need to set up the include for the bootloader definitions +ifneq ("$(wildcard $(KEYBOARD_PATH_5)/bootloader_defs.h)","") + OPT_DEFS += -include $(KEYBOARD_PATH_5)/bootloader_defs.h +else ifneq ("$(wildcard $(KEYBOARD_PATH_5)/boards/$(BOARD)/bootloader_defs.h)","") + OPT_DEFS += -include $(KEYBOARD_PATH_5)/boards/$(BOARD)/bootloader_defs.h +else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/bootloader_defs.h)","") + OPT_DEFS += -include $(KEYBOARD_PATH_4)/bootloader_defs.h +else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/boards/$(BOARD)/bootloader_defs.h)","") + OPT_DEFS += -include $(KEYBOARD_PATH_4)/boards/$(BOARD)/bootloader_defs.h +else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/bootloader_defs.h)","") + OPT_DEFS += -include $(KEYBOARD_PATH_3)/bootloader_defs.h +else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/boards/$(BOARD)/bootloader_defs.h)","") + OPT_DEFS += -include $(KEYBOARD_PATH_3)/boards/$(BOARD)/bootloader_defs.h +else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/bootloader_defs.h)","") + OPT_DEFS += -include $(KEYBOARD_PATH_2)/bootloader_defs.h +else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/boards/$(BOARD)/bootloader_defs.h)","") + OPT_DEFS += -include $(KEYBOARD_PATH_2)/boards/$(BOARD)/bootloader_defs.h +else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/bootloader_defs.h)","") + OPT_DEFS += -include $(KEYBOARD_PATH_1)/bootloader_defs.h +else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/boards/$(BOARD)/bootloader_defs.h)","") + OPT_DEFS += -include $(KEYBOARD_PATH_1)/boards/$(BOARD)/bootloader_defs.h +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) +else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/chconf.h)","") + CHCONFDIR = $(KEYBOARD_PATH_4) +else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/chconf.h)","") + CHCONFDIR = $(KEYBOARD_PATH_3) +else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/chconf.h)","") + CHCONFDIR = $(KEYBOARD_PATH_2) +else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/chconf.h)","") + CHCONFDIR = $(KEYBOARD_PATH_1) +else ifneq ("$(wildcard $(TOP_DIR)/platforms/chibios/boards/$(BOARD)/configs/chconf.h)","") + CHCONFDIR = $(TOP_DIR)/platforms/chibios/boards/$(BOARD)/configs +else ifneq ("$(wildcard $(TOP_DIR)/platforms/boards/chibios/common/configs/chconf.h)","") + 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)","") + HALCONFDIR = $(KEYBOARD_PATH_4) +else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/halconf.h)","") + HALCONFDIR = $(KEYBOARD_PATH_3) +else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/halconf.h)","") + HALCONFDIR = $(KEYBOARD_PATH_2) +else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/halconf.h)","") + HALCONFDIR = $(KEYBOARD_PATH_1) +else ifneq ("$(wildcard $(TOP_DIR)/platforms/chibios/boards/$(BOARD)/configs/halconf.h)","") + HALCONFDIR = $(TOP_DIR)/platforms/chibios/boards/$(BOARD)/configs +else ifneq ("$(wildcard $(TOP_DIR)/platforms/chibios/boards/common/configs/halconf.h)","") + HALCONFDIR = $(TOP_DIR)/platforms/chibios/boards/common/configs +endif + +# +# Linker script selection. +############################################################################## + +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)","") + LDSCRIPT = $(KEYBOARD_PATH_4)/ld/$(MCU_LDSCRIPT).ld +else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/ld/$(MCU_LDSCRIPT).ld)","") + LDSCRIPT = $(KEYBOARD_PATH_3)/ld/$(MCU_LDSCRIPT).ld +else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/ld/$(MCU_LDSCRIPT).ld)","") + LDSCRIPT = $(KEYBOARD_PATH_2)/ld/$(MCU_LDSCRIPT).ld +else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/ld/$(MCU_LDSCRIPT).ld)","") + LDSCRIPT = $(KEYBOARD_PATH_1)/ld/$(MCU_LDSCRIPT).ld +else ifneq ("$(wildcard $(TOP_DIR)/platforms/chibios/boards/$(BOARD)/ld/$(MCU_LDSCRIPT).ld)","") + LDFLAGS += -L$(TOP_DIR)/platforms/chibios/boards/$(BOARD)/ld + LDSCRIPT = $(TOP_DIR)/platforms/chibios/boards/$(BOARD)/ld/$(MCU_LDSCRIPT).ld +else ifneq ("$(wildcard $(TOP_DIR)/platforms/chibios/boards/common/ld/$(MCU_LDSCRIPT).ld)","") + LDSCRIPT = $(TOP_DIR)/platforms/chibios/boards/common/ld/$(MCU_LDSCRIPT).ld +else ifneq ("$(wildcard $(STARTUPLD_CONTRIB)/$(MCU_LDSCRIPT).ld)","") + LDSCRIPT = $(STARTUPLD_CONTRIB)/$(MCU_LDSCRIPT).ld + USE_CHIBIOS_CONTRIB = yes +else + LDSCRIPT = $(STARTUPLD)/$(MCU_LDSCRIPT).ld +endif + +# +# 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) + +PLATFORM_SRC := $(patsubst $(TOP_DIR)/%,%,$(PLATFORM_SRC)) + +EXTRAINCDIRS += $(CHIBIOS)/os/license $(CHIBIOS)/os/oslib/include \ + $(TOP_DIR)/platforms/chibios/boards/$(BOARD)/configs \ + $(TOP_DIR)/platforms/chibios/boards/common/configs \ + $(HALCONFDIR) $(CHCONFDIR) \ + $(STARTUPINC) $(KERNINC) $(PORTINC) $(OSALINC) \ + $(HALINC) $(PLATFORMINC) $(BOARDINC) $(TESTINC) \ + $(STREAMSINC) $(CHIBIOS)/os/various $(COMMON_VPATH) + +# +# ChibiOS-Contrib +############################################################################## + +# Work out if we're using ChibiOS-Contrib by checking if halconf_community.h exists +ifneq ("$(wildcard $(KEYBOARD_PATH_5)/halconf_community.h)","") + USE_CHIBIOS_CONTRIB = yes +else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/halconf_community.h)","") + USE_CHIBIOS_CONTRIB = yes +else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/halconf_community.h)","") + USE_CHIBIOS_CONTRIB = yes +else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/halconf_community.h)","") + USE_CHIBIOS_CONTRIB = yes +else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/halconf_community.h)","") + USE_CHIBIOS_CONTRIB = yes +else ifneq ("$(wildcard $(TOP_DIR)/platforms/chibios/boards/$(BOARD)/configs/halconf_community.h)","") + USE_CHIBIOS_CONTRIB = yes +endif + +ifeq ($(strip $(USE_CHIBIOS_CONTRIB)),yes) + include $(CHIBIOS_CONTRIB)/os/hal/hal.mk + PLATFORM_SRC += $(PLATFORMSRC_CONTRIB) $(HALSRC_CONTRIB) + EXTRAINCDIRS += $(PLATFORMINC_CONTRIB) $(HALINC_CONTRIB) $(CHIBIOS_CONTRIB)/os/various +endif + +# +# Project, sources and paths +############################################################################## + +############################################################################## +# Injected configs +# +ifneq ("$(wildcard $(BOARD_PATH)/configs/config.h)","") + CONFIG_H += $(BOARD_PATH)/configs/config.h +endif +ifneq ("$(wildcard $(BOARD_PATH)/configs/post_config.h)","") + POST_CONFIG_H += $(BOARD_PATH)/configs/post_config.h +endif + +############################################################################## +# Compiler and Linker configuration +# + +# Use defined stack sizes of the main thread in linker scripts +SHARED_LDSYMBOLS = -Wl,--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,--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 distributions based on Debian 11+. + 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 in SHARED_LDFLAGS. + TOOLCHAIN_CFLAGS = --specs=picolibc.specs + + # picolibc internally uses __heap_start and __heap_end instead of the + # defacto chibios linker script standard __heap_base__ and __heap_end__ + # therefore we introduce these symbols as an alias. + TOOLCHAIN_LDSYMBOLS = -Wl,--defsym=__heap_start=__heap_base__,--defsym=__heap_end=__heap_end__ + + # 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 + # 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 + +# Assembler flags +ASFLAGS += $(SHARED_ASFLAGS) $(TOOLCHAIN_ASFLAGS) + +# C Compiler flags +CFLAGS += $(SHARED_CFLAGS) $(TOOLCHAIN_CFLAGS) + +# C++ Compiler flags +CXXFLAGS += $(CFLAGS) $(SHARED_CXXFLAGS) $(TOOLCHAIN_CXXFLAGS) -fno-rtti + +# Linker flags +LDFLAGS += $(SHARED_LDFLAGS) $(SHARED_LDSYMBOLS) $(TOOLCHAIN_LDFLAGS) $(TOOLCHAIN_LDSYMBOLS) $(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 + +# 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 + +# List any extra directories to look for libraries here. +EXTRALIBDIRS = $(RULESPATH)/ld + +bin: $(BUILD_DIR)/$(TARGET).bin sizeafter + $(COPY) $(BUILD_DIR)/$(TARGET).bin $(TARGET).bin; diff --git a/platforms/chibios/platform_deps.h b/platforms/chibios/platform_deps.h new file mode 100644 index 000000000000..8243dcec53f3 --- /dev/null +++ b/platforms/chibios/platform_deps.h @@ -0,0 +1,19 @@ +/* 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 <hal.h> +#include "chibios_config.h" diff --git a/tmk_core/common/chibios/sleep_led.c b/platforms/chibios/sleep_led.c similarity index 98% rename from tmk_core/common/chibios/sleep_led.c rename to platforms/chibios/sleep_led.c index 1c65016a427e..477056a454f0 100644 --- a/tmk_core/common/chibios/sleep_led.c +++ b/platforms/chibios/sleep_led.c @@ -65,7 +65,7 @@ void sleep_led_timer_callback(void) { /* LPTMR clock options */ # define LPTMR_CLOCK_MCGIRCLK 0 /* 4MHz clock */ -# define LPTMR_CLOCK_LPO 1 /* 1kHz clock */ +# define LPTMR_CLOCK_LPO 1 /* 1kHz clock */ # define LPTMR_CLOCK_ERCLK32K 2 /* external 32kHz crystal */ # define LPTMR_CLOCK_OSCERCLK 3 /* output from OSC */ @@ -121,7 +121,7 @@ void sleep_led_init(void) { MCG->C2 |= MCG_C2_IRCS; // fast (4MHz) internal ref clock # if defined(KL27) // divide the 8MHz IRC by 2, to have the same MCGIRCLK speed as others MCG->MC |= MCG_MC_LIRC_DIV2_DIV2; -# endif /* KL27 */ +# endif /* KL27 */ MCG->C1 |= MCG_C1_IRCLKEN; // enable internal ref clock // to work in stop mode, also MCG_C1_IREFSTEN // Divide 4MHz by 2^N (N=6) => 62500 irqs/sec => diff --git a/platforms/chibios/suspend.c b/platforms/chibios/suspend.c new file mode 100644 index 000000000000..9310a999209c --- /dev/null +++ b/platforms/chibios/suspend.c @@ -0,0 +1,92 @@ +/* TODO */ + +#include <ch.h> +#include <hal.h> + +#include "matrix.h" +#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" + +/** \brief suspend idle + * + * FIXME: needs doc + */ +void suspend_idle(uint8_t time) { + // TODO: this is not used anywhere - what units is 'time' in? + wait_ms(time); +} + +/** \brief suspend power down + * + * FIXME: needs doc + */ +void suspend_power_down(void) { + suspend_power_down_quantum(); + // on AVR, this enables the watchdog for 15ms (max), and goes to + // SLEEP_MODE_PWR_DOWN + + wait_ms(17); +} + +/** \brief suspend wakeup condition + * + * FIXME: needs doc + */ +__attribute__((weak)) void matrix_power_up(void) {} +__attribute__((weak)) void matrix_power_down(void) {} +bool suspend_wakeup_condition(void) { + matrix_power_up(); + matrix_scan(); + matrix_power_down(); + for (uint8_t r = 0; r < MATRIX_ROWS; r++) { + if (matrix_get_row(r)) return true; + } + 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 suspend wakeup condition + * + * run immediately after wakeup + * FIXME: needs doc + */ +void suspend_wakeup_init(void) { + // clear keyboard state + // need to do it manually, because we're running from ISR + // and clear_keyboard() calls print + // so only clear the variables in memory + // the reports will be sent from main.c afterwards + // or if the PC asks for GET_REPORT + clear_mods(); + clear_weak_mods(); + clear_keys(); +#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 */ + + suspend_wakeup_init_quantum(); +} diff --git a/tmk_core/common/chibios/syscall-fallbacks.c b/platforms/chibios/syscall-fallbacks.c similarity index 94% rename from tmk_core/common/chibios/syscall-fallbacks.c rename to platforms/chibios/syscall-fallbacks.c index 739017ae1dfd..7150a463262d 100644 --- a/tmk_core/common/chibios/syscall-fallbacks.c +++ b/platforms/chibios/syscall-fallbacks.c @@ -18,6 +18,13 @@ #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; +struct timeval; +#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/chibios/timer.c b/platforms/chibios/timer.c similarity index 100% rename from tmk_core/common/chibios/timer.c rename to platforms/chibios/timer.c diff --git a/platforms/chibios/wait.c b/platforms/chibios/wait.c new file mode 100644 index 000000000000..56fd6ffcece6 --- /dev/null +++ b/platforms/chibios/wait.c @@ -0,0 +1,41 @@ +/* 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 <ch.h> +#include <hal.h> + +#include "_wait.h" + +#ifdef WAIT_US_TIMER +void wait_us(uint16_t duration) { + static const GPTConfig gpt_cfg = {1000000, NULL, 0, 0}; /* 1MHz timer, no callback */ + + if (duration == 0) { + duration = 1; + } + + /* + * Only use this timer on the main thread; + * other threads need to use their own timer. + */ + if (chThdGetSelfX() == &ch.mainthread && duration < (1ULL << (sizeof(gptcnt_t) * 8))) { + gptStart(&WAIT_US_TIMER, &gpt_cfg); + gptPolledDelay(&WAIT_US_TIMER, duration); + } else { + chThdSleepMicroseconds(duration); + } +} +#endif diff --git a/platforms/common.mk b/platforms/common.mk new file mode 100644 index 000000000000..f7a0fc7028b7 --- /dev/null +++ b/platforms/common.mk @@ -0,0 +1,12 @@ +PLATFORM_COMMON_DIR = $(PLATFORM_PATH)/$(PLATFORM_KEY) + +TMK_COMMON_SRC += \ + $(PLATFORM_COMMON_DIR)/platform.c \ + $(PLATFORM_COMMON_DIR)/suspend.c \ + $(PLATFORM_COMMON_DIR)/timer.c \ + $(PLATFORM_COMMON_DIR)/bootloader.c \ + +# Search Path +VPATH += $(PLATFORM_PATH) +VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY) +VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR) diff --git a/tmk_core/common/eeprom.h b/platforms/eeprom.h similarity index 100% rename from tmk_core/common/eeprom.h rename to platforms/eeprom.h diff --git a/tmk_core/common/gpio.h b/platforms/gpio.h similarity index 100% rename from tmk_core/common/gpio.h rename to platforms/gpio.h diff --git a/tmk_core/common/pin_defs.h b/platforms/pin_defs.h similarity index 100% rename from tmk_core/common/pin_defs.h rename to platforms/pin_defs.h diff --git a/tmk_core/common/progmem.h b/platforms/progmem.h similarity index 96% rename from tmk_core/common/progmem.h rename to platforms/progmem.h index 4e4771e52383..3a7a169682ce 100644 --- a/tmk_core/common/progmem.h +++ b/platforms/progmem.h @@ -3,6 +3,7 @@ #if defined(__AVR__) # include <avr/pgmspace.h> #else +# include <string.h> # define PROGMEM # define PSTR(x) x # define PGM_P const char* diff --git a/tmk_core/common/sleep_led.h b/platforms/sleep_led.h similarity index 100% rename from tmk_core/common/sleep_led.h rename to platforms/sleep_led.h diff --git a/tmk_core/common/suspend.h b/platforms/suspend.h similarity index 84% rename from tmk_core/common/suspend.h rename to platforms/suspend.h index 95845e4b6342..081735f90e35 100644 --- a/tmk_core/common/suspend.h +++ b/platforms/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/test/_wait.h b/platforms/test/_wait.h similarity index 100% rename from tmk_core/common/test/_wait.h rename to platforms/test/_wait.h diff --git a/tmk_core/common/test/bootloader.c b/platforms/test/bootloader.c similarity index 100% rename from tmk_core/common/test/bootloader.c rename to platforms/test/bootloader.c diff --git a/tmk_core/common/test/eeprom.c b/platforms/test/eeprom.c similarity index 100% rename from tmk_core/common/test/eeprom.c rename to platforms/test/eeprom.c diff --git a/platforms/test/eeprom_stm32_tests.cpp b/platforms/test/eeprom_stm32_tests.cpp new file mode 100644 index 000000000000..5bc8d87900e1 --- /dev/null +++ b/platforms/test/eeprom_stm32_tests.cpp @@ -0,0 +1,438 @@ +/* Copyright 2021 by Don Kjer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "gtest/gtest.h" + +extern "C" { +#include "flash_stm32.h" +#include "eeprom_stm32.h" +#include "eeprom.h" +} + +/* Mock Flash Parameters: + * + * === Large Layout === + * flash size: 65536 + * page size: 2048 + * density pages: 16 + * Simulated EEPROM size: 16384 + * + * FlashBuf Layout: + * [Unused | Compact | Write Log ] + * [0......|32768......|49152......65535] + * + * === Tiny Layout === + * flash size: 1024 + * page size: 512 + * density pages: 1 + * Simulated EEPROM size: 256 + * + * FlashBuf Layout: + * [Unused | Compact | Write Log ] + * [0......|512......|768......1023] + * + */ + +#define EEPROM_SIZE (FEE_PAGE_SIZE * FEE_PAGE_COUNT / 2) +#define LOG_SIZE EEPROM_SIZE +#define LOG_BASE (MOCK_FLASH_SIZE - LOG_SIZE) +#define EEPROM_BASE (LOG_BASE - EEPROM_SIZE) + +/* Log encoding helpers */ +#define BYTE_VALUE(addr, value) (((addr) << 8) | (value)) +#define WORD_ZERO(addr) (0x8000 | ((addr) >> 1)) +#define WORD_ONE(addr) (0xA000 | ((addr) >> 1)) +#define WORD_NEXT(addr) (0xE000 | (((addr)-0x80) >> 1)) + +class EepromStm32Test : public testing::Test { + public: + EepromStm32Test() {} + ~EepromStm32Test() {} + + protected: + void SetUp() override { EEPROM_Erase(); } + + void TearDown() override { +#ifdef EEPROM_DEBUG + dumpEepromDataBuf(); +#endif + } +}; + +TEST_F(EepromStm32Test, TestErase) { + EEPROM_WriteDataByte(0, 0x42); + EEPROM_Erase(); + EXPECT_EQ(EEPROM_ReadDataByte(0), 0); + EXPECT_EQ(EEPROM_ReadDataByte(1), 0); +} + +TEST_F(EepromStm32Test, TestReadGarbage) { + uint8_t garbage = 0x3c; + for (int i = 0; i < MOCK_FLASH_SIZE; ++i) { + garbage ^= 0xa3; + garbage += i; + FlashBuf[i] = garbage; + } + EEPROM_Init(); // Just verify we don't crash +} + +TEST_F(EepromStm32Test, TestWriteBadAddress) { + EXPECT_EQ(EEPROM_WriteDataByte(EEPROM_SIZE, 0x42), FLASH_BAD_ADDRESS); + EXPECT_EQ(EEPROM_WriteDataWord(EEPROM_SIZE - 1, 0xbeef), FLASH_BAD_ADDRESS); + EXPECT_EQ(EEPROM_WriteDataWord(EEPROM_SIZE, 0xbeef), FLASH_BAD_ADDRESS); +} + +TEST_F(EepromStm32Test, TestReadBadAddress) { + EXPECT_EQ(EEPROM_ReadDataByte(EEPROM_SIZE), 0xFF); + EXPECT_EQ(EEPROM_ReadDataWord(EEPROM_SIZE - 1), 0xFFFF); + EXPECT_EQ(EEPROM_ReadDataWord(EEPROM_SIZE), 0xFFFF); + EXPECT_EQ(eeprom_read_dword((uint32_t*)(EEPROM_SIZE - 4)), 0); + EXPECT_EQ(eeprom_read_dword((uint32_t*)(EEPROM_SIZE - 3)), 0xFF000000); + EXPECT_EQ(eeprom_read_dword((uint32_t*)EEPROM_SIZE), 0xFFFFFFFF); +} + +TEST_F(EepromStm32Test, TestReadByte) { + /* Direct compacted-area baseline: Address < 0x80 */ + FlashBuf[EEPROM_BASE + 2] = ~0xef; + FlashBuf[EEPROM_BASE + 3] = ~0xbe; + /* Direct compacted-area baseline: Address >= 0x80 */ + FlashBuf[EEPROM_BASE + EEPROM_SIZE - 2] = ~0x78; + FlashBuf[EEPROM_BASE + EEPROM_SIZE - 1] = ~0x56; + /* Check values */ + EEPROM_Init(); + EXPECT_EQ(EEPROM_ReadDataByte(2), 0xef); + EXPECT_EQ(EEPROM_ReadDataByte(3), 0xbe); + EXPECT_EQ(EEPROM_ReadDataByte(EEPROM_SIZE - 2), 0x78); + EXPECT_EQ(EEPROM_ReadDataByte(EEPROM_SIZE - 1), 0x56); + /* Write Log byte value */ + FlashBuf[LOG_BASE] = 0x65; + FlashBuf[LOG_BASE + 1] = 3; + /* Write Log word value */ + *(uint16_t*)&FlashBuf[LOG_BASE + 2] = WORD_NEXT(EEPROM_SIZE - 2); + *(uint16_t*)&FlashBuf[LOG_BASE + 4] = ~0x9abc; + /* Check values */ + EEPROM_Init(); + EXPECT_EQ(EEPROM_ReadDataByte(2), 0xef); + EXPECT_EQ(EEPROM_ReadDataByte(3), 0x65); + EXPECT_EQ(EEPROM_ReadDataByte(EEPROM_SIZE - 2), 0xbc); + EXPECT_EQ(EEPROM_ReadDataByte(EEPROM_SIZE - 1), 0x9a); +} + +TEST_F(EepromStm32Test, TestWriteByte) { + /* Direct compacted-area baseline: Address < 0x80 */ + EEPROM_WriteDataByte(2, 0xef); + EEPROM_WriteDataByte(3, 0xbe); + /* Direct compacted-area baseline: Address >= 0x80 */ + EEPROM_WriteDataByte(EEPROM_SIZE - 2, 0x78); + EEPROM_WriteDataByte(EEPROM_SIZE - 1, 0x56); + /* Check values */ + /* First write in each aligned word should have been direct */ + EXPECT_EQ(FlashBuf[EEPROM_BASE + 2], (uint8_t)~0xef); + EXPECT_EQ(FlashBuf[EEPROM_BASE + EEPROM_SIZE - 2], (uint8_t)~0x78); + + /* Second write per aligned word requires a log entry */ + EXPECT_EQ(*(uint16_t*)&FlashBuf[LOG_BASE], BYTE_VALUE(3, 0xbe)); + EXPECT_EQ(*(uint16_t*)&FlashBuf[LOG_BASE + 2], WORD_NEXT(EEPROM_SIZE - 1)); + EXPECT_EQ(*(uint16_t*)&FlashBuf[LOG_BASE + 4], (uint16_t)~0x5678); +} + +TEST_F(EepromStm32Test, TestByteRoundTrip) { + /* Direct compacted-area: Address < 0x80 */ + EEPROM_WriteDataWord(0, 0xdead); + EEPROM_WriteDataByte(2, 0xef); + EEPROM_WriteDataByte(3, 0xbe); + /* Direct compacted-area: Address >= 0x80 */ + EEPROM_WriteDataByte(EEPROM_SIZE - 2, 0x78); + EEPROM_WriteDataByte(EEPROM_SIZE - 1, 0x56); + /* Check values */ + EEPROM_Init(); + EXPECT_EQ(EEPROM_ReadDataByte(0), 0xad); + EXPECT_EQ(EEPROM_ReadDataByte(1), 0xde); + EXPECT_EQ(EEPROM_ReadDataByte(2), 0xef); + EXPECT_EQ(EEPROM_ReadDataByte(3), 0xbe); + EXPECT_EQ(EEPROM_ReadDataByte(EEPROM_SIZE - 2), 0x78); + EXPECT_EQ(EEPROM_ReadDataByte(EEPROM_SIZE - 1), 0x56); + /* Write log entries */ + EEPROM_WriteDataByte(2, 0x80); + EEPROM_WriteDataByte(EEPROM_SIZE - 2, 0x3c); + /* Check values */ + EEPROM_Init(); + EXPECT_EQ(EEPROM_ReadDataByte(2), 0x80); + EXPECT_EQ(EEPROM_ReadDataByte(3), 0xbe); + EXPECT_EQ(EEPROM_ReadDataByte(EEPROM_SIZE - 2), 0x3c); + EXPECT_EQ(EEPROM_ReadDataByte(EEPROM_SIZE - 1), 0x56); +} + +TEST_F(EepromStm32Test, TestReadWord) { + /* Direct compacted-area baseline: Address < 0x80 */ + FlashBuf[EEPROM_BASE + 0] = ~0xad; + FlashBuf[EEPROM_BASE + 1] = ~0xde; + /* Direct compacted-area baseline: Address >= 0x80 */ + FlashBuf[EEPROM_BASE + 200] = ~0xcd; + FlashBuf[EEPROM_BASE + 201] = ~0xab; + FlashBuf[EEPROM_BASE + EEPROM_SIZE - 4] = ~0x34; + FlashBuf[EEPROM_BASE + EEPROM_SIZE - 3] = ~0x12; + FlashBuf[EEPROM_BASE + EEPROM_SIZE - 2] = ~0x78; + FlashBuf[EEPROM_BASE + EEPROM_SIZE - 1] = ~0x56; + /* Check values */ + EEPROM_Init(); + EXPECT_EQ(EEPROM_ReadDataWord(0), 0xdead); + EXPECT_EQ(EEPROM_ReadDataWord(200), 0xabcd); + EXPECT_EQ(EEPROM_ReadDataWord(EEPROM_SIZE - 4), 0x1234); + EXPECT_EQ(EEPROM_ReadDataWord(EEPROM_SIZE - 2), 0x5678); + /* Write Log word zero-encoded */ + *(uint16_t*)&FlashBuf[LOG_BASE] = WORD_ZERO(200); + /* Write Log word one-encoded */ + *(uint16_t*)&FlashBuf[LOG_BASE + 2] = WORD_ONE(EEPROM_SIZE - 4); + /* Write Log word value */ + *(uint16_t*)&FlashBuf[LOG_BASE + 4] = WORD_NEXT(EEPROM_SIZE - 2); + *(uint16_t*)&FlashBuf[LOG_BASE + 6] = ~0x9abc; + /* Check values */ + EEPROM_Init(); + EXPECT_EQ(EEPROM_ReadDataWord(200), 0); + EXPECT_EQ(EEPROM_ReadDataWord(EEPROM_SIZE - 4), 1); + EXPECT_EQ(EEPROM_ReadDataWord(EEPROM_SIZE - 2), 0x9abc); +} + +TEST_F(EepromStm32Test, TestWriteWord) { + /* Direct compacted-area: Address < 0x80 */ + EEPROM_WriteDataWord(0, 0xdead); // Aligned + EEPROM_WriteDataWord(3, 0xbeef); // Unaligned + /* Direct compacted-area: Address >= 0x80 */ + EEPROM_WriteDataWord(200, 0xabcd); // Aligned + EEPROM_WriteDataWord(203, 0x9876); // Unaligned + EEPROM_WriteDataWord(EEPROM_SIZE - 4, 0x1234); + EEPROM_WriteDataWord(EEPROM_SIZE - 2, 0x5678); + /* Write Log word zero-encoded */ + EEPROM_WriteDataWord(EEPROM_SIZE - 4, 0); + /* Write Log word one-encoded */ + EEPROM_WriteDataWord(EEPROM_SIZE - 2, 1); + /* Write Log word value aligned */ + EEPROM_WriteDataWord(200, 0x4321); // Aligned + /* Write Log word value unaligned */ + EEPROM_WriteDataByte(202, 0x3c); // Set neighboring byte + EEPROM_WriteDataWord(203, 0xcdef); // Unaligned + /* Check values */ + /* Direct compacted-area */ + EXPECT_EQ(*(uint16_t*)&FlashBuf[EEPROM_BASE], (uint16_t)~0xdead); + EXPECT_EQ(*(uint16_t*)&FlashBuf[EEPROM_BASE + 3], (uint16_t)~0xbeef); + EXPECT_EQ(*(uint16_t*)&FlashBuf[EEPROM_BASE + 200], (uint16_t)~0xabcd); + EXPECT_EQ(FlashBuf[EEPROM_BASE + 203], (uint8_t)~0x76); + EXPECT_EQ(FlashBuf[EEPROM_BASE + 204], (uint8_t)~0x98); + EXPECT_EQ(*(uint16_t*)&FlashBuf[EEPROM_BASE + EEPROM_SIZE - 4], (uint16_t)~0x1234); + EXPECT_EQ(*(uint16_t*)&FlashBuf[EEPROM_BASE + EEPROM_SIZE - 2], (uint16_t)~0x5678); + /* Write Log word zero-encoded */ + EXPECT_EQ(*(uint16_t*)&FlashBuf[LOG_BASE], WORD_ZERO(EEPROM_SIZE - 4)); + /* Write Log word one-encoded */ + EXPECT_EQ(*(uint16_t*)&FlashBuf[LOG_BASE + 2], WORD_ONE(EEPROM_SIZE - 2)); + /* Write Log word value aligned */ + EXPECT_EQ(*(uint16_t*)&FlashBuf[LOG_BASE + 4], WORD_NEXT(200)); + EXPECT_EQ(*(uint16_t*)&FlashBuf[LOG_BASE + 6], (uint16_t)~0x4321); + /* Write Log word value unaligned */ + EXPECT_EQ(*(uint16_t*)&FlashBuf[LOG_BASE + 8], WORD_NEXT(202)); + EXPECT_EQ(*(uint16_t*)&FlashBuf[LOG_BASE + 10], (uint16_t)~0x763c); + EXPECT_EQ(*(uint16_t*)&FlashBuf[LOG_BASE + 12], WORD_NEXT(202)); + EXPECT_EQ(*(uint16_t*)&FlashBuf[LOG_BASE + 14], (uint16_t)~0xef3c); + EXPECT_EQ(*(uint16_t*)&FlashBuf[LOG_BASE + 16], WORD_NEXT(204)); + EXPECT_EQ(*(uint16_t*)&FlashBuf[LOG_BASE + 18], (uint16_t)~0x00cd); +} + +TEST_F(EepromStm32Test, TestWordRoundTrip) { + /* Direct compacted-area: Address < 0x80 */ + EEPROM_WriteDataWord(0, 0xdead); // Aligned + EEPROM_WriteDataWord(3, 0xbeef); // Unaligned + /* Direct compacted-area: Address >= 0x80 */ + EEPROM_WriteDataWord(200, 0xabcd); // Aligned + EEPROM_WriteDataWord(203, 0x9876); // Unaligned + EEPROM_WriteDataWord(EEPROM_SIZE - 4, 0x1234); + EEPROM_WriteDataWord(EEPROM_SIZE - 2, 0x5678); + /* Check values */ + EEPROM_Init(); + EXPECT_EQ(EEPROM_ReadDataWord(0), 0xdead); + EXPECT_EQ(EEPROM_ReadDataWord(3), 0xbeef); + EXPECT_EQ(EEPROM_ReadDataWord(200), 0xabcd); + EXPECT_EQ(EEPROM_ReadDataWord(203), 0x9876); + EXPECT_EQ(EEPROM_ReadDataWord(EEPROM_SIZE - 4), 0x1234); + EXPECT_EQ(EEPROM_ReadDataWord(EEPROM_SIZE - 2), 0x5678); + + /* Write Log word zero-encoded */ + EEPROM_WriteDataWord(EEPROM_SIZE - 4, 0); + /* Write Log word one-encoded */ + EEPROM_WriteDataWord(EEPROM_SIZE - 2, 1); + /* Write Log word value aligned */ + EEPROM_WriteDataWord(200, 0x4321); // Aligned + /* Write Log word value unaligned */ + EEPROM_WriteDataByte(202, 0x3c); // Set neighboring byte + EEPROM_WriteDataWord(203, 0xcdef); // Unaligned + /* Check values */ + EEPROM_Init(); + EXPECT_EQ(EEPROM_ReadDataWord(200), 0x4321); + EXPECT_EQ(EEPROM_ReadDataByte(202), 0x3c); + EXPECT_EQ(EEPROM_ReadDataWord(203), 0xcdef); + EXPECT_EQ(EEPROM_ReadDataWord(EEPROM_SIZE - 4), 0); + EXPECT_EQ(EEPROM_ReadDataWord(EEPROM_SIZE - 2), 1); +} + +TEST_F(EepromStm32Test, TestByteWordBoundary) { + /* Direct compacted-area write */ + EEPROM_WriteDataWord(0x7e, 0xdead); + EEPROM_WriteDataWord(0x80, 0xbeef); + /* Byte log entry */ + EEPROM_WriteDataByte(0x7f, 0x3c); + /* Word log entry */ + EEPROM_WriteDataByte(0x80, 0x18); + /* Check values */ + EEPROM_Init(); + EXPECT_EQ(EEPROM_ReadDataWord(0x7e), 0x3cad); + EXPECT_EQ(EEPROM_ReadDataWord(0x80), 0xbe18); + EXPECT_EQ(*(uint16_t*)&FlashBuf[LOG_BASE], BYTE_VALUE(0x7f, 0x3c)); + EXPECT_EQ(*(uint16_t*)&FlashBuf[LOG_BASE + 2], WORD_NEXT(0x80)); + EXPECT_EQ(*(uint16_t*)&FlashBuf[LOG_BASE + 4], (uint16_t)~0xbe18); + /* Byte log entries */ + EEPROM_WriteDataWord(0x7e, 0xcafe); + /* Check values */ + EEPROM_Init(); + EXPECT_EQ(EEPROM_ReadDataWord(0x7e), 0xcafe); + EXPECT_EQ(*(uint16_t*)&FlashBuf[LOG_BASE + 6], BYTE_VALUE(0x7e, 0xfe)); + EXPECT_EQ(*(uint16_t*)&FlashBuf[LOG_BASE + 8], BYTE_VALUE(0x7f, 0xca)); + /* Byte and Word log entries */ + EEPROM_WriteDataWord(0x7f, 0xba5e); + /* Check values */ + EEPROM_Init(); + EXPECT_EQ(EEPROM_ReadDataWord(0x7f), 0xba5e); + EXPECT_EQ(*(uint16_t*)&FlashBuf[LOG_BASE + 10], BYTE_VALUE(0x7f, 0x5e)); + EXPECT_EQ(*(uint16_t*)&FlashBuf[LOG_BASE + 12], WORD_NEXT(0x80)); + EXPECT_EQ(*(uint16_t*)&FlashBuf[LOG_BASE + 14], (uint16_t)~0xbeba); + /* Word log entry */ + EEPROM_WriteDataWord(0x80, 0xf00d); + /* Check values */ + EEPROM_Init(); + EXPECT_EQ(EEPROM_ReadDataWord(0x80), 0xf00d); + EXPECT_EQ(*(uint16_t*)&FlashBuf[LOG_BASE + 16], WORD_NEXT(0x80)); + EXPECT_EQ(*(uint16_t*)&FlashBuf[LOG_BASE + 18], (uint16_t)~0xf00d); +} + +TEST_F(EepromStm32Test, TestDWordRoundTrip) { + /* Direct compacted-area: Address < 0x80 */ + eeprom_write_dword((uint32_t*)0, 0xdeadbeef); // Aligned + eeprom_write_dword((uint32_t*)9, 0x12345678); // Unaligned + /* Direct compacted-area: Address >= 0x80 */ + eeprom_write_dword((uint32_t*)200, 0xfacef00d); + eeprom_write_dword((uint32_t*)(EEPROM_SIZE - 4), 0xba5eba11); // Aligned + eeprom_write_dword((uint32_t*)(EEPROM_SIZE - 9), 0xcafed00d); // Unaligned + /* Check direct values */ + EEPROM_Init(); + EXPECT_EQ(eeprom_read_dword((uint32_t*)0), 0xdeadbeef); + EXPECT_EQ(eeprom_read_dword((uint32_t*)9), 0x12345678); + EXPECT_EQ(eeprom_read_dword((uint32_t*)200), 0xfacef00d); + EXPECT_EQ(eeprom_read_dword((uint32_t*)(EEPROM_SIZE - 4)), 0xba5eba11); // Aligned + EXPECT_EQ(eeprom_read_dword((uint32_t*)(EEPROM_SIZE - 9)), 0xcafed00d); // Unaligned + /* Write Log byte encoded */ + eeprom_write_dword((uint32_t*)0, 0xdecafbad); + eeprom_write_dword((uint32_t*)9, 0x87654321); + /* Write Log word encoded */ + eeprom_write_dword((uint32_t*)200, 1); + /* Write Log word value aligned */ + eeprom_write_dword((uint32_t*)(EEPROM_SIZE - 4), 0xdeadc0de); // Aligned + eeprom_write_dword((uint32_t*)(EEPROM_SIZE - 9), 0x6789abcd); // Unaligned + /* Check log values */ + EEPROM_Init(); + EXPECT_EQ(eeprom_read_dword((uint32_t*)0), 0xdecafbad); + EXPECT_EQ(eeprom_read_dword((uint32_t*)9), 0x87654321); + EXPECT_EQ(eeprom_read_dword((uint32_t*)200), 1); + EXPECT_EQ(eeprom_read_dword((uint32_t*)(EEPROM_SIZE - 4)), 0xdeadc0de); // Aligned + EXPECT_EQ(eeprom_read_dword((uint32_t*)(EEPROM_SIZE - 9)), 0x6789abcd); // Unaligned +} + +TEST_F(EepromStm32Test, TestBlockRoundTrip) { + char src0[] = "0123456789abcdef"; + void* src1 = (void*)&src0[1]; + /* Various alignments of src & dst, Address < 0x80 */ + eeprom_write_block(src0, (void*)0, sizeof(src0)); + eeprom_write_block(src0, (void*)21, sizeof(src0)); + eeprom_write_block(src1, (void*)40, sizeof(src0) - 1); + eeprom_write_block(src1, (void*)61, sizeof(src0) - 1); + /* Various alignments of src & dst, Address >= 0x80 */ + eeprom_write_block(src0, (void*)140, sizeof(src0)); + eeprom_write_block(src0, (void*)161, sizeof(src0)); + eeprom_write_block(src1, (void*)180, sizeof(src0) - 1); + eeprom_write_block(src1, (void*)201, sizeof(src0) - 1); + + /* Check values */ + EEPROM_Init(); + + char dstBuf[256] = {0}; + char* dst0a = (char*)dstBuf; + char* dst0b = (char*)&dstBuf[20]; + char* dst1a = (char*)&dstBuf[41]; + char* dst1b = (char*)&dstBuf[61]; + char* dst0c = (char*)&dstBuf[80]; + char* dst0d = (char*)&dstBuf[100]; + char* dst1c = (char*)&dstBuf[121]; + char* dst1d = (char*)&dstBuf[141]; + eeprom_read_block((void*)dst0a, (void*)0, sizeof(src0)); + eeprom_read_block((void*)dst0b, (void*)21, sizeof(src0)); + eeprom_read_block((void*)dst1a, (void*)40, sizeof(src0) - 1); + eeprom_read_block((void*)dst1b, (void*)61, sizeof(src0) - 1); + eeprom_read_block((void*)dst0c, (void*)140, sizeof(src0)); + eeprom_read_block((void*)dst0d, (void*)161, sizeof(src0)); + eeprom_read_block((void*)dst1c, (void*)180, sizeof(src0) - 1); + eeprom_read_block((void*)dst1d, (void*)201, sizeof(src0) - 1); + EXPECT_EQ(strcmp((char*)src0, dst0a), 0); + EXPECT_EQ(strcmp((char*)src0, dst0b), 0); + EXPECT_EQ(strcmp((char*)src0, dst0c), 0); + EXPECT_EQ(strcmp((char*)src0, dst0d), 0); + EXPECT_EQ(strcmp((char*)src1, dst1a), 0); + EXPECT_EQ(strcmp((char*)src1, dst1b), 0); + EXPECT_EQ(strcmp((char*)src1, dst1c), 0); + EXPECT_EQ(strcmp((char*)src1, dst1d), 0); +} + +TEST_F(EepromStm32Test, TestCompaction) { + /* Direct writes */ + eeprom_write_dword((uint32_t*)0, 0xdeadbeef); + eeprom_write_byte((uint8_t*)4, 0x3c); + eeprom_write_word((uint16_t*)6, 0xd00d); + eeprom_write_dword((uint32_t*)150, 0xcafef00d); + eeprom_write_dword((uint32_t*)200, 0x12345678); + /* Fill write log entries */ + uint32_t i; + uint32_t val = 0xd8453c6b; + for (i = 0; i < (LOG_SIZE / (sizeof(uint32_t) * 2)); i++) { + val ^= 0x593ca5b3; + val += i; + eeprom_write_dword((uint32_t*)200, val); + } + /* Check values pre-compaction */ + EEPROM_Init(); + EXPECT_EQ(eeprom_read_dword((uint32_t*)0), 0xdeadbeef); + EXPECT_EQ(eeprom_read_byte((uint8_t*)4), 0x3c); + EXPECT_EQ(eeprom_read_word((uint16_t*)6), 0xd00d); + EXPECT_EQ(eeprom_read_dword((uint32_t*)150), 0xcafef00d); + EXPECT_EQ(eeprom_read_dword((uint32_t*)200), val); + EXPECT_NE(*(uint16_t*)&FlashBuf[LOG_BASE], 0xFFFF); + EXPECT_NE(*(uint16_t*)&FlashBuf[LOG_BASE + LOG_SIZE - 2], 0xFFFF); + /* Run compaction */ + eeprom_write_byte((uint8_t*)4, 0x1f); + EEPROM_Init(); + EXPECT_EQ(eeprom_read_dword((uint32_t*)0), 0xdeadbeef); + EXPECT_EQ(eeprom_read_byte((uint8_t*)4), 0x1f); + EXPECT_EQ(eeprom_read_word((uint16_t*)6), 0xd00d); + EXPECT_EQ(eeprom_read_dword((uint32_t*)150), 0xcafef00d); + EXPECT_EQ(eeprom_read_dword((uint32_t*)200), val); + EXPECT_EQ(*(uint16_t*)&FlashBuf[LOG_BASE], 0xFFFF); + EXPECT_EQ(*(uint16_t*)&FlashBuf[LOG_BASE + LOG_SIZE - 2], 0xFFFF); +} diff --git a/platforms/test/flash_stm32_mock.c b/platforms/test/flash_stm32_mock.c new file mode 100644 index 000000000000..222a004bc766 --- /dev/null +++ b/platforms/test/flash_stm32_mock.c @@ -0,0 +1,49 @@ +/* Copyright 2021 by Don Kjer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 <stdbool.h> +#include "flash_stm32.h" + +uint8_t FlashBuf[MOCK_FLASH_SIZE] = {0}; + +static bool flash_locked = true; + +FLASH_Status FLASH_ErasePage(uint32_t Page_Address) { + if (flash_locked) return FLASH_ERROR_WRP; + Page_Address -= (uintptr_t)FlashBuf; + Page_Address -= (Page_Address % FEE_PAGE_SIZE); + if (Page_Address >= MOCK_FLASH_SIZE) return FLASH_BAD_ADDRESS; + memset(&FlashBuf[Page_Address], '\xff', FEE_PAGE_SIZE); + return FLASH_COMPLETE; +} + +FLASH_Status FLASH_ProgramHalfWord(uint32_t Address, uint16_t Data) { + if (flash_locked) return FLASH_ERROR_WRP; + Address -= (uintptr_t)FlashBuf; + if (Address >= MOCK_FLASH_SIZE) return FLASH_BAD_ADDRESS; + uint16_t oldData = *(uint16_t*)&FlashBuf[Address]; + if (oldData == 0xFFFF || Data == 0) { + *(uint16_t*)&FlashBuf[Address] = Data; + return FLASH_COMPLETE; + } else { + return FLASH_ERROR_PG; + } +} + +FLASH_Status FLASH_WaitForLastOperation(uint32_t Timeout) { return FLASH_COMPLETE; } +void FLASH_Unlock(void) { flash_locked = false; } +void FLASH_Lock(void) { flash_locked = true; } diff --git a/platforms/test/hal.h b/platforms/test/hal.h new file mode 100644 index 000000000000..2d268ad54cf8 --- /dev/null +++ b/platforms/test/hal.h @@ -0,0 +1,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/>. + */ +#pragma once + +// Just here to please eeprom tests diff --git a/platforms/test/platform.c b/platforms/test/platform.c new file mode 100644 index 000000000000..8ddceeda8f02 --- /dev/null +++ b/platforms/test/platform.c @@ -0,0 +1,21 @@ +/* Copyright 2021 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 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 "platform_deps.h" + +void platform_setup(void) { + // do nothing +} \ No newline at end of file diff --git a/platforms/test/platform.h b/platforms/test/platform.h new file mode 100644 index 000000000000..f296d1d535e7 --- /dev/null +++ b/platforms/test/platform.h @@ -0,0 +1,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/>. + */ +#pragma once + +// here just to please the build diff --git a/platforms/test/platform.mk b/platforms/test/platform.mk new file mode 100644 index 000000000000..eb2424ec5c8e --- /dev/null +++ b/platforms/test/platform.mk @@ -0,0 +1,34 @@ +SYSTEM_TYPE := $(shell gcc -dumpmachine) +GCC_VERSION := $(shell gcc --version 2>/dev/null) + +CC = $(CC_PREFIX) gcc +OBJCOPY = +OBJDUMP = +SIZE = +AR = +NM = +HEX = +EEP = +BIN = + + +COMPILEFLAGS += -funsigned-char +ifeq ($(findstring clang, ${GCC_VERSION}),) +COMPILEFLAGS += -funsigned-bitfields +endif +COMPILEFLAGS += -ffunction-sections +COMPILEFLAGS += -fdata-sections +COMPILEFLAGS += -fshort-enums +ifneq ($(findstring mingw, ${SYSTEM_TYPE}),) +COMPILEFLAGS += -mno-ms-bitfields +endif + +CFLAGS += $(COMPILEFLAGS) +ifeq ($(findstring clang, ${GCC_VERSION}),) +CFLAGS += -fno-inline-small-functions +endif +CFLAGS += -fno-strict-aliasing + +CXXFLAGS += $(COMPILEFLAGS) +CXXFLAGS += -fno-exceptions +CXXFLAGS += -std=gnu++11 diff --git a/platforms/test/platform_deps.h b/platforms/test/platform_deps.h new file mode 100644 index 000000000000..f296d1d535e7 --- /dev/null +++ b/platforms/test/platform_deps.h @@ -0,0 +1,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/>. + */ +#pragma once + +// here just to please the build diff --git a/platforms/test/rules.mk b/platforms/test/rules.mk new file mode 100644 index 000000000000..66b853d8eeb1 --- /dev/null +++ b/platforms/test/rules.mk @@ -0,0 +1,24 @@ +eeprom_stm32_DEFS := -DFLASH_STM32_MOCKED -DNO_PRINT -DFEE_FLASH_BASE=FlashBuf +eeprom_stm32_tiny_DEFS := $(eeprom_stm32_DEFS) \ + -DFEE_MCU_FLASH_SIZE=1 \ + -DMOCK_FLASH_SIZE=1024 \ + -DFEE_PAGE_SIZE=512 \ + -DFEE_PAGE_COUNT=1 +eeprom_stm32_large_DEFS := $(eeprom_stm32_DEFS) \ + -DFEE_MCU_FLASH_SIZE=64 \ + -DMOCK_FLASH_SIZE=65536 \ + -DFEE_PAGE_SIZE=2048 \ + -DFEE_PAGE_COUNT=16 + +eeprom_stm32_INC := \ + $(PLATFORM_PATH)/chibios/ +eeprom_stm32_tiny_INC := $(eeprom_stm32_INC) +eeprom_stm32_large_INC := $(eeprom_stm32_INC) + +eeprom_stm32_SRC := \ + $(TOP_DIR)/drivers/eeprom/eeprom_driver.c \ + $(PLATFORM_PATH)/$(PLATFORM_KEY)/eeprom_stm32_tests.cpp \ + $(PLATFORM_PATH)/$(PLATFORM_KEY)/flash_stm32_mock.c \ + $(PLATFORM_PATH)/chibios/eeprom_stm32.c +eeprom_stm32_tiny_SRC := $(eeprom_stm32_SRC) +eeprom_stm32_large_SRC := $(eeprom_stm32_SRC) diff --git a/tmk_core/common/test/suspend.c b/platforms/test/suspend.c similarity index 100% rename from tmk_core/common/test/suspend.c rename to platforms/test/suspend.c diff --git a/platforms/test/testlist.mk b/platforms/test/testlist.mk new file mode 100644 index 000000000000..51a9638bb968 --- /dev/null +++ b/platforms/test/testlist.mk @@ -0,0 +1 @@ +TEST_LIST += eeprom_stm32_tiny eeprom_stm32_large diff --git a/tmk_core/common/test/timer.c b/platforms/test/timer.c similarity index 100% rename from tmk_core/common/test/timer.c rename to platforms/test/timer.c diff --git a/platforms/timer.h b/platforms/timer.h new file mode 100644 index 000000000000..02e39e79e797 --- /dev/null +++ b/platforms/timer.h @@ -0,0 +1,67 @@ +/* +Copyright 2011 Jun Wako <wakojun@gmail.com> +Copyright 2021 Simon Arlott + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#pragma once + +#if __has_include_next("_timer.h") +# include_next "_timer.h" /* Include the platform's _timer.h */ +#endif + +#include <stdint.h> + +#define TIMER_DIFF(a, b, max) ((max == UINT8_MAX) ? ((uint8_t)((a) - (b))) : ((max == UINT16_MAX) ? ((uint16_t)((a) - (b))) : ((max == UINT32_MAX) ? ((uint32_t)((a) - (b))) : ((a) >= (b) ? (a) - (b) : (max) + 1 - (b) + (a))))) +#define TIMER_DIFF_8(a, b) TIMER_DIFF(a, b, UINT8_MAX) +#define TIMER_DIFF_16(a, b) TIMER_DIFF(a, b, UINT16_MAX) +#define TIMER_DIFF_32(a, b) TIMER_DIFF(a, b, UINT32_MAX) +#define TIMER_DIFF_RAW(a, b) TIMER_DIFF_8(a, b) + +#ifdef __cplusplus +extern "C" { +#endif + +extern volatile uint32_t timer_count; + +void timer_init(void); +void timer_clear(void); +uint16_t timer_read(void); +uint32_t timer_read32(void); +uint16_t timer_elapsed(uint16_t last); +uint32_t timer_elapsed32(uint32_t last); + +// Utility functions to check if a future time has expired & autmatically handle time wrapping if checked / reset frequently (half of max value) +#define timer_expired(current, future) ((uint16_t)(current - future) < UINT16_MAX / 2) +#define timer_expired32(current, future) ((uint32_t)(current - future) < UINT32_MAX / 2) + +// Use an appropriate timer integer size based on architecture (16-bit will overflow sooner) +#if FAST_TIMER_T_SIZE < 32 +# define TIMER_DIFF_FAST(a, b) TIMER_DIFF_16(a, b) +# define timer_expired_fast(current, future) timer_expired(current, future) +typedef uint16_t fast_timer_t; +fast_timer_t inline timer_read_fast(void) { return timer_read(); } +fast_timer_t inline timer_elapsed_fast(fast_timer_t last) { return timer_elapsed(last); } +#else +# define TIMER_DIFF_FAST(a, b) TIMER_DIFF_32(a, b) +# define timer_expired_fast(current, future) timer_expired32(current, future) +typedef uint32_t fast_timer_t; +fast_timer_t inline timer_read_fast(void) { return timer_read32(); } +fast_timer_t inline timer_elapsed_fast(fast_timer_t last) { return timer_elapsed32(last); } +#endif + +#ifdef __cplusplus +} +#endif diff --git a/tmk_core/common/wait.h b/platforms/wait.h similarity index 100% rename from tmk_core/common/wait.h rename to platforms/wait.h diff --git a/tmk_core/common/action.c b/quantum/action.c similarity index 76% rename from tmk_core/common/action.c rename to quantum/action.c index bd41d28b6679..5e81efb6712b 100644 --- a/tmk_core/common/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" @@ -26,6 +27,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #include "action_util.h" #include "action.h" #include "wait.h" +#include "keycode_config.h" #ifdef BACKLIGHT_ENABLE # include "backlight.h" @@ -43,10 +45,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. int tp_buttons; -#if defined(RETRO_TAPPING) || defined(RETRO_TAPPING_PER_KEY) +#if defined(RETRO_TAPPING) || defined(RETRO_TAPPING_PER_KEY) || (defined(AUTO_SHIFT_ENABLE) && defined(RETRO_SHIFT)) int retro_tapping_counter = 0; #endif +#if defined(AUTO_SHIFT_ENABLE) && defined(RETRO_SHIFT) && !defined(NO_ACTION_TAPPING) +# include "process_auto_shift.h" +#endif + #ifdef IGNORE_MOD_TAP_INTERRUPT_PER_KEY __attribute__((weak)) bool get_ignore_mod_tap_interrupt(uint16_t keycode, keyrecord_t *record) { return false; } #endif @@ -55,12 +61,8 @@ __attribute__((weak)) bool get_ignore_mod_tap_interrupt(uint16_t keycode, keyrec __attribute__((weak)) bool get_retro_tapping(uint16_t keycode, keyrecord_t *record) { return false; } #endif -#ifndef TAP_CODE_DELAY -# define TAP_CODE_DELAY 0 -#endif -#ifndef TAP_HOLD_CAPS_DELAY -# define TAP_HOLD_CAPS_DELAY 80 -#endif +__attribute__((weak)) bool pre_process_record_quantum(keyrecord_t *record) { return true; } + /** \brief Called to execute an action. * * FIXME: Needs documentation. @@ -71,7 +73,7 @@ void action_exec(keyevent_t event) { dprint("EVENT: "); debug_event(event); dprintln(); -#if defined(RETRO_TAPPING) || defined(RETRO_TAPPING_PER_KEY) +#if defined(RETRO_TAPPING) || defined(RETRO_TAPPING_PER_KEY) || (defined(AUTO_SHIFT_ENABLE) && defined(RETRO_SHIFT)) retro_tapping_counter++; #endif } @@ -90,25 +92,36 @@ void action_exec(keyevent_t event) { keyrecord_t record = {.event = event}; #ifndef NO_ACTION_ONESHOT + if (!keymap_config.oneshot_disable) { # if (defined(ONESHOT_TIMEOUT) && (ONESHOT_TIMEOUT > 0)) - if (has_oneshot_layer_timed_out()) { - clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); - } - if (has_oneshot_mods_timed_out()) { - clear_oneshot_mods(); - } + if (has_oneshot_layer_timed_out()) { + clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); + } + if (has_oneshot_mods_timed_out()) { + clear_oneshot_mods(); + } # ifdef SWAP_HANDS_ENABLE - if (has_oneshot_swaphands_timed_out()) { - clear_oneshot_swaphands(); - } + if (has_oneshot_swaphands_timed_out()) { + clear_oneshot_swaphands(); + } # endif # endif + } #endif #ifndef NO_ACTION_TAPPING - action_tapping_process(record); +# if defined(AUTO_SHIFT_ENABLE) && defined(RETRO_SHIFT) + if (event.pressed) { + retroshift_poll_time(&event); + } +# endif + if (IS_NOEVENT(record.event) || pre_process_record_quantum(&record)) { + action_tapping_process(record); + } #else - process_record(&record); + if (IS_NOEVENT(record.event) || pre_process_record_quantum(&record)) { + process_record(&record); + } if (!IS_NOEVENT(record.event)) { dprint("processed: "); debug_record(record); @@ -194,7 +207,7 @@ void process_record(keyrecord_t *record) { if (!process_record_quantum(record)) { #ifndef NO_ACTION_ONESHOT - if (is_oneshot_layer_active() && record->event.pressed) { + if (is_oneshot_layer_active() && record->event.pressed && !keymap_config.oneshot_disable) { clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); } #endif @@ -206,7 +219,16 @@ void process_record(keyrecord_t *record) { } void process_record_handler(keyrecord_t *record) { +#ifdef COMBO_ENABLE + action_t action; + if (record->keycode) { + action = action_for_keycode(record->keycode); + } else { + action = store_or_get_action(record->event.pressed, record->event.key); + } +#else action_t action = store_or_get_action(record->event.pressed, record->event.key); +#endif dprint("ACTION: "); debug_action(action); #ifndef NO_ACTION_LAYER @@ -250,7 +272,7 @@ void process_action(keyrecord_t *record, action_t action) { # ifdef SWAP_HANDS_ENABLE && !(action.kind.id == ACT_SWAP_HANDS && action.swap.code == OP_SH_ONESHOT) # endif - ) { + && !keymap_config.oneshot_disable) { clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); do_release_oneshot = !is_oneshot_layer_active(); } @@ -264,8 +286,8 @@ void process_action(keyrecord_t *record, action_t action) { if (event.pressed) { if (mods) { if (IS_MOD(action.key.code) || action.key.code == KC_NO) { - // e.g. LSFT(KC_LGUI): we don't want the LSFT to be weak as it would make it useless. - // This also makes LSFT(KC_LGUI) behave exactly the same as LGUI(KC_LSFT). + // e.g. LSFT(KC_LEFT_GUI): we don't want the LSFT to be weak as it would make it useless. + // This also makes LSFT(KC_LEFT_GUI) behave exactly the same as LGUI(KC_LEFT_SHIFT). // Same applies for some keys like KC_MEH which are declared as MEH(KC_NO). add_mods(mods); } else { @@ -294,41 +316,68 @@ void process_action(keyrecord_t *record, action_t action) { # ifndef NO_ACTION_ONESHOT case MODS_ONESHOT: // Oneshot modifier - if (event.pressed) { - if (tap_count == 0) { - dprint("MODS_TAP: Oneshot: 0\n"); - register_mods(mods | get_oneshot_mods()); - } else if (tap_count == 1) { - dprint("MODS_TAP: Oneshot: start\n"); - set_oneshot_mods(mods | get_oneshot_mods()); -# if defined(ONESHOT_TAP_TOGGLE) && ONESHOT_TAP_TOGGLE > 1 - } else if (tap_count == ONESHOT_TAP_TOGGLE) { - dprint("MODS_TAP: Toggling oneshot"); - clear_oneshot_mods(); - set_oneshot_locked_mods(mods); - register_mods(mods); -# endif + if (keymap_config.oneshot_disable) { + if (event.pressed) { + if (mods) { + if (IS_MOD(action.key.code) || action.key.code == KC_NO) { + // e.g. LSFT(KC_LGUI): we don't want the LSFT to be weak as it would make it useless. + // This also makes LSFT(KC_LGUI) behave exactly the same as LGUI(KC_LSFT). + // Same applies for some keys like KC_MEH which are declared as MEH(KC_NO). + add_mods(mods); + } else { + add_weak_mods(mods); + } + send_keyboard_report(); + } + register_code(action.key.code); } else { - register_mods(mods | get_oneshot_mods()); + unregister_code(action.key.code); + if (mods) { + if (IS_MOD(action.key.code) || action.key.code == KC_NO) { + del_mods(mods); + } else { + del_weak_mods(mods); + } + send_keyboard_report(); + } } } else { - if (tap_count == 0) { - clear_oneshot_mods(); - unregister_mods(mods); - } else if (tap_count == 1) { - // Retain Oneshot mods + if (event.pressed) { + if (tap_count == 0) { + dprint("MODS_TAP: Oneshot: 0\n"); + register_mods(mods | get_oneshot_mods()); + } else if (tap_count == 1) { + dprint("MODS_TAP: Oneshot: start\n"); + set_oneshot_mods(mods | get_oneshot_mods()); # if defined(ONESHOT_TAP_TOGGLE) && ONESHOT_TAP_TOGGLE > 1 - if (mods & get_mods()) { - clear_oneshot_locked_mods(); + } else if (tap_count == ONESHOT_TAP_TOGGLE) { + dprint("MODS_TAP: Toggling oneshot"); clear_oneshot_mods(); - unregister_mods(mods); - } - } else if (tap_count == ONESHOT_TAP_TOGGLE) { - // Toggle Oneshot Layer + set_oneshot_locked_mods(mods); + register_mods(mods); # endif + } else { + register_mods(mods | get_oneshot_mods()); + } } else { - clear_oneshot_mods(); - unregister_mods(mods); + if (tap_count == 0) { + clear_oneshot_mods(); + unregister_mods(mods); + } else if (tap_count == 1) { + // Retain Oneshot mods +# if defined(ONESHOT_TAP_TOGGLE) && ONESHOT_TAP_TOGGLE > 1 + if (mods & get_mods()) { + clear_oneshot_locked_mods(); + clear_oneshot_mods(); + unregister_mods(mods); + } + } else if (tap_count == ONESHOT_TAP_TOGGLE) { + // Toggle Oneshot Layer +# endif + } else { + clear_oneshot_mods(); + unregister_mods(mods); + } } } break; @@ -370,7 +419,7 @@ void process_action(keyrecord_t *record, action_t action) { } else { if (tap_count > 0) { dprint("MODS_TAP: Tap: unregister_code\n"); - if (action.layer_tap.code == KC_CAPS) { + if (action.layer_tap.code == KC_CAPS_LOCK) { wait_ms(TAP_HOLD_CAPS_DELAY); } else { wait_ms(TAP_CODE_DELAY); @@ -513,39 +562,47 @@ void process_action(keyrecord_t *record, action_t action) { # ifndef NO_ACTION_ONESHOT case OP_ONESHOT: // Oneshot modifier -# if defined(ONESHOT_TAP_TOGGLE) && ONESHOT_TAP_TOGGLE > 1 - do_release_oneshot = false; - if (event.pressed) { - del_mods(get_oneshot_locked_mods()); - if (get_oneshot_layer_state() == ONESHOT_TOGGLED) { - reset_oneshot_layer(); - layer_off(action.layer_tap.val); - break; - } else if (tap_count < ONESHOT_TAP_TOGGLE) { + if (keymap_config.oneshot_disable) { + if (event.pressed) { layer_on(action.layer_tap.val); - set_oneshot_layer(action.layer_tap.val, ONESHOT_START); + } else { + layer_off(action.layer_tap.val); } } else { - add_mods(get_oneshot_locked_mods()); - if (tap_count >= ONESHOT_TAP_TOGGLE) { - reset_oneshot_layer(); - clear_oneshot_locked_mods(); - set_oneshot_layer(action.layer_tap.val, ONESHOT_TOGGLED); +# if defined(ONESHOT_TAP_TOGGLE) && ONESHOT_TAP_TOGGLE > 1 + do_release_oneshot = false; + if (event.pressed) { + del_mods(get_oneshot_locked_mods()); + if (get_oneshot_layer_state() == ONESHOT_TOGGLED) { + reset_oneshot_layer(); + layer_off(action.layer_tap.val); + break; + } else if (tap_count < ONESHOT_TAP_TOGGLE) { + layer_on(action.layer_tap.val); + set_oneshot_layer(action.layer_tap.val, ONESHOT_START); + } } else { - clear_oneshot_layer_state(ONESHOT_PRESSED); + add_mods(get_oneshot_locked_mods()); + if (tap_count >= ONESHOT_TAP_TOGGLE) { + reset_oneshot_layer(); + clear_oneshot_locked_mods(); + set_oneshot_layer(action.layer_tap.val, ONESHOT_TOGGLED); + } else { + clear_oneshot_layer_state(ONESHOT_PRESSED); + } } - } # else - if (event.pressed) { - layer_on(action.layer_tap.val); - set_oneshot_layer(action.layer_tap.val, ONESHOT_START); - } else { - clear_oneshot_layer_state(ONESHOT_PRESSED); - if (tap_count > 1) { - clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); + if (event.pressed) { + layer_on(action.layer_tap.val); + set_oneshot_layer(action.layer_tap.val, ONESHOT_START); + } else { + clear_oneshot_layer_state(ONESHOT_PRESSED); + if (tap_count > 1) { + clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); + } } - } # endif + } break; # endif default: @@ -561,7 +618,7 @@ void process_action(keyrecord_t *record, action_t action) { } else { if (tap_count > 0) { dprint("KEYMAP_TAP_KEY: Tap: unregister_code\n"); - if (action.layer_tap.code == KC_CAPS) { + if (action.layer_tap.code == KC_CAPS_LOCK) { wait_ms(TAP_HOLD_CAPS_DELAY); } else { wait_ms(TAP_CODE_DELAY); @@ -682,7 +739,7 @@ void process_action(keyrecord_t *record, action_t action) { #endif #ifndef NO_ACTION_TAPPING -# if defined(RETRO_TAPPING) || defined(RETRO_TAPPING_PER_KEY) +# if defined(RETRO_TAPPING) || defined(RETRO_TAPPING_PER_KEY) || (defined(AUTO_SHIFT_ENABLE) && defined(RETRO_SHIFT)) if (!is_tap_action(action)) { retro_tapping_counter = 0; } else { @@ -699,7 +756,11 @@ void process_action(keyrecord_t *record, action_t action) { get_retro_tapping(get_event_keycode(record->event, false), record) && # endif retro_tapping_counter == 2) { +# if defined(AUTO_SHIFT_ENABLE) && defined(RETRO_SHIFT) + process_auto_shift(action.layer_tap.code, record); +# else tap_code(action.layer_tap.code); +# endif } retro_tapping_counter = 0; } @@ -738,44 +799,45 @@ void register_code(uint8_t code) { return; } #ifdef LOCKING_SUPPORT_ENABLE - else if (KC_LOCKING_CAPS == code) { + else if (KC_LOCKING_CAPS_LOCK == code) { # ifdef LOCKING_RESYNC_ENABLE // Resync: ignore if caps lock already is on if (host_keyboard_leds() & (1 << USB_LED_CAPS_LOCK)) return; # endif - add_key(KC_CAPSLOCK); + add_key(KC_CAPS_LOCK); send_keyboard_report(); wait_ms(100); - del_key(KC_CAPSLOCK); + del_key(KC_CAPS_LOCK); send_keyboard_report(); } - else if (KC_LOCKING_NUM == code) { + else if (KC_LOCKING_NUM_LOCK == code) { # ifdef LOCKING_RESYNC_ENABLE if (host_keyboard_leds() & (1 << USB_LED_NUM_LOCK)) return; # endif - add_key(KC_NUMLOCK); + add_key(KC_NUM_LOCK); send_keyboard_report(); wait_ms(100); - del_key(KC_NUMLOCK); + del_key(KC_NUM_LOCK); send_keyboard_report(); } - else if (KC_LOCKING_SCROLL == code) { + else if (KC_LOCKING_SCROLL_LOCK == code) { # ifdef LOCKING_RESYNC_ENABLE if (host_keyboard_leds() & (1 << USB_LED_SCROLL_LOCK)) return; # endif - add_key(KC_SCROLLLOCK); + add_key(KC_SCROLL_LOCK); send_keyboard_report(); wait_ms(100); - del_key(KC_SCROLLLOCK); + del_key(KC_SCROLL_LOCK); send_keyboard_report(); } #endif - else if IS_KEY (code) { - // TODO: should push command_proc out of this block? - if (command_proc(code)) return; + else if + IS_KEY(code) { + // TODO: should push command_proc out of this block? + if (command_proc(code)) return; #ifndef NO_ACTION_ONESHOT /* TODO: remove @@ -792,33 +854,35 @@ void register_code(uint8_t code) { } else */ #endif - { - // Force a new key press if the key is already pressed - // without this, keys with the same keycode, but different - // modifiers will be reported incorrectly, see issue #1708 - if (is_key_pressed(keyboard_report, code)) { - del_key(code); + { + // Force a new key press if the key is already pressed + // without this, keys with the same keycode, but different + // modifiers will be reported incorrectly, see issue #1708 + if (is_key_pressed(keyboard_report, code)) { + del_key(code); + send_keyboard_report(); + } + add_key(code); send_keyboard_report(); } - add_key(code); + } + else if + IS_MOD(code) { + add_mods(MOD_BIT(code)); send_keyboard_report(); } - } else if IS_MOD (code) { - add_mods(MOD_BIT(code)); - send_keyboard_report(); - } #ifdef EXTRAKEY_ENABLE - else if IS_SYSTEM (code) { - host_system_send(KEYCODE2SYSTEM(code)); - } else if IS_CONSUMER (code) { - host_consumer_send(KEYCODE2CONSUMER(code)); - } + else if + IS_SYSTEM(code) { host_system_send(KEYCODE2SYSTEM(code)); } + else if + IS_CONSUMER(code) { host_consumer_send(KEYCODE2CONSUMER(code)); } #endif #ifdef MOUSEKEY_ENABLE - else if IS_MOUSEKEY (code) { - mousekey_on(code); - mousekey_send(); - } + else if + IS_MOUSEKEY(code) { + mousekey_on(code); + mousekey_send(); + } #endif } @@ -831,54 +895,58 @@ void unregister_code(uint8_t code) { return; } #ifdef LOCKING_SUPPORT_ENABLE - else if (KC_LOCKING_CAPS == code) { + else if (KC_LOCKING_CAPS_LOCK == code) { # ifdef LOCKING_RESYNC_ENABLE // Resync: ignore if caps lock already is off if (!(host_keyboard_leds() & (1 << USB_LED_CAPS_LOCK))) return; # endif - add_key(KC_CAPSLOCK); + add_key(KC_CAPS_LOCK); send_keyboard_report(); - del_key(KC_CAPSLOCK); + del_key(KC_CAPS_LOCK); send_keyboard_report(); } - else if (KC_LOCKING_NUM == code) { + else if (KC_LOCKING_NUM_LOCK == code) { # ifdef LOCKING_RESYNC_ENABLE if (!(host_keyboard_leds() & (1 << USB_LED_NUM_LOCK))) return; # endif - add_key(KC_NUMLOCK); + add_key(KC_NUM_LOCK); send_keyboard_report(); - del_key(KC_NUMLOCK); + del_key(KC_NUM_LOCK); send_keyboard_report(); } - else if (KC_LOCKING_SCROLL == code) { + else if (KC_LOCKING_SCROLL_LOCK == code) { # ifdef LOCKING_RESYNC_ENABLE if (!(host_keyboard_leds() & (1 << USB_LED_SCROLL_LOCK))) return; # endif - add_key(KC_SCROLLLOCK); + add_key(KC_SCROLL_LOCK); send_keyboard_report(); - del_key(KC_SCROLLLOCK); + del_key(KC_SCROLL_LOCK); send_keyboard_report(); } #endif - else if IS_KEY (code) { - del_key(code); - send_keyboard_report(); - } else if IS_MOD (code) { - del_mods(MOD_BIT(code)); - send_keyboard_report(); - } else if IS_SYSTEM (code) { - host_system_send(0); - } else if IS_CONSUMER (code) { - host_consumer_send(0); - } + else if + IS_KEY(code) { + del_key(code); + send_keyboard_report(); + } + else if + IS_MOD(code) { + del_mods(MOD_BIT(code)); + send_keyboard_report(); + } + else if + IS_SYSTEM(code) { host_system_send(0); } + else if + IS_CONSUMER(code) { host_consumer_send(0); } #ifdef MOUSEKEY_ENABLE - else if IS_MOUSEKEY (code) { - mousekey_off(code); - mousekey_send(); - } + else if + IS_MOUSEKEY(code) { + mousekey_off(code); + mousekey_send(); + } #endif } @@ -897,9 +965,9 @@ void tap_code_delay(uint8_t code, uint16_t delay) { /** \brief Tap a keycode with the default delay. * - * \param code The basic keycode to tap. If `code` is `KC_CAPS`, the delay will be `TAP_HOLD_CAPS_DELAY`, otherwise `TAP_CODE_DELAY`, if defined. + * \param code The basic keycode to tap. If `code` is `KC_CAPS_LOCK`, the delay will be `TAP_HOLD_CAPS_DELAY`, otherwise `TAP_CODE_DELAY`, if defined. */ -void tap_code(uint8_t code) { tap_code_delay(code, code == KC_CAPS ? TAP_HOLD_CAPS_DELAY : TAP_CODE_DELAY); } +void tap_code(uint8_t code) { tap_code_delay(code, code == KC_CAPS_LOCK ? TAP_HOLD_CAPS_DELAY : TAP_CODE_DELAY); } /** \brief Adds the given physically pressed modifiers and sends a keyboard report immediately. * @@ -979,6 +1047,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) @@ -990,6 +1062,24 @@ bool is_tap_key(keypos_t key) { return is_tap_action(action); } +/** \brief Utilities for actions. (FIXME: Needs better description) + * + * FIXME: Needs documentation. + */ +bool is_tap_record(keyrecord_t *record) { +#ifdef COMBO_ENABLE + action_t action; + if (record->keycode) { + action = action_for_keycode(record->keycode); + } else { + action = layer_switch_get_action(record->event.key); + } +#else + action_t action = layer_switch_get_action(record->event.key); +#endif + return is_tap_action(action); +} + /** \brief Utilities for actions. (FIXME: Needs better description) * * FIXME: Needs documentation. @@ -1001,7 +1091,7 @@ bool is_tap_action(action_t action) { case ACT_LAYER_TAP: case ACT_LAYER_TAP_EXT: switch (action.layer_tap.code) { - case KC_NO ... KC_RGUI: + case KC_NO ... KC_RIGHT_GUI: case OP_TAP_TOGGLE: case OP_ONESHOT: return true; @@ -1009,7 +1099,7 @@ bool is_tap_action(action_t action) { return false; case ACT_SWAP_HANDS: switch (action.swap.code) { - case KC_NO ... KC_RGUI: + case KC_NO ... KC_RIGHT_GUI: case OP_SH_TAP_TOGGLE: return true; } diff --git a/tmk_core/common/action.h b/quantum/action.h similarity index 92% rename from tmk_core/common/action.h rename to quantum/action.h index 8cb4722c6e7d..b562f18c5b37 100644 --- a/tmk_core/common/action.h +++ b/quantum/action.h @@ -38,6 +38,13 @@ extern "C" { # endif #endif +#ifndef TAP_CODE_DELAY +# define TAP_CODE_DELAY 0 +#endif +#ifndef TAP_HOLD_CAPS_DELAY +# define TAP_HOLD_CAPS_DELAY 80 +#endif + /* tapping count and state */ typedef struct { bool interrupted : 1; @@ -53,6 +60,9 @@ typedef struct { #ifndef NO_ACTION_TAPPING tap_t tap; #endif +#ifdef COMBO_ENABLE + uint16_t keycode; +#endif } keyrecord_t; /* Execute action per keyevent */ @@ -60,6 +70,7 @@ void action_exec(keyevent_t event); /* action for key */ action_t action_for_key(uint8_t layer, keypos_t key); +action_t action_for_keycode(uint16_t keycode); /* macro */ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt); @@ -77,7 +88,7 @@ extern bool disable_action_cache; /* Code for handling one-handed key modifiers. */ #ifdef SWAP_HANDS_ENABLE -extern bool swap_hands; +extern bool swap_hands; extern const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS]; # if (MATRIX_COLS <= 8) typedef uint8_t swap_state_row_t; @@ -111,6 +122,7 @@ void clear_keyboard_but_mods(void); void clear_keyboard_but_mods_and_keys(void); void layer_switch(uint8_t new_layer); bool is_tap_key(keypos_t key); +bool is_tap_record(keyrecord_t *record); bool is_tap_action(action_t action); #ifndef NO_ACTION_TAPPING diff --git a/tmk_core/common/action_code.h b/quantum/action_code.h similarity index 100% rename from tmk_core/common/action_code.h rename to quantum/action_code.h diff --git a/tmk_core/common/action_layer.c b/quantum/action_layer.c similarity index 95% rename from tmk_core/common/action_layer.c rename to quantum/action_layer.c index af2d7d964b7b..ed1a4bd20d94 100644 --- a/tmk_core/common/action_layer.c +++ b/quantum/action_layer.c @@ -131,32 +131,32 @@ bool layer_state_cmp(layer_state_t cmp_layer_state, uint8_t layer) { if (!cmp_layer_state) { return layer == 0; } - return (cmp_layer_state & (1UL << layer)) != 0; + return (cmp_layer_state & ((layer_state_t)1 << layer)) != 0; } /** \brief Layer move * * Turns on the given layer and turn off all other layers */ -void layer_move(uint8_t layer) { layer_state_set(1UL << layer); } +void layer_move(uint8_t layer) { layer_state_set((layer_state_t)1 << layer); } /** \brief Layer on * * Turns on given layer */ -void layer_on(uint8_t layer) { layer_state_set(layer_state | (1UL << layer)); } +void layer_on(uint8_t layer) { layer_state_set(layer_state | ((layer_state_t)1 << layer)); } /** \brief Layer off * * Turns off given layer */ -void layer_off(uint8_t layer) { layer_state_set(layer_state & ~(1UL << layer)); } +void layer_off(uint8_t layer) { layer_state_set(layer_state & ~((layer_state_t)1 << layer)); } /** \brief Layer invert * * Toggle the given layer (set it if it's unset, or unset it if it's set) */ -void layer_invert(uint8_t layer) { layer_state_set(layer_state ^ (1UL << layer)); } +void layer_invert(uint8_t layer) { layer_state_set(layer_state ^ ((layer_state_t)1 << layer)); } /** \brief Layer or * @@ -258,7 +258,7 @@ uint8_t layer_switch_get_layer(keypos_t key) { layer_state_t layers = layer_state | default_layer_state; /* check top layer first */ for (int8_t i = MAX_LAYER - 1; i >= 0; i--) { - if (layers & (1UL << i)) { + if (layers & ((layer_state_t)1 << i)) { action = action_for_key(i, key); if (action.code != ACTION_TRANSPARENT) { return i; diff --git a/tmk_core/common/action_layer.h b/quantum/action_layer.h similarity index 83% rename from tmk_core/common/action_layer.h rename to quantum/action_layer.h index d72cd3e3a5b5..b87d096eedb7 100644 --- a/tmk_core/common/action_layer.h +++ b/quantum/action_layer.h @@ -21,6 +21,29 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #include "keyboard.h" #include "action.h" +#ifdef DYNAMIC_KEYMAP_ENABLE +# ifndef DYNAMIC_KEYMAP_LAYER_COUNT +# define DYNAMIC_KEYMAP_LAYER_COUNT 4 +# endif +# if DYNAMIC_KEYMAP_LAYER_COUNT <= 8 +# ifndef LAYER_STATE_8BIT +# define LAYER_STATE_8BIT +# endif +# elif DYNAMIC_KEYMAP_LAYER_COUNT <= 16 +# ifndef LAYER_STATE_16BIT +# define LAYER_STATE_16BIT +# endif +# else +# ifndef LAYER_STATE_32BIT +# define LAYER_STATE_32BIT +# endif +# endif +#endif + +#if !defined(LAYER_STATE_8BIT) && !defined(LAYER_STATE_16BIT) && !defined(LAYER_STATE_32BIT) +# define LAYER_STATE_32BIT +#endif + #if defined(LAYER_STATE_8BIT) typedef uint8_t layer_state_t; # define MAX_LAYER_BITS 3 @@ -35,13 +58,15 @@ typedef uint16_t layer_state_t; # define MAX_LAYER 16 # endif # define get_highest_layer(state) biton16(state) -#else +#elif defined(LAYER_STATE_32BIT) typedef uint32_t layer_state_t; # define MAX_LAYER_BITS 5 # ifndef MAX_LAYER # define MAX_LAYER 32 # endif # define get_highest_layer(state) biton32(state) +#else +# error Layer Mask size not specified. HOW?! #endif /* @@ -92,7 +117,7 @@ layer_state_t layer_state_set_kb(layer_state_t state); # define layer_state_set(layer) # define layer_state_is(layer) (layer == 0) -# define layer_state_cmp(state, layer) (state == 0 ? layer == 0 : (state & 1UL << layer) != 0) +# define layer_state_cmp(state, layer) (state == 0 ? layer == 0 : (state & (layer_state_t)1 << layer) != 0) # define layer_debug() # define layer_clear() diff --git a/tmk_core/common/action_macro.c b/quantum/action_macro.c similarity index 100% rename from tmk_core/common/action_macro.c rename to quantum/action_macro.c diff --git a/tmk_core/common/action_macro.h b/quantum/action_macro.h similarity index 100% rename from tmk_core/common/action_macro.h rename to quantum/action_macro.h diff --git a/quantum/action_tapping.c b/quantum/action_tapping.c new file mode 100644 index 000000000000..d2c93f85e3f5 --- /dev/null +++ b/quantum/action_tapping.c @@ -0,0 +1,546 @@ +#include <stdint.h> +#include <stdbool.h> +#include "action.h" +#include "action_layer.h" +#include "action_tapping.h" +#include "keycode.h" +#include "timer.h" + +#ifdef DEBUG_ACTION +# include "debug.h" +#else +# include "nodebug.h" +#endif + +#ifndef NO_ACTION_TAPPING + +# define IS_TAPPING() !IS_NOEVENT(tapping_key.event) +# define IS_TAPPING_PRESSED() (IS_TAPPING() && tapping_key.event.pressed) +# define IS_TAPPING_RELEASED() (IS_TAPPING() && !tapping_key.event.pressed) +# define IS_TAPPING_KEY(k) (IS_TAPPING() && KEYEQ(tapping_key.event.key, (k))) +# ifndef COMBO_ENABLE +# define IS_TAPPING_RECORD(r) (IS_TAPPING() && KEYEQ(tapping_key.event.key, (r->event.key))) +# else +# define IS_TAPPING_RECORD(r) (IS_TAPPING() && KEYEQ(tapping_key.event.key, (r->event.key)) && tapping_key.keycode == r->keycode) +# endif + +uint16_t g_tapping_term = TAPPING_TERM; + +__attribute__((weak)) uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { return g_tapping_term; } + +# ifdef TAPPING_TERM_PER_KEY +# define WITHIN_TAPPING_TERM(e) (TIMER_DIFF_16(e.time, tapping_key.event.time) < get_tapping_term(get_record_keycode(&tapping_key, false), &tapping_key)) +# else +# define WITHIN_TAPPING_TERM(e) (TIMER_DIFF_16(e.time, tapping_key.event.time) < g_tapping_term) +# endif + +# ifdef TAPPING_FORCE_HOLD_PER_KEY +__attribute__((weak)) bool get_tapping_force_hold(uint16_t keycode, keyrecord_t *record) { return false; } +# endif + +# ifdef PERMISSIVE_HOLD_PER_KEY +__attribute__((weak)) bool get_permissive_hold(uint16_t keycode, keyrecord_t *record) { return false; } +# endif + +# ifdef HOLD_ON_OTHER_KEY_PRESS_PER_KEY +__attribute__((weak)) bool get_hold_on_other_key_press(uint16_t keycode, keyrecord_t *record) { return false; } +# endif + +# if defined(AUTO_SHIFT_ENABLE) && defined(RETRO_SHIFT) +# include "process_auto_shift.h" +# endif + +static keyrecord_t tapping_key = {}; +static keyrecord_t waiting_buffer[WAITING_BUFFER_SIZE] = {}; +static uint8_t waiting_buffer_head = 0; +static uint8_t waiting_buffer_tail = 0; + +static bool process_tapping(keyrecord_t *record); +static bool waiting_buffer_enq(keyrecord_t record); +static void waiting_buffer_clear(void); +static bool waiting_buffer_typed(keyevent_t event); +static bool waiting_buffer_has_anykey_pressed(void); +static void waiting_buffer_scan_tap(void); +static void debug_tapping_key(void); +static void debug_waiting_buffer(void); + +/** \brief Action Tapping Process + * + * FIXME: Needs doc + */ +void action_tapping_process(keyrecord_t record) { + if (process_tapping(&record)) { + if (!IS_NOEVENT(record.event)) { + debug("processed: "); + debug_record(record); + debug("\n"); + } + } else { + if (!waiting_buffer_enq(record)) { + // clear all in case of overflow. + debug("OVERFLOW: CLEAR ALL STATES\n"); + clear_keyboard(); + waiting_buffer_clear(); + tapping_key = (keyrecord_t){}; + } + } + + // process waiting_buffer + if (!IS_NOEVENT(record.event) && waiting_buffer_head != waiting_buffer_tail) { + debug("---- action_exec: process waiting_buffer -----\n"); + } + for (; waiting_buffer_tail != waiting_buffer_head; waiting_buffer_tail = (waiting_buffer_tail + 1) % WAITING_BUFFER_SIZE) { + if (process_tapping(&waiting_buffer[waiting_buffer_tail])) { + debug("processed: waiting_buffer["); + debug_dec(waiting_buffer_tail); + debug("] = "); + debug_record(waiting_buffer[waiting_buffer_tail]); + debug("\n\n"); + } else { + break; + } + } + if (!IS_NOEVENT(record.event)) { + debug("\n"); + } +} + +/** \brief Tapping + * + * Rule: Tap key is typed(pressed and released) within TAPPING_TERM. + * (without interfering by typing other key) + */ +/* return true when key event is processed or consumed. */ +bool process_tapping(keyrecord_t *keyp) { + keyevent_t event = keyp->event; +# if (defined(AUTO_SHIFT_ENABLE) && defined(RETRO_SHIFT)) || defined(TAPPING_TERM_PER_KEY) || defined(PERMISSIVE_HOLD_PER_KEY) || defined(TAPPING_FORCE_HOLD_PER_KEY) || defined(HOLD_ON_OTHER_KEY_PRESS_PER_KEY) + uint16_t tapping_keycode = get_record_keycode(&tapping_key, false); +# endif + + // if tapping + if (IS_TAPPING_PRESSED()) { + // clang-format off + if (WITHIN_TAPPING_TERM(event) +# if defined(AUTO_SHIFT_ENABLE) && defined(RETRO_SHIFT) + || ( +# ifdef RETRO_TAPPING_PER_KEY + get_retro_tapping(tapping_keycode, keyp) && +# endif + (RETRO_SHIFT + 0) != 0 && TIMER_DIFF_16(event.time, tapping_key.event.time) < (RETRO_SHIFT + 0) + ) +# endif + ) { + // clang-format on + if (tapping_key.tap.count == 0) { + if (IS_TAPPING_RECORD(keyp) && !event.pressed) { +# if defined(AUTO_SHIFT_ENABLE) && defined(RETRO_SHIFT) + retroshift_swap_times(); +# endif + // first tap! + debug("Tapping: First tap(0->1).\n"); + tapping_key.tap.count = 1; + debug_tapping_key(); + process_record(&tapping_key); + + // copy tapping state + keyp->tap = tapping_key.tap; + // enqueue + return false; + } + /* Process a key typed within TAPPING_TERM + * This can register the key before settlement of tapping, + * useful for long TAPPING_TERM but may prevent fast typing. + */ + // clang-format off +# if defined(TAPPING_TERM_PER_KEY) || (TAPPING_TERM >= 500) || defined(PERMISSIVE_HOLD) || defined(PERMISSIVE_HOLD_PER_KEY) || (defined(AUTO_SHIFT_ENABLE) && defined(RETRO_SHIFT)) + else if ( + ( + ( + ( +# ifdef TAPPING_TERM_PER_KEY + get_tapping_term(tapping_keycode, keyp) +# else + g_tapping_term +# endif + >= 500 + ) + +# ifdef PERMISSIVE_HOLD_PER_KEY + || get_permissive_hold(tapping_keycode, keyp) +# elif defined(PERMISSIVE_HOLD) + || true +# endif + ) && IS_RELEASED(event) && waiting_buffer_typed(event) + ) + // Causes nested taps to not wait past TAPPING_TERM/RETRO_SHIFT + // unnecessarily and fixes them for Layer Taps. +# if defined(AUTO_SHIFT_ENABLE) && defined(RETRO_SHIFT) + || ( +# ifdef RETRO_TAPPING_PER_KEY + get_retro_tapping(tapping_keycode, keyp) && +# endif + ( + // Rolled over the two keys. + ( + ( + false +# if defined(HOLD_ON_OTHER_KEY_PRESS) || defined(HOLD_ON_OTHER_KEY_PRESS_PER_KEY) + || ( + IS_LT(tapping_keycode) +# ifdef HOLD_ON_OTHER_KEY_PRESS_PER_KEY + && get_hold_on_other_key_press(tapping_keycode, keyp) +# endif + ) +# endif +# if !defined(IGNORE_MOD_TAP_INTERRUPT) || defined(IGNORE_MOD_TAP_INTERRUPT_PER_KEY) + || ( + IS_MT(tapping_keycode) +# ifdef IGNORE_MOD_TAP_INTERRUPT_PER_KEY + && !get_ignore_mod_tap_interrupt(tapping_keycode, keyp) +# endif + ) +# endif + ) && tapping_key.tap.interrupted == true + ) + // Makes Retro Shift ignore [IGNORE_MOD_TAP_INTERRUPT's + // effects on nested taps for MTs and the default + // behavior of LTs] below TAPPING_TERM or RETRO_SHIFT. + || ( + IS_RETRO(tapping_keycode) + && (event.key.col != tapping_key.event.key.col || event.key.row != tapping_key.event.key.row) + && IS_RELEASED(event) && waiting_buffer_typed(event) + ) + ) + ) +# endif + ) { + // clang-format on + debug("Tapping: End. No tap. Interfered by typing key\n"); + process_record(&tapping_key); + tapping_key = (keyrecord_t){}; + debug_tapping_key(); + // enqueue + return false; + } +# endif + /* Process release event of a key pressed before tapping starts + * Without this unexpected repeating will occur with having fast repeating setting + * https://github.com/tmk/tmk_keyboard/issues/60 + */ + else if (IS_RELEASED(event) && !waiting_buffer_typed(event)) { + // Modifier should be retained till end of this tapping. + action_t action = layer_switch_get_action(event.key); + switch (action.kind.id) { + case ACT_LMODS: + case ACT_RMODS: + if (action.key.mods && !action.key.code) return false; + if (IS_MOD(action.key.code)) return false; + break; + case ACT_LMODS_TAP: + case ACT_RMODS_TAP: + if (action.key.mods && keyp->tap.count == 0) return false; + if (IS_MOD(action.key.code)) return false; + break; + } + // Release of key should be process immediately. + debug("Tapping: release event of a key pressed before tapping\n"); + process_record(keyp); + return true; + } else { + // set interrupted flag when other key preesed during tapping + if (event.pressed) { + tapping_key.tap.interrupted = true; +# if defined(HOLD_ON_OTHER_KEY_PRESS) || defined(HOLD_ON_OTHER_KEY_PRESS_PER_KEY) +# if defined(HOLD_ON_OTHER_KEY_PRESS_PER_KEY) + if (get_hold_on_other_key_press(tapping_keycode, keyp)) +# endif + { + debug("Tapping: End. No tap. Interfered by pressed key\n"); + process_record(&tapping_key); + tapping_key = (keyrecord_t){}; + debug_tapping_key(); + // enqueue + return false; + } +# endif + } + // enqueue + return false; + } + } + // tap_count > 0 + else { + if (IS_TAPPING_RECORD(keyp) && !event.pressed) { + debug("Tapping: Tap release("); + debug_dec(tapping_key.tap.count); + debug(")\n"); + keyp->tap = tapping_key.tap; + process_record(keyp); + tapping_key = *keyp; + debug_tapping_key(); + return true; + } else if (is_tap_record(keyp) && event.pressed) { + if (tapping_key.tap.count > 1) { + debug("Tapping: Start new tap with releasing last tap(>1).\n"); + // unregister key + process_record(&(keyrecord_t){ + .tap = tapping_key.tap, + .event.key = tapping_key.event.key, + .event.time = event.time, + .event.pressed = false, +# ifdef COMBO_ENABLE + .keycode = tapping_key.keycode, +# endif + }); + } else { + debug("Tapping: Start while last tap(1).\n"); + } + tapping_key = *keyp; + waiting_buffer_scan_tap(); + debug_tapping_key(); + return true; + } else { + if (!IS_NOEVENT(event)) { + debug("Tapping: key event while last tap(>0).\n"); + } + process_record(keyp); + return true; + } + } + } + // after TAPPING_TERM + else { + if (tapping_key.tap.count == 0) { + debug("Tapping: End. Timeout. Not tap(0): "); + debug_event(event); + debug("\n"); + process_record(&tapping_key); + tapping_key = (keyrecord_t){}; + debug_tapping_key(); + return false; + } else { + if (IS_TAPPING_RECORD(keyp) && !event.pressed) { + debug("Tapping: End. last timeout tap release(>0)."); + keyp->tap = tapping_key.tap; + process_record(keyp); + tapping_key = (keyrecord_t){}; + return true; + } else if (is_tap_record(keyp) && event.pressed) { + if (tapping_key.tap.count > 1) { + debug("Tapping: Start new tap with releasing last timeout tap(>1).\n"); + // unregister key + process_record(&(keyrecord_t){ + .tap = tapping_key.tap, + .event.key = tapping_key.event.key, + .event.time = event.time, + .event.pressed = false, +# ifdef COMBO_ENABLE + .keycode = tapping_key.keycode, +# endif + }); + } else { + debug("Tapping: Start while last timeout tap(1).\n"); + } + tapping_key = *keyp; + waiting_buffer_scan_tap(); + debug_tapping_key(); + return true; + } else { + if (!IS_NOEVENT(event)) { + debug("Tapping: key event while last timeout tap(>0).\n"); + } + process_record(keyp); + return true; + } + } + } + } else if (IS_TAPPING_RELEASED()) { + // clang-format off + if (WITHIN_TAPPING_TERM(event) +# if defined(AUTO_SHIFT_ENABLE) && defined(RETRO_SHIFT) + || ( +# ifdef RETRO_TAPPING_PER_KEY + get_retro_tapping(tapping_keycode, keyp) && +# endif + (RETRO_SHIFT + 0) != 0 && TIMER_DIFF_16(event.time, tapping_key.event.time) < (RETRO_SHIFT + 0) + ) +# endif + ) { + // clang-format on + if (event.pressed) { + if (IS_TAPPING_RECORD(keyp)) { +//# ifndef TAPPING_FORCE_HOLD +# if !defined(TAPPING_FORCE_HOLD) || defined(TAPPING_FORCE_HOLD_PER_KEY) + if ( +# ifdef TAPPING_FORCE_HOLD_PER_KEY + !get_tapping_force_hold(tapping_keycode, keyp) && +# endif + !tapping_key.tap.interrupted && tapping_key.tap.count > 0) { + // sequential tap. + keyp->tap = tapping_key.tap; + if (keyp->tap.count < 15) keyp->tap.count += 1; + debug("Tapping: Tap press("); + debug_dec(keyp->tap.count); + debug(")\n"); + process_record(keyp); + tapping_key = *keyp; + debug_tapping_key(); + return true; + } +# endif + // FIX: start new tap again + tapping_key = *keyp; + return true; + } else if (is_tap_record(keyp)) { + // Sequential tap can be interfered with other tap key. + debug("Tapping: Start with interfering other tap.\n"); + tapping_key = *keyp; + waiting_buffer_scan_tap(); + debug_tapping_key(); + return true; + } else { + // should none in buffer + // FIX: interrupted when other key is pressed + tapping_key.tap.interrupted = true; + process_record(keyp); + return true; + } + } else { + if (!IS_NOEVENT(event)) debug("Tapping: other key just after tap.\n"); + process_record(keyp); + return true; + } + } else { + // FIX: process_action here? + // timeout. no sequential tap. + debug("Tapping: End(Timeout after releasing last tap): "); + debug_event(event); + debug("\n"); + tapping_key = (keyrecord_t){}; + debug_tapping_key(); + return false; + } + } + // not tapping state + else { + if (event.pressed && is_tap_record(keyp)) { + debug("Tapping: Start(Press tap key).\n"); + tapping_key = *keyp; + process_record_tap_hint(&tapping_key); + waiting_buffer_scan_tap(); + debug_tapping_key(); + return true; + } else { + process_record(keyp); + return true; + } + } +} + +/** \brief Waiting buffer enq + * + * FIXME: Needs docs + */ +bool waiting_buffer_enq(keyrecord_t record) { + if (IS_NOEVENT(record.event)) { + return true; + } + + if ((waiting_buffer_head + 1) % WAITING_BUFFER_SIZE == waiting_buffer_tail) { + debug("waiting_buffer_enq: Over flow.\n"); + return false; + } + + waiting_buffer[waiting_buffer_head] = record; + waiting_buffer_head = (waiting_buffer_head + 1) % WAITING_BUFFER_SIZE; + + debug("waiting_buffer_enq: "); + debug_waiting_buffer(); + return true; +} + +/** \brief Waiting buffer clear + * + * FIXME: Needs docs + */ +void waiting_buffer_clear(void) { + waiting_buffer_head = 0; + waiting_buffer_tail = 0; +} + +/** \brief Waiting buffer typed + * + * FIXME: Needs docs + */ +bool waiting_buffer_typed(keyevent_t event) { + for (uint8_t i = waiting_buffer_tail; i != waiting_buffer_head; i = (i + 1) % WAITING_BUFFER_SIZE) { + if (KEYEQ(event.key, waiting_buffer[i].event.key) && event.pressed != waiting_buffer[i].event.pressed) { + return true; + } + } + return false; +} + +/** \brief Waiting buffer has anykey pressed + * + * FIXME: Needs docs + */ +__attribute__((unused)) bool waiting_buffer_has_anykey_pressed(void) { + for (uint8_t i = waiting_buffer_tail; i != waiting_buffer_head; i = (i + 1) % WAITING_BUFFER_SIZE) { + if (waiting_buffer[i].event.pressed) return true; + } + return false; +} + +/** \brief Scan buffer for tapping + * + * FIXME: Needs docs + */ +void waiting_buffer_scan_tap(void) { + // tapping already is settled + if (tapping_key.tap.count > 0) return; + // invalid state: tapping_key released && tap.count == 0 + if (!tapping_key.event.pressed) return; + + for (uint8_t i = waiting_buffer_tail; i != waiting_buffer_head; i = (i + 1) % WAITING_BUFFER_SIZE) { + if (IS_TAPPING_KEY(waiting_buffer[i].event.key) && !waiting_buffer[i].event.pressed && WITHIN_TAPPING_TERM(waiting_buffer[i].event)) { + tapping_key.tap.count = 1; + waiting_buffer[i].tap.count = 1; + process_record(&tapping_key); + + debug("waiting_buffer_scan_tap: found at ["); + debug_dec(i); + debug("]\n"); + debug_waiting_buffer(); + return; + } + } +} + +/** \brief Tapping key debug print + * + * FIXME: Needs docs + */ +static void debug_tapping_key(void) { + debug("TAPPING_KEY="); + debug_record(tapping_key); + debug("\n"); +} + +/** \brief Waiting buffer debug print + * + * FIXME: Needs docs + */ +static void debug_waiting_buffer(void) { + debug("{ "); + for (uint8_t i = waiting_buffer_tail; i != waiting_buffer_head; i = (i + 1) % WAITING_BUFFER_SIZE) { + debug("["); + debug_dec(i); + debug("]="); + debug_record(waiting_buffer[i]); + debug(" "); + } + debug("}\n"); +} + +#endif diff --git a/tmk_core/common/action_tapping.h b/quantum/action_tapping.h similarity index 90% rename from tmk_core/common/action_tapping.h rename to quantum/action_tapping.h index 893ccb1ce1df..b2feb6850ce5 100644 --- a/tmk_core/common/action_tapping.h +++ b/quantum/action_tapping.h @@ -30,12 +30,17 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #define WAITING_BUFFER_SIZE 8 #ifndef NO_ACTION_TAPPING +uint16_t get_record_keycode(keyrecord_t *record, bool update_layer_cache); uint16_t get_event_keycode(keyevent_t event, bool update_layer_cache); void action_tapping_process(keyrecord_t record); +#endif uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record); bool get_permissive_hold(uint16_t keycode, keyrecord_t *record); bool get_ignore_mod_tap_interrupt(uint16_t keycode, keyrecord_t *record); bool get_tapping_force_hold(uint16_t keycode, keyrecord_t *record); bool get_retro_tapping(uint16_t keycode, keyrecord_t *record); + +#ifdef DYNAMIC_TAPPING_TERM_ENABLE +extern uint16_t g_tapping_term; #endif diff --git a/tmk_core/common/action_util.c b/quantum/action_util.c similarity index 91% rename from tmk_core/common/action_util.c rename to quantum/action_util.c index a57c8bf66a8e..78e02aec185f 100644 --- a/tmk_core/common/action_util.c +++ b/quantum/action_util.c @@ -27,15 +27,9 @@ extern keymap_config_t keymap_config; static uint8_t real_mods = 0; static uint8_t weak_mods = 0; static uint8_t macro_mods = 0; - -#ifdef USB_6KRO_ENABLE -# define RO_ADD(a, b) ((a + b) % KEYBOARD_REPORT_KEYS) -# define RO_SUB(a, b) ((a - b + KEYBOARD_REPORT_KEYS) % KEYBOARD_REPORT_KEYS) -# define RO_INC(a) RO_ADD(a, 1) -# define RO_DEC(a) RO_SUB(a, 1) -static int8_t cb_head = 0; -static int8_t cb_tail = 0; -static int8_t cb_count = 0; +#ifdef KEY_OVERRIDE_ENABLE +static uint8_t weak_override_mods = 0; +static uint8_t suppressed_mods = 0; #endif // TODO: pointer variable is not needed @@ -176,7 +170,7 @@ void reset_oneshot_layer(void) { void clear_oneshot_layer_state(oneshot_fullfillment_t state) { uint8_t start_state = oneshot_layer_data; oneshot_layer_data &= ~state; - if ((!get_oneshot_layer_state() && start_state != oneshot_layer_data) || keymap_config.oneshot_disable) { + if ((!get_oneshot_layer_state() && start_state != oneshot_layer_data) && !keymap_config.oneshot_disable) { layer_off(get_oneshot_layer()); reset_oneshot_layer(); } @@ -195,6 +189,7 @@ void oneshot_set(bool active) { if (keymap_config.oneshot_disable != active) { keymap_config.oneshot_disable = active; eeconfig_update_keymap(keymap_config.raw); + clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); dprintf("Oneshot: active: %d\n", active); } } @@ -229,6 +224,7 @@ void send_keyboard_report(void) { keyboard_report->mods = real_mods; keyboard_report->mods |= weak_mods; keyboard_report->mods |= macro_mods; + #ifndef NO_ACTION_ONESHOT if (oneshot_mods) { # if (defined(ONESHOT_TIMEOUT) && (ONESHOT_TIMEOUT > 0)) @@ -244,6 +240,13 @@ void send_keyboard_report(void) { } #endif + +#ifdef KEY_OVERRIDE_ENABLE + // These need to be last to be able to properly control key overrides + keyboard_report->mods &= ~suppressed_mods; + keyboard_report->mods |= weak_override_mods; +#endif + host_keyboard_send(keyboard_report); } @@ -299,6 +302,22 @@ void set_weak_mods(uint8_t mods) { weak_mods = mods; } */ void clear_weak_mods(void) { weak_mods = 0; } +#ifdef KEY_OVERRIDE_ENABLE +/** \brief set weak mods used by key overrides. DO not call this manually + */ +void set_weak_override_mods(uint8_t mods) { weak_override_mods = mods; } +/** \brief clear weak mods used by key overrides. DO not call this manually + */ +void clear_weak_override_mods(void) { weak_override_mods = 0; } + +/** \brief set suppressed mods used by key overrides. DO not call this manually + */ +void set_suppressed_override_mods(uint8_t mods) { suppressed_mods = mods; } +/** \brief clear suppressed mods used by key overrides. DO not call this manually + */ +void clear_suppressed_override_mods(void) { suppressed_mods = 0; } +#endif + /* macro modifier */ /** \brief get macro mods * diff --git a/tmk_core/common/action_util.h b/quantum/action_util.h similarity index 100% rename from tmk_core/common/action_util.h rename to quantum/action_util.h diff --git a/quantum/api.c b/quantum/api.c deleted file mode 100644 index 16857445895f..000000000000 --- 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 0a30e9d6cc8d..000000000000 --- 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 07c90cf804bc..000000000000 --- 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/api/api_sysex.h b/quantum/api/api_sysex.h deleted file mode 100644 index eb0a18848db9..000000000000 --- a/quantum/api/api_sysex.h +++ /dev/null @@ -1,25 +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 - -#include "api.h" - -#define API_SYSEX_MAX_SIZE 32 - -void send_bytes_sysex(uint8_t message_type, uint8_t data_type, uint8_t* bytes, uint16_t length); - -#define SEND_BYTES(mt, dt, b, l) send_bytes_sysex(mt, dt, b, l) diff --git a/quantum/audio/audio.c b/quantum/audio/audio.c index 46277dd70bf1..49bb309e80f4 100644 --- a/quantum/audio/audio.c +++ b/quantum/audio/audio.c @@ -139,6 +139,9 @@ void audio_init() { audio_initialized = true; } stop_all_notes(); +#ifndef AUDIO_INIT_DELAY + audio_startup(); +#endif } void audio_startup(void) { diff --git a/quantum/audio/audio.h b/quantum/audio/audio.h index 56b9158a1a03..290d461f5a16 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/driver_chibios_pwm_hardware.c b/quantum/audio/driver_chibios_pwm_hardware.c deleted file mode 100644 index 3c7d89b290b3..000000000000 --- a/quantum/audio/driver_chibios_pwm_hardware.c +++ /dev/null @@ -1,144 +0,0 @@ -/* Copyright 2020 Jack Humbert - * Copyright 2020 JohSchneider - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -/* -Audio Driver: PWM - -the duty-cycle is always kept at 50%, and the pwm-period is adjusted to match the frequency of a note to be played back. - -this driver uses the chibios-PWM system to produce a square-wave on specific output pins that are connected to the PWM hardware. -The hardware directly toggles the pin via its alternate function. see your MCUs data-sheet for which pin can be driven by what timer - looking for TIMx_CHy and the corresponding alternate function. - - */ - -#include "audio.h" -#include "ch.h" -#include "hal.h" - -#if !defined(AUDIO_PIN) -# error "Audio feature enabled, but no pin selected - see docs/feature_audio under the ARM PWM settings" -#endif - -extern bool playing_note; -extern bool playing_melody; -extern uint8_t note_timbre; - -static PWMConfig pwmCFG = { - .frequency = 100000, /* PWM clock frequency */ - // CHIBIOS-BUG? can't set the initial period to <2, or the pwm (hard or software) takes ~130ms with .frequency=500000 for a pwmChangePeriod to take effect; with no output=silence in the meantime - .period = 2, /* initial PWM period (in ticks) 1S (1/10kHz=0.1mS 0.1ms*10000 ticks=1S) */ - .callback = NULL, /* no callback, the hardware directly toggles the pin */ - .channels = - { -#if AUDIO_PWM_CHANNEL == 4 - {PWM_OUTPUT_DISABLED, NULL}, /* channel 0 -> TIMx_CH1 */ - {PWM_OUTPUT_DISABLED, NULL}, /* channel 1 -> TIMx_CH2 */ - {PWM_OUTPUT_DISABLED, NULL}, /* channel 2 -> TIMx_CH3 */ - {PWM_OUTPUT_ACTIVE_HIGH, NULL} /* channel 3 -> TIMx_CH4 */ -#elif AUDIO_PWM_CHANNEL == 3 - {PWM_OUTPUT_DISABLED, NULL}, - {PWM_OUTPUT_DISABLED, NULL}, - {PWM_OUTPUT_ACTIVE_HIGH, NULL}, /* TIMx_CH3 */ - {PWM_OUTPUT_DISABLED, NULL} -#elif AUDIO_PWM_CHANNEL == 2 - {PWM_OUTPUT_DISABLED, NULL}, - {PWM_OUTPUT_ACTIVE_HIGH, NULL}, /* TIMx_CH2 */ - {PWM_OUTPUT_DISABLED, NULL}, - {PWM_OUTPUT_DISABLED, NULL} -#else /*fallback to CH1 */ - {PWM_OUTPUT_ACTIVE_HIGH, NULL}, /* TIMx_CH1 */ - {PWM_OUTPUT_DISABLED, NULL}, - {PWM_OUTPUT_DISABLED, NULL}, - {PWM_OUTPUT_DISABLED, NULL} -#endif - }, -}; - -static float channel_1_frequency = 0.0f; -void channel_1_set_frequency(float freq) { - channel_1_frequency = freq; - - if (freq <= 0.0) // a pause/rest has freq=0 - return; - - pwmcnt_t period = (pwmCFG.frequency / freq); - pwmChangePeriod(&AUDIO_PWM_DRIVER, period); - pwmEnableChannel(&AUDIO_PWM_DRIVER, AUDIO_PWM_CHANNEL - 1, - // adjust the duty-cycle so that the output is for 'note_timbre' duration HIGH - PWM_PERCENTAGE_TO_WIDTH(&AUDIO_PWM_DRIVER, (100 - note_timbre) * 100)); -} - -float channel_1_get_frequency(void) { return channel_1_frequency; } - -void channel_1_start(void) { - pwmStop(&AUDIO_PWM_DRIVER); - pwmStart(&AUDIO_PWM_DRIVER, &pwmCFG); -} - -void channel_1_stop(void) { pwmStop(&AUDIO_PWM_DRIVER); } - -static void gpt_callback(GPTDriver *gptp); -GPTConfig gptCFG = { - /* a whole note is one beat, which is - per definition in musical_notes.h - set to 64 - the longest note is BREAVE_DOT=128+64=192, the shortest SIXTEENTH=4 - the tempo (which might vary!) is in bpm (beats per minute) - therefore: if the timer ticks away at .frequency = (60*64)Hz, - and the .interval counts from 64 downwards - audio_update_state is - called just often enough to not miss any notes - */ - .frequency = 60 * 64, - .callback = gpt_callback, -}; - -void audio_driver_initialize(void) { - pwmStart(&AUDIO_PWM_DRIVER, &pwmCFG); - - // connect the AUDIO_PIN to the PWM hardware -#if defined(USE_GPIOV1) // STM32F103C8 - palSetLineMode(AUDIO_PIN, PAL_MODE_STM32_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)); -#endif - - gptStart(&AUDIO_STATE_TIMER, &gptCFG); -} - -void audio_driver_start(void) { - channel_1_stop(); - channel_1_start(); - - if (playing_note || playing_melody) { - gptStartContinuous(&AUDIO_STATE_TIMER, 64); - } -} - -void audio_driver_stop(void) { - channel_1_stop(); - gptStopTimer(&AUDIO_STATE_TIMER); -} - -/* a regular timer task, that checks the note to be currently played - * and updates the pwm to output that frequency - */ -static void gpt_callback(GPTDriver *gptp) { - float freq; // TODO: freq_alt - - if (audio_update_state()) { - freq = audio_get_processed_frequency(0); // freq_alt would be index=1 - channel_1_set_frequency(freq); - } -} diff --git a/quantum/audio/luts.h b/quantum/audio/luts.h index 74980b292edf..8bb04544933a 100644 --- a/quantum/audio/luts.h +++ b/quantum/audio/luts.h @@ -16,14 +16,8 @@ #pragma once -#if defined(__AVR__) -# include <avr/io.h> -# include <avr/interrupt.h> -# include <avr/pgmspace.h> -#else -# include <ch.h> -# include <hal.h> -#endif +#include <float.h> +#include <stdint.h> #define VIBRATO_LUT_LENGTH 20 diff --git a/quantum/audio/song_list.h b/quantum/audio/song_list.h index b54b397e1c4a..8e80a016aa51 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/audio/voices.h b/quantum/audio/voices.h index 578350d337df..1f402e7e1269 100644 --- a/quantum/audio/voices.h +++ b/quantum/audio/voices.h @@ -18,9 +18,6 @@ #include <stdint.h> #include <stdbool.h> -#if defined(__AVR__) -# include <avr/io.h> -#endif #include "wait.h" #include "luts.h" diff --git a/quantum/backlight/backlight_avr.c b/quantum/backlight/backlight_avr.c index e47192de3421..9c972ae02eda 100644 --- a/quantum/backlight/backlight_avr.c +++ b/quantum/backlight/backlight_avr.c @@ -199,13 +199,14 @@ static inline void disable_pwm(void) { // reaches the backlight level, where we turn off the LEDs, // but also an overflow interrupt when the counter rolls back to 0, // in which we're going to turn on the LEDs. -// The LED will then be on for OCRxx/0xFFFF time, adjusted every 244Hz. +// The LED will then be on for OCRxx/0xFFFF time, adjusted every 244Hz, +// or F_CPU/BACKLIGHT_CUSTOM_RESOLUTION if used. // Triggered when the counter reaches the OCRx value ISR(TIMERx_COMPA_vect) { backlight_pins_off(); } // Triggered when the counter reaches the TOP value -// this one triggers at F_CPU/65536 =~ 244 Hz +// this one triggers at F_CPU/ICRx = 16MHz/65536 =~ 244 Hz ISR(TIMERx_OVF_vect) { # ifdef BACKLIGHT_BREATHING if (is_breathing()) { @@ -220,7 +221,7 @@ ISR(TIMERx_OVF_vect) { // artifacts (especially while breathing, because breathing_task // takes many computation cycles). // so better not turn them on while the counter TOP is very low. - if (OCRxx > 256) { + if (OCRxx > ICRx / 250 + 5) { backlight_pins_on(); } } @@ -231,24 +232,26 @@ ISR(TIMERx_OVF_vect) { // See http://jared.geek.nz/2013/feb/linear-led-pwm static uint16_t cie_lightness(uint16_t v) { - if (v <= 5243) // if below 8% of max - return v / 9; // same as dividing by 900% - else { - uint32_t y = (((uint32_t)v + 10486) << 8) / (10486 + 0xFFFFUL); // add 16% of max and compare - // to get a useful result with integer division, we shift left in the expression above - // and revert what we've done again after squaring. - y = y * y * y >> 8; - if (y > 0xFFFFUL) // prevent overflow - return 0xFFFFU; - else - return (uint16_t)y; + if (v <= (uint32_t)ICRx / 12) // If the value is less than or equal to ~8% of max + { + return v / 9; // Same as dividing by 900% + } else { + // In the next two lines values are bit-shifted. This is to avoid loosing decimals in integer math. + uint32_t y = (((uint32_t)v + (uint32_t)ICRx / 6) << 5) / ((uint32_t)ICRx / 6 + ICRx); // If above 8%, add ~16% of max, and normalize with (max + ~16% max) + uint32_t out = (y * y * y * ICRx) >> 15; // Cube it and undo the bit-shifting. (which is now three times as much due to the cubing) + + if (out > ICRx) // Avoid overflows + { + out = ICRx; + } + return (uint16_t)out; } } -// rescale the supplied backlight value to be in terms of the value limit +// rescale the supplied backlight value to be in terms of the value limit // range for val is [0..ICRx]. PWM pin is high while the timer count is below val. static uint32_t rescale_limit_val(uint32_t val) { return (val * (BACKLIGHT_LIMIT_VAL + 1)) / 256; } -// range for val is [0..TIMER_TOP]. PWM pin is high while the timer count is below val. +// range for val is [0..ICRx]. PWM pin is high while the timer count is below val. static inline void set_pwm(uint16_t val) { OCRxx = val; } void backlight_set(uint8_t level) { @@ -277,7 +280,7 @@ void backlight_set(uint8_t level) { #endif } // Set the brightness - set_pwm(cie_lightness(rescale_limit_val(TIMER_TOP * (uint32_t)level / BACKLIGHT_LEVELS))); + set_pwm(cie_lightness(rescale_limit_val(ICRx * (uint32_t)level / BACKLIGHT_LEVELS))); } void backlight_task(void) {} @@ -292,6 +295,11 @@ void backlight_task(void) {} static uint8_t breathing_halt = BREATHING_NO_HALT; static uint16_t breathing_counter = 0; +static uint8_t breath_scale_counter = 1; +/* Run the breathing loop at ~120Hz*/ +const uint8_t breathing_ISR_frequency = 120; +static uint16_t breathing_freq_scale_factor = 2; + # ifdef BACKLIGHT_PWM_TIMER static bool breathing = false; @@ -323,9 +331,9 @@ bool is_breathing(void) { return !!(TIMSKx & _BV(TOIEx)); } do { \ breathing_counter = 0; \ } while (0) -# define breathing_max() \ - do { \ - breathing_counter = get_breathing_period() * 244 / 2; \ +# define breathing_max() \ + do { \ + breathing_counter = get_breathing_period() * breathing_ISR_frequency / 2; \ } while (0) void breathing_enable(void) { @@ -369,21 +377,30 @@ void breathing_task(void) # else /* Assuming a 16MHz CPU clock and a timer that resets at 64k (ICR1), the following interrupt handler will run * about 244 times per second. + * + * The following ISR runs at F_CPU/ISRx. With a 16MHz clock and default pwm resolution, that means 244Hz */ ISR(TIMERx_OVF_vect) # endif { - uint8_t breathing_period = get_breathing_period(); - uint16_t interval = (uint16_t)breathing_period * 244 / BREATHING_STEPS; + + // Only run this ISR at ~120 Hz + if (breath_scale_counter++ == breathing_freq_scale_factor) { + breath_scale_counter = 1; + } else { + return; + } + uint16_t interval = (uint16_t)get_breathing_period() * breathing_ISR_frequency / BREATHING_STEPS; // resetting after one period to prevent ugly reset at overflow. - breathing_counter = (breathing_counter + 1) % (breathing_period * 244); + breathing_counter = (breathing_counter + 1) % (get_breathing_period() * breathing_ISR_frequency); uint8_t index = breathing_counter / interval % BREATHING_STEPS; if (((breathing_halt == BREATHING_HALT_ON) && (index == BREATHING_STEPS / 2)) || ((breathing_halt == BREATHING_HALT_OFF) && (index == BREATHING_STEPS - 1))) { breathing_interrupt_disable(); } - set_pwm(cie_lightness(rescale_limit_val(scale_backlight((uint16_t)pgm_read_byte(&breathing_table[index]) * 0x0101U)))); + // Set PWM to a brightnessvalue scaled to the configured resolution + set_pwm(cie_lightness(rescale_limit_val(scale_backlight((uint16_t)pgm_read_byte(&breathing_table[index]) * ICRx / 255)))); } #endif // BACKLIGHT_BREATHING @@ -413,16 +430,23 @@ void backlight_init_ports(void) { "In fast PWM mode, the compare units allow generation of PWM waveforms on the OCnx pins. Setting the COMnx1:0 bits to two will produce a non-inverted PWM [..]." "In fast PWM mode the counter is incremented until the counter value matches either one of the fixed values 0x00FF, 0x01FF, or 0x03FF (WGMn3:0 = 5, 6, or 7), the value in ICRn (WGMn3:0 = 14), or the value in OCRnA (WGMn3:0 = 15)." */ -# if BACKLIGHT_ON_STATE == 1 - TCCRxA = _BV(COMxx1) | _BV(WGM11); -# else - TCCRxA = _BV(COMxx1) | _BV(COMxx0) | _BV(WGM11); -# endif - - TCCRxB = _BV(WGM13) | _BV(WGM12) | _BV(CS10); + TCCRxA = _BV(COMxx1) | _BV(WGM11); // = 0b00001010; + TCCRxB = _BV(WGM13) | _BV(WGM12) | _BV(CS10); // = 0b00011001; #endif - // Use full 16-bit resolution. Counter counts to ICR1 before reset to 0. + +#ifdef BACKLIGHT_CUSTOM_RESOLUTION +# if (BACKLIGHT_CUSTOM_RESOLUTION > 0xFFFF || BACKLIGHT_CUSTOM_RESOLUTION < 1) +# error "This out of range of the timer capabilities" +# elif (BACKLIGHT_CUSTOM_RESOLUTION < 0xFF) +# warning "Resolution lower than 0xFF isn't recommended" +# endif +# ifdef BACKLIGHT_BREATHING + breathing_freq_scale_factor = F_CPU / BACKLIGHT_CUSTOM_RESOLUTION / 120; +# endif + ICRx = BACKLIGHT_CUSTOM_RESOLUTION; +#else ICRx = TIMER_TOP; +#endif backlight_init(); #ifdef BACKLIGHT_BREATHING diff --git a/quantum/backlight/backlight_chibios.c b/quantum/backlight/backlight_chibios.c index 4d5a69e14e33..7c6edd10d6eb 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/bootmagic/bootmagic.h b/quantum/bootmagic/bootmagic.h index 959750178d38..db826025ce58 100644 --- a/quantum/bootmagic/bootmagic.h +++ b/quantum/bootmagic/bootmagic.h @@ -15,9 +15,7 @@ */ #pragma once -#if defined(BOOTMAGIC_ENABLE) -# include "bootmagic_full.h" -#elif defined(BOOTMAGIC_LITE) +#if defined(BOOTMAGIC_LITE) # include "bootmagic_lite.h" #endif diff --git a/quantum/bootmagic/bootmagic_full.c b/quantum/bootmagic/bootmagic_full.c deleted file mode 100644 index a7a0dcfcb2cb..000000000000 --- a/quantum/bootmagic/bootmagic_full.c +++ /dev/null @@ -1,147 +0,0 @@ -/* Copyright 2021 QMK - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -#include <stdint.h> -#include <stdbool.h> -#include "wait.h" -#include "matrix.h" -#include "bootloader.h" -#include "debug.h" -#include "keymap.h" -#include "host.h" -#include "action_layer.h" -#include "eeconfig.h" -#include "bootmagic.h" - -/** \brief Scan Keycode - * - * FIXME: needs doc - */ -static bool scan_keycode(uint8_t keycode) { - for (uint8_t r = 0; r < MATRIX_ROWS; r++) { - matrix_row_t matrix_row = matrix_get_row(r); - for (uint8_t c = 0; c < MATRIX_COLS; c++) { - if (matrix_row & ((matrix_row_t)1 << c)) { - if (keycode == keymap_key_to_keycode(0, (keypos_t){.row = r, .col = c})) { - return true; - } - } - } - } - return false; -} - -/** \brief Bootmagic Scan Keycode - * - * FIXME: needs doc - */ -static bool bootmagic_scan_keycode(uint8_t keycode) { - if (!scan_keycode(BOOTMAGIC_KEY_SALT)) return false; - - return scan_keycode(keycode); -} - -void bootmagic(void) { - /* do scans in case of bounce */ - print("bootmagic scan: ... "); - uint8_t scan = 100; - while (scan--) { - matrix_scan(); - wait_ms(10); - } - print("done.\n"); - - /* bootmagic skip */ - if (bootmagic_scan_keycode(BOOTMAGIC_KEY_SKIP)) { - return; - } - - /* eeconfig clear */ - if (bootmagic_scan_keycode(BOOTMAGIC_KEY_EEPROM_CLEAR)) { - eeconfig_init(); - } - - /* bootloader */ - if (bootmagic_scan_keycode(BOOTMAGIC_KEY_BOOTLOADER)) { - bootloader_jump(); - } - - if (bootmagic_scan_keycode(BOOTMAGIC_KEY_DEBUG_ENABLE)) { - if (bootmagic_scan_keycode(BOOTMAGIC_KEY_DEBUG_MATRIX)) { - debug_config.matrix = !debug_config.matrix; - } else if (bootmagic_scan_keycode(BOOTMAGIC_KEY_DEBUG_KEYBOARD)) { - debug_config.keyboard = !debug_config.keyboard; - } else if (bootmagic_scan_keycode(BOOTMAGIC_KEY_DEBUG_MOUSE)) { - debug_config.mouse = !debug_config.mouse; - } else { - debug_config.enable = !debug_config.enable; - } - } - eeconfig_update_debug(debug_config.raw); - - if (bootmagic_scan_keycode(BOOTMAGIC_KEY_SWAP_CONTROL_CAPSLOCK)) { - keymap_config.swap_control_capslock = !keymap_config.swap_control_capslock; - } - if (bootmagic_scan_keycode(BOOTMAGIC_KEY_CAPSLOCK_TO_CONTROL)) { - keymap_config.capslock_to_control = !keymap_config.capslock_to_control; - } - if (bootmagic_scan_keycode(BOOTMAGIC_KEY_SWAP_LALT_LGUI)) { - keymap_config.swap_lalt_lgui = !keymap_config.swap_lalt_lgui; - } - if (bootmagic_scan_keycode(BOOTMAGIC_KEY_SWAP_RALT_RGUI)) { - keymap_config.swap_ralt_rgui = !keymap_config.swap_ralt_rgui; - } - if (bootmagic_scan_keycode(BOOTMAGIC_KEY_NO_GUI)) { - keymap_config.no_gui = !keymap_config.no_gui; - } - if (bootmagic_scan_keycode(BOOTMAGIC_KEY_SWAP_GRAVE_ESC)) { - keymap_config.swap_grave_esc = !keymap_config.swap_grave_esc; - } - if (bootmagic_scan_keycode(BOOTMAGIC_KEY_SWAP_BACKSLASH_BACKSPACE)) { - keymap_config.swap_backslash_backspace = !keymap_config.swap_backslash_backspace; - } - if (bootmagic_scan_keycode(BOOTMAGIC_HOST_NKRO)) { - keymap_config.nkro = !keymap_config.nkro; - } - eeconfig_update_keymap(keymap_config.raw); - - /* default layer */ - uint8_t default_layer = 0; - if (bootmagic_scan_keycode(BOOTMAGIC_KEY_DEFAULT_LAYER_0)) { - default_layer |= (1 << 0); - } else if (bootmagic_scan_keycode(BOOTMAGIC_KEY_DEFAULT_LAYER_1)) { - default_layer |= (1 << 1); - } else if (bootmagic_scan_keycode(BOOTMAGIC_KEY_DEFAULT_LAYER_2)) { - default_layer |= (1 << 2); - } else if (bootmagic_scan_keycode(BOOTMAGIC_KEY_DEFAULT_LAYER_3)) { - default_layer |= (1 << 3); - } else if (bootmagic_scan_keycode(BOOTMAGIC_KEY_DEFAULT_LAYER_4)) { - default_layer |= (1 << 4); - } else if (bootmagic_scan_keycode(BOOTMAGIC_KEY_DEFAULT_LAYER_5)) { - default_layer |= (1 << 5); - } else if (bootmagic_scan_keycode(BOOTMAGIC_KEY_DEFAULT_LAYER_6)) { - default_layer |= (1 << 6); - } else if (bootmagic_scan_keycode(BOOTMAGIC_KEY_DEFAULT_LAYER_7)) { - default_layer |= (1 << 7); - } - eeconfig_update_default_layer(default_layer); - - /* EE_HANDS handedness */ - if (bootmagic_scan_keycode(BOOTMAGIC_KEY_EE_HANDS_LEFT)) { - eeconfig_update_handedness(true); - } else if (bootmagic_scan_keycode(BOOTMAGIC_KEY_EE_HANDS_RIGHT)) { - eeconfig_update_handedness(false); - } -} diff --git a/quantum/bootmagic/bootmagic_full.h b/quantum/bootmagic/bootmagic_full.h deleted file mode 100644 index 28f914c1b638..000000000000 --- a/quantum/bootmagic/bootmagic_full.h +++ /dev/null @@ -1,115 +0,0 @@ -/* Copyright 2021 QMK - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#pragma once - -/* FIXME: Add special doxygen comments for defines here. */ - -/* bootmagic salt key */ -#ifndef BOOTMAGIC_KEY_SALT -# define BOOTMAGIC_KEY_SALT KC_SPACE -#endif - -/* skip bootmagic and eeconfig */ -#ifndef BOOTMAGIC_KEY_SKIP -# define BOOTMAGIC_KEY_SKIP KC_ESC -#endif - -/* eeprom clear */ -#ifndef BOOTMAGIC_KEY_EEPROM_CLEAR -# define BOOTMAGIC_KEY_EEPROM_CLEAR KC_BSPACE -#endif - -/* kick up bootloader */ -#ifndef BOOTMAGIC_KEY_BOOTLOADER -# define BOOTMAGIC_KEY_BOOTLOADER KC_B -#endif - -/* debug enable */ -#ifndef BOOTMAGIC_KEY_DEBUG_ENABLE -# define BOOTMAGIC_KEY_DEBUG_ENABLE KC_D -#endif -#ifndef BOOTMAGIC_KEY_DEBUG_MATRIX -# define BOOTMAGIC_KEY_DEBUG_MATRIX KC_X -#endif -#ifndef BOOTMAGIC_KEY_DEBUG_KEYBOARD -# define BOOTMAGIC_KEY_DEBUG_KEYBOARD KC_K -#endif -#ifndef BOOTMAGIC_KEY_DEBUG_MOUSE -# define BOOTMAGIC_KEY_DEBUG_MOUSE KC_M -#endif -#ifndef BOOTMAGIC_KEY_EE_HANDS_LEFT -# define BOOTMAGIC_KEY_EE_HANDS_LEFT KC_L -#endif -#ifndef BOOTMAGIC_KEY_EE_HANDS_RIGHT -# define BOOTMAGIC_KEY_EE_HANDS_RIGHT KC_R -#endif - -/* - * keymap config - */ -#ifndef BOOTMAGIC_KEY_SWAP_CONTROL_CAPSLOCK -# define BOOTMAGIC_KEY_SWAP_CONTROL_CAPSLOCK KC_LCTRL -#endif -#ifndef BOOTMAGIC_KEY_CAPSLOCK_TO_CONTROL -# define BOOTMAGIC_KEY_CAPSLOCK_TO_CONTROL KC_CAPSLOCK -#endif -#ifndef BOOTMAGIC_KEY_SWAP_LALT_LGUI -# define BOOTMAGIC_KEY_SWAP_LALT_LGUI KC_LALT -#endif -#ifndef BOOTMAGIC_KEY_SWAP_RALT_RGUI -# define BOOTMAGIC_KEY_SWAP_RALT_RGUI KC_RALT -#endif -#ifndef BOOTMAGIC_KEY_NO_GUI -# define BOOTMAGIC_KEY_NO_GUI KC_LGUI -#endif -#ifndef BOOTMAGIC_KEY_SWAP_GRAVE_ESC -# define BOOTMAGIC_KEY_SWAP_GRAVE_ESC KC_GRAVE -#endif -#ifndef BOOTMAGIC_KEY_SWAP_BACKSLASH_BACKSPACE -# define BOOTMAGIC_KEY_SWAP_BACKSLASH_BACKSPACE KC_BSLASH -#endif -#ifndef BOOTMAGIC_HOST_NKRO -# define BOOTMAGIC_HOST_NKRO KC_N -#endif - -/* - * change default layer - */ -#ifndef BOOTMAGIC_KEY_DEFAULT_LAYER_0 -# define BOOTMAGIC_KEY_DEFAULT_LAYER_0 KC_0 -#endif -#ifndef BOOTMAGIC_KEY_DEFAULT_LAYER_1 -# define BOOTMAGIC_KEY_DEFAULT_LAYER_1 KC_1 -#endif -#ifndef BOOTMAGIC_KEY_DEFAULT_LAYER_2 -# define BOOTMAGIC_KEY_DEFAULT_LAYER_2 KC_2 -#endif -#ifndef BOOTMAGIC_KEY_DEFAULT_LAYER_3 -# define BOOTMAGIC_KEY_DEFAULT_LAYER_3 KC_3 -#endif -#ifndef BOOTMAGIC_KEY_DEFAULT_LAYER_4 -# define BOOTMAGIC_KEY_DEFAULT_LAYER_4 KC_4 -#endif -#ifndef BOOTMAGIC_KEY_DEFAULT_LAYER_5 -# define BOOTMAGIC_KEY_DEFAULT_LAYER_5 KC_5 -#endif -#ifndef BOOTMAGIC_KEY_DEFAULT_LAYER_6 -# define BOOTMAGIC_KEY_DEFAULT_LAYER_6 KC_6 -#endif -#ifndef BOOTMAGIC_KEY_DEFAULT_LAYER_7 -# define BOOTMAGIC_KEY_DEFAULT_LAYER_7 KC_7 -#endif \ No newline at end of file diff --git a/quantum/bootmagic/bootmagic_lite.c b/quantum/bootmagic/bootmagic_lite.c index 9cbdcb0bbdfc..54bbf5a2ee76 100644 --- a/quantum/bootmagic/bootmagic_lite.c +++ b/quantum/bootmagic/bootmagic_lite.c @@ -19,13 +19,7 @@ * * ...just incase someone wants to only change the eeprom behaviour */ -__attribute__((weak)) void bootmagic_lite_reset_eeprom(void) { -#if defined(VIA_ENABLE) - via_eeprom_reset(); -#else - eeconfig_disable(); -#endif -} +__attribute__((weak)) void bootmagic_lite_reset_eeprom(void) { eeconfig_disable(); } /** \brief The lite version of TMK's bootmagic based on Wilba. * diff --git a/quantum/color.h b/quantum/color.h index 4783f6839c23..e2cfc469275e 100644 --- a/quantum/color.h +++ b/quantum/color.h @@ -19,6 +19,60 @@ #include <stdint.h> #include <stdbool.h> +// clang-format off + +/* + * RGB Colors + */ +#define RGB_AZURE 0x99, 0xF5, 0xFF +#define RGB_BLACK 0x00, 0x00, 0x00 +#define RGB_BLUE 0x00, 0x00, 0xFF +#define RGB_CHARTREUSE 0x80, 0xFF, 0x00 +#define RGB_CORAL 0xFF, 0x7C, 0x4D +#define RGB_CYAN 0x00, 0xFF, 0xFF +#define RGB_GOLD 0xFF, 0xD9, 0x00 +#define RGB_GOLDENROD 0xD9, 0xA5, 0x21 +#define RGB_GREEN 0x00, 0xFF, 0x00 +#define RGB_MAGENTA 0xFF, 0x00, 0xFF +#define RGB_ORANGE 0xFF, 0x80, 0x00 +#define RGB_PINK 0xFF, 0x80, 0xBF +#define RGB_PURPLE 0x7A, 0x00, 0xFF +#define RGB_RED 0xFF, 0x00, 0x00 +#define RGB_SPRINGGREEN 0x00, 0xFF, 0x80 +#define RGB_TEAL 0x00, 0x80, 0x80 +#define RGB_TURQUOISE 0x47, 0x6E, 0x6A +#define RGB_WHITE 0xFF, 0xFF, 0xFF +#define RGB_YELLOW 0xFF, 0xFF, 0x00 +#define RGB_OFF RGB_BLACK + +/* + * HSV Colors + * + * All values (including hue) are scaled to 0-255 + */ +#define HSV_AZURE 132, 102, 255 +#define HSV_BLACK 0, 0, 0 +#define HSV_BLUE 170, 255, 255 +#define HSV_CHARTREUSE 64, 255, 255 +#define HSV_CORAL 11, 176, 255 +#define HSV_CYAN 128, 255, 255 +#define HSV_GOLD 36, 255, 255 +#define HSV_GOLDENROD 30, 218, 218 +#define HSV_GREEN 85, 255, 255 +#define HSV_MAGENTA 213, 255, 255 +#define HSV_ORANGE 28, 255, 255 +#define HSV_PINK 234, 128, 255 +#define HSV_PURPLE 191, 255, 255 +#define HSV_RED 0, 255, 255 +#define HSV_SPRINGGREEN 106, 255, 255 +#define HSV_TEAL 128, 255, 128 +#define HSV_TURQUOISE 123, 90, 112 +#define HSV_WHITE 0, 0, 255 +#define HSV_YELLOW 43, 255, 255 +#define HSV_OFF HSV_BLACK + +// clang-format on + #if defined(__GNUC__) # define PACKED __attribute__((__packed__)) #else diff --git a/quantum/command.c b/quantum/command.c index 34c4b36b1c0e..6d56a25ea114 100644 --- a/quantum/command.c +++ b/quantum/command.c @@ -39,7 +39,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. # include "backlight.h" #endif -#if defined(MOUSEKEY_ENABLE) && !defined(MK_3_SPEED) +#if defined(MOUSEKEY_ENABLE) # include "mousekey.h" #endif @@ -53,9 +53,8 @@ static void print_version(void); static void print_status(void); static bool command_console(uint8_t code); static void command_console_help(void); -#if defined(MOUSEKEY_ENABLE) && !defined(MK_3_SPEED) +#if defined(MOUSEKEY_ENABLE) static bool mousekey_console(uint8_t code); -static void mousekey_console_help(void); #endif static void switch_default_layer(uint8_t layer); @@ -74,7 +73,7 @@ bool command_proc(uint8_t code) { else return (command_console_extra(code) || command_console(code)); break; -#if defined(MOUSEKEY_ENABLE) && !defined(MK_3_SPEED) +#if defined(MOUSEKEY_ENABLE) case MOUSEKEY: mousekey_console(code); break; @@ -103,190 +102,220 @@ bool command_console_extra(uint8_t code) { /*********************************************************** * Command common ***********************************************************/ + static void command_common_help(void) { - print("\n\t- Magic -\n" STR(MAGIC_KEY_DEBUG) ": Debug Message Toggle\n" STR(MAGIC_KEY_DEBUG_MATRIX) ": Matrix Debug Mode Toggle - Show keypresses in matrix grid\n" STR(MAGIC_KEY_DEBUG_KBD) ": Keyboard Debug Toggle - Show keypress report\n" STR(MAGIC_KEY_DEBUG_MOUSE) ": Debug Mouse Toggle\n" STR(MAGIC_KEY_VERSION) ": Version\n" STR(MAGIC_KEY_STATUS) ": Status\n" STR(MAGIC_KEY_CONSOLE) ": Activate Console Mode\n" + print(/* clang-format off */ + "\n\t- Magic -\n" + + STR(MAGIC_KEY_DEBUG) ": Debug Message Toggle\n" + STR(MAGIC_KEY_DEBUG_MATRIX) ": Matrix Debug Mode Toggle" + " - Show keypresses in matrix grid\n" + STR(MAGIC_KEY_DEBUG_KBD) ": Keyboard Debug Toggle" + " - Show keypress report\n" + STR(MAGIC_KEY_DEBUG_MOUSE) ": Debug Mouse Toggle\n" + STR(MAGIC_KEY_VERSION) ": Version\n" + STR(MAGIC_KEY_STATUS) ": Status\n" + STR(MAGIC_KEY_CONSOLE) ": Activate Console Mode\n" #if MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM - STR(MAGIC_KEY_LAYER0) ": Switch to Layer 0\n" STR(MAGIC_KEY_LAYER1) ": Switch to Layer 1\n" STR(MAGIC_KEY_LAYER2) ": Switch to Layer 2\n" STR(MAGIC_KEY_LAYER3) ": Switch to Layer 3\n" STR(MAGIC_KEY_LAYER4) ": Switch to Layer 4\n" STR(MAGIC_KEY_LAYER5) ": Switch to Layer 5\n" STR(MAGIC_KEY_LAYER6) ": Switch to Layer 6\n" STR(MAGIC_KEY_LAYER7) ": Switch to Layer 7\n" STR(MAGIC_KEY_LAYER8) ": Switch to Layer 8\n" STR(MAGIC_KEY_LAYER9) ": Switch to Layer 9\n" + STR(MAGIC_KEY_LAYER0) ": Switch to Layer 0\n" + STR(MAGIC_KEY_LAYER1) ": Switch to Layer 1\n" + STR(MAGIC_KEY_LAYER2) ": Switch to Layer 2\n" + STR(MAGIC_KEY_LAYER3) ": Switch to Layer 3\n" + STR(MAGIC_KEY_LAYER4) ": Switch to Layer 4\n" + STR(MAGIC_KEY_LAYER5) ": Switch to Layer 5\n" + STR(MAGIC_KEY_LAYER6) ": Switch to Layer 6\n" + STR(MAGIC_KEY_LAYER7) ": Switch to Layer 7\n" + STR(MAGIC_KEY_LAYER8) ": Switch to Layer 8\n" + STR(MAGIC_KEY_LAYER9) ": Switch to Layer 9\n" #endif #if MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS - "F1-F10: Switch to Layer 0-9 (F10 = L0)\n" + "F1-F10: Switch to Layer 0-9 (F10 = L0)\n" #endif #if MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS - "0-9: Switch to Layer 0-9\n" + "0-9: Switch to Layer 0-9\n" #endif - STR(MAGIC_KEY_LAYER0_ALT) ": Switch to Layer 0 (alternate)\n" + STR(MAGIC_KEY_LAYER0_ALT) ": Switch to Layer 0 (alternate)\n" - STR(MAGIC_KEY_BOOTLOADER) ": Jump to Bootloader\n" STR(MAGIC_KEY_BOOTLOADER_ALT) ": Jump to Bootloader (alternate)\n" + STR(MAGIC_KEY_BOOTLOADER) ": Jump to Bootloader\n" + STR(MAGIC_KEY_BOOTLOADER_ALT) ": Jump to Bootloader (alternate)\n" #ifdef KEYBOARD_LOCK_ENABLE - STR(MAGIC_KEY_LOCK) ": Lock Keyboard\n" + STR(MAGIC_KEY_LOCK) ": Lock Keyboard\n" #endif - STR(MAGIC_KEY_EEPROM) ": Print EEPROM Settings\n" STR(MAGIC_KEY_EEPROM_CLEAR) ": Clear EEPROM\n" + STR(MAGIC_KEY_EEPROM) ": Print EEPROM Settings\n" + STR(MAGIC_KEY_EEPROM_CLEAR) ": Clear EEPROM\n" #ifdef NKRO_ENABLE - STR(MAGIC_KEY_NKRO) ": NKRO Toggle\n" + STR(MAGIC_KEY_NKRO) ": NKRO Toggle\n" #endif #ifdef SLEEP_LED_ENABLE - STR(MAGIC_KEY_SLEEP_LED) ": Sleep LED Test\n" + STR(MAGIC_KEY_SLEEP_LED) ": Sleep LED Test\n" #endif - ); + ); /* clang-format on */ } static void print_version(void) { - // print version & information - print("\n\t- Version -\n"); - print("VID: " STR(VENDOR_ID) "(" STR(MANUFACTURER) ") " - "PID: " STR(PRODUCT_ID) "(" STR(PRODUCT) ") " - "VER: " STR(DEVICE_VER) "\n"); - print("BUILD: (" __DATE__ ")\n"); + print(/* clang-format off */ + "\n\t- Version -\n" + "VID: " STR(VENDOR_ID) "(" STR(MANUFACTURER) ") " + "PID: " STR(PRODUCT_ID) "(" STR(PRODUCT) ") " + "VER: " STR(DEVICE_VER) "\n" + "BUILD: (" __DATE__ ")\n" #ifndef SKIP_VERSION # ifdef PROTOCOL_CHIBIOS - print("CHIBIOS: " STR(CHIBIOS_VERSION) ", CONTRIB: " STR(CHIBIOS_CONTRIB_VERSION) "\n"); + "CHIBIOS: " STR(CHIBIOS_VERSION) + ", CONTRIB: " STR(CHIBIOS_CONTRIB_VERSION) "\n" # endif #endif /* build options */ - print("OPTIONS:" + "OPTIONS:" #ifdef PROTOCOL_LUFA - " LUFA" + " LUFA" #endif #ifdef PROTOCOL_VUSB - " VUSB" + " VUSB" #endif #ifdef BOOTMAGIC_ENABLE - " BOOTMAGIC" + " BOOTMAGIC" #endif #ifdef MOUSEKEY_ENABLE - " MOUSEKEY" + " MOUSEKEY" #endif #ifdef EXTRAKEY_ENABLE - " EXTRAKEY" + " EXTRAKEY" #endif #ifdef CONSOLE_ENABLE - " CONSOLE" + " CONSOLE" #endif #ifdef COMMAND_ENABLE - " COMMAND" + " COMMAND" #endif #ifdef NKRO_ENABLE - " NKRO" + " NKRO" #endif #ifdef LTO_ENABLE - " LTO" + " LTO" #endif - " " STR(BOOTLOADER_SIZE) "\n"); + " " STR(BOOTLOADER_SIZE) "\n" - print("GCC: " STR(__GNUC__) "." STR(__GNUC_MINOR__) "." STR(__GNUC_PATCHLEVEL__) + "GCC: " STR(__GNUC__) + "." STR(__GNUC_MINOR__) + "." STR(__GNUC_PATCHLEVEL__) #if defined(__AVR__) - " AVR-LIBC: " __AVR_LIBC_VERSION_STRING__ " AVR_ARCH: avr" STR(__AVR_ARCH__) + " AVR-LIBC: " __AVR_LIBC_VERSION_STRING__ + " AVR_ARCH: avr" STR(__AVR_ARCH__) #endif - "\n"); - - return; + "\n" + ); /* clang-format on */ } static void print_status(void) { - print("\n\t- Status -\n"); + xprintf(/* clang-format off */ + "\n\t- Status -\n" + + "host_keyboard_leds(): %02X\n" +#ifndef PROTOCOL_VUSB + "keyboard_protocol: %02X\n" + "keyboard_idle: %02X\n" +#endif +#ifdef NKRO_ENABLE + "keymap_config.nkro: %02X\n" +#endif + "timer_read32(): %08lX\n" - print_val_hex8(host_keyboard_leds()); + , host_keyboard_leds() #ifndef PROTOCOL_VUSB - // these aren't set on the V-USB protocol, so we just ignore them for now - print_val_hex8(keyboard_protocol); - print_val_hex8(keyboard_idle); + /* these aren't set on the V-USB protocol, so we just ignore them for now */ + , keyboard_protocol + , keyboard_idle #endif #ifdef NKRO_ENABLE - print_val_hex8(keymap_config.nkro); + , keymap_config.nkro #endif - print_val_hex32(timer_read32()); - return; + , timer_read32() + + ); /* clang-format on */ } -static void print_eeconfig(void) { -// Print these variables if NO_PRINT or USER_PRINT are not defined. #if !defined(NO_PRINT) && !defined(USER_PRINT) - - print("default_layer: "); - print_dec(eeconfig_read_default_layer()); - print("\n"); +static void print_eeconfig(void) { + xprintf("eeconfig:\ndefault_layer: %u\n", eeconfig_read_default_layer()); debug_config_t dc; dc.raw = eeconfig_read_debug(); - print("debug_config.raw: "); - print_hex8(dc.raw); - print("\n"); - print(".enable: "); - print_dec(dc.enable); - print("\n"); - print(".matrix: "); - print_dec(dc.matrix); - print("\n"); - print(".keyboard: "); - print_dec(dc.keyboard); - print("\n"); - print(".mouse: "); - print_dec(dc.mouse); - print("\n"); + xprintf(/* clang-format off */ + + "debug_config.raw: %02X\n" + ".enable: %u\n" + ".matrix: %u\n" + ".keyboard: %u\n" + ".mouse: %u\n" + + , dc.raw + , dc.enable + , dc.matrix + , dc.keyboard + , dc.mouse + ); /* clang-format on */ keymap_config_t kc; kc.raw = eeconfig_read_keymap(); - print("keymap_config.raw: "); - print_hex8(kc.raw); - print("\n"); - print(".swap_control_capslock: "); - print_dec(kc.swap_control_capslock); - print("\n"); - print(".capslock_to_control: "); - print_dec(kc.capslock_to_control); - print("\n"); - print(".swap_lctl_lgui: "); - print_dec(kc.swap_lctl_lgui); - print("\n"); - print(".swap_rctl_rgui: "); - print_dec(kc.swap_rctl_rgui); - print("\n"); - print(".swap_lalt_lgui: "); - print_dec(kc.swap_lalt_lgui); - print("\n"); - print(".swap_ralt_rgui: "); - print_dec(kc.swap_ralt_rgui); - print("\n"); - print(".no_gui: "); - print_dec(kc.no_gui); - print("\n"); - print(".swap_grave_esc: "); - print_dec(kc.swap_grave_esc); - print("\n"); - print(".swap_backslash_backspace: "); - print_dec(kc.swap_backslash_backspace); - print("\n"); - print(".nkro: "); - print_dec(kc.nkro); - print("\n"); + xprintf(/* clang-format off */ + + "keymap_config.raw: %02X\n" + ".swap_control_capslock: %u\n" + ".capslock_to_control: %u\n" + ".swap_lctl_lgui: %u\n" + ".swap_rctl_rgui: %u\n" + ".swap_lalt_lgui: %u\n" + ".swap_ralt_rgui: %u\n" + ".no_gui: %u\n" + ".swap_grave_esc: %u\n" + ".swap_backslash_backspace: %u\n" + ".nkro: %u\n" + + , kc.raw + , kc.swap_control_capslock + , kc.capslock_to_control + , kc.swap_lctl_lgui + , kc.swap_rctl_rgui + , kc.swap_lalt_lgui + , kc.swap_ralt_rgui + , kc.no_gui + , kc.swap_grave_esc + , kc.swap_backslash_backspace + , kc.nkro + ); /* clang-format on */ # ifdef BACKLIGHT_ENABLE + backlight_config_t bc; bc.raw = eeconfig_read_backlight(); - print("backlight_config.raw: "); - print_hex8(bc.raw); - print("\n"); - print(".enable: "); - print_dec(bc.enable); - print("\n"); - print(".level: "); - print_dec(bc.level); - print("\n"); -# endif /* BACKLIGHT_ENABLE */ + xprintf(/* clang-format off */ + "backlight_config" + + ".raw: %02X\n" + ".enable: %u\n" + ".level: %u\n" + + , bc.raw + , bc.enable + , bc.level -#endif /* !NO_PRINT */ + ); /* clang-format on */ + +# endif /* BACKLIGHT_ENABLE */ } +#endif /* !NO_PRINT && !USER_PRINT */ static bool command_common(uint8_t code) { #ifdef KEYBOARD_LOCK_ENABLE @@ -306,8 +335,9 @@ static bool command_common(uint8_t code) { // print stored eeprom config case MAGIC_KC(MAGIC_KEY_EEPROM): - print("eeconfig:\n"); +#if !defined(NO_PRINT) && !defined(USER_PRINT) print_eeconfig(); +#endif /* !NO_PRINT && !USER_PRINT */ break; // clear eeprom @@ -519,268 +549,199 @@ static bool command_console(uint8_t code) { case KC_H: case KC_SLASH: /* ? */ command_console_help(); - break; + print("C> "); + return true; case KC_Q: case KC_ESC: command_state = ONESHOT; return false; -#if defined(MOUSEKEY_ENABLE) && !defined(MK_3_SPEED) +#if defined(MOUSEKEY_ENABLE) case KC_M: - mousekey_console_help(); - print("M> "); command_state = MOUSEKEY; + mousekey_console(KC_SLASH /* ? */); return true; #endif default: print("?"); return false; } - print("C> "); - return true; } -#if defined(MOUSEKEY_ENABLE) && !defined(MK_3_SPEED) /*********************************************************** * Mousekey console ***********************************************************/ -static uint8_t mousekey_param = 0; -static void mousekey_param_print(void) { -// Print these variables if NO_PRINT or USER_PRINT are not defined. -# if !defined(NO_PRINT) && !defined(USER_PRINT) - print("\n\t- Values -\n"); - print("1: delay(*10ms): "); - print_dec(mk_delay); - print("\n"); - print("2: interval(ms): "); - print_dec(mk_interval); - print("\n"); - print("3: max_speed: "); - print_dec(mk_max_speed); - print("\n"); - print("4: time_to_max: "); - print_dec(mk_time_to_max); - print("\n"); - print("5: wheel_max_speed: "); - print_dec(mk_wheel_max_speed); - print("\n"); - print("6: wheel_time_to_max: "); - print_dec(mk_wheel_time_to_max); - print("\n"); -# endif /* !NO_PRINT */ -} +#if defined(MOUSEKEY_ENABLE) -//#define PRINT_SET_VAL(v) print(#v " = "); print_dec(v); print("\n"); -# define PRINT_SET_VAL(v) xprintf(# v " = %d\n", (v)) -static void mousekey_param_inc(uint8_t param, uint8_t inc) { - switch (param) { - case 1: - if (mk_delay + inc < UINT8_MAX) - mk_delay += inc; - else - mk_delay = UINT8_MAX; - PRINT_SET_VAL(mk_delay); - break; - case 2: - if (mk_interval + inc < UINT8_MAX) - mk_interval += inc; - else - mk_interval = UINT8_MAX; - PRINT_SET_VAL(mk_interval); - break; - case 3: - if (mk_max_speed + inc < UINT8_MAX) - mk_max_speed += inc; - else - mk_max_speed = UINT8_MAX; - PRINT_SET_VAL(mk_max_speed); - break; - case 4: - if (mk_time_to_max + inc < UINT8_MAX) - mk_time_to_max += inc; - else - mk_time_to_max = UINT8_MAX; - PRINT_SET_VAL(mk_time_to_max); - break; - case 5: - if (mk_wheel_max_speed + inc < UINT8_MAX) - mk_wheel_max_speed += inc; - else - mk_wheel_max_speed = UINT8_MAX; - PRINT_SET_VAL(mk_wheel_max_speed); - break; - case 6: - if (mk_wheel_time_to_max + inc < UINT8_MAX) - mk_wheel_time_to_max += inc; - else - mk_wheel_time_to_max = UINT8_MAX; - PRINT_SET_VAL(mk_wheel_time_to_max); - break; - } -} - -static void mousekey_param_dec(uint8_t param, uint8_t dec) { - switch (param) { - case 1: - if (mk_delay > dec) - mk_delay -= dec; - else - mk_delay = 0; - PRINT_SET_VAL(mk_delay); - break; - case 2: - if (mk_interval > dec) - mk_interval -= dec; - else - mk_interval = 0; - PRINT_SET_VAL(mk_interval); - break; - case 3: - if (mk_max_speed > dec) - mk_max_speed -= dec; - else - mk_max_speed = 0; - PRINT_SET_VAL(mk_max_speed); - break; - case 4: - if (mk_time_to_max > dec) - mk_time_to_max -= dec; - else - mk_time_to_max = 0; - PRINT_SET_VAL(mk_time_to_max); - break; - case 5: - if (mk_wheel_max_speed > dec) - mk_wheel_max_speed -= dec; - else - mk_wheel_max_speed = 0; - PRINT_SET_VAL(mk_wheel_max_speed); - break; - case 6: - if (mk_wheel_time_to_max > dec) - mk_wheel_time_to_max -= dec; - else - mk_wheel_time_to_max = 0; - PRINT_SET_VAL(mk_wheel_time_to_max); - break; - } +# if !defined(NO_PRINT) && !defined(USER_PRINT) +static void mousekey_param_print(void) { + xprintf(/* clang-format off */ + +#ifndef MK_3_SPEED + "1: delay(*10ms): %u\n" + "2: interval(ms): %u\n" + "3: max_speed: %u\n" + "4: time_to_max: %u\n" + "5: wheel_max_speed: %u\n" + "6: wheel_time_to_max: %u\n" + + , mk_delay + , mk_interval + , mk_max_speed + , mk_time_to_max + , mk_wheel_max_speed + , mk_wheel_time_to_max +#else + "no knobs sorry\n" +#endif + + ); /* clang-format on */ } +# endif /* !NO_PRINT && !USER_PRINT */ +# if !defined(NO_PRINT) && !defined(USER_PRINT) static void mousekey_console_help(void) { - print("\n\t- Mousekey -\n" - "ESC/q: quit\n" - "1: delay(*10ms)\n" - "2: interval(ms)\n" - "3: max_speed\n" - "4: time_to_max\n" - "5: wheel_max_speed\n" - "6: wheel_time_to_max\n" - "\n" - "p: print values\n" - "d: set defaults\n" - "up: +1\n" - "down: -1\n" - "pgup: +10\n" - "pgdown: -10\n" - "\n" - "speed = delta * max_speed * (repeat / time_to_max)\n"); - xprintf("where delta: cursor=%d, wheel=%d\n" - "See http://en.wikipedia.org/wiki/Mouse_keys\n", - MOUSEKEY_MOVE_DELTA, MOUSEKEY_WHEEL_DELTA); + mousekey_param_print(); + xprintf(/* clang-format off */ + "p: print values\n" + "d: set defaults\n" + "up: +1\n" + "dn: -1\n" + "lt: +10\n" + "rt: -10\n" + "ESC/q: quit\n" + +#ifndef MK_3_SPEED + "\n" + "speed = delta * max_speed * (repeat / time_to_max)\n" + "where delta: cursor=%d, wheel=%d\n" + "See http://en.wikipedia.org/wiki/Mouse_keys\n" + , MOUSEKEY_MOVE_DELTA, MOUSEKEY_WHEEL_DELTA +#endif + + ); /* clang-format on */ } +# endif /* !NO_PRINT && !USER_PRINT */ + +/* Only used by `quantum/command.c` / `command_proc()`. To avoid + * any doubt: we return `false` to return to the main console, + * which differs from the `bool` that `command_proc()` returns. */ +bool mousekey_console(uint8_t code) { + static uint8_t param = 0; + static uint8_t *pp = NULL; + static char * desc = NULL; + +# if defined(NO_PRINT) || defined(USER_PRINT) /* -Wunused-parameter */ + (void)desc; +# endif + + int8_t change = 0; -static bool mousekey_console(uint8_t code) { switch (code) { case KC_H: case KC_SLASH: /* ? */ +# if !defined(NO_PRINT) && !defined(USER_PRINT) + print("\n\t- Mousekey -\n"); mousekey_console_help(); +# endif break; + case KC_Q: case KC_ESC: - if (mousekey_param) { - mousekey_param = 0; - } else { - print("C> "); - command_state = CONSOLE; - return false; - } + print("q\n"); + if (!param) return false; + param = 0; + pp = NULL; + desc = NULL; break; + case KC_P: +# if !defined(NO_PRINT) && !defined(USER_PRINT) + print("\n\t- Values -\n"); mousekey_param_print(); +# endif break; - case KC_1: - case KC_2: - case KC_3: - case KC_4: - case KC_5: - case KC_6: - mousekey_param = numkey2num(code); - break; - case KC_UP: - mousekey_param_inc(mousekey_param, 1); - break; - case KC_DOWN: - mousekey_param_dec(mousekey_param, 1); - break; - case KC_PGUP: - mousekey_param_inc(mousekey_param, 10); - break; - case KC_PGDN: - mousekey_param_dec(mousekey_param, 10); - break; + + case KC_1 ... KC_0: /* KC_0 gives param = 10 */ + param = 1 + code - KC_1; + switch (param) { /* clang-format off */ +# define PARAM(n, v) case n: pp = &(v); desc = #v; break + +#ifndef MK_3_SPEED + PARAM(1, mk_delay); + PARAM(2, mk_interval); + PARAM(3, mk_max_speed); + PARAM(4, mk_time_to_max); + PARAM(5, mk_wheel_max_speed); + PARAM(6, mk_wheel_time_to_max); +#endif /* MK_3_SPEED */ + +# undef PARAM + default: + param = 0; + print("?\n"); + break; + } /* clang-format on */ + if (param) xprintf("%u\n", param); + break; + + /* clang-format off */ + case KC_UP: change = +1; break; + case KC_DOWN: change = -1; break; + case KC_LEFT: change = -10; break; + case KC_RIGHT: change = +10; break; + /* clang-format on */ + case KC_D: + +# ifndef MK_3_SPEED mk_delay = MOUSEKEY_DELAY / 10; mk_interval = MOUSEKEY_INTERVAL; mk_max_speed = MOUSEKEY_MAX_SPEED; mk_time_to_max = MOUSEKEY_TIME_TO_MAX; mk_wheel_max_speed = MOUSEKEY_WHEEL_MAX_SPEED; mk_wheel_time_to_max = MOUSEKEY_WHEEL_TIME_TO_MAX; - print("set default\n"); +# endif /* MK_3_SPEED */ + + print("defaults\n"); break; + default: - print("?"); - return false; + print("?\n"); + break; + } + + if (change) { + if (pp) { + int16_t val = *pp + change; + if (val > (int16_t)UINT8_MAX) + *pp = UINT8_MAX; + else if (val < 0) + *pp = 0; + else + *pp = (uint8_t)val; + xprintf("= %u\n", *pp); + } else { + print("?\n"); + } } - if (mousekey_param) { - xprintf("M%d> ", mousekey_param); + + if (param) { + xprintf("M%u:%s> ", param, desc ? desc : "???"); } else { - print("M>"); + print("M> "); } return true; } -#endif + +#endif /* MOUSEKEY_ENABLE */ /*********************************************************** * Utilities ***********************************************************/ -uint8_t numkey2num(uint8_t code) { - switch (code) { - case KC_1: - return 1; - case KC_2: - return 2; - case KC_3: - return 3; - case KC_4: - return 4; - case KC_5: - return 5; - case KC_6: - return 6; - case KC_7: - return 7; - case KC_8: - return 8; - case KC_9: - return 9; - case KC_0: - return 0; - } - return 0; -} static void switch_default_layer(uint8_t layer) { xprintf("L%d\n", layer); - default_layer_set(1UL << layer); + default_layer_set((layer_state_t)1 << layer); clear_keyboard(); } diff --git a/quantum/command.h b/quantum/command.h index 4f77be085c9a..676507d3bd39 100644 --- a/quantum/command.h +++ b/quantum/command.h @@ -28,8 +28,7 @@ bool command_extra(uint8_t code); bool command_console_extra(uint8_t code); #ifdef COMMAND_ENABLE -uint8_t numkey2num(uint8_t code); -bool command_proc(uint8_t code); +bool command_proc(uint8_t code); #else # define command_proc(code) false #endif diff --git a/quantum/config_common.h b/quantum/config_common.h index 661609ef2ae2..d93477b27e03 100644 --- a/quantum/config_common.h +++ b/quantum/config_common.h @@ -24,7 +24,4 @@ #define COL2ROW 0 #define ROW2COL 1 -// Deprecated alias - avoid using -#define KEYMAP LAYOUT - #include "song_list.h" diff --git a/quantum/crc.c b/quantum/crc.c new file mode 100644 index 000000000000..0d8b9d6017cf --- /dev/null +++ b/quantum/crc.c @@ -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 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "crc.h" + +__attribute__((weak)) void crc_init(void){ + /* Software implementation nothing todo here. */ +}; + +#if defined(CRC8_USE_TABLE) +/** + * Static table used for the table_driven implementation. + */ +static const crc_t crc_table[256] = {0x00, 0x07, 0x0e, 0x09, 0x1c, 0x1b, 0x12, 0x15, 0x38, 0x3f, 0x36, 0x31, 0x24, 0x23, 0x2a, 0x2d, 0x70, 0x77, 0x7e, 0x79, 0x6c, 0x6b, 0x62, 0x65, 0x48, 0x4f, 0x46, 0x41, 0x54, 0x53, 0x5a, 0x5d, 0xe0, 0xe7, 0xee, 0xe9, 0xfc, 0xfb, 0xf2, 0xf5, 0xd8, 0xdf, 0xd6, 0xd1, 0xc4, 0xc3, 0xca, 0xcd, 0x90, 0x97, 0x9e, 0x99, 0x8c, 0x8b, 0x82, 0x85, 0xa8, 0xaf, 0xa6, 0xa1, 0xb4, 0xb3, 0xba, 0xbd, 0xc7, 0xc0, 0xc9, 0xce, 0xdb, 0xdc, 0xd5, 0xd2, 0xff, 0xf8, 0xf1, 0xf6, 0xe3, 0xe4, 0xed, 0xea, 0xb7, 0xb0, 0xb9, 0xbe, 0xab, 0xac, 0xa5, 0xa2, 0x8f, 0x88, 0x81, 0x86, 0x93, 0x94, 0x9d, 0x9a, 0x27, 0x20, 0x29, 0x2e, 0x3b, 0x3c, 0x35, 0x32, 0x1f, 0x18, 0x11, 0x16, 0x03, 0x04, 0x0d, 0x0a, 0x57, 0x50, 0x59, 0x5e, 0x4b, 0x4c, 0x45, 0x42, 0x6f, 0x68, 0x61, 0x66, 0x73, 0x74, 0x7d, 0x7a, + 0x89, 0x8e, 0x87, 0x80, 0x95, 0x92, 0x9b, 0x9c, 0xb1, 0xb6, 0xbf, 0xb8, 0xad, 0xaa, 0xa3, 0xa4, 0xf9, 0xfe, 0xf7, 0xf0, 0xe5, 0xe2, 0xeb, 0xec, 0xc1, 0xc6, 0xcf, 0xc8, 0xdd, 0xda, 0xd3, 0xd4, 0x69, 0x6e, 0x67, 0x60, 0x75, 0x72, 0x7b, 0x7c, 0x51, 0x56, 0x5f, 0x58, 0x4d, 0x4a, 0x43, 0x44, 0x19, 0x1e, 0x17, 0x10, 0x05, 0x02, 0x0b, 0x0c, 0x21, 0x26, 0x2f, 0x28, 0x3d, 0x3a, 0x33, 0x34, 0x4e, 0x49, 0x40, 0x47, 0x52, 0x55, 0x5c, 0x5b, 0x76, 0x71, 0x78, 0x7f, 0x6a, 0x6d, 0x64, 0x63, 0x3e, 0x39, 0x30, 0x37, 0x22, 0x25, 0x2c, 0x2b, 0x06, 0x01, 0x08, 0x0f, 0x1a, 0x1d, 0x14, 0x13, 0xae, 0xa9, 0xa0, 0xa7, 0xb2, 0xb5, 0xbc, 0xbb, 0x96, 0x91, 0x98, 0x9f, 0x8a, 0x8d, 0x84, 0x83, 0xde, 0xd9, 0xd0, 0xd7, 0xc2, 0xc5, 0xcc, 0xcb, 0xe6, 0xe1, 0xe8, 0xef, 0xfa, 0xfd, 0xf4, 0xf3}; + +__attribute__((weak)) uint8_t crc8(const void *data, size_t data_len) { + const uint8_t *d = (const uint8_t *)data; + crc_t crc = 0xff; + size_t tbl_idx; + + while (data_len--) { + tbl_idx = crc ^ *d; + crc = crc_table[tbl_idx] & 0xff; + d++; + } + return crc & 0xff; +} +#else +__attribute__((weak)) uint8_t crc8(const void *data, size_t data_len) { + const uint8_t *d = (const uint8_t *)data; + crc_t crc = 0xff; + size_t i, j; + + for (i = 0; i < data_len; i++) { + crc ^= d[i]; + for (j = 0; j < 8; j++) { + if ((crc & 0x80) != 0) + crc = (crc_t)((crc << 1) ^ 0x31); + else + crc <<= 1; + } + } + return crc; +} +#endif \ No newline at end of file diff --git a/quantum/crc.h b/quantum/crc.h new file mode 100644 index 000000000000..c17f5888e2b7 --- /dev/null +++ b/quantum/crc.h @@ -0,0 +1,44 @@ +/* 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 + +#include "quantum.h" + +/** + * The type of the CRC values. + * + * This type must be big enough to contain at least 8 bits. + */ +#if defined(CRC8_OPTIMIZE_SPEED) +typedef uint_fast8_t crc_t; +#else +typedef uint_least8_t crc_t; +#endif + +/** + * Initialize crc subsystem. + */ +__attribute__((weak)) void crc_init(void); + +/** + * Generate CRC8 value from given data. + * + * \param[in] data Pointer to a buffer of \a data_len bytes. + * \param[in] data_len Number of bytes in the \a data buffer. + * \return The calculated crc value. + */ +__attribute__((weak)) uint8_t crc8(const void *data, size_t data_len); \ No newline at end of file diff --git a/quantum/debounce.h b/quantum/debounce.h index 9ca05c6824ad..5043868289bc 100644 --- a/quantum/debounce.h +++ b/quantum/debounce.h @@ -9,3 +9,5 @@ void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool bool debounce_active(void); void debounce_init(uint8_t num_rows); + +void debounce_free(void); diff --git a/quantum/debounce/asym_eager_defer_pk.c b/quantum/debounce/asym_eager_defer_pk.c new file mode 100644 index 000000000000..81f39383c4fc --- /dev/null +++ b/quantum/debounce/asym_eager_defer_pk.c @@ -0,0 +1,171 @@ +/* + * Copyright 2017 Alex Ong <the.onga@gmail.com> + * Copyright 2020 Andrei Purdea <andrei@purdea.ro> + * Copyright 2021 Simon Arlott + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +/* +Basic symmetric per-key algorithm. Uses an 8-bit counter per key. +When no state changes have occured for DEBOUNCE milliseconds, we push the state. +*/ + +#include "matrix.h" +#include "timer.h" +#include "quantum.h" +#include <stdlib.h> + +#ifdef PROTOCOL_CHIBIOS +# if CH_CFG_USE_MEMCORE == FALSE +# error ChibiOS is configured without a memory allocator. Your keyboard may have set `#define CH_CFG_USE_MEMCORE FALSE`, which is incompatible with this debounce algorithm. +# endif +#endif + +#ifndef DEBOUNCE +# define DEBOUNCE 5 +#endif + +// Maximum debounce: 127ms +#if DEBOUNCE > 127 +# undef DEBOUNCE +# define DEBOUNCE 127 +#endif + +#define ROW_SHIFTER ((matrix_row_t)1) + +typedef struct { + bool pressed : 1; + uint8_t time : 7; +} debounce_counter_t; + +#if DEBOUNCE > 0 +static debounce_counter_t *debounce_counters; +static fast_timer_t last_time; +static bool counters_need_update; +static bool matrix_need_update; + +# define DEBOUNCE_ELAPSED 0 + +static void update_debounce_counters_and_transfer_if_expired(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, uint8_t elapsed_time); +static void transfer_matrix_values(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows); + +// we use num_rows rather than MATRIX_ROWS to support split keyboards +void debounce_init(uint8_t num_rows) { + debounce_counters = malloc(num_rows * MATRIX_COLS * sizeof(debounce_counter_t)); + int i = 0; + for (uint8_t r = 0; r < num_rows; r++) { + for (uint8_t c = 0; c < MATRIX_COLS; c++) { + debounce_counters[i++].time = DEBOUNCE_ELAPSED; + } + } +} + +void debounce_free(void) { + free(debounce_counters); + debounce_counters = NULL; +} + +void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) { + bool updated_last = false; + + if (counters_need_update) { + fast_timer_t now = timer_read_fast(); + fast_timer_t elapsed_time = TIMER_DIFF_FAST(now, last_time); + + last_time = now; + updated_last = true; + if (elapsed_time > UINT8_MAX) { + elapsed_time = UINT8_MAX; + } + + if (elapsed_time > 0) { + update_debounce_counters_and_transfer_if_expired(raw, cooked, num_rows, elapsed_time); + } + } + + if (changed || matrix_need_update) { + if (!updated_last) { + last_time = timer_read_fast(); + } + + transfer_matrix_values(raw, cooked, num_rows); + } +} + +static void update_debounce_counters_and_transfer_if_expired(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, uint8_t elapsed_time) { + debounce_counter_t *debounce_pointer = debounce_counters; + + counters_need_update = false; + matrix_need_update = false; + + for (uint8_t row = 0; row < num_rows; row++) { + for (uint8_t col = 0; col < MATRIX_COLS; col++) { + matrix_row_t col_mask = (ROW_SHIFTER << col); + + if (debounce_pointer->time != DEBOUNCE_ELAPSED) { + if (debounce_pointer->time <= elapsed_time) { + debounce_pointer->time = DEBOUNCE_ELAPSED; + + if (debounce_pointer->pressed) { + // key-down: eager + matrix_need_update = true; + } else { + // key-up: defer + cooked[row] = (cooked[row] & ~col_mask) | (raw[row] & col_mask); + } + } else { + debounce_pointer->time -= elapsed_time; + counters_need_update = true; + } + } + debounce_pointer++; + } + } +} + +static void transfer_matrix_values(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows) { + debounce_counter_t *debounce_pointer = debounce_counters; + + for (uint8_t row = 0; row < num_rows; row++) { + matrix_row_t delta = raw[row] ^ cooked[row]; + for (uint8_t col = 0; col < MATRIX_COLS; col++) { + matrix_row_t col_mask = (ROW_SHIFTER << col); + + if (delta & col_mask) { + if (debounce_pointer->time == DEBOUNCE_ELAPSED) { + debounce_pointer->pressed = (raw[row] & col_mask); + debounce_pointer->time = DEBOUNCE; + counters_need_update = true; + + if (debounce_pointer->pressed) { + // key-down: eager + cooked[row] ^= col_mask; + } + } + } else if (debounce_pointer->time != DEBOUNCE_ELAPSED) { + if (!debounce_pointer->pressed) { + // key-up: defer + debounce_pointer->time = DEBOUNCE_ELAPSED; + } + } + debounce_pointer++; + } + } +} + +bool debounce_active(void) { return true; } +#else +# include "none.c" +#endif diff --git a/quantum/debounce/none.c b/quantum/debounce/none.c new file mode 100644 index 000000000000..b03892bc5b51 --- /dev/null +++ b/quantum/debounce/none.c @@ -0,0 +1,31 @@ +/* Copyright 2021 Simon Arlott + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "matrix.h" +#include "quantum.h" +#include <stdlib.h> + +void debounce_init(uint8_t num_rows) {} + +void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) { + for (int i = 0; i < num_rows; i++) { + cooked[i] = raw[i]; + } +} + +bool debounce_active(void) { return false; } + +void debounce_free(void) {} diff --git a/quantum/debounce/sym_defer_g.c b/quantum/debounce/sym_defer_g.c index 3ed9055d2a90..9155eb914cb5 100644 --- a/quantum/debounce/sym_defer_g.c +++ b/quantum/debounce/sym_defer_g.c @@ -1,5 +1,6 @@ /* Copyright 2017 Alex Ong<the.onga@gmail.com> +Copyright 2021 Simon Arlott This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or @@ -23,30 +24,29 @@ When no state changes have occured for DEBOUNCE milliseconds, we push the state. # define DEBOUNCE 5 #endif -void debounce_init(uint8_t num_rows) {} -static bool debouncing = false; - #if DEBOUNCE > 0 -static uint16_t debouncing_time; -void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) { +static bool debouncing = false; +static fast_timer_t debouncing_time; + +void debounce_init(uint8_t num_rows) {} + +void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) { if (changed) { debouncing = true; - debouncing_time = timer_read(); + debouncing_time = timer_read_fast(); } - if (debouncing && timer_elapsed(debouncing_time) > DEBOUNCE) { + if (debouncing && timer_elapsed_fast(debouncing_time) >= DEBOUNCE) { for (int i = 0; i < num_rows; i++) { cooked[i] = raw[i]; } debouncing = false; } } -#else // no debouncing. -void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) { - for (int i = 0; i < num_rows; i++) { - cooked[i] = raw[i]; - } -} -#endif bool debounce_active(void) { return debouncing; } + +void debounce_free(void) {} +#else // no debouncing. +# include "none.c" +#endif diff --git a/quantum/debounce/sym_defer_pk.c b/quantum/debounce/sym_defer_pk.c index 60513f98e1d3..1b698ba347d4 100644 --- a/quantum/debounce/sym_defer_pk.c +++ b/quantum/debounce/sym_defer_pk.c @@ -1,6 +1,7 @@ /* Copyright 2017 Alex Ong<the.onga@gmail.com> Copyright 2020 Andrei Purdea<andrei@purdea.ro> +Copyright 2021 Simon Arlott This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or @@ -33,28 +34,25 @@ When no state changes have occured for DEBOUNCE milliseconds, we push the state. # define DEBOUNCE 5 #endif +// Maximum debounce: 255ms +#if DEBOUNCE > UINT8_MAX +# undef DEBOUNCE +# define DEBOUNCE UINT8_MAX +#endif + #define ROW_SHIFTER ((matrix_row_t)1) -#define debounce_counter_t uint8_t +typedef uint8_t debounce_counter_t; +#if DEBOUNCE > 0 static debounce_counter_t *debounce_counters; +static fast_timer_t last_time; static bool counters_need_update; -#define DEBOUNCE_ELAPSED 251 -#define MAX_DEBOUNCE (DEBOUNCE_ELAPSED - 1) - -static uint8_t wrapping_timer_read(void) { - static uint16_t time = 0; - static uint8_t last_result = 0; - uint16_t new_time = timer_read(); - uint16_t diff = new_time - time; - time = new_time; - last_result = (last_result + diff) % (MAX_DEBOUNCE + 1); - return last_result; -} +# define DEBOUNCE_ELAPSED 0 -void update_debounce_counters_and_transfer_if_expired(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, uint8_t current_time); -void start_debounce_counters(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, uint8_t current_time); +static void update_debounce_counters_and_transfer_if_expired(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, uint8_t elapsed_time); +static void start_debounce_counters(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows); // we use num_rows rather than MATRIX_ROWS to support split keyboards void debounce_init(uint8_t num_rows) { @@ -67,27 +65,49 @@ void debounce_init(uint8_t num_rows) { } } +void debounce_free(void) { + free(debounce_counters); + debounce_counters = NULL; +} + void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) { - uint8_t current_time = wrapping_timer_read(); + bool updated_last = false; + if (counters_need_update) { - update_debounce_counters_and_transfer_if_expired(raw, cooked, num_rows, current_time); + fast_timer_t now = timer_read_fast(); + fast_timer_t elapsed_time = TIMER_DIFF_FAST(now, last_time); + + last_time = now; + updated_last = true; + if (elapsed_time > UINT8_MAX) { + elapsed_time = UINT8_MAX; + } + + if (elapsed_time > 0) { + update_debounce_counters_and_transfer_if_expired(raw, cooked, num_rows, elapsed_time); + } } if (changed) { - start_debounce_counters(raw, cooked, num_rows, current_time); + if (!updated_last) { + last_time = timer_read_fast(); + } + + start_debounce_counters(raw, cooked, num_rows); } } -void update_debounce_counters_and_transfer_if_expired(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, uint8_t current_time) { +static void update_debounce_counters_and_transfer_if_expired(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, uint8_t elapsed_time) { counters_need_update = false; debounce_counter_t *debounce_pointer = debounce_counters; for (uint8_t row = 0; row < num_rows; row++) { for (uint8_t col = 0; col < MATRIX_COLS; col++) { if (*debounce_pointer != DEBOUNCE_ELAPSED) { - if (TIMER_DIFF(current_time, *debounce_pointer, MAX_DEBOUNCE) >= DEBOUNCE) { + if (*debounce_pointer <= elapsed_time) { *debounce_pointer = DEBOUNCE_ELAPSED; cooked[row] = (cooked[row] & ~(ROW_SHIFTER << col)) | (raw[row] & (ROW_SHIFTER << col)); } else { + *debounce_pointer -= elapsed_time; counters_need_update = true; } } @@ -96,14 +116,14 @@ void update_debounce_counters_and_transfer_if_expired(matrix_row_t raw[], matrix } } -void start_debounce_counters(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, uint8_t current_time) { +static void start_debounce_counters(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows) { debounce_counter_t *debounce_pointer = debounce_counters; for (uint8_t row = 0; row < num_rows; row++) { matrix_row_t delta = raw[row] ^ cooked[row]; for (uint8_t col = 0; col < MATRIX_COLS; col++) { if (delta & (ROW_SHIFTER << col)) { if (*debounce_pointer == DEBOUNCE_ELAPSED) { - *debounce_pointer = current_time; + *debounce_pointer = DEBOUNCE; counters_need_update = true; } } else { @@ -115,3 +135,6 @@ void start_debounce_counters(matrix_row_t raw[], matrix_row_t cooked[], uint8_t } bool debounce_active(void) { return true; } +#else +# include "none.c" +#endif diff --git a/quantum/debounce/sym_eager_pk.c b/quantum/debounce/sym_eager_pk.c index e66cf92d79c6..9da000ea9a59 100644 --- a/quantum/debounce/sym_eager_pk.c +++ b/quantum/debounce/sym_eager_pk.c @@ -1,5 +1,6 @@ /* Copyright 2017 Alex Ong<the.onga@gmail.com> +Copyright 2021 Simon Arlott This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or @@ -33,29 +34,26 @@ No further inputs are accepted until DEBOUNCE milliseconds have occurred. # define DEBOUNCE 5 #endif +// Maximum debounce: 255ms +#if DEBOUNCE > UINT8_MAX +# undef DEBOUNCE +# define DEBOUNCE UINT8_MAX +#endif + #define ROW_SHIFTER ((matrix_row_t)1) -#define debounce_counter_t uint8_t +typedef uint8_t debounce_counter_t; +#if DEBOUNCE > 0 static debounce_counter_t *debounce_counters; +static fast_timer_t last_time; static bool counters_need_update; static bool matrix_need_update; -#define DEBOUNCE_ELAPSED 251 -#define MAX_DEBOUNCE (DEBOUNCE_ELAPSED - 1) - -static uint8_t wrapping_timer_read(void) { - static uint16_t time = 0; - static uint8_t last_result = 0; - uint16_t new_time = timer_read(); - uint16_t diff = new_time - time; - time = new_time; - last_result = (last_result + diff) % (MAX_DEBOUNCE + 1); - return last_result; -} +# define DEBOUNCE_ELAPSED 0 -void update_debounce_counters(uint8_t num_rows, uint8_t current_time); -void transfer_matrix_values(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, uint8_t current_time); +static void update_debounce_counters(uint8_t num_rows, uint8_t elapsed_time); +static void transfer_matrix_values(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows); // we use num_rows rather than MATRIX_ROWS to support split keyboards void debounce_init(uint8_t num_rows) { @@ -68,27 +66,51 @@ void debounce_init(uint8_t num_rows) { } } +void debounce_free(void) { + free(debounce_counters); + debounce_counters = NULL; +} + void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) { - uint8_t current_time = wrapping_timer_read(); + bool updated_last = false; + if (counters_need_update) { - update_debounce_counters(num_rows, current_time); + fast_timer_t now = timer_read_fast(); + fast_timer_t elapsed_time = TIMER_DIFF_FAST(now, last_time); + + last_time = now; + updated_last = true; + if (elapsed_time > UINT8_MAX) { + elapsed_time = UINT8_MAX; + } + + if (elapsed_time > 0) { + update_debounce_counters(num_rows, elapsed_time); + } } if (changed || matrix_need_update) { - transfer_matrix_values(raw, cooked, num_rows, current_time); + if (!updated_last) { + last_time = timer_read_fast(); + } + + transfer_matrix_values(raw, cooked, num_rows); } } // If the current time is > debounce counter, set the counter to enable input. -void update_debounce_counters(uint8_t num_rows, uint8_t current_time) { +static void update_debounce_counters(uint8_t num_rows, uint8_t elapsed_time) { counters_need_update = false; + matrix_need_update = false; debounce_counter_t *debounce_pointer = debounce_counters; for (uint8_t row = 0; row < num_rows; row++) { for (uint8_t col = 0; col < MATRIX_COLS; col++) { if (*debounce_pointer != DEBOUNCE_ELAPSED) { - if (TIMER_DIFF(current_time, *debounce_pointer, MAX_DEBOUNCE) >= DEBOUNCE) { - *debounce_pointer = DEBOUNCE_ELAPSED; + if (*debounce_pointer <= elapsed_time) { + *debounce_pointer = DEBOUNCE_ELAPSED; + matrix_need_update = true; } else { + *debounce_pointer -= elapsed_time; counters_need_update = true; } } @@ -98,8 +120,7 @@ void update_debounce_counters(uint8_t num_rows, uint8_t current_time) { } // upload from raw_matrix to final matrix; -void transfer_matrix_values(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, uint8_t current_time) { - matrix_need_update = false; +static void transfer_matrix_values(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows) { debounce_counter_t *debounce_pointer = debounce_counters; for (uint8_t row = 0; row < num_rows; row++) { matrix_row_t delta = raw[row] ^ cooked[row]; @@ -108,11 +129,9 @@ void transfer_matrix_values(matrix_row_t raw[], matrix_row_t cooked[], uint8_t n matrix_row_t col_mask = (ROW_SHIFTER << col); if (delta & col_mask) { if (*debounce_pointer == DEBOUNCE_ELAPSED) { - *debounce_pointer = current_time; + *debounce_pointer = DEBOUNCE; counters_need_update = true; existing_row ^= col_mask; // flip the bit. - } else { - matrix_need_update = true; } } debounce_pointer++; @@ -122,3 +141,6 @@ void transfer_matrix_values(matrix_row_t raw[], matrix_row_t cooked[], uint8_t n } bool debounce_active(void) { return true; } +#else +# include "none.c" +#endif diff --git a/quantum/debounce/sym_eager_pr.c b/quantum/debounce/sym_eager_pr.c index 20ccb46f1ddd..eda92a263b02 100644 --- a/quantum/debounce/sym_eager_pr.c +++ b/quantum/debounce/sym_eager_pr.c @@ -1,5 +1,6 @@ /* Copyright 2019 Alex Ong<the.onga@gmail.com> +Copyright 2021 Simon Arlott This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or @@ -33,27 +34,25 @@ No further inputs are accepted until DEBOUNCE milliseconds have occurred. # define DEBOUNCE 5 #endif -#define debounce_counter_t uint8_t +// Maximum debounce: 255ms +#if DEBOUNCE > UINT8_MAX +# undef DEBOUNCE +# define DEBOUNCE UINT8_MAX +#endif + +typedef uint8_t debounce_counter_t; + +#if DEBOUNCE > 0 static bool matrix_need_update; static debounce_counter_t *debounce_counters; +static fast_timer_t last_time; static bool counters_need_update; -#define DEBOUNCE_ELAPSED 251 -#define MAX_DEBOUNCE (DEBOUNCE_ELAPSED - 1) - -static uint8_t wrapping_timer_read(void) { - static uint16_t time = 0; - static uint8_t last_result = 0; - uint16_t new_time = timer_read(); - uint16_t diff = new_time - time; - time = new_time; - last_result = (last_result + diff) % (MAX_DEBOUNCE + 1); - return last_result; -} +# define DEBOUNCE_ELAPSED 0 -void update_debounce_counters(uint8_t num_rows, uint8_t current_time); -void transfer_matrix_values(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, uint8_t current_time); +static void update_debounce_counters(uint8_t num_rows, uint8_t elapsed_time); +static void transfer_matrix_values(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows); // we use num_rows rather than MATRIX_ROWS to support split keyboards void debounce_init(uint8_t num_rows) { @@ -63,27 +62,50 @@ void debounce_init(uint8_t num_rows) { } } +void debounce_free(void) { + free(debounce_counters); + debounce_counters = NULL; +} + void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) { - uint8_t current_time = wrapping_timer_read(); - bool needed_update = counters_need_update; + bool updated_last = false; + if (counters_need_update) { - update_debounce_counters(num_rows, current_time); + fast_timer_t now = timer_read_fast(); + fast_timer_t elapsed_time = TIMER_DIFF_FAST(now, last_time); + + last_time = now; + updated_last = true; + if (elapsed_time > UINT8_MAX) { + elapsed_time = UINT8_MAX; + } + + if (elapsed_time > 0) { + update_debounce_counters(num_rows, elapsed_time); + } } - if (changed || (needed_update && !counters_need_update) || matrix_need_update) { - transfer_matrix_values(raw, cooked, num_rows, current_time); + if (changed || matrix_need_update) { + if (!updated_last) { + last_time = timer_read_fast(); + } + + transfer_matrix_values(raw, cooked, num_rows); } } // If the current time is > debounce counter, set the counter to enable input. -void update_debounce_counters(uint8_t num_rows, uint8_t current_time) { +static void update_debounce_counters(uint8_t num_rows, uint8_t elapsed_time) { counters_need_update = false; + matrix_need_update = false; debounce_counter_t *debounce_pointer = debounce_counters; for (uint8_t row = 0; row < num_rows; row++) { if (*debounce_pointer != DEBOUNCE_ELAPSED) { - if (TIMER_DIFF(current_time, *debounce_pointer, MAX_DEBOUNCE) >= DEBOUNCE) { - *debounce_pointer = DEBOUNCE_ELAPSED; + if (*debounce_pointer <= elapsed_time) { + *debounce_pointer = DEBOUNCE_ELAPSED; + matrix_need_update = true; } else { + *debounce_pointer -= elapsed_time; counters_need_update = true; } } @@ -92,8 +114,7 @@ void update_debounce_counters(uint8_t num_rows, uint8_t current_time) { } // upload from raw_matrix to final matrix; -void transfer_matrix_values(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, uint8_t current_time) { - matrix_need_update = false; +static void transfer_matrix_values(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows) { debounce_counter_t *debounce_pointer = debounce_counters; for (uint8_t row = 0; row < num_rows; row++) { matrix_row_t existing_row = cooked[row]; @@ -102,11 +123,9 @@ void transfer_matrix_values(matrix_row_t raw[], matrix_row_t cooked[], uint8_t n // determine new value basd on debounce pointer + raw value if (existing_row != raw_row) { if (*debounce_pointer == DEBOUNCE_ELAPSED) { - *debounce_pointer = current_time; + *debounce_pointer = DEBOUNCE; cooked[row] = raw_row; counters_need_update = true; - } else { - matrix_need_update = true; } } debounce_pointer++; @@ -114,3 +133,6 @@ void transfer_matrix_values(matrix_row_t raw[], matrix_row_t cooked[], uint8_t n } bool debounce_active(void) { return true; } +#else +# include "none.c" +#endif diff --git a/quantum/debounce/tests/asym_eager_defer_pk_tests.cpp b/quantum/debounce/tests/asym_eager_defer_pk_tests.cpp new file mode 100644 index 000000000000..44b4fe195607 --- /dev/null +++ b/quantum/debounce/tests/asym_eager_defer_pk_tests.cpp @@ -0,0 +1,394 @@ +/* Copyright 2021 Simon Arlott + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "gtest/gtest.h" + +#include "debounce_test_common.h" + +TEST_F(DebounceTest, OneKeyShort1) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + /* Release key after 1ms delay */ + {1, {{0, 1, UP}}, {}}, + + /* + * Until the eager timer on DOWN is observed to finish, the defer timer + * on UP can't start. There's no workaround for this because it's not + * possible to debounce an event that isn't being tracked. + * + * sym_defer_pk has the same problem but the test has to track that the + * key changed state so the DOWN timer is always allowed to finish + * before starting the UP timer. + */ + {5, {}, {}}, + + {10, {}, {{0, 1, UP}}}, /* 5ms+5ms after DOWN at time 0 */ + /* Press key again after 1ms delay */ + {11, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyShort2) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + /* Release key after 2ms delay */ + {2, {{0, 1, UP}}, {}}, + + {5, {}, {}}, /* See OneKeyShort1 */ + + {10, {}, {{0, 1, UP}}}, /* 5ms+5ms after DOWN at time 0 */ + /* Press key again after 1ms delay */ + {11, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyShort3) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + /* Release key after 3ms delay */ + {3, {{0, 1, UP}}, {}}, + + {5, {}, {}}, /* See OneKeyShort1 */ + + {10, {}, {{0, 1, UP}}}, /* 5ms+5ms after DOWN at time 0 */ + /* Press key again after 1ms delay */ + {11, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyShort4) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + /* Release key after 4ms delay */ + {4, {{0, 1, UP}}, {}}, + + {5, {}, {}}, /* See OneKeyShort1 */ + + {10, {}, {{0, 1, UP}}}, /* 5ms+5ms after DOWN at time 0 */ + /* Press key again after 1ms delay */ + {11, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyShort5) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + + /* Release key after 5ms delay */ + {5, {{0, 1, UP}}, {}}, + + {10, {}, {{0, 1, UP}}}, /* 5ms+5ms after DOWN at time 0 */ + /* Press key again after 1ms delay */ + {11, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyShort6) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + + /* Release key after 6ms delay */ + {6, {{0, 1, UP}}, {}}, + + {11, {}, {{0, 1, UP}}}, /* 5ms after UP at time 6 */ + /* Press key again after 1ms delay */ + {12, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyShort7) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + + /* Release key after 7ms delay */ + {7, {{0, 1, UP}}, {}}, + + {12, {}, {{0, 1, UP}}}, /* 5ms after UP at time 7 */ + /* Press key again after 1ms delay */ + {13, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyShort8) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + /* Release key after 1ms delay */ + {1, {{0, 1, UP}}, {}}, + + {5, {}, {}}, /* See OneKeyShort1 */ + + {10, {}, {{0, 1, UP}}}, /* 5ms after UP at time 7 */ + /* Press key again after 0ms delay (scan 2) */ + {10, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyShort9) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + /* Release key after 1ms delay */ + {1, {{0, 1, UP}}, {}}, + + {5, {}, {}}, /* See OneKeyShort1 */ + + /* Press key again after 0ms delay (same scan) before debounce finishes */ + {10, {{0, 1, DOWN}}, {}}, + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyBouncing1) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + {1, {{0, 1, UP}}, {}}, + {2, {{0, 1, DOWN}}, {}}, + {3, {{0, 1, UP}}, {}}, + {4, {{0, 1, DOWN}}, {}}, + {5, {{0, 1, UP}}, {}}, + {6, {{0, 1, DOWN}}, {}}, + {7, {{0, 1, UP}}, {}}, + {8, {{0, 1, DOWN}}, {}}, + {9, {{0, 1, UP}}, {}}, + {10, {{0, 1, DOWN}}, {}}, + {11, {{0, 1, UP}}, {}}, + {12, {{0, 1, DOWN}}, {}}, + {13, {{0, 1, UP}}, {}}, + {14, {{0, 1, DOWN}}, {}}, + {15, {{0, 1, UP}}, {}}, + + {20, {}, {{0, 1, UP}}}, + /* Press key again after 1ms delay */ + {21, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyBouncing2) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + /* Change twice in the same time period */ + {1, {{0, 1, UP}}, {}}, + {1, {{0, 1, DOWN}}, {}}, + /* Change three times in the same time period */ + {2, {{0, 1, UP}}, {}}, + {2, {{0, 1, DOWN}}, {}}, + {2, {{0, 1, UP}}, {}}, + /* Change twice in the same time period */ + {6, {{0, 1, DOWN}}, {}}, + {6, {{0, 1, UP}}, {}}, + /* Change three times in the same time period */ + {7, {{0, 1, DOWN}}, {}}, + {7, {{0, 1, UP}}, {}}, + {7, {{0, 1, DOWN}}, {}}, + /* Change twice in the same time period */ + {8, {{0, 1, UP}}, {}}, + {8, {{0, 1, DOWN}}, {}}, + /* Change three times in the same time period */ + {9, {{0, 1, UP}}, {}}, + {9, {{0, 1, DOWN}}, {}}, + {9, {{0, 1, UP}}, {}}, + + {14, {}, {{0, 1, UP}}}, + /* Press key again after 1ms delay */ + {15, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyLong) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + + {25, {{0, 1, UP}}, {}}, + + {30, {}, {{0, 1, UP}}}, + + {50, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + + {75, {{0, 1, UP}}, {}}, + + {80, {}, {{0, 1, UP}}}, + + {100, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + }); + runEvents(); +} + +TEST_F(DebounceTest, TwoKeysShort) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + {1, {{0, 2, DOWN}}, {{0, 2, DOWN}}}, + /* Release key after 2ms delay */ + {2, {{0, 1, UP}}, {}}, + {3, {{0, 2, UP}}, {}}, + + {5, {}, {}}, /* See OneKeyShort1 */ + {6, {}, {}}, /* See OneKeyShort1 */ + + {10, {}, {{0, 1, UP}}}, /* 5ms+5ms after DOWN at time 0 */ + /* Press key again after 1ms delay */ + {11, {{0, 1, DOWN}}, {{0, 1, DOWN}, {0, 2, UP}}}, /* 5ms+5ms after DOWN at time 0 */ + {12, {{0, 2, DOWN}}, {{0, 2, DOWN}}}, /* 5ms+5ms after DOWN at time 0 */ + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyDelayedScan1) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + + /* Processing is very late, immediately release key */ + {300, {{0, 1, UP}}, {}}, + + {305, {}, {{0, 1, UP}}}, + }); + time_jumps_ = true; + runEvents(); +} + +TEST_F(DebounceTest, OneKeyDelayedScan2) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + + /* Processing is very late, immediately release key */ + {300, {{0, 1, UP}}, {}}, + + /* Processing is very late again */ + {600, {}, {{0, 1, UP}}}, + }); + time_jumps_ = true; + runEvents(); +} + +TEST_F(DebounceTest, OneKeyDelayedScan3) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + + /* Processing is very late */ + {300, {}, {}}, + /* Release key after 1ms */ + {301, {{0, 1, UP}}, {}}, + + {306, {}, {{0, 1, UP}}}, + }); + time_jumps_ = true; + runEvents(); +} + +TEST_F(DebounceTest, OneKeyDelayedScan4) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + + /* Processing is very late */ + {300, {}, {}}, + /* Release key after 1ms */ + {301, {{0, 1, UP}}, {}}, + + /* Processing is very late again */ + {600, {}, {{0, 1, UP}}}, + }); + time_jumps_ = true; + runEvents(); +} + +TEST_F(DebounceTest, OneKeyDelayedScan5) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + + {5, {{0, 1, UP}}, {}}, + + /* Processing is very late */ + {300, {}, {{0, 1, UP}}}, + /* Immediately press key again */ + {300, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + }); + time_jumps_ = true; + runEvents(); +} + +TEST_F(DebounceTest, OneKeyDelayedScan6) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + + {5, {{0, 1, UP}}, {}}, + + /* Processing is very late */ + {300, {}, {{0, 1, UP}}}, + + /* Press key again after 1ms */ + {301, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + }); + time_jumps_ = true; + runEvents(); +} + +TEST_F(DebounceTest, OneKeyDelayedScan7) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + + {5, {{0, 1, UP}}, {}}, + + /* Press key again before debounce expires */ + {300, {{0, 1, DOWN}}, {}}, + }); + time_jumps_ = true; + runEvents(); +} + +TEST_F(DebounceTest, OneKeyDelayedScan8) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + + /* Processing is a bit late */ + {50, {}, {}}, + /* Release key after 1ms */ + {51, {{0, 1, UP}}, {}}, + + /* Processing is a bit late again */ + {100, {}, {{0, 1, UP}}}, + }); + time_jumps_ = true; + runEvents(); +} diff --git a/quantum/debounce/tests/debounce_test_common.cpp b/quantum/debounce/tests/debounce_test_common.cpp new file mode 100644 index 000000000000..f9414e571d84 --- /dev/null +++ b/quantum/debounce/tests/debounce_test_common.cpp @@ -0,0 +1,205 @@ +/* Copyright 2021 Simon Arlott + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "gtest/gtest.h" + +#include "debounce_test_common.h" + +#include <algorithm> +#include <iomanip> +#include <sstream> + +extern "C" { +#include "quantum.h" +#include "timer.h" +#include "debounce.h" + +void set_time(uint32_t t); +void advance_time(uint32_t ms); +} + +void DebounceTest::addEvents(std::initializer_list<DebounceTestEvent> events) { events_.insert(events_.end(), events.begin(), events.end()); } + +void DebounceTest::runEvents() { + /* Run the test multiple times, from 1kHz to 10kHz scan rate */ + for (extra_iterations_ = 0; extra_iterations_ < 10; extra_iterations_++) { + if (time_jumps_) { + /* Don't advance time smoothly, jump to the next event (some tests require this) */ + auto_advance_time_ = false; + runEventsInternal(); + } else { + /* Run the test with both smooth and irregular time; it must produce the same result */ + auto_advance_time_ = true; + runEventsInternal(); + auto_advance_time_ = false; + runEventsInternal(); + } + } +} + +void DebounceTest::runEventsInternal() { + fast_timer_t previous = 0; + bool first = true; + + /* Initialise keyboard with start time (offset to avoid testing at 0) and all keys UP */ + debounce_init(MATRIX_ROWS); + set_time(time_offset_); + std::fill(std::begin(input_matrix_), std::end(input_matrix_), 0); + std::fill(std::begin(output_matrix_), std::end(output_matrix_), 0); + + for (auto &event : events_) { + if (!auto_advance_time_) { + /* Jump to the next event */ + set_time(time_offset_ + event.time_); + } else if (!first && event.time_ == previous + 1) { + /* This event immediately follows the previous one, don't make extra debounce() calls */ + advance_time(1); + } else { + /* Fast forward to the time for this event, calling debounce() with no changes */ + ASSERT_LT((time_offset_ + event.time_) - timer_read_fast(), 60000) << "Test tries to advance more than 1 minute of time"; + + while (timer_read_fast() != time_offset_ + event.time_) { + runDebounce(false); + checkCookedMatrix(false, "debounce() modified cooked matrix"); + advance_time(1); + } + } + + first = false; + previous = event.time_; + + /* Prepare input matrix */ + for (auto &input : event.inputs_) { + matrixUpdate(input_matrix_, "input", input); + } + + /* Call debounce */ + runDebounce(!event.inputs_.empty()); + + /* Prepare output matrix */ + for (auto &output : event.outputs_) { + matrixUpdate(output_matrix_, "output", output); + } + + /* Check output matrix has expected change events */ + for (auto &output : event.outputs_) { + EXPECT_EQ(!!(cooked_matrix_[output.row_] & (1U << output.col_)), directionValue(output.direction_)) << "Missing event at " << strTime() << " expected key " << output.row_ << "," << output.col_ << " " << directionLabel(output.direction_) << "\ninput_matrix: changed=" << !event.inputs_.empty() << "\n" << strMatrix(input_matrix_) << "\nexpected_matrix:\n" << strMatrix(output_matrix_) << "\nactual_matrix:\n" << strMatrix(cooked_matrix_); + } + + /* Check output matrix has no other changes */ + checkCookedMatrix(!event.inputs_.empty(), "debounce() cooked matrix does not match expected output matrix"); + + /* Perform some extra iterations of the matrix scan with no changes */ + for (int i = 0; i < extra_iterations_; i++) { + runDebounce(false); + checkCookedMatrix(false, "debounce() modified cooked matrix"); + } + } + + /* Check that no further changes happen for 1 minute */ + for (int i = 0; i < 60000; i++) { + runDebounce(false); + checkCookedMatrix(false, "debounce() modified cooked matrix"); + advance_time(1); + } + + debounce_free(); +} + +void DebounceTest::runDebounce(bool changed) { + std::copy(std::begin(input_matrix_), std::end(input_matrix_), std::begin(raw_matrix_)); + std::copy(std::begin(output_matrix_), std::end(output_matrix_), std::begin(cooked_matrix_)); + + debounce(raw_matrix_, cooked_matrix_, MATRIX_ROWS, changed); + + if (!std::equal(std::begin(input_matrix_), std::end(input_matrix_), std::begin(raw_matrix_))) { + FAIL() << "Fatal error: debounce() modified raw matrix at " << strTime() << "\ninput_matrix: changed=" << changed << "\n" << strMatrix(input_matrix_) << "\nraw_matrix:\n" << strMatrix(raw_matrix_); + } +} + +void DebounceTest::checkCookedMatrix(bool changed, const std::string &error_message) { + if (!std::equal(std::begin(output_matrix_), std::end(output_matrix_), std::begin(cooked_matrix_))) { + FAIL() << "Unexpected event: " << error_message << " at " << strTime() << "\ninput_matrix: changed=" << changed << "\n" << strMatrix(input_matrix_) << "\nexpected_matrix:\n" << strMatrix(output_matrix_) << "\nactual_matrix:\n" << strMatrix(cooked_matrix_); + } +} + +std::string DebounceTest::strTime() { + std::stringstream text; + + text << "time " << (timer_read_fast() - time_offset_) << " (extra_iterations=" << extra_iterations_ << ", auto_advance_time=" << auto_advance_time_ << ")"; + + return text.str(); +} + +std::string DebounceTest::strMatrix(matrix_row_t matrix[]) { + std::stringstream text; + + text << "\t" << std::setw(3) << ""; + for (int col = 0; col < MATRIX_COLS; col++) { + text << " " << std::setw(2) << col; + } + text << "\n"; + + for (int row = 0; row < MATRIX_ROWS; row++) { + text << "\t" << std::setw(2) << row << ":"; + for (int col = 0; col < MATRIX_COLS; col++) { + text << ((matrix[row] & (1U << col)) ? " XX" : " __"); + } + + text << "\n"; + } + + return text.str(); +} + +bool DebounceTest::directionValue(Direction direction) { + switch (direction) { + case DOWN: + return true; + + case UP: + return false; + } +} + +std::string DebounceTest::directionLabel(Direction direction) { + switch (direction) { + case DOWN: + return "DOWN"; + + case UP: + return "UP"; + } +} + +/* Modify a matrix and verify that events always specify a change */ +void DebounceTest::matrixUpdate(matrix_row_t matrix[], const std::string &name, const MatrixTestEvent &event) { + ASSERT_NE(!!(matrix[event.row_] & (1U << event.col_)), directionValue(event.direction_)) << "Test " << name << " at " << strTime() << " sets key " << event.row_ << "," << event.col_ << " " << directionLabel(event.direction_) << " but it is already " << directionLabel(event.direction_) << "\n" << name << "_matrix:\n" << strMatrix(matrix); + + switch (event.direction_) { + case DOWN: + matrix[event.row_] |= (1U << event.col_); + break; + + case UP: + matrix[event.row_] &= ~(1U << event.col_); + break; + } +} + +DebounceTestEvent::DebounceTestEvent(fast_timer_t time, std::initializer_list<MatrixTestEvent> inputs, std::initializer_list<MatrixTestEvent> outputs) : time_(time), inputs_(inputs), outputs_(outputs) {} + +MatrixTestEvent::MatrixTestEvent(int row, int col, Direction direction) : row_(row), col_(col), direction_(direction) {} diff --git a/quantum/debounce/tests/debounce_test_common.h b/quantum/debounce/tests/debounce_test_common.h new file mode 100644 index 000000000000..b7becb378260 --- /dev/null +++ b/quantum/debounce/tests/debounce_test_common.h @@ -0,0 +1,81 @@ +/* Copyright 2021 Simon Arlott + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "gtest/gtest.h" + +#include <initializer_list> +#include <list> +#include <string> + +extern "C" { +#include "quantum.h" +#include "timer.h" +} + +enum Direction { + DOWN, + UP, +}; + +class MatrixTestEvent { + public: + MatrixTestEvent(int row, int col, Direction direction); + + const int row_; + const int col_; + const Direction direction_; +}; + +class DebounceTestEvent { + public: + // 0, {{0, 1, DOWN}}, {{0, 1, DOWN}}) + DebounceTestEvent(fast_timer_t time, std::initializer_list<MatrixTestEvent> inputs, std::initializer_list<MatrixTestEvent> outputs); + + const fast_timer_t time_; + const std::list<MatrixTestEvent> inputs_; + const std::list<MatrixTestEvent> outputs_; +}; + +class DebounceTest : public ::testing::Test { + protected: + void addEvents(std::initializer_list<DebounceTestEvent> events); + void runEvents(); + + fast_timer_t time_offset_ = 7777; + bool time_jumps_ = false; + + private: + static bool directionValue(Direction direction); + static std::string directionLabel(Direction direction); + + void runEventsInternal(); + void runDebounce(bool changed); + void checkCookedMatrix(bool changed, const std::string &error_message); + void matrixUpdate(matrix_row_t matrix[], const std::string &name, const MatrixTestEvent &event); + + std::string strTime(); + std::string strMatrix(matrix_row_t matrix[]); + + std::list<DebounceTestEvent> events_; + + matrix_row_t input_matrix_[MATRIX_ROWS]; + matrix_row_t raw_matrix_[MATRIX_ROWS]; + matrix_row_t cooked_matrix_[MATRIX_ROWS]; + matrix_row_t output_matrix_[MATRIX_ROWS]; + + int extra_iterations_; + bool auto_advance_time_; +}; diff --git a/quantum/debounce/tests/rules.mk b/quantum/debounce/tests/rules.mk new file mode 100644 index 000000000000..e908dd6f67e1 --- /dev/null +++ b/quantum/debounce/tests/rules.mk @@ -0,0 +1,44 @@ +# Copyright 2021 Simon Arlott +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +DEBOUNCE_COMMON_DEFS := -DMATRIX_ROWS=4 -DMATRIX_COLS=10 -DDEBOUNCE=5 + +DEBOUNCE_COMMON_SRC := $(QUANTUM_PATH)/debounce/tests/debounce_test_common.cpp \ + $(PLATFORM_PATH)/$(PLATFORM_KEY)/timer.c + +debounce_sym_defer_g_DEFS := $(DEBOUNCE_COMMON_DEFS) +debounce_sym_defer_g_SRC := $(DEBOUNCE_COMMON_SRC) \ + $(QUANTUM_PATH)/debounce/sym_defer_g.c \ + $(QUANTUM_PATH)/debounce/tests/sym_defer_g_tests.cpp + +debounce_sym_defer_pk_DEFS := $(DEBOUNCE_COMMON_DEFS) +debounce_sym_defer_pk_SRC := $(DEBOUNCE_COMMON_SRC) \ + $(QUANTUM_PATH)/debounce/sym_defer_pk.c \ + $(QUANTUM_PATH)/debounce/tests/sym_defer_pk_tests.cpp + +debounce_sym_eager_pk_DEFS := $(DEBOUNCE_COMMON_DEFS) +debounce_sym_eager_pk_SRC := $(DEBOUNCE_COMMON_SRC) \ + $(QUANTUM_PATH)/debounce/sym_eager_pk.c \ + $(QUANTUM_PATH)/debounce/tests/sym_eager_pk_tests.cpp + +debounce_sym_eager_pr_DEFS := $(DEBOUNCE_COMMON_DEFS) +debounce_sym_eager_pr_SRC := $(DEBOUNCE_COMMON_SRC) \ + $(QUANTUM_PATH)/debounce/sym_eager_pr.c \ + $(QUANTUM_PATH)/debounce/tests/sym_eager_pr_tests.cpp + +debounce_asym_eager_defer_pk_DEFS := $(DEBOUNCE_COMMON_DEFS) +debounce_asym_eager_defer_pk_SRC := $(DEBOUNCE_COMMON_SRC) \ + $(QUANTUM_PATH)/debounce/asym_eager_defer_pk.c \ + $(QUANTUM_PATH)/debounce/tests/asym_eager_defer_pk_tests.cpp diff --git a/quantum/debounce/tests/sym_defer_g_tests.cpp b/quantum/debounce/tests/sym_defer_g_tests.cpp new file mode 100644 index 000000000000..73d3d45e306d --- /dev/null +++ b/quantum/debounce/tests/sym_defer_g_tests.cpp @@ -0,0 +1,238 @@ +/* Copyright 2021 Simon Arlott + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "gtest/gtest.h" + +#include "debounce_test_common.h" + +TEST_F(DebounceTest, OneKeyShort1) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {}}, + + {5, {}, {{0, 1, DOWN}}}, + /* 0ms delay (fast scan rate) */ + {5, {{0, 1, UP}}, {}}, + + {10, {}, {{0, 1, UP}}}, + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyShort2) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {}}, + + {5, {}, {{0, 1, DOWN}}}, + /* 1ms delay */ + {6, {{0, 1, UP}}, {}}, + + {11, {}, {{0, 1, UP}}}, + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyShort3) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {}}, + + {5, {}, {{0, 1, DOWN}}}, + /* 2ms delay */ + {7, {{0, 1, UP}}, {}}, + + {12, {}, {{0, 1, UP}}}, + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyTooQuick1) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {}}, + /* Release key exactly on the debounce time */ + {5, {{0, 1, UP}}, {}}, + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyTooQuick2) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {}}, + + {5, {}, {{0, 1, DOWN}}}, + {6, {{0, 1, UP}}, {}}, + + /* Press key exactly on the debounce time */ + {11, {{0, 1, DOWN}}, {}}, + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyBouncing1) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {}}, + {1, {{0, 1, UP}}, {}}, + {2, {{0, 1, DOWN}}, {}}, + {3, {{0, 1, UP}}, {}}, + {4, {{0, 1, DOWN}}, {}}, + {5, {{0, 1, UP}}, {}}, + {6, {{0, 1, DOWN}}, {}}, + {11, {}, {{0, 1, DOWN}}}, /* 5ms after DOWN at time 7 */ + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyBouncing2) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {}}, + {5, {}, {{0, 1, DOWN}}}, + {6, {{0, 1, UP}}, {}}, + {7, {{0, 1, DOWN}}, {}}, + {8, {{0, 1, UP}}, {}}, + {9, {{0, 1, DOWN}}, {}}, + {10, {{0, 1, UP}}, {}}, + {15, {}, {{0, 1, UP}}}, /* 5ms after UP at time 10 */ + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyLong) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {}}, + + {5, {}, {{0, 1, DOWN}}}, + + {25, {{0, 1, UP}}, {}}, + + {30, {}, {{0, 1, UP}}}, + + {50, {{0, 1, DOWN}}, {}}, + + {55, {}, {{0, 1, DOWN}}}, + }); + runEvents(); +} + +TEST_F(DebounceTest, TwoKeysShort) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {}}, + {1, {{0, 2, DOWN}}, {}}, + + {6, {}, {{0, 1, DOWN}, {0, 2, DOWN}}}, + + {7, {{0, 1, UP}}, {}}, + {8, {{0, 2, UP}}, {}}, + + {13, {}, {{0, 1, UP}, {0, 2, UP}}}, + }); + runEvents(); +} + +TEST_F(DebounceTest, TwoKeysSimultaneous1) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}, {0, 2, DOWN}}, {}}, + + {5, {}, {{0, 1, DOWN}, {0, 2, DOWN}}}, + {6, {{0, 1, UP}, {0, 2, UP}}, {}}, + + {11, {}, {{0, 1, UP}, {0, 2, UP}}}, + }); + runEvents(); +} + +TEST_F(DebounceTest, TwoKeysSimultaneous2) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {}}, + {1, {{0, 2, DOWN}}, {}}, + + {5, {}, {}}, + {6, {}, {{0, 1, DOWN}, {0, 2, DOWN}}}, + {7, {{0, 1, UP}}, {}}, + {8, {{0, 2, UP}}, {}}, + + {13, {}, {{0, 1, UP}, {0, 2, UP}}}, + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyDelayedScan1) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {}}, + + /* Processing is very late */ + {300, {}, {{0, 1, DOWN}}}, + /* Immediately release key */ + {300, {{0, 1, UP}}, {}}, + + {305, {}, {{0, 1, UP}}}, + }); + time_jumps_ = true; + runEvents(); +} + +TEST_F(DebounceTest, OneKeyDelayedScan2) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {}}, + + /* Processing is very late */ + {300, {}, {{0, 1, DOWN}}}, + /* Release key after 1ms */ + {301, {{0, 1, UP}}, {}}, + + {306, {}, {{0, 1, UP}}}, + }); + time_jumps_ = true; + runEvents(); +} + +TEST_F(DebounceTest, OneKeyDelayedScan3) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {}}, + + /* Release key before debounce expires */ + {300, {{0, 1, UP}}, {}}, + }); + time_jumps_ = true; + runEvents(); +} + +TEST_F(DebounceTest, OneKeyDelayedScan4) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {}}, + + /* Processing is a bit late */ + {50, {}, {{0, 1, DOWN}}}, + /* Release key after 1ms */ + {51, {{0, 1, UP}}, {}}, + + {56, {}, {{0, 1, UP}}}, + }); + time_jumps_ = true; + runEvents(); +} diff --git a/quantum/debounce/tests/sym_defer_pk_tests.cpp b/quantum/debounce/tests/sym_defer_pk_tests.cpp new file mode 100644 index 000000000000..7542c2dad424 --- /dev/null +++ b/quantum/debounce/tests/sym_defer_pk_tests.cpp @@ -0,0 +1,240 @@ +/* Copyright 2021 Simon Arlott + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "gtest/gtest.h" + +#include "debounce_test_common.h" + +TEST_F(DebounceTest, OneKeyShort1) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {}}, + + {5, {}, {{0, 1, DOWN}}}, + /* 0ms delay (fast scan rate) */ + {5, {{0, 1, UP}}, {}}, + + {10, {}, {{0, 1, UP}}}, + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyShort2) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {}}, + + {5, {}, {{0, 1, DOWN}}}, + /* 1ms delay */ + {6, {{0, 1, UP}}, {}}, + + {11, {}, {{0, 1, UP}}}, + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyShort3) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {}}, + + {5, {}, {{0, 1, DOWN}}}, + /* 2ms delay */ + {7, {{0, 1, UP}}, {}}, + + {12, {}, {{0, 1, UP}}}, + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyTooQuick1) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {}}, + /* Release key exactly on the debounce time */ + {5, {{0, 1, UP}}, {}}, + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyTooQuick2) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {}}, + + {5, {}, {{0, 1, DOWN}}}, + {6, {{0, 1, UP}}, {}}, + + /* Press key exactly on the debounce time */ + {11, {{0, 1, DOWN}}, {}}, + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyBouncing1) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {}}, + {1, {{0, 1, UP}}, {}}, + {2, {{0, 1, DOWN}}, {}}, + {3, {{0, 1, UP}}, {}}, + {4, {{0, 1, DOWN}}, {}}, + {5, {{0, 1, UP}}, {}}, + {6, {{0, 1, DOWN}}, {}}, + {11, {}, {{0, 1, DOWN}}}, /* 5ms after DOWN at time 7 */ + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyBouncing2) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {}}, + {5, {}, {{0, 1, DOWN}}}, + {6, {{0, 1, UP}}, {}}, + {7, {{0, 1, DOWN}}, {}}, + {8, {{0, 1, UP}}, {}}, + {9, {{0, 1, DOWN}}, {}}, + {10, {{0, 1, UP}}, {}}, + {15, {}, {{0, 1, UP}}}, /* 5ms after UP at time 10 */ + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyLong) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {}}, + + {5, {}, {{0, 1, DOWN}}}, + + {25, {{0, 1, UP}}, {}}, + + {30, {}, {{0, 1, UP}}}, + + {50, {{0, 1, DOWN}}, {}}, + + {55, {}, {{0, 1, DOWN}}}, + }); + runEvents(); +} + +TEST_F(DebounceTest, TwoKeysShort) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {}}, + {1, {{0, 2, DOWN}}, {}}, + + {5, {}, {{0, 1, DOWN}}}, + {6, {}, {{0, 2, DOWN}}}, + + {7, {{0, 1, UP}}, {}}, + {8, {{0, 2, UP}}, {}}, + + {12, {}, {{0, 1, UP}}}, + {13, {}, {{0, 2, UP}}}, + }); + runEvents(); +} + +TEST_F(DebounceTest, TwoKeysSimultaneous1) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}, {0, 2, DOWN}}, {}}, + + {5, {}, {{0, 1, DOWN}, {0, 2, DOWN}}}, + {6, {{0, 1, UP}, {0, 2, UP}}, {}}, + + {11, {}, {{0, 1, UP}, {0, 2, UP}}}, + }); + runEvents(); +} + +TEST_F(DebounceTest, TwoKeysSimultaneous2) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {}}, + {1, {{0, 2, DOWN}}, {}}, + + {5, {}, {{0, 1, DOWN}}}, + {6, {{0, 1, UP}}, {{0, 2, DOWN}}}, + {7, {{0, 2, UP}}, {}}, + + {11, {}, {{0, 1, UP}}}, + {12, {}, {{0, 2, UP}}}, + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyDelayedScan1) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {}}, + + /* Processing is very late */ + {300, {}, {{0, 1, DOWN}}}, + /* Immediately release key */ + {300, {{0, 1, UP}}, {}}, + + {305, {}, {{0, 1, UP}}}, + }); + time_jumps_ = true; + runEvents(); +} + +TEST_F(DebounceTest, OneKeyDelayedScan2) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {}}, + + /* Processing is very late */ + {300, {}, {{0, 1, DOWN}}}, + /* Release key after 1ms */ + {301, {{0, 1, UP}}, {}}, + + {306, {}, {{0, 1, UP}}}, + }); + time_jumps_ = true; + runEvents(); +} + +TEST_F(DebounceTest, OneKeyDelayedScan3) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {}}, + + /* Release key before debounce expires */ + {300, {{0, 1, UP}}, {}}, + }); + time_jumps_ = true; + runEvents(); +} + +TEST_F(DebounceTest, OneKeyDelayedScan4) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {}}, + + /* Processing is a bit late */ + {50, {}, {{0, 1, DOWN}}}, + /* Release key after 1ms */ + {51, {{0, 1, UP}}, {}}, + + {56, {}, {{0, 1, UP}}}, + }); + time_jumps_ = true; + runEvents(); +} diff --git a/quantum/debounce/tests/sym_eager_pk_tests.cpp b/quantum/debounce/tests/sym_eager_pk_tests.cpp new file mode 100644 index 000000000000..d9a02fe33c7f --- /dev/null +++ b/quantum/debounce/tests/sym_eager_pk_tests.cpp @@ -0,0 +1,253 @@ +/* Copyright 2021 Simon Arlott + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "gtest/gtest.h" + +#include "debounce_test_common.h" + +TEST_F(DebounceTest, OneKeyShort1) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + {1, {{0, 1, UP}}, {}}, + + {5, {}, {{0, 1, UP}}}, + /* Press key again after 1ms delay (debounce has not yet finished) */ + {6, {{0, 1, DOWN}}, {}}, + {10, {}, {{0, 1, DOWN}}}, /* 5ms after UP at time 5 */ + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyShort2) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + {1, {{0, 1, UP}}, {}}, + + {5, {}, {{0, 1, UP}}}, + /* Press key again after 2ms delay (debounce has not yet finished) */ + {7, {{0, 1, DOWN}}, {}}, + {10, {}, {{0, 1, DOWN}}}, /* 5ms after UP at time 5 */ + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyShort3) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + {1, {{0, 1, UP}}, {}}, + + {5, {}, {{0, 1, UP}}}, + /* Press key again after 3ms delay (debounce has not yet finished) */ + {8, {{0, 1, DOWN}}, {}}, + {10, {}, {{0, 1, DOWN}}}, /* 5ms after UP at time 5 */ + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyShort4) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + {1, {{0, 1, UP}}, {}}, + + {5, {}, {{0, 1, UP}}}, + /* Press key again after 4ms delay (debounce has not yet finished) */ + {9, {{0, 1, DOWN}}, {}}, + {10, {}, {{0, 1, DOWN}}}, /* 5ms after UP at time 5 */ + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyShort5) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + {1, {{0, 1, UP}}, {}}, + + {5, {}, {{0, 1, UP}}}, + /* Press key again after 5ms delay (debounce has finished) */ + {10, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyShort6) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + {1, {{0, 1, UP}}, {}}, + + {5, {}, {{0, 1, UP}}}, + /* Press key after after 6ms delay (debounce has finished) */ + {11, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyBouncing1) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + {1, {{0, 1, UP}}, {}}, + {2, {{0, 1, DOWN}}, {}}, + {3, {{0, 1, UP}}, {}}, + {4, {{0, 1, DOWN}}, {}}, + {5, {{0, 1, UP}}, {{0, 1, UP}}}, + /* Press key again after 1ms delay (debounce has not yet finished) */ + {6, {{0, 1, DOWN}}, {}}, + {10, {}, {{0, 1, DOWN}}}, /* 5ms after UP at time 5 */ + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyBouncing2) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + /* Change twice in the same time period */ + {1, {{0, 1, UP}}, {}}, + {1, {{0, 1, DOWN}}, {}}, + /* Change three times in the same time period */ + {2, {{0, 1, UP}}, {}}, + {2, {{0, 1, DOWN}}, {}}, + {2, {{0, 1, UP}}, {}}, + /* Change three times in the same time period */ + {3, {{0, 1, DOWN}}, {}}, + {3, {{0, 1, UP}}, {}}, + {3, {{0, 1, DOWN}}, {}}, + /* Change twice in the same time period */ + {4, {{0, 1, UP}}, {}}, + {4, {{0, 1, DOWN}}, {}}, + {5, {{0, 1, UP}}, {{0, 1, UP}}}, + /* Press key again after 1ms delay (debounce has not yet finished) */ + {6, {{0, 1, DOWN}}, {}}, + {10, {}, {{0, 1, DOWN}}}, /* 5ms after UP at time 5 */ + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyLong) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + + {25, {{0, 1, UP}}, {{0, 1, UP}}}, + + {50, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + }); + runEvents(); +} + +TEST_F(DebounceTest, TwoKeysShort) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + {1, {{0, 1, UP}}, {}}, + {2, {{0, 2, DOWN}}, {{0, 2, DOWN}}}, + {3, {{0, 2, UP}}, {}}, + + {5, {}, {{0, 1, UP}}}, + /* Press key again after 1ms delay (debounce has not yet finished) */ + {6, {{0, 1, DOWN}}, {}}, + {7, {}, {{0, 2, UP}}}, + + /* Press key again after 1ms delay (debounce has not yet finished) */ + {9, {{0, 2, DOWN}}, {}}, + {10, {}, {{0, 1, DOWN}}}, /* 5ms after UP at time 5 */ + + {12, {}, {{0, 2, DOWN}}}, /* 5ms after UP at time 7 */ + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyDelayedScan1) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + + /* Processing is very late but the change will now be accepted */ + {300, {{0, 1, UP}}, {{0, 1, UP}}}, + }); + time_jumps_ = true; + runEvents(); +} + +TEST_F(DebounceTest, OneKeyDelayedScan2) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + + /* Processing is very late but the change will now be accepted even with a 1 scan delay */ + {300, {}, {}}, + {300, {{0, 1, UP}}, {{0, 1, UP}}}, + }); + time_jumps_ = true; + runEvents(); +} + +TEST_F(DebounceTest, OneKeyDelayedScan3) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + + /* Processing is very late but the change will now be accepted even with a 1ms delay */ + {300, {}, {}}, + {301, {{0, 1, UP}}, {{0, 1, UP}}}, + }); + time_jumps_ = true; + runEvents(); +} + +TEST_F(DebounceTest, OneKeyDelayedScan4) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + + /* Processing is a bit late but the change will now be accepted */ + {50, {{0, 1, UP}}, {{0, 1, UP}}}, + }); + time_jumps_ = true; + runEvents(); +} + +TEST_F(DebounceTest, OneKeyDelayedScan5) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + + /* Processing is very late but the change will now be accepted even with a 1 scan delay */ + {50, {}, {}}, + {50, {{0, 1, UP}}, {{0, 1, UP}}}, + }); + time_jumps_ = true; + runEvents(); +} + +TEST_F(DebounceTest, OneKeyDelayedScan6) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + + /* Processing is very late but the change will now be accepted even with a 1ms delay */ + {50, {}, {}}, + {51, {{0, 1, UP}}, {{0, 1, UP}}}, + }); + time_jumps_ = true; + runEvents(); +} diff --git a/quantum/debounce/tests/sym_eager_pr_tests.cpp b/quantum/debounce/tests/sym_eager_pr_tests.cpp new file mode 100644 index 000000000000..e91dd9cb87c7 --- /dev/null +++ b/quantum/debounce/tests/sym_eager_pr_tests.cpp @@ -0,0 +1,299 @@ +/* Copyright 2021 Simon Arlott + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "gtest/gtest.h" + +#include "debounce_test_common.h" + +TEST_F(DebounceTest, OneKeyShort1) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + {1, {{0, 1, UP}}, {}}, + + {5, {}, {{0, 1, UP}}}, + /* Press key again after 1ms delay (debounce has not yet finished) */ + {6, {{0, 1, DOWN}}, {}}, + {10, {}, {{0, 1, DOWN}}}, /* 5ms after UP at time 5 */ + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyShort2) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + {1, {{0, 1, UP}}, {}}, + + {5, {}, {{0, 1, UP}}}, + /* Press key again after 2ms delay (debounce has not yet finished) */ + {7, {{0, 1, DOWN}}, {}}, + {10, {}, {{0, 1, DOWN}}}, /* 5ms after UP at time 5 */ + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyShort3) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + {1, {{0, 1, UP}}, {}}, + + {5, {}, {{0, 1, UP}}}, + /* Press key again after 3ms delay (debounce has not yet finished) */ + {8, {{0, 1, DOWN}}, {}}, + {10, {}, {{0, 1, DOWN}}}, /* 5ms after UP at time 5 */ + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyShort4) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + {1, {{0, 1, UP}}, {}}, + + {5, {}, {{0, 1, UP}}}, + /* Press key again after 4ms delay (debounce has not yet finished) */ + {9, {{0, 1, DOWN}}, {}}, + {10, {}, {{0, 1, DOWN}}}, /* 5ms after UP at time 5 */ + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyShort5) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + {1, {{0, 1, UP}}, {}}, + + {5, {}, {{0, 1, UP}}}, + /* Press key again after 5ms delay (debounce has finished) */ + {10, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyShort6) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + {1, {{0, 1, UP}}, {}}, + + {5, {}, {{0, 1, UP}}}, + /* Press key after after 6ms delay (debounce has finished) */ + {11, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyBouncing1) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + {1, {{0, 1, UP}}, {}}, + {2, {{0, 1, DOWN}}, {}}, + {3, {{0, 1, UP}}, {}}, + {4, {{0, 1, DOWN}}, {}}, + {5, {{0, 1, UP}}, {{0, 1, UP}}}, + /* Press key again after 1ms delay (debounce has not yet finished) */ + {6, {{0, 1, DOWN}}, {}}, + {10, {}, {{0, 1, DOWN}}}, /* 5ms after UP at time 5 */ + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyBouncing2) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + /* Change twice in the same time period */ + {1, {{0, 1, UP}}, {}}, + {1, {{0, 1, DOWN}}, {}}, + /* Change three times in the same time period */ + {2, {{0, 1, UP}}, {}}, + {2, {{0, 1, DOWN}}, {}}, + {2, {{0, 1, UP}}, {}}, + /* Change three times in the same time period */ + {3, {{0, 1, DOWN}}, {}}, + {3, {{0, 1, UP}}, {}}, + {3, {{0, 1, DOWN}}, {}}, + /* Change twice in the same time period */ + {4, {{0, 1, UP}}, {}}, + {4, {{0, 1, DOWN}}, {}}, + {5, {{0, 1, UP}}, {{0, 1, UP}}}, + /* Press key again after 1ms delay (debounce has not yet finished) */ + {6, {{0, 1, DOWN}}, {}}, + {10, {}, {{0, 1, DOWN}}}, /* 5ms after UP at time 5 */ + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyLong) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + + {25, {{0, 1, UP}}, {{0, 1, UP}}}, + + {50, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + }); + runEvents(); +} + +TEST_F(DebounceTest, TwoRowsShort) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + {1, {{0, 1, UP}}, {}}, + {2, {{2, 0, DOWN}}, {{2, 0, DOWN}}}, + {3, {{2, 0, UP}}, {}}, + + {5, {}, {{0, 1, UP}}}, + /* Press key again after 1ms delay (debounce has not yet finished) */ + {6, {{0, 1, DOWN}}, {}}, + {7, {}, {{2, 0, UP}}}, + + /* Press key again after 1ms delay (debounce has not yet finished) */ + {9, {{2, 0, DOWN}}, {}}, + {10, {}, {{0, 1, DOWN}}}, /* 5ms after UP at time 5 */ + + {12, {}, {{2, 0, DOWN}}}, /* 5ms after UP at time 7 */ + }); + runEvents(); +} + +TEST_F(DebounceTest, TwoKeysOverlap) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + {1, {{0, 1, UP}}, {}}, + /* Press a second key during the first debounce */ + {2, {{0, 2, DOWN}}, {}}, + + /* Key registers as soon as debounce finishes, 5ms after time 0 */ + {5, {}, {{0, 1, UP}, {0, 2, DOWN}}}, + {6, {{0, 1, DOWN}}, {}}, + + /* Key registers as soon as debounce finishes, 5ms after time 5 */ + {10, {}, {{0, 1, DOWN}}}, + /* Release both keys */ + {11, {{0, 1, UP}}, {}}, + {12, {{0, 2, UP}}, {}}, + + /* Keys register as soon as debounce finishes, 5ms after time 10 */ + {15, {}, {{0, 1, UP}, {0, 2, UP}}}, + }); + runEvents(); +} + +TEST_F(DebounceTest, TwoKeysSimultaneous1) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}, {0, 2, DOWN}}, {{0, 1, DOWN}, {0, 2, DOWN}}}, + {20, {{0, 1, UP}}, {{0, 1, UP}}}, + {21, {{0, 2, UP}}, {}}, + + /* Key registers as soon as debounce finishes, 5ms after time 20 */ + {25, {}, {{0, 2, UP}}}, + }); + runEvents(); +} + +TEST_F(DebounceTest, TwoKeysSimultaneous2) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}, {0, 2, DOWN}}, {{0, 1, DOWN}, {0, 2, DOWN}}}, + {20, {{0, 1, UP}, {0, 2, UP}}, {{0, 1, UP}, {0, 2, UP}}}, + }); + runEvents(); +} + +TEST_F(DebounceTest, OneKeyDelayedScan1) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + + /* Processing is very late but the change will now be accepted */ + {300, {{0, 1, UP}}, {{0, 1, UP}}}, + }); + time_jumps_ = true; + runEvents(); +} + +TEST_F(DebounceTest, OneKeyDelayedScan2) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + + /* Processing is very late but the change will now be accepted even with a 1 scan delay */ + {300, {}, {}}, + {300, {{0, 1, UP}}, {{0, 1, UP}}}, + }); + time_jumps_ = true; + runEvents(); +} + +TEST_F(DebounceTest, OneKeyDelayedScan3) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + + /* Processing is very late but the change will now be accepted even with a 1ms delay */ + {300, {}, {}}, + {301, {{0, 1, UP}}, {{0, 1, UP}}}, + }); + time_jumps_ = true; + runEvents(); +} + +TEST_F(DebounceTest, OneKeyDelayedScan4) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + + /* Processing is a bit late but the change will now be accepted */ + {50, {{0, 1, UP}}, {{0, 1, UP}}}, + }); + time_jumps_ = true; + runEvents(); +} + +TEST_F(DebounceTest, OneKeyDelayedScan5) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + + /* Processing is very late but the change will now be accepted even with a 1 scan delay */ + {50, {}, {}}, + {50, {{0, 1, UP}}, {{0, 1, UP}}}, + }); + time_jumps_ = true; + runEvents(); +} + +TEST_F(DebounceTest, OneKeyDelayedScan6) { + addEvents({ + /* Time, Inputs, Outputs */ + {0, {{0, 1, DOWN}}, {{0, 1, DOWN}}}, + + /* Processing is very late but the change will now be accepted even with a 1ms delay */ + {50, {}, {}}, + {51, {{0, 1, UP}}, {{0, 1, UP}}}, + }); + time_jumps_ = true; + runEvents(); +} diff --git a/quantum/debounce/tests/testlist.mk b/quantum/debounce/tests/testlist.mk new file mode 100644 index 000000000000..c54c45aa63ef --- /dev/null +++ b/quantum/debounce/tests/testlist.mk @@ -0,0 +1,6 @@ +TEST_LIST += \ + debounce_sym_defer_g \ + debounce_sym_defer_pk \ + debounce_sym_eager_pk \ + debounce_sym_eager_pr \ + debounce_asym_eager_defer_pk diff --git a/quantum/deferred_exec.c b/quantum/deferred_exec.c new file mode 100644 index 000000000000..5b0a5b14258b --- /dev/null +++ b/quantum/deferred_exec.c @@ -0,0 +1,152 @@ +// Copyright 2021 Nick Brassel (@tzarc) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include <stddef.h> +#include <timer.h> +#include <deferred_exec.h> + +#ifndef MAX_DEFERRED_EXECUTORS +# define MAX_DEFERRED_EXECUTORS 8 +#endif + +typedef struct deferred_executor_t { + deferred_token token; + uint32_t trigger_time; + deferred_exec_callback callback; + void * cb_arg; +} deferred_executor_t; + +static deferred_token current_token = 0; +static uint32_t last_deferred_exec_check = 0; +static deferred_executor_t executors[MAX_DEFERRED_EXECUTORS] = {0}; + +static inline bool token_can_be_used(deferred_token token) { + if (token == INVALID_DEFERRED_TOKEN) { + return false; + } + for (int i = 0; i < MAX_DEFERRED_EXECUTORS; ++i) { + if (executors[i].token == token) { + return false; + } + } + return true; +} + +static inline deferred_token allocate_token(void) { + deferred_token first = ++current_token; + while (!token_can_be_used(current_token)) { + ++current_token; + if (current_token == first) { + // If we've looped back around to the first, everything is already allocated (yikes!). Need to exit with a failure. + return INVALID_DEFERRED_TOKEN; + } + } + return current_token; +} + +deferred_token defer_exec(uint32_t delay_ms, deferred_exec_callback callback, void *cb_arg) { + // Ignore queueing if it's a zero-time delay, or invalid callback + if (delay_ms == 0 || !callback) { + return INVALID_DEFERRED_TOKEN; + } + + // Find an unused slot and claim it + for (int i = 0; i < MAX_DEFERRED_EXECUTORS; ++i) { + deferred_executor_t *entry = &executors[i]; + if (entry->token == INVALID_DEFERRED_TOKEN) { + // Work out the new token value, dropping out if none were available + deferred_token token = allocate_token(); + if (token == INVALID_DEFERRED_TOKEN) { + return false; + } + + // Set up the executor table entry + entry->token = current_token; + entry->trigger_time = timer_read32() + delay_ms; + entry->callback = callback; + entry->cb_arg = cb_arg; + return current_token; + } + } + + // None available + return INVALID_DEFERRED_TOKEN; +} + +bool extend_deferred_exec(deferred_token token, uint32_t delay_ms) { + // Ignore queueing if it's a zero-time delay, or the token is not valid + if (delay_ms == 0 || token == INVALID_DEFERRED_TOKEN) { + return false; + } + + // Find the entry corresponding to the token + for (int i = 0; i < MAX_DEFERRED_EXECUTORS; ++i) { + deferred_executor_t *entry = &executors[i]; + if (entry->token == token) { + // Found it, extend the delay + entry->trigger_time = timer_read32() + delay_ms; + return true; + } + } + + // Not found + return false; +} + +bool cancel_deferred_exec(deferred_token token) { + // Ignore request if the token is not valid + if (token == INVALID_DEFERRED_TOKEN) { + return false; + } + + // Find the entry corresponding to the token + for (int i = 0; i < MAX_DEFERRED_EXECUTORS; ++i) { + deferred_executor_t *entry = &executors[i]; + if (entry->token == token) { + // Found it, cancel and clear the table entry + entry->token = INVALID_DEFERRED_TOKEN; + entry->trigger_time = 0; + entry->callback = NULL; + entry->cb_arg = NULL; + return true; + } + } + + // Not found + return false; +} + +void deferred_exec_task(void) { + uint32_t now = timer_read32(); + + // Throttle only once per millisecond + if (((int32_t)TIMER_DIFF_32(now, last_deferred_exec_check)) > 0) { + last_deferred_exec_check = now; + + // Run through each of the executors + for (int i = 0; i < MAX_DEFERRED_EXECUTORS; ++i) { + deferred_executor_t *entry = &executors[i]; + + // Check if we're supposed to execute this entry + if (entry->token != INVALID_DEFERRED_TOKEN && ((int32_t)TIMER_DIFF_32(entry->trigger_time, now)) <= 0) { + // Invoke the callback and work work out if we should be requeued + uint32_t delay_ms = entry->callback(entry->trigger_time, entry->cb_arg); + + // Update the trigger time if we have to repeat, otherwise clear it out + if (delay_ms > 0) { + // Intentionally add just the delay to the existing trigger time -- this ensures the next + // invocation is with respect to the previous trigger, rather than when it got to execution. Under + // normal circumstances this won't cause issue, but if another executor is invoked that takes a + // considerable length of time, then this ensures best-effort timing between invocations. + entry->trigger_time += delay_ms; + } else { + // If it was zero, then the callback is cancelling repeated execution. Free up the slot. + entry->token = INVALID_DEFERRED_TOKEN; + entry->trigger_time = 0; + entry->callback = NULL; + entry->cb_arg = NULL; + } + } + } + } +} diff --git a/quantum/deferred_exec.h b/quantum/deferred_exec.h new file mode 100644 index 000000000000..f80d353169bf --- /dev/null +++ b/quantum/deferred_exec.h @@ -0,0 +1,38 @@ +// Copyright 2021 Nick Brassel (@tzarc) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include <stdbool.h> +#include <stdint.h> + +// A token that can be used to cancel an existing deferred execution. +typedef uint8_t deferred_token; +#define INVALID_DEFERRED_TOKEN 0 + +// Callback to execute. +// -- Parameter trigger_time: the intended trigger time to execute the callback -- equivalent time-space as timer_read32() +// cb_arg: the callback argument specified when enqueueing the deferred executor +// -- Return value: Non-zero re-queues the callback to execute after the returned number of milliseconds. Zero cancels repeated execution. +typedef uint32_t (*deferred_exec_callback)(uint32_t trigger_time, void *cb_arg); + +// Configures the supplied deferred executor to be executed after the required number of milliseconds. +// -- Parameter delay_ms: the number of milliseconds before executing the callback +// -- callback: the executor to invoke +// -- cb_arg: the argument to pass to the executor, may be NULL if unused by the executor +// -- Return value: a token usable for cancellation, or INVALID_DEFERRED_TOKEN if an error occurred +deferred_token defer_exec(uint32_t delay_ms, deferred_exec_callback callback, void *cb_arg); + +// Allows for extending the timeframe before an existing deferred execution is invoked. +// -- Parameter token: the returned value from defer_exec for the deferred execution you wish to extend. +// -- delay_ms: the new delay (with respect to the current time) +// -- Return value: if the token was found, and the delay was extended +bool extend_deferred_exec(deferred_token token, uint32_t delay_ms); + +// Allows for cancellation of an existing deferred execution. +// -- Parameter token: the returned value from defer_exec for the deferred execution you wish to cancel. +// -- Return value: if the token was found, and the executor was cancelled +bool cancel_deferred_exec(deferred_token token); + +// Forward declaration for the main loop in order to execute any deferred executors. Should not be invoked by keyboard/user code. +void deferred_exec_task(void); diff --git a/quantum/digitizer.c b/quantum/digitizer.c new file mode 100644 index 000000000000..e29986742916 --- /dev/null +++ b/quantum/digitizer.c @@ -0,0 +1,34 @@ +/* Copyright 2021 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "digitizer.h" + +digitizer_t digitizerReport = {.tipswitch = 0, .inrange = 0, .id = 0, .x = 0, .y = 0, .status = DZ_INITIALIZED}; + +__attribute__((weak)) void digitizer_send(void) { + if (digitizerReport.status & DZ_UPDATED) { + host_digitizer_send(&digitizerReport); + digitizerReport.status &= ~DZ_UPDATED; + } +} + +__attribute__((weak)) void digitizer_task(void) { digitizer_send(); } + +digitizer_t digitizer_get_report(void) { return digitizerReport; } + +void digitizer_set_report(digitizer_t newDigitizerReport) { + digitizerReport = newDigitizerReport; + digitizerReport.status |= DZ_UPDATED; +} \ No newline at end of file diff --git a/quantum/digitizer.h b/quantum/digitizer.h new file mode 100644 index 000000000000..cef551567e0e --- /dev/null +++ b/quantum/digitizer.h @@ -0,0 +1,41 @@ +/* Copyright 2021 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should 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" + +#include <stdint.h> + +enum digitizer_status { DZ_INITIALIZED = 1, DZ_UPDATED = 2 }; + +typedef struct { + int8_t tipswitch; + int8_t inrange; + uint8_t id; + float x; + float y; + uint8_t status : 2; +} digitizer_t; + +extern digitizer_t digitizer; + +digitizer_t digitizer_get_report(void); + +void digitizer_set_report(digitizer_t newDigitizerReport); + +void digitizer_task(void); + +void host_digitizer_send(digitizer_t *digitizer); diff --git a/quantum/dip_switch.c b/quantum/dip_switch.c index cda69bd0ef70..133ec850273e 100644 --- a/quantum/dip_switch.c +++ b/quantum/dip_switch.c @@ -17,6 +17,9 @@ */ #include "dip_switch.h" +#ifdef SPLIT_KEYBOARD +# include "split_common/split_util.h" +#endif // for memcpy #include <string.h> @@ -49,16 +52,24 @@ static uint16_t scan_count; static bool dip_switch_state[NUMBER_OF_DIP_SWITCHES] = {0}; static bool last_dip_switch_state[NUMBER_OF_DIP_SWITCHES] = {0}; -__attribute__((weak)) void dip_switch_update_user(uint8_t index, bool active) {} +__attribute__((weak)) bool dip_switch_update_user(uint8_t index, bool active) { return true; } -__attribute__((weak)) void dip_switch_update_kb(uint8_t index, bool active) { dip_switch_update_user(index, active); } +__attribute__((weak)) bool dip_switch_update_kb(uint8_t index, bool active) { return dip_switch_update_user(index, active); } -__attribute__((weak)) void dip_switch_update_mask_user(uint32_t state) {} +__attribute__((weak)) bool dip_switch_update_mask_user(uint32_t state) { return true; } -__attribute__((weak)) void dip_switch_update_mask_kb(uint32_t state) { dip_switch_update_mask_user(state); } +__attribute__((weak)) bool dip_switch_update_mask_kb(uint32_t state) { return dip_switch_update_mask_user(state); } void dip_switch_init(void) { #ifdef DIP_SWITCH_PINS +# if defined(SPLIT_KEYBOARD) && defined(DIP_SWITCH_PINS_RIGHT) + if (!isLeftHand) { + const pin_t dip_switch_pad_right[] = DIP_SWITCH_PINS_RIGHT; + for (uint8_t i = 0; i < NUMBER_OF_DIP_SWITCHES; i++) { + dip_switch_pad[i] = dip_switch_pad_right[i]; + } + } +# endif for (uint8_t i = 0; i < NUMBER_OF_DIP_SWITCHES; i++) { setPinInputHigh(dip_switch_pad[i]); } diff --git a/quantum/dip_switch.h b/quantum/dip_switch.h index 61ef1cc19dbc..058a10f41ff3 100644 --- a/quantum/dip_switch.h +++ b/quantum/dip_switch.h @@ -20,10 +20,10 @@ #include "quantum.h" -void dip_switch_update_kb(uint8_t index, bool active); -void dip_switch_update_user(uint8_t index, bool active); -void dip_switch_update_mask_user(uint32_t state); -void dip_switch_update_mask_kb(uint32_t state); +bool dip_switch_update_kb(uint8_t index, bool active); +bool dip_switch_update_user(uint8_t index, bool active); +bool dip_switch_update_mask_user(uint32_t state); +bool dip_switch_update_mask_kb(uint32_t state); void dip_switch_init(void); void dip_switch_read(bool forced); diff --git a/quantum/dynamic_keymap.c b/quantum/dynamic_keymap.c index b7a9f2662ccd..f5525576d828 100644 --- a/quantum/dynamic_keymap.c +++ b/quantum/dynamic_keymap.c @@ -16,7 +16,7 @@ #include "config.h" #include "keymap.h" // to get keymaps[][][] -#include "tmk_core/common/eeprom.h" +#include "eeprom.h" #include "progmem.h" // to read default from flash #include "quantum.h" // for send_string() #include "dynamic_keymap.h" diff --git a/tmk_core/common/eeconfig.c b/quantum/eeconfig.c similarity index 85% rename from tmk_core/common/eeconfig.c rename to quantum/eeconfig.c index ffa56ab56dc6..4c2ad2490ce8 100644 --- a/tmk_core/common/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 @@ -17,6 +12,12 @@ # include "haptic.h" #endif +#if defined(VIA_ENABLE) +bool via_eeprom_is_valid(void); +void via_eeprom_set_valid(bool valid); +void eeconfig_init_via(void); +#endif + /** \brief eeconfig enable * * FIXME: needs doc @@ -37,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 @@ -77,6 +75,13 @@ void eeconfig_init_quantum(void) { // when a haptic-enabled firmware is loaded onto the keyboard. eeprom_update_dword(EECONFIG_HAPTIC, 0); #endif +#if defined(VIA_ENABLE) + // Invalidate VIA eeprom config, and then reset. + // Just in case if power is lost mid init, this makes sure that it pets + // properly re-initialized. + via_eeprom_set_valid(false); + eeconfig_init_via(); +#endif eeconfig_init_kb(); } @@ -98,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 @@ -111,13 +113,29 @@ void eeconfig_disable(void) { * * FIXME: needs doc */ -bool eeconfig_is_enabled(void) { return (eeprom_read_word(EECONFIG_MAGIC) == EECONFIG_MAGIC_NUMBER); } +bool eeconfig_is_enabled(void) { + bool is_eeprom_enabled = (eeprom_read_word(EECONFIG_MAGIC) == EECONFIG_MAGIC_NUMBER); +#ifdef VIA_ENABLE + if (is_eeprom_enabled) { + is_eeprom_enabled = via_eeprom_is_valid(); + } +#endif + return is_eeprom_enabled; +} /** \brief eeconfig is disabled * * FIXME: needs doc */ -bool eeconfig_is_disabled(void) { return (eeprom_read_word(EECONFIG_MAGIC) == EECONFIG_MAGIC_NUMBER_OFF); } +bool eeconfig_is_disabled(void) { + bool is_eeprom_disabled = (eeprom_read_word(EECONFIG_MAGIC) == EECONFIG_MAGIC_NUMBER_OFF); +#ifdef VIA_ENABLE + if (!is_eeprom_disabled) { + is_eeprom_disabled = !via_eeprom_is_valid(); + } +#endif + return is_eeprom_disabled; +} /** \brief eeconfig read debug * diff --git a/quantum/eeconfig.h b/quantum/eeconfig.h new file mode 100644 index 000000000000..22d874273c08 --- /dev/null +++ b/quantum/eeconfig.h @@ -0,0 +1,139 @@ +/* +Copyright 2013 Jun Wako <wakojun@gmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#pragma once + +#include <stdint.h> +#include <stdbool.h> + +#ifndef EECONFIG_MAGIC_NUMBER +# define EECONFIG_MAGIC_NUMBER (uint16_t)0xFEE9 // When changing, decrement this value to avoid future re-init issues +#endif +#define EECONFIG_MAGIC_NUMBER_OFF (uint16_t)0xFFFF + +/* EEPROM parameter address */ +#define EECONFIG_MAGIC (uint16_t *)0 +#define EECONFIG_DEBUG (uint8_t *)2 +#define EECONFIG_DEFAULT_LAYER (uint8_t *)3 +#define EECONFIG_KEYMAP (uint8_t *)4 +#define EECONFIG_MOUSEKEY_ACCEL (uint8_t *)5 +#define EECONFIG_BACKLIGHT (uint8_t *)6 +#define EECONFIG_AUDIO (uint8_t *)7 +#define EECONFIG_RGBLIGHT (uint32_t *)8 +#define EECONFIG_UNICODEMODE (uint8_t *)12 +#define EECONFIG_STENOMODE (uint8_t *)13 +// EEHANDS for two handed boards +#define EECONFIG_HANDEDNESS (uint8_t *)14 +#define EECONFIG_KEYBOARD (uint32_t *)15 +#define EECONFIG_USER (uint32_t *)19 +#define EECONFIG_VELOCIKEY (uint8_t *)23 + +#define EECONFIG_HAPTIC (uint32_t *)24 + +// Mutually exclusive +#define EECONFIG_LED_MATRIX (uint32_t *)28 +#define EECONFIG_RGB_MATRIX (uint32_t *)28 +// Speed & Flags +#define EECONFIG_LED_MATRIX_EXTENDED (uint16_t *)32 +#define EECONFIG_RGB_MATRIX_EXTENDED (uint16_t *)32 + +// TODO: Combine these into a single word and single block of EEPROM +#define EECONFIG_KEYMAP_UPPER_BYTE (uint8_t *)34 +// Size of EEPROM being used, other code can refer to this for available EEPROM +#define EECONFIG_SIZE 35 +/* debug bit */ +#define EECONFIG_DEBUG_ENABLE (1 << 0) +#define EECONFIG_DEBUG_MATRIX (1 << 1) +#define EECONFIG_DEBUG_KEYBOARD (1 << 2) +#define EECONFIG_DEBUG_MOUSE (1 << 3) + +/* keyconf bit */ +#define EECONFIG_KEYMAP_SWAP_CONTROL_CAPSLOCK (1 << 0) +#define EECONFIG_KEYMAP_CAPSLOCK_TO_CONTROL (1 << 1) +#define EECONFIG_KEYMAP_SWAP_LALT_LGUI (1 << 2) +#define EECONFIG_KEYMAP_SWAP_RALT_RGUI (1 << 3) +#define EECONFIG_KEYMAP_NO_GUI (1 << 4) +#define EECONFIG_KEYMAP_SWAP_GRAVE_ESC (1 << 5) +#define EECONFIG_KEYMAP_SWAP_BACKSLASH_BACKSPACE (1 << 6) +#define EECONFIG_KEYMAP_NKRO (1 << 7) + +#define EECONFIG_KEYMAP_LOWER_BYTE EECONFIG_KEYMAP + +bool eeconfig_is_enabled(void); +bool eeconfig_is_disabled(void); + +void eeconfig_init(void); +void eeconfig_init_quantum(void); +void eeconfig_init_kb(void); +void eeconfig_init_user(void); + +void eeconfig_enable(void); + +void eeconfig_disable(void); + +uint8_t eeconfig_read_debug(void); +void eeconfig_update_debug(uint8_t val); + +uint8_t eeconfig_read_default_layer(void); +void eeconfig_update_default_layer(uint8_t val); + +uint16_t eeconfig_read_keymap(void); +void eeconfig_update_keymap(uint16_t val); + +#ifdef AUDIO_ENABLE +uint8_t eeconfig_read_audio(void); +void eeconfig_update_audio(uint8_t val); +#endif + +uint32_t eeconfig_read_kb(void); +void eeconfig_update_kb(uint32_t val); +uint32_t eeconfig_read_user(void); +void eeconfig_update_user(uint32_t val); + +#ifdef HAPTIC_ENABLE +uint32_t eeconfig_read_haptic(void); +void eeconfig_update_haptic(uint32_t val); +#endif + +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/encoder.c b/quantum/encoder.c index c30bf01cb2f6..8fb87281c2b1 100644 --- a/quantum/encoder.c +++ b/quantum/encoder.c @@ -119,6 +119,11 @@ static bool encoder_update(uint8_t index, uint8_t state) { encoder_update_kb(index, ENCODER_CLOCKWISE); } encoder_pulses[i] %= resolution; +#ifdef ENCODER_DEFAULT_POS + if ((state & 0x3) == ENCODER_DEFAULT_POS) { + encoder_pulses[i] = 0; + } +#endif return changed; } diff --git a/quantum/encoder/tests/encoder_tests.cpp b/quantum/encoder/tests/encoder_tests.cpp new file mode 100644 index 000000000000..1888fdab8d08 --- /dev/null +++ b/quantum/encoder/tests/encoder_tests.cpp @@ -0,0 +1,144 @@ +/* Copyright 2021 Balz Guenat + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "gtest/gtest.h" +#include "gmock/gmock.h" +#include <vector> +#include <algorithm> +#include <stdio.h> + +extern "C" { +#include "encoder.h" +#include "encoder/tests/mock.h" +} + +struct update { + int8_t index; + bool clockwise; +}; + +uint8_t uidx = 0; +update updates[32]; + +bool encoder_update_kb(uint8_t index, bool clockwise) { + updates[uidx % 32] = {index, clockwise}; + uidx++; + return true; +} + +bool setAndRead(pin_t pin, bool val) { + setPin(pin, val); + return encoder_read(); +} + +class EncoderTest : public ::testing::Test {}; + +TEST_F(EncoderTest, TestInit) { + uidx = 0; + encoder_init(); + EXPECT_EQ(pinIsInputHigh[0], true); + EXPECT_EQ(pinIsInputHigh[1], true); + EXPECT_EQ(uidx, 0); +} + +TEST_F(EncoderTest, TestOneClockwise) { + uidx = 0; + encoder_init(); + // send 4 pulses. with resolution 4, that's one step and we should get 1 update. + setAndRead(0, false); + setAndRead(1, false); + setAndRead(0, true); + setAndRead(1, true); + + EXPECT_EQ(uidx, 1); + EXPECT_EQ(updates[0].index, 0); + EXPECT_EQ(updates[0].clockwise, true); +} + +TEST_F(EncoderTest, TestOneCounterClockwise) { + uidx = 0; + encoder_init(); + setAndRead(1, false); + setAndRead(0, false); + setAndRead(1, true); + setAndRead(0, true); + + EXPECT_EQ(uidx, 1); + EXPECT_EQ(updates[0].index, 0); + EXPECT_EQ(updates[0].clockwise, false); +} + +TEST_F(EncoderTest, TestTwoClockwiseOneCC) { + uidx = 0; + encoder_init(); + setAndRead(0, false); + setAndRead(1, false); + setAndRead(0, true); + setAndRead(1, true); + setAndRead(0, false); + setAndRead(1, false); + setAndRead(0, true); + setAndRead(1, true); + setAndRead(1, false); + setAndRead(0, false); + setAndRead(1, true); + setAndRead(0, true); + + EXPECT_EQ(uidx, 3); + EXPECT_EQ(updates[0].index, 0); + EXPECT_EQ(updates[0].clockwise, true); + EXPECT_EQ(updates[1].index, 0); + EXPECT_EQ(updates[1].clockwise, true); + EXPECT_EQ(updates[2].index, 0); + EXPECT_EQ(updates[2].clockwise, false); +} + +TEST_F(EncoderTest, TestNoEarly) { + uidx = 0; + encoder_init(); + // send 3 pulses. with resolution 4, that's not enough for a step. + setAndRead(0, false); + setAndRead(1, false); + setAndRead(0, true); + EXPECT_EQ(uidx, 0); + // now send last pulse + setAndRead(1, true); + EXPECT_EQ(uidx, 1); + EXPECT_EQ(updates[0].index, 0); + EXPECT_EQ(updates[0].clockwise, true); +} + +TEST_F(EncoderTest, TestHalfway) { + uidx = 0; + encoder_init(); + // go halfway + setAndRead(0, false); + setAndRead(1, false); + EXPECT_EQ(uidx, 0); + // back off + setAndRead(1, true); + setAndRead(0, true); + EXPECT_EQ(uidx, 0); + // go all the way + setAndRead(0, false); + setAndRead(1, false); + setAndRead(0, true); + setAndRead(1, true); + // should result in 1 update + EXPECT_EQ(uidx, 1); + EXPECT_EQ(updates[0].index, 0); + EXPECT_EQ(updates[0].clockwise, true); +} diff --git a/quantum/encoder/tests/encoder_tests_split.cpp b/quantum/encoder/tests/encoder_tests_split.cpp new file mode 100644 index 000000000000..25e52c83f9d6 --- /dev/null +++ b/quantum/encoder/tests/encoder_tests_split.cpp @@ -0,0 +1,143 @@ +/* Copyright 2021 Balz Guenat + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "gtest/gtest.h" +#include "gmock/gmock.h" +#include <vector> +#include <algorithm> +#include <stdio.h> + +extern "C" { +#include "encoder.h" +#include "encoder/tests/mock_split.h" +} + +struct update { + int8_t index; + bool clockwise; +}; + +uint8_t uidx = 0; +update updates[32]; + +bool isLeftHand; + +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!isLeftHand) { + // this method has no effect on slave half + printf("ignoring update on right hand (%d,%s)\n", index, clockwise ? "CW" : "CC"); + return true; + } + updates[uidx % 32] = {index, clockwise}; + uidx++; + return true; +} + +bool setAndRead(pin_t pin, bool val) { + setPin(pin, val); + return encoder_read(); +} + +class EncoderTest : public ::testing::Test { + protected: + void SetUp() override { + uidx = 0; + for (int i = 0; i < 32; i++) { + pinIsInputHigh[i] = 0; + pins[i] = 0; + } + } +}; + +TEST_F(EncoderTest, TestInitLeft) { + isLeftHand = true; + encoder_init(); + EXPECT_EQ(pinIsInputHigh[0], true); + EXPECT_EQ(pinIsInputHigh[1], true); + EXPECT_EQ(pinIsInputHigh[2], false); + EXPECT_EQ(pinIsInputHigh[3], false); + EXPECT_EQ(uidx, 0); +} + +TEST_F(EncoderTest, TestInitRight) { + isLeftHand = false; + encoder_init(); + EXPECT_EQ(pinIsInputHigh[0], false); + EXPECT_EQ(pinIsInputHigh[1], false); + EXPECT_EQ(pinIsInputHigh[2], true); + EXPECT_EQ(pinIsInputHigh[3], true); + EXPECT_EQ(uidx, 0); +} + +TEST_F(EncoderTest, TestOneClockwiseLeft) { + isLeftHand = true; + encoder_init(); + // send 4 pulses. with resolution 4, that's one step and we should get 1 update. + setAndRead(0, false); + setAndRead(1, false); + setAndRead(0, true); + setAndRead(1, true); + + EXPECT_EQ(uidx, 1); + EXPECT_EQ(updates[0].index, 0); + EXPECT_EQ(updates[0].clockwise, true); +} + +TEST_F(EncoderTest, TestOneClockwiseRightSent) { + isLeftHand = false; + encoder_init(); + // send 4 pulses. with resolution 4, that's one step and we should get 1 update. + setAndRead(2, false); + setAndRead(3, false); + setAndRead(2, true); + setAndRead(3, true); + + uint8_t slave_state[2] = {0}; + encoder_state_raw(slave_state); + + EXPECT_EQ((int8_t)slave_state[0], -1); +} + +/* this test will not work after the previous test. + * this is due to encoder_value[1] already being set to -1 when simulating the right half. + * When we now receive this update acting as the left half, there is no change. + * This is hard to mock, as the static values inside encoder.c normally exist twice, once on each half, + * but here, they only exist once. + */ + +// TEST_F(EncoderTest, TestOneClockwiseRightReceived) { +// isLeftHand = true; +// encoder_init(); + +// uint8_t slave_state[2] = {255, 0}; +// encoder_update_raw(slave_state); + +// EXPECT_EQ(uidx, 1); +// EXPECT_EQ(updates[0].index, 1); +// EXPECT_EQ(updates[0].clockwise, true); +// } + +TEST_F(EncoderTest, TestOneCounterClockwiseRightReceived) { + isLeftHand = true; + encoder_init(); + + uint8_t slave_state[2] = {0, 0}; + encoder_update_raw(slave_state); + + EXPECT_EQ(uidx, 1); + EXPECT_EQ(updates[0].index, 1); + EXPECT_EQ(updates[0].clockwise, false); +} diff --git a/quantum/encoder/tests/mock.c b/quantum/encoder/tests/mock.c new file mode 100644 index 000000000000..d0506a938f7b --- /dev/null +++ b/quantum/encoder/tests/mock.c @@ -0,0 +1,34 @@ +/* Copyright 2021 Balz Guenat + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "mock.h" + +bool pins[32] = {0}; +bool pinIsInputHigh[32] = {0}; + +uint8_t mockSetPinInputHigh(pin_t pin) { + // dprintf("Setting pin %d input high.", pin); + pins[pin] = true; + pinIsInputHigh[pin] = true; + return 0; +} + +bool mockReadPin(pin_t pin) { return pins[pin]; } + +bool setPin(pin_t pin, bool val) { + pins[pin] = val; + return val; +} diff --git a/quantum/encoder/tests/mock.h b/quantum/encoder/tests/mock.h new file mode 100644 index 000000000000..dbc25a084618 --- /dev/null +++ b/quantum/encoder/tests/mock.h @@ -0,0 +1,40 @@ +/* Copyright 2021 Balz Guenat + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should 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> + +/* Here, "pins" from 0 to 31 are allowed. */ +#define ENCODERS_PAD_A \ + { 0 } +#define ENCODERS_PAD_B \ + { 1 } + +typedef uint8_t pin_t; + +extern bool pins[]; +extern bool pinIsInputHigh[]; + +#define setPinInputHigh(pin) (mockSetPinInputHigh(pin)) +#define readPin(pin) (mockReadPin(pin)) + +uint8_t mockSetPinInputHigh(pin_t pin); + +bool mockReadPin(pin_t pin); + +bool setPin(pin_t pin, bool val); diff --git a/quantum/encoder/tests/mock_split.c b/quantum/encoder/tests/mock_split.c new file mode 100644 index 000000000000..68bf3af59929 --- /dev/null +++ b/quantum/encoder/tests/mock_split.c @@ -0,0 +1,36 @@ +/* Copyright 2021 Balz Guenat + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "mock_split.h" + +bool pins[32] = {0}; +bool pinIsInputHigh[32] = {0}; + +uint8_t mockSetPinInputHigh(pin_t pin) { + // dprintf("Setting pin %d input high.", pin); + pins[pin] = true; + pinIsInputHigh[pin] = true; + return 0; +} + +bool mockReadPin(pin_t pin) { return pins[pin]; } + +bool setPin(pin_t pin, bool val) { + pins[pin] = val; + return val; +} + +void last_encoder_activity_trigger(void) {} diff --git a/quantum/encoder/tests/mock_split.h b/quantum/encoder/tests/mock_split.h new file mode 100644 index 000000000000..0ae62652f97f --- /dev/null +++ b/quantum/encoder/tests/mock_split.h @@ -0,0 +1,48 @@ +/* Copyright 2021 Balz Guenat + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should 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> + +#define SPLIT_KEYBOARD +/* Here, "pins" from 0 to 31 are allowed. */ +#define ENCODERS_PAD_A \ + { 0 } +#define ENCODERS_PAD_B \ + { 1 } +#define ENCODERS_PAD_A_RIGHT \ + { 2 } +#define ENCODERS_PAD_B_RIGHT \ + { 3 } + +typedef uint8_t pin_t; +extern bool isLeftHand; +void encoder_state_raw(uint8_t* slave_state); +void encoder_update_raw(uint8_t* slave_state); + +extern bool pins[]; +extern bool pinIsInputHigh[]; + +#define setPinInputHigh(pin) (mockSetPinInputHigh(pin)) +#define readPin(pin) (mockReadPin(pin)) + +uint8_t mockSetPinInputHigh(pin_t pin); + +bool mockReadPin(pin_t pin); + +bool setPin(pin_t pin, bool val); diff --git a/quantum/encoder/tests/rules.mk b/quantum/encoder/tests/rules.mk new file mode 100644 index 000000000000..b826ce3aedec --- /dev/null +++ b/quantum/encoder/tests/rules.mk @@ -0,0 +1,13 @@ +encoder_DEFS := -DENCODER_MOCK_SINGLE + +encoder_SRC := \ + $(QUANTUM_PATH)/encoder/tests/mock.c \ + $(QUANTUM_PATH)/encoder/tests/encoder_tests.cpp \ + $(QUANTUM_PATH)/encoder.c + +encoder_split_DEFS := -DENCODER_MOCK_SPLIT + +encoder_split_SRC := \ + $(QUANTUM_PATH)/encoder/tests/mock_split.c \ + $(QUANTUM_PATH)/encoder/tests/encoder_tests_split.cpp \ + $(QUANTUM_PATH)/encoder.c diff --git a/quantum/encoder/tests/testlist.mk b/quantum/encoder/tests/testlist.mk new file mode 100644 index 000000000000..1be9f4a0548e --- /dev/null +++ b/quantum/encoder/tests/testlist.mk @@ -0,0 +1,3 @@ +TEST_LIST += \ + encoder \ + encoder_split diff --git a/drivers/haptic/haptic.c b/quantum/haptic.c similarity index 80% rename from drivers/haptic/haptic.c rename to quantum/haptic.c index de3f400527a0..f915acf94647 100644 --- a/drivers/haptic/haptic.c +++ b/quantum/haptic.c @@ -16,8 +16,9 @@ */ #include "haptic.h" #include "eeconfig.h" -#include "progmem.h" #include "debug.h" +#include "usb_device_state.h" +#include "gpio.h" #ifdef DRV2605L # include "DRV2605L.h" #endif @@ -27,8 +28,30 @@ haptic_config_t haptic_config; +static void update_haptic_enable_gpios(void) { + if (haptic_config.enable && ((!HAPTIC_OFF_IN_LOW_POWER) || (usb_device_state == USB_DEVICE_STATE_CONFIGURED))) { +#if defined(HAPTIC_ENABLE_PIN) + HAPTIC_ENABLE_PIN_WRITE_ACTIVE(); +#endif +#if defined(HAPTIC_ENABLE_STATUS_LED) + HAPTIC_ENABLE_STATUS_LED_WRITE_ACTIVE(); +#endif + } else { +#if defined(HAPTIC_ENABLE_PIN) + HAPTIC_ENABLE_PIN_WRITE_INACTIVE(); +#endif +#if defined(HAPTIC_ENABLE_STATUS_LED) + HAPTIC_ENABLE_STATUS_LED_WRITE_INACTIVE(); +#endif + } +} + +static void set_haptic_config_enable(bool enabled) { + haptic_config.enable = enabled; + update_haptic_enable_gpios(); +} + void haptic_init(void) { - debug_enable = 1; // Debug is ON! if (!eeconfig_is_enabled()) { eeconfig_init(); } @@ -46,6 +69,10 @@ void haptic_init(void) { // or the previous firmware didn't have solenoid enabled, // and the current one has solenoid enabled. haptic_reset(); + } else { + // Haptic configuration has been loaded through the "raw" union item. + // This is to execute any side effects of the configuration. + set_haptic_config_enable(haptic_config.enable); } #ifdef SOLENOID_ENABLE solenoid_setup(); @@ -56,6 +83,12 @@ void haptic_init(void) { dprintf("DRV2605 driver initialized\n"); #endif eeconfig_debug_haptic(); +#ifdef HAPTIC_ENABLE_PIN + setPinOutput(HAPTIC_ENABLE_PIN); +#endif +#ifdef HAPTIC_ENABLE_STATUS_LED + setPinOutput(HAPTIC_ENABLE_STATUS_LED); +#endif } void haptic_task(void) { @@ -65,19 +98,19 @@ void haptic_task(void) { } void eeconfig_debug_haptic(void) { - dprintf("haptic_config eprom\n"); + dprintf("haptic_config eeprom\n"); dprintf("haptic_config.enable = %d\n", haptic_config.enable); dprintf("haptic_config.mode = %d\n", haptic_config.mode); } void haptic_enable(void) { - haptic_config.enable = 1; + set_haptic_config_enable(true); xprintf("haptic_config.enable = %u\n", haptic_config.enable); eeconfig_update_haptic(haptic_config.raw); } void haptic_disable(void) { - haptic_config.enable = 0; + set_haptic_config_enable(false); xprintf("haptic_config.enable = %u\n", haptic_config.enable); eeconfig_update_haptic(haptic_config.raw); } @@ -159,7 +192,7 @@ void haptic_dwell_decrease(void) { } void haptic_reset(void) { - haptic_config.enable = true; + set_haptic_config_enable(true); uint8_t feedback = HAPTIC_FEEDBACK_DEFAULT; haptic_config.feedback = feedback; #ifdef DRV2605L @@ -214,6 +247,8 @@ void haptic_set_dwell(uint8_t dwell) { xprintf("haptic_config.dwell = %u\n", haptic_config.dwell); } +uint8_t haptic_get_enable(void) { return haptic_config.enable; } + uint8_t haptic_get_mode(void) { if (!haptic_config.enable) { return false; @@ -254,14 +289,11 @@ void haptic_disable_continuous(void) { } void haptic_toggle_continuous(void) { -#ifdef DRV2605L if (haptic_config.cont) { haptic_disable_continuous(); } else { haptic_enable_continuous(); } - eeconfig_update_haptic(haptic_config.raw); -#endif } void haptic_cont_increase(void) { @@ -291,65 +323,18 @@ void haptic_play(void) { #endif } -bool process_haptic(uint16_t keycode, keyrecord_t *record) { - if (keycode == HPT_ON && record->event.pressed) { - haptic_enable(); - } - if (keycode == HPT_OFF && record->event.pressed) { - haptic_disable(); - } - if (keycode == HPT_TOG && record->event.pressed) { - haptic_toggle(); - } - if (keycode == HPT_RST && record->event.pressed) { - haptic_reset(); - } - if (keycode == HPT_FBK && record->event.pressed) { - haptic_feedback_toggle(); - } - if (keycode == HPT_BUZ && record->event.pressed) { - haptic_buzz_toggle(); - } - if (keycode == HPT_MODI && record->event.pressed) { - haptic_mode_increase(); - } - if (keycode == HPT_MODD && record->event.pressed) { - haptic_mode_decrease(); - } - if (keycode == HPT_DWLI && record->event.pressed) { - haptic_dwell_increase(); - } - if (keycode == HPT_DWLD && record->event.pressed) { - haptic_dwell_decrease(); - } - if (keycode == HPT_CONT && record->event.pressed) { - haptic_toggle_continuous(); - } - if (keycode == HPT_CONI && record->event.pressed) { - haptic_cont_increase(); - } - if (keycode == HPT_COND && record->event.pressed) { - haptic_cont_decrease(); - } - - if (haptic_config.enable) { - if (record->event.pressed) { - // keypress - if (haptic_config.feedback < 2) { - haptic_play(); - } - } else { - // keyrelease - if (haptic_config.feedback > 0) { - haptic_play(); - } - } - } - return true; -} - void haptic_shutdown(void) { #ifdef SOLENOID_ENABLE solenoid_shutdown(); #endif } + +void haptic_notify_usb_device_state_change(void) { + update_haptic_enable_gpios(); +#if defined(HAPTIC_ENABLE_PIN) + setPinOutput(HAPTIC_ENABLE_PIN); +#endif +#if defined(HAPTIC_ENABLE_STATUS_LED) + setPinOutput(HAPTIC_ENABLE_STATUS_LED); +#endif +} diff --git a/quantum/haptic.h b/quantum/haptic.h new file mode 100644 index 000000000000..7d70a013337a --- /dev/null +++ b/quantum/haptic.h @@ -0,0 +1,104 @@ +/* Copyright 2019 ishtob + * Driver for haptic feedback written for 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 <stdint.h> +#include <stdbool.h> + +#ifndef HAPTIC_FEEDBACK_DEFAULT +# define HAPTIC_FEEDBACK_DEFAULT 0 +#endif +#ifndef HAPTIC_MODE_DEFAULT +# define HAPTIC_MODE_DEFAULT DRV_MODE_DEFAULT +#endif + +/* EEPROM config settings */ +typedef union { + uint32_t raw; + struct { + bool enable : 1; + uint8_t feedback : 2; + uint8_t mode : 7; + bool buzz : 1; + uint8_t dwell : 7; + bool cont : 1; + uint8_t amplitude : 8; + uint8_t reserved : 5; + }; +} haptic_config_t; + +typedef enum HAPTIC_FEEDBACK { + KEY_PRESS, + KEY_PRESS_RELEASE, + KEY_RELEASE, + HAPTIC_FEEDBACK_MAX, +} HAPTIC_FEEDBACK; + +void haptic_init(void); +void haptic_task(void); +void eeconfig_debug_haptic(void); +void haptic_enable(void); +void haptic_disable(void); +void haptic_toggle(void); +void haptic_feedback_toggle(void); +void haptic_mode_increase(void); +void haptic_mode_decrease(void); +void haptic_mode(uint8_t mode); +void haptic_reset(void); +void haptic_set_feedback(uint8_t feedback); +void haptic_set_mode(uint8_t mode); +void haptic_set_dwell(uint8_t dwell); +void haptic_set_buzz(uint8_t buzz); +void haptic_buzz_toggle(void); +uint8_t haptic_get_enable(void); +uint8_t haptic_get_mode(void); +uint8_t haptic_get_feedback(void); +void haptic_dwell_increase(void); +void haptic_dwell_decrease(void); +void haptic_toggle_continuous(void); +void haptic_cont_increase(void); +void haptic_cont_decrease(void); + +void haptic_play(void); +void haptic_shutdown(void); +void haptic_notify_usb_device_state_change(void); + +#ifdef HAPTIC_ENABLE_PIN_ACTIVE_LOW +# ifndef HAPTIC_ENABLE_PIN +# error HAPTIC_ENABLE_PIN not defined +# endif +# define HAPTIC_ENABLE_PIN_WRITE_ACTIVE() writePinLow(HAPTIC_ENABLE_PIN) +# define HAPTIC_ENABLE_PIN_WRITE_INACTIVE() writePinHigh(HAPTIC_ENABLE_PIN) +#else +# define HAPTIC_ENABLE_PIN_WRITE_ACTIVE() writePinHigh(HAPTIC_ENABLE_PIN) +# define HAPTIC_ENABLE_PIN_WRITE_INACTIVE() writePinLow(HAPTIC_ENABLE_PIN) +#endif + +#ifdef HAPTIC_ENABLE_STATUS_LED_ACTIVE_LOW +# ifndef HAPTIC_ENABLE_STATUS_LED +# error HAPTIC_ENABLE_STATUS_LED not defined +# endif +# define HAPTIC_ENABLE_STATUS_LED_WRITE_ACTIVE() writePinLow(HAPTIC_ENABLE_STATUS_LED) +# define HAPTIC_ENABLE_STATUS_LED_WRITE_INACTIVE() writePinHigh(HAPTIC_ENABLE_STATUS_LED) +#else +# define HAPTIC_ENABLE_STATUS_LED_WRITE_ACTIVE() writePinHigh(HAPTIC_ENABLE_STATUS_LED) +# define HAPTIC_ENABLE_STATUS_LED_WRITE_INACTIVE() writePinLow(HAPTIC_ENABLE_STATUS_LED) +#endif + +#ifndef HAPTIC_OFF_IN_LOW_POWER +# define HAPTIC_OFF_IN_LOW_POWER 0 +#endif diff --git a/quantum/keyboard.c b/quantum/keyboard.c new file mode 100644 index 000000000000..3bca05aab7cf --- /dev/null +++ b/quantum/keyboard.c @@ -0,0 +1,537 @@ +/* +Copyright 2011, 2012, 2013 Jun Wako <wakojun@gmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#include <stdint.h> +#include "keyboard.h" +#include "matrix.h" +#include "keymap.h" +#include "host.h" +#include "led.h" +#include "keycode.h" +#include "timer.h" +#include "sync_timer.h" +#include "print.h" +#include "debug.h" +#include "command.h" +#include "util.h" +#include "sendchar.h" +#include "eeconfig.h" +#include "action_layer.h" +#ifdef BACKLIGHT_ENABLE +# include "backlight.h" +#endif +#ifdef MOUSEKEY_ENABLE +# include "mousekey.h" +#endif +#ifdef PS2_MOUSE_ENABLE +# include "ps2_mouse.h" +#endif +#ifdef RGBLIGHT_ENABLE +# include "rgblight.h" +#endif +#ifdef LED_MATRIX_ENABLE +# include "led_matrix.h" +#endif +#ifdef RGB_MATRIX_ENABLE +# include "rgb_matrix.h" +#endif +#ifdef ENCODER_ENABLE +# include "encoder.h" +#endif +#ifdef STENO_ENABLE +# include "process_steno.h" +#endif +#ifdef POINTING_DEVICE_ENABLE +# include "pointing_device.h" +#endif +#ifdef MIDI_ENABLE +# include "process_midi.h" +#endif +#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 OLED_ENABLE +# include "oled_driver.h" +#endif +#ifdef ST7565_ENABLE +# include "st7565.h" +#endif +#ifdef VELOCIKEY_ENABLE +# include "velocikey.h" +#endif +#ifdef VIA_ENABLE +# include "via.h" +#endif +#ifdef DIP_SWITCH_ENABLE +# include "dip_switch.h" +#endif +#ifdef EEPROM_DRIVER +# include "eeprom_driver.h" +#endif +#if defined(CRC_ENABLE) +# include "crc.h" +#endif +#ifdef DIGITIZER_ENABLE +# include "digitizer.h" +#endif +#ifdef VIRTSER_ENABLE +# include "virtser.h" +#endif +#ifdef SLEEP_LED_ENABLE +# include "sleep_led.h" +#endif + +static uint32_t last_input_modification_time = 0; +uint32_t last_input_activity_time(void) { return last_input_modification_time; } +uint32_t last_input_activity_elapsed(void) { return timer_elapsed32(last_input_modification_time); } + +static uint32_t last_matrix_modification_time = 0; +uint32_t last_matrix_activity_time(void) { return last_matrix_modification_time; } +uint32_t last_matrix_activity_elapsed(void) { return timer_elapsed32(last_matrix_modification_time); } +void last_matrix_activity_trigger(void) { last_matrix_modification_time = last_input_modification_time = timer_read32(); } + +static uint32_t last_encoder_modification_time = 0; +uint32_t last_encoder_activity_time(void) { return last_encoder_modification_time; } +uint32_t last_encoder_activity_elapsed(void) { return timer_elapsed32(last_encoder_modification_time); } +void last_encoder_activity_trigger(void) { last_encoder_modification_time = last_input_modification_time = timer_read32(); } + +// Only enable this if console is enabled to print to +#if defined(DEBUG_MATRIX_SCAN_RATE) +static uint32_t matrix_timer = 0; +static uint32_t matrix_scan_count = 0; +static uint32_t last_matrix_scan_count = 0; + +void matrix_scan_perf_task(void) { + matrix_scan_count++; + + uint32_t timer_now = timer_read32(); + if (TIMER_DIFF_32(timer_now, matrix_timer) > 1000) { +# if defined(CONSOLE_ENABLE) + dprintf("matrix scan frequency: %lu\n", matrix_scan_count); +# endif + last_matrix_scan_count = matrix_scan_count; + matrix_timer = timer_now; + matrix_scan_count = 0; + } +} + +uint32_t get_matrix_scan_rate(void) { return last_matrix_scan_count; } +#else +# define matrix_scan_perf_task() +#endif + +#ifdef MATRIX_HAS_GHOST +extern const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS]; +static matrix_row_t get_real_keys(uint8_t row, matrix_row_t rowdata) { + matrix_row_t out = 0; + for (uint8_t col = 0; col < MATRIX_COLS; col++) { + // read each key in the row data and check if the keymap defines it as a real key + if (pgm_read_byte(&keymaps[0][row][col]) && (rowdata & (1 << col))) { + // this creates new row data, if a key is defined in the keymap, it will be set here + out |= 1 << col; + } + } + return out; +} + +static inline bool popcount_more_than_one(matrix_row_t rowdata) { + rowdata &= rowdata - 1; // if there are less than two bits (keys) set, rowdata will become zero + return rowdata; +} + +static inline bool has_ghost_in_row(uint8_t row, matrix_row_t rowdata) { + /* No ghost exists when less than 2 keys are down on the row. + If there are "active" blanks in the matrix, the key can't be pressed by the user, + there is no doubt as to which keys are really being pressed. + The ghosts will be ignored, they are KC_NO. */ + rowdata = get_real_keys(row, rowdata); + if ((popcount_more_than_one(rowdata)) == 0) { + return false; + } + /* Ghost occurs when the row shares a column line with other row, + and two columns are read on each row. Blanks in the matrix don't matter, + so they are filtered out. + If there are two or more real keys pressed and they match columns with + at least two of another row's real keys, the row will be ignored. Keep in mind, + we are checking one row at a time, not all of them at once. + */ + for (uint8_t i = 0; i < MATRIX_ROWS; i++) { + if (i != row && popcount_more_than_one(get_real_keys(i, matrix_get_row(i)) & rowdata)) { + return true; + } + } + return false; +} + +#endif + +void disable_jtag(void) { +// To use PF4-7 (PC2-5 on ATmega32A), disable JTAG by writing JTD bit twice within four cycles. +#if (defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) || defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__)) + MCUCR |= _BV(JTD); + MCUCR |= _BV(JTD); +#elif defined(__AVR_ATmega32A__) + MCUCSR |= _BV(JTD); + MCUCSR |= _BV(JTD); +#endif +} + +/** \brief matrix_setup + * + * FIXME: needs doc + */ +__attribute__((weak)) void matrix_setup(void) {} + +/** \brief keyboard_pre_init_user + * + * FIXME: needs doc + */ +__attribute__((weak)) void keyboard_pre_init_user(void) {} + +/** \brief keyboard_pre_init_kb + * + * FIXME: needs doc + */ +__attribute__((weak)) void keyboard_pre_init_kb(void) { keyboard_pre_init_user(); } + +/** \brief keyboard_post_init_user + * + * FIXME: needs doc + */ + +__attribute__((weak)) void keyboard_post_init_user() {} + +/** \brief keyboard_post_init_kb + * + * FIXME: needs doc + */ + +__attribute__((weak)) void keyboard_post_init_kb(void) { keyboard_post_init_user(); } + +/** \brief keyboard_setup + * + * FIXME: needs doc + */ +void keyboard_setup(void) { +#ifndef NO_JTAG_DISABLE + disable_jtag(); +#endif + print_set_sendchar(sendchar); +#ifdef EEPROM_DRIVER + eeprom_driver_init(); +#endif + matrix_setup(); + keyboard_pre_init_kb(); +} + +#ifndef SPLIT_KEYBOARD + +/** \brief is_keyboard_master + * + * FIXME: needs doc + */ +__attribute__((weak)) bool is_keyboard_master(void) { return true; } + +/** \brief is_keyboard_left + * + * FIXME: needs doc + */ +__attribute__((weak)) bool is_keyboard_left(void) { return true; } + +#endif + +/** \brief should_process_keypress + * + * Override this function if you have a condition where keypresses processing should change: + * - splits where the slave side needs to process for rgb/oled functionality + */ +__attribute__((weak)) bool should_process_keypress(void) { return is_keyboard_master(); } + +/** \brief housekeeping_task_kb + * + * Override this function if you have a need to execute code for every keyboard main loop iteration. + * This is specific to keyboard-level functionality. + */ +__attribute__((weak)) void housekeeping_task_kb(void) {} + +/** \brief housekeeping_task_user + * + * Override this function if you have a need to execute code for every keyboard main loop iteration. + * This is specific to user/keymap-level functionality. + */ +__attribute__((weak)) void housekeeping_task_user(void) {} + +/** \brief housekeeping_task + * + * Invokes hooks for executing code after QMK is done after each loop iteration. + */ +void housekeeping_task(void) { + housekeeping_task_kb(); + housekeeping_task_user(); +} + +/** \brief keyboard_init + * + * FIXME: needs doc + */ +void keyboard_init(void) { + timer_init(); + sync_timer_init(); +#ifdef VIA_ENABLE + via_init(); +#endif + matrix_init(); +#if defined(CRC_ENABLE) + crc_init(); +#endif +#ifdef OLED_ENABLE + oled_init(OLED_ROTATION_0); +#endif +#ifdef ST7565_ENABLE + st7565_init(DISPLAY_ROTATION_0); +#endif +#ifdef PS2_MOUSE_ENABLE + ps2_mouse_init(); +#endif +#ifdef BACKLIGHT_ENABLE + backlight_init(); +#endif +#ifdef RGBLIGHT_ENABLE + rgblight_init(); +#endif +#ifdef ENCODER_ENABLE + encoder_init(); +#endif +#ifdef STENO_ENABLE + steno_init(); +#endif +#ifdef POINTING_DEVICE_ENABLE + pointing_device_init(); +#endif +#if defined(NKRO_ENABLE) && defined(FORCE_NKRO) + keymap_config.nkro = 1; + eeconfig_update_keymap(keymap_config.raw); +#endif +#ifdef DIP_SWITCH_ENABLE + dip_switch_init(); +#endif +#ifdef SLEEP_LED_ENABLE + sleep_led_init(); +#endif +#ifdef VIRTSER_ENABLE + virtser_init(); +#endif + +#if defined(DEBUG_MATRIX_SCAN_RATE) && defined(CONSOLE_ENABLE) + debug_enable = true; +#endif + + keyboard_post_init_kb(); /* Always keep this last */ +} + +/** \brief key_event_task + * + * This function is responsible for calling into other systems when they need to respond to electrical switch press events. + * This is differnet than keycode events as no layer processing, or filtering occurs. + */ +void switch_events(uint8_t row, uint8_t col, bool pressed) { +#if defined(LED_MATRIX_ENABLE) + process_led_matrix(row, col, pressed); +#endif +#if defined(RGB_MATRIX_ENABLE) + process_rgb_matrix(row, col, pressed); +#endif +} + +/** \brief Keyboard task: Do keyboard routine jobs + * + * Do routine keyboard jobs: + * + * * scan matrix + * * handle mouse movements + * * handle midi commands + * * light LEDs + * + * This is repeatedly called as fast as possible. + */ +void keyboard_task(void) { + static matrix_row_t matrix_prev[MATRIX_ROWS]; + static uint8_t led_status = 0; + matrix_row_t matrix_row = 0; + matrix_row_t matrix_change = 0; +#ifdef QMK_KEYS_PER_SCAN + uint8_t keys_processed = 0; +#endif +#ifdef ENCODER_ENABLE + bool encoders_changed = false; +#endif + + uint8_t matrix_changed = matrix_scan(); + if (matrix_changed) last_matrix_activity_trigger(); + + for (uint8_t r = 0; r < MATRIX_ROWS; r++) { + matrix_row = matrix_get_row(r); + matrix_change = matrix_row ^ matrix_prev[r]; + if (matrix_change) { +#ifdef MATRIX_HAS_GHOST + if (has_ghost_in_row(r, matrix_row)) { + continue; + } +#endif + if (debug_matrix) matrix_print(); + matrix_row_t col_mask = 1; + for (uint8_t c = 0; c < MATRIX_COLS; c++, col_mask <<= 1) { + if (matrix_change & col_mask) { + if (should_process_keypress()) { + action_exec((keyevent_t){ + .key = (keypos_t){.row = r, .col = c}, .pressed = (matrix_row & col_mask), .time = (timer_read() | 1) /* time should not be 0 */ + }); + } + // record a processed key + matrix_prev[r] ^= col_mask; + + switch_events(r, c, (matrix_row & col_mask)); + +#ifdef QMK_KEYS_PER_SCAN + // only jump out if we have processed "enough" keys. + if (++keys_processed >= QMK_KEYS_PER_SCAN) +#endif + // process a key per task call + goto MATRIX_LOOP_END; + } + } + } + } + // call with pseudo tick event when no real key event. +#ifdef QMK_KEYS_PER_SCAN + // we can get here with some keys processed now. + if (!keys_processed) +#endif + action_exec(TICK); + +MATRIX_LOOP_END: + +#ifdef DEBUG_MATRIX_SCAN_RATE + matrix_scan_perf_task(); +#endif + +#if defined(RGBLIGHT_ENABLE) + rgblight_task(); +#endif + +#ifdef LED_MATRIX_ENABLE + led_matrix_task(); +#endif +#ifdef RGB_MATRIX_ENABLE + rgb_matrix_task(); +#endif + +#if defined(BACKLIGHT_ENABLE) +# if defined(BACKLIGHT_PIN) || defined(BACKLIGHT_PINS) + backlight_task(); +# endif +#endif + +#ifdef ENCODER_ENABLE + encoders_changed = encoder_read(); + if (encoders_changed) last_encoder_activity_trigger(); +#endif + +#ifdef OLED_ENABLE + oled_task(); +# if OLED_TIMEOUT > 0 + // Wake up oled if user is using those fabulous keys or spinning those encoders! +# ifdef ENCODER_ENABLE + if (matrix_changed || encoders_changed) oled_on(); +# else + if (matrix_changed) oled_on(); +# endif +# endif +#endif + +#ifdef ST7565_ENABLE + st7565_task(); +# if ST7565_TIMEOUT > 0 + // Wake up display if user is using those fabulous keys or spinning those encoders! +# ifdef ENCODER_ENABLE + if (matrix_changed || encoders_changed) st7565_on(); +# else + if (matrix_changed) st7565_on(); +# endif +# endif +#endif + +#ifdef MOUSEKEY_ENABLE + // mousekey repeat & acceleration + mousekey_task(); +#endif + +#ifdef PS2_MOUSE_ENABLE + ps2_mouse_task(); +#endif + +#ifdef POINTING_DEVICE_ENABLE + pointing_device_task(); +#endif + +#ifdef MIDI_ENABLE + midi_task(); +#endif + +#ifdef VELOCIKEY_ENABLE + if (velocikey_enabled()) { + velocikey_decelerate(); + } +#endif + +#ifdef JOYSTICK_ENABLE + joystick_task(); +#endif + +#ifdef DIGITIZER_ENABLE + digitizer_task(); +#endif + +#ifdef PROGRAMMABLE_BUTTON_ENABLE + programmable_button_send(); +#endif + + // update LED + if (led_status != host_keyboard_leds()) { + led_status = host_keyboard_leds(); + keyboard_set_leds(led_status); + } +} + +/** \brief keyboard set leds + * + * FIXME: needs doc + */ +void keyboard_set_leds(uint8_t leds) { + if (debug_keyboard) { + debug("keyboard_set_led: "); + debug_hex8(leds); + debug("\n"); + } + led_set(leds); +} diff --git a/tmk_core/common/keyboard.h b/quantum/keyboard.h similarity index 100% rename from tmk_core/common/keyboard.h rename to quantum/keyboard.h diff --git a/quantum/keycode.h b/quantum/keycode.h new file mode 100644 index 000000000000..5948ad0d2512 --- /dev/null +++ b/quantum/keycode.h @@ -0,0 +1,586 @@ +/* +Copyright 2011,2012 Jun Wako <wakojun@gmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +/* + * Keycodes based on HID Keyboard/Keypad Usage Page (0x07) plus media keys from Generic Desktop Page (0x01) and Consumer Page (0x0C) + * + * See https://web.archive.org/web/20060218214400/http://www.usb.org/developers/devclass_docs/Hut1_12.pdf + * or http://www.usb.org/developers/hidpage/Hut1_12v2.pdf (older) + */ + +#pragma once + +/* FIXME: Add doxygen comments here */ + +#define IS_ERROR(code) (KC_ROLL_OVER <= (code) && (code) <= KC_UNDEFINED) +#define IS_ANY(code) (KC_A <= (code) && (code) <= 0xFF) +#define IS_KEY(code) (KC_A <= (code) && (code) <= KC_EXSEL) +#define IS_MOD(code) (KC_LEFT_CTRL <= (code) && (code) <= KC_RIGHT_GUI) + +#define IS_SPECIAL(code) ((0xA5 <= (code) && (code) <= 0xDF) || (0xE8 <= (code) && (code) <= 0xFF)) +#define IS_SYSTEM(code) (KC_PWR <= (code) && (code) <= KC_WAKE) +#define IS_CONSUMER(code) (KC_MUTE <= (code) && (code) <= KC_BRID) + +#define IS_FN(code) (KC_FN0 <= (code) && (code) <= KC_FN31) + +#define IS_MOUSEKEY(code) (KC_MS_UP <= (code) && (code) <= KC_MS_ACCEL2) +#define IS_MOUSEKEY_MOVE(code) (KC_MS_UP <= (code) && (code) <= KC_MS_RIGHT) +#define IS_MOUSEKEY_BUTTON(code) (KC_MS_BTN1 <= (code) && (code) <= KC_MS_BTN8) +#define IS_MOUSEKEY_WHEEL(code) (KC_MS_WH_UP <= (code) && (code) <= KC_MS_WH_RIGHT) +#define IS_MOUSEKEY_ACCEL(code) (KC_MS_ACCEL0 <= (code) && (code) <= KC_MS_ACCEL2) + +#define MOD_BIT(code) (1 << MOD_INDEX(code)) +#define MOD_INDEX(code) ((code)&0x07) + +#define MOD_MASK_CTRL (MOD_BIT(KC_LEFT_CTRL) | MOD_BIT(KC_RIGHT_CTRL)) +#define MOD_MASK_SHIFT (MOD_BIT(KC_LEFT_SHIFT) | MOD_BIT(KC_RIGHT_SHIFT)) +#define MOD_MASK_ALT (MOD_BIT(KC_LEFT_ALT) | MOD_BIT(KC_RIGHT_ALT)) +#define MOD_MASK_GUI (MOD_BIT(KC_LEFT_GUI) | MOD_BIT(KC_RIGHT_GUI)) +#define MOD_MASK_CS (MOD_MASK_CTRL | MOD_MASK_SHIFT) +#define MOD_MASK_CA (MOD_MASK_CTRL | MOD_MASK_ALT) +#define MOD_MASK_CG (MOD_MASK_CTRL | MOD_MASK_GUI) +#define MOD_MASK_SA (MOD_MASK_SHIFT | MOD_MASK_ALT) +#define MOD_MASK_SG (MOD_MASK_SHIFT | MOD_MASK_GUI) +#define MOD_MASK_AG (MOD_MASK_ALT | MOD_MASK_GUI) +#define MOD_MASK_CSA (MOD_MASK_CTRL | MOD_MASK_SHIFT | MOD_MASK_ALT) +#define MOD_MASK_CSG (MOD_MASK_CTRL | MOD_MASK_SHIFT | MOD_MASK_GUI) +#define MOD_MASK_CAG (MOD_MASK_CTRL | MOD_MASK_ALT | MOD_MASK_GUI) +#define MOD_MASK_SAG (MOD_MASK_SHIFT | MOD_MASK_ALT | MOD_MASK_GUI) +#define MOD_MASK_CSAG (MOD_MASK_CTRL | MOD_MASK_SHIFT | MOD_MASK_ALT | MOD_MASK_GUI) + +#define FN_BIT(code) (1 << FN_INDEX(code)) +#define FN_INDEX(code) ((code)-KC_FN0) +#define FN_MIN KC_FN0 +#define FN_MAX KC_FN31 + +// clang-format off + +/* + * Short names for ease of definition of keymap + */ +/* Transparent */ +#define KC_TRANSPARENT 0x01 +#define KC_TRNS KC_TRANSPARENT + +/* Punctuation */ +#define KC_ENT KC_ENTER +#define KC_ESC KC_ESCAPE +#define KC_BSPC KC_BACKSPACE +#define KC_SPC KC_SPACE +#define KC_MINS KC_MINUS +#define KC_EQL KC_EQUAL +#define KC_LBRC KC_LEFT_BRACKET +#define KC_RBRC KC_RIGHT_BRACKET +#define KC_BSLS KC_BACKSLASH +#define KC_NUHS KC_NONUS_HASH +#define KC_SCLN KC_SEMICOLON +#define KC_QUOT KC_QUOTE +#define KC_GRV KC_GRAVE +#define KC_COMM KC_COMMA +#define KC_SLSH KC_SLASH +#define KC_NUBS KC_NONUS_BACKSLASH + +/* Lock Keys */ +#define KC_CAPS KC_CAPS_LOCK +#define KC_SCRL KC_SCROLL_LOCK +#define KC_NUM KC_NUM_LOCK +#define KC_LCAP KC_LOCKING_CAPS_LOCK +#define KC_LNUM KC_LOCKING_NUM_LOCK +#define KC_LSCR KC_LOCKING_SCROLL_LOCK + +/* Commands */ +#define KC_PSCR KC_PRINT_SCREEN +#define KC_PAUS KC_PAUSE +#define KC_BRK KC_PAUSE +#define KC_INS KC_INSERT +#define KC_PGUP KC_PAGE_UP +#define KC_DEL KC_DELETE +#define KC_PGDN KC_PAGE_DOWN +#define KC_RGHT KC_RIGHT +#define KC_APP KC_APPLICATION +#define KC_EXEC KC_EXECUTE +#define KC_SLCT KC_SELECT +#define KC_AGIN KC_AGAIN]]]]]]]]]]]]] +#define KC_PSTE KC_PASTE +#define KC_ERAS KC_ALTERNATE_ERASE +#define KC_SYRQ KC_SYSTEM_REQUEST +#define KC_CNCL KC_CANCEL +#define KC_CLR KC_CLEAR +#define KC_PRIR KC_PRIOR +#define KC_RETN KC_RETURN +#define KC_SEPR KC_SEPARATOR +#define KC_CLAG KC_CLEAR_AGAIN +#define KC_CRSL KC_CRSEL +#define KC_EXSL KC_EXSEL + +/* Keypad */ +#define KC_PSLS KC_KP_SLASH +#define KC_PAST KC_KP_ASTERISK +#define KC_PMNS KC_KP_MINUS +#define KC_PPLS KC_KP_PLUS +#define KC_PENT KC_KP_ENTER +#define KC_P1 KC_KP_1 +#define KC_P2 KC_KP_2 +#define KC_P3 KC_KP_3 +#define KC_P4 KC_KP_4 +#define KC_P5 KC_KP_5 +#define KC_P6 KC_KP_6 +#define KC_P7 KC_KP_7 +#define KC_P8 KC_KP_8 +#define KC_P9 KC_KP_9 +#define KC_P0 KC_KP_0 +#define KC_PDOT KC_KP_DOT +#define KC_PEQL KC_KP_EQUAL +#define KC_PCMM KC_KP_COMMA + +/* Language Specific */ +#define KC_INT1 KC_INTERNATIONAL_1 +#define KC_INT2 KC_INTERNATIONAL_2 +#define KC_INT3 KC_INTERNATIONAL_3 +#define KC_INT4 KC_INTERNATIONAL_4 +#define KC_INT5 KC_INTERNATIONAL_5 +#define KC_INT6 KC_INTERNATIONAL_6 +#define KC_INT7 KC_INTERNATIONAL_7 +#define KC_INT8 KC_INTERNATIONAL_8 +#define KC_INT9 KC_INTERNATIONAL_9 +#define KC_LNG1 KC_LANGUAGE_1 +#define KC_LNG2 KC_LANGUAGE_2 +#define KC_LNG3 KC_LANGUAGE_3 +#define KC_LNG4 KC_LANGUAGE_4 +#define KC_LNG5 KC_LANGUAGE_5 +#define KC_LNG6 KC_LANGUAGE_6 +#define KC_LNG7 KC_LANGUAGE_7 +#define KC_LNG8 KC_LANGUAGE_8 +#define KC_LNG9 KC_LANGUAGE_9 + +/* Modifiers */ +#define KC_LCTL KC_LEFT_CTRL +#define KC_LSFT KC_LEFT_SHIFT +#define KC_LALT KC_LEFT_ALT +#define KC_LOPT KC_LEFT_ALT +#define KC_LGUI KC_LEFT_GUI +#define KC_LCMD KC_LEFT_GUI +#define KC_LWIN KC_LEFT_GUI +#define KC_RCTL KC_RIGHT_CTRL +#define KC_RSFT KC_RIGHT_SHIFT +#define KC_RALT KC_RIGHT_ALT +#define KC_ALGR KC_RIGHT_ALT +#define KC_ROPT KC_RIGHT_ALT +#define KC_RGUI KC_RIGHT_GUI +#define KC_RCMD KC_RIGHT_GUI +#define KC_RWIN KC_RIGHT_GUI + +/* Generic Desktop Page (0x01) */ +#define KC_PWR KC_SYSTEM_POWER +#define KC_SLEP KC_SYSTEM_SLEEP +#define KC_WAKE KC_SYSTEM_WAKE + +/* Consumer Page (0x0C) */ +#define KC_MUTE KC_AUDIO_MUTE +#define KC_VOLU KC_AUDIO_VOL_UP +#define KC_VOLD KC_AUDIO_VOL_DOWN +#define KC_MNXT KC_MEDIA_NEXT_TRACK +#define KC_MPRV KC_MEDIA_PREV_TRACK +#define KC_MSTP KC_MEDIA_STOP +#define KC_MPLY KC_MEDIA_PLAY_PAUSE +#define KC_MSEL KC_MEDIA_SELECT +#define KC_EJCT KC_MEDIA_EJECT +#define KC_CALC KC_CALCULATOR +#define KC_MYCM KC_MY_COMPUTER +#define KC_WSCH KC_WWW_SEARCH +#define KC_WHOM KC_WWW_HOME +#define KC_WBAK KC_WWW_BACK +#define KC_WFWD KC_WWW_FORWARD +#define KC_WSTP KC_WWW_STOP +#define KC_WREF KC_WWW_REFRESH +#define KC_WFAV KC_WWW_FAVORITES +#define KC_MFFD KC_MEDIA_FAST_FORWARD +#define KC_MRWD KC_MEDIA_REWIND +#define KC_BRIU KC_BRIGHTNESS_UP +#define KC_BRID KC_BRIGHTNESS_DOWN + +/* System Specific */ +#define KC_BRMU KC_PAUSE +#define KC_BRMD KC_SCROLL_LOCK + +/* Mouse Keys */ +#define KC_MS_U KC_MS_UP +#define KC_MS_D KC_MS_DOWN +#define KC_MS_L KC_MS_LEFT +#define KC_MS_R KC_MS_RIGHT +#define KC_BTN1 KC_MS_BTN1 +#define KC_BTN2 KC_MS_BTN2 +#define KC_BTN3 KC_MS_BTN3 +#define KC_BTN4 KC_MS_BTN4 +#define KC_BTN5 KC_MS_BTN5 +#define KC_BTN6 KC_MS_BTN6 +#define KC_BTN7 KC_MS_BTN7 +#define KC_BTN8 KC_MS_BTN8 +#define KC_WH_U KC_MS_WH_UP +#define KC_WH_D KC_MS_WH_DOWN +#define KC_WH_L KC_MS_WH_LEFT +#define KC_WH_R KC_MS_WH_RIGHT +#define KC_ACL0 KC_MS_ACCEL0 +#define KC_ACL1 KC_MS_ACCEL1 +#define KC_ACL2 KC_MS_ACCEL2 + +// clang-format on + +/* Keyboard/Keypad Page (0x07) */ +enum hid_keyboard_keypad_usage { + KC_NO = 0x00, + KC_ROLL_OVER, + KC_POST_FAIL, + KC_UNDEFINED, + KC_A, + KC_B, + KC_C, + KC_D, + KC_E, + KC_F, + KC_G, + KC_H, + KC_I, + KC_J, + KC_K, + KC_L, + KC_M, // 0x10 + KC_N, + KC_O, + KC_P, + KC_Q, + KC_R, + KC_S, + KC_T, + KC_U, + KC_V, + KC_W, + KC_X, + KC_Y, + KC_Z, + KC_1, + KC_2, + KC_3, // 0x20 + KC_4, + KC_5, + KC_6, + KC_7, + KC_8, + KC_9, + KC_0, + KC_ENTER, + KC_ESCAPE, + KC_BACKSPACE, + KC_TAB, + KC_SPACE, + KC_MINUS, + KC_EQUAL, + KC_LEFT_BRACKET, + KC_RIGHT_BRACKET, // 0x30 + KC_BACKSLASH, + KC_NONUS_HASH, + KC_SEMICOLON, + KC_QUOTE, + KC_GRAVE, + KC_COMMA, + KC_DOT, + KC_SLASH, + KC_CAPS_LOCK, + KC_F1, + KC_F2, + KC_F3, + KC_F4, + KC_F5, + KC_F6, + KC_F7, // 0x40 + KC_F8, + KC_F9, + KC_F10, + KC_F11, + KC_F12, + KC_PRINT_SCREEN, + KC_SCROLL_LOCK, + KC_PAUSE, + KC_INSERT, + KC_HOME, + KC_PAGE_UP, + KC_DELETE, + KC_END, + KC_PAGE_DOWN, + KC_RIGHT, + KC_LEFT, // 0x50 + KC_DOWN, + KC_UP, + KC_NUM_LOCK, + KC_KP_SLASH, + KC_KP_ASTERISK, + KC_KP_MINUS, + KC_KP_PLUS, + KC_KP_ENTER, + KC_KP_1, + KC_KP_2, + KC_KP_3, + KC_KP_4, + KC_KP_5, + KC_KP_6, + KC_KP_7, + KC_KP_8, // 0x60 + KC_KP_9, + KC_KP_0, + KC_KP_DOT, + KC_NONUS_BACKSLASH, + KC_APPLICATION, + KC_KB_POWER, + KC_KP_EQUAL, + KC_F13, + KC_F14, + KC_F15, + KC_F16, + KC_F17, + KC_F18, + KC_F19, + KC_F20, + KC_F21, // 0x70 + KC_F22, + KC_F23, + KC_F24, + KC_EXECUTE, + KC_HELP, + KC_MENU, + KC_SELECT, + KC_STOP, + KC_AGAIN, + KC_UNDO, + KC_CUT, + KC_COPY, + KC_PASTE, + KC_FIND, + KC_KB_MUTE, + KC_KB_VOLUME_UP, // 0x80 + KC_KB_VOLUME_DOWN, + KC_LOCKING_CAPS_LOCK, + KC_LOCKING_NUM_LOCK, + KC_LOCKING_SCROLL_LOCK, + KC_KP_COMMA, + KC_KP_EQUAL_AS400, + KC_INTERNATIONAL_1, + KC_INTERNATIONAL_2, + KC_INTERNATIONAL_3, + KC_INTERNATIONAL_4, + KC_INTERNATIONAL_5, + KC_INTERNATIONAL_6, + KC_INTERNATIONAL_7, + KC_INTERNATIONAL_8, + KC_INTERNATIONAL_9, + KC_LANGUAGE_1, // 0x90 + KC_LANGUAGE_2, + KC_LANGUAGE_3, + KC_LANGUAGE_4, + KC_LANGUAGE_5, + KC_LANGUAGE_6, + KC_LANGUAGE_7, + KC_LANGUAGE_8, + KC_LANGUAGE_9, + KC_ALTERNATE_ERASE, + KC_SYSTEM_REQUEST, + KC_CANCEL, + KC_CLEAR, + KC_PRIOR, + KC_RETURN, + KC_SEPARATOR, + KC_OUT, // 0xA0 + KC_OPER, + KC_CLEAR_AGAIN, + KC_CRSEL, + KC_EXSEL, + +#if 0 + // *************************************************************** + // These keycodes are present in the HID spec, but are * + // nonfunctional on modern OSes. QMK uses this range (0xA5-0xDF) * + // for the media and function keys instead - see below. * + // *************************************************************** + + KC_KP_00 = 0xB0, + KC_KP_000, + KC_THOUSANDS_SEPARATOR, + KC_DECIMAL_SEPARATOR, + KC_CURRENCY_UNIT, + KC_CURRENCY_SUB_UNIT, + KC_KP_LEFT_PARENTHESIS, + KC_KP_RIGHT_PARENTHESIS, + KC_KP_LEFT_BRACE, + KC_KP_RIGHT_BRACE, + KC_KP_TAB, + KC_KP_BACKSPACE, + KC_KP_A, + KC_KP_B, + KC_KP_C, + KC_KP_D, + KC_KP_E, //0xC0 + KC_KP_F, + KC_KP_XOR, + KC_KP_HAT, + KC_KP_PERCENT, + KC_KP_LESS_THAN, + KC_KP_GREATER_THAN, + KC_KP_AND, + KC_KP_LAZY_AND, + KC_KP_OR, + KC_KP_LAZY_OR, + KC_KP_COLON, + KC_KP_HASH, + KC_KP_SPACE, + KC_KP_AT, + KC_KP_EXCLAMATION, + KC_KP_MEM_STORE, //0xD0 + KC_KP_MEM_RECALL, + KC_KP_MEM_CLEAR, + KC_KP_MEM_ADD, + KC_KP_MEM_SUB, + KC_KP_MEM_MUL, + KC_KP_MEM_DIV, + KC_KP_PLUS_MINUS, + KC_KP_CLEAR, + KC_KP_CLEAR_ENTRY, + KC_KP_BINARY, + KC_KP_OCTAL, + KC_KP_DECIMAL, + KC_KP_HEXADECIMAL, +#endif + + /* Modifiers */ + KC_LEFT_CTRL = 0xE0, + KC_LEFT_SHIFT, + KC_LEFT_ALT, + KC_LEFT_GUI, + KC_RIGHT_CTRL, + KC_RIGHT_SHIFT, + KC_RIGHT_ALT, + KC_RIGHT_GUI + + // ********************************************** + // * 0xF0-0xFF are unallocated in the HID spec. * + // * QMK uses these for Mouse Keys - see below. * + // ********************************************** +}; + +/* Media and Function keys */ +enum internal_special_keycodes { + /* Generic Desktop Page (0x01) */ + KC_SYSTEM_POWER = 0xA5, + KC_SYSTEM_SLEEP, + KC_SYSTEM_WAKE, + + /* Consumer Page (0x0C) */ + KC_AUDIO_MUTE, + KC_AUDIO_VOL_UP, + KC_AUDIO_VOL_DOWN, + KC_MEDIA_NEXT_TRACK, + KC_MEDIA_PREV_TRACK, + KC_MEDIA_STOP, + KC_MEDIA_PLAY_PAUSE, + KC_MEDIA_SELECT, + KC_MEDIA_EJECT, // 0xB0 + KC_MAIL, + KC_CALCULATOR, + KC_MY_COMPUTER, + KC_WWW_SEARCH, + KC_WWW_HOME, + KC_WWW_BACK, + KC_WWW_FORWARD, + KC_WWW_STOP, + KC_WWW_REFRESH, + KC_WWW_FAVORITES, + KC_MEDIA_FAST_FORWARD, + KC_MEDIA_REWIND, + KC_BRIGHTNESS_UP, + KC_BRIGHTNESS_DOWN, + + /* Fn keys */ + KC_FN0 = 0xC0, + KC_FN1, + KC_FN2, + KC_FN3, + KC_FN4, + KC_FN5, + KC_FN6, + KC_FN7, + KC_FN8, + KC_FN9, + KC_FN10, + KC_FN11, + KC_FN12, + KC_FN13, + KC_FN14, + KC_FN15, + KC_FN16, // 0xD0 + KC_FN17, + KC_FN18, + KC_FN19, + KC_FN20, + KC_FN21, + KC_FN22, + KC_FN23, + KC_FN24, + KC_FN25, + KC_FN26, + KC_FN27, + KC_FN28, + KC_FN29, + KC_FN30, + KC_FN31 +}; + +enum mouse_keys { +/* Mouse Buttons */ +#ifdef VIA_ENABLE + KC_MS_UP = 0xF0, +#else + KC_MS_UP = 0xED, +#endif + KC_MS_DOWN, + KC_MS_LEFT, + KC_MS_RIGHT, // 0xF0 + KC_MS_BTN1, + KC_MS_BTN2, + KC_MS_BTN3, + KC_MS_BTN4, + KC_MS_BTN5, +#ifdef VIA_ENABLE + KC_MS_BTN6 = KC_MS_BTN5, + KC_MS_BTN7 = KC_MS_BTN5, + KC_MS_BTN8 = KC_MS_BTN5, +#else + KC_MS_BTN6, + KC_MS_BTN7, + KC_MS_BTN8, +#endif + + /* Mouse Wheel */ + KC_MS_WH_UP, + KC_MS_WH_DOWN, + KC_MS_WH_LEFT, + KC_MS_WH_RIGHT, + + /* Acceleration */ + KC_MS_ACCEL0, + KC_MS_ACCEL1, + KC_MS_ACCEL2 // 0xFF +}; + +#include "keycode_legacy.h" diff --git a/quantum/keycode_config.c b/quantum/keycode_config.c index f340905eab83..dd2a17e2421b 100644 --- a/quantum/keycode_config.c +++ b/quantum/keycode_config.c @@ -25,89 +25,89 @@ extern keymap_config_t keymap_config; */ uint16_t keycode_config(uint16_t keycode) { switch (keycode) { - case KC_CAPSLOCK: - case KC_LOCKING_CAPS: + case KC_CAPS_LOCK: + case KC_LOCKING_CAPS_LOCK: if (keymap_config.swap_control_capslock || keymap_config.capslock_to_control) { - return KC_LCTL; + return KC_LEFT_CTRL; } return keycode; - case KC_LCTL: + case KC_LEFT_CTRL: if (keymap_config.swap_control_capslock) { - return KC_CAPSLOCK; + return KC_CAPS_LOCK; } if (keymap_config.swap_lctl_lgui) { if (keymap_config.no_gui) { return KC_NO; } - return KC_LGUI; + return KC_LEFT_GUI; } - return KC_LCTL; - case KC_LALT: + return KC_LEFT_CTRL; + case KC_LEFT_ALT: if (keymap_config.swap_lalt_lgui) { if (keymap_config.no_gui) { return KC_NO; } - return KC_LGUI; + return KC_LEFT_GUI; } - return KC_LALT; - case KC_LGUI: + return KC_LEFT_ALT; + case KC_LEFT_GUI: if (keymap_config.swap_lalt_lgui) { - return KC_LALT; + return KC_LEFT_ALT; } if (keymap_config.swap_lctl_lgui) { - return KC_LCTRL; + return KC_LEFT_CTRL; } if (keymap_config.no_gui) { return KC_NO; } - return KC_LGUI; - case KC_RCTL: + return KC_LEFT_GUI; + case KC_RIGHT_CTRL: if (keymap_config.swap_rctl_rgui) { if (keymap_config.no_gui) { return KC_NO; } - return KC_RGUI; + return KC_RIGHT_GUI; } - return KC_RCTL; - case KC_RALT: + return KC_RIGHT_CTRL; + case KC_RIGHT_ALT: if (keymap_config.swap_ralt_rgui) { if (keymap_config.no_gui) { return KC_NO; } - return KC_RGUI; + return KC_RIGHT_GUI; } - return KC_RALT; - case KC_RGUI: + return KC_RIGHT_ALT; + case KC_RIGHT_GUI: if (keymap_config.swap_ralt_rgui) { - return KC_RALT; + return KC_RIGHT_ALT; } if (keymap_config.swap_rctl_rgui) { - return KC_RCTL; + return KC_RIGHT_CTRL; } if (keymap_config.no_gui) { return KC_NO; } - return KC_RGUI; + return KC_RIGHT_GUI; case KC_GRAVE: if (keymap_config.swap_grave_esc) { - return KC_ESC; + return KC_ESCAPE; } return KC_GRAVE; - case KC_ESC: + case KC_ESCAPE: if (keymap_config.swap_grave_esc) { return KC_GRAVE; } - return KC_ESC; - case KC_BSLASH: + return KC_ESCAPE; + case KC_BACKSLASH: if (keymap_config.swap_backslash_backspace) { - return KC_BSPACE; + return KC_BACKSPACE; } - return KC_BSLASH; - case KC_BSPACE: + return KC_BACKSLASH; + case KC_BACKSPACE: if (keymap_config.swap_backslash_backspace) { - return KC_BSLASH; + return KC_BACKSLASH; } - return KC_BSPACE; + return KC_BACKSPACE; default: return keycode; } diff --git a/quantum/keycode_legacy.h b/quantum/keycode_legacy.h new file mode 100644 index 000000000000..0317a05534df --- /dev/null +++ b/quantum/keycode_legacy.h @@ -0,0 +1,53 @@ +#pragma once + +// clang-format off + +// These keycode names have been deprecated + +#define KC_BSPACE KC_BACKSPACE +#define KC_LBRACKET KC_LEFT_BRACKET +#define KC_RBRACKET KC_RIGHT_BRACKET +#define KC_BSLASH KC_BACKSLASH +#define KC_SCOLON KC_SEMICOLON +#define KC_CAPSLOCK KC_CAPS_LOCK +#define KC_PSCREEN KC_PRINT_SCREEN +#define KC_SCROLLLOCK KC_SCROLL_LOCK +#define KC_PGDOWN KC_PAGE_DOWN +#define KC_NUMLOCK KC_NUM_LOCK +#define KC_NONUS_BSLASH KC_NONUS_BACKSLASH +#define KC_POWER KC_KB_POWER +#define KC__MUTE KC_KB_MUTE +#define KC__VOLUP KC_KB_VOLUME_UP +#define KC__VOLDOWN KC_KB_VOLUME_DOWN +#define KC_LOCKING_CAPS KC_LOCKING_CAPS_LOCK +#define KC_LOCKING_NUM KC_LOCKING_NUM_LOCK +#define KC_LOCKING_SCROLL KC_LOCKING_SCROLL_LOCK +#define KC_LANG1 KC_LANGUAGE_1 +#define KC_LANG2 KC_LANGUAGE_2 +#define KC_LANG3 KC_LANGUAGE_3 +#define KC_LANG4 KC_LANGUAGE_4 +#define KC_LANG5 KC_LANGUAGE_5 +#define KC_LANG6 KC_LANGUAGE_6 +#define KC_LANG7 KC_LANGUAGE_7 +#define KC_LANG8 KC_LANGUAGE_8 +#define KC_LANG9 KC_LANGUAGE_9 +#define KC_ALT_ERASE KC_ALTERNATE_ERASE +#define KC_SYSREQ KC_SYSTEM_REQUEST + +#define KC_LCTRL KC_LEFT_CTRL +#define KC_LSHIFT KC_LEFT_SHIFT +#define KC_RCTRL KC_RIGHT_CTRL +#define KC_RSHIFT KC_RIGHT_SHIFT + +#define KC_ZKHK KC_GRAVE +#define KC_RO KC_INTERNATIONAL_1 +#define KC_KANA KC_INTERNATIONAL_2 +#define KC_JYEN KC_INTERNATIONAL_3 +#define KC_HENK KC_INTERNATIONAL_4 +#define KC_MHEN KC_INTERNATIONAL_5 +#define KC_HAEN KC_LANGUAGE_1 +#define KC_HANJ KC_LANGUAGE_2 + +#define KC_CLCK KC_CAPS_LOCK +#define KC_SLCK KC_SCROLL_LOCK +#define KC_NLCK KC_NUM_LOCK diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c index 570d4798debe..5007f15f1116 100644 --- a/quantum/keymap_common.c +++ b/quantum/keymap_common.c @@ -19,10 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #include "report.h" #include "keycode.h" #include "action_layer.h" -#if defined(__AVR__) -# include <util/delay.h> -# include <stdio.h> -#endif #include "action.h" #include "action_macro.h" #include "debug.h" @@ -44,7 +40,10 @@ extern keymap_config_t keymap_config; action_t action_for_key(uint8_t layer, keypos_t key) { // 16bit keycodes - important uint16_t keycode = keymap_key_to_keycode(layer, key); + return action_for_keycode(keycode); +}; +action_t action_for_keycode(uint16_t keycode) { // keycode remapping keycode = keycode_config(keycode); @@ -57,7 +56,7 @@ action_t action_for_key(uint8_t layer, keypos_t key) { switch (keycode) { case KC_A ... KC_EXSEL: - case KC_LCTRL ... KC_RGUI: + case KC_LEFT_CTRL ... KC_RIGHT_GUI: action.code = ACTION_KEY(keycode); break; #ifdef EXTRAKEY_ENABLE @@ -73,7 +72,7 @@ action_t action_for_key(uint8_t layer, keypos_t key) { action.code = ACTION_MOUSEKEY(keycode); break; #endif - case KC_TRNS: + case KC_TRANSPARENT: action.code = ACTION_TRANSPARENT; break; case QK_MODS ... QK_MODS_MAX:; diff --git a/quantum/keymap_extras/keymap_belgian.h b/quantum/keymap_extras/keymap_belgian.h index b65db0532b85..207905b2917d 100644 --- a/quantum/keymap_extras/keymap_belgian.h +++ b/quantum/keymap_extras/keymap_belgian.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ² │ & │ é │ " │ ' │ ( │ § │ è │ ! │ ç │ à │ ) │ - │       │ + * │ ² │ & │ é │ " │ ' │ ( │ § │ è │ ! │ ç │ à │ ) │ - │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ A │ Z │ E │ R │ T │ Y │ U │ I │ O │ P │ ^ │ $ │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ Q │ S │ D │ F │ G │ H │ J │ K │ L │ M │ ù │ µ │    │ + * │ │ A │ Z │ E │ R │ T │ Y │ U │ I │ O │ P │ ^ │ $ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ Q │ S │ D │ F │ G │ H │ J │ K │ L │ M │ ù │ µ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ < │ W │ X │ C │ V │ B │ N │ , │ ; │ : │ = │          │ + * │ │ < │ W │ X │ C │ V │ B │ N │ , │ ; │ : │ = │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -88,15 +88,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ³ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ° │ _ │       │ + * │ ³ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ° │ _ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │ ¨ │ * │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │ % │ £ │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ ¨ │ * │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ % │ £ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ > │   │   │   │   │   │   │ ? │ . │ / │ + │          │ + * │ │ > │ │ │ │ │ │ │ ? │ . │ / │ + │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -128,15 +128,15 @@ /* AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │   │ | │ @ │ # │   │   │ ^ │   │   │ { │ } │   │   │       │ + * │ │ | │ @ │ # │ │ │ ^ │ │ │ { │ } │ │ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │ € │   │   │   │   │   │   │   │ [ │ ] │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │ ´ │ ` │    │ + * │ │ │ │ € │ │ │ │ │ │ │ │ [ │ ] │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ ´ │ ` │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ \ │   │   │   │   │   │   │   │   │   │ ~ │          │ + * │ │ \ │ │ │ │ │ │ │ │ │ │ ~ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -156,16 +156,3 @@ // Row 4 #define BE_BSLS ALGR(BE_LABK) // (backslash) #define BE_TILD ALGR(BE_EQL) // ~ - -// DEPRECATED -#define BE_AMP BE_AMPR -#define BE_APOS BE_QUOT -#define BE_PARA BE_SECT -#define BE_MU BE_MICR -#define BE_LESS BE_LABK -#define BE_OVRR BE_DEG -#define BE_UMLT BE_DIAE -#define BE_GRTR BE_RABK -#define BE_LSBR BE_LBRC -#define BE_RSBR BE_RBRC -#define BE_TILT BE_TILD diff --git a/quantum/keymap_extras/keymap_bepo.h b/quantum/keymap_extras/keymap_bepo.h index ea04aed3c1d0..72d5b81f3241 100644 --- a/quantum/keymap_extras/keymap_bepo.h +++ b/quantum/keymap_extras/keymap_bepo.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ $ │ " │ « │ » │ ( │ ) │ @ │ + │ - │ / │ * │ = │ % │       │ + * │ $ │ " │ « │ » │ ( │ ) │ @ │ + │ - │ / │ * │ = │ % │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ B │ É │ P │ O │ È │ ^ │ V │ D │ L │ J │ Z │ W │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ A │ U │ I │ E │ , │ C │ T │ S │ R │ N │ M │ Ç │    │ + * │ │ B │ É │ P │ O │ È │ ^ │ V │ D │ L │ J │ Z │ W │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ A │ U │ I │ E │ , │ C │ T │ S │ R │ N │ M │ Ç │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ Ê │ À │ Y │ X │ . │ K │ ' │ Q │ G │ H │ F │          │ + * │ │ Ê │ À │ Y │ X │ . │ K │ ' │ Q │ G │ H │ F │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -88,15 +88,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ # │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ° │ ` │       │ + * │ # │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ° │ ` │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │ ! │   │   │   │   │   │   │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │ ; │   │   │   │   │   │   │   │    │ + * │ │ │ │ │ │ │ ! │ │ │ │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ ; │ │ │ │ │ │ │ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │   │   │   │   │ : │   │ ? │   │   │   │   │          │ + * │ │ │ │ │ │ : │ │ ? │ │ │ │ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -121,19 +121,19 @@ #define BP_COLN S(BP_DOT) // : #define BP_QUES S(BP_QUOT) // ? // Row 5 -#define BP_NBSP S(KC_SPC) // (non-breaking space) +#define BP_NBSP S(KC_SPC) //   (non-breaking space) /* AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ – │ — │ < │ > │ [ │ ] │ ^ │ ± │ − │ ÷ │ × │ ≠ │ ‰ │       │ + * │ – │ — │ < │ > │ [ │ ] │ ^ │ ± │ − │ ÷ │ × │ ≠ │ ‰ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ | │ ´ │ & │ Œ │ ` │ ¡ │ ˇ │ Ð │ / │ IJ │ Ə │ ˘ │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ Æ │ Ù │ ¨ │ € │   │ © │ Þ │ ẞ │ ® │ ~ │ ¯ │ ¸ │    │ + * │ │ | │ ´ │ & │ Œ │ ` │ ¡ │ ˇ │ Ð │ / │ IJ │ Ə │ ˘ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ Æ │ Ù │ ¨ │ € │ │ © │ Þ │ ẞ │ ® │ ~ │ ¯ │ ¸ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │   │ \ │ { │ } │ … │ ~ │ ¿ │ ° │   │ † │ ˛ │          │ + * │ │ │ \ │ { │ } │ … │ ~ │ ¿ │ ° │ │ † │ ˛ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │           _            │    │    │    │    │ + * │ │ │ │ _ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -181,7 +181,7 @@ #define BP_RCBR ALGR(BP_X) // } #define BP_ELLP ALGR(BP_DOT) // … #define BP_TILD ALGR(BP_K) // ~ -#define BP_IQUE ALGR(BP_QEST) // ¿ +#define BP_IQUE ALGR(BP_QUES) // ¿ #define BP_RNGA ALGR(BP_Q) // ° (dead) #define BP_DGRK ALGR(BP_G) // µ (dead Greek key) #define BP_DAGG ALGR(BP_H) // † @@ -191,15 +191,15 @@ /* Shift+AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ¶ │ „ │ “ │ ” │ ≤ │ ≥ │   │ ¬ │ ¼ │ ½ │ ¾ │ ′ │ ″ │       │ + * │ ¶ │ „ │ “ │ ” │ ≤ │ ≥ │ │ ¬ │ ¼ │ ½ │ ¾ │ ′ │ ″ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ ¦ │ ˝ │ § │   │   │   │   │   │   │   │   │   │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │ ˙ │ ¤ │ ̛  │ ſ │   │   │ ™ │   │ º │ , │    │ + * │ │ ¦ │ ˝ │ § │ │ │ │ │ │ │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ ˙ │ ¤ │ ̛ │ ſ │ │ │ ™ │ │ º │ , │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │   │   │ ‘ │ ’ │ · │ ⌨ │ ̉  │ ̣  │   │ ‡ │ ª │          │ + * │ │ │ │ ‘ │ ’ │ · │ ⌨ │ ̉ │ ̣ │ │ ‡ │ ª │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -237,169 +237,4 @@ #define BP_DDAG S(ALGR(BP_H)) // ‡ #define BP_FORD S(ALGR(BP_F)) // ª // Row 5 -#define BP_NNBS S(ALGR(BP_)) // (narrow non-breaking space) - -// DEPRECATED -#define BP_DOLLAR BP_DLR -#define BP_DOUBLE_QUOTE BP_DQUO -#define BP_DQOT BP_DQUO -#define BP_LEFT_GUILLEMET BP_LDAQ -#define BP_LGIL BP_LDAQ -#define BP_RIGHT_GUILLEMET BP_RDAQ -#define BP_RGIL BP_RDAQ -#define BP_LEFT_PAREN BP_LPRN -#define BP_RIGHT_PAREN BP_RPRN -#define BP_MINUS BP_MINS -#define BP_SLASH BP_SLSH -#define BP_ASTERISK BP_ASTR -#define BP_EQUAL BP_EQL -#define BP_PERCENT BP_PERC -#define BP_E_ACUTE BP_EACU -#define BP_ECUT BP_EACU -#define BP_E_GRAVE BP_EGRV -#define BP_DEAD_CIRCUMFLEX BP_DCIR -#define BP_DCRC BP_DCIR -#define BP_COMMA BP_COMM -#define BP_C_CEDILLA BP_CCED -#define BP_E_CIRCUMFLEX BP_ECIR -#define BP_ECRC BP_ECIR -#define BP_A_GRAVE BP_AGRV -#define BP_APOSTROPHE BP_QUOT -#define BP_APOS BP_QUOT -#define BP_DEGREE BP_DEG -#define BP_DEGR BP_DEG -#define BP_GRAVE BP_GRV -#define BP_EXCLAIM BP_EXLM -#define BP_SCOLON BP_SCLN -#define BP_COLON BP_COLN -#define BP_QUESTION BP_QUES -#define BP_QEST BP_QUES -#define BP_NON_BREAKING_SPACE BP_NBSP -#define BP_EN_DASH BP_NDSH -#define BP_EM_DASH BP_MDSH -#define BP_LESS BP_LABK -#define BP_GREATER BP_RABK -#define BP_GRTR BP_RABK -#define BP_LBRACKET BP_LBRC -#define BP_RBRACKET BP_RBRC -#define BP_CIRCUMFLEX CIRC -#define BP_PLUS_MINUS BP_PLMN -#define BP_PSMS BP_PLMN -#define BP_MATH_MINUS BP_MMNS -#define BP_OBELUS BP_DIV -#define BP_OBEL BP_DIV -#define BP_DIVISION_SIGN BP_DIV -#define BP_DVSN BP_DIV -#define BP_TIMES BP_MUL -#define BP_TIMS BP_MUL -#define BP_DIFFERENT BP_NEQL -#define BP_DIFF BP_NEQL -#define BP_PERMILLE BP_PERM -#define BP_PMIL BP_PERM -#define BP_DEAD_ACUTE BP_ACUT -#define BP_DACT BP_ACUT -#define BP_AMPERSAND BP_AMPR -#define BP_OE_LIGATURE BP_OE -#define BP_DEAD_GRAVE BP_DGRV -#define BP_INVERTED_EXCLAIM BP_IEXL -#define BP_IXLM BP_IEXL -#define BP_DEAD_CARON BP_CARN -#define BP_DCAR BP_CARN -#define BP_DEAD_SLASH BP_DSLS -#define BP_DSLH BP_DSLS -#define BP_IJ_LIGATURE BP_IJ -#define BP_SCHWA BP_SCHW -#define BP_SCWA BP_SCHW -#define BP_DEAD_BREVE BP_BREV -#define BP_DBRV BP_BREV -#define BP_AE_LIGATURE BP_AE -#define BP_U_GRAVE BP_UGRV -#define BP_DEAD_TREMA BP_DIAE -#define BP_DTRM BP_DIAE -#define BP_TYPOGRAPHICAL_APOSTROPHE BP_COMM -#define BP_TAPO BP_COMM -#define BP_COPYRIGHT BP_COPY -#define BP_CPRT BP_COPY -#define BP_THORN BP_THRN -#define BP_SHARP_S BP_SS -#define BP_SRPS BP_SS -#define BP_REGISTERED_TRADEMARK BP_REGD -#define BP_RTM BP_REGD -#define BP_DEAD_TILDE BP_DTIL -#define BP_DTLD BP_DTIL -#define BP_DEAD_MACRON BP_MACR -#define BP_DMCR BP_MACR -#define BP_DEAD_CEDILLA BP_CEDL -#define BP_DCED BP_CEDL -#define BP_NONUS_SLASH BP_SLSH -#define BP_NUSL BP_SLSH -#define BP_BACKSLASH BP_BSLS -#define BP_LEFT_CURLY_BRACE BP_LCBR -#define BP_RIGHT_CURLY_BRACE BP_RCBR -#define BP_ELLIPSIS BP_ELLP -#define BP_ELPS BP_ELLP -#define BP_TILDE BP_TILD -#define BP_INVERTED_QUESTION BP_IQUE -#define BP_IQST BP_IQUE -#define BP_DEAD_RING BP_RNGA -#define BP_DRNG BP_RNGA -#define BP_DEAD_GREEK BP_DGRK -#define BP_DAGGER BP_DAGG -#define BP_DAGR BP_DAGG -#define BP_DEAD_OGONEK BP_OGON -#define BP_DOGO BP_OGON -#define BP_UNDERSCORE BP_UNDS -#define BP_PARAGRAPH BP_PARA -#define BP_PARG BP_PARA -#define BP_LOW_DOUBLE_QUOTE BP_DLQU -#define BP_LWQT BP_DLQU -#define BP_LEFT_DOUBLE_QUOTE BP_RDQU -#define BP_RIGHT_DOUBLE_QUOTE BP_RDQU -#define BP_LESS_OR_EQUAL BP_LEQL -#define BP_GREATER_OR_EQUAL BP_GEQL -#define BP_NEGATION BP_NOT -#define BP_NEGT BP_NOT -#define BP_ONE_QUARTER BP_QRTR -#define BP_1QRT BP_QRTR -#define BP_ONE_HALF BP_HALF -#define BP_1HLF BP_HALF -#define BP_THREE_QUARTERS TQTR -#define BP_3QRT BP_TQTR -#define BP_MINUTES BP_PRIM -#define BP_MNUT BP_PRIM -#define BP_SECONDS BP_DPRM -#define BP_SCND BP_DPRM -#define BP_BROKEN_PIPE BP_BRKP -#define BP_BPIP BP_BRKP -#define BP_DEAD_DOUBLE_ACUTE BP_DACU -#define BP_DDCT BP_DACU -#define BP_SECTION BP_SECT -#define BP_GRAVE_BIS BP_GRV -#define BP_GRVB BP_GRV -#define BP_DEAD_DOT_ABOVE BP_DOTA -#define BP_DDTA BP_DOTA -#define BP_DEAD_CURRENCY BP_CURR -#define BP_DCUR BP_CURR -#define BP_DEAD_HORN BP_HORN -#define BP_DHRN BP_HORN -#define BP_LONG_S BP_LNGS -#define BP_TRADEMARK BP_TM -#define BP_ORDINAL_INDICATOR_O MORD -#define BP_ORDO BP_MORD -#define BP_DEAD_COMMA BP_DCMM -#define BP_DCOM BP_DCMM -#define BP_LEFT_QUOTE BP_LSQU -#define BP_LQOT BP_LSQU -#define BP_RIGHT_QUOTE BP_RSQU -#define BP_RQOT BP_RSQU -#define BP_INTERPUNCT BP_MDDT -#define BP_IPCT BP_MDDT -#define BP_DEAD_HOOK_ABOVE BP_HOKA -#define BP_DHKA BP_HOKA -#define BP_DEAD_UNDERDOT BP_DOTB -#define BP_DUDT BP_DOTB -#define BP_DOUBLE_DAGGER BP_DDAG -#define BP_DDGR BP_DDAG -#define BP_ORDINAL_INDICATOR_A BP_FORD -#define BP_ORDA BP_FORD -#define BP_NARROW_NON_BREAKING_SPACE BP_NNBS +#define BP_NNBS S(ALGR(BP_)) //   (narrow non-breaking space) diff --git a/quantum/keymap_extras/keymap_br_abnt2.h b/quantum/keymap_extras/keymap_br_abnt2.h index 9d83fdf4e367..e91718013a1c 100644 --- a/quantum/keymap_extras/keymap_br_abnt2.h +++ b/quantum/keymap_extras/keymap_br_abnt2.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ' │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │       │ + * │ ' │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ ´ │ [ │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Ç │ ~ │ ] │    │ + * │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ ´ │ [ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Ç │ ~ │ ] │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┤ - * │    │ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ ; │ / │      │ + * │ │ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ ; │ / │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬──┴─┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -92,15 +92,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ " │ ! │ @ │ # │ $ │ % │ ¨ │ & │ * │ ( │ ) │ _ │ + │       │ + * │ " │ ! │ @ │ # │ $ │ % │ ¨ │ & │ * │ ( │ ) │ _ │ + │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │ ` │ { │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │ ^ │ } │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ ` │ { │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ ^ │ } │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┤ - * │    │ | │   │   │   │   │   │   │   │ < │ > │ : │ ? │      │ + * │ │ | │ │ │ │ │ │ │ │ < │ > │ : │ ? │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬──┴─┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -132,15 +132,15 @@ /* AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │   │ ¹ │ ² │ ³ │ £ │ ¢ │ ¬ │   │   │   │   │   │ § │       │ + * │ │ ¹ │ ² │ ³ │ £ │ ¢ │ ¬ │ │ │ │ │ │ § │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │ ° │   │   │   │   │   │   │   │   │ ª │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │   │ º │    │ + * │ │ │ │ ° │ │ │ │ │ │ │ │ │ ª │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ º │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┤ - * │    │   │   │   │ ₢ │   │   │   │   │   │   │   │   │      │ + * │ │ │ │ │ ₢ │ │ │ │ │ │ │ │ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬──┴─┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -158,23 +158,3 @@ #define BR_MORD ALGR(BR_RBRC) // º // Row 4 #define BR_CRUZ ALGR(BR_C) // ₢ - -// DEPRECATED -#define BR_CCDL BR_CCED -#define BR_DQT BR_DQUO -#define BR_TRMA BR_DIAE -#define BR_GRAV BR_GRV -#define BR_KPDT BR_PDOT -#define BR_KPCM BR_PCMM -#define BR_1UP BR_SUP1 -#define BR_2UP BR_SUP2 -#define BR_3UP BR_SUP3 -#define BR_ASLS BR_SLSH -#define BR_AQST BR_QUES - -// Not present on Windows 10? -#define BR_NDTD ALGR(BR_TILD) // ~ -#define BR_NDAC ALGR(BR_ACUT) // ´ -#define BR_NDGV ALGR(BR_QUOT) // ` -#define BR_NDCR ALGR(BR_CIRC) // ^ -#define BR_NDTR ALGR(BR_DIAE) // ¨ diff --git a/quantum/keymap_extras/keymap_canadian_multilingual.h b/quantum/keymap_extras/keymap_canadian_multilingual.h index bb8e44d54622..e328cf65e6d5 100644 --- a/quantum/keymap_extras/keymap_canadian_multilingual.h +++ b/quantum/keymap_extras/keymap_canadian_multilingual.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ / │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │       │ + * │ / │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ ^ │ Ç │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ È │ À │    │ + * │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ ^ │ Ç │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ È │ À │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ Ù │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ É │          │ + * │ │ Ù │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ É │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -88,15 +88,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ \ │ ! │ @ │ # │ $ │ % │ ? │ & │ * │ ( │ ) │ _ │ + │       │ + * │ \ │ ! │ @ │ # │ $ │ % │ ? │ & │ * │ ( │ ) │ _ │ + │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │ ¨ │   │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │ : │   │   │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ ¨ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ : │ │ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │   │   │   │   │   │   │   │   │ ' │ " │   │          │ + * │ │ │ │ │ │ │ │ │ │ ' │ " │ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -123,15 +123,15 @@ /* AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ | │   │   │   │ ¤ │   │   │ { │ } │ [ │ ] │   │ ¬ │       │ + * │ | │ │ │ │ ¤ │ │ │ { │ } │ [ │ ] │ │ ¬ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │ € │   │   │   │   │   │   │   │ ` │ ~ │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │ ° │   │   │    │ + * │ │ │ │ € │ │ │ │ │ │ │ │ ` │ ~ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ ° │ │ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │   │ « │ » │   │   │   │   │   │ < │ > │   │          │ + * │ │ │ « │ » │ │ │ │ │ │ < │ > │ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -156,15 +156,15 @@ /* Right Ctrl symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │   │ ¹ │ ² │ ³ │ ¼ │ ½ │ ¾ │   │   │   │   │   │ ¸ │       │ + * │ │ ¹ │ ² │ ³ │ ¼ │ ½ │ ¾ │ │ │ │ │ │ ¸ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ Ω │ Ł │ Œ │ ¶ │ Ŧ │ ← │ ↓ │ → │ Ø │ Þ │   │ ~ │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ Æ │ ß │ Ð │   │ Ŋ │ Ħ │ IJ │ ĸ │ Ŀ │ ´ │   │   │    │ + * │ │ Ω │ Ł │ Œ │ ¶ │ Ŧ │ ← │ ↓ │ → │ Ø │ Þ │ │ ~ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ Æ │ ß │ Ð │ │ Ŋ │ Ħ │ IJ │ ĸ │ Ŀ │ ´ │ │ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │   │   │   │ ¢ │ “ │ ” │ ʼn │ μ │ ― │ ˙ │   │          │ + * │ │ │ │ │ ¢ │ “ │ ” │ ʼn │ μ │ ― │ ˙ │ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -208,19 +208,19 @@ /* Shift+Right Ctrl symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ - │ ¡ │   │ £ │   │ ⅜ │ ⅝ │ ⅞ │ ™ │ ± │   │ ¿ │ ˛ │       │ + * │ - │ ¡ │ │ £ │ │ ⅜ │ ⅝ │ ⅞ │ ™ │ ± │ │ ¿ │ ˛ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │ ® │   │ ¥ │ ↑ │ ı │   │   │ ° │ ¯ │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │ § │   │ ª │   │   │   │   │   │ ˝ │ ˇ │ ˘ │    │ + * │ │ │ │ │ ® │ │ ¥ │ ↑ │ ı │ │ │ ° │ ¯ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ § │ │ ª │ │ │ │ │ │ ˝ │ ˇ │ ˘ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ ¦ │   │   │ © │ ‘ │ ’ │ ♪ │ º │ × │ ÷ │   │          │ + * │ │ ¦ │ │ │ © │ ‘ │ ’ │ ♪ │ º │ × │ ÷ │ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 -#define CA_SHYP RCTL(S(CA_SLSH)) // (soft hyphen) +#define CA_SHYP RCTL(S(CA_SLSH)) // ­ (soft hyphen) #define CA_IEXL RCTL(S(CA_1)) // ¡ #define CA_PND RCTL(S(CA_3)) // £ #define CA_TEIG RCTL(S(CA_5)) // ⅜ @@ -252,182 +252,3 @@ #define CA_MORD RCTL(S(CA_M)) // º #define CA_MUL RCTL(S(CA_COMM)) // × #define CA_DIV RCTL(S(CA_DOT)) // ÷ - -// DEPRECATED -#define GR2A(kc) RCTL(kc) -#define CSA_SLASH CA_SLSH -#define CSA_SLSH CA_SLSH -#define CSA_DEAD_CIRCUMFLEX CA_CIRC -#define CSA_DCRC CA_CIRC -#define CSA_C_CEDILLA CA_CCED -#define CSA_CCED CA_CCED -#define CSA_E_GRAVE CA_EGRV -#define CSA_EGRV CA_EGRV -#define CSA_A_GRAVE CA_AGRV -#define CSA_AGRV CA_AGRV -#define CSA_U_GRAVE CA_UGRV -#define CSA_UGRV CA_UGRV -#define CSA_E_ACUTE CA_EACU -#define CSA_ECUT CA_EACU -#define CSA_BACKSLASH CA_BSLS -#define CSA_BSLS CA_BSLS -#define CSA_QUESTION CA_QUES -#define CSA_QEST CA_QUES -#define CSA_DEAD_TREMA CA_DIAE -#define CSA_DTRM CA_DIAE -#define CSA_APOSTROPHE CA_QUOT -#define CSA_APOS CA_QUOT -#define CSA_DOUBLE_QUOTE CA_DQUO -#define CSA_DQOT CA_DQUO -#define CSA_PIPE CA_PIPE -#define CSA_CURRENCY CA_CURR -#define CSA_CURR CA_CURR -#define CSA_LEFT_CURLY_BRACE CA_LCBR -#define CSA_LCBR CA_LCBR -#define CSA_RIGHT_CURLY_BRACE CA_RCBR -#define CSA_RCBR CA_RCBR -#define CSA_LBRACKET CA_LBRC -#define CSA_LBRC CA_LBRC -#define CSA_RBRACKET CA_RBRC -#define CSA_RBRC CA_RBRC -#define CSA_NEGATION CA_NOT -#define CSA_NEGT CA_NOT -#define CSA_EURO CA_EURO -#define CSA_DEAD_GRAVE CA_GRV -#define CSA_DGRV CA_GRV -#define CSA_DEAD_TILDE CA_DTIL -#define CSA_DTLD CA_DTIL -#define CSA_DEGREE CA_DEG -#define CSA_DEGR CA_DEG -#define CSA_LEFT_GUILLEMET CA_LDAQ -#define CSA_LGIL CA_LDAQ -#define CSA_RIGHT_GUILLEMET CA_RDAQ -#define CSA_RGIL CA_RDAQ -#define CSA_LESS CA_LABK -#define CSA_GREATER CA_RABK -#define CSA_GRTR CA_RABK -#define CSA_NON_BREAKING_SPACE ALGR(KC_SPC) -#define CSA_NBSP ALGR(KC_SPC) -#define CSA_SUPERSCRIPT_ONE CA_SUP1 -#define CSA_SUP1 CA_SUP1 -#define CSA_SUPERSCRIPT_TWO CA_SUP2 -#define CSA_SUP2 CA_SUP2 -#define CSA_SUPERSCRIPT_THREE CA_SUP3 -#define CSA_SUP3 CA_SUP3 -#define CSA_ONE_QUARTER CA_QRTR -#define CSA_1QRT CA_QRTR -#define CSA_ONE_HALF CA_HALF -#define CSA_1HLF CA_HALF -#define CSA_THREE_QUARTERS CA_TQTR -#define CSA_3QRT CA_TQTR -#define CSA_DEAD_CEDILLA CA_CEDL -#define CSA_DCED CA_CEDL -#define CSA_OMEGA CA_OMEG -#define CSA_OMEG CA_OMEG -#define CSA_L_STROKE CA_LSTR -#define CSA_LSTK CA_LSTR -#define CSA_OE_LIGATURE CA_OE -#define CSA_OE CA_OE -#define CSA_PARAGRAPH CA_PARA -#define CSA_PARG CA_PARA -#define CSA_T_STROKE CA_TSTR -#define CSA_LEFT_ARROW CA_LARR -#define CSA_LARW CA_LARR -#define CSA_DOWN_ARROW CA_DARR -#define CSA_DARW CA_DARR -#define CSA_RIGHT_ARROW CA_RARR -#define CSA_RARW CA_RARR -#define CSA_O_STROKE CA_OSTR -#define CSA_OSTK CA_OSTR -#define CSA_THORN CA_THRN -#define CSA_THRN CA_THRN -#define CSA_TILDE CA_TILD -#define CSA_TILD CA_TILD -#define CSA_AE_LIGATURE CA_AE -#define CSA_AE CA_AE -#define CSA_SHARP_S CA_SS -#define CSA_SRPS CA_SS -#define CSA_ETH CA_ETH -#define CSA_ENG CA_ENG -#define CSA_H_SRTOKE CA_HSTR -#define CSA_HSTK CA_HSTR -#define CSA_IJ_LIGATURE CA_IJ -#define CSA_IJ CA_IJ -#define CSA_KRA CA_KRA -#define CSA_L_FLOWN_DOT CA_LMDT -#define CSA_LFLD CA_LMDT -#define CSA_DEAD_ACUTE CA_ACUT -#define CSA_DACT CA_ACUT -#define CSA_CENT CA_CENT -#define CSA_LEFT_DOUBLE_QUOTE CA_LDQU -#define CSA_LDQT CA_LDQU -#define CSA_RIGHT_DOUBLE_QUOTE CA_RDQU -#define CSA_RDQT CA_RDQU -#define CSA_N_APOSTROPHE CA_APSN -#define CSA_NAPO CA_APSN -#define CSA_MU CA_MICR -#define CSA_HORIZONTAL_BAR CA_HRZB -#define CSA_HZBR CA_HRZB -#define CSA_DEAD_DOT_ABOVE CA_DOTA -#define CSA_DDTA CA_DOTA -#define CSA_SOFT_HYPHEN CA_SHYP -#define CSA_SHYP CA_SHYP -#define CSA_INVERTED_EXCLAIM CA_IEXL -#define CSA_IXLM CA_IEXL -#define CSA_POUND CA_PND -#define CSA_GBP CA_PND -#define CSA_EURO_BIS CA_EURO -#define CSA_EURB CA_EURO -#define CSA_THREE_EIGHTHS CA_TEIG -#define CSA_3ON8 CA_TEIG -#define CSA_FIVE_EIGHTHS CA_FEIG -#define CSA_5ON8 CA_FEIG -#define CSA_SEVEN_EIGHTHS CA_SEIG -#define CSA_7ON8 CA_SEIG -#define CSA_TRADEMARK CA_TM -#define CSA_TM CA_TM -#define CSA_PLUS_MINUS CA_PLMN -#define CSA_PSMS CA_PLMN -#define CSA_INVERTED_QUESTION CA_IQUE -#define CSA_IQST CA_IQUE -#define CSA_DEAD_OGONEK CA_OGON -#define CSA_DOGO CA_OGON -#define CSA_REGISTERED_TRADEMARK CA_REGD -#define CSA_RTM CA_REGD -#define CSA_YEN CA_YEN -#define CSA_YUAN CA_YEN -#define CSA_UP_ARROW CA_UARR -#define CSA_DOTLESS_I CA_DLSI -#define CSA_DLSI CA_DLSI -#define CSA_DEAD_RING CA_RNGA -#define CSA_DRNG CA_RNGA -#define CSA_DEAD_MACRON CA_MACR -#define CSA_DMCR CA_MACR -#define CSA_SECTION CA_SECT -#define CSA_SECT CA_SECT -#define CSA_ORDINAL_INDICATOR_A CA_FORD -#define CSA_ORDA CA_FORD -#define CSA_DEAD_DOUBLE_ACUTE CA_DACU -#define CSA_DDCT CA_DACU -#define CSA_DEAD_CARON CA_CARN -#define CSA_DCAR CA_CARN -#define CSA_DEAD_BREVE CA_BREV -#define CSA_DBRV CA_BREV -#define CSA_BROKEN_PIPE CA_BRKP -#define CSA_BPIP CA_BRKP -#define CSA_COPYRIGHT CA_COPY -#define CSA_CPRT CA_COPY -#define CSA_LEFT_QUOTE CA_LSQU -#define CSA_LQOT CA_LSQU -#define CSA_RIGHT_QUOTE CA_RSQU -#define CSA_RQOT CA_RSQU -#define CSA_EIGHTH_NOTE CA_ENOT -#define CSA_8NOT CA_ENOT -#define CSA_ORDINAL_INDICATOR_O CA_MORD -#define CSA_ORDO CA_MORD -#define CSA_TIMES CA_MUL -#define CSA_TIMS CA_MUL -#define CSA_OBELUS CA_DIV -#define CSA_OBEL CA_DIV -#define CSA_DIVISION_SIGN CA_DIV -#define CSA_DVSN CA_DIV diff --git a/quantum/keymap_extras/keymap_colemak.h b/quantum/keymap_extras/keymap_colemak.h index a080f03b3d73..6658cc1301cc 100644 --- a/quantum/keymap_extras/keymap_colemak.h +++ b/quantum/keymap_extras/keymap_colemak.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │       │ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ Q │ W │ F │ P │ G │ J │ L │ U │ Y │ ; │ [ │ ] │  \  │ + * │ │ Q │ W │ F │ P │ G │ J │ L │ U │ Y │ ; │ [ │ ] │ \ │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │      │ A │ R │ S │ T │ D │ H │ N │ E │ I │ O │ ' │        │ + * │ │ A │ R │ S │ T │ D │ H │ N │ E │ I │ O │ ' │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ - * │        │ Z │ X │ C │ V │ B │ K │ M │ , │ . │ / │          │ + * │ │ Z │ X │ C │ V │ B │ K │ M │ , │ . │ / │ │ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -87,15 +87,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │       │ + * │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │ : │ { │ } │  |  │ + * │ │ │ │ │ │ │ │ │ │ │ : │ { │ } │ | │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │      │   │   │   │   │   │   │   │   │   │   │ " │        │ + * │ │ │ │ │ │ │ │ │ │ │ │ " │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ - * │        │   │   │   │   │   │   │   │ < │ > │ ? │          │ + * │ │ │ │ │ │ │ │ │ < │ > │ ? │ │ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -123,35 +123,3 @@ #define CM_LABK S(CM_COMM) // < #define CM_RABK S(CM_DOT) // > #define CM_QUES S(CM_SLSH) // / - -// DEPRECATED -#define KC_CM_Q CM_Q -#define KC_CM_W CM_W -#define KC_CM_F CM_F -#define KC_CM_P CM_P -#define KC_CM_G CM_G -#define KC_CM_J CM_J -#define KC_CM_L CM_L -#define KC_CM_U CM_U -#define KC_CM_Y CM_Y -#define KC_CM_SCLN CM_SCLN -#define KC_CM_A CM_A -#define KC_CM_R CM_R -#define KC_CM_S CM_S -#define KC_CM_T CM_T -#define KC_CM_D CM_D -#define KC_CM_H CM_H -#define KC_CM_N CM_N -#define KC_CM_E CM_E -#define KC_CM_I CM_I -#define KC_CM_O CM_O -#define KC_CM_Z CM_Z -#define KC_CM_X CM_X -#define KC_CM_C CM_C -#define KC_CM_V CM_V -#define KC_CM_B CM_B -#define KC_CM_K CM_K -#define KC_CM_M CM_M -#define KC_CM_COMM CM_COMM -#define KC_CM_DOT CM_DOT -#define KC_CM_SLSH CM_SLSH diff --git a/quantum/keymap_extras/keymap_croatian.h b/quantum/keymap_extras/keymap_croatian.h index 4af5dc5875ef..e67b99a9a2cd 100644 --- a/quantum/keymap_extras/keymap_croatian.h +++ b/quantum/keymap_extras/keymap_croatian.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ¸ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ' │ + │       │ + * │ ¸ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ' │ + │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │ Š │ Đ │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Č │ Ć │ Ž │    │ + * │ │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │ Š │ Đ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Č │ Ć │ Ž │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ < │ Y │ X │ C │ V │ B │ N │ M │ , │ . │ - │          │ + * │ │ < │ Y │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -88,15 +88,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ¨ │ ! │ " │ # │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ * │       │ + * │ ¨ │ ! │ " │ # │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ * │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │   │   │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │   │   │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ > │   │   │   │   │   │   │   │ ; │ : │ _ │          │ + * │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -121,15 +121,15 @@ /* AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │   │ ~ │ ˇ │ ^ │ ˘ │ ° │ ˛ │ ` │ ˙ │ ´ │ ˝ │   │   │       │ + * │ │ ~ │ ˇ │ ^ │ ˘ │ ° │ ˛ │ ` │ ˙ │ ´ │ ˝ │ │ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ \ │ | │ € │   │   │   │   │   │   │   │ ÷ │ × │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │ [ │ ] │   │   │ ł │ Ł │   │ ß │ ¤ │    │ + * │ │ \ │ | │ € │ │ │ │ │ │ │ │ ÷ │ × │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ [ │ ] │ │ │ ł │ Ł │ │ ß │ ¤ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │   │   │   │   │ @ │ { │ } │ § │   │   │   │          │ + * │ │ │ │ │ │ @ │ { │ } │ § │ │ │ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 diff --git a/quantum/keymap_extras/keymap_czech.h b/quantum/keymap_extras/keymap_czech.h index 43ba2a14ffb5..2b1fb5da293b 100644 --- a/quantum/keymap_extras/keymap_czech.h +++ b/quantum/keymap_extras/keymap_czech.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ; │ + │ ě │ š │ č │ ř │ ž │ ý │ á │ í │ é │ = │ ´ │       │ + * │ ; │ + │ ě │ š │ č │ ř │ ž │ ý │ á │ í │ é │ = │ ´ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │ ú │ ) │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ů │ § │ ¨ │    │ + * │ │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │ ú │ ) │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ů │ § │ ¨ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ \ │ Y │ X │ C │ V │ B │ N │ M │ , │ . │ - │          │ + * │ │ \ │ Y │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -88,15 +88,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ° │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ % │ ˇ │       │ + * │ ° │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ % │ ˇ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │ / │ ( │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │ " │ ! │ ' │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ / │ ( │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ " │ ! │ ' │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ | │   │   │   │   │   │   │   │ ? │ : │ _ │          │ + * │ │ | │ │ │ │ │ │ │ │ ? │ : │ _ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -128,15 +128,15 @@ /* AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │   │ ~ │   │ ^ │ ˘ │   │ ˛ │ ` │ ˙ │   │ ˝ │   │ ¸ │       │ + * │ │ ~ │ │ ^ │ ˘ │ │ ˛ │ ` │ ˙ │ │ ˝ │ │ ¸ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │ € │   │   │   │   │   │   │   │ ÷ │ × │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │ đ │ Đ │ [ │ ] │   │   │ ł │ Ł │ $ │ ß │ ¤ │    │ + * │ │ │ │ € │ │ │ │ │ │ │ │ ÷ │ × │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ đ │ Đ │ [ │ ] │ │ │ ł │ Ł │ $ │ ß │ ¤ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │   │   │ # │ & │ @ │ { │ } │   │ < │ > │ * │          │ + * │ │ │ │ # │ & │ @ │ { │ } │ │ < │ > │ * │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 diff --git a/quantum/keymap_extras/keymap_danish.h b/quantum/keymap_extras/keymap_danish.h index 618e42ccf1e4..9cf688d6f5f7 100644 --- a/quantum/keymap_extras/keymap_danish.h +++ b/quantum/keymap_extras/keymap_danish.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ½ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ + │ ´ │       │ + * │ ½ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ + │ ´ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ Å │ ¨ │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Æ │ Ø │ ' │    │ + * │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ Å │ ¨ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Æ │ Ø │ ' │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ < │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ - │          │ + * │ │ < │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -88,15 +88,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ § │ ! │ " │ # │ ¤ │ % │ & │ / │ ( │ ) │ = │ ? │ ` │       │ + * │ § │ ! │ " │ # │ ¤ │ % │ & │ / │ ( │ ) │ = │ ? │ ` │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │   │ ^ │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │   │ * │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ ^ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ * │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ > │   │   │   │   │   │   │   │ ; │ : │ _ │          │ + * │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -125,15 +125,15 @@ /* AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │   │   │ @ │ £ │ $ │ € │   │ { │ [ │ ] │ } │   │ | │       │ + * │ │ │ @ │ £ │ $ │ € │ │ { │ [ │ ] │ } │ │ | │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │   │ ~ │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │   │   │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ ~ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ \ │   │   │   │   │   │   │ µ │   │   │   │          │ + * │ │ \ │ │ │ │ │ │ │ µ │ │ │ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 diff --git a/quantum/keymap_extras/keymap_dvorak.h b/quantum/keymap_extras/keymap_dvorak.h index 43dea0ce4fd7..7aa112ebcc97 100644 --- a/quantum/keymap_extras/keymap_dvorak.h +++ b/quantum/keymap_extras/keymap_dvorak.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ [ │ ] │       │ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ [ │ ] │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ ' │ , │ . │ P │ Y │ F │ G │ C │ R │ L │ / │ = │  \  │ + * │ │ ' │ , │ . │ P │ Y │ F │ G │ C │ R │ L │ / │ = │ \ │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │      │ A │ O │ E │ U │ I │ D │ H │ T │ N │ S │ - │        │ + * │ │ A │ O │ E │ U │ I │ D │ H │ T │ N │ S │ - │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ - * │        │ ; │ Q │ J │ K │ X │ B │ M │ W │ V │ Z │          │ + * │ │ ; │ Q │ J │ K │ X │ B │ M │ W │ V │ Z │ │ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -87,15 +87,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ { │ } │       │ + * │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ { │ } │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ " │ < │ > │   │   │   │   │   │   │   │ ? │ + │  |  │ + * │ │ " │ < │ > │ │ │ │ │ │ │ │ ? │ + │ | │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │      │   │   │   │   │   │   │   │   │   │   │ _ │        │ + * │ │ │ │ │ │ │ │ │ │ │ │ _ │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ - * │        │ : │   │   │   │   │   │   │   │   │   │          │ + * │ │ : │ │ │ │ │ │ │ │ │ │ │ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 diff --git a/quantum/keymap_extras/keymap_dvorak_fr.h b/quantum/keymap_extras/keymap_dvorak_fr.h index 7bb5893d3707..2dee8e32e70b 100644 --- a/quantum/keymap_extras/keymap_dvorak_fr.h +++ b/quantum/keymap_extras/keymap_dvorak_fr.h @@ -30,15 +30,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ « │ » │ / │ - │ è │ \ │ ^ │ ( │ ` │ ) │ _ │ [ │ ] │       │ + * │ « │ » │ / │ - │ è │ \ │ ^ │ ( │ ` │ ) │ _ │ [ │ ] │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ : │ ' │ é │ G │ . │ H │ V │ C │ M │ K │ Z │ ¨ │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ O │ A │ U │ E │ B │ F │ S │ T │ N │ D │ W │ ~ │    │ + * │ │ : │ ' │ é │ G │ . │ H │ V │ C │ M │ K │ Z │ ¨ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ O │ A │ U │ E │ B │ F │ S │ T │ N │ D │ W │ ~ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ à │ ; │ Q │ , │ I │ Y │ X │ R │ L │ P │ J │          │ + * │ │ à │ ; │ Q │ , │ I │ Y │ X │ R │ L │ P │ J │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -96,15 +96,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ * │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 0 │ 0 │ + │ % │       │ + * │ * │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 0 │ 0 │ + │ % │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ ? │ < │ > │   │ ! │   │   │   │   │   │   │ = │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │   │ # │    │ + * │ │ ? │ < │ > │ │ ! │ │ │ │ │ │ │ = │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ # │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ ç │ | │   │ @ │   │   │   │   │   │   │   │          │ + * │ │ ç │ | │ │ @ │ │ │ │ │ │ │ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 diff --git a/quantum/keymap_extras/keymap_dvp.h b/quantum/keymap_extras/keymap_dvp.h index 99c69a4af5d5..6de7033cb40b 100644 --- a/quantum/keymap_extras/keymap_dvp.h +++ b/quantum/keymap_extras/keymap_dvp.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ $ │ & │ [ │ { │ } │ ( │ = │ * │ ) │ + │ ] │ ! │ # │       │ + * │ $ │ & │ [ │ { │ } │ ( │ = │ * │ ) │ + │ ] │ ! │ # │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ ; │ , │ . │ P │ Y │ F │ G │ C │ R │ L │ / │ @ │  \  │ + * │ │ ; │ , │ . │ P │ Y │ F │ G │ C │ R │ L │ / │ @ │ \ │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │      │ A │ O │ E │ U │ I │ D │ H │ T │ N │ S │ - │        │ + * │ │ A │ O │ E │ U │ I │ D │ H │ T │ N │ S │ - │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ - * │        │ ' │ Q │ J │ K │ X │ B │ M │ W │ V │ Z │          │ + * │ │ ' │ Q │ J │ K │ X │ B │ M │ W │ V │ Z │ │ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -87,15 +87,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ~ │ % │ 7 │ 5 │ 3 │ 1 │ 9 │ 0 │ 2 │ 4 │ 6 │ 8 │ ` │       │ + * │ ~ │ % │ 7 │ 5 │ 3 │ 1 │ 9 │ 0 │ 2 │ 4 │ 6 │ 8 │ ` │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ : │ < │ > │   │   │   │   │   │   │   │ ? │ ^ │  |  │ + * │ │ : │ < │ > │ │ │ │ │ │ │ │ ? │ ^ │ | │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │      │   │   │   │   │   │   │   │   │   │   │ _ │        │ + * │ │ │ │ │ │ │ │ │ │ │ │ _ │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ - * │        │ " │   │   │   │   │   │   │   │   │   │          │ + * │ │ " │ │ │ │ │ │ │ │ │ │ │ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 diff --git a/quantum/keymap_extras/keymap_estonian.h b/quantum/keymap_extras/keymap_estonian.h index e806c51fedc5..6951baed5a1c 100644 --- a/quantum/keymap_extras/keymap_estonian.h +++ b/quantum/keymap_extras/keymap_estonian.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ˇ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ + │ ´ │       │ + * │ ˇ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ + │ ´ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ Ü │ Õ │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Ö │ Ä │ ' │    │ + * │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ Ü │ Õ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Ö │ Ä │ ' │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ < │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ - │          │ + * │ │ < │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -88,15 +88,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ~ │ ! │ " │ # │ ¤ │ % │ & │ / │ ( │ ) │ = │ ? │ ` │       │ + * │ ~ │ ! │ " │ # │ ¤ │ % │ & │ / │ ( │ ) │ = │ ? │ ` │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │   │   │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │   │ * │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ * │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ > │   │   │   │   │   │   │   │ ; │ : │ _ │          │ + * │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -123,15 +123,15 @@ /* AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │   │   │ @ │ £ │ $ │ € │   │ { │ [ │ ] │ } │ \ │   │       │ + * │ │ │ @ │ £ │ $ │ € │ │ { │ [ │ ] │ } │ \ │ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │   │ § │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │ š │   │   │   │   │   │   │   │   │ ^ │ ½ │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ § │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ š │ │ │ │ │ │ │ │ │ ^ │ ½ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ | │ ž │   │   │   │   │   │   │   │   │   │          │ + * │ │ | │ ž │ │ │ │ │ │ │ │ │ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 diff --git a/quantum/keymap_extras/keymap_finnish.h b/quantum/keymap_extras/keymap_finnish.h index 81a8027ff4e6..faca4e01d437 100644 --- a/quantum/keymap_extras/keymap_finnish.h +++ b/quantum/keymap_extras/keymap_finnish.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ § │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ + │ ´ │       │ + * │ § │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ + │ ´ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ Å │ ¨ │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Ö │ Ä │ ' │    │ + * │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ Å │ ¨ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Ö │ Ä │ ' │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ < │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ - │          │ + * │ │ < │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -88,15 +88,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ½ │ ! │ " │ # │ ¤ │ % │ & │ / │ ( │ ) │ = │ ? │ ` │       │ + * │ ½ │ ! │ " │ # │ ¤ │ % │ & │ / │ ( │ ) │ = │ ? │ ` │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │   │ ^ │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │   │ * │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ ^ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ * │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ > │   │   │   │   │   │   │   │ ; │ : │ _ │          │ + * │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -125,15 +125,15 @@ /* AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │   │   │ @ │ £ │ $ │ € │   │ { │ [ │ ] │ } │ \ │   │       │ + * │ │ │ @ │ £ │ $ │ € │ │ { │ [ │ ] │ } │ \ │ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │   │ ~ │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │   │   │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ ~ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ | │   │   │   │   │   │   │ µ │   │   │   │          │ + * │ │ | │ │ │ │ │ │ │ µ │ │ │ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 diff --git a/quantum/keymap_extras/keymap_fr_ch.h b/quantum/keymap_extras/keymap_fr_ch.h index 783880c113da..b1f2455a6843 100644 --- a/quantum/keymap_extras/keymap_fr_ch.h +++ b/quantum/keymap_extras/keymap_fr_ch.h @@ -27,15 +27,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ § │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ' │ ^ │       │ + * │ § │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ' │ ^ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │ è │ ¨ │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ A │ S │ D │ F │ G │ H │ J │ K │ L │ é │ à │ $ │    │ + * │ │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │ è │ ¨ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ é │ à │ $ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ < │ Y │ X │ C │ V │ B │ N │ M │ , │ . │ - │          │ + * │ │ < │ Y │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -93,15 +93,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ° │ + │ " │ * │ ç │ % │ & │ / │ ( │ ) │ = │ ? │ ` │       │ + * │ ° │ + │ " │ * │ ç │ % │ & │ / │ ( │ ) │ = │ ? │ ` │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │ ü │ ! │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │ ö │ ä │ £ │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ ü │ ! │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ ö │ ä │ £ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ > │   │   │   │   │   │   │   │ ; │ : │ _ │          │ + * │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -133,15 +133,15 @@ /* AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │   │ ¦ │ @ │ # │   │   │ ¬ │ | │ ¢ │   │   │ ´ │ ~ │       │ + * │ │ ¦ │ @ │ # │ │ │ ¬ │ | │ ¢ │ │ │ ´ │ ~ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │ € │   │   │   │   │   │   │   │ [ │ ] │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │ { │ } │    │ + * │ │ │ │ € │ │ │ │ │ │ │ │ [ │ ] │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ { │ } │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ \ │   │   │   │   │   │   │   │   │   │   │          │ + * │ │ \ │ │ │ │ │ │ │ │ │ │ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -162,82 +162,3 @@ #define CH_RCBR ALGR(CH_DLR) // } // Row 4 #define CH_BSLS ALGR(CH_LABK) // (backslash) - -// DEPRECATED -#define FR_CH_Z CH_Z -#define FR_CH_Y CH_Y -#define FR_CH_A CH_A -#define FR_CH_B CH_B -#define FR_CH_C CH_C -#define FR_CH_D CH_D -#define FR_CH_E CH_E -#define FR_CH_F CH_F -#define FR_CH_G CH_G -#define FR_CH_H CH_H -#define FR_CH_I CH_I -#define FR_CH_J CH_J -#define FR_CH_K CH_K -#define FR_CH_L CH_L -#define FR_CH_M CH_M -#define FR_CH_N CH_N -#define FR_CH_O CH_O -#define FR_CH_P CH_P -#define FR_CH_Q CH_Q -#define FR_CH_R CH_R -#define FR_CH_S CH_S -#define FR_CH_T CH_T -#define FR_CH_U CH_U -#define FR_CH_V CH_V -#define FR_CH_W CH_W -#define FR_CH_X CH_X -#define FR_CH_0 CH_0 -#define FR_CH_1 CH_1 -#define FR_CH_2 CH_2 -#define FR_CH_3 CH_3 -#define FR_CH_4 CH_4 -#define FR_CH_5 CH_5 -#define FR_CH_6 CH_6 -#define FR_CH_7 CH_7 -#define FR_CH_8 CH_8 -#define FR_CH_9 CH_9 -#define FR_CH_DOT CH_DOT -#define FR_CH_COMM CH_COMM -#define FR_CH_QUOT CH_QUOT -#define FR_CH_AE CH_AGRV -#define FR_CH_UE CH_EGRV -#define FR_CH_OE CH_EACU -#define FR_CH_CIRC CH_CIRC -#define FR_CH_LESS CH_LABK -#define FR_CH_MINS CH_MINS -#define FR_CH_DLR CH_DLR -#define FR_CH_PARA CH_SECT -#define FR_CH_DIAE CH_DIAE -#define FR_CH_RING CH_DEG -#define FR_CH_EXLM CH_EXLM -#define FR_CH_PLUS CH_PLUS -#define FR_CH_DQOT CH_DQUO -#define FR_CH_ASTR CH_ASTR -#define FR_CH_PERC CH_PERC -#define FR_CH_AMPR CH_AMPR -#define FR_CH_SLSH CH_SLSH -#define FR_CH_LPRN CH_LPRN -#define FR_CH_RPRN CH_RPRN -#define FR_CH_EQL CH_EQL -#define FR_CH_QST CH_QUES -#define FR_CH_MORE CH_RABK -#define FR_CH_COLN CH_COLN -#define FR_CH_SCLN CH_SCLN -#define FR_CH_UNDS CH_UNDS -#define FR_CH_CCED CH_CCED -#define FR_CH_GRV CH_GRV -#define FR_CH_LCBR CH_LCBR -#define FR_CH_LBRC CH_LBRC -#define FR_CH_RBRC CH_RBRC -#define FR_CH_RCBR CH_RCBR -#define FR_CH_BSLS CH_BSLS -#define FR_CH_AT CH_AT -#define FR_CH_EURO CH_EURO -#define FR_CH_TILD CH_TILD -#define FR_CH_PIPE CH_PIPE -#define FR_CH_HASH CH_HASH -#define FR_CH_ACUT CH_ACUT diff --git a/quantum/keymap_extras/keymap_french.h b/quantum/keymap_extras/keymap_french.h index 7256c50022ae..0be53f0a9c8e 100644 --- a/quantum/keymap_extras/keymap_french.h +++ b/quantum/keymap_extras/keymap_french.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ² │ & │ é │ " │ ' │ ( │ - │ è │ _ │ ç │ à │ ) │ = │       │ + * │ ² │ & │ é │ " │ ' │ ( │ - │ è │ _ │ ç │ à │ ) │ = │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ A │ Z │ E │ R │ T │ Y │ U │ I │ O │ P │ ^ │ $ │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ Q │ S │ D │ F │ G │ H │ J │ K │ L │ M │ ù │ * │    │ + * │ │ A │ Z │ E │ R │ T │ Y │ U │ I │ O │ P │ ^ │ $ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ Q │ S │ D │ F │ G │ H │ J │ K │ L │ M │ ù │ * │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ < │ W │ X │ C │ V │ B │ N │ , │ ; │ : │ ! │          │ + * │ │ < │ W │ X │ C │ V │ B │ N │ , │ ; │ : │ ! │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -88,15 +88,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │   │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ° │ + │       │ + * │ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ° │ + │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │ ¨ │ £ │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │ % │ µ │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ ¨ │ £ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ % │ µ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ > │   │   │   │   │   │   │ ? │ . │ / │ § │          │ + * │ │ > │ │ │ │ │ │ │ ? │ . │ / │ § │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -127,15 +127,15 @@ /* AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │   │   │ ~ │ # │ { │ [ │ | │ ` │ \ │   │ @ │ ] │ } │       │ + * │ │ │ ~ │ # │ { │ [ │ | │ ` │ \ │ │ @ │ ] │ } │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │ € │   │   │   │   │   │   │   │   │ ¤ │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │   │   │    │ + * │ │ │ │ € │ │ │ │ │ │ │ │ │ ¤ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │   │   │   │   │   │   │   │   │   │   │   │          │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -152,14 +152,3 @@ // Row 2 #define FR_EURO ALGR(KC_E) // € #define FR_CURR ALGR(FR_DLR) // ¤ - -// DEPRECATED -#define FR_AMP FR_AMPR -#define FR_APOS FR_QUOT -#define FR_LESS FR_LABK -#define FR_OVRR FR_DEG -#define FR_UMLT FR_DIAE -#define FR_MU FR_MICR -#define FR_GRTR FR_RABK -#define FR_CCIRC FR_CIRC -#define FR_BULT FR_CURR diff --git a/quantum/keymap_extras/keymap_french_afnor.h b/quantum/keymap_extras/keymap_french_afnor.h index be67fdc95288..4b7961724f58 100644 --- a/quantum/keymap_extras/keymap_french_afnor.h +++ b/quantum/keymap_extras/keymap_french_afnor.h @@ -19,10 +19,10 @@ * A standard for the French keyboard * * The project was launched at the end of 2015 on the proposal of the General - * Delegation for the French language and the languages ​​of France (Ministry + * Delegation for the French language and the languages of France (Ministry * of Culture), starting from the observation that the current "azerty" * keyboards constrain the writing of French, languages regional and European - * languages ​​with Latin alphabet. + * languages with Latin alphabet. * * For the first time, a standard (NF Z71-300) defines the placement of * characters on the French keyboard. It offers two layouts, one of which @@ -46,15 +46,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ @ │ à │ é │ è │ ê │ ( │ ) │ ‘ │ ’ │ « │ » │ ' │ ^ │       │ + * │ @ │ à │ é │ è │ ê │ ( │ ) │ ‘ │ ’ │ « │ » │ ' │ ^ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ A │ Z │ E │ R │ T │ Y │ U │ I │ O │ P │ - │ + │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ Q │ S │ D │ F │ G │ H │ J │ K │ L │ M │ / │ * │    │ + * │ │ A │ Z │ E │ R │ T │ Y │ U │ I │ O │ P │ - │ + │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ Q │ S │ D │ F │ G │ H │ J │ K │ L │ M │ / │ * │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ < │ W │ X │ C │ V │ B │ N │ . │ , │ : │ ; │          │ + * │ │ < │ W │ X │ C │ V │ B │ N │ . │ , │ : │ ; │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -112,15 +112,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ # │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ " │ ¨ │       │ + * │ # │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ " │ ¨ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │ – │ ± │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │ \ │ ½ │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ – │ ± │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ \ │ ½ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ > │   │   │   │   │   │   │ ? │ ! │ … │ = │          │ + * │ │ > │ │ │ │ │ │ │ ? │ ! │ … │ = │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -152,15 +152,15 @@ /* AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ˘ │ § │ ´ │ ` │ & │ [ │ ] │ ¯ │ _ │ “ │ ” │ ° │ ˇ │       │ + * │ ˘ │ § │ ´ │ ` │ & │ [ │ ] │ ¯ │ _ │ “ │ ” │ ° │ ˇ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ æ │ £ │ € │ ® │ { │ } │ ù │ ˙ │ œ │ % │ − │ † │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ θ │ ß │ $ │ ¤ │ µ │ Eu│   │ ∕ │ | │ ∞ │ ÷ │ × │    │ + * │ │ æ │ £ │ € │ ® │ { │ } │ ù │ ˙ │ œ │ % │ − │ † │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ θ │ ß │ $ │ ¤ │ µ │ Eu│ │ ∕ │ | │ ∞ │ ÷ │ × │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ ≤ │ ʒ │ © │ ç │ ¸ │ − │ ~ │ ¿ │ ¡ │ · │ ≃ │          │ + * │ │ ≤ │ ʒ │ © │ ç │ ¸ │ − │ ~ │ ¿ │ ¡ │ · │ ≃ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -217,28 +217,28 @@ /* Shift+AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │  ̑ │   │   │   │   │ ˝ │  ̏ │   │ — │ ‹ │ › │ ˚ │   │       │ + * │ ̑ │ │ │ │ │ ˝ │ ̏ │ │ — │ ‹ │ › │ ˚ │ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │ ™ │   │   │  ̣ │   │ ‰ │ ‑ │ ‡ │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │ ˍ │   │   │   │   │ √ │ ¼ │    │ + * │ │ │ │ │ │ ™ │ │ │ ̣ │ │ ‰ │ ‑ │ ‡ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ ˍ │ │ │ │ │ √ │ ¼ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ ≥ │   │   │   │ ˛ │   │   │   │  ̦ │   │ ≠ │          │ + * │ │ ≥ │ │ │ │ ˛ │ │ │ │ ̦ │ │ ≠ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 -#define FR_IBRV S(ALGR(FR_AT)) //  ̑ (dead) +#define FR_IBRV S(ALGR(FR_AT)) // ̑ (dead) #define FR_DACU S(ALGR(FR_LPRN)) // ˝ (dead) -#define FR_DGRV S(ALGR(FR_RPRN)) //  ̏ (dead) +#define FR_DGRV S(ALGR(FR_RPRN)) // ̏ (dead) #define FR_MDSH S(ALGR(FR_RSQU)) // — #define FR_LSAQ S(ALGR(FR_LDAQ)) // ‹ #define FR_RSAQ S(ALGR(FR_RDAQ)) // › #define FR_RNGA S(ALGR(FR_QUOT)) // ˚ (dead) // Row 2 #define FR_TM S(ALGR(FR_T)) // ™ -#define FR_DOTB S(ALGR(FR_I)) //  ̣ (dead) +#define FR_DOTB S(ALGR(FR_I)) // ̣ (dead) #define FR_PERM S(ALGR(FR_P)) // ‰ #define FR_NBHY S(ALGR(FR_MINS)) // ‑ (non-breaking hyphen) #define FR_DDAG S(ALGR(FR_PLUS)) // ‡ @@ -249,5 +249,5 @@ // Row 4 #define FR_GEQL S(ALGR(FR_LABK)) // ≥ #define FR_OGON S(ALGR(FR_V)) // ˛ (dead) -#define FR_DCMM S(ALGR(FR_COMM)) //  ̦ (dead) +#define FR_DCMM S(ALGR(FR_COMM)) // ̦ (dead) #define FR_NEQL S(ALGR(FR_SCLN)) // ≠ diff --git a/quantum/keymap_extras/keymap_french_osx.h b/quantum/keymap_extras/keymap_french_osx.h index de8dd756a1fb..590a57e55cad 100644 --- a/quantum/keymap_extras/keymap_french_osx.h +++ b/quantum/keymap_extras/keymap_french_osx.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ - * │ @ │ & │ é │ " │ ' │ ( │ § │ è │ ! │ ç │ à │ ) │ - │     │ + * │ @ │ & │ é │ " │ ' │ ( │ § │ è │ ! │ ç │ à │ ) │ - │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ - * │     │ A │ Z │ E │ R │ T │ Y │ U │ I │ O │ P │ ^ │ $ │   │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐  │ - * │      │ Q │ S │ D │ F │ G │ H │ J │ K │ L │ M │ ù │ ` │  │ + * │ │ A │ Z │ E │ R │ T │ Y │ U │ I │ O │ P │ ^ │ $ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ Q │ S │ D │ F │ G │ H │ J │ K │ L │ M │ ù │ ` │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤ - * │    │ < │ W │ X │ C │ V │ B │ N │ , │ ; │ : │ = │        │ + * │ │ < │ W │ X │ C │ V │ B │ N │ , │ ; │ : │ = │ │ * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ - * │     │    │     │                       │     │    │     │ + * │ │ │ │ │ │ │ │ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ */ // Row 1 @@ -88,15 +88,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ - * │ # │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ° │ _ │     │ + * │ # │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ° │ _ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ - * │     │   │   │   │   │   │   │   │   │   │   │ ¨ │ * │   │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐  │ - * │      │   │   │   │   │   │   │   │   │   │   │ % │ £ │  │ + * │ │ │ │ │ │ │ │ │ │ │ │ ¨ │ * │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ % │ £ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤ - * │    │ > │   │   │   │   │   │   │ ? │ . │ / │ + │        │ + * │ │ > │ │ │ │ │ │ │ ? │ . │ / │ + │ │ * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ - * │     │    │     │                       │     │    │     │ + * │ │ │ │ │ │ │ │ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ */ // Row 1 @@ -128,15 +128,15 @@ /* Alted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ - * │ • │  │ ë │ “ │ ‘ │ { │ ¶ │ « │ ¡ │ Ç │ Ø │ } │ — │     │ + * │ • │  │ ë │ “ │ ‘ │ { │ ¶ │ « │ ¡ │ Ç │ Ø │ } │ — │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ - * │     │ Æ │ Â │ Ê │ ® │ † │ Ú │ º │ î │ Œ │ π │ Ô │ € │   │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐  │ - * │      │ ‡ │ Ò │ ∂ │ ƒ │ fi │ Ì │ Ï │ È │ ¬ │ µ │ Ù │   │  │ + * │ │ Æ │  │ Ê │ ® │ † │ Ú │ º │ î │ Œ │ π │ Ô │ € │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ ‡ │ Ò │ ∂ │ ƒ │ fi │ Ì │ Ï │ È │ ¬ │ µ │ Ù │ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤ - * │    │ ≤ │ ‹ │ ≈ │ © │ ◊ │ ß │ ~ │ ∞ │ … │ ÷ │ ≠ │        │ + * │ │ ≤ │ ‹ │ ≈ │ © │ ◊ │ ß │ ~ │ ∞ │ … │ ÷ │ ≠ │ │ * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ - * │     │    │     │                       │     │    │     │ + * │ │ │ │ │ │ │ │ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ */ // Row 1 @@ -193,15 +193,15 @@ /* Shift+Alted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ - * │ Ÿ │ ´ │ „ │   │   │ [ │ å │ » │ Û │ Á │   │ ] │ – │     │ + * │ Ÿ │ ´ │ „ │ │ │ [ │ å │ » │ Û │ Á │ │ ] │ – │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ - * │     │   │ Å │   │ ‚ │ ™ │   │ ª │ ï │   │ ∏ │   │ ¥ │   │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐  │ - * │      │ Ω │ ∑ │ ∆ │ · │ fl │ Î │ Í │ Ë │ | │ Ó │ ‰ │   │  │ + * │ │ │ Å │ │ ‚ │ ™ │ │ ª │ ï │ │ ∏ │ │ ¥ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ Ω │ ∑ │ ∆ │ · │ fl │ Î │ Í │ Ë │ | │ Ó │ ‰ │ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤ - * │    │ ≥ │ › │ ⁄ │ ¢ │ √ │ ∫ │ ı │ ¿ │   │ \ │ ± │        │ + * │ │ ≥ │ › │ ⁄ │ ¢ │ √ │ ∫ │ ı │ ¿ │ │ \ │ ± │ │ * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ - * │     │    │     │                       │     │    │     │ + * │ │ │ │ │ │ │ │ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ */ // Row 1 @@ -246,15 +246,3 @@ #define FR_IQUE S(A(FR_COMM)) // ¿ #define FR_BSLS S(A(FR_COLN)) // (backslash) #define FR_PLMN S(A(FR_EQL)) // ± - -// DEPRECATED -#define FR_AMP FR_AMPR -#define FR_EACU FR_LEAC -#define FR_APOS FR_QUOT -#define FR_EGRV FR_LEGR -#define FR_CCED FR_LCCE -#define FR_AGRV FR_LAGR -#define FR_UGRV FR_LUGR -#define FR_LESS FR_LABK -#define FR_UMLT FR_DIAE -#define FR_GRTR FR_RABK diff --git a/quantum/keymap_extras/keymap_german.h b/quantum/keymap_extras/keymap_german.h index 59198dd1be5d..085995b0c6e1 100644 --- a/quantum/keymap_extras/keymap_german.h +++ b/quantum/keymap_extras/keymap_german.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ^ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ß │ ´ │       │ + * │ ^ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ß │ ´ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │ Ü │ + │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Ö │ Ä │ # │    │ + * │ │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │ Ü │ + │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Ö │ Ä │ # │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ < │ Y │ X │ C │ V │ B │ N │ M │ , │ . │ - │          │ + * │ │ < │ Y │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -88,15 +88,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ° │ ! │ " │ § │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ ` │       │ + * │ ° │ ! │ " │ § │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ ` │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │   │ * │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │   │ ' │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ * │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ ' │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ > │   │   │   │   │   │   │   │ ; │ : │ _ │          │ + * │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -125,15 +125,15 @@ /* AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │   │   │ ² │ ³ │   │   │   │ { │ [ │ ] │ } │ \ │   │       │ + * │ │ │ ² │ ³ │ │ │ │ { │ [ │ ] │ } │ \ │ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ @ │   │ € │   │   │   │   │   │   │   │   │ ~ │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │   │   │    │ + * │ │ @ │ │ € │ │ │ │ │ │ │ │ │ ~ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ | │   │   │   │   │   │   │ µ │   │   │   │          │ + * │ │ | │ │ │ │ │ │ │ µ │ │ │ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -151,16 +151,3 @@ // Row 4 #define DE_PIPE ALGR(DE_LABK) // | #define DE_MICR ALGR(DE_M) // µ - -// DEPRECATED -#define DE_UE DE_UDIA -#define DE_OE DE_ODIA -#define DE_AE DE_ADIA -#define DE_LESS DE_LABK -#define DE_RING DE_DEG -#define DE_DQOT DE_DQUO -#define DE_PARA DE_SECT -#define DE_QST DE_QUES -#define DE_MORE DE_RABK -#define DE_SQ2 DE_SUP2 -#define DE_SQ3 DE_SUP3 diff --git a/quantum/keymap_extras/keymap_german_ch.h b/quantum/keymap_extras/keymap_german_ch.h index 07f4503a14b6..672383687026 100644 --- a/quantum/keymap_extras/keymap_german_ch.h +++ b/quantum/keymap_extras/keymap_german_ch.h @@ -27,15 +27,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ § │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ' │ ^ │       │ + * │ § │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ' │ ^ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │ ü │ ¨ │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ö │ ä │ $ │    │ + * │ │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │ ü │ ¨ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ö │ ä │ $ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ < │ Y │ X │ C │ V │ B │ N │ M │ , │ . │ - │          │ + * │ │ < │ Y │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -93,15 +93,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ° │ + │ " │ * │ ç │ % │ & │ / │ ( │ ) │ = │ ? │ ` │       │ + * │ ° │ + │ " │ * │ ç │ % │ & │ / │ ( │ ) │ = │ ? │ ` │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │ è │ ! │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │ é │ à │ £ │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ è │ ! │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ é │ à │ £ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ > │   │   │   │   │   │   │   │ ; │ : │ _ │          │ + * │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -133,15 +133,15 @@ /* AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │   │ ¦ │ @ │ # │   │   │ ¬ │ | │ ¢ │   │   │ ´ │ ~ │       │ + * │ │ ¦ │ @ │ # │ │ │ ¬ │ | │ ¢ │ │ │ ´ │ ~ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │ € │   │   │   │   │   │   │   │ [ │ ] │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │ { │ } │    │ + * │ │ │ │ € │ │ │ │ │ │ │ │ [ │ ] │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ { │ } │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ \ │   │   │   │   │   │   │   │   │   │   │          │ + * │ │ \ │ │ │ │ │ │ │ │ │ │ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -162,21 +162,3 @@ #define CH_RCBR ALGR(CH_DLR) // } // Row 4 #define CH_BSLS ALGR(CH_LABK) // (backslash) - -// DEPRECATED -#define CH_AE CH_ADIA -#define CH_UE CH_UDIA -#define CH_OE CH_ODIA -#define CH_PARA CH_SECT -#define CH_CARR CH_CIRC -#define CH_DIER CH_DIAE -#define CH_LESS CH_LABK -#define CH_RING CH_DEG -#define CH_DQOT CH_DQUO -#define CH_PAST CH_ASTR -#define CH_CELA CH_CCED -#define CH_QST CH_QUES -#define CH_POND CH_PND -#define CH_MORE CH_RABK -#define CH_BRBR CH_BRKP -#define CH_NOTL CH_NOT diff --git a/quantum/keymap_extras/keymap_german_osx.h b/quantum/keymap_extras/keymap_german_osx.h index 0d15532e40e5..82404fa5fd9f 100644 --- a/quantum/keymap_extras/keymap_german_osx.h +++ b/quantum/keymap_extras/keymap_german_osx.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ - * │ ^ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ß │ ´ │     │ + * │ ^ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ß │ ´ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ - * │     │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │ Ü │ + │   │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐  │ - * │      │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Ö │ Ä │ # │  │ + * │ │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │ Ü │ + │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Ö │ Ä │ # │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤ - * │    │ < │ Y │ X │ C │ V │ B │ N │ M │ , │ . │ - │        │ + * │ │ < │ Y │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │ * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ - * │     │    │     │                       │     │    │     │ + * │ │ │ │ │ │ │ │ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ */ // Row 1 @@ -88,15 +88,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ - * │ ° │ ! │ " │ § │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ ` │     │ + * │ ° │ ! │ " │ § │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ ` │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ - * │     │   │   │   │   │   │   │   │   │   │   │   │ * │   │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐  │ - * │      │   │   │   │   │   │   │   │   │   │   │   │ ' │  │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ * │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ ' │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤ - * │    │ > │   │   │   │   │   │   │   │ ; │ : │ _ │        │ + * │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │ * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ - * │     │    │     │                       │     │    │     │ + * │ │ │ │ │ │ │ │ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ */ // Row 1 @@ -125,15 +125,15 @@ /* Alted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ - * │ „ │ ¡ │ “ │ ¶ │ ¢ │ [ │ ] │ | │ { │ } │ ≠ │ ¿ │   │     │ + * │ „ │ ¡ │ “ │ ¶ │ ¢ │ [ │ ] │ | │ { │ } │ ≠ │ ¿ │ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ - * │     │ « │ ∑ │ € │ ® │ † │ Ω │ ¨ │ ⁄ │ Ø │ π │ • │ ± │   │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐  │ - * │      │ Å │ ‚ │ ∂ │ ƒ │ © │ ª │ º │ ∆ │ @ │ Œ │ Æ │ ‘ │  │ + * │ │ « │ ∑ │ € │ ® │ † │ Ω │ ¨ │ ⁄ │ Ø │ π │ • │ ± │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ Å │ ‚ │ ∂ │ ƒ │ © │ ª │ º │ ∆ │ @ │ Œ │ Æ │ ‘ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤ - * │    │ ≤ │ ¥ │ ≈ │ Ç │ √ │ ∫ │ ~ │ µ │ ∞ │ … │ – │        │ + * │ │ ≤ │ ¥ │ ≈ │ Ç │ √ │ ∫ │ ~ │ µ │ ∞ │ … │ – │ │ * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ - * │     │    │     │                       │     │    │     │ + * │ │ │ │ │ │ │ │ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ */ // Row 1 @@ -190,15 +190,15 @@ /* Shift+Alted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ - * │   │ ¬ │ ” │   │ £ │ fi │   │ \ │ ˜ │ · │ ¯ │ ˙ │ ˚ │     │ + * │ │ ¬ │ ” │ │ £ │ fi │ │ \ │ ˜ │ · │ ¯ │ ˙ │ ˚ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ - * │     │ » │   │ ‰ │ ¸ │ ˝ │ ˇ │ Á │ Û │   │ ∏ │   │  │   │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐  │ - * │      │   │ Í │ ™ │ Ï │ Ì │ Ó │ ı │   │ fl │   │   │   │  │ + * │ │ » │ │ ‰ │ ¸ │ ˝ │ ˇ │ Á │ Û │ │ ∏ │ │  │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ Í │ ™ │ Ï │ Ì │ Ó │ ı │ │ fl │ │ │ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤ - * │    │ ≥ │ ‡ │ Ù │   │ ◊ │ ‹ │ › │ ˘ │ ˛ │ ÷ │ — │        │ + * │ │ ≥ │ ‡ │ Ù │ │ ◊ │ ‹ │ › │ ˘ │ ˛ │ ÷ │ — │ │ * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ - * │     │    │     │                       │     │    │     │ + * │ │ │ │ │ │ │ │ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ */ // Row 1 @@ -241,83 +241,3 @@ #define DE_OGON S(A(DE_COMM)) // ˛ #define DE_DIV S(A(DE_DOT)) // ÷ #define DE_MDSH S(A(DE_MINS)) // — - -// DEPRECATED -#define DE_OSX_CIRC DE_CIRC -#define DE_OSX_1 DE_1 -#define DE_OSX_2 DE_2 -#define DE_OSX_3 DE_3 -#define DE_OSX_4 DE_4 -#define DE_OSX_5 DE_5 -#define DE_OSX_6 DE_6 -#define DE_OSX_7 DE_7 -#define DE_OSX_8 DE_8 -#define DE_OSX_9 DE_9 -#define DE_OSX_0 DE_0 -#define DE_OSX_SS DE_SS -#define DE_OSX_ACUT DE_ACUT -#define DE_OSX_Q DE_Q -#define DE_OSX_W DE_W -#define DE_OSX_E DE_E -#define DE_OSX_R DE_R -#define DE_OSX_T DE_T -#define DE_OSX_Z DE_Z -#define DE_OSX_U DE_U -#define DE_OSX_I DE_I -#define DE_OSX_O DE_O -#define DE_OSX_P DE_P -#define DE_OSX_UE DE_UDIA -#define DE_OSX_PLUS DE_PLUS -#define DE_OSX_A DE_A -#define DE_OSX_S DE_S -#define DE_OSX_D DE_D -#define DE_OSX_F DE_F -#define DE_OSX_G DE_G -#define DE_OSX_H DE_H -#define DE_OSX_J DE_J -#define DE_OSX_K DE_K -#define DE_OSX_L DE_L -#define DE_OSX_OE DE_ODIA -#define DE_OSX_AE DE_ADIA -#define DE_OSX_HASH DE_HASH -#define DE_OSX_LESS DE_LABK -#define DE_OSX_Y DE_Y -#define DE_OSX_X DE_X -#define DE_OSX_C DE_C -#define DE_OSX_V DE_V -#define DE_OSX_B DE_B -#define DE_OSX_N DE_N -#define DE_OSX_M DE_M -#define DE_OSX_COMM DE_COMM -#define DE_OSX_DOT DE_DOT -#define DE_OSX_MINS DE_MINS - -#define DE_OSX_RING DE_DEG -#define DE_OSX_EXLM DE_EXLM -#define DE_OSX_DQOT DE_DQUO -#define DE_OSX_PARA DE_SECT -#define DE_OSX_DLR DE_DLR -#define DE_OSX_PERC DE_PERC -#define DE_OSX_AMPR DE_AMPR -#define DE_OSX_SLSH DE_SLSH -#define DE_OSX_LPRN DE_LPRN -#define DE_OSX_RPRN DE_RPRN -#define DE_OSX_EQL DE_EQL -#define DE_OSX_QST DE_QUES -#define DE_OSX_GRV DE_GRV -#define DE_OSX_ASTR DE_ASTR -#define DE_OSX_QUOT DE_QUOT -#define DE_OSX_MORE DE_RABK -#define DE_OSX_COLN DE_COLN -#define DE_OSX_SCLN DE_SCLN -#define DE_OSX_UNDS DE_UNDS - -#define DE_OSX_LBRC DE_LBRC -#define DE_OSX_RBRC DE_RBRC -#define DE_OSX_PIPE DE_PIPE -#define DE_OSX_LCBR DE_LCBR -#define DE_OSX_RCBR DE_RCBR -#define DE_OSX_AT DE_AT -#define DE_OSX_EURO DE_EURO -#define DE_OSX_TILD DE_TILD -#define DE_OSX_BSLS DE_BSLS diff --git a/quantum/keymap_extras/keymap_greek.h b/quantum/keymap_extras/keymap_greek.h index a2525959bc9e..8c233812040c 100644 --- a/quantum/keymap_extras/keymap_greek.h +++ b/quantum/keymap_extras/keymap_greek.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │       │ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ ; │ ς │ Ε │ Ρ │ Τ │ Υ │ Θ │ Ι │ Ο │ Π │ [ │ ] │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ Α │ Σ │ Δ │ Φ │ Γ │ Η │ Ξ │ Κ │ Λ │ ΄ │ ' │ \ │    │ + * │ │ ; │ ς │ Ε │ Ρ │ Τ │ Υ │ Θ │ Ι │ Ο │ Π │ [ │ ] │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ Α │ Σ │ Δ │ Φ │ Γ │ Η │ Ξ │ Κ │ Λ │ ΄ │ ' │ \ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │   │ Ζ │ Χ │ Ψ │ Ω │ Β │ Ν │ Μ │ , │ . │ / │          │ + * │ │ │ Ζ │ Χ │ Ψ │ Ω │ Β │ Ν │ Μ │ , │ . │ / │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -87,15 +87,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │       │ + * │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ : │ ΅ │   │   │   │   │   │   │   │   │ { │ } │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │ ¨ │ " │ | │    │ + * │ │ : │ ΅ │ │ │ │ │ │ │ │ │ { │ } │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ ¨ │ " │ | │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │   │   │   │   │   │   │   │   │ < │ > │ ? │          │ + * │ │ │ │ │ │ │ │ │ │ < │ > │ ? │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -128,15 +128,15 @@ /* AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │   │   │ ² │ ³ │ £ │ § │ ¶ │   │ ¤ │ ¦ │ ° │ ± │ ½ │       │ + * │ │ │ ² │ ³ │ £ │ § │ ¶ │ │ ¤ │ ¦ │ ° │ ± │ ½ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │ € │ ® │   │ ¥ │   │   │   │   │ « │ » │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │   │ ¬ │    │ + * │ │ │ │ € │ ® │ │ ¥ │ │ │ │ │ « │ » │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ ¬ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │   │   │   │ © │   │   │   │   │   │   │   │          │ + * │ │ │ │ │ © │ │ │ │ │ │ │ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 diff --git a/quantum/keymap_extras/keymap_hebrew.h b/quantum/keymap_extras/keymap_hebrew.h index ea9ac5ed4c4c..87b488f04d8c 100644 --- a/quantum/keymap_extras/keymap_hebrew.h +++ b/quantum/keymap_extras/keymap_hebrew.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ; │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │       │ + * │ ; │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ / │ ' │ פ │ ם │ ן │ ו │ ט │ א │ ר │ ק │ ] │ [ │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ ף │ ך │ ל │ ח │ י │ ע │ כ │ ג │ ד │ ש │ , │ \ │    │ + * │ │ / │ ' │ פ │ ם │ ן │ ו │ ט │ א │ ר │ ק │ ] │ [ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ ף │ ך │ ל │ ח │ י │ ע │ כ │ ג │ ד │ ש │ , │ \ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │   │ ץ │ ת │ צ │ מ │ נ │ ה │ ב │ ס │ ז │ . │          │ + * │ │ │ ץ │ ת │ צ │ מ │ נ │ ה │ ב │ ס │ ז │ . │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -87,15 +87,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ) │ ( │ _ │ + │       │ + * │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ) │ ( │ _ │ + │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │ } │ { │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │ : │ " │ | │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ } │ { │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ : │ " │ | │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │   │   │   │   │   │   │   │   │ > │ < │ ? │          │ + * │ │ │ │ │ │ │ │ │ │ > │ < │ ? │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -126,15 +126,15 @@ /* AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │   │   │   │ € │ ₪ │ ° │   │   │ × │   │   │   │   │       │ + * │ │ │ │ € │ ₪ │ ° │ │ │ × │ │ │ │ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │ װ │   │   │   │   │   │   │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │ ײ │ ױ │   │   │   │   │   │   │    │ + * │ │ │ │ │ │ │ װ │ │ │ │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ ײ │ ױ │ │ │ │ │ │ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │   │   │   │   │   │   │   │   │   │   │ ÷ │          │ + * │ │ │ │ │ │ │ │ │ │ │ │ ÷ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 diff --git a/quantum/keymap_extras/keymap_hungarian.h b/quantum/keymap_extras/keymap_hungarian.h index d5c915d1583c..a4e4b1a52232 100644 --- a/quantum/keymap_extras/keymap_hungarian.h +++ b/quantum/keymap_extras/keymap_hungarian.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ 0 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ Ö │ Ü │ Ó │       │ + * │ 0 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ Ö │ Ü │ Ó │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │ Ő │ Ú │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ A │ S │ D │ F │ G │ H │ J │ K │ L │ É │ Á │ Ű │    │ + * │ │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │ Ő │ Ú │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ É │ Á │ Ű │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ Í │ Y │ X │ C │ V │ B │ N │ M │ , │ . │ - │          │ + * │ │ Í │ Y │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -88,15 +88,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ § │ ' │ " │ + │ ! │ % │ / │ = │ ( │ ) │   │   │   │       │ + * │ § │ ' │ " │ + │ ! │ % │ / │ = │ ( │ ) │ │ │ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │   │   │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │   │   │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │   │   │   │   │   │   │   │   │ ? │ : │ _ │          │ + * │ │ │ │ │ │ │ │ │ │ ? │ : │ _ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -117,15 +117,15 @@ /* AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │   │ ~ │ ˇ │ ^ │ ˘ │ ° │ ˛ │ ` │ ˙ │ ´ │ ˝ │ ¨ │ ¸ │       │ + * │ │ ~ │ ˇ │ ^ │ ˘ │ ° │ ˛ │ ` │ ˙ │ ´ │ ˝ │ ¨ │ ¸ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ \ │ | │ Ä │   │   │   │ € │   │   │   │ ÷ │ × │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ ä │ đ │ Đ │ [ │ ] │   │   │ ł │ Ł │ $ │ ß │ ¤ │    │ + * │ │ \ │ | │ Ä │ │ │ │ € │ │ │ │ ÷ │ × │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ ä │ đ │ Đ │ [ │ ] │ │ │ ł │ Ł │ $ │ ß │ ¤ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ < │ > │ # │ & │ @ │ { │ } │   │ ; │   │ * │          │ + * │ │ < │ > │ # │ & │ @ │ { │ } │ │ ; │ │ * │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -169,22 +169,3 @@ #define HU_RCBR ALGR(HU_N) // } #define HU_SCLN ALGR(HU_COMM) // ; #define HU_ASTR ALGR(HU_MINS) // * - -// DEPRECATED -#define HU_OE HU_ODIA -#define HU_UE HU_UDIA -#define HU_OO HU_OACU -#define HU_OEE HU_ODAC -#define HU_UU HU_UACU -#define HU_EE HU_EACU -#define HU_AA HU_AACU -#define HU_UEE HU_UDAC -#define HU_II HU_IACU -#define HU_PARA HU_SECT -#define HU_DQOT HU_DQUO -#define HU_QST HU_QUES -#define HU_BRV HU_BREV -#define HU_RING HU_RNGA -#define HU_CRSS HU_MUL -#define HU_LESS HU_LABK -#define HU_MORE HU_RABK diff --git a/quantum/keymap_extras/keymap_icelandic.h b/quantum/keymap_extras/keymap_icelandic.h index 2ccb4b543cea..43e4a6e872a6 100644 --- a/quantum/keymap_extras/keymap_icelandic.h +++ b/quantum/keymap_extras/keymap_icelandic.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ° │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ Ö │ - │       │ + * │ ° │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ Ö │ - │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ Ð │ ' │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Æ │ ´ │ + │    │ + * │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ Ð │ ' │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Æ │ ´ │ + │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ < │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ Þ │          │ + * │ │ < │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ Þ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -88,15 +88,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ¨ │ ! │ " │ # │ $ │ % │ & │ / │ ( │ ) │ = │   │ _ │       │ + * │ ¨ │ ! │ " │ # │ $ │ % │ & │ / │ ( │ ) │ = │ │ _ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │   │ ? │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │   │ * │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ ? │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ * │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ > │   │   │   │   │   │   │   │ ; │ : │   │          │ + * │ │ > │ │ │ │ │ │ │ │ ; │ : │ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -123,15 +123,15 @@ /* AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ° │   │   │   │   │   │   │ { │ [ │ ] │ } │ \ │   │       │ + * │ ° │ │ │ │ │ │ │ { │ [ │ ] │ } │ \ │ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ @ │   │ € │   │   │   │   │   │   │   │   │ ~ │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │ ^ │ ` │    │ + * │ │ @ │ │ € │ │ │ │ │ │ │ │ │ ~ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ ^ │ ` │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ | │   │   │   │   │   │   │ µ │   │   │   │          │ + * │ │ | │ │ │ │ │ │ │ µ │ │ │ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 diff --git a/quantum/keymap_extras/keymap_irish.h b/quantum/keymap_extras/keymap_irish.h index 6825d4311f1e..73a4c8028d17 100644 --- a/quantum/keymap_extras/keymap_irish.h +++ b/quantum/keymap_extras/keymap_irish.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │       │ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │    │ + * │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │          │ + * │ │ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -88,15 +88,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ¬ │ ! │ " │ £ │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │       │ + * │ ¬ │ ! │ " │ £ │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │ { │ } │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │ : │ @ │ ~ │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ { │ } │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ : │ @ │ ~ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ | │   │   │   │   │   │   │   │ < │ > │ ? │          │ + * │ │ | │ │ │ │ │ │ │ │ < │ > │ ? │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -128,15 +128,15 @@ /* AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ¦ │   │   │   │ € │   │   │   │   │   │   │   │   │       │ + * │ ¦ │ │ │ │ € │ │ │ │ │ │ │ │ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │ É │   │   │   │ Ú │ Í │ Ó │   │   │   │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ Á │   │   │   │   │   │   │   │   │   │ ´ │   │    │ + * │ │ │ │ É │ │ │ │ Ú │ Í │ Ó │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ Á │ │ │ │ │ │ │ │ │ │ ´ │ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │   │   │   │   │   │   │   │   │   │   │   │          │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 diff --git a/quantum/keymap_extras/keymap_italian.h b/quantum/keymap_extras/keymap_italian.h index 616b6dfce998..be495f85ba83 100644 --- a/quantum/keymap_extras/keymap_italian.h +++ b/quantum/keymap_extras/keymap_italian.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ \ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ' │ ì │       │ + * │ \ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ' │ ì │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ è │ + │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ò │ à │ ù │    │ + * │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ è │ + │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ò │ à │ ù │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ < │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ - │          │ + * │ │ < │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -88,15 +88,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ | │ ! │ " │ £ │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ ^ │       │ + * │ | │ ! │ " │ £ │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ ^ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │ é │ * │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │ ç │ ° │ § │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ é │ * │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ ç │ ° │ § │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ > │   │   │   │   │   │   │   │ ; │ : │ _ │          │ + * │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -128,15 +128,15 @@ /* AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │   │   │   │   │   │   │   │   │   │   │   │   │   │       │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │ € │   │   │   │   │   │   │   │ [ │ ] │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │ @ │ # │   │    │ + * │ │ │ │ € │ │ │ │ │ │ │ │ [ │ ] │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ @ │ # │ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │   │   │   │   │   │   │   │   │   │   │   │          │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 2 @@ -149,36 +149,17 @@ /* Shift+AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │   │   │   │   │   │   │   │   │   │   │   │   │   │       │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │ { │ } │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │   │   │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ { │ } │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │   │   │   │   │   │   │   │   │   │   │   │          │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 2 #define IT_LCBR S(ALGR(IT_EGRV)) // { #define IT_RCBR S(ALGR(IT_PLUS)) // } - -// DEPRECATED -#define IT_BKSL IT_BSLS -#define IT_APOS IT_QUOT -#define IT_IACC IT_IGRV -#define IT_EACC IT_EGRV -#define IT_OACC IT_OGRV -#define IT_AACC IT_AGRV -#define IT_UACC IT_UGRV -#define IT_LESS IT_LABK -#define IT_DQOT IT_DQUO -#define IT_STRL IT_PND -#define IT_QST IT_QUES -#define IT_CRC IT_CIRC -#define IT_MORE IT_RABK -#define IT_SHRP IT_HASH - -#define IT_X_PLUS X_RBRACKET -#define IT_ACUT diff --git a/quantum/keymap_extras/keymap_italian_osx_ansi.h b/quantum/keymap_extras/keymap_italian_osx_ansi.h index 1f7fe8afc969..c2b8e3cad6df 100644 --- a/quantum/keymap_extras/keymap_italian_osx_ansi.h +++ b/quantum/keymap_extras/keymap_italian_osx_ansi.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ - * │ < │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ' │ ì │     │ + * │ < │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ' │ ì │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ - * │     │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ è │ + │ ù │ + * │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ è │ + │ ù │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ - * │      │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ò │ à │      │ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ò │ à │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──────┤ - * │        │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ - │        │ + * │ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │ * ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ - * │     │    │     │                       │     │    │     │ + * │ │ │ │ │ │ │ │ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ */ // Row 1 @@ -88,15 +88,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ - * │ > │ ! │ " │ £ │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ ^ │     │ + * │ > │ ! │ " │ £ │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ ^ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ - * │     │   │   │   │   │   │   │   │   │   │   │ é │ * │ § │ + * │ │ │ │ │ │ │ │ │ │ │ │ é │ * │ § │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ - * │      │   │   │   │   │   │   │   │   │   │ ç │ ° │      │ + * │ │ │ │ │ │ │ │ │ │ │ ç │ ° │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──────┤ - * │        │   │   │   │   │   │   │   │ ; │ : │ _ │        │ + * │ │ │ │ │ │ │ │ │ ; │ : │ _ │ │ * ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ - * │     │    │     │                       │     │    │     │ + * │ │ │ │ │ │ │ │ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ */ // Row 1 @@ -128,15 +128,15 @@ /* Alted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ - * │ ≤ │ « │ “ │ ‘ │ ¥ │ ~ │ ‹ │ ÷ │ ´ │ ` │ ≠ │ ¡ │ ˆ │     │ + * │ ≤ │ « │ “ │ ‘ │ ¥ │ ~ │ ‹ │ ÷ │ ´ │ ` │ ≠ │ ¡ │ ˆ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ - * │     │ „ │ Ω │ € │ ® │ ™ │ Æ │ ¨ │ Œ │ Ø │ π │ [ │ ] │ ¶ │ + * │ │ „ │ Ω │ € │ ® │ ™ │ Æ │ ¨ │ Œ │ Ø │ π │ [ │ ] │ ¶ │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ - * │      │ Å │ ß │ ∂ │ ƒ │ ∞ │ ∆ │ ª │ º │ ¬ │ @ │ # │      │ + * │ │ Å │ ß │ ∂ │ ƒ │ ∞ │ ∆ │ ª │ º │ ¬ │ @ │ # │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──────┤ - * │        │ ∑ │ † │ © │ √ │ ∫ │ ˜ │ µ │ … │ • │ – │        │ + * │ │ ∑ │ † │ © │ √ │ ∫ │ ˜ │ µ │ … │ • │ – │ │ * ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ - * │     │    │     │                       │     │    │     │ + * │ │ │ │ │ │ │ │ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ */ // Row 1 @@ -194,15 +194,15 @@ /* Shift+Alted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ - * │ ≥ │ » │ ” │ ’ │ ¢ │ ‰ │ › │ ⁄ │  │   │ ≈ │ ¿ │ ± │     │ + * │ ≥ │ » │ ” │ ’ │ ¢ │ ‰ │ › │ ⁄ │  │ │ ≈ │ ¿ │ ± │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ - * │     │ ‚ │ À │ È │ Ì │ Ò │   │ Ù │   │   │ ∏ │ { │ } │ ◊ │ + * │ │ ‚ │ À │ È │ Ì │ Ò │ │ Ù │ │ │ ∏ │ { │ } │ ◊ │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ - * │      │   │ ¯ │ ˘ │ ˙ │ ˚ │ ¸ │ ˝ │ ˛ │ ˇ │ Ç │ ∞ │      │ + * │ │ │ ¯ │ ˘ │ ˙ │ ˚ │ ¸ │ ˝ │ ˛ │ ˇ │ Ç │ ∞ │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──────┤ - * │        │   │ ‡ │ Á │ É │ Í │ Ó │ Ú │   │ · │ — │        │ + * │ │ │ ‡ │ Á │ É │ Í │ Ó │ Ú │ │ · │ — │ │ * ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ - * │     │    │     │                       │     │    │     │ + * │ │ │ │ │ │ │ │ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ */ // Row 1 @@ -248,21 +248,3 @@ #define IT_CUAC S(A(IT_M)) // Ú #define IT_MDDT S(A(IT_DOT)) // · #define IT_MDSH S(A(IT_MINS)) // — - -// DEPRECATED -#define IT_LESS IT_LABK -#define IT_APOS IT_QUOT -#define IT_IACC IT_IGRV -#define IT_EACC IT_EGRV -#define IT_UACC IT_UGRV -#define IT_OACC IT_OGRV -#define IT_AACC IT_AGRV -#define IT_MORE IT_RABK -#define IT_DQOT IT_DQUO -#define IT_STRL IT_PND -#define IT_QST IT_QUES -#define IT_CRC IT_CIRC -#define IT_DEGR IT_DEG -#define IT_TILDE IT_TILD -#define IT_GRAVE IT_GRV -#define IT_SHRP IT_HASH diff --git a/quantum/keymap_extras/keymap_italian_osx_iso.h b/quantum/keymap_extras/keymap_italian_osx_iso.h index 5ed1e3abd48f..61f76ddba7d8 100644 --- a/quantum/keymap_extras/keymap_italian_osx_iso.h +++ b/quantum/keymap_extras/keymap_italian_osx_iso.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ - * │ \ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ' │ ì │     │ + * │ \ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ' │ ì │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ - * │     │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ è │ + │   │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐  │ - * │      │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ò │ à │ ù │  │ + * │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ è │ + │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ò │ à │ ù │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤ - * │    │ < │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ - │        │ + * │ │ < │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │ * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ - * │     │    │     │                       │     │    │     │ + * │ │ │ │ │ │ │ │ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ */ // Row 1 @@ -88,15 +88,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ - * │ | │ ! │ " │ £ │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ ^ │     │ + * │ | │ ! │ " │ £ │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ ^ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ - * │     │   │   │   │   │   │   │   │   │   │   │ é │ * │   │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐  │ - * │      │   │   │   │   │   │   │   │   │   │ ç │ ° │ § │  │ + * │ │ │ │ │ │ │ │ │ │ │ │ é │ * │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ ç │ ° │ § │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤ - * │    │ > │   │   │   │   │   │   │   │ ; │ : │ _ │        │ + * │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │ * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ - * │     │    │     │                       │     │    │     │ + * │ │ │ │ │ │ │ │ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ */ // Row 1 @@ -128,15 +128,15 @@ /* Alted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ - * │ ` │ « │ “ │ ‘ │ ¥ │ ~ │ ‹ │ ÷ │ ´ │ ` │ ≠ │ ¡ │ ˆ │     │ + * │ ` │ « │ “ │ ‘ │ ¥ │ ~ │ ‹ │ ÷ │ ´ │ ` │ ≠ │ ¡ │ ˆ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ - * │     │ „ │ Ω │ € │ ® │ ™ │ Æ │ ¨ │ Œ │ Ø │ π │ [ │ ] │   │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐  │ - * │      │ Å │ ß │ ∂ │ ƒ │ ∞ │ ∆ │ ª │ º │ ¬ │ @ │ # │ ¶ │  │ + * │ │ „ │ Ω │ € │ ® │ ™ │ Æ │ ¨ │ Œ │ Ø │ π │ [ │ ] │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ Å │ ß │ ∂ │ ƒ │ ∞ │ ∆ │ ª │ º │ ¬ │ @ │ # │ ¶ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤ - * │    │ ≤ │ ∑ │ † │ © │ √ │ ∫ │ ˜ │ µ │ … │ • │ – │        │ + * │ │ ≤ │ ∑ │ † │ © │ √ │ ∫ │ ˜ │ µ │ … │ • │ – │ │ * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ - * │     │    │     │                       │     │    │     │ + * │ │ │ │ │ │ │ │ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ */ // Row 1 @@ -194,15 +194,15 @@ /* Shift+Alted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ - * │ ı │ » │ ” │ ’ │ ¢ │ ‰ │ › │ ⁄ │  │   │ ≈ │ ¿ │ ± │     │ + * │ ı │ » │ ” │ ’ │ ¢ │ ‰ │ › │ ⁄ │  │ │ ≈ │ ¿ │ ± │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ - * │     │ ‚ │ À │ È │ Ì │ Ò │   │ Ù │   │   │ ∏ │ { │ } │   │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐  │ - * │      │   │ ¯ │ ˘ │ ˙ │ ˚ │ ¸ │ ˝ │ ˛ │ ˇ │ Ç │   │ ◊ │  │ + * │ │ ‚ │ À │ È │ Ì │ Ò │ │ Ù │ │ │ ∏ │ { │ } │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ ¯ │ ˘ │ ˙ │ ˚ │ ¸ │ ˝ │ ˛ │ ˇ │ Ç │ │ ◊ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤ - * │    │ ≥ │   │ ‡ │ Á │ É │ Í │ Ó │ Ú │   │ · │ — │        │ + * │ │ ≥ │ │ ‡ │ Á │ É │ Í │ Ó │ Ú │ │ · │ — │ │ * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ - * │     │    │     │                       │     │    │     │ + * │ │ │ │ │ │ │ │ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ */ // Row 1 @@ -249,21 +249,3 @@ #define IT_CUAC S(A(IT_M)) // Ú #define IT_MDDT S(A(IT_DOT)) // · #define IT_MDSH S(A(IT_MINS)) // — - -// DEPRECATED -#define IT_APOS IT_QUOT -#define IT_IACC IT_IGRV -#define IT_EACC IT_EGRV -#define IT_OACC IT_OGRV -#define IT_AACC IT_AGRV -#define IT_UACC IT_UGRV -#define IT_LESS IT_LABK -#define IT_DQOT IT_DQUO -#define IT_STRL IT_PND -#define IT_QST IT_QUES -#define IT_CRC IT_CIRC -#define IT_DEGR IT_DEG -#define IT_MORE IT_RABK -#define IT_TILDE IT_TILD -#define IT_GRAVE IT_GRV -#define IT_SHRP IT_HASH diff --git a/quantum/keymap_extras/keymap_jp.h b/quantum/keymap_extras/keymap_jp.h index e608481d8733..d10feb585613 100644 --- a/quantum/keymap_extras/keymap_jp.h +++ b/quantum/keymap_extras/keymap_jp.h @@ -28,15 +28,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ - * │Z↔︎H│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ ^ │ ¥ │   │ + * │Z↔︎H│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ ^ │ ¥ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ - * │     │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ @ │ [ │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │ Eisū │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ : │ ] │    │ + * │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ @ │ [ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ Eisū │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ : │ ] │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┤ - * │        │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ \ │      │ + * │ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ \ │ │ * ├─────┬──┴┬──┴──┬┴───┴┬──┴───┴──┬┴───┴┬──┴┬──┴┬──┴┬──┴┬─────┤ - * │     │   │     │Muhen│         │ Hen │K↔H│   │   │   │     │ + * │ │ │ │Muhen│ │ Hen │K↔H│ │ │ │ │ * └─────┴───┴─────┴─────┴─────────┴─────┴───┴───┴───┴───┴─────┘ */ // Row 1 @@ -100,15 +100,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ - * │   │ ! │ " │ # │ $ │ % │ & │ ' │ ( │ ) │   │ = │ ~ │ | │   │ + * │ │ ! │ " │ # │ $ │ % │ & │ ' │ ( │ ) │ │ = │ ~ │ | │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ - * │     │   │   │   │   │   │   │   │   │   │   │ ` │ { │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │ Caps │   │   │   │   │   │   │   │   │   │ + │ * │ } │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ ` │ { │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ Caps │ │ │ │ │ │ │ │ │ │ + │ * │ } │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┤ - * │        │   │   │   │   │   │   │   │ < │ > │ ? │ _ │      │ + * │ │ │ │ │ │ │ │ │ < │ > │ ? │ _ │ │ * ├─────┬──┴┬──┴──┬┴───┴┬──┴───┴──┬┴───┴┬──┴┬──┴┬──┴┬──┴┬─────┤ - * │     │   │     │     │         │     │   │   │   │   │     │ + * │ │ │ │ │ │ │ │ │ │ │ │ * └─────┴───┴─────┴─────┴─────────┴─────┴───┴───┴───┴───┴─────┘ */ // Row 1 @@ -137,12 +137,3 @@ #define JP_RABK S(JP_DOT) // > #define JP_QUES S(JP_SLSH) // ? #define JP_UNDS S(JP_BSLS) // _ - -// DEPRECATED -#define JP_ZHTG JP_ZKHK -#define JP_DQT JP_DQUO -#define JP_LT JP_LABK -#define JP_GT JP_RABK - -#define JP_MEISU KC_LANG2 // Eisū (英数) on macOS -#define JP_MKANA KC_LANG1 // Kana (かな) on macOS diff --git a/quantum/keymap_extras/keymap_korean.h b/quantum/keymap_extras/keymap_korean.h index da914767b8a7..74be122dade2 100644 --- a/quantum/keymap_extras/keymap_korean.h +++ b/quantum/keymap_extras/keymap_korean.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │       │ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │  ₩  │ + * │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ ₩ │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │      │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │        │ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ - * │        │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │          │ + * │ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ │ * ├─────┬──┴┬──┴──┬┴──┬┴───┴───┴───┴──┬┴──┬┴───┴┬──┴┬───┬─────┤ - * │     │   │     │Hnj│               │H↔Y│     │   │   │     │ + * │ │ │ │Hnj│ │H↔Y│ │ │ │ │ * └─────┴───┴─────┴───┴───────────────┴───┴─────┴───┴───┴─────┘ */ // Row 1 @@ -85,20 +85,20 @@ #define KR_DOT KC_DOT // . #define KR_SLSH KC_SLSH // / // Row 5 -#define KR_HANJ KC_LANG2 // Hanja (한자) -#define KR_HAEN KC_LANG1 // Han ↔ Yeong (한 ↔ 영) +#define KR_HANJ KC_LNG2 // Hanja (한자) +#define KR_HAEN KC_LNG1 // Han ↔ Yeong (한 ↔ 영) /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │       │ + * │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │ { │ } │  |  │ + * │ │ │ │ │ │ │ │ │ │ │ │ { │ } │ | │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │      │   │   │   │   │   │   │   │   │   │ : │ " │        │ + * │ │ │ │ │ │ │ │ │ │ │ : │ " │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ - * │        │   │   │   │   │   │   │   │ < │ > │ ? │          │ + * │ │ │ │ │ │ │ │ │ < │ > │ ? │ │ * ├─────┬──┴┬──┴──┬┴──┬┴───┴───┴───┴──┬┴──┬┴───┴┬──┴┬───┬─────┤ - * │     │   │     │   │               │   │     │   │   │     │ + * │ │ │ │ │ │ │ │ │ │ │ * └─────┴───┴─────┴───┴───────────────┴───┴─────┴───┴───┴─────┘ */ // Row 1 diff --git a/quantum/keymap_extras/keymap_latvian.h b/quantum/keymap_extras/keymap_latvian.h index 452e9167bccc..3eaa2df27437 100644 --- a/quantum/keymap_extras/keymap_latvian.h +++ b/quantum/keymap_extras/keymap_latvian.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │       │ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ \ │    │ + * │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ \ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │          │ + * │ │ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -88,15 +88,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │       │ + * │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │ { │ } │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │ : │ " │ | │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ { │ } │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ : │ " │ | │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │   │   │   │   │   │   │   │   │ < │ > │ ? │          │ + * │ │ │ │ │ │ │ │ │ │ < │ > │ ? │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -127,19 +127,19 @@ /* AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ - │   │ « │ » │ € │   │ ’ │   │   │   │   │ – │   │       │ + * │ - │ │ « │ » │ € │ │ ’ │ │ │ │ │ – │ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │ Ē │ Ŗ │   │   │ Ū │ Ī │ Ō │   │   │   │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ Ā │ Š │   │   │ Ģ │   │   │ Ķ │ Ļ │   │ ´ │   │    │ + * │ │ │ │ Ē │ Ŗ │ │ │ Ū │ Ī │ Ō │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ Ā │ Š │ │ │ Ģ │ │ │ Ķ │ Ļ │ │ ´ │ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │   │ Ž │   │ Č │   │   │ Ņ │   │   │   │   │          │ + * │ │ │ Ž │ │ Č │ │ │ Ņ │ │ │ │ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 -#define LV_SHYP ALGR(LV_GRV) // - (soft hyphen) +#define LV_SHYP ALGR(LV_GRV) // ­ (soft hyphen) #define LV_NBSP ALGR(LV_1) //   (non-breaking space) #define LV_LDAQ ALGR(LV_2) // « #define LV_RDAQ ALGR(LV_3) // » @@ -166,15 +166,15 @@ /* Shift+AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │   │   │   │   │ § │ ° │   │ ± │ × │   │   │ — │   │       │ + * │ │ │ │ │ § │ ° │ │ ± │ × │ │ │ — │ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │   │   │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │ ¨ │   │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ ¨ │ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │   │   │   │   │   │   │   │   │   │   │   │          │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 diff --git a/quantum/keymap_extras/keymap_lithuanian_azerty.h b/quantum/keymap_extras/keymap_lithuanian_azerty.h index 68bcd6dc1ec1..8ca38129e3cb 100644 --- a/quantum/keymap_extras/keymap_lithuanian_azerty.h +++ b/quantum/keymap_extras/keymap_lithuanian_azerty.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ` │ ! │ - │ / │ ; │ : │ , │ . │ = │ ( │ ) │ ? │ X │       │ + * │ ` │ ! │ - │ / │ ; │ : │ , │ . │ = │ ( │ ) │ ? │ X │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ Ą │ Ž │ E │ R │ T │ Y │ U │ I │ O │ P │ Į │ W │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ A │ S │ D │ Š │ G │ H │ J │ K │ L │ Ų │ Ė │ Q │    │ + * │ │ Ą │ Ž │ E │ R │ T │ Y │ U │ I │ O │ P │ Į │ W │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ A │ S │ D │ Š │ G │ H │ J │ K │ L │ Ų │ Ė │ Q │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ < │ Z │ Ū │ C │ V │ B │ N │ M │ Č │ F │ Ę │          │ + * │ │ < │ Z │ Ū │ C │ V │ B │ N │ M │ Č │ F │ Ę │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -88,15 +88,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ~ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ + │   │       │ + * │ ~ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ + │ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │   │   │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │   │   │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ > │   │   │   │   │   │   │   │   │   │   │          │ + * │ │ > │ │ │ │ │ │ │ │ │ │ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -117,15 +117,15 @@ /* AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ´ │ @ │ _ │ # │ $ │ § │ ^ │ & │ * │ [ │ ] │ ' │ % │       │ + * │ ´ │ @ │ _ │ # │ $ │ § │ ^ │ & │ * │ [ │ ] │ ' │ % │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │ € │   │   │   │   │   │   │   │ { │ } │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │ " │ | │    │ + * │ │ │ │ € │ │ │ │ │ │ │ │ { │ } │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ " │ | │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ – │   │   │   │   │   │   │   │ „ │ “ │ \ │          │ + * │ │ – │ │ │ │ │ │ │ │ „ │ “ │ \ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 diff --git a/quantum/keymap_extras/keymap_lithuanian_qwerty.h b/quantum/keymap_extras/keymap_lithuanian_qwerty.h index 0f92562a1302..2dbb3649f75e 100644 --- a/quantum/keymap_extras/keymap_lithuanian_qwerty.h +++ b/quantum/keymap_extras/keymap_lithuanian_qwerty.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ` │ Ą │ Č │ Ę │ Ė │ Į │ Š │ Ų │ Ū │ 9 │ 0 │ - │ Ž │       │ + * │ ` │ Ą │ Č │ Ę │ Ė │ Į │ Š │ Ų │ Ū │ 9 │ 0 │ - │ Ž │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ \ │    │ + * │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ \ │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │        │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │          │ + * │ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ │ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -87,15 +87,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ~ │   │   │   │   │   │   │   │   │ ( │ ) │ _ │   │       │ + * │ ~ │ │ │ │ │ │ │ │ │ ( │ ) │ _ │ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │ { │ } │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │ : │ " │ | │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ { │ } │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ : │ " │ | │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │        │   │   │   │   │   │   │   │ < │ > │ ? │          │ + * │ │ │ │ │ │ │ │ │ < │ > │ ? │ │ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -117,15 +117,15 @@ /* AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │   │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │   │   │   │ = │       │ + * │ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ │ │ │ = │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │ € │   │   │   │   │   │   │   │   │   │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │   │   │    │ + * │ │ │ │ € │ │ │ │ │ │ │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │        │   │   │   │   │   │   │   │   │   │   │          │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -143,15 +143,15 @@ /* Shift+AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │   │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │   │   │   │ + │       │ + * │ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ │ │ │ + │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │   │   │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │   │   │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │        │   │   │   │   │   │   │   │   │   │   │          │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 diff --git a/quantum/keymap_extras/keymap_neo2.h b/quantum/keymap_extras/keymap_neo2.h index c34e9116bbd7..f9fc00d794bd 100644 --- a/quantum/keymap_extras/keymap_neo2.h +++ b/quantum/keymap_extras/keymap_neo2.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ^ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ ` │       │ + * │ ^ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ ` │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ X │ V │ L │ C │ W │ K │ H │ G │ F │ Q │ ß │ ´ │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │  L3  │ U │ I │ A │ E │ O │ S │ N │ R │ T │ D │ Y │ L3│    │ + * │ │ X │ V │ L │ C │ W │ K │ H │ G │ F │ Q │ ß │ ´ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ L3 │ U │ I │ A │ E │ O │ S │ N │ R │ T │ D │ Y │ L3│ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │L4 │ Ü │ Ö │ Ä │ P │ Z │ B │ M │ , │ . │ J │          │ + * │ │L4 │ Ü │ Ö │ Ä │ P │ Z │ B │ M │ , │ . │ J │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │ L4 │    │    │ + * │ │ │ │ │ │ L4 │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -88,55 +88,3 @@ #define NE_J KC_SLSH // J // Row 5 #define NE_L4R KC_ALGR // (layer 4) - -// DEPRECATED -#define NEO_A NE_A -#define NEO_B NE_B -#define NEO_C NE_C -#define NEO_D NE_D -#define NEO_E NE_E -#define NEO_F NE_F -#define NEO_G NE_G -#define NEO_H NE_H -#define NEO_I NE_I -#define NEO_J NE_J -#define NEO_K NE_K -#define NEO_L NE_L -#define NEO_M NE_M -#define NEO_N NE_N -#define NEO_O NE_O -#define NEO_P NE_P -#define NEO_Q NE_Q -#define NEO_R NE_R -#define NEO_S NE_S -#define NEO_T NE_T -#define NEO_U NE_U -#define NEO_V NE_V -#define NEO_W NE_W -#define NEO_X NE_X -#define NEO_Y NE_Y -#define NEO_Z NE_Z -#define NEO_AE NE_ADIA -#define NEO_OE NE_ODIA -#define NEO_UE NE_UDIA -#define NEO_SS NE_SS -#define NEO_DOT NE_DOT -#define NEO_COMM NE_COMM -#define NEO_1 NE_1 -#define NEO_2 NE_2 -#define NEO_3 NE_3 -#define NEO_4 NE_4 -#define NEO_5 NE_5 -#define NEO_6 NE_6 -#define NEO_7 NE_7 -#define NEO_8 NE_8 -#define NEO_9 NE_9 -#define NEO_0 NE_0 -#define NEO_MINS NE_MINS -#define NEO_ACUT NE_ACUT -#define NEO_GRV NE_GRV -#define NEO_CIRC NE_CIRC -#define NEO_L1_L NE_L3L -#define NEO_L1_R NE_L3R -#define NEO_L2_L NE_L4L -#define NEO_L2_R NE_L4R diff --git a/quantum/keymap_extras/keymap_norman.h b/quantum/keymap_extras/keymap_norman.h index 45727467bce1..7a5c1cbeb20c 100644 --- a/quantum/keymap_extras/keymap_norman.h +++ b/quantum/keymap_extras/keymap_norman.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │       │ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ Q │ W │ D │ F │ K │ J │ U │ R │ L │ ; │ [ │ ] │  \  │ + * │ │ Q │ W │ D │ F │ K │ J │ U │ R │ L │ ; │ [ │ ] │ \ │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │      │ A │ S │ E │ T │ G │ Y │ N │ I │ O │ H │ ' │        │ + * │ │ A │ S │ E │ T │ G │ Y │ N │ I │ O │ H │ ' │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ - * │        │ Z │ X │ C │ V │ B │ P │ M │ , │ . │ / │          │ + * │ │ Z │ X │ C │ V │ B │ P │ M │ , │ . │ / │ │ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -87,15 +87,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │       │ + * │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │ ; │ { │ } │  |  │ + * │ │ │ │ │ │ │ │ │ │ │ ; │ { │ } │ | │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │      │   │   │   │   │   │   │   │   │   │   │ " │        │ + * │ │ │ │ │ │ │ │ │ │ │ │ " │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ - * │        │   │   │   │   │   │   │   │ < │ > │ ? │          │ + * │ │ │ │ │ │ │ │ │ < │ > │ ? │ │ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 diff --git a/quantum/keymap_extras/keymap_norwegian.h b/quantum/keymap_extras/keymap_norwegian.h index 6eab4163b616..b2499f4fdab4 100644 --- a/quantum/keymap_extras/keymap_norwegian.h +++ b/quantum/keymap_extras/keymap_norwegian.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ | │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ + │ \ │       │ + * │ | │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ + │ \ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ Å │ ¨ │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Ø │ Æ │ ' │    │ + * │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ Å │ ¨ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Ø │ Æ │ ' │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ < │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ - │          │ + * │ │ < │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -88,15 +88,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ § │ ! │ " │ # │ ¤ │ % │ & │ / │ ( │ ) │ = │ ? │ ` │       │ + * │ § │ ! │ " │ # │ ¤ │ % │ & │ / │ ( │ ) │ = │ ? │ ` │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │   │ ^ │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │   │ * │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ ^ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ * │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ > │   │   │   │   │   │   │   │ ; │ : │ _ │          │ + * │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -125,15 +125,15 @@ /* AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │   │   │ @ │ £ │ $ │ € │   │ { │ [ │ ] │ } │   │ ´ │       │ + * │ │ │ @ │ £ │ $ │ € │ │ { │ [ │ ] │ } │ │ ´ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │   │ ~ │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │   │   │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ ~ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │   │   │   │   │   │   │   │ µ │   │   │   │          │ + * │ │ │ │ │ │ │ │ │ µ │ │ │ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -150,26 +150,3 @@ #define NO_TILD ALGR(NO_DIAE) // ~ (dead) // Row 4 #define NO_MICR ALGR(NO_M) // µ - -// DEPRECATED -#define NO_AM NO_ARNG -#define NO_AA NO_ARNG -#define NO_OSLH NO_OSTR -#define NO_APOS NO_QUOT -#define NO_LESS NO_LABK -#define NO_QUO2 NO_DQUO -#define NO_BULT NO_CURR -#define NO_GRTR NO_RABK -#define NO_MU NO_MICR -// Norwegian macOS symbols -#define NO_ACUT_MAC NO_BSLS // ´ -#define NO_APOS_MAC NO_LABK // ' -#define NO_AT_MAC NO_QUOT // @ -#define NO_BSLS_MAC S(ALGR(NO_7)) // (backslash) -#define NO_DLR_MAC S(NO_4) // $ -#define NO_GRV_MAC ALGR(NO_BSLS) // ` -#define NO_GRTR_MAC S(NO_PIPE) // > -#define NO_LCBR_MAC S(ALGR(NO_8)) // { -#define NO_LESS_MAC NO_PIPE // < -#define NO_PIPE_MAC ALGR(NO_7) // | -#define NO_RCBR_MAC S(ALGR(NO_9)) // } diff --git a/quantum/keymap_extras/keymap_plover.h b/quantum/keymap_extras/keymap_plover.h index f27d2ba77ab1..cd07211bca15 100644 --- a/quantum/keymap_extras/keymap_plover.h +++ b/quantum/keymap_extras/keymap_plover.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │   │Num│   │   │   │   │   │   │   │   │   │   │   │       │ + * │ │Num│ │ │ │ │ │ │ │ │ │ │ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ S │ T │ P │ H │   │ * │ F │ P │ L │ T │ D │   │     │ + * │ │ S │ T │ P │ H │ │ * │ F │ P │ L │ T │ D │ │ │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │      │   │ K │ W │ R │   │   │ R │ B │ G │ S │ Z │        │ + * │ │ │ K │ W │ R │ │ │ R │ B │ G │ S │ Z │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ - * │        │   │   │ A │ O │   │ E │ U │   │   │   │          │ + * │ │ │ │ A │ O │ │ E │ U │ │ │ │ │ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 diff --git a/quantum/keymap_extras/keymap_polish.h b/quantum/keymap_extras/keymap_polish.h index a5c5cec54337..e5a32f22db9d 100644 --- a/quantum/keymap_extras/keymap_polish.h +++ b/quantum/keymap_extras/keymap_polish.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │       │ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │  \  │ + * │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │      │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │        │ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ - * │        │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │          │ + * │ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ │ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -87,15 +87,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │       │ + * │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │ { │ } │  |  │ + * │ │ │ │ │ │ │ │ │ │ │ │ { │ } │ | │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │      │   │   │   │   │   │   │   │   │   │ : │ " │        │ + * │ │ │ │ │ │ │ │ │ │ │ : │ " │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ - * │        │   │   │   │   │   │   │   │ < │ > │ ? │          │ + * │ │ │ │ │ │ │ │ │ < │ > │ ? │ │ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -126,15 +126,15 @@ /* AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │   │   │   │   │   │   │   │   │   │   │   │   │   │       │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │ Ę │   │   │   │ € │   │ Ó │   │   │   │     │ + * │ │ │ │ Ę │ │ │ │ € │ │ Ó │ │ │ │ │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │      │ Ą │ Ś │   │   │   │   │   │   │ Ł │   │   │        │ + * │ │ Ą │ Ś │ │ │ │ │ │ │ Ł │ │ │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ - * │        │ Ż │ Ź │ Ć │   │   │ Ń │   │   │   │   │          │ + * │ │ Ż │ Ź │ Ć │ │ │ Ń │ │ │ │ │ │ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 2 diff --git a/quantum/keymap_extras/keymap_portuguese.h b/quantum/keymap_extras/keymap_portuguese.h index 84851b334a81..19d7dcd81700 100644 --- a/quantum/keymap_extras/keymap_portuguese.h +++ b/quantum/keymap_extras/keymap_portuguese.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ \ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ' │ « │       │ + * │ \ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ' │ « │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ + │ ´ │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Ç │ º │ ~ │    │ + * │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ + │ ´ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Ç │ º │ ~ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ < │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ - │          │ + * │ │ < │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -88,15 +88,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ | │ ! │ " │ # │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ » │       │ + * │ | │ ! │ " │ # │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ » │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │ * │ ` │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │ ª │ ^ │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ * │ ` │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ ª │ ^ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ > │   │   │   │   │   │   │   │ ; │ : │ _ │          │ + * │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -127,15 +127,15 @@ /* AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │   │   │ @ │ £ │ § │   │   │ { │ [ │ ] │ } │   │   │       │ + * │ │ │ @ │ £ │ § │ │ │ { │ [ │ ] │ } │ │ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │ € │   │   │   │   │   │   │   │ ¨ │   │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │   │   │    │ + * │ │ │ │ € │ │ │ │ │ │ │ │ ¨ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │   │   │   │   │   │   │   │   │   │   │   │          │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 diff --git a/quantum/keymap_extras/keymap_portuguese_osx_iso.h b/quantum/keymap_extras/keymap_portuguese_osx_iso.h index b2e52063a97e..78346af2854d 100644 --- a/quantum/keymap_extras/keymap_portuguese_osx_iso.h +++ b/quantum/keymap_extras/keymap_portuguese_osx_iso.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ - * │ § │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ' │ + │     │ + * │ § │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ' │ + │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ - * │     │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ º │ ´ │   │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐  │ - * │      │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Ç │ ~ │ \ │  │ + * │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ º │ ´ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Ç │ ~ │ \ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤ - * │    │ < │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ - │        │ + * │ │ < │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │ * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ - * │     │    │     │                       │     │    │     │ + * │ │ │ │ │ │ │ │ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ */ // Row 1 @@ -88,15 +88,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ - * │ ± │ ! │ " │ # │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ * │     │ + * │ ± │ ! │ " │ # │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ * │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ - * │     │   │   │   │   │   │   │   │   │   │   │ ª │ ` │   │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐  │ - * │      │   │   │   │   │   │   │   │   │   │   │ ^ │ | │  │ + * │ │ │ │ │ │ │ │ │ │ │ │ ª │ ` │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ ^ │ | │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤ - * │    │ > │   │   │   │   │   │   │   │ ; │ : │ _ │        │ + * │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │ * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ - * │     │    │     │                       │     │    │     │ + * │ │ │ │ │ │ │ │ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ */ // Row 1 @@ -127,15 +127,15 @@ /* Alted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ - * │   │  │ @ │ € │ £ │ ‰ │ ¶ │ ÷ │ [ │ ] │ ≠ │   │   │     │ + * │ │  │ @ │ € │ £ │ ‰ │ ¶ │ ÷ │ [ │ ] │ ≠ │ │ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ - * │     │ Œ │ ∑ │ Æ │ ® │ ™ │ ¥ │ † │ ı │ Ø │ π │ ° │ ¨ │   │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐  │ - * │      │ Å │ ß │ ∂ │ ƒ │ ˙ │ ˇ │ ¯ │ „ │ ‘ │ ¸ │ ˜ │ ‹ │  │ + * │ │ Œ │ ∑ │ Æ │ ® │ ™ │ ¥ │ † │ ı │ Ø │ π │ ° │ ¨ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ Å │ ß │ ∂ │ ƒ │ ˙ │ ˇ │ ¯ │ „ │ ‘ │ ¸ │ ˜ │ ‹ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤ - * │    │ ≤ │ Ω │ « │ © │ √ │ ∫ │ ¬ │ µ │ “ │ … │ — │        │ + * │ │ ≤ │ Ω │ « │ © │ √ │ ∫ │ ¬ │ µ │ “ │ … │ — │ │ * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ - * │     │    │     │                       │     │    │     │ + * │ │ │ │ │ │ │ │ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ */ // Row 1 @@ -190,15 +190,15 @@ /* Shift+Alted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ - * │   │ ¡ │ fi │ fl │ ¢ │ ∞ │ • │ ⁄ │ { │ } │ ≈ │ ¿ │ ◊ │     │ + * │ │ ¡ │ fi │ fl │ ¢ │ ∞ │ • │ ⁄ │ { │ } │ ≈ │ ¿ │ ◊ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ - * │     │   │   │   │   │   │   │ ‡ │ ˚ │   │ ∏ │   │ ˝ │   │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐  │ - * │      │   │   │ ∆ │   │   │   │   │ ‚ │ ’ │ ˛ │ ˆ │ › │  │ + * │ │ │ │ │ │ │ │ ‡ │ ˚ │ │ ∏ │ │ ˝ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ ∆ │ │ │ │ │ ‚ │ ’ │ ˛ │ ˆ │ › │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤ - * │    │ ≥ │   │ » │   │   │   │   │   │ ” │ · │ – │        │ + * │ │ ≥ │ │ » │ │ │ │ │ │ ” │ · │ – │ │ * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ - * │     │    │     │                       │     │    │     │ + * │ │ │ │ │ │ │ │ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ */ // Row 1 diff --git a/quantum/keymap_extras/keymap_romanian.h b/quantum/keymap_extras/keymap_romanian.h index e2b8483dfd2a..27086d684c50 100644 --- a/quantum/keymap_extras/keymap_romanian.h +++ b/quantum/keymap_extras/keymap_romanian.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ „ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │       │ + * │ „ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ Ă │ Î │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Ș │ Ț │ Â │    │ + * │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ Ă │ Î │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Ș │ Ț │  │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │          │ + * │ │ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -88,15 +88,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ” │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │       │ + * │ ” │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │   │   │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │   │   │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ | │   │   │   │   │   │   │   │ ; │ : │ ? │          │ + * │ │ | │ │ │ │ │ │ │ │ ; │ : │ ? │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -121,15 +121,15 @@ /* AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ` │ ~ │ ˇ │ ^ │ ˘ │ ° │ ˛ │ ` │ ˙ │ ´ │ ˝ │ ¨ │ ¸ │       │ + * │ ` │ ~ │ ˇ │ ^ │ ˘ │ ° │ ˛ │ ` │ ˙ │ ´ │ ˝ │ ¨ │ ¸ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │ € │   │   │   │   │   │   │ § │ [ │ ] │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │ ß │ Đ │   │   │   │   │   │ Ł │   │ ' │   │    │ + * │ │ │ │ € │ │ │ │ │ │ │ § │ [ │ ] │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ ß │ Đ │ │ │ │ │ │ Ł │ │ ' │ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │   │   │   │ © │   │   │   │   │ < │ > │   │          │ + * │ │ │ │ │ © │ │ │ │ │ < │ > │ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -163,15 +163,15 @@ /* Shift+AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ~ │   │   │   │   │   │   │   │   │   │   │ – │ ± │       │ + * │ ~ │ │ │ │ │ │ │ │ │ │ │ – │ ± │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │ { │ } │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │ " │   │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ { │ } │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ " │ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │   │   │   │   │   │   │   │   │ « │ » │   │          │ + * │ │ │ │ │ │ │ │ │ │ « │ » │ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 diff --git a/quantum/keymap_extras/keymap_russian.h b/quantum/keymap_extras/keymap_russian.h index eb0581147c42..71aece677d86 100644 --- a/quantum/keymap_extras/keymap_russian.h +++ b/quantum/keymap_extras/keymap_russian.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ Ё │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │       │ + * │ Ё │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ Й │ Ц │ У │ К │ Е │ Н │ Г │ Ш │ Щ │ З │ Х │ Ъ │  \  │ + * │ │ Й │ Ц │ У │ К │ Е │ Н │ Г │ Ш │ Щ │ З │ Х │ Ъ │ \ │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │      │ Ф │ Ы │ В │ А │ П │ Р │ О │ Л │ Д │ Ж │ Э │        │ + * │ │ Ф │ Ы │ В │ А │ П │ Р │ О │ Л │ Д │ Ж │ Э │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ - * │        │ Я │ Ч │ С │ М │ И │ Т │ Ь │ Б │ Ю │ . │          │ + * │ │ Я │ Ч │ С │ М │ И │ Т │ Ь │ Б │ Ю │ . │ │ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -87,15 +87,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │   │ ! │ " │ № │ ; │ % │ : │ ? │ * │ ( │ ) │ _ │ + │       │ + * │ │ ! │ " │ № │ ; │ % │ : │ ? │ * │ ( │ ) │ _ │ + │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │   │   │  /  │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ / │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │      │   │   │   │   │   │   │   │   │   │   │   │        │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ - * │        │   │   │   │   │   │   │   │   │   │ , │          │ + * │ │ │ │ │ │ │ │ │ │ │ , │ │ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -118,15 +118,15 @@ /* AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │   │   │   │   │   │   │   │   │ ₽ │   │   │   │   │       │ + * │ │ │ │ │ │ │ │ │ ₽ │ │ │ │ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │   │   │     │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │      │   │   │   │   │   │   │   │   │   │   │   │        │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ - * │        │   │   │   │   │   │   │   │   │   │   │          │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 diff --git a/quantum/keymap_extras/keymap_serbian.h b/quantum/keymap_extras/keymap_serbian.h index 738a2d4afb32..a17dcc5f3431 100644 --- a/quantum/keymap_extras/keymap_serbian.h +++ b/quantum/keymap_extras/keymap_serbian.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ' │ + │       │ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ' │ + │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ Љ │ Њ │ Е │ Р │ Т │ З │ У │ И │ О │ П │ Ш │ Ђ │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ А │ С │ Д │ Ф │ Г │ Х │ Ј │ К │ Л │ Ч │ Ћ │ Ж │    │ + * │ │ Љ │ Њ │ Е │ Р │ Т │ З │ У │ И │ О │ П │ Ш │ Ђ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ А │ С │ Д │ Ф │ Г │ Х │ Ј │ К │ Л │ Ч │ Ћ │ Ж │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ < │ Ѕ │ Џ │ Ц │ В │ Б │ Н │ М │ , │ . │ - │          │ + * │ │ < │ Ѕ │ Џ │ Ц │ В │ Б │ Н │ М │ , │ . │ - │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -88,15 +88,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ~ │ ! │ " │ # │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ * │       │ + * │ ~ │ ! │ " │ # │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ * │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │   │   │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │   │   │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ > │   │   │   │   │   │   │   │ ; │ : │ _ │          │ + * │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -121,15 +121,15 @@ /* AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │   │   │   │   │   │   │   │   │   │   │   │   │   │       │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │ € │   │   │   │   │   │   │   │   │   │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │   │   │    │ + * │ │ │ │ € │ │ │ │ │ │ │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │   │   │   │   │   │   │   │   │   │   │   │          │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 2 diff --git a/quantum/keymap_extras/keymap_serbian_latin.h b/quantum/keymap_extras/keymap_serbian_latin.h index b514102c02d2..13c82eb405ff 100644 --- a/quantum/keymap_extras/keymap_serbian_latin.h +++ b/quantum/keymap_extras/keymap_serbian_latin.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ‚ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ' │ + │       │ + * │ ‚ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ' │ + │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │ Š │ Đ │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Č │ Ć │ Ž │    │ + * │ │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │ Š │ Đ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Č │ Ć │ Ž │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ < │ Y │ X │ C │ V │ B │ N │ M │ , │ . │ - │          │ + * │ │ < │ Y │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -88,15 +88,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ~ │ ! │ " │ # │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ * │       │ + * │ ~ │ ! │ " │ # │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ * │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │   │   │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │   │   │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ > │   │   │   │   │   │   │   │ ; │ : │ _ │          │ + * │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -121,15 +121,15 @@ /* AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │   │   │ ˇ │ ^ │ ˘ │ ° │ ˛ │ ` │ ˙ │ ´ │ ˝ │ ¨ │ ¸ │       │ + * │ │ │ ˇ │ ^ │ ˘ │ ° │ ˛ │ ` │ ˙ │ ´ │ ˝ │ ¨ │ ¸ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ \ │ | │ € │   │   │   │   │   │   │   │ ÷ │ × │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │ [ │ ] │   │   │ ł │ Ł │   │ ß │ ¤ │    │ + * │ │ \ │ | │ € │ │ │ │ │ │ │ │ ÷ │ × │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ [ │ ] │ │ │ ł │ Ł │ │ ß │ ¤ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │   │   │   │   │ @ │ { │ } │ § │   │   │   │          │ + * │ │ │ │ │ │ @ │ { │ } │ § │ │ │ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 diff --git a/quantum/keymap_extras/keymap_slovak.h b/quantum/keymap_extras/keymap_slovak.h index f0bd6ae5137d..71344c07ff50 100644 --- a/quantum/keymap_extras/keymap_slovak.h +++ b/quantum/keymap_extras/keymap_slovak.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ; │ + │ ľ │ š │ č │ ť │ ž │ ý │ á │ í │ é │ = │ ´ │       │ + * │ ; │ + │ ľ │ š │ č │ ť │ ž │ ý │ á │ í │ é │ = │ ´ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │ ú │ ä │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ô │ § │ ň │    │ + * │ │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │ ú │ ä │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ô │ § │ ň │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ & │ Y │ X │ C │ V │ B │ N │ M │ , │ . │ - │          │ + * │ │ & │ Y │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -88,15 +88,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ° │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ % │ ˇ │       │ + * │ ° │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ % │ ˇ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │ / │ ( │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │ " │ ! │ ) │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ / │ ( │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ " │ ! │ ) │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ * │   │   │   │   │   │   │   │ ? │ : │ _ │          │ + * │ │ * │ │ │ │ │ │ │ │ ? │ : │ _ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -128,15 +128,15 @@ /* AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │   │ ~ │   │ ^ │ ˘ │ ° │ ˛ │ ` │ ˙ │   │ ˝ │ ¨ │ ¸ │       │ + * │ │ ~ │ │ ^ │ ˘ │ ° │ ˛ │ ` │ ˙ │ │ ˝ │ ¨ │ ¸ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ \ │ | │ € │   │   │   │   │   │   │ ' │ ÷ │ × │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │ đ │ Đ │ [ │ ] │   │   │ ł │ Ł │ $ │ ß │ ¤ │    │ + * │ │ \ │ | │ € │ │ │ │ │ │ │ ' │ ÷ │ × │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ đ │ Đ │ [ │ ] │ │ │ ł │ Ł │ $ │ ß │ ¤ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ < │ > │ # │   │ @ │ { │ } │   │   │   │   │          │ + * │ │ < │ > │ # │ │ @ │ { │ } │ │ │ │ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 diff --git a/quantum/keymap_extras/keymap_slovenian.h b/quantum/keymap_extras/keymap_slovenian.h index d24c9c6355ee..827fa06c2552 100644 --- a/quantum/keymap_extras/keymap_slovenian.h +++ b/quantum/keymap_extras/keymap_slovenian.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ¸ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ' │ + │       │ + * │ ¸ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ' │ + │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │ Š │ Đ │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Č │ Ć │ Ž │    │ + * │ │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │ Š │ Đ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Č │ Ć │ Ž │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ < │ Y │ X │ C │ V │ B │ N │ M │ , │ . │ - │          │ + * │ │ < │ Y │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -88,15 +88,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ¨ │ ! │ " │ # │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ * │       │ + * │ ¨ │ ! │ " │ # │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ * │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │   │   │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │   │   │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ > │   │   │   │   │   │   │   │ ; │ : │ _ │          │ + * │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -121,15 +121,15 @@ /* AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │   │ ~ │ ˇ │ ^ │ ˘ │ ° │ ˛ │ ` │ ˙ │ ´ │ ˝ │   │   │       │ + * │ │ ~ │ ˇ │ ^ │ ˘ │ ° │ ˛ │ ` │ ˙ │ ´ │ ˝ │ │ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ \ │ | │ € │   │   │   │   │   │   │   │ ÷ │ × │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │ [ │ ] │   │   │ ł │ Ł │   │ ß │ ¤ │    │ + * │ │ \ │ | │ € │ │ │ │ │ │ │ │ ÷ │ × │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ [ │ ] │ │ │ ł │ Ł │ │ ß │ ¤ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │   │   │   │   │ @ │ { │ } │ § │   │   │   │          │ + * │ │ │ │ │ │ @ │ { │ } │ § │ │ │ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -161,11 +161,3 @@ #define SI_LCBR ALGR(SI_B) // { #define SI_RCBR ALGR(SI_N) // } #define SI_SECT ALGR(SI_M) // § - -// DEPRECATED -#define SI_QOT SI_QUOT -#define SI_SV SI_SCAR -#define SI_CV SI_CCAR -#define SI_ZV SI_ZCAR -#define SI_DQOT SI_DQUO -#define SI_QST SI_QUES diff --git a/quantum/keymap_extras/keymap_spanish.h b/quantum/keymap_extras/keymap_spanish.h index 1465ecc81b26..8432c56e99fc 100644 --- a/quantum/keymap_extras/keymap_spanish.h +++ b/quantum/keymap_extras/keymap_spanish.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ º │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ' │ ¡ │       │ + * │ º │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ' │ ¡ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ ` │ + │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Ñ │ ´ │ Ç │    │ + * │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ ` │ + │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Ñ │ ´ │ Ç │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ < │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ - │          │ + * │ │ < │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -88,15 +88,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ª │ ! │ " │ · │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ ¿ │       │ + * │ ª │ ! │ " │ · │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ ¿ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │ ^ │ * │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │ ¨ │   │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ ^ │ * │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ ¨ │ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ > │   │   │   │   │   │   │   │ ; │ : │ _ │          │ + * │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -126,15 +126,15 @@ /* AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ \ │ | │ @ │ # │ ~ │ € │ ¬ │   │   │   │   │   │   │       │ + * │ \ │ | │ @ │ # │ ~ │ € │ ¬ │ │ │ │ │ │ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │ [ │ ] │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │ { │ } │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ [ │ ] │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ { │ } │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │   │   │   │   │   │   │   │   │   │   │   │          │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -151,12 +151,3 @@ // Row 3 #define ES_LCBR ALGR(ES_ACUT) // { #define ES_RCBR ALGR(ES_CCED) // } - -// DEPRECATED -#define ES_OVRR ES_MORD -#define ES_APOS ES_QUOT -#define ES_LESS ES_LABK -#define ES_ASML ES_FORD -#define ES_OVDT ES_BULT -#define ES_UMLT ES_DIAE -#define ES_GRTR ES_RABK diff --git a/quantum/keymap_extras/keymap_spanish_dvorak.h b/quantum/keymap_extras/keymap_spanish_dvorak.h index 38f579ae10ea..29c4f1c44aa1 100644 --- a/quantum/keymap_extras/keymap_spanish_dvorak.h +++ b/quantum/keymap_extras/keymap_spanish_dvorak.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ º │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ' │ ¡ │       │ + * │ º │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ' │ ¡ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ . │ , │ Ñ │ P │ Y │ F │ G │ C │ H │ L │ ` │ + │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ A │ O │ E │ U │ I │ D │ R │ T │ N │ S │ ´ │ Ç │    │ + * │ │ . │ , │ Ñ │ P │ Y │ F │ G │ C │ H │ L │ ` │ + │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ A │ O │ E │ U │ I │ D │ R │ T │ N │ S │ ´ │ Ç │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ < │ - │ Q │ J │ K │ X │ B │ M │ W │ V │ Z │          │ + * │ │ < │ - │ Q │ J │ K │ X │ B │ M │ W │ V │ Z │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -88,15 +88,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ª │ ! │ " │ · │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ ¿ │       │ + * │ ª │ ! │ " │ · │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ ¿ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ : │ ; │   │   │   │   │   │   │   │   │ ^ │ * │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │ ¨ │   │    │ + * │ │ : │ ; │ │ │ │ │ │ │ │ │ ^ │ * │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ ¨ │ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ > │ _ │   │   │   │   │   │   │   │   │   │          │ + * │ │ > │ _ │ │ │ │ │ │ │ │ │ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -126,15 +126,15 @@ /* AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ \ │ | │ @ │ # │ ~ │ € │ ¬ │   │   │   │   │   │   │       │ + * │ \ │ | │ @ │ # │ ~ │ € │ ¬ │ │ │ │ │ │ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │ [ │ ] │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │ { │ } │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ [ │ ] │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ { │ } │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │   │   │   │   │   │   │   │   │   │   │   │          │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 diff --git a/quantum/keymap_extras/keymap_steno.h b/quantum/keymap_extras/keymap_steno.h index b9115fb8bf9a..310aa0740947 100644 --- a/quantum/keymap_extras/keymap_steno.h +++ b/quantum/keymap_extras/keymap_steno.h @@ -72,3 +72,20 @@ enum steno_keycodes { STN_ZR, STN__MAX = STN_ZR, // must be less than QK_STENO_BOLT }; + +#ifdef STENO_COMBINEDMAP +enum steno_combined_keycodes { + STN_S3 = QK_STENO_COMB, + STN_TKL, + STN_PWL, + STN_HRL, + STN_FRR, + STN_PBR, + STN_LGR, + STN_TSR, + STN_DZR, + STN_AO, + STN_EU, + STN_COMB_MAX = STN_EU, +}; +#endif diff --git a/quantum/keymap_extras/keymap_swedish.h b/quantum/keymap_extras/keymap_swedish.h index 4d2eaa978387..cadb66d3bd16 100644 --- a/quantum/keymap_extras/keymap_swedish.h +++ b/quantum/keymap_extras/keymap_swedish.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ § │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ + │ ´ │       │ + * │ § │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ + │ ´ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ Å │ ¨ │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Ö │ Ä │ ' │    │ + * │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ Å │ ¨ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Ö │ Ä │ ' │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ < │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ - │          │ + * │ │ < │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -88,15 +88,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ½ │ ! │ " │ # │ ¤ │ % │ & │ / │ ( │ ) │ = │ ? │ ` │       │ + * │ ½ │ ! │ " │ # │ ¤ │ % │ & │ / │ ( │ ) │ = │ ? │ ` │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │   │ ^ │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │   │ * │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ ^ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ * │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ > │   │   │   │   │   │   │   │ ; │ : │ _ │          │ + * │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -125,15 +125,15 @@ /* AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │   │   │ @ │ £ │ $ │ € │   │ { │ [ │ ] │ } │ \ │   │       │ + * │ │ │ @ │ £ │ $ │ € │ │ { │ [ │ ] │ } │ \ │ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │   │ ~ │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │   │   │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ ~ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ | │   │   │   │   │   │   │ µ │   │   │   │          │ + * │ │ | │ │ │ │ │ │ │ µ │ │ │ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -154,26 +154,3 @@ // DEPRECATED #include "keymap_nordic.h" - -#define SE_OSLH SE_ODIA -#define SE_APOS SE_QUOT -#define SE_LESS SE_LABK -#define SE_QUO2 SE_DQUO -#define SE_BULT SE_CURR -#define SE_GRTR SE_RABK -#define SE_AA SE_ARNG -#define SE_AE SE_ADIA -#define SE_AM SE_ARNG -#define SE_MU SE_MICR -// Swedish macOS symbols (not vetted) -#define SE_ACUT_MAC SE_ACUT -#define SE_APOS_MAC SE_LABK -#define SE_AT_MAC SE_ADIA -#define SE_BSLS_MAC S(SE_LCBR) -#define SE_DLR_MAC SE_CURR -#define SE_GRV_MAC SE_BSLS -#define SE_GRTR_MAC SE_HALF -#define SE_LCBR_MAC S(SE_LBRC) -#define SE_LESS_MAC SE_SECT -#define SE_PIPE_MAC SE_LCBR -#define SE_RCBR_MAC S(SE_RBRC) diff --git a/quantum/keymap_extras/keymap_swedish_osx_ansi.h b/quantum/keymap_extras/keymap_swedish_osx_ansi.h new file mode 100644 index 000000000000..0d0426f866ad --- /dev/null +++ b/quantum/keymap_extras/keymap_swedish_osx_ansi.h @@ -0,0 +1,240 @@ +/* Copyright 2021 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should 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 "keymap.h" + +// clang-format off + +/* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ + * │ < │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ + │ ´ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ + * │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ Å │ ¨ │ ' │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Ö │ Ä │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──────┤ + * │ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │ + * ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ + * │ │ │ │ │ │ │ │ + * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ + */ +// Row 1 +#define SE_LABK KC_GRV // < +#define SE_1 KC_1 // 1 +#define SE_2 KC_2 // 2 +#define SE_3 KC_3 // 3 +#define SE_4 KC_4 // 4 +#define SE_5 KC_5 // 5 +#define SE_6 KC_6 // 6 +#define SE_7 KC_7 // 7 +#define SE_8 KC_8 // 8 +#define SE_9 KC_9 // 9 +#define SE_0 KC_0 // 0 +#define SE_PLUS KC_MINS // + +#define SE_ACUT KC_EQL // ´ (dead) +// Row 2 +#define SE_Q KC_Q // Q +#define SE_W KC_W // W +#define SE_E KC_E // E +#define SE_R KC_R // R +#define SE_T KC_T // T +#define SE_Y KC_Y // Y +#define SE_U KC_U // U +#define SE_I KC_I // I +#define SE_O KC_O // O +#define SE_P KC_P // P +#define SE_ARNG KC_LBRC // Å +#define SE_DIAE KC_RBRC // ¨ (dead) +#define SE_QUOT KC_NUHS // ' +// Row 3 +#define SE_A KC_A // A +#define SE_S KC_S // S +#define SE_D KC_D // D +#define SE_F KC_F // F +#define SE_G KC_G // G +#define SE_H KC_H // H +#define SE_J KC_J // J +#define SE_K KC_K // K +#define SE_L KC_L // L +#define SE_ODIA KC_SCLN // Ö +#define SE_ADIA KC_QUOT // Ä +// Row 4 +#define SE_Z KC_Z // Z +#define SE_X KC_X // X +#define SE_C KC_C // C +#define SE_V KC_V // V +#define SE_B KC_B // B +#define SE_N KC_N // N +#define SE_M KC_M // M +#define SE_COMM KC_COMM // , +#define SE_DOT KC_DOT // . +#define SE_MINS KC_SLSH // - + +/* Shifted symbols + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ + * │ > │ ! │ " │ # │ € │ % │ & │ / │ ( │ ) │ = │ ? │ ` │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ ^ │ * │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──────┤ + * │ │ │ │ │ │ │ │ │ ; │ : │ _ │ │ + * ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ + * │ │ │ │ │ │ │ │ + * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ + */ +// Row 1 +#define SE_RABK S(SE_LABK) // > +#define SE_EXLM S(SE_1) // ! +#define SE_DQUO S(SE_2) // " +#define SE_HASH S(SE_3) // # +#define SE_EURO S(SE_4) // € +#define SE_PERC S(SE_5) // % +#define SE_AMPR S(SE_6) // & +#define SE_SLSH S(SE_7) // / +#define SE_LPRN S(SE_8) // ( +#define SE_RPRN S(SE_9) // ) +#define SE_EQL S(SE_0) // = +#define SE_QUES S(SE_PLUS) // ? +#define SE_GRV S(SE_ACUT) // ` +// Row 2 +#define SE_CIRC S(SE_DIAE) // ^ (dead) +#define SE_ASTR S(SE_QUOT) // * +// Row 4 +#define SE_SCLN S(SE_COMM) // ; +#define SE_COLN S(SE_DOT) // : +#define SE_UNDS S(SE_MINS) // _ + +/* Alted symbols + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ + * │ ≤ │ © │ ™ │ £ │ $ │ ∞ │ § │ | │ [ │ ] │ ≈ │ ± │ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ + * │ │ • │ Ω │ É │ ® │ † │ µ │ Ü │ ı │ Œ │ π │ ˙ │ ~ │ @ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ + * │ │  │ ß │ ∂ │ ƒ │ ¸ │ ˛ │ √ │ ª │ fi │ Ø │ Æ │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──────┤ + * │ │ ÷ │ │ Ç │ ‹ │ › │ ‘ │ ’ │ ‚ │ … │ – │ │ + * ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ + * │ │ │ │ │ │ │ │ + * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ + * + */ +// Row 1 +#define SE_LTEQ A(SE_LABK) // ≤ +#define SE_COPY A(SE_1) // © +#define SE_TM A(SE_2) // ™ +#define SE_PND A(SE_3) // £ +#define SE_DLR A(SE_4) // $ +#define SE_INFN A(SE_5) // ∞ +#define SE_SECT A(SE_6) // § +#define SE_PIPE A(SE_7) // | +#define SE_LBRC A(SE_8) // [ +#define SE_RBRC A(SE_9) // ] +#define SE_AEQL A(SE_0) // ≈ +#define SE_PLMN A(SE_PLUS) // ± +// Row 2 +#define SE_BULT A(SE_Q) // • +#define SE_OMEG A(SE_W) // Ω +#define SE_EACU A(SE_E) // É +#define SE_REGD A(SE_R) // ® +#define SE_DAGG A(SE_T) // † +#define SE_MICR A(SE_Y) // µ +#define SE_UDIA A(SE_U) // Ü +#define SE_DLSI A(SE_I) // ı +#define SE_OE A(SE_O) // Œ +#define SE_PI A(SE_P) // π +#define SE_DOTA A(SE_ARNG) // ˙ +#define SE_TILD A(SE_DIAE) // ~ (dead) +#define SE_AT A(SE_QUOT) // @ +// Row 3 +#define SE_APPL A(SE_A) //  (Apple logo) +#define SE_SS A(SE_S) // ß +#define SE_PDIF A(SE_D) // ∂ +#define SE_FHK A(SE_F) // ƒ +#define SE_CEDL A(SE_G) // ¸ +#define SE_OGON A(SE_H) // ˛ +#define SE_SQRT A(SE_J) // √ +#define SE_FORD A(SE_K) // ª +#define SE_FI A(SE_L) // fi +#define SE_OSTR A(SE_ODIA) // Ø +#define SE_AE A(SE_ADIA) // Æ +// Row 4 +#define SE_DIV A(SE_Z) // ÷ +#define SE_CCED A(SE_C) // Ç +#define SE_LSAQ A(SE_V) // ‹ +#define SE_RSAQ A(SE_B) // › +#define SE_LSQU A(SE_N) // ‘ +#define SE_RSQU A(SE_M) // ’ +#define SE_SLQU A(SE_COMM) // ‚ +#define SE_ELLP A(SE_DOT) // … +#define SE_NDSH A(SE_MINS) // – + +/* Shift+Alted symbols + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ + * │ ≥ │ ¡ │ │ ¥ │ ¢ │ ‰ │ ¶ │ \ │ { │ } │ ≠ │ ¿ │ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ + * │ │ ° │ ˝ │ │ │ ‡ │ ˜ │ │ ˆ │ │ ∏ │ ˚ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ + * │ │ ◊ │ ∑ │ ∆ │ ∫ │ ¯ │ ˘ │ ¬ │ º │ fl │ │ │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──────┤ + * │ │ ⁄ │ ˇ │ │ « │ » │ “ │ ” │ „ │ · │ — │ │ + * ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ + * │ │ │ │ │ │ │ │ + * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ + * + */ +// Row 1 +#define SE_GTEQ S(A(SE_LABK)) // ≥ +#define SE_IEXL S(A(SE_1)) // ¡ +#define SE_YEN S(A(SE_3)) // ¥ +#define SE_CENT S(A(SE_4)) // ¢ +#define SE_PERM S(A(SE_5)) // ‰ +#define SE_PILC S(A(SE_6)) // ¶ +#define SE_BSLS S(A(SE_7)) // (backslash) +#define SE_LCBR S(A(SE_8)) // { +#define SE_RCBR S(A(SE_9)) // } +#define SE_NEQL S(A(SE_0)) // ≠ +#define SE_IQUE S(A(SE_PLUS)) // ¿ +// Row 2 +#define SE_DEG S(A(SE_Q)) // ° +#define SE_DACU S(A(SE_W)) // ˝ +#define SE_DDAG S(A(SE_T)) // ‡ +#define SE_STIL S(A(SE_Y)) // ˜ +#define SE_DCIR S(A(SE_I)) // ˆ +#define SE_NARP S(A(SE_P)) // ∏ +#define SE_RNGA S(A(SE_ARNG)) // ˚ +// Row 3 +#define SE_LOZN S(A(SE_A)) // ◊ +#define SE_NARS S(A(SE_S)) // ∑ +#define SE_INCR S(A(SE_D)) // ∆ +#define SE_INTG S(A(SE_F)) // ∫ +#define SE_MACR S(A(SE_G)) // ¯ +#define SE_BREV S(A(SE_H)) // ˘ +#define SE_NOT S(A(SE_J)) // ¬ +#define SE_MORD S(A(SE_K)) // º +#define SE_FL S(A(SE_L)) // fl +// Row 4 +#define SE_FRSL S(A(SE_Z)) // ⁄ +#define SE_CARN S(A(SE_X)) // ˇ +#define SE_LDAQ S(A(SE_V)) // « +#define SE_RDAQ S(A(SE_B)) // » +#define SE_LDQU S(A(SE_N)) // “ +#define SE_RDQU S(A(SE_M)) // ” +#define SE_DLQU S(A(SE_COMM)) // „ +#define SE_MDDT S(A(SE_DOT)) // · +#define SE_MDSH S(A(SE_MINS)) // — diff --git a/quantum/keymap_extras/keymap_swedish_osx_iso.h b/quantum/keymap_extras/keymap_swedish_osx_iso.h new file mode 100644 index 000000000000..ab155530ae73 --- /dev/null +++ b/quantum/keymap_extras/keymap_swedish_osx_iso.h @@ -0,0 +1,239 @@ +/* Copyright 2021 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should 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 "keymap.h" + +// clang-format off + +/* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ + * │ § │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ + │ ´ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ + * │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ Å │ ¨ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Ö │ Ä │ ' │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤ + * │ │ < │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │ + * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ + * │ │ │ │ │ │ │ │ + * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ + */ +// Row 1 +#define SE_SECT KC_GRV // § +#define SE_1 KC_1 // 1 +#define SE_2 KC_2 // 2 +#define SE_3 KC_3 // 3 +#define SE_4 KC_4 // 4 +#define SE_5 KC_5 // 5 +#define SE_6 KC_6 // 6 +#define SE_7 KC_7 // 7 +#define SE_8 KC_8 // 8 +#define SE_9 KC_9 // 9 +#define SE_0 KC_0 // 0 +#define SE_PLUS KC_MINS // + +#define SE_ACUT KC_EQL // ´ (dead) +// Row 2 +#define SE_Q KC_Q // Q +#define SE_W KC_W // W +#define SE_E KC_E // E +#define SE_R KC_R // R +#define SE_T KC_T // T +#define SE_Y KC_Y // Y +#define SE_U KC_U // U +#define SE_I KC_I // I +#define SE_O KC_O // O +#define SE_P KC_P // P +#define SE_ARNG KC_LBRC // Å +#define SE_DIAE KC_RBRC // ¨ (dead) +// Row 3 +#define SE_A KC_A // A +#define SE_S KC_S // S +#define SE_D KC_D // D +#define SE_F KC_F // F +#define SE_G KC_G // G +#define SE_H KC_H // H +#define SE_J KC_J // J +#define SE_K KC_K // K +#define SE_L KC_L // L +#define SE_ODIA KC_SCLN // Ö +#define SE_ADIA KC_QUOT // Ä +#define SE_QUOT KC_NUHS // ' +// Row 4 +#define SE_LABK KC_NUBS // < +#define SE_Z KC_Z // Z +#define SE_X KC_X // X +#define SE_C KC_C // C +#define SE_V KC_V // V +#define SE_B KC_B // B +#define SE_N KC_N // N +#define SE_M KC_M // M +#define SE_COMM KC_COMM // , +#define SE_DOT KC_DOT // . +#define SE_MINS KC_SLSH // - + +/* Shifted symbols + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ + * │ ° │ ! │ " │ # │ € │ % │ & │ / │ ( │ ) │ = │ ? │ ` │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ ^ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ * │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤ + * │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │ + * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ + * │ │ │ │ │ │ │ │ + * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ + */ +// Row 1 +#define SE_DEG S(SE_SECT) // ° +#define SE_EXLM S(SE_1) // ! +#define SE_DQUO S(SE_2) // " +#define SE_HASH S(SE_3) // # +#define SE_EURO S(SE_4) // € +#define SE_PERC S(SE_5) // % +#define SE_AMPR S(SE_6) // & +#define SE_SLSH S(SE_7) // / +#define SE_LPRN S(SE_8) // ( +#define SE_RPRN S(SE_9) // ) +#define SE_EQL S(SE_0) // = +#define SE_QUES S(SE_PLUS) // ? +#define SE_GRV S(SE_ACUT) // ` +// Row 2 +#define SE_CIRC S(SE_DIAE) // ^ (dead) +// Row 3 +#define SE_ASTR S(SE_QUOT) // * +// Row 4 +#define SE_RABK S(SE_LABK) // > +#define SE_SCLN S(SE_COMM) // ; +#define SE_COLN S(SE_DOT) // : +#define SE_UNDS S(SE_MINS) // _ + +/* Alted symbols + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ + * │ ¶ │ © │ ™ │ £ │ $ │ ∞ │ │ | │ [ │ ] │ ≈ │ ± │ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ + * │ │ • │ Ω │ É │ ® │ † │ µ │ Ü │ ı │ Œ │ π │ ˙ │ ~ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │  │ ß │ ∂ │ ƒ │ ¸ │ ˛ │ √ │ ª │ fi │ Ø │ Æ │ @ │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤ + * │ │ ≤ │ ÷ │ │ Ç │ ‹ │ › │ ‘ │ ’ │ ‚ │ … │ – │ │ + * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ + * │ │ │ │ │ │ │ │ + * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ + */ +// Row 1 +#define SE_PILC A(SE_SECT) // ¶ +#define SE_COPY A(SE_1) // © +#define SE_TM A(SE_2) // ™ +#define SE_PND A(SE_3) // £ +#define SE_DLR A(SE_4) // $ +#define SE_INFN A(SE_5) // ∞ +#define SE_PIPE A(SE_7) // | +#define SE_LBRC A(SE_8) // [ +#define SE_RBRC A(SE_9) // ] +#define SE_AEQL A(SE_0) // ≈ +#define SE_PLMN A(SE_PLUS) // ± +// Row 2 +#define SE_BULT A(SE_Q) // • +#define SE_OMEG A(SE_W) // Ω +#define SE_EACU A(SE_E) // É +#define SE_REGD A(SE_R) // ® +#define SE_DAGG A(SE_T) // † +#define SE_MICR A(SE_Y) // µ +#define SE_UDIA A(SE_U) // Ü +#define SE_DLSI A(SE_I) // ı +#define SE_OE A(SE_O) // Œ +#define SE_PI A(SE_P) // π +#define SE_DOTA A(SE_ARNG) // ˙ +#define SE_TILD A(SE_DIAE) // ~ (dead) +// Row 3 +#define SE_APPL A(SE_A) //  (Apple logo) +#define SE_SS A(SE_S) // ß +#define SE_PDIF A(SE_D) // ∂ +#define SE_FHK A(SE_F) // ƒ +#define SE_CEDL A(SE_G) // ¸ +#define SE_OGON A(SE_H) // ˛ +#define SE_SQRT A(SE_J) // √ +#define SE_FORD A(SE_K) // ª +#define SE_FI A(SE_L) // fi +#define SE_OSTR A(SE_ODIA) // Ø +#define SE_AE A(SE_ADIA) // Æ +#define SE_AT A(SE_QUOT) // @ +// Row 4 +#define SE_LTEQ A(SE_LABK) // ≤ +#define SE_DIV A(SE_Z) // ÷ +#define SE_CCED A(SE_C) // Ç +#define SE_LSAQ A(SE_V) // ‹ +#define SE_RSAQ A(SE_B) // › +#define SE_LSQU A(SE_N) // ‘ +#define SE_RSQU A(SE_M) // ’ +#define SE_SLQU A(SE_COMM) // ‚ +#define SE_ELLP A(SE_DOT) // … +#define SE_NDSH A(SE_MINS) // – + +/* Shift+Alted symbols + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ + * │ │ ¡ │ ” │ ¥ │ ¢ │ ‰ │ │ \ │ { │ } │ ≠ │ ¿ │ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ + * │ │ │ ˝ │ │ │ ‡ │ ˜ │ │ ˆ │ │ ∏ │ ˚ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ ◊ │ ∑ │ ∆ │ ∫ │ ¯ │ ˘ │ ¬ │ º │ fl │ │ │ │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤ + * │ │ ≥ │ ⁄ │ ˇ │ │ « │ » │ “ │ ” │ „ │ · │ — │ │ + * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ + * │ │ │ │ │ │ │ │ + * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ + */ +// Row 1 +#define SE_IEXL S(A(SE_1)) // ¡ +#define SE_YEN S(A(SE_3)) // ¥ +#define SE_CENT S(A(SE_4)) // ¢ +#define SE_PERM S(A(SE_5)) // ‰ +#define SE_BSLS S(A(SE_7)) // (backslash) +#define SE_LCBR S(A(SE_8)) // { +#define SE_RCBR S(A(SE_9)) // } +#define SE_NEQL S(A(SE_0)) // ≠ +#define SE_IQUE S(A(SE_PLUS)) // ¿ +// Row 2 +#define SE_DACU S(A(SE_W)) // ˝ +#define SE_DDAG S(A(SE_T)) // ‡ +#define SE_STIL S(A(SE_Y)) // ˜ +#define SE_DCIR S(A(SE_I)) // ˆ +#define SE_NARP S(A(SE_P)) // ∏ +#define SE_RNGA S(A(SE_ARNG)) // ˚ +// Row 3 +#define SE_LOZN S(A(SE_A)) // ◊ +#define SE_NARS S(A(SE_S)) // ∑ +#define SE_INCR S(A(SE_D)) // ∆ +#define SE_INTG S(A(SE_F)) // ∫ +#define SE_MACR S(A(SE_G)) // ¯ +#define SE_BREV S(A(SE_H)) // ˘ +#define SE_NOT S(A(SE_J)) // ¬ +#define SE_MORD S(A(SE_K)) // º +#define SE_FL S(A(SE_L)) // fl +// Row 4 +#define SE_GTEQ S(A(SE_LABK)) // ≥ +#define SE_FRSL S(A(SE_Z)) // ⁄ +#define SE_CARN S(A(SE_X)) // ˇ +#define SE_LDAQ S(A(SE_V)) // « +#define SE_RDAQ S(A(SE_B)) // » +#define SE_LDQU S(A(SE_N)) // “ +#define SE_RDQU S(A(SE_M)) // ” +#define SE_DLQU S(A(SE_COMM)) // „ +#define SE_MDDT S(A(SE_DOT)) // · +#define SE_MDSH S(A(SE_MINS)) // — diff --git a/quantum/keymap_extras/keymap_swedish_pro_osx_ansi.h b/quantum/keymap_extras/keymap_swedish_pro_osx_ansi.h new file mode 100644 index 000000000000..9b445176254d --- /dev/null +++ b/quantum/keymap_extras/keymap_swedish_pro_osx_ansi.h @@ -0,0 +1,240 @@ +/* Copyright 2021 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should 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 "keymap.h" + +// clang-format off + +/* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ + * │ < │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ + │ ´ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ + * │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ Å │ ¨ │ ' │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Ö │ Ä │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──────┤ + * │ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │ + * ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ + * │ │ │ │ │ │ │ │ + * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ + */ +// Row 1 +#define SE_LABK KC_GRV // < +#define SE_1 KC_1 // 1 +#define SE_2 KC_2 // 2 +#define SE_3 KC_3 // 3 +#define SE_4 KC_4 // 4 +#define SE_5 KC_5 // 5 +#define SE_6 KC_6 // 6 +#define SE_7 KC_7 // 7 +#define SE_8 KC_8 // 8 +#define SE_9 KC_9 // 9 +#define SE_0 KC_0 // 0 +#define SE_PLUS KC_MINS // + +#define SE_ACUT KC_EQL // ´ (dead) +// Row 2 +#define SE_Q KC_Q // Q +#define SE_W KC_W // W +#define SE_E KC_E // E +#define SE_R KC_R // R +#define SE_T KC_T // T +#define SE_Y KC_Y // Y +#define SE_U KC_U // U +#define SE_I KC_I // I +#define SE_O KC_O // O +#define SE_P KC_P // P +#define SE_ARNG KC_LBRC // Å +#define SE_DIAE KC_RBRC // ¨ (dead) +#define SE_QUOT KC_NUHS // ' +// Row 3 +#define SE_A KC_A // A +#define SE_S KC_S // S +#define SE_D KC_D // D +#define SE_F KC_F // F +#define SE_G KC_G // G +#define SE_H KC_H // H +#define SE_J KC_J // J +#define SE_K KC_K // K +#define SE_L KC_L // L +#define SE_ODIA KC_SCLN // Ö +#define SE_ADIA KC_QUOT // Ä +// Row 4 +#define SE_Z KC_Z // Z +#define SE_X KC_X // X +#define SE_C KC_C // C +#define SE_V KC_V // V +#define SE_B KC_B // B +#define SE_N KC_N // N +#define SE_M KC_M // M +#define SE_COMM KC_COMM // , +#define SE_DOT KC_DOT // . +#define SE_MINS KC_SLSH // - + +/* Shifted symbols + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ + * │ > │ ! │ " │ # │ € │ % │ & │ / │ ( │ ) │ = │ ? │ ` │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ ^ │ * │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──────┤ + * │ │ │ │ │ │ │ │ │ ; │ : │ _ │ │ + * ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ + * │ │ │ │ │ │ │ │ + * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ + */ +// Row 1 +#define SE_RABK S(SE_LABK) // > +#define SE_EXLM S(SE_1) // ! +#define SE_DQUO S(SE_2) // " +#define SE_HASH S(SE_3) // # +#define SE_EURO S(SE_4) // € +#define SE_PERC S(SE_5) // % +#define SE_AMPR S(SE_6) // & +#define SE_SLSH S(SE_7) // / +#define SE_LPRN S(SE_8) // ( +#define SE_RPRN S(SE_9) // ) +#define SE_EQL S(SE_0) // = +#define SE_QUES S(SE_PLUS) // ? +#define SE_GRV S(SE_ACUT) // ` +// Row 2 +#define SE_CIRC S(SE_DIAE) // ^ (dead) +#define SE_ASTR S(SE_QUOT) // * +// Row 4 +#define SE_SCLN S(SE_COMM) // ; +#define SE_COLN S(SE_DOT) // : +#define SE_UNDS S(SE_MINS) // _ + +/* Alted symbols + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ + * │ ≤ │ © │ @ │ £ │ $ │ ∞ │ § │ | │ [ │ ] │ ≈ │ ± │ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ + * │ │ • │ Ω │ É │ ® │ † │ µ │ Ü │ ı │ Œ │ π │ ˙ │ ~ │ ™ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ + * │ │  │ ß │ ∂ │ ƒ │ ¸ │ ˛ │ √ │ ª │ fi │ Ø │ Æ │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──────┤ + * │ │ ÷ │ │ Ç │ ‹ │ › │ ‘ │ ’ │ ‚ │ … │ – │ │ + * ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ + * │ │ │ │ │ │ │ │ + * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ + * + */ +// Row 1 +#define SE_LTEQ A(SE_LABK) // ≤ +#define SE_COPY A(SE_1) // © +#define SE_AT A(SE_2) // @ +#define SE_PND A(SE_3) // £ +#define SE_DLR A(SE_4) // $ +#define SE_INFN A(SE_5) // ∞ +#define SE_SECT A(SE_6) // § +#define SE_PIPE A(SE_7) // | +#define SE_LBRC A(SE_8) // [ +#define SE_RBRC A(SE_9) // ] +#define SE_AEQL A(SE_0) // ≈ +#define SE_PLMN A(SE_PLUS) // ± +// Row 2 +#define SE_BULT A(SE_Q) // • +#define SE_OMEG A(SE_W) // Ω +#define SE_EACU A(SE_E) // É +#define SE_REGD A(SE_R) // ® +#define SE_DAGG A(SE_T) // † +#define SE_MICR A(SE_Y) // µ +#define SE_UDIA A(SE_U) // Ü +#define SE_DLSI A(SE_I) // ı +#define SE_OE A(SE_O) // Œ +#define SE_PI A(SE_P) // π +#define SE_DOTA A(SE_ARNG) // ˙ +#define SE_TILD A(SE_DIAE) // ~ (dead) +#define SE_TM A(SE_QUOT) // ™ +// Row 3 +#define SE_APPL A(SE_A) //  (Apple logo) +#define SE_SS A(SE_S) // ß +#define SE_PDIF A(SE_D) // ∂ +#define SE_FHK A(SE_F) // ƒ +#define SE_CEDL A(SE_G) // ¸ +#define SE_OGON A(SE_H) // ˛ +#define SE_SQRT A(SE_J) // √ +#define SE_FORD A(SE_K) // ª +#define SE_FI A(SE_L) // fi +#define SE_OSTR A(SE_ODIA) // Ø +#define SE_AE A(SE_ADIA) // Æ +// Row 4 +#define SE_DIV A(SE_Z) // ÷ +#define SE_CCED A(SE_C) // Ç +#define SE_LSAQ A(SE_V) // ‹ +#define SE_RSAQ A(SE_B) // › +#define SE_LSQU A(SE_N) // ‘ +#define SE_RSQU A(SE_M) // ’ +#define SE_SLQU A(SE_COMM) // ‚ +#define SE_ELLP A(SE_DOT) // … +#define SE_NDSH A(SE_MINS) // – + +/* Shift+Alted symbols + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ + * │ ≥ │ ¡ │ │ ¥ │ ¢ │ ‰ │ ¶ │ \ │ { │ } │ ≠ │ ¿ │ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ + * │ │ ° │ ˝ │ │ │ ‡ │ ˜ │ │ ˆ │ │ ∏ │ ˚ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ + * │ │ ◊ │ ∑ │ ∆ │ ∫ │ ¯ │ ˘ │ ¬ │ º │ fl │ │ │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──────┤ + * │ │ ⁄ │ ˇ │ │ « │ » │ “ │ ” │ „ │ · │ — │ │ + * ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ + * │ │ │ │ │ │ │ │ + * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ + * + */ +// Row 1 +#define SE_GTEQ S(A(SE_LABK)) // ≥ +#define SE_IEXL S(A(SE_1)) // ¡ +#define SE_YEN S(A(SE_3)) // ¥ +#define SE_CENT S(A(SE_4)) // ¢ +#define SE_PERM S(A(SE_5)) // ‰ +#define SE_PILC S(A(SE_6)) // ¶ +#define SE_BSLS S(A(SE_7)) // (backslash) +#define SE_LCBR S(A(SE_8)) // { +#define SE_RCBR S(A(SE_9)) // } +#define SE_NEQL S(A(SE_0)) // ≠ +#define SE_IQUE S(A(SE_PLUS)) // ¿ +// Row 2 +#define SE_DEG S(A(SE_Q)) // ° +#define SE_DACU S(A(SE_W)) // ˝ +#define SE_DDAG S(A(SE_T)) // ‡ +#define SE_STIL S(A(SE_Y)) // ˜ +#define SE_DCIR S(A(SE_I)) // ˆ +#define SE_NARP S(A(SE_P)) // ∏ +#define SE_RNGA S(A(SE_ARNG)) // ˚ +// Row 3 +#define SE_LOZN S(A(SE_A)) // ◊ +#define SE_NARS S(A(SE_S)) // ∑ +#define SE_INCR S(A(SE_D)) // ∆ +#define SE_INTG S(A(SE_F)) // ∫ +#define SE_MACR S(A(SE_G)) // ¯ +#define SE_BREV S(A(SE_H)) // ˘ +#define SE_NOT S(A(SE_J)) // ¬ +#define SE_MORD S(A(SE_K)) // º +#define SE_FL S(A(SE_L)) // fl +// Row 4 +#define SE_FRSL S(A(SE_Z)) // ⁄ +#define SE_CARN S(A(SE_X)) // ˇ +#define SE_LDAQ S(A(SE_V)) // « +#define SE_RDAQ S(A(SE_B)) // » +#define SE_LDQU S(A(SE_N)) // “ +#define SE_RDQU S(A(SE_M)) // ” +#define SE_DLQU S(A(SE_COMM)) // „ +#define SE_MDDT S(A(SE_DOT)) // · +#define SE_MDSH S(A(SE_MINS)) // — diff --git a/quantum/keymap_extras/keymap_swedish_pro_osx_iso.h b/quantum/keymap_extras/keymap_swedish_pro_osx_iso.h new file mode 100644 index 000000000000..f2d66058654d --- /dev/null +++ b/quantum/keymap_extras/keymap_swedish_pro_osx_iso.h @@ -0,0 +1,239 @@ +/* Copyright 2021 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should 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 "keymap.h" + +// clang-format off + +/* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ + * │ § │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ + │ ´ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ + * │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ Å │ ¨ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Ö │ Ä │ ' │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤ + * │ │ < │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │ + * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ + * │ │ │ │ │ │ │ │ + * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ + */ +// Row 1 +#define SE_SECT KC_GRV // § +#define SE_1 KC_1 // 1 +#define SE_2 KC_2 // 2 +#define SE_3 KC_3 // 3 +#define SE_4 KC_4 // 4 +#define SE_5 KC_5 // 5 +#define SE_6 KC_6 // 6 +#define SE_7 KC_7 // 7 +#define SE_8 KC_8 // 8 +#define SE_9 KC_9 // 9 +#define SE_0 KC_0 // 0 +#define SE_PLUS KC_MINS // + +#define SE_ACUT KC_EQL // ´ (dead) +// Row 2 +#define SE_Q KC_Q // Q +#define SE_W KC_W // W +#define SE_E KC_E // E +#define SE_R KC_R // R +#define SE_T KC_T // T +#define SE_Y KC_Y // Y +#define SE_U KC_U // U +#define SE_I KC_I // I +#define SE_O KC_O // O +#define SE_P KC_P // P +#define SE_ARNG KC_LBRC // Å +#define SE_DIAE KC_RBRC // ¨ (dead) +// Row 3 +#define SE_A KC_A // A +#define SE_S KC_S // S +#define SE_D KC_D // D +#define SE_F KC_F // F +#define SE_G KC_G // G +#define SE_H KC_H // H +#define SE_J KC_J // J +#define SE_K KC_K // K +#define SE_L KC_L // L +#define SE_ODIA KC_SCLN // Ö +#define SE_ADIA KC_QUOT // Ä +#define SE_QUOT KC_NUHS // ' +// Row 4 +#define SE_LABK KC_NUBS // < +#define SE_Z KC_Z // Z +#define SE_X KC_X // X +#define SE_C KC_C // C +#define SE_V KC_V // V +#define SE_B KC_B // B +#define SE_N KC_N // N +#define SE_M KC_M // M +#define SE_COMM KC_COMM // , +#define SE_DOT KC_DOT // . +#define SE_MINS KC_SLSH // - + +/* Shifted symbols + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ + * │ ° │ ! │ " │ # │ € │ % │ & │ / │ ( │ ) │ = │ ? │ ` │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ ^ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ * │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤ + * │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │ + * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ + * │ │ │ │ │ │ │ │ + * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ + */ +// Row 1 +#define SE_DEG S(SE_SECT) // ° +#define SE_EXLM S(SE_1) // ! +#define SE_DQUO S(SE_2) // " +#define SE_HASH S(SE_3) // # +#define SE_EURO S(SE_4) // € +#define SE_PERC S(SE_5) // % +#define SE_AMPR S(SE_6) // & +#define SE_SLSH S(SE_7) // / +#define SE_LPRN S(SE_8) // ( +#define SE_RPRN S(SE_9) // ) +#define SE_EQL S(SE_0) // = +#define SE_QUES S(SE_PLUS) // ? +#define SE_GRV S(SE_ACUT) // ` +// Row 2 +#define SE_CIRC S(SE_DIAE) // ^ (dead) +// Row 3 +#define SE_ASTR S(SE_QUOT) // * +// Row 4 +#define SE_RABK S(SE_LABK) // > +#define SE_SCLN S(SE_COMM) // ; +#define SE_COLN S(SE_DOT) // : +#define SE_UNDS S(SE_MINS) // _ + +/* Alted symbols + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ + * │ ¶ │ © │ @ │ £ │ $ │ ∞ │ │ | │ [ │ ] │ ≈ │ ± │ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ + * │ │ • │ Ω │ É │ ® │ † │ µ │ Ü │ ı │ Œ │ π │ ˙ │ ~ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │  │ ß │ ∂ │ ƒ │ ¸ │ ˛ │ √ │ ª │ fi │ Ø │ Æ │ ™ │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤ + * │ │ ≤ │ ÷ │ │ Ç │ ‹ │ › │ ‘ │ ’ │ ‚ │ … │ – │ │ + * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ + * │ │ │ │ │ │ │ │ + * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ + */ +// Row 1 +#define SE_PILC A(SE_SECT) // ¶ +#define SE_COPY A(SE_1) // © +#define SE_AT A(SE_2) // @ +#define SE_PND A(SE_3) // £ +#define SE_DLR A(SE_4) // $ +#define SE_INFN A(SE_5) // ∞ +#define SE_PIPE A(SE_7) // | +#define SE_LBRC A(SE_8) // [ +#define SE_RBRC A(SE_9) // ] +#define SE_AEQL A(SE_0) // ≈ +#define SE_PLMN A(SE_PLUS) // ± +// Row 2 +#define SE_BULT A(SE_Q) // • +#define SE_OMEG A(SE_W) // Ω +#define SE_EACU A(SE_E) // É +#define SE_REGD A(SE_R) // ® +#define SE_DAGG A(SE_T) // † +#define SE_MICR A(SE_Y) // µ +#define SE_UDIA A(SE_U) // Ü +#define SE_DLSI A(SE_I) // ı +#define SE_OE A(SE_O) // Œ +#define SE_PI A(SE_P) // π +#define SE_DOTA A(SE_ARNG) // ˙ +#define SE_TILD A(SE_DIAE) // ~ (dead) +// Row 3 +#define SE_APPL A(SE_A) //  (Apple logo) +#define SE_SS A(SE_S) // ß +#define SE_PDIF A(SE_D) // ∂ +#define SE_FHK A(SE_F) // ƒ +#define SE_CEDL A(SE_G) // ¸ +#define SE_OGON A(SE_H) // ˛ +#define SE_SQRT A(SE_J) // √ +#define SE_FORD A(SE_K) // ª +#define SE_FI A(SE_L) // fi +#define SE_OSTR A(SE_ODIA) // Ø +#define SE_AE A(SE_ADIA) // Æ +#define SE_TM A(SE_QUOT) // ™ +// Row 4 +#define SE_LTEQ A(SE_LABK) // ≤ +#define SE_DIV A(SE_Z) // ÷ +#define SE_CCED A(SE_C) // Ç +#define SE_LSAQ A(SE_V) // ‹ +#define SE_RSAQ A(SE_B) // › +#define SE_LSQU A(SE_N) // ‘ +#define SE_RSQU A(SE_M) // ’ +#define SE_SLQU A(SE_COMM) // ‚ +#define SE_ELLP A(SE_DOT) // … +#define SE_NDSH A(SE_MINS) // – + +/* Shift+Alted symbols + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ + * │ │ ¡ │ ” │ ¥ │ ¢ │ ‰ │ │ \ │ { │ } │ ≠ │ ¿ │ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤ + * │ │ │ ˝ │ │ │ ‡ │ ˜ │ │ ˆ │ │ ∏ │ ˚ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ ◊ │ ∑ │ ∆ │ ∫ │ ¯ │ ˘ │ ¬ │ º │ fl │ │ │ │ │ + * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤ + * │ │ ≥ │ ⁄ │ ˇ │ │ « │ » │ “ │ ” │ „ │ · │ — │ │ + * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤ + * │ │ │ │ │ │ │ │ + * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘ + */ +// Row 1 +#define SE_IEXL S(A(SE_1)) // ¡ +#define SE_YEN S(A(SE_3)) // ¥ +#define SE_CENT S(A(SE_4)) // ¢ +#define SE_PERM S(A(SE_5)) // ‰ +#define SE_BSLS S(A(SE_7)) // (backslash) +#define SE_LCBR S(A(SE_8)) // { +#define SE_RCBR S(A(SE_9)) // } +#define SE_NEQL S(A(SE_0)) // ≠ +#define SE_IQUE S(A(SE_PLUS)) // ¿ +// Row 2 +#define SE_DACU S(A(SE_W)) // ˝ +#define SE_DDAG S(A(SE_T)) // ‡ +#define SE_STIL S(A(SE_Y)) // ˜ +#define SE_DCIR S(A(SE_I)) // ˆ +#define SE_NARP S(A(SE_P)) // ∏ +#define SE_RNGA S(A(SE_ARNG)) // ˚ +// Row 3 +#define SE_LOZN S(A(SE_A)) // ◊ +#define SE_NARS S(A(SE_S)) // ∑ +#define SE_INCR S(A(SE_D)) // ∆ +#define SE_INTG S(A(SE_F)) // ∫ +#define SE_MACR S(A(SE_G)) // ¯ +#define SE_BREV S(A(SE_H)) // ˘ +#define SE_NOT S(A(SE_J)) // ¬ +#define SE_MORD S(A(SE_K)) // º +#define SE_FL S(A(SE_L)) // fl +// Row 4 +#define SE_GTEQ S(A(SE_LABK)) // ≥ +#define SE_FRSL S(A(SE_Z)) // ⁄ +#define SE_CARN S(A(SE_X)) // ˇ +#define SE_LDAQ S(A(SE_V)) // « +#define SE_RDAQ S(A(SE_B)) // » +#define SE_LDQU S(A(SE_N)) // “ +#define SE_RDQU S(A(SE_M)) // ” +#define SE_DLQU S(A(SE_COMM)) // „ +#define SE_MDDT S(A(SE_DOT)) // · +#define SE_MDSH S(A(SE_MINS)) // — diff --git a/quantum/keymap_extras/keymap_turkish_f.h b/quantum/keymap_extras/keymap_turkish_f.h index acb130c838b9..f86ef2154688 100644 --- a/quantum/keymap_extras/keymap_turkish_f.h +++ b/quantum/keymap_extras/keymap_turkish_f.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ + │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ / │ - │       │ + * │ + │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ / │ - │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ F │ G │ Ğ │ I │ O │ D │ R │ N │ H │ P │ Q │ W │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ U │ İ │ E │ A │ Ü │ T │ K │ M │ L │ Y │ Ş │ X │    │ + * │ │ F │ G │ Ğ │ I │ O │ D │ R │ N │ H │ P │ Q │ W │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ U │ İ │ E │ A │ Ü │ T │ K │ M │ L │ Y │ Ş │ X │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ < │ J │ Ö │ V │ C │ Ç │ Z │ S │ B │ . │ , │          │ + * │ │ < │ J │ Ö │ V │ C │ Ç │ Z │ S │ B │ . │ , │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -88,15 +88,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ * │ ! │ " │ ^ │ $ │ % │ & │ ' │ ( │ ) │ = │ ? │ _ │       │ + * │ * │ ! │ " │ ^ │ $ │ % │ & │ ' │ ( │ ) │ = │ ? │ _ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │   │   │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │   │   │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ > │   │   │   │   │   │   │   │   │ : │ ; │          │ + * │ │ > │ │ │ │ │ │ │ │ │ : │ ; │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -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) // > @@ -120,15 +120,15 @@ /* AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ¬ │ ¹ │ ² │ # │ ¼ │ ½ │ ¾ │ { │ [ │ ] │ } │ \ │ | │       │ + * │ ¬ │ ¹ │ ² │ # │ ¼ │ ½ │ ¾ │ { │ [ │ ] │ } │ \ │ | │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ @ │   │   │ ¶ │   │ ¥ │   │   │ Ø │ £ │ ¨ │ ~ │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ Æ │ ß │ € │   │   │ ₺ │   │   │   │ ´ │   │ ` │    │ + * │ │ @ │ │ │ ¶ │ │ ¥ │ │ │ Ø │ £ │ ¨ │ ~ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ Æ │ ß │ € │ │ │ ₺ │ │ │ │ ´ │ │ ` │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │   │ « │ » │ ¢ │   │   │   │ µ │ × │ ÷ │ - │          │ + * │ │ │ « │ » │ ¢ │ │ │ │ µ │ × │ ÷ │ - │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -167,19 +167,19 @@ #define TR_MICR ALGR(TR_S) // µ #define TR_MUL ALGR(TR_B) // × #define TR_DIV ALGR(TR_DOT) // ÷ -#define TR_SHYP ALGR(TR_COMM) // (soft hyphen) +#define TR_SHYP ALGR(TR_COMM) // ­ (soft hyphen) /* Shift+AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │   │   │   │ ³ │ ¤ │   │   │   │   │   │   │ ¿ │   │       │ + * │ │ │ │ ³ │ ¤ │ │ │ │ │ │ │ ¿ │ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │ ® │   │   │   │   │   │   │   │   │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │ § │   │ ª │   │   │   │   │   │   │   │   │    │ + * │ │ │ │ │ ® │ │ │ │ │ │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ § │ │ ª │ │ │ │ │ │ │ │ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ ¦ │   │   │ © │   │   │   │ º │   │   │   │          │ + * │ │ ¦ │ │ │ © │ │ │ │ º │ │ │ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 diff --git a/quantum/keymap_extras/keymap_turkish_q.h b/quantum/keymap_extras/keymap_turkish_q.h index 738718d2d4a5..120e2b8d921b 100644 --- a/quantum/keymap_extras/keymap_turkish_q.h +++ b/quantum/keymap_extras/keymap_turkish_q.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ " │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ * │ - │       │ + * │ " │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ * │ - │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ Ğ │ Ü │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Ş │ İ │ , │    │ + * │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ Ğ │ Ü │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Ş │ İ │ , │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ < │ Z │ X │ C │ V │ B │ N │ M │ Ö │ Ç │ . │          │ + * │ │ < │ Z │ X │ C │ V │ B │ N │ M │ Ö │ Ç │ . │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -88,15 +88,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ é │ ! │ ' │ ^ │ + │ % │ & │ / │ ( │ ) │ = │ ? │ _ │       │ + * │ é │ ! │ ' │ ^ │ + │ % │ & │ / │ ( │ ) │ = │ ? │ _ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │   │   │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │   │   │ ; │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ ; │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ > │   │   │   │   │   │   │   │   │   │ : │          │ + * │ │ > │ │ │ │ │ │ │ │ │ │ : │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -121,15 +121,15 @@ /* AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │   │   │ £ │ # │ $ │ ½ │   │ { │ [ │ ] │ } │ \ │ | │       │ + * │ │ │ £ │ # │ $ │ ½ │ │ { │ [ │ ] │ } │ \ │ | │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ @ │   │ € │   │ ₺ │   │   │   │   │   │ ¨ │ ~ │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ Æ │ ß │   │   │   │   │   │   │   │ ´ │   │ ` │    │ + * │ │ @ │ │ € │ │ ₺ │ │ │ │ │ │ ¨ │ ~ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ Æ │ ß │ │ │ │ │ │ │ │ ´ │ │ ` │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │   │   │   │   │   │   │   │   │   │   │   │          │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 diff --git a/quantum/keymap_extras/keymap_uk.h b/quantum/keymap_extras/keymap_uk.h index d790179ab3af..03fe8149f0de 100644 --- a/quantum/keymap_extras/keymap_uk.h +++ b/quantum/keymap_extras/keymap_uk.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │       │ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │    │ + * │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │          │ + * │ │ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -88,15 +88,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ¬ │ ! │ " │ £ │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │       │ + * │ ¬ │ ! │ " │ £ │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │ { │ } │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │   │   │   │   │   │   │   │   │   │ : │ @ │ ~ │    │ + * │ │ │ │ │ │ │ │ │ │ │ │ { │ } │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ │ │ │ │ │ │ │ │ │ : │ @ │ ~ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │ | │   │   │   │   │   │   │   │ < │ > │ ? │          │ + * │ │ | │ │ │ │ │ │ │ │ < │ > │ ? │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -128,15 +128,15 @@ /* AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ¦ │   │   │   │ € │   │   │   │   │   │   │   │   │       │ + * │ ¦ │ │ │ │ € │ │ │ │ │ │ │ │ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │ É │   │   │   │ Ú │ Í │ Ó │   │   │   │     │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐    │ - * │      │ Á │   │   │   │   │   │   │   │   │   │   │   │    │ + * │ │ │ │ É │ │ │ │ Ú │ Í │ Ó │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ + * │ │ Á │ │ │ │ │ │ │ │ │ │ │ │ │ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ - * │    │   │   │   │   │   │   │   │   │   │   │   │          │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -149,78 +149,3 @@ #define UK_OACU ALGR(KC_O) // Ó // Row 3 #define UK_AACU ALGR(KC_A) // Á - -// DEPRECATED -#define UK_ESC KC_ESC -#define UK_F1 KC_F1 -#define UK_F2 KC_F2 -#define UK_F3 KC_F3 -#define UK_F4 KC_F4 -#define UK_F5 KC_F5 -#define UK_F6 KC_F6 -#define UK_F7 KC_F7 -#define UK_F8 KC_F8 -#define UK_F9 KC_F9 -#define UK_F10 KC_F10 -#define UK_F11 KC_F11 -#define UK_F12 KC_F12 -#define UK_PSCR KC_PSCR -#define UK_SLCK KC_SLCK -#define UK_PAUS KC_PAUS -#define UK_BSPC KC_BSPC -#define UK_TAB KC_TAB -#define UK_ENT KC_ENT -#define UK_LSFT KC_LSFT -#define UK_RSFT KC_RSFT -#define UK_LCTL KC_LCTL -#define UK_LGUI KC_LGUI -#define UK_LALT KC_LALT -#define UK_SPC KC_SPC -#define UK_RALT KC_RALT -#define UK_RGUI KC_RGUI -#define UK_RCTL KC_RCTL -#define UK_INS KC_INS -#define UK_DEL KC_DEL -#define UK_HOME KC_HOME -#define UK_END KC_END -#define UK_PGUP KC_PGUP -#define UK_PGDN KC_PGDN -#define UK_UP KC_UP -#define UK_LEFT KC_LEFT -#define UK_DOWN KC_DOWN -#define UK_RGHT KC_RGHT -#define UK_PSLS KC_PSLS -#define UK_PAST KC_PAST -#define UK_PMNS KC_PMNS -#define UK_PPLS KC_PPLS -#define UK_PENT KC_PENT -#define UK_P1 KC_P1 -#define UK_P2 KC_P2 -#define UK_P3 KC_P3 -#define UK_P4 KC_P4 -#define UK_P5 KC_P5 -#define UK_P6 KC_P6 -#define UK_P7 KC_P7 -#define UK_P8 KC_P8 -#define UK_P9 KC_P9 -#define UK_P0 KC_P0 -#define UK_PDOT KC_PDOT -#define UK_PEQL KC_PEQL -#define UK_PCMM KC_PCMM -#define UK_F13 KC_F13 -#define UK_F14 KC_F14 -#define UK_F15 KC_F15 -#define UK_F16 KC_F16 -#define UK_F17 KC_F17 -#define UK_F18 KC_F18 -#define UK_F19 KC_F19 -#define UK_F20 KC_F20 -#define UK_F21 KC_F21 -#define UK_F22 KC_F22 -#define UK_F23 KC_F23 -#define UK_F24 KC_F24 -#define UK_EACT UK_EACU -#define UK_UACT UK_UACU -#define UK_IACT UK_IACU -#define UK_OACT UK_OACU -#define UK_AACT UK_OACU diff --git a/quantum/keymap_extras/keymap_us_extended.h b/quantum/keymap_extras/keymap_us_extended.h index b2b3a734c9f3..fb3e9c7d36a0 100644 --- a/quantum/keymap_extras/keymap_us_extended.h +++ b/quantum/keymap_extras/keymap_us_extended.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │       │ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │  \  │ + * │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │      │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │        │ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ - * │        │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │          │ + * │ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ │ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -87,15 +87,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │       │ + * │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │ { │ } │  |  │ + * │ │ │ │ │ │ │ │ │ │ │ │ { │ } │ | │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │      │   │   │   │   │   │   │   │   │   │ : │ " │        │ + * │ │ │ │ │ │ │ │ │ │ │ : │ " │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ - * │        │   │   │   │   │   │   │   │ < │ > │ ? │          │ + * │ │ │ │ │ │ │ │ │ < │ > │ ? │ │ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -126,15 +126,15 @@ /* AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ` │ ¹ │ ² │ ³ │ ¤ │ € │ ^ │ ̛  │ ¾ │ ‘ │ ’ │ ¥ │ × │       │ + * │ ` │ ¹ │ ² │ ³ │ ¤ │ € │ ^ │ ̛ │ ¾ │ ‘ │ ’ │ ¥ │ × │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ Ä │ Å │ É │ ® │ Þ │ Ü │ Ú │ Í │ Ó │ Ö │ « │ » │  ¬  │ + * │ │ Ä │ Å │ É │ ® │ Þ │ Ü │ Ú │ Í │ Ó │ Ö │ « │ » │ ¬ │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │      │ Á │ ß │ Ð │   │   │   │ Ï │ Œ │ Ø │ ¶ │ ' │        │ + * │ │ Á │ ß │ Ð │ │ │ │ Ï │ Œ │ Ø │ ¶ │ ' │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ - * │        │ Æ │   │ © │   │   │ Ñ │ µ │ Ç │ ˙ │ ¿ │          │ + * │ │ Æ │ │ © │ │ │ Ñ │ µ │ Ç │ ˙ │ ¿ │ │ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -187,15 +187,15 @@ /* Shift+AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ~ │ ¡ │ ˝ │ ¯ │ £ │ ¸ │ ¼ │ ½ │ ¾ │ ˘ │ ° │  ̣ │ ÷ │       │ + * │ ~ │ ¡ │ ˝ │ ¯ │ £ │ ¸ │ ¼ │ ½ │ ¾ │ ˘ │ ° │ ̣ │ ÷ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │ “ │ ” │  ¦  │ + * │ │ │ │ │ │ │ │ │ │ │ │ “ │ ” │ ¦ │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │      │   │ § │   │   │   │   │   │   │   │ ° │ " │        │ + * │ │ │ § │ │ │ │ │ │ │ │ ° │ " │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ - * │        │   │   │ ¢ │   │   │   │   │   │ ˇ │  ̉ │          │ + * │ │ │ │ ¢ │ │ │ │ │ │ ˇ │ ̉ │ │ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -214,7 +214,7 @@ #define US_DIV S(ALGR(US_EQL)) // ÷ // Row 2 #define US_LDQU S(ALGR(US_LBRC)) // “ -#define US_RDQU S(ALGR(US_LBRC)) // ” +#define US_RDQU S(ALGR(US_RBRC)) // ” #define US_BRKP S(ALGR(US_BSLS)) // ¦ // Row 3 #define US_SECT S(ALGR(US_S)) // § diff --git a/quantum/keymap_extras/keymap_us_international.h b/quantum/keymap_extras/keymap_us_international.h index 49afcc4fb272..d491a38f5280 100644 --- a/quantum/keymap_extras/keymap_us_international.h +++ b/quantum/keymap_extras/keymap_us_international.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │       │ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │  \  │ + * │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │      │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ´ │        │ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ´ │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ - * │        │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │          │ + * │ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ │ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -87,15 +87,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │       │ + * │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │ { │ } │  |  │ + * │ │ │ │ │ │ │ │ │ │ │ │ { │ } │ | │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │      │   │   │   │   │   │   │   │   │   │ : │ ¨ │        │ + * │ │ │ │ │ │ │ │ │ │ │ : │ ¨ │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ - * │        │   │   │   │   │   │   │   │ < │ > │ ? │          │ + * │ │ │ │ │ │ │ │ │ < │ > │ ? │ │ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -126,15 +126,15 @@ /* AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │   │ ¡ │ ² │ ³ │ ¤ │ € │ ¼ │ ½ │ ¾ │ ‘ │ ’ │ ¥ │ × │       │ + * │ │ ¡ │ ² │ ³ │ ¤ │ € │ ¼ │ ½ │ ¾ │ ‘ │ ’ │ ¥ │ × │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ Ä │ Å │ É │ ® │ Þ │ Ü │ Ú │ Í │ Ó │ Ö │ « │ » │  ¬  │ + * │ │ Ä │ Å │ É │ ® │ Þ │ Ü │ Ú │ Í │ Ó │ Ö │ « │ » │ ¬ │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │      │ Á │ ß │ Ð │   │   │   │   │   │ Ø │ ¶ │ ´ │        │ + * │ │ Á │ ß │ Ð │ │ │ │ │ │ Ø │ ¶ │ ´ │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ - * │        │ Æ │   │ © │   │   │ Ñ │ µ │ Ç │   │ ¿ │          │ + * │ │ Æ │ │ © │ │ │ Ñ │ µ │ Ç │ │ ¿ │ │ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -181,15 +181,15 @@ /* Shift+AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │   │ ¹ │   │   │ £ │   │   │   │   │   │   │   │ ÷ │       │ + * │ │ ¹ │ │ │ £ │ │ │ │ │ │ │ │ ÷ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │   │   │  ¦  │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ ¦ │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │      │   │ § │   │   │   │   │   │   │   │ ° │ ¨ │        │ + * │ │ │ § │ │ │ │ │ │ │ │ ° │ ¨ │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ - * │        │   │   │ ¢ │   │   │   │   │   │   │   │          │ + * │ │ │ │ ¢ │ │ │ │ │ │ │ │ │ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 diff --git a/quantum/keymap_extras/keymap_us_international_linux.h b/quantum/keymap_extras/keymap_us_international_linux.h index 2c3e230393f4..e0c08200b967 100644 --- a/quantum/keymap_extras/keymap_us_international_linux.h +++ b/quantum/keymap_extras/keymap_us_international_linux.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │       │ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │  \  │ + * │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │      │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ´ │        │ + * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ´ │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ - * │        │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │          │ + * │ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ │ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -87,15 +87,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │       │ + * │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │ { │ } │  |  │ + * │ │ │ │ │ │ │ │ │ │ │ │ { │ } │ | │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │      │   │   │   │   │   │   │   │   │   │ : │ ¨ │        │ + * │ │ │ │ │ │ │ │ │ │ │ : │ ¨ │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ - * │        │   │   │   │   │   │   │   │ < │ > │ ? │          │ + * │ │ │ │ │ │ │ │ │ < │ > │ ? │ │ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -126,15 +126,15 @@ /* AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ` │ ¡ │ ² │ ³ │ ¤ │ € │ ¼ │ ½ │ ¾ │ ‘ │ ’ │ ¥ │ × │       │ + * │ ` │ ¡ │ ² │ ³ │ ¤ │ € │ ¼ │ ½ │ ¾ │ ‘ │ ’ │ ¥ │ × │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ Ä │ Å │ É │ ® │ Þ │ Ü │ Ú │ Í │ Ó │ Ö │ « │ » │  ¬  │ + * │ │ Ä │ Å │ É │ ® │ Þ │ Ü │ Ú │ Í │ Ó │ Ö │ « │ » │ ¬ │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │      │ Á │ ß │ Ð │   │   │   │   │ Œ │ Ø │ ¶ │ ' │        │ + * │ │ Á │ ß │ Ð │ │ │ │ │ Œ │ Ø │ ¶ │ ' │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ - * │        │ Æ │   │ © │   │   │ Ñ │ µ │ Ç │ ˙ │ ¿ │          │ + * │ │ Æ │ │ © │ │ │ Ñ │ µ │ Ç │ ˙ │ ¿ │ │ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ @@ -185,15 +185,15 @@ /* Shift+AltGr symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ~ │ ¹ │ ˝ │ ¯ │ £ │ ¸ │ ^ │ ̛  │ ˛ │ ˘ │ ° │  ̣ │ ÷ │       │ + * │ ~ │ ¹ │ ˝ │ ¯ │ £ │ ¸ │ ^ │ ̛ │ ˛ │ ˘ │ ° │ ̣ │ ÷ │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │   │ “ │ ” │  ¦  │ + * │ │ │ │ │ │ │ │ │ │ │ │ “ │ ” │ ¦ │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │      │   │ § │   │   │   │   │   │   │   │ ° │ " │        │ + * │ │ │ § │ │ │ │ │ │ │ │ ° │ " │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ - * │        │   │   │ ¢ │   │   │   │   │   │ ˇ │  ̉ │          │ + * │ │ │ │ ¢ │ │ │ │ │ │ ˇ │ ̉ │ │ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -204,15 +204,15 @@ #define US_PND S(ALGR(US_4)) // £ #define US_CEDL S(ALGR(US_5)) // ¸ (dead) #define US_CIRC S(ALGR(US_6)) // ^ -#define US_HORN S(ALGR(US_7)) // ̛ (dead) +#define US_HORN S(ALGR(US_7)) // ̛ (dead) #define US_OGON S(ALGR(US_8)) // ˛ (dead) #define US_BREV S(ALGR(US_9)) // ˘ (dead) #define US_RNGA S(ALGR(US_0)) // ° (dead) -#define US_DOTB S(ALGR(US_MINS)) // ̣ (dead) +#define US_DOTB S(ALGR(US_MINS)) // ̣ (dead) #define US_DIV S(ALGR(US_EQL)) // ÷ // Row 2 #define US_LDQU S(ALGR(US_LBRC)) // “ -#define US_RDQU S(ALGR(US_LBRC)) // ” +#define US_RDQU S(ALGR(US_RBRC)) // ” #define US_BRKP S(ALGR(US_BSLS)) // ¦ // Row 3 #define US_SECT S(ALGR(US_S)) // § @@ -221,4 +221,4 @@ // Row 4 #define US_CENT S(ALGR(US_C)) // ¢ #define US_CARN S(ALGR(US_DOT)) // ˇ (dead) -#define US_HOKA S(ALGR(US_SLSH)) // ̉ (dead) +#define US_HOKA S(ALGR(US_SLSH)) // ̉ (dead) diff --git a/quantum/keymap_extras/keymap_workman.h b/quantum/keymap_extras/keymap_workman.h index bab1ea17971e..6367d6835138 100644 --- a/quantum/keymap_extras/keymap_workman.h +++ b/quantum/keymap_extras/keymap_workman.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │       │ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ Q │ D │ R │ W │ B │ J │ F │ U │ P │ ; │ [ │ ] │  \  │ + * │ │ Q │ D │ R │ W │ B │ J │ F │ U │ P │ ; │ [ │ ] │ \ │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │      │ A │ S │ H │ T │ G │ Y │ N │ E │ O │ I │ ' │        │ + * │ │ A │ S │ H │ T │ G │ Y │ N │ E │ O │ I │ ' │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ - * │        │ Z │ X │ M │ C │ V │ K │ L │ , │ . │ / │          │ + * │ │ Z │ X │ M │ C │ V │ K │ L │ , │ . │ / │ │ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -87,15 +87,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │       │ + * │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │ : │ { │ } │  |  │ + * │ │ │ │ │ │ │ │ │ │ │ : │ { │ } │ | │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │      │   │   │   │   │   │   │   │   │   │   │ " │        │ + * │ │ │ │ │ │ │ │ │ │ │ │ " │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ - * │        │   │   │   │   │   │   │   │ < │ > │ ? │          │ + * │ │ │ │ │ │ │ │ │ < │ > │ ? │ │ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -123,32 +123,3 @@ #define WK_LABK S(WK_COMM) // < #define WK_RABK S(WK_DOT) // > #define WK_QUES S(WK_SLSH) // ? - -// DEPRECATED -#define KC_WK_Q WK_Q -#define KC_WK_D WK_D -#define KC_WK_R WK_R -#define KC_WK_W WK_W -#define KC_WK_B WK_B -#define KC_WK_J WK_J -#define KC_WK_F WK_F -#define KC_WK_U WK_U -#define KC_WK_P WK_P -#define KC_WK_SCLN WK_SCLN -#define KC_WK_A WK_A -#define KC_WK_S WK_S -#define KC_WK_H WK_H -#define KC_WK_T WK_T -#define KC_WK_G WK_G -#define KC_WK_Y WK_Y -#define KC_WK_N WK_N -#define KC_WK_E WK_E -#define KC_WK_O WK_O -#define KC_WK_I WK_I -#define KC_WK_Z WK_Z -#define KC_WK_X WK_X -#define KC_WK_M WK_M -#define KC_WK_C WK_C -#define KC_WK_V WK_V -#define KC_WK_K WK_K -#define KC_WK_L WK_L diff --git a/quantum/keymap_extras/keymap_workman_zxcvm.h b/quantum/keymap_extras/keymap_workman_zxcvm.h index 4ba2ada9e724..01eb83c397d5 100644 --- a/quantum/keymap_extras/keymap_workman_zxcvm.h +++ b/quantum/keymap_extras/keymap_workman_zxcvm.h @@ -22,15 +22,15 @@ /* * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │       │ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │ Q │ D │ R │ W │ B │ J │ F │ U │ P │ ; │ [ │ ] │  \  │ + * │ │ Q │ D │ R │ W │ B │ J │ F │ U │ P │ ; │ [ │ ] │ \ │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │      │ A │ S │ H │ T │ G │ Y │ N │ E │ O │ I │ ' │        │ + * │ │ A │ S │ H │ T │ G │ Y │ N │ E │ O │ I │ ' │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ - * │        │ Z │ X │ C │ V │ M │ K │ L │ , │ . │ / │          │ + * │ │ Z │ X │ C │ V │ M │ K │ L │ , │ . │ / │ │ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 @@ -87,15 +87,15 @@ /* Shifted symbols * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ - * │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │       │ + * │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ │ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ - * │     │   │   │   │   │   │   │   │   │   │ : │ { │ } │  |  │ + * │ │ │ │ │ │ │ │ │ │ │ : │ { │ } │ | │ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │      │   │   │   │   │   │   │   │   │   │   │ " │        │ + * │ │ │ │ │ │ │ │ │ │ │ │ " │ │ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ - * │        │   │   │   │   │   │   │   │ < │ > │ ? │          │ + * │ │ │ │ │ │ │ │ │ < │ > │ ? │ │ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ - * │    │    │    │                        │    │    │    │    │ + * │ │ │ │ │ │ │ │ │ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ */ // Row 1 diff --git a/quantum/led_matrix.h b/quantum/led_matrix.h deleted file mode 100644 index 0984de73b3a5..000000000000 --- a/quantum/led_matrix.h +++ /dev/null @@ -1,160 +0,0 @@ -/* Copyright 2017 Jason Williams - * Copyright 2017 Jack Humbert - * Copyright 2018 Yiancar - * Copyright 2019 Clueboard - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#pragma once - -#include <stdint.h> -#include <stdbool.h> -#include "led_matrix_types.h" -#include "quantum.h" - -#ifdef IS31FL3731 -# include "is31fl3731-simple.h" -#endif - -#ifndef LED_MATRIX_LED_FLUSH_LIMIT -# define LED_MATRIX_LED_FLUSH_LIMIT 16 -#endif - -#ifndef LED_MATRIX_LED_PROCESS_LIMIT -# define LED_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 -#endif - -#if defined(LED_MATRIX_LED_PROCESS_LIMIT) && LED_MATRIX_LED_PROCESS_LIMIT > 0 && LED_MATRIX_LED_PROCESS_LIMIT < DRIVER_LED_TOTAL -# define LED_MATRIX_USE_LIMITS(min, max) \ - uint8_t min = LED_MATRIX_LED_PROCESS_LIMIT * params->iter; \ - uint8_t max = min + LED_MATRIX_LED_PROCESS_LIMIT; \ - if (max > DRIVER_LED_TOTAL) max = DRIVER_LED_TOTAL; -#else -# define LED_MATRIX_USE_LIMITS(min, max) \ - uint8_t min = 0; \ - uint8_t max = DRIVER_LED_TOTAL; -#endif - -#define LED_MATRIX_TEST_LED_FLAGS() \ - if (!HAS_ANY_FLAGS(g_led_config.flags[i], params->flags)) continue - -enum led_matrix_effects { - LED_MATRIX_NONE = 0, - -// -------------------------------------- -// -----Begin led effect enum macros----- -#define LED_MATRIX_EFFECT(name, ...) LED_MATRIX_##name, -#include "led_matrix_animations/led_matrix_effects.inc" -#undef LED_MATRIX_EFFECT - -#if defined(LED_MATRIX_CUSTOM_KB) || defined(LED_MATRIX_CUSTOM_USER) -# define LED_MATRIX_EFFECT(name, ...) LED_MATRIX_CUSTOM_##name, -# ifdef LED_MATRIX_CUSTOM_KB -# include "led_matrix_kb.inc" -# endif -# ifdef LED_MATRIX_CUSTOM_USER -# include "led_matrix_user.inc" -# endif -# undef LED_MATRIX_EFFECT -#endif - // -------------------------------------- - // -----End led effect enum macros------- - - LED_MATRIX_EFFECT_MAX -}; - -void eeconfig_update_led_matrix_default(void); -void eeconfig_update_led_matrix(void); -void eeconfig_debug_led_matrix(void); - -uint8_t led_matrix_map_row_column_to_led_kb(uint8_t row, uint8_t column, uint8_t *led_i); -uint8_t led_matrix_map_row_column_to_led(uint8_t row, uint8_t column, uint8_t *led_i); - -void led_matrix_set_value(int index, uint8_t value); -void led_matrix_set_value_all(uint8_t value); - -void process_led_matrix(uint8_t row, uint8_t col, bool pressed); - -void led_matrix_task(void); - -// This runs after another backlight effect and replaces -// values already set -void led_matrix_indicators(void); -void led_matrix_indicators_kb(void); -void led_matrix_indicators_user(void); - -void led_matrix_indicators_advanced(effect_params_t *params); -void led_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max); -void led_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max); - -void led_matrix_init(void); - -void led_matrix_set_suspend_state(bool state); -bool led_matrix_get_suspend_state(void); -void led_matrix_toggle(void); -void led_matrix_toggle_noeeprom(void); -void led_matrix_enable(void); -void led_matrix_enable_noeeprom(void); -void led_matrix_disable(void); -void led_matrix_disable_noeeprom(void); -uint8_t led_matrix_is_enabled(void); -void led_matrix_mode(uint8_t mode); -void led_matrix_mode_noeeprom(uint8_t mode); -uint8_t led_matrix_get_mode(void); -void led_matrix_step(void); -void led_matrix_step_noeeprom(void); -void led_matrix_step_reverse(void); -void led_matrix_step_reverse_noeeprom(void); -void led_matrix_set_val(uint8_t val); -void led_matrix_set_val_noeeprom(uint8_t val); -uint8_t led_matrix_get_val(void); -void led_matrix_increase_val(void); -void led_matrix_increase_val_noeeprom(void); -void led_matrix_decrease_val(void); -void led_matrix_decrease_val_noeeprom(void); -void led_matrix_set_speed(uint8_t speed); -void led_matrix_set_speed_noeeprom(uint8_t speed); -uint8_t led_matrix_get_speed(void); -void led_matrix_increase_speed(void); -void led_matrix_increase_speed_noeeprom(void); -void led_matrix_decrease_speed(void); -void led_matrix_decrease_speed_noeeprom(void); -led_flags_t led_matrix_get_flags(void); -void led_matrix_set_flags(led_flags_t flags); - -typedef struct { - /* Perform any initialisation required for the other driver functions to work. */ - void (*init)(void); - - /* Set the brightness of a single LED in the buffer. */ - void (*set_value)(int index, uint8_t value); - /* Set the brightness of all LEDS on the keyboard in the buffer. */ - void (*set_value_all)(uint8_t value); - /* Flush any buffered changes to the hardware. */ - void (*flush)(void); -} led_matrix_driver_t; - -extern const led_matrix_driver_t led_matrix_driver; - -extern led_eeconfig_t led_matrix_eeconfig; - -extern uint32_t g_led_timer; -extern led_config_t g_led_config; -#ifdef LED_MATRIX_KEYREACTIVE_ENABLED -extern last_hit_t g_last_hit_tracker; -#endif -#ifdef LED_MATRIX_FRAMEBUFFER_EFFECTS -extern uint8_t g_led_frame_buffer[MATRIX_ROWS][MATRIX_COLS]; -#endif diff --git a/quantum/led_matrix/animations/alpha_mods_anim.h b/quantum/led_matrix/animations/alpha_mods_anim.h new file mode 100644 index 000000000000..4d017894a11b --- /dev/null +++ b/quantum/led_matrix/animations/alpha_mods_anim.h @@ -0,0 +1,24 @@ +#ifdef ENABLE_LED_MATRIX_ALPHAS_MODS +LED_MATRIX_EFFECT(ALPHAS_MODS) +# ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS + +// alphas = val1, mods = val2 +bool ALPHAS_MODS(effect_params_t* params) { + LED_MATRIX_USE_LIMITS(led_min, led_max); + + uint8_t val1 = led_matrix_eeconfig.val; + uint8_t val2 = val1 + led_matrix_eeconfig.speed; + + for (uint8_t i = led_min; i < led_max; i++) { + LED_MATRIX_TEST_LED_FLAGS(); + if (HAS_FLAGS(g_led_config.flags[i], LED_FLAG_MODIFIER)) { + led_matrix_set_value(i, val2); + } else { + led_matrix_set_value(i, val1); + } + } + return led_matrix_check_finished_leds(led_max); +} + +# endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS +#endif // ENABLE_LED_MATRIX_ALPHAS_MODS diff --git a/quantum/led_matrix_animations/band_anim.h b/quantum/led_matrix/animations/band_anim.h similarity index 84% rename from quantum/led_matrix_animations/band_anim.h rename to quantum/led_matrix/animations/band_anim.h index 523dba1b78b0..293be4f67adc 100644 --- a/quantum/led_matrix_animations/band_anim.h +++ b/quantum/led_matrix/animations/band_anim.h @@ -1,4 +1,4 @@ -#ifndef DISABLE_LED_MATRIX_BAND +#ifdef ENABLE_LED_MATRIX_BAND LED_MATRIX_EFFECT(BAND) # ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS @@ -10,4 +10,4 @@ static uint8_t BAND_math(uint8_t val, uint8_t i, uint8_t time) { bool BAND(effect_params_t* params) { return effect_runner_i(params, &BAND_math); } # endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS -#endif // DISABLE_LED_MATRIX_BAND +#endif // ENABLE_LED_MATRIX_BAND diff --git a/quantum/led_matrix_animations/band_pinwheel_anim.h b/quantum/led_matrix/animations/band_pinwheel_anim.h similarity index 81% rename from quantum/led_matrix_animations/band_pinwheel_anim.h rename to quantum/led_matrix/animations/band_pinwheel_anim.h index fb3b835cad52..f47a3869ce5a 100644 --- a/quantum/led_matrix_animations/band_pinwheel_anim.h +++ b/quantum/led_matrix/animations/band_pinwheel_anim.h @@ -1,4 +1,4 @@ -#ifndef DISABLE_LED_MATRIX_BAND_PINWHEEL +#ifdef ENABLE_LED_MATRIX_BAND_PINWHEEL LED_MATRIX_EFFECT(BAND_PINWHEEL) # ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS @@ -7,4 +7,4 @@ static uint8_t BAND_PINWHEEL_math(uint8_t val, int16_t dx, int16_t dy, uint8_t t bool BAND_PINWHEEL(effect_params_t* params) { return effect_runner_dx_dy(params, &BAND_PINWHEEL_math); } # endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS -#endif // DISABLE_LED_MATRIX_BAND_PINWHEEL +#endif // ENABLE_LED_MATRIX_BAND_PINWHEEL diff --git a/quantum/led_matrix_animations/band_spiral_anim.h b/quantum/led_matrix/animations/band_spiral_anim.h similarity index 82% rename from quantum/led_matrix_animations/band_spiral_anim.h rename to quantum/led_matrix/animations/band_spiral_anim.h index fca22aad9c81..a4bd38218173 100644 --- a/quantum/led_matrix_animations/band_spiral_anim.h +++ b/quantum/led_matrix/animations/band_spiral_anim.h @@ -1,4 +1,4 @@ -#ifndef DISABLE_LED_MATRIX_BAND_SPIRAL +#ifdef ENABLE_LED_MATRIX_BAND_SPIRAL LED_MATRIX_EFFECT(BAND_SPIRAL) # ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS @@ -7,4 +7,4 @@ static uint8_t BAND_SPIRAL_math(uint8_t val, int16_t dx, int16_t dy, uint8_t dis bool BAND_SPIRAL(effect_params_t* params) { return effect_runner_dx_dy_dist(params, &BAND_SPIRAL_math); } # endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS -#endif // DISABLE_LED_MATRIX_BAND_SPIRAL +#endif // ENABLE_LED_MATRIX_BAND_SPIRAL diff --git a/quantum/led_matrix/animations/breathing_anim.h b/quantum/led_matrix/animations/breathing_anim.h new file mode 100644 index 000000000000..899925f516d1 --- /dev/null +++ b/quantum/led_matrix/animations/breathing_anim.h @@ -0,0 +1,19 @@ +#ifdef ENABLE_LED_MATRIX_BREATHING +LED_MATRIX_EFFECT(BREATHING) +# ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS + +bool BREATHING(effect_params_t* params) { + LED_MATRIX_USE_LIMITS(led_min, led_max); + + uint8_t val = led_matrix_eeconfig.val; + uint16_t time = scale16by8(g_led_timer, led_matrix_eeconfig.speed / 8); + val = scale8(abs8(sin8(time) - 128) * 2, val); + for (uint8_t i = led_min; i < led_max; i++) { + LED_MATRIX_TEST_LED_FLAGS(); + led_matrix_set_value(i, val); + } + return led_matrix_check_finished_leds(led_max); +} + +# endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS +#endif // ENABLE_LED_MATRIX_BREATHING diff --git a/quantum/led_matrix/animations/cycle_left_right_anim.h b/quantum/led_matrix/animations/cycle_left_right_anim.h new file mode 100644 index 000000000000..1a8999b8313c --- /dev/null +++ b/quantum/led_matrix/animations/cycle_left_right_anim.h @@ -0,0 +1,10 @@ +#ifdef ENABLE_LED_MATRIX_CYCLE_LEFT_RIGHT +LED_MATRIX_EFFECT(CYCLE_LEFT_RIGHT) +# ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS + +static uint8_t CYCLE_LEFT_RIGHT_math(uint8_t val, uint8_t i, uint8_t time) { return scale8(g_led_config.point[i].x - time, val); } + +bool CYCLE_LEFT_RIGHT(effect_params_t* params) { return effect_runner_i(params, &CYCLE_LEFT_RIGHT_math); } + +# endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS +#endif // ENABLE_LED_MATRIX_CYCLE_LEFT_RIGHT diff --git a/quantum/led_matrix/animations/cycle_out_in_anim.h b/quantum/led_matrix/animations/cycle_out_in_anim.h new file mode 100644 index 000000000000..77d3a14b6ff7 --- /dev/null +++ b/quantum/led_matrix/animations/cycle_out_in_anim.h @@ -0,0 +1,10 @@ +#ifdef ENABLE_LED_MATRIX_CYCLE_OUT_IN +LED_MATRIX_EFFECT(CYCLE_OUT_IN) +# ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS + +static uint8_t CYCLE_OUT_IN_math(uint8_t val, int16_t dx, int16_t dy, uint8_t dist, uint8_t time) { return scale8(3 * dist / 2 + time, val); } + +bool CYCLE_OUT_IN(effect_params_t* params) { return effect_runner_dx_dy_dist(params, &CYCLE_OUT_IN_math); } + +# endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS +#endif // ENABLE_LED_MATRIX_CYCLE_OUT_IN diff --git a/quantum/led_matrix/animations/cycle_up_down_anim.h b/quantum/led_matrix/animations/cycle_up_down_anim.h new file mode 100644 index 000000000000..b25947199c13 --- /dev/null +++ b/quantum/led_matrix/animations/cycle_up_down_anim.h @@ -0,0 +1,10 @@ +#ifdef ENABLE_LED_MATRIX_CYCLE_UP_DOWN +LED_MATRIX_EFFECT(CYCLE_UP_DOWN) +# ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS + +static uint8_t CYCLE_UP_DOWN_math(uint8_t val, uint8_t i, uint8_t time) { return scale8(g_led_config.point[i].y - time, val); } + +bool CYCLE_UP_DOWN(effect_params_t* params) { return effect_runner_i(params, &CYCLE_UP_DOWN_math); } + +# endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS +#endif // ENABLE_LED_MATRIX_CYCLE_UP_DOWN diff --git a/quantum/led_matrix/animations/dual_beacon_anim.h b/quantum/led_matrix/animations/dual_beacon_anim.h new file mode 100644 index 000000000000..81735e323cb0 --- /dev/null +++ b/quantum/led_matrix/animations/dual_beacon_anim.h @@ -0,0 +1,10 @@ +#ifdef ENABLE_LED_MATRIX_DUAL_BEACON +LED_MATRIX_EFFECT(DUAL_BEACON) +# ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS + +static uint8_t DUAL_BEACON_math(uint8_t val, int8_t sin, int8_t cos, uint8_t i, uint8_t time) { return scale8(((g_led_config.point[i].y - k_led_matrix_center.y) * cos + (g_led_config.point[i].x - k_led_matrix_center.x) * sin) / 128, val); } + +bool DUAL_BEACON(effect_params_t* params) { return effect_runner_sin_cos_i(params, &DUAL_BEACON_math); } + +# endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS +#endif // ENABLE_LED_MATRIX_DUAL_BEACON diff --git a/quantum/led_matrix/animations/led_matrix_effects.inc b/quantum/led_matrix/animations/led_matrix_effects.inc new file mode 100644 index 000000000000..ad1f46b2422c --- /dev/null +++ b/quantum/led_matrix/animations/led_matrix_effects.inc @@ -0,0 +1,18 @@ +// Add your new core led matrix effect here, order determines enum order +#include "solid_anim.h" +#include "alpha_mods_anim.h" +#include "breathing_anim.h" +#include "band_anim.h" +#include "band_pinwheel_anim.h" +#include "band_spiral_anim.h" +#include "cycle_left_right_anim.h" +#include "cycle_up_down_anim.h" +#include "cycle_out_in_anim.h" +#include "dual_beacon_anim.h" +#include "solid_reactive_simple_anim.h" +#include "solid_reactive_wide.h" +#include "solid_reactive_cross.h" +#include "solid_reactive_nexus.h" +#include "solid_splash_anim.h" +#include "wave_left_right_anim.h" +#include "wave_up_down_anim.h" diff --git a/quantum/led_matrix/animations/runners/effect_runner_dx_dy.h b/quantum/led_matrix/animations/runners/effect_runner_dx_dy.h new file mode 100644 index 000000000000..fa9b7dbbfa55 --- /dev/null +++ b/quantum/led_matrix/animations/runners/effect_runner_dx_dy.h @@ -0,0 +1,16 @@ +#pragma once + +typedef uint8_t (*dx_dy_f)(uint8_t val, int16_t dx, int16_t dy, uint8_t time); + +bool effect_runner_dx_dy(effect_params_t* params, dx_dy_f effect_func) { + LED_MATRIX_USE_LIMITS(led_min, led_max); + + uint8_t time = scale16by8(g_led_timer, led_matrix_eeconfig.speed / 2); + for (uint8_t i = led_min; i < led_max; i++) { + LED_MATRIX_TEST_LED_FLAGS(); + int16_t dx = g_led_config.point[i].x - k_led_matrix_center.x; + int16_t dy = g_led_config.point[i].y - k_led_matrix_center.y; + led_matrix_set_value(i, effect_func(led_matrix_eeconfig.val, dx, dy, time)); + } + return led_matrix_check_finished_leds(led_max); +} diff --git a/quantum/led_matrix/animations/runners/effect_runner_dx_dy_dist.h b/quantum/led_matrix/animations/runners/effect_runner_dx_dy_dist.h new file mode 100644 index 000000000000..061a5f07febd --- /dev/null +++ b/quantum/led_matrix/animations/runners/effect_runner_dx_dy_dist.h @@ -0,0 +1,17 @@ +#pragma once + +typedef uint8_t (*dx_dy_dist_f)(uint8_t val, int16_t dx, int16_t dy, uint8_t dist, uint8_t time); + +bool effect_runner_dx_dy_dist(effect_params_t* params, dx_dy_dist_f effect_func) { + LED_MATRIX_USE_LIMITS(led_min, led_max); + + uint8_t time = scale16by8(g_led_timer, led_matrix_eeconfig.speed / 2); + for (uint8_t i = led_min; i < led_max; i++) { + LED_MATRIX_TEST_LED_FLAGS(); + int16_t dx = g_led_config.point[i].x - k_led_matrix_center.x; + int16_t dy = g_led_config.point[i].y - k_led_matrix_center.y; + uint8_t dist = sqrt16(dx * dx + dy * dy); + led_matrix_set_value(i, effect_func(led_matrix_eeconfig.val, dx, dy, dist, time)); + } + return led_matrix_check_finished_leds(led_max); +} diff --git a/quantum/led_matrix/animations/runners/effect_runner_i.h b/quantum/led_matrix/animations/runners/effect_runner_i.h new file mode 100644 index 000000000000..f6f8c0dee0c7 --- /dev/null +++ b/quantum/led_matrix/animations/runners/effect_runner_i.h @@ -0,0 +1,14 @@ +#pragma once + +typedef uint8_t (*i_f)(uint8_t val, uint8_t i, uint8_t time); + +bool effect_runner_i(effect_params_t* params, i_f effect_func) { + LED_MATRIX_USE_LIMITS(led_min, led_max); + + uint8_t time = scale16by8(g_led_timer, led_matrix_eeconfig.speed / 4); + for (uint8_t i = led_min; i < led_max; i++) { + LED_MATRIX_TEST_LED_FLAGS(); + led_matrix_set_value(i, effect_func(led_matrix_eeconfig.val, i, time)); + } + return led_matrix_check_finished_leds(led_max); +} diff --git a/quantum/led_matrix/animations/runners/effect_runner_reactive.h b/quantum/led_matrix/animations/runners/effect_runner_reactive.h new file mode 100644 index 000000000000..be3090aa5320 --- /dev/null +++ b/quantum/led_matrix/animations/runners/effect_runner_reactive.h @@ -0,0 +1,28 @@ +#pragma once + +#ifdef LED_MATRIX_KEYREACTIVE_ENABLED + +typedef uint8_t (*reactive_f)(uint8_t val, uint16_t offset); + +bool effect_runner_reactive(effect_params_t* params, reactive_f effect_func) { + LED_MATRIX_USE_LIMITS(led_min, led_max); + + uint16_t max_tick = 65535 / led_matrix_eeconfig.speed; + for (uint8_t i = led_min; i < led_max; i++) { + LED_MATRIX_TEST_LED_FLAGS(); + uint16_t tick = max_tick; + // Reverse search to find most recent key hit + for (int8_t j = g_last_hit_tracker.count - 1; j >= 0; j--) { + if (g_last_hit_tracker.index[j] == i && g_last_hit_tracker.tick[j] < tick) { + tick = g_last_hit_tracker.tick[j]; + break; + } + } + + uint16_t offset = scale16by8(tick, led_matrix_eeconfig.speed); + led_matrix_set_value(i, effect_func(led_matrix_eeconfig.val, offset)); + } + return led_matrix_check_finished_leds(led_max); +} + +#endif // LED_MATRIX_KEYREACTIVE_ENABLED diff --git a/quantum/led_matrix/animations/runners/effect_runner_reactive_splash.h b/quantum/led_matrix/animations/runners/effect_runner_reactive_splash.h new file mode 100644 index 000000000000..f6ffc825a1ee --- /dev/null +++ b/quantum/led_matrix/animations/runners/effect_runner_reactive_splash.h @@ -0,0 +1,26 @@ +#pragma once + +#ifdef LED_MATRIX_KEYREACTIVE_ENABLED + +typedef uint8_t (*reactive_splash_f)(uint8_t val, int16_t dx, int16_t dy, uint8_t dist, uint16_t tick); + +bool effect_runner_reactive_splash(uint8_t start, effect_params_t* params, reactive_splash_f effect_func) { + LED_MATRIX_USE_LIMITS(led_min, led_max); + + uint8_t count = g_last_hit_tracker.count; + for (uint8_t i = led_min; i < led_max; i++) { + LED_MATRIX_TEST_LED_FLAGS(); + uint8_t val = 0; + for (uint8_t j = start; j < count; j++) { + int16_t dx = g_led_config.point[i].x - g_last_hit_tracker.x[j]; + int16_t dy = g_led_config.point[i].y - g_last_hit_tracker.y[j]; + uint8_t dist = sqrt16(dx * dx + dy * dy); + uint16_t tick = scale16by8(g_last_hit_tracker.tick[j], led_matrix_eeconfig.speed); + val = effect_func(val, dx, dy, dist, tick); + } + led_matrix_set_value(i, scale8(val, led_matrix_eeconfig.val)); + } + return led_matrix_check_finished_leds(led_max); +} + +#endif // LED_MATRIX_KEYREACTIVE_ENABLED diff --git a/quantum/led_matrix/animations/runners/effect_runner_sin_cos_i.h b/quantum/led_matrix/animations/runners/effect_runner_sin_cos_i.h new file mode 100644 index 000000000000..3145e27139de --- /dev/null +++ b/quantum/led_matrix/animations/runners/effect_runner_sin_cos_i.h @@ -0,0 +1,16 @@ +#pragma once + +typedef uint8_t (*sin_cos_i_f)(uint8_t val, int8_t sin, int8_t cos, uint8_t i, uint8_t time); + +bool effect_runner_sin_cos_i(effect_params_t* params, sin_cos_i_f effect_func) { + LED_MATRIX_USE_LIMITS(led_min, led_max); + + uint16_t time = scale16by8(g_led_timer, led_matrix_eeconfig.speed / 4); + int8_t cos_value = cos8(time) - 128; + int8_t sin_value = sin8(time) - 128; + for (uint8_t i = led_min; i < led_max; i++) { + LED_MATRIX_TEST_LED_FLAGS(); + led_matrix_set_value(i, effect_func(led_matrix_eeconfig.val, cos_value, sin_value, i, time)); + } + return led_matrix_check_finished_leds(led_max); +} diff --git a/quantum/led_matrix/animations/runners/led_matrix_runners.inc b/quantum/led_matrix/animations/runners/led_matrix_runners.inc new file mode 100644 index 000000000000..c09022bb0fad --- /dev/null +++ b/quantum/led_matrix/animations/runners/led_matrix_runners.inc @@ -0,0 +1,6 @@ +#include "effect_runner_dx_dy_dist.h" +#include "effect_runner_dx_dy.h" +#include "effect_runner_i.h" +#include "effect_runner_sin_cos_i.h" +#include "effect_runner_reactive.h" +#include "effect_runner_reactive_splash.h" diff --git a/quantum/led_matrix_animations/solid_anim.h b/quantum/led_matrix/animations/solid_anim.h similarity index 87% rename from quantum/led_matrix_animations/solid_anim.h rename to quantum/led_matrix/animations/solid_anim.h index 4c9e43c581a3..c728dbcc98d9 100644 --- a/quantum/led_matrix_animations/solid_anim.h +++ b/quantum/led_matrix/animations/solid_anim.h @@ -9,7 +9,7 @@ bool SOLID(effect_params_t* params) { LED_MATRIX_TEST_LED_FLAGS(); led_matrix_set_value(i, val); } - return led_max < DRIVER_LED_TOTAL; + return led_matrix_check_finished_leds(led_max); } #endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS diff --git a/quantum/led_matrix/animations/solid_reactive_cross.h b/quantum/led_matrix/animations/solid_reactive_cross.h new file mode 100644 index 000000000000..a149e9a9290f --- /dev/null +++ b/quantum/led_matrix/animations/solid_reactive_cross.h @@ -0,0 +1,35 @@ +#ifdef LED_MATRIX_KEYREACTIVE_ENABLED +# if defined(ENABLE_LED_MATRIX_SOLID_REACTIVE_CROSS) || defined(ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS) + +# ifdef ENABLE_LED_MATRIX_SOLID_REACTIVE_CROSS +LED_MATRIX_EFFECT(SOLID_REACTIVE_CROSS) +# endif + +# ifdef ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS +LED_MATRIX_EFFECT(SOLID_REACTIVE_MULTICROSS) +# endif + +# ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS + +static uint8_t SOLID_REACTIVE_CROSS_math(uint8_t val, int16_t dx, int16_t dy, uint8_t dist, uint16_t tick) { + uint16_t effect = tick + dist; + dx = dx < 0 ? dx * -1 : dx; + dy = dy < 0 ? dy * -1 : dy; + dx = dx * 16 > 255 ? 255 : dx * 16; + dy = dy * 16 > 255 ? 255 : dy * 16; + effect += dx > dy ? dy : dx; + if (effect > 255) effect = 255; + return qadd8(val, 255 - effect); +} + +# ifdef ENABLE_LED_MATRIX_SOLID_REACTIVE_CROSS +bool SOLID_REACTIVE_CROSS(effect_params_t* params) { return effect_runner_reactive_splash(qsub8(g_last_hit_tracker.count, 1), params, &SOLID_REACTIVE_CROSS_math); } +# endif + +# ifdef ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS +bool SOLID_REACTIVE_MULTICROSS(effect_params_t* params) { return effect_runner_reactive_splash(0, params, &SOLID_REACTIVE_CROSS_math); } +# endif + +# endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS +# endif // defined(ENABLE_LED_MATRIX_SOLID_REACTIVE_CROSS) || defined(ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS) +#endif // LED_MATRIX_KEYREACTIVE_ENABLED diff --git a/quantum/led_matrix/animations/solid_reactive_nexus.h b/quantum/led_matrix/animations/solid_reactive_nexus.h new file mode 100644 index 000000000000..5a86e48c6c31 --- /dev/null +++ b/quantum/led_matrix/animations/solid_reactive_nexus.h @@ -0,0 +1,32 @@ +#ifdef LED_MATRIX_KEYREACTIVE_ENABLED +# if defined(ENABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS) || defined(ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS) + +# ifdef ENABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS +LED_MATRIX_EFFECT(SOLID_REACTIVE_NEXUS) +# endif + +# ifdef ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS +LED_MATRIX_EFFECT(SOLID_REACTIVE_MULTINEXUS) +# endif + +# ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS + +static uint8_t SOLID_REACTIVE_NEXUS_math(uint8_t val, int16_t dx, int16_t dy, uint8_t dist, uint16_t tick) { + uint16_t effect = tick - dist; + if (effect > 255) effect = 255; + if (dist > 72) effect = 255; + if ((dx > 8 || dx < -8) && (dy > 8 || dy < -8)) effect = 255; + return qadd8(val, 255 - effect); +} + +# ifdef ENABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS +bool SOLID_REACTIVE_NEXUS(effect_params_t* params) { return effect_runner_reactive_splash(qsub8(g_last_hit_tracker.count, 1), params, &SOLID_REACTIVE_NEXUS_math); } +# endif + +# ifdef ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS +bool SOLID_REACTIVE_MULTINEXUS(effect_params_t* params) { return effect_runner_reactive_splash(0, params, &SOLID_REACTIVE_NEXUS_math); } +# endif + +# endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS +# endif // defined(ENABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS) || defined(ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS) +#endif // LED_MATRIX_KEYREACTIVE_ENABLED diff --git a/quantum/led_matrix/animations/solid_reactive_simple_anim.h b/quantum/led_matrix/animations/solid_reactive_simple_anim.h new file mode 100644 index 000000000000..14f5e90730f1 --- /dev/null +++ b/quantum/led_matrix/animations/solid_reactive_simple_anim.h @@ -0,0 +1,12 @@ +#ifdef LED_MATRIX_KEYREACTIVE_ENABLED +# ifdef ENABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLE +LED_MATRIX_EFFECT(SOLID_REACTIVE_SIMPLE) +# ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS + +static uint8_t SOLID_REACTIVE_SIMPLE_math(uint8_t val, uint16_t offset) { return scale8(255 - offset, val); } + +bool SOLID_REACTIVE_SIMPLE(effect_params_t* params) { return effect_runner_reactive(params, &SOLID_REACTIVE_SIMPLE_math); } + +# endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS +# endif // ENABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLE +#endif // LED_MATRIX_KEYREACTIVE_ENABLED diff --git a/quantum/led_matrix/animations/solid_reactive_wide.h b/quantum/led_matrix/animations/solid_reactive_wide.h new file mode 100644 index 000000000000..3aa88063a713 --- /dev/null +++ b/quantum/led_matrix/animations/solid_reactive_wide.h @@ -0,0 +1,30 @@ +#ifdef LED_MATRIX_KEYREACTIVE_ENABLED +# if !defined(ENABLE_LED_MATRIX_SOLID_REACTIVE_WIDE) || defined(ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE) + +# ifdef ENABLE_LED_MATRIX_SOLID_REACTIVE_WIDE +LED_MATRIX_EFFECT(SOLID_REACTIVE_WIDE) +# endif + +# ifdef ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE +LED_MATRIX_EFFECT(SOLID_REACTIVE_MULTIWIDE) +# endif + +# ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS + +static uint8_t SOLID_REACTIVE_WIDE_math(uint8_t val, int16_t dx, int16_t dy, uint8_t dist, uint16_t tick) { + uint16_t effect = tick + dist * 5; + if (effect > 255) effect = 255; + return qadd8(val, 255 - effect); +} + +# ifdef ENABLE_LED_MATRIX_SOLID_REACTIVE_WIDE +bool SOLID_REACTIVE_WIDE(effect_params_t* params) { return effect_runner_reactive_splash(qsub8(g_last_hit_tracker.count, 1), params, &SOLID_REACTIVE_WIDE_math); } +# endif + +# ifdef ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE +bool SOLID_REACTIVE_MULTIWIDE(effect_params_t* params) { return effect_runner_reactive_splash(0, params, &SOLID_REACTIVE_WIDE_math); } +# endif + +# endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS +# endif // !defined(ENABLE_LED_MATRIX_SOLID_REACTIVE_WIDE) || !defined(ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE) +#endif // LED_MATRIX_KEYREACTIVE_ENABLED diff --git a/quantum/led_matrix/animations/solid_splash_anim.h b/quantum/led_matrix/animations/solid_splash_anim.h new file mode 100644 index 000000000000..17b692a09a21 --- /dev/null +++ b/quantum/led_matrix/animations/solid_splash_anim.h @@ -0,0 +1,30 @@ +#ifdef LED_MATRIX_KEYREACTIVE_ENABLED +# if defined(ENABLE_LED_MATRIX_SOLID_SPLASH) || defined(ENABLE_LED_MATRIX_SOLID_MULTISPLASH) + +# ifdef ENABLE_LED_MATRIX_SOLID_SPLASH +LED_MATRIX_EFFECT(SOLID_SPLASH) +# endif + +# ifdef ENABLE_LED_MATRIX_SOLID_MULTISPLASH +LED_MATRIX_EFFECT(SOLID_MULTISPLASH) +# endif + +# ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS + +uint8_t SOLID_SPLASH_math(uint8_t val, int16_t dx, int16_t dy, uint8_t dist, uint16_t tick) { + uint16_t effect = tick - dist; + if (effect > 255) effect = 255; + return qadd8(val, 255 - effect); +} + +# ifdef ENABLE_LED_MATRIX_SOLID_SPLASH +bool SOLID_SPLASH(effect_params_t* params) { return effect_runner_reactive_splash(qsub8(g_last_hit_tracker.count, 1), params, &SOLID_SPLASH_math); } +# endif + +# ifdef ENABLE_LED_MATRIX_SOLID_MULTISPLASH +bool SOLID_MULTISPLASH(effect_params_t* params) { return effect_runner_reactive_splash(0, params, &SOLID_SPLASH_math); } +# endif + +# endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS +# endif // defined(ENABLE_LED_MATRIX_SPLASH) || defined(ENABLE_LED_MATRIX_MULTISPLASH) +#endif // LED_MATRIX_KEYREACTIVE_ENABLED diff --git a/quantum/led_matrix_animations/wave_left_right_anim.h b/quantum/led_matrix/animations/wave_left_right_anim.h similarity index 80% rename from quantum/led_matrix_animations/wave_left_right_anim.h rename to quantum/led_matrix/animations/wave_left_right_anim.h index 736f22ddc516..76487f85155b 100644 --- a/quantum/led_matrix_animations/wave_left_right_anim.h +++ b/quantum/led_matrix/animations/wave_left_right_anim.h @@ -1,4 +1,4 @@ -#ifndef DISABLE_LED_MATRIX_WAVE_LEFT_RIGHT +#ifdef ENABLE_LED_MATRIX_WAVE_LEFT_RIGHT LED_MATRIX_EFFECT(WAVE_LEFT_RIGHT) # ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS @@ -7,4 +7,4 @@ static uint8_t WAVE_LEFT_RIGHT_math(uint8_t val, uint8_t i, uint8_t time) { retu bool WAVE_LEFT_RIGHT(effect_params_t* params) { return effect_runner_i(params, &WAVE_LEFT_RIGHT_math); } # endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS -#endif // DISABLE_LED_MATRIX_WAVE_LEFT_RIGHT +#endif // ENABLE_LED_MATRIX_WAVE_LEFT_RIGHT diff --git a/quantum/led_matrix_animations/wave_up_down_anim.h b/quantum/led_matrix/animations/wave_up_down_anim.h similarity index 80% rename from quantum/led_matrix_animations/wave_up_down_anim.h rename to quantum/led_matrix/animations/wave_up_down_anim.h index 3cab0597d4f3..94710f5c6e90 100644 --- a/quantum/led_matrix_animations/wave_up_down_anim.h +++ b/quantum/led_matrix/animations/wave_up_down_anim.h @@ -1,4 +1,4 @@ -#ifndef DISABLE_LED_MATRIX_WAVE_UP_DOWN +#ifdef ENABLE_LED_MATRIX_WAVE_UP_DOWN LED_MATRIX_EFFECT(WAVE_UP_DOWN) # ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS @@ -7,4 +7,4 @@ static uint8_t WAVE_UP_DOWN_math(uint8_t val, uint8_t i, uint8_t time) { return bool WAVE_UP_DOWN(effect_params_t* params) { return effect_runner_i(params, &WAVE_UP_DOWN_math); } # endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS -#endif // DISABLE_LED_MATRIX_WAVE_UP_DOWN +#endif // ENABLE_LED_MATRIX_WAVE_UP_DOWN diff --git a/quantum/led_matrix.c b/quantum/led_matrix/led_matrix.c similarity index 90% rename from quantum/led_matrix.c rename to quantum/led_matrix/led_matrix.c index 7e0fdf896ad9..be1494e88461 100644 --- a/quantum/led_matrix.c +++ b/quantum/led_matrix/led_matrix.c @@ -34,19 +34,14 @@ const led_point_t k_led_matrix_center = LED_MATRIX_CENTER; #endif // Generic effect runners -#include "led_matrix_runners/effect_runner_dx_dy_dist.h" -#include "led_matrix_runners/effect_runner_dx_dy.h" -#include "led_matrix_runners/effect_runner_i.h" -#include "led_matrix_runners/effect_runner_sin_cos_i.h" -#include "led_matrix_runners/effect_runner_reactive.h" -#include "led_matrix_runners/effect_runner_reactive_splash.h" +#include "led_matrix_runners.inc" // ------------------------------------------ // -----Begin led effect includes macros----- #define LED_MATRIX_EFFECT(name) #define LED_MATRIX_CUSTOM_EFFECT_IMPLS -#include "led_matrix_animations/led_matrix_effects.inc" +#include "led_matrix_effects.inc" #ifdef LED_MATRIX_CUSTOM_KB # include "led_matrix_kb.inc" #endif @@ -67,10 +62,6 @@ const led_point_t k_led_matrix_center = LED_MATRIX_CENTER; # define LED_DISABLE_TIMEOUT 0 #endif -#if LED_DISABLE_WHEN_USB_SUSPENDED != 1 -# undef LED_DISABLE_WHEN_USB_SUSPENDED -#endif - #if !defined(LED_MATRIX_MAXIMUM_BRIGHTNESS) || LED_MATRIX_MAXIMUM_BRIGHTNESS > UINT8_MAX # undef LED_MATRIX_MAXIMUM_BRIGHTNESS # define LED_MATRIX_MAXIMUM_BRIGHTNESS UINT8_MAX @@ -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) { @@ -165,20 +156,10 @@ uint8_t led_matrix_map_row_column_to_led(uint8_t row, uint8_t column, uint8_t *l void led_matrix_update_pwm_buffers(void) { led_matrix_driver.flush(); } void led_matrix_set_value(int index, uint8_t value) { -#if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT) - if (!is_keyboard_left() && index >= k_led_matrix_split[0]) -# ifdef USE_CIE1931_CURVE - led_matrix_driver.set_value(index - k_led_matrix_split[0], pgm_read_byte(&CIE1931_CURVE[value])); -# else - led_matrix_driver.set_value(index - k_led_matrix_split[0], value); -# endif - else if (is_keyboard_left() && index < k_led_matrix_split[0]) -#endif #ifdef USE_CIE1931_CURVE - led_matrix_driver.set_value(index, pgm_read_byte(&CIE1931_CURVE[value])); -#else - led_matrix_driver.set_value(index, value); + value = pgm_read_byte(&CIE1931_CURVE[value]); #endif + led_matrix_driver.set_value(index, value); } void led_matrix_set_value_all(uint8_t value) { @@ -219,7 +200,7 @@ void process_led_matrix(uint8_t row, uint8_t col, bool pressed) { memcpy(&last_hit_buffer.y[0], &last_hit_buffer.y[led_count], LED_HITS_TO_REMEMBER - led_count); memcpy(&last_hit_buffer.tick[0], &last_hit_buffer.tick[led_count], (LED_HITS_TO_REMEMBER - led_count) * 2); // 16 bit memcpy(&last_hit_buffer.index[0], &last_hit_buffer.index[led_count], LED_HITS_TO_REMEMBER - led_count); - last_hit_buffer.count--; + last_hit_buffer.count = LED_HITS_TO_REMEMBER - led_count; } for (uint8_t i = 0; i < led_count; i++) { @@ -232,11 +213,11 @@ void process_led_matrix(uint8_t row, uint8_t col, bool pressed) { } #endif // LED_MATRIX_KEYREACTIVE_ENABLED -#if defined(LED_MATRIX_FRAMEBUFFER_EFFECTS) && !defined(DISABLE_LED_MATRIX_TYPING_HEATMAP) +#if defined(LED_MATRIX_FRAMEBUFFER_EFFECTS) && defined(ENABLE_LED_MATRIX_TYPING_HEATMAP) if (led_matrix_eeconfig.mode == LED_MATRIX_TYPING_HEATMAP) { process_led_matrix_typing_heatmap(row, col); } -#endif // defined(LED_MATRIX_FRAMEBUFFER_EFFECTS) && !defined(DISABLE_LED_MATRIX_TYPING_HEATMAP) +#endif // defined(LED_MATRIX_FRAMEBUFFER_EFFECTS) && defined(ENABLE_LED_MATRIX_TYPING_HEATMAP) } static bool led_matrix_none(effect_params_t *params) { @@ -279,6 +260,7 @@ static void led_task_timers(void) { } static void led_task_sync(void) { + eeconfig_flush_led_matrix(false); // next task if (sync_timer_elapsed32(g_led_timer) >= LED_MATRIX_LED_FLUSH_LIMIT) led_task_state = STARTING; } @@ -318,7 +300,7 @@ static void led_task_render(uint8_t effect) { case LED_MATRIX_##name: \ rendering = name(&led_effect_params); \ break; -#include "led_matrix_animations/led_matrix_effects.inc" +#include "led_matrix_effects.inc" #undef LED_MATRIX_EFFECT #if defined(LED_MATRIX_CUSTOM_KB) || defined(LED_MATRIX_CUSTOM_USER) @@ -447,7 +429,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(); @@ -457,8 +439,9 @@ void led_matrix_init(void) { void led_matrix_set_suspend_state(bool state) { #ifdef LED_DISABLE_WHEN_USB_SUSPENDED - if (state) { - led_matrix_set_value_all(0); // turn off all LEDs when suspending + if (state && !suspend_state && is_keyboard_master()) { // only run if turning off, and only once + led_task_render(0); // turn off all LEDs when suspending + led_task_flush(0); // and actually flash led state to LEDs } suspend_state = state; #endif @@ -469,9 +452,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; - if (write_to_eeprom) { - eeconfig_update_led_matrix(); - } + 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); } @@ -479,7 +460,7 @@ void led_matrix_toggle(void) { led_matrix_toggle_eeprom_helper(true); } void led_matrix_enable(void) { led_matrix_enable_noeeprom(); - eeconfig_update_led_matrix(); + eeconfig_flag_led_matrix(true); } void led_matrix_enable_noeeprom(void) { @@ -489,7 +470,7 @@ void led_matrix_enable_noeeprom(void) { void led_matrix_disable(void) { led_matrix_disable_noeeprom(); - eeconfig_update_led_matrix(); + eeconfig_flag_led_matrix(true); } void led_matrix_disable_noeeprom(void) { @@ -511,9 +492,7 @@ void led_matrix_mode_eeprom_helper(uint8_t mode, bool write_to_eeprom) { led_matrix_eeconfig.mode = mode; } led_task_state = STARTING; - if (write_to_eeprom) { - eeconfig_update_led_matrix(); - } + 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); } @@ -540,9 +519,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; - if (write_to_eeprom) { - eeconfig_update_led_matrix(); - } + 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); } @@ -560,9 +537,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; - if (write_to_eeprom) { - eeconfig_update_led_matrix(); - } + 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.h b/quantum/led_matrix/led_matrix.h new file mode 100644 index 000000000000..e42be6466187 --- /dev/null +++ b/quantum/led_matrix/led_matrix.h @@ -0,0 +1,191 @@ +/* Copyright 2017 Jason Williams + * Copyright 2017 Jack Humbert + * Copyright 2018 Yiancar + * Copyright 2019 Clueboard + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#pragma once + +#include <stdint.h> +#include <stdbool.h> +#include "led_matrix_types.h" +#include "quantum.h" + +#ifdef IS31FL3731 +# include "is31fl3731-simple.h" +#endif + +#ifndef LED_MATRIX_LED_FLUSH_LIMIT +# define LED_MATRIX_LED_FLUSH_LIMIT 16 +#endif + +#ifndef LED_MATRIX_LED_PROCESS_LIMIT +# define LED_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 +#endif + +#if defined(LED_MATRIX_LED_PROCESS_LIMIT) && LED_MATRIX_LED_PROCESS_LIMIT > 0 && LED_MATRIX_LED_PROCESS_LIMIT < DRIVER_LED_TOTAL +# if defined(LED_MATRIX_SPLIT) +# define LED_MATRIX_USE_LIMITS(min, max) \ + uint8_t min = LED_MATRIX_LED_PROCESS_LIMIT * params->iter; \ + uint8_t max = min + LED_MATRIX_LED_PROCESS_LIMIT; \ + if (max > DRIVER_LED_TOTAL) max = DRIVER_LED_TOTAL; \ + uint8_t k_led_matrix_split[2] = LED_MATRIX_SPLIT; \ + if (is_keyboard_left() && (max > k_led_matrix_split[0])) max = k_led_matrix_split[0]; \ + if (!(is_keyboard_left()) && (min < k_led_matrix_split[0])) min = k_led_matrix_split[0]; +# else +# define LED_MATRIX_USE_LIMITS(min, max) \ + uint8_t min = LED_MATRIX_LED_PROCESS_LIMIT * params->iter; \ + uint8_t max = min + LED_MATRIX_LED_PROCESS_LIMIT; \ + if (max > DRIVER_LED_TOTAL) max = DRIVER_LED_TOTAL; +# endif +#else +# if defined(LED_MATRIX_SPLIT) +# define LED_MATRIX_USE_LIMITS(min, max) \ + uint8_t min = 0; \ + uint8_t max = DRIVER_LED_TOTAL; \ + const uint8_t k_led_matrix_split[2] = LED_MATRIX_SPLIT; \ + if (is_keyboard_left() && (max > k_led_matrix_split[0])) max = k_led_matrix_split[0]; \ + if (!(is_keyboard_left()) && (min < k_led_matrix_split[0])) min = k_led_matrix_split[0]; +# else +# define LED_MATRIX_USE_LIMITS(min, max) \ + uint8_t min = 0; \ + uint8_t max = DRIVER_LED_TOTAL; +# endif +#endif + +#define LED_MATRIX_TEST_LED_FLAGS() \ + if (!HAS_ANY_FLAGS(g_led_config.flags[i], params->flags)) continue + +enum led_matrix_effects { + LED_MATRIX_NONE = 0, + +// -------------------------------------- +// -----Begin led effect enum macros----- +#define LED_MATRIX_EFFECT(name, ...) LED_MATRIX_##name, +#include "led_matrix_effects.inc" +#undef LED_MATRIX_EFFECT + +#if defined(LED_MATRIX_CUSTOM_KB) || defined(LED_MATRIX_CUSTOM_USER) +# define LED_MATRIX_EFFECT(name, ...) LED_MATRIX_CUSTOM_##name, +# ifdef LED_MATRIX_CUSTOM_KB +# include "led_matrix_kb.inc" +# endif +# ifdef LED_MATRIX_CUSTOM_USER +# include "led_matrix_user.inc" +# endif +# undef LED_MATRIX_EFFECT +#endif + // -------------------------------------- + // -----End led effect enum macros------- + + LED_MATRIX_EFFECT_MAX +}; + +void eeconfig_update_led_matrix_default(void); +void eeconfig_update_led_matrix(void); +void eeconfig_debug_led_matrix(void); + +uint8_t led_matrix_map_row_column_to_led_kb(uint8_t row, uint8_t column, uint8_t *led_i); +uint8_t led_matrix_map_row_column_to_led(uint8_t row, uint8_t column, uint8_t *led_i); + +void led_matrix_set_value(int index, uint8_t value); +void led_matrix_set_value_all(uint8_t value); + +void process_led_matrix(uint8_t row, uint8_t col, bool pressed); + +void led_matrix_task(void); + +// This runs after another backlight effect and replaces +// values already set +void led_matrix_indicators(void); +void led_matrix_indicators_kb(void); +void led_matrix_indicators_user(void); + +void led_matrix_indicators_advanced(effect_params_t *params); +void led_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max); +void led_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max); + +void led_matrix_init(void); + +void led_matrix_set_suspend_state(bool state); +bool led_matrix_get_suspend_state(void); +void led_matrix_toggle(void); +void led_matrix_toggle_noeeprom(void); +void led_matrix_enable(void); +void led_matrix_enable_noeeprom(void); +void led_matrix_disable(void); +void led_matrix_disable_noeeprom(void); +uint8_t led_matrix_is_enabled(void); +void led_matrix_mode(uint8_t mode); +void led_matrix_mode_noeeprom(uint8_t mode); +uint8_t led_matrix_get_mode(void); +void led_matrix_step(void); +void led_matrix_step_noeeprom(void); +void led_matrix_step_reverse(void); +void led_matrix_step_reverse_noeeprom(void); +void led_matrix_set_val(uint8_t val); +void led_matrix_set_val_noeeprom(uint8_t val); +uint8_t led_matrix_get_val(void); +void led_matrix_increase_val(void); +void led_matrix_increase_val_noeeprom(void); +void led_matrix_decrease_val(void); +void led_matrix_decrease_val_noeeprom(void); +void led_matrix_set_speed(uint8_t speed); +void led_matrix_set_speed_noeeprom(uint8_t speed); +uint8_t led_matrix_get_speed(void); +void led_matrix_increase_speed(void); +void led_matrix_increase_speed_noeeprom(void); +void led_matrix_decrease_speed(void); +void led_matrix_decrease_speed_noeeprom(void); +led_flags_t led_matrix_get_flags(void); +void led_matrix_set_flags(led_flags_t flags); + +typedef struct { + /* Perform any initialisation required for the other driver functions to work. */ + void (*init)(void); + + /* Set the brightness of a single LED in the buffer. */ + void (*set_value)(int index, uint8_t value); + /* Set the brightness of all LEDS on the keyboard in the buffer. */ + void (*set_value_all)(uint8_t value); + /* Flush any buffered changes to the hardware. */ + void (*flush)(void); +} led_matrix_driver_t; + +static inline bool led_matrix_check_finished_leds(uint8_t led_idx) { +#if defined(LED_MATRIX_SPLIT) + if (is_keyboard_left()) { + uint8_t k_led_matrix_split[2] = LED_MATRIX_SPLIT; + return led_idx < k_led_matrix_split[0]; + } else + return led_idx < DRIVER_LED_TOTAL; +#else + return led_idx < DRIVER_LED_TOTAL; +#endif +} + +extern const led_matrix_driver_t led_matrix_driver; + +extern led_eeconfig_t led_matrix_eeconfig; + +extern uint32_t g_led_timer; +extern led_config_t g_led_config; +#ifdef LED_MATRIX_KEYREACTIVE_ENABLED +extern last_hit_t g_last_hit_tracker; +#endif +#ifdef LED_MATRIX_FRAMEBUFFER_EFFECTS +extern uint8_t g_led_frame_buffer[MATRIX_ROWS][MATRIX_COLS]; +#endif diff --git a/quantum/led_matrix/led_matrix_drivers.c b/quantum/led_matrix/led_matrix_drivers.c new file mode 100644 index 000000000000..2157619a0bec --- /dev/null +++ b/quantum/led_matrix/led_matrix_drivers.c @@ -0,0 +1,148 @@ +/* Copyright 2018 James Laird-Wah + * Copyright 2019 Clueboard + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "led_matrix.h" + +/* Each driver needs to define a struct: + * + * const led_matrix_driver_t led_matrix_driver; + * + * All members must be provided. Keyboard custom drivers must define this + * in their own files. + */ + +#if defined(IS31FL3731) || defined(IS31FL3733) +# include "i2c_master.h" + +static void init(void) { + i2c_init(); + +# if defined(IS31FL3731) + IS31FL3731_init(LED_DRIVER_ADDR_1); +# if defined(LED_DRIVER_ADDR_2) + IS31FL3731_init(LED_DRIVER_ADDR_2); +# if defined(LED_DRIVER_ADDR_3) + IS31FL3731_init(LED_DRIVER_ADDR_3); +# if defined(LED_DRIVER_ADDR_4) + IS31FL3731_init(LED_DRIVER_ADDR_4); +# endif +# endif +# endif + +# 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); +# 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); +# 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++) { +# if defined(IS31FL3731) + IS31FL3731_set_led_control_register(index, true); +# elif defined(IS31FL3733) + IS31FL3733_set_led_control_register(index, true); +# endif + } + +// This actually updates the LED drivers +# if defined(IS31FL3731) + IS31FL3731_update_led_control_registers(LED_DRIVER_ADDR_1, 0); +# if defined(LED_DRIVER_ADDR_2) + IS31FL3731_update_led_control_registers(LED_DRIVER_ADDR_2, 1); +# if defined(LED_DRIVER_ADDR_3) + IS31FL3731_update_led_control_registers(LED_DRIVER_ADDR_3, 2); +# if defined(LED_DRIVER_ADDR_4) + IS31FL3731_update_led_control_registers(LED_DRIVER_ADDR_4, 3); +# endif +# endif +# endif + +# elif defined(IS31FL3733) + IS31FL3733_update_led_control_registers(LED_DRIVER_ADDR_1, 0); +# if defined(LED_DRIVER_ADDR_2) + IS31FL3733_update_led_control_registers(LED_DRIVER_ADDR_2, 1); +# if defined(LED_DRIVER_ADDR_3) + IS31FL3733_update_led_control_registers(LED_DRIVER_ADDR_3, 2); +# 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) { + IS31FL3731_update_pwm_buffers(LED_DRIVER_ADDR_1, 0); +# if defined(LED_DRIVER_ADDR_2) + IS31FL3731_update_pwm_buffers(LED_DRIVER_ADDR_2, 1); +# if defined(LED_DRIVER_ADDR_3) + IS31FL3731_update_pwm_buffers(LED_DRIVER_ADDR_3, 2); +# if defined(LED_DRIVER_ADDR_4) + IS31FL3731_update_pwm_buffers(LED_DRIVER_ADDR_4, 3); +# endif +# endif +# endif +} + +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); +# if defined(LED_DRIVER_ADDR_2) + IS31FL3733_update_pwm_buffers(LED_DRIVER_ADDR_2, 1); +# if defined(LED_DRIVER_ADDR_3) + IS31FL3733_update_pwm_buffers(LED_DRIVER_ADDR_3, 2); +# if defined(LED_DRIVER_ADDR_4) + IS31FL3733_update_pwm_buffers(LED_DRIVER_ADDR_4, 3); +# endif +# endif +# endif +} + +const led_matrix_driver_t led_matrix_driver = { + .init = init, + .flush = flush, + .set_value = IS31FL3733_set_value, + .set_value_all = IS31FL3733_set_value_all, +}; +# endif +#endif diff --git a/quantum/led_matrix_types.h b/quantum/led_matrix/led_matrix_types.h similarity index 100% rename from quantum/led_matrix_types.h rename to quantum/led_matrix/led_matrix_types.h diff --git a/quantum/led_matrix_animations/alpha_mods_anim.h b/quantum/led_matrix_animations/alpha_mods_anim.h deleted file mode 100644 index 6f69f6892b25..000000000000 --- a/quantum/led_matrix_animations/alpha_mods_anim.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef DISABLE_LED_MATRIX_ALPHAS_MODS -LED_MATRIX_EFFECT(ALPHAS_MODS) -# ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS - -// alphas = val1, mods = val2 -bool ALPHAS_MODS(effect_params_t* params) { - LED_MATRIX_USE_LIMITS(led_min, led_max); - - uint8_t val1 = led_matrix_eeconfig.val; - uint8_t val2 = val1 + led_matrix_eeconfig.speed; - - for (uint8_t i = led_min; i < led_max; i++) { - LED_MATRIX_TEST_LED_FLAGS(); - if (HAS_FLAGS(g_led_config.flags[i], LED_FLAG_MODIFIER)) { - led_matrix_set_value(i, val2); - } else { - led_matrix_set_value(i, val1); - } - } - return led_max < DRIVER_LED_TOTAL; -} - -# endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS -#endif // DISABLE_LED_MATRIX_ALPHAS_MODS diff --git a/quantum/led_matrix_animations/breathing_anim.h b/quantum/led_matrix_animations/breathing_anim.h deleted file mode 100644 index 00310e3f651a..000000000000 --- a/quantum/led_matrix_animations/breathing_anim.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef DISABLE_LED_MATRIX_BREATHING -LED_MATRIX_EFFECT(BREATHING) -# ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS - -bool BREATHING(effect_params_t* params) { - LED_MATRIX_USE_LIMITS(led_min, led_max); - - uint8_t val = led_matrix_eeconfig.val; - uint16_t time = scale16by8(g_led_timer, led_matrix_eeconfig.speed / 8); - val = scale8(abs8(sin8(time) - 128) * 2, val); - for (uint8_t i = led_min; i < led_max; i++) { - LED_MATRIX_TEST_LED_FLAGS(); - led_matrix_set_value(i, val); - } - return led_max < DRIVER_LED_TOTAL; -} - -# endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS -#endif // DISABLE_LED_MATRIX_BREATHING diff --git a/quantum/led_matrix_animations/cycle_left_right_anim.h b/quantum/led_matrix_animations/cycle_left_right_anim.h deleted file mode 100644 index 51e81d57ca54..000000000000 --- a/quantum/led_matrix_animations/cycle_left_right_anim.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef DISABLE_LED_MATRIX_CYCLE_LEFT_RIGHT -LED_MATRIX_EFFECT(CYCLE_LEFT_RIGHT) -# ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS - -static uint8_t CYCLE_LEFT_RIGHT_math(uint8_t val, uint8_t i, uint8_t time) { return scale8(g_led_config.point[i].x - time, val); } - -bool CYCLE_LEFT_RIGHT(effect_params_t* params) { return effect_runner_i(params, &CYCLE_LEFT_RIGHT_math); } - -# endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS -#endif // DISABLE_LED_MATRIX_CYCLE_LEFT_RIGHT diff --git a/quantum/led_matrix_animations/cycle_out_in_anim.h b/quantum/led_matrix_animations/cycle_out_in_anim.h deleted file mode 100644 index f62061552c67..000000000000 --- a/quantum/led_matrix_animations/cycle_out_in_anim.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef DISABLE_LED_MATRIX_CYCLE_OUT_IN -LED_MATRIX_EFFECT(CYCLE_OUT_IN) -# ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS - -static uint8_t CYCLE_OUT_IN_math(uint8_t val, int16_t dx, int16_t dy, uint8_t dist, uint8_t time) { return scale8(3 * dist / 2 + time, val); } - -bool CYCLE_OUT_IN(effect_params_t* params) { return effect_runner_dx_dy_dist(params, &CYCLE_OUT_IN_math); } - -# endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS -#endif // DISABLE_LED_MATRIX_CYCLE_OUT_IN diff --git a/quantum/led_matrix_animations/cycle_up_down_anim.h b/quantum/led_matrix_animations/cycle_up_down_anim.h deleted file mode 100644 index bd1d12567235..000000000000 --- a/quantum/led_matrix_animations/cycle_up_down_anim.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef DISABLE_LED_MATRIX_CYCLE_UP_DOWN -LED_MATRIX_EFFECT(CYCLE_UP_DOWN) -# ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS - -static uint8_t CYCLE_UP_DOWN_math(uint8_t val, uint8_t i, uint8_t time) { return scale8(g_led_config.point[i].y - time, val); } - -bool CYCLE_UP_DOWN(effect_params_t* params) { return effect_runner_i(params, &CYCLE_UP_DOWN_math); } - -# endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS -#endif // DISABLE_LED_MATRIX_CYCLE_UP_DOWN diff --git a/quantum/led_matrix_animations/dual_beacon_anim.h b/quantum/led_matrix_animations/dual_beacon_anim.h deleted file mode 100644 index 9b8a7877c916..000000000000 --- a/quantum/led_matrix_animations/dual_beacon_anim.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef DISABLE_LED_MATRIX_DUAL_BEACON -LED_MATRIX_EFFECT(DUAL_BEACON) -# ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS - -static uint8_t DUAL_BEACON_math(uint8_t val, int8_t sin, int8_t cos, uint8_t i, uint8_t time) { return scale8(((g_led_config.point[i].y - k_led_matrix_center.y) * cos + (g_led_config.point[i].x - k_led_matrix_center.x) * sin) / 128, val); } - -bool DUAL_BEACON(effect_params_t* params) { return effect_runner_sin_cos_i(params, &DUAL_BEACON_math); } - -# endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS -#endif // DISABLE_LED_MATRIX_DUAL_BEACON diff --git a/quantum/led_matrix_animations/led_matrix_effects.inc b/quantum/led_matrix_animations/led_matrix_effects.inc deleted file mode 100644 index 67237c568358..000000000000 --- a/quantum/led_matrix_animations/led_matrix_effects.inc +++ /dev/null @@ -1,18 +0,0 @@ -// Add your new core led matrix effect here, order determins enum order, requires "led_matrix_animations/ directory -#include "led_matrix_animations/solid_anim.h" -#include "led_matrix_animations/alpha_mods_anim.h" -#include "led_matrix_animations/breathing_anim.h" -#include "led_matrix_animations/band_anim.h" -#include "led_matrix_animations/band_pinwheel_anim.h" -#include "led_matrix_animations/band_spiral_anim.h" -#include "led_matrix_animations/cycle_left_right_anim.h" -#include "led_matrix_animations/cycle_up_down_anim.h" -#include "led_matrix_animations/cycle_out_in_anim.h" -#include "led_matrix_animations/dual_beacon_anim.h" -#include "led_matrix_animations/solid_reactive_simple_anim.h" -#include "led_matrix_animations/solid_reactive_wide.h" -#include "led_matrix_animations/solid_reactive_cross.h" -#include "led_matrix_animations/solid_reactive_nexus.h" -#include "led_matrix_animations/solid_splash_anim.h" -#include "led_matrix_animations/wave_left_right_anim.h" -#include "led_matrix_animations/wave_up_down_anim.h" diff --git a/quantum/led_matrix_animations/solid_reactive_cross.h b/quantum/led_matrix_animations/solid_reactive_cross.h deleted file mode 100644 index f402d99b3722..000000000000 --- a/quantum/led_matrix_animations/solid_reactive_cross.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifdef LED_MATRIX_KEYREACTIVE_ENABLED -# if !defined(DISABLE_LED_MATRIX_SOLID_REACTIVE_CROSS) || !defined(DISABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS) - -# ifndef DISABLE_LED_MATRIX_SOLID_REACTIVE_CROSS -LED_MATRIX_EFFECT(SOLID_REACTIVE_CROSS) -# endif - -# ifndef DISABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS -LED_MATRIX_EFFECT(SOLID_REACTIVE_MULTICROSS) -# endif - -# ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS - -static uint8_t SOLID_REACTIVE_CROSS_math(uint8_t val, int16_t dx, int16_t dy, uint8_t dist, uint16_t tick) { - uint16_t effect = tick + dist; - dx = dx < 0 ? dx * -1 : dx; - dy = dy < 0 ? dy * -1 : dy; - dx = dx * 16 > 255 ? 255 : dx * 16; - dy = dy * 16 > 255 ? 255 : dy * 16; - effect += dx > dy ? dy : dx; - if (effect > 255) effect = 255; - return qadd8(val, 255 - effect); -} - -# ifndef DISABLE_LED_MATRIX_SOLID_REACTIVE_CROSS -bool SOLID_REACTIVE_CROSS(effect_params_t* params) { return effect_runner_reactive_splash(qsub8(g_last_hit_tracker.count, 1), params, &SOLID_REACTIVE_CROSS_math); } -# endif - -# ifndef DISABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS -bool SOLID_REACTIVE_MULTICROSS(effect_params_t* params) { return effect_runner_reactive_splash(0, params, &SOLID_REACTIVE_CROSS_math); } -# endif - -# endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS -# endif // !defined(DISABLE_LED_MATRIX_SOLID_REACTIVE_CROSS) || !defined(DISABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS) -#endif // LED_MATRIX_KEYREACTIVE_ENABLED diff --git a/quantum/led_matrix_animations/solid_reactive_nexus.h b/quantum/led_matrix_animations/solid_reactive_nexus.h deleted file mode 100644 index 4d0d2522639c..000000000000 --- a/quantum/led_matrix_animations/solid_reactive_nexus.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifdef LED_MATRIX_KEYREACTIVE_ENABLED -# if !defined(DISABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS) || !defined(DISABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS) - -# ifndef DISABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS -LED_MATRIX_EFFECT(SOLID_REACTIVE_NEXUS) -# endif - -# ifndef DISABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS -LED_MATRIX_EFFECT(SOLID_REACTIVE_MULTINEXUS) -# endif - -# ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS - -static uint8_t SOLID_REACTIVE_NEXUS_math(uint8_t val, int16_t dx, int16_t dy, uint8_t dist, uint16_t tick) { - uint16_t effect = tick - dist; - if (effect > 255) effect = 255; - if (dist > 72) effect = 255; - if ((dx > 8 || dx < -8) && (dy > 8 || dy < -8)) effect = 255; - return qadd8(val, 255 - effect); -} - -# ifndef DISABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS -bool SOLID_REACTIVE_NEXUS(effect_params_t* params) { return effect_runner_reactive_splash(qsub8(g_last_hit_tracker.count, 1), params, &SOLID_REACTIVE_NEXUS_math); } -# endif - -# ifndef DISABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS -bool SOLID_REACTIVE_MULTINEXUS(effect_params_t* params) { return effect_runner_reactive_splash(0, params, &SOLID_REACTIVE_NEXUS_math); } -# endif - -# endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS -# endif // !defined(DISABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS) || !defined(DISABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS) -#endif // LED_MATRIX_KEYREACTIVE_ENABLED diff --git a/quantum/led_matrix_animations/solid_reactive_simple_anim.h b/quantum/led_matrix_animations/solid_reactive_simple_anim.h deleted file mode 100644 index 30e2527f600e..000000000000 --- a/quantum/led_matrix_animations/solid_reactive_simple_anim.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifdef LED_MATRIX_KEYREACTIVE_ENABLED -# ifndef DISABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLE -LED_MATRIX_EFFECT(SOLID_REACTIVE_SIMPLE) -# ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS - -static uint8_t SOLID_REACTIVE_SIMPLE_math(uint8_t val, uint16_t offset) { return scale8(255 - offset, val); } - -bool SOLID_REACTIVE_SIMPLE(effect_params_t* params) { return effect_runner_reactive(params, &SOLID_REACTIVE_SIMPLE_math); } - -# endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS -# endif // DISABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLE -#endif // LED_MATRIX_KEYREACTIVE_ENABLED diff --git a/quantum/led_matrix_animations/solid_reactive_wide.h b/quantum/led_matrix_animations/solid_reactive_wide.h deleted file mode 100644 index 34a230c25931..000000000000 --- a/quantum/led_matrix_animations/solid_reactive_wide.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifdef LED_MATRIX_KEYREACTIVE_ENABLED -# if !defined(DISABLE_LED_MATRIX_SOLID_REACTIVE_WIDE) || !defined(DISABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE) - -# ifndef DISABLE_LED_MATRIX_SOLID_REACTIVE_WIDE -LED_MATRIX_EFFECT(SOLID_REACTIVE_WIDE) -# endif - -# ifndef DISABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE -LED_MATRIX_EFFECT(SOLID_REACTIVE_MULTIWIDE) -# endif - -# ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS - -static uint8_t SOLID_REACTIVE_WIDE_math(uint8_t val, int16_t dx, int16_t dy, uint8_t dist, uint16_t tick) { - uint16_t effect = tick + dist * 5; - if (effect > 255) effect = 255; - return qadd8(val, 255 - effect); -} - -# ifndef DISABLE_LED_MATRIX_SOLID_REACTIVE_WIDE -bool SOLID_REACTIVE_WIDE(effect_params_t* params) { return effect_runner_reactive_splash(qsub8(g_last_hit_tracker.count, 1), params, &SOLID_REACTIVE_WIDE_math); } -# endif - -# ifndef DISABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE -bool SOLID_REACTIVE_MULTIWIDE(effect_params_t* params) { return effect_runner_reactive_splash(0, params, &SOLID_REACTIVE_WIDE_math); } -# endif - -# endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS -# endif // !defined(DISABLE_LED_MATRIX_SOLID_REACTIVE_WIDE) || !defined(DISABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE) -#endif // LED_MATRIX_KEYREACTIVE_ENABLED diff --git a/quantum/led_matrix_animations/solid_splash_anim.h b/quantum/led_matrix_animations/solid_splash_anim.h deleted file mode 100644 index 4f6ba3d343bf..000000000000 --- a/quantum/led_matrix_animations/solid_splash_anim.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifdef LED_MATRIX_KEYREACTIVE_ENABLED -# if !defined(DISABLE_LED_MATRIX_SOLID_SPLASH) || !defined(DISABLE_LED_MATRIX_SOLID_MULTISPLASH) - -# ifndef DISABLE_LED_MATRIX_SOLID_SPLASH -LED_MATRIX_EFFECT(SOLID_SPLASH) -# endif - -# ifndef DISABLE_LED_MATRIX_SOLID_MULTISPLASH -LED_MATRIX_EFFECT(SOLID_MULTISPLASH) -# endif - -# ifdef LED_MATRIX_CUSTOM_EFFECT_IMPLS - -uint8_t SOLID_SPLASH_math(uint8_t val, int16_t dx, int16_t dy, uint8_t dist, uint16_t tick) { - uint16_t effect = tick - dist; - if (effect > 255) effect = 255; - return qadd8(val, 255 - effect); -} - -# ifndef DISABLE_LED_MATRIX_SOLID_SPLASH -bool SOLID_SPLASH(effect_params_t* params) { return effect_runner_reactive_splash(qsub8(g_last_hit_tracker.count, 1), params, &SOLID_SPLASH_math); } -# endif - -# ifndef DISABLE_LED_MATRIX_SOLID_MULTISPLASH -bool SOLID_MULTISPLASH(effect_params_t* params) { return effect_runner_reactive_splash(0, params, &SOLID_SPLASH_math); } -# endif - -# endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS -# endif // !defined(DISABLE_LED_MATRIX_SPLASH) && !defined(DISABLE_LED_MATRIX_MULTISPLASH) -#endif // LED_MATRIX_KEYREACTIVE_ENABLED diff --git a/quantum/led_matrix_drivers.c b/quantum/led_matrix_drivers.c deleted file mode 100644 index 1d46b2c50661..000000000000 --- a/quantum/led_matrix_drivers.c +++ /dev/null @@ -1,153 +0,0 @@ -/* Copyright 2018 James Laird-Wah - * Copyright 2019 Clueboard - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "led_matrix.h" - -/* Each driver needs to define a struct: - * - * const led_matrix_driver_t led_matrix_driver; - * - * All members must be provided. Keyboard custom drivers must define this - * in their own files. - */ - -#if defined(IS31FL3731) || defined(IS31FL3733) - -# include "i2c_master.h" - -static void init(void) { - i2c_init(); -# ifdef IS31FL3731 -# ifdef LED_DRIVER_ADDR_1 - IS31FL3731_init(LED_DRIVER_ADDR_1); -# endif -# ifdef LED_DRIVER_ADDR_2 - IS31FL3731_init(LED_DRIVER_ADDR_2); -# endif -# ifdef LED_DRIVER_ADDR_3 - IS31FL3731_init(LED_DRIVER_ADDR_3); -# endif -# ifdef 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 - IS31FL3733_init(LED_DRIVER_ADDR_1, LED_DRIVER_SYNC_1); -# endif -# ifdef LED_DRIVER_ADDR_2 -# ifndef 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 - 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 - IS31FL3733_init(LED_DRIVER_ADDR_4, LED_DRIVER_SYNC_4); -# endif -# endif - - for (int index = 0; index < DRIVER_LED_TOTAL; index++) { -# ifdef IS31FL3731 - IS31FL3731_set_led_control_register(index, true); -# else - IS31FL3733_set_led_control_register(index, true); -# endif - } -// This actually updates the LED drivers -# ifdef IS31FL3731 -# ifdef LED_DRIVER_ADDR_1 - IS31FL3731_update_led_control_registers(LED_DRIVER_ADDR_1, 0); -# endif -# ifdef LED_DRIVER_ADDR_2 - IS31FL3731_update_led_control_registers(LED_DRIVER_ADDR_2, 1); -# endif -# ifdef LED_DRIVER_ADDR_3 - IS31FL3731_update_led_control_registers(LED_DRIVER_ADDR_3, 2); -# endif -# ifdef LED_DRIVER_ADDR_4 - IS31FL3731_update_led_control_registers(LED_DRIVER_ADDR_4, 3); -# endif -# else -# ifdef LED_DRIVER_ADDR_1 - IS31FL3733_update_led_control_registers(LED_DRIVER_ADDR_1, 0); -# endif -# ifdef LED_DRIVER_ADDR_2 - IS31FL3733_update_led_control_registers(LED_DRIVER_ADDR_2, 1); -# endif -# ifdef LED_DRIVER_ADDR_3 - IS31FL3733_update_led_control_registers(LED_DRIVER_ADDR_3, 2); -# endif -# ifdef LED_DRIVER_ADDR_4 - IS31FL3733_update_led_control_registers(LED_DRIVER_ADDR_4, 3); -# endif -# endif -} - -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 - IS31FL3731_update_pwm_buffers(LED_DRIVER_ADDR_2, 1); -# endif -# ifdef LED_DRIVER_ADDR_3 - IS31FL3731_update_pwm_buffers(LED_DRIVER_ADDR_3, 2); -# endif -# ifdef LED_DRIVER_ADDR_4 - IS31FL3731_update_pwm_buffers(LED_DRIVER_ADDR_4, 3); -# endif -# else -# ifdef LED_DRIVER_ADDR_1 - IS31FL3733_update_pwm_buffers(LED_DRIVER_ADDR_1, 0); -# endif -# ifdef LED_DRIVER_ADDR_2 - IS31FL3733_update_pwm_buffers(LED_DRIVER_ADDR_2, 1); -# endif -# ifdef LED_DRIVER_ADDR_3 - IS31FL3733_update_pwm_buffers(LED_DRIVER_ADDR_3, 2); -# endif -# ifdef LED_DRIVER_ADDR_4 - IS31FL3733_update_pwm_buffers(LED_DRIVER_ADDR_4, 3); -# endif -# endif -} - -const led_matrix_driver_t led_matrix_driver = { - .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 diff --git a/quantum/led_matrix_runners/effect_runner_dx_dy.h b/quantum/led_matrix_runners/effect_runner_dx_dy.h deleted file mode 100644 index ef97631b9089..000000000000 --- a/quantum/led_matrix_runners/effect_runner_dx_dy.h +++ /dev/null @@ -1,16 +0,0 @@ -#pragma once - -typedef uint8_t (*dx_dy_f)(uint8_t val, int16_t dx, int16_t dy, uint8_t time); - -bool effect_runner_dx_dy(effect_params_t* params, dx_dy_f effect_func) { - LED_MATRIX_USE_LIMITS(led_min, led_max); - - uint8_t time = scale16by8(g_led_timer, led_matrix_eeconfig.speed / 2); - for (uint8_t i = led_min; i < led_max; i++) { - LED_MATRIX_TEST_LED_FLAGS(); - int16_t dx = g_led_config.point[i].x - k_led_matrix_center.x; - int16_t dy = g_led_config.point[i].y - k_led_matrix_center.y; - led_matrix_set_value(i, effect_func(led_matrix_eeconfig.val, dx, dy, time)); - } - return led_max < DRIVER_LED_TOTAL; -} diff --git a/quantum/led_matrix_runners/effect_runner_dx_dy_dist.h b/quantum/led_matrix_runners/effect_runner_dx_dy_dist.h deleted file mode 100644 index 5ef5938be05d..000000000000 --- a/quantum/led_matrix_runners/effect_runner_dx_dy_dist.h +++ /dev/null @@ -1,17 +0,0 @@ -#pragma once - -typedef uint8_t (*dx_dy_dist_f)(uint8_t val, int16_t dx, int16_t dy, uint8_t dist, uint8_t time); - -bool effect_runner_dx_dy_dist(effect_params_t* params, dx_dy_dist_f effect_func) { - LED_MATRIX_USE_LIMITS(led_min, led_max); - - uint8_t time = scale16by8(g_led_timer, led_matrix_eeconfig.speed / 2); - for (uint8_t i = led_min; i < led_max; i++) { - LED_MATRIX_TEST_LED_FLAGS(); - int16_t dx = g_led_config.point[i].x - k_led_matrix_center.x; - int16_t dy = g_led_config.point[i].y - k_led_matrix_center.y; - uint8_t dist = sqrt16(dx * dx + dy * dy); - led_matrix_set_value(i, effect_func(led_matrix_eeconfig.val, dx, dy, dist, time)); - } - return led_max < DRIVER_LED_TOTAL; -} diff --git a/quantum/led_matrix_runners/effect_runner_i.h b/quantum/led_matrix_runners/effect_runner_i.h deleted file mode 100644 index b3015759be54..000000000000 --- a/quantum/led_matrix_runners/effect_runner_i.h +++ /dev/null @@ -1,14 +0,0 @@ -#pragma once - -typedef uint8_t (*i_f)(uint8_t val, uint8_t i, uint8_t time); - -bool effect_runner_i(effect_params_t* params, i_f effect_func) { - LED_MATRIX_USE_LIMITS(led_min, led_max); - - uint8_t time = scale16by8(g_led_timer, led_matrix_eeconfig.speed / 4); - for (uint8_t i = led_min; i < led_max; i++) { - LED_MATRIX_TEST_LED_FLAGS(); - led_matrix_set_value(i, effect_func(led_matrix_eeconfig.val, i, time)); - } - return led_max < DRIVER_LED_TOTAL; -} diff --git a/quantum/led_matrix_runners/effect_runner_reactive.h b/quantum/led_matrix_runners/effect_runner_reactive.h deleted file mode 100644 index 4369ea8c498a..000000000000 --- a/quantum/led_matrix_runners/effect_runner_reactive.h +++ /dev/null @@ -1,28 +0,0 @@ -#pragma once - -#ifdef LED_MATRIX_KEYREACTIVE_ENABLED - -typedef uint8_t (*reactive_f)(uint8_t val, uint16_t offset); - -bool effect_runner_reactive(effect_params_t* params, reactive_f effect_func) { - LED_MATRIX_USE_LIMITS(led_min, led_max); - - uint16_t max_tick = 65535 / led_matrix_eeconfig.speed; - for (uint8_t i = led_min; i < led_max; i++) { - LED_MATRIX_TEST_LED_FLAGS(); - uint16_t tick = max_tick; - // Reverse search to find most recent key hit - for (int8_t j = g_last_hit_tracker.count - 1; j >= 0; j--) { - if (g_last_hit_tracker.index[j] == i && g_last_hit_tracker.tick[j] < tick) { - tick = g_last_hit_tracker.tick[j]; - break; - } - } - - uint16_t offset = scale16by8(tick, led_matrix_eeconfig.speed); - led_matrix_set_value(i, effect_func(led_matrix_eeconfig.val, offset)); - } - return led_max < DRIVER_LED_TOTAL; -} - -#endif // LED_MATRIX_KEYREACTIVE_ENABLED diff --git a/quantum/led_matrix_runners/effect_runner_reactive_splash.h b/quantum/led_matrix_runners/effect_runner_reactive_splash.h deleted file mode 100644 index d6eb9731ee3a..000000000000 --- a/quantum/led_matrix_runners/effect_runner_reactive_splash.h +++ /dev/null @@ -1,26 +0,0 @@ -#pragma once - -#ifdef LED_MATRIX_KEYREACTIVE_ENABLED - -typedef uint8_t (*reactive_splash_f)(uint8_t val, int16_t dx, int16_t dy, uint8_t dist, uint16_t tick); - -bool effect_runner_reactive_splash(uint8_t start, effect_params_t* params, reactive_splash_f effect_func) { - LED_MATRIX_USE_LIMITS(led_min, led_max); - - uint8_t count = g_last_hit_tracker.count; - for (uint8_t i = led_min; i < led_max; i++) { - LED_MATRIX_TEST_LED_FLAGS(); - uint8_t val = 0; - for (uint8_t j = start; j < count; j++) { - int16_t dx = g_led_config.point[i].x - g_last_hit_tracker.x[j]; - int16_t dy = g_led_config.point[i].y - g_last_hit_tracker.y[j]; - uint8_t dist = sqrt16(dx * dx + dy * dy); - uint16_t tick = scale16by8(g_last_hit_tracker.tick[j], led_matrix_eeconfig.speed); - val = effect_func(val, dx, dy, dist, tick); - } - led_matrix_set_value(i, scale8(val, led_matrix_eeconfig.val)); - } - return led_max < DRIVER_LED_TOTAL; -} - -#endif // LED_MATRIX_KEYREACTIVE_ENABLED diff --git a/quantum/led_matrix_runners/effect_runner_sin_cos_i.h b/quantum/led_matrix_runners/effect_runner_sin_cos_i.h deleted file mode 100644 index 4a5219abd120..000000000000 --- a/quantum/led_matrix_runners/effect_runner_sin_cos_i.h +++ /dev/null @@ -1,16 +0,0 @@ -#pragma once - -typedef uint8_t (*sin_cos_i_f)(uint8_t val, int8_t sin, int8_t cos, uint8_t i, uint8_t time); - -bool effect_runner_sin_cos_i(effect_params_t* params, sin_cos_i_f effect_func) { - LED_MATRIX_USE_LIMITS(led_min, led_max); - - uint16_t time = scale16by8(g_led_timer, led_matrix_eeconfig.speed / 4); - int8_t cos_value = cos8(time) - 128; - int8_t sin_value = sin8(time) - 128; - for (uint8_t i = led_min; i < led_max; i++) { - LED_MATRIX_TEST_LED_FLAGS(); - led_matrix_set_value(i, effect_func(led_matrix_eeconfig.val, cos_value, sin_value, i, time)); - } - return led_max < DRIVER_LED_TOTAL; -} diff --git a/tmk_core/common/debug.c b/quantum/logging/debug.c similarity index 100% rename from tmk_core/common/debug.c rename to quantum/logging/debug.c diff --git a/tmk_core/common/debug.h b/quantum/logging/debug.h similarity index 98% rename from tmk_core/common/debug.h rename to quantum/logging/debug.h index 3d2e2315effc..841531035691 100644 --- a/tmk_core/common/debug.h +++ b/quantum/logging/debug.h @@ -67,7 +67,7 @@ extern debug_config_t debug_config; do { \ if (debug_enable) xprintf(fmt, ##__VA_ARGS__); \ } while (0) -# define dmsg(s) dprintf("%s at %s: %S\n", __FILE__, __LINE__, PSTR(s)) +# define dmsg(s) dprintf("%s at %d: %s\n", __FILE__, __LINE__, s) /* Deprecated. DO NOT USE these anymore, use dprintf instead. */ # define debug(s) \ diff --git a/tmk_core/common/nodebug.h b/quantum/logging/nodebug.h similarity index 100% rename from tmk_core/common/nodebug.h rename to quantum/logging/nodebug.h diff --git a/tmk_core/common/printf.c b/quantum/logging/print.c similarity index 100% rename from tmk_core/common/printf.c rename to quantum/logging/print.c diff --git a/tmk_core/common/print.h b/quantum/logging/print.h similarity index 98% rename from tmk_core/common/print.h rename to quantum/logging/print.h index 48f91e63429b..8c055f549e59 100644 --- a/tmk_core/common/print.h +++ b/quantum/logging/print.h @@ -47,7 +47,7 @@ void print_set_sendchar(sendchar_func_t func); # define uprintln(s) printf(s "\r\n") # define uprintf printf -# endif /* __AVR__ / PROTOCOL_CHIBIOS / PROTOCOL_ARM_ATSAM */ +# endif /* __has_include_next("_print.h") */ #else /* NO_PRINT */ # undef xprintf // Remove print defines diff --git a/quantum/logging/print.mk b/quantum/logging/print.mk new file mode 100644 index 000000000000..67c004192d89 --- /dev/null +++ b/quantum/logging/print.mk @@ -0,0 +1,9 @@ +PRINTF_PATH = $(LIB_PATH)/printf + +VPATH += $(PRINTF_PATH) +SRC += $(PRINTF_PATH)/printf.c +QUANTUM_SRC +=$(QUANTUM_DIR)/logging/print.c +OPT_DEFS += -DPRINTF_DISABLE_SUPPORT_FLOAT +OPT_DEFS += -DPRINTF_DISABLE_SUPPORT_EXPONENTIAL +OPT_DEFS += -DPRINTF_DISABLE_SUPPORT_LONG_LONG +OPT_DEFS += -DPRINTF_DISABLE_SUPPORT_PTRDIFF_T diff --git a/quantum/logging/sendchar.c b/quantum/logging/sendchar.c new file mode 100644 index 000000000000..9422382f6f9f --- /dev/null +++ b/quantum/logging/sendchar.c @@ -0,0 +1,20 @@ +/* +Copyright 2011 Jun Wako <wakojun@gmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ +#include "sendchar.h" + +/* default noop "null" implementation */ +__attribute__((weak)) int8_t sendchar(uint8_t c) { return 0; } diff --git a/tmk_core/common/sendchar.h b/quantum/logging/sendchar.h similarity index 100% rename from tmk_core/common/sendchar.h rename to quantum/logging/sendchar.h diff --git a/quantum/main.c b/quantum/main.c new file mode 100644 index 000000000000..6ed6b95741d9 --- /dev/null +++ b/quantum/main.c @@ -0,0 +1,73 @@ +/* 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 "keyboard.h" + +void platform_setup(void); + +void protocol_setup(void); +void protocol_pre_init(void); +void protocol_post_init(void); +void protocol_pre_task(void); +void protocol_post_task(void); + +// Bodge as refactoring this area sucks.... +void protocol_init(void) __attribute__((weak)); +void protocol_init(void) { + protocol_pre_init(); + + keyboard_init(); + + protocol_post_init(); +} + +void protocol_task(void) __attribute__((weak)); +void protocol_task(void) { + protocol_pre_task(); + + keyboard_task(); + + protocol_post_task(); +} + +#ifdef DEFERRED_EXEC_ENABLE +void deferred_exec_task(void); +#endif // DEFERRED_EXEC_ENABLE + +/** \brief Main + * + * FIXME: Needs doc + */ +int main(void) __attribute__((weak)); +int main(void) { + platform_setup(); + protocol_setup(); + keyboard_setup(); + + protocol_init(); + + /* Main loop */ + while (true) { + protocol_task(); + +#ifdef DEFERRED_EXEC_ENABLE + // Run deferred executions + deferred_exec_task(); +#endif // DEFERRED_EXEC_ENABLE + + housekeeping_task(); + } +} diff --git a/quantum/matrix.c b/quantum/matrix.c index 34d6af2e6df2..483d518eccf9 100644 --- a/quantum/matrix.c +++ b/quantum/matrix.c @@ -16,22 +16,65 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */ #include <stdint.h> #include <stdbool.h> +#include <string.h> #include "util.h" #include "matrix.h" #include "debounce.h" #include "quantum.h" +#ifdef SPLIT_KEYBOARD +# include "split_common/split_util.h" +# include "split_common/transactions.h" + +# define ROWS_PER_HAND (MATRIX_ROWS / 2) +#else +# define ROWS_PER_HAND (MATRIX_ROWS) +#endif + +#ifdef DIRECT_PINS_RIGHT +# define SPLIT_MUTABLE +#else +# define SPLIT_MUTABLE const +#endif +#ifdef MATRIX_ROW_PINS_RIGHT +# define SPLIT_MUTABLE_ROW +#else +# define SPLIT_MUTABLE_ROW const +#endif +#ifdef MATRIX_COL_PINS_RIGHT +# define SPLIT_MUTABLE_COL +#else +# define SPLIT_MUTABLE_COL const +#endif #ifdef DIRECT_PINS -static pin_t direct_pins[MATRIX_ROWS][MATRIX_COLS] = DIRECT_PINS; +static SPLIT_MUTABLE 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; +# ifdef MATRIX_ROW_PINS +static SPLIT_MUTABLE_ROW pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; +# endif // MATRIX_ROW_PINS +# ifdef MATRIX_COL_PINS +static SPLIT_MUTABLE_COL pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; +# endif // MATRIX_COL_PINS #endif /* matrix state(1:on, 0:off) */ extern matrix_row_t raw_matrix[MATRIX_ROWS]; // raw values extern matrix_row_t matrix[MATRIX_ROWS]; // debounced values +#ifdef SPLIT_KEYBOARD +// row offsets for each hand +uint8_t thisHand, thatHand; +#endif + +// user-defined overridable functions +__attribute__((weak)) void matrix_init_pins(void); +__attribute__((weak)) void matrix_read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row); +__attribute__((weak)) void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col, matrix_row_t row_shifter); +#ifdef SPLIT_KEYBOARD +__attribute__((weak)) void matrix_slave_scan_kb(void) { matrix_slave_scan_user(); } +__attribute__((weak)) void matrix_slave_scan_user(void) {} +#endif + static inline void setPinOutput_writeLow(pin_t pin) { ATOMIC_BLOCK_FORCEON { setPinOutput(pin); @@ -43,11 +86,19 @@ static inline void setPinInputHigh_atomic(pin_t pin) { ATOMIC_BLOCK_FORCEON { setPinInputHigh(pin); } } +static inline uint8_t readMatrixPin(pin_t pin) { + if (pin != NO_PIN) { + return readPin(pin); + } else { + return 1; + } +} + // matrix code #ifdef DIRECT_PINS -static void init_pins(void) { +__attribute__((weak)) void matrix_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]; @@ -58,168 +109,261 @@ static void init_pins(void) { } } -static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) { +__attribute__((weak)) void matrix_read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) { // Start with a clear matrix row matrix_row_t current_row_value = 0; - for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) { + matrix_row_t row_shifter = MATRIX_ROW_SHIFTER; + for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++, row_shifter <<= 1) { pin_t pin = direct_pins[current_row][col_index]; if (pin != NO_PIN) { - current_row_value |= readPin(pin) ? 0 : (MATRIX_ROW_SHIFTER << col_index); + current_row_value |= readPin(pin) ? 0 : row_shifter; } } - // If the row has changed, store the row and return the changed flag. - if (current_matrix[current_row] != current_row_value) { - current_matrix[current_row] = current_row_value; - return true; - } - return false; + // Update the matrix + current_matrix[current_row] = current_row_value; } #elif defined(DIODE_DIRECTION) -# if (DIODE_DIRECTION == COL2ROW) +# if defined(MATRIX_ROW_PINS) && defined(MATRIX_COL_PINS) +# if (DIODE_DIRECTION == COL2ROW) -static void select_row(uint8_t row) { setPinOutput_writeLow(row_pins[row]); } +static bool select_row(uint8_t row) { + pin_t pin = row_pins[row]; + if (pin != NO_PIN) { + setPinOutput_writeLow(pin); + return true; + } + return false; +} -static void unselect_row(uint8_t row) { setPinInputHigh_atomic(row_pins[row]); } +static void unselect_row(uint8_t row) { + pin_t pin = row_pins[row]; + if (pin != NO_PIN) { + setPinInputHigh_atomic(pin); + } +} static void unselect_rows(void) { - for (uint8_t x = 0; x < MATRIX_ROWS; x++) { - setPinInputHigh_atomic(row_pins[x]); + for (uint8_t x = 0; x < ROWS_PER_HAND; x++) { + unselect_row(x); } } -static void init_pins(void) { +__attribute__((weak)) void matrix_init_pins(void) { unselect_rows(); for (uint8_t x = 0; x < MATRIX_COLS; x++) { - setPinInputHigh_atomic(col_pins[x]); + if (col_pins[x] != NO_PIN) { + setPinInputHigh_atomic(col_pins[x]); + } } } -static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) { +__attribute__((weak)) void matrix_read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) { // Start with a clear matrix row matrix_row_t current_row_value = 0; - // Select row - select_row(current_row); + if (!select_row(current_row)) { // Select row + return; // skip NO_PIN row + } matrix_output_select_delay(); // For each col... - for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) { - // Select the col pin to read (active low) - uint8_t pin_state = readPin(col_pins[col_index]); + matrix_row_t row_shifter = MATRIX_ROW_SHIFTER; + for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++, row_shifter <<= 1) { + uint8_t pin_state = readMatrixPin(col_pins[col_index]); // Populate the matrix row with the state of the col pin - current_row_value |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index); + current_row_value |= pin_state ? 0 : row_shifter; } // Unselect row unselect_row(current_row); - matrix_output_unselect_delay(); // wait for all Col signals to go HIGH + matrix_output_unselect_delay(current_row, current_row_value != 0); // wait for all Col signals to go HIGH + + // Update the matrix + current_matrix[current_row] = current_row_value; +} - // If the row has changed, store the row and return the changed flag. - if (current_matrix[current_row] != current_row_value) { - current_matrix[current_row] = current_row_value; +# elif (DIODE_DIRECTION == ROW2COL) + +static bool select_col(uint8_t col) { + pin_t pin = col_pins[col]; + if (pin != NO_PIN) { + setPinOutput_writeLow(pin); return true; } return false; } -# elif (DIODE_DIRECTION == ROW2COL) - -static void select_col(uint8_t col) { setPinOutput_writeLow(col_pins[col]); } - -static void unselect_col(uint8_t col) { setPinInputHigh_atomic(col_pins[col]); } +static void unselect_col(uint8_t col) { + pin_t pin = col_pins[col]; + if (pin != NO_PIN) { + setPinInputHigh_atomic(pin); + } +} static void unselect_cols(void) { for (uint8_t x = 0; x < MATRIX_COLS; x++) { - setPinInputHigh_atomic(col_pins[x]); + unselect_col(x); } } -static void init_pins(void) { +__attribute__((weak)) void matrix_init_pins(void) { unselect_cols(); - for (uint8_t x = 0; x < MATRIX_ROWS; x++) { - setPinInputHigh_atomic(row_pins[x]); + for (uint8_t x = 0; x < ROWS_PER_HAND; x++) { + if (row_pins[x] != NO_PIN) { + setPinInputHigh_atomic(row_pins[x]); + } } } -static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col) { - bool matrix_changed = false; +__attribute__((weak)) void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col, matrix_row_t row_shifter) { + bool key_pressed = false; // Select col - select_col(current_col); + if (!select_col(current_col)) { // select col + return; // skip NO_PIN col + } matrix_output_select_delay(); // 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]; - matrix_row_t current_row_value = last_row_value; - + for (uint8_t row_index = 0; row_index < ROWS_PER_HAND; row_index++) { // Check row pin state - if (readPin(row_pins[row_index]) == 0) { + if (readMatrixPin(row_pins[row_index]) == 0) { // Pin LO, set col bit - current_row_value |= (MATRIX_ROW_SHIFTER << current_col); + current_matrix[row_index] |= row_shifter; + key_pressed = true; } else { // Pin HI, clear col bit - current_row_value &= ~(MATRIX_ROW_SHIFTER << current_col); - } - - // Determine if the matrix changed state - if ((last_row_value != current_row_value)) { - matrix_changed |= true; - current_matrix[row_index] = current_row_value; + current_matrix[row_index] &= ~row_shifter; } } // Unselect col unselect_col(current_col); - matrix_output_unselect_delay(); // wait for all Row signals to go HIGH - - return matrix_changed; + matrix_output_unselect_delay(current_col, key_pressed); // wait for all Row signals to go HIGH } -# else -# error DIODE_DIRECTION must be one of COL2ROW or ROW2COL! -# endif +# else +# error DIODE_DIRECTION must be one of COL2ROW or ROW2COL! +# endif +# endif // defined(MATRIX_ROW_PINS) && defined(MATRIX_COL_PINS) #else # error DIODE_DIRECTION is not defined! #endif void matrix_init(void) { +#ifdef SPLIT_KEYBOARD + split_pre_init(); + + // Set pinout for right half if pinout for that half is defined + if (!isLeftHand) { +# ifdef DIRECT_PINS_RIGHT + const pin_t direct_pins_right[MATRIX_ROWS][MATRIX_COLS] = DIRECT_PINS_RIGHT; + for (uint8_t i = 0; i < MATRIX_ROWS; i++) { + for (uint8_t j = 0; j < MATRIX_COLS; j++) { + direct_pins[i][j] = direct_pins_right[i][j]; + } + } +# endif +# ifdef MATRIX_ROW_PINS_RIGHT + const pin_t row_pins_right[MATRIX_ROWS] = MATRIX_ROW_PINS_RIGHT; + for (uint8_t i = 0; i < MATRIX_ROWS; i++) { + row_pins[i] = row_pins_right[i]; + } +# endif +# ifdef MATRIX_COL_PINS_RIGHT + const pin_t col_pins_right[MATRIX_COLS] = MATRIX_COL_PINS_RIGHT; + for (uint8_t i = 0; i < MATRIX_COLS; i++) { + col_pins[i] = col_pins_right[i]; + } +# endif + } + + thisHand = isLeftHand ? 0 : (ROWS_PER_HAND); + thatHand = ROWS_PER_HAND - thisHand; +#endif + // initialize key pins - init_pins(); + 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(MATRIX_ROWS); + debounce_init(ROWS_PER_HAND); matrix_init_quantum(); + +#ifdef SPLIT_KEYBOARD + split_post_init(); +#endif } -uint8_t matrix_scan(void) { +#ifdef SPLIT_KEYBOARD +// Fallback implementation for keyboards not using the standard split_util.c +__attribute__((weak)) bool transport_master_if_connected(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { + transport_master(master_matrix, slave_matrix); + return true; // Treat the transport as always connected +} + +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)) { + 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); + + matrix_slave_scan_kb(); + } + + return changed; +} +#endif + +uint8_t matrix_scan(void) { + matrix_row_t curr_matrix[MATRIX_ROWS] = {0}; #if defined(DIRECT_PINS) || (DIODE_DIRECTION == COL2ROW) // Set row, read cols - for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) { - changed |= read_cols_on_row(raw_matrix, current_row); + for (uint8_t current_row = 0; current_row < ROWS_PER_HAND; current_row++) { + matrix_read_cols_on_row(curr_matrix, current_row); } #elif (DIODE_DIRECTION == ROW2COL) // Set col, read rows - for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) { - changed |= read_rows_on_col(raw_matrix, current_col); + matrix_row_t row_shifter = MATRIX_ROW_SHIFTER; + for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++, row_shifter <<= 1) { + matrix_read_rows_on_col(curr_matrix, current_col, row_shifter); } #endif - debounce(raw_matrix, matrix, MATRIX_ROWS, changed); + bool changed = memcmp(raw_matrix, curr_matrix, sizeof(curr_matrix)) != 0; + if (changed) memcpy(raw_matrix, curr_matrix, sizeof(curr_matrix)); +#ifdef SPLIT_KEYBOARD + debounce(raw_matrix, matrix + thisHand, ROWS_PER_HAND, changed); + changed = (changed || matrix_post_scan()); +#else + debounce(raw_matrix, matrix, ROWS_PER_HAND, changed); matrix_scan_quantum(); +#endif return (uint8_t)changed; } diff --git a/quantum/matrix.h b/quantum/matrix.h index 3fe691aaee69..5c696622fcf2 100644 --- a/quantum/matrix.h +++ b/quantum/matrix.h @@ -56,7 +56,7 @@ matrix_row_t matrix_get_row(uint8_t row); void matrix_print(void); /* delay between changing matrix pin state and reading values */ void matrix_output_select_delay(void); -void matrix_output_unselect_delay(void); +void matrix_output_unselect_delay(uint8_t line, bool key_pressed); /* only for backwards compatibility. delay between changing matrix pin state and reading values */ void matrix_io_delay(void); diff --git a/quantum/matrix_common.c b/quantum/matrix_common.c index efbad6a5fd11..66c89970b109 100644 --- a/quantum/matrix_common.c +++ b/quantum/matrix_common.c @@ -88,7 +88,7 @@ uint8_t matrix_key_count(void) { __attribute__((weak)) void matrix_io_delay(void) { wait_us(MATRIX_IO_DELAY); } __attribute__((weak)) void matrix_output_select_delay(void) { waitInputPinDelay(); } -__attribute__((weak)) void matrix_output_unselect_delay(void) { matrix_io_delay(); } +__attribute__((weak)) void matrix_output_unselect_delay(uint8_t line, bool key_pressed) { matrix_io_delay(); } // CUSTOM MATRIX 'LITE' __attribute__((weak)) void matrix_init_custom(void) {} diff --git a/quantum/mcu_selection.mk b/quantum/mcu_selection.mk deleted file mode 100644 index 9268c4522e61..000000000000 --- a/quantum/mcu_selection.mk +++ /dev/null @@ -1,570 +0,0 @@ -MCU_ORIG := $(MCU) - -ifneq ($(findstring MKL26Z64, $(MCU)),) - # Cortex version - MCU = cortex-m0plus - - # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 - ARMV = 6 - - ## chip/board settings - # - the next two should match the directories in - # <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) - MCU_FAMILY = KINETIS - MCU_SERIES = KL2x - - # Linker script to use - # - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/ - # or <keyboard_dir>/ld/ - MCU_LDSCRIPT ?= MKL26Z64 - - # Startup code to use - # - it should exist in <chibios>/os/common/ports/ARMCMx/compilers/GCC/mk/ - MCU_STARTUP ?= kl2x - - # Board: it should exist either in <chibios>/os/hal/boards/, - # <keyboard_dir>/boards/, or drivers/boards/ - BOARD ?= PJRC_TEENSY_LC -endif - -ifneq ($(findstring MK20DX128, $(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 = KINETIS - MCU_SERIES = K20x - - # Linker script to use - # - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/ - # or <keyboard_dir>/ld/ - MCU_LDSCRIPT ?= MK20DX128 - - # Startup code to use - # - it should exist in <chibios>/os/common/ports/ARMCMx/compilers/GCC/mk/ - MCU_STARTUP ?= k20x5 - - # Board: it should exist either in <chibios>/os/hal/boards/, - # <keyboard_dir>/boards/, or drivers/boards/ - BOARD ?= PJRC_TEENSY_3 -endif - -ifneq ($(findstring MK20DX256, $(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 = KINETIS - MCU_SERIES = K20x - - # Linker script to use - # - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/ - # or <keyboard_dir>/ld/ - MCU_LDSCRIPT ?= MK20DX256 - - # Startup code to use - # - it should exist in <chibios>/os/common/ports/ARMCMx/compilers/GCC/mk/ - MCU_STARTUP ?= k20x7 - - # Board: it should exist either in <chibios>/os/hal/boards/, - # <keyboard_dir>/boards/, or drivers/boards/ - BOARD ?= PJRC_TEENSY_3_1 -endif - -ifneq ($(findstring MK66F18, $(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 = KINETIS - MCU_SERIES = MK66F18 - - # Linker script to use - # - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/ - # or <keyboard_dir>/ld/ - MCU_LDSCRIPT ?= MK66FX1M0 - - # Startup code to use - # - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/ - MCU_STARTUP ?= MK66F18 - - # Board: it should exist either in <chibios>/os/hal/boards/, - # <keyboard_dir>/boards/, or drivers/boards/ - BOARD ?= PJRC_TEENSY_3_6 -endif - -ifneq ($(findstring STM32F042, $(MCU)),) - # Cortex version - MCU = cortex-m0 - - # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 - ARMV = 6 - - ## chip/board settings - # - the next two should match the directories in - # <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) - MCU_FAMILY = STM32 - MCU_SERIES = STM32F0xx - - # Linker script to use - # - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/ - # or <keyboard_dir>/ld/ - MCU_LDSCRIPT ?= STM32F042x6 - - # Startup code to use - # - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/ - MCU_STARTUP ?= stm32f0xx - - # Board: it should exist either in <chibios>/os/hal/boards/, - # <keyboard_dir>/boards/, or drivers/boards/ - BOARD ?= GENERIC_STM32_F042X6 - - USE_FPU ?= no - - # Options to pass to dfu-util when flashing - DFU_ARGS ?= -d 0483:DF11 -a 0 -s 0x08000000:leave - DFU_SUFFIX_ARGS ?= -v 0483 -p DF11 - - # UF2 settings - UF2_FAMILY ?= STM32F0 -endif - -ifneq ($(findstring STM32F072, $(MCU)),) - # Cortex version - MCU = cortex-m0 - - # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 - ARMV = 6 - - ## chip/board settings - # - the next two should match the directories in - # <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) - MCU_FAMILY = STM32 - MCU_SERIES = STM32F0xx - - # Linker script to use - # - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/ - # or <keyboard_dir>/ld/ - MCU_LDSCRIPT ?= STM32F072xB - - # Startup code to use - # - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/ - MCU_STARTUP ?= stm32f0xx - - # Board: it should exist either in <chibios>/os/hal/boards/, - # <keyboard_dir>/boards/, or drivers/boards/ - BOARD ?= GENERIC_STM32_F072XB - - USE_FPU ?= no - - # Options to pass to dfu-util when flashing - DFU_ARGS ?= -d 0483:DF11 -a 0 -s 0x08000000:leave - DFU_SUFFIX_ARGS ?= -v 0483 -p DF11 - - # UF2 settings - UF2_FAMILY ?= STM32F0 -endif - -ifneq ($(findstring STM32F103, $(MCU)),) - # Cortex version - MCU = cortex-m3 - - # 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 = STM32F1xx - - # Linker script to use - # - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/ - # or <keyboard_dir>/ld/ - MCU_LDSCRIPT ?= STM32F103x8 - - # Startup code to use - # - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/ - MCU_STARTUP ?= stm32f1xx - - # Board: it should exist either in <chibios>/os/hal/boards/, - # <keyboard_dir>/boards/, or drivers/boards/ - BOARD ?= GENERIC_STM32_F103 - - USE_FPU ?= no - - # Options to pass to dfu-util when flashing - DFU_ARGS ?= -d 0483:DF11 -a 0 -s 0x08000000:leave - DFU_SUFFIX_ARGS ?= -v 0483 -p DF11 - - # UF2 settings - UF2_FAMILY ?= STM32F1 -endif - -ifneq ($(findstring STM32F303, $(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 = STM32F3xx - - # Linker script to use - # - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/ - # or <keyboard_dir>/ld/ - MCU_LDSCRIPT ?= STM32F303xC - - # Startup code to use - # - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/ - MCU_STARTUP ?= stm32f3xx - - # Board: it should exist either in <chibios>/os/hal/boards/, - # <keyboard_dir>/boards/, or drivers/boards/ - BOARD ?= GENERIC_STM32_F303XC - - USE_FPU ?= yes - - # Options to pass to dfu-util when flashing - DFU_ARGS ?= -d 0483:DF11 -a 0 -s 0x08000000:leave - DFU_SUFFIX_ARGS ?= -v 0483 -p DF11 - - # UF2 settings - UF2_FAMILY ?= STM32F3 -endif - -ifneq ($(findstring STM32F401, $(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 ?= STM32F401xC - - # 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 ?= BLACKPILL_STM32_F401 - - USE_FPU ?= yes - - # Options to pass to dfu-util when flashing - DFU_ARGS ?= -d 0483:DF11 -a 0 -s 0x08000000:leave - DFU_SUFFIX_ARGS ?= -v 0483 -p DF11 - - # UF2 settings - UF2_FAMILY ?= STM32F4 -endif - -ifneq ($(findstring STM32F411, $(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/ - ifeq ($(strip $(BOOTLOADER)), tinyuf2) - MCU_LDSCRIPT ?= STM32F411xE_tinyuf2 - FIRMWARE_FORMAT ?= uf2 - else - MCU_LDSCRIPT ?= STM32F411xE - endif - - # 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 ?= BLACKPILL_STM32_F411 - - USE_FPU ?= yes - - # Options to pass to dfu-util when flashing - DFU_ARGS ?= -d 0483:DF11 -a 0 -s 0x08000000:leave - DFU_SUFFIX_ARGS ?= -v 0483 -p DF11 - - # UF2 settings - UF2_FAMILY ?= STM32F4 -endif - -ifneq ($(findstring STM32F446, $(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 <chibios>/os/common/startup/ARMCMx/compilers/GCC/ld/ - # or <keyboard_dir>/ld/ - MCU_LDSCRIPT ?= STM32F446xE - - # 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_F446XE - - USE_FPU ?= yes - - # Options to pass to dfu-util when flashing - DFU_ARGS ?= -d 0483:DF11 -a 0 -s 0x08000000:leave - DFU_SUFFIX_ARGS ?= -v 0483 -p DF11 -endif - -ifneq ($(findstring STM32G431, $(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 = STM32G4xx - - # Linker script to use - # - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/ - # or <keyboard_dir>/ld/ - MCU_LDSCRIPT ?= STM32G431xB - - # Startup code to use - # - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/ - MCU_STARTUP ?= stm32g4xx - - # Board: it should exist either in <chibios>/os/hal/boards/, - # <keyboard_dir>/boards/, or drivers/boards/ - BOARD ?= GENERIC_STM32_G431XB - - USE_FPU ?= yes - - # Options to pass to dfu-util when flashing - DFU_ARGS ?= -d 0483:DF11 -a 0 -s 0x08000000:leave - DFU_SUFFIX_ARGS ?= -v 0483 -p DF11 - - # UF2 settings - UF2_FAMILY ?= STM32G4 -endif - -ifneq ($(findstring STM32G474, $(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 = STM32G4xx - - # Linker script to use - # - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/ - # or <keyboard_dir>/ld/ - MCU_LDSCRIPT ?= STM32G474xE - - # Startup code to use - # - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/ - MCU_STARTUP ?= stm32g4xx - - # Board: it should exist either in <chibios>/os/hal/boards/, - # <keyboard_dir>/boards/, or drivers/boards/ - BOARD ?= GENERIC_STM32_G474XE - - USE_FPU ?= yes - - # Options to pass to dfu-util when flashing - DFU_ARGS ?= -d 0483:DF11 -a 0 -s 0x08000000:leave - DFU_SUFFIX_ARGS ?= -v 0483 -p DF11 - - # UF2 settings - UF2_FAMILY ?= STM32G4 -endif - -ifneq (,$(filter $(MCU),STM32L433 STM32L443)) - # 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 = STM32L4xx - - # Linker script to use - # - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/ - # or <keyboard_dir>/ld/ - MCU_LDSCRIPT ?= STM32L432xC - - # Startup code to use - # - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/ - MCU_STARTUP ?= stm32l4xx - - # Board: it should exist either in <chibios>/os/hal/boards/, - # <keyboard_dir>/boards/, or drivers/boards/ - BOARD ?= GENERIC_STM32_L433XC - - PLATFORM_NAME ?= platform_l432 - - USE_FPU ?= yes - - # Options to pass to dfu-util when flashing - DFU_ARGS ?= -d 0483:DF11 -a 0 -s 0x08000000:leave - DFU_SUFFIX_ARGS ?= -v 0483 -p DF11 - - # UF2 settings - UF2_FAMILY ?= STM32L4 -endif - -ifneq (,$(filter $(MCU),at90usb162 atmega16u2 atmega32u2 atmega16u4 atmega32u4 at90usb646 at90usb647 at90usb1286 at90usb1287)) - PROTOCOL = LUFA - - # Processor frequency. - # This will define a symbol, F_CPU, in all source code files equal to the - # processor frequency in Hz. You can then use this symbol in your source code to - # calculate timings. Do NOT tack on a 'UL' at the end, this will be done - # automatically to create a 32-bit value in your source code. - # - # This will be an integer division of F_USB below, as it is sourced by - # F_USB after it has run through any CPU prescalers. Note that this value - # does not *change* the processor frequency - it should merely be updated to - # reflect the processor speed set externally so that the code can use accurate - # software delays. - F_CPU ?= 16000000 - - # LUFA specific - # - # Target architecture (see library "Board Types" documentation). - ARCH = AVR8 - - # Input clock frequency. - # This will define a symbol, F_USB, in all source code files equal to the - # input clock frequency (before any prescaling is performed) in Hz. This value may - # differ from F_CPU if prescaling is used on the latter, and is required as the - # raw input clock is fed directly to the PLL sections of the AVR for high speed - # clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' - # at the end, this will be done automatically to create a 32-bit value in your - # source code. - # - # If no clock division is performed on the input clock inside the AVR (via the - # CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. - F_USB ?= $(F_CPU) - - # Interrupt driven control endpoint task - ifeq (,$(filter $(NO_INTERRUPT_CONTROL_ENDPOINT),yes)) - OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - endif - ifneq (,$(filter $(MCU),at90usb162 atmega16u2 atmega32u2)) - NO_I2C = yes - endif -endif - -ifneq (,$(filter $(MCU),atmega32a)) - # MCU name for avrdude - AVRDUDE_MCU = m32 - - PROTOCOL = VUSB - - # Processor frequency. - # This will define a symbol, F_CPU, in all source code files equal to the - # processor frequency in Hz. You can then use this symbol in your source code to - # calculate timings. Do NOT tack on a 'UL' at the end, this will be done - # automatically to create a 32-bit value in your source code. - F_CPU ?= 12000000 -endif - -ifneq (,$(filter $(MCU),atmega328p)) - # MCU name for avrdude - AVRDUDE_MCU = m328p - - PROTOCOL = VUSB - - # Processor frequency. - # This will define a symbol, F_CPU, in all source code files equal to the - # processor frequency in Hz. You can then use this symbol in your source code to - # calculate timings. Do NOT tack on a 'UL' at the end, this will be done - # automatically to create a 32-bit value in your source code. - F_CPU ?= 16000000 -endif - -ifneq (,$(filter $(MCU),atmega328)) - # MCU name for avrdude - AVRDUDE_MCU = m328 - - PROTOCOL = VUSB - - # Processor frequency. - # This will define a symbol, F_CPU, in all source code files equal to the - # processor frequency in Hz. You can then use this symbol in your source code to - # calculate timings. Do NOT tack on a 'UL' at the end, this will be done - # automatically to create a 32-bit value in your source code. - F_CPU ?= 16000000 -endif - -ifneq (,$(filter $(MCU),attiny85)) - PROTOCOL = VUSB - - # Processor frequency. - # This will define a symbol, F_CPU, in all source code files equal to the - # processor frequency in Hz. You can then use this symbol in your source code to - # calculate timings. Do NOT tack on a 'UL' at the end, this will be done - # automatically to create a 32-bit value in your source code. - F_CPU ?= 16500000 -endif diff --git a/quantum/mousekey.c b/quantum/mousekey.c index 99bfd6b96f3a..c2291fb39790 100644 --- a/quantum/mousekey.c +++ b/quantum/mousekey.c @@ -486,3 +486,5 @@ static void mousekey_debug(void) { print_dec(mousekey_accel); print(")\n"); } + +report_mouse_t mousekey_get_report(void) { return mouse_report; } diff --git a/quantum/mousekey.h b/quantum/mousekey.h index 70dc4bb5c540..56c91b5f1b43 100644 --- a/quantum/mousekey.h +++ b/quantum/mousekey.h @@ -168,11 +168,12 @@ extern uint8_t mk_time_to_max; extern uint8_t mk_wheel_max_speed; extern uint8_t mk_wheel_time_to_max; -void mousekey_task(void); -void mousekey_on(uint8_t code); -void mousekey_off(uint8_t code); -void mousekey_clear(void); -void mousekey_send(void); +void mousekey_task(void); +void mousekey_on(uint8_t code); +void mousekey_off(uint8_t code); +void mousekey_clear(void); +void mousekey_send(void); +report_mouse_t mousekey_get_report(void); #ifdef __cplusplus } diff --git a/quantum/pointing_device.c b/quantum/pointing_device.c index 09d889f697c1..2fefdb67b6af 100644 --- a/quantum/pointing_device.c +++ b/quantum/pointing_device.c @@ -1,34 +1,57 @@ -/* -Copyright 2017 Joshua Broekhuijsen <snipeye+qmk@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 <stdint.h> -#include "report.h" -#include "host.h" -#include "timer.h" -#include "print.h" -#include "debug.h" +/* Copyright 2017 Joshua Broekhuijsen <snipeye+qmk@gmail.com> + * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com> + * Copyright 2021 Dasky (@daskygit) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "pointing_device.h" +#include <string.h> +#ifdef MOUSEKEY_ENABLE +# include "mousekey.h" +#endif +#if (defined(POINTING_DEVICE_ROTATION_90) + defined(POINTING_DEVICE_ROTATION_180) + defined(POINTING_DEVICE_ROTATION_270)) > 1 +# error More than one rotation selected. This is not supported. +#endif static report_mouse_t mouseReport = {}; -__attribute__((weak)) bool has_mouse_report_changed(report_mouse_t new, report_mouse_t old) { return (new.buttons != old.buttons) || (new.x&& new.x != old.x) || (new.y&& new.y != old.y) || (new.h&& new.h != old.h) || (new.v&& new.v != old.v); } +extern const pointing_device_driver_t pointing_device_driver; + +__attribute__((weak)) bool has_mouse_report_changed(report_mouse_t new, report_mouse_t old) { return memcmp(&new, &old, sizeof(new)); } + +__attribute__((weak)) void pointing_device_init_kb(void) {} +__attribute__((weak)) void pointing_device_init_user(void) {} +__attribute__((weak)) report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report) { return pointing_device_task_user(mouse_report); } +__attribute__((weak)) report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) { return mouse_report; } + +__attribute__((weak)) uint8_t pointing_device_handle_buttons(uint8_t buttons, bool pressed, pointing_device_buttons_t button) { + if (pressed) { + buttons |= 1 << (button); + } else { + buttons &= ~(1 << (button)); + } + return buttons; +} __attribute__((weak)) void pointing_device_init(void) { - // initialize device, if that needs to be done. + pointing_device_driver.init(); +#ifdef POINTING_DEVICE_MOTION_PIN + setPinInputHigh(POINTING_DEVICE_MOTION_PIN); +#endif + pointing_device_init_kb(); + pointing_device_init_user(); } __attribute__((weak)) void pointing_device_send(void) { @@ -43,20 +66,55 @@ __attribute__((weak)) void pointing_device_send(void) { mouseReport.y = 0; mouseReport.v = 0; mouseReport.h = 0; - old_report = mouseReport; + + memcpy(&old_report, &mouseReport, sizeof(mouseReport)); } __attribute__((weak)) void pointing_device_task(void) { - // gather info and put it in: - // mouseReport.x = 127 max -127 min - // mouseReport.y = 127 max -127 min - // mouseReport.v = 127 max -127 min (scroll vertical) - // mouseReport.h = 127 max -127 min (scroll horizontal) - // mouseReport.buttons = 0x1F (decimal 31, binary 00011111) max (bitmask for mouse buttons 1-5, 1 is rightmost, 5 is leftmost) 0x00 min - // send the report + // Gather report info +#ifdef POINTING_DEVICE_MOTION_PIN + if (!readPin(POINTING_DEVICE_MOTION_PIN)) +#endif + mouseReport = pointing_device_driver.get_report(mouseReport); + + // Support rotation of the sensor data +#if defined(POINTING_DEVICE_ROTATION_90) || defined(POINTING_DEVICE_ROTATION_180) || defined(POINTING_DEVICE_ROTATION_270) + int8_t x = mouseReport.x, y = mouseReport.y; +# if defined(POINTING_DEVICE_ROTATION_90) + mouseReport.x = y; + mouseReport.y = -x; +# elif defined(POINTING_DEVICE_ROTATION_180) + mouseReport.x = -x; + mouseReport.y = -y; +# elif defined(POINTING_DEVICE_ROTATION_270) + mouseReport.x = -y; + mouseReport.y = x; +# else +# error "How the heck did you get here?!" +# endif +#endif + // Support Inverting the X and Y Axises +#if defined(POINTING_DEVICE_INVERT_X) + mouseReport.x = -mouseReport.x; +#endif +#if defined(POINTING_DEVICE_INVERT_Y) + mouseReport.y = -mouseReport.y; +#endif + + // allow kb to intercept and modify report + mouseReport = pointing_device_task_kb(mouseReport); + // combine with mouse report to ensure that the combined is sent correctly +#ifdef MOUSEKEY_ENABLE + report_mouse_t mousekey_report = mousekey_get_report(); + mouseReport.buttons = mouseReport.buttons | mousekey_report.buttons; +#endif pointing_device_send(); } report_mouse_t pointing_device_get_report(void) { return mouseReport; } void pointing_device_set_report(report_mouse_t newMouseReport) { mouseReport = newMouseReport; } + +uint16_t pointing_device_get_cpi(void) { return pointing_device_driver.get_cpi(); } + +void pointing_device_set_cpi(uint16_t cpi) { pointing_device_driver.set_cpi(cpi); } diff --git a/quantum/pointing_device.h b/quantum/pointing_device.h index 56a542d54588..5106c26660e7 100644 --- a/quantum/pointing_device.h +++ b/quantum/pointing_device.h @@ -21,9 +21,68 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #include "host.h" #include "report.h" +#if defined(POINTING_DEVICE_DRIVER_adns5050) +# include "drivers/sensors/adns5050.h" +#elif defined(POINTING_DEVICE_DRIVER_adns9800) +# include "spi_master.h" +# include "drivers/sensors/adns9800.h" +#elif defined(POINTING_DEVICE_DRIVER_analog_joystick) +# include "analog.h" +# include "drivers/sensors/analog_joystick.h" +#elif defined(POINTING_DEVICE_DRIVER_cirque_pinnacle_i2c) || defined(POINTING_DEVICE_DRIVER_cirque_pinnacle_spi) +# include "drivers/sensors/cirque_pinnacle.h" +#elif defined(POINTING_DEVICE_DRIVER_pimoroni_trackball) +# include "i2c_master.h" +# include "drivers/sensors/pimoroni_trackball.h" +// support for legacy pimoroni defines +# ifdef PIMORONI_TRACKBALL_INVERT_X +# define POINTING_DEVICE_INVERT_X +# endif +# ifdef PIMORONI_TRACKBALL_INVERT_Y +# define POINTING_DEVICE_INVERT_Y +# endif +# ifdef PIMORONI_TRACKBALL_ROTATE +# define POINTING_DEVICE_ROTATION_90 +# endif +#elif defined(POINTING_DEVICE_DRIVER_pmw3360) +# include "spi_master.h" +# include "drivers/sensors/pmw3360.h" +#else +void pointing_device_driver_init(void); +report_mouse_t pointing_device_driver_get_report(report_mouse_t mouse_report); +uint16_t pointing_device_driver_get_cpi(void); +void pointing_device_driver_set_cpi(uint16_t cpi); +#endif + +typedef struct { + void (*init)(void); + report_mouse_t (*get_report)(report_mouse_t mouse_report); + void (*set_cpi)(uint16_t); + uint16_t (*get_cpi)(void); +} pointing_device_driver_t; + +typedef enum { + POINTING_DEVICE_BUTTON1, + POINTING_DEVICE_BUTTON2, + POINTING_DEVICE_BUTTON3, + POINTING_DEVICE_BUTTON4, + POINTING_DEVICE_BUTTON5, + POINTING_DEVICE_BUTTON6, + POINTING_DEVICE_BUTTON7, + POINTING_DEVICE_BUTTON8, +} pointing_device_buttons_t; + void pointing_device_init(void); void pointing_device_task(void); void pointing_device_send(void); report_mouse_t pointing_device_get_report(void); void pointing_device_set_report(report_mouse_t newMouseReport); bool has_mouse_report_changed(report_mouse_t new, report_mouse_t old); +uint16_t pointing_device_get_cpi(void); +void pointing_device_set_cpi(uint16_t cpi); + +void pointing_device_init_kb(void); +void pointing_device_init_user(void); +report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report); +report_mouse_t pointing_device_task_user(report_mouse_t mouse_report); +uint8_t pointing_device_handle_buttons(uint8_t buttons, bool pressed, pointing_device_buttons_t button); diff --git a/quantum/pointing_device_drivers.c b/quantum/pointing_device_drivers.c new file mode 100644 index 000000000000..9ad5e76ba634 --- /dev/null +++ b/quantum/pointing_device_drivers.c @@ -0,0 +1,262 @@ +/* Copyright 2017 Joshua Broekhuijsen <snipeye+qmk@gmail.com> + * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com> + * Copyright 2021 Dasky (@daskygit) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "pointing_device.h" +#include "debug.h" +#include "wait.h" +#include "timer.h" +#include <stddef.h> + +// hid mouse reports cannot exceed -127 to 127, so constrain to that value +#define constrain_hid(amt) ((amt) < -127 ? -127 : ((amt) > 127 ? 127 : (amt))) + +// get_report functions should probably be moved to their respective drivers. +#if defined(POINTING_DEVICE_DRIVER_adns5050) +report_mouse_t adns5050_get_report(report_mouse_t mouse_report) { + report_adns5050_t data = adns5050_read_burst(); + + if (data.dx != 0 || data.dy != 0) { +# ifdef CONSOLE_ENABLE + if (debug_mouse) dprintf("Raw ] X: %d, Y: %d\n", data.dx, data.dy); +# endif + + mouse_report.x = data.dx; + mouse_report.y = data.dy; + } + + return mouse_report; +} + +// clang-format off +const pointing_device_driver_t pointing_device_driver = { + .init = adns5050_init, + .get_report = adns5050_get_report, + .set_cpi = adns5050_set_cpi, + .get_cpi = adns5050_get_cpi, +}; +// clang-format on +#elif defined(POINTING_DEVICE_DRIVER_adns9800) + +report_mouse_t adns9800_get_report_driver(report_mouse_t mouse_report) { + report_adns9800_t sensor_report = adns9800_get_report(); + + int8_t clamped_x = constrain_hid(sensor_report.x); + int8_t clamped_y = constrain_hid(sensor_report.y); + + mouse_report.x = clamped_x; + mouse_report.y = clamped_y; + + return mouse_report; +} + +// clang-format off +const pointing_device_driver_t pointing_device_driver = { + .init = adns9800_init, + .get_report = adns9800_get_report_driver, + .set_cpi = adns9800_set_cpi, + .get_cpi = adns9800_get_cpi +}; +// clang-format on +#elif defined(POINTING_DEVICE_DRIVER_analog_joystick) +report_mouse_t analog_joystick_get_report(report_mouse_t mouse_report) { + report_analog_joystick_t data = analog_joystick_read(); + +# ifdef CONSOLE_ENABLE + if (debug_mouse) dprintf("Raw ] X: %d, Y: %d\n", data.x, data.y); +# endif + + mouse_report.x = data.x; + mouse_report.y = data.y; + + mouse_report.buttons = pointing_device_handle_buttons(mouse_report.buttons, data.button, POINTING_DEVICE_BUTTON1); + + return mouse_report; +} + +// clang-format off +const pointing_device_driver_t pointing_device_driver = { + .init = analog_joystick_init, + .get_report = analog_joystick_get_report, + .set_cpi = NULL, + .get_cpi = NULL +}; +// clang-format on +#elif defined(POINTING_DEVICE_DRIVER_cirque_pinnacle_i2c) || defined(POINTING_DEVICE_DRIVER_cirque_pinnacle_spi) +# ifndef CIRQUE_PINNACLE_TAPPING_TERM +# ifdef TAPPING_TERM_PER_KEY +# include "action.h" +# include "action_tapping.h" +# define CIRQUE_PINNACLE_TAPPING_TERM get_tapping_term(KC_BTN1, NULL) +# else +# ifdef TAPPING_TERM +# define CIRQUE_PINNACLE_TAPPING_TERM TAPPING_TERM +# else +# define CIRQUE_PINNACLE_TAPPING_TERM 200 +# endif +# endif +# endif +# ifndef CIRQUE_PINNACLE_TOUCH_DEBOUNCE +# define CIRQUE_PINNACLE_TOUCH_DEBOUNCE (CIRQUE_PINNACLE_TAPPING_TERM * 8) +# endif + +report_mouse_t cirque_pinnacle_get_report(report_mouse_t mouse_report) { + pinnacle_data_t touchData = cirque_pinnacle_read_data(); + static uint16_t x = 0, y = 0, mouse_timer = 0; + int8_t report_x = 0, report_y = 0; + static bool is_z_down = false; + + cirque_pinnacle_scale_data(&touchData, cirque_pinnacle_get_scale(), cirque_pinnacle_get_scale()); // Scale coordinates to arbitrary X, Y resolution + + if (x && y && touchData.xValue && touchData.yValue) { + report_x = (int8_t)(touchData.xValue - x); + report_y = (int8_t)(touchData.yValue - y); + } + x = touchData.xValue; + y = touchData.yValue; + + if ((bool)touchData.zValue != is_z_down) { + is_z_down = (bool)touchData.zValue; + if (!touchData.zValue) { + if (timer_elapsed(mouse_timer) < CIRQUE_PINNACLE_TAPPING_TERM && mouse_timer != 0) { + mouse_report.buttons = pointing_device_handle_buttons(mouse_report.buttons, true, POINTING_DEVICE_BUTTON1); + pointing_device_set_report(mouse_report); + pointing_device_send(); +# if TAP_CODE_DELAY > 0 + wait_ms(TAP_CODE_DELAY); +# endif + mouse_report.buttons = pointing_device_handle_buttons(mouse_report.buttons, false, POINTING_DEVICE_BUTTON1); + pointing_device_set_report(mouse_report); + pointing_device_send(); + } + } + mouse_timer = timer_read(); + } + if (timer_elapsed(mouse_timer) > (CIRQUE_PINNACLE_TOUCH_DEBOUNCE)) { + mouse_timer = 0; + } + mouse_report.x = report_x; + mouse_report.y = report_y; + + return mouse_report; +} + +// clang-format off +const pointing_device_driver_t pointing_device_driver = { + .init = cirque_pinnacle_init, + .get_report = cirque_pinnacle_get_report, + .set_cpi = cirque_pinnacle_set_scale, + .get_cpi = cirque_pinnacle_get_scale +}; +// clang-format on + +#elif defined(POINTING_DEVICE_DRIVER_pimoroni_trackball) +report_mouse_t pimorono_trackball_get_report(report_mouse_t mouse_report) { + static fast_timer_t throttle = 0; + static uint16_t debounce = 0; + static uint8_t error_count = 0; + pimoroni_data_t pimoroni_data = {0}; + static int16_t x_offset = 0, y_offset = 0; + + if (error_count < PIMORONI_TRACKBALL_ERROR_COUNT && timer_elapsed_fast(throttle) >= PIMORONI_TRACKBALL_INTERVAL_MS) { + i2c_status_t status = read_pimoroni_trackball(&pimoroni_data); + + if (status == I2C_STATUS_SUCCESS) { + error_count = 0; + + if (!(pimoroni_data.click & 128)) { + mouse_report.buttons = pointing_device_handle_buttons(mouse_report.buttons, false, POINTING_DEVICE_BUTTON1); + if (!debounce) { + x_offset += pimoroni_trackball_get_offsets(pimoroni_data.right, pimoroni_data.left, PIMORONI_TRACKBALL_SCALE); + y_offset += pimoroni_trackball_get_offsets(pimoroni_data.down, pimoroni_data.up, PIMORONI_TRACKBALL_SCALE); + pimoroni_trackball_adapt_values(&mouse_report.x, &x_offset); + pimoroni_trackball_adapt_values(&mouse_report.y, &y_offset); + } else { + debounce--; + } + } else { + mouse_report.buttons = pointing_device_handle_buttons(mouse_report.buttons, true, POINTING_DEVICE_BUTTON1); + debounce = PIMORONI_TRACKBALL_DEBOUNCE_CYCLES; + } + } else { + error_count++; + } + throttle = timer_read_fast(); + } + return mouse_report; +} + +// clang-format off +const pointing_device_driver_t pointing_device_driver = { + .init = pimironi_trackball_device_init, + .get_report = pimorono_trackball_get_report, + .set_cpi = NULL, + .get_cpi = NULL +}; +// clang-format on +#elif defined(POINTING_DEVICE_DRIVER_pmw3360) + +static void init(void) { pmw3360_init(); } + +report_mouse_t pmw3360_get_report(report_mouse_t mouse_report) { + report_pmw3360_t data = pmw3360_read_burst(); + static uint16_t MotionStart = 0; // Timer for accel, 0 is resting state + + if (data.isOnSurface && data.isMotion) { + // Reset timer if stopped moving + if (!data.isMotion) { + if (MotionStart != 0) MotionStart = 0; + return mouse_report; + } + + // Set timer if new motion + if ((MotionStart == 0) && data.isMotion) { +# ifdef CONSOLE_ENABLE + if (debug_mouse) dprintf("Starting motion.\n"); +# endif + MotionStart = timer_read(); + } + mouse_report.x = constrain_hid(data.dx); + mouse_report.y = constrain_hid(data.dy); + } + + return mouse_report; +} + +// clang-format off +const pointing_device_driver_t pointing_device_driver = { + .init = init, + .get_report = pmw3360_get_report, + .set_cpi = pmw3360_set_cpi, + .get_cpi = pmw3360_get_cpi +}; +// clang-format on +#else +__attribute__((weak)) void pointing_device_driver_init(void) {} +__attribute__((weak)) report_mouse_t pointing_device_driver_get_report(report_mouse_t mouse_report) { return mouse_report; } +__attribute__((weak)) uint16_t pointing_device_driver_get_cpi(void) { return 0; } +__attribute__((weak)) void pointing_device_driver_set_cpi(uint16_t cpi) {} + +// clang-format off +const pointing_device_driver_t pointing_device_driver = { + .init = pointing_device_driver_init, + .get_report = pointing_device_driver_get_report, + .get_cpi = pointing_device_driver_get_cpi, + .set_cpi = pointing_device_driver_set_cpi +}; +// clang-format on +#endif diff --git a/quantum/process_keycode/process_auto_shift.c b/quantum/process_keycode/process_auto_shift.c index 51b0efdb47c1..bbc6367ff187 100644 --- a/quantum/process_keycode/process_auto_shift.c +++ b/quantum/process_keycode/process_auto_shift.c @@ -18,14 +18,33 @@ # include <stdbool.h> # include <stdio.h> - # include "process_auto_shift.h" -static uint16_t autoshift_time = 0; -static uint16_t autoshift_timeout = AUTO_SHIFT_TIMEOUT; -static uint16_t autoshift_lastkey = KC_NO; +# ifndef AUTO_SHIFT_DISABLED_AT_STARTUP +# define AUTO_SHIFT_STARTUP_STATE true /* enabled */ +# else +# define AUTO_SHIFT_STARTUP_STATE false /* disabled */ +# endif + +// Stores the last Auto Shift key's up or down time, for evaluation or keyrepeat. +static uint16_t autoshift_time = 0; +# if defined(RETRO_SHIFT) && !defined(NO_ACTION_TAPPING) +// Stores the last key's up or down time, to replace autoshift_time so that Tap Hold times are accurate. +static uint16_t retroshift_time = 0; +// Stores a possibly Retro Shift key's up or down time, as retroshift_time needs +// to be set before the Retro Shift key is evaluated if it is interrupted by an +// Auto Shifted key. +static uint16_t last_retroshift_time; +# endif +static uint16_t autoshift_timeout = AUTO_SHIFT_TIMEOUT; +static uint16_t autoshift_lastkey = KC_NO; +static keyrecord_t autoshift_lastrecord; +// Keys take 8 bits if modifiers are excluded. This records the shift state +// when pressed for each key, so that can be passed to the release function +// and it knows which key needs to be released (if shifted is different base). +static uint16_t autoshift_shift_states[((1 << 8) + 15) / 16]; static struct { - // Whether autoshift is enabled. + // Whether Auto Shift is enabled. bool enabled : 1; // Whether the last auto-shifted key was released after the timeout. This // is used to replicate the last key for a tap-then-hold. @@ -34,43 +53,157 @@ static struct { bool in_progress : 1; // Whether the auto-shifted keypress has been registered. bool holding_shift : 1; -} autoshift_flags = {true, false, false, false}; + // Whether the user is holding a shift and we removed it. + bool cancelling_lshift : 1; + bool cancelling_rshift : 1; + // clang-format wants to remove the true for some reason. + // clang-format off +} autoshift_flags = {AUTO_SHIFT_STARTUP_STATE, false, false, false, false, false}; +// clang-format on + +/** \brief Called on physical press, returns whether key should be added to Auto Shift */ +__attribute__((weak)) bool get_custom_auto_shifted_key(uint16_t keycode, keyrecord_t *record) { return false; } + +/** \brief Called on physical press, returns whether is Auto Shift key */ +__attribute__((weak)) bool get_auto_shifted_key(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { +# ifndef NO_AUTO_SHIFT_ALPHA + case AUTO_SHIFT_ALPHA: +# endif +# ifndef NO_AUTO_SHIFT_NUMERIC + case AUTO_SHIFT_NUMERIC: +# endif +# ifndef NO_AUTO_SHIFT_SPECIAL + case AUTO_SHIFT_SPECIAL: +# endif + return true; + } + return get_custom_auto_shifted_key(keycode, record); +} + +/** \brief Called to check whether defines should apply if PER_KEY is set for it */ +__attribute__((weak)) bool get_auto_shift_repeat(uint16_t keycode, keyrecord_t *record) { return true; } +__attribute__((weak)) bool get_auto_shift_no_auto_repeat(uint16_t keycode, keyrecord_t *record) { return true; } + +/** \brief Called when an Auto Shift key needs to be pressed */ +__attribute__((weak)) void autoshift_press_user(uint16_t keycode, bool shifted, keyrecord_t *record) { + if (shifted) { + add_weak_mods(MOD_BIT(KC_LSFT)); + } + register_code16((IS_RETRO(keycode)) ? keycode & 0xFF : keycode); +} + +/** \brief Called when an Auto Shift key needs to be released */ +__attribute__((weak)) void autoshift_release_user(uint16_t keycode, bool shifted, keyrecord_t *record) { unregister_code16((IS_RETRO(keycode)) ? keycode & 0xFF : keycode); } + +/** \brief Sets the shift state to use when keyrepeating, required by custom shifts */ +void set_autoshift_shift_state(uint16_t keycode, bool shifted) { + keycode = keycode & 0xFF; + if (shifted) { + autoshift_shift_states[keycode / 16] |= (uint16_t)1 << keycode % 16; + } else { + autoshift_shift_states[keycode / 16] &= ~((uint16_t)1 << keycode % 16); + } +} + +/** \brief Gets the shift state to use when keyrepeating, required by custom shifts */ +bool get_autoshift_shift_state(uint16_t keycode) { + keycode = keycode & 0xFF; + return (autoshift_shift_states[keycode / 16] & (uint16_t)1 << keycode % 16) != (uint16_t)0; +} + +/** \brief Restores the shift key if it was cancelled by Auto Shift */ +static void autoshift_flush_shift(void) { + autoshift_flags.holding_shift = false; + del_weak_mods(MOD_BIT(KC_LSFT)); + if (autoshift_flags.cancelling_lshift) { + autoshift_flags.cancelling_lshift = false; + add_mods(MOD_BIT(KC_LSFT)); + } + if (autoshift_flags.cancelling_rshift) { + autoshift_flags.cancelling_rshift = false; + add_mods(MOD_BIT(KC_RSFT)); + } + send_keyboard_report(); +} /** \brief Record the press of an autoshiftable key * * \return Whether the record should be further processed. */ static bool autoshift_press(uint16_t keycode, uint16_t now, keyrecord_t *record) { - if (!autoshift_flags.enabled) { - return true; - } - + // clang-format off + if ((get_mods() +# if !defined(NO_ACTION_ONESHOT) && !defined(NO_ACTION_TAPPING) + | get_oneshot_mods() +# endif + ) & (~MOD_BIT(KC_LSFT)) + ) { + // clang-format on + // Prevents keyrepeating unshifted value of key after using it in a key combo. + autoshift_lastkey = KC_NO; # ifndef AUTO_SHIFT_MODIFIERS - if (get_mods()) { - return true; - } + // We can't return true here anymore because custom unshifted values are + // possible and there's no good way to tell whether the press returned + // true upon release. + set_autoshift_shift_state(keycode, false); + autoshift_press_user(keycode, false, record); +# if !defined(NO_ACTION_ONESHOT) && !defined(NO_ACTION_TAPPING) + set_oneshot_mods(get_oneshot_mods() & (~MOD_BIT(KC_LSFT))); + clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); +# endif + return false; # endif -# ifdef AUTO_SHIFT_REPEAT - const uint16_t elapsed = TIMER_DIFF_16(now, autoshift_time); -# ifndef AUTO_SHIFT_NO_AUTO_REPEAT - if (!autoshift_flags.lastshifted) { + } + + // Store record to be sent to user functions if there's no release record then. + autoshift_lastrecord = *record; + autoshift_lastrecord.event.pressed = false; + autoshift_lastrecord.event.time = 0; + // clang-format off +# if defined(AUTO_SHIFT_REPEAT) || defined(AUTO_SHIFT_REPEAT_PER_KEY) + if (keycode == autoshift_lastkey && +# ifdef AUTO_SHIFT_REPEAT_PER_KEY + get_auto_shift_repeat(autoshift_lastkey, record) && # endif - if (elapsed < TAPPING_TERM && keycode == autoshift_lastkey) { - // Allow a tap-then-hold for keyrepeat. - if (!autoshift_flags.lastshifted) { - register_code(autoshift_lastkey); - } else { - // Simulate pressing the shift key. - add_weak_mods(MOD_BIT(KC_LSFT)); - register_code(autoshift_lastkey); - } - return false; +# if !defined(AUTO_SHIFT_NO_AUTO_REPEAT) || defined(AUTO_SHIFT_NO_AUTO_REPEAT_PER_KEY) + ( + !autoshift_flags.lastshifted +# ifdef AUTO_SHIFT_NO_AUTO_REPEAT_PER_KEY + || get_auto_shift_no_auto_repeat(autoshift_lastkey, record) +# endif + ) && +# endif + TIMER_DIFF_16(now, autoshift_time) < +# ifdef TAPPING_TERM_PER_KEY + get_tapping_term(autoshift_lastkey, record) +# else + TAPPING_TERM +# endif + ) { + // clang-format on + // Allow a tap-then-hold for keyrepeat. + if (get_mods() & MOD_BIT(KC_LSFT)) { + autoshift_flags.cancelling_lshift = true; + del_mods(MOD_BIT(KC_LSFT)); } -# ifndef AUTO_SHIFT_NO_AUTO_REPEAT + if (get_mods() & MOD_BIT(KC_RSFT)) { + autoshift_flags.cancelling_rshift = true; + del_mods(MOD_BIT(KC_RSFT)); + } + // autoshift_shift_state doesn't need to be changed. + autoshift_press_user(autoshift_lastkey, autoshift_flags.lastshifted, record); + return false; } -# endif # endif + // Use physical shift state of press event to be more like normal typing. +# if !defined(NO_ACTION_ONESHOT) && !defined(NO_ACTION_TAPPING) + autoshift_flags.lastshifted = (get_mods() | get_oneshot_mods()) & MOD_BIT(KC_LSFT); + set_oneshot_mods(get_oneshot_mods() & (~MOD_BIT(KC_LSFT))); +# else + autoshift_flags.lastshifted = get_mods() & MOD_BIT(KC_LSFT); +# endif // Record the keycode so we can simulate it later. autoshift_lastkey = keycode; autoshift_time = now; @@ -84,51 +217,70 @@ static bool autoshift_press(uint16_t keycode, uint16_t now, keyrecord_t *record) /** \brief Registers an autoshiftable key under the right conditions * - * If the autoshift delay has elapsed, register a shift and the key. + * If autoshift_timeout has elapsed, register a shift and the key. * - * If the autoshift key is released before the delay has elapsed, register the + * If the Auto Shift key is released before the delay has elapsed, register the * key without a shift. + * + * Called on key down with keycode=KC_NO, auto-shifted key up, and timeout. */ -static void autoshift_end(uint16_t keycode, uint16_t now, bool matrix_trigger) { - // Called on key down with KC_NO, auto-shifted key up, and timeout. - if (autoshift_flags.in_progress) { +static void autoshift_end(uint16_t keycode, uint16_t now, bool matrix_trigger, keyrecord_t *record) { + if (autoshift_flags.in_progress && (keycode == autoshift_lastkey || keycode == KC_NO)) { // Process the auto-shiftable key. autoshift_flags.in_progress = false; - - // Time since the initial press was recorded. - const uint16_t elapsed = TIMER_DIFF_16(now, autoshift_time); - if (elapsed < autoshift_timeout) { - register_code(autoshift_lastkey); - autoshift_flags.lastshifted = false; - } else { - // Simulate pressing the shift key. - add_weak_mods(MOD_BIT(KC_LSFT)); - register_code(autoshift_lastkey); - autoshift_flags.lastshifted = true; -# if defined(AUTO_SHIFT_REPEAT) && !defined(AUTO_SHIFT_NO_AUTO_REPEAT) - if (matrix_trigger) { - // Prevents release. - return; - } + // clang-format off + autoshift_flags.lastshifted = + autoshift_flags.lastshifted + || TIMER_DIFF_16(now, autoshift_time) >= +# ifdef AUTO_SHIFT_TIMEOUT_PER_KEY + get_autoshift_timeout(autoshift_lastkey, record) +# else + autoshift_timeout # endif + ; + // clang-format on + set_autoshift_shift_state(autoshift_lastkey, autoshift_flags.lastshifted); + if (get_mods() & MOD_BIT(KC_LSFT)) { + autoshift_flags.cancelling_lshift = true; + del_mods(MOD_BIT(KC_LSFT)); + } + if (get_mods() & MOD_BIT(KC_RSFT)) { + autoshift_flags.cancelling_rshift = true; + del_mods(MOD_BIT(KC_RSFT)); } + autoshift_press_user(autoshift_lastkey, autoshift_flags.lastshifted, record); + // clang-format off +# if (defined(AUTO_SHIFT_REPEAT) || defined(AUTO_SHIFT_REPEAT_PER_KEY)) && (!defined(AUTO_SHIFT_NO_AUTO_REPEAT) || defined(AUTO_SHIFT_NO_AUTO_REPEAT_PER_KEY)) + if (matrix_trigger +# ifdef AUTO_SHIFT_REPEAT_PER_KEY + && get_auto_shift_repeat(autoshift_lastkey, record) +# endif +# ifdef AUTO_SHIFT_NO_AUTO_REPEAT_PER_KEY + && !get_auto_shift_no_auto_repeat(autoshift_lastkey, record) +# endif + ) { + // Prevents release. + return; + } +# endif + // clang-format on # if TAP_CODE_DELAY > 0 wait_ms(TAP_CODE_DELAY); # endif - unregister_code(autoshift_lastkey); - del_weak_mods(MOD_BIT(KC_LSFT)); + + autoshift_release_user(autoshift_lastkey, autoshift_flags.lastshifted, record); + autoshift_flush_shift(); } else { // Release after keyrepeat. - unregister_code(keycode); + autoshift_release_user(keycode, get_autoshift_shift_state(keycode), record); if (keycode == autoshift_lastkey) { // This will only fire when the key was the last auto-shiftable - // pressed. That prevents aaaaBBBB then releasing a from unshifting - // later Bs (if B wasn't auto-shiftable). - del_weak_mods(MOD_BIT(KC_LSFT)); + // pressed. That prevents 'aaaaBBBB' then releasing a from unshifting + // later 'B's (if 'B' wasn't auto-shiftable). + autoshift_flush_shift(); } } - send_keyboard_report(); // del_weak_mods doesn't send one. // Roll the autoshift_time forward for detecting tap-and-hold. autoshift_time = now; } @@ -141,24 +293,29 @@ static void autoshift_end(uint16_t keycode, uint16_t now, bool matrix_trigger) { */ void autoshift_matrix_scan(void) { if (autoshift_flags.in_progress) { - const uint16_t now = timer_read(); - const uint16_t elapsed = TIMER_DIFF_16(now, autoshift_time); - if (elapsed >= autoshift_timeout) { - autoshift_end(autoshift_lastkey, now, true); + const uint16_t now = timer_read(); + if (TIMER_DIFF_16(now, autoshift_time) >= +# ifdef AUTO_SHIFT_TIMEOUT_PER_KEY + get_autoshift_timeout(autoshift_lastkey, &autoshift_lastrecord) +# else + autoshift_timeout +# endif + ) { + autoshift_end(autoshift_lastkey, now, true, &autoshift_lastrecord); } } } void autoshift_toggle(void) { autoshift_flags.enabled = !autoshift_flags.enabled; - del_weak_mods(MOD_BIT(KC_LSFT)); + autoshift_flush_shift(); } void autoshift_enable(void) { autoshift_flags.enabled = true; } void autoshift_disable(void) { autoshift_flags.enabled = false; - del_weak_mods(MOD_BIT(KC_LSFT)); + autoshift_flush_shift(); } # ifndef AUTO_SHIFT_NO_SETUP @@ -173,76 +330,158 @@ void autoshift_timer_report(void) { bool get_autoshift_state(void) { return autoshift_flags.enabled; } -uint16_t get_autoshift_timeout(void) { return autoshift_timeout; } +uint16_t get_generic_autoshift_timeout() { return autoshift_timeout; } +__attribute__((weak)) uint16_t get_autoshift_timeout(uint16_t keycode, keyrecord_t *record) { return autoshift_timeout; } void set_autoshift_timeout(uint16_t timeout) { autoshift_timeout = timeout; } bool process_auto_shift(uint16_t keycode, keyrecord_t *record) { // Note that record->event.time isn't reliable, see: // https://github.com/qmk/qmk_firmware/pull/9826#issuecomment-733559550 - const uint16_t now = timer_read(); + // clang-format off + const uint16_t now = +# if !defined(RETRO_SHIFT) || defined(NO_ACTION_TAPPING) + timer_read() +# else + (record->event.pressed) ? retroshift_time : timer_read() +# endif + ; + // clang-format on if (record->event.pressed) { if (autoshift_flags.in_progress) { - // Evaluate previous key if there is one. Doing this elsewhere is - // more complicated and easier to break. - autoshift_end(KC_NO, now, false); + // Evaluate previous key if there is one. + autoshift_end(KC_NO, now, false, &autoshift_lastrecord); } - // For pressing another key while keyrepeating shifted autoshift. - del_weak_mods(MOD_BIT(KC_LSFT)); switch (keycode) { case KC_ASTG: autoshift_toggle(); - return true; + break; case KC_ASON: autoshift_enable(); - return true; + break; case KC_ASOFF: autoshift_disable(); - return true; + break; # ifndef AUTO_SHIFT_NO_SETUP case KC_ASUP: autoshift_timeout += 5; - return true; + break; case KC_ASDN: autoshift_timeout -= 5; - return true; - + break; case KC_ASRP: autoshift_timer_report(); - return true; + break; # endif } + // If Retro Shift is disabled, possible custom actions shouldn't happen. + // clang-format off + if (IS_RETRO(keycode) +# if defined(RETRO_SHIFT) && !defined(NO_ACTION_TAPPING) + // Not tapped or #defines mean that rolls should use hold action. + && ( + record->tap.count == 0 +# ifdef RETRO_TAPPING_PER_KEY + || !get_retro_tapping(keycode, record) +# endif + || (record->tap.interrupted && (IS_LT(keycode) +# if defined(HOLD_ON_OTHER_KEY_PRESS) || defined(HOLD_ON_OTHER_KEY_PRESS_PER_KEY) +# ifdef HOLD_ON_OTHER_KEY_PRESS_PER_KEY + ? get_hold_on_other_key_press(keycode, record) +# else + ? true +# endif +# else + ? false +# endif +# if defined(IGNORE_MOD_TAP_INTERRUPT) || defined(IGNORE_MOD_TAP_INTERRUPT_PER_KEY) +# ifdef IGNORE_MOD_TAP_INTERRUPT_PER_KEY + : !get_ignore_mod_tap_interrupt(keycode, record) +# else + : false +# endif +# else + : true +# endif + )) + ) +# endif + ) { + // clang-format on + autoshift_lastkey = KC_NO; + return true; + } + } else { + if (keycode == KC_LSFT) { + autoshift_flags.cancelling_lshift = false; + } else if (keycode == KC_RSFT) { + autoshift_flags.cancelling_rshift = false; + } + // Same as above (for pressed), additional checks are not needed because + // tap.count gets set to 0 in process_action + // clang-format off + else if (IS_RETRO(keycode) +# if defined(RETRO_SHIFT) && !defined(NO_ACTION_TAPPING) + && ( + record->tap.count == 0 +# ifdef RETRO_TAPPING_PER_KEY + || !get_retro_tapping(keycode, record) +# endif + ) +# endif + ) { + // Fixes modifiers not being applied to rolls with AUTO_SHIFT_MODIFIERS set. +# if !defined(IGNORE_MOD_TAP_INTERRUPT) || defined(IGNORE_MOD_TAP_INTERRUPT_PER_KEY) + if (autoshift_flags.in_progress +# ifdef IGNORE_MOD_TAP_INTERRUPT_PER_KEY + && !get_ignore_mod_tap_interrupt(keycode, record) +# endif + ) { + autoshift_end(KC_NO, now, false, &autoshift_lastrecord); + } +# endif + // clang-format on + return true; + } + } + + if (!autoshift_flags.enabled) { + return true; } if (get_auto_shifted_key(keycode, record)) { if (record->event.pressed) { return autoshift_press(keycode, now, record); } else { - autoshift_end(keycode, now, false); + autoshift_end(keycode, now, false, record); return false; } } + + // Prevent keyrepeating of older keys upon non-AS key event. + // Not commented at above returns but they serve the same function. + if (record->event.pressed) { + autoshift_lastkey = KC_NO; + } return true; } -__attribute__((weak)) bool get_auto_shifted_key(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { -# ifndef NO_AUTO_SHIFT_ALPHA - case KC_A ... KC_Z: -# endif -# ifndef NO_AUTO_SHIFT_NUMERIC - case KC_1 ... KC_0: -# endif -# ifndef NO_AUTO_SHIFT_SPECIAL - case KC_TAB: - case KC_MINUS ... KC_SLASH: - case KC_NONUS_BSLASH: -# endif - return true; +# if defined(RETRO_SHIFT) && !defined(NO_ACTION_TAPPING) +// Called to record time before possible delays by action_tapping_process. +void retroshift_poll_time(keyevent_t *event) { + last_retroshift_time = retroshift_time; + retroshift_time = timer_read(); +} +// Used to swap the times of Retro Shifted key and Auto Shift key that interrupted it. +void retroshift_swap_times() { + if (last_retroshift_time != 0 && autoshift_flags.in_progress) { + uint16_t temp = retroshift_time; + retroshift_time = last_retroshift_time; + last_retroshift_time = temp; } - return false; } +# endif #endif diff --git a/quantum/process_keycode/process_auto_shift.h b/quantum/process_keycode/process_auto_shift.h index 00a9ab036fe3..ac6a143746e6 100644 --- a/quantum/process_keycode/process_auto_shift.h +++ b/quantum/process_keycode/process_auto_shift.h @@ -22,13 +22,31 @@ # define AUTO_SHIFT_TIMEOUT 175 #endif +#define IS_LT(kc) ((kc) >= QK_LAYER_TAP && (kc) <= QK_LAYER_TAP_MAX) +#define IS_MT(kc) ((kc) >= QK_MOD_TAP && (kc) <= QK_MOD_TAP_MAX) +#define IS_RETRO(kc) (IS_MT(kc) || IS_LT(kc)) +#define DO_GET_AUTOSHIFT_TIMEOUT(keycode, record, ...) record +// clang-format off +#define AUTO_SHIFT_ALPHA KC_A ... KC_Z +#define AUTO_SHIFT_NUMERIC KC_1 ... KC_0 +#define AUTO_SHIFT_SPECIAL \ + KC_TAB: \ + case KC_MINUS ... KC_SLASH: \ + case KC_NONUS_BSLASH +// clang-format on + bool process_auto_shift(uint16_t keycode, keyrecord_t *record); +void retroshift_poll_time(keyevent_t *event); +void retroshift_swap_times(void); void autoshift_enable(void); void autoshift_disable(void); void autoshift_toggle(void); bool get_autoshift_state(void); -uint16_t get_autoshift_timeout(void); +uint16_t get_generic_autoshift_timeout(void); +// clang-format off +uint16_t (get_autoshift_timeout)(uint16_t keycode, keyrecord_t *record); void set_autoshift_timeout(uint16_t timeout); void autoshift_matrix_scan(void); -bool get_auto_shifted_key(uint16_t keycode, keyrecord_t *record); +bool get_custom_auto_shifted_key(uint16_t keycode, keyrecord_t *record); +// clang-format on diff --git a/quantum/process_keycode/process_combo.c b/quantum/process_keycode/process_combo.c index f38d7d47a097..a050161edf89 100644 --- a/quantum/process_keycode/process_combo.c +++ b/quantum/process_keycode/process_combo.c @@ -16,114 +16,455 @@ #include "print.h" #include "process_combo.h" +#include "action_tapping.h" -#ifndef COMBO_VARIABLE_LEN -__attribute__((weak)) combo_t key_combos[COMBO_COUNT] = {}; +#ifdef COMBO_COUNT +__attribute__((weak)) combo_t key_combos[COMBO_COUNT]; +uint16_t COMBO_LEN = COMBO_COUNT; #else extern combo_t key_combos[]; -extern int COMBO_LEN; +extern uint16_t COMBO_LEN; #endif __attribute__((weak)) void process_combo_event(uint16_t combo_index, bool pressed) {} -static uint16_t timer = 0; -static uint16_t current_combo_index = 0; -static bool drop_buffer = false; -static bool is_active = false; -static bool b_combo_enable = true; // defaults to enabled +#ifdef COMBO_MUST_HOLD_PER_COMBO +__attribute__((weak)) bool get_combo_must_hold(uint16_t index, combo_t *combo) { return false; } +#endif + +#ifdef COMBO_MUST_TAP_PER_COMBO +__attribute__((weak)) bool get_combo_must_tap(uint16_t index, combo_t *combo) { return false; } +#endif + +#ifdef COMBO_TERM_PER_COMBO +__attribute__((weak)) uint16_t get_combo_term(uint16_t index, combo_t *combo) { return COMBO_TERM; } +#endif + +#ifdef COMBO_PROCESS_KEY_RELEASE +__attribute__((weak)) bool process_combo_key_release(uint16_t combo_index, combo_t *combo, uint8_t key_index, uint16_t keycode) { return false; } +#endif -static uint8_t buffer_size = 0; -#ifdef COMBO_ALLOW_ACTION_KEYS -static keyrecord_t key_buffer[MAX_COMBO_LENGTH]; +#ifndef COMBO_NO_TIMER +static uint16_t timer = 0; +#endif +static bool b_combo_enable = true; // defaults to enabled +static uint16_t longest_term = 0; + +typedef struct { + keyrecord_t record; + uint16_t combo_index; + uint16_t keycode; +} queued_record_t; +static uint8_t key_buffer_size = 0; +static queued_record_t key_buffer[COMBO_KEY_BUFFER_LENGTH]; + +typedef struct { + uint16_t combo_index; +} queued_combo_t; +static uint8_t combo_buffer_write = 0; +static uint8_t combo_buffer_read = 0; +static queued_combo_t combo_buffer[COMBO_BUFFER_LENGTH]; + +#define INCREMENT_MOD(i) i = (i + 1) % COMBO_BUFFER_LENGTH + +#define COMBO_KEY_POS ((keypos_t){.col = 254, .row = 254}) + +#ifndef EXTRA_SHORT_COMBOS +/* flags are their own elements in combo_t struct. */ +# define COMBO_ACTIVE(combo) (combo->active) +# define COMBO_DISABLED(combo) (combo->disabled) +# define COMBO_STATE(combo) (combo->state) + +# define ACTIVATE_COMBO(combo) \ + do { \ + combo->active = true; \ + } while (0) +# define DEACTIVATE_COMBO(combo) \ + do { \ + combo->active = false; \ + } while (0) +# define DISABLE_COMBO(combo) \ + do { \ + combo->disabled = true; \ + } while (0) +# define RESET_COMBO_STATE(combo) \ + do { \ + combo->disabled = false; \ + combo->state = 0; \ + } while (0) #else -static uint16_t key_buffer[MAX_COMBO_LENGTH]; +/* flags are at the two high bits of state. */ +# define COMBO_ACTIVE(combo) (combo->state & 0x80) +# define COMBO_DISABLED(combo) (combo->state & 0x40) +# define COMBO_STATE(combo) (combo->state & 0x3F) + +# define ACTIVATE_COMBO(combo) \ + do { \ + combo->state |= 0x80; \ + } while (0) +# define DEACTIVATE_COMBO(combo) \ + do { \ + combo->state &= ~0x80; \ + } while (0) +# define DISABLE_COMBO(combo) \ + do { \ + combo->state |= 0x40; \ + } while (0) +# define RESET_COMBO_STATE(combo) \ + do { \ + combo->state &= ~0x7F; \ + } while (0) #endif -static inline void send_combo(uint16_t action, bool pressed) { - if (action) { - if (pressed) { - register_code16(action); - } else { - unregister_code16(action); - } +static inline void release_combo(uint16_t combo_index, combo_t *combo) { + if (combo->keycode) { + keyrecord_t record = { + .event = + { + .key = COMBO_KEY_POS, + .time = timer_read() | 1, + .pressed = false, + }, + .keycode = combo->keycode, + }; +#ifndef NO_ACTION_TAPPING + action_tapping_process(record); +#else + process_record(&record); +#endif } else { - process_combo_event(current_combo_index, pressed); + process_combo_event(combo_index, false); + } + DEACTIVATE_COMBO(combo); +} + +static inline bool _get_combo_must_hold(uint16_t combo_index, combo_t *combo) { +#ifdef COMBO_NO_TIMER + return false; +#elif defined(COMBO_MUST_HOLD_PER_COMBO) + return get_combo_must_hold(combo_index, combo); +#elif defined(COMBO_MUST_HOLD_MODS) + return (KEYCODE_IS_MOD(combo->keycode) || (combo->keycode >= QK_MOMENTARY && combo->keycode <= QK_MOMENTARY_MAX)); +#endif + return false; +} + +static inline uint16_t _get_wait_time(uint16_t combo_index, combo_t *combo) { + if (_get_combo_must_hold(combo_index, combo) +#ifdef COMBO_MUST_TAP_PER_COMBO + || get_combo_must_tap(combo_index, combo) +#endif + ) { + if (longest_term < COMBO_HOLD_TERM) { + return COMBO_HOLD_TERM; + } } + + return longest_term; +} + +static inline uint16_t _get_combo_term(uint16_t combo_index, combo_t *combo) { +#if defined(COMBO_TERM_PER_COMBO) + return get_combo_term(combo_index, combo); +#endif + + return COMBO_TERM; } -static inline void dump_key_buffer(bool emit) { - if (buffer_size == 0) { +void clear_combos(void) { + uint16_t index = 0; + longest_term = 0; + for (index = 0; index < COMBO_LEN; ++index) { + combo_t *combo = &key_combos[index]; + if (!COMBO_ACTIVE(combo)) { + RESET_COMBO_STATE(combo); + } + } +} + +static inline void dump_key_buffer(void) { + /* First call start from 0 index; recursive calls need to start from i+1 index */ + static uint8_t key_buffer_next = 0; + + if (key_buffer_size == 0) { return; } - if (emit) { - for (uint8_t i = 0; i < buffer_size; i++) { -#ifdef COMBO_ALLOW_ACTION_KEYS - const action_t action = store_or_get_action(key_buffer[i].event.pressed, key_buffer[i].event.key); - process_action(&(key_buffer[i]), action); + for (uint8_t key_buffer_i = key_buffer_next; key_buffer_i < key_buffer_size; key_buffer_i++) { + key_buffer_next = key_buffer_i + 1; + + queued_record_t *qrecord = &key_buffer[key_buffer_i]; + keyrecord_t * record = &qrecord->record; + + if (IS_NOEVENT(record->event)) { + continue; + } + + if (!record->keycode && qrecord->combo_index != (uint16_t)-1) { + process_combo_event(qrecord->combo_index, true); + } else { +#ifndef NO_ACTION_TAPPING + action_tapping_process(*record); #else - register_code16(key_buffer[i]); - send_keyboard_report(); + process_record(record); #endif } + record->event.time = 0; } - buffer_size = 0; + key_buffer_next = key_buffer_size = 0; } -#define ALL_COMBO_KEYS_ARE_DOWN (((1 << count) - 1) == combo->state) -#define KEY_STATE_DOWN(key) \ - do { \ - combo->state |= (1 << key); \ +#define NO_COMBO_KEYS_ARE_DOWN (0 == COMBO_STATE(combo)) +#define ALL_COMBO_KEYS_ARE_DOWN(state, key_count) (((1 << key_count) - 1) == state) +#define ONLY_ONE_KEY_IS_DOWN(state) !(state & (state - 1)) +#define KEY_NOT_YET_RELEASED(state, key_index) ((1 << key_index) & state) +#define KEY_STATE_DOWN(state, key_index) \ + do { \ + state |= (1 << key_index); \ } while (0) -#define KEY_STATE_UP(key) \ - do { \ - combo->state &= ~(1 << key); \ +#define KEY_STATE_UP(state, key_index) \ + do { \ + state &= ~(1 << key_index); \ } while (0) -static bool process_single_combo(combo_t *combo, uint16_t keycode, keyrecord_t *record) { - uint8_t count = 0; - uint16_t index = -1; - /* Find index of keycode and number of combo keys */ - for (const uint16_t *keys = combo->keys;; ++count) { - uint16_t key = pgm_read_word(&keys[count]); - if (keycode == key) index = count; +static inline void _find_key_index_and_count(const uint16_t *keys, uint16_t keycode, uint16_t *key_index, uint8_t *key_count) { + while (true) { + uint16_t key = pgm_read_word(&keys[*key_count]); + if (keycode == key) *key_index = *key_count; if (COMBO_END == key) break; + (*key_count)++; + } +} + +void drop_combo_from_buffer(uint16_t combo_index) { + /* Mark a combo as processed from the buffer. If the buffer is in the + * beginning of the buffer, drop it. */ + uint8_t i = combo_buffer_read; + while (i != combo_buffer_write) { + queued_combo_t *qcombo = &combo_buffer[i]; + + if (qcombo->combo_index == combo_index) { + combo_t *combo = &key_combos[combo_index]; + DISABLE_COMBO(combo); + + if (i == combo_buffer_read) { + INCREMENT_MOD(combo_buffer_read); + } + break; + } + INCREMENT_MOD(i); + } +} + +void apply_combo(uint16_t combo_index, combo_t *combo) { + /* Apply combo's result keycode to the last chord key of the combo and + * disable the other keys. */ + + if (COMBO_DISABLED(combo)) { + return; + } + + // state to check against so we find the last key of the combo from the buffer +#if defined(EXTRA_EXTRA_LONG_COMBOS) + uint32_t state = 0; +#elif defined(EXTRA_LONG_COMBOS) + uint16_t state = 0; +#else + uint8_t state = 0; +#endif + + for (uint8_t key_buffer_i = 0; key_buffer_i < key_buffer_size; key_buffer_i++) { + queued_record_t *qrecord = &key_buffer[key_buffer_i]; + keyrecord_t * record = &qrecord->record; + uint16_t keycode = qrecord->keycode; + + uint8_t key_count = 0; + uint16_t key_index = -1; + _find_key_index_and_count(combo->keys, keycode, &key_index, &key_count); + + if (-1 == (int16_t)key_index) { + // key not part of this combo + continue; + } + + KEY_STATE_DOWN(state, key_index); + if (ALL_COMBO_KEYS_ARE_DOWN(state, key_count)) { + // this in the end executes the combo when the key_buffer is dumped. + record->keycode = combo->keycode; + record->event.key = COMBO_KEY_POS; + + qrecord->combo_index = combo_index; + ACTIVATE_COMBO(combo); + + break; + } else { + // key was part of the combo but not the last one, "disable" it + // by making it a TICK event. + record->event.time = 0; + } + } + drop_combo_from_buffer(combo_index); +} + +static inline void apply_combos(void) { + // Apply all buffered normal combos. + for (uint8_t i = combo_buffer_read; i != combo_buffer_write; INCREMENT_MOD(i)) { + queued_combo_t *buffered_combo = &combo_buffer[i]; + combo_t * combo = &key_combos[buffered_combo->combo_index]; + +#ifdef COMBO_MUST_TAP_PER_COMBO + if (get_combo_must_tap(buffered_combo->combo_index, combo)) { + // Tap-only combos are applied on key release only, so let's drop 'em here. + drop_combo_from_buffer(buffered_combo->combo_index); + continue; + } +#endif + apply_combo(buffered_combo->combo_index, combo); } + dump_key_buffer(); + clear_combos(); +} - /* Continue processing if not a combo key */ - if (-1 == (int8_t)index) return false; +combo_t *overlaps(combo_t *combo1, combo_t *combo2) { + /* Checks if the combos overlap and returns the combo that should be + * dropped from the combo buffer. + * The combo that has less keys will be dropped. If they have the same + * amount of keys, drop combo1. */ + + uint8_t idx1 = 0, idx2 = 0; + uint16_t key1, key2; + bool overlaps = false; + + while ((key1 = pgm_read_word(&combo1->keys[idx1])) != COMBO_END) { + idx2 = 0; + while ((key2 = pgm_read_word(&combo2->keys[idx2])) != COMBO_END) { + if (key1 == key2) overlaps = true; + idx2 += 1; + } + idx1 += 1; + } - bool is_combo_active = is_active; + if (!overlaps) return NULL; + if (idx2 < idx1) return combo2; + return combo1; +} + +static bool process_single_combo(combo_t *combo, uint16_t keycode, keyrecord_t *record, uint16_t combo_index) { + uint8_t key_count = 0; + uint16_t key_index = -1; + _find_key_index_and_count(combo->keys, keycode, &key_index, &key_count); - if (record->event.pressed) { - KEY_STATE_DOWN(index); + /* Continue processing if key isn't part of current combo. */ + if (-1 == (int16_t)key_index) { + return false; + } - if (is_combo_active) { - if (ALL_COMBO_KEYS_ARE_DOWN) { /* Combo was pressed */ - send_combo(combo->keycode, true); - drop_buffer = true; + bool key_is_part_of_combo = !COMBO_DISABLED(combo) && is_combo_enabled(); + + if (record->event.pressed && key_is_part_of_combo) { + uint16_t time = _get_combo_term(combo_index, combo); + if (!COMBO_ACTIVE(combo)) { + KEY_STATE_DOWN(combo->state, key_index); + if (longest_term < time) { + longest_term = time; } } + if (ALL_COMBO_KEYS_ARE_DOWN(COMBO_STATE(combo), key_count)) { + /* Combo was fully pressed */ + /* Buffer the combo so we can fire it after COMBO_TERM */ + +#ifndef COMBO_NO_TIMER + /* Don't buffer this combo if its combo term has passed. */ + if (timer && timer_elapsed(timer) > time) { + DISABLE_COMBO(combo); + return true; + } else +#endif + { + + // disable readied combos that overlap with this combo + combo_t *drop = NULL; + for (uint8_t combo_buffer_i = combo_buffer_read; combo_buffer_i != combo_buffer_write; INCREMENT_MOD(combo_buffer_i)) { + queued_combo_t *qcombo = &combo_buffer[combo_buffer_i]; + combo_t * buffered_combo = &key_combos[qcombo->combo_index]; + + if ((drop = overlaps(buffered_combo, combo))) { + DISABLE_COMBO(drop); + if (drop == combo) { + // stop checking for overlaps if dropped combo was current combo. + break; + } else if (combo_buffer_i == combo_buffer_read && drop == buffered_combo) { + /* Drop the disabled buffered combo from the buffer if + * it is in the beginning of the buffer. */ + INCREMENT_MOD(combo_buffer_read); + } + } + } + + if (drop != combo) { + // save this combo to buffer + combo_buffer[combo_buffer_write] = (queued_combo_t){ + .combo_index = combo_index, + }; + INCREMENT_MOD(combo_buffer_write); + + // get possible longer waiting time for tap-/hold-only combos. + longest_term = _get_wait_time(combo_index, combo); + } + } // if timer elapsed end + } } else { - if (ALL_COMBO_KEYS_ARE_DOWN) { /* Combo was released */ - send_combo(combo->keycode, false); + // chord releases + if (!COMBO_ACTIVE(combo) && ALL_COMBO_KEYS_ARE_DOWN(COMBO_STATE(combo), key_count)) { + /* First key quickly released */ + if (COMBO_DISABLED(combo) || _get_combo_must_hold(combo_index, combo)) { + // combo wasn't tappable, disable it and drop it from buffer. + drop_combo_from_buffer(combo_index); + key_is_part_of_combo = false; + } +#ifdef COMBO_MUST_TAP_PER_COMBO + else if (get_combo_must_tap(combo_index, combo)) { + // immediately apply tap-only combo + apply_combo(combo_index, combo); + apply_combos(); // also apply other prepared combos and dump key buffer +# ifdef COMBO_PROCESS_KEY_RELEASE + if (process_combo_key_release(combo_index, combo, key_index, keycode)) { + release_combo(combo_index, combo); + } +# endif + } +#endif + } else if (COMBO_ACTIVE(combo) && ONLY_ONE_KEY_IS_DOWN(COMBO_STATE(combo)) && KEY_NOT_YET_RELEASED(COMBO_STATE(combo), key_index)) { + /* last key released */ + release_combo(combo_index, combo); + key_is_part_of_combo = true; + +#ifdef COMBO_PROCESS_KEY_RELEASE + process_combo_key_release(combo_index, combo, key_index, keycode); +#endif + } else if (COMBO_ACTIVE(combo) && KEY_NOT_YET_RELEASED(COMBO_STATE(combo), key_index)) { + /* first or middle key released */ + key_is_part_of_combo = true; + +#ifdef COMBO_PROCESS_KEY_RELEASE + if (process_combo_key_release(combo_index, combo, key_index, keycode)) { + release_combo(combo_index, combo); + } +#endif } else { - /* continue processing without immediately returning */ - is_combo_active = false; + /* The released key was part of an incomplete combo */ + key_is_part_of_combo = false; } - KEY_STATE_UP(index); + KEY_STATE_UP(combo->state, key_index); } - return is_combo_active; + return key_is_part_of_combo; } -#define NO_COMBO_KEYS_ARE_DOWN (0 == combo->state) - bool process_combo(uint16_t keycode, keyrecord_t *record) { bool is_combo_key = false; - drop_buffer = false; bool no_combo_keys_pressed = true; if (keycode == CMB_ON && record->event.pressed) { @@ -141,65 +482,82 @@ bool process_combo(uint16_t keycode, keyrecord_t *record) { return true; } - if (!is_combo_enabled()) { - return true; - } -#ifndef COMBO_VARIABLE_LEN - for (current_combo_index = 0; current_combo_index < COMBO_COUNT; ++current_combo_index) { -#else - for (current_combo_index = 0; current_combo_index < COMBO_LEN; ++current_combo_index) { +#ifdef COMBO_ONLY_FROM_LAYER + /* Only check keycodes from one layer. */ + keycode = keymap_key_to_keycode(COMBO_ONLY_FROM_LAYER, record->event.key); #endif - combo_t *combo = &key_combos[current_combo_index]; - is_combo_key |= process_single_combo(combo, keycode, record); - no_combo_keys_pressed = no_combo_keys_pressed && NO_COMBO_KEYS_ARE_DOWN; + + for (uint16_t idx = 0; idx < COMBO_LEN; ++idx) { + combo_t *combo = &key_combos[idx]; + is_combo_key |= process_single_combo(combo, keycode, record, idx); + no_combo_keys_pressed = no_combo_keys_pressed && (NO_COMBO_KEYS_ARE_DOWN || COMBO_ACTIVE(combo) || COMBO_DISABLED(combo)); } - if (drop_buffer) { - /* buffer is only dropped when we complete a combo, so we refresh the timer - * here */ - timer = timer_read(); - dump_key_buffer(false); - } else if (!is_combo_key) { - /* if no combos claim the key we need to emit the keybuffer */ - dump_key_buffer(true); - - // reset state if there are no combo keys pressed at all - if (no_combo_keys_pressed) { - timer = 0; - is_active = true; - } - } else if (record->event.pressed && is_active) { - /* otherwise the key is consumed and placed in the buffer */ + if (record->event.pressed && is_combo_key) { +#ifndef COMBO_NO_TIMER +# ifdef COMBO_STRICT_TIMER + if (!timer) { + // timer is set only on the first key + timer = timer_read(); + } +# else timer = timer_read(); +# endif +#endif - if (buffer_size < MAX_COMBO_LENGTH) { -#ifdef COMBO_ALLOW_ACTION_KEYS - key_buffer[buffer_size++] = *record; -#else - key_buffer[buffer_size++] = keycode; + if (key_buffer_size < COMBO_KEY_BUFFER_LENGTH) { + key_buffer[key_buffer_size++] = (queued_record_t){ + .record = *record, + .keycode = keycode, + .combo_index = -1, // this will be set when applying combos + }; + } + } else { + if (combo_buffer_read != combo_buffer_write) { + // some combo is prepared + apply_combos(); + } else { + // reset state if there are no combo keys pressed at all + dump_key_buffer(); +#ifndef COMBO_NO_TIMER + timer = 0; #endif + clear_combos(); } } - return !is_combo_key; } -void matrix_scan_combo(void) { - if (b_combo_enable && is_active && timer && timer_elapsed(timer) > COMBO_TERM) { - /* This disables the combo, meaning key events for this - * combo will be handled by the next processors in the chain - */ - is_active = false; - dump_key_buffer(true); +void combo_task(void) { + if (!b_combo_enable) { + return; + } + +#ifndef COMBO_NO_TIMER + if (timer && timer_elapsed(timer) > longest_term) { + if (combo_buffer_read != combo_buffer_write) { + apply_combos(); + longest_term = 0; + timer = 0; + } else { + dump_key_buffer(); + timer = 0; + clear_combos(); + } } +#endif } void combo_enable(void) { b_combo_enable = true; } void combo_disable(void) { - b_combo_enable = is_active = false; - timer = 0; - dump_key_buffer(true); +#ifndef COMBO_NO_TIMER + timer = 0; +#endif + b_combo_enable = false; + combo_buffer_read = combo_buffer_write; + clear_combos(); + dump_key_buffer(); } void combo_toggle(void) { diff --git a/quantum/process_keycode/process_combo.h b/quantum/process_keycode/process_combo.h index e51a2f1f4e26..4c4e574e34f2 100644 --- a/quantum/process_keycode/process_combo.h +++ b/quantum/process_keycode/process_combo.h @@ -20,23 +20,38 @@ #include "quantum.h" #include <stdint.h> -#ifdef EXTRA_EXTRA_LONG_COMBOS +#ifdef EXTRA_SHORT_COMBOS +# define MAX_COMBO_LENGTH 6 +#elif defined(EXTRA_EXTRA_LONG_COMBOS) # define MAX_COMBO_LENGTH 32 -#elif EXTRA_LONG_COMBOS +#elif defined(EXTRA_LONG_COMBOS) # define MAX_COMBO_LENGTH 16 #else # define MAX_COMBO_LENGTH 8 #endif +#ifndef COMBO_KEY_BUFFER_LENGTH +# define COMBO_KEY_BUFFER_LENGTH MAX_COMBO_LENGTH +#endif +#ifndef COMBO_BUFFER_LENGTH +# define COMBO_BUFFER_LENGTH 4 +#endif + typedef struct { const uint16_t *keys; uint16_t keycode; -#ifdef EXTRA_EXTRA_LONG_COMBOS +#ifdef EXTRA_SHORT_COMBOS + uint8_t state; +#else + bool disabled; + bool active; +# if defined(EXTRA_EXTRA_LONG_COMBOS) uint32_t state; -#elif EXTRA_LONG_COMBOS +# elif defined(EXTRA_LONG_COMBOS) uint16_t state; -#else +# else uint8_t state; +# endif #endif } combo_t; @@ -46,15 +61,18 @@ typedef struct { { .keys = &(ck)[0] } #define COMBO_END 0 -#ifndef COMBO_COUNT -# define COMBO_COUNT 0 -#endif #ifndef COMBO_TERM -# define COMBO_TERM TAPPING_TERM +# define COMBO_TERM 50 #endif +#ifndef COMBO_HOLD_TERM +# define COMBO_HOLD_TERM TAPPING_TERM +#endif + +/* check if keycode is only modifiers */ +#define KEYCODE_IS_MOD(code) (IS_MOD(code) || (code >= QK_MODS && code <= QK_MODS_MAX && !(code & QK_BASIC_MAX))) bool process_combo(uint16_t keycode, keyrecord_t *record); -void matrix_scan_combo(void); +void combo_task(void); void process_combo_event(uint16_t combo_index, bool pressed); void combo_enable(void); diff --git a/quantum/process_keycode/process_dynamic_tapping_term.c b/quantum/process_keycode/process_dynamic_tapping_term.c new file mode 100644 index 000000000000..bdc5529e3383 --- /dev/null +++ b/quantum/process_keycode/process_dynamic_tapping_term.c @@ -0,0 +1,50 @@ +/* Copyright 2020 Vladislav Kucheriavykh + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "quantum.h" +#include "process_dynamic_tapping_term.h" + +#ifndef DYNAMIC_TAPPING_TERM_INCREMENT +# define DYNAMIC_TAPPING_TERM_INCREMENT 5 +#endif + +static void tapping_term_report(void) { + const char *tapping_term_str = get_u16_str(g_tapping_term, ' '); + // Skip padding spaces + while (*tapping_term_str == ' ') { + tapping_term_str++; + } + send_string(tapping_term_str); +} + +bool process_dynamic_tapping_term(uint16_t keycode, keyrecord_t *record) { + if (record->event.pressed) { + switch (keycode) { + case DT_PRNT: + tapping_term_report(); + return false; + + case DT_UP: + g_tapping_term += DYNAMIC_TAPPING_TERM_INCREMENT; + return false; + + case DT_DOWN: + g_tapping_term -= DYNAMIC_TAPPING_TERM_INCREMENT; + return false; + } + } + return true; +} diff --git a/quantum/process_keycode/process_dynamic_tapping_term.h b/quantum/process_keycode/process_dynamic_tapping_term.h new file mode 100644 index 000000000000..85e83ee73b0a --- /dev/null +++ b/quantum/process_keycode/process_dynamic_tapping_term.h @@ -0,0 +1,26 @@ +/* Copyright 2020 Vladislav Kucheriavykh + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should 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 "action.h" + +#ifndef DYNAMIC_TAPPING_TERM_INCREMENT +# define DYNAMIC_TAPPING_TERM_INCREMENT 5 +#endif + +bool process_dynamic_tapping_term(uint16_t keycode, keyrecord_t *record); diff --git a/quantum/process_keycode/process_haptic.c b/quantum/process_keycode/process_haptic.c new file mode 100644 index 000000000000..85b2ffcddd5b --- /dev/null +++ b/quantum/process_keycode/process_haptic.c @@ -0,0 +1,150 @@ +/* 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/>. + */ +#include "haptic.h" +#include "process_haptic.h" +#include "quantum_keycodes.h" +#include "action_tapping.h" +#include "usb_device_state.h" + +__attribute__((weak)) bool get_haptic_enabled_key(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { +#ifdef NO_HAPTIC_MOD + case QK_MOD_TAP ... QK_MOD_TAP_MAX: + if (record->tap.count == 0) return false; + break; + case QK_LAYER_TAP_TOGGLE ... QK_LAYER_TAP_TOGGLE_MAX: + if (record->tap.count != TAPPING_TOGGLE) return false; + break; + case QK_LAYER_TAP ... QK_LAYER_TAP_MAX: + if (record->tap.count == 0) return false; + break; + case KC_LEFT_CTRL ... KC_RIGHT_GUI: + case QK_MOMENTARY ... QK_MOMENTARY_MAX: + case QK_LAYER_MOD ... QK_LAYER_MOD_MAX: +#endif +#ifdef NO_HAPTIC_FN + case KC_FN0 ... KC_FN31: +#endif +#ifdef NO_HAPTIC_ALPHA + case KC_A ... KC_Z: +#endif +#ifdef NO_HAPTIC_PUNCTUATION + case KC_ENTER: + case KC_ESCAPE: + case KC_BACKSPACE: + case KC_SPACE: + case KC_MINUS: + case KC_EQUAL: + case KC_LEFT_BRACKET: + case KC_RIGHT_BRACKET: + case KC_BACKSLASH: + case KC_NONUS_HASH: + case KC_SEMICOLON: + case KC_QUOTE: + case KC_GRAVE: + case KC_COMMA: + case KC_SLASH: + case KC_DOT: + case KC_NONUS_BACKSLASH: +#endif +#ifdef NO_HAPTIC_LOCKKEYS + case KC_CAPS_LOCK: + case KC_SCROLL_LOCK: + case KC_NUM_LOCK: +#endif +#ifdef NO_HAPTIC_NAV + case KC_PRINT_SCREEN: + case KC_PAUSE: + case KC_INSERT: + case KC_DELETE: + case KC_PAGE_DOWN: + case KC_PAGE_UP: + case KC_LEFT: + case KC_UP: + case KC_RIGHT: + case KC_DOWN: + case KC_END: + case KC_HOME: +#endif +#ifdef NO_HAPTIC_NUMERIC + case KC_1 ... KC_0: +#endif + return false; + } + return true; +} + +bool process_haptic(uint16_t keycode, keyrecord_t *record) { + if (record->event.pressed) { + switch (keycode) { + case HPT_ON: + haptic_enable(); + break; + case HPT_OFF: + haptic_disable(); + break; + case HPT_TOG: + haptic_toggle(); + break; + case HPT_RST: + haptic_reset(); + break; + case HPT_FBK: + haptic_feedback_toggle(); + break; + case HPT_BUZ: + haptic_buzz_toggle(); + break; + case HPT_MODI: + haptic_mode_increase(); + break; + case HPT_MODD: + haptic_mode_decrease(); + break; + case HPT_DWLI: + haptic_dwell_increase(); + break; + case HPT_DWLD: + haptic_dwell_decrease(); + break; + case HPT_CONT: + haptic_toggle_continuous(); + break; + case HPT_CONI: + haptic_cont_increase(); + break; + case HPT_COND: + haptic_cont_decrease(); + break; + } + } + + if (haptic_get_enable() && ((!HAPTIC_OFF_IN_LOW_POWER) || (usb_device_state == USB_DEVICE_STATE_CONFIGURED))) { + if (record->event.pressed) { + // keypress + if (haptic_get_feedback() < 2 && get_haptic_enabled_key(keycode, record)) { + haptic_play(); + } + } else { + // keyrelease + if (haptic_get_feedback() > 0 && get_haptic_enabled_key(keycode, record)) { + haptic_play(); + } + } + } + + return true; +} diff --git a/quantum/process_keycode/process_haptic.h b/quantum/process_keycode/process_haptic.h new file mode 100644 index 000000000000..6dbb0f014d06 --- /dev/null +++ b/quantum/process_keycode/process_haptic.h @@ -0,0 +1,21 @@ +/* Copyright 2021 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +#pragma once + +#include <stdbool.h> +#include "action.h" + +bool process_haptic(uint16_t keycode, keyrecord_t *record); diff --git a/quantum/process_keycode/process_key_override.c b/quantum/process_keycode/process_key_override.c new file mode 100644 index 000000000000..09b2725079ef --- /dev/null +++ b/quantum/process_keycode/process_key_override.c @@ -0,0 +1,518 @@ +/* + * Copyright 2021 Jonas Gessner + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "quantum.h" +#include "report.h" +#include "timer.h" +#include "process_key_override.h" + +#include <debug.h> + +#ifndef KEY_OVERRIDE_REPEAT_DELAY +# define KEY_OVERRIDE_REPEAT_DELAY 500 +#endif + +// For benchmarking the time it takes to call process_key_override on every key press (needs keyboard debugging enabled as well) +// #define BENCH_KEY_OVERRIDE + +// For debug output (needs keyboard debugging enabled as well) +// #define DEBUG_KEY_OVERRIDE + +#ifdef DEBUG_KEY_OVERRIDE +# define key_override_printf dprintf +#else +# define key_override_printf(str, ...) \ + {} +#endif + +// Helpers + +// Private functions implemented elsewhere in qmk/tmk +extern uint8_t extract_mod_bits(uint16_t code); +extern void set_weak_override_mods(uint8_t mods); +extern void clear_weak_override_mods(void); +extern void set_suppressed_override_mods(uint8_t mods); +extern void clear_suppressed_override_mods(void); + +static uint16_t clear_mods_from(uint16_t keycode) { + switch (keycode) { + case QK_MODS ... QK_MODS_MAX: + break; + default: + return keycode; + } + + static const uint16_t all_mods = QK_LCTL | QK_LSFT | QK_LALT | QK_LGUI | QK_RCTL | QK_RSFT | QK_RALT | QK_RGUI; + + return (keycode & ~(all_mods)); +} + +// Internal variables +static const key_override_t *active_override = NULL; +static bool active_override_trigger_is_down = false; + +// Used to keep track of what non-modifier key was last pressed down. We never want to activate an override for a trigger key that is not the last non-mod key that was pressed down. OSes internally completely unregister a key that is held when a different key is held down after. We want to respect this here. +static uint16_t last_key_down = 0; +// When was the last key pressed down? +static uint32_t last_key_down_time = 0; + +// What timestamp are we comparing to when waiting to register a deferred key? +static uint32_t defer_reference_time = 0; +// What delay should pass until deferred key is registered? +static uint32_t defer_delay = 0; + +// Holds the keycode that should be registered at a later time, in order to not get false key presses +static uint16_t deferred_register = 0; + +// TODO: in future maybe save in EEPROM? +static bool enabled = true; + +// Public variables +__attribute__((weak)) const key_override_t **key_overrides = NULL; + +// Forward decls +static const key_override_t *clear_active_override(const bool allow_reregister); + +void key_override_on(void) { + enabled = true; + key_override_printf("Key override ON\n"); +} + +void key_override_off(void) { + enabled = false; + clear_active_override(false); + key_override_printf("Key override OFF\n"); +} + +void key_override_toggle(void) { + if (key_override_is_enabled()) { + key_override_off(); + } else { + key_override_on(); + } +} + +bool key_override_is_enabled(void) { return enabled; } + +// Returns whether the modifiers that are pressed are such that the override should activate +static bool key_override_matches_active_modifiers(const key_override_t *override, const uint8_t mods) { + // Check that negative keys pass + if ((override->negative_mod_mask & mods) != 0) { + return false; + } + + // Immediately return true if the override requires no mods down + if (override->trigger_mods == 0) { + return true; + } + + if ((override->options & ko_option_one_mod) != 0) { + // At least one of the trigger modifiers must be down + return (override->trigger_mods & mods) != 0; + } else { + // All trigger modifiers must be down, but each mod can be active on either side (if both sides are specified). + + // Which mods, regardless of side, are required? + uint8_t one_sided_required_mods = (override->trigger_mods & 0b1111) | (override->trigger_mods >> 4); + + // Which of the required modifiers are active? + uint8_t active_required_mods = override->trigger_mods & mods; + + // Move the active requird mods to one side + uint8_t one_sided_active_required_mods = (active_required_mods & 0b1111) | (active_required_mods >> 4); + + // Check that there is a full match between the required one-sided mods and active required one sided mods + return one_sided_active_required_mods == one_sided_required_mods; + } + + return false; +} + +static void schedule_deferred_register(const uint16_t keycode) { + if (timer_elapsed32(last_key_down_time) < KEY_OVERRIDE_REPEAT_DELAY) { + // Defer until KEY_OVERRIDE_REPEAT_DELAY has passed since the trigger key was pressed down. This emulates the behavior as holding down a key x, then holding down shift shortly after. Usually the shifted key X is not immediately produced, but rather a 'key repeat delay' passes before any repeated character is output. + defer_reference_time = last_key_down_time; + defer_delay = KEY_OVERRIDE_REPEAT_DELAY; + } else { + // Wait a very short time when a modifier event triggers the override to avoid false activations when e.g. a modifier is pressed just before a key is released (with the intention of pairing the modifier with a different key), or a modifier is lifted shortly before the trigger key is lifted. Operating systems by default reject modifier-events that happen very close to a non-modifier event. + defer_reference_time = timer_read32(); + defer_delay = 50; // 50ms + } + deferred_register = keycode; +} + +const key_override_t *clear_active_override(const bool allow_reregister) { + if (active_override == NULL) { + return NULL; + } + + key_override_printf("Deactivating override\n"); + + deferred_register = 0; + + // Clear the suppressed mods + clear_suppressed_override_mods(); + + // Unregister the replacement. First remove the weak override mods + clear_weak_override_mods(); + + const key_override_t *const old = active_override; + + const uint8_t mod_free_replacement = clear_mods_from(active_override->replacement); + + bool unregister_replacement = mod_free_replacement != KC_NO && // KC_NO is never registered + mod_free_replacement < SAFE_RANGE; // Custom keycodes are never registered + + // Try firing the custom handler + if (active_override->custom_action != NULL) { + unregister_replacement &= active_override->custom_action(false, active_override->context); + } + + // Then unregister the mod-free replacement key if desired + if (unregister_replacement) { + if (IS_KEY(mod_free_replacement)) { + del_key(mod_free_replacement); + } else { + key_override_printf("NOT KEY 1\n"); + send_keyboard_report(); + unregister_code(mod_free_replacement); + } + } + + const uint16_t trigger = active_override->trigger; + + const bool reregister_trigger = allow_reregister && // Check if allowed from caller + (active_override->options & ko_option_no_reregister_trigger) == 0 && // Check if override allows + active_override_trigger_is_down && // Check if trigger is even down + trigger != KC_NO && // KC_NO is never registered + trigger < SAFE_RANGE; // A custom keycode should not be registered + + // Optionally re-register the trigger if it is still down + if (reregister_trigger) { + key_override_printf("Re-registering trigger deferred: %u\n", trigger); + + // This will always be a modifier event, so defer always + schedule_deferred_register(trigger); + } + + send_keyboard_report(); + + active_override = NULL; + active_override_trigger_is_down = false; + + return old; +} + +/** Checks if the key event is an allowed activation event for the provided override. Does not check things like whether the correct mods or correct trigger key is down. */ +static bool check_activation_event(const key_override_t *override, const bool key_down, const bool is_mod) { + ko_option_t options = override->options; + + if ((options & ko_options_all_activations) == 0) { + // No activation option provided at all. This is wrong, but let's assume the default activations (ko_options_all_activations) were meant... + options = ko_options_all_activations; + } + + if (is_mod) { + if (key_down) { + return (options & ko_option_activation_required_mod_down) != 0; + } else { + return (options & ko_option_activation_negative_mod_up) != 0; + } + } else { + if (key_down) { + return (options & ko_option_activation_trigger_down) != 0; + } else { + return false; + } + } +} + +/** Iterates through the list of key overrides and tries activating each, until it finds one that activates or reaches the end of overrides. Returns true if the key action for `keycode` should be sent */ +static bool try_activating_override(const uint16_t keycode, const uint8_t layer, const bool key_down, const bool is_mod, const uint8_t active_mods, bool *activated) { + if (key_overrides == NULL) { + return true; + } + + for (uint8_t i = 0;; i++) { + const key_override_t *const override = key_overrides[i]; + + // End of array + if (override == NULL) { + break; + } + + // Fast, but not full mods check. Most key presses will not have any mods down, and most overrides will require mods. Hence here we filter overrides that require mods to be down while no mods are down + if (active_mods == 0 && override->trigger_mods != 0) { + key_override_printf("Not activating override: Modifiers don't match\n"); + continue; + } + + // Check layer + if ((override->layers & (1 << layer)) == 0) { + key_override_printf("Not activating override: Not set to activate on pressed layer\n"); + continue; + } + + // Check allowed activation events + if (!check_activation_event(override, key_down, is_mod)) { + key_override_printf("Not activating override: Activation event not allowed\n"); + continue; + } + + const bool is_trigger = override->trigger == keycode; + + // Check if trigger lifted. This is a small optimization in order to skip the remaining checks + if (is_trigger && !key_down) { + key_override_printf("Not activating override: Trigger lifted\n"); + continue; + } + + // If the trigger is KC_NO it means 'no key', so only the required modifiers need to be down. + const bool no_trigger = override->trigger == KC_NO; + + // Check if aleady active + if (override == active_override) { + key_override_printf("Not activating override: Alerady actived\n"); + continue; + } + + // Check if enabled + if (override->enabled != NULL && !((*(override->enabled) & 1))) { + key_override_printf("Not activating override: Not enabled\n"); + continue; + } + + // Check mods precisely + if (!key_override_matches_active_modifiers(override, active_mods)) { + key_override_printf("Not activating override: Modifiers don't match\n"); + continue; + } + + // Check if trigger key is down. + const bool trigger_down = is_trigger && key_down; + + // At this point, all requirements for activation are checked, except whether the trigger key is pressed. Now we check if the required trigger is down + // If no trigger key is required, yes. + // If the trigger was just pressed, yes. + // If the last non-mod key that was pressed down is the trigger key, yes. + bool should_activate = no_trigger || trigger_down || last_key_down == override->trigger; + + if (!should_activate) { + key_override_printf("Not activating override. Trigger not down\n"); + continue; + } + + key_override_printf("Activating override\n"); + + clear_active_override(false); + + active_override = override; + active_override_trigger_is_down = true; + + set_suppressed_override_mods(override->suppressed_mods); + + if (!trigger_down && !no_trigger) { + // When activating a key override the trigger is is always unregistered. In the case where the key that newly pressed is not the trigger key, we have to explicitly remove the trigger key from the keyboard report. If the trigger was just pressed down we simply suppress the event which also has the effect of the trigger key not being registered in the keyboard report. + if (IS_KEY(override->trigger)) { + del_key(override->trigger); + } else { + unregister_code(override->trigger); + } + } + + const uint16_t mod_free_replacement = clear_mods_from(override->replacement); + + bool register_replacement = mod_free_replacement != KC_NO && // KC_NO is never registered + mod_free_replacement < SAFE_RANGE; // Custom keycodes are never registered + + // Try firing the custom handler + if (override->custom_action != NULL) { + register_replacement &= override->custom_action(true, override->context); + } + + if (register_replacement) { + const uint8_t override_mods = extract_mod_bits(override->replacement); + set_weak_override_mods(override_mods); + + // If this is a modifier event that activates the key override we _always_ defer the actual full activation of the override + if (is_mod) { + key_override_printf("Deferring register replacement key\n"); + schedule_deferred_register(mod_free_replacement); + send_keyboard_report(); + } else { + if (IS_KEY(mod_free_replacement)) { + add_key(mod_free_replacement); + } else { + key_override_printf("NOT KEY 2\n"); + send_keyboard_report(); + // On macOS there seems to be a race condition when it comes to the keyboard report and consumer keycodes. It seems the OS may recognize a consumer keycode before an updated keyboard report, even if the keyboard report is actually sent before the consumer key. I assume it is some sort of race condition because it happens infrequently and very irregularly. Waiting for about at least 10ms between sending the keyboard report and sending the consumer code has shown to fix this. + wait_ms(10); + register_code(mod_free_replacement); + } + } + } else { + // If not registering the replacement key send keyboard report to update the unregistered keys. + send_keyboard_report(); + } + + *activated = true; + + // If the trigger is down, suppress the event so that it does not get added to the keyboard report. + return !trigger_down; + } + + *activated = false; + + return true; +} + +void key_override_task(void) { + if (deferred_register == 0) { + return; + } + + if (timer_elapsed32(defer_reference_time) >= defer_delay) { + key_override_printf("Registering deferred key\n"); + register_code16(deferred_register); + deferred_register = 0; + defer_reference_time = 0; + defer_delay = 0; + } +} + +bool process_key_override(const uint16_t keycode, const keyrecord_t *const record) { +#ifdef BENCH_KEY_OVERRIDE + uint16_t start = timer_read(); +#endif + + const bool key_down = record->event.pressed; + const bool is_mod = IS_MOD(keycode); + + if (key_down) { + switch (keycode) { + case KEY_OVERRIDE_TOGGLE: + key_override_toggle(); + return false; + + case KEY_OVERRIDE_ON: + key_override_on(); + return false; + + case KEY_OVERRIDE_OFF: + key_override_off(); + return false; + + default: + break; + } + } + + if (!enabled) { + return true; + } + + uint8_t effective_mods = get_mods(); + +#ifdef KEY_OVERRIDE_INCLUDE_WEAK_MODS + effective_mods |= get_weak_mods(); +#endif + +#ifndef NO_ACTION_ONESHOT + // Locked one shot mods are added to get_mods(), I think (why??) while oneshot mods are in get_oneshot_mods(). Still OR with get_locked_oneshot_mods because that's where those mods _should_ be saved. + effective_mods |= get_oneshot_locked_mods() | get_oneshot_mods(); +#endif + + if (is_mod) { + // The mods returned from get_mods() will be updated with this new event _after_ this code runs. Hence we manually update the effective mods here to really know the effective mods. + if (key_down) { + effective_mods |= MOD_BIT(keycode); + } else { + effective_mods &= ~MOD_BIT(keycode); + } + } else { + if (key_down) { + last_key_down = keycode; + last_key_down_time = timer_read32(); + deferred_register = 0; + } + + // The last key that was pressed was just released. No more keys are therefore sending input + if (!key_down && keycode == last_key_down) { + last_key_down = 0; + last_key_down_time = 0; + // We also cancel any deferred registers because, again, no keys are sending any input. Only the last key that is pressed creates an input – this key was just lifted. + deferred_register = 0; + } + } + + key_override_printf("key down: %u keycode: %u is mod: %u effective mods: %u\n", key_down, keycode, is_mod, effective_mods); + + bool send_key_action = true; + bool activated = false; + + // Non-mod key up events never activate a key override + if (is_mod || key_down) { + // Get the exact layer that was hit. It will be cached at this point + const uint8_t layer = read_source_layers_cache(record->event.key); + + // Use blocked to ensure the same override is not activated again immediately after it is deactivated + send_key_action = try_activating_override(keycode, layer, key_down, is_mod, effective_mods, &activated); + + if (!send_key_action) { + send_keyboard_report(); + } + } + + if (!activated && active_override != NULL) { + if (is_mod) { + // Check if necessary modifier of current override goes up or a negative mod goes down + if (!key_override_matches_active_modifiers(active_override, effective_mods)) { + key_override_printf("Deactivating override because necessary modifier lifted or negative mod pressed\n"); + clear_active_override(true); + } + } else { + // Check if trigger of current override goes up or if override does not allow additional keys to be down and another key goes down + const bool is_trigger = keycode == active_override->trigger; + bool should_deactivate = false; + + // Check if trigger key lifted + if (is_trigger && !key_down) { + should_deactivate = true; + active_override_trigger_is_down = false; + key_override_printf("Deactivating override because trigger key up\n"); + } + + // Check if another key was pressed + if (key_down && (active_override->options & ko_option_no_unregister_on_other_key_down) == 0) { + should_deactivate = true; + key_override_printf("Deactivating override because another key was pressed\n"); + } + + if (should_deactivate) { + clear_active_override(false); + } + } + } + +#ifdef BENCH_KEY_OVERRIDE + uint16_t elapsed = timer_elapsed(start); + + dprintf("Processing key overrides took: %u ms\n", elapsed); +#endif + + return send_key_action; +} diff --git a/quantum/process_keycode/process_key_override.h b/quantum/process_keycode/process_key_override.h new file mode 100644 index 000000000000..fd76f297a807 --- /dev/null +++ b/quantum/process_keycode/process_key_override.h @@ -0,0 +1,153 @@ +/* + * Copyright 2021 Jonas Gessner + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should 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 <stddef.h> +#include <stdint.h> + +#include "action_layer.h" + +/** + * Key overrides allow you to send a different key-modifier combination or perform a custom action when a certain modifier-key combination is pressed. + * + * For example, you may configure a key override to send the delete key when shift + backspace are pressed together, or that your volume keys become screen brightness keys when holding ctrl. The possibilities are quite vast and the documentation contains a few examples for inspiration. + * + * See the documentation and examples here: https://docs.qmk.fm/#/feature_key_overrides + */ + +/** Bitfield with various options controlling the behavior of a key override. */ +typedef enum { + /** Allow activating when the trigger key is pressed down. */ + ko_option_activation_trigger_down = (1 << 0), + /** Allow activating when a necessary modifier is pressed down. */ + ko_option_activation_required_mod_down = (1 << 1), + /** Allow activating when a negative modifier is released. */ + ko_option_activation_negative_mod_up = (1 << 2), + + ko_options_all_activations = ko_option_activation_negative_mod_up | ko_option_activation_required_mod_down | ko_option_activation_trigger_down, + + /** If set, any of the modifiers in trigger_mods will be enough to activate the override (logical OR of modifiers). If not set, all the modifiers in trigger_mods have to be pressed (logical AND of modifiers). */ + ko_option_one_mod = (1 << 3), + + /** If set, the trigger key will never be registered again after the override is deactivated. */ + ko_option_no_reregister_trigger = (1 << 4), + + /** If set, the override will not deactivate when another key is pressed down. Use only if you really know you need this. */ + ko_option_no_unregister_on_other_key_down = (1 << 5), + + /** The default options used by the ko_make_xxx functions. */ + ko_options_default = ko_options_all_activations, +} ko_option_t; + +/** Defines a single key override */ +typedef struct { + // The non-modifier keycode that triggers the override. This keycode, and the necessary modifiers (trigger_mods) must be pressed to activate this override. Set this to the keycode of the key that should activate the override. Set to KC_NO to require only the necessary modifiers to be pressed and no non-modifier. + uint16_t trigger; + + // Which mods need to be down for activation. If both sides of a modifier are set (e.g. left ctrl and right ctrl) then only one is required to be pressed (e.g. left ctrl suffices). Use the MOD_MASK_XXX and MOD_BIT() macros for this. + uint8_t trigger_mods; + + // This is a BITMASK (!), defining which layers this override applies to. To use this override on layer i set the ith bit (1 << i). + layer_state_t layers; + + // Which modifiers cannot be down. It must hold that (active_mods & negative_mod_mask) == 0, otherwise the key override will not be activated. An active override will be deactivated once this is no longer true. + uint8_t negative_mod_mask; + + // Modifiers to 'suppress' while the override is active. To suppress a modifier means that even though the modifier key is held down, the host OS sees the modifier as not pressed. Can be used to suppress the trigger modifiers, as a trivial example. + uint8_t suppressed_mods; + + // The complex keycode to send as replacement when this override is triggered. This can be a simple keycode, a key-modifier combination (e.g. C(KC_A)), or KC_NO (to register no replacement keycode). Use in combination with suppressed_mods to get the correct modifiers to be sent. + uint16_t replacement; + + // Options controlling the behavior of the override, such as what actions are allowed to activate the override. + ko_option_t options; + + // If not NULL, this function will be called right before the replacement key is registered, along with the provided context and a flag indicating whether the override was activated or deactivated. This function allows you to run some custom actions for specific key overrides. If you return `false`, the replacement key is not registered/unregistered as it would normally. Return `true` to register and unregister the override normally. + bool (*custom_action)(bool activated, void *context); + + // A context that will be passed to the custom action function. + void *context; + + // If this points to false this override will not be used. Set to NULL to always have this override enabled. + bool *enabled; +} key_override_t; + +/** Define this as a null-terminated array of pointers to key overrides. These key overrides will be used by qmk. */ +extern const key_override_t **key_overrides; + +/** Turns key overrides on */ +void key_override_on(void); + +/** Turns key overrides off */ +void key_override_off(void); + +/** Toggles key overrides on */ +void key_override_toggle(void); + +/** Returns whether key overrides are enabled */ +bool key_override_is_enabled(void); + +/** Handling of key overrides and its implemented keycodes */ +bool process_key_override(const uint16_t keycode, const keyrecord_t *const record); + +/** Perform any deferred keys */ +void key_override_task(void); + +/** + * Preferrably use these macros to create key overrides. They fix many of the options to a standard setting that should satisfy most basic use-cases. Only directly create a key_override_t struct when you really need to. + */ + +// clang-format off + +/** + * Convenience initializer to create a basic key override. Activates the override on all layers. + */ +#define ko_make_basic(trigger_mods, trigger_key, replacement_key) \ + ko_make_with_layers(trigger_mods, trigger_key, replacement_key, ~0) + +/** + * Convenience initializer to create a basic key override. Provide a bitmap (of type layer_state_t) with the bits set for each layer on which the override should activate. + */ +#define ko_make_with_layers(trigger_mods, trigger_key, replacement_key, layers) \ + ko_make_with_layers_and_negmods(trigger_mods, trigger_key, replacement_key, layers, 0) + +/** + * Convenience initializer to create a basic key override. Provide a bitmap with the bits set for each layer on which the override should activate. Also provide a negative modifier mask, that is used to define which modifiers may not be pressed. + */ +#define ko_make_with_layers_and_negmods(trigger_mods, trigger_key, replacement_key, layers, negative_mask) \ + ko_make_with_layers_negmods_and_options(trigger_mods, trigger_key, replacement_key, layers, negative_mask, ko_options_default) + + /** + * Convenience initializer to create a basic key override. Provide a bitmap with the bits set for each layer on which the override should activate. Also provide a negative modifier mask, that is used to define which modifiers may not be pressed. Provide options for additional control of the behavior of the override. + */ +#define ko_make_with_layers_negmods_and_options(trigger_mods_, trigger_key, replacement_key, layer_mask, negative_mask, options_) \ + ((const key_override_t){ \ + .trigger_mods = (trigger_mods_), \ + .layers = (layer_mask), \ + .suppressed_mods = (trigger_mods_), \ + .options = (options_), \ + .negative_mod_mask = (negative_mask), \ + .custom_action = NULL, \ + .context = NULL, \ + .trigger = (trigger_key), \ + .replacement = (replacement_key), \ + .enabled = NULL \ + }) + +// clang-format on diff --git a/quantum/process_keycode/process_magic.c b/quantum/process_keycode/process_magic.c index 44dd5f057955..d5cff4f12aa9 100644 --- a/quantum/process_keycode/process_magic.c +++ b/quantum/process_keycode/process_magic.c @@ -43,6 +43,7 @@ bool process_magic(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case MAGIC_SWAP_CONTROL_CAPSLOCK ... MAGIC_TOGGLE_ALT_GUI: case MAGIC_SWAP_LCTL_LGUI ... MAGIC_EE_HANDS_RIGHT: + case MAGIC_TOGGLE_GUI: /* keymap config */ keymap_config.raw = eeconfig_read_keymap(); switch (keycode) { @@ -164,6 +165,9 @@ bool process_magic(uint16_t keycode, keyrecord_t *record) { case MAGIC_EE_HANDS_RIGHT: eeconfig_update_handedness(false); break; + case MAGIC_TOGGLE_GUI: + keymap_config.no_gui = !keymap_config.no_gui; + break; } eeconfig_update_keymap(keymap_config.raw); diff --git a/quantum/process_keycode/process_music.c b/quantum/process_keycode/process_music.c index eb06be96c292..6822c5e28912 100644 --- a/quantum/process_keycode/process_music.c +++ b/quantum/process_keycode/process_music.c @@ -146,7 +146,7 @@ bool process_music(uint16_t keycode, keyrecord_t *record) { if (music_activated || midi_activated) { if (record->event.pressed) { - if (keycode == KC_LCTL) { // Start recording + if (keycode == KC_LEFT_CTRL) { // Start recording music_all_notes_off(); music_sequence_recording = true; music_sequence_recorded = false; @@ -155,7 +155,7 @@ bool process_music(uint16_t keycode, keyrecord_t *record) { return false; } - if (keycode == KC_LALT) { // Stop recording/playing + if (keycode == KC_LEFT_ALT) { // Stop recording/playing music_all_notes_off(); if (music_sequence_recording) { // was recording music_sequence_recorded = true; @@ -165,7 +165,7 @@ bool process_music(uint16_t keycode, keyrecord_t *record) { return false; } - if (keycode == KC_LGUI && music_sequence_recorded) { // Start playing + if (keycode == KC_LEFT_GUI && music_sequence_recorded) { // Start playing music_all_notes_off(); music_sequence_recording = false; music_sequence_playing = true; @@ -296,7 +296,7 @@ void music_mode_cycle(void) { # endif } -void matrix_scan_music(void) { +void music_task(void) { if (music_sequence_playing) { if ((music_sequence_timer == 0) || (timer_elapsed(music_sequence_timer) > music_sequence_interval)) { music_sequence_timer = timer_read(); diff --git a/quantum/process_keycode/process_music.h b/quantum/process_keycode/process_music.h index 01014aa6c216..e275cd9d26f3 100644 --- a/quantum/process_keycode/process_music.h +++ b/quantum/process_keycode/process_music.h @@ -44,7 +44,7 @@ void music_scale_user(void); void music_all_notes_off(void); void music_mode_cycle(void); -void matrix_scan_music(void); +void music_task(void); bool music_mask(uint16_t keycode); bool music_mask_kb(uint16_t keycode); diff --git a/quantum/process_keycode/process_printer.c b/quantum/process_keycode/process_printer.c index 7c5e4169a604..82528cc680db 100644 --- a/quantum/process_keycode/process_printer.c +++ b/quantum/process_keycode/process_printer.c @@ -31,7 +31,7 @@ uint8_t shifted_numbers[10] = {0x21, 0x40, 0x23, 0x24, 0x25, 0x5E, 0x26, 0x2A, 0 // uint8_t keycode_to_ascii[0xFF][2]; -// keycode_to_ascii[KC_MINS] = {0x2D, 0x5F}; +// keycode_to_ascii[KC_MINUS] = {0x2D, 0x5F}; void print_char(char c) { USB_Disable(); @@ -90,8 +90,8 @@ bool process_printer(uint16_t keycode, keyrecord_t *record) { case KC_PIPE: case KC_TILD: keycode &= 0xFF; - case KC_LSFT: - case KC_RSFT: + case KC_LEFT_SHIFT: + case KC_RIGHT_SHIFT: if (record->event.pressed) { character_shift++; } else { @@ -107,13 +107,13 @@ bool process_printer(uint16_t keycode, keyrecord_t *record) { print_box_string("This is a line of text!"); } return false; - case KC_ESC: + case KC_ESCAPE: if (record->event.pressed) { print_char(0x1B); } return false; break; - case KC_SPC: + case KC_SPACE: if (record->event.pressed) { print_char(0x20); } @@ -139,7 +139,7 @@ bool process_printer(uint16_t keycode, keyrecord_t *record) { } return false; break; - case KC_ENT: + case KC_ENTER: if (record->event.pressed) { if (character_shift) { print_char(0x0C); @@ -149,7 +149,7 @@ bool process_printer(uint16_t keycode, keyrecord_t *record) { } return false; break; - case KC_BSPC: + case KC_BACKSPACE: if (record->event.pressed) { if (character_shift) { print_char(0x18); @@ -169,7 +169,7 @@ bool process_printer(uint16_t keycode, keyrecord_t *record) { } return false; break; - case KC_COMM: + case KC_COMMA: if (record->event.pressed) { if (character_shift) { print_char(0x3C); @@ -179,7 +179,7 @@ bool process_printer(uint16_t keycode, keyrecord_t *record) { } return false; break; - case KC_SLSH: + case KC_SLASH: if (record->event.pressed) { if (character_shift) { print_char(0x3F); @@ -189,7 +189,7 @@ bool process_printer(uint16_t keycode, keyrecord_t *record) { } return false; break; - case KC_QUOT: + case KC_QUOTE: if (record->event.pressed) { if (character_shift) { print_char(0x22); @@ -199,7 +199,7 @@ bool process_printer(uint16_t keycode, keyrecord_t *record) { } return false; break; - case KC_GRV: + case KC_GRAVE: if (record->event.pressed) { if (character_shift) { print_char(0x7E); @@ -209,7 +209,7 @@ bool process_printer(uint16_t keycode, keyrecord_t *record) { } return false; break; - case KC_MINS: + case KC_MINUS: if (record->event.pressed) { if (character_shift) { print_char(0x5F); @@ -219,7 +219,7 @@ bool process_printer(uint16_t keycode, keyrecord_t *record) { } return false; break; - case KC_EQL: + case KC_EQUAL: if (record->event.pressed) { if (character_shift) { print_char(0x2B); @@ -229,7 +229,7 @@ bool process_printer(uint16_t keycode, keyrecord_t *record) { } return false; break; - case KC_LBRC: + case KC_LEFT_BRACKET: if (record->event.pressed) { if (character_shift) { print_char(0x7B); @@ -239,7 +239,7 @@ bool process_printer(uint16_t keycode, keyrecord_t *record) { } return false; break; - case KC_RBRC: + case KC_RIGHT_BRACKET: if (record->event.pressed) { if (character_shift) { print_char(0x7D); @@ -249,7 +249,7 @@ bool process_printer(uint16_t keycode, keyrecord_t *record) { } return false; break; - case KC_BSLS: + case KC_BACKSLASH: if (record->event.pressed) { if (character_shift) { print_char(0x7C); diff --git a/quantum/process_keycode/process_printer_bb.c b/quantum/process_keycode/process_printer_bb.c index e482d82591aa..6c91bd27ef79 100644 --- a/quantum/process_keycode/process_printer_bb.c +++ b/quantum/process_keycode/process_printer_bb.c @@ -45,7 +45,7 @@ uint8_t shifted_numbers[10] = {0x21, 0x40, 0x23, 0x24, 0x25, 0x5E, 0x26, 0x2A, 0 // uint8_t keycode_to_ascii[0xFF][2]; -// keycode_to_ascii[KC_MINS] = {0x2D, 0x5F}; +// keycode_to_ascii[KC_MINUS] = {0x2D, 0x5F}; void print_char(char c) { uint8_t b = 8; @@ -84,8 +84,8 @@ bool process_printer(uint16_t keycode, keyrecord_t *record) { case KC_PIPE: case KC_TILD: keycode &= 0xFF; - case KC_LSFT: - case KC_RSFT: + case KC_LEFT_SHIFT: + case KC_RIGHT_SHIFT: if (record->event.pressed) { character_shift++; } else { @@ -101,13 +101,13 @@ bool process_printer(uint16_t keycode, keyrecord_t *record) { print_string("This is a line of text!\n\n\n"); } return false; - case KC_ESC: + case KC_ESCAPE: if (record->event.pressed) { print_char(0x1B); } return false; break; - case KC_SPC: + case KC_SPACE: if (record->event.pressed) { print_char(0x20); } @@ -133,7 +133,7 @@ bool process_printer(uint16_t keycode, keyrecord_t *record) { } return false; break; - case KC_ENT: + case KC_ENTER: if (record->event.pressed) { if (character_shift) { print_char(0x0C); @@ -143,7 +143,7 @@ bool process_printer(uint16_t keycode, keyrecord_t *record) { } return false; break; - case KC_BSPC: + case KC_BACKSPACE: if (record->event.pressed) { if (character_shift) { print_char(0x18); @@ -163,7 +163,7 @@ bool process_printer(uint16_t keycode, keyrecord_t *record) { } return false; break; - case KC_COMM: + case KC_COMMA: if (record->event.pressed) { if (character_shift) { print_char(0x3C); @@ -173,7 +173,7 @@ bool process_printer(uint16_t keycode, keyrecord_t *record) { } return false; break; - case KC_SLSH: + case KC_SLASH: if (record->event.pressed) { if (character_shift) { print_char(0x3F); @@ -183,7 +183,7 @@ bool process_printer(uint16_t keycode, keyrecord_t *record) { } return false; break; - case KC_QUOT: + case KC_QUOTE: if (record->event.pressed) { if (character_shift) { print_char(0x22); @@ -193,7 +193,7 @@ bool process_printer(uint16_t keycode, keyrecord_t *record) { } return false; break; - case KC_GRV: + case KC_GRAVE: if (record->event.pressed) { if (character_shift) { print_char(0x7E); @@ -203,7 +203,7 @@ bool process_printer(uint16_t keycode, keyrecord_t *record) { } return false; break; - case KC_MINS: + case KC_MINUS: if (record->event.pressed) { if (character_shift) { print_char(0x5F); @@ -213,7 +213,7 @@ bool process_printer(uint16_t keycode, keyrecord_t *record) { } return false; break; - case KC_EQL: + case KC_EQUAL: if (record->event.pressed) { if (character_shift) { print_char(0x2B); @@ -223,7 +223,7 @@ bool process_printer(uint16_t keycode, keyrecord_t *record) { } return false; break; - case KC_LBRC: + case KC_LEFT_BRACKET: if (record->event.pressed) { if (character_shift) { print_char(0x7B); @@ -233,7 +233,7 @@ bool process_printer(uint16_t keycode, keyrecord_t *record) { } return false; break; - case KC_RBRC: + case KC_RIGHT_BRACKET: if (record->event.pressed) { if (character_shift) { print_char(0x7D); @@ -243,7 +243,7 @@ bool process_printer(uint16_t keycode, keyrecord_t *record) { } return false; break; - case KC_BSLS: + case KC_BACKSLASH: if (record->event.pressed) { if (character_shift) { print_char(0x7C); diff --git a/quantum/process_keycode/process_programmable_button.c b/quantum/process_keycode/process_programmable_button.c new file mode 100644 index 000000000000..c6e77faacc0e --- /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 000000000000..47c6ce561440 --- /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_rgb.c b/quantum/process_keycode/process_rgb.c index 167c0c03c9e0..69853cd5c4d9 100644 --- a/quantum/process_keycode/process_rgb.c +++ b/quantum/process_keycode/process_rgb.c @@ -14,7 +14,6 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ #include "process_rgb.h" -#include "rgb.h" typedef void (*rgb_func_pointer)(void); @@ -162,7 +161,7 @@ bool process_rgb(const uint16_t keycode, const keyrecord_t *record) { #if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES) && defined(RGBLIGHT_EFFECT_BREATHING) handleKeycodeRGBMode(RGBLIGHT_MODE_BREATHING, RGBLIGHT_MODE_BREATHING_end); #endif -#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES) && !defined(DISABLE_RGB_MATRIX_BREATHING) +#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES) && defined(ENABLE_RGB_MATRIX_BREATHING) rgb_matrix_mode(RGB_MATRIX_BREATHING); #endif return false; @@ -170,7 +169,7 @@ bool process_rgb(const uint16_t keycode, const keyrecord_t *record) { #if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES) && defined(RGBLIGHT_EFFECT_RAINBOW_MOOD) handleKeycodeRGBMode(RGBLIGHT_MODE_RAINBOW_MOOD, RGBLIGHT_MODE_RAINBOW_MOOD_end); #endif -#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES) && !defined(DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT) +#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES) && defined(ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT) rgb_matrix_mode(RGB_MATRIX_CYCLE_LEFT_RIGHT); #endif return false; @@ -178,7 +177,7 @@ bool process_rgb(const uint16_t keycode, const keyrecord_t *record) { #if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES) && defined(RGBLIGHT_EFFECT_RAINBOW_SWIRL) handleKeycodeRGBMode(RGBLIGHT_MODE_RAINBOW_SWIRL, RGBLIGHT_MODE_RAINBOW_SWIRL_end); #endif -#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES) && !defined(DISABLE_RGB_MATRIX_CYCLE_PINWHEEL) +#if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES) && defined(ENABLE_RGB_MATRIX_CYCLE_PINWHEEL) rgb_matrix_mode(RGB_MATRIX_CYCLE_PINWHEEL); #endif return false; diff --git a/quantum/process_keycode/process_space_cadet.c b/quantum/process_keycode/process_space_cadet.c index f99db2a87b9e..46b2648c35e7 100644 --- a/quantum/process_keycode/process_space_cadet.c +++ b/quantum/process_keycode/process_space_cadet.c @@ -27,53 +27,53 @@ // Shift / Enter setup #ifndef SFTENT_KEY -# define SFTENT_KEY KC_ENT +# define SFTENT_KEY KC_ENTER #endif #ifdef DISABLE_SPACE_CADET_MODIFIER # ifndef LSPO_MOD -# define LSPO_MOD KC_TRNS +# define LSPO_MOD KC_TRANSPARENT # endif # ifndef RSPC_MOD -# define RSPC_MOD KC_TRNS +# define RSPC_MOD KC_TRANSPARENT # endif #else # ifndef LSPO_MOD -# define LSPO_MOD KC_LSFT +# define LSPO_MOD KC_LEFT_SHIFT # endif # ifndef RSPC_MOD -# define RSPC_MOD KC_RSFT +# define RSPC_MOD KC_RIGHT_SHIFT # endif #endif // ********************************************************** // Shift / paren setup #ifndef LSPO_KEYS -# define LSPO_KEYS KC_LSFT, LSPO_MOD, LSPO_KEY +# define LSPO_KEYS KC_LEFT_SHIFT, LSPO_MOD, LSPO_KEY #endif #ifndef RSPC_KEYS -# define RSPC_KEYS KC_RSFT, RSPC_MOD, RSPC_KEY +# define RSPC_KEYS KC_RIGHT_SHIFT, RSPC_MOD, RSPC_KEY #endif // Control / paren setup #ifndef LCPO_KEYS -# define LCPO_KEYS KC_LCTL, KC_LSFT, KC_9 +# define LCPO_KEYS KC_LEFT_CTRL, KC_LEFT_SHIFT, KC_9 #endif #ifndef RCPC_KEYS -# define RCPC_KEYS KC_RCTL, KC_RSFT, KC_0 +# define RCPC_KEYS KC_RIGHT_CTRL, KC_RIGHT_SHIFT, KC_0 #endif // Alt / paren setup #ifndef LAPO_KEYS -# define LAPO_KEYS KC_LALT, KC_LSFT, KC_9 +# define LAPO_KEYS KC_LEFT_ALT, KC_LEFT_SHIFT, KC_9 #endif #ifndef RAPC_KEYS -# define RAPC_KEYS KC_RALT, KC_RSFT, KC_0 +# define RAPC_KEYS KC_RIGHT_ALT, KC_RIGHT_SHIFT, KC_0 #endif // Shift / Enter setup #ifndef SFTENT_KEYS -# define SFTENT_KEYS KC_RSFT, KC_TRNS, SFTENT_KEY +# define SFTENT_KEYS KC_RIGHT_SHIFT, KC_TRANSPARENT, SFTENT_KEY #endif static uint8_t sc_last = 0; diff --git a/quantum/process_keycode/process_steno.c b/quantum/process_keycode/process_steno.c index 57e279f2113e..5d0bb313b4cf 100644 --- a/quantum/process_keycode/process_steno.c +++ b/quantum/process_keycode/process_steno.c @@ -65,6 +65,12 @@ static steno_mode_t mode; static const uint8_t boltmap[64] PROGMEM = {TXB_NUL, TXB_NUM, TXB_NUM, TXB_NUM, TXB_NUM, TXB_NUM, TXB_NUM, TXB_S_L, TXB_S_L, TXB_T_L, TXB_K_L, TXB_P_L, TXB_W_L, TXB_H_L, TXB_R_L, TXB_A_L, TXB_O_L, TXB_STR, TXB_STR, TXB_NUL, TXB_NUL, TXB_NUL, TXB_STR, TXB_STR, TXB_E_R, TXB_U_R, TXB_F_R, TXB_R_R, TXB_P_R, TXB_B_R, TXB_L_R, TXB_G_R, TXB_T_R, TXB_S_R, TXB_D_R, TXB_NUM, TXB_NUM, TXB_NUM, TXB_NUM, TXB_NUM, TXB_NUM, TXB_Z_R}; +#ifdef STENO_COMBINEDMAP +/* Used to look up when pressing the middle row key to combine two consonant or vowel keys */ +static const uint16_t combinedmap_first[] PROGMEM = {STN_S1, STN_TL, STN_PL, STN_HL, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR, STN_A, STN_E}; +static const uint16_t combinedmap_second[] PROGMEM = {STN_S2, STN_KL, STN_WL, STN_RL, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR, STN_O, STN_U}; +#endif + static void steno_clear_state(void) { memset(state, 0, sizeof(state)); memset(chord, 0, sizeof(chord)); @@ -167,6 +173,14 @@ bool process_steno(uint16_t keycode, keyrecord_t *record) { } return false; +#ifdef STENO_COMBINEDMAP + case QK_STENO_COMB ... QK_STENO_COMB_MAX: { + uint8_t result; + result = process_steno(combinedmap_first[keycode - QK_STENO_COMB], record); + result &= process_steno(combinedmap_second[keycode - QK_STENO_COMB], record); + return result; + } +#endif case STN__MIN ... STN__MAX: if (!process_steno_user(keycode, record)) { return false; diff --git a/quantum/process_keycode/process_tap_dance.c b/quantum/process_keycode/process_tap_dance.c index 17dc540a642a..c707fdea308e 100644 --- a/quantum/process_keycode/process_tap_dance.c +++ b/quantum/process_keycode/process_tap_dance.c @@ -20,7 +20,7 @@ uint8_t get_oneshot_mods(void); #endif static uint16_t last_td; -static int8_t highest_td = -1; +static int16_t highest_td = -1; void qk_tap_dance_pair_on_each_tap(qk_tap_dance_state_t *state, void *user_data) { qk_tap_dance_pair_t *pair = (qk_tap_dance_pair_t *)user_data; @@ -44,6 +44,7 @@ void qk_tap_dance_pair_finished(qk_tap_dance_state_t *state, void *user_data) { void qk_tap_dance_pair_reset(qk_tap_dance_state_t *state, void *user_data) { qk_tap_dance_pair_t *pair = (qk_tap_dance_pair_t *)user_data; + wait_ms(TAP_CODE_DELAY); if (state->count == 1) { unregister_code16(pair->kc1); } else if (state->count == 2) { @@ -74,6 +75,7 @@ void qk_tap_dance_dual_role_reset(qk_tap_dance_state_t *state, void *user_data) qk_tap_dance_dual_role_t *pair = (qk_tap_dance_dual_role_t *)user_data; if (state->count == 1) { + wait_ms(TAP_CODE_DELAY); unregister_code16(pair->kc); } } @@ -161,7 +163,7 @@ bool process_tap_dance(uint16_t keycode, keyrecord_t *record) { return true; } -void matrix_scan_tap_dance() { +void tap_dance_task() { if (highest_td == -1) return; uint16_t tap_user_defined; diff --git a/quantum/process_keycode/process_tap_dance.h b/quantum/process_keycode/process_tap_dance.h index a013c5cabf53..d9ffb1e73db7 100644 --- a/quantum/process_keycode/process_tap_dance.h +++ b/quantum/process_keycode/process_tap_dance.h @@ -85,7 +85,7 @@ extern qk_tap_dance_action_t tap_dance_actions[]; void preprocess_tap_dance(uint16_t keycode, keyrecord_t *record); bool process_tap_dance(uint16_t keycode, keyrecord_t *record); -void matrix_scan_tap_dance(void); +void tap_dance_task(void); void reset_tap_dance(qk_tap_dance_state_t *state); void qk_tap_dance_pair_on_each_tap(qk_tap_dance_state_t *state, void *user_data); diff --git a/quantum/process_keycode/process_terminal.c b/quantum/process_keycode/process_terminal.c index 7d1eefa9edc3..a059f3a521a8 100644 --- a/quantum/process_keycode/process_terminal.c +++ b/quantum/process_keycode/process_terminal.c @@ -257,12 +257,12 @@ bool process_terminal(uint16_t keycode, keyrecord_t *record) { process_terminal_command(); return false; break; - case KC_ESC: + case KC_ESCAPE: SEND_STRING("\n"); enable_terminal(); return false; break; - case KC_BSPC: + case KC_BACKSPACE: str_len = strlen(buffer); if (str_len > 0) { buffer[str_len - 1] = 0; @@ -284,7 +284,7 @@ bool process_terminal(uint16_t keycode, keyrecord_t *record) { str_len = strlen(buffer); for (int i = 0; i < str_len; ++i) { send_string(SS_TAP(X_BSPACE)); // clear w/e is on the line already - // process_terminal(KC_BSPC,record); + // process_terminal(KC_BACKSPACE,record); } strncpy(buffer, cmd_buffer[current_cmd_buffer_pos], 80); @@ -299,7 +299,7 @@ bool process_terminal(uint16_t keycode, keyrecord_t *record) { str_len = strlen(buffer); for (int i = 0; i < str_len; ++i) { send_string(SS_TAP(X_BSPACE)); // clear w/e is on the line already - // process_terminal(KC_BSPC,record); + // process_terminal(KC_BACKSPACE,record); } strncpy(buffer, cmd_buffer[current_cmd_buffer_pos], 79); @@ -311,7 +311,7 @@ bool process_terminal(uint16_t keycode, keyrecord_t *record) { default: if (keycode <= 58) { char_to_add = 0; - if (get_mods() & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) { + if (get_mods() & (MOD_BIT(KC_LEFT_SHIFT) | MOD_BIT(KC_RIGHT_SHIFT))) { char_to_add = shifted_keycode_to_ascii_lut[keycode]; } else if (get_mods() == 0) { char_to_add = keycode_to_ascii_lut[keycode]; diff --git a/quantum/process_keycode/process_ucis.c b/quantum/process_keycode/process_ucis.c index 12b0aba9bfea..d084d2b66c6d 100644 --- a/quantum/process_keycode/process_ucis.c +++ b/quantum/process_keycode/process_ucis.c @@ -46,7 +46,7 @@ static bool is_uni_seq(char *seq) { return false; } } - return qk_ucis_state.codes[i] == KC_ENT || qk_ucis_state.codes[i] == KC_SPC; + return qk_ucis_state.codes[i] == KC_ENTER || qk_ucis_state.codes[i] == KC_SPACE; } __attribute__((weak)) void qk_ucis_symbol_fallback(void) { @@ -72,7 +72,7 @@ bool process_ucis(uint16_t keycode, keyrecord_t *record) { return true; } - bool special = keycode == KC_SPC || keycode == KC_ENT || keycode == KC_ESC || keycode == KC_BSPC; + bool special = keycode == KC_SPACE || keycode == KC_ENTER || keycode == KC_ESCAPE || keycode == KC_BACKSPACE; if (qk_ucis_state.count >= UCIS_MAX_SYMBOL_LENGTH && !special) { return false; } @@ -81,7 +81,7 @@ bool process_ucis(uint16_t keycode, keyrecord_t *record) { qk_ucis_state.count++; switch (keycode) { - case KC_BSPC: + case KC_BACKSPACE: if (qk_ucis_state.count >= 2) { qk_ucis_state.count -= 2; return true; @@ -90,16 +90,16 @@ bool process_ucis(uint16_t keycode, keyrecord_t *record) { return false; } - case KC_SPC: - case KC_ENT: - case KC_ESC: + case KC_SPACE: + case KC_ENTER: + case KC_ESCAPE: for (uint8_t i = 0; i < qk_ucis_state.count; i++) { - register_code(KC_BSPC); - unregister_code(KC_BSPC); + register_code(KC_BACKSPACE); + unregister_code(KC_BACKSPACE); wait_ms(UNICODE_TYPE_DELAY); } - if (keycode == KC_ESC) { + if (keycode == KC_ESCAPE) { qk_ucis_state.in_progress = false; qk_ucis_cancel(); return false; diff --git a/quantum/process_keycode/process_unicode_common.c b/quantum/process_keycode/process_unicode_common.c index 46fcaaa86b7b..7685bb1c9950 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_CAPS_LOCK); } unicode_saved_mods = get_mods(); // Save current mods @@ -99,8 +101,13 @@ __attribute__((weak)) void unicode_input_start(void) { tap_code16(UNICODE_KEY_LNX); break; case UC_WIN: - register_code(KC_LALT); - tap_code(KC_PPLS); + // For increased reliability, use numpad keys for inputting digits + if (!unicode_saved_num_lock) { + tap_code(KC_NUM_LOCK); + } + register_code(KC_LEFT_ALT); + wait_ms(UNICODE_TYPE_DELAY); + tap_code(KC_KP_PLUS); break; case UC_WINC: tap_code(UNICODE_KEY_WINC); @@ -117,13 +124,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_CAPS_LOCK); } break; case UC_WIN: - unregister_code(KC_LALT); + unregister_code(KC_LEFT_ALT); + if (!unicode_saved_num_lock) { + tap_code(KC_NUM_LOCK); + } break; case UC_WINC: tap_code(KC_ENTER); @@ -139,26 +149,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_CAPS_LOCK); } break; case UC_WINC: - tap_code(KC_ESC); + tap_code(KC_ESCAPE); break; case UC_WIN: - unregister_code(KC_LALT); + unregister_code(KC_LEFT_ALT); + if (!unicode_saved_num_lock) { + tap_code(KC_NUM_LOCK); + } 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 +199,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/process_keycode/process_unicode_common.h b/quantum/process_keycode/process_unicode_common.h index c10e171ec3fa..72defb445eb1 100644 --- a/quantum/process_keycode/process_unicode_common.h +++ b/quantum/process_keycode/process_unicode_common.h @@ -24,13 +24,13 @@ // Keycodes used for starting Unicode input on different platforms #ifndef UNICODE_KEY_MAC -# define UNICODE_KEY_MAC KC_LALT +# define UNICODE_KEY_MAC KC_LEFT_ALT #endif #ifndef UNICODE_KEY_LNX # define UNICODE_KEY_LNX LCTL(LSFT(KC_U)) #endif #ifndef UNICODE_KEY_WINC -# define UNICODE_KEY_WINC KC_RALT +# define UNICODE_KEY_WINC KC_RIGHT_ALT #endif // Comma-delimited, ordered list of input modes selected for use (e.g. in cycle) diff --git a/quantum/programmable_button.c b/quantum/programmable_button.c new file mode 100644 index 000000000000..be828fd17cd8 --- /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 000000000000..e89b8b9fd6a8 --- /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 8ccdb774bdff..35b6351e9d99 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 @@ -49,40 +45,39 @@ float goodbye_song[][2] = GOODBYE_SONG; # ifdef DEFAULT_LAYER_SONGS float default_layer_songs[][16][2] = DEFAULT_LAYER_SONGS; # endif -# ifdef SENDSTRING_BELL -float bell_song[][2] = SONG(TERMINAL_SOUND); -# endif #endif #ifdef AUTO_SHIFT_ENABLE # include "process_auto_shift.h" #endif -static void do_code16(uint16_t code, void (*f)(uint8_t)) { +uint8_t extract_mod_bits(uint16_t code) { switch (code) { case QK_MODS ... QK_MODS_MAX: break; default: - return; + return 0; } uint8_t mods_to_send = 0; if (code & QK_RMODS_MIN) { // Right mod flag is set - if (code & QK_LCTL) mods_to_send |= MOD_BIT(KC_RCTL); - if (code & QK_LSFT) mods_to_send |= MOD_BIT(KC_RSFT); - if (code & QK_LALT) mods_to_send |= MOD_BIT(KC_RALT); - if (code & QK_LGUI) mods_to_send |= MOD_BIT(KC_RGUI); + if (code & QK_LCTL) mods_to_send |= MOD_BIT(KC_RIGHT_CTRL); + if (code & QK_LSFT) mods_to_send |= MOD_BIT(KC_RIGHT_SHIFT); + if (code & QK_LALT) mods_to_send |= MOD_BIT(KC_RIGHT_ALT); + if (code & QK_LGUI) mods_to_send |= MOD_BIT(KC_RIGHT_GUI); } else { - if (code & QK_LCTL) mods_to_send |= MOD_BIT(KC_LCTL); - if (code & QK_LSFT) mods_to_send |= MOD_BIT(KC_LSFT); - if (code & QK_LALT) mods_to_send |= MOD_BIT(KC_LALT); - if (code & QK_LGUI) mods_to_send |= MOD_BIT(KC_LGUI); + if (code & QK_LCTL) mods_to_send |= MOD_BIT(KC_LEFT_CTRL); + if (code & QK_LSFT) mods_to_send |= MOD_BIT(KC_LEFT_SHIFT); + if (code & QK_LALT) mods_to_send |= MOD_BIT(KC_LEFT_ALT); + if (code & QK_LGUI) mods_to_send |= MOD_BIT(KC_LEFT_GUI); } - f(mods_to_send); + return mods_to_send; } +static void do_code16(uint16_t code, void (*f)(uint8_t)) { f(extract_mod_bits(code)); } + void register_code16(uint16_t code) { if (IS_MOD(code) || code == KC_NO) { do_code16(code, register_mods); @@ -144,7 +139,14 @@ 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) { return get_event_keycode(record->event, update_layer_cache); } +uint16_t get_record_keycode(keyrecord_t *record, bool update_layer_cache) { +#ifdef COMBO_ENABLE + 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. @@ -170,6 +172,18 @@ uint16_t get_event_keycode(keyevent_t event, bool update_layer_cache) { return keymap_key_to_keycode(layer_switch_get_layer(event.key), event.key); } +/* Get keycode, and then process pre tapping functionality */ +bool pre_process_record_quantum(keyrecord_t *record) { + if (!( +#ifdef COMBO_ENABLE + process_combo(get_record_keycode(record, true), record) && +#endif + true)) { + return false; + } + return true; // continue processing +} + /* Get keycode, and then call keyboard function */ void post_process_record_quantum(keyrecord_t *record) { uint16_t keycode = get_record_keycode(record, false); @@ -217,10 +231,10 @@ bool process_record_quantum(keyrecord_t *record) { #endif #if defined(AUDIO_ENABLE) && defined(AUDIO_CLICKY) process_clicky(keycode, record) && -#endif // AUDIO_CLICKY +#endif #ifdef HAPTIC_ENABLE process_haptic(keycode, record) && -#endif // HAPTIC_ENABLE +#endif #if defined(VIA_ENABLE) process_record_via(keycode, record) && #endif @@ -243,6 +257,9 @@ bool process_record_quantum(keyrecord_t *record) { #if (defined(AUDIO_ENABLE) || (defined(MIDI_ENABLE) && defined(MIDI_BASIC))) && !defined(NO_MUSIC_MODE) process_music(keycode, record) && #endif +#ifdef KEY_OVERRIDE_ENABLE + process_key_override(keycode, record) && +#endif #ifdef TAP_DANCE_ENABLE process_tap_dance(keycode, record) && #endif @@ -252,15 +269,15 @@ bool process_record_quantum(keyrecord_t *record) { #ifdef LEADER_ENABLE process_leader(keycode, record) && #endif -#ifdef COMBO_ENABLE - process_combo(keycode, record) && -#endif #ifdef PRINTING_ENABLE process_printer(keycode, record) && #endif #ifdef AUTO_SHIFT_ENABLE process_auto_shift(keycode, record) && #endif +#ifdef DYNAMIC_TAPPING_TERM_ENABLE + process_dynamic_tapping_term(keycode, record) && +#endif #ifdef TERMINAL_ENABLE process_terminal(keycode, record) && #endif @@ -278,6 +295,9 @@ bool process_record_quantum(keyrecord_t *record) { #endif #ifdef JOYSTICK_ENABLE process_joystick(keycode, record) && +#endif +#ifdef PROGRAMMABLE_BUTTON_ENABLE + process_programmable_button(keycode, record) && #endif true)) { return false; @@ -340,13 +360,13 @@ void set_single_persistent_default_layer(uint8_t default_layer) { #if defined(AUDIO_ENABLE) && defined(DEFAULT_LAYER_SONGS) PLAY_SONG(default_layer_songs[default_layer]); #endif - eeconfig_update_default_layer(1U << default_layer); - default_layer_set(1U << default_layer); + eeconfig_update_default_layer((layer_state_t)1 << default_layer); + default_layer_set((layer_state_t)1 << default_layer); } layer_state_t update_tri_layer_state(layer_state_t state, uint8_t layer1, uint8_t layer2, uint8_t layer3) { - layer_state_t mask12 = (1UL << layer1) | (1UL << layer2); - layer_state_t mask3 = 1UL << layer3; + layer_state_t mask12 = ((layer_state_t)1 << layer1) | ((layer_state_t)1 << layer2); + layer_state_t mask3 = (layer_state_t)1 << layer3; return (state & mask12) == mask12 ? (state | mask3) : (state & ~mask3); } @@ -354,10 +374,7 @@ void update_tri_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3) { layer_st void matrix_init_quantum() { magic(); -#if defined(LED_NUM_LOCK_PIN) || defined(LED_CAPS_LOCK_PIN) || defined(LED_SCROLL_LOCK_PIN) || defined(LED_COMPOSE_PIN) || defined(LED_KANA_PIN) - // TODO: remove calls to led_init_ports from keyboards and remove ifdef led_init_ports(); -#endif #ifdef BACKLIGHT_ENABLE backlight_init_ports(); #endif @@ -384,7 +401,7 @@ void matrix_init_quantum() { } void matrix_scan_quantum() { -#if defined(AUDIO_ENABLE) +#if defined(AUDIO_ENABLE) && defined(AUDIO_INIT_DELAY) // There are some tasks that need to be run a little bit // after keyboard startup, or else they will not work correctly // because of interaction with the USB device state, which @@ -405,19 +422,23 @@ void matrix_scan_quantum() { #endif #if defined(AUDIO_ENABLE) && !defined(NO_MUSIC_MODE) - matrix_scan_music(); + music_task(); +#endif + +#ifdef KEY_OVERRIDE_ENABLE + key_override_task(); #endif #ifdef SEQUENCER_ENABLE - matrix_scan_sequencer(); + sequencer_task(); #endif #ifdef TAP_DANCE_ENABLE - matrix_scan_tap_dance(); + tap_dance_task(); #endif #ifdef COMBO_ENABLE - matrix_scan_combo(); + combo_task(); #endif #ifdef LED_MATRIX_ENABLE @@ -447,14 +468,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 @@ -462,3 +475,159 @@ 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 +# if defined(POINTING_DEVICE_ENABLE) + // run to ensure scanning occurs while suspended + pointing_device_task(); +# 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(); +} + +/** \brief converts unsigned integers into char arrays + * + * Takes an unsigned integer and converts that value into an equivalent char array + * A padding character may be specified, ' ' for leading spaces, '0' for leading zeros. + */ + +const char *get_numeric_str(char *buf, size_t buf_len, uint32_t curr_num, char curr_pad) { + buf[buf_len - 1] = '\0'; + for (size_t i = 0; i < buf_len - 1; ++i) { + char c = '0' + curr_num % 10; + buf[buf_len - 2 - i] = (c == '0' && i == 0) ? '0' : (curr_num > 0 ? c : curr_pad); + curr_num /= 10; + } + return buf; +} + +/** \brief converts uint8_t into char array + * + * Takes an uint8_t, and uses an internal static buffer to render that value into a char array + * A padding character may be specified, ' ' for leading spaces, '0' for leading zeros. + * + * NOTE: Subsequent invocations will reuse the same static buffer and overwrite the previous + * contents. Use the result immediately, instead of caching it. + */ +const char *get_u8_str(uint8_t curr_num, char curr_pad) { + static char buf[4] = {0}; + static uint8_t last_num = 0xFF; + static char last_pad = '\0'; + if (last_num == curr_num && last_pad == curr_pad) { + return buf; + } + last_num = curr_num; + last_pad = curr_pad; + return get_numeric_str(buf, sizeof(buf), curr_num, curr_pad); +} + +/** \brief converts uint16_t into char array + * + * Takes an uint16_t, and uses an internal static buffer to render that value into a char array + * A padding character may be specified, ' ' for leading spaces, '0' for leading zeros. + * + * NOTE: Subsequent invocations will reuse the same static buffer and overwrite the previous + * contents. Use the result immediately, instead of caching it. + */ +const char *get_u16_str(uint16_t curr_num, char curr_pad) { + static char buf[6] = {0}; + static uint16_t last_num = 0xFF; + static char last_pad = '\0'; + if (last_num == curr_num && last_pad == curr_pad) { + return buf; + } + last_num = curr_num; + last_pad = curr_pad; + return get_numeric_str(buf, sizeof(buf), curr_num, curr_pad); +} diff --git a/quantum/quantum.h b/quantum/quantum.h index e4a7c5723ceb..6927884e2f40 100644 --- a/quantum/quantum.h +++ b/quantum/quantum.h @@ -15,16 +15,7 @@ */ #pragma once -#if defined(__AVR__) -# include <avr/pgmspace.h> -# include <avr/io.h> -# include <avr/interrupt.h> -#endif -#if defined(PROTOCOL_CHIBIOS) -# include <hal.h> -# include "chibios_config.h" -#endif - +#include "platform_deps.h" #include "wait.h" #include "matrix.h" #include "keymap.h" @@ -39,10 +30,6 @@ #if defined(RGBLIGHT_ENABLE) # include "rgblight.h" -#elif defined(RGB_MATRIX_ENABLE) -// Dummy define RGBLIGHT_MODE_xxxx -# define RGBLIGHT_H_DUMMY_DEFINE -# include "rgblight.h" #endif #ifdef RGB_MATRIX_ENABLE @@ -67,6 +54,10 @@ #include <stddef.h> #include <stdlib.h> +#ifdef DEFERRED_EXEC_ENABLE +# include "deferred_exec.h" +#endif + extern layer_state_t default_layer_state; #ifndef NO_ACTION_LAYER @@ -118,6 +109,10 @@ extern layer_state_t layer_state; # include "process_unicodemap.h" #endif +#ifdef KEY_OVERRIDE_ENABLE +# include "process_key_override.h" +#endif + #ifdef TAP_DANCE_ENABLE # include "process_tap_dance.h" #endif @@ -130,6 +125,10 @@ extern layer_state_t layer_state; # include "process_auto_shift.h" #endif +#ifdef DYNAMIC_TAPPING_TERM_ENABLE +# include "process_dynamic_tapping_term.h" +#endif + #ifdef COMBO_ENABLE # include "process_combo.h" #endif @@ -156,6 +155,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 @@ -170,12 +173,17 @@ extern layer_state_t layer_state; #ifdef HAPTIC_ENABLE # include "haptic.h" +# include "process_haptic.h" #endif -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE # include "oled_driver.h" #endif +#ifdef ST7565_ENABLE +# include "st7565.h" +#endif + #ifdef DIP_SWITCH_ENABLE # include "dip_switch.h" #endif @@ -204,6 +212,10 @@ extern layer_state_t layer_state; # include "encoder.h" #endif +#ifdef POINTING_DEVICE_ENABLE +# include "pointing_device.h" +#endif + // For tri-layer void update_tri_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3); layer_state_t update_tri_layer_state(layer_state_t state, uint8_t layer1, uint8_t layer2, uint8_t layer3); @@ -216,10 +228,6 @@ void set_single_persistent_default_layer(uint8_t default_layer); #define IS_LAYER_ON_STATE(state, layer) layer_state_cmp(state, layer) #define IS_LAYER_OFF_STATE(state, layer) !layer_state_cmp(state, layer) -void matrix_init_kb(void); -void matrix_scan_kb(void); -void matrix_init_user(void); -void matrix_scan_user(void); uint16_t get_record_keycode(keyrecord_t *record, bool update_layer_cache); uint16_t get_event_keycode(keyevent_t event, bool update_layer_cache); bool process_action_kb(keyrecord_t *record); @@ -242,4 +250,6 @@ 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); +const char *get_numeric_str(char *buf, size_t buf_len, uint32_t curr_num, char curr_pad); +const char *get_u8_str(uint8_t curr_num, char curr_pad); +const char *get_u16_str(uint16_t curr_num, char curr_pad); diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h index c361dd670ebe..e4d0167aac3f 100644 --- a/quantum/quantum_keycodes.h +++ b/quantum/quantum_keycodes.h @@ -19,7 +19,7 @@ #include "sequencer.h" // Fillers to make layering more clear -#define _______ KC_TRNS +#define _______ KC_TRANSPARENT #define XXXXXXX KC_NO enum quantum_keycodes { @@ -66,6 +66,8 @@ enum quantum_keycodes { QK_STENO = 0x5A00, QK_STENO_BOLT = 0x5A30, QK_STENO_GEMINI = 0x5A31, + QK_STENO_COMB = 0x5A32, + QK_STENO_COMB_MAX = 0x5A3C, QK_STENO_MAX = 0x5A3F, // 0x5C00 - 0x5FFF are reserved, see below QK_MOD_TAP = 0x6000, @@ -514,6 +516,87 @@ enum quantum_keycodes { // RGB underglow/matrix (continued) RGB_MODE_TWINKLE, + // Key Overrides + KEY_OVERRIDE_TOGGLE, + KEY_OVERRIDE_ON, + KEY_OVERRIDE_OFF, + + // Additional magic key + MAGIC_TOGGLE_GUI, + + // Adjust tapping term on the fly + DT_PRNT, + DT_UP, + DT_DOWN, + + // 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, + + // Dedicated macro keys for Configurator and VIA + MACRO_0, + MACRO_1, + MACRO_2, + MACRO_3, + MACRO_4, + MACRO_5, + MACRO_6, + MACRO_7, + MACRO_8, + MACRO_9, + MACRO_10, + MACRO_11, + MACRO_12, + MACRO_13, + MACRO_14, + MACRO_15, + MACRO_16, + MACRO_17, + MACRO_18, + MACRO_19, + MACRO_20, + MACRO_21, + MACRO_22, + MACRO_23, + MACRO_24, + MACRO_25, + MACRO_26, + MACRO_27, + MACRO_28, + MACRO_29, + MACRO_30, + MACRO_31, + // Start of custom keycode range for keyboards and keymaps - always leave at the end SAFE_RANGE }; @@ -555,69 +638,67 @@ enum quantum_keycodes { #define MOD_MEH 0x7 // US ANSI shifted keycode aliases -#define KC_TILD LSFT(KC_GRV) // ~ -#define KC_TILDE KC_TILD +#define KC_TILDE LSFT(KC_GRAVE) // ~ +#define KC_TILD KC_TILDE -#define KC_EXLM LSFT(KC_1) // ! -#define KC_EXCLAIM KC_EXLM +#define KC_EXCLAIM LSFT(KC_1) // ! +#define KC_EXLM KC_EXCLAIM #define KC_AT LSFT(KC_2) // @ #define KC_HASH LSFT(KC_3) // # -#define KC_DLR LSFT(KC_4) // $ -#define KC_DOLLAR KC_DLR - -#define KC_PERC LSFT(KC_5) // % -#define KC_PERCENT KC_PERC +#define KC_DOLLAR LSFT(KC_4) // $ +#define KC_DLR KC_DOLLAR -#define KC_CIRC LSFT(KC_6) // ^ -#define KC_CIRCUMFLEX KC_CIRC +#define KC_PERCENT LSFT(KC_5) // % +#define KC_PERC KC_PERCENT -#define KC_AMPR LSFT(KC_7) // & -#define KC_AMPERSAND KC_AMPR +#define KC_CIRCUMFLEX LSFT(KC_6) // ^ +#define KC_CIRC KC_CIRCUMFLEX -#define KC_ASTR LSFT(KC_8) // * -#define KC_ASTERISK KC_ASTR +#define KC_AMPERSAND LSFT(KC_7) // & +#define KC_AMPR KC_AMPERSAND -#define KC_LPRN LSFT(KC_9) // ( -#define KC_LEFT_PAREN KC_LPRN +#define KC_ASTERISK LSFT(KC_8) // * +#define KC_ASTR KC_ASTERISK -#define KC_RPRN LSFT(KC_0) // ) -#define KC_RIGHT_PAREN KC_RPRN +#define KC_LEFT_PAREN LSFT(KC_9) // ( +#define KC_LPRN KC_LEFT_PAREN -#define KC_UNDS LSFT(KC_MINS) // _ -#define KC_UNDERSCORE KC_UNDS +#define KC_RIGHT_PAREN LSFT(KC_0) // ) +#define KC_RPRN KC_RIGHT_PAREN -#define KC_PLUS LSFT(KC_EQL) // + +#define KC_UNDERSCORE LSFT(KC_MINUS) // _ +#define KC_UNDS KC_UNDERSCORE -#define KC_LCBR LSFT(KC_LBRC) // { -#define KC_LEFT_CURLY_BRACE KC_LCBR +#define KC_PLUS LSFT(KC_EQUAL) // + -#define KC_RCBR LSFT(KC_RBRC) // } -#define KC_RIGHT_CURLY_BRACE KC_RCBR +#define KC_LEFT_CURLY_BRACE LSFT(KC_LEFT_BRACKET) // { +#define KC_LCBR KC_LEFT_CURLY_BRACE -#define KC_LABK LSFT(KC_COMM) // < -#define KC_LEFT_ANGLE_BRACKET KC_LABK +#define KC_RIGHT_CURLY_BRACE LSFT(KC_RIGHT_BRACKET) // } +#define KC_RCBR KC_RIGHT_CURLY_BRACE -#define KC_RABK LSFT(KC_DOT) // > -#define KC_RIGHT_ANGLE_BRACKET KC_RABK +#define KC_LEFT_ANGLE_BRACKET LSFT(KC_COMMA) // < +#define KC_LABK KC_LEFT_ANGLE_BRACKET +#define KC_LT KC_LEFT_ANGLE_BRACKET -#define KC_COLN LSFT(KC_SCLN) // : -#define KC_COLON KC_COLN +#define KC_RIGHT_ANGLE_BRACKET LSFT(KC_DOT) // > +#define KC_RABK KC_RIGHT_ANGLE_BRACKET +#define KC_GT KC_RIGHT_ANGLE_BRACKET -#define KC_PIPE LSFT(KC_BSLS) // | +#define KC_COLON LSFT(KC_SEMICOLON) // : +#define KC_COLN KC_COLON -#define KC_LT LSFT(KC_COMM) // < +#define KC_PIPE LSFT(KC_BACKSLASH) // | -#define KC_GT LSFT(KC_DOT) // > +#define KC_QUESTION LSFT(KC_SLASH) // ? +#define KC_QUES KC_QUESTION -#define KC_QUES LSFT(KC_SLSH) // ? -#define KC_QUESTION KC_QUES - -#define KC_DQT LSFT(KC_QUOT) // " -#define KC_DOUBLE_QUOTE KC_DQT -#define KC_DQUO KC_DQT +#define KC_DOUBLE_QUOTE LSFT(KC_QUOTE) // " +#define KC_DQUO KC_DOUBLE_QUOTE +#define KC_DQT KC_DOUBLE_QUOTE #define KC_DELT KC_DELETE // Del key (four letter code) @@ -687,6 +768,7 @@ enum quantum_keycodes { #define GUI_OFF MAGIC_NO_GUI #define GUI_ON MAGIC_UNNO_GUI +#define GUI_TOG MAGIC_TOGGLE_GUI #define GE_SWAP MAGIC_SWAP_GRAVE_ESC #define GE_NORM MAGIC_UNSWAP_GRAVE_ESC @@ -764,12 +846,12 @@ enum quantum_keycodes { #define CMD_T(kc) LCMD_T(kc) #define WIN_T(kc) LWIN_T(kc) -#define C_S_T(kc) MT(MOD_LCTL | MOD_LSFT, kc) // Left Control + Shift e.g. for gnome-terminal -#define MEH_T(kc) MT(MOD_LCTL | MOD_LSFT | MOD_LALT, kc) // Meh is a less hyper version of the Hyper key -- doesn't include GUI, so just Left Control + Shift + Alt -#define LCAG_T(kc) MT(MOD_LCTL | MOD_LALT | MOD_LGUI, kc) // Left Control + Alt + GUI -#define RCAG_T(kc) MT(MOD_RCTL | MOD_RALT | MOD_RGUI, kc) // Right Control + Alt + GUI +#define C_S_T(kc) MT(MOD_LCTL | MOD_LSFT, kc) // Left Control + Shift e.g. for gnome-terminal +#define MEH_T(kc) MT(MOD_LCTL | MOD_LSFT | MOD_LALT, kc) // Meh is a less hyper version of the Hyper key -- doesn't include GUI, so just Left Control + Shift + Alt +#define LCAG_T(kc) MT(MOD_LCTL | MOD_LALT | MOD_LGUI, kc) // Left Control + Alt + GUI +#define RCAG_T(kc) MT(MOD_RCTL | MOD_RALT | MOD_RGUI, kc) // Right Control + Alt + GUI #define HYPR_T(kc) MT(MOD_LCTL | MOD_LSFT | MOD_LALT | MOD_LGUI, kc) // see http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/ -#define LSG_T(kc) MT(MOD_LSFT | MOD_LGUI, kc) // Left Shift + GUI +#define LSG_T(kc) MT(MOD_LSFT | MOD_LGUI, kc) // Left Shift + GUI #define SGUI_T(kc) LSG_T(kc) #define SCMD_T(kc) LSG_T(kc) #define SWIN_T(kc) LSG_T(kc) @@ -800,7 +882,7 @@ enum quantum_keycodes { #define UC_M_MA UNICODE_MODE_MAC #define UNICODE_MODE_OSX UNICODE_MODE_MAC // Deprecated alias -#define UC_M_OS UNICODE_MODE_MAC // Deprecated alias +#define UC_M_OS UNICODE_MODE_MAC // Deprecated alias #define UC_M_LN UNICODE_MODE_LNX #define UC_M_WI UNICODE_MODE_WIN #define UC_M_BS UNICODE_MODE_BSD @@ -843,3 +925,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/tmk_core/common/raw_hid.h b/quantum/raw_hid.h similarity index 100% rename from tmk_core/common/raw_hid.h rename to quantum/raw_hid.h diff --git a/quantum/rgb.h b/quantum/rgb.h deleted file mode 100644 index 2602fc0b200a..000000000000 --- a/quantum/rgb.h +++ /dev/null @@ -1,39 +0,0 @@ -/* Copyright 2017 Jack Humbert - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#pragma once - -__attribute__((weak)) void rgblight_toggle(void){}; - -__attribute__((weak)) void rgblight_step(void){}; - -__attribute__((weak)) void rgblight_step_reverse(void){}; - -__attribute__((weak)) void rgblight_increase_hue(void){}; - -__attribute__((weak)) void rgblight_decrease_hue(void){}; - -__attribute__((weak)) void rgblight_increase_sat(void){}; - -__attribute__((weak)) void rgblight_decrease_sat(void){}; - -__attribute__((weak)) void rgblight_increase_val(void){}; - -__attribute__((weak)) void rgblight_decrease_val(void){}; - -__attribute__((weak)) void rgblight_increase_speed(void){}; - -__attribute__((weak)) void rgblight_decrease_speed(void){}; diff --git a/quantum/rgb_matrix/animations/alpha_mods_anim.h b/quantum/rgb_matrix/animations/alpha_mods_anim.h new file mode 100644 index 000000000000..d6136f1ba470 --- /dev/null +++ b/quantum/rgb_matrix/animations/alpha_mods_anim.h @@ -0,0 +1,26 @@ +#ifdef ENABLE_RGB_MATRIX_ALPHAS_MODS +RGB_MATRIX_EFFECT(ALPHAS_MODS) +# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS + +// alphas = color1, mods = color2 +bool ALPHAS_MODS(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + + HSV hsv = rgb_matrix_config.hsv; + RGB rgb1 = rgb_matrix_hsv_to_rgb(hsv); + hsv.h += rgb_matrix_config.speed; + RGB rgb2 = rgb_matrix_hsv_to_rgb(hsv); + + for (uint8_t i = led_min; i < led_max; i++) { + RGB_MATRIX_TEST_LED_FLAGS(); + if (HAS_FLAGS(g_led_config.flags[i], LED_FLAG_MODIFIER)) { + rgb_matrix_set_color(i, rgb2.r, rgb2.g, rgb2.b); + } else { + rgb_matrix_set_color(i, rgb1.r, rgb1.g, rgb1.b); + } + } + return rgb_matrix_check_finished_leds(led_max); +} + +# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS +#endif // ENABLE_RGB_MATRIX_ALPHAS_MODS diff --git a/quantum/rgb_matrix/animations/breathing_anim.h b/quantum/rgb_matrix/animations/breathing_anim.h new file mode 100644 index 000000000000..29187e1543e7 --- /dev/null +++ b/quantum/rgb_matrix/animations/breathing_anim.h @@ -0,0 +1,20 @@ +#ifdef ENABLE_RGB_MATRIX_BREATHING +RGB_MATRIX_EFFECT(BREATHING) +# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS + +bool BREATHING(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + + HSV hsv = rgb_matrix_config.hsv; + uint16_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 8); + hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v); + RGB rgb = rgb_matrix_hsv_to_rgb(hsv); + for (uint8_t i = led_min; i < led_max; i++) { + RGB_MATRIX_TEST_LED_FLAGS(); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + } + return rgb_matrix_check_finished_leds(led_max); +} + +# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS +#endif // ENABLE_RGB_MATRIX_BREATHING diff --git a/quantum/rgb_matrix_animations/colorband_pinwheel_sat_anim.h b/quantum/rgb_matrix/animations/colorband_pinwheel_sat_anim.h similarity index 80% rename from quantum/rgb_matrix_animations/colorband_pinwheel_sat_anim.h rename to quantum/rgb_matrix/animations/colorband_pinwheel_sat_anim.h index 3df3cfda7d67..0375d4937de0 100644 --- a/quantum/rgb_matrix_animations/colorband_pinwheel_sat_anim.h +++ b/quantum/rgb_matrix/animations/colorband_pinwheel_sat_anim.h @@ -1,4 +1,4 @@ -#ifndef DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#ifdef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT RGB_MATRIX_EFFECT(BAND_PINWHEEL_SAT) # ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS @@ -10,4 +10,4 @@ static HSV BAND_PINWHEEL_SAT_math(HSV hsv, int16_t dx, int16_t dy, uint8_t time) bool BAND_PINWHEEL_SAT(effect_params_t* params) { return effect_runner_dx_dy(params, &BAND_PINWHEEL_SAT_math); } # endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS -#endif // DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#endif // ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT diff --git a/quantum/rgb_matrix_animations/colorband_pinwheel_val_anim.h b/quantum/rgb_matrix/animations/colorband_pinwheel_val_anim.h similarity index 80% rename from quantum/rgb_matrix_animations/colorband_pinwheel_val_anim.h rename to quantum/rgb_matrix/animations/colorband_pinwheel_val_anim.h index 7d80074fd5dd..e40bf4cd1f2f 100644 --- a/quantum/rgb_matrix_animations/colorband_pinwheel_val_anim.h +++ b/quantum/rgb_matrix/animations/colorband_pinwheel_val_anim.h @@ -1,4 +1,4 @@ -#ifndef DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#ifdef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL RGB_MATRIX_EFFECT(BAND_PINWHEEL_VAL) # ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS @@ -10,4 +10,4 @@ static HSV BAND_PINWHEEL_VAL_math(HSV hsv, int16_t dx, int16_t dy, uint8_t time) bool BAND_PINWHEEL_VAL(effect_params_t* params) { return effect_runner_dx_dy(params, &BAND_PINWHEEL_VAL_math); } # endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS -#endif // DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#endif // ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL diff --git a/quantum/rgb_matrix_animations/colorband_sat_anim.h b/quantum/rgb_matrix/animations/colorband_sat_anim.h similarity index 84% rename from quantum/rgb_matrix_animations/colorband_sat_anim.h rename to quantum/rgb_matrix/animations/colorband_sat_anim.h index 35b830af6b93..1c4f7de575a6 100644 --- a/quantum/rgb_matrix_animations/colorband_sat_anim.h +++ b/quantum/rgb_matrix/animations/colorband_sat_anim.h @@ -1,4 +1,4 @@ -#ifndef DISABLE_RGB_MATRIX_BAND_SAT +#ifdef ENABLE_RGB_MATRIX_BAND_SAT RGB_MATRIX_EFFECT(BAND_SAT) # ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS @@ -11,4 +11,4 @@ static HSV BAND_SAT_math(HSV hsv, uint8_t i, uint8_t time) { bool BAND_SAT(effect_params_t* params) { return effect_runner_i(params, &BAND_SAT_math); } # endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS -#endif // DISABLE_RGB_MATRIX_BAND_SAT +#endif // ENABLE_RGB_MATRIX_BAND_SAT diff --git a/quantum/rgb_matrix_animations/colorband_spiral_sat_anim.h b/quantum/rgb_matrix/animations/colorband_spiral_sat_anim.h similarity index 81% rename from quantum/rgb_matrix_animations/colorband_spiral_sat_anim.h rename to quantum/rgb_matrix/animations/colorband_spiral_sat_anim.h index 048157aa1be1..cdd02b37974b 100644 --- a/quantum/rgb_matrix_animations/colorband_spiral_sat_anim.h +++ b/quantum/rgb_matrix/animations/colorband_spiral_sat_anim.h @@ -1,4 +1,4 @@ -#ifndef DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#ifdef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT RGB_MATRIX_EFFECT(BAND_SPIRAL_SAT) # ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS @@ -10,4 +10,4 @@ static HSV BAND_SPIRAL_SAT_math(HSV hsv, int16_t dx, int16_t dy, uint8_t dist, u bool BAND_SPIRAL_SAT(effect_params_t* params) { return effect_runner_dx_dy_dist(params, &BAND_SPIRAL_SAT_math); } # endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS -#endif // DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#endif // ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT diff --git a/quantum/rgb_matrix_animations/colorband_spiral_val_anim.h b/quantum/rgb_matrix/animations/colorband_spiral_val_anim.h similarity index 81% rename from quantum/rgb_matrix_animations/colorband_spiral_val_anim.h rename to quantum/rgb_matrix/animations/colorband_spiral_val_anim.h index bff2da1616a2..e1331eaebe86 100644 --- a/quantum/rgb_matrix_animations/colorband_spiral_val_anim.h +++ b/quantum/rgb_matrix/animations/colorband_spiral_val_anim.h @@ -1,4 +1,4 @@ -#ifndef DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#ifdef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL RGB_MATRIX_EFFECT(BAND_SPIRAL_VAL) # ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS @@ -10,4 +10,4 @@ static HSV BAND_SPIRAL_VAL_math(HSV hsv, int16_t dx, int16_t dy, uint8_t dist, u bool BAND_SPIRAL_VAL(effect_params_t* params) { return effect_runner_dx_dy_dist(params, &BAND_SPIRAL_VAL_math); } # endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS -#endif // DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#endif // ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL diff --git a/quantum/rgb_matrix_animations/colorband_val_anim.h b/quantum/rgb_matrix/animations/colorband_val_anim.h similarity index 84% rename from quantum/rgb_matrix_animations/colorband_val_anim.h rename to quantum/rgb_matrix/animations/colorband_val_anim.h index f1aaf1d067dd..02ee4add6724 100644 --- a/quantum/rgb_matrix_animations/colorband_val_anim.h +++ b/quantum/rgb_matrix/animations/colorband_val_anim.h @@ -1,4 +1,4 @@ -#ifndef DISABLE_RGB_MATRIX_BAND_VAL +#ifdef ENABLE_RGB_MATRIX_BAND_VAL RGB_MATRIX_EFFECT(BAND_VAL) # ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS @@ -11,4 +11,4 @@ static HSV BAND_VAL_math(HSV hsv, uint8_t i, uint8_t time) { bool BAND_VAL(effect_params_t* params) { return effect_runner_i(params, &BAND_VAL_math); } # endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS -#endif // DISABLE_RGB_MATRIX_BAND_VAL +#endif // ENABLE_RGB_MATRIX_BAND_VAL diff --git a/quantum/rgb_matrix_animations/cycle_all_anim.h b/quantum/rgb_matrix/animations/cycle_all_anim.h similarity index 79% rename from quantum/rgb_matrix_animations/cycle_all_anim.h rename to quantum/rgb_matrix/animations/cycle_all_anim.h index faf8598a39f6..3b73b9d385aa 100644 --- a/quantum/rgb_matrix_animations/cycle_all_anim.h +++ b/quantum/rgb_matrix/animations/cycle_all_anim.h @@ -1,4 +1,4 @@ -#ifndef DISABLE_RGB_MATRIX_CYCLE_ALL +#ifdef ENABLE_RGB_MATRIX_CYCLE_ALL RGB_MATRIX_EFFECT(CYCLE_ALL) # ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS @@ -10,4 +10,4 @@ static HSV CYCLE_ALL_math(HSV hsv, uint8_t i, uint8_t time) { bool CYCLE_ALL(effect_params_t* params) { return effect_runner_i(params, &CYCLE_ALL_math); } # endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS -#endif // DISABLE_RGB_MATRIX_CYCLE_ALL +#endif // ENABLE_RGB_MATRIX_CYCLE_ALL diff --git a/quantum/rgb_matrix/animations/cycle_left_right_anim.h b/quantum/rgb_matrix/animations/cycle_left_right_anim.h new file mode 100644 index 000000000000..bf6a57406969 --- /dev/null +++ b/quantum/rgb_matrix/animations/cycle_left_right_anim.h @@ -0,0 +1,13 @@ +#ifdef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +RGB_MATRIX_EFFECT(CYCLE_LEFT_RIGHT) +# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS + +static HSV CYCLE_LEFT_RIGHT_math(HSV hsv, uint8_t i, uint8_t time) { + hsv.h = g_led_config.point[i].x - time; + return hsv; +} + +bool CYCLE_LEFT_RIGHT(effect_params_t* params) { return effect_runner_i(params, &CYCLE_LEFT_RIGHT_math); } + +# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS +#endif // ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT diff --git a/quantum/rgb_matrix/animations/cycle_out_in_anim.h b/quantum/rgb_matrix/animations/cycle_out_in_anim.h new file mode 100644 index 000000000000..2bdb9d9375a5 --- /dev/null +++ b/quantum/rgb_matrix/animations/cycle_out_in_anim.h @@ -0,0 +1,13 @@ +#ifdef ENABLE_RGB_MATRIX_CYCLE_OUT_IN +RGB_MATRIX_EFFECT(CYCLE_OUT_IN) +# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS + +static HSV CYCLE_OUT_IN_math(HSV hsv, int16_t dx, int16_t dy, uint8_t dist, uint8_t time) { + hsv.h = 3 * dist / 2 + time; + return hsv; +} + +bool CYCLE_OUT_IN(effect_params_t* params) { return effect_runner_dx_dy_dist(params, &CYCLE_OUT_IN_math); } + +# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS +#endif // ENABLE_RGB_MATRIX_CYCLE_OUT_IN diff --git a/quantum/rgb_matrix_animations/cycle_out_in_dual_anim.h b/quantum/rgb_matrix/animations/cycle_out_in_dual_anim.h similarity index 83% rename from quantum/rgb_matrix_animations/cycle_out_in_dual_anim.h rename to quantum/rgb_matrix/animations/cycle_out_in_dual_anim.h index fe8396140fb1..51979c44feed 100644 --- a/quantum/rgb_matrix_animations/cycle_out_in_dual_anim.h +++ b/quantum/rgb_matrix/animations/cycle_out_in_dual_anim.h @@ -1,4 +1,4 @@ -#ifndef DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#ifdef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL RGB_MATRIX_EFFECT(CYCLE_OUT_IN_DUAL) # ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS @@ -12,4 +12,4 @@ static HSV CYCLE_OUT_IN_DUAL_math(HSV hsv, int16_t dx, int16_t dy, uint8_t time) bool CYCLE_OUT_IN_DUAL(effect_params_t* params) { return effect_runner_dx_dy(params, &CYCLE_OUT_IN_DUAL_math); } # endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS -#endif // DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#endif // ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL diff --git a/quantum/rgb_matrix_animations/cycle_pinwheel_anim.h b/quantum/rgb_matrix/animations/cycle_pinwheel_anim.h similarity index 80% rename from quantum/rgb_matrix_animations/cycle_pinwheel_anim.h rename to quantum/rgb_matrix/animations/cycle_pinwheel_anim.h index 7799887099e6..10ba2b7c2c78 100644 --- a/quantum/rgb_matrix_animations/cycle_pinwheel_anim.h +++ b/quantum/rgb_matrix/animations/cycle_pinwheel_anim.h @@ -1,4 +1,4 @@ -#ifndef DISABLE_RGB_MATRIX_CYCLE_PINWHEEL +#ifdef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL RGB_MATRIX_EFFECT(CYCLE_PINWHEEL) # ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS @@ -10,4 +10,4 @@ static HSV CYCLE_PINWHEEL_math(HSV hsv, int16_t dx, int16_t dy, uint8_t time) { bool CYCLE_PINWHEEL(effect_params_t* params) { return effect_runner_dx_dy(params, &CYCLE_PINWHEEL_math); } # endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS -#endif // DISABLE_RGB_MATRIX_CYCLE_PINWHEEL +#endif // ENABLE_RGB_MATRIX_CYCLE_PINWHEEL diff --git a/quantum/rgb_matrix_animations/cycle_spiral_anim.h b/quantum/rgb_matrix/animations/cycle_spiral_anim.h similarity index 81% rename from quantum/rgb_matrix_animations/cycle_spiral_anim.h rename to quantum/rgb_matrix/animations/cycle_spiral_anim.h index 80cfb0dbc7da..482c7e7da63c 100644 --- a/quantum/rgb_matrix_animations/cycle_spiral_anim.h +++ b/quantum/rgb_matrix/animations/cycle_spiral_anim.h @@ -1,4 +1,4 @@ -#ifndef DISABLE_RGB_MATRIX_CYCLE_SPIRAL +#ifdef ENABLE_RGB_MATRIX_CYCLE_SPIRAL RGB_MATRIX_EFFECT(CYCLE_SPIRAL) # ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS @@ -10,4 +10,4 @@ static HSV CYCLE_SPIRAL_math(HSV hsv, int16_t dx, int16_t dy, uint8_t dist, uint bool CYCLE_SPIRAL(effect_params_t* params) { return effect_runner_dx_dy_dist(params, &CYCLE_SPIRAL_math); } # endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS -#endif // DISABLE_RGB_MATRIX_CYCLE_SPIRAL +#endif // ENABLE_RGB_MATRIX_CYCLE_SPIRAL diff --git a/quantum/rgb_matrix/animations/cycle_up_down_anim.h b/quantum/rgb_matrix/animations/cycle_up_down_anim.h new file mode 100644 index 000000000000..277edccb2f12 --- /dev/null +++ b/quantum/rgb_matrix/animations/cycle_up_down_anim.h @@ -0,0 +1,13 @@ +#ifdef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +RGB_MATRIX_EFFECT(CYCLE_UP_DOWN) +# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS + +static HSV CYCLE_UP_DOWN_math(HSV hsv, uint8_t i, uint8_t time) { + hsv.h = g_led_config.point[i].y - time; + return hsv; +} + +bool CYCLE_UP_DOWN(effect_params_t* params) { return effect_runner_i(params, &CYCLE_UP_DOWN_math); } + +# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS +#endif // ENABLE_RGB_MATRIX_CYCLE_UP_DOWN diff --git a/quantum/rgb_matrix_animations/digital_rain_anim.h b/quantum/rgb_matrix/animations/digital_rain_anim.h similarity index 96% rename from quantum/rgb_matrix_animations/digital_rain_anim.h rename to quantum/rgb_matrix/animations/digital_rain_anim.h index 1de45f8e8db3..8ce8fd7039bb 100644 --- a/quantum/rgb_matrix_animations/digital_rain_anim.h +++ b/quantum/rgb_matrix/animations/digital_rain_anim.h @@ -1,4 +1,4 @@ -#if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS) && !defined(DISABLE_RGB_MATRIX_DIGITAL_RAIN) +#if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS) && defined(ENABLE_RGB_MATRIX_DIGITAL_RAIN) RGB_MATRIX_EFFECT(DIGITAL_RAIN) # ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS @@ -72,4 +72,4 @@ bool DIGITAL_RAIN(effect_params_t* params) { } # endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS -#endif // defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS) && !defined(DISABLE_RGB_MATRIX_DIGITAL_RAIN) +#endif // defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS) && !defined(ENABLE_RGB_MATRIX_DIGITAL_RAIN) diff --git a/quantum/rgb_matrix/animations/dual_beacon_anim.h b/quantum/rgb_matrix/animations/dual_beacon_anim.h new file mode 100644 index 000000000000..dbe9b3ecf166 --- /dev/null +++ b/quantum/rgb_matrix/animations/dual_beacon_anim.h @@ -0,0 +1,13 @@ +#ifdef ENABLE_RGB_MATRIX_DUAL_BEACON +RGB_MATRIX_EFFECT(DUAL_BEACON) +# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS + +static HSV DUAL_BEACON_math(HSV hsv, int8_t sin, int8_t cos, uint8_t i, uint8_t time) { + hsv.h += ((g_led_config.point[i].y - k_rgb_matrix_center.y) * cos + (g_led_config.point[i].x - k_rgb_matrix_center.x) * sin) / 128; + return hsv; +} + +bool DUAL_BEACON(effect_params_t* params) { return effect_runner_sin_cos_i(params, &DUAL_BEACON_math); } + +# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS +#endif // ENABLE_RGB_MATRIX_DUAL_BEACON diff --git a/quantum/rgb_matrix_animations/gradient_left_right_anim.h b/quantum/rgb_matrix/animations/gradient_left_right_anim.h similarity index 82% rename from quantum/rgb_matrix_animations/gradient_left_right_anim.h rename to quantum/rgb_matrix/animations/gradient_left_right_anim.h index 53dfd04e2c85..8bb5e570bd0f 100644 --- a/quantum/rgb_matrix_animations/gradient_left_right_anim.h +++ b/quantum/rgb_matrix/animations/gradient_left_right_anim.h @@ -1,4 +1,4 @@ -#ifndef DISABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#ifdef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT RGB_MATRIX_EFFECT(GRADIENT_LEFT_RIGHT) # ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS @@ -15,8 +15,8 @@ bool GRADIENT_LEFT_RIGHT(effect_params_t* params) { RGB rgb = rgb_matrix_hsv_to_rgb(hsv); rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); } - return led_max < DRIVER_LED_TOTAL; + return rgb_matrix_check_finished_leds(led_max); } # endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS -#endif // DISABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#endif // ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT diff --git a/quantum/rgb_matrix_animations/gradient_up_down_anim.h b/quantum/rgb_matrix/animations/gradient_up_down_anim.h similarity index 83% rename from quantum/rgb_matrix_animations/gradient_up_down_anim.h rename to quantum/rgb_matrix/animations/gradient_up_down_anim.h index 7e0d2898cf7b..a5674583e39d 100644 --- a/quantum/rgb_matrix_animations/gradient_up_down_anim.h +++ b/quantum/rgb_matrix/animations/gradient_up_down_anim.h @@ -1,4 +1,4 @@ -#ifndef DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#ifdef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN RGB_MATRIX_EFFECT(GRADIENT_UP_DOWN) # ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS @@ -15,8 +15,8 @@ bool GRADIENT_UP_DOWN(effect_params_t* params) { RGB rgb = rgb_matrix_hsv_to_rgb(hsv); rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); } - return led_max < DRIVER_LED_TOTAL; + return rgb_matrix_check_finished_leds(led_max); } # endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS -#endif // DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#endif // ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN diff --git a/quantum/rgb_matrix_animations/hue_breathing_anim.h b/quantum/rgb_matrix/animations/hue_breathing_anim.h similarity index 89% rename from quantum/rgb_matrix_animations/hue_breathing_anim.h rename to quantum/rgb_matrix/animations/hue_breathing_anim.h index 54dea958af5b..82be1a44241f 100644 --- a/quantum/rgb_matrix_animations/hue_breathing_anim.h +++ b/quantum/rgb_matrix/animations/hue_breathing_anim.h @@ -1,4 +1,4 @@ -#ifndef DISABLE_RGB_MATRIX_HUE_BREATHING +#ifdef ENABLE_RGB_MATRIX_HUE_BREATHING RGB_MATRIX_EFFECT(HUE_BREATHING) # ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS @@ -15,7 +15,7 @@ bool HUE_BREATHING(effect_params_t* params) { RGB_MATRIX_TEST_LED_FLAGS(); rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); } - return led_max < DRIVER_LED_TOTAL; + return rgb_matrix_check_finished_leds(led_max); } # endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS diff --git a/quantum/rgb_matrix_animations/hue_pendulum_anim.h b/quantum/rgb_matrix/animations/hue_pendulum_anim.h similarity index 94% rename from quantum/rgb_matrix_animations/hue_pendulum_anim.h rename to quantum/rgb_matrix/animations/hue_pendulum_anim.h index 2d8d36174f86..a6e1c1074de7 100644 --- a/quantum/rgb_matrix_animations/hue_pendulum_anim.h +++ b/quantum/rgb_matrix/animations/hue_pendulum_anim.h @@ -1,4 +1,4 @@ -#ifndef DISABLE_RGB_MATRIX_HUE_PENDULUM +#ifdef ENABLE_RGB_MATRIX_HUE_PENDULUM RGB_MATRIX_EFFECT(HUE_PENDULUM) # ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS diff --git a/quantum/rgb_matrix_animations/hue_wave_anim.h b/quantum/rgb_matrix/animations/hue_wave_anim.h similarity index 94% rename from quantum/rgb_matrix_animations/hue_wave_anim.h rename to quantum/rgb_matrix/animations/hue_wave_anim.h index fd9026fc90d6..b1c72b7336f6 100644 --- a/quantum/rgb_matrix_animations/hue_wave_anim.h +++ b/quantum/rgb_matrix/animations/hue_wave_anim.h @@ -1,4 +1,4 @@ -#ifndef DISABLE_RGB_MATRIX_HUE_WAVE +#ifdef ENABLE_RGB_MATRIX_HUE_WAVE RGB_MATRIX_EFFECT(HUE_WAVE) # ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS diff --git a/quantum/rgb_matrix_animations/jellybean_raindrops_anim.h b/quantum/rgb_matrix/animations/jellybean_raindrops_anim.h similarity index 78% rename from quantum/rgb_matrix_animations/jellybean_raindrops_anim.h rename to quantum/rgb_matrix/animations/jellybean_raindrops_anim.h index 9493b3850815..3ffb57eb3592 100644 --- a/quantum/rgb_matrix_animations/jellybean_raindrops_anim.h +++ b/quantum/rgb_matrix/animations/jellybean_raindrops_anim.h @@ -1,10 +1,10 @@ -#ifndef DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#ifdef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS RGB_MATRIX_EFFECT(JELLYBEAN_RAINDROPS) # ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS static void jellybean_raindrops_set_color(int i, effect_params_t* params) { if (!HAS_ANY_FLAGS(g_led_config.flags[i], params->flags)) return; - HSV hsv = {rand() & 0xFF, rand() & 0xFF, rgb_matrix_config.hsv.v}; + HSV hsv = {rand() & 0xFF, qadd8(rand() & 0x7F, 0x80), rgb_matrix_config.hsv.v}; RGB rgb = rgb_matrix_hsv_to_rgb(hsv); rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); } @@ -22,8 +22,8 @@ bool JELLYBEAN_RAINDROPS(effect_params_t* params) { for (int i = led_min; i < led_max; i++) { jellybean_raindrops_set_color(i, params); } - return led_max < DRIVER_LED_TOTAL; + return rgb_matrix_check_finished_leds(led_max); } # endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS -#endif // DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#endif // ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS diff --git a/quantum/rgb_matrix/animations/pixel_fractal_anim.h b/quantum/rgb_matrix/animations/pixel_fractal_anim.h new file mode 100644 index 000000000000..8e25ec402c25 --- /dev/null +++ b/quantum/rgb_matrix/animations/pixel_fractal_anim.h @@ -0,0 +1,74 @@ +/* Copyright (C) 2021 @filterpaper + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +// Inspired from 4x12 fractal created by @schwarzgrau + +#ifdef ENABLE_RGB_MATRIX_PIXEL_FRACTAL +RGB_MATRIX_EFFECT(PIXEL_FRACTAL) +# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS + +static bool PIXEL_FRACTAL(effect_params_t* params) { +# define MID_COL MATRIX_COLS / 2 + static bool led[MATRIX_ROWS][MATRIX_COLS]; + + static uint32_t wait_timer = 0; + if (wait_timer > g_rgb_timer) { + return false; + } + + inline uint32_t interval(void) { return 3000 / scale16by8(qadd8(rgb_matrix_config.speed, 16), 16); } + + RGB rgb = rgb_matrix_hsv_to_rgb(rgb_matrix_config.hsv); + for (uint8_t h = 0; h < MATRIX_ROWS; ++h) { + for (uint8_t l = 0; l < MID_COL - 1; ++l) { // Light and move left columns outwards + if (led[h][l]) { + rgb_matrix_set_color(g_led_config.matrix_co[h][l], rgb.r, rgb.g, rgb.b); + } else { + rgb_matrix_set_color(g_led_config.matrix_co[h][l], 0, 0, 0); + } + led[h][l] = led[h][l + 1]; + } + + for (uint8_t r = MATRIX_COLS - 1; r > MID_COL; --r) { // Light and move right columns outwards + if (led[h][r]) { + rgb_matrix_set_color(g_led_config.matrix_co[h][r], rgb.r, rgb.g, rgb.b); + } else { + rgb_matrix_set_color(g_led_config.matrix_co[h][r], 0, 0, 0); + } + led[h][r] = led[h][r - 1]; + } + + // Light both middle columns + if (led[h][MID_COL]) { + rgb_matrix_set_color(g_led_config.matrix_co[h][MID_COL], rgb.r, rgb.g, rgb.b); + } else { + rgb_matrix_set_color(g_led_config.matrix_co[h][MID_COL], 0, 0, 0); + } + if (led[h][MID_COL - 1]) { + rgb_matrix_set_color(g_led_config.matrix_co[h][MID_COL - 1], rgb.r, rgb.g, rgb.b); + } else { + rgb_matrix_set_color(g_led_config.matrix_co[h][MID_COL - 1], 0, 0, 0); + } + + // Generate new random fractal columns + led[h][MID_COL] = led[h][MID_COL - 1] = (random8() & 3) ? false : true; + } + + wait_timer = g_rgb_timer + interval(); + return false; +} +# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS +#endif // ENABLE_RGB_MATRIX_PIXEL_FRACTAL diff --git a/quantum/rgb_matrix/animations/pixel_rain_anim.h b/quantum/rgb_matrix/animations/pixel_rain_anim.h new file mode 100644 index 000000000000..001649aa6e0c --- /dev/null +++ b/quantum/rgb_matrix/animations/pixel_rain_anim.h @@ -0,0 +1,48 @@ +/* Copyright (C) 2021 @filterpaper + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifdef ENABLE_RGB_MATRIX_PIXEL_RAIN +RGB_MATRIX_EFFECT(PIXEL_RAIN) +# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS + +static bool PIXEL_RAIN(effect_params_t* params) { + static uint32_t wait_timer = 0; + if (wait_timer > g_rgb_timer) { + return false; + } + + inline uint32_t interval(void) { return 500 / scale16by8(qadd8(rgb_matrix_config.speed, 16), 16); } + + bool rain_pixel(uint8_t i, effect_params_t * params, bool off) { + if (!HAS_ANY_FLAGS(g_led_config.flags[i], params->flags)) { + return true; + } + if (off) { + rgb_matrix_set_color(i, 0, 0, 0); + } else { + HSV hsv = {random8(), qadd8(random8() >> 1, 127), rgb_matrix_config.hsv.v}; + RGB rgb = rgb_matrix_hsv_to_rgb(hsv); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + } + wait_timer = g_rgb_timer + interval(); + return false; + } + + return rain_pixel(mod8(random8(), DRIVER_LED_TOTAL), params, random8() & 2); +} + +# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS +#endif // ENABLE_RGB_MATRIX_PIXEL_RAIN diff --git a/quantum/rgb_matrix_animations/rainbow_beacon_anim.h b/quantum/rgb_matrix/animations/rainbow_beacon_anim.h similarity index 84% rename from quantum/rgb_matrix_animations/rainbow_beacon_anim.h rename to quantum/rgb_matrix/animations/rainbow_beacon_anim.h index 977261182f4d..cd529958dbfd 100644 --- a/quantum/rgb_matrix_animations/rainbow_beacon_anim.h +++ b/quantum/rgb_matrix/animations/rainbow_beacon_anim.h @@ -1,4 +1,4 @@ -#ifndef DISABLE_RGB_MATRIX_RAINBOW_BEACON +#ifdef ENABLE_RGB_MATRIX_RAINBOW_BEACON RGB_MATRIX_EFFECT(RAINBOW_BEACON) # ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS @@ -10,4 +10,4 @@ static HSV RAINBOW_BEACON_math(HSV hsv, int8_t sin, int8_t cos, uint8_t i, uint8 bool RAINBOW_BEACON(effect_params_t* params) { return effect_runner_sin_cos_i(params, &RAINBOW_BEACON_math); } # endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS -#endif // DISABLE_RGB_MATRIX_RAINBOW_BEACON +#endif // ENABLE_RGB_MATRIX_RAINBOW_BEACON diff --git a/quantum/rgb_matrix_animations/rainbow_moving_chevron_anim.h b/quantum/rgb_matrix/animations/rainbow_moving_chevron_anim.h similarity index 80% rename from quantum/rgb_matrix_animations/rainbow_moving_chevron_anim.h rename to quantum/rgb_matrix/animations/rainbow_moving_chevron_anim.h index e51e7b251621..2f3de64e9dca 100644 --- a/quantum/rgb_matrix_animations/rainbow_moving_chevron_anim.h +++ b/quantum/rgb_matrix/animations/rainbow_moving_chevron_anim.h @@ -1,4 +1,4 @@ -#ifndef DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#ifdef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON RGB_MATRIX_EFFECT(RAINBOW_MOVING_CHEVRON) # ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS @@ -10,4 +10,4 @@ static HSV RAINBOW_MOVING_CHEVRON_math(HSV hsv, uint8_t i, uint8_t time) { bool RAINBOW_MOVING_CHEVRON(effect_params_t* params) { return effect_runner_i(params, &RAINBOW_MOVING_CHEVRON_math); } # endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS -#endif // DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#endif // ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON diff --git a/quantum/rgb_matrix_animations/rainbow_pinwheels_anim.h b/quantum/rgb_matrix/animations/rainbow_pinwheels_anim.h similarity index 84% rename from quantum/rgb_matrix_animations/rainbow_pinwheels_anim.h rename to quantum/rgb_matrix/animations/rainbow_pinwheels_anim.h index 1cd4ed2acf06..dae2b5d19044 100644 --- a/quantum/rgb_matrix_animations/rainbow_pinwheels_anim.h +++ b/quantum/rgb_matrix/animations/rainbow_pinwheels_anim.h @@ -1,4 +1,4 @@ -#ifndef DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#ifdef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS RGB_MATRIX_EFFECT(RAINBOW_PINWHEELS) # ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS @@ -10,4 +10,4 @@ static HSV RAINBOW_PINWHEELS_math(HSV hsv, int8_t sin, int8_t cos, uint8_t i, ui bool RAINBOW_PINWHEELS(effect_params_t* params) { return effect_runner_sin_cos_i(params, &RAINBOW_PINWHEELS_math); } # endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS -#endif // DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#endif // ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS diff --git a/quantum/rgb_matrix_animations/raindrops_anim.h b/quantum/rgb_matrix/animations/raindrops_anim.h similarity index 90% rename from quantum/rgb_matrix_animations/raindrops_anim.h rename to quantum/rgb_matrix/animations/raindrops_anim.h index 38359cdca78b..4b1b9dd9ec4d 100644 --- a/quantum/rgb_matrix_animations/raindrops_anim.h +++ b/quantum/rgb_matrix/animations/raindrops_anim.h @@ -1,4 +1,4 @@ -#ifndef DISABLE_RGB_MATRIX_RAINDROPS +#ifdef ENABLE_RGB_MATRIX_RAINDROPS RGB_MATRIX_EFFECT(RAINDROPS) # ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS @@ -32,8 +32,8 @@ bool RAINDROPS(effect_params_t* params) { for (int i = led_min; i < led_max; i++) { raindrops_set_color(i, params); } - return led_max < DRIVER_LED_TOTAL; + return rgb_matrix_check_finished_leds(led_max); } # endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS -#endif // DISABLE_RGB_MATRIX_RAINDROPS +#endif // ENABLE_RGB_MATRIX_RAINDROPS diff --git a/quantum/rgb_matrix/animations/rgb_matrix_effects.inc b/quantum/rgb_matrix/animations/rgb_matrix_effects.inc new file mode 100644 index 000000000000..27ce34723511 --- /dev/null +++ b/quantum/rgb_matrix/animations/rgb_matrix_effects.inc @@ -0,0 +1,39 @@ +// Add your new core rgb matrix effect here, order determines enum order +#include "solid_color_anim.h" +#include "alpha_mods_anim.h" +#include "gradient_up_down_anim.h" +#include "gradient_left_right_anim.h" +#include "breathing_anim.h" +#include "colorband_sat_anim.h" +#include "colorband_val_anim.h" +#include "colorband_pinwheel_sat_anim.h" +#include "colorband_pinwheel_val_anim.h" +#include "colorband_spiral_sat_anim.h" +#include "colorband_spiral_val_anim.h" +#include "cycle_all_anim.h" +#include "cycle_left_right_anim.h" +#include "cycle_up_down_anim.h" +#include "rainbow_moving_chevron_anim.h" +#include "cycle_out_in_anim.h" +#include "cycle_out_in_dual_anim.h" +#include "cycle_pinwheel_anim.h" +#include "cycle_spiral_anim.h" +#include "dual_beacon_anim.h" +#include "rainbow_beacon_anim.h" +#include "rainbow_pinwheels_anim.h" +#include "raindrops_anim.h" +#include "jellybean_raindrops_anim.h" +#include "hue_breathing_anim.h" +#include "hue_pendulum_anim.h" +#include "hue_wave_anim.h" +#include "pixel_rain_anim.h" +#include "pixel_fractal_anim.h" +#include "typing_heatmap_anim.h" +#include "digital_rain_anim.h" +#include "solid_reactive_simple_anim.h" +#include "solid_reactive_anim.h" +#include "solid_reactive_wide.h" +#include "solid_reactive_cross.h" +#include "solid_reactive_nexus.h" +#include "splash_anim.h" +#include "solid_splash_anim.h" diff --git a/quantum/rgb_matrix/animations/runners/effect_runner_dx_dy.h b/quantum/rgb_matrix/animations/runners/effect_runner_dx_dy.h new file mode 100644 index 000000000000..2ad0f22c287d --- /dev/null +++ b/quantum/rgb_matrix/animations/runners/effect_runner_dx_dy.h @@ -0,0 +1,17 @@ +#pragma once + +typedef HSV (*dx_dy_f)(HSV hsv, int16_t dx, int16_t dy, uint8_t time); + +bool effect_runner_dx_dy(effect_params_t* params, dx_dy_f effect_func) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + + uint8_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 2); + for (uint8_t i = led_min; i < led_max; i++) { + RGB_MATRIX_TEST_LED_FLAGS(); + int16_t dx = g_led_config.point[i].x - k_rgb_matrix_center.x; + int16_t dy = g_led_config.point[i].y - k_rgb_matrix_center.y; + RGB rgb = rgb_matrix_hsv_to_rgb(effect_func(rgb_matrix_config.hsv, dx, dy, time)); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + } + return rgb_matrix_check_finished_leds(led_max); +} diff --git a/quantum/rgb_matrix/animations/runners/effect_runner_dx_dy_dist.h b/quantum/rgb_matrix/animations/runners/effect_runner_dx_dy_dist.h new file mode 100644 index 000000000000..bcae7c79b6b8 --- /dev/null +++ b/quantum/rgb_matrix/animations/runners/effect_runner_dx_dy_dist.h @@ -0,0 +1,18 @@ +#pragma once + +typedef HSV (*dx_dy_dist_f)(HSV hsv, int16_t dx, int16_t dy, uint8_t dist, uint8_t time); + +bool effect_runner_dx_dy_dist(effect_params_t* params, dx_dy_dist_f effect_func) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + + uint8_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 2); + for (uint8_t i = led_min; i < led_max; i++) { + RGB_MATRIX_TEST_LED_FLAGS(); + int16_t dx = g_led_config.point[i].x - k_rgb_matrix_center.x; + int16_t dy = g_led_config.point[i].y - k_rgb_matrix_center.y; + uint8_t dist = sqrt16(dx * dx + dy * dy); + RGB rgb = rgb_matrix_hsv_to_rgb(effect_func(rgb_matrix_config.hsv, dx, dy, dist, time)); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + } + return rgb_matrix_check_finished_leds(led_max); +} diff --git a/quantum/rgb_matrix/animations/runners/effect_runner_i.h b/quantum/rgb_matrix/animations/runners/effect_runner_i.h new file mode 100644 index 000000000000..b4de2992b64a --- /dev/null +++ b/quantum/rgb_matrix/animations/runners/effect_runner_i.h @@ -0,0 +1,15 @@ +#pragma once + +typedef HSV (*i_f)(HSV hsv, uint8_t i, uint8_t time); + +bool effect_runner_i(effect_params_t* params, i_f effect_func) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + + uint8_t time = scale16by8(g_rgb_timer, qadd8(rgb_matrix_config.speed / 4, 1)); + for (uint8_t i = led_min; i < led_max; i++) { + RGB_MATRIX_TEST_LED_FLAGS(); + RGB rgb = rgb_matrix_hsv_to_rgb(effect_func(rgb_matrix_config.hsv, i, time)); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + } + return rgb_matrix_check_finished_leds(led_max); +} diff --git a/quantum/rgb_matrix/animations/runners/effect_runner_reactive.h b/quantum/rgb_matrix/animations/runners/effect_runner_reactive.h new file mode 100644 index 000000000000..d5c1a26cefe7 --- /dev/null +++ b/quantum/rgb_matrix/animations/runners/effect_runner_reactive.h @@ -0,0 +1,29 @@ +#pragma once + +#ifdef RGB_MATRIX_KEYREACTIVE_ENABLED + +typedef HSV (*reactive_f)(HSV hsv, uint16_t offset); + +bool effect_runner_reactive(effect_params_t* params, reactive_f effect_func) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + + uint16_t max_tick = 65535 / qadd8(rgb_matrix_config.speed, 1); + for (uint8_t i = led_min; i < led_max; i++) { + RGB_MATRIX_TEST_LED_FLAGS(); + uint16_t tick = max_tick; + // Reverse search to find most recent key hit + for (int8_t j = g_last_hit_tracker.count - 1; j >= 0; j--) { + if (g_last_hit_tracker.index[j] == i && g_last_hit_tracker.tick[j] < tick) { + tick = g_last_hit_tracker.tick[j]; + break; + } + } + + uint16_t offset = scale16by8(tick, qadd8(rgb_matrix_config.speed, 1)); + RGB rgb = rgb_matrix_hsv_to_rgb(effect_func(rgb_matrix_config.hsv, offset)); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + } + return rgb_matrix_check_finished_leds(led_max); +} + +#endif // RGB_MATRIX_KEYREACTIVE_ENABLED diff --git a/quantum/rgb_matrix/animations/runners/effect_runner_reactive_splash.h b/quantum/rgb_matrix/animations/runners/effect_runner_reactive_splash.h new file mode 100644 index 000000000000..d3a6e4e72f0f --- /dev/null +++ b/quantum/rgb_matrix/animations/runners/effect_runner_reactive_splash.h @@ -0,0 +1,29 @@ +#pragma once + +#ifdef RGB_MATRIX_KEYREACTIVE_ENABLED + +typedef HSV (*reactive_splash_f)(HSV hsv, int16_t dx, int16_t dy, uint8_t dist, uint16_t tick); + +bool effect_runner_reactive_splash(uint8_t start, effect_params_t* params, reactive_splash_f effect_func) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + + uint8_t count = g_last_hit_tracker.count; + for (uint8_t i = led_min; i < led_max; i++) { + RGB_MATRIX_TEST_LED_FLAGS(); + HSV hsv = rgb_matrix_config.hsv; + hsv.v = 0; + for (uint8_t j = start; j < count; j++) { + int16_t dx = g_led_config.point[i].x - g_last_hit_tracker.x[j]; + int16_t dy = g_led_config.point[i].y - g_last_hit_tracker.y[j]; + uint8_t dist = sqrt16(dx * dx + dy * dy); + uint16_t tick = scale16by8(g_last_hit_tracker.tick[j], qadd8(rgb_matrix_config.speed, 1)); + hsv = effect_func(hsv, dx, dy, dist, tick); + } + hsv.v = scale8(hsv.v, rgb_matrix_config.hsv.v); + RGB rgb = rgb_matrix_hsv_to_rgb(hsv); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + } + return rgb_matrix_check_finished_leds(led_max); +} + +#endif // RGB_MATRIX_KEYREACTIVE_ENABLED diff --git a/quantum/rgb_matrix/animations/runners/effect_runner_sin_cos_i.h b/quantum/rgb_matrix/animations/runners/effect_runner_sin_cos_i.h new file mode 100644 index 000000000000..7776491d5125 --- /dev/null +++ b/quantum/rgb_matrix/animations/runners/effect_runner_sin_cos_i.h @@ -0,0 +1,17 @@ +#pragma once + +typedef HSV (*sin_cos_i_f)(HSV hsv, int8_t sin, int8_t cos, uint8_t i, uint8_t time); + +bool effect_runner_sin_cos_i(effect_params_t* params, sin_cos_i_f effect_func) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + + uint16_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 4); + int8_t cos_value = cos8(time) - 128; + int8_t sin_value = sin8(time) - 128; + for (uint8_t i = led_min; i < led_max; i++) { + RGB_MATRIX_TEST_LED_FLAGS(); + RGB rgb = rgb_matrix_hsv_to_rgb(effect_func(rgb_matrix_config.hsv, cos_value, sin_value, i, time)); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + } + return rgb_matrix_check_finished_leds(led_max); +} diff --git a/quantum/rgb_matrix/animations/runners/rgb_matrix_runners.inc b/quantum/rgb_matrix/animations/runners/rgb_matrix_runners.inc new file mode 100644 index 000000000000..c09022bb0fad --- /dev/null +++ b/quantum/rgb_matrix/animations/runners/rgb_matrix_runners.inc @@ -0,0 +1,6 @@ +#include "effect_runner_dx_dy_dist.h" +#include "effect_runner_dx_dy.h" +#include "effect_runner_i.h" +#include "effect_runner_sin_cos_i.h" +#include "effect_runner_reactive.h" +#include "effect_runner_reactive_splash.h" diff --git a/quantum/rgb_matrix_animations/solid_color_anim.h b/quantum/rgb_matrix/animations/solid_color_anim.h similarity index 88% rename from quantum/rgb_matrix_animations/solid_color_anim.h rename to quantum/rgb_matrix/animations/solid_color_anim.h index 79d63cf133b8..4209959468af 100644 --- a/quantum/rgb_matrix_animations/solid_color_anim.h +++ b/quantum/rgb_matrix/animations/solid_color_anim.h @@ -9,7 +9,7 @@ bool SOLID_COLOR(effect_params_t* params) { RGB_MATRIX_TEST_LED_FLAGS(); rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); } - return led_max < DRIVER_LED_TOTAL; + return rgb_matrix_check_finished_leds(led_max); } #endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS diff --git a/quantum/rgb_matrix_animations/solid_reactive_anim.h b/quantum/rgb_matrix/animations/solid_reactive_anim.h similarity index 81% rename from quantum/rgb_matrix_animations/solid_reactive_anim.h rename to quantum/rgb_matrix/animations/solid_reactive_anim.h index d45bb961bc5a..360d05a67af3 100644 --- a/quantum/rgb_matrix_animations/solid_reactive_anim.h +++ b/quantum/rgb_matrix/animations/solid_reactive_anim.h @@ -1,5 +1,5 @@ #ifdef RGB_MATRIX_KEYREACTIVE_ENABLED -# ifndef DISABLE_RGB_MATRIX_SOLID_REACTIVE +# ifdef ENABLE_RGB_MATRIX_SOLID_REACTIVE RGB_MATRIX_EFFECT(SOLID_REACTIVE) # ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS @@ -11,5 +11,5 @@ static HSV SOLID_REACTIVE_math(HSV hsv, uint16_t offset) { bool SOLID_REACTIVE(effect_params_t* params) { return effect_runner_reactive(params, &SOLID_REACTIVE_math); } # endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS -# endif // DISABLE_RGB_MATRIX_SOLID_REACTIVE +# endif // ENABLE_RGB_MATRIX_SOLID_REACTIVE #endif // RGB_MATRIX_KEYREACTIVE_ENABLED diff --git a/quantum/rgb_matrix/animations/solid_reactive_cross.h b/quantum/rgb_matrix/animations/solid_reactive_cross.h new file mode 100644 index 000000000000..496651f8a5fc --- /dev/null +++ b/quantum/rgb_matrix/animations/solid_reactive_cross.h @@ -0,0 +1,36 @@ +#ifdef RGB_MATRIX_KEYREACTIVE_ENABLED +# if defined(ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS) || defined(ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS) + +# ifdef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +RGB_MATRIX_EFFECT(SOLID_REACTIVE_CROSS) +# endif + +# ifdef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +RGB_MATRIX_EFFECT(SOLID_REACTIVE_MULTICROSS) +# endif + +# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS + +static HSV SOLID_REACTIVE_CROSS_math(HSV hsv, int16_t dx, int16_t dy, uint8_t dist, uint16_t tick) { + uint16_t effect = tick + dist; + dx = dx < 0 ? dx * -1 : dx; + dy = dy < 0 ? dy * -1 : dy; + dx = dx * 16 > 255 ? 255 : dx * 16; + dy = dy * 16 > 255 ? 255 : dy * 16; + effect += dx > dy ? dy : dx; + if (effect > 255) effect = 255; + hsv.v = qadd8(hsv.v, 255 - effect); + return hsv; +} + +# ifdef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +bool SOLID_REACTIVE_CROSS(effect_params_t* params) { return effect_runner_reactive_splash(qsub8(g_last_hit_tracker.count, 1), params, &SOLID_REACTIVE_CROSS_math); } +# endif + +# ifdef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +bool SOLID_REACTIVE_MULTICROSS(effect_params_t* params) { return effect_runner_reactive_splash(0, params, &SOLID_REACTIVE_CROSS_math); } +# endif + +# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS +# endif // !defined(ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS) || defined(ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS) +#endif // RGB_MATRIX_KEYREACTIVE_ENABLED diff --git a/quantum/rgb_matrix/animations/solid_reactive_nexus.h b/quantum/rgb_matrix/animations/solid_reactive_nexus.h new file mode 100644 index 000000000000..3562e74a7279 --- /dev/null +++ b/quantum/rgb_matrix/animations/solid_reactive_nexus.h @@ -0,0 +1,34 @@ +#ifdef RGB_MATRIX_KEYREACTIVE_ENABLED +# if defined(ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS) || defined(ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS) + +# ifdef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +RGB_MATRIX_EFFECT(SOLID_REACTIVE_NEXUS) +# endif + +# ifdef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +RGB_MATRIX_EFFECT(SOLID_REACTIVE_MULTINEXUS) +# endif + +# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS + +static HSV SOLID_REACTIVE_NEXUS_math(HSV hsv, int16_t dx, int16_t dy, uint8_t dist, uint16_t tick) { + uint16_t effect = tick - dist; + if (effect > 255) effect = 255; + if (dist > 72) effect = 255; + if ((dx > 8 || dx < -8) && (dy > 8 || dy < -8)) effect = 255; + hsv.v = qadd8(hsv.v, 255 - effect); + hsv.h = rgb_matrix_config.hsv.h + dy / 4; + return hsv; +} + +# ifdef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +bool SOLID_REACTIVE_NEXUS(effect_params_t* params) { return effect_runner_reactive_splash(qsub8(g_last_hit_tracker.count, 1), params, &SOLID_REACTIVE_NEXUS_math); } +# endif + +# ifdef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +bool SOLID_REACTIVE_MULTINEXUS(effect_params_t* params) { return effect_runner_reactive_splash(0, params, &SOLID_REACTIVE_NEXUS_math); } +# endif + +# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS +# endif // !defined(ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS) || !defined(ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS) +#endif // RGB_MATRIX_KEYREACTIVE_ENABLED diff --git a/quantum/rgb_matrix/animations/solid_reactive_simple_anim.h b/quantum/rgb_matrix/animations/solid_reactive_simple_anim.h new file mode 100644 index 000000000000..69189f636b20 --- /dev/null +++ b/quantum/rgb_matrix/animations/solid_reactive_simple_anim.h @@ -0,0 +1,15 @@ +#ifdef RGB_MATRIX_KEYREACTIVE_ENABLED +# ifdef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +RGB_MATRIX_EFFECT(SOLID_REACTIVE_SIMPLE) +# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS + +static HSV SOLID_REACTIVE_SIMPLE_math(HSV hsv, uint16_t offset) { + hsv.v = scale8(255 - offset, hsv.v); + return hsv; +} + +bool SOLID_REACTIVE_SIMPLE(effect_params_t* params) { return effect_runner_reactive(params, &SOLID_REACTIVE_SIMPLE_math); } + +# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS +# endif // ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#endif // RGB_MATRIX_KEYREACTIVE_ENABLED diff --git a/quantum/rgb_matrix/animations/solid_reactive_wide.h b/quantum/rgb_matrix/animations/solid_reactive_wide.h new file mode 100644 index 000000000000..a613c7ff5f7c --- /dev/null +++ b/quantum/rgb_matrix/animations/solid_reactive_wide.h @@ -0,0 +1,31 @@ +#ifdef RGB_MATRIX_KEYREACTIVE_ENABLED +# if defined(ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE) || defined(ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE) + +# ifdef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +RGB_MATRIX_EFFECT(SOLID_REACTIVE_WIDE) +# endif + +# ifdef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +RGB_MATRIX_EFFECT(SOLID_REACTIVE_MULTIWIDE) +# endif + +# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS + +static HSV SOLID_REACTIVE_WIDE_math(HSV hsv, int16_t dx, int16_t dy, uint8_t dist, uint16_t tick) { + uint16_t effect = tick + dist * 5; + if (effect > 255) effect = 255; + hsv.v = qadd8(hsv.v, 255 - effect); + return hsv; +} + +# ifdef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +bool SOLID_REACTIVE_WIDE(effect_params_t* params) { return effect_runner_reactive_splash(qsub8(g_last_hit_tracker.count, 1), params, &SOLID_REACTIVE_WIDE_math); } +# endif + +# ifdef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +bool SOLID_REACTIVE_MULTIWIDE(effect_params_t* params) { return effect_runner_reactive_splash(0, params, &SOLID_REACTIVE_WIDE_math); } +# endif + +# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS +# endif // !defined(ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE) || !defined(ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE) +#endif // RGB_MATRIX_KEYREACTIVE_ENABLED diff --git a/quantum/rgb_matrix/animations/solid_splash_anim.h b/quantum/rgb_matrix/animations/solid_splash_anim.h new file mode 100644 index 000000000000..bd9c1cfe2b98 --- /dev/null +++ b/quantum/rgb_matrix/animations/solid_splash_anim.h @@ -0,0 +1,31 @@ +#ifdef RGB_MATRIX_KEYREACTIVE_ENABLED +# if defined(ENABLE_RGB_MATRIX_SOLID_SPLASH) || defined(ENABLE_RGB_MATRIX_SOLID_MULTISPLASH) + +# ifdef ENABLE_RGB_MATRIX_SOLID_SPLASH +RGB_MATRIX_EFFECT(SOLID_SPLASH) +# endif + +# ifdef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH +RGB_MATRIX_EFFECT(SOLID_MULTISPLASH) +# endif + +# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS + +HSV SOLID_SPLASH_math(HSV hsv, int16_t dx, int16_t dy, uint8_t dist, uint16_t tick) { + uint16_t effect = tick - dist; + if (effect > 255) effect = 255; + hsv.v = qadd8(hsv.v, 255 - effect); + return hsv; +} + +# ifdef ENABLE_RGB_MATRIX_SOLID_SPLASH +bool SOLID_SPLASH(effect_params_t* params) { return effect_runner_reactive_splash(qsub8(g_last_hit_tracker.count, 1), params, &SOLID_SPLASH_math); } +# endif + +# ifdef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH +bool SOLID_MULTISPLASH(effect_params_t* params) { return effect_runner_reactive_splash(0, params, &SOLID_SPLASH_math); } +# endif + +# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS +# endif // !defined(ENABLE_RGB_MATRIX_SPLASH) && !defined(ENABLE_RGB_MATRIX_MULTISPLASH) +#endif // RGB_MATRIX_KEYREACTIVE_ENABLED diff --git a/quantum/rgb_matrix/animations/splash_anim.h b/quantum/rgb_matrix/animations/splash_anim.h new file mode 100644 index 000000000000..382355e9ed63 --- /dev/null +++ b/quantum/rgb_matrix/animations/splash_anim.h @@ -0,0 +1,32 @@ +#ifdef RGB_MATRIX_KEYREACTIVE_ENABLED +# if defined(ENABLE_RGB_MATRIX_SPLASH) || defined(ENABLE_RGB_MATRIX_MULTISPLASH) + +# ifdef ENABLE_RGB_MATRIX_SPLASH +RGB_MATRIX_EFFECT(SPLASH) +# endif + +# ifdef ENABLE_RGB_MATRIX_MULTISPLASH +RGB_MATRIX_EFFECT(MULTISPLASH) +# endif + +# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS + +HSV SPLASH_math(HSV hsv, int16_t dx, int16_t dy, uint8_t dist, uint16_t tick) { + uint16_t effect = tick - dist; + if (effect > 255) effect = 255; + hsv.h += effect; + hsv.v = qadd8(hsv.v, 255 - effect); + return hsv; +} + +# ifdef ENABLE_RGB_MATRIX_SPLASH +bool SPLASH(effect_params_t* params) { return effect_runner_reactive_splash(qsub8(g_last_hit_tracker.count, 1), params, &SPLASH_math); } +# endif + +# ifdef ENABLE_RGB_MATRIX_MULTISPLASH +bool MULTISPLASH(effect_params_t* params) { return effect_runner_reactive_splash(0, params, &SPLASH_math); } +# endif + +# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS +# endif // !defined(ENABLE_RGB_MATRIX_SPLASH) || !defined(ENABLE_RGB_MATRIX_MULTISPLASH) +#endif // RGB_MATRIX_KEYREACTIVE_ENABLED diff --git a/quantum/rgb_matrix_animations/typing_heatmap_anim.h b/quantum/rgb_matrix/animations/typing_heatmap_anim.h similarity index 94% rename from quantum/rgb_matrix_animations/typing_heatmap_anim.h rename to quantum/rgb_matrix/animations/typing_heatmap_anim.h index e7dda11a2f24..b66667b9b8c0 100644 --- a/quantum/rgb_matrix_animations/typing_heatmap_anim.h +++ b/quantum/rgb_matrix/animations/typing_heatmap_anim.h @@ -1,4 +1,4 @@ -#if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS) && !defined(DISABLE_RGB_MATRIX_TYPING_HEATMAP) +#if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS) && defined(ENABLE_RGB_MATRIX_TYPING_HEATMAP) RGB_MATRIX_EFFECT(TYPING_HEATMAP) # ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS @@ -83,4 +83,4 @@ bool TYPING_HEATMAP(effect_params_t* params) { } # endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS -#endif // defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS) && !defined(DISABLE_RGB_MATRIX_TYPING_HEATMAP) +#endif // defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS) && defined(ENABLE_RGB_MATRIX_TYPING_HEATMAP) diff --git a/quantum/rgb_matrix.c b/quantum/rgb_matrix/rgb_matrix.c similarity index 92% rename from quantum/rgb_matrix.c rename to quantum/rgb_matrix/rgb_matrix.c index ab8dbd849b84..558c7bd41a3c 100644 --- a/quantum/rgb_matrix.c +++ b/quantum/rgb_matrix/rgb_matrix.c @@ -34,19 +34,14 @@ const led_point_t k_rgb_matrix_center = RGB_MATRIX_CENTER; __attribute__((weak)) RGB rgb_matrix_hsv_to_rgb(HSV hsv) { return hsv_to_rgb(hsv); } // Generic effect runners -#include "rgb_matrix_runners/effect_runner_dx_dy_dist.h" -#include "rgb_matrix_runners/effect_runner_dx_dy.h" -#include "rgb_matrix_runners/effect_runner_i.h" -#include "rgb_matrix_runners/effect_runner_sin_cos_i.h" -#include "rgb_matrix_runners/effect_runner_reactive.h" -#include "rgb_matrix_runners/effect_runner_reactive_splash.h" +#include "rgb_matrix_runners.inc" // ------------------------------------------ // -----Begin rgb effect includes macros----- #define RGB_MATRIX_EFFECT(name) #define RGB_MATRIX_CUSTOM_EFFECT_IMPLS -#include "rgb_matrix_animations/rgb_matrix_effects.inc" +#include "rgb_matrix_effects.inc" #ifdef RGB_MATRIX_CUSTOM_KB # include "rgb_matrix_kb.inc" #endif @@ -67,10 +62,6 @@ __attribute__((weak)) RGB rgb_matrix_hsv_to_rgb(HSV hsv) { return hsv_to_rgb(hsv # define RGB_DISABLE_TIMEOUT 0 #endif -#if RGB_DISABLE_WHEN_USB_SUSPENDED != 1 -# undef RGB_DISABLE_WHEN_USB_SUSPENDED -#endif - #if !defined(RGB_MATRIX_MAXIMUM_BRIGHTNESS) || RGB_MATRIX_MAXIMUM_BRIGHTNESS > UINT8_MAX # undef RGB_MATRIX_MAXIMUM_BRIGHTNESS # define RGB_MATRIX_MAXIMUM_BRIGHTNESS UINT8_MAX @@ -93,7 +84,7 @@ __attribute__((weak)) RGB rgb_matrix_hsv_to_rgb(HSV hsv) { return hsv_to_rgb(hsv #endif #if !defined(RGB_MATRIX_STARTUP_MODE) -# ifndef DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# ifdef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT # define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT # else // fallback to solid colors if RGB_MATRIX_CYCLE_LEFT_RIGHT is disabled in userspace @@ -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) { @@ -187,14 +178,7 @@ uint8_t rgb_matrix_map_row_column_to_led(uint8_t row, uint8_t column, uint8_t *l void rgb_matrix_update_pwm_buffers(void) { rgb_matrix_driver.flush(); } -void rgb_matrix_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { -#if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) - if (!is_keyboard_left() && index >= k_rgb_matrix_split[0]) - rgb_matrix_driver.set_color(index - k_rgb_matrix_split[0], red, green, blue); - else if (is_keyboard_left() && index < k_rgb_matrix_split[0]) -#endif - rgb_matrix_driver.set_color(index, red, green, blue); -} +void rgb_matrix_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { rgb_matrix_driver.set_color(index, red, green, blue); } void rgb_matrix_set_color_all(uint8_t red, uint8_t green, uint8_t blue) { #if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) @@ -230,7 +214,7 @@ void process_rgb_matrix(uint8_t row, uint8_t col, bool pressed) { memcpy(&last_hit_buffer.y[0], &last_hit_buffer.y[led_count], LED_HITS_TO_REMEMBER - led_count); memcpy(&last_hit_buffer.tick[0], &last_hit_buffer.tick[led_count], (LED_HITS_TO_REMEMBER - led_count) * 2); // 16 bit memcpy(&last_hit_buffer.index[0], &last_hit_buffer.index[led_count], LED_HITS_TO_REMEMBER - led_count); - last_hit_buffer.count--; + last_hit_buffer.count = LED_HITS_TO_REMEMBER - led_count; } for (uint8_t i = 0; i < led_count; i++) { @@ -243,11 +227,11 @@ void process_rgb_matrix(uint8_t row, uint8_t col, bool pressed) { } #endif // RGB_MATRIX_KEYREACTIVE_ENABLED -#if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS) && !defined(DISABLE_RGB_MATRIX_TYPING_HEATMAP) +#if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS) && defined(ENABLE_RGB_MATRIX_TYPING_HEATMAP) if (rgb_matrix_config.mode == RGB_MATRIX_TYPING_HEATMAP) { process_rgb_matrix_typing_heatmap(row, col); } -#endif // defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS) && !defined(DISABLE_RGB_MATRIX_TYPING_HEATMAP) +#endif // defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS) && defined(ENABLE_RGB_MATRIX_TYPING_HEATMAP) } void rgb_matrix_test(void) { @@ -314,6 +298,7 @@ static void rgb_task_timers(void) { } static void rgb_task_sync(void) { + eeconfig_flush_rgb_matrix(false); // next task if (sync_timer_elapsed32(g_rgb_timer) >= RGB_MATRIX_LED_FLUSH_LIMIT) rgb_task_state = STARTING; } @@ -353,7 +338,7 @@ static void rgb_task_render(uint8_t effect) { case RGB_MATRIX_##name: \ rendering = name(&rgb_effect_params); \ break; -#include "rgb_matrix_animations/rgb_matrix_effects.inc" +#include "rgb_matrix_effects.inc" #undef RGB_MATRIX_EFFECT #if defined(RGB_MATRIX_CUSTOM_KB) || defined(RGB_MATRIX_CUSTOM_USER) @@ -489,7 +474,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(); @@ -499,8 +484,9 @@ void rgb_matrix_init(void) { void rgb_matrix_set_suspend_state(bool state) { #ifdef RGB_DISABLE_WHEN_USB_SUSPENDED - if (state) { - rgb_matrix_set_color_all(0, 0, 0); // turn off all LEDs when suspending + if (state && !suspend_state) { // only run if turning off, and only once + rgb_task_render(0); // turn off all LEDs when suspending + rgb_task_flush(0); // and actually flash led state to LEDs } suspend_state = state; #endif @@ -511,9 +497,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; - if (write_to_eeprom) { - eeconfig_update_rgb_matrix(); - } + 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); } @@ -521,7 +505,7 @@ void rgb_matrix_toggle(void) { rgb_matrix_toggle_eeprom_helper(true); } void rgb_matrix_enable(void) { rgb_matrix_enable_noeeprom(); - eeconfig_update_rgb_matrix(); + eeconfig_flag_rgb_matrix(true); } void rgb_matrix_enable_noeeprom(void) { @@ -531,7 +515,7 @@ void rgb_matrix_enable_noeeprom(void) { void rgb_matrix_disable(void) { rgb_matrix_disable_noeeprom(); - eeconfig_update_rgb_matrix(); + eeconfig_flag_rgb_matrix(true); } void rgb_matrix_disable_noeeprom(void) { @@ -553,9 +537,7 @@ void rgb_matrix_mode_eeprom_helper(uint8_t mode, bool write_to_eeprom) { rgb_matrix_config.mode = mode; } rgb_task_state = STARTING; - if (write_to_eeprom) { - eeconfig_update_rgb_matrix(); - } + 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); } @@ -584,9 +566,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; - if (write_to_eeprom) { - eeconfig_update_rgb_matrix(); - } + 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); } @@ -623,9 +603,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; - if (write_to_eeprom) { - eeconfig_update_rgb_matrix(); - } + 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.h b/quantum/rgb_matrix/rgb_matrix.h similarity index 78% rename from quantum/rgb_matrix.h rename to quantum/rgb_matrix/rgb_matrix.h index a615b8422c0a..a804d99abcc2 100644 --- a/quantum/rgb_matrix.h +++ b/quantum/rgb_matrix/rgb_matrix.h @@ -23,7 +23,6 @@ #include "rgb_matrix_types.h" #include "color.h" #include "quantum.h" -#include "rgblight_list.h" #ifdef IS31FL3731 # include "is31fl3731.h" @@ -33,6 +32,10 @@ # include "is31fl3737.h" #elif defined(IS31FL3741) # include "is31fl3741.h" +#elif defined(CKLED2001) +# include "ckled2001.h" +#elif defined(AW20216) +# include "aw20216.h" #elif defined(WS2812) # include "ws2812.h" #endif @@ -46,14 +49,33 @@ #endif #if defined(RGB_MATRIX_LED_PROCESS_LIMIT) && RGB_MATRIX_LED_PROCESS_LIMIT > 0 && RGB_MATRIX_LED_PROCESS_LIMIT < DRIVER_LED_TOTAL -# define RGB_MATRIX_USE_LIMITS(min, max) \ - uint8_t min = RGB_MATRIX_LED_PROCESS_LIMIT * params->iter; \ - uint8_t max = min + RGB_MATRIX_LED_PROCESS_LIMIT; \ - if (max > DRIVER_LED_TOTAL) max = DRIVER_LED_TOTAL; +# if defined(RGB_MATRIX_SPLIT) +# define RGB_MATRIX_USE_LIMITS(min, max) \ + uint8_t min = RGB_MATRIX_LED_PROCESS_LIMIT * params->iter; \ + uint8_t max = min + RGB_MATRIX_LED_PROCESS_LIMIT; \ + if (max > DRIVER_LED_TOTAL) max = DRIVER_LED_TOTAL; \ + uint8_t k_rgb_matrix_split[2] = RGB_MATRIX_SPLIT; \ + if (is_keyboard_left() && (max > k_rgb_matrix_split[0])) max = k_rgb_matrix_split[0]; \ + if (!(is_keyboard_left()) && (min < k_rgb_matrix_split[0])) min = k_rgb_matrix_split[0]; +# else +# define RGB_MATRIX_USE_LIMITS(min, max) \ + uint8_t min = RGB_MATRIX_LED_PROCESS_LIMIT * params->iter; \ + uint8_t max = min + RGB_MATRIX_LED_PROCESS_LIMIT; \ + if (max > DRIVER_LED_TOTAL) max = DRIVER_LED_TOTAL; +# endif #else -# define RGB_MATRIX_USE_LIMITS(min, max) \ - uint8_t min = 0; \ - uint8_t max = DRIVER_LED_TOTAL; +# if defined(RGB_MATRIX_SPLIT) +# define RGB_MATRIX_USE_LIMITS(min, max) \ + uint8_t min = 0; \ + uint8_t max = DRIVER_LED_TOTAL; \ + const uint8_t k_rgb_matrix_split[2] = RGB_MATRIX_SPLIT; \ + if (is_keyboard_left() && (max > k_rgb_matrix_split[0])) max = k_rgb_matrix_split[0]; \ + if (!(is_keyboard_left()) && (min < k_rgb_matrix_split[0])) min = k_rgb_matrix_split[0]; +# else +# define RGB_MATRIX_USE_LIMITS(min, max) \ + uint8_t min = 0; \ + uint8_t max = DRIVER_LED_TOTAL; +# endif #endif #define RGB_MATRIX_INDICATOR_SET_COLOR(i, r, g, b) \ @@ -70,7 +92,7 @@ enum rgb_matrix_effects { // -------------------------------------- // -----Begin rgb effect enum macros----- #define RGB_MATRIX_EFFECT(name, ...) RGB_MATRIX_##name, -#include "rgb_matrix_animations/rgb_matrix_effects.inc" +#include "rgb_matrix_effects.inc" #undef RGB_MATRIX_EFFECT #if defined(RGB_MATRIX_CUSTOM_KB) || defined(RGB_MATRIX_CUSTOM_USER) @@ -212,6 +234,18 @@ typedef struct { void (*flush)(void); } rgb_matrix_driver_t; +static inline bool rgb_matrix_check_finished_leds(uint8_t led_idx) { +#if defined(RGB_MATRIX_SPLIT) + if (is_keyboard_left()) { + uint8_t k_rgb_matrix_split[2] = RGB_MATRIX_SPLIT; + return led_idx < k_rgb_matrix_split[0]; + } else + return led_idx < DRIVER_LED_TOTAL; +#else + return led_idx < DRIVER_LED_TOTAL; +#endif +} + extern const rgb_matrix_driver_t rgb_matrix_driver; extern rgb_config_t rgb_matrix_config; diff --git a/quantum/rgb_matrix/rgb_matrix_drivers.c b/quantum/rgb_matrix/rgb_matrix_drivers.c new file mode 100644 index 000000000000..130ca47a6394 --- /dev/null +++ b/quantum/rgb_matrix/rgb_matrix_drivers.c @@ -0,0 +1,328 @@ +/* Copyright 2018 James Laird-Wah + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "rgb_matrix.h" + +/* Each driver needs to define the struct + * const rgb_matrix_driver_t rgb_matrix_driver; + * All members must be provided. + * Keyboard custom drivers can define this in their own files, it should only + * be here if shared between boards. + */ + +#if defined(IS31FL3731) || defined(IS31FL3733) || defined(IS31FL3737) || defined(IS31FL3741) || defined(CKLED2001) +# 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(); + +# if defined(IS31FL3731) + IS31FL3731_init(DRIVER_ADDR_1); +# if defined(DRIVER_ADDR_2) + IS31FL3731_init(DRIVER_ADDR_2); +# if defined(DRIVER_ADDR_3) + IS31FL3731_init(DRIVER_ADDR_3); +# if defined(DRIVER_ADDR_4) + IS31FL3731_init(DRIVER_ADDR_4); +# endif +# endif +# endif + +# elif defined(IS31FL3733) +# if !defined(DRIVER_SYNC_1) +# define DRIVER_SYNC_1 0 +# endif + IS31FL3733_init(DRIVER_ADDR_1, DRIVER_SYNC_1); +# if defined(DRIVER_ADDR_2) +# if !defined(DRIVER_SYNC_2) +# define DRIVER_SYNC_2 0 +# endif + IS31FL3733_init(DRIVER_ADDR_2, DRIVER_SYNC_2); +# if defined(DRIVER_ADDR_3) +# if !defined(DRIVER_SYNC_3) +# define DRIVER_SYNC_3 0 +# endif + IS31FL3733_init(DRIVER_ADDR_3, DRIVER_SYNC_3); +# 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) + IS31FL3737_init(DRIVER_ADDR_2); +# endif + +# elif defined(IS31FL3741) + IS31FL3741_init(DRIVER_ADDR_1); + +# elif defined(CKLED2001) + CKLED2001_init(DRIVER_ADDR_1); +# if defined(DRIVER_ADDR_2) + CKLED2001_init(DRIVER_ADDR_2); +# if defined(DRIVER_ADDR_3) + CKLED2001_init(DRIVER_ADDR_3); +# if defined(DRIVER_ADDR_4) + CKLED2001_init(DRIVER_ADDR_4); +# endif +# endif +# endif +# endif + + for (int index = 0; index < DRIVER_LED_TOTAL; index++) { + bool enabled = true; + + // This only caches it for later +# 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); +# elif defined(IS31FL3741) + IS31FL3741_set_led_control_register(index, enabled, enabled, enabled); +# elif defined(CKLED2001) + CKLED2001_set_led_control_register(index, enabled, enabled, enabled); +# endif + } + + // This actually updates the LED drivers +# if defined(IS31FL3731) + IS31FL3731_update_led_control_registers(DRIVER_ADDR_1, 0); +# if defined(DRIVER_ADDR_2) + IS31FL3731_update_led_control_registers(DRIVER_ADDR_2, 1); +# if defined(DRIVER_ADDR_3) + IS31FL3731_update_led_control_registers(DRIVER_ADDR_3, 2); +# 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); +# if defined(DRIVER_ADDR_2) + IS31FL3733_update_led_control_registers(DRIVER_ADDR_2, 1); +# if defined(DRIVER_ADDR_3) + IS31FL3733_update_led_control_registers(DRIVER_ADDR_3, 2); +# 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) + IS31FL3737_update_led_control_registers(DRIVER_ADDR_2, 1); +# endif + +# elif defined(IS31FL3741) + IS31FL3741_update_led_control_registers(DRIVER_ADDR_1, 0); + +# elif defined(CKLED2001) + CKLED2001_update_led_control_registers(DRIVER_ADDR_1, 0); +# if defined(DRIVER_ADDR_2) + CKLED2001_update_led_control_registers(DRIVER_ADDR_2, 1); +# if defined(DRIVER_ADDR_3) + CKLED2001_update_led_control_registers(DRIVER_ADDR_3, 2); +# if defined(DRIVER_ADDR_4) + CKLED2001_update_led_control_registers(DRIVER_ADDR_4, 3); +# endif +# endif +# endif +# endif +} + +# if defined(IS31FL3731) +static void flush(void) { + IS31FL3731_update_pwm_buffers(DRIVER_ADDR_1, 0); +# if defined(DRIVER_ADDR_2) + IS31FL3731_update_pwm_buffers(DRIVER_ADDR_2, 1); +# if defined(DRIVER_ADDR_3) + IS31FL3731_update_pwm_buffers(DRIVER_ADDR_3, 2); +# if defined(DRIVER_ADDR_4) + IS31FL3731_update_pwm_buffers(DRIVER_ADDR_4, 3); +# endif +# endif +# endif +} + +const rgb_matrix_driver_t rgb_matrix_driver = { + .init = init, + .flush = flush, + .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); +# if defined(DRIVER_ADDR_2) + IS31FL3733_update_pwm_buffers(DRIVER_ADDR_2, 1); +# if defined(DRIVER_ADDR_3) + IS31FL3733_update_pwm_buffers(DRIVER_ADDR_3, 2); +# if defined(DRIVER_ADDR_4) + IS31FL3733_update_pwm_buffers(DRIVER_ADDR_4, 3); +# endif +# endif +# endif +} + +const rgb_matrix_driver_t rgb_matrix_driver = { + .init = init, + .flush = flush, + .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) + IS31FL3737_update_pwm_buffers(DRIVER_ADDR_2, 1); +# endif +} + +const rgb_matrix_driver_t rgb_matrix_driver = { + .init = init, + .flush = flush, + .set_color = IS31FL3737_set_color, + .set_color_all = IS31FL3737_set_color_all, +}; + +# elif defined(IS31FL3741) +static void flush(void) { + IS31FL3741_update_pwm_buffers(DRIVER_ADDR_1, 0); +# if defined(DRIVER_ADDR_2) + IS31FL3741_update_pwm_buffers(DRIVER_ADDR_2, 1); +# endif +} + +const rgb_matrix_driver_t rgb_matrix_driver = { + .init = init, + .flush = flush, + .set_color = IS31FL3741_set_color, + .set_color_all = IS31FL3741_set_color_all, +}; + +# elif defined(CKLED2001) +static void flush(void) { + CKLED2001_update_pwm_buffers(DRIVER_ADDR_1, 0); +# if defined(DRIVER_ADDR_2) + CKLED2001_update_pwm_buffers(DRIVER_ADDR_2, 1); +# if defined(DRIVER_ADDR_3) + CKLED2001_update_pwm_buffers(DRIVER_ADDR_3, 2); +# if defined(DRIVER_ADDR_4) + CKLED2001_update_pwm_buffers(DRIVER_ADDR_4, 3); +# endif +# endif +# endif +} + +const rgb_matrix_driver_t rgb_matrix_driver = { + .init = init, + .flush = flush, + .set_color = CKLED2001_set_color, + .set_color_all = CKLED2001_set_color_all, +}; +# endif + +#elif defined(AW20216) +# include "spi_master.h" + +static void init(void) { + spi_init(); + + AW20216_init(DRIVER_1_CS, DRIVER_1_EN); +# 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); +# if defined(DRIVER_2_CS) + AW20216_update_pwm_buffers(DRIVER_2_CS, 1); +# endif +} + +const rgb_matrix_driver_t rgb_matrix_driver = { + .init = init, + .flush = flush, + .set_color = AW20216_set_color, + .set_color_all = AW20216_set_color_all, +}; + +#elif defined(WS2812) +# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_CUSTOM_DRIVER) +# pragma message "Cannot use RGBLIGHT and RGB Matrix using WS2812 at the same time." +# pragma message "You need to use a custom driver, or re-implement the WS2812 driver to use a different configuration." +# endif + +// LED color buffer +LED_TYPE rgb_matrix_ws2812_array[DRIVER_LED_TOTAL]; + +static void init(void) {} + +static void flush(void) { + // Assumes use of RGB_DI_PIN + ws2812_setleds(rgb_matrix_ws2812_array, DRIVER_LED_TOTAL); +} + +// Set an led in the buffer to a color +static inline void setled(int i, uint8_t r, uint8_t g, uint8_t b) { +# if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) + const uint8_t k_rgb_matrix_split[2] = RGB_MATRIX_SPLIT; + if (!is_keyboard_left() && (i >= k_rgb_matrix_split[0])) { + i -= k_rgb_matrix_split[0]; + } else if (is_keyboard_left() && (i >= k_rgb_matrix_split[0])) + return; +# endif + + rgb_matrix_ws2812_array[i].r = r; + rgb_matrix_ws2812_array[i].g = g; + rgb_matrix_ws2812_array[i].b = b; +# ifdef RGBW + convert_rgb_to_rgbw(&rgb_matrix_ws2812_array[i]); +# endif +} + +static void setled_all(uint8_t r, uint8_t g, uint8_t b) { + for (int i = 0; i < sizeof(rgb_matrix_ws2812_array) / sizeof(rgb_matrix_ws2812_array[0]); i++) { + setled(i, r, g, b); + } +} + +const rgb_matrix_driver_t rgb_matrix_driver = { + .init = init, + .flush = flush, + .set_color = setled, + .set_color_all = setled_all, +}; +#endif diff --git a/quantum/rgb_matrix_types.h b/quantum/rgb_matrix/rgb_matrix_types.h similarity index 100% rename from quantum/rgb_matrix_types.h rename to quantum/rgb_matrix/rgb_matrix_types.h diff --git a/quantum/rgb_matrix_animations/alpha_mods_anim.h b/quantum/rgb_matrix_animations/alpha_mods_anim.h deleted file mode 100644 index 426d88ef3569..000000000000 --- a/quantum/rgb_matrix_animations/alpha_mods_anim.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef DISABLE_RGB_MATRIX_ALPHAS_MODS -RGB_MATRIX_EFFECT(ALPHAS_MODS) -# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS - -// alphas = color1, mods = color2 -bool ALPHAS_MODS(effect_params_t* params) { - RGB_MATRIX_USE_LIMITS(led_min, led_max); - - HSV hsv = rgb_matrix_config.hsv; - RGB rgb1 = rgb_matrix_hsv_to_rgb(hsv); - hsv.h += rgb_matrix_config.speed; - RGB rgb2 = rgb_matrix_hsv_to_rgb(hsv); - - for (uint8_t i = led_min; i < led_max; i++) { - RGB_MATRIX_TEST_LED_FLAGS(); - if (HAS_FLAGS(g_led_config.flags[i], LED_FLAG_MODIFIER)) { - rgb_matrix_set_color(i, rgb2.r, rgb2.g, rgb2.b); - } else { - rgb_matrix_set_color(i, rgb1.r, rgb1.g, rgb1.b); - } - } - return led_max < DRIVER_LED_TOTAL; -} - -# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS -#endif // DISABLE_RGB_MATRIX_ALPHAS_MODS diff --git a/quantum/rgb_matrix_animations/breathing_anim.h b/quantum/rgb_matrix_animations/breathing_anim.h deleted file mode 100644 index 340bd93e5dd0..000000000000 --- a/quantum/rgb_matrix_animations/breathing_anim.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef DISABLE_RGB_MATRIX_BREATHING -RGB_MATRIX_EFFECT(BREATHING) -# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS - -bool BREATHING(effect_params_t* params) { - RGB_MATRIX_USE_LIMITS(led_min, led_max); - - HSV hsv = rgb_matrix_config.hsv; - uint16_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 8); - hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v); - RGB rgb = rgb_matrix_hsv_to_rgb(hsv); - for (uint8_t i = led_min; i < led_max; i++) { - RGB_MATRIX_TEST_LED_FLAGS(); - rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); - } - return led_max < DRIVER_LED_TOTAL; -} - -# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS -#endif // DISABLE_RGB_MATRIX_BREATHING diff --git a/quantum/rgb_matrix_animations/cycle_left_right_anim.h b/quantum/rgb_matrix_animations/cycle_left_right_anim.h deleted file mode 100644 index cf911eb9370f..000000000000 --- a/quantum/rgb_matrix_animations/cycle_left_right_anim.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT -RGB_MATRIX_EFFECT(CYCLE_LEFT_RIGHT) -# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS - -static HSV CYCLE_LEFT_RIGHT_math(HSV hsv, uint8_t i, uint8_t time) { - hsv.h = g_led_config.point[i].x - time; - return hsv; -} - -bool CYCLE_LEFT_RIGHT(effect_params_t* params) { return effect_runner_i(params, &CYCLE_LEFT_RIGHT_math); } - -# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS -#endif // DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT diff --git a/quantum/rgb_matrix_animations/cycle_out_in_anim.h b/quantum/rgb_matrix_animations/cycle_out_in_anim.h deleted file mode 100644 index d66acd4b2b30..000000000000 --- a/quantum/rgb_matrix_animations/cycle_out_in_anim.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef DISABLE_RGB_MATRIX_CYCLE_OUT_IN -RGB_MATRIX_EFFECT(CYCLE_OUT_IN) -# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS - -static HSV CYCLE_OUT_IN_math(HSV hsv, int16_t dx, int16_t dy, uint8_t dist, uint8_t time) { - hsv.h = 3 * dist / 2 + time; - return hsv; -} - -bool CYCLE_OUT_IN(effect_params_t* params) { return effect_runner_dx_dy_dist(params, &CYCLE_OUT_IN_math); } - -# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS -#endif // DISABLE_RGB_MATRIX_CYCLE_OUT_IN diff --git a/quantum/rgb_matrix_animations/cycle_up_down_anim.h b/quantum/rgb_matrix_animations/cycle_up_down_anim.h deleted file mode 100644 index 5016f739d671..000000000000 --- a/quantum/rgb_matrix_animations/cycle_up_down_anim.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef DISABLE_RGB_MATRIX_CYCLE_UP_DOWN -RGB_MATRIX_EFFECT(CYCLE_UP_DOWN) -# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS - -static HSV CYCLE_UP_DOWN_math(HSV hsv, uint8_t i, uint8_t time) { - hsv.h = g_led_config.point[i].y - time; - return hsv; -} - -bool CYCLE_UP_DOWN(effect_params_t* params) { return effect_runner_i(params, &CYCLE_UP_DOWN_math); } - -# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS -#endif // DISABLE_RGB_MATRIX_CYCLE_UP_DOWN diff --git a/quantum/rgb_matrix_animations/dual_beacon_anim.h b/quantum/rgb_matrix_animations/dual_beacon_anim.h deleted file mode 100644 index ce948716815a..000000000000 --- a/quantum/rgb_matrix_animations/dual_beacon_anim.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef DISABLE_RGB_MATRIX_DUAL_BEACON -RGB_MATRIX_EFFECT(DUAL_BEACON) -# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS - -static HSV DUAL_BEACON_math(HSV hsv, int8_t sin, int8_t cos, uint8_t i, uint8_t time) { - hsv.h += ((g_led_config.point[i].y - k_rgb_matrix_center.y) * cos + (g_led_config.point[i].x - k_rgb_matrix_center.x) * sin) / 128; - return hsv; -} - -bool DUAL_BEACON(effect_params_t* params) { return effect_runner_sin_cos_i(params, &DUAL_BEACON_math); } - -# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS -#endif // DISABLE_RGB_MATRIX_DUAL_BEACON diff --git a/quantum/rgb_matrix_animations/rgb_matrix_effects.inc b/quantum/rgb_matrix_animations/rgb_matrix_effects.inc deleted file mode 100644 index 053d4415067a..000000000000 --- a/quantum/rgb_matrix_animations/rgb_matrix_effects.inc +++ /dev/null @@ -1,37 +0,0 @@ -// Add your new core rgb matrix effect here, order determins enum order, requires "rgb_matrix_animations/ directory -#include "rgb_matrix_animations/solid_color_anim.h" -#include "rgb_matrix_animations/alpha_mods_anim.h" -#include "rgb_matrix_animations/gradient_up_down_anim.h" -#include "rgb_matrix_animations/gradient_left_right_anim.h" -#include "rgb_matrix_animations/breathing_anim.h" -#include "rgb_matrix_animations/colorband_sat_anim.h" -#include "rgb_matrix_animations/colorband_val_anim.h" -#include "rgb_matrix_animations/colorband_pinwheel_sat_anim.h" -#include "rgb_matrix_animations/colorband_pinwheel_val_anim.h" -#include "rgb_matrix_animations/colorband_spiral_sat_anim.h" -#include "rgb_matrix_animations/colorband_spiral_val_anim.h" -#include "rgb_matrix_animations/cycle_all_anim.h" -#include "rgb_matrix_animations/cycle_left_right_anim.h" -#include "rgb_matrix_animations/cycle_up_down_anim.h" -#include "rgb_matrix_animations/rainbow_moving_chevron_anim.h" -#include "rgb_matrix_animations/cycle_out_in_anim.h" -#include "rgb_matrix_animations/cycle_out_in_dual_anim.h" -#include "rgb_matrix_animations/cycle_pinwheel_anim.h" -#include "rgb_matrix_animations/cycle_spiral_anim.h" -#include "rgb_matrix_animations/dual_beacon_anim.h" -#include "rgb_matrix_animations/rainbow_beacon_anim.h" -#include "rgb_matrix_animations/rainbow_pinwheels_anim.h" -#include "rgb_matrix_animations/raindrops_anim.h" -#include "rgb_matrix_animations/jellybean_raindrops_anim.h" -#include "rgb_matrix_animations/hue_breathing_anim.h" -#include "rgb_matrix_animations/hue_pendulum_anim.h" -#include "rgb_matrix_animations/hue_wave_anim.h" -#include "rgb_matrix_animations/typing_heatmap_anim.h" -#include "rgb_matrix_animations/digital_rain_anim.h" -#include "rgb_matrix_animations/solid_reactive_simple_anim.h" -#include "rgb_matrix_animations/solid_reactive_anim.h" -#include "rgb_matrix_animations/solid_reactive_wide.h" -#include "rgb_matrix_animations/solid_reactive_cross.h" -#include "rgb_matrix_animations/solid_reactive_nexus.h" -#include "rgb_matrix_animations/splash_anim.h" -#include "rgb_matrix_animations/solid_splash_anim.h" diff --git a/quantum/rgb_matrix_animations/solid_reactive_cross.h b/quantum/rgb_matrix_animations/solid_reactive_cross.h deleted file mode 100644 index f76c68e8c747..000000000000 --- a/quantum/rgb_matrix_animations/solid_reactive_cross.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifdef RGB_MATRIX_KEYREACTIVE_ENABLED -# if !defined(DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS) || !defined(DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS) - -# ifndef DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -RGB_MATRIX_EFFECT(SOLID_REACTIVE_CROSS) -# endif - -# ifndef DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -RGB_MATRIX_EFFECT(SOLID_REACTIVE_MULTICROSS) -# endif - -# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS - -static HSV SOLID_REACTIVE_CROSS_math(HSV hsv, int16_t dx, int16_t dy, uint8_t dist, uint16_t tick) { - uint16_t effect = tick + dist; - dx = dx < 0 ? dx * -1 : dx; - dy = dy < 0 ? dy * -1 : dy; - dx = dx * 16 > 255 ? 255 : dx * 16; - dy = dy * 16 > 255 ? 255 : dy * 16; - effect += dx > dy ? dy : dx; - if (effect > 255) effect = 255; - hsv.v = qadd8(hsv.v, 255 - effect); - return hsv; -} - -# ifndef DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -bool SOLID_REACTIVE_CROSS(effect_params_t* params) { return effect_runner_reactive_splash(qsub8(g_last_hit_tracker.count, 1), params, &SOLID_REACTIVE_CROSS_math); } -# endif - -# ifndef DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -bool SOLID_REACTIVE_MULTICROSS(effect_params_t* params) { return effect_runner_reactive_splash(0, params, &SOLID_REACTIVE_CROSS_math); } -# endif - -# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS -# endif // !defined(DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS) || !defined(DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS) -#endif // RGB_MATRIX_KEYREACTIVE_ENABLED diff --git a/quantum/rgb_matrix_animations/solid_reactive_nexus.h b/quantum/rgb_matrix_animations/solid_reactive_nexus.h deleted file mode 100644 index 17f94e3c1800..000000000000 --- a/quantum/rgb_matrix_animations/solid_reactive_nexus.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifdef RGB_MATRIX_KEYREACTIVE_ENABLED -# if !defined(DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS) || !defined(DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS) - -# ifndef DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -RGB_MATRIX_EFFECT(SOLID_REACTIVE_NEXUS) -# endif - -# ifndef DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -RGB_MATRIX_EFFECT(SOLID_REACTIVE_MULTINEXUS) -# endif - -# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS - -static HSV SOLID_REACTIVE_NEXUS_math(HSV hsv, int16_t dx, int16_t dy, uint8_t dist, uint16_t tick) { - uint16_t effect = tick - dist; - if (effect > 255) effect = 255; - if (dist > 72) effect = 255; - if ((dx > 8 || dx < -8) && (dy > 8 || dy < -8)) effect = 255; - hsv.v = qadd8(hsv.v, 255 - effect); - hsv.h = rgb_matrix_config.hsv.h + dy / 4; - return hsv; -} - -# ifndef DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -bool SOLID_REACTIVE_NEXUS(effect_params_t* params) { return effect_runner_reactive_splash(qsub8(g_last_hit_tracker.count, 1), params, &SOLID_REACTIVE_NEXUS_math); } -# endif - -# ifndef DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -bool SOLID_REACTIVE_MULTINEXUS(effect_params_t* params) { return effect_runner_reactive_splash(0, params, &SOLID_REACTIVE_NEXUS_math); } -# endif - -# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS -# endif // !defined(DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS) || !defined(DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS) -#endif // RGB_MATRIX_KEYREACTIVE_ENABLED diff --git a/quantum/rgb_matrix_animations/solid_reactive_simple_anim.h b/quantum/rgb_matrix_animations/solid_reactive_simple_anim.h deleted file mode 100644 index 12eb248cc0b2..000000000000 --- a/quantum/rgb_matrix_animations/solid_reactive_simple_anim.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifdef RGB_MATRIX_KEYREACTIVE_ENABLED -# ifndef DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -RGB_MATRIX_EFFECT(SOLID_REACTIVE_SIMPLE) -# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS - -static HSV SOLID_REACTIVE_SIMPLE_math(HSV hsv, uint16_t offset) { - hsv.v = scale8(255 - offset, hsv.v); - return hsv; -} - -bool SOLID_REACTIVE_SIMPLE(effect_params_t* params) { return effect_runner_reactive(params, &SOLID_REACTIVE_SIMPLE_math); } - -# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS -# endif // DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -#endif // RGB_MATRIX_KEYREACTIVE_ENABLED diff --git a/quantum/rgb_matrix_animations/solid_reactive_wide.h b/quantum/rgb_matrix_animations/solid_reactive_wide.h deleted file mode 100644 index 1cc4dca728e7..000000000000 --- a/quantum/rgb_matrix_animations/solid_reactive_wide.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifdef RGB_MATRIX_KEYREACTIVE_ENABLED -# if !defined(DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE) || !defined(DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE) - -# ifndef DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -RGB_MATRIX_EFFECT(SOLID_REACTIVE_WIDE) -# endif - -# ifndef DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -RGB_MATRIX_EFFECT(SOLID_REACTIVE_MULTIWIDE) -# endif - -# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS - -static HSV SOLID_REACTIVE_WIDE_math(HSV hsv, int16_t dx, int16_t dy, uint8_t dist, uint16_t tick) { - uint16_t effect = tick + dist * 5; - if (effect > 255) effect = 255; - hsv.v = qadd8(hsv.v, 255 - effect); - return hsv; -} - -# ifndef DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -bool SOLID_REACTIVE_WIDE(effect_params_t* params) { return effect_runner_reactive_splash(qsub8(g_last_hit_tracker.count, 1), params, &SOLID_REACTIVE_WIDE_math); } -# endif - -# ifndef DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -bool SOLID_REACTIVE_MULTIWIDE(effect_params_t* params) { return effect_runner_reactive_splash(0, params, &SOLID_REACTIVE_WIDE_math); } -# endif - -# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS -# endif // !defined(DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE) || !defined(DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE) -#endif // RGB_MATRIX_KEYREACTIVE_ENABLED diff --git a/quantum/rgb_matrix_animations/solid_splash_anim.h b/quantum/rgb_matrix_animations/solid_splash_anim.h deleted file mode 100644 index 99efb4996aa8..000000000000 --- a/quantum/rgb_matrix_animations/solid_splash_anim.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifdef RGB_MATRIX_KEYREACTIVE_ENABLED -# if !defined(DISABLE_RGB_MATRIX_SOLID_SPLASH) || !defined(DISABLE_RGB_MATRIX_SOLID_MULTISPLASH) - -# ifndef DISABLE_RGB_MATRIX_SOLID_SPLASH -RGB_MATRIX_EFFECT(SOLID_SPLASH) -# endif - -# ifndef DISABLE_RGB_MATRIX_SOLID_MULTISPLASH -RGB_MATRIX_EFFECT(SOLID_MULTISPLASH) -# endif - -# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS - -HSV SOLID_SPLASH_math(HSV hsv, int16_t dx, int16_t dy, uint8_t dist, uint16_t tick) { - uint16_t effect = tick - dist; - if (effect > 255) effect = 255; - hsv.v = qadd8(hsv.v, 255 - effect); - return hsv; -} - -# ifndef DISABLE_RGB_MATRIX_SOLID_SPLASH -bool SOLID_SPLASH(effect_params_t* params) { return effect_runner_reactive_splash(qsub8(g_last_hit_tracker.count, 1), params, &SOLID_SPLASH_math); } -# endif - -# ifndef DISABLE_RGB_MATRIX_SOLID_MULTISPLASH -bool SOLID_MULTISPLASH(effect_params_t* params) { return effect_runner_reactive_splash(0, params, &SOLID_SPLASH_math); } -# endif - -# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS -# endif // !defined(DISABLE_RGB_MATRIX_SPLASH) && !defined(DISABLE_RGB_MATRIX_MULTISPLASH) -#endif // RGB_MATRIX_KEYREACTIVE_ENABLED diff --git a/quantum/rgb_matrix_animations/splash_anim.h b/quantum/rgb_matrix_animations/splash_anim.h deleted file mode 100644 index 1415bcc0fa41..000000000000 --- a/quantum/rgb_matrix_animations/splash_anim.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifdef RGB_MATRIX_KEYREACTIVE_ENABLED -# if !defined(DISABLE_RGB_MATRIX_SPLASH) || !defined(DISABLE_RGB_MATRIX_MULTISPLASH) - -# ifndef DISABLE_RGB_MATRIX_SPLASH -RGB_MATRIX_EFFECT(SPLASH) -# endif - -# ifndef DISABLE_RGB_MATRIX_MULTISPLASH -RGB_MATRIX_EFFECT(MULTISPLASH) -# endif - -# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS - -HSV SPLASH_math(HSV hsv, int16_t dx, int16_t dy, uint8_t dist, uint16_t tick) { - uint16_t effect = tick - dist; - if (effect > 255) effect = 255; - hsv.h += effect; - hsv.v = qadd8(hsv.v, 255 - effect); - return hsv; -} - -# ifndef DISABLE_RGB_MATRIX_SPLASH -bool SPLASH(effect_params_t* params) { return effect_runner_reactive_splash(qsub8(g_last_hit_tracker.count, 1), params, &SPLASH_math); } -# endif - -# ifndef DISABLE_RGB_MATRIX_MULTISPLASH -bool MULTISPLASH(effect_params_t* params) { return effect_runner_reactive_splash(0, params, &SPLASH_math); } -# endif - -# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS -# endif // !defined(DISABLE_RGB_MATRIX_SPLASH) || !defined(DISABLE_RGB_MATRIX_MULTISPLASH) -#endif // RGB_MATRIX_KEYREACTIVE_ENABLED diff --git a/quantum/rgb_matrix_drivers.c b/quantum/rgb_matrix_drivers.c deleted file mode 100644 index 896fa6d0efd5..000000000000 --- a/quantum/rgb_matrix_drivers.c +++ /dev/null @@ -1,212 +0,0 @@ -/* Copyright 2018 James Laird-Wah - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "rgb_matrix.h" - -/* Each driver needs to define the struct - * const rgb_matrix_driver_t rgb_matrix_driver; - * All members must be provided. - * Keyboard custom drivers can define this in their own files, it should only - * be here if shared between boards. - */ - -#if defined(IS31FL3731) || defined(IS31FL3733) || defined(IS31FL3737) || defined(IS31FL3741) - -# include "i2c_master.h" - -static void init(void) { - i2c_init(); -# ifdef IS31FL3731 - IS31FL3731_init(DRIVER_ADDR_1); -# ifdef DRIVER_ADDR_2 - IS31FL3731_init(DRIVER_ADDR_2); -# endif -# ifdef DRIVER_ADDR_3 - IS31FL3731_init(DRIVER_ADDR_3); -# endif -# ifdef DRIVER_ADDR_4 - IS31FL3731_init(DRIVER_ADDR_4); -# endif -# elif defined(IS31FL3733) -# ifndef 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 -# 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 - IS31FL3733_init(DRIVER_ADDR_3, DRIVER_SYNC_3); -# endif -# ifdef DRIVER_ADDR_4 -# ifndef DRIVER_SYNC_4 -# define DRIVER_SYNC_4 0 -# endif - IS31FL3733_init(DRIVER_ADDR_4, DRIVER_SYNC_4); -# endif -# elif defined(IS31FL3737) - IS31FL3737_init(DRIVER_ADDR_1); -# else - 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 - 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 - IS31FL3741_set_led_control_register(index, enabled, enabled, enabled); -# endif - } - // This actually updates the LED drivers -# ifdef IS31FL3731 - IS31FL3731_update_led_control_registers(DRIVER_ADDR_1, 0); -# ifdef DRIVER_ADDR_2 - IS31FL3731_update_led_control_registers(DRIVER_ADDR_2, 1); -# endif -# ifdef DRIVER_ADDR_3 - IS31FL3731_update_led_control_registers(DRIVER_ADDR_3, 2); -# endif -# ifdef DRIVER_ADDR_4 - IS31FL3731_update_led_control_registers(DRIVER_ADDR_4, 3); -# endif -# elif defined(IS31FL3733) - IS31FL3733_update_led_control_registers(DRIVER_ADDR_1, 0); -# ifdef DRIVER_ADDR_2 - IS31FL3733_update_led_control_registers(DRIVER_ADDR_2, 1); -# endif -# ifdef DRIVER_ADDR_3 - IS31FL3733_update_led_control_registers(DRIVER_ADDR_3, 2); -# endif -# ifdef DRIVER_ADDR_4 - IS31FL3733_update_led_control_registers(DRIVER_ADDR_4, 3); -# endif -# elif defined(IS31FL3737) - IS31FL3737_update_led_control_registers(DRIVER_ADDR_1, DRIVER_ADDR_2); -# else - IS31FL3741_update_led_control_registers(DRIVER_ADDR_1, 0); -# endif -} - -# ifdef IS31FL3731 -static void flush(void) { - IS31FL3731_update_pwm_buffers(DRIVER_ADDR_1, 0); -# ifdef DRIVER_ADDR_2 - IS31FL3731_update_pwm_buffers(DRIVER_ADDR_2, 1); -# endif -# ifdef DRIVER_ADDR_3 - IS31FL3731_update_pwm_buffers(DRIVER_ADDR_3, 2); -# endif -# ifdef DRIVER_ADDR_4 - IS31FL3731_update_pwm_buffers(DRIVER_ADDR_4, 3); -# endif -} - -const rgb_matrix_driver_t rgb_matrix_driver = { - .init = init, - .flush = flush, - .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 - IS31FL3733_update_pwm_buffers(DRIVER_ADDR_2, 1); -# endif -# ifdef DRIVER_ADDR_3 - IS31FL3733_update_pwm_buffers(DRIVER_ADDR_3, 2); -# endif -# ifdef DRIVER_ADDR_4 - IS31FL3733_update_pwm_buffers(DRIVER_ADDR_4, 3); -# endif -} - -const rgb_matrix_driver_t rgb_matrix_driver = { - .init = init, - .flush = flush, - .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, DRIVER_ADDR_2); } - -const rgb_matrix_driver_t rgb_matrix_driver = { - .init = init, - .flush = flush, - .set_color = IS31FL3737_set_color, - .set_color_all = IS31FL3737_set_color_all, -}; -# else -static void flush(void) { IS31FL3741_update_pwm_buffers(DRIVER_ADDR_1, DRIVER_ADDR_2); } - -const rgb_matrix_driver_t rgb_matrix_driver = { - .init = init, - .flush = flush, - .set_color = IS31FL3741_set_color, - .set_color_all = IS31FL3741_set_color_all, -}; -# endif - -#elif defined(WS2812) -# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_CUSTOM_DRIVER) -# pragma message "Cannot use RGBLIGHT and RGB Matrix using WS2812 at the same time." -# pragma message "You need to use a custom driver, or re-implement the WS2812 driver to use a different configuration." -# endif - -// LED color buffer -LED_TYPE rgb_matrix_ws2812_array[DRIVER_LED_TOTAL]; - -static void init(void) {} - -static void flush(void) { - // Assumes use of RGB_DI_PIN - ws2812_setleds(rgb_matrix_ws2812_array, DRIVER_LED_TOTAL); -} - -// Set an led in the buffer to a color -static inline void setled(int i, uint8_t r, uint8_t g, uint8_t b) { - rgb_matrix_ws2812_array[i].r = r; - rgb_matrix_ws2812_array[i].g = g; - rgb_matrix_ws2812_array[i].b = b; -# ifdef RGBW - convert_rgb_to_rgbw(&rgb_matrix_ws2812_array[i]); -# endif -} - -static void setled_all(uint8_t r, uint8_t g, uint8_t b) { - for (int i = 0; i < sizeof(rgb_matrix_ws2812_array) / sizeof(rgb_matrix_ws2812_array[0]); i++) { - setled(i, r, g, b); - } -} - -const rgb_matrix_driver_t rgb_matrix_driver = { - .init = init, - .flush = flush, - .set_color = setled, - .set_color_all = setled_all, -}; -#endif diff --git a/quantum/rgb_matrix_runners/effect_runner_dx_dy.h b/quantum/rgb_matrix_runners/effect_runner_dx_dy.h deleted file mode 100644 index 4867609c81f9..000000000000 --- a/quantum/rgb_matrix_runners/effect_runner_dx_dy.h +++ /dev/null @@ -1,17 +0,0 @@ -#pragma once - -typedef HSV (*dx_dy_f)(HSV hsv, int16_t dx, int16_t dy, uint8_t time); - -bool effect_runner_dx_dy(effect_params_t* params, dx_dy_f effect_func) { - RGB_MATRIX_USE_LIMITS(led_min, led_max); - - uint8_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 2); - for (uint8_t i = led_min; i < led_max; i++) { - RGB_MATRIX_TEST_LED_FLAGS(); - int16_t dx = g_led_config.point[i].x - k_rgb_matrix_center.x; - int16_t dy = g_led_config.point[i].y - k_rgb_matrix_center.y; - RGB rgb = rgb_matrix_hsv_to_rgb(effect_func(rgb_matrix_config.hsv, dx, dy, time)); - rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); - } - return led_max < DRIVER_LED_TOTAL; -} diff --git a/quantum/rgb_matrix_runners/effect_runner_dx_dy_dist.h b/quantum/rgb_matrix_runners/effect_runner_dx_dy_dist.h deleted file mode 100644 index 9545b418d93b..000000000000 --- a/quantum/rgb_matrix_runners/effect_runner_dx_dy_dist.h +++ /dev/null @@ -1,18 +0,0 @@ -#pragma once - -typedef HSV (*dx_dy_dist_f)(HSV hsv, int16_t dx, int16_t dy, uint8_t dist, uint8_t time); - -bool effect_runner_dx_dy_dist(effect_params_t* params, dx_dy_dist_f effect_func) { - RGB_MATRIX_USE_LIMITS(led_min, led_max); - - uint8_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 2); - for (uint8_t i = led_min; i < led_max; i++) { - RGB_MATRIX_TEST_LED_FLAGS(); - int16_t dx = g_led_config.point[i].x - k_rgb_matrix_center.x; - int16_t dy = g_led_config.point[i].y - k_rgb_matrix_center.y; - uint8_t dist = sqrt16(dx * dx + dy * dy); - RGB rgb = rgb_matrix_hsv_to_rgb(effect_func(rgb_matrix_config.hsv, dx, dy, dist, time)); - rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); - } - return led_max < DRIVER_LED_TOTAL; -} diff --git a/quantum/rgb_matrix_runners/effect_runner_i.h b/quantum/rgb_matrix_runners/effect_runner_i.h deleted file mode 100644 index 1881cd6c6015..000000000000 --- a/quantum/rgb_matrix_runners/effect_runner_i.h +++ /dev/null @@ -1,15 +0,0 @@ -#pragma once - -typedef HSV (*i_f)(HSV hsv, uint8_t i, uint8_t time); - -bool effect_runner_i(effect_params_t* params, i_f effect_func) { - RGB_MATRIX_USE_LIMITS(led_min, led_max); - - uint8_t time = scale16by8(g_rgb_timer, qadd8(rgb_matrix_config.speed / 4, 1)); - for (uint8_t i = led_min; i < led_max; i++) { - RGB_MATRIX_TEST_LED_FLAGS(); - RGB rgb = rgb_matrix_hsv_to_rgb(effect_func(rgb_matrix_config.hsv, i, time)); - rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); - } - return led_max < DRIVER_LED_TOTAL; -} diff --git a/quantum/rgb_matrix_runners/effect_runner_reactive.h b/quantum/rgb_matrix_runners/effect_runner_reactive.h deleted file mode 100644 index 75b7c0df4eae..000000000000 --- a/quantum/rgb_matrix_runners/effect_runner_reactive.h +++ /dev/null @@ -1,29 +0,0 @@ -#pragma once - -#ifdef RGB_MATRIX_KEYREACTIVE_ENABLED - -typedef HSV (*reactive_f)(HSV hsv, uint16_t offset); - -bool effect_runner_reactive(effect_params_t* params, reactive_f effect_func) { - RGB_MATRIX_USE_LIMITS(led_min, led_max); - - uint16_t max_tick = 65535 / qadd8(rgb_matrix_config.speed, 1); - for (uint8_t i = led_min; i < led_max; i++) { - RGB_MATRIX_TEST_LED_FLAGS(); - uint16_t tick = max_tick; - // Reverse search to find most recent key hit - for (int8_t j = g_last_hit_tracker.count - 1; j >= 0; j--) { - if (g_last_hit_tracker.index[j] == i && g_last_hit_tracker.tick[j] < tick) { - tick = g_last_hit_tracker.tick[j]; - break; - } - } - - uint16_t offset = scale16by8(tick, qadd8(rgb_matrix_config.speed, 1)); - RGB rgb = rgb_matrix_hsv_to_rgb(effect_func(rgb_matrix_config.hsv, offset)); - rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); - } - return led_max < DRIVER_LED_TOTAL; -} - -#endif // RGB_MATRIX_KEYREACTIVE_ENABLED diff --git a/quantum/rgb_matrix_runners/effect_runner_reactive_splash.h b/quantum/rgb_matrix_runners/effect_runner_reactive_splash.h deleted file mode 100644 index 2e46ffb350e3..000000000000 --- a/quantum/rgb_matrix_runners/effect_runner_reactive_splash.h +++ /dev/null @@ -1,29 +0,0 @@ -#pragma once - -#ifdef RGB_MATRIX_KEYREACTIVE_ENABLED - -typedef HSV (*reactive_splash_f)(HSV hsv, int16_t dx, int16_t dy, uint8_t dist, uint16_t tick); - -bool effect_runner_reactive_splash(uint8_t start, effect_params_t* params, reactive_splash_f effect_func) { - RGB_MATRIX_USE_LIMITS(led_min, led_max); - - uint8_t count = g_last_hit_tracker.count; - for (uint8_t i = led_min; i < led_max; i++) { - RGB_MATRIX_TEST_LED_FLAGS(); - HSV hsv = rgb_matrix_config.hsv; - hsv.v = 0; - for (uint8_t j = start; j < count; j++) { - int16_t dx = g_led_config.point[i].x - g_last_hit_tracker.x[j]; - int16_t dy = g_led_config.point[i].y - g_last_hit_tracker.y[j]; - uint8_t dist = sqrt16(dx * dx + dy * dy); - uint16_t tick = scale16by8(g_last_hit_tracker.tick[j], qadd8(rgb_matrix_config.speed, 1)); - hsv = effect_func(hsv, dx, dy, dist, tick); - } - hsv.v = scale8(hsv.v, rgb_matrix_config.hsv.v); - RGB rgb = rgb_matrix_hsv_to_rgb(hsv); - rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); - } - return led_max < DRIVER_LED_TOTAL; -} - -#endif // RGB_MATRIX_KEYREACTIVE_ENABLED diff --git a/quantum/rgb_matrix_runners/effect_runner_sin_cos_i.h b/quantum/rgb_matrix_runners/effect_runner_sin_cos_i.h deleted file mode 100644 index 02351de51e2e..000000000000 --- a/quantum/rgb_matrix_runners/effect_runner_sin_cos_i.h +++ /dev/null @@ -1,17 +0,0 @@ -#pragma once - -typedef HSV (*sin_cos_i_f)(HSV hsv, int8_t sin, int8_t cos, uint8_t i, uint8_t time); - -bool effect_runner_sin_cos_i(effect_params_t* params, sin_cos_i_f effect_func) { - RGB_MATRIX_USE_LIMITS(led_min, led_max); - - uint16_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 4); - int8_t cos_value = cos8(time) - 128; - int8_t sin_value = sin8(time) - 128; - for (uint8_t i = led_min; i < led_max; i++) { - RGB_MATRIX_TEST_LED_FLAGS(); - RGB rgb = rgb_matrix_hsv_to_rgb(effect_func(rgb_matrix_config.hsv, cos_value, sin_value, i, time)); - rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); - } - return led_max < DRIVER_LED_TOTAL; -} diff --git a/quantum/rgblight.c b/quantum/rgblight/rgblight.c similarity index 99% rename from quantum/rgblight.c rename to quantum/rgblight/rgblight.c index baa10ec416bb..148dae78f4b3 100644 --- a/quantum/rgblight.c +++ b/quantum/rgblight/rgblight.c @@ -16,17 +16,6 @@ #include <math.h> #include <string.h> #include <stdlib.h> -#ifdef __AVR__ -# include <avr/eeprom.h> -# include <avr/interrupt.h> -#endif -#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 "sync_timer.h" @@ -35,6 +24,9 @@ #include "debug.h" #include "led_tables.h" #include <lib/lib8tion/lib8tion.h> +#ifdef EEPROM_ENABLE +# include "eeprom.h" +#endif #ifdef VELOCIKEY_ENABLE # include "velocikey.h" #endif @@ -694,6 +686,9 @@ bool rgblight_get_layer_state(uint8_t layer) { // Write any enabled LED layers into the buffer static void rgblight_layers_write(void) { +# ifdef RGBLIGHT_LAYERS_RETAIN_VAL + uint8_t current_val = rgblight_get_val(); +# endif uint8_t i = 0; // For each layer for (const rgblight_segment_t *const *layer_ptr = rgblight_layers; i < RGBLIGHT_MAX_LAYERS; layer_ptr++, i++) { @@ -714,7 +709,11 @@ static void rgblight_layers_write(void) { // Write segment.count LEDs LED_TYPE *const limit = &led[MIN(segment.index + segment.count, RGBLED_NUM)]; for (LED_TYPE *led_ptr = &led[segment.index]; led_ptr < limit; led_ptr++) { +# ifdef RGBLIGHT_LAYERS_RETAIN_VAL + sethsv(segment.hue, segment.sat, current_val, led_ptr); +# else sethsv(segment.hue, segment.sat, segment.val, led_ptr); +# endif } segment_ptr++; } @@ -890,7 +889,7 @@ void rgblight_update_sync(rgblight_syncinfo_t *syncinfo, bool write_to_eeprom) { animation_status.restart = true; } # endif /* RGBLIGHT_SPLIT_NO_ANIMATION_SYNC */ -# endif /* RGBLIGHT_USE_TIMER */ +# endif /* RGBLIGHT_USE_TIMER */ } #endif /* RGBLIGHT_SPLIT */ diff --git a/quantum/rgblight.h b/quantum/rgblight/rgblight.h similarity index 78% rename from quantum/rgblight.h rename to quantum/rgblight/rgblight.h index bec2c66955df..5b90b8f49e0f 100644 --- a/quantum/rgblight.h +++ b/quantum/rgblight/rgblight.h @@ -79,7 +79,6 @@ # define RGBLIGHT_EFFECT_STATIC_GRADIENT # define RGBLIGHT_EFFECT_RGB_TEST # define RGBLIGHT_EFFECT_ALTERNATING -# define RGBLIGHT_EFFECT_TWINKLE #endif #ifdef RGBLIGHT_STATIC_PATTERNS @@ -115,73 +114,68 @@ enum RGBLIGHT_EFFECT_MODE { RGBLIGHT_MODE_last }; -#ifndef RGBLIGHT_H_DUMMY_DEFINE - -# define RGBLIGHT_MODES (RGBLIGHT_MODE_last - 1) +#define RGBLIGHT_MODES (RGBLIGHT_MODE_last - 1) // sample: #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 -# ifndef RGBLIGHT_EFFECT_BREATHE_MAX -# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0-255 -# endif - -# ifndef RGBLIGHT_EFFECT_SNAKE_LENGTH -# define RGBLIGHT_EFFECT_SNAKE_LENGTH 4 -# endif +#ifndef RGBLIGHT_EFFECT_BREATHE_MAX +# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0-255 +#endif -# ifndef RGBLIGHT_EFFECT_KNIGHT_LENGTH -# define RGBLIGHT_EFFECT_KNIGHT_LENGTH 3 -# endif +#ifndef RGBLIGHT_EFFECT_SNAKE_LENGTH +# define RGBLIGHT_EFFECT_SNAKE_LENGTH 4 +#endif -# ifndef RGBLIGHT_EFFECT_KNIGHT_OFFSET -# define RGBLIGHT_EFFECT_KNIGHT_OFFSET 0 -# endif +#ifndef RGBLIGHT_EFFECT_KNIGHT_LENGTH +# define RGBLIGHT_EFFECT_KNIGHT_LENGTH 3 +#endif -# ifndef RGBLIGHT_EFFECT_KNIGHT_LED_NUM -# define RGBLIGHT_EFFECT_KNIGHT_LED_NUM (rgblight_ranges.effect_num_leds) -# endif +#ifndef RGBLIGHT_EFFECT_KNIGHT_OFFSET +# define RGBLIGHT_EFFECT_KNIGHT_OFFSET 0 +#endif -# ifndef RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL -# define RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL 40 -# endif +#ifndef RGBLIGHT_EFFECT_KNIGHT_LED_NUM +# define RGBLIGHT_EFFECT_KNIGHT_LED_NUM (rgblight_ranges.effect_num_leds) +#endif -# ifndef RGBLIGHT_EFFECT_CHRISTMAS_STEP -# define RGBLIGHT_EFFECT_CHRISTMAS_STEP 2 -# endif +#ifndef RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL +# define RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL 40 +#endif -# ifndef RGBLIGHT_EFFECT_TWINKLE_LIFE -# define RGBLIGHT_EFFECT_TWINKLE_LIFE 200 -# endif +#ifndef RGBLIGHT_EFFECT_CHRISTMAS_STEP +# define RGBLIGHT_EFFECT_CHRISTMAS_STEP 2 +#endif -# ifndef RGBLIGHT_EFFECT_TWINKLE_PROBABILITY -# define RGBLIGHT_EFFECT_TWINKLE_PROBABILITY 1 / 127 -# endif +#ifndef RGBLIGHT_EFFECT_TWINKLE_LIFE +# define RGBLIGHT_EFFECT_TWINKLE_LIFE 200 +#endif -# ifndef RGBLIGHT_HUE_STEP -# define RGBLIGHT_HUE_STEP 8 -# endif -# ifndef RGBLIGHT_SAT_STEP -# define RGBLIGHT_SAT_STEP 17 -# endif -# ifndef RGBLIGHT_VAL_STEP -# define RGBLIGHT_VAL_STEP 17 -# endif -# ifndef RGBLIGHT_LIMIT_VAL -# define RGBLIGHT_LIMIT_VAL 255 -# endif +#ifndef RGBLIGHT_EFFECT_TWINKLE_PROBABILITY +# define RGBLIGHT_EFFECT_TWINKLE_PROBABILITY 1 / 127 +#endif -# include <stdint.h> -# include <stdbool.h> -# include "eeconfig.h" -# include "ws2812.h" -# include "color.h" -# include "rgblight_list.h" +#ifndef RGBLIGHT_HUE_STEP +# define RGBLIGHT_HUE_STEP 8 +#endif +#ifndef RGBLIGHT_SAT_STEP +# define RGBLIGHT_SAT_STEP 17 +#endif +#ifndef RGBLIGHT_VAL_STEP +# define RGBLIGHT_VAL_STEP 17 +#endif +#ifndef RGBLIGHT_LIMIT_VAL +# define RGBLIGHT_LIMIT_VAL 255 +#endif -# if defined(__AVR__) -# include <avr/pgmspace.h> -# endif +#include <stdint.h> +#include <stdbool.h> +#include "progmem.h" +#include "eeconfig.h" +#include "ws2812.h" +#include "color.h" +#include "rgblight_list.h" -# ifdef RGBLIGHT_LAYERS +#ifdef RGBLIGHT_LAYERS typedef struct { uint8_t index; // The first LED to light uint8_t count; // The number of LEDs to light @@ -190,27 +184,27 @@ typedef struct { uint8_t val; } rgblight_segment_t; -# define RGBLIGHT_END_SEGMENT_INDEX (255) -# define RGBLIGHT_END_SEGMENTS \ - { RGBLIGHT_END_SEGMENT_INDEX, 0, 0, 0 } -# ifndef RGBLIGHT_MAX_LAYERS -# define RGBLIGHT_MAX_LAYERS 8 -# endif -# if RGBLIGHT_MAX_LAYERS <= 0 -# error invalid RGBLIGHT_MAX_LAYERS value (must be >= 1) -# elif RGBLIGHT_MAX_LAYERS <= 8 +# define RGBLIGHT_END_SEGMENT_INDEX (255) +# define RGBLIGHT_END_SEGMENTS \ + { RGBLIGHT_END_SEGMENT_INDEX, 0, 0, 0 } +# ifndef RGBLIGHT_MAX_LAYERS +# define RGBLIGHT_MAX_LAYERS 8 +# endif +# if RGBLIGHT_MAX_LAYERS <= 0 +# error invalid RGBLIGHT_MAX_LAYERS value (must be >= 1) +# elif RGBLIGHT_MAX_LAYERS <= 8 typedef uint8_t rgblight_layer_mask_t; -# elif RGBLIGHT_MAX_LAYERS <= 16 +# elif RGBLIGHT_MAX_LAYERS <= 16 typedef uint16_t rgblight_layer_mask_t; -# elif RGBLIGHT_MAX_LAYERS <= 32 +# elif RGBLIGHT_MAX_LAYERS <= 32 typedef uint32_t rgblight_layer_mask_t; -# else -# error invalid RGBLIGHT_MAX_LAYERS value (must be <= 32) -# endif -# define RGBLIGHT_LAYER_SEGMENTS(...) \ - { __VA_ARGS__, RGBLIGHT_END_SEGMENTS } -# define RGBLIGHT_LAYERS_LIST(...) \ - { __VA_ARGS__, NULL } +# else +# error invalid RGBLIGHT_MAX_LAYERS value (must be <= 32) +# endif +# define RGBLIGHT_LAYER_SEGMENTS(...) \ + { __VA_ARGS__, RGBLIGHT_END_SEGMENTS } +# define RGBLIGHT_LAYERS_LIST(...) \ + { __VA_ARGS__, NULL } // Get/set enabled rgblight layers void rgblight_set_layer_state(uint8_t layer, bool enabled); @@ -219,14 +213,14 @@ bool rgblight_get_layer_state(uint8_t layer); // Point this to an array of rgblight_segment_t arrays in keyboard_post_init_user to use rgblight layers extern const rgblight_segment_t *const *rgblight_layers; -# ifdef RGBLIGHT_LAYER_BLINK -# define RGBLIGHT_USE_TIMER +# ifdef RGBLIGHT_LAYER_BLINK +# define RGBLIGHT_USE_TIMER void rgblight_blink_layer(uint8_t layer, uint16_t duration_ms); void rgblight_blink_layer_repeat(uint8_t layer, uint16_t duration_ms, uint8_t times); -# endif - # endif +#endif + extern LED_TYPE led[RGBLED_NUM]; extern const uint8_t RGBLED_BREATHING_INTERVALS[4] PROGMEM; @@ -254,12 +248,12 @@ typedef union { typedef struct _rgblight_status_t { uint8_t base_mode; bool timer_enabled; -# ifdef RGBLIGHT_SPLIT +#ifdef RGBLIGHT_SPLIT uint8_t change_flags; -# endif -# ifdef RGBLIGHT_LAYERS +#endif +#ifdef RGBLIGHT_LAYERS rgblight_layer_mask_t enabled_layer_mask; -# endif +#endif } rgblight_status_t; /* @@ -295,12 +289,12 @@ void rgblight_setrgb_range(uint8_t r, uint8_t g, uint8_t b, uint8_t start, uint8 void rgblight_sethsv_range(uint8_t hue, uint8_t sat, uint8_t val, uint8_t start, uint8_t end); void rgblight_setrgb(uint8_t r, uint8_t g, uint8_t b); -# ifndef RGBLIGHT_SPLIT +#ifndef RGBLIGHT_SPLIT void rgblight_setrgb_master(uint8_t r, uint8_t g, uint8_t b); void rgblight_setrgb_slave(uint8_t r, uint8_t g, uint8_t b); void rgblight_sethsv_master(uint8_t hue, uint8_t sat, uint8_t val); void rgblight_sethsv_slave(uint8_t hue, uint8_t sat, uint8_t val); -# endif +#endif /* effect mode change */ void rgblight_mode(uint8_t mode); @@ -374,29 +368,29 @@ void rgb_matrix_decrease(void); void rgblight_sethsv_eeprom_helper(uint8_t hue, uint8_t sat, uint8_t val, bool write_to_eeprom); void rgblight_mode_eeprom_helper(uint8_t mode, bool write_to_eeprom); -# define EZ_RGB(val) rgblight_show_solid_color((val >> 16) & 0xFF, (val >> 8) & 0xFF, val & 0xFF) +#define EZ_RGB(val) rgblight_show_solid_color((val >> 16) & 0xFF, (val >> 8) & 0xFF, val & 0xFF) void rgblight_show_solid_color(uint8_t r, uint8_t g, uint8_t b); -# ifdef RGBLIGHT_USE_TIMER +#ifdef RGBLIGHT_USE_TIMER void rgblight_task(void); void rgblight_timer_init(void); void rgblight_timer_enable(void); void rgblight_timer_disable(void); void rgblight_timer_toggle(void); -# else -# define rgblight_task() -# define rgblight_timer_init() -# define rgblight_timer_enable() -# define rgblight_timer_disable() -# define rgblight_timer_toggle() -# endif +#else +# define rgblight_task() +# define rgblight_timer_init() +# define rgblight_timer_enable() +# define rgblight_timer_disable() +# define rgblight_timer_toggle() +#endif -# ifdef RGBLIGHT_SPLIT -# define RGBLIGHT_STATUS_CHANGE_MODE (1 << 0) -# define RGBLIGHT_STATUS_CHANGE_HSVS (1 << 1) -# define RGBLIGHT_STATUS_CHANGE_TIMER (1 << 2) -# define RGBLIGHT_STATUS_ANIMATION_TICK (1 << 3) -# define RGBLIGHT_STATUS_CHANGE_LAYERS (1 << 4) +#ifdef RGBLIGHT_SPLIT +# define RGBLIGHT_STATUS_CHANGE_MODE (1 << 0) +# define RGBLIGHT_STATUS_CHANGE_HSVS (1 << 1) +# define RGBLIGHT_STATUS_CHANGE_TIMER (1 << 2) +# define RGBLIGHT_STATUS_ANIMATION_TICK (1 << 3) +# define RGBLIGHT_STATUS_CHANGE_LAYERS (1 << 4) typedef struct _rgblight_syncinfo_t { rgblight_config_t config; @@ -409,9 +403,9 @@ void rgblight_clear_change_flags(void); void rgblight_get_syncinfo(rgblight_syncinfo_t *syncinfo); /* for split keyboard slave side */ void rgblight_update_sync(rgblight_syncinfo_t *syncinfo, bool write_to_eeprom); -# endif +#endif -# ifdef RGBLIGHT_USE_TIMER +#ifdef RGBLIGHT_USE_TIMER typedef struct _animation_status_t { uint16_t last_timer; @@ -437,6 +431,4 @@ void rgblight_effect_rgbtest(animation_status_t *anim); void rgblight_effect_alternating(animation_status_t *anim); void rgblight_effect_twinkle(animation_status_t *anim); -# endif - -#endif // #ifndef RGBLIGHT_H_DUMMY_DEFINE +#endif diff --git a/quantum/rgblight_breathe_table.h b/quantum/rgblight/rgblight_breathe_table.h similarity index 100% rename from quantum/rgblight_breathe_table.h rename to quantum/rgblight/rgblight_breathe_table.h diff --git a/quantum/rgblight_list.h b/quantum/rgblight/rgblight_list.h similarity index 84% rename from quantum/rgblight_list.h rename to quantum/rgblight/rgblight_list.h index f29a646b66bc..0fd68b75f3e8 100644 --- a/quantum/rgblight_list.h +++ b/quantum/rgblight/rgblight_list.h @@ -15,49 +15,7 @@ */ #pragma once -/* RGB COLORS */ -#define RGB_WHITE 0xFF, 0xFF, 0xFF -#define RGB_RED 0xFF, 0x00, 0x00 -#define RGB_CORAL 0xFF, 0x7C, 0x4D -#define RGB_ORANGE 0xFF, 0x80, 0x00 -#define RGB_GOLDENROD 0xD9, 0xA5, 0x21 -#define RGB_GOLD 0xFF, 0xD9, 0x00 -#define RGB_YELLOW 0xFF, 0xFF, 0x00 -#define RGB_CHARTREUSE 0x80, 0xFF, 0x00 -#define RGB_GREEN 0x00, 0xFF, 0x00 -#define RGB_SPRINGGREEN 0x00, 0xFF, 0x80 -#define RGB_TURQUOISE 0x47, 0x6E, 0x6A -#define RGB_TEAL 0x00, 0x80, 0x80 -#define RGB_CYAN 0x00, 0xFF, 0xFF -#define RGB_AZURE 0x99, 0xf5, 0xFF -#define RGB_BLUE 0x00, 0x00, 0xFF -#define RGB_PURPLE 0x7A, 0x00, 0xFF -#define RGB_MAGENTA 0xFF, 0x00, 0xFF -#define RGB_PINK 0xFF, 0x80, 0xBF -#define RGB_BLACK 0x00, 0x00, 0x00 -#define RGB_OFF RGB_BLACK - -/* HSV COLORS */ -#define HSV_WHITE 0, 0, 255 -#define HSV_RED 0, 255, 255 -#define HSV_CORAL 11, 176, 255 -#define HSV_ORANGE 28, 255, 255 -#define HSV_GOLDENROD 30, 218, 218 -#define HSV_GOLD 36, 255, 255 -#define HSV_YELLOW 43, 255, 255 -#define HSV_CHARTREUSE 64, 255, 255 -#define HSV_GREEN 85, 255, 255 -#define HSV_SPRINGGREEN 106, 255, 255 -#define HSV_TURQUOISE 123, 90, 112 -#define HSV_TEAL 128, 255, 128 -#define HSV_CYAN 128, 255, 255 -#define HSV_AZURE 132, 102, 255 -#define HSV_BLUE 170, 255, 255 -#define HSV_PURPLE 191, 255, 255 -#define HSV_MAGENTA 213, 255, 255 -#define HSV_PINK 234, 128, 255 -#define HSV_BLACK 0, 0, 0 -#define HSV_OFF HSV_BLACK +#include "color.h" /* ######################################################################################## @@ -66,7 +24,7 @@ ## ## ## The functions below have been deprecated and may be removed in a future release. ## ## ## -## Please use the values above with the RGB functions. ## +## Please use the values in color.h with the RGB functions. ## ## ## ## ## ## ## diff --git a/quantum/rgblight_modes.h b/quantum/rgblight/rgblight_modes.h similarity index 100% rename from quantum/rgblight_modes.h rename to quantum/rgblight/rgblight_modes.h diff --git a/quantum/rgblight_post_config.h b/quantum/rgblight/rgblight_post_config.h similarity index 100% rename from quantum/rgblight_post_config.h rename to quantum/rgblight/rgblight_post_config.h diff --git a/quantum/send_string.c b/quantum/send_string.c index 7d096b4273eb..1a7f7a1315ac 100644 --- a/quantum/send_string.c +++ b/quantum/send_string.c @@ -20,6 +20,14 @@ #include "send_string.h" +#if defined(AUDIO_ENABLE) && defined(SENDSTRING_BELL) +# include "audio.h" +# ifndef BELL_SOUND +# define BELL_SOUND TERMINAL_SOUND +# endif +float bell_song[][2] = SONG(BELL_SOUND); +#endif + // clang-format off /* Bit-Packed look-up table to convert an ASCII character to whether diff --git a/quantum/sequencer/sequencer.c b/quantum/sequencer/sequencer.c index 0eaf3a17aa18..18a83661ec87 100644 --- a/quantum/sequencer/sequencer.c +++ b/quantum/sequencer/sequencer.c @@ -211,7 +211,7 @@ void sequencer_phase_pause(void) { sequencer_internal_state.phase = SEQUENCER_PHASE_ATTACK; } -void matrix_scan_sequencer(void) { +void sequencer_task(void) { if (!sequencer_config.enabled) { return; } diff --git a/quantum/sequencer/sequencer.h b/quantum/sequencer/sequencer.h index aeca7a1e9b10..4017ae764efc 100644 --- a/quantum/sequencer/sequencer.h +++ b/quantum/sequencer/sequencer.h @@ -119,4 +119,4 @@ uint16_t sequencer_get_step_duration(void); uint16_t get_beat_duration(uint8_t tempo); uint16_t get_step_duration(uint8_t tempo, sequencer_resolution_t resolution); -void matrix_scan_sequencer(void); +void sequencer_task(void); diff --git a/quantum/sequencer/tests/rules.mk b/quantum/sequencer/tests/rules.mk index 76c221cf92aa..a3bbd80513cc 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 @@ -8,4 +8,4 @@ sequencer_SRC := \ $(QUANTUM_PATH)/sequencer/tests/midi_mock.c \ $(QUANTUM_PATH)/sequencer/tests/sequencer_tests.cpp \ $(QUANTUM_PATH)/sequencer/sequencer.c \ - $(TMK_PATH)/common/test/timer.c + $(PLATFORM_PATH)/$(PLATFORM_KEY)/timer.c diff --git a/quantum/sequencer/tests/sequencer_tests.cpp b/quantum/sequencer/tests/sequencer_tests.cpp index e81984e5b51b..290605a52a4f 100644 --- a/quantum/sequencer/tests/sequencer_tests.cpp +++ b/quantum/sequencer/tests/sequencer_tests.cpp @@ -386,7 +386,7 @@ void setUpMatrixScanSequencerTest(void) { TEST_F(SequencerTest, TestMatrixScanSequencerShouldAttackFirstTrackOfFirstStep) { setUpMatrixScanSequencerTest(); - matrix_scan_sequencer(); + sequencer_task(); EXPECT_EQ(last_noteon, MI_C); EXPECT_EQ(last_noteoff, 0); } @@ -394,7 +394,7 @@ TEST_F(SequencerTest, TestMatrixScanSequencerShouldAttackFirstTrackOfFirstStep) TEST_F(SequencerTest, TestMatrixScanSequencerShouldAttackSecondTrackAfterFirstTrackOfFirstStep) { setUpMatrixScanSequencerTest(); - matrix_scan_sequencer(); + sequencer_task(); EXPECT_EQ(sequencer_internal_state.current_step, 0); EXPECT_EQ(sequencer_internal_state.current_track, 1); EXPECT_EQ(sequencer_internal_state.phase, SEQUENCER_PHASE_ATTACK); @@ -409,7 +409,7 @@ TEST_F(SequencerTest, TestMatrixScanSequencerShouldNotAttackInactiveTrackFirstSt // Wait some time after the first track has been attacked advance_time(SEQUENCER_TRACK_THROTTLE); - matrix_scan_sequencer(); + sequencer_task(); EXPECT_EQ(last_noteon, 0); EXPECT_EQ(last_noteoff, 0); } @@ -423,7 +423,7 @@ TEST_F(SequencerTest, TestMatrixScanSequencerShouldAttackThirdTrackAfterSecondTr // Wait some time after the second track has been attacked advance_time(2 * SEQUENCER_TRACK_THROTTLE); - matrix_scan_sequencer(); + sequencer_task(); EXPECT_EQ(sequencer_internal_state.current_step, 0); EXPECT_EQ(sequencer_internal_state.current_track, 2); EXPECT_EQ(sequencer_internal_state.phase, SEQUENCER_PHASE_ATTACK); @@ -438,7 +438,7 @@ TEST_F(SequencerTest, TestMatrixScanSequencerShouldEnterReleasePhaseAfterLastTra // Wait until all notes have been attacked advance_time((SEQUENCER_TRACKS - 1) * SEQUENCER_TRACK_THROTTLE); - matrix_scan_sequencer(); + sequencer_task(); EXPECT_EQ(last_noteon, 0); EXPECT_EQ(last_noteoff, 0); EXPECT_EQ(sequencer_internal_state.current_step, 0); @@ -458,7 +458,7 @@ TEST_F(SequencerTest, TestMatrixScanSequencerShouldReleaseBackwards) { // + the release timeout advance_time(SEQUENCER_PHASE_RELEASE_TIMEOUT); - matrix_scan_sequencer(); + sequencer_task(); EXPECT_EQ(sequencer_internal_state.current_step, 0); EXPECT_EQ(sequencer_internal_state.current_track, SEQUENCER_TRACKS - 2); EXPECT_EQ(sequencer_internal_state.phase, SEQUENCER_PHASE_RELEASE); @@ -476,7 +476,7 @@ TEST_F(SequencerTest, TestMatrixScanSequencerShouldNotReleaseInactiveTrackFirstS // + the release timeout advance_time(SEQUENCER_PHASE_RELEASE_TIMEOUT); - matrix_scan_sequencer(); + sequencer_task(); EXPECT_EQ(last_noteon, 0); EXPECT_EQ(last_noteoff, 0); } @@ -495,7 +495,7 @@ TEST_F(SequencerTest, TestMatrixScanSequencerShouldReleaseFirstTrackFirstStep) { // + all the other notes have been released advance_time((SEQUENCER_TRACKS - 1) * SEQUENCER_TRACK_THROTTLE); - matrix_scan_sequencer(); + sequencer_task(); EXPECT_EQ(last_noteon, 0); EXPECT_EQ(last_noteoff, MI_C); } @@ -514,7 +514,7 @@ TEST_F(SequencerTest, TestMatrixScanSequencerShouldEnterPausePhaseAfterRelease) // + all the other notes have been released advance_time((SEQUENCER_TRACKS - 1) * SEQUENCER_TRACK_THROTTLE); - matrix_scan_sequencer(); + sequencer_task(); EXPECT_EQ(sequencer_internal_state.current_step, 0); EXPECT_EQ(sequencer_internal_state.current_track, 0); EXPECT_EQ(sequencer_internal_state.phase, SEQUENCER_PHASE_PAUSE); @@ -536,7 +536,7 @@ TEST_F(SequencerTest, TestMatrixScanSequencerShouldProcessFirstTrackOfSecondStep // + the step duration (one 16th at tempo=120 lasts 125ms) advance_time(125); - matrix_scan_sequencer(); + sequencer_task(); EXPECT_EQ(sequencer_internal_state.current_step, 1); EXPECT_EQ(sequencer_internal_state.current_track, 1); EXPECT_EQ(sequencer_internal_state.phase, SEQUENCER_PHASE_ATTACK); @@ -548,7 +548,7 @@ TEST_F(SequencerTest, TestMatrixScanSequencerShouldProcessSecondTrackTooEarly) { sequencer_internal_state.current_step = 2; sequencer_internal_state.current_track = 1; - matrix_scan_sequencer(); + sequencer_task(); EXPECT_EQ(last_noteon, 0); EXPECT_EQ(last_noteoff, 0); } @@ -562,7 +562,7 @@ TEST_F(SequencerTest, TestMatrixScanSequencerShouldProcessSecondTrackOnTime) { // Wait until first track has been attacked advance_time(SEQUENCER_TRACK_THROTTLE); - matrix_scan_sequencer(); + sequencer_task(); EXPECT_EQ(last_noteon, MI_D); EXPECT_EQ(last_noteoff, 0); } @@ -583,7 +583,7 @@ TEST_F(SequencerTest, TestMatrixScanSequencerShouldLoopOnceSequenceIsOver) { // + the step duration (one 16th at tempo=120 lasts 125ms) advance_time(125); - matrix_scan_sequencer(); + sequencer_task(); EXPECT_EQ(sequencer_internal_state.current_step, 0); EXPECT_EQ(sequencer_internal_state.current_track, 1); EXPECT_EQ(sequencer_internal_state.phase, SEQUENCER_PHASE_ATTACK); diff --git a/quantum/serial_link/LICENSE b/quantum/serial_link/LICENSE deleted file mode 100644 index d13cc4b26a53..000000000000 --- 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 05871dbdf7ee..000000000000 --- 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 d3a91d8286d9..000000000000 --- 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 397ed3baae19..000000000000 --- 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 5292673700c6..000000000000 --- 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 9325fe4eed96..000000000000 --- 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 bc9136f70bef..000000000000 --- 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 0f78768a00fa..000000000000 --- 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 399c9d1f7647..000000000000 --- 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 73b8dc62e9e6..000000000000 --- 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 3ce0c9fe4e6f..000000000000 --- 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 e0c6d702a54c..000000000000 --- 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 717d6d7b8be3..000000000000 --- 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 f77483ad8c4b..000000000000 --- a/quantum/serial_link/system/serial_link.c +++ /dev/null @@ -1,228 +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 <stdbool.h> -#include "print.h" -#include "config.h" - -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); - -static remote_object_t* remote_objects[] = { - REMOTE_OBJECT(serial_link_connected), - REMOTE_OBJECT(keyboard_matrix), -}; - -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(); - } - - matrix_object_t* m = read_keyboard_matrix(0); - if (m) { - matrix_set_remote(m->rows, 0); - } -} - -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 adc1f6e93d00..000000000000 --- 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 11dd355b227c..000000000000 --- 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 9e4e1768f4f2..000000000000 --- 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 f76dfb33d6e9..000000000000 --- 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 43dc57b6330e..000000000000 --- 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 b81515bc55ea..000000000000 --- 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 c5edaf478f53..000000000000 --- 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 cfd11104609b..000000000000 --- 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 8de9bfdebf3c..000000000000 --- 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/split_common/matrix.c b/quantum/split_common/matrix.c deleted file mode 100644 index 039e7d977384..000000000000 --- a/quantum/split_common/matrix.c +++ /dev/null @@ -1,309 +0,0 @@ -/* -Copyright 2012 Jun Wako <wakojun@gmail.com> - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ -#include <stdint.h> -#include <stdbool.h> -#include "util.h" -#include "matrix.h" -#include "debounce.h" -#include "quantum.h" -#include "split_util.h" -#include "config.h" -#include "transport.h" - -#define ERROR_DISCONNECT_COUNT 5 - -#define ROWS_PER_HAND (MATRIX_ROWS / 2) - -#ifdef DIRECT_PINS -static pin_t direct_pins[MATRIX_ROWS][MATRIX_COLS] = DIRECT_PINS; -#elif (DIODE_DIRECTION == ROW2COL) || (DIODE_DIRECTION == COL2ROW) -static pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; -static pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; -#endif - -/* matrix state(1:on, 0:off) */ -extern matrix_row_t raw_matrix[MATRIX_ROWS]; // raw values -extern matrix_row_t matrix[MATRIX_ROWS]; // debounced values - -// row offsets for each hand -uint8_t thisHand, thatHand; - -// user-defined overridable functions -__attribute__((weak)) void matrix_slave_scan_kb(void) { matrix_slave_scan_user(); } -__attribute__((weak)) void matrix_slave_scan_user(void) {} - -static inline void setPinOutput_writeLow(pin_t pin) { - ATOMIC_BLOCK_FORCEON { - setPinOutput(pin); - writePinLow(pin); - } -} - -static inline void setPinInputHigh_atomic(pin_t pin) { - ATOMIC_BLOCK_FORCEON { setPinInputHigh(pin); } -} - -// 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) { - // Start with a clear matrix row - matrix_row_t current_row_value = 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_row_value |= readPin(pin) ? 0 : (MATRIX_ROW_SHIFTER << col_index); - } - } - - // If the row has changed, store the row and return the changed flag. - if (current_matrix[current_row] != current_row_value) { - current_matrix[current_row] = current_row_value; - return true; - } - return false; -} - -#elif defined(DIODE_DIRECTION) -# if (DIODE_DIRECTION == COL2ROW) - -static void select_row(uint8_t row) { setPinOutput_writeLow(row_pins[row]); } - -static void unselect_row(uint8_t row) { setPinInputHigh_atomic(row_pins[row]); } - -static void unselect_rows(void) { - for (uint8_t x = 0; x < ROWS_PER_HAND; x++) { - setPinInputHigh_atomic(row_pins[x]); - } -} - -static void init_pins(void) { - unselect_rows(); - for (uint8_t x = 0; x < MATRIX_COLS; x++) { - setPinInputHigh_atomic(col_pins[x]); - } -} - -static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) { - // Start with a clear matrix row - matrix_row_t current_row_value = 0; - - // Select row - select_row(current_row); - matrix_output_select_delay(); - - // For each col... - for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) { - // Select the col pin to read (active low) - uint8_t pin_state = readPin(col_pins[col_index]); - - // Populate the matrix row with the state of the col pin - current_row_value |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index); - } - - // Unselect row - unselect_row(current_row); - matrix_output_unselect_delay(); // wait for all Col signals to go HIGH - - // If the row has changed, store the row and return the changed flag. - if (current_matrix[current_row] != current_row_value) { - current_matrix[current_row] = current_row_value; - return true; - } - return false; -} - -# elif (DIODE_DIRECTION == ROW2COL) - -static void select_col(uint8_t col) { setPinOutput_writeLow(col_pins[col]); } - -static void unselect_col(uint8_t col) { setPinInputHigh_atomic(col_pins[col]); } - -static void unselect_cols(void) { - for (uint8_t x = 0; x < MATRIX_COLS; x++) { - setPinInputHigh_atomic(col_pins[x]); - } -} - -static void init_pins(void) { - unselect_cols(); - for (uint8_t x = 0; x < ROWS_PER_HAND; x++) { - setPinInputHigh_atomic(row_pins[x]); - } -} - -static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col) { - bool matrix_changed = false; - - // Select col - select_col(current_col); - matrix_output_select_delay(); - - // For each row... - for (uint8_t row_index = 0; row_index < ROWS_PER_HAND; row_index++) { - // Store last value of row prior to reading - matrix_row_t last_row_value = current_matrix[row_index]; - matrix_row_t current_row_value = last_row_value; - - // Check row pin state - if (readPin(row_pins[row_index]) == 0) { - // Pin LO, set col bit - current_row_value |= (MATRIX_ROW_SHIFTER << current_col); - } else { - // Pin HI, clear col bit - current_row_value &= ~(MATRIX_ROW_SHIFTER << current_col); - } - - // Determine if the matrix changed state - if ((last_row_value != current_row_value)) { - matrix_changed |= true; - current_matrix[row_index] = current_row_value; - } - } - - // Unselect col - unselect_col(current_col); - matrix_output_unselect_delay(); // wait for all Row signals to go HIGH - - return matrix_changed; -} - -# else -# error DIODE_DIRECTION must be one of COL2ROW or ROW2COL! -# endif -#else -# error DIODE_DIRECTION is not defined! -#endif - -void matrix_init(void) { - split_pre_init(); - - // Set pinout for right half if pinout for that half is defined - if (!isLeftHand) { -#ifdef DIRECT_PINS_RIGHT - const pin_t direct_pins_right[MATRIX_ROWS][MATRIX_COLS] = DIRECT_PINS_RIGHT; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - for (uint8_t j = 0; j < MATRIX_COLS; j++) { - direct_pins[i][j] = direct_pins_right[i][j]; - } - } -#endif -#ifdef MATRIX_ROW_PINS_RIGHT - const pin_t row_pins_right[MATRIX_ROWS] = MATRIX_ROW_PINS_RIGHT; - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - row_pins[i] = row_pins_right[i]; - } -#endif -#ifdef MATRIX_COL_PINS_RIGHT - const pin_t col_pins_right[MATRIX_COLS] = MATRIX_COL_PINS_RIGHT; - for (uint8_t i = 0; i < MATRIX_COLS; i++) { - col_pins[i] = col_pins_right[i]; - } -#endif - } - - thisHand = isLeftHand ? 0 : (ROWS_PER_HAND); - thatHand = ROWS_PER_HAND - thisHand; - - // initialize key pins - init_pins(); - - // initialize matrix state: all keys off - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - raw_matrix[i] = 0; - matrix[i] = 0; - } - - debounce_init(ROWS_PER_HAND); - - matrix_init_quantum(); - - split_post_init(); -} - -bool matrix_post_scan(void) { - bool changed = false; - if (is_keyboard_master()) { - static uint8_t error_count; - - matrix_row_t slave_matrix[ROWS_PER_HAND] = {0}; - if (!transport_master(matrix + thisHand, slave_matrix)) { - error_count++; - - if (error_count > ERROR_DISCONNECT_COUNT) { - // reset other half if disconnected - for (int i = 0; i < ROWS_PER_HAND; ++i) { - matrix[thatHand + i] = 0; - slave_matrix[i] = 0; - } - - changed = true; - } - } else { - error_count = 0; - - for (int i = 0; i < ROWS_PER_HAND; ++i) { - if (matrix[thatHand + i] != slave_matrix[i]) { - matrix[thatHand + i] = slave_matrix[i]; - changed = true; - } - } - } - - matrix_scan_quantum(); - } else { - transport_slave(matrix + thatHand, matrix + thisHand); - - matrix_slave_scan_kb(); - } - - return changed; -} - -uint8_t matrix_scan(void) { - bool local_changed = false; - -#if defined(DIRECT_PINS) || (DIODE_DIRECTION == COL2ROW) - // Set row, read cols - for (uint8_t current_row = 0; current_row < ROWS_PER_HAND; current_row++) { - local_changed |= read_cols_on_row(raw_matrix, current_row); - } -#elif (DIODE_DIRECTION == ROW2COL) - // Set col, read rows - for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) { - local_changed |= read_rows_on_col(raw_matrix, current_col); - } -#endif - - debounce(raw_matrix, matrix + thisHand, ROWS_PER_HAND, local_changed); - - bool remote_changed = matrix_post_scan(); - return (uint8_t)(local_changed || remote_changed); -} diff --git a/quantum/split_common/post_config.h b/quantum/split_common/post_config.h index 4ae1d527327c..a4c0a1956b8a 100644 --- a/quantum/split_common/post_config.h +++ b/quantum/split_common/post_config.h @@ -7,13 +7,4 @@ # ifndef F_SCL # define F_SCL 100000UL // SCL frequency # endif - -#else // use serial -// When using serial, the user must define RGBLIGHT_SPLIT explicitly -// in config.h as needed. -// see quantum/rgblight_post_config.h -# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) -// When using serial and RGBLIGHT_SPLIT need separate transaction -# define SERIAL_USE_MULTI_TRANSACTION -# endif #endif diff --git a/quantum/split_common/split_util.c b/quantum/split_common/split_util.c index 9e75e19ce0ea..35f0a9d181dd 100644 --- a/quantum/split_common/split_util.c +++ b/quantum/split_common/split_util.c @@ -39,6 +39,21 @@ # define SPLIT_USB_TIMEOUT_POLL 10 #endif +// Max number of consecutive failed communications (one per scan cycle) before the communication is seen as disconnected. +// Set to 0 to disable the disconnection check altogether. +#ifndef SPLIT_MAX_CONNECTION_ERRORS +# define SPLIT_MAX_CONNECTION_ERRORS 10 +#endif // SPLIT_MAX_CONNECTION_ERRORS + +// How long (in milliseconds) to block all connection attempts after the communication has been flagged as disconnected. +// One communication attempt will be allowed everytime this amount of time has passed since the last attempt. If that attempt succeeds, the communication is seen as working again. +// Set to 0 to disable communication throttling while disconnected +#ifndef SPLIT_CONNECTION_CHECK_TIMEOUT +# define SPLIT_CONNECTION_CHECK_TIMEOUT 500 +#endif // SPLIT_CONNECTION_CHECK_TIMEOUT + +static uint8_t connection_errors = 0; + volatile bool isLeftHand = true; #if defined(SPLIT_USB_DETECT) @@ -77,7 +92,11 @@ __attribute__((weak)) bool is_keyboard_left(void) { #if defined(SPLIT_HAND_PIN) // Test pin SPLIT_HAND_PIN for High/Low, if low it's right hand setPinInput(SPLIT_HAND_PIN); +# ifdef SPLIT_HAND_PIN_LOW_IS_LEFT + return !readPin(SPLIT_HAND_PIN); +# else return readPin(SPLIT_HAND_PIN); +# endif #elif defined(SPLIT_HAND_MATRIX_GRID) # ifdef SPLIT_HAND_MATRIX_GRID_LOW_IS_RIGHT return peek_matrix_intersection(SPLIT_HAND_MATRIX_GRID); @@ -102,7 +121,7 @@ __attribute__((weak)) bool is_keyboard_master(void) { // Avoid NO_USB_STARTUP_CHECK - Disable USB as the previous checks seem to enable it somehow if (usbstate == SLAVE) { - usb_disable(); + usb_disconnect(); } } @@ -138,3 +157,39 @@ void split_post_init(void) { transport_slave_init(); } } + +bool is_transport_connected(void) { return connection_errors < SPLIT_MAX_CONNECTION_ERRORS; } + +bool transport_master_if_connected(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { +#if SPLIT_MAX_CONNECTION_ERRORS > 0 && SPLIT_CONNECTION_CHECK_TIMEOUT > 0 + // Throttle transaction attempts if target doesn't seem to be connected + // Without this, a solo half becomes unusable due to constant read timeouts + static uint16_t connection_check_timer = 0; + const bool is_disconnected = !is_transport_connected(); + if (is_disconnected && timer_elapsed(connection_check_timer) < SPLIT_CONNECTION_CHECK_TIMEOUT) { + return false; + } +#endif // SPLIT_MAX_CONNECTION_ERRORS > 0 && SPLIT_CONNECTION_CHECK_TIMEOUT > 0 + + __attribute__((unused)) bool okay = transport_master(master_matrix, slave_matrix); +#if SPLIT_MAX_CONNECTION_ERRORS > 0 + if (!okay) { + if (connection_errors < UINT8_MAX) { + connection_errors++; + } +# if SPLIT_CONNECTION_CHECK_TIMEOUT > 0 + bool connected = is_transport_connected(); + if (!connected) { + connection_check_timer = timer_read(); + dprintln("Target disconnected, throttling connection attempts"); + } + return connected; + } else if (is_disconnected) { + dprintln("Target connected"); +# endif // SPLIT_CONNECTION_CHECK_TIMEOUT > 0 + } + + connection_errors = 0; +#endif // SPLIT_MAX_CONNECTION_ERRORS > 0 + return true; +} diff --git a/quantum/split_common/split_util.h b/quantum/split_common/split_util.h index a4c12519e056..ef72043bb786 100644 --- a/quantum/split_common/split_util.h +++ b/quantum/split_common/split_util.h @@ -5,8 +5,13 @@ #include <stdio.h> #include <stdlib.h> +#include "matrix.h" + extern volatile bool isLeftHand; void matrix_master_OLED_init(void); void split_pre_init(void); void split_post_init(void); + +bool transport_master_if_connected(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]); +bool is_transport_connected(void); diff --git a/quantum/split_common/transaction_id_define.h b/quantum/split_common/transaction_id_define.h new file mode 100644 index 000000000000..535bc21aeaa1 --- /dev/null +++ b/quantum/split_common/transaction_id_define.h @@ -0,0 +1,102 @@ +/* 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 + +enum serial_transaction_id { +#ifdef USE_I2C + I2C_EXECUTE_CALLBACK, +#endif // USE_I2C + + GET_SLAVE_MATRIX_CHECKSUM, + GET_SLAVE_MATRIX_DATA, + +#ifdef SPLIT_TRANSPORT_MIRROR + PUT_MASTER_MATRIX, +#endif // SPLIT_TRANSPORT_MIRROR + +#ifdef ENCODER_ENABLE + GET_ENCODERS_CHECKSUM, + GET_ENCODERS_DATA, +#endif // ENCODER_ENABLE + +#ifndef DISABLE_SYNC_TIMER + PUT_SYNC_TIMER, +#endif // DISABLE_SYNC_TIMER + +#if !defined(NO_ACTION_LAYER) && defined(SPLIT_LAYER_STATE_ENABLE) + PUT_LAYER_STATE, + PUT_DEFAULT_LAYER_STATE, +#endif // !defined(NO_ACTION_LAYER) && defined(SPLIT_LAYER_STATE_ENABLE) + +#ifdef SPLIT_LED_STATE_ENABLE + PUT_LED_STATE, +#endif // SPLIT_LED_STATE_ENABLE + +#ifdef SPLIT_MODS_ENABLE + PUT_MODS, +#endif // SPLIT_MODS_ENABLE + +#ifdef BACKLIGHT_ENABLE + PUT_BACKLIGHT, +#endif // BACKLIGHT_ENABLE + +#if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) + PUT_RGBLIGHT, +#endif // defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) + +#if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT) + PUT_LED_MATRIX, +#endif // defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT) + +#if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) + PUT_RGB_MATRIX, +#endif // defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) + +#if defined(WPM_ENABLE) && defined(SPLIT_WPM_ENABLE) + PUT_WPM, +#endif // defined(WPM_ENABLE) && defined(SPLIT_WPM_ENABLE) + +#if defined(OLED_ENABLE) && defined(SPLIT_OLED_ENABLE) + PUT_OLED, +#endif // defined(OLED_ENABLE) && defined(SPLIT_OLED_ENABLE) + +#if defined(ST7565_ENABLE) && defined(SPLIT_ST7565_ENABLE) + PUT_ST7565, +#endif // defined(ST7565_ENABLE) && defined(SPLIT_ST7565_ENABLE) + +#if defined(SPLIT_TRANSACTION_IDS_KB) || defined(SPLIT_TRANSACTION_IDS_USER) + PUT_RPC_INFO, + PUT_RPC_REQ_DATA, + EXECUTE_RPC, + GET_RPC_RESP_DATA, +#endif // defined(SPLIT_TRANSACTION_IDS_KB) || defined(SPLIT_TRANSACTION_IDS_USER) + +// keyboard-specific +#ifdef SPLIT_TRANSACTION_IDS_KB + SPLIT_TRANSACTION_IDS_KB, +#endif // SPLIT_TRANSACTION_IDS_KB + +// user/keymap-specific +#ifdef SPLIT_TRANSACTION_IDS_USER + SPLIT_TRANSACTION_IDS_USER, +#endif // SPLIT_TRANSACTION_IDS_USER + + NUM_TOTAL_TRANSACTIONS +}; + +// Ensure we only use 5 bits for transaction +_Static_assert(NUM_TOTAL_TRANSACTIONS <= (1 << 5), "Max number of usable transactions exceeded"); diff --git a/quantum/split_common/transactions.c b/quantum/split_common/transactions.c new file mode 100644 index 000000000000..3ff87710e7e4 --- /dev/null +++ b/quantum/split_common/transactions.c @@ -0,0 +1,723 @@ +/* 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/>. + */ + +#include <string.h> +#include <stddef.h> + +#include "crc.h" +#include "debug.h" +#include "matrix.h" +#include "quantum.h" +#include "transactions.h" +#include "transport.h" +#include "split_util.h" +#include "transaction_id_define.h" + +#define SYNC_TIMER_OFFSET 2 + +#ifndef FORCED_SYNC_THROTTLE_MS +# define FORCED_SYNC_THROTTLE_MS 100 +#endif // FORCED_SYNC_THROTTLE_MS + +#define sizeof_member(type, member) sizeof(((type *)NULL)->member) + +#define trans_initiator2target_initializer_cb(member, cb) \ + { &dummy, sizeof_member(split_shared_memory_t, member), offsetof(split_shared_memory_t, member), 0, 0, cb } +#define trans_initiator2target_initializer(member) trans_initiator2target_initializer_cb(member, NULL) + +#define trans_target2initiator_initializer_cb(member, cb) \ + { &dummy, 0, 0, sizeof_member(split_shared_memory_t, member), offsetof(split_shared_memory_t, member), cb } +#define trans_target2initiator_initializer(member) trans_target2initiator_initializer_cb(member, NULL) + +#define transport_write(id, data, length) transport_execute_transaction(id, data, length, NULL, 0) +#define transport_read(id, data, length) transport_execute_transaction(id, NULL, 0, data, length) + +#if defined(SPLIT_TRANSACTION_IDS_KB) || defined(SPLIT_TRANSACTION_IDS_USER) +// Forward-declare the RPC callback handlers +void slave_rpc_info_callback(uint8_t initiator2target_buffer_size, const void *initiator2target_buffer, uint8_t target2initiator_buffer_size, void *target2initiator_buffer); +void slave_rpc_exec_callback(uint8_t initiator2target_buffer_size, const void *initiator2target_buffer, uint8_t target2initiator_buffer_size, void *target2initiator_buffer); +#endif // defined(SPLIT_TRANSACTION_IDS_KB) || defined(SPLIT_TRANSACTION_IDS_USER) + +//////////////////////////////////////////////////// +// Helpers + +static bool transaction_handler_master(matrix_row_t master_matrix[], matrix_row_t slave_matrix[], const char *prefix, bool (*handler)(matrix_row_t master_matrix[], matrix_row_t slave_matrix[])) { + int num_retries = is_transport_connected() ? 10 : 1; + for (int iter = 1; iter <= num_retries; ++iter) { + if (iter > 1) { + for (int i = 0; i < iter * iter; ++i) { + wait_us(10); + } + } + bool this_okay = true; + ATOMIC_BLOCK_FORCEON { this_okay = handler(master_matrix, slave_matrix); }; + if (this_okay) return true; + } + dprintf("Failed to execute %s\n", prefix); + return false; +} + +#define TRANSACTION_HANDLER_MASTER(prefix) \ + do { \ + if (!transaction_handler_master(master_matrix, slave_matrix, #prefix, &prefix##_handlers_master)) return false; \ + } while (0) + +#define TRANSACTION_HANDLER_SLAVE(prefix) \ + do { \ + ATOMIC_BLOCK_FORCEON { prefix##_handlers_slave(master_matrix, slave_matrix); }; \ + } while (0) + +inline static bool read_if_checksum_mismatch(int8_t trans_id_checksum, int8_t trans_id_retrieve, uint32_t *last_update, void *destination, const void *equiv_shmem, size_t length) { + uint8_t curr_checksum; + bool okay = transport_read(trans_id_checksum, &curr_checksum, sizeof(curr_checksum)); + if (okay && (timer_elapsed32(*last_update) >= FORCED_SYNC_THROTTLE_MS || curr_checksum != crc8(equiv_shmem, length))) { + okay &= transport_read(trans_id_retrieve, destination, length); + okay &= curr_checksum == crc8(equiv_shmem, length); + if (okay) { + *last_update = timer_read32(); + } + } else { + memcpy(destination, equiv_shmem, length); + } + return okay; +} + +inline static bool send_if_condition(int8_t trans_id, uint32_t *last_update, bool condition, void *source, size_t length) { + bool okay = true; + if (timer_elapsed32(*last_update) >= FORCED_SYNC_THROTTLE_MS || condition) { + okay &= transport_write(trans_id, source, length); + if (okay) { + *last_update = timer_read32(); + } + } + return okay; +} + +inline static bool send_if_data_mismatch(int8_t trans_id, uint32_t *last_update, void *source, const void *equiv_shmem, size_t length) { + // Just run a memcmp to compare the source and equivalent shmem location + return send_if_condition(trans_id, last_update, (memcmp(source, equiv_shmem, length) != 0), source, length); +} + +//////////////////////////////////////////////////// +// Slave matrix + +static bool slave_matrix_handlers_master(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { + static uint32_t last_update = 0; + static matrix_row_t last_matrix[(MATRIX_ROWS) / 2] = {0}; // last successfully-read matrix, so we can replicate if there are checksum errors + matrix_row_t temp_matrix[(MATRIX_ROWS) / 2]; // holding area while we test whether or not checksum is correct + + bool okay = read_if_checksum_mismatch(GET_SLAVE_MATRIX_CHECKSUM, GET_SLAVE_MATRIX_DATA, &last_update, temp_matrix, split_shmem->smatrix.matrix, sizeof(split_shmem->smatrix.matrix)); + if (okay) { + // Checksum matches the received data, save as the last matrix state + memcpy(last_matrix, temp_matrix, sizeof(temp_matrix)); + } + // Copy out the last-known-good matrix state to the slave matrix + memcpy(slave_matrix, last_matrix, sizeof(last_matrix)); + return okay; +} + +static void slave_matrix_handlers_slave(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { + memcpy(split_shmem->smatrix.matrix, slave_matrix, sizeof(split_shmem->smatrix.matrix)); + split_shmem->smatrix.checksum = crc8(split_shmem->smatrix.matrix, sizeof(split_shmem->smatrix.matrix)); +} + +// clang-format off +#define TRANSACTIONS_SLAVE_MATRIX_MASTER() TRANSACTION_HANDLER_MASTER(slave_matrix) +#define TRANSACTIONS_SLAVE_MATRIX_SLAVE() TRANSACTION_HANDLER_SLAVE(slave_matrix) +#define TRANSACTIONS_SLAVE_MATRIX_REGISTRATIONS \ + [GET_SLAVE_MATRIX_CHECKSUM] = trans_target2initiator_initializer(smatrix.checksum), \ + [GET_SLAVE_MATRIX_DATA] = trans_target2initiator_initializer(smatrix.matrix), +// clang-format on + +//////////////////////////////////////////////////// +// Master matrix + +#ifdef SPLIT_TRANSPORT_MIRROR + +static bool master_matrix_handlers_master(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { + static uint32_t last_update = 0; + return send_if_data_mismatch(PUT_MASTER_MATRIX, &last_update, master_matrix, split_shmem->mmatrix.matrix, sizeof(split_shmem->mmatrix.matrix)); +} + +static void master_matrix_handlers_slave(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { + // Always copy to the master matrix + memcpy(master_matrix, split_shmem->mmatrix.matrix, sizeof(split_shmem->mmatrix.matrix)); +} + +# define TRANSACTIONS_MASTER_MATRIX_MASTER() TRANSACTION_HANDLER_MASTER(master_matrix) +# define TRANSACTIONS_MASTER_MATRIX_SLAVE() TRANSACTION_HANDLER_SLAVE(master_matrix) +# define TRANSACTIONS_MASTER_MATRIX_REGISTRATIONS [PUT_MASTER_MATRIX] = trans_initiator2target_initializer(mmatrix.matrix), + +#else // SPLIT_TRANSPORT_MIRROR + +# define TRANSACTIONS_MASTER_MATRIX_MASTER() +# define TRANSACTIONS_MASTER_MATRIX_SLAVE() +# define TRANSACTIONS_MASTER_MATRIX_REGISTRATIONS + +#endif // SPLIT_TRANSPORT_MIRROR + +//////////////////////////////////////////////////// +// Encoders + +#ifdef ENCODER_ENABLE + +static bool encoder_handlers_master(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { + static uint32_t last_update = 0; + uint8_t temp_state[NUMBER_OF_ENCODERS]; + + bool okay = read_if_checksum_mismatch(GET_ENCODERS_CHECKSUM, GET_ENCODERS_DATA, &last_update, temp_state, split_shmem->encoders.state, sizeof(temp_state)); + if (okay) encoder_update_raw(temp_state); + return okay; +} + +static void encoder_handlers_slave(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { + uint8_t encoder_state[NUMBER_OF_ENCODERS]; + encoder_state_raw(encoder_state); + // Always prepare the encoder state for read. + memcpy(split_shmem->encoders.state, encoder_state, sizeof(encoder_state)); + // Now update the checksum given that the encoders has been written to + split_shmem->encoders.checksum = crc8(encoder_state, sizeof(encoder_state)); +} + +// clang-format off +# define TRANSACTIONS_ENCODERS_MASTER() TRANSACTION_HANDLER_MASTER(encoder) +# define TRANSACTIONS_ENCODERS_SLAVE() TRANSACTION_HANDLER_SLAVE(encoder) +# define TRANSACTIONS_ENCODERS_REGISTRATIONS \ + [GET_ENCODERS_CHECKSUM] = trans_target2initiator_initializer(encoders.checksum), \ + [GET_ENCODERS_DATA] = trans_target2initiator_initializer(encoders.state), +// clang-format on + +#else // ENCODER_ENABLE + +# define TRANSACTIONS_ENCODERS_MASTER() +# define TRANSACTIONS_ENCODERS_SLAVE() +# define TRANSACTIONS_ENCODERS_REGISTRATIONS + +#endif // ENCODER_ENABLE + +//////////////////////////////////////////////////// +// Sync timer + +#ifndef DISABLE_SYNC_TIMER + +static bool sync_timer_handlers_master(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { + static uint32_t last_update = 0; + + bool okay = true; + if (timer_elapsed32(last_update) >= FORCED_SYNC_THROTTLE_MS) { + uint32_t sync_timer = sync_timer_read32() + SYNC_TIMER_OFFSET; + okay &= transport_write(PUT_SYNC_TIMER, &sync_timer, sizeof(sync_timer)); + if (okay) { + last_update = timer_read32(); + } + } + return okay; +} + +static void sync_timer_handlers_slave(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { + static uint32_t last_sync_timer = 0; + if (last_sync_timer != split_shmem->sync_timer) { + last_sync_timer = split_shmem->sync_timer; + sync_timer_update(last_sync_timer); + } +} + +# define TRANSACTIONS_SYNC_TIMER_MASTER() TRANSACTION_HANDLER_MASTER(sync_timer) +# define TRANSACTIONS_SYNC_TIMER_SLAVE() TRANSACTION_HANDLER_SLAVE(sync_timer) +# define TRANSACTIONS_SYNC_TIMER_REGISTRATIONS [PUT_SYNC_TIMER] = trans_initiator2target_initializer(sync_timer), + +#else // DISABLE_SYNC_TIMER + +# define TRANSACTIONS_SYNC_TIMER_MASTER() +# define TRANSACTIONS_SYNC_TIMER_SLAVE() +# define TRANSACTIONS_SYNC_TIMER_REGISTRATIONS + +#endif // DISABLE_SYNC_TIMER + +//////////////////////////////////////////////////// +// Layer state + +#if !defined(NO_ACTION_LAYER) && defined(SPLIT_LAYER_STATE_ENABLE) + +static bool layer_state_handlers_master(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { + static uint32_t last_layer_state_update = 0; + static uint32_t last_default_layer_state_update = 0; + + bool okay = send_if_condition(PUT_LAYER_STATE, &last_layer_state_update, (layer_state != split_shmem->layers.layer_state), &layer_state, sizeof(layer_state)); + if (okay) { + okay &= send_if_condition(PUT_DEFAULT_LAYER_STATE, &last_default_layer_state_update, (default_layer_state != split_shmem->layers.default_layer_state), &default_layer_state, sizeof(default_layer_state)); + } + return okay; +} + +static void layer_state_handlers_slave(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { + layer_state = split_shmem->layers.layer_state; + default_layer_state = split_shmem->layers.default_layer_state; +} + +// clang-format off +# define TRANSACTIONS_LAYER_STATE_MASTER() TRANSACTION_HANDLER_MASTER(layer_state) +# define TRANSACTIONS_LAYER_STATE_SLAVE() TRANSACTION_HANDLER_SLAVE(layer_state) +# define TRANSACTIONS_LAYER_STATE_REGISTRATIONS \ + [PUT_LAYER_STATE] = trans_initiator2target_initializer(layers.layer_state), \ + [PUT_DEFAULT_LAYER_STATE] = trans_initiator2target_initializer(layers.default_layer_state), +// clang-format on + +#else // !defined(NO_ACTION_LAYER) && defined(SPLIT_LAYER_STATE_ENABLE) + +# define TRANSACTIONS_LAYER_STATE_MASTER() +# define TRANSACTIONS_LAYER_STATE_SLAVE() +# define TRANSACTIONS_LAYER_STATE_REGISTRATIONS + +#endif // !defined(NO_ACTION_LAYER) && defined(SPLIT_LAYER_STATE_ENABLE) + +//////////////////////////////////////////////////// +// LED state + +#ifdef SPLIT_LED_STATE_ENABLE + +static bool led_state_handlers_master(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { + static uint32_t last_update = 0; + uint8_t led_state = host_keyboard_leds(); + return send_if_data_mismatch(PUT_LED_STATE, &last_update, &led_state, &split_shmem->led_state, sizeof(led_state)); +} + +static void led_state_handlers_slave(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { + void set_split_host_keyboard_leds(uint8_t led_state); + set_split_host_keyboard_leds(split_shmem->led_state); +} + +# define TRANSACTIONS_LED_STATE_MASTER() TRANSACTION_HANDLER_MASTER(led_state) +# define TRANSACTIONS_LED_STATE_SLAVE() TRANSACTION_HANDLER_SLAVE(led_state) +# define TRANSACTIONS_LED_STATE_REGISTRATIONS [PUT_LED_STATE] = trans_initiator2target_initializer(led_state), + +#else // SPLIT_LED_STATE_ENABLE + +# define TRANSACTIONS_LED_STATE_MASTER() +# define TRANSACTIONS_LED_STATE_SLAVE() +# define TRANSACTIONS_LED_STATE_REGISTRATIONS + +#endif // SPLIT_LED_STATE_ENABLE + +//////////////////////////////////////////////////// +// Mods + +#ifdef SPLIT_MODS_ENABLE + +static bool mods_handlers_master(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { + static uint32_t last_update = 0; + bool mods_need_sync = timer_elapsed32(last_update) >= FORCED_SYNC_THROTTLE_MS; + split_mods_sync_t new_mods; + new_mods.real_mods = get_mods(); + if (!mods_need_sync && new_mods.real_mods != split_shmem->mods.real_mods) { + mods_need_sync = true; + } + + new_mods.weak_mods = get_weak_mods(); + if (!mods_need_sync && new_mods.weak_mods != split_shmem->mods.weak_mods) { + mods_need_sync = true; + } + +# ifndef NO_ACTION_ONESHOT + new_mods.oneshot_mods = get_oneshot_mods(); + if (!mods_need_sync && new_mods.oneshot_mods != split_shmem->mods.oneshot_mods) { + mods_need_sync = true; + } +# endif // NO_ACTION_ONESHOT + + bool okay = true; + if (mods_need_sync) { + okay &= transport_write(PUT_MODS, &new_mods, sizeof(new_mods)); + if (okay) { + last_update = timer_read32(); + } + } + + return okay; +} + +static void mods_handlers_slave(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { + set_mods(split_shmem->mods.real_mods); + set_weak_mods(split_shmem->mods.weak_mods); +# ifndef NO_ACTION_ONESHOT + set_oneshot_mods(split_shmem->mods.oneshot_mods); +# endif +} + +# define TRANSACTIONS_MODS_MASTER() TRANSACTION_HANDLER_MASTER(mods) +# define TRANSACTIONS_MODS_SLAVE() TRANSACTION_HANDLER_SLAVE(mods) +# define TRANSACTIONS_MODS_REGISTRATIONS [PUT_MODS] = trans_initiator2target_initializer(mods), + +#else // SPLIT_MODS_ENABLE + +# define TRANSACTIONS_MODS_MASTER() +# define TRANSACTIONS_MODS_SLAVE() +# define TRANSACTIONS_MODS_REGISTRATIONS + +#endif // SPLIT_MODS_ENABLE + +//////////////////////////////////////////////////// +// Backlight + +#ifdef BACKLIGHT_ENABLE + +static bool backlight_handlers_master(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { + static uint32_t last_update = 0; + uint8_t level = is_backlight_enabled() ? get_backlight_level() : 0; + return send_if_condition(PUT_BACKLIGHT, &last_update, (level != split_shmem->backlight_level), &level, sizeof(level)); +} + +static void backlight_handlers_slave(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { backlight_set(split_shmem->backlight_level); } + +# define TRANSACTIONS_BACKLIGHT_MASTER() TRANSACTION_HANDLER_MASTER(backlight) +# define TRANSACTIONS_BACKLIGHT_SLAVE() TRANSACTION_HANDLER_SLAVE(backlight) +# define TRANSACTIONS_BACKLIGHT_REGISTRATIONS [PUT_BACKLIGHT] = trans_initiator2target_initializer(backlight_level), + +#else // BACKLIGHT_ENABLE + +# define TRANSACTIONS_BACKLIGHT_MASTER() +# define TRANSACTIONS_BACKLIGHT_SLAVE() +# define TRANSACTIONS_BACKLIGHT_REGISTRATIONS + +#endif // BACKLIGHT_ENABLE + +//////////////////////////////////////////////////// +// RGBLIGHT + +#if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) + +static bool rgblight_handlers_master(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { + static uint32_t last_update = 0; + rgblight_syncinfo_t rgblight_sync; + rgblight_get_syncinfo(&rgblight_sync); + if (send_if_condition(PUT_RGBLIGHT, &last_update, (rgblight_sync.status.change_flags != 0), &rgblight_sync, sizeof(rgblight_sync))) { + rgblight_clear_change_flags(); + } else { + return false; + } + return true; +} + +static void rgblight_handlers_slave(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { + // Update the RGB with the new data + if (split_shmem->rgblight_sync.status.change_flags != 0) { + rgblight_update_sync(&split_shmem->rgblight_sync, false); + split_shmem->rgblight_sync.status.change_flags = 0; + } +} + +# define TRANSACTIONS_RGBLIGHT_MASTER() TRANSACTION_HANDLER_MASTER(rgblight) +# define TRANSACTIONS_RGBLIGHT_SLAVE() TRANSACTION_HANDLER_SLAVE(rgblight) +# define TRANSACTIONS_RGBLIGHT_REGISTRATIONS [PUT_RGBLIGHT] = trans_initiator2target_initializer(rgblight_sync), + +#else // defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) + +# define TRANSACTIONS_RGBLIGHT_MASTER() +# define TRANSACTIONS_RGBLIGHT_SLAVE() +# define TRANSACTIONS_RGBLIGHT_REGISTRATIONS + +#endif // defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) + +//////////////////////////////////////////////////// +// LED Matrix + +#if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT) + +static bool led_matrix_handlers_master(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { + static uint32_t last_update = 0; + led_matrix_sync_t led_matrix_sync; + memcpy(&led_matrix_sync.led_matrix, &led_matrix_eeconfig, sizeof(led_eeconfig_t)); + led_matrix_sync.led_suspend_state = led_matrix_get_suspend_state(); + return send_if_data_mismatch(PUT_LED_MATRIX, &last_update, &led_matrix_sync, &split_shmem->led_matrix_sync, sizeof(led_matrix_sync)); +} + +static void led_matrix_handlers_slave(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { + memcpy(&led_matrix_eeconfig, &split_shmem->led_matrix_sync.led_matrix, sizeof(led_eeconfig_t)); + led_matrix_set_suspend_state(split_shmem->led_matrix_sync.led_suspend_state); +} + +# define TRANSACTIONS_LED_MATRIX_MASTER() TRANSACTION_HANDLER_MASTER(led_matrix) +# define TRANSACTIONS_LED_MATRIX_SLAVE() TRANSACTION_HANDLER_SLAVE(led_matrix) +# define TRANSACTIONS_LED_MATRIX_REGISTRATIONS [PUT_LED_MATRIX] = trans_initiator2target_initializer(led_matrix_sync), + +#else // defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT) + +# define TRANSACTIONS_LED_MATRIX_MASTER() +# define TRANSACTIONS_LED_MATRIX_SLAVE() +# define TRANSACTIONS_LED_MATRIX_REGISTRATIONS + +#endif // defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT) + +//////////////////////////////////////////////////// +// RGB Matrix + +#if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) + +static bool rgb_matrix_handlers_master(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { + static uint32_t last_update = 0; + rgb_matrix_sync_t rgb_matrix_sync; + memcpy(&rgb_matrix_sync.rgb_matrix, &rgb_matrix_config, sizeof(rgb_config_t)); + rgb_matrix_sync.rgb_suspend_state = rgb_matrix_get_suspend_state(); + return send_if_data_mismatch(PUT_RGB_MATRIX, &last_update, &rgb_matrix_sync, &split_shmem->rgb_matrix_sync, sizeof(rgb_matrix_sync)); +} + +static void rgb_matrix_handlers_slave(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { + memcpy(&rgb_matrix_config, &split_shmem->rgb_matrix_sync.rgb_matrix, sizeof(rgb_config_t)); + rgb_matrix_set_suspend_state(split_shmem->rgb_matrix_sync.rgb_suspend_state); +} + +# define TRANSACTIONS_RGB_MATRIX_MASTER() TRANSACTION_HANDLER_MASTER(rgb_matrix) +# define TRANSACTIONS_RGB_MATRIX_SLAVE() TRANSACTION_HANDLER_SLAVE(rgb_matrix) +# define TRANSACTIONS_RGB_MATRIX_REGISTRATIONS [PUT_RGB_MATRIX] = trans_initiator2target_initializer(rgb_matrix_sync), + +#else // defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) + +# define TRANSACTIONS_RGB_MATRIX_MASTER() +# define TRANSACTIONS_RGB_MATRIX_SLAVE() +# define TRANSACTIONS_RGB_MATRIX_REGISTRATIONS + +#endif // defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) + +//////////////////////////////////////////////////// +// WPM + +#if defined(WPM_ENABLE) && defined(SPLIT_WPM_ENABLE) + +static bool wpm_handlers_master(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { + static uint32_t last_update = 0; + uint8_t current_wpm = get_current_wpm(); + return send_if_condition(PUT_WPM, &last_update, (current_wpm != split_shmem->current_wpm), ¤t_wpm, sizeof(current_wpm)); +} + +static void wpm_handlers_slave(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { set_current_wpm(split_shmem->current_wpm); } + +# define TRANSACTIONS_WPM_MASTER() TRANSACTION_HANDLER_MASTER(wpm) +# define TRANSACTIONS_WPM_SLAVE() TRANSACTION_HANDLER_SLAVE(wpm) +# define TRANSACTIONS_WPM_REGISTRATIONS [PUT_WPM] = trans_initiator2target_initializer(current_wpm), + +#else // defined(WPM_ENABLE) && defined(SPLIT_WPM_ENABLE) + +# define TRANSACTIONS_WPM_MASTER() +# define TRANSACTIONS_WPM_SLAVE() +# define TRANSACTIONS_WPM_REGISTRATIONS + +#endif // defined(WPM_ENABLE) && defined(SPLIT_WPM_ENABLE) + +//////////////////////////////////////////////////// +// OLED + +#if defined(OLED_ENABLE) && defined(SPLIT_OLED_ENABLE) + +static bool oled_handlers_master(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { + static uint32_t last_update = 0; + bool current_oled_state = is_oled_on(); + return send_if_condition(PUT_OLED, &last_update, (current_oled_state != split_shmem->current_oled_state), ¤t_oled_state, sizeof(current_oled_state)); +} + +static void oled_handlers_slave(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { + if (split_shmem->current_oled_state) { + oled_on(); + } else { + oled_off(); + } +} + +# define TRANSACTIONS_OLED_MASTER() TRANSACTION_HANDLER_MASTER(oled) +# define TRANSACTIONS_OLED_SLAVE() TRANSACTION_HANDLER_SLAVE(oled) +# define TRANSACTIONS_OLED_REGISTRATIONS [PUT_OLED] = trans_initiator2target_initializer(current_oled_state), + +#else // defined(OLED_ENABLE) && defined(SPLIT_OLED_ENABLE) + +# define TRANSACTIONS_OLED_MASTER() +# define TRANSACTIONS_OLED_SLAVE() +# define TRANSACTIONS_OLED_REGISTRATIONS + +#endif // defined(OLED_ENABLE) && defined(SPLIT_OLED_ENABLE) + +//////////////////////////////////////////////////// +// ST7565 + +#if defined(ST7565_ENABLE) && defined(SPLIT_ST7565_ENABLE) + +static bool st7565_handlers_master(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { + static uint32_t last_update = 0; + bool current_st7565_state = st7565_is_on(); + return send_if_condition(PUT_ST7565, &last_update, (current_st7565_state != split_shmem->current_st7565_state), ¤t_st7565_state, sizeof(current_st7565_state)); +} + +static void st7565_handlers_slave(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { + if (split_shmem->current_st7565_state) { + st7565_on(); + } else { + st7565_off(); + } +} + +# define TRANSACTIONS_ST7565_MASTER() TRANSACTION_HANDLER_MASTER(st7565) +# define TRANSACTIONS_ST7565_SLAVE() TRANSACTION_HANDLER_SLAVE(st7565) +# define TRANSACTIONS_ST7565_REGISTRATIONS [PUT_ST7565] = trans_initiator2target_initializer(current_st7565_state), + +#else // defined(ST7565_ENABLE) && defined(SPLIT_ST7565_ENABLE) + +# define TRANSACTIONS_ST7565_MASTER() +# define TRANSACTIONS_ST7565_SLAVE() +# define TRANSACTIONS_ST7565_REGISTRATIONS + +#endif // defined(ST7565_ENABLE) && defined(SPLIT_ST7565_ENABLE) + +//////////////////////////////////////////////////// + +uint8_t dummy; +split_transaction_desc_t split_transaction_table[NUM_TOTAL_TRANSACTIONS] = { + // Set defaults + [0 ...(NUM_TOTAL_TRANSACTIONS - 1)] = {NULL, 0, 0, 0, 0, 0}, + +#ifdef USE_I2C + [I2C_EXECUTE_CALLBACK] = trans_initiator2target_initializer(transaction_id), +#endif // USE_I2C + + // clang-format off + TRANSACTIONS_SLAVE_MATRIX_REGISTRATIONS + TRANSACTIONS_MASTER_MATRIX_REGISTRATIONS + TRANSACTIONS_ENCODERS_REGISTRATIONS + TRANSACTIONS_SYNC_TIMER_REGISTRATIONS + TRANSACTIONS_LAYER_STATE_REGISTRATIONS + TRANSACTIONS_LED_STATE_REGISTRATIONS + TRANSACTIONS_MODS_REGISTRATIONS + TRANSACTIONS_BACKLIGHT_REGISTRATIONS + TRANSACTIONS_RGBLIGHT_REGISTRATIONS + TRANSACTIONS_LED_MATRIX_REGISTRATIONS + TRANSACTIONS_RGB_MATRIX_REGISTRATIONS + TRANSACTIONS_WPM_REGISTRATIONS + TRANSACTIONS_OLED_REGISTRATIONS + TRANSACTIONS_ST7565_REGISTRATIONS +// clang-format on + +#if defined(SPLIT_TRANSACTION_IDS_KB) || defined(SPLIT_TRANSACTION_IDS_USER) + [PUT_RPC_INFO] = trans_initiator2target_initializer_cb(rpc_info, slave_rpc_info_callback), + [PUT_RPC_REQ_DATA] = trans_initiator2target_initializer(rpc_m2s_buffer), + [EXECUTE_RPC] = trans_initiator2target_initializer_cb(rpc_info.transaction_id, slave_rpc_exec_callback), + [GET_RPC_RESP_DATA] = trans_target2initiator_initializer(rpc_s2m_buffer), +#endif // defined(SPLIT_TRANSACTION_IDS_KB) || defined(SPLIT_TRANSACTION_IDS_USER) +}; + +bool transactions_master(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { + TRANSACTIONS_SLAVE_MATRIX_MASTER(); + TRANSACTIONS_MASTER_MATRIX_MASTER(); + TRANSACTIONS_ENCODERS_MASTER(); + TRANSACTIONS_SYNC_TIMER_MASTER(); + TRANSACTIONS_LAYER_STATE_MASTER(); + TRANSACTIONS_LED_STATE_MASTER(); + TRANSACTIONS_MODS_MASTER(); + TRANSACTIONS_BACKLIGHT_MASTER(); + TRANSACTIONS_RGBLIGHT_MASTER(); + TRANSACTIONS_LED_MATRIX_MASTER(); + TRANSACTIONS_RGB_MATRIX_MASTER(); + TRANSACTIONS_WPM_MASTER(); + TRANSACTIONS_OLED_MASTER(); + TRANSACTIONS_ST7565_MASTER(); + return true; +} + +void transactions_slave(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { + TRANSACTIONS_SLAVE_MATRIX_SLAVE(); + TRANSACTIONS_MASTER_MATRIX_SLAVE(); + TRANSACTIONS_ENCODERS_SLAVE(); + TRANSACTIONS_SYNC_TIMER_SLAVE(); + TRANSACTIONS_LAYER_STATE_SLAVE(); + TRANSACTIONS_LED_STATE_SLAVE(); + TRANSACTIONS_MODS_SLAVE(); + TRANSACTIONS_BACKLIGHT_SLAVE(); + TRANSACTIONS_RGBLIGHT_SLAVE(); + TRANSACTIONS_LED_MATRIX_SLAVE(); + TRANSACTIONS_RGB_MATRIX_SLAVE(); + TRANSACTIONS_WPM_SLAVE(); + TRANSACTIONS_OLED_SLAVE(); + TRANSACTIONS_ST7565_SLAVE(); +} + +#if defined(SPLIT_TRANSACTION_IDS_KB) || defined(SPLIT_TRANSACTION_IDS_USER) + +void transaction_register_rpc(int8_t transaction_id, slave_callback_t callback) { + // Prevent invoking RPC on QMK core sync data + if (transaction_id <= GET_RPC_RESP_DATA) return; + + // Set the callback + split_transaction_table[transaction_id].slave_callback = callback; + split_transaction_table[transaction_id].initiator2target_offset = offsetof(split_shared_memory_t, rpc_m2s_buffer); + split_transaction_table[transaction_id].target2initiator_offset = offsetof(split_shared_memory_t, rpc_s2m_buffer); +} + +bool transaction_rpc_exec(int8_t transaction_id, uint8_t initiator2target_buffer_size, const void *initiator2target_buffer, uint8_t target2initiator_buffer_size, void *target2initiator_buffer) { + // Prevent transaction attempts while transport is disconnected + if (!is_transport_connected()) { + return false; + } + // Prevent invoking RPC on QMK core sync data + if (transaction_id <= GET_RPC_RESP_DATA) return false; + // Prevent sizing issues + if (initiator2target_buffer_size > RPC_M2S_BUFFER_SIZE) return false; + if (target2initiator_buffer_size > RPC_S2M_BUFFER_SIZE) return false; + + // Prepare the metadata block + rpc_sync_info_t info = {.transaction_id = transaction_id, .m2s_length = initiator2target_buffer_size, .s2m_length = target2initiator_buffer_size}; + + // Make sure the local side knows that we're not sending the full block of data + split_transaction_table[PUT_RPC_REQ_DATA].initiator2target_buffer_size = initiator2target_buffer_size; + split_transaction_table[GET_RPC_RESP_DATA].target2initiator_buffer_size = target2initiator_buffer_size; + + // Run through the sequence: + // * set the transaction ID and lengths + // * send the request data + // * execute RPC callback + // * retrieve the response data + if (!transport_write(PUT_RPC_INFO, &info, sizeof(info))) { + return false; + } + if (!transport_write(PUT_RPC_REQ_DATA, initiator2target_buffer, initiator2target_buffer_size)) { + return false; + } + if (!transport_write(EXECUTE_RPC, &transaction_id, sizeof(transaction_id))) { + return false; + } + if (!transport_read(GET_RPC_RESP_DATA, target2initiator_buffer, target2initiator_buffer_size)) { + return false; + } + return true; +} + +void slave_rpc_info_callback(uint8_t initiator2target_buffer_size, const void *initiator2target_buffer, uint8_t target2initiator_buffer_size, void *target2initiator_buffer) { + // The RPC info block contains the intended transaction ID, as well as the sizes for both inbound and outbound data. + // Ignore the args -- the `split_shmem` already has the info, we just need to act upon it. + // We must keep the `split_transaction_table` non-const, so that it is able to be modified at runtime. + + split_transaction_table[PUT_RPC_REQ_DATA].initiator2target_buffer_size = split_shmem->rpc_info.m2s_length; + split_transaction_table[GET_RPC_RESP_DATA].target2initiator_buffer_size = split_shmem->rpc_info.s2m_length; +} + +void slave_rpc_exec_callback(uint8_t initiator2target_buffer_size, const void *initiator2target_buffer, uint8_t target2initiator_buffer_size, void *target2initiator_buffer) { + // We can assume that the buffer lengths are correctly set, now, given that sequentially the rpc_info callback was already executed. + // Go through the rpc_info and execute _that_ transaction's callback, with the scratch buffers as inputs. + int8_t transaction_id = split_shmem->rpc_info.transaction_id; + if (transaction_id < NUM_TOTAL_TRANSACTIONS) { + split_transaction_desc_t *trans = &split_transaction_table[transaction_id]; + if (trans->slave_callback) { + trans->slave_callback(split_shmem->rpc_info.m2s_length, split_shmem->rpc_m2s_buffer, split_shmem->rpc_info.s2m_length, split_shmem->rpc_s2m_buffer); + } + } +} + +#endif // defined(SPLIT_TRANSACTION_IDS_KB) || defined(SPLIT_TRANSACTION_IDS_USER) diff --git a/quantum/split_common/transactions.h b/quantum/split_common/transactions.h new file mode 100644 index 000000000000..53610d6f8e85 --- /dev/null +++ b/quantum/split_common/transactions.h @@ -0,0 +1,54 @@ +/* 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 + +#include "stdint.h" +#include "stdbool.h" + +#include "matrix.h" +#include "transaction_id_define.h" +#include "transport.h" + +typedef void (*slave_callback_t)(uint8_t initiator2target_buffer_size, const void *initiator2target_buffer, uint8_t target2initiator_buffer_size, void *target2initiator_buffer); + +// Split transaction Descriptor +typedef struct _split_transaction_desc_t { + uint8_t * status; + uint8_t initiator2target_buffer_size; + uint16_t initiator2target_offset; + uint8_t target2initiator_buffer_size; + uint16_t target2initiator_offset; + slave_callback_t slave_callback; +} split_transaction_desc_t; + +// Forward declaration for the split transactions +extern split_transaction_desc_t split_transaction_table[NUM_TOTAL_TRANSACTIONS]; + +#define split_shmem_offset_ptr(offset) (((uint8_t *)split_shmem) + (offset)) +#define split_trans_initiator2target_buffer(trans) (split_shmem_offset_ptr((trans)->initiator2target_offset)) +#define split_trans_target2initiator_buffer(trans) (split_shmem_offset_ptr((trans)->target2initiator_offset)) + +// returns false if valid data not received from slave +bool transactions_master(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]); +void transactions_slave(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]); + +void transaction_register_rpc(int8_t transaction_id, slave_callback_t callback); + +bool transaction_rpc_exec(int8_t transaction_id, uint8_t initiator2target_buffer_size, const void *initiator2target_buffer, uint8_t target2initiator_buffer_size, void *target2initiator_buffer); + +#define transaction_rpc_send(transaction_id, initiator2target_buffer_size, initiator2target_buffer) transaction_rpc_exec(transaction_id, initiator2target_buffer_size, initiator2target_buffer, 0, NULL) +#define transaction_rpc_recv(transaction_id, target2initiator_buffer_size, target2initiator_buffer) transaction_rpc_exec(transaction_id, 0, NULL, target2initiator_buffer_size, target2initiator_buffer) diff --git a/quantum/split_common/transport.c b/quantum/split_common/transport.c index 9ed0f7591b6c..bcc0261417d4 100644 --- a/quantum/split_common/transport.c +++ b/quantum/split_common/transport.c @@ -1,452 +1,118 @@ -#include <string.h> -#include <stddef.h> - -#include "config.h" -#include "matrix.h" -#include "quantum.h" - -#define ROWS_PER_HAND (MATRIX_ROWS / 2) -#define SYNC_TIMER_OFFSET 2 - -#ifdef RGBLIGHT_ENABLE -# include "rgblight.h" -#endif - -#ifdef BACKLIGHT_ENABLE -# include "backlight.h" -#endif - -#ifdef ENCODER_ENABLE -# include "encoder.h" -static pin_t encoders_pad[] = ENCODERS_PAD_A; -# define NUMBER_OF_ENCODERS (sizeof(encoders_pad) / sizeof(pin_t)) -#endif - -#if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT) -# include "led_matrix.h" -#endif -#if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) -# include "rgb_matrix.h" -#endif - -#if defined(USE_I2C) +/* 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/>. + */ -# include "i2c_master.h" -# include "i2c_slave.h" - -typedef struct _I2C_slave_buffer_t { -# ifndef DISABLE_SYNC_TIMER - uint32_t sync_timer; -# endif -# ifdef SPLIT_TRANSPORT_MIRROR - matrix_row_t mmatrix[ROWS_PER_HAND]; -# endif - matrix_row_t smatrix[ROWS_PER_HAND]; -# ifdef SPLIT_MODS_ENABLE - uint8_t real_mods; - uint8_t weak_mods; -# ifndef NO_ACTION_ONESHOT - uint8_t oneshot_mods; -# endif -# endif -# ifdef BACKLIGHT_ENABLE - uint8_t backlight_level; -# endif -# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) - rgblight_syncinfo_t rgblight_sync; -# endif -# ifdef ENCODER_ENABLE - uint8_t encoder_state[NUMBER_OF_ENCODERS]; -# endif -# ifdef WPM_ENABLE - uint8_t current_wpm; -# endif -# if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT) - led_eeconfig_t led_matrix; - bool led_suspend_state; -# endif -# if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) - rgb_config_t rgb_matrix; - bool rgb_suspend_state; -# endif -} I2C_slave_buffer_t; +#include <string.h> +#include <debug.h> -static I2C_slave_buffer_t *const i2c_buffer = (I2C_slave_buffer_t *)i2c_slave_reg; +#include "transactions.h" +#include "transport.h" +#include "transaction_id_define.h" +#include "atomic_util.h" -# define I2C_SYNC_TIME_START offsetof(I2C_slave_buffer_t, sync_timer) -# define I2C_KEYMAP_MASTER_START offsetof(I2C_slave_buffer_t, mmatrix) -# define I2C_KEYMAP_SLAVE_START offsetof(I2C_slave_buffer_t, smatrix) -# define I2C_REAL_MODS_START offsetof(I2C_slave_buffer_t, real_mods) -# define I2C_WEAK_MODS_START offsetof(I2C_slave_buffer_t, weak_mods) -# define I2C_ONESHOT_MODS_START offsetof(I2C_slave_buffer_t, oneshot_mods) -# define I2C_BACKLIGHT_START offsetof(I2C_slave_buffer_t, backlight_level) -# define I2C_RGB_START offsetof(I2C_slave_buffer_t, rgblight_sync) -# define I2C_ENCODER_START offsetof(I2C_slave_buffer_t, encoder_state) -# define I2C_WPM_START offsetof(I2C_slave_buffer_t, current_wpm) -# define I2C_LED_MATRIX_START offsetof(I2C_slave_buffer_t, led_matrix) -# define I2C_LED_SUSPEND_START offsetof(I2C_slave_buffer_t, led_suspend_state) -# define I2C_RGB_MATRIX_START offsetof(I2C_slave_buffer_t, rgb_matrix) -# define I2C_RGB_SUSPEND_START offsetof(I2C_slave_buffer_t, rgb_suspend_state) +#ifdef USE_I2C -# define TIMEOUT 100 +# ifndef SLAVE_I2C_TIMEOUT +# define SLAVE_I2C_TIMEOUT 100 +# endif // SLAVE_I2C_TIMEOUT # ifndef SLAVE_I2C_ADDRESS # define SLAVE_I2C_ADDRESS 0x32 # endif -// Get rows from other half over i2c -bool transport_master(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { - i2c_readReg(SLAVE_I2C_ADDRESS, I2C_KEYMAP_SLAVE_START, (void *)slave_matrix, sizeof(i2c_buffer->smatrix), TIMEOUT); -# ifdef SPLIT_TRANSPORT_MIRROR - i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_KEYMAP_MASTER_START, (void *)master_matrix, sizeof(i2c_buffer->mmatrix), TIMEOUT); -# endif +# include "i2c_master.h" +# include "i2c_slave.h" - // write backlight info -# ifdef BACKLIGHT_ENABLE - uint8_t level = is_backlight_enabled() ? get_backlight_level() : 0; - if (level != i2c_buffer->backlight_level) { - if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_BACKLIGHT_START, (void *)&level, sizeof(level), TIMEOUT) >= 0) { - i2c_buffer->backlight_level = level; - } - } -# endif +// Ensure the I2C buffer has enough space +_Static_assert(sizeof(split_shared_memory_t) <= I2C_SLAVE_REG_COUNT, "split_shared_memory_t too large for I2C_SLAVE_REG_COUNT"); -# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) - if (rgblight_get_change_flags()) { - rgblight_syncinfo_t rgblight_sync; - rgblight_get_syncinfo(&rgblight_sync); - if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_RGB_START, (void *)&rgblight_sync, sizeof(rgblight_sync), TIMEOUT) >= 0) { - rgblight_clear_change_flags(); - } - } -# endif +split_shared_memory_t *const split_shmem = (split_shared_memory_t *)i2c_slave_reg; -# ifdef ENCODER_ENABLE - i2c_readReg(SLAVE_I2C_ADDRESS, I2C_ENCODER_START, (void *)i2c_buffer->encoder_state, sizeof(i2c_buffer->encoder_state), TIMEOUT); - encoder_update_raw(i2c_buffer->encoder_state); -# endif +void transport_master_init(void) { i2c_init(); } +void transport_slave_init(void) { i2c_slave_init(SLAVE_I2C_ADDRESS); } -# ifdef WPM_ENABLE - uint8_t current_wpm = get_current_wpm(); - if (current_wpm != i2c_buffer->current_wpm) { - if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_WPM_START, (void *)¤t_wpm, sizeof(current_wpm), TIMEOUT) >= 0) { - i2c_buffer->current_wpm = current_wpm; - } +i2c_status_t transport_trigger_callback(int8_t id) { + // If there's no callback, indicate that we were successful + if (!split_transaction_table[id].slave_callback) { + return I2C_STATUS_SUCCESS; } -# endif -# ifdef SPLIT_MODS_ENABLE - uint8_t real_mods = get_mods(); - if (real_mods != i2c_buffer->real_mods) { - if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_REAL_MODS_START, (void *)&real_mods, sizeof(real_mods), TIMEOUT) >= 0) { - i2c_buffer->real_mods = real_mods; + // Kick off the "callback executor", now that data has been written to the slave + split_shmem->transaction_id = id; + split_transaction_desc_t *trans = &split_transaction_table[I2C_EXECUTE_CALLBACK]; + return i2c_writeReg(SLAVE_I2C_ADDRESS, trans->initiator2target_offset, split_trans_initiator2target_buffer(trans), trans->initiator2target_buffer_size, SLAVE_I2C_TIMEOUT); +} + +bool transport_execute_transaction(int8_t id, const void *initiator2target_buf, uint16_t initiator2target_length, void *target2initiator_buf, uint16_t target2initiator_length) { + i2c_status_t status; + split_transaction_desc_t *trans = &split_transaction_table[id]; + if (initiator2target_length > 0) { + size_t len = trans->initiator2target_buffer_size < initiator2target_length ? trans->initiator2target_buffer_size : initiator2target_length; + memcpy(split_trans_initiator2target_buffer(trans), initiator2target_buf, len); + if ((status = i2c_writeReg(SLAVE_I2C_ADDRESS, trans->initiator2target_offset, split_trans_initiator2target_buffer(trans), len, SLAVE_I2C_TIMEOUT)) < 0) { + return false; } } - uint8_t weak_mods = get_weak_mods(); - if (weak_mods != i2c_buffer->weak_mods) { - if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_WEAK_MODS_START, (void *)&weak_mods, sizeof(weak_mods), TIMEOUT) >= 0) { - i2c_buffer->weak_mods = weak_mods; - } + // If we need to execute a callback on the slave, do so + if ((status = transport_trigger_callback(id)) < 0) { + return false; } -# ifndef NO_ACTION_ONESHOT - uint8_t oneshot_mods = get_oneshot_mods(); - if (oneshot_mods != i2c_buffer->oneshot_mods) { - if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_ONESHOT_MODS_START, (void *)&oneshot_mods, sizeof(oneshot_mods), TIMEOUT) >= 0) { - i2c_buffer->oneshot_mods = oneshot_mods; + if (target2initiator_length > 0) { + size_t len = trans->target2initiator_buffer_size < target2initiator_length ? trans->target2initiator_buffer_size : target2initiator_length; + if ((status = i2c_readReg(SLAVE_I2C_ADDRESS, trans->target2initiator_offset, split_trans_target2initiator_buffer(trans), len, SLAVE_I2C_TIMEOUT)) < 0) { + return false; } + memcpy(target2initiator_buf, split_trans_target2initiator_buffer(trans), len); } -# endif -# endif -# if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT) - i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_LED_MATRIX_START, (void *)led_matrix_eeconfig, sizeof(i2c_buffer->led_matrix), TIMEOUT); - bool suspend_state = led_matrix_get_suspend_state(); - i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_LED_SUSPEND_START, (void *)suspend_state, sizeof(i2c_buffer->led_suspend_state), TIMEOUT); -# endif -# if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) - i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_RGB_MATRIX_START, (void *)rgb_matrix_config, sizeof(i2c_buffer->rgb_matrix), TIMEOUT); - bool suspend_state = rgb_matrix_get_suspend_state(); - i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_RGB_SUSPEND_START, (void *)suspend_state, sizeof(i2c_buffer->rgb_suspend_state), TIMEOUT); -# endif - -# ifndef DISABLE_SYNC_TIMER - i2c_buffer->sync_timer = sync_timer_read32() + SYNC_TIMER_OFFSET; - i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_SYNC_TIME_START, (void *)&i2c_buffer->sync_timer, sizeof(i2c_buffer->sync_timer), TIMEOUT); -# endif return true; } -void transport_slave(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { -# ifndef DISABLE_SYNC_TIMER - sync_timer_update(i2c_buffer->sync_timer); -# endif - // Copy matrix to I2C buffer - memcpy((void *)i2c_buffer->smatrix, (void *)slave_matrix, sizeof(i2c_buffer->smatrix)); -# ifdef SPLIT_TRANSPORT_MIRROR - memcpy((void *)master_matrix, (void *)i2c_buffer->mmatrix, sizeof(i2c_buffer->mmatrix)); -# endif - -// Read Backlight Info -# ifdef BACKLIGHT_ENABLE - backlight_set(i2c_buffer->backlight_level); -# endif - -# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) - // Update the RGB with the new data - if (i2c_buffer->rgblight_sync.status.change_flags != 0) { - rgblight_update_sync(&i2c_buffer->rgblight_sync, false); - i2c_buffer->rgblight_sync.status.change_flags = 0; - } -# endif - -# ifdef ENCODER_ENABLE - encoder_state_raw(i2c_buffer->encoder_state); -# endif - -# ifdef WPM_ENABLE - set_current_wpm(i2c_buffer->current_wpm); -# endif - -# ifdef SPLIT_MODS_ENABLE - set_mods(i2c_buffer->real_mods); - set_weak_mods(i2c_buffer->weak_mods); -# ifndef NO_ACTION_ONESHOT - set_oneshot_mods(i2c_buffer->oneshot_mods); -# endif -# endif - -# if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT) - memcpy((void *)i2c_buffer->led_matrix, (void *)led_matrix_eeconfig, sizeof(i2c_buffer->led_matrix)); - led_matrix_set_suspend_state(i2c_buffer->led_suspend_state); -# endif -# if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) - memcpy((void *)i2c_buffer->rgb_matrix, (void *)rgb_matrix_config, sizeof(i2c_buffer->rgb_matrix)); - rgb_matrix_set_suspend_state(i2c_buffer->rgb_suspend_state); -# endif -} - -void transport_master_init(void) { i2c_init(); } - -void transport_slave_init(void) { i2c_slave_init(SLAVE_I2C_ADDRESS); } - -#else // USE_SERIAL +#else // USE_I2C # include "serial.h" -typedef struct _Serial_s2m_buffer_t { - // TODO: if MATRIX_COLS > 8 change to uint8_t packed_matrix[] for pack/unpack - matrix_row_t smatrix[ROWS_PER_HAND]; - -# ifdef ENCODER_ENABLE - uint8_t encoder_state[NUMBER_OF_ENCODERS]; -# endif - -} Serial_s2m_buffer_t; - -typedef struct _Serial_m2s_buffer_t { -# ifdef SPLIT_MODS_ENABLE - uint8_t real_mods; - uint8_t weak_mods; -# ifndef NO_ACTION_ONESHOT - uint8_t oneshot_mods; -# endif -# endif -# ifndef DISABLE_SYNC_TIMER - uint32_t sync_timer; -# endif -# ifdef SPLIT_TRANSPORT_MIRROR - matrix_row_t mmatrix[ROWS_PER_HAND]; -# endif -# ifdef BACKLIGHT_ENABLE - uint8_t backlight_level; -# endif -# ifdef WPM_ENABLE - uint8_t current_wpm; -# endif -# if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT) - led_eeconfig_t led_matrix; - bool led_suspend_state; -# endif -# if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) - rgb_config_t rgb_matrix; - bool rgb_suspend_state; -# endif -} Serial_m2s_buffer_t; - -# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) -// When MCUs on both sides drive their respective RGB LED chains, -// it is necessary to synchronize, so it is necessary to communicate RGB -// information. In that case, define RGBLIGHT_SPLIT with info on the number -// of LEDs on each half. -// -// Otherwise, if the master side MCU drives both sides RGB LED chains, -// there is no need to communicate. - -typedef struct _Serial_rgblight_t { - rgblight_syncinfo_t rgblight_sync; -} Serial_rgblight_t; +static split_shared_memory_t shared_memory; +split_shared_memory_t *const split_shmem = &shared_memory; -volatile Serial_rgblight_t serial_rgblight = {}; -uint8_t volatile status_rgblight = 0; -# endif - -volatile Serial_s2m_buffer_t serial_s2m_buffer = {}; -volatile Serial_m2s_buffer_t serial_m2s_buffer = {}; -uint8_t volatile status0 = 0; - -enum serial_transaction_id { - GET_SLAVE_MATRIX = 0, -# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) - PUT_RGBLIGHT, -# endif -}; - -SSTD_t transactions[] = { - [GET_SLAVE_MATRIX] = - { - (uint8_t *)&status0, - sizeof(serial_m2s_buffer), - (uint8_t *)&serial_m2s_buffer, - sizeof(serial_s2m_buffer), - (uint8_t *)&serial_s2m_buffer, - }, -# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) - [PUT_RGBLIGHT] = - { - (uint8_t *)&status_rgblight, sizeof(serial_rgblight), (uint8_t *)&serial_rgblight, 0, NULL // no slave to master transfer - }, -# endif -}; - -void transport_master_init(void) { soft_serial_initiator_init(transactions, TID_LIMIT(transactions)); } - -void transport_slave_init(void) { soft_serial_target_init(transactions, TID_LIMIT(transactions)); } +void transport_master_init(void) { soft_serial_initiator_init(); } +void transport_slave_init(void) { soft_serial_target_init(); } -# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) - -// rgblight synchronization information communication. - -void transport_rgblight_master(void) { - if (rgblight_get_change_flags()) { - rgblight_get_syncinfo((rgblight_syncinfo_t *)&serial_rgblight.rgblight_sync); - if (soft_serial_transaction(PUT_RGBLIGHT) == TRANSACTION_END) { - rgblight_clear_change_flags(); - } - } -} - -void transport_rgblight_slave(void) { - if (status_rgblight == TRANSACTION_ACCEPTED) { - rgblight_update_sync((rgblight_syncinfo_t *)&serial_rgblight.rgblight_sync, false); - status_rgblight = TRANSACTION_END; +bool transport_execute_transaction(int8_t id, const void *initiator2target_buf, uint16_t initiator2target_length, void *target2initiator_buf, uint16_t target2initiator_length) { + split_transaction_desc_t *trans = &split_transaction_table[id]; + if (initiator2target_length > 0) { + size_t len = trans->initiator2target_buffer_size < initiator2target_length ? trans->initiator2target_buffer_size : initiator2target_length; + memcpy(split_trans_initiator2target_buffer(trans), initiator2target_buf, len); } -} -# else -# define transport_rgblight_master() -# define transport_rgblight_slave() -# endif - -bool transport_master(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { -# ifndef SERIAL_USE_MULTI_TRANSACTION - if (soft_serial_transaction() != TRANSACTION_END) { - return false; - } -# else - transport_rgblight_master(); - if (soft_serial_transaction(GET_SLAVE_MATRIX) != TRANSACTION_END) { + if (soft_serial_transaction(id) != TRANSACTION_END) { return false; } -# endif - // TODO: if MATRIX_COLS > 8 change to unpack() - for (int i = 0; i < ROWS_PER_HAND; ++i) { - slave_matrix[i] = serial_s2m_buffer.smatrix[i]; -# ifdef SPLIT_TRANSPORT_MIRROR - serial_m2s_buffer.mmatrix[i] = master_matrix[i]; -# endif + if (target2initiator_length > 0) { + size_t len = trans->target2initiator_buffer_size < target2initiator_length ? trans->target2initiator_buffer_size : target2initiator_length; + memcpy(target2initiator_buf, split_trans_target2initiator_buffer(trans), len); } -# ifdef BACKLIGHT_ENABLE - // Write backlight level for slave to read - serial_m2s_buffer.backlight_level = is_backlight_enabled() ? get_backlight_level() : 0; -# endif - -# ifdef ENCODER_ENABLE - encoder_update_raw((uint8_t *)serial_s2m_buffer.encoder_state); -# endif - -# ifdef WPM_ENABLE - // Write wpm to slave - serial_m2s_buffer.current_wpm = get_current_wpm(); -# endif - -# ifdef SPLIT_MODS_ENABLE - serial_m2s_buffer.real_mods = get_mods(); - serial_m2s_buffer.weak_mods = get_weak_mods(); -# ifndef NO_ACTION_ONESHOT - serial_m2s_buffer.oneshot_mods = get_oneshot_mods(); -# endif -# endif - -# if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT) - serial_m2s_buffer.led_matrix = led_matrix_eeconfig; - serial_m2s_buffer.led_suspend_state = led_matrix_get_suspend_state(); -# endif -# if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) - serial_m2s_buffer.rgb_matrix = rgb_matrix_config; - serial_m2s_buffer.rgb_suspend_state = rgb_matrix_get_suspend_state(); -# endif - -# ifndef DISABLE_SYNC_TIMER - serial_m2s_buffer.sync_timer = sync_timer_read32() + SYNC_TIMER_OFFSET; -# endif return true; } -void transport_slave(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { - transport_rgblight_slave(); -# ifndef DISABLE_SYNC_TIMER - sync_timer_update(serial_m2s_buffer.sync_timer); -# endif - - // TODO: if MATRIX_COLS > 8 change to pack() - for (int i = 0; i < ROWS_PER_HAND; ++i) { - serial_s2m_buffer.smatrix[i] = slave_matrix[i]; -# ifdef SPLIT_TRANSPORT_MIRROR - master_matrix[i] = serial_m2s_buffer.mmatrix[i]; -# endif - } -# ifdef BACKLIGHT_ENABLE - backlight_set(serial_m2s_buffer.backlight_level); -# endif - -# ifdef ENCODER_ENABLE - encoder_state_raw((uint8_t *)serial_s2m_buffer.encoder_state); -# endif +#endif // USE_I2C -# ifdef WPM_ENABLE - set_current_wpm(serial_m2s_buffer.current_wpm); -# endif - -# ifdef SPLIT_MODS_ENABLE - set_mods(serial_m2s_buffer.real_mods); - set_weak_mods(serial_m2s_buffer.weak_mods); -# ifndef NO_ACTION_ONESHOT - set_oneshot_mods(serial_m2s_buffer.oneshot_mods); -# endif -# endif - -# if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT) - led_matrix_eeconfig = serial_m2s_buffer.led_matrix; - led_matrix_set_suspend_state(serial_m2s_buffer.led_suspend_state); -# endif -# if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) - rgb_matrix_config = serial_m2s_buffer.rgb_matrix; - rgb_matrix_set_suspend_state(serial_m2s_buffer.rgb_suspend_state); -# endif -} +bool transport_master(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { return transactions_master(master_matrix, slave_matrix); } -#endif +void transport_slave(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { transactions_slave(master_matrix, slave_matrix); } diff --git a/quantum/split_common/transport.h b/quantum/split_common/transport.h index a9f66301bf6b..1d4f6ed0cd86 100644 --- a/quantum/split_common/transport.h +++ b/quantum/split_common/transport.h @@ -1,10 +1,183 @@ +/* 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 +#include "stdint.h" +#include "stdbool.h" + +#include "progmem.h" +#include "action_layer.h" #include "matrix.h" +#ifndef RPC_M2S_BUFFER_SIZE +# define RPC_M2S_BUFFER_SIZE 32 +#endif // RPC_M2S_BUFFER_SIZE + +#ifndef RPC_S2M_BUFFER_SIZE +# define RPC_S2M_BUFFER_SIZE 32 +#endif // RPC_S2M_BUFFER_SIZE + void transport_master_init(void); void transport_slave_init(void); // returns false if valid data not received from slave bool transport_master(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]); void transport_slave(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]); + +bool transport_execute_transaction(int8_t id, const void *initiator2target_buf, uint16_t initiator2target_length, void *target2initiator_buf, uint16_t target2initiator_length); + +#ifdef ENCODER_ENABLE +# include "encoder.h" +# define NUMBER_OF_ENCODERS (sizeof((pin_t[])ENCODERS_PAD_A) / sizeof(pin_t)) +#endif // ENCODER_ENABLE + +#ifdef BACKLIGHT_ENABLE +# include "backlight.h" +#endif // BACKLIGHT_ENABLE + +#ifdef RGBLIGHT_ENABLE +# include "rgblight.h" +#endif // RGBLIGHT_ENABLE + +typedef struct _split_slave_matrix_sync_t { + uint8_t checksum; + matrix_row_t matrix[(MATRIX_ROWS) / 2]; +} split_slave_matrix_sync_t; + +#ifdef SPLIT_TRANSPORT_MIRROR +typedef struct _split_master_matrix_sync_t { + matrix_row_t matrix[(MATRIX_ROWS) / 2]; +} split_master_matrix_sync_t; +#endif // SPLIT_TRANSPORT_MIRROR + +#ifdef ENCODER_ENABLE +typedef struct _split_slave_encoder_sync_t { + uint8_t checksum; + uint8_t state[NUMBER_OF_ENCODERS]; +} split_slave_encoder_sync_t; +#endif // ENCODER_ENABLE + +#if !defined(NO_ACTION_LAYER) && defined(SPLIT_LAYER_STATE_ENABLE) +typedef struct _split_layers_sync_t { + layer_state_t layer_state; + layer_state_t default_layer_state; +} split_layers_sync_t; +#endif // !defined(NO_ACTION_LAYER) && defined(SPLIT_LAYER_STATE_ENABLE) + +#if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT) +# include "led_matrix.h" + +typedef struct _led_matrix_sync_t { + led_eeconfig_t led_matrix; + bool led_suspend_state; +} led_matrix_sync_t; +#endif // defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT) + +#if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) +# include "rgb_matrix.h" + +typedef struct _rgb_matrix_sync_t { + rgb_config_t rgb_matrix; + bool rgb_suspend_state; +} rgb_matrix_sync_t; +#endif // defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) + +#ifdef SPLIT_MODS_ENABLE +typedef struct _split_mods_sync_t { + uint8_t real_mods; + uint8_t weak_mods; +# ifndef NO_ACTION_ONESHOT + uint8_t oneshot_mods; +# endif // NO_ACTION_ONESHOT +} split_mods_sync_t; +#endif // SPLIT_MODS_ENABLE + +#if defined(SPLIT_TRANSACTION_IDS_KB) || defined(SPLIT_TRANSACTION_IDS_USER) +typedef struct _rpc_sync_info_t { + int8_t transaction_id; + uint8_t m2s_length; + uint8_t s2m_length; +} rpc_sync_info_t; +#endif // defined(SPLIT_TRANSACTION_IDS_KB) || defined(SPLIT_TRANSACTION_IDS_USER) + +typedef struct _split_shared_memory_t { +#ifdef USE_I2C + int8_t transaction_id; +#endif // USE_I2C + + split_slave_matrix_sync_t smatrix; + +#ifdef SPLIT_TRANSPORT_MIRROR + split_master_matrix_sync_t mmatrix; +#endif // SPLIT_TRANSPORT_MIRROR + +#ifdef ENCODER_ENABLE + split_slave_encoder_sync_t encoders; +#endif // ENCODER_ENABLE + +#ifndef DISABLE_SYNC_TIMER + uint32_t sync_timer; +#endif // DISABLE_SYNC_TIMER + +#if !defined(NO_ACTION_LAYER) && defined(SPLIT_LAYER_STATE_ENABLE) + split_layers_sync_t layers; +#endif // !defined(NO_ACTION_LAYER) && defined(SPLIT_LAYER_STATE_ENABLE) + +#ifdef SPLIT_LED_STATE_ENABLE + uint8_t led_state; +#endif // SPLIT_LED_STATE_ENABLE + +#ifdef SPLIT_MODS_ENABLE + split_mods_sync_t mods; +#endif // SPLIT_MODS_ENABLE + +#ifdef BACKLIGHT_ENABLE + uint8_t backlight_level; +#endif // BACKLIGHT_ENABLE + +#if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) + rgblight_syncinfo_t rgblight_sync; +#endif // defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) + +#if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT) + led_matrix_sync_t led_matrix_sync; +#endif // defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT) + +#if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) + rgb_matrix_sync_t rgb_matrix_sync; +#endif // defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) + +#if defined(WPM_ENABLE) && defined(SPLIT_WPM_ENABLE) + uint8_t current_wpm; +#endif // defined(WPM_ENABLE) && defined(SPLIT_WPM_ENABLE) + +#if defined(OLED_ENABLE) && defined(SPLIT_OLED_ENABLE) + uint8_t current_oled_state; +#endif // defined(OLED_ENABLE) && defined(SPLIT_OLED_ENABLE) + +#if defined(ST7565_ENABLE) && defined(SPLIT_ST7565_ENABLE) + uint8_t current_st7565_state; +#endif // ST7565_ENABLE(OLED_ENABLE) && defined(SPLIT_ST7565_ENABLE) + +#if defined(SPLIT_TRANSACTION_IDS_KB) || defined(SPLIT_TRANSACTION_IDS_USER) + rpc_sync_info_t rpc_info; + uint8_t rpc_m2s_buffer[RPC_M2S_BUFFER_SIZE]; + uint8_t rpc_s2m_buffer[RPC_S2M_BUFFER_SIZE]; +#endif // defined(SPLIT_TRANSACTION_IDS_KB) || defined(SPLIT_TRANSACTION_IDS_USER) +} split_shared_memory_t; + +extern split_shared_memory_t *const split_shmem; diff --git a/tmk_core/common/sync_timer.c b/quantum/sync_timer.c similarity index 100% rename from tmk_core/common/sync_timer.c rename to quantum/sync_timer.c diff --git a/tmk_core/common/sync_timer.h b/quantum/sync_timer.h similarity index 100% rename from tmk_core/common/sync_timer.h rename to quantum/sync_timer.h diff --git a/quantum/template/avr/config.h b/quantum/template/avr/config.h deleted file mode 100644 index 4192bbcfa230..000000000000 --- a/quantum/template/avr/config.h +++ /dev/null @@ -1,152 +0,0 @@ -/* -Copyright %YEAR% %YOUR_NAME% - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#pragma once - -#include "config_common.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x0000 -#define DEVICE_VER 0x0001 -#define MANUFACTURER %YOUR_NAME% -#define PRODUCT %KEYBOARD% - -/* key matrix size */ -#define MATRIX_ROWS 2 -#define MATRIX_COLS 3 - -/* - * 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 { D0, D5 } -#define MATRIX_COL_PINS { F1, F0, B0 } -#define UNUSED_PINS - -/* COL2ROW, ROW2COL */ -#define DIODE_DIRECTION COL2ROW - -/* - * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. - */ -#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 - -//#define LED_NUM_LOCK_PIN B0 -//#define LED_CAPS_LOCK_PIN B1 -//#define LED_SCROLL_LOCK_PIN B2 -//#define LED_COMPOSE_PIN B3 -//#define LED_KANA_PIN B4 - -//#define BACKLIGHT_PIN B7 -//#define BACKLIGHT_LEVELS 3 -//#define BACKLIGHT_BREATHING - -//#define RGB_DI_PIN E2 -//#ifdef RGB_DI_PIN -//# define RGBLED_NUM 16 -//# define RGBLIGHT_HUE_STEP 8 -//# define RGBLIGHT_SAT_STEP 8 -//# define RGBLIGHT_VAL_STEP 8 -//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ -//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ -/*== all animations enable ==*/ -//# define RGBLIGHT_ANIMATIONS -/*== or choose animations ==*/ -//# define RGBLIGHT_EFFECT_BREATHING -//# define RGBLIGHT_EFFECT_RAINBOW_MOOD -//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL -//# define RGBLIGHT_EFFECT_SNAKE -//# define RGBLIGHT_EFFECT_KNIGHT -//# define RGBLIGHT_EFFECT_CHRISTMAS -//# define RGBLIGHT_EFFECT_STATIC_GRADIENT -//# define RGBLIGHT_EFFECT_RGB_TEST -//# define RGBLIGHT_EFFECT_ALTERNATING -/*== customize breathing effect ==*/ -/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ -//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 -/*==== use exp() and sin() ====*/ -//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 -//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 -//#endif - -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 5 - -/* define if matrix has ghost (lacks anti-ghosting diodes) */ -//#define MATRIX_HAS_GHOST - -/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ -#define LOCKING_SUPPORT_ENABLE -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE - -/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. - * This is useful for the Windows task manager shortcut (ctrl+shift+esc). - */ -//#define GRAVE_ESC_CTRL_OVERRIDE - -/* - * Force NKRO - * - * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved - * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the - * makefile for this to work.) - * - * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) - * until the next keyboard reset. - * - * NKRO may prevent your keystrokes from being detected in the BIOS, but it is - * fully operational during normal computer usage. - * - * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) - * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by - * bootmagic, NKRO mode will always be enabled until it is toggled again during a - * power-up. - * - */ -//#define FORCE_NKRO - -/* - * 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 - -/* disable these deprecated features by default */ -#define NO_ACTION_MACRO -#define NO_ACTION_FUNCTION - -/* Bootmagic Lite key configuration */ -//#define BOOTMAGIC_LITE_ROW 0 -//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/quantum/template/avr/readme.md b/quantum/template/avr/readme.md deleted file mode 100644 index fd145584202e..000000000000 --- a/quantum/template/avr/readme.md +++ /dev/null @@ -1,19 +0,0 @@ -# %KEYBOARD% - -![%KEYBOARD%](imgur.com image replace me!) - -*A short description of the keyboard/project* - -* Keyboard Maintainer: [%YOUR_NAME%](https://github.com/yourusername) -* Hardware Supported: *The PCBs, controllers supported* -* Hardware Availability: *Links to where you can find this hardware* - -Make example for this keyboard (after setting up your build environment): - - make %KEYBOARD%:default - -Flashing example for this keyboard: - - make %KEYBOARD%:default:flash - -See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/quantum/template/avr/rules.mk b/quantum/template/avr/rules.mk deleted file mode 100644 index 5c0d8f307c54..000000000000 --- a/quantum/template/avr/rules.mk +++ /dev/null @@ -1,22 +0,0 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -BOOTLOADER = atmel-dfu - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE = no # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth -AUDIO_ENABLE = no # Audio output diff --git a/quantum/template/base/info.json b/quantum/template/base/info.json deleted file mode 100644 index af14d8799637..000000000000 --- a/quantum/template/base/info.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "keyboard_name": "%KEYBOARD%", - "url": "", - "maintainer": "%YOUR_NAME%", - "width": 3, - "height": 2, - "layouts": { - "LAYOUT": { - "layout": [ - {"label": "k00", "x": 0, "y": 0}, - {"label": "k01", "x": 1, "y": 0}, - {"label": "k02", "x": 2, "y": 0}, - - {"label": "k10", "x": 0, "y": 1, "w": 1.5}, - {"label": "k12", "x": 1.5, "y": 1, "w": 1.5} - ] - } - } -} diff --git a/quantum/template/base/keyboard.c b/quantum/template/base/keyboard.c deleted file mode 100644 index f69ae16ede67..000000000000 --- a/quantum/template/base/keyboard.c +++ /dev/null @@ -1,17 +0,0 @@ -/* Copyright %YEAR% %YOUR_NAME% - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "%KEYBOARD%.h" diff --git a/quantum/template/base/keyboard.h b/quantum/template/base/keyboard.h deleted file mode 100644 index bd2e88d12b94..000000000000 --- a/quantum/template/base/keyboard.h +++ /dev/null @@ -1,35 +0,0 @@ -/* Copyright %YEAR% %YOUR_NAME% - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#pragma once - -#include "quantum.h" - -/* This is a shortcut to help you visually see your layout. - * - * The first section contains all of the arguments representing the physical - * layout of the board and position of the keys. - * - * The second converts the arguments into a two-dimensional array which - * represents the switch matrix. - */ -#define LAYOUT( \ - k00, k01, k02, \ - k10, k12 \ -) { \ - { k00, k01, k02 }, \ - { k10, KC_NO, k12 } \ -} diff --git a/quantum/template/base/keymaps/default/keymap.c b/quantum/template/base/keymaps/default/keymap.c deleted file mode 100644 index d8020ab3e33a..000000000000 --- a/quantum/template/base/keymaps/default/keymap.c +++ /dev/null @@ -1,62 +0,0 @@ -/* Copyright %YEAR% %YOUR_NAME% - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -#include QMK_KEYBOARD_H - -// Defines names for use in layer keycodes and the keymap -enum layer_names { - _BASE, - _FN -}; - -// Defines the keycodes used by our macros in process_record_user -enum custom_keycodes { - QMKBEST = SAFE_RANGE, - QMKURL -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Base */ - [_BASE] = LAYOUT( - KC_A, KC_1, MO(_FN), - KC_TAB, KC_SPC - ), - [_FN] = LAYOUT( - QMKBEST, QMKURL, _______, - RESET, XXXXXXX - ) -}; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case QMKBEST: - if (record->event.pressed) { - // when keycode QMKBEST is pressed - SEND_STRING("QMK is the best thing ever!"); - } else { - // when keycode QMKBEST is released - } - break; - case QMKURL: - if (record->event.pressed) { - // when keycode QMKURL is pressed - SEND_STRING("https://qmk.fm/\n"); - } else { - // when keycode QMKURL is released - } - break; - } - return true; -} diff --git a/quantum/template/base/keymaps/default/readme.md b/quantum/template/base/keymaps/default/readme.md deleted file mode 100644 index e052ed80f14d..000000000000 --- a/quantum/template/base/keymaps/default/readme.md +++ /dev/null @@ -1 +0,0 @@ -# The default keymap for %KEYBOARD% diff --git a/quantum/template/ps2avrgb/config.h b/quantum/template/ps2avrgb/config.h deleted file mode 100644 index 6150bcce6d10..000000000000 --- a/quantum/template/ps2avrgb/config.h +++ /dev/null @@ -1,142 +0,0 @@ -/* -Copyright %YEAR% %YOUR_NAME% - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#pragma once - -#include "config_common.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x0000 -#define DEVICE_VER 0x0001 -#define MANUFACTURER %YOUR_NAME% -#define PRODUCT %KEYBOARD% - -/* key matrix size */ -#define MATRIX_ROWS 8 -#define MATRIX_COLS 15 - -/* - * 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, B5, B6, B7 } -#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2, D7 } -#define UNUSED_PINS - -/* COL2ROW, ROW2COL */ -#define DIODE_DIRECTION COL2ROW - -//#define LED_NUM_LOCK_PIN D0 -//#define LED_CAPS_LOCK_PIN D1 -//#define LED_SCROLL_LOCK_PIN D6 - -#define BACKLIGHT_PIN D4 -//#define BACKLIGHT_LEVELS 3 -//#define BACKLIGHT_BREATHING - -#define RGBLED_NUM 16 -//#define RGBLIGHT_HUE_STEP 8 -//#define RGBLIGHT_SAT_STEP 8 -//#define RGBLIGHT_VAL_STEP 8 -//#define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ -//#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ -/*== all animations enable ==*/ -//#define RGBLIGHT_ANIMATIONS -/*== or choose animations ==*/ -//#define RGBLIGHT_EFFECT_BREATHING -//#define RGBLIGHT_EFFECT_RAINBOW_MOOD -//#define RGBLIGHT_EFFECT_RAINBOW_SWIRL -//#define RGBLIGHT_EFFECT_SNAKE -//#define RGBLIGHT_EFFECT_KNIGHT -//#define RGBLIGHT_EFFECT_CHRISTMAS -//#define RGBLIGHT_EFFECT_STATIC_GRADIENT -//#define RGBLIGHT_EFFECT_RGB_TEST -//#define RGBLIGHT_EFFECT_ALTERNATING -/*== customize breathing effect ==*/ -/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/ -//#define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64 -/*==== use exp() and sin() ====*/ -//#define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7 -//#define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255 - -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 5 - -/* define if matrix has ghost (lacks anti-ghosting diodes) */ -//#define MATRIX_HAS_GHOST - -/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ -#define LOCKING_SUPPORT_ENABLE -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE - -/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. - * This is useful for the Windows task manager shortcut (ctrl+shift+esc). - */ -//#define GRAVE_ESC_CTRL_OVERRIDE - -/* - * Force NKRO - * - * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved - * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the - * makefile for this to work.) - * - * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) - * until the next keyboard reset. - * - * NKRO may prevent your keystrokes from being detected in the BIOS, but it is - * fully operational during normal computer usage. - * - * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) - * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by - * bootmagic, NKRO mode will always be enabled until it is toggled again during a - * power-up. - * - */ -//#define FORCE_NKRO - -/* - * 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 - -/* disable these deprecated features by default */ -#define NO_ACTION_MACRO -#define NO_ACTION_FUNCTION - -/* Bootmagic Lite key configuration */ -//#define BOOTMAGIC_LITE_ROW 0 -//#define BOOTMAGIC_LITE_COLUMN 0 diff --git a/quantum/template/ps2avrgb/readme.md b/quantum/template/ps2avrgb/readme.md deleted file mode 100644 index f19743a16371..000000000000 --- a/quantum/template/ps2avrgb/readme.md +++ /dev/null @@ -1,21 +0,0 @@ -# %KEYBOARD% - -![%KEYBOARD%](imgur.com image replace me!) - -*A short description of the keyboard/project* - -* Keyboard Maintainer: [%YOUR_NAME%](https://github.com/yourusername) -* Hardware Supported: *The PCBs, controllers supported* -* Hardware Availability: *Links to where you can find this hardware* - -Make example for this keyboard (after setting up your build environment): - - make %KEYBOARD%:default - -Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid)) - - make %KEYBOARD%:default:flash - -**Reset Key**: Hold down the key located at *LOCATION*, commonly programmed as *KEY* while plugging in the keyboard. - -See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/quantum/template/ps2avrgb/rules.mk b/quantum/template/ps2avrgb/rules.mk deleted file mode 100644 index 1b61e9534da1..000000000000 --- a/quantum/template/ps2avrgb/rules.mk +++ /dev/null @@ -1,19 +0,0 @@ -# MCU name -MCU = atmega32a - -# Bootloader selection -BOOTLOADER = bootloadHID - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -WS2812_DRIVER = i2c diff --git a/quantum/tools/readme.md b/quantum/tools/readme.md deleted file mode 100644 index 5f355256def8..000000000000 --- a/quantum/tools/readme.md +++ /dev/null @@ -1,6 +0,0 @@ -`eeprom_reset.hex` is to reset the eeprom on the Atmega32u4, like this: - - dfu-programmer atmega32u4 erase - dfu-programmer atmega32u4 flash --eeprom eeprom_reset.hex - - You'll need to reflash afterwards, because DFU requires the flash to be erased before messing with the eeprom. diff --git a/quantum/via.c b/quantum/via.c index c89b663b9b7d..7c8aa753e762 100644 --- a/quantum/via.c +++ b/quantum/via.c @@ -44,7 +44,7 @@ #include "raw_hid.h" #include "dynamic_keymap.h" -#include "tmk_core/common/eeprom.h" +#include "eeprom.h" #include "version.h" // for QMK_BUILDDATE used in EEPROM magic #include "via_ensure_keycode.h" @@ -83,16 +83,6 @@ void via_eeprom_set_valid(bool valid) { eeprom_update_byte((void *)VIA_EEPROM_MAGIC_ADDR + 2, valid ? magic2 : 0xFF); } -// Flag QMK and VIA/keyboard level EEPROM as invalid. -// Used in bootmagic_lite() and VIA command handler. -// Keyboard level code should not need to call this. -void via_eeprom_reset(void) { - // Set the VIA specific EEPROM state as invalid. - via_eeprom_set_valid(false); - // Set the TMK/QMK EEPROM state as invalid. - eeconfig_disable(); -} - // Override this at the keyboard code level to check // VIA's EEPROM valid state and reset to defaults as needed. // Used by keyboards that store their own state in EEPROM, @@ -109,19 +99,24 @@ void via_init(void) { // If the EEPROM has the magic, the data is good. // OK to load from EEPROM. - if (via_eeprom_is_valid()) { - } else { - // This resets the layout options - via_set_layout_options(VIA_EEPROM_LAYOUT_OPTIONS_DEFAULT); - // This resets the keymaps in EEPROM to what is in flash. - dynamic_keymap_reset(); - // This resets the macros in EEPROM to nothing. - dynamic_keymap_macro_reset(); - // Save the magic number last, in case saving was interrupted - via_eeprom_set_valid(true); + if (!via_eeprom_is_valid()) { + eeconfig_init_via(); } } +void eeconfig_init_via(void) { + // set the magic number to false, in case this gets interrupted + via_eeprom_set_valid(false); + // This resets the layout options + via_set_layout_options(VIA_EEPROM_LAYOUT_OPTIONS_DEFAULT); + // This resets the keymaps in EEPROM to what is in flash. + dynamic_keymap_reset(); + // This resets the macros in EEPROM to nothing. + dynamic_keymap_macro_reset(); + // Save the magic number last, in case saving was interrupted + via_eeprom_set_valid(true); +} + // This is generalized so the layout options EEPROM usage can be // variable, between 1 and 4 bytes. uint32_t via_get_layout_options(void) { @@ -329,6 +324,13 @@ void raw_hid_receive(uint8_t *data, uint8_t length) { #endif break; } +#ifdef VIA_EEPROM_ALLOW_RESET + case id_eeprom_reset: { + via_eeprom_set_valid(false); + eeconfig_init_via(); + break; + } +#endif case id_dynamic_keymap_macro_get_count: { command_data[0] = dynamic_keymap_macro_get_count(); break; diff --git a/quantum/via.h b/quantum/via.h index d0510fcabd3b..3db318a45465 100644 --- a/quantum/via.h +++ b/quantum/via.h @@ -16,7 +16,7 @@ #pragma once -#include "tmk_core/common/eeconfig.h" // for EECONFIG_SIZE +#include "eeconfig.h" // for EECONFIG_SIZE // Keyboard level code can change where VIA stores the magic. // The magic is the build date YYMMDD encoded as BCD in 3 bytes, @@ -152,12 +152,8 @@ bool via_eeprom_is_valid(void); // Keyboard level code (eg. via_init_kb()) should not call this void via_eeprom_set_valid(bool valid); -// Flag QMK and VIA/keyboard level EEPROM as invalid. -// Used in bootmagic_lite() and VIA command handler. -// Keyboard level code should not need to call this. -void via_eeprom_reset(void); - // Called by QMK core to initialize dynamic keymaps etc. +void eeconfig_init_via(void); void via_init(void); // Used by VIA to store and retrieve the layout options. diff --git a/quantum/via_ensure_keycode.h b/quantum/via_ensure_keycode.h index a9c1b8ba5d18..1aba0cdd2a38 100644 --- a/quantum/via_ensure_keycode.h +++ b/quantum/via_ensure_keycode.h @@ -5,362 +5,338 @@ #ifndef VIA_HAS_BROKEN_KEYCODES -_Static_assert(KC_NO == 0, ""); -_Static_assert(KC_TRNS == 1, ""); +// clang-format off -_Static_assert(KC_A == 0x04, ""); -_Static_assert(KC_B == 0x05, ""); -_Static_assert(KC_C == 0x06, ""); -_Static_assert(KC_D == 0x07, ""); -_Static_assert(KC_E == 0x08, ""); -_Static_assert(KC_F == 0x09, ""); -_Static_assert(KC_G == 0x0A, ""); -_Static_assert(KC_H == 0x0B, ""); -_Static_assert(KC_I == 0x0C, ""); -_Static_assert(KC_J == 0x0D, ""); -_Static_assert(KC_K == 0x0E, ""); -_Static_assert(KC_L == 0x0F, ""); -_Static_assert(KC_M == 0x10, ""); -_Static_assert(KC_N == 0x11, ""); -_Static_assert(KC_O == 0x12, ""); -_Static_assert(KC_P == 0x13, ""); -_Static_assert(KC_Q == 0x14, ""); -_Static_assert(KC_R == 0x15, ""); -_Static_assert(KC_S == 0x16, ""); -_Static_assert(KC_T == 0x17, ""); -_Static_assert(KC_U == 0x18, ""); -_Static_assert(KC_V == 0x19, ""); -_Static_assert(KC_W == 0x1A, ""); -_Static_assert(KC_X == 0x1B, ""); -_Static_assert(KC_Y == 0x1C, ""); -_Static_assert(KC_Z == 0x1D, ""); -_Static_assert(KC_1 == 0x1E, ""); -_Static_assert(KC_2 == 0x1F, ""); -_Static_assert(KC_3 == 0x20, ""); -_Static_assert(KC_4 == 0x21, ""); -_Static_assert(KC_5 == 0x22, ""); -_Static_assert(KC_6 == 0x23, ""); -_Static_assert(KC_7 == 0x24, ""); -_Static_assert(KC_8 == 0x25, ""); -_Static_assert(KC_9 == 0x26, ""); -_Static_assert(KC_0 == 0x27, ""); -_Static_assert(KC_ENTER == 0x28, ""); -_Static_assert(KC_ESCAPE == 0x29, ""); -_Static_assert(KC_BSPACE == 0x2A, ""); -_Static_assert(KC_TAB == 0x2B, ""); -_Static_assert(KC_SPACE == 0x2C, ""); -_Static_assert(KC_MINUS == 0x2D, ""); -_Static_assert(KC_EQUAL == 0x2E, ""); -_Static_assert(KC_LBRACKET == 0x2F, ""); -_Static_assert(KC_RBRACKET == 0x30, ""); -_Static_assert(KC_BSLASH == 0x31, ""); -_Static_assert(KC_SCOLON == 0x33, ""); -_Static_assert(KC_QUOTE == 0x34, ""); -_Static_assert(KC_GRAVE == 0x35, ""); -_Static_assert(KC_COMMA == 0x36, ""); -_Static_assert(KC_DOT == 0x37, ""); -_Static_assert(KC_SLASH == 0x38, ""); -_Static_assert(KC_CAPSLOCK == 0x39, ""); -_Static_assert(KC_F1 == 0x3A, ""); -_Static_assert(KC_F2 == 0x3B, ""); -_Static_assert(KC_F3 == 0x3C, ""); -_Static_assert(KC_F4 == 0x3D, ""); -_Static_assert(KC_F5 == 0x3E, ""); -_Static_assert(KC_F6 == 0x3F, ""); -_Static_assert(KC_F7 == 0x40, ""); -_Static_assert(KC_F8 == 0x41, ""); -_Static_assert(KC_F9 == 0x42, ""); -_Static_assert(KC_F10 == 0x43, ""); -_Static_assert(KC_F11 == 0x44, ""); -_Static_assert(KC_F12 == 0x45, ""); -_Static_assert(KC_PSCREEN == 0x46, ""); -_Static_assert(KC_SCROLLLOCK == 0x47, ""); -_Static_assert(KC_PAUSE == 0x48, ""); -_Static_assert(KC_INSERT == 0x49, ""); -_Static_assert(KC_HOME == 0x4A, ""); -_Static_assert(KC_PGUP == 0x4B, ""); -_Static_assert(KC_DELETE == 0x4C, ""); -_Static_assert(KC_END == 0x4D, ""); -_Static_assert(KC_PGDOWN == 0x4E, ""); -_Static_assert(KC_RIGHT == 0x4F, ""); -_Static_assert(KC_LEFT == 0x50, ""); -_Static_assert(KC_DOWN == 0x51, ""); -_Static_assert(KC_UP == 0x52, ""); -_Static_assert(KC_NUMLOCK == 0x53, ""); -_Static_assert(KC_KP_SLASH == 0x54, ""); -_Static_assert(KC_KP_ASTERISK == 0x55, ""); -_Static_assert(KC_KP_MINUS == 0x56, ""); -_Static_assert(KC_KP_PLUS == 0x57, ""); -_Static_assert(KC_KP_ENTER == 0x58, ""); -_Static_assert(KC_KP_1 == 0x59, ""); -_Static_assert(KC_KP_2 == 0x5A, ""); -_Static_assert(KC_KP_3 == 0x5B, ""); -_Static_assert(KC_KP_4 == 0x5C, ""); -_Static_assert(KC_KP_5 == 0x5D, ""); -_Static_assert(KC_KP_6 == 0x5E, ""); -_Static_assert(KC_KP_7 == 0x5F, ""); -_Static_assert(KC_KP_8 == 0x60, ""); -_Static_assert(KC_KP_9 == 0x61, ""); -_Static_assert(KC_KP_0 == 0x62, ""); -_Static_assert(KC_KP_DOT == 0x63, ""); -_Static_assert(KC_APPLICATION == 0x65, ""); -_Static_assert(KC_KP_EQUAL == 0x67, ""); -_Static_assert(KC_KP_COMMA == 0x85, ""); -_Static_assert(KC_LCTRL == 0xE0, ""); -_Static_assert(KC_LSHIFT == 0xE1, ""); -_Static_assert(KC_LALT == 0xE2, ""); -_Static_assert(KC_LGUI == 0xE3, ""); -_Static_assert(KC_RCTRL == 0xE4, ""); -_Static_assert(KC_RSHIFT == 0xE5, ""); -_Static_assert(KC_RALT == 0xE6, ""); -_Static_assert(KC_RGUI == 0xE7, ""); +_Static_assert(KC_NO == 0x0000, ""); +_Static_assert(KC_TRANSPARENT == 0x0001, ""); -_Static_assert(KC_TILD == 0x235, ""); -_Static_assert(KC_EXLM == 0x21E, ""); -_Static_assert(KC_AT == 0x21F, ""); -_Static_assert(KC_HASH == 0x220, ""); -_Static_assert(KC_DLR == 0x221, ""); -_Static_assert(KC_PERC == 0x222, ""); -_Static_assert(KC_CIRC == 0x223, ""); -_Static_assert(KC_AMPR == 0x224, ""); -_Static_assert(KC_ASTR == 0x225, ""); -_Static_assert(KC_LPRN == 0x226, ""); -_Static_assert(KC_RPRN == 0x227, ""); -_Static_assert(KC_UNDS == 0x22D, ""); -_Static_assert(KC_PLUS == 0x22E, ""); -_Static_assert(KC_LCBR == 0x22F, ""); -_Static_assert(KC_RCBR == 0x230, ""); -_Static_assert(KC_LT == 0x236, ""); -_Static_assert(KC_GT == 0x237, ""); -_Static_assert(KC_COLN == 0x233, ""); -_Static_assert(KC_PIPE == 0x231, ""); -_Static_assert(KC_QUES == 0x238, ""); -_Static_assert(KC_DQUO == 0x234, ""); +_Static_assert(KC_A == 0x0004, ""); +_Static_assert(KC_B == 0x0005, ""); +_Static_assert(KC_C == 0x0006, ""); +_Static_assert(KC_D == 0x0007, ""); +_Static_assert(KC_E == 0x0008, ""); +_Static_assert(KC_F == 0x0009, ""); +_Static_assert(KC_G == 0x000A, ""); +_Static_assert(KC_H == 0x000B, ""); +_Static_assert(KC_I == 0x000C, ""); +_Static_assert(KC_J == 0x000D, ""); +_Static_assert(KC_K == 0x000E, ""); +_Static_assert(KC_L == 0x000F, ""); +_Static_assert(KC_M == 0x0010, ""); +_Static_assert(KC_N == 0x0011, ""); +_Static_assert(KC_O == 0x0012, ""); +_Static_assert(KC_P == 0x0013, ""); +_Static_assert(KC_Q == 0x0014, ""); +_Static_assert(KC_R == 0x0015, ""); +_Static_assert(KC_S == 0x0016, ""); +_Static_assert(KC_T == 0x0017, ""); +_Static_assert(KC_U == 0x0018, ""); +_Static_assert(KC_V == 0x0019, ""); +_Static_assert(KC_W == 0x001A, ""); +_Static_assert(KC_X == 0x001B, ""); +_Static_assert(KC_Y == 0x001C, ""); +_Static_assert(KC_Z == 0x001D, ""); +_Static_assert(KC_1 == 0x001E, ""); +_Static_assert(KC_2 == 0x001F, ""); +_Static_assert(KC_3 == 0x0020, ""); +_Static_assert(KC_4 == 0x0021, ""); +_Static_assert(KC_5 == 0x0022, ""); +_Static_assert(KC_6 == 0x0023, ""); +_Static_assert(KC_7 == 0x0024, ""); +_Static_assert(KC_8 == 0x0025, ""); +_Static_assert(KC_9 == 0x0026, ""); +_Static_assert(KC_0 == 0x0027, ""); +_Static_assert(KC_ENTER == 0x0028, ""); +_Static_assert(KC_ESCAPE == 0x0029, ""); +_Static_assert(KC_BACKSPACE == 0x002A, ""); +_Static_assert(KC_TAB == 0x002B, ""); +_Static_assert(KC_SPACE == 0x002C, ""); +_Static_assert(KC_MINUS == 0x002D, ""); +_Static_assert(KC_EQUAL == 0x002E, ""); +_Static_assert(KC_LEFT_BRACKET == 0x002F, ""); +_Static_assert(KC_RIGHT_BRACKET == 0x0030, ""); +_Static_assert(KC_BACKSLASH == 0x0031, ""); +_Static_assert(KC_NONUS_HASH == 0x0032, ""); +_Static_assert(KC_SEMICOLON == 0x0033, ""); +_Static_assert(KC_QUOTE == 0x0034, ""); +_Static_assert(KC_GRAVE == 0x0035, ""); +_Static_assert(KC_COMMA == 0x0036, ""); +_Static_assert(KC_DOT == 0x0037, ""); +_Static_assert(KC_SLASH == 0x0038, ""); +_Static_assert(KC_CAPS_LOCK == 0x0039, ""); +_Static_assert(KC_F1 == 0x003A, ""); +_Static_assert(KC_F2 == 0x003B, ""); +_Static_assert(KC_F3 == 0x003C, ""); +_Static_assert(KC_F4 == 0x003D, ""); +_Static_assert(KC_F5 == 0x003E, ""); +_Static_assert(KC_F6 == 0x003F, ""); +_Static_assert(KC_F7 == 0x0040, ""); +_Static_assert(KC_F8 == 0x0041, ""); +_Static_assert(KC_F9 == 0x0042, ""); +_Static_assert(KC_F10 == 0x0043, ""); +_Static_assert(KC_F11 == 0x0044, ""); +_Static_assert(KC_F12 == 0x0045, ""); +_Static_assert(KC_PRINT_SCREEN == 0x0046, ""); +_Static_assert(KC_SCROLL_LOCK == 0x0047, ""); +_Static_assert(KC_PAUSE == 0x0048, ""); +_Static_assert(KC_INSERT == 0x0049, ""); +_Static_assert(KC_HOME == 0x004A, ""); +_Static_assert(KC_PAGE_UP == 0x004B, ""); +_Static_assert(KC_DELETE == 0x004C, ""); +_Static_assert(KC_END == 0x004D, ""); +_Static_assert(KC_PAGE_DOWN == 0x004E, ""); +_Static_assert(KC_RIGHT == 0x004F, ""); +_Static_assert(KC_LEFT == 0x0050, ""); +_Static_assert(KC_DOWN == 0x0051, ""); +_Static_assert(KC_UP == 0x0052, ""); +_Static_assert(KC_NUM_LOCK == 0x0053, ""); +_Static_assert(KC_KP_SLASH == 0x0054, ""); +_Static_assert(KC_KP_ASTERISK == 0x0055, ""); +_Static_assert(KC_KP_MINUS == 0x0056, ""); +_Static_assert(KC_KP_PLUS == 0x0057, ""); +_Static_assert(KC_KP_ENTER == 0x0058, ""); +_Static_assert(KC_KP_1 == 0x0059, ""); +_Static_assert(KC_KP_2 == 0x005A, ""); +_Static_assert(KC_KP_3 == 0x005B, ""); +_Static_assert(KC_KP_4 == 0x005C, ""); +_Static_assert(KC_KP_5 == 0x005D, ""); +_Static_assert(KC_KP_6 == 0x005E, ""); +_Static_assert(KC_KP_7 == 0x005F, ""); +_Static_assert(KC_KP_8 == 0x0060, ""); +_Static_assert(KC_KP_9 == 0x0061, ""); +_Static_assert(KC_KP_0 == 0x0062, ""); +_Static_assert(KC_KP_DOT == 0x0063, ""); +_Static_assert(KC_NONUS_BACKSLASH == 0x0064, ""); +_Static_assert(KC_APPLICATION == 0x0065, ""); +_Static_assert(KC_KB_POWER == 0x0066, ""); +_Static_assert(KC_KP_EQUAL == 0x0067, ""); +_Static_assert(KC_F13 == 0x0068, ""); +_Static_assert(KC_F14 == 0x0069, ""); +_Static_assert(KC_F15 == 0x006A, ""); +_Static_assert(KC_F16 == 0x006B, ""); +_Static_assert(KC_F17 == 0x006C, ""); +_Static_assert(KC_F18 == 0x006D, ""); +_Static_assert(KC_F19 == 0x006E, ""); +_Static_assert(KC_F20 == 0x006F, ""); +_Static_assert(KC_F21 == 0x0070, ""); +_Static_assert(KC_F22 == 0x0071, ""); +_Static_assert(KC_F23 == 0x0072, ""); +_Static_assert(KC_F24 == 0x0073, ""); +_Static_assert(KC_EXECUTE == 0x0074, ""); +_Static_assert(KC_HELP == 0x0075, ""); +_Static_assert(KC_MENU == 0x0076, ""); +_Static_assert(KC_SELECT == 0x0077, ""); +_Static_assert(KC_STOP == 0x0078, ""); +_Static_assert(KC_AGAIN == 0x0079, ""); +_Static_assert(KC_UNDO == 0x007A, ""); +_Static_assert(KC_CUT == 0x007B, ""); +_Static_assert(KC_COPY == 0x007C, ""); +_Static_assert(KC_PASTE == 0x007D, ""); +_Static_assert(KC_FIND == 0x007E, ""); -_Static_assert(KC_NONUS_HASH == 0x32, ""); -_Static_assert(KC_NONUS_BSLASH == 0x64, ""); -_Static_assert(KC_RO == 0x87, ""); -_Static_assert(KC_KANA == 0x88, ""); -_Static_assert(KC_JYEN == 0x89, ""); -_Static_assert(KC_HENK == 0x8A, ""); -_Static_assert(KC_MHEN == 0x8B, ""); -_Static_assert(KC_LANG1 == 0x90, ""); -_Static_assert(KC_LANG2 == 0x91, ""); +_Static_assert(KC_LOCKING_CAPS_LOCK == 0x0082, ""); +_Static_assert(KC_LOCKING_NUM_LOCK == 0x0083, ""); +_Static_assert(KC_LOCKING_SCROLL_LOCK == 0x0084, ""); +_Static_assert(KC_KP_COMMA == 0x0085, ""); +_Static_assert(KC_KP_EQUAL_AS400 == 0x0086, ""); +_Static_assert(KC_INTERNATIONAL_1 == 0x0087, ""); +_Static_assert(KC_INTERNATIONAL_2 == 0x0088, ""); +_Static_assert(KC_INTERNATIONAL_3 == 0x0089, ""); +_Static_assert(KC_INTERNATIONAL_4 == 0x008A, ""); +_Static_assert(KC_INTERNATIONAL_5 == 0x008B, ""); +_Static_assert(KC_INTERNATIONAL_6 == 0x008C, ""); +_Static_assert(KC_INTERNATIONAL_7 == 0x008D, ""); +_Static_assert(KC_INTERNATIONAL_8 == 0x008E, ""); +_Static_assert(KC_INTERNATIONAL_9 == 0x008F, ""); +_Static_assert(KC_LANGUAGE_1 == 0x0090, ""); +_Static_assert(KC_LANGUAGE_2 == 0x0091, ""); +_Static_assert(KC_LANGUAGE_3 == 0x0092, ""); +_Static_assert(KC_LANGUAGE_4 == 0x0093, ""); +_Static_assert(KC_LANGUAGE_5 == 0x0094, ""); +_Static_assert(KC_LANGUAGE_6 == 0x0095, ""); +_Static_assert(KC_LANGUAGE_7 == 0x0096, ""); +_Static_assert(KC_LANGUAGE_8 == 0x0097, ""); +_Static_assert(KC_LANGUAGE_9 == 0x0098, ""); +_Static_assert(KC_ALTERNATE_ERASE == 0x0099, ""); +_Static_assert(KC_SYSTEM_REQUEST == 0x009A, ""); +_Static_assert(KC_CANCEL == 0x009B, ""); +_Static_assert(KC_CLEAR == 0x009C, ""); +_Static_assert(KC_PRIOR == 0x009D, ""); -_Static_assert(KC_GESC == 0x5C16, ""); -_Static_assert(KC_LSPO == 0x5CD7, ""); -_Static_assert(KC_RSPC == 0x5CD8, ""); -_Static_assert(KC_LCPO == 0x5CF3, ""); -_Static_assert(KC_RCPC == 0x5CF4, ""); -_Static_assert(KC_LAPO == 0x5CF5, ""); -_Static_assert(KC_RAPC == 0x5CF6, ""); -_Static_assert(KC_SFTENT == 0x5CD9, ""); +_Static_assert(KC_OUT == 0x00A0, ""); +_Static_assert(KC_OPER == 0x00A1, ""); +_Static_assert(KC_CLEAR_AGAIN == 0x00A2, ""); +_Static_assert(KC_CRSEL == 0x00A3, ""); +_Static_assert(KC_EXSEL == 0x00A4, ""); -_Static_assert(BL_TOGG == 23743, ""); -_Static_assert(BL_STEP == 23744, ""); -_Static_assert(BL_BRTG == 23745, ""); -_Static_assert(BL_ON == 23739, ""); -_Static_assert(BL_OFF == 23740, ""); -_Static_assert(BL_INC == 23742, ""); -_Static_assert(BL_DEC == 23741, ""); -_Static_assert(RGB_TOG == 23746, ""); -_Static_assert(RGB_MOD == 23747, ""); -_Static_assert(RGB_RMOD == 23748, ""); -_Static_assert(RGB_HUI == 23749, ""); -_Static_assert(RGB_HUD == 23750, ""); -_Static_assert(RGB_SAI == 23751, ""); -_Static_assert(RGB_SAD == 23752, ""); -_Static_assert(RGB_VAI == 23753, ""); -_Static_assert(RGB_VAD == 23754, ""); -_Static_assert(RGB_SPI == 23755, ""); -_Static_assert(RGB_SPD == 23756, ""); -_Static_assert(RGB_M_P == 23757, ""); -_Static_assert(RGB_M_B == 23758, ""); -_Static_assert(RGB_M_R == 23759, ""); -_Static_assert(RGB_M_SW == 23760, ""); -_Static_assert(RGB_M_SN == 23761, ""); -_Static_assert(RGB_M_K == 23762, ""); -_Static_assert(RGB_M_X == 23763, ""); -_Static_assert(RGB_M_G == 23764, ""); -_Static_assert(RGB_M_T == 23765, ""); +_Static_assert(KC_PWR == 0x00A5, ""); +_Static_assert(KC_SLEP == 0x00A6, ""); +_Static_assert(KC_WAKE == 0x00A7, ""); +_Static_assert(KC_MUTE == 0x00A8, ""); +_Static_assert(KC_VOLU == 0x00A9, ""); +_Static_assert(KC_VOLD == 0x00AA, ""); +_Static_assert(KC_MNXT == 0x00AB, ""); +_Static_assert(KC_MPRV == 0x00AC, ""); +_Static_assert(KC_MSTP == 0x00AD, ""); +_Static_assert(KC_MPLY == 0x00AE, ""); +_Static_assert(KC_MSEL == 0x00AF, ""); +_Static_assert(KC_EJCT == 0x00B0, ""); +_Static_assert(KC_MAIL == 0x00B1, ""); +_Static_assert(KC_CALC == 0x00B2, ""); +_Static_assert(KC_MYCM == 0x00B3, ""); +_Static_assert(KC_WSCH == 0x00B4, ""); +_Static_assert(KC_WHOM == 0x00B5, ""); +_Static_assert(KC_WBAK == 0x00B6, ""); +_Static_assert(KC_WFWD == 0x00B7, ""); +_Static_assert(KC_WSTP == 0x00B8, ""); +_Static_assert(KC_WREF == 0x00B9, ""); +_Static_assert(KC_WFAV == 0x00BA, ""); +_Static_assert(KC_MFFD == 0x00BB, ""); +_Static_assert(KC_MRWD == 0x00BC, ""); +_Static_assert(KC_BRIU == 0x00BD, ""); +_Static_assert(KC_BRID == 0x00BE, ""); -_Static_assert(KC_F13 == 104, ""); -_Static_assert(KC_F14 == 105, ""); -_Static_assert(KC_F15 == 106, ""); -_Static_assert(KC_F16 == 107, ""); -_Static_assert(KC_F17 == 108, ""); -_Static_assert(KC_F18 == 109, ""); -_Static_assert(KC_F19 == 110, ""); -_Static_assert(KC_F20 == 111, ""); -_Static_assert(KC_F21 == 112, ""); -_Static_assert(KC_F22 == 113, ""); -_Static_assert(KC_F23 == 114, ""); -_Static_assert(KC_F24 == 115, ""); -_Static_assert(KC_PWR == 165, ""); -_Static_assert(KC_SLEP == 166, ""); -_Static_assert(KC_WAKE == 167, ""); -_Static_assert(KC_EXEC == 116, ""); -_Static_assert(KC_HELP == 117, ""); -_Static_assert(KC_SLCT == 119, ""); -_Static_assert(KC_STOP == 120, ""); -_Static_assert(KC_AGIN == 121, ""); -_Static_assert(KC_UNDO == 122, ""); -_Static_assert(KC_CUT == 123, ""); -_Static_assert(KC_COPY == 124, ""); -_Static_assert(KC_PSTE == 125, ""); -_Static_assert(KC_FIND == 126, ""); -_Static_assert(KC_CALC == 178, ""); -_Static_assert(KC_MAIL == 177, ""); -_Static_assert(KC_MSEL == 175, ""); -_Static_assert(KC_MYCM == 179, ""); -_Static_assert(KC_WSCH == 180, ""); -_Static_assert(KC_WHOM == 181, ""); -_Static_assert(KC_WBAK == 182, ""); -_Static_assert(KC_WFWD == 183, ""); -_Static_assert(KC_WSTP == 184, ""); -_Static_assert(KC_WREF == 185, ""); -_Static_assert(KC_WFAV == 186, ""); -_Static_assert(KC_BRIU == 189, ""); -_Static_assert(KC_BRID == 190, ""); -_Static_assert(KC_MPRV == 172, ""); -_Static_assert(KC_MNXT == 171, ""); -_Static_assert(KC_MUTE == 168, ""); -_Static_assert(KC_VOLD == 170, ""); -_Static_assert(KC_VOLU == 169, ""); -_Static_assert(KC_MSTP == 173, ""); -_Static_assert(KC_MPLY == 174, ""); -_Static_assert(KC_MRWD == 188, ""); -_Static_assert(KC_MFFD == 187, ""); -_Static_assert(KC_EJCT == 176, ""); -_Static_assert(KC_MS_U == 240, ""); -_Static_assert(KC_MS_D == 241, ""); -_Static_assert(KC_MS_L == 242, ""); -_Static_assert(KC_MS_R == 243, ""); -_Static_assert(KC_BTN1 == 244, ""); -_Static_assert(KC_BTN2 == 245, ""); -_Static_assert(KC_BTN3 == 246, ""); -_Static_assert(KC_BTN4 == 247, ""); -_Static_assert(KC_BTN5 == 248, ""); -_Static_assert(KC_WH_U == 249, ""); -_Static_assert(KC_WH_D == 250, ""); -_Static_assert(KC_WH_L == 251, ""); -_Static_assert(KC_WH_R == 252, ""); -_Static_assert(KC_ACL0 == 253, ""); -_Static_assert(KC_ACL1 == 254, ""); -_Static_assert(KC_ACL2 == 255, ""); -_Static_assert(KC_LCAP == 130, ""); -_Static_assert(KC_LNUM == 131, ""); -_Static_assert(KC_LSCR == 132, ""); +_Static_assert(KC_LEFT_CTRL == 0x00E0, ""); +_Static_assert(KC_LEFT_SHIFT == 0x00E1, ""); +_Static_assert(KC_LEFT_ALT == 0x00E2, ""); +_Static_assert(KC_LEFT_GUI == 0x00E3, ""); +_Static_assert(KC_RIGHT_CTRL == 0x00E4, ""); +_Static_assert(KC_RIGHT_SHIFT == 0x00E5, ""); +_Static_assert(KC_RIGHT_ALT == 0x00E6, ""); +_Static_assert(KC_RIGHT_GUI == 0x00E7, ""); -_Static_assert(FN_MO13 == 0x5F10, ""); -_Static_assert(FN_MO23 == 0x5F11, ""); +_Static_assert(KC_MS_U == 0x00F0, ""); +_Static_assert(KC_MS_D == 0x00F1, ""); +_Static_assert(KC_MS_L == 0x00F2, ""); +_Static_assert(KC_MS_R == 0x00F3, ""); +_Static_assert(KC_BTN1 == 0x00F4, ""); +_Static_assert(KC_BTN2 == 0x00F5, ""); +_Static_assert(KC_BTN3 == 0x00F6, ""); +_Static_assert(KC_BTN4 == 0x00F7, ""); +_Static_assert(KC_BTN5 == 0x00F8, ""); +_Static_assert(KC_WH_U == 0x00F9, ""); +_Static_assert(KC_WH_D == 0x00FA, ""); +_Static_assert(KC_WH_L == 0x00FB, ""); +_Static_assert(KC_WH_R == 0x00FC, ""); +_Static_assert(KC_ACL0 == 0x00FD, ""); +_Static_assert(KC_ACL1 == 0x00FE, ""); +_Static_assert(KC_ACL2 == 0x00FF, ""); -_Static_assert(MACRO00 == 0x5F12, ""); -_Static_assert(MACRO01 == 0x5F13, ""); -_Static_assert(MACRO02 == 0x5F14, ""); -_Static_assert(MACRO03 == 0x5F15, ""); -_Static_assert(MACRO04 == 0x5F16, ""); -_Static_assert(MACRO05 == 0x5F17, ""); -_Static_assert(MACRO06 == 0x5F18, ""); -_Static_assert(MACRO07 == 0x5F19, ""); -_Static_assert(MACRO08 == 0x5F1A, ""); -_Static_assert(MACRO09 == 0x5F1B, ""); -_Static_assert(MACRO10 == 0x5F1C, ""); -_Static_assert(MACRO11 == 0x5F1D, ""); -_Static_assert(MACRO12 == 0x5F1E, ""); -_Static_assert(MACRO13 == 0x5F1F, ""); -_Static_assert(MACRO14 == 0x5F20, ""); -_Static_assert(MACRO15 == 0x5F21, ""); +_Static_assert(KC_EXLM == 0x021E, ""); +_Static_assert(KC_AT == 0x021F, ""); +_Static_assert(KC_HASH == 0x0220, ""); +_Static_assert(KC_DLR == 0x0221, ""); +_Static_assert(KC_PERC == 0x0222, ""); +_Static_assert(KC_CIRC == 0x0223, ""); +_Static_assert(KC_AMPR == 0x0224, ""); +_Static_assert(KC_ASTR == 0x0225, ""); +_Static_assert(KC_LPRN == 0x0226, ""); +_Static_assert(KC_RPRN == 0x0227, ""); +_Static_assert(KC_UNDS == 0x022D, ""); +_Static_assert(KC_PLUS == 0x022E, ""); +_Static_assert(KC_LCBR == 0x022F, ""); +_Static_assert(KC_RCBR == 0x0230, ""); +_Static_assert(KC_PIPE == 0x0231, ""); +_Static_assert(KC_COLN == 0x0233, ""); +_Static_assert(KC_DQUO == 0x0234, ""); +_Static_assert(KC_TILD == 0x0235, ""); +_Static_assert(KC_LT == 0x0236, ""); +_Static_assert(KC_GT == 0x0237, ""); +_Static_assert(KC_QUES == 0x0238, ""); -_Static_assert(USER00 == 0x5F80, ""); -_Static_assert(USER01 == 0x5F81, ""); -_Static_assert(USER02 == 0x5F82, ""); -_Static_assert(USER03 == 0x5F83, ""); -_Static_assert(USER04 == 0x5F84, ""); -_Static_assert(USER05 == 0x5F85, ""); -_Static_assert(USER06 == 0x5F86, ""); -_Static_assert(USER07 == 0x5F87, ""); -_Static_assert(USER08 == 0x5F88, ""); -_Static_assert(USER09 == 0x5F89, ""); -_Static_assert(USER10 == 0x5F8A, ""); -_Static_assert(USER11 == 0x5F8B, ""); -_Static_assert(USER12 == 0x5F8C, ""); -_Static_assert(USER13 == 0x5F8D, ""); -_Static_assert(USER14 == 0x5F8E, ""); -_Static_assert(USER15 == 0x5F8F, ""); +_Static_assert(RESET == 0x5C00, ""); +_Static_assert(DEBUG == 0x5C01, ""); -_Static_assert(KC_POWER == 102, ""); -_Static_assert(KC_MENU == 118, ""); -_Static_assert(KC_KP_EQUAL_AS400 == 134, ""); -_Static_assert(KC_INT6 == 140, ""); -_Static_assert(KC_INT7 == 141, ""); -_Static_assert(KC_INT8 == 142, ""); -_Static_assert(KC_INT9 == 143, ""); -_Static_assert(KC_LANG3 == 146, ""); -_Static_assert(KC_LANG4 == 147, ""); -_Static_assert(KC_LANG5 == 148, ""); -_Static_assert(KC_LANG6 == 149, ""); -_Static_assert(KC_LANG7 == 150, ""); -_Static_assert(KC_LANG8 == 151, ""); -_Static_assert(KC_LANG9 == 152, ""); -_Static_assert(KC_ERAS == 153, ""); -_Static_assert(KC_SYSREQ == 154, ""); -_Static_assert(KC_CANCEL == 155, ""); -_Static_assert(KC_CLEAR == 156, ""); -_Static_assert(KC_CLR == 156, ""); -_Static_assert(KC_PRIOR == 157, ""); -_Static_assert(KC_OUT == 160, ""); -_Static_assert(KC_OPER == 161, ""); -_Static_assert(KC_CLEAR_AGAIN == 162, ""); -_Static_assert(KC_CRSEL == 163, ""); -_Static_assert(KC_EXSEL == 164, ""); -_Static_assert(KC_FN0 == 192, ""); -_Static_assert(KC_FN1 == 193, ""); -_Static_assert(KC_FN2 == 194, ""); -_Static_assert(KC_FN3 == 195, ""); -_Static_assert(KC_FN4 == 196, ""); -_Static_assert(KC_FN5 == 197, ""); -_Static_assert(KC_FN6 == 198, ""); -_Static_assert(KC_FN7 == 199, ""); -_Static_assert(KC_FN8 == 200, ""); -_Static_assert(KC_FN9 == 201, ""); -_Static_assert(KC_FN10 == 202, ""); -_Static_assert(KC_FN11 == 203, ""); -_Static_assert(KC_FN12 == 204, ""); -_Static_assert(KC_FN13 == 205, ""); -_Static_assert(KC_FN14 == 206, ""); -_Static_assert(KC_FN15 == 207, ""); -_Static_assert(KC_FN16 == 208, ""); -_Static_assert(KC_FN17 == 209, ""); -_Static_assert(KC_FN18 == 210, ""); -_Static_assert(KC_FN19 == 211, ""); -_Static_assert(KC_FN20 == 212, ""); -_Static_assert(KC_FN21 == 213, ""); -_Static_assert(KC_FN22 == 214, ""); -_Static_assert(KC_FN23 == 215, ""); -_Static_assert(KC_FN24 == 216, ""); -_Static_assert(KC_FN25 == 217, ""); -_Static_assert(KC_FN26 == 218, ""); -_Static_assert(KC_FN27 == 219, ""); -_Static_assert(KC_FN28 == 220, ""); -_Static_assert(KC_FN29 == 221, ""); -_Static_assert(KC_FN30 == 222, ""); -_Static_assert(KC_FN31 == 223, ""); -_Static_assert(RESET == 23552, ""); -_Static_assert(DEBUG == 23553, ""); -_Static_assert(MAGIC_TOGGLE_NKRO == 23572, ""); -_Static_assert(AU_ON == 23581, ""); -_Static_assert(AU_OFF == 23582, ""); -_Static_assert(AU_TOG == 23583, ""); -_Static_assert(CLICKY_TOGGLE == 23584, ""); -_Static_assert(CLICKY_ENABLE == 23585, ""); -_Static_assert(CLICKY_DISABLE == 23586, ""); -_Static_assert(CLICKY_UP == 23587, ""); -_Static_assert(CLICKY_DOWN == 23588, ""); -_Static_assert(CLICKY_RESET == 23589, ""); -_Static_assert(MU_ON == 23590, ""); -_Static_assert(MU_OFF == 23591, ""); -_Static_assert(MU_TOG == 23592, ""); -_Static_assert(MU_MOD == 23593, ""); +_Static_assert(MAGIC_TOGGLE_NKRO == 0x5C14, ""); + +_Static_assert(KC_GESC == 0x5C16, ""); + +_Static_assert(AU_ON == 0x5C1D, ""); +_Static_assert(AU_OFF == 0x5C1E, ""); +_Static_assert(AU_TOG == 0x5C1F, ""); + +_Static_assert(CLICKY_TOGGLE == 0x5C20, ""); +_Static_assert(CLICKY_ENABLE == 0x5C21, ""); +_Static_assert(CLICKY_DISABLE == 0x5C22, ""); +_Static_assert(CLICKY_UP == 0x5C23, ""); +_Static_assert(CLICKY_DOWN == 0x5C24, ""); +_Static_assert(CLICKY_RESET == 0x5C25, ""); +_Static_assert(MU_ON == 0x5C26, ""); +_Static_assert(MU_OFF == 0x5C27, ""); +_Static_assert(MU_TOG == 0x5C28, ""); +_Static_assert(MU_MOD == 0x5C29, ""); + +_Static_assert(BL_ON == 0x5CBB, ""); +_Static_assert(BL_OFF == 0x5CBC, ""); +_Static_assert(BL_DEC == 0x5CBD, ""); +_Static_assert(BL_INC == 0x5CBE, ""); +_Static_assert(BL_TOGG == 0x5CBF, ""); +_Static_assert(BL_STEP == 0x5CC0, ""); +_Static_assert(BL_BRTG == 0x5CC1, ""); +_Static_assert(RGB_TOG == 0x5CC2, ""); +_Static_assert(RGB_MOD == 0x5CC3, ""); +_Static_assert(RGB_RMOD == 0x5CC4, ""); +_Static_assert(RGB_HUI == 0x5CC5, ""); +_Static_assert(RGB_HUD == 0x5CC6, ""); +_Static_assert(RGB_SAI == 0x5CC7, ""); +_Static_assert(RGB_SAD == 0x5CC8, ""); +_Static_assert(RGB_VAI == 0x5CC9, ""); +_Static_assert(RGB_VAD == 0x5CCA, ""); +_Static_assert(RGB_SPI == 0x5CCB, ""); +_Static_assert(RGB_SPD == 0x5CCC, ""); +_Static_assert(RGB_M_P == 0x5CCD, ""); +_Static_assert(RGB_M_B == 0x5CCE, ""); +_Static_assert(RGB_M_R == 0x5CCF, ""); +_Static_assert(RGB_M_SW == 0x5CD0, ""); +_Static_assert(RGB_M_SN == 0x5CD1, ""); +_Static_assert(RGB_M_K == 0x5CD2, ""); +_Static_assert(RGB_M_X == 0x5CD3, ""); +_Static_assert(RGB_M_G == 0x5CD4, ""); +_Static_assert(RGB_M_T == 0x5CD5, ""); + +_Static_assert(KC_LSPO == 0x5CD7, ""); +_Static_assert(KC_RSPC == 0x5CD8, ""); +_Static_assert(KC_SFTENT == 0x5CD9, ""); + +_Static_assert(KC_LCPO == 0x5CF3, ""); +_Static_assert(KC_RCPC == 0x5CF4, ""); +_Static_assert(KC_LAPO == 0x5CF5, ""); +_Static_assert(KC_RAPC == 0x5CF6, ""); + +_Static_assert(FN_MO13 == 0x5F10, ""); +_Static_assert(FN_MO23 == 0x5F11, ""); +_Static_assert(MACRO00 == 0x5F12, ""); +_Static_assert(MACRO01 == 0x5F13, ""); +_Static_assert(MACRO02 == 0x5F14, ""); +_Static_assert(MACRO03 == 0x5F15, ""); +_Static_assert(MACRO04 == 0x5F16, ""); +_Static_assert(MACRO05 == 0x5F17, ""); +_Static_assert(MACRO06 == 0x5F18, ""); +_Static_assert(MACRO07 == 0x5F19, ""); +_Static_assert(MACRO08 == 0x5F1A, ""); +_Static_assert(MACRO09 == 0x5F1B, ""); +_Static_assert(MACRO10 == 0x5F1C, ""); +_Static_assert(MACRO11 == 0x5F1D, ""); +_Static_assert(MACRO12 == 0x5F1E, ""); +_Static_assert(MACRO13 == 0x5F1F, ""); +_Static_assert(MACRO14 == 0x5F20, ""); +_Static_assert(MACRO15 == 0x5F21, ""); + +_Static_assert(USER00 == 0x5F80, ""); +_Static_assert(USER01 == 0x5F81, ""); +_Static_assert(USER02 == 0x5F82, ""); +_Static_assert(USER03 == 0x5F83, ""); +_Static_assert(USER04 == 0x5F84, ""); +_Static_assert(USER05 == 0x5F85, ""); +_Static_assert(USER06 == 0x5F86, ""); +_Static_assert(USER07 == 0x5F87, ""); +_Static_assert(USER08 == 0x5F88, ""); +_Static_assert(USER09 == 0x5F89, ""); +_Static_assert(USER10 == 0x5F8A, ""); +_Static_assert(USER11 == 0x5F8B, ""); +_Static_assert(USER12 == 0x5F8C, ""); +_Static_assert(USER13 == 0x5F8D, ""); +_Static_assert(USER14 == 0x5F8E, ""); +_Static_assert(USER15 == 0x5F8F, ""); #endif diff --git a/tmk_core/common/virtser.h b/quantum/virtser.h similarity index 89% rename from tmk_core/common/virtser.h rename to quantum/virtser.h index a0645f9e03ea..df7e87984c80 100644 --- a/tmk_core/common/virtser.h +++ b/quantum/virtser.h @@ -1,5 +1,7 @@ #pragma once +void virtser_init(void); + /* Define this function in your code to process incoming bytes */ void virtser_recv(const uint8_t ch); diff --git a/quantum/visualizer/LICENSE.md b/quantum/visualizer/LICENSE.md deleted file mode 100644 index 22d4c3f08b41..000000000000 --- 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 e0735b37d047..000000000000 --- 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 2f43c67cc877..000000000000 --- 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 9accd8977454..000000000000 --- 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 23978974e3e1..000000000000 --- 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 4ea5b1463903..000000000000 --- 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 c13cce311d58..000000000000 --- 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 88768dd4a509..000000000000 --- 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 1d6f3dca18aa..000000000000 --- 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 b7125e832335..000000000000 --- 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 338ada52271a..000000000000 --- 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 90153be5eb6a..000000000000 --- 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 298efb742f2b..000000000000 --- 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 13bf734cb39a..000000000000 --- 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 178ef65f15703e9e1a75b05522a2caca3a5b31a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 271 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!VDxecyh&n6kC8#h%1o(|NsBeoAd7iSw}ow z978;gzn$`suUUbor8@sY_5bN#qY@4o^*-oN?N$}i{!p3ASp6pT-G$Gm8N{O17BKzL zb?7+1O@>8kK^0r$ioTV6cFP@V4Yu%!GcIoWQOL@oA8tKyN6qy&U;c<Fu)jR*TIjTV z+UnDVj~zK=53Fqyi0pJL@aI1-(h@G((;zax!H{K<?h6K8c58--vfG%xDjo?b3%zhL zBh-SS!I|R>Pt6^6+XIUfy%rV9i-<V<?0EV2N1a%OxIupT`{w!`!t&APn|a?q5<8T2 Sh`9;q9|liXKbLh*2~7as+-Noc diff --git a/quantum/visualizer/resources/resources.h b/quantum/visualizer/resources/resources.h deleted file mode 100644 index 5178fbe55a65..000000000000 --- a/quantum/visualizer/resources/resources.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 <stdint.h> - -#ifdef LCD_ENABLE -extern const uint8_t resource_lcd_logo[]; -#endif diff --git a/quantum/visualizer/visualizer.c b/quantum/visualizer/visualizer.c deleted file mode 100644 index 709affbb777a..000000000000 --- 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)¤t_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, ¤t_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)¤t_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(¤t_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(¤t_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 627c80a305a5..000000000000 --- 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 4c961ac59df1..000000000000 --- 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.c b/quantum/visualizer/visualizer_keyframes.c deleted file mode 100644 index 8f6a7e15a45f..000000000000 --- a/quantum/visualizer/visualizer_keyframes.c +++ /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/>. - */ - -#include "visualizer_keyframes.h" - -bool keyframe_no_operation(keyframe_animation_t* animation, visualizer_state_t* state) { - (void)animation; - (void)state; - return false; -} diff --git a/quantum/visualizer/visualizer_keyframes.h b/quantum/visualizer/visualizer_keyframes.h deleted file mode 100644 index c92ff1611360..000000000000 --- 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/quantum/wpm.c b/quantum/wpm.c index bec419a48e57..925e2c416e70 100644 --- a/quantum/wpm.c +++ b/quantum/wpm.c @@ -17,15 +17,41 @@ #include "wpm.h" +#include <math.h> + // WPM Stuff static uint8_t current_wpm = 0; -static uint16_t wpm_timer = 0; +static uint32_t wpm_timer = 0; +#ifndef WPM_UNFILTERED +static uint32_t smoothing_timer = 0; +#endif -// This smoothing is 40 keystrokes -static const float wpm_smoothing = WPM_SMOOTHING; +/* The WPM calculation works by specifying a certain number of 'periods' inside + * a ring buffer, and we count the number of keypresses which occur in each of + * those periods. Then to calculate WPM, we add up all of the keypresses in + * the whole ring buffer, divide by the number of keypresses in a 'word', and + * then adjust for how much time is captured by our ring buffer. Right now + * the ring buffer is hardcoded below to be six half-second periods, accounting + * for a total WPM sampling period of up to three seconds of typing. + * + * Whenever our WPM drops to absolute zero due to no typing occurring within + * any contiguous three seconds, we reset and start measuring fresh, + * which lets our WPM immediately reach the correct value even before a full + * three second sampling buffer has been filled. + */ +#define MAX_PERIODS (WPM_SAMPLE_PERIODS) +#define PERIOD_DURATION (1000 * WPM_SAMPLE_SECONDS / MAX_PERIODS) +#define LATENCY (100) +static int8_t period_presses[MAX_PERIODS] = {0}; +static uint8_t current_period = 0; +static uint8_t periods = 1; -void set_current_wpm(uint8_t new_wpm) { current_wpm = new_wpm; } +#if !defined(WPM_UNFILTERED) +static uint8_t prev_wpm = 0; +static uint8_t next_wpm = 0; +#endif +void set_current_wpm(uint8_t new_wpm) { current_wpm = new_wpm; } uint8_t get_current_wpm(void) { return current_wpm; } bool wpm_keycode(uint16_t keycode) { return wpm_keycode_kb(keycode); } @@ -54,7 +80,7 @@ __attribute__((weak)) uint8_t wpm_regress_count(uint16_t keycode) { } else if (keycode > 0xFF) { keycode = 0; } - if (keycode == KC_DEL || keycode == KC_BSPC) { + if (keycode == KC_DELETE || keycode == KC_BACKSPACE) { if (((get_mods() | get_oneshot_mods()) & MOD_MASK_CTRL) || weak_modded) { return WPM_ESTIMATED_WORD_SIZE; } else { @@ -66,25 +92,65 @@ __attribute__((weak)) uint8_t wpm_regress_count(uint16_t keycode) { } #endif +// Outside 'raw' mode we smooth results over time. + void update_wpm(uint16_t keycode) { if (wpm_keycode(keycode)) { - if (wpm_timer > 0) { - current_wpm += ((60000 / timer_elapsed(wpm_timer) / WPM_ESTIMATED_WORD_SIZE) - current_wpm) * wpm_smoothing; - } - wpm_timer = timer_read(); + period_presses[current_period]++; } #ifdef WPM_ALLOW_COUNT_REGRESSION uint8_t regress = wpm_regress_count(keycode); if (regress) { - current_wpm -= regress; - wpm_timer = timer_read(); + period_presses[current_period]--; } #endif } void decay_wpm(void) { - if (timer_elapsed(wpm_timer) > 1000) { - current_wpm += (-current_wpm) * wpm_smoothing; - wpm_timer = timer_read(); + int32_t presses = period_presses[0]; + for (int i = 1; i <= periods; i++) { + presses += period_presses[i]; + } + if (presses < 0) { + presses = 0; } + int32_t elapsed = timer_elapsed32(wpm_timer); + uint32_t duration = (((periods)*PERIOD_DURATION) + elapsed); + uint32_t wpm_now = (60000 * presses) / (duration * WPM_ESTIMATED_WORD_SIZE); + wpm_now = (wpm_now > 240) ? 240 : wpm_now; + + if (elapsed > PERIOD_DURATION) { + current_period = (current_period + 1) % MAX_PERIODS; + period_presses[current_period] = 0; + periods = (periods < MAX_PERIODS - 1) ? periods + 1 : MAX_PERIODS - 1; + elapsed = 0; + /* if (wpm_timer == 0) { */ + wpm_timer = timer_read32(); + /* } else { */ + /* wpm_timer += PERIOD_DURATION; */ + /* } */ + } + if (presses < 2) // don't guess high WPM based on a single keypress. + wpm_now = 0; + +#if defined WPM_LAUNCH_CONTROL + if (presses == 0) { + current_period = 0; + periods = 0; + wpm_now = 0; + } +#endif // WPM_LAUNCH_CONTROL + +#ifndef WPM_UNFILTERED + int32_t latency = timer_elapsed32(smoothing_timer); + if (latency > LATENCY) { + smoothing_timer = timer_read32(); + prev_wpm = current_wpm; + next_wpm = wpm_now; + } + + current_wpm = prev_wpm + (latency * ((int)next_wpm - (int)prev_wpm) / LATENCY); +#else + current_wpm = wpm_now; +#endif } diff --git a/quantum/wpm.h b/quantum/wpm.h index 4af52d2b989d..c8e7d2668413 100644 --- a/quantum/wpm.h +++ b/quantum/wpm.h @@ -22,8 +22,11 @@ #ifndef WPM_ESTIMATED_WORD_SIZE # define WPM_ESTIMATED_WORD_SIZE 5 #endif -#ifndef WPM_SMOOTHING -# define WPM_SMOOTHING 0.0487 +#ifndef WPM_SAMPLE_SECONDS +# define WPM_SAMPLE_SECONDS 5 +#endif +#ifndef WPM_SAMPLE_PERIODS +# define WPM_SAMPLE_PERIODS 50 #endif bool wpm_keycode(uint16_t keycode); diff --git a/readme.md b/readme.md index 7a61a6ea8dd8..5649ddfa097a 100644 --- a/readme.md +++ b/readme.md @@ -1,99 +1,36 @@ -# Quantum Mechanical Keyboard Configurator +# Quantum Mechanical Keyboard Firmware -[![Build Status](https://github.com/qmk/qmk_configurator/workflows/Website%20build/badge.svg)](https://github.com/qmk/qmk_configurator/actions) -[![Known Vulnerabilities](https://snyk.io/test/github/qmk/qmk_configurator/badge.svg)](https://snyk.io/test/github/qmk/qmk_configurator) +[![Current Version](https://img.shields.io/github/tag/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/tags) [![Discord](https://img.shields.io/discord/440868230475677696.svg)](https://discord.gg/Uq7gcHh) -[![GitHub contributors](https://img.shields.io/github/contributors/qmk/qmk_configurator.svg)](https://github.com/qmk/qmk_configurator/pulse/monthly) -[![GitHub forks](https://img.shields.io/github/forks/qmk/qmk_configurator.svg?style=social&label=Fork)](https://github.com/qmk/qmk_configurator/) +[![Docs Status](https://img.shields.io/badge/docs-ready-orange.svg)](https://docs.qmk.fm) +[![GitHub contributors](https://img.shields.io/github/contributors/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/pulse/monthly) +[![GitHub forks](https://img.shields.io/github/forks/qmk/qmk_firmware.svg?style=social&label=Fork)](https://github.com/qmk/qmk_firmware/) -The QMK Configurator is an online tool used for easily creating firmware files for keyboards supported in [qmk_firmware](https://github.com/qmk/qmk_firmware). The tool is located on https://config.qmk.fm. +This is a keyboard firmware based on the [tmk\_keyboard firmware](https://github.com/tmk/tmk_keyboard) with some useful features for Atmel AVR and ARM controllers, and more specifically, the [OLKB product line](https://olkb.com), the [ErgoDox EZ](https://ergodox-ez.com) keyboard, and the [Clueboard product line](https://clueboard.co). -The QMK Configurator allows simple keymap creation and saving via .json keymap files, and generates appropriate firmware files for flashing onto selected keyboards. +## Documentation -This project is very much a work in progress. To begin contributing, please refer to the following: +* [See the official documentation on docs.qmk.fm](https://docs.qmk.fm) - * [Issues](https://github.com/qmk/qmk_configurator/issues) +The docs are powered by [Docsify](https://docsify.js.org/) and hosted on [GitHub](/docs/). They are also viewable offline; see [Previewing the Documentation](https://docs.qmk.fm/#/contributing?id=previewing-the-documentation) for more details. -## Development +You can request changes by making a fork and opening a [pull request](https://github.com/qmk/qmk_firmware/pulls), or by clicking the "Edit this page" link at the bottom of any page. -We recommend you install and use [NVM](https://github.com/creationix/nvm) to manage node versions. There is a .nvmrc file in the root of the project directory that has been tested with our dependencies. +## Supported Keyboards -### Select node version -```shell -nvm use -``` +* [Planck](/keyboards/planck/) +* [Preonic](/keyboards/preonic/) +* [ErgoDox EZ](/keyboards/ergodox_ez/) +* [Clueboard](/keyboards/clueboard/) +* [Cluepad](/keyboards/clueboard/17/) +* [Atreus](/keyboards/atreus/) -### Project setup -``` -yarn install -``` +The project also includes community support for [lots of other keyboards](/keyboards/). -### Compiles and hot-reloads for development -``` -yarn run serve -``` +## Maintainers -### Compiles and minifies for production -``` -yarn run build -``` +QMK is developed and maintained by Jack Humbert of OLKB with contributions from the community, and of course, [Hasu](https://github.com/tmk). The OLKB product firmwares are maintained by [Jack Humbert](https://github.com/jackhumbert), the Ergodox EZ by [ZSA Technology Labs](https://github.com/zsa), the Clueboard by [Zach White](https://github.com/skullydazed), and the Atreus by [Phil Hagelberg](https://github.com/technomancy). -### Run your tests -``` -yarn run test -``` +## Official Website -### Lints and fixes files -``` -yarn run lint -``` - -### Run your end-to-end tests -Start the server separatly -``` -yarn run test:cypress -``` - -### Run your end-to-end tests like CI -Start the server separatly -``` -yarn run test:cypress:ci -``` - -### Run your unit tests -``` -yarn run test:unit -``` - -### Customize configuration -See [Configuration Reference](https://cli.vuejs.org/config/). - -## Docker - -If you don't have a webserver already and don't already have one in mind you can use docker. By default it spins up a self-contained environment. - - docker run -p 8080:80 qmkfm/qmk_configurator:latest - -You can specify a different backend URL by setting `VUE_APP_API_URL`: - - docker run -e VUE_APP_API_URL=http://localhost:8080 -p 8080:80 qmkfm/qmk_configurator:latest - -If you'd like to develop locally you can use a volume to tie your local filesystem to the container: - - docker run --mount type=volume,source=.,target=/qmk_configurator -p 8080:80 qmkfm/qmk_configurator:latest - -### Building The Docker Image - -Most of the time you don't need to do this, you can use volume mounts as described above to use the pre-built image with your local tree. - -If for some reason you do need to build it yourself, you can use this command: - - docker build -t qmk_configurator . - -This process will take a while. You may want to go make some tea or something. When it finishes you can run it with this command: - - docker run -p 8080:80 qmk_configurator - -## Internationalization Guide - -Please refer to [this document](internationalization_guide.md) +[qmk.fm](https://qmk.fm) is the official website of QMK, where you can find links to this page, the documentation, and the keyboards supported by QMK. diff --git a/requirements-dev.txt b/requirements-dev.txt index 1db3b6d73315..72137073381c 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -5,4 +5,5 @@ nose2 flake8 pep8-naming +pyflakes yapf diff --git a/requirements.txt b/requirements.txt index 3e23a6f33310..92381d7d5182 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,10 +2,10 @@ appdirs argcomplete colorama -dotty-dict hid hjson jsonschema>=3 milc>=1.4.2 pygments pyusb +qmk-dotty-dict diff --git a/secrets.tar.enc b/secrets.tar.enc deleted file mode 100644 index 6c613fed98cc4ae7553e92b854acea154aca8d1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10256 zcmV+rDDT%2zh#6!x80GYL}$Kv_heE*MU3efPzZg`D5}Z5^81|C9?&&h9Q@7O(+8CR zC0~0dmMh3nhlj*#q?r$;45DG+k?#`XSNm56Upv-cE>pAL$Ba3TECg<RQ}2o4WD6Wp zrbu-l=T;|)ni_-{vE2^smYZ&cpmlQeFVZR7P2EjANz6pc*W6ZaWJ4h)Irs+`r_-*~ zI1ezAz}>z1<H?{ORE)@uXC=xnL39-C8Sb1@D4@0M-OG{+H2mICVLMCgD?TiEzG7`{ zqz#-H&4qUg7LfAlMdkU011~@&uFP)29=HpxXXaeHO4_g)d^?s9PS0;fZrhkt6Ry?e zx-Q~TPI?AnK(t}*gT5J{+r#Bq$6nHnGT6GimMKrw)k}EEN1F75sIw~ZC(z^eq0FnF zkiJju#%4?03$Hj9xA?+qdJxT%th1Xd_AJ_tB++O4Fh%dUSNk{d28D|8Ewo4w#RxAt zgDxS6dDw-O_4jhu4{P^Ap!;I@VOHjY48II0dZ<w`<rED{_I!_s7elN``~DB?%2+!O zO;J*KL^a>@7a2$QsfOzs((aM>N`t7!SlsY0Tsnq@m^62ZXLbLD8E4@30wId!n)6@} zvj{MPKO|k`r!m?2m&qQYxh~iES+Xu3$-?GrabdiZ&Ui^{f@30Dds(PG^MflorQbj3 zcvga6V&~=k@za7WwlD}kp8yJO1|w1|Upq35`Yt!pUrj?!3+i<lSzIeDqm$qCPH0cm zM`Q@Lwt3yqXwd+U^+k%_n`x5t(!678eFQC)mi~H2QG=akI?1`xR0QzLBjcxPvsnTE zA1UHZx8b(C1Poni?j%^b*9~x`{Pk*4jF2|x%%dpI1Iyfg@WeOz2+{mN4061(;9B0j zHch#vir{&uMFQy&EqO4taZV*-7Eopmu!W$;fyv~VmmW;Lj7$mBRlH-<Q(#I#>1e6E zQQE5)WJO~?&GI1$k@YQ;tnc(i(XmKn%#n2eQJCAiid#vFcU3U~QLN{JS8#7Q@Pi+x z8M7dofuh63)YP(;_&^eMYVYZ1BmI!dK`@999U=*EG36(gLiS+OQ37J=`+U{hoaxbh ze`*ES?HUMSD%m%1B&~F!I703VB|SAVrKGm_Q&OwOgAHO?@(aIxG^Lm#?JX7b<aaE5 zg!~68wR9sOy<9`hra<J9CWRt2G7b>TSpM7Dfl}A`2=DhdjFBeagO9M&xvB79h48Eg zz3%kC5p<zsrKilfQ<7Wb>Z!unn2Co;5*Z8y{>rW2{$E)Jhj6~v=l`L%6Iaqen9p+r z6F2ziCC91C`W<e07ei7iyxBx-i%pV_*53WCL%zn4H8UB>^er*?@z}yd36m>@xh^vG zbF#!=;K}r{gVLNw(pV;B?)g#q+V+MQf|0KBFSg$UfMiEtyL$!(F)cmey(=E0EZdo4 zs(6pM-HS&Rv_19w)8V~={ib!ng^cWGpfreO!t_q*6b%RJp?PwBLJOtF!XvZo9hm6& z5>9~kA}r^(rK6mKLouvr#bLt*{RosX0YsEtR4RIwB38o)WvQ(ZaT}Q(kU?U06!{;0 z<zQaUhNrrPmwe?Khr0dc5ihW=XDsiiYWAK}Tr%Qr--9_vrAO=ZoBamd`xB6YG*%SO z=M4KmLf+mOg3I6x%jX*5JQ7#XwvXwkN2CDtw9adJ$igSou9MFgEx<UGj}Wtb<jx@f zzhPx}?A5My{mLciU~uEi5CXn`-76q9_6W0|KR-g(2z~08k#`y0%MX)2rLXgKZNrTm z!!bssn0p)y-W`qRIbvc=r;T328?^<m(w{9y(1aS&7mr@1?66mb4oLMxG?0L#j6tJ- z_gxb(CN!BW#E>R(7tR;G?;`c<m-1~lxK|zdzqhdl*N?6+ho9{!XOFiA!$MYwY}uNK zTF%n)li`iH&U`jPosV&wc*nvu$FCcy^fVK2v>SR+@50zM{7>j$Be?aFsc_7vJHE6P z0+fl^ikox%Ksi%vyq9yUX?(R8#n~@zHYE#8=I3qtDHb^lHUmN4F#$vkU@fG<S6>j= z`;m8jt$;7Qwxb-wirtpPI!Q>!#Qc=z(%HkkK7`0vX}y#rD3-oz26*zG<Mq;!Dbfm` zUXM$$3)yHcM1PGGdb$I}RYvXQ(EcV9okie-iiq_GhLJ#YReySNZZr8yJ1ongNNv8d zt23_?vcoX<2}j&m@jQgiti)1RaQ*I{5}Lp_lg_bjOHy5fnEA0Q1#S&xMgKdgyx$Jo zdaUfVcs)QVp4PI)-7`*gh^o9MB`R8l&3`aaRM@b2AUvx2u#+Tu_js0@wsoekjIW2g z$k9~)jC_;Kr43R~t!|w2xG~&QC!OmfOjFhHX4?xjBi)y3?V^#MX8}4)^cK<P@~PkL z2a*4RU@q@l@On?R9}>4B8CIz<X$tOnRSl;)20nB(rS-4yb&iHETJU~HM(V1zGqsoe zoa`DV1Bvf8;H)Rr7v_3jR%wg<++ePG+MKlZkoU><l~k5-mmnv9(TPQ)^{Gue#;)|U zLOx6OvOYfVyeR(LG-iCLSZY0u8uV;nPOQ!jh)eBkFoXlII0Q{36*sv`Hqw@e{wn0b z`!o8dzw4#fhgeektx~bc9v5Z7MSQV}r!0`<7nMRrW3BVaJlm_(g%d!l?bbIm|8)CD zzcD41&knGeBFZH=-6c!qXOJ>KF4bV_kQ>^5HbF@H^ao!?99<tXZl#s~4GJj;!+#OZ z(ct+RjNr)h`WcC0r=J3cL6yj!SAF?TRoKB^gQfH~EpjI&p_`xQ&8i!yWOC|S@1^mx zIXvF&Yy&dlZ?A-AD8<CBaww2Ma1%214E6$+Axw{$%@Urv*uhQo#VTeP9HE9*xQx}k zemWik_b<L;*d&)`YNgjJ&}pRyEb%=Flv^$T>QN=_tLgGbnx>blXK(26`<c-iKz{sK zH|xL0flr#q-uA>(iv;RdrmsSBVZolOH+bBG$$AZ*0*OhAROf}ZwECQHCU*Mm*E~!C zwSP+CR@eZ*TnQ%i$dkfs?_P91b2M9r*|9$rNJj5Ea}f!H!dE^7G-G+>yn`2N95NjG z4!+LDuF(1d1pr~LX@ptYxKBR&V$Xw<)$-jT)5K^G<*)&OnO2hD<4fUm1_M36_5N0* zHUd9R&GF|z3b8Ug=eG*hSc_-QrQDj=3gf<mewpd9l92vZ1^tBt2|3yR!EOMBg-rX5 zE!N+89<G1Lb{ZP}vD;#Q(TWs0NZZnOC6e#%>X-Hy>+|_9%-zqchtP@q%iuZnL?Y)^ z|9!qU+K#_4a&HpjI>ZWD++MB>l~epoqc0jioC1XIO`(t%Zg0>786St|KeF~RWmhU+ z(kV>{LE&|zlhqy>?=+6NWgy28O+vdl=eg_?kcWOp$jdDsS*sY*D6zj{B3lxXn&0k6 z#Ef7_Xs*MTBZJ)U@@<lYUzqTX?*RkVa}H%-G{Fz2c&{X<-%4Gl`|1DGmo&ZuiMuk2 zR&pCK15*vqs!=%7{`o#bh@Xdxxr@abd`n)%J0eW@9I1t&Z!<r-^)>e-6lTn=>ik2d zVjY^|_D*dV*HQ%IG)lQaeeA~x%XE(0Tl_dnl@i1?a3X_>z!Bv^p<(YB-6%ciW+`s& zM%!;#8d4QT{200ni-RKIRul%Uz<)RiENY3J6UsRcQMoOQv}DIPk&-vXvR*T~f3)dv zwAdf8-A66se^-PG^Dw`%vmM$KMHB+wTu!w{_l5;JHNc5^Txf1N*4%N^%&PljV@%^G zx>fwYeQkOM6!!2!Ot8efa{)yWPpYF4HuCYg$Ss;PM)0M1il&%6sp>x!ksI$xtrYZb zHX(W>9~U$=XKI@&%E5YCl!zM$_NSBsI9;prf2Lg}5<1|eVNesMfyfIWmf=gzyV*h> zNN3QqY8$4?b3O-wfwx(+T)vyv&diG=I8#0X^yYn!V!5PnWPnNC4UnBo)mXc6v0D}+ z%t_gn1OOY)D;HxJ^70lk^#H&GGw`!IC21t^?x5vpvG9LsLxkUl@8oGdlj#fF&ju^H z=o28rXBwybTa&&d;l+N(soJrsR&3MIi<qo5j0VV;;uv`ujO`)V(8WYc<NDE)YC+8k zcI!ASTfI;dEt3n_I%d=dWQDoKb7*L81Xe_zMPFyRo_Ft0u=8&$FCYxVd)>IC_PWvF zUYQY1IL<i$p@Z&C7b@TbMQ$ND%y9Pc@(}P)%B!I}0Iu+cj^aDdS@0eOhG@S=dzOC$ z-2;&1<1Ok8h@z5(>ekCI*dgT&0FP3w6$BWnt;LJI%;N{t0-T8VL8Wr)9n!bI>7s0l z)k8d08WT)d!R`MTe}{MItV5L@U}yv~%lz~h(7@L4c&1OWr2IZp2KTasdd!F1tBghk zka>EGitND#+MXofCe!gtgzgEl9f&Cy{IlU5FUT8-h6m_<*32EeO@UGIndX{<v*&vZ zMCTk;B^-qb4BksdOc*1+_ztzYgnmmIe0`+RDR*aN5l?pe7L7Fi4`N&7Z5lLSnz{r^ z+gC2Vf98mdhVy{8pCv6$v1H;CG!<>vcOr7uudH^j`<XIiqq$)%%+a5$vz$3dy}p{E z#$1hAUzNRcGMACYXlk~Dtl3=XA;>f{76dd+hEG*B?P~#R2+3d=J^2g5>v@Kr$T`2% zTMP1KWyaK4p_STni#LYWOdKJvX;Gn)90Y2EmG(xC9_<OVf53&<MA*}NBy=P(K7yf$ zlwsx4hxuTKcc`I*z~MUYGvoYLwDrV)&~KOKP^?(<w1<icUct<dcjt>?*Nu9avnf1- zMhD-xLR0nREZ(3-62RoI_7Kxj;5>*0Q!XM@!MxZU8vLEVj@Kx$wNs`Y<Z)?b{jwnR zgOnH0ABYh5=7Liz-iX^z_A=AxQMy}iG%M;MJq3U2rODUMPl6C=wGpFw=-~Pn0t>{= z3A_?<e#^{^d3}Gx=TUk|Nh0dJzV={mx*5Nv*V0*0!ZQWojv0Ie4Es}6B1UIh=D$33 zO;;Y#0b}PaRFbs@q{&1eXk}+WW8&AgsDF<%`rrK=4PiNA1yjm?kj4Qv?KCKe99_O< z0@8F)uorVSX|!}7(l+V-tE^w?ga{xJA-u&BY5_J3xm#Ps9nYT$MMvT(f3{IGi0l9y zMmiAHj6dtB?^6_~&_}KC>VcrWdK%cK)!~}X-kPT^k4>r=R{96&PkK#4#QdgZe7S(S z0RHklnWE)U)1FC{IaQy})8EjG!7Fuf@~*-kf}?3Avu$aW!bMVO$ei@p!dlodnJ$t` zW==sco4m)dW{p|iAb~U~fs44R&pNe#fJcC<%H^EO>ZKox4#aaZJzb_{EEfe+yOezm zi?0bi;%l^zIG(+2BzjLnu8==m<hF3*Pkj|k)0w2;NoB=x8v^!@{>U@+FO#er;`v!{ zRoVmneSbys66AG`f33jECr0@&8xhkLP>J55bCkfBn9{4e3_4P-RTpyb2y_yW1)^D7 z!gN2ttcUx|-X*G3a{8#SZ_%vaMduK`tkOI~xT-M_*0hRi7cE(e7`uK7j!1{apNboZ zlOetG{*x|lz-|EMqq?I{eu&h^q2SC61m33g(6Hr^709nHAZ9@c2xa<c<+}-dO%_-^ zJljn903Adl4U+9c2_>91jXto?<>3jm2pMc0_q50pN4Oz*sd~rodvAYQODY3a(sdEn z2ibTNz*lEp!`gpzj(a{>gp5`Qz|1-ec;@U7RTqRag|s3!Eyttdf_+O<7CYn{daY1V z;vcgn*N4tWu5p<=!x}fxEz7Y@zA3>q*ccBn9<CvEe`?g`x8yr}3l6r=F)cIVH^%$I zA+QHoH0}$*ks2GHD%~8W_TeKxMpT(GzkMm~wI?%;vDm%>Y>4$WA_!mwCSke%p)>af z`%g*^{iIIYbS}U7oQQl-lva5<@7VYczk=Rhe)?K0jwqB!L$D`aZA5?M;^{Mf^|1x# z)A0dXf}NdhW>%b3VqGQ!Xbff>vhacM)H2u#(u_7y^e#J5Inveq=1y-uyjG28Bz-mH z7Yx39+NM5WB|+XY3si#l%+&pbp5EXs2Lbz~616Dc(JXthJ)xnBH{440anQOMr-e>^ zf5d*=XIdI06S_7n_I8jey~V86qA>x&pnm<pw7XHw)xJau?R-%X+PJc%tE+?G&ak#2 zXspVW3V?<B67Hq6Ia{N!yEX#0DAy1GF05m8WujbfC&`5}Dvn9*_V<-6Uakwo>QgU4 zm+1Nvkt6l8b{$JCXcjFS3aR>El-WrY^@pso%Jn80%P3Sr2kY7OBnxo~<Ji^x0NsZ@ zxL`ZMb^rKyClQ-lwFdMBG5_#b&`yT`cPrhCUYj)AaC30WW}NbB{tm%#8#p>E*nyke z<ij;k7AGX|w%M0m08cI90JcE_9e=g@Q*&sLdDvqOujQ>}g?$WPrq@g23g_kj{r&7+ z_UnaaI^SNFuWFOgfU}|iQ@gL!YA+)Ed6v^_*t#w`%+cy^Pg<u_{1;$J6Nn^9MP>mm z*+DN_+%it5Mo?|_9f0LVL%`cO)4J^6P6bkOB_+NU%lv4j>O-xf6u%nqaHpV|A>~8i zAIjMuw?@i@Ue(9<sm*n{_RbbcLL)20H8?x&!9Jd#+2-LZxl^WdIZd>?^1v`LARDwJ z+hf-4laj}A^%FB6*c{q|*A72F(c<IIAv(x1H+!BDMBU(X(@7izdvDF|_%h5@Ema_g z_K;rGtL4S$6C0j1-Nwas;9#y99hdz`hUvu9%ZND~1EfXA`|Tj)X$YE5PdlpJ?<4CT z`p3ZsAKa_oD)EdzoBEy76uPlo0c%R}BTyjd2sz%qpT@QA;g<xqupY;jBzCrfm~wSy zW%1#d(x2K7Wn45Q%wmHH&-V2nF7$x%GL2gXSD%VX*2FWHg_)u@5_yDpWNny0o^nkD z2NiUix;b=f>>Fig^*&$r3<?8{4;9V(y3WF)%Mui3B>V@dKR*)K$X<Oi8M|6y6PRuz z`^)RhoK#(+(@mK3@|B6BfcEAp%NmSj(JWp~IhkHh^q*jqrNbeP0X8+ZrnJbU8W-%3 zO@X$VLgaHNn8?~11G>nbvU3=}d2y*zm)8#&z|$Ri)t0cK)WZk{&>ZlGH$X4Bb2dkg zCpK$x%iqtd`lkPv(fr6N^=#DNYwS@#rqb2%pEYJzepoL<-j-s1-wQ@^KgF4?JT+b= z$TV)@>fpp37br5wV^!596++ymvm(K+@ktRjT?*<Cqx-=U`Hz?^_-35S!h5qC!^QM7 zPP0G`@;P8tLvWwQC`qW<%U2M+E;G`Nac3T@ADG`vqm;Vj(ny!eEqoAPj0`T@db0;p zvK;ey%J=!U{^+MyfnG>xvB#_PoI;gQgJj%YFXn@h$BcosIWgQtJI>j*5kx$Pxg5_l z!%Ea#oDV^~yPlaT1>dwUPqP{w&;4hKfI)$jbMQ|RbkcR@-9@MQ^$Gj95i)q;NzHNa zF3ISxcHGw}_<qdMaH%7(G%{%YY$Aj&(c$>0xwmq1N^eR6^A~y}PhF0L$fL~lYtj4s zVdmksLHJ2F#-Bw{8_#SjE-4}`_WsJ=?&c(Bd1?gd+hI`zR~5<oISA+}tJEpAu0TGz zBc&5Ymc<40@G987$CCcN&J{)%li>CVoWjSjCwE#hj>qKa&3bR`DML|pla;-OQ^xTj zE-!`L`^A1#MKH?Z#Oh9QM;!dbl-8Q?9FUxl!j0(h^3LIf{$ak-xGsSCzo*#4xkBhc zo7tw@gR$lWdnV4a!j}Zgs0r(V6sQk9$sYa~)MOV+m#~^Em^o4Nm9*UM1O@ShHxF4# zx~a%VdG(B9L&JfF&l^#B4KxDS^|3?Am-65@<2=y`un(3NG$PVCrL=@&U_vEuE!yI) zFT18A5subL)Kn<4^w*gs_sxm=oM@X;dSRB1CqdLSraWGe5$l(4X&MiIm!WV`bgu;r z+*WIR{$Ji$bwa1?N^U+ljkJ3zEzQAih>Mu_V*<$>*X=E}4@64WmD>zeS%bf$4Qu5~ zK6%d7(4c&zX#ghjLkcu8p*p(9n6|H&{)@4|aYNF6AT;wtf0aqy_Qsa`)-&SQ7?MVq zjgbG>yNV{kV+jk<v^u_7%;k#E<i;$bCZF6${eF%?<A#rAZe2Ll>9!C=-%}rU*OAN0 zjqxVyO=DyPf7Zb2*(r34x=PX7RWeH{sdq4J`fH~TTX2y{@Uufc_lb!5jXt8HY{BSi zo1NHu{`$GSvx;|vTu3GukhtkPW#qD-bFJ9F#csXjJHZ^QJaU<}v%0$JpKgV`9xYnP zROsE>MX{~>5S2pW!N6!tvaoU&P|!IWu8!4<>)I8hv7a4Km1bNA*sImT&nDQ6hoL|D z=_8AZ*p;I?V6M8&ppTp>Cmb*hV^k}06!Fw@Xj`aJmdawK@r<QE8xb?kgR@I3Mvr<7 zq`vY*Q`M5O)bqnhnxtXdPQX0*K1t-U0LZ18tqzgr3D}RTGuwJ&nHt*2i=5ODn@Q}b zz6`pGS7e>mQT>->J}%)IWUKWYG(uY{EV8n`t`5uhObp4vwZvY0owS%M(S3Gep`n;J z;m9oZcH+r1@$YyzWBL%vevq5D^VgmZJc1D+1@pF>nI8->&bMI&Rj5Qz$8SEeSiPa| zlEAEYBGE@!UY~h*)N5TUcQ_!&+~dmi4u{IH0=~~lIDiut0Vpy$ep9kH7%%{&XH;+g z><Sy^gmfRl=LFFbPQXGN^HIF7oFpzd*m?&RudgIrJe(k9*~a2)JEL}uPm6^qkq}j@ zi6lIXnE}I1WVXS&umjovB@qr<NQH10pdy`|gjTwOX;PQMTvT9^QJ<E@?s=_iIjx~v zg}fZ?mMTFFN;DsL+7D*gFf?GdzksdxZ@?|zm&-6|I|)m^>nUkng>!9j7;O#C7HFbs z-_D@V7=!i!byvDys=;DdZ+r0`8tQY!hZ=cIb}Uq`Q<ELbZ!JylNdcUNUrQ+s4Kb*X z>^Yz5O&_>vHk=#8#X_B~>6(b7=ytL69#>~MN164oFe@CV5y?{VtKYWoWSG`4&zYN1 z)xL%_0-o8g$}#z-R4nud`4rvgDU0Z2dN8xB=wE8<z#?;jW~ZqYY9~QNle~Lu%HHa5 zW2^1>>yl_7)42%%_M$_<fIU0gmhyiRQ1ip8b`#$S>1l~1)>F!pBO^2*w|qmq<HYY- z#*}~6zK8oW*1XPc4aI^_t^b|sbO37iF+;m2AE>=j*fI2*f4%~Ckp+FRx8L>Q&wycO zxYG?EoI~}Ad5{goQ3lJ1cqj5+5jTAZ!J~zqzq~97mMU1!B=A0zK`Dq%2U1Ef0*1`h zVty#)dra=@ow<#nUb00Z8&M?+RB`&3Q<C(ST{aBV-x}5ka1+<#jQDZ0={oWbl`iPI zwx$87D;6i&@hfC@7zv8NOp_1<lA!SA2jFG<I5z^KgS$0%!n0UMu*-%1Kg)8T2a6$q zDFc_v^b)#(CH6&vf->eOtP}gIeTI&CIL;qlr5-)KZv6eISI6e@9-X$>bt7{BtP4m? zZVw78n=#vzf)k4u98y4VB?q(q1Y$I@W7FwdmB!|*&65b4!9IMt-z5t-v|f^jhWcke zOE__Bp*%6mx@F}?J9-7K;CmYe#+#7I>U7sYy)`2xYl+7!3}M^y3Q0F9&+)4po%)qv zRqe*KOipZ!mzca94K=@Qr#JPW16P8<FyM>o@bfAD(CIOsST<`Jety9CwV}zgEKv@n zTW8F$I1!OJ0r>>e%NRQG=(!3~S?`(UePg-H+fM3}oKb}>ukv855j0>(ReEJ|O}^(^ zh#Y6^(j)m=AI4b24MZW5M)X}3Zt6w}-_t7<^+C15fTTOnX}ts*1Gw@U@iVuT3iL8z zznETnZtCs^+kdXJjI3N3ekfEpu}iM9Z33O(W5jy*KwX~-<wo?B1AMF)Ml<Y(B_T4J z)Tw!msFdt44bKO`v?G@;t0h2A6FVnw)C6CJ9_ZSbk6xJ9{nd}l%J`4adT4r{6>Mc{ z*>T*p-cWc4l5^`O9^D{7X94kqu>+TV%cTt_!)Z;S7@L~c<`*f=R0UAuDV82{-imfu z&W;9l)mC<B-tkgVHi`37?&2V?kEf`~S?Au96NOttiJ;)3O>1m#GgEqYS@gzcO{54F zmKw<n)5>&)B9Al?Vf({a@Hh-=WvvB5854{?g_BY7p);n6IgBTgFb#-(#Cf#<R7i0C zwr&+?j3cqYpZ?xsxYsooPxNw3|B!!&<O2Je=7!fM=icLQjxUem+qBl@mrmaX(9&K^ zjM}v)zKigT`Q!x_NlhpeeJZxXK9dq|l-(nzM&Lf22!|}l#KwlewDgSpTZkUOaAVFl zLOPYw^gEQ|<M`cMpc!@z*luc(P_Klzcvx!4Exh3O5*Y$}p*?3VUWrX4z(Ni)$U)b_ zyenn1z*01azwv=M_u7t*cl15>^8IQGEkUg55gb#$#ToMbA3W12U`9<_{13U!0xJGE zZv4sjtf5)Em#3o#rlF&Wm~+g0g^VC}Ge(TD+5lcf<&;jiSFGjP6R3VXk{7Y*^I~Lo z(0gq-?~cGLx1T#*_aNP4*Kb7~+`0Y2sw`S6SY4tJ++QSs+D!#r#Qx)18j-iUAS79g zE-n1Ep#?!Fab$>(aO<;g!1+~|l1?+5ZW|&g0UY1p!U{&pxqCO`dX|XynFM?etYAGK zDvfSCRbo>Z=jpK5Z<F=|(6zB8=zg7qzHCf+(CmqF!o`O<8<0@@I5?aDBfVJ~WDMb^ zNA%Q9)UF0*)&jl)t6Dl-R54ng*xRZI=0dND`ZS;OJ~i^^VI$_fYfwr8A8a4^w4ed{ zf4LBABe<;|tYJBEkxp{^N4k65^$=<>Y-J&s3B1$PrFDKEd&VZk<<5N~GCXmV0cKU8 zfmwp(+xM+K_<#j3ZXtQ%>u6nsgTP@L4^u$F25vMZ)Ja?y2YegLgLCCKhP=r8{6MRj zUCKRo=yDmgzFd0qS#M^AD<+c&=_k*}euDV+Sv0Q<iihQ7Cvkz5m|Yc3BrXohb>pPr zF9LL{{ph|@tN>Jck>VoH1LNv;pli)krjOKvd}eh{M2_jo#M|L5j?iW6hamoP$z0EA zXgB@Zz+z_>JytG2^f3$9VO!pcH+uqO6-Pq|BFqM5(!G5RG{$uSECb{1p5M-Rwl=g7 zjBk6m5F_)clJ5xGP$I8pXhWKjH7*y6pO^IT>{@_)3BwZwg8oMEaj-v{+0$RWZ>mQD zLAaNn1|JLAQ6)S25NbEmhKDvxbvCx1;=gjF-l*3WfuFk7S5K8G$6uT*DGLzAc;e7( zGm8hHU>cdhxm}R5D1{ZJf#pF9+Njj^y#eE$!{f;#C`}brMOskt(9m_DX$unfd(n0w z4@k<qQvgDS`SZiIFs9VlXS*qsYlX8oESEp7K2P%m+@{|Luo(=}tUO@W6x%^o74y*b z6yeCX+xOLMFi(m>J_KD?5C&=x3VL8RA=8}$0PTwH@S%hW0}MzCjiiV>-mj#Iw1E;E z@RBm%Mj!}@awSsR1H<tFpK{&^eG4!{bdatA&g^Va+$=-ier5bk0HDMgji-QqeN$(V z{)?@BhG$G-5M&SA7wsp;ylZtjALmUSSfJkn^ge(Tvf!^6s>(;Zy}zxaMw`UJ^<#Zd z&57vtWd#kE1gPJd)o72o=!$?5zDM1A!uyA4Dy~w8DZuKt=%O?(3JJJVBgI245P7S_ zGz*-WegC4LC^Z81S<ay4l)xV;UnsZ){N@1)=u*d>3iDSrg*V45^|*LLNlq?qYp(sx zmzwfAp)Gl3`L^JM$d>XYU~`Mx!$O_oKB1W2Z)#}Kl65mjx)LOetOHSa2E9$O$^AVL z{Atvcg%wtCQvz3h9T9!ULoFaM_nb0Ev<KP5O{uhJP9U>#_wYiOn!Z_kjM$GS%pmfU z({-<sd(7o3BRiV!_r^?A=kVy<h{t+5>?Oe}!e6VRLoeq~E-oF?4EKaXmGrR`MTzTH z;fI>!<wO=-kOWs^fXY_njje;@e|p=P7>y<E{eEQJQ-i<<SI07dD51GkoeFa!UBs<x z%O4Yo(&oKhb(ahY`Rb!>iqh$nsnHLsoC2vmZB;HA05V54vmLLuehqVJUNyZJh)+dA ziq;S0EgyK4^69b;MZM3XYQ8Af`gzw6{Uj1K0VUgNG6!ch*G6#{!IIA(!<i$l<j^K4 zB}>O1Q^=Yyf!B4+%NEO=wlObd$T6E;ebD}>c#<9QynD~fTmC}DWKg#~w^rV>l0M#N zdg@6_&0!>m^)4O?Bi>*SLe}K^IvIVr&|?2CuV5EAi%5O4xY}x9x<i27b(*>z$qWlE z$y+IkldJ<(9xx%(QACbd3C5ptXZhOi@Bn|jBLK(yyi~Fw@ZFSIwJG9gUyfNuKkbTC zbr<4qV4mH|lP7mLI`mq^E^lYRzP$IZ5vPOenWXkfsKIQpjizb!fFqR(B?@51M4pm% z@v9|NiGSb4nf5<5DSiwtu8306T_`fok;Fk#2I29A-e4YL(Z=k`OCPN!BdFo`aLKo9 zy><-+-v`4`BltK>X(DfGJ{QQ?e2zypB9o9zA+{`UzBXO!<ol8ERpUi8z&o>6xMozU zQ@vw&23>y3XxeJTZOA-g!^;{b7)MwrIFln7GrO-2B$zGM*mTzHj|v8}{HP!CW4J@Z z!}sCKk5<=@Ke2`pdT!1rG&e&vh|nL%>>i?4(BnS8{R=V%$)3nOUnb>aD?S@b+JmVG z;F}E=To^U=#XA=?WK0ol|0_2G`LGBKY1goNx7c`O$21CofVX&iAOLsoL3!w)&o2t< zyrCyD9*;6Tg{!4w@|l>I1UrGuGG{t23O9gXUivvGM{jjW7WfncLy9@TbV+_A=^A+! zcia_3e7+no{HP{s37PR&eh&lCkZ%BF7V?aG1)(&EsP6a{%MMGB6;7UCIS0T(mud=x zM}>6~31F3|kZus6+Mbd6z_4B`6|%xw`r{CxY%jlA)S5s`4l#JW3z_g1d1-*wQ4o*> zY&*a~HTF@>*5-KB8chWNJ%jDL%$2o<zmv;*uzp6y61&Q-fM+s~#95^$H{m8*(%qB5 zMKAU48TKL+3|Cqe8t~r==>}!u2vz}Vr%m-BkO+FDyOjHgE!lrlsf&9S)<ZyvzRpc5 zK@MA8w(80i1+{=mz~tJyz8s9b&?x4#N2e_XnGEGWvT{hk9&h+}N`}`2j$PA^3oQ)G zeF(@$kBMXIJx+|IN6|i9MB^a8{Wz9j$=#VDa-S&NU863){bwCN+tX(hPjUe`Pid@) zUbm1&0`-;c7<?7}8=Ryjn%Z^w#$|F;%VvR09+F}hH(K^#jPr2Y1uk|DK;_B=O3^IA z_m%6?HY{@g)}=S?CZk(P2W%|zJQj4S%Do)oAXTDw<(x^7bU!uLHi0yb*4t1JT)ptD zL_GwuPMbzOdFoJx67l`+Y87}9S_NC)FBhgjC!5JExWmwvtt9;&4(kj=y3waeemtui Wk}Rr*+m~kCE(?`TOFaCHqEt&}ni&}Y diff --git a/shell.nix b/shell.nix index a04e251b514b..5023a3b0f71a 100644 --- a/shell.nix +++ b/shell.nix @@ -1,7 +1,7 @@ { avr ? true, arm ? true, teensy ? true }: let # We specify sources via Niv: use "niv update nixpkgs" to update nixpkgs, for example. - sources = import ./nix/sources.nix { }; + sources = import ./util/nix/sources.nix { }; pkgs = import sources.nixpkgs { }; poetry2nix = pkgs.callPackage (import sources.poetry2nix) { }; @@ -11,7 +11,14 @@ let # --lock" etc. in the nix folder to adjust the contents of those # files if the requirements*.txt files change pythonEnv = poetry2nix.mkPoetryEnv { - projectDir = ./nix; + projectDir = ./util/nix; + overrides = poetry2nix.overrides.withDefaults (self: super: { + qmk = super.qmk.overridePythonAttrs(old: { + # Allow QMK CLI to run "qmk" as a subprocess (the wrapper changes + # $PATH and breaks these invocations). + dontWrapPythonPrograms = true; + }); + }); }; in diff --git a/show_options.mk b/show_options.mk deleted file mode 100644 index cd04f6a0d7ee..000000000000 --- a/show_options.mk +++ /dev/null @@ -1,131 +0,0 @@ -BUILD_OPTION_NAMES = \ - BOOTMAGIC_ENABLE \ - MOUSEKEY_ENABLE \ - EXTRAKEY_ENABLE \ - CONSOLE_ENABLE \ - COMMAND_ENABLE \ - NKRO_ENABLE \ - TERMINAL_ENABLE \ - CUSTOM_MATRIX \ - DEBOUNCE_TYPE \ - SPLIT_KEYBOARD \ - DYNAMIC_KEYMAP_ENABLE \ - USB_HID_ENABLE \ - VIA_ENABLE - -HARDWARE_OPTION_NAMES = \ - SLEEP_LED_ENABLE \ - BACKLIGHT_ENABLE \ - BACKLIGHT_CUSTOM_DRIVER \ - RGBLIGHT_ENABLE \ - RGBLIGHT_CUSTOM_DRIVER \ - RGB_MATRIX_ENABLE \ - RGB_MATRIX_DRIVER \ - SERIAL_LINK_ENABLE \ - CIE1931_CURVE \ - MIDI_ENABLE \ - BLUETOOTH_ENABLE \ - AUDIO_ENABLE \ - HD44780_ENABLE \ - ENCODER_ENABLE \ - LCD_ENABLE \ - LED_TABLES \ - POINTING_DEVICE_ENABLE \ - VISUALIZER_ENABLE \ - DIP_SWITCH_ENABLE - -OTHER_OPTION_NAMES = \ - UNICODE_ENABLE \ - UCIS_ENABLE \ - UNICODEMAP_ENABLE \ - UNICODE_COMMON \ - API_SYSEX_ENABLE \ - AUTO_SHIFT_ENABLE \ - AUTO_SHIFT_MODIFIERS \ - COMBO_ENABLE \ - KEY_LOCK_ENABLE \ - LEADER_ENABLE \ - PRINTING_ENABLE \ - STENO_ENABLE \ - TAP_DANCE_ENABLE \ - VIRTSER_ENABLE \ - OLED_DRIVER_ENABLE \ - OLED_ENABLE \ - LED_BACK_ENABLE \ - LED_UNDERGLOW_ENABLE \ - LED_ANIMATIONS \ - IOS_DEVICE_ENABLE \ - HELIX ZINC \ - ADAFRUIT_BLE_ENABLE \ - AUTOLOG_ENABLE \ - DEBUG_ENABLE \ - ENCODER_ENABLE_CUSTOM \ - GERMAN_ENABLE \ - HAPTIC_ENABLE \ - HHKB_RN42_ENABLE \ - ISSI_ENABLE \ - KEYBOARD_LOCK_ENABLE \ - KEYLOGGER_ENABLE \ - LCD_BACKLIGHT_ENABLE \ - MACROS_ENABLED \ - ONEHAND_ENABLE \ - PS2_MOUSE_ENABLE \ - RAW_ENABLE \ - SWAP_HANDS_ENABLE \ - USB_6KRO_ENABLE \ - WATCHDOG_ENABLE \ - XT_ENABLE \ - ERGOINU \ - NO_USB_STARTUP_CHECK \ - DISABLE_PROMICRO_LEDs \ - MITOSIS_DATAGROK_BOTTOMSPACE \ - MITOSIS_DATAGROK_SLOWUART \ - RGB_MATRIX_KEYPRESSES \ - LED_MIRRORED \ - RGBLIGHT_FULL_POWER \ - LTO_ENABLE - -define NAME_ECHO - @echo " $1 = $($1) # $(origin $1)" - -endef - -.PHONY: show_build_options0 show_build_options -show_build_options0: - @echo " KEYBOARD = $(KEYBOARD)" - @echo " KEYMAP = $(KEYMAP)" - @echo " MCU = $(MCU)" - @echo " MCU_SERIES = $(MCU_SERIES)" - @echo " PLATFORM = $(PLATFORM)" - @echo " FIRMWARE_FORMAT = $(FIRMWARE_FORMAT)" - @echo - @echo "Build Options:" - $(foreach A_OPTION_NAME,$(sort $(BUILD_OPTION_NAMES)),\ - $(call NAME_ECHO,$(A_OPTION_NAME))) - -show_build_options: show_build_options0 - @echo - @echo "If you want to know more, please try 'show_all_features' or 'show_full_features'" - @echo - -.PHONY: show_all_features -show_all_features: show_build_options0 - @echo - @echo "Hardware Options:" - $(foreach A_OPTION_NAME,$(sort $(HARDWARE_OPTION_NAMES)),\ - $(if $($(A_OPTION_NAME)),$(call NAME_ECHO,$(A_OPTION_NAME)))) - @echo - @echo "Other Options:" - $(foreach A_OPTION_NAME,$(sort $(OTHER_OPTION_NAMES)),\ - $(if $($(A_OPTION_NAME)),$(call NAME_ECHO,$(A_OPTION_NAME)))) - -.PHONY: show_full_features -show_full_features: show_build_options0 - @echo - @echo "Hardware Options:" - $(foreach A_OPTION_NAME,$(sort $(HARDWARE_OPTION_NAMES)),\ - $(call NAME_ECHO,$(A_OPTION_NAME))) - @echo - @echo "Other Options:" - $(foreach A_OPTION_NAME,$(sort $(OTHER_OPTION_NAMES)),\ - $(call NAME_ECHO,$(A_OPTION_NAME))) diff --git a/testlist.mk b/testlist.mk index 0d7609b9f071..904485c15ced 100644 --- a/testlist.mk +++ b/testlist.mk @@ -1,8 +1,9 @@ -TEST_LIST = $(notdir $(patsubst %/rules.mk,%,$(wildcard $(ROOT_DIR)/tests/*/rules.mk))) -FULL_TESTS := $(TEST_LIST) +TEST_LIST = $(sort $(patsubst %/test.mk,%, $(shell find $(ROOT_DIR)tests -type f -name test.mk))) +FULL_TESTS := $(notdir $(TEST_LIST)) -include $(ROOT_DIR)/quantum/sequencer/tests/testlist.mk -include $(ROOT_DIR)/quantum/serial_link/tests/testlist.mk +include $(QUANTUM_PATH)/debounce/tests/testlist.mk +include $(QUANTUM_PATH)/sequencer/tests/testlist.mk +include $(PLATFORM_PATH)/test/testlist.mk define VALIDATE_TEST_LIST ifneq ($1,) diff --git a/tests/auto_shift/config.h b/tests/auto_shift/config.h new file mode 100644 index 000000000000..4f343b452995 --- /dev/null +++ b/tests/auto_shift/config.h @@ -0,0 +1,19 @@ +/* Copyright 2021 Stefan Kerkmann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should 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 "test_common.h" \ No newline at end of file diff --git a/tests/auto_shift/test.mk b/tests/auto_shift/test.mk new file mode 100644 index 000000000000..4259c606e472 --- /dev/null +++ b/tests/auto_shift/test.mk @@ -0,0 +1,20 @@ +# Copyright 2021 Stefan Kerkmann +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# -------------------------------------------------------------------------------- +# Keep this file, even if it is empty, as a marker that this folder contains tests +# -------------------------------------------------------------------------------- + +AUTO_SHIFT_ENABLE = yes \ No newline at end of file diff --git a/tests/auto_shift/test_auto_shift.cpp b/tests/auto_shift/test_auto_shift.cpp new file mode 100644 index 000000000000..9c5ed9a8326a --- /dev/null +++ b/tests/auto_shift/test_auto_shift.cpp @@ -0,0 +1,73 @@ +/* Copyright 2021 Stefan Kerkmann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "keyboard_report_util.hpp" +#include "keycode.h" +#include "test_common.hpp" +#include "action_tapping.h" +#include "test_fixture.hpp" +#include "test_keymap_key.hpp" + +using testing::_; +using testing::InSequence; + +class AutoShift : public TestFixture {}; + +TEST_F(AutoShift, key_release_before_timeout) { + TestDriver driver; + InSequence s; + auto regular_key = KeymapKey(0, 2, 0, KC_A); + + set_keymap({regular_key}); + + /* Press regular key */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + regular_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release regular key */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_A))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + regular_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); +} + +TEST_F(AutoShift, key_release_after_timeout) { + TestDriver driver; + InSequence s; + auto regular_key = KeymapKey(0, 2, 0, KC_A); + + set_keymap({regular_key}); + + /* Press regular key */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + regular_key.press(); + idle_for(AUTO_SHIFT_TIMEOUT); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release regular key */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT, KC_A))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + regular_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); +} \ No newline at end of file diff --git a/tests/basic/config.h b/tests/basic/config.h index 99bd62d991c4..85fa9d691d08 100644 --- a/tests/basic/config.h +++ b/tests/basic/config.h @@ -16,5 +16,4 @@ #pragma once -#define MATRIX_ROWS 4 -#define MATRIX_COLS 10 +#include "test_common.h" \ No newline at end of file diff --git a/tests/basic/keymap.c b/tests/basic/keymap.c deleted file mode 100644 index 2b5747abb7cb..000000000000 --- a/tests/basic/keymap.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 "quantum.h" - -// Don't rearrange keys as existing tests might rely on the order -// Col2, Row 0 has to be KC_NO, because tests rely on it - -#define COMBO1 RSFT(LCTL(KC_O)) - -const uint16_t PROGMEM - keymaps[][MATRIX_ROWS][MATRIX_COLS] = - { - [0] = - { - // 0 1 2 3 4 5 6 7 8 9 - {KC_A, KC_B, KC_NO, KC_LSFT, KC_RSFT, KC_LCTL, COMBO1, SFT_T(KC_P), M(0), KC_NO}, - {KC_EQL, KC_PLUS, 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_C, KC_D, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO}, - }, -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { - if (record->event.pressed) { - switch (id) { - case 0: - return MACRO(D(LSFT), T(H), U(LSFT), T(E), T(L), T(L), T(O), T(SPACE), W(100), D(LSFT), T(W), U(LSFT), I(10), T(O), T(R), T(L), T(D), D(LSFT), T(1), U(LSFT), END); - } - } - return MACRO_NONE; -}; diff --git a/tests/basic/rules.mk b/tests/basic/rules.mk deleted file mode 100644 index 9fb5d4361096..000000000000 --- a/tests/basic/rules.mk +++ /dev/null @@ -1,16 +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/>. - -CUSTOM_MATRIX=yes diff --git a/tests/basic/test.mk b/tests/basic/test.mk new file mode 100644 index 000000000000..29690d1adf7b --- /dev/null +++ b/tests/basic/test.mk @@ -0,0 +1,18 @@ +# 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/>. + +# -------------------------------------------------------------------------------- +# Keep this file, even if it is empty, as a marker that this folder contains tests +# -------------------------------------------------------------------------------- \ No newline at end of file diff --git a/tests/basic/test_action_layer.cpp b/tests/basic/test_action_layer.cpp index d00a0859b9c6..1b12d13642fe 100644 --- a/tests/basic/test_action_layer.cpp +++ b/tests/basic/test_action_layer.cpp @@ -14,39 +14,54 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ +#include "gtest/gtest.h" +#include "keyboard_report_util.hpp" #include "test_common.hpp" using testing::_; -using testing::Return; +using testing::InSequence; class ActionLayer : public TestFixture {}; -// TEST_F(ActionLayer, LayerStateDBG) { -// layer_state_set(0); -// } - -// TEST_F(ActionLayer, LayerStateSet) { -// layer_state_set(0); -// EXPECT_EQ(layer_state, 0); -// layer_state_set(0b001100); -// EXPECT_EQ(layer_state, 0b001100); -// } - -// TEST_F(ActionLayer, LayerStateIs) { -// layer_state_set(0); -// EXPECT_EQ(layer_state_is(0), true); -// EXPECT_EQ(layer_state_is(1), true); -// layer_state_set(1); -// EXPECT_EQ(layer_state_is(0), true); -// EXPECT_EQ(layer_state_is(1), true); -// layer_state_set(2); -// EXPECT_EQ(layer_state_is(0), false); -// EXPECT_EQ(layer_state_is(1), false); -// EXPECT_EQ(layer_state_is(2), true); -// } +TEST_F(ActionLayer, LayerStateDBG) { + TestDriver driver; + + layer_state_set(0); + + testing::Mock::VerifyAndClearExpectations(&driver); +} + +TEST_F(ActionLayer, LayerStateSet) { + TestDriver driver; + + layer_state_set(0); + EXPECT_EQ(layer_state, 0); + layer_state_set(0b001100); + EXPECT_EQ(layer_state, 0b001100); + + testing::Mock::VerifyAndClearExpectations(&driver); +} + +TEST_F(ActionLayer, LayerStateIs) { + TestDriver driver; + + layer_state_set(0); + EXPECT_EQ(layer_state_is(0), true); + EXPECT_EQ(layer_state_is(1), false); + layer_state_set(1); + EXPECT_EQ(layer_state_is(0), true); + EXPECT_EQ(layer_state_is(1), false); + layer_state_set(2); + EXPECT_EQ(layer_state_is(0), false); + EXPECT_EQ(layer_state_is(1), true); + EXPECT_EQ(layer_state_is(2), false); + + testing::Mock::VerifyAndClearExpectations(&driver); +} TEST_F(ActionLayer, LayerStateCmp) { - uint32_t prev_layer; + TestDriver driver; + uint32_t prev_layer; prev_layer = 0; EXPECT_EQ(layer_state_cmp(prev_layer, 0), true); @@ -60,33 +75,339 @@ TEST_F(ActionLayer, LayerStateCmp) { EXPECT_EQ(layer_state_cmp(prev_layer, 0), false); EXPECT_EQ(layer_state_cmp(prev_layer, 1), true); EXPECT_EQ(layer_state_cmp(prev_layer, 2), false); + + testing::Mock::VerifyAndClearExpectations(&driver); +} + +TEST_F(ActionLayer, LayerClear) { + TestDriver driver; + + layer_clear(); + EXPECT_EQ(layer_state, 0); + + testing::Mock::VerifyAndClearExpectations(&driver); +} + +TEST_F(ActionLayer, LayerMove) { + TestDriver driver; + + layer_move(0); + EXPECT_EQ(layer_state, 1); + layer_move(3); + EXPECT_EQ(layer_state, 0b1000); + + testing::Mock::VerifyAndClearExpectations(&driver); +} + +TEST_F(ActionLayer, LayerOn) { + TestDriver driver; + + layer_clear(); + layer_on(1); + layer_on(3); + layer_on(3); + EXPECT_EQ(layer_state, 0b1010); + + testing::Mock::VerifyAndClearExpectations(&driver); +} + +TEST_F(ActionLayer, LayerOff) { + TestDriver driver; + + layer_clear(); + layer_on(1); + layer_on(3); + layer_off(3); + layer_off(2); + EXPECT_EQ(layer_state, 0b0010); + + testing::Mock::VerifyAndClearExpectations(&driver); +} + +TEST_F(ActionLayer, MomentaryLayerDoesNothing) { + TestDriver driver; + KeymapKey layer_key = KeymapKey{0, 0, 0, MO(1)}; + + set_keymap({layer_key}); + + /* Press and release MO, nothing should happen. */ + /* TODO: QMK currently sends an empty report even if nothing needs to be reported to the host! */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(1); + layer_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* TODO: QMK currently sends an empty report even if nothing needs to be reported to the host! */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(1); + layer_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); +} + +TEST_F(ActionLayer, MomentaryLayerWithKeypress) { + TestDriver driver; + KeymapKey layer_key = KeymapKey{0, 0, 0, MO(1)}; + + /* These keys must have the same position in the matrix, only the layer is different. */ + KeymapKey regular_key = KeymapKey{0, 1, 0, KC_A}; + set_keymap({layer_key, regular_key, KeymapKey{1, 1, 0, KC_B}}); + + /* Press MO. */ + /* TODO: QMK currently sends an empty report even if nothing needs to be reported to the host! */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(1); + layer_key.press(); + run_one_scan_loop(); + EXPECT_TRUE(layer_state_is(1)); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Press key on layer 1 */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_B))).Times(1); + regular_key.press(); + run_one_scan_loop(); + EXPECT_TRUE(layer_state_is(1)); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release key on layer 1 */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(1); + regular_key.release(); + run_one_scan_loop(); + EXPECT_TRUE(layer_state_is(1)); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release MO */ + /* TODO: QMK currently sends an empty report even if nothing needs to be reported to the host! */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(1); + layer_key.release(); + run_one_scan_loop(); + EXPECT_TRUE(layer_state_is(0)); + testing::Mock::VerifyAndClearExpectations(&driver); +} + +TEST_F(ActionLayer, ToggleLayerDoesNothing) { + GTEST_SKIP() << "TODO: Toggle layer does not activate the expected layer on key press but on release."; + + TestDriver driver; + KeymapKey layer_key = KeymapKey{0, 0, 0, TG(1)}; + + set_keymap({layer_key}); + + /* Press TG. Layer state should not change as it's applied on release. */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + layer_key.press(); + run_one_scan_loop(); + EXPECT_TRUE(layer_state_is(1)); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release TG. */ + /* TODO: QMK currently sends an empty report even if nothing needs to be reported to the host! */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(1); + layer_key.release(); + run_one_scan_loop(); + EXPECT_TRUE(layer_state_is(1)); + testing::Mock::VerifyAndClearExpectations(&driver); +} + +TEST_F(ActionLayer, ToggleLayerUpAndDown) { + GTEST_SKIP() << "TODO: Toggle layer does not activate the expected layer on key press but on release."; + + TestDriver driver; + KeymapKey toggle_layer_1_on_layer_0 = KeymapKey{0, 0, 0, TG(1)}; + KeymapKey toggle_layer_0_on_layer_1 = KeymapKey{1, 1, 0, TG(0)}; + + set_keymap({toggle_layer_1_on_layer_0, toggle_layer_0_on_layer_1}); + + /* Toggle Layer 1. */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + toggle_layer_1_on_layer_0.press(); + run_one_scan_loop(); + EXPECT_TRUE(layer_state_is(1)); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* TODO: QMK currently sends an empty report even if nothing needs to be reported to the host! */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(1); + toggle_layer_1_on_layer_0.release(); + run_one_scan_loop(); + EXPECT_TRUE(layer_state_is(1)); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Toggle Layer 0. */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + toggle_layer_0_on_layer_1.press(); + run_one_scan_loop(); + EXPECT_TRUE(layer_state_is(0)); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* TODO: QMK currently sends an empty report even if nothing needs to be reported to the host! */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(1); + toggle_layer_0_on_layer_1.release(); + run_one_scan_loop(); + EXPECT_TRUE(layer_state_is(0)); + testing::Mock::VerifyAndClearExpectations(&driver); +} + +TEST_F(ActionLayer, LayerTapToggleDoesNothing) { + GTEST_SKIP() << "TODO: Tap toggle layer does not activate the expected layer on key press."; + + TestDriver driver; + KeymapKey layer_key = KeymapKey{0, 0, 0, TT(1)}; + + set_keymap({layer_key}); + + /* Press and release TT. */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(0); + layer_key.press(); + run_one_scan_loop(); + EXPECT_TRUE(layer_state_is(1)); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* TODO: QMK currently sends an empty report even if nothing needs to be reported to the host! */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(2); + layer_key.release(); + run_one_scan_loop(); + EXPECT_TRUE(layer_state_is(0)); + testing::Mock::VerifyAndClearExpectations(&driver); +} + +TEST_F(ActionLayer, LayerTapToggleWithKeypress) { + GTEST_SKIP() << "TODO: Tap toggle layer does not activate the expected layer on key press."; + + TestDriver driver; + KeymapKey layer_key = KeymapKey{0, 0, 0, TT(1)}; + + /* These keys must have the same position in the matrix, only the layer is different. */ + KeymapKey regular_key = KeymapKey{0, 1, 0, KC_A}; + set_keymap({layer_key, regular_key, KeymapKey{1, 1, 0, KC_B}}); + + /* Press TT. */ + /* TODO: QMK currently sends an empty report even if nothing needs to be reported to the host! */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(0); + layer_key.press(); + run_one_scan_loop(); + EXPECT_TRUE(layer_state_is(1)); + testing::Mock::VerifyAndClearExpectations(&driver); + + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_B))).Times(1); + regular_key.press(); + run_one_scan_loop(); + EXPECT_TRUE(layer_state_is(1)); + testing::Mock::VerifyAndClearExpectations(&driver); + + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(1); + regular_key.release(); + run_one_scan_loop(); + EXPECT_TRUE(layer_state_is(1)); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* TODO: QMK currently sends an empty report even if nothing needs to be reported to the host! */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(1); + layer_key.release(); + run_one_scan_loop(); + EXPECT_TRUE(layer_state_is(0)); + testing::Mock::VerifyAndClearExpectations(&driver); +} + +TEST_F(ActionLayer, LayerTapToggleWithToggleWithKeypress) { + GTEST_SKIP() << "TODO: Tap toggle layer does not activate the expected layer on key press."; + + TestDriver driver; + KeymapKey layer_key = KeymapKey{0, 0, 0, TT(1)}; + + /* These keys must have the same position in the matrix, only the layer is different. */ + KeymapKey regular_key = KeymapKey{0, 1, 0, KC_A}; + set_keymap({layer_key, regular_key, KeymapKey{1, 1, 0, KC_B}}); + + /* Tap TT five times . */ + /* TODO: QMK currently sends an empty report even if nothing needs to be reported to the host! */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(9); + + layer_key.press(); + run_one_scan_loop(); + EXPECT_TRUE(layer_state_is(1)); + layer_key.release(); + run_one_scan_loop(); + EXPECT_TRUE(layer_state_is(0)); + + layer_key.press(); + run_one_scan_loop(); + EXPECT_TRUE(layer_state_is(1)); + layer_key.release(); + run_one_scan_loop(); + EXPECT_TRUE(layer_state_is(0)); + + layer_key.press(); + run_one_scan_loop(); + EXPECT_TRUE(layer_state_is(1)); + layer_key.release(); + run_one_scan_loop(); + EXPECT_TRUE(layer_state_is(0)); + + layer_key.press(); + run_one_scan_loop(); + EXPECT_TRUE(layer_state_is(1)); + layer_key.release(); + run_one_scan_loop(); + EXPECT_TRUE(layer_state_is(0)); + + layer_key.press(); + run_one_scan_loop(); + EXPECT_TRUE(layer_state_is(1)); + layer_key.release(); + run_one_scan_loop(); + EXPECT_TRUE(layer_state_is(1)); + + testing::Mock::VerifyAndClearExpectations(&driver); + + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_B))).Times(1); + regular_key.press(); + run_one_scan_loop(); + EXPECT_TRUE(layer_state_is(1)); + testing::Mock::VerifyAndClearExpectations(&driver); + + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(1); + regular_key.release(); + run_one_scan_loop(); + EXPECT_TRUE(layer_state_is(1)); + testing::Mock::VerifyAndClearExpectations(&driver); } -// TEST_F(ActionLayer, LayerClear) { -// layer_clear(); -// EXPECT_EQ(layer_state, 0); -// } - -// TEST_F(ActionLayer, LayerMove) { -// layer_move(0); -// EXPECT_EQ(layer_state, 1); -// layer_move(3); -// EXPECT_EQ(layer_state, 0b1000); -// } - -// TEST_F(ActionLayer, LayerOn) { -// layer_clear(); -// layer_on(1); -// layer_on(3); -// layer_on(3); -// EXPECT_EQ(layer_state, 0b1010); -// } - -// TEST_F(ActionLayer, LayerOff) { -// layer_clear(); -// layer_on(1); -// layer_on(3); -// layer_off(3); -// layer_off(2); -// EXPECT_EQ(layer_state, 0b1000); -// } +TEST_F(ActionLayer, LayerTapReleasedBeforeKeypressReleaseWithModifiers) { + GTEST_SKIP() << "TODO: Modifiers are erroneously discarded on layer changes, although a key that introduced the modifier is still held."; + TestDriver driver; + InSequence s; + + KeymapKey layer_0_key_0 = KeymapKey{0, 0, 0, LT(1, KC_T)}; + KeymapKey layer_1_key_1 = KeymapKey{1, 1, 0, RALT(KC_9)}; + + set_keymap({layer_0_key_0, layer_1_key_1}); + + /* Press layer tap and wait for tapping term to switch to layer 1 */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(0); + layer_0_key_0.press(); + idle_for(TAPPING_TERM); + EXPECT_TRUE(layer_state_is(0)); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Press key with layer 1 mapping, result basically expected + * altough more reports are send then necessary. */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_RALT))).Times(1); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_RALT, KC_9))).Times(1); + layer_1_key_1.press(); + run_one_scan_loop(); + EXPECT_TRUE(layer_state_is(1)); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release layer tap key, no report is send because key is still held. */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + layer_0_key_0.release(); + run_one_scan_loop(); + EXPECT_TRUE(layer_state_is(0)); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Unregister keycode and modifier. */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_RALT))).Times(1); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(1); + layer_1_key_1.release(); + run_one_scan_loop(); + EXPECT_TRUE(layer_state_is(0)); + testing::Mock::VerifyAndClearExpectations(&driver); +} diff --git a/tests/basic/test_keypress.cpp b/tests/basic/test_keypress.cpp index ecd6e98e442b..1c175c9d56a7 100644 --- a/tests/basic/test_keypress.cpp +++ b/tests/basic/test_keypress.cpp @@ -14,11 +14,11 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ +#include "keycode.h" #include "test_common.hpp" using testing::_; using testing::InSequence; -using testing::Return; class KeyPress : public TestFixture {}; @@ -30,95 +30,156 @@ TEST_F(KeyPress, SendKeyboardIsNotCalledWhenNoKeyIsPressed) { TEST_F(KeyPress, CorrectKeyIsReportedWhenPressed) { TestDriver driver; - press_key(0, 0); - EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_A))); + auto key = KeymapKey(0, 0, 0, KC_A); + + set_keymap({key}); + + key.press(); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(key.report_code))); keyboard_task(); - release_key(0, 0); + + key.release(); EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); keyboard_task(); } +TEST_F(KeyPress, ANonMappedKeyDoesNothing) { + TestDriver driver; + auto key = KeymapKey(0, 0, 0, KC_NO); + + set_keymap({key}); + + key.press(); + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + keyboard_task(); + keyboard_task(); +} + TEST_F(KeyPress, CorrectKeysAreReportedWhenTwoKeysArePressed) { TestDriver driver; - press_key(1, 0); - press_key(0, 3); + auto key_b = KeymapKey(0, 0, 0, KC_B); + auto key_c = KeymapKey(0, 1, 1, KC_C); + + set_keymap({key_b, key_c}); + + key_b.press(); + key_c.press(); // Note that QMK only processes one key at a time // See issue #1476 for more information - EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_B))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(key_b.report_code))); keyboard_task(); - EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_B, KC_C))); + + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(key_b.report_code, key_c.report_code))); keyboard_task(); - release_key(1, 0); - release_key(0, 3); + + key_b.release(); + key_c.release(); // Note that the first key released is the first one in the matrix order - EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_C))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(key_c.report_code))); keyboard_task(); - EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); - keyboard_task(); -} -TEST_F(KeyPress, ANonMappedKeyDoesNothing) { - TestDriver driver; - press_key(2, 0); - EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); - keyboard_task(); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); keyboard_task(); } TEST_F(KeyPress, LeftShiftIsReportedCorrectly) { TestDriver driver; - press_key(3, 0); - press_key(0, 0); + auto key_a = KeymapKey(0, 0, 0, KC_A); + auto key_lsft = KeymapKey(0, 3, 0, KC_LSFT); + + set_keymap({key_a, key_lsft}); + + key_lsft.press(); + key_a.press(); + // Unfortunately modifiers are also processed in the wrong order // See issue #1476 for more information - EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_A))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(key_a.report_code))); keyboard_task(); - EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_A, KC_LSFT))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(key_a.report_code, key_lsft.report_code))); keyboard_task(); - release_key(0, 0); - EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))); + + key_a.release(); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(key_lsft.report_code))); keyboard_task(); - release_key(3, 0); + + key_lsft.release(); EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); keyboard_task(); } TEST_F(KeyPress, PressLeftShiftAndControl) { TestDriver driver; - press_key(3, 0); - press_key(5, 0); + auto key_lsft = KeymapKey(0, 3, 0, KC_LSFT); + auto key_lctrl = KeymapKey(0, 5, 0, KC_LCTRL); + + set_keymap({key_lctrl, key_lsft}); + + key_lsft.press(); + key_lctrl.press(); + // Unfortunately modifiers are also processed in the wrong order // See issue #1476 for more information - EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(key_lsft.report_code))); + keyboard_task(); + + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(key_lsft.report_code, key_lctrl.report_code))); keyboard_task(); - EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT, KC_LCTRL))); + + key_lsft.release(); + key_lctrl.release(); + + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(key_lctrl.report_code))); + keyboard_task(); + + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); keyboard_task(); } TEST_F(KeyPress, LeftAndRightShiftCanBePressedAtTheSameTime) { TestDriver driver; - press_key(3, 0); - press_key(4, 0); + auto key_lsft = KeymapKey(0, 3, 0, KC_LSFT); + auto key_rsft = KeymapKey(0, 4, 0, KC_RSFT); + + set_keymap({key_rsft, key_lsft}); + + key_lsft.press(); + key_rsft.press(); // Unfortunately modifiers are also processed in the wrong order // See issue #1476 for more information - EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(key_lsft.report_code))); + keyboard_task(); + + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(key_lsft.report_code, key_rsft.report_code))); keyboard_task(); - EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT, KC_RSFT))); + + key_lsft.release(); + key_rsft.release(); + + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(key_rsft.report_code))); + keyboard_task(); + + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); keyboard_task(); } TEST_F(KeyPress, RightShiftLeftControlAndCharWithTheSameKey) { TestDriver driver; - press_key(6, 0); + auto combo_key = KeymapKey(0, 0, 0, RSFT(LCTL(KC_O))); + + set_keymap({combo_key}); + // BUG: The press is split into two reports // BUG: It reports RSFT instead of LSFT // See issue #524 for more information // The underlying cause is that we use only one bit to represent the right hand // modifiers. + combo_key.press(); EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_RSFT, KC_RCTRL))); EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_RSFT, KC_RCTRL, KC_O))); keyboard_task(); - release_key(6, 0); + + combo_key.release(); EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_RSFT, KC_RCTRL))); EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); keyboard_task(); @@ -127,25 +188,29 @@ TEST_F(KeyPress, RightShiftLeftControlAndCharWithTheSameKey) { TEST_F(KeyPress, PressPlusEqualReleaseBeforePress) { TestDriver driver; InSequence s; + auto key_plus = KeymapKey(0, 1, 1, KC_PLUS); + auto key_eql = KeymapKey(0, 0, 1, KC_EQL); - press_key(1, 1); // KC_PLUS + set_keymap({key_plus, key_eql}); + + key_plus.press(); EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))); EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT, KC_EQL))); run_one_scan_loop(); testing::Mock::VerifyAndClearExpectations(&driver); - release_key(1, 1); // KC_PLUS + key_plus.release(); EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))); EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); run_one_scan_loop(); testing::Mock::VerifyAndClearExpectations(&driver); - press_key(0, 1); // KC_EQL - EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_EQL))); + key_eql.press(); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(key_eql.report_code))); run_one_scan_loop(); testing::Mock::VerifyAndClearExpectations(&driver); - release_key(0, 1); // KC_EQL + key_eql.release(); EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); run_one_scan_loop(); testing::Mock::VerifyAndClearExpectations(&driver); @@ -154,27 +219,31 @@ TEST_F(KeyPress, PressPlusEqualReleaseBeforePress) { TEST_F(KeyPress, PressPlusEqualDontReleaseBeforePress) { TestDriver driver; InSequence s; + auto key_plus = KeymapKey(0, 1, 1, KC_PLUS); + auto key_eql = KeymapKey(0, 0, 1, KC_EQL); - press_key(1, 1); // KC_PLUS + set_keymap({key_plus, key_eql}); + + key_plus.press(); EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))); EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT, KC_EQL))); run_one_scan_loop(); testing::Mock::VerifyAndClearExpectations(&driver); - press_key(0, 1); // KC_EQL + key_eql.press(); EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); - EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_EQL))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_EQUAL))); run_one_scan_loop(); testing::Mock::VerifyAndClearExpectations(&driver); - release_key(1, 1); // KC_PLS + key_plus.release(); // BUG: Should really still return KC_EQL, but this is fine too // It's also called twice for some reason EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(2); run_one_scan_loop(); testing::Mock::VerifyAndClearExpectations(&driver); - release_key(0, 1); // KC_EQL + key_eql.release(); EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); run_one_scan_loop(); testing::Mock::VerifyAndClearExpectations(&driver); @@ -183,24 +252,28 @@ TEST_F(KeyPress, PressPlusEqualDontReleaseBeforePress) { TEST_F(KeyPress, PressEqualPlusReleaseBeforePress) { TestDriver driver; InSequence s; + auto key_plus = KeymapKey(0, 1, 1, KC_PLUS); + auto key_eql = KeymapKey(0, 0, 1, KC_EQL); - press_key(0, 1); // KC_EQL + set_keymap({key_plus, key_eql}); + + key_eql.press(); EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_EQL))); run_one_scan_loop(); testing::Mock::VerifyAndClearExpectations(&driver); - release_key(0, 1); // KQ_EQL + key_eql.release(); EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); run_one_scan_loop(); testing::Mock::VerifyAndClearExpectations(&driver); - press_key(1, 1); // KC_PLUS + key_plus.press(); EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))); EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT, KC_EQL))); run_one_scan_loop(); testing::Mock::VerifyAndClearExpectations(&driver); - release_key(1, 1); // KC_PLUS + key_plus.release(); EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))); EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); run_one_scan_loop(); @@ -210,31 +283,35 @@ TEST_F(KeyPress, PressEqualPlusReleaseBeforePress) { TEST_F(KeyPress, PressEqualPlusDontReleaseBeforePress) { TestDriver driver; InSequence s; + auto key_plus = KeymapKey(0, 1, 1, KC_PLUS); + auto key_eql = KeymapKey(0, 0, 1, KC_EQL); + + set_keymap({key_plus, key_eql}); - press_key(0, 1); // KC_EQL + key_eql.press(); EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_EQL))); run_one_scan_loop(); testing::Mock::VerifyAndClearExpectations(&driver); - press_key(1, 1); // KC_PLUS + key_plus.press(); // BUG: The sequence is a bit strange, but it works, the end result is that // KC_PLUS is sent - EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT, KC_EQL))); - EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))); - EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT, KC_EQL))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LEFT_SHIFT, KC_EQUAL))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LEFT_SHIFT))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LEFT_SHIFT, KC_EQUAL))); run_one_scan_loop(); testing::Mock::VerifyAndClearExpectations(&driver); - release_key(0, 1); // KC_EQL + key_eql.release(); // I guess it's fine to still report shift here - EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LEFT_SHIFT))); run_one_scan_loop(); testing::Mock::VerifyAndClearExpectations(&driver); - release_key(1, 1); // KC_PLUS + key_plus.release(); // This report is not needed - EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LEFT_SHIFT))); EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); run_one_scan_loop(); testing::Mock::VerifyAndClearExpectations(&driver); -} +} \ No newline at end of file diff --git a/tests/basic/test_macro.cpp b/tests/basic/test_macro.cpp index dc4a77796a7a..ae2f3b32e3fb 100644 --- a/tests/basic/test_macro.cpp +++ b/tests/basic/test_macro.cpp @@ -24,14 +24,29 @@ class Macro : public TestFixture {}; #define AT_TIME(t) WillOnce(InvokeWithoutArgs([current_time]() { EXPECT_EQ(timer_elapsed32(current_time), t); })) +extern "C" const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { + if (record->event.pressed) { + switch (id) { + case 0: + return MACRO(D(LSFT), T(H), U(LSFT), T(E), T(L), T(L), T(O), T(SPACE), W(100), D(LSFT), T(W), U(LSFT), I(10), T(O), T(R), T(L), T(D), D(LSFT), T(1), U(LSFT), END); + } + } + return MACRO_NONE; +}; + TEST_F(Macro, PlayASimpleMacro) { TestDriver driver; InSequence s; - press_key(8, 0); + auto key_macro = KeymapKey(0, 8, 0, M(0)); + + set_keymap({key_macro}); + + key_macro.press(); + uint32_t current_time = timer_read32(); - EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))).AT_TIME(0); - EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT, KC_H))).AT_TIME(0); - EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))).AT_TIME(0); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LEFT_SHIFT))).AT_TIME(0); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LEFT_SHIFT, KC_H))).AT_TIME(0); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LEFT_SHIFT))).AT_TIME(0); EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).AT_TIME(0); EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_E))).AT_TIME(0); // The macro system could actually skip these empty keyboard reports @@ -45,9 +60,9 @@ TEST_F(Macro, PlayASimpleMacro) { EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).AT_TIME(0); EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_SPACE))).AT_TIME(0); EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).AT_TIME(0); - EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))).AT_TIME(100); - EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT, KC_W))).AT_TIME(100); - EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))).AT_TIME(100); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LEFT_SHIFT))).AT_TIME(100); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LEFT_SHIFT, KC_W))).AT_TIME(100); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LEFT_SHIFT))).AT_TIME(100); EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).AT_TIME(100); EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_O))) // BUG: The timer should not really have advanced 10 ms here @@ -63,9 +78,11 @@ TEST_F(Macro, PlayASimpleMacro) { EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).AT_TIME(160); EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_D))).AT_TIME(170); EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).AT_TIME(180); - EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))).AT_TIME(190); - EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT, KC_1))).AT_TIME(200); - EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))).AT_TIME(210); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LEFT_SHIFT))).AT_TIME(190); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LEFT_SHIFT, KC_1))).AT_TIME(200); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LEFT_SHIFT))).AT_TIME(210); EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).AT_TIME(220); run_one_scan_loop(); + + key_macro.release(); } diff --git a/tests/basic/test_one_shot_keys.cpp b/tests/basic/test_one_shot_keys.cpp new file mode 100644 index 000000000000..98178912e4cc --- /dev/null +++ b/tests/basic/test_one_shot_keys.cpp @@ -0,0 +1,197 @@ +/* Copyright 2021 Stefan Kerkmann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "action_util.h" +#include "keyboard_report_util.hpp" +#include "test_common.hpp" + +using testing::_; +using testing::InSequence; + +class OneShot : public TestFixture {}; +class OneShotParametrizedTestFixture : public ::testing::WithParamInterface<std::pair<KeymapKey, KeymapKey>>, public OneShot {}; + +TEST_F(OneShot, OSMWithoutAdditionalKeypressDoesNothing) { + TestDriver driver; + auto osm_key = KeymapKey(0, 0, 0, OSM(MOD_LSFT), KC_LSFT); + + set_keymap({osm_key}); + + /* Press and release OSM key*/ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + osm_key.press(); + run_one_scan_loop(); + osm_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* OSM are added when an actual report is send */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(osm_key.report_code))); + send_keyboard_report(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Make unit-test pass */ + clear_oneshot_mods(); +} + +#if defined(ONESHOT_TIMEOUT) + +TEST_P(OneShotParametrizedTestFixture, OSMExpiredDoesNothing) { + TestDriver driver; + KeymapKey osm_key = GetParam().first; + KeymapKey regular_key = GetParam().second; + + set_keymap({osm_key, regular_key}); + + /* Press and release OSM */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + osm_key.press(); + run_one_scan_loop(); + osm_key.release(); + idle_for(ONESHOT_TIMEOUT); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Press regular key */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(regular_key.report_code))).Times(1); + regular_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release regular key */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + regular_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); +} + +#endif + +TEST_P(OneShotParametrizedTestFixture, OSMWithAdditionalKeypress) { + TestDriver driver; + KeymapKey osm_key = GetParam().first; + KeymapKey regular_key = GetParam().second; + + set_keymap({osm_key, regular_key}); + + /* Press and release OSM */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + osm_key.press(); + run_one_scan_loop(); + osm_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Press regular key */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(osm_key.report_code, regular_key.report_code))).Times(1); + regular_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release regular key */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + regular_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); +} + +TEST_P(OneShotParametrizedTestFixture, OSMAsRegularModifierWithAdditionalKeypress) { + TestDriver driver; + testing::InSequence s; + + KeymapKey osm_key = GetParam().first; + KeymapKey regular_key = GetParam().second; + + set_keymap({osm_key, regular_key}); + + /* Press OSM */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + osm_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Press regular key */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + regular_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release regular key */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + regular_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release OSM */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(regular_key.report_code, osm_key.report_code))).Times(1); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(1); + osm_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); +} + +// clang-format off + +INSTANTIATE_TEST_CASE_P( + OneShotModifierTests, + OneShotParametrizedTestFixture, + ::testing::Values( + /* first is osm key, second is regular key. */ + std::make_pair(KeymapKey{0, 0, 0, OSM(MOD_LSFT), KC_LSFT}, KeymapKey{0, 1, 1, KC_A}), + std::make_pair(KeymapKey{0, 0, 0, OSM(MOD_LCTL), KC_LCTL}, KeymapKey{0, 1, 1, KC_A}), + std::make_pair(KeymapKey{0, 0, 0, OSM(MOD_LALT), KC_LALT}, KeymapKey{0, 1, 1, KC_A}), + std::make_pair(KeymapKey{0, 0, 0, OSM(MOD_LGUI), KC_LGUI}, KeymapKey{0, 1, 1, KC_A}), + std::make_pair(KeymapKey{0, 0, 0, OSM(MOD_RCTL), KC_RCTL}, KeymapKey{0, 1, 1, KC_A}), + std::make_pair(KeymapKey{0, 0, 0, OSM(MOD_RSFT), KC_RSFT}, KeymapKey{0, 1, 1, KC_A}), + std::make_pair(KeymapKey{0, 0, 0, OSM(MOD_RALT), KC_RALT}, KeymapKey{0, 1, 1, KC_A}), + std::make_pair(KeymapKey{0, 0, 0, OSM(MOD_RGUI), KC_RGUI}, KeymapKey{0, 1, 1, KC_A}) + )); +// clang-format on + +TEST_F(OneShot, OSLWithAdditionalKeypress) { + TestDriver driver; + InSequence s; + KeymapKey osl_key = KeymapKey{0, 0, 0, OSL(1)}; + KeymapKey regular_key = KeymapKey{1, 1, 0, KC_A}; + + set_keymap({osl_key, regular_key}); + + /* Press OSL key */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + osl_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release OSL key */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(2); + osl_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Press regular key */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(regular_key.report_code))).Times(2); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + regular_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release regular key */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + regular_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); +} diff --git a/tests/basic/test_tapping.cpp b/tests/basic/test_tapping.cpp index 30d032e9fdbd..e4a7e4a9f3f0 100644 --- a/tests/basic/test_tapping.cpp +++ b/tests/basic/test_tapping.cpp @@ -14,8 +14,11 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ +#include "keyboard_report_util.hpp" +#include "keycode.h" #include "test_common.hpp" #include "action_tapping.h" +#include "test_keymap_key.hpp" using testing::_; using testing::InSequence; @@ -25,14 +28,19 @@ class Tapping : public TestFixture {}; TEST_F(Tapping, TapA_SHFT_T_KeyReportsKey) { TestDriver driver; InSequence s; + auto key_shift_hold_p_tap = KeymapKey(0, 7, 0, SFT_T(KC_P)); + + set_keymap({key_shift_hold_p_tap}); - press_key(7, 0); // Tapping keys does nothing on press + key_shift_hold_p_tap.press(); EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); run_one_scan_loop(); - release_key(7, 0); + // First we get the key press + key_shift_hold_p_tap.release(); EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_P))); + // Then the release EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); run_one_scan_loop(); @@ -41,25 +49,38 @@ TEST_F(Tapping, TapA_SHFT_T_KeyReportsKey) { TEST_F(Tapping, HoldA_SHFT_T_KeyReportsShift) { TestDriver driver; InSequence s; + auto mod_tap_hold_key = KeymapKey(0, 7, 0, SFT_T(KC_P)); + + set_keymap({mod_tap_hold_key}); + + mod_tap_hold_key.press(); - press_key(7, 0); // Tapping keys does nothing on press EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); idle_for(TAPPING_TERM); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))); run_one_scan_loop(); + + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + mod_tap_hold_key.release(); + run_one_scan_loop(); } TEST_F(Tapping, ANewTapWithinTappingTermIsBuggy) { // See issue #1478 for more information TestDriver driver; InSequence s; + auto key_shift_hold_p_tap = KeymapKey(0, 7, 0, SFT_T(KC_P)); + + set_keymap({key_shift_hold_p_tap}); - press_key(7, 0); // Tapping keys does nothing on press + key_shift_hold_p_tap.press(); EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); run_one_scan_loop(); - release_key(7, 0); + key_shift_hold_p_tap.release(); + // First we get the key press EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_P))); // Then the release @@ -67,19 +88,20 @@ TEST_F(Tapping, ANewTapWithinTappingTermIsBuggy) { run_one_scan_loop(); // This sends KC_P, even if it should do nothing - press_key(7, 0); + key_shift_hold_p_tap.press(); // This test should not succed if everything works correctly EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_P))); run_one_scan_loop(); - release_key(7, 0); + + key_shift_hold_p_tap.release(); EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); idle_for(TAPPING_TERM + 1); // On the other hand, nothing is sent if we are outside the tapping term - press_key(7, 0); + key_shift_hold_p_tap.press(); EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); run_one_scan_loop(); - release_key(7, 0); + key_shift_hold_p_tap.release(); // First we get the key press EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_P))); @@ -90,8 +112,12 @@ TEST_F(Tapping, ANewTapWithinTappingTermIsBuggy) { // Now we are geting into strange territory, as the hold registers too early here // But the stranges part is: // If TAPPING_TERM + 1 above is changed to TAPPING_TERM or TAPPING_TERM + 2 it doesn't - press_key(7, 0); + key_shift_hold_p_tap.press(); // Shouldn't be called here really - EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))).Times(1); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LEFT_SHIFT))).Times(1); idle_for(TAPPING_TERM); -} + + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + key_shift_hold_p_tap.release(); + run_one_scan_loop(); +} \ No newline at end of file diff --git a/tests/tap_hold_configurations/default_mod_tap/config.h b/tests/tap_hold_configurations/default_mod_tap/config.h new file mode 100644 index 000000000000..5955b8600a87 --- /dev/null +++ b/tests/tap_hold_configurations/default_mod_tap/config.h @@ -0,0 +1,21 @@ +/* Copyright 2021 Stefan Kerkmann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should 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 "test_common.h" + +#define IGNORE_MOD_TAP_INTERRUPT \ No newline at end of file diff --git a/tests/tap_hold_configurations/default_mod_tap/test.mk b/tests/tap_hold_configurations/default_mod_tap/test.mk new file mode 100644 index 000000000000..cfab996e0ef8 --- /dev/null +++ b/tests/tap_hold_configurations/default_mod_tap/test.mk @@ -0,0 +1,18 @@ +# Copyright 2021 Stefan Kerkmann +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# -------------------------------------------------------------------------------- +# Keep this file, even if it is empty, as a marker that this folder contains tests +# -------------------------------------------------------------------------------- \ No newline at end of file diff --git a/tests/tap_hold_configurations/default_mod_tap/test_tap_hold.cpp b/tests/tap_hold_configurations/default_mod_tap/test_tap_hold.cpp new file mode 100644 index 000000000000..90befcdffd15 --- /dev/null +++ b/tests/tap_hold_configurations/default_mod_tap/test_tap_hold.cpp @@ -0,0 +1,230 @@ +/* Copyright 2021 Stefan Kerkmann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "keyboard_report_util.hpp" +#include "keycode.h" +#include "test_common.hpp" +#include "action_tapping.h" +#include "test_fixture.hpp" +#include "test_keymap_key.hpp" + +using testing::_; +using testing::InSequence; + +class DefaultTapHold : public TestFixture {}; + +TEST_F(DefaultTapHold, tap_regular_key_while_mod_tap_key_is_held) { + TestDriver driver; + InSequence s; + auto mod_tap_hold_key = KeymapKey(0, 1, 0, SFT_T(KC_P)); + auto regular_key = KeymapKey(0, 2, 0, KC_A); + + set_keymap({mod_tap_hold_key, regular_key}); + + /* Press mod-tap-hold key. */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + mod_tap_hold_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Press regular key. */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + regular_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release regular key. */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + regular_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release mod-tap-hold key. */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_P))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_P, KC_A))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_P))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + mod_tap_hold_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Idle for tapping term of mod tap hold key. */ + idle_for(TAPPING_TERM - 3); + testing::Mock::VerifyAndClearExpectations(&driver); +} + +TEST_F(DefaultTapHold, tap_mod_tap_key_while_mod_tap_key_is_held) { + TestDriver driver; + InSequence s; + auto first_mod_tap_hold_key = KeymapKey(0, 1, 0, SFT_T(KC_P)); + auto second_mod_tap_hold_key = KeymapKey(0, 2, 0, RSFT_T(KC_A)); + + set_keymap({first_mod_tap_hold_key, second_mod_tap_hold_key}); + + /* Press first mod-tap-hold key */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + first_mod_tap_hold_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Press second tap-hold key */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + second_mod_tap_hold_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release second tap-hold key */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + second_mod_tap_hold_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release first mod-tap-hold key */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_P))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_P, KC_A))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_P))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + first_mod_tap_hold_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); +} + +TEST_F(DefaultTapHold, tap_regular_key_while_layer_tap_key_is_held) { + TestDriver driver; + InSequence s; + auto layer_tap_hold_key = KeymapKey(0, 1, 0, LT(1, KC_P)); + auto regular_key = KeymapKey(0, 2, 0, KC_A); + auto layer_key = KeymapKey(1, 2, 0, KC_B); + + set_keymap({layer_tap_hold_key, regular_key, layer_key}); + + /* Press layer-tap-hold key */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + layer_tap_hold_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Press regular key */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + regular_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release regular key */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + regular_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release layer-tap-hold key */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_P))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_A, KC_P))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_P))); + EXPECT_CALL(driver, send_keyboard_mock(_)); + layer_tap_hold_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); +} + +TEST_F(DefaultTapHold, tap_mod_tap_hold_key_two_times) { + GTEST_SKIP() << "TODO:Holding a modtap key results in out of bounds access to the keymap, this is a bug in QMK."; + + TestDriver driver; + InSequence s; + auto mod_tap_hold_key = KeymapKey(0, 1, 0, SFT_T(KC_P)); + + set_keymap({mod_tap_hold_key}); + + /* Press mod-tap-hold key. */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + mod_tap_hold_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release mod-tap-hold key. */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_P))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + mod_tap_hold_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Press mod-tap-hold key again. */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_P))); + mod_tap_hold_key.press(); + idle_for(TAPPING_TERM); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release mod-tap-hold key. */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + mod_tap_hold_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); +} + +TEST_F(DefaultTapHold, tap_mod_tap_hold_key_twice_and_hold_on_second_time) { + GTEST_SKIP() << "TODO:Holding a modtap key results in out of bounds access to the keymap, this is a bug in QMK."; + + TestDriver driver; + InSequence s; + auto mod_tap_hold_key = KeymapKey(0, 1, 0, SFT_T(KC_P)); + + set_keymap({mod_tap_hold_key}); + + /* Press mod-tap-hold key. */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + mod_tap_hold_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release mod-tap-hold key. */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_P))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + mod_tap_hold_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Press mod-tap-hold key again. */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_P))); + mod_tap_hold_key.press(); + idle_for(TAPPING_TERM); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release mod-tap-hold key. */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + mod_tap_hold_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); +} + +TEST_F(DefaultTapHold, tap_and_hold_mod_tap_hold_key) { + TestDriver driver; + InSequence s; + auto mod_tap_hold_key = KeymapKey(0, 1, 0, SFT_T(KC_P)); + + set_keymap({mod_tap_hold_key}); + + /* Press mod-tap-hold key. */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSHIFT))); + mod_tap_hold_key.press(); + idle_for(TAPPING_TERM + 1); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release mod-tap-hold key. */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + mod_tap_hold_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); +} \ No newline at end of file diff --git a/tests/tap_hold_configurations/ignore_mod_tap_interrupt/config.h b/tests/tap_hold_configurations/ignore_mod_tap_interrupt/config.h new file mode 100644 index 000000000000..5955b8600a87 --- /dev/null +++ b/tests/tap_hold_configurations/ignore_mod_tap_interrupt/config.h @@ -0,0 +1,21 @@ +/* Copyright 2021 Stefan Kerkmann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should 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 "test_common.h" + +#define IGNORE_MOD_TAP_INTERRUPT \ No newline at end of file diff --git a/tests/tap_hold_configurations/ignore_mod_tap_interrupt/test.mk b/tests/tap_hold_configurations/ignore_mod_tap_interrupt/test.mk new file mode 100644 index 000000000000..efecca2c22f0 --- /dev/null +++ b/tests/tap_hold_configurations/ignore_mod_tap_interrupt/test.mk @@ -0,0 +1,18 @@ +# Copyright 2021 Stefan Kerkmann +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# -------------------------------------------------------------------------------- +# Keep this file, even if it is empty, as a marker that this folder contains tests +# -------------------------------------------------------------------------------- diff --git a/tests/tap_hold_configurations/ignore_mod_tap_interrupt/test_tap_hold.cpp b/tests/tap_hold_configurations/ignore_mod_tap_interrupt/test_tap_hold.cpp new file mode 100644 index 000000000000..1702d604d319 --- /dev/null +++ b/tests/tap_hold_configurations/ignore_mod_tap_interrupt/test_tap_hold.cpp @@ -0,0 +1,136 @@ +/* Copyright 2021 Stefan Kerkmann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "keyboard_report_util.hpp" +#include "keycode.h" +#include "test_common.hpp" +#include "action_tapping.h" +#include "test_fixture.hpp" +#include "test_keymap_key.hpp" + +using testing::_; +using testing::InSequence; + +class IgnoreModTapInterrupt : public TestFixture {}; + +TEST_F(IgnoreModTapInterrupt, tap_regular_key_while_mod_tap_key_is_held) { + TestDriver driver; + InSequence s; + auto mod_tap_hold_key = KeymapKey(0, 1, 0, SFT_T(KC_P)); + auto regular_key = KeymapKey(0, 2, 0, KC_A); + + set_keymap({mod_tap_hold_key, regular_key}); + + /* Press mod-tap-hold key */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + mod_tap_hold_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Press regular key */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + regular_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release regular key */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + regular_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release mod-tap-hold key */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_P))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_A, KC_P))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_P))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + mod_tap_hold_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); +} + +TEST_F(IgnoreModTapInterrupt, tap_mod_tap_key_while_mod_tap_key_is_held) { + TestDriver driver; + InSequence s; + auto first_mod_tap_hold_key = KeymapKey(0, 1, 0, SFT_T(KC_P)); + auto second_mod_tap_hold_key = KeymapKey(0, 2, 0, RSFT_T(KC_A)); + + set_keymap({first_mod_tap_hold_key, second_mod_tap_hold_key}); + + /* Press first mod-tap-hold key */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + first_mod_tap_hold_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Press second tap-hold key */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + second_mod_tap_hold_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release second tap-hold key */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + second_mod_tap_hold_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release first mod-tap-hold key */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_P))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_A, KC_P))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_P))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + first_mod_tap_hold_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); +} + +TEST_F(IgnoreModTapInterrupt, tap_regular_key_while_layer_tap_key_is_held) { + TestDriver driver; + InSequence s; + auto layer_tap_hold_key = KeymapKey(0, 1, 0, LT(1, KC_P)); + auto regular_key = KeymapKey(0, 2, 0, KC_A); + auto layer_key = KeymapKey(1, 2, 0, KC_B); + + set_keymap({layer_tap_hold_key, regular_key, layer_key}); + + /* Press layer-tap-hold key */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + layer_tap_hold_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Press regular key */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + regular_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release regular key */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + regular_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release layer-tap-hold key */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_P))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_P, regular_key.report_code))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_P))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + layer_tap_hold_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); +} diff --git a/tests/tap_hold_configurations/permissive_hold/config.h b/tests/tap_hold_configurations/permissive_hold/config.h new file mode 100644 index 000000000000..2d5a9849e7d7 --- /dev/null +++ b/tests/tap_hold_configurations/permissive_hold/config.h @@ -0,0 +1,21 @@ +/* Copyright 2021 Stefan Kerkmann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should 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 "test_common.h" + +#define PERMISSIVE_HOLD \ No newline at end of file diff --git a/tests/tap_hold_configurations/permissive_hold/test.mk b/tests/tap_hold_configurations/permissive_hold/test.mk new file mode 100644 index 000000000000..efecca2c22f0 --- /dev/null +++ b/tests/tap_hold_configurations/permissive_hold/test.mk @@ -0,0 +1,18 @@ +# Copyright 2021 Stefan Kerkmann +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# -------------------------------------------------------------------------------- +# Keep this file, even if it is empty, as a marker that this folder contains tests +# -------------------------------------------------------------------------------- diff --git a/tests/tap_hold_configurations/permissive_hold/test_one_shot_keys.cpp b/tests/tap_hold_configurations/permissive_hold/test_one_shot_keys.cpp new file mode 100644 index 000000000000..aa71ec397f8a --- /dev/null +++ b/tests/tap_hold_configurations/permissive_hold/test_one_shot_keys.cpp @@ -0,0 +1,76 @@ +/* Copyright 2021 Stefan Kerkmann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "action_util.h" +#include "keyboard_report_util.hpp" +#include "test_common.hpp" + +using testing::_; +using testing::InSequence; + +class OneShot : public TestFixture {}; +class OneShotParametrizedTestFixture : public ::testing::WithParamInterface<std::pair<KeymapKey, KeymapKey>>, public OneShot {}; + +TEST_P(OneShotParametrizedTestFixture, OSMAsRegularModifierWithAdditionalKeypress) { + TestDriver driver; + KeymapKey osm_key = GetParam().first; + KeymapKey regular_key = GetParam().second; + + set_keymap({osm_key, regular_key}); + + /* Press OSM */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + osm_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Press regular key */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + regular_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release regular key */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(osm_key.report_code))).Times(2); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(regular_key.report_code, osm_key.report_code))).Times(1); + regular_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release OSM */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(1); + osm_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); +} + +// clang-format off + +INSTANTIATE_TEST_CASE_P( + OneShotModifierTests, + OneShotParametrizedTestFixture, + ::testing::Values( + /* first is osm key, second is regular key. */ + std::make_pair(KeymapKey{0, 0, 0, OSM(MOD_LSFT), KC_LSFT}, KeymapKey{0, 1, 1, KC_A}), + std::make_pair(KeymapKey{0, 0, 0, OSM(MOD_LCTL), KC_LCTL}, KeymapKey{0, 1, 1, KC_A}), + std::make_pair(KeymapKey{0, 0, 0, OSM(MOD_LALT), KC_LALT}, KeymapKey{0, 1, 1, KC_A}), + std::make_pair(KeymapKey{0, 0, 0, OSM(MOD_LGUI), KC_LGUI}, KeymapKey{0, 1, 1, KC_A}), + std::make_pair(KeymapKey{0, 0, 0, OSM(MOD_RCTL), KC_RCTL}, KeymapKey{0, 1, 1, KC_A}), + std::make_pair(KeymapKey{0, 0, 0, OSM(MOD_RSFT), KC_RSFT}, KeymapKey{0, 1, 1, KC_A}), + std::make_pair(KeymapKey{0, 0, 0, OSM(MOD_RALT), KC_RALT}, KeymapKey{0, 1, 1, KC_A}), + std::make_pair(KeymapKey{0, 0, 0, OSM(MOD_RGUI), KC_RGUI}, KeymapKey{0, 1, 1, KC_A}) + )); +// clang-format on \ No newline at end of file diff --git a/tests/tap_hold_configurations/permissive_hold/test_tap_hold.cpp b/tests/tap_hold_configurations/permissive_hold/test_tap_hold.cpp new file mode 100644 index 000000000000..ab9dd1518bb2 --- /dev/null +++ b/tests/tap_hold_configurations/permissive_hold/test_tap_hold.cpp @@ -0,0 +1,132 @@ +/* Copyright 2021 Stefan Kerkmann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "keyboard_report_util.hpp" +#include "keycode.h" +#include "test_common.hpp" +#include "action_tapping.h" +#include "test_fixture.hpp" +#include "test_keymap_key.hpp" + +using testing::_; +using testing::InSequence; +class PermissiveHold : public TestFixture {}; + +TEST_F(PermissiveHold, tap_regular_key_while_mod_tap_key_is_held) { + TestDriver driver; + InSequence s; + auto mod_tap_hold_key = KeymapKey(0, 1, 0, SFT_T(KC_P)); + auto regular_key = KeymapKey(0, 2, 0, KC_A); + + set_keymap({mod_tap_hold_key, regular_key}); + + /* Press mod-tap-hold key */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + mod_tap_hold_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Press regular key */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + regular_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release regular key */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSHIFT))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSHIFT, regular_key.report_code))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSHIFT))); + regular_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release mod-tap-hold key */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + mod_tap_hold_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); +} + +TEST_F(PermissiveHold, tap_mod_tap_key_while_mod_tap_key_is_held) { + TestDriver driver; + InSequence s; + auto first_mod_tap_hold_key = KeymapKey(0, 1, 0, SFT_T(KC_P)); + auto second_mod_tap_hold_key = KeymapKey(0, 2, 0, RSFT_T(KC_A)); + + set_keymap({first_mod_tap_hold_key, second_mod_tap_hold_key}); + + /* Press first mod-tap-hold key */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + first_mod_tap_hold_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Press second mod-tap-hold key */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + second_mod_tap_hold_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release second mod-tap-hold key */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSHIFT))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSHIFT, second_mod_tap_hold_key.report_code))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSHIFT))); + second_mod_tap_hold_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release first mod-tap-hold key */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + first_mod_tap_hold_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); +} + +TEST_F(PermissiveHold, tap_regular_key_while_layer_tap_key_is_held) { + TestDriver driver; + InSequence s; + auto layer_tap_hold_key = KeymapKey(0, 1, 0, LT(1, KC_P)); + auto regular_key = KeymapKey(0, 2, 0, KC_A); + auto layer_key = KeymapKey(1, 2, 0, KC_B); + + set_keymap({layer_tap_hold_key, regular_key, layer_key}); + + /* Press layer-tap-hold key */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + layer_tap_hold_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Press regular key */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + regular_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release regular key */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(layer_key.report_code))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + regular_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release layer-tap-hold key */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + layer_tap_hold_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); +} \ No newline at end of file diff --git a/tests/tap_hold_configurations/permissive_hold_ignore_mod_tap_interrupt/config.h b/tests/tap_hold_configurations/permissive_hold_ignore_mod_tap_interrupt/config.h new file mode 100644 index 000000000000..a6abd50bbee7 --- /dev/null +++ b/tests/tap_hold_configurations/permissive_hold_ignore_mod_tap_interrupt/config.h @@ -0,0 +1,22 @@ +/* Copyright 2021 Stefan Kerkmann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should 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 "test_common.h" + +#define IGNORE_MOD_TAP_INTERRUPT +#define PERMISSIVE_HOLD \ No newline at end of file diff --git a/tests/tap_hold_configurations/permissive_hold_ignore_mod_tap_interrupt/test.mk b/tests/tap_hold_configurations/permissive_hold_ignore_mod_tap_interrupt/test.mk new file mode 100644 index 000000000000..efecca2c22f0 --- /dev/null +++ b/tests/tap_hold_configurations/permissive_hold_ignore_mod_tap_interrupt/test.mk @@ -0,0 +1,18 @@ +# Copyright 2021 Stefan Kerkmann +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# -------------------------------------------------------------------------------- +# Keep this file, even if it is empty, as a marker that this folder contains tests +# -------------------------------------------------------------------------------- diff --git a/tests/tap_hold_configurations/permissive_hold_ignore_mod_tap_interrupt/test_tap_hold.cpp b/tests/tap_hold_configurations/permissive_hold_ignore_mod_tap_interrupt/test_tap_hold.cpp new file mode 100644 index 000000000000..67f394653f3a --- /dev/null +++ b/tests/tap_hold_configurations/permissive_hold_ignore_mod_tap_interrupt/test_tap_hold.cpp @@ -0,0 +1,134 @@ + +/* Copyright 2021 Stefan Kerkmann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "keyboard_report_util.hpp" +#include "keycode.h" +#include "test_common.hpp" +#include "action_tapping.h" +#include "test_fixture.hpp" +#include "test_keymap_key.hpp" + +using testing::_; +using testing::InSequence; + +class PermissiveHold_IgnoreModTapInterrupt : public TestFixture {}; + +TEST_F(PermissiveHold_IgnoreModTapInterrupt, tap_regular_key_while_mod_tap_key_is_held) { + TestDriver driver; + InSequence s; + auto mod_tap_hold_key = KeymapKey(0, 1, 0, SFT_T(KC_P)); + auto regular_key = KeymapKey(0, 2, 0, KC_A); + + set_keymap({mod_tap_hold_key, regular_key}); + + /* Press mod-tap-hold key */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + mod_tap_hold_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Press regular key */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + regular_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release regular key */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT, KC_A))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))); + regular_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release mod-tap-hold key */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + mod_tap_hold_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); +} + +TEST_F(PermissiveHold_IgnoreModTapInterrupt, tap_mod_tap_key_while_mod_tap_key_is_held) { + TestDriver driver; + InSequence s; + auto first_mod_tap_hold_key = KeymapKey(0, 1, 0, SFT_T(KC_P)); + auto second_mod_tap_hold_key = KeymapKey(0, 2, 0, RSFT_T(KC_A)); + + set_keymap({first_mod_tap_hold_key, second_mod_tap_hold_key}); + + /* Press first mod-tap-hold key */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + first_mod_tap_hold_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Press second tap-hold key */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + second_mod_tap_hold_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release second tap-hold key */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT, KC_A))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))); + second_mod_tap_hold_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release first mod-tap-hold key */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + first_mod_tap_hold_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); +} + +TEST_F(PermissiveHold_IgnoreModTapInterrupt, tap_regular_key_while_layer_tap_key_is_held) { + TestDriver driver; + InSequence s; + auto layer_tap_hold_key = KeymapKey(0, 1, 0, LT(1, KC_P)); + auto regular_key = KeymapKey(0, 2, 0, KC_A); + auto layer_key = KeymapKey(1, 2, 0, KC_B); + + set_keymap({layer_tap_hold_key, regular_key, layer_key}); + + /* Press layer-tap-hold key */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + layer_tap_hold_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Press regular key */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + regular_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release regular key */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_B))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + regular_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release layer-tap-hold key */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + layer_tap_hold_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); +} \ No newline at end of file diff --git a/tests/tap_hold_configurations/retro_tapping/config.h b/tests/tap_hold_configurations/retro_tapping/config.h new file mode 100644 index 000000000000..4b38f2644b83 --- /dev/null +++ b/tests/tap_hold_configurations/retro_tapping/config.h @@ -0,0 +1,21 @@ +/* Copyright 2021 Stefan Kerkmann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should 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 "test_common.h" + +#define RETRO_TAPPING \ No newline at end of file diff --git a/tests/tap_hold_configurations/retro_tapping/test.mk b/tests/tap_hold_configurations/retro_tapping/test.mk new file mode 100644 index 000000000000..efecca2c22f0 --- /dev/null +++ b/tests/tap_hold_configurations/retro_tapping/test.mk @@ -0,0 +1,18 @@ +# Copyright 2021 Stefan Kerkmann +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# -------------------------------------------------------------------------------- +# Keep this file, even if it is empty, as a marker that this folder contains tests +# -------------------------------------------------------------------------------- diff --git a/tests/tap_hold_configurations/retro_tapping/test_tap_hold.cpp b/tests/tap_hold_configurations/retro_tapping/test_tap_hold.cpp new file mode 100644 index 000000000000..59ae77f78119 --- /dev/null +++ b/tests/tap_hold_configurations/retro_tapping/test_tap_hold.cpp @@ -0,0 +1,52 @@ + +/* Copyright 2021 Stefan Kerkmann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "keyboard_report_util.hpp" +#include "keycode.h" +#include "test_common.hpp" +#include "action_tapping.h" +#include "test_fixture.hpp" +#include "test_keymap_key.hpp" + +using testing::_; +using testing::InSequence; + +class RetroTapping : public TestFixture {}; + +TEST_F(RetroTapping, tap_and_hold_mod_tap_hold_key) { + TestDriver driver; + InSequence s; + auto mod_tap_hold_key = KeymapKey(0, 1, 0, SFT_T(KC_P)); + + set_keymap({mod_tap_hold_key}); + + /* Press mod-tap-hold key. */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + mod_tap_hold_key.press(); + idle_for(TAPPING_TERM); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release mod-tap-hold key. */ + /* TODO: Why is LSHIFT send at all? */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSHIFT))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_P))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + mod_tap_hold_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); +} \ No newline at end of file diff --git a/tests/tap_hold_configurations/retro_tapping/test_tapping.cpp b/tests/tap_hold_configurations/retro_tapping/test_tapping.cpp new file mode 100644 index 000000000000..cf23df831718 --- /dev/null +++ b/tests/tap_hold_configurations/retro_tapping/test_tapping.cpp @@ -0,0 +1,112 @@ +/* Copyright 2021 Stefan Kerkmann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "keyboard_report_util.hpp" +#include "keycode.h" +#include "test_common.hpp" +#include "action_tapping.h" +#include "test_keymap_key.hpp" + +using testing::_; +using testing::InSequence; + +class Tapping : public TestFixture {}; + +TEST_F(Tapping, HoldA_SHFT_T_KeyReportsShift) { + TestDriver driver; + InSequence s; + auto mod_tap_hold_key = KeymapKey(0, 7, 0, SFT_T(KC_P)); + + set_keymap({mod_tap_hold_key}); + + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + mod_tap_hold_key.press(); + idle_for(TAPPING_TERM); + testing::Mock::VerifyAndClearExpectations(&driver); + + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_P))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + mod_tap_hold_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); +} + +TEST_F(Tapping, ANewTapWithinTappingTermIsBuggy) { + TestDriver driver; + InSequence s; + auto key_shift_hold_p_tap = KeymapKey(0, 7, 0, SFT_T(KC_P)); + + set_keymap({key_shift_hold_p_tap}); + + /* Press mod_tap_hold key */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + key_shift_hold_p_tap.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release mod_tap_hold key */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_P))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + key_shift_hold_p_tap.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Press mod_tap_hold key again */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_P))); + key_shift_hold_p_tap.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release mod_tap_hold key again */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + key_shift_hold_p_tap.release(); + idle_for(TAPPING_TERM + 1); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Press mod_tap_hold key again */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + key_shift_hold_p_tap.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release mod_tap_hold key again */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_P))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + key_shift_hold_p_tap.release(); + idle_for(TAPPING_TERM + 1); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Press mod_tap_hold key again */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + key_shift_hold_p_tap.press(); + idle_for(TAPPING_TERM); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release mod_tap_hold key again */ + /* TODO: Why is KC_LSFT send? */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_P))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + key_shift_hold_p_tap.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); +} \ No newline at end of file diff --git a/tests/tap_hold_configurations/tapping_force_hold/config.h b/tests/tap_hold_configurations/tapping_force_hold/config.h new file mode 100644 index 000000000000..3b4646338a30 --- /dev/null +++ b/tests/tap_hold_configurations/tapping_force_hold/config.h @@ -0,0 +1,21 @@ +/* Copyright 2021 Stefan Kerkmann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should 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 "test_common.h" + +#define TAPPING_FORCE_HOLD \ No newline at end of file diff --git a/tests/tap_hold_configurations/tapping_force_hold/test.mk b/tests/tap_hold_configurations/tapping_force_hold/test.mk new file mode 100644 index 000000000000..efecca2c22f0 --- /dev/null +++ b/tests/tap_hold_configurations/tapping_force_hold/test.mk @@ -0,0 +1,18 @@ +# Copyright 2021 Stefan Kerkmann +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# -------------------------------------------------------------------------------- +# Keep this file, even if it is empty, as a marker that this folder contains tests +# -------------------------------------------------------------------------------- diff --git a/tests/tap_hold_configurations/tapping_force_hold/test_action_layer.cpp b/tests/tap_hold_configurations/tapping_force_hold/test_action_layer.cpp new file mode 100644 index 000000000000..02416eed7365 --- /dev/null +++ b/tests/tap_hold_configurations/tapping_force_hold/test_action_layer.cpp @@ -0,0 +1,81 @@ +/* Copyright 2021 Stefan Kerkmann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "keyboard_report_util.hpp" +#include "test_common.hpp" + +using testing::_; +using testing::InSequence; + +class ActionLayer : public TestFixture {}; + +TEST_F(ActionLayer, LayerTapToggleWithToggleWithKeypress) { + TestDriver driver; + KeymapKey layer_key = KeymapKey{0, 0, 0, TT(1)}; + + /* These keys must have the same position in the matrix, only the layer is different. */ + KeymapKey regular_key = KeymapKey{0, 1, 0, KC_A}; + set_keymap({layer_key, regular_key, KeymapKey{1, 1, 0, KC_B}}); + + /* Tap TT five times . */ + /* TODO: QMK currently sends an empty report even if nothing needs to be reported to the host! */ + /* TODO: Tapping Force Hold breaks TT */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(10); + + layer_key.press(); + run_one_scan_loop(); + layer_key.release(); + run_one_scan_loop(); + expect_layer_state(0); + + layer_key.press(); + run_one_scan_loop(); + layer_key.release(); + run_one_scan_loop(); + expect_layer_state(0); + + layer_key.press(); + run_one_scan_loop(); + layer_key.release(); + run_one_scan_loop(); + expect_layer_state(0); + + layer_key.press(); + run_one_scan_loop(); + layer_key.release(); + run_one_scan_loop(); + expect_layer_state(0); + + layer_key.press(); + run_one_scan_loop(); + layer_key.release(); + run_one_scan_loop(); + expect_layer_state(0); + + testing::Mock::VerifyAndClearExpectations(&driver); + + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_A))).Times(1); + regular_key.press(); + run_one_scan_loop(); + expect_layer_state(0); + testing::Mock::VerifyAndClearExpectations(&driver); + + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(1); + regular_key.release(); + run_one_scan_loop(); + expect_layer_state(0); + testing::Mock::VerifyAndClearExpectations(&driver); +} \ No newline at end of file diff --git a/tests/tap_hold_configurations/tapping_force_hold/test_tap_hold.cpp b/tests/tap_hold_configurations/tapping_force_hold/test_tap_hold.cpp new file mode 100644 index 000000000000..cb6842961724 --- /dev/null +++ b/tests/tap_hold_configurations/tapping_force_hold/test_tap_hold.cpp @@ -0,0 +1,215 @@ + +/* Copyright 2021 Stefan Kerkmann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "keyboard_report_util.hpp" +#include "keycode.h" +#include "test_common.hpp" +#include "action_tapping.h" +#include "test_fixture.hpp" +#include "test_keymap_key.hpp" + +using testing::_; +using testing::InSequence; + +class TappingForceHold : public TestFixture {}; + +TEST_F(TappingForceHold, tap_regular_key_while_mod_tap_key_is_held) { + TestDriver driver; + InSequence s; + auto mod_tap_hold_key = KeymapKey(0, 1, 0, SFT_T(KC_P)); + auto regular_key = KeymapKey(0, 2, 0, KC_A); + + set_keymap({mod_tap_hold_key, regular_key}); + + /* Press mod-tap-hold key. */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + mod_tap_hold_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Press regular key. */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + regular_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release regular key. */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + regular_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release mod-tap-hold key. */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))); + mod_tap_hold_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Idle for tapping term of mod tap hold key. */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT, KC_A))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + idle_for(TAPPING_TERM - 3); + testing::Mock::VerifyAndClearExpectations(&driver); +} + +TEST_F(TappingForceHold, tap_mod_tap_key_while_mod_tap_key_is_held) { + TestDriver driver; + InSequence s; + auto first_mod_tap_hold_key = KeymapKey(0, 1, 0, SFT_T(KC_P)); + auto second_mod_tap_hold_key = KeymapKey(0, 2, 0, RSFT_T(KC_A)); + + set_keymap({first_mod_tap_hold_key, second_mod_tap_hold_key}); + + /* Press first mod-tap-hold key */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + first_mod_tap_hold_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Press second tap-hold key */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + second_mod_tap_hold_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release second tap-hold key */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + second_mod_tap_hold_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release first mod-tap-hold key */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))); + first_mod_tap_hold_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Idle for tapping term of first mod tap hold key. */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT, KC_A))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSFT))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + idle_for(TAPPING_TERM - 3); + testing::Mock::VerifyAndClearExpectations(&driver); +} + +TEST_F(TappingForceHold, tap_regular_key_while_layer_tap_key_is_held) { + TestDriver driver; + InSequence s; + auto layer_tap_hold_key = KeymapKey(0, 1, 0, LT(1, KC_P)); + auto regular_key = KeymapKey(0, 2, 0, KC_A); + auto layer_key = KeymapKey(1, 2, 0, KC_B); + + set_keymap({layer_tap_hold_key, regular_key, layer_key}); + + /* Press layer-tap-hold key */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + layer_tap_hold_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Press regular key */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + regular_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release regular key */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + regular_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release layer-tap-hold key */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_P))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_A, KC_P))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_P))); + EXPECT_CALL(driver, send_keyboard_mock(_)); + layer_tap_hold_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); +} + +TEST_F(TappingForceHold, tap_mod_tap_hold_key_two_times) { + TestDriver driver; + InSequence s; + auto mod_tap_hold_key = KeymapKey(0, 1, 0, SFT_T(KC_P)); + + set_keymap({mod_tap_hold_key}); + + /* Press mod-tap-hold key. */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + mod_tap_hold_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release mod-tap-hold key. */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_P))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + mod_tap_hold_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Press mod-tap-hold key again. */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + mod_tap_hold_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release mod-tap-hold key. */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_P))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + mod_tap_hold_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); +} + +TEST_F(TappingForceHold, tap_mod_tap_hold_key_twice_and_hold_on_second_time) { + TestDriver driver; + InSequence s; + auto mod_tap_hold_key = KeymapKey(0, 1, 0, SFT_T(KC_P)); + + set_keymap({mod_tap_hold_key}); + + /* Press mod-tap-hold key. */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + mod_tap_hold_key.press(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release mod-tap-hold key. */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_P))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + mod_tap_hold_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Press mod-tap-hold key again. */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + mod_tap_hold_key.press(); + idle_for(TAPPING_TERM); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Release mod-tap-hold key. */ + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_LSHIFT))); + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())); + mod_tap_hold_key.release(); + run_one_scan_loop(); + testing::Mock::VerifyAndClearExpectations(&driver); +} diff --git a/tests/test_common/build.mk b/tests/test_common/build.mk new file mode 100644 index 000000000000..aeb30578549a --- /dev/null +++ b/tests/test_common/build.mk @@ -0,0 +1,16 @@ +# Copyright 2021 Stefan Kerkmann +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +CUSTOM_MATRIX=yes \ No newline at end of file diff --git a/tests/test_common/keyboard_report_util.cpp b/tests/test_common/keyboard_report_util.cpp index cb044c92b390..e148c76beb7e 100644 --- a/tests/test_common/keyboard_report_util.cpp +++ b/tests/test_common/keyboard_report_util.cpp @@ -24,7 +24,7 @@ std::vector<uint8_t> get_keys(const report_keyboard_t& report) { std::vector<uint8_t> result; #if defined(NKRO_ENABLE) # error NKRO support not implemented yet -#elif defined(USB_6KRO_ENABLE) +#elif defined(RING_BUFFERED_6KRO_REPORT_ENABLE) # error 6KRO support not implemented yet #else for (size_t i = 0; i < KEYBOARD_REPORT_KEYS; i++) { @@ -44,16 +44,21 @@ bool operator==(const report_keyboard_t& lhs, const report_keyboard_t& rhs) { return lhs.mods == rhs.mods && lhskeys == rhskeys; } -std::ostream& operator<<(std::ostream& stream, const report_keyboard_t& value) { - stream << "Keyboard report:" << std::endl; - stream << "Mods: " << (uint32_t)value.mods << std::endl; - stream << "Keys: "; +std::ostream& operator<<(std::ostream& stream, const report_keyboard_t& report) { + auto keys = get_keys(report); + // TODO: This should probably print friendly names for the keys - for (uint32_t k : get_keys(value)) { - stream << k << " "; + stream << "Keyboard Report: Mods (" << (uint32_t)report.mods << ") Keys ("; + + for (auto key = keys.cbegin(); key != keys.cend();) { + stream << +(*key); + key++; + if (key != keys.cend()) { + stream << ","; + } } - stream << std::endl; - return stream; + + return stream << ")" << std::endl; } KeyboardReportMatcher::KeyboardReportMatcher(const std::vector<uint8_t>& keys) { diff --git a/tests/test_common/keymap.c b/tests/test_common/keymap.c new file mode 100644 index 000000000000..fc3a56a0073f --- /dev/null +++ b/tests/test_common/keymap.c @@ -0,0 +1,33 @@ +/* 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 "quantum.h" + +// clang-format off + +const uint16_t PROGMEM + keymaps[][MATRIX_ROWS][MATRIX_COLS] = + { + [0] = + { + {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO}, + {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO}, + {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO}, + {KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO}, + }, +}; + +// clang-format on diff --git a/tests/test_common/main.cpp b/tests/test_common/main.cpp new file mode 100644 index 000000000000..3e4b4c0f9540 --- /dev/null +++ b/tests/test_common/main.cpp @@ -0,0 +1,32 @@ +#include "gtest/gtest.h" + +extern "C" { +#include "stdio.h" +#include "debug.h" + +int8_t sendchar(uint8_t c) { + fprintf(stderr, "%c", c); + return 0; +} + +__attribute__((weak)) debug_config_t debug_config = {0}; + +void init_logging(void) { + print_set_sendchar(sendchar); + + // Customise these values to desired behaviour + // debug_enable = true; + // debug_matrix = true; + // debug_keyboard = true; + // debug_mouse = true; + debug_config.raw = 0xFF; +} +} + +int main(int argc, char **argv) { + ::testing::InitGoogleTest(&argc, argv); + + init_logging(); + + return RUN_ALL_TESTS(); +} \ No newline at end of file diff --git a/tests/test_common/test_common.h b/tests/test_common/test_common.h new file mode 100644 index 000000000000..19ffcddceaec --- /dev/null +++ b/tests/test_common/test_common.h @@ -0,0 +1,4 @@ +#pragma once + +#define MATRIX_ROWS 4 +#define MATRIX_COLS 10 \ No newline at end of file diff --git a/tests/test_common/test_driver.cpp b/tests/test_common/test_driver.cpp index 84e249d838e5..2fa2b6a2e791 100644 --- a/tests/test_common/test_driver.cpp +++ b/tests/test_common/test_driver.cpp @@ -27,7 +27,10 @@ TestDriver::~TestDriver() { m_this = nullptr; } uint8_t TestDriver::keyboard_leds(void) { return m_this->m_leds; } -void TestDriver::send_keyboard(report_keyboard_t* report) { m_this->send_keyboard_mock(*report); } +void TestDriver::send_keyboard(report_keyboard_t* report) { + test_logger.trace() << *report; + m_this->send_keyboard_mock(*report); +} void TestDriver::send_mouse(report_mouse_t* report) { m_this->send_mouse_mock(*report); } diff --git a/tests/test_common/test_driver.hpp b/tests/test_common/test_driver.hpp index f86308df95e1..f9197b3634b0 100644 --- a/tests/test_common/test_driver.hpp +++ b/tests/test_common/test_driver.hpp @@ -20,25 +20,26 @@ #include <stdint.h> #include "host.h" #include "keyboard_report_util.hpp" - +#include "test_logger.hpp" class TestDriver { -public: + public: TestDriver(); ~TestDriver(); void set_leds(uint8_t leds) { m_leds = leds; } - MOCK_METHOD1(send_keyboard_mock, void (report_keyboard_t&)); - MOCK_METHOD1(send_mouse_mock, void (report_mouse_t&)); - MOCK_METHOD1(send_system_mock, void (uint16_t)); - MOCK_METHOD1(send_consumer_mock, void (uint16_t)); -private: - 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 m_driver; - uint8_t m_leds = 0; + MOCK_METHOD1(send_keyboard_mock, void(report_keyboard_t&)); + MOCK_METHOD1(send_mouse_mock, void(report_mouse_t&)); + MOCK_METHOD1(send_system_mock, void(uint16_t)); + MOCK_METHOD1(send_consumer_mock, void(uint16_t)); + + private: + 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 m_driver; + uint8_t m_leds = 0; static TestDriver* m_this; }; diff --git a/tests/test_common/test_fixture.cpp b/tests/test_common/test_fixture.cpp index 20ed838eb6a9..0601b1719137 100644 --- a/tests/test_common/test_fixture.cpp +++ b/tests/test_common/test_fixture.cpp @@ -1,46 +1,148 @@ #include "test_fixture.hpp" +#include <algorithm> +#include <cstdint> +#include <cstdio> +#include <cstdlib> +#include "gmock/gmock-cardinalities.h" #include "gmock/gmock.h" +#include "gtest/gtest.h" +#include "keyboard_report_util.hpp" +#include "keycode.h" #include "test_driver.hpp" +#include "test_logger.hpp" #include "test_matrix.h" -#include "keyboard.h" -#include "action.h" -#include "action_tapping.h" +#include "test_keymap_key.hpp" extern "C" { +#include "action.h" +#include "action_tapping.h" +#include "action_util.h" #include "action_layer.h" -} +#include "debug.h" +#include "eeconfig.h" +#include "keyboard.h" +#include "keymap.h" -extern "C" { void set_time(uint32_t t); void advance_time(uint32_t ms); } using testing::_; -using testing::AnyNumber; -using testing::Between; -using testing::Return; + +/* This is used for dynamic dispatching keymap_key_to_keycode calls to the current active test_fixture. */ +TestFixture* TestFixture::m_this = nullptr; + +/* Override weak QMK function to allow the usage of isolated per-test keymaps in unit-tests. + * The actual call is dynamicaly dispatched to the current active test fixture, which in turn has it's own keymap. */ +extern "C" uint16_t keymap_key_to_keycode(uint8_t layer, keypos_t position) { + uint16_t keycode; + TestFixture::m_this->get_keycode(layer, position, &keycode); + return keycode; +} void TestFixture::SetUpTestCase() { + test_logger.info() << "TestFixture setup-up start." << std::endl; + + // The following is enough to bootstrap the values set in main + eeconfig_init_quantum(); + eeconfig_update_debug(debug_config.raw); + TestDriver driver; EXPECT_CALL(driver, send_keyboard_mock(_)); keyboard_init(); + + test_logger.info() << "TestFixture setup-up end." << std::endl; } void TestFixture::TearDownTestCase() {} -TestFixture::TestFixture() {} +TestFixture::TestFixture() { m_this = this; } TestFixture::~TestFixture() { + test_logger.info() << "TestFixture clean-up start." << std::endl; TestDriver driver; - // Run for a while to make sure all keys are completely released - EXPECT_CALL(driver, send_keyboard_mock(_)).Times(AnyNumber()); - layer_clear(); + + EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(2); + + /* Reset keyboard state. */ clear_all_keys(); - idle_for(TAPPING_TERM + 10); + + clear_keyboard(); + + clear_oneshot_mods(); + clear_oneshot_locked_mods(); + reset_oneshot_layer(); + + layer_clear(); + +#if defined(SWAP_HANDS_ENABLE) + clear_oneshot_swaphands(); +#endif + + idle_for(TAPPING_TERM * 10); + testing::Mock::VerifyAndClearExpectations(&driver); + + /* Verify that the matrix really is cleared */ + EXPECT_CALL(driver, send_keyboard_mock(_)).Times(0); + idle_for(TAPPING_TERM * 10); testing::Mock::VerifyAndClearExpectations(&driver); - // Verify that the matrix really is cleared - EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(0); - idle_for(TAPPING_TERM + 10); + + m_this = nullptr; + + test_logger.info() << "TestFixture clean-up end." << std::endl; + + print_test_log(); +} + +void TestFixture::add_key(KeymapKey key) { + if (this->find_key(key.layer, key.position)) { + FAIL() << "Key is already mapped for layer " << +key.layer << " and (column,row) (" << +key.position.col << "," << +key.position.row << ")"; + } + + this->keymap.push_back(key); +} + +void TestFixture::set_keymap(std::initializer_list<KeymapKey> keys) { + this->keymap.clear(); + for (auto& key : keys) { + add_key(key); + } +} + +const KeymapKey* TestFixture::find_key(layer_t layer, keypos_t position) const { + auto keymap_key_predicate = [&](KeymapKey candidate) { return candidate.layer == layer && candidate.position.col == position.col && candidate.position.row == position.row; }; + + auto result = std::find_if(this->keymap.begin(), this->keymap.end(), keymap_key_predicate); + + if (result != std::end(this->keymap)) { + return &(*result); + } + return nullptr; +} + +void TestFixture::get_keycode(const layer_t layer, const keypos_t position, uint16_t* result) const { + bool key_is_out_of_bounds = position.col >= MATRIX_COLS && position.row >= MATRIX_ROWS; + + if (key_is_out_of_bounds) { + /* See if this is done in hardware as well, because this is 100% out of bounds reads on all QMK keebs out there. */ + auto msg = [&]() { + std::stringstream msg; + msg << "Keycode for position (" << +position.col << "," << +position.row << ") requested! This is out of bounds." << std::endl; + return msg.str(); + }(); + + *result = KC_NO; + test_logger.error() << msg; + EXPECT_FALSE(key_is_out_of_bounds) << msg; + return; + } + + if (auto key = this->find_key(layer, position)) { + *result = key->code; + return; + } + + FAIL() << "No key is mapped for layer " << +layer << " and (column,row) " << +position.col << "," << +position.row << ")"; } void TestFixture::run_one_scan_loop() { @@ -53,3 +155,17 @@ void TestFixture::idle_for(unsigned time) { run_one_scan_loop(); } } + +void TestFixture::print_test_log() const { + const ::testing::TestInfo* const test_info = ::testing::UnitTest::GetInstance()->current_test_info(); + if (HasFailure()) { + std::cerr << test_info->test_case_name() << "." << test_info->name() << " failed!" << std::endl; + test_logger.print_log(); + } + test_logger.reset(); +} + +void TestFixture::expect_layer_state(layer_t layer_state) const { + test_logger.trace() << "Layer state: (" << +layer_state << ") Highest layer bit: (" << +get_highest_layer(layer_state) << ")" << std::endl; + EXPECT_TRUE(layer_state_is(layer_state)); +} diff --git a/tests/test_common/test_fixture.hpp b/tests/test_common/test_fixture.hpp index 340503665b67..73b5d8d3e8e5 100644 --- a/tests/test_common/test_fixture.hpp +++ b/tests/test_common/test_fixture.hpp @@ -16,15 +16,34 @@ #pragma once +#include <cstdint> +#include <unordered_map> +#include <optional> #include "gtest/gtest.h" +#include "keyboard.h" +#include "test_keymap_key.hpp" class TestFixture : public testing::Test { -public: + public: + static TestFixture* m_this; + TestFixture(); ~TestFixture(); static void SetUpTestCase(); static void TearDownTestCase(); + void set_keymap(std::initializer_list<KeymapKey> keycodes); + void add_key(const KeymapKey key); + + const KeymapKey* find_key(const layer_t layer_t, const keypos_t position) const; + void get_keycode(const layer_t layer, const keypos_t position, uint16_t* result) const; + void run_one_scan_loop(); void idle_for(unsigned ms); + + void expect_layer_state(layer_t layer) const; + + protected: + void print_test_log() const; + std::vector<KeymapKey> keymap; }; diff --git a/tests/test_common/test_keymap_key.cpp b/tests/test_common/test_keymap_key.cpp new file mode 100644 index 000000000000..878ae097bfa2 --- /dev/null +++ b/tests/test_common/test_keymap_key.cpp @@ -0,0 +1,30 @@ +/* Copyright 2021 Stefan Kerkmann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "test_keymap_key.hpp" +#include "test_logger.hpp" +#include "gtest/gtest-message.h" +#include "gtest/gtest.h" + +void KeymapKey::press() { + test_logger.trace() << "Key pressed: (" << +this->position.col << "," << +this->position.row << ")" << std::endl; + press_key(this->position.col, this->position.row); +} + +void KeymapKey::release() { + test_logger.trace() << "Key released: (" << +this->position.col << "," << +this->position.row << ")" << std::endl; + release_key(this->position.col, this->position.row); +} \ No newline at end of file diff --git a/tests/test_common/test_keymap_key.hpp b/tests/test_common/test_keymap_key.hpp new file mode 100644 index 000000000000..7861cb4a324e --- /dev/null +++ b/tests/test_common/test_keymap_key.hpp @@ -0,0 +1,46 @@ +/* Copyright 2021 Stefan Kerkmann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#pragma once + +extern "C" { +#include "keyboard.h" +#include "test_matrix.h" +} + +#include <cassert> + +typedef uint8_t layer_t; + +struct KeymapKey { + KeymapKey(layer_t layer, uint8_t col, uint8_t row, uint16_t keycode) : layer(layer), position({.col = col, .row = row}), code(keycode), report_code(keycode) { validate(); } + KeymapKey(layer_t layer, uint8_t col, uint8_t row, uint16_t keycode, uint16_t report_code) : layer(layer), position({.col = col, .row = row}), code(keycode), report_code(report_code) { validate(); } + + void press(); + void release(); + + const layer_t layer; + const keypos_t position; + const uint16_t code; + /* Sometimes the keycode does not match the code that is send in the usb report, so we provide it here. */ + const uint16_t report_code; + + private: + void validate() { + assert(position.col <= MATRIX_COLS); + assert(position.row <= MATRIX_ROWS); + } +}; \ No newline at end of file diff --git a/tests/test_common/test_logger.cpp b/tests/test_common/test_logger.cpp new file mode 100644 index 000000000000..959fdde5ec56 --- /dev/null +++ b/tests/test_common/test_logger.cpp @@ -0,0 +1,39 @@ +/* Copyright 2021 Stefan Kerkmann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 <iostream> +#include "test_logger.hpp" + +TestLogger test_logger; + +TestLogger& TestLogger::info() { + *this << "[ INFO ] "; + return *this; +} + +TestLogger& TestLogger::trace() { + *this << "[ TRACE ] "; + return *this; +} + +TestLogger& TestLogger::error() { + *this << "[ ERROR ] "; + return *this; +} + +void TestLogger::reset() { this->m_log.str(""); }; + +void TestLogger::print_log() { std::cerr << this->m_log.str(); } diff --git a/tests/test_common/test_logger.hpp b/tests/test_common/test_logger.hpp new file mode 100644 index 000000000000..348af7fab860 --- /dev/null +++ b/tests/test_common/test_logger.hpp @@ -0,0 +1,35 @@ +/* Copyright 2021 Stefan Kerkmann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should 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 <ostream> +#include <sstream> + +class TestLogger : public std::ostream { + public: + TestLogger() : std::ostream(&m_log){}; + TestLogger& info(); + TestLogger& trace(); + TestLogger& error(); + void print_log(); + void reset(); + + private: + std::stringbuf m_log; +}; + +extern TestLogger test_logger; \ No newline at end of file diff --git a/tmk_core/arm_atsam.mk b/tmk_core/arm_atsam.mk deleted file mode 100644 index e4bf60e1af7e..000000000000 --- a/tmk_core/arm_atsam.mk +++ /dev/null @@ -1,63 +0,0 @@ -# Hey Emacs, this is a -*- makefile -*- -############################################################################## -# Compiler settings -# -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) -R .eeprom -R .fuse -R .lock -R .signature -EEP = $(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O $(FORMAT) -BIN = - -COMMON_VPATH += $(LIB_PATH)/arm_atsam/packs/atmel/SAMD51_DFP/1.0.70/include -COMMON_VPATH += $(LIB_PATH)/arm_atsam/packs/arm/cmsis/5.0.1/CMSIS/Include - -COMPILEFLAGS += -funsigned-char -COMPILEFLAGS += -funsigned-bitfields -COMPILEFLAGS += -ffunction-sections -COMPILEFLAGS += -fshort-enums -COMPILEFLAGS += -fno-inline-small-functions -COMPILEFLAGS += -fno-strict-aliasing -COMPILEFLAGS += -mfloat-abi=hard -COMPILEFLAGS += -mfpu=fpv4-sp-d16 -COMPILEFLAGS += -mthumb - -#ALLOW_WARNINGS = yes - -CFLAGS += $(COMPILEFLAGS) - -CXXFLAGS += $(COMPILEFLAGS) -CXXFLAGS += -fno-exceptions -std=c++11 - -LDFLAGS +=-Wl,--gc-sections -LDFLAGS += -Wl,-Map="%OUT%%PROJ_NAME%.map" -LDFLAGS += -Wl,--start-group -LDFLAGS += -Wl,--end-group -LDFLAGS += --specs=rdimon.specs -LDFLAGS += -T$(LIB_PATH)/arm_atsam/packs/atmel/SAMD51_DFP/1.0.70/gcc/gcc/samd51j18a_flash.ld - -OPT_DEFS += -DPROTOCOL_ARM_ATSAM - -MCUFLAGS = -mcpu=$(MCU) -MCUFLAGS += -D__$(ARM_ATSAM)__ - -# List any extra directories to look for libraries here. -# Each directory must be seperated by a space. -# Use forward slashes for directory separators. -# For a directory that has spaces, enclose it in quotes. -EXTRALIBDIRS = - -# Convert hex to bin. -bin: $(BUILD_DIR)/$(TARGET).hex - $(OBJCOPY) -Iihex -Obinary $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).bin - $(COPY) $(BUILD_DIR)/$(TARGET).bin $(TARGET).bin; - -flash: bin -ifneq ($(strip $(PROGRAM_CMD)),) - $(PROGRAM_CMD) -else - $(PRINT_OK); $(SILENT) || printf "$(MSG_FLASH_ARCH)" -endif diff --git a/tmk_core/avr.mk b/tmk_core/avr.mk deleted file mode 100644 index eb934ffe6057..000000000000 --- a/tmk_core/avr.mk +++ /dev/null @@ -1,333 +0,0 @@ -# Hey Emacs, this is a -*- makefile -*- -############################################################################## -# Compiler settings -# -CC = avr-gcc -OBJCOPY = avr-objcopy -OBJDUMP = avr-objdump -SIZE = avr-size -AR = avr-ar -NM = avr-nm -HEX = $(OBJCOPY) -O $(FORMAT) -R .eeprom -R .fuse -R .lock -R .signature -EEP = $(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O $(FORMAT) -BIN = - -COMMON_VPATH += $(DRIVER_PATH)/avr - -COMPILEFLAGS += -funsigned-char -COMPILEFLAGS += -funsigned-bitfields -COMPILEFLAGS += -ffunction-sections -COMPILEFLAGS += -fdata-sections -COMPILEFLAGS += -fpack-struct -COMPILEFLAGS += -fshort-enums - -ASFLAGS += $(AVR_ASFLAGS) - -CFLAGS += $(COMPILEFLAGS) $(AVR_CFLAGS) -CFLAGS += -fno-inline-small-functions -CFLAGS += -fno-strict-aliasing - -CXXFLAGS += $(COMPILEFLAGS) -CXXFLAGS += -fno-exceptions -std=c++11 - -LDFLAGS +=-Wl,--gc-sections - -OPT_DEFS += -DF_CPU=$(F_CPU)UL - -MCUFLAGS = -mmcu=$(MCU) - -# List any extra directories to look for libraries here. -# Each directory must be seperated by a space. -# Use forward slashes for directory separators. -# For a directory that has spaces, enclose it in quotes. -EXTRALIBDIRS = - - -#---------------- External Memory Options ---------------- - -# 64 KB of external RAM, starting after internal RAM (ATmega128!), -# used for variables (.data/.bss) and heap (malloc()). -#EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff - -# 64 KB of external RAM, starting after internal RAM (ATmega128!), -# only used for heap (malloc()). -#EXTMEMOPTS = -Wl,--section-start,.data=0x801100,--defsym=__heap_end=0x80ffff - -EXTMEMOPTS = - -#---------------- Debugging Options ---------------- - -# Debugging format. -# Native formats for AVR-GCC's -g are dwarf-2 [default] or stabs. -# AVR Studio 4.10 requires dwarf-2. -# AVR [Extended] COFF format requires stabs, plus an avr-objcopy run. -DEBUG = dwarf-2 - -# For simulavr only - target MCU frequency. -DEBUG_MFREQ = $(F_CPU) - -# Set the DEBUG_UI to either gdb or insight. -# DEBUG_UI = gdb -DEBUG_UI = insight - -# Set the debugging back-end to either avarice, simulavr. -DEBUG_BACKEND = avarice -#DEBUG_BACKEND = simulavr - -# GDB Init Filename. -GDBINIT_FILE = __avr_gdbinit - -# When using avarice settings for the JTAG -JTAG_DEV = /dev/com1 - -# Debugging port used to communicate between GDB / avarice / simulavr. -DEBUG_PORT = 4242 - -# Debugging host used to communicate between GDB / avarice / simulavr, normally -# just set to localhost unless doing some sort of crazy debugging when -# avarice is running on a different computer. -DEBUG_HOST = localhost - -#============================================================================ -# Autodetect teensy loader -ifndef TEENSY_LOADER_CLI - ifneq (, $(shell which teensy-loader-cli 2>/dev/null)) - TEENSY_LOADER_CLI ?= teensy-loader-cli - else - TEENSY_LOADER_CLI ?= teensy_loader_cli - endif -endif - -define EXEC_TEENSY - $(TEENSY_LOADER_CLI) -mmcu=$(MCU) -w -v $(BUILD_DIR)/$(TARGET).hex -endef - -teensy: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware - $(call EXEC_TEENSY) - -DFU_PROGRAMMER ?= dfu-programmer -GREP ?= grep - - -define EXEC_DFU - if [ "$(1)" ]; then \ - echo "Flashing '$(1)' for EE_HANDS split keyboard support." ;\ - fi; \ - if ! $(DFU_PROGRAMMER) $(MCU) get bootloader-version >/dev/null 2>/dev/null; then\ - printf "$(MSG_BOOTLOADER_NOT_FOUND_QUICK_RETRY)" ;\ - sleep $(BOOTLOADER_RETRY_TIME) ;\ - while ! $(DFU_PROGRAMMER) $(MCU) get bootloader-version >/dev/null 2>/dev/null; do\ - printf "." ;\ - sleep $(BOOTLOADER_RETRY_TIME) ;\ - done ;\ - printf "\n" ;\ - fi; \ - $(DFU_PROGRAMMER) $(MCU) get bootloader-version ;\ - if $(DFU_PROGRAMMER) --version 2>&1 | $(GREP) -q 0.7 ; then\ - $(DFU_PROGRAMMER) $(MCU) erase --force; \ - if [ "$(1)" ]; then \ - $(DFU_PROGRAMMER) $(MCU) flash --force --eeprom $(QUANTUM_PATH)/split_common/$(1);\ - fi; \ - $(DFU_PROGRAMMER) $(MCU) flash --force $(BUILD_DIR)/$(TARGET).hex;\ - else \ - $(DFU_PROGRAMMER) $(MCU) erase; \ - if [ "$(1)" ]; then \ - $(DFU_PROGRAMMER) $(MCU) flash-eeprom $(QUANTUM_PATH)/split_common/$(1);\ - fi; \ - $(DFU_PROGRAMMER) $(MCU) flash $(BUILD_DIR)/$(TARGET).hex;\ - fi; \ - $(DFU_PROGRAMMER) $(MCU) reset -endef - -dfu: $(BUILD_DIR)/$(TARGET).hex cpfirmware check-size - $(call EXEC_DFU) - -dfu-start: - $(DFU_PROGRAMMER) $(MCU) reset - $(DFU_PROGRAMMER) $(MCU) start - -dfu-ee: $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).eep - if $(DFU_PROGRAMMER) --version 2>&1 | $(GREP) -q 0.7 ; then\ - $(DFU_PROGRAMMER) $(MCU) flash --force --eeprom $(BUILD_DIR)/$(TARGET).eep;\ - else\ - $(DFU_PROGRAMMER) $(MCU) flash-eeprom $(BUILD_DIR)/$(TARGET).eep;\ - fi - $(DFU_PROGRAMMER) $(MCU) reset - -dfu-split-left: $(BUILD_DIR)/$(TARGET).hex cpfirmware check-size - $(call EXEC_DFU,eeprom-lefthand.eep) - -dfu-split-right: $(BUILD_DIR)/$(TARGET).hex cpfirmware check-size - $(call EXEC_DFU,eeprom-righthand.eep) - -AVRDUDE_PROGRAMMER ?= avrdude - -define EXEC_AVRDUDE - list_devices() { \ - if $(GREP) -q -s icrosoft /proc/version; then \ - wmic.exe path Win32_SerialPort get DeviceID 2>/dev/null | LANG=C perl -pne 's/COM(\d+)/COM.($$1-1)/e' | sed 's!COM!/dev/ttyS!' | xargs echo -n | sort; \ - elif [ "`uname`" = "FreeBSD" ]; then \ - ls /dev/tty* | grep -v '\.lock$$' | grep -v '\.init$$'; \ - else \ - ls /dev/tty*; \ - fi; \ - }; \ - USB= ;\ - printf "Detecting USB port, reset your controller now."; \ - TMP1=`mktemp`; \ - TMP2=`mktemp`; \ - list_devices > $$TMP1; \ - while [ -z "$$USB" ]; do \ - sleep $(BOOTLOADER_RETRY_TIME); \ - printf "."; \ - list_devices > $$TMP2; \ - USB=`comm -13 $$TMP1 $$TMP2 | $(GREP) -o '/dev/tty.*'`; \ - mv $$TMP2 $$TMP1; \ - done; \ - rm $$TMP1; \ - echo ""; \ - echo "Device $$USB has appeared; assuming it is the controller."; \ - if $(GREP) -q -s 'MINGW\|MSYS\|icrosoft' /proc/version; then \ - USB=`echo "$$USB" | LANG=C perl -pne 's/\/dev\/ttyS(\d+)/COM.($$1+1)/e'`; \ - echo "Remapped USB port to $$USB"; \ - sleep 1; \ - else \ - printf "Waiting for $$USB to become writable."; \ - while [ ! -w "$$USB" ]; do sleep $(BOOTLOADER_RETRY_TIME); printf "."; done; echo ""; \ - fi; \ - if [ -z "$(1)" ]; then \ - $(AVRDUDE_PROGRAMMER) -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex; \ - else \ - $(AVRDUDE_PROGRAMMER) -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex -U eeprom:w:$(QUANTUM_PATH)/split_common/$(1); \ - fi -endef - -avrdude: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware - $(call EXEC_AVRDUDE) - -avrdude-loop: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware - while true; do \ - $(call EXEC_AVRDUDE) ; \ - done - -avrdude-split-left: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware - $(call EXEC_AVRDUDE,eeprom-lefthand.eep) - -avrdude-split-right: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware - $(call EXEC_AVRDUDE,eeprom-righthand.eep) - -define EXEC_USBASP - $(AVRDUDE_PROGRAMMER) -p $(AVRDUDE_MCU) -c usbasp -U flash:w:$(BUILD_DIR)/$(TARGET).hex -endef - -usbasp: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware - $(call EXEC_USBASP) - -BOOTLOADHID_PROGRAMMER ?= bootloadHID - -define EXEC_BOOTLOADHID - # bootloadHid executable has no cross platform detect methods - # so keep running bootloadHid if the output contains "The specified device was not found" - until $(BOOTLOADHID_PROGRAMMER) -r $(BUILD_DIR)/$(TARGET).hex 2>&1 | tee /dev/stderr | grep -v "device was not found"; do\ - printf "$(MSG_BOOTLOADER_NOT_FOUND)" ;\ - sleep 5 ;\ - done -endef - -bootloadHID: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware - $(call EXEC_BOOTLOADHID) - -# Convert hex to bin. -bin: $(BUILD_DIR)/$(TARGET).hex - $(OBJCOPY) -Iihex -Obinary $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).bin - $(COPY) $(BUILD_DIR)/$(TARGET).bin $(TARGET).bin; - -# copy bin to FLASH.bin -flashbin: bin - $(COPY) $(BUILD_DIR)/$(TARGET).bin FLASH.bin; - -# Generate avr-gdb config/init file which does the following: -# define the reset signal, load the target file, connect to target, and set -# a breakpoint at main(). -gdb-config: - @$(REMOVE) $(GDBINIT_FILE) - @echo define reset >> $(GDBINIT_FILE) - @echo SIGNAL SIGHUP >> $(GDBINIT_FILE) - @echo end >> $(GDBINIT_FILE) - @echo file $(BUILD_DIR)/$(TARGET).elf >> $(GDBINIT_FILE) - @echo target remote $(DEBUG_HOST):$(DEBUG_PORT) >> $(GDBINIT_FILE) -ifeq ($(DEBUG_BACKEND),simulavr) - @echo load >> $(GDBINIT_FILE) -endif - @echo break main >> $(GDBINIT_FILE) - -debug: gdb-config $(BUILD_DIR)/$(TARGET).elf -ifeq ($(DEBUG_BACKEND), avarice) - @echo Starting AVaRICE - Press enter when "waiting to connect" message displays. - @$(WINSHELL) /c start avarice --jtag $(JTAG_DEV) --erase --program --file \ - $(BUILD_DIR)/$(TARGET).elf $(DEBUG_HOST):$(DEBUG_PORT) - @$(WINSHELL) /c pause - -else - @$(WINSHELL) /c start simulavr --gdbserver --device $(MCU) --clock-freq \ - $(DEBUG_MFREQ) --port $(DEBUG_PORT) -endif - @$(WINSHELL) /c start avr-$(DEBUG_UI) --command=$(GDBINIT_FILE) - - - - -# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB. -COFFCONVERT = $(OBJCOPY) --debugging -COFFCONVERT += --change-section-address .data-0x800000 -COFFCONVERT += --change-section-address .bss-0x800000 -COFFCONVERT += --change-section-address .noinit-0x800000 -COFFCONVERT += --change-section-address .eeprom-0x810000 - - - -coff: $(BUILD_DIR)/$(TARGET).elf - @$(SECHO) $(MSG_COFF) $(BUILD_DIR)/$(TARGET).cof - $(COFFCONVERT) -O coff-avr $< $(BUILD_DIR)/$(TARGET).cof - - -extcoff: $(BUILD_DIR)/$(TARGET).elf - @$(SECHO) $(MSG_EXTENDED_COFF) $(BUILD_DIR)/$(TARGET).cof - $(COFFCONVERT) -O coff-ext-avr $< $(BUILD_DIR)/$(TARGET).cof - -bootloader: -ifneq ($(strip $(BOOTLOADER)), qmk-dfu) - $(error Please set BOOTLOADER = qmk-dfu first!) -endif - make -C lib/lufa/Bootloaders/DFU/ clean - $(QMK_BIN) generate-dfu-header --quiet --keyboard $(KEYBOARD) --output lib/lufa/Bootloaders/DFU/Keyboard.h - $(eval MAX_SIZE=$(shell n=`$(CC) -E -mmcu=$(MCU) $(CFLAGS) $(OPT_DEFS) tmk_core/common/avr/bootloader_size.c 2> /dev/null | sed -ne 's/\r//;/^#/n;/^AVR_SIZE:/,$${s/^AVR_SIZE: //;p;}'` && echo $$(($$n)) || echo 0)) - $(eval PROGRAM_SIZE_KB=$(shell n=`expr $(MAX_SIZE) / 1024` && echo $$(($$n)) || echo 0)) - $(eval BOOT_SECTION_SIZE_KB=$(shell n=`expr $(BOOTLOADER_SIZE) / 1024` && echo $$(($$n)) || echo 0)) - $(eval FLASH_SIZE_KB=$(shell n=`expr $(PROGRAM_SIZE_KB) + $(BOOT_SECTION_SIZE_KB)` && echo $$(($$n)) || echo 0)) - make -C lib/lufa/Bootloaders/DFU/ MCU=$(MCU) ARCH=$(ARCH) F_CPU=$(F_CPU) FLASH_SIZE_KB=$(FLASH_SIZE_KB) BOOT_SECTION_SIZE_KB=$(BOOT_SECTION_SIZE_KB) - printf "BootloaderDFU.hex copied to $(TARGET)_bootloader.hex\n" - cp lib/lufa/Bootloaders/DFU/BootloaderDFU.hex $(TARGET)_bootloader.hex - -production: $(BUILD_DIR)/$(TARGET).hex bootloader cpfirmware - @cat $(BUILD_DIR)/$(TARGET).hex | awk '/^:00000001FF/ == 0' > $(TARGET)_production.hex - @cat $(TARGET)_bootloader.hex >> $(TARGET)_production.hex - echo "File sizes:" - $(SIZE) $(TARGET).hex $(TARGET)_bootloader.hex $(TARGET)_production.hex - -flash: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware -ifneq ($(strip $(PROGRAM_CMD)),) - $(PROGRAM_CMD) -else ifeq ($(strip $(BOOTLOADER)), caterina) - $(call EXEC_AVRDUDE) -else ifeq ($(strip $(BOOTLOADER)), halfkay) - $(call EXEC_TEENSY) -else ifeq (dfu,$(findstring dfu,$(BOOTLOADER))) - $(call EXEC_DFU) -else ifeq ($(strip $(BOOTLOADER)), USBasp) - $(call EXEC_USBASP) -else ifeq ($(strip $(BOOTLOADER)), bootloadHID) - $(call EXEC_BOOTLOADHID) -else - $(PRINT_OK); $(SILENT) || printf "$(MSG_FLASH_BOOTLOADER)" -endif diff --git a/tmk_core/chibios.mk b/tmk_core/chibios.mk deleted file mode 100644 index 97299b7d324e..000000000000 --- a/tmk_core/chibios.mk +++ /dev/null @@ -1,415 +0,0 @@ -# Hey Emacs, this is a -*- makefile -*- -############################################################################## -# Architecture or project specific options -# - -# Stack size to be allocated to the Cortex-M process stack. This stack is -# the stack used by the main() thread. -ifeq ($(USE_PROCESS_STACKSIZE),) - USE_PROCESS_STACKSIZE = 0x800 -endif - -# Stack size to the allocated to the Cortex-M main/exceptions stack. This -# stack is used for processing interrupts and exceptions. -ifeq ($(USE_EXCEPTIONS_STACKSIZE),) - USE_EXCEPTIONS_STACKSIZE = 0x400 -endif - -# -# Architecture or project specific options -############################################################################## - -############################################################################## -# Project, sources and paths -# - -# Imported source files and paths -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 -endif -include $(STARTUP_MK) -# 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) - -BOARD_MK := - -ifneq ("$(wildcard $(KEYBOARD_PATH_5)/boards/$(BOARD)/board.mk)","") - BOARD_PATH = $(KEYBOARD_PATH_5) - BOARD_MK += $(KEYBOARD_PATH_5)/boards/$(BOARD)/board.mk -else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/boards/$(BOARD)/board.mk)","") - BOARD_PATH = $(KEYBOARD_PATH_4) - BOARD_MK += $(KEYBOARD_PATH_4)/boards/$(BOARD)/board.mk -else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/boards/$(BOARD)/board.mk)","") - BOARD_PATH = $(KEYBOARD_PATH_3) - BOARD_MK += $(KEYBOARD_PATH_3)/boards/$(BOARD)/board.mk -else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/boards/$(BOARD)/board.mk)","") - BOARD_PATH = $(KEYBOARD_PATH_2) - BOARD_MK += $(KEYBOARD_PATH_2)/boards/$(BOARD)/board.mk -else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/boards/$(BOARD)/board.mk)","") - BOARD_PATH = $(KEYBOARD_PATH_1) - BOARD_MK += $(KEYBOARD_PATH_1)/boards/$(BOARD)/board.mk -else ifneq ("$(wildcard $(TOP_DIR)/platforms/chibios/$(BOARD)/board/board.mk)","") - BOARD_PATH = $(TOP_DIR)/platforms/chibios/$(BOARD) - BOARD_MK += $(TOP_DIR)/platforms/chibios/$(BOARD)/board/board.mk - KEYBOARD_PATHS += $(BOARD_PATH)/configs - ifneq ("$(wildcard $(BOARD_PATH)/rules.mk)","") - include $(BOARD_PATH)/rules.mk - endif -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 -endif - -# Bootloader address -ifdef STM32_BOOTLOADER_ADDRESS - OPT_DEFS += -DSTM32_BOOTLOADER_ADDRESS=$(STM32_BOOTLOADER_ADDRESS) -endif - -# Work out if we need to set up the include for the bootloader definitions -ifneq ("$(wildcard $(KEYBOARD_PATH_5)/bootloader_defs.h)","") - OPT_DEFS += -include $(KEYBOARD_PATH_5)/bootloader_defs.h -else ifneq ("$(wildcard $(KEYBOARD_PATH_5)/boards/$(BOARD)/bootloader_defs.h)","") - OPT_DEFS += -include $(KEYBOARD_PATH_5)/boards/$(BOARD)/bootloader_defs.h -else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/bootloader_defs.h)","") - OPT_DEFS += -include $(KEYBOARD_PATH_4)/bootloader_defs.h -else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/boards/$(BOARD)/bootloader_defs.h)","") - OPT_DEFS += -include $(KEYBOARD_PATH_4)/boards/$(BOARD)/bootloader_defs.h -else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/bootloader_defs.h)","") - OPT_DEFS += -include $(KEYBOARD_PATH_3)/bootloader_defs.h -else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/boards/$(BOARD)/bootloader_defs.h)","") - OPT_DEFS += -include $(KEYBOARD_PATH_3)/boards/$(BOARD)/bootloader_defs.h -else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/bootloader_defs.h)","") - OPT_DEFS += -include $(KEYBOARD_PATH_2)/bootloader_defs.h -else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/boards/$(BOARD)/bootloader_defs.h)","") - OPT_DEFS += -include $(KEYBOARD_PATH_2)/boards/$(BOARD)/bootloader_defs.h -else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/bootloader_defs.h)","") - OPT_DEFS += -include $(KEYBOARD_PATH_1)/bootloader_defs.h -else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/boards/$(BOARD)/bootloader_defs.h)","") - OPT_DEFS += -include $(KEYBOARD_PATH_1)/boards/$(BOARD)/bootloader_defs.h -else ifneq ("$(wildcard $(BOARD_PATH)/configs/bootloader_defs.h)","") - OPT_DEFS += -include $(BOARD_PATH)/configs/bootloader_defs.h -endif - -# Work out the config file directories -ifneq ("$(wildcard $(KEYBOARD_PATH_5)/chconf.h)","") - CHCONFDIR = $(KEYBOARD_PATH_5) -else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/chconf.h)","") - CHCONFDIR = $(KEYBOARD_PATH_4) -else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/chconf.h)","") - CHCONFDIR = $(KEYBOARD_PATH_3) -else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/chconf.h)","") - CHCONFDIR = $(KEYBOARD_PATH_2) -else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/chconf.h)","") - CHCONFDIR = $(KEYBOARD_PATH_1) -else ifneq ("$(wildcard $(TOP_DIR)/platforms/chibios/$(BOARD)/configs/chconf.h)","") - CHCONFDIR = $(TOP_DIR)/platforms/chibios/$(BOARD)/configs -else ifneq ("$(wildcard $(TOP_DIR)/platforms/chibios/common/configs/chconf.h)","") - CHCONFDIR = $(TOP_DIR)/platforms/chibios/common/configs -endif - -ifneq ("$(wildcard $(KEYBOARD_PATH_5)/halconf.h)","") - HALCONFDIR = $(KEYBOARD_PATH_5) -else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/halconf.h)","") - HALCONFDIR = $(KEYBOARD_PATH_4) -else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/halconf.h)","") - HALCONFDIR = $(KEYBOARD_PATH_3) -else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/halconf.h)","") - HALCONFDIR = $(KEYBOARD_PATH_2) -else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/halconf.h)","") - HALCONFDIR = $(KEYBOARD_PATH_1) -else ifneq ("$(wildcard $(TOP_DIR)/platforms/chibios/$(BOARD)/configs/halconf.h)","") - HALCONFDIR = $(TOP_DIR)/platforms/chibios/$(BOARD)/configs -else ifneq ("$(wildcard $(TOP_DIR)/platforms/chibios/common/configs/halconf.h)","") - HALCONFDIR = $(TOP_DIR)/platforms/chibios/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 - -# 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)","") - LDSCRIPT = $(KEYBOARD_PATH_4)/ld/$(MCU_LDSCRIPT).ld -else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/ld/$(MCU_LDSCRIPT).ld)","") - LDSCRIPT = $(KEYBOARD_PATH_3)/ld/$(MCU_LDSCRIPT).ld -else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/ld/$(MCU_LDSCRIPT).ld)","") - LDSCRIPT = $(KEYBOARD_PATH_2)/ld/$(MCU_LDSCRIPT).ld -else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/ld/$(MCU_LDSCRIPT).ld)","") - LDSCRIPT = $(KEYBOARD_PATH_1)/ld/$(MCU_LDSCRIPT).ld -else ifneq ("$(wildcard $(TOP_DIR)/platforms/chibios/$(BOARD)/ld/$(MCU_LDSCRIPT).ld)","") - LDSCRIPT = $(TOP_DIR)/platforms/chibios/$(BOARD)/ld/$(MCU_LDSCRIPT).ld -else ifneq ("$(wildcard $(TOP_DIR)/platforms/chibios/common/ld/$(MCU_LDSCRIPT).ld)","") - LDSCRIPT = $(TOP_DIR)/platforms/chibios/common/ld/$(MCU_LDSCRIPT).ld -else ifneq ("$(wildcard $(STARTUPLD_CONTRIB)/$(MCU_LDSCRIPT).ld)","") - LDSCRIPT = $(STARTUPLD_CONTRIB)/$(MCU_LDSCRIPT).ld - USE_CHIBIOS_CONTRIB = yes -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 - -# 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)) - -EXTRAINCDIRS += $(CHIBIOS)/os/license $(CHIBIOS)/os/oslib/include \ - $(TOP_DIR)/platforms/chibios/$(BOARD)/configs \ - $(TOP_DIR)/platforms/chibios/common/configs \ - $(HALCONFDIR) $(CHCONFDIR) \ - $(STARTUPINC) $(KERNINC) $(PORTINC) $(OSALINC) \ - $(HALINC) $(PLATFORMINC) $(BOARDINC) $(TESTINC) \ - $(STREAMSINC) $(CHIBIOS)/os/various $(COMMON_VPATH) - -# -# ChibiOS-Contrib -############################################################################## - -# Work out if we're using ChibiOS-Contrib by checking if halconf_community.h exists -ifneq ("$(wildcard $(KEYBOARD_PATH_5)/halconf_community.h)","") - USE_CHIBIOS_CONTRIB = yes -else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/halconf_community.h)","") - USE_CHIBIOS_CONTRIB = yes -else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/halconf_community.h)","") - USE_CHIBIOS_CONTRIB = yes -else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/halconf_community.h)","") - USE_CHIBIOS_CONTRIB = yes -else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/halconf_community.h)","") - USE_CHIBIOS_CONTRIB = yes -else ifneq ("$(wildcard $(TOP_DIR)/platforms/chibios/$(BOARD)/configs/halconf_community.h)","") - USE_CHIBIOS_CONTRIB = yes -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 -endif - -# -# Project, sources and paths -############################################################################## - -############################################################################## -# Injected configs -# -ifneq ("$(wildcard $(BOARD_PATH)/configs/config.h)","") - CONFIG_H += $(BOARD_PATH)/configs/config.h -endif -ifneq ("$(wildcard $(BOARD_PATH)/configs/post_config.h)","") - POST_CONFIG_H += $(BOARD_PATH)/configs/post_config.h -endif - -############################################################################## -# Compiler settings -# -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 - -COMMON_VPATH += $(DRIVER_PATH)/chibios - -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 -else - OPT_DEFS += -DCORTEX_USE_FPU=FALSE -endif - -CFLAGS += $(COMPILEFLAGS) - -ASFLAGS += $(THUMBFLAGS) - -CXXFLAGS += $(COMPILEFLAGS) -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 - -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) - -DEBUG = gdb - -DFU_ARGS ?= -ifneq ("$(SERIAL)","") - DFU_ARGS += -S $(SERIAL) -endif - -ST_LINK_ARGS ?= -ST_FLASH_ARGS ?= - -# List any extra directories to look for libraries here. -EXTRALIBDIRS = $(RULESPATH)/ld - -DFU_UTIL ?= dfu-util -ST_LINK_CLI ?= st-link_cli -ST_FLASH ?= st-flash - -define EXEC_DFU_UTIL - if ! $(DFU_UTIL) -l | grep -q "Found DFU"; then \ - printf "$(MSG_BOOTLOADER_NOT_FOUND_QUICK_RETRY)" ;\ - sleep $(BOOTLOADER_RETRY_TIME) ;\ - while ! $(DFU_UTIL) -l | grep -q "Found DFU"; do \ - printf "." ;\ - sleep $(BOOTLOADER_RETRY_TIME) ;\ - done ;\ - printf "\n" ;\ - fi - $(DFU_UTIL) $(DFU_ARGS) -D $(BUILD_DIR)/$(TARGET).bin -endef - -dfu-util: $(BUILD_DIR)/$(TARGET).bin cpfirmware sizeafter - $(call EXEC_DFU_UTIL) - -# Legacy alias -dfu-util-wait: dfu-util - -# TODO: Remove once ARM has a way to configure EECONFIG_HANDEDNESS -# within the emulated eeprom via dfu-util or another tool -ifneq (,$(filter $(MAKECMDGOALS),dfu-util-split-left)) - OPT_DEFS += -DINIT_EE_HANDS_LEFT -endif - -ifneq (,$(filter $(MAKECMDGOALS),dfu-util-split-right)) - OPT_DEFS += -DINIT_EE_HANDS_RIGHT -endif - -dfu-util-split-left: dfu-util - -dfu-util-split-right: dfu-util - - -st-link-cli: $(BUILD_DIR)/$(TARGET).hex sizeafter - $(ST_LINK_CLI) $(ST_LINK_ARGS) -q -c SWD -p $(BUILD_DIR)/$(TARGET).hex -Rst - -st-flash: $(BUILD_DIR)/$(TARGET).hex sizeafter - $(ST_FLASH) $(ST_FLASH_ARGS) --reset --format ihex write $(BUILD_DIR)/$(TARGET).hex - - -# Autodetect teensy loader -ifndef TEENSY_LOADER_CLI - ifneq (, $(shell which teensy-loader-cli 2>/dev/null)) - TEENSY_LOADER_CLI ?= teensy-loader-cli - else - TEENSY_LOADER_CLI ?= teensy_loader_cli - endif -endif - -define EXEC_TEENSY - $(TEENSY_LOADER_CLI) -mmcu=$(MCU_LDSCRIPT) -w -v $(BUILD_DIR)/$(TARGET).hex -endef - -teensy: $(BUILD_DIR)/$(TARGET).hex cpfirmware sizeafter - $(call EXEC_TEENSY) - -bin: $(BUILD_DIR)/$(TARGET).bin sizeafter - $(COPY) $(BUILD_DIR)/$(TARGET).bin $(TARGET).bin; - - -flash: $(BUILD_DIR)/$(TARGET).bin cpfirmware sizeafter -ifneq ($(strip $(PROGRAM_CMD)),) - $(PROGRAM_CMD) -else ifeq ($(strip $(BOOTLOADER)),kiibohd) - $(call EXEC_DFU_UTIL) -else ifeq ($(strip $(MCU_FAMILY)),KINETIS) - $(call EXEC_TEENSY) -else ifeq ($(strip $(MCU_FAMILY)),STM32) - $(call EXEC_DFU_UTIL) -else - $(PRINT_OK); $(SILENT) || printf "$(MSG_FLASH_BOOTLOADER)" -endif diff --git a/tmk_core/common.mk b/tmk_core/common.mk deleted file mode 100644 index 2f8f81126ab6..000000000000 --- a/tmk_core/common.mk +++ /dev/null @@ -1,135 +0,0 @@ -COMMON_DIR = common -PLATFORM_COMMON_DIR = $(COMMON_DIR)/$(PLATFORM_KEY) - -TMK_COMMON_SRC += $(COMMON_DIR)/host.c \ - $(COMMON_DIR)/keyboard.c \ - $(COMMON_DIR)/action.c \ - $(COMMON_DIR)/action_tapping.c \ - $(COMMON_DIR)/action_macro.c \ - $(COMMON_DIR)/action_layer.c \ - $(COMMON_DIR)/action_util.c \ - $(COMMON_DIR)/debug.c \ - $(COMMON_DIR)/sendchar_null.c \ - $(COMMON_DIR)/eeconfig.c \ - $(COMMON_DIR)/report.c \ - $(COMMON_DIR)/usb_util.c \ - $(PLATFORM_COMMON_DIR)/suspend.c \ - $(PLATFORM_COMMON_DIR)/timer.c \ - $(COMMON_DIR)/sync_timer.c \ - $(PLATFORM_COMMON_DIR)/bootloader.c \ - -# Use platform provided print - fall back to lib/printf -ifneq ("$(wildcard $(TMK_PATH)/$(PLATFORM_COMMON_DIR)/printf.mk)","") - include $(TMK_PATH)/$(PLATFORM_COMMON_DIR)/printf.mk -else - include $(TMK_PATH)/$(COMMON_DIR)/lib_printf.mk -endif - -SHARED_EP_ENABLE = no -MOUSE_SHARED_EP ?= yes -ifeq ($(strip $(KEYBOARD_SHARED_EP)), yes) - TMK_COMMON_DEFS += -DKEYBOARD_SHARED_EP - SHARED_EP_ENABLE = yes - # With the current usb_descriptor.c code, - # you can't share kbd without sharing mouse; - # that would be a very unexpected use case anyway - MOUSE_SHARED_EP = yes -endif - -ifeq ($(strip $(MOUSEKEY_ENABLE)), yes) - ifeq ($(strip $(MOUSE_SHARED_EP)), yes) - TMK_COMMON_DEFS += -DMOUSE_SHARED_EP - SHARED_EP_ENABLE = yes - endif -endif - -ifeq ($(strip $(EXTRAKEY_ENABLE)), yes) - TMK_COMMON_DEFS += -DEXTRAKEY_ENABLE - SHARED_EP_ENABLE = yes -endif - -ifeq ($(strip $(RAW_ENABLE)), yes) - TMK_COMMON_DEFS += -DRAW_ENABLE -endif - -ifeq ($(strip $(CONSOLE_ENABLE)), yes) - TMK_COMMON_DEFS += -DCONSOLE_ENABLE -else - TMK_COMMON_DEFS += -DNO_PRINT - TMK_COMMON_DEFS += -DNO_DEBUG -endif - -ifeq ($(strip $(NKRO_ENABLE)), yes) - ifeq ($(PROTOCOL), VUSB) - $(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 - endif -endif - -ifeq ($(strip $(USB_6KRO_ENABLE)), yes) - TMK_COMMON_DEFS += -DUSB_6KRO_ENABLE -endif - -ifeq ($(strip $(SLEEP_LED_ENABLE)), yes) - TMK_COMMON_SRC += $(PLATFORM_COMMON_DIR)/sleep_led.c - TMK_COMMON_DEFS += -DSLEEP_LED_ENABLE - TMK_COMMON_DEFS += -DNO_SUSPEND_POWER_DOWN -endif - -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 $(ONEHAND_ENABLE)), yes) - SWAP_HANDS_ENABLE = yes # backwards compatibility -endif -ifeq ($(strip $(SWAP_HANDS_ENABLE)), yes) - TMK_COMMON_DEFS += -DSWAP_HANDS_ENABLE -endif - -ifeq ($(strip $(NO_USB_STARTUP_CHECK)), yes) - TMK_COMMON_DEFS += -DNO_USB_STARTUP_CHECK -endif - -ifeq ($(strip $(SHARED_EP_ENABLE)), yes) - TMK_COMMON_DEFS += -DSHARED_EP_ENABLE -endif - -ifeq ($(strip $(LTO_ENABLE)), yes) - ifeq ($(PLATFORM),CHIBIOS) - $(info Enabling LTO on ChibiOS-targeting boards is known to have a high likelihood of failure.) - $(info If unsure, set LTO_ENABLE = no.) - endif - EXTRAFLAGS += -flto - TMK_COMMON_DEFS += -DLTO_ENABLE - TMK_COMMON_DEFS += -DLINK_TIME_OPTIMIZATON_ENABLE -else ifdef LINK_TIME_OPTIMIZATION_ENABLE - $(error The LINK_TIME_OPTIMIZATION_ENABLE flag has been renamed to LTO_ENABLE.) -endif - -# Search Path -VPATH += $(TMK_PATH)/$(COMMON_DIR) -VPATH += $(TMK_PATH)/$(PLATFORM_COMMON_DIR) diff --git a/tmk_core/common/action_tapping.c b/tmk_core/common/action_tapping.c deleted file mode 100644 index 56044e096d57..000000000000 --- a/tmk_core/common/action_tapping.c +++ /dev/null @@ -1,426 +0,0 @@ -#include <stdint.h> -#include <stdbool.h> -#include "action.h" -#include "action_layer.h" -#include "action_tapping.h" -#include "keycode.h" -#include "timer.h" - -#ifdef DEBUG_ACTION -# include "debug.h" -#else -# include "nodebug.h" -#endif - -#ifndef NO_ACTION_TAPPING - -# define IS_TAPPING() !IS_NOEVENT(tapping_key.event) -# define IS_TAPPING_PRESSED() (IS_TAPPING() && tapping_key.event.pressed) -# define IS_TAPPING_RELEASED() (IS_TAPPING() && !tapping_key.event.pressed) -# define IS_TAPPING_KEY(k) (IS_TAPPING() && KEYEQ(tapping_key.event.key, (k))) - -__attribute__((weak)) uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { return TAPPING_TERM; } - -# ifdef TAPPING_TERM_PER_KEY -# define WITHIN_TAPPING_TERM(e) (TIMER_DIFF_16(e.time, tapping_key.event.time) < get_tapping_term(get_event_keycode(tapping_key.event, false), &tapping_key)) -# else -# define WITHIN_TAPPING_TERM(e) (TIMER_DIFF_16(e.time, tapping_key.event.time) < TAPPING_TERM) -# endif - -# ifdef TAPPING_FORCE_HOLD_PER_KEY -__attribute__((weak)) bool get_tapping_force_hold(uint16_t keycode, keyrecord_t *record) { return false; } -# endif - -# ifdef PERMISSIVE_HOLD_PER_KEY -__attribute__((weak)) bool get_permissive_hold(uint16_t keycode, keyrecord_t *record) { return false; } -# endif - -static keyrecord_t tapping_key = {}; -static keyrecord_t waiting_buffer[WAITING_BUFFER_SIZE] = {}; -static uint8_t waiting_buffer_head = 0; -static uint8_t waiting_buffer_tail = 0; - -static bool process_tapping(keyrecord_t *record); -static bool waiting_buffer_enq(keyrecord_t record); -static void waiting_buffer_clear(void); -static bool waiting_buffer_typed(keyevent_t event); -static bool waiting_buffer_has_anykey_pressed(void); -static void waiting_buffer_scan_tap(void); -static void debug_tapping_key(void); -static void debug_waiting_buffer(void); - -/** \brief Action Tapping Process - * - * FIXME: Needs doc - */ -void action_tapping_process(keyrecord_t record) { - if (process_tapping(&record)) { - if (!IS_NOEVENT(record.event)) { - debug("processed: "); - debug_record(record); - debug("\n"); - } - } else { - if (!waiting_buffer_enq(record)) { - // clear all in case of overflow. - debug("OVERFLOW: CLEAR ALL STATES\n"); - clear_keyboard(); - waiting_buffer_clear(); - tapping_key = (keyrecord_t){}; - } - } - - // process waiting_buffer - if (!IS_NOEVENT(record.event) && waiting_buffer_head != waiting_buffer_tail) { - debug("---- action_exec: process waiting_buffer -----\n"); - } - for (; waiting_buffer_tail != waiting_buffer_head; waiting_buffer_tail = (waiting_buffer_tail + 1) % WAITING_BUFFER_SIZE) { - if (process_tapping(&waiting_buffer[waiting_buffer_tail])) { - debug("processed: waiting_buffer["); - debug_dec(waiting_buffer_tail); - debug("] = "); - debug_record(waiting_buffer[waiting_buffer_tail]); - debug("\n\n"); - } else { - break; - } - } - if (!IS_NOEVENT(record.event)) { - debug("\n"); - } -} - -/** \brief Tapping - * - * Rule: Tap key is typed(pressed and released) within TAPPING_TERM. - * (without interfering by typing other key) - */ -/* return true when key event is processed or consumed. */ -bool process_tapping(keyrecord_t *keyp) { - keyevent_t event = keyp->event; - - // if tapping - if (IS_TAPPING_PRESSED()) { - if (WITHIN_TAPPING_TERM(event)) { - if (tapping_key.tap.count == 0) { - if (IS_TAPPING_KEY(event.key) && !event.pressed) { - // first tap! - debug("Tapping: First tap(0->1).\n"); - tapping_key.tap.count = 1; - debug_tapping_key(); - process_record(&tapping_key); - - // copy tapping state - keyp->tap = tapping_key.tap; - // enqueue - return false; - } - /* Process a key typed within TAPPING_TERM - * This can register the key before settlement of tapping, - * useful for long TAPPING_TERM but may prevent fast typing. - */ -# if defined(TAPPING_TERM_PER_KEY) || (TAPPING_TERM >= 500) || defined(PERMISSIVE_HOLD) || defined(PERMISSIVE_HOLD_PER_KEY) - else if ((( -# ifdef TAPPING_TERM_PER_KEY - get_tapping_term(get_event_keycode(tapping_key.event, false), keyp) -# else - TAPPING_TERM -# endif - >= 500) - -# ifdef PERMISSIVE_HOLD_PER_KEY - || get_permissive_hold(get_event_keycode(tapping_key.event, false), keyp) -# elif defined(PERMISSIVE_HOLD) - || true -# endif - ) && - IS_RELEASED(event) && waiting_buffer_typed(event)) { - debug("Tapping: End. No tap. Interfered by typing key\n"); - process_record(&tapping_key); - tapping_key = (keyrecord_t){}; - debug_tapping_key(); - // enqueue - return false; - } -# endif - /* Process release event of a key pressed before tapping starts - * Without this unexpected repeating will occur with having fast repeating setting - * https://github.com/tmk/tmk_keyboard/issues/60 - */ - else if (IS_RELEASED(event) && !waiting_buffer_typed(event)) { - // Modifier should be retained till end of this tapping. - action_t action = layer_switch_get_action(event.key); - switch (action.kind.id) { - case ACT_LMODS: - case ACT_RMODS: - if (action.key.mods && !action.key.code) return false; - if (IS_MOD(action.key.code)) return false; - break; - case ACT_LMODS_TAP: - case ACT_RMODS_TAP: - if (action.key.mods && keyp->tap.count == 0) return false; - if (IS_MOD(action.key.code)) return false; - break; - } - // Release of key should be process immediately. - debug("Tapping: release event of a key pressed before tapping\n"); - process_record(keyp); - return true; - } else { - // set interrupted flag when other key preesed during tapping - if (event.pressed) { - tapping_key.tap.interrupted = true; - } - // enqueue - return false; - } - } - // tap_count > 0 - else { - if (IS_TAPPING_KEY(event.key) && !event.pressed) { - debug("Tapping: Tap release("); - debug_dec(tapping_key.tap.count); - debug(")\n"); - keyp->tap = tapping_key.tap; - process_record(keyp); - tapping_key = *keyp; - debug_tapping_key(); - return true; - } else if (is_tap_key(event.key) && event.pressed) { - if (tapping_key.tap.count > 1) { - debug("Tapping: Start new tap with releasing last tap(>1).\n"); - // unregister key - process_record(&(keyrecord_t){.tap = tapping_key.tap, .event.key = tapping_key.event.key, .event.time = event.time, .event.pressed = false}); - } else { - debug("Tapping: Start while last tap(1).\n"); - } - tapping_key = *keyp; - waiting_buffer_scan_tap(); - debug_tapping_key(); - return true; - } else { - if (!IS_NOEVENT(event)) { - debug("Tapping: key event while last tap(>0).\n"); - } - process_record(keyp); - return true; - } - } - } - // after TAPPING_TERM - else { - if (tapping_key.tap.count == 0) { - debug("Tapping: End. Timeout. Not tap(0): "); - debug_event(event); - debug("\n"); - process_record(&tapping_key); - tapping_key = (keyrecord_t){}; - debug_tapping_key(); - return false; - } else { - if (IS_TAPPING_KEY(event.key) && !event.pressed) { - debug("Tapping: End. last timeout tap release(>0)."); - keyp->tap = tapping_key.tap; - process_record(keyp); - tapping_key = (keyrecord_t){}; - return true; - } else if (is_tap_key(event.key) && event.pressed) { - if (tapping_key.tap.count > 1) { - debug("Tapping: Start new tap with releasing last timeout tap(>1).\n"); - // unregister key - process_record(&(keyrecord_t){.tap = tapping_key.tap, .event.key = tapping_key.event.key, .event.time = event.time, .event.pressed = false}); - } else { - debug("Tapping: Start while last timeout tap(1).\n"); - } - tapping_key = *keyp; - waiting_buffer_scan_tap(); - debug_tapping_key(); - return true; - } else { - if (!IS_NOEVENT(event)) { - debug("Tapping: key event while last timeout tap(>0).\n"); - } - process_record(keyp); - return true; - } - } - } - } else if (IS_TAPPING_RELEASED()) { - if (WITHIN_TAPPING_TERM(event)) { - if (event.pressed) { - if (IS_TAPPING_KEY(event.key)) { -//# ifndef TAPPING_FORCE_HOLD -# if !defined(TAPPING_FORCE_HOLD) || defined(TAPPING_FORCE_HOLD_PER_KEY) - if ( -# ifdef TAPPING_FORCE_HOLD_PER_KEY - !get_tapping_force_hold(get_event_keycode(tapping_key.event, false), keyp) && -# endif - !tapping_key.tap.interrupted && tapping_key.tap.count > 0) { - // sequential tap. - keyp->tap = tapping_key.tap; - if (keyp->tap.count < 15) keyp->tap.count += 1; - debug("Tapping: Tap press("); - debug_dec(keyp->tap.count); - debug(")\n"); - process_record(keyp); - tapping_key = *keyp; - debug_tapping_key(); - return true; - } -# endif - // FIX: start new tap again - tapping_key = *keyp; - return true; - } else if (is_tap_key(event.key)) { - // Sequential tap can be interfered with other tap key. - debug("Tapping: Start with interfering other tap.\n"); - tapping_key = *keyp; - waiting_buffer_scan_tap(); - debug_tapping_key(); - return true; - } else { - // should none in buffer - // FIX: interrupted when other key is pressed - tapping_key.tap.interrupted = true; - process_record(keyp); - return true; - } - } else { - if (!IS_NOEVENT(event)) debug("Tapping: other key just after tap.\n"); - process_record(keyp); - return true; - } - } else { - // FIX: process_action here? - // timeout. no sequential tap. - debug("Tapping: End(Timeout after releasing last tap): "); - debug_event(event); - debug("\n"); - tapping_key = (keyrecord_t){}; - debug_tapping_key(); - return false; - } - } - // not tapping state - else { - if (event.pressed && is_tap_key(event.key)) { - debug("Tapping: Start(Press tap key).\n"); - tapping_key = *keyp; - process_record_tap_hint(&tapping_key); - waiting_buffer_scan_tap(); - debug_tapping_key(); - return true; - } else { - process_record(keyp); - return true; - } - } -} - -/** \brief Waiting buffer enq - * - * FIXME: Needs docs - */ -bool waiting_buffer_enq(keyrecord_t record) { - if (IS_NOEVENT(record.event)) { - return true; - } - - if ((waiting_buffer_head + 1) % WAITING_BUFFER_SIZE == waiting_buffer_tail) { - debug("waiting_buffer_enq: Over flow.\n"); - return false; - } - - waiting_buffer[waiting_buffer_head] = record; - waiting_buffer_head = (waiting_buffer_head + 1) % WAITING_BUFFER_SIZE; - - debug("waiting_buffer_enq: "); - debug_waiting_buffer(); - return true; -} - -/** \brief Waiting buffer clear - * - * FIXME: Needs docs - */ -void waiting_buffer_clear(void) { - waiting_buffer_head = 0; - waiting_buffer_tail = 0; -} - -/** \brief Waiting buffer typed - * - * FIXME: Needs docs - */ -bool waiting_buffer_typed(keyevent_t event) { - for (uint8_t i = waiting_buffer_tail; i != waiting_buffer_head; i = (i + 1) % WAITING_BUFFER_SIZE) { - if (KEYEQ(event.key, waiting_buffer[i].event.key) && event.pressed != waiting_buffer[i].event.pressed) { - return true; - } - } - return false; -} - -/** \brief Waiting buffer has anykey pressed - * - * FIXME: Needs docs - */ -__attribute__((unused)) bool waiting_buffer_has_anykey_pressed(void) { - for (uint8_t i = waiting_buffer_tail; i != waiting_buffer_head; i = (i + 1) % WAITING_BUFFER_SIZE) { - if (waiting_buffer[i].event.pressed) return true; - } - return false; -} - -/** \brief Scan buffer for tapping - * - * FIXME: Needs docs - */ -void waiting_buffer_scan_tap(void) { - // tapping already is settled - if (tapping_key.tap.count > 0) return; - // invalid state: tapping_key released && tap.count == 0 - if (!tapping_key.event.pressed) return; - - for (uint8_t i = waiting_buffer_tail; i != waiting_buffer_head; i = (i + 1) % WAITING_BUFFER_SIZE) { - if (IS_TAPPING_KEY(waiting_buffer[i].event.key) && !waiting_buffer[i].event.pressed && WITHIN_TAPPING_TERM(waiting_buffer[i].event)) { - tapping_key.tap.count = 1; - waiting_buffer[i].tap.count = 1; - process_record(&tapping_key); - - debug("waiting_buffer_scan_tap: found at ["); - debug_dec(i); - debug("]\n"); - debug_waiting_buffer(); - return; - } - } -} - -/** \brief Tapping key debug print - * - * FIXME: Needs docs - */ -static void debug_tapping_key(void) { - debug("TAPPING_KEY="); - debug_record(tapping_key); - debug("\n"); -} - -/** \brief Waiting buffer debug print - * - * FIXME: Needs docs - */ -static void debug_waiting_buffer(void) { - debug("{ "); - for (uint8_t i = waiting_buffer_tail; i != waiting_buffer_head; i = (i + 1) % WAITING_BUFFER_SIZE) { - debug("["); - debug_dec(i); - debug("]="); - debug_record(waiting_buffer[i]); - debug(" "); - } - debug("}\n"); -} - -#endif diff --git a/tmk_core/common/arm_atsam/_print.h b/tmk_core/common/arm_atsam/_print.h deleted file mode 100644 index 04320ee38b7c..000000000000 --- a/tmk_core/common/arm_atsam/_print.h +++ /dev/null @@ -1,34 +0,0 @@ -/* Copyright 2012 Jun Wako <wakojun@gmail.com> */ -/* Very basic print functions, intended to be used with usb_debug_only.c - * http://www.pjrc.com/teensy/ - * Copyright (c) 2008 PJRC.COM, LLC - * - * 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 "arm_atsam/printf.h" - -// Create user & normal print defines -#define xprintf(fmt, ...) __xprintf(fmt, ##__VA_ARGS__) -#define print(s) __xprintf(s) -#define println(s) __xprintf(s "\r\n") -#define uprint(s) __xprintf(s) -#define uprintln(s) __xprintf(s "\r\n") -#define uprintf(fmt, ...) __xprintf(fmt, ##__VA_ARGS__) diff --git a/tmk_core/common/arm_atsam/eeprom.c b/tmk_core/common/arm_atsam/eeprom.c deleted file mode 100644 index ccd5d15a5478..000000000000 --- a/tmk_core/common/arm_atsam/eeprom.c +++ /dev/null @@ -1,98 +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 "eeprom.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]; - -uint8_t eeprom_read_byte(const uint8_t *addr) { - uintptr_t offset = (uintptr_t)addr; - return buffer[offset]; -} - -void eeprom_write_byte(uint8_t *addr, uint8_t value) { - uintptr_t offset = (uintptr_t)addr; - buffer[offset] = value; -} - -uint16_t eeprom_read_word(const uint16_t *addr) { - const uint8_t *p = (const uint8_t *)addr; - return eeprom_read_byte(p) | (eeprom_read_byte(p + 1) << 8); -} - -uint32_t eeprom_read_dword(const uint32_t *addr) { - const uint8_t *p = (const uint8_t *)addr; - return eeprom_read_byte(p) | (eeprom_read_byte(p + 1) << 8) | (eeprom_read_byte(p + 2) << 16) | (eeprom_read_byte(p + 3) << 24); -} - -void eeprom_read_block(void *buf, const void *addr, size_t len) { - const uint8_t *p = (const uint8_t *)addr; - uint8_t * dest = (uint8_t *)buf; - while (len--) { - *dest++ = eeprom_read_byte(p++); - } -} - -void eeprom_write_word(uint16_t *addr, uint16_t value) { - uint8_t *p = (uint8_t *)addr; - eeprom_write_byte(p++, value); - eeprom_write_byte(p, value >> 8); -} - -void eeprom_write_dword(uint32_t *addr, uint32_t value) { - uint8_t *p = (uint8_t *)addr; - eeprom_write_byte(p++, value); - eeprom_write_byte(p++, value >> 8); - eeprom_write_byte(p++, value >> 16); - eeprom_write_byte(p, value >> 24); -} - -void eeprom_write_block(const void *buf, void *addr, size_t len) { - uint8_t * p = (uint8_t *)addr; - const uint8_t *src = (const uint8_t *)buf; - while (len--) { - eeprom_write_byte(p++, *src++); - } -} - -void eeprom_update_byte(uint8_t *addr, uint8_t value) { eeprom_write_byte(addr, value); } - -void eeprom_update_word(uint16_t *addr, uint16_t value) { - uint8_t *p = (uint8_t *)addr; - eeprom_write_byte(p++, value); - eeprom_write_byte(p, value >> 8); -} - -void eeprom_update_dword(uint32_t *addr, uint32_t value) { - uint8_t *p = (uint8_t *)addr; - eeprom_write_byte(p++, value); - eeprom_write_byte(p++, value >> 8); - eeprom_write_byte(p++, value >> 16); - eeprom_write_byte(p, value >> 24); -} - -void eeprom_update_block(const void *buf, void *addr, size_t len) { - uint8_t * p = (uint8_t *)addr; - const uint8_t *src = (const uint8_t *)buf; - while (len--) { - eeprom_write_byte(p++, *src++); - } -} diff --git a/tmk_core/common/arm_atsam/printf.c b/tmk_core/common/arm_atsam/printf.c deleted file mode 100644 index 2cb59706a850..000000000000 --- a/tmk_core/common/arm_atsam/printf.c +++ /dev/null @@ -1,72 +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 "printf.h" -#include "sendchar.h" - -#ifdef CONSOLE_ENABLE - -# include "samd51j18a.h" -# include "arm_atsam_protocol.h" -# include <string.h> -# include <stdarg.h> - -void console_printf(char *fmt, ...) { - while (udi_hid_con_b_report_trans_ongoing) { - } // Wait for any previous transfers to complete - - static char console_printbuf[CONSOLE_PRINTBUF_SIZE]; // Print and send buffer - va_list va; - int result; - - va_start(va, fmt); - result = vsnprintf(console_printbuf, CONSOLE_PRINTBUF_SIZE, fmt, va); - va_end(va); - - uint32_t irqflags; - char * pconbuf = console_printbuf; // Pointer to start send from - int send_out = CONSOLE_EPSIZE; // Bytes to send per transfer - - while (result > 0) { // While not error and bytes remain - while (udi_hid_con_b_report_trans_ongoing) { - } // Wait for any previous transfers to complete - - irqflags = __get_PRIMASK(); - __disable_irq(); - __DMB(); - - if (result < CONSOLE_EPSIZE) { // If remaining bytes are less than console epsize - memset(udi_hid_con_report, 0, CONSOLE_EPSIZE); // Clear the buffer - send_out = result; // Send remaining size - } - - memcpy(udi_hid_con_report, pconbuf, send_out); // Copy data into the send buffer - - udi_hid_con_b_report_valid = 1; // Set report valid - udi_hid_con_send_report(); // Send report - - __DMB(); - __set_PRIMASK(irqflags); - - result -= send_out; // Decrement result by bytes sent - pconbuf += send_out; // Increment buffer point by bytes sent - } -} - -#endif // CONSOLE_ENABLE - -void print_set_sendchar(sendchar_func_t send) {} \ No newline at end of file diff --git a/tmk_core/common/arm_atsam/printf.h b/tmk_core/common/arm_atsam/printf.h deleted file mode 100644 index 95557f5b01fd..000000000000 --- a/tmk_core/common/arm_atsam/printf.h +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once - -#define CONSOLE_PRINTBUF_SIZE 512 - -void console_printf(char *fmt, ...); - -#define __xprintf console_printf diff --git a/tmk_core/common/arm_atsam/printf.mk b/tmk_core/common/arm_atsam/printf.mk deleted file mode 100644 index f70e02731fb1..000000000000 --- a/tmk_core/common/arm_atsam/printf.mk +++ /dev/null @@ -1 +0,0 @@ -TMK_COMMON_SRC += $(PLATFORM_COMMON_DIR)/printf.c diff --git a/tmk_core/common/avr/_wait.h b/tmk_core/common/avr/_wait.h deleted file mode 100644 index 56eb316faf63..000000000000 --- a/tmk_core/common/avr/_wait.h +++ /dev/null @@ -1,29 +0,0 @@ -/* Copyright 2021 QMK - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -#pragma once - -#include <util/delay.h> - -#define wait_ms(ms) _delay_ms(ms) -#define wait_us(us) _delay_us(us) - -/* The AVR series GPIOs have a one clock read delay for changes in the digital input signal. - * But here's more margin to make it two clocks. */ -#ifndef GPIO_INPUT_PIN_DELAY -# define GPIO_INPUT_PIN_DELAY 2 -#endif - -#define waitInputPinDelay() __builtin_avr_delay_cycles(GPIO_INPUT_PIN_DELAY) diff --git a/tmk_core/common/avr/gpio.h b/tmk_core/common/avr/gpio.h deleted file mode 100644 index 231556c29c45..000000000000 --- a/tmk_core/common/avr/gpio.h +++ /dev/null @@ -1,34 +0,0 @@ -/* Copyright 2021 QMK - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -#pragma once - -#include <avr/io.h> -#include "pin_defs.h" - -typedef uint8_t pin_t; - -#define setPinInput(pin) (DDRx_ADDRESS(pin) &= ~_BV((pin)&0xF), PORTx_ADDRESS(pin) &= ~_BV((pin)&0xF)) -#define setPinInputHigh(pin) (DDRx_ADDRESS(pin) &= ~_BV((pin)&0xF), PORTx_ADDRESS(pin) |= _BV((pin)&0xF)) -#define setPinInputLow(pin) _Static_assert(0, "AVR processors cannot implement an input as pull low") -#define setPinOutput(pin) (DDRx_ADDRESS(pin) |= _BV((pin)&0xF)) - -#define writePinHigh(pin) (PORTx_ADDRESS(pin) |= _BV((pin)&0xF)) -#define writePinLow(pin) (PORTx_ADDRESS(pin) &= ~_BV((pin)&0xF)) -#define writePin(pin, level) ((level) ? writePinHigh(pin) : writePinLow(pin)) - -#define readPin(pin) ((bool)(PINx_ADDRESS(pin) & _BV((pin)&0xF))) - -#define togglePin(pin) (PORTx_ADDRESS(pin) ^= _BV((pin)&0xF)) diff --git a/tmk_core/common/avr/suspend.c b/tmk_core/common/avr/suspend.c deleted file mode 100644 index 690d7f38caa2..000000000000 --- a/tmk_core/common/avr/suspend.c +++ /dev/null @@ -1,246 +0,0 @@ -#include <stdbool.h> -#include <avr/sleep.h> -#include <avr/wdt.h> -#include <avr/interrupt.h> -#include "matrix.h" -#include "action.h" -#include "suspend.h" -#include "timer.h" -#include "led.h" -#include "host.h" - -#ifdef PROTOCOL_LUFA -# include "lufa.h" -#endif -#ifdef PROTOCOL_VUSB -# 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 - */ -void suspend_idle(uint8_t time) { - cli(); - set_sleep_mode(SLEEP_MODE_IDLE); - sleep_enable(); - sei(); - sleep_cpu(); - sleep_disable(); -} - -// 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 -#define wdt_intr_enable(value) \ -__asm__ __volatile__ ( \ - "in __tmp_reg__,__SREG__" "\n\t" \ - "cli" "\n\t" \ - "wdr" "\n\t" \ - "sts %0,%1" "\n\t" \ - "out __SREG__,__tmp_reg__" "\n\t" \ - "sts %0,%2" "\n\t" \ - : /* no outputs */ \ - : "M" (_SFR_MEM_ADDR(_WD_CONTROL_REG)), \ - "r" (_BV(_WD_CHANGE_BIT) | _BV(WDE)), \ - "r" ((uint8_t) ((value & 0x08 ? _WD_PS3_MASK : 0x00) | _BV(WDIE) | (value & 0x07))) \ - : "r0" \ -) -// clang-format on - -/** \brief Power down MCU with watchdog timer - * - * wdto: watchdog timer timeout defined in <avr/wdt.h> - * WDTO_15MS - * WDTO_30MS - * WDTO_60MS - * WDTO_120MS - * WDTO_250MS - * WDTO_500MS - * WDTO_1S - * WDTO_2S - * WDTO_4S - * WDTO_8S - */ -static uint8_t wdt_timeout = 0; - -/** \brief Power down - * - * FIXME: needs doc - */ -static void power_down(uint8_t wdto) { - wdt_timeout = wdto; - - // Watchdog Interrupt Mode - wdt_intr_enable(wdto); - - // TODO: more power saving - // See PicoPower application note - // - I/O port input with pullup - // - prescale clock - // - BOD disable - // - Power Reduction Register PRR - set_sleep_mode(SLEEP_MODE_PWR_DOWN); - sleep_enable(); - sei(); - sleep_cpu(); - sleep_disable(); - - // Disable watchdog after sleep - wdt_disable(); -} -#endif - -/** \brief Suspend power down - * - * FIXME: needs doc - */ -void suspend_power_down(void) { -#ifdef PROTOCOL_LUFA - if (USB_DeviceState == DEVICE_STATE_Configured) return; -#endif -#ifdef PROTOCOL_VUSB - if (!vusb_suspended) return; -#endif - - suspend_power_down_kb(); - -#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); -# endif -#endif -} - -__attribute__((weak)) void matrix_power_up(void) {} -__attribute__((weak)) void matrix_power_down(void) {} -bool suspend_wakeup_condition(void) { - matrix_power_up(); - matrix_scan(); - matrix_power_down(); - for (uint8_t r = 0; r < MATRIX_ROWS; r++) { - if (matrix_get_row(r)) return true; - } - 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 - */ -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(); -} - -#if !defined(NO_SUSPEND_POWER_DOWN) && defined(WDT_vect) -/* watchdog timeout */ -ISR(WDT_vect) { - // compensate timer for sleep - switch (wdt_timeout) { - case WDTO_15MS: - timer_count += 15 + 2; // WDTO_15MS + 2(from observation) - break; - default:; - } -} -#endif diff --git a/tmk_core/common/chibios/_wait.h b/tmk_core/common/chibios/_wait.h deleted file mode 100644 index 5bface53e1d0..000000000000 --- a/tmk_core/common/chibios/_wait.h +++ /dev/null @@ -1,55 +0,0 @@ -/* Copyright 2021 QMK - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -#pragma once - -#include <ch.h> - -/* chThdSleepX of zero maps to infinite - so we map to a tiny delay to still yield */ -#define wait_ms(ms) \ - do { \ - if (ms != 0) { \ - chThdSleepMilliseconds(ms); \ - } else { \ - chThdSleepMicroseconds(1); \ - } \ - } while (0) -#define wait_us(us) \ - do { \ - if (us != 0) { \ - chThdSleepMicroseconds(us); \ - } else { \ - chThdSleepMicroseconds(1); \ - } \ - } while (0) - -/* 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. - * And since the instruction execution clock of the CPU and the bus clock of GPIO are different, - * there is a delay of several clocks to read the change of the input signal. - * - * Define this delay with the GPIO_INPUT_PIN_DELAY macro. - * If the GPIO_INPUT_PIN_DELAY macro is not defined, the following default values will be used. - * (A fairly large value of 0.25 microseconds is set.) - */ - -#include "wait.c" - -#ifndef GPIO_INPUT_PIN_DELAY -# define GPIO_INPUT_PIN_DELAY (STM32_SYSCLK / 1000000L / 4) -#endif - -#define waitInputPinDelay() wait_cpuclock(GPIO_INPUT_PIN_DELAY) diff --git a/tmk_core/common/chibios/chibios_config.h b/tmk_core/common/chibios/chibios_config.h deleted file mode 100644 index 23c65f94284d..000000000000 --- a/tmk_core/common/chibios/chibios_config.h +++ /dev/null @@ -1,40 +0,0 @@ -/* 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 - -#ifndef USB_VBUS_PIN -# define SPLIT_USB_DETECT // Force this on when dedicated pin is not used -#endif - -#if defined(STM32F1XX) -# define USE_GPIOV1 -#endif - -#if defined(STM32F1XX) || defined(STM32F2XX) || defined(STM32F4XX) || defined(STM32L1XX) -# define USE_I2CV1 -#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 -#endif - -#if defined(MK66F18) -# define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY -#endif diff --git a/tmk_core/common/chibios/eeprom_stm32.c b/tmk_core/common/chibios/eeprom_stm32.c deleted file mode 100644 index ea519897280d..000000000000 --- a/tmk_core/common/chibios/eeprom_stm32.c +++ /dev/null @@ -1,198 +0,0 @@ -/* - * This software is experimental and a work in progress. - * Under no circumstances should these files be used in relation to any critical system(s). - * Use of these files is at your own risk. - * - * 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. - * - * This files are free to use from http://engsta.com/stm32-flash-memory-eeprom-emulator/ by - * Artur F. - * - * Modifications for QMK and STM32F303 by Yiancar - */ - -#include <stdio.h> -#include <string.h> -#include "eeprom_stm32.h" -/***************************************************************************** - * Allows to use the internal flash to store non volatile data. To initialize - * the functionality use the EEPROM_Init() function. Be sure that by reprogramming - * of the controller just affected pages will be deleted. In other case the non - * volatile data will be lost. - ******************************************************************************/ - -/* Private macro -------------------------------------------------------------*/ -/* Private variables ---------------------------------------------------------*/ -/* Functions -----------------------------------------------------------------*/ - -uint8_t DataBuf[FEE_PAGE_SIZE]; -/***************************************************************************** - * Delete Flash Space used for user Data, deletes the whole space between - * RW_PAGE_BASE_ADDRESS and the last uC Flash Page - ******************************************************************************/ -uint16_t EEPROM_Init(void) { - // unlock flash - FLASH_Unlock(); - - // Clear Flags - // FLASH_ClearFlag(FLASH_SR_EOP|FLASH_SR_PGERR|FLASH_SR_WRPERR); - - return FEE_DENSITY_BYTES; -} -/***************************************************************************** - * Erase the whole reserved Flash Space used for user Data - ******************************************************************************/ -void EEPROM_Erase(void) { - int page_num = 0; - - // delete all pages from specified start page to the last page - do { - FLASH_ErasePage(FEE_PAGE_BASE_ADDRESS + (page_num * FEE_PAGE_SIZE)); - page_num++; - } while (page_num < FEE_DENSITY_PAGES); -} -/***************************************************************************** - * Writes once data byte to flash on specified address. If a byte is already - * written, the whole page must be copied to a buffer, the byte changed and - * the manipulated buffer written after PageErase. - *******************************************************************************/ -uint16_t EEPROM_WriteDataByte(uint16_t Address, uint8_t DataByte) { - FLASH_Status FlashStatus = FLASH_COMPLETE; - - uint32_t page; - int i; - - // exit if desired address is above the limit (e.G. under 2048 Bytes for 4 pages) - if (Address > FEE_DENSITY_BYTES) { - return 0; - } - - // calculate which page is affected (Pagenum1/Pagenum2...PagenumN) - page = FEE_ADDR_OFFSET(Address) / FEE_PAGE_SIZE; - - // if current data is 0xFF, the byte is empty, just overwrite with the new one - if ((*(__IO uint16_t *)(FEE_PAGE_BASE_ADDRESS + FEE_ADDR_OFFSET(Address))) == FEE_EMPTY_WORD) { - FlashStatus = FLASH_ProgramHalfWord(FEE_PAGE_BASE_ADDRESS + FEE_ADDR_OFFSET(Address), (uint16_t)(0x00FF & DataByte)); - } else { - // Copy Page to a buffer - memcpy(DataBuf, (uint8_t *)FEE_PAGE_BASE_ADDRESS + (page * FEE_PAGE_SIZE), FEE_PAGE_SIZE); // !!! Calculate base address for the desired page - - // check if new data is differ to current data, return if not, proceed if yes - if (DataByte == *(__IO uint8_t *)(FEE_PAGE_BASE_ADDRESS + FEE_ADDR_OFFSET(Address))) { - return 0; - } - - // manipulate desired data byte in temp data array if new byte is differ to the current - DataBuf[FEE_ADDR_OFFSET(Address) % FEE_PAGE_SIZE] = DataByte; - - // Erase Page - FlashStatus = FLASH_ErasePage(FEE_PAGE_BASE_ADDRESS + (page * FEE_PAGE_SIZE)); - - // Write new data (whole page) to flash if data has been changed - for (i = 0; i < (FEE_PAGE_SIZE / 2); i++) { - if ((__IO uint16_t)(0xFF00 | DataBuf[FEE_ADDR_OFFSET(i)]) != 0xFFFF) { - FlashStatus = FLASH_ProgramHalfWord((FEE_PAGE_BASE_ADDRESS + (page * FEE_PAGE_SIZE)) + (i * 2), (uint16_t)(0xFF00 | DataBuf[FEE_ADDR_OFFSET(i)])); - } - } - } - return FlashStatus; -} -/***************************************************************************** - * Read once data byte from a specified address. - *******************************************************************************/ -uint8_t EEPROM_ReadDataByte(uint16_t Address) { - uint8_t DataByte = 0xFF; - - // Get Byte from specified address - DataByte = (*(__IO uint8_t *)(FEE_PAGE_BASE_ADDRESS + FEE_ADDR_OFFSET(Address))); - - return DataByte; -} - -/***************************************************************************** - * Wrap library in AVR style functions. - *******************************************************************************/ -uint8_t eeprom_read_byte(const uint8_t *Address) { - const uint16_t p = (const uint32_t)Address; - return EEPROM_ReadDataByte(p); -} - -void eeprom_write_byte(uint8_t *Address, uint8_t Value) { - uint16_t p = (uint32_t)Address; - EEPROM_WriteDataByte(p, Value); -} - -void eeprom_update_byte(uint8_t *Address, uint8_t Value) { - uint16_t p = (uint32_t)Address; - EEPROM_WriteDataByte(p, Value); -} - -uint16_t eeprom_read_word(const uint16_t *Address) { - const uint16_t p = (const uint32_t)Address; - return EEPROM_ReadDataByte(p) | (EEPROM_ReadDataByte(p + 1) << 8); -} - -void eeprom_write_word(uint16_t *Address, uint16_t Value) { - uint16_t p = (uint32_t)Address; - EEPROM_WriteDataByte(p, (uint8_t)Value); - EEPROM_WriteDataByte(p + 1, (uint8_t)(Value >> 8)); -} - -void eeprom_update_word(uint16_t *Address, uint16_t Value) { - uint16_t p = (uint32_t)Address; - EEPROM_WriteDataByte(p, (uint8_t)Value); - EEPROM_WriteDataByte(p + 1, (uint8_t)(Value >> 8)); -} - -uint32_t eeprom_read_dword(const uint32_t *Address) { - const uint16_t p = (const uint32_t)Address; - return EEPROM_ReadDataByte(p) | (EEPROM_ReadDataByte(p + 1) << 8) | (EEPROM_ReadDataByte(p + 2) << 16) | (EEPROM_ReadDataByte(p + 3) << 24); -} - -void eeprom_write_dword(uint32_t *Address, uint32_t Value) { - uint16_t p = (const uint32_t)Address; - EEPROM_WriteDataByte(p, (uint8_t)Value); - EEPROM_WriteDataByte(p + 1, (uint8_t)(Value >> 8)); - EEPROM_WriteDataByte(p + 2, (uint8_t)(Value >> 16)); - EEPROM_WriteDataByte(p + 3, (uint8_t)(Value >> 24)); -} - -void eeprom_update_dword(uint32_t *Address, uint32_t Value) { - uint16_t p = (const uint32_t)Address; - uint32_t existingValue = EEPROM_ReadDataByte(p) | (EEPROM_ReadDataByte(p + 1) << 8) | (EEPROM_ReadDataByte(p + 2) << 16) | (EEPROM_ReadDataByte(p + 3) << 24); - if (Value != existingValue) { - EEPROM_WriteDataByte(p, (uint8_t)Value); - EEPROM_WriteDataByte(p + 1, (uint8_t)(Value >> 8)); - EEPROM_WriteDataByte(p + 2, (uint8_t)(Value >> 16)); - EEPROM_WriteDataByte(p + 3, (uint8_t)(Value >> 24)); - } -} - -void eeprom_read_block(void *buf, const void *addr, size_t len) { - const uint8_t *p = (const uint8_t *)addr; - uint8_t * dest = (uint8_t *)buf; - while (len--) { - *dest++ = eeprom_read_byte(p++); - } -} - -void eeprom_write_block(const void *buf, void *addr, size_t len) { - uint8_t * p = (uint8_t *)addr; - const uint8_t *src = (const uint8_t *)buf; - while (len--) { - eeprom_write_byte(p++, *src++); - } -} - -void eeprom_update_block(const void *buf, void *addr, size_t len) { - uint8_t * p = (uint8_t *)addr; - const uint8_t *src = (const uint8_t *)buf; - while (len--) { - eeprom_write_byte(p++, *src++); - } -} diff --git a/tmk_core/common/chibios/eeprom_stm32.h b/tmk_core/common/chibios/eeprom_stm32.h deleted file mode 100644 index 4dac7c1b595f..000000000000 --- a/tmk_core/common/chibios/eeprom_stm32.h +++ /dev/null @@ -1,84 +0,0 @@ -/* - * This software is experimental and a work in progress. - * Under no circumstances should these files be used in relation to any critical system(s). - * Use of these files is at your own risk. - * - * 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. - * - * This files are free to use from http://engsta.com/stm32-flash-memory-eeprom-emulator/ by - * Artur F. - * - * Modifications for QMK and STM32F303 by Yiancar - * - * This library assumes 8-bit data locations. To add a new MCU, please provide the flash - * page size and the total flash size in Kb. The number of available pages must be a multiple - * of 2. Only half of the pages account for the total EEPROM size. - * This library also assumes that the pages are not used by the firmware. - */ - -#pragma once - -#include <ch.h> -#include <hal.h> -#include "flash_stm32.h" - -// HACK ALERT. This definition may not match your processor -// To Do. Work out correct value for EEPROM_PAGE_SIZE on the STM32F103CT6 etc -#if defined(EEPROM_EMU_STM32F303xC) -# define MCU_STM32F303CC -#elif defined(EEPROM_EMU_STM32F103xB) -# define MCU_STM32F103RB -#elif defined(EEPROM_EMU_STM32F072xB) -# define MCU_STM32F072CB -#elif defined(EEPROM_EMU_STM32F042x6) -# define MCU_STM32F042K6 -#else -# error "not implemented." -#endif - -#ifndef EEPROM_PAGE_SIZE -# if defined(MCU_STM32F103RB) || defined(MCU_STM32F042K6) -# define FEE_PAGE_SIZE (uint16_t)0x400 // Page size = 1KByte -# define FEE_DENSITY_PAGES 2 // How many pages are used -# elif defined(MCU_STM32F103ZE) || defined(MCU_STM32F103RE) || defined(MCU_STM32F103RD) || defined(MCU_STM32F303CC) || defined(MCU_STM32F072CB) -# define FEE_PAGE_SIZE (uint16_t)0x800 // Page size = 2KByte -# define FEE_DENSITY_PAGES 4 // How many pages are used -# else -# error "No MCU type specified. Add something like -DMCU_STM32F103RB to your compiler arguments (probably in a Makefile)." -# endif -#endif - -#ifndef EEPROM_START_ADDRESS -# if defined(MCU_STM32F103RB) || defined(MCU_STM32F072CB) -# define FEE_MCU_FLASH_SIZE 128 // Size in Kb -# elif defined(MCU_STM32F042K6) -# define FEE_MCU_FLASH_SIZE 32 // Size in Kb -# elif defined(MCU_STM32F103ZE) || defined(MCU_STM32F103RE) -# define FEE_MCU_FLASH_SIZE 512 // Size in Kb -# elif defined(MCU_STM32F103RD) -# define FEE_MCU_FLASH_SIZE 384 // Size in Kb -# elif defined(MCU_STM32F303CC) -# define FEE_MCU_FLASH_SIZE 256 // Size in Kb -# else -# error "No MCU type specified. Add something like -DMCU_STM32F103RB to your compiler arguments (probably in a Makefile)." -# endif -#endif - -// DONT CHANGE -// Choose location for the first EEPROM Page address on the top of flash -#define FEE_PAGE_BASE_ADDRESS ((uint32_t)(0x8000000 + FEE_MCU_FLASH_SIZE * 1024 - FEE_DENSITY_PAGES * FEE_PAGE_SIZE)) -#define FEE_DENSITY_BYTES ((FEE_PAGE_SIZE / 2) * FEE_DENSITY_PAGES - 1) -#define FEE_LAST_PAGE_ADDRESS (FEE_PAGE_BASE_ADDRESS + (FEE_PAGE_SIZE * FEE_DENSITY_PAGES)) -#define FEE_EMPTY_WORD ((uint16_t)0xFFFF) -#define FEE_ADDR_OFFSET(Address) (Address * 2) // 1Byte per Word will be saved to preserve Flash - -// Use this function to initialize the functionality -uint16_t EEPROM_Init(void); -void EEPROM_Erase(void); -uint16_t EEPROM_WriteDataByte(uint16_t Address, uint8_t DataByte); -uint8_t EEPROM_ReadDataByte(uint16_t Address); diff --git a/tmk_core/common/chibios/eeprom_teensy.c b/tmk_core/common/chibios/eeprom_teensy.c deleted file mode 100644 index 4aaf66526907..000000000000 --- a/tmk_core/common/chibios/eeprom_teensy.c +++ /dev/null @@ -1,610 +0,0 @@ -#include <ch.h> -#include <hal.h> - -#include "eeconfig.h" - -/*************************************/ -/* Hardware backend */ -/* */ -/* Code from PJRC/Teensyduino */ -/*************************************/ - -/* Teensyduino Core Library - * http://www.pjrc.com/teensy/ - * Copyright (c) 2013 PJRC.COM, LLC. - * - * 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: - * - * 1. The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * 2. If the Software is incorporated into a build system that allows - * selection among a list of target devices, then similar target - * devices manufactured by PJRC.COM must be included in the list of - * target devices and selectable in the same manner. - * - * 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. - */ - -#if defined(K20x) /* chip selection */ -/* Teensy 3.0, 3.1, 3.2; mchck; infinity keyboard */ - -// The EEPROM is really RAM with a hardware-based backup system to -// flash memory. Selecting a smaller size EEPROM allows more wear -// leveling, for higher write endurance. If you edit this file, -// set this to the smallest size your application can use. Also, -// due to Freescale's implementation, writing 16 or 32 bit words -// (aligned to 2 or 4 byte boundaries) has twice the endurance -// compared to writing 8 bit bytes. -// -# ifndef EEPROM_SIZE -# define EEPROM_SIZE 32 -# endif - -/* - ^^^ Here be dragons: - NXP AppNote AN4282 section 3.1 states that partitioning must only be done once. - Once EEPROM partitioning is done, the size is locked to this initial configuration. - Attempts to modify the EEPROM_SIZE setting may brick your board. -*/ - -// Writing unaligned 16 or 32 bit data is handled automatically when -// this is defined, but at a cost of extra code size. Without this, -// any unaligned write will cause a hard fault exception! If you're -// absolutely sure all 16 and 32 bit writes will be aligned, you can -// remove the extra unnecessary code. -// -# define HANDLE_UNALIGNED_WRITES - -// Minimum EEPROM Endurance -// ------------------------ -# if (EEPROM_SIZE == 2048) // 35000 writes/byte or 70000 writes/word -# define EEESIZE 0x33 -# elif (EEPROM_SIZE == 1024) // 75000 writes/byte or 150000 writes/word -# define EEESIZE 0x34 -# elif (EEPROM_SIZE == 512) // 155000 writes/byte or 310000 writes/word -# define EEESIZE 0x35 -# elif (EEPROM_SIZE == 256) // 315000 writes/byte or 630000 writes/word -# define EEESIZE 0x36 -# elif (EEPROM_SIZE == 128) // 635000 writes/byte or 1270000 writes/word -# define EEESIZE 0x37 -# elif (EEPROM_SIZE == 64) // 1275000 writes/byte or 2550000 writes/word -# define EEESIZE 0x38 -# elif (EEPROM_SIZE == 32) // 2555000 writes/byte or 5110000 writes/word -# define EEESIZE 0x39 -# endif - -/** \brief eeprom initialization - * - * FIXME: needs doc - */ -void eeprom_initialize(void) { - uint32_t count = 0; - uint16_t do_flash_cmd[] = {0xf06f, 0x037f, 0x7003, 0x7803, 0xf013, 0x0f80, 0xd0fb, 0x4770}; - uint8_t status; - - if (FTFL->FCNFG & FTFL_FCNFG_RAMRDY) { - // FlexRAM is configured as traditional RAM - // We need to reconfigure for EEPROM usage - FTFL->FCCOB0 = 0x80; // PGMPART = Program Partition Command - FTFL->FCCOB4 = EEESIZE; // EEPROM Size - FTFL->FCCOB5 = 0x03; // 0K for Dataflash, 32K for EEPROM backup - __disable_irq(); - // do_flash_cmd() must execute from RAM. Luckily the C syntax is simple... - (*((void (*)(volatile uint8_t *))((uint32_t)do_flash_cmd | 1)))(&(FTFL->FSTAT)); - __enable_irq(); - status = FTFL->FSTAT; - if (status & (FTFL_FSTAT_RDCOLERR | FTFL_FSTAT_ACCERR | FTFL_FSTAT_FPVIOL)) { - FTFL->FSTAT = (status & (FTFL_FSTAT_RDCOLERR | FTFL_FSTAT_ACCERR | FTFL_FSTAT_FPVIOL)); - return; // error - } - } - // wait for eeprom to become ready (is this really necessary?) - while (!(FTFL->FCNFG & FTFL_FCNFG_EEERDY)) { - if (++count > 20000) break; - } -} - -# define FlexRAM ((uint8_t *)0x14000000) - -/** \brief eeprom read byte - * - * FIXME: needs doc - */ -uint8_t eeprom_read_byte(const uint8_t *addr) { - uint32_t offset = (uint32_t)addr; - if (offset >= EEPROM_SIZE) return 0; - if (!(FTFL->FCNFG & FTFL_FCNFG_EEERDY)) eeprom_initialize(); - return FlexRAM[offset]; -} - -/** \brief eeprom read word - * - * FIXME: needs doc - */ -uint16_t eeprom_read_word(const uint16_t *addr) { - uint32_t offset = (uint32_t)addr; - if (offset >= EEPROM_SIZE - 1) return 0; - if (!(FTFL->FCNFG & FTFL_FCNFG_EEERDY)) eeprom_initialize(); - return *(uint16_t *)(&FlexRAM[offset]); -} - -/** \brief eeprom read dword - * - * FIXME: needs doc - */ -uint32_t eeprom_read_dword(const uint32_t *addr) { - uint32_t offset = (uint32_t)addr; - if (offset >= EEPROM_SIZE - 3) return 0; - if (!(FTFL->FCNFG & FTFL_FCNFG_EEERDY)) eeprom_initialize(); - return *(uint32_t *)(&FlexRAM[offset]); -} - -/** \brief eeprom read block - * - * FIXME: needs doc - */ -void eeprom_read_block(void *buf, const void *addr, uint32_t len) { - uint32_t offset = (uint32_t)addr; - uint8_t *dest = (uint8_t *)buf; - uint32_t end = offset + len; - - if (!(FTFL->FCNFG & FTFL_FCNFG_EEERDY)) eeprom_initialize(); - if (end > EEPROM_SIZE) end = EEPROM_SIZE; - while (offset < end) { - *dest++ = FlexRAM[offset++]; - } -} - -/** \brief eeprom is ready - * - * FIXME: needs doc - */ -int eeprom_is_ready(void) { return (FTFL->FCNFG & FTFL_FCNFG_EEERDY) ? 1 : 0; } - -/** \brief flexram wait - * - * FIXME: needs doc - */ -static void flexram_wait(void) { - while (!(FTFL->FCNFG & FTFL_FCNFG_EEERDY)) { - // TODO: timeout - } -} - -/** \brief eeprom_write_byte - * - * FIXME: needs doc - */ -void eeprom_write_byte(uint8_t *addr, uint8_t value) { - uint32_t offset = (uint32_t)addr; - - if (offset >= EEPROM_SIZE) return; - if (!(FTFL->FCNFG & FTFL_FCNFG_EEERDY)) eeprom_initialize(); - if (FlexRAM[offset] != value) { - FlexRAM[offset] = value; - flexram_wait(); - } -} - -/** \brief eeprom write word - * - * FIXME: needs doc - */ -void eeprom_write_word(uint16_t *addr, uint16_t value) { - uint32_t offset = (uint32_t)addr; - - if (offset >= EEPROM_SIZE - 1) return; - if (!(FTFL->FCNFG & FTFL_FCNFG_EEERDY)) eeprom_initialize(); -# ifdef HANDLE_UNALIGNED_WRITES - if ((offset & 1) == 0) { -# endif - if (*(uint16_t *)(&FlexRAM[offset]) != value) { - *(uint16_t *)(&FlexRAM[offset]) = value; - flexram_wait(); - } -# ifdef HANDLE_UNALIGNED_WRITES - } else { - if (FlexRAM[offset] != value) { - FlexRAM[offset] = value; - flexram_wait(); - } - if (FlexRAM[offset + 1] != (value >> 8)) { - FlexRAM[offset + 1] = value >> 8; - flexram_wait(); - } - } -# endif -} - -/** \brief eeprom write dword - * - * FIXME: needs doc - */ -void eeprom_write_dword(uint32_t *addr, uint32_t value) { - uint32_t offset = (uint32_t)addr; - - if (offset >= EEPROM_SIZE - 3) return; - if (!(FTFL->FCNFG & FTFL_FCNFG_EEERDY)) eeprom_initialize(); -# ifdef HANDLE_UNALIGNED_WRITES - switch (offset & 3) { - case 0: -# endif - if (*(uint32_t *)(&FlexRAM[offset]) != value) { - *(uint32_t *)(&FlexRAM[offset]) = value; - flexram_wait(); - } - return; -# ifdef HANDLE_UNALIGNED_WRITES - case 2: - if (*(uint16_t *)(&FlexRAM[offset]) != value) { - *(uint16_t *)(&FlexRAM[offset]) = value; - flexram_wait(); - } - if (*(uint16_t *)(&FlexRAM[offset + 2]) != (value >> 16)) { - *(uint16_t *)(&FlexRAM[offset + 2]) = value >> 16; - flexram_wait(); - } - return; - default: - if (FlexRAM[offset] != value) { - FlexRAM[offset] = value; - flexram_wait(); - } - if (*(uint16_t *)(&FlexRAM[offset + 1]) != (value >> 8)) { - *(uint16_t *)(&FlexRAM[offset + 1]) = value >> 8; - flexram_wait(); - } - if (FlexRAM[offset + 3] != (value >> 24)) { - FlexRAM[offset + 3] = value >> 24; - flexram_wait(); - } - } -# endif -} - -/** \brief eeprom write block - * - * FIXME: needs doc - */ -void eeprom_write_block(const void *buf, void *addr, uint32_t len) { - uint32_t offset = (uint32_t)addr; - const uint8_t *src = (const uint8_t *)buf; - - if (offset >= EEPROM_SIZE) return; - if (!(FTFL->FCNFG & FTFL_FCNFG_EEERDY)) eeprom_initialize(); - if (len >= EEPROM_SIZE) len = EEPROM_SIZE; - if (offset + len >= EEPROM_SIZE) len = EEPROM_SIZE - offset; - while (len > 0) { - uint32_t lsb = offset & 3; - if (lsb == 0 && len >= 4) { - // write aligned 32 bits - uint32_t val32; - val32 = *src++; - val32 |= (*src++ << 8); - val32 |= (*src++ << 16); - val32 |= (*src++ << 24); - if (*(uint32_t *)(&FlexRAM[offset]) != val32) { - *(uint32_t *)(&FlexRAM[offset]) = val32; - flexram_wait(); - } - offset += 4; - len -= 4; - } else if ((lsb == 0 || lsb == 2) && len >= 2) { - // write aligned 16 bits - uint16_t val16; - val16 = *src++; - val16 |= (*src++ << 8); - if (*(uint16_t *)(&FlexRAM[offset]) != val16) { - *(uint16_t *)(&FlexRAM[offset]) = val16; - flexram_wait(); - } - offset += 2; - len -= 2; - } else { - // write 8 bits - uint8_t val8 = *src++; - if (FlexRAM[offset] != val8) { - FlexRAM[offset] = val8; - flexram_wait(); - } - offset++; - len--; - } - } -} - -/* -void do_flash_cmd(volatile uint8_t *fstat) -{ - *fstat = 0x80; - while ((*fstat & 0x80) == 0) ; // wait -} -00000000 <do_flash_cmd>: - 0: f06f 037f mvn.w r3, #127 ; 0x7f - 4: 7003 strb r3, [r0, #0] - 6: 7803 ldrb r3, [r0, #0] - 8: f013 0f80 tst.w r3, #128 ; 0x80 - c: d0fb beq.n 6 <do_flash_cmd+0x6> - e: 4770 bx lr -*/ - -#elif defined(KL2x) /* chip selection */ -/* Teensy LC (emulated) */ - -# define SYMVAL(sym) (uint32_t)(((uint8_t *)&(sym)) - ((uint8_t *)0)) - -extern uint32_t __eeprom_workarea_start__; -extern uint32_t __eeprom_workarea_end__; - -# define EEPROM_SIZE 128 - -static uint32_t flashend = 0; - -void eeprom_initialize(void) { - const uint16_t *p = (uint16_t *)SYMVAL(__eeprom_workarea_start__); - - do { - if (*p++ == 0xFFFF) { - flashend = (uint32_t)(p - 2); - return; - } - } while (p < (uint16_t *)SYMVAL(__eeprom_workarea_end__)); - flashend = (uint32_t)(p - 1); -} - -uint8_t eeprom_read_byte(const uint8_t *addr) { - uint32_t offset = (uint32_t)addr; - const uint16_t *p = (uint16_t *)SYMVAL(__eeprom_workarea_start__); - const uint16_t *end = (const uint16_t *)((uint32_t)flashend); - uint16_t val; - uint8_t data = 0xFF; - - if (!end) { - eeprom_initialize(); - end = (const uint16_t *)((uint32_t)flashend); - } - if (offset < EEPROM_SIZE) { - while (p <= end) { - val = *p++; - if ((val & 255) == offset) data = val >> 8; - } - } - return data; -} - -static void flash_write(const uint16_t *code, uint32_t addr, uint32_t data) { - // with great power comes great responsibility.... - uint32_t stat; - *(uint32_t *)&(FTFA->FCCOB3) = 0x06000000 | (addr & 0x00FFFFFC); - *(uint32_t *)&(FTFA->FCCOB7) = data; - __disable_irq(); - (*((void (*)(volatile uint8_t *))((uint32_t)code | 1)))(&(FTFA->FSTAT)); - __enable_irq(); - stat = FTFA->FSTAT & (FTFA_FSTAT_RDCOLERR | FTFA_FSTAT_ACCERR | FTFA_FSTAT_FPVIOL); - if (stat) { - FTFA->FSTAT = stat; - } - MCM->PLACR |= MCM_PLACR_CFCC; -} - -void eeprom_write_byte(uint8_t *addr, uint8_t data) { - uint32_t offset = (uint32_t)addr; - const uint16_t *p, *end = (const uint16_t *)((uint32_t)flashend); - uint32_t i, val, flashaddr; - uint16_t do_flash_cmd[] = {0x2380, 0x7003, 0x7803, 0xb25b, 0x2b00, 0xdafb, 0x4770}; - uint8_t buf[EEPROM_SIZE]; - - if (offset >= EEPROM_SIZE) return; - if (!end) { - eeprom_initialize(); - end = (const uint16_t *)((uint32_t)flashend); - } - if (++end < (uint16_t *)SYMVAL(__eeprom_workarea_end__)) { - val = (data << 8) | offset; - flashaddr = (uint32_t)end; - flashend = flashaddr; - if ((flashaddr & 2) == 0) { - val |= 0xFFFF0000; - } else { - val <<= 16; - val |= 0x0000FFFF; - } - flash_write(do_flash_cmd, flashaddr, val); - } else { - for (i = 0; i < EEPROM_SIZE; i++) { - buf[i] = 0xFF; - } - val = 0; - for (p = (uint16_t *)SYMVAL(__eeprom_workarea_start__); p < (uint16_t *)SYMVAL(__eeprom_workarea_end__); p++) { - val = *p; - if ((val & 255) < EEPROM_SIZE) { - buf[val & 255] = val >> 8; - } - } - buf[offset] = data; - for (flashaddr = (uint32_t)(uint16_t *)SYMVAL(__eeprom_workarea_start__); flashaddr < (uint32_t)(uint16_t *)SYMVAL(__eeprom_workarea_end__); flashaddr += 1024) { - *(uint32_t *)&(FTFA->FCCOB3) = 0x09000000 | flashaddr; - __disable_irq(); - (*((void (*)(volatile uint8_t *))((uint32_t)do_flash_cmd | 1)))(&(FTFA->FSTAT)); - __enable_irq(); - val = FTFA->FSTAT & (FTFA_FSTAT_RDCOLERR | FTFA_FSTAT_ACCERR | FTFA_FSTAT_FPVIOL); - ; - if (val) FTFA->FSTAT = val; - MCM->PLACR |= MCM_PLACR_CFCC; - } - flashaddr = (uint32_t)(uint16_t *)SYMVAL(__eeprom_workarea_start__); - for (i = 0; i < EEPROM_SIZE; i++) { - if (buf[i] == 0xFF) continue; - if ((flashaddr & 2) == 0) { - val = (buf[i] << 8) | i; - } else { - val = val | (buf[i] << 24) | (i << 16); - flash_write(do_flash_cmd, flashaddr, val); - } - flashaddr += 2; - } - flashend = flashaddr; - if ((flashaddr & 2)) { - val |= 0xFFFF0000; - flash_write(do_flash_cmd, flashaddr, val); - } - } -} - -/* -void do_flash_cmd(volatile uint8_t *fstat) -{ - *fstat = 0x80; - while ((*fstat & 0x80) == 0) ; // wait -} -00000000 <do_flash_cmd>: - 0: 2380 movs r3, #128 ; 0x80 - 2: 7003 strb r3, [r0, #0] - 4: 7803 ldrb r3, [r0, #0] - 6: b25b sxtb r3, r3 - 8: 2b00 cmp r3, #0 - a: dafb bge.n 4 <do_flash_cmd+0x4> - c: 4770 bx lr -*/ - -uint16_t eeprom_read_word(const uint16_t *addr) { - const uint8_t *p = (const uint8_t *)addr; - return eeprom_read_byte(p) | (eeprom_read_byte(p + 1) << 8); -} - -uint32_t eeprom_read_dword(const uint32_t *addr) { - const uint8_t *p = (const uint8_t *)addr; - return eeprom_read_byte(p) | (eeprom_read_byte(p + 1) << 8) | (eeprom_read_byte(p + 2) << 16) | (eeprom_read_byte(p + 3) << 24); -} - -void eeprom_read_block(void *buf, const void *addr, uint32_t len) { - const uint8_t *p = (const uint8_t *)addr; - uint8_t * dest = (uint8_t *)buf; - while (len--) { - *dest++ = eeprom_read_byte(p++); - } -} - -int eeprom_is_ready(void) { return 1; } - -void eeprom_write_word(uint16_t *addr, uint16_t value) { - uint8_t *p = (uint8_t *)addr; - eeprom_write_byte(p++, value); - eeprom_write_byte(p, value >> 8); -} - -void eeprom_write_dword(uint32_t *addr, uint32_t value) { - uint8_t *p = (uint8_t *)addr; - eeprom_write_byte(p++, value); - eeprom_write_byte(p++, value >> 8); - eeprom_write_byte(p++, value >> 16); - eeprom_write_byte(p, value >> 24); -} - -void eeprom_write_block(const void *buf, void *addr, uint32_t len) { - uint8_t * p = (uint8_t *)addr; - const uint8_t *src = (const uint8_t *)buf; - while (len--) { - eeprom_write_byte(p++, *src++); - } -} - -#else -// No EEPROM supported, so emulate it - -# 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]; - -uint8_t eeprom_read_byte(const uint8_t *addr) { - uint32_t offset = (uint32_t)addr; - return buffer[offset]; -} - -void eeprom_write_byte(uint8_t *addr, uint8_t value) { - uint32_t offset = (uint32_t)addr; - buffer[offset] = value; -} - -uint16_t eeprom_read_word(const uint16_t *addr) { - const uint8_t *p = (const uint8_t *)addr; - return eeprom_read_byte(p) | (eeprom_read_byte(p + 1) << 8); -} - -uint32_t eeprom_read_dword(const uint32_t *addr) { - const uint8_t *p = (const uint8_t *)addr; - return eeprom_read_byte(p) | (eeprom_read_byte(p + 1) << 8) | (eeprom_read_byte(p + 2) << 16) | (eeprom_read_byte(p + 3) << 24); -} - -void eeprom_read_block(void *buf, const void *addr, size_t len) { - const uint8_t *p = (const uint8_t *)addr; - uint8_t * dest = (uint8_t *)buf; - while (len--) { - *dest++ = eeprom_read_byte(p++); - } -} - -void eeprom_write_word(uint16_t *addr, uint16_t value) { - uint8_t *p = (uint8_t *)addr; - eeprom_write_byte(p++, value); - eeprom_write_byte(p, value >> 8); -} - -void eeprom_write_dword(uint32_t *addr, uint32_t value) { - uint8_t *p = (uint8_t *)addr; - eeprom_write_byte(p++, value); - eeprom_write_byte(p++, value >> 8); - eeprom_write_byte(p++, value >> 16); - eeprom_write_byte(p, value >> 24); -} - -void eeprom_write_block(const void *buf, void *addr, size_t len) { - uint8_t * p = (uint8_t *)addr; - const uint8_t *src = (const uint8_t *)buf; - while (len--) { - eeprom_write_byte(p++, *src++); - } -} - -#endif /* chip selection */ -// The update functions just calls write for now, but could probably be optimized - -void eeprom_update_byte(uint8_t *addr, uint8_t value) { eeprom_write_byte(addr, value); } - -void eeprom_update_word(uint16_t *addr, uint16_t value) { - uint8_t *p = (uint8_t *)addr; - eeprom_write_byte(p++, value); - eeprom_write_byte(p, value >> 8); -} - -void eeprom_update_dword(uint32_t *addr, uint32_t value) { - uint8_t *p = (uint8_t *)addr; - eeprom_write_byte(p++, value); - eeprom_write_byte(p++, value >> 8); - eeprom_write_byte(p++, value >> 16); - eeprom_write_byte(p, value >> 24); -} - -void eeprom_update_block(const void *buf, void *addr, size_t len) { - uint8_t * p = (uint8_t *)addr; - const uint8_t *src = (const uint8_t *)buf; - while (len--) { - eeprom_write_byte(p++, *src++); - } -} diff --git a/tmk_core/common/chibios/gpio.h b/tmk_core/common/chibios/gpio.h deleted file mode 100644 index 5d0e142abc93..000000000000 --- a/tmk_core/common/chibios/gpio.h +++ /dev/null @@ -1,34 +0,0 @@ -/* Copyright 2021 QMK - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -#pragma once - -#include <hal.h> -#include "pin_defs.h" - -typedef ioline_t pin_t; - -#define setPinInput(pin) palSetLineMode(pin, PAL_MODE_INPUT) -#define setPinInputHigh(pin) palSetLineMode(pin, PAL_MODE_INPUT_PULLUP) -#define setPinInputLow(pin) palSetLineMode(pin, PAL_MODE_INPUT_PULLDOWN) -#define setPinOutput(pin) palSetLineMode(pin, PAL_MODE_OUTPUT_PUSHPULL) - -#define writePinHigh(pin) palSetLine(pin) -#define writePinLow(pin) palClearLine(pin) -#define writePin(pin, level) ((level) ? (writePinHigh(pin)) : (writePinLow(pin))) - -#define readPin(pin) palReadLine(pin) - -#define togglePin(pin) palToggleLine(pin) diff --git a/tmk_core/common/chibios/suspend.c b/tmk_core/common/chibios/suspend.c deleted file mode 100644 index 38517e06f0bf..000000000000 --- a/tmk_core/common/chibios/suspend.c +++ /dev/null @@ -1,169 +0,0 @@ -/* TODO */ - -#include <ch.h> -#include <hal.h> - -#include "matrix.h" -#include "action.h" -#include "action_util.h" -#include "mousekey.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 - */ -void suspend_idle(uint8_t time) { - // TODO: this is not used anywhere - what units is 'time' in? - 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(); - // on AVR, this enables the watchdog for 15ms (max), and goes to - // SLEEP_MODE_PWR_DOWN - - wait_ms(17); -} - -/** \brief suspend wakeup condition - * - * FIXME: needs doc - */ -__attribute__((weak)) void matrix_power_up(void) {} -__attribute__((weak)) void matrix_power_down(void) {} -bool suspend_wakeup_condition(void) { - matrix_power_up(); - matrix_scan(); - matrix_power_down(); - for (uint8_t r = 0; r < MATRIX_ROWS; r++) { - if (matrix_get_row(r)) return true; - } - 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 suspend wakeup condition - * - * run immediately after wakeup - * FIXME: needs doc - */ -void suspend_wakeup_init(void) { - // clear keyboard state - // need to do it manually, because we're running from ISR - // and clear_keyboard() calls print - // so only clear the variables in memory - // the reports will be sent from main.c afterwards - // or if the PC asks for GET_REPORT - clear_mods(); - clear_weak_mods(); - clear_keys(); -#ifdef MOUSEKEY_ENABLE - mousekey_clear(); -#endif /* MOUSEKEY_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(); -} diff --git a/tmk_core/common/chibios/wait.c b/tmk_core/common/chibios/wait.c deleted file mode 100644 index c6270fd95ec2..000000000000 --- a/tmk_core/common/chibios/wait.c +++ /dev/null @@ -1,89 +0,0 @@ -/* Copyright 2021 QMK - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef __OPTIMIZE__ -# pragma message "Compiler optimizations disabled; wait_cpuclock() won't work as designed" -#endif - -#define CLOCK_DELAY_NOP8 "nop\n\t nop\n\t nop\n\t nop\n\t nop\n\t nop\n\t nop\n\t nop\n\t" - -__attribute__((always_inline)) static inline void wait_cpuclock(unsigned int n) { /* n: 1..135 */ - /* The argument n must be a constant expression. - * That way, compiler optimization will remove unnecessary code. */ - if (n < 1) { - return; - } - if (n > 8) { - unsigned int n8 = n / 8; - n = n - n8 * 8; - switch (n8) { - case 16: - asm volatile(CLOCK_DELAY_NOP8::: "memory"); - case 15: - asm volatile(CLOCK_DELAY_NOP8::: "memory"); - case 14: - asm volatile(CLOCK_DELAY_NOP8::: "memory"); - case 13: - asm volatile(CLOCK_DELAY_NOP8::: "memory"); - case 12: - asm volatile(CLOCK_DELAY_NOP8::: "memory"); - case 11: - asm volatile(CLOCK_DELAY_NOP8::: "memory"); - case 10: - asm volatile(CLOCK_DELAY_NOP8::: "memory"); - case 9: - asm volatile(CLOCK_DELAY_NOP8::: "memory"); - case 8: - asm volatile(CLOCK_DELAY_NOP8::: "memory"); - case 7: - asm volatile(CLOCK_DELAY_NOP8::: "memory"); - case 6: - asm volatile(CLOCK_DELAY_NOP8::: "memory"); - case 5: - asm volatile(CLOCK_DELAY_NOP8::: "memory"); - case 4: - asm volatile(CLOCK_DELAY_NOP8::: "memory"); - case 3: - asm volatile(CLOCK_DELAY_NOP8::: "memory"); - case 2: - asm volatile(CLOCK_DELAY_NOP8::: "memory"); - case 1: - asm volatile(CLOCK_DELAY_NOP8::: "memory"); - case 0: - break; - } - } - switch (n) { - case 8: - asm volatile("nop" ::: "memory"); - case 7: - asm volatile("nop" ::: "memory"); - case 6: - asm volatile("nop" ::: "memory"); - case 5: - asm volatile("nop" ::: "memory"); - case 4: - asm volatile("nop" ::: "memory"); - case 3: - asm volatile("nop" ::: "memory"); - case 2: - asm volatile("nop" ::: "memory"); - case 1: - asm volatile("nop" ::: "memory"); - case 0: - break; - } -} \ No newline at end of file diff --git a/tmk_core/common/eeconfig.h b/tmk_core/common/eeconfig.h deleted file mode 100644 index a88071729da6..000000000000 --- a/tmk_core/common/eeconfig.h +++ /dev/null @@ -1,113 +0,0 @@ -/* -Copyright 2013 Jun Wako <wakojun@gmail.com> - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#pragma once - -#include <stdint.h> -#include <stdbool.h> - -#ifndef EECONFIG_MAGIC_NUMBER -# define EECONFIG_MAGIC_NUMBER (uint16_t)0xFEEA // When changing, decrement this value to avoid future re-init issues -#endif -#define EECONFIG_MAGIC_NUMBER_OFF (uint16_t)0xFFFF - -/* EEPROM parameter address */ -#define EECONFIG_MAGIC (uint16_t *)0 -#define EECONFIG_DEBUG (uint8_t *)2 -#define EECONFIG_DEFAULT_LAYER (uint8_t *)3 -#define EECONFIG_KEYMAP (uint8_t *)4 -#define EECONFIG_MOUSEKEY_ACCEL (uint8_t *)5 -#define EECONFIG_BACKLIGHT (uint8_t *)6 -#define EECONFIG_AUDIO (uint8_t *)7 -#define EECONFIG_RGBLIGHT (uint32_t *)8 -#define EECONFIG_UNICODEMODE (uint8_t *)12 -#define EECONFIG_STENOMODE (uint8_t *)13 -// EEHANDS for two handed boards -#define EECONFIG_HANDEDNESS (uint8_t *)14 -#define EECONFIG_KEYBOARD (uint32_t *)15 -#define EECONFIG_USER (uint32_t *)19 -#define EECONFIG_VELOCIKEY (uint8_t *)23 - -#define EECONFIG_HAPTIC (uint32_t *)24 - -// Mutually exclusive -#define EECONFIG_LED_MATRIX (uint32_t *)28 -#define EECONFIG_RGB_MATRIX (uint32_t *)28 -// Speed & Flags -#define EECONFIG_LED_MATRIX_EXTENDED (uint16_t *)32 -#define EECONFIG_RGB_MATRIX_EXTENDED (uint16_t *)32 - -// TODO: Combine these into a single word and single block of EEPROM -#define EECONFIG_KEYMAP_UPPER_BYTE (uint8_t *)34 -// Size of EEPROM being used, other code can refer to this for available EEPROM -#define EECONFIG_SIZE 35 -/* debug bit */ -#define EECONFIG_DEBUG_ENABLE (1 << 0) -#define EECONFIG_DEBUG_MATRIX (1 << 1) -#define EECONFIG_DEBUG_KEYBOARD (1 << 2) -#define EECONFIG_DEBUG_MOUSE (1 << 3) - -/* keyconf bit */ -#define EECONFIG_KEYMAP_SWAP_CONTROL_CAPSLOCK (1 << 0) -#define EECONFIG_KEYMAP_CAPSLOCK_TO_CONTROL (1 << 1) -#define EECONFIG_KEYMAP_SWAP_LALT_LGUI (1 << 2) -#define EECONFIG_KEYMAP_SWAP_RALT_RGUI (1 << 3) -#define EECONFIG_KEYMAP_NO_GUI (1 << 4) -#define EECONFIG_KEYMAP_SWAP_GRAVE_ESC (1 << 5) -#define EECONFIG_KEYMAP_SWAP_BACKSLASH_BACKSPACE (1 << 6) -#define EECONFIG_KEYMAP_NKRO (1 << 7) - -#define EECONFIG_KEYMAP_LOWER_BYTE EECONFIG_KEYMAP - -bool eeconfig_is_enabled(void); -bool eeconfig_is_disabled(void); - -void eeconfig_init(void); -void eeconfig_init_quantum(void); -void eeconfig_init_kb(void); -void eeconfig_init_user(void); - -void eeconfig_enable(void); - -void eeconfig_disable(void); - -uint8_t eeconfig_read_debug(void); -void eeconfig_update_debug(uint8_t val); - -uint8_t eeconfig_read_default_layer(void); -void eeconfig_update_default_layer(uint8_t val); - -uint16_t eeconfig_read_keymap(void); -void eeconfig_update_keymap(uint16_t val); - -#ifdef AUDIO_ENABLE -uint8_t eeconfig_read_audio(void); -void eeconfig_update_audio(uint8_t val); -#endif - -uint32_t eeconfig_read_kb(void); -void eeconfig_update_kb(uint32_t val); -uint32_t eeconfig_read_user(void); -void eeconfig_update_user(uint32_t val); - -#ifdef HAPTIC_ENABLE -uint32_t eeconfig_read_haptic(void); -void eeconfig_update_haptic(uint32_t val); -#endif - -bool eeconfig_read_handedness(void); -void eeconfig_update_handedness(bool val); diff --git a/tmk_core/common/host.c b/tmk_core/common/host.c deleted file mode 100644 index e7d92cfac69e..000000000000 --- a/tmk_core/common/host.c +++ /dev/null @@ -1,102 +0,0 @@ -/* -Copyright 2011,2012 Jun Wako <wakojun@gmail.com> - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#include <stdint.h> -//#include <avr/interrupt.h> -#include "keycode.h" -#include "host.h" -#include "util.h" -#include "debug.h" - -#ifdef NKRO_ENABLE -# include "keycode_config.h" -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; - -void host_set_driver(host_driver_t *d) { driver = d; } - -host_driver_t *host_get_driver(void) { return driver; } - -uint8_t host_keyboard_leds(void) { - if (!driver) return 0; - return (*driver->keyboard_leds)(); -} - -led_t host_keyboard_led_state(void) { - if (!driver) return (led_t){0}; - return (led_t)((*driver->keyboard_leds)()); -} - -/* send report */ -void host_keyboard_send(report_keyboard_t *report) { - if (!driver) return; -#if defined(NKRO_ENABLE) && defined(NKRO_SHARED_EP) - if (keyboard_protocol && keymap_config.nkro) { - /* The callers of this function assume that report->mods is where mods go in. - * But report->nkro.mods can be at a different offset if core keyboard does not have a report ID. - */ - report->nkro.mods = report->mods; - report->nkro.report_id = REPORT_ID_NKRO; - } else -#endif - { -#ifdef KEYBOARD_SHARED_EP - report->report_id = REPORT_ID_KEYBOARD; -#endif - } - (*driver->send_keyboard)(report); - - if (debug_keyboard) { - dprint("keyboard_report: "); - for (uint8_t i = 0; i < KEYBOARD_REPORT_SIZE; i++) { - dprintf("%02X ", report->raw[i]); - } - dprint("\n"); - } -} - -void host_mouse_send(report_mouse_t *report) { - if (!driver) return; -#ifdef MOUSE_SHARED_EP - report->report_id = REPORT_ID_MOUSE; -#endif - (*driver->send_mouse)(report); -} - -void host_system_send(uint16_t report) { - if (report == last_system_report) return; - last_system_report = report; - - if (!driver) return; - (*driver->send_system)(report); -} - -void host_consumer_send(uint16_t report) { - if (report == last_consumer_report) return; - last_consumer_report = report; - - if (!driver) return; - (*driver->send_consumer)(report); -} - -uint16_t host_last_system_report(void) { return last_system_report; } - -uint16_t host_last_consumer_report(void) { return last_consumer_report; } diff --git a/tmk_core/common/keyboard.c b/tmk_core/common/keyboard.c deleted file mode 100644 index 3d6092e71cfc..000000000000 --- a/tmk_core/common/keyboard.c +++ /dev/null @@ -1,534 +0,0 @@ -/* -Copyright 2011, 2012, 2013 Jun Wako <wakojun@gmail.com> - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#include <stdint.h> -#include "keyboard.h" -#include "matrix.h" -#include "keymap.h" -#include "host.h" -#include "led.h" -#include "keycode.h" -#include "timer.h" -#include "sync_timer.h" -#include "print.h" -#include "debug.h" -#include "command.h" -#include "util.h" -#include "sendchar.h" -#include "eeconfig.h" -#include "action_layer.h" -#ifdef BACKLIGHT_ENABLE -# include "backlight.h" -#endif -#ifdef MOUSEKEY_ENABLE -# include "mousekey.h" -#endif -#ifdef PS2_MOUSE_ENABLE -# include "ps2_mouse.h" -#endif -#ifdef SERIAL_MOUSE_ENABLE -# include "serial_mouse.h" -#endif -#ifdef ADB_MOUSE_ENABLE -# include "adb.h" -#endif -#ifdef RGBLIGHT_ENABLE -# include "rgblight.h" -#endif -#ifdef LED_MATRIX_ENABLE -# include "led_matrix.h" -#endif -#ifdef RGB_MATRIX_ENABLE -# include "rgb_matrix.h" -#endif -#ifdef ENCODER_ENABLE -# include "encoder.h" -#endif -#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 -#ifdef MIDI_ENABLE -# include "process_midi.h" -#endif -#ifdef JOYSTICK_ENABLE -# include "process_joystick.h" -#endif -#ifdef HD44780_ENABLE -# include "hd44780.h" -#endif -#ifdef QWIIC_ENABLE -# include "qwiic.h" -#endif -#ifdef OLED_DRIVER_ENABLE -# include "oled_driver.h" -#endif -#ifdef VELOCIKEY_ENABLE -# include "velocikey.h" -#endif -#ifdef VIA_ENABLE -# include "via.h" -#endif -#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 - -static uint32_t last_input_modification_time = 0; -uint32_t last_input_activity_time(void) { return last_input_modification_time; } -uint32_t last_input_activity_elapsed(void) { return timer_elapsed32(last_input_modification_time); } - -static uint32_t last_matrix_modification_time = 0; -uint32_t last_matrix_activity_time(void) { return last_matrix_modification_time; } -uint32_t last_matrix_activity_elapsed(void) { return timer_elapsed32(last_matrix_modification_time); } -void last_matrix_activity_trigger(void) { last_matrix_modification_time = last_input_modification_time = timer_read32(); } - -static uint32_t last_encoder_modification_time = 0; -uint32_t last_encoder_activity_time(void) { return last_encoder_modification_time; } -uint32_t last_encoder_activity_elapsed(void) { return timer_elapsed32(last_encoder_modification_time); } -void last_encoder_activity_trigger(void) { last_encoder_modification_time = last_input_modification_time = timer_read32(); } - -// Only enable this if console is enabled to print to -#if defined(DEBUG_MATRIX_SCAN_RATE) -static uint32_t matrix_timer = 0; -static uint32_t matrix_scan_count = 0; -static uint32_t last_matrix_scan_count = 0; - -void matrix_scan_perf_task(void) { - matrix_scan_count++; - - uint32_t timer_now = timer_read32(); - if (TIMER_DIFF_32(timer_now, matrix_timer) > 1000) { -# if defined(CONSOLE_ENABLE) - dprintf("matrix scan frequency: %lu\n", matrix_scan_count); -# endif - last_matrix_scan_count = matrix_scan_count; - matrix_timer = timer_now; - matrix_scan_count = 0; - } -} - -uint32_t get_matrix_scan_rate(void) { return last_matrix_scan_count; } -#else -# define matrix_scan_perf_task() -#endif - -#ifdef MATRIX_HAS_GHOST -extern const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS]; -static matrix_row_t get_real_keys(uint8_t row, matrix_row_t rowdata) { - matrix_row_t out = 0; - for (uint8_t col = 0; col < MATRIX_COLS; col++) { - // read each key in the row data and check if the keymap defines it as a real key - if (pgm_read_byte(&keymaps[0][row][col]) && (rowdata & (1 << col))) { - // this creates new row data, if a key is defined in the keymap, it will be set here - out |= 1 << col; - } - } - return out; -} - -static inline bool popcount_more_than_one(matrix_row_t rowdata) { - rowdata &= rowdata - 1; // if there are less than two bits (keys) set, rowdata will become zero - return rowdata; -} - -static inline bool has_ghost_in_row(uint8_t row, matrix_row_t rowdata) { - /* No ghost exists when less than 2 keys are down on the row. - If there are "active" blanks in the matrix, the key can't be pressed by the user, - there is no doubt as to which keys are really being pressed. - The ghosts will be ignored, they are KC_NO. */ - rowdata = get_real_keys(row, rowdata); - if ((popcount_more_than_one(rowdata)) == 0) { - return false; - } - /* Ghost occurs when the row shares a column line with other row, - and two columns are read on each row. Blanks in the matrix don't matter, - so they are filtered out. - If there are two or more real keys pressed and they match columns with - at least two of another row's real keys, the row will be ignored. Keep in mind, - we are checking one row at a time, not all of them at once. - */ - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - if (i != row && popcount_more_than_one(get_real_keys(i, matrix_get_row(i)) & rowdata)) { - return true; - } - } - return false; -} - -#endif - -void disable_jtag(void) { -// To use PF4-7 (PC2-5 on ATmega32A), disable JTAG by writing JTD bit twice within four cycles. -#if (defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) || defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__)) - MCUCR |= _BV(JTD); - MCUCR |= _BV(JTD); -#elif defined(__AVR_ATmega32A__) - MCUCSR |= _BV(JTD); - MCUCSR |= _BV(JTD); -#endif -} - -/** \brief matrix_setup - * - * FIXME: needs doc - */ -__attribute__((weak)) void matrix_setup(void) {} - -/** \brief keyboard_pre_init_user - * - * FIXME: needs doc - */ -__attribute__((weak)) void keyboard_pre_init_user(void) {} - -/** \brief keyboard_pre_init_kb - * - * FIXME: needs doc - */ -__attribute__((weak)) void keyboard_pre_init_kb(void) { keyboard_pre_init_user(); } - -/** \brief keyboard_post_init_user - * - * FIXME: needs doc - */ - -__attribute__((weak)) void keyboard_post_init_user() {} - -/** \brief keyboard_post_init_kb - * - * FIXME: needs doc - */ - -__attribute__((weak)) void keyboard_post_init_kb(void) { keyboard_post_init_user(); } - -/** \brief keyboard_setup - * - * FIXME: needs doc - */ -void keyboard_setup(void) { -#ifndef NO_JTAG_DISABLE - disable_jtag(); -#endif - print_set_sendchar(sendchar); -#ifdef STM32_EEPROM_ENABLE - EEPROM_Init(); -#endif -#ifdef EEPROM_DRIVER - eeprom_driver_init(); -#endif - matrix_setup(); - keyboard_pre_init_kb(); -} - -/** \brief is_keyboard_master - * - * FIXME: needs doc - */ -__attribute__((weak)) bool is_keyboard_master(void) { return true; } - -/** \brief is_keyboard_left - * - * FIXME: needs doc - */ -__attribute__((weak)) bool is_keyboard_left(void) { return true; } - -/** \brief should_process_keypress - * - * Override this function if you have a condition where keypresses processing should change: - * - splits where the slave side needs to process for rgb/oled functionality - */ -__attribute__((weak)) bool should_process_keypress(void) { return is_keyboard_master(); } - -/** \brief housekeeping_task_kb - * - * Override this function if you have a need to execute code for every keyboard main loop iteration. - * This is specific to keyboard-level functionality. - */ -__attribute__((weak)) void housekeeping_task_kb(void) {} - -/** \brief housekeeping_task_user - * - * Override this function if you have a need to execute code for every keyboard main loop iteration. - * This is specific to user/keymap-level functionality. - */ -__attribute__((weak)) void housekeeping_task_user(void) {} - -/** \brief housekeeping_task - * - * Invokes hooks for executing code after QMK is done after each loop iteration. - */ -void housekeeping_task(void) { - housekeeping_task_kb(); - housekeeping_task_user(); -} - -/** \brief keyboard_init - * - * FIXME: needs doc - */ -void keyboard_init(void) { - timer_init(); - sync_timer_init(); - matrix_init(); -#ifdef VIA_ENABLE - via_init(); -#endif -#ifdef QWIIC_ENABLE - qwiic_init(); -#endif -#ifdef OLED_DRIVER_ENABLE - oled_init(OLED_ROTATION_0); -#endif -#ifdef PS2_MOUSE_ENABLE - ps2_mouse_init(); -#endif -#ifdef SERIAL_MOUSE_ENABLE - serial_mouse_init(); -#endif -#ifdef ADB_MOUSE_ENABLE - adb_mouse_init(); -#endif -#ifdef BACKLIGHT_ENABLE - backlight_init(); -#endif -#ifdef RGBLIGHT_ENABLE - rgblight_init(); -#endif -#ifdef ENCODER_ENABLE - encoder_init(); -#endif -#ifdef STENO_ENABLE - steno_init(); -#endif -#ifdef POINTING_DEVICE_ENABLE - pointing_device_init(); -#endif -#if defined(NKRO_ENABLE) && defined(FORCE_NKRO) - keymap_config.nkro = 1; - eeconfig_update_keymap(keymap_config.raw); -#endif -#ifdef DIP_SWITCH_ENABLE - dip_switch_init(); -#endif - -#if defined(DEBUG_MATRIX_SCAN_RATE) && defined(CONSOLE_ENABLE) - debug_enable = true; -#endif - - keyboard_post_init_kb(); /* Always keep this last */ -} - -/** \brief key_event_task - * - * This function is responsible for calling into other systems when they need to respond to electrical switch press events. - * This is differnet than keycode events as no layer processing, or filtering occurs. - */ -void switch_events(uint8_t row, uint8_t col, bool pressed) { -#if defined(LED_MATRIX_ENABLE) - process_led_matrix(row, col, pressed); -#endif -#if defined(RGB_MATRIX_ENABLE) - process_rgb_matrix(row, col, pressed); -#endif -} - -/** \brief Keyboard task: Do keyboard routine jobs - * - * Do routine keyboard jobs: - * - * * scan matrix - * * handle mouse movements - * * run visualizer code - * * handle midi commands - * * light LEDs - * - * This is repeatedly called as fast as possible. - */ -void keyboard_task(void) { - static matrix_row_t matrix_prev[MATRIX_ROWS]; - static uint8_t led_status = 0; - matrix_row_t matrix_row = 0; - matrix_row_t matrix_change = 0; -#ifdef QMK_KEYS_PER_SCAN - uint8_t keys_processed = 0; -#endif -#ifdef ENCODER_ENABLE - bool encoders_changed = false; -#endif - - uint8_t matrix_changed = matrix_scan(); - if (matrix_changed) last_matrix_activity_trigger(); - - for (uint8_t r = 0; r < MATRIX_ROWS; r++) { - matrix_row = matrix_get_row(r); - matrix_change = matrix_row ^ matrix_prev[r]; - if (matrix_change) { -#ifdef MATRIX_HAS_GHOST - if (has_ghost_in_row(r, matrix_row)) { - continue; - } -#endif - if (debug_matrix) matrix_print(); - matrix_row_t col_mask = 1; - for (uint8_t c = 0; c < MATRIX_COLS; c++, col_mask <<= 1) { - if (matrix_change & col_mask) { - if (should_process_keypress()) { - action_exec((keyevent_t){ - .key = (keypos_t){.row = r, .col = c}, .pressed = (matrix_row & col_mask), .time = (timer_read() | 1) /* time should not be 0 */ - }); - } - // record a processed key - matrix_prev[r] ^= col_mask; - - switch_events(r, c, (matrix_row & col_mask)); - -#ifdef QMK_KEYS_PER_SCAN - // only jump out if we have processed "enough" keys. - if (++keys_processed >= QMK_KEYS_PER_SCAN) -#endif - // process a key per task call - goto MATRIX_LOOP_END; - } - } - } - } - // call with pseudo tick event when no real key event. -#ifdef QMK_KEYS_PER_SCAN - // we can get here with some keys processed now. - if (!keys_processed) -#endif - action_exec(TICK); - -MATRIX_LOOP_END: - -#ifdef DEBUG_MATRIX_SCAN_RATE - matrix_scan_perf_task(); -#endif - -#if defined(RGBLIGHT_ENABLE) - rgblight_task(); -#endif - -#ifdef LED_MATRIX_ENABLE - led_matrix_task(); -#endif -#ifdef RGB_MATRIX_ENABLE - rgb_matrix_task(); -#endif - -#if defined(BACKLIGHT_ENABLE) -# if defined(BACKLIGHT_PIN) || defined(BACKLIGHT_PINS) - backlight_task(); -# endif -#endif - -#ifdef ENCODER_ENABLE - encoders_changed = encoder_read(); - if (encoders_changed) last_encoder_activity_trigger(); -#endif - -#ifdef QWIIC_ENABLE - qwiic_task(); -#endif - -#ifdef OLED_DRIVER_ENABLE - oled_task(); -# ifndef OLED_DISABLE_TIMEOUT - // Wake up oled if user is using those fabulous keys or spinning those encoders! -# ifdef ENCODER_ENABLE - if (matrix_changed || encoders_changed) oled_on(); -# else - if (matrix_changed) oled_on(); -# endif -# endif -#endif - -#ifdef MOUSEKEY_ENABLE - // mousekey repeat & acceleration - mousekey_task(); -#endif - -#ifdef PS2_MOUSE_ENABLE - ps2_mouse_task(); -#endif - -#ifdef SERIAL_MOUSE_ENABLE - 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 - -#ifdef MIDI_ENABLE - midi_task(); -#endif - -#ifdef VELOCIKEY_ENABLE - if (velocikey_enabled()) { - velocikey_decelerate(); - } -#endif - -#ifdef JOYSTICK_ENABLE - joystick_task(); -#endif - - // update LED - if (led_status != host_keyboard_leds()) { - led_status = host_keyboard_leds(); - keyboard_set_leds(led_status); - } -} - -/** \brief keyboard set leds - * - * FIXME: needs doc - */ -void keyboard_set_leds(uint8_t leds) { - if (debug_keyboard) { - debug("keyboard_set_led: "); - debug_hex8(leds); - debug("\n"); - } - led_set(leds); -} diff --git a/tmk_core/common/keycode.h b/tmk_core/common/keycode.h deleted file mode 100644 index 57f76afd2f4e..000000000000 --- a/tmk_core/common/keycode.h +++ /dev/null @@ -1,560 +0,0 @@ -/* -Copyright 2011,2012 Jun Wako <wakojun@gmail.com> - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -/* - * Keycodes based on HID Keyboard/Keypad Usage Page (0x07) plus media keys from Generic Desktop Page (0x01) and Consumer Page (0x0C) - * - * See https://web.archive.org/web/20060218214400/http://www.usb.org/developers/devclass_docs/Hut1_12.pdf - * or http://www.usb.org/developers/hidpage/Hut1_12v2.pdf (older) - */ - -#pragma once - -/* FIXME: Add doxygen comments here */ - -#define IS_ERROR(code) (KC_ROLL_OVER <= (code) && (code) <= KC_UNDEFINED) -#define IS_ANY(code) (KC_A <= (code) && (code) <= 0xFF) -#define IS_KEY(code) (KC_A <= (code) && (code) <= KC_EXSEL) -#define IS_MOD(code) (KC_LCTRL <= (code) && (code) <= KC_RGUI) - -#define IS_SPECIAL(code) ((0xA5 <= (code) && (code) <= 0xDF) || (0xE8 <= (code) && (code) <= 0xFF)) -#define IS_SYSTEM(code) (KC_PWR <= (code) && (code) <= KC_WAKE) -#define IS_CONSUMER(code) (KC_MUTE <= (code) && (code) <= KC_BRID) - -#define IS_FN(code) (KC_FN0 <= (code) && (code) <= KC_FN31) - -#define IS_MOUSEKEY(code) (KC_MS_UP <= (code) && (code) <= KC_MS_ACCEL2) -#define IS_MOUSEKEY_MOVE(code) (KC_MS_UP <= (code) && (code) <= KC_MS_RIGHT) -#define IS_MOUSEKEY_BUTTON(code) (KC_MS_BTN1 <= (code) && (code) <= KC_MS_BTN8) -#define IS_MOUSEKEY_WHEEL(code) (KC_MS_WH_UP <= (code) && (code) <= KC_MS_WH_RIGHT) -#define IS_MOUSEKEY_ACCEL(code) (KC_MS_ACCEL0 <= (code) && (code) <= KC_MS_ACCEL2) - -#define MOD_BIT(code) (1 << MOD_INDEX(code)) -#define MOD_INDEX(code) ((code)&0x07) - -#define MOD_MASK_CTRL (MOD_BIT(KC_LCTRL) | MOD_BIT(KC_RCTRL)) -#define MOD_MASK_SHIFT (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) -#define MOD_MASK_ALT (MOD_BIT(KC_LALT) | MOD_BIT(KC_RALT)) -#define MOD_MASK_GUI (MOD_BIT(KC_LGUI) | MOD_BIT(KC_RGUI)) -#define MOD_MASK_CS (MOD_MASK_CTRL | MOD_MASK_SHIFT) -#define MOD_MASK_CA (MOD_MASK_CTRL | MOD_MASK_ALT) -#define MOD_MASK_CG (MOD_MASK_CTRL | MOD_MASK_GUI) -#define MOD_MASK_SA (MOD_MASK_SHIFT | MOD_MASK_ALT) -#define MOD_MASK_SG (MOD_MASK_SHIFT | MOD_MASK_GUI) -#define MOD_MASK_AG (MOD_MASK_ALT | MOD_MASK_GUI) -#define MOD_MASK_CSA (MOD_MASK_CTRL | MOD_MASK_SHIFT | MOD_MASK_ALT) -#define MOD_MASK_CSG (MOD_MASK_CTRL | MOD_MASK_SHIFT | MOD_MASK_GUI) -#define MOD_MASK_CAG (MOD_MASK_CTRL | MOD_MASK_ALT | MOD_MASK_GUI) -#define MOD_MASK_SAG (MOD_MASK_SHIFT | MOD_MASK_ALT | MOD_MASK_GUI) -#define MOD_MASK_CSAG (MOD_MASK_CTRL | MOD_MASK_SHIFT | MOD_MASK_ALT | MOD_MASK_GUI) - -#define FN_BIT(code) (1 << FN_INDEX(code)) -#define FN_INDEX(code) ((code)-KC_FN0) -#define FN_MIN KC_FN0 -#define FN_MAX KC_FN31 - -/* - * Short names for ease of definition of keymap - */ -/* Transparent */ -#define KC_TRANSPARENT 0x01 -#define KC_TRNS KC_TRANSPARENT - -/* Punctuation */ -#define KC_ENT KC_ENTER -#define KC_ESC KC_ESCAPE -#define KC_BSPC KC_BSPACE -#define KC_SPC KC_SPACE -#define KC_MINS KC_MINUS -#define KC_EQL KC_EQUAL -#define KC_LBRC KC_LBRACKET -#define KC_RBRC KC_RBRACKET -#define KC_BSLS KC_BSLASH -#define KC_NUHS KC_NONUS_HASH -#define KC_SCLN KC_SCOLON -#define KC_QUOT KC_QUOTE -#define KC_GRV KC_GRAVE -#define KC_COMM KC_COMMA -#define KC_SLSH KC_SLASH -#define KC_NUBS KC_NONUS_BSLASH - -/* Lock Keys */ -#define KC_CLCK KC_CAPSLOCK -#define KC_CAPS KC_CAPSLOCK -#define KC_SLCK KC_SCROLLLOCK -#define KC_NLCK KC_NUMLOCK -#define KC_LCAP KC_LOCKING_CAPS -#define KC_LNUM KC_LOCKING_NUM -#define KC_LSCR KC_LOCKING_SCROLL - -/* Commands */ -#define KC_PSCR KC_PSCREEN -#define KC_PAUS KC_PAUSE -#define KC_BRK KC_PAUSE -#define KC_INS KC_INSERT -#define KC_DEL KC_DELETE -#define KC_PGDN KC_PGDOWN -#define KC_RGHT KC_RIGHT -#define KC_APP KC_APPLICATION -#define KC_EXEC KC_EXECUTE -#define KC_SLCT KC_SELECT -#define KC_AGIN KC_AGAIN]]]]]]]]]]]]] -#define KC_PSTE KC_PASTE -#define KC_ERAS KC_ALT_ERASE -#define KC_CLR KC_CLEAR - -/* Keypad */ -#define KC_PSLS KC_KP_SLASH -#define KC_PAST KC_KP_ASTERISK -#define KC_PMNS KC_KP_MINUS -#define KC_PPLS KC_KP_PLUS -#define KC_PENT KC_KP_ENTER -#define KC_P1 KC_KP_1 -#define KC_P2 KC_KP_2 -#define KC_P3 KC_KP_3 -#define KC_P4 KC_KP_4 -#define KC_P5 KC_KP_5 -#define KC_P6 KC_KP_6 -#define KC_P7 KC_KP_7 -#define KC_P8 KC_KP_8 -#define KC_P9 KC_KP_9 -#define KC_P0 KC_KP_0 -#define KC_PDOT KC_KP_DOT -#define KC_PEQL KC_KP_EQUAL -#define KC_PCMM KC_KP_COMMA - -/* Japanese specific */ -#define KC_ZKHK KC_GRAVE -#define KC_RO KC_INT1 -#define KC_KANA KC_INT2 -#define KC_JYEN KC_INT3 -#define KC_HENK KC_INT4 -#define KC_MHEN KC_INT5 - -/* Korean specific */ -#define KC_HAEN KC_LANG1 -#define KC_HANJ KC_LANG2 - -/* Modifiers */ -#define KC_LCTL KC_LCTRL -#define KC_LSFT KC_LSHIFT -#define KC_LOPT KC_LALT -#define KC_LCMD KC_LGUI -#define KC_LWIN KC_LGUI -#define KC_RCTL KC_RCTRL -#define KC_RSFT KC_RSHIFT -#define KC_ALGR KC_RALT -#define KC_ROPT KC_RALT -#define KC_RCMD KC_RGUI -#define KC_RWIN KC_RGUI - -/* Generic Desktop Page (0x01) */ -#define KC_PWR KC_SYSTEM_POWER -#define KC_SLEP KC_SYSTEM_SLEEP -#define KC_WAKE KC_SYSTEM_WAKE - -/* Consumer Page (0x0C) */ -#define KC_MUTE KC_AUDIO_MUTE -#define KC_VOLU KC_AUDIO_VOL_UP -#define KC_VOLD KC_AUDIO_VOL_DOWN -#define KC_MNXT KC_MEDIA_NEXT_TRACK -#define KC_MPRV KC_MEDIA_PREV_TRACK -#define KC_MSTP KC_MEDIA_STOP -#define KC_MPLY KC_MEDIA_PLAY_PAUSE -#define KC_MSEL KC_MEDIA_SELECT -#define KC_EJCT KC_MEDIA_EJECT -#define KC_CALC KC_CALCULATOR -#define KC_MYCM KC_MY_COMPUTER -#define KC_WSCH KC_WWW_SEARCH -#define KC_WHOM KC_WWW_HOME -#define KC_WBAK KC_WWW_BACK -#define KC_WFWD KC_WWW_FORWARD -#define KC_WSTP KC_WWW_STOP -#define KC_WREF KC_WWW_REFRESH -#define KC_WFAV KC_WWW_FAVORITES -#define KC_MFFD KC_MEDIA_FAST_FORWARD -#define KC_MRWD KC_MEDIA_REWIND -#define KC_BRIU KC_BRIGHTNESS_UP -#define KC_BRID KC_BRIGHTNESS_DOWN - -/* System Specific */ -#define KC_BRMU KC_PAUSE -#define KC_BRMD KC_SCROLLLOCK - -/* Mouse Keys */ -#define KC_MS_U KC_MS_UP -#define KC_MS_D KC_MS_DOWN -#define KC_MS_L KC_MS_LEFT -#define KC_MS_R KC_MS_RIGHT -#define KC_BTN1 KC_MS_BTN1 -#define KC_BTN2 KC_MS_BTN2 -#define KC_BTN3 KC_MS_BTN3 -#define KC_BTN4 KC_MS_BTN4 -#define KC_BTN5 KC_MS_BTN5 -#define KC_BTN6 KC_MS_BTN6 -#define KC_BTN7 KC_MS_BTN7 -#define KC_BTN8 KC_MS_BTN8 -#define KC_WH_U KC_MS_WH_UP -#define KC_WH_D KC_MS_WH_DOWN -#define KC_WH_L KC_MS_WH_LEFT -#define KC_WH_R KC_MS_WH_RIGHT -#define KC_ACL0 KC_MS_ACCEL0 -#define KC_ACL1 KC_MS_ACCEL1 -#define KC_ACL2 KC_MS_ACCEL2 - -/* Keyboard/Keypad Page (0x07) */ -enum hid_keyboard_keypad_usage { - KC_NO = 0x00, - KC_ROLL_OVER, - KC_POST_FAIL, - KC_UNDEFINED, - KC_A, - KC_B, - KC_C, - KC_D, - KC_E, - KC_F, - KC_G, - KC_H, - KC_I, - KC_J, - KC_K, - KC_L, - KC_M, // 0x10 - KC_N, - KC_O, - KC_P, - KC_Q, - KC_R, - KC_S, - KC_T, - KC_U, - KC_V, - KC_W, - KC_X, - KC_Y, - KC_Z, - KC_1, - KC_2, - KC_3, // 0x20 - KC_4, - KC_5, - KC_6, - KC_7, - KC_8, - KC_9, - KC_0, - KC_ENTER, - KC_ESCAPE, - KC_BSPACE, - KC_TAB, - KC_SPACE, - KC_MINUS, - KC_EQUAL, - KC_LBRACKET, - KC_RBRACKET, // 0x30 - KC_BSLASH, - KC_NONUS_HASH, - KC_SCOLON, - KC_QUOTE, - KC_GRAVE, - KC_COMMA, - KC_DOT, - KC_SLASH, - KC_CAPSLOCK, - KC_F1, - KC_F2, - KC_F3, - KC_F4, - KC_F5, - KC_F6, - KC_F7, // 0x40 - KC_F8, - KC_F9, - KC_F10, - KC_F11, - KC_F12, - KC_PSCREEN, - KC_SCROLLLOCK, - KC_PAUSE, - KC_INSERT, - KC_HOME, - KC_PGUP, - KC_DELETE, - KC_END, - KC_PGDOWN, - KC_RIGHT, - KC_LEFT, // 0x50 - KC_DOWN, - KC_UP, - KC_NUMLOCK, - KC_KP_SLASH, - KC_KP_ASTERISK, - KC_KP_MINUS, - KC_KP_PLUS, - KC_KP_ENTER, - KC_KP_1, - KC_KP_2, - KC_KP_3, - KC_KP_4, - KC_KP_5, - KC_KP_6, - KC_KP_7, - KC_KP_8, // 0x60 - KC_KP_9, - KC_KP_0, - KC_KP_DOT, - KC_NONUS_BSLASH, - KC_APPLICATION, - KC_POWER, - KC_KP_EQUAL, - KC_F13, - KC_F14, - KC_F15, - KC_F16, - KC_F17, - KC_F18, - KC_F19, - KC_F20, - KC_F21, // 0x70 - KC_F22, - KC_F23, - KC_F24, - KC_EXECUTE, - KC_HELP, - KC_MENU, - KC_SELECT, - KC_STOP, - KC_AGAIN, - KC_UNDO, - KC_CUT, - KC_COPY, - KC_PASTE, - KC_FIND, - KC__MUTE, - KC__VOLUP, // 0x80 - KC__VOLDOWN, - KC_LOCKING_CAPS, - KC_LOCKING_NUM, - KC_LOCKING_SCROLL, - KC_KP_COMMA, - KC_KP_EQUAL_AS400, - KC_INT1, - KC_INT2, - KC_INT3, - KC_INT4, - KC_INT5, - KC_INT6, - KC_INT7, - KC_INT8, - KC_INT9, - KC_LANG1, // 0x90 - KC_LANG2, - KC_LANG3, - KC_LANG4, - KC_LANG5, - KC_LANG6, - KC_LANG7, - KC_LANG8, - KC_LANG9, - KC_ALT_ERASE, - KC_SYSREQ, - KC_CANCEL, - KC_CLEAR, - KC_PRIOR, - KC_RETURN, - KC_SEPARATOR, - KC_OUT, // 0xA0 - KC_OPER, - KC_CLEAR_AGAIN, - KC_CRSEL, - KC_EXSEL, - -#if 0 - // *************************************************************** - // These keycodes are present in the HID spec, but are * - // nonfunctional on modern OSes. QMK uses this range (0xA5-0xDF) * - // for the media and function keys instead - see below. * - // *************************************************************** - - KC_KP_00 = 0xB0, - KC_KP_000, - KC_THOUSANDS_SEPARATOR, - KC_DECIMAL_SEPARATOR, - KC_CURRENCY_UNIT, - KC_CURRENCY_SUB_UNIT, - KC_KP_LPAREN, - KC_KP_RPAREN, - KC_KP_LCBRACKET, - KC_KP_RCBRACKET, - KC_KP_TAB, - KC_KP_BSPACE, - KC_KP_A, - KC_KP_B, - KC_KP_C, - KC_KP_D, - KC_KP_E, //0xC0 - KC_KP_F, - KC_KP_XOR, - KC_KP_HAT, - KC_KP_PERC, - KC_KP_LT, - KC_KP_GT, - KC_KP_AND, - KC_KP_LAZYAND, - KC_KP_OR, - KC_KP_LAZYOR, - KC_KP_COLON, - KC_KP_HASH, - KC_KP_SPACE, - KC_KP_ATMARK, - KC_KP_EXCLAMATION, - KC_KP_MEM_STORE, //0xD0 - KC_KP_MEM_RECALL, - KC_KP_MEM_CLEAR, - KC_KP_MEM_ADD, - KC_KP_MEM_SUB, - KC_KP_MEM_MUL, - KC_KP_MEM_DIV, - KC_KP_PLUS_MINUS, - KC_KP_CLEAR, - KC_KP_CLEAR_ENTRY, - KC_KP_BINARY, - KC_KP_OCTAL, - KC_KP_DECIMAL, - KC_KP_HEXADECIMAL, -#endif - - /* Modifiers */ - KC_LCTRL = 0xE0, - KC_LSHIFT, - KC_LALT, - KC_LGUI, - KC_RCTRL, - KC_RSHIFT, - KC_RALT, - KC_RGUI - - // ********************************************** - // * 0xF0-0xFF are unallocated in the HID spec. * - // * QMK uses these for Mouse Keys - see below. * - // ********************************************** -}; - -/* Media and Function keys */ -enum internal_special_keycodes { - /* Generic Desktop Page (0x01) */ - KC_SYSTEM_POWER = 0xA5, - KC_SYSTEM_SLEEP, - KC_SYSTEM_WAKE, - - /* Consumer Page (0x0C) */ - KC_AUDIO_MUTE, - KC_AUDIO_VOL_UP, - KC_AUDIO_VOL_DOWN, - KC_MEDIA_NEXT_TRACK, - KC_MEDIA_PREV_TRACK, - KC_MEDIA_STOP, - KC_MEDIA_PLAY_PAUSE, - KC_MEDIA_SELECT, - KC_MEDIA_EJECT, // 0xB0 - KC_MAIL, - KC_CALCULATOR, - KC_MY_COMPUTER, - KC_WWW_SEARCH, - KC_WWW_HOME, - KC_WWW_BACK, - KC_WWW_FORWARD, - KC_WWW_STOP, - KC_WWW_REFRESH, - KC_WWW_FAVORITES, - KC_MEDIA_FAST_FORWARD, - KC_MEDIA_REWIND, - KC_BRIGHTNESS_UP, - KC_BRIGHTNESS_DOWN, - - /* Fn keys */ - KC_FN0 = 0xC0, - KC_FN1, - KC_FN2, - KC_FN3, - KC_FN4, - KC_FN5, - KC_FN6, - KC_FN7, - KC_FN8, - KC_FN9, - KC_FN10, - KC_FN11, - KC_FN12, - KC_FN13, - KC_FN14, - KC_FN15, - KC_FN16, // 0xD0 - KC_FN17, - KC_FN18, - KC_FN19, - KC_FN20, - KC_FN21, - KC_FN22, - KC_FN23, - KC_FN24, - KC_FN25, - KC_FN26, - KC_FN27, - KC_FN28, - KC_FN29, - KC_FN30, - KC_FN31 -}; - -enum mouse_keys { -/* Mouse Buttons */ -#ifdef VIA_ENABLE - KC_MS_UP = 0xF0, -#else - KC_MS_UP = 0xED, -#endif - KC_MS_DOWN, - KC_MS_LEFT, - KC_MS_RIGHT, // 0xF0 - KC_MS_BTN1, - KC_MS_BTN2, - KC_MS_BTN3, - KC_MS_BTN4, - KC_MS_BTN5, -#ifdef VIA_ENABLE - KC_MS_BTN6 = KC_MS_BTN5, - KC_MS_BTN7 = KC_MS_BTN5, - KC_MS_BTN8 = KC_MS_BTN5, -#else - KC_MS_BTN6, - KC_MS_BTN7, - KC_MS_BTN8, -#endif - - /* Mouse Wheel */ - KC_MS_WH_UP, - KC_MS_WH_DOWN, - KC_MS_WH_LEFT, - KC_MS_WH_RIGHT, - - /* Acceleration */ - KC_MS_ACCEL0, - KC_MS_ACCEL1, - KC_MS_ACCEL2 // 0xFF -}; diff --git a/tmk_core/common/lib_printf.mk b/tmk_core/common/lib_printf.mk deleted file mode 100644 index 10d2d8468d95..000000000000 --- a/tmk_core/common/lib_printf.mk +++ /dev/null @@ -1,9 +0,0 @@ -PRINTF_PATH = $(LIB_PATH)/printf - -TMK_COMMON_SRC += $(PRINTF_PATH)/printf.c -TMK_COMMON_SRC += $(COMMON_DIR)/printf.c -TMK_COMMON_DEFS += -DPRINTF_DISABLE_SUPPORT_FLOAT -TMK_COMMON_DEFS += -DPRINTF_DISABLE_SUPPORT_EXPONENTIAL -TMK_COMMON_DEFS += -DPRINTF_DISABLE_SUPPORT_LONG_LONG -TMK_COMMON_DEFS += -DPRINTF_DISABLE_SUPPORT_PTRDIFF_T -VPATH += $(PRINTF_PATH) diff --git a/tmk_core/common/sendchar_null.c b/tmk_core/common/sendchar_null.c deleted file mode 100644 index fb67f70866ad..000000000000 --- a/tmk_core/common/sendchar_null.c +++ /dev/null @@ -1,19 +0,0 @@ -/* -Copyright 2011 Jun Wako <wakojun@gmail.com> - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ -#include "sendchar.h" - -__attribute__((weak)) int8_t sendchar(uint8_t c) { return 0; } diff --git a/tmk_core/common/sendchar_uart.c b/tmk_core/common/sendchar_uart.c deleted file mode 100644 index 2fc48bafffbc..000000000000 --- a/tmk_core/common/sendchar_uart.c +++ /dev/null @@ -1,23 +0,0 @@ -/* -Copyright 2011 Jun Wako <wakojun@gmail.com> - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ -#include "uart.h" -#include "sendchar.h" - -int8_t sendchar(uint8_t c) { - uart_putchar(c); - return 0; -} diff --git a/tmk_core/common/timer.h b/tmk_core/common/timer.h deleted file mode 100644 index 58f637dd9359..000000000000 --- a/tmk_core/common/timer.h +++ /dev/null @@ -1,52 +0,0 @@ -/* -Copyright 2011 Jun Wako <wakojun@gmail.com> - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#pragma once - -#include <stdint.h> -#include <stdbool.h> - -#if defined(__AVR__) -# include "avr/timer_avr.h" -#endif - -#define TIMER_DIFF(a, b, max) ((max == UINT8_MAX) ? ((uint8_t)((a) - (b))) : ((max == UINT16_MAX) ? ((uint16_t)((a) - (b))) : ((max == UINT32_MAX) ? ((uint32_t)((a) - (b))) : ((a) >= (b) ? (a) - (b) : (max) + 1 - (b) + (a))))) -#define TIMER_DIFF_8(a, b) TIMER_DIFF(a, b, UINT8_MAX) -#define TIMER_DIFF_16(a, b) TIMER_DIFF(a, b, UINT16_MAX) -#define TIMER_DIFF_32(a, b) TIMER_DIFF(a, b, UINT32_MAX) -#define TIMER_DIFF_RAW(a, b) TIMER_DIFF_8(a, b) - -#ifdef __cplusplus -extern "C" { -#endif - -extern volatile uint32_t timer_count; - -void timer_init(void); -void timer_clear(void); -uint16_t timer_read(void); -uint32_t timer_read32(void); -uint16_t timer_elapsed(uint16_t last); -uint32_t timer_elapsed32(uint32_t last); - -// Utility functions to check if a future time has expired & autmatically handle time wrapping if checked / reset frequently (half of max value) -#define timer_expired(current, future) ((uint16_t)(current - future) < UINT16_MAX / 2) -#define timer_expired32(current, future) ((uint32_t)(current - future) < UINT32_MAX / 2) - -#ifdef __cplusplus -} -#endif diff --git a/tmk_core/native.mk b/tmk_core/native.mk deleted file mode 100644 index 3caf64454676..000000000000 --- a/tmk_core/native.mk +++ /dev/null @@ -1,29 +0,0 @@ -SYSTEM_TYPE := $(shell gcc -dumpmachine) - -CC = gcc -OBJCOPY = -OBJDUMP = -SIZE = -AR = -NM = -HEX = -EEP = -BIN = - - -COMPILEFLAGS += -funsigned-char -COMPILEFLAGS += -funsigned-bitfields -COMPILEFLAGS += -ffunction-sections -COMPILEFLAGS += -fdata-sections -COMPILEFLAGS += -fshort-enums -ifneq ($(findstring mingw, ${SYSTEM_TYPE}),) -COMPILEFLAGS += -mno-ms-bitfields -endif - -CFLAGS += $(COMPILEFLAGS) -CFLAGS += -fno-inline-small-functions -CFLAGS += -fno-strict-aliasing - -CXXFLAGS += $(COMPILEFLAGS) -CXXFLAGS += -fno-exceptions -CXXFLAGS += -std=gnu++11 diff --git a/tmk_core/protocol.mk b/tmk_core/protocol.mk index cc87e8347839..31a6de76f104 100644 --- a/tmk_core/protocol.mk +++ b/tmk_core/protocol.mk @@ -1,57 +1,83 @@ -PROTOCOL_DIR = protocol +TMK_COMMON_SRC += \ + $(PROTOCOL_DIR)/host.c \ + $(PROTOCOL_DIR)/report.c \ + $(PROTOCOL_DIR)/usb_device_state.c \ + $(PROTOCOL_DIR)/usb_util.c \ -ifeq ($(strip $(PS2_MOUSE_ENABLE)), yes) - SRC += $(PROTOCOL_DIR)/ps2_mouse.c - OPT_DEFS += -DPS2_MOUSE_ENABLE +SHARED_EP_ENABLE = no +MOUSE_SHARED_EP ?= yes +ifeq ($(strip $(KEYBOARD_SHARED_EP)), yes) + TMK_COMMON_DEFS += -DKEYBOARD_SHARED_EP + SHARED_EP_ENABLE = yes + # With the current usb_descriptor.c code, + # you can't share kbd without sharing mouse; + # that would be a very unexpected use case anyway + MOUSE_SHARED_EP = yes +endif + +ifeq ($(strip $(MOUSE_ENABLE)), yes) OPT_DEFS += -DMOUSE_ENABLE + ifeq ($(strip $(MOUSE_SHARED_EP)), yes) + TMK_COMMON_DEFS += -DMOUSE_SHARED_EP + SHARED_EP_ENABLE = yes + endif endif -ifeq ($(strip $(PS2_USE_BUSYWAIT)), yes) - SRC += protocol/ps2_busywait.c - SRC += protocol/ps2_io_avr.c - OPT_DEFS += -DPS2_USE_BUSYWAIT +ifeq ($(strip $(EXTRAKEY_ENABLE)), yes) + TMK_COMMON_DEFS += -DEXTRAKEY_ENABLE + SHARED_EP_ENABLE = yes endif -ifeq ($(strip $(PS2_USE_INT)), yes) - SRC += protocol/ps2_interrupt.c - SRC += protocol/ps2_io_avr.c - OPT_DEFS += -DPS2_USE_INT +ifeq ($(strip $(RAW_ENABLE)), yes) + TMK_COMMON_DEFS += -DRAW_ENABLE endif -ifeq ($(strip $(PS2_USE_USART)), yes) - SRC += protocol/ps2_usart.c - SRC += protocol/ps2_io_avr.c - OPT_DEFS += -DPS2_USE_USART +ifeq ($(strip $(CONSOLE_ENABLE)), yes) + TMK_COMMON_DEFS += -DCONSOLE_ENABLE +else + # TODO: decouple this so other print backends can exist + TMK_COMMON_DEFS += -DNO_PRINT + TMK_COMMON_DEFS += -DNO_DEBUG endif +ifeq ($(strip $(NKRO_ENABLE)), yes) + ifeq ($(PROTOCOL), VUSB) + $(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 + TMK_COMMON_DEFS += -DNKRO_ENABLE + SHARED_EP_ENABLE = yes + endif +endif -ifeq ($(strip $(SERIAL_MOUSE_MICROSOFT_ENABLE)), yes) - SRC += $(PROTOCOL_DIR)/serial_mouse_microsoft.c - OPT_DEFS += -DSERIAL_MOUSE_ENABLE -DSERIAL_MOUSE_MICROSOFT \ - -DMOUSE_ENABLE +ifeq ($(strip $(RING_BUFFERED_6KRO_REPORT_ENABLE)), yes) + TMK_COMMON_DEFS += -DRING_BUFFERED_6KRO_REPORT_ENABLE endif -ifeq ($(strip $(SERIAL_MOUSE_MOUSESYSTEMS_ENABLE)), yes) - SRC += $(PROTOCOL_DIR)/serial_mouse_mousesystems.c - OPT_DEFS += -DSERIAL_MOUSE_ENABLE -DSERIAL_MOUSE_MOUSESYSTEMS \ - -DMOUSE_ENABLE +ifeq ($(strip $(NO_SUSPEND_POWER_DOWN)), yes) + TMK_COMMON_DEFS += -DNO_SUSPEND_POWER_DOWN endif -ifeq ($(strip $(SERIAL_MOUSE_USE_SOFT)), yes) - SRC += $(PROTOCOL_DIR)/serial_soft.c +ifeq ($(strip $(NO_USB_STARTUP_CHECK)), yes) + TMK_COMMON_DEFS += -DNO_USB_STARTUP_CHECK endif -ifeq ($(strip $(SERIAL_MOUSE_USE_UART)), yes) - SRC += $(PROTOCOL_DIR)/serial_uart.c +ifeq ($(strip $(DIGITIZER_SHARED_EP)), yes) + TMK_COMMON_DEFS += -DDIGITIZER_SHARED_EP + SHARED_EP_ENABLE = yes endif -ifeq ($(strip $(ADB_MOUSE_ENABLE)), yes) - OPT_DEFS += -DADB_MOUSE_ENABLE -DMOUSE_ENABLE +ifeq ($(strip $(DIGITIZER_ENABLE)), yes) + TMK_COMMON_DEFS += -DDIGITIZER_ENABLE + ifeq ($(strip $(SHARED_EP_ENABLE)), yes) + TMK_COMMON_DEFS += -DDIGITIZER_SHARED_EP + SHARED_EP_ENABLE = yes + endif endif -ifeq ($(strip $(XT_ENABLE)), yes) - SRC += $(PROTOCOL_DIR)/xt_interrupt.c - OPT_DEFS += -DXT_ENABLE +ifeq ($(strip $(SHARED_EP_ENABLE)), yes) + TMK_COMMON_DEFS += -DSHARED_EP_ENABLE endif ifeq ($(strip $(USB_HID_ENABLE)), yes) diff --git a/tmk_core/protocol/arm_atsam.mk b/tmk_core/protocol/arm_atsam.mk index 5bb45d658e51..ffd1fa9f5027 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 d126c66e7d11..e1749f872daa 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 dda2f85b0019..af046625f433 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 68773f213fbe..e11235d4476a 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 ce0f54593cc9..de12821a7472 100644 --- a/tmk_core/protocol/arm_atsam/main_arm_atsam.c +++ b/tmk_core/protocol/arm_atsam/main_arm_atsam.c @@ -16,7 +16,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */ #include "samd51j18a.h" -#include "tmk_core/common/keyboard.h" +#include "keyboard.h" #include "report.h" #include "host.h" @@ -40,6 +40,10 @@ void send_mouse(report_mouse_t *report); void send_system(uint16_t data); void send_consumer(uint16_t data); +#ifdef DEFERRED_EXEC_ENABLE +void deferred_exec_task(void); +#endif // DEFERRED_EXEC_ENABLE + host_driver_t arm_atsam_driver = {keyboard_leds, send_keyboard, send_mouse, send_system, send_consumer}; uint8_t led_states; @@ -140,6 +144,57 @@ void send_consumer(uint16_t data) { #endif // EXTRAKEY_ENABLE } +#ifdef CONSOLE_ENABLE +# define CONSOLE_PRINTBUF_SIZE 512 +static char console_printbuf[CONSOLE_PRINTBUF_SIZE]; +static uint16_t console_printbuf_len = 0; + +int8_t sendchar(uint8_t c) { + if (console_printbuf_len >= CONSOLE_PRINTBUF_SIZE) return -1; + + console_printbuf[console_printbuf_len++] = c; + return 0; +} + +void main_subtask_console_flush(void) { + while (udi_hid_con_b_report_trans_ongoing) { + } // Wait for any previous transfers to complete + + uint16_t result = console_printbuf_len; + uint32_t irqflags; + char * pconbuf = console_printbuf; // Pointer to start send from + int send_out = CONSOLE_EPSIZE; // Bytes to send per transfer + + while (result > 0) { // While not error and bytes remain + while (udi_hid_con_b_report_trans_ongoing) { + } // Wait for any previous transfers to complete + + irqflags = __get_PRIMASK(); + __disable_irq(); + __DMB(); + + if (result < CONSOLE_EPSIZE) { // If remaining bytes are less than console epsize + memset(udi_hid_con_report, 0, CONSOLE_EPSIZE); // Clear the buffer + send_out = result; // Send remaining size + } + + memcpy(udi_hid_con_report, pconbuf, send_out); // Copy data into the send buffer + + udi_hid_con_b_report_valid = 1; // Set report valid + udi_hid_con_send_report(); // Send report + + __DMB(); + __set_PRIMASK(irqflags); + + result -= send_out; // Decrement result by bytes sent + pconbuf += send_out; // Increment buffer point by bytes sent + } + + console_printbuf_len = 0; +} + +#endif // CONSOLE_ENABLE + void main_subtask_usb_state(void) { static uint64_t fsmstate_on_delay = 0; // Delay timer to be sure USB is actually operating before bringing up hardware uint8_t fsmstate_now = USB->DEVICE.FSMSTATUS.reg; // Current state from hardware register @@ -214,6 +269,9 @@ void main_subtasks(void) { main_subtask_usb_state(); main_subtask_power_check(); main_subtask_usb_extra_device(); +#ifdef CONSOLE_ENABLE + main_subtask_console_flush(); +#endif #ifdef RAW_ENABLE main_subtask_raw(); #endif @@ -242,7 +300,7 @@ int main(void) { matrix_init(); - USB2422_init(); + USB_Hub_init(); DBGC(DC_MAIN_UDC_START_BEGIN); udc_start(); @@ -252,7 +310,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; @@ -306,6 +364,11 @@ int main(void) { } #endif // CONSOLE_ENABLE +#ifdef DEFERRED_EXEC_ENABLE + // Run deferred executions + deferred_exec_task(); +#endif // DEFERRED_EXEC_ENABLE + // Run housekeeping housekeeping_task(); } diff --git a/tmk_core/protocol/arm_atsam/md_rgb_matrix.c b/tmk_core/protocol/arm_atsam/md_rgb_matrix.c index 609ae047e642..0741584439f7 100644 --- a/tmk_core/protocol/arm_atsam/md_rgb_matrix.c +++ b/tmk_core/protocol/arm_atsam/md_rgb_matrix.c @@ -15,6 +15,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/>. */ +#define FLUSH_TIMEOUT 5000 +#define EECONFIG_MD_LED ((uint8_t*)(EECONFIG_SIZE + 64)) +#define MD_LED_CONFIG_VERSION 1 + #ifdef RGB_MATRIX_ENABLE # include "arm_atsam_protocol.h" # include "led.h" @@ -23,8 +27,41 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. # include <math.h> # ifdef USE_MASSDROP_CONFIGURATOR +// TODO?: wire these up to keymap.c +md_led_config_t md_led_config = {0}; + +EECONFIG_DEBOUNCE_HELPER(md_led, EECONFIG_MD_LED, md_led_config); + +void eeconfig_update_md_led_default(void) { + md_led_config.ver = MD_LED_CONFIG_VERSION; + + gcr_desired = LED_GCR_MAX; + led_animation_orientation = 0; + led_animation_direction = 0; + led_animation_breathing = 0; + led_animation_id = 0; + led_animation_speed = 4.0f; + led_lighting_mode = LED_MODE_NORMAL; + led_enabled = 1; + led_animation_breathe_cur = BREATHE_MIN_STEP; + breathe_dir = 1; + led_animation_circular = 0; + led_edge_brightness = 1.0f; + led_ratio_brightness = 1.0f; + led_edge_mode = LED_EDGE_MODE_ALL; + + eeconfig_flush_md_led(true); +} + +void md_led_changed(void) { eeconfig_flag_md_led(true); } + +// todo: use real task rather than this bodge +void housekeeping_task_kb(void) { eeconfig_flush_md_led_task(FLUSH_TIMEOUT); } + __attribute__((weak)) led_instruction_t led_instructions[] = {{.end = 1}}; static void md_rgb_matrix_config_override(int i); +# else +uint8_t gcr_desired; # endif // USE_MASSDROP_CONFIGURATOR void SERCOM1_0_Handler(void) { @@ -56,7 +93,6 @@ issi3733_driver_t issidrv[ISSI3733_DRIVER_COUNT]; issi3733_led_t led_map[ISSI3733_LED_COUNT] = ISSI3733_LED_MAP; RGB led_buffer[ISSI3733_LED_COUNT]; -uint8_t gcr_desired; uint8_t gcr_actual; uint8_t gcr_actual_last; # ifdef USE_MASSDROP_CONFIGURATOR @@ -218,6 +254,13 @@ static void led_set_all(uint8_t r, uint8_t g, uint8_t b) { static void init(void) { DBGC(DC_LED_MATRIX_INIT_BEGIN); +# ifdef USE_MASSDROP_CONFIGURATOR + eeconfig_init_md_led(); + if (md_led_config.ver != MD_LED_CONFIG_VERSION) { + eeconfig_update_md_led_default(); + } +# endif + issi3733_prepare_arrays(); md_rgb_matrix_prepare(); @@ -291,10 +334,10 @@ static void flush(void) { i2c_led_q_run(); } -void md_rgb_matrix_indicators(void) { +void md_rgb_matrix_indicators_advanced(uint8_t led_min, uint8_t led_max) { uint8_t kbled = keyboard_leds(); if (kbled && rgb_matrix_config.enable) { - for (uint8_t i = 0; i < ISSI3733_LED_COUNT; i++) { + for (uint8_t i = led_min; i < led_max; i++) { if ( # if USB_LED_NUM_LOCK_SCANCODE != 255 (led_map[i].scan == USB_LED_NUM_LOCK_SCANCODE && (kbled & (1 << USB_LED_NUM_LOCK))) || @@ -331,17 +374,6 @@ const rgb_matrix_driver_t rgb_matrix_driver = {.init = init, .flush = flush, .se # ifdef USE_MASSDROP_CONFIGURATOR // Ported from Massdrop QMK GitHub Repo -// TODO?: wire these up to keymap.c -uint8_t led_animation_orientation = 0; -uint8_t led_animation_direction = 0; -uint8_t led_animation_breathing = 0; -uint8_t led_animation_id = 0; -float led_animation_speed = 4.0f; -uint8_t led_lighting_mode = LED_MODE_NORMAL; -uint8_t led_enabled = 1; -uint8_t led_animation_breathe_cur = BREATHE_MIN_STEP; -uint8_t breathe_dir = 1; - static void led_run_pattern(led_setup_t* f, float* ro, float* go, float* bo, float pos) { float po; @@ -398,16 +430,32 @@ static void led_run_pattern(led_setup_t* f, float* ro, float* go, float* bo, flo } } +# define RGB_MAX_DISTANCE 232.9635f + static void md_rgb_matrix_config_override(int i) { float ro = 0; float go = 0; float bo = 0; - - float po = (led_animation_orientation) ? (float)g_led_config.point[i].y / 64.f * 100 : (float)g_led_config.point[i].x / 224.f * 100; + float po; uint8_t highest_active_layer = biton32(layer_state); - if (led_lighting_mode == LED_MODE_KEYS_ONLY && HAS_FLAGS(g_led_config.flags[i], LED_FLAG_UNDERGLOW)) { + if (led_animation_circular) { + // TODO: should use min/max values from LED configuration instead of + // hard-coded 224, 64 + // po = sqrtf((powf(fabsf((disp.width / 2) - (led_cur->x - disp.left)), 2) + powf(fabsf((disp.height / 2) - (led_cur->y - disp.bottom)), 2))) / disp.max_distance * 100; + po = sqrtf((powf(fabsf((224 / 2) - (float)g_led_config.point[i].x), 2) + powf(fabsf((64 / 2) - (float)g_led_config.point[i].y), 2))) / RGB_MAX_DISTANCE * 100; + } else { + if (led_animation_orientation) { + po = (float)g_led_config.point[i].y / 64.f * 100; + } else { + po = (float)g_led_config.point[i].x / 224.f * 100; + } + } + + if (led_edge_mode == LED_EDGE_MODE_ALTERNATE && LED_IS_EDGE_ALT(led_map[i].scan)) { + // Do not act on this LED (Edge alternate lighting mode) + } else if (led_lighting_mode == LED_MODE_KEYS_ONLY && HAS_FLAGS(g_led_config.flags[i], LED_FLAG_UNDERGLOW)) { // Do not act on this LED } else if (led_lighting_mode == LED_MODE_NON_KEYS_ONLY && !HAS_FLAGS(g_led_config.flags[i], LED_FLAG_UNDERGLOW)) { // Do not act on this LED @@ -465,10 +513,30 @@ static void md_rgb_matrix_config_override(int i) { } } + // Adjust edge LED brightness + if (led_edge_brightness != 1 && LED_IS_EDGE(led_map[i].scan)) { + ro *= led_edge_brightness; + go *= led_edge_brightness; + bo *= led_edge_brightness; + } + + // Adjust ratio of key vs. underglow (edge) LED brightness + if (LED_IS_EDGE(led_map[i].scan) && led_ratio_brightness > 1.0) { + // Decrease edge (underglow) LEDs + ro *= (2.0 - led_ratio_brightness); + go *= (2.0 - led_ratio_brightness); + bo *= (2.0 - led_ratio_brightness); + } else if (LED_IS_KEY(led_map[i].scan) && led_ratio_brightness < 1.0) { + // Decrease KEY LEDs + ro *= led_ratio_brightness; + go *= led_ratio_brightness; + bo *= led_ratio_brightness; + } + led_buffer[i].r = (uint8_t)ro; led_buffer[i].g = (uint8_t)go; led_buffer[i].b = (uint8_t)bo; } # endif // USE_MASSDROP_CONFIGURATOR -#endif // RGB_MATRIX_ENABLE \ No newline at end of file +#endif // RGB_MATRIX_ENABLE diff --git a/tmk_core/protocol/arm_atsam/md_rgb_matrix.h b/tmk_core/protocol/arm_atsam/md_rgb_matrix.h index 322b0f99d163..deea12b888ea 100644 --- a/tmk_core/protocol/arm_atsam/md_rgb_matrix.h +++ b/tmk_core/protocol/arm_atsam/md_rgb_matrix.h @@ -19,6 +19,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #define _LED_MATRIX_H_ #include "quantum.h" +#include "eeprom.h" // From keyboard #include "config_led.h" @@ -79,14 +80,13 @@ typedef struct issi3733_led_s { extern issi3733_driver_t issidrv[ISSI3733_DRIVER_COUNT]; -extern uint8_t gcr_desired; extern uint8_t gcr_breathe; extern uint8_t gcr_actual; extern uint8_t gcr_actual_last; void gcr_compute(void); -void md_rgb_matrix_indicators(void); +void md_rgb_matrix_indicators_advanced(uint8_t led_min, uint8_t led_max); /*------------------------- Legacy Lighting Support ------------------------*/ @@ -128,6 +128,8 @@ typedef struct led_instruction_s { uint32_t id1; // Bitwise id, IDs 32-63 uint32_t id2; // Bitwise id, IDs 64-95 uint32_t id3; // Bitwise id, IDs 96-127 + uint32_t id4; // Bitwise id, IDs 128-159 + uint32_t id5; // Bitwise id, IDs 160-191 uint8_t layer; uint8_t r; uint8_t g; @@ -138,14 +140,43 @@ typedef struct led_instruction_s { extern led_instruction_t led_instructions[]; -extern uint8_t led_animation_breathing; -extern uint8_t led_animation_id; -extern float led_animation_speed; -extern uint8_t led_lighting_mode; -extern uint8_t led_enabled; -extern uint8_t led_animation_breathe_cur; -extern uint8_t led_animation_direction; -extern uint8_t breathe_dir; +typedef struct led_config_s { + uint8_t ver; // assumed to be zero on eeprom reset + + uint8_t desired_gcr; + uint8_t animation_breathing; + uint8_t animation_id; + float animation_speed; + uint8_t lighting_mode; + uint8_t enabled; + uint8_t animation_breathe_cur; + uint8_t animation_direction; + uint8_t animation_breathe_dir; + uint8_t animation_orientation; + uint8_t animation_circular; + float edge_brightness; + float ratio_brightness; + uint8_t edge_mode; +} md_led_config_t; + +extern md_led_config_t md_led_config; + +void md_led_changed(void); + +# define gcr_desired md_led_config.desired_gcr +# define led_animation_breathing md_led_config.animation_breathing +# define led_animation_id md_led_config.animation_id +# define led_animation_speed md_led_config.animation_speed +# define led_lighting_mode md_led_config.lighting_mode +# define led_enabled md_led_config.enabled +# define led_animation_breathe_cur md_led_config.animation_breathe_cur +# define led_animation_direction md_led_config.animation_direction +# define breathe_dir md_led_config.animation_breathe_dir +# define led_animation_orientation md_led_config.animation_orientation +# define led_animation_circular md_led_config.animation_circular +# define led_edge_brightness md_led_config.edge_brightness +# define led_ratio_brightness md_led_config.ratio_brightness +# define led_edge_mode md_led_config.edge_mode # define LED_MODE_NORMAL 0 // Must be 0 # define LED_MODE_KEYS_ONLY 1 @@ -153,6 +184,21 @@ extern uint8_t breathe_dir; # define LED_MODE_INDICATORS_ONLY 3 # define LED_MODE_MAX_INDEX LED_MODE_INDICATORS_ONLY // Must be highest value +# define LED_EDGE_MODE_ALL 0 // All edge LEDs are active (Must be 0) +# define LED_EDGE_MODE_ALTERNATE 1 // Alternate mode of edge LEDs are active (Intention is for 'only every other edge LED' to be active) +# define LED_EDGE_MODE_MAX LED_EDGE_MODE_ALTERNATE // Must be the highest valued LED edge mode + +# define LED_EDGE_FULL_MODE 255 // LEDs configured with this scan code will always be on for edge lighting modes +# define LED_EDGE_ALT_MODE 254 // LEDs configured with this scan code will turn off in edge alternating mode +# define LED_EDGE_MIN_SCAN 254 // LEDs configured with scan code >= to this are assigned as edge LEDs +# define LED_INDICATOR_SCAN 253 // LEDs configured as dedicated indicators + +# define LED_IS_KEY(scan) (scan < LED_INDICATOR_SCAN) // Return true if an LED's scan value indicates it is a key LED +# define LED_IS_EDGE(scan) (scan >= LED_EDGE_MIN_SCAN) // Return true if an LED's scan value indicates an edge LED +# define LED_IS_EDGE_ALT(scan) (scan == LED_EDGE_ALT_MODE) // Return true if an LED's scan value indicates an alternate edge mode LED +# define LED_IS_INDICATOR(scan) (scan == LED_INDICATOR_SCAN) // Return true if an LED's scan value indicates it is a dedicated Indicator +#else +extern uint8_t gcr_desired; #endif // USE_MASSDROP_CONFIGURATOR #endif //_LED_MATRIX_H_ 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 000000000000..8d63af1b59de --- /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/shift_register.h b/tmk_core/protocol/arm_atsam/shift_register.h new file mode 100644 index 000000000000..56a8c7f7177f --- /dev/null +++ b/tmk_core/protocol/arm_atsam/shift_register.h @@ -0,0 +1,49 @@ +/* +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/>. +*/ + +#pragma once + +#include <stdint.h> + +/* Data structure to define Shift Register output expander hardware */ +/* This structure gets shifted into registers LSB first */ +typedef union { + struct { + uint16_t RSVD4 : 1; /*!< bit: 0 */ + uint16_t RSVD3 : 1; /*!< bit: 1 */ + uint16_t RSVD2 : 1; /*!< bit: 2 */ + uint16_t RSVD1 : 1; /*!< bit: 3 */ + uint16_t SDB_N : 1; /*!< bit: 4 SHUTDOWN THE CHIP WHEN 0, RUN WHEN 1 */ + uint16_t IRST : 1; /*!< bit: 5 RESET THE IS3733 I2C WHEN 1, RUN WHEN 0 */ + uint16_t SRC_2 : 1; /*!< bit: 6 ADVERTISE A SOURCE TO USBC-2 CC */ + uint16_t SRC_1 : 1; /*!< bit: 7 ADVERTISE A SOURCE TO USBC-1 CC */ + uint16_t E_VBUS_2 : 1; /*!< bit: 8 ENABLE 5V OUT TO USBC-2 WHEN 1 */ + uint16_t E_VBUS_1 : 1; /*!< bit: 9 ENABLE 5V OUT TO USBC-1 WHEN 1 */ + uint16_t E_DN1_N : 1; /*!< bit: 10 ENABLE DN1 1:2 MUX WHEN 0 */ + uint16_t S_DN1 : 1; /*!< bit: 11 SELECT DN1 PATH 0:USBC-1, 1:USBC-2 */ + uint16_t E_UP_N : 1; /*!< bit: 12 ENABLE SUP 1:2 MUX WHEN 0 */ + uint16_t S_UP : 1; /*!< bit: 13 SELECT UP PATH 0:USBC-1, 1:USBC-2 */ + uint16_t HUB_RESET_N : 1; /*!< bit: 14 RESET USB HUB WHEN 0, RUN WHEN 1 */ + uint16_t HUB_CONNECT : 1; /*!< bit: 15 SIGNAL VBUS CONNECT TO USB HUB WHEN 1 */ + } bit; /*!< Structure used for bit access */ + uint16_t reg; /*!< Type used for register access */ +} sr_exp_t; + +extern sr_exp_t sr_exp_data; + +void SR_EXP_WriteData(void); +void SR_EXP_Init(void); diff --git a/tmk_core/protocol/arm_atsam/spi.c b/tmk_core/protocol/arm_atsam/spi.c deleted file mode 100644 index 3b118bc1f134..000000000000 --- 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.h b/tmk_core/protocol/arm_atsam/spi.h deleted file mode 100644 index dcd45f31afe8..000000000000 --- a/tmk_core/protocol/arm_atsam/spi.h +++ /dev/null @@ -1,70 +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/>. -*/ - -#ifndef _SPI_H_ -#define _SPI_H_ - -/* 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 - -/* Data structure to define Shift Register output expander hardware */ -/* This structure gets shifted into registers LSB first */ -typedef union { - struct { - uint16_t RSVD4 : 1; /*!< bit: 0 */ - uint16_t RSVD3 : 1; /*!< bit: 1 */ - uint16_t RSVD2 : 1; /*!< bit: 2 */ - uint16_t RSVD1 : 1; /*!< bit: 3 */ - uint16_t SDB_N : 1; /*!< bit: 4 SHUTDOWN THE CHIP WHEN 0, RUN WHEN 1 */ - uint16_t IRST : 1; /*!< bit: 5 RESET THE IS3733 I2C WHEN 1, RUN WHEN 0 */ - uint16_t SRC_2 : 1; /*!< bit: 6 ADVERTISE A SOURCE TO USBC-2 CC */ - uint16_t SRC_1 : 1; /*!< bit: 7 ADVERTISE A SOURCE TO USBC-1 CC */ - uint16_t E_VBUS_2 : 1; /*!< bit: 8 ENABLE 5V OUT TO USBC-2 WHEN 1 */ - uint16_t E_VBUS_1 : 1; /*!< bit: 9 ENABLE 5V OUT TO USBC-1 WHEN 1 */ - uint16_t E_DN1_N : 1; /*!< bit: 10 ENABLE DN1 1:2 MUX WHEN 0 */ - uint16_t S_DN1 : 1; /*!< bit: 11 SELECT DN1 PATH 0:USBC-1, 1:USBC-2 */ - uint16_t E_UP_N : 1; /*!< bit: 12 ENABLE SUP 1:2 MUX WHEN 0 */ - uint16_t S_UP : 1; /*!< bit: 13 SELECT UP PATH 0:USBC-1, 1:USBC-2 */ - uint16_t HUB_RESET_N : 1; /*!< bit: 14 RESET USB HUB WHEN 0, RUN WHEN 1 */ - uint16_t HUB_CONNECT : 1; /*!< bit: 15 SIGNAL VBUS CONNECT TO USB HUB WHEN 1 */ - } bit; /*!< Structure used for bit access */ - uint16_t reg; /*!< Type used for register access */ -} sr_exp_t; - -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_master.c b/tmk_core/protocol/arm_atsam/spi_master.c new file mode 100644 index 000000000000..9781d45b1e00 --- /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 000000000000..26c55128be12 --- /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/udi_device_conf.h b/tmk_core/protocol/arm_atsam/usb/udi_device_conf.h index 9c9d94789dbf..1c0983115cc1 100644 --- a/tmk_core/protocol/arm_atsam/usb/udi_device_conf.h +++ b/tmk_core/protocol/arm_atsam/usb/udi_device_conf.h @@ -23,6 +23,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #include "compiler.h" #include "usb_protocol_hid.h" +#ifndef USB_POLLING_INTERVAL_MS +# define USB_POLLING_INTERVAL_MS 10 +#endif + #ifdef VIRTSER_ENABLE // because CDC uses IAD (interface association descriptor // per USB Interface Association Descriptor Device Class Code and Use Model 7/23/2003 Rev 1.0) @@ -118,7 +122,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #define UDI_HID_KBD_EP_IN KEYBOARD_IN_EPNUM #define NEXT_IN_EPNUM_1 (KEYBOARD_IN_EPNUM + 1) #define UDI_HID_KBD_EP_SIZE KEYBOARD_EPSIZE -#define KBD_POLLING_INTERVAL 10 +#define KBD_POLLING_INTERVAL USB_POLLING_INTERVAL_MS #ifndef UDI_HID_KBD_STRING_ID # define UDI_HID_KBD_STRING_ID 0 #endif @@ -128,7 +132,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. # define NEXT_IN_EPNUM_2 (MOUSE_IN_EPNUM + 1) # define UDI_HID_MOU_EP_IN MOUSE_IN_EPNUM # define UDI_HID_MOU_EP_SIZE MOUSE_EPSIZE -# define MOU_POLLING_INTERVAL 10 +# define MOU_POLLING_INTERVAL USB_POLLING_INTERVAL_MS # ifndef UDI_HID_MOU_STRING_ID # define UDI_HID_MOU_STRING_ID 0 # endif @@ -141,7 +145,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. # define UDI_HID_EXK_EP_IN EXTRAKEY_IN_EPNUM # define NEXT_IN_EPNUM_3 (EXTRAKEY_IN_EPNUM + 1) # define UDI_HID_EXK_EP_SIZE EXTRAKEY_EPSIZE -# define EXTRAKEY_POLLING_INTERVAL 10 +# define EXTRAKEY_POLLING_INTERVAL USB_POLLING_INTERVAL_MS # ifndef UDI_HID_EXK_STRING_ID # define UDI_HID_EXK_STRING_ID 0 # endif diff --git a/tmk_core/protocol/arm_atsam/usb/usb2422.c b/tmk_core/protocol/arm_atsam/usb/usb2422.c deleted file mode 100644 index a878cb6b7cab..000000000000 --- a/tmk_core/protocol/arm_atsam/usb/usb2422.c +++ /dev/null @@ -1,426 +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" -#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 - -uint8_t usb_extra_state; -uint8_t usb_extra_manual; -uint8_t usb_gcr_auto; - -#endif // MD_BOOTLOADER - -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) { - Gclk * pgclk = GCLK; - Mclk * pmclk = MCLK; - Port * pport = PORT; - Oscctrl *posc = OSCCTRL; - Usb * pusb = USB; - - DBGC(DC_USB2422_INIT_BEGIN); - - while ((v_5v = adc_get(ADC_5V)) < ADC_5V_START_LEVEL) { - DBGC(DC_USB2422_INIT_WAIT_5V_LOW); - } - - // setup peripheral and synchronous bus clocks to USB - pgclk->PCHCTRL[10].bit.GEN = 0; - pgclk->PCHCTRL[10].bit.CHEN = 1; - pmclk->AHBMASK.bit.USB_ = 1; - pmclk->APBBMASK.bit.USB_ = 1; - - // setup port pins for D-, D+, and SOF_1KHZ - pport->Group[0].PMUX[12].reg = 0x77; // PA24, PA25, function column H for USB D-, D+ - pport->Group[0].PINCFG[24].bit.PMUXEN = 1; - pport->Group[0].PINCFG[25].bit.PMUXEN = 1; - pport->Group[1].PMUX[11].bit.PMUXE = 7; // PB22, function column H for USB SOF_1KHz output - pport->Group[1].PINCFG[22].bit.PMUXEN = 1; - - // configure and enable DFLL for USB clock recovery mode at 48MHz - posc->DFLLCTRLA.bit.ENABLE = 0; - while (posc->DFLLSYNC.bit.ENABLE) { - DBGC(DC_USB2422_INIT_OSC_SYNC_DISABLING); - } - while (posc->DFLLSYNC.bit.DFLLCTRLB) { - DBGC(DC_USB2422_INIT_OSC_SYNC_DFLLCTRLB_1); - } - posc->DFLLCTRLB.bit.USBCRM = 1; - while (posc->DFLLSYNC.bit.DFLLCTRLB) { - DBGC(DC_USB2422_INIT_OSC_SYNC_DFLLCTRLB_2); - } - posc->DFLLCTRLB.bit.MODE = 1; - while (posc->DFLLSYNC.bit.DFLLCTRLB) { - DBGC(DC_USB2422_INIT_OSC_SYNC_DFLLCTRLB_3); - } - posc->DFLLCTRLB.bit.QLDIS = 0; - while (posc->DFLLSYNC.bit.DFLLCTRLB) { - DBGC(DC_USB2422_INIT_OSC_SYNC_DFLLCTRLB_4); - } - posc->DFLLCTRLB.bit.CCDIS = 1; - posc->DFLLMUL.bit.MUL = 0xBB80; // 4800 x 1KHz - while (posc->DFLLSYNC.bit.DFLLMUL) { - DBGC(DC_USB2422_INIT_OSC_SYNC_DFLLMUL); - } - posc->DFLLCTRLA.bit.ENABLE = 1; - while (posc->DFLLSYNC.bit.ENABLE) { - DBGC(DC_USB2422_INIT_OSC_SYNC_ENABLING); - } - - pusb->DEVICE.CTRLA.bit.SWRST = 1; - while (pusb->DEVICE.SYNCBUSY.bit.SWRST) { - DBGC(DC_USB2422_INIT_USB_SYNC_SWRST); - } - while (pusb->DEVICE.CTRLA.bit.SWRST) { - DBGC(DC_USB2422_INIT_USB_WAIT_SWRST); - } - // calibration from factory presets - pusb->DEVICE.PADCAL.bit.TRANSN = (USB_FUSES_TRANSN_ADDR >> USB_FUSES_TRANSN_Pos) & USB_FUSES_TRANSN_Msk; - pusb->DEVICE.PADCAL.bit.TRANSP = (USB_FUSES_TRANSP_ADDR >> USB_FUSES_TRANSP_Pos) & USB_FUSES_TRANSP_Msk; - pusb->DEVICE.PADCAL.bit.TRIM = (USB_FUSES_TRIM_ADDR >> USB_FUSES_TRIM_Pos) & USB_FUSES_TRIM_Msk; - // device mode, enabled - pusb->DEVICE.CTRLB.bit.SPDCONF = 0; // full speed - pusb->DEVICE.CTRLA.bit.MODE = 0; - pusb->DEVICE.CTRLA.bit.ENABLE = 1; - while (pusb->DEVICE.SYNCBUSY.bit.ENABLE) { - DBGC(DC_USB2422_INIT_USB_SYNC_ENABLING); - } - - 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 - - sr_exp_data.bit.HUB_CONNECT = 1; // connect signal - sr_exp_data.bit.HUB_RESET_N = 1; // reset high - SR_EXP_WriteData(); - - wait_us(100); - -#ifndef MD_BOOTLOADER - - usb_extra_manual = 0; - usb_gcr_auto = 1; - -#endif // MD_BOOTLOADER - - DBGC(DC_USB2422_INIT_COMPLETE); -} - -void USB_reset(void) { - DBGC(DC_USB_RESET_BEGIN); - - // pulse reset for at least 1 usec - sr_exp_data.bit.HUB_RESET_N = 0; // reset low - SR_EXP_WriteData(); - wait_us(2); - sr_exp_data.bit.HUB_RESET_N = 1; // reset high to run - SR_EXP_WriteData(); - - DBGC(DC_USB_RESET_COMPLETE); -} - -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(); - - 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; } - -void USB_set_host_by_voltage(void) { - // UP is upstream device (HOST) - // DN1 is downstream device (EXTRA) - // DN2 is keyboard (KEYB) - - DBGC(DC_USB_SET_HOST_BY_VOLTAGE_BEGIN); - - usb_host_port = USB_HOST_PORT_UNKNOWN; -#ifndef MD_BOOTLOADER - usb_extra_state = USB_EXTRA_STATE_UNKNOWN; -#endif // MD_BOOTLOADER - sr_exp_data.bit.SRC_1 = 1; // USBC-1 available for test - sr_exp_data.bit.SRC_2 = 1; // USBC-2 available for test - sr_exp_data.bit.E_UP_N = 1; // HOST disable - sr_exp_data.bit.E_DN1_N = 1; // EXTRA disable - sr_exp_data.bit.E_VBUS_1 = 0; // USBC-1 disable full power I/O - sr_exp_data.bit.E_VBUS_2 = 0; // USBC-2 disable full power I/O - - SR_EXP_WriteData(); - - wait_ms(250); - - while ((v_5v = adc_get(ADC_5V)) < ADC_5V_START_LEVEL) { - DBGC(DC_USB_SET_HOST_5V_LOW_WAITING); - } - - v_con_1 = adc_get(ADC_CON1); - v_con_2 = adc_get(ADC_CON2); - - v_con_1_boot = v_con_1; - v_con_2_boot = v_con_2; - - if (v_con_1 > v_con_2) { - sr_exp_data.bit.S_UP = 0; // HOST to USBC-1 - sr_exp_data.bit.S_DN1 = 1; // EXTRA to USBC-2 - sr_exp_data.bit.SRC_1 = 1; // HOST on USBC-1 - sr_exp_data.bit.SRC_2 = 0; // EXTRA available on USBC-2 - - sr_exp_data.bit.E_VBUS_1 = 1; // USBC-1 enable full power I/O - sr_exp_data.bit.E_VBUS_2 = 0; // USBC-2 disable full power I/O - - SR_EXP_WriteData(); - - sr_exp_data.bit.E_UP_N = 0; // HOST enable - - SR_EXP_WriteData(); - - usb_host_port = USB_HOST_PORT_1; - } else { - sr_exp_data.bit.S_UP = 1; // EXTRA to USBC-1 - sr_exp_data.bit.S_DN1 = 0; // HOST to USBC-2 - sr_exp_data.bit.SRC_1 = 0; // EXTRA available on USBC-1 - sr_exp_data.bit.SRC_2 = 1; // HOST on USBC-2 - - sr_exp_data.bit.E_VBUS_1 = 0; // USBC-1 disable full power I/O - sr_exp_data.bit.E_VBUS_2 = 1; // USBC-2 enable full power I/O - - SR_EXP_WriteData(); - - sr_exp_data.bit.E_UP_N = 0; // HOST enable - - SR_EXP_WriteData(); - - usb_host_port = USB_HOST_PORT_2; - } - -#ifndef MD_BOOTLOADER - usb_extra_state = USB_EXTRA_STATE_DISABLED; -#endif // MD_BOOTLOADER - - USB_reset(); - USB_configure(); - - DBGC(DC_USB_SET_HOST_BY_VOLTAGE_COMPLETE); -} - -uint8_t USB2422_Port_Detect_Init(void) { - uint32_t port_detect_retry_ms; - uint32_t tmod; - - DBGC(DC_PORT_DETECT_INIT_BEGIN); - - USB_set_host_by_voltage(); - - port_detect_retry_ms = timer_read64() + PORT_DETECT_RETRY_INTERVAL; - - while (!USB_active()) { - tmod = timer_read64() % PORT_DETECT_RETRY_INTERVAL; - - if (v_con_1 > v_con_2) // Values updated from USB_set_host_by_voltage(); - { - // 1 flash for port 1 detected - if (tmod > 500 && tmod < 600) { - DBG_LED_ON; - } else { - DBG_LED_OFF; - } - } else if (v_con_2 > v_con_1) // Values updated from USB_set_host_by_voltage(); - { - // 2 flash for port 2 detected - if (tmod > 500 && tmod < 600) { - DBG_LED_ON; - } else if (tmod > 700 && tmod < 800) { - DBG_LED_ON; - } else { - DBG_LED_OFF; - } - } - - if (timer_read64() > port_detect_retry_ms) { - DBGC(DC_PORT_DETECT_INIT_FAILED); - return 0; - } - } - - DBGC(DC_PORT_DETECT_INIT_COMPLETE); - - return 1; -} - -#ifndef MD_BOOTLOADER - -void USB_ExtraSetState(uint8_t state) { - uint8_t state_save = state; - - if (state == USB_EXTRA_STATE_DISABLED_UNTIL_REPLUG) state = USB_EXTRA_STATE_DISABLED; - - if (usb_host_port == USB_HOST_PORT_1) - sr_exp_data.bit.E_VBUS_2 = state; - else if (usb_host_port == USB_HOST_PORT_2) - sr_exp_data.bit.E_VBUS_1 = state; - else - return; - - sr_exp_data.bit.E_DN1_N = !state; - SR_EXP_WriteData(); - - usb_extra_state = state_save; - - if (usb_extra_state == USB_EXTRA_STATE_ENABLED) - CDC_print("USB: Extra enabled\r\n"); - else if (usb_extra_state == USB_EXTRA_STATE_DISABLED) { - CDC_print("USB: Extra disabled\r\n"); -# ifdef USE_MASSDROP_CONFIGURATOR - if (led_animation_breathing) gcr_breathe = gcr_desired; -# endif - } else if (usb_extra_state == USB_EXTRA_STATE_DISABLED_UNTIL_REPLUG) - CDC_print("USB: Extra disabled until replug\r\n"); - else - CDC_print("USB: Extra state unknown\r\n"); -} - -void USB_HandleExtraDevice(void) { - uint16_t adcval; - - if (usb_host_port == USB_HOST_PORT_1) - adcval = adc_get(ADC_CON2); - else if (usb_host_port == USB_HOST_PORT_2) - adcval = adc_get(ADC_CON1); - else - return; - - adc_extra = adc_extra * 0.9 + adcval * 0.1; - - // Check for a forced disable state (such as overload prevention) - if (usb_extra_state == USB_EXTRA_STATE_DISABLED_UNTIL_REPLUG) { - // Detect unplug and reset state to disabled - if (adc_extra > USB_EXTRA_ADC_THRESHOLD) usb_extra_state = USB_EXTRA_STATE_DISABLED; - - return; // Return even if unplug detected - } - - if (usb_extra_manual) { - if (usb_extra_state == USB_EXTRA_STATE_DISABLED) USB_ExtraSetState(USB_EXTRA_STATE_ENABLED); - - return; - } - - // dpf("a %i %i\r\n",adcval, adc_extra); - if (usb_extra_state == USB_EXTRA_STATE_DISABLED && adc_extra < USB_EXTRA_ADC_THRESHOLD) - USB_ExtraSetState(USB_EXTRA_STATE_ENABLED); - else if (usb_extra_state == USB_EXTRA_STATE_ENABLED && adc_extra > USB_EXTRA_ADC_THRESHOLD) - USB_ExtraSetState(USB_EXTRA_STATE_DISABLED); -} - -#endif // MD_BOOTLOADER diff --git a/tmk_core/protocol/arm_atsam/usb/usb2422.h b/tmk_core/protocol/arm_atsam/usb/usb2422.h deleted file mode 100644 index b4830b5bc8fa..000000000000 --- a/tmk_core/protocol/arm_atsam/usb/usb2422.h +++ /dev/null @@ -1,402 +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/>. -*/ - -#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 - -/* -------- 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; - uint16_t VID_MSB : 8; - } 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; - uint16_t PID_MSB : 8; - } 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; - uint16_t DID_MSB : 8; - } 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; - uint8_t CURRENT_SNS : 2; - uint8_t EOP_DISABLE : 1; - uint8_t MTT_ENABLE : 1; - uint8_t HS_DISABLE : 1; - uint8_t : 1; - uint8_t SELF_BUS_PWR : 1; - } 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; - uint8_t COMPOUND : 1; - uint8_t OC_TIMER : 2; - uint8_t : 1; - uint8_t DYNAMIC : 1; - } 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; - uint8_t : 2; - uint8_t PRTMAP_EN : 1; - uint8_t : 4; - } 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; - uint8_t PORT2_NR : 1; - uint8_t PORT1_NR : 1; - uint8_t : 1; - } 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; - uint8_t PORT1_DIS : 1; - uint8_t PORT2_DIS : 1; - uint8_t : 5; - } 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; - uint8_t PORT1_DIS : 1; - uint8_t PORT2_DIS : 1; - uint8_t : 5; - } 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; - uint8_t PORT1_BCE : 1; - uint8_t PORT2_BCE : 1; - uint8_t : 5; - } 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; - uint8_t : 6; - } 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; - uint8_t BOOST2 : 2; - uint8_t : 4; - } 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; - uint8_t PORT1_SP : 1; - uint8_t PORT2_SP : 1; - uint8_t : 5; - } 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; - uint8_t PORT2_REMAP : 4; - } 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 -#define USB2422_PRT12_P1TOL1 1 -#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; - uint8_t RESET : 1; - uint8_t INTF_PWRDN : 1; - uint8_t : 5; - } 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*/ - USB2422_DID_Type DID; /**< \brief Offset: 0x04*/ - USB2422_CFG1_Type CFG1; /**< \brief Offset: 0x06*/ - USB2422_CFG2_Type CFG2; /**< \brief Offset: 0x07*/ - USB2422_CFG3_Type CFG3; /**< \brief Offset: 0x08*/ - USB2422_NRD_Type NRD; /**< \brief Offset: 0x09*/ - USB2422_PDS_Type PDS; /**< \brief Offset: 0x0A*/ - USB2422_PDB_Type PDB; /**< \brief Offset: 0x0B*/ - USB2422_MAXPS_Type MAXPS; /**< \brief Offset: 0x0C*/ - USB2422_MAXPB_Type MAXPB; /**< \brief Offset: 0x0D*/ - USB2422_HCMCS_Type HCMCS; /**< \brief Offset: 0x0E*/ - USB2422_HCMCB_Type HCMCB; /**< \brief Offset: 0x0F*/ - USB2422_PWRT_Type PWRT; /**< \brief Offset: 0x10*/ - USB2422_LANGID_LSB_Type LANGID_LSB; /**< \brief Offset: 0x11*/ - USB2422_LANGID_MSB_Type LANGID_MSB; /**< \brief Offset: 0x12*/ - USB2422_MFRSL_Type MFRSL; /**< \brief Offset: 0x13*/ - USB2422_PRDSL_Type PRDSL; /**< \brief Offset: 0x14*/ - USB2422_SERSL_Type SERSL; /**< \brief Offset: 0x15*/ - USB2422_MFRSTR_Type MFRSTR[31]; /**< \brief Offset: 0x16*/ - USB2422_PRDSTR_Type PRDSTR[31]; /**< \brief Offset: 0x54*/ - USB2422_SERSTR_Type SERSTR[31]; /**< \brief Offset: 0x92*/ - USB2422_BCEN_Type BCEN; /**< \brief Offset: 0xD0*/ - uint8_t Reserved1[0x25]; - USB2422_BOOSTUP_Type BOOSTUP; /**< \brief Offset: 0xF6*/ - uint8_t Reserved2[0x1]; - USB2422_BOOSTDOWN_Type BOOSTDOWN; /**< \brief Offset: 0xF8*/ - uint8_t Reserved3[0x1]; - USB2422_PRTSP_Type PRTSP; /**< \brief Offset: 0xFA*/ - USB2422_PRTR12_Type PRTR12; /**< \brief Offset: 0xFB*/ - uint8_t Reserved4[0x3]; - USB2422_STCD_Type STCD; /**< \brief Offset: 0xFF*/ -} Usb2422; -#endif - -#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 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_ diff --git a/tmk_core/protocol/arm_atsam/usb/usb_hub.c b/tmk_core/protocol/arm_atsam/usb/usb_hub.c new file mode 100644 index 000000000000..c5fd284aab76 --- /dev/null +++ b/tmk_core/protocol/arm_atsam/usb/usb_hub.c @@ -0,0 +1,340 @@ +/* +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 "drivers/usb2422.h" +#include <string.h> + +uint8_t usb_host_port; + +#ifndef MD_BOOTLOADER + +uint8_t usb_extra_state; +uint8_t usb_extra_manual; +uint8_t usb_gcr_auto; + +#endif // MD_BOOTLOADER + +uint16_t adc_extra; + +void USB_Hub_init(void) { + Gclk * pgclk = GCLK; + Mclk * pmclk = MCLK; + Port * pport = PORT; + Oscctrl *posc = OSCCTRL; + Usb * pusb = USB; + + DBGC(DC_USB2422_INIT_BEGIN); + + while ((v_5v = adc_get(ADC_5V)) < ADC_5V_START_LEVEL) { + DBGC(DC_USB2422_INIT_WAIT_5V_LOW); + } + + // setup peripheral and synchronous bus clocks to USB + pgclk->PCHCTRL[10].bit.GEN = 0; + pgclk->PCHCTRL[10].bit.CHEN = 1; + pmclk->AHBMASK.bit.USB_ = 1; + pmclk->APBBMASK.bit.USB_ = 1; + + // setup port pins for D-, D+, and SOF_1KHZ + pport->Group[0].PMUX[12].reg = 0x77; // PA24, PA25, function column H for USB D-, D+ + pport->Group[0].PINCFG[24].bit.PMUXEN = 1; + pport->Group[0].PINCFG[25].bit.PMUXEN = 1; + pport->Group[1].PMUX[11].bit.PMUXE = 7; // PB22, function column H for USB SOF_1KHz output + pport->Group[1].PINCFG[22].bit.PMUXEN = 1; + + // configure and enable DFLL for USB clock recovery mode at 48MHz + posc->DFLLCTRLA.bit.ENABLE = 0; + while (posc->DFLLSYNC.bit.ENABLE) { + DBGC(DC_USB2422_INIT_OSC_SYNC_DISABLING); + } + while (posc->DFLLSYNC.bit.DFLLCTRLB) { + DBGC(DC_USB2422_INIT_OSC_SYNC_DFLLCTRLB_1); + } + posc->DFLLCTRLB.bit.USBCRM = 1; + while (posc->DFLLSYNC.bit.DFLLCTRLB) { + DBGC(DC_USB2422_INIT_OSC_SYNC_DFLLCTRLB_2); + } + posc->DFLLCTRLB.bit.MODE = 1; + while (posc->DFLLSYNC.bit.DFLLCTRLB) { + DBGC(DC_USB2422_INIT_OSC_SYNC_DFLLCTRLB_3); + } + posc->DFLLCTRLB.bit.QLDIS = 0; + while (posc->DFLLSYNC.bit.DFLLCTRLB) { + DBGC(DC_USB2422_INIT_OSC_SYNC_DFLLCTRLB_4); + } + posc->DFLLCTRLB.bit.CCDIS = 1; + posc->DFLLMUL.bit.MUL = 0xBB80; // 4800 x 1KHz + while (posc->DFLLSYNC.bit.DFLLMUL) { + DBGC(DC_USB2422_INIT_OSC_SYNC_DFLLMUL); + } + posc->DFLLCTRLA.bit.ENABLE = 1; + while (posc->DFLLSYNC.bit.ENABLE) { + DBGC(DC_USB2422_INIT_OSC_SYNC_ENABLING); + } + + pusb->DEVICE.CTRLA.bit.SWRST = 1; + while (pusb->DEVICE.SYNCBUSY.bit.SWRST) { + DBGC(DC_USB2422_INIT_USB_SYNC_SWRST); + } + while (pusb->DEVICE.CTRLA.bit.SWRST) { + DBGC(DC_USB2422_INIT_USB_WAIT_SWRST); + } + // calibration from factory presets + pusb->DEVICE.PADCAL.bit.TRANSN = (USB_FUSES_TRANSN_ADDR >> USB_FUSES_TRANSN_Pos) & USB_FUSES_TRANSN_Msk; + pusb->DEVICE.PADCAL.bit.TRANSP = (USB_FUSES_TRANSP_ADDR >> USB_FUSES_TRANSP_Pos) & USB_FUSES_TRANSP_Msk; + pusb->DEVICE.PADCAL.bit.TRIM = (USB_FUSES_TRIM_ADDR >> USB_FUSES_TRIM_Pos) & USB_FUSES_TRIM_Msk; + // device mode, enabled + pusb->DEVICE.CTRLB.bit.SPDCONF = 0; // full speed + pusb->DEVICE.CTRLA.bit.MODE = 0; + pusb->DEVICE.CTRLA.bit.ENABLE = 1; + while (pusb->DEVICE.SYNCBUSY.bit.ENABLE) { + DBGC(DC_USB2422_INIT_USB_SYNC_ENABLING); + } + + pusb->DEVICE.QOSCTRL.bit.DQOS = 2; + pusb->DEVICE.QOSCTRL.bit.CQOS = 2; + + USB2422_init(); + + sr_exp_data.bit.HUB_CONNECT = 1; // connect signal + sr_exp_data.bit.HUB_RESET_N = 1; // reset high + SR_EXP_WriteData(); + + wait_us(100); + +#ifndef MD_BOOTLOADER + + usb_extra_manual = 0; + usb_gcr_auto = 1; + +#endif // MD_BOOTLOADER + + DBGC(DC_USB2422_INIT_COMPLETE); +} + +void USB_reset(void) { + DBGC(DC_USB_RESET_BEGIN); + + // pulse reset for at least 1 usec + sr_exp_data.bit.HUB_RESET_N = 0; // reset low + SR_EXP_WriteData(); + wait_us(2); + sr_exp_data.bit.HUB_RESET_N = 1; // reset high to run + SR_EXP_WriteData(); + + DBGC(DC_USB_RESET_COMPLETE); +} + +void USB_configure(void) { + DBGC(DC_USB_CONFIGURE_BEGIN); + + USB2422_configure(); + + adc_extra = 0; + + DBGC(DC_USB_CONFIGURE_COMPLETE); +} + +uint16_t USB_active(void) { return USB2422_active(); } + +void USB_set_host_by_voltage(void) { + // UP is upstream device (HOST) + // DN1 is downstream device (EXTRA) + // DN2 is keyboard (KEYB) + + DBGC(DC_USB_SET_HOST_BY_VOLTAGE_BEGIN); + + usb_host_port = USB_HOST_PORT_UNKNOWN; +#ifndef MD_BOOTLOADER + usb_extra_state = USB_EXTRA_STATE_UNKNOWN; +#endif // MD_BOOTLOADER + sr_exp_data.bit.SRC_1 = 1; // USBC-1 available for test + sr_exp_data.bit.SRC_2 = 1; // USBC-2 available for test + sr_exp_data.bit.E_UP_N = 1; // HOST disable + sr_exp_data.bit.E_DN1_N = 1; // EXTRA disable + sr_exp_data.bit.E_VBUS_1 = 0; // USBC-1 disable full power I/O + sr_exp_data.bit.E_VBUS_2 = 0; // USBC-2 disable full power I/O + + SR_EXP_WriteData(); + + wait_ms(250); + + while ((v_5v = adc_get(ADC_5V)) < ADC_5V_START_LEVEL) { + DBGC(DC_USB_SET_HOST_5V_LOW_WAITING); + } + + v_con_1 = adc_get(ADC_CON1); + v_con_2 = adc_get(ADC_CON2); + + v_con_1_boot = v_con_1; + v_con_2_boot = v_con_2; + + if (v_con_1 > v_con_2) { + sr_exp_data.bit.S_UP = 0; // HOST to USBC-1 + sr_exp_data.bit.S_DN1 = 1; // EXTRA to USBC-2 + sr_exp_data.bit.SRC_1 = 1; // HOST on USBC-1 + sr_exp_data.bit.SRC_2 = 0; // EXTRA available on USBC-2 + + sr_exp_data.bit.E_VBUS_1 = 1; // USBC-1 enable full power I/O + sr_exp_data.bit.E_VBUS_2 = 0; // USBC-2 disable full power I/O + + SR_EXP_WriteData(); + + sr_exp_data.bit.E_UP_N = 0; // HOST enable + + SR_EXP_WriteData(); + + usb_host_port = USB_HOST_PORT_1; + } else { + sr_exp_data.bit.S_UP = 1; // EXTRA to USBC-1 + sr_exp_data.bit.S_DN1 = 0; // HOST to USBC-2 + sr_exp_data.bit.SRC_1 = 0; // EXTRA available on USBC-1 + sr_exp_data.bit.SRC_2 = 1; // HOST on USBC-2 + + sr_exp_data.bit.E_VBUS_1 = 0; // USBC-1 disable full power I/O + sr_exp_data.bit.E_VBUS_2 = 1; // USBC-2 enable full power I/O + + SR_EXP_WriteData(); + + sr_exp_data.bit.E_UP_N = 0; // HOST enable + + SR_EXP_WriteData(); + + usb_host_port = USB_HOST_PORT_2; + } + +#ifndef MD_BOOTLOADER + usb_extra_state = USB_EXTRA_STATE_DISABLED; +#endif // MD_BOOTLOADER + + USB_reset(); + USB_configure(); + + DBGC(DC_USB_SET_HOST_BY_VOLTAGE_COMPLETE); +} + +uint8_t USB_Hub_Port_Detect_Init(void) { + uint32_t port_detect_retry_ms; + uint32_t tmod; + + DBGC(DC_PORT_DETECT_INIT_BEGIN); + + USB_set_host_by_voltage(); + + port_detect_retry_ms = timer_read64() + PORT_DETECT_RETRY_INTERVAL; + + while (!USB_active()) { + tmod = timer_read64() % PORT_DETECT_RETRY_INTERVAL; + + if (v_con_1 > v_con_2) // Values updated from USB_set_host_by_voltage(); + { + // 1 flash for port 1 detected + if (tmod > 500 && tmod < 600) { + DBG_LED_ON; + } else { + DBG_LED_OFF; + } + } else if (v_con_2 > v_con_1) // Values updated from USB_set_host_by_voltage(); + { + // 2 flash for port 2 detected + if (tmod > 500 && tmod < 600) { + DBG_LED_ON; + } else if (tmod > 700 && tmod < 800) { + DBG_LED_ON; + } else { + DBG_LED_OFF; + } + } + + if (timer_read64() > port_detect_retry_ms) { + DBGC(DC_PORT_DETECT_INIT_FAILED); + return 0; + } + } + + DBGC(DC_PORT_DETECT_INIT_COMPLETE); + + return 1; +} + +#ifndef MD_BOOTLOADER + +void USB_ExtraSetState(uint8_t state) { + uint8_t state_save = state; + + if (state == USB_EXTRA_STATE_DISABLED_UNTIL_REPLUG) state = USB_EXTRA_STATE_DISABLED; + + if (usb_host_port == USB_HOST_PORT_1) + sr_exp_data.bit.E_VBUS_2 = state; + else if (usb_host_port == USB_HOST_PORT_2) + sr_exp_data.bit.E_VBUS_1 = state; + else + return; + + sr_exp_data.bit.E_DN1_N = !state; + SR_EXP_WriteData(); + + usb_extra_state = state_save; + + if (usb_extra_state == USB_EXTRA_STATE_ENABLED) + CDC_print("USB: Extra enabled\r\n"); + else if (usb_extra_state == USB_EXTRA_STATE_DISABLED) { + CDC_print("USB: Extra disabled\r\n"); +# ifdef USE_MASSDROP_CONFIGURATOR + if (led_animation_breathing) gcr_breathe = gcr_desired; +# endif + } else if (usb_extra_state == USB_EXTRA_STATE_DISABLED_UNTIL_REPLUG) + CDC_print("USB: Extra disabled until replug\r\n"); + else + CDC_print("USB: Extra state unknown\r\n"); +} + +void USB_HandleExtraDevice(void) { + uint16_t adcval; + + if (usb_host_port == USB_HOST_PORT_1) + adcval = adc_get(ADC_CON2); + else if (usb_host_port == USB_HOST_PORT_2) + adcval = adc_get(ADC_CON1); + else + return; + + adc_extra = adc_extra * 0.9 + adcval * 0.1; + + // Check for a forced disable state (such as overload prevention) + if (usb_extra_state == USB_EXTRA_STATE_DISABLED_UNTIL_REPLUG) { + // Detect unplug and reset state to disabled + if (adc_extra > USB_EXTRA_ADC_THRESHOLD) usb_extra_state = USB_EXTRA_STATE_DISABLED; + + return; // Return even if unplug detected + } + + if (usb_extra_manual) { + if (usb_extra_state == USB_EXTRA_STATE_DISABLED) USB_ExtraSetState(USB_EXTRA_STATE_ENABLED); + + return; + } + + // dpf("a %i %i\r\n",adcval, adc_extra); + if (usb_extra_state == USB_EXTRA_STATE_DISABLED && adc_extra < USB_EXTRA_ADC_THRESHOLD) + USB_ExtraSetState(USB_EXTRA_STATE_ENABLED); + else if (usb_extra_state == USB_EXTRA_STATE_ENABLED && adc_extra > USB_EXTRA_ADC_THRESHOLD) + USB_ExtraSetState(USB_EXTRA_STATE_DISABLED); +} + +#endif // MD_BOOTLOADER 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 000000000000..76b1e0a32633 --- /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.mk b/tmk_core/protocol/chibios.mk index d01697835b0d..a7f2d8e93d1d 100644 --- a/tmk_core/protocol/chibios.mk +++ b/tmk_core/protocol/chibios.mk @@ -3,7 +3,7 @@ CHIBIOS_DIR = $(PROTOCOL_DIR)/chibios SRC += $(CHIBIOS_DIR)/usb_main.c -SRC += $(CHIBIOS_DIR)/main.c +SRC += $(CHIBIOS_DIR)/chibios.c SRC += usb_descriptor.c SRC += $(CHIBIOS_DIR)/usb_driver.c SRC += $(CHIBIOS_DIR)/usb_util.c diff --git a/tmk_core/protocol/chibios/chibios.c b/tmk_core/protocol/chibios/chibios.c new file mode 100644 index 000000000000..41752b21304f --- /dev/null +++ b/tmk_core/protocol/chibios/chibios.c @@ -0,0 +1,218 @@ +/* + * (c) 2015 flabberast <s3+flabbergast@sdfeu.org> + * + * Based on the following work: + * - Guillaume Duc's raw hid example (MIT License) + * https://github.com/guiduc/usb-hid-chibios-example + * - PJRC Teensy examples (MIT License) + * https://www.pjrc.com/teensy/usb_keyboard.html + * - hasu's TMK keyboard code (GPL v2 and some code Modified BSD) + * https://github.com/tmk/tmk_keyboard/ + * - ChibiOS demo code (Apache 2.0 License) + * http://www.chibios.org + * + * Since some GPL'd code is used, this work is licensed under + * GPL v2 or later. + */ + +#include <ch.h> +#include <hal.h> + +#include "usb_main.h" + +/* TMK includes */ +#include "report.h" +#include "host.h" +#include "host_driver.h" +#include "keyboard.h" +#include "action.h" +#include "action_util.h" +#include "usb_device_state.h" +#include "mousekey.h" +#include "led.h" +#include "sendchar.h" +#include "debug.h" +#include "print.h" + +#ifndef EARLY_INIT_PERFORM_BOOTLOADER_JUMP +// Change this to be TRUE once we've migrated keyboards to the new init system +// Remember to change docs/platformdev_chibios_earlyinit.md as well. +# define EARLY_INIT_PERFORM_BOOTLOADER_JUMP FALSE +#endif + +#ifdef SLEEP_LED_ENABLE +# include "sleep_led.h" +#endif +#ifdef MIDI_ENABLE +# include "qmk_midi.h" +#endif +#include "suspend.h" +#include "wait.h" + +/* ------------------------- + * TMK host driver defs + * ------------------------- + */ + +/* declarations */ +uint8_t keyboard_leds(void); +void send_keyboard(report_keyboard_t *report); +void send_mouse(report_mouse_t *report); +void send_system(uint16_t data); +void send_consumer(uint16_t data); +void send_digitizer(report_digitizer_t *report); + +/* host struct */ +host_driver_t chibios_driver = {keyboard_leds, send_keyboard, send_mouse, send_system, send_consumer}; + +#ifdef VIRTSER_ENABLE +void virtser_task(void); +#endif + +#ifdef RAW_ENABLE +void raw_hid_task(void); +#endif + +#ifdef CONSOLE_ENABLE +void console_task(void); +#endif +#ifdef MIDI_ENABLE +void midi_ep_task(void); +#endif + +/* TESTING + * Amber LED blinker thread, times are in milliseconds. + */ +/* set this variable to non-zero anywhere to blink once */ +// static THD_WORKING_AREA(waThread1, 128); +// static THD_FUNCTION(Thread1, arg) { + +// (void)arg; +// chRegSetThreadName("blinker"); +// while (true) { +// systime_t time; + +// time = USB_DRIVER.state == USB_ACTIVE ? 250 : 500; +// palClearLine(LINE_CAPS_LOCK); +// chSysPolledDelayX(MS2RTC(STM32_HCLK, time)); +// palSetLine(LINE_CAPS_LOCK); +// chSysPolledDelayX(MS2RTC(STM32_HCLK, time)); +// } +// } + +/* Early initialisation + */ +__attribute__((weak)) void early_hardware_init_pre(void) { +#if EARLY_INIT_PERFORM_BOOTLOADER_JUMP + void enter_bootloader_mode_if_requested(void); + enter_bootloader_mode_if_requested(); +#endif // EARLY_INIT_PERFORM_BOOTLOADER_JUMP +} + +__attribute__((weak)) void early_hardware_init_post(void) {} + +__attribute__((weak)) void board_init(void) {} + +// This overrides what's normally in ChibiOS board definitions +void __early_init(void) { + early_hardware_init_pre(); + + // This is the renamed equivalent of __early_init in the board.c file + void __chibios_override___early_init(void); + __chibios_override___early_init(); + + early_hardware_init_post(); +} + +// This overrides what's normally in ChibiOS board definitions +void boardInit(void) { + // This is the renamed equivalent of boardInit in the board.c file + void __chibios_override_boardInit(void); + __chibios_override_boardInit(); + + board_init(); +} + +void protocol_setup(void) { + usb_device_state_init(); + + // TESTING + // chThdCreateStatic(waThread1, sizeof(waThread1), NORMALPRIO, Thread1, NULL); +} + +static host_driver_t *driver = NULL; + +void protocol_pre_init(void) { + /* Init USB */ + usb_event_queue_init(); + init_usb_driver(&USB_DRIVER); + +#ifdef MIDI_ENABLE + setup_midi(); +#endif + + /* Wait until USB is active */ + while (true) { +#if defined(WAIT_FOR_USB) + if (USB_DRIVER.state == USB_ACTIVE) { + driver = &chibios_driver; + break; + } +#else + driver = &chibios_driver; + break; +#endif + wait_ms(50); + } + + /* Do need to wait here! + * Otherwise the next print might start a transfer on console EP + * before the USB is completely ready, which sometimes causes + * HardFaults. + */ + wait_ms(50); + + print("USB configured.\n"); +} + +void protocol_post_init(void) { host_set_driver(driver); } + +void protocol_pre_task(void) { + usb_event_queue_task(); + +#if !defined(NO_USB_STARTUP_CHECK) + if (USB_DRIVER.state == USB_SUSPENDED) { + print("[s]"); + while (USB_DRIVER.state == USB_SUSPENDED) { + /* Do this in the suspended state */ + suspend_power_down(); // on AVR this deep sleeps for 15ms + /* Remote wakeup */ + if (suspend_wakeup_condition()) { + usbWakeupHost(&USB_DRIVER); + restart_usb_driver(&USB_DRIVER); + } + } + /* Woken up */ + // variables has been already cleared by the wakeup hook + send_keyboard_report(); +# ifdef MOUSEKEY_ENABLE + mousekey_send(); +# endif /* MOUSEKEY_ENABLE */ + } +#endif +} + +void protocol_post_task(void) { +#ifdef CONSOLE_ENABLE + console_task(); +#endif +#ifdef MIDI_ENABLE + midi_ep_task(); +#endif +#ifdef VIRTSER_ENABLE + virtser_task(); +#endif +#ifdef RAW_ENABLE + raw_hid_task(); +#endif +} diff --git a/tmk_core/protocol/chibios/main.c b/tmk_core/protocol/chibios/main.c deleted file mode 100644 index 199741594a5c..000000000000 --- a/tmk_core/protocol/chibios/main.c +++ /dev/null @@ -1,262 +0,0 @@ -/* - * (c) 2015 flabberast <s3+flabbergast@sdfeu.org> - * - * Based on the following work: - * - Guillaume Duc's raw hid example (MIT License) - * https://github.com/guiduc/usb-hid-chibios-example - * - PJRC Teensy examples (MIT License) - * https://www.pjrc.com/teensy/usb_keyboard.html - * - hasu's TMK keyboard code (GPL v2 and some code Modified BSD) - * https://github.com/tmk/tmk_keyboard/ - * - ChibiOS demo code (Apache 2.0 License) - * http://www.chibios.org - * - * Since some GPL'd code is used, this work is licensed under - * GPL v2 or later. - */ - -#include <ch.h> -#include <hal.h> - -#include "usb_main.h" - -/* TMK includes */ -#include "report.h" -#include "host.h" -#include "host_driver.h" -#include "keyboard.h" -#include "action.h" -#include "action_util.h" -#include "mousekey.h" -#include "led.h" -#include "sendchar.h" -#include "debug.h" -#include "print.h" - -#ifndef EARLY_INIT_PERFORM_BOOTLOADER_JUMP -// Change this to be TRUE once we've migrated keyboards to the new init system -// Remember to change docs/platformdev_chibios_earlyinit.md as well. -# define EARLY_INIT_PERFORM_BOOTLOADER_JUMP FALSE -#endif - -#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 -#include "suspend.h" -#include "wait.h" - -/* ------------------------- - * TMK host driver defs - * ------------------------- - */ - -/* declarations */ -uint8_t keyboard_leds(void); -void send_keyboard(report_keyboard_t *report); -void send_mouse(report_mouse_t *report); -void send_system(uint16_t data); -void send_consumer(uint16_t data); - -/* host struct */ -host_driver_t chibios_driver = {keyboard_leds, send_keyboard, send_mouse, send_system, send_consumer}; - -#ifdef VIRTSER_ENABLE -void virtser_task(void); -#endif - -#ifdef RAW_ENABLE -void raw_hid_task(void); -#endif - -#ifdef CONSOLE_ENABLE -void console_task(void); -#endif -#ifdef MIDI_ENABLE -void midi_ep_task(void); -#endif - -/* TESTING - * Amber LED blinker thread, times are in milliseconds. - */ -/* set this variable to non-zero anywhere to blink once */ -// static THD_WORKING_AREA(waThread1, 128); -// static THD_FUNCTION(Thread1, arg) { - -// (void)arg; -// chRegSetThreadName("blinker"); -// while (true) { -// systime_t time; - -// time = USB_DRIVER.state == USB_ACTIVE ? 250 : 500; -// palClearLine(LINE_CAPS_LOCK); -// chSysPolledDelayX(MS2RTC(STM32_HCLK, time)); -// palSetLine(LINE_CAPS_LOCK); -// chSysPolledDelayX(MS2RTC(STM32_HCLK, time)); -// } -// } - -/* Early initialisation - */ -__attribute__((weak)) void early_hardware_init_pre(void) { -#if EARLY_INIT_PERFORM_BOOTLOADER_JUMP - void enter_bootloader_mode_if_requested(void); - enter_bootloader_mode_if_requested(); -#endif // EARLY_INIT_PERFORM_BOOTLOADER_JUMP -} - -__attribute__((weak)) void early_hardware_init_post(void) {} - -__attribute__((weak)) void board_init(void) {} - -// This overrides what's normally in ChibiOS board definitions -void __early_init(void) { - early_hardware_init_pre(); - - // This is the renamed equivalent of __early_init in the board.c file - void __chibios_override___early_init(void); - __chibios_override___early_init(); - - early_hardware_init_post(); -} - -// This overrides what's normally in ChibiOS board definitions -void boardInit(void) { - // This is the renamed equivalent of boardInit in the board.c file - void __chibios_override_boardInit(void); - __chibios_override_boardInit(); - - board_init(); -} - -/* Main thread - */ -int main(void) { - /* ChibiOS/RT init */ - halInit(); - chSysInit(); - - // TESTING - // chThdCreateStatic(waThread1, sizeof(waThread1), NORMALPRIO, Thread1, NULL); - - keyboard_setup(); - - /* Init USB */ - usb_event_queue_init(); - init_usb_driver(&USB_DRIVER); - -#ifdef MIDI_ENABLE - 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 */ - while (true) { -#if defined(WAIT_FOR_USB) || defined(SERIAL_LINK_ENABLE) - if (USB_DRIVER.state == USB_ACTIVE) { - driver = &chibios_driver; - break; - } -#else - 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); - } - - /* Do need to wait here! - * Otherwise the next print might start a transfer on console EP - * before the USB is completely ready, which sometimes causes - * HardFaults. - */ - wait_ms(50); - - print("USB configured.\n"); - - /* init TMK modules */ - keyboard_init(); - host_set_driver(driver); - -#ifdef SLEEP_LED_ENABLE - sleep_led_init(); -#endif - - print("Keyboard start.\n"); - - /* Main loop */ - while (true) { - usb_event_queue_task(); - -#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()) { - usbWakeupHost(&USB_DRIVER); - restart_usb_driver(&USB_DRIVER); - } - } - /* Woken up */ - // variables has been already cleared by the wakeup hook - send_keyboard_report(); -# ifdef MOUSEKEY_ENABLE - mousekey_send(); -# endif /* MOUSEKEY_ENABLE */ - -# ifdef VISUALIZER_ENABLE - visualizer_resume(); -# endif - } -#endif - - keyboard_task(); -#ifdef CONSOLE_ENABLE - console_task(); -#endif -#ifdef MIDI_ENABLE - midi_ep_task(); -#endif -#ifdef VIRTSER_ENABLE - virtser_task(); -#endif -#ifdef RAW_ENABLE - raw_hid_task(); -#endif - - // Run housekeeping - housekeeping_task(); - } -} diff --git a/tmk_core/protocol/chibios/usb_main.c b/tmk_core/protocol/chibios/usb_main.c index d04302acae09..ac46a9312b49 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" @@ -70,7 +71,12 @@ uint8_t keyboard_protocol __attribute__((aligned(2))) = 1; uint8_t keyboard_led_state = 0; volatile uint16_t keyboard_idle_count = 0; static virtual_timer_t keyboard_idle_timer; -static void keyboard_idle_timer_cb(void *arg); + +#if CH_KERNEL_MAJOR >= 7 +static void keyboard_idle_timer_cb(struct ch_virtual_timer *, void *arg); +#elif CH_KERNEL_MAJOR <= 6 +static void keyboard_idle_timer_cb(void *arg); +#endif report_keyboard_t keyboard_report_sent = {{0}}; #ifdef MOUSE_ENABLE @@ -315,6 +321,9 @@ typedef struct { #endif #ifdef JOYSTICK_ENABLE usb_driver_config_t joystick_driver; +#endif +#if defined(DIGITIZER_ENABLE) && !defined(DIGITIZER_SHARED_EP) + usb_driver_config_t digitizer_driver; #endif }; usb_driver_config_t array[0]; @@ -360,6 +369,14 @@ static usb_driver_configs_t drivers = { # define JOYSTICK_OUT_MODE USB_EP_MODE_TYPE_BULK .joystick_driver = QMK_USB_DRIVER_CONFIG(JOYSTICK, 0, false), #endif + +#if defined(DIGITIZER_ENABLE) && !defined(DIGITIZER_SHARED_EP) +# define DIGITIZER_IN_CAPACITY 4 +# define DIGITIZER_OUT_CAPACITY 4 +# define DIGITIZER_IN_MODE USB_EP_MODE_TYPE_BULK +# define DIGITIZER_OUT_MODE USB_EP_MODE_TYPE_BULK + .digitizer_driver = QMK_USB_DRIVER_CONFIG(DIGITIZER, 0, false), +#endif }; #define NUM_USB_DRIVERS (sizeof(drivers) / sizeof(usb_driver_config_t)) @@ -401,6 +418,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 */ @@ -408,6 +426,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 @@ -415,16 +434,29 @@ static inline void usb_event_wakeup_handler(void) { #endif /* SLEEP_LED_ENABLE */ } +bool last_suspend_state = false; + void usb_event_queue_task(void) { usbevent_t event; while (usb_event_queue_dequeue(&event)) { switch (event) { case USB_EVENT_SUSPEND: + last_suspend_state = true; usb_event_suspend_handler(); break; case USB_EVENT_WAKEUP: + 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; @@ -464,13 +496,17 @@ static void usb_event_cb(USBDriver *usbp, usbevent_t event) { qmkusbConfigureHookI(&drivers.array[i].driver); } osalSysUnlockFromISR(); + 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.*/ @@ -518,7 +554,7 @@ static uint16_t get_hword(uint8_t *p) { * Other Device Required Optional Optional Optional Optional Optional */ -static uint8_t set_report_buf[2] __attribute__((aligned(2))); +static uint8_t set_report_buf[2] __attribute__((aligned(4))); static void set_led_transfer_cb(USBDriver *usbp) { if (usbp->setup[6] == 2) { /* LSB(wLength) */ uint8_t report_id = set_report_buf[0]; @@ -705,7 +741,7 @@ void init_usb_driver(USBDriver *usbp) { chVTObjectInit(&keyboard_idle_timer); } -void restart_usb_driver(USBDriver *usbp) { +__attribute__((weak)) void restart_usb_driver(USBDriver *usbp) { usbStop(usbp); usbDisconnectBus(usbp); @@ -743,7 +779,12 @@ void kbd_sof_cb(USBDriver *usbp) { (void)usbp; } /* Idle requests timer code * callback (called from ISR, unlocked state) */ +#if CH_KERNEL_MAJOR >= 7 +static void keyboard_idle_timer_cb(struct ch_virtual_timer *timer, void *arg) { + (void)timer; +#elif CH_KERNEL_MAJOR <= 6 static void keyboard_idle_timer_cb(void *arg) { +#endif USBDriver *usbp = (USBDriver *)arg; osalSysLockFromISR(); @@ -903,7 +944,19 @@ static void send_extra(uint8_t report_id, uint16_t data) { return; } - report_extra_t report = {.report_id = report_id, .usage = data}; + if (usbGetTransmitStatusI(&USB_DRIVER, SHARED_IN_EPNUM)) { + /* Need to either suspend, or loop and call unlock/lock during + * every iteration - otherwise the system will remain locked, + * no interrupts served, so USB not going through as well. + * Note: for suspend, need USB_USE_WAIT == TRUE in halconf.h */ + if (osalThreadSuspendTimeoutS(&(&USB_DRIVER)->epc[SHARED_IN_EPNUM]->in_state->thread, TIME_MS2I(10)) == MSG_TIMEOUT) { + osalSysUnlock(); + return; + } + } + + static report_extra_t report; + report = (report_extra_t){.report_id = report_id, .usage = data}; usbStartTransmitI(&USB_DRIVER, SHARED_IN_EPNUM, (uint8_t *)&report, sizeof(report_extra_t)); osalSysUnlock(); @@ -922,6 +975,23 @@ void send_consumer(uint16_t data) { #endif } +void send_digitizer(report_digitizer_t *report) { +#ifdef DIGITIZER_ENABLE +# ifdef DIGITIZER_SHARED_EP + osalSysLock(); + if (usbGetDriverStateI(&USB_DRIVER) != USB_ACTIVE) { + osalSysUnlock(); + return; + } + + usbStartTransmitI(&USB_DRIVER, DIGITIZER_IN_EPNUM, (uint8_t *)report, sizeof(report_digitizer_t)); + osalSysUnlock(); +# else + chnWrite(&drivers.digitizer_driver.driver, (uint8_t *)report, sizeof(report_digitizer_t)); +# endif +#endif +} + /* --------------------------------------------------------- * Console functions * --------------------------------------------------------- @@ -1029,6 +1099,8 @@ void midi_ep_task(void) { #ifdef VIRTSER_ENABLE +void virtser_init(void) {} + void virtser_send(const uint8_t byte) { chnWrite(&drivers.serial_driver.driver, &byte, 1); } __attribute__((weak)) void virtser_recv(uint8_t c) { @@ -1051,45 +1123,44 @@ void virtser_task(void) { #ifdef JOYSTICK_ENABLE void send_joystick_packet(joystick_t *joystick) { - joystick_report_t rep = { + static joystick_report_t rep; + rep = (joystick_report_t) { # if JOYSTICK_AXES_COUNT > 0 .axes = - { - joystick->axes[0], + { joystick->axes[0], # if JOYSTICK_AXES_COUNT >= 2 - joystick->axes[1], + joystick->axes[1], # endif # if JOYSTICK_AXES_COUNT >= 3 - joystick->axes[2], + joystick->axes[2], # endif # if JOYSTICK_AXES_COUNT >= 4 - joystick->axes[3], + joystick->axes[3], # endif # if JOYSTICK_AXES_COUNT >= 5 - joystick->axes[4], + joystick->axes[4], # endif # if JOYSTICK_AXES_COUNT >= 6 - joystick->axes[5], + joystick->axes[5], # endif - }, + }, # endif // JOYSTICK_AXES_COUNT>0 # if JOYSTICK_BUTTON_COUNT > 0 - .buttons = - { - joystick->buttons[0], + .buttons = { + joystick->buttons[0], # if JOYSTICK_BUTTON_COUNT > 8 - joystick->buttons[1], + joystick->buttons[1], # endif # if JOYSTICK_BUTTON_COUNT > 16 - joystick->buttons[2], + joystick->buttons[2], # endif # if JOYSTICK_BUTTON_COUNT > 24 - joystick->buttons[3], + joystick->buttons[3], # endif - } + } # endif // JOYSTICK_BUTTON_COUNT>0 }; diff --git a/tmk_core/protocol/chibios/usb_util.c b/tmk_core/protocol/chibios/usb_util.c index 5945e8a8de6f..e32d6ebfa4d7 100644 --- a/tmk_core/protocol/chibios/usb_util.c +++ b/tmk_core/protocol/chibios/usb_util.c @@ -16,6 +16,6 @@ #include <hal.h> #include "usb_util.h" -void usb_disable(void) { usbStop(&USBD1); } +void usb_disconnect(void) { usbStop(&USBD1); } bool usb_connected_state(void) { return usbGetDriverStateI(&USBD1) == USB_ACTIVE; } diff --git a/tmk_core/protocol/host.c b/tmk_core/protocol/host.c new file mode 100644 index 000000000000..56d4bb084713 --- /dev/null +++ b/tmk_core/protocol/host.c @@ -0,0 +1,138 @@ +/* +Copyright 2011,2012 Jun Wako <wakojun@gmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#include <stdint.h> +//#include <avr/interrupt.h> +#include "keyboard.h" +#include "keycode.h" +#include "host.h" +#include "util.h" +#include "debug.h" +#include "digitizer.h" + +#ifdef NKRO_ENABLE +# include "keycode_config.h" +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 uint32_t last_programmable_button_report = 0; + +void host_set_driver(host_driver_t *d) { driver = d; } + +host_driver_t *host_get_driver(void) { return driver; } + +#ifdef SPLIT_KEYBOARD +uint8_t split_led_state = 0; +void set_split_host_keyboard_leds(uint8_t led_state) { split_led_state = led_state; } +#endif + +uint8_t host_keyboard_leds(void) { +#ifdef SPLIT_KEYBOARD + if (!is_keyboard_master()) return split_led_state; +#endif + if (!driver) return 0; + return (*driver->keyboard_leds)(); +} + +led_t host_keyboard_led_state(void) { return (led_t)host_keyboard_leds(); } + +/* send report */ +void host_keyboard_send(report_keyboard_t *report) { + if (!driver) return; +#if defined(NKRO_ENABLE) && defined(NKRO_SHARED_EP) + if (keyboard_protocol && keymap_config.nkro) { + /* The callers of this function assume that report->mods is where mods go in. + * But report->nkro.mods can be at a different offset if core keyboard does not have a report ID. + */ + report->nkro.mods = report->mods; + report->nkro.report_id = REPORT_ID_NKRO; + } else +#endif + { +#ifdef KEYBOARD_SHARED_EP + report->report_id = REPORT_ID_KEYBOARD; +#endif + } + (*driver->send_keyboard)(report); + + if (debug_keyboard) { + dprint("keyboard_report: "); + for (uint8_t i = 0; i < KEYBOARD_REPORT_SIZE; i++) { + dprintf("%02X ", report->raw[i]); + } + dprint("\n"); + } +} + +void host_mouse_send(report_mouse_t *report) { + if (!driver) return; +#ifdef MOUSE_SHARED_EP + report->report_id = REPORT_ID_MOUSE; +#endif + (*driver->send_mouse)(report); +} + +void host_system_send(uint16_t report) { + if (report == last_system_report) return; + last_system_report = report; + + if (!driver) return; + (*driver->send_system)(report); +} + +void host_consumer_send(uint16_t report) { + if (report == last_consumer_report) return; + last_consumer_report = report; + + if (!driver) return; + (*driver->send_consumer)(report); +} + +void host_digitizer_send(digitizer_t *digitizer) { + if (!driver) return; + + report_digitizer_t report = { +#ifdef DIGITIZER_SHARED_EP + .report_id = REPORT_ID_DIGITIZER, +#endif + .tip = digitizer->tipswitch & 0x1, + .inrange = digitizer->inrange & 0x1, + .x = (uint16_t)(digitizer->x * 0x7FFF), + .y = (uint16_t)(digitizer->y * 0x7FFF), + }; + + send_digitizer(&report); +} + +__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/protocol/host.h similarity index 94% rename from tmk_core/common/host.h rename to tmk_core/protocol/host.h index 2cffef6e15a2..6b15f0d0c106 100644 --- a/tmk_core/common/host.h +++ b/tmk_core/protocol/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/protocol/host_driver.h similarity index 91% rename from tmk_core/common/host_driver.h rename to tmk_core/protocol/host_driver.h index f34a22053066..affd0dcb3489 100644 --- a/tmk_core/common/host_driver.h +++ b/tmk_core/protocol/host_driver.h @@ -29,4 +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/protocol/ibm4704.c b/tmk_core/protocol/ibm4704.c deleted file mode 100644 index a19443976e35..000000000000 --- 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 4f88d148b3e6..000000000000 --- 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 514d5fac418e..00fec478acff 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 @@ -49,21 +31,11 @@ SRC += $(LUFA_DIR)/usb_util.c # Search Path VPATH += $(TMK_PATH)/$(LUFA_DIR) VPATH += $(LUFA_PATH) -VPATH += $(DRIVER_PATH)/avr - -# 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 63619fdb3b64..e3be96d93dad 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,9 +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 @@ -314,45 +314,44 @@ static void Console_Task(void) { void send_joystick_packet(joystick_t *joystick) { uint8_t timeout = 255; - joystick_report_t r = { + static joystick_report_t r; + r = (joystick_report_t) { # if JOYSTICK_AXES_COUNT > 0 .axes = - { - joystick->axes[0], + { joystick->axes[0], # if JOYSTICK_AXES_COUNT >= 2 - joystick->axes[1], + joystick->axes[1], # endif # if JOYSTICK_AXES_COUNT >= 3 - joystick->axes[2], + joystick->axes[2], # endif # if JOYSTICK_AXES_COUNT >= 4 - joystick->axes[3], + joystick->axes[3], # endif # if JOYSTICK_AXES_COUNT >= 5 - joystick->axes[4], + joystick->axes[4], # endif # if JOYSTICK_AXES_COUNT >= 6 - joystick->axes[5], + joystick->axes[5], # endif - }, + }, # endif // JOYSTICK_AXES_COUNT>0 # if JOYSTICK_BUTTON_COUNT > 0 - .buttons = - { - joystick->buttons[0], + .buttons = { + joystick->buttons[0], # if JOYSTICK_BUTTON_COUNT > 8 - joystick->buttons[1], + joystick->buttons[1], # endif # if JOYSTICK_BUTTON_COUNT > 16 - joystick->buttons[2], + joystick->buttons[2], # endif # if JOYSTICK_BUTTON_COUNT > 24 - joystick->buttons[3], + joystick->buttons[3], # endif - } + } # endif // JOYSTICK_BUTTON_COUNT>0 }; @@ -416,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 * @@ -424,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 @@ -439,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 @@ -526,6 +532,13 @@ void EVENT_USB_Device_ConfigurationChanged(void) { /* Setup joystick endpoint */ ConfigSuccess &= Endpoint_ConfigureEndpoint((JOYSTICK_IN_EPNUM | ENDPOINT_DIR_IN), EP_TYPE_INTERRUPT, JOYSTICK_EPSIZE, 1); #endif + +#if defined(DIGITIZER_ENABLE) && !defined(DIGITIZER_SHARED_EP) + /* 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 @@ -758,28 +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; - report_extra_t r = {.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 @@ -819,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 ******************************************************************************/ @@ -983,6 +1011,23 @@ void virtser_send(const uint8_t byte) { } #endif +void send_digitizer(report_digitizer_t *report) { +#ifdef DIGITIZER_ENABLE + uint8_t timeout = 255; + + if (USB_DeviceState != DEVICE_STATE_Configured) return; + + Endpoint_SelectEndpoint(DIGITIZER_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(report, sizeof(report_digitizer_t), NULL); + Endpoint_ClearIN(); +#endif +} + /******************************************************************************* * main ******************************************************************************/ @@ -995,8 +1040,13 @@ static void setup_mcu(void) { MCUSR &= ~_BV(WDRF); wdt_disable(); - /* Disable clock division */ +// For boards running at 3.3V and crystal at 16 MHz +#if (F_CPU == 8000000 && F_USB == 16000000) + /* Divide clock by 2 */ + clock_prescale_set(clock_div_2); +#else /* Disable clock division */ clock_prescale_set(clock_div_1); +#endif } /** \brief Setup USB @@ -1013,18 +1063,16 @@ static void setup_usb(void) { USB_Device_EnableSOFEvents(); } -/** \brief Main - * - * FIXME: Needs doc - */ -int main(void) __attribute__((weak)); -int main(void) { +void protocol_setup(void) { #ifdef MIDI_ENABLE setup_midi(); #endif setup_mcu(); - keyboard_setup(); + usb_device_state_init(); +} + +void protocol_pre_init(void) { setup_usb(); sei(); @@ -1046,69 +1094,57 @@ int main(void) { #else USB_USBTask(); #endif - /* init modules */ - keyboard_init(); - host_set_driver(&lufa_driver); -#ifdef SLEEP_LED_ENABLE - sleep_led_init(); -#endif +} -#ifdef VIRTSER_ENABLE - virtser_init(); -#endif +void protocol_post_init(void) { host_set_driver(&lufa_driver); } - print("Keyboard start.\n"); - while (1) { +void protocol_pre_task(void) { #if !defined(NO_USB_STARTUP_CHECK) - if (USB_DeviceState == DEVICE_STATE_Suspended) { - print("[s]"); - while (USB_DeviceState == DEVICE_STATE_Suspended) { - suspend_power_down(); - if (USB_Device_RemoteWakeupEnabled && suspend_wakeup_condition()) { - USB_Device_SendRemoteWakeup(); - clear_keyboard(); + if (USB_DeviceState == DEVICE_STATE_Suspended) { + print("[s]"); + while (USB_DeviceState == DEVICE_STATE_Suspended) { + suspend_power_down(); + if (USB_Device_RemoteWakeupEnabled && suspend_wakeup_condition()) { + USB_Device_SendRemoteWakeup(); + clear_keyboard(); # if USB_SUSPEND_WAKEUP_DELAY > 0 - // Some hubs, kvm switches, and monitors do - // weird things, with USB device state bouncing - // around wildly on wakeup, yielding race - // conditions that can corrupt the keyboard state. - // - // Pause for a while to let things settle... - wait_ms(USB_SUSPEND_WAKEUP_DELAY); + // Some hubs, kvm switches, and monitors do + // weird things, with USB device state bouncing + // around wildly on wakeup, yielding race + // conditions that can corrupt the keyboard state. + // + // Pause for a while to let things settle... + wait_ms(USB_SUSPEND_WAKEUP_DELAY); # endif - } } - suspend_wakeup_init(); } + suspend_wakeup_init(); + } #endif +} - keyboard_task(); - +void protocol_post_task(void) { #ifdef MIDI_ENABLE - MIDI_Device_USBTask(&USB_MIDI_Interface); + MIDI_Device_USBTask(&USB_MIDI_Interface); #endif #ifdef MODULE_ADAFRUIT_BLE - adafruit_ble_task(); + adafruit_ble_task(); #endif #ifdef VIRTSER_ENABLE - virtser_task(); - CDC_Device_USBTask(&cdc_device); + virtser_task(); + CDC_Device_USBTask(&cdc_device); #endif #ifdef RAW_ENABLE - raw_hid_task(); + raw_hid_task(); #endif #if !defined(INTERRUPT_CONTROL_ENDPOINT) - USB_USBTask(); + USB_USBTask(); #endif - - // Run housekeeping - housekeeping_task(); - } } uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint16_t wIndex, const void **const DescriptorAddress) { return get_usb_descriptor(wValue, wIndex, DescriptorAddress); } diff --git a/tmk_core/protocol/lufa/lufa.h b/tmk_core/protocol/lufa/lufa.h index 348a84c031ae..6a5205609e31 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/lufa/usb_util.c b/tmk_core/protocol/lufa/usb_util.c index 9e943a21b97c..9691eff1e4d2 100644 --- a/tmk_core/protocol/lufa/usb_util.c +++ b/tmk_core/protocol/lufa/usb_util.c @@ -17,7 +17,7 @@ #include "usb_util.h" #include "wait.h" -void usb_disable(void) { +void usb_disconnect(void) { USB_Disable(); USB_DeviceState = DEVICE_STATE_Unattached; } diff --git a/tmk_core/protocol/midi/qmk_midi.c b/tmk_core/protocol/midi/qmk_midi.c index c18dbf99309b..3a454d61ae8e 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 4463e8dd4256..000000000000 --- 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 327a13856d47..000000000000 --- 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 6f118e617298..000000000000 --- 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 1249ebf392db..000000000000 --- 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 a9ac5d338d9b..000000000000 --- 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/common/report.c b/tmk_core/protocol/report.c similarity index 94% rename from tmk_core/common/report.c rename to tmk_core/protocol/report.c index 1bcb6f2adb94..854b59ae4817 100644 --- a/tmk_core/common/report.c +++ b/tmk_core/protocol/report.c @@ -21,6 +21,16 @@ #include "util.h" #include <string.h> +#ifdef RING_BUFFERED_6KRO_REPORT_ENABLE +# define RO_ADD(a, b) ((a + b) % KEYBOARD_REPORT_KEYS) +# define RO_SUB(a, b) ((a - b + KEYBOARD_REPORT_KEYS) % KEYBOARD_REPORT_KEYS) +# define RO_INC(a) RO_ADD(a, 1) +# define RO_DEC(a) RO_SUB(a, 1) +static int8_t cb_head = 0; +static int8_t cb_tail = 0; +static int8_t cb_count = 0; +#endif + /** \brief has_anykey * * FIXME: Needs doc @@ -54,7 +64,7 @@ uint8_t get_first_key(report_keyboard_t* keyboard_report) { return i << 3 | biton(keyboard_report->nkro.bits[i]); } #endif -#ifdef USB_6KRO_ENABLE +#ifdef RING_BUFFERED_6KRO_REPORT_ENABLE uint8_t i = cb_head; do { if (keyboard_report->keys[i] != 0) { @@ -99,7 +109,7 @@ bool is_key_pressed(report_keyboard_t* keyboard_report, uint8_t key) { * FIXME: Needs doc */ void add_key_byte(report_keyboard_t* keyboard_report, uint8_t code) { -#ifdef USB_6KRO_ENABLE +#ifdef RING_BUFFERED_6KRO_REPORT_ENABLE int8_t i = cb_head; int8_t empty = -1; if (cb_count) { @@ -166,7 +176,7 @@ void add_key_byte(report_keyboard_t* keyboard_report, uint8_t code) { * FIXME: Needs doc */ void del_key_byte(report_keyboard_t* keyboard_report, uint8_t code) { -#ifdef USB_6KRO_ENABLE +#ifdef RING_BUFFERED_6KRO_REPORT_ENABLE uint8_t i = cb_head; if (cb_count) { do { diff --git a/tmk_core/common/report.h b/tmk_core/protocol/report.h similarity index 95% rename from tmk_core/common/report.h rename to tmk_core/protocol/report.h index db6370657d53..1adc892f3b76 100644 --- a/tmk_core/common/report.h +++ b/tmk_core/protocol/report.h @@ -29,8 +29,10 @@ 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_JOYSTICK, + REPORT_ID_DIGITIZER }; /* Mouse buttons */ @@ -194,6 +196,11 @@ typedef struct { uint16_t usage; } __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; @@ -205,6 +212,17 @@ typedef struct { int8_t h; } __attribute__((packed)) report_mouse_t; +typedef struct { +#ifdef DIGITIZER_SHARED_EP + uint8_t report_id; +#endif + uint8_t tip : 1; + uint8_t inrange : 1; + uint8_t pad2 : 6; + uint16_t x; + uint16_t y; +} __attribute__((packed)) report_digitizer_t; + typedef struct { #if JOYSTICK_AXES_COUNT > 0 # if JOYSTICK_AXES_RESOLUTION > 8 diff --git a/tmk_core/protocol/serial_mouse.h b/tmk_core/protocol/serial_mouse.h deleted file mode 100644 index cb83cf4f6221..000000000000 --- a/tmk_core/protocol/serial_mouse.h +++ /dev/null @@ -1,29 +0,0 @@ -/* -Copyright 2014 Robin Haberkorn <robin.haberkorn@googlemail.com> - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#pragma once - -#include <stdint.h> - -#include "serial.h" - -static inline uint8_t serial_mouse_init(void) { - serial_init(); - return 0; -} - -void serial_mouse_task(void); diff --git a/tmk_core/protocol/serial_mouse_microsoft.c b/tmk_core/protocol/serial_mouse_microsoft.c deleted file mode 100644 index eff0bf6e45f8..000000000000 --- a/tmk_core/protocol/serial_mouse_microsoft.c +++ /dev/null @@ -1,113 +0,0 @@ -/* -Copyright 2014 Robin Haberkorn <robin.haberkorn@googlemail.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 <stdint.h> -#include <avr/io.h> -#include <util/delay.h> - -#include "serial.h" -#include "serial_mouse.h" -#include "report.h" -#include "host.h" -#include "timer.h" -#include "print.h" -#include "debug.h" - -#ifdef MAX -# undef MAX -#endif -#define MAX(X, Y) ((X) > (Y) ? (X) : (Y)) - -static void print_usb_data(const report_mouse_t *report); - -void serial_mouse_task(void) { - /* 3 byte ring buffer */ - static uint8_t buffer[3]; - static int buffer_cur = 0; - - static report_mouse_t report = {}; - - int16_t rcv; - - rcv = serial_recv2(); - if (rcv < 0) /* no new data */ - return; - - if (debug_mouse) xprintf("serial_mouse: byte: %04X\n", rcv); - - /* - * If bit 6 is one, this signals the beginning - * of a 3 byte sequence/packet. - */ - if (rcv & (1 << 6)) buffer_cur = 0; - - buffer[buffer_cur] = (uint8_t)rcv; - - if (buffer_cur == 0 && buffer[buffer_cur] == 0x20) { - /* - * Logitech extension: This must be a follow-up on - * the last 3-byte packet signaling a middle button click - */ - report.buttons |= MOUSE_BTN3; - report.x = report.y = 0; - - print_usb_data(&report); - host_mouse_send(&report); - return; - } - - buffer_cur++; - - if (buffer_cur < 3) return; - buffer_cur = 0; - - /* - * parse 3 byte packet. - * NOTE: We only get a complete packet - * if the mouse moved or the button states - * change. - */ - report.buttons = 0; - if (buffer[0] & (1 << 5)) report.buttons |= MOUSE_BTN1; - if (buffer[0] & (1 << 4)) report.buttons |= MOUSE_BTN2; - - report.x = (buffer[0] << 6) | buffer[1]; - report.y = ((buffer[0] << 4) & 0xC0) | buffer[2]; - - /* USB HID uses values from -127 to 127 only */ - report.x = MAX(report.x, -127); - report.y = MAX(report.y, -127); - -#if 0 - if (!report.buttons && !report.x && !report.y) { - /* - * Microsoft extension: Middle mouse button pressed - * FIXME: I don't know how exactly this extension works. - */ - report.buttons |= MOUSE_BTN3; - } -#endif - - print_usb_data(&report); - host_mouse_send(&report); -} - -static void print_usb_data(const report_mouse_t *report) { - if (!debug_mouse) return; - - xprintf("serial_mouse usb: [%02X|%d %d %d %d]\n", report->buttons, report->x, report->y, report->v, report->h); -} diff --git a/tmk_core/protocol/serial_mouse_mousesystems.c b/tmk_core/protocol/serial_mouse_mousesystems.c deleted file mode 100644 index 0ec2b0399aab..000000000000 --- a/tmk_core/protocol/serial_mouse_mousesystems.c +++ /dev/null @@ -1,119 +0,0 @@ -/* -Copyright 2014 Robin Haberkorn <robin.haberkorn@googlemail.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 <stdint.h> -#include <avr/io.h> -#include <util/delay.h> - -#include "serial.h" -#include "serial_mouse.h" -#include "report.h" -#include "host.h" -#include "timer.h" -#include "print.h" -#include "debug.h" - -#ifdef MAX -# undef MAX -#endif -#define MAX(X, Y) ((X) > (Y) ? (X) : (Y)) - -//#define SERIAL_MOUSE_CENTER_SCROLL - -static void print_usb_data(const report_mouse_t *report); - -void serial_mouse_task(void) { - /* 5 byte ring buffer */ - static uint8_t buffer[5]; - static int buffer_cur = 0; - - int16_t rcv; - - report_mouse_t report = {0, 0, 0, 0, 0}; - - rcv = serial_recv2(); - if (rcv < 0) /* no new data */ - return; - - if (debug_mouse) xprintf("serial_mouse: byte: %04X\n", rcv); - - /* - * Synchronization: mouse(4) says that all - * bytes but the first one in the packet have - * bit 7 == 0, but this is untrue. - * Therefore we discard all bytes up to the - * first one with the characteristic bit pattern. - */ - if (buffer_cur == 0 && (rcv >> 3) != 0x10) return; - - buffer[buffer_cur++] = (uint8_t)rcv; - - if (buffer_cur < 5) return; - buffer_cur = 0; - -#ifdef SERIAL_MOUSE_CENTER_SCROLL - if ((buffer[0] & 0x7) == 0x5 && (buffer[1] || buffer[2])) { - /* USB HID uses only values from -127 to 127 */ - report.h = MAX((int8_t)buffer[1], -127); - report.v = MAX((int8_t)buffer[2], -127); - - print_usb_data(&report); - host_mouse_send(&report); - - if (buffer[3] || buffer[4]) { - report.h = MAX((int8_t)buffer[3], -127); - report.v = MAX((int8_t)buffer[4], -127); - - print_usb_data(&report); - host_mouse_send(&report); - } - - return; - } -#endif - - /* - * parse 5 byte packet. - * NOTE: We only get a complete packet - * if the mouse moved or the button states - * change. - */ - if (!(buffer[0] & (1 << 2))) report.buttons |= MOUSE_BTN1; - if (!(buffer[0] & (1 << 1))) report.buttons |= MOUSE_BTN3; - if (!(buffer[0] & (1 << 0))) report.buttons |= MOUSE_BTN2; - - /* USB HID uses only values from -127 to 127 */ - report.x = MAX((int8_t)buffer[1], -127); - report.y = MAX(-(int8_t)buffer[2], -127); - - print_usb_data(&report); - host_mouse_send(&report); - - if (buffer[3] || buffer[4]) { - report.x = MAX((int8_t)buffer[3], -127); - report.y = MAX(-(int8_t)buffer[4], -127); - - print_usb_data(&report); - host_mouse_send(&report); - } -} - -static void print_usb_data(const report_mouse_t *report) { - if (!debug_mouse) return; - - xprintf("serial_mouse usb: [%02X|%d %d %d %d]\n", report->buttons, report->x, report->y, report->v, report->h); -} diff --git a/tmk_core/protocol/usb_descriptor.c b/tmk_core/protocol/usb_descriptor.c index ba7760f28366..a43755f89911 100644 --- a/tmk_core/protocol/usb_descriptor.c +++ b/tmk_core/protocol/usb_descriptor.c @@ -158,6 +158,53 @@ const USB_Descriptor_HIDReport_Datatype_t PROGMEM SharedReport[] = { # endif #endif +#ifdef DIGITIZER_ENABLE +# ifndef DIGITIZER_SHARED_EP +const USB_Descriptor_HIDReport_Datatype_t PROGMEM DigitizerReport[] = { +# elif !defined(SHARED_REPORT_STARTED) +const USB_Descriptor_HIDReport_Datatype_t PROGMEM SharedReport[] = { +# define SHARED_REPORT_STARTED +# endif + HID_RI_USAGE_PAGE(8, 0x0D), // Digitizers + HID_RI_USAGE(8, 0x01), // Digitizer + HID_RI_COLLECTION(8, 0x01), // Application +# ifdef DIGITIZER_SHARED_EP + HID_RI_REPORT_ID(8, REPORT_ID_DIGITIZER), +# endif + HID_RI_USAGE(8, 0x20), // Stylus + HID_RI_COLLECTION(8, 0x00), // Physical + // Tip Switch (1 bit) + HID_RI_USAGE(8, 0x42), // Tip Switch + HID_RI_LOGICAL_MINIMUM(8, 0x00), + HID_RI_LOGICAL_MAXIMUM(8, 0x01), + HID_RI_REPORT_SIZE(8, 0x01), + HID_RI_REPORT_COUNT(8, 0x01), + HID_RI_INPUT(8, HID_IOF_VARIABLE), + // In Range (1 bit) + HID_RI_USAGE(8, 0x32), // In Range + HID_RI_INPUT(8, HID_IOF_VARIABLE), + // Padding (6 bits) + HID_RI_REPORT_COUNT(8, 0x06), + HID_RI_INPUT(8, HID_IOF_CONSTANT | HID_IOF_VARIABLE), + + // X/Y Position (4 bytes) + HID_RI_USAGE_PAGE(8, 0x01), // Generic Desktop + HID_RI_LOGICAL_MAXIMUM(16, 0x7FFF), + HID_RI_REPORT_SIZE(8, 0x10), + HID_RI_REPORT_COUNT(8, 0x01), + HID_RI_UNIT(8, 0x33), // Inch, English Linear + HID_RI_UNIT_EXPONENT(8, 0x0E), // -2 + HID_RI_USAGE(8, 0x30), // X + HID_RI_INPUT(8, HID_IOF_VARIABLE), + HID_RI_USAGE(8, 0x31), // Y + HID_RI_INPUT(8, HID_IOF_VARIABLE), + HID_RI_END_COLLECTION(0), + HID_RI_END_COLLECTION(0), +# ifndef DIGITIZER_SHARED_EP +}; +# endif +#endif + #if defined(SHARED_EP_ENABLE) && !defined(SHARED_REPORT_STARTED) const USB_Descriptor_HIDReport_Datatype_t PROGMEM SharedReport[] = { #endif @@ -190,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 @@ -227,6 +293,7 @@ const USB_Descriptor_HIDReport_Datatype_t PROGMEM SharedReport[] = { HID_RI_OUTPUT(8, HID_IOF_CONSTANT), HID_RI_END_COLLECTION(0), #endif + #ifdef SHARED_EP_ENABLE }; #endif @@ -351,7 +418,7 @@ const USB_Descriptor_Device_t PROGMEM DeviceDescriptor = { .Size = sizeof(USB_Descriptor_Device_t), .Type = DTYPE_Device }, - .USBSpecification = VERSION_BCD(1, 1, 0), + .USBSpecification = VERSION_BCD(2, 0, 0), #if VIRTSER_ENABLE .Class = USB_CSCP_IADDeviceClass, @@ -921,6 +988,46 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = { .PollingIntervalMS = USB_POLLING_INTERVAL_MS } #endif + +#if defined(DIGITIZER_ENABLE) && !defined(DIGITIZER_SHARED_EP) + /* + * Digitizer + */ + .Digitizer_Interface = { + .Header = { + .Size = sizeof(USB_Descriptor_Interface_t), + .Type = DTYPE_Interface + }, + .InterfaceNumber = DIGITIZER_INTERFACE, + .AlternateSetting = 0x00, + .TotalEndpoints = 1, + .Class = HID_CSCP_HIDClass, + .SubClass = HID_CSCP_NonBootSubclass, + .Protocol = HID_CSCP_NonBootProtocol, + .InterfaceStrIndex = NO_DESCRIPTOR + }, + .Digitizer_HID = { + .Header = { + .Size = sizeof(USB_HID_Descriptor_HID_t), + .Type = HID_DTYPE_HID + }, + .HIDSpec = VERSION_BCD(1, 1, 1), + .CountryCode = 0x00, + .TotalReportDescriptors = 1, + .HIDReportType = HID_DTYPE_Report, + .HIDReportLength = sizeof(DigitizerReport) + }, + .Digitizer_INEndpoint = { + .Header = { + .Size = sizeof(USB_Descriptor_Endpoint_t), + .Type = DTYPE_Endpoint + }, + .EndpointAddress = (ENDPOINT_DIR_IN | DIGITIZER_IN_EPNUM), + .Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), + .EndpointSize = DIGITIZER_EPSIZE, + .PollingIntervalMS = USB_POLLING_INTERVAL_MS + }, +#endif }; /* @@ -953,10 +1060,10 @@ const USB_Descriptor_String_t PROGMEM ProductString = { #if defined(SERIAL_NUMBER) const USB_Descriptor_String_t PROGMEM SerialNumberString = { .Header = { - .Size = USB_STRING_LEN(sizeof(STR(SERIAL_NUMBER)) - 1), // Subtract 1 for null terminator + .Size = USB_STRING_LEN(sizeof(SERIAL_NUMBER) - 1), // Subtract 1 for null terminator .Type = DTYPE_String }, - .UnicodeString = LSTR(SERIAL_NUMBER) + .UnicodeString = USBSTR(SERIAL_NUMBER) }; #endif @@ -1059,6 +1166,13 @@ uint16_t get_usb_descriptor(const uint16_t wValue, const uint16_t wIndex, const Size = sizeof(USB_HID_Descriptor_HID_t); break; #endif +#if defined(DIGITIZER_ENABLE) && !defined(DIGITIZER_SHARED_EP) + case DIGITIZER_INTERFACE: + Address = &ConfigurationDescriptor.Digitizer_HID; + Size = sizeof(USB_HID_Descriptor_HID_t); + + break; +#endif } break; @@ -1108,6 +1222,12 @@ uint16_t get_usb_descriptor(const uint16_t wValue, const uint16_t wIndex, const Address = &JoystickReport; Size = sizeof(JoystickReport); break; +#endif +#if defined(DIGITIZER_ENABLE) && !defined(DIGITIZER_SHARED_EP) + case DIGITIZER_INTERFACE: + Address = &DigitizerReport; + Size = sizeof(DigitizerReport); + break; #endif } diff --git a/tmk_core/protocol/usb_descriptor.h b/tmk_core/protocol/usb_descriptor.h index 867e549b4f84..0f0c78f66c40 100644 --- a/tmk_core/protocol/usb_descriptor.h +++ b/tmk_core/protocol/usb_descriptor.h @@ -135,6 +135,13 @@ typedef struct { USB_HID_Descriptor_HID_t Joystick_HID; USB_Descriptor_Endpoint_t Joystick_INEndpoint; #endif + +#if defined(DIGITIZER_ENABLE) && !defined(DIGITIZER_SHARED_EP) + // Digitizer HID Interface + USB_Descriptor_Interface_t Digitizer_Interface; + USB_HID_Descriptor_HID_t Digitizer_HID; + USB_Descriptor_Endpoint_t Digitizer_INEndpoint; +#endif } USB_Descriptor_Configuration_t; /* @@ -180,6 +187,10 @@ enum usb_interfaces { #if defined(JOYSTICK_ENABLE) JOYSTICK_INTERFACE, #endif + +#if defined(DIGITIZER_ENABLE) && !defined(DIGITIZER_SHARED_EP) + DIGITIZER_INTERFACE, +#endif TOTAL_INTERFACES }; @@ -226,7 +237,7 @@ enum usb_endpoints { # if STM32_USB_USE_OTG1 # define CONSOLE_OUT_EPNUM CONSOLE_IN_EPNUM # else - CONSOLE_OUT_EPNUM = NEXT_EPNUM, + CONSOLE_OUT_EPNUM = NEXT_EPNUM, # endif # else # define CONSOLE_OUT_EPNUM CONSOLE_IN_EPNUM @@ -259,6 +270,19 @@ enum usb_endpoints { JOYSTICK_OUT_EPNUM = NEXT_EPNUM, # endif #endif + +#ifdef DIGITIZER_ENABLE +# if !defined(DIGITIZER_SHARED_EP) + DIGITIZER_IN_EPNUM = NEXT_EPNUM, +# if STM32_USB_USE_OTG1 + DIGITIZER_OUT_EPNUM = DIGITIZER_IN_EPNUM, +# else + DIGITIZER_OUT_EPNUM = NEXT_EPNUM, +# endif +# else +# define DIGITIZER_IN_EPNUM SHARED_IN_EPNUM +# endif +#endif }; #ifdef PROTOCOL_LUFA @@ -284,5 +308,6 @@ enum usb_endpoints { #define CDC_NOTIFICATION_EPSIZE 8 #define CDC_EPSIZE 16 #define JOYSTICK_EPSIZE 8 +#define DIGITIZER_EPSIZE 8 uint16_t get_usb_descriptor(const uint16_t wValue, const uint16_t wIndex, const void** const DescriptorAddress); diff --git a/tmk_core/protocol/usb_descriptor_common.h b/tmk_core/protocol/usb_descriptor_common.h index b1f602c82eba..ce0cf09763bc 100644 --- a/tmk_core/protocol/usb_descriptor_common.h +++ b/tmk_core/protocol/usb_descriptor_common.h @@ -16,6 +16,10 @@ #pragma once +// Prefix string literal with L for descriptors +#define USBCONCAT(a, b) a##b +#define USBSTR(s) USBCONCAT(L, s) + ///////////////////// // RAW Usage page and ID configuration diff --git a/tmk_core/protocol/usb_device_state.c b/tmk_core/protocol/usb_device_state.c new file mode 100644 index 000000000000..84f01943be4c --- /dev/null +++ b/tmk_core/protocol/usb_device_state.c @@ -0,0 +1,59 @@ +/* + * 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" +#if defined(HAPTIC_ENABLE) +# include "haptic.h" +#endif + +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) { +#if defined(HAPTIC_ENABLE) && HAPTIC_OFF_IN_LOW_POWER + haptic_notify_usb_device_state_change(); +#endif + 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/tmk_core/protocol/usb_device_state.h b/tmk_core/protocol/usb_device_state.h new file mode 100644 index 000000000000..c229311d4673 --- /dev/null +++ b/tmk_core/protocol/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/tmk_core/protocol/usb_hid.mk b/tmk_core/protocol/usb_hid.mk index e7200809790d..c0c157c04301 100644 --- a/tmk_core/protocol/usb_hid.mk +++ b/tmk_core/protocol/usb_hid.mk @@ -1,10 +1,10 @@ USB_HID_DIR = protocol/usb_hid - +USB_HOST_LIB_DIR = $(LIB_PATH)/usbhost # # USB Host Shield # -USB_HOST_SHIELD_DIR = $(USB_HID_DIR)/USB_Host_Shield_2.0 +USB_HOST_SHIELD_DIR = $(USB_HOST_LIB_DIR)/USB_Host_Shield_2.0 USB_HOST_SHIELD_SRC = \ $(USB_HOST_SHIELD_DIR)/Usb.cpp \ $(USB_HOST_SHIELD_DIR)/hid.cpp \ @@ -17,7 +17,7 @@ USB_HOST_SHIELD_SRC = \ # # Arduino # -ARDUINO_DIR = $(USB_HID_DIR)/arduino-1.0.1 +ARDUINO_DIR = $(USB_HOST_LIB_DIR)/arduino-1.0.1 ARDUINO_CORES_DIR = $(ARDUINO_DIR)/cores/arduino ARDUINO_CORES_SRC = \ $(ARDUINO_CORES_DIR)/Print.cpp \ @@ -58,13 +58,13 @@ OPT_DEFS += -DARDUINO=101 # Search Path # VPATH += $(TMK_DIR)/$(USB_HID_DIR) -VPATH += $(TMK_DIR)/$(USB_HOST_SHIELD_DIR) +VPATH += $(USB_HOST_SHIELD_DIR) # for #include "Arduino.h" -VPATH += $(TMK_DIR)/$(ARDUINO_CORES_DIR) +VPATH += $(ARDUINO_CORES_DIR) # for #include "pins_arduino.h" -VPATH += $(TMK_DIR)/$(ARDUINO_DIR)/variants/leonardo +VPATH += $(ARDUINO_DIR)/variants/leonardo # ad hoc workaround for compile problem on Windows: # Windows doesn't know difference between common/print.h and arduino/Print.h. diff --git a/tmk_core/protocol/usb_hid/override_wiring.c b/tmk_core/protocol/usb_hid/override_wiring.c index 52f03c300fb4..adc6645f8eb4 100644 --- a/tmk_core/protocol/usb_hid/override_wiring.c +++ b/tmk_core/protocol/usb_hid/override_wiring.c @@ -3,7 +3,7 @@ */ #define __DELAY_BACKWARD_COMPATIBLE__ #include <util/delay.h> -#include "common/timer.h" +#include "platforms/timer.h" unsigned long millis(void) diff --git a/tmk_core/protocol/usb_hid/parser.h b/tmk_core/protocol/usb_hid/parser.h index 036281fa6613..ba35b7af5a74 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 @@ class KBDReportParser : public HIDReportParser 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 083b68d1f5cc..5cb5f5d03567 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/common/usb_util.c b/tmk_core/protocol/usb_util.c similarity index 95% rename from tmk_core/common/usb_util.c rename to tmk_core/protocol/usb_util.c index d4134a04465e..dd1deeaa1123 100644 --- a/tmk_core/common/usb_util.c +++ b/tmk_core/protocol/usb_util.c @@ -16,7 +16,7 @@ #include "quantum.h" #include "usb_util.h" -__attribute__((weak)) void usb_disable(void) {} +__attribute__((weak)) void usb_disconnect(void) {} __attribute__((weak)) bool usb_connected_state(void) { return true; } __attribute__((weak)) bool usb_vbus_state(void) { #ifdef USB_VBUS_PIN diff --git a/tmk_core/common/usb_util.h b/tmk_core/protocol/usb_util.h similarity index 96% rename from tmk_core/common/usb_util.h rename to tmk_core/protocol/usb_util.h index 4ebedb1e71f8..13db9fbfbdfb 100644 --- a/tmk_core/common/usb_util.h +++ b/tmk_core/protocol/usb_util.h @@ -17,6 +17,6 @@ #include <stdbool.h> -void usb_disable(void); +void usb_disconnect(void); bool usb_connected_state(void); bool usb_vbus_state(void); diff --git a/tmk_core/protocol/vusb.mk b/tmk_core/protocol/vusb.mk index e4d013b38dfa..5572597e2173 100644 --- a/tmk_core/protocol/vusb.mk +++ b/tmk_core/protocol/vusb.mk @@ -3,7 +3,7 @@ VUSB_DIR = protocol/vusb # Path to the V-USB library VUSB_PATH = $(LIB_PATH)/vusb -SRC += $(VUSB_DIR)/main.c \ +SRC += $(VUSB_DIR)/protocol.c \ $(VUSB_DIR)/vusb.c \ $(VUSB_DIR)/usb_util.c \ $(VUSB_PATH)/usbdrv/usbdrv.c \ diff --git a/tmk_core/protocol/vusb/main.c b/tmk_core/protocol/vusb/main.c deleted file mode 100644 index 53926a7493ce..000000000000 --- a/tmk_core/protocol/vusb/main.c +++ /dev/null @@ -1,179 +0,0 @@ -/* Name: main.c - * Project: hid-mouse, a very simple HID example - * Author: Christian Starkjohann - * Creation Date: 2008-04-07 - * Tabsize: 4 - * Copyright: (c) 2008 by OBJECTIVE DEVELOPMENT Software GmbH - * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) - * This Revision: $Id: main.c 790 2010-05-30 21:00:26Z cs $ - */ - -#include <stdint.h> - -#include <avr/interrupt.h> -#include <avr/power.h> -#include <avr/wdt.h> -#include <avr/sleep.h> - -#include <usbdrv/usbdrv.h> - -#include "vusb.h" - -#include "keyboard.h" -#include "host.h" -#include "timer.h" -#include "print.h" -#include "suspend.h" -#include "wait.h" -#include "sendchar.h" - -#ifdef SLEEP_LED_ENABLE -# include "sleep_led.h" -#endif - -#ifdef CONSOLE_ENABLE -void console_task(void); -#endif - -#ifdef RAW_ENABLE -void raw_hid_task(void); -#endif - -/* This is from main.c of USBaspLoader */ -static void initForUsbConnectivity(void) { - uint8_t i = 0; - - usbInit(); - /* enforce USB re-enumerate: */ - usbDeviceDisconnect(); /* do this while interrupts are disabled */ - while (--i) { /* fake USB disconnect for > 250 ms */ - wdt_reset(); - wait_ms(1); - } - usbDeviceConnect(); -} - -static void vusb_send_remote_wakeup(void) { - cli(); - - uint8_t ddr_orig = USBDDR; - USBOUT |= (1 << USBMINUS); - USBDDR = ddr_orig | USBMASK; - USBOUT ^= USBMASK; - - wait_ms(25); - - USBOUT ^= USBMASK; - USBDDR = ddr_orig; - USBOUT &= ~(1 << USBMINUS); - - sei(); -} - -bool vusb_suspended = false; - -static void vusb_suspend(void) { - vusb_suspended = true; - -#ifdef SLEEP_LED_ENABLE - sleep_led_enable(); -#endif - - suspend_power_down(); -} - -#if USB_COUNT_SOF -static void vusb_wakeup(void) { - vusb_suspended = false; - suspend_wakeup_init(); - -# ifdef SLEEP_LED_ENABLE - sleep_led_disable(); -# endif -} -#endif - -/** \brief Setup USB - * - * FIXME: Needs doc - */ -static void setup_usb(void) { initForUsbConnectivity(); } - -/** \brief Main - * - * FIXME: Needs doc - */ -int main(void) __attribute__((weak)); -int main(void) { -#if USB_COUNT_SOF - uint16_t sof_timer = timer_read(); -#endif - -#ifdef CLKPR - // avoid unintentional changes of clock frequency in devices that have a - // clock prescaler - clock_prescale_set(clock_div_1); -#endif - keyboard_setup(); - setup_usb(); - sei(); - keyboard_init(); - host_set_driver(vusb_driver()); - - wait_ms(50); - -#ifdef SLEEP_LED_ENABLE - sleep_led_init(); -#endif - - while (1) { -#if USB_COUNT_SOF - if (usbSofCount != 0) { - usbSofCount = 0; - sof_timer = timer_read(); - if (vusb_suspended) { - vusb_wakeup(); - } - } else { - // Suspend when no SOF in 3ms-10ms(7.1.7.4 Suspending of USB1.1) - if (!vusb_suspended && timer_elapsed(sof_timer) > 5) { - vusb_suspend(); - } - } -#endif - if (vusb_suspended) { - vusb_suspend(); - if (suspend_wakeup_condition()) { - vusb_send_remote_wakeup(); - } - } else { - usbPoll(); - - // TODO: configuration process is inconsistent. it sometime fails. - // To prevent failing to configure NOT scan keyboard during configuration - if (usbConfiguration && usbInterruptIsReady()) { - keyboard_task(); - } - vusb_transfer_keyboard(); - -#ifdef RAW_ENABLE - usbPoll(); - - if (usbConfiguration && usbInterruptIsReady3()) { - raw_hid_task(); - } -#endif - -#ifdef CONSOLE_ENABLE - usbPoll(); - - if (usbConfiguration && usbInterruptIsReady3()) { - console_task(); - } -#endif - - // Run housekeeping - housekeeping_task(); - } - } -} diff --git a/tmk_core/protocol/vusb/protocol.c b/tmk_core/protocol/vusb/protocol.c new file mode 100644 index 000000000000..644e77e021a4 --- /dev/null +++ b/tmk_core/protocol/vusb/protocol.c @@ -0,0 +1,172 @@ +/* Name: main.c + * Project: hid-mouse, a very simple HID example + * Author: Christian Starkjohann + * Creation Date: 2008-04-07 + * Tabsize: 4 + * Copyright: (c) 2008 by OBJECTIVE DEVELOPMENT Software GmbH + * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) + * This Revision: $Id: main.c 790 2010-05-30 21:00:26Z cs $ + */ + +#include <stdint.h> + +#include <avr/interrupt.h> +#include <avr/power.h> +#include <avr/wdt.h> +#include <avr/sleep.h> + +#include <usbdrv/usbdrv.h> + +#include "vusb.h" + +#include "keyboard.h" +#include "host.h" +#include "timer.h" +#include "print.h" +#include "suspend.h" +#include "wait.h" +#include "sendchar.h" + +#ifdef SLEEP_LED_ENABLE +# include "sleep_led.h" +#endif + +#ifdef CONSOLE_ENABLE +void console_task(void); +#endif + +#ifdef RAW_ENABLE +void raw_hid_task(void); +#endif + +/* This is from main.c of USBaspLoader */ +static void initForUsbConnectivity(void) { + uint8_t i = 0; + + usbInit(); + /* enforce USB re-enumerate: */ + usbDeviceDisconnect(); /* do this while interrupts are disabled */ + while (--i) { /* fake USB disconnect for > 250 ms */ + wdt_reset(); + wait_ms(1); + } + usbDeviceConnect(); +} + +static void vusb_send_remote_wakeup(void) { + cli(); + + uint8_t ddr_orig = USBDDR; + USBOUT |= (1 << USBMINUS); + USBDDR = ddr_orig | USBMASK; + USBOUT ^= USBMASK; + + wait_ms(25); + + USBOUT ^= USBMASK; + USBDDR = ddr_orig; + USBOUT &= ~(1 << USBMINUS); + + sei(); +} + +bool vusb_suspended = false; + +static void vusb_suspend(void) { + vusb_suspended = true; + +#ifdef SLEEP_LED_ENABLE + sleep_led_enable(); +#endif + + suspend_power_down(); +} + +#if USB_COUNT_SOF +static void vusb_wakeup(void) { + vusb_suspended = false; + suspend_wakeup_init(); + +# ifdef SLEEP_LED_ENABLE + sleep_led_disable(); +# endif +} +#endif + +/** \brief Setup USB + * + * FIXME: Needs doc + */ +static void setup_usb(void) { initForUsbConnectivity(); } + +uint16_t sof_timer = 0; + +void protocol_setup(void) { +#if USB_COUNT_SOF + sof_timer = timer_read(); +#endif + +#ifdef CLKPR + // avoid unintentional changes of clock frequency in devices that have a + // clock prescaler + clock_prescale_set(clock_div_1); +#endif +} + +void protocol_pre_init(void) { + setup_usb(); + sei(); +} + +void protocol_post_init(void) { + host_set_driver(vusb_driver()); + wait_ms(50); +} + +void protocol_task(void) { +#if USB_COUNT_SOF + if (usbSofCount != 0) { + usbSofCount = 0; + sof_timer = timer_read(); + if (vusb_suspended) { + vusb_wakeup(); + } + } else { + // Suspend when no SOF in 3ms-10ms(7.1.7.4 Suspending of USB1.1) + if (!vusb_suspended && timer_elapsed(sof_timer) > 5) { + vusb_suspend(); + } + } +#endif + if (vusb_suspended) { + vusb_suspend(); + if (suspend_wakeup_condition()) { + vusb_send_remote_wakeup(); + } + } else { + usbPoll(); + + // TODO: configuration process is inconsistent. it sometime fails. + // To prevent failing to configure NOT scan keyboard during configuration + if (usbConfiguration && usbInterruptIsReady()) { + keyboard_task(); + } + vusb_transfer_keyboard(); + +#ifdef RAW_ENABLE + usbPoll(); + + if (usbConfiguration && usbInterruptIsReady3()) { + raw_hid_task(); + } +#endif + +#ifdef CONSOLE_ENABLE + usbPoll(); + + if (usbConfiguration && usbInterruptIsReady3()) { + console_task(); + } +#endif + } +} diff --git a/tmk_core/protocol/vusb/usb_util.c b/tmk_core/protocol/vusb/usb_util.c index 602854dbe6f3..4ee2d3188b32 100644 --- a/tmk_core/protocol/vusb/usb_util.c +++ b/tmk_core/protocol/vusb/usb_util.c @@ -16,7 +16,7 @@ #include <usbdrv/usbdrv.h> #include "usb_util.h" -void usb_disable(void) { usbDeviceDisconnect(); } +void usb_disconnect(void) { usbDeviceDisconnect(); } bool usb_connected_state(void) { usbPoll(); diff --git a/tmk_core/protocol/vusb/vusb.c b/tmk_core/protocol/vusb/vusb.c index 9362fbde7853..bd0f1c21aa96 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; } @@ -272,7 +273,8 @@ static void send_extra(uint8_t report_id, uint16_t data) { last_id = report_id; last_data = data; - report_extra_t report = {.report_id = report_id, .usage = data}; + static report_extra_t report; + report = (report_extra_t){.report_id = report_id, .usage = data}; if (usbInterruptIsReadyShared()) { usbSetInterruptShared((void *)&report, sizeof(report_extra_t)); } @@ -291,6 +293,28 @@ static void send_consumer(uint16_t data) { #endif } +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 +} + /*------------------------------------------------------------------* * Request from host * *------------------------------------------------------------------*/ @@ -509,8 +533,66 @@ const PROGMEM uchar shared_hid_report[] = { 0x95, 0x01, // Report Count (1) 0x75, 0x10, // Report Size (16) 0x81, 0x00, // Input (Data, Array, Absolute) - 0xC0 // End Collection + 0xC0, // End Collection #endif + +#ifdef DIGITIZER_ENABLE + // Digitizer report descriptor + 0x05, 0x0D, // Usage Page (Digitizers) + 0x09, 0x01, // Usage (Digitizer) + 0xA1, 0x01, // Collection (Application) + 0x85, REPORT_ID_DIGITIZER, // Report ID + 0x09, 0x22, // Usage (Finger) + 0xA1, 0x00, // Collection (Physical) + // Tip Switch (1 bit) + 0x09, 0x42, // Usage (Tip Switch) + 0x15, 0x00, // Logical Minimum + 0x25, 0x01, // Logical Maximum + 0x95, 0x01, // Report Count (1) + 0x75, 0x01, // Report Size (16) + 0x81, 0x02, // Input (Data, Variable, Absolute) + // In Range (1 bit) + 0x09, 0x32, // Usage (In Range) + 0x81, 0x02, // Input (Data, Variable, Absolute) + // Padding (6 bits) + 0x95, 0x06, // Report Count (6) + 0x81, 0x03, // Input (Constant) + + // X/Y Position (4 bytes) + 0x05, 0x01, // Usage Page (Generic Desktop) + 0x26, 0xFF, 0x7F, // Logical Maximum (32767) + 0x95, 0x01, // Report Count (1) + 0x75, 0x10, // Report Size (16) + 0x65, 0x33, // Unit (Inch, English Linear) + 0x55, 0x0E, // Unit Exponent (-2) + 0x09, 0x30, // Usage (X) + 0x81, 0x02, // Input (Data, Variable, Absolute) + 0x09, 0x31, // Usage (Y) + 0x81, 0x02, // Input (Data, Variable, Absolute) + 0xC0, // End Collection + 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 @@ -598,10 +680,10 @@ const PROGMEM usbStringDescriptor_t usbStringDescriptorProduct = { #if defined(SERIAL_NUMBER) const PROGMEM usbStringDescriptor_t usbStringDescriptorSerial = { .header = { - .bLength = USB_STRING_LEN(sizeof(STR(SERIAL_NUMBER)) - 1), + .bLength = USB_STRING_LEN(sizeof(SERIAL_NUMBER) - 1), .bDescriptorType = USBDESCR_STRING }, - .bString = LSTR(SERIAL_NUMBER) + .bString = USBSTR(SERIAL_NUMBER) }; #endif diff --git a/tmk_core/readme.md b/tmk_core/readme.md index a754cfee42d0..a47dc8818591 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 fc2dc68be224..6767a8e4af87 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 @@ -78,7 +81,15 @@ CSTANDARD = -std=gnu99 # -f...: tuning, see GCC manual and avr-libc documentation # -Wall...: warning level # -Wa,...: tell GCC to pass this to the assembler. -# -adhlns...: create assembler listing +ifeq ($(strip $(LTO_ENABLE)), yes) + ifeq ($(PLATFORM),CHIBIOS) + $(info Enabling LTO on ChibiOS-targeting boards is known to have a high likelihood of failure.) + $(info If unsure, set LTO_ENABLE = no.) + endif + CDEFS += -flto + CDEFS += -DLTO_ENABLE +endif + DEBUG_ENABLE ?= yes ifeq ($(strip $(SKIP_DEBUG_INFO)),yes) DEBUG_ENABLE=no @@ -105,7 +116,6 @@ endif #CFLAGS += -Wundef #CFLAGS += -Wunreachable-code #CFLAGS += -Wsign-compare -CFLAGS += -Wa,-adhlns=$(@:%.o=%.lst) CFLAGS += $(CSTANDARD) # This fixes lots of keyboards linking errors but SHOULDN'T BE A FINAL SOLUTION @@ -118,7 +128,6 @@ CFLAGS += -fcommon # -f...: tuning, see GCC manual and avr-libc documentation # -Wall...: warning level # -Wa,...: tell GCC to pass this to the assembler. -# -adhlns...: create assembler listing ifeq ($(strip $(DEBUG_ENABLE)),yes) CXXFLAGS += -g$(DEBUG) endif @@ -137,24 +146,10 @@ endif #CXXFLAGS += -Wstrict-prototypes #CXXFLAGS += -Wunreachable-code #CXXFLAGS += -Wsign-compare -CXXFLAGS += -Wa,-adhlns=$(@:%.o=%.lst) #CXXFLAGS += $(CSTANDARD) #---------------- Assembler Options ---------------- -# -Wa,...: tell GCC to pass this to the assembler. -# -adhlns: create listing -# -gstabs: have the assembler create line number information; note that -# for use in COFF files, additional information about filenames -# and function names needs to be present in the assembler source -# files -- see avr-libc docs [FIXME: not yet described there] -# -listing-cont-lines: Sets the maximum number of continuation lines of hex -# dump that will be displayed for a given single line of source input. ASFLAGS += $(ADEFS) -ifeq ($(strip $(DEBUG_ENABLE)),yes) - ASFLAGS += -Wa,-adhlns=$(@:%.o=%.lst),-gstabs,--listing-cont-lines=100 -else - ASFLAGS += -Wa,-adhlns=$(@:%.o=%.lst),--listing-cont-lines=100 -endif ifeq ($(VERBOSE_AS_CMD),yes) ASFLAGS += -v endif @@ -211,6 +206,32 @@ LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB) # You can give EXTRALDFLAGS at 'make' command line. LDFLAGS += $(EXTRALDFLAGS) +#---------------- Assembler Listings ---------------- +# -Wa,...: tell GCC to pass this to the assembler. +# -adhlns: create listing +# -gstabs: have the assembler create line number information; note that +# for use in COFF files, additional information about filenames +# and function names needs to be present in the assembler source +# files -- see avr-libc docs [FIXME: not yet described there] +# -listing-cont-lines: Sets the maximum number of continuation lines of hex +# dump that will be displayed for a given single line of source input. + +ADHLNS_ENABLE ?= no +ifeq ($(ADHLNS_ENABLE),yes) + # Avoid "Options to '-Xassembler' do not match" - only specify assembler options at LTO link time + ifeq ($(strip $(LTO_ENABLE)), yes) + LDFLAGS += -Wa,-adhlns=$(BUILD_DIR)/$(TARGET).lst + else + CFLAGS += -Wa,-adhlns=$(@:%.o=%.lst) + CXXFLAGS += -Wa,-adhlns=$(@:%.o=%.lst) + ifeq ($(strip $(DEBUG_ENABLE)),yes) + ASFLAGS = -Wa,-adhlns=$(@:%.o=%.lst),-gstabs,--listing-cont-lines=100 + else + ASFLAGS = -Wa,-adhlns=$(@:%.o=%.lst),--listing-cont-lines=100 + endif + endif +endif + # Define programs and commands. SHELL = sh REMOVE = rm -f @@ -340,7 +361,7 @@ BEGIN = gccversion sizebefore # Note the obj.txt depeendency is there to force linking if a source file is deleted %.elf: $(OBJ) $(MASTER_OUTPUT)/cflags.txt $(MASTER_OUTPUT)/ldflags.txt $(MASTER_OUTPUT)/obj.txt | $(BEGIN) @$(SILENT) || printf "$(MSG_LINKING) $@" | $(AWK_CMD) - $(eval CMD=$(CC) $(ALL_CFLAGS) $(filter-out %.txt,$^) --output $@ $(LDFLAGS)) + $(eval CMD=MAKE=$(MAKE) $(CC) $(ALL_CFLAGS) $(filter-out %.txt,$^) --output $@ $(LDFLAGS)) @$(BUILD_CMD) @@ -458,7 +479,7 @@ ifeq ($(findstring avr-gcc,$(CC)),avr-gcc) SIZE_MARGIN = 1024 check-size: - $(eval MAX_SIZE=$(shell n=`$(CC) -E -mmcu=$(MCU) $(CFLAGS) $(OPT_DEFS) tmk_core/common/avr/bootloader_size.c 2> /dev/null | sed -ne 's/\r//;/^#/n;/^AVR_SIZE:/,$${s/^AVR_SIZE: //;p;}'` && echo $$(($$n)) || echo 0)) + $(eval MAX_SIZE=$(shell n=`$(CC) -E -mmcu=$(MCU) -D__ASSEMBLER__ $(CFLAGS) $(OPT_DEFS) platforms/avr/bootloader_size.c 2> /dev/null | sed -ne 's/\r//;/^#/n;/^AVR_SIZE:/,$${s/^AVR_SIZE: //;p;}'` && echo $$(($$n)) || echo 0)) $(eval CURRENT_SIZE=$(shell if [ -f $(BUILD_DIR)/$(TARGET).hex ]; then $(SIZE) --target=$(FORMAT) $(BUILD_DIR)/$(TARGET).hex | $(AWK) 'NR==2 {print $$4}'; else printf 0; fi)) $(eval FREE_SIZE=$(shell expr $(MAX_SIZE) - $(CURRENT_SIZE))) $(eval OVER_SIZE=$(shell expr $(CURRENT_SIZE) - $(MAX_SIZE))) @@ -472,12 +493,12 @@ check-size: $(PRINT_WARNING_PLAIN); printf " * $(MSG_FILE_NEAR_LIMIT)"; \ else \ $(PRINT_OK); $(SILENT) || printf " * $(MSG_FILE_JUST_RIGHT)"; \ - fi \ - fi \ + fi ; \ + fi ; \ fi else check-size: - $(SILENT) || echo "(Firmware size check does not yet support $(MCU) microprocessors; skipping.)" + $(SILENT) || echo "$(MSG_CHECK_FILESIZE_SKIPPED)" endif check-md5: diff --git a/users/333fred/333fred.c b/users/333fred/333fred.c index 621b9e664902..99f4e0168515 100644 --- a/users/333fred/333fred.c +++ b/users/333fred/333fred.c @@ -117,7 +117,7 @@ void tap_dance_process_keycode(uint16_t keycode) { __attribute__ ((weak)) void layer_state_set_rgb(uint32_t state) {} -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { layer_state_set_rgb(state); return state; } diff --git a/users/ajp10304/ajp10304.c b/users/ajp10304/ajp10304.c index 9cae65d5cfd3..dd13787d6382 100644 --- a/users/ajp10304/ajp10304.c +++ b/users/ajp10304/ajp10304.c @@ -1,3 +1,19 @@ +/* Copyright 2021 Alan Pocklington + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "ajp10304.h" bool process_record_user(uint16_t keycode, keyrecord_t *record) { diff --git a/users/ajp10304/ajp10304.h b/users/ajp10304/ajp10304.h index b96e00fc4e5a..ec1ed11c0471 100644 --- a/users/ajp10304/ajp10304.h +++ b/users/ajp10304/ajp10304.h @@ -1,3 +1,19 @@ +/* Copyright 2021 Alan Pocklington + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 ajp10304_layers { diff --git a/users/ajp10304/readme.md b/users/ajp10304/readme.md index 8e1a438aa850..bfc39535c1ce 100644 --- a/users/ajp10304/readme.md +++ b/users/ajp10304/readme.md @@ -1,4 +1,4 @@ -Copyright 2020 Alan Pocklington <ajp10304@gmail.com> @ajp10304 +Copyright 2021 Alan Pocklington <ajp10304@gmail.com> @ajp10304 This 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,7 +14,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/>. # AJP10304 Custom 40% Layout -# For the Planck, Shark, JJ40 and Atreus50 +# For the Planck, Shark, Quark, JJ40 and Atreus50 **Note:** In the tables below where there are two characters on a key, the second is the output when shift is applied. @@ -116,7 +116,7 @@ Activated when `fn` and `raise` held together. | | | | | | | | | | | | | | :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| -| ESC | | | | | | | | BTN3 | | | | +| ESC | | | | | | W_L | W_UP | BTN3 | W_DWN| W_R | | | ACC0 | ACC1 | ACC2 | | | | | BTN1 | UP | BTN2 | | | | ACC0 | ACC1 | ACC2 | | | | | LEFT | DOWN | RIGHT| | | | | | | | | | | | | | | | diff --git a/users/arkag/arkag.c b/users/arkag/arkag.c index ea716ecdab8f..da85d4f6d499 100644 --- a/users/arkag/arkag.c +++ b/users/arkag/arkag.c @@ -392,6 +392,10 @@ void matrix_scan_user(void) { // end format functions // start fancy functions + SEQ_TWO_KEYS(KC_V, KC_P) { + SEND_STRING("ggvG}x:set paste\ni"); + pri_mod_keystroke(KC_V); + } SEQ_THREE_KEYS(KC_C, KC_C, KC_ENT) { surround_type(6, KC_GRAVE, false); pri_mod_keystroke(KC_V); diff --git a/users/bbaserdem/bbaserdem.c b/users/bbaserdem/bbaserdem.c index ac7b1b62e69e..cdacda12ee85 100644 --- a/users/bbaserdem/bbaserdem.c +++ b/users/bbaserdem/bbaserdem.c @@ -87,7 +87,7 @@ void rgblight_saveBase(void) { base_sta = false; // If saving, that means base layer is being left } -// Load the base state back +// Load the base state back void rgblight_loadBase(void) { // Don't do anything if not enabled if ( !base_sta ) { @@ -248,7 +248,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; break; -#endif +#endif // If these keys are pressed, load base layer config, and mark saving #ifdef RGBLIGHT_ENABLE @@ -261,7 +261,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case RGB_HUI: case RGB_HUD: if ( !base_sta ) { - rgblight_loadBase(); + rgblight_loadBase(); } return true; break; @@ -301,7 +301,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; break; - + // Layer switches with sound case K_GAMES: if (record->event.pressed) { @@ -622,7 +622,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { |*-----LAYER CHANGE-----*| \*----------------------*/ -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { state = layer_state_set_keymap (state); #ifdef RGBLIGHT_ENABLE diff --git a/users/bbaserdem/rules.mk b/users/bbaserdem/rules.mk index 94f01cdffcac..9c7e78e2f8a2 100644 --- a/users/bbaserdem/rules.mk +++ b/users/bbaserdem/rules.mk @@ -10,14 +10,12 @@ ifndef BLUETOOTH_ENABLE BLUETOOTH_ENABLE = no # No bluetooth endif COMMAND_ENABLE = no # Some bootmagic thing i dont use -BOOTMAGIC_ENABLE = no # Access to EEPROM settings, not needed +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite CONSOLE_ENABLE = no # Allows console output with a command SLEEP_LED_ENABLE = no # Breathes LED's when computer is asleep. Untested. NKRO_ENABLE = no # Default is 6KRO which is plenty MIDI_ENABLE = no # Untested feature KEY_LOCK_ENABLE = no # Allows locking any key. Not used -API_SYSEX_ENABLE = no # Allows OS to send signals. -KEY_LOCK_ENABLE = no # Allows locking any key. Not used # Disabling this makes it compile, i dont know why # VARIABLE_TRACE = no # Allows debugging variables diff --git a/users/bcat/bcat.c b/users/bcat/bcat.c index 397d565da0cc..f21d282e43f6 100644 --- a/users/bcat/bcat.c +++ b/users/bcat/bcat.c @@ -1,3 +1,19 @@ +/* Copyright 2021 Jonathan Rascher + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "bcat.h" #if defined(RGBLIGHT_ENABLE) diff --git a/users/bcat/bcat.h b/users/bcat/bcat.h index 1ea05e5fa8af..0dae774ec538 100644 --- a/users/bcat/bcat.h +++ b/users/bcat/bcat.h @@ -1,8 +1,24 @@ +/* Copyright 2021 Jonathan Rascher + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should 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" -enum user_keycodes { +enum user_keycode { MC_ALTT = SAFE_RANGE, KEYMAP_SAFE_RANGE, }; diff --git a/users/bcat/config.h b/users/bcat/config.h index 16188950e297..5bb93f3833e5 100644 --- a/users/bcat/config.h +++ b/users/bcat/config.h @@ -33,7 +33,7 @@ #if defined(RGB_MATRIX_ENABLE) /* Turn off per-key RGB when the host goes to sleep. */ -# define RGB_DISABLE_WHEN_USB_SUSPENDED true +# define RGB_DISABLE_WHEN_USB_SUSPENDED /* Keep per-key RGB increments consistent across keyboards. */ # undef RGB_MATRIX_HUE_STEP diff --git a/users/bcat/readme.md b/users/bcat/readme.md index 6d097d663df6..1922f95f4a18 100644 --- a/users/bcat/readme.md +++ b/users/bcat/readme.md @@ -15,7 +15,7 @@ Columnar-staggered split ergo layout, preferred for typing. Used on Crkbd. * [60% Tsangan HHKB](https://github.com/qmk/qmk_firmware/tree/master/layouts/community/60_tsangan_hhkb/bcat): Row-staggered layout, preferred for gaming. Used on ai03 Polaris, CannonKeys -AN-C, CannonKeys Instant60. +AN-C, CannonKeys Instant60, DZ60. ## Other keymaps diff --git a/users/bcat/rules.mk b/users/bcat/rules.mk index 3442a78ac23b..12c9a89bf4ae 100644 --- a/users/bcat/rules.mk +++ b/users/bcat/rules.mk @@ -1,7 +1,7 @@ SRC += bcat.c # Enable Bootmagic Lite to consistently reset to bootloader and clear EEPROM. -BOOTMAGIC_ENABLE = lite +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite # Enable media keys on all keyboards. EXTRAKEY_ENABLE = yes @@ -27,10 +27,8 @@ MIDI_ENABLE = no SLEEP_LED_ENABLE = no # Disable other unused options on all keyboards. -API_SYSEX_ENABLE = no AUTO_SHIFT_ENABLE = no COMBO_ENABLE = no -KEYBOARD_LOCK_ENABLE = no KEY_LOCK_ENABLE = no LEADER_ENABLE = no SWAP_HANDS_ENABLE = no diff --git a/users/billypython/billypython.c b/users/billypython/billypython.c index 7bdfe33a43c4..180b478d7a60 100644 --- a/users/billypython/billypython.c +++ b/users/billypython/billypython.c @@ -27,6 +27,6 @@ uint32_t layer_state_set_keymap(uint32_t state) { return state; } -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { return layer_state_set_keymap(state); } diff --git a/users/bocaj/.gitignore b/users/bocaj/.gitignore deleted file mode 100644 index c6df8c013951..000000000000 --- a/users/bocaj/.gitignore +++ /dev/null @@ -1 +0,0 @@ -secrets.c diff --git a/users/bocaj/.gitlab-ci.yml b/users/bocaj/.gitlab-ci.yml deleted file mode 100644 index 71e3d26eb43e..000000000000 --- a/users/bocaj/.gitlab-ci.yml +++ /dev/null @@ -1,24 +0,0 @@ -stages: - - test - -QMK Firmware: - stage: test - variables: - GIT_SUBMODULE_STRATEGY: recursive - tags: - - linux - image: qmkfm/base_container - before_script: - - apt-get update -qy - - apt-get install -y build-essential avr-libc binutils-arm-none-eabi binutils-avr dfu-programmer dfu-util gcc gcc-arm-none-eabi git libnewlib-arm-none-eabi gcc-avr python3 unzip wget zip - - avr-gcc --version - - uname -a - script: - - make planck/rev6:default planck/rev5:default - - make all:bocaj -j2 - artifacts: - name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG" - paths: - - ./*.hex - - ./*.bin - expire_in: 1 month diff --git a/users/bocaj/bocaj.c b/users/bocaj/bocaj.c deleted file mode 100644 index 83fe812311dc..000000000000 --- a/users/bocaj/bocaj.c +++ /dev/null @@ -1,210 +0,0 @@ -/* -Copyright 2020 Jacob Jerrell <jacob.jerrell@gmail.com> @JacobJerrell - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -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 "bocaj.h" - -#ifdef KEYBOARD_planck_ez -userspace_config_t userspace_config; -#endif - -bool mod_key_press_timer(uint16_t code, uint16_t mod_code, bool pressed) { - static uint16_t this_timer; - if (pressed) { - this_timer = timer_read(); - } else { - if (timer_elapsed(this_timer) < TAPPING_TERM) { - tap_code(code); - } else { - register_code(mod_code); - tap_code(code); - unregister_code(mod_code); - } - } - return false; -} - -bool mod_key_press(uint16_t code, uint16_t mod_code, bool pressed, uint16_t this_timer) { - if (pressed) { - this_timer = timer_read(); - } else { - if (timer_elapsed(this_timer) < TAPPING_TERM) { - tap_code(code); - } else { - register_code(mod_code); - tap_code(code); - unregister_code(mod_code); - } - } - return false; -} - -void bootmagic_lite(void) { - matrix_scan(); -#if defined(DEBOUNCING_DELAY) && DEBOUNCING_DELAY > 0 - wait_ms(DEBOUNCING_DELAY * 2); -#elif defined(DEBOUNCE) && DEBOUNCE > 0 - wait_ms(DEBOUNCE * 2); -#else - wait_ms(30); -#endif - matrix_scan(); - if (matrix_get_row(BOOTMAGIC_LITE_ROW) & (1 << BOOTMAGIC_LITE_COLUMN)) { - bootloader_jump(); - } -} - -__attribute__((weak)) void keyboard_pre_init_keymap(void) {} - -void keyboard_pre_init_user(void) { -#ifdef KEYBOARD_planck_ez - userspace_config.raw = eeconfig_read_user(); -#endif - keyboard_pre_init_keymap(); -} -// Add reconfigurable functions here, for keymap customization -// This allows for a global, userspace functions, and continued -// customization of the keymap. Use _keymap instead of _user -// functions in the keymaps -__attribute__((weak)) void matrix_init_keymap(void) {} - -// Call user matrix init, set default RGB colors and then -// call the keymap's init function -void matrix_init_user(void) { - matrix_init_keymap(); -} - -__attribute__((weak)) void keyboard_post_init_keymap(void) {} - -void keyboard_post_init_user(void) { -#if defined(RGB_MATRIX_ENABLE) - keyboard_post_init_rgb_matrix(); -#endif - keyboard_post_init_keymap(); -} - -__attribute__((weak)) void shutdown_keymap(void) {} - -void rgb_matrix_update_pwm_buffers(void); - -void shutdown_user(void) { -#ifdef RGB_MATRIX_ENABLE - rgb_matrix_set_color_all(0xFF, 0x00, 0x00); - rgb_matrix_update_pwm_buffers(); - -#endif // RGB_MATRIX_ENABLE - shutdown_keymap(); -} - -__attribute__((weak)) void suspend_power_down_keymap(void) {} - -void suspend_power_down_user(void) { suspend_power_down_keymap(); } - -__attribute__((weak)) void suspend_wakeup_init_keymap(void) {} - -void suspend_wakeup_init_user(void) { suspend_wakeup_init_keymap(); } - -__attribute__((weak)) void matrix_scan_secrets(void) {} -__attribute__((weak)) void matrix_scan_keymap(void) {} - -LEADER_EXTERNS(); - -// No global matrix scan code, so just run keymap's matrix -// scan function -void matrix_scan_user(void) { - static bool has_ran_yet; - if (!has_ran_yet) { - has_ran_yet = true; - startup_user(); - } - - LEADER_DICTIONARY() { - leading = false; - leader_end(); - - // Website Refresh / XCode "Run" - SEQ_ONE_KEY(KC_R) { - SEND_STRING(SS_LGUI("r")); - } - - SEQ_TWO_KEYS(KC_B, KC_D) { - SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION " Built at: " QMK_BUILDDATE); - } - - #ifndef NO_SECRETS - matrix_scan_secrets(); - #endif // !NO_SECRETS - } - -#if defined(RGB_MATRIX_ENABLE) - matrix_scan_rgb_matrix(); -#endif - - matrix_scan_keymap(); -} - -__attribute__((weak)) layer_state_t layer_state_set_keymap(layer_state_t state) { return state; } - -// on layer change, no matter where the change was initiated -// Then runs keymap's layer change check -layer_state_t layer_state_set_user(layer_state_t state) { - state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST); -#if defined(RGBLIGHT_ENABLE) - state = layer_state_set_rgb_light(state); -#endif // RGBLIGHT_ENABLE - return layer_state_set_keymap(state); -} - -__attribute__((weak)) layer_state_t default_layer_state_set_keymap(layer_state_t state) { return state; } - -// Runs state check and changes underglow color and animation -layer_state_t default_layer_state_set_user(layer_state_t state) { - state = default_layer_state_set_keymap(state); -#if 0 -# if defined(RGB_MATRIX_ENABLE) - state = default_layer_state_set_rgb(state); -# endif // RGB_MATRIX_ENABLE -#endif - return state; -} - -__attribute__((weak)) void led_set_keymap(uint8_t usb_led) {} - -// Any custom LED code goes here. -// So far, I only have keyboard specific code, -// So nothing goes here. -void led_set_user(uint8_t usb_led) { led_set_keymap(usb_led); } - -__attribute__((weak)) void eeconfig_init_keymap(void) {} - -void eeconfig_init_user(void) { -#ifdef KEYBOARD_planck_ez - userspace_config.raw = 0; -# if defined(RGB_MATRIX_ENABLE) - userspace_config.rgb_layer_change = true; -# endif - eeconfig_update_user(userspace_config.raw); -#endif - eeconfig_init_keymap(); - keyboard_init(); -} - -bool hasAllBitsInMask(uint8_t value, uint8_t mask) { - value &= 0xF; - mask &= 0xF; - - return (value & mask) == mask; -} diff --git a/users/bocaj/bocaj.h b/users/bocaj/bocaj.h deleted file mode 100644 index e69be74da574..000000000000 --- a/users/bocaj/bocaj.h +++ /dev/null @@ -1,73 +0,0 @@ -/* -Copyright 2017 Christopher Courtney <drashna@live.com> @drashna -Copyright 2020 Jacob Jerrell <jacob.jerrell@gmail.com> @JacobJerrell - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should 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 QMK_KEYBOARD_H - -#include "version.h" -#include "eeprom.h" -#include "process_records.h" -#include "wrappers.h" -#if defined(RGB_MATRIX_ENABLE) -# include "rgb_matrix_stuff.h" -#endif - -/* Define layer names */ -enum userspace_layers { - _WORKMAN = 0, - _QWERTY, - _WWORKMAN, - _WQWERTY, - _LOWER, - _RAISE, - _ADJUST, - _MOD, - LAYER_SAFE_RANGE, -}; - -#define MODS_SHIFT_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) -#define MODS_CTRL_MASK (MOD_BIT(KC_LCTL)|MOD_BIT(KC_RCTRL)) -#define MODS_ALT_MASK (MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT)) -#define MODS_GUI_MASK (MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)) - -bool mod_key_press_timer(uint16_t code, uint16_t mod_code, bool pressed); -bool mod_key_press(uint16_t code, uint16_t mod_code, bool pressed, uint16_t this_timer); -void matrix_init_keymap(void); -void shutdown_keymap(void); -void suspend_power_down_keymap(void); -void suspend_wakeup_init_keymap(void); -void matrix_scan_keymap(void); -layer_state_t layer_state_set_keymap(layer_state_t state); -layer_state_t default_layer_state_set_keymap(layer_state_t state); -void led_set_keymap(uint8_t usb_led); -void eeconfig_init_keymap(void); -bool hasAllBitsInMask(uint8_t value, uint8_t mask); - -// clang-format off -#ifdef KEYBOARD_planck_ez -typedef union { - uint32_t raw; - struct { - bool rgb_layer_change :1; - bool rgb_matrix_idle_anim :1; - }; -} userspace_config_t; -// clang-format on - -extern userspace_config_t userspace_config; -#endif diff --git a/users/bocaj/config.h b/users/bocaj/config.h deleted file mode 100644 index 2a44aabfc447..000000000000 --- a/users/bocaj/config.h +++ /dev/null @@ -1,113 +0,0 @@ -#pragma once - -// Use custom magic number so that when switching branches, EEPROM always gets reset -#define EECONFIG_MAGIC_NUMBER (uint16_t)0x1339 - -/* Set Polling rate to 1000Hz */ -#define USB_POLLING_INTERVAL_MS 1 - -#ifdef AUDIO_ENABLE - -# define AUDIO_CLICKY -# define STARTUP_SONG SONG(RICK_ROLL) -# define GOODBYE_SONG SONG(SONIC_RING) -# define DEFAULT_LAYER_SONGS \ - { SONG(QWERTY_SOUND), SONG(COLEMAK_SOUND), SONG(DVORAK_SOUND), SONG(OVERWATCH_THEME) } - -# define AUDIO_CLICKY_FREQ_RANDOMNESS 1.5f - -# define UNICODE_SONG_MAC SONG(RICK_ROLL) -# define UNICODE_SONG_LNX SONG(RICK_ROLL) -# define UNICODE_SONG_WIN SONG(RICK_ROLL) -# define UNICODE_SONG_BSD SONG(RICK_ROLL) -# define UNICODE_SONG_WINC SONG(RICK_ROLL) -#endif // !AUDIO_ENABLE - -#ifdef RGB_MATRIX_ENABLE -# define RGB_MATRIX_KEYPRESSES // reacts to keypresses (will slow down matrix scan by a lot) -// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (not recommened) -# 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 true // turn off effects when suspended -// # define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255 -// # define EECONFIG_RGB_MATRIX (uint32_t *)16 - -# if defined(__AVR__) && !defined(__AVR_AT90USB1286__) -# define DISABLE_RGB_MATRIX_ALPHAS_MODS -# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -# define DISABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT -# define DISABLE_RGB_MATRIX_BREATHING -# define DISABLE_RGB_MATRIX_BAND_SAT -# define DISABLE_RGB_MATRIX_BAND_VAL -# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL -# define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT -# define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL -# define DISABLE_RGB_MATRIX_CYCLE_ALL -# define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT -# define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN -# define DISABLE_RGB_MATRIX_CYCLE_OUT_IN -// # define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL -# define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON -# define DISABLE_RGB_MATRIX_DUAL_BEACON -# define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL -# define DISABLE_RGB_MATRIX_CYCLE_SPIRAL -# define DISABLE_RGB_MATRIX_RAINBOW_BEACON -# define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS -# define DISABLE_RGB_MATRIX_RAINDROPS -# define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS -// # define DISABLE_RGB_MATRIX_TYPING_HEATMAP -# define DISABLE_RGB_MATRIX_DIGITAL_RAIN -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -# define DISABLE_RGB_MATRIX_SPLASH -# define DISABLE_RGB_MATRIX_MULTISPLASH -# define DISABLE_RGB_MATRIX_SOLID_SPLASH -# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH -# endif // AVR -#endif // RGB_MATRIX_ENABLE - -#ifdef QMK_KEYS_PER_SCAN -# undef QMK_KEYS_PER_SCAN -# define QMK_KEYS_PER_SCAN 1 -#endif // !QMK_KEYS_PER_SCAN - -// this makes it possible to do rolling combos (zx) with keys that -// convert to other keys on hold (z becomes ctrl when you hold it, -// and when this option isn't enabled, z rapidly followed by x -// actually sends Ctrl-x. That's bad.) -#define IGNORE_MOD_TAP_INTERRUPT -#undef PERMISSIVE_HOLD -//#define TAPPING_FORCE_HOLD -//#define RETRO_TAPPING - -#define FORCE_NKRO - -#ifndef TAPPING_TOGGLE -# define TAPPING_TOGGLE 1 -#endif - -#ifdef TAPPING_TERM -# undef TAPPING_TERM -#endif // TAPPING_TERM -#if defined(KEYBOARD_ergodox_ez) -# define TAPPING_TERM 185 -#else -# define TAPPING_TERM 175 -#endif - -#define TAP_CODE_DELAY 5 - -/* Disable unused and unneeded features to reduce on firmware size */ -#ifdef LOCKING_SUPPORT_ENABLE -# undef LOCKING_SUPPORT_ENABLE -#endif -#ifdef LOCKING_RESYNC_ENABLE -# undef LOCKING_RESYNC_ENABLE -#endif diff --git a/users/bocaj/process_records.c b/users/bocaj/process_records.c deleted file mode 100644 index 9eb181ad441c..000000000000 --- a/users/bocaj/process_records.c +++ /dev/null @@ -1,111 +0,0 @@ -#include "bocaj.h" -#include <print.h> - -__attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; } - -__attribute__((weak)) bool process_record_secrets(uint16_t keycode, keyrecord_t *record) { return true; } - -// Defines actions tor my global custom keycodes. Defined in bocaj.h file -// Then runs the _keymap's record handler if not processed here -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - - if (process_record_keymap(keycode, record) && process_record_secrets(keycode, record) -#ifdef RGB_MATRIX_ENABLE - && process_record_user_rgb_matrix(keycode, record) -#endif - ) { - switch (keycode) { - case KC_WORKMAN: - if (!record->event.pressed) { - uint8_t mods = mod_config(get_mods()); - if (!mods) { - set_single_persistent_default_layer(_WORKMAN); - - } else if (mods & (MODS_GUI_MASK | MODS_CTRL_MASK)) { - set_single_persistent_default_layer(_WWORKMAN); - } - } - return false; - break; - case KC_QWERTY: - if (!record->event.pressed) { - uint8_t mods = mod_config(get_mods()); - if (!mods) { - set_single_persistent_default_layer(_QWERTY); - } else if (mods & (MODS_GUI_MASK | MODS_CTRL_MASK)) { - set_single_persistent_default_layer(_WQWERTY); - } - } - return false; - break; - - case MC_ARRW: - if (!record->event.pressed) { - clear_mods(); - send_string_with_delay_P(PSTR("->"), TAP_CODE_DELAY); - } - return false; - break; - - case KC_MAKE: // Compiles the firmware, and adds the flash command based on keyboard bootloader - if (!record->event.pressed) { - clear_mods(); - send_string_with_delay_P(PSTR("qmk compile "), TAP_CODE_DELAY); - send_string_with_delay_P(PSTR("-kb " QMK_KEYBOARD), TAP_CODE_DELAY); - send_string_with_delay_P(PSTR(SS_TAP(X_ENTER)), TAP_CODE_DELAY); - } - return false; - break; - - case VRSN: // Prints firmware version - if (!record->event.pressed) { - send_string_with_delay_P(PSTR(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE), TAP_CODE_DELAY); - } - break; -#if defined(RGB_MATRIX_ENABLE) - case KC_RGB_T: // This allows me to use underglow as layer indication, or as normal - if (!record->event.pressed) { - userspace_config.rgb_layer_change ^= 1; - dprintf("rgblight layer change [EEPROM]: %u\n", userspace_config.rgb_layer_change); - eeconfig_update_user(userspace_config.raw); - if (userspace_config.rgb_layer_change) { - rgblight_enable_noeeprom(); - layer_state_set(layer_state); // This is needed to immediately set the layer color (looks better) - } else { - rgblight_disable_noeeprom(); - } - } - return false; - break; - case RGB_TOG: - if (!record->event.pressed) { -# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES) - rgb_matrix_toggle(); -# endif - } - return false; - break; - case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // quantum_keycodes.h L400 for definitions - if (!record->event.pressed) { - bool is_eeprom_updated; -# if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS) - if (userspace_config.rgb_matrix_idle_anim) { - userspace_config.rgb_matrix_idle_anim = false; - dprintf("RGB Matrix Idle Animation [EEPROM]: %u\n", userspace_config.rgb_matrix_idle_anim); - is_eeprom_updated = true; - } -# endif - if (is_eeprom_updated) { - eeconfig_update_user(userspace_config.raw); - } - } - return false; - break; -#endif - } - } -#ifdef CONSOLE_ENABLE - uprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed); -#endif - return true; -} diff --git a/users/bocaj/process_records.h b/users/bocaj/process_records.h deleted file mode 100644 index c17e2ffdc1b8..000000000000 --- a/users/bocaj/process_records.h +++ /dev/null @@ -1,44 +0,0 @@ -#pragma once -#include "bocaj.h" - -#if defined(KEYMAP_SAFE_RANGE) -# define PLACEHOLDER_SAFE_RANGE KEYMAP_SAFE_RANGE -#else -# define PLACEHOLDER_SAFE_RANGE SAFE_RANGE -#endif - -enum userspace_custom_keycodes { - VRSN = PLACEHOLDER_SAFE_RANGE, // Prints QMK Firmware and board info - KC_WORKMAN, // Sets default layer to WORKMAN - KC_QWERTY, // Sets default layer to QWERTY - // KC_COLEMAK, // Sets default layer to COLEMAK - // KC_DVORAK, // Sets default layer to DVORAK - KC_MAKE, // Run keyboard's customized make command - KC_RGB_T, // Toggles RGB Layer Indication mode - RGB_IDL, // RGB Idling animations - MC_ARRW, // -> - UC_FLIP, // (ಠ痊ಠ)┻━┻ - UC_TABL, // ┬─┬ノ( º _ ºノ) - UC_SHRG, // ¯\_(ツ)_/¯ - UC_DISA, // ಠ_ಠ - NEW_SAFE_RANGE // use "NEWPLACEHOLDER for keymap specific codes -}; - -bool process_record_secrets(uint16_t keycode, keyrecord_t *record); -bool process_record_keymap(uint16_t keycode, keyrecord_t *record); - -#define QWERTY KC_QWERTY -#define WORKMAN KC_WORKMAN - -#define KC_ARRW MC_ARRW - -#define KC_RST RESET - -#define MO_MOD MO(_MOD) -#define ALT_APP ALT_T(KC_APP) -#define HYP_LBK ALL_T(KC_LBRACKET) -#define MEH_RBK MEH_T(KC_RBRACKET) -#define HYP_LPR ALL_T(KC_LPRN) -#define MEH_RPR MEH_T(KC_RPRN) - -#define MG_NKRO MAGIC_TOGGLE_NKRO diff --git a/users/bocaj/readme.md b/users/bocaj/readme.md deleted file mode 100644 index 1206359675bc..000000000000 --- a/users/bocaj/readme.md +++ /dev/null @@ -1,5 +0,0 @@ -# Overview - -This is my personal userspace file. Most of my code exists here, as it's heavily shared. - -The template was taken from [Drashna's userspace](https://github.com/qmk/qmk_firmware/tree/master/users/drashna). There isn't much if anything in this userspace that warrants documentation he hasn't already covered. diff --git a/users/bocaj/rgb_matrix_stuff.c b/users/bocaj/rgb_matrix_stuff.c deleted file mode 100644 index bc50349d23ee..000000000000 --- a/users/bocaj/rgb_matrix_stuff.c +++ /dev/null @@ -1,106 +0,0 @@ -#include "bocaj.h" - -#include "lib/lib8tion/lib8tion.h" -extern led_config_t g_led_config; - -static uint32_t hypno_timer; -#if defined(SPLIT_KEYBOARD) || defined(KEYBOARD_ergodox_ez) || defined(KEYBOARD_crkbd) -# define RGB_MATRIX_REST_MODE RGB_MATRIX_CYCLE_OUT_IN_DUAL -#else -# define RGB_MATRIX_REST_MODE RGB_MATRIX_CYCLE_OUT_IN -#endif - -void rgb_matrix_set_color_row(uint8_t row, uint8_t red, uint8_t green, uint8_t blue) { -#ifdef KEYBOARD_planck_ez - if (row > 2) { - row = 0; - } - uint8_t row_multiplier = row * 12; - - rgb_matrix_set_color(1 + row_multiplier, red, green, blue); - rgb_matrix_set_color(2 + row_multiplier, red, green, blue); - rgb_matrix_set_color(3 + row_multiplier, red, green, blue); - rgb_matrix_set_color(4 + row_multiplier, red, green, blue); - rgb_matrix_set_color(5 + row_multiplier, red, green, blue); - rgb_matrix_set_color(6 + row_multiplier, red, green, blue); - rgb_matrix_set_color(7 + row_multiplier, red, green, blue); - rgb_matrix_set_color(8 + row_multiplier, red, green, blue); - rgb_matrix_set_color(9 + row_multiplier, red, green, blue); - rgb_matrix_set_color(10 + row_multiplier, red, green, blue); -#endif -} - -void rgb_matrix_layer_helper(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode, uint8_t speed, uint8_t led_type) { - HSV hsv = {hue, sat, val}; - if (hsv.v > rgb_matrix_get_val()) { - hsv.v = rgb_matrix_get_val(); - } - - switch (mode) { - case 1: // breathing - { - uint16_t time = scale16by8(g_rgb_timer, speed / 8); - hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v); - RGB rgb = hsv_to_rgb(hsv); - for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) { - if (HAS_FLAGS(g_led_config.flags[i], led_type)) { - rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); - } - } - break; - } - default: // Solid Color - { - RGB rgb = hsv_to_rgb(hsv); - for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) { - if (HAS_FLAGS(g_led_config.flags[i], led_type)) { - rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); - } - } - break; - } - } -} - -__attribute__((weak)) void rgb_matrix_indicator_keymap(void) {} - -void matrix_scan_rgb_matrix(void) { -#if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS) - if (userspace_config.rgb_matrix_idle_anim && rgb_matrix_get_mode() == RGB_MATRIX_TYPING_HEATMAP && timer_elapsed32(hypno_timer) > 15000) { - rgb_matrix_mode_noeeprom(RGB_MATRIX_REST_MODE); - } -#endif - rgb_matrix_indicator_keymap(); -} - -void keyboard_post_init_rgb_matrix(void) { -#if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS) - if (userspace_config.rgb_matrix_idle_anim) { - rgb_matrix_mode_noeeprom(RGB_MATRIX_REST_MODE); - } -#endif -} - -bool process_record_user_rgb_matrix(uint16_t keycode, keyrecord_t *record) { -#if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS) - hypno_timer = timer_read32(); - if (userspace_config.rgb_matrix_idle_anim && rgb_matrix_get_mode() == RGB_MATRIX_REST_MODE) { - rgb_matrix_mode_noeeprom(RGB_MATRIX_TYPING_HEATMAP); - } -#endif - switch (keycode) { - case RGB_IDL: -#if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS) - if (record->event.pressed) { - userspace_config.rgb_matrix_idle_anim ^= 1; - dprintf("RGB Matrix Idle Animation [EEPROM]: %u\n", userspace_config.rgb_matrix_idle_anim); - eeconfig_update_user(userspace_config.raw); - if (userspace_config.rgb_matrix_idle_anim) { - rgb_matrix_mode_noeeprom(RGB_MATRIX_TYPING_HEATMAP); - } - } -#endif - break; - } - return true; -} diff --git a/users/bocaj/rgb_matrix_stuff.h b/users/bocaj/rgb_matrix_stuff.h deleted file mode 100644 index e48add218620..000000000000 --- a/users/bocaj/rgb_matrix_stuff.h +++ /dev/null @@ -1,10 +0,0 @@ -#pragma once -#include "quantum.h" - -bool process_record_user_rgb_matrix(uint16_t keycode, keyrecord_t *record); -void keyboard_post_init_rgb_matrix(void); -void matrix_scan_rgb_matrix(void); - -void rgb_matrix_set_color_all(uint8_t red, uint8_t green, uint8_t blue); -void rgb_matrix_layer_helper(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode, uint8_t speed, uint8_t led_type); -void rgb_matrix_set_color_row(uint8_t row, uint8_t red, uint8_t green, uint8_t blue); diff --git a/users/bocaj/rules.mk b/users/bocaj/rules.mk deleted file mode 100644 index a0e7e93bc1fa..000000000000 --- a/users/bocaj/rules.mk +++ /dev/null @@ -1,26 +0,0 @@ -SRC += bocaj.c \ - process_records.c - -LEADER_ENABLE = yes -MOUSEKEY_ENABLE = yes -EXTRAKEY_ENABLE = yes - -ifneq ($(PLATFORM),CHIBIOS) - LTO_ENABLE = yes -endif -SPACE_CADET_ENABLE = no -GRAVE_ESC_ENABLE = no - -ifneq ($(strip $(NO_SECRETS)), yes) - ifneq ("$(wildcard $(USER_PATH)/secrets.c)","") - SRC += secrets.c - endif - ifeq ($(strip $(NO_SECRETS)), lite) - OPT_DEFS += -DNO_SECRETS - endif -endif - -RGB_MATRIX_ENABLE ?= no -ifneq ($(strip $(RGB_MATRIX_ENABLE)), no) - SRC += rgb_matrix_stuff.c -endif diff --git a/users/bocaj/wrappers.h b/users/bocaj/wrappers.h deleted file mode 100644 index 0f18d346a39a..000000000000 --- a/users/bocaj/wrappers.h +++ /dev/null @@ -1,193 +0,0 @@ -#pragma once -#include "bocaj.h" - -/* -Since our quirky block definitions are basically a list of comma separated -arguments, we need a wrapper in order for these definitions to be -expanded before being used as arguments to the LAYOUT_xxx macro. -*/ -#if (!defined(LAYOUT) && defined(KEYMAP)) -# define LAYOUT KEYMAP -#endif - -// clang-format off -#define WRAPPER_ergodox_pretty(...) LAYOUT_ergodox_pretty(__VA_ARGS__) -#define WRAPPER_ortho_4x12(...) LAYOUT_ortho_4x12(__VA_ARGS__) - -/* ---------- LEFT HAND ----------- ---------- RIGHT HAND ---------- */ -#define WRAPPER_ergodox_bocaj( \ - 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 ) \ - WRAPPER_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, SFT_T(L22), GUI_T(L23), ALT_T(L24), L25, R21, ALT_T(R22), GUI_T(R23), SFT_T(R24), R25, R26, \ - L30, CTL_T(L31), L32, L33, L34, L35, ALL_T(L36), MEH_T(R30), R31, R32, R33, R34, CTL_T(R35), R36, \ - L40, L41, L42, L43, L44, R42, R43, R44, R45, R46, \ - L55,L56, /* <- LHS/RHS -> */ R50,R51, \ - L54, /* <- LHS/RHS -> */ R52, \ - LT(_LOWER, L53),L52,L51, /* <- LHS/RHS -> */ R55,R54,LT(_RAISE, R53) \ -) - -#define WRAPPER_ergodox_bocaj_WIN( \ - 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 ) \ - WRAPPER_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, SFT_T(L22), CTL_T(L23), ALT_T(L24), L25, R21, ALT_T(R22), CTL_T(R23), SFT_T(R24), R25, R26, \ - L30, GUI_T(L31), L32, L33, L34, L35, ALL_T(L36), MEH_T(R30), R31, R32, R33, R34, GUI_T(R35), R36, \ - L40, L41, L42, L43, L44, R42, R43, R44, R45, R46, \ - L55,L56, /* <- LHS/RHS -> */ R50,R51, \ - L54, /* <- LHS/RHS -> */ R52, \ - LT(_LOWER, L53),L52,L51, /* <- LHS/RHS -> */ R55,R54,LT(_RAISE, R53) \ -) - -/* - Planck EZ Wrappers -*/ -#define WRAPPER_planck_bocaj( \ - K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, \ - 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 \ -)\ - WRAPPER_ortho_4x12( \ - K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, \ - K11, K12, SFT_T(K13), GUI_T(K14), ALT_T(K15), K16, K17, ALT_T(K18), GUI_T(K19), SFT_T(K1A), K1B, K1C, \ - K21, CTL_T(K22), K23, K24, K25, K26, K27, K28, K29, K2A, CTL_T(K2B), K2C, \ - K31, K32, K33, K34, LT(_LOWER, K35), K36, K37, LT(_RAISE, K38), K39, K3A, K3B, K3C ) - -#define WRAPPER_planck_bocaj_WIN( \ - K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, \ - 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 \ -)\ - WRAPPER_ortho_4x12( \ - K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, \ - K11, K12, SFT_T(K13), CTL_T(K14), ALT_T(K15), K16, K17, ALT_T(K18), CTL_T(K19), SFT_T(K1A), K1B, K1C, \ - K21, GUI_T(K22), K23, K24, K25, K26, K27, K28, K29, K2A, GUI_T(K2B), K2C, \ - K31, K32, K33, K34, LT(_LOWER, K35), K36, K37, LT(_RAISE, K38), K39, K3A, K3B, K3C ) - -#define WRAPPER_planck_bocaj_base( \ - K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ - K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \ - K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \ -) \ - WRAPPER_planck_bocaj( \ - KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_MINS, \ - KC_TAB, K11, K12, K13, K14, ALL_T(K15), MEH_T(K16), K17, K18, K19, K1A, KC_QUOT, \ - KC_LSFT, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, _______, \ - _______, KC_LEAD, KC_UP, KC_LEFT, KC_BSPC, KC_SPC, KC_SPC, KC_ENTER, KC_RIGHT, KC_DOWN, QWERTY, WORKMAN \ - ) - -#define WRAPPER_planck_bocaj_base_WIN( \ - K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ - K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \ - K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \ -) \ - WRAPPER_planck_bocaj_WIN( \ - KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_MINS, \ - KC_TAB, K11, K12, K13, K14, ALL_T(K15), MEH_T(K16), K17, K18, K19, K1A, KC_QUOT, \ - KC_LSFT, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, _______, \ - _______, KC_LEAD, KC_UP, KC_LEFT, KC_BSPC, KC_SPC, KC_SPC, KC_ENTER, KC_RIGHT, KC_DOWN, QWERTY, WORKMAN \ - ) - -/* -Blocks for each of the four major keyboard layouts -Organized so we can quickly adapt and modify all of them -at once, rather than for each keyboard, one at a time. -And this allows for much cleaner blocks in the keymaps. -For instance Tap/Hold for Control on all of the layouts - -NOTE: These are all the same length. If you do a search/replace - then you need to add/remove underscores to keep the - lengths consistent. -*/ - -#define _________________QWERTY_L1_________________ KC_Q, KC_W, KC_E, KC_R, KC_T -#define _________________QWERTY_L2_________________ KC_A, KC_S, KC_D, KC_F, KC_G -#define _________________QWERTY_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B - -#define _________________QWERTY_R1_________________ KC_Y, KC_U, KC_I, KC_O, KC_P -#define _________________QWERTY_R2_________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN -#define _________________QWERTY_R3_________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLASH - -#define _________________COLEMAK_L1________________ KC_Q, KC_W, KC_F, KC_P, KC_G -#define _________________COLEMAK_L2________________ KC_A, KC_R, KC_S, KC_T, KC_D -#define _________________COLEMAK_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_B - -#define _________________COLEMAK_R1________________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN -#define _________________COLEMAK_R2________________ KC_H, KC_N, KC_E, KC_I, KC_O -#define _________________COLEMAK_R3________________ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLASH - -#define _________________DVORAK_L1_________________ KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y -#define _________________DVORAK_L2_________________ KC_A, KC_O, KC_E, KC_U, KC_I -#define _________________DVORAK_L3_________________ KC_SCLN, KC_Q, KC_J, KC_K, KC_X - -#define _________________DVORAK_R1_________________ KC_F, KC_G, KC_C, KC_R, KC_L -#define _________________DVORAK_R2_________________ KC_D, KC_H, KC_T, KC_N, KC_S -#define _________________DVORAK_R3_________________ KC_B, KC_M, KC_W, KC_V, KC_Z - -#define _________________WORKMAN_L1________________ KC_Q, KC_D, KC_R, KC_W, KC_B -#define _________________WORKMAN_L2________________ KC_A, KC_S, KC_H, KC_T, KC_G -#define _________________WORKMAN_L3________________ KC_Z, KC_X, KC_M, KC_C, KC_V - -#define _________________WORKMAN_R1________________ KC_J, KC_F, KC_U, KC_P, KC_SCLN -#define _________________WORKMAN_R2________________ KC_Y, KC_N, KC_E, KC_O, KC_I -#define _________________WORKMAN_R3________________ KC_K, KC_L, KC_COMM, KC_DOT, KC_SLASH - -#define ________________NUMBER_LEFT________________ KC_1, KC_2, KC_3, KC_4, KC_5 -#define ________________NUMBER_RIGHT_______________ KC_6, KC_7, KC_8, KC_9, KC_0 -#define _________________FUNC_LEFT_________________ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5 -#define _________________FUNC_RIGHT________________ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10 - -#define ___________________BLANK___________________ _______, _______, _______, _______, _______ -#define _________________UNDEFINED_________________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX - -#define ___________________LOWER_L1_EXT____________________ KC_GRV, _______, _______, KC_UP, _______, KC_ARRW -#define ___________________LOWER_L2_EXT____________________ KC_DEL, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_LPRN -#define ___________________LOWER_L3_EXT____________________ _______, _______, _______, _______, _______, KC_LBRC - -#define ___________________LOWER_R1_EXT____________________ KC_MINS, KC_7, KC_8, KC_9, KC_PLUS, KC_EQUAL -#define ___________________LOWER_R2_EXT____________________ KC_RPRN, KC_4, KC_5, KC_6, KC_ASTR, KC_BSLS -#define ___________________LOWER_R3_EXT____________________ KC_RBRC, KC_1, KC_2, KC_3, KC_SLSH, _______ - -// #define _________________LOWER_L1__________________ ________________NUMBER_LEFT________________ -// #define _________________LOWER_L2__________________ _______, _______, _______, _______, KC_LPRN -// #define _________________LOWER_L3__________________ _______, _______, _______, KC_ARRW, KC_LBRC - -// #define _________________LOWER_R1__________________ ________________NUMBER_RIGHT_______________ -// #define _________________LOWER_R2__________________ KC_RPRN, _______, _______, _______, _______ -// #define _________________LOWER_R3__________________ KC_RBRC, _______, _______, _______, _______ - -#define _________________RAISE_L1__________________ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC -#define _________________RAISE_L2__________________ _________________FUNC_LEFT_________________ -#define _________________RAISE_L3__________________ ___________________BLANK___________________ - -#define _________________RAISE_R1__________________ KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN -#define _________________RAISE_R2__________________ _________________FUNC_RIGHT________________ -#define _________________RAISE_R3__________________ ___________________BLANK___________________ - -#define _________________ADJUST_L1_________________ RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG -#define _________________ADJUST_L2_________________ KC__MUTE, KC__VOLDOWN, KC__VOLUP, _______, KC_MNXT -#define _________________ADJUST_L3_________________ RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, KC_RGB_T - -#define _________________ADJUST_R1_________________ ___________________BLANK___________________ -#define _________________ADJUST_R2_________________ CG_SWAP, WORKMAN, QWERTY, _______, _______ -#define _________________ADJUST_R3_________________ MU_TOG , CK_TOGG, AU_ON, AU_OFF, CG_NORM - -// clang-format on diff --git a/users/curry/config.h b/users/curry/config.h index b982dab038f5..31baea62570d 100644 --- a/users/curry/config.h +++ b/users/curry/config.h @@ -17,44 +17,44 @@ #if defined(RGB_MATRIX_ENABLE) # define RGB_MATRIX_KEYPRESSES # define RGB_MATRIX_FRAMEBUFFER_EFFECTS -# define RGB_DISABLE_WHEN_USB_SUSPENDED true - -# define DISABLE_RGB_MATRIX_ALPHAS_MODS -# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -# define DISABLE_RGB_MATRIX_BREATHING -# define DISABLE_RGB_MATRIX_BAND_SAT -# define DISABLE_RGB_MATRIX_BAND_VAL -# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL -# define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT -# define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL -# define DISABLE_RGB_MATRIX_CYCLE_ALL -# define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT -# define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN -# define DISABLE_RGB_MATRIX_CYCLE_OUT_IN -// # define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL -# define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON -# define DISABLE_RGB_MATRIX_DUAL_BEACON -# define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL -# define DISABLE_RGB_MATRIX_CYCLE_SPIRAL -# define DISABLE_RGB_MATRIX_RAINBOW_BEACON -# define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS -# define DISABLE_RGB_MATRIX_RAINDROPS -# define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS -// # define DISABLE_RGB_MATRIX_TYPING_HEATMAP -# define DISABLE_RGB_MATRIX_DIGITAL_RAIN -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -# define DISABLE_RGB_MATRIX_SPLASH -# define DISABLE_RGB_MATRIX_MULTISPLASH -# define DISABLE_RGB_MATRIX_SOLID_SPLASH -# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH +# define RGB_DISABLE_WHEN_USB_SUSPENDED + +# undef ENABLE_RGB_MATRIX_ALPHAS_MODS +# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# undef ENABLE_RGB_MATRIX_BREATHING +# undef ENABLE_RGB_MATRIX_BAND_SAT +# undef ENABLE_RGB_MATRIX_BAND_VAL +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# undef ENABLE_RGB_MATRIX_CYCLE_ALL +# undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN +// # undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# undef ENABLE_RGB_MATRIX_DUAL_BEACON +# undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# undef ENABLE_RGB_MATRIX_RAINBOW_BEACON +# undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# undef ENABLE_RGB_MATRIX_RAINDROPS +# undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +// # undef ENABLE_RGB_MATRIX_TYPING_HEATMAP +# undef ENABLE_RGB_MATRIX_DIGITAL_RAIN +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# undef ENABLE_RGB_MATRIX_SPLASH +# undef ENABLE_RGB_MATRIX_MULTISPLASH +# undef ENABLE_RGB_MATRIX_SOLID_SPLASH +# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH #endif // RGB_MATRIX_ENABLE #if !defined(ONESHOT_TAP_TOGGLE) diff --git a/users/curry/oled.c b/users/curry/oled.c index fc87a46e50f4..27f6072ff173 100644 --- a/users/curry/oled.c +++ b/users/curry/oled.c @@ -137,7 +137,7 @@ void render_status_secondary(void) { render_keylogger_status(); } -void oled_task_user(void) { +bool oled_task_user(void) { if (timer_elapsed32(oled_timer) > 30000) { oled_off(); return; @@ -152,6 +152,7 @@ void oled_task_user(void) { } else { render_status_secondary(); } + return false; } bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { diff --git a/users/curry/rules.mk b/users/curry/rules.mk index 87d3b38eadf8..724f97f5ebce 100644 --- a/users/curry/rules.mk +++ b/users/curry/rules.mk @@ -24,7 +24,7 @@ ifeq ($(strip $(TAP_DANCE_ENABLE)), yes) SRC += tap_dances.c endif -ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes) +ifeq ($(strip $(OLED_ENABLE)), yes) SRC += oled.c endif diff --git a/users/cwebster2/keycodes.c b/users/cwebster2/keycodes.c index 39b4341bd02a..f7eb6ad8df9a 100644 --- a/users/cwebster2/keycodes.c +++ b/users/cwebster2/keycodes.c @@ -27,7 +27,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { register_code(KC_LCTL); } else { unregister_code(KC_LCTL); - if (timer_elapsed(my_colon_timer) < TAPPING_TERM) { + if (timer_elapsed(my_colon_timer) < TAPPING_TERM - 50) { SEND_STRING(":"); } } @@ -38,14 +38,15 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { switch (keycode) { + case LSFT_T(KC_T): + case LSFT_T(KC_N): + return TAPPING_TERM - 50; case LGUI_T(KC_A): - case LALT_T(KC_S): - case LCTL_T(KC_D): - case LSFT_T(KC_F): - case RSFT_T(KC_J): - case RCTL_T(KC_K): - case RALT_T(KC_L): - case RGUI_T(KC_SCLN): + case LALT_T(KC_R): + case LCTL_T(KC_S): + case LCTL_T(KC_E): + case LALT_T(KC_I): + case LGUI_T(KC_O): return TAPPING_TERM + 150; default: return TAPPING_TERM; diff --git a/users/cwebster2/my_miryoku.h b/users/cwebster2/my_miryoku.h index 943855ad4323..2c8ab6fe2bf1 100644 --- a/users/cwebster2/my_miryoku.h +++ b/users/cwebster2/my_miryoku.h @@ -15,18 +15,18 @@ */ #pragma once -#define _______QWERTY_L1______ KC_Q, KC_W, KC_E, KC_R, KC_T -#define _______QWERTY_L2______ LGUI_T(KC_A), LALT_T(KC_S), LCTL_T(KC_D), LSFT_T(KC_F), KC_G -#define _______QWERTY_L3______ KC_Z, KC_X, KC_C, KC_V, KC_B +#define _______QWERTY_L1______ KC_T, KC_Q, KC_W, KC_E, KC_R +#define _______QWERTY_L2______ KC_G, KC_A, KC_S, KC_D, KC_F +#define _______QWERTY_L3______ KC_B, KC_Z, KC_X, KC_C, KC_V #define _______QWERTY_R1______ KC_Y, KC_U, KC_I, KC_O, KC_P -#define _______QWERTY_R2______ KC_H, RSFT_T(KC_J), RCTL_T(KC_K), RALT_T(KC_L), RGUI_T(KC_SCLN) +#define _______QWERTY_R2______ KC_H, KC_J, KC_K, KC_L, KC_SCLN #define _______QWERTY_R3______ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH #define _______COLEMAK_L1_____ KC_Q, KC_W, KC_F, KC_P, KC_B #define _______COLEMAK_L2_____ LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_G #define _______COLEMAK_L3_____ KC_Z, KC_X, KC_C, KC_D, KC_V #define _______COLEMAK_R1_____ KC_J, KC_L, KC_U, KC_Y, KC_QUOT -#define _______COLEMAK_R2_____ KC_M, RSFT_T(KC_N), RCTL_T(KC_E), RALT_T(KC_I), RGUI_T(KC_O) +#define _______COLEMAK_R2_____ KC_M, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O) #define _______COLEMAK_R3_____ KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH #define _______THUMBS_L_______ LT(_MOUSE,KC_ESC), LT(_NAV,KC_SPC), LT(_MEDIA, KC_TAB) @@ -53,16 +53,16 @@ #define _______NUM______L1____ KC_RBRC, KC_7, KC_8, KC_9, KC_LBRC #define _______NUM______L2____ KC_SCLN, KC_4, KC_5, KC_6, KC_EQL -#define _______NUM______L3____ KC_GRV, KC_1, KC_2, KC_3, KC_SLSH +#define _______NUM______L3____ KC_GRV, KC_1, KC_2, KC_3, KC_BSLS #define _______NUM_______T____ KC_DOT, KC_0, KC_MINS -#define _______FN_______L1____ KC_F12, KC_F7, KC_F8, KC_F9, KC_SYSREQ -#define _______FN_______L2____ KC_F11, KC_F4, KC_F5, KC_F6, KC_TRNS -#define _______FN_______L3____ KC_F10, KC_F1, KC_F2, KC_F3, KC_BSLS -#define _______FN________T____ KC_MENU, KC_SLSH, KC_TRNS +#define _______FN_______L1____ KC_F12, KC_F7, KC_F8, KC_F9, KC_SYSREQ +#define _______FN_______L2____ KC_F11, KC_F4, KC_F5, KC_F6, KC_TRNS +#define _______FN_______L3____ KC_F10, KC_F1, KC_F2, KC_F3, KC_PAUSE +#define _______FN________T____ KC_MENU, KC_SPC, KC_TAB -#define _______NAV______R1____ KC_UNDO, KC_CUT, KC_COPY, KC_PSTE, KC_AGIN -#define _______NAV______R2____ KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_CAPS +#define _______NAV______R1____ KC_UNDO, KC_CUT, KC_COPY, KC_PSTE, KC_AGIN +#define _______NAV______R2____ KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_CAPS #define _______NAV______R3____ KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_INS #define _______NAV_______T____ KC_ENT, KC_BSPC, KC_DEL diff --git a/users/cwebster2/rules.mk b/users/cwebster2/rules.mk index f39d4ebc96c9..3aa4d68f3531 100644 --- a/users/cwebster2/rules.mk +++ b/users/cwebster2/rules.mk @@ -2,7 +2,7 @@ AUTO_SHIFT_ENABLE = no # Enable autoshift MOUSEKEY_ENABLE = yes EXTRAKEY_ENABLE = yes CONSOLE_ENABLE = no -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite GRAVE_ESC_ENABLE = no CONSOLE_ENABLE = no SPACE_CADET_ENABLE = no diff --git a/users/d4mation/rules.mk b/users/d4mation/rules.mk index 3d65a2242b90..f677721b42d0 100644 --- a/users/d4mation/rules.mk +++ b/users/d4mation/rules.mk @@ -2,7 +2,7 @@ SRC += d4mation.c \ tap-hold.c \ macros.c -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite LTO_ENABLE = yes MOUSEKEY_ENABLE = no diff --git a/users/danielo515/process_records.h b/users/danielo515/process_records.h index 49060768651e..caa85e629268 100644 --- a/users/danielo515/process_records.h +++ b/users/danielo515/process_records.h @@ -78,8 +78,8 @@ enum layers { #define KC_E_GT S(KC_NUBS) #define KC_E_TILD ES_TILD #define KC_E_MINS ES_MINS -#define KC_E_OVRR ES_OVRR -#define KC_E_APOS ES_APOS +#define KC_E_OVRR ES_MORD +#define KC_E_APOS ES_QUOT #define KC_E_IEXL ES_IEXL //========== Short hand for complex key combinations #define WIN_LEFT_HALF LALT(LGUI(KC_LEFT)) diff --git a/users/dennytom/chording_engine/chord.py b/users/dennytom/chording_engine/chord.py index 707f36b82a8a..5e3b6d2834f2 100644 --- a/users/dennytom/chording_engine/chord.py +++ b/users/dennytom/chording_engine/chord.py @@ -1,5 +1,4 @@ from functools import reduce -import re strings = [] number_of_strings = -1 @@ -463,4 +462,4 @@ def secret_chord(PSEUDOLAYER, ACTION, INPUT_STRING, data, output_buffer, index, hash = hash[3:] if hash != "": - return add_key(PSEUDOLAYER, hash, ACTION, output_buffer, index, number_of_strings, strings) \ No newline at end of file + return add_key(PSEUDOLAYER, hash, ACTION, output_buffer, index, number_of_strings, strings) diff --git a/users/doogle999/rules.mk b/users/doogle999/rules.mk index 12698a27e587..aab01b243316 100644 --- a/users/doogle999/rules.mk +++ b/users/doogle999/rules.mk @@ -2,7 +2,7 @@ SRC += doogle999.c CFLAGS += -fstrict-aliasing -ftree-vrp -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) diff --git a/users/draevin/rules.mk b/users/draevin/rules.mk index 7d6740493056..1fc377e2318e 100644 --- a/users/draevin/rules.mk +++ b/users/draevin/rules.mk @@ -7,6 +7,6 @@ TAP_DANCE_ENABLE = yes AUDIO_ENABLE = no BACKLIGHT_ENABLE = no -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite CONSOLE_ENABLE = no SLEEP_LED_ENABLE = no \ No newline at end of file diff --git a/users/drashna/config.h b/users/drashna/config.h index 5f7c32ff35c9..8b5d5ba937eb 100644 --- a/users/drashna/config.h +++ b/users/drashna/config.h @@ -17,100 +17,180 @@ #pragma once // Use custom magic number so that when switching branches, EEPROM always gets reset -#define EECONFIG_MAGIC_NUMBER (uint16_t)0x1339 +#define EECONFIG_MAGIC_NUMBER (uint16_t)0x1339 /* Set Polling rate to 1000Hz */ #define USB_POLLING_INTERVAL_MS 1 #if defined(SPLIT_KEYBOARD) +// # define SPLIT_TRANSPORT_MIRROR +# define SPLIT_LAYER_STATE_ENABLE +# define SPLIT_LED_STATE_ENABLE # define SPLIT_MODS_ENABLE -# define SPLIT_TRANSPORT_MIRROR -# define SERIAL_USE_MULTI_TRANSACTION -// # define SPLIT_NUM_TRANSACTIONS_KB 2 +# ifdef WPM_ENABLE +# define SPLIT_WPM_ENABLE +# endif +# ifdef OLED_ENABLE +# define SPLIT_OLED_ENABLE +# endif +# if defined(__AVR__) && !defined(SELECT_SOFT_SERIAL_SPEED) +# define SELECT_SOFT_SERIAL_SPEED 1 +# endif +# ifdef CUSTOM_SPLIT_TRANSPORT_SYNC +# define SPLIT_TRANSACTION_IDS_USER RPC_ID_USER_STATE_SYNC, RPC_ID_USER_KEYMAP_SYNC, RPC_ID_USER_CONFIG_SYNC +# endif #endif -#ifdef AUDIO_ENABLE +#if defined(WPM_ENABLE) +// # define WPM_LAUNCH_CONTROL +// # define WPM_ALLOW_COUNT_REGRESSOIN +// # define WPM_UNFILTERED +# define WPM_SAMPLE_SECONDS 6 +# define WPM_SAMPLE_PERIODS 50 +# define WPM_ESTIMATED_WORD_SIZE 6 +#endif +#ifdef AUDIO_ENABLE # define AUDIO_CLICKY -# define STARTUP_SONG SONG(RICK_ROLL) -# define GOODBYE_SONG SONG(SONIC_RING) -# define DEFAULT_LAYER_SONGS \ - { SONG(QWERTY_SOUND), SONG(COLEMAK_SOUND), SONG(DVORAK_SOUND), SONG(OVERWATCH_THEME) } - # define AUDIO_CLICKY_FREQ_RANDOMNESS 1.5f -# define UNICODE_SONG_MAC SONG(RICK_ROLL) -# define UNICODE_SONG_LNX SONG(RICK_ROLL) -# define UNICODE_SONG_WIN SONG(RICK_ROLL) -# define UNICODE_SONG_BSD SONG(RICK_ROLL) -# define UNICODE_SONG_WINC SONG(RICK_ROLL) +# ifdef USER_SONG_LIST +# define STARTUP_SONG SONG(RICK_ROLL) +# define GOODBYE_SONG SONG(SONIC_RING) +# define DEFAULT_LAYER_SONGS \ + { SONG(QWERTY_SOUND), SONG(COLEMAK_SOUND), SONG(DVORAK_SOUND), SONG(OVERWATCH_THEME) } +# define UNICODE_SONG_MAC SONG(MARIO_THEME) +# define UNICODE_SONG_LNX SONG(MARIO_POWERUP) +# define UNICODE_SONG_WIN SONG(MARIO_ONEUP) +# define UNICODE_SONG_BSD SONG(RICK_ROLL) +# define UNICODE_SONG_WINC SONG(RICK_ROLL) +# else +# define STARTUP_SONG SONG(STARTUP_SOUND) +# define GOODBYE_SONG SONG(GOODBYE_SOUND) +# define DEFAULT_LAYER_SONGS \ + { SONG(QWERTY_SOUND), SONG(COLEMAK_SOUND), SONG(DVORAK_SOUND), SONG(WORKMAN_SOUND) } +# define UNICODE_SONG_MAC SONG(QWERTY_SOUND) +# define UNICODE_SONG_LNX SONG(COLEMAK_SOUND) +# define UNICODE_SONG_WIN SONG(DVORAK_SOUND) +# define UNICODE_SONG_BSD SONG(WORKMAN_SOUND) +# define UNICODE_SONG_WINC SONG(PLOVER_GOODBYE_SOUND) +# endif #endif // !AUDIO_ENABLE +#define UNICODE_SELECTED_MODES UC_WIN, UC_MAC + #ifdef RGBLIGHT_ENABLE # define RGBLIGHT_SLEEP -# if defined(__AVR__) && !defined(__AVR_AT90USB1286__) -# undef RGBLIGHT_ANIMATIONS -# define RGBLIGHT_EFFECT_BREATHING -# define RGBLIGHT_EFFECT_SNAKE -# define RGBLIGHT_EFFECT_KNIGHT -# else -# define RGBLIGHT_ANIMATIONS -# endif -# define RGBLIGHT_EFFECT_TWINKLE_LIFE 250 -# define RGBLIGHT_EFFECT_TWINKLE_PROBABILITY 1/24 +# define RGBLIGHT_EFFECT_TWINKLE_LIFE 250 +# define RGBLIGHT_EFFECT_TWINKLE_PROBABILITY 1 / 24 #endif // RGBLIGHT_ENABLE #ifdef RGB_MATRIX_ENABLE # define RGB_MATRIX_KEYPRESSES // reacts to keypresses (will slow down matrix scan by a lot) // # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (not recommened) # 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 true // turn off effects when suspended -// # define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255 -// # define EECONFIG_RGB_MATRIX (uint32_t *)16 - -# if defined(__AVR__) && !defined(__AVR_AT90USB1286__) && !defined(KEYBOARD_launchpad) -# define DISABLE_RGB_MATRIX_ALPHAS_MODS -# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN -# define DISABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT -# define DISABLE_RGB_MATRIX_BREATHING -# define DISABLE_RGB_MATRIX_BAND_SAT -# define DISABLE_RGB_MATRIX_BAND_VAL -# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL -# define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT -# define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL -# define DISABLE_RGB_MATRIX_CYCLE_ALL -# define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT -# define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN -// # define DISABLE_RGB_MATRIX_CYCLE_OUT_IN -// # define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL -# define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON -# define DISABLE_RGB_MATRIX_DUAL_BEACON -# define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL -# define DISABLE_RGB_MATRIX_CYCLE_SPIRAL -# define DISABLE_RGB_MATRIX_RAINBOW_BEACON -# define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS -# define DISABLE_RGB_MATRIX_RAINDROPS -# define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS -// # define DISABLE_RGB_MATRIX_TYPING_HEATMAP -# define DISABLE_RGB_MATRIX_DIGITAL_RAIN -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -# define DISABLE_RGB_MATRIX_SPLASH -# define DISABLE_RGB_MATRIX_MULTISPLASH -# define DISABLE_RGB_MATRIX_SOLID_SPLASH -# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH +// # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects +// # define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended + +# undef ENABLE_RGB_MATRIX_ALPHAS_MODS +# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# undef ENABLE_RGB_MATRIX_BREATHING +# undef ENABLE_RGB_MATRIX_BAND_SAT +# undef ENABLE_RGB_MATRIX_BAND_VAL +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# undef ENABLE_RGB_MATRIX_CYCLE_ALL +# undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# undef ENABLE_RGB_MATRIX_DUAL_BEACON +# undef ENABLE_RGB_MATRIX_RAINBOW_BEACON +# undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# undef ENABLE_RGB_MATRIX_RAINDROPS +# undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# undef ENABLE_RGB_MATRIX_HUE_BREATHING +# undef ENABLE_RGB_MATRIX_HUE_PENDULUM +# undef ENABLE_RGB_MATRIX_HUE_WAVE +# undef ENABLE_RGB_MATRIX_PIXEL_RAIN +# undef ENABLE_RGB_MATRIX_PIXEL_FLOW +# undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# undef ENABLE_RGB_MATRIX_TYPING_HEATMAP +# undef ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# undef ENABLE_RGB_MATRIX_SPLASH +# undef ENABLE_RGB_MATRIX_MULTISPLASH +# undef ENABLE_RGB_MATRIX_SOLID_SPLASH +# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# if !defined(SPLIT_KEYBOARD) && !defined(KEYBOARD_ergodox_ez) && !defined(KEYBOARD_moonlander) +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# endif +# if defined(__arm__) || defined(__AVR_AT90USB1286__) || defined(KEYBOARD_launchpad) +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH # endif // AVR #endif // RGB_MATRIX_ENABLE -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE # ifdef SPLIT_KEYBOARD # define OLED_UPDATE_INTERVAL 60 # else @@ -120,19 +200,38 @@ # ifdef OLED_FONT_H # undef OLED_FONT_H # endif -# define OLED_FONT_H "drashna_font.h" +# define OLED_FONT_H "drashna_font.h" # define OLED_FONT_END 255 // # define OLED_FONT_5X5 // # define OLED_FONT_AZTECH // # define OLED_FONT_BMPLAIN +// # define OLED_FONT_CRACKERS +# define OLED_FONT_DEAD_MEAL +// # define OLED_FONT_EIN +// # define OLED_FONT_HISKYF21 +// # define OLED_FONT_SQUASH +// # define OLED_FONT_ZXPIX // # define OLED_FONT_SUPER_DIGG -// # define OLED_LOGO_GMK_BAD -// # define OLED_LOGO_HUE_MANITEE + +// # define OLED_LOGO_BEBOP // # define OLED_LOGO_CORNE +// # define OLED_LOGO_GMK_BAD // # define OLED_LOGO_GOTHAM +// # define OLED_LOGO_HUE_MANITEE +// # define OLED_LOGO_LOOSE # define OLED_LOGO_SCIFI +// # define OLED_LOGO_SETS3N +// # define OLED_LOGO_SKEEB #endif +// #define WPM_ESTIMATED_WORD_SIZE 5 +#define WPM_ALLOW_COUNT_REGRESSION +// #define WPM_UNFILTERED +// #define WPM_SAMPLE_SECONDS 5 +// #define WPM_SAMPLE_PERIODS 50 +// #define WPM_LAUNCH_CONTROL + + #ifndef ONESHOT_TAP_TOGGLE # define ONESHOT_TAP_TOGGLE 2 #endif // !ONESHOT_TAP_TOGGLE @@ -141,24 +240,12 @@ # define ONESHOT_TIMEOUT 3000 #endif // !ONESHOT_TIMEOUT -#ifdef QMK_KEYS_PER_SCAN -# undef QMK_KEYS_PER_SCAN -# define QMK_KEYS_PER_SCAN 2 -#endif // !QMK_KEYS_PER_SCAN - -// this makes it possible to do rolling combos (zx) with keys that -// convert to other keys on hold (z becomes ctrl when you hold it, -// and when this option isn't enabled, z rapidly followed by x -// actually sends Ctrl-x. That's bad.) -#define IGNORE_MOD_TAP_INTERRUPT -#undef PERMISSIVE_HOLD -//#define TAPPING_FORCE_HOLD -//#define RETRO_TAPPING -#ifndef KEYBOARD_kyria_rev1 -# define TAPPING_TERM_PER_KEY -#endif +#define IGNORE_MOD_TAP_INTERRUPT_PER_KEY +#define PERMISSIVE_HOLD_PER_KEY +#define TAPPING_FORCE_HOLD_PER_KEY +#define RETRO_TAPPING_PER_KEY +#define TAPPING_TERM_PER_KEY -#define FORCE_NKRO #ifndef TAPPING_TOGGLE # define TAPPING_TOGGLE 1 @@ -187,12 +274,12 @@ #ifdef CONVERT_TO_PROTON_C // pins that are available but not present on Pro Micro -# define A3 PAL_LINE(GPIOA, 3) -# define A4 PAL_LINE(GPIOA, 4) -# define A5 PAL_LINE(GPIOA, 5) -# define A6 PAL_LINE(GPIOA, 6) -# define A7 PAL_LINE(GPIOA, 7) -# define A8 PAL_LINE(GPIOA, 8) +# define A3 PAL_LINE(GPIOA, 3) +# define A4 PAL_LINE(GPIOA, 4) +# define A5 PAL_LINE(GPIOA, 5) +# define A6 PAL_LINE(GPIOA, 6) +# define A7 PAL_LINE(GPIOA, 7) +# define A8 PAL_LINE(GPIOA, 8) # define A13 PAL_LINE(GPIOA, 13) # define A14 PAL_LINE(GPIOA, 14) # define A15 PAL_LINE(GPIOA, 15) diff --git a/users/drashna/drashna.c b/users/drashna/drashna.c index a49373726266..7e07a2c7c573 100644 --- a/users/drashna/drashna.c +++ b/users/drashna/drashna.c @@ -50,8 +50,7 @@ bool mod_key_press(uint16_t code, uint16_t mod_code, bool pressed, uint16_t this } __attribute__((weak)) void keyboard_pre_init_keymap(void) {} - -void keyboard_pre_init_user(void) { +void keyboard_pre_init_user(void) { userspace_config.raw = eeconfig_read_user(); keyboard_pre_init_keymap(); } @@ -59,12 +58,11 @@ void keyboard_pre_init_user(void) { // This allows for a global, userspace functions, and continued // customization of the keymap. Use _keymap instead of _user // functions in the keymaps -__attribute__((weak)) void matrix_init_keymap(void) {} -__attribute__((weak)) void matrix_init_secret(void) {} - // Call user matrix init, set default RGB colors and then // call the keymap's init function -void matrix_init_user(void) { +__attribute__((weak)) void matrix_init_keymap(void) {} +__attribute__((weak)) void matrix_init_secret(void) {} +void matrix_init_user(void) { #if defined(BOOTLOADER_CATERINA) && defined(__AVR__) DDRD &= ~(1 << 5); PORTD &= ~(1 << 5); @@ -78,24 +76,25 @@ void matrix_init_user(void) { } __attribute__((weak)) void keyboard_post_init_keymap(void) {} - -void keyboard_post_init_user(void) { +void keyboard_post_init_user(void) { #if defined(RGBLIGHT_ENABLE) keyboard_post_init_rgb_light(); #endif #if defined(RGB_MATRIX_ENABLE) keyboard_post_init_rgb_matrix(); +#endif +#if defined(SPLIT_KEYBOARD) && defined(SPLIT_TRANSACTION_IDS_USER) + keyboard_post_init_transport_sync(); #endif keyboard_post_init_keymap(); } -__attribute__((weak)) void shutdown_keymap(void) {} - #ifdef RGB_MATRIX_ENABLE void rgb_matrix_update_pwm_buffers(void); #endif -void shutdown_user(void) { +__attribute__((weak)) void shutdown_keymap(void) {} +void shutdown_user(void) { #ifdef RGBLIGHT_ENABLE rgblight_enable_noeeprom(); rgblight_mode_noeeprom(1); @@ -104,31 +103,39 @@ void shutdown_user(void) { #ifdef RGB_MATRIX_ENABLE rgb_matrix_set_color_all(0xFF, 0x00, 0x00); rgb_matrix_update_pwm_buffers(); - #endif // RGB_MATRIX_ENABLE +#ifdef OLED_ENABLE + oled_off(); +#endif + shutdown_keymap(); } __attribute__((weak)) void suspend_power_down_keymap(void) {} void suspend_power_down_user(void) { -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_off(); #endif suspend_power_down_keymap(); } __attribute__((weak)) void suspend_wakeup_init_keymap(void) {} - -void suspend_wakeup_init_user(void) { suspend_wakeup_init_keymap(); } - -__attribute__((weak)) void matrix_scan_keymap(void) {} - -__attribute__((weak)) void matrix_scan_secret(void) {} +void suspend_wakeup_init_user(void) { + if (layer_state_is(_GAMEPAD)) { + layer_off(_GAMEPAD); + } + if (layer_state_is(_DIABLO)) { + layer_off(_DIABLO); + } + suspend_wakeup_init_keymap(); +} // No global matrix scan code, so just run keymap's matrix // scan function -void matrix_scan_user(void) { +__attribute__((weak)) void matrix_scan_keymap(void) {} +__attribute__((weak)) void matrix_scan_secret(void) {} +void matrix_scan_user(void) { static bool has_ran_yet; if (!has_ran_yet) { has_ran_yet = true; @@ -155,16 +162,14 @@ void matrix_scan_user(void) { float doom_song[][2] = SONG(E1M1_DOOM); #endif -__attribute__((weak)) layer_state_t layer_state_set_keymap(layer_state_t state) { return state; } - // on layer change, no matter where the change was initiated // Then runs keymap's layer change check -layer_state_t layer_state_set_user(layer_state_t state) { +__attribute__((weak)) layer_state_t layer_state_set_keymap(layer_state_t state) { return state; } +layer_state_t layer_state_set_user(layer_state_t state) { if (!is_keyboard_master()) { return state; } - state = layer_state_set_keymap(state); state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST); #if defined(RGBLIGHT_ENABLE) state = layer_state_set_rgb_light(state); @@ -180,13 +185,13 @@ layer_state_t layer_state_set_user(layer_state_t state) { } } #endif + state = layer_state_set_keymap(state); return state; } -__attribute__((weak)) layer_state_t default_layer_state_set_keymap(layer_state_t state) { return state; } - // Runs state check and changes underglow color and animation -layer_state_t default_layer_state_set_user(layer_state_t state) { +__attribute__((weak)) layer_state_t default_layer_state_set_keymap(layer_state_t state) { return state; } +layer_state_t default_layer_state_set_user(layer_state_t state) { if (!is_keyboard_master()) { return state; } @@ -201,22 +206,14 @@ layer_state_t default_layer_state_set_user(layer_state_t state) { } __attribute__((weak)) void led_set_keymap(uint8_t usb_led) {} - -// Any custom LED code goes here. -// So far, I only have keyboard specific code, -// So nothing goes here. -void led_set_user(uint8_t usb_led) { led_set_keymap(usb_led); } +void led_set_user(uint8_t usb_led) { led_set_keymap(usb_led); } __attribute__((weak)) void eeconfig_init_keymap(void) {} - -void eeconfig_init_user(void) { +void eeconfig_init_user(void) { userspace_config.raw = 0; userspace_config.rgb_layer_change = true; eeconfig_update_user(userspace_config.raw); eeconfig_init_keymap(); -#ifdef VIA_ENABLE - via_eeprom_reset(); -#endif keyboard_init(); } @@ -226,3 +223,97 @@ bool hasAllBitsInMask(uint8_t value, uint8_t mask) { return (value & mask) == mask; } + +#ifdef SPLIT_KEYBOARD +__attribute__((weak)) void matrix_slave_scan_keymap(void) {} +void matrix_slave_scan_user(void) { +# if defined(AUDIO_ENABLE) +# if !defined(NO_MUSIC_MODE) + music_task(); +# endif +# ifdef AUDIO_INIT_DELAY + if (!is_keyboard_master()) { + static bool delayed_tasks_run = false; + static uint16_t delayed_task_timer = 0; + if (!delayed_tasks_run) { + if (!delayed_task_timer) { + delayed_task_timer = timer_read(); + } else if (timer_elapsed(delayed_task_timer) > 300) { + audio_startup(); + delayed_tasks_run = true; + } + } + } +# endif +# endif +# ifdef SEQUENCER_ENABLE + sequencer_task(); +# endif +# ifdef LED_MATRIX_ENABLE + led_matrix_task(); +# endif +# ifdef HAPTIC_ENABLE + haptic_task(); +# endif + + matrix_slave_scan_keymap(); +} +#endif + +__attribute__((weak)) uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + default: + return TAPPING_TERM; + } +} + +__attribute__((weak)) bool get_permissive_hold(uint16_t keycode, keyrecord_t *record) { + // Immediately select the hold action when another key is tapped: + // return true; + // Do not select the hold action when another key is tapped. + // return false; + switch (keycode) { + default: + return false; + } +} + +__attribute__((weak)) bool get_hold_on_other_key_press(uint16_t keycode, keyrecord_t *record) { + // Immediately select the hold action when another key is pressed. + // return true; + // Do not select the hold action when another key is pressed. + // return false; + switch (keycode) { + case QK_LAYER_TAP ... QK_LAYER_TAP_MAX: + return true; + default: + return false; + } +} + +__attribute__((weak)) bool get_ignore_mod_tap_interrupt(uint16_t keycode, keyrecord_t *record) { + // Do not force the mod-tap key press to be handled as a modifier + // if any other key was pressed while the mod-tap key is held down. + // return true; + // Force the mod-tap key press to be handled as a modifier if any + // other key was pressed while the mod-tap key is held down. + // return false; + switch (keycode) { + default: + return true; + } +} + +__attribute__((weak)) bool get_tapping_force_hold(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + default: + return false; + } +} + +__attribute__((weak)) bool get_retro_tapping(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + default: + return false; + } +} diff --git a/users/drashna/drashna.h b/users/drashna/drashna.h index e66f10657450..6a45141d9a82 100644 --- a/users/drashna/drashna.h +++ b/users/drashna/drashna.h @@ -29,34 +29,62 @@ #if defined(RGB_MATRIX_ENABLE) # include "rgb_matrix_stuff.h" #endif -#if defined(OLED_DRIVER_ENABLE) +#if defined(OLED_ENABLE) # include "oled_stuff.h" #endif #if defined(PIMORONI_TRACKBALL_ENABLE) -# include "pimoroni_trackball.h" +# include "drivers/sensors/pimoroni_trackball.h" +#endif +#ifdef SPLIT_KEYBOARD +# include "transport_sync.h" #endif /* Define layer names */ enum userspace_layers { - _QWERTY = 0, - _NUMLOCK = 0, + _QWERTY = 0, + _NUMLOCK = 0, + FIRST_DEFAULT_LAYER = 0, + _COLEMAK_DH, _COLEMAK, _DVORAK, - _WORKMAN, - _NORMAN, - _MALTRON, - _EUCALYN, - _CARPLAX, + LAST_DEFAULT_LAYER = _DVORAK, _GAMEPAD, _DIABLO, - _MACROS, + _DIABLOII, + _MOUSE, _MEDIA, _LOWER, _RAISE, _ADJUST, }; -#define _MOUSE _MACROS +#define _MACROS _MOUSE +#define _DEFAULT_LAYER_1 FIRST_DEFAULT_LAYER +#define _DEFAULT_LAYER_2 (FIRST_DEFAULT_LAYER + 1) +#define _DEFAULT_LAYER_3 (FIRST_DEFAULT_LAYER + 2) +#define _DEFAULT_LAYER_4 (FIRST_DEFAULT_LAYER + 3) +#if LAST_DEFAULT_LAYER > (FIRST_DEFAULT_LAYER + 3) +# define _DEFAULT_LAYER_2 (FIRST_DEFAULT_LAYER + 4) +# define _DEFAULT_LAYER_3 (FIRST_DEFAULT_LAYER + 5) +# define _DEFAULT_LAYER_4 (FIRST_DEFAULT_LAYER + 6) +# define _DEFAULT_LAYER_2 (FIRST_DEFAULT_LAYER + 7) +# if LAST_DEFAULT_LAYER > (FIRST_DEFAULT_LAYER + 7) +# define _DEFAULT_LAYER_2 (FIRST_DEFAULT_LAYER + 8) +# define _DEFAULT_LAYER_3 (FIRST_DEFAULT_LAYER + 9) +# define _DEFAULT_LAYER_4 (FIRST_DEFAULT_LAYER + 10) +# define _DEFAULT_LAYER_4 (FIRST_DEFAULT_LAYER + 11) +# endif +#endif + +#define DEFAULT_LAYER_1_HSV HSV_CYAN +#define DEFAULT_LAYER_2_HSV HSV_CHARTREUSE +#define DEFAULT_LAYER_3_HSV HSV_MAGENTA +#define DEFAULT_LAYER_4_HSV HSV_GOLDENROD + +#define DEFAULT_LAYER_1_RGB RGB_CYAN +#define DEFAULT_LAYER_2_RGB RGB_CHARTREUSE +#define DEFAULT_LAYER_3_RGB RGB_MAGENTA +#define DEFAULT_LAYER_4_RGB RGB_GOLDENROD bool mod_key_press_timer(uint16_t code, uint16_t mod_code, bool pressed); bool mod_key_press(uint16_t code, uint16_t mod_code, bool pressed, uint16_t this_timer); @@ -72,6 +100,9 @@ layer_state_t default_layer_state_set_keymap(layer_state_t state); void led_set_keymap(uint8_t usb_led); void eeconfig_init_keymap(void); bool hasAllBitsInMask(uint8_t value, uint8_t mask); +#ifdef SPLIT_KEYBOARD +void matrix_slave_scan_keymap(void); +#endif // clang-format off typedef union { @@ -104,7 +135,3 @@ We use custom codes here, so we can substitute the right stuff # define KC_D3_3 KC_3 # define KC_D3_4 KC_4 #endif // TAP_DANCE_ENABLE - -#if defined(DRASHNA_CUSTOM_TRANSPORT) && defined(POINTING_DEVICE_ENABLE) -void master_mouse_send(int8_t x, int8_t y); -#endif diff --git a/users/drashna/drashna_font.h b/users/drashna/drashna_font.h index 6a3865a44d5b..844292a53a03 100644 --- a/users/drashna/drashna_font.h +++ b/users/drashna/drashna_font.h @@ -3,659 +3,950 @@ // additional fonts from // https://github.com/datacute/TinyOLED-Fonts -#include "progmem.h" +#if __has_include("../../../../Documents/qmk/oled_font.h") +# include "../../../../Documents/qmk/oled_font.h" +#else + +// additional fonts from +// https://github.com/datacute/TinyOLED-Fonts +# include "progmem.h" + +// clang-format off static const unsigned char font[] PROGMEM = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x00 0 - 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, // 0x01 1 - 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, // 0x02 2 - 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, // 0x03 3 ♥ - 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, // 0x04 4 ♦ - 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, // 0x05 5 ♧ - 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, // 0x06 6 ♤ - 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, // 0x07 7 - 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, // 0x08 8 - 0x00, 0x18, 0x24, 0x18, 0x00, 0x00, // 0x09 9 - 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, // 0x0A 10 - 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, // 0x0B 11 ♂ - 0x26, 0x29, 0x79, 0x29, 0x26, 0x00, // 0x0C 12 ♀ - 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, // 0x0D 13 ♪ - 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, // 0x0E 14 ♫ - 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, // 0x0F 15 - 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, // 0x10 16 - 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, // 0x11 17 - 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, // 0x12 18 ↕ - 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, // 0x13 19 ‼ - 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, // 0x14 20 ¶ - 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, // 0x15 21 § - 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, // 0x16 22 _ - 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, // 0x17 23 ↨ - 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00, // 0x18 24 ↑ - 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00, // 0x19 25 ↓ - 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, // 0x1A 26 → - 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, // 0x1B 27 ← - 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, // 0x1C 28 ⌙h - 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, // 0x1D 29 ↭ - 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, // 0x1E 30 - 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, // 0x1F 31 -#if defined(OLED_FONT_5X5) - 0x00,0x00,0x00,0x00,0x00,0x00, // 0x20 32 - 0x5c,0x00,0x00,0x00,0x00,0x00, // 0x21 33 ! - 0x06,0x00,0x06,0x00,0x00,0x00, // 0x22 34 " - 0x28,0x7c,0x28,0x7c,0x28,0x00, // 0x23 35 # - 0x5c,0x54,0xfe,0x54,0x74,0x00, // 0x24 36 $ - 0x44,0x20,0x10,0x08,0x44,0x00, // 0x25 37 % - 0x28,0x54,0x54,0x20,0x50,0x00, // 0x26 38 & - 0x06,0x00,0x00,0x00,0x00,0x00, // 0x27 39 ' - 0x38,0x44,0x00,0x00,0x00,0x00, // 0x28 40 ( - 0x44,0x38,0x00,0x00,0x00,0x00, // 0x29 41 ) - 0x02,0x07,0x02,0x00,0x00,0x00, // 0x2A 42 * - 0x10,0x10,0x7c,0x10,0x10,0x00, // 0x2B 43 + - 0xc0,0x00,0x00,0x00,0x00,0x00, // 0x2C 44 , - 0x10,0x10,0x10,0x10,0x10,0x00, // 0x2D 45 - - 0x40,0x00,0x00,0x00,0x00,0x00, // 0x2E 46 . - 0x60,0x10,0x0c,0x00,0x00,0x00, // 0x2F 47 / - 0x7c,0x64,0x54,0x4c,0x7c,0x00, // 0x30 48 0 - 0x48,0x7c,0x40,0x00,0x00,0x00, // 0x31 49 1 - 0x64,0x54,0x54,0x54,0x48,0x00, // 0x32 50 2 - 0x44,0x54,0x54,0x54,0x6c,0x00, // 0x33 51 3 - 0x3c,0x20,0x70,0x20,0x20,0x00, // 0x34 52 4 - 0x5c,0x54,0x54,0x54,0x24,0x00, // 0x35 53 5 - 0x7c,0x54,0x54,0x54,0x74,0x00, // 0x36 54 6 - 0x04,0x04,0x64,0x14,0x0c,0x00, // 0x37 55 7 - 0x7c,0x54,0x54,0x54,0x7c,0x00, // 0x38 56 8 - 0x5c,0x54,0x54,0x54,0x7c,0x00, // 0x39 57 9 - 0x44,0x00,0x00,0x00,0x00,0x00, // 0x3A 58 : - 0xc4,0x00,0x00,0x00,0x00,0x00, // 0x3B 59 ; - 0x10,0x28,0x44,0x00,0x00,0x00, // 0x3C 60 < - 0x28,0x28,0x28,0x28,0x28,0x00, // 0x3D 61 = - 0x44,0x28,0x10,0x00,0x00,0x00, // 0x3E 62 > - 0x08,0x04,0x54,0x08,0x00,0x00, // 0x3F 63 ? - 0x7c,0x44,0x54,0x54,0x5c,0x00, // 0x40 64 @ - 0x7c,0x24,0x24,0x24,0x7c,0x00, // 0x41 65 A - 0x7c,0x54,0x54,0x54,0x6c,0x00, // 0x42 66 B - 0x7c,0x44,0x44,0x44,0x44,0x00, // 0x43 67 C - 0x7c,0x44,0x44,0x44,0x38,0x00, // 0x44 68 D - 0x7c,0x54,0x54,0x54,0x44,0x00, // 0x45 69 E - 0x7c,0x14,0x14,0x14,0x04,0x00, // 0x46 70 F - 0x7c,0x44,0x44,0x54,0x74,0x00, // 0x47 71 G - 0x7c,0x10,0x10,0x10,0x7c,0x00, // 0x48 72 H - 0x44,0x44,0x7c,0x44,0x44,0x00, // 0x49 73 I - 0x60,0x40,0x40,0x44,0x7c,0x00, // 0x4A 74 J - 0x7c,0x10,0x10,0x28,0x44,0x00, // 0x4B 75 K - 0x7c,0x40,0x40,0x40,0x40,0x00, // 0x4C 76 L - 0x7c,0x08,0x10,0x08,0x7c,0x00, // 0x4D 77 M - 0x7c,0x08,0x10,0x20,0x7c,0x00, // 0x4E 78 N - 0x38,0x44,0x44,0x44,0x38,0x00, // 0x4F 79 O - 0x7c,0x14,0x14,0x14,0x08,0x00, // 0x50 80 P - 0x3c,0x24,0x64,0x24,0x3c,0x00, // 0x51 81 Q - 0x7c,0x14,0x14,0x14,0x68,0x00, // 0x52 82 R - 0x5c,0x54,0x54,0x54,0x74,0x00, // 0x53 83 S - 0x04,0x04,0x7c,0x04,0x04,0x00, // 0x54 84 T - 0x7c,0x40,0x40,0x40,0x7c,0x00, // 0x55 85 U - 0x0c,0x30,0x40,0x30,0x0c,0x00, // 0x56 86 V - 0x3c,0x40,0x30,0x40,0x3c,0x00, // 0x57 87 W - 0x44,0x28,0x10,0x28,0x44,0x00, // 0x58 88 X - 0x0c,0x10,0x60,0x10,0x0c,0x00, // 0x59 89 Y - 0x44,0x64,0x54,0x4c,0x44,0x00, // 0x5A 90 Z - 0x7c,0x44,0x00,0x00,0x00,0x00, // 0x5B 91 [ - 0x0c,0x10,0x60,0x00,0x00,0x00, // 0x5C 92 \ backslash - 0x44,0x7c,0x00,0x00,0x00,0x00, // 0x5D 93 ] - 0x00,0x01,0x00,0x01,0x00,0x00, // 0x5E 94 ^ - 0x40,0x40,0x40,0x40,0x40,0x40, // 0x5F 95 _ - 0x00,0x01,0x00,0x00,0x00,0x00, // 0x60 96 ` - 0x7c,0x24,0x24,0x24,0x7c,0x00, // 0x61 97 a - 0x7c,0x54,0x54,0x54,0x6c,0x00, // 0x62 98 b - 0x7c,0x44,0x44,0x44,0x44,0x00, // 0x63 99 c - 0x7c,0x44,0x44,0x44,0x38,0x00, // 0x64 100 d - 0x7c,0x54,0x54,0x54,0x44,0x00, // 0x65 101 e - 0x7c,0x14,0x14,0x14,0x04,0x00, // 0x66 102 f - 0x7c,0x44,0x44,0x54,0x74,0x00, // 0x67 103 g - 0x7c,0x10,0x10,0x10,0x7c,0x00, // 0x68 104 h - 0x44,0x44,0x7c,0x44,0x44,0x00, // 0x69 105 i - 0x60,0x40,0x40,0x44,0x7c,0x00, // 0x6A 106 j - 0x7c,0x10,0x10,0x28,0x44,0x00, // 0x6B 107 k - 0x7c,0x40,0x40,0x40,0x40,0x00, // 0x6C 108 l - 0x7c,0x08,0x10,0x08,0x7c,0x00, // 0x6D 109 m - 0x7c,0x08,0x10,0x20,0x7c,0x00, // 0x6E 110 n - 0x38,0x44,0x44,0x44,0x38,0x00, // 0x6F 111 o - 0x7c,0x14,0x14,0x14,0x08,0x00, // 0x70 112 p - 0x3c,0x24,0x64,0x24,0x3c,0x00, // 0x71 113 q - 0x7c,0x14,0x14,0x14,0x68,0x00, // 0x72 114 r - 0x5c,0x54,0x54,0x54,0x74,0x00, // 0x73 115 s - 0x04,0x04,0x7c,0x04,0x04,0x00, // 0x74 116 t - 0x7c,0x40,0x40,0x40,0x7c,0x00, // 0x75 117 u - 0x0c,0x30,0x40,0x30,0x0c,0x00, // 0x76 118 v - 0x3c,0x40,0x30,0x40,0x3c,0x00, // 0x77 119 w - 0x44,0x28,0x10,0x28,0x44,0x00, // 0x78 120 x - 0x0c,0x10,0x60,0x10,0x0c,0x00, // 0x79 121 y - 0x44,0x64,0x54,0x4c,0x44,0x00, // 0x7A 122 z - 0x10,0x7c,0x44,0x00,0x00,0x00, // 0x7B 123 { - 0x6c,0x00,0x00,0x00,0x00,0x00, // 0x7C 124 | - 0x44,0x7c,0x10,0x00,0x00,0x00, // 0x7D 125 } - 0x02,0x01,0x02,0x01,0x00,0x00, // 0x7E 126 ~ - 0x00,0x00,0x00,0x00,0x00,0x00, // 0x7F 127 -#elif defined(OLED_FONT_AZTECH) - 0x00,0x00,0x00,0x00,0x00,0x00, // 0x20 32 - 0x00,0x2e,0x00,0x00,0x00,0x00, // 0x21 33 ! - 0x00,0x02,0x00,0x02,0x00,0x00, // 0x22 34 " - 0x00,0x0a,0x1e,0x0a,0x1e,0x00, // 0x23 35 # - 0x00,0x0e,0x2a,0x6b,0x2a,0x3a, // 0x24 36 $ - 0x00,0x06,0x06,0x26,0x18,0x06, // 0x25 37 % - 0x38,0x3e,0x2a,0x2a,0x28,0x38, // 0x26 38 & - 0x18,0x02,0x00,0x00,0x00,0x00, // 0x27 39 ' - 0x00,0x3e,0x22,0x00,0x00,0x00, // 0x28 40 ( - 0x00,0x22,0x3e,0x00,0x00,0x00, // 0x29 41 ) - 0x00,0x0e,0x0e,0x0e,0x04,0x00, // 0x2A 42 * - 0x00,0x08,0x1c,0x08,0x00,0x00, // 0x2B 43 + - 0x00,0x20,0x00,0x00,0x00,0x00, // 0x2C 44 , - 0x00,0x08,0x08,0x08,0x00,0x00, // 0x2D 45 - - 0x00,0x20,0x00,0x00,0x00,0x00, // 0x2E 46 . - 0x00,0x20,0x18,0x06,0x00,0x00, // 0x2F 47 / - 0x00,0x3e,0x22,0x2a,0x22,0x3e, // 0x30 48 0 - 0x02,0x3e,0x00,0x00,0x00,0x00, // 0x31 49 1 - 0x00,0x38,0x28,0x2a,0x2a,0x2e, // 0x32 50 2 - 0x00,0x22,0x2a,0x2e,0x38,0x00, // 0x33 51 3 - 0x00,0x0e,0x08,0x08,0x3e,0x08, // 0x34 52 4 - 0x00,0x2e,0x2a,0x2a,0x28,0x38, // 0x35 53 5 - 0x00,0x3e,0x2a,0x2a,0x28,0x38, // 0x36 54 6 - 0x00,0x06,0x02,0x02,0x0a,0x3e, // 0x37 55 7 - 0x00,0x38,0x2e,0x2a,0x2e,0x38, // 0x38 56 8 - 0x00,0x0e,0x0a,0x2a,0x2a,0x3e, // 0x39 57 9 - 0x00,0x28,0x00,0x00,0x00,0x00, // 0x3A 58 : - 0x00,0x28,0x00,0x00,0x00,0x00, // 0x3B 59 ; - 0x00,0x08,0x14,0x22,0x00,0x00, // 0x3C 60 < - 0x00,0x14,0x14,0x14,0x14,0x00, // 0x3D 61 = - 0x00,0x22,0x14,0x08,0x00,0x00, // 0x3E 62 > - 0x00,0x06,0x02,0x2a,0x0a,0x06, // 0x3F 63 ? - 0x00,0x3e,0x02,0x3a,0x2a,0x0a, // 0x40 64 @ - 0x22,0x3e,0x02,0x0a,0x0a,0x3e, // 0x41 65 A - 0x00,0x3e,0x22,0x2a,0x2e,0x38, // 0x42 66 B - 0x00,0x3e,0x22,0x22,0x20,0x30, // 0x43 67 C - 0x00,0x3e,0x22,0x22,0x22,0x3c, // 0x44 68 D - 0x00,0x3e,0x2a,0x22,0x20,0x30, // 0x45 69 E - 0x00,0x3e,0x0a,0x0a,0x06,0x02, // 0x46 70 F - 0x00,0x3e,0x22,0x2a,0x28,0x38, // 0x47 71 G - 0x00,0x3e,0x08,0x08,0x08,0x3e, // 0x48 72 H - 0x00,0x22,0x3e,0x22,0x00,0x00, // 0x49 73 I - 0x00,0x30,0x20,0x20,0x22,0x3e, // 0x4A 74 J - 0x00,0x3e,0x08,0x08,0x0e,0x38, // 0x4B 75 K - 0x00,0x3e,0x20,0x20,0x20,0x30, // 0x4C 76 L - 0x00,0x3e,0x02,0x3e,0x20,0x3e, // 0x4D 77 M - 0x3e,0x3e,0x02,0x3e,0x20,0x3e, // 0x4E 78 N - 0x00,0x3e,0x22,0x22,0x22,0x3e, // 0x4F 79 O - 0x00,0x3e,0x02,0x0a,0x0a,0x0e, // 0x50 80 P - 0x00,0x3e,0x22,0x22,0x22,0x3e, // 0x51 81 Q - 0x00,0x3e,0x02,0x0a,0x0e,0x38, // 0x52 82 R - 0x00,0x0e,0x0a,0x2a,0x2a,0x3a, // 0x53 83 S - 0x00,0x06,0x02,0x3e,0x02,0x06, // 0x54 84 T - 0x00,0x3e,0x20,0x20,0x20,0x3e, // 0x55 85 U - 0x00,0x3e,0x20,0x20,0x3e,0x00, // 0x56 86 V - 0x00,0x3e,0x20,0x3e,0x02,0x3e, // 0x57 87 W - 0x3e,0x3a,0x0e,0x08,0x0e,0x3a, // 0x58 88 X - 0x00,0x0e,0x08,0x08,0x28,0x3e, // 0x59 89 Y - 0x00,0x3a,0x2a,0x2a,0x0a,0x0e, // 0x5A 90 Z - 0x00,0x3e,0x22,0x00,0x00,0x00, // 0x5B 91 [ - 0x00,0x02,0x0c,0x30,0x00,0x00, // 0x5C 92 \ backslash - 0x22,0x3e,0x00,0x00,0x00,0x00, // 0x5D 93 ] - 0x00,0x01,0x00,0x01,0x00,0x00, // 0x5E 94 ^ - 0x00,0x20,0x20,0x20,0x00,0x00, // 0x5F 95 _ - 0x00,0x01,0x00,0x00,0x00,0x00, // 0x60 96 ` - 0x00,0x38,0x28,0x28,0x08,0x38, // 0x61 97 a - 0x00,0x3e,0x20,0x28,0x28,0x38, // 0x62 98 b - 0x00,0x38,0x28,0x28,0x20,0x30, // 0x63 99 c - 0x00,0x38,0x28,0x28,0x20,0x3e, // 0x64 100 d - 0x00,0xf8,0x88,0x28,0x28,0x38, // 0x65 101 e - 0x00,0xf8,0x28,0x28,0x18,0x08, // 0x66 102 f - 0x00,0x38,0x28,0xa8,0x88,0xf8, // 0x67 103 g - 0x00,0x3c,0x08,0x08,0x08,0x38, // 0x68 104 h - 0x00,0x3a,0x00,0x00,0x00,0x00, // 0x69 105 i - 0x80,0xfa,0x00,0x00,0x00,0x00, // 0x6A 106 j - 0x00,0x3e,0x08,0x08,0x38,0x2c, // 0x6B 107 k - 0x00,0x3e,0x20,0x00,0x00,0x00, // 0x6C 108 l - 0x00,0x38,0x08,0x38,0x20,0x38, // 0x6D 109 m - 0x38,0x38,0x08,0x38,0x20,0x38, // 0x6E 110 n - 0x00,0x38,0x28,0x28,0x28,0x38, // 0x6F 111 o - 0x00,0xf8,0x08,0x28,0x28,0x38, // 0x70 112 p - 0x00,0x38,0x28,0x28,0x08,0xf8, // 0x71 113 q - 0x00,0x38,0x08,0x08,0x18,0x08, // 0x72 114 r - 0x00,0x38,0x28,0xa8,0xa8,0xe8, // 0x73 115 s - 0x00,0x3e,0x28,0x28,0x20,0x30, // 0x74 116 t - 0x00,0x38,0x20,0x20,0x20,0x38, // 0x75 117 u - 0x00,0x38,0x20,0x38,0x00,0x00, // 0x76 118 v - 0x00,0x38,0x20,0x38,0x08,0x38, // 0x77 119 w - 0x38,0x28,0x38,0x10,0x38,0x28, // 0x78 120 x - 0x00,0x38,0x20,0xa0,0xa0,0xf8, // 0x79 121 y - 0x00,0xe8,0xa8,0xa8,0x28,0x38, // 0x7A 122 z - 0x08,0x3e,0x22,0x00,0x00,0x00, // 0x7B 123 { - 0x00,0x3f,0x00,0x00,0x00,0x00, // 0x7C 124 | - 0x22,0x3e,0x08,0x00,0x00,0x00, // 0x7D 125 } - 0x00,0x00,0x00,0x00,0x00,0x00, // 0x7E 126 ~ - 0x00,0x00,0x00,0x00,0x00,0x00, // 0x7F 127 -#elif defined(OLED_FONT_BMPLAIN) - 0x00,0x00,0x00,0x00,0x00,0x00, // 0x20 32 - 0x2e,0x00,0x00,0x00,0x00,0x00, // 0x21 33 ! - 0x03,0x00,0x03,0x00,0x00,0x00, // 0x22 34 " - 0x0a,0x1f,0x0a,0x1f,0x0a,0x00, // 0x23 35 # - 0x2e,0x2a,0x6b,0x2a,0x3a,0x00, // 0x24 36 $ - 0x0e,0x2a,0x1e,0x08,0x3c,0x2a, // 0x25 37 % - 0x3e,0x2a,0x2a,0x22,0x38,0x08, // 0x26 38 & - 0x03,0x00,0x00,0x00,0x00,0x00, // 0x27 39 ' - 0x1c,0x22,0x00,0x00,0x00,0x00, // 0x28 40 ( - 0x22,0x1c,0x00,0x00,0x00,0x00, // 0x29 41 ) - 0x15,0x0e,0x04,0x0e,0x15,0x00, // 0x2A 42 * - 0x08,0x08,0x3e,0x08,0x08,0x00, // 0x2B 43 + - 0x60,0x00,0x00,0x00,0x00,0x00, // 0x2C 44 , - 0x08,0x08,0x08,0x08,0x08,0x00, // 0x2D 45 - - 0x20,0x00,0x00,0x00,0x00,0x00, // 0x2E 46 . - 0x20,0x10,0x08,0x04,0x02,0x00, // 0x2F 47 / - 0x3e,0x22,0x2a,0x22,0x3e,0x00, // 0x30 48 0 - 0x04,0x3e,0x00,0x00,0x00,0x00, // 0x31 49 1 - 0x3a,0x2a,0x2a,0x2a,0x2e,0x00, // 0x32 50 2 - 0x2a,0x2a,0x2a,0x2a,0x3e,0x00, // 0x33 51 3 - 0x0e,0x08,0x08,0x08,0x3e,0x00, // 0x34 52 4 - 0x2e,0x2a,0x2a,0x2a,0x3a,0x00, // 0x35 53 5 - 0x3e,0x2a,0x2a,0x2a,0x3a,0x00, // 0x36 54 6 - 0x02,0x02,0x02,0x02,0x3e,0x00, // 0x37 55 7 - 0x3e,0x2a,0x2a,0x2a,0x3e,0x00, // 0x38 56 8 - 0x2e,0x2a,0x2a,0x2a,0x3e,0x00, // 0x39 57 9 - 0x14,0x00,0x00,0x00,0x00,0x00, // 0x3A 58 : - 0x34,0x00,0x00,0x00,0x00,0x00, // 0x3B 59 ; - 0x08,0x14,0x22,0x00,0x00,0x00, // 0x3C 60 < - 0x14,0x14,0x14,0x14,0x14,0x00, // 0x3D 61 = - 0x22,0x14,0x08,0x00,0x00,0x00, // 0x3E 62 > - 0x06,0x02,0x2a,0x0a,0x0e,0x00, // 0x3F 63 ? - 0x3e,0x02,0x3a,0x2a,0x3e,0x00, // 0x40 64 @ - 0x3e,0x12,0x12,0x12,0x3e,0x00, // 0x41 65 A - 0x3e,0x2a,0x2a,0x2a,0x36,0x00, // 0x42 66 B - 0x3e,0x22,0x22,0x22,0x22,0x00, // 0x43 67 C - 0x3e,0x22,0x22,0x22,0x1c,0x00, // 0x44 68 D - 0x3e,0x2a,0x2a,0x2a,0x22,0x00, // 0x45 69 E - 0x3e,0x0a,0x0a,0x0a,0x02,0x00, // 0x46 70 F - 0x3e,0x22,0x2a,0x2a,0x3a,0x00, // 0x47 71 G - 0x3e,0x08,0x08,0x08,0x3e,0x00, // 0x48 72 H - 0x22,0x3e,0x22,0x00,0x00,0x00, // 0x49 73 I - 0x38,0x20,0x20,0x20,0x3e,0x00, // 0x4A 74 J - 0x3e,0x08,0x08,0x14,0x22,0x00, // 0x4B 75 K - 0x3e,0x20,0x20,0x20,0x20,0x00, // 0x4C 76 L - 0x3e,0x04,0x38,0x04,0x3e,0x00, // 0x4D 77 M - 0x3e,0x04,0x08,0x10,0x3e,0x00, // 0x4E 78 N - 0x3e,0x22,0x22,0x22,0x3e,0x00, // 0x4F 79 O - 0x3e,0x0a,0x0a,0x0a,0x0e,0x00, // 0x50 80 P - 0x3e,0x22,0x72,0x22,0x3e,0x00, // 0x51 81 Q - 0x3e,0x0a,0x0a,0x1a,0x2e,0x00, // 0x52 82 R - 0x2e,0x2a,0x2a,0x2a,0x3a,0x00, // 0x53 83 S - 0x02,0x02,0x3e,0x02,0x02,0x00, // 0x54 84 T - 0x1e,0x20,0x20,0x20,0x1e,0x00, // 0x55 85 U - 0x0e,0x10,0x20,0x10,0x0e,0x00, // 0x56 86 V - 0x3e,0x10,0x0e,0x10,0x3e,0x00, // 0x57 87 W - 0x22,0x14,0x08,0x14,0x22,0x00, // 0x58 88 X - 0x02,0x04,0x38,0x04,0x02,0x00, // 0x59 89 Y - 0x3a,0x2a,0x2a,0x2a,0x2e,0x00, // 0x5A 90 Z - 0x3e,0x22,0x00,0x00,0x00,0x00, // 0x5B 91 [ - 0x3f,0x21,0x3f,0x00,0x00,0x00, // 0x5C 92 \ backslash - 0x22,0x3e,0x00,0x00,0x00,0x00, // 0x5D 93 ] - 0x0c,0x1e,0x3c,0x1e,0x0c,0x00, // 0x5E 94 ^ - 0x20,0x20,0x20,0x20,0x20,0x00, // 0x5F 95 _ - 0x1c,0x3e,0x3e,0x3e,0x1c,0x00, // 0x60 96 ` - 0x3c,0x24,0x24,0x24,0x3c,0x20, // 0x61 97 a - 0x3e,0x24,0x24,0x24,0x3c,0x00, // 0x62 98 b - 0x3c,0x24,0x24,0x24,0x24,0x00, // 0x63 99 c - 0x3c,0x24,0x24,0x24,0x3e,0x00, // 0x64 100 d - 0x3c,0x24,0x34,0x2c,0x24,0x00, // 0x65 101 e - 0x08,0x3e,0x0a,0x0a,0x00,0x00, // 0x66 102 f - 0x1c,0x54,0x54,0x54,0x7c,0x00, // 0x67 103 g - 0x3e,0x04,0x04,0x04,0x3c,0x00, // 0x68 104 h - 0x3a,0x00,0x00,0x00,0x00,0x00, // 0x69 105 i - 0x7a,0x00,0x00,0x00,0x00,0x00, // 0x6A 106 j - 0x3e,0x08,0x14,0x22,0x00,0x00, // 0x6B 107 k - 0x02,0x3e,0x00,0x00,0x00,0x00, // 0x6C 108 l - 0x3c,0x04,0x3c,0x04,0x3c,0x00, // 0x6D 109 m - 0x3c,0x04,0x04,0x04,0x3c,0x00, // 0x6E 110 n - 0x3c,0x24,0x24,0x24,0x3c,0x00, // 0x6F 111 o - 0x7c,0x24,0x24,0x24,0x3c,0x00, // 0x70 112 p - 0x3c,0x24,0x24,0x24,0x7c,0x00, // 0x71 113 q - 0x3c,0x04,0x04,0x04,0x00,0x00, // 0x72 114 r - 0x24,0x2c,0x34,0x24,0x00,0x00, // 0x73 115 s - 0x04,0x3e,0x24,0x24,0x00,0x00, // 0x74 116 t - 0x3c,0x20,0x20,0x20,0x3c,0x00, // 0x75 117 u - 0x0c,0x10,0x20,0x10,0x0c,0x00, // 0x76 118 v - 0x3c,0x20,0x3c,0x20,0x3c,0x00, // 0x77 119 w - 0x24,0x24,0x18,0x24,0x24,0x00, // 0x78 120 x - 0x1c,0x50,0x50,0x50,0x7c,0x00, // 0x79 121 y - 0x24,0x34,0x2c,0x24,0x00,0x00, // 0x7A 122 z - 0x08,0x3e,0x22,0x00,0x00,0x00, // 0x7B 123 { - 0x1c,0x22,0x22,0x22,0x1c,0x00, // 0x7C 124 | - 0x22,0x3e,0x08,0x00,0x00,0x00, // 0x7D 125 } - 0x01,0x01,0x01,0x00,0x00,0x00, // 0x7E 126 ~ - 0x00,0x00,0x00,0x00,0x00,0x00, // 0x7F 127 -#elif defined(OLED_FONT_SUPER_DIGG) - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x20 32 - 0x58, 0x5C, 0x00, 0x00, 0x00, 0x00, // 0x21 33 ! - 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, // 0x22 34 " - 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, // 0x23 35 # - 0x5C, 0xFE, 0x54, 0xFE, 0x74, 0x00, // 0x24 36 $ - 0x03, 0x63, 0x38, 0x0C, 0x63, 0x60, // 0x25 37 % - 0x70, 0x5C, 0x54, 0x74, 0x7C, 0x50, // 0x26 38 & - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // 0x27 39 ' - 0x70, 0x7C, 0x44, 0x00, 0x00, 0x00, // 0x28 40 ( - 0x44, 0x7C, 0x70, 0x00, 0x00, 0x00, // 0x29 41 ) - 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, // 0x2A 42 * - 0x10, 0x10, 0x70, 0x7C, 0x10, 0x00, // 0x2B 43 + - 0x40, 0xC0, 0x00, 0x00, 0x00, 0x00, // 0x2C 44 , - 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, // 0x2D 45 - - 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, // 0x2E 46 . - 0x70, 0x7C, 0x03, 0x00, 0x00, 0x00, // 0x2F 47 / - 0x7C, 0x44, 0x44, 0x44, 0x7C, 0x1C, // 0x30 48 0 - 0x04, 0x04, 0x7C, 0x1C, 0x00, 0x00, // 0x31 49 1 - 0x74, 0x74, 0x54, 0x54, 0x5C, 0x00, // 0x32 50 2 - 0x44, 0x54, 0x54, 0x54, 0x7C, 0x70, // 0x33 51 3 - 0x1C, 0x10, 0x10, 0x7C, 0x7C, 0x00, // 0x34 52 4 - 0x5C, 0x5C, 0x54, 0x54, 0x74, 0x00, // 0x35 53 5 - 0x70, 0x7C, 0x54, 0x54, 0x74, 0x00, // 0x36 54 6 - 0x04, 0x14, 0x14, 0x14, 0x7C, 0x70, // 0x37 55 7 - 0x70, 0x5C, 0x54, 0x74, 0x7C, 0x00, // 0x38 56 8 - 0x5C, 0x54, 0x54, 0x54, 0x7C, 0x1C, // 0x39 57 9 - 0x50, 0x50, 0x00, 0x00, 0x00, 0x00, // 0x3A 58 : - 0x50, 0xD0, 0x00, 0x00, 0x00, 0x00, // 0x3B 59 ; - 0x18, 0x18, 0x24, 0x42, 0x00, 0x00, // 0x3C 60 < - 0x28, 0x28, 0x28, 0x28, 0x00, 0x00, // 0x3D 61 = - 0x42, 0x24, 0x18, 0x18, 0x00, 0x00, // 0x3E 62 > - 0x04, 0x14, 0x54, 0x54, 0x1C, 0x1C, // 0x3F 63 ? - 0xF8, 0x04, 0x74, 0x74, 0x54, 0x54, // 0x40 64 @ - 0x70, 0x7C, 0x14, 0x14, 0x3C, 0x00, // 0x41 65 A - 0x7C, 0x74, 0x54, 0x54, 0x7C, 0x00, // 0x42 66 B - 0x70, 0x7C, 0x44, 0x44, 0x44, 0x44, // 0x43 67 C - 0x70, 0x7C, 0x44, 0x44, 0x48, 0x70, // 0x44 68 D - 0x70, 0x7C, 0x54, 0x54, 0x54, 0x44, // 0x45 69 E - 0x70, 0x7C, 0x14, 0x14, 0x14, 0x04, // 0x46 70 F - 0x70, 0x7C, 0x44, 0x44, 0x54, 0x74, // 0x47 71 G - 0x70, 0x7C, 0x10, 0x10, 0x7C, 0x00, // 0x48 72 H - 0x70, 0x7C, 0x00, 0x00, 0x00, 0x00, // 0x49 73 I - 0x60, 0x40, 0x40, 0x40, 0x7C, 0x70, // 0x4A 74 J - 0x7C, 0x70, 0x10, 0x1C, 0x70, 0x00, // 0x4B 75 K - 0x70, 0x7C, 0x40, 0x40, 0x40, 0x60, // 0x4C 76 L - 0x70, 0x7C, 0x04, 0x04, 0x7C, 0x04, // 0x4D 77 M - 0x70, 0x7C, 0x04, 0x04, 0x04, 0x7C, // 0x4E 78 N - 0x70, 0x7C, 0x44, 0x44, 0x44, 0x7C, // 0x4F 79 O - 0x70, 0x7C, 0x24, 0x24, 0x3C, 0x00, // 0x50 80 P - 0x7C, 0x44, 0x44, 0x44, 0x7C, 0x00, // 0x51 81 Q - 0x7C, 0x74, 0x14, 0x14, 0x3C, 0x00, // 0x52 82 R - 0x5C, 0x5C, 0x54, 0x54, 0x74, 0x00, // 0x53 83 S - 0x04, 0x04, 0x7C, 0x74, 0x04, 0x00, // 0x54 84 T - 0x70, 0x7C, 0x40, 0x40, 0x40, 0x7C, // 0x55 85 U - 0x70, 0x7C, 0x40, 0x40, 0x20, 0x1C, // 0x56 86 V - 0x70, 0x7C, 0x40, 0x40, 0x7C, 0x40, // 0x57 87 W - 0x70, 0x7C, 0x10, 0x10, 0x3C, 0x00, // 0x58 88 X - 0x1C, 0x10, 0x70, 0x70, 0x1C, 0x00, // 0x59 89 Y - 0x74, 0x74, 0x54, 0x54, 0x5C, 0x00, // 0x5A 90 Z - 0xF0, 0xFE, 0x82, 0x00, 0x00, 0x00, // 0x5B 91 [ - 0x03, 0x7C, 0x70, 0x00, 0x00, 0x00, // 0x5C 92 \ backslash - 0x82, 0xFE, 0xF0, 0x00, 0x00, 0x00, // 0x5D 93 ] - 0x04, 0x02, 0x01, 0x06, 0x04, 0x00, // 0x5E 94 ^ - 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, // 0x5F 95 _ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x60 96 ` - 0x70, 0x7C, 0x14, 0x14, 0x3C, 0x00, // 0x61 97 a - 0x7C, 0x74, 0x54, 0x54, 0x7C, 0x00, // 0x62 98 b - 0x70, 0x7C, 0x44, 0x44, 0x44, 0x44, // 0x63 99 c - 0x70, 0x7C, 0x44, 0x44, 0x48, 0x70, // 0x64 100 d - 0x70, 0x7C, 0x54, 0x54, 0x54, 0x44, // 0x65 101 e - 0x70, 0x7C, 0x14, 0x14, 0x14, 0x04, // 0x66 102 f - 0x70, 0x7C, 0x44, 0x44, 0x54, 0x74, // 0x67 103 g - 0x70, 0x7C, 0x10, 0x10, 0x7C, 0x00, // 0x68 104 h - 0x70, 0x7C, 0x00, 0x00, 0x00, 0x00, // 0x69 105 i - 0x60, 0x40, 0x40, 0x40, 0x7C, 0x70, // 0x6A 106 j - 0x7C, 0x70, 0x10, 0x1C, 0x70, 0x00, // 0x6B 107 k - 0x70, 0x7C, 0x40, 0x40, 0x40, 0x60, // 0x6C 108 l - 0x70, 0x7C, 0x04, 0x04, 0x7C, 0x04, // 0x6D 109 m - 0x70, 0x7C, 0x04, 0x04, 0x04, 0x7C, // 0x6E 110 n - 0x70, 0x7C, 0x44, 0x44, 0x44, 0x7C, // 0x6F 111 o - 0x70, 0x7C, 0x24, 0x24, 0x3C, 0x00, // 0x70 112 p - 0x7C, 0x44, 0x44, 0x44, 0x7C, 0x00, // 0x71 113 q - 0x7C, 0x74, 0x14, 0x14, 0x3C, 0x00, // 0x72 114 r - 0x5C, 0x5C, 0x54, 0x54, 0x74, 0x00, // 0x73 115 s - 0x04, 0x04, 0x7C, 0x74, 0x04, 0x00, // 0x74 116 t - 0x70, 0x7C, 0x40, 0x40, 0x40, 0x7C, // 0x75 117 u - 0x70, 0x7C, 0x40, 0x40, 0x20, 0x1C, // 0x76 118 v - 0x70, 0x7C, 0x40, 0x40, 0x7C, 0x40, // 0x77 119 w - 0x70, 0x7C, 0x10, 0x10, 0x3C, 0x00, // 0x78 120 x - 0x1C, 0x10, 0x70, 0x70, 0x1C, 0x00, // 0x79 121 y - 0x74, 0x74, 0x54, 0x54, 0x5C, 0x00, // 0x7A 122 z - 0x10, 0xFE, 0xC2, 0x00, 0x00, 0x00, // 0x7B 123 { - 0x00, 0x44, 0x77, 0x00, 0x00, 0x00, // 0x7C 124 | - 0xC2, 0xFE, 0x10, 0x00, 0x00, 0x00, // 0x7D 125 } - 0x02, 0x01, 0x03, 0x04, 0x06, 0x02, // 0x7E 126 ~ - 0x3C, 0x22, 0x21, 0x22, 0x3C, 0x00, // 0x7F 127 -#else // default font - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x20 32 - 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, // 0x21 33 ! - 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, // 0x22 34 " - 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, // 0x23 35 # - 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, // 0x24 36 $ - 0x23, 0x13, 0x08, 0x64, 0x62, 0x00, // 0x25 37 % - 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, // 0x26 38 & - 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, // 0x27 39 ' - 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, // 0x28 40 ( - 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, // 0x29 41 ) - 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, // 0x2A 42 * - 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, // 0x2B 43 + - 0x00, 0x80, 0x70, 0x30, 0x00, 0x00, // 0x2C 44 , - 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, // 0x2D 45 - - 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, // 0x2E 46 . - 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, // 0x2F 47 / - 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, // 0x30 48 0 - 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, // 0x31 49 1 - 0x72, 0x49, 0x49, 0x49, 0x46, 0x00, // 0x32 50 2 - 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, // 0x33 51 3 - 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, // 0x34 52 4 - 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, // 0x35 53 5 - 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, // 0x36 54 6 - 0x41, 0x21, 0x11, 0x09, 0x07, 0x00, // 0x37 55 7 - 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, // 0x38 56 8 - 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, // 0x39 57 9 - 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, // 0x3A 58 : - 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, // 0x3B 59 ; - 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, // 0x3C 60 < - 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, // 0x3D 61 = - 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, // 0x3E 62 > - 0x02, 0x01, 0x59, 0x09, 0x06, 0x00, // 0x3F 63 ? - 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00, // 0x40 64 @ - 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, // 0x41 65 A - 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, // 0x42 66 B - 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, // 0x43 67 C - 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, // 0x44 68 D - 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, // 0x45 69 E - 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, // 0x46 70 F - 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, // 0x47 71 G - 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, // 0x48 72 H - 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, // 0x49 73 I - 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, // 0x4A 74 J - 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, // 0x4B 75 K - 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, // 0x4C 76 L - 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, // 0x4D 77 M - 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, // 0x4E 78 N - 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, // 0x4F 79 O - 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, // 0x50 80 P - 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, // 0x51 81 Q - 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, // 0x52 82 R - 0x26, 0x49, 0x49, 0x49, 0x32, 0x00, // 0x53 83 S - 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00, // 0x54 84 T - 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, // 0x55 85 U - 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, // 0x56 86 V - 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, // 0x57 87 W - 0x63, 0x14, 0x08, 0x14, 0x63, 0x00, // 0x58 88 X - 0x03, 0x04, 0x78, 0x04, 0x03, 0x00, // 0x59 89 Y - 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, // 0x5A 90 Z - 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, // 0x5B 91 [ - 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, // 0x5C 92 \ backslash - 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, // 0x5D 93 ] - 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, // 0x5E 94 ^ - 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, // 0x5F 95 _ - 0x00, 0x03, 0x07, 0x08, 0x00, 0x00, // 0x60 96 ` - 0x20, 0x54, 0x54, 0x78, 0x40, 0x00, // 0x61 97 a - 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00, // 0x62 98 b - 0x38, 0x44, 0x44, 0x44, 0x28, 0x00, // 0x63 99 c - 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00, // 0x64 100 d - 0x38, 0x54, 0x54, 0x54, 0x18, 0x00, // 0x65 101 e - 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00, // 0x66 102 f - 0x18, 0x24, 0x24, 0x1C, 0x78, 0x00, // 0x67 103 g - 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, // 0x68 104 h - 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, // 0x69 105 i - 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, // 0x6A 106 j - 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, // 0x6B 107 k - 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, // 0x6C 108 l - 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00, // 0x6D 109 m - 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, // 0x6E 110 n - 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, // 0x6F 111 o - 0x7C, 0x18, 0x24, 0x24, 0x18, 0x00, // 0x70 112 p - 0x18, 0x24, 0x24, 0x18, 0x7C, 0x00, // 0x71 113 q - 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, // 0x72 114 r - 0x48, 0x54, 0x54, 0x54, 0x24, 0x00, // 0x73 115 s - 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00, // 0x74 116 t - 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, // 0x75 117 u - 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, // 0x76 118 v - 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, // 0x77 119 w - 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, // 0x78 120 x - 0x4C, 0x90, 0x10, 0x90, 0x7C, 0x00, // 0x79 121 y - 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, // 0x7A 122 z - 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, // 0x7B 123 { - 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, // 0x7C 124 | - 0x00, 0x41, 0x36, 0x08, 0x00, 0x00, // 0x7D 125 } - 0x02, 0x01, 0x02, 0x04, 0x02, 0x00, // 0x7E 126 ~ - 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, // 0x7F 127 -#endif + 0x07, 0x08, 0x7F, 0x08, 0x07, 0x00, + 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, + 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, + 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, + 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, + 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, + 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, + 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, + 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, + 0x00, 0x18, 0x24, 0x18, 0x00, 0x00, + 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, + 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, + 0x26, 0x29, 0x79, 0x29, 0x26, 0x00, + 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, + 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, + 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, + 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, + 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, + 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, + 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, + 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, + 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, + 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, + 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00, + 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00, + 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, + 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, + 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, + 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, + 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, + 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, -#if defined(OLED_LOGO_GMK_BAD) - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x80 - 0x80, 0xC0, 0xE0, 0xF0, 0xF0, 0x70, // 0x81 - 0x38, 0x38, 0x38, 0x78, 0x70, 0xF0, // 0x82 - 0xE0, 0xE0, 0x80, 0x00, 0x00, 0x00, // 0x83 - 0x00, 0x00, 0x00, 0x80, 0xF0, 0xF8, // 0x84 - 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, // 0x85 - 0x80, 0xE0, 0xF8, 0xF8, 0xF8, 0xF8, // 0x86 - 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x87 - 0x80, 0xF8, 0xF8, 0xF8, 0x38, 0x00, // 0x88 - 0x80, 0xE0, 0xF0, 0xF8, 0x78, 0x38, // 0x89 - 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, // 0x8A - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x8B - 0x80, 0xF8, 0xF8, 0xF8, 0x38, 0x38, // 0x8C - 0x38, 0xF8, 0xF0, 0xF0, 0xE0, 0x00, // 0x8D - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x8E - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x8F - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x90 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x91 - 0x00, 0x00, 0x00, 0x80, 0xFC, 0xFC, // 0x92 - 0xFC, 0x1C, 0x00, 0x00, 0x00, 0x00, // 0x93 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x94 - 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC, // 0x95 - 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00, // 0x96 - 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, // 0x97 - 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00, // 0x98 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x99 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x9A - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x9B - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x9C - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x9D - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x9E - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x9F - 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, // 0xA0 - 0xFF, 0xFF, 0xFF, 0xC1, 0x80, 0x00, // 0xA1 - 0x00, 0x38, 0x38, 0xB8, 0xB8, 0xF9, // 0xA2 - 0xF9, 0xF8, 0x38, 0x00, 0x00, 0x00, // 0xA3 - 0x00, 0xC0, 0xF8, 0xFF, 0xFF, 0x1F, // 0xA4 - 0x01, 0x3F, 0xFF, 0xFF, 0xF0, 0xFE, // 0xA5 - 0x7F, 0x0F, 0x03, 0xFF, 0xFF, 0xFF, // 0xA6 - 0xFF, 0x00, 0x00, 0x00, 0x00, 0x80, // 0xA7 - 0xFF, 0xFF, 0xFF, 0x3F, 0x1E, 0x7F, // 0xA8 - 0xFF, 0xFF, 0xF3, 0xC1, 0x80, 0x00, // 0xA9 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xAA - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, // 0xAB - 0xFF, 0xFF, 0xFF, 0x3F, 0x1C, 0x1C, // 0xAC - 0x9C, 0xFF, 0xFF, 0xF3, 0xE1, 0x00, // 0xAD - 0x00, 0x00, 0x00, 0xF0, 0xFC, 0xFE, // 0xAE - 0xFF, 0x0F, 0x07, 0x07, 0x8E, 0xFF, // 0xAF - 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, // 0xB0 - 0x00, 0xF0, 0xFC, 0xFE, 0xFF, 0x8F, // 0xB1 - 0x07, 0x07, 0x8E, 0xFF, 0xFF, 0xFF, // 0xB2 - 0x3F, 0x00, 0x00, 0x00, 0x00, 0x80, // 0xB3 - 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, // 0xB4 - 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, // 0xB5 - 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00, // 0xB6 - 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, // 0xB7 - 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00, // 0xB8 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xB9 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xBA - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xBB - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xBC - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xBD - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xBE - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xBF - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xC0 - 0x00, 0x01, 0x03, 0x03, 0x03, 0x07, // 0xC1 - 0x07, 0x07, 0x07, 0x03, 0x03, 0x03, // 0xC2 - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xC3 - 0x06, 0x07, 0x07, 0x07, 0x01, 0x00, // 0xC4 - 0x00, 0x00, 0x07, 0x07, 0x07, 0x01, // 0xC5 - 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, // 0xC6 - 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, // 0xC7 - 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, // 0xC8 - 0x00, 0x03, 0x07, 0x07, 0x07, 0x06, // 0xC9 - 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xCA - 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, // 0xCB - 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, // 0xCC - 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, // 0xCD - 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, // 0xCE - 0x07, 0x07, 0x07, 0x03, 0x07, 0x07, // 0xCF - 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, // 0xD0 - 0x00, 0x00, 0x03, 0x07, 0x07, 0x07, // 0xD1 - 0x07, 0x03, 0x07, 0x07, 0x07, 0x07, // 0xD2 - 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, // 0xD3 - 0x07, 0x07, 0x01, 0x00, 0x00, 0x00, // 0xD4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD5 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD7 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD8 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD9 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDA - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDB - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDC - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDD - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDE - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDF - 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, - 0x00, 0x14, 0x08, 0x14, 0x00, 0x00, - 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, - 0x00, 0x22, 0x1C, 0x41, 0x3E, 0x00, - 0x00, 0x00, 0x00, 0x30, 0x18, 0x0C, - 0x06, 0x0C, 0x18, 0x30, 0x00, 0x00, - 0x00, 0x00, 0x06, 0x06, 0x06, 0x0C, - 0x18, 0x30, 0x66, 0x66, 0x66, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x0C, 0x7E, - 0x7F, 0x7E, 0x0C, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x77, 0x77, 0x77, 0x00, - 0x77, 0x77, 0x77, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xE7, 0xA5, 0xFF, 0x24, - 0x24, 0xFF, 0xA5, 0xE7, 0x00, 0x00, - 0x00, 0x00, 0x1C, 0x22, 0xC9, 0xD1, - 0xC9, 0x22, 0x1C, 0x00, 0x00, 0x00, - 0x00, 0x10, 0x02, 0x38, 0xFC, 0xED, - 0xFC, 0x38, 0x02, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x3E, 0x4A, 0x4F, - 0x4A, 0x3E, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x60, 0x6A, 0x64, - 0x6A, 0x60, 0x40, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x42, 0x69, 0x65, 0x65, - 0x65, 0x69, 0x42, 0x04, 0x00, 0x00, - 0x00, 0x00, 0x1C, 0x14, 0x1C, 0x08, - 0x18, 0x08, 0x18, 0x00, 0x00, 0x00, - 0x00, 0x70, 0xC8, 0xEE, 0xF9, 0x70, +# if defined(OLED_FONT_5X5) + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x28, 0x7c, 0x28, 0x7c, 0x28, 0x00, + 0x5c, 0x54, 0xfe, 0x54, 0x74, 0x00, + 0x44, 0x20, 0x10, 0x08, 0x44, 0x00, + 0x28, 0x54, 0x54, 0x20, 0x50, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x44, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x07, 0x02, 0x00, 0x00, 0x00, + 0x10, 0x10, 0x7c, 0x10, 0x10, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x60, 0x10, 0x0c, 0x00, 0x00, 0x00, + 0x7c, 0x64, 0x54, 0x4c, 0x7c, 0x00, + 0x48, 0x7c, 0x40, 0x00, 0x00, 0x00, + 0x64, 0x54, 0x54, 0x54, 0x48, 0x00, + 0x44, 0x54, 0x54, 0x54, 0x6c, 0x00, + 0x3c, 0x20, 0x70, 0x20, 0x20, 0x00, + 0x5c, 0x54, 0x54, 0x54, 0x24, 0x00, + 0x7c, 0x54, 0x54, 0x54, 0x74, 0x00, + 0x04, 0x04, 0x64, 0x14, 0x0c, 0x00, + 0x7c, 0x54, 0x54, 0x54, 0x7c, 0x00, + 0x5c, 0x54, 0x54, 0x54, 0x7c, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x28, 0x44, 0x00, 0x00, 0x00, + 0x28, 0x28, 0x28, 0x28, 0x28, 0x00, + 0x44, 0x28, 0x10, 0x00, 0x00, 0x00, + 0x08, 0x04, 0x54, 0x08, 0x00, 0x00, + 0x7c, 0x44, 0x54, 0x54, 0x5c, 0x00, + 0x7c, 0x24, 0x24, 0x24, 0x7c, 0x00, + 0x7c, 0x54, 0x54, 0x54, 0x6c, 0x00, + 0x7c, 0x44, 0x44, 0x44, 0x44, 0x00, + 0x7c, 0x44, 0x44, 0x44, 0x38, 0x00, + 0x7c, 0x54, 0x54, 0x54, 0x44, 0x00, + 0x7c, 0x14, 0x14, 0x14, 0x04, 0x00, + 0x7c, 0x44, 0x44, 0x54, 0x74, 0x00, + 0x7c, 0x10, 0x10, 0x10, 0x7c, 0x00, + 0x44, 0x44, 0x7c, 0x44, 0x44, 0x00, + 0x60, 0x40, 0x40, 0x44, 0x7c, 0x00, + 0x7c, 0x10, 0x10, 0x28, 0x44, 0x00, + 0x7c, 0x40, 0x40, 0x40, 0x40, 0x00, + 0x7c, 0x08, 0x10, 0x08, 0x7c, 0x00, + 0x7c, 0x08, 0x10, 0x20, 0x7c, 0x00, + 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, + 0x7c, 0x14, 0x14, 0x14, 0x08, 0x00, + 0x3c, 0x24, 0x64, 0x24, 0x3c, 0x00, + 0x7c, 0x14, 0x14, 0x14, 0x68, 0x00, + 0x5c, 0x54, 0x54, 0x54, 0x74, 0x00, + 0x04, 0x04, 0x7c, 0x04, 0x04, 0x00, + 0x7c, 0x40, 0x40, 0x40, 0x7c, 0x00, + 0x0c, 0x30, 0x40, 0x30, 0x0c, 0x00, + 0x3c, 0x40, 0x30, 0x40, 0x3c, 0x00, + 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, + 0x0c, 0x10, 0x60, 0x10, 0x0c, 0x00, + 0x44, 0x64, 0x54, 0x4c, 0x44, 0x00, + 0x7c, 0x44, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x10, 0x60, 0x00, 0x00, 0x00, + 0x44, 0x7c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x7c, 0x24, 0x24, 0x24, 0x7c, 0x00, + 0x7c, 0x54, 0x54, 0x54, 0x6c, 0x00, + 0x7c, 0x44, 0x44, 0x44, 0x44, 0x00, + 0x7c, 0x44, 0x44, 0x44, 0x38, 0x00, + 0x7c, 0x54, 0x54, 0x54, 0x44, 0x00, + 0x7c, 0x14, 0x14, 0x14, 0x04, 0x00, + 0x7c, 0x44, 0x44, 0x54, 0x74, 0x00, + 0x7c, 0x10, 0x10, 0x10, 0x7c, 0x00, + 0x44, 0x44, 0x7c, 0x44, 0x44, 0x00, + 0x60, 0x40, 0x40, 0x44, 0x7c, 0x00, + 0x7c, 0x10, 0x10, 0x28, 0x44, 0x00, + 0x7c, 0x40, 0x40, 0x40, 0x40, 0x00, + 0x7c, 0x08, 0x10, 0x08, 0x7c, 0x00, + 0x7c, 0x08, 0x10, 0x20, 0x7c, 0x00, + 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, + 0x7c, 0x14, 0x14, 0x14, 0x08, 0x00, + 0x3c, 0x24, 0x64, 0x24, 0x3c, 0x00, + 0x7c, 0x14, 0x14, 0x14, 0x68, 0x00, + 0x5c, 0x54, 0x54, 0x54, 0x74, 0x00, + 0x04, 0x04, 0x7c, 0x04, 0x04, 0x00, + 0x7c, 0x40, 0x40, 0x40, 0x7c, 0x00, + 0x0c, 0x30, 0x40, 0x30, 0x0c, 0x00, + 0x3c, 0x40, 0x30, 0x40, 0x3c, 0x00, + 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, + 0x0c, 0x10, 0x60, 0x10, 0x0c, 0x00, + 0x44, 0x64, 0x54, 0x4c, 0x44, 0x00, + 0x10, 0x7c, 0x44, 0x00, 0x00, 0x00, + 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x7c, 0x10, 0x00, 0x00, 0x00, + 0x02, 0x01, 0x02, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +# lif defined(OLED_FONT_AZTECH) + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x2e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, + 0x00, 0x0a, 0x1e, 0x0a, 0x1e, 0x00, + 0x00, 0x0e, 0x2a, 0x6b, 0x2a, 0x3a, + 0x00, 0x06, 0x06, 0x26, 0x18, 0x06, + 0x38, 0x3e, 0x2a, 0x2a, 0x28, 0x38, + 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x3e, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x22, 0x3e, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x0e, 0x0e, 0x04, 0x00, + 0x00, 0x08, 0x1c, 0x08, 0x00, 0x00, + 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x08, 0x08, 0x00, 0x00, + 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x20, 0x18, 0x06, 0x00, 0x00, + 0x00, 0x3e, 0x22, 0x2a, 0x22, 0x3e, + 0x02, 0x3e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x38, 0x28, 0x2a, 0x2a, 0x2e, + 0x00, 0x22, 0x2a, 0x2e, 0x38, 0x00, + 0x00, 0x0e, 0x08, 0x08, 0x3e, 0x08, + 0x00, 0x2e, 0x2a, 0x2a, 0x28, 0x38, + 0x00, 0x3e, 0x2a, 0x2a, 0x28, 0x38, + 0x00, 0x06, 0x02, 0x02, 0x0a, 0x3e, + 0x00, 0x38, 0x2e, 0x2a, 0x2e, 0x38, + 0x00, 0x0e, 0x0a, 0x2a, 0x2a, 0x3e, + 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x14, 0x22, 0x00, 0x00, + 0x00, 0x14, 0x14, 0x14, 0x14, 0x00, + 0x00, 0x22, 0x14, 0x08, 0x00, 0x00, + 0x00, 0x06, 0x02, 0x2a, 0x0a, 0x06, + 0x00, 0x3e, 0x02, 0x3a, 0x2a, 0x0a, + 0x22, 0x3e, 0x02, 0x0a, 0x0a, 0x3e, + 0x00, 0x3e, 0x22, 0x2a, 0x2e, 0x38, + 0x00, 0x3e, 0x22, 0x22, 0x20, 0x30, + 0x00, 0x3e, 0x22, 0x22, 0x22, 0x3c, + 0x00, 0x3e, 0x2a, 0x22, 0x20, 0x30, + 0x00, 0x3e, 0x0a, 0x0a, 0x06, 0x02, + 0x00, 0x3e, 0x22, 0x2a, 0x28, 0x38, + 0x00, 0x3e, 0x08, 0x08, 0x08, 0x3e, + 0x00, 0x22, 0x3e, 0x22, 0x00, 0x00, + 0x00, 0x30, 0x20, 0x20, 0x22, 0x3e, + 0x00, 0x3e, 0x08, 0x08, 0x0e, 0x38, + 0x00, 0x3e, 0x20, 0x20, 0x20, 0x30, + 0x00, 0x3e, 0x02, 0x3e, 0x20, 0x3e, + 0x3e, 0x3e, 0x02, 0x3e, 0x20, 0x3e, + 0x00, 0x3e, 0x22, 0x22, 0x22, 0x3e, + 0x00, 0x3e, 0x02, 0x0a, 0x0a, 0x0e, + 0x00, 0x3e, 0x22, 0x22, 0x22, 0x3e, + 0x00, 0x3e, 0x02, 0x0a, 0x0e, 0x38, + 0x00, 0x0e, 0x0a, 0x2a, 0x2a, 0x3a, + 0x00, 0x06, 0x02, 0x3e, 0x02, 0x06, + 0x00, 0x3e, 0x20, 0x20, 0x20, 0x3e, + 0x00, 0x3e, 0x20, 0x20, 0x3e, 0x00, + 0x00, 0x3e, 0x20, 0x3e, 0x02, 0x3e, + 0x3e, 0x3a, 0x0e, 0x08, 0x0e, 0x3a, + 0x00, 0x0e, 0x08, 0x08, 0x28, 0x3e, + 0x00, 0x3a, 0x2a, 0x2a, 0x0a, 0x0e, + 0x00, 0x3e, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x0c, 0x30, 0x00, 0x00, + 0x22, 0x3e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x20, 0x20, 0x20, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x38, 0x28, 0x28, 0x08, 0x38, + 0x00, 0x3e, 0x20, 0x28, 0x28, 0x38, + 0x00, 0x38, 0x28, 0x28, 0x20, 0x30, + 0x00, 0x38, 0x28, 0x28, 0x20, 0x3e, + 0x00, 0xf8, 0x88, 0x28, 0x28, 0x38, + 0x00, 0xf8, 0x28, 0x28, 0x18, 0x08, + 0x00, 0x38, 0x28, 0xa8, 0x88, 0xf8, + 0x00, 0x3c, 0x08, 0x08, 0x08, 0x38, + 0x00, 0x3a, 0x00, 0x00, 0x00, 0x00, + 0x80, 0xfa, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x3e, 0x08, 0x08, 0x38, 0x2c, + 0x00, 0x3e, 0x20, 0x00, 0x00, 0x00, + 0x00, 0x38, 0x08, 0x38, 0x20, 0x38, + 0x38, 0x38, 0x08, 0x38, 0x20, 0x38, + 0x00, 0x38, 0x28, 0x28, 0x28, 0x38, + 0x00, 0xf8, 0x08, 0x28, 0x28, 0x38, + 0x00, 0x38, 0x28, 0x28, 0x08, 0xf8, + 0x00, 0x38, 0x08, 0x08, 0x18, 0x08, + 0x00, 0x38, 0x28, 0xa8, 0xa8, 0xe8, + 0x00, 0x3e, 0x28, 0x28, 0x20, 0x30, + 0x00, 0x38, 0x20, 0x20, 0x20, 0x38, + 0x00, 0x38, 0x20, 0x38, 0x00, 0x00, + 0x00, 0x38, 0x20, 0x38, 0x08, 0x38, + 0x38, 0x28, 0x38, 0x10, 0x38, 0x28, + 0x00, 0x38, 0x20, 0xa0, 0xa0, 0xf8, + 0x00, 0xe8, 0xa8, 0xa8, 0x28, 0x38, + 0x08, 0x3e, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, + 0x22, 0x3e, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +# elif defined(OLED_FONT_BMPLAIN) + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x0a, 0x1f, 0x0a, 0x1f, 0x0a, 0x00, + 0x2e, 0x2a, 0x6b, 0x2a, 0x3a, 0x00, + 0x0e, 0x2a, 0x1e, 0x08, 0x3c, 0x2a, + 0x3e, 0x2a, 0x2a, 0x22, 0x38, 0x08, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x22, 0x00, 0x00, 0x00, 0x00, + 0x22, 0x1c, 0x00, 0x00, 0x00, 0x00, + 0x15, 0x0e, 0x04, 0x0e, 0x15, 0x00, + 0x08, 0x08, 0x3e, 0x08, 0x08, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, + 0x3e, 0x22, 0x2a, 0x22, 0x3e, 0x00, + 0x04, 0x3e, 0x00, 0x00, 0x00, 0x00, + 0x3a, 0x2a, 0x2a, 0x2a, 0x2e, 0x00, + 0x2a, 0x2a, 0x2a, 0x2a, 0x3e, 0x00, + 0x0e, 0x08, 0x08, 0x08, 0x3e, 0x00, + 0x2e, 0x2a, 0x2a, 0x2a, 0x3a, 0x00, + 0x3e, 0x2a, 0x2a, 0x2a, 0x3a, 0x00, + 0x02, 0x02, 0x02, 0x02, 0x3e, 0x00, + 0x3e, 0x2a, 0x2a, 0x2a, 0x3e, 0x00, + 0x2e, 0x2a, 0x2a, 0x2a, 0x3e, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x14, 0x22, 0x00, 0x00, 0x00, + 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, + 0x22, 0x14, 0x08, 0x00, 0x00, 0x00, + 0x06, 0x02, 0x2a, 0x0a, 0x0e, 0x00, + 0x3e, 0x02, 0x3a, 0x2a, 0x3e, 0x00, + 0x3e, 0x12, 0x12, 0x12, 0x3e, 0x00, + 0x3e, 0x2a, 0x2a, 0x2a, 0x36, 0x00, + 0x3e, 0x22, 0x22, 0x22, 0x22, 0x00, + 0x3e, 0x22, 0x22, 0x22, 0x1c, 0x00, + 0x3e, 0x2a, 0x2a, 0x2a, 0x22, 0x00, + 0x3e, 0x0a, 0x0a, 0x0a, 0x02, 0x00, + 0x3e, 0x22, 0x2a, 0x2a, 0x3a, 0x00, + 0x3e, 0x08, 0x08, 0x08, 0x3e, 0x00, + 0x22, 0x3e, 0x22, 0x00, 0x00, 0x00, + 0x38, 0x20, 0x20, 0x20, 0x3e, 0x00, + 0x3e, 0x08, 0x08, 0x14, 0x22, 0x00, + 0x3e, 0x20, 0x20, 0x20, 0x20, 0x00, + 0x3e, 0x04, 0x38, 0x04, 0x3e, 0x00, + 0x3e, 0x04, 0x08, 0x10, 0x3e, 0x00, + 0x3e, 0x22, 0x22, 0x22, 0x3e, 0x00, + 0x3e, 0x0a, 0x0a, 0x0a, 0x0e, 0x00, + 0x3e, 0x22, 0x72, 0x22, 0x3e, 0x00, + 0x3e, 0x0a, 0x0a, 0x1a, 0x2e, 0x00, + 0x2e, 0x2a, 0x2a, 0x2a, 0x3a, 0x00, + 0x02, 0x02, 0x3e, 0x02, 0x02, 0x00, + 0x1e, 0x20, 0x20, 0x20, 0x1e, 0x00, + 0x0e, 0x10, 0x20, 0x10, 0x0e, 0x00, + 0x3e, 0x10, 0x0e, 0x10, 0x3e, 0x00, + 0x22, 0x14, 0x08, 0x14, 0x22, 0x00, + 0x02, 0x04, 0x38, 0x04, 0x02, 0x00, + 0x3a, 0x2a, 0x2a, 0x2a, 0x2e, 0x00, + 0x3e, 0x22, 0x00, 0x00, 0x00, 0x00, + 0x3f, 0x21, 0x3f, 0x00, 0x00, 0x00, + 0x22, 0x3e, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x1e, 0x3c, 0x1e, 0x0c, 0x00, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, + 0x1c, 0x3e, 0x3e, 0x3e, 0x1c, 0x00, + 0x3c, 0x24, 0x24, 0x24, 0x3c, 0x20, + 0x3e, 0x24, 0x24, 0x24, 0x3c, 0x00, + 0x3c, 0x24, 0x24, 0x24, 0x24, 0x00, + 0x3c, 0x24, 0x24, 0x24, 0x3e, 0x00, + 0x3c, 0x24, 0x34, 0x2c, 0x24, 0x00, + 0x08, 0x3e, 0x0a, 0x0a, 0x00, 0x00, + 0x1c, 0x54, 0x54, 0x54, 0x7c, 0x00, + 0x3e, 0x04, 0x04, 0x04, 0x3c, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3e, 0x08, 0x14, 0x22, 0x00, 0x00, + 0x02, 0x3e, 0x00, 0x00, 0x00, 0x00, + 0x3c, 0x04, 0x3c, 0x04, 0x3c, 0x00, + 0x3c, 0x04, 0x04, 0x04, 0x3c, 0x00, + 0x3c, 0x24, 0x24, 0x24, 0x3c, 0x00, + 0x7c, 0x24, 0x24, 0x24, 0x3c, 0x00, + 0x3c, 0x24, 0x24, 0x24, 0x7c, 0x00, + 0x3c, 0x04, 0x04, 0x04, 0x00, 0x00, + 0x24, 0x2c, 0x34, 0x24, 0x00, 0x00, + 0x04, 0x3e, 0x24, 0x24, 0x00, 0x00, + 0x3c, 0x20, 0x20, 0x20, 0x3c, 0x00, + 0x0c, 0x10, 0x20, 0x10, 0x0c, 0x00, + 0x3c, 0x20, 0x3c, 0x20, 0x3c, 0x00, + 0x24, 0x24, 0x18, 0x24, 0x24, 0x00, + 0x1c, 0x50, 0x50, 0x50, 0x7c, 0x00, + 0x24, 0x34, 0x2c, 0x24, 0x00, 0x00, + 0x08, 0x3e, 0x22, 0x00, 0x00, 0x00, + 0x1c, 0x22, 0x22, 0x22, 0x1c, 0x00, + 0x22, 0x3e, 0x08, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +# elif defined(OLED_FONT_CRACKERS) + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x5E, 0x06, 0x06, 0x00, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x20, 0x7C, 0x38, 0x38, 0x7C, 0x08, + 0x48, 0xFE, 0x64, 0x64, 0x00, 0x00, + 0x64, 0x60, 0x60, 0x18, 0x0C, 0x0C, + 0x74, 0x4A, 0x4A, 0x7E, 0x48, 0x00, + 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3C, 0x7E, 0x7E, 0x42, 0x00, 0x00, + 0x42, 0x7E, 0x7E, 0x3C, 0x00, 0x00, + 0x04, 0x0C, 0x04, 0x06, 0x0C, 0x04, + 0x10, 0x3C, 0x3C, 0x3C, 0x10, 0x00, + 0x00, 0x60, 0xE0, 0x00, 0x00, 0x00, + 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, + 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, + 0x60, 0x78, 0x78, 0x1E, 0x06, 0x00, + 0x3C, 0x3C, 0x7E, 0x42, 0x7E, 0x7E, + 0x04, 0x7E, 0x7E, 0x7E, 0x00, 0x00, + 0x76, 0x7A, 0x7E, 0x7E, 0x4C, 0x00, + 0x4A, 0x7E, 0x7E, 0x7C, 0x00, 0x00, + 0x0E, 0x08, 0x7E, 0x7E, 0x7E, 0x00, + 0x4E, 0x4E, 0x4E, 0x7A, 0x1A, 0x00, + 0x3C, 0x7E, 0x7E, 0x4A, 0x7A, 0x00, + 0x02, 0x02, 0x0A, 0x7E, 0x7E, 0x7E, + 0x7E, 0x7E, 0x7E, 0x4A, 0x7E, 0x00, + 0x0C, 0x4A, 0x7E, 0x7E, 0x3C, 0x00, + 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, + 0x66, 0xE6, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x3C, 0x7E, 0x7E, 0x62, 0x00, + 0x14, 0x14, 0x14, 0x00, 0x00, 0x00, + 0x62, 0x7E, 0x7E, 0x3C, 0x08, 0x00, + 0x02, 0x4A, 0x0E, 0x0E, 0x0C, 0x00, + 0x3C, 0x7E, 0x7E, 0x4A, 0x72, 0x30, + 0x7A, 0x4A, 0x7E, 0x7E, 0x7C, 0x00, + 0x7E, 0x7E, 0x7E, 0x4A, 0x24, 0x00, + 0x3C, 0x7E, 0x7E, 0x7E, 0x46, 0x00, + 0x7E, 0x7E, 0x7E, 0x62, 0x3C, 0x00, + 0x7E, 0x7E, 0x7E, 0x4A, 0x00, 0x00, + 0x7E, 0x7E, 0x7E, 0x0A, 0x00, 0x00, + 0x3C, 0x7E, 0x7E, 0x42, 0x62, 0x00, + 0x7E, 0x7E, 0x7E, 0x18, 0x7E, 0x00, + 0x7E, 0x7E, 0x7E, 0x00, 0x00, 0x00, + 0x40, 0x7E, 0x7E, 0x7E, 0x00, 0x00, + 0x7E, 0x7E, 0x7E, 0x3C, 0x66, 0x00, + 0x7E, 0x7E, 0x7E, 0x40, 0x00, 0x00, + 0x7E, 0x3E, 0x3E, 0x7C, 0x3E, 0x3E, + 0x7E, 0x3E, 0x7E, 0x7C, 0x7E, 0x00, + 0x3C, 0x3C, 0x7E, 0x62, 0x7E, 0x7E, + 0x7E, 0x7E, 0x7E, 0x22, 0x0C, 0x00, + 0x3C, 0x7E, 0x7E, 0x62, 0x7E, 0x7C, + 0x7E, 0x7E, 0x7E, 0x0A, 0x64, 0x00, + 0x4C, 0x4E, 0x4E, 0x7A, 0x1A, 0x00, + 0x02, 0x7E, 0x7E, 0x7E, 0x02, 0x00, + 0x7E, 0x60, 0x7E, 0x7E, 0x7E, 0x00, + 0x3E, 0x60, 0x7E, 0x7E, 0x3E, 0x00, + 0x7E, 0x7C, 0x7C, 0x3E, 0x7C, 0x7C, + 0x46, 0x7E, 0x08, 0x7E, 0x62, 0x62, + 0x5E, 0x5E, 0x5E, 0x70, 0x3E, 0x00, + 0x66, 0x7A, 0x7A, 0x5E, 0x66, 0x00, + 0x7E, 0x7E, 0x7E, 0x42, 0x00, 0x00, + 0x06, 0x1E, 0x1E, 0x78, 0x60, 0x00, + 0x42, 0x7E, 0x7E, 0x7E, 0x00, 0x00, + 0x0C, 0x06, 0x0C, 0x00, 0x00, 0x00, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, + 0x02, 0x06, 0x06, 0x04, 0x00, 0x00, + 0x78, 0x24, 0x7C, 0x7C, 0x78, 0x00, + 0x7C, 0x7C, 0x7C, 0x48, 0x20, 0x00, + 0x18, 0x7C, 0x7C, 0x7C, 0x4C, 0x00, + 0x20, 0x48, 0x7C, 0x7C, 0x7C, 0x00, + 0x18, 0x7C, 0x7C, 0x74, 0x4C, 0x00, + 0x78, 0x7C, 0x7C, 0x24, 0x00, 0x00, + 0x18, 0x7C, 0x7C, 0x44, 0x74, 0x00, + 0x7C, 0x7C, 0x7C, 0x08, 0x60, 0x00, + 0x7C, 0x7C, 0x7C, 0x00, 0x00, 0x00, + 0x40, 0x7C, 0x7C, 0x7C, 0x00, 0x00, + 0x7C, 0x7C, 0x7C, 0x20, 0x48, 0x00, + 0x7C, 0x7C, 0x7C, 0x40, 0x00, 0x00, + 0x7C, 0x3C, 0x3C, 0x78, 0x3C, 0x3C, + 0x7C, 0x7C, 0x7C, 0x04, 0x78, 0x00, + 0x18, 0x18, 0x7C, 0x44, 0x7C, 0x7C, + 0x7C, 0x7C, 0x7C, 0x24, 0x08, 0x00, + 0x18, 0x18, 0x7C, 0x44, 0x7C, 0x7C, + 0x7C, 0x7C, 0x7C, 0x04, 0x00, 0x00, + 0x5C, 0x7C, 0x7C, 0x74, 0x00, 0x00, + 0x08, 0x7C, 0x7C, 0x7C, 0x48, 0x00, + 0x7C, 0x60, 0x7C, 0x7C, 0x7C, 0x00, + 0x3C, 0x60, 0x7C, 0x7C, 0x3C, 0x00, + 0x7C, 0x78, 0x78, 0x3C, 0x78, 0x78, + 0x4C, 0x3C, 0x3C, 0x78, 0x64, 0x00, + 0x4C, 0x4C, 0x4C, 0x78, 0x3C, 0x00, + 0x5C, 0x74, 0x44, 0x5C, 0x74, 0x00, + 0x24, 0x7E, 0x42, 0x42, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x42, 0x7E, 0x24, 0x00, 0x00, 0x00, + 0x04, 0x06, 0x06, 0x02, 0x04, 0x06, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +# elif defined(OLED_FONT_EIN) + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, + 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, + 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, + 0x23, 0x13, 0x08, 0x64, 0x62, 0x00, + 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, + 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, + 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, + 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, + 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, + 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, + 0x00, 0x80, 0x70, 0x30, 0x00, 0x00, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, + 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, + 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, + 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, + 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, + 0x72, 0x49, 0x49, 0x49, 0x46, 0x00, + 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, + 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, + 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, + 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, + 0x41, 0x21, 0x11, 0x09, 0x07, 0x00, + 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, + 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, + 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, + 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, + 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, + 0x02, 0x01, 0x59, 0x09, 0x06, 0x00, + 0x00, 0x41, 0x5D, 0x59, 0x4E, 0x00, + 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, + 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, + 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, + 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, + 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, + 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, + 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, + 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, + 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, + 0x20, 0x40, 0x40, 0x3F, 0x00, 0x00, + 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, + 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, + 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, + 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, + 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, + 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, + 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, + 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, + 0x26, 0x49, 0x49, 0x49, 0x32, 0x00, + 0x01, 0x01, 0x7F, 0x01, 0x01, 0x00, + 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, + 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, + 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, + 0x63, 0x14, 0x08, 0x14, 0x63, 0x00, + 0x03, 0x04, 0x78, 0x04, 0x03, 0x00, + 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, + 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, + 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, + 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, + 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, + 0x00, 0x03, 0x07, 0x08, 0x00, 0x00, + 0x78, 0x14, 0x14, 0x78, 0x00, 0x00, + 0x7C, 0x54, 0x54, 0x28, 0x00, 0x00, + 0x38, 0x44, 0x44, 0x28, 0x00, 0x00, + 0x7C, 0x44, 0x44, 0x38, 0x00, 0x00, + 0x7C, 0x54, 0x54, 0x44, 0x00, 0x00, + 0x7C, 0x14, 0x14, 0x04, 0x00, 0x00, + 0x38, 0x44, 0x54, 0x34, 0x00, 0x00, + 0x7C, 0x10, 0x10, 0x7C, 0x00, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x40, 0x40, 0x3C, 0x00, 0x00, + 0x7C, 0x10, 0x28, 0x44, 0x00, 0x00, + 0x7C, 0x40, 0x40, 0x40, 0x00, 0x00, + 0x7C, 0x08, 0x70, 0x08, 0x7C, 0x00, + 0x7C, 0x08, 0x10, 0x7C, 0x00, 0x00, + 0x38, 0x44, 0x44, 0x38, 0x00, 0x00, + 0x7C, 0x14, 0x14, 0x08, 0x00, 0x00, + 0x38, 0x44, 0x24, 0x58, 0x00, 0x00, + 0x7C, 0x14, 0x34, 0x48, 0x00, 0x00, + 0x48, 0x54, 0x54, 0x24, 0x00, 0x00, + 0x04, 0x7C, 0x04, 0x00, 0x00, 0x00, + 0x3C, 0x40, 0x40, 0x3C, 0x00, 0x00, + 0x3C, 0x40, 0x20, 0x1C, 0x00, 0x00, + 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, + 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, + 0x0C, 0x10, 0x70, 0x10, 0x0C, 0x00, + 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, + 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, + 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0x00, 0x41, 0x36, 0x08, 0x00, 0x00, + 0x02, 0x01, 0x02, 0x04, 0x02, 0x00, + 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, +# elif defined(OLED_FONT_HISKYF21) + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x5C, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, + 0x28, 0x7C, 0x28, 0x7C, 0x28, 0x00, + 0x48, 0x54, 0x54, 0xFE, 0x54, 0x54, + 0x44, 0x20, 0x10, 0x08, 0x44, 0x00, + 0x28, 0x54, 0x54, 0x54, 0x74, 0x10, + 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x78, 0x84, 0x00, 0x00, 0x00, 0x00, + 0x84, 0x78, 0x00, 0x00, 0x00, 0x00, + 0x48, 0x30, 0x30, 0x48, 0x00, 0x00, + 0x10, 0x38, 0x10, 0x00, 0x00, 0x00, + 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x60, 0x10, 0x0C, 0x00, 0x00, 0x00, + 0x38, 0x44, 0x44, 0x44, 0x44, 0x38, + 0x08, 0x7C, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x54, 0x54, 0x54, 0x48, 0x00, + 0x44, 0x54, 0x54, 0x54, 0x28, 0x00, + 0x1C, 0x10, 0x10, 0x10, 0x7C, 0x00, + 0x4C, 0x54, 0x54, 0x54, 0x24, 0x00, + 0x38, 0x54, 0x54, 0x54, 0x54, 0x20, + 0x44, 0x24, 0x14, 0x0C, 0x00, 0x00, + 0x28, 0x54, 0x54, 0x54, 0x54, 0x28, + 0x08, 0x54, 0x54, 0x54, 0x54, 0x38, + 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x28, 0x44, 0x00, 0x00, 0x00, + 0x28, 0x28, 0x28, 0x28, 0x00, 0x00, + 0x44, 0x28, 0x10, 0x00, 0x00, 0x00, + 0x04, 0x54, 0x14, 0x14, 0x08, 0x00, + 0x38, 0x44, 0x5C, 0x54, 0x48, 0x00, + 0x60, 0x18, 0x14, 0x14, 0x18, 0x60, + 0x7C, 0x54, 0x54, 0x54, 0x58, 0x30, + 0x38, 0x44, 0x44, 0x44, 0x40, 0x00, + 0x7C, 0x44, 0x44, 0x44, 0x38, 0x00, + 0x7C, 0x54, 0x54, 0x54, 0x54, 0x40, + 0x7C, 0x14, 0x14, 0x14, 0x10, 0x00, + 0x38, 0x44, 0x44, 0x44, 0x70, 0x10, + 0x7C, 0x10, 0x10, 0x10, 0x10, 0x7C, + 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x40, 0x40, 0x40, 0x40, 0x3C, + 0x7C, 0x10, 0x10, 0x28, 0x44, 0x00, + 0x7C, 0x40, 0x40, 0x40, 0x00, 0x00, + 0x7C, 0x08, 0x10, 0x60, 0x10, 0x08, + 0x7C, 0x08, 0x10, 0x20, 0x7C, 0x00, + 0x38, 0x44, 0x44, 0x44, 0x44, 0x38, + 0x7C, 0x24, 0x24, 0x24, 0x18, 0x00, + 0x38, 0x44, 0x64, 0x44, 0x38, 0x00, + 0x7C, 0x14, 0x14, 0x14, 0x68, 0x00, + 0x48, 0x54, 0x54, 0x54, 0x54, 0x20, + 0x04, 0x04, 0x7C, 0x04, 0x04, 0x00, + 0x3C, 0x40, 0x40, 0x40, 0x3C, 0x00, + 0x0C, 0x30, 0x40, 0x30, 0x0C, 0x00, + 0x0C, 0x30, 0x40, 0x20, 0x1C, 0x20, + 0x74, 0x2C, 0x10, 0x28, 0x44, 0x00, + 0x04, 0x08, 0x70, 0x08, 0x04, 0x00, + 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, + 0xFC, 0x84, 0x00, 0x00, 0x00, 0x00, + 0x0C, 0x10, 0x60, 0x00, 0x00, 0x00, + 0x84, 0xFC, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x7F, 0x41, 0x7F, 0x00, 0x00, + 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, + 0x00, 0x7F, 0x41, 0x7F, 0x00, 0x00, + 0x60, 0x18, 0x14, 0x14, 0x18, 0x60, + 0x7C, 0x54, 0x54, 0x54, 0x58, 0x30, + 0x38, 0x44, 0x44, 0x44, 0x40, 0x00, + 0x7C, 0x44, 0x44, 0x44, 0x38, 0x00, + 0x7C, 0x54, 0x54, 0x54, 0x54, 0x40, + 0x7C, 0x14, 0x14, 0x14, 0x10, 0x00, + 0x38, 0x44, 0x44, 0x44, 0x70, 0x10, + 0x7C, 0x10, 0x10, 0x10, 0x10, 0x7C, + 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x40, 0x40, 0x40, 0x40, 0x3C, + 0x7C, 0x10, 0x10, 0x28, 0x44, 0x00, + 0x7C, 0x40, 0x40, 0x40, 0x00, 0x00, + 0x7C, 0x08, 0x10, 0x60, 0x10, 0x08, + 0x7C, 0x08, 0x10, 0x20, 0x7C, 0x00, + 0x38, 0x44, 0x44, 0x44, 0x44, 0x38, + 0x7C, 0x24, 0x24, 0x24, 0x18, 0x00, + 0x38, 0x44, 0x64, 0x44, 0x38, 0x00, + 0x7C, 0x14, 0x14, 0x14, 0x68, 0x00, + 0x48, 0x54, 0x54, 0x54, 0x54, 0x20, + 0x04, 0x04, 0x7C, 0x04, 0x04, 0x00, + 0x3C, 0x40, 0x40, 0x40, 0x3C, 0x00, + 0x0C, 0x30, 0x40, 0x30, 0x0C, 0x00, + 0x0C, 0x30, 0x40, 0x20, 0x1C, 0x20, + 0x74, 0x2C, 0x10, 0x28, 0x44, 0x00, + 0x04, 0x08, 0x70, 0x08, 0x04, 0x00, + 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, + 0x00, 0x7F, 0x41, 0x7F, 0x00, 0x00, + 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x7F, 0x41, 0x7F, 0x00, 0x00, + 0x00, 0x7F, 0x41, 0x7F, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +# elif defined(OLED_FONT_SUPER_DIGG) + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x58, 0x5C, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, + 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, + 0x5C, 0xFE, 0x54, 0xFE, 0x74, 0x00, + 0x03, 0x63, 0x38, 0x0C, 0x63, 0x60, + 0x70, 0x5C, 0x54, 0x74, 0x7C, 0x50, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x7C, 0x44, 0x00, 0x00, 0x00, + 0x44, 0x7C, 0x70, 0x00, 0x00, 0x00, + 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, + 0x10, 0x10, 0x70, 0x7C, 0x10, 0x00, + 0x40, 0xC0, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, + 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x7C, 0x03, 0x00, 0x00, 0x00, + 0x7C, 0x44, 0x44, 0x44, 0x7C, 0x1C, + 0x04, 0x04, 0x7C, 0x1C, 0x00, 0x00, + 0x74, 0x74, 0x54, 0x54, 0x5C, 0x00, + 0x44, 0x54, 0x54, 0x54, 0x7C, 0x70, + 0x1C, 0x10, 0x10, 0x7C, 0x7C, 0x00, + 0x5C, 0x5C, 0x54, 0x54, 0x74, 0x00, + 0x70, 0x7C, 0x54, 0x54, 0x74, 0x00, + 0x04, 0x14, 0x14, 0x14, 0x7C, 0x70, + 0x70, 0x5C, 0x54, 0x74, 0x7C, 0x00, + 0x5C, 0x54, 0x54, 0x54, 0x7C, 0x1C, + 0x50, 0x50, 0x00, 0x00, 0x00, 0x00, + 0x50, 0xD0, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x18, 0x24, 0x42, 0x00, 0x00, + 0x28, 0x28, 0x28, 0x28, 0x00, 0x00, + 0x42, 0x24, 0x18, 0x18, 0x00, 0x00, + 0x04, 0x14, 0x54, 0x54, 0x1C, 0x1C, + 0xF8, 0x04, 0x74, 0x74, 0x54, 0x54, + 0x70, 0x7C, 0x14, 0x14, 0x3C, 0x00, + 0x7C, 0x74, 0x54, 0x54, 0x7C, 0x00, + 0x70, 0x7C, 0x44, 0x44, 0x44, 0x44, + 0x70, 0x7C, 0x44, 0x44, 0x48, 0x70, + 0x70, 0x7C, 0x54, 0x54, 0x54, 0x44, + 0x70, 0x7C, 0x14, 0x14, 0x14, 0x04, + 0x70, 0x7C, 0x44, 0x44, 0x54, 0x74, + 0x70, 0x7C, 0x10, 0x10, 0x7C, 0x00, + 0x70, 0x7C, 0x00, 0x00, 0x00, 0x00, + 0x60, 0x40, 0x40, 0x40, 0x7C, 0x70, + 0x7C, 0x70, 0x10, 0x1C, 0x70, 0x00, + 0x70, 0x7C, 0x40, 0x40, 0x40, 0x60, + 0x70, 0x7C, 0x04, 0x04, 0x7C, 0x04, + 0x70, 0x7C, 0x04, 0x04, 0x04, 0x7C, + 0x70, 0x7C, 0x44, 0x44, 0x44, 0x7C, + 0x70, 0x7C, 0x24, 0x24, 0x3C, 0x00, + 0x7C, 0x44, 0x44, 0x44, 0x7C, 0x00, + 0x7C, 0x74, 0x14, 0x14, 0x3C, 0x00, + 0x5C, 0x5C, 0x54, 0x54, 0x74, 0x00, + 0x04, 0x04, 0x7C, 0x74, 0x04, 0x00, + 0x70, 0x7C, 0x40, 0x40, 0x40, 0x7C, + 0x70, 0x7C, 0x40, 0x40, 0x20, 0x1C, + 0x70, 0x7C, 0x40, 0x40, 0x7C, 0x40, + 0x70, 0x7C, 0x10, 0x10, 0x3C, 0x00, + 0x1C, 0x10, 0x70, 0x70, 0x1C, 0x00, + 0x74, 0x74, 0x54, 0x54, 0x5C, 0x00, + 0xF0, 0xFE, 0x82, 0x00, 0x00, 0x00, + 0x03, 0x7C, 0x70, 0x00, 0x00, 0x00, + 0x82, 0xFE, 0xF0, 0x00, 0x00, 0x00, + 0x04, 0x02, 0x01, 0x06, 0x04, 0x00, + 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x7C, 0x14, 0x14, 0x3C, 0x00, + 0x7C, 0x74, 0x54, 0x54, 0x7C, 0x00, + 0x70, 0x7C, 0x44, 0x44, 0x44, 0x44, + 0x70, 0x7C, 0x44, 0x44, 0x48, 0x70, + 0x70, 0x7C, 0x54, 0x54, 0x54, 0x44, + 0x70, 0x7C, 0x14, 0x14, 0x14, 0x04, + 0x70, 0x7C, 0x44, 0x44, 0x54, 0x74, + 0x70, 0x7C, 0x10, 0x10, 0x7C, 0x00, + 0x70, 0x7C, 0x00, 0x00, 0x00, 0x00, + 0x60, 0x40, 0x40, 0x40, 0x7C, 0x70, + 0x7C, 0x70, 0x10, 0x1C, 0x70, 0x00, + 0x70, 0x7C, 0x40, 0x40, 0x40, 0x60, + 0x70, 0x7C, 0x04, 0x04, 0x7C, 0x04, + 0x70, 0x7C, 0x04, 0x04, 0x04, 0x7C, + 0x70, 0x7C, 0x44, 0x44, 0x44, 0x7C, + 0x70, 0x7C, 0x24, 0x24, 0x3C, 0x00, + 0x7C, 0x44, 0x44, 0x44, 0x7C, 0x00, + 0x7C, 0x74, 0x14, 0x14, 0x3C, 0x00, + 0x5C, 0x5C, 0x54, 0x54, 0x74, 0x00, + 0x04, 0x04, 0x7C, 0x74, 0x04, 0x00, + 0x70, 0x7C, 0x40, 0x40, 0x40, 0x7C, + 0x70, 0x7C, 0x40, 0x40, 0x20, 0x1C, + 0x70, 0x7C, 0x40, 0x40, 0x7C, 0x40, + 0x70, 0x7C, 0x10, 0x10, 0x3C, 0x00, + 0x1C, 0x10, 0x70, 0x70, 0x1C, 0x00, + 0x74, 0x74, 0x54, 0x54, 0x5C, 0x00, + 0x10, 0xFE, 0xC2, 0x00, 0x00, 0x00, + 0x00, 0x44, 0x77, 0x00, 0x00, 0x00, + 0xC2, 0xFE, 0x10, 0x00, 0x00, 0x00, + 0x02, 0x01, 0x03, 0x04, 0x06, 0x02, + 0x3C, 0x22, 0x21, 0x22, 0x3C, 0x00, +#elif defined (OLED_FONT_ZXPIX) + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x12, 0x3F, 0x12, 0x12, 0x3F, 0x12, + 0x2E, 0x2A, 0x7F, 0x2A, 0x3A, 0x00, + 0x23, 0x13, 0x08, 0x04, 0x32, 0x31, + 0x10, 0x2A, 0x25, 0x2A, 0x10, 0x20, + 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x1E, 0x21, 0x00, 0x00, 0x00, 0x00, + 0x21, 0x1E, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x2A, 0x1C, 0x2A, 0x08, 0x08, + 0x08, 0x08, 0x3E, 0x08, 0x08, 0x08, + 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, + 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, + 0x1E, 0x31, 0x29, 0x25, 0x23, 0x1E, + 0x22, 0x21, 0x3F, 0x20, 0x20, 0x20, + 0x32, 0x29, 0x29, 0x29, 0x29, 0x26, + 0x12, 0x21, 0x21, 0x25, 0x25, 0x1A, + 0x18, 0x14, 0x12, 0x3F, 0x10, 0x10, + 0x17, 0x25, 0x25, 0x25, 0x25, 0x19, + 0x1E, 0x25, 0x25, 0x25, 0x25, 0x18, + 0x01, 0x01, 0x31, 0x09, 0x05, 0x03, + 0x1A, 0x25, 0x25, 0x25, 0x25, 0x1A, + 0x06, 0x29, 0x29, 0x29, 0x29, 0x1E, + 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x64, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x14, 0x22, 0x00, 0x00, 0x00, + 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, + 0x22, 0x14, 0x08, 0x00, 0x00, 0x00, + 0x02, 0x01, 0x01, 0x29, 0x05, 0x02, + 0x1E, 0x21, 0x2D, 0x2B, 0x2D, 0x0E, + 0x3E, 0x09, 0x09, 0x09, 0x09, 0x3E, + 0x3F, 0x25, 0x25, 0x25, 0x25, 0x1A, + 0x1E, 0x21, 0x21, 0x21, 0x21, 0x12, + 0x3F, 0x21, 0x21, 0x21, 0x12, 0x0C, + 0x3F, 0x25, 0x25, 0x25, 0x25, 0x21, + 0x3F, 0x05, 0x05, 0x05, 0x05, 0x01, + 0x1E, 0x21, 0x21, 0x21, 0x29, 0x1A, + 0x3F, 0x04, 0x04, 0x04, 0x04, 0x3F, + 0x21, 0x21, 0x3F, 0x21, 0x21, 0x21, + 0x10, 0x20, 0x20, 0x20, 0x20, 0x1F, + 0x3F, 0x04, 0x0C, 0x0A, 0x11, 0x20, + 0x3F, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x3F, 0x02, 0x04, 0x04, 0x02, 0x3F, + 0x3F, 0x02, 0x04, 0x08, 0x10, 0x3F, + 0x1E, 0x21, 0x21, 0x21, 0x21, 0x1E, + 0x3F, 0x09, 0x09, 0x09, 0x09, 0x06, + 0x1E, 0x21, 0x29, 0x31, 0x21, 0x1E, + 0x3F, 0x09, 0x09, 0x09, 0x19, 0x26, + 0x12, 0x25, 0x25, 0x25, 0x25, 0x18, + 0x01, 0x01, 0x01, 0x3F, 0x01, 0x01, + 0x1F, 0x20, 0x20, 0x20, 0x20, 0x1F, + 0x0F, 0x10, 0x20, 0x20, 0x10, 0x0F, + 0x1F, 0x20, 0x10, 0x10, 0x20, 0x1F, + 0x21, 0x12, 0x0C, 0x0C, 0x12, 0x21, + 0x01, 0x02, 0x0C, 0x38, 0x04, 0x02, + 0x21, 0x31, 0x29, 0x25, 0x23, 0x21, + 0x3F, 0x21, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, + 0x21, 0x3F, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x02, 0x3F, 0x02, 0x04, 0x00, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x30, 0x2A, 0x2A, 0x3C, 0x00, + 0x3F, 0x24, 0x24, 0x24, 0x18, 0x00, + 0x0C, 0x14, 0x22, 0x22, 0x00, 0x00, + 0x18, 0x24, 0x24, 0x24, 0x3F, 0x00, + 0x1C, 0x2C, 0x2A, 0x2A, 0x24, 0x00, + 0x3E, 0x05, 0x01, 0x00, 0x00, 0x00, + 0x18, 0x28, 0xA4, 0xA4, 0x7C, 0x00, + 0x3F, 0x04, 0x04, 0x0C, 0x30, 0x00, + 0x24, 0x3D, 0x20, 0x00, 0x00, 0x00, + 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, + 0x3F, 0x0C, 0x12, 0x20, 0x00, 0x00, + 0x1F, 0x20, 0x20, 0x00, 0x00, 0x00, + 0x3E, 0x02, 0x3C, 0x02, 0x3C, 0x00, + 0x3E, 0x02, 0x02, 0x02, 0x3C, 0x00, + 0x0C, 0x14, 0x22, 0x32, 0x0C, 0x00, + 0xFC, 0x24, 0x24, 0x24, 0x18, 0x00, + 0x18, 0x24, 0x24, 0x24, 0xFC, 0x80, + 0x3C, 0x04, 0x02, 0x02, 0x00, 0x00, + 0x24, 0x2C, 0x2A, 0x2A, 0x10, 0x00, + 0x02, 0x1F, 0x22, 0x20, 0x00, 0x00, + 0x1E, 0x20, 0x20, 0x20, 0x1E, 0x00, + 0x06, 0x18, 0x20, 0x18, 0x06, 0x00, + 0x1E, 0x30, 0x1C, 0x30, 0x0E, 0x00, + 0x22, 0x14, 0x08, 0x14, 0x22, 0x00, + 0x0C, 0x10, 0xA0, 0xA0, 0x7C, 0x00, + 0x22, 0x32, 0x2A, 0x26, 0x22, 0x22, + 0x0C, 0x3F, 0x21, 0x00, 0x00, 0x00, + 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x21, 0x3F, 0x0C, 0x00, 0x00, 0x00, + 0x02, 0x01, 0x02, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +# else // default font + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, + 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, + 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, + 0x23, 0x13, 0x08, 0x64, 0x62, 0x00, + 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, + 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, + 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, + 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, + 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, + 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, + 0x00, 0x80, 0x70, 0x30, 0x00, 0x00, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, + 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, + 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, + 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, + 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, + 0x72, 0x49, 0x49, 0x49, 0x46, 0x00, + 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, + 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, + 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, + 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, + 0x41, 0x21, 0x11, 0x09, 0x07, 0x00, + 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, + 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, + 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, + 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, + 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, + 0x02, 0x01, 0x59, 0x09, 0x06, 0x00, + 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00, + 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, + 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, + 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, + 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, + 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, + 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, + 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, + 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, + 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, + 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, + 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, + 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, + 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, + 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, + 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, + 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, + 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, + 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, + 0x26, 0x49, 0x49, 0x49, 0x32, 0x00, + 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00, + 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, + 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, + 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, + 0x63, 0x14, 0x08, 0x14, 0x63, 0x00, + 0x03, 0x04, 0x78, 0x04, 0x03, 0x00, + 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, + 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, + 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, + 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, + 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, + 0x00, 0x03, 0x07, 0x08, 0x00, 0x00, + 0x20, 0x54, 0x54, 0x78, 0x40, 0x00, + 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00, + 0x38, 0x44, 0x44, 0x44, 0x28, 0x00, + 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00, + 0x38, 0x54, 0x54, 0x54, 0x18, 0x00, + 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00, + 0x18, 0x24, 0x24, 0x1C, 0x78, 0x00, + 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, + 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, + 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, + 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, + 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, + 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00, + 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, + 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, + 0x7C, 0x18, 0x24, 0x24, 0x18, 0x00, + 0x18, 0x24, 0x24, 0x18, 0x7C, 0x00, + 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, + 0x48, 0x54, 0x54, 0x54, 0x24, 0x00, + 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00, + 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, + 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, + 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, + 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, + 0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00, + 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, + 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, + 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0x00, 0x41, 0x36, 0x08, 0x00, 0x00, + 0x02, 0x01, 0x02, 0x04, 0x02, 0x00, + 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, +# endif + +// top Logo section +# if defined(OLED_LOGO_GMK_BAD) + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0xC0, 0xE0, 0xF0, 0xF0, 0x70, + 0x38, 0x38, 0x38, 0x78, 0x70, 0xF0, + 0xE0, 0xE0, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x80, 0xF0, 0xF8, + 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, + 0x80, 0xE0, 0xF8, 0xF8, 0xF8, 0xF8, + 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0xF8, 0xF8, 0xF8, 0x38, 0x00, + 0x80, 0xE0, 0xF0, 0xF8, 0x78, 0x38, + 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0xF8, 0xF8, 0xF8, 0x38, 0x38, + 0x38, 0xF8, 0xF0, 0xF0, 0xE0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x80, 0xFC, 0xFC, + 0xFC, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +# elif defined(OLED_LOGO_HUE_MANITEE) 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - #elif defined(OLED_LOGO_HUE_MANITEE) - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x80 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x90, 0x70, 0xE8, 0xA8, 0xE4, 0xC4, 0xC4, 0xA0, 0xE4, 0xB0, 0xDC, 0xE4, @@ -671,120 +962,13 @@ static const unsigned char font[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, // 0x90 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC, - 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00, - 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, - 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +# elif defined(OLED_LOGO_CORNE) 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, // 0xA0 - 0xFC, 0xF6, 0xF7, 0xEF, 0xFF, 0x87, - 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, - 0x1F, 0x1F, 0x1F, 0xFF, 0xFF, 0xFF, - 0xFF, 0x07, 0x1F, 0x1F, 0x19, 0x15, - 0xF7, 0x16, 0x1A, 0x1B, 0x16, 0x07, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0C, 0x0C, 0x33, 0x33, - 0x33, 0x33, 0x33, 0x33, 0xC0, 0xC0, - 0x00, 0x00, 0x03, 0x03, 0xFF, 0xFF, - 0x03, 0x03, 0x00, 0x00, 0xC0, 0xC0, - 0x00, 0x00, 0x00, 0xFC, 0xFC, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0xFC, - 0xFC, 0x00, 0x00, 0x00, 0xFC, 0xFC, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, - 0xFF, 0xFF, 0x30, 0x30, 0xCC, 0xCC, // 0xB0 - 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, - 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00, - 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, - 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 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, // 0xC0 - 0x03, 0x07, 0x07, 0x07, 0x07, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, - 0x03, 0x00, 0x00, 0x02, 0x04, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, // 0xD0 - 0x03, 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, // 0xDF - 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, - 0x00, 0x14, 0x08, 0x14, 0x00, 0x00, - 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, - 0x00, 0x22, 0x1C, 0x41, 0x3E, 0x00, - 0x00, 0x00, 0x00, 0x30, 0x18, 0x0C, - 0x06, 0x0C, 0x18, 0x30, 0x00, 0x00, - 0x00, 0x00, 0x06, 0x06, 0x06, 0x0C, - 0x18, 0x30, 0x66, 0x66, 0x66, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x0C, 0x7E, - 0x7F, 0x7E, 0x0C, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x77, 0x77, 0x77, 0x00, - 0x77, 0x77, 0x77, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xE7, 0xA5, 0xFF, 0x24, - 0x24, 0xFF, 0xA5, 0xE7, 0x00, 0x00, - 0x00, 0x00, 0x1C, 0x22, 0xC9, 0xD1, - 0xC9, 0x22, 0x1C, 0x00, 0x00, 0x00, - 0x00, 0x10, 0x02, 0x38, 0xFC, 0xED, - 0xFC, 0x38, 0x02, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x3E, 0x4A, 0x4F, - 0x4A, 0x3E, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x60, 0x6A, 0x64, - 0x6A, 0x60, 0x40, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x42, 0x69, 0x65, 0x65, - 0x65, 0x69, 0x42, 0x04, 0x00, 0x00, - 0x00, 0x00, 0x1C, 0x14, 0x1C, 0x08, - 0x18, 0x08, 0x18, 0x00, 0x00, 0x00, - 0x00, 0x70, 0xC8, 0xEE, 0xF9, 0x70, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - #elif defined(OLED_LOGO_CORNE) - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x80 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xF8, 0x18, 0x00, 0xC0, @@ -800,11 +984,80 @@ static const unsigned char font[] PROGMEM = { 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0xE0, 0xE0, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, // 0x90 + 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +# elif defined(OLED_LOGO_LOOSE) + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, + 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0x00, + 0xFC, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, + 0x02, 0xF9, 0x01, 0x01, 0x05, 0x09, + 0x11, 0x22, 0x06, 0xFE, 0xFE, 0xFE, + 0xFE, 0xFE, 0xFE, 0xFE, 0x46, 0x46, + 0x44, 0x44, 0x45, 0x44, 0x29, 0x28, + 0x2A, 0x28, 0x11, 0x13, 0x05, 0x07, + 0x05, 0x07, 0x05, 0x07, 0x05, 0x07, + 0xE5, 0xE7, 0xE5, 0x07, 0x05, 0x07, + 0x05, 0x07, 0x05, 0x07, 0x05, 0x07, + 0x85, 0xC7, 0xE5, 0xE7, 0xE5, 0xE7, + 0xE5, 0xE7, 0xE5, 0xC7, 0x85, 0x07, + 0x85, 0xC7, 0xE5, 0xE7, 0xE5, 0xE7, + 0xE5, 0xE7, 0xE5, 0xC7, 0x85, 0x07, + 0x85, 0xC7, 0xE5, 0xE7, 0xE5, 0xE7, + 0xE5, 0xE7, 0xE5, 0xE7, 0xE5, 0x07, + 0xE5, 0xE7, 0xE5, 0xE7, 0xE5, 0xE7, + 0xE5, 0xE7, 0xE5, 0xE7, 0xE5, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +# elif defined(OLED_LOGO_SKEEB) + 0xC0, 0x20, 0x10, 0x08, 0x04, 0x02, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x03, 0x07, 0x0F, 0x1F, + 0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x01, + 0xFF, 0xFF, 0x01, 0x01, 0xFF, 0xFF, + 0x01, 0x01, 0xFF, 0xFF, 0x19, 0x19, + 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, + 0x01, 0x01, 0xFF, 0xFF, 0x81, 0x81, + 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, + 0x19, 0x19, 0xFF, 0xFF, 0xF9, 0xF9, + 0xF9, 0xF9, 0x01, 0x01, 0xF9, 0xF9, + 0xF9, 0xF9, 0xFF, 0xFF, 0x99, 0x99, + 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, + 0xF9, 0xF9, 0xFF, 0xFF, 0x19, 0x19, + 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, + 0x67, 0x67, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, + 0x1F, 0x0F, 0x07, 0x03, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x02, 0x04, 0x08, 0x10, 0x20, 0xC0, +# else + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x40, 0x40, 0xF0, 0xF8, 0xF8, + 0xFF, 0x38, 0xFF, 0xF8, 0xF8, 0x3F, + 0xF8, 0xF8, 0xFF, 0x38, 0xFF, 0xF8, + 0xF8, 0xF0, 0x40, 0x40, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, + 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, + 0x80, 0xC0, 0xC0, 0x00, 0xC0, 0xC0, + 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, + 0xC0, 0xC0, 0xC0, 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, +#endif + +// First icon section 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC, 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00, 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, @@ -813,10 +1066,57 @@ static const unsigned char font[] PROGMEM = { 0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE, 0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00, + 0x3E, 0x4A, 0x4F, 0x4A, 0x3E, 0x00, + 0x18, 0x3C, 0x7C, 0x3A, 0x7D, 0x24, + 0x14, 0x36, 0x00, 0x36, 0x77, 0x77, + +// middle logo section +# if defined(OLED_LOGO_GMK_BAD) + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, + 0xFF, 0xFF, 0xFF, 0xC1, 0x80, 0x00, + 0x00, 0x38, 0x38, 0xB8, 0xB8, 0xF9, + 0xF9, 0xF8, 0x38, 0x00, 0x00, 0x00, + 0x00, 0xC0, 0xF8, 0xFF, 0xFF, 0x1F, + 0x01, 0x3F, 0xFF, 0xFF, 0xF0, 0xFE, + 0x7F, 0x0F, 0x03, 0xFF, 0xFF, 0xFF, + 0xFF, 0x00, 0x00, 0x00, 0x00, 0x80, + 0xFF, 0xFF, 0xFF, 0x3F, 0x1E, 0x7F, + 0xFF, 0xFF, 0xF3, 0xC1, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0xFF, 0xFF, 0xFF, 0x3F, 0x1C, 0x1C, + 0x9C, 0xFF, 0xFF, 0xF3, 0xE1, 0x00, + 0x00, 0x00, 0x00, 0xF0, 0xFC, 0xFE, + 0xFF, 0x0F, 0x07, 0x07, 0x8E, 0xFF, + 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, + 0x00, 0xF0, 0xFC, 0xFE, 0xFF, 0x8F, + 0x07, 0x07, 0x8E, 0xFF, 0xFF, 0xFF, + 0x3F, 0x00, 0x00, 0x00, 0x00, 0x80, + 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, +# elif defined(OLED_LOGO_HUE_MANITEE) + 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, + 0xFC, 0xF6, 0xF7, 0xEF, 0xFF, 0x87, + 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, + 0x1F, 0x1F, 0x1F, 0xFF, 0xFF, 0xFF, + 0xFF, 0x07, 0x1F, 0x1F, 0x19, 0x15, + 0xF7, 0x16, 0x1A, 0x1B, 0x16, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0C, 0x0C, 0x33, 0x33, + 0x33, 0x33, 0x33, 0x33, 0xC0, 0xC0, + 0x00, 0x00, 0x03, 0x03, 0xFF, 0xFF, + 0x03, 0x03, 0x00, 0x00, 0xC0, 0xC0, + 0x00, 0x00, 0x00, 0xFC, 0xFC, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0xFC, + 0xFC, 0x00, 0x00, 0x00, 0xFC, 0xFC, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x30, 0x30, 0xCC, 0xCC, + 0x03, 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, // 0xA0 +# elif defined(OLED_LOGO_CORNE) + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFC, 0xFE, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, @@ -832,11 +1132,80 @@ static const unsigned char font[] PROGMEM = { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, - 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, // 0xB0 + 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x9D, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x9D, 0xDF, 0xDF, 0xDF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +# elif defined(OLED_LOGO_LOOSE) + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xE3, 0xC1, 0xC1, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x00, 0xFF, 0x00, 0x00, 0x80, 0x00, + 0x1C, 0x3E, 0x7F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x22, 0x22, + 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, + 0x22, 0x22, 0x22, 0x14, 0x14, 0x14, + 0x14, 0x14, 0x08, 0x08, 0x00, 0x00, + 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0xBE, + 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0x81, 0xBD, + 0x81, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, + 0x8F, 0x9F, 0x9C, 0x9C, 0x9C, 0x9C, + 0x9C, 0x9C, 0x9C, 0xFC, 0xF8, 0x00, + 0xFF, 0xFF, 0xFF, 0x9C, 0x9C, 0x9C, + 0x9C, 0x9C, 0x9C, 0x80, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +# elif defined(OLED_LOGO_SKEEB) + 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, + 0x0F, 0x0F, 0x0F, 0x0F, 0x08, 0x08, + 0x0F, 0x0F, 0x0E, 0x0E, 0x0F, 0x0F, + 0x08, 0x08, 0x0F, 0x0F, 0x08, 0x08, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x08, 0x08, 0x0F, 0x0F, 0x09, 0x09, + 0x09, 0x09, 0xF9, 0xF9, 0x09, 0x09, + 0x08, 0x08, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x08, 0x08, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x09, 0x09, + 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, + 0x09, 0x09, 0x0F, 0x0F, 0x08, 0x08, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x08, 0x08, 0x0F, 0x0F, 0x0F, 0x0F, + 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, +# else + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x49, 0x49, 0x49, 0xFF, 0xFF, 0xFF, + 0xFF, 0xE0, 0xDF, 0xBF, 0xBF, 0x00, + 0xBF, 0xBF, 0xDF, 0xE0, 0xFF, 0xFF, + 0xFF, 0xFF, 0x49, 0x49, 0x49, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, + 0x60, 0x60, 0xE0, 0xBF, 0x1F, 0x00, + 0x7F, 0x7F, 0x07, 0x1E, 0x38, 0x1E, + 0x07, 0x7F, 0x7F, 0x00, 0x7F, 0x7F, + 0x0E, 0x1F, 0x3B, 0x71, 0x60, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, + 0x0C, 0x0C, 0x0C, 0x00, 0x7E, 0x7E, + 0x00, 0x7F, 0x7E, 0x03, 0x03, 0x00, + 0x7F, 0x7E, 0x03, 0x03, 0x7E, 0x7E, + 0x03, 0x03, 0x7F, 0x7E, 0x00, 0x0F, + 0x3E, 0x70, 0x3C, 0x06, 0x3C, 0x70, + 0x3E, 0x0F, 0x00, 0x32, 0x7B, 0x49, + 0x49, 0x3F, 0x7E, 0x00, 0x7F, 0x7E, + 0x03, 0x03, 0x00, 0x1E, 0x3F, 0x69, + 0x69, 0x6F, 0x26, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +# endif + +// second icon section 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00, 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, @@ -845,10 +1214,57 @@ static const unsigned char font[] PROGMEM = { 0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00, 0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F, 0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00, + 0x00, 0x44, 0x28, 0xFF, 0x5A, 0x24, + 0xF0, 0xFE, 0xF1, 0x91, 0xF6, 0xF0, + 0xF0, 0xFC, 0xF2, 0x92, 0xFC, 0xF0, + +// bottom logo section +# if defined(OLED_LOGO_GMK_BAD) + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x03, 0x03, 0x03, 0x07, + 0x07, 0x07, 0x07, 0x03, 0x03, 0x03, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x07, 0x07, 0x07, 0x01, 0x00, + 0x00, 0x00, 0x07, 0x07, 0x07, 0x01, + 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, + 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x07, 0x07, 0x07, 0x06, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, + 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, + 0x07, 0x07, 0x07, 0x03, 0x07, 0x07, + 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x07, 0x07, 0x07, + 0x07, 0x03, 0x07, 0x07, 0x07, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, + 0x07, 0x07, 0x01, 0x00, 0x00, 0x00, +# elif defined(OLED_LOGO_HUE_MANITEE) + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x03, 0x07, 0x07, 0x07, 0x07, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, + 0x03, 0x00, 0x00, 0x02, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xC0 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +# elif defined(OLED_LOGO_CORNE) + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x1F, 0x3F, 0x3F, 0x3F, 0x3F, 0x1F, 0x1F, 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x3F, @@ -864,380 +1280,57 @@ static const unsigned char font[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, - 0x07, 0x00, 0x00, 0x00, 0x01, 0x03, // 0xD0 + 0x07, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 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, // 0xDF - 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, - 0x00, 0x14, 0x08, 0x14, 0x00, 0x00, - 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, - 0x00, 0x22, 0x1C, 0x41, 0x3E, 0x00, - 0x00, 0x00, 0x00, 0x30, 0x18, 0x0C, - 0x06, 0x0C, 0x18, 0x30, 0x00, 0x00, - 0x00, 0x00, 0x06, 0x06, 0x06, 0x0C, - 0x18, 0x30, 0x66, 0x66, 0x66, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x0C, 0x7E, - 0x7F, 0x7E, 0x0C, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x77, 0x77, 0x77, 0x00, - 0x77, 0x77, 0x77, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xE7, 0xA5, 0xFF, 0x24, - 0x24, 0xFF, 0xA5, 0xE7, 0x00, 0x00, - 0x00, 0x00, 0x1C, 0x22, 0xC9, 0xD1, - 0xC9, 0x22, 0x1C, 0x00, 0x00, 0x00, - 0x00, 0x10, 0x02, 0x38, 0xFC, 0xED, - 0xFC, 0x38, 0x02, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x3E, 0x4A, 0x4F, - 0x4A, 0x3E, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x60, 0x6A, 0x64, - 0x6A, 0x60, 0x40, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x42, 0x69, 0x65, 0x65, - 0x65, 0x69, 0x42, 0x04, 0x00, 0x00, - 0x00, 0x00, 0x1C, 0x14, 0x1C, 0x08, - 0x18, 0x08, 0x18, 0x00, 0x00, 0x00, - 0x00, 0x70, 0xC8, 0xEE, 0xF9, 0x70, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - -#elif defined(OLED_LOGO_GOTHAM) // see /keyboards/crkbd/keymaps/gotham/oled.c - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x80 - 0x00, 0x00, 0xC0, 0x60, 0x30, 0x18, - 0xF8, 0x18, 0x00, 0xC0, 0x70, 0x1C, - 0x06, 0x03, 0x01, 0x01, 0x01, 0x01, - 0x01, 0xC3, 0x7E, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x08, 0x08, 0x08, 0x00, - 0x00, 0x08, 0x08, 0x08, 0x00, 0x1C, - 0x22, 0x41, 0x41, 0x41, 0x22, 0x1C, - 0x00, 0x08, 0x08, 0x08, 0x00, 0x00, - 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x20, 0x20, 0xF8, - 0x0C, 0x04, 0xE7, 0xE4, 0xE4, 0x07, - 0x04, 0xE4, 0xE7, 0xE4, 0x04, 0x07, - 0xE4, 0xE4, 0xE7, 0x04, 0x0C, 0xF8, - 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, - 0x00, 0x14, 0x08, 0x14, 0x00, 0x00, // 0x90 - 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, - 0x00, 0x22, 0x1C, 0x41, 0x3E, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, - 0x18, 0x0C, 0x06, 0x0C, 0x18, 0x30, - 0x77, 0x77, 0x77, 0x00, 0x77, 0x77, - 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x3E, 0x4A, 0x4F, - 0x4A, 0x3E, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x08, 0x00, 0x00, 0x60, - 0x70, 0x3E, 0x1F, 0x19, 0x18, 0x0C, - 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xF8, 0x0C, 0x06, 0x07, 0xFC, // 0xA0 - 0x00, 0xFF, 0x01, 0x00, 0x00, 0x00, - 0xFF, 0x80, 0xFF, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xF0, 0x1C, - 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1C, 0x22, 0x41, 0x00, - 0x00, 0x1C, 0x22, 0x00, 0x00, 0x1C, - 0x3E, 0x7F, 0x63, 0x41, 0x22, 0x1C, - 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x49, 0x49, 0xFF, - 0x00, 0x00, 0x0F, 0x1F, 0x3F, 0x38, - 0x30, 0xFF, 0xFF, 0xFF, 0x30, 0x38, - 0x3F, 0x1F, 0x0F, 0x00, 0x00, 0xFF, - 0x49, 0x49, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x60, 0x6A, 0x64, - 0x6A, 0x60, 0x40, 0x00, 0x00, 0x00, // 0xB0 - 0x00, 0x04, 0x42, 0x69, 0x65, 0x65, - 0x65, 0x69, 0x42, 0x04, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, - 0x0C, 0x18, 0x30, 0x66, 0x66, 0x66, - 0x00, 0x00, 0xFC, 0x24, 0x24, 0xFC, - 0x24, 0x24, 0xFC, 0x24, 0x24, 0xFC, - 0x24, 0x24, 0xFC, 0x24, 0x24, 0xFC, - 0x24, 0x24, 0xFC, 0x24, 0x24, 0xFC, - 0x24, 0x24, 0xFC, 0x00, 0x00, 0x00, - 0xF0, 0x90, 0x90, 0xF0, 0x90, 0x90, - 0xF0, 0x98, 0x9C, 0xF2, 0x22, 0x21, - 0xE1, 0x01, 0x01, 0x01, 0xF1, 0x91, - 0x91, 0xFA, 0x4C, 0x4C, 0xF8, 0x48, - 0x48, 0xF8, 0x48, 0x48, 0xF8, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x03, 0x0E, 0x18, 0x30, 0x21, // 0xC0 - 0x21, 0x31, 0x18, 0x10, 0x30, 0x20, - 0x60, 0x41, 0x60, 0x20, 0x30, 0x18, - 0x30, 0x60, 0x40, 0x40, 0x47, 0x4C, - 0x48, 0x68, 0x38, 0x1C, 0x0F, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, - 0x22, 0x41, 0x63, 0x7F, 0x3E, 0x1C, - 0x00, 0x00, 0x22, 0x1C, 0x00, 0x00, - 0x41, 0x22, 0x1C, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x0F, - 0x18, 0x10, 0x70, 0x10, 0x10, 0x70, - 0x10, 0x13, 0x73, 0x13, 0x10, 0x70, - 0x10, 0x10, 0x70, 0x10, 0x18, 0x0F, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1C, 0x22, 0xC9, 0xD1, - 0xC9, 0x22, 0x1C, 0x00, 0x00, 0x00, // 0xD0 - 0x00, 0x10, 0x02, 0x38, 0xFC, 0xED, - 0xFC, 0x38, 0x02, 0x10, 0x00, 0x00, - 0x08, 0x0C, 0x7E, 0x7F, 0x7E, 0x0C, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0F, 0x09, 0x09, 0x09, - 0x0F, 0x09, 0x09, 0x0F, 0x09, 0x09, - 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, - 0x09, 0x0F, 0x09, 0x09, 0x0F, 0x09, - 0x09, 0x09, 0x0F, 0x00, 0x00, 0x00, - 0x07, 0x04, 0x04, 0x07, 0x04, 0x04, - 0x07, 0x04, 0x04, 0x0F, 0x09, 0x09, - 0x0F, 0x00, 0x00, 0x00, 0x07, 0x04, - 0x04, 0x07, 0x02, 0x02, 0x03, 0x02, - 0x02, 0x03, 0x02, 0x02, 0x03, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDF - 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, - 0x00, 0x14, 0x08, 0x14, 0x00, 0x00, - 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, - 0x00, 0x22, 0x1C, 0x41, 0x3E, 0x00, - 0x00, 0x00, 0x00, 0x30, 0x18, 0x0C, - 0x06, 0x0C, 0x18, 0x30, 0x00, 0x00, - 0x00, 0x00, 0x06, 0x06, 0x06, 0x0C, - 0x18, 0x30, 0x66, 0x66, 0x66, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x0C, 0x7E, - 0x7F, 0x7E, 0x0C, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x77, 0x77, 0x77, 0x00, - 0x77, 0x77, 0x77, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xE7, 0xA5, 0xFF, 0x24, - 0x24, 0xFF, 0xA5, 0xE7, 0x00, 0x00, - 0x00, 0x00, 0x1C, 0x22, 0xC9, 0xD1, - 0xC9, 0x22, 0x1C, 0x00, 0x00, 0x00, - 0x00, 0x10, 0x02, 0x38, 0xFC, 0xED, - 0xFC, 0x38, 0x02, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x3E, 0x4A, 0x4F, - 0x4A, 0x3E, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x60, 0x6A, 0x64, - 0x6A, 0x60, 0x40, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x42, 0x69, 0x65, 0x65, - 0x65, 0x69, 0x42, 0x04, 0x00, 0x00, - 0x00, 0x00, 0x1C, 0x14, 0x1C, 0x08, - 0x18, 0x08, 0x18, 0x00, 0x00, 0x00, - 0x00, 0x70, 0xC8, 0xEE, 0xF9, 0x70, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - -#elif defined(OLED_LOGO_SCIFI) - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, - 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0x60, - 0x70, 0x30, 0x38, 0x18, 0x0C, 0x0C, - 0x1E, 0x0C, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, - 0xC0, 0xE0, 0xF0, 0x38, 0x1C, 0x0E, - 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, - 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +# elif defined(OLED_LOGO_LOOSE) + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, + 0x1F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, + 0x20, 0x47, 0x48, 0x50, 0x40, 0x41, + 0x42, 0x24, 0x30, 0x3F, 0x3F, 0x3F, + 0x3F, 0x3F, 0x3F, 0x3F, 0x31, 0x31, + 0x11, 0x51, 0x11, 0x11, 0x4A, 0x0A, + 0x2A, 0x0A, 0x44, 0x64, 0x50, 0x70, + 0x50, 0x70, 0x50, 0x70, 0x50, 0x70, + 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, + 0x53, 0x73, 0x53, 0x73, 0x53, 0x70, + 0x50, 0x71, 0x53, 0x73, 0x53, 0x73, + 0x53, 0x73, 0x53, 0x71, 0x50, 0x70, + 0x50, 0x71, 0x53, 0x73, 0x53, 0x73, + 0x53, 0x73, 0x53, 0x71, 0x50, 0x70, + 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, + 0x53, 0x73, 0x53, 0x73, 0x51, 0x70, + 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, + 0x53, 0x73, 0x53, 0x73, 0x53, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +# elif defined(OLED_LOGO_SKEEB) + 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0xFF, + 0x08, 0x08, 0x0F, 0x0F, 0x08, 0x08, + 0x03, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, - 0xC0, 0x60, 0x60, 0x30, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC, - 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00, - 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, - 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00, - 0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B, - 0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00, - 0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE, - 0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, - 0x30, 0x30, 0x70, 0x78, 0x78, 0x7C, - 0x7C, 0x7E, 0x3E, 0x3F, 0x3F, 0x3B, - 0x3B, 0x39, 0x39, 0x38, 0x38, 0x38, - 0x38, 0x38, 0x38, 0x38, 0x3C, 0x38, - 0x18, 0x8F, 0xDF, 0xF8, 0x7C, 0xBE, - 0xDF, 0xF7, 0xFB, 0xFD, 0xFE, 0xEF, - 0x73, 0x3B, 0x1B, 0x1F, 0xEF, 0xF7, - 0xFF, 0x7E, 0x6F, 0x6F, 0x6F, 0x6F, - 0x6D, 0xBD, 0xE1, 0xF9, 0x3F, 0x3F, - 0x39, 0x79, 0x79, 0x7D, 0xED, 0xED, - 0xCD, 0xC7, 0xC7, 0x87, 0xC7, 0xE3, - 0xE0, 0xF8, 0x7E, 0x3F, 0x37, 0x33, - 0x3B, 0x1B, 0x19, 0x19, 0x0D, 0xED, - 0xFF, 0xBF, 0xC7, 0xE7, 0xE3, 0xF0, - 0x7C, 0xDE, 0xE7, 0xFB, 0x3E, 0x3F, - 0xFC, 0xE0, 0xF8, 0x3E, 0xCF, 0xF3, - 0xFC, 0x3F, 0x1F, 0x1F, 0x3C, 0x7E, - 0x76, 0xF3, 0xE3, 0x81, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, - 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00, - 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, - 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00, - 0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20, - 0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00, - 0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F, - 0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x20, 0x10, 0x08, 0x04, 0x03, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, + 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xF8, + 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, + 0xF8, 0xF8, 0xF0, 0xE0, 0xC0, 0x80, + 0x01, 0x02, 0xFC, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x20, 0x30, 0x18, 0x1E, - 0x0F, 0x03, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x03, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0xE1, 0x79, 0x3E, 0x1F, - 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, - 0x02, 0x06, 0x04, 0x08, 0x18, 0x10, - 0x30, 0x20, 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, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, - 0x00, 0x14, 0x08, 0x14, 0x00, 0x00, - 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, - 0x00, 0x22, 0x1C, 0x41, 0x3E, 0x00, - 0x00, 0x00, 0x00, 0x30, 0x18, 0x0C, - 0x06, 0x0C, 0x18, 0x30, 0x00, 0x00, - 0x00, 0x00, 0x06, 0x06, 0x06, 0x0C, - 0x18, 0x30, 0x66, 0x66, 0x66, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x0C, 0x7E, - 0x7F, 0x7E, 0x0C, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x77, 0x77, 0x77, 0x00, - 0x77, 0x77, 0x77, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xE7, 0xA5, 0xFF, 0x24, - 0x24, 0xFF, 0xA5, 0xE7, 0x00, 0x00, - 0x00, 0x00, 0x1C, 0x22, 0xC9, 0xD1, - 0xC9, 0x22, 0x1C, 0x00, 0x00, 0x00, - 0x00, 0x10, 0x02, 0x38, 0xFC, 0xED, - 0xFC, 0x38, 0x02, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x3E, 0x4A, 0x4F, - 0x4A, 0x3E, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x60, 0x6A, 0x64, - 0x6A, 0x60, 0x40, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x42, 0x69, 0x65, 0x65, - 0x65, 0x69, 0x42, 0x04, 0x00, 0x00, - 0x00, 0x00, 0x1C, 0x14, 0x1C, 0x08, - 0x18, 0x08, 0x18, 0x00, 0x00, 0x00, - 0x00, 0x70, 0xC8, 0xEE, 0xF9, 0x70, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 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, #else - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x80 - 0x40, 0x40, 0x40, 0xF0, 0xF8, 0xF8, - 0xFF, 0x38, 0xFF, 0xF8, 0xF8, 0x3F, - 0xF8, 0xF8, 0xFF, 0x38, 0xFF, 0xF8, - 0xF8, 0xF0, 0x40, 0x40, 0x40, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, - 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, - 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, - 0x80, 0xC0, 0xC0, 0x00, 0xC0, 0xC0, - 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, - 0xC0, 0xC0, 0xC0, 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, // 0x90 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC, - 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00, - 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, - 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00, - 0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B, - 0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00, - 0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE, - 0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xA0 - 0x49, 0x49, 0x49, 0xFF, 0xFF, 0xFF, - 0xFF, 0xE0, 0xDF, 0xBF, 0xBF, 0x00, - 0xBF, 0xBF, 0xDF, 0xE0, 0xFF, 0xFF, - 0xFF, 0xFF, 0x49, 0x49, 0x49, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, - 0x60, 0x60, 0xE0, 0xBF, 0x1F, 0x00, - 0x7F, 0x7F, 0x07, 0x1E, 0x38, 0x1E, - 0x07, 0x7F, 0x7F, 0x00, 0x7F, 0x7F, - 0x0E, 0x1F, 0x3B, 0x71, 0x60, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, - 0x0C, 0x0C, 0x0C, 0x00, 0x7E, 0x7E, - 0x00, 0x7F, 0x7E, 0x03, 0x03, 0x00, - 0x7F, 0x7E, 0x03, 0x03, 0x7E, 0x7E, - 0x03, 0x03, 0x7F, 0x7E, 0x00, 0x0F, - 0x3E, 0x70, 0x3C, 0x06, 0x3C, 0x70, - 0x3E, 0x0F, 0x00, 0x32, 0x7B, 0x49, // 0xB0 - 0x49, 0x3F, 0x7E, 0x00, 0x7F, 0x7E, - 0x03, 0x03, 0x00, 0x1E, 0x3F, 0x69, - 0x69, 0x6F, 0x26, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, - 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00, - 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, - 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00, - 0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20, - 0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00, - 0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F, - 0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xC0 0x01, 0x01, 0x01, 0x07, 0x0F, 0x0F, 0x7F, 0x0F, 0x7F, 0x0F, 0x0F, 0x7E, 0x0F, 0x0F, 0x7F, 0x0F, 0x7F, 0x0F, @@ -1253,22 +1346,27 @@ static const unsigned char font[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD0 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDF +#endif + +// third icon section + 0x1F, 0x05, 0x00, 0x02, 0x1F, 0x00, + 0x1F, 0x05, 0x00, 0x1D, 0x17, 0x00, + 0x1F, 0x05, 0x00, 0x15, 0x1F, 0x00, + 0x1F, 0x05, 0x00, 0x07, 0x1C, 0x00, + 0x1F, 0x05, 0x00, 0x17, 0x1D, 0x00, + 0x1F, 0x05, 0x00, 0x1F, 0x1D, 0x00, + 0x1F, 0x05, 0x00, 0x01, 0x1F, 0x00, + 0x1F, 0x05, 0x00, 0x1F, 0x1F, 0x00, + 0x1F, 0x05, 0x00, 0x07, 0x1F, 0x00, + 0x1F, 0x05, 0x00, 0x70, 0x77, 0x00, + 0x1F, 0x05, 0x00, 0x00, 0x77, 0x00, + +// fourth icon section 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, 0x00, 0x14, 0x08, 0x14, 0x00, 0x00, 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, @@ -1296,11 +1394,11 @@ static const unsigned char font[] PROGMEM = { 0x00, 0x00, 0x1C, 0x14, 0x1C, 0x08, 0x18, 0x08, 0x18, 0x00, 0x00, 0x00, 0x00, 0x70, 0xC8, 0xEE, 0xF9, 0x70, + 0x1F, 0x05, 0x00, 0x10, 0x77, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - -#endif }; +// clang-format on +#endif diff --git a/users/drashna/drashna_transport.c b/users/drashna/drashna_transport.c deleted file mode 100644 index 9df11c9bdfd0..000000000000 --- a/users/drashna/drashna_transport.c +++ /dev/null @@ -1,603 +0,0 @@ -/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include <string.h> -#include <stddef.h> - -#include "matrix.h" -#include QMK_KEYBOARD_H - -#define ROWS_PER_HAND (MATRIX_ROWS / 2) -#define SYNC_TIMER_OFFSET 2 - -#ifdef RGBLIGHT_ENABLE -# include "rgblight.h" -#endif - -#ifdef BACKLIGHT_ENABLE -# include "backlight.h" -#endif - -#ifdef ENCODER_ENABLE -# include "encoder.h" -static pin_t encoders_pad[] = ENCODERS_PAD_A; -# define NUMBER_OF_ENCODERS (sizeof(encoders_pad) / sizeof(pin_t)) -#endif - -#ifdef POINTING_DEVICE_ENABLE -static uint16_t device_cpi = 0; -static int8_t split_mouse_x = 0, split_mouse_y = 0; -#endif - -#ifdef OLED_DRIVER_ENABLE -# include "oled_driver.h" -#endif - -#if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT) -# include "led_matrix.h" -#endif -#if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) -# include "rgb_matrix.h" -#endif - -#if defined(USE_I2C) - -# include "i2c_master.h" -# include "i2c_slave.h" - -typedef struct _I2C_slave_buffer_t { -# ifndef DISABLE_SYNC_TIMER - uint32_t sync_timer; -# endif -# ifdef SPLIT_TRANSPORT_MIRROR - matrix_row_t mmatrix[ROWS_PER_HAND]; -# endif - matrix_row_t smatrix[ROWS_PER_HAND]; -# ifdef SPLIT_MODS_ENABLE - uint8_t real_mods; - uint8_t weak_mods; -# ifndef NO_ACTION_ONESHOT - uint8_t oneshot_mods; -# endif -# endif -# ifdef BACKLIGHT_ENABLE - uint8_t backlight_level; -# endif -# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) - rgblight_syncinfo_t rgblight_sync; -# endif -# ifdef ENCODER_ENABLE - uint8_t encoder_state[NUMBER_OF_ENCODERS]; -# endif -# ifdef WPM_ENABLE - uint8_t current_wpm; -# endif -# if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT) - led_eeconfig_t led_matrix; - bool led_suspend_state; -# endif -# if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) - rgb_config_t rgb_matrix; - bool rgb_suspend_state; -# endif - int8_t mouse_x; - int8_t mouse_y; - uint16_t device_cpi; - bool oled_on; - layer_state_t t_layer_state; - layer_state_t t_default_layer_state; -} __attribute__((packed)) I2C_slave_buffer_t; - -static I2C_slave_buffer_t *const i2c_buffer = (I2C_slave_buffer_t *)i2c_slave_reg; - -# define I2C_BACKLIGHT_START offsetof(I2C_slave_buffer_t, backlight_level) -# define I2C_RGB_START offsetof(I2C_slave_buffer_t, rgblight_sync) -# define I2C_KEYMAP_MASTER_START offsetof(I2C_slave_buffer_t, mmatrix) -# define I2C_KEYMAP_SLAVE_START offsetof(I2C_slave_buffer_t, smatrix) -# define I2C_SYNC_TIME_START offsetof(I2C_slave_buffer_t, sync_timer) -# define I2C_REAL_MODS_START offsetof(I2C_slave_buffer_t, real_mods) -# define I2C_WEAK_MODS_START offsetof(I2C_slave_buffer_t, weak_mods) -# define I2C_ONESHOT_MODS_START offsetof(I2C_slave_buffer_t, oneshot_mods) -# define I2C_ENCODER_START offsetof(I2C_slave_buffer_t, encoder_state) -# define I2C_WPM_START offsetof(I2C_slave_buffer_t, current_wpm) -# define I2C_MOUSE_X_START offsetof(I2C_slave_buffer_t, mouse_x) -# define I2C_MOUSE_Y_START offsetof(I2C_slave_buffer_t, mouse_y) -# define I2C_MOUSE_DPI_START offsetof(I2C_slave_buffer_t, device_cpi) -# define I2C_OLED_ON_START offsetof(I2C_slave_buffer_t, oled_on) -# define I2C_LAYER_STATE_START offsetof(I2C_slave_buffer_t, t_layer_state) -# define I2C_DEFAULT_LAYER_STATE_START offsetof(I2C_slave_buffer_t, t_default_layer_state) -# define I2C_LED_MATRIX_START offsetof(I2C_slave_buffer_t, led_matrix) -# define I2C_LED_SUSPEND_START offsetof(I2C_slave_buffer_t, led_suspend_state) -# define I2C_RGB_MATRIX_START offsetof(I2C_slave_buffer_t, rgb_matrix) -# define I2C_RGB_SUSPEND_START offsetof(I2C_slave_buffer_t, rgb_suspend_state) - -# define TIMEOUT 100 - -# ifndef SLAVE_I2C_ADDRESS -# define SLAVE_I2C_ADDRESS 0x32 -# endif - -// Get rows from other half over i2c -bool transport_master(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { - i2c_readReg(SLAVE_I2C_ADDRESS, I2C_KEYMAP_SLAVE_START, (void *)slave_matrix, sizeof(i2c_buffer->smatrix), TIMEOUT); -# ifdef SPLIT_TRANSPORT_MIRROR - i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_KEYMAP_MASTER_START, (void *)master_matrix, sizeof(i2c_buffer->mmatrix), TIMEOUT); -# endif - // write backlight info -# ifdef BACKLIGHT_ENABLE - uint8_t level = is_backlight_enabled() ? get_backlight_level() : 0; - if (level != i2c_buffer->backlight_level) { - if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_BACKLIGHT_START, (void *)&level, sizeof(level), TIMEOUT) >= 0) { - i2c_buffer->backlight_level = level; - } - } -# endif - -# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) - if (rgblight_get_change_flags()) { - rgblight_syncinfo_t rgblight_sync; - rgblight_get_syncinfo(&rgblight_sync); - if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_RGB_START, (void *)&rgblight_sync, sizeof(rgblight_sync), TIMEOUT) >= 0) { - rgblight_clear_change_flags(); - } - } -# endif - -# ifdef ENCODER_ENABLE - i2c_readReg(SLAVE_I2C_ADDRESS, I2C_ENCODER_START, (void *)i2c_buffer->encoder_state, sizeof(i2c_buffer->encoder_state), TIMEOUT); - encoder_update_raw(i2c_buffer->encoder_state); -# endif - -# ifdef WPM_ENABLE - uint8_t current_wpm = get_current_wpm(); - if (current_wpm != i2c_buffer->current_wpm) { - if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_WPM_START, (void *)¤t_wpm, sizeof(current_wpm), TIMEOUT) >= 0) { - i2c_buffer->current_wpm = current_wpm; - } - } -# endif - -# ifdef POINTING_DEVICE_ENABLE - if (is_keyboard_left()) { - report_mouse_t temp_report = pointing_device_get_report(); - i2c_readReg(SLAVE_I2C_ADDRESS, I2C_MOUSE_X_START, (void *)&i2c_buffer->mouse_x, sizeof(i2c_buffer->mouse_x), TIMEOUT); - temp_report.x = i2c_buffer->mouse_x; - i2c_readReg(SLAVE_I2C_ADDRESS, I2C_MOUSE_Y_START, (void *)&i2c_buffer->mouse_y, sizeof(i2c_buffer->mouse_y), TIMEOUT); - temp_report.y = i2c_buffer->mouse_y; - pointing_device_set_report(temp_report); - - if (device_cpi != i2c_buffer->device_cpi) { - if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_MOUSE_DPI_START, (void *)&device_cpi, sizeof(device_cpi), TIMEOUT) >= 0) { - i2c_buffer->device_cpi = device_cpi - } - } - } -# endif - -# ifdef SPLIT_MODS_ENABLE - uint8_t real_mods = get_mods(); - if (real_mods != i2c_buffer->real_mods) { - if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_REAL_MODS_START, (void *)&real_mods, sizeof(real_mods), TIMEOUT) >= 0) { - i2c_buffer->real_mods = real_mods; - } - } - - uint8_t weak_mods = get_weak_mods(); - if (weak_mods != i2c_buffer->weak_mods) { - if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_WEAK_MODS_START, (void *)&weak_mods, sizeof(weak_mods), TIMEOUT) >= 0) { - i2c_buffer->weak_mods = weak_mods; - } - } - -# ifndef NO_ACTION_ONESHOT - uint8_t oneshot_mods = get_oneshot_mods(); - if (oneshot_mods != i2c_buffer->oneshot_mods) { - if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_ONESHOT_MODS_START, (void *)&oneshot_mods, sizeof(oneshot_mods), TIMEOUT) >= 0) { - i2c_buffer->oneshot_mods = oneshot_mods; - } - } -# endif -# endif - - if (layer_state != i2c_buffer->t_layer_state) { - if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_LAYER_STATE_START, (void *)&layer_state, sizeof(layer_state), TIMEOUT) >= 0) { - i2c_buffer->t_layer_state = layer_state; - } - } - - if (default_layer_state != i2c_buffer->t_default_layer_state) { - if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_DEFAULT_LAYER_STATE_START, (void *)&default_layer_state, sizeof(default_layer_state), TIMEOUT) >= 0) { - i2c_buffer->t_default_layer_state = default_layer_state; - } - } - -# ifdef OLED_DRIVER_ENABLE - bool is_oled_on = is_oled_on(); - if (is_oled_on != i2c_buffer->oled_on) { - if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_LAYER_STATE_START, (void *)&is_oled_on, sizeof(is_oled_on), TIMEOUT) >= 0) { - i2c_buffer->oled_on = is_oled_on; - } - } -# endif - -# if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT) - i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_LED_MATRIX_START, (void *)led_matrix_eeconfig, sizeof(i2c_buffer->led_matrix), TIMEOUT); - bool suspend_state = led_matrix_get_suspend_state(); - i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_LED_SUSPEND_START, (void *)suspend_state, sizeof(i2c_buffer->led_suspend_state), TIMEOUT); -# endif -# if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) - i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_RGB_MATRIX_START, (void *)rgb_matrix_config, sizeof(i2c_buffer->rgb_matrix), TIMEOUT); - bool suspend_state = rgb_matrix_get_suspend_state(); - i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_RGB_SUSPEND_START, (void *)suspend_state, sizeof(i2c_buffer->rgb_suspend_state), TIMEOUT); -# endif - -# ifndef DISABLE_SYNC_TIMER - i2c_buffer->sync_timer = sync_timer_read32() + SYNC_TIMER_OFFSET; - i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_SYNC_TIME_START, (void *)&i2c_buffer->sync_timer, sizeof(i2c_buffer->sync_timer), TIMEOUT); -# endif - - return true; -} - -void transport_slave(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { -# ifndef DISABLE_SYNC_TIMER - sync_timer_update(i2c_buffer->sync_timer); -# endif - // Copy matrix to I2C buffer - memcpy((void *)i2c_buffer->smatrix, (void *)slave_matrix, sizeof(i2c_buffer->smatrix)); -# ifdef SPLIT_TRANSPORT_MIRROR - memcpy((void *)master_matrix, (void *)i2c_buffer->mmatrix, sizeof(i2c_buffer->mmatrix)); -# endif - -// Read Backlight Info -# ifdef BACKLIGHT_ENABLE - backlight_set(i2c_buffer->backlight_level); -# endif - -# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) - // Update the RGB with the new data - if (i2c_buffer->rgblight_sync.status.change_flags != 0) { - rgblight_update_sync(&i2c_buffer->rgblight_sync, false); - i2c_buffer->rgblight_sync.status.change_flags = 0; - } -# endif - -# ifdef ENCODER_ENABLE - encoder_state_raw(i2c_buffer->encoder_state); -# endif - -# ifdef WPM_ENABLE - set_current_wpm(i2c_buffer->current_wpm); -# endif - -# ifdef POINTING_DEVICE_ENABLE - if (!is_keyboard_left()) { - static uint16_t cpi; - if (cpi != i2c_buffer->device_cpi) { - cpi = i2c_buffer->device_cpi; - pmw_set_cpi(cpi); - } - i2c_buffer->mouse_x = split_mouse_x; - i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_MOUSE_X_START, (void *)&i2c_buffer->mouse_x, sizeof(i2c_buffer->mouse_x), TIMEOUT); - i2c_buffer->mouse_y = split_mouse_y; - i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_MOUSE_Y_START, (void *)&i2c_buffer->mouse_y, sizeof(i2c_buffer->mouse_y), TIMEOUT); - } - -# endif - -# ifdef SPLIT_MODS_ENABLE - set_mods(i2c_buffer->real_mods); - set_weak_mods(i2c_buffer->weak_mods); -# ifndef NO_ACTION_ONESHOT - set_oneshot_mods(i2c_buffer->oneshot_mods); -# endif -# endif - - if (layer_state != i2c_buffer->t_layer_state) { - layer_state = i2c_buffer->t_layer_state; - } - if (default_layer_state != i2c_buffer->t_default_layer_state) { - default_layer_state = i2c_buffer->t_default_layer_state; - } - -# ifdef OLED_DRIVER_ENABLE - if (i2c_buffer->oled_on) { - oled_on(); - } else { - oled_off(); - } -# endif - -# if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT) - memcpy((void *)i2c_buffer->led_matrix, (void *)led_matrix_eeconfig, sizeof(i2c_buffer->led_matrix)); - led_matrix_set_suspend_state(i2c_buffer->led_suspend_state); -# endif -# if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) - memcpy((void *)i2c_buffer->rgb_matrix, (void *)rgb_matrix_config, sizeof(i2c_buffer->rgb_matrix)); - rgb_matrix_set_suspend_state(i2c_buffer->rgb_suspend_state); -# endif -} - -void transport_master_init(void) { i2c_init(); } - -void transport_slave_init(void) { i2c_slave_init(SLAVE_I2C_ADDRESS); } - -#else // USE_SERIAL - -# include "serial.h" - -typedef struct _Serial_s2m_buffer_t { - // TODO: if MATRIX_COLS > 8 change to uint8_t packed_matrix[] for pack/unpack - matrix_row_t smatrix[ROWS_PER_HAND]; -# ifdef ENCODER_ENABLE - uint8_t encoder_state[NUMBER_OF_ENCODERS]; -# endif - int8_t mouse_x; - int8_t mouse_y; -} __attribute__((packed)) Serial_s2m_buffer_t; - -typedef struct _Serial_m2s_buffer_t { -# ifdef SPLIT_MODS_ENABLE - uint8_t real_mods; - uint8_t weak_mods; -# ifndef NO_ACTION_ONESHOT - uint8_t oneshot_mods; -# endif -# endif -# ifndef DISABLE_SYNC_TIMER - uint32_t sync_timer; -# endif -# ifdef SPLIT_TRANSPORT_MIRROR - matrix_row_t mmatrix[ROWS_PER_HAND]; -# endif -# ifdef BACKLIGHT_ENABLE - uint8_t backlight_level; -# endif -# ifdef WPM_ENABLE - uint8_t current_wpm; -# endif - uint16_t device_cpi; - bool oled_on; - layer_state_t t_layer_state; - layer_state_t t_default_layer_state; -# if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT) - led_eeconfig_t led_matrix; - bool led_suspend_state; -# endif -# if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) - rgb_config_t rgb_matrix; - bool rgb_suspend_state; -# endif -} __attribute__((packed)) Serial_m2s_buffer_t; - -# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) -// When MCUs on both sides drive their respective RGB LED chains, -// it is necessary to synchronize, so it is necessary to communicate RGB -// information. In that case, define RGBLIGHT_SPLIT with info on the number -// of LEDs on each half. -// -// Otherwise, if the master side MCU drives both sides RGB LED chains, -// there is no need to communicate. - -typedef struct _Serial_rgblight_t { - rgblight_syncinfo_t rgblight_sync; -} Serial_rgblight_t; - -volatile Serial_rgblight_t serial_rgblight = {}; -uint8_t volatile status_rgblight = 0; -# endif - -volatile Serial_s2m_buffer_t serial_s2m_buffer = {}; -volatile Serial_m2s_buffer_t serial_m2s_buffer = {}; -uint8_t volatile status0 = 0; - -enum serial_transaction_id { - GET_SLAVE_MATRIX = 0, -# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) - PUT_RGBLIGHT, -# endif -}; - -SSTD_t transactions[] = { - [GET_SLAVE_MATRIX] = - { - (uint8_t *)&status0, - sizeof(serial_m2s_buffer), - (uint8_t *)&serial_m2s_buffer, - sizeof(serial_s2m_buffer), - (uint8_t *)&serial_s2m_buffer, - }, -# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) - [PUT_RGBLIGHT] = - { - (uint8_t *)&status_rgblight, sizeof(serial_rgblight), (uint8_t *)&serial_rgblight, 0, NULL // no slave to master transfer - }, -# endif -}; - -void transport_master_init(void) { soft_serial_initiator_init(transactions, TID_LIMIT(transactions)); } - -void transport_slave_init(void) { soft_serial_target_init(transactions, TID_LIMIT(transactions)); } - -# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) - -// rgblight synchronization information communication. - -void transport_rgblight_master(void) { - if (rgblight_get_change_flags()) { - rgblight_get_syncinfo((rgblight_syncinfo_t *)&serial_rgblight.rgblight_sync); - if (soft_serial_transaction(PUT_RGBLIGHT) == TRANSACTION_END) { - rgblight_clear_change_flags(); - } - } -} - -void transport_rgblight_slave(void) { - if (status_rgblight == TRANSACTION_ACCEPTED) { - rgblight_update_sync((rgblight_syncinfo_t *)&serial_rgblight.rgblight_sync, false); - status_rgblight = TRANSACTION_END; - } -} - -# else -# define transport_rgblight_master() -# define transport_rgblight_slave() -# endif - -bool transport_master(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { -# ifndef SERIAL_USE_MULTI_TRANSACTION - if (soft_serial_transaction() != TRANSACTION_END) { - return false; - } -# else - transport_rgblight_master(); - if (soft_serial_transaction(GET_SLAVE_MATRIX) != TRANSACTION_END) { - return false; - } -# endif - - // TODO: if MATRIX_COLS > 8 change to unpack() - for (int i = 0; i < ROWS_PER_HAND; ++i) { - slave_matrix[i] = serial_s2m_buffer.smatrix[i]; -# ifdef SPLIT_TRANSPORT_MIRROR - serial_m2s_buffer.mmatrix[i] = master_matrix[i]; -# endif - } - -# ifdef BACKLIGHT_ENABLE - // Write backlight level for slave to read - serial_m2s_buffer.backlight_level = is_backlight_enabled() ? get_backlight_level() : 0; -# endif - -# ifdef ENCODER_ENABLE - encoder_update_raw((uint8_t *)serial_s2m_buffer.encoder_state); -# endif - -# ifdef WPM_ENABLE - // Write wpm to slave - serial_m2s_buffer.current_wpm = get_current_wpm(); -# endif - -# ifdef SPLIT_MODS_ENABLE - serial_m2s_buffer.real_mods = get_mods(); - serial_m2s_buffer.weak_mods = get_weak_mods(); -# ifndef NO_ACTION_ONESHOT - serial_m2s_buffer.oneshot_mods = get_oneshot_mods(); -# endif -# endif - -# ifdef POINTING_DEVICE_ENABLE - if (is_keyboard_left()) { - report_mouse_t temp_report = pointing_device_get_report(); - temp_report.x = serial_s2m_buffer.mouse_x; - temp_report.y = serial_s2m_buffer.mouse_y; - pointing_device_set_report(temp_report); - serial_m2s_buffer.device_cpi = device_cpi; - } -# endif - - serial_m2s_buffer.t_layer_state = layer_state; - serial_m2s_buffer.t_default_layer_state = default_layer_state; -# ifdef OLED_DRIVER_ENABLE - serial_m2s_buffer.oled_on = is_oled_on(); -# endif - -# if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT) - serial_m2s_buffer.led_matrix = led_matrix_eeconfig; - serial_m2s_buffer.led_suspend_state = led_matrix_get_suspend_state(); -# endif -# if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) - serial_m2s_buffer.rgb_matrix = rgb_matrix_config; - serial_m2s_buffer.rgb_suspend_state = rgb_matrix_get_suspend_state(); -# endif - -# ifndef DISABLE_SYNC_TIMER - serial_m2s_buffer.sync_timer = sync_timer_read32() + SYNC_TIMER_OFFSET; -# endif - return true; -} - -void transport_slave(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { - transport_rgblight_slave(); -# ifndef DISABLE_SYNC_TIMER - sync_timer_update(serial_m2s_buffer.sync_timer); -# endif - - // TODO: if MATRIX_COLS > 8 change to pack() - for (int i = 0; i < ROWS_PER_HAND; ++i) { - serial_s2m_buffer.smatrix[i] = slave_matrix[i]; -# ifdef SPLIT_TRANSPORT_MIRROR - master_matrix[i] = serial_m2s_buffer.mmatrix[i]; -# endif - } - -# ifdef BACKLIGHT_ENABLE - backlight_set(serial_m2s_buffer.backlight_level); -# endif - -# ifdef ENCODER_ENABLE - encoder_state_raw((uint8_t *)serial_s2m_buffer.encoder_state); -# endif - -# ifdef WPM_ENABLE - set_current_wpm(serial_m2s_buffer.current_wpm); -# endif - -# ifdef SPLIT_MODS_ENABLE - set_mods(serial_m2s_buffer.real_mods); - set_weak_mods(serial_m2s_buffer.weak_mods); -# ifndef NO_ACTION_ONESHOT - set_oneshot_mods(serial_m2s_buffer.oneshot_mods); -# endif -# endif - -# ifdef POINTING_DEVICE_ENABLE - if (!is_keyboard_left()) { - static uint16_t cpi; - if (cpi != serial_m2s_buffer.device_cpi) { - cpi = serial_m2s_buffer.device_cpi; - pmw_set_cpi(cpi); - } - serial_s2m_buffer.mouse_x = split_mouse_x; - serial_s2m_buffer.mouse_y = split_mouse_y; - } -# endif - - if (layer_state != serial_m2s_buffer.t_layer_state) { - layer_state = serial_m2s_buffer.t_layer_state; - } - if (default_layer_state != serial_m2s_buffer.t_default_layer_state) { - default_layer_state = serial_m2s_buffer.t_default_layer_state; - } -# ifdef OLED_DRIVER_ENABLE - if (serial_m2s_buffer.oled_on) { - oled_on(); - } else { - oled_off(); - } -# endif - -# if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT) - led_matrix_eeconfig = serial_m2s_buffer.led_matrix; - led_matrix_set_suspend_state(serial_m2s_buffer.led_suspend_state); -# endif -# if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) - rgb_matrix_config = serial_m2s_buffer.rgb_matrix; - rgb_matrix_set_suspend_state(serial_m2s_buffer.rgb_suspend_state); -# endif -} - -#endif diff --git a/users/drashna/oled_stuff.c b/users/drashna/oled_stuff.c index 98e467d9303a..2c92ac6e905f 100644 --- a/users/drashna/oled_stuff.c +++ b/users/drashna/oled_stuff.c @@ -15,54 +15,69 @@ */ #include "drashna.h" +#ifdef CUSTOM_UNICODE_ENABLE +# include "process_unicode_common.h" +#endif +#include <string.h> + +extern bool host_driver_disabled; #ifndef KEYLOGGER_LENGTH // # ifdef OLED_DISPLAY_128X64 -# define KEYLOGGER_LENGTH ((int)(OLED_DISPLAY_HEIGHT / OLED_FONT_WIDTH)) +# define KEYLOGGER_LENGTH ((uint8_t)(OLED_DISPLAY_HEIGHT / OLED_FONT_WIDTH)) // # else // # define KEYLOGGER_LENGTH (uint8_t *(OLED_DISPLAY_WIDTH / OLED_FONT_HEIGHT)) // # endif #endif uint32_t oled_timer = 0; -static char keylog_str[KEYLOGGER_LENGTH + 1] = {"\n"}; +static char keylog_str[KEYLOGGER_LENGTH + 1] = {0}; static uint16_t log_timer = 0; // clang-format off -static const char PROGMEM code_to_name[0xFF] = { +static const char PROGMEM code_to_name[256] = { // 0 1 2 3 4 5 6 7 8 9 A B c D E F ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', // 0x 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2', // 1x '3', '4', '5', '6', '7', '8', '9', '0', 20, 19, 27, 26, 22, '-', '=', '[', // 2x - ']','\\', '#', ';','\'', '`', ',', '.', '/', 128, ' ', ' ', ' ', ' ', ' ', ' ', // 3x - ' ', ' ', ' ', ' ', ' ', ' ', 'P', 'S', ' ', ' ', ' ', ' ', 16, ' ', ' ', ' ', // 4x - ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 5x - ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 6x + ']','\\', '#', ';','\'', '`', ',', '.', '/', 128,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA, // 3x + 0xDB,0xDC,0xDD,0xDE,0XDF,0xFB,'P', 'S', 19, ' ', 17, 30, 16, 16, 31, 26, // 4x + 27, 25, 24, 'N', '/', '*', '-', '+', 23, '1', '2', '3', '4', '5', '6', '7', // 5x + '8', '9', '0', '.','\\', 'A', 0, '=', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 6x ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 7x ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 8x ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 9x - ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Ax + ' ', ' ', ' ', ' ', ' ', 0, ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Ax ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Bx ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Cx ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Dx - 'C', 'S', 'A', 'C', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Ex - ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' // Fx + 'C', 'S', 'A', 'C', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 24, 26, 24, // Ex + 25,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 24, 25, 27, 26, ' ', ' ', ' ' // Fx }; // clang-format on -void add_keylog(uint16_t keycode) { +void add_keylog(uint16_t keycode, keyrecord_t *record) { if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX) || (keycode >= QK_MODS && keycode <= QK_MODS_MAX)) { - keycode = keycode & 0xFF; - } else if (keycode > 0xFF) { - keycode = 0; + if (((keycode & 0xFF) == KC_BSPC) && mod_config(get_mods() | get_oneshot_mods()) & MOD_MASK_CTRL) { + memset(keylog_str, ' ', sizeof(keylog_str) - 1); + return; + } + if (record->tap.count) { + keycode &= 0xFF; + } else if (keycode > 0xFF) { + return; + } + } + if (keycode > 0xFF) { + return; } - for (uint8_t i = (KEYLOGGER_LENGTH - 1); i > 0; --i) { - keylog_str[i] = keylog_str[i - 1]; + for (uint8_t i = 1; i < KEYLOGGER_LENGTH; i++) { + keylog_str[i - 1] = keylog_str[i]; } if (keycode < (sizeof(code_to_name) / sizeof(char))) { - keylog_str[0] = pgm_read_byte(&code_to_name[keycode]); + keylog_str[(KEYLOGGER_LENGTH - 1)] = pgm_read_byte(&code_to_name[keycode]); } log_timer = timer_read(); @@ -70,9 +85,9 @@ void add_keylog(uint16_t keycode) { bool process_record_user_oled(uint16_t keycode, keyrecord_t *record) { if (record->event.pressed) { -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_timer = timer_read32(); - add_keylog(keycode); + add_keylog(keycode, record); #endif } return true; @@ -95,27 +110,15 @@ void render_default_layer_state(void) { case _QWERTY: oled_write_P(PSTR(OLED_RENDER_LAYOUT_QWERTY), false); break; + case _COLEMAK_DH: + oled_write_P(PSTR(OLED_RENDER_LAYOUT_COLEMAK_DH), false); + break; case _COLEMAK: oled_write_P(PSTR(OLED_RENDER_LAYOUT_COLEMAK), false); break; case _DVORAK: oled_write_P(PSTR(OLED_RENDER_LAYOUT_DVORAK), false); break; - case _WORKMAN: - oled_write_P(PSTR(OLED_RENDER_LAYOUT_WORKMAN), false); - break; - case _NORMAN: - oled_write_P(PSTR(OLED_RENDER_LAYOUT_NORMAN), false); - break; - case _MALTRON: - oled_write_P(PSTR(OLED_RENDER_LAYOUT_MALTRON), false); - break; - case _EUCALYN: - oled_write_P(PSTR(OLED_RENDER_LAYOUT_EUCALYN), false); - break; - case _CARPLAX: - oled_write_P(PSTR(OLED_RENDER_LAYOUT_CARPLAX), false); - break; } #ifdef OLED_DISPLAY_128X64 oled_advance_page(true); @@ -151,20 +154,20 @@ void render_keylock_status(uint8_t led_usb_state) { oled_write_P(PSTR(OLED_RENDER_LOCK_NUML), led_usb_state & (1 << USB_LED_NUM_LOCK)); oled_write_P(PSTR(" "), false); oled_write_P(PSTR(OLED_RENDER_LOCK_CAPS), led_usb_state & (1 << USB_LED_CAPS_LOCK)); +#if defined(OLED_DISPLAY_128X64) oled_write_P(PSTR(" "), false); oled_write_P(PSTR(OLED_RENDER_LOCK_SCLK), led_usb_state & (1 << USB_LED_SCROLL_LOCK)); -#ifndef OLED_DISPLAY_128X64 - oled_advance_page(true); #endif } + void render_matrix_scan_rate(void) { #ifdef DEBUG_MATRIX_SCAN_RATE - char matrix_rate[5]; - uint16_t n = get_matrix_scan_rate(); + char matrix_rate[5]; + uint16_t n = get_matrix_scan_rate(); matrix_rate[4] = '\0'; matrix_rate[3] = '0' + n % 10; - matrix_rate[2] = ( n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' '; - matrix_rate[1] = n / 10 ? '0' + n / 10 : ' '; + matrix_rate[2] = (n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' '; + matrix_rate[1] = n / 10 ? '0' + n / 10 : ' '; matrix_rate[0] = ' '; oled_write_P(PSTR("MS:"), false); oled_write(matrix_rate, false); @@ -174,17 +177,21 @@ void render_matrix_scan_rate(void) { void render_mod_status(uint8_t modifiers) { static const char PROGMEM mod_status[5][3] = {{0xE8, 0xE9, 0}, {0xE4, 0xE5, 0}, {0xE6, 0xE7, 0}, {0xEA, 0xEB, 0}, {0xEC, 0xED, 0}}; oled_write_P(PSTR(OLED_RENDER_MODS_NAME), false); +#if defined(OLED_DISPLAY_128X64) + oled_write_P(mod_status[0], (modifiers & MOD_BIT(KC_LSHIFT))); + oled_write_P(mod_status[!keymap_config.swap_lctl_lgui ? 3 : 4], (modifiers & MOD_BIT(KC_LGUI))); + oled_write_P(mod_status[2], (modifiers & MOD_BIT(KC_LALT))); + oled_write_P(mod_status[1], (modifiers & MOD_BIT(KC_LCTL))); + oled_write_P(mod_status[1], (modifiers & MOD_BIT(KC_RCTL))); + oled_write_P(mod_status[2], (modifiers & MOD_BIT(KC_RALT))); + oled_write_P(mod_status[!keymap_config.swap_lctl_lgui ? 3 : 4], (modifiers & MOD_BIT(KC_RGUI))); + oled_write_P(mod_status[0], (modifiers & MOD_BIT(KC_RSHIFT))); +#else oled_write_P(mod_status[0], (modifiers & MOD_MASK_SHIFT)); oled_write_P(mod_status[!keymap_config.swap_lctl_lgui ? 3 : 4], (modifiers & MOD_MASK_GUI)); -#if !defined(OLED_DISPLAY_128X64) oled_write_P(PSTR(" "), false); -#endif oled_write_P(mod_status[2], (modifiers & MOD_MASK_ALT)); oled_write_P(mod_status[1], (modifiers & MOD_MASK_CTRL)); - - render_matrix_scan_rate(); -#if defined(OLED_DISPLAY_128X64) - oled_advance_page(true); #endif } @@ -254,6 +261,17 @@ extern bool tap_toggling; #endif void render_user_status(void) { +#ifdef AUDIO_ENABLE + bool is_audio_on = false, is_clicky_on = false; +# ifdef SPLIT_KEYBOARD + + is_audio_on = user_state.audio_enable; + is_clicky_on = user_state.audio_clicky_enable; +# else + is_audio_on = is_audio_on(); + is_clicky_on = is_clicky_on(); +# endif +#endif oled_write_P(PSTR(OLED_RENDER_USER_NAME), false); #if !defined(OLED_DISPLAY_128X64) oled_write_P(PSTR(" "), false); @@ -269,11 +287,11 @@ void render_user_status(void) { #endif #ifdef AUDIO_ENABLE static const char PROGMEM audio_status[2][3] = {{0xE0, 0xE1, 0}, {0xE2, 0xE3, 0}}; - oled_write_P(audio_status[is_audio_on()], false); + oled_write_P(audio_status[is_audio_on], false); # ifdef AUDIO_CLICKY static const char PROGMEM audio_clicky_status[2][3] = {{0xF4, 0xF5, 0}, {0xF6, 0xF7, 0}}; - oled_write_P(audio_clicky_status[is_clicky_on() && is_audio_on()], false); + oled_write_P(audio_clicky_status[is_clicky_on && is_audio_on], false); # if !defined(OLED_DISPLAY_128X64) oled_write_P(PSTR(" "), false); # endif @@ -282,14 +300,28 @@ void render_user_status(void) { static const char PROGMEM rgb_layer_status[2][3] = {{0xEE, 0xEF, 0}, {0xF0, 0xF1, 0}}; oled_write_P(rgb_layer_status[userspace_config.rgb_layer_change], false); - static const char PROGMEM nukem_good[2][3] = {{0xF8, 0xF9, 0}, {0xF6, 0xF7, 0}}; - oled_write_P(nukem_good[0], userspace_config.nuke_switch); + static const char PROGMEM cat_mode[2][3] = {{0xF8, 0xF9, 0}, {0xF6, 0xF7, 0}}; + oled_write_P(cat_mode[0], host_driver_disabled); +#if defined(CUSTOM_UNICODE_ENABLE) + static const char PROGMEM uc_mod_status[5][3] = {{0xEA, 0xEB, 0}, {0xEC, 0xED, 0}}; + oled_write_P(uc_mod_status[get_unicode_input_mode() == UC_MAC], false); +#endif + if (userspace_config.nuke_switch) { +#if !defined(OLED_DISPLAY_128X64) + oled_write_P(PSTR(" "), false); +#endif + static const char PROGMEM nukem_good[2] = {0xFA, 0}; + oled_write_P(nukem_good, false); +#if !defined(OLED_DISPLAY_128X64) + oled_advance_page(true); +#endif + } #if defined(OLED_DISPLAY_128X64) oled_advance_page(true); #endif } -__attribute__((weak)) void oled_driver_render_logo(void) { +void oled_driver_render_logo(void) { // clang-format off static const char PROGMEM qmk_logo[] = { 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, @@ -299,94 +331,111 @@ __attribute__((weak)) void oled_driver_render_logo(void) { oled_write_P(qmk_logo, false); } -void render_wpm(void) { +void render_wpm(uint8_t padding) { #ifdef WPM_ENABLE - uint8_t n = get_current_wpm(); -# ifdef OLED_DISPLAY_128X64 - char wpm_counter[4]; - wpm_counter[3] = '\0'; - wpm_counter[2] = '0' + n % 10; - wpm_counter[1] = ( n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' '; - wpm_counter[0] = n / 10 ? '0' + n / 10 : ' '; -# else - char wpm_counter[6]; - wpm_counter[5] = '\0'; - wpm_counter[4] = '0' + n % 10; - wpm_counter[3] = ( n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' '; - wpm_counter[2] = n / 10 ? '0' + n / 10 : ' '; - wpm_counter[1] = ' '; - wpm_counter[0] = ' '; - # endif + oled_write_P(PSTR(OLED_RENDER_WPM_COUNTER), false); - oled_write(wpm_counter, false); + if (padding) { + for (uint8_t n = padding; n > 0; n--) { + oled_write_P(PSTR(" "), false); + } + } + oled_write(get_u8_str(get_current_wpm(), ' '), false); #endif } -#ifdef KEYBOARD_handwired_dactyl_manuform_5x6_right_trackball -extern keyboard_config_t keyboard_config; -extern uint16_t dpi_array[]; - -void render_pointing_dpi_status(void) { - char dpi_status[6]; - uint16_t n = dpi_array[keyboard_config.dpi_config]; - dpi_status[5] = '\0'; - dpi_status[4] = '0' + n % 10; - dpi_status[3] = ( n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' '; - dpi_status[2] = ( n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' '; - dpi_status[1] = n / 10 ? '0' + n / 10 : ' '; - dpi_status[0] = ' '; - oled_write_P(PSTR(" DPI: "), false); - oled_write(dpi_status, false); +#if defined(KEYBOARD_handwired_tractyl_manuform_5x6_right) +extern kb_config_data_t kb_config; +void render_pointing_dpi_status(uint8_t padding) { + oled_write_P(PSTR("CPI:"), false); + if (padding) { + for (uint8_t n = padding - 1; n > 0; n--) { + oled_write_P(PSTR(" "), false); + } + } + + oled_write(get_u16_str(kb_config.device_cpi, ' '), false); } #endif -void render_status_secondary(void) { +__attribute__((weak)) void oled_driver_render_logo_right(void) { #if defined(OLED_DISPLAY_128X64) oled_driver_render_logo(); -#endif - /* Show Keyboard Layout */ render_default_layer_state(); - render_layer_state(); - render_mod_status(get_mods() | get_oneshot_mods()); - // render_keylogger_status(); - render_keylock_status(host_keyboard_leds()); + oled_set_cursor(0, 4); +#else + render_default_layer_state(); +#endif } -void render_status_main(void) { +__attribute__((weak)) void oled_driver_render_logo_left(void) { #if defined(OLED_DISPLAY_128X64) oled_driver_render_logo(); # ifdef DEBUG_MATRIX_SCAN_RATE render_matrix_scan_rate(); -# else - render_wpm(); +# elif defined(WPM_ENABLE) + render_wpm(0); # endif -# ifdef KEYBOARD_handwired_dactyl_manuform_5x6_right_trackball - render_pointing_dpi_status(); + oled_write_P(PSTR(" "), false); +# if defined(KEYBOARD_handwired_tractyl_manuform_5x6_right) + render_pointing_dpi_status(1); # endif - oled_write_P(PSTR("\n"), false); + oled_set_cursor(0, 4); #else render_default_layer_state(); #endif +} + +void render_status_secondary(void) { + oled_driver_render_logo_right(); + /* Show Keyboard Layout */ + render_layer_state(); + render_mod_status(get_mods() | get_oneshot_mods()); +#if !defined(OLED_DISPLAY_128X64) && defined(WPM_ENABLE) && !defined(CONVERT_TO_PROTON_C) + render_wpm(2); +#endif + // render_keylock_status(host_keyboard_leds()); +} + +void render_status_main(void) { + oled_driver_render_logo_left(); + /* Show Keyboard Layout */ // render_keylock_status(host_keyboard_leds()); render_bootmagic_status(); render_user_status(); - render_keylogger_status(); + // render_keylogger_status(); } -void oled_task_user(void) { +__attribute__((weak)) oled_rotation_t oled_init_keymap(oled_rotation_t rotation) { return rotation; } + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + memset(keylog_str, ' ', sizeof(keylog_str) - 1); + + return oled_init_keymap(rotation); +} + +bool oled_task_user(void) { update_log(); if (is_keyboard_master()) { if (timer_elapsed32(oled_timer) > 30000) { oled_off(); - return; + return false; } else { oled_on(); } + } + if (is_keyboard_left()) { render_status_main(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) } else { render_status_secondary(); } + if (is_keyboard_master()) { + render_keylogger_status(); + } else { + render_keylock_status(host_keyboard_leds()); + } + return false; } diff --git a/users/drashna/oled_stuff.h b/users/drashna/oled_stuff.h index 1f4440bd423f..8795684d6ad4 100644 --- a/users/drashna/oled_stuff.h +++ b/users/drashna/oled_stuff.h @@ -19,97 +19,113 @@ #include "quantum.h" #include "oled_driver.h" -void oled_driver_render_logo(void); -bool process_record_user_oled(uint16_t keycode, keyrecord_t *record); +void oled_driver_render_logo(void); +bool process_record_user_oled(uint16_t keycode, keyrecord_t *record); +oled_rotation_t oled_init_keymap(oled_rotation_t rotation); extern uint32_t oled_timer; +void render_keylogger_status(void); +void render_default_layer_state(void); +void render_layer_state(void); +void render_keylock_status(uint8_t led_usb_state); +void render_matrix_scan_rate(void); +void render_mod_status(uint8_t modifiers); +void render_bootmagic_status(void); +void render_user_status(void); +void oled_driver_render_logo(void); +void render_wpm(uint8_t padding); +void render_pointing_dpi_status(uint8_t padding); +void oled_driver_render_logo_left(void); +void oled_driver_render_logo_right(void); #ifdef OLED_DISPLAY_128X64 -# define OLED_RENDER_KEYLOGGER "Keylogger: " - -# define OLED_RENDER_LAYOUT_NAME "Layout: " -# define OLED_RENDER_LAYOUT_QWERTY "Qwerty" -# define OLED_RENDER_LAYOUT_COLEMAK "Colemak" -# define OLED_RENDER_LAYOUT_DVORAK "Dvorak" -# define OLED_RENDER_LAYOUT_WORKMAN "Workman" -# define OLED_RENDER_LAYOUT_NORMAN "Norman" -# define OLED_RENDER_LAYOUT_MALTRON "Matron" -# define OLED_RENDER_LAYOUT_EUCALYN "Eucalyn" -# define OLED_RENDER_LAYOUT_CARPLAX "Carplax" - -# define OLED_RENDER_LAYER_NAME "Layer:" -# define OLED_RENDER_LAYER_LOWER "Lower" -# define OLED_RENDER_LAYER_RAISE "Raise" -# define OLED_RENDER_LAYER_ADJUST "Adjust" -# define OLED_RENDER_LAYER_MODS "Mods" - -# define OLED_RENDER_LOCK_NAME "Lock: " -# define OLED_RENDER_LOCK_NUML "NUML" -# define OLED_RENDER_LOCK_CAPS "CAPS" -# define OLED_RENDER_LOCK_SCLK "SCLK" - -# define OLED_RENDER_MODS_NAME "Mods:" -# define OLED_RENDER_MODS_SFT "Sft" -# define OLED_RENDER_MODS_CTL "Ctl" -# define OLED_RENDER_MODS_ALT "Alt" -# define OLED_RENDER_MODS_GUI "GUI" - -# define OLED_RENDER_BOOTMAGIC_NAME "Boot " -# define OLED_RENDER_BOOTMAGIC_NKRO "NKRO" -# define OLED_RENDER_BOOTMAGIC_NOGUI "nGUI" -# define OLED_RENDER_BOOTMAGIC_GRV "GRV" +# define OLED_RENDER_KEYLOGGER "Keylogger: " + +# define OLED_RENDER_LAYOUT_NAME "Layout: " +# define OLED_RENDER_LAYOUT_QWERTY "Qwerty" +# define OLED_RENDER_LAYOUT_COLEMAK_DH "Colemak-DH" +# define OLED_RENDER_LAYOUT_COLEMAK "Colemak" +# define OLED_RENDER_LAYOUT_DVORAK "Dvorak" +# define OLED_RENDER_LAYOUT_WORKMAN "Workman" +# define OLED_RENDER_LAYOUT_NORMAN "Norman" +# define OLED_RENDER_LAYOUT_MALTRON "Matron" +# define OLED_RENDER_LAYOUT_EUCALYN "Eucalyn" +# define OLED_RENDER_LAYOUT_CARPLAX "Carplax" + +# define OLED_RENDER_LAYER_NAME "Layer:" +# define OLED_RENDER_LAYER_LOWER "Lower" +# define OLED_RENDER_LAYER_RAISE "Raise" +# define OLED_RENDER_LAYER_ADJUST "Adjust" +# define OLED_RENDER_LAYER_MODS "Mods" + +# define OLED_RENDER_LOCK_NAME "Lock: " +# define OLED_RENDER_LOCK_NUML "NUML" +# define OLED_RENDER_LOCK_CAPS "CAPS" +# define OLED_RENDER_LOCK_SCLK "SCLK" + +# define OLED_RENDER_MODS_NAME "Mods:" +# define OLED_RENDER_MODS_SFT "Sft" +# define OLED_RENDER_MODS_CTL "Ctl" +# define OLED_RENDER_MODS_ALT "Alt" +# define OLED_RENDER_MODS_GUI "GUI" + +# define OLED_RENDER_BOOTMAGIC_NAME "Boot " +# define OLED_RENDER_BOOTMAGIC_NKRO "NKRO" +# define OLED_RENDER_BOOTMAGIC_NOGUI "nGUI" +# define OLED_RENDER_BOOTMAGIC_GRV "GRV" # define OLED_RENDER_BOOTMAGIC_ONESHOT "1SHT" -# define OLED_RENDER_BOOTMAGIC_SWAP "SWAP" -# define OLED_RENDER_BOOTMAGIC_CAPS "CAPS" +# define OLED_RENDER_BOOTMAGIC_SWAP "SWAP" +# define OLED_RENDER_BOOTMAGIC_CAPS "CAPS" -# define OLED_RENDER_USER_NAME "USER:" -# define OLED_RENDER_USER_ANIM "Anim" -# define OLED_RENDER_USER_LAYR "Layr" -# define OLED_RENDER_USER_NUKE "Nuke" +# define OLED_RENDER_USER_NAME "USER:" +# define OLED_RENDER_USER_ANIM "Anim" +# define OLED_RENDER_USER_LAYR "Layr" +# define OLED_RENDER_USER_NUKE "Nuke" -# define OLED_RENDER_WPM_COUNTER "WPM: " +# define OLED_RENDER_WPM_COUNTER "WPM: " #else -# define OLED_RENDER_KEYLOGGER "KLogr" - -# define OLED_RENDER_LAYOUT_NAME "Lyout" -# define OLED_RENDER_LAYOUT_QWERTY " QRTY" -# define OLED_RENDER_LAYOUT_COLEMAK " COLE" -# define OLED_RENDER_LAYOUT_DVORAK " DVRK" -# define OLED_RENDER_LAYOUT_WORKMAN " WKMN" -# define OLED_RENDER_LAYOUT_NORMAN " NORM" -# define OLED_RENDER_LAYOUT_MALTRON " MLTN" -# define OLED_RENDER_LAYOUT_EUCALYN " ECLN" -# define OLED_RENDER_LAYOUT_CARPLAX " CRPX" - -# define OLED_RENDER_LAYER_NAME "LAYER" -# define OLED_RENDER_LAYER_LOWER "Lower" -# define OLED_RENDER_LAYER_RAISE "Raise" -# define OLED_RENDER_LAYER_ADJUST "Adjst" -# define OLED_RENDER_LAYER_MODS " Mods" - -# define OLED_RENDER_LOCK_NAME "Lock:" -# define OLED_RENDER_LOCK_NUML "NumL" -# define OLED_RENDER_LOCK_CAPS "CapL" -# define OLED_RENDER_LOCK_SCLK "ScrL" - -# define OLED_RENDER_MODS_NAME "Mods: " -# define OLED_RENDER_MODS_SFT "Shft" -# define OLED_RENDER_MODS_CTL "Ctrl" -# define OLED_RENDER_MODS_ALT "Alt\n" -# define OLED_RENDER_MODS_GUI "GUI\n" - -# define OLED_RENDER_BOOTMAGIC_NAME "BTMGK" -# define OLED_RENDER_BOOTMAGIC_NKRO "NKRO" -# define OLED_RENDER_BOOTMAGIC_NOGUI "nGUI" -# define OLED_RENDER_BOOTMAGIC_GRV "GRV" +# define OLED_RENDER_KEYLOGGER "KLogr" + +# define OLED_RENDER_LAYOUT_NAME "Lyout" +# define OLED_RENDER_LAYOUT_QWERTY " QRTY" +# define OLED_RENDER_LAYOUT_COLEMAK_DH " cmDH" +# define OLED_RENDER_LAYOUT_COLEMAK " COLE" +# define OLED_RENDER_LAYOUT_DVORAK " DVRK" +# define OLED_RENDER_LAYOUT_WORKMAN " WKMN" +# define OLED_RENDER_LAYOUT_NORMAN " NORM" +# define OLED_RENDER_LAYOUT_MALTRON " MLTN" +# define OLED_RENDER_LAYOUT_EUCALYN " ECLN" +# define OLED_RENDER_LAYOUT_CARPLAX " CRPX" + +# define OLED_RENDER_LAYER_NAME "LAYER" +# define OLED_RENDER_LAYER_LOWER "Lower" +# define OLED_RENDER_LAYER_RAISE "Raise" +# define OLED_RENDER_LAYER_ADJUST "Adjst" +# define OLED_RENDER_LAYER_MODS " Mods" + +# define OLED_RENDER_LOCK_NAME "Lock:" +# define OLED_RENDER_LOCK_NUML "NumL" +# define OLED_RENDER_LOCK_CAPS "CapL" +# define OLED_RENDER_LOCK_SCLK "ScrL" + +# define OLED_RENDER_MODS_NAME "Mods: " +# define OLED_RENDER_MODS_SFT "Shft" +# define OLED_RENDER_MODS_CTL "Ctrl" +# define OLED_RENDER_MODS_ALT "Alt\n" +# define OLED_RENDER_MODS_GUI "GUI\n" + +# define OLED_RENDER_BOOTMAGIC_NAME "BTMGK" +# define OLED_RENDER_BOOTMAGIC_NKRO "NKRO" +# define OLED_RENDER_BOOTMAGIC_NOGUI "nGUI" +# define OLED_RENDER_BOOTMAGIC_GRV "GRV" # define OLED_RENDER_BOOTMAGIC_ONESHOT "1SHT" -# define OLED_RENDER_BOOTMAGIC_SWAP "SWAP" -# define OLED_RENDER_BOOTMAGIC_CAPS "CAPS" +# define OLED_RENDER_BOOTMAGIC_SWAP "SWAP" +# define OLED_RENDER_BOOTMAGIC_CAPS "CAPS" -# define OLED_RENDER_USER_NAME "USER:" -# define OLED_RENDER_USER_ANIM "Anim" -# define OLED_RENDER_USER_LAYR "Layr" -# define OLED_RENDER_USER_NUKE "Nuke" +# define OLED_RENDER_USER_NAME "USER:" +# define OLED_RENDER_USER_ANIM "Anim" +# define OLED_RENDER_USER_LAYR "Layr" +# define OLED_RENDER_USER_NUKE "Nuke" -# define OLED_RENDER_WPM_COUNTER "WPM: " +# define OLED_RENDER_WPM_COUNTER "WPM: " #endif diff --git a/users/drashna/pimoroni_trackball.c b/users/drashna/pimoroni_trackball.c deleted file mode 100644 index a6ca6c9966df..000000000000 --- a/users/drashna/pimoroni_trackball.c +++ /dev/null @@ -1,151 +0,0 @@ -/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "pimoroni_trackball.h" -#include "i2c_master.h" - -static uint8_t scrolling = 0; -static int16_t x_offset = 0; -static int16_t y_offset = 0; -static int16_t h_offset = 0; -static int16_t v_offset = 0; -static float precisionSpeed = 1; - -#ifndef I2C_TIMEOUT -# define I2C_TIMEOUT 100 -#endif -#ifndef MOUSE_DEBOUNCE -# define MOUSE_DEBOUNCE 5 -#endif - -void trackball_set_rgbw(uint8_t red, uint8_t green, uint8_t blue, uint8_t white) { - uint8_t data[] = {0x00, red, green, blue, white}; - i2c_transmit(TRACKBALL_ADDRESS << 1, data, sizeof(data), I2C_TIMEOUT); -} - -int16_t mouse_offset(uint8_t positive, uint8_t negative, int16_t scale) { - int16_t offset = (int16_t)positive - (int16_t)negative; - int16_t magnitude = (int16_t)(scale * offset * offset * precisionSpeed); - return offset < 0 ? -magnitude : magnitude; -} - -void update_member(int8_t* member, int16_t* offset) { - if (*offset > 127) { - *member = 127; - *offset -= 127; - } else if (*offset < -127) { - *member = -127; - *offset += 127; - } else { - *member = *offset; - *offset = 0; - } -} - -__attribute__((weak)) void trackball_check_click(bool pressed, report_mouse_t* mouse) { - if (pressed) { - mouse->buttons |= MOUSE_BTN1; - } else { - mouse->buttons &= ~MOUSE_BTN1; - } -} - -void trackball_register_button(bool pressed, enum mouse_buttons button) { - report_mouse_t currentReport = pointing_device_get_report(); - if (pressed) { - currentReport.buttons |= button; - } else { - currentReport.buttons &= ~button; - } - pointing_device_set_report(currentReport); -} - -float trackball_get_precision(void) { return precisionSpeed; } -void trackball_set_precision(float precision) { precisionSpeed = precision; } -bool trackball_is_scrolling(void) { return scrolling; } -void trackball_set_scrolling(bool scroll) { scrolling = scroll; } - -bool has_report_changed (report_mouse_t first, report_mouse_t second) { - return !( - (!first.buttons && first.buttons == second.buttons) && - (!first.x && first.x == second.x) && - (!first.y && first.y == second.y) && - (!first.h && first.h == second.h) && - (!first.v && first.v == second.v) ); -} - - -__attribute__((weak)) void pointing_device_init(void) { trackball_set_rgbw(0x00, 0x00, 0x00, 0x4F); } - -void pointing_device_task(void) { - static bool debounce; - static uint16_t debounce_timer; - uint8_t state[5] = {}; - if (i2c_readReg(TRACKBALL_ADDRESS << 1, 0x04, state, 5, I2C_TIMEOUT) == I2C_STATUS_SUCCESS) { - if (!state[4] && !debounce) { - if (scrolling) { -#ifdef PIMORONI_TRACKBALL_INVERT_X - h_offset += mouse_offset(state[2], state[3], 1); -#else - h_offset -= mouse_offset(state[2], state[3], 1); -#endif -#ifdef PIMORONI_TRACKBALL_INVERT_Y - v_offset += mouse_offset(state[1], state[0], 1); -#else - v_offset -= mouse_offset(state[1], state[0], 1); -#endif - } else { -#ifdef PIMORONI_TRACKBALL_INVERT_X - x_offset -= mouse_offset(state[2], state[3], 5); -#else - x_offset += mouse_offset(state[2], state[3], 5); -#endif -#ifdef PIMORONI_TRACKBALL_INVERT_Y - y_offset -= mouse_offset(state[1], state[0], 5); -#else - y_offset += mouse_offset(state[1], state[0], 5); -#endif - } - } else { - if (state[4]) { - debounce = true; - debounce_timer = timer_read(); - } - } - } - - if (timer_elapsed(debounce_timer) > MOUSE_DEBOUNCE) debounce = false; - - report_mouse_t mouse = pointing_device_get_report(); - - trackball_check_click(state[4] & (1 << 7), &mouse); - -#ifndef PIMORONI_TRACKBALL_ROTATE - update_member(&mouse.x, &x_offset); - update_member(&mouse.y, &y_offset); - update_member(&mouse.h, &h_offset); - update_member(&mouse.v, &v_offset); -#else - update_member(&mouse.x, &y_offset); - update_member(&mouse.y, &x_offset); - update_member(&mouse.h, &v_offset); - update_member(&mouse.v, &h_offset); -#endif - pointing_device_set_report(mouse); - if (has_report_changed(mouse, pointing_device_get_report())) { - pointing_device_send(); - } -} diff --git a/users/drashna/pimoroni_trackball.h b/users/drashna/pimoroni_trackball.h deleted file mode 100644 index a30fb0bb8c67..000000000000 --- a/users/drashna/pimoroni_trackball.h +++ /dev/null @@ -1,35 +0,0 @@ -/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#pragma once - -#include "quantum.h" -#include "pointing_device.h" - -#ifndef TRACKBALL_ADDRESS -# define TRACKBALL_ADDRESS 0x0A -#endif -#define TRACKBALL_WRITE ((TRACKBALL_ADDRESS << 1) | I2C_WRITE) -#define TRACKBALL_READ ((TRACKBALL_ADDRESS << 1) | I2C_READ) - -void trackball_set_rgbw(uint8_t red, uint8_t green, uint8_t blue, uint8_t white); -void trackball_check_click(bool pressed, report_mouse_t *mouse); -void trackball_register_button(bool pressed, enum mouse_buttons button); - -float trackball_get_precision(void); -void trackball_set_precision(float precision); -bool trackball_is_scrolling(void); -void trackball_set_scrolling(bool scroll); diff --git a/users/drashna/post_config.h b/users/drashna/post_config.h new file mode 100644 index 000000000000..b9d934c42b39 --- /dev/null +++ b/users/drashna/post_config.h @@ -0,0 +1,139 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#pragma once + +// because layouts seem to not be respecting config.h order atm +#ifdef RGBLIGHT_ENABLE +# undef RGBLIGHT_ANIMATIONS +# if defined(__AVR__) && (!defined(__AVR_AT90USB1286__) && !defined(RGBLIGHT_ALL_ANIMATIONS)) +# define RGBLIGHT_EFFECT_BREATHING +# define RGBLIGHT_EFFECT_SNAKE +# define RGBLIGHT_EFFECT_KNIGHT +# else +# define RGBLIGHT_EFFECT_BREATHING +# define RGBLIGHT_EFFECT_RAINBOW_MOOD +# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +# define RGBLIGHT_EFFECT_SNAKE +# define RGBLIGHT_EFFECT_KNIGHT +# if defined(RGBLIGHT_ALL_ANIMATIONS) +# define RGBLIGHT_EFFECT_CHRISTMAS +# define RGBLIGHT_EFFECT_STATIC_GRADIENT +# define RGBLIGHT_EFFECT_RGB_TEST +# define RGBLIGHT_EFFECT_ALTERNATING +# endif +# define RGBLIGHT_EFFECT_TWINKLE +# endif +#endif + +#ifdef RGB_MATRIX_ENABLE +# ifndef RGB_MATRIX_REST_MODE +# if defined(SPLIT_KEYBOARD) || defined(KEYBOARD_ergodox_ez) || defined(KEYBOARD_moonlander) +# define RGB_MATRIX_REST_MODE RGB_MATRIX_CYCLE_OUT_IN_DUAL +# else +# define RGB_MATRIX_REST_MODE RGB_MATRIX_CYCLE_OUT_IN +# endif +# endif +# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_REST_MODE +#endif + +#ifdef QMK_KEYS_PER_SCAN +# undef QMK_KEYS_PER_SCAN +#endif +#define QMK_KEYS_PER_SCAN 4 + +#ifdef MOUSEKEY_ENABLE +// mouse movement config +# ifdef MK_3_SPEED +# undef MK_3_SPEED +# endif +# define MK_KINETIC_SPEED +# ifdef MK_KINETIC_SPEED +# ifndef MOUSEKEY_DELAY +# define MOUSEKEY_DELAY 8 +# endif +# ifndef MOUSEKEY_INTERVAL +# define MOUSEKEY_INTERVAL 20 +# endif +# ifndef MOUSEKEY_MOVE_DELTA +# define MOUSEKEY_MOVE_DELTA 25 +# endif +# else +# ifndef MOUSEKEY_DELAY +# define MOUSEKEY_DELAY 300 +# endif +# ifndef MOUSEKEY_INTERVAL +# define MOUSEKEY_INTERVAL 50 +# endif +# ifndef MOUSEKEY_MOVE_DELTA +# define MOUSEKEY_MOVE_DELTA 5 +# endif +# endif +# ifndef MOUSEKEY_MAX_SPEED +# define MOUSEKEY_MAX_SPEED 7 +# endif +# ifndef MOUSEKEY_TIME_TO_MAX +# define MOUSEKEY_TIME_TO_MAX 60 +# endif +# ifndef MOUSEKEY_INITIAL_SPEED +# define MOUSEKEY_INITIAL_SPEED 100 +# endif +# ifndef MOUSEKEY_BASE_SPEED +# define MOUSEKEY_BASE_SPEED 1000 +# endif +# ifndef MOUSEKEY_DECELERATED_SPEED +# define MOUSEKEY_DECELERATED_SPEED 400 +# endif +# ifndef MOUSEKEY_ACCELERATED_SPEED +# define MOUSEKEY_ACCELERATED_SPEED 3000 +# endif +// mouse scroll config +# ifndef MOUSEKEY_WHEEL_DELAY +# define MOUSEKEY_WHEEL_DELAY 15 +# endif +# ifndef MOUSEKEY_WHEEL_DELTA +# define MOUSEKEY_WHEEL_DELTA 1 +# endif +# ifndef MOUSEKEY_WHEEL_INTERVAL +# define MOUSEKEY_WHEEL_INTERVAL 50 +# endif +# ifndef MOUSEKEY_WHEEL_MAX_SPEED +# define MOUSEKEY_WHEEL_MAX_SPEED 8 +# endif +# ifndef MOUSEKEY_WHEEL_TIME_TO_MAX +# define MOUSEKEY_WHEEL_TIME_TO_MAX 80 +# endif +// mouse scroll kinetic config +# ifndef MOUSEKEY_WHEEL_INITIAL_MOVEMENTS +# define MOUSEKEY_WHEEL_INITIAL_MOVEMENTS 8 +# endif +# ifndef MOUSEKEY_WHEEL_BASE_MOVEMENTS +# define MOUSEKEY_WHEEL_BASE_MOVEMENTS 48 +# endif +# ifndef MOUSEKEY_WHEEL_ACCELERATED_MOVEMENTS +# define MOUSEKEY_WHEEL_ACCELERATED_MOVEMENTS 48 +# endif +# ifndef MOUSEKEY_WHEEL_DECELERATED_MOVEMENTS +# define MOUSEKEY_WHEEL_DECELERATED_MOVEMENTS 8 +# endif +#endif // MOUSEKEY_ENABLE + +#if !defined(LAYER_STATE_16BIT) && !defined(LAYER_STATE_8BIT) && !defined(LAYER_STATE_32BIT) +# define LAYER_STATE_16BIT +#endif +#ifndef DYNAMIC_KEYMAP_LAYER_COUNT +# define DYNAMIC_KEYMAP_LAYER_COUNT 11 +#endif diff --git a/users/drashna/process_records.c b/users/drashna/process_records.c index ef901226e017..de572d893383 100644 --- a/users/drashna/process_records.c +++ b/users/drashna/process_records.c @@ -18,19 +18,18 @@ #include "version.h" uint16_t copy_paste_timer; +bool host_driver_disabled = false; +// Defines actions tor my global custom keycodes. Defined in drashna.h file +// Then runs the _keymap's record handier if not processed here __attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; } - __attribute__((weak)) bool process_record_secrets(uint16_t keycode, keyrecord_t *record) { return true; } - -// Defines actions tor my global custom keycodes. Defined in drashna.h file -// Then runs the _keymap's record handier if not processed here -bool process_record_user(uint16_t keycode, keyrecord_t *record) { +bool process_record_user(uint16_t keycode, keyrecord_t *record) { // If console is enabled, it will print the matrix position and status of each key pressed #ifdef KEYLOGGER_ENABLE uprintf("KL: kc: 0x%04X, col: %2u, row: %2u, pressed: %b, time: %5u, int: %b, count: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed, record->event.time, record->tap.interrupted, record->tap.count); #endif // KEYLOGGER_ENABLE -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE process_record_user_oled(keycode, record); #endif // OLED @@ -40,21 +39,29 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { #endif #ifdef RGBLIGHT_ENABLE && process_record_user_rgb_light(keycode, record) +#endif +#ifdef CUSTOM_UNICODE_ENABLE + && process_record_unicode(keycode, record) #endif && true)) { return false; } switch (keycode) { - case KC_QWERTY ... KC_WORKMAN: + case FIRST_DEFAULT_LAYER_KEYCODE ... LAST_DEFAULT_LAYER_KEYCODE: if (record->event.pressed) { uint8_t mods = mod_config(get_mods() | get_oneshot_mods()); if (!mods) { - set_single_persistent_default_layer(keycode - KC_QWERTY); + set_single_persistent_default_layer(keycode - FIRST_DEFAULT_LAYER_KEYCODE); +#if LAST_DEFAULT_LAYER_KEYCODE > (FIRST_DEFAULT_LAYER_KEYCODE + 3) } else if (mods & MOD_MASK_SHIFT) { - set_single_persistent_default_layer(keycode - KC_QWERTY + 4); + set_single_persistent_default_layer(keycode - FIRST_DEFAULT_LAYER_KEYCODE + 4); +# if LAST_DEFAULT_LAYER_KEYCODE > (FIRST_DEFAULT_LAYER_KEYCODE + 7) + } else if (mods & MOD_MASK_CTRL) { - set_single_persistent_default_layer(keycode - KC_QWERTY + 8); + set_single_persistent_default_layer(keycode - FIRST_DEFAULT_LAYER_KEYCODE + 8); +# endif +#endif } } break; @@ -79,15 +86,11 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { #endif } send_string_with_delay_P(PSTR("-kb " QMK_KEYBOARD " -km " QMK_KEYMAP), TAP_CODE_DELAY); -#ifdef RGB_MATRIX_SPLIT_RIGHT - send_string_with_delay_P(PSTR(" RGB_MATRIX_SPLIT_RIGHT=yes"), TAP_CODE_DELAY); -# ifndef OLED_DRIVER_ENABLE - send_string_with_delay_P(PSTR(" OLED_DRIVER_ENABLE=no"), TAP_CODE_DELAY); -# endif +#ifdef CONVERT_TO_PROTON_C + send_string_with_delay_P(PSTR(" -e CTPC=yes"), TAP_CODE_DELAY); #endif send_string_with_delay_P(PSTR(SS_TAP(X_ENTER)), TAP_CODE_DELAY); } - break; case VRSN: // Prints firmware version @@ -117,28 +120,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } } break; -#ifdef UNICODE_ENABLE - case UC_FLIP: // (ノಠ痊ಠ)ノ彡┻━┻ - if (record->event.pressed) { - send_unicode_string("(ノಠ痊ಠ)ノ彡┻━┻"); - } - break; - case UC_TABL: // ┬─┬ノ( º _ ºノ) - if (record->event.pressed) { - send_unicode_string("┬─┬ノ( º _ ºノ)"); - } - break; - case UC_SHRG: // ¯\_(ツ)_/¯ - if (record->event.pressed) { - send_unicode_string("¯\\_(ツ)_/¯"); - } - break; - case UC_DISA: // ಠ_ಠ - if (record->event.pressed) { - send_unicode_string("ಠ_ಠ"); - } - break; -#endif case KC_RGB_T: // This allows me to use underglow as layer indication, or as normal #if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE) if (record->event.pressed) { @@ -198,7 +179,27 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { eeconfig_update_user(userspace_config.raw); } } + break; #endif + case KEYLOCK: { + static host_driver_t *host_driver = 0; + + if (record->event.pressed) { + if (host_get_driver()) { + host_driver = host_get_driver(); + clear_keyboard(); + host_set_driver(0); + host_driver_disabled = true; + } else { + host_set_driver(host_driver); + host_driver_disabled = false; + } + } + break; + } } return true; } + +__attribute__((weak)) void post_process_record_keymap(uint16_t keycode, keyrecord_t *record) {} +void post_process_record_user(uint16_t keycode, keyrecord_t *record) { post_process_record_keymap(keycode, record); } diff --git a/users/drashna/process_records.h b/users/drashna/process_records.h index f60e6d7ebc58..d8c198a2d4f5 100644 --- a/users/drashna/process_records.h +++ b/users/drashna/process_records.h @@ -17,58 +17,91 @@ #pragma once #include "drashna.h" -#if defined(KEYBOARD_handwired_dactyl_manuform_5x6_right_trackball) +#if defined(KEYBOARD_handwired_tractyl_manuform_5x6_right) # define PLACEHOLDER_SAFE_RANGE KEYMAP_SAFE_RANGE #else # define PLACEHOLDER_SAFE_RANGE SAFE_RANGE #endif enum userspace_custom_keycodes { - VRSN = PLACEHOLDER_SAFE_RANGE, // Prints QMK Firmware and board info - KC_QWERTY, // Sets default layer to QWERTY - KC_COLEMAK, // Sets default layer to COLEMAK - KC_DVORAK, // Sets default layer to DVORAK - KC_WORKMAN, // Sets default layer to WORKMAN - KC_DIABLO_CLEAR, // Clears all Diablo Timers - KC_MAKE, // Run keyboard's customized make command - KC_RGB_T, // Toggles RGB Layer Indication mode - RGB_IDL, // RGB Idling animations - KC_SECRET_1, // test1 - KC_SECRET_2, // test2 - KC_SECRET_3, // test3 - KC_SECRET_4, // test4 - KC_SECRET_5, // test5 - KC_CCCV, // Hold to copy, tap to paste - KC_NUKE, // NUCLEAR LAUNCH DETECTED!!! - UC_FLIP, // (ಠ痊ಠ)┻━┻ - UC_TABL, // ┬─┬ノ( º _ ºノ) - UC_SHRG, // ¯\_(ツ)_/¯ - UC_DISA, // ಠ_ಠ - NEW_SAFE_RANGE // use "NEWPLACEHOLDER for keymap specific codes + VRSN = PLACEHOLDER_SAFE_RANGE, // Prints QMK Firmware and board info + KC_QWERTY, // Sets default layer to QWERTY + FIRST_DEFAULT_LAYER_KEYCODE = KC_QWERTY, // Sets default layer to QWERTY + KC_COLEMAK_DH, // Sets default layer to COLEMAK + KC_COLEMAK, // Sets default layer to COLEMAK + KC_DVORAK, // Sets default layer to DVORAK + LAST_DEFAULT_LAYER_KEYCODE = KC_DVORAK, // Sets default layer to WORKMAN + KC_DIABLO_CLEAR, // Clears all Diablo Timers + KC_MAKE, // Run keyboard's customized make command + KC_RGB_T, // Toggles RGB Layer Indication mode + RGB_IDL, // RGB Idling animations + KC_SECRET_1, // test1 + KC_SECRET_2, // test2 + KC_SECRET_3, // test3 + KC_SECRET_4, // test4 + KC_SECRET_5, // test5 + KC_CCCV, // Hold to copy, tap to paste + KC_NUKE, // NUCLEAR LAUNCH DETECTED!!! + UC_FLIP, // (ಠ痊ಠ)┻━┻ + UC_TABL, // ┬─┬ノ( º _ ºノ) + UC_SHRG, // ¯\_(ツ)_/¯ + UC_DISA, // ಠ_ಠ + UC_IRNY, + UC_CLUE, + KEYLOCK, // Locks keyboard by unmounting driver + KC_NOMODE, + KC_WIDE, + KC_SCRIPT, + KC_BLOCKS, + KC_REGIONAL, + KC_AUSSIE, + KC_ZALGO, + NEW_SAFE_RANGE // use "NEWPLACEHOLDER for keymap specific codes }; bool process_record_secrets(uint16_t keycode, keyrecord_t *record); bool process_record_keymap(uint16_t keycode, keyrecord_t *record); +void post_process_record_keymap(uint16_t keycode, keyrecord_t *record); +#ifdef CUSTOM_UNICODE_ENABLE +bool process_record_unicode(uint16_t keycode, keyrecord_t *record); +#endif + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) +#define ADJUST MO(_ADJUST) +#define TG_MODS OS_TOGG +#define TG_GAME TG(_GAMEPAD) +#define TG_DBLO TG(_DIABLO) +#define OS_LWR OSL(_LOWER) +#define OS_RSE OSL(_RAISE) -#define LOWER MO(_LOWER) -#define RAISE MO(_RAISE) -#define ADJUST MO(_ADJUST) -#define TG_MODS OS_TOGG -#define TG_GAME TG(_GAMEPAD) -#define TG_DBLO TG(_DIABLO) -#define OS_LWR OSL(_LOWER) -#define OS_RSE OSL(_RAISE) +#define KC_SEC1 KC_SECRET_1 +#define KC_SEC2 KC_SECRET_2 +#define KC_SEC3 KC_SECRET_3 +#define KC_SEC4 KC_SECRET_4 +#define KC_SEC5 KC_SECRET_5 -#define KC_SEC1 KC_SECRET_1 -#define KC_SEC2 KC_SECRET_2 -#define KC_SEC3 KC_SECRET_3 -#define KC_SEC4 KC_SECRET_4 -#define KC_SEC5 KC_SECRET_5 +#define QWERTY KC_QWERTY +#define DVORAK KC_DVORAK +#define COLEMAK KC_COLEMAK +#define COLEMAKDH KC_COLEMAK_DH -#define QWERTY KC_QWERTY -#define DVORAK KC_DVORAK -#define COLEMAK KC_COLEMAK -#define WORKMAN KC_WORKMAN +#define DEFLYR1 FIRST_DEFAULT_LAYER_KEYCODE +#define DEFLYR2 (FIRST_DEFAULT_LAYER_KEYCODE + 1) +#define DEFLYR3 (FIRST_DEFAULT_LAYER_KEYCODE + 2) +#define DEFLYR4 (FIRST_DEFAULT_LAYER_KEYCODE + 3) +#if LAST_DEFAULT_LAYER_KEYCODE > (FIRST_DEFAULT_LAYER_KEYCODE + 3) +# define DEFLYR5 (FIRST_DEFAULT_LAYER_KEYCODE + 4) +# define DEFLYR6 (FIRST_DEFAULT_LAYER_KEYCODE + 5) +# define DEFLYR7 (FIRST_DEFAULT_LAYER_KEYCODE + 6) +# define DEFLYR8 (FIRST_DEFAULT_LAYER_KEYCODE + 7) +# if LAST_DEFAULT_LAYER_KEYCODE > (FIRST_DEFAULT_LAYER_KEYCODE + 7) +# define DEFLYR9 (FIRST_DEFAULT_LAYER_KEYCODE + 8) +# define DEFLYR10 (FIRST_DEFAULT_LAYER_KEYCODE + 9) +# define DEFLYR11 (FIRST_DEFAULT_LAYER_KEYCODE + 10) +# define DEFLYR12 (FIRST_DEFAULT_LAYER_KEYCODE + 11) +# endif +#endif #define KC_RESET RESET #define KC_RST KC_RESET @@ -104,6 +137,3 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record); #define ALT_APP ALT_T(KC_APP) #define MG_NKRO MAGIC_TOGGLE_NKRO - -#define UC_IRNY UC(0x2E2E) -#define UC_CLUE UC(0x203D) diff --git a/users/drashna/rgb_matrix_stuff.c b/users/drashna/rgb_matrix_stuff.c index 9e9e1e4279b4..97811092c1b8 100644 --- a/users/drashna/rgb_matrix_stuff.c +++ b/users/drashna/rgb_matrix_stuff.c @@ -20,11 +20,6 @@ extern led_config_t g_led_config; static uint32_t hypno_timer; -#if defined(SPLIT_KEYBOARD) || defined(KEYBOARD_ergodox_ez) || defined(KEYBOARD_crkbd) -# define RGB_MATRIX_REST_MODE RGB_MATRIX_CYCLE_OUT_IN_DUAL -#else -# define RGB_MATRIX_REST_MODE RGB_MATRIX_CYCLE_OUT_IN -#endif void rgb_matrix_layer_helper(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode, uint8_t speed, uint8_t led_type, uint8_t led_min, uint8_t led_max) { HSV hsv = {hue, sat, val}; @@ -34,27 +29,27 @@ void rgb_matrix_layer_helper(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode switch (mode) { case 1: // breathing - { - uint16_t time = scale16by8(g_rgb_timer, speed / 8); - hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v); - RGB rgb = hsv_to_rgb(hsv); - for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) { - if (HAS_FLAGS(g_led_config.flags[i], led_type)) { - RGB_MATRIX_INDICATOR_SET_COLOR(i, rgb.r, rgb.g, rgb.b); + { + uint16_t time = scale16by8(g_rgb_timer, speed / 8); + hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v); + RGB rgb = hsv_to_rgb(hsv); + for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) { + if (HAS_FLAGS(g_led_config.flags[i], led_type)) { + RGB_MATRIX_INDICATOR_SET_COLOR(i, rgb.r, rgb.g, rgb.b); + } } + break; } - break; - } default: // Solid Color - { - RGB rgb = hsv_to_rgb(hsv); - for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) { - if (HAS_FLAGS(g_led_config.flags[i], led_type)) { - RGB_MATRIX_INDICATOR_SET_COLOR(i, rgb.r, rgb.g, rgb.b); + { + RGB rgb = hsv_to_rgb(hsv); + for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) { + if (HAS_FLAGS(g_led_config.flags[i], led_type)) { + RGB_MATRIX_INDICATOR_SET_COLOR(i, rgb.r, rgb.g, rgb.b); + } } + break; } - break; - } } } diff --git a/users/drashna/rgb_stuff.c b/users/drashna/rgb_stuff.c index 6723ad4bf5ac..15108bde0400 100644 --- a/users/drashna/rgb_stuff.c +++ b/users/drashna/rgb_stuff.c @@ -23,106 +23,19 @@ bool has_initialized; void rgblight_sethsv_default_helper(uint8_t index) { rgblight_sethsv_at(rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val(), index); } - -# ifdef RGBLIGHT_TWINKLE -static rgblight_fadeout lights[RGBLED_NUM]; - -/* Handler for fading/twinkling effect */ -void scan_rgblight_fadeout(void) { // Don't effing change this function .... rgblight_sethsv is supppppper intensive - bool litup = false; - - for (uint8_t light_index = 0; light_index < RGBLED_NUM; ++light_index) { - if (lights[light_index].enabled && sync_timer_elapsed(lights[light_index].timer) > 10) { - rgblight_fadeout *light = &lights[light_index]; - litup = true; - - if (light->life) { - light->life -= 1; - if (get_highest_layer(layer_state) == 0) { - sethsv(light->hue + rand() % 0xF, 255, light->life, (LED_TYPE *)&led[light_index]); - } - light->timer = sync_timer_read(); - } else { - if (light->enabled && get_highest_layer(layer_state) == 0) { - rgblight_sethsv_default_helper(light_index); - } - litup = light->enabled = false; - } - } - } - if (litup && get_highest_layer(layer_state) == 0) { - rgblight_set(); - } +void rgblight_set_hsv_and_mode(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode) { + rgblight_sethsv_noeeprom(hue, sat, val); + // wait_us(175); // Add a slight delay between color and mode to ensure it's processed correctly + rgblight_mode_noeeprom(mode); } -/* Triggers a LED to fade/twinkle. - * This function handles the selection of the LED and prepres for it to be used. - */ -void start_rgb_light(void) { - uint8_t indices[RGBLED_NUM]; - uint8_t indices_count = 0; - uint8_t min_life = 0xFF; - uint8_t min_life_index = -1; - - for (uint8_t index = 0; index < RGBLED_NUM; ++index) { - if (lights[index].enabled) { - if (min_life_index == -1 || lights[index].life < min_life) { - min_life = lights[index].life; - min_life_index = index; - } - continue; - } - - indices[indices_count] = index; - ++indices_count; - } - - uint8_t light_index; - if (!indices_count) { - light_index = min_life_index; - } else { - light_index = indices[rand() % indices_count]; - } - - rgblight_fadeout *light = &lights[light_index]; - light->enabled = true; - light->timer = sync_timer_read(); - light->life = 0xC0 + rand() % 0x40; - - light->hue = rgblight_get_hue() + (rand() % 0xB4) - 0x54; - - rgblight_sethsv_at(light->hue, 255, light->life, light_index); -} -# endif - -bool process_record_user_rgb_light(uint16_t keycode, keyrecord_t *record) { - uint16_t temp_keycode = keycode; - // Filter out the actual keycode from MT and LT keys. - if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) { - temp_keycode &= 0xFF; - } - - switch (temp_keycode) { -# ifdef RGBLIGHT_TWINKLE - case KC_A ... KC_SLASH: - case KC_F1 ... KC_F12: - case KC_INSERT ... KC_UP: - case KC_KP_SLASH ... KC_KP_DOT: - case KC_F13 ... KC_F24: - case KC_AUDIO_MUTE ... KC_MEDIA_REWIND: - if (record->event.pressed) { - start_rgb_light(); - } - break; -# endif // RGBLIGHT_TWINKLE - } - return true; -} +bool process_record_user_rgb_light(uint16_t keycode, keyrecord_t *record) { return true; } # if defined(RGBLIGHT_STARTUP_ANIMATION) static bool is_enabled; static bool is_rgblight_startup; -static uint8_t old_hue; +static HSV old_hsv; +static uint8_t old_mode; static uint16_t rgblight_startup_loop_timer; # endif @@ -130,37 +43,35 @@ void keyboard_post_init_rgb_light(void) { # if defined(RGBLIGHT_STARTUP_ANIMATION) is_enabled = rgblight_is_enabled(); if (userspace_config.rgb_layer_change) { - rgblight_enable_noeeprom(); - } - if (rgblight_is_enabled()) { layer_state_set_rgb_light(layer_state); - old_hue = rgblight_get_hue(); - rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); - is_rgblight_startup = true; } + old_hsv = rgblight_get_hsv(); + old_mode = rgblight_get_mode(); + rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); + is_rgblight_startup = true; # endif - layer_state_set_rgb_light(layer_state); + if (userspace_config.rgb_layer_change) { + layer_state_set_rgb_light(layer_state); + } } void matrix_scan_rgb_light(void) { -# ifdef RGBLIGHT_TWINKLE - scan_rgblight_fadeout(); -# endif // RGBLIGHT_ENABLE - # if defined(RGBLIGHT_STARTUP_ANIMATION) if (is_rgblight_startup && is_keyboard_master()) { if (sync_timer_elapsed(rgblight_startup_loop_timer) > 10) { static uint8_t counter; counter++; - rgblight_sethsv_noeeprom((counter + old_hue) % 255, 255, 255); + rgblight_sethsv_noeeprom((counter + old_hsv.h) % 255, 255, 255); rgblight_startup_loop_timer = sync_timer_read(); if (counter == 255) { is_rgblight_startup = false; - if (!is_enabled) { - rgblight_disable_noeeprom(); - } if (userspace_config.rgb_layer_change) { layer_state_set_rgb_light(layer_state); + } else { + rgblight_set_hsv_and_mode(old_hsv.h, old_hsv.s, old_hsv.v, old_mode); + } + if (!is_enabled) { + rgblight_disable_noeeprom(); } } } @@ -168,19 +79,17 @@ void matrix_scan_rgb_light(void) { # endif } -void rgblight_set_hsv_and_mode(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode) { - rgblight_sethsv_noeeprom(hue, sat, val); - // wait_us(175); // Add a slight delay between color and mode to ensure it's processed correctly - rgblight_mode_noeeprom(mode); -} - layer_state_t layer_state_set_rgb_light(layer_state_t state) { # ifdef RGBLIGHT_ENABLE if (userspace_config.rgb_layer_change) { switch (get_highest_layer(state | default_layer_state)) { - case _MACROS: // mouse + case _MOUSE: // mouse if (!layer_state_cmp(state, _GAMEPAD) && !layer_state_cmp(state, _DIABLO)) { +# if defined(RGBLIGHT_EFFECT_TWINKLE) + rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_TWINKLE + 5); +# else rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_BREATHING + 3); +# endif } break; case _MEDIA: @@ -201,29 +110,17 @@ layer_state_t layer_state_set_rgb_light(layer_state_t state) { case _ADJUST: rgblight_set_hsv_and_mode(HSV_RED, RGBLIGHT_MODE_KNIGHT + 2); break; - case _COLEMAK: - rgblight_set_hsv_and_mode(HSV_MAGENTA, RGBLIGHT_MODE_STATIC_LIGHT); - break; - case _DVORAK: - rgblight_set_hsv_and_mode(HSV_SPRINGGREEN, RGBLIGHT_MODE_STATIC_LIGHT); - break; - case _WORKMAN: - rgblight_set_hsv_and_mode(HSV_GOLDENROD, RGBLIGHT_MODE_STATIC_LIGHT); - break; - case _NORMAN: - rgblight_set_hsv_and_mode(HSV_CORAL, RGBLIGHT_MODE_STATIC_LIGHT); - break; - case _MALTRON: - rgblight_set_hsv_and_mode(HSV_YELLOW, RGBLIGHT_MODE_STATIC_LIGHT); + case _DEFAULT_LAYER_1: + rgblight_set_hsv_and_mode(DEFAULT_LAYER_1_HSV, RGBLIGHT_MODE_STATIC_LIGHT); break; - case _EUCALYN: - rgblight_set_hsv_and_mode(HSV_PINK, RGBLIGHT_MODE_STATIC_LIGHT); + case _DEFAULT_LAYER_2: + rgblight_set_hsv_and_mode(DEFAULT_LAYER_2_HSV, RGBLIGHT_MODE_STATIC_LIGHT); break; - case _CARPLAX: - rgblight_set_hsv_and_mode(HSV_BLUE, RGBLIGHT_MODE_STATIC_LIGHT); + case _DEFAULT_LAYER_3: + rgblight_set_hsv_and_mode(DEFAULT_LAYER_3_HSV, RGBLIGHT_MODE_STATIC_LIGHT); break; - default: - rgblight_set_hsv_and_mode(HSV_CYAN, RGBLIGHT_MODE_STATIC_LIGHT); + case _DEFAULT_LAYER_4: + rgblight_set_hsv_and_mode(DEFAULT_LAYER_4_HSV, RGBLIGHT_MODE_STATIC_LIGHT); break; } } diff --git a/users/drashna/rgb_stuff.h b/users/drashna/rgb_stuff.h index 0153adb54381..af1acdde7176 100644 --- a/users/drashna/rgb_stuff.h +++ b/users/drashna/rgb_stuff.h @@ -17,22 +17,9 @@ #pragma once #include "quantum.h" -#if defined(RGBLIGHT_TWINKLE) -typedef struct { - bool enabled; - uint8_t hue; - uint16_t timer; - uint8_t life; -} rgblight_fadeout; -#endif - bool process_record_user_rgb_light(uint16_t keycode, keyrecord_t *record); void keyboard_post_init_rgb_light(void); void matrix_scan_rgb_light(void); layer_state_t layer_state_set_rgb_light(layer_state_t state); layer_state_t default_layer_state_set_rgb_light(layer_state_t state); void rgblight_sethsv_default_helper(uint8_t index); - -#if defined(RGBLIGHT_TWINKLE) -void scan_rgblight_fadeout(void); -#endif diff --git a/users/drashna/rules.mk b/users/drashna/rules.mk index b79051508b44..bd661e00a561 100644 --- a/users/drashna/rules.mk +++ b/users/drashna/rules.mk @@ -1,35 +1,44 @@ -SRC += drashna.c \ - process_records.c +SRC += $(USER_PATH)/drashna.c \ + $(USER_PATH)/process_records.c ifneq ($(PLATFORM),CHIBIOS) - LTO_ENABLE = yes + ifneq ($(strip $(LTO_SUPPORTED)), no) + LTO_ENABLE = yes + endif endif SPACE_CADET_ENABLE = no GRAVE_ESC_ENABLE = no ifneq ($(strip $(NO_SECRETS)), yes) ifneq ("$(wildcard $(USER_PATH)/secrets.c)","") - SRC += secrets.c + SRC += $(USER_PATH)/secrets.c endif ifeq ($(strip $(NO_SECRETS)), lite) OPT_DEFS += -DNO_SECRETS endif endif +CUSTOM_UNICODE_ENABLE ?= yes +ifeq ($(strip $(CUSTOM_UNICODE_ENABLE)), yes) + UNICODE_ENABLE = no + UNICODEMAP_ENABLE = no + UCIS_ENABLE = no + UNICODE_COMMON = yes + OPT_DEFS += -DCUSTOM_UNICODE_ENABLE + SRC += unicoooode.c +endif + CUSTOM_TAP_DANCE ?= yes -ifeq ($(strip $(TAP_DANCE_ENABLE)), yes) +ifeq ($(strip $(CUSTOM_TAP_DANCE)), yes) ifeq ($(strip $(TAP_DANCE_ENABLE)), yes) - SRC += tap_dances.c + SRC += $(USER_PATH)/tap_dances.c endif endif CUSTOM_RGBLIGHT ?= yes ifeq ($(strip $(RGBLIGHT_ENABLE)), yes) ifeq ($(strip $(CUSTOM_RGBLIGHT)), yes) - SRC += rgb_stuff.c - ifeq ($(strip $(RGBLIGHT_TWINKLE)), yes) - OPT_DEFS += -DRGBLIGHT_TWINKLE - endif + SRC += $(USER_PATH)/rgb_stuff.c ifeq ($(strip $(RGBLIGHT_NOEEPROM)), yes) OPT_DEFS += -DRGBLIGHT_NOEEPROM endif @@ -42,7 +51,7 @@ endif CUSTOM_RGB_MATRIX ?= yes ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes) ifeq ($(strip $(CUSTOM_RGB_MATRIX)), yes) - SRC += rgb_matrix_stuff.c + SRC += $(USER_PATH)/rgb_matrix_stuff.c endif endif @@ -65,42 +74,25 @@ ifeq ($(strip $(PROTOCOL)), VUSB) endif CUSTOM_OLED_DRIVER ?= yes -ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes) +ifeq ($(strip $(OLED_ENABLE)), yes) ifeq ($(strip $(CUSTOM_OLED_DRIVER)), yes) - SRC += oled_stuff.c + SRC += $(USER_PATH)/oled_stuff.c + OPT_DEFS += -DCUSTOM_OLED_DRIVER_CODE endif endif ifeq ($(strip $(PIMORONI_TRACKBALL_ENABLE)), yes) POINTING_DEVICE_ENABLE := yes OPT_DEFS += -DPIMORONI_TRACKBALL_ENABLE - SRC += pimoroni_trackball.c + SRC += drivers/sensors/pimoroni_trackball.c QUANTUM_LIB_SRC += i2c_master.c endif -CUSTOM_SPLIT_TRANSPORT ?= yes -ifeq ($(strip $(SPLIT_KEYBOARD)), yes) - ifneq ($(strip $(SPLIT_TRANSPORT)), custom) - ifeq ($(strip $(CUSTOM_SPLIT_TRANSPORT)), yes) - SPLIT_TRANSPORT = custom - QUANTUM_LIB_SRC += drashna_transport.c - OPT_DEFS += -DDRASHNA_CUSTOM_TRANSPORT - # Unused functions are pruned away, which is why we can add multiple drivers here without bloat. - ifeq ($(PLATFORM),AVR) - ifneq ($(NO_I2C),yes) - QUANTUM_LIB_SRC += i2c_master.c \ - i2c_slave.c - endif - endif - - SERIAL_DRIVER ?= bitbang - OPT_DEFS += -DSERIAL_DRIVER_$(strip $(shell echo $(SERIAL_DRIVER) | tr '[:lower:]' '[:upper:]')) - ifeq ($(strip $(SERIAL_DRIVER)), bitbang) - QUANTUM_LIB_SRC += serial.c - else - QUANTUM_LIB_SRC += serial_$(strip $(SERIAL_DRIVER)).c - endif - endif +CUSTOM_SPLIT_TRANSPORT_SYNC ?= yes +ifeq ($(strip $(CUSTOM_SPLIT_TRANSPORT_SYNC)), yes) + ifeq ($(strip $(SPLIT_KEYBOARD)), yes) + QUANTUM_LIB_SRC += $(USER_PATH)/transport_sync.c + OPT_DEFS += -DCUSTOM_SPLIT_TRANSPORT_SYNC endif endif diff --git a/users/drashna/tap_dances.h b/users/drashna/tap_dances.h index 7f73f28036d5..81e462ce295f 100644 --- a/users/drashna/tap_dances.h +++ b/users/drashna/tap_dances.h @@ -35,12 +35,10 @@ extern diablo_timer_t diablo_timer[]; void run_diablo_macro_check(void); #ifdef TAP_DANCE_ENABLE -// clang-format off enum { TD_D3_1 = 0, TD_D3_2, TD_D3_3, - TD_D3_4 + TD_D3_4, }; -// clang-format on #endif // TAP_DANCE_ENABLE diff --git a/users/drashna/transport_sync.c b/users/drashna/transport_sync.c new file mode 100644 index 000000000000..cee3f04c8fba --- /dev/null +++ b/users/drashna/transport_sync.c @@ -0,0 +1,174 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "transport_sync.h" +#include "transactions.h" +#include <string.h> + +#ifdef CUSTOM_UNICODE_ENABLE +#include "process_unicode_common.h" +extern unicode_config_t unicode_config; +#endif +#ifdef AUDIO_ENABLE +# include "audio.h" +extern audio_config_t audio_config; +extern bool delayed_tasks_run; +#endif +#if defined(POINTING_DEVICE_ENABLE) && defined(KEYBOARD_handwired_tractyl_manuform) +extern bool tap_toggling; +#endif +#ifdef SWAP_HANDS_ENABLE +extern bool swap_hands; +#endif +extern userspace_config_t userspace_config; +extern bool host_driver_disabled; + +uint16_t transport_keymap_config = 0; +uint32_t transport_userspace_config = 0, transport_user_state = 0; + +user_runtime_config_t user_state; + +void user_state_sync(uint8_t initiator2target_buffer_size, const void* initiator2target_buffer, uint8_t target2initiator_buffer_size, void* target2initiator_buffer) { + if (initiator2target_buffer_size == sizeof(transport_user_state)) { + memcpy(&transport_user_state, initiator2target_buffer, initiator2target_buffer_size); + } +} +void user_keymap_sync(uint8_t initiator2target_buffer_size, const void* initiator2target_buffer, uint8_t target2initiator_buffer_size, void* target2initiator_buffer) { + if (initiator2target_buffer_size == sizeof(transport_keymap_config)) { + memcpy(&transport_keymap_config, initiator2target_buffer, initiator2target_buffer_size); + } +} +void user_config_sync(uint8_t initiator2target_buffer_size, const void* initiator2target_buffer, uint8_t target2initiator_buffer_size, void* target2initiator_buffer) { + if (initiator2target_buffer_size == sizeof(transport_userspace_config)) { + memcpy(&transport_userspace_config, initiator2target_buffer, initiator2target_buffer_size); + } +} + +void keyboard_post_init_transport_sync(void) { + // Register keyboard state sync split transaction + transaction_register_rpc(RPC_ID_USER_STATE_SYNC, user_state_sync); + transaction_register_rpc(RPC_ID_USER_KEYMAP_SYNC, user_keymap_sync); + transaction_register_rpc(RPC_ID_USER_CONFIG_SYNC, user_config_sync); +} + +void user_transport_update(void) { + if (is_keyboard_master()) { + transport_keymap_config = keymap_config.raw; + transport_userspace_config = userspace_config.raw; +#ifdef AUDIO_ENABLE + user_state.audio_enable = is_audio_on(); + user_state.audio_clicky_enable = is_clicky_on(); +#endif +#if defined(POINTING_DEVICE_ENABLE) && defined(KEYBOARD_handwired_tractyl_manuform) + user_state.tap_toggling = tap_toggling; +#endif +#ifdef UNICODE_ENABLE + user_state.unicode_mode = unicode_config.input_mode; +#endif +#ifdef SWAP_HANDS_ENABLE + user_state.swap_hands = swap_hands; +#endif + user_state.host_driver_disabled = host_driver_disabled; + + transport_user_state = user_state.raw; + } else { + keymap_config.raw = transport_keymap_config; + userspace_config.raw = transport_userspace_config; + user_state.raw = transport_user_state; +#ifdef UNICODE_ENABLE + unicode_config.input_mode = user_state.unicode_mode; +#endif +#if defined(POINTING_DEVICE_ENABLE) && defined(KEYBOARD_handwired_tractyl_manuform) + tap_toggling = user_state.tap_toggling; +#endif +#ifdef SWAP_HANDS_ENABLE + swap_hands = user_state.swap_hands; +#endif + host_driver_disabled = user_state.host_driver_disabled; + } +} + +void user_transport_sync(void) { + if (is_keyboard_master()) { + // Keep track of the last state, so that we can tell if we need to propagate to slave + static uint16_t last_keymap = 0; + static uint32_t last_config = 0, last_sync[3], last_user_state = 0; + bool needs_sync = false; + + // Check if the state values are different + if (memcmp(&transport_user_state, &last_user_state, sizeof(transport_user_state))) { + needs_sync = true; + memcpy(&last_user_state, &transport_user_state, sizeof(transport_user_state)); + } + // Send to slave every 500ms regardless of state change + if (timer_elapsed32(last_sync[0]) > 250) { + needs_sync = true; + } + + // Perform the sync if requested + if (needs_sync) { + if (transaction_rpc_send(RPC_ID_USER_STATE_SYNC, sizeof(user_state), &user_state)) { + last_sync[0] = timer_read32(); + } + needs_sync = false; + } + + // Check if the state values are different + if (memcmp(&transport_keymap_config, &last_keymap, sizeof(transport_keymap_config))) { + needs_sync = true; + memcpy(&last_keymap, &transport_keymap_config, sizeof(transport_keymap_config)); + } + + // Send to slave every 500ms regardless of state change + if (timer_elapsed32(last_sync[1]) > 250) { + needs_sync = true; + } + + // Perform the sync if requested + if (needs_sync) { + if (transaction_rpc_send(RPC_ID_USER_KEYMAP_SYNC, sizeof(transport_keymap_config), &transport_keymap_config)) { + last_sync[1] = timer_read32(); + } + needs_sync = false; + } + + // Check if the state values are different + if (memcmp(&user_state, &last_config, sizeof(transport_userspace_config))) { + needs_sync = true; + memcpy(&last_config, &user_state, sizeof(transport_userspace_config)); + } + + // Send to slave every 500ms regardless of state change + if (timer_elapsed32(last_sync[2]) > 250) { + needs_sync = true; + } + + // Perform the sync if requested + if (needs_sync) { + if (transaction_rpc_send(RPC_ID_USER_CONFIG_SYNC, sizeof(transport_userspace_config), &transport_userspace_config)) { + last_sync[2] = timer_read32(); + } + } + } +} + +void housekeeping_task_user(void) { + // Update kb_state so we can send to slave + user_transport_update(); + + // Data sync from master to slave + user_transport_sync(); +} diff --git a/users/drashna/transport_sync.h b/users/drashna/transport_sync.h new file mode 100644 index 000000000000..70b6ea522bec --- /dev/null +++ b/users/drashna/transport_sync.h @@ -0,0 +1,36 @@ + +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#pragma once + +#include "drashna.h" + +typedef union { + uint32_t raw; + struct { + bool audio_enable :1; + bool audio_clicky_enable :1; + bool tap_toggling :1; + bool unicode_mode :1; + bool swap_hands :1; + bool host_driver_disabled :1; + }; +} user_runtime_config_t; + +extern user_runtime_config_t user_state; + +void keyboard_post_init_transport_sync(void); diff --git a/users/drashna/unicoooode.c b/users/drashna/unicoooode.c new file mode 100644 index 000000000000..0e276dec17d3 --- /dev/null +++ b/users/drashna/unicoooode.c @@ -0,0 +1,282 @@ +/* Copyright 2020 @tzarc + * 2021 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "drashna.h" +#include "process_unicode_common.h" + +uint16_t typing_mode; + +void tap_code16_nomods(uint8_t kc) { + uint8_t temp_mod = get_mods(); + clear_mods(); + clear_oneshot_mods(); + tap_code16(kc); + set_mods(temp_mod); +} + +void tap_unicode_glyph_nomods(uint32_t glyph) { + uint8_t temp_mod = get_mods(); + clear_mods(); + clear_oneshot_mods(); + register_unicode(glyph); + set_mods(temp_mod); +} + +typedef uint32_t (*translator_function_t)(bool is_shifted, uint32_t keycode); + +#define DEFINE_UNICODE_RANGE_TRANSLATOR(translator_name, lower_alpha, upper_alpha, zero_glyph, number_one, space_glyph) \ + static inline uint32_t translator_name(bool is_shifted, uint32_t keycode) { \ + switch (keycode) { \ + case KC_A ... KC_Z: \ + return (is_shifted ? upper_alpha : lower_alpha) + keycode - KC_A; \ + case KC_0: \ + return zero_glyph; \ + case KC_1 ... KC_9: \ + return (number_one + keycode - KC_1); \ + case KC_SPACE: \ + return space_glyph; \ + } \ + return keycode; \ + } + +#define DEFINE_UNICODE_LUT_TRANSLATOR(translator_name, ...) \ + static inline uint32_t translator_name(bool is_shifted, uint32_t keycode) { \ + static const uint32_t translation[] = {__VA_ARGS__}; \ + uint32_t ret = keycode; \ + if ((keycode - KC_A) < (sizeof(translation) / sizeof(uint32_t))) { \ + ret = translation[keycode - KC_A]; \ + } \ + return ret; \ + } + +bool process_record_glyph_replacement(uint16_t keycode, keyrecord_t *record, translator_function_t translator) { + uint8_t temp_mod = get_mods(); + uint8_t temp_osm = get_oneshot_mods(); + bool is_shifted = (temp_mod | temp_osm) & MOD_MASK_SHIFT; + if (((temp_mod | temp_osm) & (MOD_MASK_CTRL | MOD_MASK_ALT | MOD_MASK_GUI)) == 0) { + if (KC_A <= keycode && keycode <= KC_Z) { + if (record->event.pressed) { + tap_unicode_glyph_nomods(translator(is_shifted, keycode)); + } + return false; + } else if (KC_1 <= keycode && keycode <= KC_0) { + if (is_shifted) { // skip shifted numbers, so that we can still use symbols etc. + return process_record_keymap(keycode, record); + } + if (record->event.pressed) { + register_unicode(translator(is_shifted, keycode)); + } + return false; + } else if (keycode == KC_SPACE) { + if (record->event.pressed) { + register_unicode(translator(is_shifted, keycode)); + } + return false; + } + } + return true; +} + +DEFINE_UNICODE_RANGE_TRANSLATOR(unicode_range_translator_wide, 0xFF41, 0xFF21, 0xFF10, 0xFF11, 0x2003); +DEFINE_UNICODE_RANGE_TRANSLATOR(unicode_range_translator_script, 0x1D4EA, 0x1D4D0, 0x1D7CE, 0x1D7C1, 0x2002); +DEFINE_UNICODE_RANGE_TRANSLATOR(unicode_range_translator_boxes, 0x1F170, 0x1F170, '0', '1', 0x2002); +DEFINE_UNICODE_RANGE_TRANSLATOR(unicode_range_translator_regional, 0x1F1E6, 0x1F1E6, '0', '1', 0x2003); + +DEFINE_UNICODE_LUT_TRANSLATOR(unicode_lut_translator_aussie, + 0x0250, // a + 'q', // b + 0x0254, // c + 'p', // d + 0x01DD, // e + 0x025F, // f + 0x0183, // g + 0x0265, // h + 0x1D09, // i + 0x027E, // j + 0x029E, // k + 'l', // l + 0x026F, // m + 'u', // n + 'o', // o + 'd', // p + 'b', // q + 0x0279, // r + 's', // s + 0x0287, // t + 'n', // u + 0x028C, // v + 0x028D, // w + 0x2717, // x + 0x028E, // y + 'z', // z + 0x0269, // 1 + 0x3139, // 2 + 0x0190, // 3 + 0x3123, // 4 + 0x03DB, // 5 + '9', // 6 + 0x3125, // 7 + '8', // 8 + '6', // 9 + '0' // 0 +); + +bool process_record_aussie(uint16_t keycode, keyrecord_t *record) { + bool is_shifted = (get_mods() | get_oneshot_mods()) & MOD_MASK_SHIFT; + if ((KC_A <= keycode) && (keycode <= KC_0)) { + if (record->event.pressed) { + if (!process_record_glyph_replacement(keycode, record, unicode_lut_translator_aussie)) { + tap_code16_nomods(KC_LEFT); + return false; + } + } + } else if (record->event.pressed && keycode == KC_SPACE) { + tap_code16_nomods(KC_SPACE); + tap_code16_nomods(KC_LEFT); + return false; + } else if (record->event.pressed && keycode == KC_ENTER) { + tap_code16_nomods(KC_END); + tap_code16_nomods(KC_ENTER); + return false; + } else if (record->event.pressed && keycode == KC_HOME) { + tap_code16_nomods(KC_END); + return false; + } else if (record->event.pressed && keycode == KC_END) { + tap_code16_nomods(KC_HOME); + return false; + } else if (record->event.pressed && keycode == KC_BSPC) { + tap_code16_nomods(KC_DELT); + return false; + } else if (record->event.pressed && keycode == KC_DELT) { + tap_code16_nomods(KC_BSPC); + return false; + } else if (record->event.pressed && keycode == KC_QUOT) { + tap_unicode_glyph_nomods(is_shifted ? 0x201E : 0x201A); + tap_code16_nomods(KC_LEFT); + return false; + } else if (record->event.pressed && keycode == KC_COMMA) { + tap_unicode_glyph_nomods(is_shifted ? '<' : 0x2018); + tap_code16_nomods(KC_LEFT); + return false; + } else if (record->event.pressed && keycode == KC_DOT) { + tap_unicode_glyph_nomods(is_shifted ? '>' : 0x02D9); + tap_code16_nomods(KC_LEFT); + return false; + } else if (record->event.pressed && keycode == KC_SLASH) { + tap_unicode_glyph_nomods(is_shifted ? 0x00BF : '/'); + tap_code16_nomods(KC_LEFT); + return false; + } + return true; +} + +bool process_record_zalgo(uint16_t keycode, keyrecord_t *record) { + if ((KC_A <= keycode) && (keycode <= KC_0)) { + if (record->event.pressed) { + tap_code16_nomods(keycode); + + int number = (rand() % (8 + 1 - 2)) + 2; + for (int index = 0; index < number; index++) { + uint16_t hex = (rand() % (0x036F + 1 - 0x0300)) + 0x0300; + register_unicode(hex); + } + + return false; + } + } + return true; +} + +bool process_record_unicode(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case UC_FLIP: // (ノಠ痊ಠ)ノ彡┻━┻ + if (record->event.pressed) { + send_unicode_string("(ノಠ痊ಠ)ノ彡┻━┻"); + } + break; + + case UC_TABL: // ┬─┬ノ( º _ ºノ) + if (record->event.pressed) { + send_unicode_string("┬─┬ノ( º _ ºノ)"); + } + break; + + case UC_SHRG: // ¯\_(ツ)_/¯ + if (record->event.pressed) { + send_unicode_string("¯\\_(ツ)_/¯"); + } + break; + + case UC_DISA: // ಠ_ಠ + if (record->event.pressed) { + send_unicode_string("ಠ_ಠ"); + } + break; + + case UC_IRNY: // ⸮ + if (record->event.pressed) { + register_unicode(0x2E2E); + } + break; + case UC_CLUE: // ‽ + if (record->event.pressed) { + register_unicode(0x203D); + } + break; + case KC_NOMODE ... KC_ZALGO: + if (record->event.pressed) { + if (typing_mode != keycode) { + typing_mode = keycode; + } else { + typing_mode = 0; + } + } + break; + + break; + } + if (((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) && record->tap.count) { + keycode &= 0xFF; + } + + if (typing_mode == KC_WIDE) { + if (((KC_A <= keycode) && (keycode <= KC_0)) || keycode == KC_SPACE) { + return process_record_glyph_replacement(keycode, record, unicode_range_translator_wide); + } + } else if (typing_mode == KC_SCRIPT) { + if (((KC_A <= keycode) && (keycode <= KC_0)) || keycode == KC_SPACE) { + return process_record_glyph_replacement(keycode, record, unicode_range_translator_script); + } + } else if (typing_mode == KC_BLOCKS) { + if (((KC_A <= keycode) && (keycode <= KC_0)) || keycode == KC_SPACE) { + return process_record_glyph_replacement(keycode, record, unicode_range_translator_boxes); + } + } else if (typing_mode == KC_REGIONAL) { + if (((KC_A <= keycode) && (keycode <= KC_0)) || keycode == KC_SPACE) { + if (!process_record_glyph_replacement(keycode, record, unicode_range_translator_regional)) { + wait_us(500); + tap_unicode_glyph_nomods(0x200C); + return false; + } + } + } else if (typing_mode == KC_AUSSIE) { + return process_record_aussie(keycode, record); + } else if (typing_mode == KC_ZALGO) { + return process_record_zalgo(keycode, record); + } + return true; +} diff --git a/users/drashna/wrappers.h b/users/drashna/wrappers.h index be8162dfa36f..c1ae81557951 100644 --- a/users/drashna/wrappers.h +++ b/users/drashna/wrappers.h @@ -60,120 +60,183 @@ NOTE: These are all the same length. If you do a search/replace #define ______________COLEMAK_MOD_DH_R3____________ KC_K, KC_H, KC_COMM, KC_DOT, KC_SLASH -#define _________________DVORAK_L1_________________ KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y -#define _________________DVORAK_L2_________________ KC_A, KC_O, KC_E, KC_U, KC_I -#define _________________DVORAK_L3_________________ KC_SCLN, KC_Q, KC_J, KC_K, KC_X +#define _________________DVORAK_L1_________________ KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y +#define _________________DVORAK_L2_________________ KC_A, KC_O, KC_E, KC_U, KC_I +#define _________________DVORAK_L3_________________ KC_SCLN, KC_Q, KC_J, KC_K, KC_X -#define _________________DVORAK_R1_________________ KC_F, KC_G, KC_C, KC_R, KC_L -#define _________________DVORAK_R2_________________ KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH -#define _________________DVORAK_R3_________________ KC_B, KC_M, KC_W, KC_V, KC_Z +#define _________________DVORAK_R1_________________ KC_F, KC_G, KC_C, KC_R, KC_L +#define _________________DVORAK_R2_________________ KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH +#define _________________DVORAK_R3_________________ KC_B, KC_M, KC_W, KC_V, KC_Z -#define ________________DVORAK_AU_L1_______________ KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y -#define ________________DVORAK_AU_L2_______________ KC_O, KC_A, KC_E, KC_I, KC_U -#define ________________DVORAK_AU_L3_______________ KC_SCLN, KC_Q, KC_J, KC_K, KC_X +#define ________________DVORAK_AU_L1_______________ KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y +#define ________________DVORAK_AU_L2_______________ KC_O, KC_A, KC_E, KC_I, KC_U +#define ________________DVORAK_AU_L3_______________ KC_SCLN, KC_Q, KC_J, KC_K, KC_X -#define ________________DVORAK_AU_R1_______________ KC_F, KC_G, KC_C, KC_R, KC_L -#define ________________DVORAK_AU_R2_______________ KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH -#define ________________DVORAK_AU_R3_______________ KC_B, KC_M, KC_W, KC_V, KC_Z +#define ________________DVORAK_AU_R1_______________ KC_F, KC_G, KC_C, KC_R, KC_L +#define ________________DVORAK_AU_R2_______________ KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH +#define ________________DVORAK_AU_R3_______________ KC_B, KC_M, KC_W, KC_V, KC_Z -#define _________________WORKMAN_L1________________ KC_Q, KC_D, KC_R, KC_W, KC_B -#define _________________WORKMAN_L2________________ KC_A, KC_S, KC_H, KC_T, KC_G -#define _________________WORKMAN_L3________________ KC_Z, KC_X, KC_M, KC_C, KC_V +#define _________________WORKMAN_L1________________ KC_Q, KC_D, KC_R, KC_W, KC_B +#define _________________WORKMAN_L2________________ KC_A, KC_S, KC_H, KC_T, KC_G +#define _________________WORKMAN_L3________________ KC_Z, KC_X, KC_M, KC_C, KC_V -#define _________________WORKMAN_R1________________ KC_J, KC_F, KC_U, KC_P, KC_SCLN -#define _________________WORKMAN_R2________________ KC_Y, KC_N, KC_E, KC_O, KC_I, KC_QUOT -#define _________________WORKMAN_R3________________ KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH +#define _________________WORKMAN_R1________________ KC_J, KC_F, KC_U, KC_P, KC_SCLN +#define _________________WORKMAN_R2________________ KC_Y, KC_N, KC_E, KC_O, KC_I, KC_QUOT +#define _________________WORKMAN_R3________________ KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH -#define _________________NORMAN_L1_________________ KC_Q, KC_W, KC_D, KC_F, KC_K -#define _________________NORMAN_L2_________________ KC_A, KC_S, KC_E, KC_T, KC_G -#define _________________NORMAN_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B +#define _________________NORMAN_L1_________________ KC_Q, KC_W, KC_D, KC_F, KC_K +#define _________________NORMAN_L2_________________ KC_A, KC_S, KC_E, KC_T, KC_G +#define _________________NORMAN_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B -#define _________________NORMAN_R1_________________ KC_J, KC_U, KC_R, KC_L, KC_SCLN -#define _________________NORMAN_R2_________________ KC_Y, KC_N, KC_I, KC_O, KC_U, KC_QUOT -#define _________________NORMAN_R3_________________ KC_P, KC_M, KC_COMM, KC_DOT, KC_SLSH +#define _________________NORMAN_R1_________________ KC_J, KC_U, KC_R, KC_L, KC_SCLN +#define _________________NORMAN_R2_________________ KC_Y, KC_N, KC_I, KC_O, KC_U, KC_QUOT +#define _________________NORMAN_R3_________________ KC_P, KC_M, KC_COMM, KC_DOT, KC_SLSH -#define _________________MALTRON_L1________________ KC_Q, KC_P, KC_Y, KC_C, KC_B -#define _________________MALTRON_L2________________ KC_A, KC_N, KC_I, KC_S, KC_F -#define _________________MALTRON_L3________________ KC_SCLN, KC_SLSH, KC_J, KC_G, KC_COMM +#define _________________MALTRON_L1________________ KC_Q, KC_P, KC_Y, KC_C, KC_B +#define _________________MALTRON_L2________________ KC_A, KC_N, KC_I, KC_S, KC_F +#define _________________MALTRON_L3________________ KC_SCLN, KC_SLSH, KC_J, KC_G, KC_COMM -#define _________________MALTRON_R1________________ KC_V, KC_M, KC_U, KC_Z, KC_L -#define _________________MALTRON_R2________________ KC_D, KC_T, KC_D, KC_O, KC_R, KC_QUOT -#define _________________MALTRON_R3________________ KC_DOT, KC_W, KC_K, KC_MINS, KC_X +#define _________________MALTRON_R1________________ KC_V, KC_M, KC_U, KC_Z, KC_L +#define _________________MALTRON_R2________________ KC_D, KC_T, KC_D, KC_O, KC_R, KC_QUOT +#define _________________MALTRON_R3________________ KC_DOT, KC_W, KC_K, KC_MINS, KC_X -#define _________________EUCALYN_L1________________ KC_Q, KC_W, KC_COMM, KC_DOT, KC_SCLN -#define _________________EUCALYN_L2________________ KC_A, KC_O, KC_E, KC_I, KC_U -#define _________________EUCALYN_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_F +#define _________________EUCALYN_L1________________ KC_Q, KC_W, KC_COMM, KC_DOT, KC_SCLN +#define _________________EUCALYN_L2________________ KC_A, KC_O, KC_E, KC_I, KC_U +#define _________________EUCALYN_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_F -#define _________________EUCALYN_R1________________ KC_M, KC_R, KC_D, KC_Y, KC_P -#define _________________EUCALYN_R2________________ KC_G, KC_T, KC_K, KC_S, KC_N, KC_QUOT -#define _________________EUCALYN_R3________________ KC_B, KC_H, KC_J, KC_L, KC_SLSH +#define _________________EUCALYN_R1________________ KC_M, KC_R, KC_D, KC_Y, KC_P +#define _________________EUCALYN_R2________________ KC_G, KC_T, KC_K, KC_S, KC_N, KC_QUOT +#define _________________EUCALYN_R3________________ KC_B, KC_H, KC_J, KC_L, KC_SLSH // Qwerty-like -#define _____________CARPLAX_QFMLWY_L1_____________ KC_Q, KC_F, KC_M, KC_L, KC_W -#define _____________CARPLAX_QFMLWY_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R -#define _____________CARPLAX_QFMLWY_L3_____________ KC_Z, KC_V, KC_G, KC_C, KC_X +#define _____________CARPLAX_QFMLWY_L1_____________ KC_Q, KC_F, KC_M, KC_L, KC_W +#define _____________CARPLAX_QFMLWY_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R +#define _____________CARPLAX_QFMLWY_L3_____________ KC_Z, KC_V, KC_G, KC_C, KC_X -#define _____________CARPLAX_QFMLWY_R1_____________ KC_Y, KC_U, KC_O, KC_B, KC_J -#define _____________CARPLAX_QFMLWY_R2_____________ KC_I, KC_A, KC_E, KC_H, KC_SCLN, KC_QUOT -#define _____________CARPLAX_QFMLWY_R3_____________ KC_P, KC_K, KC_COMM, KC_DOT, KC_SLSH +#define _____________CARPLAX_QFMLWY_R1_____________ KC_Y, KC_U, KC_O, KC_B, KC_J +#define _____________CARPLAX_QFMLWY_R2_____________ KC_I, KC_A, KC_E, KC_H, KC_SCLN, KC_QUOT +#define _____________CARPLAX_QFMLWY_R3_____________ KC_P, KC_K, KC_COMM, KC_DOT, KC_SLSH // Colemak like -#define _____________CARPLAX_QGMLWB_L1_____________ KC_Q, KC_G, KC_M, KC_L, KC_W -#define _____________CARPLAX_QGMLWB_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R -#define _____________CARPLAX_QGMLWB_L3_____________ KC_Z, KC_X, KC_C, KC_F, KC_J +#define _____________CARPLAX_QGMLWB_L1_____________ KC_Q, KC_G, KC_M, KC_L, KC_W +#define _____________CARPLAX_QGMLWB_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R +#define _____________CARPLAX_QGMLWB_L3_____________ KC_Z, KC_X, KC_C, KC_F, KC_J -#define _____________CARPLAX_QGMLWB_R1_____________ KC_B, KC_Y, KC_U, KC_V, KC_SCLN -#define _____________CARPLAX_QGMLWB_R2_____________ KC_I, KC_A, KC_E, KC_O, KC_H, KC_QUOT -#define _____________CARPLAX_QGMLWB_R3_____________ KC_K, KC_P, KC_COMM, KC_DOT, KC_SLSH +#define _____________CARPLAX_QGMLWB_R1_____________ KC_B, KC_Y, KC_U, KC_V, KC_SCLN +#define _____________CARPLAX_QGMLWB_R2_____________ KC_I, KC_A, KC_E, KC_O, KC_H, KC_QUOT +#define _____________CARPLAX_QGMLWB_R3_____________ KC_K, KC_P, KC_COMM, KC_DOT, KC_SLSH // colemak like, zxcv fixed -#define _____________CARPLAX_QGMLWY_L1_____________ KC_Q, KC_G, KC_M, KC_L, KC_W -#define _____________CARPLAX_QGMLWY_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R -#define _____________CARPLAX_QGMLWY_L3_____________ KC_Z, KC_X, KC_C, KC_V, KC_J +#define _____________CARPLAX_QGMLWY_L1_____________ KC_Q, KC_G, KC_M, KC_L, KC_W +#define _____________CARPLAX_QGMLWY_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R +#define _____________CARPLAX_QGMLWY_L3_____________ KC_Z, KC_X, KC_C, KC_V, KC_J -#define _____________CARPLAX_QGMLWY_R1_____________ KC_Y, KC_F, KC_U, KC_B, KC_SCLN -#define _____________CARPLAX_QGMLWY_R2_____________ KC_I, KC_A, KC_E, KC_O, KC_H, KC_QUOT -#define _____________CARPLAX_QGMLWY_R3_____________ KC_K, KC_P, KC_COMM, KC_DOT, KC_SLSH +#define _____________CARPLAX_QGMLWY_R1_____________ KC_Y, KC_F, KC_U, KC_B, KC_SCLN +#define _____________CARPLAX_QGMLWY_R2_____________ KC_I, KC_A, KC_E, KC_O, KC_H, KC_QUOT +#define _____________CARPLAX_QGMLWY_R3_____________ KC_K, KC_P, KC_COMM, KC_DOT, KC_SLSH // teeheehee -#define _____________CARPLAX_TNWCLR_L1_____________ KC_T, KC_N, KC_W, KC_C, KC_L -#define _____________CARPLAX_TNWCLR_L2_____________ KC_S, KC_K, KC_J, KC_X, KC_G -#define _____________CARPLAX_TNWCLR_L3_____________ KC_E, KC_O, KC_D, KC_I, KC_A +#define _____________CARPLAX_TNWCLR_L1_____________ KC_T, KC_N, KC_W, KC_C, KC_L +#define _____________CARPLAX_TNWCLR_L2_____________ KC_S, KC_K, KC_J, KC_X, KC_G +#define _____________CARPLAX_TNWCLR_L3_____________ KC_E, KC_O, KC_D, KC_I, KC_A -#define _____________CARPLAX_TNWCLR_R1_____________ KC_R, KC_B, KC_F, KC_M, KC_H -#define _____________CARPLAX_TNWCLR_R2_____________ KC_P, KC_Q, KC_Z, KC_V, KC_SCLN, KC_QUOT -#define _____________CARPLAX_TNWCLR_R3_____________ KC_U, KC_Y, KC_COMM, KC_DOT, KC_SLSH +#define _____________CARPLAX_TNWCLR_R1_____________ KC_R, KC_B, KC_F, KC_M, KC_H +#define _____________CARPLAX_TNWCLR_R2_____________ KC_P, KC_Q, KC_Z, KC_V, KC_SCLN, KC_QUOT +#define _____________CARPLAX_TNWCLR_R3_____________ KC_U, KC_Y, KC_COMM, KC_DOT, KC_SLSH -#define _________________WHITE_R1__________________ KC_V, KC_Y, KC_D, KC_COMM, KC_QUOT -#define _________________WHITE_R2__________________ KC_A, KC_T, KC_H, KC_E, KC_B -#define _________________WHITE_R3__________________ KC_P, KC_K, KC_G, KC_W, KC_Q +#define _________________WHITE_R1__________________ KC_V, KC_Y, KC_D, KC_COMM, KC_QUOT +#define _________________WHITE_R2__________________ KC_A, KC_T, KC_H, KC_E, KC_B +#define _________________WHITE_R3__________________ KC_P, KC_K, KC_G, KC_W, KC_Q -#define _________________WHITE_L1__________________ KC_INT1, KC_J, KC_M, KC_L, KC_U -#define _________________WHITE_L2__________________ KC_MINS, KC_C, KC_S, KC_N, KC_O, KC_I -#define _________________WHITE_L3__________________ KC_X, KC_R, KC_F, KC_DOT, KC_Z +#define _________________WHITE_L1__________________ KC_INT1, KC_J, KC_M, KC_L, KC_U +#define _________________WHITE_L2__________________ KC_MINS, KC_C, KC_S, KC_N, KC_O, KC_I +#define _________________WHITE_L3__________________ KC_X, KC_R, KC_F, KC_DOT, KC_Z -#define _________________HALMAK_L1_________________ KC_W, KC_L, KC_R, KC_B, KC_Z -#define _________________HALMAK_L2_________________ KC_S, KC_H, KC_N, KC_T, KC_COMM -#define _________________HALMAK_L3_________________ KC_F, KC_M, KC_V, KC_V, KC_SLASH +#define _________________HALMAK_L1_________________ KC_W, KC_L, KC_R, KC_B, KC_Z +#define _________________HALMAK_L2_________________ KC_S, KC_H, KC_N, KC_T, KC_COMM +#define _________________HALMAK_L3_________________ KC_F, KC_M, KC_V, KC_V, KC_SLASH -#define _________________HALMAK_R1_________________ KC_SCLN, KC_Q, KC_U, KC_D, KC_J -#define _________________HALMAK_R2_________________ KC_DOT, KC_A, KC_E, KC_O, KC_I, KC_QUOTE -#define _________________HALMAK_R3_________________ KC_G, KC_P, KC_X, KC_K, KC_Y +#define _________________HALMAK_R1_________________ KC_SCLN, KC_Q, KC_U, KC_D, KC_J +#define _________________HALMAK_R2_________________ KC_DOT, KC_A, KC_E, KC_O, KC_I, KC_QUOTE +#define _________________HALMAK_R3_________________ KC_G, KC_P, KC_X, KC_K, KC_Y -#define _________________HALMAK_L1_________________ KC_W, KC_L, KC_R, KC_B, KC_Z -#define _________________HALMAK_L2_________________ KC_S, KC_H, KC_N, KC_T, KC_COMM -#define _________________HALMAK_L3_________________ KC_F, KC_M, KC_V, KC_V, KC_SLASH +#define __________________ISRT_L1__________________ KC_W, KC_C, KC_L, KC_M, KC_K +#define __________________ISRT_L2__________________ KC_I, KC_S, KC_R, KC_T, KC_G +#define __________________ISRT_L3__________________ KC_Q, KC_V, KC_W, KC_D, KC_J -#define _________________HALMAK_R1_________________ KC_SCLN, KC_Q, KC_U, KC_D, KC_J -#define _________________HALMAK_R2_________________ KC_DOT, KC_A, KC_E, KC_O, KC_I, KC_QUOTE -#define _________________HALMAK_R3_________________ KC_G, KC_P, KC_X, KC_K, KC_Y +#define __________________ISRT_R1__________________ KC_Z, KC_F, KC_U, KC_COMM, KC_QUOTE +#define __________________ISRT_R2__________________ KC_P, KC_N, KC_E, KC_A, KC_O, KC_SCLN +#define __________________ISRT_R3__________________ KC_B, KC_H, KC_SLSH, KC_DOT, KC_X + + +#define __________________SOUL_L1__________________ KC_Q, KC_W, KC_L, KC_D, KC_P +#define __________________SOUL_L2__________________ KC_A, KC_S, KC_R, KC_T, KC_G +#define __________________SOUL_L3__________________ KC_Z, KC_X, KC_C, KC_V, KC_J + +#define __________________SOUL_R1__________________ KC_K, KC_M, KC_U, KC_Y, KC_SCLN +#define __________________SOUL_R2__________________ KC_F, KC_N, KC_E, KC_I, KC_O, KC_QUOTE +#define __________________SOUL_R3__________________ KC_B, KC_H, KC_COMM, KC_DOT, KC_SLSH + + +#define __________________NIRO_L1__________________ KC_Q, KC_W, KC_U, KC_D, KC_P +#define __________________NIRO_L2__________________ KC_A, KC_S, KC_E, KC_T, KC_G +#define __________________NIRO_L3__________________ KC_Z, KC_X, KC_C, KC_V, KC_B + +#define __________________NIRO_R1__________________ KC_J, KC_F, KC_Y, KC_L, KC_SCLN +#define __________________NIRO_R2__________________ KC_H, KC_N, KC_I, KC_R, KC_O, KC_QUOTE +#define __________________NIRO_R3__________________ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH + + +#define _________________ASSET_L1__________________ KC_Q, KC_W, KC_J, KC_F, KC_G +#define _________________ASSET_L2__________________ KC_A, KC_S, KC_E, KC_T, KC_D +#define _________________ASSET_L3__________________ KC_Z, KC_X, KC_C, KC_V, KC_B + +#define _________________ASSET_R1__________________ KC_Y, KC_P, KC_U, KC_L, KC_SCLN +#define _________________ASSET_R2__________________ KC_H, KC_N, KC_I, KC_O, KC_R, KC_QUOTE +#define _________________ASSET_R3__________________ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH + + +#define _________________MTGAP_L1__________________ KC_Y, KC_P, KC_O, KC_U, KC_J +#define _________________MTGAP_L2__________________ KC_I, KC_N, KC_E, KC_A, KC_COMM +#define _________________MTGAP_L3__________________ KC_Q, KC_Z, KC_SLSH, KC_DOT, KC_SCLN + +#define _________________MTGAP_R1__________________ KC_K, KC_D, KC_L, KC_C, KC_W +#define _________________MTGAP_R2__________________ KC_M, KC_H, KC_T, KC_S, KC_R, KC_QUOTE +#define _________________MTGAP_R3__________________ KC_B, KC_F, KC_G, KC_V, KC_X + + +#define _________________MINIMAK_L1________________ KC_Q, KC_W, KC_D, KC_R, KC_K +#define _________________MINIMAK_L2________________ KC_A, KC_S, KC_T, KC_F, KC_G +#define _________________MINIMAK_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_B + +#define _________________MINIMAK_R1________________ KC_Y, KC_U, KC_I, KC_O, KC_P +#define _________________MINIMAK_R2________________ KC_H, KC_J, KC_E, KC_L, KC_SCLN, KC_QUOT +#define _________________MINIMAK_R3________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH + + +#define ________________MINIMAK_8_L1_______________ KC_Q, KC_W, KC_D, KC_R, KC_K +#define ________________MINIMAK_8_L2_______________ KC_A, KC_S, KC_T, KC_F, KC_G +#define ________________MINIMAK_8_L3_______________ KC_Z, KC_X, KC_C, KC_V, KC_B + +#define ________________MINIMAK_8_R1_______________ KC_Y, KC_U, KC_I, KC_L, KC_P +#define ________________MINIMAK_8_R2_______________ KC_H, KC_N, KC_E, KC_O, KC_SCLN, KC_QUOT +#define ________________MINIMAK_8_R3_______________ KC_J, KC_M, KC_COMM, KC_DOT, KC_SLSH + + +#define _______________MINIMAK_12_L1_______________ KC_Q, KC_W, KC_D, KC_F, KC_K +#define _______________MINIMAK_12_L2_______________ KC_A, KC_S, KC_T, KC_R, KC_G +#define _______________MINIMAK_12_L3_______________ KC_Z, KC_X, KC_C, KC_V, KC_B + +#define _______________MINIMAK_12_R1_______________ KC_Y, KC_U, KC_I, KC_L, KC_SCLN +#define _______________MINIMAK_12_R2_______________ KC_H, KC_N, KC_E, KC_O, KC_P, KC_QUOT +#define _______________MINIMAK_12_R3_______________ KC_J, KC_M, KC_COMM, KC_DOT, KC_SLSH #define ________________NUMBER_LEFT________________ KC_1, KC_2, KC_3, KC_4, KC_5 @@ -181,35 +244,35 @@ NOTE: These are all the same length. If you do a search/replace #define _________________FUNC_LEFT_________________ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5 #define _________________FUNC_RIGHT________________ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10 -#define ___________________BLANK___________________ _______, _______, _______, _______, _______ +#define ___________________BLANK___________________ _______, _______, _______, _______, _______ -#define _________________LOWER_L1__________________ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC -#define _________________LOWER_L2__________________ _________________FUNC_LEFT_________________ -#define _________________LOWER_L3__________________ _________________FUNC_RIGHT________________ +#define _________________LOWER_L1__________________ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC +#define _________________LOWER_L2__________________ _________________FUNC_LEFT_________________ +#define _________________LOWER_L3__________________ _________________FUNC_RIGHT________________ -#define _________________LOWER_R1__________________ KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN -#define _________________LOWER_R2__________________ _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR -#define _________________LOWER_R3__________________ _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END +#define _________________LOWER_R1__________________ KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN +#define _________________LOWER_R2__________________ _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR +#define _________________LOWER_R3__________________ _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END -#define _________________RAISE_L1__________________ ________________NUMBER_LEFT________________ -#define _________________RAISE_L2__________________ ___________________BLANK___________________ -#define _________________RAISE_L3__________________ ___________________BLANK___________________ +#define _________________RAISE_L1__________________ ________________NUMBER_LEFT________________ +#define _________________RAISE_L2__________________ ___________________BLANK___________________ +#define _________________RAISE_L3__________________ ___________________BLANK___________________ -#define _________________RAISE_R1__________________ ________________NUMBER_RIGHT_______________ -#define _________________RAISE_R2__________________ _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC -#define _________________RAISE_R3__________________ _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT +#define _________________RAISE_R1__________________ ________________NUMBER_RIGHT_______________ +#define _________________RAISE_R2__________________ _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC +#define _________________RAISE_R3__________________ _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT -#define _________________ADJUST_L1_________________ RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG -#define _________________ADJUST_L2_________________ MU_TOG , CK_TOGG, AU_ON, AU_OFF, CG_NORM -#define _________________ADJUST_L3_________________ RGB_RMOD,RGB_HUD,RGB_SAD, RGB_VAD, KC_RGB_T +#define _________________ADJUST_L1_________________ RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG +#define _________________ADJUST_L2_________________ MU_TOG , CK_TOGG, AU_ON, AU_OFF, CG_NORM +#define _________________ADJUST_L3_________________ RGB_RMOD,RGB_HUD,RGB_SAD, RGB_VAD, KC_RGB_T -#define _________________ADJUST_R1_________________ KC_SEC1, KC_SEC2, KC_SEC3, KC_SEC4, KC_SEC5 -#define _________________ADJUST_R2_________________ CG_SWAP, QWERTY, COLEMAK, DVORAK, WORKMAN -#define _________________ADJUST_R3_________________ MG_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT +#define _________________ADJUST_R1_________________ KC_SEC1, KC_SEC2, KC_SEC3, KC_SEC4, KC_SEC5 +#define _________________ADJUST_R2_________________ CG_SWAP, DEFLYR1, DEFLYR2, DEFLYR3, DEFLYR4 +#define _________________ADJUST_R3_________________ MG_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT // clang-format on diff --git a/users/dshields/config.h b/users/dshields/config.h index aa108147631a..9a722b89e66d 100644 --- a/users/dshields/config.h +++ b/users/dshields/config.h @@ -14,44 +14,44 @@ #define MOUSEKEY_MAX_SPEED 7 #define MOUSEKEY_WHEEL_DELAY 0 -#define DISABLE_RGB_MATRIX_ALPHAS_MODS -#define DISABLE_RGB_MATRIX_BREATHING -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL -#define DISABLE_RGB_MATRIX_BAND_SAT -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT -#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL -#define DISABLE_RGB_MATRIX_BAND_VAL -#define DISABLE_RGB_MATRIX_CYCLE_ALL -#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT -#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN -#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL -#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL -#define DISABLE_RGB_MATRIX_CYCLE_SPIRAL -#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN -#define DISABLE_RGB_MATRIX_DUAL_BEACON -#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS -#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON -#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -#define DISABLE_RGB_MATRIX_SOLID_SPLASH -#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH -#define DISABLE_RGB_MATRIX_SOLID_SPLASH -#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH -#define DISABLE_RGB_MATRIX_SPLASH -#define DISABLE_RGB_MATRIX_MULTISPLASH -#define DISABLE_RGB_MATRIX_SPLASH -#define DISABLE_RGB_MATRIX_MULTISPLASH +#undef ENABLE_RGB_MATRIX_ALPHAS_MODS +#undef ENABLE_RGB_MATRIX_BREATHING +#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#undef ENABLE_RGB_MATRIX_BAND_SAT +#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#undef ENABLE_RGB_MATRIX_BAND_VAL +#undef ENABLE_RGB_MATRIX_CYCLE_ALL +#undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#undef ENABLE_RGB_MATRIX_DUAL_BEACON +#undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#undef ENABLE_RGB_MATRIX_SOLID_SPLASH +#undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH +#undef ENABLE_RGB_MATRIX_SOLID_SPLASH +#undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH +#undef ENABLE_RGB_MATRIX_SPLASH +#undef ENABLE_RGB_MATRIX_MULTISPLASH +#undef ENABLE_RGB_MATRIX_SPLASH +#undef ENABLE_RGB_MATRIX_MULTISPLASH diff --git a/users/dshields/rules.mk b/users/dshields/rules.mk index 462649289b67..00e18521be65 100644 --- a/users/dshields/rules.mk +++ b/users/dshields/rules.mk @@ -5,7 +5,6 @@ COMMAND_ENABLE = no # Commands for debug and configuration CONSOLE_ENABLE = no # Console for debug(+400) EXTRAKEY_ENABLE = no SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -API_SYSEX_ENABLE = no SPACE_CADET_ENABLE = no LEADER_ENABLE = no DYNAMIC_MACRO_ENABLE = yes diff --git a/users/edvorakjp/edvorakjp.c b/users/edvorakjp/edvorakjp.c index d0cd106fff78..c44d8bb44073 100644 --- a/users/edvorakjp/edvorakjp.c +++ b/users/edvorakjp/edvorakjp.c @@ -7,7 +7,7 @@ void matrix_init_user(void) { __attribute__((weak)) void matrix_init_keymap() {} -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { state = update_tri_layer_state(state, L_EDVORAKJP_LOWER, L_EDVORAKJP_RAISE, L_EDVORAKJP_ADJUST); return layer_state_set_keymap(state); } diff --git a/users/edvorakjp/edvorakjp.h b/users/edvorakjp/edvorakjp.h index 5f20762c65c8..93cd9851b790 100644 --- a/users/edvorakjp/edvorakjp.h +++ b/users/edvorakjp/edvorakjp.h @@ -67,7 +67,7 @@ enum tap_dance_code { // base void matrix_init_user(void); void matrix_init_keymap(void); -uint32_t layer_state_set_user(uint32_t state); +layer_state_t layer_state_set_user(layer_state_t state); uint32_t layer_state_set_keymap(uint32_t state); bool process_record_user(uint16_t keycode, keyrecord_t *record); bool process_record_keymap(uint16_t keycode, keyrecord_t *record); diff --git a/users/ericgebhart/base_layers.h b/users/ericgebhart/base_layers.h index caf08105747c..fd88a40aef48 100644 --- a/users/ericgebhart/base_layers.h +++ b/users/ericgebhart/base_layers.h @@ -87,7 +87,7 @@ // the bottom rows for keyboards on bepo. // bepo on bepo - not enough space to go around.... -#define ___BOTTOM_LEFT_BP___ LCTL(BP_C), BP_ECRC, LCTL(BP_V), KC_LEFT, KC_RIGHT +#define ___BOTTOM_LEFT_BP___ LCTL(BP_C), BP_ECIR, LCTL(BP_V), KC_LEFT, KC_RIGHT #define ___BOTTOM_RIGHT_BP___ KC_UP, KC_DOWN, DB_BACKSLASH, BP_CCED, BP_PERC // for dvorak on bepo diff --git a/users/ericgebhart/core_keys.h b/users/ericgebhart/core_keys.h index 035f740016e4..a71d90574989 100644 --- a/users/ericgebhart/core_keys.h +++ b/users/ericgebhart/core_keys.h @@ -231,7 +231,7 @@ enum { #define BP_SFT_T_E SFT_T(BP_E) #define BP_SFT_T_M SFT_T(BP_M) -#define BP_SFT_T_ECRC SFT_T(BP_ECRC) +#define BP_SFT_T_ECRC SFT_T(BP_ECIR) #define BP_SFT_T_CCED SFT_T(BP_CCED) #define BP_LT_SYMB_COMM LT(SYMB,BP_COMM) diff --git a/users/ericgebhart/core_keysets.h b/users/ericgebhart/core_keysets.h index ffe02192f6b5..5baf02ccf663 100644 --- a/users/ericgebhart/core_keysets.h +++ b/users/ericgebhart/core_keysets.h @@ -111,33 +111,33 @@ // Bepo on fr-bepo software layer // for bepo on bepo -/* BP_DLR, BP_DQOT, BP_LGIL, BP_RGIL, BP_LPRN, BP_RPRN, KC_DEL, */ -#define ___SYMBOL_BEPO_L___ /* BP_DLR */ BP_DQOT, BP_LGIL, BP_RGIL, BP_LPRN, BP_RPRN +/* BP_DLR, BP_DQUO, BP_LDAQ, BP_RDAQ, BP_LPRN, BP_RPRN, KC_DEL, */ +#define ___SYMBOL_BEPO_L___ /* BP_DLR */ BP_DQUO, BP_LDAQ, BP_RDAQ, BP_LPRN, BP_RPRN /* KC_DEL, BP_AT, BP_PLUS, BP_MINS, BP_SLSH, BP_ASTR, BP_EQL, */ -#define ___SYMBOL_BEPO_R___ BP_AT, BP_PLUS, BP_MINS, BP_SLASH, BP_ASTR /* BP_EQL, BP_PERC */ +#define ___SYMBOL_BEPO_R___ BP_AT, BP_PLUS, BP_MINS, BP_SLSH, BP_ASTR /* BP_EQL, BP_PERC */ -#define ___BEPO_FR_L1___ BP_B, BP_ECUT, BP_P, BP_O, BP_EGRV +#define ___BEPO_FR_L1___ BP_B, BP_EACU, BP_P, BP_O, BP_EGRV #define ___BEPO_FR_L2___ BP_SFT_T_A, BP_LT_KP_U, BP_LT_SYMB_I, BP_LT_MDIA_E, BP_COMM -#define ___BEPO_FR_L3___ /*BP_ECRC*/ BP_AGRV, BP_Y, BP_X, BP_DOT, BP_K +#define ___BEPO_FR_L3___ /*BP_ECIR*/ BP_AGRV, BP_Y, BP_X, BP_DOT, BP_K -#define ___BEPO_FR_R1___ /* BP_DCRC,*/ BP_V, BP_D, BP_L, BP_J, BP_Z +#define ___BEPO_FR_R1___ /* BP_DCIR,*/ BP_V, BP_D, BP_L, BP_J, BP_Z #define ___BEPO_FR_R2___ /* BP_C, */ BP_T, BP_LT_SYMB_S, BP_LT_MDIA_R, BP_LT_KP_N, BP_SFT_T_M //BP_CCED -#define ___BEPO_FR_R3___ BP_APOS, BP_Q, BP_G, BP_H, BP_F //BP_SFT_T_W +#define ___BEPO_FR_R3___ BP_QUOT, BP_Q, BP_G, BP_H, BP_F //BP_SFT_T_W -/* BP_DLR, BP_DQOT, BP_LGIL, BP_RGIL, BP_LPRN, BP_RPRN, KC_DEL, */ -/* KC_TAB, BP_B, BP_ECUT, BP_P, BP_O, BP_EGRV, KC_BSPC, */ +/* BP_DLR, BP_DQUO, BP_LDAQ, BP_RDAQ, BP_LPRN, BP_RPRN, KC_DEL, */ +/* KC_TAB, BP_B, BP_EACU, BP_P, BP_O, BP_EGRV, KC_BSPC, */ /* KC_LSFT, BP_A, BP_U, BP_I, BP_E, BP_COMM, */ /* KC_LCTRL, BP_AGRV, BP_Y, BP_X, BP_DOT, BP_K, KC_ENT, */ -/* ESC_FN, BP_ECRC, KC_LGUI, KC_LALT, SPC_RALT, */ +/* ESC_FN, BP_ECIR, KC_LGUI, KC_LALT, SPC_RALT, */ /* TT(SWAP), KC_MNXT, */ /* KC_MPLY, */ /* TT(FN), TT(NUMS), KC_MPRV, */ /* /\* right hand *\/ */ /* KC_DEL, BP_AT, BP_PLUS, BP_MINS, BP_SLSH, BP_ASTR, BP_EQL, */ -/* KC_BSPC, BP_DCRC, BP_V, BP_D, BP_L, BP_J, BP_Z, */ +/* KC_BSPC, BP_DCIR, BP_V, BP_D, BP_L, BP_J, BP_Z, */ /* BP_C, BP_T, BP_S, BP_R, BP_N, M_RSFT, */ -/* KC_ENT, BP_APOS, BP_Q, BP_G, BP_H, BP_F, W_RCTL, */ +/* KC_ENT, BP_QUOT, BP_Q, BP_G, BP_H, BP_F, W_RCTL, */ /*******************************************************************/ @@ -183,7 +183,7 @@ #define ___KEYPAD_4_ALT___ KC_P0, KC_DOT, KC_PENT, KC_PENT // For Bepo -#define ___KEYPAD_1_BP___ DB_7, DB_8, DB_9, BP_SLASH +#define ___KEYPAD_1_BP___ DB_7, DB_8, DB_9, BP_SLSH #define ___KEYPAD_2_BP___ DB_4, DB_5, DB_6, BP_ASTR #define ___KEYPAD_3_BP___ DB_1, DB_2, DB_3, DB_MINUS #define ___KEYPAD_4_BP___ DB_0, DB_DOT, DB_EQL, BP_PLUS @@ -225,9 +225,9 @@ // SYMBOLS FOR BEPO // The top row. Bepo has symbols not numbers. Numbers are the shifted values. -#define ___SYMBOL_BEPO_L___ /* BP_DLR */ BP_DQOT, BP_LGIL, BP_RGIL, BP_LPRN, BP_RPRN +#define ___SYMBOL_BEPO_L___ /* BP_DLR */ BP_DQUO, BP_LDAQ, BP_RDAQ, BP_LPRN, BP_RPRN /* KC_DEL, BP_AT, BP_PLUS, BP_MINS, BP_SLSH, BP_ASTR, BP_EQL, */ -#define ___SYMBOL_BEPO_R___ BP_AT, BP_PLUS, BP_MINS, BP_SLASH, BP_ASTR /* BP_EQL, BP_PERC */ +#define ___SYMBOL_BEPO_R___ BP_AT, BP_PLUS, BP_MINS, BP_SLSH, BP_ASTR /* BP_EQL, BP_PERC */ // An arrangement for the left hand with a focus on the ()[]{}s. #define ___SYMBOLS_1_BP___ KC_EXLM, BP_AT, DB_LCBR, DB_RCBR, DB_PIPE @@ -237,7 +237,7 @@ // A larger 6 column arrangement for the left hand, A merge of dvorak and the above. #define ___SYMBOLS6_1_BP___ DB_GRV, DB_LESS, DB_GRTR, DB_LCBR, DB_RCBR, DB_HASH #define ___SYMBOLS6_2_BP___ KC_AMPR, BP_AT, BP_ASTR, DB_LPRN, DB_RPRN, BP_PERC -#define ___SYMBOLS6_3_BP___ BP_DLR, BP_DQOT, DB_QUOT, DB_LBRC, DB_RBRC, KC_COLON +#define ___SYMBOLS6_3_BP___ BP_DLR, BP_DQUO, DB_QUOT, DB_LBRC, DB_RBRC, KC_COLON #define ___SYMBOLS6_4_BP___ ___2___, DB_TILD, DB_DOT, KC_EXLM, DB_SCOLON #define ___SYMBOLS5_4_BP___ ___, DB_TILD, DB_DOT, KC_EXLM, DB_SCOLON @@ -248,9 +248,9 @@ #define ___SYMPAD_1_BP___ DB_GRV, BP_AMPR, BP_ASTR, DB_LCBR, BP_PLUS, DB_PIPE #define ___SYMPAD_2_BP___ DB_TILD, BP_DLR, BP_PERC, DB_CIRC, BP_ASTR, DB_GRV #define ___SYMPAD_3_BP___ ___, BP_EXLM, BP_AT, DB_HASH, BP_MINS, BP_SLSH -#define ___SYMPAD_4_BP___ ___, DB_RCBR, DB_DOT, BP_EQL, BP_MINUS, DB_BACKSLASH +#define ___SYMPAD_4_BP___ ___, DB_RCBR, DB_DOT, BP_EQL, BP_MINS, DB_BACKSLASH -#define ___5_SYMPAD_4_BP___ DB_RCBR, DB_DOT, BP_EQL, BP_MINUS, DB_BACKSLASH +#define ___5_SYMPAD_4_BP___ DB_RCBR, DB_DOT, BP_EQL, BP_MINS, DB_BACKSLASH // Parts are parts. // MOUSE, ARROW and MEDIA KEY SETS diff --git a/users/ericgebhart/ericgebhart.c b/users/ericgebhart/ericgebhart.c index abb87899b7b5..d34563865d32 100644 --- a/users/ericgebhart/ericgebhart.c +++ b/users/ericgebhart/ericgebhart.c @@ -86,25 +86,25 @@ static void switch_default_layer(uint8_t layer) { // reasnably sized array without difficulties. The macro is for the constant declarations // the function is for when we use it. const uint8_t key_translations[][2][2] = { - [GR(DB_1)] = {{BP_DQOT, MOD_LSFT}, {BP_DCRC, MOD_LSFT}}, - [GR(DB_2)] = {{BP_LGIL, MOD_LSFT}, {BP_AT, MOD_NONE}}, - [GR(DB_3)] = {{BP_RGIL, MOD_LSFT}, {BP_DLR, MOD_LSFT}}, + [GR(DB_1)] = {{BP_DQUO, MOD_LSFT}, {BP_DCIR, MOD_LSFT}}, + [GR(DB_2)] = {{BP_LDAQ, MOD_LSFT}, {BP_AT, MOD_NONE}}, + [GR(DB_3)] = {{BP_RDAQ, MOD_LSFT}, {BP_DLR, MOD_LSFT}}, [GR(DB_4)] = {{BP_LPRN, MOD_LSFT}, {BP_DLR, MOD_NONE}}, [GR(DB_5)] = {{BP_RPRN, MOD_LSFT}, {BP_PERC, MOD_NONE}}, [GR(DB_6)] = {{BP_AT, MOD_LSFT}, {BP_AT, MOD_BIT(KC_RALT)}}, [GR(DB_7)] = {{BP_PLUS, MOD_LSFT}, {BP_P, MOD_BIT(KC_RALT)}}, [GR(DB_8)] = {{BP_MINS, MOD_LSFT}, {BP_ASTR, MOD_NONE}}, - [GR(DB_9)] = {{BP_SLASH, MOD_LSFT}, {BP_LPRN, MOD_NONE}}, + [GR(DB_9)] = {{BP_SLSH, MOD_LSFT}, {BP_LPRN, MOD_NONE}}, [GR(DB_0)] = {{BP_ASTR, MOD_LSFT}, {BP_RPRN, MOD_NONE}}, [GR(DB_GRV)] = {{BP_PERC, MOD_LSFT}, {BP_K, MOD_BIT(KC_RALT)}}, [GR(DB_SCOLON)] = {{BP_COMM, MOD_LSFT}, {BP_DOT, MOD_LSFT}}, - [GR(DB_SLASH)] = {{BP_SLASH, MOD_NONE}, {BP_APOS, MOD_LSFT}}, + [GR(DB_SLASH)] = {{BP_SLSH, MOD_NONE}, {BP_QUOT, MOD_LSFT}}, [GR(DB_BACKSLASH)] = {{BP_AGRV, MOD_BIT(KC_RALT)}, {BP_B, MOD_BIT(KC_RALT)}}, [GR(DB_EQL)] = {{BP_EQL, MOD_NONE}, {BP_PLUS, MOD_NONE}}, - [GR(DB_COMM)] = {{BP_COMMA, MOD_NONE}, {BP_LGIL, MOD_BIT(KC_RALT)}}, - [GR(DB_DOT)] = {{BP_DOT, MOD_NONE}, {BP_RGIL, MOD_BIT(KC_RALT)}}, - [GR(DB_QUOT)] = {{BP_APOS, MOD_NONE}, {BP_DQOT, MOD_NONE}}, - [GR(DB_MINUS)] = {{BP_MINUS, MOD_NONE}, {KC_SPC, MOD_BIT(KC_RALT)}}, + [GR(DB_COMM)] = {{BP_COMM, MOD_NONE}, {BP_LDAQ, MOD_BIT(KC_RALT)}}, + [GR(DB_DOT)] = {{BP_DOT, MOD_NONE}, {BP_RDAQ, MOD_BIT(KC_RALT)}}, + [GR(DB_QUOT)] = {{BP_QUOT, MOD_NONE}, {BP_DQUO, MOD_NONE}}, + [GR(DB_MINUS)] = {{BP_MINS, MOD_NONE}, {KC_SPC, MOD_BIT(KC_RALT)}}, [GR(DB_LPRN)] = {{BP_LPRN, MOD_NONE}, {BP_LPRN, MOD_BIT(KC_RALT)}}, [GR(DB_RPRN)] = {{BP_RPRN, MOD_NONE}, {BP_RPRN, MOD_BIT(KC_RALT)}}, [GR(DB_LBRC)] = {{BP_Y, MOD_BIT(KC_RALT)}, {BP_LPRN, MOD_BIT(KC_RALT)}}, @@ -116,8 +116,8 @@ const uint8_t key_translations[][2][2] = { [GR(DB_PIPE)] = {{BP_B, MOD_BIT(KC_RALT)}, {BP_B, MOD_BIT(KC_RALT)}}, [GR(DB_TILD)] = {{BP_K, MOD_BIT(KC_RALT)}, {BP_K, MOD_BIT(KC_RALT)}}, [GR(DB_CIRC)] = {{BP_AT, MOD_BIT(KC_RALT)}, {BP_AT, MOD_BIT(KC_RALT)}}, - [GR(DB_LESS)] = {{BP_LGIL, MOD_BIT(KC_RALT)}, {BP_LGIL, MOD_BIT(KC_RALT)}}, - [GR(DB_GRTR)] = {{BP_RGIL, MOD_BIT(KC_RALT)}, {BP_RGIL, MOD_BIT(KC_RALT)}}, + [GR(DB_LESS)] = {{BP_LDAQ, MOD_BIT(KC_RALT)}, {BP_LDAQ, MOD_BIT(KC_RALT)}}, + [GR(DB_GRTR)] = {{BP_RDAQ, MOD_BIT(KC_RALT)}, {BP_RDAQ, MOD_BIT(KC_RALT)}}, }; diff --git a/users/ericgebhart/rules.mk b/users/ericgebhart/rules.mk index 70017a5950e5..698f6131edcb 100755 --- a/users/ericgebhart/rules.mk +++ b/users/ericgebhart/rules.mk @@ -9,7 +9,6 @@ KEY_LOCK_ENABLE = yes # Enable the KC_LOCK key TAP_DANCE_ENABLE = yes # Enable the tap dance feature. CONSOLE_ENABLE = no # Console for debug -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite UNICODE_ENABLE = no SLEEP_LED_ENABLE = no -API_SYSEX_ENABLE = no diff --git a/users/gordon/rules.mk b/users/gordon/rules.mk index 06e671a63598..c282f002846f 100644 --- a/users/gordon/rules.mk +++ b/users/gordon/rules.mk @@ -1,4 +1,3 @@ TAP_DANCE_ENABLE = yes SRC += gordon.c -# BOOTMAGIC_ENABLE = full diff --git a/users/haervig/config.h b/users/haervig/config.h new file mode 100644 index 000000000000..6a7d67737eca --- /dev/null +++ b/users/haervig/config.h @@ -0,0 +1,19 @@ +/* +Copyright 2021 Jakob Hærvig <jakob.haervig@gmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#pragma once +#define TAPPING_TERM 200 diff --git a/users/haervig/haervig.c b/users/haervig/haervig.c new file mode 100644 index 000000000000..d03b43edc18c --- /dev/null +++ b/users/haervig/haervig.c @@ -0,0 +1,234 @@ +/* +Copyright 2021 Jakob Hærvig <jakob.haervig@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 "haervig.h" + +#ifdef DANISH_ENABLE +// These indicate if left and right shift are physically pressed +bool lshift = false; +bool rshift = false; + +// Interrupt and times for space cadet shift +bool lshiftp = false; +bool rshiftp = false; +uint16_t lshift_timer = 0; +uint16_t rshift_timer = 0; + +// Number of items that are saved in prev_kcs +uint8_t prev_indx = 0; +// Used to save the last 6 actual keycodes activated by frankenkeycodes +uint16_t prev_kcs[6] = {0, 0, 0, 0, 0, 0}; + +// If true the deadkey characters grave and circonflexe are not automatically escaped +bool esct = false; + +/* +Used to add a keycode to a prev_kcs to remember it. +When full the last code gets discarded and replaced by +the new one. +*/ +void add_to_prev(uint16_t kc){ + for (int i=0; i<prev_indx; i++){ + if (kc == prev_kcs[i]) + return; + } + if (prev_indx == 6){ + for (int i=5; i>0; i--){ + prev_kcs[i] = prev_kcs[i-1]; + } + prev_kcs[0] = kc; + } else { + prev_kcs[prev_indx] = kc; + prev_indx++; + } +} + +/* +Unregisters all codes saved in prev_kcs and resets prev_indx. +gets called on multiple occasions mainly when shift is released +and when frankenkeycodes are pressed. Prevents output of +wrong characters when really specific key combinations +that would never occur during normal usage are pressed. +*/ +void unreg_prev(void){ + if (prev_indx == 0) + return; + for (int i=0; i<prev_indx; i++){ + unregister_code(prev_kcs[i]); + } + prev_indx = 0; +} +#endif + +// Interrupt and times for Nav/Esc +bool navesc = false; +uint16_t navesc_timer = 0; + +// Interrupts all timers +void timer_timeout(void){ + #ifdef DANISH_ENABLE + lshiftp = false; + rshiftp = false; + #endif + navesc = false; + timer_timeout_keymap(); +} + +__attribute__((weak)) +void timer_timeout_keymap(void){ +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_LGUI: + case KC_RGUI: + if (record->event.pressed) + timer_timeout(); + return true; + case CU_NAV: + if(record->event.pressed) { + navesc = true; + navesc_timer = timer_read(); + layer_on(_NAV); + } else { + if (timer_elapsed(navesc_timer) < TAPPING_TERM && navesc) { + tap_code(KC_ESC); + } + layer_off(_NAV); + } + return false; + + #ifdef DANISH_ENABLE + case CU_LSFT: + if(record->event.pressed) { + lshiftp = true; + lshift_timer = timer_read(); + unregister_code(KC_LSFT); + register_code(KC_LSFT); + lshift = true; + } else { + if (timer_elapsed(lshift_timer) < TAPPING_TERM && lshiftp) { + register_code(KC_LSFT); + tap_code(KC_8); + unregister_code(KC_LSFT); + } + unreg_prev(); + if (!rshift) + unregister_code(KC_LSFT); + lshift = false; + } + return false; + case CU_RSFT: + if(record->event.pressed) { + rshiftp = true; + rshift_timer = timer_read(); + unregister_code(KC_LSFT); + register_code(KC_LSFT); + rshift = true; + } else { + if (timer_elapsed(rshift_timer) < TAPPING_TERM && rshiftp) { + register_code(KC_LSFT); + tap_code(KC_9); + unregister_code(KC_LSFT); + } + unreg_prev(); + if (!lshift) + unregister_code(KC_LSFT); + rshift = false; + } + return false; + case CU_COMM: + SHIFT_NO(DK_COMM, KC_GRV) + case CU_DOT: + SHIFT_NORM(DK_DOT, KC_GRV) + case CU_SLSH: + SHIFT_ALL(DK_7, KC_MINS) + case CU_SCLN: + SHIFT_ALL(DK_COMM, DK_DOT) + case CU_QUOT: + SHIFT_NORM(DK_QUOT, DK_2) + case CU_2: + NORM_ALGR(DK_2, KC_NUHS) + case CU_4: + if (record->event.pressed) { \ + timer_timeout(); \ + if (lshift || rshift) { \ + register_code(KC_LSFT); \ + register_code(KC_ALGR); \ + unregister_code(KC_3); \ + tap_code(KC_3); \ + unregister_code(KC_3); \ + } else { \ + unregister_code(KC_4); \ + tap_code(KC_4); \ + } \ + unregister_code(KC_ALGR); \ + unregister_code(KC_LSFT); \ + } \ + return false; + case CU_6: + SHIFT_NORM(DK_6, KC_RBRC) + case CU_7: + SHIFT_NORM(DK_7, DK_6) + case CU_8: + SHIFT_NORM(DK_8, KC_NUHS) + case CU_9: + SHIFT_NORM(DK_9, DK_8) + case CU_0: + SHIFT_NORM(DK_0, DK_9) + case CU_MINS: + SHIFT_NORM(KC_SLSH, KC_SLSH) + case CU_EQL: + SHIFT_SWITCH(DK_0, DK_PLUS) + case CU_BSPC: + SHIFT_NO(KC_BSPC, KC_DEL) + case CU_LBRC: + NORM_ALGRSHIFT(DK_8, DK_8) + case CU_RBRC: + NORM_ALGRSHIFT(DK_9, DK_9) + case CU_BSLS: + ALGR_SWITCH(DK_7, DK_I) + case KC_LCTL: + case KC_RCTL: + if(!record->event.pressed) { + timer_timeout(); + unregister_code(KC_Z); + unregister_code(KC_Y); + } + return true; + #endif + + default: + if(record->event.pressed) { + timer_timeout(); + + #ifdef DANISH_ENABLE + if (lshift || rshift) + register_code(KC_LSFT); + else + unregister_code(KC_LSFT); + #endif + + } + return process_record_keymap(keycode, record); + } +} + +__attribute__((weak)) +bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { + return true; +} diff --git a/users/haervig/haervig.h b/users/haervig/haervig.h new file mode 100644 index 000000000000..e0d47e4cc904 --- /dev/null +++ b/users/haervig/haervig.h @@ -0,0 +1,297 @@ +/* +Copyright 2021 Jakob Hærvig <jakob.haervig@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 "quantum.h" +#include "keymap_danish.h" + +enum userspace_layers { + _DEADKEY = 14, // Change if more than 16 layers are required + _NAV +}; + +enum userspace_custom_keycodes { + //CU_GAME = SAFE_RANGE, // Toggle game mode on/off + CU_NAV = SAFE_RANGE, // NAV | ESC + + #ifdef DANISH_ENABLE + CU_LSFT, // LSFT | ( + CU_RSFT, // LSFT | ) + CU_COMM, // , | < + CU_DOT, // . | > + CU_SLSH, // / | ? + CU_SCLN, // ; | : + CU_QUOT, // ' | " + CU_2, // 2 | @ + CU_4, // 4 | $ + CU_6, // 6 | ^ + CU_7, // 7 | & + CU_8, // 8 | * + CU_9, // 9 | ( + CU_0, // 0 | ) + CU_MINS, // - | _ + CU_EQL, // = | + + CU_BSPC, // backspace | delete + CU_LBRC, // [ | { + CU_RBRC, // ] | } + CU_BSLS, // \ | | + #endif + + NEW_SAFE_RANGE // Use for keymap specific keycodes +}; + +#ifdef DANISH_ENABLE +extern bool lshift; +extern bool rshift; +extern bool lshiftp; +extern bool rshiftp; +extern uint16_t lshift_timer; +extern uint16_t rshift_timer; + +extern uint8_t prev_indx; +extern uint16_t prev_kcs[6]; +void add_to_prev(uint16_t kc); +void unreg_prev(void); + +extern bool esct; +#endif + +extern bool navesc; +extern uint16_t navesc_timer; + +void timer_timeout(void); + +void timer_timeout_keymap(void); + +bool process_record_keymap(uint16_t keycode, keyrecord_t *record); + +#define CTRLX LCTL(KC_X) +#define CTRLC LCTL(KC_C) +#define CTRLV LCTL(KC_V) + +#define ALTF4 LALT(KC_F4) + +#define GUIU LGUI(KC_UP) +#define GUID LGUI(KC_DOWN) +#define GUIL LGUI(KC_LEFT) +#define GUIR RGUI(KC_RIGHT) + +#define CTLENT CTL_T(KC_ENT) + +#define EMOJI LWIN(KC_DOT) + +/* +Templates for Keys, with custom shifted and non shifted Characters +*/ + +// Normal shift status +#define SHIFT_NORM(kc1, kc2) \ +if (record->event.pressed) { \ + timer_timeout(); \ + if (lshift || rshift) { \ + register_code(KC_LSFT); \ + unregister_code(kc2); \ + register_code(kc2); \ + add_to_prev(kc2); \ + } else { \ + unregister_code(KC_LSFT); \ + unregister_code(kc1); \ + register_code(kc1); \ + } \ +} else { \ + unregister_code(kc1); \ + unregister_code(kc2); \ +} \ +return false; + +// Inverted shift status +#define SHIFT_SWITCH(kc1, kc2) \ +if (record->event.pressed) { \ + timer_timeout(); \ + if (lshift || rshift) { \ + unregister_code(KC_LSFT); \ + unregister_code(kc2); \ + register_code(kc2); \ + add_to_prev(kc2); \ + } else { \ + register_code(KC_LSFT); \ + unregister_code(kc1); \ + register_code(kc1); \ + add_to_prev(kc1); \ + } \ +} else { \ + unregister_code(kc1); \ + unregister_code(kc2); \ + unreg_prev(); \ + if (lshift || rshift) \ + register_code(KC_LSFT); \ + else \ + unregister_code(KC_LSFT); \ +} \ +return false; + +// Always shifted +#define SHIFT_ALL(kc1, kc2) \ +if (record->event.pressed) { \ + timer_timeout(); \ + register_code(KC_LSFT); \ + if (lshift || rshift) { \ + tap_code(kc2); \ + add_to_prev(kc2); \ + } else { \ + tap_code(kc1); \ + add_to_prev(kc1); \ + } \ +} else { \ + unregister_code(kc1); \ + unregister_code(kc2); \ + unreg_prev(); \ + if (lshift || rshift) \ + register_code(KC_LSFT); \ + else \ + unregister_code(KC_LSFT); \ +} \ +return false; + +// Never shifted +#define SHIFT_NO(kc1, kc2) \ +if (record->event.pressed) { \ + timer_timeout(); \ + unregister_code(KC_LSFT); \ + if (lshift || rshift) { \ + tap_code(kc2); \ + add_to_prev(kc2); \ + } else { \ + tap_code(kc1); \ + } \ +} else { \ + unregister_code(kc1); \ + unregister_code(kc2); \ + unreg_prev(); \ + if (lshift || rshift) \ + register_code(KC_LSFT); \ + else \ + unregister_code(KC_LSFT); \ +} \ +return false; + +// Norm AltGr +#define NORM_ALGR(kc1, kc2) \ +if (record->event.pressed) { \ + timer_timeout(); \ + if (lshift || rshift) { \ + register_code(KC_ALGR); \ + unregister_code(KC_LSFT); \ + tap_code(kc2); \ + unregister_code(KC_ALGR); \ + } else { \ + unregister_code(KC_ALGR); \ + unregister_code(KC_LSFT); \ + tap_code(kc1); \ + } \ +} else { \ + unregister_code(kc1); \ + unregister_code(kc2); \ +} \ +return false; + +// Norm AltGr shift +#define NORM_ALGRSHIFT(kc1, kc2) \ +if (record->event.pressed) { \ + timer_timeout(); \ + register_code(KC_LSFT); \ + register_code(KC_ALGR); \ + if (lshift || rshift) { \ + unregister_code(kc2); \ + tap_code(kc2); \ + unregister_code(KC_LSFT); \ + } else { \ + unregister_code(KC_LSFT); \ + unregister_code(kc1); \ + register_code(kc1); \ + } \ + unregister_code(KC_ALGR); \ +} else { \ + unregister_code(kc1); \ + unregister_code(kc2); \ +} \ +return false; + +// Inverted altgr status +#define ALGR_SWITCH(kc1, kc2) \ +if (record->event.pressed) { \ + timer_timeout(); \ + register_code(KC_ALGR); \ + if (lshift || rshift) { \ + unregister_code(KC_LSFT); \ + unregister_code(kc2); \ + register_code(kc2); \ + unregister_code(KC_ALGR); \ + add_to_prev(kc2); \ + } else { \ + register_code(KC_LSFT); \ + unregister_code(kc1); \ + register_code(kc1); \ + unregister_code(KC_ALGR); \ + add_to_prev(kc1); \ + } \ +} else { \ + unregister_code(kc1); \ + unregister_code(kc2); \ + unreg_prev(); \ + if (lshift || rshift) \ + register_code(KC_LSFT); \ + else \ + unregister_code(KC_LSFT); \ +} \ +return false; + +// Always AltGr +#define SHIFT_ALGR(kc1, kc2) \ +if (record->event.pressed) { \ + timer_timeout(); \ + unregister_code(KC_LSFT); \ + register_code(KC_ALGR); \ + if (lshift || rshift) { \ + unregister_code(kc2); \ + tap_code(kc2); \ + register_code(KC_LSFT); \ + } else { \ + unregister_code(kc1); \ + tap_code(kc1); \ + } \ + unregister_code(KC_ALGR); \ +} \ +return false; + +// Different keycode when Ctrl is pressed +#define CTRL(kc1, kc2) \ +if(record->event.pressed) { \ + timer_timeout(); \ + if (lshift || rshift) \ + register_code(KC_LSFT); \ + else \ + unregister_code(KC_LSFT); \ + if (keyboard_report->mods & (MOD_BIT(KC_LCTL) | MOD_BIT(KC_RCTL))){ \ + register_code(kc2); \ + } else { \ + register_code(kc1); \ + } \ +} else { \ + unregister_code(kc1); \ + unregister_code(kc2); \ +} \ +return false; diff --git a/users/haervig/readme.md b/users/haervig/readme.md new file mode 100644 index 000000000000..dc2ebbd13c84 --- /dev/null +++ b/users/haervig/readme.md @@ -0,0 +1,11 @@ +# haervig Userspace + +This userspace keeps my userdefined codes. I work on a ANSI keyboard on a Danish macOS system. I believe this code might be relevant for similar users. A big shout out to user spacebarracecar for the ideas on how to map keys, which served as the basis of this code. + +## US Layout Keys for Danish PCs + +By daily work involves a lot of coding. I find an ANSI layout superior and decided to buy a QMK keyboard. However, all PC's here in Denmark are set to input language Danish. Even though I could simply set input language language to US international, I find this inconvenient. I instead decided to map my keys so the ANSI keyboard would will function as expected when the OS inputn language is Danish. + +## More details + +Tracking the current state of the shift code is nessesary for it to work. User spacebarracecar has documented the idea thoroughly and should serve you as a starting point if you wish to implement this code. I modified the code to suit Danish input language. Additionally, a couple of functions were added to accomodate the altgr key. \ No newline at end of file diff --git a/users/haervig/rules.mk b/users/haervig/rules.mk new file mode 100644 index 000000000000..e06647ff270a --- /dev/null +++ b/users/haervig/rules.mk @@ -0,0 +1,5 @@ +SRC += haervig.c + +ifeq ($(strip $(DANISH_ENABLE)), yes) + OPT_DEFS += -DDANISH_ENABLE +endif diff --git a/users/hvp/config.h b/users/hvp/config.h new file mode 100644 index 000000000000..68dd8b482808 --- /dev/null +++ b/users/hvp/config.h @@ -0,0 +1,18 @@ + /* Copyright 2021 hvp + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should 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 LONG_TAPPING_TERM 1000 \ No newline at end of file diff --git a/users/hvp/hvp.h b/users/hvp/hvp.h index b016da9e2521..275838a49acf 100644 --- a/users/hvp/hvp.h +++ b/users/hvp/hvp.h @@ -1,13 +1,43 @@ + /* Copyright 2021 hvp + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should 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" +#undef TAPPING_TERM +#define TAPPING_TERM 150 #ifdef TAP_DANCE_ENABLE # include "tap_dances.h" #endif -#include "quantum.h" -#undef TAPPING_TERM -#define TAPPING_TERM 150 +#ifdef TAPPING_TERM_PER_KEY +# include "per_key.h" +#endif -// Keys #define D_NAVI MT(MOD_LCTL | MOD_LSFT, KC_D) + +/* Home-row mods */ +#define LG_A MT(MOD_LGUI, KC_A) +#define LA_S MT(MOD_LALT, KC_S) +#define LS_D MT(MOD_LSFT, KC_D) +#define LC_F MT(MOD_LCTL, KC_F) + +#define RC_H MT(MOD_RCTL, KC_H) +#define RS_J MT(MOD_RSFT, KC_J) +#define RA_K MT(MOD_RALT, KC_K) +#define RG_L MT(MOD_RGUI, KC_L) \ No newline at end of file diff --git a/users/hvp/per_key.c b/users/hvp/per_key.c new file mode 100644 index 000000000000..571fdcc915e0 --- /dev/null +++ b/users/hvp/per_key.c @@ -0,0 +1,43 @@ + /* Copyright 2021 hvp + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 per_key.h + +uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case MT(MOD_LGUI, KC_A): + return TAPPING_TERM + LONG_TAPPING_TERM; + case MT(MOD_LALT, KC_S): + return TAPPING_TERM + LONG_TAPPING_TERM; + case MT(MOD_LSFT, KC_D): + return TAPPING_TERM + LONG_TAPPING_TERM; + case MT(MOD_LCTL, KC_F): + return TAPPING_TERM + LONG_TAPPING_TERM; + case MT(MOD_RCTL, KC_H): + return TAPPING_TERM + LONG_TAPPING_TERM; + case MT(MOD_RSFT, KC_J): + return TAPPING_TERM + LONG_TAPPING_TERM; + case MT(MOD_RALT, KC_K): + return TAPPING_TERM + LONG_TAPPING_TERM; + case MT(MOD_RGUI, KC_L): + return TAPPING_TERM + LONG_TAPPING_TERM; + case KC_LCPO: + return TAPPING_TERM 75; + default: + return TAPPING_TERM; + } +} \ No newline at end of file diff --git a/users/hvp/rules.mk b/users/hvp/rules.mk index 0a7e679631d8..549483b67b7c 100644 --- a/users/hvp/rules.mk +++ b/users/hvp/rules.mk @@ -1,4 +1,9 @@ + SRC += hvp.c ifeq ($(strip $(TAP_DANCE_ENABLE)), yes) - SRC += tap_dances.c + SRC += tap_dances.c +endif + +ifeq ($(strip $(TAPPING_TERM_PER_KEY)), yes) + SRC += per_key.c endif \ No newline at end of file diff --git a/users/hvp/tap_dances.h b/users/hvp/tap_dances.h index cad9bd90ec99..a00caf092972 100644 --- a/users/hvp/tap_dances.h +++ b/users/hvp/tap_dances.h @@ -1,5 +1,22 @@ + /* Copyright 2021 hvp + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should 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 "hvp.h" +#include "quantum.h" // Tap Dance Declarations enum tapdance_id @@ -9,4 +26,4 @@ enum tapdance_id TD3, TD4, TD5 -}; +}; \ No newline at end of file diff --git a/users/ibnuda/abstraction.c b/users/ibnuda/abstraction.c new file mode 100644 index 000000000000..757248a260c7 --- /dev/null +++ b/users/ibnuda/abstraction.c @@ -0,0 +1,17 @@ +/* Copyright 2021 Ibnu D. Aji + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "abstraction.h" \ No newline at end of file diff --git a/users/ibnuda/abstraction.h b/users/ibnuda/abstraction.h new file mode 100644 index 000000000000..0870116c9a05 --- /dev/null +++ b/users/ibnuda/abstraction.h @@ -0,0 +1,117 @@ +/* Copyright 2021 Ibnu D. Aji + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should 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" + +enum { + _BASE, + _LOWER, + _RAISE, + _ADJUST, +}; + +// keycode abstraction +// ABC: +// A: L = left +// R = right +// B: U = upper row +// M = middle row +// L = lower row +// C: P = pinky finger +// R = ring finger +// M = middle finger +// I = index finger +// II = inner index finger +#define LUP KC_Q +#define LUR KC_V +#define LUM KC_C +#define LUI KC_P +#define LUII KC_B +#define LMP KC_R +#define LMR KC_S +#define LMM KC_T +#define LMI KC_H +#define LMII KC_D +#define LLP KC_QUOT +#define LLR KC_J +#define LLM KC_G +#define LLI KC_K +#define LLII KC_X + +#define RUP KC_Z +#define RUR KC_Y +#define RUM KC_U +#define RUI KC_L +#define RUII KC_DOT +#define RMP KC_O +#define RMR KC_I +#define RMM KC_A +#define RMI KC_N +#define RMII KC_F +#define RLP KC_SLSH +#define RLR KC_SCLN +#define RLM KC_W +#define RLI KC_M +#define RLII KC_COMM + + +// thumb keys. +#define TRAISE TG(_RAISE) +#define AL_ENT ALT_T(KC_ENT) +#define SF_BSPC SFT_T(KC_BSPC) +#define CT_ESC CTL_T(KC_ESC) + +// home row mods. +#define CTLR LCTL_T(LMR) +#define CTRR RCTL_T(RMR) +#define CT_LEFT LCTL_T(KC_LEFT) +#define CT_SIX RCTL_T(KC_6) + +#define SHLP LSFT_T(LMP) +#define SHRP RSFT_T(RMP) +#define SH_HASH LSFT_T(KC_HASH) +#define SH_ZERO RSFT_T(KC_0) + +#define ALLM LALT_T(LMM) +#define ALRM RALT_T(RMM) +#define AL_DOWN LALT_T(KC_DOWN) +#define AL_FIVE RALT_T(KC_5) + +#define GULII RGUI_T(LMII) +#define GURII LGUI_T(RMII) +#define GU_DLR RGUI_T(KC_DLR) +#define GU_EQL LGUI_T(KC_EQL) + +// layer toggle. +#define LW_E LT(_LOWER, KC_E) +#define RS_SPC LT(_RAISE, KC_SPC) + +#define ADDDD MO(_ADJUST) + +// common shortcuts for windows and linux that i use. +#define NXTTAB LCTL(KC_PGDN) +#define PRVTAB LCTL(KC_PGUP) +#define UPTAB LCTL(LSFT(KC_PGUP)) +#define DNTAB LCTL(LSFT(KC_PGDN)) +#define NXTWIN LALT(KC_TAB) +#define PRVWIN LALT(LSFT(KC_TAB)) +#define CALDL LCTL(LALT(KC_DELT)) +#define TSKMGR LCTL(LSFT(KC_ESC)) +#define EXPLR LGUI(KC_E) +#define LCKGUI LGUI(KC_L) +#define CONPST LSFT(KC_INS) +#define CLSGUI LALT(KC_F4) diff --git a/users/ibnuda/combo.h b/users/ibnuda/combo.h index a9fa69d222c1..5a331e7d010b 100644 --- a/users/ibnuda/combo.h +++ b/users/ibnuda/combo.h @@ -1,61 +1,96 @@ #pragma once #include "quantum.h" +#include "abstraction.h" + // enum for combos. enum combos { // left hand combinations. - COLON_COMMA, - COMMA_DOT, - DOT_P, - QUOT_Q, - Q_J, - J_K, + R_U_PINKY_RING, + R_U_RING_MIDDLE, + R_U_RING_INDEX, + R_U_MIDDLE_INDEX, + R_U_MIDDLE_INNER_INDEX, + R_U_INDEX_INNER_INDEX, + R_L_PINKY_RING, + R_L_RING_MIDDLE, + R_L_RING_INDEX, + R_L_MIDDLE_INDEX, + R_L_INDEX_INNER_INDEX, // right hand combinations. - L_R, - R_C, - C_G, - V_W, - W_M, + L_U_PINKY_RING, + L_U_RING_MIDDLE, + L_U_RING_INDEX, + L_U_MIDDLE_INDEX, + L_U_MIDDLE_INNER_INDEX, + L_U_INNER_INNER_INDEX, + L_L_PINKY_RING, + L_L_RING_MIDDLE, + L_L_MIDDLE_INDEX, + L_L_RING_INDEX, + L_L_INDEX_INNER_INDEX, // both hands combinations. - J_W, + B_L_MIDDLE_MIDDLE, }; // left hand combinations. -const uint16_t PROGMEM colon_comma_combo[] = {KC_SCLN, KC_COMM, COMBO_END}; -const uint16_t PROGMEM comma_dot_combo[] = {KC_COMM, KC_DOT, COMBO_END}; -const uint16_t PROGMEM dot_p_combo[] = {KC_DOT, KC_P, COMBO_END}; -const uint16_t PROGMEM quot_q_combo[] = {KC_QUOT, KC_Q, COMBO_END}; -const uint16_t PROGMEM q_j_combo[] = {KC_Q, KC_J, COMBO_END}; -const uint16_t PROGMEM j_k_combo[] = {KC_J, KC_K, COMBO_END}; +const uint16_t PROGMEM lu_p_r_combo[] = {LUP, LUR, COMBO_END}; +const uint16_t PROGMEM lu_r_m_combo[] = {LUR, LUM, COMBO_END}; +const uint16_t PROGMEM lu_r_i_combo[] = {LUR, LUI, COMBO_END}; +const uint16_t PROGMEM lu_m_i_combo[] = {LUM, LUI, COMBO_END}; +const uint16_t PROGMEM lu_m_ii_combo[] = {LUM, LUII, COMBO_END}; +const uint16_t PROGMEM lu_i_ii_combo[] = {LUI, LUII, COMBO_END}; +const uint16_t PROGMEM ll_p_r_combo[] = {LLP, LLR, COMBO_END}; +const uint16_t PROGMEM ll_r_m_combo[] = {LLR, LLM, COMBO_END}; +const uint16_t PROGMEM ll_r_i_combo[] = {LLR, LLI, COMBO_END}; +const uint16_t PROGMEM ll_m_i_combo[] = {LLM, LLI, COMBO_END}; +const uint16_t PROGMEM ll_i_ii_combo[] = {LLI, LLII, COMBO_END}; // right hand combinations. -const uint16_t PROGMEM l_r_combo[] = {KC_L, KC_R, COMBO_END}; -const uint16_t PROGMEM r_c_combo[] = {KC_R, KC_C, COMBO_END}; -const uint16_t PROGMEM c_g_combo[] = {KC_C, KC_G, COMBO_END}; -const uint16_t PROGMEM v_w_combo[] = {KC_V, KC_W, COMBO_END}; -const uint16_t PROGMEM w_m_combo[] = {KC_W, KC_M, COMBO_END}; +const uint16_t PROGMEM ru_p_r_combo[] = {RUP, RUR, COMBO_END}; +const uint16_t PROGMEM ru_r_m_combo[] = {RUR, RUM, COMBO_END}; +const uint16_t PROGMEM ru_r_i_combo[] = {RUR, RUI, COMBO_END}; +const uint16_t PROGMEM ru_m_i_combo[] = {RUM, RUI, COMBO_END}; +const uint16_t PROGMEM ru_m_ii_combo[] = {RUM, RUII, COMBO_END}; +const uint16_t PROGMEM ru_i_ii_combo[] = {RUI, RUII, COMBO_END}; +const uint16_t PROGMEM rl_p_r_combo[] = {RLP, RLR, COMBO_END}; +const uint16_t PROGMEM rl_r_m_combo[] = {RLR, RLM, COMBO_END}; +const uint16_t PROGMEM rl_r_i_combo[] = {RLR, RLI, COMBO_END}; +const uint16_t PROGMEM rl_m_i_combo[] = {RLM, RLI, COMBO_END}; +const uint16_t PROGMEM rl_i_ii_combo[] = {RLI, RLII, COMBO_END}; // both hand combinations. -const uint16_t PROGMEM j_w_combo[] = {KC_J, KC_W, COMBO_END}; +const uint16_t PROGMEM bl_m_m_combo[] = {LLM, RLM, COMBO_END}; combo_t key_combos[COMBO_COUNT] = { // left hand combinations. - [COLON_COMMA] = COMBO(colon_comma_combo, KC_TAB), - [COMMA_DOT] = COMBO(comma_dot_combo, KC_QUES), - [DOT_P] = COMBO(dot_p_combo, KC_UNDS), - [QUOT_Q] = COMBO(quot_q_combo, KC_ENT), - [Q_J] = COMBO(q_j_combo, LCTL(KC_W)), - [J_K] = COMBO(j_k_combo, KC_DELT), + [R_U_PINKY_RING] = COMBO(lu_p_r_combo, KC_TAB), + [R_U_RING_MIDDLE] = COMBO(lu_r_m_combo, KC_QUES), + [R_U_RING_INDEX] = COMBO(lu_r_i_combo, PRVTAB), + [R_U_MIDDLE_INDEX] = COMBO(lu_m_i_combo, KC_UNDS), + [R_U_MIDDLE_INNER_INDEX] = COMBO(lu_m_ii_combo, KC_ENT), + [R_U_INDEX_INNER_INDEX] = COMBO(lu_i_ii_combo, KC_PIPE), + [R_L_PINKY_RING] = COMBO(ll_p_r_combo, KC_ENT), + [R_L_RING_MIDDLE] = COMBO(ll_r_m_combo, LCTL(KC_W)), + [R_L_RING_INDEX] = COMBO(ll_r_i_combo, KC_TAB), + [R_L_MIDDLE_INDEX] = COMBO(ll_m_i_combo, KC_DELT), + [R_L_INDEX_INNER_INDEX] = COMBO(ll_i_ii_combo, KC_TILD), // right hand combinations. - [L_R] = COMBO(l_r_combo, KC_BSPC), - [R_C] = COMBO(r_c_combo, KC_SLSH), - [C_G] = COMBO(c_g_combo, KC_MINS), - [V_W] = COMBO(v_w_combo, KC_APP), - [W_M] = COMBO(w_m_combo, KC_DELT), + [L_U_PINKY_RING] = COMBO(ru_p_r_combo, KC_BSPC), + [L_U_RING_MIDDLE] = COMBO(ru_r_m_combo, KC_SLSH), + [L_U_RING_INDEX] = COMBO(ru_r_i_combo, NXTTAB), + [L_U_MIDDLE_INDEX] = COMBO(ru_m_i_combo, KC_MINS), + [L_U_MIDDLE_INNER_INDEX] = COMBO(ru_m_ii_combo, KC_ENT), + [L_U_INNER_INNER_INDEX] = COMBO(ru_i_ii_combo, KC_BSLS), + [L_L_PINKY_RING] = COMBO(rl_p_r_combo, KC_BSLS), + [L_L_RING_MIDDLE] = COMBO(rl_r_m_combo, KC_APP), + [L_L_RING_INDEX] = COMBO(rl_r_i_combo, LSFT(KC_TAB)), + [L_L_MIDDLE_INDEX] = COMBO(rl_m_i_combo, KC_DELT), + [L_L_INDEX_INNER_INDEX] = COMBO(rl_i_ii_combo, KC_GRV), // both hand combinations. - [J_W] = COMBO(j_w_combo, KC_ENT), -}; + [B_L_MIDDLE_MIDDLE] = COMBO(bl_m_m_combo, KC_ENT), +}; \ No newline at end of file diff --git a/users/ibnuda/config.h b/users/ibnuda/config.h index b43679a66ea0..f9a89389b6f0 100644 --- a/users/ibnuda/config.h +++ b/users/ibnuda/config.h @@ -1,9 +1,7 @@ #pragma once -#define COMBO_COUNT 18 -#define COMBO_TERM 100 +#define COMBO_TERM 50 +#define COMBO_COUNT 50 #define IGNORE_MOD_TAP_INTERRUPT -#define PERMISSIVE_HOLD - -#define TAPPING_TERM 200 +#define PERMISSIVE_HOLD \ No newline at end of file diff --git a/users/ibnuda/ibnuda.h b/users/ibnuda/ibnuda.h index f50949df5649..6047b546ffa5 100644 --- a/users/ibnuda/ibnuda.h +++ b/users/ibnuda/ibnuda.h @@ -1,55 +1,5 @@ #pragma once #include "quantum.h" -#include "tapdance.h" +#include "abstraction.h" #include "wrapper.h" -//#include "combo.h" - -enum { - _BASE, - _LOWER, - _RAISE, - _ADJUST, -}; - -// thumb keys. -#define ALT_ENT ALT_T(KC_ENT) -#define SFT_ESC SFT_T(KC_ESC) - -// home row mods. -#define CT_O LCTL_T(KC_O) -#define CT_N RCTL_T(KC_N) -#define SH_A LSFT_T(KC_A) -#define SH_S RSFT_T(KC_S) -#define AL_E LALT_T(KC_E) -#define AL_T RALT_T(KC_T) -#define GU_I LGUI_T(KC_I) -#define GU_D RGUI_T(KC_D) - -// layer toggle. -#define LW_I LT(_LOWER, KC_I) -#define LW_BSPC LT(_LOWER, KC_BSPC) -#define RS_SPC LT(_RAISE, KC_SPC) -#define RS_D LT(_RAISE, KC_D) - -// idk, man. not used, i guess. -#define ADDDD MO(_ADJUST) - -// common shortcuts for windows and linux that i use. -#define NXTTAB LCTL(KC_PGDN) -#define PRVTAB LCTL(KC_PGUP) -#define UPTAB LCTL(LSFT(KC_PGUP)) -#define DNTAB LCTL(LSFT(KC_PGDN)) -#define NXTWIN LALT(KC_TAB) -#define PRVWIN LALT(LSFT(KC_TAB)) -#define CALDL LCTL(LALT(KC_DELT)) -#define TSKMGR LCTL(LSFT(KC_ESC)) -#define EXPLR LGUI(KC_E) -#define LCKGUI LGUI(KC_L) -#define CONPST LSFT(KC_INS) -#define CLSGUI LALT(KC_F4) - -// tap dances -#define CTL_DLT TD(TD_DLT_CTLDLT) -#define SM_CLN TD(TD_SCLN_CLN) -#define LFT_TMB TD(TD_LEFT_THUMB) diff --git a/users/ibnuda/rules.mk b/users/ibnuda/rules.mk index 1cf315ebe9bb..c4b096c4a04d 100644 --- a/users/ibnuda/rules.mk +++ b/users/ibnuda/rules.mk @@ -1,14 +1,8 @@ COMBO_ENABLE = yes -COMMAND_ENABLE = yes CONSOLE_ENABLE = yes -TAP_DANCE_ENABLE = yes SRC += ibnuda.c -ifeq ($(strip $(TAP_DANCE_ENABLE)), yes) - SRC += tapdance.c -endif - ifeq ($(strip $(COMBO_ENABLE)), yes) SRC += combo.c endif diff --git a/users/ibnuda/tapdance.c b/users/ibnuda/tapdance.c deleted file mode 100644 index c0d2192587ad..000000000000 --- a/users/ibnuda/tapdance.c +++ /dev/null @@ -1,83 +0,0 @@ -#include "tapdance.h" - -static td_state_t td_state; - -void dance_dlt_finished(qk_tap_dance_state_t *state, void *user_data) { - if (state->count == 1) { - register_code16(KC_DELT); - } else { - register_code16(C(KC_DELT)); - } -} - -void dance_dlt_reset(qk_tap_dance_state_t *state, void *user_data) { - if (state->count == 1) { - unregister_code16(KC_DELT); - } else { - unregister_code16(C(KC_DELT)); - } -} - -void dance_cln_finished(qk_tap_dance_state_t *state, void *user_data) { - if (state->count == 1) { - register_code(KC_LSFT); - } - register_code(KC_SCLN); -} - -void dance_cln_reset(qk_tap_dance_state_t *state, void *user_data) { - if (state->count == 1) { - unregister_code(KC_LSFT); - } - unregister_code(KC_SCLN); -} - -int current_dance(qk_tap_dance_state_t *state) { - if (state->count == 1) { - if (state->interrupted || !state->pressed) { - return SINGLE_TAP; - } else { - return SINGLE_HOLD; - } - } - if (state->count == 2) { - return DOUBLE_TAP; - } else { - return 3; - } -} - -void dance_tmb_finished(qk_tap_dance_state_t *state, void *user_data) { - td_state = current_dance(state); - switch (td_state) { - case SINGLE_TAP: - register_code16(KC_ESC); - break; - case SINGLE_HOLD: - register_mods(MOD_BIT(KC_LSFT)); - break; - case DOUBLE_TAP: - register_code16(KC_DELT); - break; - } -} - -void dance_tmb_reset(qk_tap_dance_state_t *state, void *user_data) { - switch (td_state) { - case SINGLE_TAP: - unregister_code16(KC_ESC); - break; - case SINGLE_HOLD: - unregister_mods(MOD_BIT(KC_LSFT)); - break; - case DOUBLE_TAP: - unregister_code16(KC_DELT); - break; - } -} - -qk_tap_dance_action_t tap_dance_actions[] = { - [TD_DLT_CTLDLT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_dlt_finished, dance_dlt_reset), - [TD_SCLN_CLN] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_cln_finished, dance_cln_reset), - [TD_LEFT_THUMB] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_tmb_finished, dance_tmb_reset), -}; diff --git a/users/ibnuda/tapdance.h b/users/ibnuda/tapdance.h deleted file mode 100644 index 258321d4ca53..000000000000 --- a/users/ibnuda/tapdance.h +++ /dev/null @@ -1,23 +0,0 @@ -#pragma once -#include "ibnuda.h" - -#ifdef TAP_DANCE_ENABLE -typedef enum { - SINGLE_TAP, - SINGLE_HOLD, - DOUBLE_TAP, -} td_state_t; - -int current_dance(qk_tap_dance_state_t *state); - -void dance_tmb_finished(qk_tap_dance_state_t *state, void *user_data); -void dance_tmb_reset(qk_tap_dance_state_t *state, void *user_data); - -// enum for tap dances. -enum { - TD_DLT_CTLDLT = 0, - TD_SCLN_CLN, - TD_LEFT_THUMB, -}; - -#endif // TAP_DANCE_ENABLE diff --git a/users/ibnuda/wrapper.h b/users/ibnuda/wrapper.h index 34350cf36914..c85be9d6b157 100644 --- a/users/ibnuda/wrapper.h +++ b/users/ibnuda/wrapper.h @@ -1,46 +1,8 @@ #pragma once -#include "ibnuda.h" -/* -Since our quirky block definitions are basically a list of comma separated -arguments, we need a wrapper in order for these definitions to be -expanded before being used as arguments to the LAYOUT_xxx macro. -*/ #if (!defined(LAYOUT) && defined(KEYMAP)) # define LAYOUT KEYMAP #endif #define KEYMAP_wrapper(...) LAYOUT(__VA_ARGS__) #define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) - -#define ________________DVORAK_L1_______________ KC_SCLN,KC_COMM,KC_DOT, KC_P, KC_Y -#define ________________DVORAK_L2_______________ SH_A, CT_O, AL_E, KC_U, GU_I -#define ________________DVORAK_L3_______________ KC_QUOT,KC_Q, KC_J, KC_K, KC_X - -#define ________________DVORAK_R1_______________ KC_F, KC_G, KC_C, KC_R, KC_L -#define ________________DVORAK_R2_______________ GU_D, KC_H, AL_T, CT_N, SH_S -#define ________________DVORAK_R3_______________ KC_B, KC_M, KC_W, KC_V, KC_Z - -#define ________________RAISE_L1________________ KC_EXLM,KC_AT, KC_UP, KC_LCBR,KC_RCBR -#define ________________RAISE_L2________________ KC_HASH,KC_LEFT,KC_DOWN,KC_RGHT,KC_DLR -#define ________________RAISE_L3________________ KC_LBRC,KC_RBRC,KC_LPRN,KC_RPRN,KC_AMPR - -#define ________________RAISE_R1________________ KC_BSLS,KC_7, KC_8, KC_9, KC_ASTR -#define ________________RAISE_R2________________ KC_EQL, KC_4, KC_5, KC_6, KC_0 -#define ________________RAISE_R3________________ KC_GRV, KC_1, KC_2, KC_3, KC_PLUS - -#define ________________LOWER_L1________________ KC_ESC, KC_QUES,KC_UNDS,KC_F1, KC_F2 -#define ________________LOWER_L2________________ KC_LSFT,KC_TAB, KC_PGUP,KC_F5, KC_F6 -#define ________________LOWER_L3________________ KC_CLCK,KC_SLCK,KC_PGDN,KC_F9, KC_F10 - -#define ________________LOWER_R1________________ KC_F3, KC_F4, KC_MINS,KC_SLSH,KC_BSPC -#define ________________LOWER_R2________________ KC_F7, KC_F8, KC_HOME,KC_LALT,KC_ENT -#define ________________LOWER_R3________________ KC_F11, KC_F12, KC_END, KC_INS, KC_SLSH - -#define ________________ADJUST_L1_______________ _______,EXPLR, KC_UP, PRVTAB, PRVWIN -#define ________________ADJUST_L2_______________ TSKMGR, KC_LEFT,KC_DOWN,KC_RGHT,UPTAB -#define ________________ADJUST_L3_______________ _______,CLSGUI, _______,CONPST, RESET - -#define ________________ADJUST_R1_______________ NXTWIN, NXTTAB, _______,_______,LCKGUI -#define ________________ADJUST_R2_______________ DNTAB, KC_ENT, KC_LGUI,_______,CALDL -#define ________________ADJUST_R3_______________ _______,_______,_______,_______,_______ diff --git a/users/imchipwood/imchipwood.c b/users/imchipwood/imchipwood.c new file mode 100644 index 000000000000..e319c00ce799 --- /dev/null +++ b/users/imchipwood/imchipwood.c @@ -0,0 +1,141 @@ +/* Copyright 2021 imchipwood + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "imchipwood.h" + +static td_state_t td_state[3]; + +// determine the tapdance state to return +int cur_dance(qk_tap_dance_state_t *state) { + if (state->count == 1) { + if (state->interrupted || !state->pressed) { + return SINGLE_TAP; + } else { + return SINGLE_HOLD; + } + } + if (state->count == 2) { + return DOUBLE_TAP; + } else { + return 3; + } // any number higher than the maximum state value you return above +} + +void altf2_finished(qk_tap_dance_state_t *state, void *user_data) { + td_state[0] = cur_dance(state); + switch (td_state[0]) { + case SINGLE_TAP: + register_code(KC_F2); + break; + case SINGLE_HOLD: + register_mods(MOD_BIT(KC_LALT)); + break; + case DOUBLE_TAP: + register_mods(MOD_BIT(KC_LALT)); + tap_code(KC_F2); + break; + } +} + +void altf2_reset(qk_tap_dance_state_t *state, void *user_data) { + switch (td_state[0]) { + case SINGLE_TAP: + unregister_code(KC_F2); + break; + case SINGLE_HOLD: + unregister_mods(MOD_BIT(KC_LALT)); + break; + case DOUBLE_TAP: + unregister_code(KC_F2); + unregister_mods(MOD_BIT(KC_LALT)); + break; + } +} + + +void ctlf5_finished(qk_tap_dance_state_t *state, void *user_data) { + td_state[1] = cur_dance(state); + switch (td_state[1]) { + case SINGLE_TAP: + register_code(KC_F5); + break; + case SINGLE_HOLD: + register_mods(MOD_BIT(KC_LCTL)); + break; + case DOUBLE_TAP: + register_mods(MOD_BIT(KC_LCTL)); + tap_code(KC_F5); + break; + } +} + +void ctlf5_reset(qk_tap_dance_state_t *state, void *user_data) { + switch (td_state[1]) { + case SINGLE_TAP: + unregister_code(KC_F5); + break; + case SINGLE_HOLD: + unregister_mods(MOD_BIT(KC_LCTL)); + break; + case DOUBLE_TAP: + unregister_code(KC_F5); + unregister_mods(MOD_BIT(KC_LCTL)); + break; + } +} + +void altf7_finished(qk_tap_dance_state_t *state, void *user_data) { + td_state[2] = cur_dance(state); + switch (td_state[2]) { + case SINGLE_TAP: + register_code(KC_F7); + break; + case SINGLE_HOLD: + register_mods(MOD_BIT(KC_LALT)); + break; + case DOUBLE_TAP: + register_mods(MOD_BIT(KC_LALT)); + tap_code(KC_F7); + break; + } +} + +void altf7_reset(qk_tap_dance_state_t *state, void *user_data) { + switch (td_state[2]) { + case SINGLE_TAP: + unregister_code(KC_F7); + break; + case SINGLE_HOLD: + unregister_mods(MOD_BIT(KC_LALT)); + break; + case DOUBLE_TAP: + unregister_code(KC_F7); + unregister_mods(MOD_BIT(KC_LALT)); + break; + } +} + +qk_tap_dance_action_t tap_dance_actions[] = { + [ALT_F2] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, altf2_finished, altf2_reset), + [CTL_F5] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ctlf5_finished, ctlf5_reset), + [ALT_F7] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, altf7_finished, altf7_reset), + [DEL_NLCK] = ACTION_TAP_DANCE_DOUBLE(KC_DEL, KC_NLCK), + // Double tap right -> END + [TD_REND] = ACTION_TAP_DANCE_DOUBLE(KC_RIGHT, KC_END), + // Double tap left -> HOME + [TD_LOME] = ACTION_TAP_DANCE_DOUBLE(KC_LEFT, KC_HOME), + // Double tap right shift -> CAPS LOCK + [TD_RSFT_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_RSFT, KC_CAPS), +}; diff --git a/users/imchipwood/imchipwood.h b/users/imchipwood/imchipwood.h new file mode 100644 index 000000000000..64726a862bf5 --- /dev/null +++ b/users/imchipwood/imchipwood.h @@ -0,0 +1,51 @@ +/* Copyright 2021 imchipwood + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should 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" + +// change the tapping term to a little bit quicker +#ifdef TAPPING_TERM + #undef TAPPING_TERM +#endif +#define TAPPING_TERM 175 + +#ifdef TAPPING_TOGGLE + #undef TAPPING_TOGGLE +#endif +#define TAPPING_TOGGLE 2 + + +enum td_keycodes { + TD_REND = 0, // right when tapped, end when double tapped + TD_LOME, // left when tapped, home when double tapped + TD_RSFT_CAPS, + ALT_F2, // F2 when tapped, LALT when held, LALT+F2 when double tapped + CTL_F5, // F5 when tapped, LCTL when held, LCTL+F5 when double tapped + ALT_F7, // F7 when tapped, LALT when held, LALT+F7 when double tapped + DEL_NLCK, // DEL when tapped, NUMLOCK when double tapped +}; + + +typedef enum { SINGLE_TAP, SINGLE_HOLD, DOUBLE_TAP } td_state_t; +int cur_dance(qk_tap_dance_state_t *state); + +void altf2_finished(qk_tap_dance_state_t *state, void *user_data); +void altf2_reset(qk_tap_dance_state_t *state, void *user_data); +void ctlf5_finished(qk_tap_dance_state_t *state, void *user_data); +void ctlf5_reset(qk_tap_dance_state_t *state, void *user_data); +void altf7_finished(qk_tap_dance_state_t *state, void *user_data); +void altf7_reset(qk_tap_dance_state_t *state, void *user_data); diff --git a/users/imchipwood/rules.mk b/users/imchipwood/rules.mk new file mode 100644 index 000000000000..87cca5b5e2d1 --- /dev/null +++ b/users/imchipwood/rules.mk @@ -0,0 +1,2 @@ +SRC += imchipwood.c +TAP_DANCE_ENABLE=yes diff --git a/users/issmirnov/rules.mk b/users/issmirnov/rules.mk index 93ec21b01b4f..d96083f7d1a6 100644 --- a/users/issmirnov/rules.mk +++ b/users/issmirnov/rules.mk @@ -19,7 +19,7 @@ NKRO_ENABLE = no # note: also needs FORCE_NKRO in config.h # Disable unused features to save on space # https://thomasbaart.nl/2018/12/01/reducing-firmware-size-in-qmk/ MOUSEKEY_ENABLE = no # 2000 bytes -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite COMMAND_ENABLE = no # https://beta.docs.qmk.fm/features/feature_command UNICODE_ENABLE = no # Unicode SWAP_HANDS_ENABLE = no # Allow swapping hands of keyboard diff --git a/users/jdelkins/jdelkins.c b/users/jdelkins/jdelkins.c index 7577512ec552..e7bef607c99c 100644 --- a/users/jdelkins/jdelkins.c +++ b/users/jdelkins/jdelkins.c @@ -193,7 +193,11 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case KB_MAKE: if (!get_mods()) { if (!record->event.pressed) +#ifdef NO_SECRETS + SEND_STRING("make NO_SECRETS=1 " QMK_KEYBOARD ":" QMK_KEYMAP SS_TAP(X_ENTER)); +#else SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP SS_TAP(X_ENTER)); +#endif return false; } break; @@ -201,10 +205,15 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case KB_VRSN: if (!get_mods()) { if (!record->event.pressed) { +#ifdef DO_SECRETS +# define SECRET_MSG " (with secrets)" +#else +# define SECRET_MSG +#endif if (user_config.system_mac) { - SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION " (mac mode)"); + SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION " (mac mode)" SECRET_MSG); } else { - SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION " (non-mac mode)"); + SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION " (non-mac mode)" SECRET_MSG); } } return false; @@ -227,7 +236,11 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case KB_FLSH: if (!get_mods()) { if (!record->event.pressed) { +#ifdef NO_SECRETS + SEND_STRING("make NO_SECRETS=1 " QMK_KEYBOARD ":" QMK_KEYMAP ":flash\n"); +#else SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP ":flash\n"); +#endif reset_keyboard(); } return false; @@ -235,7 +248,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { break; #ifdef DO_SECRETS - case KC_SECRET_1 ... KC_SECRET_5: // Secrets! Externally defined strings, not stored in repo + case KC_SECRET_1 ... KC_SECRET_6: // Secrets! Externally defined strings, not stored in repo if (!record->event.pressed) { clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); send_secret_string(keycode - KC_SECRET_1); diff --git a/users/jdelkins/rules.mk b/users/jdelkins/rules.mk index b9d377b28176..075aab7d3b56 100644 --- a/users/jdelkins/rules.mk +++ b/users/jdelkins/rules.mk @@ -1,10 +1,15 @@ SRC += jdelkins.c -ifeq ($(strip $(NO_SECRETS)), yes) - OPT_DEFS += -DNO_SECRETS +ifneq ($(strip $(NO_SECRETS)),) + OPT_DEFS += -DNO_SECRETS endif +ifeq ($(shell test -f users/jdelkins/secrets.h.gpg && echo yes || echo no),yes) +users/jdelkins/jdelkins.c: users/jdelkins/secrets.h + touch $@ + users/jdelkins/secrets.h: users/jdelkins/secrets.h.gpg gpg -d $< >$@ +endif -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite diff --git a/users/jjerrell/.gitignore b/users/jjerrell/.gitignore new file mode 100644 index 000000000000..1753bf931b6d --- /dev/null +++ b/users/jjerrell/.gitignore @@ -0,0 +1 @@ +secrets.* diff --git a/users/jjerrell/config.h b/users/jjerrell/config.h new file mode 100644 index 000000000000..bddafe155724 --- /dev/null +++ b/users/jjerrell/config.h @@ -0,0 +1,26 @@ +// Copyright (C) 2021 Jerrell, Jacob <@jjerrell> +// +// This file is part of jjerrell. +// +// jjerrell is free software: you can 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. +// +// jjerrell is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with jjerrell. If not, see <http://www.gnu.org/licenses/>. + +#pragma once + +#define LEADER_TIMEOUT 250 +#define LEADER_PER_KEY_TIMING + +#if defined(TAP_CODE_DELAY) +# undef TAP_CODE_DELAY +#endif +#define TAP_CODE_DELAY 20 diff --git a/users/jjerrell/jjerrell.c b/users/jjerrell/jjerrell.c new file mode 100644 index 000000000000..95c2acba5ee7 --- /dev/null +++ b/users/jjerrell/jjerrell.c @@ -0,0 +1,138 @@ +/** + * Copyright (C) 2021 Jerrell, Jacob <@jjerrell> + * + * This file is part of qmk_firmware. + * + * qmk_firmware is free software: you can 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. + * + * qmk_firmware is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with qmk_firmware. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "jjerrell.h" + +__attribute__((weak)) void matrix_scan_keymap(void) {} +__attribute__((weak)) void leader_scan_secrets(void) {} + +#ifdef LEADER_ENABLE + LEADER_EXTERNS(); + void matrix_scan_leader(void) { + static uint8_t mods = 0; + mods = get_mods(); + LEADER_DICTIONARY() { + leading = false; + leader_end(); + clear_mods(); + + // Website Refresh / XCode "Run" + SEQ_ONE_KEY(KC_R) { + SEND_STRING(SS_LGUI("r")); + } + + SEQ_TWO_KEYS(KC_B, KC_D) { + send_string_with_delay_P(PSTR(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION " Built at: " QMK_BUILDDATE), TAP_CODE_DELAY); + } + + SEQ_TWO_KEYS(KC_L, KC_C) { + send_string_with_delay("/** */", TAP_CODE_DELAY); + wait_ms(TAPPING_TERM); + tap_code(KC_LEFT); + tap_code(KC_LEFT); + tap_code(KC_LEFT); + if (!(mods & MOD_MASK_SHIFT)) { + tap_code(KC_ENT); + } + } + + set_mods(mods); + #ifndef NO_SECRETS + leader_scan_secrets(); + #endif // !NO_SECRETS + } + } +#endif + +static bool is_first_run = true; +void matrix_scan_user(void) { + if (is_first_run) { + is_first_run = false; + startup_user(); + } + #ifdef LEADER_ENABLE + matrix_scan_leader(); + #endif + matrix_scan_keymap(); +} + +__attribute__((weak)) layer_state_t layer_state_set_keymap(layer_state_t state) { return state; } + +// on layer change, no matter where the change was initiated +// Then runs keymap's layer change check +layer_state_t layer_state_set_user(layer_state_t state) { + if (!is_keyboard_master()) { + return state; + } + + state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST); + state = layer_state_set_keymap(state); +#if defined(RGBLIGHT_ENABLE) + state = layer_state_set_rgb_light(state); +#endif // RGBLIGHT_ENABLE + return state; +} + +__attribute__((weak)) void dip_switch_update_keymap(uint8_t index, bool active) {} +void dip_switch_update_user(uint8_t index, bool active) { + dip_switch_update_keymap(index, active); +} + +__attribute__((weak)) bool music_mask_keymap(uint16_t keycode) { return true; } +bool music_mask_user(uint16_t keycode) { + switch (keycode){ + default: + return music_mask_keymap(keycode); + break; + } +} + +__attribute__((weak)) layer_state_t default_layer_state_set_keymap(layer_state_t state) { return state; } + +// Runs state check and changes underglow color and animation +layer_state_t default_layer_state_set_user(layer_state_t state) { + if (!is_keyboard_master()) { + return state; + } + return default_layer_state_set_keymap(state); +} + +#ifdef AUDIO_ENABLE +__attribute__((weak)) void startup_keymap(void) {} +void startup_user(void) +{ + wait_ms(TAP_CODE_DELAY); // gets rid of tick + startup_keymap(); +} + +__attribute__((weak)) void shutdown_keymap(void) {} +void shutdown_user(void) +{ + wait_ms(TAP_CODE_DELAY); + stop_all_notes(); + shutdown_keymap(); +} + +__attribute__((weak)) void music_on_keymap(void) {} +void music_on_user(void) +{ + music_scale_user(); + music_on_keymap(); +} +#endif // AUDIO_ENABLE diff --git a/users/jjerrell/jjerrell.h b/users/jjerrell/jjerrell.h new file mode 100644 index 000000000000..92b95ccc01bf --- /dev/null +++ b/users/jjerrell/jjerrell.h @@ -0,0 +1,53 @@ +/** + * Copyright (C) 2021 Jerrell, Jacob <@jjerrell> + * + * This file is part of qmk_firmware. + * + * qmk_firmware is free software: you can 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. + * + * qmk_firmware is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with qmk_firmware. If not, see <http://www.gnu.org/licenses/>. + */ + +#pragma once +#include QMK_KEYBOARD_H + +/** QMK Includes **/ +#include "version.h" +#include "eeprom.h" +#include "muse.h" + +#include "process_records.h" +#include "wrappers.h" + +/************************* Userspace Layers ************************* + * Keymaps can define additional layers by making the first case + * equal to `LAYER_SAFE_RANGE` + ********************************************************************/ +enum userspace_layers { + _WORKMAN, + _QWERTY, + _LOWER, + _RAISE, + _ADJUST, + _SPECIAL, + _GAME, + LAYER_SAFE_RANGE, +}; + +void matrix_scan_keymap(void); +layer_state_t layer_state_set_keymap(layer_state_t state); +void dip_switch_update_keymap(uint8_t index, bool active); +bool music_mask_keymap(uint16_t keycode); +layer_state_t default_layer_state_set_keymap(layer_state_t state); +void startup_keymap(void); +void shutdown_keymap(void); +void music_on_keymap(void); diff --git a/users/jjerrell/process_records.c b/users/jjerrell/process_records.c new file mode 100644 index 000000000000..abdcd0934c62 --- /dev/null +++ b/users/jjerrell/process_records.c @@ -0,0 +1,139 @@ +/** + * Copyright (C) 2021 Jerrell, Jacob <@jjerrell> + * + * This file is part of qmk_firmware. + * + * qmk_firmware is free software: you can 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. + * + * qmk_firmware is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with qmk_firmware. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "jjerrell.h" + +float game_song[][2] = SONG(TO_BOLDLY_GO); +float work_song[][2] = SONG(MARIO_GAMEOVER); +float doom_song[][2] = SONG(E1M1_DOOM); + +__attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; } + +static uint16_t key_timer; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (process_record_keymap(keycode, record)) { + static uint8_t mods = 0; + // static uint8_t layer = 0; + mods = get_mods(); + switch (keycode) { + case KC_QWERTY: + if (record->event.pressed) { + set_single_persistent_default_layer(_QWERTY); + } + return false; + break; + case KC_WORKMAN: + if (record->event.pressed) { + set_single_persistent_default_layer(_WORKMAN); + } + return false; + break; + case KC_CCCV: + if (record->event.pressed) { + key_timer = timer_read(); + } else { + clear_mods(); + if (timer_elapsed(key_timer) > TAPPING_TERM) { // Hold, copy + tap_code16(G(KC_C)); + } else if (mods & MOD_MASK_SHIFT) { + // Tap w/ shift held, open [Paste App](https://pasteapp.io) (no affiliation) + // Shift + Command(GUI) + V + tap_code16(S(G(KC_V))); + } else { // Regular tap, do paste + tap_code16(G(KC_V)); + } + set_mods(mods); + } + return false; + break; + case KC_ARROW: + if (record->event.pressed) { + clear_mods(); + if (mods & MOD_MASK_SHIFT) { + SEND_STRING("=>"); + } else { + SEND_STRING("->"); + } + set_mods(mods); + } + return false; + break; + case KC_MAKE: + if (!record->event.pressed) { +#ifndef MAKE_BOOTLOADER + uint8_t temp_mod = mod_config(get_mods()); + uint8_t temp_osm = mod_config(get_oneshot_mods()); + clear_mods(); + clear_oneshot_mods(); +#endif + send_string_with_delay_P(PSTR("qmk"), TAP_CODE_DELAY); +#ifndef MAKE_BOOTLOADER + if ((temp_mod | temp_osm) & MOD_MASK_SHIFT) +#endif + { + send_string_with_delay_P(PSTR(" flash "), TAP_CODE_DELAY); +#ifndef MAKE_BOOTLOADER + } else { + send_string_with_delay_P(PSTR(" compile "), TAP_CODE_DELAY); +#endif + } + send_string_with_delay_P(PSTR("-kb " QMK_KEYBOARD " -km " QMK_KEYMAP), TAP_CODE_DELAY); + send_string_with_delay_P(PSTR(SS_TAP(X_ENTER)), TAP_CODE_DELAY); + } + return false; + break; + case KC_VRSN: + if (!record->event.pressed) { + send_string_with_delay_P(PSTR(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION " Built at: " QMK_BUILDDATE), TAP_CODE_DELAY); + } + return false; + break; + case KC_GAME: + if (record->event.pressed) { + key_timer = timer_read(); + } else { + if (IS_LAYER_OFF(_GAME)) { + if (timer_elapsed(key_timer) > TAPPING_TERM) { + layer_move(_GAME); +#ifdef AUDIO_ENABLE +PLAY_SONG(game_song); +#endif + } + break; + // todo: cycle game layers + // } else if (mods & MOD_MASK_SHIFT) { +// #ifdef AUDIO_ENABLE +// PLAY_SONG(doom_song); +// #endif +// break; + } else { + layer_move(_WORKMAN); +#ifdef AUDIO_ENABLE +PLAY_SONG(work_song); +#endif + break; + } + } + return false; + break; + } + } + return true; +} diff --git a/users/jjerrell/process_records.h b/users/jjerrell/process_records.h new file mode 100644 index 000000000000..de37421b109c --- /dev/null +++ b/users/jjerrell/process_records.h @@ -0,0 +1,41 @@ +// Copyright (C) 2021 Jerrell, Jacob <@jjerrell> +// +// This file is part of qmk_firmware. +// +// qmk_firmware is free software: you can 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. +// +// qmk_firmware is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with qmk_firmware. If not, see <http://www.gnu.org/licenses/>. + +#pragma once +#include "jjerrell.h" + +#if defined(KEYMAP_SAFE_RANGE) +# define PLACEHOLDER_SAFE_RANGE KEYMAP_SAFE_RANGE +#else +# define PLACEHOLDER_SAFE_RANGE SAFE_RANGE +#endif + +enum userspace_keycodes { + KC_ARROW = PLACEHOLDER_SAFE_RANGE, // `->` + KC_MAKE, // Runs the keyboard's make command + KC_QWERTY, // Default Layer -> QWERTY + KC_WORKMAN, // Default Layer -> Workman + KC_VRSN, // Print QMK Firmware and board info + RGB_IDL, // Toggle RGB Idle animations + RGB_TGL, // Toggle RGB Layer Indication + KC_CCCV, // One key copy/paste, + KC_GAME, // To game layer. If on game layer, cycle game layers + NEW_SAFE_RANGE // use NEW_SAFE_RANGE for keymap specific codes +}; + +bool process_record_keymap(uint16_t keycode, keyrecord_t *record); + diff --git a/users/jjerrell/readme.md b/users/jjerrell/readme.md new file mode 100644 index 000000000000..a382524f2ecb --- /dev/null +++ b/users/jjerrell/readme.md @@ -0,0 +1,50 @@ +<!-- + Copyright (C) 2021 Jerrell, Jacob <@jjerrell> + + This file is part of qmk_firmware. + + qmk_firmware is free software: you can 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. + + qmk_firmware is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with qmk_firmware. If not, see <http://www.gnu.org/licenses/>. +--> + +# JJerrell's QMK Userspace + +This userspace showcases my personal journey with QMK keyboards and aims to simplify additional development, reduce code duplication, and maintain a consistent experience across my current keyboards. My original userspace has been archived because I wanted to take the time to grasp _how_ what I was doing worked -- rather than copy/pasta and blind luck. + +Some keyboard specific code is stored here because it's contextually relevant. It may be somewhat pedantic, but an effort has been made to wrap this code with preprocessor checks. i.e. `#if (defined(KEYBOARD_planck_ez))`. + +## Daily Drivers + +1. Ergodox EZ - My first mechanical love. Now the office keyboard (if we go back). After finding inferior travel cases for exorbitant amounts of money, I built a custom travel case out of a case designed for drones and maticulous work cutting guncase foam. Around $50 with plenty of foam left over for family LARPing weapons. I'll post a picture one of these days. It also has a spot for my wireless touchpad. +2. Planck EZ - The solution to not being able to sit at a desk 100% of the time and not being able to live without QMK for any amount of time. Karabiner-Elements disables the Macbook keyboard when this is plugged in and the planck sits ontop of it with a very short usb-c cable. Probably terrible for the built in keyboard but they screwed up this generation anyway. +3. Moonlander - Just when I thought it was over, the lovely people with ZSA did it again. This one stays at home on my desk. + +## Features + +- Keymap level customization + - User methods implemented here will give the keymaps a chance to override functionality by optionally implementing relevant _keymap methods +- Layer Macros + - WRAPPER defines in [wrapper.c] simplify consistent keymaps +- Leader key secrets + - [jjerrell.c] sets up the functionality for this feature and calls into the leader_scan_secrets method. + - TODO: add documentation for leader_scan_secrets implementation + +## Issues + +### Tap/hold keys and shifted keycodes + +An immediate part of my love for QMK was it's ability to differentiate between holds and presses to a level where you can apply modifiers when a normal alpha code is held. This feature was the single-most health related improvement to adopting QMK, in my opinion. + +Beloved as it may be it comes with some baggage; shifted keycodes will be applied as their unshifted counterparts. I've worked around this in the past but the solution this time is a close adoption of the symbol layer inspired by the Neo keyboard. + +There is also a problem with relying on SFT_T() for all of your shifting needs because if you attempt to swap which fingers are holding it and don't release the first before pressing the second, shift won't register anymore. This could probably be fixed but it discourages typing in all caps because it becomes too tedious. However, most layers do have a dedicated shift key to counteract this when necessary. diff --git a/users/jjerrell/rules.mk b/users/jjerrell/rules.mk new file mode 100644 index 000000000000..db359a575772 --- /dev/null +++ b/users/jjerrell/rules.mk @@ -0,0 +1,27 @@ +SRC += jjerrell.c \ + process_records.c + +LEADER_ENABLE = yes +MOUSEKEY_ENABLE = yes +EXTRAKEY_ENABLE = yes + +ifneq ($(PLATFORM),CHIBIOS) + LTO_ENABLE = yes +endif +SPACE_CADET_ENABLE = no +GRAVE_ESC_ENABLE = no + +ifneq ($(strip $(NO_SECRETS)), yes) + ifneq ("$(wildcard $(USER_PATH)/secrets.c)","") + SRC += secrets.c + endif + ifeq ($(strip $(NO_SECRETS)), lite) + OPT_DEFS += -DNO_SECRETS + endif +endif + +# TODO: RGB is next +# RGB_MATRIX_ENABLE ?= no +# ifneq ($(strip $(RGB_MATRIX_ENABLE)), no) +# SRC += rgb_matrix_stuff.c +# endif diff --git a/users/jjerrell/wrappers.h b/users/jjerrell/wrappers.h new file mode 100644 index 000000000000..cc0f963e8dc8 --- /dev/null +++ b/users/jjerrell/wrappers.h @@ -0,0 +1,329 @@ +// Copyright (C) 2021 Jerrell, Jacob <@jjerrell> +// +// This file is part of qmk_firmware. +// +// qmk_firmware is free software: you can 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. +// +// qmk_firmware is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with qmk_firmware. If not, see <http://www.gnu.org/licenses/>. + +#pragma once +#include "jjerrell.h" + +#define QWERTY KC_QWERTY +#define WORKMN KC_WORKMAN + +#define KC_CUT LGUI(KC_X) + +// Non-sane shortcuts for software macros or keybindings +#define MACRO_1 ALL_T(KC_F12) +#define MACRO_2 ALL_T(KC_F13) +#define MACRO_3 ALL_T(KC_F14) +#define MACRO_4 ALL_T(KC_F15) + +#define MACRO_5 ALL_T(KC_F16) +#define MACRO_6 ALL_T(KC_F17) +#define MACRO_7 ALL_T(KC_F18) +#define MACRO_8 ALL_T(KC_F19) + +// clang-format off +#if (!defined(LAYOUT) && defined(KEYMAP)) +# define LAYOUT KEYMAP +#endif + +#if (defined(KEYBOARD_planck_ez)) +/** Planck EZ Empty + * ,-----------------------------------------------------------------------------------. + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ + +# define ____________________________________________________________PLANCK_VERBOSE_BOTTOM_ROW_____________________________________________________________ \ + KC_LEAD, KC_LSFT, KC_CCCV, KC_HYPR, LT(_LOWER, KC_BSPC), SFT_T(KC_SPC), XXXXXXX, LT(_RAISE, KC_ENT), KC_MEH, RGB_TOG, RGB_IDL, LED_LEVEL + +# define _________________________________________PLANCK_LOWER_BOTTOM_ROW_________________________________________ \ + KC_LEAD, KC_LSFT, KC_CCCV, KC_HYPR, KC_BSPC, KC_SPC, XXXXXXX, KC_ENT, KC_0, KC_DOT, KC_COMM, LED_LEVEL +// TODO: It would be nice to find a way to apply the bottom row with optional left/right varargs. +// I'm completely unsure if this language can support something like that though. + +/** + * Basic Planck EZ Wrapper to expand "block" defines before sending + * to LAYOUT_ortho_4x12 + */ +# define WRAPPER_ortho_4x12(...) LAYOUT_ortho_4x12(__VA_ARGS__) + +# define WRAPPER_planck_common( \ + K01, K02, K03, K04, K05, K08, K09, K0A, K0B, K0C, \ + K11, K12, K13, K14, K15, K18, K19, K1A, K1B, K1C, \ + K21, K22, K23, K24, K25, K28, K29, K2A, K2B, K2C \ + ) WRAPPER_ortho_4x12( \ + K01, K02, K03, K04, K05 , XXXXXXX , XXXXXXX, K08, K09, K0A, K0B, K0C, \ + K11, K12, K13, K14, K15 , XXXXXXX , XXXXXXX, K18, K19, K1A, K1B, K1C, \ + K21, K22, K23, K24, K25 , XXXXXXX , XXXXXXX, K28, K29, K2A, K2B, K2C, \ + ____________________________________________________________PLANCK_VERBOSE_BOTTOM_ROW_____________________________________________________________ ) + +/** + * Shifted Key conflicts: + * K12, K13, K14, K19, K1A, K1B, K21, K2C + */ +# define WRAPPER_planck_base( \ + K01, K02, K03, K04, K05, K08, K09, K0A, K0B, K0C, \ + K11, K12, K13, K14, K15, K18, K19, K1A, K1B, K1C, \ + K21, K22, K23, K24, K25, K28, K29, K2A, K2B, K2C \ + ) WRAPPER_ortho_4x12( \ + K01 , K02 , K03 , K04 , K05 , KC_GAME , KC_GAME, K08, K09 , K0A , K0B , K0C, \ + K11 , SFT_T(K12), GUI_T(K13), ALT_T(K14), K15 , XXXXXXX , XXXXXXX, K18, ALT_T(K19), GUI_T(K1A), SFT_T(K1B), K1C, \ + CTL_T(K21), K22 , K23 , K24 , K25 , XXXXXXX , XXXXXXX, K28, K29 , K2A , K2B , CTL_T(K2C), \ + ____________________________________________________________PLANCK_VERBOSE_BOTTOM_ROW_____________________________________________________________ ) + +# define WRAPPER_planck_mods( \ + K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, \ + 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 \ + ) WRAPPER_ortho_4x12( \ + K01 , K02 , K03 , K04 , K05 , K06 , K07, K08, K09 , K0A , K0B , K0C, \ + K11 , SFT_T(K12), GUI_T(K13), ALT_T(K14), K15 , K16 , K17, K18, ALT_T(K19), GUI_T(K1A), SFT_T(K1B), K1C, \ + CTL_T(K21), K22 , K23 , K24 , K25 , K26 , K27, K28, K29 , K2A , K2B , CTL_T(K2C), \ + K31, K32 , K33 , K34 , LT(_LOWER, K35), SFT_T(K36), XXXXXXX, LT(_RAISE, K38), K39 , K3A , K3B, K3C ) + + + +// These macros are used when defining layouts in keymap.c +# define LAYOUT_planck_base(...) WRAPPER_planck_base(__VA_ARGS__) +# define LAYOUT_planck_common(...) WRAPPER_planck_common(__VA_ARGS__) +# define LAYOUT_planck_mods(...) WRAPPER_planck_mods(__VA_ARGS__) + +#elif defined(KEYBOARD_moonlander) +/** Moonlander Empty + * ( \ + k00, k01, k02, k03, k04, k05, k06, k60, k61, k62, k63, k64, k65, k66, \ + k10, k11, k12, k13, k14, k15, k16, k70, k71, k72, k73, k74, k75, k76, \ + k20, k21, k22, k23, k24, k25, k26, k80, k81, k82, k83, k84, k85, k86, \ + k30, k31, k32, k33, k34, k35, k91, k92, k93, k94, k95, k96, \ + k40, k41, k42, k43, k44, k53, kb3, ka2, ka3, ka4, ka5, ka6, \ + k50, k51, k52, kb4, kb5, kb6 \ + ) \ + */ +# define WRAPPER_moonlander(...) LAYOUT_moonlander(__VA_ARGS__) +# define WRAPPER_moonlander_common( \ + k11, k12, k13, k14, k15, k71, k72, k73, k74, k75, \ + k21, k22, k23, k24, k25, k81, k82, k83, k84, k85, \ + k31, k32, k33, k34, k35, k91, k92, k93, k94, k95, \ + k41, k42, k43, k44, ka2, ka3, ka4, ka5 \ + ) WRAPPER_moonlander( \ + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + XXXXXXX, k11, k12, k13, k14, k15, XXXXXXX, XXXXXXX, k71, k72, k73, k74, k75, XXXXXXX, \ + XXXXXXX, k21, k22, k23, k24, k25, XXXXXXX, XXXXXXX, k81, k82, k83, k84, k85, XXXXXXX, \ + KC_LSFT, k31, k32, k33, k34, k35, k91, k92, k93, k94, k95, KC_RSFT, \ + MO(_SPECIAL), k41, k42, k43, k44, TO(_GAME), XXXXXXX, ka2, ka3, ka4, ka5, MO(_SPECIAL), \ + LT(_LOWER, KC_SPC),HYPR_T(KC_BSPC),KC_LEAD, KC_CCCV,SFT_T(KC_TAB),LT(_RAISE, KC_ENT) ) + +# define WRAPPER_moonlander_mods( \ + k11, k12, k13, k14, k15, k71, k72, k73, k74, k75, \ + k21, k22, k23, k24, k25, k81, k82, k83, k84, k85, \ + k31, k32, k33, k34, k35, k91, k92, k93, k94, k95, \ + k41, k42, k43, k44, ka2, ka3, ka4, ka5 \ + ) WRAPPER_moonlander_common( \ + k11 , k12 , k13 , k14 , k15, k71, k72, k73, k74, k75, \ + k21 , SFT_T(k22), GUI_T(k23), ALT_T(k24), k25, k81, ALT_T(k82), GUI_T(k83), SFT_T(k84), k85, \ + CTL_T(k31), k32 , k33 , k34 , k35, k91, k92, k93, k94, CTL_T(k95), \ + k41 , k42 , k43 , k44 , ka2, ka3, ka4, ka5 \ + ) +# define WRAPPER_moonlander_gamepad( \ + 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, \ + k40, k41, k42, k43, k44, k53, \ + k50, k51, k52 \ + ) WRAPPER_moonlander( \ + k00, k01, k02, k03, k04, k05, k06, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + k10, k11, k12, k13, k14, k15, k16, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + k20, k21, k22, k23, k24, k25, k26, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + k30, k31, k32, k33, k34, k35, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + k40, k41, k42, k43, k44, k53, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + k50, k51, k52, XXXXXXX, XXXXXXX, TO(_WORKMAN) \ + ) + +# define LAYOUT_moonlander_common(...) WRAPPER_moonlander_common(__VA_ARGS__) +# define LAYOUT_moonlander_mods(...) WRAPPER_moonlander_mods(__VA_ARGS__) +# define LAYOUT_moonlander_gamepad(...) WRAPPER_moonlander_gamepad(__VA_ARGS__) +#elif defined(KEYBOARD_ergodox_ez) +/** Ergodox EZ Empty + .---------------------------------------------. .---------------------------------------------. + | | | | | | | | ! | | | | | | | + !-------+-----+-----+-----+-----+-------------! !-------+-----+-----+-----+-----+-----+-------! + | | | | | | | | ! | | | | | | | + !-------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+-------! + | | | | | | |-------! !-------! | | | | | | + !-------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+-------! + | | | | | | | | ! | | | | | | | + '-------+-----+-----+-----+-----+-------------' '-------------+-----+-----+-----+-----+-------' + | | | | | | ! | | | | | + '------------------------------' '------------------------------' + .---------------. .---------------. + | | | ! | | + .-------+-------+-------! !-------+-------+-------. + ! ! | | ! | ! ! + ! ! !-------! !-------! ! ! + | | | | ! | | | + '-----------------------' '-----------------------' + + ---------- LEFT HAND ----------- ---------- RIGHT HAND ---------- + ( \ + 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 \ + ) +*/ +# define WRAPPER_ergodox_ez(...) LAYOUT_ergodox_pretty(__VA_ARGS__) + +/** Common Wrapper + .---------------------------------------------. .---------------------------------------------. + | X | X | X | X | X | X | X | ! X | X | X | X | X | X | X | + !-------+-----+-----+-----+-----+-------------! !-------+-----+-----+-----+-----+-----+-------! + | X | | | | | | X | ! X | | | | | | X | + !-------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+-------! + | X | | | | | |-------! !-------! | | | | | X | + !-------+-----+-----+-----x-----x-----! X ! ! X !-----x-----x-----+-----+-----+-------! + | X | | | | | | | ! | | | | | | X | + '-------+-----+-----+-----+-----+-------------' '-------------+-----+-----+-----+-----+-------' + | SPCL | | | | | ! | | | | SPCL | + '------------------------------' '------------------------------' + .---------------. .---------------. + | X | X | ! X | X | + .-------+-------+-------! !-------+-------+-------. + ! Space ! BSpace| X | ! X | Tab ! Enter ! + ! / ! / !-------! !-------! / ! / ! + | LOWER | Hyper | LEAD | ! CCCV | Meh | RAISE | + '-----------------------' '-----------------------' +*/ +# define WRAPPER_ergodox_common( \ + L11,L12,L13,L14,L15, R11,R12,R13,R14,R15, \ + L21,L22,L23,L24,L25, R21,R22,R23,R24,R25, \ + L31,L32,L33,L34,L35, R31,R32,R33,R34,R35, \ + L41,L42,L43,L44, R42,R43,R44,R45 \ + ) WRAPPER_ergodox_ez( \ + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + XXXXXXX, L11, L12, L13, L14, L15, XXXXXXX, XXXXXXX, R11, R12, R13, R14, R15, XXXXXXX, \ + XXXXXXX, L21, L22, L23, L24, L25, R21, R22, R23, R24, R25, XXXXXXX, \ + KC_LSFT, L31, L32, L33, L34, L35, XXXXXXX, XXXXXXX, R31, R32, R33, R34, R35, KC_RSFT, \ + MO(_SPECIAL), L41, L42, L43, L44, R42, R43, R44, R45, MO(_SPECIAL), \ + \ + XXXXXXX,XXXXXXX, XXXXXXX,XXXXXXX, \ + XXXXXXX, XXXXXXX, \ + LT(_LOWER, KC_SPC),HYPR_T(KC_BSPC),KC_LEAD, KC_CCCV,SFT_T(KC_TAB),LT(_RAISE, KC_ENT) ) + +/** Common Wrapper with Mod Tap/Hold overlay + .---------------------------------------------. .---------------------------------------------. + | X | X | X | X | X | X | X | ! X | X | X | X | X | X | X | + !-------+-----+-----+-----+-----+-------------! !-------+-----+-----+-----+-----+-----+-------! + | X | | | | | | X | ! X | | | | | | X | + !-------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+-------! + | X | |Shift| Cmd | Alt | |-------! !-------! | Alt | Cmd |Shift| | X | + !-------+-----+-----+-----x-----x-----! X ! ! X !-----x-----x-----+-----+-----+-------! + | Sft | Ctl | | | | | | ! | | | | | Ctl | Sft | + '-------+-----+-----+-----+-----+-------------' '-------------+-----+-----+-----+-----+-------' + | SPCL | | | | | ! | | | | SPCL | + '------------------------------' '------------------------------' + .---------------. .---------------. + | X | X | ! X | X | + .-------+-------+-------! !-------+-------+-------. + ! Space ! BSpace| X | ! X | Tab ! Enter ! + ! / ! / !-------! !-------! / ! / ! + | LOWER | Hyper | LEAD | ! CCCV | Meh | RAISE | + '-----------------------' '-----------------------' +*/ +# define WRAPPER_ergodox_mods( \ + L11,L12,L13,L14,L15, R11,R12,R13,R14,R15, \ + L21,L22,L23,L24,L25, R21,R22,R23,R24,R25, \ + L31,L32,L33,L34,L35, R31,R32,R33,R34,R35, \ + L41,L42,L43,L44, R42,R43,R44,R45 \ + ) WRAPPER_ergodox_common( \ + L11 , L12 , L13 , L14 , L15, R11, R12 , R13 , R14 , R15, \ + L21 , SFT_T(L22), GUI_T(L23), ALT_T(L24), L25, R21, ALT_T(R22), GUI_T(R23), SFT_T(R24), R25, \ + CTL_T(L31), L32 , L33 , L34 , L35, R31, R32 , R33 , R34 , CTL_T(R35), \ + L41 , L42 , L43 , L44 , R42 , R43 , R44 , R45 ) + +// These macros are used when defining layouts in keymap.c +# define LAYOUT_ergodox_common(...) WRAPPER_ergodox_common(__VA_ARGS__) +# define LAYOUT_ergodox_mods(...) WRAPPER_ergodox_mods(__VA_ARGS__) +#endif // END Keyboard specific wrapper defines +/** + * Alpha/Num key wrappers for portability + */ + +// Workman +#define __________________WORKMN_L1__________________ KC_Q, KC_D, KC_R, KC_W, KC_B +#define __________________WORKMN_L2__________________ KC_A, KC_S, KC_H, KC_T, KC_G +#define __________________WORKMN_L3__________________ KC_Z, KC_X, KC_M, KC_C, KC_V + +#define __________________WORKMN_R1__________________ KC_J, KC_F, KC_U, KC_P, KC_SCLN +#define __________________WORKMN_R2__________________ KC_Y, KC_N, KC_E, KC_O, KC_I +#define __________________WORKMN_R3__________________ KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH + +// QWERTY +#define __________________QWERTY_L1__________________ KC_Q, KC_W, KC_E, KC_R, KC_T +#define __________________QWERTY_L2__________________ KC_A, KC_S, KC_D, KC_F, KC_G +#define __________________QWERTY_L3__________________ KC_Z, KC_X, KC_C, KC_V, KC_B + +#define __________________QWERTY_R1__________________ KC_Y, KC_U, KC_I, KC_O, KC_P +#define __________________QWERTY_R2__________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN +#define __________________QWERTY_R3__________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH + +#define ________________QWERTY_R1_LHS________________ KC_P, KC_O, KC_I, KC_U, KC_Y +#define ________________QWERTY_R2_LHS________________ KC_SCLN, KC_L, KC_K, KC_J, KC_H +#define ________________QWERTY_R3_LHS________________ KC_SLSH, KC_DOT, KC_COMM, KC_M, KC_N + +// Nums +#define ___________________NUMS_L____________________ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6 +#define ___________________NUMS_R____________________ KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL + +// Lower +#define __________________LOWER_L1___________________ KC_PGUP, KC_TAB, KC_UP, KC_ENT, KC_PGDN +#define __________________LOWER_L2___________________ KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END +#define __________________LOWER_L3___________________ KC_ESC, KC_BSPC, KC_CUT, KC_DEL, KC_CCCV + +#define __________________LOWER_R1___________________ XXXXXXX, KC_7, KC_8, KC_9, KC_ASTR +#define __________________LOWER_R2___________________ XXXXXXX, KC_4, KC_5, KC_6, KC_SLSH +#define __________________LOWER_R3___________________ XXXXXXX, KC_1, KC_2, KC_3, KC_MINS +// Relevant keys: -> KC_0, KC_DOT, KC_COMM, KC_PLUS <- these keys break our lovely wrapper pattern + +// Raise +#define __________________RAISE_L1___________________ KC_PIPE, KC_UNDS, KC_LBRC, KC_RBRC, KC_AMPR +#define __________________RAISE_L2___________________ KC_BSLS, KC_SLSH, KC_LCBR, KC_RCBR, KC_ASTR +#define __________________RAISE_L3___________________ KC_HASH, KC_DLR , KC_PERC, KC_TILD, KC_GRV + +#define __________________RAISE_R1___________________ KC_EXLM, KC_LABK, KC_RABK, KC_MINS, KC_SCLN +#define __________________RAISE_R2___________________ KC_QUES, KC_LPRN, KC_RPRN, KC_EQL, KC_COLN +#define __________________RAISE_R3___________________ KC_AT, KC_QUOT, KC_DQUO, KC_PLUS, KC_CIRC + +// Adjust +#define __________________ADJUST_L1__________________ KC_MAKE, DEBUG, RESET, TERM_ON, TERM_OFF +#define __________________ADJUST_L2__________________ KC__MUTE, KC__VOLDOWN, KC__VOLUP, KC_MPLY, KC_MNXT +#define __________________ADJUST_L3__________________ KC_VRSN, AU_ON, AU_OFF, CG_SWAP, CG_NORM + +#define __________________ADJUST_R1__________________ MU_MOD, MU_ON, MU_OFF, MI_ON, MI_OFF +#define __________________ADJUST_R2__________________ MUV_IN, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD +#define __________________ADJUST_R3__________________ MUV_DE, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD +// clang-format on diff --git a/users/jonavin/config.h b/users/jonavin/config.h new file mode 100644 index 000000000000..7b6e335e3c58 --- /dev/null +++ b/users/jonavin/config.h @@ -0,0 +1,31 @@ +/* Copyright 2021 Jonavin Eng + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should 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 TAPPING_TOGGLE 2 // TT () set to two taps + +/* Handle GRAVESC combo keys */ +#define GRAVE_ESC_ALT_OVERRIDE // Always send Escape if Alt is pressed +#define GRAVE_ESC_CTRL_OVERRIDE // Always send Escape if Control is pressed + +#define TAPPING_TERM 180 +#define TAPPING_TERM_PER_KEY + +#ifdef RGB_MATRIX_ENABLE + #define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR +# define RGB_DISABLE_WHEN_USB_SUSPENDED +#endif diff --git a/users/jonavin/jonavin.c b/users/jonavin/jonavin.c new file mode 100644 index 000000000000..b66b444f365c --- /dev/null +++ b/users/jonavin/jonavin.c @@ -0,0 +1,233 @@ + +/* Copyright 2021 Jonavin Eng @Jonavin + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + + +#include QMK_KEYBOARD_H +#include "jonavin.h" + + +#ifdef TD_LSFT_CAPSLOCK_ENABLE + // Tap once for shift, twice for Caps Lock but only if Win Key in not disabled + void dance_LSFT_finished(qk_tap_dance_state_t *state, void *user_data) { + if (state->count == 1 || keymap_config.no_gui) { + register_code16(KC_LSFT); + } else { + register_code(KC_CAPS); + } + } + + void dance_LSFT_reset(qk_tap_dance_state_t *state, void *user_data) { + if (state->count == 1 || keymap_config.no_gui) { + unregister_code16(KC_LSFT); + } else { + unregister_code(KC_CAPS); + } + } + + qk_tap_dance_action_t tap_dance_actions[] = { + // Tap once for shift, twice for Caps Lock + [TD_LSFT_CAPSLOCK] = ACTION_TAP_DANCE_DOUBLE(KC_LSFT, KC_CAPS), + [TD_LSFT_CAPS_WIN] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_LSFT_finished, dance_LSFT_reset), + }; +#endif // TD_LSFT_CAPSLOCK_ENABLE + +// RGB NIGHT MODE +#ifdef RGB_MATRIX_ENABLE + static bool rgb_nightmode = false; + + // Turn on/off NUM LOCK if current state is different + void activate_rgb_nightmode (bool turn_on) { + if (rgb_nightmode != turn_on) { + rgb_nightmode = !rgb_nightmode; + } + } + + bool get_rgb_nightmode(void) { + return rgb_nightmode; + } +#endif // RGB_MATRIX_ENABLE + +// TIMEOUTS +#ifdef IDLE_TIMEOUT_ENABLE + static uint16_t timeout_timer = 0; + static uint16_t timeout_counter = 0; //in minute intervals + static uint16_t timeout_threshold = TIMEOUT_THRESHOLD_DEFAULT; + + uint16_t get_timeout_threshold(void) { + return timeout_threshold; + } + + void timeout_reset_timer(void) { + timeout_timer = timer_read(); + timeout_counter = 0; + }; + + void timeout_update_threshold(bool increase) { + if (increase && timeout_threshold < TIMEOUT_THRESHOLD_MAX) timeout_threshold++; + if (!increase && timeout_threshold > 0) timeout_threshold--; + }; + + void timeout_tick_timer(void) { + if (timeout_threshold > 0) { + if (timer_elapsed(timeout_timer) >= 60000) { // 1 minute tick + timeout_counter++; + timeout_timer = timer_read(); + } + #ifdef RGB_MATRIX_ENABLE + if (timeout_threshold > 0 && timeout_counter >= timeout_threshold) { + rgb_matrix_disable_noeeprom(); + } + #endif + } // timeout_threshold = 0 will disable timeout + } + +#endif // IDLE_TIMEOUT_ENABLE + +#if defined(ALTTAB_SCROLL_ENABLE) || defined(IDLE_TIMEOUT_ENABLE) // timer features + __attribute__((weak)) void matrix_scan_keymap(void) {} + + void matrix_scan_user(void) { + #ifdef ALTTAB_SCROLL_ENABLE + encoder_tick_alttabscroll(); + #endif + #ifdef IDLE_TIMEOUT_ENABLE + timeout_tick_timer(); + #endif + matrix_scan_keymap(); + } +#endif // ALTTAB_SCROLL_ENABLE or IDLE_TIMEOUT_ENABLE + +// PROCESS KEY CODES +__attribute__ ((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; } + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (!process_record_keymap(keycode, record)) { return false; } + switch (keycode) { + case KC_00: + if (record->event.pressed) { + // when keycode KC_00 is pressed + SEND_STRING("00"); + } else unregister_code16(keycode); + break; + case KC_WINLCK: + if (record->event.pressed) { + keymap_config.no_gui = !keymap_config.no_gui; //toggle status + } else unregister_code16(keycode); + break; + +#ifdef IDLE_TIMEOUT_ENABLE + case RGB_TOI: + if(record->event.pressed) { + timeout_update_threshold(true); + } else unregister_code16(keycode); + break; + case RGB_TOD: + if(record->event.pressed) { + timeout_update_threshold(false); //decrease timeout + } else unregister_code16(keycode); + break; +#endif // IDLE_TIMEOUT_ENABLE +#ifdef RGB_MATRIX_ENABLE + case RGB_NITE: + if(record->event.pressed) { + rgb_nightmode = !rgb_nightmode; + } else unregister_code16(keycode); + break; +#endif // RGB_MATRIX_ENABLE + +#ifdef EMOTICON_ENABLE + case EMO_SHRUG: + if (record->event.pressed) SEND_STRING("`\\_(\"/)_/`"); + else unregister_code16(keycode); + break; + case EMO_CONFUSE: + if (record->event.pressed) SEND_STRING("(*_*)"); + else unregister_code16(keycode); + break; + case EMO_TEARS: + if (record->event.pressed) SEND_STRING("(T_T)"); + else unregister_code16(keycode); + break; + case EMO_NERVOUS: + if (record->event.pressed) SEND_STRING("(~_~;)"); + else unregister_code16(keycode); + break; + case EMO_JOY: + if (record->event.pressed) SEND_STRING("(^o^)"); + else unregister_code16(keycode); + break; + case EMO_SAD: + if (record->event.pressed) SEND_STRING(":'-("); + else unregister_code16(keycode); + break; + #endif // EMOTICON_ENABLE + + #ifdef ALTTAB_SCROLL_ENABLE + case KC_TSTOG: + if (record->event.pressed) encoder_toggle_alttabscroll(); + else unregister_code16(keycode); + break; + #endif // ALTTAB_SCROLL_ENABLE + + default: + if (record->event.pressed) { + #ifdef RGB_MATRIX_ENABLE + rgb_matrix_enable(); + #endif + #ifdef IDLE_TIMEOUT_ENABLE + timeout_reset_timer(); //reset activity timer + #endif + } + break; + } + return true; +}; + + +uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_SFTUP: + return 300; + case KC_RAISESPC: + case KC_LOWERSPC: + return 450; + default: + return TAPPING_TERM; + } +} + +// Turn on/off NUM LOCK if current state is different +void activate_numlock(bool turn_on) { + if (IS_HOST_LED_ON(USB_LED_NUM_LOCK) != turn_on) { + tap_code(KC_NUMLOCK); + } +} + + +// INITIAL STARTUP + +__attribute__ ((weak)) void keyboard_post_init_keymap(void) {} + +void keyboard_post_init_user(void) { + keyboard_post_init_keymap(); + #ifdef STARTUP_NUMLOCK_ON + activate_numlock(true); // turn on Num lock by default so that the numpad layer always has predictable results + #endif // STARTUP_NUMLOC_ON + #ifdef IDLE_TIMEOUT_ENABLE + timeout_timer = timer_read(); // set inital time for ide timeout + #endif +} diff --git a/users/jonavin/jonavin.h b/users/jonavin/jonavin.h new file mode 100644 index 000000000000..ab2ce0dff2f2 --- /dev/null +++ b/users/jonavin/jonavin.h @@ -0,0 +1,129 @@ + +/* Copyright 2021 Jonavin Eng @Jonavin + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should 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 MACROS +#define ARRAYSIZE(arr) sizeof(arr)/sizeof(arr[0]) + + +// LAYERS +enum custom_user_layers { + _BASE, + _FN1, + _LOWER, + _RAISE, +}; + +// KEYCODES +enum custom_user_keycodes { + KC_00 = SAFE_RANGE, + ENCFUNC, + KC_WINLCK, //Toggles Win key on and off + RGB_TOI, // Timeout idle time up + RGB_TOD, // Timeout idle time down + RGB_NITE, // Turns off all rgb but allow rgb indicators to work + + EMO_SHRUG, // `\_("/)_/` + EMO_CONFUSE, // (*_*) + EMO_SAD, // :'-( + EMO_NERVOUS, // (~_~;) + EMO_JOY, // (^o^) + EMO_TEARS, // (T_T) + + KC_TSTOG, // Tab Scroll Toggle + + NEW_SAFE_RANGE // new safe range for keymap level custom keycodes +}; + +#define KC_CAD LALT(LCTL(KC_DEL)) +#define KC_AF4 LALT(KC_F4) +#define KC_TASK LCTL(LSFT(KC_ESC)) +#define CT_PGUP RCTL(KC_PGUP) +#define CT_PGDN RCTL(KC_PGDN) +#define CT_HOME RCTL(KC_HOME) +#define CT_END RCTL(KC_END) +#define KC_SFTUP RSFT_T(KC_UP) // Shift when held, Up arrow when tapped +#define KC_RAISESPC LT(_RAISE,KC_SPC) // _RAISE layer mod when held, space when tapped +#define KC_LOWERSPC LT(_LOWER,KC_SPC) // _LOWER layer mod when held, space when tapped + + +#ifdef TD_LSFT_CAPSLOCK_ENABLE + // Tap Dance Definitions + enum custom_tapdance { + TD_LSFT_CAPSLOCK, + TD_LSFT_CAPS_WIN + }; + + #define KC_LSFTCAPS TD(TD_LSFT_CAPSLOCK) + #define KC_LSFTCAPSWIN TD(TD_LSFT_CAPS_WIN) +#else // regular Shift + #define KC_LSFTCAPS KC_LSFT +#endif // TD_LSFT_CAPSLOCK_ENABLE + + +// ENCODER ACTIONS +#ifdef ENCODER_ENABLE + void encoder_action_volume(bool clockwise); + void encoder_action_mediatrack(bool clockwise); + void encoder_action_navword(bool clockwise); + void encoder_action_navpage(bool clockwise); + + uint8_t get_selected_layer(void); + void encoder_action_layerchange(bool clockwise); + + #if defined(RGB_MATRIX_ENABLE) || defined(RGBLIGHT_ENABLE) + void encoder_action_rgb_speed(bool clockwise); + void encoder_action_rgb_hue(bool clockwise); + void encoder_action_rgb_saturation(bool clockwise); + void encoder_action_rgb_brightness(bool clockwise); + void encoder_action_rgb_mode(bool clockwise); + #endif // RGB_MATRIX_ENABLE / RGBLIGHT_ENABLE + + #ifdef ALTTAB_SCROLL_ENABLE + void encoder_action_alttabscroll(bool clockwise); + void encoder_toggle_alttabscroll(void); + void encoder_tick_alttabscroll(void); + #endif // ALTTAB_SCROLL_ENABLE +#endif // ENCODER_ENABLE + + +#ifdef RGB_MATRIX_ENABLE +//RGB custom colours + #define RGB_GODSPEED 0x00, 0xE4, 0xFF // colour for matching keycaps + #define RGB_NAUTILUS 0x00, 0xA4, 0xA9 // Nautilus Font colours + + void activate_rgb_nightmode (bool turn_on); + bool get_rgb_nightmode(void); +#endif + + +// IDLE TIMEOUTS +#ifdef IDLE_TIMEOUT_ENABLE + #define TIMEOUT_THRESHOLD_DEFAULT 5 // default timeout minutes + #define TIMEOUT_THRESHOLD_MAX 140 // upper limits (2 hours and 10 minutes -- no rgb indicators above this value) + + //prototype functions + uint16_t get_timeout_threshold(void); + void timeout_reset_timer(void); + void timeout_update_threshold(bool increase); + void timeout_tick_timer(void); +#endif //IDLE_TIMEOUT_ENABLE + + +// OTHER FUNCTION PROTOTYPE +void activate_numlock(bool turn_on); diff --git a/users/jonavin/jonavin_encoder.c b/users/jonavin/jonavin_encoder.c new file mode 100644 index 000000000000..387ed5f43006 --- /dev/null +++ b/users/jonavin/jonavin_encoder.c @@ -0,0 +1,219 @@ + +/* Copyright 2021 Jonavin Eng @Jonavin + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + + +#include QMK_KEYBOARD_H +#include "jonavin.h" + +#ifdef ENCODER_ENABLE + #ifndef DYNAMIC_KEYMAP_LAYER_COUNT + #define DYNAMIC_KEYMAP_LAYER_COUNT 4 //default in case this is not already defined elsewhere + #endif + #ifndef ENCODER_DEFAULTACTIONS_INDEX + #define ENCODER_DEFAULTACTIONS_INDEX 0 // can select encoder index if there are multiple encoders + #endif + + void encoder_action_volume(bool clockwise) { + if (clockwise) + tap_code(KC_VOLU); + else + tap_code(KC_VOLD); + } + + void encoder_action_mediatrack(bool clockwise) { + if (clockwise) + tap_code(KC_MEDIA_NEXT_TRACK); + else + tap_code(KC_MEDIA_PREV_TRACK); + } + + void encoder_action_navword(bool clockwise) { + if (clockwise) + tap_code16(LCTL(KC_RGHT)); + else + tap_code16(LCTL(KC_LEFT)); + } + + void encoder_action_navpage(bool clockwise) { + if (clockwise) + tap_code16(KC_PGUP); + else + tap_code16(KC_PGDN); + } + + // LAYER HANDLING + uint8_t selected_layer = 0; + + uint8_t get_selected_layer(void) { + return selected_layer; + } + + void encoder_action_layerchange(bool clockwise) { + if (clockwise) { + if(selected_layer < (DYNAMIC_KEYMAP_LAYER_COUNT - 1)) { + selected_layer ++; + layer_move(selected_layer); + } + } else { + if (selected_layer > 0) { + selected_layer --; + layer_move(selected_layer); + } + } + } + + #ifdef RGB_MATRIX_ENABLE + void encoder_action_rgb_speed(bool clockwise) { + if (clockwise) + rgb_matrix_increase_speed_noeeprom(); + else + rgb_matrix_decrease_speed_noeeprom(); + } + void encoder_action_rgb_hue(bool clockwise) { + if (clockwise) + rgb_matrix_increase_hue_noeeprom(); + else + rgb_matrix_decrease_hue_noeeprom(); + } + void encoder_action_rgb_saturation(bool clockwise) { + if (clockwise) + rgb_matrix_increase_sat_noeeprom(); + else + rgb_matrix_decrease_sat_noeeprom(); + } + void encoder_action_rgb_brightness(bool clockwise) { + if (clockwise) + rgb_matrix_increase_val_noeeprom(); + else + rgb_matrix_decrease_val_noeeprom(); + } + void encoder_action_rgb_mode(bool clockwise) { + if (clockwise) + rgb_matrix_step_noeeprom(); + else + rgb_matrix_step_reverse_noeeprom(); + } + #elif defined(RGBLIGHT_ENABLE) + void encoder_action_rgb_speed(bool clockwise) { + if (clockwise) + rgblight_increase_speed_noeeprom(); + else + rgblight_decrease_speed_noeeprom(); + } + void encoder_action_rgb_hue(bool clockwise) { + if (clockwise) + rgblight_increase_hue_noeeprom(); + else + rgblight_decrease_hue_noeeprom(); + } + void encoder_action_rgb_saturation(bool clockwise) { + if (clockwise) + rgblight_increase_sat_noeeprom(); + else + rgblight_decrease_sat_noeeprom(); + } + void encoder_action_rgb_brightness(bool clockwise) { + if (clockwise) + rgblight_increase_val_noeeprom(); + else + rgblight_decrease_val_noeeprom(); + } + void encoder_action_rgb_mode(bool clockwise) { + if (clockwise) + rgblight_step_noeeprom(); + else + rgblight_step_reverse_noeeprom(); + } + #endif // RGB_MATRIX_ENABLE || RGBLIGHT_ENABLE + + #ifdef ALTTAB_SCROLL_ENABLE + bool is_tab_scrolling = false; + bool is_alt_tab_active = false; + uint16_t alt_tab_timer = 0; + + + void encoder_toggle_alttabscroll(void) { + is_tab_scrolling = !is_tab_scrolling; + } + + void encoder_action_alttabscroll(bool clockwise) { + if (clockwise) { + if (!is_alt_tab_active) { + is_alt_tab_active = true; + register_mods(MOD_RALT); + } + tap_code16(KC_TAB); + } + else { + tap_code16(S(KC_TAB)); + } + alt_tab_timer = timer_read(); + } + + void encoder_tick_alttabscroll(void) { + if (is_alt_tab_active) { + if (timer_elapsed(alt_tab_timer) > 600) { + unregister_mods(MOD_RALT); + is_alt_tab_active = false; + } + } + } + #endif // ALTTAB_SCROLL_ENABLE +#endif // ENCODER_ENABLE + +#if defined(ENCODER_ENABLE) && defined(ENCODER_DEFAULTACTIONS_ENABLE) // Encoder Functionality + + __attribute__((weak)) bool encoder_update_keymap(uint8_t index, bool clockwise) { return true; } + + bool encoder_update_user(uint8_t index, bool clockwise) { + if (!encoder_update_keymap(index, clockwise)) { return false; } + if (index != ENCODER_DEFAULTACTIONS_INDEX) {return true;} // exit if the index doesn't match + uint8_t mods_state = get_mods(); + if (mods_state & MOD_BIT(KC_LSFT) ) { // If you are holding L shift, encoder changes layers + encoder_action_layerchange(clockwise); + } else if (mods_state & MOD_BIT(KC_RSFT) ) { // If you are holding R shift, Page up/dn + unregister_mods(MOD_BIT(KC_RSFT)); + encoder_action_navpage(clockwise); + register_mods(MOD_BIT(KC_RSFT)); + } else if (mods_state & MOD_BIT(KC_LCTL)) { // if holding Left Ctrl, navigate next/prev word + encoder_action_navword(clockwise); + } else if (mods_state & MOD_BIT(KC_LALT)) { // if holding Left Alt, change media next/prev track + encoder_action_mediatrack(clockwise); + } else { + switch(get_highest_layer(layer_state)) { + case _FN1: + #ifdef IDLE_TIMEOUT_ENABLE + timeout_update_threshold(clockwise); + #endif + break; + default: + #ifdef ALTTAB_SCROLL_ENABLE + if (is_tab_scrolling) + encoder_action_alttabscroll(clockwise); + else + encoder_action_volume(clockwise); // Otherwise it just changes volume + #else + encoder_action_volume(clockwise); // Otherwise it just changes volume + #endif // ALTTAB_SCROLL_ENABLE + break; + } + } + return false; + } +#endif // ENCODER_ENABLE + + diff --git a/users/jonavin/readme.md b/users/jonavin/readme.md new file mode 100644 index 000000000000..8ec0e0ea16ba --- /dev/null +++ b/users/jonavin/readme.md @@ -0,0 +1,124 @@ +Copyright 2021 Jonavin Eng @Jonavin + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. + +LAYERS: +- 0 = _BASE +- 1 = _FN1 +- 2 = _LOWER +- 3 = _RAISE + +KEYCODES: +- KC_CAD Ctrl-Alt-Del +- KC_AF4 Alt-F4 +- KC_TASK Windows Task Manager (Ctrl-Shift-Esc) +- LSFT_CAPSLOCK When LSFT_CAPSLOCK_ENABLE is defined, hold for Shift double tap for CAPSLOCK; otherwise, just Shift +- KC_00 double zero "00" +- KC_WINLCK toggles LGui/Win key lock +- RGB_TOI Increase Timeout idle time threshold +- RGB_TOD Decrease Timeout idle time threshold +- CT_PGUP Ctrl-PgUp +- CT_PGDN Ctrl-PgDn +- CT_HOME Ctrl-HOme +- CT_END Ctrl-End +- KC_SFTUP RShift when held, Up arrow when tapped +- KC_RAISESPC _RAISE layer mod when held, space when tapped +- KC_LOWERSPC _LOWER layer mod when held, space when tapped +- KC_TSTOG toggles between volume and Alt-Tab encoder control +- + When EMOTICON_ENABLE = yes +- EMO_SHRUG `\_("/)_/` +- EMO_CONFUSE (*_*) +- EMD_TEARS (T_T) +- EMO_NERVOUS (~_~;) +- EMO_JOY (^o^) +- EMO_SAD :'-( + + +AVAILABLE ENCODER ACTIONS: +- void encoder_action_volume(bool clockwise); +- void encoder_action_mediatrack(bool clockwise); +- void encoder_action_navword(bool clockwise); +- void encoder_action_navpage(bool clockwise); +- +- uint8_t get_selected_layer(void); +- void encoder_action_layerchange(bool clockwise); +- +- void encoder_action_rgb_speed(bool clockwise); +- void encoder_action_rgb_hue(bool clockwise); +- void encoder_action_rgb_saturation(bool clockwise); +- void encoder_action_rgb_brightness(bool clockwise); +- void encoder_action_rgb_mode(bool clockwise); +- +- void encoder_action_alttabscroll(bool clockwise) +- void encoder_toggle_alttabscroll(void); + +ENABLE FEATURES your keymap rules.mk +--------------------------------------- + +STARTUP_NUMLOCK_ON = yes +- turns on NUMLOCK by default + +ENCODER_DEFAULTACTIONS_ENABLE = yes +- Enabled default encoder funtions +- When enabled, use this in the keymap for an additional encoder processing +- bool encoder_update_keymap(uint8_t index, bool clockwise) + +OPTION: set ENCODER_DEFAULTACTIONS_INDEX to the encoder number if the encoder is not index 0 + +TD_LSFT_CAPSLOCK_ENABLE = yes +- This will enable double tap on Left Shift to toggle CAPSLOCK +- KC_LSFTCAPS to bind to left Shift to enable feature +- KC_LSFTCAPSWIN does the same thing but will not turn on CAPS when Win Lkey is disabled + +IDLE_TIMEOUT_ENABLE = yes +- Enables Timer functionality; for RGB idle timeouts that can be changed dynamically +- When enabled, use this in the keymap for an additional matrix processing: void matrix_scan_keymap(void) + +EMOTICON_ENABLE +- adds EMO_ keycodes for text emojis + +INVERT_NUMLOCK_INDICATOR +- inverts the Num lock indicator, LED is on when num lock is off + +ALTTAB_SCROLL_ENABLE +- When ENCODER_DEFAULTACTIONS_ENABLE = yes, + Enables Alt-Tab scrolling functions in default encoder, + bind KS_TSTOG to a key to enable/disable Alt-Tab vs Volume control +- When defining your own encoder functions use encoder_action_alttabscroll(bool clockwise) to assign the encodr action + + +FUNCTIONS +------------------------ +- u16int_t get_timeout_threshold(void) // returns the current timeout threshold +- void timeout_update_threshold(bool increase) // change threshold: true = increase, false = decrease +- void timeout_reset_timer(void) // resets timer (put in process_record_user if you override it) +- void timeout_tick_timer(void) // registers time ticks (put in maxtrix_scan_user if you override it) + +Other Functions: +- activate_numlock(bool turn_on) // true = turn on NUM LOCK, false = off + +KEYMAP LEVEL ADDITIONAL PROCESSING FUNCTIONS +- bool process_record_keymap(uint16_t keycode, keyrecord_t *record) +- void keyboard_post_init_keymap(void) + +LIST OF COMPATIBLE KEYMAPS +- gmmk/pro/ansi +- keebio/quefrency/rev3 +- mechwild/mercutio +- mechwild/murphpad +- mechwild/OBE +- nopunin10did/kastenwagen (*) + + (*) coming soon diff --git a/users/jonavin/rules.mk b/users/jonavin/rules.mk new file mode 100644 index 000000000000..4f65db27b9ef --- /dev/null +++ b/users/jonavin/rules.mk @@ -0,0 +1,29 @@ +SRC += jonavin.c +ifdef ENCODER_ENABLE + # include encoder related code when enabled + ifeq ($(strip $(ENCODER_DEFAULTACTIONS_ENABLE)), yes) + OPT_DEFS += -DENCODER_DEFAULTACTIONS_ENABLE + endif + ifeq ($(strip $(ALTTAB_SCROLL_ENABLE)), yes) + OPT_DEFS += -DALTTAB_SCROLL_ENABLE + endif + SRC += jonavin_encoder.c +endif +ifeq ($(strip $(TD_LSFT_CAPSLOCK_ENABLE)), yes) + OPT_DEFS += -DTD_LSFT_CAPSLOCK_ENABLE +endif +ifeq ($(strip $(IDLE_TIMEOUT_ENABLE)), yes) + OPT_DEFS += -DIDLE_TIMEOUT_ENABLE +endif +ifeq ($(strip $(STARTUP_NUMLOCK_ON)), yes) + OPT_DEFS += -DSTARTUP_NUMLOCK_ON +endif +ifeq ($(strip $(COLEMAK_LAYER_ENABLE)), yes) + OPT_DEFS += -DCOLEMAK_LAYER_ENABLE +endif +ifeq ($(strip $(EMOTICON_ENABLE)), yes) + OPT_DEFS += -DEMOTICON_ENABLE +endif +ifeq ($(strip $(INVERT_NUMLOCK_INDICATOR)), yes) + OPT_DEFS += -DINVERT_NUMLOCK_INDICATOR +endif diff --git a/users/konstantin/config.h b/users/konstantin/config.h index 2629cdd57030..d429452363e3 100644 --- a/users/konstantin/config.h +++ b/users/konstantin/config.h @@ -1,3 +1,19 @@ +/* Copyright 2019-2021 Konstantin Đorđević <vomindoraan@gmail.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + #pragma once // Keyboard reports @@ -24,7 +40,7 @@ // Tapping #define PERMISSIVE_HOLD #define TAPPING_TERM 200 -#define TAPPING_TOGGLE 3 +#define TAPPING_TOGGLE 2 // Unicode #define UNICODE_CYCLE_PERSIST false diff --git a/users/konstantin/konstantin.c b/users/konstantin/konstantin.c index 72aca9fb8c25..5d80877f0e4a 100644 --- a/users/konstantin/konstantin.c +++ b/users/konstantin/konstantin.c @@ -1,3 +1,19 @@ +/* Copyright 2019-2021 Konstantin Đorđević <vomindoraan@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 "konstantin.h" __attribute__((weak)) @@ -21,6 +37,41 @@ void keyboard_post_init_user(void) { keyboard_post_init_keymap(); } +__attribute__((weak)) +layer_state_t layer_state_set_keymap(layer_state_t state) { + return state; +} + +layer_state_t layer_state_set_user(layer_state_t state) { + state = layer_state_set_keymap(state); + +#ifdef LAYER_NUMPAD + bool numpad = IS_LAYER_ON_STATE(state, L_NUMPAD); + bool num_lock = IS_HOST_LED_ON(USB_LED_NUM_LOCK); + if (numpad != num_lock) { + tap_code(KC_NLCK); // Toggle Num Lock to match Numpad layer state + } +#endif + + return state; +} + +__attribute__((weak)) +void led_set_keymap(uint8_t usb_led) {} + +void led_set_user(uint8_t usb_led) { + led_set_keymap(usb_led); +} + +__attribute__((weak)) +bool led_update_keymap(led_t led_state) { + return true; +} + +bool led_update_user(led_t led_state) { + return led_update_keymap(led_state); +} + __attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; @@ -91,38 +142,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return true; } - -__attribute__((weak)) -uint32_t layer_state_set_keymap(uint32_t state) { - return state; -} - -uint32_t layer_state_set_user(uint32_t state) { - state = layer_state_set_keymap(state); - -#ifdef LAYER_NUMPAD - bool numpad = IS_LAYER_ON_STATE(state, L_NUMPAD); - bool num_lock = IS_HOST_LED_ON(USB_LED_NUM_LOCK); - if (numpad != num_lock) { - tap_code(KC_NLCK); // Toggle Num Lock to match Numpad layer state - } -#endif - - return state; -} - -__attribute__((weak)) -void led_set_keymap(uint8_t usb_led) {} - -void led_set_user(uint8_t usb_led) { - led_set_keymap(usb_led); -} - -__attribute__((weak)) -bool led_update_keymap(led_t led_state) { - return true; -} - -bool led_update_user(led_t led_state) { - return led_update_keymap(led_state); -} diff --git a/users/konstantin/konstantin.h b/users/konstantin/konstantin.h index 249b3fe15bf5..7da1dbfd2188 100644 --- a/users/konstantin/konstantin.h +++ b/users/konstantin/konstantin.h @@ -1,3 +1,19 @@ +/* Copyright 2019-2021 Konstantin Đorđević <vomindoraan@gmail.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + #pragma once #include "quantum.h" @@ -56,14 +72,6 @@ set_mods(mods); \ } -enum keycodes_user { - CLEAR = SAFE_RANGE, - DST_P_R, - DST_N_A, - - RANGE_KEYMAP, -}; - enum layers_user { L_BASE, #ifdef LAYER_FN @@ -76,11 +84,21 @@ enum layers_user { LAYERS_KEYMAP, }; +enum keycodes_user { + CLEAR = SAFE_RANGE, + DST_P_R, + DST_N_A, + + RANGE_KEYMAP, +}; + void keyboard_pre_init_keymap(void); void eeconfig_init_keymap(void); void keyboard_post_init_keymap(void); -bool process_record_keymap(uint16_t keycode, keyrecord_t *record); -uint32_t layer_state_set_keymap(uint32_t state); -void led_set_keymap(uint8_t usb_led); -bool led_update_keymap(led_t led_state); +layer_state_t layer_state_set_keymap(layer_state_t state); + +void led_set_keymap(uint8_t usb_led); +bool led_update_keymap(led_t led_state); + +bool process_record_keymap(uint16_t keycode, keyrecord_t *record); diff --git a/users/konstantin/post_config.h b/users/konstantin/post_config.h new file mode 100644 index 000000000000..3199b2124fa3 --- /dev/null +++ b/users/konstantin/post_config.h @@ -0,0 +1,22 @@ +/* Copyright 2021 Konstantin Đorđević <vomindoraan@gmail.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#pragma once + +// VIA +#ifndef DYNAMIC_KEYMAP_LAYER_COUNT + #define DYNAMIC_KEYMAP_LAYER_COUNT 3 +#endif diff --git a/users/konstantin/rgb.c b/users/konstantin/rgb.c index fffa250f25f2..2eeef829b08b 100644 --- a/users/konstantin/rgb.c +++ b/users/konstantin/rgb.c @@ -1,3 +1,19 @@ +/* Copyright 2019-2021 Konstantin Đorđević <vomindoraan@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 "rgb.h" #ifdef RGBLIGHT_EFFECT_BREATHING diff --git a/users/konstantin/rgb.h b/users/konstantin/rgb.h index e09c5bd7742c..3425dcb06908 100644 --- a/users/konstantin/rgb.h +++ b/users/konstantin/rgb.h @@ -1,3 +1,19 @@ +/* Copyright 2019-2021 Konstantin Đorđević <vomindoraan@gmail.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + #pragma once #include "quantum.h" diff --git a/users/konstantin/tap_dance.c b/users/konstantin/tap_dance.c index 4ec8caa63f74..57a29d98b8e9 100644 --- a/users/konstantin/tap_dance.c +++ b/users/konstantin/tap_dance.c @@ -1,3 +1,19 @@ +/* Copyright 2019-2021 Konstantin Đorđević <vomindoraan@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 "tap_dance.h" #include "konstantin.h" diff --git a/users/konstantin/tap_dance.h b/users/konstantin/tap_dance.h index 56889a19ef23..047662a8e95e 100644 --- a/users/konstantin/tap_dance.h +++ b/users/konstantin/tap_dance.h @@ -1,3 +1,19 @@ +/* Copyright 2019-2021 Konstantin Đorđević <vomindoraan@gmail.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + #pragma once #include "quantum.h" diff --git a/users/konstantin/unicode.c b/users/konstantin/unicode.c index 8ef5aaa1ec35..4eae716afdeb 100644 --- a/users/konstantin/unicode.c +++ b/users/konstantin/unicode.c @@ -1,3 +1,19 @@ +/* Copyright 2019-2021 Konstantin Đorđević <vomindoraan@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 "unicode.h" #ifdef UNICODEMAP_ENABLE diff --git a/users/konstantin/unicode.h b/users/konstantin/unicode.h index b2616d120b4d..1a1eb608949e 100644 --- a/users/konstantin/unicode.h +++ b/users/konstantin/unicode.h @@ -1,3 +1,19 @@ +/* Copyright 2019-2021 Konstantin Đorđević <vomindoraan@gmail.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + #pragma once #include "quantum.h" diff --git a/users/kuatsure/kuatsure.c b/users/kuatsure/kuatsure.c index f935e83c7445..88bf6790a490 100644 --- a/users/kuatsure/kuatsure.c +++ b/users/kuatsure/kuatsure.c @@ -3,7 +3,8 @@ qk_tap_dance_action_t tap_dance_actions[] = { [TD_LBRC] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, KC_LT), - [TD_RBRC] = ACTION_TAP_DANCE_DOUBLE(KC_RBRC, KC_GT) + [TD_RBRC] = ACTION_TAP_DANCE_DOUBLE(KC_RBRC, KC_GT), + [TD_SLSH] = ACTION_TAP_DANCE_DOUBLE(KC_SLSH, KC_BSLS), }; __attribute__ ((weak)) @@ -29,15 +30,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case KB_FLSH: if (!record->event.pressed) { - SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP - #if (defined(BOOTLOADER_DFU) || defined(BOOTLOADER_LUFA_DFU) || defined(BOOTLOADER_QMK_DFU)) - ":dfu " - #elif defined(BOOTLOADER_HALFKAY) - ":teensy " - #elif defined(BOOTLOADER_CATERINA) - ":avrdude " - #endif - SS_TAP(X_ENTER) + SEND_STRING( + "qmk flash -kb " QMK_KEYBOARD " -km " QMK_KEYMAP ); reset_keyboard(); diff --git a/users/kuatsure/kuatsure.h b/users/kuatsure/kuatsure.h index 8961d5621306..ca2c91c9bc44 100644 --- a/users/kuatsure/kuatsure.h +++ b/users/kuatsure/kuatsure.h @@ -11,13 +11,18 @@ enum kuatsure_keycodes { USER_SAFE_RANGE, }; +#define ONESHOT_TAP_TOGGLE 2 +#define KT_LSFT OSM(MOD_LSFT) + enum { TD_LBRC = 0, TD_RBRC, + TD_SLSH }; #define KT_LBRC TD(TD_LBRC) #define KT_RBRC TD(TD_RBRC) +#define KT_SLSH TD(TD_SLSH) #define TAPPING_TERM 200 @@ -33,8 +38,6 @@ void tmux_pane_zoom(void); #undef LEADER_TIMEOUT #define LEADER_TIMEOUT 300 -#define LAYOUT_preonic_grid_wrapper(...) LAYOUT_preonic_grid(__VA_ARGS__) - #define _________________NUMBER_L1_________________ KC_1, KC_2, KC_3, KC_4, KC_5 #define _________________NUMBER_R1_________________ KC_6, KC_7, KC_8, KC_9, KC_0 @@ -47,7 +50,8 @@ void tmux_pane_zoom(void); #define _________________QWERTY_R1_________________ KC_Y, KC_U, KC_I, KC_O, KC_P #define _________________QWERTY_R2_________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN -#define _________________QWERTY_R3_________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLASH +#define _________________QWERTY_R3_________________ KC_N, KC_M, KC_COMM, KC_DOT, KT_SLSH +#define _________________QWERTY_R3_M_______________ KC_N, KC_M, KC_COMM, KC_DOT, KC_UP #define ____________FUNCTION_1____________ KC_F1, KC_F2, KC_F3, KC_F4 #define ____________FUNCTION_2____________ KC_F5, KC_F6, KC_F7, KC_F8 diff --git a/users/kuchosauronad0/kuchosauronad0.c b/users/kuchosauronad0/kuchosauronad0.c index 6c38d0f10606..a8f17b08ee3d 100644 --- a/users/kuchosauronad0/kuchosauronad0.c +++ b/users/kuchosauronad0/kuchosauronad0.c @@ -1,5 +1,5 @@ /* -Copyright 2019 Andre Poley <andre.poley@mailbox.org> +Copyright 2019 Andre Poley <andre.poley@mailbox.org> This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -123,7 +123,7 @@ uint32_t layer_state_set_keymap (uint32_t state) { // on layer change, no matter where the change was initiated // Then runs keymap's layer change check -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST); #ifdef RGBLIGHT_ENABLE state = layer_state_set_rgb(state); diff --git a/users/losinggeneration/rules.mk b/users/losinggeneration/rules.mk index 295367fbcabd..41d6f9167050 100644 --- a/users/losinggeneration/rules.mk +++ b/users/losinggeneration/rules.mk @@ -2,7 +2,6 @@ # Only enable things here that are generic to all keyboards. A yes or no here # will override keyboard/keymap specific values # -#BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) #COMMAND_ENABLE = no # Commands for debug and configuration #CONSOLE_ENABLE = no # Console for debug(+400) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) diff --git a/users/manna-harbour_miryoku/README.org b/users/manna-harbour_miryoku/README.org deleted file mode 120000 index b6caaade1678..000000000000 --- a/users/manna-harbour_miryoku/README.org +++ /dev/null @@ -1 +0,0 @@ -miryoku.org \ No newline at end of file diff --git a/users/manna-harbour_miryoku/config.h b/users/manna-harbour_miryoku/config.h index db16088158ff..d24f52edae69 100644 --- a/users/manna-harbour_miryoku/config.h +++ b/users/manna-harbour_miryoku/config.h @@ -1,8 +1,13 @@ -// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*- +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. #pragma once -// default but important +// default but used in macros +#undef TAPPING_TERM #define TAPPING_TERM 200 // Prevent normal rollover on alphas from accidentally triggering mods. @@ -11,6 +16,11 @@ // Enable rapid switch from tap to hold, disables double tap hold auto-repeat. #define TAPPING_FORCE_HOLD +// Auto Shift +#define NO_AUTO_SHIFT_ALPHA +#define AUTO_SHIFT_TIMEOUT TAPPING_TERM +#define AUTO_SHIFT_NO_SETUP + // Recommended for heavy chording. #define QMK_KEYS_PER_SCAN 4 diff --git a/users/manna-harbour_miryoku/manna-harbour_miryoku.c b/users/manna-harbour_miryoku/manna-harbour_miryoku.c index 9bc0f17e6330..6347183417e5 100644 --- a/users/manna-harbour_miryoku/manna-harbour_miryoku.c +++ b/users/manna-harbour_miryoku/manna-harbour_miryoku.c @@ -1,91 +1,229 @@ -// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*- +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 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 "manna-harbour_miryoku.h" const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -#if defined MIRYOKU_ALPHAS_QWERTY +#if defined MIRYOKU_LAYERS_FLIP [BASE] = LAYOUT_miryoku( + #if defined MIRYOKU_ALPHAS_AZERTY + KC_A, KC_Z, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + LGUI_T(KC_Q), LALT_T(KC_S), LCTL_T(KC_D), LSFT_T(KC_F), KC_G, KC_H, LSFT_T(KC_J), LCTL_T(KC_K), LALT_T(KC_L), LGUI_T(KC_M), + LT(BUTTON, KC_W), ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_COMM, KC_DOT, ALGR_T(KC_SLSH), LT(BUTTON, KC_QUOT), + U_NP, U_NP, LT(FUN, KC_DEL), LT(NUM, KC_BSPC), LT(SYM, KC_ENT), LT(MOUSE, KC_TAB), LT(NAV, KC_SPC), LT(MEDIA, KC_ESC), U_NP, U_NP + #elif defined MIRYOKU_ALPHAS_COLEMAK + KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, + LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_D, KC_H, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O), + LT(BUTTON, KC_Z), ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH), + U_NP, U_NP, LT(FUN, KC_DEL), LT(NUM, KC_BSPC), LT(SYM, KC_ENT), LT(MOUSE, KC_TAB), LT(NAV, KC_SPC), LT(MEDIA, KC_ESC), U_NP, U_NP + #elif defined MIRYOKU_ALPHAS_COLEMAKDHK + KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, + LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_G, KC_K, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O), + LT(BUTTON, KC_Z), ALGR_T(KC_X), KC_C, KC_D, KC_V, KC_M, KC_H, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH), + U_NP, U_NP, LT(FUN, KC_DEL), LT(NUM, KC_BSPC), LT(SYM, KC_ENT), LT(MOUSE, KC_TAB), LT(NAV, KC_SPC), LT(MEDIA, KC_ESC), U_NP, U_NP + #elif defined MIRYOKU_ALPHAS_DVORAK + KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, + LGUI_T(KC_A), LALT_T(KC_O), LCTL_T(KC_E), LSFT_T(KC_U), KC_I, KC_D, LSFT_T(KC_H), LCTL_T(KC_T), LALT_T(KC_N), LGUI_T(KC_S), + LT(BUTTON, KC_SLSH), ALGR_T(KC_Q), KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, ALGR_T(KC_V), LT(BUTTON, KC_Z), + U_NP, U_NP, LT(FUN, KC_DEL), LT(NUM, KC_BSPC), LT(SYM, KC_ENT), LT(MOUSE, KC_TAB), LT(NAV, KC_SPC), LT(MEDIA, KC_ESC), U_NP, U_NP + #elif defined MIRYOKU_ALPHAS_HALMAK + KC_W, KC_L, KC_R, KC_B, KC_Z, KC_QUOT, KC_Q, KC_U, KC_D, KC_J, + LGUI_T(KC_S), LALT_T(KC_H), LCTL_T(KC_N), LSFT_T(KC_T), KC_COMM, KC_DOT, LSFT_T(KC_A), LCTL_T(KC_E), LALT_T(KC_O), LGUI_T(KC_I), + LT(BUTTON, KC_F), ALGR_T(KC_M), KC_V, KC_C, KC_SLSH, KC_G, KC_P, KC_X, ALGR_T(KC_K), LT(BUTTON, KC_Y), + U_NP, U_NP, LT(FUN, KC_DEL), LT(NUM, KC_BSPC), LT(SYM, KC_ENT), LT(MOUSE, KC_TAB), LT(NAV, KC_SPC), LT(MEDIA, KC_ESC), U_NP, U_NP + #elif defined MIRYOKU_ALPHAS_WORKMAN + KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_QUOT, + LGUI_T(KC_A), LALT_T(KC_S), LCTL_T(KC_H), LSFT_T(KC_T), KC_G, KC_Y, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_O), LGUI_T(KC_I), + LT(BUTTON, KC_Z), ALGR_T(KC_X), KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH), + U_NP, U_NP, LT(FUN, KC_DEL), LT(NUM, KC_BSPC), LT(SYM, KC_ENT), LT(MOUSE, KC_TAB), LT(NAV, KC_SPC), LT(MEDIA, KC_ESC), U_NP, U_NP + #elif defined MIRYOKU_ALPHAS_QWERTY KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, LGUI_T(KC_A), LALT_T(KC_S), LCTL_T(KC_D), LSFT_T(KC_F), KC_G, KC_H, LSFT_T(KC_J), LCTL_T(KC_K), LALT_T(KC_L), LGUI_T(KC_QUOT), - KC_Z, ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, ALGR_T(KC_DOT), KC_SLSH, - KC_NP, KC_NP, LT(MEDR, KC_ESC), LT(NAVR, KC_SPC), LT(MOUR, KC_TAB), LT(NSSL, KC_ENT), LT(NSL, KC_BSPC), LT(FUNL, KC_DEL), KC_NP, KC_NP + LT(BUTTON, KC_Z), ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH), + U_NP, U_NP, LT(FUN, KC_DEL), LT(NUM, KC_BSPC), LT(SYM, KC_ENT), LT(MOUSE, KC_TAB), LT(NAV, KC_SPC), LT(MEDIA, KC_ESC), U_NP, U_NP + #elif defined MIRYOKU_ALPHAS_QWERTZ + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Z, KC_U, KC_I, KC_O, KC_P, + LGUI_T(KC_A), LALT_T(KC_S), LCTL_T(KC_D), LSFT_T(KC_F), KC_G, KC_H, LSFT_T(KC_J), LCTL_T(KC_K), LALT_T(KC_L), LGUI_T(KC_QUOT), + LT(BUTTON, KC_Y), ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH), + U_NP, U_NP, LT(FUN, KC_DEL), LT(NUM, KC_BSPC), LT(SYM, KC_ENT), LT(MOUSE, KC_TAB), LT(NAV, KC_SPC), LT(MEDIA, KC_ESC), U_NP, U_NP + #else + KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, + LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_G, KC_M, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O), + LT(BUTTON, KC_Z), ALGR_T(KC_X), KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH), + U_NP, U_NP, LT(FUN, KC_DEL), LT(NUM, KC_BSPC), LT(SYM, KC_ENT), LT(MOUSE, KC_TAB), LT(NAV, KC_SPC), LT(MEDIA, KC_ESC), U_NP, U_NP + #endif ), -#elif defined MIRYOKU_ALPHAS_DVORAK - [BASE] = LAYOUT_miryoku( - KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, - LGUI_T(KC_A), LALT_T(KC_O), LCTL_T(KC_E), LSFT_T(KC_U), KC_I, KC_D, LSFT_T(KC_H), LCTL_T(KC_T), LALT_T(KC_N), LGUI_T(KC_S), - KC_SLSH, ALGR_T(KC_Q), KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, ALGR_T(KC_V), KC_Z, - KC_NP, KC_NP, LT(MEDR, KC_ESC), LT(NAVR, KC_SPC), LT(MOUR, KC_TAB), LT(NSSL, KC_ENT), LT(NSL, KC_BSPC), LT(FUNL, KC_DEL), KC_NP, KC_NP + #if defined MIRYOKU_NAV_INVERTEDT + [NAV] = LAYOUT_miryoku( + KC_PGUP, KC_HOME, KC_UP, KC_END, KC_INS, U_NA, U_NA, U_NA, U_NA, RESET, + KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_CAPS, U_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, + U_UND, U_CUT, U_CPY, U_PST, U_RDO, U_NA, U_NA, U_NA, KC_ALGR, U_NA, + U_NP, U_NP, KC_DEL, KC_BSPC, KC_ENT, U_NA, U_NA, U_NA, U_NP, U_NP + ), + [MOUSE] = LAYOUT_miryoku( + KC_WH_U, KC_WH_L, KC_MS_U, KC_WH_R, U_NU, U_NA, U_NA, U_NA, U_NA, RESET, + KC_WH_D, KC_MS_L, KC_MS_D, KC_MS_R, U_NU, U_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, + U_UND, U_CUT, U_CPY, U_PST, U_RDO, U_NA, U_NA, U_NA, KC_ALGR, U_NA, + U_NP, U_NP, KC_BTN2, KC_BTN3, KC_BTN1, U_NA, U_NA, U_NA, U_NP, U_NP + ), + [MEDIA] = LAYOUT_miryoku( + U_NU, U_NU, KC_VOLU, U_NU, U_NU, U_NA, U_NA, U_NA, U_NA, RESET, + U_NU, KC_MPRV, KC_VOLD, KC_MNXT, U_NU, U_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, + RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG, U_NA, U_NA, U_NA, KC_ALGR, U_NA, + U_NP, U_NP, KC_MUTE, KC_MPLY, KC_MSTP, U_NA, U_NA, U_NA, U_NP, U_NP + ), + #else + [NAV] = LAYOUT_miryoku( + KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_INS, U_NA, U_NA, U_NA, U_NA, RESET, + KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_CAPS, U_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, + U_UND, U_CUT, U_CPY, U_PST, U_RDO, U_NA, U_NA, U_NA, KC_ALGR, U_NA, + U_NP, U_NP, KC_DEL, KC_BSPC, KC_ENT, U_NA, U_NA, U_NA, U_NP, U_NP + ), + [MOUSE] = LAYOUT_miryoku( + KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, U_NU, U_NA, U_NA, U_NA, U_NA, RESET, + KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, U_NU, U_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, + U_UND, U_CUT, U_CPY, U_PST, U_RDO, U_NA, U_NA, U_NA, KC_ALGR, U_NA, + U_NP, U_NP, KC_BTN2, KC_BTN3, KC_BTN1, U_NA, U_NA, U_NA, U_NP, U_NP + ), + [MEDIA] = LAYOUT_miryoku( + RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG, U_NA, U_NA, U_NA, U_NA, RESET, + KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, U_NU, U_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, + U_NU, U_NU, U_NU, U_NU, U_NU, U_NA, U_NA, U_NA, KC_ALGR, U_NA, + U_NP, U_NP, KC_MUTE, KC_MPLY, KC_MSTP, U_NA, U_NA, U_NA, U_NP, U_NP + ), + #endif + [NUM] = LAYOUT_miryoku( + RESET, U_NA, U_NA, U_NA, U_NA, KC_LBRC, KC_7, KC_8, KC_9, KC_RBRC, + KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, KC_EQL, KC_4, KC_5, KC_6, KC_SCLN, + U_NA, KC_ALGR, U_NA, U_NA, U_NA, KC_BSLS, KC_1, KC_2, KC_3, KC_GRV, + U_NP, U_NP, U_NA, U_NA, U_NA, KC_MINS, KC_0, KC_DOT, U_NP, U_NP + ), + [SYM] = LAYOUT_miryoku( + RESET, U_NA, U_NA, U_NA, U_NA, KC_LCBR, KC_AMPR, KC_ASTR, KC_LPRN, KC_RCBR, + KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, KC_PLUS, KC_DLR, KC_PERC, KC_CIRC, KC_COLN, + U_NA, KC_ALGR, U_NA, U_NA, U_NA, KC_PIPE, KC_EXLM, KC_AT, KC_HASH, KC_TILD, + U_NP, U_NP, U_NA, U_NA, U_NA, KC_UNDS, KC_LPRN, KC_RPRN, U_NP, U_NP + ), + [FUN] = LAYOUT_miryoku( + RESET, U_NA, U_NA, U_NA, U_NA, KC_PSCR, KC_F7, KC_F8, KC_F9, KC_F12, + KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, KC_SLCK, KC_F4, KC_F5, KC_F6, KC_F11, + U_NA, KC_ALGR, U_NA, U_NA, U_NA, KC_PAUS, KC_F1, KC_F2, KC_F3, KC_F10, + U_NP, U_NP, U_NA, U_NA, U_NA, KC_TAB, KC_SPC, KC_APP, U_NP, U_NP ), -#elif defined MIRYOKU_ALPHAS_COLEMAK +#else [BASE] = LAYOUT_miryoku( + #if defined MIRYOKU_ALPHAS_AZERTY + KC_A, KC_Z, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + LGUI_T(KC_Q), LALT_T(KC_S), LCTL_T(KC_D), LSFT_T(KC_F), KC_G, KC_H, LSFT_T(KC_J), LCTL_T(KC_K), LALT_T(KC_L), LGUI_T(KC_M), + LT(BUTTON, KC_W), ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_COMM, KC_DOT, ALGR_T(KC_SLSH), LT(BUTTON, KC_QUOT), + U_NP, U_NP, LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), U_NP, U_NP + #elif defined MIRYOKU_ALPHAS_COLEMAK KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_D, KC_H, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O), - KC_Z, ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, ALGR_T(KC_DOT), KC_SLSH, - KC_NP, KC_NP, LT(MEDR, KC_ESC), LT(NAVR, KC_SPC), LT(MOUR, KC_TAB), LT(NSSL, KC_ENT), LT(NSL, KC_BSPC), LT(FUNL, KC_DEL), KC_NP, KC_NP - ), -#elif defined MIRYOKU_ALPHAS_COLEMAKDH - [BASE] = LAYOUT_miryoku( + LT(BUTTON, KC_Z), ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH), + U_NP, U_NP, LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), U_NP, U_NP + #elif defined MIRYOKU_ALPHAS_COLEMAKDHK KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_G, KC_K, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O), - KC_Z, ALGR_T(KC_X), KC_C, KC_D, KC_V, KC_M, KC_H, KC_COMM, ALGR_T(KC_DOT), KC_SLSH, - KC_NP, KC_NP, LT(MEDR, KC_ESC), LT(NAVR, KC_SPC), LT(MOUR, KC_TAB), LT(NSSL, KC_ENT), LT(NSL, KC_BSPC), LT(FUNL, KC_DEL), KC_NP, KC_NP - ), -#elif defined MIRYOKU_ALPHAS_WORKMAN - [BASE] = LAYOUT_miryoku( + LT(BUTTON, KC_Z), ALGR_T(KC_X), KC_C, KC_D, KC_V, KC_M, KC_H, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH), + U_NP, U_NP, LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), U_NP, U_NP + #elif defined MIRYOKU_ALPHAS_DVORAK + KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, + LGUI_T(KC_A), LALT_T(KC_O), LCTL_T(KC_E), LSFT_T(KC_U), KC_I, KC_D, LSFT_T(KC_H), LCTL_T(KC_T), LALT_T(KC_N), LGUI_T(KC_S), + LT(BUTTON, KC_SLSH), ALGR_T(KC_Q), KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, ALGR_T(KC_V), LT(BUTTON, KC_Z), + U_NP, U_NP, LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), U_NP, U_NP + #elif defined MIRYOKU_ALPHAS_HALMAK + KC_W, KC_L, KC_R, KC_B, KC_Z, KC_QUOT, KC_Q, KC_U, KC_D, KC_J, + LGUI_T(KC_S), LALT_T(KC_H), LCTL_T(KC_N), LSFT_T(KC_T), KC_COMM, KC_DOT, LSFT_T(KC_A), LCTL_T(KC_E), LALT_T(KC_O), LGUI_T(KC_I), + LT(BUTTON, KC_F), ALGR_T(KC_M), KC_V, KC_C, KC_SLSH, KC_G, KC_P, KC_X, ALGR_T(KC_K), LT(BUTTON, KC_Y), + U_NP, U_NP, LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), U_NP, U_NP + #elif defined MIRYOKU_ALPHAS_WORKMAN KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_QUOT, LGUI_T(KC_A), LALT_T(KC_S), LCTL_T(KC_H), LSFT_T(KC_T), KC_G, KC_Y, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_O), LGUI_T(KC_I), - KC_Z, ALGR_T(KC_X), KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, ALGR_T(KC_DOT), KC_SLSH, - KC_NP, KC_NP, LT(MEDR, KC_ESC), LT(NAVR, KC_SPC), LT(MOUR, KC_TAB), LT(NSSL, KC_ENT), LT(NSL, KC_BSPC), LT(FUNL, KC_DEL), KC_NP, KC_NP - ), -#else - [BASE] = LAYOUT_miryoku( + LT(BUTTON, KC_Z), ALGR_T(KC_X), KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH), + U_NP, U_NP, LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), U_NP, U_NP + #elif defined MIRYOKU_ALPHAS_QWERTY + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + LGUI_T(KC_A), LALT_T(KC_S), LCTL_T(KC_D), LSFT_T(KC_F), KC_G, KC_H, LSFT_T(KC_J), LCTL_T(KC_K), LALT_T(KC_L), LGUI_T(KC_QUOT), + LT(BUTTON, KC_Z), ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH), + U_NP, U_NP, LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), U_NP, U_NP + #elif defined MIRYOKU_ALPHAS_QWERTZ + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Z, KC_U, KC_I, KC_O, KC_P, + LGUI_T(KC_A), LALT_T(KC_S), LCTL_T(KC_D), LSFT_T(KC_F), KC_G, KC_H, LSFT_T(KC_J), LCTL_T(KC_K), LALT_T(KC_L), LGUI_T(KC_QUOT), + LT(BUTTON, KC_Y), ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH), + U_NP, U_NP, LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), U_NP, U_NP + #else KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_G, KC_M, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O), - KC_Z, ALGR_T(KC_X), KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, ALGR_T(KC_DOT), KC_SLSH, - KC_NP, KC_NP, LT(MEDR, KC_ESC), LT(NAVR, KC_SPC), LT(MOUR, KC_TAB), LT(NSSL, KC_ENT), LT(NSL, KC_BSPC), LT(FUNL, KC_DEL), KC_NP, KC_NP + LT(BUTTON, KC_Z), ALGR_T(KC_X), KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH), + U_NP, U_NP, LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), U_NP, U_NP + #endif + ), + #if defined MIRYOKU_NAV_VI + [NAV] = LAYOUT_miryoku( + RESET, U_NA, U_NA, U_NA, U_NA, U_RDO, U_PST, U_CPY, U_CUT, U_UND, + KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_CAPS, + U_NA, KC_ALGR, U_NA, U_NA, U_NA, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_INS, + U_NP, U_NP, U_NA, U_NA, U_NA, KC_ENT, KC_BSPC, KC_DEL, U_NP, U_NP + ), + [MOUSE] = LAYOUT_miryoku( + RESET, U_NA, U_NA, U_NA, U_NA, U_RDO, U_PST, U_CPY, U_CUT, U_UND, + KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, U_NU, + U_NA, KC_ALGR, U_NA, U_NA, U_NA, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, U_NU, + U_NP, U_NP, U_NA, U_NA, U_NA, KC_BTN1, KC_BTN3, KC_BTN2, U_NP, U_NP + ), + [MEDIA] = LAYOUT_miryoku( + RESET, U_NA, U_NA, U_NA, U_NA, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, + KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, U_NU, + U_NA, KC_ALGR, U_NA, U_NA, U_NA, U_NU, U_NU, U_NU, U_NU, U_NU, + U_NP, U_NP, U_NA, U_NA, U_NA, KC_MSTP, KC_MPLY, KC_MUTE, U_NP, U_NP + ), + #else + [NAV] = LAYOUT_miryoku( + RESET, U_NA, U_NA, U_NA, U_NA, U_RDO, U_PST, U_CPY, U_CUT, U_UND, + KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, KC_CAPS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, + U_NA, KC_ALGR, U_NA, U_NA, U_NA, KC_INS, KC_HOME, KC_PGDN, KC_PGUP, KC_END, + U_NP, U_NP, U_NA, U_NA, U_NA, KC_ENT, KC_BSPC, KC_DEL, U_NP, U_NP + ), + [MOUSE] = LAYOUT_miryoku( + RESET, U_NA, U_NA, U_NA, U_NA, U_RDO, U_PST, U_CPY, U_CUT, U_UND, + KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, U_NU, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, + U_NA, KC_ALGR, U_NA, U_NA, U_NA, U_NU, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, + U_NP, U_NP, U_NA, U_NA, U_NA, KC_BTN1, KC_BTN3, KC_BTN2, U_NP, U_NP + ), + [MEDIA] = LAYOUT_miryoku( + RESET, U_NA, U_NA, U_NA, U_NA, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, + KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, U_NU, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, + U_NA, KC_ALGR, U_NA, U_NA, U_NA, U_NU, U_NU, U_NU, U_NU, U_NU, + U_NP, U_NP, U_NA, U_NA, U_NA, KC_MSTP, KC_MPLY, KC_MUTE, U_NP, U_NP + ), + #endif + [NUM] = LAYOUT_miryoku( + KC_LBRC, KC_7, KC_8, KC_9, KC_RBRC, U_NA, U_NA, U_NA, U_NA, RESET, + KC_SCLN, KC_4, KC_5, KC_6, KC_EQL, U_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, + KC_GRV, KC_1, KC_2, KC_3, KC_BSLS, U_NA, U_NA, U_NA, KC_ALGR, U_NA, + U_NP, U_NP, KC_DOT, KC_0, KC_MINS, U_NA, U_NA, U_NA, U_NP, U_NP + ), + [SYM] = LAYOUT_miryoku( + KC_LCBR, KC_AMPR, KC_ASTR, KC_LPRN, KC_RCBR, U_NA, U_NA, U_NA, U_NA, RESET, + KC_COLN, KC_DLR, KC_PERC, KC_CIRC, KC_PLUS, U_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_PIPE, U_NA, U_NA, U_NA, KC_ALGR, U_NA, + U_NP, U_NP, KC_LPRN, KC_RPRN, KC_UNDS, U_NA, U_NA, U_NA, U_NP, U_NP + ), + [FUN] = LAYOUT_miryoku( + KC_F12, KC_F7, KC_F8, KC_F9, KC_PSCR, U_NA, U_NA, U_NA, U_NA, RESET, + KC_F11, KC_F4, KC_F5, KC_F6, KC_SLCK, U_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, + KC_F10, KC_F1, KC_F2, KC_F3, KC_PAUS, U_NA, U_NA, U_NA, KC_ALGR, U_NA, + U_NP, U_NP, KC_APP, KC_SPC, KC_TAB, U_NA, U_NA, U_NA, U_NP, U_NP ), #endif - [NAVR] = LAYOUT_miryoku( - KC_RST, KC_NA, KC_NA, KC_NA, KC_NA, KC_AGIN, KC_UNDO, KC_CUT, KC_COPY, KC_PSTE, - KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, KC_NA, KC_CAPS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, - KC_NA, KC_ALGR, KC_NA, KC_NA, KC_NA, KC_INS, KC_HOME, KC_PGDN, KC_PGUP, KC_END, - KC_NP, KC_NP, KC_NA, KC_NA, KC_NA, KC_ENT, KC_BSPC, KC_DEL, KC_NP, KC_NP - ), - [MOUR] = LAYOUT_miryoku( - KC_RST, KC_NA, KC_NA, KC_NA, KC_NA, KC_NU, KC_NU, KC_NU, KC_NU, KC_NU, - KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, KC_NA, KC_NU, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, - KC_NA, KC_ALGR, KC_NA, KC_NA, KC_NA, KC_NU, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, - KC_NP, KC_NP, KC_NA, KC_NA, KC_NA, KC_BTN1, KC_BTN3, KC_BTN2, KC_NP, KC_NP - ), - [MBO] = LAYOUT_miryoku( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_NP, KC_NP, KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN3, KC_BTN2, KC_NP, KC_NP - ), - [MEDR] = LAYOUT_miryoku( - KC_RST, KC_NA, KC_NA, KC_NA, KC_NA, KC_TOG, KC_MOD, KC_HUI, KC_SAI, KC_VAI, - KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, KC_NA, KC_NU, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, - KC_NA, KC_ALGR, KC_NA, KC_NA, KC_NA, KC_NU, KC_NU, KC_NU, KC_NU, KC_NU, - KC_NP, KC_NP, KC_NA, KC_NA, KC_NA, KC_MSTP, KC_MPLY, KC_MUTE, KC_NP, KC_NP - ), - [FUNL] = LAYOUT_miryoku( - KC_F12, KC_F7, KC_F8, KC_F9, KC_PSCR, KC_NA, KC_NA, KC_NA, KC_NA, KC_RST, - KC_F11, KC_F4, KC_F5, KC_F6, KC_SLCK, KC_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, - KC_F10, KC_F1, KC_F2, KC_F3, KC_PAUS, KC_NA, KC_NA, KC_NA, KC_ALGR, KC_NA, - KC_NP, KC_NP, KC_APP, KC_SPC, KC_TAB, KC_NA, KC_NA, KC_NA, KC_NP, KC_NP - ), - [NSL] = LAYOUT_miryoku( - KC_LBRC, KC_7, KC_8, KC_9, KC_RBRC, KC_NA, KC_NA, KC_NA, KC_NA, KC_RST, - KC_SCLN, KC_4, KC_5, KC_6, KC_EQL, KC_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, - KC_GRV, KC_1, KC_2, KC_3, KC_BSLS, KC_NA, KC_NA, KC_NA, KC_ALGR, KC_NA, - KC_NP, KC_NP, KC_DOT, KC_0, KC_MINS, KC_NA, KC_NA, KC_NA, KC_NP, KC_NP - ), - [NSSL] = LAYOUT_miryoku( - KC_LCBR, KC_AMPR, KC_ASTR, KC_LPRN, KC_RCBR, KC_NA, KC_NA, KC_NA, KC_NA, KC_RST, - KC_COLN, KC_DLR, KC_PERC, KC_CIRC, KC_PLUS, KC_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, - KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_PIPE, KC_NA, KC_NA, KC_NA, KC_ALGR, KC_NA, - KC_NP, KC_NP, KC_GT, KC_RPRN, KC_UNDS, KC_NA, KC_NA, KC_NA, KC_NP, KC_NP + [BUTTON] = LAYOUT_miryoku( + U_UND, U_CUT, U_CPY, U_PST, U_RDO, U_RDO, U_PST, U_CPY, U_CUT, U_UND, + KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, KC_TRNS, KC_TRNS, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, + U_UND, U_CUT, U_CPY, U_PST, U_RDO, U_RDO, U_PST, U_CPY, U_CUT, U_UND, + U_NP, U_NP, KC_BTN2, KC_BTN3, KC_BTN1, KC_BTN1, KC_BTN3, KC_BTN2, U_NP, U_NP ) }; diff --git a/users/manna-harbour_miryoku/manna-harbour_miryoku.h b/users/manna-harbour_miryoku/manna-harbour_miryoku.h index 5f543cb0f6ce..1d14f617105d 100644 --- a/users/manna-harbour_miryoku/manna-harbour_miryoku.h +++ b/users/manna-harbour_miryoku/manna-harbour_miryoku.h @@ -1,19 +1,41 @@ -// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*- +// Copyright 2019 Manna Harbour +// https://github.com/manna-harbour/miryoku +// generated -*- buffer-read-only: t -*- + +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should 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 QMK_KEYBOARD_H -#define KC_NP KC_NO // key is not present -#define KC_NA KC_NO // present but not available for use -#define KC_NU KC_NO // available but not used +#define U_NP KC_NO // key is not present +#define U_NA KC_NO // present but not available for use +#define U_NU KC_NO // available but not used -// non-KC_ keycodes -#define KC_RST RESET -#define KC_TOG RGB_TOG -#define KC_MOD RGB_MOD -#define KC_HUI RGB_HUI -#define KC_SAI RGB_SAI -#define KC_VAI RGB_VAI +enum layers { BASE, BUTTON, MEDIA, NAV, MOUSE, SYM, NUM, FUN }; -enum layers { BASE, MBO, MEDR, NAVR, MOUR, NSSL, NSL, FUNL }; +#if defined MIRYOKU_CLIPBOARD_FUN +#define U_RDO KC_AGIN +#define U_PST KC_PSTE +#define U_CPY KC_COPY +#define U_CUT KC_CUT +#define U_UND KC_UNDO +#elif defined MIRYOKU_CLIPBOARD_MAC +#define U_RDO SCMD(KC_Z) +#define U_PST LCMD(KC_V) +#define U_CPY LCMD(KC_C) +#define U_CUT LCMD(KC_X) +#define U_UND LCMD(KC_Z) +#elif defined MIRYOKU_CLIPBOARD_WIN +#define U_RDO C(KC_Y) +#define U_PST C(KC_V) +#define U_CPY C(KC_C) +#define U_CUT C(KC_X) +#define U_UND C(KC_Z) +#else +#define U_RDO KC_AGIN +#define U_PST S(KC_INS) +#define U_CPY C(KC_INS) +#define U_CUT S(KC_DEL) +#define U_UND KC_UNDO +#endif diff --git a/users/manna-harbour_miryoku/miryoku.org b/users/manna-harbour_miryoku/miryoku.org deleted file mode 100644 index 011e43455a29..000000000000 --- a/users/manna-harbour_miryoku/miryoku.org +++ /dev/null @@ -1,860 +0,0 @@ -# After making changes to code or tables call org-babel-tangle (C-c C-v t). - -#+Title: Miryoku [[https://raw.githubusercontent.com/manna-harbour/miryoku/master/miryoku-roa-32.png]] - -[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/kle-miryoku-keycodes.png]] - -Miryoku is an ergonomic, minimal, orthogonal layout for ergo or ortho keyboards, -implemented as part of the QMK firmware. - -The layout is maintained in emacs org-mode tables and converted to QMK keymap -data structures using embedded python scripts. It is mapped onto keyboards with -different physical layouts as a subset without code duplication using the QMK -userspace feature and C macros. - -Please see the [[https://github.com/manna-harbour/qmk_firmware/blob/miryoku/users/manna-harbour_miryoku/miryoku.org][development branch]] for any [[https://github.com/qmk/qmk_firmware/compare/master...manna-harbour:miryoku][updates not yet merged into QMK]]. -Additional visualisations are provided outside QMK in the [[https://github.com/manna-harbour/miryoku/blob/master/README.org][Miryoku (Extras) repository]]. - -* Contents :TOC: -- [[#layout][Layout]] - - [[#general-principles][General Principles]] - - [[#details][Details]] - - [[#layers][Layers]] -- [[#code-generation][Code Generation]] - - [[#table-conversion-scripts][Table Conversion Scripts]] - - [[#data][Data]] -- [[#subset-mapping][Subset Mapping]] - - [[#userspace][Userspace]] - - [[#layouts][Layouts]] - - [[#keyboards][Keyboards]] -- [[#documentation][Documentation]] - - [[#qmk][QMK]] - - [[#org-mode][Org Mode]] -- [[#contact][Contact]] - -* Layout - -** General Principles - -- Use layers instead of reaching. -- Use both hands instead of contortions. -- Use the home positions as much as possible. -- Make full use of the thumbs. -- Avoid unnecessary complication. - - -** Details - -- 5 columns, 3 rows, 3 thumb keys, 2 hands. -- Can be used on almost any split or non-split ergo or ortho keyboard. -- Includes all keys found on a US layout TKL keyboard, plus media keys and mouse - emulation. -- Home row is the middle row, home thumb key is the middle thumb key. -- Maximum 1-u movement from home position for fingers and thumbs, and only along - one axis (except for the inner index finger column which is deprioritised - compared with the home columns). -- Dual-function modifiers on home row, mirrored on both hands. -- Dual-function layer change on thumbs. -- Layers are designed orthogonally with a single purpose per hand and are - accessed by holding a thumb key on the opposite hand. -- All layers on the same hand are based on the same basic key arrangement. -- Holding layer change and modifiers on one hand combined with a single key - press on the other hand can produce any combination of modifiers and single - keys without any finger contortions. -- Single function mods are also defined on layers on the same hand as the layer - change thumb key so layer change and mods can be held in any order or - simultaneously without race conditions. -- As mods are only enabled on the opposite hand, auto-repeat is available on the - home row on layers for use with cursor and mouse keys. -- Tap-hold auto-repeat is disabled to permit faster tap-hold switching on - thumbs, but thumb tap keys are mirrored onto some layers for use with - auto-repeat. On other layers thumb keys are redefined with important - functions for that layer. - - -** Layers - -The layers are maintained in tables, with the thumb keys on the bottom row. NP -indicates the key is not present and is used to fill in the table around the -thumb keys. The grid arrangement of the tables does not imply a particular -physical layout. - -Basic keycodes are entered without the KC_ prefix. Symbols can be entered as-is -(excepting '"' (DQUO) and '|' (PIPE)). Empty cells are unused. - -The base layer has both halves of the layout joined for convenience. Other -layers are specified as a single hand. - -*** Base (BASE) - - -The base layer is maintained as separate tap and hold tables and are combined -into the corresponding tap-hold keycodes for mods and layer change. RST and -mods will be available on sub layers on the same hand as the layer change thumb -key. Unknown names are considered to be layer names. - -Base layer alphas are Colemak-DHm. Thumb keys are backspace, enter, delete on -the right and space, tab, escape on the left. Dot, comma and apostrophe are -included for prose, dot and slash for file and directory names. - -**** Tap - -#+NAME: colemakdhm -| Q | W | F | P | B | J | L | U | Y | ' | -| A | R | S | T | G | M | N | E | I | O | -| Z | X | C | D | V | K | H | , | . | / | -| NP | NP | ESC | SPC | TAB | ENT | BSPC | DEL | NP | NP | - - -**** Hold - -#+NAME: hold -| RST | | | | | | | | | RST | -| LGUI | LALT | LCTL | LSFT | | | LSFT | LCTL | LALT | LGUI | -| | ALGR | | | | | | | ALGR | | -| NP | NP | MEDR | NAVR | MOUR | NSSL | NSL | FUNL | NP | NP | - - -**** Alternative Base Layer Alphas - -Alternative base layer alphas are provided. To select, append -e.g. ~MIRYOKU_ALPHAS=QWERTY~ to the make command line when building. - -***** QWERTY (QWERTY) -#+NAME: qwerty -| Q | W | E | R | T | Y | U | I | O | P | -| A | S | D | F | G | H | J | K | L | ' | -| Z | X | C | V | B | N | M | , | . | / | -| NP | NP | ESC | SPC | TAB | ENT | BSPC | DEL | NP | NP | - - -***** Dvorak (DVORAK) -#+NAME: dvorak -| ' | , | . | P | Y | F | G | C | R | L | -| A | O | E | U | I | D | H | T | N | S | -| / | Q | J | K | X | B | M | W | V | Z | -| NP | NP | ESC | SPC | TAB | ENT | BSPC | DEL | NP | NP | - - -***** Colemak (COLEMAK) -#+NAME: colemak -| Q | W | F | P | G | J | L | U | Y | ' | -| A | R | S | T | D | H | N | E | I | O | -| Z | X | C | V | B | K | M | , | . | / | -| NP | NP | ESC | SPC | TAB | ENT | BSPC | DEL | NP | NP | - - -***** Colemak Mod-DH (COLEMAKDH) -#+NAME: colemakdh -| Q | W | F | P | B | J | L | U | Y | ' | -| A | R | S | T | G | K | N | E | I | O | -| Z | X | C | D | V | M | H | , | . | / | -| NP | NP | ESC | SPC | TAB | ENT | BSPC | DEL | NP | NP | - - -***** Workman (WORKMAN) -#+NAME: workman -| Q | D | R | W | B | J | F | U | P | ' | -| A | S | H | T | G | Y | N | E | O | I | -| Z | X | M | C | V | K | L | , | . | / | -| NP | NP | ESC | SPC | TAB | ENT | BSPC | DEL | NP | NP | - - - -*** Navigation (NAVR) - -Primary right-hand layer (left home thumb) is navigation and editing. Cursor -keys are on the home position, line and page movement below, clipboard above, -caps and insert on the inner column. Thumb keys are duplicated from the base -layer to avoid having to layer change mid edit and to enable auto-repeat. - -#+NAME: navr -| AGIN | UNDO | CUT | COPY | PSTE | -| CAPS | LEFT | DOWN | UP | RGHT | -| INS | HOME | PGDN | PGUP | END | -| ENT | BSPC | DEL | NP | NP | - - -*** Mouse (MOUR) - -Secondary RH layer is mouse emulation. Mouse movement mirrors cursor navigation -on home and wheel mirrors line / page movement below. Buttons are on the thumbs -(L, M, R). Mouse movement, click, and drag with modifiers can be performed from -the home position. Unused keys are available for other related functions. - -#+NAME: mour -| | | | | | -| | MS_L | MS_D | MS_U | MS_R | -| | WH_L | WH_D | WH_U | WH_R | -| BTN1 | BTN3 | BTN2 | NP | NP | - - -**** Mouse Buttons Overlay (MBO) - -Available for automatic activation depending on keyboard hardware and -configuration. Not activated manually. - -#+NAME: mbo -| | | | | | | | | | | -| | | | | | | | | | | -| | | | | | | | | | | -| NP | NP | | | | BTN1 | BTN3 | BTN2 | NP | NP | - - -*** Media (MEDR) - -Tertiary RH layer is media control, with volume up / down and next / prev -mirroring the navigation keys. Pause, stop and mute are on thumbs. RGB control -is on the top row (combine with shift to invert). Unused keys are available for -other related functions. - -#+NAME: medr -| TOG | MOD | HUI | SAI | VAI | -| | MPRV | VOLD | VOLU | MNXT | -| | | | | | -| MSTP | MPLY | MUTE | NP | NP | - - -*** Numerals and Symbols (NSL) - -Primary left-hand layer (right home thumb) is numerals and symbols. Numerals -are in the standard numpad locations with symbols in the remaining positions. -Dot is duplicated from the base layer for convenience. - -#+NAME: nsl -| [ | 7 | 8 | 9 | ] | -| ; | 4 | 5 | 6 | = | -| ` | 1 | 2 | 3 | \ | -| NP | NP | . | 0 | - | - - -*** Shifted Numerals and Symbols (NSSL) - -Secondary LH layer has shifted symbols in the same locations to reduce chording -when using mods with shifted symbols. Automatically generated from unshifted -table. - - -*** Function and System (FUNL) - -Tertiary LH layer has function keys mirroring the numerals on the primary layer -with extras on the pinkie column, plus system keys on the inner column. App -(menu) is on the tertiary thumb key and other thumb keys are duplicated from the -base layer to enable auto-repeat. - - -#+NAME: funl -| F12 | F7 | F8 | F9 | PSCR | -| F11 | F4 | F5 | F6 | SLCK | -| F10 | F1 | F2 | F3 | PAUS | -| NP | NP | APP | SPC | TAB | - - -*** COMMENT Templates - -#+NAME: tem -| <l4> | <l4> | <l4> | <l4> | <l4> | <l4> | <l4> | <l4> | <l4> | <l4> | -|------+------+------+------+------+------+------+------+------+------| -| | | | | | | | | | | -| | | | | | | | | | | -| | | | | | | | | | | -| NP | NP | | | | | | | NP | NP | - - -Duplicate base layer tap keys on thumbs rather than trans to enable auto-repeat. - -#+NAME: temr -| <l4> | <l4> | <l4> | <l4> | <l4> | -|------+------+------+------+------| -| | | | | | -| | | | | | -| | | | | | -| ENT | BSPC | DEL | NP | NP | - -#+NAME: teml -| <l4> | <l4> | <l4> | <l4> | <l4> | -|------+------+------+------+------| -| | | | | | -| | | | | | -| | | | | | -| NP | NP | ESC | SPC | TAB | - - -* Code Generation - -** Table Conversion Scripts - -*** table-layout-taphold - -Produce base layer from separate tap and hold tables. - -#+NAME: table-layout-taphold -#+BEGIN_SRC python :var layer_name="BASE" :var tap_table=colemakdhm :var hold_table=hold :var symbol_names_table=symbol-names :var mods_list=mods :tangle no :results verbatim -width = 19 -mods_dict = dict.fromkeys(mods_list) -symbol_names_dict = {} -for symbol, name, shifted_symbol, shifted_name in symbol_names_table: - symbol_names_dict[symbol] = name - symbol_names_dict[shifted_symbol] = shifted_name -results = ' [' + layer_name + '] = LAYOUT_miryoku(\n' -for tap_row, hold_row in map(None, tap_table, hold_table): - results += ' ' - for tap, hold in map(None, tap_row, hold_row): - if tap == '': - code = 'NU' - elif tap in symbol_names_dict: - code = symbol_names_dict[tap] - else: - code = tap - code = 'KC_' + str(code) - if hold in mods_dict: - code = str(hold) + '_T(' + code + ')' - elif hold != '' and hold != 'NP' and hold != 'RST': - code = 'LT(' + str(hold) + ', ' + code + ')' - results += (code + ', ').ljust(width) - results = results.rstrip(' ') + '\n' -results = results.rstrip('\n, ') + '\n )' -return results -#+END_SRC - -#+RESULTS: table-layout-taphold -: [BASE] = LAYOUT_miryoku( -: KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, -: LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_G, KC_M, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O), -: KC_Z, ALGR_T(KC_X), KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, ALGR_T(KC_DOT), KC_SLSH, -: KC_NP, KC_NP, LT(MEDR, KC_ESC), LT(NAVR, KC_SPC), LT(MOUR, KC_TAB), LT(NSSL, KC_ENT), LT(NSL, KC_BSPC), LT(FUNL, KC_DEL), KC_NP, KC_NP -: ) - - -*** table-layout-half - -Produce sub layers given layer name and corresponding table for single hand and -incorporating mods and reset from base layer. Layer names must end with R or L. -A layer with shifted symbols can also be generated. - -#+NAME: table-layout-half -#+BEGIN_SRC python :var hold_table=hold :var layer_name="NSL" :var half_table=nsl :var symbol_names_table=symbol-names :var mods_list=mods :var shift="false" :tangle no :results verbatim -width = 9 -mods_dict = dict.fromkeys(mods_list) -symbol_names_dict = {} -shifted_symbol_names_dict = {} -for symbol, name, shifted_symbol, shifted_name in symbol_names_table: - symbol_names_dict[symbol] = name - symbol_names_dict[shifted_symbol] = shifted_name - shifted_symbol_names_dict[symbol] = shifted_name -length = len(half_table[0]) -mode = layer_name[-1:].lower() -results = ' [' + layer_name + '] = LAYOUT_miryoku(\n' -for half_row, hold_row in map(None, half_table, hold_table): - results += ' ' - hold_row_l, hold_row_r = hold_row[:length], hold_row[length:] - for lr, hold_row_lr in ('l', hold_row_l), ('r', hold_row_r): - if lr == mode: - for half in half_row: - if half == '': - code = 'NU' - elif shift == "true" and half in shifted_symbol_names_dict: - code = shifted_symbol_names_dict[half] - elif half in symbol_names_dict: - code = symbol_names_dict[half] - else: - code = half - results += ('KC_' + str(code) + ', ').ljust(width) - else: - for hold in hold_row_lr: - if hold == '' or hold != 'NP' and hold != 'RST' and hold not in mods_dict: - code = 'NA' - else: - code = hold - results += ('KC_' + str(code) + ', ').ljust(width) - results = results.rstrip(' ') + '\n' -results = results.rstrip('\n, ') + '\n )' -return results -#+END_SRC - -#+RESULTS: table-layout-half -: [NSL] = LAYOUT_miryoku( -: KC_LBRC, KC_7, KC_8, KC_9, KC_RBRC, KC_NA, KC_NA, KC_NA, KC_NA, KC_RST, -: KC_SCLN, KC_4, KC_5, KC_6, KC_EQL, KC_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, -: KC_GRV, KC_1, KC_2, KC_3, KC_BSLS, KC_NA, KC_NA, KC_NA, KC_NA, KC_NA, -: KC_NP, KC_NP, KC_DOT, KC_0, KC_MINS, KC_NA, KC_NA, KC_NA, KC_NP, KC_NP -: ) - - -*** table-layout-full - -Produce full layer from single table. Fill for unused keys is configurable. - -#+NAME: table-layout-full -#+BEGIN_SRC python :var table=mbo :var layer_name="MBO" :var fill="TRNS" :var symbol_names_table=symbol-names :tangle no :results verbatim -width = 9 -symbol_names_dict = {} -for symbol, name, shifted_symbol, shifted_name in symbol_names_table: - symbol_names_dict[symbol] = name - symbol_names_dict[shifted_symbol] = shifted_name -results = ' [' + layer_name + '] = LAYOUT_miryoku(\n' -for row in table: - results += ' ' - for key in row: - if key == '': - code = fill - elif key in symbol_names_dict: - code = symbol_names_dict[key] - else: - code = key - code = 'KC_' + str(code) - results += (code + ', ').ljust(width) - results = results.rstrip(' ') + '\n' -results = results.rstrip('\n, ') + '\n )' -return results -#+END_SRC - -#+RESULTS: table-layout-full -: [MBO] = LAYOUT_miryoku( -: KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, -: KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, -: KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, -: KC_NP, KC_NP, KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN3, KC_BTN2, KC_NP, KC_NP -: ) - - -*** table-enums - -Produce layer enums from layer names in hold table. - -#+NAME: table-enums -#+BEGIN_SRC python :var hold_table=hold :var mods_list=mods :tangle no -mods_dict = dict.fromkeys(mods_list) -results = 'enum layers { BASE, MBO, ' -for hold_row in hold_table: - for hold in hold_row: - if hold not in mods_dict and hold != '' and hold != 'NP' and hold != 'RST': - results += hold + ', ' -results = results.rstrip(', ') + ' };' -return results -#+END_SRC - -#+RESULTS: table-enums -: enum layers { BASE, MBO, MEDR, NAVR, MOUR, NSSL, NSL, FUNL }; - - -** Data - -*** symbol-names - -Symbol, name, and shifted symbol mappings for use in tables. - -#+NAME: symbol-names -| ` | GRV | ~ | TILD | -| - | MINS | _ | UNDS | -| = | EQL | + | PLUS | -| [ | LBRC | { | LCBR | -| ] | RBRC | } | RCBR | -| \ | BSLS | PIPE | PIPE | -| ; | SCLN | : | COLN | -| ' | QUOT | DQUO | DQUO | -| , | COMM | < | LT | -| . | DOT | > | GT | -| / | SLSH | ? | QUES | -| 1 | 1 | ! | EXLM | -| 2 | 2 | @ | AT | -| 3 | 3 | # | HASH | -| 4 | 4 | $ | DLR | -| 5 | 5 | % | PERC | -| 6 | 6 | ^ | CIRC | -| 7 | 7 | & | AMPR | -| 8 | 8 | * | ASTR | -| 9 | 9 | ( | LPRN | -| 0 | 0 | ) | RPRN | - - -*** mods - -Modifiers usable in hold table. Need to have the same name for KC_ and _T versions. - -#+NAME: mods -- LSFT -- LCTL -- LALT -- LGUI -- ALGR - - -*** header - -Header for tangled src files. - -#+NAME: header -#+BEGIN_SRC C :tangle no -generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*- -#+END_SRC - - -* Subset Mapping - -The keymap, build options, and configuration are shared between keyboards. The -layout is mapped onto keyboards with different physical layouts as a subset. - -** Userspace - -The keymap is defined for LAYOUT_miryoku which is 10x4, with the outer 2 -positions on the bottom row unused and the rest of the bottom row being the -thumb keys. - -*** manna-harbour_miryoku.h - -Keymap-related definitions. Included from manna-harbour_miryoku.c. Can be -included from keymap or layout keymap.c if needed. - -[[./manna-harbour_miryoku.h][users/manna-harbour_miryoku/manna-harbour_miryoku.h]] -#+BEGIN_SRC C :noweb yes :padline no :tangle manna-harbour_miryoku.h -// <<header>> - -#pragma once - -#include QMK_KEYBOARD_H - -#define KC_NP KC_NO // key is not present -#define KC_NA KC_NO // present but not available for use -#define KC_NU KC_NO // available but not used - -// non-KC_ keycodes -#define KC_RST RESET -#define KC_TOG RGB_TOG -#define KC_MOD RGB_MOD -#define KC_HUI RGB_HUI -#define KC_SAI RGB_SAI -#define KC_VAI RGB_VAI - -<<table-enums()>> -#+END_SRC - - -*** manna-harbour_miryoku.c - -Contains the keymap. Added from rules.mk. - -[[./manna-harbour_miryoku.c][users/manna-harbour_miryoku/manna-harbour_miryoku.c]] -#+BEGIN_SRC C :noweb yes :padline no :tangle manna-harbour_miryoku.c -// <<header>> - -#include "manna-harbour_miryoku.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -#if defined MIRYOKU_ALPHAS_QWERTY -<<table-layout-taphold(layer_name="BASE", tap_table=qwerty, hold_table=hold)>>, -#elif defined MIRYOKU_ALPHAS_DVORAK -<<table-layout-taphold(layer_name="BASE", tap_table=dvorak, hold_table=hold)>>, -#elif defined MIRYOKU_ALPHAS_COLEMAK -<<table-layout-taphold(layer_name="BASE", tap_table=colemak, hold_table=hold)>>, -#elif defined MIRYOKU_ALPHAS_COLEMAKDH -<<table-layout-taphold(layer_name="BASE", tap_table=colemakdh, hold_table=hold)>>, -#elif defined MIRYOKU_ALPHAS_WORKMAN -<<table-layout-taphold(layer_name="BASE", tap_table=workman, hold_table=hold)>>, -#else -<<table-layout-taphold(layer_name="BASE", tap_table=colemakdhm, hold_table=hold)>>, -#endif -<<table-layout-half(layer_name="NAVR", half_table=navr)>>, -<<table-layout-half(layer_name="MOUR", half_table=mour)>>, -<<table-layout-full(layer_name="MBO", table=mbo, fill="TRNS")>>, -<<table-layout-half(layer_name="MEDR", half_table=medr)>>, -<<table-layout-half(layer_name="FUNL", half_table=funl)>>, -<<table-layout-half(layer_name="NSL", half_table=nsl)>>, -<<table-layout-half(layer_name="NSSL", half_table=nsl, shift="true")>> -}; -#+END_SRC - - -*** config.h - -Config options. Automatically included. - -[[./config.h][users/manna-harbour_miryoku/config.h]] -#+BEGIN_SRC C :noweb yes :padline no :tangle config.h -// <<header>> - -#pragma once - -// default but important -#define TAPPING_TERM 200 - -// Prevent normal rollover on alphas from accidentally triggering mods. -#define IGNORE_MOD_TAP_INTERRUPT - -// Enable rapid switch from tap to hold, disables double tap hold auto-repeat. -#define TAPPING_FORCE_HOLD - -// Recommended for heavy chording. -#define QMK_KEYS_PER_SCAN 4 - -// Mouse key speed and acceleration. -#undef MOUSEKEY_DELAY -#define MOUSEKEY_DELAY 0 -#undef MOUSEKEY_INTERVAL -#define MOUSEKEY_INTERVAL 16 -#undef MOUSEKEY_WHEEL_DELAY -#define MOUSEKEY_WHEEL_DELAY 0 -#undef MOUSEKEY_MAX_SPEED -#define MOUSEKEY_MAX_SPEED 6 -#undef MOUSEKEY_TIME_TO_MAX -#define MOUSEKEY_TIME_TO_MAX 64 - -#+END_SRC - - -*** rules.mk - -Build options. Automatically included. - -[[./rules.mk][users/manna-harbour_miryoku/rules.mk]] -#+BEGIN_SRC makefile :noweb yes :padline no :tangle rules.mk -# <<header>> - -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control - -SRC += manna-harbour_miryoku.c # keymap - -# select alternative base layer alphas -ifneq ($(strip $(MIRYOKU_ALPHAS)),) - OPT_DEFS += -DMIRYOKU_ALPHAS_$(MIRYOKU_ALPHAS) -endif - -# select alternative subset mappings -ifneq ($(strip $(MIRYOKU_MAPPING)),) - OPT_DEFS += -DMIRYOKU_MAPPING_$(MIRYOKU_MAPPING) -endif -#+END_SRC - - -** Layouts - -To use the keymap on a keyboard supporting the layouts feature, LAYOUT_miryoku -is defined as a macro mapping onto the layout's own LAYOUT macro, leaving the -unused keys as KC_NO. - -The following are example layouts. - -*** ergodox - -For the ergodox layout, the main 5x3 alphas are used as usual. The primary and -secondary thumb keys are the inner and outer 2u thumb keys and the tertiary -thumb key is the innermost key of the partial bottom row. The remaining keys -are unused. - -[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/kle-miryoku-mapping-ergodox.png]] - -To build for any keyboard using the this layout (ergodone, ergodox_ez, -ergodox_infinity, hotdox) e.g. the ergodox_ez, - -#+BEGIN_SRC sh :tangle no -make ergodox_ez:manna-harbour_miryoku:flash -#+END_SRC - - -**** config.h - -Contains subset mapping. - -[[../../layouts/community/ergodox/manna-harbour_miryoku/config.h][layouts/community/ergodox/manna-harbour_miryoku/config.h]] -#+BEGIN_SRC C :noweb yes :padline no :tangle ../../layouts/community/ergodox/manna-harbour_miryoku/config.h -// <<header>> - -#pragma once - -#define LAYOUT_miryoku(\ -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,\ -N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ -)\ -LAYOUT_ergodox_pretty( \ -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, K00, K01, K02, K03, K04, KC_NO, KC_NO, K05, K06, K07, K08, K09, KC_NO, \ -KC_NO, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, KC_NO, \ -KC_NO, K20, K21, K22, K23, K24, KC_NO, KC_NO, K25, K26, K27, K28, K29, KC_NO, \ -KC_NO, KC_NO, KC_NO, KC_NO, K32, K37, KC_NO, KC_NO, KC_NO, KC_NO, \ - KC_NO, KC_NO, KC_NO, KC_NO, \ - KC_NO, KC_NO, \ - K33, K34, KC_NO, KC_NO, K35, K36 \ -) -#+END_SRC - - -**** keymap.c - -Required by the build system. - -[[../../layouts/community/ergodox/manna-harbour_miryoku/keymap.c][layouts/community/ergodox/manna-harbour_miryoku/keymap.c]] -#+BEGIN_SRC C :noweb yes :padline no :tangle ../../layouts/community/ergodox/manna-harbour_miryoku/keymap.c -// <<header>> -#+END_SRC - - -*** ortho_4x12 - -For the ortho_4x12 layout, the middle two columns, and the 2 keys on each end of -the bottom row are unused. This allows the hands to be positioned without ulnar -deviation of the wrists. - -In the implementation, the 2 unused middle columns bottom row keys are mapped as -duplicates of their adjacent keys to support alternative bottom row physical -layouts including 1x2uC (MIT), 1x2uR, 1x2uL, and 2x2u. - -[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/kle-miryoku-mapping-ortho_4x12.png]] - -For split keyboards using this layout the halves can be positioned and rotated -for each hand and so an alternative mapping is provided. The right half is as -follows: The rightmost column bottom 3 keys is the pinkie column. The middle 4 -columns top 3 rows are for the remaining fingers. The pinkie column is one row -lower than the other columns to provide some column stagger. The bottom row -left 3 keys are the thumb keys. The remaining keys are unused. To select this -mapping, append ~MIRYOKU_MAPPING=SPLIT~ to the make command line when building. - -[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/kle-miryoku-mapping-ortho_4x12-split.png]] - -To build for any keyboard using this layout (4x4, nori, chimera_ls, contra, -divergetm2, jj40, lets_split, lets_split_eh, meira, niu_mini, planck, telophase, -vitamins_included, zinc, zlant, ortho48, kbd4x, levinson, wavelet, plaid): - -#+BEGIN_SRC sh :tangle no -make planck/rev6:manna-harbour_miryoku:flash # planck -make keebio/levinson:manna-harbour_miryoku:flash MIRYOKU_MAPPING=SPLIT # levinson -#+END_SRC - - -**** config.h - -Contains subset mapping. - -[[../../layouts/community/ortho_4x12/manna-harbour_miryoku/config.h][layouts/community/ortho_4x12/manna-harbour_miryoku/config.h]] -#+BEGIN_SRC C :noweb yes :padline no :tangle ../../layouts/community/ortho_4x12/manna-harbour_miryoku/config.h -// <<header>> - -#pragma once - -#if defined MIRYOKU_MAPPING_SPLIT -#define LAYOUT_miryoku(\ -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,\ -N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ -)\ -LAYOUT_ortho_4x12(\ -KC_NO, K01, K02, K03, K04, KC_NO, KC_NO, K05, K06, K07, K08, KC_NO,\ -K00, K11, K12, K13, K14, KC_NO, KC_NO, K15, K16, K17, K18, K09,\ -K10, K21, K22, K23, K24, KC_NO, KC_NO, K25, K26, K27, K28, K19,\ -K20, KC_NO, KC_NO, K32, K33, K34, K35, K36, K37, KC_NO, KC_NO, K29\ -) -#else -#define LAYOUT_miryoku(\ -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,\ -N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ -)\ -LAYOUT_ortho_4x12(\ -K00, K01, K02, K03, K04, KC_NO, KC_NO, K05, K06, K07, K08, K09,\ -K10, K11, K12, K13, K14, KC_NO, KC_NO, K15, K16, K17, K18, K19,\ -K20, K21, K22, K23, K24, KC_NO, KC_NO, K25, K26, K27, K28, K29,\ -KC_NO, KC_NO, K32, K33, K34, K34, K35, K35, K36, K37, KC_NO, KC_NO\ -) -#endif -#+END_SRC - - -**** keymap.c - -Required by the build system. - -[[../../layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c][layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c]] -#+BEGIN_SRC C :noweb yes :padline no :tangle ../../layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c -// <<header>> -#+END_SRC - - -** Keyboards - -To use the keymap on a keyboard which does not support the layouts feature, -LAYOUT_miryoku is defined as a macro mapping onto the keyboard's own LAYOUT -macro, leaving the unused keys as KC_NO. - -The following are example keyboards. - -*** crkbd - -The outer columns are unused. - -To build for this keyboard, - -#+BEGIN_SRC sh :tangle no -make crkbd:manna-harbour_miryoku:flash -#+END_SRC - -**** config.h - -Contains subset mapping. - -[[../../keyboards/crkbd/keymaps/manna-harbour_miryoku/config.h][keyboards/crkbd/keymaps/manna-harbour_miryoku/config.h]] -#+BEGIN_SRC C :noweb yes :padline no :tangle ../../keyboards/crkbd/keymaps/manna-harbour_miryoku/config.h -// <<header>> - -#pragma once - -#define LAYOUT_miryoku( \ - 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, \ - N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ -) \ -LAYOUT( \ -KC_NO, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, KC_NO, \ -KC_NO, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, KC_NO, \ -KC_NO, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, KC_NO, \ - K32, K33, K34, K35, K36, K37 \ -) -#+END_SRC - - -**** keymap.c - -Required by the build system. - -[[../../keyboards/crkbd/keymaps/manna-harbour_miryoku/keymap.c][keyboards/crkbd/keymaps/manna-harbour_miryoku/keymap.c]] -#+BEGIN_SRC C :noweb yes :padline no :tangle ../../keyboards/crkbd/keymaps/manna-harbour_miryoku/keymap.c -// <<header>> -#+END_SRC - - -* Documentation - -** QMK - -- https://qmk.fm/ -- https://docs.qmk.fm/#/getting_started_introduction -- https://docs.qmk.fm/#/config_options -- https://docs.qmk.fm/#/keycodes -- https://docs.qmk.fm/#/feature_advanced_keycodes -- https://docs.qmk.fm/#/feature_layers -- https://docs.qmk.fm/#/mod_tap -- https://docs.qmk.fm/#/feature_layouts -- https://docs.qmk.fm/#/feature_userspace -- https://docs.qmk.fm/#/feature_mouse_keys -- https://docs.qmk.fm/#/getting_started_make_guide - - -** Org Mode - -- https://orgmode.org/ -- https://orgmode.org/manual/Tables.html -- https://orgmode.org/manual/Working-with-Source-Code.html - - -* Contact - -For issues with this branch, or to request support for additional base layer -alphas, layouts, or keyboards, please [[https://github.com/manna-harbour/qmk_firmware/issues/new][open an issue]]. - -For more general discussion, please join a relevant [[https://www.reddit.com/user/manna_harbour/posts/?sort=new][recent thread]] or [[https://www.reddit.com/message/compose/?to=manna_harbour][send a PM]]. - -[[https://github.com/manna-harbour][https://raw.githubusercontent.com/manna-harbour/miryoku/master/manna-harbour-boa-32.png]] diff --git a/users/manna-harbour_miryoku/readme.org b/users/manna-harbour_miryoku/readme.org new file mode 100644 index 000000000000..b904738a6762 --- /dev/null +++ b/users/manna-harbour_miryoku/readme.org @@ -0,0 +1,2671 @@ +# After making changes to code or tables call org-babel-tangle (C-c C-v t). + +* Miryoku QMK [[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/logos/miryoku-roa-32.png]] + +[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/cover/miryoku-kle-cover.png]] + +[[https://github.com/manna-harbour/miryoku/][Miryoku]] is an ergonomic, minimal, orthogonal, and universal keyboard layout. This is the Miryoku implementation for [[https://qmk.fm][QMK]]. + +** Branches + + +*** QMK master + +Miryoku QMK is periodically merged upstream into QMK master and it is generally recommended to build directly from QMK master. + +QMK master is at https://github.com/qmk/qmk_firmware/tree/master, and the corresponding Miryoku QMK readme is at https://github.com/qmk/qmk_firmware/tree/master/users/manna-harbour_miryoku. + + +*** Miryoku QMK development branch + +The Miryoku QMK development branch is ~miryoku~ and may contain new commits not yet merged into QMK master. + +~miryoku~ is at https://github.com/manna-harbour/miryoku_qmk/tree/miryoku, and the corresponding Miryoku QMK readme is at https://github.com/manna-harbour/miryoku_qmk/tree/miryoku/users/manna-harbour_miryoku. + +New commits can be seen at the top of the [[https://github.com/manna-harbour/miryoku_qmk/commits/miryoku][history]] with commit messages beginning ~[miryoku]~. After the new commits are squashed and merged upstream into QMK master by pull request the ~miryoku~ branch is renamed and a new ~miryoku~ branch is created from QMK master. + +To checkout the ~miryoku~ branch in your existing QMK build environment: +#+BEGIN_SRC sh :tangle no +git remote add miryoku_qmk git@github.com:manna-harbour/miryoku_qmk.git # if using SSH +git remote add miryoku_qmk https://github.com/manna-harbour/miryoku_qmk.git # if using HTTPS +git fetch miryoku_qmk +git checkout --track miryoku_qmk/miryoku +#+END_SRC + + +** Layout + +*** General Principles + +- Use layers instead of reaching. +- Use both hands instead of contortions. +- Use the home positions as much as possible. +- Make full use of the thumbs. +- Avoid unnecessary complication. + + +*** Details + +- 5 columns, 3 rows, 3 thumb keys, 2 hands. +- Can be used on almost any split or non-split ergo or ortho keyboard. +- Includes all keys found on a US layout TKL keyboard, plus media keys and mouse + emulation. +- Home row is the middle row, home thumb key is the middle thumb key. +- Maximum 1-u movement from home position for fingers and thumbs, and only along + one axis (except for the inner index finger column which is deprioritised + compared with the home columns). +- Dual-function modifiers on home row, mirrored on both hands. +- Dual-function layer change on thumbs. +- Layers are designed orthogonally with a single purpose per hand and are + accessed by holding a thumb key on the opposite hand. +- All layers on the same hand are based on the same basic key arrangement. +- Holding layer change and modifiers on one hand combined with a single key + press on the other hand can produce any combination of modifiers and single + keys without any finger contortions. +- Single function mods are also defined on layers on the same hand as the layer + change thumb key so layer change and mods can be held in any order or + simultaneously without race conditions. +- As mods are only enabled on the opposite hand, auto-repeat is available on the + home row on layers for use with cursor and mouse keys. +- Tap-hold auto-repeat is disabled to permit faster tap-hold switching on + thumbs, but thumb tap keys are mirrored onto some layers for use with + auto-repeat. On other layers thumb keys are redefined with important + functions for that layer. +- Auto Shift for numbers and symbols. + + +*** Layers + +[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/layers/miryoku-kle-reference.png]] + +The layers are maintained in tables. ~U_NP~ indicates the key is not present +and is used to fill in the table around the thumb keys. The grid arrangement of +the tables does not imply a particular physical layout. + +Basic keycodes are entered without the ~KC_~ prefix. Symbols can be entered +as-is, except for '-' (~MINS~), '.' (~DOT~), '|' (~PIPE~), and '"' (~DQUO~). +Empty cells are unused. + +The base layer is maintained as separate tables for tap alphas, tap thumbs, and +hold. Other layers are specified as a single hand including thumbs. Tables are +combined to produce the keymap for each layer. + +Mods (and reset) will be available on sub layers on the same hand as the layer +change thumb key. Unknown names are considered to be layer names. + + +**** Base + +[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/layers/miryoku-kle-base.png]] + +The base layer alphas are Colemak Mod-DH. Dot, comma, slash, and apostrophe are +included with the alphas. The primary, secondary, and tertiary thumb keys are +backspace, enter, delete on the right and space, tab, escape on the left. + +Alternative alpha arrangements are also available. + + +***** Tap + + +****** Alphas + +#+NAME: colemakdh +| Q | W | F | P | B | J | L | U | Y | ' | +| A | R | S | T | G | M | N | E | I | O | +| Z | X | C | D | V | K | H | , | DOT | / | + + +****** Thumbs + +#+NAME: thumbs +| U_NP | U_NP | ESC | SPC | TAB | ENT | BSPC | DEL | U_NP | U_NP | + + +***** Hold + +#+NAME: hold +| RESET | | | | | | | | | RESET | +| LGUI | LALT | LCTL | LSFT | | | LSFT | LCTL | LALT | LGUI | +| BUTTON | ALGR | | | | | | | ALGR | BUTTON | +| U_NP | U_NP | MEDIA | NAV | MOUSE | SYM | NUM | FUN | U_NP | U_NP | + + +**** Nav + +[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/layers/miryoku-kle-nav.png]] + +Primary right-hand layer (left home thumb) is navigation and editing. Cursor +keys are on the home position, line and page movement below, clipboard above, +caps lock and insert on the inner column. Thumb keys are duplicated from the +base layer to avoid having to layer change mid edit and to enable auto-repeat. + +Alternative clipboard key mappings and navigation key arrangements are +available. + +#+NAME: nav-r +| U_RDO | U_PST | U_CPY | U_CUT | U_UND | +| CAPS | LEFT | DOWN | UP | RGHT | +| INS | HOME | PGDN | PGUP | END | +| ENT | BSPC | DEL | U_NP | U_NP | + + +**** Mouse + +[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/layers/miryoku-kle-mouse.png]] + +Secondary right-hand layer is mouse emulation. Mouse movement mirrors cursor +navigation on home and wheel mirrors line / page movement below. Buttons are on +the thumbs (L, M, R). Mouse movement, click, and drag, with modifiers, can be +performed from the home position. Clipboard keys are duplicated from the Nav +layer. + +#+NAME: mouse-r +| U_RDO | U_PST | U_CPY | U_CUT | U_UND | +| | MS_L | MS_D | MS_U | MS_R | +| | WH_L | WH_D | WH_U | WH_R | +| BTN1 | BTN3 | BTN2 | U_NP | U_NP | + + +**** Button + +[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/layers/miryoku-kle-button.png]] + +Provides mouse buttons, mods, and clipboard keys for use with integrated or +external pointing devices, used with either hand. The layer is available for +automatic activation depending on hardware and configuration. It can also be +activated manually by holding a bottom row pinkie key (however GUI and Undo will +be unavailable). + +#+NAME: button +| U_UND | U_CUT | U_CPY | U_PST | U_RDO | U_RDO | U_PST | U_CPY | U_CUT | U_UND | +| LGUI | LALT | LCTL | LSFT | | | LSFT | LCTL | LALT | LGUI | +| U_UND | U_CUT | U_CPY | U_PST | U_RDO | U_RDO | U_PST | U_CPY | U_CUT | U_UND | +| U_NP | U_NP | BTN2 | BTN3 | BTN1 | BTN1 | BTN3 | BTN2 | U_NP | U_NP | + + +**** Media + +[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/layers/miryoku-kle-media.png]] + +Tertiary right-hand layer is media control, with volume up / down and next / +prev mirroring the navigation keys. Pause, stop and mute are on thumbs. RGB +control is on the top row (combine with shift to invert). Unused keys are +available for other related functions. + +#+NAME: media-r +| RGB_TOG | RGB_MOD | RGB_HUI | RGB_SAI | RGB_VAI | +| | MPRV | VOLD | VOLU | MNXT | +| | | | | | +| MSTP | MPLY | MUTE | U_NP | U_NP | + + +**** Num + +[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/layers/miryoku-kle-num.png]] + +Primary left-hand layer (right home thumb) is numerals and symbols. Numerals +are in the standard numpad locations with symbols in the remaining positions. +Dot is duplicated from the base layer. + +#+NAME: num-l +| [ | 7 | 8 | 9 | ] | +| ; | 4 | 5 | 6 | = | +| ` | 1 | 2 | 3 | \ | +| U_NP | U_NP | DOT | 0 | MINS | + + +**** Sym + +[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/layers/miryoku-kle-sym.png]] + +Secondary left-hand layer has shifted symbols in the same locations to reduce +chording when using mods with shifted symbols. Open parenthesis is duplicated +next to close parenthesis. + +#+NAME: sym-l +| { | & | * | ( | } | +| : | $ | % | ^ | + | +| ~ | ! | @ | # | PIPE | +| U_NP | U_NP | ( | ) | _ | + + +**** Fun + +[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/layers/miryoku-kle-fun.png]] + +Tertiary left-hand layer has function keys mirroring the numerals on the primary +layer with extras on the pinkie column, plus system keys on the inner column. +App (menu) is on the tertiary thumb key and other thumb keys are duplicated from +the base layer to enable auto-repeat. + + +#+NAME: fun-l +| F12 | F7 | F8 | F9 | PSCR | +| F11 | F4 | F5 | F6 | SLCK | +| F10 | F1 | F2 | F3 | PAUS | +| U_NP | U_NP | APP | SPC | TAB | + + +**** Alternative Layouts + +The defaults are recommended, but alternative layouts are provided to +accommodate existing muscle memory and platform differences. + + +***** Alphas + +To select, append the corresponding option to the ~make~ command line when +building, e.g. ~MIRYOKU_ALPHAS=QWERTY~. + + +****** AZERTY + +~MIRYOKU_ALPHAS=AZERTY~ + +#+NAME: azerty +| A | Z | E | R | T | Y | U | I | O | P | +| Q | S | D | F | G | H | J | K | L | M | +| W | X | C | V | B | N | , | DOT | / | ' | + + +****** Colemak + +~MIRYOKU_ALPHAS=COLEMAK~ + +#+NAME: colemak +| Q | W | F | P | G | J | L | U | Y | ' | +| A | R | S | T | D | H | N | E | I | O | +| Z | X | C | V | B | K | M | , | DOT | / | + + +****** Colemak Mod-DHk + +~MIRYOKU_ALPHAS=COLEMAKDHK~ + +#+NAME: colemakdhk +| Q | W | F | P | B | J | L | U | Y | ' | +| A | R | S | T | G | K | N | E | I | O | +| Z | X | C | D | V | M | H | , | DOT | / | + + +****** Dvorak + +~MIRYOKU_ALPHAS=DVORAK~ + +#+NAME: dvorak +| ' | , | DOT | P | Y | F | G | C | R | L | +| A | O | E | U | I | D | H | T | N | S | +| / | Q | J | K | X | B | M | W | V | Z | + + +****** Halmak + +~MIRYOKU_ALPHAS=HALMAK~ + +#+NAME: halmak +| W | L | R | B | Z | ' | Q | U | D | J | +| S | H | N | T | , | DOT | A | E | O | I | +| F | M | V | C | / | G | P | X | K | Y | + + +****** Workman + +~MIRYOKU_ALPHAS=WORKMAN~ + +#+NAME: workman +| Q | D | R | W | B | J | F | U | P | ' | +| A | S | H | T | G | Y | N | E | O | I | +| Z | X | M | C | V | K | L | , | DOT | / | + + +****** QWERTY + +~MIRYOKU_ALPHAS=QWERTY~ + +#+NAME: qwerty +| Q | W | E | R | T | Y | U | I | O | P | +| A | S | D | F | G | H | J | K | L | ' | +| Z | X | C | V | B | N | M | , | DOT | / | + + +****** QWERTZ + +~MIRYOKU_ALPHAS=QWERTZ~ + +#+NAME: qwertz +| Q | W | E | R | T | Z | U | I | O | P | +| A | S | D | F | G | H | J | K | L | ' | +| Y | X | C | V | B | N | M | , | DOT | / | + + +***** Nav + + +****** vi-Style + +To select, append ~MIRYOKU_NAV=VI~ to the ~make~ command line when building. +Not available with ~MIRYOKU_LAYERS=FLIP~. + + +******* Nav + +#+NAME: nav-r-vi +| U_RDO | U_PST | U_CPY | U_CUT | U_UND | +| LEFT | DOWN | UP | RGHT | CAPS | +| HOME | PGDN | PGUP | END | INS | +| ENT | BSPC | DEL | U_NP | U_NP | + + +******* Mouse + +#+NAME: mouse-r-vi +| U_RDO | U_PST | U_CPY | U_CUT | U_UND | +| MS_L | MS_D | MS_U | MS_R | | +| WH_L | WH_D | WH_U | WH_R | | +| BTN1 | BTN3 | BTN2 | U_NP | U_NP | + + +******* Media + +#+NAME: media-r-vi +| RGB_TOG | RGB_MOD | RGB_HUI | RGB_SAI | RGB_VAI | +| MPRV | VOLD | VOLU | MNXT | | +| | | | | | +| MSTP | MPLY | MUTE | U_NP | U_NP | + + +****** Inverted-T + +[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/layers/miryoku-kle-reference-flip-invertedt.png]] + +To select, append ~MIRYOKU_NAV=INVERTEDT~ to the ~make~ command line when +building. Only available with ~MIRYOKU_LAYERS=FLIP~. + + +******* Nav + +#+NAME: nav-l-invertedt +| PGUP | HOME | UP | END | INS | +| PGDN | LEFT | DOWN | RGHT | CAPS | +| U_UND | U_CUT | U_CPY | U_PST | U_RDO | +| U_NP | U_NP | DEL | BSPC | ENT | + + +******* Mouse + +#+NAME: mouse-l-invertedt +| WH_U | WH_L | MS_U | WH_R | | +| WH_D | MS_L | MS_D | MS_R | | +| U_UND | U_CUT | U_CPY | U_PST | U_RDO | +| U_NP | U_NP | BTN2 | BTN3 | BTN1 | + + +******* Media + +#+NAME: media-l-invertedt +| | | VOLU | | | +| | MPRV | VOLD | MNXT | | +| RGB_MOD | RGB_HUI | RGB_SAI | RGB_VAI | RGB_TOG | +| U_NP | U_NP | MUTE | MPLY | MSTP | + + +***** Clipboard + +Keycodes are translated according to the following tables. + +By default, the main clipboard keys (cut, copy, and paste) use the CUA bindings +and should work in general unix and windows applications, emacs, and terminal +emulators. The additional keys (undo, redo) usually require rebinding in the +application. + +To select, append the corresponding option to the ~make~ command line when +building, e.g. ~MIRYOKU_CLIPBOARD=WIN~. + + +****** Default + +#+NAME: clipboard +| U_RDO | AGIN | +| U_PST | S(KC_INS) | +| U_CPY | C(KC_INS) | +| U_CUT | S(KC_DEL) | +| U_UND | UNDO | + + +****** Fun Cluster + +~MIRYOKU_CLIPBOARD=FUN~ + +#+NAME: clipboard-fun +| U_RDO | AGIN | +| U_PST | PSTE | +| U_CPY | COPY | +| U_CUT | CUT | +| U_UND | UNDO | + + +****** Mac + +~MIRYOKU_CLIPBOARD=MAC~ + +#+NAME: clipboard-mac +| U_RDO | SCMD(KC_Z) | +| U_PST | LCMD(KC_V) | +| U_CPY | LCMD(KC_C) | +| U_CUT | LCMD(KC_X) | +| U_UND | LCMD(KC_Z) | + + +****** Windows + +~MIRYOKU_CLIPBOARD=WIN~ + +#+NAME: clipboard-win +| U_RDO | C(KC_Y) | +| U_PST | C(KC_V) | +| U_CPY | C(KC_C) | +| U_CUT | C(KC_X) | +| U_UND | C(KC_Z) | + + +***** Layers + + +****** Flip + +Flip base layer thumb keys and sub layers between right and left hands. + +To select, append ~MIRYOKU_LAYERS=FLIP~ to the ~make~ command line when building. + + +******* Thumbs + +#+NAME: thumbs-flip +| U_NP | U_NP | DEL | BSPC | ENT | TAB | SPC | ESC | U_NP | U_NP | + + +******* Hold + +#+NAME: hold-flip +| RESET | | | | | | | | | RESET | +| LGUI | LALT | LCTL | LSFT | | | LSFT | LCTL | LALT | LGUI | +| BUTTON | ALGR | | | | | | | ALGR | BUTTON | +| U_NP | U_NP | FUN | NUM | SYM | MOUSE | NAV | MEDIA | U_NP | U_NP | + + +******* Nav + +#+NAME: nav-l +| HOME | PGDN | PGUP | END | INS | +| LEFT | DOWN | UP | RGHT | CAPS | +| U_UND | U_CUT | U_CPY | U_PST | U_RDO | +| U_NP | U_NP | DEL | BSPC | ENT | + + +******* Mouse + +#+NAME: mouse-l +| WH_L | WH_D | WH_U | WH_R | | +| MS_L | MS_D | MS_U | MS_R | | +| U_UND | U_CUT | U_CPY | U_PST | U_RDO | +| U_NP | U_NP | BTN2 | BTN3 | BTN1 | + + +******* Media + +#+NAME: media-l +| RGB_MOD | RGB_HUI | RGB_SAI | RGB_VAI | RGB_TOG | +| MPRV | VOLD | VOLU | MNXT | | +| | | | | | +| U_NP | U_NP | MUTE | MPLY | MSTP | + + +******* Num + +#+NAME: num-r +| [ | 7 | 8 | 9 | ] | +| = | 4 | 5 | 6 | ; | +| \ | 1 | 2 | 3 | ` | +| MINS | 0 | DOT | U_NP | U_NP | + + +******* Sym + +#+NAME: sym-r +| { | & | * | ( | } | +| + | $ | % | ^ | : | +| PIPE | ! | @ | # | ~ | +| _ | ( | ) | U_NP | U_NP | + + +******* Fun + +#+NAME: fun-r +| PSCR | F7 | F8 | F9 | F12 | +| SLCK | F4 | F5 | F6 | F11 | +| PAUS | F1 | F2 | F3 | F10 | +| TAB | SPC | APP | U_NP | U_NP | + + +**** COMMENT Templates + +#+NAME: tem +| <l4> | <l4> | <l4> | <l4> | <l4> | <l4> | <l4> | <l4> | <l4> | <l4> | +|------+------+------+------+------+------+------+------+------+------| +| | | | | | | | | | | +| | | | | | | | | | | +| | | | | | | | | | | +| U_NP | U_NP | | | | | | | U_NP | U_NP | + + +Duplicate base layer tap keys on thumbs rather than trans to enable auto-repeat. + +#+NAME: tem-r +| <l4> | <l4> | <l4> | <l4> | <l4> | +|------+------+------+------+------| +| | | | | | +| | | | | | +| | | | | | +| ENT | BSPC | DEL | U_NP | U_NP | + +#+NAME: tem-l +| <l4> | <l4> | <l4> | <l4> | <l4> | +|------+------+------+------+------| +| | | | | | +| | | | | | +| | | | | | +| U_NP | U_NP | ESC | SPC | TAB | + + +** Code Generation + +The layout is maintained in emacs org-mode tables and converted to QMK keymap +data structures using embedded python scripts. + + +*** Table Conversion Scripts + + +**** table-layout-taphold + +Produce base layer from separate tap and hold tables. + +#+NAME: table-layout-taphold +#+BEGIN_SRC python :var alphas_table=colemakdh :var thumbs_table=thumbs :var hold_table=hold :var symbol_names_table=symbol-names :var mods_table=mods :var nonkc_table=nonkc :tangle no :results verbatim +width = 19 +mods_dict = dict.fromkeys(mods_table[0]) +nonkc_tuple = tuple(nonkc_table[0]) +symbol_names_dict = {} +for symbol, name, shifted_symbol, shifted_name in symbol_names_table: + symbol_names_dict[symbol] = name + symbol_names_dict[shifted_symbol] = shifted_name +results = '' +for tap_row, hold_row in zip(alphas_table + thumbs_table, hold_table): + results += ' ' + for tap, hold in zip(tap_row, hold_row): + if tap == '': + code = 'U_NU' + elif tap in symbol_names_dict: + code = symbol_names_dict[tap] + else: + code = tap + if not str(code).startswith(nonkc_tuple): + code = 'KC_' + str(code) + if hold in mods_dict: + code = str(hold) + '_T(' + code + ')' + elif hold != '' and hold != 'U_NP' and hold != 'RESET': + code = 'LT(' + str(hold) + ', ' + code + ')' + results += (code + ', ').ljust(width) + results = results.rstrip(' ') + '\n' +results = results.rstrip('\n, ') +return results +#+END_SRC + +#+RESULTS: table-layout-taphold +: KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, +: LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_G, KC_M, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O), +: KC_Z, ALGR_T(KC_X), KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, ALGR_T(KC_DOT), KC_SLSH, +: U_NP, U_NP, LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), U_NP, U_NP + + +**** table-layout-half + +Produce sub layers given layer name and corresponding table for single hand and +incorporating mods and reset from base layer. Layer names must end with 'R' or +'L'. A layer with shifted symbols can also be generated. + +#+NAME: table-layout-half +#+BEGIN_SRC python :var hold_table=hold :var mode="r" :var half_table=nav-r :var symbol_names_table=symbol-names :var mods_table=mods :var nonkc_table=nonkc :var shift="false" :tangle no :results verbatim +width = 9 +mods_dict = dict.fromkeys(mods_table[0]) +nonkc_tuple = tuple(nonkc_table[0]) +symbol_names_dict = {} +shifted_symbol_names_dict = {} +for symbol, name, shifted_symbol, shifted_name in symbol_names_table: + symbol_names_dict[symbol] = name + symbol_names_dict[shifted_symbol] = shifted_name + shifted_symbol_names_dict[symbol] = shifted_name +length = len(half_table[0]) +results = '' +for half_row, hold_row in zip(half_table, hold_table): + results += ' ' + hold_row_l, hold_row_r = hold_row[:length], hold_row[length:] + for lr, hold_row_lr in ('l', hold_row_l), ('r', hold_row_r): + if lr == mode: + for half in half_row: + if half == '': + code = 'U_NU' + elif shift == "true" and half in shifted_symbol_names_dict: + code = shifted_symbol_names_dict[half] + elif half in symbol_names_dict: + code = symbol_names_dict[half] + else: + code = half + if not str(code).startswith(nonkc_tuple): + code = 'KC_' + str(code) + results += (str(code) + ', ').ljust(width) + else: + for hold in hold_row_lr: + if hold == '' or hold != 'U_NP' and hold != 'RESET' and hold not in mods_dict: + code = 'U_NA' + else: + code = hold + if not str(code).startswith(nonkc_tuple): + code = 'KC_' + str(code) + results += (str(code) + ', ').ljust(width) + results = results.rstrip(' ') + '\n' +results = results.rstrip('\n, ') +return results +#+END_SRC + +#+RESULTS: table-layout-half +: RESET, U_NA, U_NA, U_NA, U_NA, U_RDO, U_PST, U_CPY, U_CUT, U_UND, +: KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, KC_CAPS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, +: U_NA, KC_ALGR, U_NA, U_NA, U_NA, KC_INS, KC_HOME, KC_PGDN, KC_PGUP, KC_END, +: U_NP, U_NP, U_NA, U_NA, U_NA, KC_ENT, KC_BSPC, KC_DEL, U_NP, U_NP + + +**** table-layout-full + +Produce full layer from single table. Fill for unused keys is configurable. + +#+NAME: table-layout-full +#+BEGIN_SRC python :var table=button :var fill="TRNS" :var symbol_names_table=symbol-names :var nonkc_table=nonkc :tangle no :results verbatim +width = 9 +symbol_names_dict = {} +nonkc_tuple = tuple(nonkc_table[0]) +for symbol, name, shifted_symbol, shifted_name in symbol_names_table: + symbol_names_dict[symbol] = name + symbol_names_dict[shifted_symbol] = shifted_name +results = '' +for row in table: + results += ' ' + for key in row: + if key == '': + code = fill + elif key in symbol_names_dict: + code = symbol_names_dict[key] + else: + code = key + if not str(code).startswith(nonkc_tuple): + code = 'KC_' + str(code) + results += (code + ', ').ljust(width) + results = results.rstrip(' ') + '\n' +results = results.rstrip('\n, ') +return results +#+END_SRC + +#+RESULTS: table-layout-full +: U_UND, U_CUT, U_CPY, U_PST, U_RDO, U_RDO, U_PST, U_CPY, U_CUT, U_UND, +: KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, KC_TRNS, KC_TRNS, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, +: U_UND, U_CUT, U_CPY, U_PST, U_RDO, U_RDO, U_PST, U_CPY, U_CUT, U_UND, +: U_NP, U_NP, KC_BTN2, KC_BTN3, KC_BTN1, KC_BTN1, KC_BTN3, KC_BTN2, U_NP, U_NP + + +**** table-enums + +Produce layer enums from layer names in hold table. + +#+NAME: table-enums +#+BEGIN_SRC python :var hold_table=hold :var mods_table=mods :tangle no +mods_dict = dict.fromkeys(mods_table[0]) +layers = [ 'BASE', 'BUTTON' ] +for hold_row in hold_table: + for hold in hold_row: + if hold not in mods_dict and hold != '' and hold != 'U_NP' and hold != 'RESET' and hold not in layers: + layers.append(hold) +results = 'enum layers { ' + ', '.join(layers) + ' };' +return results +#+END_SRC + +#+RESULTS: table-enums +: enum layers { BASE, BUTTON, MEDIA, NAV, MOUSE, SYM, NUM, FUN }; + + +**** table-keycode-mappings + +Produce keycode mappings according to the provided table. + +#+NAME: table-keycode-mappings +#+BEGIN_SRC python :var table=clipboard :var symbol_names_table=symbol-names :var nonkc_table=nonkc :tangle no +nonkc_tuple = tuple(nonkc_table[0]) +symbol_names_dict = {} +for symbol, name, shifted_symbol, shifted_name in symbol_names_table: + symbol_names_dict[symbol] = name + symbol_names_dict[shifted_symbol] = shifted_name +results = '' +for f,t in table: + if t == '': + code = 'U_NU' + elif t in symbol_names_dict: + code = symbol_names_dict[t] + else: + code = t + if not str(code).startswith(nonkc_tuple): + code = 'KC_' + str(code) + results += '#define ' + f + ' ' + code + '\n' +return results +#+END_SRC + +#+RESULTS: table-keycode-mappings +: #define U_RDO KC_AGIN +: #define U_PST S(KC_INS) +: #define U_CPY C(KC_INS) +: #define U_CUT S(KC_DEL) +: #define U_UND KC_UNDO + + +**** COMMENT python-version + +C-c C-c in code block to update + +#+NAME: python-version +#+BEGIN_SRC python :tangle no +import sys +return sys.version +#+END_SRC + +#+RESULTS: python-version +: 3.9.4 (default, Apr 9 2021, 01:15:05) +: [GCC 5.4.0 20160609] + + +*** Data + + +**** symbol-names + +Symbol, name, and shifted symbol mappings for use in tables. + +#+NAME: symbol-names +| ` | GRV | ~ | TILD | +| "-" | MINS | _ | UNDS | +| = | EQL | + | PLUS | +| [ | LBRC | { | LCBR | +| ] | RBRC | } | RCBR | +| \ | BSLS | PIPE | PIPE | +| ; | SCLN | : | COLN | +| ' | QUOT | DQUO | DQUO | +| , | COMM | < | LT | +| "." | DOT | > | GT | +| / | SLSH | ? | QUES | +| 1 | 1 | ! | EXLM | +| 2 | 2 | @ | AT | +| 3 | 3 | # | HASH | +| 4 | 4 | $ | DLR | +| 5 | 5 | % | PERC | +| 6 | 6 | ^ | CIRC | +| 7 | 7 | & | AMPR | +| 8 | 8 | * | ASTR | +| 9 | 9 | ( | LPRN | +| 0 | 0 | ) | RPRN | + + +**** mods + +Modifiers usable in hold table. Need to have the same name for ~KC_~ and ~_T~ +versions. + +#+NAME: mods +| LSFT | LCTL | LALT | LGUI | ALGR | + + +**** nonkc + +Keycodes that match any of these prefixes will not have ~KC_~ automatically +prepended. + +#+NAME: nonkc +| U_ | RGB_ | RESET | S( | C( | SCMD( | LCMD( | + + +**** header + +Header for tangled files. + +#+NAME: header +#+BEGIN_SRC C :main no :tangle no +Copyright 2019 Manna Harbour +https://github.com/manna-harbour/miryoku +generated -*- buffer-read-only: t -*- +#+END_SRC + + +**** license-qmk + +License for tangled QMK C source files. + +#+NAME: license-qmk +#+BEGIN_SRC C :main no :tangle no +// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. +#+END_SRC + + +** Subset Mapping + +The keymap, build options, and configuration are shared between keyboards. The +layout is mapped onto keyboards with different physical layouts as a subset +without code duplication using the QMK userspace feature and C macros. + + +*** Userspace + +The keymap is defined for ~LAYOUT_miryoku~ which is 10x4, with the outer 2 +positions on the bottom row unused and the rest of the bottom row being the +thumb keys. + + +**** [[./rules.mk][users/manna-harbour_miryoku/rules.mk]] + +Build options. Automatically included. + +#+BEGIN_SRC makefile :noweb yes :padline no :tangle rules.mk +# <<header>> + +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +AUTO_SHIFT_ENABLE = yes # Auto Shift + +SRC += manna-harbour_miryoku.c # keymap + +# alternative layouts: + +# alphas +ifneq ($(strip $(MIRYOKU_ALPHAS)),) + OPT_DEFS += -DMIRYOKU_ALPHAS_$(MIRYOKU_ALPHAS) +endif + +# nav +ifneq ($(strip $(MIRYOKU_NAV)),) + OPT_DEFS += -DMIRYOKU_NAV_$(MIRYOKU_NAV) +endif + +# clipboard +ifneq ($(strip $(MIRYOKU_CLIPBOARD)),) + OPT_DEFS += -DMIRYOKU_CLIPBOARD_$(MIRYOKU_CLIPBOARD) +endif + +# layers +ifneq ($(strip $(MIRYOKU_LAYERS)),) + OPT_DEFS += -DMIRYOKU_LAYERS_$(MIRYOKU_LAYERS) +endif + +# subset mappings +ifneq ($(strip $(MIRYOKU_MAPPING)),) + OPT_DEFS += -DMIRYOKU_MAPPING_$(MIRYOKU_MAPPING) +endif +#+END_SRC + + +**** [[./config.h][users/manna-harbour_miryoku/config.h]] + +Config options. Automatically included. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle config.h +// <<header>> + +<<license-qmk>> + +#pragma once + +// default but used in macros +#undef TAPPING_TERM +#define TAPPING_TERM 200 + +// Prevent normal rollover on alphas from accidentally triggering mods. +#define IGNORE_MOD_TAP_INTERRUPT + +// Enable rapid switch from tap to hold, disables double tap hold auto-repeat. +#define TAPPING_FORCE_HOLD + +// Auto Shift +#define NO_AUTO_SHIFT_ALPHA +#define AUTO_SHIFT_TIMEOUT TAPPING_TERM +#define AUTO_SHIFT_NO_SETUP + +// Recommended for heavy chording. +#define QMK_KEYS_PER_SCAN 4 + +// Mouse key speed and acceleration. +#undef MOUSEKEY_DELAY +#define MOUSEKEY_DELAY 0 +#undef MOUSEKEY_INTERVAL +#define MOUSEKEY_INTERVAL 16 +#undef MOUSEKEY_WHEEL_DELAY +#define MOUSEKEY_WHEEL_DELAY 0 +#undef MOUSEKEY_MAX_SPEED +#define MOUSEKEY_MAX_SPEED 6 +#undef MOUSEKEY_TIME_TO_MAX +#define MOUSEKEY_TIME_TO_MAX 64 +#+END_SRC + + +**** [[./manna-harbour_miryoku.h][users/manna-harbour_miryoku/manna-harbour_miryoku.h]] + +Keymap-related definitions. Included from ~manna-harbour_miryoku.c~. Can be +included from keymap or layout ~keymap.c~ if needed. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle manna-harbour_miryoku.h +// <<header>> + +<<license-qmk>> + +#pragma once + +#include QMK_KEYBOARD_H + +#define U_NP KC_NO // key is not present +#define U_NA KC_NO // present but not available for use +#define U_NU KC_NO // available but not used + +<<table-enums()>> + +#if defined MIRYOKU_CLIPBOARD_FUN +<<table-keycode-mappings(table=clipboard-fun)>> +#elif defined MIRYOKU_CLIPBOARD_MAC +<<table-keycode-mappings(table=clipboard-mac)>> +#elif defined MIRYOKU_CLIPBOARD_WIN +<<table-keycode-mappings(table=clipboard-win)>> +#else +<<table-keycode-mappings(table=clipboard)>> +#endif + + +#+END_SRC + + +**** [[./manna-harbour_miryoku.c][users/manna-harbour_miryoku/manna-harbour_miryoku.c]] + +Contains the keymap. Added from ~rules.mk~. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle manna-harbour_miryoku.c +// <<header>> + +<<license-qmk>> + +#include "manna-harbour_miryoku.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +#if defined MIRYOKU_LAYERS_FLIP + [BASE] = LAYOUT_miryoku( + #if defined MIRYOKU_ALPHAS_AZERTY +<<table-layout-taphold(alphas_table=azerty, thumbs_table=thumbs-flip, hold_table=hold-flip)>> + #elif defined MIRYOKU_ALPHAS_COLEMAK +<<table-layout-taphold(alphas_table=colemak, thumbs_table=thumbs-flip, hold_table=hold-flip)>> + #elif defined MIRYOKU_ALPHAS_COLEMAKDHK +<<table-layout-taphold(alphas_table=colemakdhk, thumbs_table=thumbs-flip, hold_table=hold-flip)>> + #elif defined MIRYOKU_ALPHAS_DVORAK +<<table-layout-taphold(alphas_table=dvorak, thumbs_table=thumbs-flip, hold_table=hold-flip)>> + #elif defined MIRYOKU_ALPHAS_HALMAK +<<table-layout-taphold(alphas_table=halmak, thumbs_table=thumbs-flip, hold_table=hold-flip)>> + #elif defined MIRYOKU_ALPHAS_WORKMAN +<<table-layout-taphold(alphas_table=workman, thumbs_table=thumbs-flip, hold_table=hold-flip)>> + #elif defined MIRYOKU_ALPHAS_QWERTY +<<table-layout-taphold(alphas_table=qwerty, thumbs_table=thumbs-flip, hold_table=hold-flip)>> + #elif defined MIRYOKU_ALPHAS_QWERTZ +<<table-layout-taphold(alphas_table=qwertz, thumbs_table=thumbs-flip, hold_table=hold-flip)>> + #else +<<table-layout-taphold(alphas_table=colemakdh, thumbs_table=thumbs-flip, hold_table=hold-flip)>> + #endif + ), + #if defined MIRYOKU_NAV_INVERTEDT + [NAV] = LAYOUT_miryoku( +<<table-layout-half(half_table=nav-l-invertedt, mode="l", hold_table=hold-flip)>> + ), + [MOUSE] = LAYOUT_miryoku( +<<table-layout-half(half_table=mouse-l-invertedt, mode="l", hold_table=hold-flip)>> + ), + [MEDIA] = LAYOUT_miryoku( +<<table-layout-half(half_table=media-l-invertedt, mode="l", hold_table=hold-flip)>> + ), + #else + [NAV] = LAYOUT_miryoku( +<<table-layout-half(half_table=nav-l, mode="l", hold_table=hold-flip)>> + ), + [MOUSE] = LAYOUT_miryoku( +<<table-layout-half(half_table=mouse-l, mode="l", hold_table=hold-flip)>> + ), + [MEDIA] = LAYOUT_miryoku( +<<table-layout-half(half_table=media-l, mode="l", hold_table=hold-flip)>> + ), + #endif + [NUM] = LAYOUT_miryoku( +<<table-layout-half(half_table=num-r, mode="r", hold_table=hold-flip)>> + ), + [SYM] = LAYOUT_miryoku( +<<table-layout-half(half_table=sym-r, mode="r", hold_table=hold-flip)>> + ), + [FUN] = LAYOUT_miryoku( +<<table-layout-half(half_table=fun-r, mode="r", hold_table=hold-flip)>> + ), +#else + [BASE] = LAYOUT_miryoku( + #if defined MIRYOKU_ALPHAS_AZERTY +<<table-layout-taphold(alphas_table=azerty)>> + #elif defined MIRYOKU_ALPHAS_COLEMAK +<<table-layout-taphold(alphas_table=colemak)>> + #elif defined MIRYOKU_ALPHAS_COLEMAKDHK +<<table-layout-taphold(alphas_table=colemakdhk)>> + #elif defined MIRYOKU_ALPHAS_DVORAK +<<table-layout-taphold(alphas_table=dvorak)>> + #elif defined MIRYOKU_ALPHAS_HALMAK +<<table-layout-taphold(alphas_table=halmak)>> + #elif defined MIRYOKU_ALPHAS_WORKMAN +<<table-layout-taphold(alphas_table=workman)>> + #elif defined MIRYOKU_ALPHAS_QWERTY +<<table-layout-taphold(alphas_table=qwerty)>> + #elif defined MIRYOKU_ALPHAS_QWERTZ +<<table-layout-taphold(alphas_table=qwertz)>> + #else +<<table-layout-taphold(alphas_table=colemakdh)>> + #endif + ), + #if defined MIRYOKU_NAV_VI + [NAV] = LAYOUT_miryoku( +<<table-layout-half(half_table=nav-r-vi, mode="r")>> + ), + [MOUSE] = LAYOUT_miryoku( +<<table-layout-half(half_table=mouse-r-vi, mode="r")>> + ), + [MEDIA] = LAYOUT_miryoku( +<<table-layout-half(half_table=media-r-vi, mode="r")>> + ), + #else + [NAV] = LAYOUT_miryoku( +<<table-layout-half(half_table=nav-r, mode="r")>> + ), + [MOUSE] = LAYOUT_miryoku( +<<table-layout-half(half_table=mouse-r, mode="r")>> + ), + [MEDIA] = LAYOUT_miryoku( +<<table-layout-half(half_table=media-r, mode="r")>> + ), + #endif + [NUM] = LAYOUT_miryoku( +<<table-layout-half(half_table=num-l, mode="l")>> + ), + [SYM] = LAYOUT_miryoku( +<<table-layout-half(half_table=sym-l, mode="l")>> + ), + [FUN] = LAYOUT_miryoku( +<<table-layout-half(half_table=fun-l, mode="l")>> + ), +#endif + [BUTTON] = LAYOUT_miryoku( +<<table-layout-full(table=button)>> + ) +}; +#+END_SRC + + +*** Layouts + +To use the keymap on a keyboard supporting the layouts feature, ~LAYOUT_miryoku~ +is defined as a macro mapping onto the layout's own ~LAYOUT~ macro, leaving the +unused keys as ~KC_NO~. + +For keyboards supporting multiple layouts for which subset mappings are +available, select the layout with ~FORCE_LAYOUT~ in the ~make~ command line when +building. E.g.: + +#+BEGIN_SRC sh :tangle no +make planck/rev6:manna-harbour_miryoku:flash FORCE_LAYOUT=planck_mit # planck_mit +make planck/rev6:manna-harbour_miryoku:flash FORCE_LAYOUT=ortho_4x12 # ortho_4x12 +#+END_SRC + + +**** 60_ansi + +An angled ortho split layout is mapped onto the row-staggered keyboard. The +rows are moved up to better position the thumb keys, the hands are separated as +much as possible, and the left hand column angle is reversed to reduce ulnar +deviation of the wrists. + +[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-60_ansi.png]] + +An alternative subset mapping is also provided without reverse column angle. To +select this mapping, append ~MIRYOKU_MAPPING=NOREVERSEANGLE~ to the ~make~ +command line when building. + +[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-60_ansi-noreverseangle.png]] + +Another alternative subset mapping is provided mapping only the 3x10 alphas, +plus spacebar for space / Nav, with the remainder being the default 60_ansi +keymap with semicolon in place of quote. To select this mapping, append +~MIRYOKU_MAPPING=LITE~ to the ~make~ command line when building. + +Keyboards supporting this layout: alps64, amj60, bakeneko60, bm60poker, bm60rgb, do60, dp60, dz60, facew, gskt00, infinity60, jm60, kc60, kc60se, ok60, org60, paladin64, panc60, reviung61, smk60, v60_type_r, yd60mq, 1upkeyboards/1up60hse, 1upkeyboards/1up60rgb, 40percentclub/luddite, acheron/keebspcb, acheron/lasgweloth, ai03/polaris, akegata_denki/device_one, atxkb/1894, bioi/g60ble, bt66tech/bt66tech60, cannonkeys/an_c, cannonkeys/instant60, cannonkeys/practice60, clawsome/coupe, dm9records/tartan, duck/eagle_viper, evyd13/plain60, exclusive/e6_rgb, gh60/revc, gh60/satan, gh60/v1p3, handwired/xealousbrown, hineybush/h60, hs60/v1, keebio/wtf60, noxary/260, playkbtw/pk60, ryloo_studio/m0110, thevankeyboards/bananasplit, wilba_tech/zeal60, xd60/rev2, xd60/rev3, cannonkeys/db60/hotswap, cannonkeys/db60/j02, cannonkeys/db60/rev2, exclusive/e6v2/le, exclusive/e6v2/oe, foxlab/leaf60/universal, handwired/co60/rev1, handwired/co60/rev7, handwired/swiftrax/nodu, hs60/v2/ansi, inett_studio/sqx/universal, melgeek/mj61/rev1, melgeek/mj61/rev2, melgeek/mj63/rev1, melgeek/mj63/rev2, sentraq/s60_x/default, sentraq/s60_x/rgb. + +Example build command lines: + +#+BEGIN_SRC sh :tangle no +make dz60:manna-harbour_miryoku:flash # dz60 +make dz60:manna-harbour_miryoku:flash MIRYOKU_MAPPING=NOREVERSEANGLE # dz60, without reverse column angle +make dz60:manna-harbour_miryoku:flash MIRYOKU_MAPPING=LITE # dz60, with lite mapping +#+END_SRC + + +***** [[../../layouts/community/60_ansi/manna-harbour_miryoku/config.h][layouts/community/60_ansi/manna-harbour_miryoku/config.h]] + +Contains subset mapping. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../layouts/community/60_ansi/manna-harbour_miryoku/config.h +// <<header>> + +<<license-qmk>> + +#pragma once + +#define XXX KC_NO + +#if defined MIRYOKU_MAPPING_NOREVERSEANGLE + #define LAYOUT_miryoku(\ +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,\ +N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +LAYOUT_60_ansi(\ +K00, K01, K02, K03, K04, XXX, XXX, XXX, K05, K06, K07, K08, K09, XXX,\ + K10, K11, K12, K13, K14, XXX, XXX, XXX, K15, K16, K17, K18, K19, XXX,\ + K20, K21, K22, K23, K24, XXX, XXX, XXX, K25, K26, K27, K28, K29,\ + XXX, K32, K33, K34, XXX, XXX, XXX, XXX, K35, K36, K37, XXX,\ + XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX\ +) +#elif defined MIRYOKU_MAPPING_LITE + #if defined MIRYOKU_LAYERS_FLIP + #define LAYOUT_miryoku( \ + 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, \ + N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ +) \ +LAYOUT_60_ansi( \ +KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \ +KC_TAB, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, KC_LBRC, KC_RBRC, KC_BSLS, \ +KC_CAPS, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, KC_SCLN, KC_ENT, \ +KC_LSFT, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, KC_RSFT, \ +KC_LCTL, KC_LGUI, KC_LALT, K36, KC_RALT, KC_RGUI, KC_APP, KC_RCTL \ +) + #else + #define LAYOUT_miryoku( \ + 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, \ + N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ +) \ +LAYOUT_60_ansi( \ +KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \ +KC_TAB, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, KC_LBRC, KC_RBRC, KC_BSLS, \ +KC_CAPS, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, KC_SCLN, KC_ENT, \ +KC_LSFT, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, KC_RSFT, \ +KC_LCTL, KC_LGUI, KC_LALT, K33, KC_RALT, KC_RGUI, KC_APP, KC_RCTL \ +) + #endif +#else + #define LAYOUT_miryoku(\ + 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,\ + N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +LAYOUT_60_ansi(\ +XXX, XXX, K00, K01, K02, K03, K04, XXX, K05, K06, K07, K08, K09, XXX,\ + XXX, K10, K11, K12, K13, K14, XXX, XXX, K15, K16, K17, K18, K19, XXX,\ + K20, K21, K22, K23, K24, XXX, XXX, XXX, K25, K26, K27, K28, K29,\ + XXX, XXX, K32, K33, K34, XXX, XXX, XXX, K35, K36, K37, XXX,\ + XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX\ +) +#endif +#+END_SRC + + +***** [[../../layouts/community/60_ansi/manna-harbour_miryoku/keymap.c][layouts/community/60_ansi/manna-harbour_miryoku/keymap.c]] + +Required by the build system. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../layouts/community/60_ansi/manna-harbour_miryoku/keymap.c +// <<header>> + +<<license-qmk>> +#+END_SRC + + +**** ergodox + +For the ergodox layout, the main 5x3 alphas are used as usual. The primary and +secondary thumb keys are the inner and outer 2u thumb keys and the tertiary +thumb key is the innermost key of the partial bottom row. The remaining keys +are unused. + +[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-ergodox.png]] + +Keyboards supporting this layout: ergodone, ergodox_ez, ergodox_infinity, hotdox. + +Example build command lines: + +#+BEGIN_SRC sh :tangle no +make ergodox_infinity:manna-harbour_miryoku:flash # ergodox_infinity +make ergodox_ez:manna-harbour_miryoku:flash # ergodox_ez +#+END_SRC + + +***** [[../../layouts/community/ergodox/manna-harbour_miryoku/config.h][layouts/community/ergodox/manna-harbour_miryoku/config.h]] + +Contains subset mapping. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../layouts/community/ergodox/manna-harbour_miryoku/config.h +// <<header>> + +<<license-qmk>> + +#pragma once + +#define XXX KC_NO + +#define LAYOUT_miryoku(\ + 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,\ + N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +LAYOUT_ergodox_pretty(\ +XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,\ +XXX, K00, K01, K02, K03, K04, XXX, XXX, K05, K06, K07, K08, K09, XXX,\ +XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX,\ +XXX, K20, K21, K22, K23, K24, XXX, XXX, K25, K26, K27, K28, K29, XXX,\ +XXX, XXX, XXX, XXX, K32, K37, XXX, XXX, XXX, XXX,\ + XXX, XXX, XXX, XXX,\ + XXX, XXX,\ + K33, K34, XXX, XXX, K35, K36\ +) +#+END_SRC + + +***** [[../../layouts/community/ergodox/manna-harbour_miryoku/keymap.c][layouts/community/ergodox/manna-harbour_miryoku/keymap.c]] + +Required by the build system. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../layouts/community/ergodox/manna-harbour_miryoku/keymap.c +// <<header>> + +<<license-qmk>> +#+END_SRC + + +**** ortho_4x10 + +An alternative with 180 degree rotation is also provided to enable the USB cable to be relocated for use with laptops. To select this mapping, append ~MIRYOKU_MAPPING=ROTATE~ to the ~make~ command line when building. + +Keyboards supporting this layout: newgame40, nimrod, marksard/rhymestone, pabile/p40. + +Example build command lines: + +#+BEGIN_SRC sh :tangle no +make marksard/rhymestone:manna-harbour_miryoku:flash # marksard/rhymestone +make pabile/p40:manna-harbour_miryoku:flash MIRYOKU_MAPPING=ROTATE # pabile/p40, rotate +#+END_SRC + + +***** [[../../layouts/community/ortho_4x10/manna-harbour_miryoku/config.h][layouts/community/ortho_4x10/manna-harbour_miryoku/config.h]] + +Contains subset mapping. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../layouts/community/ortho_4x10/manna-harbour_miryoku/config.h +// <<header>> + +<<license-qmk>> + +#pragma once + +#define XXX KC_NO + +#if defined MIRYOKU_MAPPING_ROTATE +#define LAYOUT_miryoku( \ +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, \ +N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ +) \ +LAYOUT_ortho_4x10( \ +XXX, XXX, K37, K36, K35, K34, K33, K32, XXX, XXX, \ +K29, K28, K27, K26, K25, K24, K23, K22, K21, K20, \ +K19, K18, K17, K16, K15, K14, K13, K12, K11, K10, \ +K09, K08, K07, K06, K05, K04, K03, K02, K01, K00 \ +) +#else +#define LAYOUT_miryoku(\ +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, \ +N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ +) \ +LAYOUT_ortho_4x10( \ +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, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX \ +) +#endif +#+END_SRC + + +***** [[../../layouts/community/ortho_4x10/manna-harbour_miryoku/keymap.c][layouts/community/ortho_4x10/manna-harbour_miryoku/keymap.c]] + +Required by the build system. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../layouts/community/ortho_4x10/manna-harbour_miryoku/keymap.c +// <<header>> + +<<license-qmk>> +#+END_SRC + + +**** ortho_4x12 + +For the ortho_4x12 layout, the middle two columns, and the 2 keys on each end of +the bottom row are unused. This allows the hands to be positioned without ulnar +deviation of the wrists. + +[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-ortho_4x12.png]] + +For split keyboards using this layout the halves can be positioned and rotated +for each hand and so an alternative mapping is provided. The right half is as +follows: The rightmost column bottom 3 keys is the pinkie column. The middle 4 +columns top 3 rows are for the remaining fingers. The pinkie column is one row +lower than the other columns to provide some column stagger. The bottom row +left 3 keys are the thumb keys. The remaining keys are unused. To select this +mapping, append ~MIRYOKU_MAPPING=SPLIT~ to the ~make~ command line when +building. + +[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-ortho_4x12-split.png]] + +An alternative with extended thumb position but without pinkie column stagger is +also provided. To select this mapping, append ~MIRYOKU_MAPPING=EXTENDED_THUMBS~ +to the ~make~ command line when building. + +[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-ortho_4x12-extended_thumbs.png]] + +Keyboards supporting this layout: chimera_ls, contra, efreet, jj40, jnao, lets_split, lets_split_eh, meira, niu_mini, quark, tau4, telophase, vitamins_included, zlant, 40percentclub/4x4, 40percentclub/nori, acheron/shark, boardsource/4x12, cannonkeys/ortho48, dm9records/plaid, evyd13/eon40, evyd13/pockettype, handwired/floorboard, handwired/jotanck, handwired/wulkan, kbdfans/kbd4x, keebio/levinson, keebio/wavelet, mechstudio/ud_40_ortho, planck/ez, planck/light, planck/rev1, planck/rev2, planck/rev3, planck/rev4, planck/rev5, planck/rev6, planck/thk, rgbkb/zygomorph, zvecr/split_blackpill, zvecr/zv48, keebio/nyquist/rev1, keebio/nyquist/rev2, keebio/nyquist/rev3, montsinger/rebound/rev1, montsinger/rebound/rev2, montsinger/rebound/rev3, montsinger/rebound/rev4, signum/3_0/elitec, spaceman/pancake/feather, spaceman/pancake/promicro, ymdk/ymd40/v2. + +Example build command lines: + +#+BEGIN_SRC sh :tangle no +make planck/rev6:manna-harbour_miryoku:flash FORCE_LAYOUT=ortho_4x12 # planck, ortho_4x12 +make planck/rev6:manna-harbour_miryoku:flash FORCE_LAYOUT=ortho_4x12 MIRYOKU_MAPPING=EXTENDED_THUMBS # planck, ortho_4x12, extended thumbs +make keebio/levinson:manna-harbour_miryoku:flash MIRYOKU_MAPPING=SPLIT # levinson +make keebio/levinson:manna-harbour_miryoku:flash MIRYOKU_MAPPING=EXTENDED_THUMBS # levinson, extended thumbs +#+END_SRC + + +***** [[../../layouts/community/ortho_4x12/manna-harbour_miryoku/config.h][layouts/community/ortho_4x12/manna-harbour_miryoku/config.h]] + +Contains subset mapping. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../layouts/community/ortho_4x12/manna-harbour_miryoku/config.h +// <<header>> + +<<license-qmk>> + +#pragma once + +#if defined MIRYOKU_MAPPING_SPLIT +#define LAYOUT_miryoku(\ +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,\ +N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +LAYOUT_ortho_4x12(\ +KC_NO, K01, K02, K03, K04, KC_NO, KC_NO, K05, K06, K07, K08, KC_NO,\ +K00, K11, K12, K13, K14, KC_NO, KC_NO, K15, K16, K17, K18, K09,\ +K10, K21, K22, K23, K24, KC_NO, KC_NO, K25, K26, K27, K28, K19,\ +K20, KC_NO, KC_NO, K32, K33, K34, K35, K36, K37, KC_NO, KC_NO, K29\ +) +#elif defined MIRYOKU_MAPPING_EXTENDED_THUMBS +#define LAYOUT_miryoku(\ +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,\ +N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +LAYOUT_ortho_4x12(\ +K00, K01, K02, K03, K04, KC_NO, KC_NO, K05, K06, K07, K08, K09,\ +K10, K11, K12, K13, K14, KC_NO, KC_NO, K15, K16, K17, K18, K19,\ +K20, K21, K22, K23, K24, KC_NO, KC_NO, K25, K26, K27, K28, K29,\ +KC_NO, KC_NO, KC_NO, K32, K33, K34, K35, K36, K37, KC_NO, KC_NO, KC_NO\ +) +#else +#define LAYOUT_miryoku(\ +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,\ +N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +LAYOUT_ortho_4x12(\ +K00, K01, K02, K03, K04, KC_NO, KC_NO, K05, K06, K07, K08, K09,\ +K10, K11, K12, K13, K14, KC_NO, KC_NO, K15, K16, K17, K18, K19,\ +K20, K21, K22, K23, K24, KC_NO, KC_NO, K25, K26, K27, K28, K29,\ +KC_NO, KC_NO, K32, K33, K34, KC_NO, KC_NO, K35, K36, K37, KC_NO, KC_NO\ +) +#endif +#+END_SRC + + +***** [[../../layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c][layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c]] + +Required by the build system. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c +// <<header>> + +<<license-qmk>> +#+END_SRC + + +**** ortho_5x12 + +As per ortho_4x12 but the top row is unused. + +Keyboards supporting this layout: fractal, jj50, jnao, boardsource/5x12, cannonkeys/atlas_alps, cannonkeys/ortho60, handwired/jot50, handwired/riblee_f401, handwired/riblee_f411, handwired/rs60, keycapsss/o4l_5x12, peej/lumberjack, preonic/rev1, preonic/rev2, preonic/rev3, rgbkb/zygomorph, keebio/nyquist/rev1, keebio/nyquist/rev2, keebio/nyquist/rev3. + +Example build command lines: + +#+BEGIN_SRC sh :tangle no +make preonic/rev3:manna-harbour_miryoku:flash # preonic/rev3 +make preonic/rev3:manna-harbour_miryoku:flash MIRYOKU_MAPPING=EXTENDED_THUMBS # preonic/rev3, extended thumbs +make keebio/nyquist/rev3:manna-harbour_miryoku:flash MIRYOKU_MAPPING=SPLIT # nyquist/rev3, split +make keebio/nyquist/rev3:manna-harbour_miryoku:flash MIRYOKU_MAPPING=EXTENDED_THUMBS # nyquist/rev3, extended thumbs + +#+END_SRC + + +***** [[../../layouts/community/ortho_5x12/manna-harbour_miryoku/config.h][layouts/community/ortho_5x12/manna-harbour_miryoku/config.h]] + +Contains subset mapping. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../layouts/community/ortho_5x12/manna-harbour_miryoku/config.h +// <<header>> + +<<license-qmk>> + +#pragma once + +#if defined MIRYOKU_MAPPING_SPLIT +#define LAYOUT_miryoku(\ +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,\ +N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +LAYOUT_ortho_5x12(\ +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, K01, K02, K03, K04, KC_NO, KC_NO, K05, K06, K07, K08, KC_NO,\ +K00, K11, K12, K13, K14, KC_NO, KC_NO, K15, K16, K17, K18, K09,\ +K10, K21, K22, K23, K24, KC_NO, KC_NO, K25, K26, K27, K28, K19,\ +K20, KC_NO, KC_NO, K32, K33, K34, K35, K36, K37, KC_NO, KC_NO, K29\ +) +#elif defined MIRYOKU_MAPPING_EXTENDED_THUMBS +#define LAYOUT_miryoku(\ +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,\ +N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +LAYOUT_ortho_5x12(\ +KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,\ +K00, K01, K02, K03, K04, KC_NO, KC_NO, K05, K06, K07, K08, K09,\ +K10, K11, K12, K13, K14, KC_NO, KC_NO, K15, K16, K17, K18, K19,\ +K20, K21, K22, K23, K24, KC_NO, KC_NO, K25, K26, K27, K28, K29,\ +KC_NO, KC_NO, KC_NO, K32, K33, K34, K35, K36, K37, KC_NO, KC_NO, KC_NO\ +) +#else +#define LAYOUT_miryoku(\ +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,\ +N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +LAYOUT_ortho_5x12(\ +KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,\ +K00, K01, K02, K03, K04, KC_NO, KC_NO, K05, K06, K07, K08, K09,\ +K10, K11, K12, K13, K14, KC_NO, KC_NO, K15, K16, K17, K18, K19,\ +K20, K21, K22, K23, K24, KC_NO, KC_NO, K25, K26, K27, K28, K29,\ +KC_NO, KC_NO, K32, K33, K34, KC_NO, KC_NO, K35, K36, K37, KC_NO, KC_NO\ +) +#endif +#+END_SRC + + +***** [[../../layouts/community/ortho_5x12/manna-harbour_miryoku/keymap.c][layouts/community/ortho_5x12/manna-harbour_miryoku/keymap.c]] + +Required by the build system. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../layouts/community/ortho_5x12/manna-harbour_miryoku/keymap.c +// <<header>> + +<<license-qmk>> +#+END_SRC + + +**** ortho_5x15 + +For the ortho_5x15 layout, the top row, middle 5 columns, and the 2 keys on each +end of the bottom row are unused. This allows the hands to be positioned +without ulnar deviation of the wrists. + +[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-ortho_5x15.png]] + +An alternative subset mapping is also provided with the thumb keys shifted +across one position in the direction of thumb extension. To select this +mapping, append ~MIRYOKU_MAPPING=EXTENDED_THUMBS~ to the ~make~ command line +when building. + +[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-ortho_5x15-extended_thumbs.png]] + +Keyboards supporting this layout: atomic, geminate60, idobo, punk75, xd75, 40percentclub/5x5, 40percentclub/i75, cannonkeys/ortho75, sendyyeah/75pixels. + +Example build command lines: + +#+BEGIN_SRC sh :tangle no +make atomic:manna-harbour_miryoku:flash # atomic +make atomic:manna-harbour_miryoku:flash MIRYOKU_MAPPING=EXTENDED_THUMBS # atomic, extended thumbs +make idobo:manna-harbour_miryoku:flash # idobo +#+END_SRC + + +***** [[../../layouts/community/ortho_5x15/manna-harbour_miryoku/config.h][layouts/community/ortho_5x15/manna-harbour_miryoku/config.h]] + +Contains subset mapping. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../layouts/community/ortho_5x15/manna-harbour_miryoku/config.h +// <<header>> + +<<license-qmk>> + +#pragma once + +#define XXX KC_NO + +#if defined MIRYOKU_MAPPING_EXTENDED_THUMBS +#define LAYOUT_miryoku(\ +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,\ +N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +LAYOUT_ortho_5x15(\ +XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,\ +K00, K01, K02, K03, K04, XXX, XXX, XXX, XXX, XXX, K05, K06, K07, K08, K09,\ +K10, K11, K12, K13, K14, XXX, XXX, XXX, XXX, XXX, K15, K16, K17, K18, K19,\ +K20, K21, K22, K23, K24, XXX, XXX, XXX, XXX, XXX, K25, K26, K27, K28, K29,\ +XXX, XXX, XXX, K32, K33, K34, XXX, XXX, XXX, K35, K36, K37, XXX, XXX, XXX\ +) +#else +#define LAYOUT_miryoku(\ +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,\ +N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +LAYOUT_ortho_5x15(\ +XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,\ +K00, K01, K02, K03, K04, XXX, XXX, XXX, XXX, XXX, K05, K06, K07, K08, K09,\ +K10, K11, K12, K13, K14, XXX, XXX, XXX, XXX, XXX, K15, K16, K17, K18, K19,\ +K20, K21, K22, K23, K24, XXX, XXX, XXX, XXX, XXX, K25, K26, K27, K28, K29,\ +XXX, XXX, K32, K33, K34, XXX, XXX, XXX, XXX, XXX, K35, K36, K37, XXX, XXX\ +) +#endif +#+END_SRC + +#+RESULTS: + + +***** [[../../layouts/community/ortho_5x15/manna-harbour_miryoku/keymap.c][layouts/community/ortho_5x15/manna-harbour_miryoku/keymap.c]] + +Required by the build system. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../layouts/community/ortho_5x15/manna-harbour_miryoku/keymap.c +// <<header>> + +<<license-qmk>> +#+END_SRC + + +**** planck_mit + +The middle two columns including the middle 2u key, and the 2 keys on each end +of the bottom row are unused. + +Keyboards supporting this layout: bm40hsrgb, contra, efreet, jj40, latin47ble, mt40, niu_mini, quark, zlant, dm9records/plaid, evyd13/eon40, handwired/aranck, handwired/heisenberg, kbdfans/kbd4x, planck/ez, planck/light, planck/rev1, planck/rev2, planck/rev3, planck/rev4, planck/rev5, planck/rev6, planck/thk, spaceman/pancake/feather, spaceman/pancake/promicro. + +Example build command lines: + +#+BEGIN_SRC sh :tangle no +make planck/ez:manna-harbour_miryoku:flash # planck ez +make planck/rev6:manna-harbour_miryoku:flash FORCE_LAYOUT=planck_mit # planck rev6, mit + +#+END_SRC + +***** [[../../layouts/community/planck_mit/manna-harbour_miryoku/config.h][layouts/community/planck_mit/manna-harbour_miryoku/config.h]] + +Contains subset mapping. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../layouts/community/planck_mit/manna-harbour_miryoku/config.h +// <<header>> + +<<license-qmk>> + +#pragma once + +#define LAYOUT_miryoku(\ +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,\ +N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +LAYOUT_planck_mit(\ +K00, K01, K02, K03, K04, KC_NO, KC_NO, K05, K06, K07, K08, K09,\ +K10, K11, K12, K13, K14, KC_NO, KC_NO, K15, K16, K17, K18, K19,\ +K20, K21, K22, K23, K24, KC_NO, KC_NO, K25, K26, K27, K28, K29,\ +KC_NO, KC_NO, K32, K33, K34, KC_NO, K35, K36, K37, KC_NO, KC_NO\ +) +#+END_SRC + + +***** [[../../layouts/community/planck_mit/manna-harbour_miryoku/keymap.c][layouts/community/planck_mit/manna-harbour_miryoku/keymap.c]] + +Required by the build system. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../layouts/community/planck_mit/manna-harbour_miryoku/keymap.c +// <<header>> + +<<license-qmk>> +#+END_SRC + + +**** split_3x5_3 + +Keyboards supporting this layout: arch_36, boardsource/microdox, centromere, crkbd, eek, miniaxe, minidox/rev1, pteron36, squiggle/rev1, suihankey/split/rev1. + +Example build command lines: + +#+BEGIN_SRC sh :tangle no +make crkbd:manna-harbour_miryoku:flash # crkbd +make minidox:manna-harbour_miryoku:flash # minidox +#+END_SRC + + +***** [[../../layouts/community/split_3x5_3/manna-harbour_miryoku/config.h][layouts/community/split_3x5_3/manna-harbour_miryoku/config.h]] + +Contains subset mapping. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../layouts/community/split_3x5_3/manna-harbour_miryoku/config.h +// <<header>> + +<<license-qmk>> + +#pragma once + +#define LAYOUT_miryoku(\ +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,\ +N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +LAYOUT_split_3x5_3(\ +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,\ + K32, K33, K34, K35, K36, K37\ +) +#+END_SRC + + +***** [[../../layouts/community/split_3x5_3/manna-harbour_miryoku/keymap.c][layouts/community/split_3x5_3/manna-harbour_miryoku/keymap.c]] + +Required by the build system. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../layouts/community/split_3x5_3/manna-harbour_miryoku/keymap.c +// <<header>> + +<<license-qmk>> +#+END_SRC + + +**** split_3x6_3 + +The outer columns are unused. + +Keyboards supporting this layout: centromere, crkbd, bastardkb/tbkmini. + +Example build command lines: + +#+BEGIN_SRC sh :tangle no +make bastardkb/tbkmini:manna-harbour_miryoku:flash # bastardkb/tbkmini +make crkbd:manna-harbour_miryoku:flash # crkbd +#+END_SRC + + +***** [[../../layouts/community/split_3x6_3/manna-harbour_miryoku/config.h][layouts/community/split_3x6_3/manna-harbour_miryoku/config.h]] + +Contains subset mapping. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../layouts/community/split_3x6_3/manna-harbour_miryoku/config.h +// <<header>> + +<<license-qmk>> + +#pragma once + +#define LAYOUT_miryoku(\ + 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,\ + N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +LAYOUT_split_3x6_3(\ +KC_NO, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, KC_NO,\ +KC_NO, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, KC_NO,\ +KC_NO, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, KC_NO,\ + K32, K33, K34, K35, K36, K37\ +) +#+END_SRC + + +***** [[../../layouts/community/split_3x6_3/manna-harbour_miryoku/keymap.c][layouts/community/split_3x6_3/manna-harbour_miryoku/keymap.c]] + +Required by the build system. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../layouts/community/split_3x6_3/manna-harbour_miryoku/keymap.c +// <<header>> + +<<license-qmk>> +#+END_SRC + + +*** Keyboards + +To use the keymap on a keyboard which does not support the layouts feature, +~LAYOUT_miryoku~ is defined as a macro mapping onto the keyboard's own ~LAYOUT~ +macro, leaving the unused keys as ~KC_NO~. + + +**** atreus + +Only the main 5x3 alphas and the inner 3 thumb keys are used. + +To build for this keyboard, + +#+BEGIN_SRC sh :tangle no +make atreus:manna-harbour_miryoku:flash +#+END_SRC + + +***** [[../../keyboards/atreus/keymaps/manna-harbour_miryoku/config.h][keyboards/atreus/keymaps/manna-harbour_miryoku/config.h]] + +Contains subset mapping. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/atreus/keymaps/manna-harbour_miryoku/config.h +// <<header>> + +<<license-qmk>> + +#pragma once + +#define XXX KC_NO + +#define LAYOUT_miryoku(\ +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,\ +N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +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,\ +XXX, XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX, XXX\ +) +#+END_SRC + + +***** [[../../keyboards/atreus/keymaps/manna-harbour_miryoku/keymap.c][keyboards/atreus/keymaps/manna-harbour_miryoku/keymap.c]] + +Required by the build system. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/atreus/keymaps/manna-harbour_miryoku/keymap.c +// <<header>> + +<<license-qmk>> +#+END_SRC + + +**** bastardkb/scylla + +To build for this keyboard, + +#+BEGIN_SRC sh :tangle no +make bastardkb/scylla:manna-harbour_miryoku:flash +#+END_SRC + + +***** [[../../keyboards/bastardkb/scylla/keymaps/manna-harbour_miryoku/config.h][keyboards/bastardkb/scylla/keymaps/manna-harbour_miryoku/config.h]] + +Contains subset mapping. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/bastardkb/scylla/keymaps/manna-harbour_miryoku/config.h +// <<header>> + +<<license-qmk>> + +#pragma once + +#define XXX KC_NO + +#define LAYOUT_miryoku( \ + 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, \ + N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ +) \ +LAYOUT_split_4x6_5( \ +XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, \ +XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX, \ +XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX, \ +XXX, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, XXX, \ + K32, K33, K34, K35, K36, K37, \ + XXX, XXX, XXX, XXX \ +) +#+END_SRC + + +***** [[../../keyboards/bastardkb/scylla/keymaps/manna-harbour_miryoku/keymap.c][keyboards/bastardkb/scylla/keymaps/manna-harbour_miryoku/keymap.c]] + +Required by the build system. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/bastardkb/scylla/keymaps/manna-harbour_miryoku/keymap.c +// <<header>> + +<<license-qmk>> +#+END_SRC + + +**** ergotravel + +To build for this keyboard, + +#+BEGIN_SRC sh :tangle no +make ergotravel:manna-harbour_miryoku:flash +#+END_SRC + + +***** [[../../keyboards/ergotravel/keymaps/manna-harbour_miryoku/config.h][keyboards/ergotravel/keymaps/manna-harbour_miryoku/config.h]] + +Contains subset mapping. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/ergotravel/keymaps/manna-harbour_miryoku/config.h +// <<header>> + +<<license-qmk>> + +#pragma once + +#define XXX KC_NO + +#define LAYOUT_miryoku( \ + 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, \ + N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ +) \ +LAYOUT( \ +XXX, K00, K01, K02, K03, K04, XXX, XXX, K05, K06, K07, K08, K09, XXX, \ +XXX, K10, K11, K12, K13, K14, XXX, XXX, K15, K16, K17, K18, K19, XXX, \ +XXX, K20, K21, K22, K23, K24, XXX, XXX, K25, K26, K27, K28, K29, XXX, \ +XXX, XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX, XXX \ +) +#+END_SRC + + +***** [[../../keyboards/ergotravel/keymaps/manna-harbour_miryoku/keymap.c][keyboards/ergotravel/keymaps/manna-harbour_miryoku/keymap.c]] + +Required by the build system. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/ergotravel/keymaps/manna-harbour_miryoku/keymap.c +// <<header>> + +<<license-qmk>> +#+END_SRC + + +**** for_science + +The top row is unused. + +To build for this keyboard, + +#+BEGIN_SRC sh :tangle no +make for_science:manna-harbour_miryoku:flash +#+END_SRC + + +***** [[../../keyboards/for_science/keymaps/manna-harbour_miryoku/config.h][keyboards/for_science/keymaps/manna-harbour_miryoku/config.h]] + +Contains subset mapping. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/for_science/keymaps/manna-harbour_miryoku/config.h +// <<header>> + +<<license-qmk>> + +#pragma once + +#define XXX KC_NO + +#define LAYOUT_miryoku(\ +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,\ +N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +LAYOUT(\ +XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,\ +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,\ + K32, K33, K34, K35, K36, K37\ +) +#+END_SRC + + +***** [[../../keyboards/for_science/keymaps/manna-harbour_miryoku/keymap.c][keyboards/for_science/keymaps/manna-harbour_miryoku/keymap.c]] + +Required by the build system. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/for_science/keymaps/manna-harbour_miryoku/keymap.c +// <<header>> + +<<license-qmk>> +#+END_SRC + + +**** gergo + +Only the main 5x3 alphas and the outer 3 thumb keys are used. + +To build for this keyboard, + +#+BEGIN_SRC sh :tangle no +make gergo:manna-harbour_miryoku:flash +#+END_SRC + + +***** [[../../keyboards/gergo/keymaps/manna-harbour_miryoku/config.h][keyboards/gergo/keymaps/manna-harbour_miryoku/config.h]] + +Contains subset mapping. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/gergo/keymaps/manna-harbour_miryoku/config.h +// <<header>> + +<<license-qmk>> + +#pragma once + +#define XXX KC_NO + +#define LAYOUT_miryoku(\ + 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,\ + N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +LAYOUT_gergo(\ +XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX,\ +XXX, K10, K11, K12, K13, K14, XXX, XXX, K15, K16, K17, K18, K19, XXX,\ +XXX, K20, K21, K22, K23, K24, XXX, XXX, XXX, XXX, K25, K26, K27, K28, K29, XXX,\ + K32, K33, K34, XXX, XXX, K35, K36, K37\ +) +#+END_SRC + + +***** [[../../keyboards/gergo/keymaps/manna-harbour_miryoku/keymap.c][keyboards/gergo/keymaps/manna-harbour_miryoku/keymap.c]] + +Required by the build system. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/gergo/keymaps/manna-harbour_miryoku/keymap.c +// <<header>> + +<<license-qmk>> +#+END_SRC + + +**** handwired/dactyl_manuform/4x5 + +Only the main 5x3 alphas and the main 3 thumb keys are used. + +To build for this keyboard, + +#+BEGIN_SRC sh :tangle no +make handwired/dactyl_manuform/4x5:manna-harbour_miryoku:flash +#+END_SRC + + +***** [[../../keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/config.h][keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/config.h]] + +Contains subset mapping. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/config.h +// <<header>> + +<<license-qmk>> + +#pragma once + +#define XXX KC_NO + +#define LAYOUT_miryoku(\ +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,\ +N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +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,\ + XXX, XXX, XXX, XXX, \ + K32, K33, K36, K37, \ + K34, XXX, XXX, K35, \ + XXX, XXX, XXX, XXX \ +) +#+END_SRC + + +***** [[../../keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/keymap.c][keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/keymap.c]] + +Required by the build system. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/keymap.c +// <<header>> + +<<license-qmk>> +#+END_SRC + + +**** handwired/dactyl_manuform/5x6 + +Only the main 5x3 alphas and the main 3 thumb keys are used. + +To build for this keyboard, + +#+BEGIN_SRC sh :tangle no +make handwired/dactyl_manuform/5x6:manna-harbour_miryoku:flash +#+END_SRC + + +***** [[../../keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/config.h][keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/config.h]] + +Contains subset mapping. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/config.h +// <<header>> + +<<license-qmk>> + +#pragma once + +#define XXX KC_NO + +#define LAYOUT_miryoku(\ + 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, \ + N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ +) \ +LAYOUT_5x6( \ +XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, \ +XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX, \ +XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX, \ +XXX, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, XXX, \ + XXX, XXX, XXX, XXX, \ + K32, K33, K36, K37, \ + K34, XXX, XXX, K35, \ + XXX, XXX, XXX, XXX \ +) +#+END_SRC + + +***** [[../../keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/keymap.c][keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/keymap.c]] + +Required by the build system. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/keymap.c +// <<header>> + +<<license-qmk>> +#+END_SRC + + +**** keebio/iris + +Only the main 5x3 alphas and the bottom 3 thumb keys are used. + +To build for this keyboard, + +#+BEGIN_SRC sh :tangle no +make keebio/iris/rev4:manna-harbour_miryoku:flash +#+END_SRC + + +***** [[../../keyboards/keebio/iris/keymaps/manna-harbour_miryoku/config.h][keyboards/keebio/iris/keymaps/manna-harbour_miryoku/config.h]] + +Contains subset mapping. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/keebio/iris/keymaps/manna-harbour_miryoku/config.h +// <<header>> + +<<license-qmk>> + +#pragma once + +#define XXX KC_NO + +#define LAYOUT_miryoku(\ + 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,\ + N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +LAYOUT(\ +XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,\ +XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX,\ +XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX,\ +XXX, K20, K21, K22, K23, K24, XXX, XXX, K25, K26, K27, K28, K29, XXX,\ + K32, K33, K34, K35, K36, K37\ +) +#+END_SRC + + +***** [[../../keyboards/keebio/iris/keymaps/manna-harbour_miryoku/keymap.c][keyboards/keebio/iris/keymaps/manna-harbour_miryoku/keymap.c]] + +Required by the build system. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/keebio/iris/keymaps/manna-harbour_miryoku/keymap.c +// <<header>> + +<<license-qmk>> +#+END_SRC + + +**** keyboardio/atreus + +Only the main 5x3 alphas and the inner 3 thumb keys are used. + +To build for this keyboard, + +#+BEGIN_SRC sh :tangle no +make keyboardio/atreus:manna-harbour_miryoku:flash +#+END_SRC + + +***** [[../../keyboards/keyboardio/atreus/keymaps/manna-harbour_miryoku/config.h][keyboards/keyboardio/atreus/keymaps/manna-harbour_miryoku/config.h]] + +Contains subset mapping. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/keyboardio/atreus/keymaps/manna-harbour_miryoku/config.h +// <<header>> + +<<license-qmk>> + +#pragma once + +#define XXX KC_NO + +#define LAYOUT_miryoku( \ +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, \ +N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ +) \ +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, XXX, XXX, K25, K26, K27, K28, K29, \ +XXX, XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX, XXX \ +) +#+END_SRC + + +***** [[../../keyboards/keyboardio/atreus/keymaps/manna-harbour_miryoku/keymap.c][keyboards/keyboardio/atreus/keymaps/manna-harbour_miryoku/keymap.c]] + +Required by the build system. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/keyboardio/atreus/keymaps/manna-harbour_miryoku/keymap.c +// <<header>> + +<<license-qmk>> +#+END_SRC + + +**** lily58 + +Only the main 5x3 alphas and the inner 3 thumb keys are used. + +To build for this keyboard, + +#+BEGIN_SRC sh :tangle no +make lily58:manna-harbour_miryoku:flash +#+END_SRC + + +***** [[../../keyboards/lily58/keymaps/manna-harbour_miryoku/config.h][keyboards/lily58/keymaps/manna-harbour_miryoku/config.h]] + +Contains subset mapping. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/lily58/keymaps/manna-harbour_miryoku/config.h +// <<header>> + +<<license-qmk>> + +#pragma once + +#define XXX KC_NO + +#define LAYOUT_miryoku(\ + 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,\ + N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +LAYOUT(\ +XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,\ +XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX,\ +XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX,\ +XXX, K20, K21, K22, K23, K24, XXX, XXX, K25, K26, K27, K28, K29, XXX,\ + XXX, K32, K33, K34, K35, K36, K37, XXX\ +) +#+END_SRC + + +***** [[../../keyboards/lily58/keymaps/manna-harbour_miryoku/keymap.c][keyboards/lily58/keymaps/manna-harbour_miryoku/keymap.c]] + +Required by the build system. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/lily58/keymaps/manna-harbour_miryoku/keymap.c +// <<header>> + +<<license-qmk>> +#+END_SRC + + +**** moonlander + +The main 5x3 alphas are used as usual. The primary, secondary, and tertiary +thumb keys are the closest piano key, middle piano key, and the innermost key of +the partial bottom row, respectively. The remaining keys are unused. + +To build for this keyboard, + +#+BEGIN_SRC sh :tangle no +make moonlander:manna-harbour_miryoku:flash +#+END_SRC + + +***** [[../../keyboards/moonlander/keymaps/manna-harbour_miryoku/config.h][keyboards/moonlander/keymaps/manna-harbour_miryoku/config.h]] + +Contains subset mapping. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/moonlander/keymaps/manna-harbour_miryoku/config.h +// <<header>> + +<<license-qmk>> + +#pragma once + +#define XXX KC_NO + +#define LAYOUT_miryoku(\ + 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,\ + N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +LAYOUT_moonlander(\ +XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,\ +XXX, K00, K01, K02, K03, K04, XXX, XXX, K05, K06, K07, K08, K09, XXX,\ +XXX, K10, K11, K12, K13, K14, XXX, XXX, K15, K16, K17, K18, K19, XXX,\ +XXX, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, XXX,\ +XXX, XXX, XXX, XXX, K32, XXX, XXX, K37, XXX, XXX, XXX, XXX,\ + K33, K34, XXX, XXX, K35, K36\ +) +#+END_SRC + + +***** [[../../keyboards/moonlander/keymaps/manna-harbour_miryoku/keymap.c][keyboards/moonlander/keymaps/manna-harbour_miryoku/keymap.c]] + +Required by the build system. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/moonlander/keymaps/manna-harbour_miryoku/keymap.c +// <<header>> + +<<license-qmk>> +#+END_SRC + + +**** redox_w + +Only the main 5x3 alphas and the main 3 thumb keys are used. + +To build for this keyboard, + +#+BEGIN_SRC sh :tangle no +make redox_w:manna-harbour_miryoku:flash +#+END_SRC + + +***** [[../../keyboards/redox_w/keymaps/manna-harbour_miryoku/config.h][keyboards/redox_w/keymaps/manna-harbour_miryoku/config.h]] + +Contains subset mapping. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/redox_w/keymaps/manna-harbour_miryoku/config.h +// <<header>> + +<<license-qmk>> + +#pragma once + +#define XXX KC_NO + +#define LAYOUT_miryoku(\ + 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,\ + N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +LAYOUT(\ +XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,\ +XXX, K00, K01, K02, K03, K04, XXX, XXX, K05, K06, K07, K08, K09, XXX,\ +XXX, K10, K11, K12, K13, K14, XXX, XXX, K15, K16, K17, K18, K19, XXX,\ +XXX, K20, K21, K22, K23, K24, XXX, XXX, XXX, XXX, K25, K26, K27, K28, K29, XXX,\ +XXX, XXX, XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX, XXX, XXX\ +) +#+END_SRC + +#+RESULTS: + + +***** [[../../keyboards/redox_w/keymaps/manna-harbour_miryoku/keymap.c][keyboards/redox_w/keymaps/manna-harbour_miryoku/keymap.c]] + +Required by the build system. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/redox_w/keymaps/manna-harbour_miryoku/keymap.c +// <<header>> + +<<license-qmk>> +#+END_SRC + + +**** sofle + +To build for this keyboard, + +#+BEGIN_SRC sh :tangle no +make sofle:manna-harbour_miryoku:flash +#+END_SRC + + +***** [[../../keyboards/sofle/keymaps/manna-harbour_miryoku/config.h][keyboards/sofle/keymaps/manna-harbour_miryoku/config.h]] + +Contains subset mapping. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/sofle/keymaps/manna-harbour_miryoku/config.h +// <<header>> + +<<license-qmk>> + +#pragma once + +#define XXX KC_NO + +#define LAYOUT_miryoku(\ + 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,\ + N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ +)\ +LAYOUT(\ +XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,\ +XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX,\ +XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX,\ +XXX, K20, K21, K22, K23, K24, XXX, XXX, K25, K26, K27, K28, K29, XXX,\ + XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX\ +) +#+END_SRC + + +***** [[../../keyboards/sofle/keymaps/manna-harbour_miryoku/keymap.c][keyboards/sofle/keymaps/manna-harbour_miryoku/keymap.c]] + +Required by the build system. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/sofle/keymaps/manna-harbour_miryoku/keymap.c +// <<header>> + +<<license-qmk>> +#+END_SRC + + +**** splitkb/kyria + +Only the main 5x3 alphas and the middle 3 lower thumb keys are used. + +[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-kyria.png]] + +An alternative subset mapping is also provided with the thumb keys shifted one +position in the direction of thumb extension. To select this mapping, append +~MIRYOKU_MAPPING=EXTENDED_THUMBS~ to the ~make~ command line when building. + +[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-kyria-extended_thumbs.png]] + + +To build for this keyboard, + +#+BEGIN_SRC sh :tangle no +make splitkb/kyria:manna-harbour_miryoku:flash +make splitkb/kyria:manna-harbour_miryoku:flash MIRYOKU_MAPPING=EXTENDED_THUMBS # extended thumb position +#+END_SRC + + +***** [[../../keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/config.h][keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/config.h]] + +Contains subset mapping. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/config.h +// <<header>> + +<<license-qmk>> + +#pragma once + +#define XXX KC_NO + +#if defined MIRYOKU_MAPPING_EXTENDED_THUMBS +#define LAYOUT_miryoku( \ + 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, \ + N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ +) \ +LAYOUT( \ +XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX, \ +XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX, \ +XXX, K20, K21, K22, K23, K24, XXX, XXX, XXX, XXX, K25, K26, K27, K28, K29, XXX, \ + XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX \ +) +#else +#define LAYOUT_miryoku( \ + 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, \ + N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ +) \ +LAYOUT( \ +XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX, \ +XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX, \ +XXX, K20, K21, K22, K23, K24, XXX, XXX, XXX, XXX, K25, K26, K27, K28, K29, XXX, \ + XXX, K32, K33, K34, XXX, XXX, K35, K36, K37, XXX \ +) +#endif +#+END_SRC + + +***** [[../../keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/keymap.c][keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/keymap.c]] + +Required by the build system. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/keymap.c +// <<header>> + +<<license-qmk>> +#+END_SRC + + +**** torn + +To build for this keyboard, + +#+BEGIN_SRC sh :tangle no +make torn:manna-harbour_miryoku:flash +#+END_SRC + + +***** [[../../keyboards/torn/keymaps/manna-harbour_miryoku/config.h][keyboards/torn/keymaps/manna-harbour_miryoku/config.h]] + +Contains subset mapping. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/torn/keymaps/manna-harbour_miryoku/config.h +// <<header>> + +<<license-qmk>> + +#pragma once + +#define LAYOUT_miryoku( \ + 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, \ + N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ +) \ +LAYOUT_split_3x6_4( \ +KC_NO, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, KC_NO, \ +KC_NO, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, KC_NO, \ +KC_NO, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, KC_NO, \ + KC_NO, K32, K33, K34, K35, K36, K37, KC_NO \ +) +#+END_SRC + +#+RESULTS: + + +***** [[../../keyboards/torn/keymaps/manna-harbour_miryoku/keymap.c][keyboards/torn/keymaps/manna-harbour_miryoku/keymap.c]] + +Required by the build system. + +#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/torn/keymaps/manna-harbour_miryoku/keymap.c +// <<header>> + +<<license-qmk>> +#+END_SRC + + +*** Customisation + +To add customisations to a keyboard or layout while importing the miryoku +keymap, copy ~config.h~ and ~keymap.c~ from the keyboard or layout's +~manna-harbour_miryoku/~ directory to a new directory, and create ~rules.mk~ +containing ~USER_NAME := manna-harbour_miryoku~. The miryoku keymap will be +imported and customisations can be added to those files as usual. Keycodes can +be added to unused keys by editing ~LAYOUT_miryoku~ in ~config.h~. + +For an unsupported keyboard or layout, do as above with a similar keyboard or +layout and modify ~LAYOUT_miryoku~ in ~config.h~ referring to the keyboard or +layout's ~LAYOUT~ macro. + + +**** Examples + +To use any of the examples, create a new branch from the miryoku development +branch and follow the same steps as seen in the commit messages and code changes +in the examples, making the appropriate changes for your keyboard and desired +customisations. + + +***** Add Layers + +- https://github.com/manna-harbour/qmk_firmware/commits/miryoku-examples-add-layers/keyboards/crkbd/keymaps/miryoku-examples-add-layers + + +** Experimental Features + + +*** Bilateral Combinations + +- [[https://github.com/manna-harbour/qmk_firmware/issues/29][Bilateral Combinations]] + + +*** Retro Shift + +- [[https://github.com/manna-harbour/qmk_firmware/issues/33][Retro Shift]] + + +** Documentation + + +*** QMK + +- https://docs.qmk.fm/ +- https://docs.qmk.fm/#/config_options +- https://docs.qmk.fm/#/feature_advanced_keycodes +- https://docs.qmk.fm/#/feature_auto_shift +- https://docs.qmk.fm/#/feature_layers +- https://docs.qmk.fm/#/feature_layouts +- https://docs.qmk.fm/#/feature_mouse_keys +- https://docs.qmk.fm/#/feature_userspace +- https://docs.qmk.fm/#/getting_started_introduction +- https://docs.qmk.fm/#/getting_started_make_guide +- https://docs.qmk.fm/#/keycodes +- https://docs.qmk.fm/#/mod_tap +- https://docs.qmk.fm/#/tap_hold + + +*** Org Mode + +- https://orgmode.org/ +- https://orgmode.org/manual/Tables.html +- https://orgmode.org/manual/Working-with-Source-Code.html + + +** + +[[https://github.com/manna-harbour][https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/logos/manna-harbour-boa-32.png]] diff --git a/users/manna-harbour_miryoku/rules.mk b/users/manna-harbour_miryoku/rules.mk index ca135af07aee..085f0b501995 100644 --- a/users/manna-harbour_miryoku/rules.mk +++ b/users/manna-harbour_miryoku/rules.mk @@ -1,16 +1,36 @@ -# generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*- +# Copyright 2019 Manna Harbour +# https://github.com/manna-harbour/miryoku +# generated -*- buffer-read-only: t -*- MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control +AUTO_SHIFT_ENABLE = yes # Auto Shift SRC += manna-harbour_miryoku.c # keymap -# select alternative base layer alphas +# alternative layouts: + +# alphas ifneq ($(strip $(MIRYOKU_ALPHAS)),) OPT_DEFS += -DMIRYOKU_ALPHAS_$(MIRYOKU_ALPHAS) endif -# select alternative subset mappings +# nav +ifneq ($(strip $(MIRYOKU_NAV)),) + OPT_DEFS += -DMIRYOKU_NAV_$(MIRYOKU_NAV) +endif + +# clipboard +ifneq ($(strip $(MIRYOKU_CLIPBOARD)),) + OPT_DEFS += -DMIRYOKU_CLIPBOARD_$(MIRYOKU_CLIPBOARD) +endif + +# layers +ifneq ($(strip $(MIRYOKU_LAYERS)),) + OPT_DEFS += -DMIRYOKU_LAYERS_$(MIRYOKU_LAYERS) +endif + +# subset mappings ifneq ($(strip $(MIRYOKU_MAPPING)),) OPT_DEFS += -DMIRYOKU_MAPPING_$(MIRYOKU_MAPPING) endif diff --git a/users/mechmerlin/changelog.md b/users/mechmerlin/changelog.md index 2f8fa687a90d..733c65a97938 100644 --- a/users/mechmerlin/changelog.md +++ b/users/mechmerlin/changelog.md @@ -1,6 +1,19 @@ # Changelog All notable changes to my userspace will be documented in this file. +## [0.4.1] - 2021-10-30 + +### Added +- `RGB_DISABLE_WHEN_USB_SUSPENDED` added in `config.h`. Couple of my boards now have per key RGB and have been staying on when my computer sleeps. +## [0.4.0] - 2021-10-05 + +### Added +- Introduced new keycode KV_VER to output the version of QMK. Thanks to drashna for this. + +### Changed +- Updated keymaps to use underscores instead of KC_TRNS as it was getting hard to read for my tired eyes. +- Updated readmes on my preferred layouts. + ## [0.3.0] - 2020-02-02 ### Changed - Added the `_CL` layer to all the boards for access to `EEP_RST` and `RESET` keycodes. This was done primarily to avoid triggering `RESET` accidentally. diff --git a/users/mechmerlin/config.h b/users/mechmerlin/config.h index 698e237b01f3..459c181673f7 100644 --- a/users/mechmerlin/config.h +++ b/users/mechmerlin/config.h @@ -5,6 +5,10 @@ #define RGBLIGHT_ANIMATIONS #endif // RGBLIGHT_ENABLE +#ifdef RGB_MATRIX_ENABLE + #define RGB_DISABLE_WHEN_USB_SUSPENDED +#endif + #ifdef AUDIO_CLICKY #define AUDIO_CLICKY_ON #define AUDIO_CLICKY_FREQ_DEFAULT 261.63f diff --git a/users/mechmerlin/mechmerlin.c b/users/mechmerlin/mechmerlin.c index ad60bd196669..23def968d449 100644 --- a/users/mechmerlin/mechmerlin.c +++ b/users/mechmerlin/mechmerlin.c @@ -1,4 +1,7 @@ #include "mechmerlin.h" +#include "version.h" + +#define TAP_CODE_DELAY 10 bool process_record_user(uint16_t keycode, keyrecord_t *record) { static uint16_t fnx_layer_timer; @@ -15,9 +18,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } } break; - case KC_MAC: + case KC_VER: if (record->event.pressed) { - SEND_STRING("meow"); + send_string_with_delay_P(PSTR(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE), TAP_CODE_DELAY); } else { } break; diff --git a/users/mechmerlin/mechmerlin.h b/users/mechmerlin/mechmerlin.h index 9802c3ecd27a..79386e76636d 100644 --- a/users/mechmerlin/mechmerlin.h +++ b/users/mechmerlin/mechmerlin.h @@ -12,7 +12,7 @@ enum userspace_layers { // Enum of custom keycodes defined in process_record_user enum keycodes { KC_FNX, // Hold for FN layer, tap to toggle ARROWS layer. - KC_MAC, // Text macro. + KC_VER, // Version macro. }; // Custom #defined keycodes diff --git a/users/mechmerlin/readme.md b/users/mechmerlin/readme.md index 14a86f055bb9..1070953111fa 100644 --- a/users/mechmerlin/readme.md +++ b/users/mechmerlin/readme.md @@ -1,4 +1,4 @@ -# MechMerlin's Userspace v0.2.0 +# MechMerlin's Userspace v0.4.0 This is a collection of my most commonly used QMK features. @@ -32,12 +32,16 @@ It is used primarily on my `LAYOUT_60_ansi` boards as my regular toggle (the 1u This is just a wrapper for `CTL_T(KC_CAPS)`. This is a hold for control and tap for caps lock. +### KC_VER + +Output the version of QMK Firmware on device. + ## QMK Features ---- -### RGBLIGHT_SLEEP +### RGBLIGHT_SLEEP and RGB_DISABLE_WHEN_USB_SUSPENDED -Ensures that when my computer is in sleep mode, the keyboard underglow lights will also be off. +Ensures that when my computer is in sleep mode, the keyboard underglow and inswitch RGB lights will also be off. ### Audio Clicky diff --git a/users/miles2go/keymaps/handwired/ms_sculpt_mobile/rules.mk b/users/miles2go/keymaps/handwired/ms_sculpt_mobile/rules.mk index 7eb39e108236..41273a9a620d 100644 --- a/users/miles2go/keymaps/handwired/ms_sculpt_mobile/rules.mk +++ b/users/miles2go/keymaps/handwired/ms_sculpt_mobile/rules.mk @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +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 diff --git a/users/mnil/mnil.c b/users/mnil/mnil.c index 11d5ee28dfa2..d5bd0ef0bb4c 100644 --- a/users/mnil/mnil.c +++ b/users/mnil/mnil.c @@ -86,7 +86,7 @@ void ae_finished(qk_tap_dance_state_t *state, void *user_data) { register_code(KC_A); break; case SINGLE_HOLD: - tap_code(SE_AE); + tap_code(SE_ADIA); break; case DOUBLE_SINGLE_TAP: tap_code(KC_A); @@ -113,15 +113,15 @@ void aa_finished(qk_tap_dance_state_t *state, void *user_data) { aa_tap_state.state = cur_dance(state); switch (aa_tap_state.state) { case SINGLE_TAP: - register_code(SE_OSLH); + register_code(SE_ODIA); break; case SINGLE_HOLD: - register_code(SE_AA); - unregister_code(SE_AA); + register_code(SE_ARNG); + unregister_code(SE_ARNG); break; case DOUBLE_SINGLE_TAP: - tap_code(SE_OSLH); - register_code(SE_OSLH); + tap_code(SE_ODIA); + register_code(SE_ODIA); break; } } @@ -129,10 +129,10 @@ void aa_finished(qk_tap_dance_state_t *state, void *user_data) { void aa_reset(qk_tap_dance_state_t *state, void *user_data) { switch (aa_tap_state.state) { case SINGLE_TAP: - unregister_code(SE_OSLH); + unregister_code(SE_ODIA); break; case DOUBLE_SINGLE_TAP: - unregister_code(SE_OSLH); + unregister_code(SE_ODIA); break; } aa_tap_state.state = 0; diff --git a/users/moults31/gdb.c b/users/moults31/gdb.c new file mode 100644 index 000000000000..42f5513eca1d --- /dev/null +++ b/users/moults31/gdb.c @@ -0,0 +1,59 @@ +/* Copyright 2021 moults31 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "gdb.h" + +bool process_record_gdb(uint16_t keycode, keyrecord_t *record) { + bool rv = true; + switch (keycode) { + case M_GDB_PLAY: + if (record->event.pressed) { + SEND_STRING(SS_TAP(X_F5)); + } + break; + case M_GDB_PAUSE: + if (record->event.pressed) { + SEND_STRING(SS_TAP(X_F6)); + } + break; + case M_GDB_STEPOVER: + if (record->event.pressed) { + SEND_STRING(SS_TAP(X_F10)); + } + break; + case M_GDB_STEPIN: + if (record->event.pressed) { + SEND_STRING(SS_TAP(X_F11)); + } + break; + case M_GDB_STEPOUT: + if (record->event.pressed) { + SEND_STRING(SS_LSFT(SS_TAP(X_F11))); + } + break; + case M_GDB_RESTART: + if (record->event.pressed) { + SEND_STRING(SS_LCTRL(SS_LSFT(SS_TAP(X_F5)))); + } + break; + case M_GDB_STOP: + if (record->event.pressed) { + SEND_STRING(SS_LSFT(SS_TAP(X_F5))); + } + break; + } + + return rv; +} diff --git a/users/moults31/gdb.h b/users/moults31/gdb.h new file mode 100644 index 000000000000..385825692e0b --- /dev/null +++ b/users/moults31/gdb.h @@ -0,0 +1,21 @@ +/* Copyright 2021 moults31 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should 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 QMK_KEYBOARD_H +#include "moults31.h" + +bool process_record_gdb(uint16_t keycode, keyrecord_t *record); diff --git a/users/moults31/moults31.c b/users/moults31/moults31.c new file mode 100644 index 000000000000..0dbaed0bb07d --- /dev/null +++ b/users/moults31/moults31.c @@ -0,0 +1,114 @@ +/* Copyright 2021 moults31 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "moults31.h" + +bool moults31_tap_custom_code(uint16_t keycode) { + keyrecord_t record = { + .event = { + .pressed = 1, + }, + }; + return process_record_user(keycode, &record); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + bool rv = true; + switch (keycode) { + case M_MST_CODEBLOCK: + if (record->event.pressed) { + SEND_STRING("```"); + } + break; + + case M_VSC_TERMFOCUS: + case M_VSC_SIDEBARFOCUS: + case M_VSC_SIDEBARCLOSE: + case M_VSC_FILECLOSE: + case M_VSC_FILENXT: + case M_VSC_FILEPRV: + case M_VSC_DBGCNSLFOCUS: + case M_VSC_MVEDTRNXTGRP: + case M_VSC_MVEDTRPRVGRP: + case M_VSC_EDGRPNXT: + case M_VSC_EDGRPPRV: + case M_VSC_VIEWSIZEINC: + case M_VSC_VIEWSIZEDEC: + rv = process_record_vsc(keycode, record); + break; + + case M_GDB_PLAY: + case M_GDB_PAUSE: + case M_GDB_STEPOVER: + case M_GDB_STEPIN: + case M_GDB_STEPOUT: + case M_GDB_RESTART: + case M_GDB_STOP: + rv = process_record_gdb(keycode, record); + break; + + case M_OBS_BRB: + case M_OBS_GAME: + case M_OBS_JSTCHT: + case M_OBS_DSKT_MUTE: + case M_OBS_DSKT_UNMUTE: + case M_OBS_VOICE_MUTE: + case M_OBS_VOICE_UNMUTE: + case M_OBS_MOOSIC_MUTE: + case M_OBS_MOOSIC_UNMUTE: + rv = process_record_obs(keycode, record); + break; + } + return rv; +}; + +#ifdef ENCODER_ENABLE +__attribute__((weak)) bool encoder_update_user(uint8_t index, bool clockwise) { + const layer_state_t curr_layer = get_highest_layer(layer_state); + if (index == 1) { /* Bottom encoder */ + if(curr_layer == 2 || curr_layer == 3) { + if (clockwise) { + moults31_tap_custom_code(M_VSC_FILENXT); + } else { + moults31_tap_custom_code(M_VSC_FILEPRV); + } + } + else { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } + } + if (index == 0) { /* Top encoder */ + if(curr_layer == 2 || curr_layer == 3) { + if (clockwise) { + moults31_tap_custom_code(M_VSC_VIEWSIZEINC); + } else { + moults31_tap_custom_code(M_VSC_VIEWSIZEDEC); + } + } + else { + if (clockwise) { + tap_code(KC_MNXT); + } else { + tap_code(KC_MPRV); + } + } + } + return false; +} +#endif diff --git a/users/moults31/moults31.h b/users/moults31/moults31.h new file mode 100644 index 000000000000..60e317b78401 --- /dev/null +++ b/users/moults31/moults31.h @@ -0,0 +1,61 @@ +/* Copyright 2021 moults31 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should 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 QMK_KEYBOARD_H + +#include "vscode.h" +#include "obs.h" +#include "gdb.h" + +bool moults31_tap_custom_code(uint16_t keycode); + +enum custom_keycodes { + // VSCode keycodes + M_VSC_TERMFOCUS = SAFE_RANGE, + M_VSC_SIDEBARFOCUS, + M_VSC_SIDEBARCLOSE, + M_VSC_DBGCNSLFOCUS, + M_VSC_EDGRPNXT, + M_VSC_EDGRPPRV, + M_VSC_MVEDTRNXTGRP, + M_VSC_MVEDTRPRVGRP, + M_VSC_VIEWSIZEINC, + M_VSC_VIEWSIZEDEC, + M_VSC_FILECLOSE, + M_VSC_FILENXT, + M_VSC_FILEPRV, + // GDB keycodes (for vscode debugger) + M_GDB_PLAY, + M_GDB_PAUSE, + M_GDB_STEPOVER, + M_GDB_STEPIN, + M_GDB_STEPOUT, + M_GDB_RESTART, + M_GDB_STOP, + // MS Teams keycodes + M_MST_CODEBLOCK, + // OBS keycodes + M_OBS_BRB, + M_OBS_GAME, + M_OBS_JSTCHT, + M_OBS_DSKT_MUTE, + M_OBS_DSKT_UNMUTE, + M_OBS_VOICE_MUTE, + M_OBS_VOICE_UNMUTE, + M_OBS_MOOSIC_MUTE, + M_OBS_MOOSIC_UNMUTE, +}; diff --git a/users/moults31/obs.c b/users/moults31/obs.c new file mode 100644 index 000000000000..0ae5f3deb492 --- /dev/null +++ b/users/moults31/obs.c @@ -0,0 +1,80 @@ +/* Copyright 2021 moults31 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "obs.h" + +bool process_record_obs(uint16_t keycode, keyrecord_t *record) { + // Apply all 4 mods for custom OBS macros + register_code(KC_LSHIFT); + register_code(KC_LCTL); + register_code(KC_LALT); + register_code(KC_LGUI); + + switch (keycode) { + case M_OBS_BRB: + if (record->event.pressed) { + SEND_STRING("1"); + } + break; + case M_OBS_GAME: + if (record->event.pressed) { + SEND_STRING("2"); + } + break; + case M_OBS_JSTCHT: + if (record->event.pressed) { + SEND_STRING("3"); + } + break; + case M_OBS_DSKT_MUTE: + if (record->event.pressed) { + SEND_STRING("4"); + } + break; + case M_OBS_DSKT_UNMUTE: + if (record->event.pressed) { + SEND_STRING("5"); + } + break; + case M_OBS_VOICE_MUTE: + if (record->event.pressed) { + SEND_STRING("6"); + } + break; + case M_OBS_VOICE_UNMUTE: + if (record->event.pressed) { + SEND_STRING("7"); + } + break; + case M_OBS_MOOSIC_MUTE: + if (record->event.pressed) { + SEND_STRING("8"); + } + break; + case M_OBS_MOOSIC_UNMUTE: + if (record->event.pressed) { + SEND_STRING("9"); + } + break; + } + + // Unpress all 4 mods for custom OBS macros + unregister_code(KC_LSHIFT); + unregister_code(KC_LCTL); + unregister_code(KC_LALT); + unregister_code(KC_LGUI); + + return true; +} diff --git a/users/moults31/obs.h b/users/moults31/obs.h new file mode 100644 index 000000000000..2a2973f8029a --- /dev/null +++ b/users/moults31/obs.h @@ -0,0 +1,21 @@ +/* Copyright 2021 moults31 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should 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 QMK_KEYBOARD_H +#include "moults31.h" + +bool process_record_obs(uint16_t keycode, keyrecord_t *record); diff --git a/users/moults31/readme.md b/users/moults31/readme.md new file mode 100644 index 000000000000..3a5badbe5b7c --- /dev/null +++ b/users/moults31/readme.md @@ -0,0 +1,5 @@ +# moults31 Userspace + +## Features + +- Custom macros for VScode, OBS, GDB (Visual) diff --git a/users/moults31/rules.mk b/users/moults31/rules.mk new file mode 100644 index 000000000000..af7c11d9f8bc --- /dev/null +++ b/users/moults31/rules.mk @@ -0,0 +1,10 @@ +SRC += moults31.c + +# Custom macro sources +SRC += vscode.c +SRC += obs.c +SRC += gdb.c + +ifneq ($(PLATFORM),CHIBIOS) + LTO_ENABLE = yes # Enable link time optimization +endif diff --git a/users/moults31/vscode.c b/users/moults31/vscode.c new file mode 100644 index 000000000000..a2fcf062dcac --- /dev/null +++ b/users/moults31/vscode.c @@ -0,0 +1,90 @@ +/* Copyright 2021 moults31 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "vscode.h" + +bool process_record_vsc(uint16_t keycode, keyrecord_t *record) { + bool rv = true; + + switch (keycode) { + case M_VSC_TERMFOCUS: + if (record->event.pressed) { + SEND_STRING(SS_LCTRL("`")); + } + break; + case M_VSC_SIDEBARFOCUS: + if (record->event.pressed) { + SEND_STRING(SS_LCTRL("0")); + } + break; + case M_VSC_SIDEBARCLOSE: + if (record->event.pressed) { + SEND_STRING(SS_LCTRL("b")); + } + break; + case M_VSC_FILECLOSE: + if (record->event.pressed) { + SEND_STRING(SS_LCTRL("w")); + } + break; + case M_VSC_FILENXT: + if (record->event.pressed) { + SEND_STRING(SS_DOWN(X_LCTRL) SS_TAP(X_K) SS_TAP(X_PGDOWN) SS_UP(X_LCTRL)); + } + break; + case M_VSC_FILEPRV: + if (record->event.pressed) { + SEND_STRING(SS_DOWN(X_LCTRL) SS_TAP(X_K) SS_TAP(X_PGUP) SS_UP(X_LCTRL)); + } + break; + case M_VSC_DBGCNSLFOCUS: + if (record->event.pressed) { + SEND_STRING(SS_LCTRL(SS_LALT(SS_TAP(X_D)))); + } + break; + case M_VSC_MVEDTRNXTGRP: + if (record->event.pressed) { + SEND_STRING(SS_LCTRL(SS_LALT(SS_TAP(X_RIGHT)))); + } + break; + case M_VSC_MVEDTRPRVGRP: + if (record->event.pressed) { + SEND_STRING(SS_LCTRL(SS_LALT(SS_TAP(X_LEFT)))); + } + break; + case M_VSC_EDGRPNXT: + if (record->event.pressed) { + SEND_STRING(SS_LCTRL(SS_LALT(SS_TAP(X_L)))); + } + break; + case M_VSC_EDGRPPRV: + if (record->event.pressed) { + SEND_STRING(SS_LCTRL(SS_LALT(SS_TAP(X_K)))); + } + break; + case M_VSC_VIEWSIZEINC: + if (record->event.pressed) { + SEND_STRING(SS_LCTRL(SS_LALT(SS_TAP(X_P)))); + } + break; + case M_VSC_VIEWSIZEDEC: + if (record->event.pressed) { + SEND_STRING(SS_LCTRL(SS_LALT(SS_TAP(X_O)))); + } + break; + } + + return rv; +} diff --git a/users/moults31/vscode.h b/users/moults31/vscode.h new file mode 100644 index 000000000000..7e88b6591a25 --- /dev/null +++ b/users/moults31/vscode.h @@ -0,0 +1,21 @@ +/* Copyright 2021 moults31 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should 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 QMK_KEYBOARD_H +#include "moults31.h" + +bool process_record_vsc(uint16_t keycode, keyrecord_t *record); diff --git a/users/mtdjr/mtdjr.c b/users/mtdjr/mtdjr.c index c31b077b4659..9c6c26bc862d 100644 --- a/users/mtdjr/mtdjr.c +++ b/users/mtdjr/mtdjr.c @@ -136,7 +136,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return true; }; -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { switch (biton32(state)) { case _RAISE: #ifdef RGBLIGHT_ENABLE diff --git a/users/narze/narze.h b/users/narze/narze.h index 036539a9cd94..d9be82744b37 100644 --- a/users/narze/narze.h +++ b/users/narze/narze.h @@ -7,3 +7,7 @@ #ifdef COMBO_ENABLE # include "superduper.h" #endif + +#define HPR_ESC ALL_T(KC_ESC) +#define SFT_ENT SFT_T(KC_ENT) +#define ALT_COLN RALT_T(KC_F13) // Remap F13 to Colon in software (eg. Keyboard Maestro) diff --git a/users/narze/readme.md b/users/narze/readme.md index 124b84e6be15..f5caae0c8048 100644 --- a/users/narze/readme.md +++ b/users/narze/readme.md @@ -1,5 +1,24 @@ -# TODO -- [ ] Make SuperDuper mode fully-compatible in Windows by swapping GUI with Ctrl +# narze's layout + +## (S)uper (D)uper Mode + +Inspired by [jasonrudolph](https://github.com/jasonrudolph/keyboard#super-duper-mode), with some extensions such as backspace & forward delete. The idea is to make another useful layer available on the home row. + +To use, press `S+D` simultaneously and hold, then... +- `H/J/K/L` for Vim-like movement +- `I/O` to move between browser tabs +- `A` for `Option (Alt)` +- `F` for `Backspace` +- `;` for `Delete` +- `A` with `H/L` to move to previous/next word +- `A` with `G/;` to delete to previous/next word +- Available for all layouts (but plover) using physical S & D keys position in qwerty +- `Spacebar` for `Shift` (it's easier when already holding A with your pinky) +- Disable with `Raise+Lower+M` +- You can edit or add more useful keys in SUPERDUPER layer +- It can be activated by holding `/` as well, but it's slower since `LT()` uses `TAPPING_TERM` of 200ms but `S+D` uses `COMBO_TERM` of only 20ms (Can be changed within config.h) + +The implementation will vary and some keys are not available in some of my layouts, please refer to `_SUPERDUPER` layer in each of my `keymap.c` files. # LICENSE Copyright 2019 Manassarn Manoonchai manassarn@gmail.com @narze diff --git a/users/ninjonas/oled.c b/users/ninjonas/oled.c index a3514f54f6e1..55eaf88ccbef 100644 --- a/users/ninjonas/oled.c +++ b/users/ninjonas/oled.c @@ -2,7 +2,7 @@ #include <stdio.h> #include "ninjonas.h" -#if defined(OLED_DRIVER_ENABLE) & !defined(KEYBOARD_kyria_rev1) +#if defined(OLED_ENABLE) & !defined(KEYBOARD_kyria_rev1) static uint32_t oled_timer = 0; @@ -49,16 +49,16 @@ void render_layer_state(void) { bool adjust = layer_state_is(_ADJUST); bool numpad = layer_state_is(_NUMPAD); - if(lower){ - oled_write_P(PSTR(" Lower "), true); - } else if(raise){ - oled_write_P(PSTR(" Raise "), true); - } else if(adjust){ - oled_write_P(PSTR(" Adjust "), true); + if(lower){ + oled_write_P(PSTR(" Lower "), true); + } else if(raise){ + oled_write_P(PSTR(" Raise "), true); + } else if(adjust){ + oled_write_P(PSTR(" Adjust "), true); } else if(numpad) { - oled_write_P(PSTR(" Numpad "), true); - } else { - oled_write_P(PSTR(" Default"), false); + oled_write_P(PSTR(" Numpad "), true); + } else { + oled_write_P(PSTR(" Default"), false); } } @@ -90,7 +90,7 @@ static void render_logo(void) { oled_write_P(qmk_logo, false); } -void oled_task_user(void) { +bool oled_task_user(void) { if (timer_elapsed32(oled_timer) > 15000) { oled_off(); return; @@ -106,6 +106,7 @@ void oled_task_user(void) { oled_write_P(PSTR("\n"), false); oled_scroll_left(); } + return false; } #endif diff --git a/users/ninjonas/process_records.c b/users/ninjonas/process_records.c index a3b8417913ab..c298227e5136 100644 --- a/users/ninjonas/process_records.c +++ b/users/ninjonas/process_records.c @@ -6,7 +6,7 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; __attribute__((weak)) bool process_record_secrets(uint16_t keycode, keyrecord_t *record) { return true; } -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE __attribute__((weak)) bool process_record_oled(uint16_t keycode, keyrecord_t *record) { return true; } #endif @@ -110,7 +110,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return process_record_keymap(keycode, record) && process_record_secrets(keycode, record) - #ifdef OLED_DRIVER_ENABLE + #ifdef OLED_ENABLE && process_record_oled(keycode, record) #endif ; // Close return diff --git a/users/ninjonas/process_records.h b/users/ninjonas/process_records.h index 2e69ca216323..5b901a165909 100644 --- a/users/ninjonas/process_records.h +++ b/users/ninjonas/process_records.h @@ -25,6 +25,6 @@ enum custom_keycodes { bool process_record_secrets(uint16_t keycode, keyrecord_t *record); bool process_record_keymap(uint16_t keycode, keyrecord_t *record); -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE bool process_record_oled(uint16_t keycode, keyrecord_t *record); #endif diff --git a/users/ninjonas/rules.mk b/users/ninjonas/rules.mk index a5cd0fdd9c35..7ff8f24b9ed1 100644 --- a/users/ninjonas/rules.mk +++ b/users/ninjonas/rules.mk @@ -1,4 +1,4 @@ -BOOTMAGIC_ENABLE = no # Disable Boot Magic (https://beta.docs.qmk.fm/features/feature_bootmagic) +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) TAP_DANCE_ENABLE = yes # Enable Tap Dance. diff --git a/users/noroadsleft/readme.md b/users/noroadsleft/readme.md index bee6ee272f50..1173d15ec196 100644 --- a/users/noroadsleft/readme.md +++ b/users/noroadsleft/readme.md @@ -9,7 +9,7 @@ This directory holds the code that's the same for every keyboard I use in QMK, w ## Macro Features and Custom Keycodes -### [VRSN](./noroadsleft.c#L33-L37) +### [VRSN](./noroadsleft.c#L44-L48) Outputs a string that tells me the Git commit from which my flashed firmware was built. Looks something like: @@ -29,7 +29,7 @@ Some frequently used Git commands. ### "Macro Mode" Macros and Customized Keycodes -Some of my macros and keycodes do different things depending on the value of the [`macroMode` variable](./noroadsleft.c#L23), which is [toggled between `0` and `1`](./noroadsleft.c#L116-L120) by the `M_MDSWP` custom keycode.[<sup>1</sup>](#footnotes) This is mainly at attempt to make various shortcuts use the same physical key combinations between Windows/Linux and MacOS (which I use at home and work, respectively). +Some of my macros and keycodes do different things depending on the value of the [`macroMode` variable](./noroadsleft.c#L23), which is [toggled between `0` and `1`](./noroadsleft.c#L127-L131) by the `M_MDSWP` custom keycode.[<sup>1</sup>](#footnotes) This is mainly at attempt to make various shortcuts use the same physical key combinations between Windows/Linux and MacOS (which I use at home and work, respectively). | Keycode | `macroMode == 0` | `macroMode == 1` | `macroMode == 1` with <kbd>Shift</kbd> | | :------------------------------------- | :--------------- | :--------------- | :------------------------------------- | diff --git a/users/nstickney/config.h b/users/nstickney/config.h new file mode 100644 index 000000000000..b853038c2162 --- /dev/null +++ b/users/nstickney/config.h @@ -0,0 +1,63 @@ +/* Copyright 2021 @nstickney + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +// Changes from Bastyl defaults +#ifdef MASTER_RIGHT +# undef MASTER_RIGHT +#endif + +// Turn off RGB lights when computer is sleeping +#define RGBLIGHT_SLEEP + +// https://beta.docs.qmk.fm/developing-qmk/qmk-reference/config_options#features-that-can-be-disabled +#define NO_ACTION_ONESHOT +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +// Turn off all possible RGB animations +#ifdef RGB_ANIMATIONS +# undef RGB_ANIMATIONS +#endif +#ifdef RGB_EFFECT_ALTERNATING +# undef RGB_EFFECT_ALTERNATING +#endif +#ifdef RGB_EFFECT_BREATHING +# undef RGB_EFFECT_BREATHING +#endif +#ifdef RGB_EFFECT_CHRISTMAS +# undef RGB_EFFECT_CHRISTMAS +#endif +#ifdef RGB_EFFECT_KNIGHT +# undef RGB_EFFECT_KNIGHT +#endif +#ifdef RGB_EFFECT_RAINBOW_MOOD +# undef RGB_EFFECT_RAINBOW_MOOD +#endif +#ifdef RGB_EFFECT_RAINBOW_SWIRL +# undef RGB_EFFECT_RAINBOW_SWIRL +#endif +#ifdef RGB_EFFECT_RGB_TEST +# undef RGB_EFFECT_RGB_TEST +#endif +#ifdef RGB_EFFECT_SNAKE +# undef RGB_EFFECT_SNAKE +#endif +#ifdef RGB_EFFECT_STATIC_GRADIENT +# undef RGB_EFFECT_STATIC_GRADIENT +#endif +#ifdef RGB_EFFECT_TWINKLE +# undef RGB_EFFECT_TWINKLE +#endif diff --git a/users/nstickney/nstickney.c b/users/nstickney/nstickney.c index 3e18e5c8383b..8222e7289d86 100644 --- a/users/nstickney/nstickney.c +++ b/users/nstickney/nstickney.c @@ -1,34 +1,73 @@ +/* Copyright 2021 @nstickney + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "nstickney.h" // Tap Dancing -void dance_layer (qk_tap_dance_state_t *state, void *user_data) { - switch (state -> count) { - case 1: tap_code(KC_APP); break; - case 2: layer_invert(NUMP); break; - case 3: layer_invert(SYMB); break; - case 4: layer_invert(SYSH); break; - default: break; - } +void dance_layer(qk_tap_dance_state_t *state, void *user_data) { + switch (state->count) { + case 1: + tap_code(KC_APP); + break; + case 2: + layer_invert(NUMP); + break; + case 3: + layer_invert(SYMB); + break; + default: + break; + } }; -void dance_lock_finished (qk_tap_dance_state_t *state, void *user_data) { - switch (state->count) { - case 1: register_code(KC_LGUI); break; - case 2: register_code(KC_NLCK); break; - case 3: register_code(KC_CAPS); break; - case 4: register_code(KC_SLCK); break; - default: break; - } +void dance_lock_finished(qk_tap_dance_state_t *state, void *user_data) { + switch (state->count) { + case 1: + register_code(KC_LGUI); + break; + case 2: + register_code(KC_NLCK); + break; + case 3: + register_code(KC_CAPS); + break; + case 4: + register_code(KC_SLCK); + break; + default: + break; + } }; -void dance_lock_reset (qk_tap_dance_state_t *state, void *user_data) { - switch (state->count) { - case 1: unregister_code(KC_LGUI); break; - case 2: unregister_code(KC_NLCK); break; - case 3: register_code(KC_CAPS); break; - case 4: register_code(KC_SLCK); break; - default: break; - } +void dance_lock_reset(qk_tap_dance_state_t *state, void *user_data) { + switch (state->count) { + case 1: + unregister_code(KC_LGUI); + break; + case 2: + register_code(KC_NLCK); + break; + case 3: + register_code(KC_CAPS); + break; + case 4: + register_code(KC_SLCK); + break; + default: + break; + } }; qk_tap_dance_action_t tap_dance_actions[] = { @@ -36,9 +75,22 @@ qk_tap_dance_action_t tap_dance_actions[] = { [LAYERS] = ACTION_TAP_DANCE_FN(dance_layer) }; -void eeconfig_init_user (void) { - set_unicode_input_mode(UC_LNX); // Linux - //set_unicode_input_mode(UC_OSX); // Mac OSX - //set_unicode_input_mode(UC_WIN); // Windows (with registry key, see wiki) - //set_unicode_input_mode(UC_WINC); // Windows (with WinCompose, see wiki) -}; \ No newline at end of file +// RGB underglow per-layer hue values +const uint16_t LAYER_HUE[] = {6, 197, 133, 69}; + +// Initialize RGB underglow (colorful) +void keyboard_post_init_user(void) { + rgblight_enable_noeeprom(); + rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); + for (uint16_t i = 0; i < 256; ++i) { + rgblight_sethsv_noeeprom((i + LAYER_HUE[BASE]) % 256, 255, 136); + wait_ms(8); + } +}; + +// Turn on RGB underglow according to active layer +layer_state_t layer_state_set_user(layer_state_t state) { + uint8_t user_val = rgblight_get_val(); + rgblight_sethsv_noeeprom(LAYER_HUE[get_highest_layer(state)], 255, user_val); + return state; +}; diff --git a/users/nstickney/nstickney.h b/users/nstickney/nstickney.h index d3f5a7c6fc35..2b596b25e525 100644 --- a/users/nstickney/nstickney.h +++ b/users/nstickney/nstickney.h @@ -1,20 +1,22 @@ -#include QMK_KEYBOARD_H - +/* Copyright 2021 @nstickney + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #pragma once -#define USE_SERIAL -#define MASTER_LEFT - -#undef UNICODE_SELECTED_MODES -#define UNICODE_SELECTED_MODES UC_OSX, UC_LNX, UC_WINC - -// Layers -#define BASE 0 // Base layer -#define SYMB 1 // Symbols -#define SYSH 2 // Symbols, shifted -#define NUMP 3 // Numpad -#define FCTN 4 // Function +#include QMK_KEYBOARD_H -// Make keymaps more clear +// Specialty keycodes #define CC_ESC LCTL_T(KC_ESC) #define CC_QUOT RCTL_T(KC_QUOT) #define AC_SLSH LALT_T(KC_SLSH) @@ -22,4 +24,16 @@ #define FC_BSLS LT(FCTN, KC_BSLS) #define FC_MINS LT(FCTN, KC_MINS) -enum tap_dances {LOCKS = 0, LAYERS = 1}; \ No newline at end of file +// Layers +enum { + BASE, // Base layer + SYMB, // Symbols + NUMP, // Numpad + FCTN // Function +}; + +// Tap dance +enum { + LOCKS, // Activate NUM/CAPS/SCROLL lock + LAYERS // Activate NUMP and SYMB layers +}; diff --git a/users/nstickney/readme.md b/users/nstickney/readme.md new file mode 100644 index 000000000000..b62264d68700 --- /dev/null +++ b/users/nstickney/readme.md @@ -0,0 +1,49 @@ +# nstickney's Ortholinear Layout + + > Familiar layout for users who regularly switch between Bastyl/Iris and standard QWERTY. + +## Install + +For instructions on building and installing this keymap, see the [docs](https://docs.qmk.fm/#/getting_started_make_guide). +Below is the command for me; it may be different for you. +Note that my Iris keyboard has an Elite-C on the left half and a ProMicro on the right half. + +- Bastyl: `make hidtech/bastyl:nstickney:dfu` +- Iris + - Elite-C: `make keebio/iris/rev2:nstickney:dfu` + - ProMicro: `make keebio/iris/rev2:nstickney:avrdude` + +## Usage + +0. QWERTY `BASE` layer. + * `/`, `\`, `[SPACE]`, `[ENTER]`, `-`, and `=` on the thumb clusters. + * `[` and `]` added on Bastyl. + * `CAPSLOCK` replaced by `ESC`; hold it down for `CTRL`. + * `'` can also be held for `CTRL`. + * [Space-Cadet Shift](https://beta.docs.qmk.fm/using-qmk/advanced-keycodes/feature_space_cadet) is enabled, so the `SHIFT` keys send `(` and `)` when tapped. + * Hold down `/` or `=` for `ALT`. + * Hold down `\` or `-` to access the functions layer. + * Farthest thumb keys are `GUI` (left) and `MENU` (right). + * Tapping `GUI` 2, 3, or 4 times will toggle `NUMLOCK`, `CAPSLOCK`, or `SCROLLLOCK`, respectively. + * Tapping `MENU` 2 or 3 times will toggle the `NUMP` and `SYMB` layers, respectively. +0. Unicode-input symbols on `SYMB` layer. Based (loosely) on US-International layout. +0. `NUMP` layer has number pads on each hand. Number pad `7`-`8`-`9` align with QWERTY `7`-`8`-`9` on right hand. +0. Function, arrow, media, and miscellaneous keys on `FCTN` layer. + * `F1` through `F10` on `1`-`10`. `F11` is on `GUI` and `F12` is on `MENU`. + * Brackets (`[` and `]`) available on `U` and `I`; braces (`{` and `}`) on `O` and `P`. + * Arrow keys on `ESDF` and `HJKL`; familiar for both Vim users and FPS gamers. + * `W` is `HOME`; `R` is `END`. `T` is `PAGE UP` and `G` is `PAGE DOWN`. + * Music controls on lower row of left hand. + * Volume and screen brightness on lower row of right hand. + * `PRINT SCREEN`, `PAUSE`, `SYSREQ`, `INSERT`, and `CLEAR` also mapped, as intelligently as possible. + * `Q` toggles the RGB underglow (which changes color to indicate active layer). + * `A` increases RGB underglow brightness (with `SHIFT`, decreases brightness). + * `Y` is mapped to [`KC_LOCK`](https://beta.docs.qmk.fm/using-qmk/software-features/feature_key_lock). + +## Contribute + +If you are using this layout and think you've found a better way to do something, I'd appreciate an [issue](https://github.com/nstickney/qmk_firmware/issues), or better yet a [pull request](https://github.com/nstickney/qmk_firmware/pulls). + +## License + +Copyright © 2016-2021 @nstickney. Released under [GPL-2.0](/LICENSE). diff --git a/users/nstickney/rules.mk b/users/nstickney/rules.mk index f52371c79189..cad245cc244f 100644 --- a/users/nstickney/rules.mk +++ b/users/nstickney/rules.mk @@ -1,4 +1,36 @@ +# Copyright 2021 @nstickney +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. SRC += nstickney.c +KEY_LOCK_ENABLE = yes +RGBLIGHT_ENABLE = yes TAP_DANCE_ENABLE = yes -UNICODE_ENABLE = yes \ No newline at end of file +UNICODE_ENABLE = no +UNICODEMAP_ENABLE = yes +UCIS_ENABLE = no + +# https://github.com/qmk/qmk_firmware/issues/3224#issuecomment-399769416 +LTO_ENABLE = yes + +# https://beta.docs.qmk.fm/developing-qmk/qmk-reference/getting_started_make_guide#rules-mk-options +AUDIO_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +COMMAND_ENABLE = no +CONSOLE_ENABLE = no +MOUSEKEY_ENABLE = no +MIDI_ENABLE = no +NKRO_ENABLE = no +SLEEP_LED_ENABLE = no +VARIABLE_TRACE = no diff --git a/users/nstickney/unicodemap.h b/users/nstickney/unicodemap.h new file mode 100644 index 000000000000..3b7d9e305398 --- /dev/null +++ b/users/nstickney/unicodemap.h @@ -0,0 +1,106 @@ +/* Copyright 2021 @nstickney + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +#pragma once + +enum { + // Used on base + + // Used on US-International + IEX, SS2, SS3, CUR, EUR, V14, V12, V34, LSQ, RSQ, YEN, MLT, + A_D, A_R, E_A, REG, THR, U_D, U_A, I_A, O_A, O_D, LDA, RDA, NOT, + A_A, S_S, ETH, EMD, OEL, O_S, PLC, ACT, + AEL, CPR, N_T, MCR, C_C, IQM, + + // Used on US-International with Shift + SS1, GBP, DIV, + AXD, ACR, ECA, UCD, UCA, ICA, OCA, OCD, BKB, + ACA, SEC, ETC, OEC, OCS, DEG, DIS, + AEC, CNT, NCT, CCC, + + // Added to US-International + + // Added to US-International with Shift + LDQ, RDQ, + CPL +}; + +const uint32_t PROGMEM unicode_map[] = { + [IEX] = 0xA1, // ¡ + [SS2] = 0xB2, // ² + [SS3] = 0xB3, // ³ + [CUR] = 0xA4, // ¤ + [EUR] = 0x20AC, // € + [V14] = 0xBC, // ¼ + [V12] = 0xBD, // ½ + [V34] = 0xBE, // ¾ + [LSQ] = 0x2018, // ‘ + [RSQ] = 0x2019, // ’ + [YEN] = 0xA5, // ¥ + [MLT] = 0xD7, // × + [A_D] = 0xE4, // ä + [A_R] = 0xE5, // å + [E_A] = 0xE9, // é + [REG] = 0xAE, // ® + [THR] = 0xFE, // þ + [U_D] = 0xFC, // ü + [U_A] = 0xFA, // ú + [I_A] = 0xED, // í + [O_A] = 0xF3, // ó + [O_D] = 0xF6, // ö + [LDA] = 0xAB, // « + [RDA] = 0xBB, // » + [NOT] = 0xAC, // ¬ + [A_A] = 0xE1, // á + [S_S] = 0xDF, // ß + [ETH] = 0xF0, // ð + [EMD] = 0x2014, // — + [OEL] = 0x153, // œ + [O_S] = 0xF8, // ø + [PLC] = 0xB6, // ¶ + [ACT] = 0xB4, // ´ + [AEL] = 0xE6, // æ + [CPR] = 0xA9, // © + [N_T] = 0xF1, // ñ + [MCR] = 0xB5, // µ + [C_C] = 0xE7, // ç + [IQM] = 0xBF, // ¿ + [SS1] = 0xB9, // ¹ + [GBP] = 0xA3, // £ + [DIV] = 0xF7, // ÷ + [AXD] = 0xC4, // Ä + [ACR] = 0xC5, // Å + [ECA] = 0xC9, // É + [UCD] = 0xDC, // Ü + [UCA] = 0xDA, // Ú + [ICA] = 0xCD, // Í + [OCA] = 0xD3, // Ó + [OCD] = 0xD6, // Ö + [BKB] = 0xA6, // ¦ + [ACA] = 0xC1, // Á + [SEC] = 0xA7, // § + [ETC] = 0xD0, // Ð + [OEC] = 0x152, // Œ + [OCS] = 0xD8, // Ø + [DEG] = 0xB0, // ° + [DIS] = 0xA8, // ¨ + [AEC] = 0xC6, // Æ + [CNT] = 0xA2, // ¢ + [NCT] = 0xD1, // Ñ + [CCC] = 0xC7, // Ç + [LDQ] = 0x201C, // “ + [RDQ] = 0x201D, // ” + [CPL] = 0x1F12F // 🄯 +}; diff --git a/users/pvinis/pvinis.c b/users/pvinis/pvinis.c index 31c3023e830b..71f9210aec55 100644 --- a/users/pvinis/pvinis.c +++ b/users/pvinis/pvinis.c @@ -10,7 +10,7 @@ float song_test[][2] = SONG(QWERTY_SOUND); #endif // SYMBOL + SYSCTL = KBCTL -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { uint32_t intermediate_state = update_tri_layer_state(state, LR_SYMBOL, LR_SYSCTL, LR_KBCTL); intermediate_state = layer_state_set_user_keymap(intermediate_state); return intermediate_state; diff --git a/users/replicaJunction/config.h b/users/replicaJunction/config.h deleted file mode 100644 index 4b58b579f89b..000000000000 --- a/users/replicaJunction/config.h +++ /dev/null @@ -1,66 +0,0 @@ -#pragma once - - -//////////////////////////////////////////////////////////////////////////////// -// Features That Can Be Enabled -// https://docs.qmk.fm/reference/config-options#features-that-can-be-enabled -//////////////////////////////////////////////////////////////////////////////// - -//////////////////////////////////////////////////////////////////////////////// -// Behaviors That Can Be Configured -// https://docs.qmk.fm/reference/config-options#behaviors-that-can-be-configured -//////////////////////////////////////////////////////////////////////////////// - -// MS the button needs to be held before a tap becomes a hold (default: 200) -#undef TAPPING_TERM -#define TAPPING_TERM 250 - -// Makes it easier for fast typists to use dual-role keys. See additional details here: -// https://docs.qmk.fm/features/advanced-keycodes#permissive-hold -#define PERMISSIVE_HOLD - -// MS after tapping the Leader key to listen for a sequence (default: 300) -#undef LEADER_TIMEOUT -#define LEADER_TIMEOUT 750 - -// This makes it possible to do rolling combos (zx) with keys that convert to other keys on hold -// (for example, if z becomes ctrl when you hold it, when this option isn't enabled, z rapidly -// followed by x actually sends Ctrl-x. That's bad.) -#define IGNORE_MOD_TAP_INTERRUPT - - - -//////////////////////////////////////////////////////////////////////////////// -// Mouse Key Options -// https://docs.qmk.fm/reference/config-options#mouse-key-options -//////////////////////////////////////////////////////////////////////////////// - -#ifdef MOUSEKEY_ENABLE -// Mouse key config - -// Frequency with which cursor movements are sent. Lower means more resolution / DPI. -// Default: 20 -// #undef MOUSEKEY_INTERVAL -// #define MOUSEKEY_INTERVAL 20 - -// MS after pressing the key before initial movement begins. Lower means quicker response. -// Default: 0 -// #undef MOUSEKEY_DELAY -// #define MOUSEKEY_DELAY 0 - -// MS it takes the cursor to accelerate to max speed -// Default: 60 -// #undef MOUSEKEY_TIME_TO_MAX -// #define MOUSEKEY_TIME_TO_MAX 60 - -// Maximum speed for the mouse keys -// Default: 7 -// #undef MOUSEKEY_MAX_SPEED -// #define MOUSEKEY_MAX_SPEED 7 - -// Delay before the mouse wheel -// Default: 0 -// #undef MOUSEKEY_WHEEL_DELAY -// #define MOUSEKEY_WHEEL_DELAY 0 - -#endif // MOUSEKEY_ENABLE diff --git a/users/replicaJunction/features/.gitignore b/users/replicaJunction/features/.gitignore new file mode 100644 index 000000000000..9b590ee802fe --- /dev/null +++ b/users/replicaJunction/features/.gitignore @@ -0,0 +1,2 @@ +# Do not include the secrets definitions +secret_definitions.h diff --git a/users/replicaJunction/features/caps_word.c b/users/replicaJunction/features/caps_word.c new file mode 100644 index 000000000000..536da81ec7be --- /dev/null +++ b/users/replicaJunction/features/caps_word.c @@ -0,0 +1,105 @@ +/* Copyright 2021 Joshua T. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "caps_word.h" + +static bool is_caps_word_on = false; + +bool is_caps_word_enabled(void) { + return is_caps_word_on; +} + +void enable_caps_word(void) { + if (is_caps_word_on) return; + is_caps_word_on = true; + tap_code(KC_CAPS); +} + +void disable_caps_word(void) { + if (!is_caps_word_on) return; + is_caps_word_on = false; + tap_code(KC_CAPS); +} + +void toggle_caps_word(void) { + if (is_caps_word_on) { + disable_caps_word(); + } + else { + enable_caps_word(); + } +} + +bool should_terminate_caps_word(uint16_t keycode, const keyrecord_t *record) { + switch (keycode) { + // Keycodes which should not disable caps word mode + case KC_A ... KC_Z: + case KC_1 ... KC_0: + case KC_MINS: + case KC_UNDS: + case KC_BSPC: + return false; + + default: + if (record->event.pressed) { + return true; + } + return false; + } + + // Should be unreachable + return false; +} + + +bool process_record_caps_word(uint16_t keycode, const keyrecord_t *record) { + // Nothing in this function acts on key release + if (!record->event.pressed) { + return true; + } + + // Handle the custom keycodes that go with this feature + if (keycode == CAPWORD) { + enable_caps_word(); + return false; + } + + // If the behavior isn't enabled and the keypress isn't a keycode to + // toggle the behavior, allow QMK to handle the keypress as usual + if (!is_caps_word_on) { + return true; + } + + // Get the base keycode of a mod or layer tap key + switch (keycode) { + case QK_MOD_TAP ... QK_MOD_TAP_MAX: + case QK_LAYER_TAP ... QK_LAYER_TAP_MAX: + case QK_TAP_DANCE ... QK_TAP_DANCE_MAX: + // Earlier return if this has not been considered tapped yet + if (record->tap.count == 0) + return true; + keycode = keycode & 0xFF; + break; + default: + break; + } + + if (should_terminate_caps_word(keycode, record)) { + disable_caps_word(); + } + + return true; +} diff --git a/users/replicaJunction/features/caps_word.h b/users/replicaJunction/features/caps_word.h new file mode 100644 index 000000000000..4182ce58291b --- /dev/null +++ b/users/replicaJunction/features/caps_word.h @@ -0,0 +1,26 @@ +/* Copyright 2021 Joshua T. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should 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 QMK_KEYBOARD_H +#include "rj_keycodes.h" + +bool is_caps_word_enabled(void); +void enable_caps_word(void); +void disable_caps_word(void); +void toggle_caps_word(void); + +bool process_record_caps_word(uint16_t keycode, const keyrecord_t *record); diff --git a/users/replicaJunction/features/mouse_jiggle.c b/users/replicaJunction/features/mouse_jiggle.c new file mode 100644 index 000000000000..b2c451d33edd --- /dev/null +++ b/users/replicaJunction/features/mouse_jiggle.c @@ -0,0 +1,46 @@ +/* Copyright 2021 Joshua T. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "mouse_jiggle.h" + +bool is_mouse_jiggle_active = false; + +void matrix_scan_mouse_jiggle(void) { + if (is_mouse_jiggle_active) { + tap_code(KC_MS_UP); + tap_code(KC_MS_DOWN); + } +} + +bool process_record_mouse_jiggle(uint16_t keycode, const keyrecord_t *record) { + if (!record->event.pressed) { + return true; + } + + if (is_mouse_jiggle_active) { + // If active, quit whenever another key is pressed + is_mouse_jiggle_active = false; + return true; + } + + if (keycode != MS_JIGL) { + return true; + } + + is_mouse_jiggle_active = true; + SEND_STRING("Mouse jiggler enabled"); + return false; +} diff --git a/users/replicaJunction/features/mouse_jiggle.h b/users/replicaJunction/features/mouse_jiggle.h new file mode 100644 index 000000000000..ba2c6e75701b --- /dev/null +++ b/users/replicaJunction/features/mouse_jiggle.h @@ -0,0 +1,23 @@ +/* Copyright 2021 Joshua T. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should 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 QMK_KEYBOARD_H +#include "rj_keycodes.h" + +void matrix_scan_mouse_jiggle(void); + +bool process_record_mouse_jiggle(uint16_t keycode, const keyrecord_t *record); diff --git a/users/replicaJunction/features/num_word.c b/users/replicaJunction/features/num_word.c new file mode 100644 index 000000000000..4cca5c19ae22 --- /dev/null +++ b/users/replicaJunction/features/num_word.c @@ -0,0 +1,129 @@ +/* Copyright 2021 Joshua T. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "num_word.h" + +static uint16_t num_word_timer = 0; +static bool is_num_word_on = false; + +bool is_num_word_enabled(void) { + return is_num_word_on; +} + +void enable_num_word(void) { + if (is_num_word_on) return; + is_num_word_on = true; + layer_on(L_NUMBERS); +} + +void disable_num_word(void) { + if (!is_num_word_on) return; + is_num_word_on = false; + layer_off(L_NUMBERS); +} + +void toggle_num_word(void) { + if (is_num_word_on) { + disable_num_word(); + } + else { + enable_num_word(); + } +} + +bool should_terminate_num_word(uint16_t keycode, const keyrecord_t *record) { + switch (keycode) { + // Keycodes which should not disable num word mode. + // We could probably be more brief with these definitions by using + // a couple more ranges, but I believe "explicit is better than + // implicit" + case KC_1 ... KC_0: + case KC_EQL: + case KC_SCLN: + case KC_MINS: + case KC_DOT: + + // Numpad keycodes + case KC_P1 ... KC_P0: + case KC_PSLS ... KC_PPLS: + case KC_PDOT: + + // Misc + case KC_UNDS: + case KC_BSPC: + return false; + + default: + if (record->event.pressed) { + return true; + } + return false; + } + + // Should be unreachable + return false; +} + + +bool process_record_num_word(uint16_t keycode, const keyrecord_t *record) { + // Handle the custom keycodes that go with this feature + if (keycode == NUMWORD) { + if (record->event.pressed) { + enable_num_word(); + num_word_timer = timer_read(); + return false; + } + else { + if (timer_elapsed(num_word_timer) > TAPPING_TERM) { + // If the user held the key longer than TAPPING_TERM, + // consider it a hold, and disable the behavior on + // key release. + disable_num_word(); + return false; + } + } + } + + // Other than the custom keycodes, nothing else in this feature will + // activate if the behavior is not on, so allow QMK to handle the + // event as usual + if (!is_num_word_on) return true; + + // Nothing else acts on key release, either + if (!record->event.pressed) { + return true; + } + + // Get the base keycode of a mod or layer tap key + switch (keycode) { + case QK_MOD_TAP ... QK_MOD_TAP_MAX: + case QK_LAYER_TAP ... QK_LAYER_TAP_MAX: + case QK_TAP_DANCE ... QK_TAP_DANCE_MAX: + // Earlier return if this has not been considered tapped yet + if (record->tap.count == 0) + return true; + keycode = keycode & 0xFF; + break; + default: + break; + } + + if (should_terminate_num_word(keycode, record)) { + disable_num_word(); + } + + return true; +} diff --git a/users/replicaJunction/features/num_word.h b/users/replicaJunction/features/num_word.h new file mode 100644 index 000000000000..194c4e2e0de3 --- /dev/null +++ b/users/replicaJunction/features/num_word.h @@ -0,0 +1,27 @@ +/* Copyright 2021 Joshua T. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should 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 QMK_KEYBOARD_H +#include "rj_keycodes.h" +#include "rj_layers.h" + +bool is_num_word_enabled(void); +void enable_num_word(void); +void disable_num_word(void); +void toggle_num_word(void); + +bool process_record_num_word(uint16_t keycode, const keyrecord_t *record); diff --git a/users/replicaJunction/features/secrets.c b/users/replicaJunction/features/secrets.c new file mode 100644 index 000000000000..3e1ea283dc37 --- /dev/null +++ b/users/replicaJunction/features/secrets.c @@ -0,0 +1,51 @@ +/* Copyright 2021 Joshua T. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +// Before you can compile with this feature, you'll need to manually +// create a file in this directory called "secret_definitions.h" +// containing the data to be added. +// +// Example implementation: +// +// #pragma once +// static const char * const secrets[] = { +// "secret1", +// "secret2", +// "secret3", +// "secret4" +// } + +#include QMK_KEYBOARD_H +#include "replicaJunction.h" +#include "secrets.h" +#include "secret_definitions.h" + +#ifndef MACRO_TIMER +# define MACRO_TIMER 5 +#endif + +bool process_record_secrets(uint16_t keycode, const keyrecord_t *record) { + switch (keycode) { + case K_SECR1 ... K_SECR4: // Secrets! Externally defined strings, not stored in repo + if (!record->event.pressed) { + clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); + send_string_with_delay(secrets[keycode - K_SECR1], MACRO_TIMER); + } + return false; + } + + return true; +} diff --git a/users/replicaJunction/features/secrets.h b/users/replicaJunction/features/secrets.h new file mode 100644 index 000000000000..ef439622726b --- /dev/null +++ b/users/replicaJunction/features/secrets.h @@ -0,0 +1,30 @@ +/* Copyright 2021 Joshua T. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should 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 QMK_KEYBOARD_H + +// NOTE: In some implementations of the "secrets" functionality, the +// secrets.h file is the file that actually contains secret text. +// +// This is not the case in my implementation. That file is called +// "secret_definitions.h", and it's in a local .gitignore file so it +// does not get committed. +// +// The inclusion of this file is not an error, and there is no sensitive +// text here. + +bool process_record_secrets(uint16_t keycode, const keyrecord_t *record); diff --git a/users/replicaJunction/features/super_alt_tab.c b/users/replicaJunction/features/super_alt_tab.c new file mode 100644 index 000000000000..9759898c87b6 --- /dev/null +++ b/users/replicaJunction/features/super_alt_tab.c @@ -0,0 +1,52 @@ +/* Copyright 2021 Joshua T. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "super_alt_tab.h" + +// https://docs.qmk.fm/#/feature_macros?id=super-alt%E2%86%AFtab + +bool is_alt_tab_active = false; +uint16_t alt_tab_timer = 0; + +void matrix_scan_super_alt_tab(void) { + if (is_alt_tab_active) { + if (timer_elapsed(alt_tab_timer) > USER_SUPER_ALT_TAB_TIMEOUT) { + unregister_code(KC_LALT); + is_alt_tab_active = false; + } + } +} + + +bool process_record_super_alt_tab(uint16_t keycode, const keyrecord_t *record) { + if (keycode != SALTTAB) { + return true; + } + + if (record->event.pressed) { + if (!is_alt_tab_active) { + is_alt_tab_active = true; + register_code(KC_LALT); + } + alt_tab_timer = timer_read(); + register_code(KC_TAB); + } + else { + unregister_code(KC_TAB); + } + + return false; +} diff --git a/users/replicaJunction/features/super_alt_tab.h b/users/replicaJunction/features/super_alt_tab.h new file mode 100644 index 000000000000..8bdf2bc22e26 --- /dev/null +++ b/users/replicaJunction/features/super_alt_tab.h @@ -0,0 +1,27 @@ +/* Copyright 2021 Joshua T. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should 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 QMK_KEYBOARD_H +#include "rj_keycodes.h" + +#ifndef USER_SUPER_ALT_TAB_TIMEOUT +# define USER_SUPER_ALT_TAB_TIMEOUT 500 +#endif + +void matrix_scan_super_alt_tab(void); + +bool process_record_super_alt_tab(uint16_t keycode, const keyrecord_t *record); diff --git a/users/replicaJunction/keycode_aliases.h b/users/replicaJunction/keycode_aliases.h new file mode 100644 index 000000000000..b1006a863c14 --- /dev/null +++ b/users/replicaJunction/keycode_aliases.h @@ -0,0 +1,85 @@ +/* Copyright 2021 Joshua T. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should 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 QMK_KEYBOARD_H + +// Transparent, but indicates that this key must be blocked (for example, a layer shift key) +#define ooooooo KC_TRNS + + +#define SFT_TAB LSFT(KC_TAB) +#define WIN_TAB LGUI(KC_TAB) +#define WIN_L LGUI(KC_L) +#define WIN_V LGUI(KC_V) +#define ALT_F4 LALT(KC_F4) +#define CTL_DEL LCTL_T(KC_DEL) +#define CTL_ESC CTL_T(KC_ESC) +#define ALT_ENT ALT_T(KC_ENT) +#define ALT_TAB ALT_T(KC_TAB) + +#define OSM_LSF OSM(MOD_LSFT) +#define OSM_RSF OSM(MOD_RSFT) + +// OS shortcuts (Windows) +#define OS_COPY LCTL(KC_C) +#define OS_PAST LCTL(KC_V) +#define OS_CUT LCTL(KC_X) +#define OS_UNDO LCTL(KC_Z) +#define OS_SALL LCTL(KC_A) +#define OS_FIND LCTL(KC_F) + + +// Home row modifiers +#define GUI_A LGUI_T(KC_A) +#define ALT_R LALT_T(KC_R) +#define SFT_S LSFT_T(KC_S) +#define CRT_T LCTL_T(KC_T) // we can't call this CTL_T because that name is taken! + +#define CRT_N RCTL_T(KC_N) +#define SFT_E RSFT_T(KC_E) +#define ALT_I RALT_T(KC_I) +#define GUI_O RGUI_T(KC_O) + + +// Mouse keys +#define M_UP KC_MS_UP +#define M_DOWN KC_MS_DOWN +#define M_LEFT KC_MS_LEFT +#define M_RIGHT KC_MS_RIGHT +#define M_LCLIK KC_MS_BTN1 +#define M_RCLIK KC_MS_BTN2 +#define M_MCLIK KC_MS_BTN3 +#define M_WHLUP KC_WH_U +#define M_WHLDN KC_WH_D + + +// Windows 10 shortcuts: change desktop to the left/right +#define DESKLFT LCTL(LGUI(KC_LEFT)) +#define DESKRGT LCTL(LGUI(KC_RGHT)) + + +// Application-specific shortcuts + +// Search: defined in Everything Search Engine as the keypress to show/hide the window +#define SEARCH HYPR(KC_S) + +// Microsoft PowerToys hotkeys +// https://github.com/microsoft/PowerToys +#define PTYRUN LALT(KC_SPC) // PowerToys Run +#define PTYZONE LGUI(KC_GRV) // PowerToys FancyZones +#define PTYCOLR LGUI(LSFT(KC_C)) // PowerToys ColorPicker diff --git a/users/replicaJunction/matrix_scan.c b/users/replicaJunction/matrix_scan.c new file mode 100644 index 000000000000..969799550a40 --- /dev/null +++ b/users/replicaJunction/matrix_scan.c @@ -0,0 +1,35 @@ +/* Copyright 2021 Joshua T. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include QMK_KEYBOARD_H +#include "replicaJunction.h" + +__attribute__ ((weak)) +void matrix_scan_user_kb(void) { } + +// Runs on every matrix scan. Be careful what goes here - you can really impact the +// responsiveness of your keyboard if you add too much in this function. +void matrix_scan_user(void) { +#ifdef USER_MOUSE_JIGGLE_ENABLE + matrix_scan_mouse_jiggle(); +#endif + +#ifdef USER_SUPER_ALT_TAB_ENABLE + matrix_scan_super_alt_tab(); +#endif + + matrix_scan_user_kb(); +} diff --git a/users/replicaJunction/process_records.c b/users/replicaJunction/process_records.c new file mode 100644 index 000000000000..abce215261fa --- /dev/null +++ b/users/replicaJunction/process_records.c @@ -0,0 +1,149 @@ +/* Copyright 2021 Joshua T. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include QMK_KEYBOARD_H +#include "process_records.h" + +uint8_t mod_state; + + +__attribute__ ((weak)) +bool process_record_user_kb(uint16_t keycode, keyrecord_t *record) { + return true; +} + +// Runs for each key down or up event. +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + // Returning true here will cause QMK to continue handling the key normally. + // Returning false indicates that we've handled everything the keycode should do, and QMK + // should not continue handling the keypress. + // + // NOTE: There is also a process_record_kb function that can be defined in the keyboard- + // specific code. This allows the keyboard to have its own process_record function. + // This is supposed to be "higher" than the user function, meaning the kb function + // is shared for all keymaps for the keyboard. + // + // For this reason, I add my own function, called process_record_user_kb, and at the end + // of this function, I defer to that one if it exists. + // return process_record_user(keycode, record); + + + // Custom keycode / function handling, based on the core function + // process_record_quantum + // https://github.com/qmk/qmk_firmware/blob/master/quantum/quantum.c + + if (!( +#ifdef USER_CAPS_WORD_ENABLE + process_record_caps_word(keycode, record) && +#endif +#ifdef USER_MOUSE_JIGGLE_ENABLE + process_record_mouse_jiggle(keycode, record) && +#endif +#ifdef USER_NUM_WORD_ENABLE + process_record_num_word(keycode, record) && +#endif +#ifdef USER_SECRETS_ENABLE + process_record_secrets(keycode, record) && +#endif +#ifdef USER_SUPER_ALT_TAB_ENABLE + process_record_super_alt_tab(keycode, record) && +#endif + true)) { + return false; + } + + + // Miscellaneous keycode handling + mod_state = get_mods(); + + switch(keycode) + { + case QK_MAKE: { + if (record->event.pressed) + SEND_STRING("qmk compile --keyboard " QMK_KEYBOARD " --keymap " QMK_KEYMAP); + return false; + } + case QK_FLSH: { + if (record->event.pressed) { + SEND_STRING("qmk flash --keyboard " QMK_KEYBOARD " --keymap " QMK_KEYMAP); + } + return false; + } + case QK_VERS: { + if (record->event.pressed) { + SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE); + } + return false; + } + case PRG_EQ: { + if (record->event.pressed) { + SEND_STRING("=="); + } + return false; + } + case PRG_NE: { + if (record->event.pressed) { + SEND_STRING("!="); + } + return false; + } + case PRG_GEQ: { + if (record->event.pressed) { + SEND_STRING(">="); + } + return false; + } + case PRG_LEQ: { + if (record->event.pressed) { + SEND_STRING("<="); + } + return false; + } + case PRG_ARR: { + if (record->event.pressed) { + SEND_STRING("=>"); + } + return false; + } + + case PS_ITEM: { + if (record->event.pressed) { + SEND_STRING("$_"); + } + return false; + } + case FS_PIPE: { + if (record->event.pressed) { + SEND_STRING("|>"); + } + return false; + } + case FS_ARR: { + if (record->event.pressed) { + SEND_STRING("->"); + } + return false; + } + case SHEBANG: { + if (record->event.pressed) { + SEND_STRING("#!"); + } + return false; + } + } + + return process_record_user_kb(keycode, record); +} diff --git a/users/replicaJunction/process_records.h b/users/replicaJunction/process_records.h new file mode 100644 index 000000000000..224bc6f4ff40 --- /dev/null +++ b/users/replicaJunction/process_records.h @@ -0,0 +1,21 @@ +/* Copyright 2021 Joshua T. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should 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 QMK_KEYBOARD_H +#include "replicaJunction.h" + +bool process_record_user_kb(uint16_t keycode, keyrecord_t *record); diff --git a/users/replicaJunction/readme.md b/users/replicaJunction/readme.md index 2a9cad2729eb..9d728f902906 100644 --- a/users/replicaJunction/readme.md +++ b/users/replicaJunction/readme.md @@ -1,14 +1,93 @@ -Copyright 2018 @<replicaJunction> +replicaJunction QMK Userspace +============================= -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. +# Overview +I alternate between a few keyboards, one of which is the 44-key Keyboardio Atreus. Small keyboards require a liberal use of layers. Even though larger keyboards don't rely on layers as heavily, my muscle memory adapted to my Atreus layout, so I've ended up building several of those features in my keymaps for larger boards as well. -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. +The result, I believe, is a good compromise between ergonomics and ease of use. -You should have received a copy of the GNU General Public License -along with this program. If not, see <http://www.gnu.org/licenses/>. \ No newline at end of file +The code in this userspace is designed to be very modular. I use a few different keyboards, and I'm constantly tweaking one or another, so I want the ability to add and remove features from the firmware at compile-time. While my endgame goal is to get all the layouts to be compatible, in practice, it's been years and I'm still not to that point... + +Modular code also means that it should be easy to identify and adapt specific pieces to your own firmware. + +## Keyboards and Keymaps + +The following keyboards use the files in this userspace: + +* [Atreus](../../keyboards/atreus/keymaps/replicaJunction/readme.md) (42-key) +* [Ergodox](../../layouts/community/ergodox/replicaJunction/readme.md) +* [Keyboardio Atreus](../../keyboards/keyboardio/atreus/keymaps/replicaJunction/readme.md) (44-key) +* [XD75](../../keyboards/xd75/keymaps/replicaJunction/readme.md) + +# Features + +* **Secrets**, as [explained by Drashna](https://github.com/qmk/qmk_firmware/blob/master/users/drashna/readme_secrets.md) +* **CAPSWORD** and **NUMWORD** +* Mouse jiggler +* Super alt-tab + +## Secrets +My implementation of the "secrets" concept is very similar to Drashna's, but I've chosen to allow most of the supporting code to be committed to the repo. The only thing missing is a file called `secret_definitions.h`, which contains the actual text contained in those macros. + +To use my implementation, create a file of that name in the same directory. Make sure you've got a `.gitignore` file in place, and add these contents to the definitions file: + +```c +#pragma once +static const char * const secrets[] = { + "secret1", + "secret2", + "secret3", + "secret4" +} +``` + +Change the quoted text to the text you'd like and you're golden. If you need more (or fewer) items, you'll probably need to adjust the code in `secrets.c` as well, since it looks for up to four items in a switch case. + +## CAPSWORD and NUMWORD +The concept here is simple: more often than you'd think, you need to type a single word in ALL CAPS. An easy example for me, as a programmer, is a constant value; in most programming languages, constants are typed in all caps by convention. + +You typically have a few choices, but each one comes with a drawback. Here are the options I'm aware of: + +* Use proper typing technique and alternate which hand holds Shift for each keypress + * This can often end up requiring you to switch / re-press Shift again and again, making this a tedious process +* Hold a single Shift key down + * This can lead to uncomfortable finger gymnastics +* Hit the Caps Lock key, then hit it again when you're done + * Requires you to remember to hit it again, meaning a higher cognitive load + * In some layouts for smaller keyboards, Caps Lock is not easily accessible (sometimes not mapped at all) + +The solution to this problem is CAPSWORD. When enabled, it activates Caps Lock and begins running an additional callback on each keypress. If the keypress is an alphanumeric key or one of a specific few symbols (such as the underscore), nothing happens. Otherwise, before processing the keypress, Caps Lock is disabled again. + +NUMWORD is a similar concept, but has a slightly more elaborate implementation. There's a bit of extra logic in the NUMWORD code that allows the keycode to act as a tap/hold key as well. Tapping enables NUMWORD while number keys are in use, while holding the key enables a number layer for the duration of the key hold and disables it again afterwards. + +**Note:** The implementation of NUMWORD requires that the keyboard's layer definitions be accessible in a header file. In my case, since I use a fairly standard set of layers, I've declared it in my userspace. + +## Mouse Jiggler +This adds a keycode that will move the mouse cursor on each matrix scan. Used to prevent the screen from locking if you're temporarily doing something else (working on a different machine, reading / writing, etc.). + +When you press the keycode, the keyboard will write the text "Mouse jiggler enabled" to signify that the behavior is active. I suggest opening a Notepad window before pressing the key. + +Pressing any key will automatically disable the feature again. This is because it causes a huge hit to the reliability and performance of the keyboard while it's active (adding stuff to every matrix scan will do that). I kept forgetting to turn it off before trying to use the keyboard again, so I decided to make it automatically disable itself. + +Enable this by setting `USER_MOUSE_JIGGLE_ENABLE = yes` in your `rules.mk` file. The feature also depends on the Mouse Keys feature, so ensure you don't disable `MOUSEKEY_ENABLE`. + +## Super Alt-Tab +Taken [straight out of the QMK documentation](https://docs.qmk.fm/#/feature_macros?id=super-alt%E2%86%AFtab), this is an easy way to shift between a couple different windows. I use it with a very low interval when I'm alternating back and forth between two known windows with no real need for the visual feedback and thought. If you want to be able to browse the open windows before the function releases Alt, I'd suggest raising `USER_SUPER_ALT_TAB_TIMEOUT` to a higher value. + +# Credits +I'm absolutely sure I've missed a few sources here. If you see something in my code that you think is yours and isn't credited here, I sincerely apologize. + +[bpruitt-goddard](https://github.com/qmk/qmk_firmware/blob/master/keyboards/ergodox_ez/keymaps/bpruitt-goddard/readme.md) +* Dynamic macro tap-dance (no longer used, but I did use this for a while) + +[Drashna](https://github.com/qmk/qmk_firmware/blob/master/users/drashna/readme.md) +* Secrets concept and basic implementation +* "Wrappers" concept (no longer used, but I did use this for a while) + +[Treeman](https://github.com/treeman/qmk_firmware/blob/master/keyboards/kyria/keymaps/treeman) +* CAPSWORD and NUMBERWORD concept + * I re-implented some of the code based on my own prefences, but I did use some implementation code from here + * [Treeman's blog post](https://www.jonashietala.se/blog/2021/06/03/the-t-34-keyboard-layout/) provides more context on these features, and is a great read + +[QMK issue #452](https://github.com/qmk/qmk_firmware/issues/452) +* Helped clarify a good organizational structure for the individual features in this userspace diff --git a/users/replicaJunction/replicaJunction.c b/users/replicaJunction/replicaJunction.c index f0bc59d25705..55d8b7716619 100644 --- a/users/replicaJunction/replicaJunction.c +++ b/users/replicaJunction/replicaJunction.c @@ -1,149 +1,25 @@ +/* Copyright 2021 Joshua T. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include QMK_KEYBOARD_H #include "replicaJunction.h" -#include "version.h" - -#ifdef TAP_DANCE_ENABLE -void dance_layer(qk_tap_dance_state_t *state, void *user_data) -{ - uint8_t layer = biton32(layer_state); - - if (state->count >= 5) - { - // 5 or more taps resets the keyboard - reset_keyboard(); - } - #ifdef L_QWERTY - else if (state->count == 3) - { - // Triple tap changes to QWERTY layer - if (layer == L_QWERTY) - { - layer_off(L_QWERTY); - } - else - { - layer_on(L_QWERTY); - } - } - #endif - #ifdef L_NUM - else if (state->count == 2) - { - // Double tap toggles Number layer - if (layer == L_NUM) - { - layer_off(L_NUM); - } - else - { - layer_on(L_NUM); - } - } - #endif - else - { - // Single tap sends Escape, and also turns off layers - // That's mostly in case I get stuck and forget where I am - #ifdef L_NUM - layer_off(L_NUM); - #endif - #ifdef L_EXTEND - layer_off(L_EXTEND); - #endif - #ifdef L_SYMBOL - layer_off(L_SYMBOL); - #endif - #ifdef L_QWERTY - layer_off(L_QWERTY); - #endif - register_code(KC_ESC); - unregister_code(KC_ESC); - } -}; - -// Tap Dance Definitions -// Note - this needs to come AFTER the function is declared -qk_tap_dance_action_t tap_dance_actions[] = { - [TD_LAYER_TOGGLE] = ACTION_TAP_DANCE_FN(dance_layer) -}; - -#endif // TAP_DANCE_ENABLE - -// These functions can be overridden in individual keymap files. -// This allows a user function to be shared for all my keyboards, while each -// keyboard can also have a keyboard-specific section. - -// Note that keymaps don't need to override these if there's nothing to -// override them with. -__attribute__ ((weak)) -void matrix_init_keymap(void) {} __attribute__ ((weak)) -void matrix_scan_keymap(void) {} +void keyboard_post_init_user_kb(void) { } -__attribute__ ((weak)) -bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { - return true; -}; - -// Runs just one time when the keyboard initializes. -void matrix_init_user(void) { - #ifdef UNICODEMAP_ENABLE - // Set Unicode input to use WinCompose - // https://github.com/samhocevar/wincompose - set_unicode_input_mode(UC_WINC); - #endif // UNICODEMAP_ENABLE - - matrix_init_keymap(); -}; - -// Runs constantly in the background, in a loop. -void matrix_scan_user(void) { - matrix_scan_keymap(); +void keyboard_post_init_user(void) { + keyboard_post_init_user_kb(); } - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - if (record->event.pressed) - return true; - - switch(keycode) - { - case RJ_MAKE: // Compiles the firmware, and adds the flash command based on keyboard bootloader - SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP - #if (defined(BOOTLOADER_DFU) || defined(BOOTLOADER_LUFA_DFU) || defined(BOOTLOADER_QMK_DFU)) - ":dfu" - #elif defined(BOOTLOADER_HALFKAY) - ":teensy" - #elif defined(BOOTLOADER_CATERINA) - ":avrdude" - #endif // bootloader options - //SS_TAP(X_ENTER) - ); - return false; - case RJ_QMKV: - SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); - return false; - case RJ_EQ: - SEND_STRING("=="); - return false; - case RJ_NEQ: - SEND_STRING("!="); - return false; - case RJ_GEQ: - SEND_STRING(">="); - return false; - case RJ_LEQ: - SEND_STRING("<="); - return false; - case RJ_GEQR: - SEND_STRING("=>"); - return false; - case RJ_DUND: - SEND_STRING("$_"); - return false; - case RJ_SELS: - SEND_STRING("select *"); - return false; - } - - return process_record_keymap(keycode, record); -}; diff --git a/users/replicaJunction/replicaJunction.h b/users/replicaJunction/replicaJunction.h index 9b5772543384..f3b7bcea0a00 100644 --- a/users/replicaJunction/replicaJunction.h +++ b/users/replicaJunction/replicaJunction.h @@ -1,114 +1,42 @@ -#pragma once - -#include "quantum.h" - -/////////////////////////////////////////////////////////////////////////////// -// Keymap definitions -/////////////////////////////////////////////////////////////////////////////// - -// Layer definitions -// #define L_COLEMAK 0 -// #define L_QWERTY 1 -// #define L_NUM 2 -// #define L_EXTEND 3 -// #define L_FUNC 4 -// #define L_GAMING 5 -// #define L_SYMBOL 6 -// #define L_LL_R 7 -// #define L_LL_S 8 -// #define L_LL_E 9 -// #define L_LL_I 10 - -// Keyboard aliases -#define ooooooo KC_TRNS - -#define MO_FUNC MO(L_FUNC) -#define TT_NUM TT(L_NUM) -#define TG_GAME TG(L_GAMING) -#define OSL_SYM OSL(L_SYMBOL) - -#define OSM_LSF OSM(MOD_LSFT) -#define OSM_RSF OSM(MOD_RSFT) - -#define KX_CTSF LCTL(KC_LSFT) -#define KX_STAB LSFT(KC_TAB) -#define KX_CGR LCTL(KC_GRV) -#define KX_PAST LCTL(LGUI(LALT(KC_V))) -#define KX_SRCH LCTL(LGUI(LALT(KC_S))) +/* Copyright 2021 Joshua T. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ -#define KX_BKNM LT(L_NUM, KC_BSPC) -#define KX_DCTL CTL_T(KC_DEL) -#define KX_NALT ALT_T(KC_ENT) -#define KX_ECTL CTL_T(KC_ESC) -#define KX_SPAC LT(L_EXTEND, KC_SPC) - -#define KX_Z_MT CTL_T(KC_Z) -#define KX_X_MT GUI_T(KC_X) -#define KX_C_MT MT(MOD_LCTL | MOD_LALT, KC_C) -#define KX_D_MT ALT_T(KC_D) - -#define KX_SLMT CTL_T(KC_SLSH) -#define KX_DOMT GUI_T(KC_DOT) -#define KX_COMT MT(MOD_LCTL | MOD_LALT, KC_COMM) -#define KX_H_MT ALT_T(KC_H) - -#ifdef L_LL_R - #define KC_R_LT LT(L_LL_R, KC_R) -#else - #define KC_R_LT KC_R +#pragma once +#include QMK_KEYBOARD_H +#include "rj_keycodes.h" +#include "rj_layers.h" +#include "keycode_aliases.h" +#include "version.h" + +#ifdef USER_CAPS_WORD_ENABLE +# include "features/caps_word.h" #endif -#ifdef L_LL_S - #define KC_S_LT LT(L_LL_S, KC_S) -#else - #define KC_S_LT KC_S +#ifdef USER_MOUSE_JIGGLE_ENABLE +# include "features/mouse_jiggle.h" #endif -#ifdef L_LL_E - #define KC_E_LT LT(L_LL_E, KC_E) -#else - #define KC_E_LT KC_E +#ifdef USER_NUM_WORD_ENABLE +# include "features/num_word.h" #endif -#ifdef L_LL_I - #define KC_I_LT LT(L_LL_I, KC_I) -#else - #define KC_I_LT KC_I +#ifdef USER_SECRETS_ENABLE +# include "features/secrets.h" #endif -// "Macro" functions -enum userspace_custom_keycodes { - RJ_MAKE = SAFE_RANGE, // QMK make command - RJ_QMKV, // QMK version - RJ_EQ, // == - RJ_NEQ, // != - RJ_GEQ, // >= - RJ_LEQ, // <= - RJ_GEQR, // => ("greater than or equal - right") - RJ_DUND, // $_ - RJ_SELS, // select * (used for PowerShell) - RJ_MUTE, // Discord mute (GUI+Shift+M) - RJ_DEAF, // Discord deafen (GUI+Shift+D) - RJ_DOVR // Toggle Discord overlay (GUI+Shift+O) -}; - -// Mouse keys -#define M_UP KC_MS_UP -#define M_DOWN KC_MS_DOWN -#define M_LEFT KC_MS_LEFT -#define M_RIGHT KC_MS_RIGHT -#define M_LCLIK KC_MS_BTN1 -#define M_RCLIK KC_MS_BTN2 -#define M_MCLIK KC_MS_BTN3 -#define M_WHLUP KC_WH_U -#define M_WHLDN KC_WH_D - -// Used in macro definitions -#define TAP(code) register_code (code); unregister_code (code); - -// Tap Dance -#ifdef TAP_DANCE_ENABLE -#define TD_LAYER_TOGGLE 0 -extern void dance_layer(qk_tap_dance_state_t *state, void *user_data); -#define TD_LAYR TD(TD_LAYER_TOGGLE) -#endif // TAP_DANCE_ENABLE +#ifdef USER_SUPER_ALT_TAB_ENABLE +# include "features/super_alt_tab.h" +#endif diff --git a/users/replicaJunction/rj_keycodes.h b/users/replicaJunction/rj_keycodes.h new file mode 100644 index 000000000000..fde2698dfe25 --- /dev/null +++ b/users/replicaJunction/rj_keycodes.h @@ -0,0 +1,63 @@ +/* Copyright 2021 Joshua T. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should 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 QMK_KEYBOARD_H + +// Custom keycodes and macros +enum userspace_custom_keycodes { + QK_MAKE = SAFE_RANGE, // QMK make command + QK_FLSH, // QMK flash command + QK_VERS, // QMK version + + // Programming macros + PRG_EQ, // == + PRG_NE, // != + PRG_GEQ, // >= + PRG_LEQ, // <= + PRG_ARR, // => + PS_ITEM, // $_ (PowerShell - $PSItem variable) + FS_PIPE, // |> (F# pipe operator) + FS_ARR, // -> (F# lambda / pattern matching) + SHEBANG, // #! + + // USER_CAPS_WORD_ENABLE + CAPWORD, + +#ifdef USER_NUM_WORD_ENABLE + NUMWORD, +#endif + + // USER_ENABLE_CUSTOM_SHIFT_CODES + // Custom characters that send different symbols than usual when shifted + KCC_COM, // , or ! + KCC_DOT, // . or @ + KCC_QUO, // ' or ~ + + // USER_MOUSE_JIGGLE_ENABLE + MS_JIGL, + + // USER_ENABLE_SUPER_ALT_TAB + SALTTAB, + + // USER_ENABLE_SECRETS + K_SECR1, + K_SECR2, + K_SECR3, + K_SECR4, + + DYNAMIC_MACRO_RANGE +}; diff --git a/users/replicaJunction/rj_layers.h b/users/replicaJunction/rj_layers.h new file mode 100644 index 000000000000..f6296af053bd --- /dev/null +++ b/users/replicaJunction/rj_layers.h @@ -0,0 +1,40 @@ +/* Copyright 2021 Joshua T. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#pragma once + +enum rj_layers { + L_BASE, + +#ifdef USER_INCLUDE_QWERTY + L_QWERTY, +#endif + +#ifdef USER_INCLUDE_GAMING_LAYER + L_GAMING, +#endif + + L_NUMBERS, + L_SYMBOLS, + L_NAVIGATION, + L_FN, + +#ifdef USER_INCLUDE_MACRO_LAYER + L_MACROS, +#endif + + _LAYER_SAFE_RANGE +}; diff --git a/users/replicaJunction/rules.mk b/users/replicaJunction/rules.mk index 30a330195dc8..addaa04d97d2 100644 --- a/users/replicaJunction/rules.mk +++ b/users/replicaJunction/rules.mk @@ -1 +1,33 @@ SRC += replicaJunction.c + +# Only load these source files if the features are enabled. Keyboards can +# enable or disable these features in their own rules.mk files. + +ifeq ($(strip $(USER_CAPS_WORD_ENABLE)), yes) + SRC += features/caps_word.c + OPT_DEFS += -DUSER_CAPS_WORD_ENABLE +endif + +ifeq ($(strip $(USER_MOUSE_JIGGLE_ENABLE)), yes) + SRC += features/mouse_jiggle.c + OPT_DEFS += -DUSER_MOUSE_JIGGLE_ENABLE +endif + +ifeq ($(strip $(USER_NUM_WORD_ENABLE)), yes) + SRC += features/num_word.c + OPT_DEFS += -DUSER_NUM_WORD_ENABLE +endif + +ifeq ($(strip $(USER_SECRETS_ENABLE)), yes) + SRC += features/secrets.c + OPT_DEFS += -DUSER_SECRETS_ENABLE +endif + +ifeq ($(strip $(USER_SUPER_ALT_TAB_ENABLE)), yes) + SRC += features/super_alt_tab.c + OPT_DEFS += -DUSER_SUPER_ALT_TAB_ENABLE +endif + +# Define these last so any other logic can set up some defines first +SRC += matrix_scan.c \ + process_records.c diff --git a/users/riblee/riblee.c b/users/riblee/riblee.c index 6e548f1d8d84..307c69720492 100644 --- a/users/riblee/riblee.c +++ b/users/riblee/riblee.c @@ -152,6 +152,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; break; + case WORKMAN: + if (record->event.pressed) { + set_single_persistent_default_layer(_WORKMAN); + } + return false; + break; case HUNGARIAN: if (record->event.pressed) { set_single_persistent_default_layer(_HUNGARIAN); @@ -169,22 +175,61 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; break; + case CG_NORM: + set_unicode_input_mode(UC_MAC); + break; + case CG_SWAP: + set_unicode_input_mode(UC_LNX); + break; } return true; }; -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE static char receive_buffer[128] = {}; static uint8_t receive_buffer_length = 0; +uint16_t startup_timer; + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + startup_timer = timer_read(); + return rotation; +} + +static void render_logo(void) { + static const char PROGMEM raw_logo[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 96, 96, 96,240,248,255, 63, 56,255,255,248, 63, 63,248,255,255, 56, 63,255,248,240, 96, 96, 96, 0, 0, 0, 0, 0,252,254, 38, 54, 60, 8,240,152,152,248,240, 24,248,224,248,120,224,240,120, 96,248,248,248,248, 32,248,248, 24, 24,240,248,248,248,240,240,248,152,152,254,254, 0, 0, 0,254,254,152,248,240, 24,248,224,240,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,219,219,219,255,255,255,240,192,143,159, 63, 0, 0, 63,159,143,192,240,255,255,255,219,219,219, 0, 0, 0, 0, 0,192,225,112, 48, 48, 48,112,225,129, 1,240,240,240,193, 1, 0, 1,193,240,240,241, 1, 1,241,240,193,225,112, 48, 0, 1, 1, 1, 1,240,241, 49, 49, 49, 0,240,240, 0,129,193,129,193,192, 0,196,135,193,192,128,128,192,192,128, 0, 0,192,128, 0,128,192,128, 0, 0,192,192,128,128,192,192,192,128, 0,128,192,128,192,192, 0,128,192,192,192,128, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 6, 6, 6, 15, 31,255,255, 31,255,255, 31,252,252, 31,255,255, 31,255,255, 31, 15, 6, 6, 6, 0, 0, 0, 0, 0, 15, 31, 56, 48, 48, 48, 60,127,103, 96, 63, 63, 0, 7, 63, 56, 31, 7, 0, 63, 63, 0, 0, 63, 63, 7, 30, 60, 48, 0, 0, 0, 0, 0, 63, 31, 3, 3, 3, 0, 63, 63, 0, 31, 63, 1, 0, 0, 0, 63, 31, 0, 1, 63, 63, 0, 0, 63, 63, 0, 7, 63, 60, 63, 7, 31, 60, 63, 15, 0, 28, 60, 54, 54, 63, 63, 0, 63, 63, 1, 0, 0, 31, 63, 54, 54, 55, 55, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,128,128,128,128,128, 0, 0,192,192,192, 0,192,192,192, 0, 0, 0, 0, 0, 0,192,192,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255, 29,127,255,247,224, 0,254,254,254, 0,255,255,255,198,254,254,254, 0, 0,255,255,255,124,254,254,214,214,222,222, 92,124,254,254,214,214,222,222, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }; -void oled_task_user(void) { + oled_write_raw_P(raw_logo, sizeof(raw_logo)); +} + +static void render_info(void) { // Keyboard Layer Status oled_write_P(PSTR("Layer: "), false); switch (get_highest_layer(layer_state)) { case _QWERTY: - oled_write_P(PSTR("Default\n"), false); + if (layer_state_cmp(default_layer_state, _QWERTY)) { + oled_write_P(PSTR("Qwerty\n"), false); + } else if (layer_state_cmp(default_layer_state, _COLEMAK)) { + oled_write_P(PSTR("Colmak\n"), false); + } else if (layer_state_cmp(default_layer_state, _DVORAK)) { + oled_write_P(PSTR("Dvorak\n"), false); + } else if (layer_state_cmp(default_layer_state, _WORKMAN)) { + oled_write_P(PSTR("Workman\n"), false); + } else if (layer_state_cmp(default_layer_state, _HUNGARIAN)) { + oled_write_P(PSTR("HUN Qwerty\n"), false); + } else { + oled_write_P(PSTR("Undefined\n"), false); + } break; case _LOWER: oled_write_P(PSTR("Lower\n"), false); @@ -200,7 +245,21 @@ void oled_task_user(void) { } // Print string received via HID RAW - oled_write_ln(receive_buffer, false); + oled_write_ln(receive_buffer, false);} + +bool oled_task_user(void) { + static bool finished_timer = false; + if (!finished_timer && (timer_elapsed(startup_timer) < 1000)) { + render_logo(); + } else { + if (!finished_timer) { + oled_clear(); + finished_timer = true; + } + render_info(); + } + return false; + } #ifdef RAW_ENABLE @@ -227,4 +286,4 @@ void raw_hid_receive(uint8_t *data, uint8_t length) { #endif -#endif \ No newline at end of file +#endif diff --git a/users/riblee/riblee.h b/users/riblee/riblee.h index a4038765a698..f7340d50b2f7 100644 --- a/users/riblee/riblee.h +++ b/users/riblee/riblee.h @@ -23,6 +23,7 @@ enum layer_names { _HUNGARIAN, _COLEMAK, _DVORAK, + _WORKMAN, _LOWER, _RAISE, _ADJUST @@ -33,6 +34,7 @@ enum custom_keycodes { HUNGARIAN, COLEMAK, DVORAK, + WORKMAN, BACKLIT }; diff --git a/users/ridingqwerty/rules.mk b/users/ridingqwerty/rules.mk index 153e5ff90530..cc53f3f53e2e 100644 --- a/users/ridingqwerty/rules.mk +++ b/users/ridingqwerty/rules.mk @@ -1,7 +1,7 @@ SRC += ridingqwerty.c \ process_records.c -BOOTMAGIC_ENABLE = lite +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite CONSOLE_ENABLE = no COMMAND_ENABLE = no UNICODE_ENABLE = no # "yes" in Atreus default keymap, blocking UNICODEMAP_ENABLE diff --git a/users/romus/romus.c b/users/romus/romus.c index 35b524f9413c..f707bb884308 100644 --- a/users/romus/romus.c +++ b/users/romus/romus.c @@ -72,7 +72,7 @@ __attribute__ ((weak)) void led_set_keymap(uint8_t usb_led) { } // Set RGBLIGHT state depending on layer void rgblight_change( uint8_t this_layer ) { // Enable RGB light; will not work without this - //rgblight_enable_noeeprom(); + //rgblight_enable_noeeprom(); // Change RGB light switch ( this_layer ) { case _DV: @@ -83,21 +83,21 @@ void rgblight_change( uint8_t this_layer ) { // Do yellow for alternate rgblight_enable_noeeprom(); rgblight_sethsv_noeeprom( 60,255,255); - + break; case _GA: // Do purple for game rgblight_enable_noeeprom(); rgblight_sethsv_noeeprom(285,255,255); - + break; case _NU: // Do azure for number rgblight_enable_noeeprom(); rgblight_sethsv_noeeprom(186,200,255); - + break; case _SE: @@ -105,27 +105,27 @@ void rgblight_change( uint8_t this_layer ) { rgblight_enable_noeeprom(); rgblight_sethsv_noeeprom( 16,255,255); - + break; case _MO: // Do green for mouse rgblight_enable_noeeprom(); rgblight_sethsv_noeeprom(120,255,255); - + break; case _MU: // Do orange for music - + rgblight_enable_noeeprom(); rgblight_sethsv_noeeprom( 39,255,255); - + break; default: // Something went wrong rgblight_enable_noeeprom(); rgblight_sethsv_noeeprom( 0,255,255); - + break; } } @@ -189,7 +189,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; break; -#endif +#endif // Lock functionality: These layers are locked if the LOCKED buttons are // pressed. Otherwise, they are momentary toggles @@ -225,7 +225,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; break; - + // Layer switches with sound case K_GAMES: if (record->event.pressed) { @@ -546,7 +546,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { |*-----LAYER CHANGE-----*| \*----------------------*/ -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { state = layer_state_set_keymap (state); #ifdef RGBLIGHT_ENABLE @@ -554,4 +554,4 @@ uint32_t layer_state_set_user(uint32_t state) { rgblight_change( biton32(state) ); #endif return state; -} \ No newline at end of file +} diff --git a/users/romus/rules.mk b/users/romus/rules.mk index 12bbabb020b8..32a5ab0923bf 100644 --- a/users/romus/rules.mk +++ b/users/romus/rules.mk @@ -10,14 +10,12 @@ ifndef BLUETOOTH_ENABLE BLUETOOTH_ENABLE = no # No bluetooth endif COMMAND_ENABLE = no # Some bootmagic thing i dont use -BOOTMAGIC_ENABLE = no # Access to EEPROM settings, not needed +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite CONSOLE_ENABLE = no # Allows console output with a command SLEEP_LED_ENABLE = no # Breathes LED's when computer is asleep. Untested. NKRO_ENABLE = no # Default is 6KRO which is plenty MIDI_ENABLE = no # Untested feature KEY_LOCK_ENABLE = no # Allows locking any key. Not used -API_SYSEX_ENABLE = no # Allows OS to send signals. - # Disabling this makes it compile, i dont know why # VARIABLE_TRACE = no # Allows debugging variables diff --git a/users/sethBarberee/sethBarberee.c b/users/sethBarberee/sethBarberee.c index 536f3f921b37..c5fceee68d63 100644 --- a/users/sethBarberee/sethBarberee.c +++ b/users/sethBarberee/sethBarberee.c @@ -58,7 +58,7 @@ void keyboard_post_init_user(void) __attribute__((weak)) void suspend_power_down_keymap(void) {} void suspend_power_down_user(void) { -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE oled_off(); #endif suspend_power_down_keymap(); diff --git a/users/sigul/sigul.c b/users/sigul/sigul.c index 0995ca7360dd..16bcd411d999 100644 --- a/users/sigul/sigul.c +++ b/users/sigul/sigul.c @@ -40,13 +40,13 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case IT_APDQ: if (record->event.pressed){ if (get_mods() & MOD_BIT(KC_LSHIFT) || get_mods() & MOD_BIT(KC_RSHIFT)){ - register_code16(IT_DQOT); + register_code16(IT_DQUO); } else { - register_code16(IT_APOS); + register_code16(IT_QUOT); } } else { - unregister_code16(IT_DQOT); - unregister_code16(IT_APOS); + unregister_code16(IT_DQUO); + unregister_code16(IT_QUOT); } return false; break; @@ -55,13 +55,13 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (record->event.pressed){ if (get_mods() & MOD_BIT(KC_LSHIFT) || get_mods() & MOD_BIT(KC_RSHIFT)){ unregister_code16(KC_LSFT); - register_code16(IT_LESS); + register_code16(IT_LABK); register_code16(KC_LSFT); } else { register_code16(IT_COMM); } } else { - unregister_code16(IT_LESS); + unregister_code16(IT_LABK); unregister_code16(IT_COMM); } return false; @@ -70,12 +70,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case IT_DTMR: if (record->event.pressed){ if (get_mods() & MOD_BIT(KC_LSHIFT) || get_mods() & MOD_BIT(KC_RSHIFT)){ - register_code16(IT_MORE); + register_code16(IT_RABK); } else { register_code16(IT_DOT); } } else { - unregister_code16(IT_MORE); + unregister_code16(IT_RABK); unregister_code16(IT_DOT); } return false; @@ -84,12 +84,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case IT_SLQS: if (record->event.pressed){ if (get_mods() & MOD_BIT(KC_LSHIFT) || get_mods() & MOD_BIT(KC_RSHIFT)){ - register_code16(IT_QST); + register_code16(IT_QUES); } else { register_code16(IT_SLSH); } } else { - unregister_code16(IT_QST); + unregister_code16(IT_QUES); unregister_code16(IT_SLSH); } return false; diff --git a/users/sigul/sigul.h b/users/sigul/sigul.h index 6adc67063864..8f806017cc7d 100644 --- a/users/sigul/sigul.h +++ b/users/sigul/sigul.h @@ -15,10 +15,10 @@ enum userspace_layers { enum userspace_custom_keycodes { QWERTY = SAFE_RANGE, // custom keycodes for an Italian ANSI layout with accented vowels - IT_CMLS, // IT_COMM and IT_LESS when combined with shift - IT_DTMR, // IT_DOT and IT_MORE when combined with shift - IT_SLQS, // IT_SLSH and IT_QST when combined with shift - IT_APDQ, // IT_APO and IT_DQOT when combined with shift + IT_CMLS, // IT_COMM and IT_LABK when combined with shift + IT_DTMR, // IT_DOT and IT_RABK when combined with shift + IT_SLQS, // IT_SLSH and IT_QUES when combined with shift + IT_APDQ, // IT_APO and IT_DQUO when combined with shift IT_SCCL, // IT_SMCL and IT_COLN when combined with shift SECRET0, SECRET1, diff --git a/users/snowe/oled_setup.c b/users/snowe/oled_setup.c index b3e04df458e5..dfc4b085e30e 100644 --- a/users/snowe/oled_setup.c +++ b/users/snowe/oled_setup.c @@ -16,7 +16,7 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE # include QMK_KEYBOARD_H # include "quantum.h" @@ -121,7 +121,7 @@ void render_bootmagic_status(void) { oled_write_ln(wpm, false); } -void oled_task_user(void) { +bool oled_task_user(void) { if (is_master) { oled_render_layer_state(); oled_render_keylog(); @@ -136,6 +136,7 @@ void oled_task_user(void) { render_stars(); # endif } + return false; } -#endif // OLED_DRIVER_ENABLE +#endif // OLED_ENABLE diff --git a/users/snowe/oled_setup.h b/users/snowe/oled_setup.h index 031ce6bd0878..7281dcd7666d 100644 --- a/users/snowe/oled_setup.h +++ b/users/snowe/oled_setup.h @@ -18,7 +18,7 @@ #pragma once #include "quantum.h" -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE # include "oled_driver.h" # define OLED_RENDER_WPM_COUNTER " WPM: " #endif @@ -27,4 +27,4 @@ #endif #ifdef OCEAN_DREAM_ENABLE # include "ocean_dream.h" -#endif \ No newline at end of file +#endif diff --git a/users/snowe/readme_ocean_dream.md b/users/snowe/readme_ocean_dream.md index ca15dd47cdc8..688afc899824 100644 --- a/users/snowe/readme_ocean_dream.md +++ b/users/snowe/readme_ocean_dream.md @@ -41,7 +41,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { ``` 4. In your `rules.mk` to make it easier to turn the animation on/off, add ```makefile -ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes) +ifeq ($(strip $(OLED_ENABLE)), yes) #... your code here... ifdef OCEAN_DREAM_ENABLE @@ -59,7 +59,8 @@ endif You're done! Now you can enable **Ocean Dream** by simply turning on the OLED feature ```makefile -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 ``` And if you want to disable it without turning off the OLED Driver you can simply set diff --git a/users/snowe/rules.mk b/users/snowe/rules.mk index a6e152c1cf2c..f188c9022965 100644 --- a/users/snowe/rules.mk +++ b/users/snowe/rules.mk @@ -1,6 +1,6 @@ -ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes) +ifeq ($(strip $(OLED_ENABLE)), yes) SRC += oled_setup.c ifdef OCEAN_DREAM_ENABLE diff --git a/users/snowe/snowe.h b/users/snowe/snowe.h index 4453b2646947..21764ca50760 100644 --- a/users/snowe/snowe.h +++ b/users/snowe/snowe.h @@ -35,7 +35,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. //#if defined(RGB_MATRIX_ENABLE) //# include "rgb_matrix_stuff.h" //#endif -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE # include "oled_setup.h" #endif diff --git a/users/spacebarracecar/spacebarracecar.c b/users/spacebarracecar/spacebarracecar.c index bbd864aa936d..3141b8758ee3 100644 --- a/users/spacebarracecar/spacebarracecar.c +++ b/users/spacebarracecar/spacebarracecar.c @@ -178,11 +178,11 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; case CU_AE: - UML(DE_AE) + UML(DE_ADIA) case CU_OE: - UML(DE_OE) + UML(DE_ODIA) case CU_UE: - UML(DE_UE) + UML(DE_UDIA) case CU_SS: if(record->event.pressed) { timer_timeout(); @@ -291,9 +291,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; case CU_COMM: - SHIFT_NO(DE_COMM, DE_LESS) + SHIFT_NO(DE_COMM, DE_LABK) case CU_DOT: - SHIFT_NORM(DE_DOT, DE_LESS) + SHIFT_NORM(DE_DOT, DE_LABK) case CU_SLSH: SHIFT_ALL(DE_7, DE_SS) case CU_SCLN: @@ -315,7 +315,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case CU_RBRC: SHIFT_ALGR(DE_9, DE_0) case CU_BSLS: - SHIFT_ALGR(DE_SS, DE_LESS) + SHIFT_ALGR(DE_SS, DE_LABK) case CU_Z: CTRL(DE_Z, KC_Z) case CU_Y: diff --git a/users/spidey3/config.h b/users/spidey3/config.h index 7062fde0305a..f5f5e07f0fa0 100644 --- a/users/spidey3/config.h +++ b/users/spidey3/config.h @@ -1,7 +1,7 @@ #pragma once -#define LED_DISABLE_WHEN_USB_SUSPENDED true -#define RGB_DISABLE_WHEN_USB_SUSPENDED true +#define LED_DISABLE_WHEN_USB_SUSPENDED +#define RGB_DISABLE_WHEN_USB_SUSPENDED #define RGBLIGHT_LAYERS #define RGBLIGHT_MAX_LAYERS 17 #define RGBLIGHT_LAYER_BLINK diff --git a/users/spidey3/rules.mk b/users/spidey3/rules.mk index bd378f545e86..de8ed113e773 100644 --- a/users/spidey3/rules.mk +++ b/users/spidey3/rules.mk @@ -1,4 +1,4 @@ -BOOTMAGIC_ENABLE = lite +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite CONSOLE_ENABLE = yes # Console for debug BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality LTO_ENABLE = yes diff --git a/users/spotpuff/rules.mk b/users/spotpuff/rules.mk index 27905483738a..7b4abdbc1bae 100644 --- a/users/spotpuff/rules.mk +++ b/users/spotpuff/rules.mk @@ -1 +1 @@ -BOOTMAGIC_ENABLE = no +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite diff --git a/users/stanrc85/config.h b/users/stanrc85/config.h index 60592c3c6b1b..b883a21dd261 100644 --- a/users/stanrc85/config.h +++ b/users/stanrc85/config.h @@ -12,9 +12,15 @@ #ifdef KEYBOARD_sneakbox_aliceclone #define INDICATOR_PIN_0 D7 #define INDICATOR_PIN_1 D6 - #define INDICATOR_PIN_2 D4 + #define INDICATOR_PIN_2 D4 #endif #ifdef KEYBOARD_boardsource_the_mark #define RGB_MATRIX_KEYPRESSES -#endif \ No newline at end of file +#endif + +#ifdef KEYBOARD_jacky_studio_bear_65 + #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON + #define ENABLE_RGB_MATRIX_MULTISPLASH + #define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#endif diff --git a/users/stanrc85/layer_rgb.c b/users/stanrc85/layer_rgb.c index 58f17489a125..6d57198f3bfe 100644 --- a/users/stanrc85/layer_rgb.c +++ b/users/stanrc85/layer_rgb.c @@ -4,7 +4,7 @@ void matrix_init_user(void) { rgblight_setrgb(0xFF, 0x00, 0x00); }; -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { switch (biton32(state)) { case 0: rgblight_setrgb (0xFF, 0x00, 0x00); diff --git a/users/stanrc85/rgb_layers.c b/users/stanrc85/rgb_layers.c new file mode 100644 index 000000000000..7138323f23f3 --- /dev/null +++ b/users/stanrc85/rgb_layers.c @@ -0,0 +1,36 @@ + /* Copyright 2021 Stanrc85 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "stanrc85.h" + +layer_state_t layer_state_set_user(layer_state_t state) { + switch (get_highest_layer(state)) { + case _FN1_60: + break; + case _FN2_60: + rgb_matrix_mode_noeeprom(RGB_MATRIX_RAINBOW_MOVING_CHEVRON); + break; + case _DEFAULT: + rgb_matrix_mode_noeeprom(RGB_MATRIX_MULTISPLASH); + break; + case _QWERTY: + rgb_matrix_mode_noeeprom(RGB_MATRIX_TYPING_HEATMAP); + break; + default: // for any other layers, or the default layer + break; + } + return state; +} diff --git a/users/stanrc85/rgb_timeout.c b/users/stanrc85/rgb_timeout.c new file mode 100644 index 000000000000..4aa242781615 --- /dev/null +++ b/users/stanrc85/rgb_timeout.c @@ -0,0 +1,62 @@ +/* +Copyright 2021 Stanrc85 + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +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 "stanrc85.h" + +// Backlight timeout feature +// Modified from https://www.reddit.com/r/MechanicalKeyboards/comments/ix65z0/looking_for_qmk_led_idle_timeout_info/g64yov7/ +#define BACKLIGHT_TIMEOUT 10 // in minutes +static uint16_t idle_timer = 0; +static uint8_t halfmin_counter = 0; +static bool led_on = true; +static bool rgb_on = true; +static bool rgb_was_on = false; + +void matrix_scan_user(void) { + // idle_timer needs to be set one time + if (idle_timer == 0) idle_timer = timer_read(); + if ( (led_on && timer_elapsed(idle_timer) > 30000) || (rgb_on && timer_elapsed(idle_timer) > 30000)) { + halfmin_counter++; + idle_timer = timer_read(); + } + + if ( (led_on && halfmin_counter >= BACKLIGHT_TIMEOUT * 2) || (rgb_on && halfmin_counter >= BACKLIGHT_TIMEOUT * 2)) { + if(rgblight_is_enabled()) { + rgb_was_on = true; + rgblight_disable_noeeprom(); + led_on = false; + rgb_on = false; + } else { + rgb_was_on = false; + } + halfmin_counter = 0; + } +}; + +bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { + if (record->event.pressed) { + if (led_on == false || rgb_on == false ) { + if (rgb_was_on) { + rgblight_enable_noeeprom(); + led_on = true; + rgb_on = true; + } + } + idle_timer = timer_read(); + halfmin_counter = 0; + } + return true; +} diff --git a/users/stanrc85/rgblight_layers_osa.c b/users/stanrc85/rgblight_layers_osa.c index 59366fa34a95..aff96c96992b 100644 --- a/users/stanrc85/rgblight_layers_osa.c +++ b/users/stanrc85/rgblight_layers_osa.c @@ -11,7 +11,7 @@ const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS( const rgblight_segment_t PROGMEM my_layer1_layer[] = RGBLIGHT_LAYER_SEGMENTS( {2, 2, HSV_GREEN}, {6, 2, HSV_GREEN} -); +); const rgblight_segment_t PROGMEM my_layer2_layer[] = RGBLIGHT_LAYER_SEGMENTS( {2, 2, HSV_BLUE}, @@ -60,7 +60,7 @@ layer_state_t layer_state_set_user(layer_state_t state) { } bool led_update_user(led_t led_state) { - //rgblight_set_layer_state(0, led_state.caps_lock); + rgblight_set_layer_state(0, led_state.caps_lock); writePin(C7, led_state.caps_lock); writePin(C6, middle); writePin(B6, bottom); diff --git a/users/stanrc85/rules.mk b/users/stanrc85/rules.mk index 805a2929f96c..d17f2df007fb 100644 --- a/users/stanrc85/rules.mk +++ b/users/stanrc85/rules.mk @@ -26,6 +26,7 @@ endif ifeq ($(strip $(KEYBOARD)), tkc/osav2) SRC += rgblight_layers_osa.c VELOCIKEY_ENABLE=yes + SRC += rgb_timeout.c endif ifeq ($(strip $(KEYBOARD)), boardsource/the_mark) RGB_MATRIX_ENABLE = yes @@ -35,4 +36,14 @@ ifeq ($(strip $(KEYBOARD)), jacky_studio/bear_65) BACKLIGHT_ENABLE = yes RGB_MATRIX_ENABLE = yes RGBLIGHT_ENABLE = no + SRC += rgb_layers.c +endif +ifeq ($(strip $(KEYBOARD)), tkc/portico) + SRC += rgb_timeout.c +endif +ifeq ($(strip $(KEYBOARD)), kiwikey/wanderland) + SRC += rgb_timeout.c +endif +ifeq ($(strip $(KEYBOARD)), mechlovin/adelais/rgb_led/rev2) + SRC += rgb_layers.c endif diff --git a/users/talljoe/rules.mk b/users/talljoe/rules.mk index 42ffb411a90b..9338568b97b5 100644 --- a/users/talljoe/rules.mk +++ b/users/talljoe/rules.mk @@ -13,4 +13,4 @@ TAP_DANCE_ENABLE=yes CONSOLE_ENABLE=no COMMAND_ENABLE=no DYNAMIC_KEYMAP_ENABLE=no -BOOTMAGIC_ENABLE=full +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite diff --git a/users/talljoe/talljoe.h b/users/talljoe/talljoe.h index f151bde685c5..cdb01a97449d 100644 --- a/users/talljoe/talljoe.h +++ b/users/talljoe/talljoe.h @@ -92,6 +92,7 @@ enum layers { #define MLT_E LT(_NUM, KC_E) #ifndef SWAP_HANDS_ENABLE +#undef SH_T #define SH_T #endif diff --git a/users/talljoe/visualizer.c b/users/talljoe/visualizer.c deleted file mode 100644 index c17b56706bfc..000000000000 --- 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/tominabox1/config.h b/users/tominabox1/config.h index 2a8c1e943db2..4a2433eb0bd5 100644 --- a/users/tominabox1/config.h +++ b/users/tominabox1/config.h @@ -31,7 +31,7 @@ // RGB_Matrix settings #ifdef RGB_MATRIX_ENABLE #define RGB_MATRIX_KEYPRESSES // reacts to keypresses - #define RGB_DISABLE_WHEN_USB_SUSPENDED true // 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 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash. #define RGB_MATRIX_HUE_STEP 8 @@ -41,33 +41,33 @@ #define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT /* Disable the animations you don't want/need. You will need to disable a good number of these because they take up a lot of space. Disable until you can successfully compile your firmware. */ - // #define DISABLE_RGB_MATRIX_ALPHAS_MODS - // #define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN - #define DISABLE_RGB_MATRIX_BREATHING - // #define DISABLE_RGB_MATRIX_CYCLE_ALL - // #define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT - // #define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN - // #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN - // #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL - #define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON - #define DISABLE_RGB_MATRIX_DUAL_BEACON - #define DISABLE_RGB_MATRIX_RAINBOW_BEACON - #define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS - // #define DISABLE_RGB_MATRIX_RAINDROPS - #define DISABLE_RGB_MATRIX_JELLYBEN_RAINDROPS - // # define DISABLE_RGB_MATRIX_TYPING_HEATMAP - #define DISABLE_RGB_MATRIX_DIGITAL_RAIN - #define DISABLE_RGB_MATRIX_SOLID_REACTIVE - #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE - // #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE - // #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS - // #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS - #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS - #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS - #define DISABLE_RGB_MATRIX_SPLASH - #define DISABLE_RGB_MATRIX_MULTISPLASH - #define DISABLE_RGB_MATRIX_SOLID_SPLASH - #define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH +// #undef ENABLE_RGB_MATRIX_ALPHAS_MODS +// #undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# undef ENABLE_RGB_MATRIX_BREATHING +// #undef ENABLE_RGB_MATRIX_CYCLE_ALL +// #undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +// #undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +// #undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN +// #undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# undef ENABLE_RGB_MATRIX_DUAL_BEACON +# undef ENABLE_RGB_MATRIX_RAINBOW_BEACON +# undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +// #undef ENABLE_RGB_MATRIX_RAINDROPS +# undef ENABLE_RGB_MATRIX_JELLYBEN_RAINDROPS +// # undef ENABLE_RGB_MATRIX_TYPING_HEATMAP +# undef ENABLE_RGB_MATRIX_DIGITAL_RAIN +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +# undef ENABLE_RGB_MATRIX_SPLASH +# undef ENABLE_RGB_MATRIX_MULTISPLASH +# undef ENABLE_RGB_MATRIX_SOLID_SPLASH +# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH #endif //RGB_MATRIX_ENABLE // Hex size reduction options diff --git a/users/tominabox1/rules.mk b/users/tominabox1/rules.mk index 22b6a858f4b3..1df563464045 100644 --- a/users/tominabox1/rules.mk +++ b/users/tominabox1/rules.mk @@ -5,13 +5,14 @@ CONSOLE_ENABLE = no TAP_DANCE_ENABLE = yes NKRO_ENABLE = yes -BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite ifeq ($(strip $(KEYBOARD)), crkbd/rev1) RGB_MATRIX_ENABLE = yes EXTRAFLAGS += -flto BOOTLOADER = qmk-dfu -OLED_DRIVER_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 endif ifeq ($(strip $(KEYBOARD)), lazydesigners/dimple) diff --git a/users/tominabox1/tominabox1.c b/users/tominabox1/tominabox1.c index d2e9e1258127..7322ead0dc3c 100644 --- a/users/tominabox1/tominabox1.c +++ b/users/tominabox1/tominabox1.c @@ -126,7 +126,7 @@ layer_state_t layer_state_set_keymap (layer_state_t state) { return state; } -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { state = update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); switch (biton32(state)) { case _LOWER: @@ -172,10 +172,10 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { #endif if (record->event.pressed) { - #ifdef OLED_DRIVER_ENABLE + #ifdef OLED_ENABLE oled_timer = timer_read(); oled_on(); - #endif // OLED_DRIVER_ENABLE + #endif // OLED_ENABLE switch (keycode) { case KC_BBB: if (record->event.pressed) { @@ -193,7 +193,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } #ifdef KEYBOARD_crkbd_rev1 -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE void render_logo(void) { static const char PROGMEM logo[] = { 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, @@ -262,7 +262,7 @@ void render_status_main(void) { __attribute__ ((weak)) void oled_task_keymap(void) {} -void oled_task_user(void) { +bool oled_task_user(void) { if (timer_elapsed(oled_timer) > 20000) { oled_off(); @@ -275,6 +275,7 @@ void oled_task_user(void) { oled_scroll_left(); } oled_task_keymap(); + return false; } #endif // OLED_Driver diff --git a/users/turbomech/backupturbomech.c b/users/turbomech/backupturbomech.c index 2815aa452f37..aaea05df96c3 100644 --- a/users/turbomech/backupturbomech.c +++ b/users/turbomech/backupturbomech.c @@ -296,7 +296,7 @@ case RGB_MODE_GRADIENT: } -uint32_t layer_state_set_user(uint32_t state) { +layer_state_t layer_state_set_user(layer_state_t state) { #ifdef RGBLIGHT_ENABLE uint8_t default_layer = eeconfig_read_default_layer(); if (rgb_layer_change) { diff --git a/users/txkyel/config.h b/users/txkyel/config.h new file mode 100644 index 000000000000..beb0a287a97c --- /dev/null +++ b/users/txkyel/config.h @@ -0,0 +1,18 @@ +/* Copyright 2021 Kyle Xiao + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should 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 TAPPING_TERM 200 diff --git a/users/txkyel/readme.md b/users/txkyel/readme.md new file mode 100644 index 000000000000..6f86fe28f862 --- /dev/null +++ b/users/txkyel/readme.md @@ -0,0 +1,20 @@ +# txkyel's Userspace + +Read up on my implementation of tap dancing journey in learning QMK thus far in [tap_dance.md](tap_dance.md). + +## Licensing + +Copyright 2021 Kyle Xiao kylexiao20@gmail.com @txkyel + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. diff --git a/users/txkyel/rules.mk b/users/txkyel/rules.mk new file mode 100644 index 000000000000..f7b729c83c26 --- /dev/null +++ b/users/txkyel/rules.mk @@ -0,0 +1,5 @@ +SRC += txkyel.c + +ifeq ($(strip $(TAP_DANCE_ENABLE)), yes) + SRC += tap_dance.c +endif diff --git a/users/txkyel/tap_dance.c b/users/txkyel/tap_dance.c new file mode 100644 index 000000000000..9c1d27e8d80c --- /dev/null +++ b/users/txkyel/tap_dance.c @@ -0,0 +1,51 @@ +/* Copyright 2021 Kyle Xiao + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "tap_dance.h" + +#ifdef TAP_DANCE_ENABLE +void qk_tap_dance_tap_hold_on_each_tap(qk_tap_dance_state_t *state, void *user_data) { + qk_tap_dance_tap_hold_t *kc = (qk_tap_dance_tap_hold_t *)user_data; + + // second tap within term, pseudo reset tap dance + if (state->count == 2) { + tap_code16(kc->t); + state->count = 1; + state->timer = timer_read(); + } +} + +void qk_tap_dance_tap_hold_on_finish(qk_tap_dance_state_t *state, void *user_data) { + qk_tap_dance_tap_hold_t *kc = (qk_tap_dance_tap_hold_t *)user_data; + + kc->tapped = state->interrupted || !state->pressed; + if (kc->tapped) { + register_code16(kc->t); + } else { + register_code16(kc->h); + } +} + +void qk_tap_dance_tap_hold_on_reset(qk_tap_dance_state_t *state, void *user_data) { + qk_tap_dance_tap_hold_t *kc = (qk_tap_dance_tap_hold_t *)user_data; + + if (kc->tapped) { + unregister_code16(kc->t); + } else { + unregister_code16(kc->h); + } + kc->tapped = true; +} +#endif diff --git a/users/txkyel/tap_dance.h b/users/txkyel/tap_dance.h new file mode 100644 index 000000000000..af56a9863b6e --- /dev/null +++ b/users/txkyel/tap_dance.h @@ -0,0 +1,33 @@ +/* Copyright 2021 Kyle Xiao + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should 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 "txkyel.h" + +#ifdef TAP_DANCE_ENABLE +typedef struct { + uint16_t t; + uint16_t h; + bool tapped; +} qk_tap_dance_tap_hold_t; + +# define ACTION_TAP_HOLD(t, h) \ + { .fn = {qk_tap_dance_tap_hold_on_each_tap, qk_tap_dance_tap_hold_on_finish, qk_tap_dance_tap_hold_on_reset}, .user_data = (void *)&((qk_tap_dance_tap_hold_t){t, h, true}), } +# define ACTION_TAP_HOLD_CTL(t) ACTION_TAP_HOLD(t, C(t)) + +void qk_tap_dance_tap_hold_on_each_tap(qk_tap_dance_state_t *state, void *user_data); +void qk_tap_dance_tap_hold_on_finish(qk_tap_dance_state_t *state, void *user_data); +void qk_tap_dance_tap_hold_on_reset(qk_tap_dance_state_t *state, void *user_data); +#endif diff --git a/users/txkyel/tap_dance.md b/users/txkyel/tap_dance.md new file mode 100644 index 000000000000..e36001f129f1 --- /dev/null +++ b/users/txkyel/tap_dance.md @@ -0,0 +1,173 @@ +# Tap Hold Custom Tap Dance + +This custom tap dance functions similarly to the single tap and hold functionality of '[Quad Function Tap-Dance](https://docs.qmk.fm/#/feature_tap_dance?id=example-4)' by [DanielGGordon](https://github.com/danielggordon) with a reduced size per tap dance declared. + +## Motivation + +I first discovered tap dancing through [Ben Vallack](https://www.youtube.com/c/BenVallack) and was interested in the functionality of tap dancing demonstrated in his [tap dancing video](https://www.youtube.com/watch?v=pTMbzmf2sz8). And so I set off to implement my own tap dances emulating this functionality. + +## Custom Tap Dance Action + +Similar to the the action definitions in [`process_tap_dance.h`](../../quantum/process_keycode/process_tap_dance.h); I have created a custom macro and data structure used to declare tap dance actions: + +```c +typedef struct { + uint16_t t; + uint16_t h; + bool tapped; +} qk_tap_dance_tap_hold_t; + +#define ACTION_TAP_HOLD(t, h) \ + { .fn = {qk_tap_dance_tap_hold_on_each_tap, qk_tap_dance_tap_hold_on_finish, qk_tap_dance_tap_hold_on_reset}, .user_data = (void *)&((qk_tap_dance_tap_hold_t){t, h, true}), } +``` + +This allows the user to set the keycode registered when tapping `t`, the keycode registered when holding `h`, as well as prepares a boolean storing logic allowing the the reset function to determine whether a tap or hold was registered `tapped`. + +## Custom Tap Dance Functions + +The three handlers backing Tap Hold are really simple. + +The `on_each_tap` handler triggers a tap if a second tap is made within the tapping term. Following that it performs a pseudo reset, setting the count back to 1 and resetting the timer. + +```c +void qk_tap_dance_tap_hold_on_each_tap(qk_tap_dance_state_t *state, void *user_data) { + qk_tap_dance_tap_hold_t *kc = (qk_tap_dance_tap_hold_t *)user_data; + + if (state->count == 2) { + tap_code16(kc->t); + state->count = 1; + state->timer = timer_read(); + } +} +``` + +The `on_finished` handler determines whether the dance was a tap or a hold, saving the result in `kc->tapped` for `on_reset` later. After, the handler registers the respctive keycode. + +```c +void qk_tap_dance_tap_hold_on_finish(qk_tap_dance_state_t *state, void *user_data) { + qk_tap_dance_tap_hold_t *kc = (qk_tap_dance_tap_hold_t *)user_data; + + kc->tapped = state->interrupted || !state->pressed; + if (kc->tapped) { + register_code16(kc->t); + } else { + register_code16(kc->h); + } +} +``` + +Finally, the `on_reset` handler unregisters the corresponding keycode, and resets `kc->tapped` for subsequent tap dances. + +```c +void qk_tap_dance_tap_hold_on_reset(qk_tap_dance_state_t *state, void *user_data) { + qk_tap_dance_tap_hold_t *kc = (qk_tap_dance_tap_hold_t *)user_data; + + if (kc->tapped) { + unregister_code16(kc->t); + } else { + unregister_code16(kc->h); + } + kc->tapped = true; +} +``` + +## Tap: keycode; Hold: control + keycode (or any modifier + keycode) + +The macro `ACTION_TAP_HOLD` allows a user to select the keycode for both the tap and hold action of the tap dance. It goes without saying that you can also send keycodes with modifiers so instead of having to write out `ACTION_TAP_HOLD(kc, C(kc))` for each keycode, we can use more macros: + +```c +#define ACTION_TAP_HOLD_CTL(t) ACTION_TAP_HOLD(t, LCTL(t)) +``` + +Macros are rock. + +# The Journey to Lower Sized Tap Dancing + +As I said earlier, I had set out to create my own tap dancing functions with little knowledge of how QMK works. Just as a bonus, I thought I'd share my journey through making my own custom tap dance. + +## Research + +When looking through the [tap dance documentation](https://beta.docs.qmk.fm/using-qmk/software-features/feature_tap_dance), it was apparent to me that [complex example 4](https://docs.qmk.fm/#/feature_tap_dance?id=example-4) by [DanielGGordon](https://github.com/danielggordon), had the functionality I so desired, I would have to do at least three things. + +However, in order to make all the tap dances for at least all of the alpha keys I would have to do the following three things: + +1. Write a `on_dance_finished` function +2. Write a `on_reset` function +3. And create a static struct instance storing a `boolean` and `td_state_t` + +The most outrageous part was that I would have to repeat these three steps for **each and every tap dance!** + +Unable to see how I could reduce the number of functions and data structures. I decided to follow through with making functions for each keycode. + +## Naive Implementation 1: Macros with `ACTION_TAP_DANCE_FN_ADVANCED` + +For my initial implementation, I set out to make use of macros to reduce the amount of apparent duplicate code in my keymap files. + +Copying the functions by DanielGGordon, reducing its functionality to single tap and single hold, and converting them into macros, I was able to create all the necessary functions for each tap dance without having to write out the same functions dozens of times. + +My issues with this implementation were that, when compiling, this was no different from me writing the same function dozens of time. This meant that the resulting firmware was **HUGE** decreasing the amount of additional features the user is able to enable. + +## Naive Implementation 2: Custom Quantum Keycode + +Searching for another solution I searched through the files in the qmk repository and stumbled across the implementation of several quantum keycode processing files in [`process_keycode`](../../quantum/process_keycode), namely the files [`process_unicode.h`](../../quantum/process_keycode/process_unicode.h), [`process_unicode.c`](../../quantum/process_keycode/process_unicode.c), and [`process_unicode_common.h`](../../quantum/process_keycode/process_unicode_common.h). + +And so I set off to implement my own **custom quantum keycodes** overriding Unicode keycode ranges and [implementing `process_record_user()`](https://docs.qmk.fm/#/custom_quantum_functions?id=custom-keycodes). + +Upon initial testing with a single key, it appeared functional save for the fact that keys would only register when releasing the key. Additionally it saved plenty of space due to reuse of functions when processing input. + +I was really proud of my implementation and had even shown it off to several of my friends. + +Unfortunately, when testing it out on all alpha, everything started to come apart. Because keystrokes would only register when releasing the switch, faster typists would actually actuate some keystrokes in the incorrect order; particularly with space appearing before the final letter of most words. + +## Current Implementation: Custom Tap Dance Actions + +Upset that I would have to go back to naive implementation 1, I went back to digging for answers. Maybe there was something I was missing, some extra details on how tap dancing gets processed. + +Looking again in [`process_keycode`](../../quantum/process_keycode), I found [`process_tap_dance.h`](../../quantum/process_keycode/process_tap_dance.h) and [`process_tap_dance.c`](../../quantum/process_keycode/process_tap_dance.c). And in those files, I found the miracle working struct `qk_tap_dance_action_t`. + +Looking more closely, each tap dance action a user defines constructs a `qk_tap_dance_action_t` with the following: + +- Three handler functions + - An `on_each_tap` function that runs when the tap dance key is pressed within the `TAPPING_TERM` + - An `on_dance_finished` function that runs when the `TAPPING_TERM` is complete + - An `on_reset` function that runs after finishing the dance +- A `custom_tapping_term` for the tap dance action +- Last but not least, the my saving grace: `void *user_data`. A user defined struct that gets passed to each of the handler functions. + +With this discovery, I set out to implement my own custom tap dance action in my [personal userspace](.) as seen [`tap_dance.c`](tap_dance.c) and [`tap_dance.h`](tap_dance.h) which I named ACTION_TAP_HOLD. + +## Updates and Thoughts + +### 08/08/2021 + +Initially, I thought of allowing the user to hold the hold tap dance action (`KC_LCTL` + `KC_<keycode>`). Unfortunately, I ran into several issues (likely due to my lack of understanding on the runtime flow) causing control to be held indefinitely until the computer is restarted. This is why, I had handler functions perform `tap_code16` opposed to `register_code16` and `unregister_code16`. + +When handling a double tap within the `TAPPING_TERM`, the tap keycode gets sent with `tap_code16`, the status timer gets reset, and the counter gets set back to 1 in case the user wishes to tap again or to hold the second tap. + +### 09/08/2021 + +Generalized tap and hold `user_data` struct to store two keycodes; one for the tap action, the other for the hold action. + +This way the user can define the tap and hold functionality separately. + +### 09/08/2021 + +Reworked utilizing, `register_code16` and `unregister_code16`. The issues previously experienced were due to my ignorance of the runtime flow for tap dancing. + +Previously in both the `on_dance_finished` and `on_reset` functions, I checked if the key was being tapped or held using this statement: + +``` +state->interrupted || !state->pressed +``` + +In the case of a hold, when accessing the `on_dance_finished` function, `state->interrupted` would be false and `state->pressed` would be true making the above statement false making the statement work as intended. + +However, when it comes to `on_reset` the statement no longer works. + +In the runtime flow for tap dancing, `on_reset` gets called in the function [`reset_tap_dance`](../../quantum/process_keycode/process_tap_dance.c#L186). In order for the `on_reset` function to be called, **state->pressed must be false**. + +This means that the above statement is no longer reliable in determining if a key has been held in this function. In fact, the function will always act as though a tap occured, meaning the hold reset will never be reached. + +There were signs of this in [complex examples](https://docs.qmk.fm/#/feature_tap_dance?id=complex-examples) that I hadn't taken into mind when designing this custom tap dance action (mainly through the static variables used to store the state instead of using `state` in both functions). + +As such, the fix was as simple as adding a boolean to the `user_data` struct that stores the state of the tap dance, thus allowing us to now be able to properly hold the hold key without any worry of the hold action of a key being stuck on. diff --git a/users/txkyel/txkyel.c b/users/txkyel/txkyel.c new file mode 100644 index 000000000000..b01a71bb817b --- /dev/null +++ b/users/txkyel/txkyel.c @@ -0,0 +1,56 @@ +/* Copyright 2021 Kyle Xiao + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 "txkyel.h" + +#ifdef TAP_DANCE_ENABLE +// Default Tap Dance definitions +qk_tap_dance_action_t tap_dance_actions[] = { + [HC_A] = ACTION_TAP_HOLD_CTL(KC_A), + [HC_B] = ACTION_TAP_HOLD_CTL(KC_B), + [HC_C] = ACTION_TAP_HOLD_CTL(KC_C), + [HC_D] = ACTION_TAP_HOLD_CTL(KC_D), + [HC_E] = ACTION_TAP_HOLD_CTL(KC_E), + [HC_F] = ACTION_TAP_HOLD_CTL(KC_F), + [HC_G] = ACTION_TAP_HOLD_CTL(KC_G), + [HC_H] = ACTION_TAP_HOLD_CTL(KC_H), + [HC_I] = ACTION_TAP_HOLD_CTL(KC_I), + [HC_J] = ACTION_TAP_HOLD_CTL(KC_J), + [HC_K] = ACTION_TAP_HOLD_CTL(KC_K), + [HC_L] = ACTION_TAP_HOLD_CTL(KC_L), + [HC_M] = ACTION_TAP_HOLD_CTL(KC_M), + [HC_N] = ACTION_TAP_HOLD_CTL(KC_N), + [HC_O] = ACTION_TAP_HOLD_CTL(KC_O), + [HC_P] = ACTION_TAP_HOLD_CTL(KC_P), + [HC_Q] = ACTION_TAP_HOLD_CTL(KC_Q), + [HC_R] = ACTION_TAP_HOLD_CTL(KC_R), + [HC_S] = ACTION_TAP_HOLD_CTL(KC_S), + [HC_T] = ACTION_TAP_HOLD_CTL(KC_T), + [HC_U] = ACTION_TAP_HOLD_CTL(KC_U), + [HC_V] = ACTION_TAP_HOLD_CTL(KC_V), + [HC_W] = ACTION_TAP_HOLD_CTL(KC_W), + [HC_X] = ACTION_TAP_HOLD_CTL(KC_X), + [HC_Y] = ACTION_TAP_HOLD_CTL(KC_Y), + [HC_Z] = ACTION_TAP_HOLD_CTL(KC_Z), + [HC_BSPC] = ACTION_TAP_HOLD_CTL(KC_BSPC), + [HC_DEL] = ACTION_TAP_HOLD_CTL(KC_DEL), + [HC_LEFT] = ACTION_TAP_HOLD_CTL(KC_LEFT), + [HC_RGHT] = ACTION_TAP_HOLD_CTL(KC_RGHT), + [TH_ESC_TAB] = ACTION_TAP_HOLD(KC_TAB, KC_ESC), + [TH_HOME_BSLS] = ACTION_TAP_HOLD(KC_BSLASH, KC_HOME), + [TH_HOME_BSLS] = ACTION_TAP_HOLD(KC_PIPE, KC_END), + [TH_QUOT_GRV] = ACTION_TAP_HOLD(KC_QUOT, KC_GRV), +}; +#endif diff --git a/users/txkyel/txkyel.h b/users/txkyel/txkyel.h new file mode 100644 index 000000000000..0b725961a496 --- /dev/null +++ b/users/txkyel/txkyel.h @@ -0,0 +1,58 @@ +/* Copyright 2021 Kyle Xiao + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should 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" +#include "tap_dance.h" + +#ifdef TAP_DANCE_ENABLE +// Tap Dance declarations for use in keymaps +enum hold_ctl_enum { + HC_A = 1, + HC_B, + HC_C, + HC_D, + HC_E, + HC_F, + HC_G, + HC_H, + HC_I, + HC_J, + HC_K, + HC_L, + HC_M, + HC_N, + HC_O, + HC_P, + HC_Q, + HC_R, + HC_S, + HC_T, + HC_U, + HC_V, + HC_W, + HC_X, + HC_Y, + HC_Z, + HC_BSPC, + HC_DEL, + HC_LEFT, + HC_RGHT, + TH_ESC_TAB, + TH_HOME_BSLS, + TH_END_PIPE, + TH_QUOT_GRV, +}; +#endif diff --git a/users/wanleg/rules.mk b/users/wanleg/rules.mk index eb66a49e6fa2..410803512d71 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/users/xulkal/config.h b/users/xulkal/config.h index e000b97acdbd..88e3efbe72d4 100644 --- a/users/xulkal/config.h +++ b/users/xulkal/config.h @@ -24,11 +24,11 @@ #endif // No need for the single versions when multi performance isn't a problem =D -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -#define DISABLE_RGB_MATRIX_SPLASH -#define DISABLE_RGB_MATRIX_SOLID_SPLASH +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#undef ENABLE_RGB_MATRIX_SPLASH +#undef ENABLE_RGB_MATRIX_SOLID_SPLASH // 20m timeout (20m * 60s * 1000mil) #define RGB_DISABLE_TIMEOUT 1200000 diff --git a/users/xulkal/custom_oled.c b/users/xulkal/custom_oled.c index 4ed2b9a0b094..7fe80409277d 100644 --- a/users/xulkal/custom_oled.c +++ b/users/xulkal/custom_oled.c @@ -176,7 +176,7 @@ static void render_status(void) #endif // OLED_90ROTATION -void oled_task_user(void) +bool oled_task_user(void) { if (is_keyboard_master()) render_status(); @@ -185,4 +185,5 @@ void oled_task_user(void) render_logo(); oled_scroll_left(); } + return false; } diff --git a/users/xulkal/process_records.c b/users/xulkal/process_records.c index b6a4e5cfa18e..47996110bbf1 100644 --- a/users/xulkal/process_records.c +++ b/users/xulkal/process_records.c @@ -6,7 +6,7 @@ #endif #ifdef TRILAYER_ENABLED -uint32_t layer_state_set_user(uint32_t state) +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); } diff --git a/users/xulkal/rules.mk b/users/xulkal/rules.mk index 8f8365ea7e67..7094191f2fa2 100644 --- a/users/xulkal/rules.mk +++ b/users/xulkal/rules.mk @@ -27,6 +27,6 @@ ifeq ($(strip $(RGBLIGHT_ENABLE)), yes) SRC += custom_rgb.c endif -ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes) +ifeq ($(strip $(OLED_ENABLE)), yes) SRC += custom_oled.c endif diff --git a/users/yanfali/rules.mk b/users/yanfali/rules.mk index 467adceef7a4..6c0c48c76430 100644 --- a/users/yanfali/rules.mk +++ b/users/yanfali/rules.mk @@ -1,4 +1,4 @@ -BOOTMAGIC_ENABLE = lite +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite DYNAMIC_KEYMAP_ENABLE = no LTO_ENABLE = yes AUDIO_ENABLE = no diff --git a/users/zigotica/combos.c b/users/zigotica/combos.c new file mode 100644 index 000000000000..8fb5b3c9fccb --- /dev/null +++ b/users/zigotica/combos.c @@ -0,0 +1,40 @@ +/* Copyright 2020 Sergi Meseguer <zigotica@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 "combos.h" + +enum combos { + EM_EMAIL, + CL_CAPSL, + COMBO_LENGTH +}; +uint16_t COMBO_LEN = COMBO_LENGTH; + +const uint16_t PROGMEM email_combo[] = {LT(_SYM, KC_E), KC_M, COMBO_END}; +const uint16_t PROGMEM caps_combo[] = {KC_C, KC_L, COMBO_END}; + +combo_t key_combos[] = { + [EM_EMAIL] = COMBO_ACTION(email_combo), + [CL_CAPSL] = COMBO(caps_combo, KC_CAPSLOCK), +}; + +void process_combo_event(uint16_t combo_index, bool pressed) { + switch(combo_index) { + case EM_EMAIL: + if (pressed) { + SEND_STRING("zigotica@gmail.com"); + } + break; + } +} + diff --git a/users/zigotica/combos.h b/users/zigotica/combos.h new file mode 100644 index 000000000000..c75a107b9a6e --- /dev/null +++ b/users/zigotica/combos.h @@ -0,0 +1,17 @@ +/* Copyright 2020 Sergi Meseguer <zigotica@gmail.com> +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + + +#pragma once +#include "zigotica.h" + diff --git a/users/zigotica/rows.h b/users/zigotica/rows.h new file mode 100644 index 000000000000..e73d72bbe2bb --- /dev/null +++ b/users/zigotica/rows.h @@ -0,0 +1,194 @@ +/* Copyright 2020 Sergi Meseguer <zigotica@gmail.com> +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#pragma once +#include "zigotica.h" + +// clang-format off +#define _BLANK_ROW _______, _______, _______, _______, _______ +#define _BLANK_THUMB _______, _______ + +/* + * STENAI Layer + * + * ,---------------------------------------. ,---------------------------------------. + * | | | | | | | | | | | | + * | ` ~ | W | D | P | F | | K | Y | U | Q | ' " | + * | | | | | | | | | | | | + * |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| + * | | | | | | | | | | | | + * | H | R | S | T | G | | M | N | A | I | O | + * | alt | ctrl | shft | meta | | | | meta | shft | ctrl | alt | + * |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| + * | | | | | | | | | | | | + * | B | X | C | V | [ { | | , < | L | Z | J | . > | + * | | | | | TD ]} | | TD ; | | | | TD : | + * `-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------. + * | | | | | | + * | ESC | SPC | | E | INTRO | + * | num | nav | | sym | fn | + * `---------------' `---------------' + * + */ +#define _STENAI_L1 KC_GRV, KC_W, KC_D, KC_P, KC_F +#define _STENAI_L2 LALT_T(KC_H), LCTL_T(KC_R), LSFT_T(KC_S), LGUI_T(KC_T), KC_G +#define _STENAI_L3 KC_B, KC_X, KC_C, KC_V, ZK_BRC +#define _STENAI_LT LT(_NUM, KC_ESC), LT(_NAV, KC_SPC) + +#define _STENAI_R1 KC_K, KC_Y, KC_U, KC_Q, KC_QUOT +#define _STENAI_R2 KC_M, RGUI_T(KC_N), RSFT_T(KC_A), RCTL_T(KC_I), RALT_T(KC_O) +#define _STENAI_R3 ZK_SEMI, KC_L, KC_Z, KC_J, ZK_COLON +#define _STENAI_RT LT(_SYM, KC_E), LT(_FN, KC_ENT) + + +#define _COLEMAK_L1 KC_Q, KC_W, KC_F, KC_P, KC_G +#define _COLEMAK_L2 KC_A, KC_R, KC_S, KC_T, KC_D +#define _COLEMAK_L3 KC_Z, KC_X, KC_C, KC_V, KC_B + +#define _COLEMAK_R1 KC_J, KC_L, KC_U, KC_Y, KC_SCLN +#define _COLEMAK_R2 KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT +#define _COLEMAK_R3 KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH + +#define _QWERTY_L1 KC_Q, KC_W, KC_E, KC_R, KC_T +#define _QWERTY_L2 KC_A, KC_S, KC_D, KC_F, KC_G +#define _QWERTY_L3 KC_Z, KC_X, KC_C, KC_V, KC_B + +#define _QWERTY_R1 KC_Y, KC_U, KC_I, KC_O, KC_P +#define _QWERTY_R2 KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT +#define _QWERTY_R3 KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH + +/* + * NUM Layer + * + * ,---------------------------------------. ,---------------------------------------. + * | | | | | | | | | | | | + * | | - | + | = | | | | 7 | 8 | 9 | | + * | | | | | | | | | | | | + * |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| + * | | | | | | | | | | | | + * | | | | | | | | 1 | 2 | 3 | | + * | | | | | | | | | | | | + * |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| + * | | | | | | | | | | | | + * | | | / | * | | | | 4 | 5 | 6 | | + * | | | | | | | | | | | | + * `-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------. + * |:::::::| | | | | + * |:::::::| | | 0 | BACK | + * |:::::::| | | | | + * `---------------' `---------------' + * + */ +#define ____NUM_L1 _______, KC_MINS, KC_PLUS, KC_EQL, _______ +#define ____NUM_L2 _BLANK_ROW +#define ____NUM_L3 _______, _______, KC_SLSH, KC_ASTR, _______ +#define ____NUM_LT _BLANK_THUMB + +#define ____NUM_R1 _______, KC_7, KC_8, KC_9, _______ +#define ____NUM_R2 _______, KC_1, KC_2, KC_3, _______ +#define ____NUM_R3 _______, KC_4, KC_5, KC_6, _______ +#define ____NUM_RT KC_0, KC_BSPC + +/* +* NAVIGATION Layer +* +* ,---------------------------------------. ,---------------------------------------. +* | | | | | | | | | | | | +* | | PREV | PLAY | NEXT | | | WHDN | HOME | UP | PGUP | | +* | | | | | | | | | | | | +* |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| +* | | | | | | | | | | | | +* | | | | | | | WHUP | LF | DN | RG | | +* | | | | | | | | | | | | +* |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| +* | | | | | | | | | | | | +* | | | | | | | | END | | PGDN | | +* | | | | | | | | | | | | +* `-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------. +* | |:::::::| | | | +* | |:::::::| | | DEL | +* | |:::::::| | | | +* `---------------' `---------------' +*/ +#define ____NAV_L1 _______, KC_MPRV, KC_MPLY, KC_MNXT, _______ +#define ____NAV_L2 _BLANK_ROW +#define ____NAV_L3 _BLANK_ROW +#define ____NAV_LT _BLANK_THUMB + +#define ____NAV_R1 KC_WH_D, KC_HOME, KC_UP, KC_PGUP, _______ +#define ____NAV_R2 KC_WH_U, KC_LEFT, KC_DOWN, KC_RGHT, _______ +#define ____NAV_R3 _______, KC_END, _______, KC_PGDN, _______ +#define ____NAV_RT _______, KC_DEL + +/* +* SYMBOLS Layer +* +* ,---------------------------------------. ,---------------------------------------. +* | | | | | | | | | | | | +* | % | & | ? | | | ! | | | | | | | +* | | | | | | | | | | | | +* |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| +* | | | | | | | | | | | | +* | # | @ | : | ; | $ | | | | | | | +* | | | | | | | | | | | | +* |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| +* | | | | | | | | | | | | +* | ( | ~ | / | \ | ^ | | | | | | | +* | | | | | | | | | | | | +* `-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------. +* | | | |:::::::| | +* | | TAB | |:::::::| | +* | | | |:::::::| | +* `---------------' `---------------' +*/ +#define ____SYM_L1 KC_PERC, KC_AMPR, KC_QUES, KC_PIPE, KC_EXLM +#define ____SYM_L2 KC_HASH, KC_AT, KC_COLN, KC_SCLN, KC_DLR +#define ____SYM_L3 ZK_PRN, KC_TILD, KC_SLSH, KC_BSLS, KC_CIRC +#define ____SYM_LT _______, KC_TAB + +#define ____SYM_R1 _BLANK_ROW +#define ____SYM_R2 _BLANK_ROW +#define ____SYM_R3 _BLANK_ROW +#define ____SYM_RT _BLANK_THUMB + +/* +* FUNCTION KEYS Layer +* +* ,---------------------------------------. ,---------------------------------------. +* | | | | | | | | | | | | +* | | | | | | | | F7 | F8 | F9 | F10 | +* | | | | | | | | | | | | +* |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| +* | | | | | | | | | | | | +* | | | | | | | | F1 | F2 | F3 | F11 | +* | | | | | | | | | | | | +* |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| +* | | | | | | | | | | | | +* | | | | | | | | F4 | F5 | F6 | F12 | +* | | | | | | | | | | | | +* `-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------. +* | | | | |:::::::| +* | | TAB | | |:::::::| +* | | | | |:::::::| +* `---------------' `---------------' +*/ +#define ____FN_L1 _BLANK_ROW +#define ____FN_L2 _BLANK_ROW +#define ____FN_L3 _BLANK_ROW +#define ____FN_LT _______, KC_TAB + +#define ____FN_R1 _______, KC_F7, KC_F8, KC_F9, KC_F10 +#define ____FN_R2 _______, KC_F1, KC_F2, KC_F3, KC_F11 +#define ____FN_R3 _______, KC_F4, KC_F5, KC_F6, KC_F12 +#define ____FN_RT _BLANK_THUMB +// clang-format on diff --git a/users/zigotica/rules.mk b/users/zigotica/rules.mk new file mode 100644 index 000000000000..019e6f6dda1b --- /dev/null +++ b/users/zigotica/rules.mk @@ -0,0 +1,18 @@ +SRC += zigotica.c + +ifeq ($(strip $(TAP_DANCE_ENABLE)), yes) + SRC += tapdances.c +endif + +ifeq ($(strip $(COMBO_ENABLE)), yes) + SRC += combos.c +endif + +ifeq ($(strip $(OLED_ENABLE)), yes) + SRC += oled.c +endif + +ifeq ($(strip $(ENCODER_ENABLE)), yes) + SRC += encoder.c +endif + diff --git a/users/zigotica/tapdances.c b/users/zigotica/tapdances.c new file mode 100644 index 000000000000..74bb1b605e11 --- /dev/null +++ b/users/zigotica/tapdances.c @@ -0,0 +1,34 @@ +/* Copyright 2020 Sergi Meseguer <zigotica@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 "tapdances.h" + +void ios_media(qk_tap_dance_state_t *state, void *user_data) { + if (state->count == 1) { + tap_code(KC_MPLY); + } else if (state->count == 2) { + tap_code(KC_MNXT); + } else if (state->count == 3) { + tap_code(KC_MPRV); + } else { + reset_tap_dance(state); + } +} + +qk_tap_dance_action_t tap_dance_actions[] = { + [0] = ACTION_TAP_DANCE_FN(ios_media), + [1] = ACTION_TAP_DANCE_DOUBLE(KC_COMM, KC_SCOLON), + [2] = ACTION_TAP_DANCE_DOUBLE(KC_DOT, KC_COLON), + [3] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, KC_RBRC), + [4] = ACTION_TAP_DANCE_DOUBLE(KC_LPRN, KC_RPRN), +}; diff --git a/users/zigotica/tapdances.h b/users/zigotica/tapdances.h new file mode 100644 index 000000000000..051c8a90bc7f --- /dev/null +++ b/users/zigotica/tapdances.h @@ -0,0 +1,24 @@ +/* Copyright 2020 Sergi Meseguer <zigotica@gmail.com> +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + + +#pragma once +#include "zigotica.h" + +#ifdef TAP_DANCE_ENABLE + #define ZK_MEDIA TD(0) + #define ZK_SEMI TD(1) + #define ZK_COLON TD(2) + #define ZK_BRC TD(3) + #define ZK_PRN TD(4) +#endif diff --git a/users/zigotica/zigotica.c b/users/zigotica/zigotica.c new file mode 100644 index 000000000000..9de57406c450 --- /dev/null +++ b/users/zigotica/zigotica.c @@ -0,0 +1,14 @@ +/* Copyright 2020 Sergi Meseguer <zigotica@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 "zigotica.h" diff --git a/users/zigotica/zigotica.h b/users/zigotica/zigotica.h new file mode 100644 index 000000000000..e9ff5ff16cde --- /dev/null +++ b/users/zigotica/zigotica.h @@ -0,0 +1,51 @@ +/* Copyright 2020 Sergi Meseguer <zigotica@gmail.com> +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#pragma once +#include QMK_KEYBOARD_H + +#include "rows.h" + +#ifdef SPLIT_KEYBOARD +enum userspace_layers { + BASE = 0, + _NUM, + _NAV, + _SYM, + _FN, +}; +#else +enum userspace_layers { + _TERMINAL = 0, + _FIGMA, + _BROWSER, + _VIM, +}; +#endif + + +#ifdef TAP_DANCE_ENABLE +# include "tapdances.h" +#endif + +#ifdef COMBO_ENABLE +# include "combos.h" +#endif + +#ifdef OLED_ENABLE + #include "oled.h" +#endif + +#ifdef ENCODER_ENABLE + #include "encoder.h" +#endif diff --git a/util/bootloader_at90usb128_1.0.1.hex b/util/bootloader_at90usb128_1.0.1.hex index 90491a82a6d0..5ecbed2880f2 100644 --- a/util/bootloader_at90usb128_1.0.1.hex +++ b/util/bootloader_at90usb128_1.0.1.hex @@ -269,7 +269,7 @@ :10F11A002A2F0C946CF00E9451F780E090E0A0E056 :10F12A00B0E08C019D010E94BEF780509F4FAF4F07 :10F13A00BF4F8F3F0FED900701E0A007B80788F394 -:10F14A00E4E00C9462F712010020FE010020EB03B8 +:10F14A00E4E00C9462F712010002FF010020EB03D5 :10F15A00FB2F0000010203010902120001010080D5 :10F16A00320904000000000000000C0341005400B2 :10F17A004D0045004C001E03410054003900300088 diff --git a/util/bootloader_at90usb64_1.0.0.hex b/util/bootloader_at90usb64_1.0.0.hex index 69dd45bbd690..5b443d719568 100644 --- a/util/bootloader_at90usb64_1.0.0.hex +++ b/util/bootloader_at90usb64_1.0.0.hex @@ -1,7 +1,7 @@ :020000020000FC :04F000000C94B97E35 :04F028000C94C77D00 -:10F08B0012010020FE010020EB03F92F000000000D +:10F08B0012010002FF010020EB03F92F000000002A :10F09B000001090212000101008032090400000086 :04F0AB000000000061 :10F0B0000000827E0800717E747E767E787E7A7E85 diff --git a/util/chibios_conf_updater.sh b/util/chibios_conf_updater.sh index 70bd80da1eaf..a5699ca3cb22 100755 --- a/util/chibios_conf_updater.sh +++ b/util/chibios_conf_updater.sh @@ -1,8 +1,19 @@ -#!/bin/bash +#!/usr/bin/env bash set -eEuo pipefail umask 022 +##################### +# You will need to get an older JDK -- JDK 8 +# +# !!!!!!!! DO NOT INSTALL THIS IF YOU HAVE AN EXISTING JDK OR JRE INSTALLED !!!!!!!! +# +# For Debian 10-ish distro's: +# wget -qO - https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public | sudo apt-key add - +# sudo add-apt-repository --yes https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/ +# sudo apt-get update && sudo apt-get install adoptopenjdk-8-hotspot + + sinfo() { echo "$@" >&2 ; } shead() { sinfo "" ; sinfo "---------------------------------" ; sinfo "-- $@" ; sinfo "---------------------------------" ; } havecmd() { command command type "${1}" >/dev/null 2>&1 || return 1 ; } @@ -11,8 +22,6 @@ this_script="$(realpath "${BASH_SOURCE[0]}")" script_dir="$(realpath "$(dirname "$this_script")")" qmk_firmware_dir="$(realpath "$script_dir/../")" -declare -A file_hashes - export PATH="$PATH:$script_dir/fmpp/bin" build_fmpp() { @@ -38,74 +47,13 @@ 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 done } -revert_chibi_files() { - local search_path="$1" - shead "Reverting ChibiOS config/board files..." - for file in $(find_chibi_files "$search_path" -name chconf.h -or -name halconf.h -or -name mcuconf.h -or -name board.c -or -name board.h -or -name board.mk -or -name board.chcfg) ; do - pushd "$search_path" >/dev/null 2>&1 - local relpath=$(realpath --relative-to="$search_path" "$file") - git checkout upstream/develop -- "$relpath" || git checkout origin/develop -- "$relpath" || true - popd >/dev/null 2>&1 - done -} - -populate_file_hashes() { - local search_path="$1" - shead "Determining duplicate config/board files..." - for file in $(find_chibi_files "$search_path" -name chconf.h -or -name halconf.h -or -name mcuconf.h -or -name board.c -or -name board.h) ; do - local key="file_$(clang-format "$file" | sha1sum | cut -d' ' -f1)" - local relpath=$(realpath --relative-to="$search_path" "$file") - file_hashes[$key]="${file_hashes[$key]:-} $relpath" - done - for file in $(find_chibi_files "$search_path" -name board.mk -or -name board.chcfg) ; do - local key="file_$(cat "$file" | sha1sum | cut -d' ' -f1)" - local relpath=$(realpath --relative-to="$search_path" "$file") - file_hashes[$key]="${file_hashes[$key]:-} $relpath" - done -} - -determine_equivalent_files() { - local search_file="$1" - for K in "${!file_hashes[@]}"; do - for V in ${file_hashes[$K]}; do - if [[ "$V" == "$search_file" ]] ; then - for V in ${file_hashes[$K]}; do - echo "$V" - done - return 0 - fi - done - done - return 1 -} - -deploy_staged_files() { - shead "Deploying staged files..." - for file in $(find "$qmk_firmware_dir/util/chibios-upgrade-staging" -type f) ; do - local relpath=$(realpath --relative-to="$qmk_firmware_dir/util/chibios-upgrade-staging" "$file") - sinfo "Deploying staged file: $relpath" - for other in $(determine_equivalent_files "$relpath") ; do - sinfo " => $other" - cp "$qmk_firmware_dir/util/chibios-upgrade-staging/$relpath" "$qmk_firmware_dir/$other" - done - done -} - -swap_mcuconf_f3xx_f303() { - shead "Swapping STM32F3xx_MCUCONF -> STM32F303_MCUCONF..." - for file in $(find_chibi_files "$qmk_firmware_dir" -name mcuconf.h) ; do - sed -i 's#STM32F3xx_MCUCONF#STM32F303_MCUCONF#g' "$file" - dos2unix "$file" >/dev/null 2>&1 - done -} - upgrade_conf_files_generic() { local search_filename="$1" local update_script="$2" @@ -150,35 +98,8 @@ upgrade_mcuconf_files() { popd >/dev/null 2>&1 } -update_staged_files() { - shead "Updating staged files with ChibiOS upgraded versions..." - for file in $(find "$qmk_firmware_dir/util/chibios-upgrade-staging" -type f) ; do - local relpath=$(realpath --relative-to="$qmk_firmware_dir/util/chibios-upgrade-staging" "$file") - sinfo "Updating staged file: $relpath" - cp "$qmk_firmware_dir/$relpath" "$qmk_firmware_dir/util/chibios-upgrade-staging/$relpath" - done -} - havecmd fmpp || build_fmpp -revert_chibi_files "$qmk_firmware_dir" -populate_file_hashes "$qmk_firmware_dir" - -shead "Showing duplicate ChibiOS files..." -for K in "${!file_hashes[@]}"; do - sinfo ${K#file_}: - for V in ${file_hashes[$K]}; do - sinfo " $V" - done -done - -if [ "${1:-}" == "-r" ] ; then - exit 0 -fi - -swap_mcuconf_f3xx_f303 -deploy_staged_files upgrade_mcuconf_files upgrade_chconf_files upgrade_halconf_files -update_staged_files diff --git a/util/docker_build.sh b/util/docker_build.sh index 2b109be76d0a..8a6b2d0565f6 100755 --- a/util/docker_build.sh +++ b/util/docker_build.sh @@ -81,5 +81,5 @@ fi -e ALT_GET_KEYBOARDS=true \ -e SKIP_GIT="$SKIP_GIT" \ -e MAKEFLAGS="$MAKEFLAGS" \ - qmkfm/base_container \ + qmkfm/qmk_cli \ make "$keyboard${keymap:+:$keymap}${target:+:$target}" diff --git a/util/generate_internal_docs.sh b/util/generate_internal_docs.sh index bfee797d3abc..b107a37ad6ba 100755 --- a/util/generate_internal_docs.sh +++ b/util/generate_internal_docs.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -x diff --git a/util/install/arch.sh b/util/install/arch.sh index eac4ad64eff0..33c39212d3d8 100755 --- a/util/install/arch.sh +++ b/util/install/arch.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash _qmk_install() { echo "Installing dependencies" @@ -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 9e1299697674..3e02919bdd75 100755 --- a/util/install/debian.sh +++ b/util/install/debian.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true @@ -11,11 +11,18 @@ _qmk_install_prepare() { _qmk_install() { echo "Installing dependencies" - sudo apt-get -yq install \ + sudo apt-get --quiet --yes 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 - python3 -m pip install --user -r $QMK_FIRMWARE_DIR/requirements.txt + # RISC-V toolchains with picolibc support are only available for distributions based on Debian 11+. + if sudo apt-get install --simulate --quiet --yes picolibc-riscv64-unknown-elf gcc-riscv64-unknown-elf binutils-riscv64-unknown-elf > /dev/null 2>&1; then + sudo apt-get --quiet --yes install picolibc-riscv64-unknown-elf \ + gcc-riscv64-unknown-elf \ + binutils-riscv64-unknown-elf + fi + + python3 -m pip install --user -r "$QMK_FIRMWARE_DIR"/requirements.txt } diff --git a/util/install/fedora.sh b/util/install/fedora.sh index 3f9695356ca8..e123447d3f80 100755 --- a/util/install/fedora.sh +++ b/util/install/fedora.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash _qmk_install() { echo "Installing dependencies" diff --git a/util/install/freebsd.sh b/util/install/freebsd.sh index d9399a5de957..595911969d36 100755 --- a/util/install/freebsd.sh +++ b/util/install/freebsd.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash _qmk_install_prepare() { sudo pkg update $SKIP_PROMPT diff --git a/util/install/gentoo.sh b/util/install/gentoo.sh index 604d07bf84fd..b031fc7629ec 100755 --- a/util/install/gentoo.sh +++ b/util/install/gentoo.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash _qmk_install_prepare() { echo "This script will make a USE change in order to ensure that that QMK works on your system." diff --git a/util/install/linux_shared.sh b/util/install/linux_shared.sh index cb81e8611f72..e060f425f579 100755 --- a/util/install/linux_shared.sh +++ b/util/install/linux_shared.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # For those distros that do not package bootloadHID _qmk_install_bootloadhid() { diff --git a/util/install/macos.sh b/util/install/macos.sh index 4b87217ba002..870b4bec9451 100755 --- a/util/install/macos.sh +++ b/util/install/macos.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash _qmk_install_prepare() { echo "Checking Homebrew installation" @@ -9,7 +9,7 @@ _qmk_install_prepare() { return 1 fi - brew update && brew upgrade --ignore-pinned + brew update && brew upgrade --formulae --ignore-pinned } _qmk_install() { diff --git a/util/install/msys2.sh b/util/install/msys2.sh index b027ff53d217..203f8eff0cb5 100755 --- a/util/install/msys2.sh +++ b/util/install/msys2.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash _qmk_install_prepare() { pacman -Syu $MSYS2_CONFIRM diff --git a/util/install/slackware.sh b/util/install/slackware.sh index d73303159d56..df4d073e7ba1 100755 --- a/util/install/slackware.sh +++ b/util/install/slackware.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash _qmk_install_prepare() { echo "Before you continue, please ensure that your user is added to sudoers and that sboinstall is configured." diff --git a/util/install/solus.sh b/util/install/solus.sh index 5633f7039ccf..fad0605cf61e 100755 --- a/util/install/solus.sh +++ b/util/install/solus.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash _qmk_install_prepare() { sudo eopkg -y update-repo diff --git a/util/install/void.sh b/util/install/void.sh index c49c3ef63f2e..6aeb8e00aedf 100755 --- a/util/install/void.sh +++ b/util/install/void.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash _qmk_install() { echo "Installing dependencies" diff --git a/util/new_keyboard.sh b/util/new_keyboard.sh index cf3339f9a758..62e8cb9e133c 100755 --- a/util/new_keyboard.sh +++ b/util/new_keyboard.sh @@ -1,7 +1,7 @@ -#!/bin/bash +#!/usr/bin/env bash # This script generates a new keyboard directory under keyboards/, -# and copies the template files from quantum/template/ into it. +# and copies the template files from data/templates/ into it. # Print an error message with the word "ERROR" in red. echo_error() { @@ -35,11 +35,11 @@ copy_templates() { mkdir -p "$keyboard_dir" echo -n "Copying base template files..." - cp -r "quantum/template/base/." "${keyboard_dir}" + cp -r "data/templates/base/." "${keyboard_dir}" echo " done" echo -n "Copying $keyboard_type template files..." - cp -r "quantum/template/${keyboard_type}/." "${keyboard_dir}" + cp -r "data/templates/${keyboard_type}/." "${keyboard_dir}" echo " done" echo -n "Renaming keyboard files..." @@ -129,6 +129,12 @@ if [ ! -d "quantum" ]; then exit 1 fi +echo_bold "########################################" +echo_bold "# NOTICE #" +echo_bold "# This script has been deprecated. #" +echo_bold "# Please use qmk new-keyboard instead. #" +echo_bold "########################################" +echo echo_bold "Generating a new QMK keyboard directory" echo diff --git a/nix/poetry.lock b/util/nix/poetry.lock similarity index 77% rename from nix/poetry.lock rename to util/nix/poetry.lock index 1a1aefe21a4f..9bb0f64deb0f 100644 --- a/nix/poetry.lock +++ b/util/nix/poetry.lock @@ -43,29 +43,18 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" name = "coverage" version = "5.5" description = "Code coverage measurement for Python" -category = "main" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" [package.extras] toml = ["toml"] -[[package]] -name = "dotty-dict" -version = "1.3.0" -description = "Dictionary wrapper for quick access to deeply nested keys." -category = "main" -optional = false -python-versions = "*" - -[package.dependencies] -setuptools_scm = "*" - [[package]] name = "flake8" version = "3.9.2" description = "the modular source code checker: pep8 pyflakes and co" -category = "main" +category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" @@ -151,13 +140,13 @@ colorama = ">=0.3.9" name = "mccabe" version = "0.6.1" description = "McCabe checker, plugin for flake8" -category = "main" +category = "dev" optional = false python-versions = "*" [[package]] name = "milc" -version = "1.4.2" +version = "1.6.2" description = "Opinionated Batteries-Included Python 3 CLI Framework." category = "main" optional = false @@ -174,7 +163,7 @@ spinners = "*" name = "nose2" version = "0.10.0" description = "unittest2 with plugins, the succesor to nose" -category = "main" +category = "dev" optional = false python-versions = "*" @@ -188,20 +177,21 @@ dev = ["Sphinx (>=1.6.5)", "sphinx-rtd-theme", "mock", "coverage"] [[package]] name = "pep8-naming" -version = "0.11.1" +version = "0.12.1" description = "Check PEP-8 naming conventions, plugin for flake8" category = "dev" optional = false python-versions = "*" [package.dependencies] +flake8 = ">=3.9.1" flake8-polyfill = ">=1.0.2,<2" [[package]] name = "pycodestyle" version = "2.7.0" description = "Python style guide checker" -category = "main" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" @@ -209,13 +199,13 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" name = "pyflakes" version = "2.3.1" description = "passive checker of Python programs" -category = "main" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [[package]] name = "pygments" -version = "2.9.0" +version = "2.10.0" description = "Pygments is a syntax highlighting package written in Python." category = "main" optional = false @@ -223,50 +213,44 @@ python-versions = ">=3.5" [[package]] name = "pyrsistent" -version = "0.17.3" +version = "0.18.0" description = "Persistent/Functional/Immutable data structures" category = "main" optional = false -python-versions = ">=3.5" +python-versions = ">=3.6" [[package]] name = "pyusb" -version = "1.1.1" +version = "1.2.1" description = "Python USB access module" category = "main" optional = false -python-versions = "*" +python-versions = ">=3.6.0" [[package]] name = "qmk" -version = "0.0.51" +version = "1.0.0" description = "A program to help users work with QMK Firmware." category = "main" optional = false -python-versions = ">=3.7" +python-versions = "*" [package.dependencies] -dotty-dict = "*" -flake8 = "*" hid = "*" hjson = "*" jsonschema = ">=3" -milc = ">=1.4.0" -nose2 = "*" +milc = ">=1.4.2" pygments = "*" pyusb = "*" -yapf = "*" +qmk-dotty-dict = "*" [[package]] -name = "setuptools-scm" -version = "6.0.1" -description = "the blessed package to manage your versions by scm tags" +name = "qmk-dotty-dict" +version = "1.3.0.post1" +description = "Dictionary wrapper for quick access to deeply nested keys." category = "main" optional = false -python-versions = ">=3.6" - -[package.extras] -toml = ["toml"] +python-versions = "*" [[package]] name = "six" @@ -294,16 +278,16 @@ python-versions = "*" [[package]] name = "yapf" -version = "0.30.0" +version = "0.31.0" description = "A formatter for Python code." -category = "main" +category = "dev" optional = false python-versions = "*" [metadata] lock-version = "1.1" python-versions = "^3.8" -content-hash = "5e181d51536240d08c74ba6a46bd0988ee4ca72ac3d5b388965ca8023e9b9a99" +content-hash = "468ae51aaddfe2ce62938f131c688bbc447e41608d4dd7d30db36391c38bda20" [metadata.files] appdirs = [ @@ -376,9 +360,6 @@ coverage = [ {file = "coverage-5.5-pp37-none-any.whl", hash = "sha256:2a3859cb82dcbda1cfd3e6f71c27081d18aa251d20a17d87d26d4cd216fb0af4"}, {file = "coverage-5.5.tar.gz", hash = "sha256:ebe78fe9a0e874362175b02371bdfbee64d8edc42a044253ddf4ee7d3c15212c"}, ] -dotty-dict = [ - {file = "dotty_dict-1.3.0.tar.gz", hash = "sha256:eb0035a3629ecd84397a68f1f42f1e94abd1c34577a19cd3eacad331ee7cbaf0"}, -] flake8 = [ {file = "flake8-3.9.2-py2.py3-none-any.whl", hash = "sha256:bf8fd333346d844f616e8d47905ef3a3384edae6b4e9beb0c5101e25e3110907"}, {file = "flake8-3.9.2.tar.gz", hash = "sha256:07528381786f2a6237b061f6e96610a4167b226cb926e2aa2b6b1d78057c576b"}, @@ -412,16 +393,16 @@ mccabe = [ {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"}, ] milc = [ - {file = "milc-1.4.2-py2.py3-none-any.whl", hash = "sha256:65ee004caa769b1ee144b15be7908d1f623920ab6f356e5c5c95be9457aa15d8"}, - {file = "milc-1.4.2.tar.gz", hash = "sha256:c6b2f19e3196b00a0060f8c883533e356f2054a9f81692b7b97ccee0d01626fd"}, + {file = "milc-1.6.2-py2.py3-none-any.whl", hash = "sha256:cb26404c7f3d6797c9c42005de732161e45e21294cde85845e914b279321bdad"}, + {file = "milc-1.6.2.tar.gz", hash = "sha256:779710a0b9300bef3c5748158887e6c734659e147d55548d9e4701d7a7d5dddf"}, ] nose2 = [ {file = "nose2-0.10.0-py2.py3-none-any.whl", hash = "sha256:aa620e759f2c5018d9ba041340391913e282ecebd3c392027f1575847b093ec6"}, {file = "nose2-0.10.0.tar.gz", hash = "sha256:886ba617a96de0130c54b24479bd5c2d74d5c940d40f3809c3a275511a0c4a60"}, ] pep8-naming = [ - {file = "pep8-naming-0.11.1.tar.gz", hash = "sha256:a1dd47dd243adfe8a83616e27cf03164960b507530f155db94e10b36a6cd6724"}, - {file = "pep8_naming-0.11.1-py2.py3-none-any.whl", hash = "sha256:f43bfe3eea7e0d73e8b5d07d6407ab47f2476ccaeff6937c84275cd30b016738"}, + {file = "pep8-naming-0.12.1.tar.gz", hash = "sha256:bb2455947757d162aa4cad55dba4ce029005cd1692f2899a21d51d8630ca7841"}, + {file = "pep8_naming-0.12.1-py2.py3-none-any.whl", hash = "sha256:4a8daeaeb33cfcde779309fc0c9c0a68a3bbe2ad8a8308b763c5068f86eb9f37"}, ] pycodestyle = [ {file = "pycodestyle-2.7.0-py2.py3-none-any.whl", hash = "sha256:514f76d918fcc0b55c6680472f0a37970994e07bbb80725808c17089be302068"}, @@ -432,23 +413,43 @@ pyflakes = [ {file = "pyflakes-2.3.1.tar.gz", hash = "sha256:f5bc8ecabc05bb9d291eb5203d6810b49040f6ff446a756326104746cc00c1db"}, ] pygments = [ - {file = "Pygments-2.9.0-py3-none-any.whl", hash = "sha256:d66e804411278594d764fc69ec36ec13d9ae9147193a1740cd34d272ca383b8e"}, - {file = "Pygments-2.9.0.tar.gz", hash = "sha256:a18f47b506a429f6f4b9df81bb02beab9ca21d0a5fee38ed15aef65f0545519f"}, + {file = "Pygments-2.10.0-py3-none-any.whl", hash = "sha256:b8e67fe6af78f492b3c4b3e2970c0624cbf08beb1e493b2c99b9fa1b67a20380"}, + {file = "Pygments-2.10.0.tar.gz", hash = "sha256:f398865f7eb6874156579fdf36bc840a03cab64d1cde9e93d68f46a425ec52c6"}, ] pyrsistent = [ - {file = "pyrsistent-0.17.3.tar.gz", hash = "sha256:2e636185d9eb976a18a8a8e96efce62f2905fea90041958d8cc2a189756ebf3e"}, + {file = "pyrsistent-0.18.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f4c8cabb46ff8e5d61f56a037974228e978f26bfefce4f61a4b1ac0ba7a2ab72"}, + {file = "pyrsistent-0.18.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:da6e5e818d18459fa46fac0a4a4e543507fe1110e808101277c5a2b5bab0cd2d"}, + {file = "pyrsistent-0.18.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:5e4395bbf841693eaebaa5bb5c8f5cdbb1d139e07c975c682ec4e4f8126e03d2"}, + {file = "pyrsistent-0.18.0-cp36-cp36m-win32.whl", hash = "sha256:527be2bfa8dc80f6f8ddd65242ba476a6c4fb4e3aedbf281dfbac1b1ed4165b1"}, + {file = "pyrsistent-0.18.0-cp36-cp36m-win_amd64.whl", hash = "sha256:2aaf19dc8ce517a8653746d98e962ef480ff34b6bc563fc067be6401ffb457c7"}, + {file = "pyrsistent-0.18.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:58a70d93fb79dc585b21f9d72487b929a6fe58da0754fa4cb9f279bb92369396"}, + {file = "pyrsistent-0.18.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:4916c10896721e472ee12c95cdc2891ce5890898d2f9907b1b4ae0f53588b710"}, + {file = "pyrsistent-0.18.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:73ff61b1411e3fb0ba144b8f08d6749749775fe89688093e1efef9839d2dcc35"}, + {file = "pyrsistent-0.18.0-cp37-cp37m-win32.whl", hash = "sha256:b29b869cf58412ca5738d23691e96d8aff535e17390128a1a52717c9a109da4f"}, + {file = "pyrsistent-0.18.0-cp37-cp37m-win_amd64.whl", hash = "sha256:097b96f129dd36a8c9e33594e7ebb151b1515eb52cceb08474c10a5479e799f2"}, + {file = "pyrsistent-0.18.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:772e94c2c6864f2cd2ffbe58bb3bdefbe2a32afa0acb1a77e472aac831f83427"}, + {file = "pyrsistent-0.18.0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:c1a9ff320fa699337e05edcaae79ef8c2880b52720bc031b219e5b5008ebbdef"}, + {file = "pyrsistent-0.18.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:cd3caef37a415fd0dae6148a1b6957a8c5f275a62cca02e18474608cb263640c"}, + {file = "pyrsistent-0.18.0-cp38-cp38-win32.whl", hash = "sha256:e79d94ca58fcafef6395f6352383fa1a76922268fa02caa2272fff501c2fdc78"}, + {file = "pyrsistent-0.18.0-cp38-cp38-win_amd64.whl", hash = "sha256:a0c772d791c38bbc77be659af29bb14c38ced151433592e326361610250c605b"}, + {file = "pyrsistent-0.18.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d5ec194c9c573aafaceebf05fc400656722793dac57f254cd4741f3c27ae57b4"}, + {file = "pyrsistent-0.18.0-cp39-cp39-manylinux1_i686.whl", hash = "sha256:6b5eed00e597b5b5773b4ca30bd48a5774ef1e96f2a45d105db5b4ebb4bca680"}, + {file = "pyrsistent-0.18.0-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:48578680353f41dca1ca3dc48629fb77dfc745128b56fc01096b2530c13fd426"}, + {file = "pyrsistent-0.18.0-cp39-cp39-win32.whl", hash = "sha256:f3ef98d7b76da5eb19c37fda834d50262ff9167c65658d1d8f974d2e4d90676b"}, + {file = "pyrsistent-0.18.0-cp39-cp39-win_amd64.whl", hash = "sha256:404e1f1d254d314d55adb8d87f4f465c8693d6f902f67eb6ef5b4526dc58e6ea"}, + {file = "pyrsistent-0.18.0.tar.gz", hash = "sha256:773c781216f8c2900b42a7b638d5b517bb134ae1acbebe4d1e8f1f41ea60eb4b"}, ] pyusb = [ - {file = "pyusb-1.1.1-py3-none-any.whl", hash = "sha256:f18eb813d3a1439918071234589162c2f209a19adbeffeb1377ce078a4aebc70"}, - {file = "pyusb-1.1.1.tar.gz", hash = "sha256:7d449ad916ce58aff60b89aae0b65ac130f289c24d6a5b7b317742eccffafc38"}, + {file = "pyusb-1.2.1-py3-none-any.whl", hash = "sha256:2b4c7cb86dbadf044dfb9d3a4ff69fd217013dbe78a792177a3feb172449ea36"}, + {file = "pyusb-1.2.1.tar.gz", hash = "sha256:a4cc7404a203144754164b8b40994e2849fde1cfff06b08492f12fff9d9de7b9"}, ] qmk = [ - {file = "qmk-0.0.51-py2.py3-none-any.whl", hash = "sha256:5f676f389b2450b0956d7eb8e7e378d2e6690d5859a887c91876da0a5faf75ed"}, - {file = "qmk-0.0.51.tar.gz", hash = "sha256:efeef209cde1df92b9823db686d9684962cd00aae9f45ba5e3d494aa5b3c6b9a"}, + {file = "qmk-1.0.0-py2.py3-none-any.whl", hash = "sha256:63d69b97a533d91b0cfa7887e68cac7df52c6f7bddf4bf44d17ef1241d85ffff"}, + {file = "qmk-1.0.0.tar.gz", hash = "sha256:da62eec73c4548cc37b0b9be3937202dc3a301dc2f2663610ecca751a610f9ca"}, ] -setuptools-scm = [ - {file = "setuptools_scm-6.0.1-py3-none-any.whl", hash = "sha256:c3bd5f701c8def44a5c0bfe8d407bef3f80342217ef3492b951f3777bd2d915c"}, - {file = "setuptools_scm-6.0.1.tar.gz", hash = "sha256:d1925a69cb07e9b29416a275b9fadb009a23c148ace905b2fb220649a6c18e92"}, +qmk-dotty-dict = [ + {file = "qmk_dotty_dict-1.3.0.post1-py3-none-any.whl", hash = "sha256:a9cb7fc3ff9631190fee0ecac14986a0ac7b4b6892347dc9d7486a4c4ea24492"}, + {file = "qmk_dotty_dict-1.3.0.post1.tar.gz", hash = "sha256:3b611e393660bfaa6835c68e94784bae80fe07b8490978b5ecab03a0d2fc7ea2"}, ] six = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, @@ -462,6 +463,6 @@ termcolor = [ {file = "termcolor-1.1.0.tar.gz", hash = "sha256:1d6d69ce66211143803fbc56652b41d73b4a400a2891d7bf7a1cdf4c02de613b"}, ] yapf = [ - {file = "yapf-0.30.0-py2.py3-none-any.whl", hash = "sha256:3abf61ba67cf603069710d30acbc88cfe565d907e16ad81429ae90ce9651e0c9"}, - {file = "yapf-0.30.0.tar.gz", hash = "sha256:3000abee4c28daebad55da6c85f3cd07b8062ce48e2e9943c8da1b9667d48427"}, + {file = "yapf-0.31.0-py2.py3-none-any.whl", hash = "sha256:e3a234ba8455fe201eaa649cdac872d590089a18b661e39bbac7020978dd9c2e"}, + {file = "yapf-0.31.0.tar.gz", hash = "sha256:408fb9a2b254c302f49db83c59f9aa0b4b0fd0ec25be3a5c51181327922ff63d"}, ] diff --git a/util/nix/pyproject.toml b/util/nix/pyproject.toml new file mode 100644 index 000000000000..1ec8aacd4ad0 --- /dev/null +++ b/util/nix/pyproject.toml @@ -0,0 +1,36 @@ +# This file should be kept in sync with requirements.txt and requirements-dev.txt +# It is particularly required by the Nix environment (see shell.nix). To update versions, +# normally one would run "poetry update --lock" +[tool.poetry] +name = "qmk_firmware" +version = "0.1.0" +description = "" +authors = [] + +[tool.poetry.dependencies] +python = "^3.8" +appdirs = "*" +argcomplete = "*" +colorama = "*" +hid = "*" +hjson = "*" +jsonschema = ">=3" +milc = ">=1.4.2" +Pygments = "*" +pyusb = "*" +qmk-dotty-dict = "*" + +# This dependency is not mentioned in requirements.txt (QMK CLI is not a +# library package that is required by the Python code in qmk_firmware), but is +# required to build a proper nix-shell environment. +qmk = "*" + +[tool.poetry.dev-dependencies] +nose2 = "*" +flake8 = "*" +pep8-naming = "*" +yapf = "*" + +[build-system] +requires = ["poetry-core>=1.0.0"] +build-backend = "poetry.core.masonry.api" diff --git a/nix/sources.json b/util/nix/sources.json similarity index 100% rename from nix/sources.json rename to util/nix/sources.json diff --git a/nix/sources.nix b/util/nix/sources.nix similarity index 100% rename from nix/sources.nix rename to util/nix/sources.nix diff --git a/util/qmk_install.sh b/util/qmk_install.sh index 943069453a20..5f22ba0ad5ad 100755 --- a/util/qmk_install.sh +++ b/util/qmk_install.sh @@ -1,6 +1,6 @@ -#!/bin/bash +#!/usr/bin/env bash -QMK_FIRMWARE_DIR=$(cd -P -- "$(dirname -- "$0")/.." && pwd -P) +QMK_FIRMWARE_DIR=$(cd -P -- "$(dirname -- "$0")/.." >/dev/null && pwd -P) QMK_FIRMWARE_UTIL_DIR=$QMK_FIRMWARE_DIR/util if [ "$1" = "-y" ]; then SKIP_PROMPT='-y' diff --git a/quantum/tools/eeprom_reset.hex b/util/reset.eep similarity index 100% rename from quantum/tools/eeprom_reset.hex rename to util/reset.eep diff --git a/util/rules_cleaner.sh b/util/rules_cleaner.sh index ac27c2b09ba5..0367ae849f04 100755 --- a/util/rules_cleaner.sh +++ b/util/rules_cleaner.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # This script finds all rules.mk files in keyboards/ subdirectories, # and deletes the build option filesize impacts from them. diff --git a/util/size_regression.sh b/util/size_regression.sh new file mode 100755 index 000000000000..988d1d9b5bed --- /dev/null +++ b/util/size_regression.sh @@ -0,0 +1,79 @@ +#!/bin/bash + +# Copyright 2021 Nick Brassel (@tzarc) +# SPDX-License-Identifier: GPL-2.0-or-later + +set -eEuo pipefail + +job_count=$(getconf _NPROCESSORS_ONLN 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || echo 2) +source_ref="0.11.0" +dest_ref="develop" +ignore_ref="master" +unset skip_zero + +function usage() { + echo "Usage: $(basename "$0") [-h] [-j <jobs>] [-s <source>] [-d <dest>] [-n] planck/rev6:default" + echo " -h : Shows this usage page." + echo " -j <threads> : Change the number of threads to execute with. Defaults to \`$job_count\`." + echo " -s <source> : Use source commit, branch, tag, or sha1 to start the search. Defaults to \`$source_ref\`." + echo " -d <dest> : Use destination commit, branch, tag, or sha1 to end the search. Defaults to \`$dest_ref\`." + echo " -i <ignore> : The branch to ignore refs from. Defaults to \`$ignore_ref\`." + echo " -n : Skips printing changes if the delta is zero." + exit 1 +} + +if [[ ${#} -eq 0 ]]; then + usage +fi + +while getopts "hj:s:d:i:n" opt "$@" ; do + case "$opt" in + h) usage; exit 0;; + j) job_count="${OPTARG:-}";; + s) source_ref="${OPTARG:-}";; + d) dest_ref="${OPTARG:-}";; + i) ignore_ref="${OPTARG:-}";; + n) skip_zero=1;; + \?) usage >&2; exit 1;; + esac +done + +# Work out the target board +shift $((OPTIND-1)) +keyboard_target=$1 + +last_size=0 +last_line="" +function build_executor() { + git rev-list --oneline --no-merges ${source_ref}...${dest_ref} ^${ignore_ref} | while IFS= read -r line ; do + revision=$(echo $line | cut -d' ' -f1) + + make distclean >/dev/null 2>&1 + git checkout $revision >/dev/null 2>&1 || { echo "Failed to check out revision ${revision}" >&2 ; exit 1 ; } + make -j${job_count} $keyboard_target >/dev/null 2>&1 || true + file_size=$(arm-none-eabi-size .build/*.elf 2>/dev/null | awk '/elf/ {print $1}' 2>/dev/null || true) + + if [[ "$last_size" == 0 ]] ; then last_size=$file_size ; fi + if [[ -z "$file_size" ]] ; then file_size=0 ; fi + + if [[ -n "$last_line" ]] ; then + size_delta=$(( $last_size - $file_size )) + if { [[ -n "${skip_zero:-}" ]] && [[ $size_delta -ne 0 ]] ; } || [[ $file_size -eq 0 ]] ; then + printf "Size: %8d, delta: %+6d -- %s\n" "$last_size" "$size_delta" "$last_line" + fi + fi + + last_size=$file_size + last_line=$line + done + + if [ -n "$last_line" ] ; then + size_delta=0 + printf "Size: %8d, delta: %+6d -- %s\n" "$last_size" "$size_delta" "$last_line" + fi +} + +# The actual execution of all the builds needs to be the last command in the entire script +# - During builds, this script file will disappear, so we need the entire script to be +# loaded into the script interpreter at the time of execution. Do not refactor. +build_executor diff --git a/util/stm32eeprom_parser.py b/util/stm32eeprom_parser.py new file mode 100755 index 000000000000..e08b67064be9 --- /dev/null +++ b/util/stm32eeprom_parser.py @@ -0,0 +1,316 @@ +#!/usr/bin/env python +# +# Copyright 2021 Don Kjer +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# + +from __future__ import print_function + +import argparse +from struct import pack, unpack +import os, sys + +MAGIC_FEEA = '\xea\xff\xfe\xff' + +MAGIC_FEE9 = '\x16\x01' +EMPTY_WORD = '\xff\xff' +WORD_ENCODING = 0x8000 +VALUE_NEXT = 0x6000 +VALUE_RESERVED = 0x4000 +VALUE_ENCODED = 0x2000 +BYTE_RANGE = 0x80 + +CHUNK_SIZE = 1024 + +STRUCT_FMTS = { + 1: 'B', + 2: 'H', + 4: 'I' +} +PRINTABLE='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ ' + +EECONFIG_V1 = [ + ("MAGIC", 0, 2), + ("DEBUG", 2, 1), + ("DEFAULT_LAYER", 3, 1), + ("KEYMAP", 4, 1), + ("MOUSEKEY_ACCEL", 5, 1), + ("BACKLIGHT", 6, 1), + ("AUDIO", 7, 1), + ("RGBLIGHT", 8, 4), + ("UNICODEMODE", 12, 1), + ("STENOMODE", 13, 1), + ("HANDEDNESS", 14, 1), + ("KEYBOARD", 15, 4), + ("USER", 19, 4), + ("VELOCIKEY", 23, 1), + ("HAPTIC", 24, 4), + ("MATRIX", 28, 4), + ("MATRIX_EXTENDED", 32, 2), + ("KEYMAP_UPPER_BYTE", 34, 1), +] +VIABASE_V1 = 35 + +VERBOSE = False + +def parseArgs(): + parser = argparse.ArgumentParser(description='Decode an STM32 emulated eeprom dump') + parser.add_argument('-s', '--size', type=int, + help='Size of the emulated eeprom (default: input_size / 2)') + parser.add_argument('-o', '--output', help='File to write decoded eeprom to') + parser.add_argument('-y', '--layout-options-size', type=int, + help='VIA layout options size (default: 1)', default=1) + parser.add_argument('-t', '--custom-config-size', type=int, + help='VIA custom config size (default: 0)', default=0) + parser.add_argument('-l', '--layers', type=int, + help='VIA keyboard layers (default: 4)', default=4) + parser.add_argument('-r', '--rows', type=int, help='VIA matrix rows') + parser.add_argument('-c', '--cols', type=int, help='VIA matrix columns') + parser.add_argument('-m', '--macros', type=int, + help='VIA macro count (default: 16)', default=16) + parser.add_argument('-C', '--canonical', action='store_true', + help='Canonical hex+ASCII display.') + parser.add_argument('-v', '--verbose', action='store_true', help='Verbose output') + parser.add_argument('input', help='Raw contents of the STM32 flash area used to emulate eeprom') + return parser.parse_args() + + +def decodeEepromFEEA(in_file, size): + decoded=size*[None] + pos = 0 + while True: + chunk = in_file.read(CHUNK_SIZE) + for i in range(0, len(chunk), 2): + decoded[pos] = unpack('B', chunk[i])[0] + pos += 1 + if pos >= size: + break + + if len(chunk) < CHUNK_SIZE or pos >= size: + break + return decoded + +def decodeEepromFEE9(in_file, size): + decoded=size*[None] + pos = 0 + # Read compacted flash + while True: + read_size = min(size - pos, CHUNK_SIZE) + chunk = in_file.read(read_size) + for i in range(len(chunk)): + decoded[pos] = unpack('B', chunk[i])[0] ^ 0xFF + pos += 1 + if pos >= size: + break + + if len(chunk) < read_size or pos >= size: + break + if VERBOSE: + print("COMPACTED EEPROM:") + dumpBinary(decoded, True) + print("WRITE LOG:") + # Read write log + while True: + entry = in_file.read(2) + if len(entry) < 2: + print("Partial log address at position 0x%04x" % pos, file=sys.stderr) + break + pos += 2 + + if entry == EMPTY_WORD: + break + + be_entry = unpack('>H', entry)[0] + entry = unpack('H', entry)[0] + if not (entry & WORD_ENCODING): + address = entry >> 8 + decoded[address] = entry & 0xFF + if VERBOSE: + print("[0x%04x]: BYTE 0x%02x = 0x%02x" % (be_entry, address, decoded[address])) + else: + if (entry & VALUE_NEXT) == VALUE_NEXT: + # Read next word as value + value = in_file.read(2) + if len(value) < 2: + print("Partial log value at position 0x%04x" % pos, file=sys.stderr) + break + pos += 2 + address = entry & 0x1FFF + address <<= 1 + address += BYTE_RANGE + decoded[address] = unpack('B', value[0])[0] ^ 0xFF + decoded[address+1] = unpack('B', value[1])[0] ^ 0xFF + be_value = unpack('>H', value)[0] + if VERBOSE: + print("[0x%04x 0x%04x]: WORD 0x%04x = 0x%02x%02x" % (be_entry, be_value, address, decoded[address+1], decoded[address])) + else: + # Reserved for future use + if entry & VALUE_RESERVED: + if VERBOSE: + print("[0x%04x]: RESERVED 0x%04x" % (be_entry, address)) + continue + address = entry & 0x1FFF + address <<= 1 + decoded[address] = (entry & VALUE_ENCODED) >> 13 + decoded[address+1] = 0 + if VERBOSE: + print("[0x%04x]: ENCODED 0x%04x = 0x%02x%02x" % (be_entry, address, decoded[address+1], decoded[address])) + + return decoded + +def dumpBinary(data, canonical): + def display(pos, row): + print("%04x" % pos, end='') + for i in range(len(row)): + if i % 8 == 0: + print(" ", end='') + char = row[i] + if char is None: + print(" ", end='') + else: + print(" %02x" % row[i], end='') + if canonical: + print(" |", end='') + for i in range(len(row)): + char = row[i] + if char is None: + char = " " + else: + char = chr(char) + if char not in PRINTABLE: + char = "." + print(char, end='') + print("|", end='') + + print("") + + size = len(data) + prev_row = '' + first_repeat = True + for pos in range(0, size, 16): + row=data[pos:pos+16] + row[len(row):16] = (16-len(row))*[None] + if row == prev_row: + if first_repeat: + print("*") + first_repeat = False + else: + first_repeat = True + display(pos, row) + prev_row = row + print("%04x" % (pos+16)) + +def dumpEeconfig(data, eeconfig): + print("EECONFIG:") + for (name, pos, length) in eeconfig: + fmt = STRUCT_FMTS[length] + value = unpack(fmt, ''.join([chr(x) for x in data[pos:pos+length]]))[0] + print(("%%04x %%s = 0x%%0%dx" % (length * 2)) % (pos, name, value)) + +def dumpVia(data, base, layers, cols, rows, macros, + layout_options_size, custom_config_size): + magicYear = data[base + 0] + magicMonth = data[base + 1] + magicDay = data[base + 2] + # Sanity check + if not 10 <= magicYear <= 0x99 or \ + not 0 <= magicMonth <= 0x12 or \ + not 0 <= magicDay <= 0x31: + print("ERROR: VIA Signature is not valid; Year:%x, Month:%x, Day:%x" % (magicYear, magicMonth, magicDay)) + return + if cols is None or rows is None: + print("ERROR: VIA dump requires specifying --rows and --cols", file=sys.stderr) + return 2 + print("VIA:") + # Decode magic + print("%04x MAGIC = 20%02x-%02x-%02x" % (base, magicYear, magicMonth, magicDay)) + # Decode layout options + options = 0 + pos = base + 3 + for i in range(base+3, base+3+layout_options_size): + options = options << 8 + options |= data[i] + print(("%%04x LAYOUT_OPTIONS = 0x%%0%dx" % (layout_options_size * 2)) % (pos, options)) + pos += layout_options_size + custom_config_size + # Decode keycodes + keymap_size = layers * rows * cols * 2 + if (pos + keymap_size) >= (len(data) - 1): + print("ERROR: VIA keymap requires %d bytes, but only %d available" % (keymap_size, len(data) - pos)) + return 3 + for layer in range(layers): + print("%s LAYER %d %s" % ('-'*int(cols*2.5), layer, '-'*int(cols*2.5))) + for row in range(rows): + print("%04x | " % pos, end='') + for col in range(cols): + keycode = (data[pos] << 8) | (data[pos+1]) + print(" %04x" % keycode, end='') + pos += 2 + print("") + # Decode macros + for macro_num in range(macros): + macro = "" + macro_pos = pos + while pos < len(data): + char = chr(data[pos]) + pos += 1 + if char == '\x00': + print("%04x MACRO[%d] = '%s'" % (macro_pos, macro_num, macro)) + break + else: + macro += char + return 0 + + +def decodeSTM32Eeprom(input, canonical, size=None, output=None, **kwargs): + input_size = os.path.getsize(input) + if size is None: + size = input_size >> 1 + + # Read the first few bytes to check magic signature + with open(input, 'rb') as in_file: + magic=in_file.read(4) + in_file.seek(0) + + if magic == MAGIC_FEEA: + decoded = decodeEepromFEEA(in_file, size) + eeconfig = EECONFIG_V1 + via_base = VIABASE_V1 + elif magic[:2] == MAGIC_FEE9: + decoded = decodeEepromFEE9(in_file, size) + eeconfig = EECONFIG_V1 + via_base = VIABASE_V1 + else: + print("Unknown magic signature: %s" % " ".join(["0x%02x" % ord(x) for x in magic]), file=sys.stderr) + return 1 + + if output is not None: + with open(output, 'wb') as out_file: + out_file.write(pack('%dB' % len(decoded), *decoded)) + print("DECODED EEPROM:") + dumpBinary(decoded, canonical) + dumpEeconfig(decoded, eeconfig) + if kwargs['rows'] is not None and kwargs['cols'] is not None: + return dumpVia(decoded, via_base, **kwargs) + + return 0 + +def main(): + global VERBOSE + kwargs = vars(parseArgs()) + VERBOSE = kwargs.pop('verbose') + return decodeSTM32Eeprom(**kwargs) + +if __name__ == '__main__': + sys.exit(main()) diff --git a/util/travis_build.sh b/util/travis_build.sh deleted file mode 100755 index e7bbe36a7bb1..000000000000 --- a/util/travis_build.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash - -source util/travis_utils.sh - -if [[ "$TRAVIS_COMMIT_MESSAGE" == *"[skip build]"* ]]; then - echo "Skipping due to commit message" - exit 0 -fi - -if [ "$LOCAL_BRANCH" == "master" ] || [ "$NUM_CORE_CHANGES" != "0" ]; then - echo "Making default keymaps for all keyboards" - make all:default - exit $? -fi - -exit_code=0 - -for KB in $(make list-keyboards); do - KEYBOARD_CHANGES=$(echo "$QMK_CHANGES" | grep -E '^(keyboards/'${KB}'/)') - if [[ -z "$KEYBOARD_CHANGES" ]]; then - # skip as no changes for this keyboard - continue - fi - - KEYMAP_ONLY=$(echo "$KEYBOARD_CHANGES" | grep -cv /keymaps/) - if [[ $KEYMAP_ONLY -gt 0 ]]; then - echo "Making all keymaps for $KB" - make ${KB}:all - : $((exit_code = $exit_code + $?)) - else - CHANGED_KEYMAPS=$(echo "$KEYBOARD_CHANGES" | grep -oP '(?<=keyboards/'${KB}'/keymaps/)([a-zA-Z0-9_-]+)(?=\/)') - for KM in $CHANGED_KEYMAPS ; do - echo "Making $KM for $KB" - make ${KB}:${KM} - : $((exit_code = $exit_code + $?)) - done - fi -done - -exit $exit_code diff --git a/util/travis_compiled_push.sh b/util/travis_compiled_push.sh deleted file mode 100755 index 6300442fdbb9..000000000000 --- a/util/travis_compiled_push.sh +++ /dev/null @@ -1,63 +0,0 @@ -#!/bin/bash - -source util/travis_utils.sh -source util/travis_push.sh - -set -o errexit -o nounset - -rev=$(git rev-parse --short HEAD) -echo "Using git hash ${rev}" - -if [[ "$TRAVIS_BRANCH" == "master" && "$TRAVIS_PULL_REQUEST" == "false" ]] ; then - -git checkout master - -git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} - -if [[ "$TRAVIS_COMMIT_MESSAGE" != *"[skip build]"* ]] ; then - make generate-keyboards-file SILENT=true > .keyboards - cd .. - git clone git@github.com:qmk/qmk.fm.git - cd qmk.fm - mv ../qmk_firmware/id_rsa_qmk.fm id_rsa_qmk.fm - mv ../qmk_firmware/.keyboards . - ssh-add -D - eval `ssh-agent -s` - ssh-add id_rsa_qmk.fm - - # don't delete files in case not all keyboards are built - # rm -f compiled/*.hex - - # ignore errors here - # In theory, this is more flexible, and will allow for additional expansion of additional types of files and other names - mv ../qmk_firmware/*_default.*{hex,bin} ./compiled/ || true - - # get the list of keyboards - readarray -t keyboards < .keyboards - - # replace / with _ - keyboards=("${keyboards[@]//[\/]/_}") - - # remove all binaries that don't belong to a keyboard in .keyboards - for file in "./compiled"/* ; do - match=0 - for keyboard in "${keyboards[@]}" ; do - if [[ ${file##*/} = "${keyboard}_default.bin" ]] || [[ ${file##*/} = "${keyboard}_default.hex" ]]; then - match=1 - break - fi - done - if [[ $match = 0 ]]; then - echo "Removing deprecated binary: $file" - rm "$file" - fi - done - - bash _util/generate_keyboard_page.sh - git add -A - git commit -m "generated from qmk/qmk_firmware@${rev}" - git push git@github.com:qmk/qmk.fm.git - -fi - -fi diff --git a/util/travis_push.sh b/util/travis_push.sh deleted file mode 100755 index 7f7d4c2c647d..000000000000 --- a/util/travis_push.sh +++ /dev/null @@ -1,14 +0,0 @@ -# Use this by sourcing it in your script. - -if [[ "$TRAVIS_BRANCH" == "master" && "$TRAVIS_PULL_REQUEST" == "false" ]] ; then - git config --global user.name "QMK Bot" - git config --global user.email "hello@qmk.fm" - - openssl aes-256-cbc -K $encrypted_b0ee987fd0fc_key -iv $encrypted_b0ee987fd0fc_iv -in secrets.tar.enc -out secrets.tar -d - tar xvf secrets.tar - - chmod 600 id_rsa_qmk_firmware - chmod 600 id_rsa_qmk.fm - eval `ssh-agent -s` - ssh-add id_rsa_qmk_firmware -fi diff --git a/util/travis_test.sh b/util/travis_test.sh deleted file mode 100644 index be0cfce001ef..000000000000 --- a/util/travis_test.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash - -source util/travis_utils.sh - -if [[ "$TRAVIS_COMMIT_MESSAGE" == *"[skip test]"* ]]; then - echo "Skipping due to commit message" - exit 0 -fi - -exit_code=0 - -if [ "$LOCAL_BRANCH" == "master" ] || [ "$NUM_CORE_CHANGES" != "0" ]; then - echo "Running tests." - make test:all - : $((exit_code = $exit_code + $?)) - -fi - -exit $exit_code diff --git a/util/travis_utils.sh b/util/travis_utils.sh deleted file mode 100755 index e949946e222b..000000000000 --- a/util/travis_utils.sh +++ /dev/null @@ -1,25 +0,0 @@ -# Use this by sourcing it in your script. - -# Provide sane defaults for travis environment -TRAVIS_BRANCH="${TRAVIS_BRANCH:master}" -TRAVIS_PULL_REQUEST="${TRAVIS_PULL_REQUEST:false}" -TRAVIS_COMMIT_MESSAGE="${TRAVIS_COMMIT_MESSAGE:-none}" -TRAVIS_COMMIT_RANGE="${TRAVIS_COMMIT_RANGE:-HEAD~1..HEAD}" - -# test force push -#TRAVIS_COMMIT_RANGE="c287f1bfc5c8...81f62atc4c1d" - -# Extra variables -LOCAL_BRANCH=$(git rev-parse --abbrev-ref HEAD) -QMK_CHANGES=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE}) -NUM_CORE_CHANGES=$(echo "$QMK_CHANGES" | grep -Ec -e '^Makefile' -e '^[^/]*.mk' -e '^drivers/' -e '^lib/atsam' -e '^lib/lib8tion/' -e '^platforms' -e '^quantum' -e '^tests' -e '^tmk_core') - -# if docker is installed - patch calls to within the qmk docker image -if command -v docker >/dev/null; then - function make() { - docker run --rm -e MAKEFLAGS="$MAKEFLAGS" -w /qmk_firmware/ -v "$PWD":/qmk_firmware --user $(id -u):$(id -g) qmkfm/base_container make "$@" - } - function qmk() { - docker run --rm -w /qmk_firmware/ -v "$PWD":/qmk_firmware --user $(id -u):$(id -g) qmkfm/base_container bin/qmk "$@" - } -fi diff --git a/util/udev/50-qmk.rules b/util/udev/50-qmk.rules index 679fe4ced38e..57806f9df0ac 100644 --- a/util/udev/50-qmk.rules +++ b/util/udev/50-qmk.rules @@ -33,6 +33,9 @@ SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05dc", TAG+="uacc SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="6124", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1" # Caterina (Pro Micro) +## pid.codes shared PID +### Keyboardio Atreus 2 Bootloader +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="2302", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1" ## Spark Fun Electronics ### Pro Micro 3V3/8MHz SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b4f", ATTRS{idProduct}=="9203", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1" @@ -63,3 +66,9 @@ SUBSYSTEMS=="usb", ATTRS{idVendor}=="2a03", ATTRS{idProduct}=="0037", TAG+="uacc # hid_listen KERNEL=="hidraw*", MODE="0660", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl" + +# hid bootloaders +## QMK HID +SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2067", TAG+="uaccess" +## PJRC's HalfKay +SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="0478", TAG+="uaccess" diff --git a/util/uf2conv.py b/util/uf2conv.py index 044a7f231890..8677a828c9fd 100755 --- a/util/uf2conv.py +++ b/util/uf2conv.py @@ -78,7 +78,7 @@ def convert_from_uf2(buf): if datalen > 476: assert False, "Invalid UF2 data size at " + ptr newaddr = hd[3] - if curraddr == None: + if curraddr is None: appstartaddr = newaddr curraddr = newaddr padding = newaddr - curraddr @@ -171,7 +171,7 @@ def convert_from_hex_to_uf2(buf): break elif tp == 0: addr = upper | (rec[1] << 8) | rec[2] - if appstartaddr == None: + if appstartaddr is None: appstartaddr = addr i = 4 while i < len(rec) - 1: @@ -215,7 +215,7 @@ def get_drives(): def has_info(d): try: return os.path.isfile(d + INFO_FILE) - except: + except Exception: return False return list(filter(has_info, drives)) @@ -300,7 +300,7 @@ def error(msg): (ext, len(outbuf), appstartaddr)) if args.convert or ext != "uf2": drives = [] - if args.output == None: + if args.output is None: args.output = "flash." + ext else: drives = get_drives() diff --git a/util/update_chibios_mirror.sh b/util/update_chibios_mirror.sh new file mode 100755 index 000000000000..0bf648ebfd27 --- /dev/null +++ b/util/update_chibios_mirror.sh @@ -0,0 +1,92 @@ +#!/bin/bash + +################################ +# Configuration + +# The ChibiOS branches to mirror +chibios_branches="trunk stable_20.3.x stable_21.6.x" + +# The ChibiOS tags to mirror +chibios_tags="ver20.3.1 ver20.3.2 ver20.3.3 ver20.3.4 ver21.6.0" + +# The ChibiOS-Contrib branches to mirror +contrib_branches="chibios-20.3.x chibios-21.6.x" + +################################ +# Actions + +set -eEuo pipefail +umask 022 + +this_script="$(realpath "${BASH_SOURCE[0]}")" +script_dir="$(realpath "$(dirname "$this_script")")" +qmk_firmware_dir="$(realpath "$script_dir/../")" +chibios_dir="$qmk_firmware_dir/lib/chibios" +contrib_dir="$qmk_firmware_dir/lib/chibios-contrib" + +chibios_git_location=$(realpath "$chibios_dir/$(cat "$chibios_dir/.git" | awk '/gitdir:/ {print $2}')") +chibios_git_config=$(realpath "$chibios_git_location/config") +contrib_git_location=$(realpath "$contrib_dir/$(cat "$contrib_dir/.git" | awk '/gitdir:/ {print $2}')") +contrib_git_config=$(realpath "$contrib_git_location/config") + +cd "$chibios_dir" + +if [[ -z "$(cat "$chibios_git_config" | grep '\[svn-remote "svn"\]')" ]] ; then + git svn init --stdlayout --prefix='svn/' http://svn.osdn.net/svnroot/chibios/ +fi + +if [[ -z "$(cat "$chibios_git_config" | grep '\[remote "qmk"\]')" ]] ; then + git remote add qmk git@github.com:qmk/ChibiOS.git + git remote set-url qmk git@github.com:qmk/ChibiOS.git --push +else + git remote set-url qmk git@github.com:qmk/ChibiOS.git + git remote set-url qmk git@github.com:qmk/ChibiOS.git --push +fi + +echo "Updating remotes..." +git fetch --all --tags --prune + +echo "Fetching latest from subversion..." +git svn fetch + +echo "Updating ChibiOS branches..." +for branch in $chibios_branches ; do + echo "Creating branch 'svn-mirror/$branch' from 'svn/$branch'..." + git branch -f svn-mirror/$branch svn/$branch \ + && git push qmk svn-mirror/$branch +done + +echo "Updating ChibiOS tags..." +for tagname in $chibios_tags ; do + echo "Creating tag 'svn-mirror/$tagname' from 'svn/tags/$tagname'..." + GIT_COMMITTER_DATE="$(git log -n1 --pretty=format:'%ad' svn/tags/$tagname)" git tag -f -a -m "Tagging $tagname" svn-mirror/$tagname svn/tags/$tagname + git push qmk svn-mirror/$tagname +done + +cd "$contrib_dir" + +if [[ -z "$(cat "$contrib_git_config" | grep '\[remote "qmk"\]')" ]] ; then + git remote add qmk git@github.com:qmk/ChibiOS-Contrib.git + git remote set-url qmk git@github.com:qmk/ChibiOS-Contrib.git --push +else + git remote set-url qmk git@github.com:qmk/ChibiOS-Contrib.git + git remote set-url qmk git@github.com:qmk/ChibiOS-Contrib.git --push +fi + +if [[ -z "$(cat "$contrib_git_config" | grep '\[remote "upstream"\]')" ]] ; then + git remote add upstream git@github.com:ChibiOS/ChibiOS-Contrib.git + git remote set-url upstream git@github.com:ChibiOS/ChibiOS-Contrib.git --push +else + git remote set-url upstream git@github.com:ChibiOS/ChibiOS-Contrib.git + git remote set-url upstream git@github.com:ChibiOS/ChibiOS-Contrib.git --push +fi + +echo "Updating remotes..." +git fetch --all --tags --prune + +echo "Updating ChibiOS-Contrib branches..." +for branch in $contrib_branches ; do + echo "Creating branch 'mirror/$branch' from 'upstream/$branch'..." + git branch -f mirror/$branch upstream/$branch \ + && git push qmk mirror/$branch +done diff --git a/util/vagrant/Dockerfile b/util/vagrant/Dockerfile index 1936ee023aaf..951d4fc40d7b 100644 --- a/util/vagrant/Dockerfile +++ b/util/vagrant/Dockerfile @@ -1,4 +1,4 @@ -FROM qmkfm/base_container +FROM qmkfm/qmk_cli # Basic upgrades; install sudo and SSH. RUN apt-get update && apt-get install --no-install-recommends -y \ diff --git a/util/vagrant/readme.md b/util/vagrant/readme.md index e4b870a64245..a8396007ee09 100644 --- a/util/vagrant/readme.md +++ b/util/vagrant/readme.md @@ -1,7 +1,7 @@ # QMK Vagrant Utilities ## Dockerfile -Vagrant-friendly `qmkfm/base_container`. +Vagrant-friendly `qmkfm/qmk_cli`. In order for the Docker provider and `vagrant ssh` to function the container has a few extra requirements.